[
  {
    "path": ".gitignore",
    "content": "# Editor droppings\n*~\n*.sw?\n\n# MacOS droppings\n.DS_Store\n\n*.pro.user.*\n*.pro.user\n\n# Build products\nbuild*/\n*.app\n*.exe\n"
  },
  {
    "path": "Archived/Autograder_QtCreatorProject/Autograder_QtCreatorProject.pro",
    "content": "#####################################################################\n## Stanford CS 106 B/X Qt Creator project file                     ##\n#####################################################################\n#\n# This file specifies the information about your project to Qt Creator.\n# You should not need to modify this file to complete your assignment.\n#\n# @author Marty Stepp (past authors/support by Keith Schwarz, Reid Watson, etc.)\n# @version 2019/04/23\n# - revert copydata code for copying resource files\nDEFINES += SPL_PROJECT_VERSION=20190423   # kludgy YYYYMMDD constant used by lib to know its version\n\n# global Qt/project settings\nTEMPLATE = app\nPROJECT_FILTER =\nQT       += core gui multimedia network\ngreaterThan(QT_MAJOR_VERSION, 4): QT += widgets\n\n###############################################################################\n# BEGIN SECTION FOR SPECIFYING SOURCE/LIBRARY/RESOURCE FILES OF PROJECT       #\n###############################################################################\n\n# remove spaces from target executable for better Windows compatibility\nTARGET = $$replace(TARGET, \" \", _)\n\n# checks to make sure we haven't accidentally opened the project\n# from within a ZIP archive (common mistake on Windows)\n\nwin32 {\n    contains(PWD, .*\\.zip.*) | contains(PWD, .*\\.ZIP.*) {\n        message(\"\")\n        message(*******************************************************************)\n        message(*** ERROR: You are trying to open this project from within a .ZIP archive:)\n        message(*** $$PWD)\n        message(*** You need to extract the files out of the ZIP file first.)\n        message(*** Open the ZIP in your file explorer and press the Extract button.)\n        message(*******************************************************************)\n        message(\"\")\n        error(Exiting.)\n    }\n}\n\n# check for intl chars in path (common issue for intl students)\nPWD_WITHOUT_BAD_CHARS = $$PWD\nPWD_WITHOUT_BAD_CHARS ~= s|[^a-zA-Z0-9_ ().\\/:;+-]+|???\nBAD_CHARS = $$PWD\nBAD_CHARS ~= s|[a-zA-Z0-9_ ().\\/:;-]+|\n!isEmpty(BAD_CHARS) {\n    message(\"\")\n    message(*******************************************************************)\n    message(*** ERROR: Your project directory contains invalid characters:)\n    message(*** $$PWD)\n    message(***)\n    message(*** The characters that are invalid are: $$BAD_CHARS)\n    message(***)\n    message(*** You need to store your project in a directory without any punctuation)\n    message(*** marks such as commas, or international symbols such as)\n    message(*** Chinese or Korean symbols.)\n    message(*** If you keep seeing this error try creating a simple directory)\n    message(*** name such as \"C:\\Programs\\Homework1.\")\n    message(*******************************************************************)\n    message(\"\")\n    error(Exiting.)\n}\n\n# checks to ensure that the Stanford C++ library is present in this project\n!exists($$PWD/lib/StanfordCPPLib/private/version.h) {\n    message(\"\")\n    message(*******************************************************************)\n    message(*** ERROR: Stanford C++ library not found!)\n    message(*** This project cannot run without the folder lib/StanfordCPPLib/.)\n    message(*** Place that folder into your project and try again.)\n    message(*******************************************************************)\n    message(\"\")\n    error(Exiting.)\n}\n\nwin64 {\n    !exists($$PWD/lib/addr2line64.exe) {\n        message(\"\")\n        message(*******************************************************************)\n        message(*** ERROR: Stanford C++ library support file 'addr2line64.exe' not found!)\n        message(*** Our library needs this file present to produce stack traces.)\n        message(*** Place that file into your lib/ folder and try again.)\n        message(*******************************************************************)\n        message(\"\")\n        warning(Exiting.)\n    }\n}\n\nwin32 {\n    !exists($$PWD/lib/addr2line.exe) {\n        message(\"\")\n        message(*******************************************************************)\n        message(*** ERROR: Stanford C++ library support file 'addr2line.exe' not found!)\n        message(*** Our library needs this file present to produce stack traces.)\n        message(*** Place that file into your lib/ folder and try again.)\n        message(*******************************************************************)\n        message(\"\")\n        warning(Exiting.)\n    }\n}\n\n!exists($$PWD/lib/iconstrip.png) {\n    message(\"\")\n    message(*******************************************************************)\n    message(*** ERROR: Stanford library cannot find image strip file:)\n    message(*** lib/iconstrip.png)\n    message(*** This project cannot run without this file present.)\n    message(*** Place the file into your lib/ folder and try again.)\n    message(*******************************************************************)\n    message(\"\")\n    warning(Exiting.)\n}\n\n# precompiled header speeds up build times\n!win32 {\nPRECOMPILED_HEADER = $$files($$PWD/lib/StanfordCPPLib/private/precompiled.h)\n}\n\n# honeypot to trick Qt Creator so that adding files works from within IDE;\n# Qt looks for first 'SOURCES *=' line and adds newly added .cpp/h files there.\n# But then that causes the files to be added twice because of *.cpp/h rules below.\n# To get around this, we follow the first 'SOURCES *=' line by a line that clears\n# out SOURCES, so that the Qt Creator .pro modification is ineffectual.\nDISTFILES *= \"\"\nDISTFILES = \"\"\nHEADERS *= \"\"\nHEADERS = \"\"\nSOURCES *= \"\"\nSOURCES = \"\"\n\n# include various source .cpp files and header .h files in the build process\n# (student's source code can be put into project root, or src/ subfolder)\nSOURCES *= $$files($$PWD/lib/StanfordCPPLib/*.cpp, true)\nSOURCES *= $$files($$PWD/src/*.cpp, true)\nexists($$PWD/$$PROJECT_FILTER*.cpp) {\n    SOURCES *= $$files($$PWD/$$PROJECT_FILTER*.cpp)\n}\n\nexists($$PWD/lib/StanfordCPPLib/*.h) {\n    HEADERS *= $$files($$PWD/lib/StanfordCPPLib/*.h)\n}\nHEADERS *= $$files($$PWD/lib/StanfordCPPLib/*.h, true)\nHEADERS *= $$files($$PWD/src/*.h, true)\nexists($$PWD/$$PROJECT_FILTER*.h) {\n    HEADERS *= $$files($$PWD/$$PROJECT_FILTER*.h)\n}\n\n# directories examined by Qt Creator when student writes an #include statement\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/collections/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/graphics/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/io/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/system/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/util/\nexists($$PWD/lib/StanfordCPPLib/autograder/*) {\n    INCLUDEPATH *= $$PWD/lib/StanfordCPPLib/autograder/\n}\nINCLUDEPATH *= $$PWD/src/\nINCLUDEPATH *= $$PWD/\nexists($$PWD/src/autograder/$$PROJECT_FILTER/*.h) {\n    INCLUDEPATH *= $$PWD/src/autograder/$$PROJECT_FILTER/\n}\nexists($$PWD/src/test/*.h) {\n    INCLUDEPATH *= $$PWD/src/test/\n}\n\n# directories listed as \"Other files\" in left Project pane of Qt Creator\nexists($$PWD/res/*) {\n    OTHER_FILES *= $$files($$PWD/res/*, true)\n}\nexists($$PWD/*.txt) {\n    OTHER_FILES *= $$files($$PWD/*.txt)\n}\nexists($$PWD/input/*) {\n    OTHER_FILES *= $$files($$PWD/input/*, true)\n}\nexists($$PWD/output/*) {\n    OTHER_FILES *= $$files($$PWD/output/*, true)\n}\n\n###############################################################################\n# END SECTION FOR SPECIFYING SOURCE/LIBRARY/RESOURCE FILES OF PROJECT         #\n###############################################################################\n\n\n###############################################################################\n# BEGIN SECTION FOR SPECIFYING COMPILER/LINKER FLAGS AND LIBRARIES            #\n###############################################################################\n\n# set up flags for the C++ compiler\n# (In general, many warnings/errors are enabled to tighten compile-time checking.\n# A few overly pedantic/confusing errors are turned off for simplicity.)\nCONFIG += no_include_pwd         # make sure we do not accidentally #include files placed in 'resources'\nCONFIG += sdk_no_version_check   # removes spurious warnings on Mac OS X\n# CONFIG += warn_off\n\n# gives us a bit more precision about which errors are printed\nQMAKE_CFLAGS_WARN_ON -= -Wall\nQMAKE_CFLAGS_WARN_ON -= -Wextra\nQMAKE_CFLAGS_WARN_ON -= -W\nQMAKE_CXXFLAGS_WARN_ON -= -Wall\nQMAKE_CXXFLAGS_WARN_ON -= -Wextra\nQMAKE_CXXFLAGS_WARN_ON -= -W\n\nwin32 {\n    # some Windows systems have old MinGW compilers, so be safe and use C++11\n    CONFIG += c++11\n} else {\n    # Mac/Linux should support the latest C++ features\n    CONFIG += c++14\n}\n\n# uncomment this if you want to dump the preprocessor output into the .o files\n# (useful when debugging advanced preprocessor hacking)\n# QMAKE_CXXFLAGS += -E\n\nQMAKE_CXXFLAGS += -Wall\n#QMAKE_CXXFLAGS += -Wextra\nQMAKE_CXXFLAGS += -Wcast-align\n#QMAKE_CXXFLAGS += -Wfloat-equal\nQMAKE_CXXFLAGS += -Wformat=2\nQMAKE_CXXFLAGS += -Wlogical-op\nQMAKE_CXXFLAGS += -Wno-missing-field-initializers\nQMAKE_CXXFLAGS += -Wno-old-style-cast\nQMAKE_CXXFLAGS += -Wno-sign-compare\nQMAKE_CXXFLAGS += -Wno-sign-conversion\nQMAKE_CXXFLAGS += -Wno-write-strings\nQMAKE_CXXFLAGS += -Wreturn-type\nQMAKE_CXXFLAGS += -Werror=return-type\nQMAKE_CXXFLAGS += -Werror=uninitialized\nQMAKE_CXXFLAGS += -Wunreachable-code\nQMAKE_CXXFLAGS += -Wunused-parameter\nexists($$PWD/lib/autograder/*.h) | exists($$PWD/lib/StanfordCPPLib/autograder/$$PROJECT_FILTER/*.h) | exists($$PWD/lib/autograder/$$PROJECT_FILTER/*.cpp) {\n    # omit some warnings/errors in autograder projects\n    # (largely because the Google Test framework violates them a ton of times)\n    QMAKE_CXXFLAGS += -Wno-deprecated\n    QMAKE_CXXFLAGS += -Wno-reorder\n    QMAKE_CXXFLAGS += -Wno-unused-function\n    QMAKE_CXXFLAGS += -Wno-useless-cast\n}\n\n# additional flags for Windows\nwin32 {\n    LIBS += -lDbghelp\n    LIBS += -lbfd\n    LIBS += -limagehlp\n    cache()\n} else {\n    # flags that don't work on Windows MinGW compiler\n    QMAKE_CXXFLAGS += -Wno-unused-const-variable\n    LIBS += -ldl\n}\n\n# additional flags for Mac OS X\nmacx {\n    # calling cache() reduces warnings on Mac OS X systems\n    cache()\n    QMAKE_MAC_SDK = macosx\n}\n\n# additional flags for Linux\nunix:!macx {\n    cache()\n}\n\n# libraries for all OSes\nLIBS += -lpthread\n\n# additional flags for clang compiler (default on Mac)\nCOMPILERNAME = $$QMAKE_CXX\nCOMPILERNAME ~= s|.*/|\nequals(COMPILERNAME, clang++) {\n    QMAKE_CXXFLAGS += -Wempty-init-stmt\n    QMAKE_CXXFLAGS += -Wignored-qualifiers\n    QMAKE_CXXFLAGS += -Winitializer-overrides\n    QMAKE_CXXFLAGS += -Wmissing-field-initializers\n    QMAKE_CXXFLAGS += -Wmissing-method-return-type\n    QMAKE_CXXFLAGS += -Wnull-pointer-arithmetic\n    QMAKE_CXXFLAGS += -Wsemicolon-before-method-body\n    QMAKE_CXXFLAGS += -Wno-format-nonliteral\n    QMAKE_CXXFLAGS += -Wno-inconsistent-missing-override\n    QMAKE_CXXFLAGS += -Wno-overloaded-virtual\n    QMAKE_CXXFLAGS += -Wno-unknown-warning-option\n}\n\n# set up configuration flags used internally by the Stanford C++ libraries\n# These flags are all optional but can simplify project configuration.\n# (setting x/y to 999999 centers the window)\n# (see platform.cpp/h for descriptions of some of these flags)\n\n# wrapper name for 'main' function (needed so student can write 'int main'\n# but our library can grab the actual main function to initialize itself)\nDEFINES += SPL_REPLACE_MAIN_FUNCTION=1\nDEFINES += main=qMain\n\n# x/y location and w/h of the graphical console window; set to -1 to center\nDEFINES += SPL_CONSOLE_X=-1\nDEFINES += SPL_CONSOLE_Y=-1\nDEFINES += SPL_CONSOLE_WIDTH=900\nDEFINES += SPL_CONSOLE_HEIGHT=550\n\n# font size of the font in the graphical console window; can also be set via window menu\n#DEFINES += SPL_CONSOLE_FONTSIZE=18\n\n# echo graphical console onto the plain text console as well?\nDEFINES += SPL_CONSOLE_ECHO\n\n# quit the C++ program when the graphical console is closed?\nDEFINES += SPL_CONSOLE_EXIT_ON_CLOSE\n\n# crash if the .pro is older than the minimum specified in version.h? (SPL_PROJECT_VERSION)\nDEFINES += SPL_VERIFY_PROJECT_VERSION\n\n# allow clients to access the internal data inside the heap of PriorityQueue?\n# (used for some practice exam exercises/demos)\nDEFINES += SPL_PQUEUE_ALLOW_HEAP_ACCESS\n\n# should toString / << of a PriorityQueue display the elements in sorted order,\n# or in heap internal order? the former is more expected by client; the latter\n# is faster and avoids a deep-copy\nDEFINES += SPL_PQUEUE_PRINT_IN_HEAP_ORDER\n\n# flag to throw exceptions when a collection iterator is used after it has\n# been invalidated (e.g. if you remove from a Map while iterating over it)\nDEFINES += SPL_THROW_ON_INVALID_ITERATOR\n\n# flag to add members like 'cost', 'visited', etc. to BasicGraph Vertex/Edge\n# (we are going to disable these to force more interesting implementations)\n# DEFINES += SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n\n# should we throw an error() when operator >> fails on a collection?\n# for years this was true, but the C++ standard says you should just silently\n# set the fail bit on the stream and exit, so that has been made the default.\n# DEFINES += SPL_ERROR_ON_STREAM_EXTRACT\n\n# scale up the console window on high-DPI screens?\n# DEFINES += SPL_SCALE_HIGH_DPI_SCREEN\n\n# is the .cpp portion of the library merged into a single .cpp file\n# to speed up compilation?\nDEFINES += SPL_MERGED_LIBRARY_SINGLE_FILE\n\n# should we attempt to precompile the Qt moc_*.cpp files for speed?\nDEFINES += SPL_PRECOMPILE_QT_MOC_FILES\n\n# build-specific options (debug vs release)\n\n# options for the 'debug' target (default):\n# use no optimization, generate debugger symbols,\n# and catch/print to console any uncaught exceptions thrown by the program\nCONFIG(debug, debug|release) {\n    QMAKE_CXXFLAGS += -g3\n    QMAKE_CXXFLAGS += -fno-inline\n    QMAKE_CXXFLAGS += -fno-omit-frame-pointer\n\n    unix:!macx {\n        equals(COMPILERNAME, g++) {\n            # on Linux g++, these flags help us gather line numbers for stack traces\n            QMAKE_CXXFLAGS += -rdynamic\n            QMAKE_CXXFLAGS += -export-dynamic\n            QMAKE_CXXFLAGS += -Wl,--export-dynamic\n            QMAKE_LFLAGS += -export-dynamic\n            QMAKE_LFLAGS += -rdynamic\n        }\n    }\n    unix:macx {\n        equals(COMPILERNAME, clang++) {\n            QMAKE_CXXFLAGS += -Wno-unused-command-line-argument\n            QMAKE_CXXFLAGS += -Wl,-export_dynamic\n            QMAKE_CXXFLAGS += -Wl,-export-dynamic\n            QMAKE_CXXFLAGS += -Wl,--export-dynamic\n            QMAKE_LFLAGS += -rdynamic\n            QMAKE_LFLAGS += -Wl,-no_pie\n        }\n    }\n\n    # print details about uncaught exceptions with red error text / stack trace\n    DEFINES += SPL_CONSOLE_PRINT_EXCEPTIONS\n}\n\n# options for the 'release' target:\n# enable some compiler optimizations, and\n# make it statically linked so it is a stand-alone executable\nCONFIG(release, debug|release) {\n    QMAKE_CXXFLAGS += -O2\n    # commenting out -static because it doesn't link to Qt libraries properly\n    #QMAKE_LFLAGS += -static\n\n    macx {\n        QMAKE_POST_LINK += 'macdeployqt $${OUT_PWD}/$${TARGET}.app'\n    }\n    unix:!macx {\n        QMAKE_LFLAGS += -static-libgcc\n        QMAKE_LFLAGS += -static-libstdc++\n    }\n    win32 {\n        TARGET_PATH = $${OUT_PWD}/release/$${TARGET}.exe\n        TARGET_PATH ~= s,/,\\\\,g\n\n        OUT_PATH = $${OUT_PWD}/\n        OUT_PATH ~= s,/,\\\\,g\n\n        QMAKE_LFLAGS += -static-libgcc\n        QMAKE_LFLAGS += -static-libstdc++\n        QMAKE_POST_LINK += copy '\"'$${TARGET_PATH}'\"' '\"'$${OUT_PATH}'\"'\n    }\n}\n\n###############################################################################\n# END SECTION FOR SPECIFYING COMPILER/LINKER FLAGS AND LIBRARIES              #\n###############################################################################\n\n\n###############################################################################\n# BEGIN SECTION FOR CS 106B/X AUTOGRADER PROGRAMS                             #\n###############################################################################\n\n# settings specific to CS 106 B/X auto-grading programs; do not modify\nexists($$PWD/lib/autograder/*.h) | exists($$PWD/lib/StanfordCPPLib/autograder/*.h) | exists($$PWD/src/autograder/$$PROJECT_FILTER/*.cpp) {\n    # include the various autograder source code and libraries in the build process\n    exists($$PWD/lib/autograder/*.cpp) {\n        SOURCES *= $$files($$PWD/lib/autograder/*.cpp, true)\n    }\n    exists($$PWD/lib/autograder/*.h) {\n        HEADERS *= $$files($$PWD/lib/autograder/*.h, true)\n    }\n    exists($$PWD/lib/autograder/*) {\n        INCLUDEPATH *= $$PWD/lib/autograder/\n    }\n    exists($$PWD/lib/StanfordCPPLib/autograder/*) {\n        INCLUDEPATH *= $$PWD/lib/StanfordCPPLib/autograder/\n    }\n    exists($$PWD/src/autograder/*.h) {\n        INCLUDEPATH *= $$PWD/src/autograder/\n    }\n    exists($$PWD/src/autograder/$$PROJECT_FILTER/*.h) {\n        INCLUDEPATH *= $$PWD/src/autograder/$$PROJECT_FILTER/\n    }\n\n    DEFINES += SPL_AUTOGRADER_MODE\n\n    # define the style of autograder you want to use (GUI vs console)\n    DEFINES += SPL_GRAPHICAL_AUTOGRADER\n    # DEFINES += SPL_CONSOLE_AUTOGRADER\n\n    # a check to ensure that required autograder resources are present in this project\n    !exists($$PWD/lib/iconstrip-autograder.png) {\n        message(\"\")\n        message(*******************************************************************)\n        message(*** ERROR: Stanford library cannot find autograder image strip file:)\n        message(*** lib/iconstrip-autograder.png)\n        message(*** This project cannot run without this file present.)\n        message(*** Place the file into your lib/ folder and try again.)\n        message(*******************************************************************)\n        message(\"\")\n        error(Exiting.)\n    }\n}\n###############################################################################\n# END SECTION FOR CS 106B/X AUTOGRADER PROGRAMS                               #\n###############################################################################\n\n\n###############################################################################\n# BEGIN SECTION FOR DEFINING HELPER FUNCTIONS FOR RESOURCE COPYING            #\n###############################################################################\n\nCOPY_RESOURCE_FILES_INPUT = \"\"\n\nwin32 {\n    # copy addr2line exe program(s) to capture stack traces on Windows\n    exists($$PWD/lib/*.exe) {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/lib/*.exe)\n    }\n    # optional .dll files for network features on Windows\n    exists($$PWD/lib/*.dll) {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/lib/*.dll)\n    }\n}\n# copy icons and image strips for library GUI/console windows\nexists($$PWD/lib/*.png) {\n    COPY_RESOURCE_FILES_INPUT += $$files($$PWD/lib/*.png)\n}\nexists($$PWD/*.txt) {\n    COPY_RESOURCE_FILES_INPUT += $$files($$PWD/*.txt)\n}\nexists($$PWD/res/*) {\n    win32 {\n        exists($$PWD/res/*/*) {\n            # this will preserve the nested res/ directory structure on Windows,\n            # at the unfortunate cost of copying res/ to build dir on every run;\n            # recommended: avoid res subfolders to avoid this penalty on Windows\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/res)\n        } else {\n            # res/ with no subdirectories will properly be copied only on modification\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/res/*.*)\n        }\n    } else {\n        # Mac/Linux have proper recursive file-copying semantics in all cases\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/res/*, true)\n    }\n}\n# input/ and output/ have same nested subfolder issue as res/\nexists($$PWD/input/*) {\n    win32 {\n        exists($$PWD/input/*/*) {\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/input)\n        } else {\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/input/*.*)\n        }\n    } else {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/input, true)\n    }\n}\nexists($$PWD/output/*) {\n    win32 {\n        exists($$PWD/output/*/*) {\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/output)\n        } else {\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/output/*.*)\n        }\n    } else {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/output, true)\n    }\n}\nexists($$PWD/lib/autograder/*.h) | exists($$PWD/lib/StanfordCPPLib/autograder/*.h) | exists($$PWD/src/autograder/$$PROJECT_FILTER/*.cpp) {\n    # in autograder projects, copy over student's .cpp and .h files for possible style checking\n    exists($$PWD/*.cpp) {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/*.cpp)\n    }\n    exists($$PWD/*.h) {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/*.h)\n    }\n}\n\n# platform-specific commands to copy files and folders to build directory\ncopy_resource_files.name = Copy resource files to the build directory\nwin32 {\n    # https://support.microsoft.com/en-us/help/289483/switches-that-you-can-use-with-xcopy-and-xcopy32-commands\n    # /s - copy subfolders\n    # /q - quiet (no verbose output)\n    # /y - overwrite without prompting\n    # /i - if destination does not exist and copying more than one file, assumes destination is a folder\n    copy_resource_files.commands = xcopy /s /q /y ${QMAKE_FILE_IN}\n} else {\n    copy_resource_files.commands = cp -rf ${QMAKE_FILE_IN} .\n}\n# copy_resource_files.commands = ${COPY_FILE} ${QMAKE_FILE_IN} ${QMAKE_FILE_OUT}\ncopy_resource_files.input = COPY_RESOURCE_FILES_INPUT\ncopy_resource_files.output = $${OUT_PWD}/${QMAKE_FILE_BASE}${QMAKE_FILE_EXT}\ncopy_resource_files.CONFIG = no_link no_clean target_predeps\nQMAKE_EXTRA_COMPILERS += copy_resource_files\n\n###############################################################################\n# END SECTION FOR DEFINING HELPER FUNCTIONS FOR RESOURCE COPYING              #\n###############################################################################\n\n# END OF FILE (this should be line #560; if not, your .pro has been changed!)\n"
  },
  {
    "path": "Archived/Autograder_QtCreatorProject/lateDays.txt",
    "content": "student_submission_time: 13/Oct/2014 10:31:15\nassignment_due_time: 13/Oct/2014 23:59:00\ncalendar_days_late: 0\n"
  },
  {
    "path": "Archived/Autograder_QtCreatorProject/lib/readme.txt",
    "content": "This directory contains any libraries that should be\r\nlinked to your project when it is built.\r\nThe most common library we will link to is the\r\nStanford C++ library (cpplib).\r\n"
  },
  {
    "path": "Archived/Autograder_QtCreatorProject/res/inputpanel-mainfunc.xml",
    "content": "<inputpanel assignment=\"CS 106B Test\">\n\t<category name=\"General\">\n\t\t<button text=\"Yes\" />\n\t\t<button text=\"No\" />\n\t\t<button text=\"Enter\" input=\"\\n\" />\n\t</category>\n\t\n\t<category name=\"Other\">\n\t\t<button text=\"OK\" />\n\t\t<button text=\"Cancel\" />\n\t</category>\n</inputpanel>\n"
  },
  {
    "path": "Archived/Autograder_QtCreatorProject/res/myinput.txt",
    "content": "EMPTY DEFAULT FILE CONTENTS (replace with the student's!)\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n"
  },
  {
    "path": "Archived/Autograder_QtCreatorProject/res/stylecheck-mainfunc-cpp.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<stylecheck type=\"text\" filename=\"life.cpp\" omitonpass=\"true\">\n\t<pattern regex=\"INSTRUCTOR'S SOLUTION\" count=\"0\" showcounts=\"false\" description=\"Are you running the style checker on the instructor's solution?\" />\n\n\t<!-- decomposition -->\n\t<category name=\"Procedural decomp and parameters\">\n\t\t<pattern regex=\"\\n(?:int|double|bool|Grid|Vector)[^()]+;\" count=\"0\" description=\"global variables\" />\n\t\t<pattern regex=\"\\n(:IDENT:)[^()\\n]*(:IDENT:)(:SPACES:)\\([^\\)]*\\)[ \\t\\n]{0,255}\\{\" mincount=\"3\" description=\"functions (including main)\" />\n\t\t<pattern regex=\"\\n(:IDENT:)[^()\\n]*(:IDENT:)(:SPACES:)\\([^\\)]*\\)[ \\t\\n]{0,255};\" mincount=\"2\" description=\"function prototypes\" />\n\t\t<pattern regex=\"const\" mincount=\"2\" description=\"using 'const' on parameters (rough count)\" />\n\t\t<pattern regex=\"const(:SPACES:)(?:bool|char|double|int)\" count=\"0\" description=\"using 'const' on primitive parameters (not needed!)\" />\n\t</category>\n\t\n\t<category name=\"Collections and algorithms\">\n\t\t<pattern regex=\"#(:SPACES:)include(:SPACES:)&lt;(:SPACES:)(?:map|set|algorithm|vector|stack|queue|deque|hash_map|hash_set)(:SPACES:)&gt;\" count=\"0\" description=\"including STL ... why?\" />\n\t\t<pattern regex=\"\\([^\\)]*string(:SPACES:)(:IDENT:).*\\)\" count=\"0\" description=\"passing strings by value\" />\n\t\t<pattern regex=\"(?:[vV]ector|LinkedList|[sS]et|[mM]ap|HashSet|HashMap|Lexicon|Stack|Queue|Grid)(:SPACES:)&lt;(:SPACES:)(?:int|double|string)(:SPACES:)&gt;\" count=\"0\" description=\"using collections\" />\n\t\t<pattern regex=\"readEntireFile\" count=\"0\" description=\"using readEntireFile instead of ifstream\" />\n\t</category>\n\t\n\t<!-- redundancy -->\n\t<category name=\"Redundancy\">\n\t\t<pattern regex=\".*nimate,(:SPACES:).*ick,(:SPACES:).*uit\" maxcount=\"1\" description=\"redundancy check: 'animate/tick/quit' prompt message\" />\n\t\t<pattern regex=\"[pP]lease type a\" maxcount=\"2\" description=\"redundancy check: 'Please type a' prompt message\" />\n\t\t<pattern regex=\"[mM]ad [lL]ib input file[?]\" maxcount=\"1\" description=\"redundancy check: 'Mad Lib input file?' prompt message\" />\n\t\t<pattern regex=\"\\.(:SPACES:)open(:SPACES:)\\(\" maxcount=\"1\" description=\"redundancy check: calling open() on an ifstream\" />\n\t\t<pattern regex=\"\\[[^\\]]+\\](:SPACES:)=(:SPACES:)(?:true|false|0|1|'X'|'-'|&quot;X&quot;|&quot;-&quot;)(:SPACES:);\" maxcount=\"4\" description=\"redundancy check: assigning literal values into grid cells (did they not use a for-loop around the 8 neighbors?)\" />\n\t</category>\n\n\t<!-- goofy C++ stuff -->\n\t<category name=\"C++ idioms\">\n\t\t<pattern regex=\"(?:int|double|char|string|bool|(?:DawgLexicon|Grid|Graph|HashMap|HashSet|Lexicon|LinkedList|Map|Queue|Set|Stack|Vector|map|set|algorithm|vector|stack|queue|deque|hash_map|hash_set)(:SPACES:)&lt;(:SPACES:)(:IDENT:)(:SPACES:)&gt;)(:SPACES:)\\*(:SPACES:)(:IDENT:)\" count=\"0\" description=\"using pointers\" />\n\t\t<pattern regex=\"(?:printf|scanf|fopen|fclose|fread|fwrite|fprintf|fscanf|atoi|itoa)\" count=\"0\" description=\"calling C I/O functions like printf, scanf, fopen\" />\n\t\t<pattern regex=\"ifstream\" mincount=\"1\" description=\"using ifstream to read input file\" />\n\t\t<pattern regex=\"ostringstream\" mincount=\"1\" description=\"using ostringstream to buffer story output\" />\n\t</category>\n\n\t<!-- aesthetics and formatting -->\n\t<category name=\"Aesthetics and formatting\">\n\t\t<pattern regex=\".{101,}\\n\" count=\"0\" description=\"long lines\" />\n\t\t<pattern regex=\".*;.*;.*;\" count=\"0\" description=\"multiple statements on same line\" />\n\t\t<pattern regex=\"\\r?\\n(:SPACES:)\\r?\\n\" mincount=\"6\" description=\"blank lines; why don't they have any spacing in their program?\" />\n\t</category>\n\t\n\t<!-- commenting -->\n\t<category name=\"Commenting\">\n\t\t<pattern regex=\"(\\/\\/.*)|(\\/\\*([^*]|([*][^\\/])\\r?\\n?)*\\*\\/)\" mincount=\"8\" description=\"comments\" list=\"false\" />\n\t\t<pattern regex=\"(?:short stories that have blanks called placeholders)|(?:second person to fill in each of the placeholders)|(?:often with humorous results)|(?:nce the user has filled in all of the placeholders)|(?:input files are mostly just plain text)|(?:Placeholders are represented as ranges of characters that begin with)|(?:user's response to the prompt is inserted into the eventual output)\" count=\"0\" description=\"copying comments from spec (approximate)\" />\n\t\t<pattern regex=\"(?:TODO: [rR]emove this comment)|(?:TODO: [fF]inish the program)\" count=\"0\" description=\"TODO comments from starter code\" />\n\t</category>\n\n\t<!-- otherwise good style -->\n\t<category name=\"Otherwise good style\">\n\t\t<pattern regex=\"double \" maxcount=\"1\" description=\"type double should not be used on this assignment\" />\n\t\t<pattern regex=\"[!=]=(:SPACES:)(true|false)\" count=\"0\" description=\"bad boolean zen (== true/false)\" />\n\t\t<!--\n\t\t<pattern regex=\"else(:SPACES:)if\" mincount=\"2\" description=\"'else if' statement (are they always using if/if/if?  that's bad structure)\" />\n\t\t-->\n\t\t<pattern regex=\"else\" mincount=\"2\" description=\"'else' statement (are they always using if/if/if?  that's bad structure)\" />\n\t</category>\n</stylecheck>\n"
  },
  {
    "path": "Archived/Autograder_QtCreatorProject/src/mainfunc.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ autograder lib functionality.\n */\n\n#include <iostream>\n#include <string>\n#include <vector>\n#include \"autograder.h\"\n#include \"consoletext.h\"\n#include \"gtest-marty.h\"\n#include \"queue.h\"\n#include \"simpio.h\"\n#include \"stack.h\"\n#include \"stl.h\"\n#include \"stylecheck.h\"\n#include \"vector.h\"\n#include \"testcases.h\"\n#include \"private/version.h\"\n#include \"exceptions.h\"\nusing namespace std;\n\n//TEST_CATEGORY(PassFailTests, \"standard pass/fail tests\");\n\n//void bar() {\n//    // error(\"oooooops\");\n//    int* n = nullptr;\n//    n[28583275] = 17;   // segfault\n//}\n\n//void foo() {\n//    bar();\n//}\n\n//TIMED_TEST(PassFailTests, test_exception_after_easy_assert, TEST_TIMEOUT_DEFAULT) {\n//    // assertTrue(\"Brussel sprouts are yummy\", true);\n//    foo();\n//    // assertTrue(\"Pie is yummy\", true);\n//}\n\n\n//TIMED_TEST(PassFailTests, test_diffs_strict_FAIL, TEST_TIMEOUT_DEFAULT) {\n//    string expected = \"Hello!\\nhow are you?\\n\";\n//    string student  = \"hello!\\nhow ARE you?\\n\";\n//    assertDiffFlags(\"message goes here\", expected, student, diff::IGNORE_NONE);\n//}\n\n//TIMED_TEST(PassFailTests, test_ints_PASS, TEST_TIMEOUT_DEFAULT) {\n//    assertEquals(\"compare ints\", 42, 42);\n//}\n\n//TIMED_TEST(PassFailTests, test_ints_FAIL, TEST_TIMEOUT_DEFAULT) {\n//    assertEquals(\"compare ints\", 42, 69);\n//}\n\n//TIMED_TEST(PassFailTests, test_doubles_near_PASS, TEST_TIMEOUT_DEFAULT) {\n//    assertDoubleNear(\"hi there\", 3.14, 3.1415, 0.1);\n//}\n\n//TIMED_TEST(PassFailTests, test_doubles_near_FAIL, TEST_TIMEOUT_DEFAULT) {\n//    assertDoubleNear(\"hi there\", 3.14, 2.718, 0.1);\n//}\n\n//TIMED_TEST(PassFailTests, test_string_PASS, TEST_TIMEOUT_DEFAULT) {\n//    assertEquals(\"hi there\", string(\"a\"), string(\"a\"));\n//}\n\n//TIMED_TEST(PassFailTests, test_string_FAIL, TEST_TIMEOUT_DEFAULT) {\n//    assertEquals(\"hi there\", string(\"a\"), string(\"b\"));\n//}\n\n//TIMED_TEST(PassFailTests, test_cstring_PASS, TEST_TIMEOUT_DEFAULT) {\n//    assertEqualsCString(\"hi there\", \"a\", \"a\");\n//}\n\n//TIMED_TEST(PassFailTests, test_cstring_FAIL, TEST_TIMEOUT_DEFAULT) {\n//    assertEqualsCString(\"hi there\", \"xxx\", \"yy\");\n//}\n\n//TIMED_TEST(PassFailTests, test_char_PASS, TEST_TIMEOUT_DEFAULT) {\n//    assertEquals(\"hi there\", 'a', 'a');\n//}\n\n//TIMED_TEST(PassFailTests, test_char_FAIL, TEST_TIMEOUT_DEFAULT) {\n//    assertEquals(\"hi there\", 'a', 'b');\n//}\n\n//TIMED_TEST(PassFailTests, test_multiple_assertions_PASS, TEST_TIMEOUT_DEFAULT) {\n//    assertEquals(\"some test 1\", string(\"abc\"), string(\"abc\"));\n//    assertEquals(\"some test 2\", string(\"abc2\"), string(\"abc2\"));\n//    assertEquals(\"some test 3\", 42, 42);\n//    assertEquals(\"some test 4\", 123, 123);\n//}\n\n//TIMED_TEST(PassFailTests, test_multiple_assertions_FAIL1, TEST_TIMEOUT_DEFAULT) {\n//    assertEquals(\"some test 1\", string(\"abc\"), string(\"abc\"));\n//    assertEquals(\"some test 2\", string(\"abc\"), string(\"def\"));   // <-- should show this\n//    assertEquals(\"some test 3\", string(\"abc2\"), string(\"def2\"));\n//}\n\n//TIMED_TEST(PassFailTests, test_multiple_assertions_FAIL2, TEST_TIMEOUT_DEFAULT) {\n//    assertEquals(\"some test 1\", string(\"abc\"), string(\"abc\"));\n//    assertEquals(\"some test 2\", string(\"abc\"), string(\"def\"));   // <-- should show this\n//    assertEquals(\"some test 3\", string(\"abc2\"), string(\"def2\"));\n//    assertEquals(\"some test 4\", string(\"abc\"), string(\"abc\"));\n//    assertEquals(\"some test 5\", 42, 42);\n//}\n\n//TIMED_TEST(PassFailTests, test_reeeeeeeeeeeeeeally_long_name_FAIL, TEST_TIMEOUT_DEFAULT) {\n//    assertEquals(\"some failed test 1\", string(\"abc\"), string(\"oops\"));\n//    assertEquals(\"some failed test 2\", string(\"abc2\"), string(\"oops2\"));\n//    assertEquals(\"some later test that passes 1\", string(\"same1\"), string(\"same1\"));\n//    assertEquals(\"some later test that passes 2\", string(\"same2\"), string(\"same2\"));\n//}\n\n\n//TEST_CATEGORY(InfiniteLoops, \"infinite loops\");\n\n//TIMED_TEST(InfiniteLoops, test_infinite_loop1, TEST_TIMEOUT_DEFAULT/2) {\n//    while (1) { /* lolol */ }\n//}\n\n\n//TIMED_TEST(InfiniteLoops, test_infinite_loop2, TEST_TIMEOUT_DEFAULT) {\n//    while (1) { sleep(1); }\n//}\n\n//TIMED_TEST(InfiniteLoops, test_notInfiniteButExceedsTimeout, TEST_TIMEOUT_DEFAULT) {\n//    string exp = \"a\\nb\\nc\";\n//    string stu = \"a\\nb\\nc\";\n//    assertDiff(\"some diffs\", exp, stu);\n//    sleep(5);\n//}\n\n\n//TEST_CATEGORY(Crashes, \"crashes and exceptions\");\n\n//TIMED_TEST(Crashes, test_exception, TEST_TIMEOUT_DEFAULT) {\n//    Vector<int> v;\n//    v[29] = 42;   // boom\n//    assertDiff(\"a diff\", 42, 42);\n//}\n\n//TIMED_TEST(Crashes, test_sigfpe, TEST_TIMEOUT_DEFAULT) {\n//    int y = 0 + 0;\n//    int x = 1 / y;  // boom\n//    assertEquals(\"a diff\", 42, x);\n//}\n\n//TIMED_TEST(Crashes, test_segfault, TEST_TIMEOUT_DEFAULT) {\n//    int* p = NULL;\n//    int x = *p;  // boom\n//    assertEquals(\"a diff\", 42, x);\n//}\n\n//TEST_CATEGORY(PassFailTestsEnd, \"standard pass/fail tests at end\");\n\n//TIMED_TEST(PassFailTestsEnd, test_ints_again_PASS, TEST_TIMEOUT_DEFAULT) {\n//    assertEquals(\"compare ints\", 42, 42);\n//}\n\n//TIMED_TEST(PassFailTestsEnd, test_ints_again_2_PASS, TEST_TIMEOUT_DEFAULT) {\n//    sleep(1);\n//    assertEquals(\"compare doubles\", 42.0, 42.0);\n//}\n\n//TIMED_TEST(PassFailTestsEnd, test_ints_again_3_PASS, TEST_TIMEOUT_DEFAULT) {\n//    assertEquals(\"compare ints\", 42, 42);\n//}\n\n//TIMED_TEST(PassFailTestsEnd, test_ints_again_4_FAIL, TEST_TIMEOUT_DEFAULT) {\n//    sleep(1);\n//    assertEquals(\"compare ints\", 42, 43);\n//}\n\n//TIMED_TEST(PassFailTestsEnd, test_ints_again_5_PASS, TEST_TIMEOUT_DEFAULT) {\n//    assertEqualsCString(\"compare strings\", \"42\", \"42\");\n//}\n\nint f() {\n    if (2 % 2 == 1) {\n        return 42;\n    } else {\n        return 43;\n    }\n}\n\n/*\n * A custom autograder UI button to show the student's creative input file.\n */\nvoid showMyInputTxt() {\n    // empty\n    autograder::showStudentTextFile(\"myinput.txt\", /* maxWidth */ 75, /* maxHeight */ 30);\n}\n\n// this just needs to be here so that it will become studentMain()\nint main() {\n    cout << \"Hello, world!\" << endl;\n    cout << \"f is: \" << f() << endl;\n    int x = getInteger(\"Type x: \");\n    cout << \"You typed \" << x << endl;\n    return 0;\n}\n\nvoid autograderMain() {\n    // autograder::setAssignmentName(\"Stanford C++ Library Test\");\n    stanfordcpplib::autograder::Autograder* autograder = stanfordcpplib::autograder::Autograder::instance();\n    autograder->setAboutMessage(\"Stanford C++ library tester by Marty Stepp\");\n    autograder->setGraphicalUI(true);\n    autograder->setTestNameWidth(static_cast<int>(std::string(\"test02_abc_oops_real_long_name_gonnaFail\").length()));\n    autograder->setStartMessage(\"my <b>COOL</b> start <i>message</i> yay! \"\n                                \"lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum \"\n                                \"lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum \");\n\n    //stylecheck::setStyleCheckMergedWithUnitTests(true);\n    //autograder::styleCheckAddFile(\"mainfunc.cpp\");\n    autograder::addCallbackButton(showMyInputTxt, \"View\\nmyinput.txt\", \"textfile.gif\");\n}\n"
  },
  {
    "path": "Archived/Autograder_QtCreatorProject/src/readme.txt",
    "content": "This directory contains the source code files (*.cpp, *.h)\r\nthat you will write as you complete the assignment.\r\nWe will also put any instructor-provided code here.\r\n"
  },
  {
    "path": "Archived/Autograder_QtCreatorProject/src/test/_collectionTests.cp_",
    "content": "/*\r\n * Test file for verifying the Stanford C++ lib collection functionality.\r\n */\r\n\r\n// all collections:\r\n// BasicGraph, DawgLexicon, Graph, Grid, HashMap, HashSet, Lexicon, LinkedList,\r\n// Map, PriorityQueue, Queue, Set, SparseGrid, Stack, Vector\r\n\r\n#include \"testcases.h\"\r\n#include \"basicgraph.h\"\r\n#include \"dawglexicon.h\"\r\n#include \"deque.h\"\r\n#include \"graph.h\"\r\n#include \"grid.h\"\r\n#include \"hashcode.h\"\r\n#include \"hashmap.h\"\r\n#include \"hashset.h\"\r\n#include \"lexicon.h\"\r\n#include \"linkedhashmap.h\"\r\n#include \"linkedhashset.h\"\r\n#include \"linkedlist.h\"\r\n#include \"map.h\"\r\n#include \"pqueue.h\"\r\n#include \"queue.h\"\r\n#include \"set.h\"\r\n#include \"sparsegrid.h\"\r\n#include \"stack.h\"\r\n#include \"vector.h\"\r\n#include \"assertions.h\"\r\n#include \"gtest-marty.h\"\r\n#include <iostream>\r\n#include <sstream>\r\n#include <string>\r\nusing namespace std;\r\n\r\n#define TEST_TIMEOUT_DEFAULT 3000\r\n\r\nTEST_CATEGORY(CollectionTests, \"collection tests\");\r\n\r\n\r\n// for testing collections with non- ==, < elements\r\nclass Student {\r\npublic:\r\n    std::string name;\r\n};\r\n\r\n// for testing Graph class\r\nstruct DumbNode;\r\nstruct DumbEdge;\r\nstruct DumbNode {\r\n    std::string name;\r\n    Set<DumbEdge*> arcs;\r\n    double cost;\r\n};\r\n\r\nstruct DumbEdge {\r\n    DumbNode* start;\r\n    DumbNode* finish;\r\n    double cost;\r\n};\r\n\r\ntemplate <typename T>\r\nstatic void compareTestHelper(const T& o1, const T& o2, std::string type = \"\",\r\n                              int compareTo = 0) {\r\n    assertEqualsBool(type + o1.toString() + \" <  \" + o2.toString(), compareTo <  0,  o1 <  o2);\r\n    assertEqualsBool(type + o1.toString() + \" <= \" + o2.toString(), compareTo <= 0,  o1 <= o2);\r\n    assertEqualsBool(type + o1.toString() + \" >  \" + o2.toString(), compareTo >  0,  o1 >  o2);\r\n    assertEqualsBool(type + o1.toString() + \" >= \" + o2.toString(), compareTo >= 0,  o1 >= o2);\r\n    assertEqualsBool(type + o1.toString() + \" == \" + o2.toString(), compareTo == 0,  o1 == o2);\r\n    assertEqualsBool(type + o1.toString() + \" != \" + o2.toString(), compareTo != 0,  o1 != o2);\r\n}\r\n\r\nvoid randomElementTest() {\r\n    std::cout << \"randomElement/Key test:\" << std::endl;\r\n    Map<std::string, int> counts;\r\n    int RUNS = 200;\r\n    \r\n    std::cout << \"Grid: \";\r\n    Grid<std::string> grid;\r\n    grid.resize(2, 3);\r\n    grid[0][0] = \"a\";\r\n    grid[0][1] = \"b\";\r\n    grid[0][2] = \"c\";\r\n    grid[1][0] = \"d\";\r\n    grid[1][1] = \"e\";\r\n    grid[1][2] = \"f\";\r\n    for (int i = 0; i < RUNS; i++) {\r\n        std::string s = randomElement(grid);\r\n        std::cout << s << \" \";\r\n        counts[s]++;\r\n    }\r\n    std::cout << std::endl;\r\n    \r\n    std::cout << \"HashMap: \";\r\n    HashMap<std::string, int> hmap;\r\n    hmap[\"a\"] = 50;\r\n    hmap[\"b\"] = 40;\r\n    hmap[\"c\"] = 30;\r\n    hmap[\"d\"] = 20;\r\n    hmap[\"e\"] = 10;\r\n    hmap[\"f\"] =  0;\r\n    for (int i = 0; i < RUNS; i++) {\r\n        std::string s = randomKey(hmap);\r\n        std::cout << s << \" \";\r\n        counts[s]++;\r\n    }\r\n    std::cout << std::endl;\r\n    \r\n    std::cout << \"HashSet: \";\r\n    HashSet<std::string> hset;\r\n    hset += \"a\", \"b\", \"c\", \"d\", \"e\", \"f\";\r\n    for (int i = 0; i < RUNS; i++) {\r\n        std::string s = randomElement(hset);\r\n        std::cout << s << \" \";\r\n        counts[s]++;\r\n    }\r\n    std::cout << std::endl;\r\n    \r\n    std::cout << \"LinkedList: \";\r\n    LinkedList<std::string> list;\r\n    list += \"a\", \"b\", \"c\", \"d\", \"e\", \"f\";\r\n    for (int i = 0; i < RUNS; i++) {\r\n        std::string s = randomElement(list);\r\n        std::cout << s << \" \";\r\n        counts[s]++;\r\n    }\r\n    std::cout << std::endl;\r\n    \r\n    std::cout << \"Map: \";\r\n    Map<std::string, int> map;\r\n    map[\"a\"] = 50;\r\n    map[\"b\"] = 40;\r\n    map[\"c\"] = 30;\r\n    map[\"d\"] = 20;\r\n    map[\"e\"] = 10;\r\n    map[\"f\"] =  0;\r\n    for (int i = 0; i < RUNS; i++) {\r\n        std::string s = randomKey(map);\r\n        std::cout << s << \" \";\r\n        counts[s]++;\r\n    }\r\n    std::cout << std::endl;\r\n    \r\n    std::cout << \"Set: \";\r\n    Set<std::string> set;\r\n    set += \"a\", \"b\", \"c\", \"d\", \"e\", \"f\";\r\n    for (int i = 0; i < RUNS; i++) {\r\n        std::string s = randomElement(set);\r\n        std::cout << s << \" \";\r\n        counts[s]++;\r\n    }\r\n    std::cout << std::endl;\r\n    \r\n    std::cout << \"SparseGrid: \";\r\n    SparseGrid<std::string> sgrid;\r\n    sgrid.resize(4, 3);\r\n    sgrid[0][0] = \"a\";\r\n    sgrid[0][1] = \"b\";\r\n    sgrid[1][2] = \"c\";   // row 2 is blank\r\n    sgrid[3][0] = \"d\";\r\n    sgrid[1][1] = \"e\";\r\n    sgrid[1][2] = \"f\";\r\n    for (int i = 0; i < RUNS; i++) {\r\n        std::string s = randomElement(sgrid);\r\n        std::cout << s << \" \";\r\n        counts[s]++;\r\n    }\r\n    std::cout << std::endl;\r\n\r\n    std::cout << \"Vector: \";\r\n    Vector<std::string> v;\r\n    v += \"a\", \"b\", \"c\", \"d\", \"e\", \"f\";\r\n    for (int i = 0; i < RUNS; i++) {\r\n        std::string s = randomElement(v);\r\n        std::cout << s << \" \";\r\n        counts[s]++;\r\n    }\r\n    std::cout << std::endl;\r\n    std::cout << \"counts:\" << counts << std::endl << std::endl;\r\n}\r\n\r\nTIMED_TEST(CollectionTests, shuffleTest, TEST_TIMEOUT_DEFAULT) {\r\n    Vector<int> v {10, 20, 30, 40, 50};\r\n    Map<int, Map<int, int> > valueIndexCount;\r\n\r\n    // shuffle 100 times\r\n    for (int i = 0; i < 100; i++) {\r\n        shuffle(v);\r\n        for (int j = 0; j < v.size(); j++) {\r\n            valueIndexCount[v[j]][j]++;\r\n        }\r\n    }\r\n\r\n    // make sure each value appeared at each index at least once\r\n    for (int n : v) {\r\n        for (int j = 0; j < v.size(); j++) {\r\n            assertNotEqualsInt(\"\", 0, valueIndexCount[n][j]);\r\n        }\r\n    }\r\n}\r\n\r\nTIMED_TEST(CollectionTests, streamExtractTest_HashMap, TEST_TIMEOUT_DEFAULT) {\r\n    istringstream hmstream(\"{1:10, 2:20, 3:30}\");\r\n    HashMap<int, int> hm;\r\n    hmstream >> hm;\r\n    assertEqualsString(\"hm\", \"{1:10, 2:20, 3:30}\", hm.toString());\r\n}\r\n\r\nTIMED_TEST(CollectionTests, streamExtractTest_HashMap2bad, TEST_TIMEOUT_DEFAULT) {\r\n    HashMap<int, int> hm;\r\n    istringstream hmstreambad(\"1:1, 2, 33}\");\r\n    bool result = bool(hmstreambad >> hm);\r\n    assertFalse(\"operator >> on bad hashmap\", result);\r\n}\r\n\r\nTIMED_TEST(CollectionTests, streamExtractTest_Vector, TEST_TIMEOUT_DEFAULT) {\r\n    istringstream vstream(\"{1, 2, 3}\");\r\n    Vector<int> v;\r\n    vstream >> v;\r\n    assertEqualsString(\"v\", \"{1, 2, 3}\", v.toString());\r\n}\r\n\r\nTIMED_TEST(CollectionTests, streamExtractTest_Vector2bad, TEST_TIMEOUT_DEFAULT) {\r\n    Vector<int> v;\r\n    istringstream vstreambad(\"1, 2, 3}\");\r\n    bool result = bool(vstreambad >> v);\r\n    assertFalse(\"operator >> on bad vector\", result);\r\n}\r\n\r\nTIMED_TEST(CollectionTests, compareTest_BasicGraph, TEST_TIMEOUT_DEFAULT) {\r\n    BasicGraph bgraph;\r\n    bgraph.addNode(\"a\");\r\n    bgraph.addNode(\"b\");\r\n    bgraph.addNode(\"c\");\r\n    bgraph.addNode(\"d\");\r\n    bgraph.addNode(\"e\");\r\n    bgraph.addArc(\"a\", \"b\");\r\n    bgraph.addArc(\"a\", \"d\");\r\n    bgraph.addArc(\"b\", \"c\");\r\n    bgraph.addArc(\"b\", \"d\");\r\n    bgraph.addArc(\"c\", \"b\");\r\n    bgraph.addArc(\"c\", \"e\");\r\n\r\n    BasicGraph bgraph2;\r\n    bgraph2.addNode(\"a\");\r\n    bgraph2.addNode(\"b\");\r\n    bgraph2.addNode(\"c\");\r\n    bgraph2.addNode(\"d\");\r\n    bgraph2.addNode(\"e\");\r\n    bgraph2.addNode(\"f\");\r\n    bgraph2.addArc(\"a\", \"b\");\r\n    bgraph2.addArc(\"a\", \"d\");\r\n    bgraph2.addArc(\"b\", \"c\");\r\n    bgraph2.addArc(\"b\", \"d\");\r\n    bgraph2.addArc(\"c\", \"b\");\r\n    bgraph2.addArc(\"b\", \"e\");\r\n\r\n    BasicGraph bgraph3;\r\n\r\n    compareTestHelper(bgraph, bgraph2, \"BasicGraph\", /* compareTo */ -1);\r\n    compareTestHelper(bgraph, bgraph3, \"BasicGraph\", /* compareTo */  1);\r\n    compareTestHelper(bgraph2, bgraph, \"BasicGraph\", /* compareTo */  1);\r\n    compareTestHelper(bgraph, bgraph, \"BasicGraph\", /* compareTo */  0);\r\n\r\n    Set<BasicGraph> sbgraph {bgraph, bgraph2, bgraph3};\r\n    assertEqualsString(\"sbgraph\", \"{{}, {a, b, c, d, e, a -> b, a -> d, b -> c, b -> d, c -> b, c -> e}, {a, b, c, d, e, f, a -> b, a -> d, b -> c, b -> d, b -> e, c -> b}}\", sbgraph.toString());\r\n}\r\n\r\nTIMED_TEST(CollectionTests, compareTest_DawgLexicon, TEST_TIMEOUT_DEFAULT) {\r\n    DawgLexicon dawg;\r\n    dawg.add(\"a\");\r\n    dawg.add(\"b\");\r\n    dawg.add(\"c\");\r\n    DawgLexicon dawg2;\r\n    dawg2.add(\"a\");\r\n    dawg2.add(\"ab\");\r\n    dawg2.add(\"bc\");\r\n    DawgLexicon dawg3;\r\n    compareTestHelper(dawg, dawg2, \"DawgLexicon\", /* compareTo */ 1);\r\n    compareTestHelper(dawg2, dawg, \"DawgLexicon\", /* compareTo */ -1);\r\n    compareTestHelper(dawg, dawg, \"DawgLexicon\", /* compareTo */ 0);\r\n\r\n    Set<DawgLexicon> sdlex {dawg, dawg2, dawg3};\r\n    assertEqualsString(\"sdlex\", \"{{}, {\\\"a\\\", \\\"ab\\\", \\\"bc\\\"}, {\\\"a\\\", \\\"b\\\", \\\"c\\\"}}\", sdlex.toString());\r\n}\r\n\r\nTIMED_TEST(CollectionTests, compareTest_Deque, TEST_TIMEOUT_DEFAULT) {\r\n    Deque<std::string> deq;\r\n    deq.add(\"a\");\r\n    deq.add(\"b\");\r\n    deq.add(\"c\");\r\n    Deque<std::string> deq2;\r\n    deq2.add(\"a\");\r\n    deq2.add(\"ab\");\r\n    deq2.add(\"bc\");\r\n    Deque<std::string> deq3;\r\n    compareTestHelper(deq, deq2, \"Deque\", /* compareTo */ 1);\r\n    compareTestHelper(deq2, deq, \"Deque\", /* compareTo */ -1);\r\n    compareTestHelper(deq, deq, \"Deque\", /* compareTo */ 0);\r\n    Set<Deque<std::string> > sdeque {deq, deq2, deq3};\r\n    assertEqualsString(\"sdeque\", \"{{}, {\\\"a\\\", \\\"ab\\\", \\\"bc\\\"}, {\\\"a\\\", \\\"b\\\", \\\"c\\\"}}\", sdeque.toString());\r\n}\r\n\r\nTIMED_TEST(CollectionTests, compareTest_Graph, TEST_TIMEOUT_DEFAULT) {\r\n    Graph<DumbNode, DumbEdge> graph;\r\n    graph.addNode(\"a\");\r\n    graph.addNode(\"b\");\r\n    graph.addNode(\"c\");\r\n    graph.addNode(\"d\");\r\n    graph.addNode(\"e\");\r\n    graph.addArc(\"a\", \"b\");\r\n    graph.addArc(\"a\", \"d\");\r\n    graph.addArc(\"b\", \"c\");\r\n    graph.addArc(\"b\", \"d\");\r\n    graph.addArc(\"c\", \"b\");\r\n    graph.addArc(\"c\", \"e\");\r\n\r\n    Graph<DumbNode, DumbEdge> graph2;\r\n    graph2.addNode(\"a\");\r\n    graph2.addNode(\"b\");\r\n    graph2.addNode(\"c\");\r\n    graph2.addNode(\"d\");\r\n    graph2.addNode(\"e\");\r\n    graph2.addNode(\"f\");\r\n    graph2.addArc(\"a\", \"b\");\r\n    graph2.addArc(\"a\", \"d\");\r\n    graph2.addArc(\"b\", \"c\");\r\n    graph2.addArc(\"b\", \"d\");\r\n    graph2.addArc(\"c\", \"b\");\r\n    graph2.addArc(\"b\", \"e\");\r\n\r\n    Graph<DumbNode, DumbEdge> graph3;\r\n\r\n    compareTestHelper(graph, graph2, \"Graph\", /* compareTo */ -1);\r\n    compareTestHelper(graph, graph3, \"Graph\", /* compareTo */  1);\r\n    compareTestHelper(graph2, graph, \"Graph\", /* compareTo */  1);\r\n    compareTestHelper(graph, graph, \"Graph\", /* compareTo */ 0);\r\n\r\n    Set<Graph<DumbNode, DumbEdge> > sgraph {graph, graph2, graph3};\r\n    assertEqualsString(\"sgraph\", \"{{}, {a, b, c, d, e, a -> b, a -> d, b -> c, b -> d, c -> b, c -> e}, {a, b, c, d, e, f, a -> b, a -> d, b -> c, b -> d, b -> e, c -> b}}\", sgraph.toString());\r\n}\r\n\r\nTIMED_TEST(CollectionTests, compareTest_Grid, TEST_TIMEOUT_DEFAULT) {\r\n    Grid<int> grid1;\r\n    grid1.resize(2, 2);\r\n    Grid<int> grid2;\r\n    grid2.resize(2, 3);\r\n    Grid<int> grid3;\r\n    grid3.resize(3, 2);\r\n    Grid<int> grid4;\r\n    compareTestHelper(grid1, grid2, \"Grid\", /* compareTo */ -1);\r\n    compareTestHelper(grid2, grid1, \"Grid\", /* compareTo */  1);\r\n    compareTestHelper(grid1, grid3, \"Grid\", /* compareTo */ -1);\r\n    compareTestHelper(grid3, grid1, \"Grid\", /* compareTo */  1);\r\n    compareTestHelper(grid2, grid3, \"Grid\", /* compareTo */  1);\r\n    compareTestHelper(grid3, grid2, \"Grid\", /* compareTo */ -1);\r\n    compareTestHelper(grid1, grid1, \"Grid\", /* compareTo */  0);\r\n\r\n    Set<Grid<int> > sgrid {grid1, grid2, grid3, grid4};\r\n    assertEqualsString(\"sgrid\", \"{{}, {{0, 0}, {0, 0}}, {{0, 0}, {0, 0}, {0, 0}}, {{0, 0, 0}, {0, 0, 0}}}\", sgrid.toString());\r\n}\r\n\r\nTIMED_TEST(CollectionTests, compareTest_Lexicon, TEST_TIMEOUT_DEFAULT) {\r\n    Lexicon lex;\r\n    lex.add(\"a\");\r\n    lex.add(\"ab\");\r\n    lex.add(\"bc\");\r\n    Lexicon lex2;\r\n    lex2.add(\"a\");\r\n    lex2.add(\"b\");\r\n    lex2.add(\"c\");\r\n    Lexicon lex3;\r\n    compareTestHelper(lex, lex2, \"Lexicon\", /* compareTo */ -1);\r\n    compareTestHelper(lex2, lex, \"Lexicon\", /* compareTo */ 1);\r\n    compareTestHelper(lex, lex, \"Lexicon\", /* compareTo */ 0);\r\n\r\n    Set<Lexicon> slex {lex, lex2, lex3};\r\n    assertEqualsString(\"slex\", \"{{}, {\\\"a\\\", \\\"ab\\\", \\\"bc\\\"}, {\\\"a\\\", \\\"b\\\", \\\"c\\\"}}\", slex.toString());\r\n}\r\n\r\nTIMED_TEST(CollectionTests, compareTest_LinkedList, TEST_TIMEOUT_DEFAULT) {\r\n    LinkedList<int> ll1;\r\n    ll1 += 1, 2, 4, 5;\r\n    LinkedList<int> ll2;\r\n    ll2 += 1, 3, 1, 4, 8;\r\n    LinkedList<int> ll3;\r\n    ll3 += 1, 1, 7;\r\n    LinkedList<int> ll4;  // empty\r\n    compareTestHelper(ll1, ll2, \"LinkedList\", /* compareTo */ -1);\r\n    compareTestHelper(ll1, ll3, \"LinkedList\", /* compareTo */ 1);\r\n    compareTestHelper(ll1, ll4, \"LinkedList\", /* compareTo */ 1);\r\n    compareTestHelper(ll2, ll3, \"LinkedList\", /* compareTo */ 1);\r\n    compareTestHelper(ll2, ll4, \"LinkedList\", /* compareTo */ 1);\r\n    compareTestHelper(ll3, ll4, \"LinkedList\", /* compareTo */ 1);\r\n    compareTestHelper(ll2, ll2, \"LinkedList\", /* compareTo */ 0);\r\n\r\n    Set<LinkedList<int> > sll {ll1, ll2, ll3, ll4};\r\n    assertEqualsString(\"sll\", \"{{}, {1, 1, 7}, {1, 2, 4, 5}, {1, 3, 1, 4, 8}}\", sll.toString());\r\n}\r\n\r\nTIMED_TEST(CollectionTests, compareTest_Queue, TEST_TIMEOUT_DEFAULT) {\r\n    Queue<int> q1;\r\n    q1.add(1);\r\n    q1.add(2);\r\n    q1.add(1);\r\n    q1.add(5);\r\n    Queue<int> q2;\r\n    q2.add(1);\r\n    q2.add(2);\r\n    q2.add(1);\r\n    q2.add(4);\r\n    q2.add(7);\r\n    compareTestHelper(q1, q2, \"Queue\", /* compareTo */  1);\r\n    compareTestHelper(q2, q1, \"Queue\", /* compareTo */ -1);\r\n    compareTestHelper(q1, q1, \"Queue\", /* compareTo */  0);\r\n\r\n    Set<Queue<int> > sq {q1, q2};\r\n    assertEqualsString(\"sq\", \"{{1, 2, 1, 4, 7}, {1, 2, 1, 5}}\", sq.toString());\r\n}\r\n\r\nTIMED_TEST(CollectionTests, compareTest_Set, TEST_TIMEOUT_DEFAULT) {\r\n    Set<int> set1;\r\n    set1 += 7, 5, 1, 2, 8;\r\n    Set<int> set2;\r\n    set2 += 1, 2, 3, 4;\r\n    Set<int> set3;\r\n    compareTestHelper(set1, set2, \"Set\", /* compareTo */  1);\r\n    compareTestHelper(set2, set1, \"Set\", /* compareTo */ -1);\r\n    compareTestHelper(set1, set3, \"Set\", /* compareTo */  1);\r\n    compareTestHelper(set2, set3, \"Set\", /* compareTo */  1);\r\n\r\n    Set<Set<int> > sset {set1, set2, set3};\r\n    assertEqualsString(\"sset\", \"{{}, {1, 2, 3, 4}, {1, 2, 5, 7, 8}}\", sset.toString());\r\n}\r\n\r\nTIMED_TEST(CollectionTests, compareTest_SparseGrid, TEST_TIMEOUT_DEFAULT) {\r\n    SparseGrid<int> sgrid1;\r\n    sgrid1.resize(2, 2);\r\n    SparseGrid<int> sgrid2;\r\n    sgrid2.resize(2, 3);\r\n    SparseGrid<int> sgrid3;\r\n    sgrid3.resize(3, 2);\r\n    compareTestHelper(sgrid1, sgrid2, \"SparseGrid\", /* compareTo */ -1);\r\n    compareTestHelper(sgrid2, sgrid1, \"SparseGrid\", /* compareTo */  1);\r\n    compareTestHelper(sgrid1, sgrid3, \"SparseGrid\", /* compareTo */ -1);\r\n    compareTestHelper(sgrid3, sgrid1, \"SparseGrid\", /* compareTo */  1);\r\n    compareTestHelper(sgrid2, sgrid3, \"SparseGrid\", /* compareTo */  1);\r\n    compareTestHelper(sgrid3, sgrid2, \"SparseGrid\", /* compareTo */ -1);\r\n    compareTestHelper(sgrid1, sgrid1, \"SparseGrid\", /* compareTo */  0);\r\n\r\n    Set<SparseGrid<int> > ssgrid {sgrid1, sgrid2, sgrid3};\r\n    assertEqualsString(\"ssgrid\", \"{{}, 2 x 2, {}, 3 x 2, {}, 2 x 3}\", ssgrid.toString());\r\n}\r\n\r\nTIMED_TEST(CollectionTests, compareTest_Vector, TEST_TIMEOUT_DEFAULT) {\r\n    Vector<int> v1 {1, 2, 4, 5};\r\n    Vector<int> v2 {1, 3, 1, 4, 8};\r\n    Vector<int> v3 {1, 1, 7};\r\n    Vector<int> v4 {2, 0};\r\n    Vector<int> v5 {1, 2, 4, 5, 6, 7};\r\n    Vector<int> v6;  // empty\r\n    compareTestHelper(v1, v2, \"Vector\", /* compareTo */ -1);\r\n    compareTestHelper(v1, v3, \"Vector\", /* compareTo */  1);\r\n    compareTestHelper(v1, v4, \"Vector\", /* compareTo */ -1);\r\n    compareTestHelper(v1, v5, \"Vector\", /* compareTo */ -1);\r\n    compareTestHelper(v1, v6, \"Vector\", /* compareTo */  1);\r\n    compareTestHelper(v2, v3, \"Vector\", /* compareTo */  1);\r\n    compareTestHelper(v2, v4, \"Vector\", /* compareTo */ -1);\r\n    compareTestHelper(v2, v5, \"Vector\", /* compareTo */  1);\r\n    compareTestHelper(v2, v6, \"Vector\", /* compareTo */  1);\r\n    compareTestHelper(v3, v4, \"Vector\", /* compareTo */ -1);\r\n    compareTestHelper(v3, v5, \"Vector\", /* compareTo */ -1);\r\n    compareTestHelper(v3, v6, \"Vector\", /* compareTo */  1);\r\n    compareTestHelper(v4, v5, \"Vector\", /* compareTo */  1);\r\n    compareTestHelper(v4, v6, \"Vector\", /* compareTo */  1);\r\n    compareTestHelper(v5, v6, \"Vector\", /* compareTo */  1);\r\n\r\n    Set<Vector<int> > sv {v1, v2, v3, v4, v5, v6};\r\n    assertEqualsString(\"sv\", \"{{}, {1, 1, 7}, {1, 2, 4, 5}, {1, 2, 4, 5, 6, 7}, {1, 3, 1, 4, 8}, {2, 0}}\", sv.toString());\r\n}\r\n\r\nvoid foreachTest() {\r\n    std::cout << \"foreach test: \" << std::endl;\r\n\r\n    Vector<int> v1;\r\n    v1 += 1, 2, 3;\r\n    cout << \"v1: \" << v1 << endl;\r\n\r\n    Vector<string> v2;\r\n    v2 += \"a\", \"b\", \"c\";\r\n    cout << \"v2: \" << v2 << endl;\r\n\r\n    Stack<int> s1;\r\n    s1.push(1);\r\n    s1.push(2);\r\n    s1.push(3);\r\n    cout << \"s1: \" << s1 << endl;\r\n\r\n    Stack<string> s2;\r\n    s2.push(\"a\");\r\n    s2.push(\"b\");\r\n    s2.push(\"c\");\r\n    cout << \"s2: \" << s2 << endl;\r\n\r\n    Queue<int> q1;\r\n    q1.enqueue(1);\r\n    q1.enqueue(2);\r\n    q1.enqueue(3);\r\n    cout << \"q1: \" << q1 << endl;\r\n\r\n    Queue<string> q2;\r\n    q2.enqueue(\"a\");\r\n    q2.enqueue(\"b\");\r\n    q2.enqueue(\"c\");\r\n    cout << \"q2: \" << q2 << endl;\r\n\r\n    \r\n    BasicGraph bgraph;\r\n    bgraph.addNode(\"a\");\r\n    bgraph.addNode(\"b\");\r\n    bgraph.addNode(\"c\");\r\n    bgraph.addNode(\"d\");\r\n    bgraph.addNode(\"e\");\r\n    bgraph.addArc(\"a\", \"b\");\r\n    bgraph.addArc(\"a\", \"d\");\r\n    bgraph.addArc(\"b\", \"c\");\r\n    bgraph.addArc(\"b\", \"d\");\r\n    bgraph.addArc(\"c\", \"b\");\r\n    bgraph.addArc(\"c\", \"e\");\r\n    std::cout << \"basicgraph: \" << bgraph << std::endl;\r\n    for (Vertex* node : bgraph) {\r\n        std::cout << node->name << std::endl;\r\n    }\r\n    \r\n    DawgLexicon dlex;\r\n    dlex.add(\"a\");\r\n    dlex.add(\"cc\");\r\n    dlex.add(\"bbb\");\r\n    std::cout << \"dawglexicon: \" << dlex << std::endl;\r\n    for (std::string n : dlex) {\r\n        std::cout << n << std::endl;\r\n    }\r\n    \r\n    Graph<DumbNode, DumbEdge> graph;\r\n    graph.addNode(\"a\");\r\n    graph.addNode(\"b\");\r\n    graph.addNode(\"c\");\r\n    graph.addNode(\"d\");\r\n    graph.addNode(\"e\");\r\n    graph.addArc(\"a\", \"b\");\r\n    graph.addArc(\"a\", \"d\");\r\n    graph.addArc(\"b\", \"c\");\r\n    graph.addArc(\"b\", \"d\");\r\n    graph.addArc(\"c\", \"b\");\r\n    graph.addArc(\"c\", \"e\");\r\n    std::cout << \"graph: \" << graph << std::endl;\r\n    for (DumbNode* node : graph) {\r\n        std::cout << node->name << std::endl;\r\n    }\r\n    \r\n    Grid<int> grid(4, 2);\r\n    grid.fill(42);\r\n    std::cout << \"grid: \" << grid << std::endl;\r\n    for (int n : grid) {\r\n        std::cout << n << std::endl;\r\n    }\r\n    \r\n    HashMap<std::string, int> hmap;\r\n    hmap[\"a\"] = 1;\r\n    hmap[\"bbbb\"] = 2;\r\n    hmap[\"zz\"] = 26;\r\n    std::cout << \"hashmap: \" << hmap << std::endl;\r\n    for (std::string k : hmap) {\r\n        std::cout << k << \" => \" << hmap[k] << std::endl;\r\n    }\r\n    \r\n    HashSet<int> hset;\r\n    hset += 10, 20, 30, 40;\r\n    std::cout << \"hashset: \" << hset << std::endl;\r\n    for (int n : hset) {\r\n        std::cout << n << std::endl;\r\n    }\r\n\r\n    Lexicon lex;\r\n    lex.add(\"a\");\r\n    lex.add(\"cc\");\r\n    lex.add(\"bbb\");\r\n    std::cout << \"lexicon: \" << lex << std::endl;\r\n    for (std::string n : lex) {\r\n        std::cout << n << std::endl;\r\n    }\r\n\r\n    std::cout << std::endl;\r\n    LinkedHashMap<std::string, int> lhmap;\r\n//    lhmap[\"zz\"] = 26;\r\n//    lhmap[\"a\"] = 1;\r\n//    lhmap[\"ss\"] = 97;\r\n//    lhmap[\"bbbb\"] = 2;\r\n//    lhmap[\"E\"] = 4;\r\n//    lhmap[\"yZ44\"] = 33;\r\n    lhmap.put(\"zz\", 26);\r\n    lhmap.put(\"a\", 1);\r\n    lhmap.put(\"ss\", 97);\r\n    lhmap.put(\"bbbb\", 2);\r\n    lhmap.put(\"E\", 4);\r\n    lhmap.put(\"yZ44\", 33);\r\n    std::cout << \"linkedhashmap: \" << lhmap << std::endl;\r\n    for (std::string k : lhmap) {\r\n        std::cout << k << \" => \" << lhmap[k] << std::endl;\r\n    }\r\n    lhmap.remove(\"ss\");\r\n    lhmap.remove(\"zz\");\r\n    lhmap.remove(\"yZ44\");\r\n    lhmap.remove(\"notfound\");\r\n    std::cout << \"after removes:\" << std::endl;\r\n    std::cout << \"linkedhashmap: \" << lhmap << std::endl;\r\n    for (std::string k : lhmap) {\r\n        std::cout << k << \" => \" << lhmap[k] << std::endl;\r\n    }\r\n    std::cout << std::endl;\r\n    \r\n    LinkedHashSet<int> lhset;\r\n    lhset += 30, 10, 40, 66, -1, 42, 99;\r\n    std::cout << \"linkedhashset: \" << lhset << std::endl;\r\n    for (int n : lhset) {\r\n        std::cout << n << std::endl;\r\n    }\r\n    lhset -= 40, 30, 99;\r\n    std::cout << \"linkedhashset: \" << lhset << std::endl;\r\n    for (int n : lhset) {\r\n        std::cout << n << std::endl;\r\n    }\r\n    std::cout << std::endl;\r\n\r\n    LinkedList<int> ll;\r\n    ll += 10, 20, 30, 40;\r\n    std::cout << \"linkedlist: \" << ll << std::endl;\r\n    for (int n : ll) {\r\n        std::cout << n << std::endl;\r\n    }\r\n    \r\n    Map<std::string, int> map;\r\n    map[\"a\"] = 1;\r\n    map[\"bbbb\"] = 2;\r\n    map[\"zz\"] = 26;\r\n    std::cout << \"map: \" << map << std::endl;\r\n    for (std::string k : map) {\r\n        std::cout << k << \" => \" << map[k] << std::endl;\r\n    }\r\n    \r\n    PriorityQueue<std::string> pq;\r\n    pq.add(\"a\", 4);\r\n    pq.add(\"bb\", 3);\r\n    pq.add(\"c\", 1);\r\n    pq.add(\"ddd\", 6);\r\n    pq.add(\"e\", 5);\r\n    pq.add(\"ffff\", 2);\r\n    \r\n    // dupe priorities\r\n    pq.add(\"ffff-2nd\", 2);\r\n    pq.add(\"a-2nd\", 4);\r\n    pq.add(\"e-2nd\", 5);\r\n    std::cout << \"pq: \" << pq << std::endl;\r\n\r\n    // this should not compile since PQ has no public iterator\r\n//    std::cout << \"foreach loop: \" << std::endl;\r\n//    for (std::string str : pq) {\r\n//        std::cout << \"next element: \" << str << std::endl;\r\n//    }\r\n    \r\n    Queue<std::string> q;\r\n    q.add(\"a\");\r\n    q.add(\"bb\");\r\n    q.add(\"c\");\r\n    q.add(\"ddd\");\r\n    q.add(\"e\");\r\n    q.add(\"ffff\");\r\n    std::cout << \"q: \" << q << std::endl;\r\n    \r\n    // this should not compile since PQ has no public iterator\r\n//    std::cout << \"foreach loop: \" << std::endl;\r\n//    for (std::string str : q) {\r\n//        std::cout << \"next element: \" << str << std::endl;\r\n//    }\r\n}\r\n\r\nTIMED_TEST(CollectionTests, forEachTest_Set, TEST_TIMEOUT_DEFAULT) {\r\n    Set<int> set {10, 20, 30, 40};\r\n    Queue<int> expected {10, 20, 30, 40};\r\n\r\n    for (int n : set) {\r\n        int exp = expected.dequeue();\r\n        assertEqualsInt(\"set foreach\", exp, n);\r\n    }\r\n}\r\n\r\nTIMED_TEST(CollectionTests, forEachTest_SparseGrid, TEST_TIMEOUT_DEFAULT) {\r\n    SparseGrid<int> sgrid(4, 2);\r\n    sgrid.fill(42);\r\n    std::cout << \"sparsegrid: \" << sgrid << std::endl;\r\n    for (int n : sgrid) {\r\n        std::cout << n << std::endl;\r\n    }\r\n    \r\n    Vector<int> v;\r\n    v += 10, 20, 30, 40;\r\n    std::cout << \"vector: \" << v << std::endl;\r\n    for (int n : v) {\r\n        std::cout << n << std::endl;\r\n    }\r\n    \r\n    std::cout << \"done!\" << std::endl;\r\n}\r\n\r\nvoid hashCodeTest() {\r\n    std::cout << \"================= BEGIN HASHCODE TESTS =================\" << std::endl;\r\n    \r\n    // BasicGraph\r\n    BasicGraph bgraph;\r\n    bgraph.addNode(\"a\");\r\n    bgraph.addNode(\"b\");\r\n    bgraph.addNode(\"c\");\r\n    bgraph.addNode(\"d\");\r\n    bgraph.addNode(\"e\");\r\n    bgraph.addArc(\"a\", \"b\");\r\n    bgraph.addArc(\"a\", \"d\");\r\n    bgraph.addArc(\"b\", \"c\");\r\n    bgraph.addArc(\"b\", \"d\");\r\n    bgraph.addArc(\"c\", \"b\");\r\n    bgraph.addArc(\"c\", \"e\");\r\n    BasicGraph bgraph2;\r\n    bgraph2.addNode(\"a\");\r\n    bgraph2.addNode(\"b\");\r\n    bgraph2.addNode(\"c\");\r\n    bgraph2.addNode(\"d\");\r\n    bgraph2.addNode(\"e\");\r\n    bgraph2.addNode(\"f\");\r\n    bgraph2.addArc(\"a\", \"b\");\r\n    bgraph2.addArc(\"a\", \"d\");\r\n    bgraph2.addArc(\"b\", \"c\");\r\n    bgraph2.addArc(\"b\", \"d\");\r\n    bgraph2.addArc(\"c\", \"b\");\r\n    bgraph2.addArc(\"b\", \"e\");\r\n    HashSet<BasicGraph> hashbgraph;\r\n    hashbgraph.add(bgraph);\r\n    hashbgraph.add(bgraph2);\r\n    std::cout << \"hashset of basicgraph: \" << hashbgraph << std::endl;\r\n    \r\n    // DawgLexicon\r\n    HashSet<DawgLexicon> hashdawg;\r\n    DawgLexicon dlex;\r\n    dlex.add(\"a\");\r\n    dlex.add(\"abc\");\r\n    hashdawg.add(dlex);\r\n    std::cout << \"hashset of dawglexicon: \" << hashdawg << std::endl;\r\n    \r\n    // Deque\r\n    HashSet<Deque<int> > hashdeq;\r\n    Deque<int> deq;\r\n    deq.addBack(1);\r\n    deq.addFront(2);\r\n    deq.addBack(3);\r\n    deq.addFront(4);\r\n    hashdeq.add(deq);\r\n    std::cout << \"hashset of deque: \" << hashdeq << std::endl;\r\n\r\n    // Graph\r\n    Graph<DumbNode, DumbEdge> graph;\r\n    graph.addNode(\"a\");\r\n    graph.addNode(\"b\");\r\n    graph.addNode(\"c\");\r\n    graph.addNode(\"d\");\r\n    graph.addNode(\"e\");\r\n    graph.addArc(\"a\", \"b\");\r\n    graph.addArc(\"a\", \"d\");\r\n    graph.addArc(\"b\", \"c\");\r\n    graph.addArc(\"b\", \"d\");\r\n    graph.addArc(\"c\", \"b\");\r\n    graph.addArc(\"c\", \"e\");\r\n    Graph<DumbNode, DumbEdge> graph2;\r\n    graph2.addNode(\"a\");\r\n    graph2.addNode(\"b\");\r\n    graph2.addNode(\"c\");\r\n    graph2.addNode(\"d\");\r\n    graph2.addNode(\"e\");\r\n    graph2.addNode(\"f\");\r\n    graph2.addArc(\"a\", \"b\");\r\n    graph2.addArc(\"a\", \"d\");\r\n    graph2.addArc(\"b\", \"c\");\r\n    graph2.addArc(\"b\", \"d\");\r\n    graph2.addArc(\"c\", \"b\");\r\n    graph2.addArc(\"b\", \"e\");\r\n    //graph2.addArc(\"c\", \"e\");\r\n    HashSet<Graph<DumbNode, DumbEdge> > hashgraph;\r\n    hashgraph.add(graph);\r\n    hashgraph.add(graph2);\r\n    std::cout << \"hashset of graph: \" << hashgraph << std::endl;\r\n    \r\n    // Grid\r\n    HashSet<Grid<int> > hashgrid;\r\n    Grid<int> grid(2, 3);\r\n    grid.fill(42);\r\n    hashgrid.add(grid);\r\n    std::cout << \"hashset of grid: \" << hashgrid << std::endl;\r\n    \r\n    // HashMap\r\n    HashSet<HashMap<int, int> > hashhashmap;\r\n    HashMap<int, int> hmap;\r\n    hmap.add(69, 96);\r\n    hmap.add(42, 24);\r\n    hashhashmap.add(hmap);\r\n    std::cout << \"hashset of hashmap: \" << hashhashmap << std::endl;\r\n    \r\n    // HashSet\r\n    HashSet<HashSet<int> > hashhashset;\r\n    HashSet<int> hset;\r\n    hset.add(69);\r\n    hset.add(42);\r\n    hashhashset.add(hset);\r\n    std::cout << \"hashset of hashset: \" << hashhashset << std::endl;\r\n    \r\n    // Lexicon\r\n    HashSet<Lexicon> hashlex;\r\n    Lexicon lex;\r\n    lex.add(\"a\");\r\n    lex.add(\"abc\");\r\n    hashlex.add(lex);\r\n    std::cout << \"hashset of lexicon: \" << hashlex << std::endl;\r\n    \r\n    // LinkedList\r\n    HashSet<LinkedList<int> > hashlink;\r\n    LinkedList<int> llist;\r\n    llist.add(69);\r\n    llist.add(42);\r\n    hashlink.add(llist);\r\n    std::cout << \"hashset of linkedlist: \" << hashlink << std::endl;\r\n    \r\n    // Map\r\n    HashSet<Map<int, int> > hashmap;\r\n    Map<int, int> map;\r\n    map.add(69, 96);\r\n    map.add(42, 24);\r\n    hashmap.add(map);\r\n    std::cout << \"hashset of map: \" << hashmap << std::endl;\r\n    \r\n    // PriorityQueue\r\n    HashSet<PriorityQueue<std::string> > hashpq;\r\n    PriorityQueue<std::string> pq;\r\n    pq.add(\"a\", 3);\r\n    pq.add(\"b\", 2);\r\n    hashpq.add(pq);\r\n    std::cout << \"hashset of priorityqueue: \" << hashpq << std::endl;\r\n    \r\n    // Queue\r\n    HashSet<Queue<int> > hashq;\r\n    Queue<int> q;\r\n    q.add(69);\r\n    q.add(42);\r\n    hashq.add(q);\r\n    std::cout << \"hashset of queue: \" << hashq << std::endl;\r\n    \r\n//    for (int n : q) {\r\n//        std::cout << \"queue element: \" << n << std::endl;\r\n//    }\r\n    \r\n    // Set\r\n    HashSet<Set<int> > hashset;\r\n    Set<int> set;\r\n    set.add(69);\r\n    set.add(42);\r\n    hashset.add(set);\r\n    std::cout << \"hashset of set: \" << hashset << std::endl;\r\n    \r\n    // SparseGrid\r\n    HashSet<SparseGrid<int> > hashsparsegrid;\r\n    SparseGrid<int> sparsegrid(2, 2);\r\n    sparsegrid.fill(8);\r\n    hashsparsegrid.add(sparsegrid);\r\n    std::cout << \"hashset of sparsegrid: \" << hashsparsegrid << std::endl;\r\n    \r\n    // Stack\r\n    HashSet<Stack<int> > hashstack;\r\n    Stack<int> s;\r\n    s.add(69);\r\n    s.add(42);\r\n    \r\n//    for (int val : s) {\r\n//        std::cout << \"stack value: \" << val << std::endl;\r\n//    }\r\n    \r\n    hashstack.add(s);\r\n    std::cout << \"hashset of stack: \" << hashstack << std::endl;\r\n    \r\n    // Vector\r\n    HashSet<Vector<int> > hashvec;\r\n    Vector<int> v;\r\n    v.add(69);\r\n    v.add(42);\r\n    hashvec.add(v);\r\n    std::cout << \"hashset of vector: \" << hashvec << std::endl;\r\n    \r\n    Stack<Student> vstud;\r\n    Student sam;\r\n    vstud.add(sam);\r\n    Vector <Student> vstud2;\r\n    vstud2.add(sam);\r\n    std::cout << \"stack of student: size \" << vstud.size() << std::endl;\r\n    \r\n    HashSet<HashSet<int>> hhset;\r\n    HashSet<int> hset1;\r\n    hset1.add(42);\r\n    hset1.add(17);\r\n    hset1.add(318);\r\n    hhset.add(hset1);\r\n    HashSet<int> hset2;\r\n    hset2.add(99);\r\n    hset2.add(19);\r\n    hset2.add(59);\r\n    hset2.add(999);\r\n    hhset.add(hset2);\r\n    std::cout << \"hashset of hashset of int: \" << hhset << std::endl;\r\n    \r\n    Vertex* v1 = new Vertex(\"v1\");\r\n    Vertex* v2 = new Vertex(\"v2\");\r\n    Vertex* v3 = new Vertex(\"v3\");\r\n    Vertex* v4 = new Vertex(\"v4\");\r\n    Vertex* v5 = new Vertex(\"v5\");\r\n    Vertex* v6 = new Vertex(\"v6\");\r\n    \r\n    HashSet<HashSet<Vertex*>> hhset2;\r\n    HashSet<Vertex*> hset3;\r\n    hset3.add(v1);\r\n    hset3.add(v2);\r\n    hset3.add(v3);\r\n    hhset2.add(hset3);\r\n    HashSet<Vertex*> hset4;\r\n    hset4.add(v4);\r\n    hset4.add(v5);\r\n    hset4.add(v6);\r\n    hhset2.add(hset4);\r\n    std::cout << \"hashset of hashset of Vertex*: \" << hhset2 << std::endl;\r\n    \r\n    std::cout << std::endl;\r\n    HashMap< HashSet<Vector<std::string> >, Vector<std::string> > ngram;\r\n    HashSet<Vector<std::string> > key;\r\n    Vector<std::string> value;\r\n    ngram.put(key, value);\r\n    std::cout << \"ngram is \" << ngram << std::endl;\r\n    \r\n    \r\n    // hash code of hash collections after they are deep-copied\r\n    HashMap<int, int> hmapcode;\r\n    for (int i = 0; i < 99; i++) {\r\n        int rand = randomInteger(-9999, 9999);\r\n        hmapcode[rand] = i*i;\r\n    }\r\n    std::cout << \"HashMap deep-copy hashCode tests:\" << std::endl;\r\n    std::cout << \"hashcode of copy 1 is \" << hashCode(hmapcode) << std::endl;\r\n    HashMap<int, int> hmapcode2 = hmapcode;\r\n    std::cout << \"hashcode of copy 2 is \" << hashCode(hmapcode2) << std::endl;\r\n    std::cout << \"map 1 equals map 2? \" << std::boolalpha << (hmapcode == hmapcode2) << std::endl;\r\n    std::cout << \"sizes: \" << hmapcode.size() << \", \" << hmapcode2.size() << std::endl;\r\n\r\n    HashSet<int> hsetcode;\r\n    for (int i = 0; i < 99; i++) {\r\n        int rand = randomInteger(-9999, 9999);\r\n        hsetcode.add(rand);\r\n    }\r\n    std::cout << std::endl << \"HashSet deep-copy hashCode tests:\" << std::endl;\r\n    std::cout << \"hashcode of copy 1 is \" << hashCode(hsetcode) << std::endl;\r\n    HashSet<int> hsetcode2 = hsetcode;\r\n    std::cout << \"hashcode of copy 2 is \" << hashCode(hsetcode2) << std::endl;\r\n    std::cout << \"set 1 equals set 2? \" << std::boolalpha << (hsetcode == hsetcode2) << std::endl;\r\n    std::cout << \"sizes: \" << hsetcode.size() << \", \" << hsetcode2.size() << std::endl;\r\n\r\n    std::cout << \"================== END HASHCODE TESTS ==================\" << std::endl;\r\n}\r\n\r\nvoid initializerListTest() {\r\n    auto list = {60, 70};\r\n    auto list2 = {20, 50};\r\n    std::initializer_list<std::string> lexlist = {\"sixty\", \"seventy\"};\r\n    std::initializer_list<std::string> lexlist2 = {\"twenty\", \"fifty\"};\r\n    std::initializer_list<std::pair<std::string, int> > pairlist = {{\"k\", 60}, {\"t\", 70}};\r\n    std::initializer_list<std::pair<std::string, int> > pairlist2 = {{\"b\", 20}, {\"e\", 50}};\r\n\r\n    BasicGraph graph {\"a\", \"b\", \"c\", \"d\"};\r\n    cout << \"init list BasicGraph = \" << graph << endl;\r\n\r\n    Grid<int> grid {{1, 2, 3}, {4, 5, 6}};\r\n    cout << \"init list Grid = \" << grid << endl;\r\n\r\n    HashMap<string, int> hmap {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}};\r\n    cout << \"init list HashMap = \" << hmap << endl;\r\n    hmap += {{\"d\", 40}, {\"e\", 50}};\r\n    cout << \"after +=, HashMap = \" << hmap << endl;\r\n    cout << \"HashMap + {} list = \" << (hmap + pairlist) << endl;\r\n    cout << \"HashMap - {} list = \" << (hmap - pairlist2) << endl;\r\n    cout << \"HashMap * {} list = \" << (hmap * pairlist2) << endl;\r\n    hmap -= {{\"b\", 20}, {\"e\", 50}, {\"a\", 999}};\r\n    cout << \"HashMap -={} list = \" << hmap << endl;\r\n    hmap *= {{\"z\", 0}, {\"a\", 10}, {\"d\", 40}, {\"x\", 99}};\r\n    cout << \"HashMap *={} list = \" << hmap << endl;\r\n    cout << \"at end,   HashMap = \" << hmap << endl;\r\n\r\n    HashSet<int> hset {10, 20, 30};\r\n    cout << \"init list HashSet = \" << hset << endl;\r\n    hset += {40, 50};\r\n    cout << \"after +=, HashSet = \" << hset << endl;\r\n    cout << \"HashSet + {} list = \" << (hset + list) << endl;\r\n    cout << \"HashSet - {} list = \" << (hset - list2) << endl;\r\n    cout << \"HashSet * {} list = \" << (hset * list2) << endl;\r\n    hset -= {20, 50};\r\n    cout << \"HashSet -={} list = \" << hset << endl;\r\n    hset *= {0, 10, 40, 99};\r\n    cout << \"HashSet *={} list = \" << hset << endl;\r\n    cout << \"at end,   HashSet = \" << hset << endl;\r\n\r\n    std::initializer_list<std::string> lexallwords = {\r\n        \"ten\", \"twenty\", \"thirty\", \"forty\", \"fifty\", \"sixty\", \"seventy\"\r\n    };\r\n    Lexicon lex {\"ten\", \"twenty\", \"thirty\"};\r\n    cout << \"init list Lexicon = \" << lex << \", size \" << lex.size() << endl;\r\n    for (std::string s : lexallwords) { cout << boolalpha << lex.contains(s) << \" \"; }\r\n    cout << endl;\r\n    lex += \"forty\", \"fifty\";\r\n    cout << \"after +=, Lexicon = \" << lex << \", size \" << lex.size() << endl;\r\n    lex -= \"forty\", \"fifty\";\r\n    cout << \"after -=, Lexicon = \" << lex << \", size \" << lex.size() << endl;\r\n    lex += {\"forty\", \"fifty\"};\r\n    cout << \"after +=, Lexicon = \" << lex << \", size \" << lex.size() << endl;\r\n    for (std::string s : lexallwords) { cout << boolalpha << lex.contains(s) << \" \"; }\r\n    cout << endl;\r\n    cout << \"Lexicon + {} list = \" << (lex + lexlist) << endl;\r\n    cout << \"Lexicon - {} list = \" << (lex - lexlist2) << endl;\r\n    cout << \"Lexicon * {} list = \" << (lex * lexlist2) << endl;\r\n    lex -= {\"twenty\", \"fifty\"};\r\n    cout << \"Lexicon -={} list = \" << lex << \", size \" << lex.size() << endl;\r\n    lex *= {\"zero\", \"ten\", \"forty\", \"ninetynine\"};\r\n    cout << \"Lexicon *={} list = \" << lex << \", size \" << lex.size() << endl;\r\n    cout << \"at end,   Lexicon = \" << lex << \", size \" << lex.size() << endl;\r\n\r\n    DawgLexicon dlex {\"ten\", \"twenty\", \"thirty\"};\r\n    cout << \"init list DawgLexicon = \" << dlex << \", size \" << dlex.size() << endl;\r\n    for (std::string s : lexallwords) { cout << boolalpha << dlex.contains(s) << \" \"; }\r\n    cout << endl;\r\n    dlex += \"forty\", \"fifty\";\r\n    cout << \"after +=, DawgLexicon = \" << dlex << \", size \" << dlex.size() << endl;\r\n    for (std::string s : lexallwords) { cout << boolalpha << dlex.contains(s) << \" \"; }\r\n    cout << endl;\r\n    cout << \"DawgLexicon + {} list = \" << (dlex + lexlist) << endl;\r\n    cout << \"at end,   DawgLexicon = \" << dlex << \", size \" << dlex.size() << endl;\r\n\r\n    LinkedHashMap<string, int> lhmap {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}};\r\n    cout << \"init list LinkedHashMap = \" << lhmap << endl;\r\n    lhmap += {{\"d\", 40}, {\"e\", 50}};\r\n    cout << \"after +=, LinkedHashMap = \" << lhmap << endl;\r\n    cout << \"LinkedHashMap + {} list = \" << (lhmap + pairlist) << endl;\r\n    cout << \"LinkedHashMap - {} list = \" << (lhmap - pairlist2) << endl;\r\n    cout << \"LinkedHashMap * {} list = \" << (lhmap * pairlist2) << endl;\r\n    lhmap -= {{\"b\", 20}, {\"e\", 50}, {\"a\", 999}};\r\n    cout << \"LinkedHashMap -={} list = \" << lhmap << endl;\r\n    lhmap *= {{\"z\", 0}, {\"a\", 10}, {\"d\", 40}, {\"x\", 99}};\r\n    cout << \"LinkedHashMap *={} list = \" << lhmap << endl;\r\n    cout << \"at end,   LinkedHashMap = \" << lhmap << endl;\r\n\r\n    LinkedHashSet<int> lhset {10, 20, 30};\r\n    cout << \"init list LinkedHashSet = \" << lhset << endl;\r\n    lhset += {40, 50};\r\n    cout << \"after +=, LinkedHashSet = \" << lhset << endl;\r\n    cout << \"LinkedHashSet + {} list = \" << (lhset + list) << endl;\r\n    cout << \"LinkedHashSet - {} list = \" << (lhset - list2) << endl;\r\n    cout << \"LinkedHashSet * {} list = \" << (lhset * list2) << endl;\r\n    lhset -= {20, 50};\r\n    cout << \"LinkedHashSet -={} list = \" << lhset << endl;\r\n    lhset *= {0, 10, 40, 99};\r\n    cout << \"LinkedHashSet *={} list = \" << lhset << endl;\r\n    cout << \"at end,   LinkedHashSet = \" << lhset << endl;\r\n\r\n    LinkedList<int> llist {10, 20, 30};\r\n    cout << \"init list LinkedList = \" << llist << endl;\r\n    llist += {40, 50};\r\n    cout << \"after +=, LinkedList = \" << llist << endl;\r\n    cout << \"LinkedList + {} list = \" << (llist + list) << endl;\r\n    cout << \"at end,   LinkedList = \" << llist << endl;\r\n\r\n    Map<string, int> map {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}};\r\n    cout << \"init list Map = \" << map << endl;\r\n    map += {{\"d\", 40}, {\"e\", 50}};\r\n    cout << \"after +=, Map = \" << map << endl;\r\n    cout << \"Map + {} list = \" << (map + pairlist) << endl;\r\n    cout << \"Map - {} list = \" << (map - pairlist2) << endl;\r\n    cout << \"Map * {} list = \" << (map * pairlist2) << endl;\r\n    map -= {{\"b\", 20}, {\"e\", 50}, {\"a\", 999}};\r\n    cout << \"Map -={} list = \" << map << endl;\r\n    map *= {{\"z\", 0}, {\"a\", 10}, {\"d\", 40}, {\"x\", 99}};\r\n    cout << \"Map *={} list = \" << map << endl;\r\n    cout << \"at end,   Map = \" << map << endl;\r\n\r\n    PriorityQueue<string> pqueue {{40.0, \"Marty\"}, {20.0, \"Eric\"}, {30.0, \"Mehran\"}};\r\n    cout << \"init list PQueue = \" << pqueue << endl;\r\n    while (!pqueue.isEmpty()) {\r\n        cout << \"  \" << pqueue.peekPriority() << \" \" << pqueue.peek() << endl;\r\n        pqueue.dequeue();\r\n    }\r\n\r\n    Queue<int> queue {10, 20, 30};\r\n    cout << \"init list Queue = \" << queue << endl;\r\n\r\n    Deque<int> deque {10, 20, 30};\r\n    cout << \"init list Deque = \" << deque << endl;\r\n\r\n    Set<int> set {10, 20, 30};\r\n    cout << \"init list Set = \" << set << endl;\r\n    set += {40, 50};\r\n    cout << \"after +=, Set = \" << set << endl;\r\n    cout << \"Set + {} list = \" << (set + list) << endl;\r\n    cout << \"Set - {} list = \" << (set - list2) << endl;\r\n    cout << \"Set * {} list = \" << (set * list2) << endl;\r\n    set -= {20, 50};\r\n    cout << \"Set -={} list = \" << set << endl;\r\n    set *= {0, 10, 40, 99};\r\n    cout << \"Set *={} list = \" << set << endl;\r\n    cout << \"at end,   Set = \" << set << endl;\r\n\r\n    SparseGrid<int> sgrid {{1, 2, 3}, {4, 5, 6}};\r\n    cout << \"init list SparseGrid = \" << sgrid << endl;\r\n\r\n    Stack<int> stack {10, 20, 30};\r\n    cout << \"init list Stack = \" << stack << endl;\r\n\r\n    Vector<int> v {10, 20, 30};\r\n    cout << \"init list Vector = \" << v << endl;\r\n    v += {40, 50};\r\n    cout << \"after +=, Vector = \" << v << endl;\r\n    cout << \"Vector + {} list = \" << (v + list) << endl;\r\n    cout << \"at end,   Vector = \" << v << endl;\r\n    v = {999, 888, 777};\r\n    cout << \"on =,     Vector = \" << v << endl;\r\n    v.clear();\r\n    v.add(777);\r\n    std::initializer_list<int> sevenlist = {777};\r\n    if (v == sevenlist) {\r\n        cout << \"op ==, Vector equal\" << endl;\r\n    } else {\r\n        cout << \"op ==, Vector not equal\" << endl;\r\n    }\r\n\r\n    // test containsAll\r\n\r\n}\r\n"
  },
  {
    "path": "Archived/Autograder_QtCreatorProject/src/test/collection-test-basicgraph.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib collection functionality.\n */\n\n#include \"testcases.h\"\n#include \"basicgraph.h\"\n#include \"hashcode.h\"\n#include \"hashset.h\"\n#include \"queue.h\"\n#include \"assertions.h\"\n#include \"gtest-marty.h\"\n#include <initializer_list>\n#include <iostream>\n#include <sstream>\n#include <string>\n\nTEST_CATEGORY(BasicGraphTests, \"BasicGraph tests\");\n\nTIMED_TEST(BasicGraphTests, basicTest_BasicGraph, TEST_TIMEOUT_DEFAULT) {\n    BasicGraph bgraph;\n    bgraph.addNode(\"a\");\n    bgraph.addNode(\"b\");\n    bgraph.addNode(\"c\");\n    bgraph.addNode(\"d\");\n    bgraph.addNode(\"e\");\n    bgraph.addArc(\"a\", \"b\");\n    bgraph.addArc(\"a\", \"d\");\n    bgraph.addArc(\"b\", \"c\");\n    bgraph.addArc(\"b\", \"d\");\n    bgraph.addArc(\"c\", \"b\");\n    bgraph.addArc(\"c\", \"e\");   // TODO: uncomment\n\n    BasicGraph copy = bgraph;\n\n    assertEqualsInt(\"basicgraph size\", 5, bgraph.size());\n    assertEqualsInt(\"basicgraph vertex count\", 5, bgraph.getVertexSet().size());\n    assertEqualsInt(\"basicgraph edge count\", 6, bgraph.getEdgeSet().size());\n\n    assertTrue(\"basicgraph contains a\", bgraph.containsVertex(\"a\"));\n    assertTrue(\"basicgraph contains b\", bgraph.containsVertex(\"b\"));\n    assertTrue(\"basicgraph contains c\", bgraph.containsVertex(\"c\"));\n    assertTrue(\"basicgraph contains d\", bgraph.containsVertex(\"d\"));\n    assertTrue(\"basicgraph contains e\", bgraph.containsVertex(\"e\"));\n    assertFalse(\"basicgraph contains f\", bgraph.containsVertex(\"f\"));\n    assertFalse(\"basicgraph contains g\", bgraph.containsVertex(\"g\"));\n\n    assertTrue(\"basicgraph contains edge a -> b\", bgraph.containsEdge(\"a\", \"b\"));\n    assertTrue(\"basicgraph contains edge b -> c\", bgraph.containsEdge(\"b\", \"c\"));\n    assertTrue(\"basicgraph contains edge c -> e\", bgraph.containsEdge(\"c\", \"e\"));\n    assertFalse(\"basicgraph contains edge a -> c\", bgraph.containsEdge(\"a\", \"c\"));\n    assertFalse(\"basicgraph contains edge b -> a\", bgraph.containsEdge(\"b\", \"a\"));\n\n    bgraph.removeArc(\"a\", \"b\");\n    assertEqualsInt(\"basicgraph edge count\", 5, bgraph.getEdgeSet().size());\n    assertFalse(\"basicgraph contains edge a -> b\", bgraph.containsEdge(\"a\", \"b\"));\n    assertFalse(\"basicgraph contains edge a -> b\", bgraph.containsEdge(\"a\", \"b\"));\n\n    // error(\"shiiiiiiit\");\n\n    bgraph.removeVertex(\"b\");\n    assertEqualsInt(\"basicgraph vertex count\", 4, bgraph.getVertexSet().size());\n    assertEqualsInt(\"basicgraph edge count\", 2, bgraph.getEdgeSet().size());\n    assertFalse(\"basicgraph contains edge a -> b\", bgraph.containsEdge(\"a\", \"b\"));\n    assertFalse(\"basicgraph contains edge b -> c\", bgraph.containsEdge(\"b\", \"c\"));\n    assertFalse(\"basicgraph contains edge b -> d\", bgraph.containsEdge(\"b\", \"d\"));\n    assertFalse(\"basicgraph contains edge c -> b\", bgraph.containsEdge(\"c\", \"b\"));\n\n    bgraph = copy;\n    bgraph.clearEdges();\n    assertEqualsInt(\"basicgraph size\", 5, bgraph.size());\n    assertEqualsInt(\"basicgraph vertex count\", 5, bgraph.getVertexSet().size());\n    assertEqualsInt(\"basicgraph edge count\", 0, bgraph.getEdgeSet().size());\n\n    bgraph = copy;\n    bgraph.clear();\n    assertEqualsInt(\"basicgraph size\", 0, bgraph.size());\n    assertEqualsInt(\"basicgraph vertex count\", 0, bgraph.getVertexSet().size());\n    assertEqualsInt(\"basicgraph edge count\", 0, bgraph.getEdgeSet().size());\n}\n\nTIMED_TEST(BasicGraphTests, compareTest_BasicGraph, TEST_TIMEOUT_DEFAULT) {\n    BasicGraph bgraph;\n    bgraph.addNode(\"a\");\n    bgraph.addNode(\"b\");\n    bgraph.addNode(\"c\");\n    bgraph.addNode(\"d\");\n    bgraph.addNode(\"e\");\n    bgraph.addArc(\"a\", \"b\");\n    bgraph.addArc(\"a\", \"d\");\n    bgraph.addArc(\"b\", \"c\");\n    bgraph.addArc(\"b\", \"d\");\n    bgraph.addArc(\"c\", \"b\");\n    bgraph.addArc(\"c\", \"e\");\n\n    BasicGraph bgraph2;\n    bgraph2.addNode(\"a\");\n    bgraph2.addNode(\"b\");\n    bgraph2.addNode(\"c\");\n    bgraph2.addNode(\"d\");\n    bgraph2.addNode(\"e\");\n    bgraph2.addNode(\"f\");\n    bgraph2.addArc(\"a\", \"b\");\n    bgraph2.addArc(\"a\", \"d\");\n    bgraph2.addArc(\"b\", \"c\");\n    bgraph2.addArc(\"b\", \"d\");\n    bgraph2.addArc(\"c\", \"b\");\n    bgraph2.addArc(\"b\", \"e\");\n\n    BasicGraph bgraph3;\n\n    compareTestHelper(bgraph, bgraph2, \"BasicGraph\", /* compareTo */ -1);\n    compareTestHelper(bgraph, bgraph3, \"BasicGraph\", /* compareTo */  1);\n    compareTestHelper(bgraph2, bgraph, \"BasicGraph\", /* compareTo */  1);\n    compareTestHelper(bgraph, bgraph, \"BasicGraph\", /* compareTo */  0);\n\n    Set<BasicGraph> sbgraph {bgraph, bgraph2, bgraph3};\n    assertEqualsString(\"sbgraph\", \"{{}, {a, b, c, d, e, a -> b, a -> d, b -> c, b -> d, c -> b, c -> e}, {a, b, c, d, e, f, a -> b, a -> d, b -> c, b -> d, b -> e, c -> b}}\", sbgraph.toString());\n}\n\nTIMED_TEST(BasicGraphTests, forEachTest_BasicGraph, TEST_TIMEOUT_DEFAULT) {\n    BasicGraph bgraph;\n    bgraph.addNode(\"a\");\n    bgraph.addNode(\"b\");\n    bgraph.addNode(\"c\");\n    bgraph.addNode(\"d\");\n    bgraph.addNode(\"e\");\n    bgraph.addArc(\"a\", \"b\");\n    bgraph.addArc(\"a\", \"d\");\n    bgraph.addArc(\"b\", \"c\");\n    bgraph.addArc(\"b\", \"d\");\n    bgraph.addArc(\"c\", \"b\");\n    bgraph.addArc(\"c\", \"e\");\n    Queue<std::string> expected {\"a\", \"b\", \"c\", \"d\", \"e\"};\n    for (Vertex* node : bgraph) {\n        std::string exp = expected.dequeue();\n        assertEqualsString(\"BasicGraph foreach vertex name\", exp, node->name);\n    }\n}\n\nTIMED_TEST(BasicGraphTests, frontBackTest_BasicGraph, TEST_TIMEOUT_DEFAULT) {\n    BasicGraph bgraph;\n    bgraph.addNode(\"a\");\n    bgraph.addNode(\"b\");\n    bgraph.addNode(\"c\");\n    bgraph.addNode(\"d\");\n    bgraph.addNode(\"e\");\n    bgraph.addArc(\"a\", \"b\");\n    bgraph.addArc(\"a\", \"d\");\n    bgraph.addArc(\"b\", \"c\");\n    bgraph.addArc(\"b\", \"d\");\n    bgraph.addArc(\"c\", \"b\");\n    bgraph.addArc(\"c\", \"e\");\n    assertEqualsString(\"BasicGraph front\", \"a\", bgraph.front()->name);\n    assertEqualsString(\"BasicGraph back\",  \"e\", bgraph.back()->name);\n}\n\nTIMED_TEST(BasicGraphTests, hashCodeTest_BasicGraph, TEST_TIMEOUT_DEFAULT) {\n    BasicGraph bgraph;\n    bgraph.addNode(\"a\");\n    bgraph.addNode(\"b\");\n    bgraph.addNode(\"c\");\n    bgraph.addNode(\"d\");\n    bgraph.addNode(\"e\");\n    bgraph.addArc(\"a\", \"b\");\n    bgraph.addArc(\"a\", \"d\");\n    bgraph.addArc(\"b\", \"c\");\n    bgraph.addArc(\"b\", \"d\");\n    bgraph.addArc(\"c\", \"b\");\n    bgraph.addArc(\"c\", \"e\");\n    assertEqualsInt(\"hashcode of self basicgraph\", hashCode(bgraph), hashCode(bgraph));\n\n    BasicGraph copy = bgraph;\n    assertEqualsInt(\"hashcode of copy basicgraph\", hashCode(bgraph), hashCode(copy));\n\n    BasicGraph bgraph2;\n    bgraph2.addNode(\"a\");\n    bgraph2.addNode(\"b\");\n    bgraph2.addNode(\"c\");\n    bgraph2.addNode(\"d\");\n    bgraph2.addNode(\"e\");\n    bgraph2.addNode(\"f\");\n    bgraph2.addArc(\"a\", \"b\");\n    bgraph2.addArc(\"a\", \"d\");\n    bgraph2.addArc(\"b\", \"c\");\n    bgraph2.addArc(\"b\", \"d\");\n    bgraph2.addArc(\"c\", \"b\");\n    bgraph2.addArc(\"b\", \"e\");\n    assertNotEqualsInt(\"hashcode of unequal basicgraph\", hashCode(bgraph), hashCode(bgraph2));\n\n    HashSet<BasicGraph> hashbgraph;\n    hashbgraph.add(bgraph);\n    hashbgraph.add(bgraph2);\n    assertEqualsInt(\"hashset of basicgraph size\", 2, hashbgraph.size());\n\n    Vertex* v1 = new Vertex(\"v1\");\n    Vertex* v2 = new Vertex(\"v2\");\n    Vertex* v3 = new Vertex(\"v3\");\n    Vertex* v4 = new Vertex(\"v4\");\n    Vertex* v5 = new Vertex(\"v5\");\n    Vertex* v6 = new Vertex(\"v6\");\n\n    HashSet<HashSet<Vertex*>> hhset2;\n    HashSet<Vertex*> hset3;\n    hset3.add(v1);\n    hset3.add(v2);\n    hset3.add(v3);\n    hhset2.add(hset3);\n    HashSet<Vertex*> hset4;\n    hset4.add(v4);\n    hset4.add(v5);\n    hset4.add(v6);\n    hhset2.add(hset4);\n    assertEqualsInt(\"hashset of hashset of vertex size\", 2, hhset2.size());\n\n    delete v1;\n    delete v2;\n    delete v3;\n    delete v4;\n    delete v5;\n    delete v6;\n}\n\nTIMED_TEST(BasicGraphTests, initializerListTest_BasicGraph, TEST_TIMEOUT_DEFAULT) {\n    BasicGraph graph {\"a\", \"b\", \"c\", \"d\"};\n    assertEqualsString(\"init list BasicGraph\", \"{a, b, c, d}\", graph.toString());\n}\n\n#ifdef SPL_THROW_ON_INVALID_ITERATOR\nTIMED_TEST(BasicGraphTests, iteratorVersionTest_BasicGraph, TEST_TIMEOUT_DEFAULT) {\n    BasicGraph bgraph;\n    bgraph.addNode(\"a\");\n    bgraph.addNode(\"b\");\n    bgraph.addNode(\"c\");\n    bgraph.addNode(\"d\");\n    bgraph.addNode(\"e\");\n    bgraph.addArc(\"a\", \"b\");\n    bgraph.addArc(\"a\", \"d\");\n    bgraph.addArc(\"b\", \"c\");\n    bgraph.addArc(\"b\", \"d\");\n    bgraph.addArc(\"c\", \"b\");\n    bgraph.addArc(\"c\", \"e\");\n\n    try {\n        for (Vertex* v : bgraph) {\n            bgraph.removeNode(v);\n        }\n        assertFail(\"should not get to end of test; should throw exception before now\");\n    } catch (ErrorException ex) {\n        assertPass(\"threw exception successfully\");\n    }\n}\n#endif // SPL_THROW_ON_INVALID_ITERATOR\n\n//static void temp(BasicGraph /*bg*/) {\n//    // empty\n//}\n\n//static Set<Edge*> temp2() {\n//    BasicGraph bgraph;\n//    bgraph.addNode(\"a\");\n//    bgraph.addNode(\"b\");\n//    bgraph.addNode(\"c\");\n//    bgraph.addNode(\"d\");\n//    bgraph.addNode(\"e\");\n//    bgraph.addArc(\"a\", \"b\");\n//    bgraph.addArc(\"a\", \"d\");\n//    bgraph.addArc(\"b\", \"c\");\n//    bgraph.addArc(\"b\", \"d\");\n//    bgraph.addArc(\"c\", \"b\");\n//    bgraph.addArc(\"c\", \"e\");\n\n//    Set<Edge*> edges;\n//    for (Vertex* v : bgraph.getVertexSet()) {\n//        edges += v->arcs;\n//    }\n\n////    {\n////        BasicGraph bgraph2 = bgraph;\n////        temp(bgraph2);\n\n////        // let it fall out of scope; should free memory (oops!)\n////    }\n\n//    return edges;\n//}\n\n//TIMED_TEST(BasicGraphTests, operatorEqualsTest_BasicGraph, TEST_TIMEOUT_DEFAULT) {\n//    Set<Edge*> edges = temp2();\n\n//    // this code should crash\n//    int count = 0;\n//    for (Edge* e : edges) {\n//        if (e->start || e->finish) {\n//            std::cout << \"e is \" << e->start->name\n//                      << \" -> \" << e->finish->name << std::endl;\n//            count++;\n//        }\n//    }\n\n//    assertPass(\"Graph didn't crash after operator =\");\n//}\n"
  },
  {
    "path": "Archived/Autograder_QtCreatorProject/src/test/collection-test-common.h",
    "content": "/*\n * Common helper functions used by collection tests.\n * @version 2016/10/22\n * - initial version\n */\n\n#ifndef _collection_test_common_h\n#define _collection_test_common_h\n\n#include <initializer_list>\n#include <iostream>\n#include <sstream>\n#include <string>\n#include <utility>\n#include \"assertions.h\"\n#include \"set.h\"\n\ntemplate <typename CollectionType, typename T>\nvoid assertCollection(std::string message,\n                      std::initializer_list<T> expectedList,\n                      const CollectionType& collection,\n                      bool checkOrder = true) {\n    if (checkOrder) {\n        CollectionType copy(expectedList);\n        assertEqualsCollection(\"Collections must be equal\", copy, collection);\n    } else {\n        // just needs to contain the same elements in some order\n        Set<T> expected(expectedList);\n        Set<T> actual;\n        for (auto element : collection) {\n            actual.add(element);\n        }\n        assertEqualsCollection(\"Collections must be equal\", expected, actual);\n    }\n    assertEquals(message + \": size of collection\", (int) expectedList.size(), collection.size());\n}\n\ntemplate <typename MapType, typename K, typename V>\nvoid assertMap(std::string message, std::initializer_list<std::pair<const K, V>> expected,\n               const MapType& map,\n               bool checkOrder = true) {\n    if (checkOrder) {\n        MapType copy(expected);\n        assertEqualsCollection(\"Collections must be equal\", copy, map);\n    } else {\n        // just needs to contain the same key/value pairs in some order\n        Set<K> expectedKeys;\n        Set<V> expectedValues;\n        Set<K> actualKeys;\n        Set<V> actualValues;\n        for (auto pair : expected) {\n            expectedKeys.add(pair.first);\n            expectedValues.add(pair.second);\n        }\n        for (auto key : map) {\n            actualKeys.add(key);\n            actualValues.add(map.get(key));\n        }\n        assertEqualsCollection(\"Keys must be equal\", expectedKeys, actualKeys);\n        assertEqualsCollection(\"Values must be equal\", expectedValues, actualValues);\n    }\n    assertEquals(message + \": size of collection\", (int) expected.size(), map.size());\n}\n\n#endif // _collection_test_common_h\n"
  },
  {
    "path": "Archived/Autograder_QtCreatorProject/src/test/collection-test-dawglexicon.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib collection functionality.\n */\n\n#include \"testcases.h\"\n#include \"dawglexicon.h\"\n#include \"hashcode.h\"\n#include \"hashset.h\"\n#include \"queue.h\"\n#include \"assertions.h\"\n#include \"gtest-marty.h\"\n#include <initializer_list>\n#include <iostream>\n#include <sstream>\n#include <string>\n\nTEST_CATEGORY(DawgLexiconTests, \"DawgLexicon tests\");\n\nTIMED_TEST(DawgLexiconTests, basicTest_DawgLexicon, TEST_TIMEOUT_DEFAULT) {\n    std::initializer_list<std::string> words = {\n        \"a\",\n        \"ab\",\n        \"aab\",\n        \"aaab\",\n        \"aardvark\",\n        \"b\",\n        \"banana\"\n    };\n    std::initializer_list<std::string> badWords = {\n        \"abb\",\n        \"ad\",\n        \"and\",\n        \"aaardvark\",\n        \"aardvarks\",\n    };\n    std::initializer_list<std::string> badPrefixes = {\n        \"aaaa\",\n        \"abb\",\n        \"aardvarz\",\n        \"bb\",\n        \"bananas\",\n        \"c\",\n        \"r\",\n        \"z\"\n    };\n\n    DawgLexicon dawg;\n    for (std::string word : words) {\n        dawg.add(word);\n    }\n    assertEquals(\"DawgLexicon size\", (int) words.size(), dawg.size());\n\n    for (std::string word : words) {\n        assertTrue(\"DawgLexicon contains \" + word, dawg.contains(word));\n    }\n\n    for (std::string word : badWords) {\n        assertFalse(\"DawgLexicon contains \" + word, dawg.contains(word));\n    }\n\n    for (std::string word : words) {\n        for (int i = 0; i < (int) word.length(); i++) {\n            std::string prefix = word.substr(0, i);\n            assertTrue(\"DawgLexicon containsPrefix \" + word, dawg.containsPrefix(word));\n        }\n    }\n\n    for (std::string word : badPrefixes) {\n        assertFalse(\"DawgLexicon containsPrefix \" + word, dawg.containsPrefix(word));\n    }\n}\n\nTIMED_TEST(DawgLexiconTests, compareTest_DawgLexicon, TEST_TIMEOUT_DEFAULT) {\n    DawgLexicon dawg;\n    dawg.add(\"a\");\n    dawg.add(\"b\");\n    dawg.add(\"c\");\n    DawgLexicon dawg2;\n    dawg2.add(\"a\");\n    dawg2.add(\"ab\");\n    dawg2.add(\"bc\");\n    DawgLexicon dawg3;\n    compareTestHelper(dawg, dawg2, \"DawgLexicon\", /* compareTo */ 1);\n    compareTestHelper(dawg2, dawg, \"DawgLexicon\", /* compareTo */ -1);\n    compareTestHelper(dawg, dawg, \"DawgLexicon\", /* compareTo */ 0);\n\n    Set<DawgLexicon> sdlex {dawg, dawg2, dawg3};\n    assertEqualsString(\"sdlex\", \"{{}, {\\\"a\\\", \\\"ab\\\", \\\"bc\\\"}, {\\\"a\\\", \\\"b\\\", \\\"c\\\"}}\", sdlex.toString());\n}\n\nTIMED_TEST(DawgLexiconTests, forEachTest_DawgLexicon, TEST_TIMEOUT_DEFAULT) {\n    DawgLexicon dlex;\n    dlex.add(\"a\");\n    dlex.add(\"cc\");\n    dlex.add(\"bbb\");\n    Queue<std::string> expected {\"a\", \"bbb\", \"cc\"};\n    for (std::string word : dlex) {\n        std::string exp = expected.dequeue();\n        assertEqualsString(\"DawgLexicon foreach\", exp, word);\n    }\n}\n\nTIMED_TEST(DawgLexiconTests, frontBackTest_DawgLexicon, TEST_TIMEOUT_DEFAULT) {\n    DawgLexicon dlex {\"apple\", \"apricot\", \"banana\", \"zebra\"};\n    assertEqualsString(\"DawgLexicon front\", \"apple\", dlex.front());\n    // assertEqualsString(\"DawgLexicon back\",  \"zebra\", dlex.back());\n}\n\nTIMED_TEST(DawgLexiconTests, hashCodeTest_DawgLexicon, TEST_TIMEOUT_DEFAULT) {\n    DawgLexicon dlex;\n    dlex.add(\"a\");\n    dlex.add(\"abc\");\n    assertEqualsInt(\"hashcode of self dawglexicon\", hashCode(dlex), hashCode(dlex));\n\n    DawgLexicon copy = dlex;\n    assertEqualsInt(\"hashcode of copy dawglexicon\", hashCode(dlex), hashCode(copy));\n\n    DawgLexicon dlex2;   // empty\n\n    // shouldn't add two copies of same lexicon\n    HashSet<DawgLexicon> hashdawg {dlex, copy, dlex2};\n    assertEqualsInt(\"hashset of dawglexicon size\", 2, hashdawg.size());\n}\n\nTIMED_TEST(DawgLexiconTests, initializerListTest_DawgLexicon, TEST_TIMEOUT_DEFAULT) {\n    std::initializer_list<std::string> lexlist = {\"sixty\", \"seventy\"};\n\n    DawgLexicon dlex {\"ten\", \"twenty\", \"thirty\"};\n    assertEqualsString(\"init list DawgLexicon\", \"{\\\"ten\\\", \\\"thirty\\\", \\\"twenty\\\"}\", dlex.toString());\n    assertEqualsInt(\"init list DawgLexicon size\", 3, dlex.size());\n    assertTrue(\"init list DawgLexicon contains ten\", dlex.contains(\"ten\"));\n    assertTrue(\"init list DawgLexicon contains twenty\", dlex.contains(\"twenty\"));\n    assertTrue(\"init list DawgLexicon contains thirty\", dlex.contains(\"thirty\"));\n    assertFalse(\"init list DawgLexicon contains forty\", dlex.contains(\"forty\"));\n    assertFalse(\"init list DawgLexicon contains fifty\", dlex.contains(\"fifty\"));\n\n    dlex += {\"forty\", \"fifty\"};\n    assertEqualsString(\"after += DawgLexicon\", \"{\\\"fifty\\\", \\\"forty\\\", \\\"ten\\\", \\\"thirty\\\", \\\"twenty\\\"}\", dlex.toString());\n    assertEqualsInt(\"after += DawgLexicon size\", 5, dlex.size());\n    assertTrue(\"init list DawgLexicon contains ten\", dlex.contains(\"ten\"));\n    assertTrue(\"init list DawgLexicon contains twenty\", dlex.contains(\"twenty\"));\n    assertTrue(\"init list DawgLexicon contains thirty\", dlex.contains(\"thirty\"));\n    assertTrue(\"init list DawgLexicon contains forty\", dlex.contains(\"forty\"));\n    assertTrue(\"init list DawgLexicon contains fifty\", dlex.contains(\"fifty\"));\n    assertFalse(\"init list DawgLexicon contains sixty\", dlex.contains(\"sixty\"));\n    assertFalse(\"init list DawgLexicon contains seventy\", dlex.contains(\"seventy\"));\n\n    DawgLexicon dlex2 = (dlex + lexlist);\n    assertEqualsString(\"after += DawgLexicon\", \"{\\\"fifty\\\", \\\"forty\\\", \\\"ten\\\", \\\"thirty\\\", \\\"twenty\\\"}\", dlex.toString());\n    assertEqualsInt(\"after + DawgLexicon size\", 5, dlex.size());\n    assertTrue(\"init list DawgLexicon contains ten\", dlex.contains(\"ten\"));\n    assertTrue(\"init list DawgLexicon contains twenty\", dlex.contains(\"twenty\"));\n    assertTrue(\"init list DawgLexicon contains thirty\", dlex.contains(\"thirty\"));\n    assertTrue(\"init list DawgLexicon contains forty\", dlex.contains(\"forty\"));\n    assertTrue(\"init list DawgLexicon contains fifty\", dlex.contains(\"fifty\"));\n    assertFalse(\"init list DawgLexicon contains sixty\", dlex.contains(\"sixty\"));\n    assertFalse(\"init list DawgLexicon contains seventy\", dlex.contains(\"seventy\"));\n\n    assertEqualsString(\"after + DawgLexicon 2\", \"{\\\"fifty\\\", \\\"forty\\\", \\\"seventy\\\", \\\"sixty\\\", \\\"ten\\\", \\\"thirty\\\", \\\"twenty\\\"}\", dlex2.toString());\n    assertEqualsInt(\"after + DawgLexicon 2 size\", 7, dlex2.size());\n    assertTrue(\"init list DawgLexicon contains ten\", dlex2.contains(\"ten\"));\n    assertTrue(\"init list DawgLexicon contains twenty\", dlex2.contains(\"twenty\"));\n    assertTrue(\"init list DawgLexicon contains thirty\", dlex2.contains(\"thirty\"));\n    assertTrue(\"init list DawgLexicon contains forty\", dlex2.contains(\"forty\"));\n    assertTrue(\"init list DawgLexicon contains fifty\", dlex2.contains(\"fifty\"));\n    assertTrue(\"init list DawgLexicon contains sixty\", dlex2.contains(\"sixty\"));\n    assertTrue(\"init list DawgLexicon contains seventy\", dlex2.contains(\"seventy\"));\n}\n\n#ifdef SPL_THROW_ON_INVALID_ITERATOR\nTIMED_TEST(DawgLexiconTests, iteratorVersionTest_DawgLexicon, TEST_TIMEOUT_DEFAULT) {\n    DawgLexicon lex {\"ten\", \"twenty\", \"thirty\", \"forty\"};\n    try {\n        for (std::string s : lex) {\n            if (s.length() % 2 == 0) {\n                lex.add(\"hi\");\n            }\n        }\n        assertFail(\"should not get to end of test; should throw exception before now\");\n    } catch (ErrorException ex) {\n        assertPass(\"threw exception successfully\");\n    }\n}\n#endif // SPL_THROW_ON_INVALID_ITERATOR\n"
  },
  {
    "path": "Archived/Autograder_QtCreatorProject/src/test/collection-test-deque.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib collection functionality.\n */\n\n#include \"testcases.h\"\n#include \"deque.h\"\n#include \"hashcode.h\"\n#include \"hashset.h\"\n#include \"queue.h\"\n#include \"assertions.h\"\n#include \"collection-test-common.h\"\n#include \"gtest-marty.h\"\n#include <initializer_list>\n#include <iostream>\n#include <sstream>\n#include <string>\n\nTEST_CATEGORY(DequeTests, \"Deque tests\");\n\n/*\n * Force instantiation of Deque on a few types to make sure we didn't miss anything.\n * These types must be comparable and hashable to avoid instaniating functions we\n * can't support.\n */\ntemplate class Deque<int>;\ntemplate class Deque<bool>;\ntemplate class Deque<std::string>;\n\nTIMED_TEST(DequeTests, compareTest_Deque, TEST_TIMEOUT_DEFAULT) {\n    Deque<std::string> deq;\n    deq.add(\"a\");\n    deq.add(\"b\");\n    deq.add(\"c\");\n    Deque<std::string> deq2;\n    deq2.add(\"a\");\n    deq2.add(\"ab\");\n    deq2.add(\"bc\");\n    Deque<std::string> deq3;\n    compareTestHelper(deq, deq2, \"Deque\", /* compareTo */ 1);\n    compareTestHelper(deq2, deq, \"Deque\", /* compareTo */ -1);\n    compareTestHelper(deq, deq, \"Deque\", /* compareTo */ 0);\n    Set<Deque<std::string> > sdeque {deq, deq2, deq3};\n    assertEqualsString(\"sdeque\", \"{{}, {\\\"a\\\", \\\"ab\\\", \\\"bc\\\"}, {\\\"a\\\", \\\"b\\\", \\\"c\\\"}}\", sdeque.toString());\n}\n\nTIMED_TEST(DequeTests, forEachTest_Deque, TEST_TIMEOUT_DEFAULT) {\n    Deque<int> deq;\n    deq.addBack(1);\n    deq.addFront(2);\n    deq.addBack(3);\n    deq.addFront(4);\n\n    assertCollection(\"Deque foreach\", {4, 2, 1, 3}, deq);\n}\n\nTIMED_TEST(DequeTests, frontBackTest_Deque, TEST_TIMEOUT_DEFAULT) {\n    Deque<int> deq {10, 20, 30, 40};\n    assertEqualsInt(\"Deque front\", 10, deq.front());\n    assertEqualsInt(\"Deque back\", 40, deq.back());\n}\n\nTIMED_TEST(DequeTests, hashCodeTest_Deque, TEST_TIMEOUT_DEFAULT) {\n    Deque<int> deq;\n    deq.addBack(1);\n    deq.addFront(2);\n    deq.addBack(3);\n    deq.addFront(4);\n    assertEqualsInt(\"hashcode of self Deque\", hashCode(deq), hashCode(deq));\n\n    Deque<int> copy = deq;\n    assertEqualsInt(\"hashcode of copy Deque\", hashCode(deq), hashCode(copy));\n\n    Deque<int> empty;\n\n    HashSet<Deque<int> > hashdeq {deq, copy, empty, empty};\n    assertEqualsInt(\"hashset of Deque size\", 2, hashdeq.size());\n}\n\nTIMED_TEST(DequeTests, initializerListTest_Deque, TEST_TIMEOUT_DEFAULT) {\n    Deque<int> deque {10, 20, 30};\n    assertEqualsString(\"deque initializer list\", \"{10, 20, 30}\", deque.toString());\n}\n\n#ifdef SPL_THROW_ON_INVALID_ITERATOR\nTIMED_TEST(DequeTests, iteratorVersionTest_Deque, TEST_TIMEOUT_DEFAULT) {\n    Deque<int> deque {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};\n    try {\n        for (int n : deque) {\n            if (n % 2 == 0) {\n                deque.dequeueBack();\n            }\n        }\n        assertFail(\"should not get to end of test; should throw exception before now\");\n    } catch (ErrorException ex) {\n        assertPass(\"threw exception successfully\");\n    }\n}\n#endif // SPL_THROW_ON_INVALID_ITERATOR\n"
  },
  {
    "path": "Archived/Autograder_QtCreatorProject/src/test/collection-test-graph.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib collection functionality.\n */\n\n#include \"testcases.h\"\n#include \"graph.h\"\n#include \"hashcode.h\"\n#include \"hashset.h\"\n#include \"queue.h\"\n#include \"assertions.h\"\n#include \"gtest-marty.h\"\n#include <initializer_list>\n#include <iostream>\n#include <sstream>\n#include <string>\n\nTEST_CATEGORY(GraphTests, \"Graph tests\");\n\n// for testing Graph class\nstruct DumbNode;\nstruct DumbEdge;\n\nstruct DumbNode {\n    std::string name;\n    Set<DumbEdge*> arcs;\n    double cost;\n};\n\nstruct DumbEdge {\n    DumbNode* start;\n    DumbNode* finish;\n    double cost;\n};\n\nTIMED_TEST(GraphTests, basicTest_Graph, TEST_TIMEOUT_DEFAULT) {\n    Graph<DumbNode, DumbEdge> graph;\n    graph.addNode(\"a\");\n    graph.addNode(\"b\");\n    graph.addNode(\"c\");\n    graph.addNode(\"d\");\n    graph.addNode(\"e\");\n    graph.addArc(\"a\", \"b\");\n    graph.addArc(\"a\", \"d\");\n    graph.addArc(\"b\", \"c\");\n    graph.addArc(\"b\", \"d\");\n    graph.addArc(\"c\", \"b\");\n    graph.addArc(\"c\", \"e\");\n\n    Graph<DumbNode, DumbEdge> copy = graph;\n\n    assertEqualsInt(\"graph size\", 5, graph.size());\n    assertEqualsInt(\"graph node count\", 5, graph.getNodeSet().size());\n    assertEqualsInt(\"graph arc count\", 6, graph.getArcSet().size());\n\n    assertNotNull(\"graph contains a\", graph.getNode(\"a\"));\n    assertNotNull(\"graph contains b\", graph.getNode(\"b\"));\n    assertNotNull(\"graph contains c\", graph.getNode(\"c\"));\n    assertNotNull(\"graph contains d\", graph.getNode(\"d\"));\n    assertNotNull(\"graph contains e\", graph.getNode(\"e\"));\n    assertNull(\"graph contains f\", graph.getNode(\"f\"));\n    assertNull(\"graph contains g\", graph.getNode(\"g\"));\n\n    graph.removeArc(\"a\", \"b\");\n    assertEqualsInt(\"graph arc count\", 5, graph.getArcSet().size());\n\n    graph.removeNode(\"b\");\n    assertEqualsInt(\"graph node count\", 4, graph.getNodeSet().size());\n    assertEqualsInt(\"graph arc count\", 2, graph.getArcSet().size());\n\n    graph = copy;\n    graph.clear();\n    assertEqualsInt(\"graph size\", 0, graph.size());\n    assertEqualsInt(\"graph node count\", 0, graph.getNodeSet().size());\n    assertEqualsInt(\"graph arc count\", 0, graph.getArcSet().size());\n}\n\nTIMED_TEST(GraphTests, compareTest_Graph, TEST_TIMEOUT_DEFAULT) {\n    Graph<DumbNode, DumbEdge> graph;\n    graph.addNode(\"a\");\n    graph.addNode(\"b\");\n    graph.addNode(\"c\");\n    graph.addNode(\"d\");\n    graph.addNode(\"e\");\n    graph.addArc(\"a\", \"b\");\n    graph.addArc(\"a\", \"d\");\n    graph.addArc(\"b\", \"c\");\n    graph.addArc(\"b\", \"d\");\n    graph.addArc(\"c\", \"b\");\n    graph.addArc(\"c\", \"e\");\n\n    Graph<DumbNode, DumbEdge> graph2;\n    graph2.addNode(\"a\");\n    graph2.addNode(\"b\");\n    graph2.addNode(\"c\");\n    graph2.addNode(\"d\");\n    graph2.addNode(\"e\");\n    graph2.addNode(\"f\");\n    graph2.addArc(\"a\", \"b\");\n    graph2.addArc(\"a\", \"d\");\n    graph2.addArc(\"b\", \"c\");\n    graph2.addArc(\"b\", \"d\");\n    graph2.addArc(\"c\", \"b\");\n    graph2.addArc(\"b\", \"e\");\n\n    Graph<DumbNode, DumbEdge> graph3;\n\n    compareTestHelper(graph, graph2, \"Graph\", /* compareTo */ -1);\n    compareTestHelper(graph, graph3, \"Graph\", /* compareTo */  1);\n    compareTestHelper(graph2, graph, \"Graph\", /* compareTo */  1);\n    compareTestHelper(graph, graph, \"Graph\", /* compareTo */ 0);\n\n    Set<Graph<DumbNode, DumbEdge> > sgraph {graph, graph2, graph3};\n    assertEqualsString(\"sgraph\", \"{{}, {a, b, c, d, e, a -> b, a -> d, b -> c, b -> d, c -> b, c -> e}, {a, b, c, d, e, f, a -> b, a -> d, b -> c, b -> d, b -> e, c -> b}}\", sgraph.toString());\n}\n\nTIMED_TEST(GraphTests, forEachTest_Graph, TEST_TIMEOUT_DEFAULT) {\n    Graph<DumbNode, DumbEdge> graph;\n    graph.addNode(\"a\");\n    graph.addNode(\"b\");\n    graph.addNode(\"c\");\n    graph.addNode(\"d\");\n    graph.addNode(\"e\");\n    graph.addArc(\"a\", \"b\");\n    graph.addArc(\"a\", \"d\");\n    graph.addArc(\"b\", \"c\");\n    graph.addArc(\"b\", \"d\");\n    graph.addArc(\"c\", \"b\");\n    graph.addArc(\"c\", \"e\");\n    Queue<std::string> expected {\"a\", \"b\", \"c\", \"d\", \"e\"};\n    for (DumbNode* node : graph) {\n        std::string exp = expected.dequeue();\n        assertEqualsString(\"Graph foreach node name\", exp, node->name);\n    }\n}\n\nTIMED_TEST(GraphTests, frontBackTest_Graph, TEST_TIMEOUT_DEFAULT) {\n    Graph<DumbNode, DumbEdge> graph;\n    graph.addNode(\"a\");\n    graph.addNode(\"b\");\n    graph.addNode(\"c\");\n    graph.addNode(\"d\");\n    graph.addNode(\"e\");\n    graph.addArc(\"a\", \"b\");\n    graph.addArc(\"a\", \"d\");\n    graph.addArc(\"b\", \"c\");\n    graph.addArc(\"b\", \"d\");\n    graph.addArc(\"c\", \"b\");\n    graph.addArc(\"c\", \"e\");\n    assertEqualsString(\"Graph front\", \"a\", graph.front()->name);\n    assertEqualsString(\"Graph back\",  \"e\", graph.back()->name);\n}\n\nTIMED_TEST(GraphTests, hashCodeTest_Graph, TEST_TIMEOUT_DEFAULT) {\n    Graph<DumbNode, DumbEdge> graph;\n    graph.addNode(\"a\");\n    graph.addNode(\"b\");\n    graph.addNode(\"c\");\n    graph.addNode(\"d\");\n    graph.addNode(\"e\");\n    graph.addArc(\"a\", \"b\");\n    graph.addArc(\"a\", \"d\");\n    graph.addArc(\"b\", \"c\");\n    graph.addArc(\"b\", \"d\");\n    graph.addArc(\"c\", \"b\");\n    graph.addArc(\"c\", \"e\");\n    assertEqualsInt(\"hashcode of self cgraph\", hashCode(graph), hashCode(graph));\n\n    Graph<DumbNode, DumbEdge> copy = graph;\n    assertEqualsInt(\"hashcode of copy graph\", hashCode(graph), hashCode(copy));\n\n    Graph<DumbNode, DumbEdge> graph2;\n    graph2.addNode(\"a\");\n    graph2.addNode(\"b\");\n    graph2.addNode(\"c\");\n    graph2.addNode(\"d\");\n    graph2.addNode(\"e\");\n    graph2.addNode(\"f\");\n    graph2.addArc(\"a\", \"b\");\n    graph2.addArc(\"a\", \"d\");\n    graph2.addArc(\"b\", \"c\");\n    graph2.addArc(\"b\", \"d\");\n    graph2.addArc(\"c\", \"b\");\n    graph2.addArc(\"b\", \"e\");\n    assertNotEqualsInt(\"hashcode of unequal graph\", hashCode(graph), hashCode(graph2));\n\n    HashSet<Graph<DumbNode, DumbEdge> > hashgraph;\n    hashgraph.add(graph);\n    hashgraph.add(graph2);\n    assertEqualsInt(\"hashset of graph size\", 2, hashgraph.size());\n}\n\nTIMED_TEST(GraphTests, initializerListTest_Graph, TEST_TIMEOUT_DEFAULT) {\n    // TODO\n}\n\n#ifdef SPL_THROW_ON_INVALID_ITERATOR\nTIMED_TEST(GraphTests, iteratorVersionTest_Graph, TEST_TIMEOUT_DEFAULT) {\n    Graph<DumbNode, DumbEdge> graph;\n    graph.addNode(\"a\");\n    graph.addNode(\"b\");\n    graph.addNode(\"c\");\n    graph.addNode(\"d\");\n    graph.addNode(\"e\");\n    graph.addArc(\"a\", \"b\");\n    graph.addArc(\"a\", \"d\");\n    graph.addArc(\"b\", \"c\");\n    graph.addArc(\"b\", \"d\");\n    graph.addArc(\"c\", \"b\");\n    graph.addArc(\"c\", \"e\");\n\n    try {\n        for (DumbNode* v : graph) {\n            graph.removeNode(v);\n        }\n        assertFail(\"should not get to end of test; should throw exception before now\");\n    } catch (ErrorException ex) {\n        assertPass(\"threw exception successfully\");\n    }\n}\n#endif // SPL_THROW_ON_INVALID_ITERATOR\n"
  },
  {
    "path": "Archived/Autograder_QtCreatorProject/src/test/collection-test-grid.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib collection functionality.\n */\n\n#include \"testcases.h\"\n#include \"grid.h\"\n#include \"hashcode.h\"\n#include \"hashset.h\"\n#include \"queue.h\"\n#include \"assertions.h\"\n#include \"gtest-marty.h\"\n#include <initializer_list>\n#include <iostream>\n#include <sstream>\n#include <string>\n\nTEST_CATEGORY(GridTests, \"Grid tests\");\n\n/*\n * Force instantiation of the template on a type to ensure that we don't have anything\n * insidious lurking that just didn't get compiled.\n */\ntemplate class Grid<int>;\ntemplate class Grid<std::string>;\n\nTIMED_TEST(GridTests, compareTest_Grid, TEST_TIMEOUT_DEFAULT) {\n    Grid<int> grid1;\n    grid1.resize(2, 2);\n    Grid<int> grid2;\n    grid2.resize(2, 3);\n    Grid<int> grid3;\n    grid3.resize(3, 2);\n    Grid<int> grid4;\n\n    /* Comparison is lexicographic by rows, then cols, then\n     * elements.\n     */\n    compareTestHelper(grid1, grid2, \"Grid\", /* compareTo */ -1);\n    compareTestHelper(grid2, grid1, \"Grid\", /* compareTo */  1);\n    compareTestHelper(grid1, grid3, \"Grid\", /* compareTo */ -1);\n    compareTestHelper(grid3, grid1, \"Grid\", /* compareTo */  1);\n    compareTestHelper(grid2, grid3, \"Grid\", /* compareTo */ -1);\n    compareTestHelper(grid3, grid2, \"Grid\", /* compareTo */  1);\n    compareTestHelper(grid1, grid1, \"Grid\", /* compareTo */  0);\n\n    Set<Grid<int>> sgrid {grid1, grid2, grid3, grid4};\n    assertEqualsString(\"sgrid\", \"{{}, {{0, 0}, {0, 0}}, {{0, 0, 0}, {0, 0, 0}}, {{0, 0}, {0, 0}, {0, 0}}}\", sgrid.toString());\n}\n\nTIMED_TEST(GridTests, forEachTest_Grid, TEST_TIMEOUT_DEFAULT) {\n    Grid<int> grid(4, 2);\n    grid.fill(42);\n    grid[2][0] = 17;\n    grid[3][1] = 0;\n    Queue<int> expected {42, 42, 42, 42, 17, 42, 42, 0};\n    for (int n : grid) {\n        int exp = expected.dequeue();\n        assertEqualsInt(\"Grid foreach\", exp, n);\n    }\n}\n\nTIMED_TEST(GridTests, frontBackTest_Grid, TEST_TIMEOUT_DEFAULT) {\n    Grid<int> grid {{10, 20, 30}, {40, 50, 60}};\n    assertEqualsInt(\"Grid front\", 10, grid.front());\n    assertEqualsInt(\"Grid back\",  60, grid.back());\n}\n\nTIMED_TEST(GridTests, hashCodeTest_Grid, TEST_TIMEOUT_DEFAULT) {\n    Grid<int> grid(2, 3);\n    grid.fill(42);\n    assertEqualsInt(\"hashcode of self Grid\", hashCode(grid), hashCode(grid));\n\n    Grid<int> copy = grid;\n    assertEqualsInt(\"hashcode of copy Grid\", hashCode(grid), hashCode(copy));\n\n    Grid<int> empty;   // empty\n    HashSet<Grid<int> > hashgrid {grid, copy, empty, empty};\n\n    assertEqualsInt(\"hashset of Grid size\", 2, hashgrid.size());\n}\n\nTIMED_TEST(GridTests, initializerListTest_Grid, TEST_TIMEOUT_DEFAULT) {\n    Grid<int> grid {{10, 20, 30}, {40, 50, 60}};\n    assertEqualsInt(\"init list Grid numRows\", 2, grid.numRows());\n    assertEqualsInt(\"init list Grid numCols\", 3, grid.numCols());\n    assertEqualsInt(\"init list Grid size\", 6, grid.size());\n    assertEqualsInt(\"init list Grid[0][0]\", 10, grid[0][0]);\n    assertEqualsInt(\"init list Grid[0][1]\", 20, grid[0][1]);\n    assertEqualsInt(\"init list Grid[0][2]\", 30, grid[0][2]);\n    assertEqualsInt(\"init list Grid[1][0]\", 40, grid[1][0]);\n    assertEqualsInt(\"init list Grid[1][1]\", 50, grid[1][1]);\n    assertEqualsInt(\"init list Grid[1][2]\", 60, grid[1][2]);\n}\n\n#ifdef SPL_THROW_ON_INVALID_ITERATOR\nTIMED_TEST(GridTests, iteratorVersionTest_Grid, TEST_TIMEOUT_DEFAULT) {\n    Grid<int> grid {{10, 20, 30}, {40, 50, 60}};\n    try {\n        for (int n : grid) {\n            if (n % 2 == 0) {\n                grid.fill(42);\n            }\n        }\n        assertFail(\"should not get to end of test; should throw exception before now\");\n    } catch (ErrorException ex) {\n        assertPass(\"threw exception successfully\");\n    }\n}\n#endif // SPL_THROW_ON_INVALID_ITERATOR\n\nTIMED_TEST(GridTests, mapAllTest_Grid, TEST_TIMEOUT_DEFAULT) {\n    Grid<int> rowSort = {\n        { 0, 1, 2 },\n        { 3, 4, 5 },\n        { 6, 7, 8 }\n    };\n\n    int lastRowVal = -1;\n    rowSort.mapAll([&](auto val) {\n        assertTrue(\"Visits values in row-major order\", lastRowVal < val);\n        lastRowVal = val;\n    });\n\n    Grid<int> colSort = {\n        { 0, 3, 6 },\n        { 1, 4, 7 },\n        { 2, 5, 8 }\n    };\n\n    int lastColVal = -1;\n    colSort.mapAllColumnMajor([&](auto val) {\n        assertTrue(\"Visits values in col-major order\", lastColVal < val);\n        lastColVal = val;\n    });\n}\n\nTIMED_TEST(GridTests, randomElementTest_Grid, TEST_TIMEOUT_DEFAULT) {\n    Map<std::string, int> counts;\n    int RUNS = 200;\n\n    std::initializer_list<std::string> list {\"a\", \"b\", \"c\", \"d\", \"e\", \"f\"};\n\n    Grid<std::string> grid;\n    grid.resize(2, 3);\n    grid[0][0] = \"a\";\n    grid[0][1] = \"b\";\n    grid[0][2] = \"c\";\n    grid[1][0] = \"d\";\n    grid[1][1] = \"e\";\n    grid[1][2] = \"f\";\n    for (int i = 0; i < RUNS; i++) {\n        std::string s = randomElement(grid);\n        counts[s]++;\n    }\n\n    for (const std::string& s : list) {\n        assertTrue(\"must choose \" + s + \" sometimes\", counts[s] > 0);\n    }\n}\n"
  },
  {
    "path": "Archived/Autograder_QtCreatorProject/src/test/collection-test-hashmap.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib collection functionality.\n */\n\n#include \"testcases.h\"\n#include \"hashmap.h\"\n#include \"hashcode.h\"\n#include \"hashset.h\"\n#include \"queue.h\"\n#include \"assertions.h\"\n#include \"collection-test-common.h\"\n#include \"gtest-marty.h\"\n#include \"strlib.h\"\n#include <initializer_list>\n#include <iostream>\n#include <sstream>\n#include <string>\n\nTEST_CATEGORY(HashMapTests, \"HashMap tests\");\n\n/*\n * Force instantiation of HashMap on a few types to make sure we didn't miss anything.\n * The key types must be hashable.\n */\ntemplate class HashMap<int, int>;\ntemplate class HashMap<std::string, int>;\n\n/*\n * Uncomment this code to include tests that the nice error messages for types missing\n * hashing show up properly.\n */\n#if 0\nvoid causeCompilerError() {\n    struct Bad {};\n\n    HashMap<Bad, int> bad; // Should trigger a static assertion rather than a long chain of sorrows\n}\n#endif\n\nTIMED_TEST(HashMapTests, forEachTest_HashMap, TEST_TIMEOUT_DEFAULT) {\n    HashMap<std::string, int> hmap;\n    hmap[\"a\"] = 1;\n    hmap[\"bbbb\"] = 2;\n    hmap[\"zz\"] = 26;\n    Queue<std::string> expectedKeys {\"a\", \"bbbb\", \"zz\"};\n    Queue<int> expectedValues {1, 2, 26};\n    while (!expectedKeys.isEmpty()) {\n        std::string key = expectedKeys.dequeue();\n        assertTrue(\"HashMap must contain key \" + key, hmap.containsKey(key));\n        int value = expectedValues.dequeue();\n        assertEqualsInt(\"HashMap[\" + key + \"] must equal \" + std::to_string(value), value, hmap[key]);\n    }\n}\n\nTIMED_TEST(HashMapTests, frontBackTest_HashMap, TEST_TIMEOUT_DEFAULT) {\n    HashMap<std::string, int> hmap {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}};\n\n    std::string front = hmap.front();\n    std::string back  = hmap.back();\n    if (front != \"a\" && front != \"b\" && front != \"c\") {\n        assertFail(\"HashMap front fail!\");\n    }\n    if ((back != \"a\" && back != \"b\" && back != \"c\") || (front == back)) {\n        assertFail(\"HashMap back fail!\");\n    }\n}\n\nTIMED_TEST(HashMapTests, initializerListTest_HashMap, TEST_TIMEOUT_DEFAULT) {\n    std::initializer_list<std::pair<const std::string, int>> pairlist = {{\"k\", 60}, {\"t\", 70}};\n    std::initializer_list<std::pair<const std::string, int>> pairlist2 = {{\"b\", 20}, {\"e\", 50}};\n    std::initializer_list<std::pair<const std::string, int>> expected;\n\n    HashMap<std::string, int> hmap {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}};\n    assertEqualsInt(\"init list HashMap get a\", 10, hmap.get(\"a\"));\n    assertEqualsInt(\"init list HashMap get b\", 20, hmap.get(\"b\"));\n    assertEqualsInt(\"init list HashMap get c\", 30, hmap.get(\"c\"));\n    assertEqualsInt(\"init list HashMap size\", 3, hmap.size());\n\n    hmap += {{\"d\", 40}, {\"e\", 50}};\n    expected = {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}, {\"d\", 40}, {\"e\", 50}};\n    assertMap(\"after +=\", expected, hmap);\n\n    HashMap<std::string, int> copy = hmap + pairlist;\n    expected = {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}, {\"d\", 40}, {\"e\", 50}};\n    assertMap(\"after + (shouldn't modify)\", expected, hmap);\n    expected = {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}, {\"d\", 40}, {\"e\", 50}, {\"k\", 60}, {\"t\", 70}};\n    // assertMap(\"after + copy\", expected, copy);\n\n    copy = hmap - pairlist2;\n    expected = {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}, {\"d\", 40}, {\"e\", 50}};\n    assertMap(\"after - (shouldn't modify)\", expected, hmap);\n    expected = {{\"a\", 10}, {\"c\", 30}, {\"d\", 40}};\n    assertMap(\"after - copy\", expected, copy);\n\n    copy = hmap * pairlist2;\n    expected = {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}, {\"d\", 40}, {\"e\", 50}};\n    assertMap(\"after * (shouldn't modify)\", expected, hmap);\n    expected = {{\"b\", 20}, {\"e\", 50}};\n    assertMap(\"after * copy\", expected, copy);\n\n    hmap -= {{\"d\", 40}, {\"e\", 50}};\n    expected = {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}};\n    assertMap(\"after -=\", expected, hmap);\n\n    hmap *= pairlist2;\n    expected = {{\"b\", 20}};\n    assertMap(\"after *=\", expected, hmap);\n}\n\nTIMED_TEST(HashMapTests, iteratorBasic_HashMap, TEST_TIMEOUT_DEFAULT) {\n    HashMap<std::string, int> map;\n\n    map[\"A\"] = 1;\n    map[\"B\"] = 2;\n    map[\"C\"] = 3;\n    map[\"D\"] = 4;\n\n    assertEquals(\"Map should have all elements present.\", map.size(), 4);\n\n    Map<std::string, int> ref;\n\n    for (const auto& key: map) {\n        ref[key] = map[key];\n    }\n\n    assertEquals(\"Reference map should have all elements present.\", ref.size(), 4);\n    assertTrue(\"Reference map should contain A.\", ref.containsKey(\"A\"));\n    assertTrue(\"Reference map should have A = 1.\", ref.get(\"A\") == 1);\n    assertTrue(\"Reference map should contain B.\", ref.containsKey(\"B\"));\n    assertTrue(\"Reference map should have B = 2.\", ref.get(\"B\") == 2);\n    assertTrue(\"Reference map should contain C.\", ref.containsKey(\"C\"));\n    assertTrue(\"Reference map should have C = 3.\", ref.get(\"C\") == 3);\n    assertTrue(\"Reference map should contain D.\", ref.containsKey(\"D\"));\n    assertTrue(\"Reference map should have D = 4.\", ref.get(\"D\") == 4);\n}\n\n#ifdef SPL_THROW_ON_INVALID_ITERATOR\nTIMED_TEST(HashMapTests, iteratorVersionTest_HashMap, TEST_TIMEOUT_DEFAULT) {\n    HashMap<std::string, int> map {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}, {\"d\", 40}, {\"e\", 50}, {\"f\", 60}};\n    try {\n        for (std::string key : map) {\n            int val = map[key];\n            if (val % 2 == 0) {\n                map.remove(key);\n            }\n        }\n        assertFail(\"should not get to end of test; should throw exception before now\");\n    } catch (ErrorException ex) {\n        assertPass(\"threw exception successfully\");\n    }\n}\n#endif // SPL_THROW_ON_INVALID_ITERATOR\n\nTIMED_TEST(HashMapTests, randomKeyTest_HashMap, TEST_TIMEOUT_DEFAULT) {\n    Map<std::string, int> counts;\n    int RUNS = 200;\n\n    std::initializer_list<std::string> list {\"a\", \"b\", \"c\", \"d\", \"e\", \"f\"};\n\n    HashMap<std::string, int> hmap;\n    hmap[\"a\"] = 50;\n    hmap[\"b\"] = 40;\n    hmap[\"c\"] = 30;\n    hmap[\"d\"] = 20;\n    hmap[\"e\"] = 10;\n    hmap[\"f\"] =  0;\n    for (int i = 0; i < RUNS; i++) {\n        std::string s = randomKey(hmap);\n        counts[s]++;\n    }\n\n    for (const std::string& s : list) {\n        assertTrue(\"must choose \" + s + \" sometimes\", counts[s] > 0);\n    }\n}\n\nTIMED_TEST(HashMapTests, streamExtractTest_HashMap2bad, TEST_TIMEOUT_DEFAULT) {\n    HashMap<int, int> hm;\n    std::istringstream hmstreambad(\"1:1, 2, 33}\");\n    bool result = bool(hmstreambad >> hm);\n    assertFalse(\"operator >> on bad hashmap\", result);\n}\n"
  },
  {
    "path": "Archived/Autograder_QtCreatorProject/src/test/collection-test-hashset.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib collection functionality.\n */\n\n#include \"testcases.h\"\n#include \"hashcode.h\"\n#include \"hashset.h\"\n#include \"map.h\"\n#include \"queue.h\"\n#include \"stl.h\"\n#include \"assertions.h\"\n#include \"collection-test-common.h\"\n#include \"gtest-marty.h\"\n#include <initializer_list>\n#include <iostream>\n#include <sstream>\n#include <string>\n#include <numeric>\n\nTEST_CATEGORY(HashSetTests, \"HashSet tests\");\n\n/*\n * Force instantiation of HashSet on a few types to make sure we didn't miss anything.\n * The types must be hashable.\n */\ntemplate class stanfordcpplib::collections::GenericSet<stanfordcpplib::collections::HashSetTraits<int>>;\ntemplate class stanfordcpplib::collections::GenericSet<stanfordcpplib::collections::HashSetTraits<std::string>>;\n\n/*\n * Uncomment this code to include tests that the nice error messages for types missing\n * hashing show up properly.\n */\n#if 0\nvoid causeCompilerError() {\n    struct Bad {};\n\n    HashSet<Bad> bad; // Should trigger a static assertion rather than a long chain of sorrows\n}\n#endif\n\n/*\n * Uncomment this code to check whether nice error messages show up when you try to initialize\n * a HashSet improperly.\n */\n#if 0\nvoid badInitializationError() {\n    HashSet<std::string> mySet = \"137\";\n}\n#endif\n\nTIMED_TEST(HashSetTests, commaOperatorTest_HashSet, TEST_TIMEOUT_DEFAULT) {\n    /* Confirm that commas work properly. */\n    HashSet<int> one = {1, 2, 3};\n\n    /* Begin by adding some elements in. */\n    one += 3, 4, 5; // {1, 2, 3, 4, 5}\n    assertEqualsInt(\"elements were added\", one.size(), 5);\n\n    /* Now remove some elements. */\n    one -= 3, 4, 5; // {1, 2}\n    assertEqualsInt(\"elements were removed\", one.size(), 2);\n\n    /* Now add a collection of elements. */\n    HashSet<int> two = {3, 4, 5};\n    one += two, 6; // {1, 2, 3, 4, 5, 6}\n    assertEqualsInt(\"elements were added\", one.size(), 6);\n\n    /* Now remove a collection of elements. */\n    one -= two, 6; // {1, 2}\n    assertEqualsInt(\"elements were removed\", one.size(), 2);\n}\n\nTIMED_TEST(HashSetTests, forEachTest_HashSet, TEST_TIMEOUT_DEFAULT) {\n    HashSet<int> hset {40, 20, 10, 30};\n    Set<int> expected {10, 20, 30, 40};\n    for (int n : hset) {\n        assertTrue(\"HashSet must contain \" + std::to_string(n), expected.contains(n));\n    }\n}\n\nTIMED_TEST(HashSetTests, frontBackTest_HashSet, TEST_TIMEOUT_DEFAULT) {\n    HashSet<int> hset {10, 20, 30, 40};\n    int front = hset.front();\n    int back = hset.back();\n    if (front != 10 && front != 20 && front != 30 && front != 40) {\n        assertFail(\"HashSet front fail!\");\n    }\n    if ((back != 10 && back != 20 && back != 30 && back != 40) || (front == back)) {\n        assertFail(\"HashSet back fail!\");\n    }\n}\n\nTIMED_TEST(HashSetTests, hashCodeTest_HashSet, TEST_TIMEOUT_DEFAULT) {\n    HashSet<int> hset;\n    hset.add(69);\n    hset.add(42);\n    assertEqualsInt(\"hashcode of self HashSet\", hashCode(hset), hashCode(hset));\n\n    HashSet<int> copy = hset;\n    assertEqualsInt(\"hashcode of copy HashSet\", hashCode(hset), hashCode(copy));\n\n    HashSet<int> empty;\n    HashSet<HashSet<int> > hashhashset {hset, copy, empty, empty};\n    assertEqualsInt(\"hashset of Hashset size\", 2, hashhashset.size());\n}\n\nTIMED_TEST(HashSetTests, initializerListTest_HashSet, TEST_TIMEOUT_DEFAULT) {\n    auto list = {60, 70};\n    auto list2 = {20, 50};\n\n    HashSet<int> hset {10, 20, 30};\n    assertCollection(\"initial\", {10, 20, 30}, hset);\n\n    hset += {40, 50};\n    assertCollection(\"after +=\", {10, 20, 30, 40, 50}, hset);\n\n    HashSet<int> copy = hset + list;\n    assertCollection(\"after + (shouldn't modify)\", {10, 20, 30, 40, 50}, hset);\n    assertCollection(\"after + copy\", {10, 20, 30, 40, 50, 60, 70}, copy);\n\n    copy = hset - list2;\n    assertCollection(\"after - (shouldn't modify)\", {10, 20, 30, 40, 50}, hset);\n    assertCollection(\"after - copy\", {10, 30, 40}, copy);\n\n    copy = hset * list2;\n    assertCollection(\"after * (shouldn't modify)\", {10, 20, 30, 40, 50}, hset);\n    assertCollection(\"after * copy\", {20, 50}, copy);\n\n    hset -= {20, 50};\n    assertCollection(\"after -=\", {10, 30, 40}, hset);\n    hset *= {0, 10, 40, 99};\n    assertCollection(\"after *=\", {10, 40}, hset);\n}\n\n#ifdef SPL_THROW_ON_INVALID_ITERATOR\nTIMED_TEST(HashSetTests, iteratorVersionTest_HashSet, TEST_TIMEOUT_DEFAULT) {\n    HashSet<int> set {1, 2, 3, 4, 1, 6, 1, 8, 2, 10};\n    try {\n        for (int n : set) {\n            if (n % 2 == 0) {\n                set.remove(n);\n            }\n        }\n        assertFail(\"should not get to end of test; should throw exception before now\");\n    } catch (ErrorException ex) {\n        assertPass(\"threw exception successfully\");\n    }\n}\n#endif // SPL_THROW_ON_INVALID_ITERATOR\n\nTIMED_TEST(HashSetTests, mapAllTest_HashSet, TEST_TIMEOUT_DEFAULT) {\n    HashSet<int> set {7, 5, 1, 2, 8};\n\n    int total = 0;\n    set.mapAll([&] (int value) {\n        total += value;\n    });\n\n    assertEqualsInt(\"mapAll produces correct sum.\", std::accumulate(set.begin(), set.end(), 0), total);\n}\n\nTIMED_TEST(HashSetTests, randomElementTest_HashSet, TEST_TIMEOUT_DEFAULT) {\n    Map<std::string, int> counts;\n    int RUNS = 200;\n\n    std::initializer_list<std::string> list {\"a\", \"b\", \"c\", \"d\", \"e\", \"f\"};\n\n    HashSet<std::string> hset(list);\n    for (int i = 0; i < RUNS; i++) {\n        std::string s = randomElement(hset);\n        counts[s]++;\n    }\n\n    for (const std::string& s : list) {\n        assertTrue(\"must choose \" + s + \" sometimes\", counts[s] > 0);\n    }\n}\n\nTIMED_TEST(HashSetTests, removeAndRetainTest_HashSet, TEST_TIMEOUT_DEFAULT) {\n    HashSet<int> all   = { 1, 2, 3, 4, 5, 6, 7, 8 };\n    HashSet<int> evens = {    2,    4,    6,    8,   10 };\n    HashSet<int> odds  = { 1,    3,    5,    7    };\n\n    all.removeAll(evens);\n    assertEqualsCollection(\"should just have odds left\", all, odds);\n\n    HashSet<int> primes   = { 2, 3, 5, 7, 11 };\n    HashSet<int> expected = { 3, 5, 7 };\n\n    all.retainAll(primes);\n    assertEqualsCollection(\"should have lost 1\", all, expected);\n}\n"
  },
  {
    "path": "Archived/Autograder_QtCreatorProject/src/test/collection-test-lexicon.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib collection functionality.\n */\n\n#include \"testcases.h\"\n#include \"lexicon.h\"\n#include \"hashcode.h\"\n#include \"hashset.h\"\n#include \"queue.h\"\n#include \"assertions.h\"\n#include \"collection-test-common.h\"\n#include \"gtest-marty.h\"\n#include <initializer_list>\n#include <iostream>\n#include <sstream>\n#include <string>\n\nTEST_CATEGORY(LexiconTests, \"Lexicon tests\");\n\nTIMED_TEST(LexiconTests, basicTest_Lexicon, TEST_TIMEOUT_DEFAULT) {\n    std::initializer_list<std::string> words = {\n        \"a\",\n        \"ab\",\n        \"aab\",\n        \"aaab\",\n        \"aardvark\",\n        \"b\",\n        \"banana\"\n    };\n    std::initializer_list<std::string> badWords = {\n        \"abb\",\n        \"ad\",\n        \"and\",\n        \"aaardvark\",\n        \"aardvarks\",\n    };\n    std::initializer_list<std::string> badPrefixes = {\n        \"aaaa\",\n        \"abb\",\n        \"aardvarz\",\n        \"bb\",\n        \"bananas\",\n        \"c\",\n        \"r\",\n        \"z\"\n    };\n\n    Lexicon lex;\n    for (std::string word : words) {\n        lex.add(word);\n    }\n    assertEquals(\"Lexicon size\", (int) words.size(), lex.size());\n\n    for (std::string word : words) {\n        assertTrue(\"Lexicon contains \" + word, lex.contains(word));\n    }\n\n    for (std::string word : badWords) {\n        assertFalse(\"Lexicon contains \" + word, lex.contains(word));\n    }\n\n    for (std::string word : words) {\n        for (int i = 0; i < (int) word.length(); i++) {\n            std::string prefix = word.substr(0, i);\n            assertTrue(\"Lexicon containsPrefix \" + word, lex.containsPrefix(word));\n        }\n    }\n\n    for (std::string word : badPrefixes) {\n        assertFalse(\"Lexicon containsPrefix \" + word, lex.containsPrefix(word));\n    }\n}\n\nTIMED_TEST(LexiconTests, compareTest_Lexicon, TEST_TIMEOUT_DEFAULT) {\n    Lexicon lex;\n    lex.add(\"a\");\n    lex.add(\"ab\");\n    lex.add(\"bc\");\n    Lexicon lex2;\n    lex2.add(\"a\");\n    lex2.add(\"b\");\n    lex2.add(\"c\");\n    Lexicon lex3;\n    compareTestHelper(lex, lex2, \"Lexicon\", /* compareTo */ -1);\n    compareTestHelper(lex2, lex, \"Lexicon\", /* compareTo */ 1);\n    compareTestHelper(lex, lex, \"Lexicon\", /* compareTo */ 0);\n\n    Set<Lexicon> slex {lex, lex2, lex3};\n    assertEqualsString(\"slex\", \"{{}, {\\\"a\\\", \\\"ab\\\", \\\"bc\\\"}, {\\\"a\\\", \\\"b\\\", \\\"c\\\"}}\", slex.toString());\n}\n\nTIMED_TEST(LexiconTests, forEachTest_Lexicon, TEST_TIMEOUT_DEFAULT) {\n    Lexicon lex;\n    lex.add(\"a\");\n    lex.add(\"aba\");\n    lex.add(\"cc\");\n    lex.add(\"bbb\");\n    lex.add(\"c\");\n    lex.add(\"bart\");\n    std::initializer_list<std::string> list {\"a\", \"aba\", \"bart\", \"bbb\", \"c\", \"cc\"};\n    assertCollection(\"foreach Lexicon\", list, lex);\n}\n\nTIMED_TEST(LexiconTests, frontBackTest_Lexicon, TEST_TIMEOUT_DEFAULT) {\n    Lexicon lex {\"apple\", \"apricot\", \"banana\", \"zebra\"};\n    assertEqualsString(\"Lexicon front\", \"apple\", lex.front());\n    assertEqualsString(\"Lexicon back\",  \"zebra\", lex.back());\n}\n\nTIMED_TEST(LexiconTests, hashCodeTest_Lexicon, TEST_TIMEOUT_DEFAULT) {\n    Lexicon lex;\n    lex.add(\"a\");\n    lex.add(\"bc\");\n    assertEqualsInt(\"hashcode of self lexicon\", hashCode(lex), hashCode(lex));\n\n    Lexicon copy = lex;\n    assertEqualsInt(\"hashcode of copy lexicon\", hashCode(lex), hashCode(copy));\n\n    Lexicon lex2;   // empty\n\n    // shouldn't add two copies of same lexicon\n    HashSet<Lexicon> hashlex {lex, copy, lex2};\n    assertEqualsInt(\"hashset of lexicon size\", 2, hashlex.size());\n}\n\nTIMED_TEST(LexiconTests, initializerListTest_Lexicon, TEST_TIMEOUT_DEFAULT) {\n    std::initializer_list<std::string> lexlist = {\"sixty\", \"seventy\"};\n\n    Lexicon lex {\"ten\", \"twenty\", \"thirty\"};\n    assertEqualsString(\"init list Lexicon\", \"{\\\"ten\\\", \\\"thirty\\\", \\\"twenty\\\"}\", lex.toString());\n    assertEqualsInt(\"init list Lexicon size\", 3, lex.size());\n    assertTrue(\"init list Lexicon contains ten\", lex.contains(\"ten\"));\n    assertTrue(\"init list Lexicon contains twenty\", lex.contains(\"twenty\"));\n    assertTrue(\"init list Lexicon contains thirty\", lex.contains(\"thirty\"));\n    assertFalse(\"init list Lexicon contains forty\", lex.contains(\"forty\"));\n    assertFalse(\"init list Lexicon contains fifty\", lex.contains(\"fifty\"));\n\n    lex += {\"forty\", \"fifty\"};\n    assertEqualsString(\"after += Lexicon\", \"{\\\"fifty\\\", \\\"forty\\\", \\\"ten\\\", \\\"thirty\\\", \\\"twenty\\\"}\", lex.toString());\n    assertEqualsInt(\"after += Lexicon size\", 5, lex.size());\n    assertTrue(\"init list Lexicon contains ten\", lex.contains(\"ten\"));\n    assertTrue(\"init list Lexicon contains twenty\", lex.contains(\"twenty\"));\n    assertTrue(\"init list Lexicon contains thirty\", lex.contains(\"thirty\"));\n    assertTrue(\"init list Lexicon contains forty\", lex.contains(\"forty\"));\n    assertTrue(\"init list Lexicon contains fifty\", lex.contains(\"fifty\"));\n    assertFalse(\"init list Lexicon contains sixty\", lex.contains(\"sixty\"));\n    assertFalse(\"init list Lexicon contains seventy\", lex.contains(\"seventy\"));\n\n    Lexicon lex2 = (lex + lexlist);\n    assertEqualsString(\"after += Lexicon\", \"{\\\"fifty\\\", \\\"forty\\\", \\\"ten\\\", \\\"thirty\\\", \\\"twenty\\\"}\", lex.toString());\n    assertEqualsInt(\"after + Lexicon size\", 5, lex.size());\n    assertTrue(\"init list Lexicon contains ten\", lex.contains(\"ten\"));\n    assertTrue(\"init list Lexicon contains twenty\", lex.contains(\"twenty\"));\n    assertTrue(\"init list Lexicon contains thirty\", lex.contains(\"thirty\"));\n    assertTrue(\"init list Lexicon contains forty\", lex.contains(\"forty\"));\n    assertTrue(\"init list Lexicon contains fifty\", lex.contains(\"fifty\"));\n    assertFalse(\"init list Lexicon contains sixty\", lex.contains(\"sixty\"));\n    assertFalse(\"init list Lexicon contains seventy\", lex.contains(\"seventy\"));\n\n    assertEqualsString(\"after + Lexicon 2\", \"{\\\"fifty\\\", \\\"forty\\\", \\\"seventy\\\", \\\"sixty\\\", \\\"ten\\\", \\\"thirty\\\", \\\"twenty\\\"}\", lex2.toString());\n    assertEqualsInt(\"after + Lexicon 2 size\", 7, lex2.size());\n    assertTrue(\"init list Lexicon contains ten\", lex2.contains(\"ten\"));\n    assertTrue(\"init list Lexicon contains twenty\", lex2.contains(\"twenty\"));\n    assertTrue(\"init list Lexicon contains thirty\", lex2.contains(\"thirty\"));\n    assertTrue(\"init list Lexicon contains forty\", lex2.contains(\"forty\"));\n    assertTrue(\"init list Lexicon contains fifty\", lex2.contains(\"fifty\"));\n    assertTrue(\"init list Lexicon contains sixty\", lex2.contains(\"sixty\"));\n    assertTrue(\"init list Lexicon contains seventy\", lex2.contains(\"seventy\"));\n}\n\n#ifdef SPL_THROW_ON_INVALID_ITERATOR\nTIMED_TEST(LexiconTests, iteratorVersionTest_Lexicon, TEST_TIMEOUT_DEFAULT) {\n    Lexicon lex {\"ten\", \"twenty\", \"thirty\", \"forty\"};\n    try {\n        for (std::string s : lex) {\n            if (s.length() % 2 == 0) {\n                lex.remove(s);\n            }\n        }\n        assertFail(\"should not get to end of test; should throw exception before now\");\n    } catch (ErrorException ex) {\n        assertPass(\"threw exception successfully\");\n    }\n}\n#endif // SPL_THROW_ON_INVALID_ITERATOR\n"
  },
  {
    "path": "Archived/Autograder_QtCreatorProject/src/test/collection-test-linkedhashmap.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib collection functionality.\n */\n\n#include \"testcases.h\"\n#include \"linkedhashmap.h\"\n#include \"hashcode.h\"\n#include \"hashset.h\"\n#include \"queue.h\"\n#include \"assertions.h\"\n#include \"collection-test-common.h\"\n#include \"gtest-marty.h\"\n#include <initializer_list>\n#include <iostream>\n#include <sstream>\n#include <string>\n\nTEST_CATEGORY(LinkedHashMapTests, \"LinkedHashMap tests\");\n\n/*\n * Force instantiation of the template on a type to ensure that we don't have anything\n * insidious lurking that just didn't get compiled.\n */\ntemplate class LinkedHashMap<int, int>;\ntemplate class LinkedHashMap<int, std::string>;\ntemplate class LinkedHashMap<std::string, int>;\ntemplate class LinkedHashMap<std::string, std::string>;\n\nTIMED_TEST(LinkedHashMapTests, compareTest_LinkedHashMap, TEST_TIMEOUT_DEFAULT) {\n    // TODO\n}\n\nTIMED_TEST(LinkedHashMapTests, forEachTest_LinkedHashMap, TEST_TIMEOUT_DEFAULT) {\n    LinkedHashMap<std::string, int> lhmap;\n    lhmap.put(\"zz\", 26);\n    lhmap.put(\"a\", 1);\n    lhmap.put(\"ss\", 97);\n    lhmap.put(\"bbbb\", 2);\n    lhmap.put(\"E\", 4);\n    lhmap.put(\"yZ44\", 33);\n    Queue<std::string> expected {\"zz\", \"a\", \"ss\", \"bbbb\", \"E\", \"yZ44\"};\n    for (const std::string& key : lhmap) {\n        std::string expkey = expected.dequeue();\n        assertEqualsString(\"foreach LinkedHashMap\", expkey, key);\n    }\n    lhmap.remove(\"ss\");\n    lhmap.remove(\"zz\");\n    lhmap.remove(\"yZ44\");\n    lhmap.remove(\"notfound\");\n    expected = {\"a\", \"bbbb\", \"E\"};\n    for (const std::string& key : lhmap) {\n        std::string expkey = expected.dequeue();\n        assertEqualsString(\"foreach LinkedHashMap after removes\", expkey, key);\n    }\n}\n\nTIMED_TEST(LinkedHashMapTests, frontBackTest_LinkedHashMap, TEST_TIMEOUT_DEFAULT) {\n    LinkedHashMap<std::string, int> lhmap {{\"b\", 20}, {\"c\", 30}, {\"a\", 10}};\n    assertEqualsString(\"LinkedHashMap front\", \"b\", lhmap.front());\n    assertEqualsString(\"LinkedHashMap back\",  \"a\", lhmap.back());\n}\n\nTIMED_TEST(LinkedHashMapTests, hashCodeTest_LinkedHashMap, TEST_TIMEOUT_DEFAULT) {\n    LinkedHashMap<int, int> lhmap;\n    lhmap.add(69, 96);\n    lhmap.add(42, 24);\n    assertEqualsInt(\"hashcode of self LinkedHashMap\", hashCode(lhmap), hashCode(lhmap));\n\n    LinkedHashMap<int, int> copy = lhmap;\n    assertEqualsInt(\"hashcode of copy LinkedHashMap\", hashCode(lhmap), hashCode(copy));\n\n    LinkedHashMap<int, int> empty;\n\n    HashSet<LinkedHashMap<int, int> > hashhashmap {lhmap, copy, empty, empty};\n    assertEqualsInt(\"hashset of LinkedHashMap size\", 2, hashhashmap.size());\n}\n\nTIMED_TEST(LinkedHashMapTests, initializerListTest_LinkedHashMap, TEST_TIMEOUT_DEFAULT) {\n    std::initializer_list<std::pair<const std::string, int> > pairlist = {{\"k\", 60}, {\"t\", 70}};\n    std::initializer_list<std::pair<const std::string, int> > pairlist2 = {{\"b\", 20}, {\"e\", 50}};\n    std::initializer_list<std::pair<const std::string, int> > expected;\n\n    LinkedHashMap<std::string, int> hmap {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}};\n    assertEqualsInt(\"init list LinkedHashMap get a\", 10, hmap.get(\"a\"));\n    assertEqualsInt(\"init list LinkedHashMap get b\", 20, hmap.get(\"b\"));\n    assertEqualsInt(\"init list LinkedHashMap get c\", 30, hmap.get(\"c\"));\n    assertEqualsInt(\"init list LinkedHashMap size\", 3, hmap.size());\n\n    hmap += {{\"d\", 40}, {\"e\", 50}};\n    expected = {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}, {\"d\", 40}, {\"e\", 50}};\n    assertMap(\"after +=\", expected, hmap);\n\n    LinkedHashMap<std::string, int> copy = hmap + pairlist;\n    expected = {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}, {\"d\", 40}, {\"e\", 50}};\n    assertMap(\"after + (shouldn't modify)\", expected, hmap);\n    expected = {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}, {\"d\", 40}, {\"e\", 50}, {\"k\", 60}, {\"t\", 70}};\n    // assertMap(\"after + copy\", expected, copy);\n\n    copy = hmap - pairlist2;\n    expected = {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}, {\"d\", 40}, {\"e\", 50}};\n    assertMap(\"after - (shouldn't modify)\", expected, hmap);\n    expected = {{\"a\", 10}, {\"c\", 30}, {\"d\", 40}};\n    assertMap(\"after - copy\", expected, copy);\n\n    copy = hmap * pairlist2;\n    expected = {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}, {\"d\", 40}, {\"e\", 50}};\n    assertMap(\"after * (shouldn't modify)\", expected, hmap);\n    expected = {{\"b\", 20}, {\"e\", 50}};\n    assertMap(\"after * copy\", expected, copy);\n\n    hmap -= {{\"d\", 40}, {\"e\", 50}};\n    expected = {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}};\n    assertMap(\"after -=\", expected, hmap);\n\n    hmap *= pairlist2;\n    expected = {{\"b\", 20}};\n    assertMap(\"after *=\", expected, hmap);\n}\n\nTIMED_TEST(LinkedHashMapTests, randomKeyTest_LinkedHashMap, TEST_TIMEOUT_DEFAULT) {\n    Map<std::string, int> counts;\n    int RUNS = 200;\n\n    std::initializer_list<std::string> list {\"a\", \"b\", \"c\", \"d\", \"e\", \"f\"};\n\n    LinkedHashMap<std::string, int> lhmap;\n    lhmap.put(\"a\", 50);\n    lhmap.put(\"b\", 40);\n    lhmap.put(\"c\", 30);\n    lhmap.put(\"d\", 20);\n    lhmap.put(\"e\", 10);\n    lhmap.put(\"f\",  0);\n    for (int i = 0; i < RUNS; i++) {\n        std::string s = randomKey(lhmap);\n        counts[s]++;\n    }\n\n    for (const std::string& s : list) {\n        assertTrue(\"must choose \" + s + \" sometimes\", counts[s] > 0);\n    }\n}\n\nTIMED_TEST(LinkedHashMapTests, streamExtractTest_LinkedHashMap, TEST_TIMEOUT_DEFAULT) {\n    std::istringstream lhmstream(\"{2:20, 1:10, 4:40, 3:30}\");\n    LinkedHashMap<int, int> lhm;\n    lhmstream >> lhm;\n    assertEqualsString(\"lhm\", \"{2:20, 1:10, 4:40, 3:30}\", lhm.toString());\n}\n"
  },
  {
    "path": "Archived/Autograder_QtCreatorProject/src/test/collection-test-linkedhashset.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib collection functionality.\n */\n\n#include \"testcases.h\"\n#include \"linkedhashset.h\"\n#include \"hashcode.h\"\n#include \"hashset.h\"\n#include \"queue.h\"\n#include \"assertions.h\"\n#include \"collection-test-common.h\"\n#include \"gtest-marty.h\"\n#include <initializer_list>\n#include <iostream>\n#include <sstream>\n#include <string>\n\n/*\n * Force instantiation of the template on a type to ensure that we don't have anything\n * insidious lurking that just didn't get compiled.\n */\ntemplate class stanfordcpplib::collections::GenericSet<stanfordcpplib::collections::LinkedHashSetTraits<int>>;\ntemplate class stanfordcpplib::collections::GenericSet<stanfordcpplib::collections::LinkedHashSetTraits<std::string>>;\n\nTEST_CATEGORY(LinkedHashSetTests, \"LinkedHashSet tests\");\n\n#if 0\nvoid causeCompilerError() {\n    struct Bad {};\n\n    LinkedHashSet<Bad> bad; // Should trigger a static assertion rather than a long chain of sorrows\n}\n#endif\n\n#if 0\nvoid badInitializationError() {\n    LinkedHashSet<std::string> mySet = \"137\";\n}\n#endif\n\nTIMED_TEST(LinkedHashSetTests, commaOperatorLinkedHashTest_Set, TEST_TIMEOUT_DEFAULT) {\n    /* Confirm that commas work properly. */\n    LinkedHashSet<int> one = {1, 2, 3};\n\n    /* Begin by adding some elements in. */\n    one += 3, 4, 5; // {1, 2, 3, 4, 5}\n    assertEqualsInt(\"elements were added\", one.size(), 5);\n\n    /* Now remove some elements. */\n    one -= 3, 4, 5; // {1, 2}\n    assertEqualsInt(\"elements were removed\", one.size(), 2);\n\n    /* Now add a collection of elements. */\n    LinkedHashSet<int> two = {3, 4, 5};\n    one += two, 6; // {1, 2, 3, 4, 5, 6}\n    assertEqualsInt(\"elements were added\", one.size(), 6);\n\n    /* Now remove a collection of elements. */\n    one -= two, 6; // {1, 2}\n    assertEqualsInt(\"elements were removed\", one.size(), 2);\n}\n\nTIMED_TEST(LinkedHashSetTests, compareTest_LinkedHashSet, TEST_TIMEOUT_DEFAULT) {\n    LinkedHashSet<int> set1 {7, 5, 1, 2, 8};\n    LinkedHashSet<int> set2 {1, 2, 3, 4};\n    LinkedHashSet<int> set3 {2, 1, 3, 4};\n    LinkedHashSet<int> set4;\n    compareTestHelper(set1, set2, \"LinkedHashSet\", /* compareTo */  1);\n    compareTestHelper(set2, set1, \"LinkedHashSet\", /* compareTo */ -1);\n    compareTestHelper(set1, set3, \"LinkedHashSet\", /* compareTo */  1);\n    compareTestHelper(set2, set3, \"LinkedHashSet\", /* compareTo */  0);\n    compareTestHelper(set3, set2, \"LinkedHashSet\", /* compareTo */  0);\n    compareTestHelper(set2, set4, \"LinkedHashSet\", /* compareTo */  1);\n\n    // note: shouldn't add set3 because it is 'equal' to set2 (duplicate)\n    Set<LinkedHashSet<int> > slhset {set1, set2, set3, set4};\n    assertEqualsString(\"slhset\", \"{{}, {1, 2, 3, 4}, {7, 5, 1, 2, 8}}\", slhset.toString());\n}\n\nTIMED_TEST(LinkedHashSetTests, forEachTest_LinkedHashSet, TEST_TIMEOUT_DEFAULT) {\n    LinkedHashSet<int> lhset {30, 10, 40, 66, -1, 42, 99};\n    Queue<int> expected {30, 10, 40, 66, -1, 42, 99};\n    for (int n : lhset) {\n        int exp = expected.dequeue();\n        assertEqualsInt(\"LinkedHashSet foreach\", exp, n);\n    }\n}\n\nTIMED_TEST(LinkedHashSetTests, frontBackTest_LinkedHashSet, TEST_TIMEOUT_DEFAULT) {\n    LinkedHashSet<int> lhset {20, 10, 40, 30};\n    assertEqualsInt(\"LinkedHashSet front\", 20, lhset.front());\n    assertEqualsInt(\"LinkedHashSet back\",  30, lhset.back());\n}\n\nTIMED_TEST(LinkedHashSetTests, hashcodeTest_LinkedHashSet, TEST_TIMEOUT_DEFAULT) {\n    LinkedHashSet<int> hset;\n    hset.add(69);\n    hset.add(42);\n    assertEqualsInt(\"hashcode of self LinkedHashSet\", hashCode(hset), hashCode(hset));\n\n    LinkedHashSet<int> hset2;\n    hset2.add(42);\n    hset2.add(69);\n    assertEqualsInt(\"hashcode of LinkedHashSet other order\", hashCode(hset), hashCode(hset2));\n\n    LinkedHashSet<int> copy = hset;\n    assertEqualsInt(\"hashcode of copy LinkedHashSet\", hashCode(hset), hashCode(copy));\n\n    LinkedHashSet<int> empty;\n    HashSet<LinkedHashSet<int> > hashhashset {hset, copy, hset2, empty, empty};\n    assertEqualsInt(\"hashset of LinkedHashset size\", 2, hashhashset.size());\n}\n\nTIMED_TEST(LinkedHashSetTests, initializerListTest_LinkedHashSet, TEST_TIMEOUT_DEFAULT) {\n    auto list = {60, 70};\n    auto list2 = {20, 50};\n\n    LinkedHashSet<int> hset {10, 20, 30};\n    assertCollection(\"initial\", {10, 20, 30}, hset);\n\n    hset += {40, 50};\n    assertCollection(\"after +=\", {10, 20, 30, 40, 50}, hset);\n\n    LinkedHashSet<int> copy = hset + list;\n    assertCollection(\"after + (shouldn't modify)\", {10, 20, 30, 40, 50}, hset);\n    assertCollection(\"after + copy\", {10, 20, 30, 40, 50, 60, 70}, copy);\n\n    copy = hset - list2;\n    assertCollection(\"after - (shouldn't modify)\", {10, 20, 30, 40, 50}, hset);\n    assertCollection(\"after - copy\", {10, 30, 40}, copy);\n\n    copy = hset * list2;\n    assertCollection(\"after * (shouldn't modify)\", {10, 20, 30, 40, 50}, hset);\n    assertCollection(\"after * copy\", {20, 50}, copy);\n\n    hset -= {20, 50};\n    assertCollection(\"after -=\", {10, 30, 40}, hset);\n    hset *= {0, 10, 40, 99};\n    assertCollection(\"after *=\", {10, 40}, hset);\n}\n\nTIMED_TEST(LinkedHashSetTests, randomElementTest_LinkedHashSet, TEST_TIMEOUT_DEFAULT) {\n    Map<std::string, int> counts;\n    int RUNS = 200;\n\n    std::initializer_list<std::string> list {\"a\", \"b\", \"c\", \"d\", \"e\", \"f\"};\n\n    LinkedHashSet<std::string> hset(list);\n    for (int i = 0; i < RUNS; i++) {\n        std::string s = randomElement(hset);\n        counts[s]++;\n    }\n\n    for (const std::string& s : list) {\n        assertTrue(\"must choose \" + s + \" sometimes\", counts[s] > 0);\n    }\n}\n"
  },
  {
    "path": "Archived/Autograder_QtCreatorProject/src/test/collection-test-linkedlist.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib collection functionality.\n */\n\n#include \"testcases.h\"\n#include \"linkedlist.h\"\n#include \"hashcode.h\"\n#include \"hashset.h\"\n#include \"queue.h\"\n#include \"assertions.h\"\n#include \"collection-test-common.h\"\n#include \"gtest-marty.h\"\n#include <initializer_list>\n#include <iostream>\n#include <sstream>\n#include <string>\n\nTEST_CATEGORY(LinkedListTests, \"LinkedList tests\");\n\n/*\n * Force instantiation of the template on a type to ensure that we don't have anything\n * insidious lurking that just didn't get compiled.\n */\ntemplate class LinkedList<int>;\ntemplate class LinkedList<std::string>;\n\nTIMED_TEST(LinkedListTests, compareTest_LinkedList, TEST_TIMEOUT_DEFAULT) {\n    LinkedList<int> ll1;\n    ll1 += 1, 2, 4, 5;\n    LinkedList<int> ll2;\n    ll2 += 1, 3, 1, 4, 8;\n    LinkedList<int> ll3;\n    ll3 += 1, 1, 7;\n    LinkedList<int> ll4;  // empty\n    compareTestHelper(ll1, ll2, \"LinkedList\", /* compareTo */ -1);\n    compareTestHelper(ll1, ll3, \"LinkedList\", /* compareTo */ 1);\n    compareTestHelper(ll1, ll4, \"LinkedList\", /* compareTo */ 1);\n    compareTestHelper(ll2, ll3, \"LinkedList\", /* compareTo */ 1);\n    compareTestHelper(ll2, ll4, \"LinkedList\", /* compareTo */ 1);\n    compareTestHelper(ll3, ll4, \"LinkedList\", /* compareTo */ 1);\n    compareTestHelper(ll2, ll2, \"LinkedList\", /* compareTo */ 0);\n\n    Set<LinkedList<int> > sll {ll1, ll2, ll3, ll4};\n    assertEqualsString(\"sll\", \"{{}, {1, 1, 7}, {1, 2, 4, 5}, {1, 3, 1, 4, 8}}\", sll.toString());\n}\n\nTIMED_TEST(LinkedListTests, forEachTest_LinkedList, TEST_TIMEOUT_DEFAULT) {\n    LinkedList<int> v1 {1, 2, 3};\n    assertCollection(\"foreach LinkedList\", {1, 2, 3}, v1);\n\n    LinkedList<std::string> v2 {\"a\", \"b\", \"c\"};\n    std::initializer_list<std::string> list {\"a\", \"b\", \"c\"};\n    assertCollection(\"foreach LinkedList\", list, v2);\n}\n\nTIMED_TEST(LinkedListTests, hashCodeTest_LinkedList, TEST_TIMEOUT_DEFAULT) {\n    LinkedList<int> llist;\n    llist.add(69);\n    llist.add(42);\n    assertEqualsInt(\"hashcode of self LinkedList\", hashCode(llist), hashCode(llist));\n\n    LinkedList<int> copy = llist;\n    assertEqualsInt(\"hashcode of copy LinkedList\", hashCode(llist), hashCode(copy));\n\n    LinkedList<int> empty;\n    HashSet<LinkedList<int> > hashllist {llist, copy, empty, empty};\n    assertEqualsInt(\"hashset of LinkedList size\", 2, hashllist.size());\n}\n\nTIMED_TEST(LinkedListTests, indexOfTest_LinkedList, TEST_TIMEOUT_DEFAULT) {\n    //                    0   1   2   3   4   5   6   7  8\n    LinkedList<int> vec {10, 20, 30, 10, 40, 10, 50, 60, 0};\n    assertEqualsInt(\"indexOf 10\", 0, vec.indexOf(10));\n    assertEqualsInt(\"indexOf 20\", 1, vec.indexOf(20));\n    assertEqualsInt(\"indexOf 50\", 6, vec.indexOf(50));\n\n    assertEqualsInt(\"lastIndexOf 10\", 5, vec.lastIndexOf(10));\n    assertEqualsInt(\"lastIndexOf 20\", 1, vec.lastIndexOf(20));\n    assertEqualsInt(\"lastIndexOf 0\",  8, vec.lastIndexOf(0));\n\n    assertEqualsBool(\"contains 10\", true, vec.contains(10));\n    assertEqualsBool(\"contains 20\", true, vec.contains(20));\n    assertEqualsBool(\"contains 50\", true, vec.contains(50));\n    assertEqualsBool(\"contains 70\", false, vec.contains(70));\n    assertEqualsBool(\"contains -1\", false, vec.contains(-1));\n    assertEqualsBool(\"contains 99\", false, vec.contains(99));\n}\n\nTIMED_TEST(LinkedListTests, initializerListTest_LinkedList, TEST_TIMEOUT_DEFAULT) {\n    auto list = {60, 70};\n\n    LinkedList<int> llist {10, 20, 30};\n    assertCollection(\"initial\", {10, 20, 30}, llist);\n\n    llist += {40, 50};\n    assertCollection(\"after +=\", {10, 20, 30, 40, 50}, llist);\n\n    LinkedList<int> copy = llist + list;\n    assertCollection(\"after + (shouldn't modify)\", {10, 20, 30, 40, 50}, llist);\n    assertCollection(\"after + copy\", {10, 20, 30, 40, 50, 60, 70}, copy);\n}\n\n#ifdef SPL_THROW_ON_INVALID_ITERATOR\nTIMED_TEST(LinkedListTests, iteratorVersionTest_LinkedList, TEST_TIMEOUT_DEFAULT) {\n    LinkedList<int> ll {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};\n    try {\n        for (int n : ll) {\n            if (n % 2 == 0) {\n                ll.remove(ll.size() - 1);\n            }\n        }\n        assertFail(\"should not get to end of test; should throw exception before now\");\n    } catch (ErrorException ex) {\n        assertPass(\"threw exception successfully\");\n    }\n}\n#endif // SPL_THROW_ON_INVALID_ITERATOR\n\nTIMED_TEST(LinkedListTests, randomElementTest_LinkedList, TEST_TIMEOUT_DEFAULT) {\n    Map<std::string, int> counts;\n    int RUNS = 200;\n\n    std::initializer_list<std::string> list {\"a\", \"b\", \"c\", \"d\", \"e\", \"f\"};\n\n    LinkedList<std::string> llist(list);\n    for (int i = 0; i < RUNS; i++) {\n        std::string s = randomElement(llist);\n        counts[s]++;\n    }\n\n    for (const std::string& s : list) {\n        assertTrue(\"must choose \" + s + \" sometimes\", counts[s] > 0);\n    }\n}\n\nTIMED_TEST(LinkedListTests, removeValueTest_LinkedList, TEST_TIMEOUT_DEFAULT) {\n    //                    0   1   2   3   4   5   6   7  8\n    LinkedList<int> vec {10, 20, 30, 10, 40, 10, 50, 60, 0};\n    vec.removeValue(40);\n    vec.removeValue(10);\n    vec.removeValue(10);\n    vec.removeValue(0);\n    LinkedList<int> exp {20, 30, 10, 50, 60};\n    assertEqualsString(\"after removes\", exp.toString(), vec.toString());\n}\n\nTIMED_TEST(LinkedListTests, reverseTest_LinkedList, TEST_TIMEOUT_DEFAULT) {\n    //                    0   1   2   3   4   5   6   7   8   9  10\n    LinkedList<int> vec {70, 30, 20, 10, 40, 90, 10, 50,  0, 60, 50};\n    vec.reverse();\n    LinkedList<int> exp {50, 60, 0, 50, 10, 90, 40, 10, 20, 30, 70};\n    assertEqualsString(\"after reverse\", exp.toString(), vec.toString());\n}\n\nTIMED_TEST(LinkedListTests, shuffleTest_LinkedList, TEST_TIMEOUT_DEFAULT) {\n    LinkedList<int> v {10, 20, 30, 40, 50};\n    Map<int, Map<int, int> > valueIndexCount;\n\n    // shuffle 100 times\n    for (int i = 0; i < 100; i++) {\n        v.shuffle();\n        for (int j = 0; j < v.size(); j++) {\n            valueIndexCount[v[j]][j]++;\n        }\n    }\n\n    // make sure each value appeared at each index at least once\n    for (int n : v) {\n        for (int j = 0; j < v.size(); j++) {\n            assertNotEqualsInt(\"\", 0, valueIndexCount[n][j]);\n        }\n    }\n}\n\nTIMED_TEST(LinkedListTests, sortTest_LinkedList, TEST_TIMEOUT_DEFAULT) {\n    //                    0   1   2   3   4   5   6   7   8   9  10\n    LinkedList<int> vec {70, 30, 20, 10, 40, 90, 10, 50,  0, 60, 50};\n    vec.sort();\n    LinkedList<int> exp { 0, 10, 10, 20, 30, 40, 50, 50, 60, 70, 90};\n    assertEqualsString(\"after sort\", exp.toString(), vec.toString());\n}\n"
  },
  {
    "path": "Archived/Autograder_QtCreatorProject/src/test/collection-test-map.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib collection functionality.\n */\n\n#include \"testcases.h\"\n#include \"map.h\"\n#include \"hashcode.h\"\n#include \"hashset.h\"\n#include \"queue.h\"\n#include \"set.h\"\n#include \"assertions.h\"\n#include \"collection-test-common.h\"\n#include \"gtest-marty.h\"\n#include <initializer_list>\n#include <iostream>\n#include <sstream>\n#include <string>\n\nTEST_CATEGORY(MapTests, \"Map tests\");\n\n/*\n * Force instantiation of Map on a few types to make sure we didn't miss anything.\n * The key types must be comparable.\n */\ntemplate class Map<int, int>;\ntemplate class Map<std::string, int>;\n\n/*\n * Uncomment this code to include tests that the nice error messages for types missing\n * hashing show up properly.\n */\n#if 0\nvoid causeCompilerError() {\n    struct Bad {};\n\n    Map<Bad, int> bad; // Should trigger a static assertion rather than a long chain of sorrows\n}\n#endif\n\n/* This code, on the other hand, should NOT cause a compiler error, since we gave an\n * explicit comparison function.\n */\nstatic void customComparatorNoError() {\n    struct Meh {};\n\n    Map<Meh, int> okay([](const Meh&, const Meh&) {\n        return true;\n    });\n\n    (void) okay;\n}\n\nTIMED_TEST(MapTests, compareTest_Map, TEST_TIMEOUT_DEFAULT) {\n    // TODO\n}\n\nTIMED_TEST(MapTests, forEachTest_Map, TEST_TIMEOUT_DEFAULT) {\n    Map<std::string, int> map;\n    map.put(\"zz\", 26);\n    map.put(\"a\", 1);\n    map.put(\"ss\", 97);\n    map.put(\"bbbb\", 2);\n    map.put(\"E\", 4);\n    map.put(\"yZ44\", 33);\n    Set<std::string> expected {\"zz\", \"a\", \"ss\", \"bbbb\", \"E\", \"yZ44\"};\n    for (const std::string& key : map) {\n        assertTrue(\"foreach Map contains \" + key, expected.contains(key));\n    }\n    map.remove(\"ss\");\n    map.remove(\"zz\");\n    map.remove(\"yZ44\");\n    map.remove(\"notfound\");\n    expected = {\"a\", \"bbbb\", \"E\"};\n    for (const std::string& key : map) {\n        assertTrue(\"foreach Map contains \" + key, expected.contains(key));\n    }\n}\n\nTIMED_TEST(MapTests, frontBackTest_Map, TEST_TIMEOUT_DEFAULT) {\n    Map<std::string, int> map {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}};\n    assertEqualsString(\"Map front\", \"a\", map.front());\n    assertEqualsString(\"Map back\",  \"c\", map.back());\n}\n\nTIMED_TEST(MapTests, hashCodeTest_Map, TEST_TIMEOUT_DEFAULT) {\n    Map<int, int> map;\n    map.add(69, 96);\n    map.add(42, 24);\n    assertEqualsInt(\"hashcode of self Map\", hashCode(map), hashCode(map));\n\n    Map<int, int> copy = map;\n    assertEqualsInt(\"hashcode of copy Map\", hashCode(map), hashCode(copy));\n\n    Map<int, int> empty;\n\n    HashSet<Map<int, int> > hashmap {map, copy, empty, empty};\n    assertEqualsInt(\"hashset of Map size\", 2, hashmap.size());\n}\n\nTIMED_TEST(MapTests, initializerListTest_Map, TEST_TIMEOUT_DEFAULT) {\n    std::initializer_list<std::pair<const std::string, int>> pairlist = {{\"k\", 60}, {\"t\", 70}};\n    std::initializer_list<std::pair<const std::string, int>> pairlist2 = {{\"b\", 20}, {\"e\", 50}};\n    std::initializer_list<std::pair<const std::string, int>> expected;\n\n    Map<std::string, int> map {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}};\n    assertEqualsInt(\"init list Map get a\", 10, map.get(\"a\"));\n    assertEqualsInt(\"init list Map get b\", 20, map.get(\"b\"));\n    assertEqualsInt(\"init list Map get c\", 30, map.get(\"c\"));\n    assertEqualsInt(\"init list Map size\", 3, map.size());\n\n    map += {{\"d\", 40}, {\"e\", 50}};\n    expected = {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}, {\"d\", 40}, {\"e\", 50}};\n    assertMap(\"after +=\", expected, map);\n\n    Map<std::string, int> copy = map + pairlist;\n    expected = {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}, {\"d\", 40}, {\"e\", 50}};\n    assertMap(\"after + (shouldn't modify)\", expected, map);\n    expected = {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}, {\"d\", 40}, {\"e\", 50}, {\"k\", 60}, {\"t\", 70}};\n    // assertMap(\"after + copy\", expected, copy);\n\n    copy = map - pairlist2;\n    expected = {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}, {\"d\", 40}, {\"e\", 50}};\n    assertMap(\"after - (shouldn't modify)\", expected, map);\n    expected = {{\"a\", 10}, {\"c\", 30}, {\"d\", 40}};\n    assertMap(\"after - copy\", expected, copy);\n\n    copy = map * pairlist2;\n    expected = {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}, {\"d\", 40}, {\"e\", 50}};\n    assertMap(\"after * (shouldn't modify)\", expected, map);\n    expected = {{\"b\", 20}, {\"e\", 50}};\n    assertMap(\"after * copy\", expected, copy);\n\n    map -= {{\"d\", 40}, {\"e\", 50}};\n    expected = {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}};\n    assertMap(\"after -=\", expected, map);\n\n    map *= pairlist2;\n    expected = {{\"b\", 20}};\n    assertMap(\"after *=\", expected, map);\n}\n\n#ifdef SPL_THROW_ON_INVALID_ITERATOR\nTIMED_TEST(MapTests, iteratorVersionTest_Map, TEST_TIMEOUT_DEFAULT) {\n    Map<std::string, int> map {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}, {\"d\", 40}, {\"e\", 50}, {\"f\", 60}};\n    try {\n        for (std::string key : map) {\n            int val = map[key];\n            if (val % 2 == 0) {\n                map.remove(key);\n            }\n        }\n        assertFail(\"should not get to end of test; should throw exception before now\");\n    } catch (ErrorException ex) {\n        assertPass(\"threw exception successfully\");\n    }\n}\n#endif // SPL_THROW_ON_INVALID_ITERATOR\n\nTIMED_TEST(MapTests, randomKeyTest_Map, TEST_TIMEOUT_DEFAULT) {\n    Map<std::string, int> counts;\n    int RUNS = 200;\n\n    std::initializer_list<std::string> list {\"a\", \"b\", \"c\", \"d\", \"e\", \"f\"};\n\n    Map<std::string, int> map;\n    map[\"a\"] = 50;\n    map[\"b\"] = 40;\n    map[\"c\"] = 30;\n    map[\"d\"] = 20;\n    map[\"e\"] = 10;\n    map[\"f\"] =  0;\n    for (int i = 0; i < RUNS; i++) {\n        std::string s = randomKey(map);\n        counts[s]++;\n    }\n\n    for (const std::string& s : list) {\n        assertTrue(\"must choose \" + s + \" sometimes\", counts[s] > 0);\n    }\n}\n\nTIMED_TEST(MapTests, streamExtractTest_Map, TEST_TIMEOUT_DEFAULT) {\n    std::istringstream stream(\"{2:20, 1:10, 4:40, 3:30}\");\n    Map<int, int> map;\n    stream >> map;\n    assertEqualsString(\"map\", \"{1:10, 2:20, 3:30, 4:40}\", map.toString());\n}\n"
  },
  {
    "path": "Archived/Autograder_QtCreatorProject/src/test/collection-test-priorityqueue.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib collection functionality.\n */\n\n#include \"testcases.h\"\n#include \"priorityqueue.h\"\n#include \"hashcode.h\"\n#include \"hashset.h\"\n#include \"queue.h\"\n#include \"assertions.h\"\n#include \"collection-test-common.h\"\n#include \"gtest-marty.h\"\n#include <initializer_list>\n#include <iostream>\n#include <sstream>\n#include <string>\n\nTEST_CATEGORY(PriorityQueueTests, \"PriorityQueue tests\");\n\n/*\n * Force instantiation of the template on a type to ensure that we don't have anything\n * insidious lurking that just didn't get compiled.\n */\ntemplate class PriorityQueue<int>;\ntemplate class PriorityQueue<std::string>;\n\nTIMED_TEST(PriorityQueueTests, basicSortingTest_PriorityQueue, TEST_TIMEOUT_DEFAULT) {\n    PriorityQueue<std::string> pq;\n    pq.add(\"a\", 4);\n    pq.add(\"bb\", 3);\n    pq.add(\"c\", 1);\n    pq.add(\"ddd\", 6);\n    pq.add(\"e\", 5);\n    pq.add(\"ffff\", 2);\n    Queue<std::string> expected {\"c\", \"ffff\", \"bb\", \"a\", \"e\", \"ddd\"};\n    Queue<double> expectedPriority {1.0, 2.0, 3.0, 4.0, 5.0, 6.0};\n    while (!pq.isEmpty()) {\n        double expPri = expectedPriority.dequeue();\n        std::string exp = expected.dequeue();\n        double actPri = pq.peekPriority();\n        std::string act = pq.dequeue();\n        assertEqualsDouble(\"basic sorting PriorityQueue\", expPri, actPri);\n        assertEqualsString(\"basic sorting PriorityQueue\", exp, act);\n    }\n}\n\nTIMED_TEST(PriorityQueueTests, changePriority_PriorityQueue, TEST_TIMEOUT_DEFAULT) {\n    static const int kNumEntries = 137;\n\n    /* Test changing each index individually. */\n    for (int value = 0; value < kNumEntries; value++) {\n        PriorityQueue<int> pq;\n\n        /* Add in a bunch of integers, each of which has their own priority. */\n        for (int i = 0; i < kNumEntries; i++) {\n            pq.enqueue(i, i);\n        }\n\n        /* Change the priority of the indicated value to -1 to make it dequeue first. */\n        pq.changePriority(value, -1);\n\n        /* Confirm we get back what we expected - that value first, then everything else. */\n        int found = pq.dequeue();\n        assertEqualsInt(\"change priority PriorityQueue\", found, value);\n\n        for (int i = 0; i < value; i++) {\n            int found = pq.dequeue();\n            assertEqualsInt(\"change priority PriorityQueue\", found, i);\n        }\n\n        for (int i = value + 1; i < kNumEntries; i++) {\n            int found = pq.dequeue();\n            assertEqualsInt(\"change priority PriorityQueue\", found, i);\n        }\n    }\n\n    /* Edge cases! */\n    {\n        PriorityQueue<int> pq;\n        for (int i = 0; i < kNumEntries; i++) {\n            pq.enqueue(i, i);\n        }\n\n        try {\n            /* Change a nonexistent element. */\n            pq.changePriority(kNumEntries, kNumEntries);\n            assertFail(\"Changed priority of a nonexistent element?\");\n        } catch (const ErrorException& ) {\n            // All is well, this is expected.\n        }\n    }\n\n    {\n        PriorityQueue<int> pq;\n        for (int i = 0; i < kNumEntries; i++) {\n            pq.enqueue(i, i);\n        }\n\n        try {\n            /* Increase, rather than decrease, priority. */\n            pq.changePriority(0, kNumEntries);\n            assertFail(\"Should have caused error increasing priority.\");\n        } catch (const ErrorException& ) {\n            // All is well, this is expected.\n        }\n    }\n}\n\nTIMED_TEST(PriorityQueueTests, hashCodeTest_PriorityQueue, TEST_TIMEOUT_DEFAULT) {\n    PriorityQueue<std::string> pq;\n    pq.add(\"a\", 4);\n    pq.add(\"bb\", 3);\n    pq.add(\"c\", 1);\n    pq.add(\"ddd\", 6);\n    pq.add(\"e\", 5);\n    pq.add(\"ffff\", 2);\n    assertEqualsInt(\"hashcode of self PriorityQueue\", hashCode(pq), hashCode(pq));\n\n    PriorityQueue<std::string> copy = pq;\n    assertEqualsInt(\"hashcode of copy PriorityQueue\", hashCode(pq), hashCode(copy));\n\n    PriorityQueue<std::string> empty;\n\n    HashSet<PriorityQueue<std::string> > hashpq {pq, copy, empty, empty};\n    assertEqualsInt(\"hashset of PriorityQueue size\", 2, hashpq.size());\n}\n\nTIMED_TEST(PriorityQueueTests, initializerListTest_PriorityQueue, TEST_TIMEOUT_DEFAULT) {\n    PriorityQueue<std::string> pq {{40.0, \"Marty\"}, {20.0, \"Eric\"}, {30.0, \"Mehran\"}};\n    Queue<std::string> expected {\"Eric\", \"Mehran\", \"Marty\"};\n    Queue<double> expectedPriority {20.0, 30.0, 40.0};\n    while (!pq.isEmpty()) {\n        double expPri = expectedPriority.dequeue();\n        std::string exp = expected.dequeue();\n        double actPri = pq.peekPriority();\n        std::string act = pq.dequeue();\n        assertEqualsDouble(\"initializer list PriorityQueue\", expPri, actPri);\n        assertEqualsString(\"initializer list PriorityQueue\", exp, act);\n    }\n}\n"
  },
  {
    "path": "Archived/Autograder_QtCreatorProject/src/test/collection-test-queue.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib collection functionality.\n */\n\n#include \"testcases.h\"\n#include \"queue.h\"\n#include \"hashcode.h\"\n#include \"hashset.h\"\n#include \"assertions.h\"\n#include \"collection-test-common.h\"\n#include \"gtest-marty.h\"\n#include <initializer_list>\n#include <iostream>\n#include <sstream>\n#include <string>\n\nTEST_CATEGORY(QueueTests, \"Queue tests\");\n\n/*\n * Force instantiation of the template on a type to ensure that we don't have anything\n * insidious lurking that just didn't get compiled.\n */\ntemplate class Queue<int>;\ntemplate class Queue<std::string>;\n\nTIMED_TEST(QueueTests, compareTest_Queue, TEST_TIMEOUT_DEFAULT) {\n    Queue<int> q1;\n    q1.add(1);\n    q1.add(2);\n    q1.add(1);\n    q1.add(5);\n    Queue<int> q2;\n    q2.add(1);\n    q2.add(2);\n    q2.add(1);\n    q2.add(4);\n    q2.add(7);\n    compareTestHelper(q1, q2, \"Queue\", /* compareTo */  1);\n    compareTestHelper(q2, q1, \"Queue\", /* compareTo */ -1);\n    compareTestHelper(q1, q1, \"Queue\", /* compareTo */  0);\n\n    Set<Queue<int> > sq {q1, q2};\n    assertEqualsString(\"sq\", \"{{1, 2, 1, 4, 7}, {1, 2, 1, 5}}\", sq.toString());\n}\n\nTIMED_TEST(QueueTests, forEachTest_Queue, TEST_TIMEOUT_DEFAULT) {\n    Queue<std::string> q;\n    q.add(\"a\");\n    q.add(\"bb\");\n    q.add(\"c\");\n    q.add(\"ddd\");\n    q.add(\"e\");\n    q.add(\"ffff\");\n\n    Queue<std::string> expected {\"a\", \"bb\", \"c\", \"ddd\", \"e\", \"ffff\"};\n    while (!q.isEmpty()) {\n        assertEqualsString(\"foreach Queue\", expected.dequeue(), q.dequeue());\n    }\n}\n\nTIMED_TEST(QueueTests, hashCodeTest_Queue, TEST_TIMEOUT_DEFAULT) {\n    Queue<std::string> queue;\n    queue.add(\"a\");\n    queue.add(\"bb\");\n    queue.add(\"c\");\n    queue.add(\"ddd\");\n    queue.add(\"e\");\n    queue.add(\"ffff\");\n    assertEqualsInt(\"hashcode of self Queue\", hashCode(queue), hashCode(queue));\n\n    Queue<std::string> copy = queue;\n    assertEqualsInt(\"hashcode of copy Queue\", hashCode(queue), hashCode(copy));\n\n    Queue<std::string> empty;\n\n    HashSet<Queue<std::string> > hashq {queue, copy, empty, empty};\n    assertEqualsInt(\"hashset of Queue size\", 2, hashq.size());\n}\n\nTIMED_TEST(QueueTests, initializerListTest_Queue, TEST_TIMEOUT_DEFAULT) {\n    Queue<int> queue {10, 20, 30};\n    assertEqualsString(\"initializer list Queue\", \"{10, 20, 30}\", queue.toString());\n}\n\nTIMED_TEST(QueueTests, peekEnqueueBugTest_Queue, TEST_TIMEOUT_DEFAULT) {\n    {\n        Queue<int> queue {10, 20, 30, 40, 50, 60, 70, 80};\n        assertEqualsString(\"Queue 1 initial\", \"{10, 20, 30, 40, 50, 60, 70, 80}\", queue.toString());\n        queue.enqueue(queue.peek());\n        assertEqualsString(\"Queue 1 after enqueue\", \"{10, 20, 30, 40, 50, 60, 70, 80, 10}\", queue.toString());\n    }\n    {\n        Queue<int> queue {10, 20, 30, 40, 50, 60, 70, 80, 90};\n        assertEqualsString(\"Queue 2 initial\", \"{10, 20, 30, 40, 50, 60, 70, 80, 90}\", queue.toString());\n        queue.enqueue(queue.peek());\n        assertEqualsString(\"Queue 2 after enqueue\", \"{10, 20, 30, 40, 50, 60, 70, 80, 90, 10}\", queue.toString());\n    }\n}\n"
  },
  {
    "path": "Archived/Autograder_QtCreatorProject/src/test/collection-test-set.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib collection functionality.\n */\n\n#include \"testcases.h\"\n#include \"set.h\"\n#include \"hashcode.h\"\n#include \"hashset.h\"\n#include \"queue.h\"\n#include \"assertions.h\"\n#include \"collection-test-common.h\"\n#include \"gtest-marty.h\"\n#include <initializer_list>\n#include <iostream>\n#include <sstream>\n#include <string>\n#include <numeric>\n\nTEST_CATEGORY(SetTests, \"Set tests\");\n\n/*\n * Force instantiation of Set on a few types to make sure we didn't miss anything.\n * The types must be comparable.\n */\ntemplate class stanfordcpplib::collections::GenericSet<stanfordcpplib::collections::SetTraits<int>>;\ntemplate class stanfordcpplib::collections::GenericSet<stanfordcpplib::collections::SetTraits<std::string>>;\n\n/*\n * Uncomment this code to include tests that the nice error messages for types missing\n * hashing show up properly.\n */\n#if 0\nvoid causeCompilerError() {\n    struct Bad {};\n\n    Set<Bad> bad; // Should trigger a static assertion rather than a long chain of sorrows\n}\n#endif\n\n/*\n * We should NOT get a compiler error trying to stash things in a Set that are not\n * comparable as long as we provide a custom comparator.\n */\nstatic void customComparatorNoError() {\n    struct Meh {};\n\n    Set<Meh> okay([](const Meh&, const Meh&) {\n        return true;\n    });\n\n    (void) okay;\n}\n\n#if 0\nvoid badInitializationError() {\n    Set<std::string> mySet = \"137\";\n}\n#endif\n\nTIMED_TEST(SetTests, commaOperatorTest_Set, TEST_TIMEOUT_DEFAULT) {\n    /* Confirm that commas work properly. */\n    Set<int> one = {1, 2, 3};\n\n    /* Begin by adding some elements in. */\n    one += 3, 4, 5; // {1, 2, 3, 4, 5}\n    assertEqualsInt(\"elements were added\", one.size(), 5);\n\n    /* Now remove some elements. */\n    one -= 3, 4, 5; // {1, 2}\n    assertEqualsInt(\"elements were removed\", one.size(), 2);\n\n    /* Now add a collection of elements. */\n    Set<int> two = {3, 4, 5};\n    one += two, 6; // {1, 2, 3, 4, 5, 6}\n    assertEqualsInt(\"elements were added\", one.size(), 6);\n\n    /* Now remove a collection of elements. */\n    one -= two, 6; // {1, 2}\n    assertEqualsInt(\"elements were removed\", one.size(), 2);\n}\n\nTIMED_TEST(SetTests, compareTest_Set, TEST_TIMEOUT_DEFAULT) {\n    Set<int> set1 {7, 5, 1, 2, 8};\n    Set<int> set2 {1, 2, 3, 4};\n    Set<int> set3 {2, 1, 3, 4};\n    Set<int> set4;\n    compareTestHelper(set1, set2, \"Set\", /* compareTo */  1);\n    compareTestHelper(set2, set1, \"Set\", /* compareTo */ -1);\n    compareTestHelper(set1, set3, \"Set\", /* compareTo */  1);\n    compareTestHelper(set2, set3, \"Set\", /* compareTo */  0);\n    compareTestHelper(set2, set4, \"Set\", /* compareTo */  1);\n    compareTestHelper(set4, set1, \"Set\", /* compareTo */ -1);\n\n    // note: shouldn't add set3 because it is 'equal' to set2 (duplicate)\n    Set<Set<int> > sset {set1, set2, set3, set4};\n    assertEqualsString(\"sset\", \"{{}, {1, 2, 3, 4}, {1, 2, 5, 7, 8}}\", sset.toString());\n}\n\nTIMED_TEST(SetTests, customComparatorTest_Set, TEST_TIMEOUT_DEFAULT) {\n    /* Confirm that we can override the comparator if need be. */\n    Set<int> descending({1, 2, 3, 4, 5}, std::greater<int>());\n    assertEqualsInt(\"has all elements\", descending.size(), 5);\n\n    auto itr = descending.begin();\n    for (int i = 5; i > 0; i--, ++itr) {\n        assertEqualsInt(\"has right values\", *itr, i);\n    }\n\n    /* Now leave the set empty and try overriding the comparator. */\n    Set<int> descending2{std::greater<int>()};\n    descending2 += 1, 2, 3, 4, 5;\n\n    assertEqualsInt(\"has all elements\", descending2.size(), 5);\n\n    itr = descending2.begin();\n    for (int i = 5; i > 0; i--, ++itr) {\n        assertEqualsInt(\"has right values\", *itr, i);\n    }\n}\n\nTIMED_TEST(SetTests, forEachTest_Set, TEST_TIMEOUT_DEFAULT) {\n    Set<int> set {10, 20, 30, 40};\n    Queue<int> expected {10, 20, 30, 40};\n\n    for (int n : set) {\n        int exp = expected.dequeue();\n        assertEqualsInt(\"set foreach\", exp, n);\n    }\n}\n\nTIMED_TEST(SetTests, frontBackTest_Set, TEST_TIMEOUT_DEFAULT) {\n    Set<int> set {20, 10, 40, 30};\n    assertEqualsInt(\"Set front\", 10, set.front());\n    assertEqualsInt(\"Set back\",  40, set.back());\n}\n\nTIMED_TEST(SetTests, hashCodeTest_Set, TEST_TIMEOUT_DEFAULT) {\n    Set<int> set;\n    set.add(69);\n    set.add(42);\n    assertEqualsInt(\"hashcode of self Set\", hashCode(set), hashCode(set));\n\n    Set<int> copy = set;\n    assertEqualsInt(\"hashcode of copy Set\", hashCode(set), hashCode(copy));\n\n    Set<int> empty;\n    HashSet<Set<int> > hashset {set, copy, empty, empty};\n    assertEqualsInt(\"hashset of Set size\", 2, hashset.size());\n}\n\nTIMED_TEST(SetTests, initializerListTest_Set, TEST_TIMEOUT_DEFAULT) {\n    auto list = {60, 70};\n    auto list2 = {20, 50};\n\n    Set<int> set {10, 20, 30};\n    assertCollection(\"initial\", {10, 20, 30}, set);\n\n    set += {40, 50};\n    assertCollection(\"after +=\", {10, 20, 30, 40, 50}, set);\n\n    Set<int> copy = set + list;\n    assertCollection(\"after + (shouldn't modify)\", {10, 20, 30, 40, 50}, set);\n    assertCollection(\"after + copy\", {10, 20, 30, 40, 50, 60, 70}, copy);\n\n    copy = set - list2;\n    assertCollection(\"after - (shouldn't modify)\", {10, 20, 30, 40, 50}, set);\n    assertCollection(\"after - copy\", {10, 30, 40}, copy);\n\n    copy = set * list2;\n    assertCollection(\"after * (shouldn't modify)\", {10, 20, 30, 40, 50}, set);\n    assertCollection(\"after * copy\", {20, 50}, copy);\n\n    set -= {20, 50};\n    assertCollection(\"after -=\", {10, 30, 40}, set);\n    set *= {0, 10, 40, 99};\n    assertCollection(\"after *=\", {10, 40}, set);\n}\n\n#ifdef SPL_THROW_ON_INVALID_ITERATOR\nTIMED_TEST(SetTests, iteratorVersionTest_Set, TEST_TIMEOUT_DEFAULT) {\n    Set<int> set {1, 2, 3, 4, 1, 6, 1, 8, 2, 10};\n    try {\n        for (int n : set) {\n            if (n % 2 == 0) {\n                set.remove(n);\n            }\n        }\n        assertFail(\"should not get to end of test; should throw exception before now\");\n    } catch (ErrorException ex) {\n        assertPass(\"threw exception successfully\");\n    }\n}\n#endif // SPL_THROW_ON_INVALID_ITERATOR\n\nTIMED_TEST(SetTests, mapAllTest_Set, TEST_TIMEOUT_DEFAULT) {\n    Set<int> set {7, 5, 1, 2, 8};\n\n    int total = 0;\n    set.mapAll([&] (int value) {\n        total += value;\n    });\n\n    assertEqualsInt(\"mapAll produces correct sum.\", std::accumulate(set.begin(), set.end(), 0), total);\n}\n\nTIMED_TEST(SetTests, randomElementTest_Set, TEST_TIMEOUT_DEFAULT) {\n    Map<std::string, int> counts;\n    int RUNS = 200;\n\n    std::initializer_list<std::string> list {\"a\", \"b\", \"c\", \"d\", \"e\", \"f\"};\n\n    Set<std::string> hset(list);\n    for (int i = 0; i < RUNS; i++) {\n        std::string s = randomElement(hset);\n        counts[s]++;\n    }\n\n    for (const std::string& s : list) {\n        assertTrue(\"must choose \" + s + \" sometimes\", counts[s] > 0);\n    }\n}\n\nTIMED_TEST(SetTests, removeAndRetainTest_Set, TEST_TIMEOUT_DEFAULT) {\n    Set<int> all   = { 1, 2, 3, 4, 5, 6, 7, 8 };\n    Set<int> evens = {    2,    4,    6,    8,   10 };\n    Set<int> odds  = { 1,    3,    5,    7    };\n\n    all.removeAll(evens);\n    assertEqualsCollection(\"should just have odds left\", all, odds);\n\n    Set<int> primes   = { 2, 3, 5, 7, 11 };\n    Set<int> expected = { 3, 5, 7 };\n\n    all.retainAll(primes);\n    assertEqualsCollection(\"should have lost 1\", all, expected);\n}\n"
  },
  {
    "path": "Archived/Autograder_QtCreatorProject/src/test/collection-test-sparsegrid.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib collection functionality.\n */\n\n#include \"testcases.h\"\n#include \"sparsegrid.h\"\n#include \"hashcode.h\"\n#include \"hashset.h\"\n#include \"queue.h\"\n#include \"assertions.h\"\n#include \"collection-test-common.h\"\n#include \"gtest-marty.h\"\n#include <initializer_list>\n#include <iostream>\n#include <sstream>\n#include <string>\n\nTEST_CATEGORY(SparseGridTests, \"SparseGrid tests\");\n\n/*\n * Force instantiation of the template on a type to ensure that we don't have anything\n * insidious lurking that just didn't get compiled.\n */\ntemplate class SparseGrid<int>;\ntemplate class SparseGrid<std::string>;\n\nTIMED_TEST(SparseGridTests, compareTest_SparseGrid, TEST_TIMEOUT_DEFAULT) {\n    SparseGrid<int> sgrid1;\n    sgrid1.resize(2, 2);\n    SparseGrid<int> sgrid2;\n    sgrid2.resize(2, 3);\n    SparseGrid<int> sgrid3;\n    sgrid3.resize(3, 2);\n    compareTestHelper(sgrid1, sgrid2, \"SparseGrid\", /* compareTo */ -1);\n    compareTestHelper(sgrid2, sgrid1, \"SparseGrid\", /* compareTo */  1);\n    compareTestHelper(sgrid1, sgrid3, \"SparseGrid\", /* compareTo */ -1);\n    compareTestHelper(sgrid3, sgrid1, \"SparseGrid\", /* compareTo */  1);\n    compareTestHelper(sgrid2, sgrid3, \"SparseGrid\", /* compareTo */  1);\n    compareTestHelper(sgrid3, sgrid2, \"SparseGrid\", /* compareTo */ -1);\n    compareTestHelper(sgrid1, sgrid1, \"SparseGrid\", /* compareTo */  0);\n\n    Set<SparseGrid<int> > ssgrid {sgrid1, sgrid2, sgrid3};\n    assertEqualsString(\"ssgrid\", \"{{}, 2 x 2, {}, 3 x 2, {}, 2 x 3}\", ssgrid.toString());\n}\n\nTIMED_TEST(SparseGridTests, forEachTest_SparseGrid, TEST_TIMEOUT_DEFAULT) {\n    SparseGrid<int> grid(4, 2);\n    grid.fill(42);\n    grid[2][0] = 17;\n    grid[3][1] = 0;\n    Queue<int> expected {42, 42, 42, 42, 17, 42, 42, 0};\n    for (int n : grid) {\n        int exp = expected.dequeue();\n        assertEqualsInt(\"SparseGrid foreach\", exp, n);\n    }\n}\n\nTIMED_TEST(SparseGridTests, frontBackTest_SparseGrid, TEST_TIMEOUT_DEFAULT) {\n    SparseGrid<int> grid {{10, 20, 30}, {40, 50, 60}};\n    assertEqualsInt(\"SparseGrid front\", 10, grid.front());\n    assertEqualsInt(\"SparseGrid back\",  60, grid.back());\n}\n\nTIMED_TEST(SparseGridTests, hashCodeTest_SparseGrid, TEST_TIMEOUT_DEFAULT) {\n    SparseGrid<int> grid(2, 3);\n    grid.fill(42);\n    assertEqualsInt(\"hashcode of self SparseGrid\", hashCode(grid), hashCode(grid));\n\n    SparseGrid<int> copy = grid;\n    assertEqualsInt(\"hashcode of copy SparseGrid\", hashCode(grid), hashCode(copy));\n\n    SparseGrid<int> empty;   // empty\n    HashSet<SparseGrid<int> > hashgrid {grid, copy, empty, empty};\n\n    assertEqualsInt(\"hashset of SparseGrid size\", 2, hashgrid.size());\n}\n\nTIMED_TEST(SparseGridTests, initializerListTest_SparseGrid, TEST_TIMEOUT_DEFAULT) {\n    SparseGrid<int> grid {{10, 20, 30}, {40, 50, 60}};\n    assertEqualsInt(\"init list SparseGrid numRows\", 2, grid.numRows());\n    assertEqualsInt(\"init list SparseGrid numCols\", 3, grid.numCols());\n    assertEqualsInt(\"init list SparseGrid size\", 6, grid.size());\n    assertEqualsInt(\"init list SparseGrid[0][0]\", 10, grid[0][0]);\n    assertEqualsInt(\"init list SparseGrid[0][1]\", 20, grid[0][1]);\n    assertEqualsInt(\"init list SparseGrid[0][2]\", 30, grid[0][2]);\n    assertEqualsInt(\"init list SparseGrid[1][0]\", 40, grid[1][0]);\n    assertEqualsInt(\"init list SparseGrid[1][1]\", 50, grid[1][1]);\n    assertEqualsInt(\"init list SparseGrid[1][2]\", 60, grid[1][2]);\n}\n\n#ifdef SPL_THROW_ON_INVALID_ITERATOR\nTIMED_TEST(SparseGridTests, iteratorVersionTest_SparseGrid, TEST_TIMEOUT_DEFAULT) {\n    SparseGrid<int> grid {{10, 20, 30}, {40, 50, 60}};\n    try {\n        for (int n : grid) {\n            if (n % 2 == 0) {\n                grid.fill(42);\n            }\n        }\n        assertFail(\"should not get to end of test; should throw exception before now\");\n    } catch (ErrorException ex) {\n        assertPass(\"threw exception successfully\");\n    }\n}\n#endif // SPL_THROW_ON_INVALID_ITERATOR\n\nTIMED_TEST(SparseGridTests, randomElementTest_Grid, TEST_TIMEOUT_DEFAULT) {\n    Map<std::string, int> counts;\n    int RUNS = 200;\n\n    std::initializer_list<std::string> list {\"a\", \"b\", \"c\", \"d\", \"e\", \"f\"};\n\n    SparseGrid<std::string> grid;\n    grid.resize(2, 3);\n    grid[0][0] = \"a\";\n    grid[0][1] = \"b\";\n    grid[0][2] = \"c\";\n    grid[1][0] = \"d\";\n    grid[1][1] = \"e\";\n    grid[1][2] = \"f\";\n    for (int i = 0; i < RUNS; i++) {\n        std::string s = randomElement(grid);\n        counts[s]++;\n    }\n\n    for (const std::string& s : list) {\n        assertTrue(\"must choose \" + s + \" sometimes\", counts[s] > 0);\n    }\n}\n"
  },
  {
    "path": "Archived/Autograder_QtCreatorProject/src/test/collection-test-stack.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib collection functionality.\n */\n\n#include \"testcases.h\"\n#include \"stack.h\"\n#include \"hashcode.h\"\n#include \"hashset.h\"\n#include \"queue.h\"\n#include \"assertions.h\"\n#include \"collection-test-common.h\"\n#include \"gtest-marty.h\"\n#include <initializer_list>\n#include <iostream>\n#include <sstream>\n#include <string>\n\nTEST_CATEGORY(StackTests, \"Stack tests\");\n\n/* Force instantiation of the template on a type to ensure that we don't have anything\n * insidious lurking that just didn't get compiled.\n */\ntemplate class Stack<int>;\ntemplate class Stack<std::string>;\n\nTIMED_TEST(StackTests, compareTest_Stack, TEST_TIMEOUT_DEFAULT) {\n    Stack<int> s1;\n    s1.add(1);\n    s1.add(2);\n    s1.add(1);\n    s1.add(5);\n    Stack<int> s2;\n    s2.add(1);\n    s2.add(2);\n    s2.add(1);\n    s2.add(4);\n    s2.add(7);\n    compareTestHelper(s1, s2, \"Stack\", /* compareTo */  1);\n    compareTestHelper(s2, s1, \"Stack\", /* compareTo */ -1);\n    compareTestHelper(s1, s1, \"Stack\", /* compareTo */  0);\n\n    Set<Stack<int> > ss {s1, s2};\n    assertEqualsString(\"ss\", \"{{1, 2, 1, 4, 7}, {1, 2, 1, 5}}\", ss.toString());\n}\n\nTIMED_TEST(StackTests, hashCodeTest_Stack, TEST_TIMEOUT_DEFAULT) {\n    Stack<int> stack;\n    stack.add(69);\n    stack.add(42);\n    assertEqualsInt(\"hashcode of self Stack\", hashCode(stack), hashCode(stack));\n\n    Stack<int> copy = stack;\n    assertEqualsInt(\"hashcode of copy Stack\", hashCode(stack), hashCode(copy));\n\n    Stack<int> empty;\n    HashSet<Stack<int> > hashstack {stack, copy, empty, empty};\n    assertEqualsInt(\"hashset of Stack size\", 2, hashstack.size());\n}\n\nTIMED_TEST(StackTests, initializerListTest_Stack, TEST_TIMEOUT_DEFAULT) {\n    Stack<int> stack {10, 20, 30};\n    assertEqualsString(\"init list Stack\", \"{10, 20, 30}\", stack.toString());\n}\n\n"
  },
  {
    "path": "Archived/Autograder_QtCreatorProject/src/test/collection-test-vector.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib collection functionality.\n */\n\n#include \"testcases.h\"\n#include \"stack.h\"\n#include \"hashcode.h\"\n#include \"hashset.h\"\n#include \"queue.h\"\n#include \"assertions.h\"\n#include \"collection-test-common.h\"\n#include \"gtest-marty.h\"\n#include <initializer_list>\n#include <iostream>\n#include <sstream>\n#include <string>\n#include <numeric>\n\nTEST_CATEGORY(VectorTests, \"Vector tests\");\n\n/* Force instantiation of Vector on a few types to make sure we didn't miss anything.\n * These types must be comparable and hashable to avoid instaniating functions we\n * can't support.\n */\ntemplate class Vector<int>;\ntemplate class Vector<bool>;\ntemplate class Vector<std::string>;\n\nTIMED_TEST(VectorTests, basicsTest_Vector, TEST_TIMEOUT_DEFAULT) {\n    Vector<int> values;\n    for (int i = 0; i < 1000; i++) {\n        values += i;\n    }\n\n    assertEqualsInt(\"Size is 1000\", values.size(), 1000);\n    assertFalse(\"Vector isn't empty.\", values.isEmpty());\n\n    for (int i = 0; i < 1000; i++) {\n        assertEquals(\"Vector entry at position \" + std::to_string(i) + \" is correct.\",\n                     values[i], i);\n    }\n\n    /* Mutate things. */\n    for (int& elem: values) {\n        elem *= 2;\n    }\n\n    assertEqualsInt(\"Size is 1000\", values.size(), 1000);\n    assertFalse(\"Vector isn't empty.\", values.isEmpty());\n\n    for (int i = 0; i < 1000; i++) {\n        assertEquals(\"Vector entry at position \" + std::to_string(i) + \" is correct.\",\n                     values[i], 2 * i);\n    }\n}\n\nTIMED_TEST(VectorTests, compareTest_Vector, TEST_TIMEOUT_DEFAULT) {\n    Vector<int> v1 {1, 2, 4, 5};\n    Vector<int> v2 {1, 3, 1, 4, 8};\n    Vector<int> v3 {1, 1, 7};\n    Vector<int> v4 {2, 0};\n    Vector<int> v5 {1, 2, 4, 5, 6, 7};\n    Vector<int> v6;  // empty\n    compareTestHelper(v1, v2, \"Vector\", /* compareTo */ -1);\n    compareTestHelper(v1, v3, \"Vector\", /* compareTo */  1);\n    compareTestHelper(v1, v4, \"Vector\", /* compareTo */ -1);\n    compareTestHelper(v1, v5, \"Vector\", /* compareTo */ -1);\n    compareTestHelper(v1, v6, \"Vector\", /* compareTo */  1);\n    compareTestHelper(v2, v3, \"Vector\", /* compareTo */  1);\n    compareTestHelper(v2, v4, \"Vector\", /* compareTo */ -1);\n    compareTestHelper(v2, v5, \"Vector\", /* compareTo */  1);\n    compareTestHelper(v2, v6, \"Vector\", /* compareTo */  1);\n    compareTestHelper(v3, v4, \"Vector\", /* compareTo */ -1);\n    compareTestHelper(v3, v5, \"Vector\", /* compareTo */ -1);\n    compareTestHelper(v3, v6, \"Vector\", /* compareTo */  1);\n    compareTestHelper(v4, v5, \"Vector\", /* compareTo */  1);\n    compareTestHelper(v4, v6, \"Vector\", /* compareTo */  1);\n    compareTestHelper(v5, v6, \"Vector\", /* compareTo */  1);\n\n    Set<Vector<int> > sv {v1, v2, v3, v4, v5, v6};\n    assertEqualsString(\"sv\", \"{{}, {1, 1, 7}, {1, 2, 4, 5}, {1, 2, 4, 5, 6, 7}, {1, 3, 1, 4, 8}, {2, 0}}\", sv.toString());\n}\n\nTIMED_TEST(VectorTests, concatTest_Vector, TEST_TIMEOUT_DEFAULT) {\n    Vector<int> lhs =      {  1,  3,  5,  7,  9 };\n    Vector<int> rhs =      { 11, 13, 15, 17, 19 };\n    auto expected   =      {  1,  3,  5,  7,  9,\n                             11, 13, 15, 17, 19 };\n\n    auto lhsBackup  =      {  1,  3,  5,  7,  9 };\n    auto rhsBackup  =      { 11, 13, 15, 17, 19 };\n\n    /* Confirm that Vector + Vector works. */\n    assertCollection(\"basic concat\", expected, lhs + rhs);\n    assertCollection(\"don't change operands\", lhsBackup, lhs);\n    assertCollection(\"don't change operands\", rhsBackup, rhs);\n\n    /* Try appending individual values. */\n    Vector<int> before = { 1, 3, 5, 7 };\n    auto beforeBackup  = { 1, 3, 5, 7 };\n    auto after         = { 1, 3, 5, 7, 9 };\n\n    assertCollection(\"single elem concat\", after, before + 9);\n    assertCollection(\"don't change operands\", beforeBackup, before);\n}\n\nTIMED_TEST(VectorTests, forEachTest_Vector, TEST_TIMEOUT_DEFAULT) {\n    Vector<int> v1 {1, 2, 3};\n    assertCollection(\"foreach Vector\", {1, 2, 3}, v1);\n\n    Vector<std::string> v2 {\"a\", \"b\", \"c\"};\n    std::initializer_list<std::string> list {\"a\", \"b\", \"c\"};\n    assertCollection(\"foreach Vector\", list, v2);\n}\n\nTIMED_TEST(VectorTests, frontBackTest_Vector, TEST_TIMEOUT_DEFAULT) {\n    Vector<int> v {10, 20, 30, 40};\n    assertEqualsInt(\"Vector front\", 10, v.front());\n    assertEqualsInt(\"Vector back\",  40, v.back());\n}\n\nTIMED_TEST(VectorTests, hashCodeTest_Vector, TEST_TIMEOUT_DEFAULT) {\n    Vector<int> v;\n    v.add(69);\n    v.add(42);\n    assertEqualsInt(\"hashcode of self Vector\", hashCode(v), hashCode(v));\n\n    Vector<int> copy = v;\n    assertEqualsInt(\"hashcode of copy Vector\", hashCode(v), hashCode(copy));\n\n    Vector<int> empty;\n    HashSet<Vector<int> > hashvec {v, copy, empty, empty};\n    assertEqualsInt(\"hashset of Vector size\", 2, hashvec.size());\n}\n\nTIMED_TEST(VectorTests, indexOfTest_Vector, TEST_TIMEOUT_DEFAULT) {\n    //                0   1   2   3   4   5   6   7  8\n    Vector<int> vec {10, 20, 30, 10, 40, 10, 50, 60, 0};\n    assertEqualsInt(\"indexOf 10\", 0, vec.indexOf(10));\n    assertEqualsInt(\"indexOf 20\", 1, vec.indexOf(20));\n    assertEqualsInt(\"indexOf 50\", 6, vec.indexOf(50));\n    assertEqualsInt(\"indexOf 99\", -1, vec.indexOf(99));\n\n    assertEqualsInt(\"lastIndexOf 10\", 5, vec.lastIndexOf(10));\n    assertEqualsInt(\"lastIndexOf 20\", 1, vec.lastIndexOf(20));\n    assertEqualsInt(\"lastIndexOf 0\",  8, vec.lastIndexOf(0));\n    assertEqualsInt(\"lastIndexOf 99\", -1, vec.lastIndexOf(99));\n\n    assertEqualsBool(\"contains 10\", true, vec.contains(10));\n    assertEqualsBool(\"contains 20\", true, vec.contains(20));\n    assertEqualsBool(\"contains 50\", true, vec.contains(50));\n    assertEqualsBool(\"contains 70\", false, vec.contains(70));\n    assertEqualsBool(\"contains -1\", false, vec.contains(-1));\n    assertEqualsBool(\"contains 99\", false, vec.contains(99));\n}\n\nTIMED_TEST(VectorTests, initializerListTest_Vector, TEST_TIMEOUT_DEFAULT) {\n    auto list = {60, 70};\n\n    Vector<int> vec {10, 20, 30};\n    assertCollection(\"initial\", {10, 20, 30}, vec);\n\n    vec += {40, 50};\n    assertCollection(\"after +=\", {10, 20, 30, 40, 50}, vec);\n\n    Vector<int> copy = vec + list;\n    assertCollection(\"after + (shouldn't modify)\", {10, 20, 30, 40, 50}, vec);\n    assertCollection(\"after + copy\", {10, 20, 30, 40, 50, 60, 70}, copy);\n}\n\nTIMED_TEST(VectorTests, insertTest_Vector, TEST_TIMEOUT_DEFAULT) {\n    /* Confirm that insert works at all the right positions, and no other positions. */\n    static const int kNumElems = 137;\n\n    for (int i = 0; i <= kNumElems; i++) {\n        Vector<int> values;\n        for (int j = 0; j < kNumElems; j++) {\n            values += j;\n        }\n        assertEqualsInt(\"Vector has proper size\", kNumElems, values.size());\n\n        values.insert(i, kNumElems + 1);\n        assertEqualsInt(\"Vector was resized.\", kNumElems + 1, values.size());\n\n        /* Confirm all the values are correct. */\n        for (int j = 0; j < i; j++) {\n            assertEqualsInt(\"prior elements unchanged\", values[j], j);\n        }\n        assertEqualsInt(\"new element inserted\", values[i], kNumElems + 1);\n        for (int j = i + 1; j < values.size(); j++) {\n            assertEqualsInt(\"post elements unchanged\", values[j], j - 1);\n        }\n    }\n}\n\nTIMED_TEST(VectorTests, iteratorConversionTest_Vector, TEST_TIMEOUT_DEFAULT) {\n    Vector<int> v {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};\n    const auto& cv = v;\n\n    assertTrue(\"Const and non-const iterators to same element compare equal.\", v.begin() == cv.begin());\n    assertTrue(\"Const and non-const iterators to past-end compare equal.\", v.end() == cv.end());\n}\n\nTIMED_TEST(VectorTests, iteratorRangeCheckingTest_Vector, TEST_TIMEOUT_DEFAULT) {\n    Vector<int> v {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};\n\n    /* Should fail if we try to back up past beginning. */\n    try {\n        auto itr = v.begin();\n        --itr;\n        assertFail(\"Should have triggered an error decrementing start-of-range\");\n    } catch (const ErrorException &) {\n\n    }\n    try {\n        auto itr = v.begin();\n        itr--;\n        assertFail(\"Should have triggered an error decrementing start-of-range\");\n    } catch (const ErrorException &) {\n\n    }\n\n    /* Should fail if we try to advance past end. */\n    try {\n        auto itr = v.end();\n        ++itr;\n        assertFail(\"Should have triggered an error incrementing end-of-range.\");\n    } catch (const ErrorException &) {\n\n    }\n    try {\n        auto itr = v.end();\n        ++itr;\n        assertFail(\"Should have triggered an error incrementing end-of-range.\");\n    } catch (const ErrorException &) {\n\n    }\n\n    /* Should fail if we try to use random access to jump out of range. */\n    try {\n        auto itr = v.begin();\n        itr[137] = 42;\n        assertFail(\"Should have triggered an error incrementing end-of-range.\");\n    } catch (const ErrorException &) {\n\n    }\n    try {\n        auto itr = v.begin();\n        itr[137] = 42;\n        assertFail(\"Should have triggered an error incrementing end-of-range.\");\n    } catch (const ErrorException &) {\n\n    }\n\n    /* Should NOT fail if we try to use random access to jump into range. */\n    try {\n        auto itr = v.begin();\n        itr[9] = 137;\n    } catch (const ErrorException &) {\n        assertFail(\"Triggered an exception trying to go in range.\");\n    }\n    try {\n        auto itr = v.end();\n        itr[-10] = 42;\n    } catch (const ErrorException &) {\n        assertFail(\"Triggered an exception trying to go in range.\");\n    }\n\n    /* Should fail doing ANYTHING except comparisons with a singular iterator. */\n    try {\n        Vector<int>::iterator itr;\n        itr++;\n        assertFail(\"No exception triggered incrementing singular iterator.\");\n    } catch (const ErrorException &) {\n\n    }\n    try {\n        Vector<int>::iterator itr;\n        ++itr;\n        assertFail(\"No exception triggered incrementing singular iterator.\");\n    } catch (const ErrorException &) {\n\n    }\n    try {\n        Vector<int>::iterator itr;\n        itr--;\n        assertFail(\"No exception triggered decrementing singular iterator.\");\n    } catch (const ErrorException &) {\n\n    }\n    try {\n        Vector<int>::iterator itr;\n        --itr;\n        assertFail(\"No exception triggered incrementing singular iterator.\");\n    } catch (const ErrorException &) {\n\n    }\n    try {\n        Vector<std::string>::iterator itr;\n        *itr;\n        assertFail(\"No exception triggered dereferencing singular iterator.\");\n    } catch (const ErrorException &) {\n\n    }\n\n    try {\n        Vector<std::string>::iterator itr;\n        itr->size();\n        assertFail(\"No exception triggered dereferencing singular iterator.\");\n    } catch (const ErrorException &) {\n\n    }\n    try {\n        Vector<std::string>::iterator itr;\n        itr[137];\n        assertFail(\"No exception triggered dereferencing singular iterator.\");\n    } catch (const ErrorException &) {\n\n    }\n    try {\n        Vector<int>::iterator itr;\n        itr - v.begin();\n        assertFail(\"No exception triggered subtracting singular iterator.\");\n    } catch (const ErrorException &) {\n\n    }\n    try {\n        Vector<int>::iterator itr;\n        v.begin() - itr;\n        assertFail(\"No exception triggered subtracting singular iterator.\");\n    } catch (const ErrorException &) {\n\n    }\n    try {\n        Vector<int>::iterator itr;\n        (void)(itr == v.begin());\n        assertFail(\"No exception comparing singular iterators.\");\n    } catch (const ErrorException &) {\n\n    }\n    try {\n        Vector<int>::iterator itr;\n        (void)(itr != v.begin());\n        assertFail(\"No exception comparing singular iterators.\");\n    } catch (const ErrorException &) {\n\n    }\n    try {\n        Vector<int>::iterator itr;\n        (void)(itr < v.begin());\n        assertFail(\"No exception comparing singular iterators.\");\n    } catch (const ErrorException &) {\n\n    }\n    try {\n        Vector<int>::iterator itr;\n        (void)(itr <= v.begin());\n        assertFail(\"No exception comparing singular iterators.\");\n    } catch (const ErrorException &) {\n\n    }\n    try {\n        Vector<int>::iterator itr;\n        (void)(itr >= v.begin());\n        assertFail(\"No exception comparing singular iterators.\");\n    } catch (const ErrorException &) {\n\n    }\n    try {\n        Vector<int>::iterator itr;\n        (void)(itr >  v.begin());\n        assertFail(\"No exception comparing singular iterators.\");\n    } catch (const ErrorException &) {\n\n    }\n\n    try {\n        Vector<int>::iterator itr;\n        (void)(v.begin() == itr);\n        assertFail(\"No exception comparing singular iterators.\");\n    } catch (const ErrorException &) {\n\n    }\n    try {\n        Vector<int>::iterator itr;\n        (void)(v.begin() != itr);\n        assertFail(\"No exception comparing singular iterators.\");\n    } catch (const ErrorException &) {\n\n    }\n    try {\n        Vector<int>::iterator itr;\n        (void)(v.begin() < itr);\n        assertFail(\"No exception comparing singular iterators.\");\n    } catch (const ErrorException &) {\n\n    }\n    try {\n        Vector<int>::iterator itr;\n        (void)(v.begin() <= itr);\n        assertFail(\"No exception comparing singular iterators.\");\n    } catch (const ErrorException &) {\n\n    }\n    try {\n        Vector<int>::iterator itr;\n        (void)(v.begin() >= itr);\n        assertFail(\"No exception comparing singular iterators.\");\n    } catch (const ErrorException &) {\n\n    }\n    try {\n        Vector<int>::iterator itr;\n        (void)(v.begin() > itr);\n        assertFail(\"No exception comparing singular iterators.\");\n    } catch (const ErrorException &) {\n\n    }\n\n    /* Shouldn't be able to do anything with iterators from two different\n     * containers.\n     */\n    try {\n        Vector<int> v2;\n        (void)(v.begin() == v2.begin());\n        assertFail(\"No exception comparing iterators from different containers.\");\n    } catch (const ErrorException &) {\n\n    }\n    try {\n        Vector<int> v2;\n        (void)(v.begin() != v2.begin());\n        assertFail(\"No exception comparing iterators from different containers.\");\n    } catch (const ErrorException &) {\n\n    }\n    try {\n        Vector<int> v2;\n        (void)(v.begin() < v2.begin());\n        assertFail(\"No exception comparing iterators from different containers.\");\n    } catch (const ErrorException &) {\n\n    }\n    try {\n        Vector<int> v2;\n        (void)(v.begin() <= v2.begin());\n        assertFail(\"No exception comparing iterators from different containers.\");\n    } catch (const ErrorException &) {\n\n    }\n    try {\n        Vector<int> v2;\n        (void)(v.begin() >= v2.begin());\n        assertFail(\"No exception comparing iterators from different containers.\");\n    } catch (const ErrorException &) {\n\n    }\n    try {\n        Vector<int> v2;\n        (void)(v.begin() > v2.begin());\n        assertFail(\"No exception comparing iterators from different containers.\");\n    } catch (const ErrorException &) {\n\n    }\n    try {\n        Vector<int> v2;\n        v.begin() - v2.begin();\n        assertFail(\"No exception subtracting iterators from different containers.\");\n    } catch (const ErrorException &) {\n\n    }\n}\n\n#ifdef SPL_THROW_ON_INVALID_ITERATOR\nTIMED_TEST(VectorTests, iteratorVersionTest_Vector, TEST_TIMEOUT_DEFAULT) {\n    Vector<int> v1 {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};\n    try {\n        for (int n : v1) {\n            if (n % 2 == 0) {\n                v1.remove(v1.size() - 1);\n            }\n        }\n        assertFail(\"should not get to end of test; should throw exception before now\");\n    } catch (ErrorException ex) {\n        assertPass(\"threw exception successfully\");\n    }\n}\n#endif // SPL_THROW_ON_INVALID_ITERATOR\n\nTIMED_TEST(VectorTests, mapAllTest_Vector, TEST_TIMEOUT_DEFAULT) {\n    Vector<int> set {7, 5, 1, 2, 8};\n\n    int total = 0;\n    set.mapAll([&] (int value) {\n        total += value;\n    });\n\n    assertEqualsInt(\"mapAll produces correct sum.\", std::accumulate(set.begin(), set.end(), 0), total);\n}\n\nTIMED_TEST(VectorTests, randomElementTest_Vector, TEST_TIMEOUT_DEFAULT) {\n    Map<std::string, int> counts;\n    int RUNS = 200;\n\n    std::initializer_list<std::string> list {\"a\", \"b\", \"c\", \"d\", \"e\", \"f\"};\n\n    Vector<std::string> v(list);\n    for (int i = 0; i < RUNS; i++) {\n        std::string s = randomElement(v);\n        counts[s]++;\n    }\n\n    for (const std::string& s : list) {\n        assertTrue(\"must choose \" + s + \" sometimes\", counts[s] > 0);\n    }\n}\n\nTIMED_TEST(VectorTests, removeValueTest_Vector, TEST_TIMEOUT_DEFAULT) {\n    //                0   1   2   3   4   5   6   7  8\n    Vector<int> vec {10, 20, 30, 10, 40, 10, 50, 60, 0};\n    vec.removeValue(40);\n    vec.removeValue(10);\n    vec.removeValue(10);\n    vec.removeValue(0);\n    Vector<int> exp {20, 30, 10, 50, 60};\n    assertEqualsString(\"after removes\", exp.toString(), vec.toString());\n}\n\nTIMED_TEST(VectorTests, reverseTest_Vector, TEST_TIMEOUT_DEFAULT) {\n    //                0   1   2   3   4   5   6   7   8   9  10\n    Vector<int> vec {70, 30, 20, 10, 40, 90, 10, 50,  0, 60, 50};\n    vec.reverse();\n    Vector<int> exp {50, 60, 0, 50, 10, 90, 40, 10, 20, 30, 70};\n    assertEqualsString(\"after reverse\", exp.toString(), vec.toString());\n}\n\nTIMED_TEST(VectorTests, shuffleTest, TEST_TIMEOUT_DEFAULT) {\n    Vector<int> v {10, 20, 30, 40, 50};\n    Map<int, Map<int, int> > valueIndexCount;\n\n    // shuffle 100 times\n    for (int i = 0; i < 100; i++) {\n        v.shuffle();\n        for (int j = 0; j < v.size(); j++) {\n            valueIndexCount[v[j]][j]++;\n        }\n    }\n\n    // make sure each value appeared at each index at least once\n    for (int n : v) {\n        for (int j = 0; j < v.size(); j++) {\n            assertNotEqualsInt(\"\", 0, valueIndexCount[n][j]);\n        }\n    }\n}\n\nTIMED_TEST(VectorTests, sortTest_Vector, TEST_TIMEOUT_DEFAULT) {\n    //                0   1   2   3   4   5   6   7   8   9  10\n    Vector<int> vec {70, 30, 20, 10, 40, 90, 10, 50,  0, 60, 50};\n    vec.sort();\n    Vector<int> exp { 0, 10, 10, 20, 30, 40, 50, 50, 60, 70, 90};\n    assertEqualsString(\"after sort\", exp.toString(), vec.toString());\n}\n\nTIMED_TEST(VectorTests, streamExtractTest_Vector, TEST_TIMEOUT_DEFAULT) {\n    std::istringstream vstream(\"{1, 2, 3}\");\n    Vector<int> v;\n    vstream >> v;\n    assertEqualsString(\"v\", \"{1, 2, 3}\", v.toString());\n}\n\nTIMED_TEST(VectorTests, streamExtractTest_Vector2bad, TEST_TIMEOUT_DEFAULT) {\n    Vector<int> v;\n    std::istringstream vstreambad(\"1, 2, 3}\");\n    bool result = bool(vstreambad >> v);\n    assertFalse(\"operator >> on bad vector\", result);\n}\n\nTIMED_TEST(VectorTests, sublistTest_Vector, TEST_TIMEOUT_DEFAULT) {\n    Vector<int> values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};\n\n    /* Brute-force check all two-arg sublists. */\n    for (int start = 0; start <= values.size(); start++) {\n        for (int length = 0; length + start <= values.size(); length++) {\n            Vector<int> sub = values.subList(start, length);\n            assertEqualsInt(\"has right length\", length, sub.size());\n\n            for (int i = 0; i < length; i++) {\n                assertEqualsInt(\"has right values\", i + start, sub[i]);\n            }\n        }\n    }\n\n    /* Brute-force check all one-arg sublists. */\n    for (int start = 0; start <= values.size(); start++) {\n        Vector<int> sub = values.subList(start);\n        assertEqualsInt(\"has right length\", values.size() - start, sub.size());\n\n        for (int i = 0; i < sub.size(); i++) {\n            assertEqualsInt(\"has right values\", i + start, sub[i]);\n        }\n    }\n}\n"
  },
  {
    "path": "Archived/Autograder_QtCreatorProject/src/test/exceptionTests.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib exception functionality.\n */\n\n#include \"testcases.h\"\n#include \"error.h\"\n#include \"exceptions.h\"\n#include \"recursion.h\"\n#include \"vector.h\"\n#include <csignal>\n#include <iostream>\n#include <string>\nusing namespace std;\n\nnamespace MyNS {\n    class LoL {\n    public:\n        static int cCcCc_cCcCc(int, char*, double, char, bool) {\n            cout << \"function c start\" << endl;\n            cout << endl;\n            // error(\"blargh!\");\n            Vector<int> v;\n            v.get(42);  // lolol\n            cout << \"function c end\" << endl;\n            return 0;\n        }\n    };\n}\n\nvoid b() {\n    cout << \"function b start\" << endl;\n    MyNS::LoL::cCcCc_cCcCc(0, nullptr, 0, 0, false);\n    cout << \"function b end\" << endl;\n}\n\nvoid a() {\n    cout << \"function a start\" << endl;\n    b();\n    cout << \"function a end\" << endl;\n}\n\nvoid exceptionTest() {\n    a();\n}\n\nint rihelper(int k) {\n    std::cout << recursionIndent() << \"riHelper(\" << k << \")\" << endl;\n    if (k <= 0) {\n        return k;\n    } else {\n        int a = rihelper(k - 1);\n        int b = rihelper(k - 2);\n        return a + b;\n    }\n}\n\nvoid recursionIndentTest() {\n    rihelper(3);\n}\n\n// commenting out because of compiler warning about infinite recursion\nvoid stackOverflowTest(int n) {\n    int a[100] = {0};\n    if (a[0] || n % 1000 == 0) {\n        cout << \"stack overflow n=\" << n << endl;\n    }\n    if (!a[0]) {\n        stackOverflowTest(n+1);\n    }\n}\n\nvoid segC_theOneThatActuallyThrows(int sig) {\n    if (sig == SIGFPE) {\n        // divide by 0 (generate SIGFPE)\n        int a = 1;\n        int b = 0;\n        cout << (a/b) << endl;\n    } else if (sig == SIGSEGV) {\n        // dereference a NULL pointer (generate SIGSEGV)\n        int* foo = nullptr;\n        cout << *foo << endl;\n    } else if (sig == SIGABRT) {\n        // cause program to \"abort\" (generate SIGABRT)\n        abort();\n    }\n    cout << \"will never get here lol\" << endl;\n}\n\nvoid segB(int sig) {\n    segC_theOneThatActuallyThrows(sig);\n}\n\nvoid segA(int sig) {\n    segB(sig);\n}\n\nvoid segfaultTest(int sig) {\n    if (sig == 0) {\n        sig = SIGSEGV;\n    }\n    cout << \"Hello, world!\" << endl;\n    segA(sig);\n}\n\n\nTEST_CATEGORY(ExceptionTests, \"Exception tests\");\n\n// test raising various kinds of exceptions\nTIMED_TEST(ExceptionTests, ErrorExceptionTest, TEST_TIMEOUT_DEFAULT) {\n    exceptionTest();\n}\n\nvoid excepB() {\n    int x = 42;\n    string s = \"hi\";\n    s += x;\n    throw 42;\n}\n\nvoid excepA() {\n    int x = 42;\n    string s = \"hi\";\n    s += x;\n    excepB();\n}\n\nTIMED_TEST(ExceptionTests, IntExceptionTest, TEST_TIMEOUT_DEFAULT * 1000) {\n    excepA();\n}\n\nTIMED_TEST(ExceptionTests, DoubleExceptionTest, TEST_TIMEOUT_DEFAULT) {\n    throw 3.14;\n}\n\nTIMED_TEST(ExceptionTests, StringExceptionTest, TEST_TIMEOUT_DEFAULT) {\n    throw string(\"oh crap\");\n}\n\nTIMED_TEST(ExceptionTests, CharStarExceptionTest, TEST_TIMEOUT_DEFAULT) {\n    throw \"oh crap!!\";\n}\n\nTIMED_TEST(ExceptionTests, StdExceptionTest, TEST_TIMEOUT_DEFAULT) {\n    throw std::exception();\n}\n\n// test raising various kinds of signals\nTIMED_TEST(ExceptionTests, SegfaultTest, TEST_TIMEOUT_DEFAULT) {\n    segfaultTest(SIGSEGV);\n}\n\nTIMED_TEST(ExceptionTests, SIGFPETest, TEST_TIMEOUT_DEFAULT) {\n    segfaultTest(SIGFPE);\n}\n\n// can't test SIGABRT because Google Test framework needs to capture it\n//TIMED_TEST(ExceptionTests, AbortTest, TEST_TIMEOUT_DEFAULT) {\n//    segfaultTest(SIGABRT);\n//}\n\n// test stack overflow\n// (commenting out because we currently can't gracefully catch stack overflows)\n//TIMED_TEST(ExceptionTests, StackOverflowTest, TEST_TIMEOUT_DEFAULT) {\n//    stackOverflowTest(42);\n//}\n"
  },
  {
    "path": "Archived/Autograder_QtCreatorProject/src/test/guiTests.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib GUI functionality.\n */\n\n#include \"testcases.h\"\n#include \"filelib.h\"\n#include \"gbufferedimage.h\"\n#include \"gevents.h\"\n#include \"gfilechooser.h\"\n#include \"ginteractors.h\"\n#include \"gobjects.h\"\n#include \"goptionpane.h\"\n#include \"gtable.h\"\n#include \"gtypes.h\"\n#include \"gwindow.h\"\n#include \"simpio.h\"\n\n#include <csignal>\n#include <fstream>\n#include <iomanip>\n#include <iostream>\n#include <string>\nusing namespace std;\n\nvoid fileDialogTest() {\n    // std::cout << \"current dir should be \\\"\" << getCurrentDirectory() << \"\\\"\" << std::endl;\n    std::ifstream input;\n    std::string filename = openFileDialog(input, \"booyahtitle\", \"/usr/lib/eclipse\");\n    std::cout << \"you chose \\\"\" << filename << \"\\\"\" << std::endl;\n}\n\nvoid goptionpaneTest() {\n    GOptionPane::showMessageDialog(\"Hello, world\");\n    GOptionPane::showMessageDialog(\"Here's one with title and type\", \"booyah\", GOptionPane::MESSAGE_ERROR);\n    GOptionPane::showMessageDialog(\"special chars [*+*&}{] && || !)@(*&#)(&^%!{ \\\" \\\" \\\" \\\"}) C:\\\\Program Files\\\\Test ;,;:\\\", ';\\\"\\\\//\\\\// ( ) test 1 2 3 $a $b %a %b %1 %2 http://foo.com/! end\");\n    \n    bool result = GOptionPane::showConfirmDialog(\"Are you sure?\");\n    std::cout << \"you chose: \" << std::boolalpha << result << std::endl;\n    result = GOptionPane::showConfirmDialog(\"Here's one with title and type\", \"booyah\", GOptionPane::CONFIRM_OK_CANCEL);\n    std::cout << \"you chose: \" << std::boolalpha << result << std::endl;\n    result = GOptionPane::showConfirmDialog(\"Here's a second one with title and type\", \"booyah\", GOptionPane::CONFIRM_YES_NO_CANCEL);\n    std::cout << \"you chose: \" << std::boolalpha << result << std::endl;\n    \n    std::string input = GOptionPane::showInputDialog(\"Type something:\");\n    std::cout << \"you typed: \\\"\" << input << \"\\\"\" << std::endl;\n    input = GOptionPane::showInputDialog(\"Here's one with a title\", \"booyah\");\n    std::cout << \"you typed: \\\"\" << input << \"\\\"\" << std::endl;\n    \n    Vector<std::string> choices;\n    choices += \"a\", \"bb\", \"ccc\", \"dd\";\n    std::string option = GOptionPane::showOptionDialog(\"choose!\", choices, \"booyah\", \"ccc\");\n    std::cout << \"you chose: \\\"\" << option << \"\\\"\" << std::endl;\n}\n\nstatic void border(GBufferedImage* img) {\n    int color = 0x0;\n    int w = img->getWidth();\n    int h = img->getHeight();\n    // top/bottom\n    for (int x = 0; x < w; x++) {\n        img->setRGB(x, 0, color);\n        img->setRGB(x, h-1, color);\n    }\n    // left/right\n    for (int y = 0; y < h; y++) {\n        img->setRGB(0, y, color);\n        img->setRGB(w-1, y, color);\n    }\n}\n\nvoid gbufferedImageTest() {\n    GWindow* gw = new GWindow;\n    gw->setSize(900, 700);\n    gw->setTitle(\"Test\");\n\n    GButton* button1 = new GButton(\"Click Me 1\");\n    gw->add(button1, 250, 80);\n    //GButton* button2 = new GButton(\"Click Me 2\");\n    //gw->addToRegion(button2, \"NORTH\");\n\n    GLabel* label = new GLabel(\"test!\");\n    gw->add(label, 10, 60);\n    \n    std::cout << \"About to construct GBufferedImage.\" << std::endl;\n    GBufferedImage* img = new GBufferedImage(200, 250);\n    img->setLocation(10, 80);\n    std::cout << \"Done constructing GBufferedImage.\" << std::endl;\n    gw->add(img, 50, 50);\n    // gw->addToRegion(img, \"SOUTH\");\n    gw->setVisible(true);\n    \n//    GBufferedImage* img2 = new GBufferedImage(20, 20);\n//    img2->fill(GBufferedImage::createRgbPixel(255, 0, 255));\n//    Grid<int> grid = img2->toGrid();\n//    cout << \"grid of pixels before: \" << grid << endl;\n//    for (int y = 4; y <= 18; y++) {\n//        for (int x = 2; x <= 9; x++) {\n//            grid[y][x] = GBufferedImage::createRgbPixel(0, 255, 0);\n//        }\n//    }\n//    cout << \"grid of pixels after: \" << grid << endl;\n//    img2->fromGrid(grid);\n//    gw->add(img2, 350, 20);\n    \n    GBufferedImage* img3 = new GBufferedImage();\n    img3->load(\"rainbow.png\");\n    cout << \"adding the image!\" << endl;\n    gw->add(img3, 10, 20);\n    // pause(2000);\n    \n    cout << \"start toGrid\" << endl;\n    Grid<int> grid3 = img3->toGrid();\n    cout << \"end toGrid, start rgb shit\" << endl;\n    for (int y = 0; y < grid3.height(); y++) {\n        for (int x = 0; x < grid3.width(); x++) {\n            int red, green, blue;\n            GBufferedImage::getRedGreenBlue(grid3[y][x], red, green, blue);\n            grid3[y][x] = GBufferedImage::createRgbPixel(green, red, blue);\n        }\n    }\n    cout << \"end rgb shit, start fromGrid\" << endl;\n    img3->fromGrid(grid3);\n    cout << \"end fromGrid\" << endl;\n    \n    pause(2000);\n\n    // fill\n    img->fill(0xff00ff);  // purple\n\n    std::cout << \"About to setRGB on GBufferedImage.\" << std::endl;\n    for (int y = 2; y < img->getHeight() - 2; y++) {\n        for (int x = 5; x <= img->getWidth() - 5; x++) {\n            img->setRGB(x, y, 0xffcc33);\n        }\n    }\n    std::cout << \"Done setting RGB on GBufferedImage.\" << std::endl;\n    border(img);\n    pause(500);\n    \n    std::cout << \"About to resize on GBufferedImage.\" << std::endl;\n    img->resize(100, 50);\n    border(img);\n    pause(500);\n    \n    std::cout << \"About to resize on GBufferedImage.\" << std::endl;\n    img->resize(200, 80);\n    border(img);\n    pause(500);\n    \n    std::cout << \"About to setRGB on GBufferedImage.\" << std::endl;\n    for (int y = 10; y < img->getHeight() - 10; y++) {\n        for (int x = 10; x <= img->getWidth() - 10; x++) {\n            img->setRGB(x, y, 0xff33cc);\n        }\n    }\n    border(img);\n    \n    std::cout << \"About to remove other shit.\" << std::endl;\n    pause(200);\n    gw->remove(label);\n    gw->remove(button1);\n    //gw->removeFromRegion(button2, \"NORTH\");\n    pause(200);\n    \n    std::cout << \"About to remove GBufferedImage.\" << std::endl;\n    pause(200);\n    gw->remove(img);\n    // gw->removeFromRegion(img, \"SOUTH\");\n    pause(200);\n    std::cout << \"Test complete.\" << std::endl;\n    std::cout << std::endl;\n}\n\nvoid gtableTest() {\n    GWindow* gw = new GWindow;\n    gw->setTitle(\"GTable Test\");\n    \n    GTable* table = new GTable(5, 3);\n    table->select(0, 1);\n    table->setTableListener([](GTableEvent tableEvent) {\n        std::cout << \"cell updated: \" << tableEvent.toString() << std::endl;\n    });\n    gw->addToRegion(table, \"NORTH\");\n    \n    GButton* buttget = new GButton(\"Get All\");\n    buttget->setActionListener([=]() {\n        for (int row = 0; row < table->numRows(); row++) {\n            for (int col = 0; col < table->numCols(); col++) {\n                cout << \"R\" << row << \"C\" << col << \"=\\\"\" << table->get(row, col) << \"\\\" \";\n            }\n            cout << endl;\n        }\n        int row, col;\n        table->getSelectedCell(row, col);\n        cout << \"selected: R\" << row << \"C\" << col << endl;\n    });\n    gw->addToRegion(buttget, \"SOUTH\");\n    \n    GButton* buttset = new GButton(\"Set All\");\n    buttset->setActionListener([=]() {\n        for (int row = 0; row < table->numRows(); row++) {\n            for (int col = 0; col < table->numCols(); col++) {\n                std::string value = \"R\" + std::to_string(row) + \"C\" + std::to_string(col);\n                table->set(row, col, value);\n            }\n        }\n        table->select(1, 2);\n    });\n    gw->addToRegion(buttset, \"SOUTH\");\n    \n    GButton* buttclear = new GButton(\"Clear\");\n    buttclear->setActionListener([=]() {\n        table->clear();\n    });\n    gw->addToRegion(buttclear, \"SOUTH\");\n    \n    GButton* buttrowadd = new GButton(\"+R\");\n    buttrowadd->setActionListener([=]() {\n        table->resize(table->numRows() + 1, table->numCols());\n    });\n    gw->addToRegion(buttrowadd, \"SOUTH\");\n    \n    GButton* buttrowrem = new GButton(\"-R\");\n    buttrowrem->setActionListener([=]() {\n        table->resize(table->numRows() - 1, table->numCols());\n    });\n    gw->addToRegion(buttrowrem, \"SOUTH\");\n    \n    GButton* buttcoladd = new GButton(\"+C\");\n    buttcoladd->setActionListener([=]() {\n        table->resize(table->numRows(), table->numCols() + 1);\n    });\n    gw->addToRegion(buttcoladd, \"SOUTH\");\n    \n    GButton* buttcolrem = new GButton(\"-C\");\n    buttcolrem->setActionListener([=]() {\n        table->resize(table->numRows(), table->numCols() - 1);\n    });\n    gw->addToRegion(buttcolrem, \"SOUTH\");\n    \n    GButton* buttwidthadd = new GButton(\"+W\");\n    buttwidthadd->setActionListener([=]() {\n        table->setColumnWidth(1, table->getColumnWidth(1) + 20);\n    });\n    gw->addToRegion(buttwidthadd, \"SOUTH\");\n    \n    GButton* buttwidthrem = new GButton(\"-W\");\n    buttwidthrem->setActionListener([=]() {\n        table->setColumnWidth(1, table->getColumnWidth(1) - 20);\n    });\n    gw->addToRegion(buttwidthrem, \"SOUTH\");\n    \n    gw->setVisible(true);\n}\n\nvoid radioButtonTest() {\n    GWindow* gw = new GWindow;\n    gw->setTitle(\"Radio Button Test\");\n    GRadioButton* rb1 = new GRadioButton(\"Red\");\n    GRadioButton* rb2 = new GRadioButton(\"Green\", \"\", true);\n    GRadioButton* rb3 = new GRadioButton(\"Blue\");\n    gw->addToRegion(rb1, \"SOUTH\");\n    gw->addToRegion(rb2, \"SOUTH\");\n    gw->addToRegion(rb3, \"SOUTH\");\n\n    // a second group of buttons\n    GRadioButton* rb4 = new GRadioButton(\"Black\", \"N\", true);\n    GRadioButton* rb5 = new GRadioButton(\"White\", \"N\");\n    gw->addToRegion(rb4, \"NORTH\");\n    gw->addToRegion(rb5, \"NORTH\");\n    \n    gw->setVisible(true);\n}\n"
  },
  {
    "path": "Archived/Autograder_QtCreatorProject/src/test/imageDiffTests.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib image diff lib functionality.\n */\n\n#include \"testcases.h\"\n#include \"assertions.h\"\n#include \"gtest-marty.h\"\n#include \"assertions.h\"\n#include \"gbufferedimage.h\"\n#include \"grid.h\"\n#include <iostream>\n#include <string>\nusing namespace std;\n\n#define TEST_TIMEOUT_DEFAULT_IMAGE_DIFF 300000\n\nTEST_CATEGORY(ImageDiffTests, \"string tests\");\n\nvoid amplifyContrast(GBufferedImage& image, int threshold = 0x01) {\n    Grid<int> pixels = image.getPixelsARGB();\n    for (int x = 0, w = image.getWidth(), h = image.getHeight(); x < w; x++) {\n        for (int y = 0; y < h; y++) {\n            int px = pixels[y][x];\n            int red, green, blue;\n            GBufferedImage::getRedGreenBlue(px, red, green, blue);\n            red   = red   >= threshold ? 0xff : 0x00;\n            green = green >= threshold ? 0xff : 0x00;\n            blue  = blue  >= threshold ? 0xff : 0x00;\n            pixels[y][x] = GBufferedImage::createArgbPixel(255, red, green, blue);\n        }\n    }\n    image.setPixelsARGB(pixels);\n}\n\nvoid pixelate(GBufferedImage& image, int factor = 2) {\n    Grid<int> pixels = image.getPixelsARGB();\n    Grid<int> zoomed(pixels.numRows() / factor, pixels.numCols() / factor);\n\n    // shrink\n    int w = zoomed.width();\n    int h = zoomed.height();\n    int bigw = pixels.width();\n    int bigh = pixels.height();\n    for (int x = 0; x < w; x++) {\n        for (int y = 0; y < h; y++) {\n            // set zoomed-out pixel to average of surrounding pixels\n            int r = 0;\n            int g = 0;\n            int b = 0;\n            int count = 0;\n\n            int bigx = x * factor;\n            int bigy = y * factor;\n            for (int nx = bigx; nx < bigx + factor; nx++) {\n                for (int ny = bigy; ny < bigy + factor; ny++) {\n                    if (!pixels.inBounds(nx, ny)) {\n                        continue;\n                    }\n                    count++;\n                    int nr, ng, nb;\n                    GBufferedImage::getRedGreenBlue(pixels[ny][nx], nr, ng, nb);\n                    r += nr;\n                    g += ng;\n                    b += nb;\n                }\n            }\n\n            if (count > 0) {\n                int argb = GBufferedImage::createArgbPixel(255, r / count, g / count, b / count);\n                zoomed[y][x] = argb;\n            }\n        }\n    }\n\n    // grow\n    for (int x = 0; x < bigw; x++) {\n        for (int y = 0; y < bigh; y++) {\n            if (zoomed.inBounds(y / factor, x / factor)) {\n                pixels[y][x] = zoomed[y / factor][x / factor];\n            }\n        }\n    }\n    image.setPixelsARGB(pixels);\n}\n\nTIMED_TEST(ImageDiffTests, imageDiffLineOrderTest1, TEST_TIMEOUT_DEFAULT_IMAGE_DIFF) {\n    GBufferedImage image1(\"sierpinski-order1-1.png\");\n    GBufferedImage image2(\"sierpinski-order1-2.png\");\n    amplifyContrast(image1);\n    amplifyContrast(image2);\n//    pixelate(image1, 3);\n//    pixelate(image2, 3);\n//    amplifyContrast(image1);\n//    amplifyContrast(image2);\n    image1.save(\"sierpinski-order1-1-out.png\");\n    image2.save(\"sierpinski-order1-2-out.png\");\n    const int TOLERANCE = 400;\n    assertSimilarImage(\"Sierpinski order-1 drawn opposite way\",\n                       image1, image2, TOLERANCE);\n}\n\nTIMED_TEST(ImageDiffTests, imageDiffLineOrderTest2, TEST_TIMEOUT_DEFAULT_IMAGE_DIFF) {\n    GBufferedImage image1(\"sierpinski-order2-1.png\");\n    GBufferedImage image2(\"sierpinski-order2-2.png\");\n    amplifyContrast(image1);\n    amplifyContrast(image2);\n//    pixelate(image1);\n//    pixelate(image2);\n    image1.save(\"sierpinski-order2-1-out.png\");\n    image2.save(\"sierpinski-order2-2-out.png\");\n    const int TOLERANCE = 600;\n    assertSimilarImage(\"Sierpinski order-2 drawn opposite way\",\n                       image1, image2, TOLERANCE);\n}\n\nTIMED_TEST(ImageDiffTests, imageDiffLineOrderTest5, TEST_TIMEOUT_DEFAULT_IMAGE_DIFF) {\n    GBufferedImage image1(\"sierpinski-order5-1.png\");\n    GBufferedImage image2(\"sierpinski-order5-2.png\");\n    amplifyContrast(image1);\n    amplifyContrast(image2);\n//    pixelate(image1);\n//    pixelate(image2);\n    image1.save(\"sierpinski-order5-1-out.png\");\n    image2.save(\"sierpinski-order5-2-out.png\");\n    const int TOLERANCE = 1500;\n    assertSimilarImage(\"Sierpinski order-5 drawn opposite way\",\n                       image1, image2, TOLERANCE);\n}\n"
  },
  {
    "path": "Archived/Autograder_QtCreatorProject/src/test/pipeTest.cpp",
    "content": "#include \"testcases.h\"\n#include \"consoletext.h\"\n#include \"error.h\"\n#include \"regexpr.h\"\n#include \"simpio.h\"\n#include \"strlib.h\"\n#include <iostream>\n#include <string>\nusing namespace std;\n\nvoid animationTest() {\n    for (int i = 0; i < 20; i++) {\n        cout << \"Frame #\" << i << endl;\n        pause(200);\n        clearConsole();\n    }\n    getLine(\"animation complete.\");\n    setConsoleClearEnabled(false);\n    for (int i = 0; i < 20; i++) {\n        cout << \"Frame #\" << i << endl;\n        pause(200);\n        clearConsole();\n    }\n    getLine(\"animation 2 complete (no clear).\");\n    setConsoleClearEnabled(true);\n    for (int i = 0; i < 20; i++) {\n        cout << \"Frame #\" << i << endl;\n        pause(200);\n        clearConsole();\n    }\n    getLine(\"animation 3 complete (w/ clear).\");\n}\n\nvoid cinOutTest() {\n    cout << \"Hello, world! This is main!\" << endl;\n    for (int i = 0; i < 100; i++) {\n        cout << \"hello\" << endl;\n    }\n    string input = getLine(\"How are you doing? \");\n    cout << \"You said, \\\"\" << input << \"\\\".\" << endl;\n    cout << \"The end.\" << endl;\n}\n\nvoid coutCerrMixTest() {\n    cout << \"Hello, world! This is main!\" << endl;\n    cerr << \"This message comes from cerr\" << endl;\n    cout << \"Another one from cout!\" << endl;\n    cerr << \"This message ALSO comes from cerr\" << endl;\n    cout << \"A third one from cout!\" << endl;\n    cerr << \"HOW \";\n    cout << \"about \";\n    cerr << \"A \";\n    cout << \"mixed \";\n    cerr << \"LINE??\";\n    cout << endl;\n}\n\nvoid getIntegerTest() {\n    int n = getInteger(\"Type an int! \");\n    cout << \"you typed \" << n << endl;\n    while (true) {\n        std::string line = getLine(\"Type a string! \");\n        if (stringIsInteger(line)) {\n            cout << \"an integer!\" << endl;\n        } else {\n            cout << \"not integer\" << endl;\n        }\n        if (line == \"\") break;\n    }\n\n    //    plainconsole::setEcho(true);\n    //    int x = getInteger(\"Type x: \");\n    //    cout << \"You typed: \" << x << endl;\n    //    cout << \"Type again: \";\n    //    cin >> x;\n    //    cout << \"You typed: \" << x << endl;\n    \n    // test some int <-> char stuff\n    char ch = '3';\n    int x = charToInteger(ch);\n    cout << ch << \" is \" << x << endl;\n    \n    ch = integerToChar(x);\n    cout << x << \" is \" << ch << endl;\n    \n    // test errors\n    // charToInteger('x');\n    // integerToChar(42);\n        \n    //    cout << randomInteger(1, 10) << \" \"\n    //         << randomInteger(1, 10) << \" \"\n    //         << randomInteger(1, 10) << endl;\n}\n\nvoid killProcessTest() {\n    std::cout << \"Try killing the Java process now. Does it quit gracefully?\" << std::endl;\n    while (true) {\n        try {\n           std::string line = getLine();\n           std::cout << line << std::endl;\n        } catch (ErrorException& ex) {\n            std::cout << \"Error: \" << ex.getMessage() << std::endl;\n        }\n    }\n}\n\nvoid longStringTest() {\n    string slong = \"abcbcde\";\n    while (slong.length() < 1024*64) {\n        slong += slong;\n    }\n    cout << \"about to regex replace on long string (length \" << slong.length() << \")\" << endl;\n    slong = regexReplace(slong, \"bc\", \"XX\");\n    cout << \"done with regex replace on long string (length \" << slong.length() << \").\" << endl;\n    cout << slong.substr(0, 60) << \" ...\" << endl;\n    cout << \"done.\" << endl;\n}\n\nvoid outputColorTest() {\n    cout << \"Output color test:\" << endl;\n    setConsoleOutputColor(\"#ff00ff\");\n    cout << \"Purple line\" << endl;\n    setConsoleOutputColor(\"#0000ff\");\n    cout << \"Blue line\" << endl;\n    setConsoleOutputColor(\"#00ff33\");\n    cout << \"GREEN line\" << endl;\n    setConsoleOutputColor(\"#666666\");\n    cout << \"GRAY LINE\" << endl;\n    setConsoleOutputColor(\"#000000\");\n    cout << \"black line\" << endl;\n    cout << endl;\n}\n"
  },
  {
    "path": "Archived/Autograder_QtCreatorProject/src/test/serverTest.cpp",
    "content": "#include \"testcases.h\"\n#include \"consoletext.h\"\n#include \"error.h\"\n#include \"gevents.h\"\n#include \"server.h\"\n#include <iostream>\n#include <string>\nusing namespace std;\n\nvoid serverTest() {\n//    cout << \"Starting HTTP server.\" << endl;\n//    HttpServer::startServer();\n//    while (true) {\n//        GServerEvent event = waitForEvent(SERVER_EVENT);\n//        // cout << \"got an event: \" << event.toString() << endl;\n//        string responseText = \"Here is \" + event.getRequestURL() + \"!\";\n//        HttpServer::sendResponse(event, responseText);\n//    }\n}\n"
  },
  {
    "path": "Archived/Autograder_QtCreatorProject/src/test/stringTests.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib string lib functionality.\n */\n\n#include \"testcases.h\"\n#include \"assertions.h\"\n#include \"gtest-marty.h\"\n#include \"strlib.h\"\n#include <iostream>\n#include <string>\n//using namespace std;\n\n#define TEST_TIMEOUT_DEFAULT 3000\n\nTEST_CATEGORY(StringTests, \"string tests\");\n\nTIMED_TEST(StringTests, diffOutputFailTest, TEST_TIMEOUT_DEFAULT) {\n    std::cout << \"hi\\thow\\tare\\tyou?\" << std::endl;\n    std::string exp = \"Hi\\nyo\\nbye\\nhow are you\\nok\\nthe end\";\n    std::string stu = std::string(\"Hi\\nOOPS\\nbye\\nhow\\t are\") + '\\0' + std::string(\" you\\\\\\nDOH\\nthe end\");\n    assertDiff(\"program output\", exp, stu);\n}\n\nTIMED_TEST(StringTests, stringToIntegerTest, TEST_TIMEOUT_DEFAULT) {\n    assertEqualsInt(\"base-10\", 234, stringToInteger(\"234\"));\n    assertEqualsInt(\"base-8\", 156, stringToInteger(\"234\", /* radix */ 8));\n    assertEqualsInt(\"base-16\", 564, stringToInteger(\"234\", /* radix */ 16));\n}\n\nTIMED_TEST(StringTests, stringWithWeirdCharsTest, TEST_TIMEOUT_DEFAULT) {\n    std::string s1 = \"hello  there\";\n    std::string s2 = \"hello\\t\";\n    s2 += '\\0';\n    s2 += \" there\";\n    s2 += '\\377';    // octal for 255\n    s2 += \"\\r\\n\";\n    assertEqualsString(\"string w/ weird chars\", s1, s2);\n}\n\nTIMED_TEST(StringTests, stringToIntegerInvalidRadixTest, TEST_TIMEOUT_DEFAULT) {\n    assertThrows(\"expect exception on converting stringToInteger with radix 0\", stringToInteger(\"234\", /* radix */ 0);, ErrorException);\n}\n"
  },
  {
    "path": "Archived/Autograder_QtCreatorProject/src/test/systemTests.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib system functionality.\n */\n\n#include \"testcases.h\"\n#include \"assertions.h\"\n#include \"gtest-marty.h\"\n#include \"ioutils.h\"\n#include <iomanip>\n#include <iostream>\n#include <string>\n//using namespace std;\n\n#define TEST_TIMEOUT_DEFAULT 3000\n\nTEST_CATEGORY(SystemTests, \"system tests\");\n\nTIMED_TEST(SystemTests, callExitTest, TEST_TIMEOUT_DEFAULT) {\n    // lolol, I exit\n    // std::exit(0);\n}\n\n\nTEST_CATEGORY(AssertionTests, \"assertion tests\");\n\nTIMED_TEST(AssertionTests, failFirstPassSecond, TEST_TIMEOUT_DEFAULT * 100) {\n    assertEqualsInt(\"1st test - should fail\", 42, 17);\n    assertEqualsInt(\"2nd test - should pass\", 42, 42);\n}\n\nTIMED_TEST(AssertionTests, passFirstFailSecond, TEST_TIMEOUT_DEFAULT) {\n    assertEqualsInt(\"1st test - should pass\", 42, 42);\n    assertEqualsInt(\"2nd test - should fail\", 42, 17);\n}\n\nTIMED_TEST(AssertionTests, failFirstPassSecondFailThird, TEST_TIMEOUT_DEFAULT) {\n    assertEqualsInt(\"1st test - should fail\", 42, 17);\n    assertEqualsInt(\"2nd test - should pass\", 42, 42);\n    assertEqualsInt(\"3rd test - should fail\", 49, 19);\n}\n\nTIMED_TEST(AssertionTests, passFirstFailSecondPassThird, TEST_TIMEOUT_DEFAULT) {\n    assertEqualsInt(\"1st test - should pass\", 42, 42);\n    assertEqualsInt(\"2nd test - should fail\", 42, 17);\n    assertEqualsInt(\"3rd test - should pass\", 49, 49);\n}\n\nTIMED_TEST(AssertionTests, coutFlagsTest1, TEST_TIMEOUT_DEFAULT) {\n    ioutils::captureStdoutBegin();\n    std::cout << std::fixed << std::setprecision(2) << 12.3456789 << std::endl;\n    std::string output = ioutils::captureStdoutEnd();\n    assertEqualsString(\"console output #1\", \"12.35\\n\", output);\n}\n\nTIMED_TEST(AssertionTests, coutFlagsTest2, TEST_TIMEOUT_DEFAULT) {\n    ioutils::captureStdoutBegin();\n    std::cout << 12.3456789 << std::endl;\n    std::string output = ioutils::captureStdoutEnd();\n    assertEqualsString(\"console output #2\", \"12.3457\\n\", output);\n}\n\nTIMED_TEST(AssertionTests, assertPointerPass, TEST_TIMEOUT_DEFAULT) {\n    int* p1 = new int(42);\n    int* p2 = p1;\n    assertEqualsPointer(\"1st test - should pass\", p1, p2);\n}\n\nTIMED_TEST(AssertionTests, assertPointerFail, TEST_TIMEOUT_DEFAULT) {\n    int* p1 = new int(42);\n    int* p2 = new int(42);\n    assertEqualsPointer(\"2nd test - should fail\", p1, p2);\n}\n"
  },
  {
    "path": "Archived/Autograder_QtCreatorProject/src/test/testcases.h",
    "content": "#ifndef _testcases_h\n#define _testcases_h\n\n#include \"assertions.h\"\n\n// default timeout in ms for test cases\n#define TEST_TIMEOUT_DEFAULT 3000\n\n// collection tests\ntemplate <typename T>\nvoid compareTestHelper(const T& o1, const T& o2, std::string type = \"\",\n                              int compareTo = 0) {\n    assertEqualsBool(type + \" \" + o1.toString() + \" <  \" + o2.toString(), compareTo <  0,  o1 <  o2);\n    assertEqualsBool(type + \" \" + o1.toString() + \" <= \" + o2.toString(), compareTo <= 0,  o1 <= o2);\n    assertEqualsBool(type + \" \" + o1.toString() + \" >  \" + o2.toString(), compareTo >  0,  o1 >  o2);\n    assertEqualsBool(type + \" \" + o1.toString() + \" >= \" + o2.toString(), compareTo >= 0,  o1 >= o2);\n    assertEqualsBool(type + \" \" + o1.toString() + \" == \" + o2.toString(), compareTo == 0,  o1 == o2);\n    assertEqualsBool(type + \" \" + o1.toString() + \" != \" + o2.toString(), compareTo != 0,  o1 != o2);\n}\n\n// exception tests\nvoid exceptionTest();\nvoid recursionIndentTest();\nvoid segfaultTest(int sig = 0);\nvoid stackOverflowTest(int n = 0);\n\n// gui tests\nvoid fileDialogTest();\nvoid gbufferedImageTest();\nvoid goptionpaneTest();\nvoid gtableTest();\nvoid radioButtonTest();\n\n// pipe tests\nvoid cinOutTest();\nvoid coutCerrMixTest();\nvoid getIntegerTest();\nvoid killProcessTest();\nvoid longStringTest();\nvoid outputColorTest();\n\n// string tests\nvoid stringToIntegerTest();\n\n// url tests\nvoid urlstreamTest();\n\n// server tests\nvoid serverTest();\n\n#endif\n"
  },
  {
    "path": "Archived/Autograder_QtCreatorProject/src/test/urlTests.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib urlstream functionality.\n */\n\n#include \"testcases.h\"\n#include \"urlstream.h\"\n#include <iostream>\n#include <string>\n\nvoid urlstreamTest() {\n    std::cout << \"Downloading ...\" << std::endl;\n    iurlstream testurl;\n    testurl.open(\"http://martystepp.com/\");\n    std::cout << \"in the URL stream: \" << std::endl;\n    std::cout << \"====================\" << std::endl;\n    std::string line;\n    while (getline(testurl, line)) {\n        std::cout << \"line: \" << line << std::endl;\n    }\n    testurl.close();\n    std::cout << \"====================\" << std::endl;\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/.classpath",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<classpath>\n\t<classpathentry kind=\"src\" path=\"src\"/>\n\t<classpathentry kind=\"con\" path=\"org.eclipse.jdt.launching.JRE_CONTAINER\"/>\n\t<classpathentry kind=\"lib\" path=\"lib/junit.jar\"/>\n\t<classpathentry kind=\"lib\" path=\"lib/jogg-0.0.7.jar\"/>\n\t<classpathentry kind=\"lib\" path=\"lib/jorbis-0.0.15.jar\"/>\n\t<classpathentry kind=\"lib\" path=\"lib/tritonus_share.jar\"/>\n\t<classpathentry kind=\"lib\" path=\"lib/vorbisspi1.0.2.jar\"/>\n\t<classpathentry kind=\"lib\" path=\"lib/jl1.0.1.jar\"/>\n\t<classpathentry kind=\"lib\" path=\"lib/mp3spi1.9.5.jar\"/>\n\t<classpathentry kind=\"lib\" path=\"lib/acm.jar\"/>\n\t<classpathentry kind=\"output\" path=\"bin\"/>\n</classpath>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/.idea/codeStyleSettings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"ProjectCodeStyleSettingsManager\">\n    <option name=\"PER_PROJECT_SETTINGS\">\n      <value />\n    </option>\n    <option name=\"PREFERRED_PROJECT_CODE_STYLE\" value=\"Default (1)\" />\n  </component>\n</project>"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/.idea/compiler.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"CompilerConfiguration\">\n    <resourceExtensions />\n    <wildcardResourcePatterns>\n      <entry name=\"!?*.java\" />\n      <entry name=\"!?*.form\" />\n      <entry name=\"!?*.class\" />\n      <entry name=\"!?*.groovy\" />\n      <entry name=\"!?*.scala\" />\n      <entry name=\"!?*.flex\" />\n      <entry name=\"!?*.kt\" />\n      <entry name=\"!?*.clj\" />\n      <entry name=\"!?*.aj\" />\n    </wildcardResourcePatterns>\n    <annotationProcessing>\n      <profile default=\"true\" name=\"Default\" enabled=\"false\">\n        <processorPath useClasspath=\"true\" />\n      </profile>\n    </annotationProcessing>\n  </component>\n</project>"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/.idea/copyright/profiles_settings.xml",
    "content": "<component name=\"CopyrightManager\">\n  <settings default=\"\" />\n</component>"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/.idea/dictionaries/stepp.xml",
    "content": "<component name=\"ProjectDictionaryState\">\n  <dictionary name=\"stepp\" />\n</component>"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/.idea/inspectionProfiles/Project_Default.xml",
    "content": "<component name=\"InspectionProjectProfileManager\">\n  <profile version=\"1.0\">\n    <option name=\"myName\" value=\"Project Default\" />\n    <inspection_tool class=\"LoggerInitializedWithForeignClass\" enabled=\"false\" level=\"WARNING\" enabled_by_default=\"false\">\n      <option name=\"loggerClassName\" value=\"org.apache.log4j.Logger,org.slf4j.LoggerFactory,org.apache.commons.logging.LogFactory,java.util.logging.Logger\" />\n      <option name=\"loggerFactoryMethodName\" value=\"getLogger,getLogger,getLog,getLogger\" />\n    </inspection_tool>\n    <inspection_tool class=\"SpellCheckingInspection\" enabled=\"false\" level=\"TYPO\" enabled_by_default=\"false\">\n      <option name=\"processCode\" value=\"true\" />\n      <option name=\"processLiterals\" value=\"true\" />\n      <option name=\"processComments\" value=\"true\" />\n    </inspection_tool>\n  </profile>\n</component>"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/.idea/inspectionProfiles/profiles_settings.xml",
    "content": "<component name=\"InspectionProjectProfileManager\">\n  <settings>\n    <option name=\"PROJECT_PROFILE\" value=\"Project Default\" />\n    <option name=\"USE_PROJECT_PROFILE\" value=\"true\" />\n    <version value=\"1.0\" />\n  </settings>\n</component>"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/.idea/misc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"ClientPropertiesManager\">\n    <properties class=\"javax.swing.AbstractButton\">\n      <property name=\"hideActionText\" class=\"java.lang.Boolean\" />\n    </properties>\n    <properties class=\"javax.swing.JComponent\">\n      <property name=\"html.disable\" class=\"java.lang.Boolean\" />\n    </properties>\n    <properties class=\"javax.swing.JEditorPane\">\n      <property name=\"JEditorPane.w3cLengthUnits\" class=\"java.lang.Boolean\" />\n      <property name=\"JEditorPane.honorDisplayProperties\" class=\"java.lang.Boolean\" />\n      <property name=\"charset\" class=\"java.lang.String\" />\n    </properties>\n    <properties class=\"javax.swing.JList\">\n      <property name=\"List.isFileList\" class=\"java.lang.Boolean\" />\n    </properties>\n    <properties class=\"javax.swing.JPasswordField\">\n      <property name=\"JPasswordField.cutCopyAllowed\" class=\"java.lang.Boolean\" />\n    </properties>\n    <properties class=\"javax.swing.JSlider\">\n      <property name=\"Slider.paintThumbArrowShape\" class=\"java.lang.Boolean\" />\n      <property name=\"JSlider.isFilled\" class=\"java.lang.Boolean\" />\n    </properties>\n    <properties class=\"javax.swing.JTable\">\n      <property name=\"Table.isFileList\" class=\"java.lang.Boolean\" />\n      <property name=\"JTable.autoStartsEdit\" class=\"java.lang.Boolean\" />\n      <property name=\"terminateEditOnFocusLost\" class=\"java.lang.Boolean\" />\n    </properties>\n    <properties class=\"javax.swing.JToolBar\">\n      <property name=\"JToolBar.isRollover\" class=\"java.lang.Boolean\" />\n    </properties>\n    <properties class=\"javax.swing.JTree\">\n      <property name=\"JTree.lineStyle\" class=\"java.lang.String\" />\n    </properties>\n    <properties class=\"javax.swing.text.JTextComponent\">\n      <property name=\"caretAspectRatio\" class=\"java.lang.Double\" />\n      <property name=\"caretWidth\" class=\"java.lang.Integer\" />\n    </properties>\n  </component>\n  <component name=\"EntryPointsManager\">\n    <entry_points version=\"2.0\" />\n  </component>\n  <component name=\"ProjectLevelVcsManager\" settingsEditedManually=\"false\">\n    <OptionsSetting value=\"true\" id=\"Add\" />\n    <OptionsSetting value=\"true\" id=\"Remove\" />\n    <OptionsSetting value=\"true\" id=\"Checkout\" />\n    <OptionsSetting value=\"true\" id=\"Update\" />\n    <OptionsSetting value=\"true\" id=\"Status\" />\n    <OptionsSetting value=\"true\" id=\"Edit\" />\n    <ConfirmationsSetting value=\"0\" id=\"Add\" />\n    <ConfirmationsSetting value=\"0\" id=\"Remove\" />\n  </component>\n  <component name=\"ProjectRootManager\" version=\"2\" languageLevel=\"JDK_1_8\" default=\"true\" assert-keyword=\"true\" jdk-15=\"true\" project-jdk-name=\"1.8\" project-jdk-type=\"JavaSDK\">\n    <output url=\"file://$PROJECT_DIR$/out\" />\n  </component>\n</project>"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/.idea/modules.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"ProjectModuleManager\">\n    <modules>\n      <module fileurl=\"file://$PROJECT_DIR$/StanfordCPPLib_JavaBackEnd.iml\" filepath=\"$PROJECT_DIR$/StanfordCPPLib_JavaBackEnd.iml\" />\n    </modules>\n  </component>\n</project>"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/.idea/vcs.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"VcsDirectoryMappings\">\n    <mapping directory=\"$PROJECT_DIR$/../..\" vcs=\"Git\" />\n  </component>\n</project>"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/.idea/workspace.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"ChangeListManager\">\n    <list default=\"true\" id=\"475277d2-4180-4b67-83d1-a973ed166bcb\" name=\"Default\" comment=\"\">\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/obf/spl.jar\" afterPath=\"$PROJECT_DIR$/obf/spl.jar\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/.idea/workspace.xml\" afterPath=\"$PROJECT_DIR$/.idea/workspace.xml\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/acm/program/GraphicsProgram.java\" afterPath=\"$PROJECT_DIR$/src/acm/program/GraphicsProgram.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/acm/program/Program.java\" afterPath=\"$PROJECT_DIR$/src/acm/program/Program.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/stanford/cs106/audio/Note.java\" afterPath=\"$PROJECT_DIR$/src/stanford/cs106/audio/Note.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/stanford/cs106/autograder/GuidedAutograder.java\" afterPath=\"$PROJECT_DIR$/src/stanford/cs106/autograder/GuidedAutograder.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/stanford/spl/Version.java\" afterPath=\"$PROJECT_DIR$/src/stanford/spl/Version.java\" />\n    </list>\n    <ignored path=\"eclipseproject.iws\" />\n    <ignored path=\".idea/workspace.xml\" />\n    <ignored path=\"$PROJECT_DIR$/bin/\" />\n    <option name=\"EXCLUDED_CONVERTED_TO_IGNORED\" value=\"true\" />\n    <option name=\"TRACKING_ENABLED\" value=\"true\" />\n    <option name=\"SHOW_DIALOG\" value=\"false\" />\n    <option name=\"HIGHLIGHT_CONFLICTS\" value=\"true\" />\n    <option name=\"HIGHLIGHT_NON_ACTIVE_CHANGELIST\" value=\"false\" />\n    <option name=\"LAST_RESOLUTION\" value=\"IGNORE\" />\n  </component>\n  <component name=\"ChangesViewManager\" flattened_view=\"true\" show_ignored=\"false\" />\n  <component name=\"CreatePatchCommitExecutor\">\n    <option name=\"PATCH_PATH\" value=\"\" />\n  </component>\n  <component name=\"ExecutionTargetManager\" SELECTED_TARGET=\"default_target\" />\n  <component name=\"FavoritesManager\">\n    <favorites_list name=\"eclipseproject\" />\n  </component>\n  <component name=\"FileEditorManager\">\n    <leaf>\n      <file leaf-file-name=\"GraphicsProgram.java\" pinned=\"false\" current-in-tab=\"true\">\n        <entry file=\"file://$PROJECT_DIR$/src/acm/program/GraphicsProgram.java\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state relative-caret-position=\"425\">\n              <caret line=\"577\" column=\"0\" selection-start-line=\"577\" selection-start-column=\"0\" selection-end-line=\"577\" selection-end-column=\"0\" />\n              <folding />\n            </state>\n          </provider>\n        </entry>\n      </file>\n      <file leaf-file-name=\"Version.java\" pinned=\"false\" current-in-tab=\"false\">\n        <entry file=\"file://$PROJECT_DIR$/src/stanford/spl/Version.java\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state relative-caret-position=\"220\">\n              <caret line=\"11\" column=\"67\" selection-start-line=\"11\" selection-start-column=\"67\" selection-end-line=\"11\" selection-end-column=\"67\" />\n              <folding />\n            </state>\n          </provider>\n        </entry>\n      </file>\n      <file leaf-file-name=\"Program.java\" pinned=\"false\" current-in-tab=\"false\">\n        <entry file=\"file://$PROJECT_DIR$/src/acm/program/Program.java\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state relative-caret-position=\"20\">\n              <caret line=\"92\" column=\"0\" selection-start-line=\"92\" selection-start-column=\"0\" selection-end-line=\"92\" selection-end-column=\"0\" />\n              <folding />\n            </state>\n          </provider>\n        </entry>\n      </file>\n      <file leaf-file-name=\"GuidedAutograder.java\" pinned=\"false\" current-in-tab=\"false\">\n        <entry file=\"file://$PROJECT_DIR$/src/stanford/cs106/autograder/GuidedAutograder.java\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state relative-caret-position=\"-735\">\n              <caret line=\"1234\" column=\"24\" selection-start-line=\"1234\" selection-start-column=\"20\" selection-end-line=\"1234\" selection-end-column=\"24\" />\n              <folding />\n            </state>\n          </provider>\n        </entry>\n      </file>\n    </leaf>\n  </component>\n  <component name=\"Git.Settings\">\n    <option name=\"RECENT_GIT_ROOT_PATH\" value=\"$PROJECT_DIR$/../..\" />\n  </component>\n  <component name=\"GradleLocalSettings\">\n    <option name=\"externalProjectsViewState\">\n      <projects_view />\n    </option>\n  </component>\n  <component name=\"IdeDocumentHistory\">\n    <option name=\"CHANGED_PATHS\">\n      <list>\n        <option value=\"$PROJECT_DIR$/src/acm/graphics/GCompound.java\" />\n        <option value=\"$PROJECT_DIR$/src/acm/graphics/GImage.java\" />\n        <option value=\"$PROJECT_DIR$/src/acm/graphics/GLabel.java\" />\n        <option value=\"$PROJECT_DIR$/src/acm/graphics/GObject.java\" />\n        <option value=\"$PROJECT_DIR$/src/acm/graphics/GCanvas.java\" />\n        <option value=\"$PROJECT_DIR$/src/stanford/cs106/audio/Note.java\" />\n        <option value=\"$PROJECT_DIR$/src/stanford/spl/Version.java\" />\n        <option value=\"$PROJECT_DIR$/src/acm/program/Program.java\" />\n        <option value=\"$PROJECT_DIR$/src/stanford/cs106/autograder/GuidedAutograder.java\" />\n        <option value=\"$PROJECT_DIR$/src/acm/program/GraphicsProgram.java\" />\n      </list>\n    </option>\n  </component>\n  <component name=\"ProjectFrameBounds\">\n    <option name=\"y\" value=\"52\" />\n    <option name=\"width\" value=\"1920\" />\n    <option name=\"height\" value=\"1028\" />\n  </component>\n  <component name=\"ProjectInspectionProfilesVisibleTreeState\">\n    <entry key=\"Project Default\">\n      <profile-state>\n        <expanded-state>\n          <State>\n            <id />\n          </State>\n          <State>\n            <id>Java</id>\n          </State>\n          <State>\n            <id>Probable bugsJava</id>\n          </State>\n          <State>\n            <id>RELAX NG</id>\n          </State>\n          <State>\n            <id>Spelling</id>\n          </State>\n          <State>\n            <id>XPath</id>\n          </State>\n          <State>\n            <id>XSLT</id>\n          </State>\n        </expanded-state>\n        <selected-state>\n          <State>\n            <id>Spelling</id>\n          </State>\n        </selected-state>\n      </profile-state>\n    </entry>\n  </component>\n  <component name=\"ProjectLevelVcsManager\" settingsEditedManually=\"true\">\n    <OptionsSetting value=\"true\" id=\"Add\" />\n    <OptionsSetting value=\"true\" id=\"Remove\" />\n    <OptionsSetting value=\"true\" id=\"Checkout\" />\n    <OptionsSetting value=\"true\" id=\"Update\" />\n    <OptionsSetting value=\"true\" id=\"Status\" />\n    <OptionsSetting value=\"true\" id=\"Edit\" />\n    <ConfirmationsSetting value=\"0\" id=\"Add\" />\n    <ConfirmationsSetting value=\"0\" id=\"Remove\" />\n  </component>\n  <component name=\"ProjectView\">\n    <navigator currentView=\"PackagesPane\" proportions=\"\" version=\"1\">\n      <flattenPackages />\n      <showMembers />\n      <showModules />\n      <showLibraryContents />\n      <hideEmptyPackages />\n      <abbreviatePackageNames />\n      <autoscrollToSource />\n      <autoscrollFromSource />\n      <sortByType />\n      <manualOrder />\n      <foldersAlwaysOnTop value=\"true\" />\n    </navigator>\n    <panes>\n      <pane id=\"ProjectPane\">\n        <subPane />\n      </pane>\n      <pane id=\"PackagesPane\">\n        <subPane>\n          <PATH>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"eclipseproject\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PackageViewProjectNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"StanfordCPPLib_JavaBackEnd\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PackageViewModuleNode\" />\n            </PATH_ELEMENT>\n          </PATH>\n          <PATH>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"eclipseproject\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PackageViewProjectNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"StanfordCPPLib_JavaBackEnd\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PackageViewModuleNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"stanford\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PackageElementNode\" />\n            </PATH_ELEMENT>\n          </PATH>\n          <PATH>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"eclipseproject\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PackageViewProjectNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"StanfordCPPLib_JavaBackEnd\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PackageViewModuleNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"stanford\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PackageElementNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"cs106\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PackageElementNode\" />\n            </PATH_ELEMENT>\n          </PATH>\n          <PATH>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"eclipseproject\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PackageViewProjectNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"StanfordCPPLib_JavaBackEnd\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PackageViewModuleNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"stanford\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PackageElementNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"cs106\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PackageElementNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"autograder\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PackageElementNode\" />\n            </PATH_ELEMENT>\n          </PATH>\n          <PATH>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"eclipseproject\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PackageViewProjectNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"StanfordCPPLib_JavaBackEnd\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PackageViewModuleNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"stanford\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PackageElementNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"cs106\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PackageElementNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"audio\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PackageElementNode\" />\n            </PATH_ELEMENT>\n          </PATH>\n          <PATH>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"eclipseproject\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PackageViewProjectNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"StanfordCPPLib_JavaBackEnd\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PackageViewModuleNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"acm\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PackageElementNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"util\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PackageElementNode\" />\n            </PATH_ELEMENT>\n          </PATH>\n          <PATH>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"eclipseproject\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PackageViewProjectNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"StanfordCPPLib_JavaBackEnd\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PackageViewModuleNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"acm\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PackageElementNode\" />\n            </PATH_ELEMENT>\n          </PATH>\n        </subPane>\n      </pane>\n      <pane id=\"Scratches\" />\n      <pane id=\"Scope\" />\n    </panes>\n  </component>\n  <component name=\"PropertiesComponent\">\n    <property name=\"settings.editor.selected.configurable\" value=\"preferences.keymap\" />\n    <property name=\"settings.editor.splitter.proportion\" value=\"0.2\" />\n  </component>\n  <component name=\"RunManager\">\n    <configuration default=\"true\" type=\"Applet\" factoryName=\"Applet\">\n      <option name=\"HTML_USED\" value=\"false\" />\n      <option name=\"WIDTH\" value=\"400\" />\n      <option name=\"HEIGHT\" value=\"300\" />\n      <option name=\"POLICY_FILE\" value=\"$APPLICATION_HOME_DIR$/bin/appletviewer.policy\" />\n      <module />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"Application\" factoryName=\"Application\">\n      <extension name=\"coverage\" enabled=\"false\" merge=\"false\" sample_coverage=\"true\" runner=\"idea\" />\n      <option name=\"MAIN_CLASS_NAME\" />\n      <option name=\"VM_PARAMETERS\" />\n      <option name=\"PROGRAM_PARAMETERS\" />\n      <option name=\"WORKING_DIRECTORY\" value=\"$PROJECT_DIR$\" />\n      <option name=\"ALTERNATIVE_JRE_PATH_ENABLED\" value=\"false\" />\n      <option name=\"ALTERNATIVE_JRE_PATH\" />\n      <option name=\"ENABLE_SWING_INSPECTOR\" value=\"false\" />\n      <option name=\"ENV_VARIABLES\" />\n      <option name=\"PASS_PARENT_ENVS\" value=\"true\" />\n      <module name=\"\" />\n      <envs />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"GradleRunConfiguration\" factoryName=\"Gradle\">\n      <ExternalSystemSettings>\n        <option name=\"executionName\" />\n        <option name=\"externalProjectPath\" />\n        <option name=\"externalSystemIdString\" value=\"GRADLE\" />\n        <option name=\"scriptParameters\" />\n        <option name=\"taskDescriptions\">\n          <list />\n        </option>\n        <option name=\"taskNames\">\n          <list />\n        </option>\n        <option name=\"vmOptions\" />\n      </ExternalSystemSettings>\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"JUnit\" factoryName=\"JUnit\">\n      <extension name=\"coverage\" enabled=\"false\" merge=\"false\" sample_coverage=\"true\" runner=\"idea\" />\n      <module name=\"\" />\n      <option name=\"ALTERNATIVE_JRE_PATH_ENABLED\" value=\"false\" />\n      <option name=\"ALTERNATIVE_JRE_PATH\" />\n      <option name=\"PACKAGE_NAME\" />\n      <option name=\"MAIN_CLASS_NAME\" />\n      <option name=\"METHOD_NAME\" />\n      <option name=\"TEST_OBJECT\" value=\"class\" />\n      <option name=\"VM_PARAMETERS\" value=\"-ea\" />\n      <option name=\"PARAMETERS\" />\n      <option name=\"WORKING_DIRECTORY\" value=\"$MODULE_DIR$\" />\n      <option name=\"ENV_VARIABLES\" />\n      <option name=\"PASS_PARENT_ENVS\" value=\"true\" />\n      <option name=\"TEST_SEARCH_SCOPE\">\n        <value defaultName=\"singleModule\" />\n      </option>\n      <envs />\n      <patterns />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"JUnitTestDiscovery\" factoryName=\"JUnit Test Discovery\" changeList=\"All\">\n      <extension name=\"coverage\" enabled=\"false\" merge=\"false\" sample_coverage=\"true\" runner=\"idea\" />\n      <module name=\"\" />\n      <option name=\"ALTERNATIVE_JRE_PATH_ENABLED\" value=\"false\" />\n      <option name=\"ALTERNATIVE_JRE_PATH\" />\n      <option name=\"PACKAGE_NAME\" />\n      <option name=\"MAIN_CLASS_NAME\" />\n      <option name=\"METHOD_NAME\" />\n      <option name=\"TEST_OBJECT\" value=\"class\" />\n      <option name=\"VM_PARAMETERS\" />\n      <option name=\"PARAMETERS\" />\n      <option name=\"WORKING_DIRECTORY\" />\n      <option name=\"ENV_VARIABLES\" />\n      <option name=\"PASS_PARENT_ENVS\" value=\"true\" />\n      <option name=\"TEST_SEARCH_SCOPE\">\n        <value defaultName=\"singleModule\" />\n      </option>\n      <envs />\n      <patterns />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"JarApplication\" factoryName=\"JAR Application\">\n      <extension name=\"coverage\" enabled=\"false\" merge=\"false\" sample_coverage=\"true\" runner=\"idea\" />\n      <envs />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"Java Scratch\" factoryName=\"Java Scratch\">\n      <extension name=\"coverage\" enabled=\"false\" merge=\"false\" sample_coverage=\"true\" runner=\"idea\" />\n      <option name=\"SCRATCH_FILE_ID\" value=\"0\" />\n      <option name=\"MAIN_CLASS_NAME\" />\n      <option name=\"VM_PARAMETERS\" />\n      <option name=\"PROGRAM_PARAMETERS\" />\n      <option name=\"WORKING_DIRECTORY\" />\n      <option name=\"ALTERNATIVE_JRE_PATH_ENABLED\" value=\"false\" />\n      <option name=\"ALTERNATIVE_JRE_PATH\" />\n      <option name=\"ENABLE_SWING_INSPECTOR\" value=\"false\" />\n      <option name=\"ENV_VARIABLES\" />\n      <option name=\"PASS_PARENT_ENVS\" value=\"true\" />\n      <module name=\"\" />\n      <envs />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"JetRunConfigurationType\" factoryName=\"Kotlin\">\n      <extension name=\"coverage\" enabled=\"false\" merge=\"false\" sample_coverage=\"true\" runner=\"idea\" />\n      <option name=\"MAIN_CLASS_NAME\" />\n      <option name=\"VM_PARAMETERS\" />\n      <option name=\"PROGRAM_PARAMETERS\" />\n      <option name=\"WORKING_DIRECTORY\" />\n      <option name=\"ALTERNATIVE_JRE_PATH_ENABLED\" value=\"false\" />\n      <option name=\"ALTERNATIVE_JRE_PATH\" />\n      <option name=\"PASS_PARENT_ENVS\" value=\"true\" />\n      <module name=\"StanfordCPPLib_JavaBackEnd\" />\n      <envs />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"KotlinStandaloneScriptRunConfigurationType\" factoryName=\"Kotlin script\">\n      <extension name=\"coverage\" enabled=\"false\" merge=\"false\" sample_coverage=\"true\" runner=\"idea\" />\n      <option name=\"filePath\" />\n      <option name=\"vmParameters\" />\n      <option name=\"alternativeJrePath\" />\n      <option name=\"programParameters\" />\n      <option name=\"passParentEnvs\" value=\"true\" />\n      <option name=\"workingDirectory\" />\n      <option name=\"isAlternativeJrePathEnabled\" value=\"false\" />\n      <envs />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"Remote\" factoryName=\"Remote\">\n      <option name=\"USE_SOCKET_TRANSPORT\" value=\"true\" />\n      <option name=\"SERVER_MODE\" value=\"false\" />\n      <option name=\"SHMEM_ADDRESS\" value=\"javadebug\" />\n      <option name=\"HOST\" value=\"localhost\" />\n      <option name=\"PORT\" value=\"5005\" />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"TestNG\" factoryName=\"TestNG\">\n      <extension name=\"coverage\" enabled=\"false\" merge=\"false\" sample_coverage=\"true\" runner=\"idea\" />\n      <module name=\"\" />\n      <option name=\"ALTERNATIVE_JRE_PATH_ENABLED\" value=\"false\" />\n      <option name=\"ALTERNATIVE_JRE_PATH\" />\n      <option name=\"SUITE_NAME\" />\n      <option name=\"PACKAGE_NAME\" />\n      <option name=\"MAIN_CLASS_NAME\" />\n      <option name=\"METHOD_NAME\" />\n      <option name=\"GROUP_NAME\" />\n      <option name=\"TEST_OBJECT\" value=\"CLASS\" />\n      <option name=\"VM_PARAMETERS\" value=\"-ea\" />\n      <option name=\"PARAMETERS\" />\n      <option name=\"WORKING_DIRECTORY\" value=\"$MODULE_DIR$\" />\n      <option name=\"OUTPUT_DIRECTORY\" />\n      <option name=\"ANNOTATION_TYPE\" />\n      <option name=\"ENV_VARIABLES\" />\n      <option name=\"PASS_PARENT_ENVS\" value=\"true\" />\n      <option name=\"TEST_SEARCH_SCOPE\">\n        <value defaultName=\"singleModule\" />\n      </option>\n      <option name=\"USE_DEFAULT_REPORTERS\" value=\"false\" />\n      <option name=\"PROPERTIES_FILE\" />\n      <envs />\n      <properties />\n      <listeners />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"TestNGTestDiscovery\" factoryName=\"TestNG Test Discovery\" changeList=\"All\">\n      <extension name=\"coverage\" enabled=\"false\" merge=\"false\" sample_coverage=\"true\" runner=\"idea\" />\n      <module name=\"\" />\n      <option name=\"ALTERNATIVE_JRE_PATH_ENABLED\" value=\"false\" />\n      <option name=\"ALTERNATIVE_JRE_PATH\" />\n      <option name=\"SUITE_NAME\" />\n      <option name=\"PACKAGE_NAME\" />\n      <option name=\"MAIN_CLASS_NAME\" />\n      <option name=\"METHOD_NAME\" />\n      <option name=\"GROUP_NAME\" />\n      <option name=\"TEST_OBJECT\" value=\"CLASS\" />\n      <option name=\"VM_PARAMETERS\" />\n      <option name=\"PARAMETERS\" />\n      <option name=\"WORKING_DIRECTORY\" />\n      <option name=\"OUTPUT_DIRECTORY\" />\n      <option name=\"ANNOTATION_TYPE\" />\n      <option name=\"ENV_VARIABLES\" />\n      <option name=\"PASS_PARENT_ENVS\" value=\"true\" />\n      <option name=\"TEST_SEARCH_SCOPE\">\n        <value defaultName=\"singleModule\" />\n      </option>\n      <option name=\"USE_DEFAULT_REPORTERS\" value=\"false\" />\n      <option name=\"PROPERTIES_FILE\" />\n      <envs />\n      <properties />\n      <listeners />\n      <method />\n    </configuration>\n    <configuration name=\"&lt;template&gt;\" type=\"#org.jetbrains.idea.devkit.run.PluginConfigurationType\" default=\"true\" selected=\"false\">\n      <option name=\"VM_PARAMETERS\" value=\"-Xmx512m -Xms256m -XX:MaxPermSize=250m -ea\" />\n    </configuration>\n  </component>\n  <component name=\"ShelveChangesManager\" show_recycled=\"false\">\n    <option name=\"remove_strategy\" value=\"false\" />\n  </component>\n  <component name=\"SvnConfiguration\">\n    <configuration />\n  </component>\n  <component name=\"TaskManager\">\n    <task active=\"true\" id=\"Default\" summary=\"Default task\">\n      <changelist id=\"475277d2-4180-4b67-83d1-a973ed166bcb\" name=\"Default\" comment=\"\" />\n      <created>1462461524770</created>\n      <option name=\"number\" value=\"Default\" />\n      <option name=\"presentableId\" value=\"Default\" />\n      <updated>1462461524770</updated>\n    </task>\n    <servers />\n  </component>\n  <component name=\"ToolWindowManager\">\n    <frame x=\"0\" y=\"52\" width=\"1920\" height=\"1028\" extended-state=\"0\" />\n    <editor active=\"false\" />\n    <layout>\n      <window_info id=\"Palette\" active=\"false\" anchor=\"right\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"3\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"TODO\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"6\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Messages\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"7\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Palette&#9;\" active=\"false\" anchor=\"right\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"3\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Event Log\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"7\" side_tool=\"true\" content_ui=\"tabs\" />\n      <window_info id=\"Maven Projects\" active=\"false\" anchor=\"right\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"3\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Version Control\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"7\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Terminal\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"7\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Designer\" active=\"false\" anchor=\"left\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"2\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Project\" active=\"false\" anchor=\"left\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"true\" show_stripe_button=\"true\" weight=\"0.25208333\" sideWeight=\"0.5\" order=\"0\" side_tool=\"false\" content_ui=\"combo\" />\n      <window_info id=\"Structure\" active=\"false\" anchor=\"left\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.25\" sideWeight=\"0.5\" order=\"1\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Ant Build\" active=\"false\" anchor=\"right\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.25\" sideWeight=\"0.5\" order=\"1\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"UI Designer\" active=\"false\" anchor=\"left\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"2\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Favorites\" active=\"false\" anchor=\"left\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"2\" side_tool=\"true\" content_ui=\"tabs\" />\n      <window_info id=\"Cvs\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.25\" sideWeight=\"0.5\" order=\"4\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Message\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"0\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Commander\" active=\"false\" anchor=\"right\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.4\" sideWeight=\"0.5\" order=\"0\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Inspection\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.4\" sideWeight=\"0.5\" order=\"5\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Run\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"2\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Hierarchy\" active=\"false\" anchor=\"right\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.2496132\" sideWeight=\"0.5\" order=\"2\" side_tool=\"false\" content_ui=\"combo\" />\n      <window_info id=\"Find\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"1\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Debug\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.4\" sideWeight=\"0.5\" order=\"3\" side_tool=\"false\" content_ui=\"tabs\" />\n    </layout>\n  </component>\n  <component name=\"Vcs.Log.UiProperties\">\n    <option name=\"RECENTLY_FILTERED_USER_GROUPS\">\n      <collection />\n    </option>\n    <option name=\"RECENTLY_FILTERED_BRANCH_GROUPS\">\n      <collection />\n    </option>\n  </component>\n  <component name=\"VcsContentAnnotationSettings\">\n    <option name=\"myLimit\" value=\"2678400000\" />\n  </component>\n  <component name=\"XDebuggerManager\">\n    <breakpoint-manager />\n    <watches-manager />\n  </component>\n  <component name=\"antWorkspaceConfiguration\">\n    <option name=\"IS_AUTOSCROLL_TO_SOURCE\" value=\"false\" />\n    <option name=\"FILTER_TARGETS\" value=\"false\" />\n  </component>\n  <component name=\"editorHistoryManager\">\n    <entry file=\"file://$PROJECT_DIR$/src/acm/graphics/GCanvas.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"0\">\n          <caret line=\"0\" column=\"0\" selection-start-line=\"0\" selection-start-column=\"0\" selection-end-line=\"0\" selection-end-column=\"0\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/acm/graphics/GImage.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"60\">\n          <caret line=\"3\" column=\"30\" selection-start-line=\"3\" selection-start-column=\"30\" selection-end-line=\"3\" selection-end-column=\"30\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/acm/graphics/GLabel.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"765\">\n          <caret line=\"275\" column=\"38\" selection-start-line=\"275\" selection-start-column=\"38\" selection-end-line=\"275\" selection-end-column=\"38\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/acm/graphics/GObject.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"89\">\n          <caret line=\"891\" column=\"0\" selection-start-line=\"891\" selection-start-column=\"0\" selection-end-line=\"891\" selection-end-column=\"0\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/acm/graphics/GCompound.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"620\">\n          <caret line=\"366\" column=\"13\" selection-start-line=\"366\" selection-start-column=\"13\" selection-end-line=\"366\" selection-end-column=\"13\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/acm/graphics/GContainer.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"945\">\n          <caret line=\"456\" column=\"5\" selection-start-line=\"456\" selection-start-column=\"5\" selection-end-line=\"456\" selection-end-column=\"5\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/acm/graphics/GCanvas.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"80\">\n          <caret line=\"4\" column=\"35\" selection-start-line=\"4\" selection-start-column=\"35\" selection-end-line=\"4\" selection-end-column=\"35\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/stanford/cs106/audio/Note.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"745\">\n          <caret line=\"291\" column=\"21\" selection-start-line=\"291\" selection-start-column=\"21\" selection-end-line=\"291\" selection-end-column=\"21\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/stanford/spl/Version.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"220\">\n          <caret line=\"11\" column=\"67\" selection-start-line=\"11\" selection-start-column=\"67\" selection-end-line=\"11\" selection-end-column=\"67\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"jar:///usr/lib/jvm/jdk/src.zip!/java/awt/Component.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"308\">\n          <caret line=\"2173\" column=\"16\" selection-start-line=\"2173\" selection-start-column=\"16\" selection-end-line=\"2173\" selection-end-column=\"16\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/stanford/cs106/autograder/GuidedAutograder.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"-735\">\n          <caret line=\"1234\" column=\"24\" selection-start-line=\"1234\" selection-start-column=\"20\" selection-end-line=\"1234\" selection-end-column=\"24\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/acm/program/Program.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"20\">\n          <caret line=\"92\" column=\"0\" selection-start-line=\"92\" selection-start-column=\"0\" selection-end-line=\"92\" selection-end-column=\"0\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/acm/program/GraphicsProgram.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"425\">\n          <caret line=\"577\" column=\"0\" selection-start-line=\"577\" selection-start-column=\"0\" selection-end-line=\"577\" selection-end-column=\"0\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n  </component>\n  <component name=\"masterDetails\">\n    <states>\n      <state key=\"ProjectJDKs.UI\">\n        <settings>\n          <last-edited>1.8</last-edited>\n          <splitter-proportions>\n            <option name=\"proportions\">\n              <list>\n                <option value=\"0.2\" />\n              </list>\n            </option>\n          </splitter-proportions>\n        </settings>\n      </state>\n      <state key=\"ScopeChooserConfigurable.UI\">\n        <settings>\n          <splitter-proportions>\n            <option name=\"proportions\">\n              <list>\n                <option value=\"0.2\" />\n              </list>\n            </option>\n          </splitter-proportions>\n        </settings>\n      </state>\n    </states>\n  </component>\n</project>"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/.project",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<projectDescription>\r\n\t<name>StanfordCPPLib_JavaBackEnd</name>\r\n\t<comment></comment>\r\n\t<projects>\r\n\t</projects>\r\n\t<buildSpec>\r\n\t\t<buildCommand>\r\n\t\t\t<name>org.eclipse.jdt.core.javabuilder</name>\r\n\t\t\t<arguments>\r\n\t\t\t</arguments>\r\n\t\t</buildCommand>\r\n\t</buildSpec>\r\n\t<natures>\r\n\t\t<nature>org.eclipse.jdt.core.javanature</nature>\r\n\t</natures>\r\n</projectDescription>\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/.settings/org.eclipse.jdt.core.prefs",
    "content": "eclipse.preferences.version=1\norg.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore\norg.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull\norg.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault\norg.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable\norg.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled\norg.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled\norg.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate\norg.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5\norg.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve\norg.eclipse.jdt.core.compiler.compliance=1.5\norg.eclipse.jdt.core.compiler.debug.lineNumber=generate\norg.eclipse.jdt.core.compiler.debug.localVariable=generate\norg.eclipse.jdt.core.compiler.debug.sourceFile=generate\norg.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning\norg.eclipse.jdt.core.compiler.problem.assertIdentifier=error\norg.eclipse.jdt.core.compiler.problem.autoboxing=ignore\norg.eclipse.jdt.core.compiler.problem.comparingIdentical=warning\norg.eclipse.jdt.core.compiler.problem.deadCode=warning\norg.eclipse.jdt.core.compiler.problem.deprecation=warning\norg.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled\norg.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled\norg.eclipse.jdt.core.compiler.problem.discouragedReference=warning\norg.eclipse.jdt.core.compiler.problem.emptyStatement=ignore\norg.eclipse.jdt.core.compiler.problem.enumIdentifier=error\norg.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore\norg.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore\norg.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled\norg.eclipse.jdt.core.compiler.problem.fieldHiding=ignore\norg.eclipse.jdt.core.compiler.problem.finalParameterBound=warning\norg.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning\norg.eclipse.jdt.core.compiler.problem.forbiddenReference=error\norg.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning\norg.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled\norg.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning\norg.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning\norg.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore\norg.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore\norg.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning\norg.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore\norg.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore\norg.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled\norg.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore\norg.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore\norg.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled\norg.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore\norg.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore\norg.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning\norg.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning\norg.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore\norg.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error\norg.eclipse.jdt.core.compiler.problem.nullReference=warning\norg.eclipse.jdt.core.compiler.problem.nullSpecViolation=error\norg.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning\norg.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning\norg.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore\norg.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore\norg.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore\norg.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore\norg.eclipse.jdt.core.compiler.problem.rawTypeReference=warning\norg.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning\norg.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore\norg.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore\norg.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore\norg.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore\norg.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore\norg.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled\norg.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning\norg.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled\norg.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled\norg.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore\norg.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning\norg.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled\norg.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning\norg.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning\norg.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore\norg.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning\norg.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore\norg.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore\norg.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore\norg.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore\norg.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled\norg.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled\norg.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled\norg.eclipse.jdt.core.compiler.problem.unusedImport=warning\norg.eclipse.jdt.core.compiler.problem.unusedLabel=warning\norg.eclipse.jdt.core.compiler.problem.unusedLocal=warning\norg.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore\norg.eclipse.jdt.core.compiler.problem.unusedParameter=ignore\norg.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled\norg.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled\norg.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled\norg.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning\norg.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning\norg.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning\norg.eclipse.jdt.core.compiler.source=1.5\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/StanfordCPPLib_JavaBackEnd.iml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<module type=\"JAVA_MODULE\" version=\"4\">\n  <component name=\"EclipseModuleManager\">\n    <libelement value=\"jar://$MODULE_DIR$/lib/acm.jar!/\" />\n    <libelement value=\"jar://$MODULE_DIR$/lib/junit.jar!/\" />\n    <libelement value=\"jar://$MODULE_DIR$/lib/jogg-0.0.7.jar!/\" />\n    <libelement value=\"jar://$MODULE_DIR$/lib/jorbis-0.0.15.jar!/\" />\n    <libelement value=\"jar://$MODULE_DIR$/lib/tritonus_share.jar!/\" />\n    <libelement value=\"jar://$MODULE_DIR$/lib/vorbisspi1.0.2.jar!/\" />\n    <libelement value=\"jar://$MODULE_DIR$/lib/jl1.0.1.jar!/\" />\n    <libelement value=\"jar://$MODULE_DIR$/lib/mp3spi1.9.5.jar!/\" />\n    <src_description expected_position=\"0\">\n      <src_folder value=\"file://$MODULE_DIR$/src\" expected_position=\"0\" />\n    </src_description>\n  </component>\n  <component name=\"NewModuleRootManager\" inherit-compiler-output=\"false\">\n    <output url=\"file://$MODULE_DIR$/bin\" />\n    <exclude-output />\n    <content url=\"file://$MODULE_DIR$\">\n      <sourceFolder url=\"file://$MODULE_DIR$/src\" isTestSource=\"false\" />\n    </content>\n    <orderEntry type=\"sourceFolder\" forTests=\"false\" />\n    <orderEntry type=\"inheritedJdk\" />\n    <orderEntry type=\"module-library\">\n      <library name=\"acm.jar\">\n        <CLASSES>\n          <root url=\"jar://$MODULE_DIR$/lib/acm.jar!/\" />\n        </CLASSES>\n        <JAVADOC />\n        <SOURCES>\n          <root url=\"file://$USER_HOME$/Dropbox/data/docs/stanford/StanfordCPPLib/JavaBackEnd/latest-version-decompiled\" />\n        </SOURCES>\n      </library>\n    </orderEntry>\n    <orderEntry type=\"module-library\">\n      <library name=\"junit.jar\">\n        <CLASSES>\n          <root url=\"jar://$MODULE_DIR$/lib/junit.jar!/\" />\n        </CLASSES>\n        <JAVADOC />\n        <SOURCES />\n      </library>\n    </orderEntry>\n    <orderEntry type=\"module-library\">\n      <library name=\"jogg-0.0.7.jar\">\n        <CLASSES>\n          <root url=\"jar://$MODULE_DIR$/lib/jogg-0.0.7.jar!/\" />\n        </CLASSES>\n        <JAVADOC />\n        <SOURCES />\n      </library>\n    </orderEntry>\n    <orderEntry type=\"module-library\">\n      <library name=\"jorbis-0.0.15.jar\">\n        <CLASSES>\n          <root url=\"jar://$MODULE_DIR$/lib/jorbis-0.0.15.jar!/\" />\n        </CLASSES>\n        <JAVADOC />\n        <SOURCES />\n      </library>\n    </orderEntry>\n    <orderEntry type=\"module-library\">\n      <library name=\"tritonus_share.jar\">\n        <CLASSES>\n          <root url=\"jar://$MODULE_DIR$/lib/tritonus_share.jar!/\" />\n        </CLASSES>\n        <JAVADOC />\n        <SOURCES />\n      </library>\n    </orderEntry>\n    <orderEntry type=\"module-library\">\n      <library name=\"vorbisspi1.0.2.jar\">\n        <CLASSES>\n          <root url=\"jar://$MODULE_DIR$/lib/vorbisspi1.0.2.jar!/\" />\n        </CLASSES>\n        <JAVADOC />\n        <SOURCES />\n      </library>\n    </orderEntry>\n    <orderEntry type=\"module-library\">\n      <library name=\"jl1.0.1.jar\">\n        <CLASSES>\n          <root url=\"jar://$MODULE_DIR$/lib/jl1.0.1.jar!/\" />\n        </CLASSES>\n        <JAVADOC />\n        <SOURCES />\n      </library>\n    </orderEntry>\n    <orderEntry type=\"module-library\">\n      <library name=\"mp3spi1.9.5.jar\">\n        <CLASSES>\n          <root url=\"jar://$MODULE_DIR$/lib/mp3spi1.9.5.jar!/\" />\n        </CLASSES>\n        <JAVADOC />\n        <SOURCES />\n      </library>\n    </orderEntry>\n  </component>\n</module>"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/graphics/G3DRect.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>G3DRect</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"G3DRect\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Class</li>\n<li><a href=\"../../acm/graphics/GCanvas.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/graphics/G3DRect.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"G3DRect.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.graphics</div>\n<h2 title=\"Class G3DRect\" class=\"title\">Class G3DRect</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">acm.graphics.GObject</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.graphics.GRect</li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.graphics.G3DRect</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd>acm.graphics.GFillable, <a href=\"../../acm/graphics/GResizable.html\" title=\"interface in acm.graphics\">GResizable</a>, <a href=\"../../acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true\" title=\"class or interface in java.lang\">Cloneable</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">G3DRect</span>\nextends acm.graphics.GRect</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#acm.graphics.G3DRect\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/G3DRect.html#G3DRect-double-double-\">G3DRect</a></span>(double&nbsp;d,\n       double&nbsp;d1)</code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/G3DRect.html#G3DRect-double-double-double-double-\">G3DRect</a></span>(double&nbsp;d,\n       double&nbsp;d1,\n       double&nbsp;d2,\n       double&nbsp;d3)</code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/G3DRect.html#G3DRect-double-double-double-double-boolean-\">G3DRect</a></span>(double&nbsp;d,\n       double&nbsp;d1,\n       double&nbsp;d2,\n       double&nbsp;d3,\n       boolean&nbsp;flag)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/G3DRect.html#isRaised--\">isRaised</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/G3DRect.html#paint2d-java.awt.Graphics2D-\">paint2d</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics2D.html?is-external=true\" title=\"class or interface in java.awt\">Graphics2D</a>&nbsp;g)</code>\n<div class=\"block\">Implements the <code>paint2d</code> operation for this graphical object.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/G3DRect.html#setRaised-boolean-\">setRaised</a></span>(boolean&nbsp;flag)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.graphics.GRect\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.graphics.GRect</h3>\n<code>contains, getBounds, getFillColor, getFrameHeight, getFrameWidth, getSize, isFilled, setBounds, setBounds, setFillColor, setFilled, setSize, setSize</code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.graphics.GObject\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.graphics.<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></h3>\n<code><a href=\"../../acm/graphics/GObject.html#addActionListener-java.awt.event.ActionListener-\">addActionListener</a>, <a href=\"../../acm/graphics/GObject.html#addMouseListener-java.awt.event.MouseListener-\">addMouseListener</a>, <a href=\"../../acm/graphics/GObject.html#addMouseMotionListener-java.awt.event.MouseMotionListener-\">addMouseMotionListener</a>, <a href=\"../../acm/graphics/GObject.html#areMouseListenersEnabled--\">areMouseListenersEnabled</a>, <a href=\"../../acm/graphics/GObject.html#clone--\">clone</a>, <a href=\"../../acm/graphics/GObject.html#colorName-java.awt.Color-\">colorName</a>, <a href=\"../../acm/graphics/GObject.html#colorName-int-\">colorName</a>, <a href=\"../../acm/graphics/GObject.html#colorNameFriendly-int-\">colorNameFriendly</a>, <a href=\"../../acm/graphics/GObject.html#contains-acm.graphics.GPoint-\">contains</a>, <a href=\"../../acm/graphics/GObject.html#createTransformedGraphics-java.awt.Graphics-\">createTransformedGraphics</a>, <a href=\"../../acm/graphics/GObject.html#fireActionEvent-java.awt.event.ActionEvent-\">fireActionEvent</a>, <a href=\"../../acm/graphics/GObject.html#fireActionEvent-java.lang.String-\">fireActionEvent</a>, <a href=\"../../acm/graphics/GObject.html#fireMouseListeners-java.awt.event.MouseEvent-\">fireMouseListeners</a>, <a href=\"../../acm/graphics/GObject.html#getBottomY--\">getBottomY</a>, <a href=\"../../acm/graphics/GObject.html#getCenterLocation--\">getCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#getCenterX--\">getCenterX</a>, <a href=\"../../acm/graphics/GObject.html#getCenterY--\">getCenterY</a>, <a href=\"../../acm/graphics/GObject.html#getColor--\">getColor</a>, <a href=\"../../acm/graphics/GObject.html#getComponent--\">getComponent</a>, <a href=\"../../acm/graphics/GObject.html#getHeight--\">getHeight</a>, <a href=\"../../acm/graphics/GObject.html#getLineWidth--\">getLineWidth</a>, <a href=\"../../acm/graphics/GObject.html#getLocation--\">getLocation</a>, <a href=\"../../acm/graphics/GObject.html#getMatrix--\">getMatrix</a>, <a href=\"../../acm/graphics/GObject.html#getObjectColor--\">getObjectColor</a>, <a href=\"../../acm/graphics/GObject.html#getParent--\">getParent</a>, <a href=\"../../acm/graphics/GObject.html#getRightX--\">getRightX</a>, <a href=\"../../acm/graphics/GObject.html#getWidth--\">getWidth</a>, <a href=\"../../acm/graphics/GObject.html#getX--\">getX</a>, <a href=\"../../acm/graphics/GObject.html#getY--\">getY</a>, <a href=\"../../acm/graphics/GObject.html#intersects-acm.graphics.GObject-\">intersects</a>, <a href=\"../../acm/graphics/GObject.html#isAntiAliasing--\">isAntiAliasing</a>, <a href=\"../../acm/graphics/GObject.html#isVisible--\">isVisible</a>, <a href=\"../../acm/graphics/GObject.html#move-double-double-\">move</a>, <a href=\"../../acm/graphics/GObject.html#movePolar-double-double-\">movePolar</a>, <a href=\"../../acm/graphics/GObject.html#paint-java.awt.Graphics-\">paint</a>, <a href=\"../../acm/graphics/GObject.html#paramString--\">paramString</a>, <a href=\"../../acm/graphics/GObject.html#pause-double-\">pause</a>, <a href=\"../../acm/graphics/GObject.html#removeActionListener-java.awt.event.ActionListener-\">removeActionListener</a>, <a href=\"../../acm/graphics/GObject.html#removeMouseListener-java.awt.event.MouseListener-\">removeMouseListener</a>, <a href=\"../../acm/graphics/GObject.html#removeMouseMotionListener-java.awt.event.MouseMotionListener-\">removeMouseMotionListener</a>, <a href=\"../../acm/graphics/GObject.html#repaint--\">repaint</a>, <a href=\"../../acm/graphics/GObject.html#rotate-double-\">rotate</a>, <a href=\"../../acm/graphics/GObject.html#scale-double-\">scale</a>, <a href=\"../../acm/graphics/GObject.html#scale-double-double-\">scale</a>, <a href=\"../../acm/graphics/GObject.html#sendBackward--\">sendBackward</a>, <a href=\"../../acm/graphics/GObject.html#sendForward--\">sendForward</a>, <a href=\"../../acm/graphics/GObject.html#sendToBack--\">sendToBack</a>, <a href=\"../../acm/graphics/GObject.html#sendToFront--\">sendToFront</a>, <a href=\"../../acm/graphics/GObject.html#setAntiAliasing-boolean-\">setAntiAliasing</a>, <a href=\"../../acm/graphics/GObject.html#setBottomY-double-\">setBottomY</a>, <a href=\"../../acm/graphics/GObject.html#setCenterLocation-double-double-\">setCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#setCenterLocation-acm.graphics.GPoint-\">setCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#setCenterX-double-\">setCenterX</a>, <a href=\"../../acm/graphics/GObject.html#setCenterY-double-\">setCenterY</a>, <a href=\"../../acm/graphics/GObject.html#setColor-java.awt.Color-\">setColor</a>, <a href=\"../../acm/graphics/GObject.html#setLineWidth-double-\">setLineWidth</a>, <a href=\"../../acm/graphics/GObject.html#setLocation-double-double-\">setLocation</a>, <a href=\"../../acm/graphics/GObject.html#setLocation-acm.graphics.GPoint-\">setLocation</a>, <a href=\"../../acm/graphics/GObject.html#setParent-acm.graphics.GContainer-\">setParent</a>, <a href=\"../../acm/graphics/GObject.html#setRightX-double-\">setRightX</a>, <a href=\"../../acm/graphics/GObject.html#setVisible-boolean-\">setVisible</a>, <a href=\"../../acm/graphics/GObject.html#setX-double-\">setX</a>, <a href=\"../../acm/graphics/GObject.html#setY-double-\">setY</a>, <a href=\"../../acm/graphics/GObject.html#start--\">start</a>, <a href=\"../../acm/graphics/GObject.html#start-java.lang.String:A-\">start</a>, <a href=\"../../acm/graphics/GObject.html#toString--\">toString</a>, <a href=\"../../acm/graphics/GObject.html#updateEnabledList--\">updateEnabledList</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"G3DRect-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>G3DRect</h4>\n<pre>public&nbsp;G3DRect(double&nbsp;d,\n               double&nbsp;d1)</pre>\n</li>\n</ul>\n<a name=\"G3DRect-double-double-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>G3DRect</h4>\n<pre>public&nbsp;G3DRect(double&nbsp;d,\n               double&nbsp;d1,\n               double&nbsp;d2,\n               double&nbsp;d3)</pre>\n</li>\n</ul>\n<a name=\"G3DRect-double-double-double-double-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>G3DRect</h4>\n<pre>public&nbsp;G3DRect(double&nbsp;d,\n               double&nbsp;d1,\n               double&nbsp;d2,\n               double&nbsp;d3,\n               boolean&nbsp;flag)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"paint2d-java.awt.Graphics2D-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>paint2d</h4>\n<pre>protected&nbsp;void&nbsp;paint2d(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics2D.html?is-external=true\" title=\"class or interface in java.awt\">Graphics2D</a>&nbsp;g)</pre>\n<div class=\"block\">Implements the <code>paint2d</code> operation for this graphical object.\n This method is not called directly by clients.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code>paint2d</code>&nbsp;in class&nbsp;<code>acm.graphics.GRect</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>g</code> - The graphics context into which the painting is done</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"setRaised-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setRaised</h4>\n<pre>public&nbsp;void&nbsp;setRaised(boolean&nbsp;flag)</pre>\n</li>\n</ul>\n<a name=\"isRaised--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>isRaised</h4>\n<pre>public&nbsp;boolean&nbsp;isRaised()</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Class</li>\n<li><a href=\"../../acm/graphics/GCanvas.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/graphics/G3DRect.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"G3DRect.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/graphics/GCanvas.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>GCanvas</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GCanvas\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":10,\"i16\":10,\"i17\":10,\"i18\":10,\"i19\":10,\"i20\":10,\"i21\":10,\"i22\":10,\"i23\":10,\"i24\":10,\"i25\":10,\"i26\":10,\"i27\":10,\"i28\":10,\"i29\":10,\"i30\":10,\"i31\":10,\"i32\":10,\"i33\":10,\"i34\":10,\"i35\":10,\"i36\":10,\"i37\":10,\"i38\":10,\"i39\":10,\"i40\":10,\"i41\":10,\"i42\":10,\"i43\":10,\"i44\":10,\"i45\":10,\"i46\":10,\"i47\":10,\"i48\":10,\"i49\":10,\"i50\":10,\"i51\":10,\"i52\":10,\"i53\":10,\"i54\":10,\"i55\":10,\"i56\":10,\"i57\":10,\"i58\":10,\"i59\":10,\"i60\":10,\"i61\":10,\"i62\":10,\"i63\":10,\"i64\":10,\"i65\":10,\"i66\":10,\"i67\":10,\"i68\":10,\"i69\":10,\"i70\":10,\"i71\":10,\"i72\":10,\"i73\":10,\"i74\":10,\"i75\":10,\"i76\":10,\"i77\":10,\"i78\":10,\"i79\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/graphics/G3DRect.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/graphics/GCanvas.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GCanvas.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JComponent\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.javax.swing.JComponent\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.graphics</div>\n<h2 title=\"Class GCanvas\" class=\"title\">Class GCanvas</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Component</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Container</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JComponent</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.graphics.GCanvas</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a>, <a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;</dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GCanvas</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>\nimplements <a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a>, <a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;</pre>\n<div class=\"block\">The <code>GCanvas</code> class is a lightweight component that also\n serves as a container for graphical objects.  As such, this class\n provides the link between graphical objects and the window system.\n Conceptually, the <code>GCanvas</code> provides a background canvas\n to which other graphical objects can be added.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#acm.graphics.GCanvas\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.AccessibleJComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent.AccessibleJComponent</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.AccessibleAWTContainer.html?is-external=true\" title=\"class or interface in java.awt\">Container.AccessibleAWTContainer</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.AccessibleAWTComponent.html?is-external=true\" title=\"class or interface in java.awt\">Component.AccessibleAWTComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BaselineResizeBehavior.html?is-external=true\" title=\"class or interface in java.awt\">Component.BaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BltBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.BltBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.FlipBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.FlipBufferStrategy</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#listenerList\" title=\"class or interface in javax.swing\">listenerList</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#TOOL_TIP_TEXT_KEY\" title=\"class or interface in javax.swing\">TOOL_TIP_TEXT_KEY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#ui\" title=\"class or interface in javax.swing\">ui</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#UNDEFINED_CONDITION\" title=\"class or interface in javax.swing\">UNDEFINED_CONDITION</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_ANCESTOR_OF_FOCUSED_COMPONENT\" title=\"class or interface in javax.swing\">WHEN_ANCESTOR_OF_FOCUSED_COMPONENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_FOCUSED\" title=\"class or interface in javax.swing\">WHEN_FOCUSED</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_IN_FOCUSED_WINDOW\" title=\"class or interface in javax.swing\">WHEN_IN_FOCUSED_WINDOW</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#accessibleContext\" title=\"class or interface in java.awt\">accessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#BOTTOM_ALIGNMENT\" title=\"class or interface in java.awt\">BOTTOM_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#CENTER_ALIGNMENT\" title=\"class or interface in java.awt\">CENTER_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#LEFT_ALIGNMENT\" title=\"class or interface in java.awt\">LEFT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#RIGHT_ALIGNMENT\" title=\"class or interface in java.awt\">RIGHT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#TOP_ALIGNMENT\" title=\"class or interface in java.awt\">TOP_ALIGNMENT</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.graphics.GContainer\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;acm.graphics.<a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a></h3>\n<code><a href=\"../../acm/graphics/GContainer.html#BACK_TO_FRONT\">BACK_TO_FRONT</a>, <a href=\"../../acm/graphics/GContainer.html#FRONT_TO_BACK\">FRONT_TO_BACK</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.image.ImageObserver\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ABORT\" title=\"class or interface in java.awt.image\">ABORT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ALLBITS\" title=\"class or interface in java.awt.image\">ALLBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ERROR\" title=\"class or interface in java.awt.image\">ERROR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#FRAMEBITS\" title=\"class or interface in java.awt.image\">FRAMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#HEIGHT\" title=\"class or interface in java.awt.image\">HEIGHT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#PROPERTIES\" title=\"class or interface in java.awt.image\">PROPERTIES</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#SOMEBITS\" title=\"class or interface in java.awt.image\">SOMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#WIDTH\" title=\"class or interface in java.awt.image\">WIDTH</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#GCanvas--\">GCanvas</a></span>()</code>\n<div class=\"block\">Creates a new <code>GCanvas</code> that contains no objects.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#add-java.awt.Component-\">add</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp)</code>\n<div class=\"block\">Adds the component to this canvas without changing its location.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#add-java.awt.Component-double-double-\">add</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n   double&nbsp;x,\n   double&nbsp;y)</code>\n<div class=\"block\">Adds the component to this canvas and sets its location\n to the point (<code>x</code>,&nbsp;<code>y</code>).</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#add-java.awt.Component-acm.graphics.GPoint-\">add</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n   <a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</code>\n<div class=\"block\">Adds the component to this canvas and sets its location to the specified point.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#add-acm.graphics.GObject-\">add</a></span>(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</code>\n<div class=\"block\">Adds the graphical object to this canvas.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#add-acm.graphics.GObject-double-double-\">add</a></span>(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj,\n   double&nbsp;x,\n   double&nbsp;y)</code>\n<div class=\"block\">Adds the graphical object to this canvas and sets its location\n to the point (<code>x</code>,&nbsp;<code>y</code>).</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#add-acm.graphics.GObject-acm.graphics.GPoint-\">add</a></span>(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj,\n   <a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</code>\n<div class=\"block\">Adds the graphical object to this canvas and sets its location to the specified point.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#clear--\">clear</a></span>()</code>\n<div class=\"block\">Removes all graphical objects from this canvas.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#conditionalRepaint--\">conditionalRepaint</a></span>()</code>\n<div class=\"block\">Repaints the canvas if auto-repaint is in effect.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#diff-java.io.File-\">diff</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)</code>\n<div class=\"block\">Compares the pixels of this canvas to the image stored in the given file.</div>\n</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#diff-java.io.File-boolean-\">diff</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file,\n    boolean&nbsp;ignoreWindowSize)</code>\n<div class=\"block\">Compares the pixels of this canvas to the image stored in the given file.</div>\n</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#diff-java.lang.String-\">diff</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;file)</code>\n<div class=\"block\">Compares the pixels of this canvas to the image stored in the given file.</div>\n</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#diff-java.lang.String-boolean-\">diff</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;file,\n    boolean&nbsp;ignoreWindowSize)</code>\n<div class=\"block\">Compares the pixels of this canvas to the image stored in the given file.</div>\n</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#dispatchMouseEvent-java.awt.event.MouseEvent-\">dispatchMouseEvent</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</code>\n<div class=\"block\">Dispatches this mouse event to the uppermost graphical object for which\n the active point is within the object bounds.</div>\n</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#draw-java.awt.Shape-\">draw</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Shape.html?is-external=true\" title=\"class or interface in java.awt\">Shape</a>&nbsp;paramShape)</code>\n<div class=\"block\">Draws an outlined version of the given shape.</div>\n</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#drawArc-double-double-double-double-double-double-\">drawArc</a></span>(double&nbsp;paramDouble1,\n       double&nbsp;paramDouble2,\n       double&nbsp;paramDouble3,\n       double&nbsp;paramDouble4,\n       double&nbsp;paramDouble5,\n       double&nbsp;paramDouble6)</code>\n<div class=\"block\">Draws an outlined arc with the given coordinates.</div>\n</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#drawLine-double-double-double-double-\">drawLine</a></span>(double&nbsp;paramDouble1,\n        double&nbsp;paramDouble2,\n        double&nbsp;paramDouble3,\n        double&nbsp;paramDouble4)</code>\n<div class=\"block\">Draws a line with the given endpoint coordinates.</div>\n</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#drawOval-double-double-double-double-\">drawOval</a></span>(double&nbsp;paramDouble1,\n        double&nbsp;paramDouble2,\n        double&nbsp;paramDouble3,\n        double&nbsp;paramDouble4)</code>\n<div class=\"block\">Draws an outlined oval with the given coordinates.</div>\n</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#drawPolarLine-double-double-double-double-\">drawPolarLine</a></span>(double&nbsp;x0,\n             double&nbsp;y0,\n             double&nbsp;r,\n             double&nbsp;theta)</code>\n<div class=\"block\">Draws a line with the given polar coordinates, returning its starting endpoint.</div>\n</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#drawPolarLine-acm.graphics.GPoint-double-double-\">drawPolarLine</a></span>(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;p0,\n             double&nbsp;r,\n             double&nbsp;theta)</code>\n<div class=\"block\">Draws a line with the given polar coordinates, returning its starting endpoint.</div>\n</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#drawRect-double-double-double-double-\">drawRect</a></span>(double&nbsp;paramDouble1,\n        double&nbsp;paramDouble2,\n        double&nbsp;paramDouble3,\n        double&nbsp;paramDouble4)</code>\n<div class=\"block\">Draws an outlined rectangle with the given coordinates.</div>\n</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#fill-java.awt.Shape-\">fill</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Shape.html?is-external=true\" title=\"class or interface in java.awt\">Shape</a>&nbsp;paramShape)</code>\n<div class=\"block\">Draws a filled version of the given shape.</div>\n</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#fillArc-double-double-double-double-double-double-\">fillArc</a></span>(double&nbsp;paramDouble1,\n       double&nbsp;paramDouble2,\n       double&nbsp;paramDouble3,\n       double&nbsp;paramDouble4,\n       double&nbsp;paramDouble5,\n       double&nbsp;paramDouble6)</code>\n<div class=\"block\">Draws a filled arc with the given coordinates.</div>\n</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#fillOval-double-double-double-double-\">fillOval</a></span>(double&nbsp;paramDouble1,\n        double&nbsp;paramDouble2,\n        double&nbsp;paramDouble3,\n        double&nbsp;paramDouble4)</code>\n<div class=\"block\">Draws a filled oval with the given coordinates.</div>\n</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#fillRect-double-double-double-double-\">fillRect</a></span>(double&nbsp;paramDouble1,\n        double&nbsp;paramDouble2,\n        double&nbsp;paramDouble3,\n        double&nbsp;paramDouble4)</code>\n<div class=\"block\">Draws a filled rectangle with the given coordinates.</div>\n</td>\n</tr>\n<tr id=\"i24\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#getAutoRepaintFlag--\">getAutoRepaintFlag</a></span>()</code>\n<div class=\"block\">Returns the current setting of the auto-repaint flag as described in\n <a href=\"#setAutoRepaintFlag(boolean)\"><code>setAutoRepaintFlag</code></a>.</div>\n</td>\n</tr>\n<tr id=\"i25\" class=\"rowColor\">\n<td class=\"colFirst\"><code>&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;<br>T</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#getElement-int-\">getElement</a></span>(int&nbsp;index)</code>\n<div class=\"block\">Returns the graphical object at the specified index, numbering from back\n to front in the the <i>z</i> dimension.</div>\n</td>\n</tr>\n<tr id=\"i26\" class=\"altColor\">\n<td class=\"colFirst\"><code>&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;<br>T</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#getElementAt-double...-\">getElementAt</a></span>(double...&nbsp;coords)</code>\n<div class=\"block\">This version of getElementAt accepts a variable number of coordinate\n pairs (in x1, y1, x2, y2, x3, y3, ...</div>\n</td>\n</tr>\n<tr id=\"i27\" class=\"rowColor\">\n<td class=\"colFirst\"><code>&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;<br>T</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#getElementAt-double-double-\">getElementAt</a></span>(double&nbsp;x,\n            double&nbsp;y)</code>\n<div class=\"block\">Returns the topmost graphical object that contains the point\n (<code>x</code>, <code>y</code>), or <code>null</code> if no such\n object exists.</div>\n</td>\n</tr>\n<tr id=\"i28\" class=\"altColor\">\n<td class=\"colFirst\"><code>&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;<br>T</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#getElementAt-acm.graphics.GPoint-\">getElementAt</a></span>(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</code>\n<div class=\"block\">Returns the topmost graphical object that contains the specified point,\n or <code>null</code> if no such object exists.</div>\n</td>\n</tr>\n<tr id=\"i29\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#getElementCount--\">getElementCount</a></span>()</code>\n<div class=\"block\">Returns the number of graphical objects stored in this <code>GCanvas</code>.</div>\n</td>\n</tr>\n<tr id=\"i30\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#getNativeArcFlag--\">getNativeArcFlag</a></span>()</code>\n<div class=\"block\">Returns the current setting of the native-arc flag as described in\n <a href=\"#setNativeArcFlag(boolean)\"><code>setNativeArcFlag</code></a>.</div>\n</td>\n</tr>\n<tr id=\"i31\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics2D.html?is-external=true\" title=\"class or interface in java.awt\">Graphics2D</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#getOSG--\">getOSG</a></span>()</code>\n<div class=\"block\">Returns the graphical pen for drawing on this canvas.</div>\n</td>\n</tr>\n<tr id=\"i32\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#getPixelsAsString--\">getPixelsAsString</a></span>()</code>\n<div class=\"block\">Returns a Base64-encoded representation of the pixel data of this image.</div>\n</td>\n</tr>\n<tr id=\"i33\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#getRGB-int-int-\">getRGB</a></span>(int&nbsp;x,\n      int&nbsp;y)</code>\n<div class=\"block\">Returns the RGB color stored at the given (x, y) pixel, or 0 if that pixel falls outside the bounds of this canvas.</div>\n</td>\n</tr>\n<tr id=\"i34\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#hasElementAt-double...-\">hasElementAt</a></span>(double...&nbsp;coords)</code>\n<div class=\"block\">Returns true if a graphical object exists that touches any of the given\n (x, y) pixel positions, or false if no such object exists.</div>\n</td>\n</tr>\n<tr id=\"i35\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#hasElementAt-double-double-\">hasElementAt</a></span>(double&nbsp;x,\n            double&nbsp;y)</code>\n<div class=\"block\">Returns true if a graphical object exists that touches the given\n (x, y) pixel position, or false if no such object exists.</div>\n</td>\n</tr>\n<tr id=\"i36\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#inBounds-int-int-\">inBounds</a></span>(int&nbsp;x,\n        int&nbsp;y)</code>\n<div class=\"block\">Whether the given (x, y) point falls within the bounds of this canvas, from (0, 0) ..</div>\n</td>\n</tr>\n<tr id=\"i37\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#isAntiAliasing--\">isAntiAliasing</a></span>()</code>\n<div class=\"block\">Sets whether this canvas uses anti-aliasing, which is smoothing and blending of neighboring pixels.</div>\n</td>\n</tr>\n<tr id=\"i38\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true\" title=\"class or interface in java.util\">Iterator</a>&lt;<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#iterator--\">iterator</a></span>()</code>\n<div class=\"block\">Returns an <code>Iterator</code> that cycles through the elements within\n this container in the default direction, which is from back to front.</div>\n</td>\n</tr>\n<tr id=\"i39\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true\" title=\"class or interface in java.util\">Iterator</a>&lt;<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#iterator-int-\">iterator</a></span>(int&nbsp;direction)</code>\n<div class=\"block\">Returns an <code>Iterator</code> that cycles through the elements\n within this container in the specified direction, which must be one\n of the constants <a href=\"GContainer.html#FRONT_TO_BACK\"><code>GContainer.FRONT_TO_BACK</code></a>\n or <a href=\"GContainer.html#BACK_TO_FRONT\"><code>GContainer.BACK_TO_FRONT</code></a>.</div>\n</td>\n</tr>\n<tr id=\"i40\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#paintComponent-java.awt.Graphics-\">paintComponent</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g)</code>\n<div class=\"block\">Paints the canvas.</div>\n</td>\n</tr>\n<tr id=\"i41\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#remove-java.awt.Component-\">remove</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp)</code>\n<div class=\"block\">Removes the component from the canvas.</div>\n</td>\n</tr>\n<tr id=\"i42\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#remove-double-double-\">remove</a></span>(double&nbsp;x,\n      double&nbsp;y)</code>\n<div class=\"block\">Removes the top-most graphical object at the given (x, y) position from this container.</div>\n</td>\n</tr>\n<tr id=\"i43\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#remove-acm.graphics.GObject-\">remove</a></span>(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</code>\n<div class=\"block\">Removes a graphical object from this <code>GCanvas</code>.</div>\n</td>\n</tr>\n<tr id=\"i44\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#remove-acm.graphics.GPoint-\">remove</a></span>(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</code>\n<div class=\"block\">Removes the top-most graphical object at the given (x, y) position from this container.</div>\n</td>\n</tr>\n<tr id=\"i45\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#removeAll--\">removeAll</a></span>()</code>\n<div class=\"block\">Removes all graphical objects from this <code>GCanvas</code>.</div>\n</td>\n</tr>\n<tr id=\"i46\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#removeAll-double...-\">removeAll</a></span>(double...&nbsp;coords)</code>\n<div class=\"block\">Removes all graphical objects at the given (x, y) positions from this container.</div>\n</td>\n</tr>\n<tr id=\"i47\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#removeAll-double-double-\">removeAll</a></span>(double&nbsp;x,\n         double&nbsp;y)</code>\n<div class=\"block\">Removes all graphical objects at the given (x, y) position from this container.</div>\n</td>\n</tr>\n<tr id=\"i48\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#removeAll-acm.graphics.GPoint-\">removeAll</a></span>(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</code>\n<div class=\"block\">Removes all graphical objects at the given (x, y) position from this container.</div>\n</td>\n</tr>\n<tr id=\"i49\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#save-java.io.File-\">save</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)</code>\n<div class=\"block\">Writes the contents of the canvas to the given file.</div>\n</td>\n</tr>\n<tr id=\"i50\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#save-java.lang.String-\">save</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>\n<div class=\"block\">Writes the contents of the canvas to the given file.</div>\n</td>\n</tr>\n<tr id=\"i51\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#sendBackward-acm.graphics.GObject-\">sendBackward</a></span>(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</code>\n<div class=\"block\">Implements the <code>sendBackward</code> function from the <code>GContainer</code>\n interface.</div>\n</td>\n</tr>\n<tr id=\"i52\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#sendForward-acm.graphics.GObject-\">sendForward</a></span>(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</code>\n<div class=\"block\">Implements the <code>sendForward</code> function from the <code>GContainer</code>\n interface.</div>\n</td>\n</tr>\n<tr id=\"i53\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#sendToBack-acm.graphics.GObject-\">sendToBack</a></span>(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</code>\n<div class=\"block\">Implements the <code>sendToBack</code> function from the <code>GContainer</code>\n interface.</div>\n</td>\n</tr>\n<tr id=\"i54\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#sendToFront-acm.graphics.GObject-\">sendToFront</a></span>(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</code>\n<div class=\"block\">Implements the <code>sendToFront</code> function from the <code>GContainer</code>\n interface.</div>\n</td>\n</tr>\n<tr id=\"i55\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#setAntiAliasing-boolean-\">setAntiAliasing</a></span>(boolean&nbsp;antialias)</code>\n<div class=\"block\">Sets whether this canvas uses anti-aliasing, which is smoothing and blending of neighboring pixels.</div>\n</td>\n</tr>\n<tr id=\"i56\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#setAutoRepaintFlag-boolean-\">setAutoRepaintFlag</a></span>(boolean&nbsp;state)</code>\n<div class=\"block\">Changes the setting of the auto-repaint flag.</div>\n</td>\n</tr>\n<tr id=\"i57\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#setBackground-java.awt.Color-\">setBackground</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>&nbsp;</td>\n</tr>\n<tr id=\"i58\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#setBorder-java.awt.Color-\">setBorder</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>\n<div class=\"block\">Sets this canvas to use a border of the given color, 1px thick.</div>\n</td>\n</tr>\n<tr id=\"i59\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#setBorder-java.awt.Color-int-\">setBorder</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color,\n         int&nbsp;thickness)</code>\n<div class=\"block\">Sets this canvas to use a border of the given color and number of pixels thick.</div>\n</td>\n</tr>\n<tr id=\"i60\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#setColor-java.awt.Color-\">setColor</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>&nbsp;</td>\n</tr>\n<tr id=\"i61\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#setColor-int-\">setColor</a></span>(int&nbsp;paramInt)</code>&nbsp;</td>\n</tr>\n<tr id=\"i62\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#setForeground-java.awt.Color-\">setForeground</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>&nbsp;</td>\n</tr>\n<tr id=\"i63\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#setForeground-int-\">setForeground</a></span>(int&nbsp;paramInt)</code>&nbsp;</td>\n</tr>\n<tr id=\"i64\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#setNativeArcFlag-boolean-\">setNativeArcFlag</a></span>(boolean&nbsp;state)</code>\n<div class=\"block\">Sets whether the redering code for <code>GArc</code> and <code>GOval</code> should use\n Java arcs.</div>\n</td>\n</tr>\n<tr id=\"i65\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#setOpaque-boolean-\">setOpaque</a></span>(boolean&nbsp;flag)</code>\n<div class=\"block\">Sets a flag indicating whether this canvas is opaque, which means that it\n obscures anything behind it.</div>\n</td>\n</tr>\n<tr id=\"i66\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#setPixelsFromString-java.lang.String-\">setPixelsFromString</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;base64)</code>&nbsp;</td>\n</tr>\n<tr id=\"i67\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#setRGB-int-int-int-\">setRGB</a></span>(int&nbsp;x,\n      int&nbsp;y,\n      int&nbsp;rgb)</code>&nbsp;</td>\n</tr>\n<tr id=\"i68\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#setRGB-int-int-int-boolean-\">setRGB</a></span>(int&nbsp;x,\n      int&nbsp;y,\n      int&nbsp;rgb,\n      boolean&nbsp;repaint)</code>&nbsp;</td>\n</tr>\n<tr id=\"i69\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#setShowPixelGrid-boolean-\">setShowPixelGrid</a></span>(boolean&nbsp;show)</code>\n<div class=\"block\">Sets whether to display information on this canvas about the current pixel where\n the mouse pointer is resting.</div>\n</td>\n</tr>\n<tr id=\"i70\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#setShowPixelInfo-boolean-\">setShowPixelInfo</a></span>(boolean&nbsp;show)</code>\n<div class=\"block\">Sets whether to display information on this canvas about the current pixel where\n the mouse pointer is resting.</div>\n</td>\n</tr>\n<tr id=\"i71\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#showDiffDialog--\">showDiffDialog</a></span>()</code>\n<div class=\"block\">Pops up a dialog box to compare the contents of this canvas to an expected image file.</div>\n</td>\n</tr>\n<tr id=\"i72\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#showDiffDialog-java.io.File-\">showDiffDialog</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;directory)</code>\n<div class=\"block\">Pops up a dialog box to compare the contents of this canvas to an expected image file.</div>\n</td>\n</tr>\n<tr id=\"i73\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#showDiffDialog-java.lang.String-\">showDiffDialog</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;directory)</code>\n<div class=\"block\">Pops up a dialog box to compare the contents of this canvas to an expected image file.</div>\n</td>\n</tr>\n<tr id=\"i74\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#showSaveDialog--\">showSaveDialog</a></span>()</code>\n<div class=\"block\">Pops up a dialog box to save the contents of this canvas to a file.</div>\n</td>\n</tr>\n<tr id=\"i75\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#showSaveDialog-java.io.File-\">showSaveDialog</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;directory)</code>\n<div class=\"block\">Pops up a dialog box to save the contents of this canvas to a file.</div>\n</td>\n</tr>\n<tr id=\"i76\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#showSaveDialog-java.lang.String-\">showSaveDialog</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;directory)</code>\n<div class=\"block\">Pops up a dialog box to save the contents of this canvas to a file.</div>\n</td>\n</tr>\n<tr id=\"i77\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/BufferedImage.html?is-external=true\" title=\"class or interface in java.awt.image\">BufferedImage</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#toImage--\">toImage</a></span>()</code>\n<div class=\"block\">Returns the pixel contents of this canvas as a BufferedImage.</div>\n</td>\n</tr>\n<tr id=\"i78\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/BufferedImage.html?is-external=true\" title=\"class or interface in java.awt.image\">BufferedImage</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#toImage-int-int-\">toImage</a></span>(int&nbsp;width,\n       int&nbsp;height)</code>\n<div class=\"block\">Returns the pixel contents of this canvas as a BufferedImage of the given size.</div>\n</td>\n</tr>\n<tr id=\"i79\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvas.html#updateEnabledList--\">updateEnabledList</a></span>()</code>\n<div class=\"block\">Reconstructs the enabledList list in the correct order.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addAncestorListener-javax.swing.event.AncestorListener-\" title=\"class or interface in javax.swing\">addAncestorListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addNotify--\" title=\"class or interface in javax.swing\">addNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addVetoableChangeListener-java.beans.VetoableChangeListener-\" title=\"class or interface in javax.swing\">addVetoableChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#computeVisibleRect-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">computeVisibleRect</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#contains-int-int-\" title=\"class or interface in javax.swing\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#createToolTip--\" title=\"class or interface in javax.swing\">createToolTip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#disable--\" title=\"class or interface in javax.swing\">disable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#enable--\" title=\"class or interface in javax.swing\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-boolean-boolean-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-char-char-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-int-int-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#fireVetoableChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in javax.swing\">fireVetoableChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getActionForKeyStroke-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">getActionForKeyStroke</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getActionMap--\" title=\"class or interface in javax.swing\">getActionMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAlignmentX--\" title=\"class or interface in javax.swing\">getAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAlignmentY--\" title=\"class or interface in javax.swing\">getAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAncestorListeners--\" title=\"class or interface in javax.swing\">getAncestorListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAutoscrolls--\" title=\"class or interface in javax.swing\">getAutoscrolls</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBaseline-int-int-\" title=\"class or interface in javax.swing\">getBaseline</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBaselineResizeBehavior--\" title=\"class or interface in javax.swing\">getBaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBorder--\" title=\"class or interface in javax.swing\">getBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBounds-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getClientProperty-java.lang.Object-\" title=\"class or interface in javax.swing\">getClientProperty</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getComponentGraphics-java.awt.Graphics-\" title=\"class or interface in javax.swing\">getComponentGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getComponentPopupMenu--\" title=\"class or interface in javax.swing\">getComponentPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getConditionForKeyStroke-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">getConditionForKeyStroke</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getDebugGraphicsOptions--\" title=\"class or interface in javax.swing\">getDebugGraphicsOptions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getDefaultLocale--\" title=\"class or interface in javax.swing\">getDefaultLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getFontMetrics-java.awt.Font-\" title=\"class or interface in javax.swing\">getFontMetrics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getGraphics--\" title=\"class or interface in javax.swing\">getGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getHeight--\" title=\"class or interface in javax.swing\">getHeight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInheritsPopupMenu--\" title=\"class or interface in javax.swing\">getInheritsPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputMap--\" title=\"class or interface in javax.swing\">getInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputMap-int-\" title=\"class or interface in javax.swing\">getInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputVerifier--\" title=\"class or interface in javax.swing\">getInputVerifier</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInsets--\" title=\"class or interface in javax.swing\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInsets-java.awt.Insets-\" title=\"class or interface in javax.swing\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getListeners-java.lang.Class-\" title=\"class or interface in javax.swing\">getListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getLocation-java.awt.Point-\" title=\"class or interface in javax.swing\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getMaximumSize--\" title=\"class or interface in javax.swing\">getMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getMinimumSize--\" title=\"class or interface in javax.swing\">getMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getNextFocusableComponent--\" title=\"class or interface in javax.swing\">getNextFocusableComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getPopupLocation-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">getPopupLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getPreferredSize--\" title=\"class or interface in javax.swing\">getPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getRegisteredKeyStrokes--\" title=\"class or interface in javax.swing\">getRegisteredKeyStrokes</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getRootPane--\" title=\"class or interface in javax.swing\">getRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getToolTipLocation-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">getToolTipLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getToolTipText--\" title=\"class or interface in javax.swing\">getToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getToolTipText-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">getToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getTopLevelAncestor--\" title=\"class or interface in javax.swing\">getTopLevelAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getTransferHandler--\" title=\"class or interface in javax.swing\">getTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getUIClassID--\" title=\"class or interface in javax.swing\">getUIClassID</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVerifyInputWhenFocusTarget--\" title=\"class or interface in javax.swing\">getVerifyInputWhenFocusTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVetoableChangeListeners--\" title=\"class or interface in javax.swing\">getVetoableChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVisibleRect--\" title=\"class or interface in javax.swing\">getVisibleRect</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getWidth--\" title=\"class or interface in javax.swing\">getWidth</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getX--\" title=\"class or interface in javax.swing\">getX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getY--\" title=\"class or interface in javax.swing\">getY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#grabFocus--\" title=\"class or interface in javax.swing\">grabFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#hide--\" title=\"class or interface in javax.swing\">hide</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isDoubleBuffered--\" title=\"class or interface in javax.swing\">isDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isLightweightComponent-java.awt.Component-\" title=\"class or interface in javax.swing\">isLightweightComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isManagingFocus--\" title=\"class or interface in javax.swing\">isManagingFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isOpaque--\" title=\"class or interface in javax.swing\">isOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isOptimizedDrawingEnabled--\" title=\"class or interface in javax.swing\">isOptimizedDrawingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingForPrint--\" title=\"class or interface in javax.swing\">isPaintingForPrint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingOrigin--\" title=\"class or interface in javax.swing\">isPaintingOrigin</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingTile--\" title=\"class or interface in javax.swing\">isPaintingTile</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isRequestFocusEnabled--\" title=\"class or interface in javax.swing\">isRequestFocusEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isValidateRoot--\" title=\"class or interface in javax.swing\">isValidateRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paint-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintBorder-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintChildren-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintChildren</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintImmediately-int-int-int-int-\" title=\"class or interface in javax.swing\">paintImmediately</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintImmediately-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">paintImmediately</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paramString--\" title=\"class or interface in javax.swing\">paramString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#print-java.awt.Graphics-\" title=\"class or interface in javax.swing\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printAll-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printBorder-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printChildren-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printChildren</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printComponent-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processComponentKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in javax.swing\">processComponentKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processKeyBinding-javax.swing.KeyStroke-java.awt.event.KeyEvent-int-boolean-\" title=\"class or interface in javax.swing\">processKeyBinding</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in javax.swing\">processKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processMouseEvent-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">processMouseEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processMouseMotionEvent-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">processMouseMotionEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#putClientProperty-java.lang.Object-java.lang.Object-\" title=\"class or interface in javax.swing\">putClientProperty</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#registerKeyboardAction-java.awt.event.ActionListener-javax.swing.KeyStroke-int-\" title=\"class or interface in javax.swing\">registerKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#registerKeyboardAction-java.awt.event.ActionListener-java.lang.String-javax.swing.KeyStroke-int-\" title=\"class or interface in javax.swing\">registerKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#removeAncestorListener-javax.swing.event.AncestorListener-\" title=\"class or interface in javax.swing\">removeAncestorListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#removeNotify--\" title=\"class or interface in javax.swing\">removeNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#removeVetoableChangeListener-java.beans.VetoableChangeListener-\" title=\"class or interface in javax.swing\">removeVetoableChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#repaint-long-int-int-int-int-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#repaint-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestDefaultFocus--\" title=\"class or interface in javax.swing\">requestDefaultFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocus--\" title=\"class or interface in javax.swing\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocus-boolean-\" title=\"class or interface in javax.swing\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocusInWindow--\" title=\"class or interface in javax.swing\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocusInWindow-boolean-\" title=\"class or interface in javax.swing\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#resetKeyboardActions--\" title=\"class or interface in javax.swing\">resetKeyboardActions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#reshape-int-int-int-int-\" title=\"class or interface in javax.swing\">reshape</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#revalidate--\" title=\"class or interface in javax.swing\">revalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#scrollRectToVisible-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">scrollRectToVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setActionMap-javax.swing.ActionMap-\" title=\"class or interface in javax.swing\">setActionMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAlignmentX-float-\" title=\"class or interface in javax.swing\">setAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAlignmentY-float-\" title=\"class or interface in javax.swing\">setAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAutoscrolls-boolean-\" title=\"class or interface in javax.swing\">setAutoscrolls</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setBorder-javax.swing.border.Border-\" title=\"class or interface in javax.swing\">setBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setComponentPopupMenu-javax.swing.JPopupMenu-\" title=\"class or interface in javax.swing\">setComponentPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDebugGraphicsOptions-int-\" title=\"class or interface in javax.swing\">setDebugGraphicsOptions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDefaultLocale-java.util.Locale-\" title=\"class or interface in javax.swing\">setDefaultLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDoubleBuffered-boolean-\" title=\"class or interface in javax.swing\">setDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setEnabled-boolean-\" title=\"class or interface in javax.swing\">setEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setFocusTraversalKeys-int-java.util.Set-\" title=\"class or interface in javax.swing\">setFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setFont-java.awt.Font-\" title=\"class or interface in javax.swing\">setFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInheritsPopupMenu-boolean-\" title=\"class or interface in javax.swing\">setInheritsPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInputMap-int-javax.swing.InputMap-\" title=\"class or interface in javax.swing\">setInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInputVerifier-javax.swing.InputVerifier-\" title=\"class or interface in javax.swing\">setInputVerifier</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setMaximumSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setMinimumSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setNextFocusableComponent-java.awt.Component-\" title=\"class or interface in javax.swing\">setNextFocusableComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setPreferredSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setRequestFocusEnabled-boolean-\" title=\"class or interface in javax.swing\">setRequestFocusEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setToolTipText-java.lang.String-\" title=\"class or interface in javax.swing\">setToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setTransferHandler-javax.swing.TransferHandler-\" title=\"class or interface in javax.swing\">setTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setUI-javax.swing.plaf.ComponentUI-\" title=\"class or interface in javax.swing\">setUI</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setVerifyInputWhenFocusTarget-boolean-\" title=\"class or interface in javax.swing\">setVerifyInputWhenFocusTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setVisible-boolean-\" title=\"class or interface in javax.swing\">setVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#unregisterKeyboardAction-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">unregisterKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#update-java.awt.Graphics-\" title=\"class or interface in javax.swing\">update</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#updateUI--\" title=\"class or interface in javax.swing\">updateUI</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.lang.String-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">addContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addImpl-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">addImpl</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#applyComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">applyComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#areFocusTraversalKeysSet-int-\" title=\"class or interface in java.awt\">areFocusTraversalKeysSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#countComponents--\" title=\"class or interface in java.awt\">countComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#deliverEvent-java.awt.Event-\" title=\"class or interface in java.awt\">deliverEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#doLayout--\" title=\"class or interface in java.awt\">doLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-int-int-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponent-int-\" title=\"class or interface in java.awt\">getComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-int-int-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentCount--\" title=\"class or interface in java.awt\">getComponentCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponents--\" title=\"class or interface in java.awt\">getComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentZOrder-java.awt.Component-\" title=\"class or interface in java.awt\">getComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getContainerListeners--\" title=\"class or interface in java.awt\">getContainerListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalKeys-int-\" title=\"class or interface in java.awt\">getFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalPolicy--\" title=\"class or interface in java.awt\">getFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getLayout--\" title=\"class or interface in java.awt\">getLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMousePosition-boolean-\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#insets--\" title=\"class or interface in java.awt\">insets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#invalidate--\" title=\"class or interface in java.awt\">invalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isAncestorOf-java.awt.Component-\" title=\"class or interface in java.awt\">isAncestorOf</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot--\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot-java.awt.Container-\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicyProvider--\" title=\"class or interface in java.awt\">isFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicySet--\" title=\"class or interface in java.awt\">isFocusTraversalPolicySet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#layout--\" title=\"class or interface in java.awt\">layout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintStream-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintWriter-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#locate-int-int-\" title=\"class or interface in java.awt\">locate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#minimumSize--\" title=\"class or interface in java.awt\">minimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paintComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#preferredSize--\" title=\"class or interface in java.awt\">preferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#printComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">printComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processContainerEvent-java.awt.event.ContainerEvent-\" title=\"class or interface in java.awt\">processContainerEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">processEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#remove-int-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">removeContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setComponentZOrder-java.awt.Component-int-\" title=\"class or interface in java.awt\">setComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusCycleRoot-boolean-\" title=\"class or interface in java.awt\">setFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicy-java.awt.FocusTraversalPolicy-\" title=\"class or interface in java.awt\">setFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicyProvider-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setLayout-java.awt.LayoutManager-\" title=\"class or interface in java.awt\">setLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#transferFocusDownCycle--\" title=\"class or interface in java.awt\">transferFocusDownCycle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validate--\" title=\"class or interface in java.awt\">validate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validateTree--\" title=\"class or interface in java.awt\">validateTree</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#action-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">action</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#add-java.awt.PopupMenu-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">addComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">addFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">addHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">addHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">addInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">addKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">addMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">addMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">addMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#bounds--\" title=\"class or interface in java.awt\">bounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#coalesceEvents-java.awt.AWTEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">coalesceEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-java.awt.Point-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-java.awt.image.ImageProducer-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-int-int-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-java.awt.ImageCapabilities-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disableEvents-long-\" title=\"class or interface in java.awt\">disableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#dispatchEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">dispatchEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable-boolean-\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableEvents-long-\" title=\"class or interface in java.awt\">enableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableInputMethods-boolean-\" title=\"class or interface in java.awt\">enableInputMethods</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-byte-byte-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-double-double-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-float-float-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-long-long-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-short-short-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getAccessibleContext--\" title=\"class or interface in java.awt\">getAccessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBackground--\" title=\"class or interface in java.awt\">getBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds--\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getColorModel--\" title=\"class or interface in java.awt\">getColorModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentListeners--\" title=\"class or interface in java.awt\">getComponentListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentOrientation--\" title=\"class or interface in java.awt\">getComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getCursor--\" title=\"class or interface in java.awt\">getCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getDropTarget--\" title=\"class or interface in java.awt\">getDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusCycleRootAncestor--\" title=\"class or interface in java.awt\">getFocusCycleRootAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusListeners--\" title=\"class or interface in java.awt\">getFocusListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusTraversalKeysEnabled--\" title=\"class or interface in java.awt\">getFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFont--\" title=\"class or interface in java.awt\">getFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getForeground--\" title=\"class or interface in java.awt\">getForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getGraphicsConfiguration--\" title=\"class or interface in java.awt\">getGraphicsConfiguration</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyBoundsListeners--\" title=\"class or interface in java.awt\">getHierarchyBoundsListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyListeners--\" title=\"class or interface in java.awt\">getHierarchyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getIgnoreRepaint--\" title=\"class or interface in java.awt\">getIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputContext--\" title=\"class or interface in java.awt\">getInputContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodListeners--\" title=\"class or interface in java.awt\">getInputMethodListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodRequests--\" title=\"class or interface in java.awt\">getInputMethodRequests</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getKeyListeners--\" title=\"class or interface in java.awt\">getKeyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocale--\" title=\"class or interface in java.awt\">getLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation--\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocationOnScreen--\" title=\"class or interface in java.awt\">getLocationOnScreen</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseListeners--\" title=\"class or interface in java.awt\">getMouseListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseMotionListeners--\" title=\"class or interface in java.awt\">getMouseMotionListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMousePosition--\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseWheelListeners--\" title=\"class or interface in java.awt\">getMouseWheelListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getName--\" title=\"class or interface in java.awt\">getName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getParent--\" title=\"class or interface in java.awt\">getParent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPeer--\" title=\"class or interface in java.awt\">getPeer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners--\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners-java.lang.String-\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize--\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getToolkit--\" title=\"class or interface in java.awt\">getToolkit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getTreeLock--\" title=\"class or interface in java.awt\">getTreeLock</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#gotFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">gotFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#handleEvent-java.awt.Event-\" title=\"class or interface in java.awt\">handleEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hasFocus--\" title=\"class or interface in java.awt\">hasFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#imageUpdate-java.awt.Image-int-int-int-int-int-\" title=\"class or interface in java.awt\">imageUpdate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#inside-int-int-\" title=\"class or interface in java.awt\">inside</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isBackgroundSet--\" title=\"class or interface in java.awt\">isBackgroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isCursorSet--\" title=\"class or interface in java.awt\">isCursorSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDisplayable--\" title=\"class or interface in java.awt\">isDisplayable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isEnabled--\" title=\"class or interface in java.awt\">isEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusable--\" title=\"class or interface in java.awt\">isFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusOwner--\" title=\"class or interface in java.awt\">isFocusOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusTraversable--\" title=\"class or interface in java.awt\">isFocusTraversable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFontSet--\" title=\"class or interface in java.awt\">isFontSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isForegroundSet--\" title=\"class or interface in java.awt\">isForegroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isLightweight--\" title=\"class or interface in java.awt\">isLightweight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMaximumSizeSet--\" title=\"class or interface in java.awt\">isMaximumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMinimumSizeSet--\" title=\"class or interface in java.awt\">isMinimumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isPreferredSizeSet--\" title=\"class or interface in java.awt\">isPreferredSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isShowing--\" title=\"class or interface in java.awt\">isShowing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isValid--\" title=\"class or interface in java.awt\">isValid</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isVisible--\" title=\"class or interface in java.awt\">isVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyDown-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyUp-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list--\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintStream-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintWriter-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#location--\" title=\"class or interface in java.awt\">location</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#lostFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">lostFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDown-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDrag-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDrag</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseEnter-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseEnter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseExit-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseExit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseMove-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseMove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseUp-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#move-int-int-\" title=\"class or interface in java.awt\">move</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#nextFocus--\" title=\"class or interface in java.awt\">nextFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#paintAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#postEvent-java.awt.Event-\" title=\"class or interface in java.awt\">postEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processComponentEvent-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt\">processComponentEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processFocusEvent-java.awt.event.FocusEvent-\" title=\"class or interface in java.awt\">processFocusEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyBoundsEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyBoundsEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processInputMethodEvent-java.awt.event.InputMethodEvent-\" title=\"class or interface in java.awt\">processInputMethodEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseWheelEvent-java.awt.event.MouseWheelEvent-\" title=\"class or interface in java.awt\">processMouseWheelEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#remove-java.awt.MenuComponent-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">removeComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">removeFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">removeHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">removeHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">removeInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">removeKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">removeMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">removeMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">removeMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint--\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-int-int-int-int-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-long-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#resize-java.awt.Dimension-\" title=\"class or interface in java.awt\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#resize-int-int-\" title=\"class or interface in java.awt\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-int-int-int-int-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">setComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setCursor-java.awt.Cursor-\" title=\"class or interface in java.awt\">setCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setDropTarget-java.awt.dnd.DropTarget-\" title=\"class or interface in java.awt\">setDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusable-boolean-\" title=\"class or interface in java.awt\">setFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusTraversalKeysEnabled-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setIgnoreRepaint-boolean-\" title=\"class or interface in java.awt\">setIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocale-java.util.Locale-\" title=\"class or interface in java.awt\">setLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-int-int-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-java.awt.Point-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setName-java.lang.String-\" title=\"class or interface in java.awt\">setName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-int-int-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show--\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show-boolean-\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#size--\" title=\"class or interface in java.awt\">size</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#toString--\" title=\"class or interface in java.awt\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocus--\" title=\"class or interface in java.awt\">transferFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusBackward--\" title=\"class or interface in java.awt\">transferFocusBackward</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusUpCycle--\" title=\"class or interface in java.awt\">transferFocusUpCycle</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.graphics.GCanvasInterface\">\n<!--   -->\n</a>\n<h3>Methods inherited from interface&nbsp;acm.graphics.<a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></h3>\n<code><a href=\"../../acm/graphics/GCanvasInterface.html#getBackground--\">getBackground</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#getFont--\">getFont</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#getHeight--\">getHeight</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#getSize--\">getSize</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#getWidth--\">getWidth</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#repaint--\">repaint</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#setFont-java.awt.Font-\">setFont</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#setSize-java.awt.Dimension-\">setSize</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Iterable\">\n<!--   -->\n</a>\n<h3>Methods inherited from interface&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true#forEach-java.util.function.Consumer-\" title=\"class or interface in java.lang\">forEach</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true#spliterator--\" title=\"class or interface in java.lang\">spliterator</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GCanvas--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GCanvas</h4>\n<pre>public&nbsp;GCanvas()</pre>\n<div class=\"block\">Creates a new <code>GCanvas</code> that contains no objects.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GCanvas gc = new GCanvas();</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"add-java.awt.Component-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;add(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp)</pre>\n<div class=\"block\">Adds the component to this canvas without changing its location.\n If the component has no size, its size is set to its preferred size.\n The return type is <code>Component</code> to match the method in\n the <code>Container</code> class, but the result is typically\n ignored.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-\" title=\"class or interface in java.awt\">add</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>comp</code> - The component to add</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gc.add(comp);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"add-java.awt.Component-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>public final&nbsp;void&nbsp;add(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n                      double&nbsp;x,\n                      double&nbsp;y)</pre>\n<div class=\"block\">Adds the component to this canvas and sets its location\n to the point (<code>x</code>,&nbsp;<code>y</code>).</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#add-java.awt.Component-double-double-\">add</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>comp</code> - The component to add</dd>\n<dd><code>x</code> - The new x-coordinate for the object</dd>\n<dd><code>y</code> - The new y-coordinate for the object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gc.add(comp, x, y);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"add-java.awt.Component-acm.graphics.GPoint-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>public final&nbsp;void&nbsp;add(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n                      <a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</pre>\n<div class=\"block\">Adds the component to this canvas and sets its location to the specified point.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#add-java.awt.Component-acm.graphics.GPoint-\">add</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>comp</code> - The component to add</dd>\n<dd><code>pt</code> - A <code>GPoint</code> object giving the coordinates of the point</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gc.add(comp, pt);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"add-acm.graphics.GObject-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>public&nbsp;void&nbsp;add(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</pre>\n<div class=\"block\">Adds the graphical object to this canvas.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#add-acm.graphics.GObject-\">add</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GContainer.html#add-acm.graphics.GObject-\">add</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>gobj</code> - The graphical object to add</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gc.add(gobj);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"add-acm.graphics.GObject-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>public final&nbsp;void&nbsp;add(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj,\n                      double&nbsp;x,\n                      double&nbsp;y)</pre>\n<div class=\"block\">Adds the graphical object to this canvas and sets its location\n to the point (<code>x</code>,&nbsp;<code>y</code>).</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#add-acm.graphics.GObject-double-double-\">add</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GContainer.html#add-acm.graphics.GObject-double-double-\">add</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>gobj</code> - The graphical object to add</dd>\n<dd><code>x</code> - The new x-coordinate for the object</dd>\n<dd><code>y</code> - The new y-coordinate for the object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gc.add(gobj, x, y);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"add-acm.graphics.GObject-acm.graphics.GPoint-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>public final&nbsp;void&nbsp;add(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj,\n                      <a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</pre>\n<div class=\"block\">Adds the graphical object to this canvas and sets its location to the specified point.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#add-acm.graphics.GObject-acm.graphics.GPoint-\">add</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GContainer.html#add-acm.graphics.GObject-acm.graphics.GPoint-\">add</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>gobj</code> - The graphical object to add</dd>\n<dd><code>pt</code> - A <code>GPoint</code> object giving the coordinates of the point</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gc.add(gobj, pt);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"clear--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clear</h4>\n<pre>public&nbsp;void&nbsp;clear()</pre>\n<div class=\"block\">Removes all graphical objects from this canvas.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#clear--\">clear</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"conditionalRepaint--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>conditionalRepaint</h4>\n<pre>protected&nbsp;void&nbsp;conditionalRepaint()</pre>\n<div class=\"block\">Repaints the canvas if auto-repaint is in effect.  This method is called only\n by the <a href=\"GObject.html#repaint()\"><code>repaint</code></a> method in\n <code>GObject</code> and is not accessible outside the package.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gc.conditionalRepaint();</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"diff-java.io.File-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>diff</h4>\n<pre>public&nbsp;void&nbsp;diff(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)</pre>\n<div class=\"block\">Compares the pixels of this canvas to the image stored in the given file.</div>\n</li>\n</ul>\n<a name=\"diff-java.io.File-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>diff</h4>\n<pre>public&nbsp;void&nbsp;diff(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file,\n                 boolean&nbsp;ignoreWindowSize)</pre>\n<div class=\"block\">Compares the pixels of this canvas to the image stored in the given file.\n If ignoreWindowSize is true, allows the two windows' sizes to differ as\n long as they don't have any different drawn shapes between them.</div>\n</li>\n</ul>\n<a name=\"diff-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>diff</h4>\n<pre>public&nbsp;void&nbsp;diff(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;file)</pre>\n<div class=\"block\">Compares the pixels of this canvas to the image stored in the given file.</div>\n</li>\n</ul>\n<a name=\"diff-java.lang.String-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>diff</h4>\n<pre>public&nbsp;void&nbsp;diff(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;file,\n                 boolean&nbsp;ignoreWindowSize)</pre>\n<div class=\"block\">Compares the pixels of this canvas to the image stored in the given file.\n If ignoreWindowSize is true, allows the two windows' sizes to differ as\n long as they don't have any different drawn shapes between them.</div>\n</li>\n</ul>\n<a name=\"dispatchMouseEvent-java.awt.event.MouseEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>dispatchMouseEvent</h4>\n<pre>protected&nbsp;void&nbsp;dispatchMouseEvent(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Dispatches this mouse event to the uppermost graphical object for which\n the active point is within the object bounds.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>e</code> - The event that triggered this response</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gc.dispatchMouseEvent(MouseEvent e);</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"draw-java.awt.Shape-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>draw</h4>\n<pre>public&nbsp;void&nbsp;draw(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Shape.html?is-external=true\" title=\"class or interface in java.awt\">Shape</a>&nbsp;paramShape)</pre>\n<div class=\"block\">Draws an outlined version of the given shape.</div>\n</li>\n</ul>\n<a name=\"drawArc-double-double-double-double-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>drawArc</h4>\n<pre>public&nbsp;void&nbsp;drawArc(double&nbsp;paramDouble1,\n                    double&nbsp;paramDouble2,\n                    double&nbsp;paramDouble3,\n                    double&nbsp;paramDouble4,\n                    double&nbsp;paramDouble5,\n                    double&nbsp;paramDouble6)</pre>\n<div class=\"block\">Draws an outlined arc with the given coordinates.</div>\n</li>\n</ul>\n<a name=\"drawLine-double-double-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>drawLine</h4>\n<pre>public&nbsp;void&nbsp;drawLine(double&nbsp;paramDouble1,\n                     double&nbsp;paramDouble2,\n                     double&nbsp;paramDouble3,\n                     double&nbsp;paramDouble4)</pre>\n<div class=\"block\">Draws a line with the given endpoint coordinates.</div>\n</li>\n</ul>\n<a name=\"drawOval-double-double-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>drawOval</h4>\n<pre>public&nbsp;void&nbsp;drawOval(double&nbsp;paramDouble1,\n                     double&nbsp;paramDouble2,\n                     double&nbsp;paramDouble3,\n                     double&nbsp;paramDouble4)</pre>\n<div class=\"block\">Draws an outlined oval with the given coordinates.</div>\n</li>\n</ul>\n<a name=\"drawPolarLine-double-double-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>drawPolarLine</h4>\n<pre>public&nbsp;<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;drawPolarLine(double&nbsp;x0,\n                            double&nbsp;y0,\n                            double&nbsp;r,\n                            double&nbsp;theta)</pre>\n<div class=\"block\">Draws a line with the given polar coordinates, returning its starting endpoint.</div>\n</li>\n</ul>\n<a name=\"drawPolarLine-acm.graphics.GPoint-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>drawPolarLine</h4>\n<pre>public&nbsp;<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;drawPolarLine(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;p0,\n                            double&nbsp;r,\n                            double&nbsp;theta)</pre>\n<div class=\"block\">Draws a line with the given polar coordinates, returning its starting endpoint.</div>\n</li>\n</ul>\n<a name=\"drawRect-double-double-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>drawRect</h4>\n<pre>public&nbsp;void&nbsp;drawRect(double&nbsp;paramDouble1,\n                     double&nbsp;paramDouble2,\n                     double&nbsp;paramDouble3,\n                     double&nbsp;paramDouble4)</pre>\n<div class=\"block\">Draws an outlined rectangle with the given coordinates.</div>\n</li>\n</ul>\n<a name=\"fill-java.awt.Shape-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fill</h4>\n<pre>public&nbsp;void&nbsp;fill(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Shape.html?is-external=true\" title=\"class or interface in java.awt\">Shape</a>&nbsp;paramShape)</pre>\n<div class=\"block\">Draws a filled version of the given shape.</div>\n</li>\n</ul>\n<a name=\"fillArc-double-double-double-double-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fillArc</h4>\n<pre>public&nbsp;void&nbsp;fillArc(double&nbsp;paramDouble1,\n                    double&nbsp;paramDouble2,\n                    double&nbsp;paramDouble3,\n                    double&nbsp;paramDouble4,\n                    double&nbsp;paramDouble5,\n                    double&nbsp;paramDouble6)</pre>\n<div class=\"block\">Draws a filled arc with the given coordinates.</div>\n</li>\n</ul>\n<a name=\"fillOval-double-double-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fillOval</h4>\n<pre>public&nbsp;void&nbsp;fillOval(double&nbsp;paramDouble1,\n                     double&nbsp;paramDouble2,\n                     double&nbsp;paramDouble3,\n                     double&nbsp;paramDouble4)</pre>\n<div class=\"block\">Draws a filled oval with the given coordinates.</div>\n</li>\n</ul>\n<a name=\"fillRect-double-double-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fillRect</h4>\n<pre>public&nbsp;void&nbsp;fillRect(double&nbsp;paramDouble1,\n                     double&nbsp;paramDouble2,\n                     double&nbsp;paramDouble3,\n                     double&nbsp;paramDouble4)</pre>\n<div class=\"block\">Draws a filled rectangle with the given coordinates.</div>\n</li>\n</ul>\n<a name=\"getAutoRepaintFlag--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getAutoRepaintFlag</h4>\n<pre>public&nbsp;boolean&nbsp;getAutoRepaintFlag()</pre>\n<div class=\"block\">Returns the current setting of the auto-repaint flag as described in\n <a href=\"#setAutoRepaintFlag(boolean)\"><code>setAutoRepaintFlag</code></a>.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd><code>true</code> if auto-repaint mode is enabled, and <code>false</code>\n          otherwise</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>if (gc.getAutoRepaintFlag()) . . .</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getElement-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getElement</h4>\n<pre>public&nbsp;&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;&nbsp;T&nbsp;getElement(int&nbsp;index)</pre>\n<div class=\"block\">Returns the graphical object at the specified index, numbering from back\n to front in the the <i>z</i> dimension.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#getElement-int-\">getElement</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GContainer.html#getElement-int-\">getElement</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>index</code> - The index of the component to return</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The graphical object at the specified index</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GObject gobj = gc.getElement(index);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getElementAt-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getElementAt</h4>\n<pre>public&nbsp;&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;&nbsp;T&nbsp;getElementAt(double&nbsp;x,\n                                          double&nbsp;y)</pre>\n<div class=\"block\">Returns the topmost graphical object that contains the point\n (<code>x</code>, <code>y</code>), or <code>null</code> if no such\n object exists.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#getElementAt-double-double-\">getElementAt</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GContainer.html#getElementAt-double-double-\">getElementAt</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x</code> - The x-coordinate of the point being tested</dd>\n<dd><code>y</code> - The y-coordinate of the point being tested</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The graphical object at the specified location, or <code>null</code>\n         if no such object exists</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GObject gobj = gc.getElementAt(x, y);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getElementAt-double...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getElementAt</h4>\n<pre>public&nbsp;&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;&nbsp;T&nbsp;getElementAt(double...&nbsp;coords)</pre>\n<div class=\"block\">This version of getElementAt accepts a variable number of coordinate\n pairs (in x1, y1, x2, y2, x3, y3, ... order) and will return the\n topmost graphical objectfound at any of these pairs.\n The pairs are checked in the order they are passed.\n If no graphical object is found at any of these coordinate pairs,\n null is returned.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#getElementAt-double...-\">getElementAt</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getElementAt-acm.graphics.GPoint-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getElementAt</h4>\n<pre>public final&nbsp;&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;&nbsp;T&nbsp;getElementAt(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</pre>\n<div class=\"block\">Returns the topmost graphical object that contains the specified point,\n or <code>null</code> if no such object exists.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#getElementAt-acm.graphics.GPoint-\">getElementAt</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GContainer.html#getElementAt-acm.graphics.GPoint-\">getElementAt</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>pt</code> - The coordinates being tested</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The graphical object at the specified location, or <code>null</code>\n         if no such object exists</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GObject gobj = gc.getElementAt(pt);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getElementCount--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getElementCount</h4>\n<pre>public&nbsp;int&nbsp;getElementCount()</pre>\n<div class=\"block\">Returns the number of graphical objects stored in this <code>GCanvas</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#getElementCount--\">getElementCount</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GContainer.html#getElementCount--\">getElementCount</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a></code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The number of graphical objects in this <code>GCanvas</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int n = gc.getElementCount();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getNativeArcFlag--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getNativeArcFlag</h4>\n<pre>public&nbsp;boolean&nbsp;getNativeArcFlag()</pre>\n<div class=\"block\">Returns the current setting of the native-arc flag as described in\n <a href=\"#setNativeArcFlag(boolean)\"><code>setNativeArcFlag</code></a>.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd><code>true</code> if native arcs are enabled, and <code>false</code>\n          otherwise</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>if (gc.getNativeArcFlag()) . . .</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getOSG--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getOSG</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics2D.html?is-external=true\" title=\"class or interface in java.awt\">Graphics2D</a>&nbsp;getOSG()</pre>\n<div class=\"block\">Returns the graphical pen for drawing on this canvas.</div>\n</li>\n</ul>\n<a name=\"getPixelsAsString--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getPixelsAsString</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getPixelsAsString()</pre>\n<div class=\"block\">Returns a Base64-encoded representation of the pixel data of this image.</div>\n</li>\n</ul>\n<a name=\"getRGB-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getRGB</h4>\n<pre>public&nbsp;int&nbsp;getRGB(int&nbsp;x,\n                  int&nbsp;y)</pre>\n<div class=\"block\">Returns the RGB color stored at the given (x, y) pixel, or 0 if that pixel falls outside the bounds of this canvas.</div>\n</li>\n</ul>\n<a name=\"hasElementAt-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hasElementAt</h4>\n<pre>public&nbsp;boolean&nbsp;hasElementAt(double&nbsp;x,\n                            double&nbsp;y)</pre>\n<div class=\"block\">Returns true if a graphical object exists that touches the given\n (x, y) pixel position, or false if no such object exists.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#hasElementAt-double-double-\">hasElementAt</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"hasElementAt-double...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hasElementAt</h4>\n<pre>public&nbsp;boolean&nbsp;hasElementAt(double...&nbsp;coords)</pre>\n<div class=\"block\">Returns true if a graphical object exists that touches any of the given\n (x, y) pixel positions, or false if no such object exists.\n This method accepts a variable number of coordinate\n pairs (in x1, y1, x2, y2, x3, y3, ... order).\n The pairs are checked in the order they are passed.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#hasElementAt-double...-\">hasElementAt</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"inBounds-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>inBounds</h4>\n<pre>public&nbsp;boolean&nbsp;inBounds(int&nbsp;x,\n                        int&nbsp;y)</pre>\n<div class=\"block\">Whether the given (x, y) point falls within the bounds of this canvas, from (0, 0) .. (width-1, height-1) inclusive.</div>\n</li>\n</ul>\n<a name=\"isAntiAliasing--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isAntiAliasing</h4>\n<pre>public&nbsp;boolean&nbsp;isAntiAliasing()</pre>\n<div class=\"block\">Sets whether this canvas uses anti-aliasing, which is smoothing and blending of neighboring pixels.\n Default true.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#isAntiAliasing--\">isAntiAliasing</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"iterator--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>iterator</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true\" title=\"class or interface in java.util\">Iterator</a>&lt;<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;&nbsp;iterator()</pre>\n<div class=\"block\">Returns an <code>Iterator</code> that cycles through the elements within\n this container in the default direction, which is from back to front.\n You can also run the iterator in the opposite direction by using the\n <a href=\"#iterator(int)\"><code>iterator</code></a><code>(</code><font\n size=-1><i>direction</i></font><code>)</code> form of this method.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#iterator--\">iterator</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true#iterator--\" title=\"class or interface in java.lang\">iterator</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;</code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>An <code>Iterator</code> ranging over the elements of the\n         container from back to front</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>Iterator<GObject> i = gc.iterator();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"iterator-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>iterator</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true\" title=\"class or interface in java.util\">Iterator</a>&lt;<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;&nbsp;iterator(int&nbsp;direction)</pre>\n<div class=\"block\">Returns an <code>Iterator</code> that cycles through the elements\n within this container in the specified direction, which must be one\n of the constants <a href=\"GContainer.html#FRONT_TO_BACK\"><code>GContainer.FRONT_TO_BACK</code></a>\n or <a href=\"GContainer.html#BACK_TO_FRONT\"><code>GContainer.BACK_TO_FRONT</code></a>.<p>\n\n <p><pre><code>\n &nbsp;    for (Iterator&lt;GObject&gt; i = gc.iterator(direction); i.hasNext(); )\n </code></pre></div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#iterator-int-\">iterator</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>An <code>Iterator</code> ranging over the elements of the\n         container in the specified direction</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>Iterator<GObject> i = gc.iterator(direction);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"paintComponent-java.awt.Graphics-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>paintComponent</h4>\n<pre>public&nbsp;void&nbsp;paintComponent(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g)</pre>\n<div class=\"block\">Paints the canvas.  This method is not ordinarily called by clients.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintComponent-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintComponent</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>g</code> - The graphics context into which the canvas is painted</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gc.paintComponent(g);</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"remove-java.awt.Component-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>remove</h4>\n<pre>public&nbsp;void&nbsp;remove(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp)</pre>\n<div class=\"block\">Removes the component from the canvas.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#remove-java.awt.Component-\" title=\"class or interface in java.awt\">remove</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>comp</code> - The component to remove</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gc.remove(comp);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"remove-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>remove</h4>\n<pre>public&nbsp;void&nbsp;remove(double&nbsp;x,\n                   double&nbsp;y)</pre>\n<div class=\"block\">Removes the top-most graphical object at the given (x, y) position from this container.\n If no graphical object is located at that position, does nothing.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#remove-double-double-\">remove</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gc.remove(x, y);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"remove-acm.graphics.GObject-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>remove</h4>\n<pre>public&nbsp;void&nbsp;remove(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</pre>\n<div class=\"block\">Removes a graphical object from this <code>GCanvas</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#remove-acm.graphics.GObject-\">remove</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GContainer.html#remove-acm.graphics.GObject-\">remove</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>gobj</code> - The graphical object to remove</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gc.remove(gobj);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"remove-acm.graphics.GPoint-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>remove</h4>\n<pre>public&nbsp;void&nbsp;remove(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</pre>\n<div class=\"block\">Removes the top-most graphical object at the given (x, y) position from this container.\n If no graphical object is located at that position, does nothing.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#remove-acm.graphics.GPoint-\">remove</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gc.remove(pt);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"removeAll--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeAll</h4>\n<pre>public&nbsp;void&nbsp;removeAll()</pre>\n<div class=\"block\">Removes all graphical objects from this <code>GCanvas</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#removeAll--\">removeAll</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GContainer.html#removeAll--\">removeAll</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeAll--\" title=\"class or interface in java.awt\">removeAll</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gc.removeAll();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"removeAll-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeAll</h4>\n<pre>public&nbsp;void&nbsp;removeAll(double&nbsp;x,\n                      double&nbsp;y)</pre>\n<div class=\"block\">Removes all graphical objects at the given (x, y) position from this container.\n If no graphical objects are located at that position, does nothing.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#removeAll-double-double-\">removeAll</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gc.removeAll(x, y);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"removeAll-double...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeAll</h4>\n<pre>public&nbsp;void&nbsp;removeAll(double...&nbsp;coords)</pre>\n<div class=\"block\">Removes all graphical objects at the given (x, y) positions from this container.\n If no graphical objects are located at that position, does nothing.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#removeAll-double...-\">removeAll</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gc.removeAll(x1, y1, x2, y2, ...);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"removeAll-acm.graphics.GPoint-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeAll</h4>\n<pre>public&nbsp;void&nbsp;removeAll(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</pre>\n<div class=\"block\">Removes all graphical objects at the given (x, y) position from this container.\n If no graphical objects are located at that position, does nothing.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#removeAll-acm.graphics.GPoint-\">removeAll</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gc.removeAll(pt);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"save-java.io.File-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>save</h4>\n<pre>public&nbsp;void&nbsp;save(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)</pre>\n<div class=\"block\">Writes the contents of the canvas to the given file.</div>\n</li>\n</ul>\n<a name=\"save-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>save</h4>\n<pre>public&nbsp;void&nbsp;save(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</pre>\n<div class=\"block\">Writes the contents of the canvas to the given file.</div>\n</li>\n</ul>\n<a name=\"sendBackward-acm.graphics.GObject-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>sendBackward</h4>\n<pre>protected&nbsp;void&nbsp;sendBackward(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</pre>\n<div class=\"block\">Implements the <code>sendBackward</code> function from the <code>GContainer</code>\n interface.  Clients should not be calling this method, but the semantics of\n interfaces forces it to be exported.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"sendForward-acm.graphics.GObject-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>sendForward</h4>\n<pre>protected&nbsp;void&nbsp;sendForward(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</pre>\n<div class=\"block\">Implements the <code>sendForward</code> function from the <code>GContainer</code>\n interface.  Clients should not be calling this method, but the semantics of\n interfaces forces it to be exported.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"sendToBack-acm.graphics.GObject-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>sendToBack</h4>\n<pre>protected&nbsp;void&nbsp;sendToBack(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</pre>\n<div class=\"block\">Implements the <code>sendToBack</code> function from the <code>GContainer</code>\n interface.  Clients should not be calling this method, but the semantics of\n interfaces forces it to be exported.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"sendToFront-acm.graphics.GObject-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>sendToFront</h4>\n<pre>protected&nbsp;void&nbsp;sendToFront(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</pre>\n<div class=\"block\">Implements the <code>sendToFront</code> function from the <code>GContainer</code>\n interface.  Clients should not be calling this method, but the semantics of\n interfaces forces it to be exported.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"setAntiAliasing-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setAntiAliasing</h4>\n<pre>public&nbsp;void&nbsp;setAntiAliasing(boolean&nbsp;antialias)</pre>\n<div class=\"block\">Sets whether this canvas uses anti-aliasing, which is smoothing and blending of neighboring pixels.\n Default true.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#setAntiAliasing-boolean-\">setAntiAliasing</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setAutoRepaintFlag-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setAutoRepaintFlag</h4>\n<pre>public&nbsp;void&nbsp;setAutoRepaintFlag(boolean&nbsp;state)</pre>\n<div class=\"block\">Changes the setting of the auto-repaint flag.  By default, any change to a\n graphical object contained in this canvas automatically triggers a repaint\n of the canvas as a whole.  While this behavior makes it much easier to use\n the package, it has the disadvantage that repaint requests come much more\n frequently than necessary.  You can disable this feature by calling\n <code>setAutoRepaintFlag(false)</code>, but you must then make explicit\n calls to <code>repaint()</code> whenever you want to update the display.\n The advantage of this model is that you can then make many different changes\n and have them all appear at once with a single <code>repaint</code> call.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>state</code> - <code>true</code> to enable auto-repaint mode, and <code>false</code>\n              to disable it</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gc.setAutoRepaintFlag(state);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setBackground-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setBackground</h4>\n<pre>public&nbsp;void&nbsp;setBackground(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#setBackground-java.awt.Color-\">setBackground</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setBackground-java.awt.Color-\" title=\"class or interface in javax.swing\">setBackground</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setBorder-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setBorder</h4>\n<pre>public&nbsp;void&nbsp;setBorder(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n<div class=\"block\">Sets this canvas to use a border of the given color, 1px thick.</div>\n</li>\n</ul>\n<a name=\"setBorder-java.awt.Color-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setBorder</h4>\n<pre>public&nbsp;void&nbsp;setBorder(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color,\n                      int&nbsp;thickness)</pre>\n<div class=\"block\">Sets this canvas to use a border of the given color and number of pixels thick.</div>\n</li>\n</ul>\n<a name=\"setColor-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setColor</h4>\n<pre>public&nbsp;void&nbsp;setColor(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n</li>\n</ul>\n<a name=\"setColor-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setColor</h4>\n<pre>public&nbsp;void&nbsp;setColor(int&nbsp;paramInt)</pre>\n</li>\n</ul>\n<a name=\"setForeground-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setForeground</h4>\n<pre>public&nbsp;void&nbsp;setForeground(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setForeground-java.awt.Color-\" title=\"class or interface in javax.swing\">setForeground</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setForeground-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setForeground</h4>\n<pre>public&nbsp;void&nbsp;setForeground(int&nbsp;paramInt)</pre>\n</li>\n</ul>\n<a name=\"setNativeArcFlag-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setNativeArcFlag</h4>\n<pre>public&nbsp;void&nbsp;setNativeArcFlag(boolean&nbsp;state)</pre>\n<div class=\"block\">Sets whether the redering code for <code>GArc</code> and <code>GOval</code> should use\n Java arcs.  By default, arcs and ovals are rendered using polygons and polylines\n to ensure that the same set of pixels is covered by the fill and frame.\n If this value is set to <code>true</code>, the renderers will use the native\n arc code, which is more efficient but less accurate.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>state</code> - <code>true</code> to enable native arcs, <code>false</code> to use polygons</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gc.setNativeArcFlag(state);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setOpaque-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setOpaque</h4>\n<pre>public&nbsp;void&nbsp;setOpaque(boolean&nbsp;flag)</pre>\n<div class=\"block\">Sets a flag indicating whether this canvas is opaque, which means that it\n obscures anything behind it.  Setting this flag to <code>false</code> makes\n the <code>GCanvas</code> transparent, so that any other lightweight components\n behind it show through.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setOpaque-boolean-\" title=\"class or interface in javax.swing\">setOpaque</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>flag</code> - <code>true</code> to make this canvas opaque, and <code>false</code>\n             to make it transparent</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gc.setOpaque(flag);</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"setPixelsFromString-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setPixelsFromString</h4>\n<pre>public&nbsp;void&nbsp;setPixelsFromString(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;base64)</pre>\n</li>\n</ul>\n<a name=\"setRGB-int-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setRGB</h4>\n<pre>public&nbsp;void&nbsp;setRGB(int&nbsp;x,\n                   int&nbsp;y,\n                   int&nbsp;rgb)</pre>\n</li>\n</ul>\n<a name=\"setRGB-int-int-int-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setRGB</h4>\n<pre>public&nbsp;void&nbsp;setRGB(int&nbsp;x,\n                   int&nbsp;y,\n                   int&nbsp;rgb,\n                   boolean&nbsp;repaint)</pre>\n</li>\n</ul>\n<a name=\"setShowPixelGrid-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setShowPixelGrid</h4>\n<pre>public&nbsp;void&nbsp;setShowPixelGrid(boolean&nbsp;show)</pre>\n<div class=\"block\">Sets whether to display information on this canvas about the current pixel where\n the mouse pointer is resting.\n Displays the current pixel's (x, y) coordinate and color.</div>\n</li>\n</ul>\n<a name=\"setShowPixelInfo-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setShowPixelInfo</h4>\n<pre>public&nbsp;void&nbsp;setShowPixelInfo(boolean&nbsp;show)</pre>\n<div class=\"block\">Sets whether to display information on this canvas about the current pixel where\n the mouse pointer is resting.\n Displays the current pixel's (x, y) coordinate and color.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#setShowPixelInfo-boolean-\">setShowPixelInfo</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"showDiffDialog--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>showDiffDialog</h4>\n<pre>public&nbsp;void&nbsp;showDiffDialog()</pre>\n<div class=\"block\">Pops up a dialog box to compare the contents of this canvas to an expected image file.</div>\n</li>\n</ul>\n<a name=\"showDiffDialog-java.io.File-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>showDiffDialog</h4>\n<pre>public&nbsp;void&nbsp;showDiffDialog(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;directory)</pre>\n<div class=\"block\">Pops up a dialog box to compare the contents of this canvas to an expected image file.\n Starts the dialog box pointed at the given directory.</div>\n</li>\n</ul>\n<a name=\"showDiffDialog-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>showDiffDialog</h4>\n<pre>public&nbsp;void&nbsp;showDiffDialog(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;directory)</pre>\n<div class=\"block\">Pops up a dialog box to compare the contents of this canvas to an expected image file.\n Starts the dialog box pointed at the given directory.</div>\n</li>\n</ul>\n<a name=\"showSaveDialog--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>showSaveDialog</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;showSaveDialog()</pre>\n<div class=\"block\">Pops up a dialog box to save the contents of this canvas to a file.\n Returns the file saved to, or null if none.</div>\n</li>\n</ul>\n<a name=\"showSaveDialog-java.io.File-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>showSaveDialog</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;showSaveDialog(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;directory)</pre>\n<div class=\"block\">Pops up a dialog box to save the contents of this canvas to a file.\n Starts the dialog box pointed at the given directory.\n Returns the file saved to, or null if none.</div>\n</li>\n</ul>\n<a name=\"showSaveDialog-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>showSaveDialog</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;showSaveDialog(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;directory)</pre>\n<div class=\"block\">Pops up a dialog box to save the contents of this canvas to a file.\n Starts the dialog box pointed at the given directory.\n Returns the file saved to, or null if none.</div>\n</li>\n</ul>\n<a name=\"toImage--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>toImage</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/BufferedImage.html?is-external=true\" title=\"class or interface in java.awt.image\">BufferedImage</a>&nbsp;toImage()</pre>\n<div class=\"block\">Returns the pixel contents of this canvas as a BufferedImage.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#toImage--\">toImage</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"toImage-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>toImage</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/BufferedImage.html?is-external=true\" title=\"class or interface in java.awt.image\">BufferedImage</a>&nbsp;toImage(int&nbsp;width,\n                             int&nbsp;height)</pre>\n<div class=\"block\">Returns the pixel contents of this canvas as a BufferedImage of the given size.</div>\n</li>\n</ul>\n<a name=\"updateEnabledList--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>updateEnabledList</h4>\n<pre>protected&nbsp;void&nbsp;updateEnabledList()</pre>\n<div class=\"block\">Reconstructs the enabledList list in the correct order.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gc.updateEnabledList();</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/graphics/G3DRect.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/graphics/GCanvas.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GCanvas.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JComponent\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.javax.swing.JComponent\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/graphics/GCanvasInterface.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>GCanvasInterface</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GCanvasInterface\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":6,\"i1\":6,\"i2\":6,\"i3\":6,\"i4\":6,\"i5\":6,\"i6\":6,\"i7\":6,\"i8\":6,\"i9\":6,\"i10\":6,\"i11\":6,\"i12\":6,\"i13\":6,\"i14\":6,\"i15\":6,\"i16\":6,\"i17\":6,\"i18\":6,\"i19\":6,\"i20\":6,\"i21\":6,\"i22\":6,\"i23\":6,\"i24\":6,\"i25\":6,\"i26\":6,\"i27\":6,\"i28\":6,\"i29\":6,\"i30\":6,\"i31\":6,\"i32\":6,\"i33\":6,\"i34\":6};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],4:[\"t3\",\"Abstract Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/graphics/GCanvas.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/graphics/GCompound.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/graphics/GCanvasInterface.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GCanvasInterface.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.graphics</div>\n<h2 title=\"Interface GCanvasInterface\" class=\"title\">Interface GCanvasInterface</h2>\n</div>\n<div class=\"contentContainer\">\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Known Subinterfaces:</dt>\n<dd><a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></dd>\n</dl>\n<dl>\n<dt>All Known Implementing Classes:</dt>\n<dd><a href=\"../../acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a>, <a href=\"../../acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a>, <a href=\"../../acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public interface <span class=\"typeNameLabel\">GCanvasInterface</span></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t3\" class=\"tableTab\"><span><a href=\"javascript:show(4);\">Abstract Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvasInterface.html#add-java.awt.Component-double-double-\">add</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n   double&nbsp;x,\n   double&nbsp;y)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvasInterface.html#add-java.awt.Component-acm.graphics.GPoint-\">add</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n   <a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvasInterface.html#add-acm.graphics.GObject-\">add</a></span>(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvasInterface.html#add-acm.graphics.GObject-double-double-\">add</a></span>(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj,\n   double&nbsp;x,\n   double&nbsp;y)</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvasInterface.html#add-acm.graphics.GObject-acm.graphics.GPoint-\">add</a></span>(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj,\n   <a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvasInterface.html#clear--\">clear</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvasInterface.html#getBackground--\">getBackground</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;<br>T</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvasInterface.html#getElement-int-\">getElement</a></span>(int&nbsp;index)</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;<br>T</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvasInterface.html#getElementAt-double...-\">getElementAt</a></span>(double...&nbsp;coords)</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;<br>T</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvasInterface.html#getElementAt-double-double-\">getElementAt</a></span>(double&nbsp;x,\n            double&nbsp;y)</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;<br>T</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvasInterface.html#getElementAt-acm.graphics.GPoint-\">getElementAt</a></span>(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvasInterface.html#getElementCount--\">getElementCount</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvasInterface.html#getFont--\">getFont</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvasInterface.html#getHeight--\">getHeight</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvasInterface.html#getSize--\">getSize</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvasInterface.html#getWidth--\">getWidth</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvasInterface.html#hasElementAt-double...-\">hasElementAt</a></span>(double...&nbsp;coords)</code>&nbsp;</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvasInterface.html#hasElementAt-double-double-\">hasElementAt</a></span>(double&nbsp;x,\n            double&nbsp;y)</code>&nbsp;</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvasInterface.html#isAntiAliasing--\">isAntiAliasing</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true\" title=\"class or interface in java.util\">Iterator</a>&lt;<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvasInterface.html#iterator--\">iterator</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true\" title=\"class or interface in java.util\">Iterator</a>&lt;<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvasInterface.html#iterator-int-\">iterator</a></span>(int&nbsp;direction)</code>&nbsp;</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvasInterface.html#remove-double-double-\">remove</a></span>(double&nbsp;x,\n      double&nbsp;y)</code>&nbsp;</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvasInterface.html#remove-acm.graphics.GObject-\">remove</a></span>(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</code>&nbsp;</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvasInterface.html#remove-acm.graphics.GPoint-\">remove</a></span>(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</code>&nbsp;</td>\n</tr>\n<tr id=\"i24\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvasInterface.html#removeAll--\">removeAll</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i25\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvasInterface.html#removeAll-double...-\">removeAll</a></span>(double...&nbsp;coords)</code>&nbsp;</td>\n</tr>\n<tr id=\"i26\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvasInterface.html#removeAll-double-double-\">removeAll</a></span>(double&nbsp;x,\n         double&nbsp;y)</code>&nbsp;</td>\n</tr>\n<tr id=\"i27\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvasInterface.html#removeAll-acm.graphics.GPoint-\">removeAll</a></span>(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</code>&nbsp;</td>\n</tr>\n<tr id=\"i28\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvasInterface.html#repaint--\">repaint</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i29\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvasInterface.html#setAntiAliasing-boolean-\">setAntiAliasing</a></span>(boolean&nbsp;antialias)</code>&nbsp;</td>\n</tr>\n<tr id=\"i30\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvasInterface.html#setBackground-java.awt.Color-\">setBackground</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;bg)</code>&nbsp;</td>\n</tr>\n<tr id=\"i31\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvasInterface.html#setFont-java.awt.Font-\">setFont</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a>&nbsp;font)</code>&nbsp;</td>\n</tr>\n<tr id=\"i32\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvasInterface.html#setShowPixelInfo-boolean-\">setShowPixelInfo</a></span>(boolean&nbsp;show)</code>&nbsp;</td>\n</tr>\n<tr id=\"i33\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvasInterface.html#setSize-java.awt.Dimension-\">setSize</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a>&nbsp;size)</code>&nbsp;</td>\n</tr>\n<tr id=\"i34\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/BufferedImage.html?is-external=true\" title=\"class or interface in java.awt.image\">BufferedImage</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCanvasInterface.html#toImage--\">toImage</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"add-acm.graphics.GObject-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>void&nbsp;add(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</pre>\n</li>\n</ul>\n<a name=\"add-acm.graphics.GObject-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>void&nbsp;add(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj,\n         double&nbsp;x,\n         double&nbsp;y)</pre>\n</li>\n</ul>\n<a name=\"add-acm.graphics.GObject-acm.graphics.GPoint-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>void&nbsp;add(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj,\n         <a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</pre>\n</li>\n</ul>\n<a name=\"add-java.awt.Component-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>void&nbsp;add(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n         double&nbsp;x,\n         double&nbsp;y)</pre>\n</li>\n</ul>\n<a name=\"add-java.awt.Component-acm.graphics.GPoint-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>void&nbsp;add(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n         <a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</pre>\n</li>\n</ul>\n<a name=\"clear--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clear</h4>\n<pre>void&nbsp;clear()</pre>\n</li>\n</ul>\n<a name=\"getBackground--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getBackground</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;getBackground()</pre>\n</li>\n</ul>\n<a name=\"getElementCount--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getElementCount</h4>\n<pre>int&nbsp;getElementCount()</pre>\n</li>\n</ul>\n<a name=\"getFont--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFont</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a>&nbsp;getFont()</pre>\n</li>\n</ul>\n<a name=\"getElement-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getElement</h4>\n<pre>&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;&nbsp;T&nbsp;getElement(int&nbsp;index)</pre>\n</li>\n</ul>\n<a name=\"getElementAt-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getElementAt</h4>\n<pre>&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;&nbsp;T&nbsp;getElementAt(double&nbsp;x,\n                                   double&nbsp;y)</pre>\n</li>\n</ul>\n<a name=\"getElementAt-double...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getElementAt</h4>\n<pre>&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;&nbsp;T&nbsp;getElementAt(double...&nbsp;coords)</pre>\n</li>\n</ul>\n<a name=\"getElementAt-acm.graphics.GPoint-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getElementAt</h4>\n<pre>&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;&nbsp;T&nbsp;getElementAt(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</pre>\n</li>\n</ul>\n<a name=\"getHeight--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getHeight</h4>\n<pre>int&nbsp;getHeight()</pre>\n</li>\n</ul>\n<a name=\"getSize--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSize</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a>&nbsp;getSize()</pre>\n</li>\n</ul>\n<a name=\"getWidth--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getWidth</h4>\n<pre>int&nbsp;getWidth()</pre>\n</li>\n</ul>\n<a name=\"hasElementAt-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hasElementAt</h4>\n<pre>boolean&nbsp;hasElementAt(double&nbsp;x,\n                     double&nbsp;y)</pre>\n</li>\n</ul>\n<a name=\"hasElementAt-double...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hasElementAt</h4>\n<pre>boolean&nbsp;hasElementAt(double...&nbsp;coords)</pre>\n</li>\n</ul>\n<a name=\"isAntiAliasing--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isAntiAliasing</h4>\n<pre>boolean&nbsp;isAntiAliasing()</pre>\n</li>\n</ul>\n<a name=\"iterator--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>iterator</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true\" title=\"class or interface in java.util\">Iterator</a>&lt;<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;&nbsp;iterator()</pre>\n</li>\n</ul>\n<a name=\"iterator-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>iterator</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true\" title=\"class or interface in java.util\">Iterator</a>&lt;<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;&nbsp;iterator(int&nbsp;direction)</pre>\n</li>\n</ul>\n<a name=\"remove-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>remove</h4>\n<pre>void&nbsp;remove(double&nbsp;x,\n            double&nbsp;y)</pre>\n</li>\n</ul>\n<a name=\"remove-acm.graphics.GPoint-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>remove</h4>\n<pre>void&nbsp;remove(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</pre>\n</li>\n</ul>\n<a name=\"remove-acm.graphics.GObject-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>remove</h4>\n<pre>void&nbsp;remove(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</pre>\n</li>\n</ul>\n<a name=\"removeAll--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeAll</h4>\n<pre>void&nbsp;removeAll()</pre>\n</li>\n</ul>\n<a name=\"removeAll-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeAll</h4>\n<pre>void&nbsp;removeAll(double&nbsp;x,\n               double&nbsp;y)</pre>\n</li>\n</ul>\n<a name=\"removeAll-double...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeAll</h4>\n<pre>void&nbsp;removeAll(double...&nbsp;coords)</pre>\n</li>\n</ul>\n<a name=\"removeAll-acm.graphics.GPoint-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeAll</h4>\n<pre>void&nbsp;removeAll(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</pre>\n</li>\n</ul>\n<a name=\"repaint--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>repaint</h4>\n<pre>void&nbsp;repaint()</pre>\n</li>\n</ul>\n<a name=\"setAntiAliasing-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setAntiAliasing</h4>\n<pre>void&nbsp;setAntiAliasing(boolean&nbsp;antialias)</pre>\n</li>\n</ul>\n<a name=\"setBackground-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setBackground</h4>\n<pre>void&nbsp;setBackground(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;bg)</pre>\n</li>\n</ul>\n<a name=\"setFont-java.awt.Font-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setFont</h4>\n<pre>void&nbsp;setFont(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a>&nbsp;font)</pre>\n</li>\n</ul>\n<a name=\"setSize-java.awt.Dimension-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setSize</h4>\n<pre>void&nbsp;setSize(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a>&nbsp;size)</pre>\n</li>\n</ul>\n<a name=\"setShowPixelInfo-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setShowPixelInfo</h4>\n<pre>void&nbsp;setShowPixelInfo(boolean&nbsp;show)</pre>\n</li>\n</ul>\n<a name=\"toImage--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>toImage</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/BufferedImage.html?is-external=true\" title=\"class or interface in java.awt.image\">BufferedImage</a>&nbsp;toImage()</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/graphics/GCanvas.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/graphics/GCompound.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/graphics/GCanvasInterface.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GCanvasInterface.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/graphics/GCompound.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>GCompound</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GCompound\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":10,\"i16\":10,\"i17\":10,\"i18\":10,\"i19\":10,\"i20\":10,\"i21\":10,\"i22\":10,\"i23\":10,\"i24\":10,\"i25\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/graphics/GCompound.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GCompound.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.graphics</div>\n<h2 title=\"Class GCompound\" class=\"title\">Class GCompound</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">acm.graphics.GObject</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.graphics.GCompound</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a>, <a href=\"../../acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true\" title=\"class or interface in java.lang\">Cloneable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;</dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GCompound</span>\nextends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>\nimplements <a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a>, <a href=\"../../acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;</pre>\n<div class=\"block\">This class defines a graphical object that consists of a collection\n of other graphical objects.  Once assembled, the internal objects\n can be manipulated as a unit.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#acm.graphics.GCompound\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.graphics.GContainer\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;acm.graphics.<a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a></h3>\n<code><a href=\"../../acm/graphics/GContainer.html#BACK_TO_FRONT\">BACK_TO_FRONT</a>, <a href=\"../../acm/graphics/GContainer.html#FRONT_TO_BACK\">FRONT_TO_BACK</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCompound.html#GCompound--\">GCompound</a></span>()</code>\n<div class=\"block\">Creates a new <code>GCompound</code> object with no internal components.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCompound.html#add-acm.graphics.GObject-\">add</a></span>(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</code>\n<div class=\"block\">Adds a new graphical object to this <code>GCompound</code>.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCompound.html#add-acm.graphics.GObject-double-double-\">add</a></span>(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj,\n   double&nbsp;x,\n   double&nbsp;y)</code>\n<div class=\"block\">Adds the graphical object to this canvas and sets its location\n to the point (<code>x</code>,&nbsp;<code>y</code>).</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCompound.html#add-acm.graphics.GObject-acm.graphics.GPoint-\">add</a></span>(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj,\n   <a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</code>\n<div class=\"block\">Adds the graphical object to this canvas and sets its location to the specified point.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCompound.html#areMouseListenersEnabled--\">areMouseListenersEnabled</a></span>()</code>\n<div class=\"block\">Returns <code>true</code> if mouse listeners have ever been assigned to\n this object or to any of the contained objects.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCompound.html#contains-double-double-\">contains</a></span>(double&nbsp;x,\n        double&nbsp;y)</code>\n<div class=\"block\">Checks to see whether a point is \"inside\" the compound, which means that it is\n inside one of the components.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCompound.html#fireMouseListeners-java.awt.event.MouseEvent-\">fireMouseListeners</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</code>\n<div class=\"block\">Dispatches a mouse event to the topmost child that covers the location\n in the event <code>e</code>.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCompound.html#getBounds--\">getBounds</a></span>()</code>\n<div class=\"block\">Returns the bounding rectangle for this compound object, which consists of\n the union of the bounding rectangles for each of the components.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCompound.html#getCanvasPoint-double-double-\">getCanvasPoint</a></span>(double&nbsp;x,\n              double&nbsp;y)</code>\n<div class=\"block\">Converts the location of the specified point in this compound to\n the corresponding point in the enclosing canvas.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCompound.html#getCanvasPoint-acm.graphics.GPoint-\">getCanvasPoint</a></span>(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;localPoint)</code>\n<div class=\"block\">Converts the location of the specified point in this compound to\n the corresponding point in the enclosing canvas.</div>\n</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;<br>T</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCompound.html#getElement-int-\">getElement</a></span>(int&nbsp;index)</code>\n<div class=\"block\">Returns the graphical object at the specified index, numbering from back\n to front in the the <i>z</i> dimension.</div>\n</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;<br>T</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCompound.html#getElementAt-double-double-\">getElementAt</a></span>(double&nbsp;x,\n            double&nbsp;y)</code>\n<div class=\"block\">Returns the topmost graphical object that contains the point\n (<code>x</code>, <code>y</code>), or <code>null</code> if no such\n object exists.</div>\n</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;<br>T</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCompound.html#getElementAt-acm.graphics.GPoint-\">getElementAt</a></span>(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</code>\n<div class=\"block\">Returns the topmost graphical object that contains the specified point,\n or <code>null</code> if no such object exists.</div>\n</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCompound.html#getElementCount--\">getElementCount</a></span>()</code>\n<div class=\"block\">Returns the number of graphical objects stored in this container.</div>\n</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCompound.html#getLocalPoint-double-double-\">getLocalPoint</a></span>(double&nbsp;x,\n             double&nbsp;y)</code>\n<div class=\"block\">Converts the specified point on the enclosing canvas to the\n corresponding point in the space of this compound.</div>\n</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCompound.html#getLocalPoint-acm.graphics.GPoint-\">getLocalPoint</a></span>(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;canvasPoint)</code>\n<div class=\"block\">Converts the location of the specified point on the enclosing canvas\n to the corresponding point in the space of this compound.</div>\n</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true\" title=\"class or interface in java.util\">Iterator</a>&lt;<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCompound.html#iterator--\">iterator</a></span>()</code>\n<div class=\"block\">Returns an <code>Iterator</code> that cycles through the elements within\n this container in the default direction, which is from back to front.</div>\n</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true\" title=\"class or interface in java.util\">Iterator</a>&lt;<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCompound.html#iterator-int-\">iterator</a></span>(int&nbsp;direction)</code>\n<div class=\"block\">Returns an <code>Iterator</code> that cycles through the elements\n within this container in the specified direction, which must be one\n of the constants <a href=\"GContainer.html#FRONT_TO_BACK\"><code>GContainer.FRONT_TO_BACK</code></a>\n or <a href=\"GContainer.html#BACK_TO_FRONT\"><code>GContainer.BACK_TO_FRONT</code></a>.</div>\n</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCompound.html#markAsComplete--\">markAsComplete</a></span>()</code>\n<div class=\"block\">Calling this method makes it illegal to add or remove elements from the\n compound object.</div>\n</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCompound.html#paint2d-java.awt.Graphics2D-\">paint2d</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics2D.html?is-external=true\" title=\"class or interface in java.awt\">Graphics2D</a>&nbsp;g)</code>\n<div class=\"block\">Implements the <code>paint2d</code> operation for this graphical object.</div>\n</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCompound.html#remove-acm.graphics.GObject-\">remove</a></span>(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</code>\n<div class=\"block\">Removes a graphical object from this <code>GCompound</code>.</div>\n</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCompound.html#removeAll--\">removeAll</a></span>()</code>\n<div class=\"block\">Removes all graphical objects from this <code>GCompound</code>.</div>\n</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCompound.html#scale-double-double-\">scale</a></span>(double&nbsp;sx,\n     double&nbsp;sy)</code>\n<div class=\"block\">Scales every object contained in this compound by the scale factors\n <code>sx</code> and <code>sy</code>.</div>\n</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCompound.html#sendBackward-acm.graphics.GObject-\">sendBackward</a></span>(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</code>\n<div class=\"block\">Implements the <code>sendBackward</code> function from the <code>GContainer</code>\n interface.</div>\n</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCompound.html#sendForward-acm.graphics.GObject-\">sendForward</a></span>(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</code>\n<div class=\"block\">Implements the <code>sendForward</code> function from the <code>GContainer</code>\n interface.</div>\n</td>\n</tr>\n<tr id=\"i24\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCompound.html#sendToBack-acm.graphics.GObject-\">sendToBack</a></span>(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</code>\n<div class=\"block\">Implements the <code>sendToBack</code> function from the <code>GContainer</code>\n interface.</div>\n</td>\n</tr>\n<tr id=\"i25\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GCompound.html#sendToFront-acm.graphics.GObject-\">sendToFront</a></span>(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</code>\n<div class=\"block\">Implements the <code>sendToFront</code> function from the <code>GContainer</code>\n interface.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.graphics.GObject\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.graphics.<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></h3>\n<code><a href=\"../../acm/graphics/GObject.html#addActionListener-java.awt.event.ActionListener-\">addActionListener</a>, <a href=\"../../acm/graphics/GObject.html#addMouseListener-java.awt.event.MouseListener-\">addMouseListener</a>, <a href=\"../../acm/graphics/GObject.html#addMouseMotionListener-java.awt.event.MouseMotionListener-\">addMouseMotionListener</a>, <a href=\"../../acm/graphics/GObject.html#clone--\">clone</a>, <a href=\"../../acm/graphics/GObject.html#colorName-java.awt.Color-\">colorName</a>, <a href=\"../../acm/graphics/GObject.html#colorName-int-\">colorName</a>, <a href=\"../../acm/graphics/GObject.html#colorNameFriendly-int-\">colorNameFriendly</a>, <a href=\"../../acm/graphics/GObject.html#contains-acm.graphics.GPoint-\">contains</a>, <a href=\"../../acm/graphics/GObject.html#createTransformedGraphics-java.awt.Graphics-\">createTransformedGraphics</a>, <a href=\"../../acm/graphics/GObject.html#fireActionEvent-java.awt.event.ActionEvent-\">fireActionEvent</a>, <a href=\"../../acm/graphics/GObject.html#fireActionEvent-java.lang.String-\">fireActionEvent</a>, <a href=\"../../acm/graphics/GObject.html#getBottomY--\">getBottomY</a>, <a href=\"../../acm/graphics/GObject.html#getCenterLocation--\">getCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#getCenterX--\">getCenterX</a>, <a href=\"../../acm/graphics/GObject.html#getCenterY--\">getCenterY</a>, <a href=\"../../acm/graphics/GObject.html#getColor--\">getColor</a>, <a href=\"../../acm/graphics/GObject.html#getComponent--\">getComponent</a>, <a href=\"../../acm/graphics/GObject.html#getHeight--\">getHeight</a>, <a href=\"../../acm/graphics/GObject.html#getLineWidth--\">getLineWidth</a>, <a href=\"../../acm/graphics/GObject.html#getLocation--\">getLocation</a>, <a href=\"../../acm/graphics/GObject.html#getMatrix--\">getMatrix</a>, <a href=\"../../acm/graphics/GObject.html#getObjectColor--\">getObjectColor</a>, <a href=\"../../acm/graphics/GObject.html#getParent--\">getParent</a>, <a href=\"../../acm/graphics/GObject.html#getRightX--\">getRightX</a>, <a href=\"../../acm/graphics/GObject.html#getSize--\">getSize</a>, <a href=\"../../acm/graphics/GObject.html#getWidth--\">getWidth</a>, <a href=\"../../acm/graphics/GObject.html#getX--\">getX</a>, <a href=\"../../acm/graphics/GObject.html#getY--\">getY</a>, <a href=\"../../acm/graphics/GObject.html#intersects-acm.graphics.GObject-\">intersects</a>, <a href=\"../../acm/graphics/GObject.html#isAntiAliasing--\">isAntiAliasing</a>, <a href=\"../../acm/graphics/GObject.html#isVisible--\">isVisible</a>, <a href=\"../../acm/graphics/GObject.html#move-double-double-\">move</a>, <a href=\"../../acm/graphics/GObject.html#movePolar-double-double-\">movePolar</a>, <a href=\"../../acm/graphics/GObject.html#paint-java.awt.Graphics-\">paint</a>, <a href=\"../../acm/graphics/GObject.html#paramString--\">paramString</a>, <a href=\"../../acm/graphics/GObject.html#pause-double-\">pause</a>, <a href=\"../../acm/graphics/GObject.html#removeActionListener-java.awt.event.ActionListener-\">removeActionListener</a>, <a href=\"../../acm/graphics/GObject.html#removeMouseListener-java.awt.event.MouseListener-\">removeMouseListener</a>, <a href=\"../../acm/graphics/GObject.html#removeMouseMotionListener-java.awt.event.MouseMotionListener-\">removeMouseMotionListener</a>, <a href=\"../../acm/graphics/GObject.html#repaint--\">repaint</a>, <a href=\"../../acm/graphics/GObject.html#rotate-double-\">rotate</a>, <a href=\"../../acm/graphics/GObject.html#scale-double-\">scale</a>, <a href=\"../../acm/graphics/GObject.html#sendBackward--\">sendBackward</a>, <a href=\"../../acm/graphics/GObject.html#sendForward--\">sendForward</a>, <a href=\"../../acm/graphics/GObject.html#sendToBack--\">sendToBack</a>, <a href=\"../../acm/graphics/GObject.html#sendToFront--\">sendToFront</a>, <a href=\"../../acm/graphics/GObject.html#setAntiAliasing-boolean-\">setAntiAliasing</a>, <a href=\"../../acm/graphics/GObject.html#setBottomY-double-\">setBottomY</a>, <a href=\"../../acm/graphics/GObject.html#setCenterLocation-double-double-\">setCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#setCenterLocation-acm.graphics.GPoint-\">setCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#setCenterX-double-\">setCenterX</a>, <a href=\"../../acm/graphics/GObject.html#setCenterY-double-\">setCenterY</a>, <a href=\"../../acm/graphics/GObject.html#setColor-java.awt.Color-\">setColor</a>, <a href=\"../../acm/graphics/GObject.html#setLineWidth-double-\">setLineWidth</a>, <a href=\"../../acm/graphics/GObject.html#setLocation-double-double-\">setLocation</a>, <a href=\"../../acm/graphics/GObject.html#setLocation-acm.graphics.GPoint-\">setLocation</a>, <a href=\"../../acm/graphics/GObject.html#setParent-acm.graphics.GContainer-\">setParent</a>, <a href=\"../../acm/graphics/GObject.html#setRightX-double-\">setRightX</a>, <a href=\"../../acm/graphics/GObject.html#setVisible-boolean-\">setVisible</a>, <a href=\"../../acm/graphics/GObject.html#setX-double-\">setX</a>, <a href=\"../../acm/graphics/GObject.html#setY-double-\">setY</a>, <a href=\"../../acm/graphics/GObject.html#start--\">start</a>, <a href=\"../../acm/graphics/GObject.html#start-java.lang.String:A-\">start</a>, <a href=\"../../acm/graphics/GObject.html#toString--\">toString</a>, <a href=\"../../acm/graphics/GObject.html#updateEnabledList--\">updateEnabledList</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.graphics.GScalable\">\n<!--   -->\n</a>\n<h3>Methods inherited from interface&nbsp;acm.graphics.<a href=\"../../acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a></h3>\n<code><a href=\"../../acm/graphics/GScalable.html#scale-double-\">scale</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Iterable\">\n<!--   -->\n</a>\n<h3>Methods inherited from interface&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true#forEach-java.util.function.Consumer-\" title=\"class or interface in java.lang\">forEach</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true#spliterator--\" title=\"class or interface in java.lang\">spliterator</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GCompound--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GCompound</h4>\n<pre>public&nbsp;GCompound()</pre>\n<div class=\"block\">Creates a new <code>GCompound</code> object with no internal components.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GCompound gcomp = new GCompound();</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"add-acm.graphics.GObject-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>public&nbsp;void&nbsp;add(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</pre>\n<div class=\"block\">Adds a new graphical object to this <code>GCompound</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GContainer.html#add-acm.graphics.GObject-\">add</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>gobj</code> - The graphical object to add</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gcomp.add(gobj);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"add-acm.graphics.GObject-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>public final&nbsp;void&nbsp;add(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj,\n                      double&nbsp;x,\n                      double&nbsp;y)</pre>\n<div class=\"block\">Adds the graphical object to this canvas and sets its location\n to the point (<code>x</code>,&nbsp;<code>y</code>).</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GContainer.html#add-acm.graphics.GObject-double-double-\">add</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>gobj</code> - The graphical object to add</dd>\n<dd><code>x</code> - The new x-coordinate for the object</dd>\n<dd><code>y</code> - The new y-coordinate for the object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gc.add(gobj, x, y);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"add-acm.graphics.GObject-acm.graphics.GPoint-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>public final&nbsp;void&nbsp;add(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj,\n                      <a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</pre>\n<div class=\"block\">Adds the graphical object to this canvas and sets its location to the specified point.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GContainer.html#add-acm.graphics.GObject-acm.graphics.GPoint-\">add</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>gobj</code> - The graphical object to add</dd>\n<dd><code>pt</code> - A <code>GPoint</code> object giving the coordinates of the point</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gc.add(gobj, pt);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"areMouseListenersEnabled--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>areMouseListenersEnabled</h4>\n<pre>protected&nbsp;boolean&nbsp;areMouseListenersEnabled()</pre>\n<div class=\"block\">Returns <code>true</code> if mouse listeners have ever been assigned to\n this object or to any of the contained objects.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#areMouseListenersEnabled--\">areMouseListenersEnabled</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd><code>true</code> if mouse listeners have been enabled in this object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>if (gcomp.areMouseListenersEnabled()) . . .</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"contains-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>contains</h4>\n<pre>public&nbsp;boolean&nbsp;contains(double&nbsp;x,\n                        double&nbsp;y)</pre>\n<div class=\"block\">Checks to see whether a point is \"inside\" the compound, which means that it is\n inside one of the components.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#contains-double-double-\">contains</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x</code> - The x-coordinate of the point being tested</dd>\n<dd><code>y</code> - The y-coordinate of the point being tested</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd><code>true</code> if the point (<code>x</code>,&nbsp;<code>y</code>) is inside\n the compound, and <code>false</code> otherwise</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>if (gcomp.contains(x, y)) . . .</dd>\n</dl>\n</li>\n</ul>\n<a name=\"fireMouseListeners-java.awt.event.MouseEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fireMouseListeners</h4>\n<pre>protected&nbsp;void&nbsp;fireMouseListeners(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Dispatches a mouse event to the topmost child that covers the location\n in the event <code>e</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#fireMouseListeners-java.awt.event.MouseEvent-\">fireMouseListeners</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>e</code> - The <code>MouseEvent</code> that triggered this response</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"getBounds--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getBounds</h4>\n<pre>public&nbsp;<a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a>&nbsp;getBounds()</pre>\n<div class=\"block\">Returns the bounding rectangle for this compound object, which consists of\n the union of the bounding rectangles for each of the components.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#getBounds--\">getBounds</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>A <code>GRectangle</code> that bounds the components of this object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GRectangle bounds = gcomp.getBounds();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getCanvasPoint-acm.graphics.GPoint-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getCanvasPoint</h4>\n<pre>public final&nbsp;<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;getCanvasPoint(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;localPoint)</pre>\n<div class=\"block\">Converts the location of the specified point in this compound to\n the corresponding point in the enclosing canvas.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>localPoint</code> - The coordinates in the space of the compound</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The coordinates in the space of the enclosing <code>GCanvas</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>canvasPoint = gcomp.getCanvasPoint(localPoint);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getCanvasPoint-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getCanvasPoint</h4>\n<pre>public&nbsp;<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;getCanvasPoint(double&nbsp;x,\n                             double&nbsp;y)</pre>\n<div class=\"block\">Converts the location of the specified point in this compound to\n the corresponding point in the enclosing canvas.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x</code> - The x coordinate in the space of the compound</dd>\n<dd><code>y</code> - The y coordinate in the space of the compound</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The coordinates in the space of the enclosing <code>GCanvas</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>canvasPoint = gcomp.getCanvasPoint(x, y);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getElement-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getElement</h4>\n<pre>public&nbsp;&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;&nbsp;T&nbsp;getElement(int&nbsp;index)</pre>\n<div class=\"block\">Returns the graphical object at the specified index, numbering from back\n to front in the the <i>z</i> dimension.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GContainer.html#getElement-int-\">getElement</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>index</code> - The index of the component to return</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The graphical object at the specified index</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GObject gobj = gcomp.getElement(index);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getElementAt-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getElementAt</h4>\n<pre>public&nbsp;&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;&nbsp;T&nbsp;getElementAt(double&nbsp;x,\n                                          double&nbsp;y)</pre>\n<div class=\"block\">Returns the topmost graphical object that contains the point\n (<code>x</code>, <code>y</code>), or <code>null</code> if no such\n object exists.  Note that these coordinates are relative to the\n location of the compound object and not to the canvas in which\n it is displayed.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GContainer.html#getElementAt-double-double-\">getElementAt</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x</code> - The x-coordinate of the point being tested</dd>\n<dd><code>y</code> - The y-coordinate of the point being tested</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The graphical object at the specified location, or <code>null</code>\n if no such object exists</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GObject gobj = gcomp.getElementAt(x, y);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getElementAt-acm.graphics.GPoint-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getElementAt</h4>\n<pre>public final&nbsp;&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;&nbsp;T&nbsp;getElementAt(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</pre>\n<div class=\"block\">Returns the topmost graphical object that contains the specified point,\n or <code>null</code> if no such object exists.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GContainer.html#getElementAt-acm.graphics.GPoint-\">getElementAt</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>pt</code> - The coordinates being tested</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The graphical object at the specified location, or <code>null</code>\n if no such object exists</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GObject gobj = gc.getElementAt(pt);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getElementCount--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getElementCount</h4>\n<pre>public&nbsp;int&nbsp;getElementCount()</pre>\n<div class=\"block\">Returns the number of graphical objects stored in this container.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GContainer.html#getElementCount--\">getElementCount</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a></code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The number of graphical objects in this container</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int n = gcomp.getElementCount();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getLocalPoint-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getLocalPoint</h4>\n<pre>public&nbsp;<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;getLocalPoint(double&nbsp;x,\n                            double&nbsp;y)</pre>\n<div class=\"block\">Converts the specified point on the enclosing canvas to the\n corresponding point in the space of this compound.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x</code> - The x coordinate in the space of the space of the enclosing <code>GCanvas</code></dd>\n<dd><code>y</code> - The y coordinate in the space of the space of the enclosing <code>GCanvas</code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The coordinates in the space of the compound</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>localPoint = gcomp.getCanvasPoint(x, y);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getLocalPoint-acm.graphics.GPoint-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getLocalPoint</h4>\n<pre>public final&nbsp;<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;getLocalPoint(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;canvasPoint)</pre>\n<div class=\"block\">Converts the location of the specified point on the enclosing canvas\n to the corresponding point in the space of this compound.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>canvasPoint</code> - The coordinates in the space of the enclosing <code>GCanvas</code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The coordinates in the space of the compound</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>localPoint = gcomp.getLocalPoint(canvasPoint);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"iterator--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>iterator</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true\" title=\"class or interface in java.util\">Iterator</a>&lt;<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;&nbsp;iterator()</pre>\n<div class=\"block\">Returns an <code>Iterator</code> that cycles through the elements within\n this container in the default direction, which is from back to front.\n You can also run the iterator in the opposite direction by using the\n <a href=\"#iterator(int)\"><code>iterator</code></a><code>(</code><font\n size=-1><i>direction</i></font><code>)</code> form of this method.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true#iterator--\" title=\"class or interface in java.lang\">iterator</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;</code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>An <code>Iterator</code> ranging over the elements of the\n container from back to front</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>Iterator<GObject> i = gc.iterator();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"iterator-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>iterator</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true\" title=\"class or interface in java.util\">Iterator</a>&lt;<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;&nbsp;iterator(int&nbsp;direction)</pre>\n<div class=\"block\">Returns an <code>Iterator</code> that cycles through the elements\n within this container in the specified direction, which must be one\n of the constants <a href=\"GContainer.html#FRONT_TO_BACK\"><code>GContainer.FRONT_TO_BACK</code></a>\n or <a href=\"GContainer.html#BACK_TO_FRONT\"><code>GContainer.BACK_TO_FRONT</code></a>.<p>\n <p>\n <p><pre><code>\n &nbsp;    for (Iterator&lt;GObject&gt; i = gc.iterator(direction); i.hasNext(); )\n </code></pre></div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>An <code>Iterator</code> ranging over the elements of the\n container in the specified direction</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>Iterator<GObject> i = gc.iterator(direction);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"markAsComplete--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>markAsComplete</h4>\n<pre>public&nbsp;void&nbsp;markAsComplete()</pre>\n<div class=\"block\">Calling this method makes it illegal to add or remove elements from the\n compound object.  Subclasses can invoke this method to protect the\n integrity of the structure from changes by the client.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gcomp.markAsComplete();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"paint2d-java.awt.Graphics2D-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>paint2d</h4>\n<pre>protected&nbsp;void&nbsp;paint2d(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics2D.html?is-external=true\" title=\"class or interface in java.awt\">Graphics2D</a>&nbsp;g)</pre>\n<div class=\"block\">Implements the <code>paint2d</code> operation for this graphical object.  This method\n is not called directly by clients.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#paint2d-java.awt.Graphics2D-\">paint2d</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>g</code> - The graphics context into which the painting is done</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"remove-acm.graphics.GObject-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>remove</h4>\n<pre>public&nbsp;void&nbsp;remove(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</pre>\n<div class=\"block\">Removes a graphical object from this <code>GCompound</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GContainer.html#remove-acm.graphics.GObject-\">remove</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>gobj</code> - The graphical object to remove</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gcomp.remove(gobj);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"removeAll--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeAll</h4>\n<pre>public&nbsp;void&nbsp;removeAll()</pre>\n<div class=\"block\">Removes all graphical objects from this <code>GCompound</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GContainer.html#removeAll--\">removeAll</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gcomp.removeAll();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"scale-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>scale</h4>\n<pre>public&nbsp;void&nbsp;scale(double&nbsp;sx,\n                  double&nbsp;sy)</pre>\n<div class=\"block\">Scales every object contained in this compound by the scale factors\n <code>sx</code> and <code>sy</code>.  Automatic repaint is turned off\n during the scaling operation so that at most one repaint is performed.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GScalable.html#scale-double-double-\">scale</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#scale-double-double-\">scale</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>sx</code> - The factor used to scale all coordinates in the x direction</dd>\n<dd><code>sy</code> - The factor used to scale all coordinates in the y direction</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gcomp.scale(sx, sy);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"sendBackward-acm.graphics.GObject-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>sendBackward</h4>\n<pre>protected&nbsp;void&nbsp;sendBackward(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</pre>\n<div class=\"block\">Implements the <code>sendBackward</code> function from the <code>GContainer</code>\n interface.  Clients should not be calling this method, but the semantics of\n interfaces forces it to be exported.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"sendForward-acm.graphics.GObject-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>sendForward</h4>\n<pre>protected&nbsp;void&nbsp;sendForward(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</pre>\n<div class=\"block\">Implements the <code>sendForward</code> function from the <code>GContainer</code>\n interface.  Clients should not be calling this method, but the semantics of\n interfaces forces it to be exported.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"sendToBack-acm.graphics.GObject-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>sendToBack</h4>\n<pre>protected&nbsp;void&nbsp;sendToBack(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</pre>\n<div class=\"block\">Implements the <code>sendToBack</code> function from the <code>GContainer</code>\n interface.  Clients should not be calling this method, but the semantics of\n interfaces forces it to be exported.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"sendToFront-acm.graphics.GObject-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>sendToFront</h4>\n<pre>protected&nbsp;void&nbsp;sendToFront(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</pre>\n<div class=\"block\">Implements the <code>sendToFront</code> function from the <code>GContainer</code>\n interface.  Clients should not be calling this method, but the semantics of\n interfaces forces it to be exported.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/graphics/GCompound.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GCompound.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/graphics/GContainer.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>GContainer</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GContainer\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":6,\"i1\":6,\"i2\":6,\"i3\":6,\"i4\":6,\"i5\":6,\"i6\":6,\"i7\":6,\"i8\":6};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],4:[\"t3\",\"Abstract Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/graphics/GCompound.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/graphics/GImage.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/graphics/GContainer.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GContainer.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.graphics</div>\n<h2 title=\"Interface GContainer\" class=\"title\">Interface GContainer</h2>\n</div>\n<div class=\"contentContainer\">\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Known Implementing Classes:</dt>\n<dd><a href=\"../../acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a>, <a href=\"../../acm/graphics/GCompound.html\" title=\"class in acm.graphics\">GCompound</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public interface <span class=\"typeNameLabel\">GContainer</span></pre>\n<div class=\"block\">Defines the functionality of an object that can serve as the parent\n of a <a href=\"GObject.html\"><code>GObject</code></a>.</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GContainer.html#BACK_TO_FRONT\">BACK_TO_FRONT</a></span></code>\n<div class=\"block\">Specifies that iterators should run from back to front</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GContainer.html#FRONT_TO_BACK\">FRONT_TO_BACK</a></span></code>\n<div class=\"block\">Specifies that iterators should run from front to back</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t3\" class=\"tableTab\"><span><a href=\"javascript:show(4);\">Abstract Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GContainer.html#add-acm.graphics.GObject-\">add</a></span>(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</code>\n<div class=\"block\">Adds a new graphical object to this container.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GContainer.html#add-acm.graphics.GObject-double-double-\">add</a></span>(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj,\n   double&nbsp;x,\n   double&nbsp;y)</code>\n<div class=\"block\">Adds the graphical object to this canvas and sets its location\n to the point (<code>x</code>,&nbsp;<code>y</code>).</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GContainer.html#add-acm.graphics.GObject-acm.graphics.GPoint-\">add</a></span>(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj,\n   <a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</code>\n<div class=\"block\">Adds the graphical object to this canvas and sets its location to the specified point.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;<br>T</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GContainer.html#getElement-int-\">getElement</a></span>(int&nbsp;index)</code>\n<div class=\"block\">Returns the graphical object at the specified index, numbering from back\n to front in the the <i>z</i> dimension.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;<br>T</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GContainer.html#getElementAt-double-double-\">getElementAt</a></span>(double&nbsp;x,\n            double&nbsp;y)</code>\n<div class=\"block\">Returns the topmost graphical object that contains the point\n (<code>x</code>, <code>y</code>), or <code>null</code> if no such\n object exists.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;<br>T</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GContainer.html#getElementAt-acm.graphics.GPoint-\">getElementAt</a></span>(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</code>\n<div class=\"block\">Returns the topmost graphical object that contains the specified point,\n or <code>null</code> if no such object exists.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GContainer.html#getElementCount--\">getElementCount</a></span>()</code>\n<div class=\"block\">Returns the number of graphical objects stored in this <code>GCanvas</code>.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GContainer.html#remove-acm.graphics.GObject-\">remove</a></span>(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</code>\n<div class=\"block\">Removes a graphical object from this container.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GContainer.html#removeAll--\">removeAll</a></span>()</code>\n<div class=\"block\">Removes all graphical objects from this container.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"BACK_TO_FRONT\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>BACK_TO_FRONT</h4>\n<pre>static final&nbsp;int BACK_TO_FRONT</pre>\n<div class=\"block\">Specifies that iterators should run from back to front</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.graphics.GContainer.BACK_TO_FRONT\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"FRONT_TO_BACK\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>FRONT_TO_BACK</h4>\n<pre>static final&nbsp;int FRONT_TO_BACK</pre>\n<div class=\"block\">Specifies that iterators should run from front to back</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.graphics.GContainer.FRONT_TO_BACK\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"add-acm.graphics.GObject-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>void&nbsp;add(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</pre>\n<div class=\"block\">Adds a new graphical object to this container.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>gobj</code> - The graphical object to add</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gc.add(gobj);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"add-acm.graphics.GObject-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>void&nbsp;add(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj,\n         double&nbsp;x,\n         double&nbsp;y)</pre>\n<div class=\"block\">Adds the graphical object to this canvas and sets its location\n to the point (<code>x</code>,&nbsp;<code>y</code>).</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>gobj</code> - The graphical object to add</dd>\n<dd><code>x</code> - The new x-coordinate for the object</dd>\n<dd><code>y</code> - The new y-coordinate for the object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gc.add(gobj, x, y);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"add-acm.graphics.GObject-acm.graphics.GPoint-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>void&nbsp;add(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj,\n         <a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</pre>\n<div class=\"block\">Adds the graphical object to this canvas and sets its location to the specified point.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>gobj</code> - The graphical object to add</dd>\n<dd><code>pt</code> - A <code>GPoint</code> object giving the coordinates of the point</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gc.add(gobj, pt);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"remove-acm.graphics.GObject-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>remove</h4>\n<pre>void&nbsp;remove(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</pre>\n<div class=\"block\">Removes a graphical object from this container.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>gobj</code> - The graphical object to remove</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gc.remove(gobj);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"removeAll--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeAll</h4>\n<pre>void&nbsp;removeAll()</pre>\n<div class=\"block\">Removes all graphical objects from this container.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gc.removeAll();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getElementCount--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getElementCount</h4>\n<pre>int&nbsp;getElementCount()</pre>\n<div class=\"block\">Returns the number of graphical objects stored in this <code>GCanvas</code>.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The number of graphical objects in this <code>GCanvas</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int n = gc.getElementCount();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getElement-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getElement</h4>\n<pre>&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;&nbsp;T&nbsp;getElement(int&nbsp;index)</pre>\n<div class=\"block\">Returns the graphical object at the specified index, numbering from back\n to front in the the <i>z</i> dimension.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>index</code> - The index of the component to return</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The graphical object at the specified index</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GObject gobj = gc.getElement(index);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getElementAt-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getElementAt</h4>\n<pre>&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;&nbsp;T&nbsp;getElementAt(double&nbsp;x,\n                                   double&nbsp;y)</pre>\n<div class=\"block\">Returns the topmost graphical object that contains the point\n (<code>x</code>, <code>y</code>), or <code>null</code> if no such\n object exists.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x</code> - The x-coordinate of the point being tested</dd>\n<dd><code>y</code> - The y-coordinate of the point being tested</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The graphical object at the specified location, or <code>null</code>\n         if no such object exists.</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GObject gobj = gc.getElementAt(x, y);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getElementAt-acm.graphics.GPoint-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>getElementAt</h4>\n<pre>&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;&nbsp;T&nbsp;getElementAt(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</pre>\n<div class=\"block\">Returns the topmost graphical object that contains the specified point,\n or <code>null</code> if no such object exists.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>pt</code> - The coordinates being tested</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The graphical object at the specified location, or <code>null</code>\n         if no such object exists</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GObject gobj = gc.getElementAt(pt);</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/graphics/GCompound.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/graphics/GImage.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/graphics/GContainer.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GContainer.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/graphics/GImage.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>GImage</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GImage\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9,\"i2\":10,\"i3\":9,\"i4\":10,\"i5\":9,\"i6\":10,\"i7\":9,\"i8\":10,\"i9\":10,\"i10\":9,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":10,\"i16\":10,\"i17\":10,\"i18\":10,\"i19\":10,\"i20\":10,\"i21\":10,\"i22\":10,\"i23\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/graphics/GLabel.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/graphics/GImage.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GImage.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.graphics</div>\n<h2 title=\"Class GImage\" class=\"title\">Class GImage</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">acm.graphics.GObject</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.graphics.GImage</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"../../acm/graphics/GResizable.html\" title=\"interface in acm.graphics\">GResizable</a>, <a href=\"../../acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true\" title=\"class or interface in java.lang\">Cloneable</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GImage</span>\nextends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>\nimplements <a href=\"../../acm/graphics/GResizable.html\" title=\"interface in acm.graphics\">GResizable</a>, <a href=\"../../acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a></pre>\n<div class=\"block\">The <code>GImage</code> class is a graphical object whose appearance is\n defined by an image.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#acm.graphics.GImage\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GImage.html#GImage-java.awt.Image-\">GImage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;image)</code>\n<div class=\"block\">Creates a new <code>GImage</code> object at the origin that displays\n the specified image.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GImage.html#GImage-java.awt.Image-double-double-\">GImage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;image,\n      double&nbsp;x,\n      double&nbsp;y)</code>\n<div class=\"block\">Creates a new <code>GImage</code> object at the specified coordinates.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GImage.html#GImage-int:A:A-\">GImage</a></span>(int[][]&nbsp;array)</code>\n<div class=\"block\">Creates a new <code>GImage</code> object at the origin.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GImage.html#GImage-int:A:A-double-double-\">GImage</a></span>(int[][]&nbsp;array,\n      double&nbsp;x,\n      double&nbsp;y)</code>\n<div class=\"block\">Creates a new <code>GImage</code> object at the specified coordinates.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GImage.html#GImage-java.lang.String-\">GImage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>\n<div class=\"block\">Creates a new <code>GImage</code> object by looking for an image with that\n name.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GImage.html#GImage-java.lang.String-double-double-\">GImage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n      double&nbsp;x,\n      double&nbsp;y)</code>\n<div class=\"block\">Creates a new <code>GImage</code> object at the specified coordinates.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GImage.html#createRGBPixel-int-int-int-\">createRGBPixel</a></span>(int&nbsp;red,\n              int&nbsp;green,\n              int&nbsp;blue)</code>\n<div class=\"block\">Creates an opaque pixel value with the color components given by\n <code>red</code>, <code>green</code>, and <code>blue</code>.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GImage.html#createRGBPixel-int-int-int-int-\">createRGBPixel</a></span>(int&nbsp;red,\n              int&nbsp;green,\n              int&nbsp;blue,\n              int&nbsp;alpha)</code>\n<div class=\"block\">Creates a pixel value with the color components given by\n <code>red</code>, <code>green</code>, and <code>blue</code>\n and the transparency value <code>alpha</code>.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GImage.html#fit-double-double-\">fit</a></span>(double&nbsp;width,\n   double&nbsp;height)</code>\n<div class=\"block\">Resizes the image to the largest size that fits within the given width/height\n while maintaining the image's \"aspect ratio\" (not stretching the image's\n relative width/height).</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GImage.html#getAlpha-int-\">getAlpha</a></span>(int&nbsp;pixel)</code>\n<div class=\"block\">Returns the alpha component from an RGB value.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Rectangle.html?is-external=true\" title=\"class or interface in java.awt\">Rectangle</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GImage.html#getAWTBounds--\">getAWTBounds</a></span>()</code>\n<div class=\"block\">Returns an AWT <code>Rectangle</code> that specifies the bounds of this object.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GImage.html#getBlue-int-\">getBlue</a></span>(int&nbsp;pixel)</code>\n<div class=\"block\">Returns the blue component from an RGB value.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GImage.html#getBounds--\">getBounds</a></span>()</code>\n<div class=\"block\">Returns the bounding box of this object.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GImage.html#getGreen-int-\">getGreen</a></span>(int&nbsp;pixel)</code>\n<div class=\"block\">Returns the green component from an RGB value.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GImage.html#getImage--\">getImage</a></span>()</code>\n<div class=\"block\">Returns the image stored inside this <code>GImage</code>.</div>\n</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int[][]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GImage.html#getPixelArray--\">getPixelArray</a></span>()</code>\n<div class=\"block\">Returns a two-dimensional array of pixel values from the stored image.</div>\n</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GImage.html#getRed-int-\">getRed</a></span>(int&nbsp;pixel)</code>\n<div class=\"block\">Returns the red component from an RGB value.</div>\n</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>acm.graphics.GDimension</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GImage.html#getSize--\">getSize</a></span>()</code>\n<div class=\"block\">Returns the size of this object as a <code>GDimension</code>.</div>\n</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GImage.html#inBounds-double-double-\">inBounds</a></span>(double&nbsp;x,\n        double&nbsp;y)</code>\n<div class=\"block\">Returns whether the given x/y pixel position is within the bounds of the image,\n in other words, whether it is between (0, 0) and (w, h).</div>\n</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GImage.html#paint2d-java.awt.Graphics2D-\">paint2d</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics2D.html?is-external=true\" title=\"class or interface in java.awt\">Graphics2D</a>&nbsp;graphics2d)</code>\n<div class=\"block\">Implements the <code>paint2d</code> operation for this graphical object.</div>\n</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GImage.html#saveImage-java.io.File-\">saveImage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)</code>\n<div class=\"block\">Saves the image to the specified file.</div>\n</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GImage.html#saveImage-java.lang.String-\">saveImage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>\n<div class=\"block\">Saves the image to a file with the specified filename.</div>\n</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GImage.html#scale-double-double-\">scale</a></span>(double&nbsp;sx,\n     double&nbsp;sy)</code>\n<div class=\"block\">Scales the object on the screen by the scale factors <code>sx</code> and <code>sy</code>.</div>\n</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GImage.html#setBounds-double-double-double-double-\">setBounds</a></span>(double&nbsp;x,\n         double&nbsp;y,\n         double&nbsp;width,\n         double&nbsp;height)</code>\n<div class=\"block\">Changes the bounds of this object to the specified values.</div>\n</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GImage.html#setBounds-acm.graphics.GRectangle-\">setBounds</a></span>(<a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a>&nbsp;bounds)</code>\n<div class=\"block\">Changes the bounds of this object to the values from the specified\n <code>GRectangle</code>.</div>\n</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GImage.html#setImage-java.awt.Image-\">setImage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;image)</code>\n<div class=\"block\">Resets the image used by this <code>GImage</code> object to the new image\n specified as an argument.</div>\n</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GImage.html#setImage-java.lang.String-\">setImage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>\n<div class=\"block\">Resets the image used by this <code>GImage</code> object to the one identified\n by the argument <code>name</code>, which is processed exactly as described\n in the constructors.</div>\n</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GImage.html#setPixelArray-int:A:A-\">setPixelArray</a></span>(int[][]&nbsp;pixels)</code>\n<div class=\"block\">Sets the image to use the given two-dimensional array of pixel values.</div>\n</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GImage.html#setSize-double-double-\">setSize</a></span>(double&nbsp;width,\n       double&nbsp;height)</code>\n<div class=\"block\">Changes the size of this object to the specified width and height.</div>\n</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GImage.html#setSize-acm.graphics.GDimension-\">setSize</a></span>(acm.graphics.GDimension&nbsp;size)</code>\n<div class=\"block\">Changes the size of this object to the specified <code>GDimension</code>.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.graphics.GObject\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.graphics.<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></h3>\n<code><a href=\"../../acm/graphics/GObject.html#addActionListener-java.awt.event.ActionListener-\">addActionListener</a>, <a href=\"../../acm/graphics/GObject.html#addMouseListener-java.awt.event.MouseListener-\">addMouseListener</a>, <a href=\"../../acm/graphics/GObject.html#addMouseMotionListener-java.awt.event.MouseMotionListener-\">addMouseMotionListener</a>, <a href=\"../../acm/graphics/GObject.html#areMouseListenersEnabled--\">areMouseListenersEnabled</a>, <a href=\"../../acm/graphics/GObject.html#clone--\">clone</a>, <a href=\"../../acm/graphics/GObject.html#colorName-java.awt.Color-\">colorName</a>, <a href=\"../../acm/graphics/GObject.html#colorName-int-\">colorName</a>, <a href=\"../../acm/graphics/GObject.html#colorNameFriendly-int-\">colorNameFriendly</a>, <a href=\"../../acm/graphics/GObject.html#contains-double-double-\">contains</a>, <a href=\"../../acm/graphics/GObject.html#contains-acm.graphics.GPoint-\">contains</a>, <a href=\"../../acm/graphics/GObject.html#createTransformedGraphics-java.awt.Graphics-\">createTransformedGraphics</a>, <a href=\"../../acm/graphics/GObject.html#fireActionEvent-java.awt.event.ActionEvent-\">fireActionEvent</a>, <a href=\"../../acm/graphics/GObject.html#fireActionEvent-java.lang.String-\">fireActionEvent</a>, <a href=\"../../acm/graphics/GObject.html#fireMouseListeners-java.awt.event.MouseEvent-\">fireMouseListeners</a>, <a href=\"../../acm/graphics/GObject.html#getBottomY--\">getBottomY</a>, <a href=\"../../acm/graphics/GObject.html#getCenterLocation--\">getCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#getCenterX--\">getCenterX</a>, <a href=\"../../acm/graphics/GObject.html#getCenterY--\">getCenterY</a>, <a href=\"../../acm/graphics/GObject.html#getColor--\">getColor</a>, <a href=\"../../acm/graphics/GObject.html#getComponent--\">getComponent</a>, <a href=\"../../acm/graphics/GObject.html#getHeight--\">getHeight</a>, <a href=\"../../acm/graphics/GObject.html#getLineWidth--\">getLineWidth</a>, <a href=\"../../acm/graphics/GObject.html#getLocation--\">getLocation</a>, <a href=\"../../acm/graphics/GObject.html#getMatrix--\">getMatrix</a>, <a href=\"../../acm/graphics/GObject.html#getObjectColor--\">getObjectColor</a>, <a href=\"../../acm/graphics/GObject.html#getParent--\">getParent</a>, <a href=\"../../acm/graphics/GObject.html#getRightX--\">getRightX</a>, <a href=\"../../acm/graphics/GObject.html#getWidth--\">getWidth</a>, <a href=\"../../acm/graphics/GObject.html#getX--\">getX</a>, <a href=\"../../acm/graphics/GObject.html#getY--\">getY</a>, <a href=\"../../acm/graphics/GObject.html#intersects-acm.graphics.GObject-\">intersects</a>, <a href=\"../../acm/graphics/GObject.html#isAntiAliasing--\">isAntiAliasing</a>, <a href=\"../../acm/graphics/GObject.html#isVisible--\">isVisible</a>, <a href=\"../../acm/graphics/GObject.html#move-double-double-\">move</a>, <a href=\"../../acm/graphics/GObject.html#movePolar-double-double-\">movePolar</a>, <a href=\"../../acm/graphics/GObject.html#paint-java.awt.Graphics-\">paint</a>, <a href=\"../../acm/graphics/GObject.html#paramString--\">paramString</a>, <a href=\"../../acm/graphics/GObject.html#pause-double-\">pause</a>, <a href=\"../../acm/graphics/GObject.html#removeActionListener-java.awt.event.ActionListener-\">removeActionListener</a>, <a href=\"../../acm/graphics/GObject.html#removeMouseListener-java.awt.event.MouseListener-\">removeMouseListener</a>, <a href=\"../../acm/graphics/GObject.html#removeMouseMotionListener-java.awt.event.MouseMotionListener-\">removeMouseMotionListener</a>, <a href=\"../../acm/graphics/GObject.html#repaint--\">repaint</a>, <a href=\"../../acm/graphics/GObject.html#rotate-double-\">rotate</a>, <a href=\"../../acm/graphics/GObject.html#scale-double-\">scale</a>, <a href=\"../../acm/graphics/GObject.html#sendBackward--\">sendBackward</a>, <a href=\"../../acm/graphics/GObject.html#sendForward--\">sendForward</a>, <a href=\"../../acm/graphics/GObject.html#sendToBack--\">sendToBack</a>, <a href=\"../../acm/graphics/GObject.html#sendToFront--\">sendToFront</a>, <a href=\"../../acm/graphics/GObject.html#setAntiAliasing-boolean-\">setAntiAliasing</a>, <a href=\"../../acm/graphics/GObject.html#setBottomY-double-\">setBottomY</a>, <a href=\"../../acm/graphics/GObject.html#setCenterLocation-double-double-\">setCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#setCenterLocation-acm.graphics.GPoint-\">setCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#setCenterX-double-\">setCenterX</a>, <a href=\"../../acm/graphics/GObject.html#setCenterY-double-\">setCenterY</a>, <a href=\"../../acm/graphics/GObject.html#setColor-java.awt.Color-\">setColor</a>, <a href=\"../../acm/graphics/GObject.html#setLineWidth-double-\">setLineWidth</a>, <a href=\"../../acm/graphics/GObject.html#setLocation-double-double-\">setLocation</a>, <a href=\"../../acm/graphics/GObject.html#setLocation-acm.graphics.GPoint-\">setLocation</a>, <a href=\"../../acm/graphics/GObject.html#setParent-acm.graphics.GContainer-\">setParent</a>, <a href=\"../../acm/graphics/GObject.html#setRightX-double-\">setRightX</a>, <a href=\"../../acm/graphics/GObject.html#setVisible-boolean-\">setVisible</a>, <a href=\"../../acm/graphics/GObject.html#setX-double-\">setX</a>, <a href=\"../../acm/graphics/GObject.html#setY-double-\">setY</a>, <a href=\"../../acm/graphics/GObject.html#start--\">start</a>, <a href=\"../../acm/graphics/GObject.html#start-java.lang.String:A-\">start</a>, <a href=\"../../acm/graphics/GObject.html#toString--\">toString</a>, <a href=\"../../acm/graphics/GObject.html#updateEnabledList--\">updateEnabledList</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.graphics.GScalable\">\n<!--   -->\n</a>\n<h3>Methods inherited from interface&nbsp;acm.graphics.<a href=\"../../acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a></h3>\n<code><a href=\"../../acm/graphics/GScalable.html#scale-double-\">scale</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GImage-java.awt.Image-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>GImage</h4>\n<pre>public&nbsp;GImage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;image)</pre>\n<div class=\"block\">Creates a new <code>GImage</code> object at the origin that displays\n the specified image.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>image</code> - The image to use as the contents of this <code>GImage</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GImage gimage = new GImage(image);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"GImage-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>GImage</h4>\n<pre>public&nbsp;GImage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n<div class=\"block\">Creates a new <code>GImage</code> object by looking for an image with that\n name.  The search for an image by name consists of the following steps:\n <p>\n <p><ol>\n <li>Check to see if an image with that name has already been defined.  If\n so, return that image.<p>\n <p>\n <li>Check to see if there is a resource available with that name whose\n contents can be read as an <code>Image</code>.  If so, read the image\n from the resource file.<p>\n <p>\n <li>Load the image from a file with the specified name, relative to the\n application directory or the applet code base.\n </ol><p></div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>name</code> - The name used to search for the contents of this image</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GImage gimage = new GImage(name);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"GImage-int:A:A-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>GImage</h4>\n<pre>public&nbsp;GImage(int[][]&nbsp;array)</pre>\n<div class=\"block\">Creates a new <code>GImage</code> object at the origin.  The <code>array</code>\n parameter is a two-dimensional pixel array in which each pixel value consists\n of an integer that is subdivided into four eight-bit bytes, as follows:\n <p>\n <center>\n <i>alpha</i> <code>&lt;&lt;</code> 24  <code>|</code>\n <i>red</i>   <code>&lt;&lt;</code> 16  <code>|</code>\n <i>green</i> <code>&lt;&lt;</code>  8  <code>|</code>\n <i>blue</i>\n </center>\n <p>\n The <i>alpha</i> value indicates the transparency, and the other values\n are the red, green, and blue components of the color.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>array</code> - A two-dimensional pixel array</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GImage gimage = new GImage(array);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"GImage-java.awt.Image-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>GImage</h4>\n<pre>public&nbsp;GImage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;image,\n              double&nbsp;x,\n              double&nbsp;y)</pre>\n<div class=\"block\">Creates a new <code>GImage</code> object at the specified coordinates.  The\n <code>image</code> parameter is used to initialize the appearance of the image.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>image</code> - The image to use as the contents of this <code>GImage</code></dd>\n<dd><code>x</code> - The x-coordinate of the upper left corner of the image</dd>\n<dd><code>y</code> - The y-coordinate of the upper left corner of the image</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GImage gimage = new GImage(image, x, y);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"GImage-java.lang.String-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>GImage</h4>\n<pre>public&nbsp;GImage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n              double&nbsp;x,\n              double&nbsp;y)</pre>\n<div class=\"block\">Creates a new <code>GImage</code> object at the specified coordinates.  The\n <code>name</code> parameter is used to identify an image to display, as\n described in the single-argument version of the\n <a href=\"#GImage(String)\"><code>GImage</code></a> constructor.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>name</code> - The name used to search for the contents of this image</dd>\n<dd><code>x</code> - The x-coordinate of the upper left corner of the image</dd>\n<dd><code>y</code> - The y-coordinate of the upper left corner of the image</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GImage gimage = new GImage(image, x, y);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"GImage-int:A:A-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GImage</h4>\n<pre>public&nbsp;GImage(int[][]&nbsp;array,\n              double&nbsp;x,\n              double&nbsp;y)</pre>\n<div class=\"block\">Creates a new <code>GImage</code> object at the specified coordinates.\n The <code>array</code> parameter is a two-dimensional pixel array in\n which each pixel value consists of an integer that is subdivided into\n four eight-bit bytes, as follows:\n <p>\n <center>\n <i>alpha</i> <code>&lt;&lt;</code> 24  <code>|</code>\n <i>red</i>   <code>&lt;&lt;</code> 16  <code>|</code>\n <i>green</i> <code>&lt;&lt;</code>  8  <code>|</code>\n <i>blue</i>\n </center>\n <p>\n The <i>alpha</i> value indicates the transparency, and the other values\n are the red, green, and blue components of the color.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>array</code> - A two-dimensional pixel array</dd>\n<dd><code>x</code> - The x-coordinate of the upper left corner of the image</dd>\n<dd><code>y</code> - The y-coordinate of the upper left corner of the image</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GImage gimage = new GImage(array, x, y);</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"createRGBPixel-int-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createRGBPixel</h4>\n<pre>public static&nbsp;int&nbsp;createRGBPixel(int&nbsp;red,\n                                 int&nbsp;green,\n                                 int&nbsp;blue)</pre>\n<div class=\"block\">Creates an opaque pixel value with the color components given by\n <code>red</code>, <code>green</code>, and <code>blue</code>.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>red</code> - The red component of the pixel (0 to 255)</dd>\n<dd><code>green</code> - The green component of the pixel (0 to 255)</dd>\n<dd><code>blue</code> - The blue component of the pixel (0 to 255)</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>An opaque pixel value containing these components</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int pixel = GImage.createRGBPixel(red, green, blue);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"createRGBPixel-int-int-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createRGBPixel</h4>\n<pre>public static&nbsp;int&nbsp;createRGBPixel(int&nbsp;red,\n                                 int&nbsp;green,\n                                 int&nbsp;blue,\n                                 int&nbsp;alpha)</pre>\n<div class=\"block\">Creates a pixel value with the color components given by\n <code>red</code>, <code>green</code>, and <code>blue</code>\n and the transparency value <code>alpha</code>.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>red</code> - The red component of the pixel (0 to 255)</dd>\n<dd><code>green</code> - The green component of the pixel (0 to 255)</dd>\n<dd><code>blue</code> - The blue component of the pixel (0 to 255)</dd>\n<dd><code>alpha</code> - The transparency value of the pixel (0 to 255)</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>A pixel value containing these components</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int pixel = GImage.createRGBPixel(red, green, blue);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"fit-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fit</h4>\n<pre>public&nbsp;void&nbsp;fit(double&nbsp;width,\n                double&nbsp;height)</pre>\n<div class=\"block\">Resizes the image to the largest size that fits within the given width/height\n while maintaining the image's \"aspect ratio\" (not stretching the image's\n relative width/height).</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>width</code> - maximum width, in pixels</dd>\n<dd><code>height</code> - maximum height, in pixels</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getAlpha-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getAlpha</h4>\n<pre>public static&nbsp;int&nbsp;getAlpha(int&nbsp;pixel)</pre>\n<div class=\"block\">Returns the alpha component from an RGB value.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>pixel</code> - An <code>int</code> containing a pixel value as alpha/red/green/blue.</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The alpha component of the pixel</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int alpha = GImage.getAlpha(pixel);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getAWTBounds--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getAWTBounds</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Rectangle.html?is-external=true\" title=\"class or interface in java.awt\">Rectangle</a>&nbsp;getAWTBounds()</pre>\n<div class=\"block\">Returns an AWT <code>Rectangle</code> that specifies the bounds of this object.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>A <code>Rectangle</code> that specifies the bounds of this object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>Rectangle r = grect.getAWTBounds();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getBlue-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getBlue</h4>\n<pre>public static&nbsp;int&nbsp;getBlue(int&nbsp;pixel)</pre>\n<div class=\"block\">Returns the blue component from an RGB value.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>pixel</code> - An <code>int</code> containing a pixel value as alpha/red/green/blue.</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The blue component of the pixel</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int blue = GImage.getBlue(pixel);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getBounds--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getBounds</h4>\n<pre>public&nbsp;<a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a>&nbsp;getBounds()</pre>\n<div class=\"block\">Returns the bounding box of this object.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#getBounds--\">getBounds</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The bounding box for this object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GRectangle bounds = gimage.getBounds();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getGreen-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getGreen</h4>\n<pre>public static&nbsp;int&nbsp;getGreen(int&nbsp;pixel)</pre>\n<div class=\"block\">Returns the green component from an RGB value.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>pixel</code> - An <code>int</code> containing a pixel value as alpha/red/green/blue.</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The green component of the pixel</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int green = GImage.getGreen(pixel);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getImage--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getImage</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;getImage()</pre>\n<div class=\"block\">Returns the image stored inside this <code>GImage</code>.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The <code>Image</code> object stored inside this <code>GImage</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>Image image = gimage.getImage();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getRed-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getRed</h4>\n<pre>public static&nbsp;int&nbsp;getRed(int&nbsp;pixel)</pre>\n<div class=\"block\">Returns the red component from an RGB value.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>pixel</code> - An <code>int</code> containing a pixel value as alpha/red/green/blue.</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The red component of the pixel</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int red = GImage.getRed(pixel);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getSize--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSize</h4>\n<pre>public&nbsp;acm.graphics.GDimension&nbsp;getSize()</pre>\n<div class=\"block\">Returns the size of this object as a <code>GDimension</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#getSize--\">getSize</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The size of this object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GDimension size = gimage.getSize();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"inBounds-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>inBounds</h4>\n<pre>public&nbsp;boolean&nbsp;inBounds(double&nbsp;x,\n                        double&nbsp;y)</pre>\n<div class=\"block\">Returns whether the given x/y pixel position is within the bounds of the image,\n in other words, whether it is between (0, 0) and (w, h).</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x</code> - the pixel's x-coordinate</dd>\n<dd><code>y</code> - the pixel's y-coordinate</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>true if the given x/y pixel position is between (0, 0) and (w, h)</dd>\n</dl>\n</li>\n</ul>\n<a name=\"paint2d-java.awt.Graphics2D-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>paint2d</h4>\n<pre>protected&nbsp;void&nbsp;paint2d(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics2D.html?is-external=true\" title=\"class or interface in java.awt\">Graphics2D</a>&nbsp;graphics2d)</pre>\n<div class=\"block\">Implements the <code>paint2d</code> operation for this graphical object.  This method\n is not called directly by clients.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#paint2d-java.awt.Graphics2D-\">paint2d</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>graphics2d</code> - The graphics context into which the painting is done</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"saveImage-java.io.File-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>saveImage</h4>\n<pre>public&nbsp;void&nbsp;saveImage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)</pre>\n<div class=\"block\">Saves the image to the specified file.  The data format for the\n image file is determined by the suffix of the filename.  If the\n suffix of the file is not recognized as a supported image type,\n calling this method generates an error.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>file</code> - The <code>File</code> to which the image is saved</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gimage.saveImage(file);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"saveImage-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>saveImage</h4>\n<pre>public&nbsp;void&nbsp;saveImage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</pre>\n<div class=\"block\">Saves the image to a file with the specified filename.  The data format\n for the image file is determined by the suffix of the filename.  If the\n suffix of the file is not recognized as a supported image type, calling\n this method generates an error.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>filename</code> - The name of the file to which the image is saved</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gimage.saveImage(filename);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setBounds-double-double-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setBounds</h4>\n<pre>public&nbsp;void&nbsp;setBounds(double&nbsp;x,\n                      double&nbsp;y,\n                      double&nbsp;width,\n                      double&nbsp;height)</pre>\n<div class=\"block\">Changes the bounds of this object to the specified values.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GResizable.html#setBounds-double-double-double-double-\">setBounds</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GResizable.html\" title=\"interface in acm.graphics\">GResizable</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x</code> - The new x-coordinate for the object</dd>\n<dd><code>y</code> - The new y-coordinate for the object</dd>\n<dd><code>width</code> - The new width of the object</dd>\n<dd><code>height</code> - The new height of the object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gimage.setBounds(x, y, width, height);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setBounds-acm.graphics.GRectangle-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setBounds</h4>\n<pre>public final&nbsp;void&nbsp;setBounds(<a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a>&nbsp;bounds)</pre>\n<div class=\"block\">Changes the bounds of this object to the values from the specified\n <code>GRectangle</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GResizable.html#setBounds-acm.graphics.GRectangle-\">setBounds</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GResizable.html\" title=\"interface in acm.graphics\">GResizable</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>bounds</code> - A <code>GRectangle</code> specifying the new bounds</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gimage.setBounds(bounds);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setImage-java.awt.Image-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setImage</h4>\n<pre>public&nbsp;void&nbsp;setImage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;image)</pre>\n<div class=\"block\">Resets the image used by this <code>GImage</code> object to the new image\n specified as an argument.  Calling <code>setImage</code> automatically changes\n the size of the image to be equal to that of the image data.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>image</code> - The image to use as the contents of this <code>GImage</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gimage.setImage(image);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setImage-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setImage</h4>\n<pre>public&nbsp;void&nbsp;setImage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n<div class=\"block\">Resets the image used by this <code>GImage</code> object to the one identified\n by the argument <code>name</code>, which is processed exactly as described\n in the constructors.  Calling <code>setImage</code> automatically changes\n the size of the image to be equal to that of the image data.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>name</code> - The name used to search for the contents of this image</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gimage.setImage(name);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setSize-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setSize</h4>\n<pre>public&nbsp;void&nbsp;setSize(double&nbsp;width,\n                    double&nbsp;height)</pre>\n<div class=\"block\">Changes the size of this object to the specified width and height.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GResizable.html#setSize-double-double-\">setSize</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GResizable.html\" title=\"interface in acm.graphics\">GResizable</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>width</code> - The new width of the object</dd>\n<dd><code>height</code> - The new height of the object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gimage.setSize(width, height);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setSize-acm.graphics.GDimension-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setSize</h4>\n<pre>public final&nbsp;void&nbsp;setSize(acm.graphics.GDimension&nbsp;size)</pre>\n<div class=\"block\">Changes the size of this object to the specified <code>GDimension</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GResizable.html#setSize-acm.graphics.GDimension-\">setSize</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GResizable.html\" title=\"interface in acm.graphics\">GResizable</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>size</code> - A <code>GDimension</code> object specifying the size</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gimage.setSize(size);</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"scale-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>scale</h4>\n<pre>public&nbsp;void&nbsp;scale(double&nbsp;sx,\n                  double&nbsp;sy)</pre>\n<div class=\"block\">Scales the object on the screen by the scale factors <code>sx</code> and <code>sy</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GScalable.html#scale-double-double-\">scale</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#scale-double-double-\">scale</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>sx</code> - The factor used to scale all coordinates in the x direction</dd>\n<dd><code>sy</code> - The factor used to scale all coordinates in the y direction</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.scale(sx, sy);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getPixelArray--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getPixelArray</h4>\n<pre>public&nbsp;int[][]&nbsp;getPixelArray()</pre>\n<div class=\"block\">Returns a two-dimensional array of pixel values from the stored image.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>A two-dimensional array of pixel values from the stored image</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int[][] array = gimage.getPixelArray();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setPixelArray-int:A:A-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>setPixelArray</h4>\n<pre>public&nbsp;void&nbsp;setPixelArray(int[][]&nbsp;pixels)</pre>\n<div class=\"block\">Sets the image to use the given two-dimensional array of pixel values.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gimage.setPixelArray(array);</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/graphics/GLabel.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/graphics/GImage.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GImage.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/graphics/GLabel.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>GLabel</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GLabel\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":10,\"i16\":10,\"i17\":10,\"i18\":10,\"i19\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/graphics/GImage.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/graphics/GLine.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/graphics/GLabel.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GLabel.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.graphics</div>\n<h2 title=\"Class GLabel\" class=\"title\">Class GLabel</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">acm.graphics.GObject</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.graphics.GLabel</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"../../acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true\" title=\"class or interface in java.lang\">Cloneable</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GLabel</span>\nextends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></pre>\n<div class=\"block\">The <code>GLabel</code> class is a graphical object whose appearance\n consists of a text string.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#acm.graphics.GLabel\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLabel.html#DEFAULT_FONT\">DEFAULT_FONT</a></span></code>\n<div class=\"block\">The default font used to display strings.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLabel.html#GLabel-java.lang.String-\">GLabel</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;str)</code>\n<div class=\"block\">Creates a new <code>GLabel</code> object initialized to contain the specified string.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLabel.html#GLabel-java.lang.String-double-double-\">GLabel</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;str,\n      double&nbsp;x,\n      double&nbsp;y)</code>\n<div class=\"block\">Creates a new <code>GLabel</code> object with its baseline origin at the\n specified position.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLabel.html#contains-double-double-\">contains</a></span>(double&nbsp;x,\n        double&nbsp;y)</code>\n<div class=\"block\">Returns true if this label contains the given x/y point.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLabel.html#getAscent--\">getAscent</a></span>()</code>\n<div class=\"block\">Returns the distance this string extends above the baseline.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLabel.html#getBounds--\">getBounds</a></span>()</code>\n<div class=\"block\">Returns a <code>GRectangle</code> that specifies the bounding box for the string.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLabel.html#getDescent--\">getDescent</a></span>()</code>\n<div class=\"block\">Returns the distance this string descends below the baseline.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLabel.html#getFont--\">getFont</a></span>()</code>\n<div class=\"block\">Returns the font in which the <code>GLabel</code> is displayed.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/FontMetrics.html?is-external=true\" title=\"class or interface in java.awt\">FontMetrics</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLabel.html#getFontMetrics--\">getFontMetrics</a></span>()</code>\n<div class=\"block\">Returns a <code>FontMetrics</code> object describing the dimensions of this string.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLabel.html#getHeight--\">getHeight</a></span>()</code>\n<div class=\"block\">Returns the height of this string, as it appears on the display.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLabel.html#getLabel--\">getLabel</a></span>()</code>\n<div class=\"block\">Returns the string displayed by this object.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLabel.html#getText--\">getText</a></span>()</code>\n<div class=\"block\">Returns the string displayed by this object.</div>\n</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLabel.html#getWidth--\">getWidth</a></span>()</code>\n<div class=\"block\">Returns the width of this string, as it appears on the display.</div>\n</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLabel.html#paint2d-java.awt.Graphics2D-\">paint2d</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics2D.html?is-external=true\" title=\"class or interface in java.awt\">Graphics2D</a>&nbsp;g)</code>\n<div class=\"block\">Implements the <code>paint2d</code> operation for this graphical object.</div>\n</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLabel.html#paramString--\">paramString</a></span>()</code>\n<div class=\"block\">Returns a string indicating the parameters of this object.</div>\n</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLabel.html#setBottomY-double-\">setBottomY</a></span>(double&nbsp;bottomY)</code>\n<div class=\"block\">Sets the bottom y-coordinate of this object to the given y value.</div>\n</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLabel.html#setCenterLocation-double-double-\">setCenterLocation</a></span>(double&nbsp;centerX,\n                 double&nbsp;centerY)</code>\n<div class=\"block\">Sets the central x/y-coordinates of this object to the given x/y values.</div>\n</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLabel.html#setCenterY-double-\">setCenterY</a></span>(double&nbsp;centerY)</code>\n<div class=\"block\">Sets the central y-coordinate of this object to the given y value.</div>\n</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLabel.html#setFont-java.awt.Font-\">setFont</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a>&nbsp;font)</code>\n<div class=\"block\">Changes the font used to display the <code>GLabel</code>.</div>\n</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLabel.html#setFont-java.lang.String-\">setFont</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;str)</code>\n<div class=\"block\">Changes the font used to display the <code>GLabel</code> as specified by\n the string <code>str</code>, which is interpreted in the style of\n <code>Font.decode</code>.</div>\n</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLabel.html#setLabel-java.lang.String-\">setLabel</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;str)</code>\n<div class=\"block\">Changes the string stored within the <code>GLabel</code> object, so that\n a new text string appears on the display.</div>\n</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLabel.html#setText-java.lang.String-\">setText</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;str)</code>\n<div class=\"block\">Changes the string stored within the <code>GLabel</code> object, so that\n a new text string appears on the display.</div>\n</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLabel.html#setTopY-double-\">setTopY</a></span>(double&nbsp;topY)</code>\n<div class=\"block\">Sets the top y-coordinate of this object to the given y value.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.graphics.GObject\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.graphics.<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></h3>\n<code><a href=\"../../acm/graphics/GObject.html#addActionListener-java.awt.event.ActionListener-\">addActionListener</a>, <a href=\"../../acm/graphics/GObject.html#addMouseListener-java.awt.event.MouseListener-\">addMouseListener</a>, <a href=\"../../acm/graphics/GObject.html#addMouseMotionListener-java.awt.event.MouseMotionListener-\">addMouseMotionListener</a>, <a href=\"../../acm/graphics/GObject.html#areMouseListenersEnabled--\">areMouseListenersEnabled</a>, <a href=\"../../acm/graphics/GObject.html#clone--\">clone</a>, <a href=\"../../acm/graphics/GObject.html#colorName-java.awt.Color-\">colorName</a>, <a href=\"../../acm/graphics/GObject.html#colorName-int-\">colorName</a>, <a href=\"../../acm/graphics/GObject.html#colorNameFriendly-int-\">colorNameFriendly</a>, <a href=\"../../acm/graphics/GObject.html#contains-acm.graphics.GPoint-\">contains</a>, <a href=\"../../acm/graphics/GObject.html#createTransformedGraphics-java.awt.Graphics-\">createTransformedGraphics</a>, <a href=\"../../acm/graphics/GObject.html#fireActionEvent-java.awt.event.ActionEvent-\">fireActionEvent</a>, <a href=\"../../acm/graphics/GObject.html#fireActionEvent-java.lang.String-\">fireActionEvent</a>, <a href=\"../../acm/graphics/GObject.html#fireMouseListeners-java.awt.event.MouseEvent-\">fireMouseListeners</a>, <a href=\"../../acm/graphics/GObject.html#getBottomY--\">getBottomY</a>, <a href=\"../../acm/graphics/GObject.html#getCenterLocation--\">getCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#getCenterX--\">getCenterX</a>, <a href=\"../../acm/graphics/GObject.html#getCenterY--\">getCenterY</a>, <a href=\"../../acm/graphics/GObject.html#getColor--\">getColor</a>, <a href=\"../../acm/graphics/GObject.html#getComponent--\">getComponent</a>, <a href=\"../../acm/graphics/GObject.html#getLineWidth--\">getLineWidth</a>, <a href=\"../../acm/graphics/GObject.html#getLocation--\">getLocation</a>, <a href=\"../../acm/graphics/GObject.html#getMatrix--\">getMatrix</a>, <a href=\"../../acm/graphics/GObject.html#getObjectColor--\">getObjectColor</a>, <a href=\"../../acm/graphics/GObject.html#getParent--\">getParent</a>, <a href=\"../../acm/graphics/GObject.html#getRightX--\">getRightX</a>, <a href=\"../../acm/graphics/GObject.html#getSize--\">getSize</a>, <a href=\"../../acm/graphics/GObject.html#getX--\">getX</a>, <a href=\"../../acm/graphics/GObject.html#getY--\">getY</a>, <a href=\"../../acm/graphics/GObject.html#intersects-acm.graphics.GObject-\">intersects</a>, <a href=\"../../acm/graphics/GObject.html#isAntiAliasing--\">isAntiAliasing</a>, <a href=\"../../acm/graphics/GObject.html#isVisible--\">isVisible</a>, <a href=\"../../acm/graphics/GObject.html#move-double-double-\">move</a>, <a href=\"../../acm/graphics/GObject.html#movePolar-double-double-\">movePolar</a>, <a href=\"../../acm/graphics/GObject.html#paint-java.awt.Graphics-\">paint</a>, <a href=\"../../acm/graphics/GObject.html#pause-double-\">pause</a>, <a href=\"../../acm/graphics/GObject.html#removeActionListener-java.awt.event.ActionListener-\">removeActionListener</a>, <a href=\"../../acm/graphics/GObject.html#removeMouseListener-java.awt.event.MouseListener-\">removeMouseListener</a>, <a href=\"../../acm/graphics/GObject.html#removeMouseMotionListener-java.awt.event.MouseMotionListener-\">removeMouseMotionListener</a>, <a href=\"../../acm/graphics/GObject.html#repaint--\">repaint</a>, <a href=\"../../acm/graphics/GObject.html#rotate-double-\">rotate</a>, <a href=\"../../acm/graphics/GObject.html#scale-double-\">scale</a>, <a href=\"../../acm/graphics/GObject.html#scale-double-double-\">scale</a>, <a href=\"../../acm/graphics/GObject.html#sendBackward--\">sendBackward</a>, <a href=\"../../acm/graphics/GObject.html#sendForward--\">sendForward</a>, <a href=\"../../acm/graphics/GObject.html#sendToBack--\">sendToBack</a>, <a href=\"../../acm/graphics/GObject.html#sendToFront--\">sendToFront</a>, <a href=\"../../acm/graphics/GObject.html#setAntiAliasing-boolean-\">setAntiAliasing</a>, <a href=\"../../acm/graphics/GObject.html#setCenterLocation-acm.graphics.GPoint-\">setCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#setCenterX-double-\">setCenterX</a>, <a href=\"../../acm/graphics/GObject.html#setColor-java.awt.Color-\">setColor</a>, <a href=\"../../acm/graphics/GObject.html#setLineWidth-double-\">setLineWidth</a>, <a href=\"../../acm/graphics/GObject.html#setLocation-double-double-\">setLocation</a>, <a href=\"../../acm/graphics/GObject.html#setLocation-acm.graphics.GPoint-\">setLocation</a>, <a href=\"../../acm/graphics/GObject.html#setParent-acm.graphics.GContainer-\">setParent</a>, <a href=\"../../acm/graphics/GObject.html#setRightX-double-\">setRightX</a>, <a href=\"../../acm/graphics/GObject.html#setVisible-boolean-\">setVisible</a>, <a href=\"../../acm/graphics/GObject.html#setX-double-\">setX</a>, <a href=\"../../acm/graphics/GObject.html#setY-double-\">setY</a>, <a href=\"../../acm/graphics/GObject.html#start--\">start</a>, <a href=\"../../acm/graphics/GObject.html#start-java.lang.String:A-\">start</a>, <a href=\"../../acm/graphics/GObject.html#toString--\">toString</a>, <a href=\"../../acm/graphics/GObject.html#updateEnabledList--\">updateEnabledList</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"DEFAULT_FONT\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>DEFAULT_FONT</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a> DEFAULT_FONT</pre>\n<div class=\"block\">The default font used to display strings.  You can change the font by invoking\n the <a href=\"#setFont(Font)\"><code>setFont</code></a> method.</div>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GLabel-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>GLabel</h4>\n<pre>public&nbsp;GLabel(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;str)</pre>\n<div class=\"block\">Creates a new <code>GLabel</code> object initialized to contain the specified string.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>str</code> - The initial contents of the <code>GLabel</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GLabel glabel = new GLabel(str);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"GLabel-java.lang.String-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GLabel</h4>\n<pre>public&nbsp;GLabel(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;str,\n              double&nbsp;x,\n              double&nbsp;y)</pre>\n<div class=\"block\">Creates a new <code>GLabel</code> object with its baseline origin at the\n specified position.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>str</code> - The initial contents of the <code>GLabel</code></dd>\n<dd><code>x</code> - The x-coordinate of the label origin</dd>\n<dd><code>y</code> - The y-coordinate of the baseline for the label</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GLabel glabel = new GLabel(str, x, y);</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"contains-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>contains</h4>\n<pre>public&nbsp;boolean&nbsp;contains(double&nbsp;x,\n                        double&nbsp;y)</pre>\n<div class=\"block\">Returns true if this label contains the given x/y point.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#contains-double-double-\">contains</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x</code> - the x-coordinate to check</dd>\n<dd><code>y</code> - the y-coordinate to check</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>true if this label contains the given x/y point</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getAscent--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getAscent</h4>\n<pre>public&nbsp;double&nbsp;getAscent()</pre>\n<div class=\"block\">Returns the distance this string extends above the baseline.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The ascent of this string in pixels</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double ascent = glabel.getAscent();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getBounds--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getBounds</h4>\n<pre>public&nbsp;<a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a>&nbsp;getBounds()</pre>\n<div class=\"block\">Returns a <code>GRectangle</code> that specifies the bounding box for the string.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#getBounds--\">getBounds</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The bounding box for this object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GRectangle bounds = glabel.getBounds();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getDescent--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getDescent</h4>\n<pre>public&nbsp;double&nbsp;getDescent()</pre>\n<div class=\"block\">Returns the distance this string descends below the baseline.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The descent of this string in pixels</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double descent = glabel.getDescent();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getFont--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFont</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a>&nbsp;getFont()</pre>\n<div class=\"block\">Returns the font in which the <code>GLabel</code> is displayed.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The font in use by this object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>Font font = glabel.getFont();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getFontMetrics--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFontMetrics</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/FontMetrics.html?is-external=true\" title=\"class or interface in java.awt\">FontMetrics</a>&nbsp;getFontMetrics()</pre>\n<div class=\"block\">Returns a <code>FontMetrics</code> object describing the dimensions of this string.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>A <code>FontMetrics</code> object describing the dimensions of this string</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>FontMetrics fm = glabel.getFontMetrics();</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"getHeight--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getHeight</h4>\n<pre>public&nbsp;double&nbsp;getHeight()</pre>\n<div class=\"block\">Returns the height of this string, as it appears on the display.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#getHeight--\">getHeight</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The height of this string</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double height = glabel.getHeight();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getLabel--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getLabel</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getLabel()</pre>\n<div class=\"block\">Returns the string displayed by this object.\n Equivalent to getText.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The string displayed by this object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>String str = glabel.getLabel();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getText--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getText</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getText()</pre>\n<div class=\"block\">Returns the string displayed by this object.\n Equivalent to getLabel.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The string displayed by this object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>String str = glabel.getLabel();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getWidth--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getWidth</h4>\n<pre>public&nbsp;double&nbsp;getWidth()</pre>\n<div class=\"block\">Returns the width of this string, as it appears on the display.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#getWidth--\">getWidth</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The width of this object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double width = glabel.getWidth();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"paint2d-java.awt.Graphics2D-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>paint2d</h4>\n<pre>public&nbsp;void&nbsp;paint2d(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics2D.html?is-external=true\" title=\"class or interface in java.awt\">Graphics2D</a>&nbsp;g)</pre>\n<div class=\"block\">Implements the <code>paint2d</code> operation for this graphical object.  This method\n is not called directly by clients.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#paint2d-java.awt.Graphics2D-\">paint2d</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>g</code> - The graphics context into which the painting is done</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"paramString--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>paramString</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString()</pre>\n<div class=\"block\">Returns a string indicating the parameters of this object.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#paramString--\">paramString</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"setBottomY-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setBottomY</h4>\n<pre>public&nbsp;void&nbsp;setBottomY(double&nbsp;bottomY)</pre>\n<div class=\"block\">Sets the bottom y-coordinate of this object to the given y value.\n Since labels use y-positioning relative to their bottom, not the top,\n this is equivalent to calling setY().</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#setBottomY-double-\">setBottomY</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>bottomY</code> - The new bottom y-coordinate for the object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.setBottomY(y);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setCenterLocation-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setCenterLocation</h4>\n<pre>public&nbsp;void&nbsp;setCenterLocation(double&nbsp;centerX,\n                              double&nbsp;centerY)</pre>\n<div class=\"block\">Sets the central x/y-coordinates of this object to the given x/y values.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#setCenterLocation-double-double-\">setCenterLocation</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>centerX</code> - The new central x-coordinate for the object</dd>\n<dd><code>centerY</code> - The new central y-coordinate for the object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.setCenterLocation(x, y);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setCenterY-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setCenterY</h4>\n<pre>public&nbsp;void&nbsp;setCenterY(double&nbsp;centerY)</pre>\n<div class=\"block\">Sets the central y-coordinate of this object to the given y value.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#setCenterY-double-\">setCenterY</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>centerY</code> - The new central y-coordinate for the object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.setCenterY(y);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setFont-java.awt.Font-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setFont</h4>\n<pre>public&nbsp;void&nbsp;setFont(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a>&nbsp;font)</pre>\n<div class=\"block\">Changes the font used to display the <code>GLabel</code>.  This call will\n usually change the size of the displayed object and will therefore affect\n the result of calls to <a href=\"GObject.html#getSize()\"><code>getSize</code></a>\n and <a href=\"GObject.html#getBounds()\"><code>getBounds</code></a>.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>font</code> - A <code>Font</code> object indicating the new font</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>glabel.setFont(font);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setFont-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setFont</h4>\n<pre>public&nbsp;void&nbsp;setFont(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;str)</pre>\n<div class=\"block\">Changes the font used to display the <code>GLabel</code> as specified by\n the string <code>str</code>, which is interpreted in the style of\n <code>Font.decode</code>.  The usual format of the font string is\n <p>\n <p><pre><code>\n &nbsp;    <font face=\"serif;times\"><i>family</i></font>-<font face=\"serif;times\"><i>style</i></font>-<font face=\"serif;times\"><i>size</i></font>\n <p>\n <p>where both <i>style</i> and <i>size</i> are optional.  If any of these\n parts are specified as an asterisk, the existing value is retained.\n <p></div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>str</code> - A <code>String</code> specifying the new font</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>glabel.setFont(str);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setLabel-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setLabel</h4>\n<pre>public&nbsp;void&nbsp;setLabel(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;str)</pre>\n<div class=\"block\">Changes the string stored within the <code>GLabel</code> object, so that\n a new text string appears on the display.\n Equivalent to setText.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>str</code> - The new string to display</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>glabel.setLabel(str);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setText-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setText</h4>\n<pre>public&nbsp;void&nbsp;setText(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;str)</pre>\n<div class=\"block\">Changes the string stored within the <code>GLabel</code> object, so that\n a new text string appears on the display.\n Equivalent to setLabel.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>str</code> - The new string to display</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>glabel.setText(str);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setTopY-double-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>setTopY</h4>\n<pre>public&nbsp;void&nbsp;setTopY(double&nbsp;topY)</pre>\n<div class=\"block\">Sets the top y-coordinate of this object to the given y value.\n Since labels use y-positioning relative to their bottom, not the top, this\n is equivalent to calling setY() and shifting downward by the label's height.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>bottomY</code> - The new top y-coordinate for the object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.setBottomY(y);</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/graphics/GImage.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/graphics/GLine.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/graphics/GLabel.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GLabel.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/graphics/GLine.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>GLine</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GLine\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":9,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":9,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/graphics/GLabel.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/graphics/GLineGroup.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/graphics/GLine.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GLine.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.graphics</div>\n<h2 title=\"Class GLine\" class=\"title\">Class GLine</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">acm.graphics.GObject</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.graphics.GLine</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"../../acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true\" title=\"class or interface in java.lang\">Cloneable</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GLine</span>\nextends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>\nimplements <a href=\"../../acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a></pre>\n<div class=\"block\">The <code>GLine</code> class is a graphical object whose appearance consists\n of a line segment.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#acm.graphics.GLine\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLine.html#LINE_TOLERANCE\">LINE_TOLERANCE</a></span></code>\n<div class=\"block\">This constant defines how close (measured in pixel units) a point has to\n be to a line before that point is considered to be \"contained\" within the\n line.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLine.html#GLine--\">GLine</a></span>()</code>\n<div class=\"block\">Constructs a line segment of length 0 at position (0, 0).</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLine.html#GLine-double-double-\">GLine</a></span>(double&nbsp;x0,\n     double&nbsp;y0)</code>\n<div class=\"block\">Constructs a line segment of length 0 at position (x0, y0).</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLine.html#GLine-double-double-double-double-\">GLine</a></span>(double&nbsp;x0,\n     double&nbsp;y0,\n     double&nbsp;x1,\n     double&nbsp;y1)</code>\n<div class=\"block\">Constructs a line segment from its endpoints.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLine.html#contains-double-double-\">contains</a></span>(double&nbsp;x,\n        double&nbsp;y)</code>\n<div class=\"block\">Checks to see whether a point is inside the object.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLine.html#distanceSquared-double-double-double-double-\">distanceSquared</a></span>(double&nbsp;x0,\n               double&nbsp;y0,\n               double&nbsp;x1,\n               double&nbsp;y1)</code>\n<div class=\"block\">Returns the square of the distance between (<code>x0</code>,&nbsp;\n <code>y0</code>) and (<code>x1</code>,&nbsp;<code>y1</code>).</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLine.html#getBounds--\">getBounds</a></span>()</code>\n<div class=\"block\">Returns the bounding box for this object.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLine.html#getEndPoint--\">getEndPoint</a></span>()</code>\n<div class=\"block\">Returns the end point of the line as a <code>GPoint</code> object.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLine.html#getStartPoint--\">getStartPoint</a></span>()</code>\n<div class=\"block\">Returns the coordinates of the initial point in the line.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLine.html#intersects-double-double-double-double-double-double-double-\">intersects</a></span>(double&nbsp;x,\n          double&nbsp;y,\n          double&nbsp;x0,\n          double&nbsp;y0,\n          double&nbsp;x1,\n          double&nbsp;y1,\n          double&nbsp;lineWidth)</code>\n<div class=\"block\">Returns whether the given x/y point intersects the line from x0,y0 to x1,y1 of the given width.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLine.html#paint2d-java.awt.Graphics2D-\">paint2d</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics2D.html?is-external=true\" title=\"class or interface in java.awt\">Graphics2D</a>&nbsp;g)</code>\n<div class=\"block\">Implements the <code>paint2d</code> operation for this graphical object.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLine.html#paramString--\">paramString</a></span>()</code>\n<div class=\"block\">Returns a string indicating the parameters of this object.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLine.html#scale-double-double-\">scale</a></span>(double&nbsp;sx,\n     double&nbsp;sy)</code>\n<div class=\"block\">Scales the line on the screen by the scale factors <code>sx</code> and\n <code>sy</code>.</div>\n</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLine.html#setEndPoint-double-double-\">setEndPoint</a></span>(double&nbsp;x,\n           double&nbsp;y)</code>\n<div class=\"block\">Sets the end point of the line to the point (<code>x</code>,&nbsp;\n <code>y</code>).</div>\n</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLine.html#setEndPointPolar-double-double-\">setEndPointPolar</a></span>(double&nbsp;r,\n                double&nbsp;theta)</code>\n<div class=\"block\">Sets the end point of the line using polar coordinates.</div>\n</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLine.html#setStartPoint-double-double-\">setStartPoint</a></span>(double&nbsp;x,\n             double&nbsp;y)</code>\n<div class=\"block\">Sets the initial point in the line to (<code>x</code>,&nbsp;\n <code>y</code>), leaving the end point unchanged.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.graphics.GObject\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.graphics.<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></h3>\n<code><a href=\"../../acm/graphics/GObject.html#addActionListener-java.awt.event.ActionListener-\">addActionListener</a>, <a href=\"../../acm/graphics/GObject.html#addMouseListener-java.awt.event.MouseListener-\">addMouseListener</a>, <a href=\"../../acm/graphics/GObject.html#addMouseMotionListener-java.awt.event.MouseMotionListener-\">addMouseMotionListener</a>, <a href=\"../../acm/graphics/GObject.html#areMouseListenersEnabled--\">areMouseListenersEnabled</a>, <a href=\"../../acm/graphics/GObject.html#clone--\">clone</a>, <a href=\"../../acm/graphics/GObject.html#colorName-java.awt.Color-\">colorName</a>, <a href=\"../../acm/graphics/GObject.html#colorName-int-\">colorName</a>, <a href=\"../../acm/graphics/GObject.html#colorNameFriendly-int-\">colorNameFriendly</a>, <a href=\"../../acm/graphics/GObject.html#contains-acm.graphics.GPoint-\">contains</a>, <a href=\"../../acm/graphics/GObject.html#createTransformedGraphics-java.awt.Graphics-\">createTransformedGraphics</a>, <a href=\"../../acm/graphics/GObject.html#fireActionEvent-java.awt.event.ActionEvent-\">fireActionEvent</a>, <a href=\"../../acm/graphics/GObject.html#fireActionEvent-java.lang.String-\">fireActionEvent</a>, <a href=\"../../acm/graphics/GObject.html#fireMouseListeners-java.awt.event.MouseEvent-\">fireMouseListeners</a>, <a href=\"../../acm/graphics/GObject.html#getBottomY--\">getBottomY</a>, <a href=\"../../acm/graphics/GObject.html#getCenterLocation--\">getCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#getCenterX--\">getCenterX</a>, <a href=\"../../acm/graphics/GObject.html#getCenterY--\">getCenterY</a>, <a href=\"../../acm/graphics/GObject.html#getColor--\">getColor</a>, <a href=\"../../acm/graphics/GObject.html#getComponent--\">getComponent</a>, <a href=\"../../acm/graphics/GObject.html#getHeight--\">getHeight</a>, <a href=\"../../acm/graphics/GObject.html#getLineWidth--\">getLineWidth</a>, <a href=\"../../acm/graphics/GObject.html#getLocation--\">getLocation</a>, <a href=\"../../acm/graphics/GObject.html#getMatrix--\">getMatrix</a>, <a href=\"../../acm/graphics/GObject.html#getObjectColor--\">getObjectColor</a>, <a href=\"../../acm/graphics/GObject.html#getParent--\">getParent</a>, <a href=\"../../acm/graphics/GObject.html#getRightX--\">getRightX</a>, <a href=\"../../acm/graphics/GObject.html#getSize--\">getSize</a>, <a href=\"../../acm/graphics/GObject.html#getWidth--\">getWidth</a>, <a href=\"../../acm/graphics/GObject.html#getX--\">getX</a>, <a href=\"../../acm/graphics/GObject.html#getY--\">getY</a>, <a href=\"../../acm/graphics/GObject.html#intersects-acm.graphics.GObject-\">intersects</a>, <a href=\"../../acm/graphics/GObject.html#isAntiAliasing--\">isAntiAliasing</a>, <a href=\"../../acm/graphics/GObject.html#isVisible--\">isVisible</a>, <a href=\"../../acm/graphics/GObject.html#move-double-double-\">move</a>, <a href=\"../../acm/graphics/GObject.html#movePolar-double-double-\">movePolar</a>, <a href=\"../../acm/graphics/GObject.html#paint-java.awt.Graphics-\">paint</a>, <a href=\"../../acm/graphics/GObject.html#pause-double-\">pause</a>, <a href=\"../../acm/graphics/GObject.html#removeActionListener-java.awt.event.ActionListener-\">removeActionListener</a>, <a href=\"../../acm/graphics/GObject.html#removeMouseListener-java.awt.event.MouseListener-\">removeMouseListener</a>, <a href=\"../../acm/graphics/GObject.html#removeMouseMotionListener-java.awt.event.MouseMotionListener-\">removeMouseMotionListener</a>, <a href=\"../../acm/graphics/GObject.html#repaint--\">repaint</a>, <a href=\"../../acm/graphics/GObject.html#rotate-double-\">rotate</a>, <a href=\"../../acm/graphics/GObject.html#scale-double-\">scale</a>, <a href=\"../../acm/graphics/GObject.html#sendBackward--\">sendBackward</a>, <a href=\"../../acm/graphics/GObject.html#sendForward--\">sendForward</a>, <a href=\"../../acm/graphics/GObject.html#sendToBack--\">sendToBack</a>, <a href=\"../../acm/graphics/GObject.html#sendToFront--\">sendToFront</a>, <a href=\"../../acm/graphics/GObject.html#setAntiAliasing-boolean-\">setAntiAliasing</a>, <a href=\"../../acm/graphics/GObject.html#setBottomY-double-\">setBottomY</a>, <a href=\"../../acm/graphics/GObject.html#setCenterLocation-double-double-\">setCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#setCenterLocation-acm.graphics.GPoint-\">setCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#setCenterX-double-\">setCenterX</a>, <a href=\"../../acm/graphics/GObject.html#setCenterY-double-\">setCenterY</a>, <a href=\"../../acm/graphics/GObject.html#setColor-java.awt.Color-\">setColor</a>, <a href=\"../../acm/graphics/GObject.html#setLineWidth-double-\">setLineWidth</a>, <a href=\"../../acm/graphics/GObject.html#setLocation-double-double-\">setLocation</a>, <a href=\"../../acm/graphics/GObject.html#setLocation-acm.graphics.GPoint-\">setLocation</a>, <a href=\"../../acm/graphics/GObject.html#setParent-acm.graphics.GContainer-\">setParent</a>, <a href=\"../../acm/graphics/GObject.html#setRightX-double-\">setRightX</a>, <a href=\"../../acm/graphics/GObject.html#setVisible-boolean-\">setVisible</a>, <a href=\"../../acm/graphics/GObject.html#setX-double-\">setX</a>, <a href=\"../../acm/graphics/GObject.html#setY-double-\">setY</a>, <a href=\"../../acm/graphics/GObject.html#start--\">start</a>, <a href=\"../../acm/graphics/GObject.html#start-java.lang.String:A-\">start</a>, <a href=\"../../acm/graphics/GObject.html#toString--\">toString</a>, <a href=\"../../acm/graphics/GObject.html#updateEnabledList--\">updateEnabledList</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.graphics.GScalable\">\n<!--   -->\n</a>\n<h3>Methods inherited from interface&nbsp;acm.graphics.<a href=\"../../acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a></h3>\n<code><a href=\"../../acm/graphics/GScalable.html#scale-double-\">scale</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"LINE_TOLERANCE\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>LINE_TOLERANCE</h4>\n<pre>public static final&nbsp;double LINE_TOLERANCE</pre>\n<div class=\"block\">This constant defines how close (measured in pixel units) a point has to\n be to a line before that point is considered to be \"contained\" within the\n line.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.graphics.GLine.LINE_TOLERANCE\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GLine--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>GLine</h4>\n<pre>public&nbsp;GLine()</pre>\n<div class=\"block\">Constructs a line segment of length 0 at position (0, 0).</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GLine gline = new GLine();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"GLine-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>GLine</h4>\n<pre>public&nbsp;GLine(double&nbsp;x0,\n             double&nbsp;y0)</pre>\n<div class=\"block\">Constructs a line segment of length 0 at position (x0, y0).</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GLine gline = new GLine(x0, y0);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"GLine-double-double-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GLine</h4>\n<pre>public&nbsp;GLine(double&nbsp;x0,\n             double&nbsp;y0,\n             double&nbsp;x1,\n             double&nbsp;y1)</pre>\n<div class=\"block\">Constructs a line segment from its endpoints. The point (<code>x0</code>\n ,&nbsp;<code>y0</code>) defines the start of the line and the point (\n <code>x1</code>,&nbsp;<code>y1</code>) defines the end.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x0</code> - The x-coordinate of the start of the line</dd>\n<dd><code>y0</code> - The y-coordinate of the start of the line</dd>\n<dd><code>x1</code> - The x-coordinate of the end of the line</dd>\n<dd><code>y1</code> - The y-coordinate of the end of the line</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GLine gline = new GLine(x0, y0, x1, y1);</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"contains-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>contains</h4>\n<pre>public&nbsp;boolean&nbsp;contains(double&nbsp;x,\n                        double&nbsp;y)</pre>\n<div class=\"block\">Checks to see whether a point is inside the object. For the\n <code>GLine</code> class, containment is defined to mean that the point\n is within <a href=\"#LINE_TOLERANCE\"><code>LINE_TOLERANCE</code></a>\n pixels of the line.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#contains-double-double-\">contains</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x</code> - The x-coordinate of the point being tested</dd>\n<dd><code>y</code> - The y-coordinate of the point being tested</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd><code>true</code> if the point (<code>x</code>,&nbsp;\n         <code>y</code>) is inside</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>if (gline.contains(x, y)) . . .</dd>\n</dl>\n</li>\n</ul>\n<a name=\"distanceSquared-double-double-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>distanceSquared</h4>\n<pre>public static&nbsp;double&nbsp;distanceSquared(double&nbsp;x0,\n                                     double&nbsp;y0,\n                                     double&nbsp;x1,\n                                     double&nbsp;y1)</pre>\n<div class=\"block\">Returns the square of the distance between (<code>x0</code>,&nbsp;\n <code>y0</code>) and (<code>x1</code>,&nbsp;<code>y1</code>).</div>\n</li>\n</ul>\n<a name=\"getBounds--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getBounds</h4>\n<pre>public&nbsp;<a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a>&nbsp;getBounds()</pre>\n<div class=\"block\">Returns the bounding box for this object.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#getBounds--\">getBounds</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The bounding box for this object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GRectangle bounds = gline.getBounds();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getEndPoint--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getEndPoint</h4>\n<pre>public&nbsp;<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;getEndPoint()</pre>\n<div class=\"block\">Returns the end point of the line as a <code>GPoint</code> object.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The coordinates of the end point of the line</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GPoint pt = gline.getEndPoint();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getStartPoint--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getStartPoint</h4>\n<pre>public&nbsp;<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;getStartPoint()</pre>\n<div class=\"block\">Returns the coordinates of the initial point in the line. This method is\n identical to <a href=\"#getLocation()\"><code>getLocation</code></a> and\n exists only to provide symmetry with <a href=\n \"#setStartPoint(double, double)\"><code>setStartPoint</code></a>.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The coordinates of the origin of the line</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GPoint pt = gline.getStartPoint();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"intersects-double-double-double-double-double-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>intersects</h4>\n<pre>public static&nbsp;boolean&nbsp;intersects(double&nbsp;x,\n                                 double&nbsp;y,\n                                 double&nbsp;x0,\n                                 double&nbsp;y0,\n                                 double&nbsp;x1,\n                                 double&nbsp;y1,\n                                 double&nbsp;lineWidth)</pre>\n<div class=\"block\">Returns whether the given x/y point intersects the line from x0,y0 to x1,y1 of the given width.</div>\n</li>\n</ul>\n<a name=\"paint2d-java.awt.Graphics2D-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>paint2d</h4>\n<pre>public&nbsp;void&nbsp;paint2d(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics2D.html?is-external=true\" title=\"class or interface in java.awt\">Graphics2D</a>&nbsp;g)</pre>\n<div class=\"block\">Implements the <code>paint2d</code> operation for this graphical object.\n This method is not called directly by clients.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#paint2d-java.awt.Graphics2D-\">paint2d</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>g</code> - The graphics context into which the painting is done</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"paramString--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>paramString</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString()</pre>\n<div class=\"block\">Returns a string indicating the parameters of this object.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#paramString--\">paramString</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"scale-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>scale</h4>\n<pre>public&nbsp;void&nbsp;scale(double&nbsp;sx,\n                  double&nbsp;sy)</pre>\n<div class=\"block\">Scales the line on the screen by the scale factors <code>sx</code> and\n <code>sy</code>. This method changes only the end point of the line,\n leaving the start of the line fixed.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GScalable.html#scale-double-double-\">scale</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#scale-double-double-\">scale</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>sx</code> - The factor used to scale all coordinates in the x direction</dd>\n<dd><code>sy</code> - The factor used to scale all coordinates in the y direction</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gline.scale(sx, sy);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setEndPoint-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setEndPoint</h4>\n<pre>public&nbsp;void&nbsp;setEndPoint(double&nbsp;x,\n                        double&nbsp;y)</pre>\n<div class=\"block\">Sets the end point of the line to the point (<code>x</code>,&nbsp;\n <code>y</code>). The origin of the line remains unchanged.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x</code> - The new x-coordinate of the end point</dd>\n<dd><code>y</code> - The new y-coordinate of the end point</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gline.setEndPoint(x, y);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setEndPointPolar-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setEndPointPolar</h4>\n<pre>public&nbsp;void&nbsp;setEndPointPolar(double&nbsp;r,\n                             double&nbsp;theta)</pre>\n<div class=\"block\">Sets the end point of the line using polar coordinates.\n The origin of the line remains unchanged.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>r</code> - The polar radius length from start point</dd>\n<dd><code>theta</code> - The polar angle in degrees</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gline.setEndPointPolar(r, theta);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setStartPoint-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>setStartPoint</h4>\n<pre>public&nbsp;void&nbsp;setStartPoint(double&nbsp;x,\n                          double&nbsp;y)</pre>\n<div class=\"block\">Sets the initial point in the line to (<code>x</code>,&nbsp;\n <code>y</code>), leaving the end point unchanged. This method is\n therefore different from <a href=\"#setLocation(double, double)\">\n <code>setLocation</code></a>, which moves both components of the line\n segment.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x</code> - The new x-coordinate of the origin</dd>\n<dd><code>y</code> - The new y-coordinate of the origin</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gline.setStartPoint(x, y);</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/graphics/GLabel.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/graphics/GLineGroup.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/graphics/GLine.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GLine.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/graphics/GLineGroup.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>GLineGroup</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GLineGroup\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/graphics/GLine.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/graphics/GMath.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/graphics/GLineGroup.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GLineGroup.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.graphics</div>\n<h2 title=\"Class GLineGroup\" class=\"title\">Class GLineGroup</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">acm.graphics.GObject</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.graphics.GLineGroup</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"../../acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true\" title=\"class or interface in java.lang\">Cloneable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&gt;</dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GLineGroup</span>\nextends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>\nimplements <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&gt;</pre>\n<div class=\"block\">A line group represents a collection of points that form line segments.\n A line group can be drawn on the screen and looks similar to a collection\n of GLine objects positioned one after another.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#acm.graphics.GLineGroup\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLineGroup.html#GLineGroup--\">GLineGroup</a></span>()</code>\n<div class=\"block\">Creates a new line group that does not contain any points.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLineGroup.html#add-double-double-\">add</a></span>(double&nbsp;x,\n   double&nbsp;y)</code>\n<div class=\"block\">Adds a point with the given coordinates to this line group.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLineGroup.html#add-acm.graphics.GPoint-\">add</a></span>(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;point)</code>\n<div class=\"block\">Adds the given point to this line group.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLineGroup.html#clear--\">clear</a></span>()</code>\n<div class=\"block\">Removes all points from this line group.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLineGroup.html#contains-double-double-\">contains</a></span>(double&nbsp;x,\n        double&nbsp;y)</code>\n<div class=\"block\">Returns true if any of the line segments in this line group touch the given point.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLineGroup.html#getBounds--\">getBounds</a></span>()</code>\n<div class=\"block\">Returns a bounding rectangle that tightly contains this line group.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLineGroup.html#isEmpty--\">isEmpty</a></span>()</code>\n<div class=\"block\">Returns true if there are no points in this line group.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true\" title=\"class or interface in java.util\">Iterator</a>&lt;<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLineGroup.html#iterator--\">iterator</a></span>()</code>\n<div class=\"block\">Returns an Iterator for examining the points in this line group.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLineGroup.html#paint2d-java.awt.Graphics2D-\">paint2d</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics2D.html?is-external=true\" title=\"class or interface in java.awt\">Graphics2D</a>&nbsp;g)</code>\n<div class=\"block\">Paints the group of lines on the screen.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLineGroup.html#paramString--\">paramString</a></span>()</code>\n<div class=\"block\">Returns a string indicating the parameters of this object.</div>\n</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLineGroup.html#remove-double-double-\">remove</a></span>(double&nbsp;x,\n      double&nbsp;y)</code>\n<div class=\"block\">Removes the given point from this line group, if it is part of the line group.</div>\n</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLineGroup.html#remove-acm.graphics.GPoint-\">remove</a></span>(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;point)</code>\n<div class=\"block\">Removes the given point from this line group, if it is part of the line group.</div>\n</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLineGroup.html#setLocation-double-double-\">setLocation</a></span>(double&nbsp;x,\n           double&nbsp;y)</code>\n<div class=\"block\">Sets the line group's top/left corner to the given x/y pair.</div>\n</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLineGroup.html#size--\">size</a></span>()</code>\n<div class=\"block\">Returns the number of points that have been added to the line group.</div>\n</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GLineGroup.html#translate-double-double-\">translate</a></span>(double&nbsp;dx,\n         double&nbsp;dy)</code>\n<div class=\"block\">Shifts every point in this line group by the given amounts.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.graphics.GObject\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.graphics.<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></h3>\n<code><a href=\"../../acm/graphics/GObject.html#addActionListener-java.awt.event.ActionListener-\">addActionListener</a>, <a href=\"../../acm/graphics/GObject.html#addMouseListener-java.awt.event.MouseListener-\">addMouseListener</a>, <a href=\"../../acm/graphics/GObject.html#addMouseMotionListener-java.awt.event.MouseMotionListener-\">addMouseMotionListener</a>, <a href=\"../../acm/graphics/GObject.html#areMouseListenersEnabled--\">areMouseListenersEnabled</a>, <a href=\"../../acm/graphics/GObject.html#clone--\">clone</a>, <a href=\"../../acm/graphics/GObject.html#colorName-java.awt.Color-\">colorName</a>, <a href=\"../../acm/graphics/GObject.html#colorName-int-\">colorName</a>, <a href=\"../../acm/graphics/GObject.html#colorNameFriendly-int-\">colorNameFriendly</a>, <a href=\"../../acm/graphics/GObject.html#contains-acm.graphics.GPoint-\">contains</a>, <a href=\"../../acm/graphics/GObject.html#createTransformedGraphics-java.awt.Graphics-\">createTransformedGraphics</a>, <a href=\"../../acm/graphics/GObject.html#fireActionEvent-java.awt.event.ActionEvent-\">fireActionEvent</a>, <a href=\"../../acm/graphics/GObject.html#fireActionEvent-java.lang.String-\">fireActionEvent</a>, <a href=\"../../acm/graphics/GObject.html#fireMouseListeners-java.awt.event.MouseEvent-\">fireMouseListeners</a>, <a href=\"../../acm/graphics/GObject.html#getBottomY--\">getBottomY</a>, <a href=\"../../acm/graphics/GObject.html#getCenterLocation--\">getCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#getCenterX--\">getCenterX</a>, <a href=\"../../acm/graphics/GObject.html#getCenterY--\">getCenterY</a>, <a href=\"../../acm/graphics/GObject.html#getColor--\">getColor</a>, <a href=\"../../acm/graphics/GObject.html#getComponent--\">getComponent</a>, <a href=\"../../acm/graphics/GObject.html#getHeight--\">getHeight</a>, <a href=\"../../acm/graphics/GObject.html#getLineWidth--\">getLineWidth</a>, <a href=\"../../acm/graphics/GObject.html#getLocation--\">getLocation</a>, <a href=\"../../acm/graphics/GObject.html#getMatrix--\">getMatrix</a>, <a href=\"../../acm/graphics/GObject.html#getObjectColor--\">getObjectColor</a>, <a href=\"../../acm/graphics/GObject.html#getParent--\">getParent</a>, <a href=\"../../acm/graphics/GObject.html#getRightX--\">getRightX</a>, <a href=\"../../acm/graphics/GObject.html#getSize--\">getSize</a>, <a href=\"../../acm/graphics/GObject.html#getWidth--\">getWidth</a>, <a href=\"../../acm/graphics/GObject.html#getX--\">getX</a>, <a href=\"../../acm/graphics/GObject.html#getY--\">getY</a>, <a href=\"../../acm/graphics/GObject.html#intersects-acm.graphics.GObject-\">intersects</a>, <a href=\"../../acm/graphics/GObject.html#isAntiAliasing--\">isAntiAliasing</a>, <a href=\"../../acm/graphics/GObject.html#isVisible--\">isVisible</a>, <a href=\"../../acm/graphics/GObject.html#move-double-double-\">move</a>, <a href=\"../../acm/graphics/GObject.html#movePolar-double-double-\">movePolar</a>, <a href=\"../../acm/graphics/GObject.html#paint-java.awt.Graphics-\">paint</a>, <a href=\"../../acm/graphics/GObject.html#pause-double-\">pause</a>, <a href=\"../../acm/graphics/GObject.html#removeActionListener-java.awt.event.ActionListener-\">removeActionListener</a>, <a href=\"../../acm/graphics/GObject.html#removeMouseListener-java.awt.event.MouseListener-\">removeMouseListener</a>, <a href=\"../../acm/graphics/GObject.html#removeMouseMotionListener-java.awt.event.MouseMotionListener-\">removeMouseMotionListener</a>, <a href=\"../../acm/graphics/GObject.html#repaint--\">repaint</a>, <a href=\"../../acm/graphics/GObject.html#rotate-double-\">rotate</a>, <a href=\"../../acm/graphics/GObject.html#scale-double-\">scale</a>, <a href=\"../../acm/graphics/GObject.html#scale-double-double-\">scale</a>, <a href=\"../../acm/graphics/GObject.html#sendBackward--\">sendBackward</a>, <a href=\"../../acm/graphics/GObject.html#sendForward--\">sendForward</a>, <a href=\"../../acm/graphics/GObject.html#sendToBack--\">sendToBack</a>, <a href=\"../../acm/graphics/GObject.html#sendToFront--\">sendToFront</a>, <a href=\"../../acm/graphics/GObject.html#setAntiAliasing-boolean-\">setAntiAliasing</a>, <a href=\"../../acm/graphics/GObject.html#setBottomY-double-\">setBottomY</a>, <a href=\"../../acm/graphics/GObject.html#setCenterLocation-double-double-\">setCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#setCenterLocation-acm.graphics.GPoint-\">setCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#setCenterX-double-\">setCenterX</a>, <a href=\"../../acm/graphics/GObject.html#setCenterY-double-\">setCenterY</a>, <a href=\"../../acm/graphics/GObject.html#setColor-java.awt.Color-\">setColor</a>, <a href=\"../../acm/graphics/GObject.html#setLineWidth-double-\">setLineWidth</a>, <a href=\"../../acm/graphics/GObject.html#setLocation-acm.graphics.GPoint-\">setLocation</a>, <a href=\"../../acm/graphics/GObject.html#setParent-acm.graphics.GContainer-\">setParent</a>, <a href=\"../../acm/graphics/GObject.html#setRightX-double-\">setRightX</a>, <a href=\"../../acm/graphics/GObject.html#setVisible-boolean-\">setVisible</a>, <a href=\"../../acm/graphics/GObject.html#setX-double-\">setX</a>, <a href=\"../../acm/graphics/GObject.html#setY-double-\">setY</a>, <a href=\"../../acm/graphics/GObject.html#start--\">start</a>, <a href=\"../../acm/graphics/GObject.html#start-java.lang.String:A-\">start</a>, <a href=\"../../acm/graphics/GObject.html#toString--\">toString</a>, <a href=\"../../acm/graphics/GObject.html#updateEnabledList--\">updateEnabledList</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Iterable\">\n<!--   -->\n</a>\n<h3>Methods inherited from interface&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true#forEach-java.util.function.Consumer-\" title=\"class or interface in java.lang\">forEach</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true#spliterator--\" title=\"class or interface in java.lang\">spliterator</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GLineGroup--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GLineGroup</h4>\n<pre>public&nbsp;GLineGroup()</pre>\n<div class=\"block\">Creates a new line group that does not contain any points.</div>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"add-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>public&nbsp;void&nbsp;add(double&nbsp;x,\n                double&nbsp;y)</pre>\n<div class=\"block\">Adds a point with the given coordinates to this line group.</div>\n</li>\n</ul>\n<a name=\"add-acm.graphics.GPoint-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>public&nbsp;void&nbsp;add(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;point)</pre>\n<div class=\"block\">Adds the given point to this line group.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>point</code> - the point to add</dd>\n</dl>\n</li>\n</ul>\n<a name=\"clear--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clear</h4>\n<pre>public&nbsp;void&nbsp;clear()</pre>\n<div class=\"block\">Removes all points from this line group.</div>\n</li>\n</ul>\n<a name=\"contains-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>contains</h4>\n<pre>public&nbsp;boolean&nbsp;contains(double&nbsp;x,\n                        double&nbsp;y)</pre>\n<div class=\"block\">Returns true if any of the line segments in this line group touch the given point.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#contains-double-double-\">contains</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x</code> - The x-coordinate of the point being tested</dd>\n<dd><code>y</code> - The y-coordinate of the point being tested</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd><code>true</code> if the point (<code>x</code>,&nbsp;<code>y</code>) is inside\n the object, and <code>false</code> otherwise</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getBounds--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getBounds</h4>\n<pre>public&nbsp;<a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a>&nbsp;getBounds()</pre>\n<div class=\"block\">Returns a bounding rectangle that tightly contains this line group.\n The rectangle's min x/y are the minimum x/y values of any point in the line group,\n and the rectangle's max x/y are the maximum x/y values of any point in the line group.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#getBounds--\">getBounds</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The bounding box for this object</dd>\n</dl>\n</li>\n</ul>\n<a name=\"isEmpty--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isEmpty</h4>\n<pre>public&nbsp;boolean&nbsp;isEmpty()</pre>\n<div class=\"block\">Returns true if there are no points in this line group.</div>\n</li>\n</ul>\n<a name=\"iterator--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>iterator</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true\" title=\"class or interface in java.util\">Iterator</a>&lt;<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&gt;&nbsp;iterator()</pre>\n<div class=\"block\">Returns an Iterator for examining the points in this line group.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true#iterator--\" title=\"class or interface in java.lang\">iterator</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"paint2d-java.awt.Graphics2D-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>paint2d</h4>\n<pre>protected&nbsp;void&nbsp;paint2d(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics2D.html?is-external=true\" title=\"class or interface in java.awt\">Graphics2D</a>&nbsp;g)</pre>\n<div class=\"block\">Paints the group of lines on the screen.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#paint2d-java.awt.Graphics2D-\">paint2d</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>g</code> - The graphics context into which the painting is done</dd>\n</dl>\n</li>\n</ul>\n<a name=\"paramString--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>paramString</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString()</pre>\n<div class=\"block\">Returns a string indicating the parameters of this object.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#paramString--\">paramString</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"remove-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>remove</h4>\n<pre>public&nbsp;void&nbsp;remove(double&nbsp;x,\n                   double&nbsp;y)</pre>\n<div class=\"block\">Removes the given point from this line group, if it is part of the line group.</div>\n</li>\n</ul>\n<a name=\"remove-acm.graphics.GPoint-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>remove</h4>\n<pre>public&nbsp;void&nbsp;remove(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;point)</pre>\n<div class=\"block\">Removes the given point from this line group, if it is part of the line group.</div>\n</li>\n</ul>\n<a name=\"setLocation-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setLocation</h4>\n<pre>public&nbsp;void&nbsp;setLocation(double&nbsp;x,\n                        double&nbsp;y)</pre>\n<div class=\"block\">Sets the line group's top/left corner to the given x/y pair.\n Initially every line group has a top/left corner at (0, 0), regardless of any points\n that may have been added to it.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#setLocation-double-double-\">setLocation</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x</code> - The new x-coordinate for the object</dd>\n<dd><code>y</code> - The new y-coordinate for the object</dd>\n</dl>\n</li>\n</ul>\n<a name=\"size--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>size</h4>\n<pre>public&nbsp;int&nbsp;size()</pre>\n<div class=\"block\">Returns the number of points that have been added to the line group.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"translate-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>translate</h4>\n<pre>public&nbsp;void&nbsp;translate(double&nbsp;dx,\n                      double&nbsp;dy)</pre>\n<div class=\"block\">Shifts every point in this line group by the given amounts.</div>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/graphics/GLine.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/graphics/GMath.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/graphics/GLineGroup.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GLineGroup.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/graphics/GMath.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>GMath</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GMath\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9,\"i2\":9,\"i3\":9,\"i4\":9,\"i5\":9,\"i6\":9,\"i7\":9,\"i8\":9,\"i9\":9,\"i10\":9,\"i11\":9,\"i12\":9,\"i13\":9,\"i14\":9,\"i15\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/graphics/GLineGroup.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/graphics/GMath.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GMath.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.graphics</div>\n<h2 title=\"Class GMath\" class=\"title\">Class GMath</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.graphics.GMath</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GMath</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n<div class=\"block\">This class defines a variety of static mathematical methods that are useful\n for the <code>acm.graphics</code> package.</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GMath.html#angle-double-double-\">angle</a></span>(double&nbsp;x,\n     double&nbsp;y)</code>\n<div class=\"block\">Returns the angle in degrees from the origin to the point (<code>x</code>\n ,&nbsp;<code>y</code>).</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GMath.html#angle-double-double-double-double-\">angle</a></span>(double&nbsp;x0,\n     double&nbsp;y0,\n     double&nbsp;x1,\n     double&nbsp;y1)</code>\n<div class=\"block\">Computes the angle in degrees formed by a line segment from the point (\n <code>x0</code>,&nbsp;<code>y0</code>) and (<code>x1</code>,&nbsp;\n <code>y1</code>).</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>static double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GMath.html#cosDegrees-double-\">cosDegrees</a></span>(double&nbsp;angle)</code>\n<div class=\"block\">Returns the trigonometric cosine of its argument where <code>angle</code>\n is expressed in degrees.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GMath.html#distance-double-double-\">distance</a></span>(double&nbsp;x,\n        double&nbsp;y)</code>\n<div class=\"block\">Computes the distance between the origin and the point (<code>x</code>\n ,&nbsp;<code>y</code>).</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>static double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GMath.html#distance-double-double-double-double-\">distance</a></span>(double&nbsp;x0,\n        double&nbsp;y0,\n        double&nbsp;x1,\n        double&nbsp;y1)</code>\n<div class=\"block\">Computes the distance between the points (<code>x0</code>,&nbsp;\n <code>y0</code>) and (<code>x1</code>,&nbsp;<code>y1</code>).</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GMath.html#isBoolean-java.lang.String-\">isBoolean</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>\n<div class=\"block\">Returns true if the given string could be interpreted as a boolean, such as \"true\" or \"false\".</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GMath.html#isChar-java.lang.String-\">isChar</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>\n<div class=\"block\">Returns true if the given string could be interpreted as a char, such as \"Q\" or \"\\n\".</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GMath.html#isDouble-java.lang.String-\">isDouble</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>\n<div class=\"block\">Returns true if the given string could be interpreted as a double, such as \"123.45\".</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GMath.html#isInteger-java.lang.String-\">isInteger</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>\n<div class=\"block\">Returns true if the given string could be interpreted as an integer, such as \"12345\".</div>\n</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GMath.html#isLong-java.lang.String-\">isLong</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>\n<div class=\"block\">Returns true if the given string could be interpreted as an long, such as \"12345\".</div>\n</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GMath.html#round-double-\">round</a></span>(double&nbsp;x)</code>\n<div class=\"block\">Rounds a <code>double</code> value to the nearest <code>int</code>.</div>\n</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GMath.html#round-double-int-\">round</a></span>(double&nbsp;x,\n     int&nbsp;digitsAfterDecimal)</code>\n<div class=\"block\">Rounds a <code>double</code> value to the given number of decimal places.</div>\n</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>static double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GMath.html#sinDegrees-double-\">sinDegrees</a></span>(double&nbsp;angle)</code>\n<div class=\"block\">Returns the trigonometric sine of its argument where <code>angle</code>\n is expressed in degrees.</div>\n</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GMath.html#tanDegrees-double-\">tanDegrees</a></span>(double&nbsp;angle)</code>\n<div class=\"block\">Returns the trigonometric tangent of its argument where\n <code>angle</code> is expressed in degrees.</div>\n</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>static double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GMath.html#toDegrees-double-\">toDegrees</a></span>(double&nbsp;radians)</code>\n<div class=\"block\">Converts an angle from radians to degrees.</div>\n</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GMath.html#toRadians-double-\">toRadians</a></span>(double&nbsp;degrees)</code>\n<div class=\"block\">Converts an angle from degrees to radians.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"isBoolean-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isBoolean</h4>\n<pre>public static&nbsp;boolean&nbsp;isBoolean(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n<div class=\"block\">Returns true if the given string could be interpreted as a boolean, such as \"true\" or \"false\".</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>s</code> - a string</dd>\n</dl>\n</li>\n</ul>\n<a name=\"isChar-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isChar</h4>\n<pre>public static&nbsp;boolean&nbsp;isChar(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n<div class=\"block\">Returns true if the given string could be interpreted as a char, such as \"Q\" or \"\\n\".</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>s</code> - a string</dd>\n</dl>\n</li>\n</ul>\n<a name=\"isDouble-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isDouble</h4>\n<pre>public static&nbsp;boolean&nbsp;isDouble(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n<div class=\"block\">Returns true if the given string could be interpreted as a double, such as \"123.45\".</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>s</code> - a string</dd>\n</dl>\n</li>\n</ul>\n<a name=\"isInteger-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isInteger</h4>\n<pre>public static&nbsp;boolean&nbsp;isInteger(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n<div class=\"block\">Returns true if the given string could be interpreted as an integer, such as \"12345\".</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>s</code> - a string</dd>\n</dl>\n</li>\n</ul>\n<a name=\"isLong-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isLong</h4>\n<pre>public static&nbsp;boolean&nbsp;isLong(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n<div class=\"block\">Returns true if the given string could be interpreted as an long, such as \"12345\".</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>s</code> - a string</dd>\n</dl>\n</li>\n</ul>\n<a name=\"round-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>round</h4>\n<pre>public static&nbsp;int&nbsp;round(double&nbsp;x)</pre>\n<div class=\"block\">Rounds a <code>double</code> value to the nearest <code>int</code>.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x</code> - A <code>double</code> value</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The nearest <code>int</code> value</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int n = round(x);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"round-double-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>round</h4>\n<pre>public static&nbsp;double&nbsp;round(double&nbsp;x,\n                           int&nbsp;digitsAfterDecimal)</pre>\n<div class=\"block\">Rounds a <code>double</code> value to the given number of decimal places.\n For example, round(3.141592, 2) returns 3.14.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x</code> - A <code>double</code> value</dd>\n<dd><code>digitsAfterDecimal</code> - number of digits after decimal to keep</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The nearest <code>int</code> value</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double n = round(x, digits);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"sinDegrees-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>sinDegrees</h4>\n<pre>public static&nbsp;double&nbsp;sinDegrees(double&nbsp;angle)</pre>\n<div class=\"block\">Returns the trigonometric sine of its argument where <code>angle</code>\n is expressed in degrees.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>angle</code> - An angle measured in degrees</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The trigonometric sine of the angle</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double s = sinDegrees(angle);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"cosDegrees-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>cosDegrees</h4>\n<pre>public static&nbsp;double&nbsp;cosDegrees(double&nbsp;angle)</pre>\n<div class=\"block\">Returns the trigonometric cosine of its argument where <code>angle</code>\n is expressed in degrees.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>angle</code> - An angle measured in degrees</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The trigonometric cosine of the angle</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double c = cosDegrees(angle);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"tanDegrees-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>tanDegrees</h4>\n<pre>public static&nbsp;double&nbsp;tanDegrees(double&nbsp;angle)</pre>\n<div class=\"block\">Returns the trigonometric tangent of its argument where\n <code>angle</code> is expressed in degrees.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>angle</code> - An angle measured in degrees</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The trigonometric tangent of the angle</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double t = tanDegrees(angle);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"toDegrees-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>toDegrees</h4>\n<pre>public static&nbsp;double&nbsp;toDegrees(double&nbsp;radians)</pre>\n<div class=\"block\">Converts an angle from radians to degrees. This method is defined in the\n <code>Math</code> class, but was added only in JDK1.2, which is not\n supported in all browsers.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>radians</code> - An angle measured in radians</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The equivalent angle in degrees</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double degrees = toDegrees(radians);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"toRadians-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>toRadians</h4>\n<pre>public static&nbsp;double&nbsp;toRadians(double&nbsp;degrees)</pre>\n<div class=\"block\">Converts an angle from degrees to radians. This method is defined in the\n <code>Math</code> class, but was added only in JDK1.2, which is not\n supported in all browsers.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>degrees</code> - An angle measured in degrees</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The equivalent angle in radians</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double radians = toRadians(degrees);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"distance-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>distance</h4>\n<pre>public static&nbsp;double&nbsp;distance(double&nbsp;x,\n                              double&nbsp;y)</pre>\n<div class=\"block\">Computes the distance between the origin and the point (<code>x</code>\n ,&nbsp;<code>y</code>).</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x</code> - The x-coordinate of the point</dd>\n<dd><code>y</code> - The y-coordinate of the point</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The distance from the origin to the point (<code>x</code>,&nbsp;\n         <code>y</code>)</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double d = distance(x, y);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"distance-double-double-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>distance</h4>\n<pre>public static&nbsp;double&nbsp;distance(double&nbsp;x0,\n                              double&nbsp;y0,\n                              double&nbsp;x1,\n                              double&nbsp;y1)</pre>\n<div class=\"block\">Computes the distance between the points (<code>x0</code>,&nbsp;\n <code>y0</code>) and (<code>x1</code>,&nbsp;<code>y1</code>).</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x0</code> - The x-coordinate of one point</dd>\n<dd><code>y0</code> - The y-coordinate of that point</dd>\n<dd><code>x1</code> - The x-coordinate of the other point</dd>\n<dd><code>y1</code> - The y-coordinate of that point</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The distance between the points (<code>x0</code>,&nbsp;\n         <code>y0</code>) and (<code>x1</code>,&nbsp;<code>y1</code>)</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double d = distance(x0, y0, x1, y1);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"angle-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>angle</h4>\n<pre>public static&nbsp;double&nbsp;angle(double&nbsp;x,\n                           double&nbsp;y)</pre>\n<div class=\"block\">Returns the angle in degrees from the origin to the point (<code>x</code>\n ,&nbsp;<code>y</code>). This method is easier to use than\n <code>atan2</code> because it specifies the displacements in the usual\n x/y order and because it takes care of the fact that the Java coordinate\n system is flipped. The point (0, 0) is arbitrarily defined to be at angle\n 0.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x</code> - The x-coordinate of the point</dd>\n<dd><code>y</code> - The y-coordinate of the point</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The angle from the origin to the point (<code>x</code>,&nbsp;\n         <code>y</code>) measured in degrees counterclockwise from the +x\n         axis</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double theta = angle(x, y);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"angle-double-double-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>angle</h4>\n<pre>public static&nbsp;double&nbsp;angle(double&nbsp;x0,\n                           double&nbsp;y0,\n                           double&nbsp;x1,\n                           double&nbsp;y1)</pre>\n<div class=\"block\">Computes the angle in degrees formed by a line segment from the point (\n <code>x0</code>,&nbsp;<code>y0</code>) and (<code>x1</code>,&nbsp;\n <code>y1</code>).</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x0</code> - The x-coordinate of one point</dd>\n<dd><code>y0</code> - The y-coordinate of that point</dd>\n<dd><code>x1</code> - The x-coordinate of the other point</dd>\n<dd><code>y1</code> - The y-coordinate of that point</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The angle formed by the line segment from (<code>x0</code>,&nbsp;\n         <code>y0</code>) to (<code>x1</code>,&nbsp;<code>y1</code>)</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double theta = angle(x0, y0, x1, y1);</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/graphics/GLineGroup.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/graphics/GMath.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GMath.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/graphics/GObject.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>GObject</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GObject\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":9,\"i6\":9,\"i7\":9,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":6,\"i16\":10,\"i17\":10,\"i18\":10,\"i19\":10,\"i20\":10,\"i21\":10,\"i22\":10,\"i23\":10,\"i24\":10,\"i25\":10,\"i26\":10,\"i27\":10,\"i28\":10,\"i29\":10,\"i30\":10,\"i31\":10,\"i32\":10,\"i33\":9,\"i34\":10,\"i35\":10,\"i36\":10,\"i37\":10,\"i38\":6,\"i39\":10,\"i40\":10,\"i41\":10,\"i42\":10,\"i43\":10,\"i44\":10,\"i45\":10,\"i46\":10,\"i47\":10,\"i48\":10,\"i49\":10,\"i50\":10,\"i51\":10,\"i52\":9,\"i53\":10,\"i54\":10,\"i55\":10,\"i56\":10,\"i57\":10,\"i58\":10,\"i59\":10,\"i60\":10,\"i61\":10,\"i62\":10,\"i63\":10,\"i64\":10,\"i65\":10,\"i66\":10,\"i67\":10,\"i68\":10,\"i69\":10,\"i70\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],4:[\"t3\",\"Abstract Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/graphics/GMath.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/graphics/GOval.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/graphics/GObject.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GObject.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.graphics</div>\n<h2 title=\"Class GObject\" class=\"title\">Class GObject</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.graphics.GObject</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"../../acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true\" title=\"class or interface in java.lang\">Cloneable</a></dd>\n</dl>\n<dl>\n<dt>Direct Known Subclasses:</dt>\n<dd><a href=\"../../acm/graphics/GCompound.html\" title=\"class in acm.graphics\">GCompound</a>, <a href=\"../../acm/graphics/GImage.html\" title=\"class in acm.graphics\">GImage</a>, <a href=\"../../acm/graphics/GLabel.html\" title=\"class in acm.graphics\">GLabel</a>, <a href=\"../../acm/graphics/GLine.html\" title=\"class in acm.graphics\">GLine</a>, <a href=\"../../acm/graphics/GLineGroup.html\" title=\"class in acm.graphics\">GLineGroup</a>, <a href=\"../../acm/graphics/GOval.html\" title=\"class in acm.graphics\">GOval</a>, acm.graphics.GRect</dd>\n</dl>\n<hr>\n<br>\n<pre>public abstract class <span class=\"typeNameLabel\">GObject</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>\nimplements <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true\" title=\"class or interface in java.lang\">Cloneable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"../../acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a></pre>\n<div class=\"block\">This class is the common superclass of all graphical objects that can\n be displayed on a <a href=\"GCanvas.html\"><code>GCanvas</code></a>.\n Because it is an abstract class, you are not allowed to construct an\n object whose class is <code>GObject</code> directly.  What you do\n instead is construct one of the concrete subclasses like\n <a href=\"GRect.html\"><code>GRect</code></a> or\n <a href=\"GLine.html\"><code>GLine</code></a>.\n The purpose of this class definition is to define methods that apply\n to all graphical objects regardless of their specific class.\n <p>\n <p>The <code>GObject</code> class implements the <code>Serializable</code>\n interface by saving all of the internal state of the object.  The parent,\n however, is saved only if the parent is a <code>GCompound</code>.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#acm.graphics.GObject\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier</th>\n<th class=\"colLast\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected </code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#GObject--\">GObject</a></span>()</code>\n<div class=\"block\">Constructs a new <code>GObject</code> and initializes its state.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t3\" class=\"tableTab\"><span><a href=\"javascript:show(4);\">Abstract Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#addActionListener-java.awt.event.ActionListener-\">addActionListener</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener)</code>\n<div class=\"block\">Adds an action listener to this graphical object.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#addMouseListener-java.awt.event.MouseListener-\">addMouseListener</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>&nbsp;listener)</code>\n<div class=\"block\">Adds a mouse listener to this graphical object.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#addMouseMotionListener-java.awt.event.MouseMotionListener-\">addMouseMotionListener</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a>&nbsp;listener)</code>\n<div class=\"block\">Adds a mouse motion listener to this graphical object.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#areMouseListenersEnabled--\">areMouseListenersEnabled</a></span>()</code>\n<div class=\"block\">Returns <code>true</code> if mouse listeners have ever been assigned to\n this object.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#clone--\">clone</a></span>()</code>\n<div class=\"block\">Returns a deep copy of this object.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#colorName-java.awt.Color-\">colorName</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>\n<div class=\"block\">Translates a color to a string representation.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#colorName-int-\">colorName</a></span>(int&nbsp;colorRGB)</code>\n<div class=\"block\">Translates a color RGB int to a string representation such as \"0xFF00FF\" or \"YELLOW\".</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#colorNameFriendly-int-\">colorNameFriendly</a></span>(int&nbsp;colorRGB)</code>\n<div class=\"block\">Translates a color RGB int to a string representation such as \"#ff00ff\" or \"dark gray\".</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#contains-double-double-\">contains</a></span>(double&nbsp;x,\n        double&nbsp;y)</code>\n<div class=\"block\">Checks to see whether a point is inside the object.</div>\n</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#contains-acm.graphics.GPoint-\">contains</a></span>(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</code>\n<div class=\"block\">Checks to see whether a point is inside the object.</div>\n</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics2D.html?is-external=true\" title=\"class or interface in java.awt\">Graphics2D</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#createTransformedGraphics-java.awt.Graphics-\">createTransformedGraphics</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g)</code>\n<div class=\"block\">Creates a new Graphics2D that includes any transformations done to this object,\n such as scaling and rotation.</div>\n</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#fireActionEvent-java.awt.event.ActionEvent-\">fireActionEvent</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;e)</code>\n<div class=\"block\">Triggers an action event for this graphical object.</div>\n</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#fireActionEvent-java.lang.String-\">fireActionEvent</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actionCommand)</code>\n<div class=\"block\">Triggers an action event for this graphical object with the specified\n action command.</div>\n</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#fireMouseListeners-java.awt.event.MouseEvent-\">fireMouseListeners</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</code>\n<div class=\"block\">Sends the event to the appropriate listener.</div>\n</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#getBottomY--\">getBottomY</a></span>()</code>\n<div class=\"block\">Returns the bottom y-coordinate of the object.</div>\n</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>abstract <a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#getBounds--\">getBounds</a></span>()</code>\n<div class=\"block\">Returns the bounding box of this object, which is defined to be the\n smallest rectangle that covers everything drawn by the figure.</div>\n</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#getCenterLocation--\">getCenterLocation</a></span>()</code>\n<div class=\"block\">Returns the central x/y-coordinates of this object.</div>\n</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#getCenterX--\">getCenterX</a></span>()</code>\n<div class=\"block\">Returns the central x-coordinate of this object.</div>\n</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#getCenterY--\">getCenterY</a></span>()</code>\n<div class=\"block\">Returns the central y-coordinate of this object.</div>\n</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#getColor--\">getColor</a></span>()</code>\n<div class=\"block\">Returns the color used to display this object.</div>\n</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#getComponent--\">getComponent</a></span>()</code>\n<div class=\"block\">Returns the component in which this object is installed, or <code>null</code>\n if none exists.</div>\n</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#getHeight--\">getHeight</a></span>()</code>\n<div class=\"block\">Returns the height of this object, which is defined to be\n the height of the bounding box.</div>\n</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#getLineWidth--\">getLineWidth</a></span>()</code>\n<div class=\"block\">Returns the thickness of lines drawn on this shape.</div>\n</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#getLocation--\">getLocation</a></span>()</code>\n<div class=\"block\">Returns the location of this object as a <code>GPoint</code>.</div>\n</td>\n</tr>\n<tr id=\"i24\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/geom/AffineTransform.html?is-external=true\" title=\"class or interface in java.awt.geom\">AffineTransform</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#getMatrix--\">getMatrix</a></span>()</code>\n<div class=\"block\">Returns the transformation matrix for this object, including any scaling and rotation done to it.</div>\n</td>\n</tr>\n<tr id=\"i25\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#getObjectColor--\">getObjectColor</a></span>()</code>\n<div class=\"block\">This method returns the color set for this specific object, which may\n be <code>null</code>.</div>\n</td>\n</tr>\n<tr id=\"i26\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#getParent--\">getParent</a></span>()</code>\n<div class=\"block\">Returns the parent of this object, which is the canvas or compound object in\n which it is enclosed.</div>\n</td>\n</tr>\n<tr id=\"i27\" class=\"rowColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#getRightX--\">getRightX</a></span>()</code>\n<div class=\"block\">Returns the rightmost x-coordinate of the object.</div>\n</td>\n</tr>\n<tr id=\"i28\" class=\"altColor\">\n<td class=\"colFirst\"><code>acm.graphics.GDimension</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#getSize--\">getSize</a></span>()</code>\n<div class=\"block\">Returns the size of the bounding box for this object.</div>\n</td>\n</tr>\n<tr id=\"i29\" class=\"rowColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#getWidth--\">getWidth</a></span>()</code>\n<div class=\"block\">Returns the width of this object, which is defined to be\n the width of the bounding box.</div>\n</td>\n</tr>\n<tr id=\"i30\" class=\"altColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#getX--\">getX</a></span>()</code>\n<div class=\"block\">Returns the leftmost x-coordinate of the object.</div>\n</td>\n</tr>\n<tr id=\"i31\" class=\"rowColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#getY--\">getY</a></span>()</code>\n<div class=\"block\">Returns the topmost y-coordinate of the object.</div>\n</td>\n</tr>\n<tr id=\"i32\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#intersects-acm.graphics.GObject-\">intersects</a></span>(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;obj)</code>\n<div class=\"block\">Returns true if this object touches the given other object.</div>\n</td>\n</tr>\n<tr id=\"i33\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#isAntiAliasing--\">isAntiAliasing</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i34\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#isVisible--\">isVisible</a></span>()</code>\n<div class=\"block\">Checks to see whether this object is visible.</div>\n</td>\n</tr>\n<tr id=\"i35\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#move-double-double-\">move</a></span>(double&nbsp;dx,\n    double&nbsp;dy)</code>\n<div class=\"block\">Moves the object on the screen using the displacements <code>dx</code> and <code>dy</code>.</div>\n</td>\n</tr>\n<tr id=\"i36\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#movePolar-double-double-\">movePolar</a></span>(double&nbsp;r,\n         double&nbsp;theta)</code>\n<div class=\"block\">Moves the object using displacements given in polar coordinates.</div>\n</td>\n</tr>\n<tr id=\"i37\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#paint-java.awt.Graphics-\">paint</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g)</code>\n<div class=\"block\">All subclasses of <code>GObject</code> must define a <code>paint</code>\n method which allows the object to draw itself on the <code>Graphics</code>\n context passed in as the parameter <code>g</code>.</div>\n</td>\n</tr>\n<tr id=\"i38\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected abstract void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#paint2d-java.awt.Graphics2D-\">paint2d</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics2D.html?is-external=true\" title=\"class or interface in java.awt\">Graphics2D</a>&nbsp;g)</code>\n<div class=\"block\">All subclasses of <code>GObject</code> must define a <code>paint2d</code>\n method which allows the object to draw itself on the <code>Graphics</code>\n context passed in as the parameter <code>g</code>.</div>\n</td>\n</tr>\n<tr id=\"i39\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#paramString--\">paramString</a></span>()</code>\n<div class=\"block\">Returns a string indicating the parameters of this object.</div>\n</td>\n</tr>\n<tr id=\"i40\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#pause-double-\">pause</a></span>(double&nbsp;milliseconds)</code>\n<div class=\"block\">Delays the calling thread for the specified time, which is expressed in\n milliseconds.</div>\n</td>\n</tr>\n<tr id=\"i41\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#removeActionListener-java.awt.event.ActionListener-\">removeActionListener</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener)</code>\n<div class=\"block\">Removes an action listener from this graphical object.</div>\n</td>\n</tr>\n<tr id=\"i42\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#removeMouseListener-java.awt.event.MouseListener-\">removeMouseListener</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>&nbsp;listener)</code>\n<div class=\"block\">Removes a mouse listener from this graphical object.</div>\n</td>\n</tr>\n<tr id=\"i43\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#removeMouseMotionListener-java.awt.event.MouseMotionListener-\">removeMouseMotionListener</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a>&nbsp;listener)</code>\n<div class=\"block\">Removes a mouse motion listener from this graphical object.</div>\n</td>\n</tr>\n<tr id=\"i44\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#repaint--\">repaint</a></span>()</code>\n<div class=\"block\">Signals that the object needs to be repainted.</div>\n</td>\n</tr>\n<tr id=\"i45\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#rotate-double-\">rotate</a></span>(double&nbsp;degrees)</code>\n<div class=\"block\">Rotates this object by the given degrees counter-clockwise.</div>\n</td>\n</tr>\n<tr id=\"i46\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#scale-double-\">scale</a></span>(double&nbsp;sf)</code>\n<div class=\"block\">Scales the size of this object by the given factor in the x and y dimensions.</div>\n</td>\n</tr>\n<tr id=\"i47\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#scale-double-double-\">scale</a></span>(double&nbsp;sx,\n     double&nbsp;sy)</code>\n<div class=\"block\">Scales the size of this object by the given factors in the x and y dimensions.</div>\n</td>\n</tr>\n<tr id=\"i48\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#sendBackward--\">sendBackward</a></span>()</code>\n<div class=\"block\">Moves this object one step toward the back in the <i>z</i> dimension.</div>\n</td>\n</tr>\n<tr id=\"i49\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#sendForward--\">sendForward</a></span>()</code>\n<div class=\"block\">Moves this object one step toward the front in the <i>z</i> dimension.</div>\n</td>\n</tr>\n<tr id=\"i50\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#sendToBack--\">sendToBack</a></span>()</code>\n<div class=\"block\">Moves this object to the back of the display in the <i>z</i> dimension.</div>\n</td>\n</tr>\n<tr id=\"i51\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#sendToFront--\">sendToFront</a></span>()</code>\n<div class=\"block\">Moves this object to the front of the display in the <i>z</i> dimension.</div>\n</td>\n</tr>\n<tr id=\"i52\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#setAntiAliasing-boolean-\">setAntiAliasing</a></span>(boolean&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i53\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#setBottomY-double-\">setBottomY</a></span>(double&nbsp;bottomY)</code>\n<div class=\"block\">Sets the bottom y-coordinate of this object to the given y value.</div>\n</td>\n</tr>\n<tr id=\"i54\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#setCenterLocation-double-double-\">setCenterLocation</a></span>(double&nbsp;centerX,\n                 double&nbsp;centerY)</code>\n<div class=\"block\">Sets the central x/y-coordinates of this object to the given x/y values.</div>\n</td>\n</tr>\n<tr id=\"i55\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#setCenterLocation-acm.graphics.GPoint-\">setCenterLocation</a></span>(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</code>\n<div class=\"block\">Sets the central x/y-coordinates of this object to the given x/y values.</div>\n</td>\n</tr>\n<tr id=\"i56\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#setCenterX-double-\">setCenterX</a></span>(double&nbsp;centerX)</code>\n<div class=\"block\">Sets the central x-coordinate of this object to the given x value.</div>\n</td>\n</tr>\n<tr id=\"i57\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#setCenterY-double-\">setCenterY</a></span>(double&nbsp;centerY)</code>\n<div class=\"block\">Sets the central y-coordinate of this object to the given y value.</div>\n</td>\n</tr>\n<tr id=\"i58\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#setColor-java.awt.Color-\">setColor</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>\n<div class=\"block\">Sets the color used to display this object.</div>\n</td>\n</tr>\n<tr id=\"i59\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#setLineWidth-double-\">setLineWidth</a></span>(double&nbsp;lineWidth)</code>\n<div class=\"block\">Sets the thickness of lines drawn on this shape to the given number of pixels.</div>\n</td>\n</tr>\n<tr id=\"i60\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#setLocation-double-double-\">setLocation</a></span>(double&nbsp;x,\n           double&nbsp;y)</code>\n<div class=\"block\">Sets the location of this object to the point (<code>x</code>, <code>y</code>).</div>\n</td>\n</tr>\n<tr id=\"i61\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#setLocation-acm.graphics.GPoint-\">setLocation</a></span>(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</code>\n<div class=\"block\">Sets the location of this object to the specified point.</div>\n</td>\n</tr>\n<tr id=\"i62\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#setParent-acm.graphics.GContainer-\">setParent</a></span>(<a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a>&nbsp;parent)</code>\n<div class=\"block\">Sets the parent of this object, which should be called only by the\n <code>GContainer</code> in which this is installed.</div>\n</td>\n</tr>\n<tr id=\"i63\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#setRightX-double-\">setRightX</a></span>(double&nbsp;rightX)</code>\n<div class=\"block\">Sets the rightmost x-coordinate of this object to the given x value.</div>\n</td>\n</tr>\n<tr id=\"i64\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#setVisible-boolean-\">setVisible</a></span>(boolean&nbsp;visible)</code>\n<div class=\"block\">Sets whether this object is visible.</div>\n</td>\n</tr>\n<tr id=\"i65\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#setX-double-\">setX</a></span>(double&nbsp;x)</code>\n<div class=\"block\">Sets the leftmost x-coordinate of this object to the given x value.</div>\n</td>\n</tr>\n<tr id=\"i66\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#setY-double-\">setY</a></span>(double&nbsp;y)</code>\n<div class=\"block\">Sets the topmost y-coordinate of this object to the given y value.</div>\n</td>\n</tr>\n<tr id=\"i67\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#start--\">start</a></span>()</code>\n<div class=\"block\">Starts a <code>GraphicsProgram</code> containing this object.</div>\n</td>\n</tr>\n<tr id=\"i68\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#start-java.lang.String:A-\">start</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</code>\n<div class=\"block\">Starts a <code>GraphicsProgram</code> containing this object, passing\n it the specified arguments.</div>\n</td>\n</tr>\n<tr id=\"i69\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#toString--\">toString</a></span>()</code>\n<div class=\"block\">Overrides the <code>toString</code> method in <code>Object</code> to produce\n more readable output.</div>\n</td>\n</tr>\n<tr id=\"i70\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GObject.html#updateEnabledList--\">updateEnabledList</a></span>()</code>\n<div class=\"block\">Tells the parent to update its list of enabled objects.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GObject--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GObject</h4>\n<pre>protected&nbsp;GObject()</pre>\n<div class=\"block\">Constructs a new <code>GObject</code> and initializes its state.  This\n constructor is never called explicitly, but is instead invoked by the\n constructors of its subclasses.</div>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"isAntiAliasing--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isAntiAliasing</h4>\n<pre>public static&nbsp;boolean&nbsp;isAntiAliasing()</pre>\n</li>\n</ul>\n<a name=\"setAntiAliasing-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setAntiAliasing</h4>\n<pre>public static&nbsp;void&nbsp;setAntiAliasing(boolean&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"addActionListener-java.awt.event.ActionListener-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addActionListener</h4>\n<pre>public&nbsp;void&nbsp;addActionListener(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener)</pre>\n<div class=\"block\">Adds an action listener to this graphical object.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>listener</code> - Any object that implements the <code>ActionListener</code> interface</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.addActionListener(listener);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"addMouseListener-java.awt.event.MouseListener-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addMouseListener</h4>\n<pre>public&nbsp;void&nbsp;addMouseListener(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>&nbsp;listener)</pre>\n<div class=\"block\">Adds a mouse listener to this graphical object.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>listener</code> - Any object that implements the <code>MouseListener</code> interface</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.addMouseListener(listener);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"addMouseMotionListener-java.awt.event.MouseMotionListener-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addMouseMotionListener</h4>\n<pre>public&nbsp;void&nbsp;addMouseMotionListener(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a>&nbsp;listener)</pre>\n<div class=\"block\">Adds a mouse motion listener to this graphical object.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>listener</code> - Any object that implements the <code>MouseMotionListener</code> interface</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.addMouseMotionListener(listener);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"areMouseListenersEnabled--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>areMouseListenersEnabled</h4>\n<pre>protected&nbsp;boolean&nbsp;areMouseListenersEnabled()</pre>\n<div class=\"block\">Returns <code>true</code> if mouse listeners have ever been assigned to\n this object.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd><code>true</code> if mouse listeners have been enabled in this object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>if (gobj.areMouseListenersEnabled()) . . .</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"clone--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clone</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;clone()</pre>\n<div class=\"block\">Returns a deep copy of this object.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>deep copy</dd>\n</dl>\n</li>\n</ul>\n<a name=\"colorName-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>colorName</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;colorName(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n<div class=\"block\">Translates a color to a string representation.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"colorName-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>colorName</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;colorName(int&nbsp;colorRGB)</pre>\n<div class=\"block\">Translates a color RGB int to a string representation such as \"0xFF00FF\" or \"YELLOW\".</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"colorNameFriendly-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>colorNameFriendly</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;colorNameFriendly(int&nbsp;colorRGB)</pre>\n<div class=\"block\">Translates a color RGB int to a string representation such as \"#ff00ff\" or \"dark gray\".</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"contains-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>contains</h4>\n<pre>public&nbsp;boolean&nbsp;contains(double&nbsp;x,\n                        double&nbsp;y)</pre>\n<div class=\"block\">Checks to see whether a point is inside the object.  By default, this\n method simply checks to see if the point is inside the bounding box.\n Many subclasses will need to override this to check whether the point\n is contained in the shape.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x</code> - The x-coordinate of the point being tested</dd>\n<dd><code>y</code> - The y-coordinate of the point being tested</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd><code>true</code> if the point (<code>x</code>,&nbsp;<code>y</code>) is inside\n the object, and <code>false</code> otherwise</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>if (gobj.contains(x, y)) . . .</dd>\n</dl>\n</li>\n</ul>\n<a name=\"contains-acm.graphics.GPoint-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>contains</h4>\n<pre>public final&nbsp;boolean&nbsp;contains(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</pre>\n<div class=\"block\">Checks to see whether a point is inside the object.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>pt</code> - The point being tested</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd><code>true</code> if the point is inside the object, and <code>false</code> otherwise</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>if (gobj.contains(pt)) . . .</dd>\n</dl>\n</li>\n</ul>\n<a name=\"createTransformedGraphics-java.awt.Graphics-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createTransformedGraphics</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics2D.html?is-external=true\" title=\"class or interface in java.awt\">Graphics2D</a>&nbsp;createTransformedGraphics(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g)</pre>\n<div class=\"block\">Creates a new Graphics2D that includes any transformations done to this object,\n such as scaling and rotation.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>g</code> - initial graphics context</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>tranformed graphics object</dd>\n</dl>\n</li>\n</ul>\n<a name=\"fireActionEvent-java.awt.event.ActionEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fireActionEvent</h4>\n<pre>public&nbsp;void&nbsp;fireActionEvent(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Triggers an action event for this graphical object.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>e</code> - The <code>ActionEvent</code> to fire</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.fireActionEvent(e);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"fireActionEvent-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fireActionEvent</h4>\n<pre>public&nbsp;void&nbsp;fireActionEvent(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actionCommand)</pre>\n<div class=\"block\">Triggers an action event for this graphical object with the specified\n action command.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>actionCommand</code> - The action command to include in the event</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.fireActionEvent(actionCommand);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"fireMouseListeners-java.awt.event.MouseEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fireMouseListeners</h4>\n<pre>protected&nbsp;void&nbsp;fireMouseListeners(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Sends the event to the appropriate listener.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>e</code> - The <code>MouseEvent</code> that triggered this response</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.fireMouseListeners(e);</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"getBottomY--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getBottomY</h4>\n<pre>public&nbsp;double&nbsp;getBottomY()</pre>\n<div class=\"block\">Returns the bottom y-coordinate of the object.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The bottom y-coordinate of the object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double y = gobj.getBottomY();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getBounds--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getBounds</h4>\n<pre>public abstract&nbsp;<a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a>&nbsp;getBounds()</pre>\n<div class=\"block\">Returns the bounding box of this object, which is defined to be the\n smallest rectangle that covers everything drawn by the figure.  The\n coordinates of this rectangle do not necessarily match the location\n returned by <a href=\"#getLocation()\"><code>getLocation</code></a>.\n Given a <a href=\"GLabel.html\"><code>GLabel</code></a> object, for\n example, <a href=\"#getLocation()\"><code>getLocation</code></a>\n returns the coordinates of the point on the baseline at which the\n string begins; <code>getBounds</code>, by contrast, returns a\n rectangle that covers the entire window area occupied by the string.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The bounding box for this object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GRectangle bounds = gobj.getBounds();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getCenterLocation--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getCenterLocation</h4>\n<pre>public final&nbsp;<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;getCenterLocation()</pre>\n<div class=\"block\">Returns the central x/y-coordinates of this object.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GPoint pt = gobj.getCenterLocation();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getCenterX--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getCenterX</h4>\n<pre>public&nbsp;double&nbsp;getCenterX()</pre>\n<div class=\"block\">Returns the central x-coordinate of this object.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double centerX = gobj.getCenterX();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getCenterY--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getCenterY</h4>\n<pre>public&nbsp;double&nbsp;getCenterY()</pre>\n<div class=\"block\">Returns the central y-coordinate of this object.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double centerY = gobj.getCenterY();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getColor--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getColor</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;getColor()</pre>\n<div class=\"block\">Returns the color used to display this object.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The color used to display this object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>Color color = gobj.getColor();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getComponent--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getComponent</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;getComponent()</pre>\n<div class=\"block\">Returns the component in which this object is installed, or <code>null</code>\n if none exists.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The component in which this object is installed, or <code>null</code> if none exists</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>Component comp = gobj.getComponent();</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"getHeight--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getHeight</h4>\n<pre>public&nbsp;double&nbsp;getHeight()</pre>\n<div class=\"block\">Returns the height of this object, which is defined to be\n the height of the bounding box.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The height of this object on the screen</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double height = gobj.getHeight();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getLineWidth--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getLineWidth</h4>\n<pre>public&nbsp;double&nbsp;getLineWidth()</pre>\n<div class=\"block\">Returns the thickness of lines drawn on this shape.\n This will be 1.0 unless changed by setLineWidth.</div>\n</li>\n</ul>\n<a name=\"getLocation--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getLocation</h4>\n<pre>public&nbsp;<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;getLocation()</pre>\n<div class=\"block\">Returns the location of this object as a <code>GPoint</code>.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The location of this object as a <code>GPoint</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GPoint pt = gobj.getLocation();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getMatrix--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getMatrix</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/geom/AffineTransform.html?is-external=true\" title=\"class or interface in java.awt.geom\">AffineTransform</a>&nbsp;getMatrix()</pre>\n<div class=\"block\">Returns the transformation matrix for this object, including any scaling and rotation done to it.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"getObjectColor--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getObjectColor</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;getObjectColor()</pre>\n<div class=\"block\">This method returns the color set for this specific object, which may\n be <code>null</code>.  It differs from <code>getColor</code> in that\n it does not walk up the containment chain.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"getParent--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getParent</h4>\n<pre>public&nbsp;<a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a>&nbsp;getParent()</pre>\n<div class=\"block\">Returns the parent of this object, which is the canvas or compound object in\n which it is enclosed.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The parent of this object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GContainer parent = gobj.getParent();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getRightX--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getRightX</h4>\n<pre>public&nbsp;double&nbsp;getRightX()</pre>\n<div class=\"block\">Returns the rightmost x-coordinate of the object.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The rightmost x-coordinate of the object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double x = gobj.getRightX();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getSize--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSize</h4>\n<pre>public&nbsp;acm.graphics.GDimension&nbsp;getSize()</pre>\n<div class=\"block\">Returns the size of the bounding box for this object.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The size of this object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GDimension size = gobj.getSize();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getWidth--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getWidth</h4>\n<pre>public&nbsp;double&nbsp;getWidth()</pre>\n<div class=\"block\">Returns the width of this object, which is defined to be\n the width of the bounding box.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The width of this object on the screen</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double width = gobj.getWidth();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getX--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getX</h4>\n<pre>public&nbsp;double&nbsp;getX()</pre>\n<div class=\"block\">Returns the leftmost x-coordinate of the object.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The x-coordinate of the object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double x = gobj.getX();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getY--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getY</h4>\n<pre>public&nbsp;double&nbsp;getY()</pre>\n<div class=\"block\">Returns the topmost y-coordinate of the object.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The y-coordinate of the object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double y = gobj.getY();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"intersects-acm.graphics.GObject-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>intersects</h4>\n<pre>public&nbsp;boolean&nbsp;intersects(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;obj)</pre>\n<div class=\"block\">Returns true if this object touches the given other object.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>obj</code> - the other object to compare against</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>true if the objects intersect, else false</dd>\n</dl>\n</li>\n</ul>\n<a name=\"isVisible--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isVisible</h4>\n<pre>public&nbsp;boolean&nbsp;isVisible()</pre>\n<div class=\"block\">Checks to see whether this object is visible.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd><code>true</code> if the object is visible, otherwise <code>false</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>if (gobj.isVisible()) . . .</dd>\n</dl>\n</li>\n</ul>\n<a name=\"move-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>move</h4>\n<pre>public&nbsp;void&nbsp;move(double&nbsp;dx,\n                 double&nbsp;dy)</pre>\n<div class=\"block\">Moves the object on the screen using the displacements <code>dx</code> and <code>dy</code>.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>dx</code> - The distance to move the object in the x direction (positive is rightward)</dd>\n<dd><code>dy</code> - The distance to move the object in the y direction (positive is downward)</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.move(dx, dy);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"movePolar-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>movePolar</h4>\n<pre>public final&nbsp;void&nbsp;movePolar(double&nbsp;r,\n                            double&nbsp;theta)</pre>\n<div class=\"block\">Moves the object using displacements given in polar coordinates.  The\n parameter <code>r</code> specifies the distance to move and <code>theta</code>\n specifies the angle in which the motion occurs.  The angle is measured in\n degrees increasing counterclockwise from the +x axis.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>r</code> - The distance to move</dd>\n<dd><code>theta</code> - The angle in which to move, measured in degrees\n              increasing counterclockwise from the +x axis</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.movePolar(r, theta);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"paint-java.awt.Graphics-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>paint</h4>\n<pre>public final&nbsp;void&nbsp;paint(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g)</pre>\n<div class=\"block\">All subclasses of <code>GObject</code> must define a <code>paint</code>\n method which allows the object to draw itself on the <code>Graphics</code>\n context passed in as the parameter <code>g</code>.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>g</code> - The graphics context into which the painting is done</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.paint(g);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"paint2d-java.awt.Graphics2D-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>paint2d</h4>\n<pre>protected abstract&nbsp;void&nbsp;paint2d(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics2D.html?is-external=true\" title=\"class or interface in java.awt\">Graphics2D</a>&nbsp;g)</pre>\n<div class=\"block\">All subclasses of <code>GObject</code> must define a <code>paint2d</code>\n method which allows the object to draw itself on the <code>Graphics</code>\n context passed in as the parameter <code>g</code>.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>g</code> - The graphics context into which the painting is done</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.paint(g);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"paramString--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>paramString</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString()</pre>\n<div class=\"block\">Returns a string indicating the parameters of this object.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"pause-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>pause</h4>\n<pre>public&nbsp;void&nbsp;pause(double&nbsp;milliseconds)</pre>\n<div class=\"block\">Delays the calling thread for the specified time, which is expressed in\n milliseconds.  Unlike <code>Thread.sleep</code>, this method never throws an\n exception.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>milliseconds</code> - The sleep time in milliseconds</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.pause(milliseconds);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"removeActionListener-java.awt.event.ActionListener-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeActionListener</h4>\n<pre>public&nbsp;void&nbsp;removeActionListener(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener)</pre>\n<div class=\"block\">Removes an action listener from this graphical object.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>listener</code> - The listener object to remove</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.removeActionListener(listener);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"removeMouseListener-java.awt.event.MouseListener-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeMouseListener</h4>\n<pre>public&nbsp;void&nbsp;removeMouseListener(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>&nbsp;listener)</pre>\n<div class=\"block\">Removes a mouse listener from this graphical object.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>listener</code> - The listener object to remove</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.removeMouseListener(listener);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"removeMouseMotionListener-java.awt.event.MouseMotionListener-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeMouseMotionListener</h4>\n<pre>public&nbsp;void&nbsp;removeMouseMotionListener(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a>&nbsp;listener)</pre>\n<div class=\"block\">Removes a mouse motion listener from this graphical object.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>listener</code> - The listener object to remove</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.removeMouseMotionListener(listener);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"repaint--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>repaint</h4>\n<pre>protected&nbsp;void&nbsp;repaint()</pre>\n<div class=\"block\">Signals that the object needs to be repainted.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"rotate-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>rotate</h4>\n<pre>public&nbsp;void&nbsp;rotate(double&nbsp;degrees)</pre>\n<div class=\"block\">Rotates this object by the given degrees counter-clockwise.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>degrees</code> - number of degrees to rotate</dd>\n</dl>\n</li>\n</ul>\n<a name=\"scale-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>scale</h4>\n<pre>public&nbsp;void&nbsp;scale(double&nbsp;sx,\n                  double&nbsp;sy)</pre>\n<div class=\"block\">Scales the size of this object by the given factors in the x and y dimensions.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GScalable.html#scale-double-double-\">scale</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>sx</code> - factor to scale in x dimension (1.0 = same size)</dd>\n<dd><code>sy</code> - factor to scale in y dimension (1.0 = same size)</dd>\n</dl>\n</li>\n</ul>\n<a name=\"scale-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>scale</h4>\n<pre>public final&nbsp;void&nbsp;scale(double&nbsp;sf)</pre>\n<div class=\"block\">Scales the size of this object by the given factor in the x and y dimensions.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GScalable.html#scale-double-\">scale</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>sf</code> - factor to scale in x and y dimensions (1.0 = same size)</dd>\n</dl>\n</li>\n</ul>\n<a name=\"sendBackward--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>sendBackward</h4>\n<pre>public&nbsp;void&nbsp;sendBackward()</pre>\n<div class=\"block\">Moves this object one step toward the back in the <i>z</i> dimension.\n If it was already at the back of the stack, nothing happens.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.sendBackward();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"sendForward--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>sendForward</h4>\n<pre>public&nbsp;void&nbsp;sendForward()</pre>\n<div class=\"block\">Moves this object one step toward the front in the <i>z</i> dimension.\n If it was already at the front of the stack, nothing happens.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.sendForward();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"sendToBack--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>sendToBack</h4>\n<pre>public&nbsp;void&nbsp;sendToBack()</pre>\n<div class=\"block\">Moves this object to the back of the display in the <i>z</i> dimension.  By\n moving it to the back, this object will appear to be behind the other graphical\n objects on the display and may be obscured by other objects in front.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.sendToBack();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"sendToFront--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>sendToFront</h4>\n<pre>public&nbsp;void&nbsp;sendToFront()</pre>\n<div class=\"block\">Moves this object to the front of the display in the <i>z</i> dimension.  By\n moving it to the front, this object will appear to be on top of the other graphical\n objects on the display and may hide any objects that are further back.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.sendToFront();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setBottomY-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setBottomY</h4>\n<pre>public&nbsp;void&nbsp;setBottomY(double&nbsp;bottomY)</pre>\n<div class=\"block\">Sets the bottom y-coordinate of this object to the given y value.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>bottomY</code> - The new bottom y-coordinate for the object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.setBottomY(y);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setCenterLocation-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setCenterLocation</h4>\n<pre>public&nbsp;void&nbsp;setCenterLocation(double&nbsp;centerX,\n                              double&nbsp;centerY)</pre>\n<div class=\"block\">Sets the central x/y-coordinates of this object to the given x/y values.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>centerX</code> - The new central x-coordinate for the object</dd>\n<dd><code>centerY</code> - The new central y-coordinate for the object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.setCenterLocation(x, y);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setCenterLocation-acm.graphics.GPoint-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setCenterLocation</h4>\n<pre>public final&nbsp;void&nbsp;setCenterLocation(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</pre>\n<div class=\"block\">Sets the central x/y-coordinates of this object to the given x/y values.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>pt</code> - The new central x/y-coordinates for the object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.setCenterLocation(pt);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setCenterX-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setCenterX</h4>\n<pre>public&nbsp;void&nbsp;setCenterX(double&nbsp;centerX)</pre>\n<div class=\"block\">Sets the central x-coordinate of this object to the given x value.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>centerX</code> - The new central x-coordinate for the object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.setCenterX(x);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setCenterY-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setCenterY</h4>\n<pre>public&nbsp;void&nbsp;setCenterY(double&nbsp;centerY)</pre>\n<div class=\"block\">Sets the central y-coordinate of this object to the given y value.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>centerY</code> - The new central y-coordinate for the object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.setCenterY(y);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setColor-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setColor</h4>\n<pre>public&nbsp;void&nbsp;setColor(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n<div class=\"block\">Sets the color used to display this object.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>color</code> - The color used to display this object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.setColor(color);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setLineWidth-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setLineWidth</h4>\n<pre>public&nbsp;void&nbsp;setLineWidth(double&nbsp;lineWidth)</pre>\n<div class=\"block\">Sets the thickness of lines drawn on this shape to the given number of pixels.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>lineWidth</code> - line width in pixels</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setLocation-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setLocation</h4>\n<pre>public&nbsp;void&nbsp;setLocation(double&nbsp;x,\n                        double&nbsp;y)</pre>\n<div class=\"block\">Sets the location of this object to the point (<code>x</code>, <code>y</code>).</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x</code> - The new x-coordinate for the object</dd>\n<dd><code>y</code> - The new y-coordinate for the object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.setLocation(x, y);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setLocation-acm.graphics.GPoint-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setLocation</h4>\n<pre>public final&nbsp;void&nbsp;setLocation(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</pre>\n<div class=\"block\">Sets the location of this object to the specified point.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>pt</code> - The new location for this object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.setLocation(pt);</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"setParent-acm.graphics.GContainer-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setParent</h4>\n<pre>public&nbsp;void&nbsp;setParent(<a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a>&nbsp;parent)</pre>\n<div class=\"block\">Sets the parent of this object, which should be called only by the\n <code>GContainer</code> in which this is installed.  The\n serialization behavior of the parent data depends on the parent\n type.  Because a <code>GCompound</code> is serializable, it\n needs to be maintained in a nontransient variable; other parent\n classes are transient, so that these parents are not recorded\n in the serial form.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"setRightX-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setRightX</h4>\n<pre>public final&nbsp;void&nbsp;setRightX(double&nbsp;rightX)</pre>\n<div class=\"block\">Sets the rightmost x-coordinate of this object to the given x value.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>rightX</code> - The new rightmost x-coordinate for the object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.setRightX(x);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setVisible-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setVisible</h4>\n<pre>public&nbsp;void&nbsp;setVisible(boolean&nbsp;visible)</pre>\n<div class=\"block\">Sets whether this object is visible.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>visible</code> - <code>true</code> to make the object visible, <code>false</code> to hide it</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.setVisible(visible);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setX-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setX</h4>\n<pre>public final&nbsp;void&nbsp;setX(double&nbsp;x)</pre>\n<div class=\"block\">Sets the leftmost x-coordinate of this object to the given x value.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x</code> - The new x-coordinate for the object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.setX(x);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setY-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setY</h4>\n<pre>public final&nbsp;void&nbsp;setY(double&nbsp;y)</pre>\n<div class=\"block\">Sets the topmost y-coordinate of this object to the given y value.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>y</code> - The new y-coordinate for the object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.setY(y);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"start--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>start</h4>\n<pre>protected&nbsp;void&nbsp;start()</pre>\n<div class=\"block\">Starts a <code>GraphicsProgram</code> containing this object.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.start();</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"start-java.lang.String:A-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>start</h4>\n<pre>protected&nbsp;void&nbsp;start(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</pre>\n<div class=\"block\">Starts a <code>GraphicsProgram</code> containing this object, passing\n it the specified arguments.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>args</code> - The array of arguments</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.start();</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"toString--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>toString</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;toString()</pre>\n<div class=\"block\">Overrides the <code>toString</code> method in <code>Object</code> to produce\n more readable output.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"updateEnabledList--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>updateEnabledList</h4>\n<pre>protected&nbsp;void&nbsp;updateEnabledList()</pre>\n<div class=\"block\">Tells the parent to update its list of enabled objects.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/graphics/GMath.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/graphics/GOval.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/graphics/GObject.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GObject.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/graphics/GOval.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>GOval</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GOval\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/graphics/GOval.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GOval.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.graphics</div>\n<h2 title=\"Class GOval\" class=\"title\">Class GOval</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">acm.graphics.GObject</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.graphics.GOval</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd>acm.graphics.GFillable, <a href=\"../../acm/graphics/GResizable.html\" title=\"interface in acm.graphics\">GResizable</a>, <a href=\"../../acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true\" title=\"class or interface in java.lang\">Cloneable</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GOval</span>\nextends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>\nimplements acm.graphics.GFillable, <a href=\"../../acm/graphics/GResizable.html\" title=\"interface in acm.graphics\">GResizable</a></pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#acm.graphics.GOval\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GOval.html#GOval-double-double-\">GOval</a></span>(double&nbsp;d,\n     double&nbsp;d1)</code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GOval.html#GOval-double-double-double-double-\">GOval</a></span>(double&nbsp;d,\n     double&nbsp;d1,\n     double&nbsp;d2,\n     double&nbsp;d3)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GOval.html#contains-double-double-\">contains</a></span>(double&nbsp;d,\n        double&nbsp;d1)</code>\n<div class=\"block\">Checks to see whether a point is inside the object.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GOval.html#getBounds--\">getBounds</a></span>()</code>\n<div class=\"block\">Returns the bounding box of this object, which is defined to be the\n smallest rectangle that covers everything drawn by the figure.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GOval.html#getFillColor--\">getFillColor</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>acm.graphics.GDimension</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GOval.html#getSize--\">getSize</a></span>()</code>\n<div class=\"block\">Returns the size of the bounding box for this object.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GOval.html#isFilled--\">isFilled</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GOval.html#paint2d-java.awt.Graphics2D-\">paint2d</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics2D.html?is-external=true\" title=\"class or interface in java.awt\">Graphics2D</a>&nbsp;graphics2d)</code>\n<div class=\"block\">All subclasses of <code>GObject</code> must define a <code>paint2d</code>\n method which allows the object to draw itself on the <code>Graphics</code>\n context passed in as the parameter <code>g</code>.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GOval.html#setBounds-double-double-double-double-\">setBounds</a></span>(double&nbsp;d,\n         double&nbsp;d1,\n         double&nbsp;d2,\n         double&nbsp;d3)</code>\n<div class=\"block\">Changes the bounds of this object to the specified values.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GOval.html#setBounds-acm.graphics.GRectangle-\">setBounds</a></span>(<a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a>&nbsp;grectangle)</code>\n<div class=\"block\">Changes the bounds of this object to the values from the specified\n <code>GRectangle</code>.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GOval.html#setFillColor-java.awt.Color-\">setFillColor</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GOval.html#setFilled-boolean-\">setFilled</a></span>(boolean&nbsp;flag)</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GOval.html#setSize-double-double-\">setSize</a></span>(double&nbsp;d,\n       double&nbsp;d1)</code>\n<div class=\"block\">Changes the size of this object to the specified width and height.</div>\n</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GOval.html#setSize-acm.graphics.GDimension-\">setSize</a></span>(acm.graphics.GDimension&nbsp;gdimension)</code>\n<div class=\"block\">Changes the size of this object as specified by the <code>GDimension</code>\n object.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.graphics.GObject\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.graphics.<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></h3>\n<code><a href=\"../../acm/graphics/GObject.html#addActionListener-java.awt.event.ActionListener-\">addActionListener</a>, <a href=\"../../acm/graphics/GObject.html#addMouseListener-java.awt.event.MouseListener-\">addMouseListener</a>, <a href=\"../../acm/graphics/GObject.html#addMouseMotionListener-java.awt.event.MouseMotionListener-\">addMouseMotionListener</a>, <a href=\"../../acm/graphics/GObject.html#areMouseListenersEnabled--\">areMouseListenersEnabled</a>, <a href=\"../../acm/graphics/GObject.html#clone--\">clone</a>, <a href=\"../../acm/graphics/GObject.html#colorName-java.awt.Color-\">colorName</a>, <a href=\"../../acm/graphics/GObject.html#colorName-int-\">colorName</a>, <a href=\"../../acm/graphics/GObject.html#colorNameFriendly-int-\">colorNameFriendly</a>, <a href=\"../../acm/graphics/GObject.html#contains-acm.graphics.GPoint-\">contains</a>, <a href=\"../../acm/graphics/GObject.html#createTransformedGraphics-java.awt.Graphics-\">createTransformedGraphics</a>, <a href=\"../../acm/graphics/GObject.html#fireActionEvent-java.awt.event.ActionEvent-\">fireActionEvent</a>, <a href=\"../../acm/graphics/GObject.html#fireActionEvent-java.lang.String-\">fireActionEvent</a>, <a href=\"../../acm/graphics/GObject.html#fireMouseListeners-java.awt.event.MouseEvent-\">fireMouseListeners</a>, <a href=\"../../acm/graphics/GObject.html#getBottomY--\">getBottomY</a>, <a href=\"../../acm/graphics/GObject.html#getCenterLocation--\">getCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#getCenterX--\">getCenterX</a>, <a href=\"../../acm/graphics/GObject.html#getCenterY--\">getCenterY</a>, <a href=\"../../acm/graphics/GObject.html#getColor--\">getColor</a>, <a href=\"../../acm/graphics/GObject.html#getComponent--\">getComponent</a>, <a href=\"../../acm/graphics/GObject.html#getHeight--\">getHeight</a>, <a href=\"../../acm/graphics/GObject.html#getLineWidth--\">getLineWidth</a>, <a href=\"../../acm/graphics/GObject.html#getLocation--\">getLocation</a>, <a href=\"../../acm/graphics/GObject.html#getMatrix--\">getMatrix</a>, <a href=\"../../acm/graphics/GObject.html#getObjectColor--\">getObjectColor</a>, <a href=\"../../acm/graphics/GObject.html#getParent--\">getParent</a>, <a href=\"../../acm/graphics/GObject.html#getRightX--\">getRightX</a>, <a href=\"../../acm/graphics/GObject.html#getWidth--\">getWidth</a>, <a href=\"../../acm/graphics/GObject.html#getX--\">getX</a>, <a href=\"../../acm/graphics/GObject.html#getY--\">getY</a>, <a href=\"../../acm/graphics/GObject.html#intersects-acm.graphics.GObject-\">intersects</a>, <a href=\"../../acm/graphics/GObject.html#isAntiAliasing--\">isAntiAliasing</a>, <a href=\"../../acm/graphics/GObject.html#isVisible--\">isVisible</a>, <a href=\"../../acm/graphics/GObject.html#move-double-double-\">move</a>, <a href=\"../../acm/graphics/GObject.html#movePolar-double-double-\">movePolar</a>, <a href=\"../../acm/graphics/GObject.html#paint-java.awt.Graphics-\">paint</a>, <a href=\"../../acm/graphics/GObject.html#paramString--\">paramString</a>, <a href=\"../../acm/graphics/GObject.html#pause-double-\">pause</a>, <a href=\"../../acm/graphics/GObject.html#removeActionListener-java.awt.event.ActionListener-\">removeActionListener</a>, <a href=\"../../acm/graphics/GObject.html#removeMouseListener-java.awt.event.MouseListener-\">removeMouseListener</a>, <a href=\"../../acm/graphics/GObject.html#removeMouseMotionListener-java.awt.event.MouseMotionListener-\">removeMouseMotionListener</a>, <a href=\"../../acm/graphics/GObject.html#repaint--\">repaint</a>, <a href=\"../../acm/graphics/GObject.html#rotate-double-\">rotate</a>, <a href=\"../../acm/graphics/GObject.html#scale-double-\">scale</a>, <a href=\"../../acm/graphics/GObject.html#scale-double-double-\">scale</a>, <a href=\"../../acm/graphics/GObject.html#sendBackward--\">sendBackward</a>, <a href=\"../../acm/graphics/GObject.html#sendForward--\">sendForward</a>, <a href=\"../../acm/graphics/GObject.html#sendToBack--\">sendToBack</a>, <a href=\"../../acm/graphics/GObject.html#sendToFront--\">sendToFront</a>, <a href=\"../../acm/graphics/GObject.html#setAntiAliasing-boolean-\">setAntiAliasing</a>, <a href=\"../../acm/graphics/GObject.html#setBottomY-double-\">setBottomY</a>, <a href=\"../../acm/graphics/GObject.html#setCenterLocation-double-double-\">setCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#setCenterLocation-acm.graphics.GPoint-\">setCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#setCenterX-double-\">setCenterX</a>, <a href=\"../../acm/graphics/GObject.html#setCenterY-double-\">setCenterY</a>, <a href=\"../../acm/graphics/GObject.html#setColor-java.awt.Color-\">setColor</a>, <a href=\"../../acm/graphics/GObject.html#setLineWidth-double-\">setLineWidth</a>, <a href=\"../../acm/graphics/GObject.html#setLocation-double-double-\">setLocation</a>, <a href=\"../../acm/graphics/GObject.html#setLocation-acm.graphics.GPoint-\">setLocation</a>, <a href=\"../../acm/graphics/GObject.html#setParent-acm.graphics.GContainer-\">setParent</a>, <a href=\"../../acm/graphics/GObject.html#setRightX-double-\">setRightX</a>, <a href=\"../../acm/graphics/GObject.html#setVisible-boolean-\">setVisible</a>, <a href=\"../../acm/graphics/GObject.html#setX-double-\">setX</a>, <a href=\"../../acm/graphics/GObject.html#setY-double-\">setY</a>, <a href=\"../../acm/graphics/GObject.html#start--\">start</a>, <a href=\"../../acm/graphics/GObject.html#start-java.lang.String:A-\">start</a>, <a href=\"../../acm/graphics/GObject.html#toString--\">toString</a>, <a href=\"../../acm/graphics/GObject.html#updateEnabledList--\">updateEnabledList</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GOval-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>GOval</h4>\n<pre>public&nbsp;GOval(double&nbsp;d,\n             double&nbsp;d1)</pre>\n</li>\n</ul>\n<a name=\"GOval-double-double-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GOval</h4>\n<pre>public&nbsp;GOval(double&nbsp;d,\n             double&nbsp;d1,\n             double&nbsp;d2,\n             double&nbsp;d3)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"getBounds--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getBounds</h4>\n<pre>public&nbsp;<a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a>&nbsp;getBounds()</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../acm/graphics/GObject.html#getBounds--\">GObject</a></code></span></div>\n<div class=\"block\">Returns the bounding box of this object, which is defined to be the\n smallest rectangle that covers everything drawn by the figure.  The\n coordinates of this rectangle do not necessarily match the location\n returned by <a href=\"#getLocation()\"><code>getLocation</code></a>.\n Given a <a href=\"GLabel.html\"><code>GLabel</code></a> object, for\n example, <a href=\"#getLocation()\"><code>getLocation</code></a>\n returns the coordinates of the point on the baseline at which the\n string begins; <code>getBounds</code>, by contrast, returns a\n rectangle that covers the entire window area occupied by the string.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#getBounds--\">getBounds</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The bounding box for this object</dd>\n</dl>\n</li>\n</ul>\n<a name=\"contains-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>contains</h4>\n<pre>public&nbsp;boolean&nbsp;contains(double&nbsp;d,\n                        double&nbsp;d1)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../acm/graphics/GObject.html#contains-double-double-\">GObject</a></code></span></div>\n<div class=\"block\">Checks to see whether a point is inside the object.  By default, this\n method simply checks to see if the point is inside the bounding box.\n Many subclasses will need to override this to check whether the point\n is contained in the shape.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#contains-double-double-\">contains</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>d</code> - The x-coordinate of the point being tested</dd>\n<dd><code>d1</code> - The y-coordinate of the point being tested</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd><code>true</code> if the point (<code>x</code>,&nbsp;<code>y</code>) is inside\n the object, and <code>false</code> otherwise</dd>\n</dl>\n</li>\n</ul>\n<a name=\"paint2d-java.awt.Graphics2D-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>paint2d</h4>\n<pre>protected&nbsp;void&nbsp;paint2d(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics2D.html?is-external=true\" title=\"class or interface in java.awt\">Graphics2D</a>&nbsp;graphics2d)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../acm/graphics/GObject.html#paint2d-java.awt.Graphics2D-\">GObject</a></code></span></div>\n<div class=\"block\">All subclasses of <code>GObject</code> must define a <code>paint2d</code>\n method which allows the object to draw itself on the <code>Graphics</code>\n context passed in as the parameter <code>g</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#paint2d-java.awt.Graphics2D-\">paint2d</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>graphics2d</code> - The graphics context into which the painting is done</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setFilled-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setFilled</h4>\n<pre>public&nbsp;void&nbsp;setFilled(boolean&nbsp;flag)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>setFilled</code>&nbsp;in interface&nbsp;<code>acm.graphics.GFillable</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"isFilled--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isFilled</h4>\n<pre>public&nbsp;boolean&nbsp;isFilled()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>isFilled</code>&nbsp;in interface&nbsp;<code>acm.graphics.GFillable</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setFillColor-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setFillColor</h4>\n<pre>public&nbsp;void&nbsp;setFillColor(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>setFillColor</code>&nbsp;in interface&nbsp;<code>acm.graphics.GFillable</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getFillColor--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFillColor</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;getFillColor()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>getFillColor</code>&nbsp;in interface&nbsp;<code>acm.graphics.GFillable</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setSize-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setSize</h4>\n<pre>public&nbsp;void&nbsp;setSize(double&nbsp;d,\n                    double&nbsp;d1)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from interface:&nbsp;<code><a href=\"../../acm/graphics/GResizable.html#setSize-double-double-\">GResizable</a></code></span></div>\n<div class=\"block\">Changes the size of this object to the specified width and height.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GResizable.html#setSize-double-double-\">setSize</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GResizable.html\" title=\"interface in acm.graphics\">GResizable</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>d</code> - The new width of the object</dd>\n<dd><code>d1</code> - The new height of the object</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setSize-acm.graphics.GDimension-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setSize</h4>\n<pre>public final&nbsp;void&nbsp;setSize(acm.graphics.GDimension&nbsp;gdimension)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from interface:&nbsp;<code><a href=\"../../acm/graphics/GResizable.html#setSize-acm.graphics.GDimension-\">GResizable</a></code></span></div>\n<div class=\"block\">Changes the size of this object as specified by the <code>GDimension</code>\n object.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GResizable.html#setSize-acm.graphics.GDimension-\">setSize</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GResizable.html\" title=\"interface in acm.graphics\">GResizable</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>gdimension</code> - A <code>GDimension</code> object specifying the new size</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getSize--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSize</h4>\n<pre>public&nbsp;acm.graphics.GDimension&nbsp;getSize()</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../acm/graphics/GObject.html#getSize--\">GObject</a></code></span></div>\n<div class=\"block\">Returns the size of the bounding box for this object.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#getSize--\">getSize</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The size of this object</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setBounds-double-double-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setBounds</h4>\n<pre>public&nbsp;void&nbsp;setBounds(double&nbsp;d,\n                      double&nbsp;d1,\n                      double&nbsp;d2,\n                      double&nbsp;d3)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from interface:&nbsp;<code><a href=\"../../acm/graphics/GResizable.html#setBounds-double-double-double-double-\">GResizable</a></code></span></div>\n<div class=\"block\">Changes the bounds of this object to the specified values.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GResizable.html#setBounds-double-double-double-double-\">setBounds</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GResizable.html\" title=\"interface in acm.graphics\">GResizable</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>d</code> - The new x-coordinate for the object</dd>\n<dd><code>d1</code> - The new y-coordinate for the object</dd>\n<dd><code>d2</code> - The new width of the object</dd>\n<dd><code>d3</code> - The new height of the object</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setBounds-acm.graphics.GRectangle-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>setBounds</h4>\n<pre>public final&nbsp;void&nbsp;setBounds(<a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a>&nbsp;grectangle)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from interface:&nbsp;<code><a href=\"../../acm/graphics/GResizable.html#setBounds-acm.graphics.GRectangle-\">GResizable</a></code></span></div>\n<div class=\"block\">Changes the bounds of this object to the values from the specified\n <code>GRectangle</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GResizable.html#setBounds-acm.graphics.GRectangle-\">setBounds</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GResizable.html\" title=\"interface in acm.graphics\">GResizable</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>grectangle</code> - A <code>GRectangle</code> specifying the new bounds</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/graphics/GOval.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GOval.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/graphics/GPoint.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>GPoint</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GPoint\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/graphics/GOval.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/graphics/GPoint.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GPoint.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.graphics</div>\n<h2 title=\"Class GPoint\" class=\"title\">Class GPoint</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.graphics.GPoint</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GPoint</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>\nimplements <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a></pre>\n<div class=\"block\">This class is a double-precision version of the <code>Point</code> class in\n <code>java.awt</code>.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#acm.graphics.GPoint\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GPoint.html#GPoint--\">GPoint</a></span>()</code>\n<div class=\"block\">Constructs a new <code>GPoint</code> at the origin (0, 0).</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GPoint.html#GPoint-double-double-\">GPoint</a></span>(double&nbsp;x,\n      double&nbsp;y)</code>\n<div class=\"block\">Constructs a new <code>GPoint</code> with the specified coordinates.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GPoint.html#GPoint-acm.graphics.GPoint-\">GPoint</a></span>(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;p)</code>\n<div class=\"block\">Constructs a new <code>GPoint</code> from an existing one.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GPoint.html#GPoint-java.awt.Point-\">GPoint</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;p)</code>\n<div class=\"block\">Constructs a new <code>GPoint</code> from an existing AWT\n <code>Point</code>.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GPoint.html#equals-double-double-\">equals</a></span>(double&nbsp;x,\n      double&nbsp;y)</code>\n<div class=\"block\">Returns true if this GPoint's coordinates equal the given coordinates.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GPoint.html#equals-java.lang.Object-\">equals</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj)</code>\n<div class=\"block\">Tests whether two <code>GPoint</code> objects are equal.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GPoint.html#getLocation--\">getLocation</a></span>()</code>\n<div class=\"block\">Returns a new <code>GPoint</code> whose coordinates are the same as this\n one.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GPoint.html#getX--\">getX</a></span>()</code>\n<div class=\"block\">Returns the x coordinate of this <code>GPoint</code>.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GPoint.html#getY--\">getY</a></span>()</code>\n<div class=\"block\">Returns the y coordinate of this <code>GPoint</code>.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GPoint.html#hashCode--\">hashCode</a></span>()</code>\n<div class=\"block\">Returns an integer hash code for the point.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GPoint.html#setLocation-double-double-\">setLocation</a></span>(double&nbsp;x,\n           double&nbsp;y)</code>\n<div class=\"block\">Sets the location of the <code>GPoint</code> to the specified\n <code>x</code> and <code>y</code> values.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GPoint.html#setLocation-acm.graphics.GPoint-\">setLocation</a></span>(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;p)</code>\n<div class=\"block\">Sets the location of the <code>GPoint</code> to that of an existing one.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GPoint.html#toPoint--\">toPoint</a></span>()</code>\n<div class=\"block\">Converts this <code>GPoint</code> to the nearest integer-based\n <code>Point</code>.</div>\n</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GPoint.html#toString--\">toString</a></span>()</code>\n<div class=\"block\">Converts this <code>GPoint</code> to its string representation.</div>\n</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GPoint.html#translate-double-double-\">translate</a></span>(double&nbsp;dx,\n         double&nbsp;dy)</code>\n<div class=\"block\">Adjusts the coordinates of a point by the specified <code>dx</code> and\n <code>dy</code> offsets.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GPoint--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>GPoint</h4>\n<pre>public&nbsp;GPoint()</pre>\n<div class=\"block\">Constructs a new <code>GPoint</code> at the origin (0, 0).</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>pt = new GPoint();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"GPoint-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>GPoint</h4>\n<pre>public&nbsp;GPoint(double&nbsp;x,\n              double&nbsp;y)</pre>\n<div class=\"block\">Constructs a new <code>GPoint</code> with the specified coordinates.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x</code> - The x-coordinate of the point</dd>\n<dd><code>y</code> - The y-coordinate of the point</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>pt = new GPoint(x, y);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"GPoint-acm.graphics.GPoint-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>GPoint</h4>\n<pre>public&nbsp;GPoint(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;p)</pre>\n<div class=\"block\">Constructs a new <code>GPoint</code> from an existing one.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>p</code> - The original point</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>pt = new GPoint(p);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"GPoint-java.awt.Point-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GPoint</h4>\n<pre>public&nbsp;GPoint(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;p)</pre>\n<div class=\"block\">Constructs a new <code>GPoint</code> from an existing AWT\n <code>Point</code>.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>p</code> - An AWT <code>Point</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>pt = new GPoint(p);</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"getX--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getX</h4>\n<pre>public&nbsp;double&nbsp;getX()</pre>\n<div class=\"block\">Returns the x coordinate of this <code>GPoint</code>.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The x coordinate of this <code>GPoint</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>x = pt.getX();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getY--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getY</h4>\n<pre>public&nbsp;double&nbsp;getY()</pre>\n<div class=\"block\">Returns the y coordinate of this <code>GPoint</code>.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The y coordinate of this <code>GPoint</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>y = pt.getY();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setLocation-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setLocation</h4>\n<pre>public&nbsp;void&nbsp;setLocation(double&nbsp;x,\n                        double&nbsp;y)</pre>\n<div class=\"block\">Sets the location of the <code>GPoint</code> to the specified\n <code>x</code> and <code>y</code> values.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x</code> - The new x-coordinate for the point</dd>\n<dd><code>y</code> - The new y-coordinate for the point</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>pt.setLocation(x, y);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setLocation-acm.graphics.GPoint-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setLocation</h4>\n<pre>public&nbsp;void&nbsp;setLocation(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;p)</pre>\n<div class=\"block\">Sets the location of the <code>GPoint</code> to that of an existing one.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>p</code> - An existing <code>GPoint</code> specifying the new location</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>pt.setLocation(p);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getLocation--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getLocation</h4>\n<pre>public&nbsp;<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;getLocation()</pre>\n<div class=\"block\">Returns a new <code>GPoint</code> whose coordinates are the same as this\n one.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>A new point with the same coordinates</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>p = pt.getLocation();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"translate-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>translate</h4>\n<pre>public&nbsp;void&nbsp;translate(double&nbsp;dx,\n                      double&nbsp;dy)</pre>\n<div class=\"block\">Adjusts the coordinates of a point by the specified <code>dx</code> and\n <code>dy</code> offsets.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>dx</code> - The change in the x direction (positive is rightward)</dd>\n<dd><code>dy</code> - The change in the y direction (positive is downward)</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>pt.translate(dx, dy);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"toPoint--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>toPoint</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;toPoint()</pre>\n<div class=\"block\">Converts this <code>GPoint</code> to the nearest integer-based\n <code>Point</code>.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The closest integer-based <code>Point</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>size = dim.toPoint();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"hashCode--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hashCode</h4>\n<pre>public&nbsp;int&nbsp;hashCode()</pre>\n<div class=\"block\">Returns an integer hash code for the point. The hash code for a\n <code>GPoint</code> is constructed from the hash codes from the\n <code>float</code> values of the coordinates, which are the ones used in\n the <code>equals</code> method.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The hash code for this pt</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>hash = pt.hashCode();</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"equals-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>equals</h4>\n<pre>public&nbsp;boolean&nbsp;equals(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj)</pre>\n<div class=\"block\">Tests whether two <code>GPoint</code> objects are equal. Because\n floating-point values are inexact, this method checks for equality by\n comparing the <code>float</code> values (rather than the\n <code>double</code> values) of the coordinates.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>obj</code> - Any object</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd><code>true</code> if the <code>obj</code> is a\n         <code>GPoint</code> equal to this one, and <code>false</code>\n         otherwise</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>if (pt.equals(obj)) . . .</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"equals-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>equals</h4>\n<pre>public&nbsp;boolean&nbsp;equals(double&nbsp;x,\n                      double&nbsp;y)</pre>\n<div class=\"block\">Returns true if this GPoint's coordinates equal the given coordinates.</div>\n</li>\n</ul>\n<a name=\"toString--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>toString</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;toString()</pre>\n<div class=\"block\">Converts this <code>GPoint</code> to its string representation.\n Decimal point on each coord will be shown if not a whole number.\n Examples: \"(4, -7)\" or \"(-2.4, 3.68)\"</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>A string representation of this point</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>str = rect.toString();</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/graphics/GOval.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/graphics/GPoint.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GPoint.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/graphics/GRectangle.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>GRectangle</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GRectangle\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":10,\"i16\":10,\"i17\":10,\"i18\":10,\"i19\":10,\"i20\":10,\"i21\":10,\"i22\":10,\"i23\":10,\"i24\":10,\"i25\":10,\"i26\":10,\"i27\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/graphics/GResizable.html\" title=\"interface in acm.graphics\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/graphics/GRectangle.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GRectangle.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.graphics</div>\n<h2 title=\"Class GRectangle\" class=\"title\">Class GRectangle</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.graphics.GRectangle</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GRectangle</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>\nimplements <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a></pre>\n<div class=\"block\">This class is a double-precision version of the <code>Rectangle</code> class\n in <code>java.awt</code>.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#acm.graphics.GRectangle\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GRectangle.html#GRectangle--\">GRectangle</a></span>()</code>\n<div class=\"block\">Constructs a new empty <code>GRectangle</code>.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GRectangle.html#GRectangle-double-double-\">GRectangle</a></span>(double&nbsp;width,\n          double&nbsp;height)</code>\n<div class=\"block\">Constructs a <code>GRectangle</code> at the origin with the specified width and height.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GRectangle.html#GRectangle-double-double-double-double-\">GRectangle</a></span>(double&nbsp;x,\n          double&nbsp;y,\n          double&nbsp;width,\n          double&nbsp;height)</code>\n<div class=\"block\">Constructs a new <code>GRectangle</code> with the specified coordinates and size.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GRectangle.html#GRectangle-acm.graphics.GDimension-\">GRectangle</a></span>(acm.graphics.GDimension&nbsp;size)</code>\n<div class=\"block\">Constructs a new <code>GRectangle</code> at the origin with the specified size.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GRectangle.html#GRectangle-acm.graphics.GPoint-\">GRectangle</a></span>(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</code>\n<div class=\"block\">Constructs a new empty <code>GRectangle</code> at the specified location.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GRectangle.html#GRectangle-acm.graphics.GPoint-acm.graphics.GDimension-\">GRectangle</a></span>(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt,\n          acm.graphics.GDimension&nbsp;size)</code>\n<div class=\"block\">Constructs a new <code>GRectangle</code> with the specified location and size.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GRectangle.html#GRectangle-acm.graphics.GRectangle-\">GRectangle</a></span>(<a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a>&nbsp;r)</code>\n<div class=\"block\">Constructs a new <code>GRectangle</code> from an existing one.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GRectangle.html#add-double-double-\">add</a></span>(double&nbsp;x,\n   double&nbsp;y)</code>\n<div class=\"block\">Adds the specified point to the rectangle.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GRectangle.html#add-acm.graphics.GRectangle-\">add</a></span>(<a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a>&nbsp;r)</code>\n<div class=\"block\">Adjusts the bounds of the current <code>GRectangle</code> so that it contains\n the rectangle represented by the argument.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GRectangle.html#contains-double-double-\">contains</a></span>(double&nbsp;x,\n        double&nbsp;y)</code>\n<div class=\"block\">Returns <code>true</code> if the <code>GRectangle</code> contains the specified point.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GRectangle.html#contains-acm.graphics.GPoint-\">contains</a></span>(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</code>\n<div class=\"block\">Returns <code>true</code> if the <code>GRectangle</code> contains the specified point.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GRectangle.html#equals-java.lang.Object-\">equals</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj)</code>\n<div class=\"block\">Tests whether two <code>GRectangle</code> objects are equal.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GRectangle.html#getBounds--\">getBounds</a></span>()</code>\n<div class=\"block\">Returns a new <code>GRectangle</code> whose bounds are the same as this one.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GRectangle.html#getHeight--\">getHeight</a></span>()</code>\n<div class=\"block\">Returns the height of this <code>GDimension</code>.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GRectangle.html#getLocation--\">getLocation</a></span>()</code>\n<div class=\"block\">Returns a new <code>GPoint</code> with the location of the rectangle.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>acm.graphics.GDimension</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GRectangle.html#getSize--\">getSize</a></span>()</code>\n<div class=\"block\">Returns a new <code>GDimension</code> object with the size of the <code>GRectangle</code>.</div>\n</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GRectangle.html#getWidth--\">getWidth</a></span>()</code>\n<div class=\"block\">Returns the width of this <code>GDimension</code>.</div>\n</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GRectangle.html#getX--\">getX</a></span>()</code>\n<div class=\"block\">Returns the x coordinate of this <code>GRectangle</code>.</div>\n</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GRectangle.html#getY--\">getY</a></span>()</code>\n<div class=\"block\">Returns the y coordinate of this <code>GRectangle</code>.</div>\n</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GRectangle.html#grow-double-double-\">grow</a></span>(double&nbsp;dx,\n    double&nbsp;dy)</code>\n<div class=\"block\">Adjusts the edges of a rectangle by the specified <code>dx</code> and <code>dy</code>\n offsets along each of its borders.</div>\n</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GRectangle.html#hashCode--\">hashCode</a></span>()</code>\n<div class=\"block\">Returns an integer hash code for the rectangle.</div>\n</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GRectangle.html#intersection-acm.graphics.GRectangle-\">intersection</a></span>(<a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a>&nbsp;r2)</code>\n<div class=\"block\">Returns the largest rectangle that is contained in both\n <code>r1</code> and <code>r2</code>.</div>\n</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GRectangle.html#intersects-acm.graphics.GRectangle-\">intersects</a></span>(<a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a>&nbsp;r2)</code>\n<div class=\"block\">Returns <code>true</code> if <code>r1</code> and <code>r2</code> have a nonempty\n intersection.</div>\n</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GRectangle.html#isEmpty--\">isEmpty</a></span>()</code>\n<div class=\"block\">Returns <code>true</code> if the rectangle is empty.</div>\n</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GRectangle.html#setBounds-double-double-double-double-\">setBounds</a></span>(double&nbsp;x,\n         double&nbsp;y,\n         double&nbsp;width,\n         double&nbsp;height)</code>\n<div class=\"block\">Sets the components of a <code>GRectangle</code> from the specified values.</div>\n</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GRectangle.html#setBounds-acm.graphics.GPoint-acm.graphics.GDimension-\">setBounds</a></span>(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt,\n         acm.graphics.GDimension&nbsp;size)</code>\n<div class=\"block\">Sets the components of a <code>GRectangle</code> from the specified location and size.</div>\n</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GRectangle.html#setBounds-acm.graphics.GRectangle-\">setBounds</a></span>(<a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a>&nbsp;bounds)</code>\n<div class=\"block\">Sets the bounds of one <code>GRectangle</code> equal to that of another.</div>\n</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GRectangle.html#setLocation-double-double-\">setLocation</a></span>(double&nbsp;x,\n           double&nbsp;y)</code>\n<div class=\"block\">Sets the location of the <code>GRectangle</code> to the specified <code>x</code>\n and <code>y</code> values.</div>\n</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GRectangle.html#setLocation-acm.graphics.GPoint-\">setLocation</a></span>(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</code>\n<div class=\"block\">Sets the location of the <code>GRectangle</code> to the specified point.</div>\n</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GRectangle.html#setSize-double-double-\">setSize</a></span>(double&nbsp;width,\n       double&nbsp;height)</code>\n<div class=\"block\">Sets the size of the <code>GRectangle</code> to the specified values.</div>\n</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GRectangle.html#setSize-acm.graphics.GDimension-\">setSize</a></span>(acm.graphics.GDimension&nbsp;size)</code>\n<div class=\"block\">Sets the size of the <code>GRectangle</code> to the specified dimension.</div>\n</td>\n</tr>\n<tr id=\"i24\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Rectangle.html?is-external=true\" title=\"class or interface in java.awt\">Rectangle</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GRectangle.html#toRectangle--\">toRectangle</a></span>()</code>\n<div class=\"block\">Converts this <code>GRectangle</code> to the nearest integer-based <code>Rectangle</code>.</div>\n</td>\n</tr>\n<tr id=\"i25\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GRectangle.html#toString--\">toString</a></span>()</code>\n<div class=\"block\">Converts this <code>GRectangle</code> to its string representation.</div>\n</td>\n</tr>\n<tr id=\"i26\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GRectangle.html#translate-double-double-\">translate</a></span>(double&nbsp;dx,\n         double&nbsp;dy)</code>\n<div class=\"block\">Adjusts the coordinates of a rectangle by the specified <code>dx</code> and\n <code>dy</code> offsets.</div>\n</td>\n</tr>\n<tr id=\"i27\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GRectangle.html#union-acm.graphics.GRectangle-\">union</a></span>(<a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a>&nbsp;r2)</code>\n<div class=\"block\">Returns the smallest rectangle that contains both\n <code>r1</code> and <code>r2</code>.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GRectangle--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>GRectangle</h4>\n<pre>public&nbsp;GRectangle()</pre>\n<div class=\"block\">Constructs a new empty <code>GRectangle</code>.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>rect = new GRectangle();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"GRectangle-double-double-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>GRectangle</h4>\n<pre>public&nbsp;GRectangle(double&nbsp;x,\n                  double&nbsp;y,\n                  double&nbsp;width,\n                  double&nbsp;height)</pre>\n<div class=\"block\">Constructs a new <code>GRectangle</code> with the specified coordinates and size.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x</code> - The x-coordinate of the rectangle</dd>\n<dd><code>y</code> - The y-coordinate of the rectangle</dd>\n<dd><code>width</code> - The width of the rectangle</dd>\n<dd><code>height</code> - The height of the rectangle</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>rect = new GRectangle(x, y, width, height);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"GRectangle-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>GRectangle</h4>\n<pre>public&nbsp;GRectangle(double&nbsp;width,\n                  double&nbsp;height)</pre>\n<div class=\"block\">Constructs a <code>GRectangle</code> at the origin with the specified width and height.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>width</code> - The width of the rectangle</dd>\n<dd><code>height</code> - The height of the rectangle</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>rect = new GRectangle(width, height);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"GRectangle-acm.graphics.GPoint-acm.graphics.GDimension-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>GRectangle</h4>\n<pre>public&nbsp;GRectangle(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt,\n                  acm.graphics.GDimension&nbsp;size)</pre>\n<div class=\"block\">Constructs a new <code>GRectangle</code> with the specified location and size.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>pt</code> - The location of the upper left corner of the rectangle</dd>\n<dd><code>size</code> - The dimensions of the rectangle</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>rect = new GRectangle(pt, size);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"GRectangle-acm.graphics.GPoint-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>GRectangle</h4>\n<pre>public&nbsp;GRectangle(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</pre>\n<div class=\"block\">Constructs a new empty <code>GRectangle</code> at the specified location.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>pt</code> - The location of the upper left corner of the rectangle</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>rect = new GRectangle(pt);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"GRectangle-acm.graphics.GDimension-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>GRectangle</h4>\n<pre>public&nbsp;GRectangle(acm.graphics.GDimension&nbsp;size)</pre>\n<div class=\"block\">Constructs a new <code>GRectangle</code> at the origin with the specified size.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>size</code> - The dimensions of the rectangle</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>rect = new GRectangle(size);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"GRectangle-acm.graphics.GRectangle-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GRectangle</h4>\n<pre>public&nbsp;GRectangle(<a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a>&nbsp;r)</pre>\n<div class=\"block\">Constructs a new <code>GRectangle</code> from an existing one.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>r</code> - The original rectangle</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>rect = new GRectangle(r);</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"getX--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getX</h4>\n<pre>public&nbsp;double&nbsp;getX()</pre>\n<div class=\"block\">Returns the x coordinate of this <code>GRectangle</code>.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The x coordinate of this <code>GRectangle</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>x = rect.getX();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getY--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getY</h4>\n<pre>public&nbsp;double&nbsp;getY()</pre>\n<div class=\"block\">Returns the y coordinate of this <code>GRectangle</code>.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The y coordinate of this <code>GRectangle</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>y = rect.getY();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getWidth--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getWidth</h4>\n<pre>public&nbsp;double&nbsp;getWidth()</pre>\n<div class=\"block\">Returns the width of this <code>GDimension</code>.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The width of this <code>GDimension</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>width = rect.getWidth();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getHeight--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getHeight</h4>\n<pre>public&nbsp;double&nbsp;getHeight()</pre>\n<div class=\"block\">Returns the height of this <code>GDimension</code>.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The height of this <code>GDimension</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>height = rect.getHeight();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setBounds-double-double-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setBounds</h4>\n<pre>public&nbsp;void&nbsp;setBounds(double&nbsp;x,\n                      double&nbsp;y,\n                      double&nbsp;width,\n                      double&nbsp;height)</pre>\n<div class=\"block\">Sets the components of a <code>GRectangle</code> from the specified values.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x</code> - The x-coordinate of the rectangle</dd>\n<dd><code>y</code> - The y-coordinate of the rectangle</dd>\n<dd><code>width</code> - The width of the rectangle</dd>\n<dd><code>height</code> - The height of the rectangle</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>rect.setBounds(x, y, width, height);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setBounds-acm.graphics.GPoint-acm.graphics.GDimension-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setBounds</h4>\n<pre>public&nbsp;void&nbsp;setBounds(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt,\n                      acm.graphics.GDimension&nbsp;size)</pre>\n<div class=\"block\">Sets the components of a <code>GRectangle</code> from the specified location and size.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>pt</code> - The location of the upper left corner of the rectangle</dd>\n<dd><code>size</code> - The dimensions of the rectangle</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>rect.setBounds(pt, size);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setBounds-acm.graphics.GRectangle-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setBounds</h4>\n<pre>public&nbsp;void&nbsp;setBounds(<a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a>&nbsp;bounds)</pre>\n<div class=\"block\">Sets the bounds of one <code>GRectangle</code> equal to that of another.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>bounds</code> - A <code>GRectangle</code> specifying the new bounds</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>rect.setBounds(bounds);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getBounds--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getBounds</h4>\n<pre>public&nbsp;<a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a>&nbsp;getBounds()</pre>\n<div class=\"block\">Returns a new <code>GRectangle</code> whose bounds are the same as this one.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>A new rectangle with the same bounds</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>r = rect.getBounds();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setLocation-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setLocation</h4>\n<pre>public&nbsp;void&nbsp;setLocation(double&nbsp;x,\n                        double&nbsp;y)</pre>\n<div class=\"block\">Sets the location of the <code>GRectangle</code> to the specified <code>x</code>\n and <code>y</code> values.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x</code> - The new x-coordinate for the rectangle</dd>\n<dd><code>y</code> - The new y-coordinate for the rectangle</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>rect.setLocation(x, y);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setLocation-acm.graphics.GPoint-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setLocation</h4>\n<pre>public&nbsp;void&nbsp;setLocation(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</pre>\n<div class=\"block\">Sets the location of the <code>GRectangle</code> to the specified point.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>pt</code> - The new location for the rectangle</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>rect.setLocation(pt);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getLocation--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getLocation</h4>\n<pre>public&nbsp;<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;getLocation()</pre>\n<div class=\"block\">Returns a new <code>GPoint</code> with the location of the rectangle.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The location of the rectangle as a <code>GPoint</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>pt = rect.getLocation();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"translate-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>translate</h4>\n<pre>public&nbsp;void&nbsp;translate(double&nbsp;dx,\n                      double&nbsp;dy)</pre>\n<div class=\"block\">Adjusts the coordinates of a rectangle by the specified <code>dx</code> and\n <code>dy</code> offsets.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>dx</code> - The change in the x direction (positive is rightward)</dd>\n<dd><code>dy</code> - The change in the y direction (positive is downward)</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>rect.translate(dx, dy);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setSize-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setSize</h4>\n<pre>public&nbsp;void&nbsp;setSize(double&nbsp;width,\n                    double&nbsp;height)</pre>\n<div class=\"block\">Sets the size of the <code>GRectangle</code> to the specified values.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>width</code> - The new width of the rectangle</dd>\n<dd><code>height</code> - The new height of the rectangle</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>rect.setSize(width, height);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setSize-acm.graphics.GDimension-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setSize</h4>\n<pre>public&nbsp;void&nbsp;setSize(acm.graphics.GDimension&nbsp;size)</pre>\n<div class=\"block\">Sets the size of the <code>GRectangle</code> to the specified dimension.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>size</code> - The new dimensions of the rectangle</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>rect.setSize(size);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getSize--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSize</h4>\n<pre>public&nbsp;acm.graphics.GDimension&nbsp;getSize()</pre>\n<div class=\"block\">Returns a new <code>GDimension</code> object with the size of the <code>GRectangle</code>.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The size of the rectangle as a <code>GDimension</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>size = rect.getSize();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"grow-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>grow</h4>\n<pre>public&nbsp;void&nbsp;grow(double&nbsp;dx,\n                 double&nbsp;dy)</pre>\n<div class=\"block\">Adjusts the edges of a rectangle by the specified <code>dx</code> and <code>dy</code>\n offsets along each of its borders.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>dx</code> - The offset to extend each of the left and right borders</dd>\n<dd><code>dy</code> - The offset to extend each of the top and bottom borders</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>rect.grow(dx, dy);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"isEmpty--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isEmpty</h4>\n<pre>public&nbsp;boolean&nbsp;isEmpty()</pre>\n<div class=\"block\">Returns <code>true</code> if the rectangle is empty.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd><code>true</code> if the rectangle is empty, and <code>false</code> otherwise</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>if (rect.isEmpty()) . . .</dd>\n</dl>\n</li>\n</ul>\n<a name=\"contains-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>contains</h4>\n<pre>public&nbsp;boolean&nbsp;contains(double&nbsp;x,\n                        double&nbsp;y)</pre>\n<div class=\"block\">Returns <code>true</code> if the <code>GRectangle</code> contains the specified point.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x</code> - The x-coordinate of the point being tested</dd>\n<dd><code>y</code> - The y-coordinate of the point being tested</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd><code>true</code> if the rectangle contains (<code>x</code>,&nbsp;<code>y</code>),\n         and <code>false</code> otherwise</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>if (rect.contains(x, y)) . . .</dd>\n</dl>\n</li>\n</ul>\n<a name=\"contains-acm.graphics.GPoint-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>contains</h4>\n<pre>public&nbsp;boolean&nbsp;contains(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</pre>\n<div class=\"block\">Returns <code>true</code> if the <code>GRectangle</code> contains the specified point.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>pt</code> - The point being tested</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd><code>true</code> if the rectangle contains <code>pt</code>,\n         and <code>false</code> otherwise</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>if (rect.contains(pt)) . . .</dd>\n</dl>\n</li>\n</ul>\n<a name=\"intersects-acm.graphics.GRectangle-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>intersects</h4>\n<pre>public&nbsp;boolean&nbsp;intersects(<a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a>&nbsp;r2)</pre>\n<div class=\"block\">Returns <code>true</code> if <code>r1</code> and <code>r2</code> have a nonempty\n intersection.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>r2</code> - A second rectangle</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd><code>true</code> if the two rectangles intersect, and <code>false</code> otherwise</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>if (r1.intersects(r2)) . . .</dd>\n</dl>\n</li>\n</ul>\n<a name=\"intersection-acm.graphics.GRectangle-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>intersection</h4>\n<pre>public&nbsp;<a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a>&nbsp;intersection(<a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a>&nbsp;r2)</pre>\n<div class=\"block\">Returns the largest rectangle that is contained in both\n <code>r1</code> and <code>r2</code>.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>r2</code> - A second rectangle</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The intersection of this rectangle and <code>r2</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>r3 = r1.intersection(r2);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"union-acm.graphics.GRectangle-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>union</h4>\n<pre>public&nbsp;<a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a>&nbsp;union(<a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a>&nbsp;r2)</pre>\n<div class=\"block\">Returns the smallest rectangle that contains both\n <code>r1</code> and <code>r2</code>.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>r2</code> - A second rectangle</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The union of this rectangle and <code>r2</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>r3 = r1.union(r2);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"add-acm.graphics.GRectangle-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>public&nbsp;void&nbsp;add(<a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a>&nbsp;r)</pre>\n<div class=\"block\">Adjusts the bounds of the current <code>GRectangle</code> so that it contains\n the rectangle represented by the argument.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>r</code> - A new rectangle to include in this one</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>rect.add(r);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"add-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>public&nbsp;void&nbsp;add(double&nbsp;x,\n                double&nbsp;y)</pre>\n<div class=\"block\">Adds the specified point to the rectangle.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x</code> - The x coordinate of the new point</dd>\n<dd><code>y</code> - The y coordinate of the new point</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>rect.add(x, y);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"toRectangle--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>toRectangle</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Rectangle.html?is-external=true\" title=\"class or interface in java.awt\">Rectangle</a>&nbsp;toRectangle()</pre>\n<div class=\"block\">Converts this <code>GRectangle</code> to the nearest integer-based <code>Rectangle</code>.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The closest integer-based <code>Rectangle</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>size = dim.toRectangle();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"hashCode--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hashCode</h4>\n<pre>public&nbsp;int&nbsp;hashCode()</pre>\n<div class=\"block\">Returns an integer hash code for the rectangle.  The hash code for a\n <code>GRectangle</code> is constructed from the hash codes from the\n <code>float</code> values of the coordinates, which are the ones used in the\n <code>equals</code> method.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The hash code for this rectangle</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>hash = rect.hashCode();</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"equals-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>equals</h4>\n<pre>public&nbsp;boolean&nbsp;equals(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj)</pre>\n<div class=\"block\">Tests whether two <code>GRectangle</code> objects are equal.\n Because floating-point values are inexact, this method checks for\n equality by comparing the <code>float</code> values (rather than the\n <code>double</code> values) of the coordinates.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>obj</code> - Any object</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd><code>true</code> if the <code>obj</code> is a <code>GRectangle</code>\n         equal to this one, and <code>false</code> otherwise</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>if (rect.equals(obj)) . . .</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"toString--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>toString</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;toString()</pre>\n<div class=\"block\">Converts this <code>GRectangle</code> to its string representation.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>A string representation of this rectangle</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>str = rect.toString();</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/graphics/GResizable.html\" title=\"interface in acm.graphics\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/graphics/GRectangle.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GRectangle.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/graphics/GResizable.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>GResizable</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GResizable\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":6,\"i1\":6,\"i2\":6,\"i3\":6};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],4:[\"t3\",\"Abstract Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/graphics/GScalable.html\" title=\"interface in acm.graphics\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/graphics/GResizable.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GResizable.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.graphics</div>\n<h2 title=\"Interface GResizable\" class=\"title\">Interface GResizable</h2>\n</div>\n<div class=\"contentContainer\">\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Known Implementing Classes:</dt>\n<dd><a href=\"../../acm/graphics/G3DRect.html\" title=\"class in acm.graphics\">G3DRect</a>, <a href=\"../../acm/graphics/GImage.html\" title=\"class in acm.graphics\">GImage</a>, <a href=\"../../acm/graphics/GOval.html\" title=\"class in acm.graphics\">GOval</a>, acm.graphics.GRect</dd>\n</dl>\n<hr>\n<br>\n<pre>public interface <span class=\"typeNameLabel\">GResizable</span></pre>\n<div class=\"block\">Specifies the characteristics of a graphical object that supports the\n <code>setSize</code> and <code>setBounds</code> methods.</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t3\" class=\"tableTab\"><span><a href=\"javascript:show(4);\">Abstract Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GResizable.html#setBounds-double-double-double-double-\">setBounds</a></span>(double&nbsp;x,\n         double&nbsp;y,\n         double&nbsp;width,\n         double&nbsp;height)</code>\n<div class=\"block\">Changes the bounds of this object to the specified values.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GResizable.html#setBounds-acm.graphics.GRectangle-\">setBounds</a></span>(<a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a>&nbsp;bounds)</code>\n<div class=\"block\">Changes the bounds of this object to the values from the specified\n <code>GRectangle</code>.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GResizable.html#setSize-double-double-\">setSize</a></span>(double&nbsp;width,\n       double&nbsp;height)</code>\n<div class=\"block\">Changes the size of this object to the specified width and height.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GResizable.html#setSize-acm.graphics.GDimension-\">setSize</a></span>(acm.graphics.GDimension&nbsp;size)</code>\n<div class=\"block\">Changes the size of this object as specified by the <code>GDimension</code>\n object.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"setSize-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setSize</h4>\n<pre>void&nbsp;setSize(double&nbsp;width,\n             double&nbsp;height)</pre>\n<div class=\"block\">Changes the size of this object to the specified width and height.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>width</code> - The new width of the object</dd>\n<dd><code>height</code> - The new height of the object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.setSize(width, height);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setSize-acm.graphics.GDimension-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setSize</h4>\n<pre>void&nbsp;setSize(acm.graphics.GDimension&nbsp;size)</pre>\n<div class=\"block\">Changes the size of this object as specified by the <code>GDimension</code>\n object.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>size</code> - A <code>GDimension</code> object specifying the new size</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.setSize(size);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setBounds-double-double-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setBounds</h4>\n<pre>void&nbsp;setBounds(double&nbsp;x,\n               double&nbsp;y,\n               double&nbsp;width,\n               double&nbsp;height)</pre>\n<div class=\"block\">Changes the bounds of this object to the specified values.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x</code> - The new x-coordinate for the object</dd>\n<dd><code>y</code> - The new y-coordinate for the object</dd>\n<dd><code>width</code> - The new width of the object</dd>\n<dd><code>height</code> - The new height of the object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.setBounds(x, y, width, height);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setBounds-acm.graphics.GRectangle-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>setBounds</h4>\n<pre>void&nbsp;setBounds(<a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a>&nbsp;bounds)</pre>\n<div class=\"block\">Changes the bounds of this object to the values from the specified\n <code>GRectangle</code>.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>bounds</code> - A <code>GRectangle</code> specifying the new bounds</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.setBounds(bounds);</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/graphics/GScalable.html\" title=\"interface in acm.graphics\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/graphics/GResizable.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GResizable.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/graphics/GScalable.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>GScalable</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GScalable\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":6,\"i1\":6};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],4:[\"t3\",\"Abstract Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/graphics/GResizable.html\" title=\"interface in acm.graphics\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li>Next&nbsp;Class</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/graphics/GScalable.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GScalable.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.graphics</div>\n<h2 title=\"Interface GScalable\" class=\"title\">Interface GScalable</h2>\n</div>\n<div class=\"contentContainer\">\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Known Implementing Classes:</dt>\n<dd><a href=\"../../acm/graphics/G3DRect.html\" title=\"class in acm.graphics\">G3DRect</a>, <a href=\"../../acm/graphics/GCompound.html\" title=\"class in acm.graphics\">GCompound</a>, <a href=\"../../acm/graphics/GImage.html\" title=\"class in acm.graphics\">GImage</a>, <a href=\"../../acm/graphics/GLabel.html\" title=\"class in acm.graphics\">GLabel</a>, <a href=\"../../acm/graphics/GLine.html\" title=\"class in acm.graphics\">GLine</a>, <a href=\"../../acm/graphics/GLineGroup.html\" title=\"class in acm.graphics\">GLineGroup</a>, <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>, <a href=\"../../acm/graphics/GOval.html\" title=\"class in acm.graphics\">GOval</a>, acm.graphics.GRect</dd>\n</dl>\n<hr>\n<br>\n<pre>public interface <span class=\"typeNameLabel\">GScalable</span></pre>\n<div class=\"block\">Specifies the characteristics of a graphical object that supports the\n <code>scale</code> method.</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t3\" class=\"tableTab\"><span><a href=\"javascript:show(4);\">Abstract Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GScalable.html#scale-double-\">scale</a></span>(double&nbsp;sf)</code>\n<div class=\"block\">Scales the object on the screen by the scale factor <code>sf</code>, which applies\n in both dimensions.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/graphics/GScalable.html#scale-double-double-\">scale</a></span>(double&nbsp;sx,\n     double&nbsp;sy)</code>\n<div class=\"block\">Scales the object on the screen by the scale factors <code>sx</code> and <code>sy</code>.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"scale-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>scale</h4>\n<pre>void&nbsp;scale(double&nbsp;sx,\n           double&nbsp;sy)</pre>\n<div class=\"block\">Scales the object on the screen by the scale factors <code>sx</code> and <code>sy</code>.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>sx</code> - The factor used to scale all coordinates in the x direction</dd>\n<dd><code>sy</code> - The factor used to scale all coordinates in the y direction</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.scale(sx, sy);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"scale-double-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>scale</h4>\n<pre>void&nbsp;scale(double&nbsp;sf)</pre>\n<div class=\"block\">Scales the object on the screen by the scale factor <code>sf</code>, which applies\n in both dimensions.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>sf</code> - The factor used to scale all coordinates in both dimensions</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>gobj.scale(sf);</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/graphics/GResizable.html\" title=\"interface in acm.graphics\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li>Next&nbsp;Class</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/graphics/GScalable.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GScalable.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/graphics/package-frame.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>acm.graphics</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<h1 class=\"bar\"><a href=\"../../acm/graphics/package-summary.html\" target=\"classFrame\">acm.graphics</a></h1>\n<div class=\"indexContainer\">\n<h2 title=\"Interfaces\">Interfaces</h2>\n<ul title=\"Interfaces\">\n<li><a href=\"GCanvasInterface.html\" title=\"interface in acm.graphics\" target=\"classFrame\"><span class=\"interfaceName\">GCanvasInterface</span></a></li>\n<li><a href=\"GContainer.html\" title=\"interface in acm.graphics\" target=\"classFrame\"><span class=\"interfaceName\">GContainer</span></a></li>\n<li><a href=\"GResizable.html\" title=\"interface in acm.graphics\" target=\"classFrame\"><span class=\"interfaceName\">GResizable</span></a></li>\n<li><a href=\"GScalable.html\" title=\"interface in acm.graphics\" target=\"classFrame\"><span class=\"interfaceName\">GScalable</span></a></li>\n</ul>\n<h2 title=\"Classes\">Classes</h2>\n<ul title=\"Classes\">\n<li><a href=\"G3DRect.html\" title=\"class in acm.graphics\" target=\"classFrame\">G3DRect</a></li>\n<li><a href=\"GCanvas.html\" title=\"class in acm.graphics\" target=\"classFrame\">GCanvas</a></li>\n<li><a href=\"GCompound.html\" title=\"class in acm.graphics\" target=\"classFrame\">GCompound</a></li>\n<li><a href=\"GImage.html\" title=\"class in acm.graphics\" target=\"classFrame\">GImage</a></li>\n<li><a href=\"GLabel.html\" title=\"class in acm.graphics\" target=\"classFrame\">GLabel</a></li>\n<li><a href=\"GLine.html\" title=\"class in acm.graphics\" target=\"classFrame\">GLine</a></li>\n<li><a href=\"GLineGroup.html\" title=\"class in acm.graphics\" target=\"classFrame\">GLineGroup</a></li>\n<li><a href=\"GMath.html\" title=\"class in acm.graphics\" target=\"classFrame\">GMath</a></li>\n<li><a href=\"GObject.html\" title=\"class in acm.graphics\" target=\"classFrame\">GObject</a></li>\n<li><a href=\"GOval.html\" title=\"class in acm.graphics\" target=\"classFrame\">GOval</a></li>\n<li><a href=\"GPoint.html\" title=\"class in acm.graphics\" target=\"classFrame\">GPoint</a></li>\n<li><a href=\"GRectangle.html\" title=\"class in acm.graphics\" target=\"classFrame\">GRectangle</a></li>\n</ul>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/graphics/package-summary.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>acm.graphics</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"acm.graphics\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li class=\"navBarCell1Rev\">Package</li>\n<li>Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Package</li>\n<li><a href=\"../../acm/gui/package-summary.html\">Next&nbsp;Package</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/graphics/package-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 title=\"Package\" class=\"title\">Package&nbsp;acm.graphics</h1>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Interface Summary table, listing interfaces, and an explanation\">\n<caption><span>Interface Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Interface</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a></td>\n<td class=\"colLast\">\n<div class=\"block\">Defines the functionality of an object that can serve as the parent\n of a <a href=\"GObject.html\"><code>GObject</code></a>.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../acm/graphics/GResizable.html\" title=\"interface in acm.graphics\">GResizable</a></td>\n<td class=\"colLast\">\n<div class=\"block\">Specifies the characteristics of a graphical object that supports the\n <code>setSize</code> and <code>setBounds</code> methods.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a></td>\n<td class=\"colLast\">\n<div class=\"block\">Specifies the characteristics of a graphical object that supports the\n <code>scale</code> method.</div>\n</td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Class Summary table, listing classes, and an explanation\">\n<caption><span>Class Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Class</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../acm/graphics/G3DRect.html\" title=\"class in acm.graphics\">G3DRect</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></td>\n<td class=\"colLast\">\n<div class=\"block\">The <code>GCanvas</code> class is a lightweight component that also\n serves as a container for graphical objects.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../acm/graphics/GCompound.html\" title=\"class in acm.graphics\">GCompound</a></td>\n<td class=\"colLast\">\n<div class=\"block\">This class defines a graphical object that consists of a collection\n of other graphical objects.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../acm/graphics/GImage.html\" title=\"class in acm.graphics\">GImage</a></td>\n<td class=\"colLast\">\n<div class=\"block\">The <code>GImage</code> class is a graphical object whose appearance is\n defined by an image.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../acm/graphics/GLabel.html\" title=\"class in acm.graphics\">GLabel</a></td>\n<td class=\"colLast\">\n<div class=\"block\">The <code>GLabel</code> class is a graphical object whose appearance\n consists of a text string.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../acm/graphics/GLine.html\" title=\"class in acm.graphics\">GLine</a></td>\n<td class=\"colLast\">\n<div class=\"block\">The <code>GLine</code> class is a graphical object whose appearance consists\n of a line segment.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../acm/graphics/GLineGroup.html\" title=\"class in acm.graphics\">GLineGroup</a></td>\n<td class=\"colLast\">\n<div class=\"block\">A line group represents a collection of points that form line segments.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../acm/graphics/GMath.html\" title=\"class in acm.graphics\">GMath</a></td>\n<td class=\"colLast\">\n<div class=\"block\">This class defines a variety of static mathematical methods that are useful\n for the <code>acm.graphics</code> package.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></td>\n<td class=\"colLast\">\n<div class=\"block\">This class is the common superclass of all graphical objects that can\n be displayed on a <a href=\"GCanvas.html\"><code>GCanvas</code></a>.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../acm/graphics/GOval.html\" title=\"class in acm.graphics\">GOval</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a></td>\n<td class=\"colLast\">\n<div class=\"block\">This class is a double-precision version of the <code>Point</code> class in\n <code>java.awt</code>.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></td>\n<td class=\"colLast\">\n<div class=\"block\">This class is a double-precision version of the <code>Rectangle</code> class\n in <code>java.awt</code>.</div>\n</td>\n</tr>\n</tbody>\n</table>\n</li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li class=\"navBarCell1Rev\">Package</li>\n<li>Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Package</li>\n<li><a href=\"../../acm/gui/package-summary.html\">Next&nbsp;Package</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/graphics/package-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/graphics/package-tree.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>acm.graphics Class Hierarchy</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"acm.graphics Class Hierarchy\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev</li>\n<li><a href=\"../../acm/gui/package-tree.html\">Next</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/graphics/package-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 class=\"title\">Hierarchy For Package acm.graphics</h1>\n<span class=\"packageHierarchyLabel\">Package Hierarchies:</span>\n<ul class=\"horizontal\">\n<li><a href=\"../../overview-tree.html\">All Packages</a></li>\n</ul>\n</div>\n<div class=\"contentContainer\">\n<h2 title=\"Class Hierarchy\">Class Hierarchy</h2>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Object</span></a>\n<ul>\n<li type=\"circle\">java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\"><span class=\"typeNameLink\">Component</span></a> (implements java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\"><span class=\"typeNameLink\">Container</span></a>\n<ul>\n<li type=\"circle\">javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\"><span class=\"typeNameLink\">JComponent</span></a> (implements java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">acm.graphics.<a href=\"../../acm/graphics/GCanvas.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">GCanvas</span></a> (implements acm.graphics.<a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a>, acm.graphics.<a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a>, java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;T&gt;)</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li type=\"circle\">acm.graphics.<a href=\"../../acm/graphics/GMath.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">GMath</span></a></li>\n<li type=\"circle\">acm.graphics.<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">GObject</span></a> (implements java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true\" title=\"class or interface in java.lang\">Cloneable</a>, acm.graphics.<a href=\"../../acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a>, java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">acm.graphics.<a href=\"../../acm/graphics/GCompound.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">GCompound</span></a> (implements acm.graphics.<a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a>, acm.graphics.<a href=\"../../acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a>, java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;T&gt;)</li>\n<li type=\"circle\">acm.graphics.<a href=\"../../acm/graphics/GImage.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">GImage</span></a> (implements acm.graphics.<a href=\"../../acm/graphics/GResizable.html\" title=\"interface in acm.graphics\">GResizable</a>, acm.graphics.<a href=\"../../acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a>)</li>\n<li type=\"circle\">acm.graphics.<a href=\"../../acm/graphics/GLabel.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">GLabel</span></a></li>\n<li type=\"circle\">acm.graphics.<a href=\"../../acm/graphics/GLine.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">GLine</span></a> (implements acm.graphics.<a href=\"../../acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a>)</li>\n<li type=\"circle\">acm.graphics.<a href=\"../../acm/graphics/GLineGroup.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">GLineGroup</span></a> (implements java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;T&gt;)</li>\n<li type=\"circle\">acm.graphics.<a href=\"../../acm/graphics/GOval.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">GOval</span></a> (implements acm.graphics.GFillable, acm.graphics.<a href=\"../../acm/graphics/GResizable.html\" title=\"interface in acm.graphics\">GResizable</a>)</li>\n<li type=\"circle\">acm.graphics.GRect (implements acm.graphics.GFillable, acm.graphics.<a href=\"../../acm/graphics/GResizable.html\" title=\"interface in acm.graphics\">GResizable</a>)\n<ul>\n<li type=\"circle\">acm.graphics.<a href=\"../../acm/graphics/G3DRect.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">G3DRect</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li type=\"circle\">acm.graphics.<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">GPoint</span></a> (implements java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)</li>\n<li type=\"circle\">acm.graphics.<a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">GRectangle</span></a> (implements java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)</li>\n</ul>\n</li>\n</ul>\n<h2 title=\"Interface Hierarchy\">Interface Hierarchy</h2>\n<ul>\n<li type=\"circle\">acm.graphics.<a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\"><span class=\"typeNameLink\">GCanvasInterface</span></a></li>\n<li type=\"circle\">acm.graphics.<a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\"><span class=\"typeNameLink\">GContainer</span></a></li>\n<li type=\"circle\">acm.graphics.<a href=\"../../acm/graphics/GResizable.html\" title=\"interface in acm.graphics\"><span class=\"typeNameLink\">GResizable</span></a></li>\n<li type=\"circle\">acm.graphics.<a href=\"../../acm/graphics/GScalable.html\" title=\"interface in acm.graphics\"><span class=\"typeNameLink\">GScalable</span></a></li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev</li>\n<li><a href=\"../../acm/gui/package-tree.html\">Next</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/graphics/package-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/gui/DoubleField.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:11 PDT 2017 -->\n<title>DoubleField</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"DoubleField\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Class</li>\n<li><a href=\"../../acm/gui/Event.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/gui/DoubleField.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"DoubleField.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JTextField\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.javax.swing.JTextField\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.gui</div>\n<h2 title=\"Class DoubleField\" class=\"title\">Class DoubleField</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Component</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Container</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JComponent</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true\" title=\"class or interface in javax.swing.text\">javax.swing.text.JTextComponent</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JTextField</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.gui.DoubleField</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Scrollable.html?is-external=true\" title=\"class or interface in javax.swing\">Scrollable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true\" title=\"class or interface in javax.swing\">SwingConstants</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">DoubleField</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField</a></pre>\n<div class=\"block\">This class implements a simple interactor that accepts a floating-point value.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#acm.gui.DoubleField\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JTextField\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.AccessibleJTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField.AccessibleJTextField</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.text.JTextComponent\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.text.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true\" title=\"class or interface in javax.swing.text\">JTextComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.AccessibleJTextComponent.html?is-external=true\" title=\"class or interface in javax.swing.text\">JTextComponent.AccessibleJTextComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.DropLocation.html?is-external=true\" title=\"class or interface in javax.swing.text\">JTextComponent.DropLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.KeyBinding.html?is-external=true\" title=\"class or interface in javax.swing.text\">JTextComponent.KeyBinding</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.AccessibleJComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent.AccessibleJComponent</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.AccessibleAWTContainer.html?is-external=true\" title=\"class or interface in java.awt\">Container.AccessibleAWTContainer</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.AccessibleAWTComponent.html?is-external=true\" title=\"class or interface in java.awt\">Component.AccessibleAWTComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BaselineResizeBehavior.html?is-external=true\" title=\"class or interface in java.awt\">Component.BaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BltBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.BltBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.FlipBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.FlipBufferStrategy</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.JTextField\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#notifyAction\" title=\"class or interface in javax.swing\">notifyAction</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.text.JTextComponent\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.text.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true\" title=\"class or interface in javax.swing.text\">JTextComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#DEFAULT_KEYMAP\" title=\"class or interface in javax.swing.text\">DEFAULT_KEYMAP</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#FOCUS_ACCELERATOR_KEY\" title=\"class or interface in javax.swing.text\">FOCUS_ACCELERATOR_KEY</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#listenerList\" title=\"class or interface in javax.swing\">listenerList</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#TOOL_TIP_TEXT_KEY\" title=\"class or interface in javax.swing\">TOOL_TIP_TEXT_KEY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#ui\" title=\"class or interface in javax.swing\">ui</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#UNDEFINED_CONDITION\" title=\"class or interface in javax.swing\">UNDEFINED_CONDITION</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_ANCESTOR_OF_FOCUSED_COMPONENT\" title=\"class or interface in javax.swing\">WHEN_ANCESTOR_OF_FOCUSED_COMPONENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_FOCUSED\" title=\"class or interface in javax.swing\">WHEN_FOCUSED</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_IN_FOCUSED_WINDOW\" title=\"class or interface in javax.swing\">WHEN_IN_FOCUSED_WINDOW</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#accessibleContext\" title=\"class or interface in java.awt\">accessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#BOTTOM_ALIGNMENT\" title=\"class or interface in java.awt\">BOTTOM_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#CENTER_ALIGNMENT\" title=\"class or interface in java.awt\">CENTER_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#LEFT_ALIGNMENT\" title=\"class or interface in java.awt\">LEFT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#RIGHT_ALIGNMENT\" title=\"class or interface in java.awt\">RIGHT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#TOP_ALIGNMENT\" title=\"class or interface in java.awt\">TOP_ALIGNMENT</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.SwingConstants\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true\" title=\"class or interface in javax.swing\">SwingConstants</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#BOTTOM\" title=\"class or interface in javax.swing\">BOTTOM</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#CENTER\" title=\"class or interface in javax.swing\">CENTER</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#EAST\" title=\"class or interface in javax.swing\">EAST</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#HORIZONTAL\" title=\"class or interface in javax.swing\">HORIZONTAL</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#LEADING\" title=\"class or interface in javax.swing\">LEADING</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#LEFT\" title=\"class or interface in javax.swing\">LEFT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#NEXT\" title=\"class or interface in javax.swing\">NEXT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#NORTH\" title=\"class or interface in javax.swing\">NORTH</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#NORTH_EAST\" title=\"class or interface in javax.swing\">NORTH_EAST</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#NORTH_WEST\" title=\"class or interface in javax.swing\">NORTH_WEST</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#PREVIOUS\" title=\"class or interface in javax.swing\">PREVIOUS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#RIGHT\" title=\"class or interface in javax.swing\">RIGHT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#SOUTH\" title=\"class or interface in javax.swing\">SOUTH</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#SOUTH_EAST\" title=\"class or interface in javax.swing\">SOUTH_EAST</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#SOUTH_WEST\" title=\"class or interface in javax.swing\">SOUTH_WEST</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#TOP\" title=\"class or interface in javax.swing\">TOP</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#TRAILING\" title=\"class or interface in javax.swing\">TRAILING</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#VERTICAL\" title=\"class or interface in javax.swing\">VERTICAL</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#WEST\" title=\"class or interface in javax.swing\">WEST</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.image.ImageObserver\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ABORT\" title=\"class or interface in java.awt.image\">ABORT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ALLBITS\" title=\"class or interface in java.awt.image\">ALLBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ERROR\" title=\"class or interface in java.awt.image\">ERROR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#FRAMEBITS\" title=\"class or interface in java.awt.image\">FRAMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#HEIGHT\" title=\"class or interface in java.awt.image\">HEIGHT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#PROPERTIES\" title=\"class or interface in java.awt.image\">PROPERTIES</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#SOMEBITS\" title=\"class or interface in java.awt.image\">SOMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#WIDTH\" title=\"class or interface in java.awt.image\">WIDTH</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/DoubleField.html#DoubleField--\">DoubleField</a></span>()</code>\n<div class=\"block\">Creates a new field object for entering a <code>double</code> value.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/DoubleField.html#DoubleField-double-\">DoubleField</a></span>(double&nbsp;value)</code>\n<div class=\"block\">Creates a new field object for entering a <code>double</code> value.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/DoubleField.html#DoubleField-double-double-\">DoubleField</a></span>(double&nbsp;low,\n           double&nbsp;high)</code>\n<div class=\"block\">Creates a new field object for entering a <code>double</code> value,\n which is constrained to be within the specified range.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/DoubleField.html#DoubleField-double-double-double-\">DoubleField</a></span>(double&nbsp;value,\n           double&nbsp;low,\n           double&nbsp;high)</code>\n<div class=\"block\">Creates a new field object for entering a <code>double</code> value,\n which is constrained to be within the specified range.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/DoubleField.html#getExceptionOnError--\">getExceptionOnError</a></span>()</code>\n<div class=\"block\">Returns the state of the error-handling flag.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/DoubleField.html#getFormat--\">getFormat</a></span>()</code>\n<div class=\"block\">Returns the format currently in use for this field, or\n <code>null</code> if no format has been set.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/DoubleField.html#getPreferredSize--\">getPreferredSize</a></span>()</code>\n<div class=\"block\">Overrides the standard definition to impose a target size.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/DoubleField.html#getValue--\">getValue</a></span>()</code>\n<div class=\"block\">Returns the value of this field as a <code>double</code>.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/DoubleField.html#setExceptionOnError-boolean-\">setExceptionOnError</a></span>(boolean&nbsp;flag)</code>\n<div class=\"block\">Sets the error-handling mode of this interactor as specified by the <code>flag</code>\n parameter.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/DoubleField.html#setFormat-java.lang.String-\">setFormat</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;format)</code>\n<div class=\"block\">Sets the format used for the field.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/DoubleField.html#setValue-double-\">setValue</a></span>(double&nbsp;d)</code>\n<div class=\"block\">Sets the value of a field.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JTextField\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#actionPropertyChanged-javax.swing.Action-java.lang.String-\" title=\"class or interface in javax.swing\">actionPropertyChanged</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#addActionListener-java.awt.event.ActionListener-\" title=\"class or interface in javax.swing\">addActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#configurePropertiesFromAction-javax.swing.Action-\" title=\"class or interface in javax.swing\">configurePropertiesFromAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#createActionPropertyChangeListener-javax.swing.Action-\" title=\"class or interface in javax.swing\">createActionPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#createDefaultModel--\" title=\"class or interface in javax.swing\">createDefaultModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#fireActionPerformed--\" title=\"class or interface in javax.swing\">fireActionPerformed</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#getAccessibleContext--\" title=\"class or interface in javax.swing\">getAccessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#getAction--\" title=\"class or interface in javax.swing\">getAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#getActionListeners--\" title=\"class or interface in javax.swing\">getActionListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#getActions--\" title=\"class or interface in javax.swing\">getActions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#getColumns--\" title=\"class or interface in javax.swing\">getColumns</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#getColumnWidth--\" title=\"class or interface in javax.swing\">getColumnWidth</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#getHorizontalAlignment--\" title=\"class or interface in javax.swing\">getHorizontalAlignment</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#getHorizontalVisibility--\" title=\"class or interface in javax.swing\">getHorizontalVisibility</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#getScrollOffset--\" title=\"class or interface in javax.swing\">getScrollOffset</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#getUIClassID--\" title=\"class or interface in javax.swing\">getUIClassID</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#isValidateRoot--\" title=\"class or interface in javax.swing\">isValidateRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#paramString--\" title=\"class or interface in javax.swing\">paramString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#postActionEvent--\" title=\"class or interface in javax.swing\">postActionEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#removeActionListener-java.awt.event.ActionListener-\" title=\"class or interface in javax.swing\">removeActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#scrollRectToVisible-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">scrollRectToVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#setAction-javax.swing.Action-\" title=\"class or interface in javax.swing\">setAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#setActionCommand-java.lang.String-\" title=\"class or interface in javax.swing\">setActionCommand</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#setColumns-int-\" title=\"class or interface in javax.swing\">setColumns</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#setDocument-javax.swing.text.Document-\" title=\"class or interface in javax.swing\">setDocument</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#setFont-java.awt.Font-\" title=\"class or interface in javax.swing\">setFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#setHorizontalAlignment-int-\" title=\"class or interface in javax.swing\">setHorizontalAlignment</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#setScrollOffset-int-\" title=\"class or interface in javax.swing\">setScrollOffset</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.text.JTextComponent\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.text.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true\" title=\"class or interface in javax.swing.text\">JTextComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#addCaretListener-javax.swing.event.CaretListener-\" title=\"class or interface in javax.swing.text\">addCaretListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#addInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in javax.swing.text\">addInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#addKeymap-java.lang.String-javax.swing.text.Keymap-\" title=\"class or interface in javax.swing.text\">addKeymap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#copy--\" title=\"class or interface in javax.swing.text\">copy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#cut--\" title=\"class or interface in javax.swing.text\">cut</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#fireCaretUpdate-javax.swing.event.CaretEvent-\" title=\"class or interface in javax.swing.text\">fireCaretUpdate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getCaret--\" title=\"class or interface in javax.swing.text\">getCaret</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getCaretColor--\" title=\"class or interface in javax.swing.text\">getCaretColor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getCaretListeners--\" title=\"class or interface in javax.swing.text\">getCaretListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getCaretPosition--\" title=\"class or interface in javax.swing.text\">getCaretPosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getDisabledTextColor--\" title=\"class or interface in javax.swing.text\">getDisabledTextColor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getDocument--\" title=\"class or interface in javax.swing.text\">getDocument</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getDragEnabled--\" title=\"class or interface in javax.swing.text\">getDragEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getDropLocation--\" title=\"class or interface in javax.swing.text\">getDropLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getDropMode--\" title=\"class or interface in javax.swing.text\">getDropMode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getFocusAccelerator--\" title=\"class or interface in javax.swing.text\">getFocusAccelerator</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getHighlighter--\" title=\"class or interface in javax.swing.text\">getHighlighter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getInputMethodRequests--\" title=\"class or interface in javax.swing.text\">getInputMethodRequests</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getKeymap--\" title=\"class or interface in javax.swing.text\">getKeymap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getKeymap-java.lang.String-\" title=\"class or interface in javax.swing.text\">getKeymap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getMargin--\" title=\"class or interface in javax.swing.text\">getMargin</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getNavigationFilter--\" title=\"class or interface in javax.swing.text\">getNavigationFilter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getPreferredScrollableViewportSize--\" title=\"class or interface in javax.swing.text\">getPreferredScrollableViewportSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getPrintable-java.text.MessageFormat-java.text.MessageFormat-\" title=\"class or interface in javax.swing.text\">getPrintable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getScrollableBlockIncrement-java.awt.Rectangle-int-int-\" title=\"class or interface in javax.swing.text\">getScrollableBlockIncrement</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getScrollableTracksViewportHeight--\" title=\"class or interface in javax.swing.text\">getScrollableTracksViewportHeight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getScrollableTracksViewportWidth--\" title=\"class or interface in javax.swing.text\">getScrollableTracksViewportWidth</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getScrollableUnitIncrement-java.awt.Rectangle-int-int-\" title=\"class or interface in javax.swing.text\">getScrollableUnitIncrement</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getSelectedText--\" title=\"class or interface in javax.swing.text\">getSelectedText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getSelectedTextColor--\" title=\"class or interface in javax.swing.text\">getSelectedTextColor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getSelectionColor--\" title=\"class or interface in javax.swing.text\">getSelectionColor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getSelectionEnd--\" title=\"class or interface in javax.swing.text\">getSelectionEnd</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getSelectionStart--\" title=\"class or interface in javax.swing.text\">getSelectionStart</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getText--\" title=\"class or interface in javax.swing.text\">getText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getText-int-int-\" title=\"class or interface in javax.swing.text\">getText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getToolTipText-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing.text\">getToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getUI--\" title=\"class or interface in javax.swing.text\">getUI</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#isEditable--\" title=\"class or interface in javax.swing.text\">isEditable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#loadKeymap-javax.swing.text.Keymap-javax.swing.text.JTextComponent.KeyBinding:A-javax.swing.Action:A-\" title=\"class or interface in javax.swing.text\">loadKeymap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#modelToView-int-\" title=\"class or interface in javax.swing.text\">modelToView</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#moveCaretPosition-int-\" title=\"class or interface in javax.swing.text\">moveCaretPosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#paste--\" title=\"class or interface in javax.swing.text\">paste</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#print--\" title=\"class or interface in javax.swing.text\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#print-java.text.MessageFormat-java.text.MessageFormat-\" title=\"class or interface in javax.swing.text\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#print-java.text.MessageFormat-java.text.MessageFormat-boolean-javax.print.PrintService-javax.print.attribute.PrintRequestAttributeSet-boolean-\" title=\"class or interface in javax.swing.text\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#processInputMethodEvent-java.awt.event.InputMethodEvent-\" title=\"class or interface in javax.swing.text\">processInputMethodEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#read-java.io.Reader-java.lang.Object-\" title=\"class or interface in javax.swing.text\">read</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#removeCaretListener-javax.swing.event.CaretListener-\" title=\"class or interface in javax.swing.text\">removeCaretListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#removeKeymap-java.lang.String-\" title=\"class or interface in javax.swing.text\">removeKeymap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#removeNotify--\" title=\"class or interface in javax.swing.text\">removeNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#replaceSelection-java.lang.String-\" title=\"class or interface in javax.swing.text\">replaceSelection</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#restoreComposedText--\" title=\"class or interface in javax.swing.text\">restoreComposedText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#saveComposedText-int-\" title=\"class or interface in javax.swing.text\">saveComposedText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#select-int-int-\" title=\"class or interface in javax.swing.text\">select</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#selectAll--\" title=\"class or interface in javax.swing.text\">selectAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setCaret-javax.swing.text.Caret-\" title=\"class or interface in javax.swing.text\">setCaret</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setCaretColor-java.awt.Color-\" title=\"class or interface in javax.swing.text\">setCaretColor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setCaretPosition-int-\" title=\"class or interface in javax.swing.text\">setCaretPosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in javax.swing.text\">setComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setDisabledTextColor-java.awt.Color-\" title=\"class or interface in javax.swing.text\">setDisabledTextColor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setDragEnabled-boolean-\" title=\"class or interface in javax.swing.text\">setDragEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setDropMode-javax.swing.DropMode-\" title=\"class or interface in javax.swing.text\">setDropMode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setEditable-boolean-\" title=\"class or interface in javax.swing.text\">setEditable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setFocusAccelerator-char-\" title=\"class or interface in javax.swing.text\">setFocusAccelerator</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setHighlighter-javax.swing.text.Highlighter-\" title=\"class or interface in javax.swing.text\">setHighlighter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setKeymap-javax.swing.text.Keymap-\" title=\"class or interface in javax.swing.text\">setKeymap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setMargin-java.awt.Insets-\" title=\"class or interface in javax.swing.text\">setMargin</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setNavigationFilter-javax.swing.text.NavigationFilter-\" title=\"class or interface in javax.swing.text\">setNavigationFilter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setSelectedTextColor-java.awt.Color-\" title=\"class or interface in javax.swing.text\">setSelectedTextColor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setSelectionColor-java.awt.Color-\" title=\"class or interface in javax.swing.text\">setSelectionColor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setSelectionEnd-int-\" title=\"class or interface in javax.swing.text\">setSelectionEnd</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setSelectionStart-int-\" title=\"class or interface in javax.swing.text\">setSelectionStart</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setText-java.lang.String-\" title=\"class or interface in javax.swing.text\">setText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setUI-javax.swing.plaf.TextUI-\" title=\"class or interface in javax.swing.text\">setUI</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#updateUI--\" title=\"class or interface in javax.swing.text\">updateUI</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#viewToModel-java.awt.Point-\" title=\"class or interface in javax.swing.text\">viewToModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#write-java.io.Writer-\" title=\"class or interface in javax.swing.text\">write</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addAncestorListener-javax.swing.event.AncestorListener-\" title=\"class or interface in javax.swing\">addAncestorListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addNotify--\" title=\"class or interface in javax.swing\">addNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addVetoableChangeListener-java.beans.VetoableChangeListener-\" title=\"class or interface in javax.swing\">addVetoableChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#computeVisibleRect-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">computeVisibleRect</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#contains-int-int-\" title=\"class or interface in javax.swing\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#createToolTip--\" title=\"class or interface in javax.swing\">createToolTip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#disable--\" title=\"class or interface in javax.swing\">disable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#enable--\" title=\"class or interface in javax.swing\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-boolean-boolean-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-char-char-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-int-int-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#fireVetoableChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in javax.swing\">fireVetoableChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getActionForKeyStroke-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">getActionForKeyStroke</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getActionMap--\" title=\"class or interface in javax.swing\">getActionMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAlignmentX--\" title=\"class or interface in javax.swing\">getAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAlignmentY--\" title=\"class or interface in javax.swing\">getAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAncestorListeners--\" title=\"class or interface in javax.swing\">getAncestorListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAutoscrolls--\" title=\"class or interface in javax.swing\">getAutoscrolls</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBaseline-int-int-\" title=\"class or interface in javax.swing\">getBaseline</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBaselineResizeBehavior--\" title=\"class or interface in javax.swing\">getBaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBorder--\" title=\"class or interface in javax.swing\">getBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBounds-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getClientProperty-java.lang.Object-\" title=\"class or interface in javax.swing\">getClientProperty</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getComponentGraphics-java.awt.Graphics-\" title=\"class or interface in javax.swing\">getComponentGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getComponentPopupMenu--\" title=\"class or interface in javax.swing\">getComponentPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getConditionForKeyStroke-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">getConditionForKeyStroke</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getDebugGraphicsOptions--\" title=\"class or interface in javax.swing\">getDebugGraphicsOptions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getDefaultLocale--\" title=\"class or interface in javax.swing\">getDefaultLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getFontMetrics-java.awt.Font-\" title=\"class or interface in javax.swing\">getFontMetrics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getGraphics--\" title=\"class or interface in javax.swing\">getGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getHeight--\" title=\"class or interface in javax.swing\">getHeight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInheritsPopupMenu--\" title=\"class or interface in javax.swing\">getInheritsPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputMap--\" title=\"class or interface in javax.swing\">getInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputMap-int-\" title=\"class or interface in javax.swing\">getInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputVerifier--\" title=\"class or interface in javax.swing\">getInputVerifier</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInsets--\" title=\"class or interface in javax.swing\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInsets-java.awt.Insets-\" title=\"class or interface in javax.swing\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getListeners-java.lang.Class-\" title=\"class or interface in javax.swing\">getListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getLocation-java.awt.Point-\" title=\"class or interface in javax.swing\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getMaximumSize--\" title=\"class or interface in javax.swing\">getMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getMinimumSize--\" title=\"class or interface in javax.swing\">getMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getNextFocusableComponent--\" title=\"class or interface in javax.swing\">getNextFocusableComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getPopupLocation-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">getPopupLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getRegisteredKeyStrokes--\" title=\"class or interface in javax.swing\">getRegisteredKeyStrokes</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getRootPane--\" title=\"class or interface in javax.swing\">getRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getToolTipLocation-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">getToolTipLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getToolTipText--\" title=\"class or interface in javax.swing\">getToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getTopLevelAncestor--\" title=\"class or interface in javax.swing\">getTopLevelAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getTransferHandler--\" title=\"class or interface in javax.swing\">getTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVerifyInputWhenFocusTarget--\" title=\"class or interface in javax.swing\">getVerifyInputWhenFocusTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVetoableChangeListeners--\" title=\"class or interface in javax.swing\">getVetoableChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVisibleRect--\" title=\"class or interface in javax.swing\">getVisibleRect</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getWidth--\" title=\"class or interface in javax.swing\">getWidth</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getX--\" title=\"class or interface in javax.swing\">getX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getY--\" title=\"class or interface in javax.swing\">getY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#grabFocus--\" title=\"class or interface in javax.swing\">grabFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#hide--\" title=\"class or interface in javax.swing\">hide</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isDoubleBuffered--\" title=\"class or interface in javax.swing\">isDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isLightweightComponent-java.awt.Component-\" title=\"class or interface in javax.swing\">isLightweightComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isManagingFocus--\" title=\"class or interface in javax.swing\">isManagingFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isOpaque--\" title=\"class or interface in javax.swing\">isOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isOptimizedDrawingEnabled--\" title=\"class or interface in javax.swing\">isOptimizedDrawingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingForPrint--\" title=\"class or interface in javax.swing\">isPaintingForPrint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingOrigin--\" title=\"class or interface in javax.swing\">isPaintingOrigin</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingTile--\" title=\"class or interface in javax.swing\">isPaintingTile</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isRequestFocusEnabled--\" title=\"class or interface in javax.swing\">isRequestFocusEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paint-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintBorder-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintChildren-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintChildren</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintComponent-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintImmediately-int-int-int-int-\" title=\"class or interface in javax.swing\">paintImmediately</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintImmediately-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">paintImmediately</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#print-java.awt.Graphics-\" title=\"class or interface in javax.swing\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printAll-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printBorder-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printChildren-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printChildren</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printComponent-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processComponentKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in javax.swing\">processComponentKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processKeyBinding-javax.swing.KeyStroke-java.awt.event.KeyEvent-int-boolean-\" title=\"class or interface in javax.swing\">processKeyBinding</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in javax.swing\">processKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processMouseEvent-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">processMouseEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processMouseMotionEvent-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">processMouseMotionEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#putClientProperty-java.lang.Object-java.lang.Object-\" title=\"class or interface in javax.swing\">putClientProperty</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#registerKeyboardAction-java.awt.event.ActionListener-javax.swing.KeyStroke-int-\" title=\"class or interface in javax.swing\">registerKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#registerKeyboardAction-java.awt.event.ActionListener-java.lang.String-javax.swing.KeyStroke-int-\" title=\"class or interface in javax.swing\">registerKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#removeAncestorListener-javax.swing.event.AncestorListener-\" title=\"class or interface in javax.swing\">removeAncestorListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#removeVetoableChangeListener-java.beans.VetoableChangeListener-\" title=\"class or interface in javax.swing\">removeVetoableChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#repaint-long-int-int-int-int-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#repaint-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestDefaultFocus--\" title=\"class or interface in javax.swing\">requestDefaultFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocus--\" title=\"class or interface in javax.swing\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocus-boolean-\" title=\"class or interface in javax.swing\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocusInWindow--\" title=\"class or interface in javax.swing\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocusInWindow-boolean-\" title=\"class or interface in javax.swing\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#resetKeyboardActions--\" title=\"class or interface in javax.swing\">resetKeyboardActions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#reshape-int-int-int-int-\" title=\"class or interface in javax.swing\">reshape</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#revalidate--\" title=\"class or interface in javax.swing\">revalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setActionMap-javax.swing.ActionMap-\" title=\"class or interface in javax.swing\">setActionMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAlignmentX-float-\" title=\"class or interface in javax.swing\">setAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAlignmentY-float-\" title=\"class or interface in javax.swing\">setAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAutoscrolls-boolean-\" title=\"class or interface in javax.swing\">setAutoscrolls</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setBackground-java.awt.Color-\" title=\"class or interface in javax.swing\">setBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setBorder-javax.swing.border.Border-\" title=\"class or interface in javax.swing\">setBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setComponentPopupMenu-javax.swing.JPopupMenu-\" title=\"class or interface in javax.swing\">setComponentPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDebugGraphicsOptions-int-\" title=\"class or interface in javax.swing\">setDebugGraphicsOptions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDefaultLocale-java.util.Locale-\" title=\"class or interface in javax.swing\">setDefaultLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDoubleBuffered-boolean-\" title=\"class or interface in javax.swing\">setDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setEnabled-boolean-\" title=\"class or interface in javax.swing\">setEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setFocusTraversalKeys-int-java.util.Set-\" title=\"class or interface in javax.swing\">setFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setForeground-java.awt.Color-\" title=\"class or interface in javax.swing\">setForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInheritsPopupMenu-boolean-\" title=\"class or interface in javax.swing\">setInheritsPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInputMap-int-javax.swing.InputMap-\" title=\"class or interface in javax.swing\">setInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInputVerifier-javax.swing.InputVerifier-\" title=\"class or interface in javax.swing\">setInputVerifier</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setMaximumSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setMinimumSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setNextFocusableComponent-java.awt.Component-\" title=\"class or interface in javax.swing\">setNextFocusableComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setOpaque-boolean-\" title=\"class or interface in javax.swing\">setOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setPreferredSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setRequestFocusEnabled-boolean-\" title=\"class or interface in javax.swing\">setRequestFocusEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setToolTipText-java.lang.String-\" title=\"class or interface in javax.swing\">setToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setTransferHandler-javax.swing.TransferHandler-\" title=\"class or interface in javax.swing\">setTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setUI-javax.swing.plaf.ComponentUI-\" title=\"class or interface in javax.swing\">setUI</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setVerifyInputWhenFocusTarget-boolean-\" title=\"class or interface in javax.swing\">setVerifyInputWhenFocusTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setVisible-boolean-\" title=\"class or interface in javax.swing\">setVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#unregisterKeyboardAction-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">unregisterKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#update-java.awt.Graphics-\" title=\"class or interface in javax.swing\">update</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.lang.String-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">addContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addImpl-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">addImpl</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#applyComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">applyComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#areFocusTraversalKeysSet-int-\" title=\"class or interface in java.awt\">areFocusTraversalKeysSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#countComponents--\" title=\"class or interface in java.awt\">countComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#deliverEvent-java.awt.Event-\" title=\"class or interface in java.awt\">deliverEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#doLayout--\" title=\"class or interface in java.awt\">doLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-int-int-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponent-int-\" title=\"class or interface in java.awt\">getComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-int-int-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentCount--\" title=\"class or interface in java.awt\">getComponentCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponents--\" title=\"class or interface in java.awt\">getComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentZOrder-java.awt.Component-\" title=\"class or interface in java.awt\">getComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getContainerListeners--\" title=\"class or interface in java.awt\">getContainerListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalKeys-int-\" title=\"class or interface in java.awt\">getFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalPolicy--\" title=\"class or interface in java.awt\">getFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getLayout--\" title=\"class or interface in java.awt\">getLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMousePosition-boolean-\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#insets--\" title=\"class or interface in java.awt\">insets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#invalidate--\" title=\"class or interface in java.awt\">invalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isAncestorOf-java.awt.Component-\" title=\"class or interface in java.awt\">isAncestorOf</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot--\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot-java.awt.Container-\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicyProvider--\" title=\"class or interface in java.awt\">isFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicySet--\" title=\"class or interface in java.awt\">isFocusTraversalPolicySet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#layout--\" title=\"class or interface in java.awt\">layout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintStream-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintWriter-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#locate-int-int-\" title=\"class or interface in java.awt\">locate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#minimumSize--\" title=\"class or interface in java.awt\">minimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paintComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#preferredSize--\" title=\"class or interface in java.awt\">preferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#printComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">printComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processContainerEvent-java.awt.event.ContainerEvent-\" title=\"class or interface in java.awt\">processContainerEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">processEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#remove-java.awt.Component-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#remove-int-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeAll--\" title=\"class or interface in java.awt\">removeAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">removeContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setComponentZOrder-java.awt.Component-int-\" title=\"class or interface in java.awt\">setComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusCycleRoot-boolean-\" title=\"class or interface in java.awt\">setFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicy-java.awt.FocusTraversalPolicy-\" title=\"class or interface in java.awt\">setFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicyProvider-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setLayout-java.awt.LayoutManager-\" title=\"class or interface in java.awt\">setLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#transferFocusDownCycle--\" title=\"class or interface in java.awt\">transferFocusDownCycle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validate--\" title=\"class or interface in java.awt\">validate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validateTree--\" title=\"class or interface in java.awt\">validateTree</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#action-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">action</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#add-java.awt.PopupMenu-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">addComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">addFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">addHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">addHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">addKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">addMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">addMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">addMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#bounds--\" title=\"class or interface in java.awt\">bounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#coalesceEvents-java.awt.AWTEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">coalesceEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-java.awt.Point-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-java.awt.image.ImageProducer-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-int-int-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-java.awt.ImageCapabilities-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disableEvents-long-\" title=\"class or interface in java.awt\">disableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#dispatchEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">dispatchEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable-boolean-\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableEvents-long-\" title=\"class or interface in java.awt\">enableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableInputMethods-boolean-\" title=\"class or interface in java.awt\">enableInputMethods</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-byte-byte-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-double-double-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-float-float-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-long-long-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-short-short-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBackground--\" title=\"class or interface in java.awt\">getBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds--\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getColorModel--\" title=\"class or interface in java.awt\">getColorModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentListeners--\" title=\"class or interface in java.awt\">getComponentListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentOrientation--\" title=\"class or interface in java.awt\">getComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getCursor--\" title=\"class or interface in java.awt\">getCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getDropTarget--\" title=\"class or interface in java.awt\">getDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusCycleRootAncestor--\" title=\"class or interface in java.awt\">getFocusCycleRootAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusListeners--\" title=\"class or interface in java.awt\">getFocusListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusTraversalKeysEnabled--\" title=\"class or interface in java.awt\">getFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFont--\" title=\"class or interface in java.awt\">getFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getForeground--\" title=\"class or interface in java.awt\">getForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getGraphicsConfiguration--\" title=\"class or interface in java.awt\">getGraphicsConfiguration</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyBoundsListeners--\" title=\"class or interface in java.awt\">getHierarchyBoundsListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyListeners--\" title=\"class or interface in java.awt\">getHierarchyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getIgnoreRepaint--\" title=\"class or interface in java.awt\">getIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputContext--\" title=\"class or interface in java.awt\">getInputContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodListeners--\" title=\"class or interface in java.awt\">getInputMethodListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getKeyListeners--\" title=\"class or interface in java.awt\">getKeyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocale--\" title=\"class or interface in java.awt\">getLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation--\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocationOnScreen--\" title=\"class or interface in java.awt\">getLocationOnScreen</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseListeners--\" title=\"class or interface in java.awt\">getMouseListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseMotionListeners--\" title=\"class or interface in java.awt\">getMouseMotionListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMousePosition--\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseWheelListeners--\" title=\"class or interface in java.awt\">getMouseWheelListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getName--\" title=\"class or interface in java.awt\">getName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getParent--\" title=\"class or interface in java.awt\">getParent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPeer--\" title=\"class or interface in java.awt\">getPeer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners--\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners-java.lang.String-\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize--\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getToolkit--\" title=\"class or interface in java.awt\">getToolkit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getTreeLock--\" title=\"class or interface in java.awt\">getTreeLock</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#gotFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">gotFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#handleEvent-java.awt.Event-\" title=\"class or interface in java.awt\">handleEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hasFocus--\" title=\"class or interface in java.awt\">hasFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#imageUpdate-java.awt.Image-int-int-int-int-int-\" title=\"class or interface in java.awt\">imageUpdate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#inside-int-int-\" title=\"class or interface in java.awt\">inside</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isBackgroundSet--\" title=\"class or interface in java.awt\">isBackgroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isCursorSet--\" title=\"class or interface in java.awt\">isCursorSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDisplayable--\" title=\"class or interface in java.awt\">isDisplayable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isEnabled--\" title=\"class or interface in java.awt\">isEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusable--\" title=\"class or interface in java.awt\">isFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusOwner--\" title=\"class or interface in java.awt\">isFocusOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusTraversable--\" title=\"class or interface in java.awt\">isFocusTraversable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFontSet--\" title=\"class or interface in java.awt\">isFontSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isForegroundSet--\" title=\"class or interface in java.awt\">isForegroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isLightweight--\" title=\"class or interface in java.awt\">isLightweight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMaximumSizeSet--\" title=\"class or interface in java.awt\">isMaximumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMinimumSizeSet--\" title=\"class or interface in java.awt\">isMinimumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isPreferredSizeSet--\" title=\"class or interface in java.awt\">isPreferredSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isShowing--\" title=\"class or interface in java.awt\">isShowing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isValid--\" title=\"class or interface in java.awt\">isValid</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isVisible--\" title=\"class or interface in java.awt\">isVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyDown-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyUp-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list--\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintStream-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintWriter-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#location--\" title=\"class or interface in java.awt\">location</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#lostFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">lostFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDown-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDrag-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDrag</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseEnter-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseEnter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseExit-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseExit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseMove-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseMove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseUp-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#move-int-int-\" title=\"class or interface in java.awt\">move</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#nextFocus--\" title=\"class or interface in java.awt\">nextFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#paintAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#postEvent-java.awt.Event-\" title=\"class or interface in java.awt\">postEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processComponentEvent-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt\">processComponentEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processFocusEvent-java.awt.event.FocusEvent-\" title=\"class or interface in java.awt\">processFocusEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyBoundsEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyBoundsEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseWheelEvent-java.awt.event.MouseWheelEvent-\" title=\"class or interface in java.awt\">processMouseWheelEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#remove-java.awt.MenuComponent-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">removeComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">removeFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">removeHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">removeHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">removeInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">removeKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">removeMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">removeMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">removeMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint--\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-int-int-int-int-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-long-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#resize-java.awt.Dimension-\" title=\"class or interface in java.awt\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#resize-int-int-\" title=\"class or interface in java.awt\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-int-int-int-int-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setCursor-java.awt.Cursor-\" title=\"class or interface in java.awt\">setCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setDropTarget-java.awt.dnd.DropTarget-\" title=\"class or interface in java.awt\">setDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusable-boolean-\" title=\"class or interface in java.awt\">setFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusTraversalKeysEnabled-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setIgnoreRepaint-boolean-\" title=\"class or interface in java.awt\">setIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocale-java.util.Locale-\" title=\"class or interface in java.awt\">setLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-int-int-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-java.awt.Point-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setName-java.lang.String-\" title=\"class or interface in java.awt\">setName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-int-int-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show--\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show-boolean-\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#size--\" title=\"class or interface in java.awt\">size</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#toString--\" title=\"class or interface in java.awt\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocus--\" title=\"class or interface in java.awt\">transferFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusBackward--\" title=\"class or interface in java.awt\">transferFocusBackward</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusUpCycle--\" title=\"class or interface in java.awt\">transferFocusUpCycle</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"DoubleField--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>DoubleField</h4>\n<pre>public&nbsp;DoubleField()</pre>\n<div class=\"block\">Creates a new field object for entering a <code>double</code> value.\n The contents of the field are initially blank.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>DoubleField field = new DoubleField();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"DoubleField-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>DoubleField</h4>\n<pre>public&nbsp;DoubleField(double&nbsp;value)</pre>\n<div class=\"block\">Creates a new field object for entering a <code>double</code> value.\n The contents of the field initially contain the specified value.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>value</code> - The value to store in the field</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>DoubleField field = new DoubleField(value);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"DoubleField-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>DoubleField</h4>\n<pre>public&nbsp;DoubleField(double&nbsp;low,\n                   double&nbsp;high)</pre>\n<div class=\"block\">Creates a new field object for entering a <code>double</code> value,\n which is constrained to be within the specified range. The contents\n of the field are initially blank.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>low</code> - The lowest value in the permitted range</dd>\n<dd><code>high</code> - The highest value in the permitted range</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>DoubleField field = new DoubleField(low, high);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"DoubleField-double-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>DoubleField</h4>\n<pre>public&nbsp;DoubleField(double&nbsp;value,\n                   double&nbsp;low,\n                   double&nbsp;high)</pre>\n<div class=\"block\">Creates a new field object for entering a <code>double</code> value,\n which is constrained to be within the specified range. The contents\n of the field initially contain the specified value.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>value</code> - The value to store in the field</dd>\n<dd><code>low</code> - The lowest value in the permitted range</dd>\n<dd><code>high</code> - The highest value in the permitted range</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>DoubleField field = new DoubleField(value, low, high);</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"getValue--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getValue</h4>\n<pre>public&nbsp;double&nbsp;getValue()</pre>\n<div class=\"block\">Returns the value of this field as a <code>double</code>.  If this value is either\n not a legal numeric value or is outside the specified range, this method will\n either pop up a dialog allowing the user to reenter the value or throw an\n <code>ErrorException</code> depending on the state of the <code>exceptionOnError</code>\n flag.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value stored in the field as a <code>double</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double d = field.getValue();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setValue-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setValue</h4>\n<pre>public&nbsp;void&nbsp;setValue(double&nbsp;d)</pre>\n<div class=\"block\">Sets the value of a field.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>d</code> - The value to be stored in the field</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>field.setValue(d);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getFormat--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFormat</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getFormat()</pre>\n<div class=\"block\">Returns the format currently in use for this field, or\n <code>null</code> if no format has been set.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The format for this field</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>String format = field.getFormat();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setFormat-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setFormat</h4>\n<pre>public&nbsp;void&nbsp;setFormat(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;format)</pre>\n<div class=\"block\">Sets the format used for the field.  The structure of the\n format string is described in the comments for the DecimalFormat\n class.  If a format is set for the field, the format will also be\n used to read the number to ensure that localization is correctly\n handled.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>format</code> - The format to use for the field</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>field.setFormat(format);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setExceptionOnError-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setExceptionOnError</h4>\n<pre>public&nbsp;void&nbsp;setExceptionOnError(boolean&nbsp;flag)</pre>\n<div class=\"block\">Sets the error-handling mode of this interactor as specified by the <code>flag</code>\n parameter.  If <code>flag</code> is <code>false</code> (which is the default),\n calling <a href=\"#getValue()\"><code>getValue</code></a> on this interactor displays\n a dialog that gives the user a chance to retry after erroneous input.  If this\n value is set to <code>true</code>, illegal input raises an\n <a href=\"../util/ErrorException.html\"><code>ErrorException</code></a> instead.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>flag</code> - <code>false</code> to retry on errors; <code>true</code> to raise an exception</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>field.setExceptionOnError(flag);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getExceptionOnError--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getExceptionOnError</h4>\n<pre>public&nbsp;boolean&nbsp;getExceptionOnError()</pre>\n<div class=\"block\">Returns the state of the error-handling flag.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The current setting of the error-handling mode (<code>false</code> to retry\n         on errors; <code>true</code> to raise an exception)</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>boolean flag = console.getExceptionOnError();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getPreferredSize--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>getPreferredSize</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a>&nbsp;getPreferredSize()</pre>\n<div class=\"block\">Overrides the standard definition to impose a target size.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#getPreferredSize--\" title=\"class or interface in javax.swing\">getPreferredSize</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Class</li>\n<li><a href=\"../../acm/gui/Event.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/gui/DoubleField.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"DoubleField.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JTextField\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.javax.swing.JTextField\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/gui/Event.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:11 PDT 2017 -->\n<title>Event</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"Event\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/gui/DoubleField.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/gui/IntField.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/gui/Event.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Event.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.gui</div>\n<h2 title=\"Class Event\" class=\"title\">Class Event&lt;T&gt;</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true\" title=\"class or interface in java.util\">java.util.Observable</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.gui.Event&lt;T&gt;</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">Event&lt;T&gt;</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true\" title=\"class or interface in java.util\">Observable</a></pre>\n<div class=\"block\">A helper class to represent observable events.</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/Event.html#Event--\">Event</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/Event.html#fire--\">fire</a></span>()</code>\n<div class=\"block\">Convenience method to replace notifyObservers.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/Event.html#fire-T-\">fire</a></span>(<a href=\"../../acm/gui/Event.html\" title=\"type parameter in Event\">T</a>&nbsp;arg)</code>\n<div class=\"block\">Convenience method to replace notifyObservers.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.util.Observable\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.util.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true\" title=\"class or interface in java.util\">Observable</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#addObserver-java.util.Observer-\" title=\"class or interface in java.util\">addObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#clearChanged--\" title=\"class or interface in java.util\">clearChanged</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#countObservers--\" title=\"class or interface in java.util\">countObservers</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#deleteObserver-java.util.Observer-\" title=\"class or interface in java.util\">deleteObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#deleteObservers--\" title=\"class or interface in java.util\">deleteObservers</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#hasChanged--\" title=\"class or interface in java.util\">hasChanged</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#notifyObservers--\" title=\"class or interface in java.util\">notifyObservers</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#notifyObservers-java.lang.Object-\" title=\"class or interface in java.util\">notifyObservers</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#setChanged--\" title=\"class or interface in java.util\">setChanged</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"Event--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>Event</h4>\n<pre>public&nbsp;Event()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"fire--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fire</h4>\n<pre>public&nbsp;void&nbsp;fire()</pre>\n<div class=\"block\">Convenience method to replace notifyObservers.</div>\n</li>\n</ul>\n<a name=\"fire-java.lang.Object-\">\n<!--   -->\n</a><a name=\"fire-T-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>fire</h4>\n<pre>public&nbsp;void&nbsp;fire(<a href=\"../../acm/gui/Event.html\" title=\"type parameter in Event\">T</a>&nbsp;arg)</pre>\n<div class=\"block\">Convenience method to replace notifyObservers.</div>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/gui/DoubleField.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/gui/IntField.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/gui/Event.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Event.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/gui/IntField.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:11 PDT 2017 -->\n<title>IntField</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"IntField\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/gui/Event.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/gui/JButtonGroup.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/gui/IntField.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"IntField.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JTextField\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.javax.swing.JTextField\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.gui</div>\n<h2 title=\"Class IntField\" class=\"title\">Class IntField</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Component</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Container</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JComponent</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true\" title=\"class or interface in javax.swing.text\">javax.swing.text.JTextComponent</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JTextField</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.gui.IntField</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Scrollable.html?is-external=true\" title=\"class or interface in javax.swing\">Scrollable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true\" title=\"class or interface in javax.swing\">SwingConstants</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">IntField</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField</a></pre>\n<div class=\"block\">This class implements a simple interactor that accepts an integer value.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#acm.gui.IntField\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JTextField\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.AccessibleJTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField.AccessibleJTextField</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.text.JTextComponent\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.text.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true\" title=\"class or interface in javax.swing.text\">JTextComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.AccessibleJTextComponent.html?is-external=true\" title=\"class or interface in javax.swing.text\">JTextComponent.AccessibleJTextComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.DropLocation.html?is-external=true\" title=\"class or interface in javax.swing.text\">JTextComponent.DropLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.KeyBinding.html?is-external=true\" title=\"class or interface in javax.swing.text\">JTextComponent.KeyBinding</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.AccessibleJComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent.AccessibleJComponent</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.AccessibleAWTContainer.html?is-external=true\" title=\"class or interface in java.awt\">Container.AccessibleAWTContainer</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.AccessibleAWTComponent.html?is-external=true\" title=\"class or interface in java.awt\">Component.AccessibleAWTComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BaselineResizeBehavior.html?is-external=true\" title=\"class or interface in java.awt\">Component.BaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BltBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.BltBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.FlipBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.FlipBufferStrategy</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.JTextField\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#notifyAction\" title=\"class or interface in javax.swing\">notifyAction</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.text.JTextComponent\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.text.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true\" title=\"class or interface in javax.swing.text\">JTextComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#DEFAULT_KEYMAP\" title=\"class or interface in javax.swing.text\">DEFAULT_KEYMAP</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#FOCUS_ACCELERATOR_KEY\" title=\"class or interface in javax.swing.text\">FOCUS_ACCELERATOR_KEY</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#listenerList\" title=\"class or interface in javax.swing\">listenerList</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#TOOL_TIP_TEXT_KEY\" title=\"class or interface in javax.swing\">TOOL_TIP_TEXT_KEY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#ui\" title=\"class or interface in javax.swing\">ui</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#UNDEFINED_CONDITION\" title=\"class or interface in javax.swing\">UNDEFINED_CONDITION</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_ANCESTOR_OF_FOCUSED_COMPONENT\" title=\"class or interface in javax.swing\">WHEN_ANCESTOR_OF_FOCUSED_COMPONENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_FOCUSED\" title=\"class or interface in javax.swing\">WHEN_FOCUSED</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_IN_FOCUSED_WINDOW\" title=\"class or interface in javax.swing\">WHEN_IN_FOCUSED_WINDOW</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#accessibleContext\" title=\"class or interface in java.awt\">accessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#BOTTOM_ALIGNMENT\" title=\"class or interface in java.awt\">BOTTOM_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#CENTER_ALIGNMENT\" title=\"class or interface in java.awt\">CENTER_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#LEFT_ALIGNMENT\" title=\"class or interface in java.awt\">LEFT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#RIGHT_ALIGNMENT\" title=\"class or interface in java.awt\">RIGHT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#TOP_ALIGNMENT\" title=\"class or interface in java.awt\">TOP_ALIGNMENT</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.SwingConstants\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true\" title=\"class or interface in javax.swing\">SwingConstants</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#BOTTOM\" title=\"class or interface in javax.swing\">BOTTOM</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#CENTER\" title=\"class or interface in javax.swing\">CENTER</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#EAST\" title=\"class or interface in javax.swing\">EAST</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#HORIZONTAL\" title=\"class or interface in javax.swing\">HORIZONTAL</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#LEADING\" title=\"class or interface in javax.swing\">LEADING</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#LEFT\" title=\"class or interface in javax.swing\">LEFT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#NEXT\" title=\"class or interface in javax.swing\">NEXT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#NORTH\" title=\"class or interface in javax.swing\">NORTH</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#NORTH_EAST\" title=\"class or interface in javax.swing\">NORTH_EAST</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#NORTH_WEST\" title=\"class or interface in javax.swing\">NORTH_WEST</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#PREVIOUS\" title=\"class or interface in javax.swing\">PREVIOUS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#RIGHT\" title=\"class or interface in javax.swing\">RIGHT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#SOUTH\" title=\"class or interface in javax.swing\">SOUTH</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#SOUTH_EAST\" title=\"class or interface in javax.swing\">SOUTH_EAST</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#SOUTH_WEST\" title=\"class or interface in javax.swing\">SOUTH_WEST</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#TOP\" title=\"class or interface in javax.swing\">TOP</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#TRAILING\" title=\"class or interface in javax.swing\">TRAILING</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#VERTICAL\" title=\"class or interface in javax.swing\">VERTICAL</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#WEST\" title=\"class or interface in javax.swing\">WEST</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.image.ImageObserver\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ABORT\" title=\"class or interface in java.awt.image\">ABORT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ALLBITS\" title=\"class or interface in java.awt.image\">ALLBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ERROR\" title=\"class or interface in java.awt.image\">ERROR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#FRAMEBITS\" title=\"class or interface in java.awt.image\">FRAMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#HEIGHT\" title=\"class or interface in java.awt.image\">HEIGHT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#PROPERTIES\" title=\"class or interface in java.awt.image\">PROPERTIES</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#SOMEBITS\" title=\"class or interface in java.awt.image\">SOMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#WIDTH\" title=\"class or interface in java.awt.image\">WIDTH</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/IntField.html#IntField--\">IntField</a></span>()</code>\n<div class=\"block\">Creates a new field object for entering a <code>int</code> value.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/IntField.html#IntField-int-\">IntField</a></span>(int&nbsp;value)</code>\n<div class=\"block\">Creates a new field object for entering a <code>int</code> value.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/IntField.html#IntField-int-int-\">IntField</a></span>(int&nbsp;low,\n        int&nbsp;high)</code>\n<div class=\"block\">Creates a new field object for entering a <code>int</code> value,\n which is constrained to be within the specified range.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/IntField.html#IntField-int-int-int-\">IntField</a></span>(int&nbsp;value,\n        int&nbsp;low,\n        int&nbsp;high)</code>\n<div class=\"block\">Creates a new field object for entering a <code>int</code> value,\n which is constrained to be within the specified range.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/IntField.html#getExceptionOnError--\">getExceptionOnError</a></span>()</code>\n<div class=\"block\">Returns the state of the error-handling flag.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/IntField.html#getFormat--\">getFormat</a></span>()</code>\n<div class=\"block\">Returns the format currently in use for this field, or\n <code>null</code> if no format has been set.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/IntField.html#getPreferredSize--\">getPreferredSize</a></span>()</code>\n<div class=\"block\">Overrides the standard definition to impose a target size.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/IntField.html#getValue--\">getValue</a></span>()</code>\n<div class=\"block\">Returns the value of this field as a <code>int</code>.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/IntField.html#setExceptionOnError-boolean-\">setExceptionOnError</a></span>(boolean&nbsp;flag)</code>\n<div class=\"block\">Sets the error-handling mode of this interactor as specified by the <code>flag</code>\n parameter.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/IntField.html#setFormat-java.lang.String-\">setFormat</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;format)</code>\n<div class=\"block\">Sets the format used for the field.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/IntField.html#setValue-int-\">setValue</a></span>(int&nbsp;n)</code>\n<div class=\"block\">Sets the value of a field.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JTextField\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#actionPropertyChanged-javax.swing.Action-java.lang.String-\" title=\"class or interface in javax.swing\">actionPropertyChanged</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#addActionListener-java.awt.event.ActionListener-\" title=\"class or interface in javax.swing\">addActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#configurePropertiesFromAction-javax.swing.Action-\" title=\"class or interface in javax.swing\">configurePropertiesFromAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#createActionPropertyChangeListener-javax.swing.Action-\" title=\"class or interface in javax.swing\">createActionPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#createDefaultModel--\" title=\"class or interface in javax.swing\">createDefaultModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#fireActionPerformed--\" title=\"class or interface in javax.swing\">fireActionPerformed</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#getAccessibleContext--\" title=\"class or interface in javax.swing\">getAccessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#getAction--\" title=\"class or interface in javax.swing\">getAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#getActionListeners--\" title=\"class or interface in javax.swing\">getActionListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#getActions--\" title=\"class or interface in javax.swing\">getActions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#getColumns--\" title=\"class or interface in javax.swing\">getColumns</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#getColumnWidth--\" title=\"class or interface in javax.swing\">getColumnWidth</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#getHorizontalAlignment--\" title=\"class or interface in javax.swing\">getHorizontalAlignment</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#getHorizontalVisibility--\" title=\"class or interface in javax.swing\">getHorizontalVisibility</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#getScrollOffset--\" title=\"class or interface in javax.swing\">getScrollOffset</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#getUIClassID--\" title=\"class or interface in javax.swing\">getUIClassID</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#isValidateRoot--\" title=\"class or interface in javax.swing\">isValidateRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#paramString--\" title=\"class or interface in javax.swing\">paramString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#postActionEvent--\" title=\"class or interface in javax.swing\">postActionEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#removeActionListener-java.awt.event.ActionListener-\" title=\"class or interface in javax.swing\">removeActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#scrollRectToVisible-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">scrollRectToVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#setAction-javax.swing.Action-\" title=\"class or interface in javax.swing\">setAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#setActionCommand-java.lang.String-\" title=\"class or interface in javax.swing\">setActionCommand</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#setColumns-int-\" title=\"class or interface in javax.swing\">setColumns</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#setDocument-javax.swing.text.Document-\" title=\"class or interface in javax.swing\">setDocument</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#setFont-java.awt.Font-\" title=\"class or interface in javax.swing\">setFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#setHorizontalAlignment-int-\" title=\"class or interface in javax.swing\">setHorizontalAlignment</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#setScrollOffset-int-\" title=\"class or interface in javax.swing\">setScrollOffset</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.text.JTextComponent\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.text.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true\" title=\"class or interface in javax.swing.text\">JTextComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#addCaretListener-javax.swing.event.CaretListener-\" title=\"class or interface in javax.swing.text\">addCaretListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#addInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in javax.swing.text\">addInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#addKeymap-java.lang.String-javax.swing.text.Keymap-\" title=\"class or interface in javax.swing.text\">addKeymap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#copy--\" title=\"class or interface in javax.swing.text\">copy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#cut--\" title=\"class or interface in javax.swing.text\">cut</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#fireCaretUpdate-javax.swing.event.CaretEvent-\" title=\"class or interface in javax.swing.text\">fireCaretUpdate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getCaret--\" title=\"class or interface in javax.swing.text\">getCaret</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getCaretColor--\" title=\"class or interface in javax.swing.text\">getCaretColor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getCaretListeners--\" title=\"class or interface in javax.swing.text\">getCaretListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getCaretPosition--\" title=\"class or interface in javax.swing.text\">getCaretPosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getDisabledTextColor--\" title=\"class or interface in javax.swing.text\">getDisabledTextColor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getDocument--\" title=\"class or interface in javax.swing.text\">getDocument</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getDragEnabled--\" title=\"class or interface in javax.swing.text\">getDragEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getDropLocation--\" title=\"class or interface in javax.swing.text\">getDropLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getDropMode--\" title=\"class or interface in javax.swing.text\">getDropMode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getFocusAccelerator--\" title=\"class or interface in javax.swing.text\">getFocusAccelerator</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getHighlighter--\" title=\"class or interface in javax.swing.text\">getHighlighter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getInputMethodRequests--\" title=\"class or interface in javax.swing.text\">getInputMethodRequests</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getKeymap--\" title=\"class or interface in javax.swing.text\">getKeymap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getKeymap-java.lang.String-\" title=\"class or interface in javax.swing.text\">getKeymap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getMargin--\" title=\"class or interface in javax.swing.text\">getMargin</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getNavigationFilter--\" title=\"class or interface in javax.swing.text\">getNavigationFilter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getPreferredScrollableViewportSize--\" title=\"class or interface in javax.swing.text\">getPreferredScrollableViewportSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getPrintable-java.text.MessageFormat-java.text.MessageFormat-\" title=\"class or interface in javax.swing.text\">getPrintable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getScrollableBlockIncrement-java.awt.Rectangle-int-int-\" title=\"class or interface in javax.swing.text\">getScrollableBlockIncrement</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getScrollableTracksViewportHeight--\" title=\"class or interface in javax.swing.text\">getScrollableTracksViewportHeight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getScrollableTracksViewportWidth--\" title=\"class or interface in javax.swing.text\">getScrollableTracksViewportWidth</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getScrollableUnitIncrement-java.awt.Rectangle-int-int-\" title=\"class or interface in javax.swing.text\">getScrollableUnitIncrement</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getSelectedText--\" title=\"class or interface in javax.swing.text\">getSelectedText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getSelectedTextColor--\" title=\"class or interface in javax.swing.text\">getSelectedTextColor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getSelectionColor--\" title=\"class or interface in javax.swing.text\">getSelectionColor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getSelectionEnd--\" title=\"class or interface in javax.swing.text\">getSelectionEnd</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getSelectionStart--\" title=\"class or interface in javax.swing.text\">getSelectionStart</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getText--\" title=\"class or interface in javax.swing.text\">getText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getText-int-int-\" title=\"class or interface in javax.swing.text\">getText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getToolTipText-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing.text\">getToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getUI--\" title=\"class or interface in javax.swing.text\">getUI</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#isEditable--\" title=\"class or interface in javax.swing.text\">isEditable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#loadKeymap-javax.swing.text.Keymap-javax.swing.text.JTextComponent.KeyBinding:A-javax.swing.Action:A-\" title=\"class or interface in javax.swing.text\">loadKeymap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#modelToView-int-\" title=\"class or interface in javax.swing.text\">modelToView</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#moveCaretPosition-int-\" title=\"class or interface in javax.swing.text\">moveCaretPosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#paste--\" title=\"class or interface in javax.swing.text\">paste</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#print--\" title=\"class or interface in javax.swing.text\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#print-java.text.MessageFormat-java.text.MessageFormat-\" title=\"class or interface in javax.swing.text\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#print-java.text.MessageFormat-java.text.MessageFormat-boolean-javax.print.PrintService-javax.print.attribute.PrintRequestAttributeSet-boolean-\" title=\"class or interface in javax.swing.text\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#processInputMethodEvent-java.awt.event.InputMethodEvent-\" title=\"class or interface in javax.swing.text\">processInputMethodEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#read-java.io.Reader-java.lang.Object-\" title=\"class or interface in javax.swing.text\">read</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#removeCaretListener-javax.swing.event.CaretListener-\" title=\"class or interface in javax.swing.text\">removeCaretListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#removeKeymap-java.lang.String-\" title=\"class or interface in javax.swing.text\">removeKeymap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#removeNotify--\" title=\"class or interface in javax.swing.text\">removeNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#replaceSelection-java.lang.String-\" title=\"class or interface in javax.swing.text\">replaceSelection</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#restoreComposedText--\" title=\"class or interface in javax.swing.text\">restoreComposedText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#saveComposedText-int-\" title=\"class or interface in javax.swing.text\">saveComposedText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#select-int-int-\" title=\"class or interface in javax.swing.text\">select</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#selectAll--\" title=\"class or interface in javax.swing.text\">selectAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setCaret-javax.swing.text.Caret-\" title=\"class or interface in javax.swing.text\">setCaret</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setCaretColor-java.awt.Color-\" title=\"class or interface in javax.swing.text\">setCaretColor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setCaretPosition-int-\" title=\"class or interface in javax.swing.text\">setCaretPosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in javax.swing.text\">setComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setDisabledTextColor-java.awt.Color-\" title=\"class or interface in javax.swing.text\">setDisabledTextColor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setDragEnabled-boolean-\" title=\"class or interface in javax.swing.text\">setDragEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setDropMode-javax.swing.DropMode-\" title=\"class or interface in javax.swing.text\">setDropMode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setEditable-boolean-\" title=\"class or interface in javax.swing.text\">setEditable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setFocusAccelerator-char-\" title=\"class or interface in javax.swing.text\">setFocusAccelerator</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setHighlighter-javax.swing.text.Highlighter-\" title=\"class or interface in javax.swing.text\">setHighlighter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setKeymap-javax.swing.text.Keymap-\" title=\"class or interface in javax.swing.text\">setKeymap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setMargin-java.awt.Insets-\" title=\"class or interface in javax.swing.text\">setMargin</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setNavigationFilter-javax.swing.text.NavigationFilter-\" title=\"class or interface in javax.swing.text\">setNavigationFilter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setSelectedTextColor-java.awt.Color-\" title=\"class or interface in javax.swing.text\">setSelectedTextColor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setSelectionColor-java.awt.Color-\" title=\"class or interface in javax.swing.text\">setSelectionColor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setSelectionEnd-int-\" title=\"class or interface in javax.swing.text\">setSelectionEnd</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setSelectionStart-int-\" title=\"class or interface in javax.swing.text\">setSelectionStart</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setText-java.lang.String-\" title=\"class or interface in javax.swing.text\">setText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setUI-javax.swing.plaf.TextUI-\" title=\"class or interface in javax.swing.text\">setUI</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#updateUI--\" title=\"class or interface in javax.swing.text\">updateUI</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#viewToModel-java.awt.Point-\" title=\"class or interface in javax.swing.text\">viewToModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#write-java.io.Writer-\" title=\"class or interface in javax.swing.text\">write</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addAncestorListener-javax.swing.event.AncestorListener-\" title=\"class or interface in javax.swing\">addAncestorListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addNotify--\" title=\"class or interface in javax.swing\">addNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addVetoableChangeListener-java.beans.VetoableChangeListener-\" title=\"class or interface in javax.swing\">addVetoableChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#computeVisibleRect-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">computeVisibleRect</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#contains-int-int-\" title=\"class or interface in javax.swing\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#createToolTip--\" title=\"class or interface in javax.swing\">createToolTip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#disable--\" title=\"class or interface in javax.swing\">disable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#enable--\" title=\"class or interface in javax.swing\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-boolean-boolean-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-char-char-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-int-int-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#fireVetoableChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in javax.swing\">fireVetoableChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getActionForKeyStroke-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">getActionForKeyStroke</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getActionMap--\" title=\"class or interface in javax.swing\">getActionMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAlignmentX--\" title=\"class or interface in javax.swing\">getAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAlignmentY--\" title=\"class or interface in javax.swing\">getAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAncestorListeners--\" title=\"class or interface in javax.swing\">getAncestorListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAutoscrolls--\" title=\"class or interface in javax.swing\">getAutoscrolls</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBaseline-int-int-\" title=\"class or interface in javax.swing\">getBaseline</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBaselineResizeBehavior--\" title=\"class or interface in javax.swing\">getBaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBorder--\" title=\"class or interface in javax.swing\">getBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBounds-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getClientProperty-java.lang.Object-\" title=\"class or interface in javax.swing\">getClientProperty</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getComponentGraphics-java.awt.Graphics-\" title=\"class or interface in javax.swing\">getComponentGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getComponentPopupMenu--\" title=\"class or interface in javax.swing\">getComponentPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getConditionForKeyStroke-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">getConditionForKeyStroke</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getDebugGraphicsOptions--\" title=\"class or interface in javax.swing\">getDebugGraphicsOptions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getDefaultLocale--\" title=\"class or interface in javax.swing\">getDefaultLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getFontMetrics-java.awt.Font-\" title=\"class or interface in javax.swing\">getFontMetrics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getGraphics--\" title=\"class or interface in javax.swing\">getGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getHeight--\" title=\"class or interface in javax.swing\">getHeight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInheritsPopupMenu--\" title=\"class or interface in javax.swing\">getInheritsPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputMap--\" title=\"class or interface in javax.swing\">getInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputMap-int-\" title=\"class or interface in javax.swing\">getInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputVerifier--\" title=\"class or interface in javax.swing\">getInputVerifier</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInsets--\" title=\"class or interface in javax.swing\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInsets-java.awt.Insets-\" title=\"class or interface in javax.swing\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getListeners-java.lang.Class-\" title=\"class or interface in javax.swing\">getListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getLocation-java.awt.Point-\" title=\"class or interface in javax.swing\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getMaximumSize--\" title=\"class or interface in javax.swing\">getMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getMinimumSize--\" title=\"class or interface in javax.swing\">getMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getNextFocusableComponent--\" title=\"class or interface in javax.swing\">getNextFocusableComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getPopupLocation-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">getPopupLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getRegisteredKeyStrokes--\" title=\"class or interface in javax.swing\">getRegisteredKeyStrokes</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getRootPane--\" title=\"class or interface in javax.swing\">getRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getToolTipLocation-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">getToolTipLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getToolTipText--\" title=\"class or interface in javax.swing\">getToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getTopLevelAncestor--\" title=\"class or interface in javax.swing\">getTopLevelAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getTransferHandler--\" title=\"class or interface in javax.swing\">getTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVerifyInputWhenFocusTarget--\" title=\"class or interface in javax.swing\">getVerifyInputWhenFocusTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVetoableChangeListeners--\" title=\"class or interface in javax.swing\">getVetoableChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVisibleRect--\" title=\"class or interface in javax.swing\">getVisibleRect</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getWidth--\" title=\"class or interface in javax.swing\">getWidth</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getX--\" title=\"class or interface in javax.swing\">getX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getY--\" title=\"class or interface in javax.swing\">getY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#grabFocus--\" title=\"class or interface in javax.swing\">grabFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#hide--\" title=\"class or interface in javax.swing\">hide</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isDoubleBuffered--\" title=\"class or interface in javax.swing\">isDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isLightweightComponent-java.awt.Component-\" title=\"class or interface in javax.swing\">isLightweightComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isManagingFocus--\" title=\"class or interface in javax.swing\">isManagingFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isOpaque--\" title=\"class or interface in javax.swing\">isOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isOptimizedDrawingEnabled--\" title=\"class or interface in javax.swing\">isOptimizedDrawingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingForPrint--\" title=\"class or interface in javax.swing\">isPaintingForPrint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingOrigin--\" title=\"class or interface in javax.swing\">isPaintingOrigin</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingTile--\" title=\"class or interface in javax.swing\">isPaintingTile</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isRequestFocusEnabled--\" title=\"class or interface in javax.swing\">isRequestFocusEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paint-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintBorder-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintChildren-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintChildren</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintComponent-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintImmediately-int-int-int-int-\" title=\"class or interface in javax.swing\">paintImmediately</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintImmediately-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">paintImmediately</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#print-java.awt.Graphics-\" title=\"class or interface in javax.swing\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printAll-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printBorder-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printChildren-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printChildren</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printComponent-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processComponentKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in javax.swing\">processComponentKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processKeyBinding-javax.swing.KeyStroke-java.awt.event.KeyEvent-int-boolean-\" title=\"class or interface in javax.swing\">processKeyBinding</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in javax.swing\">processKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processMouseEvent-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">processMouseEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processMouseMotionEvent-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">processMouseMotionEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#putClientProperty-java.lang.Object-java.lang.Object-\" title=\"class or interface in javax.swing\">putClientProperty</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#registerKeyboardAction-java.awt.event.ActionListener-javax.swing.KeyStroke-int-\" title=\"class or interface in javax.swing\">registerKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#registerKeyboardAction-java.awt.event.ActionListener-java.lang.String-javax.swing.KeyStroke-int-\" title=\"class or interface in javax.swing\">registerKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#removeAncestorListener-javax.swing.event.AncestorListener-\" title=\"class or interface in javax.swing\">removeAncestorListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#removeVetoableChangeListener-java.beans.VetoableChangeListener-\" title=\"class or interface in javax.swing\">removeVetoableChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#repaint-long-int-int-int-int-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#repaint-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestDefaultFocus--\" title=\"class or interface in javax.swing\">requestDefaultFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocus--\" title=\"class or interface in javax.swing\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocus-boolean-\" title=\"class or interface in javax.swing\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocusInWindow--\" title=\"class or interface in javax.swing\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocusInWindow-boolean-\" title=\"class or interface in javax.swing\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#resetKeyboardActions--\" title=\"class or interface in javax.swing\">resetKeyboardActions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#reshape-int-int-int-int-\" title=\"class or interface in javax.swing\">reshape</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#revalidate--\" title=\"class or interface in javax.swing\">revalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setActionMap-javax.swing.ActionMap-\" title=\"class or interface in javax.swing\">setActionMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAlignmentX-float-\" title=\"class or interface in javax.swing\">setAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAlignmentY-float-\" title=\"class or interface in javax.swing\">setAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAutoscrolls-boolean-\" title=\"class or interface in javax.swing\">setAutoscrolls</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setBackground-java.awt.Color-\" title=\"class or interface in javax.swing\">setBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setBorder-javax.swing.border.Border-\" title=\"class or interface in javax.swing\">setBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setComponentPopupMenu-javax.swing.JPopupMenu-\" title=\"class or interface in javax.swing\">setComponentPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDebugGraphicsOptions-int-\" title=\"class or interface in javax.swing\">setDebugGraphicsOptions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDefaultLocale-java.util.Locale-\" title=\"class or interface in javax.swing\">setDefaultLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDoubleBuffered-boolean-\" title=\"class or interface in javax.swing\">setDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setEnabled-boolean-\" title=\"class or interface in javax.swing\">setEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setFocusTraversalKeys-int-java.util.Set-\" title=\"class or interface in javax.swing\">setFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setForeground-java.awt.Color-\" title=\"class or interface in javax.swing\">setForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInheritsPopupMenu-boolean-\" title=\"class or interface in javax.swing\">setInheritsPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInputMap-int-javax.swing.InputMap-\" title=\"class or interface in javax.swing\">setInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInputVerifier-javax.swing.InputVerifier-\" title=\"class or interface in javax.swing\">setInputVerifier</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setMaximumSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setMinimumSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setNextFocusableComponent-java.awt.Component-\" title=\"class or interface in javax.swing\">setNextFocusableComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setOpaque-boolean-\" title=\"class or interface in javax.swing\">setOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setPreferredSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setRequestFocusEnabled-boolean-\" title=\"class or interface in javax.swing\">setRequestFocusEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setToolTipText-java.lang.String-\" title=\"class or interface in javax.swing\">setToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setTransferHandler-javax.swing.TransferHandler-\" title=\"class or interface in javax.swing\">setTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setUI-javax.swing.plaf.ComponentUI-\" title=\"class or interface in javax.swing\">setUI</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setVerifyInputWhenFocusTarget-boolean-\" title=\"class or interface in javax.swing\">setVerifyInputWhenFocusTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setVisible-boolean-\" title=\"class or interface in javax.swing\">setVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#unregisterKeyboardAction-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">unregisterKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#update-java.awt.Graphics-\" title=\"class or interface in javax.swing\">update</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.lang.String-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">addContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addImpl-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">addImpl</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#applyComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">applyComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#areFocusTraversalKeysSet-int-\" title=\"class or interface in java.awt\">areFocusTraversalKeysSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#countComponents--\" title=\"class or interface in java.awt\">countComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#deliverEvent-java.awt.Event-\" title=\"class or interface in java.awt\">deliverEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#doLayout--\" title=\"class or interface in java.awt\">doLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-int-int-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponent-int-\" title=\"class or interface in java.awt\">getComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-int-int-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentCount--\" title=\"class or interface in java.awt\">getComponentCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponents--\" title=\"class or interface in java.awt\">getComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentZOrder-java.awt.Component-\" title=\"class or interface in java.awt\">getComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getContainerListeners--\" title=\"class or interface in java.awt\">getContainerListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalKeys-int-\" title=\"class or interface in java.awt\">getFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalPolicy--\" title=\"class or interface in java.awt\">getFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getLayout--\" title=\"class or interface in java.awt\">getLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMousePosition-boolean-\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#insets--\" title=\"class or interface in java.awt\">insets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#invalidate--\" title=\"class or interface in java.awt\">invalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isAncestorOf-java.awt.Component-\" title=\"class or interface in java.awt\">isAncestorOf</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot--\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot-java.awt.Container-\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicyProvider--\" title=\"class or interface in java.awt\">isFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicySet--\" title=\"class or interface in java.awt\">isFocusTraversalPolicySet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#layout--\" title=\"class or interface in java.awt\">layout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintStream-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintWriter-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#locate-int-int-\" title=\"class or interface in java.awt\">locate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#minimumSize--\" title=\"class or interface in java.awt\">minimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paintComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#preferredSize--\" title=\"class or interface in java.awt\">preferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#printComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">printComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processContainerEvent-java.awt.event.ContainerEvent-\" title=\"class or interface in java.awt\">processContainerEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">processEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#remove-java.awt.Component-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#remove-int-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeAll--\" title=\"class or interface in java.awt\">removeAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">removeContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setComponentZOrder-java.awt.Component-int-\" title=\"class or interface in java.awt\">setComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusCycleRoot-boolean-\" title=\"class or interface in java.awt\">setFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicy-java.awt.FocusTraversalPolicy-\" title=\"class or interface in java.awt\">setFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicyProvider-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setLayout-java.awt.LayoutManager-\" title=\"class or interface in java.awt\">setLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#transferFocusDownCycle--\" title=\"class or interface in java.awt\">transferFocusDownCycle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validate--\" title=\"class or interface in java.awt\">validate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validateTree--\" title=\"class or interface in java.awt\">validateTree</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#action-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">action</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#add-java.awt.PopupMenu-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">addComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">addFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">addHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">addHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">addKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">addMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">addMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">addMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#bounds--\" title=\"class or interface in java.awt\">bounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#coalesceEvents-java.awt.AWTEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">coalesceEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-java.awt.Point-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-java.awt.image.ImageProducer-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-int-int-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-java.awt.ImageCapabilities-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disableEvents-long-\" title=\"class or interface in java.awt\">disableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#dispatchEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">dispatchEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable-boolean-\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableEvents-long-\" title=\"class or interface in java.awt\">enableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableInputMethods-boolean-\" title=\"class or interface in java.awt\">enableInputMethods</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-byte-byte-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-double-double-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-float-float-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-long-long-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-short-short-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBackground--\" title=\"class or interface in java.awt\">getBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds--\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getColorModel--\" title=\"class or interface in java.awt\">getColorModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentListeners--\" title=\"class or interface in java.awt\">getComponentListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentOrientation--\" title=\"class or interface in java.awt\">getComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getCursor--\" title=\"class or interface in java.awt\">getCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getDropTarget--\" title=\"class or interface in java.awt\">getDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusCycleRootAncestor--\" title=\"class or interface in java.awt\">getFocusCycleRootAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusListeners--\" title=\"class or interface in java.awt\">getFocusListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusTraversalKeysEnabled--\" title=\"class or interface in java.awt\">getFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFont--\" title=\"class or interface in java.awt\">getFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getForeground--\" title=\"class or interface in java.awt\">getForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getGraphicsConfiguration--\" title=\"class or interface in java.awt\">getGraphicsConfiguration</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyBoundsListeners--\" title=\"class or interface in java.awt\">getHierarchyBoundsListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyListeners--\" title=\"class or interface in java.awt\">getHierarchyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getIgnoreRepaint--\" title=\"class or interface in java.awt\">getIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputContext--\" title=\"class or interface in java.awt\">getInputContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodListeners--\" title=\"class or interface in java.awt\">getInputMethodListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getKeyListeners--\" title=\"class or interface in java.awt\">getKeyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocale--\" title=\"class or interface in java.awt\">getLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation--\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocationOnScreen--\" title=\"class or interface in java.awt\">getLocationOnScreen</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseListeners--\" title=\"class or interface in java.awt\">getMouseListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseMotionListeners--\" title=\"class or interface in java.awt\">getMouseMotionListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMousePosition--\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseWheelListeners--\" title=\"class or interface in java.awt\">getMouseWheelListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getName--\" title=\"class or interface in java.awt\">getName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getParent--\" title=\"class or interface in java.awt\">getParent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPeer--\" title=\"class or interface in java.awt\">getPeer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners--\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners-java.lang.String-\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize--\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getToolkit--\" title=\"class or interface in java.awt\">getToolkit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getTreeLock--\" title=\"class or interface in java.awt\">getTreeLock</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#gotFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">gotFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#handleEvent-java.awt.Event-\" title=\"class or interface in java.awt\">handleEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hasFocus--\" title=\"class or interface in java.awt\">hasFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#imageUpdate-java.awt.Image-int-int-int-int-int-\" title=\"class or interface in java.awt\">imageUpdate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#inside-int-int-\" title=\"class or interface in java.awt\">inside</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isBackgroundSet--\" title=\"class or interface in java.awt\">isBackgroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isCursorSet--\" title=\"class or interface in java.awt\">isCursorSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDisplayable--\" title=\"class or interface in java.awt\">isDisplayable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isEnabled--\" title=\"class or interface in java.awt\">isEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusable--\" title=\"class or interface in java.awt\">isFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusOwner--\" title=\"class or interface in java.awt\">isFocusOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusTraversable--\" title=\"class or interface in java.awt\">isFocusTraversable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFontSet--\" title=\"class or interface in java.awt\">isFontSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isForegroundSet--\" title=\"class or interface in java.awt\">isForegroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isLightweight--\" title=\"class or interface in java.awt\">isLightweight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMaximumSizeSet--\" title=\"class or interface in java.awt\">isMaximumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMinimumSizeSet--\" title=\"class or interface in java.awt\">isMinimumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isPreferredSizeSet--\" title=\"class or interface in java.awt\">isPreferredSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isShowing--\" title=\"class or interface in java.awt\">isShowing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isValid--\" title=\"class or interface in java.awt\">isValid</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isVisible--\" title=\"class or interface in java.awt\">isVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyDown-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyUp-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list--\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintStream-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintWriter-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#location--\" title=\"class or interface in java.awt\">location</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#lostFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">lostFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDown-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDrag-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDrag</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseEnter-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseEnter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseExit-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseExit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseMove-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseMove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseUp-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#move-int-int-\" title=\"class or interface in java.awt\">move</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#nextFocus--\" title=\"class or interface in java.awt\">nextFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#paintAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#postEvent-java.awt.Event-\" title=\"class or interface in java.awt\">postEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processComponentEvent-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt\">processComponentEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processFocusEvent-java.awt.event.FocusEvent-\" title=\"class or interface in java.awt\">processFocusEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyBoundsEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyBoundsEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseWheelEvent-java.awt.event.MouseWheelEvent-\" title=\"class or interface in java.awt\">processMouseWheelEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#remove-java.awt.MenuComponent-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">removeComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">removeFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">removeHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">removeHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">removeInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">removeKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">removeMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">removeMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">removeMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint--\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-int-int-int-int-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-long-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#resize-java.awt.Dimension-\" title=\"class or interface in java.awt\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#resize-int-int-\" title=\"class or interface in java.awt\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-int-int-int-int-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setCursor-java.awt.Cursor-\" title=\"class or interface in java.awt\">setCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setDropTarget-java.awt.dnd.DropTarget-\" title=\"class or interface in java.awt\">setDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusable-boolean-\" title=\"class or interface in java.awt\">setFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusTraversalKeysEnabled-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setIgnoreRepaint-boolean-\" title=\"class or interface in java.awt\">setIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocale-java.util.Locale-\" title=\"class or interface in java.awt\">setLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-int-int-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-java.awt.Point-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setName-java.lang.String-\" title=\"class or interface in java.awt\">setName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-int-int-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show--\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show-boolean-\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#size--\" title=\"class or interface in java.awt\">size</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#toString--\" title=\"class or interface in java.awt\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocus--\" title=\"class or interface in java.awt\">transferFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusBackward--\" title=\"class or interface in java.awt\">transferFocusBackward</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusUpCycle--\" title=\"class or interface in java.awt\">transferFocusUpCycle</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"IntField--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>IntField</h4>\n<pre>public&nbsp;IntField()</pre>\n<div class=\"block\">Creates a new field object for entering a <code>int</code> value.\n The contents of the field are initially blank.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>IntField field = new IntField();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"IntField-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>IntField</h4>\n<pre>public&nbsp;IntField(int&nbsp;value)</pre>\n<div class=\"block\">Creates a new field object for entering a <code>int</code> value.\n The contents of the field initially contain the specified value.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>value</code> - The value to store in the field</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>IntField field = new IntField(value);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"IntField-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>IntField</h4>\n<pre>public&nbsp;IntField(int&nbsp;low,\n                int&nbsp;high)</pre>\n<div class=\"block\">Creates a new field object for entering a <code>int</code> value,\n which is constrained to be within the specified range. The contents\n of the field are initially blank.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>low</code> - The lowest value in the permitted range</dd>\n<dd><code>high</code> - The highest value in the permitted range</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>IntField field = new IntField(low, high);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"IntField-int-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>IntField</h4>\n<pre>public&nbsp;IntField(int&nbsp;value,\n                int&nbsp;low,\n                int&nbsp;high)</pre>\n<div class=\"block\">Creates a new field object for entering a <code>int</code> value,\n which is constrained to be within the specified range. The contents\n of the field initially contain the specified value.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>value</code> - The value to store in the field</dd>\n<dd><code>low</code> - The lowest value in the permitted range</dd>\n<dd><code>high</code> - The highest value in the permitted range</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>IntField field = new IntField(value, low, high);</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"getValue--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getValue</h4>\n<pre>public&nbsp;int&nbsp;getValue()</pre>\n<div class=\"block\">Returns the value of this field as a <code>int</code>.  If this value is either\n not a legal numeric value or is outside the specified range, this method will\n either pop up a dialog allowing the user to reenter the value or throw an\n <code>ErrorException</code> depending on the state of the <code>exceptionOnError</code>\n flag.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value stored in the field as a <code>int</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int n = field.getValue();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setValue-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setValue</h4>\n<pre>public&nbsp;void&nbsp;setValue(int&nbsp;n)</pre>\n<div class=\"block\">Sets the value of a field.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>n</code> - The value to be stored in the field</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>field.setValue(n);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getFormat--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFormat</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getFormat()</pre>\n<div class=\"block\">Returns the format currently in use for this field, or\n <code>null</code> if no format has been set.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The format for this field</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>String format = field.getFormat();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setFormat-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setFormat</h4>\n<pre>public&nbsp;void&nbsp;setFormat(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;format)</pre>\n<div class=\"block\">Sets the format used for the field.  The structure of the\n format string is described in the comments for the DecimalFormat\n class.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>format</code> - The format to use for the field</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>field.setFormat(format);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setExceptionOnError-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setExceptionOnError</h4>\n<pre>public&nbsp;void&nbsp;setExceptionOnError(boolean&nbsp;flag)</pre>\n<div class=\"block\">Sets the error-handling mode of this interactor as specified by the <code>flag</code>\n parameter.  If <code>flag</code> is <code>false</code> (which is the default),\n calling <a href=\"#getValue()\"><code>getValue</code></a> on this interactor displays\n a dialog that gives the user a chance to retry after erroneous input.  If this\n value is set to <code>true</code>, illegal input raises an\n <a href=\"../util/ErrorException.html\"><code>ErrorException</code></a> instead.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>flag</code> - <code>false</code> to retry on errors; <code>true</code> to raise an exception</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>field.setExceptionOnError(flag);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getExceptionOnError--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getExceptionOnError</h4>\n<pre>public&nbsp;boolean&nbsp;getExceptionOnError()</pre>\n<div class=\"block\">Returns the state of the error-handling flag.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The current setting of the error-handling mode (<code>false</code> to retry\n         on errors; <code>true</code> to raise an exception)</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>boolean flag = console.getExceptionOnError();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getPreferredSize--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>getPreferredSize</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a>&nbsp;getPreferredSize()</pre>\n<div class=\"block\">Overrides the standard definition to impose a target size.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#getPreferredSize--\" title=\"class or interface in javax.swing\">getPreferredSize</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/gui/Event.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/gui/JButtonGroup.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/gui/IntField.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"IntField.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JTextField\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.javax.swing.JTextField\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/gui/JButtonGroup.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:11 PDT 2017 -->\n<title>JButtonGroup</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"JButtonGroup\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":10,\"i16\":10,\"i17\":10,\"i18\":10,\"i19\":10,\"i20\":10,\"i21\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/gui/IntField.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/gui/JFontChooser.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/gui/JButtonGroup.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JButtonGroup.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JPanel\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.javax.swing.JComponent\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.gui</div>\n<h2 title=\"Class JButtonGroup\" class=\"title\">Class JButtonGroup</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Component</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Container</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JComponent</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JPanel</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.gui.JButtonGroup</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JRadioButton.html?is-external=true\" title=\"class or interface in javax.swing\">JRadioButton</a>&gt;, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">JButtonGroup</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a>\nimplements <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JRadioButton.html?is-external=true\" title=\"class or interface in javax.swing\">JRadioButton</a>&gt;</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#acm.gui.JButtonGroup\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JPanel\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.AccessibleJPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel.AccessibleJPanel</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.AccessibleJComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent.AccessibleJComponent</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.AccessibleAWTContainer.html?is-external=true\" title=\"class or interface in java.awt\">Container.AccessibleAWTContainer</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.AccessibleAWTComponent.html?is-external=true\" title=\"class or interface in java.awt\">Component.AccessibleAWTComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BaselineResizeBehavior.html?is-external=true\" title=\"class or interface in java.awt\">Component.BaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BltBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.BltBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.FlipBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.FlipBufferStrategy</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#listenerList\" title=\"class or interface in javax.swing\">listenerList</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#TOOL_TIP_TEXT_KEY\" title=\"class or interface in javax.swing\">TOOL_TIP_TEXT_KEY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#ui\" title=\"class or interface in javax.swing\">ui</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#UNDEFINED_CONDITION\" title=\"class or interface in javax.swing\">UNDEFINED_CONDITION</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_ANCESTOR_OF_FOCUSED_COMPONENT\" title=\"class or interface in javax.swing\">WHEN_ANCESTOR_OF_FOCUSED_COMPONENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_FOCUSED\" title=\"class or interface in javax.swing\">WHEN_FOCUSED</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_IN_FOCUSED_WINDOW\" title=\"class or interface in javax.swing\">WHEN_IN_FOCUSED_WINDOW</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#accessibleContext\" title=\"class or interface in java.awt\">accessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#BOTTOM_ALIGNMENT\" title=\"class or interface in java.awt\">BOTTOM_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#CENTER_ALIGNMENT\" title=\"class or interface in java.awt\">CENTER_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#LEFT_ALIGNMENT\" title=\"class or interface in java.awt\">LEFT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#RIGHT_ALIGNMENT\" title=\"class or interface in java.awt\">RIGHT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#TOP_ALIGNMENT\" title=\"class or interface in java.awt\">TOP_ALIGNMENT</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.image.ImageObserver\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ABORT\" title=\"class or interface in java.awt.image\">ABORT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ALLBITS\" title=\"class or interface in java.awt.image\">ALLBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ERROR\" title=\"class or interface in java.awt.image\">ERROR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#FRAMEBITS\" title=\"class or interface in java.awt.image\">FRAMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#HEIGHT\" title=\"class or interface in java.awt.image\">HEIGHT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#PROPERTIES\" title=\"class or interface in java.awt.image\">PROPERTIES</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#SOMEBITS\" title=\"class or interface in java.awt.image\">SOMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#WIDTH\" title=\"class or interface in java.awt.image\">WIDTH</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JButtonGroup.html#JButtonGroup--\">JButtonGroup</a></span>()</code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JButtonGroup.html#JButtonGroup-java.awt.event.ActionListener-java.lang.String...-\">JButtonGroup</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;items)</code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JButtonGroup.html#JButtonGroup-java.lang.String...-\">JButtonGroup</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;items)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JButtonGroup.html#add-java.awt.Component-\">add</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JButtonGroup.html#add-java.awt.Component-int-\">add</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n   int&nbsp;index)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JButtonGroup.html#add-javax.swing.JRadioButton-\">add</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JRadioButton.html?is-external=true\" title=\"class or interface in javax.swing\">JRadioButton</a>&nbsp;button)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractButton.html?is-external=true\" title=\"class or interface in javax.swing\">AbstractButton</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JButtonGroup.html#add-java.lang.String-\">add</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JButtonGroup.html#add-java.lang.String-java.awt.Component-\">add</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp)</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JButtonGroup.html#addActionListener-java.awt.event.ActionListener-\">addActionListener</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener)</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JButtonGroup.html#addAll-java.awt.event.ActionListener-java.lang.String...-\">addAll</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener,\n      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;items)</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JButtonGroup.html#clear--\">clear</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JButtonGroup.html#getActionListeners--\">getActionListeners</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JButtonGroup.html#getButtonCount--\">getButtonCount</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JRadioButton.html?is-external=true\" title=\"class or interface in javax.swing\">JRadioButton</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JButtonGroup.html#getSelectedButton--\">getSelectedButton</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JButtonGroup.html#getSelectedText--\">getSelectedText</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JButtonGroup.html#isEmpty--\">isEmpty</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JButtonGroup.html#isSelected-java.lang.String-\">isSelected</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</code>&nbsp;</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JButtonGroup.html#isVertical--\">isVertical</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true\" title=\"class or interface in java.util\">Iterator</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JRadioButton.html?is-external=true\" title=\"class or interface in javax.swing\">JRadioButton</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JButtonGroup.html#iterator--\">iterator</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JButtonGroup.html#remove-java.awt.Component-\">remove</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp)</code>&nbsp;</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JButtonGroup.html#remove-javax.swing.JRadioButton-\">remove</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JRadioButton.html?is-external=true\" title=\"class or interface in javax.swing\">JRadioButton</a>&nbsp;button)</code>&nbsp;</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JButtonGroup.html#remove-java.lang.String-\">remove</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</code>&nbsp;</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JButtonGroup.html#removeActionListener-java.awt.event.ActionListener-\">removeActionListener</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener)</code>&nbsp;</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JButtonGroup.html#removeAll--\">removeAll</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JButtonGroup.html#setVertical-boolean-\">setVertical</a></span>(boolean&nbsp;vertical)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JPanel\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true#getAccessibleContext--\" title=\"class or interface in javax.swing\">getAccessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true#getUI--\" title=\"class or interface in javax.swing\">getUI</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true#getUIClassID--\" title=\"class or interface in javax.swing\">getUIClassID</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true#paramString--\" title=\"class or interface in javax.swing\">paramString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true#setUI-javax.swing.plaf.PanelUI-\" title=\"class or interface in javax.swing\">setUI</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true#updateUI--\" title=\"class or interface in javax.swing\">updateUI</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addAncestorListener-javax.swing.event.AncestorListener-\" title=\"class or interface in javax.swing\">addAncestorListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addNotify--\" title=\"class or interface in javax.swing\">addNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addVetoableChangeListener-java.beans.VetoableChangeListener-\" title=\"class or interface in javax.swing\">addVetoableChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#computeVisibleRect-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">computeVisibleRect</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#contains-int-int-\" title=\"class or interface in javax.swing\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#createToolTip--\" title=\"class or interface in javax.swing\">createToolTip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#disable--\" title=\"class or interface in javax.swing\">disable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#enable--\" title=\"class or interface in javax.swing\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-boolean-boolean-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-char-char-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-int-int-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#fireVetoableChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in javax.swing\">fireVetoableChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getActionForKeyStroke-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">getActionForKeyStroke</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getActionMap--\" title=\"class or interface in javax.swing\">getActionMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAlignmentX--\" title=\"class or interface in javax.swing\">getAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAlignmentY--\" title=\"class or interface in javax.swing\">getAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAncestorListeners--\" title=\"class or interface in javax.swing\">getAncestorListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAutoscrolls--\" title=\"class or interface in javax.swing\">getAutoscrolls</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBaseline-int-int-\" title=\"class or interface in javax.swing\">getBaseline</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBaselineResizeBehavior--\" title=\"class or interface in javax.swing\">getBaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBorder--\" title=\"class or interface in javax.swing\">getBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBounds-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getClientProperty-java.lang.Object-\" title=\"class or interface in javax.swing\">getClientProperty</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getComponentGraphics-java.awt.Graphics-\" title=\"class or interface in javax.swing\">getComponentGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getComponentPopupMenu--\" title=\"class or interface in javax.swing\">getComponentPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getConditionForKeyStroke-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">getConditionForKeyStroke</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getDebugGraphicsOptions--\" title=\"class or interface in javax.swing\">getDebugGraphicsOptions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getDefaultLocale--\" title=\"class or interface in javax.swing\">getDefaultLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getFontMetrics-java.awt.Font-\" title=\"class or interface in javax.swing\">getFontMetrics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getGraphics--\" title=\"class or interface in javax.swing\">getGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getHeight--\" title=\"class or interface in javax.swing\">getHeight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInheritsPopupMenu--\" title=\"class or interface in javax.swing\">getInheritsPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputMap--\" title=\"class or interface in javax.swing\">getInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputMap-int-\" title=\"class or interface in javax.swing\">getInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputVerifier--\" title=\"class or interface in javax.swing\">getInputVerifier</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInsets--\" title=\"class or interface in javax.swing\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInsets-java.awt.Insets-\" title=\"class or interface in javax.swing\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getListeners-java.lang.Class-\" title=\"class or interface in javax.swing\">getListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getLocation-java.awt.Point-\" title=\"class or interface in javax.swing\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getMaximumSize--\" title=\"class or interface in javax.swing\">getMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getMinimumSize--\" title=\"class or interface in javax.swing\">getMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getNextFocusableComponent--\" title=\"class or interface in javax.swing\">getNextFocusableComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getPopupLocation-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">getPopupLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getPreferredSize--\" title=\"class or interface in javax.swing\">getPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getRegisteredKeyStrokes--\" title=\"class or interface in javax.swing\">getRegisteredKeyStrokes</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getRootPane--\" title=\"class or interface in javax.swing\">getRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getToolTipLocation-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">getToolTipLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getToolTipText--\" title=\"class or interface in javax.swing\">getToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getToolTipText-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">getToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getTopLevelAncestor--\" title=\"class or interface in javax.swing\">getTopLevelAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getTransferHandler--\" title=\"class or interface in javax.swing\">getTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVerifyInputWhenFocusTarget--\" title=\"class or interface in javax.swing\">getVerifyInputWhenFocusTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVetoableChangeListeners--\" title=\"class or interface in javax.swing\">getVetoableChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVisibleRect--\" title=\"class or interface in javax.swing\">getVisibleRect</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getWidth--\" title=\"class or interface in javax.swing\">getWidth</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getX--\" title=\"class or interface in javax.swing\">getX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getY--\" title=\"class or interface in javax.swing\">getY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#grabFocus--\" title=\"class or interface in javax.swing\">grabFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#hide--\" title=\"class or interface in javax.swing\">hide</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isDoubleBuffered--\" title=\"class or interface in javax.swing\">isDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isLightweightComponent-java.awt.Component-\" title=\"class or interface in javax.swing\">isLightweightComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isManagingFocus--\" title=\"class or interface in javax.swing\">isManagingFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isOpaque--\" title=\"class or interface in javax.swing\">isOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isOptimizedDrawingEnabled--\" title=\"class or interface in javax.swing\">isOptimizedDrawingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingForPrint--\" title=\"class or interface in javax.swing\">isPaintingForPrint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingOrigin--\" title=\"class or interface in javax.swing\">isPaintingOrigin</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingTile--\" title=\"class or interface in javax.swing\">isPaintingTile</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isRequestFocusEnabled--\" title=\"class or interface in javax.swing\">isRequestFocusEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isValidateRoot--\" title=\"class or interface in javax.swing\">isValidateRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paint-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintBorder-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintChildren-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintChildren</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintComponent-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintImmediately-int-int-int-int-\" title=\"class or interface in javax.swing\">paintImmediately</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintImmediately-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">paintImmediately</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#print-java.awt.Graphics-\" title=\"class or interface in javax.swing\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printAll-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printBorder-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printChildren-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printChildren</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printComponent-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processComponentKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in javax.swing\">processComponentKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processKeyBinding-javax.swing.KeyStroke-java.awt.event.KeyEvent-int-boolean-\" title=\"class or interface in javax.swing\">processKeyBinding</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in javax.swing\">processKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processMouseEvent-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">processMouseEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processMouseMotionEvent-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">processMouseMotionEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#putClientProperty-java.lang.Object-java.lang.Object-\" title=\"class or interface in javax.swing\">putClientProperty</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#registerKeyboardAction-java.awt.event.ActionListener-javax.swing.KeyStroke-int-\" title=\"class or interface in javax.swing\">registerKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#registerKeyboardAction-java.awt.event.ActionListener-java.lang.String-javax.swing.KeyStroke-int-\" title=\"class or interface in javax.swing\">registerKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#removeAncestorListener-javax.swing.event.AncestorListener-\" title=\"class or interface in javax.swing\">removeAncestorListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#removeNotify--\" title=\"class or interface in javax.swing\">removeNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#removeVetoableChangeListener-java.beans.VetoableChangeListener-\" title=\"class or interface in javax.swing\">removeVetoableChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#repaint-long-int-int-int-int-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#repaint-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestDefaultFocus--\" title=\"class or interface in javax.swing\">requestDefaultFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocus--\" title=\"class or interface in javax.swing\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocus-boolean-\" title=\"class or interface in javax.swing\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocusInWindow--\" title=\"class or interface in javax.swing\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocusInWindow-boolean-\" title=\"class or interface in javax.swing\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#resetKeyboardActions--\" title=\"class or interface in javax.swing\">resetKeyboardActions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#reshape-int-int-int-int-\" title=\"class or interface in javax.swing\">reshape</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#revalidate--\" title=\"class or interface in javax.swing\">revalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#scrollRectToVisible-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">scrollRectToVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setActionMap-javax.swing.ActionMap-\" title=\"class or interface in javax.swing\">setActionMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAlignmentX-float-\" title=\"class or interface in javax.swing\">setAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAlignmentY-float-\" title=\"class or interface in javax.swing\">setAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAutoscrolls-boolean-\" title=\"class or interface in javax.swing\">setAutoscrolls</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setBackground-java.awt.Color-\" title=\"class or interface in javax.swing\">setBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setBorder-javax.swing.border.Border-\" title=\"class or interface in javax.swing\">setBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setComponentPopupMenu-javax.swing.JPopupMenu-\" title=\"class or interface in javax.swing\">setComponentPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDebugGraphicsOptions-int-\" title=\"class or interface in javax.swing\">setDebugGraphicsOptions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDefaultLocale-java.util.Locale-\" title=\"class or interface in javax.swing\">setDefaultLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDoubleBuffered-boolean-\" title=\"class or interface in javax.swing\">setDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setEnabled-boolean-\" title=\"class or interface in javax.swing\">setEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setFocusTraversalKeys-int-java.util.Set-\" title=\"class or interface in javax.swing\">setFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setFont-java.awt.Font-\" title=\"class or interface in javax.swing\">setFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setForeground-java.awt.Color-\" title=\"class or interface in javax.swing\">setForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInheritsPopupMenu-boolean-\" title=\"class or interface in javax.swing\">setInheritsPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInputMap-int-javax.swing.InputMap-\" title=\"class or interface in javax.swing\">setInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInputVerifier-javax.swing.InputVerifier-\" title=\"class or interface in javax.swing\">setInputVerifier</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setMaximumSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setMinimumSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setNextFocusableComponent-java.awt.Component-\" title=\"class or interface in javax.swing\">setNextFocusableComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setOpaque-boolean-\" title=\"class or interface in javax.swing\">setOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setPreferredSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setRequestFocusEnabled-boolean-\" title=\"class or interface in javax.swing\">setRequestFocusEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setToolTipText-java.lang.String-\" title=\"class or interface in javax.swing\">setToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setTransferHandler-javax.swing.TransferHandler-\" title=\"class or interface in javax.swing\">setTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setUI-javax.swing.plaf.ComponentUI-\" title=\"class or interface in javax.swing\">setUI</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setVerifyInputWhenFocusTarget-boolean-\" title=\"class or interface in javax.swing\">setVerifyInputWhenFocusTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setVisible-boolean-\" title=\"class or interface in javax.swing\">setVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#unregisterKeyboardAction-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">unregisterKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#update-java.awt.Graphics-\" title=\"class or interface in javax.swing\">update</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">addContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addImpl-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">addImpl</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#applyComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">applyComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#areFocusTraversalKeysSet-int-\" title=\"class or interface in java.awt\">areFocusTraversalKeysSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#countComponents--\" title=\"class or interface in java.awt\">countComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#deliverEvent-java.awt.Event-\" title=\"class or interface in java.awt\">deliverEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#doLayout--\" title=\"class or interface in java.awt\">doLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-int-int-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponent-int-\" title=\"class or interface in java.awt\">getComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-int-int-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentCount--\" title=\"class or interface in java.awt\">getComponentCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponents--\" title=\"class or interface in java.awt\">getComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentZOrder-java.awt.Component-\" title=\"class or interface in java.awt\">getComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getContainerListeners--\" title=\"class or interface in java.awt\">getContainerListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalKeys-int-\" title=\"class or interface in java.awt\">getFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalPolicy--\" title=\"class or interface in java.awt\">getFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getLayout--\" title=\"class or interface in java.awt\">getLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMousePosition-boolean-\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#insets--\" title=\"class or interface in java.awt\">insets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#invalidate--\" title=\"class or interface in java.awt\">invalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isAncestorOf-java.awt.Component-\" title=\"class or interface in java.awt\">isAncestorOf</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot--\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot-java.awt.Container-\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicyProvider--\" title=\"class or interface in java.awt\">isFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicySet--\" title=\"class or interface in java.awt\">isFocusTraversalPolicySet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#layout--\" title=\"class or interface in java.awt\">layout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintStream-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintWriter-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#locate-int-int-\" title=\"class or interface in java.awt\">locate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#minimumSize--\" title=\"class or interface in java.awt\">minimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paintComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#preferredSize--\" title=\"class or interface in java.awt\">preferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#printComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">printComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processContainerEvent-java.awt.event.ContainerEvent-\" title=\"class or interface in java.awt\">processContainerEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">processEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#remove-int-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">removeContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setComponentZOrder-java.awt.Component-int-\" title=\"class or interface in java.awt\">setComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusCycleRoot-boolean-\" title=\"class or interface in java.awt\">setFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicy-java.awt.FocusTraversalPolicy-\" title=\"class or interface in java.awt\">setFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicyProvider-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setLayout-java.awt.LayoutManager-\" title=\"class or interface in java.awt\">setLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#transferFocusDownCycle--\" title=\"class or interface in java.awt\">transferFocusDownCycle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validate--\" title=\"class or interface in java.awt\">validate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validateTree--\" title=\"class or interface in java.awt\">validateTree</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#action-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">action</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#add-java.awt.PopupMenu-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">addComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">addFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">addHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">addHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">addInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">addKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">addMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">addMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">addMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#bounds--\" title=\"class or interface in java.awt\">bounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#coalesceEvents-java.awt.AWTEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">coalesceEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-java.awt.Point-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-java.awt.image.ImageProducer-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-int-int-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-java.awt.ImageCapabilities-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disableEvents-long-\" title=\"class or interface in java.awt\">disableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#dispatchEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">dispatchEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable-boolean-\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableEvents-long-\" title=\"class or interface in java.awt\">enableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableInputMethods-boolean-\" title=\"class or interface in java.awt\">enableInputMethods</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-byte-byte-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-double-double-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-float-float-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-long-long-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-short-short-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBackground--\" title=\"class or interface in java.awt\">getBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds--\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getColorModel--\" title=\"class or interface in java.awt\">getColorModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentListeners--\" title=\"class or interface in java.awt\">getComponentListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentOrientation--\" title=\"class or interface in java.awt\">getComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getCursor--\" title=\"class or interface in java.awt\">getCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getDropTarget--\" title=\"class or interface in java.awt\">getDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusCycleRootAncestor--\" title=\"class or interface in java.awt\">getFocusCycleRootAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusListeners--\" title=\"class or interface in java.awt\">getFocusListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusTraversalKeysEnabled--\" title=\"class or interface in java.awt\">getFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFont--\" title=\"class or interface in java.awt\">getFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getForeground--\" title=\"class or interface in java.awt\">getForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getGraphicsConfiguration--\" title=\"class or interface in java.awt\">getGraphicsConfiguration</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyBoundsListeners--\" title=\"class or interface in java.awt\">getHierarchyBoundsListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyListeners--\" title=\"class or interface in java.awt\">getHierarchyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getIgnoreRepaint--\" title=\"class or interface in java.awt\">getIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputContext--\" title=\"class or interface in java.awt\">getInputContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodListeners--\" title=\"class or interface in java.awt\">getInputMethodListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodRequests--\" title=\"class or interface in java.awt\">getInputMethodRequests</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getKeyListeners--\" title=\"class or interface in java.awt\">getKeyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocale--\" title=\"class or interface in java.awt\">getLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation--\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocationOnScreen--\" title=\"class or interface in java.awt\">getLocationOnScreen</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseListeners--\" title=\"class or interface in java.awt\">getMouseListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseMotionListeners--\" title=\"class or interface in java.awt\">getMouseMotionListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMousePosition--\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseWheelListeners--\" title=\"class or interface in java.awt\">getMouseWheelListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getName--\" title=\"class or interface in java.awt\">getName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getParent--\" title=\"class or interface in java.awt\">getParent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPeer--\" title=\"class or interface in java.awt\">getPeer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners--\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners-java.lang.String-\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize--\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getToolkit--\" title=\"class or interface in java.awt\">getToolkit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getTreeLock--\" title=\"class or interface in java.awt\">getTreeLock</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#gotFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">gotFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#handleEvent-java.awt.Event-\" title=\"class or interface in java.awt\">handleEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hasFocus--\" title=\"class or interface in java.awt\">hasFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#imageUpdate-java.awt.Image-int-int-int-int-int-\" title=\"class or interface in java.awt\">imageUpdate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#inside-int-int-\" title=\"class or interface in java.awt\">inside</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isBackgroundSet--\" title=\"class or interface in java.awt\">isBackgroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isCursorSet--\" title=\"class or interface in java.awt\">isCursorSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDisplayable--\" title=\"class or interface in java.awt\">isDisplayable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isEnabled--\" title=\"class or interface in java.awt\">isEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusable--\" title=\"class or interface in java.awt\">isFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusOwner--\" title=\"class or interface in java.awt\">isFocusOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusTraversable--\" title=\"class or interface in java.awt\">isFocusTraversable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFontSet--\" title=\"class or interface in java.awt\">isFontSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isForegroundSet--\" title=\"class or interface in java.awt\">isForegroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isLightweight--\" title=\"class or interface in java.awt\">isLightweight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMaximumSizeSet--\" title=\"class or interface in java.awt\">isMaximumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMinimumSizeSet--\" title=\"class or interface in java.awt\">isMinimumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isPreferredSizeSet--\" title=\"class or interface in java.awt\">isPreferredSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isShowing--\" title=\"class or interface in java.awt\">isShowing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isValid--\" title=\"class or interface in java.awt\">isValid</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isVisible--\" title=\"class or interface in java.awt\">isVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyDown-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyUp-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list--\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintStream-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintWriter-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#location--\" title=\"class or interface in java.awt\">location</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#lostFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">lostFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDown-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDrag-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDrag</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseEnter-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseEnter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseExit-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseExit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseMove-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseMove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseUp-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#move-int-int-\" title=\"class or interface in java.awt\">move</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#nextFocus--\" title=\"class or interface in java.awt\">nextFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#paintAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#postEvent-java.awt.Event-\" title=\"class or interface in java.awt\">postEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processComponentEvent-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt\">processComponentEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processFocusEvent-java.awt.event.FocusEvent-\" title=\"class or interface in java.awt\">processFocusEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyBoundsEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyBoundsEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processInputMethodEvent-java.awt.event.InputMethodEvent-\" title=\"class or interface in java.awt\">processInputMethodEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseWheelEvent-java.awt.event.MouseWheelEvent-\" title=\"class or interface in java.awt\">processMouseWheelEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#remove-java.awt.MenuComponent-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">removeComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">removeFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">removeHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">removeHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">removeInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">removeKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">removeMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">removeMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">removeMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint--\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-int-int-int-int-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-long-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#resize-java.awt.Dimension-\" title=\"class or interface in java.awt\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#resize-int-int-\" title=\"class or interface in java.awt\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-int-int-int-int-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">setComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setCursor-java.awt.Cursor-\" title=\"class or interface in java.awt\">setCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setDropTarget-java.awt.dnd.DropTarget-\" title=\"class or interface in java.awt\">setDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusable-boolean-\" title=\"class or interface in java.awt\">setFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusTraversalKeysEnabled-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setIgnoreRepaint-boolean-\" title=\"class or interface in java.awt\">setIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocale-java.util.Locale-\" title=\"class or interface in java.awt\">setLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-int-int-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-java.awt.Point-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setName-java.lang.String-\" title=\"class or interface in java.awt\">setName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-int-int-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show--\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show-boolean-\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#size--\" title=\"class or interface in java.awt\">size</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#toString--\" title=\"class or interface in java.awt\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocus--\" title=\"class or interface in java.awt\">transferFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusBackward--\" title=\"class or interface in java.awt\">transferFocusBackward</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusUpCycle--\" title=\"class or interface in java.awt\">transferFocusUpCycle</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Iterable\">\n<!--   -->\n</a>\n<h3>Methods inherited from interface&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true#forEach-java.util.function.Consumer-\" title=\"class or interface in java.lang\">forEach</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true#spliterator--\" title=\"class or interface in java.lang\">spliterator</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"JButtonGroup--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>JButtonGroup</h4>\n<pre>public&nbsp;JButtonGroup()</pre>\n</li>\n</ul>\n<a name=\"JButtonGroup-java.lang.String...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>JButtonGroup</h4>\n<pre>public&nbsp;JButtonGroup(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;items)</pre>\n</li>\n</ul>\n<a name=\"JButtonGroup-java.awt.event.ActionListener-java.lang.String...-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>JButtonGroup</h4>\n<pre>public&nbsp;JButtonGroup(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener,\n                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;items)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"addActionListener-java.awt.event.ActionListener-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addActionListener</h4>\n<pre>public&nbsp;void&nbsp;addActionListener(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener)</pre>\n</li>\n</ul>\n<a name=\"getActionListeners--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getActionListeners</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>[]&nbsp;getActionListeners()</pre>\n</li>\n</ul>\n<a name=\"removeActionListener-java.awt.event.ActionListener-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeActionListener</h4>\n<pre>public&nbsp;void&nbsp;removeActionListener(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener)</pre>\n</li>\n</ul>\n<a name=\"addAll-java.awt.event.ActionListener-java.lang.String...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addAll</h4>\n<pre>public&nbsp;void&nbsp;addAll(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener,\n                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;items)</pre>\n</li>\n</ul>\n<a name=\"add-java.awt.Component-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;add(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-\" title=\"class or interface in java.awt\">add</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"add-java.awt.Component-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;add(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n                     int&nbsp;index)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-int-\" title=\"class or interface in java.awt\">add</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"add-java.lang.String-java.awt.Component-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;add(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n                     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.lang.String-java.awt.Component-\" title=\"class or interface in java.awt\">add</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"add-javax.swing.JRadioButton-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>public&nbsp;void&nbsp;add(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JRadioButton.html?is-external=true\" title=\"class or interface in javax.swing\">JRadioButton</a>&nbsp;button)</pre>\n</li>\n</ul>\n<a name=\"add-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractButton.html?is-external=true\" title=\"class or interface in javax.swing\">AbstractButton</a>&nbsp;add(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</pre>\n</li>\n</ul>\n<a name=\"clear--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clear</h4>\n<pre>public&nbsp;void&nbsp;clear()</pre>\n</li>\n</ul>\n<a name=\"getButtonCount--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getButtonCount</h4>\n<pre>public&nbsp;int&nbsp;getButtonCount()</pre>\n</li>\n</ul>\n<a name=\"getSelectedButton--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSelectedButton</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JRadioButton.html?is-external=true\" title=\"class or interface in javax.swing\">JRadioButton</a>&nbsp;getSelectedButton()</pre>\n</li>\n</ul>\n<a name=\"getSelectedText--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSelectedText</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getSelectedText()</pre>\n</li>\n</ul>\n<a name=\"isEmpty--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isEmpty</h4>\n<pre>public&nbsp;boolean&nbsp;isEmpty()</pre>\n</li>\n</ul>\n<a name=\"isSelected-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isSelected</h4>\n<pre>public&nbsp;boolean&nbsp;isSelected(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</pre>\n</li>\n</ul>\n<a name=\"isVertical--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isVertical</h4>\n<pre>public&nbsp;boolean&nbsp;isVertical()</pre>\n</li>\n</ul>\n<a name=\"iterator--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>iterator</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true\" title=\"class or interface in java.util\">Iterator</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JRadioButton.html?is-external=true\" title=\"class or interface in javax.swing\">JRadioButton</a>&gt;&nbsp;iterator()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true#iterator--\" title=\"class or interface in java.lang\">iterator</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JRadioButton.html?is-external=true\" title=\"class or interface in javax.swing\">JRadioButton</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"remove-java.awt.Component-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>remove</h4>\n<pre>public&nbsp;void&nbsp;remove(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#remove-java.awt.Component-\" title=\"class or interface in java.awt\">remove</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"remove-javax.swing.JRadioButton-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>remove</h4>\n<pre>public&nbsp;void&nbsp;remove(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JRadioButton.html?is-external=true\" title=\"class or interface in javax.swing\">JRadioButton</a>&nbsp;button)</pre>\n</li>\n</ul>\n<a name=\"remove-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>remove</h4>\n<pre>public&nbsp;void&nbsp;remove(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</pre>\n</li>\n</ul>\n<a name=\"removeAll--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeAll</h4>\n<pre>public&nbsp;void&nbsp;removeAll()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeAll--\" title=\"class or interface in java.awt\">removeAll</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setVertical-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>setVertical</h4>\n<pre>public&nbsp;void&nbsp;setVertical(boolean&nbsp;vertical)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/gui/IntField.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/gui/JFontChooser.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/gui/JButtonGroup.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JButtonGroup.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JPanel\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.javax.swing.JComponent\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/gui/JFontChooser.DialogCancelAction.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:12 PDT 2017 -->\n<title>JFontChooser.DialogCancelAction</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"JFontChooser.DialogCancelAction\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/gui/JFontChooser.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/gui/JFontChooser.DialogOKAction.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/gui/JFontChooser.DialogCancelAction.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JFontChooser.DialogCancelAction.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.gui</div>\n<h2 title=\"Class JFontChooser.DialogCancelAction\" class=\"title\">Class JFontChooser.DialogCancelAction</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractAction.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.AbstractAction</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.gui.JFontChooser.DialogCancelAction</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true\" title=\"class or interface in java.lang\">Cloneable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Action.html?is-external=true\" title=\"class or interface in javax.swing\">Action</a></dd>\n</dl>\n<dl>\n<dt>Enclosing class:</dt>\n<dd><a href=\"../../acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></dd>\n</dl>\n<hr>\n<br>\n<pre>protected class <span class=\"typeNameLabel\">JFontChooser.DialogCancelAction</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractAction.html?is-external=true\" title=\"class or interface in javax.swing\">AbstractAction</a></pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#acm.gui.JFontChooser.DialogCancelAction\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.DialogCancelAction.html#ACTION_NAME\">ACTION_NAME</a></span></code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.AbstractAction\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractAction.html?is-external=true\" title=\"class or interface in javax.swing\">AbstractAction</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractAction.html?is-external=true#changeSupport\" title=\"class or interface in javax.swing\">changeSupport</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractAction.html?is-external=true#enabled\" title=\"class or interface in javax.swing\">enabled</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.Action\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Action.html?is-external=true\" title=\"class or interface in javax.swing\">Action</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Action.html?is-external=true#ACCELERATOR_KEY\" title=\"class or interface in javax.swing\">ACCELERATOR_KEY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Action.html?is-external=true#ACTION_COMMAND_KEY\" title=\"class or interface in javax.swing\">ACTION_COMMAND_KEY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Action.html?is-external=true#DEFAULT\" title=\"class or interface in javax.swing\">DEFAULT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Action.html?is-external=true#DISPLAYED_MNEMONIC_INDEX_KEY\" title=\"class or interface in javax.swing\">DISPLAYED_MNEMONIC_INDEX_KEY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Action.html?is-external=true#LARGE_ICON_KEY\" title=\"class or interface in javax.swing\">LARGE_ICON_KEY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Action.html?is-external=true#LONG_DESCRIPTION\" title=\"class or interface in javax.swing\">LONG_DESCRIPTION</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Action.html?is-external=true#MNEMONIC_KEY\" title=\"class or interface in javax.swing\">MNEMONIC_KEY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Action.html?is-external=true#NAME\" title=\"class or interface in javax.swing\">NAME</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Action.html?is-external=true#SELECTED_KEY\" title=\"class or interface in javax.swing\">SELECTED_KEY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Action.html?is-external=true#SHORT_DESCRIPTION\" title=\"class or interface in javax.swing\">SHORT_DESCRIPTION</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Action.html?is-external=true#SMALL_ICON\" title=\"class or interface in javax.swing\">SMALL_ICON</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier</th>\n<th class=\"colLast\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected </code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.DialogCancelAction.html#DialogCancelAction-javax.swing.JDialog-\">DialogCancelAction</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true\" title=\"class or interface in javax.swing\">JDialog</a>&nbsp;dialog)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.DialogCancelAction.html#actionPerformed-java.awt.event.ActionEvent-\">actionPerformed</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;e)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.AbstractAction\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractAction.html?is-external=true\" title=\"class or interface in javax.swing\">AbstractAction</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractAction.html?is-external=true#addPropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in javax.swing\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractAction.html?is-external=true#clone--\" title=\"class or interface in javax.swing\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractAction.html?is-external=true#firePropertyChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractAction.html?is-external=true#getKeys--\" title=\"class or interface in javax.swing\">getKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractAction.html?is-external=true#getPropertyChangeListeners--\" title=\"class or interface in javax.swing\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractAction.html?is-external=true#getValue-java.lang.String-\" title=\"class or interface in javax.swing\">getValue</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractAction.html?is-external=true#isEnabled--\" title=\"class or interface in javax.swing\">isEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractAction.html?is-external=true#putValue-java.lang.String-java.lang.Object-\" title=\"class or interface in javax.swing\">putValue</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractAction.html?is-external=true#removePropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in javax.swing\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractAction.html?is-external=true#setEnabled-boolean-\" title=\"class or interface in javax.swing\">setEnabled</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"ACTION_NAME\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>ACTION_NAME</h4>\n<pre>protected static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> ACTION_NAME</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.gui.JFontChooser.DialogCancelAction.ACTION_NAME\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"DialogCancelAction-javax.swing.JDialog-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>DialogCancelAction</h4>\n<pre>protected&nbsp;DialogCancelAction(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true\" title=\"class or interface in javax.swing\">JDialog</a>&nbsp;dialog)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"actionPerformed-java.awt.event.ActionEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>actionPerformed</h4>\n<pre>public&nbsp;void&nbsp;actionPerformed(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;e)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/gui/JFontChooser.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/gui/JFontChooser.DialogOKAction.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/gui/JFontChooser.DialogCancelAction.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JFontChooser.DialogCancelAction.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/gui/JFontChooser.DialogOKAction.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:12 PDT 2017 -->\n<title>JFontChooser.DialogOKAction</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"JFontChooser.DialogOKAction\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/gui/JFontChooser.DialogCancelAction.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/gui/JFontChooser.DialogOKAction.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JFontChooser.DialogOKAction.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.gui</div>\n<h2 title=\"Class JFontChooser.DialogOKAction\" class=\"title\">Class JFontChooser.DialogOKAction</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractAction.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.AbstractAction</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.gui.JFontChooser.DialogOKAction</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true\" title=\"class or interface in java.lang\">Cloneable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Action.html?is-external=true\" title=\"class or interface in javax.swing\">Action</a></dd>\n</dl>\n<dl>\n<dt>Enclosing class:</dt>\n<dd><a href=\"../../acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></dd>\n</dl>\n<hr>\n<br>\n<pre>protected class <span class=\"typeNameLabel\">JFontChooser.DialogOKAction</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractAction.html?is-external=true\" title=\"class or interface in javax.swing\">AbstractAction</a></pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#acm.gui.JFontChooser.DialogOKAction\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.DialogOKAction.html#ACTION_NAME\">ACTION_NAME</a></span></code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.AbstractAction\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractAction.html?is-external=true\" title=\"class or interface in javax.swing\">AbstractAction</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractAction.html?is-external=true#changeSupport\" title=\"class or interface in javax.swing\">changeSupport</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractAction.html?is-external=true#enabled\" title=\"class or interface in javax.swing\">enabled</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.Action\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Action.html?is-external=true\" title=\"class or interface in javax.swing\">Action</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Action.html?is-external=true#ACCELERATOR_KEY\" title=\"class or interface in javax.swing\">ACCELERATOR_KEY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Action.html?is-external=true#ACTION_COMMAND_KEY\" title=\"class or interface in javax.swing\">ACTION_COMMAND_KEY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Action.html?is-external=true#DEFAULT\" title=\"class or interface in javax.swing\">DEFAULT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Action.html?is-external=true#DISPLAYED_MNEMONIC_INDEX_KEY\" title=\"class or interface in javax.swing\">DISPLAYED_MNEMONIC_INDEX_KEY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Action.html?is-external=true#LARGE_ICON_KEY\" title=\"class or interface in javax.swing\">LARGE_ICON_KEY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Action.html?is-external=true#LONG_DESCRIPTION\" title=\"class or interface in javax.swing\">LONG_DESCRIPTION</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Action.html?is-external=true#MNEMONIC_KEY\" title=\"class or interface in javax.swing\">MNEMONIC_KEY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Action.html?is-external=true#NAME\" title=\"class or interface in javax.swing\">NAME</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Action.html?is-external=true#SELECTED_KEY\" title=\"class or interface in javax.swing\">SELECTED_KEY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Action.html?is-external=true#SHORT_DESCRIPTION\" title=\"class or interface in javax.swing\">SHORT_DESCRIPTION</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Action.html?is-external=true#SMALL_ICON\" title=\"class or interface in javax.swing\">SMALL_ICON</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier</th>\n<th class=\"colLast\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected </code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.DialogOKAction.html#DialogOKAction-javax.swing.JDialog-\">DialogOKAction</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true\" title=\"class or interface in javax.swing\">JDialog</a>&nbsp;dialog)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.DialogOKAction.html#actionPerformed-java.awt.event.ActionEvent-\">actionPerformed</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;e)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.AbstractAction\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractAction.html?is-external=true\" title=\"class or interface in javax.swing\">AbstractAction</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractAction.html?is-external=true#addPropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in javax.swing\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractAction.html?is-external=true#clone--\" title=\"class or interface in javax.swing\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractAction.html?is-external=true#firePropertyChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractAction.html?is-external=true#getKeys--\" title=\"class or interface in javax.swing\">getKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractAction.html?is-external=true#getPropertyChangeListeners--\" title=\"class or interface in javax.swing\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractAction.html?is-external=true#getValue-java.lang.String-\" title=\"class or interface in javax.swing\">getValue</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractAction.html?is-external=true#isEnabled--\" title=\"class or interface in javax.swing\">isEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractAction.html?is-external=true#putValue-java.lang.String-java.lang.Object-\" title=\"class or interface in javax.swing\">putValue</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractAction.html?is-external=true#removePropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in javax.swing\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractAction.html?is-external=true#setEnabled-boolean-\" title=\"class or interface in javax.swing\">setEnabled</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"ACTION_NAME\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>ACTION_NAME</h4>\n<pre>protected static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> ACTION_NAME</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.gui.JFontChooser.DialogOKAction.ACTION_NAME\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"DialogOKAction-javax.swing.JDialog-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>DialogOKAction</h4>\n<pre>protected&nbsp;DialogOKAction(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true\" title=\"class or interface in javax.swing\">JDialog</a>&nbsp;dialog)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"actionPerformed-java.awt.event.ActionEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>actionPerformed</h4>\n<pre>public&nbsp;void&nbsp;actionPerformed(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;e)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/gui/JFontChooser.DialogCancelAction.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/gui/JFontChooser.DialogOKAction.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JFontChooser.DialogOKAction.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.ListSelector.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:12 PDT 2017 -->\n<title>JFontChooser.ListSearchTextFieldDocumentHandler.ListSelector</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"JFontChooser.ListSearchTextFieldDocumentHandler.ListSelector\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/gui/JFontChooser.ListSelectionHandler.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.ListSelector.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JFontChooser.ListSearchTextFieldDocumentHandler.ListSelector.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.gui</div>\n<h2 title=\"Class JFontChooser.ListSearchTextFieldDocumentHandler.ListSelector\" class=\"title\">Class JFontChooser.ListSearchTextFieldDocumentHandler.ListSelector</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.gui.JFontChooser.ListSearchTextFieldDocumentHandler.ListSelector</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a></dd>\n</dl>\n<dl>\n<dt>Enclosing class:</dt>\n<dd><a href=\"../../acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.html\" title=\"class in acm.gui\">JFontChooser.ListSearchTextFieldDocumentHandler</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">JFontChooser.ListSearchTextFieldDocumentHandler.ListSelector</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>\nimplements <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.ListSelector.html#ListSelector-int-\">ListSelector</a></span>(int&nbsp;index)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.ListSelector.html#run--\">run</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"ListSelector-int-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>ListSelector</h4>\n<pre>public&nbsp;ListSelector(int&nbsp;index)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"run--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>run</h4>\n<pre>public&nbsp;void&nbsp;run()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true#run--\" title=\"class or interface in java.lang\">run</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/gui/JFontChooser.ListSelectionHandler.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.ListSelector.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JFontChooser.ListSearchTextFieldDocumentHandler.ListSelector.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:12 PDT 2017 -->\n<title>JFontChooser.ListSearchTextFieldDocumentHandler</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"JFontChooser.ListSearchTextFieldDocumentHandler\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/gui/JFontChooser.DialogOKAction.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.ListSelector.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JFontChooser.ListSearchTextFieldDocumentHandler.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.class.summary\">Nested</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.gui</div>\n<h2 title=\"Class JFontChooser.ListSearchTextFieldDocumentHandler\" class=\"title\">Class JFontChooser.ListSearchTextFieldDocumentHandler</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.gui.JFontChooser.ListSearchTextFieldDocumentHandler</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentListener</a></dd>\n</dl>\n<dl>\n<dt>Enclosing class:</dt>\n<dd><a href=\"../../acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></dd>\n</dl>\n<hr>\n<br>\n<pre>protected class <span class=\"typeNameLabel\">JFontChooser.ListSearchTextFieldDocumentHandler</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>\nimplements <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentListener</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Nested Class Summary table, listing nested classes, and an explanation\">\n<caption><span>Nested Classes</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Class and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>class&nbsp;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.ListSelector.html\" title=\"class in acm.gui\">JFontChooser.ListSearchTextFieldDocumentHandler.ListSelector</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.html#ListSearchTextFieldDocumentHandler-javax.swing.JList-\">ListSearchTextFieldDocumentHandler</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true\" title=\"class or interface in javax.swing\">JList</a>&nbsp;targetList)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.html#changedUpdate-javax.swing.event.DocumentEvent-\">changedUpdate</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentEvent</a>&nbsp;e)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.html#insertUpdate-javax.swing.event.DocumentEvent-\">insertUpdate</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentEvent</a>&nbsp;e)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.html#removeUpdate-javax.swing.event.DocumentEvent-\">removeUpdate</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentEvent</a>&nbsp;e)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"ListSearchTextFieldDocumentHandler-javax.swing.JList-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>ListSearchTextFieldDocumentHandler</h4>\n<pre>public&nbsp;ListSearchTextFieldDocumentHandler(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true\" title=\"class or interface in javax.swing\">JList</a>&nbsp;targetList)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"insertUpdate-javax.swing.event.DocumentEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>insertUpdate</h4>\n<pre>public&nbsp;void&nbsp;insertUpdate(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentEvent</a>&nbsp;e)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentListener.html?is-external=true#insertUpdate-javax.swing.event.DocumentEvent-\" title=\"class or interface in javax.swing.event\">insertUpdate</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"removeUpdate-javax.swing.event.DocumentEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeUpdate</h4>\n<pre>public&nbsp;void&nbsp;removeUpdate(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentEvent</a>&nbsp;e)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentListener.html?is-external=true#removeUpdate-javax.swing.event.DocumentEvent-\" title=\"class or interface in javax.swing.event\">removeUpdate</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"changedUpdate-javax.swing.event.DocumentEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>changedUpdate</h4>\n<pre>public&nbsp;void&nbsp;changedUpdate(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentEvent</a>&nbsp;e)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentListener.html?is-external=true#changedUpdate-javax.swing.event.DocumentEvent-\" title=\"class or interface in javax.swing.event\">changedUpdate</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentListener</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/gui/JFontChooser.DialogOKAction.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.ListSelector.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JFontChooser.ListSearchTextFieldDocumentHandler.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.class.summary\">Nested</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/gui/JFontChooser.ListSelectionHandler.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:12 PDT 2017 -->\n<title>JFontChooser.ListSelectionHandler</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"JFontChooser.ListSelectionHandler\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.ListSelector.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/gui/JFontChooser.TextFieldFocusHandlerForTextSelection.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/gui/JFontChooser.ListSelectionHandler.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JFontChooser.ListSelectionHandler.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.gui</div>\n<h2 title=\"Class JFontChooser.ListSelectionHandler\" class=\"title\">Class JFontChooser.ListSelectionHandler</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.gui.JFontChooser.ListSelectionHandler</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListSelectionListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListSelectionListener</a></dd>\n</dl>\n<dl>\n<dt>Enclosing class:</dt>\n<dd><a href=\"../../acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></dd>\n</dl>\n<hr>\n<br>\n<pre>protected class <span class=\"typeNameLabel\">JFontChooser.ListSelectionHandler</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>\nimplements <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListSelectionListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListSelectionListener</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.ListSelectionHandler.html#valueChanged-javax.swing.event.ListSelectionEvent-\">valueChanged</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListSelectionEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListSelectionEvent</a>&nbsp;e)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"valueChanged-javax.swing.event.ListSelectionEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>valueChanged</h4>\n<pre>public&nbsp;void&nbsp;valueChanged(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListSelectionEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListSelectionEvent</a>&nbsp;e)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListSelectionListener.html?is-external=true#valueChanged-javax.swing.event.ListSelectionEvent-\" title=\"class or interface in javax.swing.event\">valueChanged</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListSelectionListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListSelectionListener</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.ListSelector.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/gui/JFontChooser.TextFieldFocusHandlerForTextSelection.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/gui/JFontChooser.ListSelectionHandler.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JFontChooser.ListSelectionHandler.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/gui/JFontChooser.TextFieldFocusHandlerForTextSelection.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:12 PDT 2017 -->\n<title>JFontChooser.TextFieldFocusHandlerForTextSelection</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"JFontChooser.TextFieldFocusHandlerForTextSelection\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/gui/JFontChooser.ListSelectionHandler.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/gui/JFontChooser.TextFieldKeyHandlerForListSelectionUpDown.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/gui/JFontChooser.TextFieldFocusHandlerForTextSelection.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JFontChooser.TextFieldFocusHandlerForTextSelection.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.gui</div>\n<h2 title=\"Class JFontChooser.TextFieldFocusHandlerForTextSelection\" class=\"title\">Class JFontChooser.TextFieldFocusHandlerForTextSelection</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusAdapter.html?is-external=true\" title=\"class or interface in java.awt.event\">java.awt.event.FocusAdapter</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.gui.JFontChooser.TextFieldFocusHandlerForTextSelection</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a></dd>\n</dl>\n<dl>\n<dt>Enclosing class:</dt>\n<dd><a href=\"../../acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></dd>\n</dl>\n<hr>\n<br>\n<pre>protected class <span class=\"typeNameLabel\">JFontChooser.TextFieldFocusHandlerForTextSelection</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusAdapter.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusAdapter</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.TextFieldFocusHandlerForTextSelection.html#TextFieldFocusHandlerForTextSelection-javax.swing.text.JTextComponent-\">TextFieldFocusHandlerForTextSelection</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true\" title=\"class or interface in javax.swing.text\">JTextComponent</a>&nbsp;textComponent)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.TextFieldFocusHandlerForTextSelection.html#focusGained-java.awt.event.FocusEvent-\">focusGained</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusEvent</a>&nbsp;e)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.TextFieldFocusHandlerForTextSelection.html#focusLost-java.awt.event.FocusEvent-\">focusLost</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusEvent</a>&nbsp;e)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"TextFieldFocusHandlerForTextSelection-javax.swing.text.JTextComponent-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>TextFieldFocusHandlerForTextSelection</h4>\n<pre>public&nbsp;TextFieldFocusHandlerForTextSelection(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true\" title=\"class or interface in javax.swing.text\">JTextComponent</a>&nbsp;textComponent)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"focusGained-java.awt.event.FocusEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>focusGained</h4>\n<pre>public&nbsp;void&nbsp;focusGained(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusEvent</a>&nbsp;e)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusListener.html?is-external=true#focusGained-java.awt.event.FocusEvent-\" title=\"class or interface in java.awt.event\">focusGained</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusListener</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusAdapter.html?is-external=true#focusGained-java.awt.event.FocusEvent-\" title=\"class or interface in java.awt.event\">focusGained</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusAdapter.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusAdapter</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"focusLost-java.awt.event.FocusEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>focusLost</h4>\n<pre>public&nbsp;void&nbsp;focusLost(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusEvent</a>&nbsp;e)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusListener.html?is-external=true#focusLost-java.awt.event.FocusEvent-\" title=\"class or interface in java.awt.event\">focusLost</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusListener</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusAdapter.html?is-external=true#focusLost-java.awt.event.FocusEvent-\" title=\"class or interface in java.awt.event\">focusLost</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusAdapter.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusAdapter</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/gui/JFontChooser.ListSelectionHandler.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/gui/JFontChooser.TextFieldKeyHandlerForListSelectionUpDown.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/gui/JFontChooser.TextFieldFocusHandlerForTextSelection.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JFontChooser.TextFieldFocusHandlerForTextSelection.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/gui/JFontChooser.TextFieldKeyHandlerForListSelectionUpDown.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:12 PDT 2017 -->\n<title>JFontChooser.TextFieldKeyHandlerForListSelectionUpDown</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"JFontChooser.TextFieldKeyHandlerForListSelectionUpDown\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/gui/JFontChooser.TextFieldFocusHandlerForTextSelection.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/gui/JListOptionPane.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/gui/JFontChooser.TextFieldKeyHandlerForListSelectionUpDown.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JFontChooser.TextFieldKeyHandlerForListSelectionUpDown.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.gui</div>\n<h2 title=\"Class JFontChooser.TextFieldKeyHandlerForListSelectionUpDown\" class=\"title\">Class JFontChooser.TextFieldKeyHandlerForListSelectionUpDown</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyAdapter.html?is-external=true\" title=\"class or interface in java.awt.event\">java.awt.event.KeyAdapter</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.gui.JFontChooser.TextFieldKeyHandlerForListSelectionUpDown</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a></dd>\n</dl>\n<dl>\n<dt>Enclosing class:</dt>\n<dd><a href=\"../../acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></dd>\n</dl>\n<hr>\n<br>\n<pre>protected class <span class=\"typeNameLabel\">JFontChooser.TextFieldKeyHandlerForListSelectionUpDown</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyAdapter.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyAdapter</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.TextFieldKeyHandlerForListSelectionUpDown.html#TextFieldKeyHandlerForListSelectionUpDown-javax.swing.JList-\">TextFieldKeyHandlerForListSelectionUpDown</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true\" title=\"class or interface in javax.swing\">JList</a>&nbsp;list)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.TextFieldKeyHandlerForListSelectionUpDown.html#keyPressed-java.awt.event.KeyEvent-\">keyPressed</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyEvent</a>&nbsp;e)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.event.KeyAdapter\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyAdapter.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyAdapter</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyAdapter.html?is-external=true#keyReleased-java.awt.event.KeyEvent-\" title=\"class or interface in java.awt.event\">keyReleased</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyAdapter.html?is-external=true#keyTyped-java.awt.event.KeyEvent-\" title=\"class or interface in java.awt.event\">keyTyped</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"TextFieldKeyHandlerForListSelectionUpDown-javax.swing.JList-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>TextFieldKeyHandlerForListSelectionUpDown</h4>\n<pre>public&nbsp;TextFieldKeyHandlerForListSelectionUpDown(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true\" title=\"class or interface in javax.swing\">JList</a>&nbsp;list)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"keyPressed-java.awt.event.KeyEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>keyPressed</h4>\n<pre>public&nbsp;void&nbsp;keyPressed(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyEvent</a>&nbsp;e)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true#keyPressed-java.awt.event.KeyEvent-\" title=\"class or interface in java.awt.event\">keyPressed</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyAdapter.html?is-external=true#keyPressed-java.awt.event.KeyEvent-\" title=\"class or interface in java.awt.event\">keyPressed</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyAdapter.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyAdapter</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/gui/JFontChooser.TextFieldFocusHandlerForTextSelection.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/gui/JListOptionPane.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/gui/JFontChooser.TextFieldKeyHandlerForListSelectionUpDown.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JFontChooser.TextFieldKeyHandlerForListSelectionUpDown.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/gui/JFontChooser.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:12 PDT 2017 -->\n<title>JFontChooser</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"JFontChooser\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":10,\"i16\":10,\"i17\":10,\"i18\":10,\"i19\":10,\"i20\":10,\"i21\":10,\"i22\":10,\"i23\":10,\"i24\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/gui/JButtonGroup.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/gui/JFontChooser.DialogCancelAction.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/gui/JFontChooser.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JFontChooser.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.class.summary\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.gui</div>\n<h2 title=\"Class JFontChooser\" class=\"title\">Class JFontChooser</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Component</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Container</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JComponent</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.gui.JFontChooser</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">JFontChooser</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></pre>\n<div class=\"block\">The <code>JFontChooser</code> class is a swing component for font selection.\n This class has <code>JFileChooser</code> like APIs. The following code pops\n up a font chooser dialog.\n \n <pre>\n JFontChooser fontChooser = new JFontChooser();\n int result = fontChooser.showDialog(parent);\n if (result == JFontChooser.OK_OPTION) {\n     Font font = fontChooser.getSelectedFont();\n     System.out.println(\"Selected Font : \" + font);\n }\n <pre></div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#acm.gui.JFontChooser\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Nested Class Summary table, listing nested classes, and an explanation\">\n<caption><span>Nested Classes</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Class and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected class&nbsp;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.DialogCancelAction.html\" title=\"class in acm.gui\">JFontChooser.DialogCancelAction</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected class&nbsp;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.DialogOKAction.html\" title=\"class in acm.gui\">JFontChooser.DialogOKAction</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected class&nbsp;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.html\" title=\"class in acm.gui\">JFontChooser.ListSearchTextFieldDocumentHandler</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected class&nbsp;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.ListSelectionHandler.html\" title=\"class in acm.gui\">JFontChooser.ListSelectionHandler</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected class&nbsp;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.TextFieldFocusHandlerForTextSelection.html\" title=\"class in acm.gui\">JFontChooser.TextFieldFocusHandlerForTextSelection</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected class&nbsp;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.TextFieldKeyHandlerForListSelectionUpDown.html\" title=\"class in acm.gui\">JFontChooser.TextFieldKeyHandlerForListSelectionUpDown</a></span></code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.AccessibleJComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent.AccessibleJComponent</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.AccessibleAWTContainer.html?is-external=true\" title=\"class or interface in java.awt\">Container.AccessibleAWTContainer</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.AccessibleAWTComponent.html?is-external=true\" title=\"class or interface in java.awt\">Component.AccessibleAWTComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BaselineResizeBehavior.html?is-external=true\" title=\"class or interface in java.awt\">Component.BaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BltBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.BltBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.FlipBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.FlipBufferStrategy</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.html#CANCEL_OPTION\">CANCEL_OPTION</a></span></code>\n<div class=\"block\">Return value from <code>showDialog()</code>.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.html#dialogResultValue\">dialogResultValue</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.html#ERROR_OPTION\">ERROR_OPTION</a></span></code>\n<div class=\"block\">Return value from <code>showDialog()</code>.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.html#OK_OPTION\">OK_OPTION</a></span></code>\n<div class=\"block\">Return value from <code>showDialog()</code>.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#listenerList\" title=\"class or interface in javax.swing\">listenerList</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#TOOL_TIP_TEXT_KEY\" title=\"class or interface in javax.swing\">TOOL_TIP_TEXT_KEY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#ui\" title=\"class or interface in javax.swing\">ui</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#UNDEFINED_CONDITION\" title=\"class or interface in javax.swing\">UNDEFINED_CONDITION</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_ANCESTOR_OF_FOCUSED_COMPONENT\" title=\"class or interface in javax.swing\">WHEN_ANCESTOR_OF_FOCUSED_COMPONENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_FOCUSED\" title=\"class or interface in javax.swing\">WHEN_FOCUSED</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_IN_FOCUSED_WINDOW\" title=\"class or interface in javax.swing\">WHEN_IN_FOCUSED_WINDOW</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#accessibleContext\" title=\"class or interface in java.awt\">accessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#BOTTOM_ALIGNMENT\" title=\"class or interface in java.awt\">BOTTOM_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#CENTER_ALIGNMENT\" title=\"class or interface in java.awt\">CENTER_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#LEFT_ALIGNMENT\" title=\"class or interface in java.awt\">LEFT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#RIGHT_ALIGNMENT\" title=\"class or interface in java.awt\">RIGHT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#TOP_ALIGNMENT\" title=\"class or interface in java.awt\">TOP_ALIGNMENT</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.image.ImageObserver\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ABORT\" title=\"class or interface in java.awt.image\">ABORT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ALLBITS\" title=\"class or interface in java.awt.image\">ALLBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ERROR\" title=\"class or interface in java.awt.image\">ERROR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#FRAMEBITS\" title=\"class or interface in java.awt.image\">FRAMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#HEIGHT\" title=\"class or interface in java.awt.image\">HEIGHT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#PROPERTIES\" title=\"class or interface in java.awt.image\">PROPERTIES</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#SOMEBITS\" title=\"class or interface in java.awt.image\">SOMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#WIDTH\" title=\"class or interface in java.awt.image\">WIDTH</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.html#JFontChooser--\">JFontChooser</a></span>()</code>\n<div class=\"block\">Constructs a <code>JFontChooser</code> object.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.html#JFontChooser-int:A-\">JFontChooser</a></span>(int[]&nbsp;fontSizes)</code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.html#JFontChooser-java.lang.String:A-\">JFontChooser</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;fontSizeStrings)</code>\n<div class=\"block\">Constructs a <code>JFontChooser</code> object using the given font size\n array.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true\" title=\"class or interface in javax.swing\">JDialog</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.html#createDialog-java.awt.Component-\">createDialog</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;parent)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.html#getFontFamilies--\">getFontFamilies</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true\" title=\"class or interface in javax.swing\">JList</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.html#getFontFamilyList--\">getFontFamilyList</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.html#getFontFamilyPanel--\">getFontFamilyPanel</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.html#getFontFamilyTextField--\">getFontFamilyTextField</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true\" title=\"class or interface in javax.swing\">JList</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.html#getFontSizeList--\">getFontSizeList</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.html#getFontSizePanel--\">getFontSizePanel</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.html#getFontSizeTextField--\">getFontSizeTextField</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true\" title=\"class or interface in javax.swing\">JList</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.html#getFontStyleList--\">getFontStyleList</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.html#getFontStyleNames--\">getFontStyleNames</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.html#getFontStylePanel--\">getFontStylePanel</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.html#getFontStyleTextField--\">getFontStyleTextField</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.html#getSamplePanel--\">getSamplePanel</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.html#getSampleTextField--\">getSampleTextField</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.html#getSelectedFont--\">getSelectedFont</a></span>()</code>\n<div class=\"block\">Get the selected font.</div>\n</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.html#getSelectedFontFamily--\">getSelectedFontFamily</a></span>()</code>\n<div class=\"block\">Get the family name of the selected font.</div>\n</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.html#getSelectedFontSize--\">getSelectedFontSize</a></span>()</code>\n<div class=\"block\">Get the size of the selected font.</div>\n</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.html#getSelectedFontStyle--\">getSelectedFontStyle</a></span>()</code>\n<div class=\"block\">Get the style of the selected font.</div>\n</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.html#getVersionString--\">getVersionString</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.html#setSelectedFont-java.awt.Font-\">setSelectedFont</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a>&nbsp;font)</code>\n<div class=\"block\">Set the selected font.</div>\n</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.html#setSelectedFontFamily-java.lang.String-\">setSelectedFontFamily</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>\n<div class=\"block\">Set the family name of the selected font.</div>\n</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.html#setSelectedFontSize-int-\">setSelectedFontSize</a></span>(int&nbsp;size)</code>\n<div class=\"block\">Set the size of the selected font.</div>\n</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.html#setSelectedFontStyle-int-\">setSelectedFontStyle</a></span>(int&nbsp;style)</code>\n<div class=\"block\">Set the style of the selected font.</div>\n</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.html#showDialog-java.awt.Component-\">showDialog</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;parent)</code>\n<div class=\"block\">Show font selection dialog.</div>\n</td>\n</tr>\n<tr id=\"i24\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JFontChooser.html#updateSampleFont--\">updateSampleFont</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addAncestorListener-javax.swing.event.AncestorListener-\" title=\"class or interface in javax.swing\">addAncestorListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addNotify--\" title=\"class or interface in javax.swing\">addNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addVetoableChangeListener-java.beans.VetoableChangeListener-\" title=\"class or interface in javax.swing\">addVetoableChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#computeVisibleRect-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">computeVisibleRect</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#contains-int-int-\" title=\"class or interface in javax.swing\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#createToolTip--\" title=\"class or interface in javax.swing\">createToolTip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#disable--\" title=\"class or interface in javax.swing\">disable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#enable--\" title=\"class or interface in javax.swing\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-boolean-boolean-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-char-char-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-int-int-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#fireVetoableChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in javax.swing\">fireVetoableChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getActionForKeyStroke-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">getActionForKeyStroke</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getActionMap--\" title=\"class or interface in javax.swing\">getActionMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAlignmentX--\" title=\"class or interface in javax.swing\">getAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAlignmentY--\" title=\"class or interface in javax.swing\">getAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAncestorListeners--\" title=\"class or interface in javax.swing\">getAncestorListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAutoscrolls--\" title=\"class or interface in javax.swing\">getAutoscrolls</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBaseline-int-int-\" title=\"class or interface in javax.swing\">getBaseline</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBaselineResizeBehavior--\" title=\"class or interface in javax.swing\">getBaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBorder--\" title=\"class or interface in javax.swing\">getBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBounds-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getClientProperty-java.lang.Object-\" title=\"class or interface in javax.swing\">getClientProperty</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getComponentGraphics-java.awt.Graphics-\" title=\"class or interface in javax.swing\">getComponentGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getComponentPopupMenu--\" title=\"class or interface in javax.swing\">getComponentPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getConditionForKeyStroke-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">getConditionForKeyStroke</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getDebugGraphicsOptions--\" title=\"class or interface in javax.swing\">getDebugGraphicsOptions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getDefaultLocale--\" title=\"class or interface in javax.swing\">getDefaultLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getFontMetrics-java.awt.Font-\" title=\"class or interface in javax.swing\">getFontMetrics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getGraphics--\" title=\"class or interface in javax.swing\">getGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getHeight--\" title=\"class or interface in javax.swing\">getHeight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInheritsPopupMenu--\" title=\"class or interface in javax.swing\">getInheritsPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputMap--\" title=\"class or interface in javax.swing\">getInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputMap-int-\" title=\"class or interface in javax.swing\">getInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputVerifier--\" title=\"class or interface in javax.swing\">getInputVerifier</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInsets--\" title=\"class or interface in javax.swing\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInsets-java.awt.Insets-\" title=\"class or interface in javax.swing\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getListeners-java.lang.Class-\" title=\"class or interface in javax.swing\">getListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getLocation-java.awt.Point-\" title=\"class or interface in javax.swing\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getMaximumSize--\" title=\"class or interface in javax.swing\">getMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getMinimumSize--\" title=\"class or interface in javax.swing\">getMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getNextFocusableComponent--\" title=\"class or interface in javax.swing\">getNextFocusableComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getPopupLocation-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">getPopupLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getPreferredSize--\" title=\"class or interface in javax.swing\">getPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getRegisteredKeyStrokes--\" title=\"class or interface in javax.swing\">getRegisteredKeyStrokes</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getRootPane--\" title=\"class or interface in javax.swing\">getRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getToolTipLocation-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">getToolTipLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getToolTipText--\" title=\"class or interface in javax.swing\">getToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getToolTipText-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">getToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getTopLevelAncestor--\" title=\"class or interface in javax.swing\">getTopLevelAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getTransferHandler--\" title=\"class or interface in javax.swing\">getTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getUIClassID--\" title=\"class or interface in javax.swing\">getUIClassID</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVerifyInputWhenFocusTarget--\" title=\"class or interface in javax.swing\">getVerifyInputWhenFocusTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVetoableChangeListeners--\" title=\"class or interface in javax.swing\">getVetoableChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVisibleRect--\" title=\"class or interface in javax.swing\">getVisibleRect</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getWidth--\" title=\"class or interface in javax.swing\">getWidth</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getX--\" title=\"class or interface in javax.swing\">getX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getY--\" title=\"class or interface in javax.swing\">getY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#grabFocus--\" title=\"class or interface in javax.swing\">grabFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#hide--\" title=\"class or interface in javax.swing\">hide</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isDoubleBuffered--\" title=\"class or interface in javax.swing\">isDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isLightweightComponent-java.awt.Component-\" title=\"class or interface in javax.swing\">isLightweightComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isManagingFocus--\" title=\"class or interface in javax.swing\">isManagingFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isOpaque--\" title=\"class or interface in javax.swing\">isOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isOptimizedDrawingEnabled--\" title=\"class or interface in javax.swing\">isOptimizedDrawingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingForPrint--\" title=\"class or interface in javax.swing\">isPaintingForPrint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingOrigin--\" title=\"class or interface in javax.swing\">isPaintingOrigin</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingTile--\" title=\"class or interface in javax.swing\">isPaintingTile</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isRequestFocusEnabled--\" title=\"class or interface in javax.swing\">isRequestFocusEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isValidateRoot--\" title=\"class or interface in javax.swing\">isValidateRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paint-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintBorder-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintChildren-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintChildren</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintComponent-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintImmediately-int-int-int-int-\" title=\"class or interface in javax.swing\">paintImmediately</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintImmediately-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">paintImmediately</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paramString--\" title=\"class or interface in javax.swing\">paramString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#print-java.awt.Graphics-\" title=\"class or interface in javax.swing\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printAll-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printBorder-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printChildren-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printChildren</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printComponent-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processComponentKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in javax.swing\">processComponentKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processKeyBinding-javax.swing.KeyStroke-java.awt.event.KeyEvent-int-boolean-\" title=\"class or interface in javax.swing\">processKeyBinding</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in javax.swing\">processKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processMouseEvent-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">processMouseEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processMouseMotionEvent-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">processMouseMotionEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#putClientProperty-java.lang.Object-java.lang.Object-\" title=\"class or interface in javax.swing\">putClientProperty</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#registerKeyboardAction-java.awt.event.ActionListener-javax.swing.KeyStroke-int-\" title=\"class or interface in javax.swing\">registerKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#registerKeyboardAction-java.awt.event.ActionListener-java.lang.String-javax.swing.KeyStroke-int-\" title=\"class or interface in javax.swing\">registerKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#removeAncestorListener-javax.swing.event.AncestorListener-\" title=\"class or interface in javax.swing\">removeAncestorListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#removeNotify--\" title=\"class or interface in javax.swing\">removeNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#removeVetoableChangeListener-java.beans.VetoableChangeListener-\" title=\"class or interface in javax.swing\">removeVetoableChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#repaint-long-int-int-int-int-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#repaint-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestDefaultFocus--\" title=\"class or interface in javax.swing\">requestDefaultFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocus--\" title=\"class or interface in javax.swing\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocus-boolean-\" title=\"class or interface in javax.swing\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocusInWindow--\" title=\"class or interface in javax.swing\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocusInWindow-boolean-\" title=\"class or interface in javax.swing\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#resetKeyboardActions--\" title=\"class or interface in javax.swing\">resetKeyboardActions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#reshape-int-int-int-int-\" title=\"class or interface in javax.swing\">reshape</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#revalidate--\" title=\"class or interface in javax.swing\">revalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#scrollRectToVisible-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">scrollRectToVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setActionMap-javax.swing.ActionMap-\" title=\"class or interface in javax.swing\">setActionMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAlignmentX-float-\" title=\"class or interface in javax.swing\">setAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAlignmentY-float-\" title=\"class or interface in javax.swing\">setAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAutoscrolls-boolean-\" title=\"class or interface in javax.swing\">setAutoscrolls</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setBackground-java.awt.Color-\" title=\"class or interface in javax.swing\">setBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setBorder-javax.swing.border.Border-\" title=\"class or interface in javax.swing\">setBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setComponentPopupMenu-javax.swing.JPopupMenu-\" title=\"class or interface in javax.swing\">setComponentPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDebugGraphicsOptions-int-\" title=\"class or interface in javax.swing\">setDebugGraphicsOptions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDefaultLocale-java.util.Locale-\" title=\"class or interface in javax.swing\">setDefaultLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDoubleBuffered-boolean-\" title=\"class or interface in javax.swing\">setDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setEnabled-boolean-\" title=\"class or interface in javax.swing\">setEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setFocusTraversalKeys-int-java.util.Set-\" title=\"class or interface in javax.swing\">setFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setFont-java.awt.Font-\" title=\"class or interface in javax.swing\">setFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setForeground-java.awt.Color-\" title=\"class or interface in javax.swing\">setForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInheritsPopupMenu-boolean-\" title=\"class or interface in javax.swing\">setInheritsPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInputMap-int-javax.swing.InputMap-\" title=\"class or interface in javax.swing\">setInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInputVerifier-javax.swing.InputVerifier-\" title=\"class or interface in javax.swing\">setInputVerifier</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setMaximumSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setMinimumSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setNextFocusableComponent-java.awt.Component-\" title=\"class or interface in javax.swing\">setNextFocusableComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setOpaque-boolean-\" title=\"class or interface in javax.swing\">setOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setPreferredSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setRequestFocusEnabled-boolean-\" title=\"class or interface in javax.swing\">setRequestFocusEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setToolTipText-java.lang.String-\" title=\"class or interface in javax.swing\">setToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setTransferHandler-javax.swing.TransferHandler-\" title=\"class or interface in javax.swing\">setTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setUI-javax.swing.plaf.ComponentUI-\" title=\"class or interface in javax.swing\">setUI</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setVerifyInputWhenFocusTarget-boolean-\" title=\"class or interface in javax.swing\">setVerifyInputWhenFocusTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setVisible-boolean-\" title=\"class or interface in javax.swing\">setVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#unregisterKeyboardAction-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">unregisterKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#update-java.awt.Graphics-\" title=\"class or interface in javax.swing\">update</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#updateUI--\" title=\"class or interface in javax.swing\">updateUI</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.lang.String-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">addContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addImpl-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">addImpl</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#applyComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">applyComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#areFocusTraversalKeysSet-int-\" title=\"class or interface in java.awt\">areFocusTraversalKeysSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#countComponents--\" title=\"class or interface in java.awt\">countComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#deliverEvent-java.awt.Event-\" title=\"class or interface in java.awt\">deliverEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#doLayout--\" title=\"class or interface in java.awt\">doLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-int-int-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponent-int-\" title=\"class or interface in java.awt\">getComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-int-int-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentCount--\" title=\"class or interface in java.awt\">getComponentCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponents--\" title=\"class or interface in java.awt\">getComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentZOrder-java.awt.Component-\" title=\"class or interface in java.awt\">getComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getContainerListeners--\" title=\"class or interface in java.awt\">getContainerListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalKeys-int-\" title=\"class or interface in java.awt\">getFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalPolicy--\" title=\"class or interface in java.awt\">getFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getLayout--\" title=\"class or interface in java.awt\">getLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMousePosition-boolean-\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#insets--\" title=\"class or interface in java.awt\">insets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#invalidate--\" title=\"class or interface in java.awt\">invalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isAncestorOf-java.awt.Component-\" title=\"class or interface in java.awt\">isAncestorOf</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot--\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot-java.awt.Container-\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicyProvider--\" title=\"class or interface in java.awt\">isFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicySet--\" title=\"class or interface in java.awt\">isFocusTraversalPolicySet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#layout--\" title=\"class or interface in java.awt\">layout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintStream-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintWriter-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#locate-int-int-\" title=\"class or interface in java.awt\">locate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#minimumSize--\" title=\"class or interface in java.awt\">minimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paintComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#preferredSize--\" title=\"class or interface in java.awt\">preferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#printComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">printComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processContainerEvent-java.awt.event.ContainerEvent-\" title=\"class or interface in java.awt\">processContainerEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">processEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#remove-java.awt.Component-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#remove-int-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeAll--\" title=\"class or interface in java.awt\">removeAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">removeContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setComponentZOrder-java.awt.Component-int-\" title=\"class or interface in java.awt\">setComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusCycleRoot-boolean-\" title=\"class or interface in java.awt\">setFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicy-java.awt.FocusTraversalPolicy-\" title=\"class or interface in java.awt\">setFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicyProvider-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setLayout-java.awt.LayoutManager-\" title=\"class or interface in java.awt\">setLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#transferFocusDownCycle--\" title=\"class or interface in java.awt\">transferFocusDownCycle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validate--\" title=\"class or interface in java.awt\">validate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validateTree--\" title=\"class or interface in java.awt\">validateTree</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#action-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">action</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#add-java.awt.PopupMenu-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">addComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">addFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">addHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">addHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">addInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">addKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">addMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">addMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">addMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#bounds--\" title=\"class or interface in java.awt\">bounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#coalesceEvents-java.awt.AWTEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">coalesceEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-java.awt.Point-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-java.awt.image.ImageProducer-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-int-int-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-java.awt.ImageCapabilities-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disableEvents-long-\" title=\"class or interface in java.awt\">disableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#dispatchEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">dispatchEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable-boolean-\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableEvents-long-\" title=\"class or interface in java.awt\">enableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableInputMethods-boolean-\" title=\"class or interface in java.awt\">enableInputMethods</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-byte-byte-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-double-double-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-float-float-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-long-long-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-short-short-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getAccessibleContext--\" title=\"class or interface in java.awt\">getAccessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBackground--\" title=\"class or interface in java.awt\">getBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds--\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getColorModel--\" title=\"class or interface in java.awt\">getColorModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentListeners--\" title=\"class or interface in java.awt\">getComponentListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentOrientation--\" title=\"class or interface in java.awt\">getComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getCursor--\" title=\"class or interface in java.awt\">getCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getDropTarget--\" title=\"class or interface in java.awt\">getDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusCycleRootAncestor--\" title=\"class or interface in java.awt\">getFocusCycleRootAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusListeners--\" title=\"class or interface in java.awt\">getFocusListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusTraversalKeysEnabled--\" title=\"class or interface in java.awt\">getFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFont--\" title=\"class or interface in java.awt\">getFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getForeground--\" title=\"class or interface in java.awt\">getForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getGraphicsConfiguration--\" title=\"class or interface in java.awt\">getGraphicsConfiguration</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyBoundsListeners--\" title=\"class or interface in java.awt\">getHierarchyBoundsListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyListeners--\" title=\"class or interface in java.awt\">getHierarchyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getIgnoreRepaint--\" title=\"class or interface in java.awt\">getIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputContext--\" title=\"class or interface in java.awt\">getInputContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodListeners--\" title=\"class or interface in java.awt\">getInputMethodListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodRequests--\" title=\"class or interface in java.awt\">getInputMethodRequests</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getKeyListeners--\" title=\"class or interface in java.awt\">getKeyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocale--\" title=\"class or interface in java.awt\">getLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation--\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocationOnScreen--\" title=\"class or interface in java.awt\">getLocationOnScreen</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseListeners--\" title=\"class or interface in java.awt\">getMouseListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseMotionListeners--\" title=\"class or interface in java.awt\">getMouseMotionListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMousePosition--\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseWheelListeners--\" title=\"class or interface in java.awt\">getMouseWheelListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getName--\" title=\"class or interface in java.awt\">getName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getParent--\" title=\"class or interface in java.awt\">getParent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPeer--\" title=\"class or interface in java.awt\">getPeer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners--\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners-java.lang.String-\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize--\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getToolkit--\" title=\"class or interface in java.awt\">getToolkit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getTreeLock--\" title=\"class or interface in java.awt\">getTreeLock</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#gotFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">gotFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#handleEvent-java.awt.Event-\" title=\"class or interface in java.awt\">handleEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hasFocus--\" title=\"class or interface in java.awt\">hasFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#imageUpdate-java.awt.Image-int-int-int-int-int-\" title=\"class or interface in java.awt\">imageUpdate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#inside-int-int-\" title=\"class or interface in java.awt\">inside</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isBackgroundSet--\" title=\"class or interface in java.awt\">isBackgroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isCursorSet--\" title=\"class or interface in java.awt\">isCursorSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDisplayable--\" title=\"class or interface in java.awt\">isDisplayable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isEnabled--\" title=\"class or interface in java.awt\">isEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusable--\" title=\"class or interface in java.awt\">isFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusOwner--\" title=\"class or interface in java.awt\">isFocusOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusTraversable--\" title=\"class or interface in java.awt\">isFocusTraversable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFontSet--\" title=\"class or interface in java.awt\">isFontSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isForegroundSet--\" title=\"class or interface in java.awt\">isForegroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isLightweight--\" title=\"class or interface in java.awt\">isLightweight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMaximumSizeSet--\" title=\"class or interface in java.awt\">isMaximumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMinimumSizeSet--\" title=\"class or interface in java.awt\">isMinimumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isPreferredSizeSet--\" title=\"class or interface in java.awt\">isPreferredSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isShowing--\" title=\"class or interface in java.awt\">isShowing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isValid--\" title=\"class or interface in java.awt\">isValid</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isVisible--\" title=\"class or interface in java.awt\">isVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyDown-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyUp-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list--\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintStream-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintWriter-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#location--\" title=\"class or interface in java.awt\">location</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#lostFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">lostFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDown-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDrag-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDrag</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseEnter-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseEnter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseExit-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseExit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseMove-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseMove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseUp-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#move-int-int-\" title=\"class or interface in java.awt\">move</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#nextFocus--\" title=\"class or interface in java.awt\">nextFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#paintAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#postEvent-java.awt.Event-\" title=\"class or interface in java.awt\">postEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processComponentEvent-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt\">processComponentEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processFocusEvent-java.awt.event.FocusEvent-\" title=\"class or interface in java.awt\">processFocusEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyBoundsEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyBoundsEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processInputMethodEvent-java.awt.event.InputMethodEvent-\" title=\"class or interface in java.awt\">processInputMethodEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseWheelEvent-java.awt.event.MouseWheelEvent-\" title=\"class or interface in java.awt\">processMouseWheelEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#remove-java.awt.MenuComponent-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">removeComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">removeFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">removeHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">removeHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">removeInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">removeKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">removeMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">removeMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">removeMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint--\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-int-int-int-int-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-long-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#resize-java.awt.Dimension-\" title=\"class or interface in java.awt\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#resize-int-int-\" title=\"class or interface in java.awt\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-int-int-int-int-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">setComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setCursor-java.awt.Cursor-\" title=\"class or interface in java.awt\">setCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setDropTarget-java.awt.dnd.DropTarget-\" title=\"class or interface in java.awt\">setDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusable-boolean-\" title=\"class or interface in java.awt\">setFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusTraversalKeysEnabled-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setIgnoreRepaint-boolean-\" title=\"class or interface in java.awt\">setIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocale-java.util.Locale-\" title=\"class or interface in java.awt\">setLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-int-int-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-java.awt.Point-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setName-java.lang.String-\" title=\"class or interface in java.awt\">setName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-int-int-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show--\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show-boolean-\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#size--\" title=\"class or interface in java.awt\">size</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#toString--\" title=\"class or interface in java.awt\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocus--\" title=\"class or interface in java.awt\">transferFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusBackward--\" title=\"class or interface in java.awt\">transferFocusBackward</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusUpCycle--\" title=\"class or interface in java.awt\">transferFocusUpCycle</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"OK_OPTION\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>OK_OPTION</h4>\n<pre>public static final&nbsp;int OK_OPTION</pre>\n<div class=\"block\">Return value from <code>showDialog()</code>.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../acm/gui/JFontChooser.html#showDialog-java.awt.Component-\"><code>showDialog(java.awt.Component)</code></a>, \n<a href=\"../../constant-values.html#acm.gui.JFontChooser.OK_OPTION\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"CANCEL_OPTION\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>CANCEL_OPTION</h4>\n<pre>public static final&nbsp;int CANCEL_OPTION</pre>\n<div class=\"block\">Return value from <code>showDialog()</code>.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../acm/gui/JFontChooser.html#showDialog-java.awt.Component-\"><code>showDialog(java.awt.Component)</code></a>, \n<a href=\"../../constant-values.html#acm.gui.JFontChooser.CANCEL_OPTION\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"ERROR_OPTION\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>ERROR_OPTION</h4>\n<pre>public static final&nbsp;int ERROR_OPTION</pre>\n<div class=\"block\">Return value from <code>showDialog()</code>.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../acm/gui/JFontChooser.html#showDialog-java.awt.Component-\"><code>showDialog(java.awt.Component)</code></a>, \n<a href=\"../../constant-values.html#acm.gui.JFontChooser.ERROR_OPTION\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"dialogResultValue\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>dialogResultValue</h4>\n<pre>protected&nbsp;int dialogResultValue</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"JFontChooser--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>JFontChooser</h4>\n<pre>public&nbsp;JFontChooser()</pre>\n<div class=\"block\">Constructs a <code>JFontChooser</code> object.</div>\n</li>\n</ul>\n<a name=\"JFontChooser-int:A-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>JFontChooser</h4>\n<pre>public&nbsp;JFontChooser(int[]&nbsp;fontSizes)</pre>\n</li>\n</ul>\n<a name=\"JFontChooser-java.lang.String:A-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>JFontChooser</h4>\n<pre>public&nbsp;JFontChooser(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;fontSizeStrings)</pre>\n<div class=\"block\">Constructs a <code>JFontChooser</code> object using the given font size\n array.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>fontSizeStrings</code> - the array of font size string.</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"getFontFamilyTextField--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFontFamilyTextField</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField</a>&nbsp;getFontFamilyTextField()</pre>\n</li>\n</ul>\n<a name=\"getFontStyleTextField--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFontStyleTextField</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField</a>&nbsp;getFontStyleTextField()</pre>\n</li>\n</ul>\n<a name=\"getFontSizeTextField--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFontSizeTextField</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField</a>&nbsp;getFontSizeTextField()</pre>\n</li>\n</ul>\n<a name=\"getFontFamilyList--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFontFamilyList</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true\" title=\"class or interface in javax.swing\">JList</a>&nbsp;getFontFamilyList()</pre>\n</li>\n</ul>\n<a name=\"getFontStyleList--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFontStyleList</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true\" title=\"class or interface in javax.swing\">JList</a>&nbsp;getFontStyleList()</pre>\n</li>\n</ul>\n<a name=\"getFontSizeList--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFontSizeList</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true\" title=\"class or interface in javax.swing\">JList</a>&nbsp;getFontSizeList()</pre>\n</li>\n</ul>\n<a name=\"getSelectedFontFamily--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSelectedFontFamily</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getSelectedFontFamily()</pre>\n<div class=\"block\">Get the family name of the selected font.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the font family of the selected font.</dd>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../acm/gui/JFontChooser.html#setSelectedFontFamily-java.lang.String-\"><code>setSelectedFontFamily(java.lang.String)</code></a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getSelectedFontStyle--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSelectedFontStyle</h4>\n<pre>public&nbsp;int&nbsp;getSelectedFontStyle()</pre>\n<div class=\"block\">Get the style of the selected font.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the style of the selected font. <code>Font.PLAIN</code>,\n         <code>Font.BOLD</code>, <code>Font.ITALIC</code>,\n         <code>Font.BOLD|Font.ITALIC</code></dd>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true#PLAIN\" title=\"class or interface in java.awt\"><code>Font.PLAIN</code></a>, \n<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true#BOLD\" title=\"class or interface in java.awt\"><code>Font.BOLD</code></a>, \n<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true#ITALIC\" title=\"class or interface in java.awt\"><code>Font.ITALIC</code></a>, \n<a href=\"../../acm/gui/JFontChooser.html#setSelectedFontStyle-int-\"><code>setSelectedFontStyle(int)</code></a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getSelectedFontSize--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSelectedFontSize</h4>\n<pre>public&nbsp;int&nbsp;getSelectedFontSize()</pre>\n<div class=\"block\">Get the size of the selected font.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the size of the selected font</dd>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../acm/gui/JFontChooser.html#setSelectedFontSize-int-\"><code>setSelectedFontSize(int)</code></a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getSelectedFont--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSelectedFont</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a>&nbsp;getSelectedFont()</pre>\n<div class=\"block\">Get the selected font.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the selected font</dd>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../acm/gui/JFontChooser.html#setSelectedFont-java.awt.Font-\"><code>setSelectedFont(java.awt.Font)</code></a>, \n<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\"><code>Font</code></a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setSelectedFontFamily-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setSelectedFontFamily</h4>\n<pre>public&nbsp;void&nbsp;setSelectedFontFamily(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n<div class=\"block\">Set the family name of the selected font.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>name</code> - the family name of the selected font.</dd>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><code>getSelectedFontFamily</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setSelectedFontStyle-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setSelectedFontStyle</h4>\n<pre>public&nbsp;void&nbsp;setSelectedFontStyle(int&nbsp;style)</pre>\n<div class=\"block\">Set the style of the selected font.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>style</code> - the size of the selected font. <code>Font.PLAIN</code>,\n            <code>Font.BOLD</code>, <code>Font.ITALIC</code>, or\n            <code>Font.BOLD|Font.ITALIC</code>.</dd>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true#PLAIN\" title=\"class or interface in java.awt\"><code>Font.PLAIN</code></a>, \n<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true#BOLD\" title=\"class or interface in java.awt\"><code>Font.BOLD</code></a>, \n<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true#ITALIC\" title=\"class or interface in java.awt\"><code>Font.ITALIC</code></a>, \n<a href=\"../../acm/gui/JFontChooser.html#getSelectedFontStyle--\"><code>getSelectedFontStyle()</code></a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setSelectedFontSize-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setSelectedFontSize</h4>\n<pre>public&nbsp;void&nbsp;setSelectedFontSize(int&nbsp;size)</pre>\n<div class=\"block\">Set the size of the selected font.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>size</code> - the size of the selected font</dd>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../acm/gui/JFontChooser.html#getSelectedFontSize--\"><code>getSelectedFontSize()</code></a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setSelectedFont-java.awt.Font-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setSelectedFont</h4>\n<pre>public&nbsp;void&nbsp;setSelectedFont(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a>&nbsp;font)</pre>\n<div class=\"block\">Set the selected font.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>font</code> - the selected font</dd>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../acm/gui/JFontChooser.html#getSelectedFont--\"><code>getSelectedFont()</code></a>, \n<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\"><code>Font</code></a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getVersionString--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getVersionString</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getVersionString()</pre>\n</li>\n</ul>\n<a name=\"showDialog-java.awt.Component-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>showDialog</h4>\n<pre>public&nbsp;int&nbsp;showDialog(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;parent)</pre>\n<div class=\"block\">Show font selection dialog.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>parent</code> - Dialog's Parent component.</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>OK_OPTION, CANCEL_OPTION or ERROR_OPTION</dd>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../acm/gui/JFontChooser.html#OK_OPTION\"><code>OK_OPTION</code></a>, \n<a href=\"../../acm/gui/JFontChooser.html#CANCEL_OPTION\"><code>CANCEL_OPTION</code></a>, \n<a href=\"../../acm/gui/JFontChooser.html#ERROR_OPTION\"><code>ERROR_OPTION</code></a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"createDialog-java.awt.Component-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createDialog</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true\" title=\"class or interface in javax.swing\">JDialog</a>&nbsp;createDialog(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;parent)</pre>\n</li>\n</ul>\n<a name=\"updateSampleFont--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>updateSampleFont</h4>\n<pre>protected&nbsp;void&nbsp;updateSampleFont()</pre>\n</li>\n</ul>\n<a name=\"getFontFamilyPanel--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFontFamilyPanel</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a>&nbsp;getFontFamilyPanel()</pre>\n</li>\n</ul>\n<a name=\"getFontStylePanel--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFontStylePanel</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a>&nbsp;getFontStylePanel()</pre>\n</li>\n</ul>\n<a name=\"getFontSizePanel--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFontSizePanel</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a>&nbsp;getFontSizePanel()</pre>\n</li>\n</ul>\n<a name=\"getSamplePanel--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSamplePanel</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a>&nbsp;getSamplePanel()</pre>\n</li>\n</ul>\n<a name=\"getSampleTextField--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSampleTextField</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField</a>&nbsp;getSampleTextField()</pre>\n</li>\n</ul>\n<a name=\"getFontFamilies--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFontFamilies</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;getFontFamilies()</pre>\n</li>\n</ul>\n<a name=\"getFontStyleNames--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>getFontStyleNames</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;getFontStyleNames()</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/gui/JButtonGroup.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/gui/JFontChooser.DialogCancelAction.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/gui/JFontChooser.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JFontChooser.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.class.summary\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/gui/JListOptionPane.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:12 PDT 2017 -->\n<title>JListOptionPane</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"JListOptionPane\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/gui/JFontChooser.TextFieldKeyHandlerForListSelectionUpDown.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/gui/JPlaceholderTextField.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/gui/JListOptionPane.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JListOptionPane.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JDialog\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.javax.swing.JDialog\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.gui</div>\n<h2 title=\"Class JListOptionPane\" class=\"title\">Class JListOptionPane</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Component</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Container</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Window</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Dialog</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JDialog</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.gui.JListOptionPane</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/RootPaneContainer.html?is-external=true\" title=\"class or interface in javax.swing\">RootPaneContainer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/WindowConstants.html?is-external=true\" title=\"class or interface in javax.swing\">WindowConstants</a></dd>\n</dl>\n<dl>\n<dt>Direct Known Subclasses:</dt>\n<dd><a href=\"../../stanford/cs106/gui/ListOptionPane.html\" title=\"class in stanford.cs106.gui\">ListOptionPane</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">JListOptionPane</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true\" title=\"class or interface in javax.swing\">JDialog</a>\nimplements <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a></pre>\n<div class=\"block\">A pop-up dialog box of options as a clickable list.\n A sort of expansion of the JOptionPane functionality provided in Java Swing.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#acm.gui.JListOptionPane\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JDialog\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true\" title=\"class or interface in javax.swing\">JDialog</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.AccessibleJDialog.html?is-external=true\" title=\"class or interface in javax.swing\">JDialog.AccessibleJDialog</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Dialog\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true\" title=\"class or interface in java.awt\">Dialog</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.AccessibleAWTDialog.html?is-external=true\" title=\"class or interface in java.awt\">Dialog.AccessibleAWTDialog</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.ModalExclusionType.html?is-external=true\" title=\"class or interface in java.awt\">Dialog.ModalExclusionType</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.ModalityType.html?is-external=true\" title=\"class or interface in java.awt\">Dialog.ModalityType</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Window\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true\" title=\"class or interface in java.awt\">Window</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.AccessibleAWTWindow.html?is-external=true\" title=\"class or interface in java.awt\">Window.AccessibleAWTWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.Type.html?is-external=true\" title=\"class or interface in java.awt\">Window.Type</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.AccessibleAWTContainer.html?is-external=true\" title=\"class or interface in java.awt\">Container.AccessibleAWTContainer</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.AccessibleAWTComponent.html?is-external=true\" title=\"class or interface in java.awt\">Component.AccessibleAWTComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BaselineResizeBehavior.html?is-external=true\" title=\"class or interface in java.awt\">Component.BaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BltBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.BltBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.FlipBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.FlipBufferStrategy</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.JDialog\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true\" title=\"class or interface in javax.swing\">JDialog</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#accessibleContext\" title=\"class or interface in javax.swing\">accessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#rootPane\" title=\"class or interface in javax.swing\">rootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#rootPaneCheckingEnabled\" title=\"class or interface in javax.swing\">rootPaneCheckingEnabled</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.Dialog\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true\" title=\"class or interface in java.awt\">Dialog</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#DEFAULT_MODALITY_TYPE\" title=\"class or interface in java.awt\">DEFAULT_MODALITY_TYPE</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#BOTTOM_ALIGNMENT\" title=\"class or interface in java.awt\">BOTTOM_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#CENTER_ALIGNMENT\" title=\"class or interface in java.awt\">CENTER_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#LEFT_ALIGNMENT\" title=\"class or interface in java.awt\">LEFT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#RIGHT_ALIGNMENT\" title=\"class or interface in java.awt\">RIGHT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#TOP_ALIGNMENT\" title=\"class or interface in java.awt\">TOP_ALIGNMENT</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.WindowConstants\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/WindowConstants.html?is-external=true\" title=\"class or interface in javax.swing\">WindowConstants</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/WindowConstants.html?is-external=true#DISPOSE_ON_CLOSE\" title=\"class or interface in javax.swing\">DISPOSE_ON_CLOSE</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/WindowConstants.html?is-external=true#DO_NOTHING_ON_CLOSE\" title=\"class or interface in javax.swing\">DO_NOTHING_ON_CLOSE</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/WindowConstants.html?is-external=true#EXIT_ON_CLOSE\" title=\"class or interface in javax.swing\">EXIT_ON_CLOSE</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/WindowConstants.html?is-external=true#HIDE_ON_CLOSE\" title=\"class or interface in javax.swing\">HIDE_ON_CLOSE</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.image.ImageObserver\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ABORT\" title=\"class or interface in java.awt.image\">ABORT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ALLBITS\" title=\"class or interface in java.awt.image\">ALLBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ERROR\" title=\"class or interface in java.awt.image\">ERROR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#FRAMEBITS\" title=\"class or interface in java.awt.image\">FRAMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#HEIGHT\" title=\"class or interface in java.awt.image\">HEIGHT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#PROPERTIES\" title=\"class or interface in java.awt.image\">PROPERTIES</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#SOMEBITS\" title=\"class or interface in java.awt.image\">SOMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#WIDTH\" title=\"class or interface in java.awt.image\">WIDTH</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JListOptionPane.html#JListOptionPane-javax.swing.JFrame-java.lang.Iterable-\">JListOptionPane</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true\" title=\"class or interface in javax.swing\">JFrame</a>&nbsp;frame,\n               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;items)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JListOptionPane.html#actionPerformed-java.awt.event.ActionEvent-\">actionPerformed</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;e)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JListOptionPane.html#getSelectedIndex--\">getSelectedIndex</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JListOptionPane.html#getSelectedValue--\">getSelectedValue</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JListOptionPane.html#getSelectedValues--\">getSelectedValues</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JListOptionPane.html#hasSelectedValue--\">hasSelectedValue</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JListOptionPane.html#pressedOk--\">pressedOk</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JListOptionPane.html#setMultipleSelection-boolean-\">setMultipleSelection</a></span>(boolean&nbsp;enabled)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JDialog\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true\" title=\"class or interface in javax.swing\">JDialog</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#addImpl-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in javax.swing\">addImpl</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#createRootPane--\" title=\"class or interface in javax.swing\">createRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#dialogInit--\" title=\"class or interface in javax.swing\">dialogInit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#getAccessibleContext--\" title=\"class or interface in javax.swing\">getAccessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#getContentPane--\" title=\"class or interface in javax.swing\">getContentPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#getDefaultCloseOperation--\" title=\"class or interface in javax.swing\">getDefaultCloseOperation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#getGlassPane--\" title=\"class or interface in javax.swing\">getGlassPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#getGraphics--\" title=\"class or interface in javax.swing\">getGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#getJMenuBar--\" title=\"class or interface in javax.swing\">getJMenuBar</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#getLayeredPane--\" title=\"class or interface in javax.swing\">getLayeredPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#getRootPane--\" title=\"class or interface in javax.swing\">getRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#getTransferHandler--\" title=\"class or interface in javax.swing\">getTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#isDefaultLookAndFeelDecorated--\" title=\"class or interface in javax.swing\">isDefaultLookAndFeelDecorated</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#isRootPaneCheckingEnabled--\" title=\"class or interface in javax.swing\">isRootPaneCheckingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#paramString--\" title=\"class or interface in javax.swing\">paramString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#processWindowEvent-java.awt.event.WindowEvent-\" title=\"class or interface in javax.swing\">processWindowEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#remove-java.awt.Component-\" title=\"class or interface in javax.swing\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#repaint-long-int-int-int-int-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#setContentPane-java.awt.Container-\" title=\"class or interface in javax.swing\">setContentPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#setDefaultCloseOperation-int-\" title=\"class or interface in javax.swing\">setDefaultCloseOperation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#setDefaultLookAndFeelDecorated-boolean-\" title=\"class or interface in javax.swing\">setDefaultLookAndFeelDecorated</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#setGlassPane-java.awt.Component-\" title=\"class or interface in javax.swing\">setGlassPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#setJMenuBar-javax.swing.JMenuBar-\" title=\"class or interface in javax.swing\">setJMenuBar</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#setLayeredPane-javax.swing.JLayeredPane-\" title=\"class or interface in javax.swing\">setLayeredPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#setLayout-java.awt.LayoutManager-\" title=\"class or interface in javax.swing\">setLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#setRootPane-javax.swing.JRootPane-\" title=\"class or interface in javax.swing\">setRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#setRootPaneCheckingEnabled-boolean-\" title=\"class or interface in javax.swing\">setRootPaneCheckingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#setTransferHandler-javax.swing.TransferHandler-\" title=\"class or interface in javax.swing\">setTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#update-java.awt.Graphics-\" title=\"class or interface in javax.swing\">update</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Dialog\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true\" title=\"class or interface in java.awt\">Dialog</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#addNotify--\" title=\"class or interface in java.awt\">addNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#getModalityType--\" title=\"class or interface in java.awt\">getModalityType</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#getTitle--\" title=\"class or interface in java.awt\">getTitle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#hide--\" title=\"class or interface in java.awt\">hide</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#isModal--\" title=\"class or interface in java.awt\">isModal</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#isResizable--\" title=\"class or interface in java.awt\">isResizable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#isUndecorated--\" title=\"class or interface in java.awt\">isUndecorated</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#setBackground-java.awt.Color-\" title=\"class or interface in java.awt\">setBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#setModal-boolean-\" title=\"class or interface in java.awt\">setModal</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#setModalityType-java.awt.Dialog.ModalityType-\" title=\"class or interface in java.awt\">setModalityType</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#setOpacity-float-\" title=\"class or interface in java.awt\">setOpacity</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#setResizable-boolean-\" title=\"class or interface in java.awt\">setResizable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#setShape-java.awt.Shape-\" title=\"class or interface in java.awt\">setShape</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#setTitle-java.lang.String-\" title=\"class or interface in java.awt\">setTitle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#setUndecorated-boolean-\" title=\"class or interface in java.awt\">setUndecorated</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#setVisible-boolean-\" title=\"class or interface in java.awt\">setVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#show--\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#toBack--\" title=\"class or interface in java.awt\">toBack</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Window\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true\" title=\"class or interface in java.awt\">Window</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#addPropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#addPropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#addWindowFocusListener-java.awt.event.WindowFocusListener-\" title=\"class or interface in java.awt\">addWindowFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#addWindowListener-java.awt.event.WindowListener-\" title=\"class or interface in java.awt\">addWindowListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#addWindowStateListener-java.awt.event.WindowStateListener-\" title=\"class or interface in java.awt\">addWindowStateListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#applyResourceBundle-java.util.ResourceBundle-\" title=\"class or interface in java.awt\">applyResourceBundle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#applyResourceBundle-java.lang.String-\" title=\"class or interface in java.awt\">applyResourceBundle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#createBufferStrategy-int-\" title=\"class or interface in java.awt\">createBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#createBufferStrategy-int-java.awt.BufferCapabilities-\" title=\"class or interface in java.awt\">createBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#dispose--\" title=\"class or interface in java.awt\">dispose</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getBackground--\" title=\"class or interface in java.awt\">getBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getBufferStrategy--\" title=\"class or interface in java.awt\">getBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getFocusableWindowState--\" title=\"class or interface in java.awt\">getFocusableWindowState</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getFocusCycleRootAncestor--\" title=\"class or interface in java.awt\">getFocusCycleRootAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getFocusOwner--\" title=\"class or interface in java.awt\">getFocusOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getFocusTraversalKeys-int-\" title=\"class or interface in java.awt\">getFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getIconImages--\" title=\"class or interface in java.awt\">getIconImages</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getInputContext--\" title=\"class or interface in java.awt\">getInputContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getListeners-java.lang.Class-\" title=\"class or interface in java.awt\">getListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getLocale--\" title=\"class or interface in java.awt\">getLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getModalExclusionType--\" title=\"class or interface in java.awt\">getModalExclusionType</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getMostRecentFocusOwner--\" title=\"class or interface in java.awt\">getMostRecentFocusOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getOpacity--\" title=\"class or interface in java.awt\">getOpacity</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getOwnedWindows--\" title=\"class or interface in java.awt\">getOwnedWindows</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getOwner--\" title=\"class or interface in java.awt\">getOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getOwnerlessWindows--\" title=\"class or interface in java.awt\">getOwnerlessWindows</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getShape--\" title=\"class or interface in java.awt\">getShape</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getToolkit--\" title=\"class or interface in java.awt\">getToolkit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getType--\" title=\"class or interface in java.awt\">getType</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getWarningString--\" title=\"class or interface in java.awt\">getWarningString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getWindowFocusListeners--\" title=\"class or interface in java.awt\">getWindowFocusListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getWindowListeners--\" title=\"class or interface in java.awt\">getWindowListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getWindows--\" title=\"class or interface in java.awt\">getWindows</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getWindowStateListeners--\" title=\"class or interface in java.awt\">getWindowStateListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isActive--\" title=\"class or interface in java.awt\">isActive</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isAlwaysOnTop--\" title=\"class or interface in java.awt\">isAlwaysOnTop</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isAlwaysOnTopSupported--\" title=\"class or interface in java.awt\">isAlwaysOnTopSupported</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isAutoRequestFocus--\" title=\"class or interface in java.awt\">isAutoRequestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isFocusableWindow--\" title=\"class or interface in java.awt\">isFocusableWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isFocusCycleRoot--\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isFocused--\" title=\"class or interface in java.awt\">isFocused</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isLocationByPlatform--\" title=\"class or interface in java.awt\">isLocationByPlatform</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isOpaque--\" title=\"class or interface in java.awt\">isOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isShowing--\" title=\"class or interface in java.awt\">isShowing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isValidateRoot--\" title=\"class or interface in java.awt\">isValidateRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#pack--\" title=\"class or interface in java.awt\">pack</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#paint-java.awt.Graphics-\" title=\"class or interface in java.awt\">paint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#postEvent-java.awt.Event-\" title=\"class or interface in java.awt\">postEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#processEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">processEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#processWindowFocusEvent-java.awt.event.WindowEvent-\" title=\"class or interface in java.awt\">processWindowFocusEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#processWindowStateEvent-java.awt.event.WindowEvent-\" title=\"class or interface in java.awt\">processWindowStateEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#removeNotify--\" title=\"class or interface in java.awt\">removeNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#removeWindowFocusListener-java.awt.event.WindowFocusListener-\" title=\"class or interface in java.awt\">removeWindowFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#removeWindowListener-java.awt.event.WindowListener-\" title=\"class or interface in java.awt\">removeWindowListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#removeWindowStateListener-java.awt.event.WindowStateListener-\" title=\"class or interface in java.awt\">removeWindowStateListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#reshape-int-int-int-int-\" title=\"class or interface in java.awt\">reshape</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setAlwaysOnTop-boolean-\" title=\"class or interface in java.awt\">setAlwaysOnTop</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setAutoRequestFocus-boolean-\" title=\"class or interface in java.awt\">setAutoRequestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setBounds-int-int-int-int-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setCursor-java.awt.Cursor-\" title=\"class or interface in java.awt\">setCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setFocusableWindowState-boolean-\" title=\"class or interface in java.awt\">setFocusableWindowState</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setFocusCycleRoot-boolean-\" title=\"class or interface in java.awt\">setFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setIconImage-java.awt.Image-\" title=\"class or interface in java.awt\">setIconImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setIconImages-java.util.List-\" title=\"class or interface in java.awt\">setIconImages</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setLocation-int-int-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setLocation-java.awt.Point-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setLocationByPlatform-boolean-\" title=\"class or interface in java.awt\">setLocationByPlatform</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setLocationRelativeTo-java.awt.Component-\" title=\"class or interface in java.awt\">setLocationRelativeTo</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setMinimumSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setModalExclusionType-java.awt.Dialog.ModalExclusionType-\" title=\"class or interface in java.awt\">setModalExclusionType</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setSize-int-int-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setType-java.awt.Window.Type-\" title=\"class or interface in java.awt\">setType</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#toFront--\" title=\"class or interface in java.awt\">toFront</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.lang.String-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">addContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#applyComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">applyComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#areFocusTraversalKeysSet-int-\" title=\"class or interface in java.awt\">areFocusTraversalKeysSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#countComponents--\" title=\"class or interface in java.awt\">countComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#deliverEvent-java.awt.Event-\" title=\"class or interface in java.awt\">deliverEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#doLayout--\" title=\"class or interface in java.awt\">doLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-int-int-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getAlignmentX--\" title=\"class or interface in java.awt\">getAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getAlignmentY--\" title=\"class or interface in java.awt\">getAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponent-int-\" title=\"class or interface in java.awt\">getComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-int-int-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentCount--\" title=\"class or interface in java.awt\">getComponentCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponents--\" title=\"class or interface in java.awt\">getComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentZOrder-java.awt.Component-\" title=\"class or interface in java.awt\">getComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getContainerListeners--\" title=\"class or interface in java.awt\">getContainerListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalPolicy--\" title=\"class or interface in java.awt\">getFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getInsets--\" title=\"class or interface in java.awt\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getLayout--\" title=\"class or interface in java.awt\">getLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMaximumSize--\" title=\"class or interface in java.awt\">getMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMinimumSize--\" title=\"class or interface in java.awt\">getMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMousePosition-boolean-\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getPreferredSize--\" title=\"class or interface in java.awt\">getPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#insets--\" title=\"class or interface in java.awt\">insets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#invalidate--\" title=\"class or interface in java.awt\">invalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isAncestorOf-java.awt.Component-\" title=\"class or interface in java.awt\">isAncestorOf</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot-java.awt.Container-\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicyProvider--\" title=\"class or interface in java.awt\">isFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicySet--\" title=\"class or interface in java.awt\">isFocusTraversalPolicySet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#layout--\" title=\"class or interface in java.awt\">layout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintStream-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintWriter-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#locate-int-int-\" title=\"class or interface in java.awt\">locate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#minimumSize--\" title=\"class or interface in java.awt\">minimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paintComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#preferredSize--\" title=\"class or interface in java.awt\">preferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#print-java.awt.Graphics-\" title=\"class or interface in java.awt\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#printComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">printComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processContainerEvent-java.awt.event.ContainerEvent-\" title=\"class or interface in java.awt\">processContainerEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#remove-int-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeAll--\" title=\"class or interface in java.awt\">removeAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">removeContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setComponentZOrder-java.awt.Component-int-\" title=\"class or interface in java.awt\">setComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalKeys-int-java.util.Set-\" title=\"class or interface in java.awt\">setFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicy-java.awt.FocusTraversalPolicy-\" title=\"class or interface in java.awt\">setFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicyProvider-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFont-java.awt.Font-\" title=\"class or interface in java.awt\">setFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#transferFocusDownCycle--\" title=\"class or interface in java.awt\">transferFocusDownCycle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validate--\" title=\"class or interface in java.awt\">validate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validateTree--\" title=\"class or interface in java.awt\">validateTree</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#action-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">action</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#add-java.awt.PopupMenu-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">addComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">addFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">addHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">addHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">addInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">addKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">addMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">addMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">addMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#bounds--\" title=\"class or interface in java.awt\">bounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#coalesceEvents-java.awt.AWTEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">coalesceEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-int-int-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-java.awt.Point-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-java.awt.image.ImageProducer-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-int-int-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-java.awt.ImageCapabilities-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disable--\" title=\"class or interface in java.awt\">disable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disableEvents-long-\" title=\"class or interface in java.awt\">disableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#dispatchEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">dispatchEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable--\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable-boolean-\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableEvents-long-\" title=\"class or interface in java.awt\">enableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableInputMethods-boolean-\" title=\"class or interface in java.awt\">enableInputMethods</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-boolean-boolean-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-byte-byte-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-char-char-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-double-double-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-float-float-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-int-int-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-long-long-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-short-short-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBaseline-int-int-\" title=\"class or interface in java.awt\">getBaseline</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBaselineResizeBehavior--\" title=\"class or interface in java.awt\">getBaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds--\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getColorModel--\" title=\"class or interface in java.awt\">getColorModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentListeners--\" title=\"class or interface in java.awt\">getComponentListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentOrientation--\" title=\"class or interface in java.awt\">getComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getCursor--\" title=\"class or interface in java.awt\">getCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getDropTarget--\" title=\"class or interface in java.awt\">getDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusListeners--\" title=\"class or interface in java.awt\">getFocusListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusTraversalKeysEnabled--\" title=\"class or interface in java.awt\">getFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFont--\" title=\"class or interface in java.awt\">getFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFontMetrics-java.awt.Font-\" title=\"class or interface in java.awt\">getFontMetrics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getForeground--\" title=\"class or interface in java.awt\">getForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getGraphicsConfiguration--\" title=\"class or interface in java.awt\">getGraphicsConfiguration</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHeight--\" title=\"class or interface in java.awt\">getHeight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyBoundsListeners--\" title=\"class or interface in java.awt\">getHierarchyBoundsListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyListeners--\" title=\"class or interface in java.awt\">getHierarchyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getIgnoreRepaint--\" title=\"class or interface in java.awt\">getIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodListeners--\" title=\"class or interface in java.awt\">getInputMethodListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodRequests--\" title=\"class or interface in java.awt\">getInputMethodRequests</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getKeyListeners--\" title=\"class or interface in java.awt\">getKeyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation--\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation-java.awt.Point-\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocationOnScreen--\" title=\"class or interface in java.awt\">getLocationOnScreen</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseListeners--\" title=\"class or interface in java.awt\">getMouseListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseMotionListeners--\" title=\"class or interface in java.awt\">getMouseMotionListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMousePosition--\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseWheelListeners--\" title=\"class or interface in java.awt\">getMouseWheelListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getName--\" title=\"class or interface in java.awt\">getName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getParent--\" title=\"class or interface in java.awt\">getParent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPeer--\" title=\"class or interface in java.awt\">getPeer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners--\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners-java.lang.String-\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize--\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getTreeLock--\" title=\"class or interface in java.awt\">getTreeLock</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getWidth--\" title=\"class or interface in java.awt\">getWidth</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getX--\" title=\"class or interface in java.awt\">getX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getY--\" title=\"class or interface in java.awt\">getY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#gotFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">gotFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#handleEvent-java.awt.Event-\" title=\"class or interface in java.awt\">handleEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hasFocus--\" title=\"class or interface in java.awt\">hasFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#imageUpdate-java.awt.Image-int-int-int-int-int-\" title=\"class or interface in java.awt\">imageUpdate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#inside-int-int-\" title=\"class or interface in java.awt\">inside</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isBackgroundSet--\" title=\"class or interface in java.awt\">isBackgroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isCursorSet--\" title=\"class or interface in java.awt\">isCursorSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDisplayable--\" title=\"class or interface in java.awt\">isDisplayable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDoubleBuffered--\" title=\"class or interface in java.awt\">isDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isEnabled--\" title=\"class or interface in java.awt\">isEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusable--\" title=\"class or interface in java.awt\">isFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusOwner--\" title=\"class or interface in java.awt\">isFocusOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusTraversable--\" title=\"class or interface in java.awt\">isFocusTraversable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFontSet--\" title=\"class or interface in java.awt\">isFontSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isForegroundSet--\" title=\"class or interface in java.awt\">isForegroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isLightweight--\" title=\"class or interface in java.awt\">isLightweight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMaximumSizeSet--\" title=\"class or interface in java.awt\">isMaximumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMinimumSizeSet--\" title=\"class or interface in java.awt\">isMinimumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isPreferredSizeSet--\" title=\"class or interface in java.awt\">isPreferredSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isValid--\" title=\"class or interface in java.awt\">isValid</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isVisible--\" title=\"class or interface in java.awt\">isVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyDown-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyUp-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list--\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintStream-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintWriter-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#location--\" title=\"class or interface in java.awt\">location</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#lostFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">lostFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDown-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDrag-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDrag</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseEnter-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseEnter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseExit-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseExit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseMove-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseMove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseUp-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#move-int-int-\" title=\"class or interface in java.awt\">move</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#nextFocus--\" title=\"class or interface in java.awt\">nextFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#paintAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#printAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">printAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processComponentEvent-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt\">processComponentEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processFocusEvent-java.awt.event.FocusEvent-\" title=\"class or interface in java.awt\">processFocusEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyBoundsEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyBoundsEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processInputMethodEvent-java.awt.event.InputMethodEvent-\" title=\"class or interface in java.awt\">processInputMethodEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in java.awt\">processKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseEvent-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt\">processMouseEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseMotionEvent-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt\">processMouseMotionEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseWheelEvent-java.awt.event.MouseWheelEvent-\" title=\"class or interface in java.awt\">processMouseWheelEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#remove-java.awt.MenuComponent-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">removeComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">removeFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">removeHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">removeHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">removeInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">removeKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">removeMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">removeMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">removeMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint--\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-int-int-int-int-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-long-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocus--\" title=\"class or interface in java.awt\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocus-boolean-\" title=\"class or interface in java.awt\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocusInWindow--\" title=\"class or interface in java.awt\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocusInWindow-boolean-\" title=\"class or interface in java.awt\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#resize-java.awt.Dimension-\" title=\"class or interface in java.awt\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#resize-int-int-\" title=\"class or interface in java.awt\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#revalidate--\" title=\"class or interface in java.awt\">revalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">setComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setDropTarget-java.awt.dnd.DropTarget-\" title=\"class or interface in java.awt\">setDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setEnabled-boolean-\" title=\"class or interface in java.awt\">setEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusable-boolean-\" title=\"class or interface in java.awt\">setFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusTraversalKeysEnabled-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setForeground-java.awt.Color-\" title=\"class or interface in java.awt\">setForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setIgnoreRepaint-boolean-\" title=\"class or interface in java.awt\">setIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocale-java.util.Locale-\" title=\"class or interface in java.awt\">setLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setMaximumSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setName-java.lang.String-\" title=\"class or interface in java.awt\">setName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setPreferredSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show-boolean-\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#size--\" title=\"class or interface in java.awt\">size</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#toString--\" title=\"class or interface in java.awt\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocus--\" title=\"class or interface in java.awt\">transferFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusBackward--\" title=\"class or interface in java.awt\">transferFocusBackward</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusUpCycle--\" title=\"class or interface in java.awt\">transferFocusUpCycle</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"JListOptionPane-javax.swing.JFrame-java.lang.Iterable-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>JListOptionPane</h4>\n<pre>public&nbsp;JListOptionPane(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true\" title=\"class or interface in javax.swing\">JFrame</a>&nbsp;frame,\n                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;items)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"actionPerformed-java.awt.event.ActionEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>actionPerformed</h4>\n<pre>public&nbsp;void&nbsp;actionPerformed(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;e)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true#actionPerformed-java.awt.event.ActionEvent-\" title=\"class or interface in java.awt.event\">actionPerformed</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getSelectedIndex--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSelectedIndex</h4>\n<pre>public&nbsp;int&nbsp;getSelectedIndex()</pre>\n</li>\n</ul>\n<a name=\"getSelectedValue--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSelectedValue</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;getSelectedValue()</pre>\n</li>\n</ul>\n<a name=\"getSelectedValues--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSelectedValues</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>[]&nbsp;getSelectedValues()</pre>\n</li>\n</ul>\n<a name=\"hasSelectedValue--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hasSelectedValue</h4>\n<pre>public&nbsp;boolean&nbsp;hasSelectedValue()</pre>\n</li>\n</ul>\n<a name=\"pressedOk--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>pressedOk</h4>\n<pre>public&nbsp;boolean&nbsp;pressedOk()</pre>\n</li>\n</ul>\n<a name=\"setMultipleSelection-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>setMultipleSelection</h4>\n<pre>public&nbsp;void&nbsp;setMultipleSelection(boolean&nbsp;enabled)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/gui/JFontChooser.TextFieldKeyHandlerForListSelectionUpDown.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/gui/JPlaceholderTextField.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/gui/JListOptionPane.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JListOptionPane.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JDialog\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.javax.swing.JDialog\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/gui/JPlaceholderTextField.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:12 PDT 2017 -->\n<title>JPlaceholderTextField</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"JPlaceholderTextField\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/gui/JListOptionPane.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/gui/JStringList.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/gui/JPlaceholderTextField.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JPlaceholderTextField.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JTextField\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.javax.swing.JTextField\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.gui</div>\n<h2 title=\"Class JPlaceholderTextField\" class=\"title\">Class JPlaceholderTextField</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Component</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Container</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JComponent</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true\" title=\"class or interface in javax.swing.text\">javax.swing.text.JTextComponent</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JTextField</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.gui.JPlaceholderTextField</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Scrollable.html?is-external=true\" title=\"class or interface in javax.swing\">Scrollable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true\" title=\"class or interface in javax.swing\">SwingConstants</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">JPlaceholderTextField</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField</a></pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#acm.gui.JPlaceholderTextField\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JTextField\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.AccessibleJTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField.AccessibleJTextField</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.text.JTextComponent\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.text.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true\" title=\"class or interface in javax.swing.text\">JTextComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.AccessibleJTextComponent.html?is-external=true\" title=\"class or interface in javax.swing.text\">JTextComponent.AccessibleJTextComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.DropLocation.html?is-external=true\" title=\"class or interface in javax.swing.text\">JTextComponent.DropLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.KeyBinding.html?is-external=true\" title=\"class or interface in javax.swing.text\">JTextComponent.KeyBinding</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.AccessibleJComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent.AccessibleJComponent</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.AccessibleAWTContainer.html?is-external=true\" title=\"class or interface in java.awt\">Container.AccessibleAWTContainer</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.AccessibleAWTComponent.html?is-external=true\" title=\"class or interface in java.awt\">Component.AccessibleAWTComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BaselineResizeBehavior.html?is-external=true\" title=\"class or interface in java.awt\">Component.BaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BltBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.BltBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.FlipBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.FlipBufferStrategy</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.JTextField\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#notifyAction\" title=\"class or interface in javax.swing\">notifyAction</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.text.JTextComponent\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.text.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true\" title=\"class or interface in javax.swing.text\">JTextComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#DEFAULT_KEYMAP\" title=\"class or interface in javax.swing.text\">DEFAULT_KEYMAP</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#FOCUS_ACCELERATOR_KEY\" title=\"class or interface in javax.swing.text\">FOCUS_ACCELERATOR_KEY</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#listenerList\" title=\"class or interface in javax.swing\">listenerList</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#TOOL_TIP_TEXT_KEY\" title=\"class or interface in javax.swing\">TOOL_TIP_TEXT_KEY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#ui\" title=\"class or interface in javax.swing\">ui</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#UNDEFINED_CONDITION\" title=\"class or interface in javax.swing\">UNDEFINED_CONDITION</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_ANCESTOR_OF_FOCUSED_COMPONENT\" title=\"class or interface in javax.swing\">WHEN_ANCESTOR_OF_FOCUSED_COMPONENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_FOCUSED\" title=\"class or interface in javax.swing\">WHEN_FOCUSED</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_IN_FOCUSED_WINDOW\" title=\"class or interface in javax.swing\">WHEN_IN_FOCUSED_WINDOW</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#accessibleContext\" title=\"class or interface in java.awt\">accessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#BOTTOM_ALIGNMENT\" title=\"class or interface in java.awt\">BOTTOM_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#CENTER_ALIGNMENT\" title=\"class or interface in java.awt\">CENTER_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#LEFT_ALIGNMENT\" title=\"class or interface in java.awt\">LEFT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#RIGHT_ALIGNMENT\" title=\"class or interface in java.awt\">RIGHT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#TOP_ALIGNMENT\" title=\"class or interface in java.awt\">TOP_ALIGNMENT</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.SwingConstants\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true\" title=\"class or interface in javax.swing\">SwingConstants</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#BOTTOM\" title=\"class or interface in javax.swing\">BOTTOM</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#CENTER\" title=\"class or interface in javax.swing\">CENTER</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#EAST\" title=\"class or interface in javax.swing\">EAST</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#HORIZONTAL\" title=\"class or interface in javax.swing\">HORIZONTAL</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#LEADING\" title=\"class or interface in javax.swing\">LEADING</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#LEFT\" title=\"class or interface in javax.swing\">LEFT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#NEXT\" title=\"class or interface in javax.swing\">NEXT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#NORTH\" title=\"class or interface in javax.swing\">NORTH</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#NORTH_EAST\" title=\"class or interface in javax.swing\">NORTH_EAST</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#NORTH_WEST\" title=\"class or interface in javax.swing\">NORTH_WEST</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#PREVIOUS\" title=\"class or interface in javax.swing\">PREVIOUS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#RIGHT\" title=\"class or interface in javax.swing\">RIGHT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#SOUTH\" title=\"class or interface in javax.swing\">SOUTH</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#SOUTH_EAST\" title=\"class or interface in javax.swing\">SOUTH_EAST</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#SOUTH_WEST\" title=\"class or interface in javax.swing\">SOUTH_WEST</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#TOP\" title=\"class or interface in javax.swing\">TOP</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#TRAILING\" title=\"class or interface in javax.swing\">TRAILING</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#VERTICAL\" title=\"class or interface in javax.swing\">VERTICAL</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true#WEST\" title=\"class or interface in javax.swing\">WEST</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.image.ImageObserver\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ABORT\" title=\"class or interface in java.awt.image\">ABORT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ALLBITS\" title=\"class or interface in java.awt.image\">ALLBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ERROR\" title=\"class or interface in java.awt.image\">ERROR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#FRAMEBITS\" title=\"class or interface in java.awt.image\">FRAMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#HEIGHT\" title=\"class or interface in java.awt.image\">HEIGHT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#PROPERTIES\" title=\"class or interface in java.awt.image\">PROPERTIES</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#SOMEBITS\" title=\"class or interface in java.awt.image\">SOMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#WIDTH\" title=\"class or interface in java.awt.image\">WIDTH</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JPlaceholderTextField.html#JPlaceholderTextField--\">JPlaceholderTextField</a></span>()</code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JPlaceholderTextField.html#JPlaceholderTextField-javax.swing.text.Document-java.lang.String-int-\">JPlaceholderTextField</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/Document.html?is-external=true\" title=\"class or interface in javax.swing.text\">Document</a>&nbsp;pDoc,\n                     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;pText,\n                     int&nbsp;pColumns)</code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JPlaceholderTextField.html#JPlaceholderTextField-int-\">JPlaceholderTextField</a></span>(int&nbsp;pColumns)</code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JPlaceholderTextField.html#JPlaceholderTextField-java.lang.String-\">JPlaceholderTextField</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;pText)</code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JPlaceholderTextField.html#JPlaceholderTextField-java.lang.String-int-\">JPlaceholderTextField</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;pText,\n                     int&nbsp;pColumns)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JPlaceholderTextField.html#getPlaceholder--\">getPlaceholder</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JPlaceholderTextField.html#getValueAsDouble--\">getValueAsDouble</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JPlaceholderTextField.html#getValueAsInt--\">getValueAsInt</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JPlaceholderTextField.html#getValueAsInteger--\">getValueAsInteger</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JPlaceholderTextField.html#paintComponent-java.awt.Graphics-\">paintComponent</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;pG)</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JPlaceholderTextField.html#setPlaceholder-java.lang.String-\">setPlaceholder</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JPlaceholderTextField.html#setValue-double-\">setValue</a></span>(double&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JPlaceholderTextField.html#setValue-int-\">setValue</a></span>(int&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JPlaceholderTextField.html#setValue-long-\">setValue</a></span>(long&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JPlaceholderTextField.html#valueIsDouble--\">valueIsDouble</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JPlaceholderTextField.html#valueIsInt--\">valueIsInt</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JPlaceholderTextField.html#valueIsInteger--\">valueIsInteger</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JTextField\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#actionPropertyChanged-javax.swing.Action-java.lang.String-\" title=\"class or interface in javax.swing\">actionPropertyChanged</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#addActionListener-java.awt.event.ActionListener-\" title=\"class or interface in javax.swing\">addActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#configurePropertiesFromAction-javax.swing.Action-\" title=\"class or interface in javax.swing\">configurePropertiesFromAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#createActionPropertyChangeListener-javax.swing.Action-\" title=\"class or interface in javax.swing\">createActionPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#createDefaultModel--\" title=\"class or interface in javax.swing\">createDefaultModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#fireActionPerformed--\" title=\"class or interface in javax.swing\">fireActionPerformed</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#getAccessibleContext--\" title=\"class or interface in javax.swing\">getAccessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#getAction--\" title=\"class or interface in javax.swing\">getAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#getActionListeners--\" title=\"class or interface in javax.swing\">getActionListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#getActions--\" title=\"class or interface in javax.swing\">getActions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#getColumns--\" title=\"class or interface in javax.swing\">getColumns</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#getColumnWidth--\" title=\"class or interface in javax.swing\">getColumnWidth</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#getHorizontalAlignment--\" title=\"class or interface in javax.swing\">getHorizontalAlignment</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#getHorizontalVisibility--\" title=\"class or interface in javax.swing\">getHorizontalVisibility</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#getPreferredSize--\" title=\"class or interface in javax.swing\">getPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#getScrollOffset--\" title=\"class or interface in javax.swing\">getScrollOffset</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#getUIClassID--\" title=\"class or interface in javax.swing\">getUIClassID</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#isValidateRoot--\" title=\"class or interface in javax.swing\">isValidateRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#paramString--\" title=\"class or interface in javax.swing\">paramString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#postActionEvent--\" title=\"class or interface in javax.swing\">postActionEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#removeActionListener-java.awt.event.ActionListener-\" title=\"class or interface in javax.swing\">removeActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#scrollRectToVisible-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">scrollRectToVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#setAction-javax.swing.Action-\" title=\"class or interface in javax.swing\">setAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#setActionCommand-java.lang.String-\" title=\"class or interface in javax.swing\">setActionCommand</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#setColumns-int-\" title=\"class or interface in javax.swing\">setColumns</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#setDocument-javax.swing.text.Document-\" title=\"class or interface in javax.swing\">setDocument</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#setFont-java.awt.Font-\" title=\"class or interface in javax.swing\">setFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#setHorizontalAlignment-int-\" title=\"class or interface in javax.swing\">setHorizontalAlignment</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true#setScrollOffset-int-\" title=\"class or interface in javax.swing\">setScrollOffset</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.text.JTextComponent\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.text.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true\" title=\"class or interface in javax.swing.text\">JTextComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#addCaretListener-javax.swing.event.CaretListener-\" title=\"class or interface in javax.swing.text\">addCaretListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#addInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in javax.swing.text\">addInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#addKeymap-java.lang.String-javax.swing.text.Keymap-\" title=\"class or interface in javax.swing.text\">addKeymap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#copy--\" title=\"class or interface in javax.swing.text\">copy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#cut--\" title=\"class or interface in javax.swing.text\">cut</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#fireCaretUpdate-javax.swing.event.CaretEvent-\" title=\"class or interface in javax.swing.text\">fireCaretUpdate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getCaret--\" title=\"class or interface in javax.swing.text\">getCaret</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getCaretColor--\" title=\"class or interface in javax.swing.text\">getCaretColor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getCaretListeners--\" title=\"class or interface in javax.swing.text\">getCaretListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getCaretPosition--\" title=\"class or interface in javax.swing.text\">getCaretPosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getDisabledTextColor--\" title=\"class or interface in javax.swing.text\">getDisabledTextColor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getDocument--\" title=\"class or interface in javax.swing.text\">getDocument</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getDragEnabled--\" title=\"class or interface in javax.swing.text\">getDragEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getDropLocation--\" title=\"class or interface in javax.swing.text\">getDropLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getDropMode--\" title=\"class or interface in javax.swing.text\">getDropMode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getFocusAccelerator--\" title=\"class or interface in javax.swing.text\">getFocusAccelerator</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getHighlighter--\" title=\"class or interface in javax.swing.text\">getHighlighter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getInputMethodRequests--\" title=\"class or interface in javax.swing.text\">getInputMethodRequests</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getKeymap--\" title=\"class or interface in javax.swing.text\">getKeymap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getKeymap-java.lang.String-\" title=\"class or interface in javax.swing.text\">getKeymap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getMargin--\" title=\"class or interface in javax.swing.text\">getMargin</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getNavigationFilter--\" title=\"class or interface in javax.swing.text\">getNavigationFilter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getPreferredScrollableViewportSize--\" title=\"class or interface in javax.swing.text\">getPreferredScrollableViewportSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getPrintable-java.text.MessageFormat-java.text.MessageFormat-\" title=\"class or interface in javax.swing.text\">getPrintable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getScrollableBlockIncrement-java.awt.Rectangle-int-int-\" title=\"class or interface in javax.swing.text\">getScrollableBlockIncrement</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getScrollableTracksViewportHeight--\" title=\"class or interface in javax.swing.text\">getScrollableTracksViewportHeight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getScrollableTracksViewportWidth--\" title=\"class or interface in javax.swing.text\">getScrollableTracksViewportWidth</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getScrollableUnitIncrement-java.awt.Rectangle-int-int-\" title=\"class or interface in javax.swing.text\">getScrollableUnitIncrement</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getSelectedText--\" title=\"class or interface in javax.swing.text\">getSelectedText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getSelectedTextColor--\" title=\"class or interface in javax.swing.text\">getSelectedTextColor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getSelectionColor--\" title=\"class or interface in javax.swing.text\">getSelectionColor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getSelectionEnd--\" title=\"class or interface in javax.swing.text\">getSelectionEnd</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getSelectionStart--\" title=\"class or interface in javax.swing.text\">getSelectionStart</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getText--\" title=\"class or interface in javax.swing.text\">getText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getText-int-int-\" title=\"class or interface in javax.swing.text\">getText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getToolTipText-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing.text\">getToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#getUI--\" title=\"class or interface in javax.swing.text\">getUI</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#isEditable--\" title=\"class or interface in javax.swing.text\">isEditable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#loadKeymap-javax.swing.text.Keymap-javax.swing.text.JTextComponent.KeyBinding:A-javax.swing.Action:A-\" title=\"class or interface in javax.swing.text\">loadKeymap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#modelToView-int-\" title=\"class or interface in javax.swing.text\">modelToView</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#moveCaretPosition-int-\" title=\"class or interface in javax.swing.text\">moveCaretPosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#paste--\" title=\"class or interface in javax.swing.text\">paste</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#print--\" title=\"class or interface in javax.swing.text\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#print-java.text.MessageFormat-java.text.MessageFormat-\" title=\"class or interface in javax.swing.text\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#print-java.text.MessageFormat-java.text.MessageFormat-boolean-javax.print.PrintService-javax.print.attribute.PrintRequestAttributeSet-boolean-\" title=\"class or interface in javax.swing.text\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#processInputMethodEvent-java.awt.event.InputMethodEvent-\" title=\"class or interface in javax.swing.text\">processInputMethodEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#read-java.io.Reader-java.lang.Object-\" title=\"class or interface in javax.swing.text\">read</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#removeCaretListener-javax.swing.event.CaretListener-\" title=\"class or interface in javax.swing.text\">removeCaretListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#removeKeymap-java.lang.String-\" title=\"class or interface in javax.swing.text\">removeKeymap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#removeNotify--\" title=\"class or interface in javax.swing.text\">removeNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#replaceSelection-java.lang.String-\" title=\"class or interface in javax.swing.text\">replaceSelection</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#restoreComposedText--\" title=\"class or interface in javax.swing.text\">restoreComposedText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#saveComposedText-int-\" title=\"class or interface in javax.swing.text\">saveComposedText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#select-int-int-\" title=\"class or interface in javax.swing.text\">select</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#selectAll--\" title=\"class or interface in javax.swing.text\">selectAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setCaret-javax.swing.text.Caret-\" title=\"class or interface in javax.swing.text\">setCaret</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setCaretColor-java.awt.Color-\" title=\"class or interface in javax.swing.text\">setCaretColor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setCaretPosition-int-\" title=\"class or interface in javax.swing.text\">setCaretPosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in javax.swing.text\">setComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setDisabledTextColor-java.awt.Color-\" title=\"class or interface in javax.swing.text\">setDisabledTextColor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setDragEnabled-boolean-\" title=\"class or interface in javax.swing.text\">setDragEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setDropMode-javax.swing.DropMode-\" title=\"class or interface in javax.swing.text\">setDropMode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setEditable-boolean-\" title=\"class or interface in javax.swing.text\">setEditable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setFocusAccelerator-char-\" title=\"class or interface in javax.swing.text\">setFocusAccelerator</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setHighlighter-javax.swing.text.Highlighter-\" title=\"class or interface in javax.swing.text\">setHighlighter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setKeymap-javax.swing.text.Keymap-\" title=\"class or interface in javax.swing.text\">setKeymap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setMargin-java.awt.Insets-\" title=\"class or interface in javax.swing.text\">setMargin</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setNavigationFilter-javax.swing.text.NavigationFilter-\" title=\"class or interface in javax.swing.text\">setNavigationFilter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setSelectedTextColor-java.awt.Color-\" title=\"class or interface in javax.swing.text\">setSelectedTextColor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setSelectionColor-java.awt.Color-\" title=\"class or interface in javax.swing.text\">setSelectionColor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setSelectionEnd-int-\" title=\"class or interface in javax.swing.text\">setSelectionEnd</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setSelectionStart-int-\" title=\"class or interface in javax.swing.text\">setSelectionStart</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setText-java.lang.String-\" title=\"class or interface in javax.swing.text\">setText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#setUI-javax.swing.plaf.TextUI-\" title=\"class or interface in javax.swing.text\">setUI</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#updateUI--\" title=\"class or interface in javax.swing.text\">updateUI</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#viewToModel-java.awt.Point-\" title=\"class or interface in javax.swing.text\">viewToModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true#write-java.io.Writer-\" title=\"class or interface in javax.swing.text\">write</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addAncestorListener-javax.swing.event.AncestorListener-\" title=\"class or interface in javax.swing\">addAncestorListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addNotify--\" title=\"class or interface in javax.swing\">addNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addVetoableChangeListener-java.beans.VetoableChangeListener-\" title=\"class or interface in javax.swing\">addVetoableChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#computeVisibleRect-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">computeVisibleRect</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#contains-int-int-\" title=\"class or interface in javax.swing\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#createToolTip--\" title=\"class or interface in javax.swing\">createToolTip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#disable--\" title=\"class or interface in javax.swing\">disable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#enable--\" title=\"class or interface in javax.swing\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-boolean-boolean-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-char-char-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-int-int-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#fireVetoableChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in javax.swing\">fireVetoableChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getActionForKeyStroke-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">getActionForKeyStroke</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getActionMap--\" title=\"class or interface in javax.swing\">getActionMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAlignmentX--\" title=\"class or interface in javax.swing\">getAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAlignmentY--\" title=\"class or interface in javax.swing\">getAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAncestorListeners--\" title=\"class or interface in javax.swing\">getAncestorListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAutoscrolls--\" title=\"class or interface in javax.swing\">getAutoscrolls</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBaseline-int-int-\" title=\"class or interface in javax.swing\">getBaseline</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBaselineResizeBehavior--\" title=\"class or interface in javax.swing\">getBaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBorder--\" title=\"class or interface in javax.swing\">getBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBounds-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getClientProperty-java.lang.Object-\" title=\"class or interface in javax.swing\">getClientProperty</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getComponentGraphics-java.awt.Graphics-\" title=\"class or interface in javax.swing\">getComponentGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getComponentPopupMenu--\" title=\"class or interface in javax.swing\">getComponentPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getConditionForKeyStroke-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">getConditionForKeyStroke</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getDebugGraphicsOptions--\" title=\"class or interface in javax.swing\">getDebugGraphicsOptions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getDefaultLocale--\" title=\"class or interface in javax.swing\">getDefaultLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getFontMetrics-java.awt.Font-\" title=\"class or interface in javax.swing\">getFontMetrics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getGraphics--\" title=\"class or interface in javax.swing\">getGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getHeight--\" title=\"class or interface in javax.swing\">getHeight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInheritsPopupMenu--\" title=\"class or interface in javax.swing\">getInheritsPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputMap--\" title=\"class or interface in javax.swing\">getInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputMap-int-\" title=\"class or interface in javax.swing\">getInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputVerifier--\" title=\"class or interface in javax.swing\">getInputVerifier</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInsets--\" title=\"class or interface in javax.swing\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInsets-java.awt.Insets-\" title=\"class or interface in javax.swing\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getListeners-java.lang.Class-\" title=\"class or interface in javax.swing\">getListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getLocation-java.awt.Point-\" title=\"class or interface in javax.swing\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getMaximumSize--\" title=\"class or interface in javax.swing\">getMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getMinimumSize--\" title=\"class or interface in javax.swing\">getMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getNextFocusableComponent--\" title=\"class or interface in javax.swing\">getNextFocusableComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getPopupLocation-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">getPopupLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getRegisteredKeyStrokes--\" title=\"class or interface in javax.swing\">getRegisteredKeyStrokes</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getRootPane--\" title=\"class or interface in javax.swing\">getRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getToolTipLocation-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">getToolTipLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getToolTipText--\" title=\"class or interface in javax.swing\">getToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getTopLevelAncestor--\" title=\"class or interface in javax.swing\">getTopLevelAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getTransferHandler--\" title=\"class or interface in javax.swing\">getTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVerifyInputWhenFocusTarget--\" title=\"class or interface in javax.swing\">getVerifyInputWhenFocusTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVetoableChangeListeners--\" title=\"class or interface in javax.swing\">getVetoableChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVisibleRect--\" title=\"class or interface in javax.swing\">getVisibleRect</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getWidth--\" title=\"class or interface in javax.swing\">getWidth</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getX--\" title=\"class or interface in javax.swing\">getX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getY--\" title=\"class or interface in javax.swing\">getY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#grabFocus--\" title=\"class or interface in javax.swing\">grabFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#hide--\" title=\"class or interface in javax.swing\">hide</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isDoubleBuffered--\" title=\"class or interface in javax.swing\">isDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isLightweightComponent-java.awt.Component-\" title=\"class or interface in javax.swing\">isLightweightComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isManagingFocus--\" title=\"class or interface in javax.swing\">isManagingFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isOpaque--\" title=\"class or interface in javax.swing\">isOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isOptimizedDrawingEnabled--\" title=\"class or interface in javax.swing\">isOptimizedDrawingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingForPrint--\" title=\"class or interface in javax.swing\">isPaintingForPrint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingOrigin--\" title=\"class or interface in javax.swing\">isPaintingOrigin</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingTile--\" title=\"class or interface in javax.swing\">isPaintingTile</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isRequestFocusEnabled--\" title=\"class or interface in javax.swing\">isRequestFocusEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paint-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintBorder-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintChildren-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintChildren</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintImmediately-int-int-int-int-\" title=\"class or interface in javax.swing\">paintImmediately</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintImmediately-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">paintImmediately</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#print-java.awt.Graphics-\" title=\"class or interface in javax.swing\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printAll-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printBorder-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printChildren-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printChildren</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printComponent-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processComponentKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in javax.swing\">processComponentKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processKeyBinding-javax.swing.KeyStroke-java.awt.event.KeyEvent-int-boolean-\" title=\"class or interface in javax.swing\">processKeyBinding</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in javax.swing\">processKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processMouseEvent-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">processMouseEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processMouseMotionEvent-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">processMouseMotionEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#putClientProperty-java.lang.Object-java.lang.Object-\" title=\"class or interface in javax.swing\">putClientProperty</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#registerKeyboardAction-java.awt.event.ActionListener-javax.swing.KeyStroke-int-\" title=\"class or interface in javax.swing\">registerKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#registerKeyboardAction-java.awt.event.ActionListener-java.lang.String-javax.swing.KeyStroke-int-\" title=\"class or interface in javax.swing\">registerKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#removeAncestorListener-javax.swing.event.AncestorListener-\" title=\"class or interface in javax.swing\">removeAncestorListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#removeVetoableChangeListener-java.beans.VetoableChangeListener-\" title=\"class or interface in javax.swing\">removeVetoableChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#repaint-long-int-int-int-int-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#repaint-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestDefaultFocus--\" title=\"class or interface in javax.swing\">requestDefaultFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocus--\" title=\"class or interface in javax.swing\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocus-boolean-\" title=\"class or interface in javax.swing\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocusInWindow--\" title=\"class or interface in javax.swing\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocusInWindow-boolean-\" title=\"class or interface in javax.swing\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#resetKeyboardActions--\" title=\"class or interface in javax.swing\">resetKeyboardActions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#reshape-int-int-int-int-\" title=\"class or interface in javax.swing\">reshape</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#revalidate--\" title=\"class or interface in javax.swing\">revalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setActionMap-javax.swing.ActionMap-\" title=\"class or interface in javax.swing\">setActionMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAlignmentX-float-\" title=\"class or interface in javax.swing\">setAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAlignmentY-float-\" title=\"class or interface in javax.swing\">setAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAutoscrolls-boolean-\" title=\"class or interface in javax.swing\">setAutoscrolls</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setBackground-java.awt.Color-\" title=\"class or interface in javax.swing\">setBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setBorder-javax.swing.border.Border-\" title=\"class or interface in javax.swing\">setBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setComponentPopupMenu-javax.swing.JPopupMenu-\" title=\"class or interface in javax.swing\">setComponentPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDebugGraphicsOptions-int-\" title=\"class or interface in javax.swing\">setDebugGraphicsOptions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDefaultLocale-java.util.Locale-\" title=\"class or interface in javax.swing\">setDefaultLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDoubleBuffered-boolean-\" title=\"class or interface in javax.swing\">setDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setEnabled-boolean-\" title=\"class or interface in javax.swing\">setEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setFocusTraversalKeys-int-java.util.Set-\" title=\"class or interface in javax.swing\">setFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setForeground-java.awt.Color-\" title=\"class or interface in javax.swing\">setForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInheritsPopupMenu-boolean-\" title=\"class or interface in javax.swing\">setInheritsPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInputMap-int-javax.swing.InputMap-\" title=\"class or interface in javax.swing\">setInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInputVerifier-javax.swing.InputVerifier-\" title=\"class or interface in javax.swing\">setInputVerifier</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setMaximumSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setMinimumSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setNextFocusableComponent-java.awt.Component-\" title=\"class or interface in javax.swing\">setNextFocusableComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setOpaque-boolean-\" title=\"class or interface in javax.swing\">setOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setPreferredSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setRequestFocusEnabled-boolean-\" title=\"class or interface in javax.swing\">setRequestFocusEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setToolTipText-java.lang.String-\" title=\"class or interface in javax.swing\">setToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setTransferHandler-javax.swing.TransferHandler-\" title=\"class or interface in javax.swing\">setTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setUI-javax.swing.plaf.ComponentUI-\" title=\"class or interface in javax.swing\">setUI</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setVerifyInputWhenFocusTarget-boolean-\" title=\"class or interface in javax.swing\">setVerifyInputWhenFocusTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setVisible-boolean-\" title=\"class or interface in javax.swing\">setVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#unregisterKeyboardAction-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">unregisterKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#update-java.awt.Graphics-\" title=\"class or interface in javax.swing\">update</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.lang.String-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">addContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addImpl-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">addImpl</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#applyComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">applyComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#areFocusTraversalKeysSet-int-\" title=\"class or interface in java.awt\">areFocusTraversalKeysSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#countComponents--\" title=\"class or interface in java.awt\">countComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#deliverEvent-java.awt.Event-\" title=\"class or interface in java.awt\">deliverEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#doLayout--\" title=\"class or interface in java.awt\">doLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-int-int-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponent-int-\" title=\"class or interface in java.awt\">getComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-int-int-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentCount--\" title=\"class or interface in java.awt\">getComponentCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponents--\" title=\"class or interface in java.awt\">getComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentZOrder-java.awt.Component-\" title=\"class or interface in java.awt\">getComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getContainerListeners--\" title=\"class or interface in java.awt\">getContainerListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalKeys-int-\" title=\"class or interface in java.awt\">getFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalPolicy--\" title=\"class or interface in java.awt\">getFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getLayout--\" title=\"class or interface in java.awt\">getLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMousePosition-boolean-\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#insets--\" title=\"class or interface in java.awt\">insets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#invalidate--\" title=\"class or interface in java.awt\">invalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isAncestorOf-java.awt.Component-\" title=\"class or interface in java.awt\">isAncestorOf</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot--\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot-java.awt.Container-\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicyProvider--\" title=\"class or interface in java.awt\">isFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicySet--\" title=\"class or interface in java.awt\">isFocusTraversalPolicySet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#layout--\" title=\"class or interface in java.awt\">layout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintStream-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintWriter-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#locate-int-int-\" title=\"class or interface in java.awt\">locate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#minimumSize--\" title=\"class or interface in java.awt\">minimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paintComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#preferredSize--\" title=\"class or interface in java.awt\">preferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#printComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">printComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processContainerEvent-java.awt.event.ContainerEvent-\" title=\"class or interface in java.awt\">processContainerEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">processEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#remove-java.awt.Component-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#remove-int-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeAll--\" title=\"class or interface in java.awt\">removeAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">removeContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setComponentZOrder-java.awt.Component-int-\" title=\"class or interface in java.awt\">setComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusCycleRoot-boolean-\" title=\"class or interface in java.awt\">setFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicy-java.awt.FocusTraversalPolicy-\" title=\"class or interface in java.awt\">setFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicyProvider-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setLayout-java.awt.LayoutManager-\" title=\"class or interface in java.awt\">setLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#transferFocusDownCycle--\" title=\"class or interface in java.awt\">transferFocusDownCycle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validate--\" title=\"class or interface in java.awt\">validate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validateTree--\" title=\"class or interface in java.awt\">validateTree</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#action-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">action</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#add-java.awt.PopupMenu-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">addComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">addFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">addHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">addHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">addKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">addMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">addMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">addMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#bounds--\" title=\"class or interface in java.awt\">bounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#coalesceEvents-java.awt.AWTEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">coalesceEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-java.awt.Point-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-java.awt.image.ImageProducer-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-int-int-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-java.awt.ImageCapabilities-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disableEvents-long-\" title=\"class or interface in java.awt\">disableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#dispatchEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">dispatchEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable-boolean-\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableEvents-long-\" title=\"class or interface in java.awt\">enableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableInputMethods-boolean-\" title=\"class or interface in java.awt\">enableInputMethods</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-byte-byte-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-double-double-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-float-float-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-long-long-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-short-short-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBackground--\" title=\"class or interface in java.awt\">getBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds--\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getColorModel--\" title=\"class or interface in java.awt\">getColorModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentListeners--\" title=\"class or interface in java.awt\">getComponentListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentOrientation--\" title=\"class or interface in java.awt\">getComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getCursor--\" title=\"class or interface in java.awt\">getCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getDropTarget--\" title=\"class or interface in java.awt\">getDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusCycleRootAncestor--\" title=\"class or interface in java.awt\">getFocusCycleRootAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusListeners--\" title=\"class or interface in java.awt\">getFocusListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusTraversalKeysEnabled--\" title=\"class or interface in java.awt\">getFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFont--\" title=\"class or interface in java.awt\">getFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getForeground--\" title=\"class or interface in java.awt\">getForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getGraphicsConfiguration--\" title=\"class or interface in java.awt\">getGraphicsConfiguration</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyBoundsListeners--\" title=\"class or interface in java.awt\">getHierarchyBoundsListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyListeners--\" title=\"class or interface in java.awt\">getHierarchyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getIgnoreRepaint--\" title=\"class or interface in java.awt\">getIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputContext--\" title=\"class or interface in java.awt\">getInputContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodListeners--\" title=\"class or interface in java.awt\">getInputMethodListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getKeyListeners--\" title=\"class or interface in java.awt\">getKeyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocale--\" title=\"class or interface in java.awt\">getLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation--\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocationOnScreen--\" title=\"class or interface in java.awt\">getLocationOnScreen</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseListeners--\" title=\"class or interface in java.awt\">getMouseListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseMotionListeners--\" title=\"class or interface in java.awt\">getMouseMotionListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMousePosition--\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseWheelListeners--\" title=\"class or interface in java.awt\">getMouseWheelListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getName--\" title=\"class or interface in java.awt\">getName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getParent--\" title=\"class or interface in java.awt\">getParent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPeer--\" title=\"class or interface in java.awt\">getPeer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners--\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners-java.lang.String-\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize--\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getToolkit--\" title=\"class or interface in java.awt\">getToolkit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getTreeLock--\" title=\"class or interface in java.awt\">getTreeLock</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#gotFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">gotFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#handleEvent-java.awt.Event-\" title=\"class or interface in java.awt\">handleEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hasFocus--\" title=\"class or interface in java.awt\">hasFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#imageUpdate-java.awt.Image-int-int-int-int-int-\" title=\"class or interface in java.awt\">imageUpdate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#inside-int-int-\" title=\"class or interface in java.awt\">inside</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isBackgroundSet--\" title=\"class or interface in java.awt\">isBackgroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isCursorSet--\" title=\"class or interface in java.awt\">isCursorSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDisplayable--\" title=\"class or interface in java.awt\">isDisplayable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isEnabled--\" title=\"class or interface in java.awt\">isEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusable--\" title=\"class or interface in java.awt\">isFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusOwner--\" title=\"class or interface in java.awt\">isFocusOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusTraversable--\" title=\"class or interface in java.awt\">isFocusTraversable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFontSet--\" title=\"class or interface in java.awt\">isFontSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isForegroundSet--\" title=\"class or interface in java.awt\">isForegroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isLightweight--\" title=\"class or interface in java.awt\">isLightweight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMaximumSizeSet--\" title=\"class or interface in java.awt\">isMaximumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMinimumSizeSet--\" title=\"class or interface in java.awt\">isMinimumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isPreferredSizeSet--\" title=\"class or interface in java.awt\">isPreferredSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isShowing--\" title=\"class or interface in java.awt\">isShowing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isValid--\" title=\"class or interface in java.awt\">isValid</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isVisible--\" title=\"class or interface in java.awt\">isVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyDown-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyUp-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list--\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintStream-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintWriter-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#location--\" title=\"class or interface in java.awt\">location</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#lostFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">lostFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDown-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDrag-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDrag</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseEnter-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseEnter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseExit-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseExit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseMove-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseMove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseUp-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#move-int-int-\" title=\"class or interface in java.awt\">move</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#nextFocus--\" title=\"class or interface in java.awt\">nextFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#paintAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#postEvent-java.awt.Event-\" title=\"class or interface in java.awt\">postEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processComponentEvent-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt\">processComponentEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processFocusEvent-java.awt.event.FocusEvent-\" title=\"class or interface in java.awt\">processFocusEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyBoundsEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyBoundsEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseWheelEvent-java.awt.event.MouseWheelEvent-\" title=\"class or interface in java.awt\">processMouseWheelEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#remove-java.awt.MenuComponent-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">removeComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">removeFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">removeHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">removeHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">removeInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">removeKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">removeMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">removeMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">removeMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint--\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-int-int-int-int-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-long-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#resize-java.awt.Dimension-\" title=\"class or interface in java.awt\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#resize-int-int-\" title=\"class or interface in java.awt\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-int-int-int-int-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setCursor-java.awt.Cursor-\" title=\"class or interface in java.awt\">setCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setDropTarget-java.awt.dnd.DropTarget-\" title=\"class or interface in java.awt\">setDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusable-boolean-\" title=\"class or interface in java.awt\">setFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusTraversalKeysEnabled-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setIgnoreRepaint-boolean-\" title=\"class or interface in java.awt\">setIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocale-java.util.Locale-\" title=\"class or interface in java.awt\">setLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-int-int-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-java.awt.Point-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setName-java.lang.String-\" title=\"class or interface in java.awt\">setName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-int-int-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show--\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show-boolean-\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#size--\" title=\"class or interface in java.awt\">size</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#toString--\" title=\"class or interface in java.awt\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocus--\" title=\"class or interface in java.awt\">transferFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusBackward--\" title=\"class or interface in java.awt\">transferFocusBackward</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusUpCycle--\" title=\"class or interface in java.awt\">transferFocusUpCycle</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"JPlaceholderTextField--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>JPlaceholderTextField</h4>\n<pre>public&nbsp;JPlaceholderTextField()</pre>\n</li>\n</ul>\n<a name=\"JPlaceholderTextField-javax.swing.text.Document-java.lang.String-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>JPlaceholderTextField</h4>\n<pre>public&nbsp;JPlaceholderTextField(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/Document.html?is-external=true\" title=\"class or interface in javax.swing.text\">Document</a>&nbsp;pDoc,\n                             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;pText,\n                             int&nbsp;pColumns)</pre>\n</li>\n</ul>\n<a name=\"JPlaceholderTextField-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>JPlaceholderTextField</h4>\n<pre>public&nbsp;JPlaceholderTextField(int&nbsp;pColumns)</pre>\n</li>\n</ul>\n<a name=\"JPlaceholderTextField-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>JPlaceholderTextField</h4>\n<pre>public&nbsp;JPlaceholderTextField(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;pText)</pre>\n</li>\n</ul>\n<a name=\"JPlaceholderTextField-java.lang.String-int-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>JPlaceholderTextField</h4>\n<pre>public&nbsp;JPlaceholderTextField(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;pText,\n                             int&nbsp;pColumns)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"getPlaceholder--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getPlaceholder</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getPlaceholder()</pre>\n</li>\n</ul>\n<a name=\"getValueAsDouble--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getValueAsDouble</h4>\n<pre>public&nbsp;double&nbsp;getValueAsDouble()</pre>\n</li>\n</ul>\n<a name=\"getValueAsInt--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getValueAsInt</h4>\n<pre>public&nbsp;int&nbsp;getValueAsInt()</pre>\n</li>\n</ul>\n<a name=\"getValueAsInteger--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getValueAsInteger</h4>\n<pre>public&nbsp;int&nbsp;getValueAsInteger()</pre>\n</li>\n</ul>\n<a name=\"paintComponent-java.awt.Graphics-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>paintComponent</h4>\n<pre>protected&nbsp;void&nbsp;paintComponent(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;pG)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintComponent-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintComponent</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setPlaceholder-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setPlaceholder</h4>\n<pre>public&nbsp;void&nbsp;setPlaceholder(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n</li>\n</ul>\n<a name=\"setValue-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setValue</h4>\n<pre>public&nbsp;void&nbsp;setValue(double&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"setValue-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setValue</h4>\n<pre>public&nbsp;void&nbsp;setValue(int&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"setValue-long-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setValue</h4>\n<pre>public&nbsp;void&nbsp;setValue(long&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"valueIsDouble--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>valueIsDouble</h4>\n<pre>public&nbsp;boolean&nbsp;valueIsDouble()</pre>\n</li>\n</ul>\n<a name=\"valueIsInt--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>valueIsInt</h4>\n<pre>public&nbsp;boolean&nbsp;valueIsInt()</pre>\n</li>\n</ul>\n<a name=\"valueIsInteger--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>valueIsInteger</h4>\n<pre>public&nbsp;boolean&nbsp;valueIsInteger()</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/gui/JListOptionPane.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/gui/JStringList.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/gui/JPlaceholderTextField.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JPlaceholderTextField.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JTextField\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.javax.swing.JTextField\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/gui/JStringList.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>JStringList</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"JStringList\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":10,\"i16\":10,\"i17\":10,\"i18\":10,\"i19\":10,\"i20\":10,\"i21\":10,\"i22\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/gui/JPlaceholderTextField.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/gui/TableLayout.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/gui/JStringList.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JStringList.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JList\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.javax.swing.JList\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.gui</div>\n<h2 title=\"Class JStringList\" class=\"title\">Class JStringList</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Component</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Container</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JComponent</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JList</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.gui.JStringList</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Scrollable.html?is-external=true\" title=\"class or interface in javax.swing\">Scrollable</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">JStringList</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true\" title=\"class or interface in javax.swing\">JList</a></pre>\n<div class=\"block\">Represents a list of strings with optional colors.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#acm.gui.JStringList\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JList\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true\" title=\"class or interface in javax.swing\">JList</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.AccessibleJList.html?is-external=true\" title=\"class or interface in javax.swing\">JList.AccessibleJList</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.DropLocation.html?is-external=true\" title=\"class or interface in javax.swing\">JList.DropLocation</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.AccessibleJComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent.AccessibleJComponent</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.AccessibleAWTContainer.html?is-external=true\" title=\"class or interface in java.awt\">Container.AccessibleAWTContainer</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.AccessibleAWTComponent.html?is-external=true\" title=\"class or interface in java.awt\">Component.AccessibleAWTComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BaselineResizeBehavior.html?is-external=true\" title=\"class or interface in java.awt\">Component.BaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BltBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.BltBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.FlipBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.FlipBufferStrategy</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.JList\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true\" title=\"class or interface in javax.swing\">JList</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#HORIZONTAL_WRAP\" title=\"class or interface in javax.swing\">HORIZONTAL_WRAP</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#VERTICAL\" title=\"class or interface in javax.swing\">VERTICAL</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#VERTICAL_WRAP\" title=\"class or interface in javax.swing\">VERTICAL_WRAP</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#listenerList\" title=\"class or interface in javax.swing\">listenerList</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#TOOL_TIP_TEXT_KEY\" title=\"class or interface in javax.swing\">TOOL_TIP_TEXT_KEY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#ui\" title=\"class or interface in javax.swing\">ui</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#UNDEFINED_CONDITION\" title=\"class or interface in javax.swing\">UNDEFINED_CONDITION</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_ANCESTOR_OF_FOCUSED_COMPONENT\" title=\"class or interface in javax.swing\">WHEN_ANCESTOR_OF_FOCUSED_COMPONENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_FOCUSED\" title=\"class or interface in javax.swing\">WHEN_FOCUSED</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_IN_FOCUSED_WINDOW\" title=\"class or interface in javax.swing\">WHEN_IN_FOCUSED_WINDOW</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#accessibleContext\" title=\"class or interface in java.awt\">accessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#BOTTOM_ALIGNMENT\" title=\"class or interface in java.awt\">BOTTOM_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#CENTER_ALIGNMENT\" title=\"class or interface in java.awt\">CENTER_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#LEFT_ALIGNMENT\" title=\"class or interface in java.awt\">LEFT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#RIGHT_ALIGNMENT\" title=\"class or interface in java.awt\">RIGHT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#TOP_ALIGNMENT\" title=\"class or interface in java.awt\">TOP_ALIGNMENT</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.image.ImageObserver\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ABORT\" title=\"class or interface in java.awt.image\">ABORT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ALLBITS\" title=\"class or interface in java.awt.image\">ALLBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ERROR\" title=\"class or interface in java.awt.image\">ERROR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#FRAMEBITS\" title=\"class or interface in java.awt.image\">FRAMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#HEIGHT\" title=\"class or interface in java.awt.image\">HEIGHT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#PROPERTIES\" title=\"class or interface in java.awt.image\">PROPERTIES</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#SOMEBITS\" title=\"class or interface in java.awt.image\">SOMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#WIDTH\" title=\"class or interface in java.awt.image\">WIDTH</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JStringList.html#JStringList--\">JStringList</a></span>()</code>\n<div class=\"block\">Constructs a new empty list of strings.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JStringList.html#addActionListener-java.awt.event.ActionListener-\">addActionListener</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener)</code>\n<div class=\"block\">Attaches the given listener to this list of strings so that it will be\n notified when the user clicks on items in the list.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JStringList.html#addItem-java.lang.String-\">addItem</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>\n<div class=\"block\">Appends the given string to the end of this list, using the default black color.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JStringList.html#addItem-java.lang.String-java.awt.Color-\">addItem</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s,\n       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>\n<div class=\"block\">Appends the given string to the end of this list, using the given color.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JStringList.html#addItems-java.lang.String:A-\">addItems</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;items)</code>\n<div class=\"block\">Adds all of the items from the given array to this list, in black.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JStringList.html#addItems-java.lang.String:A-java.awt.Color:A-\">addItems</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;items,\n        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>[]&nbsp;colors)</code>\n<div class=\"block\">Adds all of the items from the given array to this list, in the given colors.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JStringList.html#clear--\">clear</a></span>()</code>\n<div class=\"block\">Removes all strings from this list.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JStringList.html#getActionCommand--\">getActionCommand</a></span>()</code>\n<div class=\"block\">Returns the current action command of this list, which is the string that\n will occur when action events are performed on this list.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JStringList.html#getActionListeners--\">getActionListeners</a></span>()</code>\n<div class=\"block\">Returns an array of all action listeners currently listening to this list.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JStringList.html#getColor-int-\">getColor</a></span>(int&nbsp;index)</code>\n<div class=\"block\">Returns the color of the item in the list at the given index.</div>\n</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JStringList.html#getItem-int-\">getItem</a></span>(int&nbsp;index)</code>\n<div class=\"block\">Returns the text of the item in the list at the given index.</div>\n</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JStringList.html#getItemCount--\">getItemCount</a></span>()</code>\n<div class=\"block\">Returns the number of items in the list.</div>\n</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/DefaultListModel.html?is-external=true\" title=\"class or interface in javax.swing\">DefaultListModel</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JStringList.html#getModel--\">getModel</a></span>()</code>\n<div class=\"block\">Returns a reference to the underlying data model of this list.</div>\n</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JStringList.html#getSelectedValue--\">getSelectedValue</a></span>()</code>\n<div class=\"block\">Returns the string that is currently selected in this list.</div>\n</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JStringList.html#getSelectedValueColor--\">getSelectedValueColor</a></span>()</code>\n<div class=\"block\">Returns the color of the string that is currently selected in this list.</div>\n</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JStringList.html#removeActionListener-java.awt.event.ActionListener-\">removeActionListener</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener)</code>\n<div class=\"block\">Detaches the given listener so that it will not be notified of future\n action events that occur in this list.</div>\n</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JStringList.html#removeItem-int-\">removeItem</a></span>(int&nbsp;index)</code>\n<div class=\"block\">Removes the element at the given index from this list, shifting others\n down an index if necessary.</div>\n</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JStringList.html#removeItem-java.lang.String-\">removeItem</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>\n<div class=\"block\">Removes the first occurrence of the given string element at the given index from this list, shifting others\n down an index if necessary.</div>\n</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JStringList.html#setActionCommand-java.lang.String-\">setActionCommand</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actionCommand)</code>\n<div class=\"block\">Sets the current action command of this list, which is the string that\n will occur when action events are performed on this list.</div>\n</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JStringList.html#setColor-int-java.awt.Color-\">setColor</a></span>(int&nbsp;index,\n        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>\n<div class=\"block\">Sets the color of the item at the given index to the given color.</div>\n</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JStringList.html#setColors-java.awt.Color:A-\">setColors</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>[]&nbsp;colors)</code>\n<div class=\"block\">Sets the items of this list to use the colors from the given array.</div>\n</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JStringList.html#setItem-int-java.lang.String-\">setItem</a></span>(int&nbsp;index,\n       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>\n<div class=\"block\">Sets the item at the given index to store the given text.</div>\n</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JStringList.html#setItem-int-java.lang.String-java.awt.Color-\">setItem</a></span>(int&nbsp;index,\n       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s,\n       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>\n<div class=\"block\">Sets the item at the given index to store the given text in the given color.</div>\n</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/JStringList.html#setItems-java.lang.String:A-java.awt.Color:A-\">setItems</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;items,\n        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>[]&nbsp;colors)</code>\n<div class=\"block\">Sets the list contents to be the given items in the given colors.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JList\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true\" title=\"class or interface in javax.swing\">JList</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#addListSelectionListener-javax.swing.event.ListSelectionListener-\" title=\"class or interface in javax.swing\">addListSelectionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#addSelectionInterval-int-int-\" title=\"class or interface in javax.swing\">addSelectionInterval</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#clearSelection--\" title=\"class or interface in javax.swing\">clearSelection</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#createSelectionModel--\" title=\"class or interface in javax.swing\">createSelectionModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#ensureIndexIsVisible-int-\" title=\"class or interface in javax.swing\">ensureIndexIsVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#fireSelectionValueChanged-int-int-boolean-\" title=\"class or interface in javax.swing\">fireSelectionValueChanged</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#getAccessibleContext--\" title=\"class or interface in javax.swing\">getAccessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#getAnchorSelectionIndex--\" title=\"class or interface in javax.swing\">getAnchorSelectionIndex</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#getCellBounds-int-int-\" title=\"class or interface in javax.swing\">getCellBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#getCellRenderer--\" title=\"class or interface in javax.swing\">getCellRenderer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#getDragEnabled--\" title=\"class or interface in javax.swing\">getDragEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#getDropLocation--\" title=\"class or interface in javax.swing\">getDropLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#getDropMode--\" title=\"class or interface in javax.swing\">getDropMode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#getFirstVisibleIndex--\" title=\"class or interface in javax.swing\">getFirstVisibleIndex</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#getFixedCellHeight--\" title=\"class or interface in javax.swing\">getFixedCellHeight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#getFixedCellWidth--\" title=\"class or interface in javax.swing\">getFixedCellWidth</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#getLastVisibleIndex--\" title=\"class or interface in javax.swing\">getLastVisibleIndex</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#getLayoutOrientation--\" title=\"class or interface in javax.swing\">getLayoutOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#getLeadSelectionIndex--\" title=\"class or interface in javax.swing\">getLeadSelectionIndex</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#getListSelectionListeners--\" title=\"class or interface in javax.swing\">getListSelectionListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#getMaxSelectionIndex--\" title=\"class or interface in javax.swing\">getMaxSelectionIndex</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#getMinSelectionIndex--\" title=\"class or interface in javax.swing\">getMinSelectionIndex</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#getNextMatch-java.lang.String-int-javax.swing.text.Position.Bias-\" title=\"class or interface in javax.swing\">getNextMatch</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#getPreferredScrollableViewportSize--\" title=\"class or interface in javax.swing\">getPreferredScrollableViewportSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#getPrototypeCellValue--\" title=\"class or interface in javax.swing\">getPrototypeCellValue</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#getScrollableBlockIncrement-java.awt.Rectangle-int-int-\" title=\"class or interface in javax.swing\">getScrollableBlockIncrement</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#getScrollableTracksViewportHeight--\" title=\"class or interface in javax.swing\">getScrollableTracksViewportHeight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#getScrollableTracksViewportWidth--\" title=\"class or interface in javax.swing\">getScrollableTracksViewportWidth</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#getScrollableUnitIncrement-java.awt.Rectangle-int-int-\" title=\"class or interface in javax.swing\">getScrollableUnitIncrement</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#getSelectedIndex--\" title=\"class or interface in javax.swing\">getSelectedIndex</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#getSelectedIndices--\" title=\"class or interface in javax.swing\">getSelectedIndices</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#getSelectedValues--\" title=\"class or interface in javax.swing\">getSelectedValues</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#getSelectedValuesList--\" title=\"class or interface in javax.swing\">getSelectedValuesList</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#getSelectionBackground--\" title=\"class or interface in javax.swing\">getSelectionBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#getSelectionForeground--\" title=\"class or interface in javax.swing\">getSelectionForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#getSelectionMode--\" title=\"class or interface in javax.swing\">getSelectionMode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#getSelectionModel--\" title=\"class or interface in javax.swing\">getSelectionModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#getToolTipText-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">getToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#getUI--\" title=\"class or interface in javax.swing\">getUI</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#getUIClassID--\" title=\"class or interface in javax.swing\">getUIClassID</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#getValueIsAdjusting--\" title=\"class or interface in javax.swing\">getValueIsAdjusting</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#getVisibleRowCount--\" title=\"class or interface in javax.swing\">getVisibleRowCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#indexToLocation-int-\" title=\"class or interface in javax.swing\">indexToLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#isSelectedIndex-int-\" title=\"class or interface in javax.swing\">isSelectedIndex</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#isSelectionEmpty--\" title=\"class or interface in javax.swing\">isSelectionEmpty</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#locationToIndex-java.awt.Point-\" title=\"class or interface in javax.swing\">locationToIndex</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#paramString--\" title=\"class or interface in javax.swing\">paramString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#removeListSelectionListener-javax.swing.event.ListSelectionListener-\" title=\"class or interface in javax.swing\">removeListSelectionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#removeSelectionInterval-int-int-\" title=\"class or interface in javax.swing\">removeSelectionInterval</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#setCellRenderer-javax.swing.ListCellRenderer-\" title=\"class or interface in javax.swing\">setCellRenderer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#setDragEnabled-boolean-\" title=\"class or interface in javax.swing\">setDragEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#setDropMode-javax.swing.DropMode-\" title=\"class or interface in javax.swing\">setDropMode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#setFixedCellHeight-int-\" title=\"class or interface in javax.swing\">setFixedCellHeight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#setFixedCellWidth-int-\" title=\"class or interface in javax.swing\">setFixedCellWidth</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#setLayoutOrientation-int-\" title=\"class or interface in javax.swing\">setLayoutOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#setListData-E:A-\" title=\"class or interface in javax.swing\">setListData</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#setListData-java.util.Vector-\" title=\"class or interface in javax.swing\">setListData</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#setModel-javax.swing.ListModel-\" title=\"class or interface in javax.swing\">setModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#setPrototypeCellValue-E-\" title=\"class or interface in javax.swing\">setPrototypeCellValue</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#setSelectedIndex-int-\" title=\"class or interface in javax.swing\">setSelectedIndex</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#setSelectedIndices-int:A-\" title=\"class or interface in javax.swing\">setSelectedIndices</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#setSelectedValue-java.lang.Object-boolean-\" title=\"class or interface in javax.swing\">setSelectedValue</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#setSelectionBackground-java.awt.Color-\" title=\"class or interface in javax.swing\">setSelectionBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#setSelectionForeground-java.awt.Color-\" title=\"class or interface in javax.swing\">setSelectionForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#setSelectionInterval-int-int-\" title=\"class or interface in javax.swing\">setSelectionInterval</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#setSelectionMode-int-\" title=\"class or interface in javax.swing\">setSelectionMode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#setSelectionModel-javax.swing.ListSelectionModel-\" title=\"class or interface in javax.swing\">setSelectionModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#setUI-javax.swing.plaf.ListUI-\" title=\"class or interface in javax.swing\">setUI</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#setValueIsAdjusting-boolean-\" title=\"class or interface in javax.swing\">setValueIsAdjusting</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#setVisibleRowCount-int-\" title=\"class or interface in javax.swing\">setVisibleRowCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#updateUI--\" title=\"class or interface in javax.swing\">updateUI</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addAncestorListener-javax.swing.event.AncestorListener-\" title=\"class or interface in javax.swing\">addAncestorListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addNotify--\" title=\"class or interface in javax.swing\">addNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addVetoableChangeListener-java.beans.VetoableChangeListener-\" title=\"class or interface in javax.swing\">addVetoableChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#computeVisibleRect-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">computeVisibleRect</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#contains-int-int-\" title=\"class or interface in javax.swing\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#createToolTip--\" title=\"class or interface in javax.swing\">createToolTip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#disable--\" title=\"class or interface in javax.swing\">disable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#enable--\" title=\"class or interface in javax.swing\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-boolean-boolean-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-char-char-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-int-int-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#fireVetoableChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in javax.swing\">fireVetoableChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getActionForKeyStroke-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">getActionForKeyStroke</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getActionMap--\" title=\"class or interface in javax.swing\">getActionMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAlignmentX--\" title=\"class or interface in javax.swing\">getAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAlignmentY--\" title=\"class or interface in javax.swing\">getAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAncestorListeners--\" title=\"class or interface in javax.swing\">getAncestorListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAutoscrolls--\" title=\"class or interface in javax.swing\">getAutoscrolls</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBaseline-int-int-\" title=\"class or interface in javax.swing\">getBaseline</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBaselineResizeBehavior--\" title=\"class or interface in javax.swing\">getBaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBorder--\" title=\"class or interface in javax.swing\">getBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBounds-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getClientProperty-java.lang.Object-\" title=\"class or interface in javax.swing\">getClientProperty</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getComponentGraphics-java.awt.Graphics-\" title=\"class or interface in javax.swing\">getComponentGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getComponentPopupMenu--\" title=\"class or interface in javax.swing\">getComponentPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getConditionForKeyStroke-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">getConditionForKeyStroke</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getDebugGraphicsOptions--\" title=\"class or interface in javax.swing\">getDebugGraphicsOptions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getDefaultLocale--\" title=\"class or interface in javax.swing\">getDefaultLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getFontMetrics-java.awt.Font-\" title=\"class or interface in javax.swing\">getFontMetrics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getGraphics--\" title=\"class or interface in javax.swing\">getGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getHeight--\" title=\"class or interface in javax.swing\">getHeight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInheritsPopupMenu--\" title=\"class or interface in javax.swing\">getInheritsPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputMap--\" title=\"class or interface in javax.swing\">getInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputMap-int-\" title=\"class or interface in javax.swing\">getInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputVerifier--\" title=\"class or interface in javax.swing\">getInputVerifier</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInsets--\" title=\"class or interface in javax.swing\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInsets-java.awt.Insets-\" title=\"class or interface in javax.swing\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getListeners-java.lang.Class-\" title=\"class or interface in javax.swing\">getListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getLocation-java.awt.Point-\" title=\"class or interface in javax.swing\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getMaximumSize--\" title=\"class or interface in javax.swing\">getMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getMinimumSize--\" title=\"class or interface in javax.swing\">getMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getNextFocusableComponent--\" title=\"class or interface in javax.swing\">getNextFocusableComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getPopupLocation-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">getPopupLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getPreferredSize--\" title=\"class or interface in javax.swing\">getPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getRegisteredKeyStrokes--\" title=\"class or interface in javax.swing\">getRegisteredKeyStrokes</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getRootPane--\" title=\"class or interface in javax.swing\">getRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getToolTipLocation-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">getToolTipLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getToolTipText--\" title=\"class or interface in javax.swing\">getToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getTopLevelAncestor--\" title=\"class or interface in javax.swing\">getTopLevelAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getTransferHandler--\" title=\"class or interface in javax.swing\">getTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVerifyInputWhenFocusTarget--\" title=\"class or interface in javax.swing\">getVerifyInputWhenFocusTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVetoableChangeListeners--\" title=\"class or interface in javax.swing\">getVetoableChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVisibleRect--\" title=\"class or interface in javax.swing\">getVisibleRect</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getWidth--\" title=\"class or interface in javax.swing\">getWidth</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getX--\" title=\"class or interface in javax.swing\">getX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getY--\" title=\"class or interface in javax.swing\">getY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#grabFocus--\" title=\"class or interface in javax.swing\">grabFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#hide--\" title=\"class or interface in javax.swing\">hide</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isDoubleBuffered--\" title=\"class or interface in javax.swing\">isDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isLightweightComponent-java.awt.Component-\" title=\"class or interface in javax.swing\">isLightweightComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isManagingFocus--\" title=\"class or interface in javax.swing\">isManagingFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isOpaque--\" title=\"class or interface in javax.swing\">isOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isOptimizedDrawingEnabled--\" title=\"class or interface in javax.swing\">isOptimizedDrawingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingForPrint--\" title=\"class or interface in javax.swing\">isPaintingForPrint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingOrigin--\" title=\"class or interface in javax.swing\">isPaintingOrigin</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingTile--\" title=\"class or interface in javax.swing\">isPaintingTile</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isRequestFocusEnabled--\" title=\"class or interface in javax.swing\">isRequestFocusEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isValidateRoot--\" title=\"class or interface in javax.swing\">isValidateRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paint-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintBorder-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintChildren-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintChildren</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintComponent-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintImmediately-int-int-int-int-\" title=\"class or interface in javax.swing\">paintImmediately</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintImmediately-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">paintImmediately</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#print-java.awt.Graphics-\" title=\"class or interface in javax.swing\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printAll-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printBorder-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printChildren-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printChildren</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printComponent-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processComponentKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in javax.swing\">processComponentKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processKeyBinding-javax.swing.KeyStroke-java.awt.event.KeyEvent-int-boolean-\" title=\"class or interface in javax.swing\">processKeyBinding</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in javax.swing\">processKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processMouseEvent-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">processMouseEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processMouseMotionEvent-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">processMouseMotionEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#putClientProperty-java.lang.Object-java.lang.Object-\" title=\"class or interface in javax.swing\">putClientProperty</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#registerKeyboardAction-java.awt.event.ActionListener-javax.swing.KeyStroke-int-\" title=\"class or interface in javax.swing\">registerKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#registerKeyboardAction-java.awt.event.ActionListener-java.lang.String-javax.swing.KeyStroke-int-\" title=\"class or interface in javax.swing\">registerKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#removeAncestorListener-javax.swing.event.AncestorListener-\" title=\"class or interface in javax.swing\">removeAncestorListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#removeNotify--\" title=\"class or interface in javax.swing\">removeNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#removeVetoableChangeListener-java.beans.VetoableChangeListener-\" title=\"class or interface in javax.swing\">removeVetoableChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#repaint-long-int-int-int-int-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#repaint-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestDefaultFocus--\" title=\"class or interface in javax.swing\">requestDefaultFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocus--\" title=\"class or interface in javax.swing\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocus-boolean-\" title=\"class or interface in javax.swing\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocusInWindow--\" title=\"class or interface in javax.swing\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocusInWindow-boolean-\" title=\"class or interface in javax.swing\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#resetKeyboardActions--\" title=\"class or interface in javax.swing\">resetKeyboardActions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#reshape-int-int-int-int-\" title=\"class or interface in javax.swing\">reshape</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#revalidate--\" title=\"class or interface in javax.swing\">revalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#scrollRectToVisible-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">scrollRectToVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setActionMap-javax.swing.ActionMap-\" title=\"class or interface in javax.swing\">setActionMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAlignmentX-float-\" title=\"class or interface in javax.swing\">setAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAlignmentY-float-\" title=\"class or interface in javax.swing\">setAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAutoscrolls-boolean-\" title=\"class or interface in javax.swing\">setAutoscrolls</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setBackground-java.awt.Color-\" title=\"class or interface in javax.swing\">setBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setBorder-javax.swing.border.Border-\" title=\"class or interface in javax.swing\">setBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setComponentPopupMenu-javax.swing.JPopupMenu-\" title=\"class or interface in javax.swing\">setComponentPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDebugGraphicsOptions-int-\" title=\"class or interface in javax.swing\">setDebugGraphicsOptions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDefaultLocale-java.util.Locale-\" title=\"class or interface in javax.swing\">setDefaultLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDoubleBuffered-boolean-\" title=\"class or interface in javax.swing\">setDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setEnabled-boolean-\" title=\"class or interface in javax.swing\">setEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setFocusTraversalKeys-int-java.util.Set-\" title=\"class or interface in javax.swing\">setFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setFont-java.awt.Font-\" title=\"class or interface in javax.swing\">setFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setForeground-java.awt.Color-\" title=\"class or interface in javax.swing\">setForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInheritsPopupMenu-boolean-\" title=\"class or interface in javax.swing\">setInheritsPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInputMap-int-javax.swing.InputMap-\" title=\"class or interface in javax.swing\">setInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInputVerifier-javax.swing.InputVerifier-\" title=\"class or interface in javax.swing\">setInputVerifier</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setMaximumSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setMinimumSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setNextFocusableComponent-java.awt.Component-\" title=\"class or interface in javax.swing\">setNextFocusableComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setOpaque-boolean-\" title=\"class or interface in javax.swing\">setOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setPreferredSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setRequestFocusEnabled-boolean-\" title=\"class or interface in javax.swing\">setRequestFocusEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setToolTipText-java.lang.String-\" title=\"class or interface in javax.swing\">setToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setTransferHandler-javax.swing.TransferHandler-\" title=\"class or interface in javax.swing\">setTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setUI-javax.swing.plaf.ComponentUI-\" title=\"class or interface in javax.swing\">setUI</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setVerifyInputWhenFocusTarget-boolean-\" title=\"class or interface in javax.swing\">setVerifyInputWhenFocusTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setVisible-boolean-\" title=\"class or interface in javax.swing\">setVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#unregisterKeyboardAction-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">unregisterKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#update-java.awt.Graphics-\" title=\"class or interface in javax.swing\">update</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.lang.String-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">addContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addImpl-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">addImpl</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#applyComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">applyComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#areFocusTraversalKeysSet-int-\" title=\"class or interface in java.awt\">areFocusTraversalKeysSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#countComponents--\" title=\"class or interface in java.awt\">countComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#deliverEvent-java.awt.Event-\" title=\"class or interface in java.awt\">deliverEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#doLayout--\" title=\"class or interface in java.awt\">doLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-int-int-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponent-int-\" title=\"class or interface in java.awt\">getComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-int-int-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentCount--\" title=\"class or interface in java.awt\">getComponentCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponents--\" title=\"class or interface in java.awt\">getComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentZOrder-java.awt.Component-\" title=\"class or interface in java.awt\">getComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getContainerListeners--\" title=\"class or interface in java.awt\">getContainerListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalKeys-int-\" title=\"class or interface in java.awt\">getFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalPolicy--\" title=\"class or interface in java.awt\">getFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getLayout--\" title=\"class or interface in java.awt\">getLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMousePosition-boolean-\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#insets--\" title=\"class or interface in java.awt\">insets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#invalidate--\" title=\"class or interface in java.awt\">invalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isAncestorOf-java.awt.Component-\" title=\"class or interface in java.awt\">isAncestorOf</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot--\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot-java.awt.Container-\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicyProvider--\" title=\"class or interface in java.awt\">isFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicySet--\" title=\"class or interface in java.awt\">isFocusTraversalPolicySet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#layout--\" title=\"class or interface in java.awt\">layout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintStream-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintWriter-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#locate-int-int-\" title=\"class or interface in java.awt\">locate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#minimumSize--\" title=\"class or interface in java.awt\">minimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paintComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#preferredSize--\" title=\"class or interface in java.awt\">preferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#printComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">printComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processContainerEvent-java.awt.event.ContainerEvent-\" title=\"class or interface in java.awt\">processContainerEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">processEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#remove-java.awt.Component-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#remove-int-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeAll--\" title=\"class or interface in java.awt\">removeAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">removeContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setComponentZOrder-java.awt.Component-int-\" title=\"class or interface in java.awt\">setComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusCycleRoot-boolean-\" title=\"class or interface in java.awt\">setFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicy-java.awt.FocusTraversalPolicy-\" title=\"class or interface in java.awt\">setFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicyProvider-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setLayout-java.awt.LayoutManager-\" title=\"class or interface in java.awt\">setLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#transferFocusDownCycle--\" title=\"class or interface in java.awt\">transferFocusDownCycle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validate--\" title=\"class or interface in java.awt\">validate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validateTree--\" title=\"class or interface in java.awt\">validateTree</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#action-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">action</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#add-java.awt.PopupMenu-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">addComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">addFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">addHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">addHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">addInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">addKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">addMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">addMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">addMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#bounds--\" title=\"class or interface in java.awt\">bounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#coalesceEvents-java.awt.AWTEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">coalesceEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-java.awt.Point-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-java.awt.image.ImageProducer-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-int-int-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-java.awt.ImageCapabilities-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disableEvents-long-\" title=\"class or interface in java.awt\">disableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#dispatchEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">dispatchEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable-boolean-\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableEvents-long-\" title=\"class or interface in java.awt\">enableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableInputMethods-boolean-\" title=\"class or interface in java.awt\">enableInputMethods</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-byte-byte-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-double-double-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-float-float-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-long-long-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-short-short-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBackground--\" title=\"class or interface in java.awt\">getBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds--\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getColorModel--\" title=\"class or interface in java.awt\">getColorModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentListeners--\" title=\"class or interface in java.awt\">getComponentListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentOrientation--\" title=\"class or interface in java.awt\">getComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getCursor--\" title=\"class or interface in java.awt\">getCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getDropTarget--\" title=\"class or interface in java.awt\">getDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusCycleRootAncestor--\" title=\"class or interface in java.awt\">getFocusCycleRootAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusListeners--\" title=\"class or interface in java.awt\">getFocusListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusTraversalKeysEnabled--\" title=\"class or interface in java.awt\">getFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFont--\" title=\"class or interface in java.awt\">getFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getForeground--\" title=\"class or interface in java.awt\">getForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getGraphicsConfiguration--\" title=\"class or interface in java.awt\">getGraphicsConfiguration</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyBoundsListeners--\" title=\"class or interface in java.awt\">getHierarchyBoundsListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyListeners--\" title=\"class or interface in java.awt\">getHierarchyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getIgnoreRepaint--\" title=\"class or interface in java.awt\">getIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputContext--\" title=\"class or interface in java.awt\">getInputContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodListeners--\" title=\"class or interface in java.awt\">getInputMethodListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodRequests--\" title=\"class or interface in java.awt\">getInputMethodRequests</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getKeyListeners--\" title=\"class or interface in java.awt\">getKeyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocale--\" title=\"class or interface in java.awt\">getLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation--\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocationOnScreen--\" title=\"class or interface in java.awt\">getLocationOnScreen</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseListeners--\" title=\"class or interface in java.awt\">getMouseListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseMotionListeners--\" title=\"class or interface in java.awt\">getMouseMotionListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMousePosition--\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseWheelListeners--\" title=\"class or interface in java.awt\">getMouseWheelListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getName--\" title=\"class or interface in java.awt\">getName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getParent--\" title=\"class or interface in java.awt\">getParent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPeer--\" title=\"class or interface in java.awt\">getPeer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners--\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners-java.lang.String-\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize--\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getToolkit--\" title=\"class or interface in java.awt\">getToolkit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getTreeLock--\" title=\"class or interface in java.awt\">getTreeLock</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#gotFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">gotFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#handleEvent-java.awt.Event-\" title=\"class or interface in java.awt\">handleEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hasFocus--\" title=\"class or interface in java.awt\">hasFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#imageUpdate-java.awt.Image-int-int-int-int-int-\" title=\"class or interface in java.awt\">imageUpdate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#inside-int-int-\" title=\"class or interface in java.awt\">inside</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isBackgroundSet--\" title=\"class or interface in java.awt\">isBackgroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isCursorSet--\" title=\"class or interface in java.awt\">isCursorSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDisplayable--\" title=\"class or interface in java.awt\">isDisplayable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isEnabled--\" title=\"class or interface in java.awt\">isEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusable--\" title=\"class or interface in java.awt\">isFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusOwner--\" title=\"class or interface in java.awt\">isFocusOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusTraversable--\" title=\"class or interface in java.awt\">isFocusTraversable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFontSet--\" title=\"class or interface in java.awt\">isFontSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isForegroundSet--\" title=\"class or interface in java.awt\">isForegroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isLightweight--\" title=\"class or interface in java.awt\">isLightweight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMaximumSizeSet--\" title=\"class or interface in java.awt\">isMaximumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMinimumSizeSet--\" title=\"class or interface in java.awt\">isMinimumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isPreferredSizeSet--\" title=\"class or interface in java.awt\">isPreferredSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isShowing--\" title=\"class or interface in java.awt\">isShowing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isValid--\" title=\"class or interface in java.awt\">isValid</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isVisible--\" title=\"class or interface in java.awt\">isVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyDown-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyUp-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list--\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintStream-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintWriter-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#location--\" title=\"class or interface in java.awt\">location</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#lostFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">lostFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDown-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDrag-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDrag</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseEnter-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseEnter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseExit-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseExit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseMove-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseMove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseUp-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#move-int-int-\" title=\"class or interface in java.awt\">move</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#nextFocus--\" title=\"class or interface in java.awt\">nextFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#paintAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#postEvent-java.awt.Event-\" title=\"class or interface in java.awt\">postEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processComponentEvent-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt\">processComponentEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processFocusEvent-java.awt.event.FocusEvent-\" title=\"class or interface in java.awt\">processFocusEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyBoundsEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyBoundsEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processInputMethodEvent-java.awt.event.InputMethodEvent-\" title=\"class or interface in java.awt\">processInputMethodEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseWheelEvent-java.awt.event.MouseWheelEvent-\" title=\"class or interface in java.awt\">processMouseWheelEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#remove-java.awt.MenuComponent-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">removeComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">removeFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">removeHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">removeHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">removeInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">removeKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">removeMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">removeMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">removeMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint--\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-int-int-int-int-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-long-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#resize-java.awt.Dimension-\" title=\"class or interface in java.awt\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#resize-int-int-\" title=\"class or interface in java.awt\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-int-int-int-int-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">setComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setCursor-java.awt.Cursor-\" title=\"class or interface in java.awt\">setCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setDropTarget-java.awt.dnd.DropTarget-\" title=\"class or interface in java.awt\">setDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusable-boolean-\" title=\"class or interface in java.awt\">setFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusTraversalKeysEnabled-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setIgnoreRepaint-boolean-\" title=\"class or interface in java.awt\">setIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocale-java.util.Locale-\" title=\"class or interface in java.awt\">setLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-int-int-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-java.awt.Point-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setName-java.lang.String-\" title=\"class or interface in java.awt\">setName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-int-int-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show--\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show-boolean-\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#size--\" title=\"class or interface in java.awt\">size</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#toString--\" title=\"class or interface in java.awt\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocus--\" title=\"class or interface in java.awt\">transferFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusBackward--\" title=\"class or interface in java.awt\">transferFocusBackward</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusUpCycle--\" title=\"class or interface in java.awt\">transferFocusUpCycle</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"JStringList--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>JStringList</h4>\n<pre>public&nbsp;JStringList()</pre>\n<div class=\"block\">Constructs a new empty list of strings.</div>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"addActionListener-java.awt.event.ActionListener-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addActionListener</h4>\n<pre>public&nbsp;void&nbsp;addActionListener(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener)</pre>\n<div class=\"block\">Attaches the given listener to this list of strings so that it will be\n notified when the user clicks on items in the list.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>listener</code> - the listener to attach</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if the listener is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"addItem-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addItem</h4>\n<pre>public&nbsp;void&nbsp;addItem(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n<div class=\"block\">Appends the given string to the end of this list, using the default black color.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>s</code> - the string to add</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if s is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"addItem-java.lang.String-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addItem</h4>\n<pre>public&nbsp;void&nbsp;addItem(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s,\n                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n<div class=\"block\">Appends the given string to the end of this list, using the given color.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>s</code> - the string to add</dd>\n<dd><code>color</code> - the color in which to display the text</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if s or color are null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"addItems-java.lang.String:A-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addItems</h4>\n<pre>public&nbsp;void&nbsp;addItems(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;items)</pre>\n<div class=\"block\">Adds all of the items from the given array to this list, in black.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>items</code> - The array of items to add.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if the array or any of its elements is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"addItems-java.lang.String:A-java.awt.Color:A-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addItems</h4>\n<pre>public&nbsp;void&nbsp;addItems(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;items,\n                     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>[]&nbsp;colors)</pre>\n<div class=\"block\">Adds all of the items from the given array to this list, in the given colors.\n They are treated as parallel arrays; item 0 is added with color 0,\n item 1 is added with color 1, and so on. \n If the colors array is shorter, any extra strings are added in black.\n If the colors array is longer, any extra colors in it are ignored.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>items</code> - The array of items to add.</dd>\n<dd><code>colors</code> - The array of colors to use.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if either array or any of their elements is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"clear--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clear</h4>\n<pre>public&nbsp;void&nbsp;clear()</pre>\n<div class=\"block\">Removes all strings from this list.</div>\n</li>\n</ul>\n<a name=\"getActionCommand--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getActionCommand</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getActionCommand()</pre>\n<div class=\"block\">Returns the current action command of this list, which is the string that\n will occur when action events are performed on this list.\n Initially, the action command is null.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the action command; initially null</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getActionListeners--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getActionListeners</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>[]&nbsp;getActionListeners()</pre>\n<div class=\"block\">Returns an array of all action listeners currently listening to this list.\n The array returned should not be modified by the caller.\n If there are no listeners on this list, returns an empty array.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the array of action listeners</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getColor-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getColor</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;getColor(int&nbsp;index)</pre>\n<div class=\"block\">Returns the color of the item in the list at the given index.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>index</code> - the 0-based index of the item.</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the color at the given index.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ArrayIndexOutOfBoundsException.html?is-external=true\" title=\"class or interface in java.lang\">ArrayIndexOutOfBoundsException</a></code> - If the index is outside the range of this list (0 .. size-1).</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getItem-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getItem</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getItem(int&nbsp;index)</pre>\n<div class=\"block\">Returns the text of the item in the list at the given index.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>index</code> - the 0-based index of the item.</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the item at the given index.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ArrayIndexOutOfBoundsException.html?is-external=true\" title=\"class or interface in java.lang\">ArrayIndexOutOfBoundsException</a></code> - If the index is outside the range of this list (0 .. size-1).</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getItemCount--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getItemCount</h4>\n<pre>public&nbsp;int&nbsp;getItemCount()</pre>\n<div class=\"block\">Returns the number of items in the list.</div>\n</li>\n</ul>\n<a name=\"getModel--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getModel</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/DefaultListModel.html?is-external=true\" title=\"class or interface in javax.swing\">DefaultListModel</a>&nbsp;getModel()</pre>\n<div class=\"block\">Returns a reference to the underlying data model of this list.\n To client: Don't modify it.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#getModel--\" title=\"class or interface in javax.swing\">getModel</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true\" title=\"class or interface in javax.swing\">JList</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getSelectedValue--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSelectedValue</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getSelectedValue()</pre>\n<div class=\"block\">Returns the string that is currently selected in this list.\n Initially, or if no string is selected, returns null.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true#getSelectedValue--\" title=\"class or interface in javax.swing\">getSelectedValue</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true\" title=\"class or interface in javax.swing\">JList</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getSelectedValueColor--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSelectedValueColor</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;getSelectedValueColor()</pre>\n<div class=\"block\">Returns the color of the string that is currently selected in this list.\n Initially, or if no string is selected, returns null.</div>\n</li>\n</ul>\n<a name=\"removeActionListener-java.awt.event.ActionListener-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeActionListener</h4>\n<pre>public&nbsp;void&nbsp;removeActionListener(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener)</pre>\n<div class=\"block\">Detaches the given listener so that it will not be notified of future\n action events that occur in this list.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>listener</code> - the listener to detach</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if the listener is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"removeItem-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeItem</h4>\n<pre>public&nbsp;void&nbsp;removeItem(int&nbsp;index)</pre>\n<div class=\"block\">Removes the element at the given index from this list, shifting others\n down an index if necessary.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>index</code> - the index from which to remove</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ArrayIndexOutOfBoundsException.html?is-external=true\" title=\"class or interface in java.lang\">ArrayIndexOutOfBoundsException</a></code> - If the index is outside the range of this list (0 .. size-1).</dd>\n</dl>\n</li>\n</ul>\n<a name=\"removeItem-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeItem</h4>\n<pre>public&nbsp;void&nbsp;removeItem(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n<div class=\"block\">Removes the first occurrence of the given string element at the given index from this list, shifting others\n down an index if necessary.\n If the given string is not found, the call has no effect.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>s</code> - the string to remove</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if the listener is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setActionCommand-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setActionCommand</h4>\n<pre>public&nbsp;void&nbsp;setActionCommand(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actionCommand)</pre>\n<div class=\"block\">Sets the current action command of this list, which is the string that\n will occur when action events are performed on this list.\n Initially, the action command is null.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>actionCommand</code> - the new command string to use</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setColor-int-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setColor</h4>\n<pre>public&nbsp;void&nbsp;setColor(int&nbsp;index,\n                     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n<div class=\"block\">Sets the color of the item at the given index to the given color.\n The item's text is unchanged.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>index</code> - The index to modify.</dd>\n<dd><code>color</code> - The color to put there.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ArrayIndexOutOfBoundsException.html?is-external=true\" title=\"class or interface in java.lang\">ArrayIndexOutOfBoundsException</a></code> - If the index is outside the range of this list (0 .. size-1).</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if the color is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setColors-java.awt.Color:A-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setColors</h4>\n<pre>public&nbsp;void&nbsp;setColors(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>[]&nbsp;colors)</pre>\n<div class=\"block\">Sets the items of this list to use the colors from the given array.\n List item 0 will use array color 0, and so on.\n If the array is shorter than the length of this list, items after the\n array length are untouched.\n If the array is longer than the length of this list, items in the array\n past the length of the list are ignored.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>colors</code> - The array of colors to use.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if the array or any of its elements is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setItem-int-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setItem</h4>\n<pre>public&nbsp;void&nbsp;setItem(int&nbsp;index,\n                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n<div class=\"block\">Sets the item at the given index to store the given text.\n The item's color is unchanged.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>index</code> - The index to modify.</dd>\n<dd><code>s</code> - The text to put there.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ArrayIndexOutOfBoundsException.html?is-external=true\" title=\"class or interface in java.lang\">ArrayIndexOutOfBoundsException</a></code> - If the index is outside the range of this list (0 .. size-1).</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if s is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setItem-int-java.lang.String-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setItem</h4>\n<pre>public&nbsp;void&nbsp;setItem(int&nbsp;index,\n                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s,\n                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n<div class=\"block\">Sets the item at the given index to store the given text in the given color.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>index</code> - The index to modify.</dd>\n<dd><code>s</code> - The text to put there.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ArrayIndexOutOfBoundsException.html?is-external=true\" title=\"class or interface in java.lang\">ArrayIndexOutOfBoundsException</a></code> - If the index is outside the range of this list (0 .. size-1).</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if s or color is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setItems-java.lang.String:A-java.awt.Color:A-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>setItems</h4>\n<pre>public&nbsp;void&nbsp;setItems(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;items,\n                     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>[]&nbsp;colors)</pre>\n<div class=\"block\">Sets the list contents to be the given items in the given colors.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>items</code> - Array of items to add.</dd>\n<dd><code>colors</code> - Array of colors to use for each item.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if either array or any of their elements is null.</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/gui/JPlaceholderTextField.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/gui/TableLayout.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/gui/JStringList.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JStringList.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JList\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.javax.swing.JList\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/gui/TableLayout.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>TableLayout</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"TableLayout\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":10,\"i16\":10,\"i17\":10,\"i18\":10,\"i19\":10,\"i20\":10,\"i21\":10,\"i22\":10,\"i23\":10,\"i24\":10,\"i25\":10,\"i26\":10,\"i27\":10,\"i28\":10,\"i29\":10,\"i30\":10,\"i31\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/gui/JStringList.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li>Next&nbsp;Class</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/gui/TableLayout.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"TableLayout.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.gui</div>\n<h2 title=\"Class TableLayout\" class=\"title\">Class TableLayout</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.gui.TableLayout</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/LayoutManager.html?is-external=true\" title=\"class or interface in java.awt\">LayoutManager</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/LayoutManager2.html?is-external=true\" title=\"class or interface in java.awt\">LayoutManager2</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">TableLayout</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>\nimplements <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/LayoutManager2.html?is-external=true\" title=\"class or interface in java.awt\">LayoutManager2</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a></pre>\n<div class=\"block\">This class implements a new <code>LayoutManager</code> that arranges\n components into a two-dimensional grid.  The capabilities are analogous\n to those provide by the <code>GridBagLayout</code> class, although\n <code>TableLayout</code> is considerably easier to use.\n\n The constructor for the <code>TableLayout</code> class takes the number\n of rows and columns.  Thus, the constructor call\n\n <p><pre><code>\n &nbsp;    new TableLayout(3, 5)\n <code></pre>\n\n <p>creates a new <code>TableLayout</code> manager with three rows in the\n vertical dimension and five columns across the page.  Components are added\n to the grid starting at the upper left, filling each horizontal row and\n then moving on to the next row down after the current one is filled.\n\n <p>The <code>TableLayout</code> manager also supports more fine-grained\n control over the formatting of tables by allowing you to specify\n constraints in the following form:\n\n <p><pre><code>\n &nbsp;    </code><i>constraint</i><code>=</code><i>value</i><code>\n </code></pre>\n\n <p>For example, if you want to specify that a component occupies two\n columns in the grid, you would use the constraint\n\n <p><pre><code>\n &nbsp;    \"gridwidth=2\"\n </code></pre>\n\n <p>Strings used as constraint objects can set several constraints at\n once by including multiple constraint/value pairs separated by spaces.\n\n <p>The <code>TableLayout</code> class accepts all constraints supported\n by <code>GridBagLayout</code>.  The most common constraints are shown\n in the following table:\n\n <p><table bgcolor=#FFFFFF border=1 cellspacing=0 width=750>\n <tr><td><table border=0 cellspacing=1 cellpadding=0><tr><td colspan=2><code>gridwidth=</code><font face=times><i>columns</i></font>&nbsp;&nbsp;<i><font size=-1>or</font></i>&nbsp;&nbsp;<code>gridheight=</code><font face=times><i>rows</i></font></td></tr>\n <tr><td width=25>&nbsp;</td><td width=720>Indicates that this table cell should span the indicated number of columns or rows.</td></tr></table></td></tr>\n <tr><td><table border=0 cellspacing=1 cellpadding=0><tr><td colspan=2><code>width=</code><font face=times><i>pixels</i></font>&nbsp;&nbsp;<i><font size=-1>or</font></i>&nbsp;&nbsp;<code>height=</code><font face=times><i>pixels</i></font></td></tr>\n <tr><td width=25>&nbsp;</td><td width=720>The <code>width</code> specification indicates that the width of this column should be the specified number of pixels.  If different widths are specified for cells in the same column, the column width is defined to be the maximum.  In the absence of any <code>width</code> specification, the column width is the largest of the preferred widths.  The <code>height</code> specification is interpreted symmetrically for row heights.</td></tr></table></td></tr>\n <tr><td><table border=0 cellspacing=1 cellpadding=0><tr><td colspan=2><code>weightx=</code><font face=times><i>weight</i></font>&nbsp;&nbsp;<i><font size=-1>or</font></i>&nbsp;&nbsp;<code>weighty=</code><font face=times><i>weight</i></font></td></tr>\n <tr><td width=25>&nbsp;</td><td width=720>If the total size of the table is less than the size of its enclosure, <code>TableLayout</code> will ordinarily center the table in the available space.  If any of the cells, however, are given nonzero <code>weightx</code> or <code>weighty</code> values, the extra space is distributed along that axis in proportion to the weights specified.  As in the <code>GridBagLayout</code> model, the weights are floating-point values and may therefore contain a decimal point.</td></tr></table></td></tr>\n <tr><td><table border=0 cellspacing=1 cellpadding=0><tr><td colspan=2><code>fill=</code><font face=times><i>fill</i></font></td></tr>\n <tr><td width=25>&nbsp;</td><td width=720>Indicates how the component in this cell should be resized if its preferred size is smaller than the cell size.  The legal values are <code>NONE</code>, <code>HORIZONTAL</code>, <code>VERTICAL</code>, and <code>BOTH</code>, indicating the axes along which stretching should occur.  The default is <code>BOTH</code>.</td></tr></table></td></tr>\n <tr><td><table border=0 cellspacing=1 cellpadding=0><tr><td colspan=2><code>anchor=</code><font face=times><i>anchor</i></font></td></tr>\n <tr><td width=25>&nbsp;</td><td width=720>If a component is not being filled along a particular axis, the <code>anchor</code> specification indicates where the component should be placed in its cell.  The default value is <code>CENTER</code>, but any of the standard compass directions (<code>NORTH</code>, <code>SOUTH</code>, <code>EAST</code>, <code>WEST</code>, <code>NORTHEAST</code>, <code>NORTHWEST</code>, <code>SOUTHEAST</code>, or <code>SOUTHWEST</code>) may also be used.</td></tr></table></td></tr>\n </table></div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#acm.gui.TableLayout\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#BOTH\">BOTH</a></span></code>\n<div class=\"block\">Resize component in both directions</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#BOTTOM\">BOTTOM</a></span></code>\n<div class=\"block\">Align table vertically at the bottom of its container</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#CENTER\">CENTER</a></span></code>\n<div class=\"block\">Center table in the container</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#FILL\">FILL</a></span></code>\n<div class=\"block\">Expand table to fill its container</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#HORIZONTAL\">HORIZONTAL</a></span></code>\n<div class=\"block\">Resize component in horizontal direction only</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#LEFT\">LEFT</a></span></code>\n<div class=\"block\">Align table horizontally at the left of its container</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#NONE\">NONE</a></span></code>\n<div class=\"block\">Do not resize component</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#RIGHT\">RIGHT</a></span></code>\n<div class=\"block\">Align table horizontally at the right of its container</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#TOP\">TOP</a></span></code>\n<div class=\"block\">Align table vertically at the top of its container</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#VERTICAL\">VERTICAL</a></span></code>\n<div class=\"block\">Resize component in vertical direction only</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#TableLayout--\">TableLayout</a></span>()</code>\n<div class=\"block\">Creates a new <code>TableLayout</code> object with no limits\n on the number of rows and columns.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#TableLayout-int-int-\">TableLayout</a></span>(int&nbsp;rows,\n           int&nbsp;columns)</code>\n<div class=\"block\">Creates a new <code>TableLayout</code> object with the specified\n number of rows and columns.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#TableLayout-int-int-int-int-\">TableLayout</a></span>(int&nbsp;rows,\n           int&nbsp;columns,\n           int&nbsp;hgap,\n           int&nbsp;vgap)</code>\n<div class=\"block\">Creates a new <code>TableLayout</code> object with the specified\n row count, column count, alignment, horizontal gap, and vertical gap.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#addLayoutComponent-java.awt.Component-java.lang.Object-\">addLayoutComponent</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;constraints)</code>\n<div class=\"block\">Adds a component to the layout.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#addLayoutComponent-java.lang.String-java.awt.Component-\">addLayoutComponent</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constraints,\n                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp)</code>\n<div class=\"block\">Adds a component to the layout.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#getColumnCount--\">getColumnCount</a></span>()</code>\n<div class=\"block\">Returns the number of columns in the table.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>acm.gui.TableConstraints</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#getConstraints-java.awt.Component-\">getConstraints</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp)</code>\n<div class=\"block\">Returns a copy of the constraints requested for the specified component.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#getDefaultFill--\">getDefaultFill</a></span>()</code>\n<div class=\"block\">Returns the default fill parameter for components in the table.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#getHgap--\">getHgap</a></span>()</code>\n<div class=\"block\">Returns the horizontal gap between components.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#getHorizontalAlignment--\">getHorizontalAlignment</a></span>()</code>\n<div class=\"block\">Returns the horizontal alignment for the table.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>float</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#getLayoutAlignmentX-java.awt.Container-\">getLayoutAlignmentX</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&nbsp;target)</code>\n<div class=\"block\">Returns the alignment along the <i>x</i>-axis as described in the\n <code>LayoutManager2</code> interface.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>float</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#getLayoutAlignmentY-java.awt.Container-\">getLayoutAlignmentY</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&nbsp;target)</code>\n<div class=\"block\">Returns the alignment along the <i>y</i>-axis as described in the\n <code>LayoutManager2</code> interface.</div>\n</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#getRowCount--\">getRowCount</a></span>()</code>\n<div class=\"block\">Returns the number of rows in the table.</div>\n</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#getVerticalAlignment--\">getVerticalAlignment</a></span>()</code>\n<div class=\"block\">Returns the vertical alignment for the table.</div>\n</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#getVgap--\">getVgap</a></span>()</code>\n<div class=\"block\">Returns the vertical gap between components.</div>\n</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#invalidateLayout-java.awt.Container-\">invalidateLayout</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&nbsp;target)</code>\n<div class=\"block\">Indicates that the layout is no longer valid.</div>\n</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#isStrictGridBagModel--\">isStrictGridBagModel</a></span>()</code>\n<div class=\"block\">Returns <code>true</code> if this layout manager is treating multirow\n cells exactly as <code>GridBagLayout</code> does.</div>\n</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#layoutContainer-java.awt.Container-\">layoutContainer</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&nbsp;target)</code>\n<div class=\"block\">Lays out the components in the target container.</div>\n</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/GridBagConstraints.html?is-external=true\" title=\"class or interface in java.awt\">GridBagConstraints</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#lookupConstraints-java.awt.Component-\">lookupConstraints</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp)</code>\n<div class=\"block\">Returns the constraints object for the specified component.</div>\n</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected acm.gui.TableConstraints</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#lookupConstraints-java.awt.Component-java.awt.Container-\">lookupConstraints</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&nbsp;target)</code>\n<div class=\"block\">Returns the <code>TableConstraints</code> object actually applied to the specified\n component when it is laid out in the target container.</div>\n</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#maximumLayoutSize-java.awt.Container-\">maximumLayoutSize</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&nbsp;target)</code>\n<div class=\"block\">Calculates the maximum size for the <code>FrameLayout</code> component\n when laid out in the <code>target</code> container.</div>\n</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#minimumLayoutSize-java.awt.Container-\">minimumLayoutSize</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&nbsp;target)</code>\n<div class=\"block\">Calculates the minimum size for the <code>FrameLayout</code> component\n when laid out in the <code>target</code> container.</div>\n</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#preferredLayoutSize-java.awt.Container-\">preferredLayoutSize</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&nbsp;target)</code>\n<div class=\"block\">Calculates the preferred size for the <code>FrameLayout</code> component\n when laid out in the <code>target</code> container.</div>\n</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#removeLayoutComponent-java.awt.Component-\">removeLayoutComponent</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp)</code>\n<div class=\"block\">Removes the specified component from the layout.</div>\n</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#setColumnCount-int-\">setColumnCount</a></span>(int&nbsp;columns)</code>\n<div class=\"block\">Resets the number of columns in the table.</div>\n</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#setConstraints-java.awt.Component-java.awt.GridBagConstraints-\">setConstraints</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/GridBagConstraints.html?is-external=true\" title=\"class or interface in java.awt\">GridBagConstraints</a>&nbsp;constraints)</code>\n<div class=\"block\">Sets the constraints for the component to a copy of the supplied\n constraints.</div>\n</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#setConstraints-java.awt.Component-java.lang.String-\">setConstraints</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constraints)</code>\n<div class=\"block\">Sets the constraints for the component to the constraints\n specified by the string.</div>\n</td>\n</tr>\n<tr id=\"i24\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#setDefaultFill-int-\">setDefaultFill</a></span>(int&nbsp;fill)</code>\n<div class=\"block\">Sets the default fill parameter for components in the table.</div>\n</td>\n</tr>\n<tr id=\"i25\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#setHgap-int-\">setHgap</a></span>(int&nbsp;pixels)</code>\n<div class=\"block\">Sets the horizontal gap between components.</div>\n</td>\n</tr>\n<tr id=\"i26\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#setHorizontalAlignment-int-\">setHorizontalAlignment</a></span>(int&nbsp;align)</code>\n<div class=\"block\">Sets the horizontal alignment for the table.</div>\n</td>\n</tr>\n<tr id=\"i27\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#setRowCount-int-\">setRowCount</a></span>(int&nbsp;rows)</code>\n<div class=\"block\">Resets the number of rows in the table.</div>\n</td>\n</tr>\n<tr id=\"i28\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#setStrictGridBagModel-boolean-\">setStrictGridBagModel</a></span>(boolean&nbsp;flag)</code>\n<div class=\"block\">Sets a flag indicating whether the layout manager should match the\n model used in <code>GridBagLayout</code> even when that interpretation\n seems wrong.</div>\n</td>\n</tr>\n<tr id=\"i29\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#setVerticalAlignment-int-\">setVerticalAlignment</a></span>(int&nbsp;align)</code>\n<div class=\"block\">Sets the vertical alignment for the table.</div>\n</td>\n</tr>\n<tr id=\"i30\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#setVgap-int-\">setVgap</a></span>(int&nbsp;pixels)</code>\n<div class=\"block\">Sets the vertical gap between components.</div>\n</td>\n</tr>\n<tr id=\"i31\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/gui/TableLayout.html#toString--\">toString</a></span>()</code>\n<div class=\"block\">Creates a printable representation of the layout.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"NONE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>NONE</h4>\n<pre>public static final&nbsp;int NONE</pre>\n<div class=\"block\">Do not resize component</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.gui.TableLayout.NONE\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"HORIZONTAL\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>HORIZONTAL</h4>\n<pre>public static final&nbsp;int HORIZONTAL</pre>\n<div class=\"block\">Resize component in horizontal direction only</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.gui.TableLayout.HORIZONTAL\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"VERTICAL\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>VERTICAL</h4>\n<pre>public static final&nbsp;int VERTICAL</pre>\n<div class=\"block\">Resize component in vertical direction only</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.gui.TableLayout.VERTICAL\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"BOTH\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>BOTH</h4>\n<pre>public static final&nbsp;int BOTH</pre>\n<div class=\"block\">Resize component in both directions</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.gui.TableLayout.BOTH\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"CENTER\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>CENTER</h4>\n<pre>public static final&nbsp;int CENTER</pre>\n<div class=\"block\">Center table in the container</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.gui.TableLayout.CENTER\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"LEFT\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>LEFT</h4>\n<pre>public static final&nbsp;int LEFT</pre>\n<div class=\"block\">Align table horizontally at the left of its container</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.gui.TableLayout.LEFT\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"RIGHT\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>RIGHT</h4>\n<pre>public static final&nbsp;int RIGHT</pre>\n<div class=\"block\">Align table horizontally at the right of its container</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.gui.TableLayout.RIGHT\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"TOP\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>TOP</h4>\n<pre>public static final&nbsp;int TOP</pre>\n<div class=\"block\">Align table vertically at the top of its container</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.gui.TableLayout.TOP\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"BOTTOM\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>BOTTOM</h4>\n<pre>public static final&nbsp;int BOTTOM</pre>\n<div class=\"block\">Align table vertically at the bottom of its container</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.gui.TableLayout.BOTTOM\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"FILL\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>FILL</h4>\n<pre>public static final&nbsp;int FILL</pre>\n<div class=\"block\">Expand table to fill its container</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.gui.TableLayout.FILL\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"TableLayout--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>TableLayout</h4>\n<pre>public&nbsp;TableLayout()</pre>\n<div class=\"block\">Creates a new <code>TableLayout</code> object with no limits\n on the number of rows and columns.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>TableLayout layout = new TableLayout();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"TableLayout-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>TableLayout</h4>\n<pre>public&nbsp;TableLayout(int&nbsp;rows,\n                   int&nbsp;columns)</pre>\n<div class=\"block\">Creates a new <code>TableLayout</code> object with the specified\n number of rows and columns.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>rows</code> - The number of rows, or 0 for no limit</dd>\n<dd><code>columns</code> - The number of columns, or 0 for no limit</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>TableLayout layout = new TableLayout(rows, columns);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"TableLayout-int-int-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>TableLayout</h4>\n<pre>public&nbsp;TableLayout(int&nbsp;rows,\n                   int&nbsp;columns,\n                   int&nbsp;hgap,\n                   int&nbsp;vgap)</pre>\n<div class=\"block\">Creates a new <code>TableLayout</code> object with the specified\n row count, column count, alignment, horizontal gap, and vertical gap.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>rows</code> - The number of rows, or 0 for no limit</dd>\n<dd><code>columns</code> - The number of columns, or 0 for no limit</dd>\n<dd><code>hgap</code> - The horizontal gap between columns</dd>\n<dd><code>vgap</code> - The vertical gap between rows</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>TableLayout layout = new TableLayout(rows, columns, hgap, vgap);</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"setColumnCount-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setColumnCount</h4>\n<pre>public&nbsp;void&nbsp;setColumnCount(int&nbsp;columns)</pre>\n<div class=\"block\">Resets the number of columns in the table.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>columns</code> - The new number of columns</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>layout.setColumnCount(columns);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getColumnCount--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getColumnCount</h4>\n<pre>public&nbsp;int&nbsp;getColumnCount()</pre>\n<div class=\"block\">Returns the number of columns in the table.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The  number of columns</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int columns = layout.getColumnCount();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setRowCount-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setRowCount</h4>\n<pre>public&nbsp;void&nbsp;setRowCount(int&nbsp;rows)</pre>\n<div class=\"block\">Resets the number of rows in the table.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>rows</code> - The new number of rows</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>layout.setRowCount(rows);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getRowCount--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getRowCount</h4>\n<pre>public&nbsp;int&nbsp;getRowCount()</pre>\n<div class=\"block\">Returns the number of rows in the table.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The  number of rows</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int rows = layout.getRowCount();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setHorizontalAlignment-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setHorizontalAlignment</h4>\n<pre>public&nbsp;void&nbsp;setHorizontalAlignment(int&nbsp;align)</pre>\n<div class=\"block\">Sets the horizontal alignment for the table.  The legal values\n are <code>CENTER</code>, <code>LEFT</code>, <code>RIGHT</code>, and\n <code>FILL</code>.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>align</code> - The horizontal alignment for the table</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>layout.setHorizontalAlignment(align);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getHorizontalAlignment--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getHorizontalAlignment</h4>\n<pre>public&nbsp;int&nbsp;getHorizontalAlignment()</pre>\n<div class=\"block\">Returns the horizontal alignment for the table.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The horizontal alignment for the table</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int align = layout.getHorizontalAlignment();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setVerticalAlignment-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setVerticalAlignment</h4>\n<pre>public&nbsp;void&nbsp;setVerticalAlignment(int&nbsp;align)</pre>\n<div class=\"block\">Sets the vertical alignment for the table.  The legal values\n are <code>CENTER</code>, <code>TOP</code>, <code>BOTTOM</code>, and\n <code>FILL</code>.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>align</code> - The vertical alignment for the table</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>layout.setVerticalAlignment(align);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getVerticalAlignment--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getVerticalAlignment</h4>\n<pre>public&nbsp;int&nbsp;getVerticalAlignment()</pre>\n<div class=\"block\">Returns the vertical alignment for the table.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The vertical alignment for the table</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int align = layout.getVerticalAlignment();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setDefaultFill-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setDefaultFill</h4>\n<pre>public&nbsp;void&nbsp;setDefaultFill(int&nbsp;fill)</pre>\n<div class=\"block\">Sets the default fill parameter for components in the table.  The legal values\n are <code>NONE</code>, <code>HORIZONTAL</code>, <code>VERTICAL</code>, and\n <code>BOTH</code>.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>fill</code> - The default fill parameter for components in the table</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>layout.setDefaultFill(fill);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getDefaultFill--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getDefaultFill</h4>\n<pre>public&nbsp;int&nbsp;getDefaultFill()</pre>\n<div class=\"block\">Returns the default fill parameter for components in the table.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The default fill parameter for components in the table</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int fill = layout.getDefaultFill();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setHgap-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setHgap</h4>\n<pre>public&nbsp;void&nbsp;setHgap(int&nbsp;pixels)</pre>\n<div class=\"block\">Sets the horizontal gap between components.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>pixels</code> - The gap between components in pixels</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>layout.setHgap(pixels);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getHgap--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getHgap</h4>\n<pre>public&nbsp;int&nbsp;getHgap()</pre>\n<div class=\"block\">Returns the horizontal gap between components.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The horizontal gap between components</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int hgap = layout.getHgap();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setVgap-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setVgap</h4>\n<pre>public&nbsp;void&nbsp;setVgap(int&nbsp;pixels)</pre>\n<div class=\"block\">Sets the vertical gap between components.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>pixels</code> - The gap between components in pixels</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>layout.setVgap(pixels);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getVgap--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getVgap</h4>\n<pre>public&nbsp;int&nbsp;getVgap()</pre>\n<div class=\"block\">Returns the vertical gap between components.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The vertical gap between components</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int vgap = layout.getVgap();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setStrictGridBagModel-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setStrictGridBagModel</h4>\n<pre>public&nbsp;void&nbsp;setStrictGridBagModel(boolean&nbsp;flag)</pre>\n<div class=\"block\">Sets a flag indicating whether the layout manager should match the\n model used in <code>GridBagLayout</code> even when that interpretation\n seems wrong.  The differences show up in the following areas:\n\n <ul>\n <li><i>Calculation of cell size.</i>  <code>GridBagLayout</code> uses\n the minimum layout size of the component to determine the size of each\n cell; <code>TableLayout</code> uses the preferred size.  In practice,\n these two values are often the same, but it seems that the preferred\n size makes considerably more sense in terms of how this layout is used.\n\n <li><i>Treatment of cells spanning several rows.</i>  In\n <code>GridBagLayout</code>, each new row begins after the last\n multirow cell in that row, even if there is  space to its left.\n By default, <code>TableLayout</code> uses the HTML model in which\n the cells begin at the left margin unless that column is itself\n already occupied.\n </ul></div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>flag</code> - <code>true</code> to use a strict <code>GridBagLayout</code> model</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>layout.setStrictGridBagModel(flag);</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"isStrictGridBagModel--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isStrictGridBagModel</h4>\n<pre>public&nbsp;boolean&nbsp;isStrictGridBagModel()</pre>\n<div class=\"block\">Returns <code>true</code> if this layout manager is treating multirow\n cells exactly as <code>GridBagLayout</code> does.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd><code>true</code> if this manager is using the strict <code>GridBagLayout</code> model</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>if (layout.isStrictGridBagModel()) . . .</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"setConstraints-java.awt.Component-java.awt.GridBagConstraints-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setConstraints</h4>\n<pre>public&nbsp;void&nbsp;setConstraints(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n                           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/GridBagConstraints.html?is-external=true\" title=\"class or interface in java.awt\">GridBagConstraints</a>&nbsp;constraints)</pre>\n<div class=\"block\">Sets the constraints for the component to a copy of the supplied\n constraints.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>comp</code> - The component to be constrained</dd>\n<dd><code>constraints</code> - The constraints object used to specify the layout</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>layout.setConstraints(comp, constraints);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setConstraints-java.awt.Component-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setConstraints</h4>\n<pre>public&nbsp;void&nbsp;setConstraints(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n                           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constraints)</pre>\n<div class=\"block\">Sets the constraints for the component to the constraints\n specified by the string.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>comp</code> - The component to be constrained</dd>\n<dd><code>constraints</code> - A string specifying the constraints</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>layout.setConstraints(comp, constraints);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getConstraints-java.awt.Component-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getConstraints</h4>\n<pre>public&nbsp;acm.gui.TableConstraints&nbsp;getConstraints(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp)</pre>\n<div class=\"block\">Returns a copy of the constraints requested for the specified component.  The\n constraints value is always converted to a <code>TableConstraints</code> so that\n clients can use this class in preference to <code>GridBagConstraints</code>\n without needing a type cast.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>comp</code> - The component whose constraints are requested</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>A copy of the constraints object used to specify the layout</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>TableConstraints tc = layout.getConstraints(comp);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"addLayoutComponent-java.lang.String-java.awt.Component-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addLayoutComponent</h4>\n<pre>public&nbsp;void&nbsp;addLayoutComponent(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constraints,\n                               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp)</pre>\n<div class=\"block\">Adds a component to the layout.  Implements <code>LayoutManager</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/LayoutManager.html?is-external=true#addLayoutComponent-java.lang.String-java.awt.Component-\" title=\"class or interface in java.awt\">addLayoutComponent</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/LayoutManager.html?is-external=true\" title=\"class or interface in java.awt\">LayoutManager</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>constraints</code> - The constraint string</dd>\n<dd><code>comp</code> - The component to be added</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"removeLayoutComponent-java.awt.Component-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeLayoutComponent</h4>\n<pre>public&nbsp;void&nbsp;removeLayoutComponent(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp)</pre>\n<div class=\"block\">Removes the specified component from the layout.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/LayoutManager.html?is-external=true#removeLayoutComponent-java.awt.Component-\" title=\"class or interface in java.awt\">removeLayoutComponent</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/LayoutManager.html?is-external=true\" title=\"class or interface in java.awt\">LayoutManager</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>comp</code> - The component to be removed</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"preferredLayoutSize-java.awt.Container-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>preferredLayoutSize</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a>&nbsp;preferredLayoutSize(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&nbsp;target)</pre>\n<div class=\"block\">Calculates the preferred size for the <code>FrameLayout</code> component\n when laid out in the <code>target</code> container.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/LayoutManager.html?is-external=true#preferredLayoutSize-java.awt.Container-\" title=\"class or interface in java.awt\">preferredLayoutSize</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/LayoutManager.html?is-external=true\" title=\"class or interface in java.awt\">LayoutManager</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>target</code> - The container in which the layout is done</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The preferred dimensions for the layout</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"minimumLayoutSize-java.awt.Container-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>minimumLayoutSize</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a>&nbsp;minimumLayoutSize(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&nbsp;target)</pre>\n<div class=\"block\">Calculates the minimum size for the <code>FrameLayout</code> component\n when laid out in the <code>target</code> container.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/LayoutManager.html?is-external=true#minimumLayoutSize-java.awt.Container-\" title=\"class or interface in java.awt\">minimumLayoutSize</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/LayoutManager.html?is-external=true\" title=\"class or interface in java.awt\">LayoutManager</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>target</code> - The container in which the layout is done</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The minimum dimensions for the layout</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"layoutContainer-java.awt.Container-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>layoutContainer</h4>\n<pre>public&nbsp;void&nbsp;layoutContainer(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&nbsp;target)</pre>\n<div class=\"block\">Lays out the components in the target container.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/LayoutManager.html?is-external=true#layoutContainer-java.awt.Container-\" title=\"class or interface in java.awt\">layoutContainer</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/LayoutManager.html?is-external=true\" title=\"class or interface in java.awt\">LayoutManager</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>target</code> - The container in which the layout is done</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"addLayoutComponent-java.awt.Component-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addLayoutComponent</h4>\n<pre>public&nbsp;void&nbsp;addLayoutComponent(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n                               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;constraints)</pre>\n<div class=\"block\">Adds a component to the layout.  The <code>TableLayout</code>\n class overrides this method to allow for string constraints.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/LayoutManager2.html?is-external=true#addLayoutComponent-java.awt.Component-java.lang.Object-\" title=\"class or interface in java.awt\">addLayoutComponent</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/LayoutManager2.html?is-external=true\" title=\"class or interface in java.awt\">LayoutManager2</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>comp</code> - The component to be added</dd>\n<dd><code>constraints</code> - The constraint object</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"maximumLayoutSize-java.awt.Container-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>maximumLayoutSize</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a>&nbsp;maximumLayoutSize(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&nbsp;target)</pre>\n<div class=\"block\">Calculates the maximum size for the <code>FrameLayout</code> component\n when laid out in the <code>target</code> container.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/LayoutManager2.html?is-external=true#maximumLayoutSize-java.awt.Container-\" title=\"class or interface in java.awt\">maximumLayoutSize</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/LayoutManager2.html?is-external=true\" title=\"class or interface in java.awt\">LayoutManager2</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>target</code> - The container in which the layout is done</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The maximum dimensions for the layout</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"getLayoutAlignmentX-java.awt.Container-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getLayoutAlignmentX</h4>\n<pre>public&nbsp;float&nbsp;getLayoutAlignmentX(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&nbsp;target)</pre>\n<div class=\"block\">Returns the alignment along the <i>x</i>-axis as described in the\n <code>LayoutManager2</code> interface.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/LayoutManager2.html?is-external=true#getLayoutAlignmentX-java.awt.Container-\" title=\"class or interface in java.awt\">getLayoutAlignmentX</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/LayoutManager2.html?is-external=true\" title=\"class or interface in java.awt\">LayoutManager2</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>target</code> - The container in which the layout is done</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>A value between 0 and 1 indicating where this component should align</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"getLayoutAlignmentY-java.awt.Container-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getLayoutAlignmentY</h4>\n<pre>public&nbsp;float&nbsp;getLayoutAlignmentY(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&nbsp;target)</pre>\n<div class=\"block\">Returns the alignment along the <i>y</i>-axis as described in the\n <code>LayoutManager2</code> interface.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/LayoutManager2.html?is-external=true#getLayoutAlignmentY-java.awt.Container-\" title=\"class or interface in java.awt\">getLayoutAlignmentY</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/LayoutManager2.html?is-external=true\" title=\"class or interface in java.awt\">LayoutManager2</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>target</code> - The container in which the layout is done</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>A value between 0 and 1 indicating where this component should align</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"invalidateLayout-java.awt.Container-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>invalidateLayout</h4>\n<pre>public&nbsp;void&nbsp;invalidateLayout(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&nbsp;target)</pre>\n<div class=\"block\">Indicates that the layout is no longer valid.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/LayoutManager2.html?is-external=true#invalidateLayout-java.awt.Container-\" title=\"class or interface in java.awt\">invalidateLayout</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/LayoutManager2.html?is-external=true\" title=\"class or interface in java.awt\">LayoutManager2</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>target</code> - The container in which the layout is done</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"toString--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>toString</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;toString()</pre>\n<div class=\"block\">Creates a printable representation of the layout.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"lookupConstraints-java.awt.Component-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>lookupConstraints</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/GridBagConstraints.html?is-external=true\" title=\"class or interface in java.awt\">GridBagConstraints</a>&nbsp;lookupConstraints(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp)</pre>\n<div class=\"block\">Returns the constraints object for the specified component.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>comp</code> - The component to be constrained</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The constraints object used to specify the layout</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GridBagConstraints gbc = layout.lookupConstraints(comp);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"lookupConstraints-java.awt.Component-java.awt.Container-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>lookupConstraints</h4>\n<pre>protected&nbsp;acm.gui.TableConstraints&nbsp;lookupConstraints(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n                                                     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&nbsp;target)</pre>\n<div class=\"block\">Returns the <code>TableConstraints</code> object actually applied to the specified\n component when it is laid out in the target container.  In the result of this method\n the values of the <code>gridx</code>, <code>gridx</code>, <code>gridwidth</code>,\n and <code>gridheight</code> fields are filled in according to the actual position\n in the grid.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>comp</code> - The component to be constrained</dd>\n<dd><code>target</code> - The container in which the layout is done</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The constraints object actually applied to the layout</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>TableConstraints tc = layout.lookupConstraints(comp, target);</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/gui/JStringList.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li>Next&nbsp;Class</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/gui/TableLayout.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"TableLayout.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/gui/package-frame.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>acm.gui</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<h1 class=\"bar\"><a href=\"../../acm/gui/package-summary.html\" target=\"classFrame\">acm.gui</a></h1>\n<div class=\"indexContainer\">\n<h2 title=\"Classes\">Classes</h2>\n<ul title=\"Classes\">\n<li><a href=\"DoubleField.html\" title=\"class in acm.gui\" target=\"classFrame\">DoubleField</a></li>\n<li><a href=\"Event.html\" title=\"class in acm.gui\" target=\"classFrame\">Event</a></li>\n<li><a href=\"IntField.html\" title=\"class in acm.gui\" target=\"classFrame\">IntField</a></li>\n<li><a href=\"JButtonGroup.html\" title=\"class in acm.gui\" target=\"classFrame\">JButtonGroup</a></li>\n<li><a href=\"JFontChooser.html\" title=\"class in acm.gui\" target=\"classFrame\">JFontChooser</a></li>\n<li><a href=\"JListOptionPane.html\" title=\"class in acm.gui\" target=\"classFrame\">JListOptionPane</a></li>\n<li><a href=\"JPlaceholderTextField.html\" title=\"class in acm.gui\" target=\"classFrame\">JPlaceholderTextField</a></li>\n<li><a href=\"JStringList.html\" title=\"class in acm.gui\" target=\"classFrame\">JStringList</a></li>\n<li><a href=\"TableLayout.html\" title=\"class in acm.gui\" target=\"classFrame\">TableLayout</a></li>\n</ul>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/gui/package-summary.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>acm.gui</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"acm.gui\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li class=\"navBarCell1Rev\">Package</li>\n<li>Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/graphics/package-summary.html\">Prev&nbsp;Package</a></li>\n<li><a href=\"../../acm/io/package-summary.html\">Next&nbsp;Package</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/gui/package-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 title=\"Package\" class=\"title\">Package&nbsp;acm.gui</h1>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Class Summary table, listing classes, and an explanation\">\n<caption><span>Class Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Class</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../acm/gui/DoubleField.html\" title=\"class in acm.gui\">DoubleField</a></td>\n<td class=\"colLast\">\n<div class=\"block\">This class implements a simple interactor that accepts a floating-point value.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../acm/gui/Event.html\" title=\"class in acm.gui\">Event</a>&lt;T&gt;</td>\n<td class=\"colLast\">\n<div class=\"block\">A helper class to represent observable events.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../acm/gui/IntField.html\" title=\"class in acm.gui\">IntField</a></td>\n<td class=\"colLast\">\n<div class=\"block\">This class implements a simple interactor that accepts an integer value.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../acm/gui/JButtonGroup.html\" title=\"class in acm.gui\">JButtonGroup</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></td>\n<td class=\"colLast\">\n<div class=\"block\">The <code>JFontChooser</code> class is a swing component for font selection.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../acm/gui/JListOptionPane.html\" title=\"class in acm.gui\">JListOptionPane</a></td>\n<td class=\"colLast\">\n<div class=\"block\">A pop-up dialog box of options as a clickable list.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../acm/gui/JPlaceholderTextField.html\" title=\"class in acm.gui\">JPlaceholderTextField</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../acm/gui/JStringList.html\" title=\"class in acm.gui\">JStringList</a></td>\n<td class=\"colLast\">\n<div class=\"block\">Represents a list of strings with optional colors.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></td>\n<td class=\"colLast\">\n<div class=\"block\">This class implements a new <code>LayoutManager</code> that arranges\n components into a two-dimensional grid.</div>\n</td>\n</tr>\n</tbody>\n</table>\n</li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li class=\"navBarCell1Rev\">Package</li>\n<li>Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/graphics/package-summary.html\">Prev&nbsp;Package</a></li>\n<li><a href=\"../../acm/io/package-summary.html\">Next&nbsp;Package</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/gui/package-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/gui/package-tree.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>acm.gui Class Hierarchy</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"acm.gui Class Hierarchy\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/graphics/package-tree.html\">Prev</a></li>\n<li><a href=\"../../acm/io/package-tree.html\">Next</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/gui/package-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 class=\"title\">Hierarchy For Package acm.gui</h1>\n<span class=\"packageHierarchyLabel\">Package Hierarchies:</span>\n<ul class=\"horizontal\">\n<li><a href=\"../../overview-tree.html\">All Packages</a></li>\n</ul>\n</div>\n<div class=\"contentContainer\">\n<h2 title=\"Class Hierarchy\">Class Hierarchy</h2>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Object</span></a>\n<ul>\n<li type=\"circle\">javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractAction.html?is-external=true\" title=\"class or interface in javax.swing\"><span class=\"typeNameLink\">AbstractAction</span></a> (implements javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Action.html?is-external=true\" title=\"class or interface in javax.swing\">Action</a>, java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true\" title=\"class or interface in java.lang\">Cloneable</a>, java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">acm.gui.<a href=\"../../acm/gui/JFontChooser.DialogCancelAction.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">JFontChooser.DialogCancelAction</span></a></li>\n<li type=\"circle\">acm.gui.<a href=\"../../acm/gui/JFontChooser.DialogOKAction.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">JFontChooser.DialogOKAction</span></a></li>\n</ul>\n</li>\n<li type=\"circle\">java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\"><span class=\"typeNameLink\">Component</span></a> (implements java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\"><span class=\"typeNameLink\">Container</span></a>\n<ul>\n<li type=\"circle\">javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\"><span class=\"typeNameLink\">JComponent</span></a> (implements java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">acm.gui.<a href=\"../../acm/gui/JFontChooser.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">JFontChooser</span></a></li>\n<li type=\"circle\">javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true\" title=\"class or interface in javax.swing\"><span class=\"typeNameLink\">JList</span></a>&lt;E&gt; (implements javax.accessibility.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Scrollable.html?is-external=true\" title=\"class or interface in javax.swing\">Scrollable</a>)\n<ul>\n<li type=\"circle\">acm.gui.<a href=\"../../acm/gui/JStringList.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">JStringList</span></a></li>\n</ul>\n</li>\n<li type=\"circle\">javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\"><span class=\"typeNameLink\">JPanel</span></a> (implements javax.accessibility.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>)\n<ul>\n<li type=\"circle\">acm.gui.<a href=\"../../acm/gui/JButtonGroup.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">JButtonGroup</span></a> (implements java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;T&gt;)</li>\n</ul>\n</li>\n<li type=\"circle\">javax.swing.text.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true\" title=\"class or interface in javax.swing.text\"><span class=\"typeNameLink\">JTextComponent</span></a> (implements javax.accessibility.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Scrollable.html?is-external=true\" title=\"class or interface in javax.swing\">Scrollable</a>)\n<ul>\n<li type=\"circle\">javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\"><span class=\"typeNameLink\">JTextField</span></a> (implements javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true\" title=\"class or interface in javax.swing\">SwingConstants</a>)\n<ul>\n<li type=\"circle\">acm.gui.<a href=\"../../acm/gui/DoubleField.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">DoubleField</span></a></li>\n<li type=\"circle\">acm.gui.<a href=\"../../acm/gui/IntField.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">IntField</span></a></li>\n<li type=\"circle\">acm.gui.<a href=\"../../acm/gui/JPlaceholderTextField.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">JPlaceholderTextField</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li type=\"circle\">java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true\" title=\"class or interface in java.awt\"><span class=\"typeNameLink\">Window</span></a> (implements javax.accessibility.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>)\n<ul>\n<li type=\"circle\">java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true\" title=\"class or interface in java.awt\"><span class=\"typeNameLink\">Dialog</span></a>\n<ul>\n<li type=\"circle\">javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true\" title=\"class or interface in javax.swing\"><span class=\"typeNameLink\">JDialog</span></a> (implements javax.accessibility.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/RootPaneContainer.html?is-external=true\" title=\"class or interface in javax.swing\">RootPaneContainer</a>, javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/WindowConstants.html?is-external=true\" title=\"class or interface in javax.swing\">WindowConstants</a>)\n<ul>\n<li type=\"circle\">acm.gui.<a href=\"../../acm/gui/JListOptionPane.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">JListOptionPane</span></a> (implements java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>)</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li type=\"circle\">java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusAdapter.html?is-external=true\" title=\"class or interface in java.awt.event\"><span class=\"typeNameLink\">FocusAdapter</span></a> (implements java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusListener</a>)\n<ul>\n<li type=\"circle\">acm.gui.<a href=\"../../acm/gui/JFontChooser.TextFieldFocusHandlerForTextSelection.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">JFontChooser.TextFieldFocusHandlerForTextSelection</span></a></li>\n</ul>\n</li>\n<li type=\"circle\">acm.gui.<a href=\"../../acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">JFontChooser.ListSearchTextFieldDocumentHandler</span></a> (implements javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentListener</a>)</li>\n<li type=\"circle\">acm.gui.<a href=\"../../acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.ListSelector.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">JFontChooser.ListSearchTextFieldDocumentHandler.ListSelector</span></a> (implements java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a>)</li>\n<li type=\"circle\">acm.gui.<a href=\"../../acm/gui/JFontChooser.ListSelectionHandler.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">JFontChooser.ListSelectionHandler</span></a> (implements javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListSelectionListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListSelectionListener</a>)</li>\n<li type=\"circle\">java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyAdapter.html?is-external=true\" title=\"class or interface in java.awt.event\"><span class=\"typeNameLink\">KeyAdapter</span></a> (implements java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>)\n<ul>\n<li type=\"circle\">acm.gui.<a href=\"../../acm/gui/JFontChooser.TextFieldKeyHandlerForListSelectionUpDown.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">JFontChooser.TextFieldKeyHandlerForListSelectionUpDown</span></a></li>\n</ul>\n</li>\n<li type=\"circle\">java.util.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true\" title=\"class or interface in java.util\"><span class=\"typeNameLink\">Observable</span></a>\n<ul>\n<li type=\"circle\">acm.gui.<a href=\"../../acm/gui/Event.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Event</span></a>&lt;T&gt;</li>\n</ul>\n</li>\n<li type=\"circle\">acm.gui.<a href=\"../../acm/gui/TableLayout.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">TableLayout</span></a> (implements java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/LayoutManager2.html?is-external=true\" title=\"class or interface in java.awt\">LayoutManager2</a>, java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)</li>\n</ul>\n</li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/graphics/package-tree.html\">Prev</a></li>\n<li><a href=\"../../acm/io/package-tree.html\">Next</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/gui/package-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/io/ConsoleModel.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:01 PDT 2017 -->\n<title>ConsoleModel</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"ConsoleModel\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":6,\"i1\":6,\"i2\":6,\"i3\":6,\"i4\":6,\"i5\":6,\"i6\":6,\"i7\":6,\"i8\":6,\"i9\":6,\"i10\":6,\"i11\":6,\"i12\":6,\"i13\":6,\"i14\":6,\"i15\":6,\"i16\":6,\"i17\":6,\"i18\":6,\"i19\":6,\"i20\":6,\"i21\":6,\"i22\":6,\"i23\":6};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],4:[\"t3\",\"Abstract Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Class</li>\n<li><a href=\"../../acm/io/IOConsole.html\" title=\"class in acm.io\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/io/ConsoleModel.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ConsoleModel.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.io</div>\n<h2 title=\"Interface ConsoleModel\" class=\"title\">Interface ConsoleModel</h2>\n</div>\n<div class=\"contentContainer\">\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Known Implementing Classes:</dt>\n<dd><a href=\"../../acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a>, <a href=\"../../acm/io/SystemConsoleModel.html\" title=\"class in acm.io\">SystemConsoleModel</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public interface <span class=\"typeNameLabel\">ConsoleModel</span></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/ConsoleModel.html#ERROR_STYLE\">ERROR_STYLE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/ConsoleModel.html#INPUT_STYLE\">INPUT_STYLE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/ConsoleModel.html#OUTPUT_STYLE\">OUTPUT_STYLE</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t3\" class=\"tableTab\"><span><a href=\"javascript:show(4);\">Abstract Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/ConsoleModel.html#clear--\">clear</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/ConsoleModel.html#copy--\">copy</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/ConsoleModel.html#cut--\">cut</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/ConsoleModel.html#getConsole--\">getConsole</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/ConsoleModel.html#getConsolePane--\">getConsolePane</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html?is-external=true\" title=\"class or interface in java.io\">BufferedReader</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/ConsoleModel.html#getInputScript--\">getInputScript</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/ConsoleModel.html#getLength--\">getLength</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/ConsoleModel.html#getText--\">getText</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/ConsoleModel.html#getText-int-int-\">getText</a></span>(int&nbsp;i,\n       int&nbsp;j)</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/ConsoleModel.html#getTextPane--\">getTextPane</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/ConsoleModel.html#isPointSelection--\">isPointSelection</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/ConsoleModel.html#paste--\">paste</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/ConsoleModel.html#print-java.awt.PrintJob-\">print</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/PrintJob.html?is-external=true\" title=\"class or interface in java.awt\">PrintJob</a>&nbsp;printjob)</code>&nbsp;</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/ConsoleModel.html#print-java.lang.String-int-\">print</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s,\n     int&nbsp;i)</code>&nbsp;</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/ConsoleModel.html#readLine--\">readLine</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/ConsoleModel.html#requestFocus--\">requestFocus</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/ConsoleModel.html#selectAll--\">selectAll</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/ConsoleModel.html#setConsole-acm.io.IOConsole-\">setConsole</a></span>(<a href=\"../../acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a>&nbsp;ioconsole)</code>&nbsp;</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/ConsoleModel.html#setErrorColor-java.awt.Color-\">setErrorColor</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>&nbsp;</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/ConsoleModel.html#setErrorStyle-int-\">setErrorStyle</a></span>(int&nbsp;i)</code>&nbsp;</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/ConsoleModel.html#setInputColor-java.awt.Color-\">setInputColor</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>&nbsp;</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/ConsoleModel.html#setInputScript-java.io.BufferedReader-\">setInputScript</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html?is-external=true\" title=\"class or interface in java.io\">BufferedReader</a>&nbsp;bufferedreader)</code>&nbsp;</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/ConsoleModel.html#setInputStyle-int-\">setInputStyle</a></span>(int&nbsp;i)</code>&nbsp;</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/ConsoleModel.html#setMenuBar-acm.program.ProgramMenuBar-\">setMenuBar</a></span>(<a href=\"../../acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a>&nbsp;programmenubar)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"OUTPUT_STYLE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>OUTPUT_STYLE</h4>\n<pre>static final&nbsp;int OUTPUT_STYLE</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.io.ConsoleModel.OUTPUT_STYLE\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"INPUT_STYLE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>INPUT_STYLE</h4>\n<pre>static final&nbsp;int INPUT_STYLE</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.io.ConsoleModel.INPUT_STYLE\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"ERROR_STYLE\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>ERROR_STYLE</h4>\n<pre>static final&nbsp;int ERROR_STYLE</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.io.ConsoleModel.ERROR_STYLE\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"setConsole-acm.io.IOConsole-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setConsole</h4>\n<pre>void&nbsp;setConsole(<a href=\"../../acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a>&nbsp;ioconsole)</pre>\n</li>\n</ul>\n<a name=\"getConsole--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getConsole</h4>\n<pre><a href=\"../../acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a>&nbsp;getConsole()</pre>\n</li>\n</ul>\n<a name=\"print-java.lang.String-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>void&nbsp;print(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s,\n           int&nbsp;i)</pre>\n</li>\n</ul>\n<a name=\"readLine--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readLine</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;readLine()</pre>\n</li>\n</ul>\n<a name=\"setInputScript-java.io.BufferedReader-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setInputScript</h4>\n<pre>void&nbsp;setInputScript(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html?is-external=true\" title=\"class or interface in java.io\">BufferedReader</a>&nbsp;bufferedreader)</pre>\n</li>\n</ul>\n<a name=\"getInputScript--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getInputScript</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html?is-external=true\" title=\"class or interface in java.io\">BufferedReader</a>&nbsp;getInputScript()</pre>\n</li>\n</ul>\n<a name=\"clear--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clear</h4>\n<pre>void&nbsp;clear()</pre>\n</li>\n</ul>\n<a name=\"getText--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getText</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getText()</pre>\n</li>\n</ul>\n<a name=\"getText-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getText</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getText(int&nbsp;i,\n               int&nbsp;j)</pre>\n</li>\n</ul>\n<a name=\"getLength--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getLength</h4>\n<pre>int&nbsp;getLength()</pre>\n</li>\n</ul>\n<a name=\"getConsolePane--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getConsolePane</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;getConsolePane()</pre>\n</li>\n</ul>\n<a name=\"getTextPane--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getTextPane</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;getTextPane()</pre>\n</li>\n</ul>\n<a name=\"cut--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>cut</h4>\n<pre>void&nbsp;cut()</pre>\n</li>\n</ul>\n<a name=\"copy--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>copy</h4>\n<pre>void&nbsp;copy()</pre>\n</li>\n</ul>\n<a name=\"paste--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>paste</h4>\n<pre>void&nbsp;paste()</pre>\n</li>\n</ul>\n<a name=\"selectAll--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>selectAll</h4>\n<pre>void&nbsp;selectAll()</pre>\n</li>\n</ul>\n<a name=\"isPointSelection--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isPointSelection</h4>\n<pre>boolean&nbsp;isPointSelection()</pre>\n</li>\n</ul>\n<a name=\"print-java.awt.PrintJob-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>void&nbsp;print(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/PrintJob.html?is-external=true\" title=\"class or interface in java.awt\">PrintJob</a>&nbsp;printjob)</pre>\n</li>\n</ul>\n<a name=\"setInputStyle-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setInputStyle</h4>\n<pre>void&nbsp;setInputStyle(int&nbsp;i)</pre>\n</li>\n</ul>\n<a name=\"setInputColor-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setInputColor</h4>\n<pre>void&nbsp;setInputColor(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n</li>\n</ul>\n<a name=\"setErrorStyle-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setErrorStyle</h4>\n<pre>void&nbsp;setErrorStyle(int&nbsp;i)</pre>\n</li>\n</ul>\n<a name=\"setErrorColor-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setErrorColor</h4>\n<pre>void&nbsp;setErrorColor(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n</li>\n</ul>\n<a name=\"requestFocus--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>requestFocus</h4>\n<pre>void&nbsp;requestFocus()</pre>\n</li>\n</ul>\n<a name=\"setMenuBar-acm.program.ProgramMenuBar-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>setMenuBar</h4>\n<pre>void&nbsp;setMenuBar(<a href=\"../../acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a>&nbsp;programmenubar)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Class</li>\n<li><a href=\"../../acm/io/IOConsole.html\" title=\"class in acm.io\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/io/ConsoleModel.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ConsoleModel.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/io/IOConsole.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:02 PDT 2017 -->\n<title>IOConsole</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"IOConsole\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":10,\"i16\":10,\"i17\":10,\"i18\":10,\"i19\":10,\"i20\":10,\"i21\":10,\"i22\":10,\"i23\":10,\"i24\":10,\"i25\":10,\"i26\":10,\"i27\":10,\"i28\":10,\"i29\":10,\"i30\":10,\"i31\":10,\"i32\":10,\"i33\":10,\"i34\":10,\"i35\":10,\"i36\":10,\"i37\":10,\"i38\":10,\"i39\":10,\"i40\":10,\"i41\":10,\"i42\":10,\"i43\":10,\"i44\":10,\"i45\":10,\"i46\":10,\"i47\":10,\"i48\":10,\"i49\":10,\"i50\":10,\"i51\":10,\"i52\":10,\"i53\":10,\"i54\":10,\"i55\":10,\"i56\":10,\"i57\":10,\"i58\":10,\"i59\":10,\"i60\":10,\"i61\":10,\"i62\":10,\"i63\":10,\"i64\":10,\"i65\":10,\"i66\":10,\"i67\":10,\"i68\":10,\"i69\":10,\"i70\":10,\"i71\":10,\"i72\":10,\"i73\":10,\"i74\":10,\"i75\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/io/SimpleScanner.html\" title=\"class in acm.io\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/io/IOConsole.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"IOConsole.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.java.awt.Container\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.io</div>\n<h2 title=\"Class IOConsole\" class=\"title\">Class IOConsole</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Component</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Container</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.io.IOConsole</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd>acm.io.IOModel, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">IOConsole</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>\nimplements acm.io.IOModel</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#acm.io.IOConsole\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.AccessibleAWTContainer.html?is-external=true\" title=\"class or interface in java.awt\">Container.AccessibleAWTContainer</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.AccessibleAWTComponent.html?is-external=true\" title=\"class or interface in java.awt\">Component.AccessibleAWTComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BaselineResizeBehavior.html?is-external=true\" title=\"class or interface in java.awt\">Component.BaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BltBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.BltBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.FlipBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.FlipBufferStrategy</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#DEFAULT_FONT\">DEFAULT_FONT</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#LINE_SEPARATOR\">LINE_SEPARATOR</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#MINIMUM_CONSOLE_HEIGHT\">MINIMUM_CONSOLE_HEIGHT</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#MINIMUM_CONSOLE_WIDTH\">MINIMUM_CONSOLE_WIDTH</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#SYSTEM_CONSOLE\">SYSTEM_CONSOLE</a></span></code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#accessibleContext\" title=\"class or interface in java.awt\">accessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#BOTTOM_ALIGNMENT\" title=\"class or interface in java.awt\">BOTTOM_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#CENTER_ALIGNMENT\" title=\"class or interface in java.awt\">CENTER_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#LEFT_ALIGNMENT\" title=\"class or interface in java.awt\">LEFT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#RIGHT_ALIGNMENT\" title=\"class or interface in java.awt\">RIGHT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#TOP_ALIGNMENT\" title=\"class or interface in java.awt\">TOP_ALIGNMENT</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.image.ImageObserver\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ABORT\" title=\"class or interface in java.awt.image\">ABORT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ALLBITS\" title=\"class or interface in java.awt.image\">ALLBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ERROR\" title=\"class or interface in java.awt.image\">ERROR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#FRAMEBITS\" title=\"class or interface in java.awt.image\">FRAMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#HEIGHT\" title=\"class or interface in java.awt.image\">HEIGHT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#PROPERTIES\" title=\"class or interface in java.awt.image\">PROPERTIES</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#SOMEBITS\" title=\"class or interface in java.awt.image\">SOMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#WIDTH\" title=\"class or interface in java.awt.image\">WIDTH</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#IOConsole--\">IOConsole</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#appendSpace-java.lang.String-\">appendSpace</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#clear--\">clear</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#copy--\">copy</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#createConsoleModel--\">createConsoleModel</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#cut--\">cut</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#getConsoleModel--\">getConsoleModel</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#getErrorColor--\">getErrorColor</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#getErrorStyle--\">getErrorStyle</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#getExceptionOnError--\">getExceptionOnError</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#getInputColor--\">getInputColor</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html?is-external=true\" title=\"class or interface in java.io\">BufferedReader</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#getInputScript--\">getInputScript</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#getInputStyle--\">getInputStyle</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#getMenuBar--\">getMenuBar</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#getMinimumSize--\">getMinimumSize</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#getPreferredSize--\">getPreferredSize</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html?is-external=true\" title=\"class or interface in java.io\">BufferedReader</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#getReader--\">getReader</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintWriter.html?is-external=true\" title=\"class or interface in java.io\">PrintWriter</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#getWriter--\">getWriter</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#isConsoleMenuItem-javax.swing.JMenuItem-\">isConsoleMenuItem</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuItem</a>&nbsp;paramJMenuItem)</code>&nbsp;</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#menuAction-java.awt.event.ActionEvent-\">menuAction</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;paramActionEvent)</code>&nbsp;</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#paste--\">paste</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#print-boolean-\">print</a></span>(boolean&nbsp;paramBoolean)</code>&nbsp;</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#print-char-\">print</a></span>(char&nbsp;paramChar)</code>&nbsp;</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#print-double-\">print</a></span>(double&nbsp;paramDouble)</code>&nbsp;</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#print-float-\">print</a></span>(float&nbsp;paramFloat)</code>&nbsp;</td>\n</tr>\n<tr id=\"i24\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#print-int-\">print</a></span>(int&nbsp;paramInt)</code>&nbsp;</td>\n</tr>\n<tr id=\"i25\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#print-long-\">print</a></span>(long&nbsp;paramLong)</code>&nbsp;</td>\n</tr>\n<tr id=\"i26\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#print-java.lang.Object-\">print</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;paramObject)</code>&nbsp;</td>\n</tr>\n<tr id=\"i27\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#print-java.lang.String-\">print</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</code>&nbsp;</td>\n</tr>\n<tr id=\"i28\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#printConsole--\">printConsole</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i29\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#printConsole-java.awt.PrintJob-\">printConsole</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/PrintJob.html?is-external=true\" title=\"class or interface in java.awt\">PrintJob</a>&nbsp;paramPrintJob)</code>&nbsp;</td>\n</tr>\n<tr id=\"i30\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#println--\">println</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i31\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#println-boolean-\">println</a></span>(boolean&nbsp;paramBoolean)</code>&nbsp;</td>\n</tr>\n<tr id=\"i32\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#println-char-\">println</a></span>(char&nbsp;paramChar)</code>&nbsp;</td>\n</tr>\n<tr id=\"i33\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#println-double-\">println</a></span>(double&nbsp;paramDouble)</code>&nbsp;</td>\n</tr>\n<tr id=\"i34\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#println-float-\">println</a></span>(float&nbsp;paramFloat)</code>&nbsp;</td>\n</tr>\n<tr id=\"i35\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#println-int-\">println</a></span>(int&nbsp;paramInt)</code>&nbsp;</td>\n</tr>\n<tr id=\"i36\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#println-long-\">println</a></span>(long&nbsp;paramLong)</code>&nbsp;</td>\n</tr>\n<tr id=\"i37\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#println-java.lang.Object-\">println</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;paramObject)</code>&nbsp;</td>\n</tr>\n<tr id=\"i38\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#println-java.lang.String-\">println</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</code>&nbsp;</td>\n</tr>\n<tr id=\"i39\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#readBoolean--\">readBoolean</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i40\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#readBoolean-java.lang.String-\">readBoolean</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</code>&nbsp;</td>\n</tr>\n<tr id=\"i41\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#readBoolean-java.lang.String-java.lang.String-java.lang.String-\">readBoolean</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString1,\n           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString2,\n           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString3)</code>&nbsp;</td>\n</tr>\n<tr id=\"i42\" class=\"altColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#readDouble--\">readDouble</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i43\" class=\"rowColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#readDouble-double-double-\">readDouble</a></span>(double&nbsp;paramDouble1,\n          double&nbsp;paramDouble2)</code>&nbsp;</td>\n</tr>\n<tr id=\"i44\" class=\"altColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#readDouble-java.lang.String-\">readDouble</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</code>&nbsp;</td>\n</tr>\n<tr id=\"i45\" class=\"rowColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#readDouble-java.lang.String-double-double-\">readDouble</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString,\n          double&nbsp;paramDouble1,\n          double&nbsp;paramDouble2)</code>&nbsp;</td>\n</tr>\n<tr id=\"i46\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#readInt--\">readInt</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i47\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#readInt-int-int-\">readInt</a></span>(int&nbsp;paramInt1,\n       int&nbsp;paramInt2)</code>&nbsp;</td>\n</tr>\n<tr id=\"i48\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#readInt-java.lang.String-\">readInt</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</code>&nbsp;</td>\n</tr>\n<tr id=\"i49\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#readInt-java.lang.String-int-int-\">readInt</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString,\n       int&nbsp;paramInt1,\n       int&nbsp;paramInt2)</code>&nbsp;</td>\n</tr>\n<tr id=\"i50\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#readLine--\">readLine</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i51\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#readLine-java.lang.String-\">readLine</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</code>&nbsp;</td>\n</tr>\n<tr id=\"i52\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#requestFocus--\">requestFocus</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i53\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#save--\">save</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i54\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#save-java.io.Writer-\">save</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true\" title=\"class or interface in java.io\">Writer</a>&nbsp;paramWriter)</code>&nbsp;</td>\n</tr>\n<tr id=\"i55\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#saveAs--\">saveAs</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i56\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#script--\">script</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i57\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#selectAll--\">selectAll</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i58\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#setBackground-java.awt.Color-\">setBackground</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;paramColor)</code>&nbsp;</td>\n</tr>\n<tr id=\"i59\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#setErrorColor-java.awt.Color-\">setErrorColor</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;paramColor)</code>&nbsp;</td>\n</tr>\n<tr id=\"i60\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#setErrorStyle-int-\">setErrorStyle</a></span>(int&nbsp;paramInt)</code>&nbsp;</td>\n</tr>\n<tr id=\"i61\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#setExceptionOnError-boolean-\">setExceptionOnError</a></span>(boolean&nbsp;paramBoolean)</code>&nbsp;</td>\n</tr>\n<tr id=\"i62\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#setFont-java.awt.Font-\">setFont</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a>&nbsp;paramFont)</code>&nbsp;</td>\n</tr>\n<tr id=\"i63\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#setFont-java.lang.String-\">setFont</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</code>&nbsp;</td>\n</tr>\n<tr id=\"i64\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#setForeground-java.awt.Color-\">setForeground</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;paramColor)</code>&nbsp;</td>\n</tr>\n<tr id=\"i65\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#setInputColor-java.awt.Color-\">setInputColor</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;paramColor)</code>&nbsp;</td>\n</tr>\n<tr id=\"i66\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#setInputScript-java.io.BufferedReader-\">setInputScript</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html?is-external=true\" title=\"class or interface in java.io\">BufferedReader</a>&nbsp;paramBufferedReader)</code>&nbsp;</td>\n</tr>\n<tr id=\"i67\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#setInputStyle-int-\">setInputStyle</a></span>(int&nbsp;paramInt)</code>&nbsp;</td>\n</tr>\n<tr id=\"i68\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#setMenuBar-acm.program.ProgramMenuBar-\">setMenuBar</a></span>(<a href=\"../../acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a>&nbsp;paramProgramMenuBar)</code>&nbsp;</td>\n</tr>\n<tr id=\"i69\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#setReadBooleanRepromptMessage-java.lang.String-\">setReadBooleanRepromptMessage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message)</code>&nbsp;</td>\n</tr>\n<tr id=\"i70\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#setReadDoubleDefaultPrompt-java.lang.String-\">setReadDoubleDefaultPrompt</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt)</code>&nbsp;</td>\n</tr>\n<tr id=\"i71\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#setReadDoubleRepromptMessage-java.lang.String-\">setReadDoubleRepromptMessage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message)</code>&nbsp;</td>\n</tr>\n<tr id=\"i72\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#setReadIntDefaultPrompt-java.lang.String-\">setReadIntDefaultPrompt</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt)</code>&nbsp;</td>\n</tr>\n<tr id=\"i73\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#setReadIntRepromptMessage-java.lang.String-\">setReadIntRepromptMessage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message)</code>&nbsp;</td>\n</tr>\n<tr id=\"i74\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#showErrorMessage-java.lang.String-\">showErrorMessage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</code>&nbsp;</td>\n</tr>\n<tr id=\"i75\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/IOConsole.html#updateMenuBar-acm.program.ProgramMenuBar-\">updateMenuBar</a></span>(<a href=\"../../acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a>&nbsp;paramProgramMenuBar)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.lang.String-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">addContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addImpl-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">addImpl</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addNotify--\" title=\"class or interface in java.awt\">addNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#applyComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">applyComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#areFocusTraversalKeysSet-int-\" title=\"class or interface in java.awt\">areFocusTraversalKeysSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#countComponents--\" title=\"class or interface in java.awt\">countComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#deliverEvent-java.awt.Event-\" title=\"class or interface in java.awt\">deliverEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#doLayout--\" title=\"class or interface in java.awt\">doLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-int-int-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getAlignmentX--\" title=\"class or interface in java.awt\">getAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getAlignmentY--\" title=\"class or interface in java.awt\">getAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponent-int-\" title=\"class or interface in java.awt\">getComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-int-int-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentCount--\" title=\"class or interface in java.awt\">getComponentCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponents--\" title=\"class or interface in java.awt\">getComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentZOrder-java.awt.Component-\" title=\"class or interface in java.awt\">getComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getContainerListeners--\" title=\"class or interface in java.awt\">getContainerListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalKeys-int-\" title=\"class or interface in java.awt\">getFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalPolicy--\" title=\"class or interface in java.awt\">getFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getInsets--\" title=\"class or interface in java.awt\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getLayout--\" title=\"class or interface in java.awt\">getLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getListeners-java.lang.Class-\" title=\"class or interface in java.awt\">getListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMaximumSize--\" title=\"class or interface in java.awt\">getMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMousePosition-boolean-\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#insets--\" title=\"class or interface in java.awt\">insets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#invalidate--\" title=\"class or interface in java.awt\">invalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isAncestorOf-java.awt.Component-\" title=\"class or interface in java.awt\">isAncestorOf</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot--\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot-java.awt.Container-\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicyProvider--\" title=\"class or interface in java.awt\">isFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicySet--\" title=\"class or interface in java.awt\">isFocusTraversalPolicySet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isValidateRoot--\" title=\"class or interface in java.awt\">isValidateRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#layout--\" title=\"class or interface in java.awt\">layout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintStream-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintWriter-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#locate-int-int-\" title=\"class or interface in java.awt\">locate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#minimumSize--\" title=\"class or interface in java.awt\">minimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paint-java.awt.Graphics-\" title=\"class or interface in java.awt\">paint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paintComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paramString--\" title=\"class or interface in java.awt\">paramString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#preferredSize--\" title=\"class or interface in java.awt\">preferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#print-java.awt.Graphics-\" title=\"class or interface in java.awt\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#printComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">printComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processContainerEvent-java.awt.event.ContainerEvent-\" title=\"class or interface in java.awt\">processContainerEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">processEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#remove-java.awt.Component-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#remove-int-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeAll--\" title=\"class or interface in java.awt\">removeAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">removeContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeNotify--\" title=\"class or interface in java.awt\">removeNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setComponentZOrder-java.awt.Component-int-\" title=\"class or interface in java.awt\">setComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusCycleRoot-boolean-\" title=\"class or interface in java.awt\">setFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalKeys-int-java.util.Set-\" title=\"class or interface in java.awt\">setFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicy-java.awt.FocusTraversalPolicy-\" title=\"class or interface in java.awt\">setFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicyProvider-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setLayout-java.awt.LayoutManager-\" title=\"class or interface in java.awt\">setLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#transferFocusDownCycle--\" title=\"class or interface in java.awt\">transferFocusDownCycle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#update-java.awt.Graphics-\" title=\"class or interface in java.awt\">update</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validate--\" title=\"class or interface in java.awt\">validate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validateTree--\" title=\"class or interface in java.awt\">validateTree</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#action-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">action</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#add-java.awt.PopupMenu-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">addComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">addFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">addHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">addHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">addInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">addKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">addMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">addMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">addMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#bounds--\" title=\"class or interface in java.awt\">bounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#coalesceEvents-java.awt.AWTEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">coalesceEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-int-int-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-java.awt.Point-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-java.awt.image.ImageProducer-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-int-int-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-java.awt.ImageCapabilities-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disable--\" title=\"class or interface in java.awt\">disable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disableEvents-long-\" title=\"class or interface in java.awt\">disableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#dispatchEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">dispatchEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable--\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable-boolean-\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableEvents-long-\" title=\"class or interface in java.awt\">enableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableInputMethods-boolean-\" title=\"class or interface in java.awt\">enableInputMethods</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-boolean-boolean-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-byte-byte-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-char-char-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-double-double-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-float-float-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-int-int-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-long-long-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-short-short-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getAccessibleContext--\" title=\"class or interface in java.awt\">getAccessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBackground--\" title=\"class or interface in java.awt\">getBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBaseline-int-int-\" title=\"class or interface in java.awt\">getBaseline</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBaselineResizeBehavior--\" title=\"class or interface in java.awt\">getBaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds--\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getColorModel--\" title=\"class or interface in java.awt\">getColorModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentListeners--\" title=\"class or interface in java.awt\">getComponentListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentOrientation--\" title=\"class or interface in java.awt\">getComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getCursor--\" title=\"class or interface in java.awt\">getCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getDropTarget--\" title=\"class or interface in java.awt\">getDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusCycleRootAncestor--\" title=\"class or interface in java.awt\">getFocusCycleRootAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusListeners--\" title=\"class or interface in java.awt\">getFocusListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusTraversalKeysEnabled--\" title=\"class or interface in java.awt\">getFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFont--\" title=\"class or interface in java.awt\">getFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFontMetrics-java.awt.Font-\" title=\"class or interface in java.awt\">getFontMetrics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getForeground--\" title=\"class or interface in java.awt\">getForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getGraphics--\" title=\"class or interface in java.awt\">getGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getGraphicsConfiguration--\" title=\"class or interface in java.awt\">getGraphicsConfiguration</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHeight--\" title=\"class or interface in java.awt\">getHeight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyBoundsListeners--\" title=\"class or interface in java.awt\">getHierarchyBoundsListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyListeners--\" title=\"class or interface in java.awt\">getHierarchyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getIgnoreRepaint--\" title=\"class or interface in java.awt\">getIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputContext--\" title=\"class or interface in java.awt\">getInputContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodListeners--\" title=\"class or interface in java.awt\">getInputMethodListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodRequests--\" title=\"class or interface in java.awt\">getInputMethodRequests</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getKeyListeners--\" title=\"class or interface in java.awt\">getKeyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocale--\" title=\"class or interface in java.awt\">getLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation--\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation-java.awt.Point-\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocationOnScreen--\" title=\"class or interface in java.awt\">getLocationOnScreen</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseListeners--\" title=\"class or interface in java.awt\">getMouseListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseMotionListeners--\" title=\"class or interface in java.awt\">getMouseMotionListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMousePosition--\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseWheelListeners--\" title=\"class or interface in java.awt\">getMouseWheelListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getName--\" title=\"class or interface in java.awt\">getName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getParent--\" title=\"class or interface in java.awt\">getParent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPeer--\" title=\"class or interface in java.awt\">getPeer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners--\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners-java.lang.String-\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize--\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getToolkit--\" title=\"class or interface in java.awt\">getToolkit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getTreeLock--\" title=\"class or interface in java.awt\">getTreeLock</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getWidth--\" title=\"class or interface in java.awt\">getWidth</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getX--\" title=\"class or interface in java.awt\">getX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getY--\" title=\"class or interface in java.awt\">getY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#gotFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">gotFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#handleEvent-java.awt.Event-\" title=\"class or interface in java.awt\">handleEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hasFocus--\" title=\"class or interface in java.awt\">hasFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hide--\" title=\"class or interface in java.awt\">hide</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#imageUpdate-java.awt.Image-int-int-int-int-int-\" title=\"class or interface in java.awt\">imageUpdate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#inside-int-int-\" title=\"class or interface in java.awt\">inside</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isBackgroundSet--\" title=\"class or interface in java.awt\">isBackgroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isCursorSet--\" title=\"class or interface in java.awt\">isCursorSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDisplayable--\" title=\"class or interface in java.awt\">isDisplayable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDoubleBuffered--\" title=\"class or interface in java.awt\">isDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isEnabled--\" title=\"class or interface in java.awt\">isEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusable--\" title=\"class or interface in java.awt\">isFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusOwner--\" title=\"class or interface in java.awt\">isFocusOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusTraversable--\" title=\"class or interface in java.awt\">isFocusTraversable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFontSet--\" title=\"class or interface in java.awt\">isFontSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isForegroundSet--\" title=\"class or interface in java.awt\">isForegroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isLightweight--\" title=\"class or interface in java.awt\">isLightweight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMaximumSizeSet--\" title=\"class or interface in java.awt\">isMaximumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMinimumSizeSet--\" title=\"class or interface in java.awt\">isMinimumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isOpaque--\" title=\"class or interface in java.awt\">isOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isPreferredSizeSet--\" title=\"class or interface in java.awt\">isPreferredSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isShowing--\" title=\"class or interface in java.awt\">isShowing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isValid--\" title=\"class or interface in java.awt\">isValid</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isVisible--\" title=\"class or interface in java.awt\">isVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyDown-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyUp-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list--\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintStream-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintWriter-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#location--\" title=\"class or interface in java.awt\">location</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#lostFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">lostFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDown-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDrag-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDrag</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseEnter-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseEnter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseExit-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseExit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseMove-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseMove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseUp-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#move-int-int-\" title=\"class or interface in java.awt\">move</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#nextFocus--\" title=\"class or interface in java.awt\">nextFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#paintAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#postEvent-java.awt.Event-\" title=\"class or interface in java.awt\">postEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#printAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">printAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processComponentEvent-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt\">processComponentEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processFocusEvent-java.awt.event.FocusEvent-\" title=\"class or interface in java.awt\">processFocusEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyBoundsEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyBoundsEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processInputMethodEvent-java.awt.event.InputMethodEvent-\" title=\"class or interface in java.awt\">processInputMethodEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in java.awt\">processKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseEvent-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt\">processMouseEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseMotionEvent-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt\">processMouseMotionEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseWheelEvent-java.awt.event.MouseWheelEvent-\" title=\"class or interface in java.awt\">processMouseWheelEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#remove-java.awt.MenuComponent-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">removeComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">removeFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">removeHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">removeHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">removeInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">removeKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">removeMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">removeMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">removeMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint--\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-int-int-int-int-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-long-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-long-int-int-int-int-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocus-boolean-\" title=\"class or interface in java.awt\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocusInWindow--\" title=\"class or interface in java.awt\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocusInWindow-boolean-\" title=\"class or interface in java.awt\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#reshape-int-int-int-int-\" title=\"class or interface in java.awt\">reshape</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#resize-java.awt.Dimension-\" title=\"class or interface in java.awt\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#resize-int-int-\" title=\"class or interface in java.awt\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#revalidate--\" title=\"class or interface in java.awt\">revalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-int-int-int-int-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">setComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setCursor-java.awt.Cursor-\" title=\"class or interface in java.awt\">setCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setDropTarget-java.awt.dnd.DropTarget-\" title=\"class or interface in java.awt\">setDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setEnabled-boolean-\" title=\"class or interface in java.awt\">setEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusable-boolean-\" title=\"class or interface in java.awt\">setFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusTraversalKeysEnabled-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setIgnoreRepaint-boolean-\" title=\"class or interface in java.awt\">setIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocale-java.util.Locale-\" title=\"class or interface in java.awt\">setLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-int-int-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-java.awt.Point-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setMaximumSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setMinimumSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setName-java.lang.String-\" title=\"class or interface in java.awt\">setName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setPreferredSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-int-int-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setVisible-boolean-\" title=\"class or interface in java.awt\">setVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show--\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show-boolean-\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#size--\" title=\"class or interface in java.awt\">size</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#toString--\" title=\"class or interface in java.awt\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocus--\" title=\"class or interface in java.awt\">transferFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusBackward--\" title=\"class or interface in java.awt\">transferFocusBackward</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusUpCycle--\" title=\"class or interface in java.awt\">transferFocusUpCycle</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"SYSTEM_CONSOLE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SYSTEM_CONSOLE</h4>\n<pre>public static final&nbsp;<a href=\"../../acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a> SYSTEM_CONSOLE</pre>\n</li>\n</ul>\n<a name=\"DEFAULT_FONT\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>DEFAULT_FONT</h4>\n<pre>protected static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a> DEFAULT_FONT</pre>\n</li>\n</ul>\n<a name=\"LINE_SEPARATOR\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>LINE_SEPARATOR</h4>\n<pre>protected static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> LINE_SEPARATOR</pre>\n</li>\n</ul>\n<a name=\"MINIMUM_CONSOLE_WIDTH\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MINIMUM_CONSOLE_WIDTH</h4>\n<pre>protected static final&nbsp;int MINIMUM_CONSOLE_WIDTH</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.io.IOConsole.MINIMUM_CONSOLE_WIDTH\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MINIMUM_CONSOLE_HEIGHT\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>MINIMUM_CONSOLE_HEIGHT</h4>\n<pre>protected static final&nbsp;int MINIMUM_CONSOLE_HEIGHT</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.io.IOConsole.MINIMUM_CONSOLE_HEIGHT\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"IOConsole--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>IOConsole</h4>\n<pre>public&nbsp;IOConsole()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"clear--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clear</h4>\n<pre>public&nbsp;void&nbsp;clear()</pre>\n</li>\n</ul>\n<a name=\"getConsoleModel--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getConsoleModel</h4>\n<pre>public&nbsp;<a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a>&nbsp;getConsoleModel()</pre>\n</li>\n</ul>\n<a name=\"print-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public&nbsp;void&nbsp;print(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>print</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"print-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public final&nbsp;void&nbsp;print(boolean&nbsp;paramBoolean)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>print</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"print-char-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public final&nbsp;void&nbsp;print(char&nbsp;paramChar)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>print</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"print-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public final&nbsp;void&nbsp;print(double&nbsp;paramDouble)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>print</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"print-float-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public final&nbsp;void&nbsp;print(float&nbsp;paramFloat)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>print</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"print-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public final&nbsp;void&nbsp;print(int&nbsp;paramInt)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>print</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"print-long-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public final&nbsp;void&nbsp;print(long&nbsp;paramLong)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>print</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"print-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public final&nbsp;void&nbsp;print(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;paramObject)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>print</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"println--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public&nbsp;void&nbsp;println()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>println</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"println-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public&nbsp;void&nbsp;println(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>println</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"println-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public final&nbsp;void&nbsp;println(boolean&nbsp;paramBoolean)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>println</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"println-char-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public final&nbsp;void&nbsp;println(char&nbsp;paramChar)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>println</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"println-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public final&nbsp;void&nbsp;println(double&nbsp;paramDouble)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>println</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"println-float-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public final&nbsp;void&nbsp;println(float&nbsp;paramFloat)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>println</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"println-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public final&nbsp;void&nbsp;println(int&nbsp;paramInt)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>println</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"println-long-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public final&nbsp;void&nbsp;println(long&nbsp;paramLong)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>println</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"println-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public final&nbsp;void&nbsp;println(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;paramObject)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>println</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"showErrorMessage-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>showErrorMessage</h4>\n<pre>public&nbsp;void&nbsp;showErrorMessage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>showErrorMessage</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"readLine--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readLine</h4>\n<pre>public final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;readLine()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readLine</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"readLine-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readLine</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;readLine(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readLine</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"readInt--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readInt</h4>\n<pre>public final&nbsp;int&nbsp;readInt()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readInt</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"readInt-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readInt</h4>\n<pre>public final&nbsp;int&nbsp;readInt(int&nbsp;paramInt1,\n                         int&nbsp;paramInt2)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readInt</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"readInt-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readInt</h4>\n<pre>public final&nbsp;int&nbsp;readInt(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readInt</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"readInt-java.lang.String-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readInt</h4>\n<pre>public&nbsp;int&nbsp;readInt(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString,\n                   int&nbsp;paramInt1,\n                   int&nbsp;paramInt2)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readInt</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setReadIntDefaultPrompt-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setReadIntDefaultPrompt</h4>\n<pre>protected&nbsp;void&nbsp;setReadIntDefaultPrompt(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt)</pre>\n</li>\n</ul>\n<a name=\"setReadIntRepromptMessage-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setReadIntRepromptMessage</h4>\n<pre>protected&nbsp;void&nbsp;setReadIntRepromptMessage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message)</pre>\n</li>\n</ul>\n<a name=\"readDouble--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readDouble</h4>\n<pre>public final&nbsp;double&nbsp;readDouble()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readDouble</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"readDouble-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readDouble</h4>\n<pre>public final&nbsp;double&nbsp;readDouble(double&nbsp;paramDouble1,\n                               double&nbsp;paramDouble2)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readDouble</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"readDouble-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readDouble</h4>\n<pre>public final&nbsp;double&nbsp;readDouble(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readDouble</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"readDouble-java.lang.String-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readDouble</h4>\n<pre>public&nbsp;double&nbsp;readDouble(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString,\n                         double&nbsp;paramDouble1,\n                         double&nbsp;paramDouble2)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readDouble</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setReadDoubleDefaultPrompt-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setReadDoubleDefaultPrompt</h4>\n<pre>protected&nbsp;void&nbsp;setReadDoubleDefaultPrompt(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt)</pre>\n</li>\n</ul>\n<a name=\"setReadDoubleRepromptMessage-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setReadDoubleRepromptMessage</h4>\n<pre>protected&nbsp;void&nbsp;setReadDoubleRepromptMessage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message)</pre>\n</li>\n</ul>\n<a name=\"readBoolean--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readBoolean</h4>\n<pre>public final&nbsp;boolean&nbsp;readBoolean()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readBoolean</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"readBoolean-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readBoolean</h4>\n<pre>public final&nbsp;boolean&nbsp;readBoolean(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readBoolean</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"readBoolean-java.lang.String-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readBoolean</h4>\n<pre>public&nbsp;boolean&nbsp;readBoolean(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString1,\n                           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString2,\n                           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString3)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readBoolean</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setReadBooleanRepromptMessage-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setReadBooleanRepromptMessage</h4>\n<pre>protected&nbsp;void&nbsp;setReadBooleanRepromptMessage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message)</pre>\n</li>\n</ul>\n<a name=\"appendSpace-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>appendSpace</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;appendSpace(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n</li>\n</ul>\n<a name=\"getReader--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getReader</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html?is-external=true\" title=\"class or interface in java.io\">BufferedReader</a>&nbsp;getReader()</pre>\n</li>\n</ul>\n<a name=\"getWriter--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getWriter</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintWriter.html?is-external=true\" title=\"class or interface in java.io\">PrintWriter</a>&nbsp;getWriter()</pre>\n</li>\n</ul>\n<a name=\"setExceptionOnError-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setExceptionOnError</h4>\n<pre>public&nbsp;void&nbsp;setExceptionOnError(boolean&nbsp;paramBoolean)</pre>\n</li>\n</ul>\n<a name=\"getExceptionOnError--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getExceptionOnError</h4>\n<pre>public&nbsp;boolean&nbsp;getExceptionOnError()</pre>\n</li>\n</ul>\n<a name=\"setInputStyle-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setInputStyle</h4>\n<pre>public&nbsp;void&nbsp;setInputStyle(int&nbsp;paramInt)</pre>\n</li>\n</ul>\n<a name=\"getInputStyle--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getInputStyle</h4>\n<pre>public&nbsp;int&nbsp;getInputStyle()</pre>\n</li>\n</ul>\n<a name=\"setInputColor-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setInputColor</h4>\n<pre>public&nbsp;void&nbsp;setInputColor(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;paramColor)</pre>\n</li>\n</ul>\n<a name=\"getInputColor--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getInputColor</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;getInputColor()</pre>\n</li>\n</ul>\n<a name=\"setErrorStyle-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setErrorStyle</h4>\n<pre>public&nbsp;void&nbsp;setErrorStyle(int&nbsp;paramInt)</pre>\n</li>\n</ul>\n<a name=\"getErrorStyle--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getErrorStyle</h4>\n<pre>public&nbsp;int&nbsp;getErrorStyle()</pre>\n</li>\n</ul>\n<a name=\"setErrorColor-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setErrorColor</h4>\n<pre>public&nbsp;void&nbsp;setErrorColor(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;paramColor)</pre>\n</li>\n</ul>\n<a name=\"getErrorColor--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getErrorColor</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;getErrorColor()</pre>\n</li>\n</ul>\n<a name=\"setFont-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setFont</h4>\n<pre>public&nbsp;void&nbsp;setFont(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</pre>\n</li>\n</ul>\n<a name=\"setInputScript-java.io.BufferedReader-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setInputScript</h4>\n<pre>public&nbsp;void&nbsp;setInputScript(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html?is-external=true\" title=\"class or interface in java.io\">BufferedReader</a>&nbsp;paramBufferedReader)</pre>\n</li>\n</ul>\n<a name=\"getInputScript--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getInputScript</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html?is-external=true\" title=\"class or interface in java.io\">BufferedReader</a>&nbsp;getInputScript()</pre>\n</li>\n</ul>\n<a name=\"cut--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>cut</h4>\n<pre>public&nbsp;void&nbsp;cut()</pre>\n</li>\n</ul>\n<a name=\"copy--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>copy</h4>\n<pre>public&nbsp;void&nbsp;copy()</pre>\n</li>\n</ul>\n<a name=\"paste--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>paste</h4>\n<pre>public&nbsp;void&nbsp;paste()</pre>\n</li>\n</ul>\n<a name=\"selectAll--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>selectAll</h4>\n<pre>public&nbsp;void&nbsp;selectAll()</pre>\n</li>\n</ul>\n<a name=\"save--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>save</h4>\n<pre>public&nbsp;void&nbsp;save()</pre>\n</li>\n</ul>\n<a name=\"saveAs--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>saveAs</h4>\n<pre>public&nbsp;void&nbsp;saveAs()</pre>\n</li>\n</ul>\n<a name=\"save-java.io.Writer-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>save</h4>\n<pre>public&nbsp;void&nbsp;save(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true\" title=\"class or interface in java.io\">Writer</a>&nbsp;paramWriter)</pre>\n</li>\n</ul>\n<a name=\"printConsole--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>printConsole</h4>\n<pre>public&nbsp;void&nbsp;printConsole()</pre>\n</li>\n</ul>\n<a name=\"printConsole-java.awt.PrintJob-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>printConsole</h4>\n<pre>public&nbsp;void&nbsp;printConsole(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/PrintJob.html?is-external=true\" title=\"class or interface in java.awt\">PrintJob</a>&nbsp;paramPrintJob)</pre>\n</li>\n</ul>\n<a name=\"script--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>script</h4>\n<pre>public&nbsp;void&nbsp;script()</pre>\n</li>\n</ul>\n<a name=\"setMenuBar-acm.program.ProgramMenuBar-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setMenuBar</h4>\n<pre>public&nbsp;void&nbsp;setMenuBar(<a href=\"../../acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a>&nbsp;paramProgramMenuBar)</pre>\n</li>\n</ul>\n<a name=\"getMenuBar--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getMenuBar</h4>\n<pre>public&nbsp;<a href=\"../../acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a>&nbsp;getMenuBar()</pre>\n</li>\n</ul>\n<a name=\"menuAction-java.awt.event.ActionEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>menuAction</h4>\n<pre>public&nbsp;boolean&nbsp;menuAction(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;paramActionEvent)</pre>\n</li>\n</ul>\n<a name=\"isConsoleMenuItem-javax.swing.JMenuItem-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isConsoleMenuItem</h4>\n<pre>public&nbsp;boolean&nbsp;isConsoleMenuItem(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuItem</a>&nbsp;paramJMenuItem)</pre>\n</li>\n</ul>\n<a name=\"updateMenuBar-acm.program.ProgramMenuBar-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>updateMenuBar</h4>\n<pre>public&nbsp;void&nbsp;updateMenuBar(<a href=\"../../acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a>&nbsp;paramProgramMenuBar)</pre>\n</li>\n</ul>\n<a name=\"setBackground-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setBackground</h4>\n<pre>public&nbsp;void&nbsp;setBackground(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;paramColor)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBackground-java.awt.Color-\" title=\"class or interface in java.awt\">setBackground</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setForeground-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setForeground</h4>\n<pre>public&nbsp;void&nbsp;setForeground(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;paramColor)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setForeground-java.awt.Color-\" title=\"class or interface in java.awt\">setForeground</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setFont-java.awt.Font-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setFont</h4>\n<pre>public&nbsp;void&nbsp;setFont(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a>&nbsp;paramFont)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFont-java.awt.Font-\" title=\"class or interface in java.awt\">setFont</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"requestFocus--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>requestFocus</h4>\n<pre>public&nbsp;void&nbsp;requestFocus()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocus--\" title=\"class or interface in java.awt\">requestFocus</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getPreferredSize--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getPreferredSize</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a>&nbsp;getPreferredSize()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getPreferredSize--\" title=\"class or interface in java.awt\">getPreferredSize</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getMinimumSize--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getMinimumSize</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a>&nbsp;getMinimumSize()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMinimumSize--\" title=\"class or interface in java.awt\">getMinimumSize</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"createConsoleModel--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>createConsoleModel</h4>\n<pre>protected&nbsp;<a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a>&nbsp;createConsoleModel()</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/io/SimpleScanner.html\" title=\"class in acm.io\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/io/IOConsole.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"IOConsole.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.java.awt.Container\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/io/SimpleScanner.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:02 PDT 2017 -->\n<title>SimpleScanner</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"SimpleScanner\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":9,\"i8\":9,\"i9\":9,\"i10\":9,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":10,\"i16\":10,\"i17\":10,\"i18\":10,\"i19\":10,\"i20\":10,\"i21\":10,\"i22\":10,\"i23\":10,\"i24\":10,\"i25\":10,\"i26\":10,\"i27\":10,\"i28\":10,\"i29\":10,\"i30\":10,\"i31\":10,\"i32\":10,\"i33\":10,\"i34\":10,\"i35\":10,\"i36\":10,\"i37\":10,\"i38\":10,\"i39\":10,\"i40\":10,\"i41\":10,\"i42\":10,\"i43\":10,\"i44\":10,\"i45\":10,\"i46\":10,\"i47\":10,\"i48\":10,\"i49\":10,\"i50\":10,\"i51\":9,\"i52\":9,\"i53\":10,\"i54\":10,\"i55\":9,\"i56\":9,\"i57\":10,\"i58\":10,\"i59\":10,\"i60\":10,\"i61\":10,\"i62\":10,\"i63\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/io/IOConsole.html\" title=\"class in acm.io\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/io/StandardConsoleModel.html\" title=\"class in acm.io\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/io/SimpleScanner.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"SimpleScanner.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.io</div>\n<h2 title=\"Class SimpleScanner\" class=\"title\">Class SimpleScanner</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.io.SimpleScanner</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public final class <span class=\"typeNameLabel\">SimpleScanner</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n<div class=\"block\">A simple text scanner which can parse primitive types and strings \n using regular expressions.\n\n <p>\n A Scanner breaks its input into tokens using a delimiter pattern,\n which by default matches whitespace. The resulting tokens may then be\n converted into values of different types using the various next methods.\n\n <p>\n This class is based on a subset of the functionality of Sun's\n java.util.Scanner class from J2SE v1.5.0, with some code borrowed \n from the TextReader class written by Stuart Reges of the \n University of Washington.  It should work with 'lazy input' from the\n keyboard as needed.\n\n <p>\n Some notable differences from java.util.Scanner are the following:\n\n <ul><li>\n\n All Java 5-specific features, such as implementing Iterator &lt; String &gt;\n and the public MatchResult match() method, are missing.\n\n </li><li>\n\n The useLocale, findInLine, and findInHorizon methods are not implemented\n and throw an UnsupportedOperationException when called.\n\n </li><li>\n\n This implementation is not guaranteed to exactly match the parsing behavior\n of java.util.Scanner for complex cases.  The java.util.Scanner uses \n sophisticated delimiting between tokens of input; this Scanner simply \n tokenizes on whitespace.  Also, for example, this implementation returns\n true on a call to hasNextFloat() if the upcoming input token is \"2.1F\", \n because this implementation's parsing is based on the primitive wrappers;\n java.util.Scanner would return false in this same case.\n\n </li><li>\n\n The toString text, exception text and exception-throwing behavior \n is not guaranteed to match that of java.util.Scanner.  In particular,\n this implementation includes the offending input line number in its\n NoSuchElementException text to aid debugging.\n\n </li><li>\n\n This implementation is slower than java.util.Scanner, partly because it \n does not directly cache input or regular expression patterns for simplicity.\n Since this class is a holdover implementation until widespread adoption of\n Java 5, this was deemed acceptable.\n\n </li></ul>\n\n <p>\n Recent changes:\n\n <ul><li>\n\n 2011-12-05: Fixed bug with scanner.reuse property and System.setIn.\n </li><li>\n 2008-02-27: Fixed bugs: next() w/ trailing spaces; multiple System.in Scanners\n </li><li>\n 2007-08-13: Fixed hasNextLine bug where last line doesn't have a trailing \\n .\n </li><li>\n 2007-07-27: Added -Dscanner.workingdir=DIR option for Grade-It.\n </li><li>\n 2007-07-18: More hanging input bug fixes for Grade-It system.\n </li><li>\n 2007-07-15: Fixed various input bugs (used to hang after waiting for input).\n\n </li><li>\n\n <ul><li>\n\n 2006-09-18: Added support for multiple Scanners reading the same underlying\n input stream without problems (useful for CSE 14x grading scripts).  Example:\n\n <pre>\n\n % java -Dscanner.reuse=1 MyProgramThatUsesScanner\n\n </pre>\n\n </li><li>\n\n 2005-07-30: Added support for regular expressions, delimiter, hasNext(Pattern),\n next(Pattern), useDelimiter, and skip(Pattern).\n\n </li><li>\n\n 2005-07-12: Added better error messages when wrong token type is read.\n The goal is for CS1 students to be able to more easily find their mistakes.\n\n Added support for command-line flag -Dscanner.echo=1 flag so that the\n Scanner can be made to echo stdin when it is being redirected in from\n a file.  Example:\n\n <pre>\n\n % java -Dscanner.echo=1 MyProgramThatUsesScanner < input.txt\n\n </pre>\n\n </li><li>\n\n 2005-01-22: Fixed a bug where nextLine returned an empty string rather than\n throwing an exception when no more input was available.\n\n </li><li>\n\n 2005-01-01: Renamed all private methods with underscores because students\n were discovering the private hasNextChar method and trying to use it in \n their programs.\n\n </li></ul></div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#SCANNER_APPLET_MODE_PROPERTY_NAME\">SCANNER_APPLET_MODE_PROPERTY_NAME</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#SCANNER_ECHO_PROPERTY_NAME\">SCANNER_ECHO_PROPERTY_NAME</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#SCANNER_REUSE_PROPERTY_NAME\">SCANNER_REUSE_PROPERTY_NAME</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#SCANNER_WORKING_DIR_PROPERTY_NAME\">SCANNER_WORKING_DIR_PROPERTY_NAME</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#SimpleScanner-java.io.File-\">SimpleScanner</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;source)</code>\n<div class=\"block\">Constructs a new Scanner that produces values scanned from the specified \n        file.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#SimpleScanner-java.io.InputStream-\">SimpleScanner</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;source)</code>\n<div class=\"block\">Constructs a new Scanner that produces values scanned from the specified \n     input stream.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#SimpleScanner-java.io.Reader-\">SimpleScanner</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Reader.html?is-external=true\" title=\"class or interface in java.io\">Reader</a>&nbsp;source)</code>\n<div class=\"block\">Constructs a new Scanner that produces values scanned from the specified\n     source.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#SimpleScanner-java.lang.String-\">SimpleScanner</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;source)</code>\n<div class=\"block\">Constructs a new Scanner that produces values scanned from the specified\n     string.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#clearCache--\">clearCache</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#close--\">close</a></span>()</code>\n<div class=\"block\">Closes this scanner.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true\" title=\"class or interface in java.util.regex\">Pattern</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#delimiter--\">delimiter</a></span>()</code>\n<div class=\"block\">Returns the Pattern this Scanner is currently using to match delimiters.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#findInLine-java.util.regex.Pattern-\">findInLine</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true\" title=\"class or interface in java.util.regex\">Pattern</a>&nbsp;pattern)</code>\n<div class=\"block\">Attempts to find the next occurrence of the specified pattern ignoring \n     delimiters.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#findInLine-java.lang.String-\">findInLine</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;pattern)</code>\n<div class=\"block\">Attempts to find the next occurrence of a pattern constructed from the \n     specified string, ignoring delimiters.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#findWithinHorizon-java.util.regex.Pattern-int-\">findWithinHorizon</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true\" title=\"class or interface in java.util.regex\">Pattern</a>&nbsp;pattern,\n                 int&nbsp;horizon)</code>\n<div class=\"block\">Attempts to find the next occurrence of the specified pattern.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#findWithinHorizon-java.lang.String-int-\">findWithinHorizon</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;pattern,\n                 int&nbsp;horizon)</code>\n<div class=\"block\">Attempts to find the next occurrence of a pattern constructed from the \n     specified string, ignoring delimiters.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#getAppletMode--\">getAppletMode</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#getEcho--\">getEcho</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#getReuse--\">getReuse</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#getWorkingDir--\">getWorkingDir</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#hasNext--\">hasNext</a></span>()</code>\n<div class=\"block\">Returns true if this scanner has another token in its input.</div>\n</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#hasNext-java.util.regex.Pattern-\">hasNext</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true\" title=\"class or interface in java.util.regex\">Pattern</a>&nbsp;pattern)</code>\n<div class=\"block\">Returns true if the next complete token matches the specified pattern.</div>\n</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#hasNext-java.lang.String-\">hasNext</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;pattern)</code>\n<div class=\"block\">Returns the next token if it matches the pattern constructed from the \n     specified string.</div>\n</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#hasNextBigDecimal--\">hasNextBigDecimal</a></span>()</code>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted\n     as a BigDecimal using the nextBigDecimal() method.</div>\n</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#hasNextBigInteger--\">hasNextBigInteger</a></span>()</code>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted\n     as a BigInteger in the default radix using the nextBigInteger() method.</div>\n</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#hasNextBigInteger-int-\">hasNextBigInteger</a></span>(int&nbsp;radix)</code>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted as\n     a BigInteger in the specified radix using the nextBigInteger() method.</div>\n</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#hasNextBoolean--\">hasNextBoolean</a></span>()</code>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted as\n     a boolean value.</div>\n</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#hasNextByte--\">hasNextByte</a></span>()</code>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted as \n     a byte value in the default radix using the nextByte() method.</div>\n</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#hasNextByte-int-\">hasNextByte</a></span>(int&nbsp;radix)</code>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted as\n     a byte value in the specified radix using the nextByte() method.</div>\n</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#hasNextDouble--\">hasNextDouble</a></span>()</code>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted as\n     a double value using the nextDouble() method.</div>\n</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#hasNextFloat--\">hasNextFloat</a></span>()</code>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted as\n     a float value using the nextFloat() method.</div>\n</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#hasNextInt--\">hasNextInt</a></span>()</code>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted as\n     an int value in the default radix using the nextInt() method.</div>\n</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#hasNextInt-int-\">hasNextInt</a></span>(int&nbsp;radix)</code>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted as \n     an int value in the specified radix using the nextInt() method.</div>\n</td>\n</tr>\n<tr id=\"i24\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#hasNextLine--\">hasNextLine</a></span>()</code>\n<div class=\"block\">Returns true if there is another line in the input of this scanner.</div>\n</td>\n</tr>\n<tr id=\"i25\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#hasNextLong--\">hasNextLong</a></span>()</code>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted as\n     a long value in the default radix using the nextLong() method.</div>\n</td>\n</tr>\n<tr id=\"i26\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#hasNextLong-int-\">hasNextLong</a></span>(int&nbsp;radix)</code>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted as\n     a long value in the specified radix using the nextLong() method.</div>\n</td>\n</tr>\n<tr id=\"i27\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#hasNextShort--\">hasNextShort</a></span>()</code>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted as \n     a short value in the default radix using the nextShort() method.</div>\n</td>\n</tr>\n<tr id=\"i28\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#hasNextShort-int-\">hasNextShort</a></span>(int&nbsp;radix)</code>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted as\n     a short value in the specified radix using the nextShort() method.</div>\n</td>\n</tr>\n<tr id=\"i29\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#ioException--\">ioException</a></span>()</code>\n<div class=\"block\">Returns the IOException last thrown by this Scanner.</div>\n</td>\n</tr>\n<tr id=\"i30\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true\" title=\"class or interface in java.util\">Locale</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#locale--\">locale</a></span>()</code>\n<div class=\"block\">Returns this scanner's locale.</div>\n</td>\n</tr>\n<tr id=\"i31\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#next--\">next</a></span>()</code>\n<div class=\"block\">Finds and returns the next complete token from this scanner.</div>\n</td>\n</tr>\n<tr id=\"i32\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#next-java.util.regex.Pattern-\">next</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true\" title=\"class or interface in java.util.regex\">Pattern</a>&nbsp;pattern)</code>\n<div class=\"block\">Returns the next token if it matches the specified pattern.</div>\n</td>\n</tr>\n<tr id=\"i33\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#next-java.lang.String-\">next</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;pattern)</code>\n<div class=\"block\">Returns the next token if it matches the pattern constructed from the \n     specified string.</div>\n</td>\n</tr>\n<tr id=\"i34\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html?is-external=true\" title=\"class or interface in java.math\">BigDecimal</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#nextBigDecimal--\">nextBigDecimal</a></span>()</code>\n<div class=\"block\">Scans the next token of the input as a BigDecimal.</div>\n</td>\n</tr>\n<tr id=\"i35\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/math/BigInteger.html?is-external=true\" title=\"class or interface in java.math\">BigInteger</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#nextBigInteger--\">nextBigInteger</a></span>()</code>\n<div class=\"block\">Scans the next token of the input as a BigInteger.</div>\n</td>\n</tr>\n<tr id=\"i36\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/math/BigInteger.html?is-external=true\" title=\"class or interface in java.math\">BigInteger</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#nextBigInteger-int-\">nextBigInteger</a></span>(int&nbsp;radix)</code>\n<div class=\"block\">Scans the next token of the input as a BigInteger.</div>\n</td>\n</tr>\n<tr id=\"i37\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#nextBoolean--\">nextBoolean</a></span>()</code>\n<div class=\"block\">Scans the next token of the input into a boolean value and returns that\n     value.</div>\n</td>\n</tr>\n<tr id=\"i38\" class=\"altColor\">\n<td class=\"colFirst\"><code>byte</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#nextByte--\">nextByte</a></span>()</code>\n<div class=\"block\">Scans the next token of the input as a byte.</div>\n</td>\n</tr>\n<tr id=\"i39\" class=\"rowColor\">\n<td class=\"colFirst\"><code>byte</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#nextByte-int-\">nextByte</a></span>(int&nbsp;radix)</code>\n<div class=\"block\">Scans the next token of the input as a byte.</div>\n</td>\n</tr>\n<tr id=\"i40\" class=\"altColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#nextDouble--\">nextDouble</a></span>()</code>\n<div class=\"block\">Scans the next token of the input as a double.</div>\n</td>\n</tr>\n<tr id=\"i41\" class=\"rowColor\">\n<td class=\"colFirst\"><code>float</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#nextFloat--\">nextFloat</a></span>()</code>\n<div class=\"block\">Scans the next token of the input as a float.</div>\n</td>\n</tr>\n<tr id=\"i42\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#nextInt--\">nextInt</a></span>()</code>\n<div class=\"block\">Scans the next token of the input as an int.</div>\n</td>\n</tr>\n<tr id=\"i43\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#nextInt-int-\">nextInt</a></span>(int&nbsp;radix)</code>\n<div class=\"block\">Scans the next token of the input as an int.</div>\n</td>\n</tr>\n<tr id=\"i44\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#nextLine--\">nextLine</a></span>()</code>\n<div class=\"block\">Advances this scanner past the current line and returns the input that was\n     skipped.</div>\n</td>\n</tr>\n<tr id=\"i45\" class=\"rowColor\">\n<td class=\"colFirst\"><code>long</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#nextLong--\">nextLong</a></span>()</code>\n<div class=\"block\">Scans the next token of the input as a long.</div>\n</td>\n</tr>\n<tr id=\"i46\" class=\"altColor\">\n<td class=\"colFirst\"><code>long</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#nextLong-int-\">nextLong</a></span>(int&nbsp;radix)</code>\n<div class=\"block\">Scans the next token of the input as a long.</div>\n</td>\n</tr>\n<tr id=\"i47\" class=\"rowColor\">\n<td class=\"colFirst\"><code>short</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#nextShort--\">nextShort</a></span>()</code>\n<div class=\"block\">Scans the next token of the input as a short.</div>\n</td>\n</tr>\n<tr id=\"i48\" class=\"altColor\">\n<td class=\"colFirst\"><code>short</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#nextShort-int-\">nextShort</a></span>(int&nbsp;radix)</code>\n<div class=\"block\">Scans the next token of the input as a short.</div>\n</td>\n</tr>\n<tr id=\"i49\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#radix--\">radix</a></span>()</code>\n<div class=\"block\">Returns this scanner's default radix.</div>\n</td>\n</tr>\n<tr id=\"i50\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#remove--\">remove</a></span>()</code>\n<div class=\"block\">The remove operation is not supported by this implementation of Iterator.</div>\n</td>\n</tr>\n<tr id=\"i51\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#setAppletMode-boolean-\">setAppletMode</a></span>(boolean&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i52\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#setEcho-boolean-\">setEcho</a></span>(boolean&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i53\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#setEchoForce-boolean-\">setEchoForce</a></span>(boolean&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i54\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#setEchoStream-java.io.PrintStream-\">setEchoStream</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true\" title=\"class or interface in java.io\">PrintStream</a>&nbsp;stream)</code>&nbsp;</td>\n</tr>\n<tr id=\"i55\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#setReuse-boolean-\">setReuse</a></span>(boolean&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i56\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#setWorkingDir-java.lang.String-\">setWorkingDir</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i57\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#skip-java.util.regex.Pattern-\">skip</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true\" title=\"class or interface in java.util.regex\">Pattern</a>&nbsp;pattern)</code>\n<div class=\"block\">Skips input that matches the specified pattern, ignoring delimiters.</div>\n</td>\n</tr>\n<tr id=\"i58\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#skip-java.lang.String-\">skip</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;pattern)</code>\n<div class=\"block\">Skips input that matches a pattern constructed from the specified string.</div>\n</td>\n</tr>\n<tr id=\"i59\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#toString--\">toString</a></span>()</code>\n<div class=\"block\">Returns the string representation of this Scanner.</div>\n</td>\n</tr>\n<tr id=\"i60\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#useDelimiter-java.util.regex.Pattern-\">useDelimiter</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true\" title=\"class or interface in java.util.regex\">Pattern</a>&nbsp;pattern)</code>\n<div class=\"block\">Sets this scanner's delimiting pattern to the specified pattern.</div>\n</td>\n</tr>\n<tr id=\"i61\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#useDelimiter-java.lang.String-\">useDelimiter</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;pattern)</code>\n<div class=\"block\">Sets this scanner's delimiting pattern to a pattern constructed from the specified String.</div>\n</td>\n</tr>\n<tr id=\"i62\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#useLocale-java.util.Locale-\">useLocale</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true\" title=\"class or interface in java.util\">Locale</a>&nbsp;locale)</code>\n<div class=\"block\">Sets this scanner's locale to the specified locale.</div>\n</td>\n</tr>\n<tr id=\"i63\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SimpleScanner.html#useRadix-int-\">useRadix</a></span>(int&nbsp;radix)</code>\n<div class=\"block\">Sets this scanner's default radix to the specified radix.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"SCANNER_APPLET_MODE_PROPERTY_NAME\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SCANNER_APPLET_MODE_PROPERTY_NAME</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> SCANNER_APPLET_MODE_PROPERTY_NAME</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.io.SimpleScanner.SCANNER_APPLET_MODE_PROPERTY_NAME\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"SCANNER_ECHO_PROPERTY_NAME\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SCANNER_ECHO_PROPERTY_NAME</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> SCANNER_ECHO_PROPERTY_NAME</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.io.SimpleScanner.SCANNER_ECHO_PROPERTY_NAME\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"SCANNER_REUSE_PROPERTY_NAME\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SCANNER_REUSE_PROPERTY_NAME</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> SCANNER_REUSE_PROPERTY_NAME</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.io.SimpleScanner.SCANNER_REUSE_PROPERTY_NAME\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"SCANNER_WORKING_DIR_PROPERTY_NAME\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>SCANNER_WORKING_DIR_PROPERTY_NAME</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> SCANNER_WORKING_DIR_PROPERTY_NAME</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.io.SimpleScanner.SCANNER_WORKING_DIR_PROPERTY_NAME\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"SimpleScanner-java.io.File-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SimpleScanner</h4>\n<pre>public&nbsp;SimpleScanner(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;source)</pre>\n<div class=\"block\">Constructs a new Scanner that produces values scanned from the specified \n        file. Bytes from the file are converted into characters using the \n        underlying platform's default charset.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>source</code> - A file to be scanned</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"../../stanford/cs106/io/IORuntimeException.html\" title=\"class in stanford.cs106.io\">IORuntimeException</a></code> - if source is not found or cannot be read</dd>\n</dl>\n</li>\n</ul>\n<a name=\"SimpleScanner-java.io.InputStream-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SimpleScanner</h4>\n<pre>public&nbsp;SimpleScanner(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;source)</pre>\n<div class=\"block\">Constructs a new Scanner that produces values scanned from the specified \n     input stream. Bytes from the stream are converted into characters using \n     the underlying platform's default charset.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>source</code> - An input stream to be scanned</dd>\n</dl>\n</li>\n</ul>\n<a name=\"SimpleScanner-java.io.Reader-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SimpleScanner</h4>\n<pre>public&nbsp;SimpleScanner(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Reader.html?is-external=true\" title=\"class or interface in java.io\">Reader</a>&nbsp;source)</pre>\n<div class=\"block\">Constructs a new Scanner that produces values scanned from the specified\n     source.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>source</code> - A character source to scan</dd>\n</dl>\n</li>\n</ul>\n<a name=\"SimpleScanner-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>SimpleScanner</h4>\n<pre>public&nbsp;SimpleScanner(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;source)</pre>\n<div class=\"block\">Constructs a new Scanner that produces values scanned from the specified\n     string.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>source</code> - A string to scan</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"clearCache--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clearCache</h4>\n<pre>public static&nbsp;void&nbsp;clearCache()</pre>\n</li>\n</ul>\n<a name=\"getEcho--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getEcho</h4>\n<pre>public static&nbsp;boolean&nbsp;getEcho()</pre>\n</li>\n</ul>\n<a name=\"getAppletMode--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getAppletMode</h4>\n<pre>public static&nbsp;boolean&nbsp;getAppletMode()</pre>\n</li>\n</ul>\n<a name=\"getReuse--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getReuse</h4>\n<pre>public static&nbsp;boolean&nbsp;getReuse()</pre>\n</li>\n</ul>\n<a name=\"getWorkingDir--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getWorkingDir</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getWorkingDir()</pre>\n</li>\n</ul>\n<a name=\"setAppletMode-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setAppletMode</h4>\n<pre>public static&nbsp;void&nbsp;setAppletMode(boolean&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"setEcho-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setEcho</h4>\n<pre>public static&nbsp;void&nbsp;setEcho(boolean&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"setReuse-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setReuse</h4>\n<pre>public static&nbsp;void&nbsp;setReuse(boolean&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"setWorkingDir-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setWorkingDir</h4>\n<pre>public static&nbsp;void&nbsp;setWorkingDir(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"close--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>close</h4>\n<pre>public&nbsp;void&nbsp;close()</pre>\n<div class=\"block\">Closes this scanner.\n\n     <p>\n     If this scanner is already closed then invoking \n     this method will have no effect.</div>\n</li>\n</ul>\n<a name=\"delimiter--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>delimiter</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true\" title=\"class or interface in java.util.regex\">Pattern</a>&nbsp;delimiter()</pre>\n<div class=\"block\">Returns the Pattern this Scanner is currently using to match delimiters.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>this scanner's delimiting pattern.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"findWithinHorizon-java.util.regex.Pattern-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>findWithinHorizon</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;findWithinHorizon(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true\" title=\"class or interface in java.util.regex\">Pattern</a>&nbsp;pattern,\n                                int&nbsp;horizon)</pre>\n<div class=\"block\">Attempts to find the next occurrence of the specified pattern.\n\n     This method searches through the input up to the specified search \n     horizon, ignoring delimiters. If the pattern is found the scanner \n     advances past the input that matched and returns the string that \n     matched the pattern. If no such pattern is detected then the null is\n     returned and the scanner's position remains unchanged. This method may\n     block waiting for input that matches the pattern.\n\n     A scanner will never search more than horizon code points beyond its\n     current position. Note that a match may be clipped by the horizon;\n     that is, an arbitrary match result may have been different if the \n     horizon had been larger. The scanner treats the horizon as a \n     transparent, non-anchoring bound.\n\n     If horizon is 0, then the horizon is ignored and this method continues\n     to search through the input looking for the specified pattern without\n     bound. In this case it may buffer all of the input searching for the \n     pattern.\n\n     If horizon is negative, then an IllegalArgumentException is thrown.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>pattern</code> - the pattern to scan for</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the text that matched the specified pattern</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - if horizon is negative</dd>\n</dl>\n</li>\n</ul>\n<a name=\"findWithinHorizon-java.lang.String-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>findWithinHorizon</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;findWithinHorizon(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;pattern,\n                                int&nbsp;horizon)</pre>\n<div class=\"block\">Attempts to find the next occurrence of a pattern constructed from the \n     specified string, ignoring delimiters.\n\n     An invocation of this method of the form findWithinHorizon(pattern) \n     behaves in exactly the same way as the invocation \n     findWithinHorizon(Pattern.compile(pattern, horizon)).</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>pattern</code> - a string specifying the pattern to search for</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the text that matched the specified pattern</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - if horizon is negative</dd>\n</dl>\n</li>\n</ul>\n<a name=\"findInLine-java.util.regex.Pattern-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>findInLine</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;findInLine(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true\" title=\"class or interface in java.util.regex\">Pattern</a>&nbsp;pattern)</pre>\n<div class=\"block\">Attempts to find the next occurrence of the specified pattern ignoring \n     delimiters. If the pattern is found before the next line separator, the\n     scanner advances past the input that matched and returns the string that\n     matched the pattern. If no such pattern is detected in the input up to \n     the next line separator, then null is returned and the scanner's position\n     is unchanged. This method may block waiting for input that matches the \n     pattern.\n\n     Since this method continues to search through the input looking for the \n     specified pattern, it may buffer all of the input searching for the \n     desired token if no line separators are present.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>pattern</code> - the pattern to scan for</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the text that matched the specified pattern</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"findInLine-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>findInLine</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;findInLine(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;pattern)</pre>\n<div class=\"block\">Attempts to find the next occurrence of a pattern constructed from the \n     specified string, ignoring delimiters.\n\n     An invocation of this method of the form findInLine(pattern) behaves in \n     exactly the same way as the invocation findInLine(Pattern.compile(pattern)).</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>pattern</code> - a string specifying the pattern to search for</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the text that matched the specified pattern</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"hasNext--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hasNext</h4>\n<pre>public&nbsp;boolean&nbsp;hasNext()</pre>\n<div class=\"block\">Returns true if this scanner has another token in its input. This method \n     may block while waiting for input to scan. The scanner does not advance \n     past any input.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>true if and only if this scanner has another token</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"hasNext-java.util.regex.Pattern-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hasNext</h4>\n<pre>public&nbsp;boolean&nbsp;hasNext(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true\" title=\"class or interface in java.util.regex\">Pattern</a>&nbsp;pattern)</pre>\n<div class=\"block\">Returns true if the next complete token matches the specified pattern.\n     A complete token is prefixed and postfixed by input that matches\n     the delimiter pattern. This method may block while waiting for input.\n     The scanner does not advance past any input.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>pattern</code> - the pattern to scan for</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>true if and only if this scanner has another token matching\n             the specified pattern</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"hasNext-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hasNext</h4>\n<pre>public&nbsp;boolean&nbsp;hasNext(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;pattern)</pre>\n<div class=\"block\">Returns the next token if it matches the pattern constructed from the \n     specified string.  If the match is successful, the scanner advances \n     past the input that matched the pattern.\n\n     An invocation of this method of the form next(pattern)\n     behaves in exactly the same way as the invocation \n     next(Pattern.compile(pattern)).</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>pattern</code> - a string specifying the pattern to scan</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the next token</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/NoSuchElementException.html?is-external=true\" title=\"class or interface in java.util\">NoSuchElementException</a></code> - if no such tokens are available</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"hasNextBigDecimal--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hasNextBigDecimal</h4>\n<pre>public&nbsp;boolean&nbsp;hasNextBigDecimal()</pre>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted\n     as a BigDecimal using the nextBigDecimal() method. The scanner does not \n     advance past any input.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>true if and only if this scanner's next token is a valid BigDecimal</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"hasNextBigInteger--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hasNextBigInteger</h4>\n<pre>public&nbsp;boolean&nbsp;hasNextBigInteger()</pre>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted\n     as a BigInteger in the default radix using the nextBigInteger() method. \n     The scanner does not advance past any input.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>true if and only if this scanner's next token is a valid BigInteger</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"hasNextBigInteger-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hasNextBigInteger</h4>\n<pre>public&nbsp;boolean&nbsp;hasNextBigInteger(int&nbsp;radix)</pre>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted as\n     a BigInteger in the specified radix using the nextBigInteger() method. The \n     scanner does not advance past any input.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>radix</code> - the radix used to interpret the token as an integer</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>true if and only if this scanner's next token is a valid BigInteger</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"hasNextBoolean--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hasNextBoolean</h4>\n<pre>public&nbsp;boolean&nbsp;hasNextBoolean()</pre>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted as\n     a boolean value. The scanner does not advance past the input that matched.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>true if and only if this scanner's next token is a valid boolean value</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"hasNextByte--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hasNextByte</h4>\n<pre>public&nbsp;boolean&nbsp;hasNextByte()</pre>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted as \n     a byte value in the default radix using the nextByte() method. The scanner \n     does not advance past any input.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>true if and only if this scanner's next token is a valid byte value</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"hasNextByte-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hasNextByte</h4>\n<pre>public&nbsp;boolean&nbsp;hasNextByte(int&nbsp;radix)</pre>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted as\n     a byte value in the specified radix using the nextByte() method. The scanner \n     does not advance past any input.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>radix</code> - the radix used to interpret the token as a byte value</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>true if and only if this scanner's next token is a valid byte value</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"hasNextDouble--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hasNextDouble</h4>\n<pre>public&nbsp;boolean&nbsp;hasNextDouble()</pre>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted as\n     a double value using the nextDouble() method. The scanner does not advance \n     past any input.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>true if and only if this scanner's next token is a valid double value</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"hasNextFloat--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hasNextFloat</h4>\n<pre>public&nbsp;boolean&nbsp;hasNextFloat()</pre>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted as\n     a float value using the nextFloat() method. The scanner does not advance past \n     any input.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>true if and only if this scanner's next token is a valid float value</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"hasNextInt--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hasNextInt</h4>\n<pre>public&nbsp;boolean&nbsp;hasNextInt()</pre>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted as\n     an int value in the default radix using the nextInt() method. The scanner\n     does not advance past any input.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>true if and only if this scanner's next token is a valid int value</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"hasNextInt-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hasNextInt</h4>\n<pre>public&nbsp;boolean&nbsp;hasNextInt(int&nbsp;radix)</pre>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted as \n     an int value in the specified radix using the nextInt() method. The scanner \n     does not advance past any input.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>radix</code> - the radix used to interpret the token as an int value</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>true if and only if this scanner's next token is a valid int value</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"hasNextLine--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hasNextLine</h4>\n<pre>public&nbsp;boolean&nbsp;hasNextLine()</pre>\n<div class=\"block\">Returns true if there is another line in the input of this scanner. This\n     method may block while waiting for input. The scanner does not advance past \n     any input.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>true if and only if this scanner has another line of input</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"hasNextLong--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hasNextLong</h4>\n<pre>public&nbsp;boolean&nbsp;hasNextLong()</pre>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted as\n     a long value in the default radix using the nextLong() method. The scanner\n     does not advance past any input.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>true if and only if this scanner's next token is a valid long value</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"hasNextLong-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hasNextLong</h4>\n<pre>public&nbsp;boolean&nbsp;hasNextLong(int&nbsp;radix)</pre>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted as\n     a long value in the specified radix using the nextLong() method. The scanner\n     does not advance past any input.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>true if and only if this scanner's next token is a valid long value</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"hasNextShort--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hasNextShort</h4>\n<pre>public&nbsp;boolean&nbsp;hasNextShort()</pre>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted as \n     a short value in the default radix using the nextShort() method. The scanner \n     does not advance past any input.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>true if and only if this scanner's next token is a valid short value\n     in the default radix</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"hasNextShort-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hasNextShort</h4>\n<pre>public&nbsp;boolean&nbsp;hasNextShort(int&nbsp;radix)</pre>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted as\n     a short value in the specified radix using the nextShort() method. The scanner\n     does not advance past any input.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>radix</code> - the radix used to interpret the token as a short value</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>true if and only if this scanner's next token is a valid short value\n     in the specified radix</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"ioException--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>ioException</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a>&nbsp;ioException()</pre>\n<div class=\"block\">Returns the IOException last thrown by this Scanner. This method returns\n     null if no such exception exists.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the last exception thrown by this scanner's readable</dd>\n</dl>\n</li>\n</ul>\n<a name=\"locale--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>locale</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true\" title=\"class or interface in java.util\">Locale</a>&nbsp;locale()</pre>\n<div class=\"block\">Returns this scanner's locale.\n\n     A scanner's locale affects many elements of its default primitive matching regular expressions.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>this scanner's locale</dd>\n</dl>\n</li>\n</ul>\n<a name=\"next--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>next</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;next()</pre>\n<div class=\"block\">Finds and returns the next complete token from this scanner. A complete \n     token is preceded and followed by input that matches the delimiter pattern.\n     This method may block while waiting for input to scan, even if a previous \n     invocation of hasNext() returned true.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the next token</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/NoSuchElementException.html?is-external=true\" title=\"class or interface in java.util\">NoSuchElementException</a></code> - if the input is exhausted</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"next-java.util.regex.Pattern-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>next</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;next(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true\" title=\"class or interface in java.util.regex\">Pattern</a>&nbsp;pattern)</pre>\n<div class=\"block\">Returns the next token if it matches the specified pattern. This \n     method may block while waiting for input to scan, even if a previous\n     invocation of hasNext(Pattern) returned true. \n     If the match is successful, the scanner advances past the input that \n     matched the pattern.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>pattern</code> - the pattern to scan for</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the next token</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/NoSuchElementException.html?is-external=true\" title=\"class or interface in java.util\">NoSuchElementException</a></code> - if no more tokens are available</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"next-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>next</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;next(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;pattern)</pre>\n<div class=\"block\">Returns the next token if it matches the pattern constructed from the \n     specified string.  If the match is successful, the scanner advances \n     past the input that matched the pattern.\n\n     An invocation of this method of the form next(pattern)\n     behaves in exactly the same way as the invocation \n     next(Pattern.compile(pattern)).</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>pattern</code> - a string specifying the pattern to scan</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the next token</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/NoSuchElementException.html?is-external=true\" title=\"class or interface in java.util\">NoSuchElementException</a></code> - if no such tokens are available</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"nextBigDecimal--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>nextBigDecimal</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html?is-external=true\" title=\"class or interface in java.math\">BigDecimal</a>&nbsp;nextBigDecimal()</pre>\n<div class=\"block\">Scans the next token of the input as a BigDecimal.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the BigDecimal scanned from the input</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/NoSuchElementException.html?is-external=true\" title=\"class or interface in java.util\">NoSuchElementException</a></code> - if the input is exhausted</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"nextBigInteger--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>nextBigInteger</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/math/BigInteger.html?is-external=true\" title=\"class or interface in java.math\">BigInteger</a>&nbsp;nextBigInteger()</pre>\n<div class=\"block\">Scans the next token of the input as a BigInteger.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the BigInteger scanned from the input</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/NoSuchElementException.html?is-external=true\" title=\"class or interface in java.util\">NoSuchElementException</a></code> - if the input is exhausted</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"nextBigInteger-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>nextBigInteger</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/math/BigInteger.html?is-external=true\" title=\"class or interface in java.math\">BigInteger</a>&nbsp;nextBigInteger(int&nbsp;radix)</pre>\n<div class=\"block\">Scans the next token of the input as a BigInteger.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>radix</code> - the radix used to interpret the token</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the BigInteger scanned from the input</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/NoSuchElementException.html?is-external=true\" title=\"class or interface in java.util\">NoSuchElementException</a></code> - if the input is exhausted</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"nextBoolean--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>nextBoolean</h4>\n<pre>public&nbsp;boolean&nbsp;nextBoolean()</pre>\n<div class=\"block\">Scans the next token of the input into a boolean value and returns that\n     value. This method will throw FormatException if the next token cannot \n     be translated into a valid boolean value. If the match is successful, \n     the scanner advances past the input that matched.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the boolean scanned from the input</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/NoSuchElementException.html?is-external=true\" title=\"class or interface in java.util\">NoSuchElementException</a></code> - if the input is exhausted</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"nextByte--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>nextByte</h4>\n<pre>public&nbsp;byte&nbsp;nextByte()</pre>\n<div class=\"block\">Scans the next token of the input as a byte.\n\n     <p>\n     An invocation of this method of the form nextByte() behaves in exactly the\n     same way as the invocation nextByte(radix), where radix is the default radix\n     of this scanner.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the byte scanned from the input</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/NoSuchElementException.html?is-external=true\" title=\"class or interface in java.util\">NoSuchElementException</a></code> - if input is exhausted</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"nextByte-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>nextByte</h4>\n<pre>public&nbsp;byte&nbsp;nextByte(int&nbsp;radix)</pre>\n<div class=\"block\">Scans the next token of the input as a byte.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>radix</code> - the radix used to interpret the token as a byte value</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the byte scanned from the input</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code>InputMismatchException</code> - if the next token does not match the \n     Integer regular expression, or is out of range</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/NoSuchElementException.html?is-external=true\" title=\"class or interface in java.util\">NoSuchElementException</a></code> - if input is exhausted</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"nextDouble--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>nextDouble</h4>\n<pre>public&nbsp;double&nbsp;nextDouble()</pre>\n<div class=\"block\">Scans the next token of the input as a double. This method will throw\n     NumberFormatException if the next token cannot be translated into a valid\n     double value. If the translation is successful, the scanner advances past\n     the input that matched.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the double scanned from the input</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/NoSuchElementException.html?is-external=true\" title=\"class or interface in java.util\">NoSuchElementException</a></code> - if the input is exhausted</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"nextFloat--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>nextFloat</h4>\n<pre>public&nbsp;float&nbsp;nextFloat()</pre>\n<div class=\"block\">Scans the next token of the input as a float. This method will throw\n     NumberFormatException if the next token cannot be translated into a valid\n     float value. If the translation is successful, the scanner advances past\n     the input that matched.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the float scanned from the input</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/NoSuchElementException.html?is-external=true\" title=\"class or interface in java.util\">NoSuchElementException</a></code> - if the input is exhausted</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"nextInt--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>nextInt</h4>\n<pre>public&nbsp;int&nbsp;nextInt()</pre>\n<div class=\"block\">Scans the next token of the input as an int. This method will throw\n     NumberFormatException if the next token cannot be translated into a valid\n     int value. If the translation is successful, the scanner advances past the\n     input that matched.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the int scanned from the input</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/NoSuchElementException.html?is-external=true\" title=\"class or interface in java.util\">NoSuchElementException</a></code> - if the input is exhausted</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"nextInt-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>nextInt</h4>\n<pre>public&nbsp;int&nbsp;nextInt(int&nbsp;radix)</pre>\n<div class=\"block\">Scans the next token of the input as an int. This method will throw\n     FormatException if the next token cannot be translated into a valid \n     int value. If the translation is successful, the scanner advances past the\n     input that matched.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>radix</code> - the radix used to interpret the token as an int value</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the int scanned from the input</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/NoSuchElementException.html?is-external=true\" title=\"class or interface in java.util\">NoSuchElementException</a></code> - if the input is exhausted</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"nextLine--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>nextLine</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;nextLine()</pre>\n<div class=\"block\">Advances this scanner past the current line and returns the input that was\n     skipped. This method returns the rest of the current line, excluding any\n     line separator at the end. The position is set to the beginning of the \n     next line.\n\n     Since this method continues to search through the input looking for a line\n     separator, it may buffer all of the input searching for the line to skip\n     if no line separators are present.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the line that was skipped</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/NoSuchElementException.html?is-external=true\" title=\"class or interface in java.util\">NoSuchElementException</a></code> - if the input is exhausted</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"nextLong--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>nextLong</h4>\n<pre>public&nbsp;long&nbsp;nextLong()</pre>\n<div class=\"block\">Scans the next token of the input as a long. This method will throw\n     NumberFormatException if the next token cannot be translated into a valid\n     long value. If the translation is successful, the scanner advances past the\n     input that matched.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the long scanned from the input</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/NoSuchElementException.html?is-external=true\" title=\"class or interface in java.util\">NoSuchElementException</a></code> - if the input is exhausted</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"nextLong-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>nextLong</h4>\n<pre>public&nbsp;long&nbsp;nextLong(int&nbsp;radix)</pre>\n<div class=\"block\">Scans the next token of the input as a long. This method will throw\n     FormatException if the next token cannot be translated into a valid \n     long value. If the translation is successful, the scanner advances past the\n     input that matched.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>radix</code> - the radix used to interpret the token as a long value</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the long scanned from the input</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/NoSuchElementException.html?is-external=true\" title=\"class or interface in java.util\">NoSuchElementException</a></code> - if the input is exhausted</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"nextShort--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>nextShort</h4>\n<pre>public&nbsp;short&nbsp;nextShort()</pre>\n<div class=\"block\">Scans the next token of the input as a short. This method will throw\n     NumberFormatException if the next token cannot be translated into a valid\n     short value. If the translation is successful, the scanner advances past the\n     input that matched.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the short scanned from the input</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/NoSuchElementException.html?is-external=true\" title=\"class or interface in java.util\">NoSuchElementException</a></code> - if the input is exhausted</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"nextShort-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>nextShort</h4>\n<pre>public&nbsp;short&nbsp;nextShort(int&nbsp;radix)</pre>\n<div class=\"block\">Scans the next token of the input as a short. This method will throw\n     FormatException if the next token cannot be translated into a valid \n     short value. If the translation is successful, the scanner advances past the\n     input that matched.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>radix</code> - the radix used to interpret the token as a short value</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the long scanned from the input</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/NoSuchElementException.html?is-external=true\" title=\"class or interface in java.util\">NoSuchElementException</a></code> - if the input is exhausted</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"radix--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>radix</h4>\n<pre>public&nbsp;int&nbsp;radix()</pre>\n<div class=\"block\">Returns this scanner's default radix.\n\n     <p>\n     A scanner's radix affects elements of its default number matching \n     regular expressions.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the default radix of this scanner</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/NoSuchElementException.html?is-external=true\" title=\"class or interface in java.util\">NoSuchElementException</a></code> - if the input is exhausted</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"remove--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>remove</h4>\n<pre>public&nbsp;void&nbsp;remove()</pre>\n<div class=\"block\">The remove operation is not supported by this implementation of Iterator.</div>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true\" title=\"class or interface in java.lang\">UnsupportedOperationException</a></code> - if this method is invoked.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setEchoForce-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setEchoForce</h4>\n<pre>public&nbsp;void&nbsp;setEchoForce(boolean&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"setEchoStream-java.io.PrintStream-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setEchoStream</h4>\n<pre>public&nbsp;void&nbsp;setEchoStream(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true\" title=\"class or interface in java.io\">PrintStream</a>&nbsp;stream)</pre>\n</li>\n</ul>\n<a name=\"skip-java.util.regex.Pattern-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>skip</h4>\n<pre>public&nbsp;<a href=\"../../acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a>&nbsp;skip(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true\" title=\"class or interface in java.util.regex\">Pattern</a>&nbsp;pattern)</pre>\n<div class=\"block\">Skips input that matches the specified pattern, ignoring delimiters. This\n     method will skip input if an anchored match of the specified pattern \n     succeeds.\n\n     If a match to the specified pattern is not found at the current position,\n     then no input is skipped and a NoSuchElementException is thrown.\n\n     Since this method seeks to match the specified pattern starting at the\n     scanner's current position, patterns that can match a lot of input (\".*\",\n     for example) may cause the scanner to buffer a large amount of input.\n\n     Note that it is possible to skip something without risking a \n     NoSuchElementException by using a pattern that can match nothing, e.g.,\n     sc.skip(\"[ \\t]*\").</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>pattern</code> - a string specifying the pattern to skip over</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>this scanner</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/NoSuchElementException.html?is-external=true\" title=\"class or interface in java.util\">NoSuchElementException</a></code> - if the specified pattern is not found</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"skip-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>skip</h4>\n<pre>public&nbsp;<a href=\"../../acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a>&nbsp;skip(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;pattern)</pre>\n<div class=\"block\">Skips input that matches a pattern constructed from the specified string.\n\n     An invocation of this method of the form skip(pattern) behaves in exactly\n     the same way as the invocation skip(Pattern.compile(pattern)).</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>pattern</code> - a string specifying the pattern to skip over</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>this scanner</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalStateException</a></code> - if this scanner is closed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"toString--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>toString</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;toString()</pre>\n<div class=\"block\">Returns the string representation of this Scanner. The string \n     representation of a Scanner contains information that may be useful \n     for debugging. The exact format is unspecified.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The string representation of this scanner</dd>\n</dl>\n</li>\n</ul>\n<a name=\"useDelimiter-java.util.regex.Pattern-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>useDelimiter</h4>\n<pre>public&nbsp;<a href=\"../../acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a>&nbsp;useDelimiter(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true\" title=\"class or interface in java.util.regex\">Pattern</a>&nbsp;pattern)</pre>\n<div class=\"block\">Sets this scanner's delimiting pattern to the specified pattern.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>pattern</code> - A delimiting pattern</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>this scanner</dd>\n</dl>\n</li>\n</ul>\n<a name=\"useDelimiter-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>useDelimiter</h4>\n<pre>public&nbsp;<a href=\"../../acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a>&nbsp;useDelimiter(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;pattern)</pre>\n<div class=\"block\">Sets this scanner's delimiting pattern to a pattern constructed from the specified String.\n\n     An invocation of this method of the form useDelimiter(pattern) behaves in exactly the same way as the invocation hasDelimiter(Pattern.compile(pattern)).</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>pattern</code> - A string specifying a delimiting pattern</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>this scanner</dd>\n</dl>\n</li>\n</ul>\n<a name=\"useLocale-java.util.Locale-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>useLocale</h4>\n<pre>public&nbsp;<a href=\"../../acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a>&nbsp;useLocale(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true\" title=\"class or interface in java.util\">Locale</a>&nbsp;locale)</pre>\n<div class=\"block\">Sets this scanner's locale to the specified locale.\n\n     A scanner's locale affects many elements of its default primitive matching regular expressions; see localized numbers above.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>locale</code> - A string specifying the locale to use</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>this scanner</dd>\n</dl>\n</li>\n</ul>\n<a name=\"useRadix-int-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>useRadix</h4>\n<pre>public&nbsp;<a href=\"../../acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a>&nbsp;useRadix(int&nbsp;radix)</pre>\n<div class=\"block\">Sets this scanner's default radix to the specified radix.\n\n     <p>\n     A scanner's radix affects elements of its default number matching \n     regular expressions.\n\n     <p>\n     If the radix is less than Character.MIN_RADIX or greater than \n     Character.MAX_RADIX, then an IllegalArgumentException is thrown.</div>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - if radix is out of range</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/io/IOConsole.html\" title=\"class in acm.io\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/io/StandardConsoleModel.html\" title=\"class in acm.io\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/io/SimpleScanner.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"SimpleScanner.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/io/StandardConsoleModel.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:02 PDT 2017 -->\n<title>StandardConsoleModel</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"StandardConsoleModel\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":10,\"i16\":10,\"i17\":10,\"i18\":10,\"i19\":10,\"i20\":10,\"i21\":10,\"i22\":10,\"i23\":10,\"i24\":10,\"i25\":10,\"i26\":10,\"i27\":10,\"i28\":10,\"i29\":10,\"i30\":10,\"i31\":10,\"i32\":10,\"i33\":10,\"i34\":10,\"i35\":10,\"i36\":10,\"i37\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/io/SimpleScanner.html\" title=\"class in acm.io\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/io/SystemConsoleModel.html\" title=\"class in acm.io\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/io/StandardConsoleModel.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"StandardConsoleModel.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.io</div>\n<h2 title=\"Class StandardConsoleModel\" class=\"title\">Class StandardConsoleModel</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.io.StandardConsoleModel</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">StandardConsoleModel</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>\nimplements <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusListener</a>, <a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.io.ConsoleModel\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;acm.io.<a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></h3>\n<code><a href=\"../../acm/io/ConsoleModel.html#ERROR_STYLE\">ERROR_STYLE</a>, <a href=\"../../acm/io/ConsoleModel.html#INPUT_STYLE\">INPUT_STYLE</a>, <a href=\"../../acm/io/ConsoleModel.html#OUTPUT_STYLE\">OUTPUT_STYLE</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/StandardConsoleModel.html#StandardConsoleModel--\">StandardConsoleModel</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/StandardConsoleModel.html#clear--\">clear</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/StandardConsoleModel.html#copy--\">copy</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/StandardConsoleModel.html#cut--\">cut</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/StandardConsoleModel.html#focusGained-java.awt.event.FocusEvent-\">focusGained</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusEvent</a>&nbsp;paramFocusEvent)</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/StandardConsoleModel.html#focusLost-java.awt.event.FocusEvent-\">focusLost</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusEvent</a>&nbsp;paramFocusEvent)</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/StandardConsoleModel.html#getConsole--\">getConsole</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JScrollPane.html?is-external=true\" title=\"class or interface in javax.swing\">JScrollPane</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/StandardConsoleModel.html#getConsolePane--\">getConsolePane</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html?is-external=true\" title=\"class or interface in java.io\">BufferedReader</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/StandardConsoleModel.html#getInputScript--\">getInputScript</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/StandardConsoleModel.html#getLength--\">getLength</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/StandardConsoleModel.html#getOutputColor--\">getOutputColor</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JScrollPane.html?is-external=true\" title=\"class or interface in javax.swing\">JScrollPane</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/StandardConsoleModel.html#getScrollPane--\">getScrollPane</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/StandardConsoleModel.html#getText--\">getText</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/StandardConsoleModel.html#getText-int-int-\">getText</a></span>(int&nbsp;paramInt1,\n       int&nbsp;paramInt2)</code>&nbsp;</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextPane.html?is-external=true\" title=\"class or interface in javax.swing\">JTextPane</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/StandardConsoleModel.html#getTextPane--\">getTextPane</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/StandardConsoleModel.html#historyDown--\">historyDown</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/StandardConsoleModel.html#historyUp--\">historyUp</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/StandardConsoleModel.html#isCommandEnabled-java.lang.String-\">isCommandEnabled</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</code>&nbsp;</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/StandardConsoleModel.html#isPointSelection--\">isPointSelection</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/StandardConsoleModel.html#keyPressed-java.awt.event.KeyEvent-\">keyPressed</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyEvent</a>&nbsp;paramKeyEvent)</code>&nbsp;</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/StandardConsoleModel.html#keyReleased-java.awt.event.KeyEvent-\">keyReleased</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyEvent</a>&nbsp;paramKeyEvent)</code>&nbsp;</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/StandardConsoleModel.html#keyTyped-java.awt.event.KeyEvent-\">keyTyped</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyEvent</a>&nbsp;paramKeyEvent)</code>&nbsp;</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/StandardConsoleModel.html#paste--\">paste</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/StandardConsoleModel.html#print-java.awt.PrintJob-\">print</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/PrintJob.html?is-external=true\" title=\"class or interface in java.awt\">PrintJob</a>&nbsp;paramPrintJob)</code>&nbsp;</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/StandardConsoleModel.html#print-java.lang.String-int-\">print</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString,\n     int&nbsp;paramInt)</code>&nbsp;</td>\n</tr>\n<tr id=\"i24\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/StandardConsoleModel.html#printCallback-java.lang.String-int-\">printCallback</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString,\n             int&nbsp;paramInt)</code>&nbsp;</td>\n</tr>\n<tr id=\"i25\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/StandardConsoleModel.html#readLine--\">readLine</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i26\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/StandardConsoleModel.html#readLineCallback--\">readLineCallback</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i27\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/StandardConsoleModel.html#requestFocus--\">requestFocus</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i28\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/StandardConsoleModel.html#selectAll--\">selectAll</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i29\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/StandardConsoleModel.html#setConsole-acm.io.IOConsole-\">setConsole</a></span>(<a href=\"../../acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a>&nbsp;paramIOConsole)</code>&nbsp;</td>\n</tr>\n<tr id=\"i30\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/StandardConsoleModel.html#setErrorColor-java.awt.Color-\">setErrorColor</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;paramColor)</code>&nbsp;</td>\n</tr>\n<tr id=\"i31\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/StandardConsoleModel.html#setErrorStyle-int-\">setErrorStyle</a></span>(int&nbsp;paramInt)</code>&nbsp;</td>\n</tr>\n<tr id=\"i32\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/StandardConsoleModel.html#setInputColor-java.awt.Color-\">setInputColor</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;paramColor)</code>&nbsp;</td>\n</tr>\n<tr id=\"i33\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/StandardConsoleModel.html#setInputScript-java.io.BufferedReader-\">setInputScript</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html?is-external=true\" title=\"class or interface in java.io\">BufferedReader</a>&nbsp;paramBufferedReader)</code>&nbsp;</td>\n</tr>\n<tr id=\"i34\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/StandardConsoleModel.html#setInputStyle-int-\">setInputStyle</a></span>(int&nbsp;paramInt)</code>&nbsp;</td>\n</tr>\n<tr id=\"i35\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/StandardConsoleModel.html#setMenuBar-acm.program.ProgramMenuBar-\">setMenuBar</a></span>(<a href=\"../../acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a>&nbsp;paramProgramMenuBar)</code>&nbsp;</td>\n</tr>\n<tr id=\"i36\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/StandardConsoleModel.html#setOutputColor-java.awt.Color-\">setOutputColor</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;paramColor)</code>&nbsp;</td>\n</tr>\n<tr id=\"i37\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/StandardConsoleModel.html#setOutputStyle-int-\">setOutputStyle</a></span>(int&nbsp;paramInt)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"StandardConsoleModel--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>StandardConsoleModel</h4>\n<pre>public&nbsp;StandardConsoleModel()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"getScrollPane--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getScrollPane</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JScrollPane.html?is-external=true\" title=\"class or interface in javax.swing\">JScrollPane</a>&nbsp;getScrollPane()</pre>\n</li>\n</ul>\n<a name=\"setConsole-acm.io.IOConsole-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setConsole</h4>\n<pre>public&nbsp;void&nbsp;setConsole(<a href=\"../../acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a>&nbsp;paramIOConsole)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#setConsole-acm.io.IOConsole-\">setConsole</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getConsole--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getConsole</h4>\n<pre>public&nbsp;<a href=\"../../acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a>&nbsp;getConsole()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#getConsole--\">getConsole</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"historyDown--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>historyDown</h4>\n<pre>public&nbsp;void&nbsp;historyDown()</pre>\n</li>\n</ul>\n<a name=\"historyUp--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>historyUp</h4>\n<pre>public&nbsp;void&nbsp;historyUp()</pre>\n</li>\n</ul>\n<a name=\"print-java.lang.String-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public&nbsp;void&nbsp;print(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString,\n                  int&nbsp;paramInt)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#print-java.lang.String-int-\">print</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"readLine--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readLine</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;readLine()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#readLine--\">readLine</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setInputScript-java.io.BufferedReader-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setInputScript</h4>\n<pre>public&nbsp;void&nbsp;setInputScript(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html?is-external=true\" title=\"class or interface in java.io\">BufferedReader</a>&nbsp;paramBufferedReader)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#setInputScript-java.io.BufferedReader-\">setInputScript</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getInputScript--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getInputScript</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html?is-external=true\" title=\"class or interface in java.io\">BufferedReader</a>&nbsp;getInputScript()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#getInputScript--\">getInputScript</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"clear--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clear</h4>\n<pre>public&nbsp;void&nbsp;clear()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#clear--\">clear</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getText--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getText</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getText()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#getText--\">getText</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getText-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getText</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getText(int&nbsp;paramInt1,\n                      int&nbsp;paramInt2)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#getText-int-int-\">getText</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getLength--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getLength</h4>\n<pre>public&nbsp;int&nbsp;getLength()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#getLength--\">getLength</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getConsolePane--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getConsolePane</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JScrollPane.html?is-external=true\" title=\"class or interface in javax.swing\">JScrollPane</a>&nbsp;getConsolePane()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#getConsolePane--\">getConsolePane</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getTextPane--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getTextPane</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextPane.html?is-external=true\" title=\"class or interface in javax.swing\">JTextPane</a>&nbsp;getTextPane()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#getTextPane--\">getTextPane</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"cut--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>cut</h4>\n<pre>public&nbsp;void&nbsp;cut()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#cut--\">cut</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"copy--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>copy</h4>\n<pre>public&nbsp;void&nbsp;copy()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#copy--\">copy</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"paste--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>paste</h4>\n<pre>public&nbsp;void&nbsp;paste()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#paste--\">paste</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"selectAll--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>selectAll</h4>\n<pre>public&nbsp;void&nbsp;selectAll()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#selectAll--\">selectAll</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"isPointSelection--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isPointSelection</h4>\n<pre>public&nbsp;boolean&nbsp;isPointSelection()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#isPointSelection--\">isPointSelection</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"print-java.awt.PrintJob-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public&nbsp;void&nbsp;print(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/PrintJob.html?is-external=true\" title=\"class or interface in java.awt\">PrintJob</a>&nbsp;paramPrintJob)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#print-java.awt.PrintJob-\">print</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setInputStyle-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setInputStyle</h4>\n<pre>public&nbsp;void&nbsp;setInputStyle(int&nbsp;paramInt)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#setInputStyle-int-\">setInputStyle</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setInputColor-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setInputColor</h4>\n<pre>public&nbsp;void&nbsp;setInputColor(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;paramColor)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#setInputColor-java.awt.Color-\">setInputColor</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setErrorStyle-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setErrorStyle</h4>\n<pre>public&nbsp;void&nbsp;setErrorStyle(int&nbsp;paramInt)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#setErrorStyle-int-\">setErrorStyle</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setErrorColor-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setErrorColor</h4>\n<pre>public&nbsp;void&nbsp;setErrorColor(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;paramColor)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#setErrorColor-java.awt.Color-\">setErrorColor</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setOutputStyle-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setOutputStyle</h4>\n<pre>public&nbsp;void&nbsp;setOutputStyle(int&nbsp;paramInt)</pre>\n</li>\n</ul>\n<a name=\"getOutputColor--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getOutputColor</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;getOutputColor()</pre>\n</li>\n</ul>\n<a name=\"setOutputColor-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setOutputColor</h4>\n<pre>public&nbsp;void&nbsp;setOutputColor(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;paramColor)</pre>\n</li>\n</ul>\n<a name=\"requestFocus--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>requestFocus</h4>\n<pre>public&nbsp;void&nbsp;requestFocus()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#requestFocus--\">requestFocus</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setMenuBar-acm.program.ProgramMenuBar-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setMenuBar</h4>\n<pre>public&nbsp;void&nbsp;setMenuBar(<a href=\"../../acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a>&nbsp;paramProgramMenuBar)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#setMenuBar-acm.program.ProgramMenuBar-\">setMenuBar</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"focusGained-java.awt.event.FocusEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>focusGained</h4>\n<pre>public&nbsp;void&nbsp;focusGained(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusEvent</a>&nbsp;paramFocusEvent)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusListener.html?is-external=true#focusGained-java.awt.event.FocusEvent-\" title=\"class or interface in java.awt.event\">focusGained</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"focusLost-java.awt.event.FocusEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>focusLost</h4>\n<pre>public&nbsp;void&nbsp;focusLost(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusEvent</a>&nbsp;paramFocusEvent)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusListener.html?is-external=true#focusLost-java.awt.event.FocusEvent-\" title=\"class or interface in java.awt.event\">focusLost</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"keyTyped-java.awt.event.KeyEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>keyTyped</h4>\n<pre>public&nbsp;void&nbsp;keyTyped(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyEvent</a>&nbsp;paramKeyEvent)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true#keyTyped-java.awt.event.KeyEvent-\" title=\"class or interface in java.awt.event\">keyTyped</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"keyPressed-java.awt.event.KeyEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>keyPressed</h4>\n<pre>public&nbsp;void&nbsp;keyPressed(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyEvent</a>&nbsp;paramKeyEvent)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true#keyPressed-java.awt.event.KeyEvent-\" title=\"class or interface in java.awt.event\">keyPressed</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"keyReleased-java.awt.event.KeyEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>keyReleased</h4>\n<pre>public&nbsp;void&nbsp;keyReleased(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyEvent</a>&nbsp;paramKeyEvent)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true#keyReleased-java.awt.event.KeyEvent-\" title=\"class or interface in java.awt.event\">keyReleased</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"printCallback-java.lang.String-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>printCallback</h4>\n<pre>protected&nbsp;void&nbsp;printCallback(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString,\n                             int&nbsp;paramInt)</pre>\n</li>\n</ul>\n<a name=\"readLineCallback--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readLineCallback</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;readLineCallback()</pre>\n</li>\n</ul>\n<a name=\"isCommandEnabled-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>isCommandEnabled</h4>\n<pre>public&nbsp;boolean&nbsp;isCommandEnabled(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/io/SimpleScanner.html\" title=\"class in acm.io\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/io/SystemConsoleModel.html\" title=\"class in acm.io\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/io/StandardConsoleModel.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"StandardConsoleModel.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/io/SystemConsoleModel.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:02 PDT 2017 -->\n<title>SystemConsoleModel</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"SystemConsoleModel\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":10,\"i16\":10,\"i17\":10,\"i18\":10,\"i19\":10,\"i20\":10,\"i21\":10,\"i22\":10,\"i23\":10,\"i24\":10,\"i25\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/io/StandardConsoleModel.html\" title=\"class in acm.io\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li>Next&nbsp;Class</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/io/SystemConsoleModel.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"SystemConsoleModel.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.io</div>\n<h2 title=\"Class SystemConsoleModel\" class=\"title\">Class SystemConsoleModel</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.io.SystemConsoleModel</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">SystemConsoleModel</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>\nimplements <a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.io.ConsoleModel\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;acm.io.<a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></h3>\n<code><a href=\"../../acm/io/ConsoleModel.html#ERROR_STYLE\">ERROR_STYLE</a>, <a href=\"../../acm/io/ConsoleModel.html#INPUT_STYLE\">INPUT_STYLE</a>, <a href=\"../../acm/io/ConsoleModel.html#OUTPUT_STYLE\">OUTPUT_STYLE</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SystemConsoleModel.html#SystemConsoleModel--\">SystemConsoleModel</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SystemConsoleModel.html#clear--\">clear</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SystemConsoleModel.html#copy--\">copy</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SystemConsoleModel.html#cut--\">cut</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SystemConsoleModel.html#getConsole--\">getConsole</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SystemConsoleModel.html#getConsoleModel--\">getConsoleModel</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SystemConsoleModel.html#getConsolePane--\">getConsolePane</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html?is-external=true\" title=\"class or interface in java.io\">BufferedReader</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SystemConsoleModel.html#getInputScript--\">getInputScript</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SystemConsoleModel.html#getLength--\">getLength</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SystemConsoleModel.html#getText--\">getText</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SystemConsoleModel.html#getText-int-int-\">getText</a></span>(int&nbsp;paramInt1,\n       int&nbsp;paramInt2)</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SystemConsoleModel.html#getTextPane--\">getTextPane</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SystemConsoleModel.html#isPointSelection--\">isPointSelection</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SystemConsoleModel.html#paste--\">paste</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SystemConsoleModel.html#print-java.awt.PrintJob-\">print</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/PrintJob.html?is-external=true\" title=\"class or interface in java.awt\">PrintJob</a>&nbsp;paramPrintJob)</code>&nbsp;</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SystemConsoleModel.html#print-java.lang.String-int-\">print</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString,\n     int&nbsp;paramInt)</code>&nbsp;</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SystemConsoleModel.html#readLine--\">readLine</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SystemConsoleModel.html#requestFocus--\">requestFocus</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SystemConsoleModel.html#selectAll--\">selectAll</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SystemConsoleModel.html#setConsole-acm.io.IOConsole-\">setConsole</a></span>(<a href=\"../../acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a>&nbsp;paramIOConsole)</code>&nbsp;</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SystemConsoleModel.html#setErrorColor-java.awt.Color-\">setErrorColor</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;paramColor)</code>&nbsp;</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SystemConsoleModel.html#setErrorStyle-int-\">setErrorStyle</a></span>(int&nbsp;paramInt)</code>&nbsp;</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SystemConsoleModel.html#setFont-java.awt.Font-\">setFont</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a>&nbsp;paramFont)</code>&nbsp;</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SystemConsoleModel.html#setInputColor-java.awt.Color-\">setInputColor</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;paramColor)</code>&nbsp;</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SystemConsoleModel.html#setInputScript-java.io.BufferedReader-\">setInputScript</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html?is-external=true\" title=\"class or interface in java.io\">BufferedReader</a>&nbsp;paramBufferedReader)</code>&nbsp;</td>\n</tr>\n<tr id=\"i24\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SystemConsoleModel.html#setInputStyle-int-\">setInputStyle</a></span>(int&nbsp;paramInt)</code>&nbsp;</td>\n</tr>\n<tr id=\"i25\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/io/SystemConsoleModel.html#setMenuBar-acm.program.ProgramMenuBar-\">setMenuBar</a></span>(<a href=\"../../acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a>&nbsp;paramProgramMenuBar)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"SystemConsoleModel--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>SystemConsoleModel</h4>\n<pre>public&nbsp;SystemConsoleModel()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"setConsole-acm.io.IOConsole-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setConsole</h4>\n<pre>public&nbsp;void&nbsp;setConsole(<a href=\"../../acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a>&nbsp;paramIOConsole)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#setConsole-acm.io.IOConsole-\">setConsole</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getConsole--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getConsole</h4>\n<pre>public&nbsp;<a href=\"../../acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a>&nbsp;getConsole()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#getConsole--\">getConsole</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"clear--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clear</h4>\n<pre>public&nbsp;void&nbsp;clear()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#clear--\">clear</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"print-java.lang.String-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public&nbsp;void&nbsp;print(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString,\n                  int&nbsp;paramInt)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#print-java.lang.String-int-\">print</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"readLine--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readLine</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;readLine()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#readLine--\">readLine</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getText--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getText</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getText()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#getText--\">getText</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getText-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getText</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getText(int&nbsp;paramInt1,\n                      int&nbsp;paramInt2)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#getText-int-int-\">getText</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getLength--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getLength</h4>\n<pre>public&nbsp;int&nbsp;getLength()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#getLength--\">getLength</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getConsoleModel--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getConsoleModel</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;getConsoleModel()</pre>\n</li>\n</ul>\n<a name=\"getTextPane--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getTextPane</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;getTextPane()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#getTextPane--\">getTextPane</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setFont-java.awt.Font-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setFont</h4>\n<pre>public&nbsp;void&nbsp;setFont(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a>&nbsp;paramFont)</pre>\n</li>\n</ul>\n<a name=\"setInputStyle-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setInputStyle</h4>\n<pre>public&nbsp;void&nbsp;setInputStyle(int&nbsp;paramInt)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#setInputStyle-int-\">setInputStyle</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setInputColor-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setInputColor</h4>\n<pre>public&nbsp;void&nbsp;setInputColor(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;paramColor)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#setInputColor-java.awt.Color-\">setInputColor</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setErrorStyle-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setErrorStyle</h4>\n<pre>public&nbsp;void&nbsp;setErrorStyle(int&nbsp;paramInt)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#setErrorStyle-int-\">setErrorStyle</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setErrorColor-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setErrorColor</h4>\n<pre>public&nbsp;void&nbsp;setErrorColor(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;paramColor)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#setErrorColor-java.awt.Color-\">setErrorColor</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"cut--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>cut</h4>\n<pre>public&nbsp;void&nbsp;cut()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#cut--\">cut</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"copy--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>copy</h4>\n<pre>public&nbsp;void&nbsp;copy()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#copy--\">copy</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"paste--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>paste</h4>\n<pre>public&nbsp;void&nbsp;paste()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#paste--\">paste</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"selectAll--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>selectAll</h4>\n<pre>public&nbsp;void&nbsp;selectAll()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#selectAll--\">selectAll</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"isPointSelection--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isPointSelection</h4>\n<pre>public&nbsp;boolean&nbsp;isPointSelection()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#isPointSelection--\">isPointSelection</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"print-java.awt.PrintJob-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public&nbsp;void&nbsp;print(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/PrintJob.html?is-external=true\" title=\"class or interface in java.awt\">PrintJob</a>&nbsp;paramPrintJob)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#print-java.awt.PrintJob-\">print</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setInputScript-java.io.BufferedReader-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setInputScript</h4>\n<pre>public&nbsp;void&nbsp;setInputScript(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html?is-external=true\" title=\"class or interface in java.io\">BufferedReader</a>&nbsp;paramBufferedReader)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#setInputScript-java.io.BufferedReader-\">setInputScript</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getInputScript--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getInputScript</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html?is-external=true\" title=\"class or interface in java.io\">BufferedReader</a>&nbsp;getInputScript()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#getInputScript--\">getInputScript</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getConsolePane--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getConsolePane</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;getConsolePane()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#getConsolePane--\">getConsolePane</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"requestFocus--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>requestFocus</h4>\n<pre>public&nbsp;void&nbsp;requestFocus()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#requestFocus--\">requestFocus</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setMenuBar-acm.program.ProgramMenuBar-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>setMenuBar</h4>\n<pre>public&nbsp;void&nbsp;setMenuBar(<a href=\"../../acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a>&nbsp;paramProgramMenuBar)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/io/ConsoleModel.html#setMenuBar-acm.program.ProgramMenuBar-\">setMenuBar</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/io/StandardConsoleModel.html\" title=\"class in acm.io\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li>Next&nbsp;Class</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/io/SystemConsoleModel.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"SystemConsoleModel.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/io/package-frame.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>acm.io</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<h1 class=\"bar\"><a href=\"../../acm/io/package-summary.html\" target=\"classFrame\">acm.io</a></h1>\n<div class=\"indexContainer\">\n<h2 title=\"Interfaces\">Interfaces</h2>\n<ul title=\"Interfaces\">\n<li><a href=\"ConsoleModel.html\" title=\"interface in acm.io\" target=\"classFrame\"><span class=\"interfaceName\">ConsoleModel</span></a></li>\n</ul>\n<h2 title=\"Classes\">Classes</h2>\n<ul title=\"Classes\">\n<li><a href=\"IOConsole.html\" title=\"class in acm.io\" target=\"classFrame\">IOConsole</a></li>\n<li><a href=\"SimpleScanner.html\" title=\"class in acm.io\" target=\"classFrame\">SimpleScanner</a></li>\n<li><a href=\"StandardConsoleModel.html\" title=\"class in acm.io\" target=\"classFrame\">StandardConsoleModel</a></li>\n<li><a href=\"SystemConsoleModel.html\" title=\"class in acm.io\" target=\"classFrame\">SystemConsoleModel</a></li>\n</ul>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/io/package-summary.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>acm.io</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"acm.io\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li class=\"navBarCell1Rev\">Package</li>\n<li>Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/gui/package-summary.html\">Prev&nbsp;Package</a></li>\n<li><a href=\"../../acm/program/package-summary.html\">Next&nbsp;Package</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/io/package-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 title=\"Package\" class=\"title\">Package&nbsp;acm.io</h1>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Interface Summary table, listing interfaces, and an explanation\">\n<caption><span>Interface Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Interface</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Class Summary table, listing classes, and an explanation\">\n<caption><span>Class Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Class</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></td>\n<td class=\"colLast\">\n<div class=\"block\">A simple text scanner which can parse primitive types and strings \n using regular expressions.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../acm/io/SystemConsoleModel.html\" title=\"class in acm.io\">SystemConsoleModel</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n</tbody>\n</table>\n</li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li class=\"navBarCell1Rev\">Package</li>\n<li>Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/gui/package-summary.html\">Prev&nbsp;Package</a></li>\n<li><a href=\"../../acm/program/package-summary.html\">Next&nbsp;Package</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/io/package-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/io/package-tree.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>acm.io Class Hierarchy</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"acm.io Class Hierarchy\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/gui/package-tree.html\">Prev</a></li>\n<li><a href=\"../../acm/program/package-tree.html\">Next</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/io/package-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 class=\"title\">Hierarchy For Package acm.io</h1>\n<span class=\"packageHierarchyLabel\">Package Hierarchies:</span>\n<ul class=\"horizontal\">\n<li><a href=\"../../overview-tree.html\">All Packages</a></li>\n</ul>\n</div>\n<div class=\"contentContainer\">\n<h2 title=\"Class Hierarchy\">Class Hierarchy</h2>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Object</span></a>\n<ul>\n<li type=\"circle\">java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\"><span class=\"typeNameLink\">Component</span></a> (implements java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\"><span class=\"typeNameLink\">Container</span></a>\n<ul>\n<li type=\"circle\">acm.io.<a href=\"../../acm/io/IOConsole.html\" title=\"class in acm.io\"><span class=\"typeNameLink\">IOConsole</span></a> (implements acm.io.IOModel)</li>\n</ul>\n</li>\n</ul>\n</li>\n<li type=\"circle\">acm.io.<a href=\"../../acm/io/SimpleScanner.html\" title=\"class in acm.io\"><span class=\"typeNameLink\">SimpleScanner</span></a></li>\n<li type=\"circle\">acm.io.<a href=\"../../acm/io/StandardConsoleModel.html\" title=\"class in acm.io\"><span class=\"typeNameLink\">StandardConsoleModel</span></a> (implements acm.io.<a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>)</li>\n<li type=\"circle\">acm.io.<a href=\"../../acm/io/SystemConsoleModel.html\" title=\"class in acm.io\"><span class=\"typeNameLink\">SystemConsoleModel</span></a> (implements acm.io.<a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a>)</li>\n</ul>\n</li>\n</ul>\n<h2 title=\"Interface Hierarchy\">Interface Hierarchy</h2>\n<ul>\n<li type=\"circle\">acm.io.<a href=\"../../acm/io/ConsoleModel.html\" title=\"interface in acm.io\"><span class=\"typeNameLink\">ConsoleModel</span></a></li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/gui/package-tree.html\">Prev</a></li>\n<li><a href=\"../../acm/program/package-tree.html\">Next</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/io/package-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/program/AbstractConsoleProgram.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:05 PDT 2017 -->\n<title>AbstractConsoleProgram</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"AbstractConsoleProgram\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":10,\"i16\":10,\"i17\":10,\"i18\":10,\"i19\":10,\"i20\":10,\"i21\":10,\"i22\":10,\"i23\":10,\"i24\":10,\"i25\":10,\"i26\":10,\"i27\":10,\"i28\":10,\"i29\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Class</li>\n<li><a href=\"../../acm/program/AsciiArtProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/program/AbstractConsoleProgram.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AbstractConsoleProgram.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JApplet\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.program</div>\n<h2 title=\"Class AbstractConsoleProgram\" class=\"title\">Class AbstractConsoleProgram</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Component</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Container</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Panel</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">java.applet.Applet</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JApplet</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">acm.program.Program</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.program.AbstractConsoleProgram</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd>acm.io.IOModel, <a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/AdjustmentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">AdjustmentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ContainerListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ItemListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ItemListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseWheelListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/TextListener.html?is-external=true\" title=\"class or interface in java.awt.event\">TextListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowFocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowStateListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowStateListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListDataListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListDataListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListSelectionListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListSelectionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/MouseInputListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">MouseInputListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/PopupMenuListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">PopupMenuListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/RootPaneContainer.html?is-external=true\" title=\"class or interface in javax.swing\">RootPaneContainer</a></dd>\n</dl>\n<dl>\n<dt>Direct Known Subclasses:</dt>\n<dd><a href=\"../../acm/program/ConsoleProgram.html\" title=\"class in acm.program\">ConsoleProgram</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public abstract class <span class=\"typeNameLabel\">AbstractConsoleProgram</span>\nextends <a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#acm.program.AbstractConsoleProgram\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JApplet\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.AccessibleJApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet.AccessibleJApplet</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.applet.Applet\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.applet.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">Applet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.AccessibleApplet.html?is-external=true\" title=\"class or interface in java.applet\">Applet.AccessibleApplet</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Panel\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\">Panel</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.AccessibleAWTPanel.html?is-external=true\" title=\"class or interface in java.awt\">Panel.AccessibleAWTPanel</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.AccessibleAWTContainer.html?is-external=true\" title=\"class or interface in java.awt\">Container.AccessibleAWTContainer</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.AccessibleAWTComponent.html?is-external=true\" title=\"class or interface in java.awt\">Component.AccessibleAWTComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BaselineResizeBehavior.html?is-external=true\" title=\"class or interface in java.awt\">Component.BaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BltBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.BltBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.FlipBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.FlipBufferStrategy</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AbstractConsoleProgram.html#PROGRAM_COMPLETED_TITLE_SUFFIX\">PROGRAM_COMPLETED_TITLE_SUFFIX</a></span></code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.program.Program\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;acm.program.<a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></h3>\n<code><a href=\"../../acm/program/Program.html#CONFIG_FILE_NAME\">CONFIG_FILE_NAME</a>, <a href=\"../../acm/program/Program.html#invisibleObjects\">invisibleObjects</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.JApplet\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#accessibleContext\" title=\"class or interface in javax.swing\">accessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#rootPane\" title=\"class or interface in javax.swing\">rootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#rootPaneCheckingEnabled\" title=\"class or interface in javax.swing\">rootPaneCheckingEnabled</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#BOTTOM_ALIGNMENT\" title=\"class or interface in java.awt\">BOTTOM_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#CENTER_ALIGNMENT\" title=\"class or interface in java.awt\">CENTER_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#LEFT_ALIGNMENT\" title=\"class or interface in java.awt\">LEFT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#RIGHT_ALIGNMENT\" title=\"class or interface in java.awt\">RIGHT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#TOP_ALIGNMENT\" title=\"class or interface in java.awt\">TOP_ALIGNMENT</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.program.ProgramInterface\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;acm.program.<a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></h3>\n<code><a href=\"../../acm/program/ProgramInterface.html#CENTER\">CENTER</a>, <a href=\"../../acm/program/ProgramInterface.html#EAST\">EAST</a>, <a href=\"../../acm/program/ProgramInterface.html#NORTH\">NORTH</a>, <a href=\"../../acm/program/ProgramInterface.html#SOUTH\">SOUTH</a>, <a href=\"../../acm/program/ProgramInterface.html#WEST\">WEST</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.image.ImageObserver\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ABORT\" title=\"class or interface in java.awt.image\">ABORT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ALLBITS\" title=\"class or interface in java.awt.image\">ALLBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ERROR\" title=\"class or interface in java.awt.image\">ERROR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#FRAMEBITS\" title=\"class or interface in java.awt.image\">FRAMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#HEIGHT\" title=\"class or interface in java.awt.image\">HEIGHT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#PROPERTIES\" title=\"class or interface in java.awt.image\">PROPERTIES</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#SOMEBITS\" title=\"class or interface in java.awt.image\">SOMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#WIDTH\" title=\"class or interface in java.awt.image\">WIDTH</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AbstractConsoleProgram.html#AbstractConsoleProgram--\">AbstractConsoleProgram</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AbstractConsoleProgram.html#checkCompilerFlags--\">checkCompilerFlags</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AbstractConsoleProgram.html#clearConsole--\">clearConsole</a></span>()</code>\n<div class=\"block\">Erases any text from the main console.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AbstractConsoleProgram.html#compareOutput--\">compareOutput</a></span>()</code>\n<div class=\"block\">Pops up a file chooser to compare output to some expected output.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AbstractConsoleProgram.html#endHook--\">endHook</a></span>()</code>\n<div class=\"block\">Called as the program is shutting down.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AbstractConsoleProgram.html#fontEnlarge--\">fontEnlarge</a></span>()</code>\n<div class=\"block\">Makes the console's font larger by 2pt.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AbstractConsoleProgram.html#fontShrink--\">fontShrink</a></span>()</code>\n<div class=\"block\">Makes the console's font smaller by 2pt.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AbstractConsoleProgram.html#fontToggleBold--\">fontToggleBold</a></span>()</code>\n<div class=\"block\">Makes the console's font toggle between bold and non-bold.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AbstractConsoleProgram.html#getAllOutput--\">getAllOutput</a></span>()</code>\n<div class=\"block\">Returns all text that has been displayed on this console so far.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AbstractConsoleProgram.html#getFont--\">getFont</a></span>()</code>\n<div class=\"block\">Returns the font currently used in the console.</div>\n</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AbstractConsoleProgram.html#historyDown--\">historyDown</a></span>()</code>\n<div class=\"block\">Retrieves the next command in the console input history.</div>\n</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AbstractConsoleProgram.html#historyUp--\">historyUp</a></span>()</code>\n<div class=\"block\">Retrieves the previous command in the console input history.</div>\n</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AbstractConsoleProgram.html#loadConfiguration-java.util.Properties-\">loadConfiguration</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Properties.html?is-external=true\" title=\"class or interface in java.util\">Properties</a>&nbsp;props)</code>\n<div class=\"block\">Reads the console's configuration settings, if present.</div>\n</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AbstractConsoleProgram.html#loadInputScript--\">loadInputScript</a></span>()</code>\n<div class=\"block\">Pops up a file chooser to compare output to some expected output.</div>\n</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AbstractConsoleProgram.html#menuAction-java.awt.event.ActionEvent-\">menuAction</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;event)</code>\n<div class=\"block\">Responds to menu clicks.</div>\n</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AbstractConsoleProgram.html#mouseWheelMoved-java.awt.event.MouseWheelEvent-\">mouseWheelMoved</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseWheelEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseWheelEvent</a>&nbsp;e)</code>\n<div class=\"block\">Implementation of MouseWheelListener interface.</div>\n</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AbstractConsoleProgram.html#promptUserForFile-java.lang.String-\">promptUserForFile</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt)</code>\n<div class=\"block\">Asks the user to type a file name, re-prompting until the user types a\n file that exists in the current directory.</div>\n</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AbstractConsoleProgram.html#promptUserForFile-java.lang.String-java.lang.String-\">promptUserForFile</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt,\n                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;directory)</code>\n<div class=\"block\">Asks the user to type a file name, re-prompting until the user types a\n file that exists in the given directory.</div>\n</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AbstractConsoleProgram.html#promptUserForFile-java.lang.String-java.lang.String-java.lang.String-\">promptUserForFile</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt,\n                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;directory,\n                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;reprompt)</code>\n<div class=\"block\">Asks the user to type a file name, re-prompting until the user types a\n file that exists in the given directory.</div>\n</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AbstractConsoleProgram.html#saveConfiguration-java.util.Properties-\">saveConfiguration</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Properties.html?is-external=true\" title=\"class or interface in java.util\">Properties</a>&nbsp;props)</code>\n<div class=\"block\">Writes the console's configuration settings to disk.</div>\n</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AbstractConsoleProgram.html#scrollLineDown--\">scrollLineDown</a></span>()</code>\n<div class=\"block\">Tells the console's output area to scroll itself downward by one line.</div>\n</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AbstractConsoleProgram.html#scrollLineUp--\">scrollLineUp</a></span>()</code>\n<div class=\"block\">Tells the console's output area to scroll itself upward by one line.</div>\n</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AbstractConsoleProgram.html#scrollPageDown--\">scrollPageDown</a></span>()</code>\n<div class=\"block\">Tells the console's output area to scroll itself downward by one page.</div>\n</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AbstractConsoleProgram.html#scrollPageUp--\">scrollPageUp</a></span>()</code>\n<div class=\"block\">Tells the console's output area to scroll itself upward by one page.</div>\n</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AbstractConsoleProgram.html#scrollToBottom--\">scrollToBottom</a></span>()</code>\n<div class=\"block\">Tells the console's output area to scroll itself to the bottom of the output.</div>\n</td>\n</tr>\n<tr id=\"i24\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AbstractConsoleProgram.html#scrollToTop--\">scrollToTop</a></span>()</code>\n<div class=\"block\">Tells the console's output area to scroll itself to the top of the output.</div>\n</td>\n</tr>\n<tr id=\"i25\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AbstractConsoleProgram.html#setClearConsoleEnabled-boolean-\">setClearConsoleEnabled</a></span>(boolean&nbsp;enabled)</code>\n<div class=\"block\">Turns on/off the ability to clear the console using clearConsole(); (default true)</div>\n</td>\n</tr>\n<tr id=\"i26\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AbstractConsoleProgram.html#setColorFromChooser-boolean-\">setColorFromChooser</a></span>(boolean&nbsp;background)</code>\n<div class=\"block\">Pops up a JColorChooser to let the user pick a color for the console.</div>\n</td>\n</tr>\n<tr id=\"i27\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AbstractConsoleProgram.html#setFont-java.awt.Font-\">setFont</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a>&nbsp;font)</code>\n<div class=\"block\">Sets the font for the console.</div>\n</td>\n</tr>\n<tr id=\"i28\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AbstractConsoleProgram.html#setFont-java.lang.String-\">setFont</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;str)</code>\n<div class=\"block\">Sets the font used for the console as specified by the string\n <code>str</code>, which is interpreted in the style of\n <code>Font.decode</code>.</div>\n</td>\n</tr>\n<tr id=\"i29\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AbstractConsoleProgram.html#setFontFromChooser--\">setFontFromChooser</a></span>()</code>\n<div class=\"block\">Pops up a JFontChooser to let the user pick a font for the console.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.program.Program\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.program.<a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></h3>\n<code><a href=\"../../acm/program/Program.html#actionPerformed-java.awt.event.ActionEvent-\">actionPerformed</a>, <a href=\"../../acm/program/Program.html#add-java.awt.Component-java.lang.String-java.lang.Object-\">add</a>, <a href=\"../../acm/program/Program.html#addActionListeners--\">addActionListeners</a>, <a href=\"../../acm/program/Program.html#addActionListeners-java.awt.event.ActionListener-\">addActionListeners</a>, <a href=\"../../acm/program/Program.html#addActionListenersToButtonsOnly--\">addActionListenersToButtonsOnly</a>, <a href=\"../../acm/program/Program.html#addAllActionListeners--\">addAllActionListeners</a>, <a href=\"../../acm/program/Program.html#addExitHook-java.lang.Object-\">addExitHook</a>, <a href=\"../../acm/program/Program.html#addImpl-java.awt.Component-java.lang.Object-int-\">addImpl</a>, <a href=\"../../acm/program/Program.html#adjustmentValueChanged-java.awt.event.AdjustmentEvent-\">adjustmentValueChanged</a>, <a href=\"../../acm/program/Program.html#alert-java.lang.Object-\">alert</a>, <a href=\"../../acm/program/Program.html#alert-java.lang.String-\">alert</a>, <a href=\"../../acm/program/Program.html#animation--\">animation</a>, <a href=\"../../acm/program/Program.html#center--\">center</a>, <a href=\"../../acm/program/Program.html#changedUpdate-javax.swing.event.DocumentEvent-\">changedUpdate</a>, <a href=\"../../acm/program/Program.html#checkKill--\">checkKill</a>, <a href=\"../../acm/program/Program.html#checkStartupSettings--\">checkStartupSettings</a>, <a href=\"../../acm/program/Program.html#componentAdded-java.awt.event.ContainerEvent-\">componentAdded</a>, <a href=\"../../acm/program/Program.html#componentHidden-java.awt.event.ComponentEvent-\">componentHidden</a>, <a href=\"../../acm/program/Program.html#componentMoved-java.awt.event.ComponentEvent-\">componentMoved</a>, <a href=\"../../acm/program/Program.html#componentRemoved-java.awt.event.ContainerEvent-\">componentRemoved</a>, <a href=\"../../acm/program/Program.html#componentResized-java.awt.event.ComponentEvent-\">componentResized</a>, <a href=\"../../acm/program/Program.html#componentShown-java.awt.event.ComponentEvent-\">componentShown</a>, <a href=\"../../acm/program/Program.html#confirm-java.lang.String-\">confirm</a>, <a href=\"../../acm/program/Program.html#contentsChanged-javax.swing.event.ListDataEvent-\">contentsChanged</a>, <a href=\"../../acm/program/Program.html#createConsole--\">createConsole</a>, <a href=\"../../acm/program/Program.html#createDialogIO--\">createDialogIO</a>, <a href=\"../../acm/program/Program.html#createMenuBar--\">createMenuBar</a>, <a href=\"../../acm/program/Program.html#createParameterTable-java.lang.String:A-\">createParameterTable</a>, <a href=\"../../acm/program/Program.html#createProgramFrame--\">createProgramFrame</a>, <a href=\"../../acm/program/Program.html#destroy--\">destroy</a>, <a href=\"../../acm/program/Program.html#error-java.lang.Exception-\">error</a>, <a href=\"../../acm/program/Program.html#error-java.lang.Exception-java.lang.String-\">error</a>, <a href=\"../../acm/program/Program.html#error-java.lang.String-\">error</a>, <a href=\"../../acm/program/Program.html#exit--\">exit</a>, <a href=\"../../acm/program/Program.html#fileExists-java.lang.String-\">fileExists</a>, <a href=\"../../acm/program/Program.html#fileExists-java.lang.String-java.lang.String-\">fileExists</a>, <a href=\"../../acm/program/Program.html#fileExistsInsideJAR-java.lang.String-\">fileExistsInsideJAR</a>, <a href=\"../../acm/program/Program.html#fileExistsInsideJAR-java.lang.String-java.lang.String-\">fileExistsInsideJAR</a>, <a href=\"../../acm/program/Program.html#fileExistsOnDisk-java.lang.String-\">fileExistsOnDisk</a>, <a href=\"../../acm/program/Program.html#fileExistsOnDisk-java.lang.String-java.lang.String-\">fileExistsOnDisk</a>, <a href=\"../../acm/program/Program.html#fileSize-java.lang.String-\">fileSize</a>, <a href=\"../../acm/program/Program.html#fileSize-java.lang.String-java.lang.String-\">fileSize</a>, <a href=\"../../acm/program/Program.html#focusGained-java.awt.event.FocusEvent-\">focusGained</a>, <a href=\"../../acm/program/Program.html#focusLost-java.awt.event.FocusEvent-\">focusLost</a>, <a href=\"../../acm/program/Program.html#getAnimationDelay--\">getAnimationDelay</a>, <a href=\"../../acm/program/Program.html#getAppletStub--\">getAppletStub</a>, <a href=\"../../acm/program/Program.html#getArgumentArray--\">getArgumentArray</a>, <a href=\"../../acm/program/Program.html#getBoolean--\">getBoolean</a>, <a href=\"../../acm/program/Program.html#getBoolean-java.lang.String-\">getBoolean</a>, <a href=\"../../acm/program/Program.html#getBoolean-java.lang.String-java.lang.String-java.lang.String-\">getBoolean</a>, <a href=\"../../acm/program/Program.html#getBorder-java.lang.String-\">getBorder</a>, <a href=\"../../acm/program/Program.html#getBottomY--\">getBottomY</a>, <a href=\"../../acm/program/Program.html#getCenterLocation--\">getCenterLocation</a>, <a href=\"../../acm/program/Program.html#getCenterX--\">getCenterX</a>, <a href=\"../../acm/program/Program.html#getCenterY--\">getCenterY</a>, <a href=\"../../acm/program/Program.html#getCentralRegionSize--\">getCentralRegionSize</a>, <a href=\"../../acm/program/Program.html#getConsole--\">getConsole</a>, <a href=\"../../acm/program/Program.html#getDialog--\">getDialog</a>, <a href=\"../../acm/program/Program.html#getDouble--\">getDouble</a>, <a href=\"../../acm/program/Program.html#getDouble-double-double-\">getDouble</a>, <a href=\"../../acm/program/Program.html#getDouble-java.lang.String-\">getDouble</a>, <a href=\"../../acm/program/Program.html#getDouble-java.lang.String-double-double-\">getDouble</a>, <a href=\"../../acm/program/Program.html#getHeight--\">getHeight</a>, <a href=\"../../acm/program/Program.html#getInputModel--\">getInputModel</a>, <a href=\"../../acm/program/Program.html#getInteger--\">getInteger</a>, <a href=\"../../acm/program/Program.html#getInteger-int-int-\">getInteger</a>, <a href=\"../../acm/program/Program.html#getInteger-java.lang.String-\">getInteger</a>, <a href=\"../../acm/program/Program.html#getInteger-java.lang.String-int-int-\">getInteger</a>, <a href=\"../../acm/program/Program.html#getJFrame--\">getJFrame</a>, <a href=\"../../acm/program/Program.html#getLayout--\">getLayout</a>, <a href=\"../../acm/program/Program.html#getLine--\">getLine</a>, <a href=\"../../acm/program/Program.html#getLine-java.lang.String-\">getLine</a>, <a href=\"../../acm/program/Program.html#getMainThread--\">getMainThread</a>, <a href=\"../../acm/program/Program.html#getMenuBar--\">getMenuBar</a>, <a href=\"../../acm/program/Program.html#getOutputColor--\">getOutputColor</a>, <a href=\"../../acm/program/Program.html#getOutputModel--\">getOutputModel</a>, <a href=\"../../acm/program/Program.html#getParameter-java.lang.String-\">getParameter</a>, <a href=\"../../acm/program/Program.html#getParameterTable--\">getParameterTable</a>, <a href=\"../../acm/program/Program.html#getPreferredSize--\">getPreferredSize</a>, <a href=\"../../acm/program/Program.html#getReader--\">getReader</a>, <a href=\"../../acm/program/Program.html#getReal--\">getReal</a>, <a href=\"../../acm/program/Program.html#getReal-double-double-\">getReal</a>, <a href=\"../../acm/program/Program.html#getReal-java.lang.String-\">getReal</a>, <a href=\"../../acm/program/Program.html#getReal-java.lang.String-double-double-\">getReal</a>, <a href=\"../../acm/program/Program.html#getRegionPanel-java.lang.String-\">getRegionPanel</a>, <a href=\"../../acm/program/Program.html#getRightX--\">getRightX</a>, <a href=\"../../acm/program/Program.html#getScreenHeight--\">getScreenHeight</a>, <a href=\"../../acm/program/Program.html#getScreenSize--\">getScreenSize</a>, <a href=\"../../acm/program/Program.html#getScreenWidth--\">getScreenWidth</a>, <a href=\"../../acm/program/Program.html#getStartupObject--\">getStartupObject</a>, <a href=\"../../acm/program/Program.html#getTitle--\">getTitle</a>, <a href=\"../../acm/program/Program.html#getWidth--\">getWidth</a>, <a href=\"../../acm/program/Program.html#getWindow--\">getWindow</a>, <a href=\"../../acm/program/Program.html#getWriter--\">getWriter</a>, <a href=\"../../acm/program/Program.html#getYesOrNo-java.lang.String-\">getYesOrNo</a>, <a href=\"../../acm/program/Program.html#hasConfiguration--\">hasConfiguration</a>, <a href=\"../../acm/program/Program.html#init--\">init</a>, <a href=\"../../acm/program/Program.html#insertUpdate-javax.swing.event.DocumentEvent-\">insertUpdate</a>, <a href=\"../../acm/program/Program.html#intervalAdded-javax.swing.event.ListDataEvent-\">intervalAdded</a>, <a href=\"../../acm/program/Program.html#intervalRemoved-javax.swing.event.ListDataEvent-\">intervalRemoved</a>, <a href=\"../../acm/program/Program.html#isAnimated--\">isAnimated</a>, <a href=\"../../acm/program/Program.html#isApplet--\">isApplet</a>, <a href=\"../../acm/program/Program.html#isAppletMode--\">isAppletMode</a>, <a href=\"../../acm/program/Program.html#isExitOnClose--\">isExitOnClose</a>, <a href=\"../../acm/program/Program.html#isInitialized--\">isInitialized</a>, <a href=\"../../acm/program/Program.html#isStarted--\">isStarted</a>, <a href=\"../../acm/program/Program.html#itemStateChanged-java.awt.event.ItemEvent-\">itemStateChanged</a>, <a href=\"../../acm/program/Program.html#keyPressed-java.awt.event.KeyEvent-\">keyPressed</a>, <a href=\"../../acm/program/Program.html#keyReleased-java.awt.event.KeyEvent-\">keyReleased</a>, <a href=\"../../acm/program/Program.html#keyTyped-java.awt.event.KeyEvent-\">keyTyped</a>, <a href=\"../../acm/program/Program.html#killMe--\">killMe</a>, <a href=\"../../acm/program/Program.html#loadConfiguration--\">loadConfiguration</a>, <a href=\"../../acm/program/Program.html#main-java.lang.String:A-\">main</a>, <a href=\"../../acm/program/Program.html#menuCanceled-javax.swing.event.MenuEvent-\">menuCanceled</a>, <a href=\"../../acm/program/Program.html#menuDeselected-javax.swing.event.MenuEvent-\">menuDeselected</a>, <a href=\"../../acm/program/Program.html#menuSelected-javax.swing.event.MenuEvent-\">menuSelected</a>, <a href=\"../../acm/program/Program.html#mouseClicked-java.awt.event.MouseEvent-\">mouseClicked</a>, <a href=\"../../acm/program/Program.html#mouseDragged-java.awt.event.MouseEvent-\">mouseDragged</a>, <a href=\"../../acm/program/Program.html#mouseEntered-java.awt.event.MouseEvent-\">mouseEntered</a>, <a href=\"../../acm/program/Program.html#mouseExited-java.awt.event.MouseEvent-\">mouseExited</a>, <a href=\"../../acm/program/Program.html#mouseMoved-java.awt.event.MouseEvent-\">mouseMoved</a>, <a href=\"../../acm/program/Program.html#mousePressed-java.awt.event.MouseEvent-\">mousePressed</a>, <a href=\"../../acm/program/Program.html#mouseReleased-java.awt.event.MouseEvent-\">mouseReleased</a>, <a href=\"../../acm/program/Program.html#openFile-java.lang.String-\">openFile</a>, <a href=\"../../acm/program/Program.html#openFile-java.lang.String-java.lang.String-\">openFile</a>, <a href=\"../../acm/program/Program.html#openFileFromDisk-java.lang.String-\">openFileFromDisk</a>, <a href=\"../../acm/program/Program.html#openFileFromDisk-java.lang.String-java.lang.String-\">openFileFromDisk</a>, <a href=\"../../acm/program/Program.html#openFileFromJAR-java.lang.String-\">openFileFromJAR</a>, <a href=\"../../acm/program/Program.html#openFileFromJAR-java.lang.String-java.lang.String-\">openFileFromJAR</a>, <a href=\"../../acm/program/Program.html#pack--\">pack</a>, <a href=\"../../acm/program/Program.html#pause-double-\">pause</a>, <a href=\"../../acm/program/Program.html#pauseTick--\">pauseTick</a>, <a href=\"../../acm/program/Program.html#popupMenuCanceled-javax.swing.event.PopupMenuEvent-\">popupMenuCanceled</a>, <a href=\"../../acm/program/Program.html#popupMenuWillBecomeInvisible-javax.swing.event.PopupMenuEvent-\">popupMenuWillBecomeInvisible</a>, <a href=\"../../acm/program/Program.html#popupMenuWillBecomeVisible-javax.swing.event.PopupMenuEvent-\">popupMenuWillBecomeVisible</a>, <a href=\"../../acm/program/Program.html#print-boolean-\">print</a>, <a href=\"../../acm/program/Program.html#print-boolean-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-char-\">print</a>, <a href=\"../../acm/program/Program.html#print-char-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-double-\">print</a>, <a href=\"../../acm/program/Program.html#print-double-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-float-\">print</a>, <a href=\"../../acm/program/Program.html#print-float-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-int-\">print</a>, <a href=\"../../acm/program/Program.html#print-int-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-long-\">print</a>, <a href=\"../../acm/program/Program.html#print-long-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-java.lang.Object-\">print</a>, <a href=\"../../acm/program/Program.html#print-java.lang.Object-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-java.lang.String-\">print</a>, <a href=\"../../acm/program/Program.html#print-java.lang.String-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#printf-java.lang.String-java.lang.Object...-\">printf</a>, <a href=\"../../acm/program/Program.html#println--\">println</a>, <a href=\"../../acm/program/Program.html#println-boolean-\">println</a>, <a href=\"../../acm/program/Program.html#println-boolean-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-char-\">println</a>, <a href=\"../../acm/program/Program.html#println-char-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-double-\">println</a>, <a href=\"../../acm/program/Program.html#println-double-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-float-\">println</a>, <a href=\"../../acm/program/Program.html#println-float-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-int-\">println</a>, <a href=\"../../acm/program/Program.html#println-int-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-long-\">println</a>, <a href=\"../../acm/program/Program.html#println-long-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-java.lang.Object-\">println</a>, <a href=\"../../acm/program/Program.html#println-java.lang.Object-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-java.lang.String-\">println</a>, <a href=\"../../acm/program/Program.html#println-java.lang.String-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#prompt-java.lang.String-\">prompt</a>, <a href=\"../../acm/program/Program.html#readBoolean--\">readBoolean</a>, <a href=\"../../acm/program/Program.html#readBoolean-java.lang.String-\">readBoolean</a>, <a href=\"../../acm/program/Program.html#readBoolean-java.lang.String-java.lang.String-java.lang.String-\">readBoolean</a>, <a href=\"../../acm/program/Program.html#readDouble--\">readDouble</a>, <a href=\"../../acm/program/Program.html#readDouble-double-double-\">readDouble</a>, <a href=\"../../acm/program/Program.html#readDouble-java.lang.String-\">readDouble</a>, <a href=\"../../acm/program/Program.html#readDouble-java.lang.String-double-double-\">readDouble</a>, <a href=\"../../acm/program/Program.html#readInt--\">readInt</a>, <a href=\"../../acm/program/Program.html#readInt-int-int-\">readInt</a>, <a href=\"../../acm/program/Program.html#readInt-java.lang.String-\">readInt</a>, <a href=\"../../acm/program/Program.html#readInt-java.lang.String-int-int-\">readInt</a>, <a href=\"../../acm/program/Program.html#readLine--\">readLine</a>, <a href=\"../../acm/program/Program.html#readLine-java.lang.String-\">readLine</a>, <a href=\"../../acm/program/Program.html#remove-java.awt.Component-\">remove</a>, <a href=\"../../acm/program/Program.html#remove-int-\">remove</a>, <a href=\"../../acm/program/Program.html#removeAll--\">removeAll</a>, <a href=\"../../acm/program/Program.html#removeFromRegion-java.awt.Component-java.lang.String-\">removeFromRegion</a>, <a href=\"../../acm/program/Program.html#removeMenuBar--\">removeMenuBar</a>, <a href=\"../../acm/program/Program.html#removeUpdate-javax.swing.event.DocumentEvent-\">removeUpdate</a>, <a href=\"../../acm/program/Program.html#repaint--\">repaint</a>, <a href=\"../../acm/program/Program.html#run--\">run</a>, <a href=\"../../acm/program/Program.html#runHook--\">runHook</a>, <a href=\"../../acm/program/Program.html#saveConfiguration--\">saveConfiguration</a>, <a href=\"../../acm/program/Program.html#setAnimated-boolean-\">setAnimated</a>, <a href=\"../../acm/program/Program.html#setAnimationDelay-int-\">setAnimationDelay</a>, <a href=\"../../acm/program/Program.html#setAppletStub-java.applet.AppletStub-\">setAppletStub</a>, <a href=\"../../acm/program/Program.html#setBackground-java.awt.Color-\">setBackground</a>, <a href=\"../../acm/program/Program.html#setBottomY-double-\">setBottomY</a>, <a href=\"../../acm/program/Program.html#setCenterLocation-double-double-\">setCenterLocation</a>, <a href=\"../../acm/program/Program.html#setCenterX-double-\">setCenterX</a>, <a href=\"../../acm/program/Program.html#setCenterY-double-\">setCenterY</a>, <a href=\"../../acm/program/Program.html#setConsole-acm.io.IOConsole-\">setConsole</a>, <a href=\"../../acm/program/Program.html#setDialog-acm.io.IODialog-\">setDialog</a>, <a href=\"../../acm/program/Program.html#setExitOnClose-boolean-\">setExitOnClose</a>, <a href=\"../../acm/program/Program.html#setFramesPerSecond-int-\">setFramesPerSecond</a>, <a href=\"../../acm/program/Program.html#setHeight-double-\">setHeight</a>, <a href=\"../../acm/program/Program.html#setInputModel-acm.io.IOModel-\">setInputModel</a>, <a href=\"../../acm/program/Program.html#setInvisible-acm.graphics.GObject-boolean-\">setInvisible</a>, <a href=\"../../acm/program/Program.html#setJFrame-javax.swing.JFrame-\">setJFrame</a>, <a href=\"../../acm/program/Program.html#setJMenuBar-javax.swing.JMenuBar-\">setJMenuBar</a>, <a href=\"../../acm/program/Program.html#setLayout-java.awt.LayoutManager-\">setLayout</a>, <a href=\"../../acm/program/Program.html#setLocation-double-double-\">setLocation</a>, <a href=\"../../acm/program/Program.html#setLocation-acm.graphics.GPoint-\">setLocation</a>, <a href=\"../../acm/program/Program.html#setOutputColor-java.awt.Color-\">setOutputColor</a>, <a href=\"../../acm/program/Program.html#setOutputModel-acm.io.IOModel-\">setOutputModel</a>, <a href=\"../../acm/program/Program.html#setParameter-java.lang.String-java.lang.String-\">setParameter</a>, <a href=\"../../acm/program/Program.html#setParameterTable-java.util.Map-\">setParameterTable</a>, <a href=\"../../acm/program/Program.html#setPauseScaleFactor-double-\">setPauseScaleFactor</a>, <a href=\"../../acm/program/Program.html#setResizable-boolean-\">setResizable</a>, <a href=\"../../acm/program/Program.html#setRightX-double-\">setRightX</a>, <a href=\"../../acm/program/Program.html#setShowPixelGrid-boolean-\">setShowPixelGrid</a>, <a href=\"../../acm/program/Program.html#setShowPixelInfo-boolean-\">setShowPixelInfo</a>, <a href=\"../../acm/program/Program.html#setSize-double-double-\">setSize</a>, <a href=\"../../acm/program/Program.html#setStartupObject-java.lang.Object-\">setStartupObject</a>, <a href=\"../../acm/program/Program.html#setTitle-java.lang.String-\">setTitle</a>, <a href=\"../../acm/program/Program.html#setWidth-double-\">setWidth</a>, <a href=\"../../acm/program/Program.html#setX-double-\">setX</a>, <a href=\"../../acm/program/Program.html#setY-double-\">setY</a>, <a href=\"../../acm/program/Program.html#showErrorMessage-java.lang.String-\">showErrorMessage</a>, <a href=\"../../acm/program/Program.html#start--\">start</a>, <a href=\"../../acm/program/Program.html#start-java.lang.String:A-\">start</a>, <a href=\"../../acm/program/Program.html#startAnimation--\">startAnimation</a>, <a href=\"../../acm/program/Program.html#startHook--\">startHook</a>, <a href=\"../../acm/program/Program.html#startRun--\">startRun</a>, <a href=\"../../acm/program/Program.html#stateChanged-javax.swing.event.ChangeEvent-\">stateChanged</a>, <a href=\"../../acm/program/Program.html#stopAnimation--\">stopAnimation</a>, <a href=\"../../acm/program/Program.html#textValueChanged-java.awt.event.TextEvent-\">textValueChanged</a>, <a href=\"../../acm/program/Program.html#validate--\">validate</a>, <a href=\"../../acm/program/Program.html#valueChanged-javax.swing.event.ListSelectionEvent-\">valueChanged</a>, <a href=\"../../acm/program/Program.html#windowActivated-java.awt.event.WindowEvent-\">windowActivated</a>, <a href=\"../../acm/program/Program.html#windowClosed-java.awt.event.WindowEvent-\">windowClosed</a>, <a href=\"../../acm/program/Program.html#windowClosing-java.awt.event.WindowEvent-\">windowClosing</a>, <a href=\"../../acm/program/Program.html#windowDeactivated-java.awt.event.WindowEvent-\">windowDeactivated</a>, <a href=\"../../acm/program/Program.html#windowDeiconified-java.awt.event.WindowEvent-\">windowDeiconified</a>, <a href=\"../../acm/program/Program.html#windowGainedFocus-java.awt.event.WindowEvent-\">windowGainedFocus</a>, <a href=\"../../acm/program/Program.html#windowIconified-java.awt.event.WindowEvent-\">windowIconified</a>, <a href=\"../../acm/program/Program.html#windowLostFocus-java.awt.event.WindowEvent-\">windowLostFocus</a>, <a href=\"../../acm/program/Program.html#windowOpened-java.awt.event.WindowEvent-\">windowOpened</a>, <a href=\"../../acm/program/Program.html#windowStateChanged-java.awt.event.WindowEvent-\">windowStateChanged</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JApplet\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#createRootPane--\" title=\"class or interface in javax.swing\">createRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getAccessibleContext--\" title=\"class or interface in javax.swing\">getAccessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getContentPane--\" title=\"class or interface in javax.swing\">getContentPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getGlassPane--\" title=\"class or interface in javax.swing\">getGlassPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getGraphics--\" title=\"class or interface in javax.swing\">getGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getJMenuBar--\" title=\"class or interface in javax.swing\">getJMenuBar</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getLayeredPane--\" title=\"class or interface in javax.swing\">getLayeredPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getRootPane--\" title=\"class or interface in javax.swing\">getRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getTransferHandler--\" title=\"class or interface in javax.swing\">getTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#isRootPaneCheckingEnabled--\" title=\"class or interface in javax.swing\">isRootPaneCheckingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#paramString--\" title=\"class or interface in javax.swing\">paramString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#repaint-long-int-int-int-int-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setContentPane-java.awt.Container-\" title=\"class or interface in javax.swing\">setContentPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setGlassPane-java.awt.Component-\" title=\"class or interface in javax.swing\">setGlassPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setLayeredPane-javax.swing.JLayeredPane-\" title=\"class or interface in javax.swing\">setLayeredPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setRootPane-javax.swing.JRootPane-\" title=\"class or interface in javax.swing\">setRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setRootPaneCheckingEnabled-boolean-\" title=\"class or interface in javax.swing\">setRootPaneCheckingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setTransferHandler-javax.swing.TransferHandler-\" title=\"class or interface in javax.swing\">setTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#update-java.awt.Graphics-\" title=\"class or interface in javax.swing\">update</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.applet.Applet\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.applet.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">Applet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAppletContext--\" title=\"class or interface in java.applet\">getAppletContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAppletInfo--\" title=\"class or interface in java.applet\">getAppletInfo</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAudioClip-java.net.URL-\" title=\"class or interface in java.applet\">getAudioClip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAudioClip-java.net.URL-java.lang.String-\" title=\"class or interface in java.applet\">getAudioClip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getCodeBase--\" title=\"class or interface in java.applet\">getCodeBase</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getDocumentBase--\" title=\"class or interface in java.applet\">getDocumentBase</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getImage-java.net.URL-\" title=\"class or interface in java.applet\">getImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getImage-java.net.URL-java.lang.String-\" title=\"class or interface in java.applet\">getImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getLocale--\" title=\"class or interface in java.applet\">getLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getParameterInfo--\" title=\"class or interface in java.applet\">getParameterInfo</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#isActive--\" title=\"class or interface in java.applet\">isActive</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#isValidateRoot--\" title=\"class or interface in java.applet\">isValidateRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#newAudioClip-java.net.URL-\" title=\"class or interface in java.applet\">newAudioClip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#play-java.net.URL-\" title=\"class or interface in java.applet\">play</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#play-java.net.URL-java.lang.String-\" title=\"class or interface in java.applet\">play</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#resize-java.awt.Dimension-\" title=\"class or interface in java.applet\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#resize-int-int-\" title=\"class or interface in java.applet\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#setStub-java.applet.AppletStub-\" title=\"class or interface in java.applet\">setStub</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#showStatus-java.lang.String-\" title=\"class or interface in java.applet\">showStatus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#stop--\" title=\"class or interface in java.applet\">stop</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Panel\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\">Panel</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true#addNotify--\" title=\"class or interface in java.awt\">addNotify</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.lang.String-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">addContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#applyComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">applyComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#areFocusTraversalKeysSet-int-\" title=\"class or interface in java.awt\">areFocusTraversalKeysSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#countComponents--\" title=\"class or interface in java.awt\">countComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#deliverEvent-java.awt.Event-\" title=\"class or interface in java.awt\">deliverEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#doLayout--\" title=\"class or interface in java.awt\">doLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-int-int-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getAlignmentX--\" title=\"class or interface in java.awt\">getAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getAlignmentY--\" title=\"class or interface in java.awt\">getAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponent-int-\" title=\"class or interface in java.awt\">getComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-int-int-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentCount--\" title=\"class or interface in java.awt\">getComponentCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponents--\" title=\"class or interface in java.awt\">getComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentZOrder-java.awt.Component-\" title=\"class or interface in java.awt\">getComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getContainerListeners--\" title=\"class or interface in java.awt\">getContainerListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalKeys-int-\" title=\"class or interface in java.awt\">getFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalPolicy--\" title=\"class or interface in java.awt\">getFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getInsets--\" title=\"class or interface in java.awt\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getListeners-java.lang.Class-\" title=\"class or interface in java.awt\">getListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMaximumSize--\" title=\"class or interface in java.awt\">getMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMinimumSize--\" title=\"class or interface in java.awt\">getMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMousePosition-boolean-\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#insets--\" title=\"class or interface in java.awt\">insets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#invalidate--\" title=\"class or interface in java.awt\">invalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isAncestorOf-java.awt.Component-\" title=\"class or interface in java.awt\">isAncestorOf</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot--\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot-java.awt.Container-\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicyProvider--\" title=\"class or interface in java.awt\">isFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicySet--\" title=\"class or interface in java.awt\">isFocusTraversalPolicySet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#layout--\" title=\"class or interface in java.awt\">layout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintStream-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintWriter-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#locate-int-int-\" title=\"class or interface in java.awt\">locate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#minimumSize--\" title=\"class or interface in java.awt\">minimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paint-java.awt.Graphics-\" title=\"class or interface in java.awt\">paint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paintComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#preferredSize--\" title=\"class or interface in java.awt\">preferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#print-java.awt.Graphics-\" title=\"class or interface in java.awt\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#printComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">printComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processContainerEvent-java.awt.event.ContainerEvent-\" title=\"class or interface in java.awt\">processContainerEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">processEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">removeContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeNotify--\" title=\"class or interface in java.awt\">removeNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setComponentZOrder-java.awt.Component-int-\" title=\"class or interface in java.awt\">setComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusCycleRoot-boolean-\" title=\"class or interface in java.awt\">setFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalKeys-int-java.util.Set-\" title=\"class or interface in java.awt\">setFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicy-java.awt.FocusTraversalPolicy-\" title=\"class or interface in java.awt\">setFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicyProvider-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#transferFocusDownCycle--\" title=\"class or interface in java.awt\">transferFocusDownCycle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validateTree--\" title=\"class or interface in java.awt\">validateTree</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#action-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">action</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#add-java.awt.PopupMenu-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">addComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">addFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">addHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">addHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">addInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">addKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">addMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">addMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">addMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#bounds--\" title=\"class or interface in java.awt\">bounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#coalesceEvents-java.awt.AWTEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">coalesceEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-int-int-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-java.awt.Point-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-java.awt.image.ImageProducer-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-int-int-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-java.awt.ImageCapabilities-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disable--\" title=\"class or interface in java.awt\">disable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disableEvents-long-\" title=\"class or interface in java.awt\">disableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#dispatchEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">dispatchEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable--\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable-boolean-\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableEvents-long-\" title=\"class or interface in java.awt\">enableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableInputMethods-boolean-\" title=\"class or interface in java.awt\">enableInputMethods</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-boolean-boolean-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-byte-byte-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-char-char-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-double-double-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-float-float-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-int-int-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-long-long-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-short-short-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBackground--\" title=\"class or interface in java.awt\">getBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBaseline-int-int-\" title=\"class or interface in java.awt\">getBaseline</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBaselineResizeBehavior--\" title=\"class or interface in java.awt\">getBaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds--\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getColorModel--\" title=\"class or interface in java.awt\">getColorModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentListeners--\" title=\"class or interface in java.awt\">getComponentListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentOrientation--\" title=\"class or interface in java.awt\">getComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getCursor--\" title=\"class or interface in java.awt\">getCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getDropTarget--\" title=\"class or interface in java.awt\">getDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusCycleRootAncestor--\" title=\"class or interface in java.awt\">getFocusCycleRootAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusListeners--\" title=\"class or interface in java.awt\">getFocusListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusTraversalKeysEnabled--\" title=\"class or interface in java.awt\">getFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFontMetrics-java.awt.Font-\" title=\"class or interface in java.awt\">getFontMetrics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getForeground--\" title=\"class or interface in java.awt\">getForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getGraphicsConfiguration--\" title=\"class or interface in java.awt\">getGraphicsConfiguration</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyBoundsListeners--\" title=\"class or interface in java.awt\">getHierarchyBoundsListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyListeners--\" title=\"class or interface in java.awt\">getHierarchyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getIgnoreRepaint--\" title=\"class or interface in java.awt\">getIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputContext--\" title=\"class or interface in java.awt\">getInputContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodListeners--\" title=\"class or interface in java.awt\">getInputMethodListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodRequests--\" title=\"class or interface in java.awt\">getInputMethodRequests</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getKeyListeners--\" title=\"class or interface in java.awt\">getKeyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation--\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation-java.awt.Point-\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocationOnScreen--\" title=\"class or interface in java.awt\">getLocationOnScreen</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseListeners--\" title=\"class or interface in java.awt\">getMouseListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseMotionListeners--\" title=\"class or interface in java.awt\">getMouseMotionListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMousePosition--\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseWheelListeners--\" title=\"class or interface in java.awt\">getMouseWheelListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getName--\" title=\"class or interface in java.awt\">getName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getParent--\" title=\"class or interface in java.awt\">getParent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPeer--\" title=\"class or interface in java.awt\">getPeer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners--\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners-java.lang.String-\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize--\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getToolkit--\" title=\"class or interface in java.awt\">getToolkit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getTreeLock--\" title=\"class or interface in java.awt\">getTreeLock</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getX--\" title=\"class or interface in java.awt\">getX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getY--\" title=\"class or interface in java.awt\">getY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#gotFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">gotFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#handleEvent-java.awt.Event-\" title=\"class or interface in java.awt\">handleEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hasFocus--\" title=\"class or interface in java.awt\">hasFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hide--\" title=\"class or interface in java.awt\">hide</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#imageUpdate-java.awt.Image-int-int-int-int-int-\" title=\"class or interface in java.awt\">imageUpdate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#inside-int-int-\" title=\"class or interface in java.awt\">inside</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isBackgroundSet--\" title=\"class or interface in java.awt\">isBackgroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isCursorSet--\" title=\"class or interface in java.awt\">isCursorSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDisplayable--\" title=\"class or interface in java.awt\">isDisplayable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDoubleBuffered--\" title=\"class or interface in java.awt\">isDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isEnabled--\" title=\"class or interface in java.awt\">isEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusable--\" title=\"class or interface in java.awt\">isFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusOwner--\" title=\"class or interface in java.awt\">isFocusOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusTraversable--\" title=\"class or interface in java.awt\">isFocusTraversable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFontSet--\" title=\"class or interface in java.awt\">isFontSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isForegroundSet--\" title=\"class or interface in java.awt\">isForegroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isLightweight--\" title=\"class or interface in java.awt\">isLightweight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMaximumSizeSet--\" title=\"class or interface in java.awt\">isMaximumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMinimumSizeSet--\" title=\"class or interface in java.awt\">isMinimumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isOpaque--\" title=\"class or interface in java.awt\">isOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isPreferredSizeSet--\" title=\"class or interface in java.awt\">isPreferredSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isShowing--\" title=\"class or interface in java.awt\">isShowing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isValid--\" title=\"class or interface in java.awt\">isValid</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isVisible--\" title=\"class or interface in java.awt\">isVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyDown-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyUp-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list--\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintStream-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintWriter-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#location--\" title=\"class or interface in java.awt\">location</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#lostFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">lostFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDown-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDrag-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDrag</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseEnter-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseEnter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseExit-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseExit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseMove-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseMove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseUp-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#move-int-int-\" title=\"class or interface in java.awt\">move</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#nextFocus--\" title=\"class or interface in java.awt\">nextFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#paintAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#postEvent-java.awt.Event-\" title=\"class or interface in java.awt\">postEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#printAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">printAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processComponentEvent-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt\">processComponentEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processFocusEvent-java.awt.event.FocusEvent-\" title=\"class or interface in java.awt\">processFocusEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyBoundsEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyBoundsEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processInputMethodEvent-java.awt.event.InputMethodEvent-\" title=\"class or interface in java.awt\">processInputMethodEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in java.awt\">processKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseEvent-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt\">processMouseEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseMotionEvent-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt\">processMouseMotionEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseWheelEvent-java.awt.event.MouseWheelEvent-\" title=\"class or interface in java.awt\">processMouseWheelEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#remove-java.awt.MenuComponent-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">removeComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">removeFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">removeHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">removeHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">removeInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">removeKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">removeMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">removeMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">removeMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-int-int-int-int-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-long-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocus--\" title=\"class or interface in java.awt\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocus-boolean-\" title=\"class or interface in java.awt\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocusInWindow--\" title=\"class or interface in java.awt\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocusInWindow-boolean-\" title=\"class or interface in java.awt\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#reshape-int-int-int-int-\" title=\"class or interface in java.awt\">reshape</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#revalidate--\" title=\"class or interface in java.awt\">revalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-int-int-int-int-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">setComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setCursor-java.awt.Cursor-\" title=\"class or interface in java.awt\">setCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setDropTarget-java.awt.dnd.DropTarget-\" title=\"class or interface in java.awt\">setDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setEnabled-boolean-\" title=\"class or interface in java.awt\">setEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusable-boolean-\" title=\"class or interface in java.awt\">setFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusTraversalKeysEnabled-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setForeground-java.awt.Color-\" title=\"class or interface in java.awt\">setForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setIgnoreRepaint-boolean-\" title=\"class or interface in java.awt\">setIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocale-java.util.Locale-\" title=\"class or interface in java.awt\">setLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-int-int-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-java.awt.Point-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setMaximumSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setMinimumSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setName-java.lang.String-\" title=\"class or interface in java.awt\">setName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setPreferredSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-int-int-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setVisible-boolean-\" title=\"class or interface in java.awt\">setVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show--\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show-boolean-\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#size--\" title=\"class or interface in java.awt\">size</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#toString--\" title=\"class or interface in java.awt\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocus--\" title=\"class or interface in java.awt\">transferFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusBackward--\" title=\"class or interface in java.awt\">transferFocusBackward</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusUpCycle--\" title=\"class or interface in java.awt\">transferFocusUpCycle</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"PROGRAM_COMPLETED_TITLE_SUFFIX\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>PROGRAM_COMPLETED_TITLE_SUFFIX</h4>\n<pre>protected static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> PROGRAM_COMPLETED_TITLE_SUFFIX</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.AbstractConsoleProgram.PROGRAM_COMPLETED_TITLE_SUFFIX\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"AbstractConsoleProgram--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>AbstractConsoleProgram</h4>\n<pre>public&nbsp;AbstractConsoleProgram()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"checkCompilerFlags--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>checkCompilerFlags</h4>\n<pre>protected&nbsp;void&nbsp;checkCompilerFlags()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/Program.html#checkCompilerFlags--\">checkCompilerFlags</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"clearConsole--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clearConsole</h4>\n<pre>public&nbsp;void&nbsp;clearConsole()</pre>\n<div class=\"block\">Erases any text from the main console.</div>\n</li>\n</ul>\n<a name=\"compareOutput--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>compareOutput</h4>\n<pre>protected&nbsp;void&nbsp;compareOutput()</pre>\n<div class=\"block\">Pops up a file chooser to compare output to some expected output.</div>\n</li>\n</ul>\n<a name=\"endHook--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>endHook</h4>\n<pre>protected&nbsp;void&nbsp;endHook()</pre>\n<div class=\"block\">Called as the program is shutting down.\n Puts [terminated] on the console window title.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/Program.html#endHook--\">endHook</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"loadInputScript--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>loadInputScript</h4>\n<pre>protected&nbsp;void&nbsp;loadInputScript()</pre>\n<div class=\"block\">Pops up a file chooser to compare output to some expected output.</div>\n</li>\n</ul>\n<a name=\"fontEnlarge--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fontEnlarge</h4>\n<pre>public&nbsp;void&nbsp;fontEnlarge()</pre>\n<div class=\"block\">Makes the console's font larger by 2pt.</div>\n</li>\n</ul>\n<a name=\"fontShrink--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fontShrink</h4>\n<pre>public&nbsp;void&nbsp;fontShrink()</pre>\n<div class=\"block\">Makes the console's font smaller by 2pt.</div>\n</li>\n</ul>\n<a name=\"fontToggleBold--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fontToggleBold</h4>\n<pre>public&nbsp;void&nbsp;fontToggleBold()</pre>\n<div class=\"block\">Makes the console's font toggle between bold and non-bold.</div>\n</li>\n</ul>\n<a name=\"getAllOutput--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getAllOutput</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getAllOutput()</pre>\n<div class=\"block\">Returns all text that has been displayed on this console so far.</div>\n</li>\n</ul>\n<a name=\"getFont--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFont</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a>&nbsp;getFont()</pre>\n<div class=\"block\">Returns the font currently used in the console.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true#getFont--\" title=\"class or interface in java.awt\">getFont</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFont--\" title=\"class or interface in java.awt\">getFont</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"historyDown--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>historyDown</h4>\n<pre>public&nbsp;void&nbsp;historyDown()</pre>\n<div class=\"block\">Retrieves the next command in the console input history.</div>\n</li>\n</ul>\n<a name=\"historyUp--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>historyUp</h4>\n<pre>public&nbsp;void&nbsp;historyUp()</pre>\n<div class=\"block\">Retrieves the previous command in the console input history.</div>\n</li>\n</ul>\n<a name=\"loadConfiguration-java.util.Properties-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>loadConfiguration</h4>\n<pre>protected&nbsp;void&nbsp;loadConfiguration(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Properties.html?is-external=true\" title=\"class or interface in java.util\">Properties</a>&nbsp;props)</pre>\n<div class=\"block\">Reads the console's configuration settings, if present.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/Program.html#loadConfiguration-java.util.Properties-\">loadConfiguration</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>props</code> - properties to load from</dd>\n</dl>\n</li>\n</ul>\n<a name=\"menuAction-java.awt.event.ActionEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>menuAction</h4>\n<pre>public&nbsp;boolean&nbsp;menuAction(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;event)</pre>\n<div class=\"block\">Responds to menu clicks.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/Program.html#menuAction-java.awt.event.ActionEvent-\">menuAction</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"mouseWheelMoved-java.awt.event.MouseWheelEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>mouseWheelMoved</h4>\n<pre>public&nbsp;void&nbsp;mouseWheelMoved(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseWheelEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseWheelEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Implementation of MouseWheelListener interface.\n When you Ctrl-wheel or Command-wheel, the font will grow or shrink.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseWheelListener.html?is-external=true#mouseWheelMoved-java.awt.event.MouseWheelEvent-\" title=\"class or interface in java.awt.event\">mouseWheelMoved</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseWheelListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseWheelListener</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/Program.html#mouseWheelMoved-java.awt.event.MouseWheelEvent-\">mouseWheelMoved</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"promptUserForFile-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>promptUserForFile</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;promptUserForFile(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt)</pre>\n<div class=\"block\">Asks the user to type a file name, re-prompting until the user types a\n file that exists in the current directory.\n The message \"Unable to open that file. Try again.\" is shown every time a reprompt is necessary.\n The file's full path is returned as a string.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>prompt</code> - the text to display to the user</dd>\n<dd><code>directory</code> - the working directory in which to look for files (e.g. \"res/\")</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the file name typed by the user, including any directory prefix, such as \"res/input.txt\" or \"foo.dat\"</dd>\n</dl>\n</li>\n</ul>\n<a name=\"promptUserForFile-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>promptUserForFile</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;promptUserForFile(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt,\n                                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;directory)</pre>\n<div class=\"block\">Asks the user to type a file name, re-prompting until the user types a\n file that exists in the given directory.\n The message \"Unable to open that file. Try again.\" is shown every time a reprompt is necessary.\n The file's full path is returned as a string.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>prompt</code> - the text to display to the user</dd>\n<dd><code>directory</code> - the working directory in which to look for files (e.g. \"res/\")</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the file name typed by the user, including any directory prefix, such as \"res/input.txt\" or \"foo.dat\"</dd>\n</dl>\n</li>\n</ul>\n<a name=\"promptUserForFile-java.lang.String-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>promptUserForFile</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;promptUserForFile(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt,\n                                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;directory,\n                                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;reprompt)</pre>\n<div class=\"block\">Asks the user to type a file name, re-prompting until the user types a\n file that exists in the given directory.\n The given reprompt message is shown every time a reprompt is necessary.\n The file's full path is returned as a string.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>prompt</code> - the text to display to the user</dd>\n<dd><code>directory</code> - the working directory in which to look for files (e.g. \"res/\")</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the file name typed by the user, including any directory prefix, such as \"res/input.txt\" or \"foo.dat\"</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setClearConsoleEnabled-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setClearConsoleEnabled</h4>\n<pre>public&nbsp;void&nbsp;setClearConsoleEnabled(boolean&nbsp;enabled)</pre>\n<div class=\"block\">Turns on/off the ability to clear the console using clearConsole(); (default true)</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>enabled</code> - Whether to enable clearConsole();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"saveConfiguration-java.util.Properties-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>saveConfiguration</h4>\n<pre>protected&nbsp;void&nbsp;saveConfiguration(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Properties.html?is-external=true\" title=\"class or interface in java.util\">Properties</a>&nbsp;props)</pre>\n<div class=\"block\">Writes the console's configuration settings to disk.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/Program.html#saveConfiguration-java.util.Properties-\">saveConfiguration</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"scrollLineDown--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>scrollLineDown</h4>\n<pre>public&nbsp;void&nbsp;scrollLineDown()</pre>\n<div class=\"block\">Tells the console's output area to scroll itself downward by one line.</div>\n</li>\n</ul>\n<a name=\"scrollLineUp--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>scrollLineUp</h4>\n<pre>public&nbsp;void&nbsp;scrollLineUp()</pre>\n<div class=\"block\">Tells the console's output area to scroll itself upward by one line.</div>\n</li>\n</ul>\n<a name=\"scrollPageDown--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>scrollPageDown</h4>\n<pre>public&nbsp;void&nbsp;scrollPageDown()</pre>\n<div class=\"block\">Tells the console's output area to scroll itself downward by one page.</div>\n</li>\n</ul>\n<a name=\"scrollPageUp--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>scrollPageUp</h4>\n<pre>public&nbsp;void&nbsp;scrollPageUp()</pre>\n<div class=\"block\">Tells the console's output area to scroll itself upward by one page.</div>\n</li>\n</ul>\n<a name=\"scrollToTop--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>scrollToTop</h4>\n<pre>public&nbsp;void&nbsp;scrollToTop()</pre>\n<div class=\"block\">Tells the console's output area to scroll itself to the top of the output.</div>\n</li>\n</ul>\n<a name=\"scrollToBottom--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>scrollToBottom</h4>\n<pre>public&nbsp;void&nbsp;scrollToBottom()</pre>\n<div class=\"block\">Tells the console's output area to scroll itself to the bottom of the output.</div>\n</li>\n</ul>\n<a name=\"setColorFromChooser-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setColorFromChooser</h4>\n<pre>protected&nbsp;void&nbsp;setColorFromChooser(boolean&nbsp;background)</pre>\n<div class=\"block\">Pops up a JColorChooser to let the user pick a color for the console.</div>\n</li>\n</ul>\n<a name=\"setFont-java.awt.Font-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setFont</h4>\n<pre>public&nbsp;void&nbsp;setFont(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a>&nbsp;font)</pre>\n<div class=\"block\">Sets the font for the console.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFont-java.awt.Font-\" title=\"class or interface in java.awt\">setFont</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>font</code> - The new font</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>program.setFont(font);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setFont-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setFont</h4>\n<pre>public&nbsp;void&nbsp;setFont(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;str)</pre>\n<div class=\"block\">Sets the font used for the console as specified by the string\n <code>str</code>, which is interpreted in the style of\n <code>Font.decode</code>. The usual format of the font string is\n\n <p>\n <i>family</i><code>-</code><i>style</i><code>-</code><i>size</i>\n <p>\n\n where both <i>style</i> and <i>size</i> are optional. If any of these\n parts are specified as an asterisk, the existing value is retained.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>str</code> - A <code>String</code> specifying the new font</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>program.setFont(str);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setFontFromChooser--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>setFontFromChooser</h4>\n<pre>protected&nbsp;void&nbsp;setFontFromChooser()</pre>\n<div class=\"block\">Pops up a JFontChooser to let the user pick a font for the console.</div>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Class</li>\n<li><a href=\"../../acm/program/AsciiArtProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/program/AbstractConsoleProgram.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AbstractConsoleProgram.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JApplet\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/program/AsciiArtProgram.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:05 PDT 2017 -->\n<title>AsciiArtProgram</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"AsciiArtProgram\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":10,\"i16\":10,\"i17\":10,\"i18\":10,\"i19\":10,\"i20\":10,\"i21\":10,\"i22\":10,\"i23\":10,\"i24\":10,\"i25\":10,\"i26\":10,\"i27\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/program/CommandLineProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/program/AsciiArtProgram.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AsciiArtProgram.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JApplet\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.acm.program.AbstractConsoleProgram\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.program</div>\n<h2 title=\"Class AsciiArtProgram\" class=\"title\">Class AsciiArtProgram</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Component</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Container</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Panel</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">java.applet.Applet</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JApplet</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">acm.program.Program</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">acm.program.AbstractConsoleProgram</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../acm/program/ConsoleProgram.html\" title=\"class in acm.program\">acm.program.ConsoleProgram</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.program.AsciiArtProgram</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd>acm.io.IOModel, <a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/AdjustmentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">AdjustmentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ContainerListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ItemListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ItemListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseWheelListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/TextListener.html?is-external=true\" title=\"class or interface in java.awt.event\">TextListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowFocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowStateListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowStateListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListDataListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListDataListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListSelectionListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListSelectionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/MouseInputListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">MouseInputListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/PopupMenuListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">PopupMenuListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/RootPaneContainer.html?is-external=true\" title=\"class or interface in javax.swing\">RootPaneContainer</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">AsciiArtProgram</span>\nextends <a href=\"../../acm/program/ConsoleProgram.html\" title=\"class in acm.program\">ConsoleProgram</a></pre>\n<div class=\"block\">...</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#acm.program.AsciiArtProgram\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JApplet\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.AccessibleJApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet.AccessibleJApplet</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.applet.Applet\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.applet.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">Applet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.AccessibleApplet.html?is-external=true\" title=\"class or interface in java.applet\">Applet.AccessibleApplet</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Panel\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\">Panel</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.AccessibleAWTPanel.html?is-external=true\" title=\"class or interface in java.awt\">Panel.AccessibleAWTPanel</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.AccessibleAWTContainer.html?is-external=true\" title=\"class or interface in java.awt\">Container.AccessibleAWTContainer</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.AccessibleAWTComponent.html?is-external=true\" title=\"class or interface in java.awt\">Component.AccessibleAWTComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BaselineResizeBehavior.html?is-external=true\" title=\"class or interface in java.awt\">Component.BaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BltBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.BltBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.FlipBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.FlipBufferStrategy</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.program.AbstractConsoleProgram\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;acm.program.<a href=\"../../acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></h3>\n<code><a href=\"../../acm/program/AbstractConsoleProgram.html#PROGRAM_COMPLETED_TITLE_SUFFIX\">PROGRAM_COMPLETED_TITLE_SUFFIX</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.program.Program\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;acm.program.<a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></h3>\n<code><a href=\"../../acm/program/Program.html#CONFIG_FILE_NAME\">CONFIG_FILE_NAME</a>, <a href=\"../../acm/program/Program.html#invisibleObjects\">invisibleObjects</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.JApplet\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#accessibleContext\" title=\"class or interface in javax.swing\">accessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#rootPane\" title=\"class or interface in javax.swing\">rootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#rootPaneCheckingEnabled\" title=\"class or interface in javax.swing\">rootPaneCheckingEnabled</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#BOTTOM_ALIGNMENT\" title=\"class or interface in java.awt\">BOTTOM_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#CENTER_ALIGNMENT\" title=\"class or interface in java.awt\">CENTER_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#LEFT_ALIGNMENT\" title=\"class or interface in java.awt\">LEFT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#RIGHT_ALIGNMENT\" title=\"class or interface in java.awt\">RIGHT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#TOP_ALIGNMENT\" title=\"class or interface in java.awt\">TOP_ALIGNMENT</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.program.ProgramInterface\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;acm.program.<a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></h3>\n<code><a href=\"../../acm/program/ProgramInterface.html#CENTER\">CENTER</a>, <a href=\"../../acm/program/ProgramInterface.html#EAST\">EAST</a>, <a href=\"../../acm/program/ProgramInterface.html#NORTH\">NORTH</a>, <a href=\"../../acm/program/ProgramInterface.html#SOUTH\">SOUTH</a>, <a href=\"../../acm/program/ProgramInterface.html#WEST\">WEST</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.image.ImageObserver\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ABORT\" title=\"class or interface in java.awt.image\">ABORT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ALLBITS\" title=\"class or interface in java.awt.image\">ALLBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ERROR\" title=\"class or interface in java.awt.image\">ERROR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#FRAMEBITS\" title=\"class or interface in java.awt.image\">FRAMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#HEIGHT\" title=\"class or interface in java.awt.image\">HEIGHT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#PROPERTIES\" title=\"class or interface in java.awt.image\">PROPERTIES</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#SOMEBITS\" title=\"class or interface in java.awt.image\">SOMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#WIDTH\" title=\"class or interface in java.awt.image\">WIDTH</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AsciiArtProgram.html#AsciiArtProgram--\">AsciiArtProgram</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AsciiArtProgram.html#clear--\">clear</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AsciiArtProgram.html#drawCharacter-int-int-\">drawCharacter</a></span>(int&nbsp;x,\n             int&nbsp;y)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AsciiArtProgram.html#drawCharacter-int-int-java.lang.String-\">drawCharacter</a></span>(int&nbsp;x,\n             int&nbsp;y,\n             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;character)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AsciiArtProgram.html#drawLine-double-double-double-double-\">drawLine</a></span>(double&nbsp;x1,\n        double&nbsp;y1,\n        double&nbsp;x2,\n        double&nbsp;y2)</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AsciiArtProgram.html#drawLine-int-int-int-int-\">drawLine</a></span>(int&nbsp;x1,\n        int&nbsp;y1,\n        int&nbsp;x2,\n        int&nbsp;y2)</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AsciiArtProgram.html#drawRect-double-double-double-double-\">drawRect</a></span>(double&nbsp;x,\n        double&nbsp;y,\n        double&nbsp;width,\n        double&nbsp;height)</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AsciiArtProgram.html#drawRect-int-int-int-int-\">drawRect</a></span>(int&nbsp;x,\n        int&nbsp;y,\n        int&nbsp;width,\n        int&nbsp;height)</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AsciiArtProgram.html#fillRect-double-double-double-double-\">fillRect</a></span>(double&nbsp;x,\n        double&nbsp;y,\n        double&nbsp;width,\n        double&nbsp;height)</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AsciiArtProgram.html#fillRect-int-int-int-int-\">fillRect</a></span>(int&nbsp;x,\n        int&nbsp;y,\n        int&nbsp;width,\n        int&nbsp;height)</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AsciiArtProgram.html#getBackgroundCharacter--\">getBackgroundCharacter</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AsciiArtProgram.html#getBackgroundColor--\">getBackgroundColor</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AsciiArtProgram.html#getCharacter-double-double-\">getCharacter</a></span>(double&nbsp;x,\n            double&nbsp;y)</code>&nbsp;</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AsciiArtProgram.html#getCharacter-int-int-\">getCharacter</a></span>(int&nbsp;x,\n            int&nbsp;y)</code>&nbsp;</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AsciiArtProgram.html#getColumns--\">getColumns</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AsciiArtProgram.html#getFillCharacter--\">getFillCharacter</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AsciiArtProgram.html#getForegroundCharacter--\">getForegroundCharacter</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AsciiArtProgram.html#getForegroundColor--\">getForegroundColor</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AsciiArtProgram.html#getRows--\">getRows</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AsciiArtProgram.html#redraw--\">redraw</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AsciiArtProgram.html#setBackgroundCharacter-char-\">setBackgroundCharacter</a></span>(char&nbsp;character)</code>&nbsp;</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AsciiArtProgram.html#setBackgroundCharacter-java.lang.String-\">setBackgroundCharacter</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;character)</code>&nbsp;</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AsciiArtProgram.html#setBackgroundColor-java.awt.Color-\">setBackgroundColor</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>&nbsp;</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AsciiArtProgram.html#setFillCharacter-char-\">setFillCharacter</a></span>(char&nbsp;character)</code>&nbsp;</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AsciiArtProgram.html#setFillCharacter-java.lang.String-\">setFillCharacter</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;character)</code>&nbsp;</td>\n</tr>\n<tr id=\"i24\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AsciiArtProgram.html#setForegroundCharacter-char-\">setForegroundCharacter</a></span>(char&nbsp;character)</code>&nbsp;</td>\n</tr>\n<tr id=\"i25\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AsciiArtProgram.html#setForegroundCharacter-java.lang.String-\">setForegroundCharacter</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;character)</code>&nbsp;</td>\n</tr>\n<tr id=\"i26\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AsciiArtProgram.html#setForegroundColor-java.awt.Color-\">setForegroundColor</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>&nbsp;</td>\n</tr>\n<tr id=\"i27\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/AsciiArtProgram.html#setRedrawAutomatically-boolean-\">setRedrawAutomatically</a></span>(boolean&nbsp;redraw)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.program.ConsoleProgram\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.program.<a href=\"../../acm/program/ConsoleProgram.html\" title=\"class in acm.program\">ConsoleProgram</a></h3>\n<code><a href=\"../../acm/program/ConsoleProgram.html#captureOutput--\">captureOutput</a>, <a href=\"../../acm/program/ConsoleProgram.html#captureOutput-boolean-\">captureOutput</a>, <a href=\"../../acm/program/ConsoleProgram.html#createConsole--\">createConsole</a>, <a href=\"../../acm/program/ConsoleProgram.html#echoComments--\">echoComments</a>, <a href=\"../../acm/program/ConsoleProgram.html#getCapturedOutput--\">getCapturedOutput</a>, <a href=\"../../acm/program/ConsoleProgram.html#getComments--\">getComments</a>, <a href=\"../../acm/program/ConsoleProgram.html#init--\">init</a>, <a href=\"../../acm/program/ConsoleProgram.html#overrideInput-java.io.InputStream-\">overrideInput</a>, <a href=\"../../acm/program/ConsoleProgram.html#overrideInput-java.io.Reader-\">overrideInput</a>, <a href=\"../../acm/program/ConsoleProgram.html#overrideInput-java.lang.String-\">overrideInput</a>, <a href=\"../../acm/program/ConsoleProgram.html#print-java.lang.String-\">print</a>, <a href=\"../../acm/program/ConsoleProgram.html#print-java.lang.String-java.awt.Color-\">print</a>, <a href=\"../../acm/program/ConsoleProgram.html#printf-java.lang.String-java.lang.Object...-\">printf</a>, <a href=\"../../acm/program/ConsoleProgram.html#println--\">println</a>, <a href=\"../../acm/program/ConsoleProgram.html#println-java.lang.String-\">println</a>, <a href=\"../../acm/program/ConsoleProgram.html#println-java.lang.String-java.awt.Color-\">println</a>, <a href=\"../../acm/program/ConsoleProgram.html#readBoolean-java.lang.String-java.lang.String-java.lang.String-\">readBoolean</a>, <a href=\"../../acm/program/ConsoleProgram.html#readDouble-java.lang.String-double-double-\">readDouble</a>, <a href=\"../../acm/program/ConsoleProgram.html#readInt-java.lang.String-int-int-\">readInt</a>, <a href=\"../../acm/program/ConsoleProgram.html#readLine-java.lang.String-\">readLine</a>, <a href=\"../../acm/program/ConsoleProgram.html#run--\">run</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.program.AbstractConsoleProgram\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.program.<a href=\"../../acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></h3>\n<code><a href=\"../../acm/program/AbstractConsoleProgram.html#checkCompilerFlags--\">checkCompilerFlags</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#clearConsole--\">clearConsole</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#compareOutput--\">compareOutput</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#endHook--\">endHook</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#fontEnlarge--\">fontEnlarge</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#fontShrink--\">fontShrink</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#fontToggleBold--\">fontToggleBold</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#getAllOutput--\">getAllOutput</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#getFont--\">getFont</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#historyDown--\">historyDown</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#historyUp--\">historyUp</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#loadConfiguration-java.util.Properties-\">loadConfiguration</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#loadInputScript--\">loadInputScript</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#menuAction-java.awt.event.ActionEvent-\">menuAction</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#mouseWheelMoved-java.awt.event.MouseWheelEvent-\">mouseWheelMoved</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#promptUserForFile-java.lang.String-\">promptUserForFile</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#promptUserForFile-java.lang.String-java.lang.String-\">promptUserForFile</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#promptUserForFile-java.lang.String-java.lang.String-java.lang.String-\">promptUserForFile</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#saveConfiguration-java.util.Properties-\">saveConfiguration</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#scrollLineDown--\">scrollLineDown</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#scrollLineUp--\">scrollLineUp</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#scrollPageDown--\">scrollPageDown</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#scrollPageUp--\">scrollPageUp</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#scrollToBottom--\">scrollToBottom</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#scrollToTop--\">scrollToTop</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#setClearConsoleEnabled-boolean-\">setClearConsoleEnabled</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#setColorFromChooser-boolean-\">setColorFromChooser</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#setFont-java.awt.Font-\">setFont</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#setFont-java.lang.String-\">setFont</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#setFontFromChooser--\">setFontFromChooser</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.program.Program\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.program.<a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></h3>\n<code><a href=\"../../acm/program/Program.html#actionPerformed-java.awt.event.ActionEvent-\">actionPerformed</a>, <a href=\"../../acm/program/Program.html#add-java.awt.Component-java.lang.String-java.lang.Object-\">add</a>, <a href=\"../../acm/program/Program.html#addActionListeners--\">addActionListeners</a>, <a href=\"../../acm/program/Program.html#addActionListeners-java.awt.event.ActionListener-\">addActionListeners</a>, <a href=\"../../acm/program/Program.html#addActionListenersToButtonsOnly--\">addActionListenersToButtonsOnly</a>, <a href=\"../../acm/program/Program.html#addAllActionListeners--\">addAllActionListeners</a>, <a href=\"../../acm/program/Program.html#addExitHook-java.lang.Object-\">addExitHook</a>, <a href=\"../../acm/program/Program.html#addImpl-java.awt.Component-java.lang.Object-int-\">addImpl</a>, <a href=\"../../acm/program/Program.html#adjustmentValueChanged-java.awt.event.AdjustmentEvent-\">adjustmentValueChanged</a>, <a href=\"../../acm/program/Program.html#alert-java.lang.Object-\">alert</a>, <a href=\"../../acm/program/Program.html#alert-java.lang.String-\">alert</a>, <a href=\"../../acm/program/Program.html#animation--\">animation</a>, <a href=\"../../acm/program/Program.html#center--\">center</a>, <a href=\"../../acm/program/Program.html#changedUpdate-javax.swing.event.DocumentEvent-\">changedUpdate</a>, <a href=\"../../acm/program/Program.html#checkKill--\">checkKill</a>, <a href=\"../../acm/program/Program.html#checkStartupSettings--\">checkStartupSettings</a>, <a href=\"../../acm/program/Program.html#componentAdded-java.awt.event.ContainerEvent-\">componentAdded</a>, <a href=\"../../acm/program/Program.html#componentHidden-java.awt.event.ComponentEvent-\">componentHidden</a>, <a href=\"../../acm/program/Program.html#componentMoved-java.awt.event.ComponentEvent-\">componentMoved</a>, <a href=\"../../acm/program/Program.html#componentRemoved-java.awt.event.ContainerEvent-\">componentRemoved</a>, <a href=\"../../acm/program/Program.html#componentResized-java.awt.event.ComponentEvent-\">componentResized</a>, <a href=\"../../acm/program/Program.html#componentShown-java.awt.event.ComponentEvent-\">componentShown</a>, <a href=\"../../acm/program/Program.html#confirm-java.lang.String-\">confirm</a>, <a href=\"../../acm/program/Program.html#contentsChanged-javax.swing.event.ListDataEvent-\">contentsChanged</a>, <a href=\"../../acm/program/Program.html#createDialogIO--\">createDialogIO</a>, <a href=\"../../acm/program/Program.html#createMenuBar--\">createMenuBar</a>, <a href=\"../../acm/program/Program.html#createParameterTable-java.lang.String:A-\">createParameterTable</a>, <a href=\"../../acm/program/Program.html#createProgramFrame--\">createProgramFrame</a>, <a href=\"../../acm/program/Program.html#destroy--\">destroy</a>, <a href=\"../../acm/program/Program.html#error-java.lang.Exception-\">error</a>, <a href=\"../../acm/program/Program.html#error-java.lang.Exception-java.lang.String-\">error</a>, <a href=\"../../acm/program/Program.html#error-java.lang.String-\">error</a>, <a href=\"../../acm/program/Program.html#exit--\">exit</a>, <a href=\"../../acm/program/Program.html#fileExists-java.lang.String-\">fileExists</a>, <a href=\"../../acm/program/Program.html#fileExists-java.lang.String-java.lang.String-\">fileExists</a>, <a href=\"../../acm/program/Program.html#fileExistsInsideJAR-java.lang.String-\">fileExistsInsideJAR</a>, <a href=\"../../acm/program/Program.html#fileExistsInsideJAR-java.lang.String-java.lang.String-\">fileExistsInsideJAR</a>, <a href=\"../../acm/program/Program.html#fileExistsOnDisk-java.lang.String-\">fileExistsOnDisk</a>, <a href=\"../../acm/program/Program.html#fileExistsOnDisk-java.lang.String-java.lang.String-\">fileExistsOnDisk</a>, <a href=\"../../acm/program/Program.html#fileSize-java.lang.String-\">fileSize</a>, <a href=\"../../acm/program/Program.html#fileSize-java.lang.String-java.lang.String-\">fileSize</a>, <a href=\"../../acm/program/Program.html#focusGained-java.awt.event.FocusEvent-\">focusGained</a>, <a href=\"../../acm/program/Program.html#focusLost-java.awt.event.FocusEvent-\">focusLost</a>, <a href=\"../../acm/program/Program.html#getAnimationDelay--\">getAnimationDelay</a>, <a href=\"../../acm/program/Program.html#getAppletStub--\">getAppletStub</a>, <a href=\"../../acm/program/Program.html#getArgumentArray--\">getArgumentArray</a>, <a href=\"../../acm/program/Program.html#getBoolean--\">getBoolean</a>, <a href=\"../../acm/program/Program.html#getBoolean-java.lang.String-\">getBoolean</a>, <a href=\"../../acm/program/Program.html#getBoolean-java.lang.String-java.lang.String-java.lang.String-\">getBoolean</a>, <a href=\"../../acm/program/Program.html#getBorder-java.lang.String-\">getBorder</a>, <a href=\"../../acm/program/Program.html#getBottomY--\">getBottomY</a>, <a href=\"../../acm/program/Program.html#getCenterLocation--\">getCenterLocation</a>, <a href=\"../../acm/program/Program.html#getCenterX--\">getCenterX</a>, <a href=\"../../acm/program/Program.html#getCenterY--\">getCenterY</a>, <a href=\"../../acm/program/Program.html#getCentralRegionSize--\">getCentralRegionSize</a>, <a href=\"../../acm/program/Program.html#getConsole--\">getConsole</a>, <a href=\"../../acm/program/Program.html#getDialog--\">getDialog</a>, <a href=\"../../acm/program/Program.html#getDouble--\">getDouble</a>, <a href=\"../../acm/program/Program.html#getDouble-double-double-\">getDouble</a>, <a href=\"../../acm/program/Program.html#getDouble-java.lang.String-\">getDouble</a>, <a href=\"../../acm/program/Program.html#getDouble-java.lang.String-double-double-\">getDouble</a>, <a href=\"../../acm/program/Program.html#getHeight--\">getHeight</a>, <a href=\"../../acm/program/Program.html#getInputModel--\">getInputModel</a>, <a href=\"../../acm/program/Program.html#getInteger--\">getInteger</a>, <a href=\"../../acm/program/Program.html#getInteger-int-int-\">getInteger</a>, <a href=\"../../acm/program/Program.html#getInteger-java.lang.String-\">getInteger</a>, <a href=\"../../acm/program/Program.html#getInteger-java.lang.String-int-int-\">getInteger</a>, <a href=\"../../acm/program/Program.html#getJFrame--\">getJFrame</a>, <a href=\"../../acm/program/Program.html#getLayout--\">getLayout</a>, <a href=\"../../acm/program/Program.html#getLine--\">getLine</a>, <a href=\"../../acm/program/Program.html#getLine-java.lang.String-\">getLine</a>, <a href=\"../../acm/program/Program.html#getMainThread--\">getMainThread</a>, <a href=\"../../acm/program/Program.html#getMenuBar--\">getMenuBar</a>, <a href=\"../../acm/program/Program.html#getOutputColor--\">getOutputColor</a>, <a href=\"../../acm/program/Program.html#getOutputModel--\">getOutputModel</a>, <a href=\"../../acm/program/Program.html#getParameter-java.lang.String-\">getParameter</a>, <a href=\"../../acm/program/Program.html#getParameterTable--\">getParameterTable</a>, <a href=\"../../acm/program/Program.html#getPreferredSize--\">getPreferredSize</a>, <a href=\"../../acm/program/Program.html#getReader--\">getReader</a>, <a href=\"../../acm/program/Program.html#getReal--\">getReal</a>, <a href=\"../../acm/program/Program.html#getReal-double-double-\">getReal</a>, <a href=\"../../acm/program/Program.html#getReal-java.lang.String-\">getReal</a>, <a href=\"../../acm/program/Program.html#getReal-java.lang.String-double-double-\">getReal</a>, <a href=\"../../acm/program/Program.html#getRegionPanel-java.lang.String-\">getRegionPanel</a>, <a href=\"../../acm/program/Program.html#getRightX--\">getRightX</a>, <a href=\"../../acm/program/Program.html#getScreenHeight--\">getScreenHeight</a>, <a href=\"../../acm/program/Program.html#getScreenSize--\">getScreenSize</a>, <a href=\"../../acm/program/Program.html#getScreenWidth--\">getScreenWidth</a>, <a href=\"../../acm/program/Program.html#getStartupObject--\">getStartupObject</a>, <a href=\"../../acm/program/Program.html#getTitle--\">getTitle</a>, <a href=\"../../acm/program/Program.html#getWidth--\">getWidth</a>, <a href=\"../../acm/program/Program.html#getWindow--\">getWindow</a>, <a href=\"../../acm/program/Program.html#getWriter--\">getWriter</a>, <a href=\"../../acm/program/Program.html#getYesOrNo-java.lang.String-\">getYesOrNo</a>, <a href=\"../../acm/program/Program.html#hasConfiguration--\">hasConfiguration</a>, <a href=\"../../acm/program/Program.html#insertUpdate-javax.swing.event.DocumentEvent-\">insertUpdate</a>, <a href=\"../../acm/program/Program.html#intervalAdded-javax.swing.event.ListDataEvent-\">intervalAdded</a>, <a href=\"../../acm/program/Program.html#intervalRemoved-javax.swing.event.ListDataEvent-\">intervalRemoved</a>, <a href=\"../../acm/program/Program.html#isAnimated--\">isAnimated</a>, <a href=\"../../acm/program/Program.html#isApplet--\">isApplet</a>, <a href=\"../../acm/program/Program.html#isAppletMode--\">isAppletMode</a>, <a href=\"../../acm/program/Program.html#isExitOnClose--\">isExitOnClose</a>, <a href=\"../../acm/program/Program.html#isInitialized--\">isInitialized</a>, <a href=\"../../acm/program/Program.html#isStarted--\">isStarted</a>, <a href=\"../../acm/program/Program.html#itemStateChanged-java.awt.event.ItemEvent-\">itemStateChanged</a>, <a href=\"../../acm/program/Program.html#keyPressed-java.awt.event.KeyEvent-\">keyPressed</a>, <a href=\"../../acm/program/Program.html#keyReleased-java.awt.event.KeyEvent-\">keyReleased</a>, <a href=\"../../acm/program/Program.html#keyTyped-java.awt.event.KeyEvent-\">keyTyped</a>, <a href=\"../../acm/program/Program.html#killMe--\">killMe</a>, <a href=\"../../acm/program/Program.html#loadConfiguration--\">loadConfiguration</a>, <a href=\"../../acm/program/Program.html#main-java.lang.String:A-\">main</a>, <a href=\"../../acm/program/Program.html#menuCanceled-javax.swing.event.MenuEvent-\">menuCanceled</a>, <a href=\"../../acm/program/Program.html#menuDeselected-javax.swing.event.MenuEvent-\">menuDeselected</a>, <a href=\"../../acm/program/Program.html#menuSelected-javax.swing.event.MenuEvent-\">menuSelected</a>, <a href=\"../../acm/program/Program.html#mouseClicked-java.awt.event.MouseEvent-\">mouseClicked</a>, <a href=\"../../acm/program/Program.html#mouseDragged-java.awt.event.MouseEvent-\">mouseDragged</a>, <a href=\"../../acm/program/Program.html#mouseEntered-java.awt.event.MouseEvent-\">mouseEntered</a>, <a href=\"../../acm/program/Program.html#mouseExited-java.awt.event.MouseEvent-\">mouseExited</a>, <a href=\"../../acm/program/Program.html#mouseMoved-java.awt.event.MouseEvent-\">mouseMoved</a>, <a href=\"../../acm/program/Program.html#mousePressed-java.awt.event.MouseEvent-\">mousePressed</a>, <a href=\"../../acm/program/Program.html#mouseReleased-java.awt.event.MouseEvent-\">mouseReleased</a>, <a href=\"../../acm/program/Program.html#openFile-java.lang.String-\">openFile</a>, <a href=\"../../acm/program/Program.html#openFile-java.lang.String-java.lang.String-\">openFile</a>, <a href=\"../../acm/program/Program.html#openFileFromDisk-java.lang.String-\">openFileFromDisk</a>, <a href=\"../../acm/program/Program.html#openFileFromDisk-java.lang.String-java.lang.String-\">openFileFromDisk</a>, <a href=\"../../acm/program/Program.html#openFileFromJAR-java.lang.String-\">openFileFromJAR</a>, <a href=\"../../acm/program/Program.html#openFileFromJAR-java.lang.String-java.lang.String-\">openFileFromJAR</a>, <a href=\"../../acm/program/Program.html#pack--\">pack</a>, <a href=\"../../acm/program/Program.html#pause-double-\">pause</a>, <a href=\"../../acm/program/Program.html#pauseTick--\">pauseTick</a>, <a href=\"../../acm/program/Program.html#popupMenuCanceled-javax.swing.event.PopupMenuEvent-\">popupMenuCanceled</a>, <a href=\"../../acm/program/Program.html#popupMenuWillBecomeInvisible-javax.swing.event.PopupMenuEvent-\">popupMenuWillBecomeInvisible</a>, <a href=\"../../acm/program/Program.html#popupMenuWillBecomeVisible-javax.swing.event.PopupMenuEvent-\">popupMenuWillBecomeVisible</a>, <a href=\"../../acm/program/Program.html#print-boolean-\">print</a>, <a href=\"../../acm/program/Program.html#print-boolean-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-char-\">print</a>, <a href=\"../../acm/program/Program.html#print-char-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-double-\">print</a>, <a href=\"../../acm/program/Program.html#print-double-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-float-\">print</a>, <a href=\"../../acm/program/Program.html#print-float-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-int-\">print</a>, <a href=\"../../acm/program/Program.html#print-int-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-long-\">print</a>, <a href=\"../../acm/program/Program.html#print-long-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-java.lang.Object-\">print</a>, <a href=\"../../acm/program/Program.html#print-java.lang.Object-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#println-boolean-\">println</a>, <a href=\"../../acm/program/Program.html#println-boolean-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-char-\">println</a>, <a href=\"../../acm/program/Program.html#println-char-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-double-\">println</a>, <a href=\"../../acm/program/Program.html#println-double-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-float-\">println</a>, <a href=\"../../acm/program/Program.html#println-float-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-int-\">println</a>, <a href=\"../../acm/program/Program.html#println-int-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-long-\">println</a>, <a href=\"../../acm/program/Program.html#println-long-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-java.lang.Object-\">println</a>, <a href=\"../../acm/program/Program.html#println-java.lang.Object-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#prompt-java.lang.String-\">prompt</a>, <a href=\"../../acm/program/Program.html#readBoolean--\">readBoolean</a>, <a href=\"../../acm/program/Program.html#readBoolean-java.lang.String-\">readBoolean</a>, <a href=\"../../acm/program/Program.html#readDouble--\">readDouble</a>, <a href=\"../../acm/program/Program.html#readDouble-double-double-\">readDouble</a>, <a href=\"../../acm/program/Program.html#readDouble-java.lang.String-\">readDouble</a>, <a href=\"../../acm/program/Program.html#readInt--\">readInt</a>, <a href=\"../../acm/program/Program.html#readInt-int-int-\">readInt</a>, <a href=\"../../acm/program/Program.html#readInt-java.lang.String-\">readInt</a>, <a href=\"../../acm/program/Program.html#readLine--\">readLine</a>, <a href=\"../../acm/program/Program.html#remove-java.awt.Component-\">remove</a>, <a href=\"../../acm/program/Program.html#remove-int-\">remove</a>, <a href=\"../../acm/program/Program.html#removeAll--\">removeAll</a>, <a href=\"../../acm/program/Program.html#removeFromRegion-java.awt.Component-java.lang.String-\">removeFromRegion</a>, <a href=\"../../acm/program/Program.html#removeMenuBar--\">removeMenuBar</a>, <a href=\"../../acm/program/Program.html#removeUpdate-javax.swing.event.DocumentEvent-\">removeUpdate</a>, <a href=\"../../acm/program/Program.html#repaint--\">repaint</a>, <a href=\"../../acm/program/Program.html#runHook--\">runHook</a>, <a href=\"../../acm/program/Program.html#saveConfiguration--\">saveConfiguration</a>, <a href=\"../../acm/program/Program.html#setAnimated-boolean-\">setAnimated</a>, <a href=\"../../acm/program/Program.html#setAnimationDelay-int-\">setAnimationDelay</a>, <a href=\"../../acm/program/Program.html#setAppletStub-java.applet.AppletStub-\">setAppletStub</a>, <a href=\"../../acm/program/Program.html#setBackground-java.awt.Color-\">setBackground</a>, <a href=\"../../acm/program/Program.html#setBottomY-double-\">setBottomY</a>, <a href=\"../../acm/program/Program.html#setCenterLocation-double-double-\">setCenterLocation</a>, <a href=\"../../acm/program/Program.html#setCenterX-double-\">setCenterX</a>, <a href=\"../../acm/program/Program.html#setCenterY-double-\">setCenterY</a>, <a href=\"../../acm/program/Program.html#setConsole-acm.io.IOConsole-\">setConsole</a>, <a href=\"../../acm/program/Program.html#setDialog-acm.io.IODialog-\">setDialog</a>, <a href=\"../../acm/program/Program.html#setExitOnClose-boolean-\">setExitOnClose</a>, <a href=\"../../acm/program/Program.html#setFramesPerSecond-int-\">setFramesPerSecond</a>, <a href=\"../../acm/program/Program.html#setHeight-double-\">setHeight</a>, <a href=\"../../acm/program/Program.html#setInputModel-acm.io.IOModel-\">setInputModel</a>, <a href=\"../../acm/program/Program.html#setInvisible-acm.graphics.GObject-boolean-\">setInvisible</a>, <a href=\"../../acm/program/Program.html#setJFrame-javax.swing.JFrame-\">setJFrame</a>, <a href=\"../../acm/program/Program.html#setJMenuBar-javax.swing.JMenuBar-\">setJMenuBar</a>, <a href=\"../../acm/program/Program.html#setLayout-java.awt.LayoutManager-\">setLayout</a>, <a href=\"../../acm/program/Program.html#setLocation-double-double-\">setLocation</a>, <a href=\"../../acm/program/Program.html#setLocation-acm.graphics.GPoint-\">setLocation</a>, <a href=\"../../acm/program/Program.html#setOutputColor-java.awt.Color-\">setOutputColor</a>, <a href=\"../../acm/program/Program.html#setOutputModel-acm.io.IOModel-\">setOutputModel</a>, <a href=\"../../acm/program/Program.html#setParameter-java.lang.String-java.lang.String-\">setParameter</a>, <a href=\"../../acm/program/Program.html#setParameterTable-java.util.Map-\">setParameterTable</a>, <a href=\"../../acm/program/Program.html#setPauseScaleFactor-double-\">setPauseScaleFactor</a>, <a href=\"../../acm/program/Program.html#setResizable-boolean-\">setResizable</a>, <a href=\"../../acm/program/Program.html#setRightX-double-\">setRightX</a>, <a href=\"../../acm/program/Program.html#setShowPixelGrid-boolean-\">setShowPixelGrid</a>, <a href=\"../../acm/program/Program.html#setShowPixelInfo-boolean-\">setShowPixelInfo</a>, <a href=\"../../acm/program/Program.html#setSize-double-double-\">setSize</a>, <a href=\"../../acm/program/Program.html#setStartupObject-java.lang.Object-\">setStartupObject</a>, <a href=\"../../acm/program/Program.html#setTitle-java.lang.String-\">setTitle</a>, <a href=\"../../acm/program/Program.html#setWidth-double-\">setWidth</a>, <a href=\"../../acm/program/Program.html#setX-double-\">setX</a>, <a href=\"../../acm/program/Program.html#setY-double-\">setY</a>, <a href=\"../../acm/program/Program.html#showErrorMessage-java.lang.String-\">showErrorMessage</a>, <a href=\"../../acm/program/Program.html#start--\">start</a>, <a href=\"../../acm/program/Program.html#start-java.lang.String:A-\">start</a>, <a href=\"../../acm/program/Program.html#startAnimation--\">startAnimation</a>, <a href=\"../../acm/program/Program.html#startHook--\">startHook</a>, <a href=\"../../acm/program/Program.html#startRun--\">startRun</a>, <a href=\"../../acm/program/Program.html#stateChanged-javax.swing.event.ChangeEvent-\">stateChanged</a>, <a href=\"../../acm/program/Program.html#stopAnimation--\">stopAnimation</a>, <a href=\"../../acm/program/Program.html#textValueChanged-java.awt.event.TextEvent-\">textValueChanged</a>, <a href=\"../../acm/program/Program.html#validate--\">validate</a>, <a href=\"../../acm/program/Program.html#valueChanged-javax.swing.event.ListSelectionEvent-\">valueChanged</a>, <a href=\"../../acm/program/Program.html#windowActivated-java.awt.event.WindowEvent-\">windowActivated</a>, <a href=\"../../acm/program/Program.html#windowClosed-java.awt.event.WindowEvent-\">windowClosed</a>, <a href=\"../../acm/program/Program.html#windowClosing-java.awt.event.WindowEvent-\">windowClosing</a>, <a href=\"../../acm/program/Program.html#windowDeactivated-java.awt.event.WindowEvent-\">windowDeactivated</a>, <a href=\"../../acm/program/Program.html#windowDeiconified-java.awt.event.WindowEvent-\">windowDeiconified</a>, <a href=\"../../acm/program/Program.html#windowGainedFocus-java.awt.event.WindowEvent-\">windowGainedFocus</a>, <a href=\"../../acm/program/Program.html#windowIconified-java.awt.event.WindowEvent-\">windowIconified</a>, <a href=\"../../acm/program/Program.html#windowLostFocus-java.awt.event.WindowEvent-\">windowLostFocus</a>, <a href=\"../../acm/program/Program.html#windowOpened-java.awt.event.WindowEvent-\">windowOpened</a>, <a href=\"../../acm/program/Program.html#windowStateChanged-java.awt.event.WindowEvent-\">windowStateChanged</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JApplet\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#createRootPane--\" title=\"class or interface in javax.swing\">createRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getAccessibleContext--\" title=\"class or interface in javax.swing\">getAccessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getContentPane--\" title=\"class or interface in javax.swing\">getContentPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getGlassPane--\" title=\"class or interface in javax.swing\">getGlassPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getGraphics--\" title=\"class or interface in javax.swing\">getGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getJMenuBar--\" title=\"class or interface in javax.swing\">getJMenuBar</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getLayeredPane--\" title=\"class or interface in javax.swing\">getLayeredPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getRootPane--\" title=\"class or interface in javax.swing\">getRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getTransferHandler--\" title=\"class or interface in javax.swing\">getTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#isRootPaneCheckingEnabled--\" title=\"class or interface in javax.swing\">isRootPaneCheckingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#paramString--\" title=\"class or interface in javax.swing\">paramString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#repaint-long-int-int-int-int-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setContentPane-java.awt.Container-\" title=\"class or interface in javax.swing\">setContentPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setGlassPane-java.awt.Component-\" title=\"class or interface in javax.swing\">setGlassPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setLayeredPane-javax.swing.JLayeredPane-\" title=\"class or interface in javax.swing\">setLayeredPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setRootPane-javax.swing.JRootPane-\" title=\"class or interface in javax.swing\">setRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setRootPaneCheckingEnabled-boolean-\" title=\"class or interface in javax.swing\">setRootPaneCheckingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setTransferHandler-javax.swing.TransferHandler-\" title=\"class or interface in javax.swing\">setTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#update-java.awt.Graphics-\" title=\"class or interface in javax.swing\">update</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.applet.Applet\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.applet.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">Applet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAppletContext--\" title=\"class or interface in java.applet\">getAppletContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAppletInfo--\" title=\"class or interface in java.applet\">getAppletInfo</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAudioClip-java.net.URL-\" title=\"class or interface in java.applet\">getAudioClip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAudioClip-java.net.URL-java.lang.String-\" title=\"class or interface in java.applet\">getAudioClip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getCodeBase--\" title=\"class or interface in java.applet\">getCodeBase</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getDocumentBase--\" title=\"class or interface in java.applet\">getDocumentBase</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getImage-java.net.URL-\" title=\"class or interface in java.applet\">getImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getImage-java.net.URL-java.lang.String-\" title=\"class or interface in java.applet\">getImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getLocale--\" title=\"class or interface in java.applet\">getLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getParameterInfo--\" title=\"class or interface in java.applet\">getParameterInfo</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#isActive--\" title=\"class or interface in java.applet\">isActive</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#isValidateRoot--\" title=\"class or interface in java.applet\">isValidateRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#newAudioClip-java.net.URL-\" title=\"class or interface in java.applet\">newAudioClip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#play-java.net.URL-\" title=\"class or interface in java.applet\">play</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#play-java.net.URL-java.lang.String-\" title=\"class or interface in java.applet\">play</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#resize-java.awt.Dimension-\" title=\"class or interface in java.applet\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#resize-int-int-\" title=\"class or interface in java.applet\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#setStub-java.applet.AppletStub-\" title=\"class or interface in java.applet\">setStub</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#showStatus-java.lang.String-\" title=\"class or interface in java.applet\">showStatus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#stop--\" title=\"class or interface in java.applet\">stop</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Panel\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\">Panel</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true#addNotify--\" title=\"class or interface in java.awt\">addNotify</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.lang.String-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">addContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#applyComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">applyComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#areFocusTraversalKeysSet-int-\" title=\"class or interface in java.awt\">areFocusTraversalKeysSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#countComponents--\" title=\"class or interface in java.awt\">countComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#deliverEvent-java.awt.Event-\" title=\"class or interface in java.awt\">deliverEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#doLayout--\" title=\"class or interface in java.awt\">doLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-int-int-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getAlignmentX--\" title=\"class or interface in java.awt\">getAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getAlignmentY--\" title=\"class or interface in java.awt\">getAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponent-int-\" title=\"class or interface in java.awt\">getComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-int-int-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentCount--\" title=\"class or interface in java.awt\">getComponentCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponents--\" title=\"class or interface in java.awt\">getComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentZOrder-java.awt.Component-\" title=\"class or interface in java.awt\">getComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getContainerListeners--\" title=\"class or interface in java.awt\">getContainerListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalKeys-int-\" title=\"class or interface in java.awt\">getFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalPolicy--\" title=\"class or interface in java.awt\">getFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getInsets--\" title=\"class or interface in java.awt\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getListeners-java.lang.Class-\" title=\"class or interface in java.awt\">getListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMaximumSize--\" title=\"class or interface in java.awt\">getMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMinimumSize--\" title=\"class or interface in java.awt\">getMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMousePosition-boolean-\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#insets--\" title=\"class or interface in java.awt\">insets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#invalidate--\" title=\"class or interface in java.awt\">invalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isAncestorOf-java.awt.Component-\" title=\"class or interface in java.awt\">isAncestorOf</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot--\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot-java.awt.Container-\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicyProvider--\" title=\"class or interface in java.awt\">isFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicySet--\" title=\"class or interface in java.awt\">isFocusTraversalPolicySet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#layout--\" title=\"class or interface in java.awt\">layout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintStream-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintWriter-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#locate-int-int-\" title=\"class or interface in java.awt\">locate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#minimumSize--\" title=\"class or interface in java.awt\">minimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paint-java.awt.Graphics-\" title=\"class or interface in java.awt\">paint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paintComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#preferredSize--\" title=\"class or interface in java.awt\">preferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#print-java.awt.Graphics-\" title=\"class or interface in java.awt\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#printComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">printComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processContainerEvent-java.awt.event.ContainerEvent-\" title=\"class or interface in java.awt\">processContainerEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">processEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">removeContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeNotify--\" title=\"class or interface in java.awt\">removeNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setComponentZOrder-java.awt.Component-int-\" title=\"class or interface in java.awt\">setComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusCycleRoot-boolean-\" title=\"class or interface in java.awt\">setFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalKeys-int-java.util.Set-\" title=\"class or interface in java.awt\">setFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicy-java.awt.FocusTraversalPolicy-\" title=\"class or interface in java.awt\">setFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicyProvider-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#transferFocusDownCycle--\" title=\"class or interface in java.awt\">transferFocusDownCycle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validateTree--\" title=\"class or interface in java.awt\">validateTree</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#action-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">action</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#add-java.awt.PopupMenu-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">addComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">addFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">addHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">addHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">addInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">addKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">addMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">addMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">addMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#bounds--\" title=\"class or interface in java.awt\">bounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#coalesceEvents-java.awt.AWTEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">coalesceEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-int-int-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-java.awt.Point-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-java.awt.image.ImageProducer-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-int-int-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-java.awt.ImageCapabilities-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disable--\" title=\"class or interface in java.awt\">disable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disableEvents-long-\" title=\"class or interface in java.awt\">disableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#dispatchEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">dispatchEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable--\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable-boolean-\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableEvents-long-\" title=\"class or interface in java.awt\">enableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableInputMethods-boolean-\" title=\"class or interface in java.awt\">enableInputMethods</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-boolean-boolean-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-byte-byte-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-char-char-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-double-double-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-float-float-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-int-int-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-long-long-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-short-short-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBackground--\" title=\"class or interface in java.awt\">getBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBaseline-int-int-\" title=\"class or interface in java.awt\">getBaseline</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBaselineResizeBehavior--\" title=\"class or interface in java.awt\">getBaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds--\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getColorModel--\" title=\"class or interface in java.awt\">getColorModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentListeners--\" title=\"class or interface in java.awt\">getComponentListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentOrientation--\" title=\"class or interface in java.awt\">getComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getCursor--\" title=\"class or interface in java.awt\">getCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getDropTarget--\" title=\"class or interface in java.awt\">getDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusCycleRootAncestor--\" title=\"class or interface in java.awt\">getFocusCycleRootAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusListeners--\" title=\"class or interface in java.awt\">getFocusListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusTraversalKeysEnabled--\" title=\"class or interface in java.awt\">getFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFontMetrics-java.awt.Font-\" title=\"class or interface in java.awt\">getFontMetrics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getForeground--\" title=\"class or interface in java.awt\">getForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getGraphicsConfiguration--\" title=\"class or interface in java.awt\">getGraphicsConfiguration</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyBoundsListeners--\" title=\"class or interface in java.awt\">getHierarchyBoundsListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyListeners--\" title=\"class or interface in java.awt\">getHierarchyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getIgnoreRepaint--\" title=\"class or interface in java.awt\">getIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputContext--\" title=\"class or interface in java.awt\">getInputContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodListeners--\" title=\"class or interface in java.awt\">getInputMethodListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodRequests--\" title=\"class or interface in java.awt\">getInputMethodRequests</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getKeyListeners--\" title=\"class or interface in java.awt\">getKeyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation--\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation-java.awt.Point-\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocationOnScreen--\" title=\"class or interface in java.awt\">getLocationOnScreen</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseListeners--\" title=\"class or interface in java.awt\">getMouseListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseMotionListeners--\" title=\"class or interface in java.awt\">getMouseMotionListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMousePosition--\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseWheelListeners--\" title=\"class or interface in java.awt\">getMouseWheelListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getName--\" title=\"class or interface in java.awt\">getName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getParent--\" title=\"class or interface in java.awt\">getParent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPeer--\" title=\"class or interface in java.awt\">getPeer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners--\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners-java.lang.String-\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize--\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getToolkit--\" title=\"class or interface in java.awt\">getToolkit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getTreeLock--\" title=\"class or interface in java.awt\">getTreeLock</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getX--\" title=\"class or interface in java.awt\">getX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getY--\" title=\"class or interface in java.awt\">getY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#gotFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">gotFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#handleEvent-java.awt.Event-\" title=\"class or interface in java.awt\">handleEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hasFocus--\" title=\"class or interface in java.awt\">hasFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hide--\" title=\"class or interface in java.awt\">hide</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#imageUpdate-java.awt.Image-int-int-int-int-int-\" title=\"class or interface in java.awt\">imageUpdate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#inside-int-int-\" title=\"class or interface in java.awt\">inside</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isBackgroundSet--\" title=\"class or interface in java.awt\">isBackgroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isCursorSet--\" title=\"class or interface in java.awt\">isCursorSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDisplayable--\" title=\"class or interface in java.awt\">isDisplayable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDoubleBuffered--\" title=\"class or interface in java.awt\">isDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isEnabled--\" title=\"class or interface in java.awt\">isEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusable--\" title=\"class or interface in java.awt\">isFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusOwner--\" title=\"class or interface in java.awt\">isFocusOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusTraversable--\" title=\"class or interface in java.awt\">isFocusTraversable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFontSet--\" title=\"class or interface in java.awt\">isFontSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isForegroundSet--\" title=\"class or interface in java.awt\">isForegroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isLightweight--\" title=\"class or interface in java.awt\">isLightweight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMaximumSizeSet--\" title=\"class or interface in java.awt\">isMaximumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMinimumSizeSet--\" title=\"class or interface in java.awt\">isMinimumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isOpaque--\" title=\"class or interface in java.awt\">isOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isPreferredSizeSet--\" title=\"class or interface in java.awt\">isPreferredSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isShowing--\" title=\"class or interface in java.awt\">isShowing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isValid--\" title=\"class or interface in java.awt\">isValid</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isVisible--\" title=\"class or interface in java.awt\">isVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyDown-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyUp-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list--\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintStream-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintWriter-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#location--\" title=\"class or interface in java.awt\">location</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#lostFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">lostFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDown-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDrag-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDrag</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseEnter-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseEnter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseExit-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseExit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseMove-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseMove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseUp-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#move-int-int-\" title=\"class or interface in java.awt\">move</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#nextFocus--\" title=\"class or interface in java.awt\">nextFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#paintAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#postEvent-java.awt.Event-\" title=\"class or interface in java.awt\">postEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#printAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">printAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processComponentEvent-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt\">processComponentEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processFocusEvent-java.awt.event.FocusEvent-\" title=\"class or interface in java.awt\">processFocusEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyBoundsEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyBoundsEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processInputMethodEvent-java.awt.event.InputMethodEvent-\" title=\"class or interface in java.awt\">processInputMethodEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in java.awt\">processKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseEvent-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt\">processMouseEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseMotionEvent-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt\">processMouseMotionEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseWheelEvent-java.awt.event.MouseWheelEvent-\" title=\"class or interface in java.awt\">processMouseWheelEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#remove-java.awt.MenuComponent-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">removeComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">removeFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">removeHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">removeHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">removeInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">removeKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">removeMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">removeMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">removeMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-int-int-int-int-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-long-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocus--\" title=\"class or interface in java.awt\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocus-boolean-\" title=\"class or interface in java.awt\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocusInWindow--\" title=\"class or interface in java.awt\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocusInWindow-boolean-\" title=\"class or interface in java.awt\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#reshape-int-int-int-int-\" title=\"class or interface in java.awt\">reshape</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#revalidate--\" title=\"class or interface in java.awt\">revalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-int-int-int-int-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">setComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setCursor-java.awt.Cursor-\" title=\"class or interface in java.awt\">setCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setDropTarget-java.awt.dnd.DropTarget-\" title=\"class or interface in java.awt\">setDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setEnabled-boolean-\" title=\"class or interface in java.awt\">setEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusable-boolean-\" title=\"class or interface in java.awt\">setFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusTraversalKeysEnabled-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setForeground-java.awt.Color-\" title=\"class or interface in java.awt\">setForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setIgnoreRepaint-boolean-\" title=\"class or interface in java.awt\">setIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocale-java.util.Locale-\" title=\"class or interface in java.awt\">setLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-int-int-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-java.awt.Point-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setMaximumSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setMinimumSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setName-java.lang.String-\" title=\"class or interface in java.awt\">setName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setPreferredSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-int-int-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setVisible-boolean-\" title=\"class or interface in java.awt\">setVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show--\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show-boolean-\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#size--\" title=\"class or interface in java.awt\">size</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#toString--\" title=\"class or interface in java.awt\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocus--\" title=\"class or interface in java.awt\">transferFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusBackward--\" title=\"class or interface in java.awt\">transferFocusBackward</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusUpCycle--\" title=\"class or interface in java.awt\">transferFocusUpCycle</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"AsciiArtProgram--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>AsciiArtProgram</h4>\n<pre>public&nbsp;AsciiArtProgram()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"clear--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clear</h4>\n<pre>public&nbsp;void&nbsp;clear()</pre>\n</li>\n</ul>\n<a name=\"drawCharacter-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>drawCharacter</h4>\n<pre>public&nbsp;void&nbsp;drawCharacter(int&nbsp;x,\n                          int&nbsp;y)</pre>\n</li>\n</ul>\n<a name=\"drawCharacter-int-int-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>drawCharacter</h4>\n<pre>public&nbsp;void&nbsp;drawCharacter(int&nbsp;x,\n                          int&nbsp;y,\n                          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;character)</pre>\n</li>\n</ul>\n<a name=\"drawLine-double-double-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>drawLine</h4>\n<pre>public&nbsp;void&nbsp;drawLine(double&nbsp;x1,\n                     double&nbsp;y1,\n                     double&nbsp;x2,\n                     double&nbsp;y2)</pre>\n</li>\n</ul>\n<a name=\"drawLine-int-int-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>drawLine</h4>\n<pre>public&nbsp;void&nbsp;drawLine(int&nbsp;x1,\n                     int&nbsp;y1,\n                     int&nbsp;x2,\n                     int&nbsp;y2)</pre>\n</li>\n</ul>\n<a name=\"drawRect-double-double-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>drawRect</h4>\n<pre>public&nbsp;void&nbsp;drawRect(double&nbsp;x,\n                     double&nbsp;y,\n                     double&nbsp;width,\n                     double&nbsp;height)</pre>\n</li>\n</ul>\n<a name=\"drawRect-int-int-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>drawRect</h4>\n<pre>public&nbsp;void&nbsp;drawRect(int&nbsp;x,\n                     int&nbsp;y,\n                     int&nbsp;width,\n                     int&nbsp;height)</pre>\n</li>\n</ul>\n<a name=\"fillRect-double-double-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fillRect</h4>\n<pre>public&nbsp;void&nbsp;fillRect(double&nbsp;x,\n                     double&nbsp;y,\n                     double&nbsp;width,\n                     double&nbsp;height)</pre>\n</li>\n</ul>\n<a name=\"fillRect-int-int-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fillRect</h4>\n<pre>public&nbsp;void&nbsp;fillRect(int&nbsp;x,\n                     int&nbsp;y,\n                     int&nbsp;width,\n                     int&nbsp;height)</pre>\n</li>\n</ul>\n<a name=\"getBackgroundCharacter--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getBackgroundCharacter</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getBackgroundCharacter()</pre>\n</li>\n</ul>\n<a name=\"getBackgroundColor--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getBackgroundColor</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;getBackgroundColor()</pre>\n</li>\n</ul>\n<a name=\"getCharacter-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getCharacter</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getCharacter(double&nbsp;x,\n                           double&nbsp;y)</pre>\n</li>\n</ul>\n<a name=\"getCharacter-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getCharacter</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getCharacter(int&nbsp;x,\n                           int&nbsp;y)</pre>\n</li>\n</ul>\n<a name=\"getColumns--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getColumns</h4>\n<pre>public&nbsp;int&nbsp;getColumns()</pre>\n</li>\n</ul>\n<a name=\"getFillCharacter--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFillCharacter</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getFillCharacter()</pre>\n</li>\n</ul>\n<a name=\"getForegroundCharacter--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getForegroundCharacter</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getForegroundCharacter()</pre>\n</li>\n</ul>\n<a name=\"getForegroundColor--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getForegroundColor</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;getForegroundColor()</pre>\n</li>\n</ul>\n<a name=\"getRows--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getRows</h4>\n<pre>public&nbsp;int&nbsp;getRows()</pre>\n</li>\n</ul>\n<a name=\"redraw--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>redraw</h4>\n<pre>public&nbsp;void&nbsp;redraw()</pre>\n</li>\n</ul>\n<a name=\"setBackgroundCharacter-char-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setBackgroundCharacter</h4>\n<pre>public&nbsp;void&nbsp;setBackgroundCharacter(char&nbsp;character)</pre>\n</li>\n</ul>\n<a name=\"setBackgroundCharacter-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setBackgroundCharacter</h4>\n<pre>public&nbsp;void&nbsp;setBackgroundCharacter(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;character)</pre>\n</li>\n</ul>\n<a name=\"setBackgroundColor-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setBackgroundColor</h4>\n<pre>public&nbsp;void&nbsp;setBackgroundColor(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n</li>\n</ul>\n<a name=\"setForegroundCharacter-char-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setForegroundCharacter</h4>\n<pre>public&nbsp;void&nbsp;setForegroundCharacter(char&nbsp;character)</pre>\n</li>\n</ul>\n<a name=\"setForegroundCharacter-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setForegroundCharacter</h4>\n<pre>public&nbsp;void&nbsp;setForegroundCharacter(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;character)</pre>\n</li>\n</ul>\n<a name=\"setFillCharacter-char-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setFillCharacter</h4>\n<pre>public&nbsp;void&nbsp;setFillCharacter(char&nbsp;character)</pre>\n</li>\n</ul>\n<a name=\"setFillCharacter-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setFillCharacter</h4>\n<pre>public&nbsp;void&nbsp;setFillCharacter(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;character)</pre>\n</li>\n</ul>\n<a name=\"setForegroundColor-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setForegroundColor</h4>\n<pre>public&nbsp;void&nbsp;setForegroundColor(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n</li>\n</ul>\n<a name=\"setRedrawAutomatically-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>setRedrawAutomatically</h4>\n<pre>public&nbsp;void&nbsp;setRedrawAutomatically(boolean&nbsp;redraw)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/program/CommandLineProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/program/AsciiArtProgram.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AsciiArtProgram.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JApplet\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.acm.program.AbstractConsoleProgram\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/program/CommandLineProgram.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:05 PDT 2017 -->\n<title>CommandLineProgram</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"CommandLineProgram\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":9,\"i7\":10,\"i8\":10,\"i9\":9,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":10,\"i16\":10,\"i17\":10,\"i18\":10,\"i19\":10,\"i20\":10,\"i21\":10,\"i22\":10,\"i23\":10,\"i24\":10,\"i25\":10,\"i26\":10,\"i27\":10,\"i28\":10,\"i29\":10,\"i30\":10,\"i31\":10,\"i32\":10,\"i33\":9,\"i34\":10,\"i35\":10,\"i36\":10,\"i37\":10,\"i38\":9,\"i39\":10,\"i40\":10,\"i41\":10,\"i42\":10,\"i43\":10,\"i44\":10,\"i45\":10,\"i46\":10,\"i47\":10,\"i48\":10,\"i49\":10,\"i50\":10,\"i51\":10,\"i52\":10,\"i53\":10,\"i54\":10,\"i55\":10,\"i56\":10,\"i57\":10,\"i58\":10,\"i59\":10,\"i60\":10,\"i61\":10,\"i62\":10,\"i63\":10,\"i64\":10,\"i65\":10,\"i66\":10,\"i67\":10,\"i68\":10,\"i69\":10,\"i70\":10,\"i71\":10,\"i72\":10,\"i73\":10,\"i74\":10,\"i75\":10,\"i76\":10,\"i77\":10,\"i78\":10,\"i79\":10,\"i80\":10,\"i81\":10,\"i82\":10,\"i83\":10,\"i84\":10,\"i85\":10,\"i86\":10,\"i87\":10,\"i88\":10,\"i89\":10,\"i90\":10,\"i91\":10,\"i92\":10,\"i93\":10,\"i94\":10,\"i95\":10,\"i96\":10,\"i97\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/program/AsciiArtProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/program/ConsoleProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/program/CommandLineProgram.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"CommandLineProgram.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.program</div>\n<h2 title=\"Class CommandLineProgram\" class=\"title\">Class CommandLineProgram</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.program.CommandLineProgram</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd>acm.io.IOModel, <a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">CommandLineProgram</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>\nimplements <a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a>, acm.io.IOModel, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a></pre>\n<div class=\"block\">This class simulates the functionality of a <code>ConsoleProgram</code>\n in an environment that lacks a graphics context. As of JDK 1.4, it is\n illegal even to instantiate an applet in a non-graphics environment\n (called \"headless\" in the Java terminology), which means that the program\n can no longer extend <code>Applet</code> or <code>JApplet</code>.  This\n class creates a stripped-down program class that duplicates the operation\n of a <code>ConsoleProgram</code> using the standard I/O streams.</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.program.ProgramInterface\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;acm.program.<a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></h3>\n<code><a href=\"../../acm/program/ProgramInterface.html#CENTER\">CENTER</a>, <a href=\"../../acm/program/ProgramInterface.html#EAST\">EAST</a>, <a href=\"../../acm/program/ProgramInterface.html#NORTH\">NORTH</a>, <a href=\"../../acm/program/ProgramInterface.html#SOUTH\">SOUTH</a>, <a href=\"../../acm/program/ProgramInterface.html#WEST\">WEST</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier</th>\n<th class=\"colLast\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected </code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#CommandLineProgram--\">CommandLineProgram</a></span>()</code>\n<div class=\"block\">This code initializes the program data structures.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#actionPerformed-java.awt.event.ActionEvent-\">actionPerformed</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;e)</code>\n<div class=\"block\">Called when a component (typically a button) is activated.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#add-java.awt.Component-java.lang.String-java.lang.Object-\">add</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;region,\n   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;constraints)</code>\n<div class=\"block\">Adds the component to the specified border region with the indicated\n constraints object.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#addActionListeners--\">addActionListeners</a></span>()</code>\n<div class=\"block\">Adds the program as an <code>ActionListener</code> to every button in\n the structure that does not have a listener already.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#addActionListeners-java.awt.event.ActionListener-\">addActionListeners</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener)</code>\n<div class=\"block\">Adds the specified listener to every button in\n the structure that does not have a listener already.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#addExitHook-java.lang.Object-\">addExitHook</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj)</code>\n<div class=\"block\">Requests that the program call the <code>exit</code> method in the\n specified object before exiting.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#addImpl-java.awt.Component-java.lang.Object-int-\">addImpl</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;constraints,\n       int&nbsp;index)</code>\n<div class=\"block\">Adds the specified component to the content pane using the specified constraints and index.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#checkIfHeadless-java.lang.String-\">checkIfHeadless</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className)</code>\n<div class=\"block\">Checks to see if the program is running in a headless environment and, if so,\n runs it in that form.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"../../acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#createConsole--\">createConsole</a></span>()</code>\n<div class=\"block\">Creates the console used by the <code>ConsoleProgram</code>.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected acm.io.IODialog</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#createDialogIO--\">createDialogIO</a></span>()</code>\n<div class=\"block\">Creates the dialog used for interaction (primarily by the <code>DialogProgram</code>\n class).</div>\n</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true\" title=\"class or interface in java.util\">HashMap</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#createParameterTable-java.lang.String:A-\">createParameterTable</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</code>\n<div class=\"block\">Creates a hash table containing the parameters specified in the\n argument list.</div>\n</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#destroy--\">destroy</a></span>()</code>\n<div class=\"block\">Called when the program has been told to destroy itself.</div>\n</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#endHook--\">endHook</a></span>()</code>\n<div class=\"block\">Performs class-specific cleanup for the program just after\n it finishes.</div>\n</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#exit--\">exit</a></span>()</code>\n<div class=\"block\">Exits from the program.</div>\n</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AppletStub.html?is-external=true\" title=\"class or interface in java.applet\">AppletStub</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#getAppletStub--\">getAppletStub</a></span>()</code>\n<div class=\"block\">Retrieves the applet stub.</div>\n</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#getArgumentArray--\">getArgumentArray</a></span>()</code>\n<div class=\"block\">Retrieves the array of arguments passed in from the command line, or\n <code>null</code> if no arguments are available.</div>\n</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#getBorder-java.lang.String-\">getBorder</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;side)</code>\n<div class=\"block\">Returns the component installed as a border on the specified side, which must\n be one of the constants from <code>BorderLayout</code> (<code>NORTH</code>,\n <code>SOUTH</code>, <code>EAST</code>, <code>WEST</code>).</div>\n</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#getConsole--\">getConsole</a></span>()</code>\n<div class=\"block\">Returns the console associated with this program.</div>\n</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>acm.io.IODialog</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#getDialog--\">getDialog</a></span>()</code>\n<div class=\"block\">Returns the dialog used for user interaction.</div>\n</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#getHeight--\">getHeight</a></span>()</code>\n<div class=\"block\">Returns the height of the central region.</div>\n</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>acm.io.IOModel</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#getInputModel--\">getInputModel</a></span>()</code>\n<div class=\"block\">Returns the <code>IOModel</code> used for program input, which will\n typically be either the default <code>IOConsole</code> or <code>IODialog</code> object.</div>\n</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/LayoutManager.html?is-external=true\" title=\"class or interface in java.awt\">LayoutManager</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#getLayout--\">getLayout</a></span>()</code>\n<div class=\"block\">Gets the layout manager for the central region of the content pane.</div>\n</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#getMacMenuBarFlag--\">getMacMenuBarFlag</a></span>()</code>\n<div class=\"block\">Retrieves the setting of the Mac menu bar flag.</div>\n</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>acm.io.IOModel</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#getOutputModel--\">getOutputModel</a></span>()</code>\n<div class=\"block\">Returns the <code>IOModel</code> used for program output, which will\n typically be either the default <code>IOConsole</code> or <code>IODialog</code> object.</div>\n</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#getParameter-java.lang.String-\">getParameter</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>\n<div class=\"block\">Returns the parameter associated with name.</div>\n</td>\n</tr>\n<tr id=\"i24\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true\" title=\"class or interface in java.util\">HashMap</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#getParameterTable--\">getParameterTable</a></span>()</code>\n<div class=\"block\">Retrieves the parameter table.</div>\n</td>\n</tr>\n<tr id=\"i25\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#getPreferredSize--\">getPreferredSize</a></span>()</code>\n<div class=\"block\">Returns the preferred size of the content pane.</div>\n</td>\n</tr>\n<tr id=\"i26\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html?is-external=true\" title=\"class or interface in java.io\">BufferedReader</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#getReader--\">getReader</a></span>()</code>\n<div class=\"block\">Returns a <code>BufferedReader</code> whose input comes from the console.</div>\n</td>\n</tr>\n<tr id=\"i27\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#getRegionPanel-java.lang.String-\">getRegionPanel</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;region)</code>\n<div class=\"block\">Gets the <code>JPanel</code> for the specified region.</div>\n</td>\n</tr>\n<tr id=\"i28\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#getTitle--\">getTitle</a></span>()</code>\n<div class=\"block\">Gets the title of this program.</div>\n</td>\n</tr>\n<tr id=\"i29\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#getWidth--\">getWidth</a></span>()</code>\n<div class=\"block\">Returns the width of the central region.</div>\n</td>\n</tr>\n<tr id=\"i30\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintWriter.html?is-external=true\" title=\"class or interface in java.io\">PrintWriter</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#getWriter--\">getWriter</a></span>()</code>\n<div class=\"block\">Returns a <code>PrintWriter</code> whose output is directed to the console.</div>\n</td>\n</tr>\n<tr id=\"i31\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#init--\">init</a></span>()</code>\n<div class=\"block\">The init method is called at startup time before the run method is\n called.</div>\n</td>\n</tr>\n<tr id=\"i32\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#isAppletMode--\">isAppletMode</a></span>()</code>\n<div class=\"block\">Returns <code>true</code> if this program is running as an applet in a browser.</div>\n</td>\n</tr>\n<tr id=\"i33\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#isHeadless--\">isHeadless</a></span>()</code>\n<div class=\"block\">Returns true if the program is running in non-graphical \"headless\" mode.</div>\n</td>\n</tr>\n<tr id=\"i34\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#isStarted--\">isStarted</a></span>()</code>\n<div class=\"block\">Checks to see whether this program has started, usually by checking to see\n whether some pane exists.</div>\n</td>\n</tr>\n<tr id=\"i35\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#keyPressed-java.awt.event.KeyEvent-\">keyPressed</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyEvent</a>&nbsp;e)</code>\n<div class=\"block\">Called when a key is pressed.</div>\n</td>\n</tr>\n<tr id=\"i36\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#keyReleased-java.awt.event.KeyEvent-\">keyReleased</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyEvent</a>&nbsp;e)</code>\n<div class=\"block\">Called when a key is released.</div>\n</td>\n</tr>\n<tr id=\"i37\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#keyTyped-java.awt.event.KeyEvent-\">keyTyped</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyEvent</a>&nbsp;e)</code>\n<div class=\"block\">Called when a key is typed (i.e., pressed and released).</div>\n</td>\n</tr>\n<tr id=\"i38\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#main-java.lang.String:A-\">main</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</code>\n<div class=\"block\">Every application must either contain a \"Main-Class\" entry in its\n manifest file or include a main method that looks like this, where\n <code>MyClass</code> is the name of the program class:</div>\n</td>\n</tr>\n<tr id=\"i39\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#menuAction-java.lang.String-\">menuAction</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;cmd)</code>\n<div class=\"block\">Called whenever an action event is detected in the menu bar.</div>\n</td>\n</tr>\n<tr id=\"i40\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#mouseClicked-java.awt.event.MouseEvent-\">mouseClicked</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</code>\n<div class=\"block\">Called when the mouse is clicked.</div>\n</td>\n</tr>\n<tr id=\"i41\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#mouseDragged-java.awt.event.MouseEvent-\">mouseDragged</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</code>\n<div class=\"block\">Called when the mouse is dragged with the button down.</div>\n</td>\n</tr>\n<tr id=\"i42\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#mouseEntered-java.awt.event.MouseEvent-\">mouseEntered</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</code>\n<div class=\"block\">Called when the mouse enters the source (which may be\n either a component or a <code>GObject</code>).</div>\n</td>\n</tr>\n<tr id=\"i43\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#mouseExited-java.awt.event.MouseEvent-\">mouseExited</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</code>\n<div class=\"block\">Called when the mouse exits the source (which may be\n either a component or a <code>GObject</code>).</div>\n</td>\n</tr>\n<tr id=\"i44\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#mouseMoved-java.awt.event.MouseEvent-\">mouseMoved</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</code>\n<div class=\"block\">Called when the mouse is moved.</div>\n</td>\n</tr>\n<tr id=\"i45\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#mousePressed-java.awt.event.MouseEvent-\">mousePressed</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</code>\n<div class=\"block\">Called when the mouse button is pressed.</div>\n</td>\n</tr>\n<tr id=\"i46\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#mouseReleased-java.awt.event.MouseEvent-\">mouseReleased</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</code>\n<div class=\"block\">Called when the mouse button is released.</div>\n</td>\n</tr>\n<tr id=\"i47\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#pause-double-\">pause</a></span>(double&nbsp;milliseconds)</code>\n<div class=\"block\">Causes the program to delay for the given number of milliseconds.</div>\n</td>\n</tr>\n<tr id=\"i48\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#print-boolean-\">print</a></span>(boolean&nbsp;x)</code>\n<div class=\"block\">Makes sure that <code>print</code> can display a <code>boolean</code>.</div>\n</td>\n</tr>\n<tr id=\"i49\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#print-char-\">print</a></span>(char&nbsp;x)</code>\n<div class=\"block\">Makes sure that <code>print</code> can display a <code>char</code>.</div>\n</td>\n</tr>\n<tr id=\"i50\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#print-double-\">print</a></span>(double&nbsp;x)</code>\n<div class=\"block\">Makes sure that <code>print</code> can display a <code>double</code>.</div>\n</td>\n</tr>\n<tr id=\"i51\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#print-float-\">print</a></span>(float&nbsp;x)</code>\n<div class=\"block\">Makes sure that <code>print</code> can display a <code>float</code>.</div>\n</td>\n</tr>\n<tr id=\"i52\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#print-int-\">print</a></span>(int&nbsp;x)</code>\n<div class=\"block\">Makes sure that <code>print</code> can display an <code>int</code>.</div>\n</td>\n</tr>\n<tr id=\"i53\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#print-long-\">print</a></span>(long&nbsp;x)</code>\n<div class=\"block\">Makes sure that <code>print</code> can display a <code>long</code>.</div>\n</td>\n</tr>\n<tr id=\"i54\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#print-java.lang.Object-\">print</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;x)</code>\n<div class=\"block\">Makes sure that <code>print</code> can display an <code>Object</code>.</div>\n</td>\n</tr>\n<tr id=\"i55\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#print-java.lang.String-\">print</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</code>\n<div class=\"block\">Displays the argument value on the console, leaving the cursor at the end of\n the output.</div>\n</td>\n</tr>\n<tr id=\"i56\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#printf-java.lang.String-java.lang.Object...-\">printf</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;format,\n      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>...&nbsp;args)</code>\n<div class=\"block\">Writes a formatted string to this output stream using the specified format string and arguments.</div>\n</td>\n</tr>\n<tr id=\"i57\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#println--\">println</a></span>()</code>\n<div class=\"block\">Advances the console cursor to the beginning of the next line.</div>\n</td>\n</tr>\n<tr id=\"i58\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#println-boolean-\">println</a></span>(boolean&nbsp;x)</code>\n<div class=\"block\">Makes sure that <code>println</code> can display a <code>boolean</code>.</div>\n</td>\n</tr>\n<tr id=\"i59\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#println-char-\">println</a></span>(char&nbsp;x)</code>\n<div class=\"block\">Makes sure that <code>println</code> can display a <code>char</code>.</div>\n</td>\n</tr>\n<tr id=\"i60\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#println-double-\">println</a></span>(double&nbsp;x)</code>\n<div class=\"block\">Makes sure that <code>println</code> can display a <code>double</code>.</div>\n</td>\n</tr>\n<tr id=\"i61\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#println-float-\">println</a></span>(float&nbsp;x)</code>\n<div class=\"block\">Makes sure that <code>println</code> can display a <code>float</code>.</div>\n</td>\n</tr>\n<tr id=\"i62\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#println-int-\">println</a></span>(int&nbsp;x)</code>\n<div class=\"block\">Makes sure that <code>println</code> can display an <code>int</code>.</div>\n</td>\n</tr>\n<tr id=\"i63\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#println-long-\">println</a></span>(long&nbsp;x)</code>\n<div class=\"block\">Makes sure that <code>println</code> can display a <code>long</code>.</div>\n</td>\n</tr>\n<tr id=\"i64\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#println-java.lang.Object-\">println</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;x)</code>\n<div class=\"block\">Makes sure that <code>println</code> can display an <code>Object</code>.</div>\n</td>\n</tr>\n<tr id=\"i65\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#println-java.lang.String-\">println</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</code>\n<div class=\"block\">Displays the argument value on the console and then advances the cursor\n to the beginning of the next line.</div>\n</td>\n</tr>\n<tr id=\"i66\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#readBoolean--\">readBoolean</a></span>()</code>\n<div class=\"block\">Reads and returns a boolean value (<code>true</code> or <code>false</code>).</div>\n</td>\n</tr>\n<tr id=\"i67\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#readBoolean-java.lang.String-\">readBoolean</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt)</code>\n<div class=\"block\">Prompts the user to enter a boolean value, which is returned as\n the value of this method.</div>\n</td>\n</tr>\n<tr id=\"i68\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#readBoolean-java.lang.String-java.lang.String-java.lang.String-\">readBoolean</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt,\n           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;trueLabel,\n           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;falseLabel)</code>\n<div class=\"block\">Prompts the user to enter a boolean value, which is matched against the\n labels provided.</div>\n</td>\n</tr>\n<tr id=\"i69\" class=\"rowColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#readDouble--\">readDouble</a></span>()</code>\n<div class=\"block\">Reads and returns a double-precision value from the user.</div>\n</td>\n</tr>\n<tr id=\"i70\" class=\"altColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#readDouble-double-double-\">readDouble</a></span>(double&nbsp;low,\n          double&nbsp;high)</code>\n<div class=\"block\">Reads and returns a double-precision value from the user, which is\n constrained to be within the specified inclusive range.</div>\n</td>\n</tr>\n<tr id=\"i71\" class=\"rowColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#readDouble-java.lang.String-\">readDouble</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt)</code>\n<div class=\"block\">Prompts the user to enter an double-precision number, which is then\n returned as the value of this method.</div>\n</td>\n</tr>\n<tr id=\"i72\" class=\"altColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#readDouble-java.lang.String-double-double-\">readDouble</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt,\n          double&nbsp;low,\n          double&nbsp;high)</code>\n<div class=\"block\">Prompts the user to enter an double-precision number, which is then returned\n as the value of this method.</div>\n</td>\n</tr>\n<tr id=\"i73\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#readInt--\">readInt</a></span>()</code>\n<div class=\"block\">Reads and returns an integer value from the user.</div>\n</td>\n</tr>\n<tr id=\"i74\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#readInt-int-int-\">readInt</a></span>(int&nbsp;low,\n       int&nbsp;high)</code>\n<div class=\"block\">Reads and returns an integer value from the user, which is constrained to\n be within the specified inclusive range.</div>\n</td>\n</tr>\n<tr id=\"i75\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#readInt-java.lang.String-\">readInt</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt)</code>\n<div class=\"block\">Prompts the user to enter an integer, which is then returned as the value\n of this method.</div>\n</td>\n</tr>\n<tr id=\"i76\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#readInt-java.lang.String-int-int-\">readInt</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt,\n       int&nbsp;low,\n       int&nbsp;high)</code>\n<div class=\"block\">Prompts the user to enter an integer, which is then returned as the value\n of this method.</div>\n</td>\n</tr>\n<tr id=\"i77\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#readLine--\">readLine</a></span>()</code>\n<div class=\"block\">Reads and returns a line of input from the console.</div>\n</td>\n</tr>\n<tr id=\"i78\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#readLine-java.lang.String-\">readLine</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt)</code>\n<div class=\"block\">Prompts the user for a line of input.</div>\n</td>\n</tr>\n<tr id=\"i79\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#remove-java.awt.Component-\">remove</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp)</code>\n<div class=\"block\">Removes the specified component from the central region.</div>\n</td>\n</tr>\n<tr id=\"i80\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#remove-int-\">remove</a></span>(int&nbsp;index)</code>\n<div class=\"block\">Removes the component at the specified index from the central region.</div>\n</td>\n</tr>\n<tr id=\"i81\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#removeAll--\">removeAll</a></span>()</code>\n<div class=\"block\">Removes all components from the central region.</div>\n</td>\n</tr>\n<tr id=\"i82\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#repaint--\">repaint</a></span>()</code>\n<div class=\"block\">Forwards repaint to the content pane.</div>\n</td>\n</tr>\n<tr id=\"i83\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#run--\">run</a></span>()</code>\n<div class=\"block\">Contains the code to be executed for each specific program subclass.</div>\n</td>\n</tr>\n<tr id=\"i84\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#setAppletStub-java.applet.AppletStub-\">setAppletStub</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AppletStub.html?is-external=true\" title=\"class or interface in java.applet\">AppletStub</a>&nbsp;stub)</code>\n<div class=\"block\">Sets the applet stub for this program in a way that makes it possible for\n clients to retrieve it.</div>\n</td>\n</tr>\n<tr id=\"i85\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#setBackground-java.awt.Color-\">setBackground</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>\n<div class=\"block\">Sets the background for the central region of the content pane.</div>\n</td>\n</tr>\n<tr id=\"i86\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#setConsole-acm.io.IOConsole-\">setConsole</a></span>(<a href=\"../../acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a>&nbsp;console)</code>\n<div class=\"block\">Sets the console associated with this program.</div>\n</td>\n</tr>\n<tr id=\"i87\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#setLayout-java.awt.LayoutManager-\">setLayout</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/LayoutManager.html?is-external=true\" title=\"class or interface in java.awt\">LayoutManager</a>&nbsp;layout)</code>\n<div class=\"block\">Sets the layout manager for the central region of the content pane.</div>\n</td>\n</tr>\n<tr id=\"i88\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#setMacMenuBarFlag-boolean-\">setMacMenuBarFlag</a></span>(boolean&nbsp;flag)</code>\n<div class=\"block\">Sets a flag indicating whether applications running on the Macintosh\n should use standard Mac menus.</div>\n</td>\n</tr>\n<tr id=\"i89\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#setParameterTable-java.util.HashMap-\">setParameterTable</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true\" title=\"class or interface in java.util\">HashMap</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;ht)</code>\n<div class=\"block\">Sets the parameter table for this program.</div>\n</td>\n</tr>\n<tr id=\"i90\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#setParameterTable-java.util.Map-\">setParameterTable</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;table)</code>&nbsp;</td>\n</tr>\n<tr id=\"i91\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#setStartupObject-java.lang.Object-\">setStartupObject</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj)</code>&nbsp;</td>\n</tr>\n<tr id=\"i92\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#setTitle-java.lang.String-\">setTitle</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;title)</code>\n<div class=\"block\">Sets the title of this program.</div>\n</td>\n</tr>\n<tr id=\"i93\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#showErrorMessage-java.lang.String-\">showErrorMessage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;msg)</code>\n<div class=\"block\">Displays the error message in the standard output model.</div>\n</td>\n</tr>\n<tr id=\"i94\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#start--\">start</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i95\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#start-java.lang.String:A-\">start</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</code>\n<div class=\"block\">Starts the program using the specified argument list.</div>\n</td>\n</tr>\n<tr id=\"i96\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#startHook--\">startHook</a></span>()</code>\n<div class=\"block\">Performs class-specific initialization for the program just before\n it starts.</div>\n</td>\n</tr>\n<tr id=\"i97\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/CommandLineProgram.html#validate--\">validate</a></span>()</code>\n<div class=\"block\">Forwards validate to the content pane.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"CommandLineProgram--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>CommandLineProgram</h4>\n<pre>protected&nbsp;CommandLineProgram()</pre>\n<div class=\"block\">This code initializes the program data structures.</div>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"isHeadless--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isHeadless</h4>\n<pre>public static&nbsp;boolean&nbsp;isHeadless()</pre>\n<div class=\"block\">Returns true if the program is running in non-graphical \"headless\" mode.</div>\n</li>\n</ul>\n<a name=\"checkIfHeadless-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>checkIfHeadless</h4>\n<pre>public static&nbsp;void&nbsp;checkIfHeadless(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className)</pre>\n<div class=\"block\">Checks to see if the program is running in a headless environment and, if so,\n runs it in that form.  If the environment is indeed headless, this call never\n returns.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>className</code> - The name of the main class</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>CommandLineProgram.checkIfHeadless(className);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"run--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>run</h4>\n<pre>public&nbsp;void&nbsp;run()</pre>\n<div class=\"block\">Contains the code to be executed for each specific program subclass.  If\n you are defining your own program, you need to override the definition of\n <code>run</code> so that it contains the code for your application.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#run--\">run</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"init--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>init</h4>\n<pre>public&nbsp;void&nbsp;init()</pre>\n<div class=\"block\">The init method is called at startup time before the run method is\n called.  Subclasses can override this method to perform any\n initialization code that would ordinarily be included in an applet\n <code>init</code> method.  This method is used only for certain styles\n of application development that have their roots in the applet world;\n other styles will not ordinarily use or override this method.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#init--\">init</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>program.init();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"pause-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>pause</h4>\n<pre>public&nbsp;void&nbsp;pause(double&nbsp;milliseconds)</pre>\n<div class=\"block\">Causes the program to delay for the given number of milliseconds.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#pause-double-\">pause</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"print-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public&nbsp;void&nbsp;print(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</pre>\n<div class=\"block\">Displays the argument value on the console, leaving the cursor at the end of\n the output.  The <code>print</code> method is overloaded so that\n <code>value</code> can be of any type.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>print</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#print-java.lang.String-\">print</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>value</code> - The value to be displayed</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>program.print(value);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"print-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public final&nbsp;void&nbsp;print(boolean&nbsp;x)</pre>\n<div class=\"block\">Makes sure that <code>print</code> can display a <code>boolean</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>print</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"print-char-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public final&nbsp;void&nbsp;print(char&nbsp;x)</pre>\n<div class=\"block\">Makes sure that <code>print</code> can display a <code>char</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>print</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"print-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public final&nbsp;void&nbsp;print(double&nbsp;x)</pre>\n<div class=\"block\">Makes sure that <code>print</code> can display a <code>double</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>print</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"print-float-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public final&nbsp;void&nbsp;print(float&nbsp;x)</pre>\n<div class=\"block\">Makes sure that <code>print</code> can display a <code>float</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>print</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"print-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public final&nbsp;void&nbsp;print(int&nbsp;x)</pre>\n<div class=\"block\">Makes sure that <code>print</code> can display an <code>int</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>print</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"print-long-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public final&nbsp;void&nbsp;print(long&nbsp;x)</pre>\n<div class=\"block\">Makes sure that <code>print</code> can display a <code>long</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>print</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"print-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public final&nbsp;void&nbsp;print(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;x)</pre>\n<div class=\"block\">Makes sure that <code>print</code> can display an <code>Object</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>print</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#print-java.lang.Object-\">print</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"printf-java.lang.String-java.lang.Object...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>printf</h4>\n<pre>public&nbsp;void&nbsp;printf(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;format,\n                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>...&nbsp;args)</pre>\n<div class=\"block\">Writes a formatted string to this output stream using the specified format string and arguments.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#printf-java.lang.String-java.lang.Object...-\">printf</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>format</code> - A format string as described in Java's Format string syntax.</dd>\n<dd><code>args</code> - Arguments referenced by the format specifiers in the format string. If there are more arguments than format specifiers, the extra arguments are ignored. The number of arguments is variable and may be zero. The maximum number of arguments is limited by the maximum dimension of a Java array as defined by The Java™ Virtual Machine Specification. The behavior on a null argument depends on the conversion.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/IllegalFormatException.html?is-external=true\" title=\"class or interface in java.util\">IllegalFormatException</a></code> - If a format string contains an illegal syntax, a format specifier that is incompatible with the given arguments, insufficient arguments given the format string, or other illegal conditions.</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - If the format is null</dd>\n</dl>\n</li>\n</ul>\n<a name=\"println--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public&nbsp;void&nbsp;println()</pre>\n<div class=\"block\">Advances the console cursor to the beginning of the next line.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>println</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#println--\">println</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>program.println();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"println-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public&nbsp;void&nbsp;println(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</pre>\n<div class=\"block\">Displays the argument value on the console and then advances the cursor\n to the beginning of the next line.  The <code>println</code> method is\n overloaded so that <code>value</code> can be of any type.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>println</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#println-java.lang.String-\">println</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>value</code> - The value to be displayed</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>program.println(value);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"println-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public final&nbsp;void&nbsp;println(boolean&nbsp;x)</pre>\n<div class=\"block\">Makes sure that <code>println</code> can display a <code>boolean</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>println</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"println-char-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public final&nbsp;void&nbsp;println(char&nbsp;x)</pre>\n<div class=\"block\">Makes sure that <code>println</code> can display a <code>char</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>println</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"println-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public final&nbsp;void&nbsp;println(double&nbsp;x)</pre>\n<div class=\"block\">Makes sure that <code>println</code> can display a <code>double</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>println</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"println-float-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public final&nbsp;void&nbsp;println(float&nbsp;x)</pre>\n<div class=\"block\">Makes sure that <code>println</code> can display a <code>float</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>println</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"println-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public final&nbsp;void&nbsp;println(int&nbsp;x)</pre>\n<div class=\"block\">Makes sure that <code>println</code> can display an <code>int</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>println</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"println-long-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public final&nbsp;void&nbsp;println(long&nbsp;x)</pre>\n<div class=\"block\">Makes sure that <code>println</code> can display a <code>long</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>println</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"println-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public final&nbsp;void&nbsp;println(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;x)</pre>\n<div class=\"block\">Makes sure that <code>println</code> can display an <code>Object</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>println</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#println-java.lang.Object-\">println</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"showErrorMessage-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>showErrorMessage</h4>\n<pre>public&nbsp;void&nbsp;showErrorMessage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;msg)</pre>\n<div class=\"block\">Displays the error message in the standard output model.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>showErrorMessage</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>msg</code> - The error msg to be displayed</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>showErrorMessage(msg);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"readLine--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readLine</h4>\n<pre>public final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;readLine()</pre>\n<div class=\"block\">Reads and returns a line of input from the console.  The end-of-line\n characters that terminate the input are not included in the returned\n string.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readLine</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The next line of input as a <code>String</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>String str = program.readLine();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"readLine-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readLine</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;readLine(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt)</pre>\n<div class=\"block\">Prompts the user for a line of input.  The end-of-line characters\n that terminate the input are not included in the returned string.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readLine</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>prompt</code> - The prompt string to display to the user</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The next line of input as a <code>String</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>String str = program.readLine(prompt);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"readInt--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readInt</h4>\n<pre>public final&nbsp;int&nbsp;readInt()</pre>\n<div class=\"block\">Reads and returns an integer value from the user.  If the user types\n a value that is not a legal integer, the method ordinarily offers the\n user a chance to reenter the data, although this behavior can be\n changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readInt</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a decimal integer</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int n = program.readInt();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"readInt-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readInt</h4>\n<pre>public final&nbsp;int&nbsp;readInt(int&nbsp;low,\n                         int&nbsp;high)</pre>\n<div class=\"block\">Reads and returns an integer value from the user, which is constrained to\n be within the specified inclusive range.  If the user types a value\n that is not a legal integer, the method ordinarily offers the user a chance\n to reenter the data, although this behavior can be changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readInt</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>low</code> - The lowest value in the permitted range</dd>\n<dd><code>high</code> - The highest value in the permitted range</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a decimal integer</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int n = program.readInt(low, high);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"readInt-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readInt</h4>\n<pre>public final&nbsp;int&nbsp;readInt(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt)</pre>\n<div class=\"block\">Prompts the user to enter an integer, which is then returned as the value\n of this method.  If the user types a value that is not a legal integer,\n the method ordinarily offers the user a chance to reenter the data,\n although this behavior can be changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readInt</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>prompt</code> - The prompt string to display to the user</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a decimal integer</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int n = program.readInt(prompt);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"readInt-java.lang.String-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readInt</h4>\n<pre>public&nbsp;int&nbsp;readInt(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt,\n                   int&nbsp;low,\n                   int&nbsp;high)</pre>\n<div class=\"block\">Prompts the user to enter an integer, which is then returned as the value\n of this method.  The value must be within the inclusive range between\n <code>low</code> and <code>high</code>.  If the user types a value that\n is not a legal integer or is outside the specified range, the method\n ordinarily offers the user a chance to reenter the data,\n although this behavior can be changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readInt</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>prompt</code> - The prompt string to display to the user</dd>\n<dd><code>low</code> - The lowest value in the permitted range</dd>\n<dd><code>high</code> - The highest value in the permitted range</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a decimal integer</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int n = console.readInt(prompt, low, high);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"readDouble--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readDouble</h4>\n<pre>public final&nbsp;double&nbsp;readDouble()</pre>\n<div class=\"block\">Reads and returns a double-precision value from the user.  If the user\n types a value that is not a legal number, the method ordinarily offers\n the user a chance to reenter the data, although this behavior can be\n changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readDouble</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a <code>double</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double d = program.readDouble();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"readDouble-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readDouble</h4>\n<pre>public final&nbsp;double&nbsp;readDouble(double&nbsp;low,\n                               double&nbsp;high)</pre>\n<div class=\"block\">Reads and returns a double-precision value from the user, which is\n constrained to be within the specified inclusive range.  If the user\n types a value that is not a legal number, the method ordinarily offers\n the user a chance to reenter the data, although this behavior can be\n changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readDouble</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>low</code> - The lowest value in the permitted range</dd>\n<dd><code>high</code> - The highest value in the permitted range</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a <code>double</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double d = program.readDouble(low, high);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"readDouble-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readDouble</h4>\n<pre>public final&nbsp;double&nbsp;readDouble(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt)</pre>\n<div class=\"block\">Prompts the user to enter an double-precision number, which is then\n returned as the value of this method.  If the user types a value that\n is not a legal number, the method ordinarily offers the user a chance to\n reenter the data,  although this behavior can be changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readDouble</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>prompt</code> - The prompt string to display to the user</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a <code>double</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double d = program.readDouble(prompt);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"readDouble-java.lang.String-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readDouble</h4>\n<pre>public&nbsp;double&nbsp;readDouble(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt,\n                         double&nbsp;low,\n                         double&nbsp;high)</pre>\n<div class=\"block\">Prompts the user to enter an double-precision number, which is then returned\n as the value of this method.  The value must be within the inclusive range\n between <code>low</code> and <code>high</code>.  If the user types a value\n that is not a legal number, the method ordinarily offers the user a chance\n to reenter the data,  although this behavior can be changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readDouble</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>prompt</code> - The prompt string to display to the user</dd>\n<dd><code>low</code> - The lowest value in the permitted range</dd>\n<dd><code>high</code> - The highest value in the permitted range</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a <code>double</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>d = program.readDouble(prompt, low, high);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"readBoolean--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readBoolean</h4>\n<pre>public final&nbsp;boolean&nbsp;readBoolean()</pre>\n<div class=\"block\">Reads and returns a boolean value (<code>true</code> or <code>false</code>).\n The input must match one of these strings, ignoring case.  If the user\n types a value that is not one of these possibilities, the method ordinarily\n offers the user a chance to reenter the data, although this behavior\n can be changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readBoolean</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a boolean value</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>boolean flag = program.readBoolean();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"readBoolean-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readBoolean</h4>\n<pre>public final&nbsp;boolean&nbsp;readBoolean(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt)</pre>\n<div class=\"block\">Prompts the user to enter a boolean value, which is returned as\n the value of this method.  If the user types a value that is not a\n legal boolean value, the method ordinarily offers the user a chance\n to reenter the data, although this behavior can be changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readBoolean</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>prompt</code> - The prompt string to display to the user</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a boolean value</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>boolean flag = program.readBoolean(prompt);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"readBoolean-java.lang.String-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readBoolean</h4>\n<pre>public&nbsp;boolean&nbsp;readBoolean(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt,\n                           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;trueLabel,\n                           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;falseLabel)</pre>\n<div class=\"block\">Prompts the user to enter a boolean value, which is matched against the\n labels provided.  If the user enters a value that is not one of the two\n choices, <code>readBoolean</code> ordinarily offers the user a chance\n to reenter the data, although this behavior can be changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readBoolean</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>prompt</code> - The prompt string to display to the user</dd>\n<dd><code>trueLabel</code> - The string used to indicate <code>true</code></dd>\n<dd><code>falseLabel</code> - The string used to indicate <code>false</code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a boolean value</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>boolean flag = program.readBoolean(prompt);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"isAppletMode--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isAppletMode</h4>\n<pre>public&nbsp;boolean&nbsp;isAppletMode()</pre>\n<div class=\"block\">Returns <code>true</code> if this program is running as an applet in a browser.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd><code>true</code> if this program is running as an applet, <code>false</code> otherwise</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>if (isAppletMode()) . . .</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"setConsole-acm.io.IOConsole-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setConsole</h4>\n<pre>public&nbsp;void&nbsp;setConsole(<a href=\"../../acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a>&nbsp;console)</pre>\n<div class=\"block\">Sets the console associated with this program.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>console</code> - The <code>IOConsole</code> object used for this program</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>program.setConsole(console);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getConsole--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getConsole</h4>\n<pre>public&nbsp;<a href=\"../../acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a>&nbsp;getConsole()</pre>\n<div class=\"block\">Returns the console associated with this program.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The <code>IOConsole</code> object used for this program</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>IOConsole console = program.getConsole();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getDialog--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getDialog</h4>\n<pre>public&nbsp;acm.io.IODialog&nbsp;getDialog()</pre>\n<div class=\"block\">Returns the dialog used for user interaction.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The <code>IODialog</code> object used for this program</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>IODialog dialog = program.getDialog();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getInputModel--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getInputModel</h4>\n<pre>public&nbsp;acm.io.IOModel&nbsp;getInputModel()</pre>\n<div class=\"block\">Returns the <code>IOModel</code> used for program input, which will\n typically be either the default <code>IOConsole</code> or <code>IODialog</code> object.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The <code>IOModel</code> used for program input</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>IOModel io = program.getInputModel();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getOutputModel--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getOutputModel</h4>\n<pre>public&nbsp;acm.io.IOModel&nbsp;getOutputModel()</pre>\n<div class=\"block\">Returns the <code>IOModel</code> used for program output, which will\n typically be either the default <code>IOConsole</code> or <code>IODialog</code> object.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The <code>IOModel</code> used for program output</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>IOModel io = program.getOutputModel();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getReader--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getReader</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html?is-external=true\" title=\"class or interface in java.io\">BufferedReader</a>&nbsp;getReader()</pre>\n<div class=\"block\">Returns a <code>BufferedReader</code> whose input comes from the console.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>A <code>Reader</code> for use with this console</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>BufferedReader rd = getReader();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getWriter--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getWriter</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintWriter.html?is-external=true\" title=\"class or interface in java.io\">PrintWriter</a>&nbsp;getWriter()</pre>\n<div class=\"block\">Returns a <code>PrintWriter</code> whose output is directed to the console.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>A <code>PrintWriter</code> for use with this console</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>PrintWriter wr = getWriter();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getRegionPanel-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getRegionPanel</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a>&nbsp;getRegionPanel(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;region)</pre>\n<div class=\"block\">Gets the <code>JPanel</code> for the specified region.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>region</code> - The region of the window (<code>NORTH</code>, <code>SOUTH</code>,\n               <code>EAST</code>, <code>WEST</code>, or <code>CENTER</code>)</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The <code>JPanel</code> for that subregion</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>JPanel panel = getRegionPanel(region);</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"add-java.awt.Component-java.lang.String-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>public&nbsp;void&nbsp;add(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;region,\n                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;constraints)</pre>\n<div class=\"block\">Adds the component to the specified border region with the indicated\n constraints object.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>comp</code> - The component to be added</dd>\n<dd><code>region</code> - The region of the window (<code>NORTH</code>, <code>SOUTH</code>,\n               <code>EAST</code>, <code>WEST</code>, or <code>CENTER</code>)</dd>\n<dd><code>constraints</code> - The constraints object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>add(comp, region, constraints);</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"addActionListeners--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addActionListeners</h4>\n<pre>public&nbsp;void&nbsp;addActionListeners()</pre>\n<div class=\"block\">Adds the program as an <code>ActionListener</code> to every button in\n the structure that does not have a listener already.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>addActionListeners();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"addActionListeners-java.awt.event.ActionListener-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addActionListeners</h4>\n<pre>public&nbsp;void&nbsp;addActionListeners(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener)</pre>\n<div class=\"block\">Adds the specified listener to every button in\n the structure that does not have a listener already.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>listener</code> - The <code>ActionListener</code> to be added</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>addActionListeners(listener);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setTitle-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setTitle</h4>\n<pre>public&nbsp;void&nbsp;setTitle(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;title)</pre>\n<div class=\"block\">Sets the title of this program.  The title appears in the title bar\n when the program is running as an application.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#setTitle-java.lang.String-\">setTitle</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>title</code> - The title for this program</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>setTitle(title);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getTitle--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getTitle</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getTitle()</pre>\n<div class=\"block\">Gets the title of this program.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#getTitle--\">getTitle</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The title in use for this program</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>String title = getTitle();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setParameterTable-java.util.Map-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setParameterTable</h4>\n<pre>public&nbsp;void&nbsp;setParameterTable(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;table)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#setParameterTable-java.util.Map-\">setParameterTable</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setStartupObject-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setStartupObject</h4>\n<pre>public&nbsp;void&nbsp;setStartupObject(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#setStartupObject-java.lang.Object-\">setStartupObject</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"start--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>start</h4>\n<pre>public&nbsp;void&nbsp;start()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#start--\">start</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"start-java.lang.String:A-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>start</h4>\n<pre>public&nbsp;void&nbsp;start(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</pre>\n<div class=\"block\">Starts the program using the specified argument list.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#start-java.lang.String:A-\">start</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>args</code> - An array of strings passed to the program</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>program.start(args);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"exit--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>exit</h4>\n<pre>public&nbsp;void&nbsp;exit()</pre>\n<div class=\"block\">Exits from the program.  Subclasses should override this method if they need\n to perform any actions before shutting down the program, such as asking the\n user to save any unsaved files.  Any clients that do override this method\n should call <code>super.exit()</code> at the end of their processing.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#exit--\">exit</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>program.exit();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"addExitHook-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addExitHook</h4>\n<pre>public&nbsp;void&nbsp;addExitHook(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj)</pre>\n<div class=\"block\">Requests that the program call the <code>exit</code> method in the\n specified object before exiting.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>program.addExitHook(obj);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"mouseClicked-java.awt.event.MouseEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>mouseClicked</h4>\n<pre>public&nbsp;void&nbsp;mouseClicked(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Called when the mouse is clicked.  A call to <code>mouseClicked</code>\n is always preceded by both a <code>mousePressed</code> and a\n <code>mouseReleased</code> event for the same source.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true#mouseClicked-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseClicked</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"mousePressed-java.awt.event.MouseEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>mousePressed</h4>\n<pre>public&nbsp;void&nbsp;mousePressed(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Called when the mouse button is pressed.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true#mousePressed-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mousePressed</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"mouseReleased-java.awt.event.MouseEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>mouseReleased</h4>\n<pre>public&nbsp;void&nbsp;mouseReleased(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Called when the mouse button is released.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true#mouseReleased-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseReleased</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"mouseEntered-java.awt.event.MouseEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>mouseEntered</h4>\n<pre>public&nbsp;void&nbsp;mouseEntered(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Called when the mouse enters the source (which may be\n either a component or a <code>GObject</code>).</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true#mouseEntered-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseEntered</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"mouseExited-java.awt.event.MouseEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>mouseExited</h4>\n<pre>public&nbsp;void&nbsp;mouseExited(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Called when the mouse exits the source (which may be\n either a component or a <code>GObject</code>).</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true#mouseExited-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseExited</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"mouseMoved-java.awt.event.MouseEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>mouseMoved</h4>\n<pre>public&nbsp;void&nbsp;mouseMoved(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Called when the mouse is moved.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true#mouseMoved-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseMoved</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"mouseDragged-java.awt.event.MouseEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>mouseDragged</h4>\n<pre>public&nbsp;void&nbsp;mouseDragged(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Called when the mouse is dragged with the button down.  Java\n makes several guarantees about dragging.  First, a\n <code>mouseDragged</code> call is always preceded by a\n <code>mousePressed</code> call for the same source.  If the\n mouse is pressed elsewhere and then enters a source with\n the button down, no drag event occurs.  Moreover, once the\n mouse button goes down in a particular source, only that\n source will receive mouse events until the button goes up.\n Those events, moreover, are reported even in the mouse\n travels outside the domain of the object.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true#mouseDragged-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseDragged</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"keyTyped-java.awt.event.KeyEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>keyTyped</h4>\n<pre>public&nbsp;void&nbsp;keyTyped(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Called when a key is typed (i.e., pressed and released).</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true#keyTyped-java.awt.event.KeyEvent-\" title=\"class or interface in java.awt.event\">keyTyped</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"keyPressed-java.awt.event.KeyEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>keyPressed</h4>\n<pre>public&nbsp;void&nbsp;keyPressed(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Called when a key is pressed.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true#keyPressed-java.awt.event.KeyEvent-\" title=\"class or interface in java.awt.event\">keyPressed</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"keyReleased-java.awt.event.KeyEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>keyReleased</h4>\n<pre>public&nbsp;void&nbsp;keyReleased(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Called when a key is released.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true#keyReleased-java.awt.event.KeyEvent-\" title=\"class or interface in java.awt.event\">keyReleased</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"actionPerformed-java.awt.event.ActionEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>actionPerformed</h4>\n<pre>public&nbsp;void&nbsp;actionPerformed(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Called when a component (typically a button) is activated.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true#actionPerformed-java.awt.event.ActionEvent-\" title=\"class or interface in java.awt.event\">actionPerformed</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"createConsole--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createConsole</h4>\n<pre>protected&nbsp;<a href=\"../../acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a>&nbsp;createConsole()</pre>\n<div class=\"block\">Creates the console used by the <code>ConsoleProgram</code>.  Subclasses can\n override this method to create their own console types.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The console to be used by the program</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>IOConsole console = program.createConsole();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"createDialogIO--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createDialogIO</h4>\n<pre>protected&nbsp;acm.io.IODialog&nbsp;createDialogIO()</pre>\n<div class=\"block\">Creates the dialog used for interaction (primarily by the <code>DialogProgram</code>\n class).  Subclasses can override this method to create their own dialog types.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The dialog to be used by the program</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>IODialog dialog = program.createDialogIO();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getPreferredSize--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getPreferredSize</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a>&nbsp;getPreferredSize()</pre>\n<div class=\"block\">Returns the preferred size of the content pane.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The preferred size of the content pane</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>Dimension size = getPreferredSize();</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"getWidth--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getWidth</h4>\n<pre>public&nbsp;int&nbsp;getWidth()</pre>\n<div class=\"block\">Returns the width of the central region.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The width of the central region</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int width = getWidth();</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"getHeight--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getHeight</h4>\n<pre>public&nbsp;int&nbsp;getHeight()</pre>\n<div class=\"block\">Returns the height of the central region.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The height of the central region</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int height = getHeight();</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"getParameter-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getParameter</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getParameter(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n<div class=\"block\">Returns the parameter associated with name.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>name</code> - The name of the parameter</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value associated with the parameter, or <code>null</code> if none</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>String value = getParameter(name);</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"setLayout-java.awt.LayoutManager-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setLayout</h4>\n<pre>public&nbsp;void&nbsp;setLayout(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/LayoutManager.html?is-external=true\" title=\"class or interface in java.awt\">LayoutManager</a>&nbsp;layout)</pre>\n<div class=\"block\">Sets the layout manager for the central region of the content pane.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>layout</code> - The layout manager to use</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>setLayout(layout);</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"getLayout--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getLayout</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/LayoutManager.html?is-external=true\" title=\"class or interface in java.awt\">LayoutManager</a>&nbsp;getLayout()</pre>\n<div class=\"block\">Gets the layout manager for the central region of the content pane.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The active layout manager</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>LayoutManager layout = setLayout();</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"setBackground-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setBackground</h4>\n<pre>public&nbsp;void&nbsp;setBackground(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n<div class=\"block\">Sets the background for the central region of the content pane.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>color</code> - The new background color</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>setBackground(color);</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"addImpl-java.awt.Component-java.lang.Object-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addImpl</h4>\n<pre>protected&nbsp;void&nbsp;addImpl(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;constraints,\n                       int&nbsp;index)</pre>\n<div class=\"block\">Adds the specified component to the content pane using the specified constraints and index.</div>\n</li>\n</ul>\n<a name=\"remove-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>remove</h4>\n<pre>public&nbsp;void&nbsp;remove(int&nbsp;index)</pre>\n<div class=\"block\">Removes the component at the specified index from the central region.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>index</code> - The index position of the component to remove</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>remove(index);</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"remove-java.awt.Component-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>remove</h4>\n<pre>public&nbsp;void&nbsp;remove(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp)</pre>\n<div class=\"block\">Removes the specified component from the central region.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>comp</code> - The component to remove</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>remove(comp);</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"removeAll--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeAll</h4>\n<pre>public&nbsp;void&nbsp;removeAll()</pre>\n<div class=\"block\">Removes all components from the central region.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>removeAll();</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"validate--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>validate</h4>\n<pre>public&nbsp;void&nbsp;validate()</pre>\n<div class=\"block\">Forwards validate to the content pane.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>validate();</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"repaint--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>repaint</h4>\n<pre>public&nbsp;void&nbsp;repaint()</pre>\n<div class=\"block\">Forwards repaint to the content pane.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>repaint();</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"destroy--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>destroy</h4>\n<pre>public&nbsp;void&nbsp;destroy()</pre>\n<div class=\"block\">Called when the program has been told to destroy itself.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>program.destroy();</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"main-java.lang.String:A-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>main</h4>\n<pre>public static&nbsp;void&nbsp;main(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</pre>\n<div class=\"block\">Every application must either contain a \"Main-Class\" entry in its\n manifest file or include a main method that looks like this, where\n <code>MyClass</code> is the name of the program class:\n\n <p><pre><code>\n &nbsp;    public static void main(String[] args) {\n &nbsp;       new MyClass().start();\n &nbsp;    }\n </code></pre>\n\n <p>If the program needs the command line arguments, the <code>args</code>\n array can be passed to the <code>start</code> method and then retrieved\n using the <code>getArgumentArray</code> method.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>args</code> - An array of string arguments</dd>\n</dl>\n</li>\n</ul>\n<a name=\"menuAction-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>menuAction</h4>\n<pre>public&nbsp;void&nbsp;menuAction(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;cmd)</pre>\n<div class=\"block\">Called whenever an action event is detected in the menu bar.  Most of\n these actions are simply passed on to the appropriate console.</div>\n</li>\n</ul>\n<a name=\"setMacMenuBarFlag-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setMacMenuBarFlag</h4>\n<pre>protected&nbsp;void&nbsp;setMacMenuBarFlag(boolean&nbsp;flag)</pre>\n<div class=\"block\">Sets a flag indicating whether applications running on the Macintosh\n should use standard Mac menus.  The default is <code>true</code>.\n Setting this value to <code>false</code> means that Mac programs\n use the same in-window <code>JMenuBar</code> approach used on other\n platforms.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>flag</code> - <code>true</code> to use Mac menu style; <code>false</code> otherwise</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>setMacMenuBarFlag(flag);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getMacMenuBarFlag--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getMacMenuBarFlag</h4>\n<pre>protected&nbsp;boolean&nbsp;getMacMenuBarFlag()</pre>\n<div class=\"block\">Retrieves the setting of the Mac menu bar flag.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd><code>true</code> if Mac menu style is supported; <code>false</code> otherwise</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>boolean flag = getMacMenuBarFlag();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getBorder-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getBorder</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;getBorder(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;side)</pre>\n<div class=\"block\">Returns the component installed as a border on the specified side, which must\n be one of the constants from <code>BorderLayout</code> (<code>NORTH</code>,\n <code>SOUTH</code>, <code>EAST</code>, <code>WEST</code>).</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>side</code> - The side (<code>NORTH</code>, <code>SOUTH</code>, <code>EAST</code>,\n             or <code>WEST</code>)</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The component used as a border on the specified side</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>getBorder(side, comp);</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"getArgumentArray--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getArgumentArray</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;getArgumentArray()</pre>\n<div class=\"block\">Retrieves the array of arguments passed in from the command line, or\n <code>null</code> if no arguments are available.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The array of command-line arguments</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>String[] args = getArgumentArray();</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"isStarted--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isStarted</h4>\n<pre>protected&nbsp;boolean&nbsp;isStarted()</pre>\n<div class=\"block\">Checks to see whether this program has started, usually by checking to see\n whether some pane exists.  Subclasses can override this method to ensure\n that their structures are visible before proceeding.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"startHook--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>startHook</h4>\n<pre>protected&nbsp;void&nbsp;startHook()</pre>\n<div class=\"block\">Performs class-specific initialization for the program just before\n it starts.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"endHook--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>endHook</h4>\n<pre>protected&nbsp;void&nbsp;endHook()</pre>\n<div class=\"block\">Performs class-specific cleanup for the program just after\n it finishes.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"setAppletStub-java.applet.AppletStub-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setAppletStub</h4>\n<pre>protected&nbsp;void&nbsp;setAppletStub(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AppletStub.html?is-external=true\" title=\"class or interface in java.applet\">AppletStub</a>&nbsp;stub)</pre>\n<div class=\"block\">Sets the applet stub for this program in a way that makes it possible for\n clients to retrieve it.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>stub</code> - The applet stub</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>setAppletStub(stub);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getAppletStub--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getAppletStub</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AppletStub.html?is-external=true\" title=\"class or interface in java.applet\">AppletStub</a>&nbsp;getAppletStub()</pre>\n<div class=\"block\">Retrieves the applet stub.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The applet stub</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>AppletStub stub = getAppletStub();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setParameterTable-java.util.HashMap-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setParameterTable</h4>\n<pre>protected&nbsp;void&nbsp;setParameterTable(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true\" title=\"class or interface in java.util\">HashMap</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;ht)</pre>\n<div class=\"block\">Sets the parameter table for this program.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>ht</code> - The parameter table</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>setParameterTable(ht);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getParameterTable--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getParameterTable</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true\" title=\"class or interface in java.util\">HashMap</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;getParameterTable()</pre>\n<div class=\"block\">Retrieves the parameter table.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The parameter table</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>ParameterTable ht = getParameterTable();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"createParameterTable-java.lang.String:A-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>createParameterTable</h4>\n<pre>protected static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true\" title=\"class or interface in java.util\">HashMap</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;createParameterTable(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</pre>\n<div class=\"block\">Creates a hash table containing the parameters specified in the\n argument list.  Parameters are taken to be any argument that matches\n the template\n\n <p>   <i>name</i><code>=</code><i>value</i>\n\n All other arguments are collected as a tab-separated string and placed\n in an entry under the key <code>\"ARGS\"</code>.  All named parameters\n are converted to lower case to preserve the case-insensitive semantics\n of <code>getParameter</code>.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>args</code> - The array of strings passed to the application</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>A <code>HashMap</code> containing the parameter bindings</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>HashMap<String,String> ht = createParameterTable(args);</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/program/AsciiArtProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/program/ConsoleProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/program/CommandLineProgram.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"CommandLineProgram.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/program/ConsoleProgram.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:06 PDT 2017 -->\n<title>ConsoleProgram</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"ConsoleProgram\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":10,\"i16\":10,\"i17\":10,\"i18\":10,\"i19\":10,\"i20\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/program/CommandLineProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/program/DialogProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/program/ConsoleProgram.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ConsoleProgram.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JApplet\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.acm.program.AbstractConsoleProgram\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.program</div>\n<h2 title=\"Class ConsoleProgram\" class=\"title\">Class ConsoleProgram</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Component</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Container</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Panel</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">java.applet.Applet</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JApplet</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">acm.program.Program</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">acm.program.AbstractConsoleProgram</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.program.ConsoleProgram</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd>acm.io.IOModel, <a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/AdjustmentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">AdjustmentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ContainerListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ItemListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ItemListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseWheelListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/TextListener.html?is-external=true\" title=\"class or interface in java.awt.event\">TextListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowFocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowStateListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowStateListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListDataListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListDataListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListSelectionListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListSelectionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/MouseInputListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">MouseInputListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/PopupMenuListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">PopupMenuListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/RootPaneContainer.html?is-external=true\" title=\"class or interface in javax.swing\">RootPaneContainer</a></dd>\n</dl>\n<dl>\n<dt>Direct Known Subclasses:</dt>\n<dd><a href=\"../../acm/program/AsciiArtProgram.html\" title=\"class in acm.program\">AsciiArtProgram</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public abstract class <span class=\"typeNameLabel\">ConsoleProgram</span>\nextends <a href=\"../../acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></pre>\n<div class=\"block\">This class is a standard subclass of <code><a href=\"Program.html\">Program</a></code>\n that installs a console in the window.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#acm.program.ConsoleProgram\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JApplet\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.AccessibleJApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet.AccessibleJApplet</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.applet.Applet\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.applet.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">Applet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.AccessibleApplet.html?is-external=true\" title=\"class or interface in java.applet\">Applet.AccessibleApplet</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Panel\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\">Panel</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.AccessibleAWTPanel.html?is-external=true\" title=\"class or interface in java.awt\">Panel.AccessibleAWTPanel</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.AccessibleAWTContainer.html?is-external=true\" title=\"class or interface in java.awt\">Container.AccessibleAWTContainer</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.AccessibleAWTComponent.html?is-external=true\" title=\"class or interface in java.awt\">Component.AccessibleAWTComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BaselineResizeBehavior.html?is-external=true\" title=\"class or interface in java.awt\">Component.BaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BltBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.BltBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.FlipBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.FlipBufferStrategy</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.program.AbstractConsoleProgram\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;acm.program.<a href=\"../../acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></h3>\n<code><a href=\"../../acm/program/AbstractConsoleProgram.html#PROGRAM_COMPLETED_TITLE_SUFFIX\">PROGRAM_COMPLETED_TITLE_SUFFIX</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.program.Program\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;acm.program.<a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></h3>\n<code><a href=\"../../acm/program/Program.html#CONFIG_FILE_NAME\">CONFIG_FILE_NAME</a>, <a href=\"../../acm/program/Program.html#invisibleObjects\">invisibleObjects</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.JApplet\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#accessibleContext\" title=\"class or interface in javax.swing\">accessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#rootPane\" title=\"class or interface in javax.swing\">rootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#rootPaneCheckingEnabled\" title=\"class or interface in javax.swing\">rootPaneCheckingEnabled</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#BOTTOM_ALIGNMENT\" title=\"class or interface in java.awt\">BOTTOM_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#CENTER_ALIGNMENT\" title=\"class or interface in java.awt\">CENTER_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#LEFT_ALIGNMENT\" title=\"class or interface in java.awt\">LEFT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#RIGHT_ALIGNMENT\" title=\"class or interface in java.awt\">RIGHT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#TOP_ALIGNMENT\" title=\"class or interface in java.awt\">TOP_ALIGNMENT</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.program.ProgramInterface\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;acm.program.<a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></h3>\n<code><a href=\"../../acm/program/ProgramInterface.html#CENTER\">CENTER</a>, <a href=\"../../acm/program/ProgramInterface.html#EAST\">EAST</a>, <a href=\"../../acm/program/ProgramInterface.html#NORTH\">NORTH</a>, <a href=\"../../acm/program/ProgramInterface.html#SOUTH\">SOUTH</a>, <a href=\"../../acm/program/ProgramInterface.html#WEST\">WEST</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.image.ImageObserver\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ABORT\" title=\"class or interface in java.awt.image\">ABORT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ALLBITS\" title=\"class or interface in java.awt.image\">ALLBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ERROR\" title=\"class or interface in java.awt.image\">ERROR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#FRAMEBITS\" title=\"class or interface in java.awt.image\">FRAMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#HEIGHT\" title=\"class or interface in java.awt.image\">HEIGHT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#PROPERTIES\" title=\"class or interface in java.awt.image\">PROPERTIES</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#SOMEBITS\" title=\"class or interface in java.awt.image\">SOMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#WIDTH\" title=\"class or interface in java.awt.image\">WIDTH</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ConsoleProgram.html#ConsoleProgram--\">ConsoleProgram</a></span>()</code>\n<div class=\"block\">Creates a new console program.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ConsoleProgram.html#captureOutput--\">captureOutput</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ConsoleProgram.html#captureOutput-boolean-\">captureOutput</a></span>(boolean&nbsp;capture)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"../../acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ConsoleProgram.html#createConsole--\">createConsole</a></span>()</code>\n<div class=\"block\">Creates the console used by the <code>ConsoleProgram</code>.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ConsoleProgram.html#echoComments--\">echoComments</a></span>()</code>\n<div class=\"block\">Print all echoed comments from the input override file onscreen.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ConsoleProgram.html#getCapturedOutput--\">getCapturedOutput</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ConsoleProgram.html#getComments--\">getComments</a></span>()</code>\n<div class=\"block\">Print all echoed comments from the input override file onscreen.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ConsoleProgram.html#init--\">init</a></span>()</code>\n<div class=\"block\">Specifies the code to be executed as startup time before the\n <code>run</code> method is called.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ConsoleProgram.html#overrideInput-java.io.InputStream-\">overrideInput</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;stream)</code>\n<div class=\"block\">Signals the ConsoleProgram to use the input profile read from the given stream,\n rather than prompt the user for input.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ConsoleProgram.html#overrideInput-java.io.Reader-\">overrideInput</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Reader.html?is-external=true\" title=\"class or interface in java.io\">Reader</a>&nbsp;reader)</code>\n<div class=\"block\">Signals the ConsoleProgram to use the input profile read from the given reader,\n rather than prompt the user for input.</div>\n</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ConsoleProgram.html#overrideInput-java.lang.String-\">overrideInput</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;inputFilename)</code>\n<div class=\"block\">Signals the ConsoleProgram to use the input profile read from the file\n with inputFilename, rather than prompt the user for input.</div>\n</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ConsoleProgram.html#print-java.lang.String-\">print</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</code>\n<div class=\"block\">Displays the argument value on the console, leaving the cursor at the end of\n the output.</div>\n</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ConsoleProgram.html#print-java.lang.String-java.awt.Color-\">print</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value,\n     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>\n<div class=\"block\">Prints the given string in the given color.</div>\n</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ConsoleProgram.html#printf-java.lang.String-java.lang.Object...-\">printf</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;format,\n      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>...&nbsp;args)</code>\n<div class=\"block\">Writes a formatted string to this output stream using the specified format string and arguments.</div>\n</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ConsoleProgram.html#println--\">println</a></span>()</code>\n<div class=\"block\">Advances the console cursor to the beginning of the next line.</div>\n</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ConsoleProgram.html#println-java.lang.String-\">println</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</code>\n<div class=\"block\">Displays the argument value on the console and then advances the cursor\n to the beginning of the next line.</div>\n</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ConsoleProgram.html#println-java.lang.String-java.awt.Color-\">println</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value,\n       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>\n<div class=\"block\">Prints the given string in the given color and then advances the cursor to the beginning of the next line.</div>\n</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ConsoleProgram.html#readBoolean-java.lang.String-java.lang.String-java.lang.String-\">readBoolean</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt,\n           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;y,\n           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;n)</code>\n<div class=\"block\">Prompts the user to enter a boolean value, which is matched against the\n labels provided.</div>\n</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ConsoleProgram.html#readDouble-java.lang.String-double-double-\">readDouble</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt,\n          double&nbsp;min,\n          double&nbsp;max)</code>\n<div class=\"block\">Prompts the user to enter an double-precision number, which is then returned\n as the value of this method.</div>\n</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ConsoleProgram.html#readInt-java.lang.String-int-int-\">readInt</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt,\n       int&nbsp;min,\n       int&nbsp;max)</code>\n<div class=\"block\">Prompts the user to enter an integer, which is then returned as the value\n of this method.</div>\n</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ConsoleProgram.html#readLine-java.lang.String-\">readLine</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt)</code>\n<div class=\"block\">Prompts the user for a line of input.</div>\n</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ConsoleProgram.html#run--\">run</a></span>()</code>\n<div class=\"block\">Specifies the code to be executed as the program runs.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.program.AbstractConsoleProgram\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.program.<a href=\"../../acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></h3>\n<code><a href=\"../../acm/program/AbstractConsoleProgram.html#checkCompilerFlags--\">checkCompilerFlags</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#clearConsole--\">clearConsole</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#compareOutput--\">compareOutput</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#endHook--\">endHook</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#fontEnlarge--\">fontEnlarge</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#fontShrink--\">fontShrink</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#fontToggleBold--\">fontToggleBold</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#getAllOutput--\">getAllOutput</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#getFont--\">getFont</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#historyDown--\">historyDown</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#historyUp--\">historyUp</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#loadConfiguration-java.util.Properties-\">loadConfiguration</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#loadInputScript--\">loadInputScript</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#menuAction-java.awt.event.ActionEvent-\">menuAction</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#mouseWheelMoved-java.awt.event.MouseWheelEvent-\">mouseWheelMoved</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#promptUserForFile-java.lang.String-\">promptUserForFile</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#promptUserForFile-java.lang.String-java.lang.String-\">promptUserForFile</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#promptUserForFile-java.lang.String-java.lang.String-java.lang.String-\">promptUserForFile</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#saveConfiguration-java.util.Properties-\">saveConfiguration</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#scrollLineDown--\">scrollLineDown</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#scrollLineUp--\">scrollLineUp</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#scrollPageDown--\">scrollPageDown</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#scrollPageUp--\">scrollPageUp</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#scrollToBottom--\">scrollToBottom</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#scrollToTop--\">scrollToTop</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#setClearConsoleEnabled-boolean-\">setClearConsoleEnabled</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#setColorFromChooser-boolean-\">setColorFromChooser</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#setFont-java.awt.Font-\">setFont</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#setFont-java.lang.String-\">setFont</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#setFontFromChooser--\">setFontFromChooser</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.program.Program\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.program.<a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></h3>\n<code><a href=\"../../acm/program/Program.html#actionPerformed-java.awt.event.ActionEvent-\">actionPerformed</a>, <a href=\"../../acm/program/Program.html#add-java.awt.Component-java.lang.String-java.lang.Object-\">add</a>, <a href=\"../../acm/program/Program.html#addActionListeners--\">addActionListeners</a>, <a href=\"../../acm/program/Program.html#addActionListeners-java.awt.event.ActionListener-\">addActionListeners</a>, <a href=\"../../acm/program/Program.html#addActionListenersToButtonsOnly--\">addActionListenersToButtonsOnly</a>, <a href=\"../../acm/program/Program.html#addAllActionListeners--\">addAllActionListeners</a>, <a href=\"../../acm/program/Program.html#addExitHook-java.lang.Object-\">addExitHook</a>, <a href=\"../../acm/program/Program.html#addImpl-java.awt.Component-java.lang.Object-int-\">addImpl</a>, <a href=\"../../acm/program/Program.html#adjustmentValueChanged-java.awt.event.AdjustmentEvent-\">adjustmentValueChanged</a>, <a href=\"../../acm/program/Program.html#alert-java.lang.Object-\">alert</a>, <a href=\"../../acm/program/Program.html#alert-java.lang.String-\">alert</a>, <a href=\"../../acm/program/Program.html#animation--\">animation</a>, <a href=\"../../acm/program/Program.html#center--\">center</a>, <a href=\"../../acm/program/Program.html#changedUpdate-javax.swing.event.DocumentEvent-\">changedUpdate</a>, <a href=\"../../acm/program/Program.html#checkKill--\">checkKill</a>, <a href=\"../../acm/program/Program.html#checkStartupSettings--\">checkStartupSettings</a>, <a href=\"../../acm/program/Program.html#componentAdded-java.awt.event.ContainerEvent-\">componentAdded</a>, <a href=\"../../acm/program/Program.html#componentHidden-java.awt.event.ComponentEvent-\">componentHidden</a>, <a href=\"../../acm/program/Program.html#componentMoved-java.awt.event.ComponentEvent-\">componentMoved</a>, <a href=\"../../acm/program/Program.html#componentRemoved-java.awt.event.ContainerEvent-\">componentRemoved</a>, <a href=\"../../acm/program/Program.html#componentResized-java.awt.event.ComponentEvent-\">componentResized</a>, <a href=\"../../acm/program/Program.html#componentShown-java.awt.event.ComponentEvent-\">componentShown</a>, <a href=\"../../acm/program/Program.html#confirm-java.lang.String-\">confirm</a>, <a href=\"../../acm/program/Program.html#contentsChanged-javax.swing.event.ListDataEvent-\">contentsChanged</a>, <a href=\"../../acm/program/Program.html#createDialogIO--\">createDialogIO</a>, <a href=\"../../acm/program/Program.html#createMenuBar--\">createMenuBar</a>, <a href=\"../../acm/program/Program.html#createParameterTable-java.lang.String:A-\">createParameterTable</a>, <a href=\"../../acm/program/Program.html#createProgramFrame--\">createProgramFrame</a>, <a href=\"../../acm/program/Program.html#destroy--\">destroy</a>, <a href=\"../../acm/program/Program.html#error-java.lang.Exception-\">error</a>, <a href=\"../../acm/program/Program.html#error-java.lang.Exception-java.lang.String-\">error</a>, <a href=\"../../acm/program/Program.html#error-java.lang.String-\">error</a>, <a href=\"../../acm/program/Program.html#exit--\">exit</a>, <a href=\"../../acm/program/Program.html#fileExists-java.lang.String-\">fileExists</a>, <a href=\"../../acm/program/Program.html#fileExists-java.lang.String-java.lang.String-\">fileExists</a>, <a href=\"../../acm/program/Program.html#fileExistsInsideJAR-java.lang.String-\">fileExistsInsideJAR</a>, <a href=\"../../acm/program/Program.html#fileExistsInsideJAR-java.lang.String-java.lang.String-\">fileExistsInsideJAR</a>, <a href=\"../../acm/program/Program.html#fileExistsOnDisk-java.lang.String-\">fileExistsOnDisk</a>, <a href=\"../../acm/program/Program.html#fileExistsOnDisk-java.lang.String-java.lang.String-\">fileExistsOnDisk</a>, <a href=\"../../acm/program/Program.html#fileSize-java.lang.String-\">fileSize</a>, <a href=\"../../acm/program/Program.html#fileSize-java.lang.String-java.lang.String-\">fileSize</a>, <a href=\"../../acm/program/Program.html#focusGained-java.awt.event.FocusEvent-\">focusGained</a>, <a href=\"../../acm/program/Program.html#focusLost-java.awt.event.FocusEvent-\">focusLost</a>, <a href=\"../../acm/program/Program.html#getAnimationDelay--\">getAnimationDelay</a>, <a href=\"../../acm/program/Program.html#getAppletStub--\">getAppletStub</a>, <a href=\"../../acm/program/Program.html#getArgumentArray--\">getArgumentArray</a>, <a href=\"../../acm/program/Program.html#getBoolean--\">getBoolean</a>, <a href=\"../../acm/program/Program.html#getBoolean-java.lang.String-\">getBoolean</a>, <a href=\"../../acm/program/Program.html#getBoolean-java.lang.String-java.lang.String-java.lang.String-\">getBoolean</a>, <a href=\"../../acm/program/Program.html#getBorder-java.lang.String-\">getBorder</a>, <a href=\"../../acm/program/Program.html#getBottomY--\">getBottomY</a>, <a href=\"../../acm/program/Program.html#getCenterLocation--\">getCenterLocation</a>, <a href=\"../../acm/program/Program.html#getCenterX--\">getCenterX</a>, <a href=\"../../acm/program/Program.html#getCenterY--\">getCenterY</a>, <a href=\"../../acm/program/Program.html#getCentralRegionSize--\">getCentralRegionSize</a>, <a href=\"../../acm/program/Program.html#getConsole--\">getConsole</a>, <a href=\"../../acm/program/Program.html#getDialog--\">getDialog</a>, <a href=\"../../acm/program/Program.html#getDouble--\">getDouble</a>, <a href=\"../../acm/program/Program.html#getDouble-double-double-\">getDouble</a>, <a href=\"../../acm/program/Program.html#getDouble-java.lang.String-\">getDouble</a>, <a href=\"../../acm/program/Program.html#getDouble-java.lang.String-double-double-\">getDouble</a>, <a href=\"../../acm/program/Program.html#getHeight--\">getHeight</a>, <a href=\"../../acm/program/Program.html#getInputModel--\">getInputModel</a>, <a href=\"../../acm/program/Program.html#getInteger--\">getInteger</a>, <a href=\"../../acm/program/Program.html#getInteger-int-int-\">getInteger</a>, <a href=\"../../acm/program/Program.html#getInteger-java.lang.String-\">getInteger</a>, <a href=\"../../acm/program/Program.html#getInteger-java.lang.String-int-int-\">getInteger</a>, <a href=\"../../acm/program/Program.html#getJFrame--\">getJFrame</a>, <a href=\"../../acm/program/Program.html#getLayout--\">getLayout</a>, <a href=\"../../acm/program/Program.html#getLine--\">getLine</a>, <a href=\"../../acm/program/Program.html#getLine-java.lang.String-\">getLine</a>, <a href=\"../../acm/program/Program.html#getMainThread--\">getMainThread</a>, <a href=\"../../acm/program/Program.html#getMenuBar--\">getMenuBar</a>, <a href=\"../../acm/program/Program.html#getOutputColor--\">getOutputColor</a>, <a href=\"../../acm/program/Program.html#getOutputModel--\">getOutputModel</a>, <a href=\"../../acm/program/Program.html#getParameter-java.lang.String-\">getParameter</a>, <a href=\"../../acm/program/Program.html#getParameterTable--\">getParameterTable</a>, <a href=\"../../acm/program/Program.html#getPreferredSize--\">getPreferredSize</a>, <a href=\"../../acm/program/Program.html#getReader--\">getReader</a>, <a href=\"../../acm/program/Program.html#getReal--\">getReal</a>, <a href=\"../../acm/program/Program.html#getReal-double-double-\">getReal</a>, <a href=\"../../acm/program/Program.html#getReal-java.lang.String-\">getReal</a>, <a href=\"../../acm/program/Program.html#getReal-java.lang.String-double-double-\">getReal</a>, <a href=\"../../acm/program/Program.html#getRegionPanel-java.lang.String-\">getRegionPanel</a>, <a href=\"../../acm/program/Program.html#getRightX--\">getRightX</a>, <a href=\"../../acm/program/Program.html#getScreenHeight--\">getScreenHeight</a>, <a href=\"../../acm/program/Program.html#getScreenSize--\">getScreenSize</a>, <a href=\"../../acm/program/Program.html#getScreenWidth--\">getScreenWidth</a>, <a href=\"../../acm/program/Program.html#getStartupObject--\">getStartupObject</a>, <a href=\"../../acm/program/Program.html#getTitle--\">getTitle</a>, <a href=\"../../acm/program/Program.html#getWidth--\">getWidth</a>, <a href=\"../../acm/program/Program.html#getWindow--\">getWindow</a>, <a href=\"../../acm/program/Program.html#getWriter--\">getWriter</a>, <a href=\"../../acm/program/Program.html#getYesOrNo-java.lang.String-\">getYesOrNo</a>, <a href=\"../../acm/program/Program.html#hasConfiguration--\">hasConfiguration</a>, <a href=\"../../acm/program/Program.html#insertUpdate-javax.swing.event.DocumentEvent-\">insertUpdate</a>, <a href=\"../../acm/program/Program.html#intervalAdded-javax.swing.event.ListDataEvent-\">intervalAdded</a>, <a href=\"../../acm/program/Program.html#intervalRemoved-javax.swing.event.ListDataEvent-\">intervalRemoved</a>, <a href=\"../../acm/program/Program.html#isAnimated--\">isAnimated</a>, <a href=\"../../acm/program/Program.html#isApplet--\">isApplet</a>, <a href=\"../../acm/program/Program.html#isAppletMode--\">isAppletMode</a>, <a href=\"../../acm/program/Program.html#isExitOnClose--\">isExitOnClose</a>, <a href=\"../../acm/program/Program.html#isInitialized--\">isInitialized</a>, <a href=\"../../acm/program/Program.html#isStarted--\">isStarted</a>, <a href=\"../../acm/program/Program.html#itemStateChanged-java.awt.event.ItemEvent-\">itemStateChanged</a>, <a href=\"../../acm/program/Program.html#keyPressed-java.awt.event.KeyEvent-\">keyPressed</a>, <a href=\"../../acm/program/Program.html#keyReleased-java.awt.event.KeyEvent-\">keyReleased</a>, <a href=\"../../acm/program/Program.html#keyTyped-java.awt.event.KeyEvent-\">keyTyped</a>, <a href=\"../../acm/program/Program.html#killMe--\">killMe</a>, <a href=\"../../acm/program/Program.html#loadConfiguration--\">loadConfiguration</a>, <a href=\"../../acm/program/Program.html#main-java.lang.String:A-\">main</a>, <a href=\"../../acm/program/Program.html#menuCanceled-javax.swing.event.MenuEvent-\">menuCanceled</a>, <a href=\"../../acm/program/Program.html#menuDeselected-javax.swing.event.MenuEvent-\">menuDeselected</a>, <a href=\"../../acm/program/Program.html#menuSelected-javax.swing.event.MenuEvent-\">menuSelected</a>, <a href=\"../../acm/program/Program.html#mouseClicked-java.awt.event.MouseEvent-\">mouseClicked</a>, <a href=\"../../acm/program/Program.html#mouseDragged-java.awt.event.MouseEvent-\">mouseDragged</a>, <a href=\"../../acm/program/Program.html#mouseEntered-java.awt.event.MouseEvent-\">mouseEntered</a>, <a href=\"../../acm/program/Program.html#mouseExited-java.awt.event.MouseEvent-\">mouseExited</a>, <a href=\"../../acm/program/Program.html#mouseMoved-java.awt.event.MouseEvent-\">mouseMoved</a>, <a href=\"../../acm/program/Program.html#mousePressed-java.awt.event.MouseEvent-\">mousePressed</a>, <a href=\"../../acm/program/Program.html#mouseReleased-java.awt.event.MouseEvent-\">mouseReleased</a>, <a href=\"../../acm/program/Program.html#openFile-java.lang.String-\">openFile</a>, <a href=\"../../acm/program/Program.html#openFile-java.lang.String-java.lang.String-\">openFile</a>, <a href=\"../../acm/program/Program.html#openFileFromDisk-java.lang.String-\">openFileFromDisk</a>, <a href=\"../../acm/program/Program.html#openFileFromDisk-java.lang.String-java.lang.String-\">openFileFromDisk</a>, <a href=\"../../acm/program/Program.html#openFileFromJAR-java.lang.String-\">openFileFromJAR</a>, <a href=\"../../acm/program/Program.html#openFileFromJAR-java.lang.String-java.lang.String-\">openFileFromJAR</a>, <a href=\"../../acm/program/Program.html#pack--\">pack</a>, <a href=\"../../acm/program/Program.html#pause-double-\">pause</a>, <a href=\"../../acm/program/Program.html#pauseTick--\">pauseTick</a>, <a href=\"../../acm/program/Program.html#popupMenuCanceled-javax.swing.event.PopupMenuEvent-\">popupMenuCanceled</a>, <a href=\"../../acm/program/Program.html#popupMenuWillBecomeInvisible-javax.swing.event.PopupMenuEvent-\">popupMenuWillBecomeInvisible</a>, <a href=\"../../acm/program/Program.html#popupMenuWillBecomeVisible-javax.swing.event.PopupMenuEvent-\">popupMenuWillBecomeVisible</a>, <a href=\"../../acm/program/Program.html#print-boolean-\">print</a>, <a href=\"../../acm/program/Program.html#print-boolean-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-char-\">print</a>, <a href=\"../../acm/program/Program.html#print-char-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-double-\">print</a>, <a href=\"../../acm/program/Program.html#print-double-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-float-\">print</a>, <a href=\"../../acm/program/Program.html#print-float-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-int-\">print</a>, <a href=\"../../acm/program/Program.html#print-int-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-long-\">print</a>, <a href=\"../../acm/program/Program.html#print-long-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-java.lang.Object-\">print</a>, <a href=\"../../acm/program/Program.html#print-java.lang.Object-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#println-boolean-\">println</a>, <a href=\"../../acm/program/Program.html#println-boolean-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-char-\">println</a>, <a href=\"../../acm/program/Program.html#println-char-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-double-\">println</a>, <a href=\"../../acm/program/Program.html#println-double-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-float-\">println</a>, <a href=\"../../acm/program/Program.html#println-float-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-int-\">println</a>, <a href=\"../../acm/program/Program.html#println-int-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-long-\">println</a>, <a href=\"../../acm/program/Program.html#println-long-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-java.lang.Object-\">println</a>, <a href=\"../../acm/program/Program.html#println-java.lang.Object-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#prompt-java.lang.String-\">prompt</a>, <a href=\"../../acm/program/Program.html#readBoolean--\">readBoolean</a>, <a href=\"../../acm/program/Program.html#readBoolean-java.lang.String-\">readBoolean</a>, <a href=\"../../acm/program/Program.html#readDouble--\">readDouble</a>, <a href=\"../../acm/program/Program.html#readDouble-double-double-\">readDouble</a>, <a href=\"../../acm/program/Program.html#readDouble-java.lang.String-\">readDouble</a>, <a href=\"../../acm/program/Program.html#readInt--\">readInt</a>, <a href=\"../../acm/program/Program.html#readInt-int-int-\">readInt</a>, <a href=\"../../acm/program/Program.html#readInt-java.lang.String-\">readInt</a>, <a href=\"../../acm/program/Program.html#readLine--\">readLine</a>, <a href=\"../../acm/program/Program.html#remove-java.awt.Component-\">remove</a>, <a href=\"../../acm/program/Program.html#remove-int-\">remove</a>, <a href=\"../../acm/program/Program.html#removeAll--\">removeAll</a>, <a href=\"../../acm/program/Program.html#removeFromRegion-java.awt.Component-java.lang.String-\">removeFromRegion</a>, <a href=\"../../acm/program/Program.html#removeMenuBar--\">removeMenuBar</a>, <a href=\"../../acm/program/Program.html#removeUpdate-javax.swing.event.DocumentEvent-\">removeUpdate</a>, <a href=\"../../acm/program/Program.html#repaint--\">repaint</a>, <a href=\"../../acm/program/Program.html#runHook--\">runHook</a>, <a href=\"../../acm/program/Program.html#saveConfiguration--\">saveConfiguration</a>, <a href=\"../../acm/program/Program.html#setAnimated-boolean-\">setAnimated</a>, <a href=\"../../acm/program/Program.html#setAnimationDelay-int-\">setAnimationDelay</a>, <a href=\"../../acm/program/Program.html#setAppletStub-java.applet.AppletStub-\">setAppletStub</a>, <a href=\"../../acm/program/Program.html#setBackground-java.awt.Color-\">setBackground</a>, <a href=\"../../acm/program/Program.html#setBottomY-double-\">setBottomY</a>, <a href=\"../../acm/program/Program.html#setCenterLocation-double-double-\">setCenterLocation</a>, <a href=\"../../acm/program/Program.html#setCenterX-double-\">setCenterX</a>, <a href=\"../../acm/program/Program.html#setCenterY-double-\">setCenterY</a>, <a href=\"../../acm/program/Program.html#setConsole-acm.io.IOConsole-\">setConsole</a>, <a href=\"../../acm/program/Program.html#setDialog-acm.io.IODialog-\">setDialog</a>, <a href=\"../../acm/program/Program.html#setExitOnClose-boolean-\">setExitOnClose</a>, <a href=\"../../acm/program/Program.html#setFramesPerSecond-int-\">setFramesPerSecond</a>, <a href=\"../../acm/program/Program.html#setHeight-double-\">setHeight</a>, <a href=\"../../acm/program/Program.html#setInputModel-acm.io.IOModel-\">setInputModel</a>, <a href=\"../../acm/program/Program.html#setInvisible-acm.graphics.GObject-boolean-\">setInvisible</a>, <a href=\"../../acm/program/Program.html#setJFrame-javax.swing.JFrame-\">setJFrame</a>, <a href=\"../../acm/program/Program.html#setJMenuBar-javax.swing.JMenuBar-\">setJMenuBar</a>, <a href=\"../../acm/program/Program.html#setLayout-java.awt.LayoutManager-\">setLayout</a>, <a href=\"../../acm/program/Program.html#setLocation-double-double-\">setLocation</a>, <a href=\"../../acm/program/Program.html#setLocation-acm.graphics.GPoint-\">setLocation</a>, <a href=\"../../acm/program/Program.html#setOutputColor-java.awt.Color-\">setOutputColor</a>, <a href=\"../../acm/program/Program.html#setOutputModel-acm.io.IOModel-\">setOutputModel</a>, <a href=\"../../acm/program/Program.html#setParameter-java.lang.String-java.lang.String-\">setParameter</a>, <a href=\"../../acm/program/Program.html#setParameterTable-java.util.Map-\">setParameterTable</a>, <a href=\"../../acm/program/Program.html#setPauseScaleFactor-double-\">setPauseScaleFactor</a>, <a href=\"../../acm/program/Program.html#setResizable-boolean-\">setResizable</a>, <a href=\"../../acm/program/Program.html#setRightX-double-\">setRightX</a>, <a href=\"../../acm/program/Program.html#setShowPixelGrid-boolean-\">setShowPixelGrid</a>, <a href=\"../../acm/program/Program.html#setShowPixelInfo-boolean-\">setShowPixelInfo</a>, <a href=\"../../acm/program/Program.html#setSize-double-double-\">setSize</a>, <a href=\"../../acm/program/Program.html#setStartupObject-java.lang.Object-\">setStartupObject</a>, <a href=\"../../acm/program/Program.html#setTitle-java.lang.String-\">setTitle</a>, <a href=\"../../acm/program/Program.html#setWidth-double-\">setWidth</a>, <a href=\"../../acm/program/Program.html#setX-double-\">setX</a>, <a href=\"../../acm/program/Program.html#setY-double-\">setY</a>, <a href=\"../../acm/program/Program.html#showErrorMessage-java.lang.String-\">showErrorMessage</a>, <a href=\"../../acm/program/Program.html#start--\">start</a>, <a href=\"../../acm/program/Program.html#start-java.lang.String:A-\">start</a>, <a href=\"../../acm/program/Program.html#startAnimation--\">startAnimation</a>, <a href=\"../../acm/program/Program.html#startHook--\">startHook</a>, <a href=\"../../acm/program/Program.html#startRun--\">startRun</a>, <a href=\"../../acm/program/Program.html#stateChanged-javax.swing.event.ChangeEvent-\">stateChanged</a>, <a href=\"../../acm/program/Program.html#stopAnimation--\">stopAnimation</a>, <a href=\"../../acm/program/Program.html#textValueChanged-java.awt.event.TextEvent-\">textValueChanged</a>, <a href=\"../../acm/program/Program.html#validate--\">validate</a>, <a href=\"../../acm/program/Program.html#valueChanged-javax.swing.event.ListSelectionEvent-\">valueChanged</a>, <a href=\"../../acm/program/Program.html#windowActivated-java.awt.event.WindowEvent-\">windowActivated</a>, <a href=\"../../acm/program/Program.html#windowClosed-java.awt.event.WindowEvent-\">windowClosed</a>, <a href=\"../../acm/program/Program.html#windowClosing-java.awt.event.WindowEvent-\">windowClosing</a>, <a href=\"../../acm/program/Program.html#windowDeactivated-java.awt.event.WindowEvent-\">windowDeactivated</a>, <a href=\"../../acm/program/Program.html#windowDeiconified-java.awt.event.WindowEvent-\">windowDeiconified</a>, <a href=\"../../acm/program/Program.html#windowGainedFocus-java.awt.event.WindowEvent-\">windowGainedFocus</a>, <a href=\"../../acm/program/Program.html#windowIconified-java.awt.event.WindowEvent-\">windowIconified</a>, <a href=\"../../acm/program/Program.html#windowLostFocus-java.awt.event.WindowEvent-\">windowLostFocus</a>, <a href=\"../../acm/program/Program.html#windowOpened-java.awt.event.WindowEvent-\">windowOpened</a>, <a href=\"../../acm/program/Program.html#windowStateChanged-java.awt.event.WindowEvent-\">windowStateChanged</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JApplet\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#createRootPane--\" title=\"class or interface in javax.swing\">createRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getAccessibleContext--\" title=\"class or interface in javax.swing\">getAccessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getContentPane--\" title=\"class or interface in javax.swing\">getContentPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getGlassPane--\" title=\"class or interface in javax.swing\">getGlassPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getGraphics--\" title=\"class or interface in javax.swing\">getGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getJMenuBar--\" title=\"class or interface in javax.swing\">getJMenuBar</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getLayeredPane--\" title=\"class or interface in javax.swing\">getLayeredPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getRootPane--\" title=\"class or interface in javax.swing\">getRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getTransferHandler--\" title=\"class or interface in javax.swing\">getTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#isRootPaneCheckingEnabled--\" title=\"class or interface in javax.swing\">isRootPaneCheckingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#paramString--\" title=\"class or interface in javax.swing\">paramString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#repaint-long-int-int-int-int-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setContentPane-java.awt.Container-\" title=\"class or interface in javax.swing\">setContentPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setGlassPane-java.awt.Component-\" title=\"class or interface in javax.swing\">setGlassPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setLayeredPane-javax.swing.JLayeredPane-\" title=\"class or interface in javax.swing\">setLayeredPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setRootPane-javax.swing.JRootPane-\" title=\"class or interface in javax.swing\">setRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setRootPaneCheckingEnabled-boolean-\" title=\"class or interface in javax.swing\">setRootPaneCheckingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setTransferHandler-javax.swing.TransferHandler-\" title=\"class or interface in javax.swing\">setTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#update-java.awt.Graphics-\" title=\"class or interface in javax.swing\">update</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.applet.Applet\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.applet.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">Applet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAppletContext--\" title=\"class or interface in java.applet\">getAppletContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAppletInfo--\" title=\"class or interface in java.applet\">getAppletInfo</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAudioClip-java.net.URL-\" title=\"class or interface in java.applet\">getAudioClip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAudioClip-java.net.URL-java.lang.String-\" title=\"class or interface in java.applet\">getAudioClip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getCodeBase--\" title=\"class or interface in java.applet\">getCodeBase</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getDocumentBase--\" title=\"class or interface in java.applet\">getDocumentBase</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getImage-java.net.URL-\" title=\"class or interface in java.applet\">getImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getImage-java.net.URL-java.lang.String-\" title=\"class or interface in java.applet\">getImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getLocale--\" title=\"class or interface in java.applet\">getLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getParameterInfo--\" title=\"class or interface in java.applet\">getParameterInfo</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#isActive--\" title=\"class or interface in java.applet\">isActive</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#isValidateRoot--\" title=\"class or interface in java.applet\">isValidateRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#newAudioClip-java.net.URL-\" title=\"class or interface in java.applet\">newAudioClip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#play-java.net.URL-\" title=\"class or interface in java.applet\">play</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#play-java.net.URL-java.lang.String-\" title=\"class or interface in java.applet\">play</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#resize-java.awt.Dimension-\" title=\"class or interface in java.applet\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#resize-int-int-\" title=\"class or interface in java.applet\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#setStub-java.applet.AppletStub-\" title=\"class or interface in java.applet\">setStub</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#showStatus-java.lang.String-\" title=\"class or interface in java.applet\">showStatus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#stop--\" title=\"class or interface in java.applet\">stop</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Panel\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\">Panel</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true#addNotify--\" title=\"class or interface in java.awt\">addNotify</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.lang.String-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">addContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#applyComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">applyComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#areFocusTraversalKeysSet-int-\" title=\"class or interface in java.awt\">areFocusTraversalKeysSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#countComponents--\" title=\"class or interface in java.awt\">countComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#deliverEvent-java.awt.Event-\" title=\"class or interface in java.awt\">deliverEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#doLayout--\" title=\"class or interface in java.awt\">doLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-int-int-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getAlignmentX--\" title=\"class or interface in java.awt\">getAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getAlignmentY--\" title=\"class or interface in java.awt\">getAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponent-int-\" title=\"class or interface in java.awt\">getComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-int-int-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentCount--\" title=\"class or interface in java.awt\">getComponentCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponents--\" title=\"class or interface in java.awt\">getComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentZOrder-java.awt.Component-\" title=\"class or interface in java.awt\">getComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getContainerListeners--\" title=\"class or interface in java.awt\">getContainerListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalKeys-int-\" title=\"class or interface in java.awt\">getFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalPolicy--\" title=\"class or interface in java.awt\">getFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getInsets--\" title=\"class or interface in java.awt\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getListeners-java.lang.Class-\" title=\"class or interface in java.awt\">getListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMaximumSize--\" title=\"class or interface in java.awt\">getMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMinimumSize--\" title=\"class or interface in java.awt\">getMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMousePosition-boolean-\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#insets--\" title=\"class or interface in java.awt\">insets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#invalidate--\" title=\"class or interface in java.awt\">invalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isAncestorOf-java.awt.Component-\" title=\"class or interface in java.awt\">isAncestorOf</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot--\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot-java.awt.Container-\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicyProvider--\" title=\"class or interface in java.awt\">isFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicySet--\" title=\"class or interface in java.awt\">isFocusTraversalPolicySet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#layout--\" title=\"class or interface in java.awt\">layout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintStream-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintWriter-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#locate-int-int-\" title=\"class or interface in java.awt\">locate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#minimumSize--\" title=\"class or interface in java.awt\">minimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paint-java.awt.Graphics-\" title=\"class or interface in java.awt\">paint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paintComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#preferredSize--\" title=\"class or interface in java.awt\">preferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#print-java.awt.Graphics-\" title=\"class or interface in java.awt\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#printComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">printComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processContainerEvent-java.awt.event.ContainerEvent-\" title=\"class or interface in java.awt\">processContainerEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">processEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">removeContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeNotify--\" title=\"class or interface in java.awt\">removeNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setComponentZOrder-java.awt.Component-int-\" title=\"class or interface in java.awt\">setComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusCycleRoot-boolean-\" title=\"class or interface in java.awt\">setFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalKeys-int-java.util.Set-\" title=\"class or interface in java.awt\">setFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicy-java.awt.FocusTraversalPolicy-\" title=\"class or interface in java.awt\">setFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicyProvider-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#transferFocusDownCycle--\" title=\"class or interface in java.awt\">transferFocusDownCycle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validateTree--\" title=\"class or interface in java.awt\">validateTree</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#action-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">action</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#add-java.awt.PopupMenu-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">addComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">addFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">addHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">addHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">addInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">addKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">addMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">addMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">addMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#bounds--\" title=\"class or interface in java.awt\">bounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#coalesceEvents-java.awt.AWTEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">coalesceEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-int-int-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-java.awt.Point-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-java.awt.image.ImageProducer-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-int-int-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-java.awt.ImageCapabilities-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disable--\" title=\"class or interface in java.awt\">disable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disableEvents-long-\" title=\"class or interface in java.awt\">disableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#dispatchEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">dispatchEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable--\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable-boolean-\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableEvents-long-\" title=\"class or interface in java.awt\">enableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableInputMethods-boolean-\" title=\"class or interface in java.awt\">enableInputMethods</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-boolean-boolean-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-byte-byte-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-char-char-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-double-double-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-float-float-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-int-int-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-long-long-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-short-short-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBackground--\" title=\"class or interface in java.awt\">getBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBaseline-int-int-\" title=\"class or interface in java.awt\">getBaseline</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBaselineResizeBehavior--\" title=\"class or interface in java.awt\">getBaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds--\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getColorModel--\" title=\"class or interface in java.awt\">getColorModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentListeners--\" title=\"class or interface in java.awt\">getComponentListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentOrientation--\" title=\"class or interface in java.awt\">getComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getCursor--\" title=\"class or interface in java.awt\">getCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getDropTarget--\" title=\"class or interface in java.awt\">getDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusCycleRootAncestor--\" title=\"class or interface in java.awt\">getFocusCycleRootAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusListeners--\" title=\"class or interface in java.awt\">getFocusListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusTraversalKeysEnabled--\" title=\"class or interface in java.awt\">getFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFontMetrics-java.awt.Font-\" title=\"class or interface in java.awt\">getFontMetrics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getForeground--\" title=\"class or interface in java.awt\">getForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getGraphicsConfiguration--\" title=\"class or interface in java.awt\">getGraphicsConfiguration</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyBoundsListeners--\" title=\"class or interface in java.awt\">getHierarchyBoundsListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyListeners--\" title=\"class or interface in java.awt\">getHierarchyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getIgnoreRepaint--\" title=\"class or interface in java.awt\">getIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputContext--\" title=\"class or interface in java.awt\">getInputContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodListeners--\" title=\"class or interface in java.awt\">getInputMethodListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodRequests--\" title=\"class or interface in java.awt\">getInputMethodRequests</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getKeyListeners--\" title=\"class or interface in java.awt\">getKeyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation--\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation-java.awt.Point-\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocationOnScreen--\" title=\"class or interface in java.awt\">getLocationOnScreen</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseListeners--\" title=\"class or interface in java.awt\">getMouseListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseMotionListeners--\" title=\"class or interface in java.awt\">getMouseMotionListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMousePosition--\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseWheelListeners--\" title=\"class or interface in java.awt\">getMouseWheelListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getName--\" title=\"class or interface in java.awt\">getName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getParent--\" title=\"class or interface in java.awt\">getParent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPeer--\" title=\"class or interface in java.awt\">getPeer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners--\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners-java.lang.String-\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize--\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getToolkit--\" title=\"class or interface in java.awt\">getToolkit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getTreeLock--\" title=\"class or interface in java.awt\">getTreeLock</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getX--\" title=\"class or interface in java.awt\">getX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getY--\" title=\"class or interface in java.awt\">getY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#gotFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">gotFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#handleEvent-java.awt.Event-\" title=\"class or interface in java.awt\">handleEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hasFocus--\" title=\"class or interface in java.awt\">hasFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hide--\" title=\"class or interface in java.awt\">hide</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#imageUpdate-java.awt.Image-int-int-int-int-int-\" title=\"class or interface in java.awt\">imageUpdate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#inside-int-int-\" title=\"class or interface in java.awt\">inside</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isBackgroundSet--\" title=\"class or interface in java.awt\">isBackgroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isCursorSet--\" title=\"class or interface in java.awt\">isCursorSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDisplayable--\" title=\"class or interface in java.awt\">isDisplayable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDoubleBuffered--\" title=\"class or interface in java.awt\">isDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isEnabled--\" title=\"class or interface in java.awt\">isEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusable--\" title=\"class or interface in java.awt\">isFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusOwner--\" title=\"class or interface in java.awt\">isFocusOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusTraversable--\" title=\"class or interface in java.awt\">isFocusTraversable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFontSet--\" title=\"class or interface in java.awt\">isFontSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isForegroundSet--\" title=\"class or interface in java.awt\">isForegroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isLightweight--\" title=\"class or interface in java.awt\">isLightweight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMaximumSizeSet--\" title=\"class or interface in java.awt\">isMaximumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMinimumSizeSet--\" title=\"class or interface in java.awt\">isMinimumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isOpaque--\" title=\"class or interface in java.awt\">isOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isPreferredSizeSet--\" title=\"class or interface in java.awt\">isPreferredSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isShowing--\" title=\"class or interface in java.awt\">isShowing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isValid--\" title=\"class or interface in java.awt\">isValid</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isVisible--\" title=\"class or interface in java.awt\">isVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyDown-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyUp-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list--\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintStream-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintWriter-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#location--\" title=\"class or interface in java.awt\">location</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#lostFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">lostFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDown-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDrag-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDrag</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseEnter-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseEnter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseExit-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseExit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseMove-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseMove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseUp-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#move-int-int-\" title=\"class or interface in java.awt\">move</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#nextFocus--\" title=\"class or interface in java.awt\">nextFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#paintAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#postEvent-java.awt.Event-\" title=\"class or interface in java.awt\">postEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#printAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">printAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processComponentEvent-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt\">processComponentEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processFocusEvent-java.awt.event.FocusEvent-\" title=\"class or interface in java.awt\">processFocusEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyBoundsEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyBoundsEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processInputMethodEvent-java.awt.event.InputMethodEvent-\" title=\"class or interface in java.awt\">processInputMethodEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in java.awt\">processKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseEvent-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt\">processMouseEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseMotionEvent-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt\">processMouseMotionEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseWheelEvent-java.awt.event.MouseWheelEvent-\" title=\"class or interface in java.awt\">processMouseWheelEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#remove-java.awt.MenuComponent-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">removeComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">removeFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">removeHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">removeHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">removeInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">removeKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">removeMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">removeMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">removeMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-int-int-int-int-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-long-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocus--\" title=\"class or interface in java.awt\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocus-boolean-\" title=\"class or interface in java.awt\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocusInWindow--\" title=\"class or interface in java.awt\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocusInWindow-boolean-\" title=\"class or interface in java.awt\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#reshape-int-int-int-int-\" title=\"class or interface in java.awt\">reshape</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#revalidate--\" title=\"class or interface in java.awt\">revalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-int-int-int-int-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">setComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setCursor-java.awt.Cursor-\" title=\"class or interface in java.awt\">setCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setDropTarget-java.awt.dnd.DropTarget-\" title=\"class or interface in java.awt\">setDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setEnabled-boolean-\" title=\"class or interface in java.awt\">setEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusable-boolean-\" title=\"class or interface in java.awt\">setFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusTraversalKeysEnabled-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setForeground-java.awt.Color-\" title=\"class or interface in java.awt\">setForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setIgnoreRepaint-boolean-\" title=\"class or interface in java.awt\">setIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocale-java.util.Locale-\" title=\"class or interface in java.awt\">setLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-int-int-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-java.awt.Point-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setMaximumSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setMinimumSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setName-java.lang.String-\" title=\"class or interface in java.awt\">setName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setPreferredSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-int-int-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setVisible-boolean-\" title=\"class or interface in java.awt\">setVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show--\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show-boolean-\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#size--\" title=\"class or interface in java.awt\">size</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#toString--\" title=\"class or interface in java.awt\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocus--\" title=\"class or interface in java.awt\">transferFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusBackward--\" title=\"class or interface in java.awt\">transferFocusBackward</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusUpCycle--\" title=\"class or interface in java.awt\">transferFocusUpCycle</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"ConsoleProgram--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>ConsoleProgram</h4>\n<pre>public&nbsp;ConsoleProgram()</pre>\n<div class=\"block\">Creates a new console program.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>ConsoleProgram program = new ConsoleProgram();</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"run--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>run</h4>\n<pre>public&nbsp;void&nbsp;run()</pre>\n<div class=\"block\">Specifies the code to be executed as the program runs.\n The <code>run</code> method is required for applications that have\n a thread of control that runs even in the absence of user actions,\n such as a program that uses console interation or that involves\n animation.  GUI-based programs that operate by setting up an initial\n configuration and then wait for user events usually do not specify a\n <code>run</code> method and supply a new definition for <code>init</code>\n instead.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#run--\">run</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true#run--\" title=\"class or interface in java.lang\">run</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/Program.html#run--\">run</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"init--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>init</h4>\n<pre>public&nbsp;void&nbsp;init()</pre>\n<div class=\"block\">Specifies the code to be executed as startup time before the\n <code>run</code> method is called.  Subclasses can override this\n method to perform any initialization code that would ordinarily\n be included in an applet <code>init</code> method.  In general,\n subclasses will override <code>init</code> in GUI-based programs\n where the program simply sets up an initial state and then waits\n for events from the user.  The <code>run</code> method is required\n for applications in which there needs to be some control thread\n while the program runs, as in a typical animation.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#init--\">init</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/Program.html#init--\">init</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>program.init();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"createConsole--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createConsole</h4>\n<pre>protected&nbsp;<a href=\"../../acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a>&nbsp;createConsole()</pre>\n<div class=\"block\">Creates the console used by the <code>ConsoleProgram</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/Program.html#createConsole--\">createConsole</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The console to be used by the program</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>IOConsole console = program.createConsole();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"overrideInput-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>overrideInput</h4>\n<pre>public&nbsp;void&nbsp;overrideInput(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;inputFilename)</pre>\n<div class=\"block\">Signals the ConsoleProgram to use the input profile read from the file\n with inputFilename, rather than prompt the user for input.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>inputFilename</code> - File to draw the input from.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"overrideInput-java.io.InputStream-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>overrideInput</h4>\n<pre>public&nbsp;void&nbsp;overrideInput(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;stream)</pre>\n<div class=\"block\">Signals the ConsoleProgram to use the input profile read from the given stream,\n rather than prompt the user for input.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>inputFilename</code> - File to draw the input from.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"overrideInput-java.io.Reader-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>overrideInput</h4>\n<pre>public&nbsp;void&nbsp;overrideInput(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Reader.html?is-external=true\" title=\"class or interface in java.io\">Reader</a>&nbsp;reader)</pre>\n<div class=\"block\">Signals the ConsoleProgram to use the input profile read from the given reader,\n rather than prompt the user for input.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>inputFilename</code> - File to draw the input from.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"captureOutput--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>captureOutput</h4>\n<pre>public&nbsp;void&nbsp;captureOutput()</pre>\n</li>\n</ul>\n<a name=\"captureOutput-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>captureOutput</h4>\n<pre>public&nbsp;void&nbsp;captureOutput(boolean&nbsp;capture)</pre>\n</li>\n</ul>\n<a name=\"getCapturedOutput--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getCapturedOutput</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getCapturedOutput()</pre>\n</li>\n</ul>\n<a name=\"echoComments--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>echoComments</h4>\n<pre>public&nbsp;void&nbsp;echoComments()</pre>\n<div class=\"block\">Print all echoed comments from the input override file onscreen.</div>\n</li>\n</ul>\n<a name=\"getComments--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getComments</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getComments()</pre>\n<div class=\"block\">Print all echoed comments from the input override file onscreen.</div>\n</li>\n</ul>\n<a name=\"print-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public&nbsp;void&nbsp;print(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../acm/program/Program.html#print-java.lang.String-\">Program</a></code></span></div>\n<div class=\"block\">Displays the argument value on the console, leaving the cursor at the end of\n the output.  The <code>print</code> method is overloaded so that\n <code>value</code> can be of any type.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>print</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#print-java.lang.String-\">print</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/Program.html#print-java.lang.String-\">print</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>value</code> - The value to be displayed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"print-java.lang.String-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public&nbsp;void&nbsp;print(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value,\n                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../acm/program/Program.html#print-java.lang.String-java.awt.Color-\">Program</a></code></span></div>\n<div class=\"block\">Prints the given string in the given color.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/Program.html#print-java.lang.String-java.awt.Color-\">print</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>value</code> - The string to print.</dd>\n<dd><code>color</code> - The color in which to draw the text. If null, draws in black.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"printf-java.lang.String-java.lang.Object...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>printf</h4>\n<pre>public&nbsp;void&nbsp;printf(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;format,\n                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>...&nbsp;args)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../acm/program/Program.html#printf-java.lang.String-java.lang.Object...-\">Program</a></code></span></div>\n<div class=\"block\">Writes a formatted string to this output stream using the specified format string and arguments.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#printf-java.lang.String-java.lang.Object...-\">printf</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/Program.html#printf-java.lang.String-java.lang.Object...-\">printf</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>format</code> - A format string as described in Java's Format string syntax.</dd>\n<dd><code>args</code> - Arguments referenced by the format specifiers in the format string. If there are more arguments than format specifiers, the extra arguments are ignored. The number of arguments is variable and may be zero. The maximum number of arguments is limited by the maximum dimension of a Java array as defined by The Java™ Virtual Machine Specification. The behavior on a null argument depends on the conversion.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"println--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public&nbsp;void&nbsp;println()</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../acm/program/Program.html#println--\">Program</a></code></span></div>\n<div class=\"block\">Advances the console cursor to the beginning of the next line.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>println</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#println--\">println</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/Program.html#println--\">println</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"println-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public&nbsp;void&nbsp;println(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../acm/program/Program.html#println-java.lang.String-\">Program</a></code></span></div>\n<div class=\"block\">Displays the argument value on the console and then advances the cursor\n to the beginning of the next line.  The <code>println</code> method is\n overloaded so that <code>value</code> can be of any type.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>println</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#println-java.lang.String-\">println</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/Program.html#println-java.lang.String-\">println</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>value</code> - The value to be displayed</dd>\n</dl>\n</li>\n</ul>\n<a name=\"println-java.lang.String-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public&nbsp;void&nbsp;println(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value,\n                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../acm/program/Program.html#println-java.lang.String-java.awt.Color-\">Program</a></code></span></div>\n<div class=\"block\">Prints the given string in the given color and then advances the cursor to the beginning of the next line.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/Program.html#println-java.lang.String-java.awt.Color-\">println</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>value</code> - The string to print.</dd>\n<dd><code>color</code> - The color in which to draw the text. If null, draws in black.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"readInt-java.lang.String-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readInt</h4>\n<pre>public&nbsp;int&nbsp;readInt(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt,\n                   int&nbsp;min,\n                   int&nbsp;max)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../acm/program/Program.html#readInt-java.lang.String-int-int-\">Program</a></code></span></div>\n<div class=\"block\">Prompts the user to enter an integer, which is then returned as the value\n of this method.  The value must be within the inclusive range between\n <code>low</code> and <code>high</code>.  If the user types a value that\n is not a legal integer or is outside the specified range, the method\n ordinarily offers the user a chance to reenter the data,\n although this behavior can be changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readInt</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/Program.html#readInt-java.lang.String-int-int-\">readInt</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>prompt</code> - The prompt string to display to the user</dd>\n<dd><code>min</code> - The lowest value in the permitted range</dd>\n<dd><code>max</code> - The highest value in the permitted range</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a decimal integer</dd>\n</dl>\n</li>\n</ul>\n<a name=\"readDouble-java.lang.String-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readDouble</h4>\n<pre>public&nbsp;double&nbsp;readDouble(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt,\n                         double&nbsp;min,\n                         double&nbsp;max)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../acm/program/Program.html#readDouble-java.lang.String-double-double-\">Program</a></code></span></div>\n<div class=\"block\">Prompts the user to enter an double-precision number, which is then returned\n as the value of this method.  The value must be within the inclusive range\n between <code>low</code> and <code>high</code>.  If the user types a value\n that is not a legal number, the method ordinarily offers the user a chance\n to reenter the data,  although this behavior can be changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readDouble</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/Program.html#readDouble-java.lang.String-double-double-\">readDouble</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>prompt</code> - The prompt string to display to the user</dd>\n<dd><code>min</code> - The lowest value in the permitted range</dd>\n<dd><code>max</code> - The highest value in the permitted range</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a <code>double</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"readBoolean-java.lang.String-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readBoolean</h4>\n<pre>public&nbsp;boolean&nbsp;readBoolean(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt,\n                           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;y,\n                           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;n)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../acm/program/Program.html#readBoolean-java.lang.String-java.lang.String-java.lang.String-\">Program</a></code></span></div>\n<div class=\"block\">Prompts the user to enter a boolean value, which is matched against the\n labels provided.  If the user enters a value that is not one of the two\n choices, <code>readBoolean</code> ordinarily offers the user a chance\n to reenter the data, although this behavior can be changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readBoolean</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/Program.html#readBoolean-java.lang.String-java.lang.String-java.lang.String-\">readBoolean</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>prompt</code> - The prompt string to display to the user</dd>\n<dd><code>y</code> - The string used to indicate <code>true</code></dd>\n<dd><code>n</code> - The string used to indicate <code>false</code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a boolean value</dd>\n</dl>\n</li>\n</ul>\n<a name=\"readLine-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>readLine</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;readLine(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../acm/program/Program.html#readLine-java.lang.String-\">Program</a></code></span></div>\n<div class=\"block\">Prompts the user for a line of input.  The end-of-line characters\n that terminate the input are not included in the returned string.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readLine</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/Program.html#readLine-java.lang.String-\">readLine</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>prompt</code> - The prompt string to display to the user</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The next line of input as a <code>String</code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/program/CommandLineProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/program/DialogProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/program/ConsoleProgram.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ConsoleProgram.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JApplet\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.acm.program.AbstractConsoleProgram\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/program/DialogProgram.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:06 PDT 2017 -->\n<title>DialogProgram</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"DialogProgram\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/program/ConsoleProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/program/GraphicsProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/program/DialogProgram.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"DialogProgram.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JApplet\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.acm.program.Program\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.program</div>\n<h2 title=\"Class DialogProgram\" class=\"title\">Class DialogProgram</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Component</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Container</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Panel</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">java.applet.Applet</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JApplet</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">acm.program.Program</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.program.DialogProgram</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd>acm.io.IOModel, <a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/AdjustmentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">AdjustmentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ContainerListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ItemListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ItemListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseWheelListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/TextListener.html?is-external=true\" title=\"class or interface in java.awt.event\">TextListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowFocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowStateListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowStateListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListDataListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListDataListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListSelectionListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListSelectionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/MouseInputListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">MouseInputListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/PopupMenuListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">PopupMenuListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/RootPaneContainer.html?is-external=true\" title=\"class or interface in javax.swing\">RootPaneContainer</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public abstract class <span class=\"typeNameLabel\">DialogProgram</span>\nextends <a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></pre>\n<div class=\"block\">This class is a standard subclass of <code><a href=\"Program.html\">Program</a></code>\n that takes its input from a <code>IODialog</code> object.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#acm.program.DialogProgram\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JApplet\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.AccessibleJApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet.AccessibleJApplet</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.applet.Applet\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.applet.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">Applet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.AccessibleApplet.html?is-external=true\" title=\"class or interface in java.applet\">Applet.AccessibleApplet</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Panel\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\">Panel</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.AccessibleAWTPanel.html?is-external=true\" title=\"class or interface in java.awt\">Panel.AccessibleAWTPanel</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.AccessibleAWTContainer.html?is-external=true\" title=\"class or interface in java.awt\">Container.AccessibleAWTContainer</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.AccessibleAWTComponent.html?is-external=true\" title=\"class or interface in java.awt\">Component.AccessibleAWTComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BaselineResizeBehavior.html?is-external=true\" title=\"class or interface in java.awt\">Component.BaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BltBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.BltBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.FlipBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.FlipBufferStrategy</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.program.Program\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;acm.program.<a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></h3>\n<code><a href=\"../../acm/program/Program.html#CONFIG_FILE_NAME\">CONFIG_FILE_NAME</a>, <a href=\"../../acm/program/Program.html#invisibleObjects\">invisibleObjects</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.JApplet\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#accessibleContext\" title=\"class or interface in javax.swing\">accessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#rootPane\" title=\"class or interface in javax.swing\">rootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#rootPaneCheckingEnabled\" title=\"class or interface in javax.swing\">rootPaneCheckingEnabled</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#BOTTOM_ALIGNMENT\" title=\"class or interface in java.awt\">BOTTOM_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#CENTER_ALIGNMENT\" title=\"class or interface in java.awt\">CENTER_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#LEFT_ALIGNMENT\" title=\"class or interface in java.awt\">LEFT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#RIGHT_ALIGNMENT\" title=\"class or interface in java.awt\">RIGHT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#TOP_ALIGNMENT\" title=\"class or interface in java.awt\">TOP_ALIGNMENT</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.program.ProgramInterface\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;acm.program.<a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></h3>\n<code><a href=\"../../acm/program/ProgramInterface.html#CENTER\">CENTER</a>, <a href=\"../../acm/program/ProgramInterface.html#EAST\">EAST</a>, <a href=\"../../acm/program/ProgramInterface.html#NORTH\">NORTH</a>, <a href=\"../../acm/program/ProgramInterface.html#SOUTH\">SOUTH</a>, <a href=\"../../acm/program/ProgramInterface.html#WEST\">WEST</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.image.ImageObserver\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ABORT\" title=\"class or interface in java.awt.image\">ABORT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ALLBITS\" title=\"class or interface in java.awt.image\">ALLBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ERROR\" title=\"class or interface in java.awt.image\">ERROR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#FRAMEBITS\" title=\"class or interface in java.awt.image\">FRAMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#HEIGHT\" title=\"class or interface in java.awt.image\">HEIGHT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#PROPERTIES\" title=\"class or interface in java.awt.image\">PROPERTIES</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#SOMEBITS\" title=\"class or interface in java.awt.image\">SOMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#WIDTH\" title=\"class or interface in java.awt.image\">WIDTH</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/DialogProgram.html#DialogProgram--\">DialogProgram</a></span>()</code>\n<div class=\"block\">Creates a new dialog program.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/DialogProgram.html#init--\">init</a></span>()</code>\n<div class=\"block\">Specifies the code to be executed as startup time before the\n <code>run</code> method is called.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/DialogProgram.html#run--\">run</a></span>()</code>\n<div class=\"block\">Specifies the code to be executed as the program runs.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.program.Program\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.program.<a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></h3>\n<code><a href=\"../../acm/program/Program.html#actionPerformed-java.awt.event.ActionEvent-\">actionPerformed</a>, <a href=\"../../acm/program/Program.html#add-java.awt.Component-java.lang.String-java.lang.Object-\">add</a>, <a href=\"../../acm/program/Program.html#addActionListeners--\">addActionListeners</a>, <a href=\"../../acm/program/Program.html#addActionListeners-java.awt.event.ActionListener-\">addActionListeners</a>, <a href=\"../../acm/program/Program.html#addActionListenersToButtonsOnly--\">addActionListenersToButtonsOnly</a>, <a href=\"../../acm/program/Program.html#addAllActionListeners--\">addAllActionListeners</a>, <a href=\"../../acm/program/Program.html#addExitHook-java.lang.Object-\">addExitHook</a>, <a href=\"../../acm/program/Program.html#addImpl-java.awt.Component-java.lang.Object-int-\">addImpl</a>, <a href=\"../../acm/program/Program.html#adjustmentValueChanged-java.awt.event.AdjustmentEvent-\">adjustmentValueChanged</a>, <a href=\"../../acm/program/Program.html#alert-java.lang.Object-\">alert</a>, <a href=\"../../acm/program/Program.html#alert-java.lang.String-\">alert</a>, <a href=\"../../acm/program/Program.html#animation--\">animation</a>, <a href=\"../../acm/program/Program.html#center--\">center</a>, <a href=\"../../acm/program/Program.html#changedUpdate-javax.swing.event.DocumentEvent-\">changedUpdate</a>, <a href=\"../../acm/program/Program.html#checkCompilerFlags--\">checkCompilerFlags</a>, <a href=\"../../acm/program/Program.html#checkKill--\">checkKill</a>, <a href=\"../../acm/program/Program.html#checkStartupSettings--\">checkStartupSettings</a>, <a href=\"../../acm/program/Program.html#componentAdded-java.awt.event.ContainerEvent-\">componentAdded</a>, <a href=\"../../acm/program/Program.html#componentHidden-java.awt.event.ComponentEvent-\">componentHidden</a>, <a href=\"../../acm/program/Program.html#componentMoved-java.awt.event.ComponentEvent-\">componentMoved</a>, <a href=\"../../acm/program/Program.html#componentRemoved-java.awt.event.ContainerEvent-\">componentRemoved</a>, <a href=\"../../acm/program/Program.html#componentResized-java.awt.event.ComponentEvent-\">componentResized</a>, <a href=\"../../acm/program/Program.html#componentShown-java.awt.event.ComponentEvent-\">componentShown</a>, <a href=\"../../acm/program/Program.html#confirm-java.lang.String-\">confirm</a>, <a href=\"../../acm/program/Program.html#contentsChanged-javax.swing.event.ListDataEvent-\">contentsChanged</a>, <a href=\"../../acm/program/Program.html#createConsole--\">createConsole</a>, <a href=\"../../acm/program/Program.html#createDialogIO--\">createDialogIO</a>, <a href=\"../../acm/program/Program.html#createMenuBar--\">createMenuBar</a>, <a href=\"../../acm/program/Program.html#createParameterTable-java.lang.String:A-\">createParameterTable</a>, <a href=\"../../acm/program/Program.html#createProgramFrame--\">createProgramFrame</a>, <a href=\"../../acm/program/Program.html#destroy--\">destroy</a>, <a href=\"../../acm/program/Program.html#endHook--\">endHook</a>, <a href=\"../../acm/program/Program.html#error-java.lang.Exception-\">error</a>, <a href=\"../../acm/program/Program.html#error-java.lang.Exception-java.lang.String-\">error</a>, <a href=\"../../acm/program/Program.html#error-java.lang.String-\">error</a>, <a href=\"../../acm/program/Program.html#exit--\">exit</a>, <a href=\"../../acm/program/Program.html#fileExists-java.lang.String-\">fileExists</a>, <a href=\"../../acm/program/Program.html#fileExists-java.lang.String-java.lang.String-\">fileExists</a>, <a href=\"../../acm/program/Program.html#fileExistsInsideJAR-java.lang.String-\">fileExistsInsideJAR</a>, <a href=\"../../acm/program/Program.html#fileExistsInsideJAR-java.lang.String-java.lang.String-\">fileExistsInsideJAR</a>, <a href=\"../../acm/program/Program.html#fileExistsOnDisk-java.lang.String-\">fileExistsOnDisk</a>, <a href=\"../../acm/program/Program.html#fileExistsOnDisk-java.lang.String-java.lang.String-\">fileExistsOnDisk</a>, <a href=\"../../acm/program/Program.html#fileSize-java.lang.String-\">fileSize</a>, <a href=\"../../acm/program/Program.html#fileSize-java.lang.String-java.lang.String-\">fileSize</a>, <a href=\"../../acm/program/Program.html#focusGained-java.awt.event.FocusEvent-\">focusGained</a>, <a href=\"../../acm/program/Program.html#focusLost-java.awt.event.FocusEvent-\">focusLost</a>, <a href=\"../../acm/program/Program.html#getAnimationDelay--\">getAnimationDelay</a>, <a href=\"../../acm/program/Program.html#getAppletStub--\">getAppletStub</a>, <a href=\"../../acm/program/Program.html#getArgumentArray--\">getArgumentArray</a>, <a href=\"../../acm/program/Program.html#getBoolean--\">getBoolean</a>, <a href=\"../../acm/program/Program.html#getBoolean-java.lang.String-\">getBoolean</a>, <a href=\"../../acm/program/Program.html#getBoolean-java.lang.String-java.lang.String-java.lang.String-\">getBoolean</a>, <a href=\"../../acm/program/Program.html#getBorder-java.lang.String-\">getBorder</a>, <a href=\"../../acm/program/Program.html#getBottomY--\">getBottomY</a>, <a href=\"../../acm/program/Program.html#getCenterLocation--\">getCenterLocation</a>, <a href=\"../../acm/program/Program.html#getCenterX--\">getCenterX</a>, <a href=\"../../acm/program/Program.html#getCenterY--\">getCenterY</a>, <a href=\"../../acm/program/Program.html#getCentralRegionSize--\">getCentralRegionSize</a>, <a href=\"../../acm/program/Program.html#getConsole--\">getConsole</a>, <a href=\"../../acm/program/Program.html#getDialog--\">getDialog</a>, <a href=\"../../acm/program/Program.html#getDouble--\">getDouble</a>, <a href=\"../../acm/program/Program.html#getDouble-double-double-\">getDouble</a>, <a href=\"../../acm/program/Program.html#getDouble-java.lang.String-\">getDouble</a>, <a href=\"../../acm/program/Program.html#getDouble-java.lang.String-double-double-\">getDouble</a>, <a href=\"../../acm/program/Program.html#getHeight--\">getHeight</a>, <a href=\"../../acm/program/Program.html#getInputModel--\">getInputModel</a>, <a href=\"../../acm/program/Program.html#getInteger--\">getInteger</a>, <a href=\"../../acm/program/Program.html#getInteger-int-int-\">getInteger</a>, <a href=\"../../acm/program/Program.html#getInteger-java.lang.String-\">getInteger</a>, <a href=\"../../acm/program/Program.html#getInteger-java.lang.String-int-int-\">getInteger</a>, <a href=\"../../acm/program/Program.html#getJFrame--\">getJFrame</a>, <a href=\"../../acm/program/Program.html#getLayout--\">getLayout</a>, <a href=\"../../acm/program/Program.html#getLine--\">getLine</a>, <a href=\"../../acm/program/Program.html#getLine-java.lang.String-\">getLine</a>, <a href=\"../../acm/program/Program.html#getMainThread--\">getMainThread</a>, <a href=\"../../acm/program/Program.html#getMenuBar--\">getMenuBar</a>, <a href=\"../../acm/program/Program.html#getOutputColor--\">getOutputColor</a>, <a href=\"../../acm/program/Program.html#getOutputModel--\">getOutputModel</a>, <a href=\"../../acm/program/Program.html#getParameter-java.lang.String-\">getParameter</a>, <a href=\"../../acm/program/Program.html#getParameterTable--\">getParameterTable</a>, <a href=\"../../acm/program/Program.html#getPreferredSize--\">getPreferredSize</a>, <a href=\"../../acm/program/Program.html#getReader--\">getReader</a>, <a href=\"../../acm/program/Program.html#getReal--\">getReal</a>, <a href=\"../../acm/program/Program.html#getReal-double-double-\">getReal</a>, <a href=\"../../acm/program/Program.html#getReal-java.lang.String-\">getReal</a>, <a href=\"../../acm/program/Program.html#getReal-java.lang.String-double-double-\">getReal</a>, <a href=\"../../acm/program/Program.html#getRegionPanel-java.lang.String-\">getRegionPanel</a>, <a href=\"../../acm/program/Program.html#getRightX--\">getRightX</a>, <a href=\"../../acm/program/Program.html#getScreenHeight--\">getScreenHeight</a>, <a href=\"../../acm/program/Program.html#getScreenSize--\">getScreenSize</a>, <a href=\"../../acm/program/Program.html#getScreenWidth--\">getScreenWidth</a>, <a href=\"../../acm/program/Program.html#getStartupObject--\">getStartupObject</a>, <a href=\"../../acm/program/Program.html#getTitle--\">getTitle</a>, <a href=\"../../acm/program/Program.html#getWidth--\">getWidth</a>, <a href=\"../../acm/program/Program.html#getWindow--\">getWindow</a>, <a href=\"../../acm/program/Program.html#getWriter--\">getWriter</a>, <a href=\"../../acm/program/Program.html#getYesOrNo-java.lang.String-\">getYesOrNo</a>, <a href=\"../../acm/program/Program.html#hasConfiguration--\">hasConfiguration</a>, <a href=\"../../acm/program/Program.html#insertUpdate-javax.swing.event.DocumentEvent-\">insertUpdate</a>, <a href=\"../../acm/program/Program.html#intervalAdded-javax.swing.event.ListDataEvent-\">intervalAdded</a>, <a href=\"../../acm/program/Program.html#intervalRemoved-javax.swing.event.ListDataEvent-\">intervalRemoved</a>, <a href=\"../../acm/program/Program.html#isAnimated--\">isAnimated</a>, <a href=\"../../acm/program/Program.html#isApplet--\">isApplet</a>, <a href=\"../../acm/program/Program.html#isAppletMode--\">isAppletMode</a>, <a href=\"../../acm/program/Program.html#isExitOnClose--\">isExitOnClose</a>, <a href=\"../../acm/program/Program.html#isInitialized--\">isInitialized</a>, <a href=\"../../acm/program/Program.html#isStarted--\">isStarted</a>, <a href=\"../../acm/program/Program.html#itemStateChanged-java.awt.event.ItemEvent-\">itemStateChanged</a>, <a href=\"../../acm/program/Program.html#keyPressed-java.awt.event.KeyEvent-\">keyPressed</a>, <a href=\"../../acm/program/Program.html#keyReleased-java.awt.event.KeyEvent-\">keyReleased</a>, <a href=\"../../acm/program/Program.html#keyTyped-java.awt.event.KeyEvent-\">keyTyped</a>, <a href=\"../../acm/program/Program.html#killMe--\">killMe</a>, <a href=\"../../acm/program/Program.html#loadConfiguration--\">loadConfiguration</a>, <a href=\"../../acm/program/Program.html#loadConfiguration-java.util.Properties-\">loadConfiguration</a>, <a href=\"../../acm/program/Program.html#main-java.lang.String:A-\">main</a>, <a href=\"../../acm/program/Program.html#menuAction-java.awt.event.ActionEvent-\">menuAction</a>, <a href=\"../../acm/program/Program.html#menuCanceled-javax.swing.event.MenuEvent-\">menuCanceled</a>, <a href=\"../../acm/program/Program.html#menuDeselected-javax.swing.event.MenuEvent-\">menuDeselected</a>, <a href=\"../../acm/program/Program.html#menuSelected-javax.swing.event.MenuEvent-\">menuSelected</a>, <a href=\"../../acm/program/Program.html#mouseClicked-java.awt.event.MouseEvent-\">mouseClicked</a>, <a href=\"../../acm/program/Program.html#mouseDragged-java.awt.event.MouseEvent-\">mouseDragged</a>, <a href=\"../../acm/program/Program.html#mouseEntered-java.awt.event.MouseEvent-\">mouseEntered</a>, <a href=\"../../acm/program/Program.html#mouseExited-java.awt.event.MouseEvent-\">mouseExited</a>, <a href=\"../../acm/program/Program.html#mouseMoved-java.awt.event.MouseEvent-\">mouseMoved</a>, <a href=\"../../acm/program/Program.html#mousePressed-java.awt.event.MouseEvent-\">mousePressed</a>, <a href=\"../../acm/program/Program.html#mouseReleased-java.awt.event.MouseEvent-\">mouseReleased</a>, <a href=\"../../acm/program/Program.html#mouseWheelMoved-java.awt.event.MouseWheelEvent-\">mouseWheelMoved</a>, <a href=\"../../acm/program/Program.html#openFile-java.lang.String-\">openFile</a>, <a href=\"../../acm/program/Program.html#openFile-java.lang.String-java.lang.String-\">openFile</a>, <a href=\"../../acm/program/Program.html#openFileFromDisk-java.lang.String-\">openFileFromDisk</a>, <a href=\"../../acm/program/Program.html#openFileFromDisk-java.lang.String-java.lang.String-\">openFileFromDisk</a>, <a href=\"../../acm/program/Program.html#openFileFromJAR-java.lang.String-\">openFileFromJAR</a>, <a href=\"../../acm/program/Program.html#openFileFromJAR-java.lang.String-java.lang.String-\">openFileFromJAR</a>, <a href=\"../../acm/program/Program.html#pack--\">pack</a>, <a href=\"../../acm/program/Program.html#pause-double-\">pause</a>, <a href=\"../../acm/program/Program.html#pauseTick--\">pauseTick</a>, <a href=\"../../acm/program/Program.html#popupMenuCanceled-javax.swing.event.PopupMenuEvent-\">popupMenuCanceled</a>, <a href=\"../../acm/program/Program.html#popupMenuWillBecomeInvisible-javax.swing.event.PopupMenuEvent-\">popupMenuWillBecomeInvisible</a>, <a href=\"../../acm/program/Program.html#popupMenuWillBecomeVisible-javax.swing.event.PopupMenuEvent-\">popupMenuWillBecomeVisible</a>, <a href=\"../../acm/program/Program.html#print-boolean-\">print</a>, <a href=\"../../acm/program/Program.html#print-boolean-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-char-\">print</a>, <a href=\"../../acm/program/Program.html#print-char-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-double-\">print</a>, <a href=\"../../acm/program/Program.html#print-double-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-float-\">print</a>, <a href=\"../../acm/program/Program.html#print-float-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-int-\">print</a>, <a href=\"../../acm/program/Program.html#print-int-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-long-\">print</a>, <a href=\"../../acm/program/Program.html#print-long-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-java.lang.Object-\">print</a>, <a href=\"../../acm/program/Program.html#print-java.lang.Object-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-java.lang.String-\">print</a>, <a href=\"../../acm/program/Program.html#print-java.lang.String-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#printf-java.lang.String-java.lang.Object...-\">printf</a>, <a href=\"../../acm/program/Program.html#println--\">println</a>, <a href=\"../../acm/program/Program.html#println-boolean-\">println</a>, <a href=\"../../acm/program/Program.html#println-boolean-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-char-\">println</a>, <a href=\"../../acm/program/Program.html#println-char-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-double-\">println</a>, <a href=\"../../acm/program/Program.html#println-double-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-float-\">println</a>, <a href=\"../../acm/program/Program.html#println-float-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-int-\">println</a>, <a href=\"../../acm/program/Program.html#println-int-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-long-\">println</a>, <a href=\"../../acm/program/Program.html#println-long-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-java.lang.Object-\">println</a>, <a href=\"../../acm/program/Program.html#println-java.lang.Object-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-java.lang.String-\">println</a>, <a href=\"../../acm/program/Program.html#println-java.lang.String-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#prompt-java.lang.String-\">prompt</a>, <a href=\"../../acm/program/Program.html#readBoolean--\">readBoolean</a>, <a href=\"../../acm/program/Program.html#readBoolean-java.lang.String-\">readBoolean</a>, <a href=\"../../acm/program/Program.html#readBoolean-java.lang.String-java.lang.String-java.lang.String-\">readBoolean</a>, <a href=\"../../acm/program/Program.html#readDouble--\">readDouble</a>, <a href=\"../../acm/program/Program.html#readDouble-double-double-\">readDouble</a>, <a href=\"../../acm/program/Program.html#readDouble-java.lang.String-\">readDouble</a>, <a href=\"../../acm/program/Program.html#readDouble-java.lang.String-double-double-\">readDouble</a>, <a href=\"../../acm/program/Program.html#readInt--\">readInt</a>, <a href=\"../../acm/program/Program.html#readInt-int-int-\">readInt</a>, <a href=\"../../acm/program/Program.html#readInt-java.lang.String-\">readInt</a>, <a href=\"../../acm/program/Program.html#readInt-java.lang.String-int-int-\">readInt</a>, <a href=\"../../acm/program/Program.html#readLine--\">readLine</a>, <a href=\"../../acm/program/Program.html#readLine-java.lang.String-\">readLine</a>, <a href=\"../../acm/program/Program.html#remove-java.awt.Component-\">remove</a>, <a href=\"../../acm/program/Program.html#remove-int-\">remove</a>, <a href=\"../../acm/program/Program.html#removeAll--\">removeAll</a>, <a href=\"../../acm/program/Program.html#removeFromRegion-java.awt.Component-java.lang.String-\">removeFromRegion</a>, <a href=\"../../acm/program/Program.html#removeMenuBar--\">removeMenuBar</a>, <a href=\"../../acm/program/Program.html#removeUpdate-javax.swing.event.DocumentEvent-\">removeUpdate</a>, <a href=\"../../acm/program/Program.html#repaint--\">repaint</a>, <a href=\"../../acm/program/Program.html#runHook--\">runHook</a>, <a href=\"../../acm/program/Program.html#saveConfiguration--\">saveConfiguration</a>, <a href=\"../../acm/program/Program.html#saveConfiguration-java.util.Properties-\">saveConfiguration</a>, <a href=\"../../acm/program/Program.html#setAnimated-boolean-\">setAnimated</a>, <a href=\"../../acm/program/Program.html#setAnimationDelay-int-\">setAnimationDelay</a>, <a href=\"../../acm/program/Program.html#setAppletStub-java.applet.AppletStub-\">setAppletStub</a>, <a href=\"../../acm/program/Program.html#setBackground-java.awt.Color-\">setBackground</a>, <a href=\"../../acm/program/Program.html#setBottomY-double-\">setBottomY</a>, <a href=\"../../acm/program/Program.html#setCenterLocation-double-double-\">setCenterLocation</a>, <a href=\"../../acm/program/Program.html#setCenterX-double-\">setCenterX</a>, <a href=\"../../acm/program/Program.html#setCenterY-double-\">setCenterY</a>, <a href=\"../../acm/program/Program.html#setConsole-acm.io.IOConsole-\">setConsole</a>, <a href=\"../../acm/program/Program.html#setDialog-acm.io.IODialog-\">setDialog</a>, <a href=\"../../acm/program/Program.html#setExitOnClose-boolean-\">setExitOnClose</a>, <a href=\"../../acm/program/Program.html#setFramesPerSecond-int-\">setFramesPerSecond</a>, <a href=\"../../acm/program/Program.html#setHeight-double-\">setHeight</a>, <a href=\"../../acm/program/Program.html#setInputModel-acm.io.IOModel-\">setInputModel</a>, <a href=\"../../acm/program/Program.html#setInvisible-acm.graphics.GObject-boolean-\">setInvisible</a>, <a href=\"../../acm/program/Program.html#setJFrame-javax.swing.JFrame-\">setJFrame</a>, <a href=\"../../acm/program/Program.html#setJMenuBar-javax.swing.JMenuBar-\">setJMenuBar</a>, <a href=\"../../acm/program/Program.html#setLayout-java.awt.LayoutManager-\">setLayout</a>, <a href=\"../../acm/program/Program.html#setLocation-double-double-\">setLocation</a>, <a href=\"../../acm/program/Program.html#setLocation-acm.graphics.GPoint-\">setLocation</a>, <a href=\"../../acm/program/Program.html#setOutputColor-java.awt.Color-\">setOutputColor</a>, <a href=\"../../acm/program/Program.html#setOutputModel-acm.io.IOModel-\">setOutputModel</a>, <a href=\"../../acm/program/Program.html#setParameter-java.lang.String-java.lang.String-\">setParameter</a>, <a href=\"../../acm/program/Program.html#setParameterTable-java.util.Map-\">setParameterTable</a>, <a href=\"../../acm/program/Program.html#setPauseScaleFactor-double-\">setPauseScaleFactor</a>, <a href=\"../../acm/program/Program.html#setResizable-boolean-\">setResizable</a>, <a href=\"../../acm/program/Program.html#setRightX-double-\">setRightX</a>, <a href=\"../../acm/program/Program.html#setShowPixelGrid-boolean-\">setShowPixelGrid</a>, <a href=\"../../acm/program/Program.html#setShowPixelInfo-boolean-\">setShowPixelInfo</a>, <a href=\"../../acm/program/Program.html#setSize-double-double-\">setSize</a>, <a href=\"../../acm/program/Program.html#setStartupObject-java.lang.Object-\">setStartupObject</a>, <a href=\"../../acm/program/Program.html#setTitle-java.lang.String-\">setTitle</a>, <a href=\"../../acm/program/Program.html#setWidth-double-\">setWidth</a>, <a href=\"../../acm/program/Program.html#setX-double-\">setX</a>, <a href=\"../../acm/program/Program.html#setY-double-\">setY</a>, <a href=\"../../acm/program/Program.html#showErrorMessage-java.lang.String-\">showErrorMessage</a>, <a href=\"../../acm/program/Program.html#start--\">start</a>, <a href=\"../../acm/program/Program.html#start-java.lang.String:A-\">start</a>, <a href=\"../../acm/program/Program.html#startAnimation--\">startAnimation</a>, <a href=\"../../acm/program/Program.html#startHook--\">startHook</a>, <a href=\"../../acm/program/Program.html#startRun--\">startRun</a>, <a href=\"../../acm/program/Program.html#stateChanged-javax.swing.event.ChangeEvent-\">stateChanged</a>, <a href=\"../../acm/program/Program.html#stopAnimation--\">stopAnimation</a>, <a href=\"../../acm/program/Program.html#textValueChanged-java.awt.event.TextEvent-\">textValueChanged</a>, <a href=\"../../acm/program/Program.html#validate--\">validate</a>, <a href=\"../../acm/program/Program.html#valueChanged-javax.swing.event.ListSelectionEvent-\">valueChanged</a>, <a href=\"../../acm/program/Program.html#windowActivated-java.awt.event.WindowEvent-\">windowActivated</a>, <a href=\"../../acm/program/Program.html#windowClosed-java.awt.event.WindowEvent-\">windowClosed</a>, <a href=\"../../acm/program/Program.html#windowClosing-java.awt.event.WindowEvent-\">windowClosing</a>, <a href=\"../../acm/program/Program.html#windowDeactivated-java.awt.event.WindowEvent-\">windowDeactivated</a>, <a href=\"../../acm/program/Program.html#windowDeiconified-java.awt.event.WindowEvent-\">windowDeiconified</a>, <a href=\"../../acm/program/Program.html#windowGainedFocus-java.awt.event.WindowEvent-\">windowGainedFocus</a>, <a href=\"../../acm/program/Program.html#windowIconified-java.awt.event.WindowEvent-\">windowIconified</a>, <a href=\"../../acm/program/Program.html#windowLostFocus-java.awt.event.WindowEvent-\">windowLostFocus</a>, <a href=\"../../acm/program/Program.html#windowOpened-java.awt.event.WindowEvent-\">windowOpened</a>, <a href=\"../../acm/program/Program.html#windowStateChanged-java.awt.event.WindowEvent-\">windowStateChanged</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JApplet\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#createRootPane--\" title=\"class or interface in javax.swing\">createRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getAccessibleContext--\" title=\"class or interface in javax.swing\">getAccessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getContentPane--\" title=\"class or interface in javax.swing\">getContentPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getGlassPane--\" title=\"class or interface in javax.swing\">getGlassPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getGraphics--\" title=\"class or interface in javax.swing\">getGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getJMenuBar--\" title=\"class or interface in javax.swing\">getJMenuBar</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getLayeredPane--\" title=\"class or interface in javax.swing\">getLayeredPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getRootPane--\" title=\"class or interface in javax.swing\">getRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getTransferHandler--\" title=\"class or interface in javax.swing\">getTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#isRootPaneCheckingEnabled--\" title=\"class or interface in javax.swing\">isRootPaneCheckingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#paramString--\" title=\"class or interface in javax.swing\">paramString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#repaint-long-int-int-int-int-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setContentPane-java.awt.Container-\" title=\"class or interface in javax.swing\">setContentPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setGlassPane-java.awt.Component-\" title=\"class or interface in javax.swing\">setGlassPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setLayeredPane-javax.swing.JLayeredPane-\" title=\"class or interface in javax.swing\">setLayeredPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setRootPane-javax.swing.JRootPane-\" title=\"class or interface in javax.swing\">setRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setRootPaneCheckingEnabled-boolean-\" title=\"class or interface in javax.swing\">setRootPaneCheckingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setTransferHandler-javax.swing.TransferHandler-\" title=\"class or interface in javax.swing\">setTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#update-java.awt.Graphics-\" title=\"class or interface in javax.swing\">update</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.applet.Applet\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.applet.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">Applet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAppletContext--\" title=\"class or interface in java.applet\">getAppletContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAppletInfo--\" title=\"class or interface in java.applet\">getAppletInfo</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAudioClip-java.net.URL-\" title=\"class or interface in java.applet\">getAudioClip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAudioClip-java.net.URL-java.lang.String-\" title=\"class or interface in java.applet\">getAudioClip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getCodeBase--\" title=\"class or interface in java.applet\">getCodeBase</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getDocumentBase--\" title=\"class or interface in java.applet\">getDocumentBase</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getImage-java.net.URL-\" title=\"class or interface in java.applet\">getImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getImage-java.net.URL-java.lang.String-\" title=\"class or interface in java.applet\">getImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getLocale--\" title=\"class or interface in java.applet\">getLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getParameterInfo--\" title=\"class or interface in java.applet\">getParameterInfo</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#isActive--\" title=\"class or interface in java.applet\">isActive</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#isValidateRoot--\" title=\"class or interface in java.applet\">isValidateRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#newAudioClip-java.net.URL-\" title=\"class or interface in java.applet\">newAudioClip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#play-java.net.URL-\" title=\"class or interface in java.applet\">play</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#play-java.net.URL-java.lang.String-\" title=\"class or interface in java.applet\">play</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#resize-java.awt.Dimension-\" title=\"class or interface in java.applet\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#resize-int-int-\" title=\"class or interface in java.applet\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#setStub-java.applet.AppletStub-\" title=\"class or interface in java.applet\">setStub</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#showStatus-java.lang.String-\" title=\"class or interface in java.applet\">showStatus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#stop--\" title=\"class or interface in java.applet\">stop</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Panel\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\">Panel</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true#addNotify--\" title=\"class or interface in java.awt\">addNotify</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.lang.String-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">addContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#applyComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">applyComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#areFocusTraversalKeysSet-int-\" title=\"class or interface in java.awt\">areFocusTraversalKeysSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#countComponents--\" title=\"class or interface in java.awt\">countComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#deliverEvent-java.awt.Event-\" title=\"class or interface in java.awt\">deliverEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#doLayout--\" title=\"class or interface in java.awt\">doLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-int-int-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getAlignmentX--\" title=\"class or interface in java.awt\">getAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getAlignmentY--\" title=\"class or interface in java.awt\">getAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponent-int-\" title=\"class or interface in java.awt\">getComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-int-int-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentCount--\" title=\"class or interface in java.awt\">getComponentCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponents--\" title=\"class or interface in java.awt\">getComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentZOrder-java.awt.Component-\" title=\"class or interface in java.awt\">getComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getContainerListeners--\" title=\"class or interface in java.awt\">getContainerListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalKeys-int-\" title=\"class or interface in java.awt\">getFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalPolicy--\" title=\"class or interface in java.awt\">getFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getInsets--\" title=\"class or interface in java.awt\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getListeners-java.lang.Class-\" title=\"class or interface in java.awt\">getListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMaximumSize--\" title=\"class or interface in java.awt\">getMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMinimumSize--\" title=\"class or interface in java.awt\">getMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMousePosition-boolean-\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#insets--\" title=\"class or interface in java.awt\">insets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#invalidate--\" title=\"class or interface in java.awt\">invalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isAncestorOf-java.awt.Component-\" title=\"class or interface in java.awt\">isAncestorOf</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot--\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot-java.awt.Container-\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicyProvider--\" title=\"class or interface in java.awt\">isFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicySet--\" title=\"class or interface in java.awt\">isFocusTraversalPolicySet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#layout--\" title=\"class or interface in java.awt\">layout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintStream-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintWriter-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#locate-int-int-\" title=\"class or interface in java.awt\">locate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#minimumSize--\" title=\"class or interface in java.awt\">minimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paint-java.awt.Graphics-\" title=\"class or interface in java.awt\">paint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paintComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#preferredSize--\" title=\"class or interface in java.awt\">preferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#print-java.awt.Graphics-\" title=\"class or interface in java.awt\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#printComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">printComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processContainerEvent-java.awt.event.ContainerEvent-\" title=\"class or interface in java.awt\">processContainerEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">processEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">removeContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeNotify--\" title=\"class or interface in java.awt\">removeNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setComponentZOrder-java.awt.Component-int-\" title=\"class or interface in java.awt\">setComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusCycleRoot-boolean-\" title=\"class or interface in java.awt\">setFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalKeys-int-java.util.Set-\" title=\"class or interface in java.awt\">setFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicy-java.awt.FocusTraversalPolicy-\" title=\"class or interface in java.awt\">setFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicyProvider-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFont-java.awt.Font-\" title=\"class or interface in java.awt\">setFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#transferFocusDownCycle--\" title=\"class or interface in java.awt\">transferFocusDownCycle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validateTree--\" title=\"class or interface in java.awt\">validateTree</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#action-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">action</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#add-java.awt.PopupMenu-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">addComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">addFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">addHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">addHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">addInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">addKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">addMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">addMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">addMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#bounds--\" title=\"class or interface in java.awt\">bounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#coalesceEvents-java.awt.AWTEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">coalesceEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-int-int-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-java.awt.Point-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-java.awt.image.ImageProducer-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-int-int-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-java.awt.ImageCapabilities-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disable--\" title=\"class or interface in java.awt\">disable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disableEvents-long-\" title=\"class or interface in java.awt\">disableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#dispatchEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">dispatchEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable--\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable-boolean-\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableEvents-long-\" title=\"class or interface in java.awt\">enableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableInputMethods-boolean-\" title=\"class or interface in java.awt\">enableInputMethods</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-boolean-boolean-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-byte-byte-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-char-char-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-double-double-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-float-float-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-int-int-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-long-long-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-short-short-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBackground--\" title=\"class or interface in java.awt\">getBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBaseline-int-int-\" title=\"class or interface in java.awt\">getBaseline</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBaselineResizeBehavior--\" title=\"class or interface in java.awt\">getBaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds--\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getColorModel--\" title=\"class or interface in java.awt\">getColorModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentListeners--\" title=\"class or interface in java.awt\">getComponentListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentOrientation--\" title=\"class or interface in java.awt\">getComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getCursor--\" title=\"class or interface in java.awt\">getCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getDropTarget--\" title=\"class or interface in java.awt\">getDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusCycleRootAncestor--\" title=\"class or interface in java.awt\">getFocusCycleRootAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusListeners--\" title=\"class or interface in java.awt\">getFocusListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusTraversalKeysEnabled--\" title=\"class or interface in java.awt\">getFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFont--\" title=\"class or interface in java.awt\">getFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFontMetrics-java.awt.Font-\" title=\"class or interface in java.awt\">getFontMetrics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getForeground--\" title=\"class or interface in java.awt\">getForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getGraphicsConfiguration--\" title=\"class or interface in java.awt\">getGraphicsConfiguration</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyBoundsListeners--\" title=\"class or interface in java.awt\">getHierarchyBoundsListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyListeners--\" title=\"class or interface in java.awt\">getHierarchyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getIgnoreRepaint--\" title=\"class or interface in java.awt\">getIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputContext--\" title=\"class or interface in java.awt\">getInputContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodListeners--\" title=\"class or interface in java.awt\">getInputMethodListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodRequests--\" title=\"class or interface in java.awt\">getInputMethodRequests</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getKeyListeners--\" title=\"class or interface in java.awt\">getKeyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation--\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation-java.awt.Point-\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocationOnScreen--\" title=\"class or interface in java.awt\">getLocationOnScreen</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseListeners--\" title=\"class or interface in java.awt\">getMouseListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseMotionListeners--\" title=\"class or interface in java.awt\">getMouseMotionListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMousePosition--\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseWheelListeners--\" title=\"class or interface in java.awt\">getMouseWheelListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getName--\" title=\"class or interface in java.awt\">getName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getParent--\" title=\"class or interface in java.awt\">getParent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPeer--\" title=\"class or interface in java.awt\">getPeer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners--\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners-java.lang.String-\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize--\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getToolkit--\" title=\"class or interface in java.awt\">getToolkit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getTreeLock--\" title=\"class or interface in java.awt\">getTreeLock</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getX--\" title=\"class or interface in java.awt\">getX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getY--\" title=\"class or interface in java.awt\">getY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#gotFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">gotFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#handleEvent-java.awt.Event-\" title=\"class or interface in java.awt\">handleEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hasFocus--\" title=\"class or interface in java.awt\">hasFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hide--\" title=\"class or interface in java.awt\">hide</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#imageUpdate-java.awt.Image-int-int-int-int-int-\" title=\"class or interface in java.awt\">imageUpdate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#inside-int-int-\" title=\"class or interface in java.awt\">inside</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isBackgroundSet--\" title=\"class or interface in java.awt\">isBackgroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isCursorSet--\" title=\"class or interface in java.awt\">isCursorSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDisplayable--\" title=\"class or interface in java.awt\">isDisplayable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDoubleBuffered--\" title=\"class or interface in java.awt\">isDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isEnabled--\" title=\"class or interface in java.awt\">isEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusable--\" title=\"class or interface in java.awt\">isFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusOwner--\" title=\"class or interface in java.awt\">isFocusOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusTraversable--\" title=\"class or interface in java.awt\">isFocusTraversable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFontSet--\" title=\"class or interface in java.awt\">isFontSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isForegroundSet--\" title=\"class or interface in java.awt\">isForegroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isLightweight--\" title=\"class or interface in java.awt\">isLightweight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMaximumSizeSet--\" title=\"class or interface in java.awt\">isMaximumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMinimumSizeSet--\" title=\"class or interface in java.awt\">isMinimumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isOpaque--\" title=\"class or interface in java.awt\">isOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isPreferredSizeSet--\" title=\"class or interface in java.awt\">isPreferredSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isShowing--\" title=\"class or interface in java.awt\">isShowing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isValid--\" title=\"class or interface in java.awt\">isValid</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isVisible--\" title=\"class or interface in java.awt\">isVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyDown-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyUp-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list--\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintStream-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintWriter-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#location--\" title=\"class or interface in java.awt\">location</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#lostFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">lostFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDown-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDrag-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDrag</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseEnter-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseEnter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseExit-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseExit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseMove-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseMove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseUp-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#move-int-int-\" title=\"class or interface in java.awt\">move</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#nextFocus--\" title=\"class or interface in java.awt\">nextFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#paintAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#postEvent-java.awt.Event-\" title=\"class or interface in java.awt\">postEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#printAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">printAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processComponentEvent-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt\">processComponentEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processFocusEvent-java.awt.event.FocusEvent-\" title=\"class or interface in java.awt\">processFocusEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyBoundsEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyBoundsEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processInputMethodEvent-java.awt.event.InputMethodEvent-\" title=\"class or interface in java.awt\">processInputMethodEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in java.awt\">processKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseEvent-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt\">processMouseEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseMotionEvent-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt\">processMouseMotionEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseWheelEvent-java.awt.event.MouseWheelEvent-\" title=\"class or interface in java.awt\">processMouseWheelEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#remove-java.awt.MenuComponent-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">removeComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">removeFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">removeHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">removeHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">removeInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">removeKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">removeMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">removeMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">removeMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-int-int-int-int-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-long-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocus--\" title=\"class or interface in java.awt\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocus-boolean-\" title=\"class or interface in java.awt\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocusInWindow--\" title=\"class or interface in java.awt\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocusInWindow-boolean-\" title=\"class or interface in java.awt\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#reshape-int-int-int-int-\" title=\"class or interface in java.awt\">reshape</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#revalidate--\" title=\"class or interface in java.awt\">revalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-int-int-int-int-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">setComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setCursor-java.awt.Cursor-\" title=\"class or interface in java.awt\">setCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setDropTarget-java.awt.dnd.DropTarget-\" title=\"class or interface in java.awt\">setDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setEnabled-boolean-\" title=\"class or interface in java.awt\">setEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusable-boolean-\" title=\"class or interface in java.awt\">setFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusTraversalKeysEnabled-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setForeground-java.awt.Color-\" title=\"class or interface in java.awt\">setForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setIgnoreRepaint-boolean-\" title=\"class or interface in java.awt\">setIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocale-java.util.Locale-\" title=\"class or interface in java.awt\">setLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-int-int-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-java.awt.Point-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setMaximumSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setMinimumSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setName-java.lang.String-\" title=\"class or interface in java.awt\">setName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setPreferredSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-int-int-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setVisible-boolean-\" title=\"class or interface in java.awt\">setVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show--\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show-boolean-\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#size--\" title=\"class or interface in java.awt\">size</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#toString--\" title=\"class or interface in java.awt\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocus--\" title=\"class or interface in java.awt\">transferFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusBackward--\" title=\"class or interface in java.awt\">transferFocusBackward</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusUpCycle--\" title=\"class or interface in java.awt\">transferFocusUpCycle</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"DialogProgram--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>DialogProgram</h4>\n<pre>public&nbsp;DialogProgram()</pre>\n<div class=\"block\">Creates a new dialog program.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>DialogProgram program = new DialogProgram();</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"run--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>run</h4>\n<pre>public&nbsp;void&nbsp;run()</pre>\n<div class=\"block\">Specifies the code to be executed as the program runs.\n The <code>run</code> method is required for applications that have\n a thread of control that runs even in the absence of user actions,\n such as a program that uses console interation or that involves\n animation.  GUI-based programs that operate by setting up an initial\n configuration and then wait for user events usually do not specify a\n <code>run</code> method and supply a new definition for <code>init</code>\n instead.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#run--\">run</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true#run--\" title=\"class or interface in java.lang\">run</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/Program.html#run--\">run</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"init--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>init</h4>\n<pre>public&nbsp;void&nbsp;init()</pre>\n<div class=\"block\">Specifies the code to be executed as startup time before the\n <code>run</code> method is called.  Subclasses can override this\n method to perform any initialization code that would ordinarily\n be included in an applet <code>init</code> method.  In general,\n subclasses will override <code>init</code> in GUI-based programs\n where the program simply sets up an initial state and then waits\n for events from the user.  The <code>run</code> method is required\n for applications in which there needs to be some control thread\n while the program runs, as in a typical animation.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#init--\">init</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/Program.html#init--\">init</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>program.init();</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/program/ConsoleProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/program/GraphicsProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/program/DialogProgram.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"DialogProgram.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JApplet\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.acm.program.Program\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/program/GraphicsProgram.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:07 PDT 2017 -->\n<title>GraphicsProgram</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GraphicsProgram\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":10,\"i16\":10,\"i17\":10,\"i18\":10,\"i19\":10,\"i20\":10,\"i21\":10,\"i22\":10,\"i23\":10,\"i24\":10,\"i25\":10,\"i26\":10,\"i27\":10,\"i28\":10,\"i29\":10,\"i30\":10,\"i31\":10,\"i32\":10,\"i33\":10,\"i34\":10,\"i35\":10,\"i36\":10,\"i37\":10,\"i38\":10,\"i39\":10,\"i40\":10,\"i41\":10,\"i42\":10,\"i43\":10,\"i44\":10,\"i45\":10,\"i46\":10,\"i47\":10,\"i48\":9,\"i49\":10,\"i50\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/program/DialogProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/program/GraphicsProgram.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GraphicsProgram.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JApplet\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.acm.program.Program\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.program</div>\n<h2 title=\"Class GraphicsProgram\" class=\"title\">Class GraphicsProgram</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Component</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Container</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Panel</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">java.applet.Applet</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JApplet</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">acm.program.Program</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.program.GraphicsProgram</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a>, acm.io.IOModel, <a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a>, <a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/AdjustmentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">AdjustmentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ContainerListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ItemListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ItemListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseWheelListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/TextListener.html?is-external=true\" title=\"class or interface in java.awt.event\">TextListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowFocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowStateListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowStateListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListDataListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListDataListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListSelectionListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListSelectionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/MouseInputListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">MouseInputListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/PopupMenuListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">PopupMenuListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/RootPaneContainer.html?is-external=true\" title=\"class or interface in javax.swing\">RootPaneContainer</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public abstract class <span class=\"typeNameLabel\">GraphicsProgram</span>\nextends <a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a>\nimplements <a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;</pre>\n<div class=\"block\">This class is a standard subclass of\n <code><a href=\"Program.html\">Program</a></code> whose principal window is\n used for drawing graphics.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#acm.program.GraphicsProgram\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JApplet\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.AccessibleJApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet.AccessibleJApplet</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.applet.Applet\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.applet.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">Applet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.AccessibleApplet.html?is-external=true\" title=\"class or interface in java.applet\">Applet.AccessibleApplet</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Panel\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\">Panel</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.AccessibleAWTPanel.html?is-external=true\" title=\"class or interface in java.awt\">Panel.AccessibleAWTPanel</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.AccessibleAWTContainer.html?is-external=true\" title=\"class or interface in java.awt\">Container.AccessibleAWTContainer</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.AccessibleAWTComponent.html?is-external=true\" title=\"class or interface in java.awt\">Component.AccessibleAWTComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BaselineResizeBehavior.html?is-external=true\" title=\"class or interface in java.awt\">Component.BaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BltBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.BltBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.FlipBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.FlipBufferStrategy</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.program.Program\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;acm.program.<a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></h3>\n<code><a href=\"../../acm/program/Program.html#CONFIG_FILE_NAME\">CONFIG_FILE_NAME</a>, <a href=\"../../acm/program/Program.html#invisibleObjects\">invisibleObjects</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.JApplet\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#accessibleContext\" title=\"class or interface in javax.swing\">accessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#rootPane\" title=\"class or interface in javax.swing\">rootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#rootPaneCheckingEnabled\" title=\"class or interface in javax.swing\">rootPaneCheckingEnabled</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#BOTTOM_ALIGNMENT\" title=\"class or interface in java.awt\">BOTTOM_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#CENTER_ALIGNMENT\" title=\"class or interface in java.awt\">CENTER_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#LEFT_ALIGNMENT\" title=\"class or interface in java.awt\">LEFT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#RIGHT_ALIGNMENT\" title=\"class or interface in java.awt\">RIGHT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#TOP_ALIGNMENT\" title=\"class or interface in java.awt\">TOP_ALIGNMENT</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.program.ProgramInterface\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;acm.program.<a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></h3>\n<code><a href=\"../../acm/program/ProgramInterface.html#CENTER\">CENTER</a>, <a href=\"../../acm/program/ProgramInterface.html#EAST\">EAST</a>, <a href=\"../../acm/program/ProgramInterface.html#NORTH\">NORTH</a>, <a href=\"../../acm/program/ProgramInterface.html#SOUTH\">SOUTH</a>, <a href=\"../../acm/program/ProgramInterface.html#WEST\">WEST</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.image.ImageObserver\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ABORT\" title=\"class or interface in java.awt.image\">ABORT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ALLBITS\" title=\"class or interface in java.awt.image\">ALLBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ERROR\" title=\"class or interface in java.awt.image\">ERROR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#FRAMEBITS\" title=\"class or interface in java.awt.image\">FRAMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#HEIGHT\" title=\"class or interface in java.awt.image\">HEIGHT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#PROPERTIES\" title=\"class or interface in java.awt.image\">PROPERTIES</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#SOMEBITS\" title=\"class or interface in java.awt.image\">SOMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#WIDTH\" title=\"class or interface in java.awt.image\">WIDTH</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier</th>\n<th class=\"colLast\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected </code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#GraphicsProgram--\">GraphicsProgram</a></span>()</code>\n<div class=\"block\">Creates a new graphics program.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#add-java.awt.Component-double-double-\">add</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n   double&nbsp;x,\n   double&nbsp;y)</code>\n<div class=\"block\">Adds the component to the canvas and sets its location to the point (\n <code>x</code>,&nbsp;<code>y</code>).</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#add-java.awt.Component-acm.graphics.GPoint-\">add</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n   <a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</code>\n<div class=\"block\">Adds the component to the canvas and sets its location to the specified\n point.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#add-acm.graphics.GObject-\">add</a></span>(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</code>\n<div class=\"block\">Adds a new graphical object to this container.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#add-acm.graphics.GObject-double-double-\">add</a></span>(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj,\n   double&nbsp;x,\n   double&nbsp;y)</code>\n<div class=\"block\">Adds the graphical object to the canvas and sets its location to the\n point (<code>x</code>,&nbsp;<code>y</code>).</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#add-acm.graphics.GObject-acm.graphics.GPoint-\">add</a></span>(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj,\n   <a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</code>\n<div class=\"block\">Adds the graphical object to the canvas and sets its location to the\n specified point.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#addKeyListeners--\">addKeyListeners</a></span>()</code>\n<div class=\"block\">Adds the program as a <code>KeyListener</code> to the canvas.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#addKeyListeners-java.awt.event.KeyListener-\">addKeyListeners</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>&nbsp;listener)</code>\n<div class=\"block\">Adds the specified listener as a <code>KeyListener</code> to the canvas.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#addMouseListeners--\">addMouseListeners</a></span>()</code>\n<div class=\"block\">Adds the program as both a <code>MouseListener</code> and\n <code>MouseMotionListener</code> to the canvas.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#addMouseListeners-java.util.EventListener-\">addMouseListeners</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a>&nbsp;listener)</code>\n<div class=\"block\">Adds the specified listener as a <code>MouseListener</code> and/or\n <code>MouseMotionListener</code>, as appropriate, to the canvas.</div>\n</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#clear--\">clear</a></span>()</code>\n<div class=\"block\">Removes all graphical objects from this container.</div>\n</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#clearCanvas--\">clearCanvas</a></span>()</code>\n<div class=\"block\">Removes all graphical objects from this container.</div>\n</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"../../acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#createGCanvas--\">createGCanvas</a></span>()</code>\n<div class=\"block\">Creates the <code>GCanvas</code> used by the <code>GraphicsProgram</code>\n .</div>\n</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#endHook--\">endHook</a></span>()</code>\n<div class=\"block\">Ensures that the window is repainted at the end of the program.</div>\n</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#getCanvasHeight--\">getCanvasHeight</a></span>()</code>\n<div class=\"block\">Returns the height of the central canvas area.</div>\n</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#getCanvasSize--\">getCanvasSize</a></span>()</code>\n<div class=\"block\">Returns the size of the central canvas area.</div>\n</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#getCanvasWidth--\">getCanvasWidth</a></span>()</code>\n<div class=\"block\">Returns the width of the central canvas area.</div>\n</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;<br>T</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#getElement-int-\">getElement</a></span>(int&nbsp;index)</code>\n<div class=\"block\">Returns the graphical object at the specified index, numbering from back\n to front in the the <i>z</i> dimension.</div>\n</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;<br>T</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#getElementAt-double...-\">getElementAt</a></span>(double...&nbsp;coords)</code>\n<div class=\"block\">This version of getElementAt accepts a variable number of coordinate\n pairs (in x1, y1, x2, y2, x3, y3, ...</div>\n</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;<br>T</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#getElementAt-double-double-\">getElementAt</a></span>(double&nbsp;x,\n            double&nbsp;y)</code>\n<div class=\"block\">Returns the topmost graphical object that contains the point (\n <code>x</code>, <code>y</code>), or <code>null</code> if no such object\n exists.</div>\n</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;<br>T</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#getElementAt-acm.graphics.GPoint-\">getElementAt</a></span>(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</code>\n<div class=\"block\">Returns the topmost graphical object that contains the specified point,\n or <code>null</code> if no such object exists.</div>\n</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#getElementCount--\">getElementCount</a></span>()</code>\n<div class=\"block\">Returns the number of graphical objects stored in this\n <code>GCanvas</code>.</div>\n</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#getGCanvas--\">getGCanvas</a></span>()</code>\n<div class=\"block\">Returns the <code>GCanvas</code> object used by this program.</div>\n</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#hasElementAt-double...-\">hasElementAt</a></span>(double...&nbsp;coords)</code>\n<div class=\"block\">Returns true if a graphical object exists that touches any of the given\n (x, y) pixel positions, or false if no such object exists.</div>\n</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#hasElementAt-double-double-\">hasElementAt</a></span>(double&nbsp;x,\n            double&nbsp;y)</code>\n<div class=\"block\">Returns true if a graphical object exists that touches the given\n (x, y) pixel position, or false if no such object exists.</div>\n</td>\n</tr>\n<tr id=\"i24\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#init--\">init</a></span>()</code>\n<div class=\"block\">Specifies the code to be executed as startup time before the\n <code>run</code> method is called.</div>\n</td>\n</tr>\n<tr id=\"i25\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#isAntiAliasing--\">isAntiAliasing</a></span>()</code>\n<div class=\"block\">Sets whether this program's canvas uses anti-aliasing, which is\n smoothing and blending of neighboring pixels.</div>\n</td>\n</tr>\n<tr id=\"i26\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#isStarted--\">isStarted</a></span>()</code>\n<div class=\"block\">Checks to see whether this program has started, usually by checking to\n see whether some pane exists.</div>\n</td>\n</tr>\n<tr id=\"i27\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true\" title=\"class or interface in java.util\">Iterator</a>&lt;<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#iterator--\">iterator</a></span>()</code>\n<div class=\"block\">Returns an <code>Iterator</code> that cycles through the elements within\n this container in the default direction, which is from back to front.</div>\n</td>\n</tr>\n<tr id=\"i28\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true\" title=\"class or interface in java.util\">Iterator</a>&lt;<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#iterator-int-\">iterator</a></span>(int&nbsp;direction)</code>\n<div class=\"block\">Returns an <code>Iterator</code> that cycles through the elements within\n this container in the specified direction, which must be one of the\n constants <a href=\"../graphics/GContainer.html#FRONT_TO_BACK\">\n <code>FRONT_TO_BACK</code></a> or <a\n href=\"GContainer.html#BACK_TO_FRONT\"><code>BACK_TO_FRONT</code></a> from\n the <a href=\"../graphics/GContainer.html\"><code>GContainer</code></a>\n interface.</div>\n</td>\n</tr>\n<tr id=\"i29\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#remove-double-double-\">remove</a></span>(double&nbsp;x,\n      double&nbsp;y)</code>\n<div class=\"block\">Removes the top-most graphical object at the given (x, y) position from this container.</div>\n</td>\n</tr>\n<tr id=\"i30\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#remove-acm.graphics.GObject-\">remove</a></span>(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</code>\n<div class=\"block\">Removes a graphical object from this container.</div>\n</td>\n</tr>\n<tr id=\"i31\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#remove-acm.graphics.GPoint-\">remove</a></span>(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</code>\n<div class=\"block\">Removes the top-most graphical object at the given (x, y) position from this container.</div>\n</td>\n</tr>\n<tr id=\"i32\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#removeAll--\">removeAll</a></span>()</code>\n<div class=\"block\">Removes all graphical objects from this container.</div>\n</td>\n</tr>\n<tr id=\"i33\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#removeAll-double...-\">removeAll</a></span>(double...&nbsp;coords)</code>\n<div class=\"block\">Removes all graphical objects at the given (x, y) positions from this container.</div>\n</td>\n</tr>\n<tr id=\"i34\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#removeAll-double-double-\">removeAll</a></span>(double&nbsp;x,\n         double&nbsp;y)</code>\n<div class=\"block\">Removes all graphical objects at the given (x, y) position from this container.</div>\n</td>\n</tr>\n<tr id=\"i35\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#removeAll-acm.graphics.GPoint-\">removeAll</a></span>(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</code>\n<div class=\"block\">Removes all graphical objects at the given (x, y) position from this container.</div>\n</td>\n</tr>\n<tr id=\"i36\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#removeAllComponents--\">removeAllComponents</a></span>()</code>\n<div class=\"block\">Removes all components from this container.</div>\n</td>\n</tr>\n<tr id=\"i37\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#repaint--\">repaint</a></span>()</code>\n<div class=\"block\">Signals a need to repaint this window.</div>\n</td>\n</tr>\n<tr id=\"i38\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#run--\">run</a></span>()</code>\n<div class=\"block\">Specifies the code to be executed as the program runs.</div>\n</td>\n</tr>\n<tr id=\"i39\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#setAntiAliasing-boolean-\">setAntiAliasing</a></span>(boolean&nbsp;antialias)</code>\n<div class=\"block\">Sets whether this program's canvas uses anti-aliasing, which is\n smoothing and blending of neighboring pixels.</div>\n</td>\n</tr>\n<tr id=\"i40\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#setBackground-java.awt.Color-\">setBackground</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;bg)</code>\n<div class=\"block\">Sets the background color of the <code>GCanvas</code>.</div>\n</td>\n</tr>\n<tr id=\"i41\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#setCanvasHeight-double-\">setCanvasHeight</a></span>(double&nbsp;height)</code>\n<div class=\"block\">Sets this program to be exactly the right size so that its graphical canvas will be\n the given height in pixels.</div>\n</td>\n</tr>\n<tr id=\"i42\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#setCanvasSize-double-double-\">setCanvasSize</a></span>(double&nbsp;width,\n             double&nbsp;height)</code>\n<div class=\"block\">Sets this program to be exactly the right size so that its graphical canvas will be\n the given size in pixels.</div>\n</td>\n</tr>\n<tr id=\"i43\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#setCanvasWidth-double-\">setCanvasWidth</a></span>(double&nbsp;width)</code>\n<div class=\"block\">Sets this program to be exactly the right size so that its graphical canvas will be\n the given width in pixels.</div>\n</td>\n</tr>\n<tr id=\"i44\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#setShowPixelInfo-boolean-\">setShowPixelInfo</a></span>(boolean&nbsp;show)</code>\n<div class=\"block\">Sets whether to display information on this canvas about the current pixel where\n the mouse pointer is resting in this program's graphical canvas.</div>\n</td>\n</tr>\n<tr id=\"i45\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#setSize-double-double-\">setSize</a></span>(double&nbsp;width,\n       double&nbsp;height)</code>\n<div class=\"block\">Sets this program to be exactly the right size so that its graphical canvas will be\n the given size in pixels.</div>\n</td>\n</tr>\n<tr id=\"i46\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#setSize-int-int-\">setSize</a></span>(int&nbsp;width,\n       int&nbsp;height)</code>\n<div class=\"block\">Sets this program to be exactly the right size so that its graphical canvas will be\n the given size in pixels.</div>\n</td>\n</tr>\n<tr id=\"i47\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#setWindowSize-double-double-\">setWindowSize</a></span>(double&nbsp;width,\n             double&nbsp;height)</code>\n<div class=\"block\">Sets this program's window to be the given size in pixels.</div>\n</td>\n</tr>\n<tr id=\"i48\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#startGraphicsProgram-acm.graphics.GObject-java.lang.String:A-\">startGraphicsProgram</a></span>(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj,\n                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</code>\n<div class=\"block\">Creates a <code>GraphicsProgram</code> containing the specified\n <code>GObject</code> and then starts it.</div>\n</td>\n</tr>\n<tr id=\"i49\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/BufferedImage.html?is-external=true\" title=\"class or interface in java.awt.image\">BufferedImage</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#toImage--\">toImage</a></span>()</code>\n<div class=\"block\">Returns an image representation of the current contents of the screen.</div>\n</td>\n</tr>\n<tr id=\"i50\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgram.html#waitForClick--\">waitForClick</a></span>()</code>\n<div class=\"block\">Waits for a mouse click in the window before proceeding.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.program.Program\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.program.<a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></h3>\n<code><a href=\"../../acm/program/Program.html#actionPerformed-java.awt.event.ActionEvent-\">actionPerformed</a>, <a href=\"../../acm/program/Program.html#add-java.awt.Component-java.lang.String-java.lang.Object-\">add</a>, <a href=\"../../acm/program/Program.html#addActionListeners--\">addActionListeners</a>, <a href=\"../../acm/program/Program.html#addActionListeners-java.awt.event.ActionListener-\">addActionListeners</a>, <a href=\"../../acm/program/Program.html#addActionListenersToButtonsOnly--\">addActionListenersToButtonsOnly</a>, <a href=\"../../acm/program/Program.html#addAllActionListeners--\">addAllActionListeners</a>, <a href=\"../../acm/program/Program.html#addExitHook-java.lang.Object-\">addExitHook</a>, <a href=\"../../acm/program/Program.html#addImpl-java.awt.Component-java.lang.Object-int-\">addImpl</a>, <a href=\"../../acm/program/Program.html#adjustmentValueChanged-java.awt.event.AdjustmentEvent-\">adjustmentValueChanged</a>, <a href=\"../../acm/program/Program.html#alert-java.lang.Object-\">alert</a>, <a href=\"../../acm/program/Program.html#alert-java.lang.String-\">alert</a>, <a href=\"../../acm/program/Program.html#animation--\">animation</a>, <a href=\"../../acm/program/Program.html#center--\">center</a>, <a href=\"../../acm/program/Program.html#changedUpdate-javax.swing.event.DocumentEvent-\">changedUpdate</a>, <a href=\"../../acm/program/Program.html#checkCompilerFlags--\">checkCompilerFlags</a>, <a href=\"../../acm/program/Program.html#checkKill--\">checkKill</a>, <a href=\"../../acm/program/Program.html#checkStartupSettings--\">checkStartupSettings</a>, <a href=\"../../acm/program/Program.html#componentAdded-java.awt.event.ContainerEvent-\">componentAdded</a>, <a href=\"../../acm/program/Program.html#componentHidden-java.awt.event.ComponentEvent-\">componentHidden</a>, <a href=\"../../acm/program/Program.html#componentMoved-java.awt.event.ComponentEvent-\">componentMoved</a>, <a href=\"../../acm/program/Program.html#componentRemoved-java.awt.event.ContainerEvent-\">componentRemoved</a>, <a href=\"../../acm/program/Program.html#componentResized-java.awt.event.ComponentEvent-\">componentResized</a>, <a href=\"../../acm/program/Program.html#componentShown-java.awt.event.ComponentEvent-\">componentShown</a>, <a href=\"../../acm/program/Program.html#confirm-java.lang.String-\">confirm</a>, <a href=\"../../acm/program/Program.html#contentsChanged-javax.swing.event.ListDataEvent-\">contentsChanged</a>, <a href=\"../../acm/program/Program.html#createConsole--\">createConsole</a>, <a href=\"../../acm/program/Program.html#createDialogIO--\">createDialogIO</a>, <a href=\"../../acm/program/Program.html#createMenuBar--\">createMenuBar</a>, <a href=\"../../acm/program/Program.html#createParameterTable-java.lang.String:A-\">createParameterTable</a>, <a href=\"../../acm/program/Program.html#createProgramFrame--\">createProgramFrame</a>, <a href=\"../../acm/program/Program.html#destroy--\">destroy</a>, <a href=\"../../acm/program/Program.html#error-java.lang.Exception-\">error</a>, <a href=\"../../acm/program/Program.html#error-java.lang.Exception-java.lang.String-\">error</a>, <a href=\"../../acm/program/Program.html#error-java.lang.String-\">error</a>, <a href=\"../../acm/program/Program.html#exit--\">exit</a>, <a href=\"../../acm/program/Program.html#fileExists-java.lang.String-\">fileExists</a>, <a href=\"../../acm/program/Program.html#fileExists-java.lang.String-java.lang.String-\">fileExists</a>, <a href=\"../../acm/program/Program.html#fileExistsInsideJAR-java.lang.String-\">fileExistsInsideJAR</a>, <a href=\"../../acm/program/Program.html#fileExistsInsideJAR-java.lang.String-java.lang.String-\">fileExistsInsideJAR</a>, <a href=\"../../acm/program/Program.html#fileExistsOnDisk-java.lang.String-\">fileExistsOnDisk</a>, <a href=\"../../acm/program/Program.html#fileExistsOnDisk-java.lang.String-java.lang.String-\">fileExistsOnDisk</a>, <a href=\"../../acm/program/Program.html#fileSize-java.lang.String-\">fileSize</a>, <a href=\"../../acm/program/Program.html#fileSize-java.lang.String-java.lang.String-\">fileSize</a>, <a href=\"../../acm/program/Program.html#focusGained-java.awt.event.FocusEvent-\">focusGained</a>, <a href=\"../../acm/program/Program.html#focusLost-java.awt.event.FocusEvent-\">focusLost</a>, <a href=\"../../acm/program/Program.html#getAnimationDelay--\">getAnimationDelay</a>, <a href=\"../../acm/program/Program.html#getAppletStub--\">getAppletStub</a>, <a href=\"../../acm/program/Program.html#getArgumentArray--\">getArgumentArray</a>, <a href=\"../../acm/program/Program.html#getBoolean--\">getBoolean</a>, <a href=\"../../acm/program/Program.html#getBoolean-java.lang.String-\">getBoolean</a>, <a href=\"../../acm/program/Program.html#getBoolean-java.lang.String-java.lang.String-java.lang.String-\">getBoolean</a>, <a href=\"../../acm/program/Program.html#getBorder-java.lang.String-\">getBorder</a>, <a href=\"../../acm/program/Program.html#getBottomY--\">getBottomY</a>, <a href=\"../../acm/program/Program.html#getCenterLocation--\">getCenterLocation</a>, <a href=\"../../acm/program/Program.html#getCenterX--\">getCenterX</a>, <a href=\"../../acm/program/Program.html#getCenterY--\">getCenterY</a>, <a href=\"../../acm/program/Program.html#getCentralRegionSize--\">getCentralRegionSize</a>, <a href=\"../../acm/program/Program.html#getConsole--\">getConsole</a>, <a href=\"../../acm/program/Program.html#getDialog--\">getDialog</a>, <a href=\"../../acm/program/Program.html#getDouble--\">getDouble</a>, <a href=\"../../acm/program/Program.html#getDouble-double-double-\">getDouble</a>, <a href=\"../../acm/program/Program.html#getDouble-java.lang.String-\">getDouble</a>, <a href=\"../../acm/program/Program.html#getDouble-java.lang.String-double-double-\">getDouble</a>, <a href=\"../../acm/program/Program.html#getHeight--\">getHeight</a>, <a href=\"../../acm/program/Program.html#getInputModel--\">getInputModel</a>, <a href=\"../../acm/program/Program.html#getInteger--\">getInteger</a>, <a href=\"../../acm/program/Program.html#getInteger-int-int-\">getInteger</a>, <a href=\"../../acm/program/Program.html#getInteger-java.lang.String-\">getInteger</a>, <a href=\"../../acm/program/Program.html#getInteger-java.lang.String-int-int-\">getInteger</a>, <a href=\"../../acm/program/Program.html#getJFrame--\">getJFrame</a>, <a href=\"../../acm/program/Program.html#getLayout--\">getLayout</a>, <a href=\"../../acm/program/Program.html#getLine--\">getLine</a>, <a href=\"../../acm/program/Program.html#getLine-java.lang.String-\">getLine</a>, <a href=\"../../acm/program/Program.html#getMainThread--\">getMainThread</a>, <a href=\"../../acm/program/Program.html#getMenuBar--\">getMenuBar</a>, <a href=\"../../acm/program/Program.html#getOutputColor--\">getOutputColor</a>, <a href=\"../../acm/program/Program.html#getOutputModel--\">getOutputModel</a>, <a href=\"../../acm/program/Program.html#getParameter-java.lang.String-\">getParameter</a>, <a href=\"../../acm/program/Program.html#getParameterTable--\">getParameterTable</a>, <a href=\"../../acm/program/Program.html#getPreferredSize--\">getPreferredSize</a>, <a href=\"../../acm/program/Program.html#getReader--\">getReader</a>, <a href=\"../../acm/program/Program.html#getReal--\">getReal</a>, <a href=\"../../acm/program/Program.html#getReal-double-double-\">getReal</a>, <a href=\"../../acm/program/Program.html#getReal-java.lang.String-\">getReal</a>, <a href=\"../../acm/program/Program.html#getReal-java.lang.String-double-double-\">getReal</a>, <a href=\"../../acm/program/Program.html#getRegionPanel-java.lang.String-\">getRegionPanel</a>, <a href=\"../../acm/program/Program.html#getRightX--\">getRightX</a>, <a href=\"../../acm/program/Program.html#getScreenHeight--\">getScreenHeight</a>, <a href=\"../../acm/program/Program.html#getScreenSize--\">getScreenSize</a>, <a href=\"../../acm/program/Program.html#getScreenWidth--\">getScreenWidth</a>, <a href=\"../../acm/program/Program.html#getStartupObject--\">getStartupObject</a>, <a href=\"../../acm/program/Program.html#getTitle--\">getTitle</a>, <a href=\"../../acm/program/Program.html#getWidth--\">getWidth</a>, <a href=\"../../acm/program/Program.html#getWindow--\">getWindow</a>, <a href=\"../../acm/program/Program.html#getWriter--\">getWriter</a>, <a href=\"../../acm/program/Program.html#getYesOrNo-java.lang.String-\">getYesOrNo</a>, <a href=\"../../acm/program/Program.html#hasConfiguration--\">hasConfiguration</a>, <a href=\"../../acm/program/Program.html#insertUpdate-javax.swing.event.DocumentEvent-\">insertUpdate</a>, <a href=\"../../acm/program/Program.html#intervalAdded-javax.swing.event.ListDataEvent-\">intervalAdded</a>, <a href=\"../../acm/program/Program.html#intervalRemoved-javax.swing.event.ListDataEvent-\">intervalRemoved</a>, <a href=\"../../acm/program/Program.html#isAnimated--\">isAnimated</a>, <a href=\"../../acm/program/Program.html#isApplet--\">isApplet</a>, <a href=\"../../acm/program/Program.html#isAppletMode--\">isAppletMode</a>, <a href=\"../../acm/program/Program.html#isExitOnClose--\">isExitOnClose</a>, <a href=\"../../acm/program/Program.html#isInitialized--\">isInitialized</a>, <a href=\"../../acm/program/Program.html#itemStateChanged-java.awt.event.ItemEvent-\">itemStateChanged</a>, <a href=\"../../acm/program/Program.html#keyPressed-java.awt.event.KeyEvent-\">keyPressed</a>, <a href=\"../../acm/program/Program.html#keyReleased-java.awt.event.KeyEvent-\">keyReleased</a>, <a href=\"../../acm/program/Program.html#keyTyped-java.awt.event.KeyEvent-\">keyTyped</a>, <a href=\"../../acm/program/Program.html#killMe--\">killMe</a>, <a href=\"../../acm/program/Program.html#loadConfiguration--\">loadConfiguration</a>, <a href=\"../../acm/program/Program.html#loadConfiguration-java.util.Properties-\">loadConfiguration</a>, <a href=\"../../acm/program/Program.html#main-java.lang.String:A-\">main</a>, <a href=\"../../acm/program/Program.html#menuAction-java.awt.event.ActionEvent-\">menuAction</a>, <a href=\"../../acm/program/Program.html#menuCanceled-javax.swing.event.MenuEvent-\">menuCanceled</a>, <a href=\"../../acm/program/Program.html#menuDeselected-javax.swing.event.MenuEvent-\">menuDeselected</a>, <a href=\"../../acm/program/Program.html#menuSelected-javax.swing.event.MenuEvent-\">menuSelected</a>, <a href=\"../../acm/program/Program.html#mouseClicked-java.awt.event.MouseEvent-\">mouseClicked</a>, <a href=\"../../acm/program/Program.html#mouseDragged-java.awt.event.MouseEvent-\">mouseDragged</a>, <a href=\"../../acm/program/Program.html#mouseEntered-java.awt.event.MouseEvent-\">mouseEntered</a>, <a href=\"../../acm/program/Program.html#mouseExited-java.awt.event.MouseEvent-\">mouseExited</a>, <a href=\"../../acm/program/Program.html#mouseMoved-java.awt.event.MouseEvent-\">mouseMoved</a>, <a href=\"../../acm/program/Program.html#mousePressed-java.awt.event.MouseEvent-\">mousePressed</a>, <a href=\"../../acm/program/Program.html#mouseReleased-java.awt.event.MouseEvent-\">mouseReleased</a>, <a href=\"../../acm/program/Program.html#mouseWheelMoved-java.awt.event.MouseWheelEvent-\">mouseWheelMoved</a>, <a href=\"../../acm/program/Program.html#openFile-java.lang.String-\">openFile</a>, <a href=\"../../acm/program/Program.html#openFile-java.lang.String-java.lang.String-\">openFile</a>, <a href=\"../../acm/program/Program.html#openFileFromDisk-java.lang.String-\">openFileFromDisk</a>, <a href=\"../../acm/program/Program.html#openFileFromDisk-java.lang.String-java.lang.String-\">openFileFromDisk</a>, <a href=\"../../acm/program/Program.html#openFileFromJAR-java.lang.String-\">openFileFromJAR</a>, <a href=\"../../acm/program/Program.html#openFileFromJAR-java.lang.String-java.lang.String-\">openFileFromJAR</a>, <a href=\"../../acm/program/Program.html#pack--\">pack</a>, <a href=\"../../acm/program/Program.html#pause-double-\">pause</a>, <a href=\"../../acm/program/Program.html#pauseTick--\">pauseTick</a>, <a href=\"../../acm/program/Program.html#popupMenuCanceled-javax.swing.event.PopupMenuEvent-\">popupMenuCanceled</a>, <a href=\"../../acm/program/Program.html#popupMenuWillBecomeInvisible-javax.swing.event.PopupMenuEvent-\">popupMenuWillBecomeInvisible</a>, <a href=\"../../acm/program/Program.html#popupMenuWillBecomeVisible-javax.swing.event.PopupMenuEvent-\">popupMenuWillBecomeVisible</a>, <a href=\"../../acm/program/Program.html#print-boolean-\">print</a>, <a href=\"../../acm/program/Program.html#print-boolean-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-char-\">print</a>, <a href=\"../../acm/program/Program.html#print-char-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-double-\">print</a>, <a href=\"../../acm/program/Program.html#print-double-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-float-\">print</a>, <a href=\"../../acm/program/Program.html#print-float-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-int-\">print</a>, <a href=\"../../acm/program/Program.html#print-int-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-long-\">print</a>, <a href=\"../../acm/program/Program.html#print-long-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-java.lang.Object-\">print</a>, <a href=\"../../acm/program/Program.html#print-java.lang.Object-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-java.lang.String-\">print</a>, <a href=\"../../acm/program/Program.html#print-java.lang.String-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#printf-java.lang.String-java.lang.Object...-\">printf</a>, <a href=\"../../acm/program/Program.html#println--\">println</a>, <a href=\"../../acm/program/Program.html#println-boolean-\">println</a>, <a href=\"../../acm/program/Program.html#println-boolean-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-char-\">println</a>, <a href=\"../../acm/program/Program.html#println-char-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-double-\">println</a>, <a href=\"../../acm/program/Program.html#println-double-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-float-\">println</a>, <a href=\"../../acm/program/Program.html#println-float-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-int-\">println</a>, <a href=\"../../acm/program/Program.html#println-int-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-long-\">println</a>, <a href=\"../../acm/program/Program.html#println-long-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-java.lang.Object-\">println</a>, <a href=\"../../acm/program/Program.html#println-java.lang.Object-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-java.lang.String-\">println</a>, <a href=\"../../acm/program/Program.html#println-java.lang.String-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#prompt-java.lang.String-\">prompt</a>, <a href=\"../../acm/program/Program.html#readBoolean--\">readBoolean</a>, <a href=\"../../acm/program/Program.html#readBoolean-java.lang.String-\">readBoolean</a>, <a href=\"../../acm/program/Program.html#readBoolean-java.lang.String-java.lang.String-java.lang.String-\">readBoolean</a>, <a href=\"../../acm/program/Program.html#readDouble--\">readDouble</a>, <a href=\"../../acm/program/Program.html#readDouble-double-double-\">readDouble</a>, <a href=\"../../acm/program/Program.html#readDouble-java.lang.String-\">readDouble</a>, <a href=\"../../acm/program/Program.html#readDouble-java.lang.String-double-double-\">readDouble</a>, <a href=\"../../acm/program/Program.html#readInt--\">readInt</a>, <a href=\"../../acm/program/Program.html#readInt-int-int-\">readInt</a>, <a href=\"../../acm/program/Program.html#readInt-java.lang.String-\">readInt</a>, <a href=\"../../acm/program/Program.html#readInt-java.lang.String-int-int-\">readInt</a>, <a href=\"../../acm/program/Program.html#readLine--\">readLine</a>, <a href=\"../../acm/program/Program.html#readLine-java.lang.String-\">readLine</a>, <a href=\"../../acm/program/Program.html#remove-java.awt.Component-\">remove</a>, <a href=\"../../acm/program/Program.html#remove-int-\">remove</a>, <a href=\"../../acm/program/Program.html#removeFromRegion-java.awt.Component-java.lang.String-\">removeFromRegion</a>, <a href=\"../../acm/program/Program.html#removeMenuBar--\">removeMenuBar</a>, <a href=\"../../acm/program/Program.html#removeUpdate-javax.swing.event.DocumentEvent-\">removeUpdate</a>, <a href=\"../../acm/program/Program.html#runHook--\">runHook</a>, <a href=\"../../acm/program/Program.html#saveConfiguration--\">saveConfiguration</a>, <a href=\"../../acm/program/Program.html#saveConfiguration-java.util.Properties-\">saveConfiguration</a>, <a href=\"../../acm/program/Program.html#setAnimated-boolean-\">setAnimated</a>, <a href=\"../../acm/program/Program.html#setAnimationDelay-int-\">setAnimationDelay</a>, <a href=\"../../acm/program/Program.html#setAppletStub-java.applet.AppletStub-\">setAppletStub</a>, <a href=\"../../acm/program/Program.html#setBottomY-double-\">setBottomY</a>, <a href=\"../../acm/program/Program.html#setCenterLocation-double-double-\">setCenterLocation</a>, <a href=\"../../acm/program/Program.html#setCenterX-double-\">setCenterX</a>, <a href=\"../../acm/program/Program.html#setCenterY-double-\">setCenterY</a>, <a href=\"../../acm/program/Program.html#setConsole-acm.io.IOConsole-\">setConsole</a>, <a href=\"../../acm/program/Program.html#setDialog-acm.io.IODialog-\">setDialog</a>, <a href=\"../../acm/program/Program.html#setExitOnClose-boolean-\">setExitOnClose</a>, <a href=\"../../acm/program/Program.html#setFramesPerSecond-int-\">setFramesPerSecond</a>, <a href=\"../../acm/program/Program.html#setHeight-double-\">setHeight</a>, <a href=\"../../acm/program/Program.html#setInputModel-acm.io.IOModel-\">setInputModel</a>, <a href=\"../../acm/program/Program.html#setInvisible-acm.graphics.GObject-boolean-\">setInvisible</a>, <a href=\"../../acm/program/Program.html#setJFrame-javax.swing.JFrame-\">setJFrame</a>, <a href=\"../../acm/program/Program.html#setJMenuBar-javax.swing.JMenuBar-\">setJMenuBar</a>, <a href=\"../../acm/program/Program.html#setLayout-java.awt.LayoutManager-\">setLayout</a>, <a href=\"../../acm/program/Program.html#setLocation-double-double-\">setLocation</a>, <a href=\"../../acm/program/Program.html#setLocation-acm.graphics.GPoint-\">setLocation</a>, <a href=\"../../acm/program/Program.html#setOutputColor-java.awt.Color-\">setOutputColor</a>, <a href=\"../../acm/program/Program.html#setOutputModel-acm.io.IOModel-\">setOutputModel</a>, <a href=\"../../acm/program/Program.html#setParameter-java.lang.String-java.lang.String-\">setParameter</a>, <a href=\"../../acm/program/Program.html#setParameterTable-java.util.Map-\">setParameterTable</a>, <a href=\"../../acm/program/Program.html#setPauseScaleFactor-double-\">setPauseScaleFactor</a>, <a href=\"../../acm/program/Program.html#setResizable-boolean-\">setResizable</a>, <a href=\"../../acm/program/Program.html#setRightX-double-\">setRightX</a>, <a href=\"../../acm/program/Program.html#setShowPixelGrid-boolean-\">setShowPixelGrid</a>, <a href=\"../../acm/program/Program.html#setStartupObject-java.lang.Object-\">setStartupObject</a>, <a href=\"../../acm/program/Program.html#setTitle-java.lang.String-\">setTitle</a>, <a href=\"../../acm/program/Program.html#setWidth-double-\">setWidth</a>, <a href=\"../../acm/program/Program.html#setX-double-\">setX</a>, <a href=\"../../acm/program/Program.html#setY-double-\">setY</a>, <a href=\"../../acm/program/Program.html#showErrorMessage-java.lang.String-\">showErrorMessage</a>, <a href=\"../../acm/program/Program.html#start--\">start</a>, <a href=\"../../acm/program/Program.html#start-java.lang.String:A-\">start</a>, <a href=\"../../acm/program/Program.html#startAnimation--\">startAnimation</a>, <a href=\"../../acm/program/Program.html#startHook--\">startHook</a>, <a href=\"../../acm/program/Program.html#startRun--\">startRun</a>, <a href=\"../../acm/program/Program.html#stateChanged-javax.swing.event.ChangeEvent-\">stateChanged</a>, <a href=\"../../acm/program/Program.html#stopAnimation--\">stopAnimation</a>, <a href=\"../../acm/program/Program.html#textValueChanged-java.awt.event.TextEvent-\">textValueChanged</a>, <a href=\"../../acm/program/Program.html#validate--\">validate</a>, <a href=\"../../acm/program/Program.html#valueChanged-javax.swing.event.ListSelectionEvent-\">valueChanged</a>, <a href=\"../../acm/program/Program.html#windowActivated-java.awt.event.WindowEvent-\">windowActivated</a>, <a href=\"../../acm/program/Program.html#windowClosed-java.awt.event.WindowEvent-\">windowClosed</a>, <a href=\"../../acm/program/Program.html#windowClosing-java.awt.event.WindowEvent-\">windowClosing</a>, <a href=\"../../acm/program/Program.html#windowDeactivated-java.awt.event.WindowEvent-\">windowDeactivated</a>, <a href=\"../../acm/program/Program.html#windowDeiconified-java.awt.event.WindowEvent-\">windowDeiconified</a>, <a href=\"../../acm/program/Program.html#windowGainedFocus-java.awt.event.WindowEvent-\">windowGainedFocus</a>, <a href=\"../../acm/program/Program.html#windowIconified-java.awt.event.WindowEvent-\">windowIconified</a>, <a href=\"../../acm/program/Program.html#windowLostFocus-java.awt.event.WindowEvent-\">windowLostFocus</a>, <a href=\"../../acm/program/Program.html#windowOpened-java.awt.event.WindowEvent-\">windowOpened</a>, <a href=\"../../acm/program/Program.html#windowStateChanged-java.awt.event.WindowEvent-\">windowStateChanged</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JApplet\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#createRootPane--\" title=\"class or interface in javax.swing\">createRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getAccessibleContext--\" title=\"class or interface in javax.swing\">getAccessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getContentPane--\" title=\"class or interface in javax.swing\">getContentPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getGlassPane--\" title=\"class or interface in javax.swing\">getGlassPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getGraphics--\" title=\"class or interface in javax.swing\">getGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getJMenuBar--\" title=\"class or interface in javax.swing\">getJMenuBar</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getLayeredPane--\" title=\"class or interface in javax.swing\">getLayeredPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getRootPane--\" title=\"class or interface in javax.swing\">getRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getTransferHandler--\" title=\"class or interface in javax.swing\">getTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#isRootPaneCheckingEnabled--\" title=\"class or interface in javax.swing\">isRootPaneCheckingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#paramString--\" title=\"class or interface in javax.swing\">paramString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#repaint-long-int-int-int-int-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setContentPane-java.awt.Container-\" title=\"class or interface in javax.swing\">setContentPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setGlassPane-java.awt.Component-\" title=\"class or interface in javax.swing\">setGlassPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setLayeredPane-javax.swing.JLayeredPane-\" title=\"class or interface in javax.swing\">setLayeredPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setRootPane-javax.swing.JRootPane-\" title=\"class or interface in javax.swing\">setRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setRootPaneCheckingEnabled-boolean-\" title=\"class or interface in javax.swing\">setRootPaneCheckingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setTransferHandler-javax.swing.TransferHandler-\" title=\"class or interface in javax.swing\">setTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#update-java.awt.Graphics-\" title=\"class or interface in javax.swing\">update</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.applet.Applet\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.applet.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">Applet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAppletContext--\" title=\"class or interface in java.applet\">getAppletContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAppletInfo--\" title=\"class or interface in java.applet\">getAppletInfo</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAudioClip-java.net.URL-\" title=\"class or interface in java.applet\">getAudioClip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAudioClip-java.net.URL-java.lang.String-\" title=\"class or interface in java.applet\">getAudioClip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getCodeBase--\" title=\"class or interface in java.applet\">getCodeBase</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getDocumentBase--\" title=\"class or interface in java.applet\">getDocumentBase</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getImage-java.net.URL-\" title=\"class or interface in java.applet\">getImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getImage-java.net.URL-java.lang.String-\" title=\"class or interface in java.applet\">getImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getLocale--\" title=\"class or interface in java.applet\">getLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getParameterInfo--\" title=\"class or interface in java.applet\">getParameterInfo</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#isActive--\" title=\"class or interface in java.applet\">isActive</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#isValidateRoot--\" title=\"class or interface in java.applet\">isValidateRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#newAudioClip-java.net.URL-\" title=\"class or interface in java.applet\">newAudioClip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#play-java.net.URL-\" title=\"class or interface in java.applet\">play</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#play-java.net.URL-java.lang.String-\" title=\"class or interface in java.applet\">play</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#resize-java.awt.Dimension-\" title=\"class or interface in java.applet\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#resize-int-int-\" title=\"class or interface in java.applet\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#setStub-java.applet.AppletStub-\" title=\"class or interface in java.applet\">setStub</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#showStatus-java.lang.String-\" title=\"class or interface in java.applet\">showStatus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#stop--\" title=\"class or interface in java.applet\">stop</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Panel\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\">Panel</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true#addNotify--\" title=\"class or interface in java.awt\">addNotify</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.lang.String-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">addContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#applyComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">applyComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#areFocusTraversalKeysSet-int-\" title=\"class or interface in java.awt\">areFocusTraversalKeysSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#countComponents--\" title=\"class or interface in java.awt\">countComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#deliverEvent-java.awt.Event-\" title=\"class or interface in java.awt\">deliverEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#doLayout--\" title=\"class or interface in java.awt\">doLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-int-int-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getAlignmentX--\" title=\"class or interface in java.awt\">getAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getAlignmentY--\" title=\"class or interface in java.awt\">getAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponent-int-\" title=\"class or interface in java.awt\">getComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-int-int-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentCount--\" title=\"class or interface in java.awt\">getComponentCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponents--\" title=\"class or interface in java.awt\">getComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentZOrder-java.awt.Component-\" title=\"class or interface in java.awt\">getComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getContainerListeners--\" title=\"class or interface in java.awt\">getContainerListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalKeys-int-\" title=\"class or interface in java.awt\">getFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalPolicy--\" title=\"class or interface in java.awt\">getFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getInsets--\" title=\"class or interface in java.awt\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getListeners-java.lang.Class-\" title=\"class or interface in java.awt\">getListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMaximumSize--\" title=\"class or interface in java.awt\">getMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMinimumSize--\" title=\"class or interface in java.awt\">getMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMousePosition-boolean-\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#insets--\" title=\"class or interface in java.awt\">insets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#invalidate--\" title=\"class or interface in java.awt\">invalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isAncestorOf-java.awt.Component-\" title=\"class or interface in java.awt\">isAncestorOf</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot--\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot-java.awt.Container-\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicyProvider--\" title=\"class or interface in java.awt\">isFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicySet--\" title=\"class or interface in java.awt\">isFocusTraversalPolicySet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#layout--\" title=\"class or interface in java.awt\">layout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintStream-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintWriter-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#locate-int-int-\" title=\"class or interface in java.awt\">locate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#minimumSize--\" title=\"class or interface in java.awt\">minimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paint-java.awt.Graphics-\" title=\"class or interface in java.awt\">paint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paintComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#preferredSize--\" title=\"class or interface in java.awt\">preferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#print-java.awt.Graphics-\" title=\"class or interface in java.awt\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#printComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">printComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processContainerEvent-java.awt.event.ContainerEvent-\" title=\"class or interface in java.awt\">processContainerEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">processEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">removeContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeNotify--\" title=\"class or interface in java.awt\">removeNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setComponentZOrder-java.awt.Component-int-\" title=\"class or interface in java.awt\">setComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusCycleRoot-boolean-\" title=\"class or interface in java.awt\">setFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalKeys-int-java.util.Set-\" title=\"class or interface in java.awt\">setFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicy-java.awt.FocusTraversalPolicy-\" title=\"class or interface in java.awt\">setFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicyProvider-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFont-java.awt.Font-\" title=\"class or interface in java.awt\">setFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#transferFocusDownCycle--\" title=\"class or interface in java.awt\">transferFocusDownCycle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validateTree--\" title=\"class or interface in java.awt\">validateTree</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#action-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">action</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#add-java.awt.PopupMenu-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">addComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">addFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">addHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">addHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">addInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">addKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">addMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">addMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">addMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#bounds--\" title=\"class or interface in java.awt\">bounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#coalesceEvents-java.awt.AWTEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">coalesceEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-int-int-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-java.awt.Point-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-java.awt.image.ImageProducer-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-int-int-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-java.awt.ImageCapabilities-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disable--\" title=\"class or interface in java.awt\">disable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disableEvents-long-\" title=\"class or interface in java.awt\">disableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#dispatchEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">dispatchEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable--\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable-boolean-\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableEvents-long-\" title=\"class or interface in java.awt\">enableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableInputMethods-boolean-\" title=\"class or interface in java.awt\">enableInputMethods</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-boolean-boolean-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-byte-byte-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-char-char-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-double-double-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-float-float-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-int-int-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-long-long-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-short-short-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBackground--\" title=\"class or interface in java.awt\">getBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBaseline-int-int-\" title=\"class or interface in java.awt\">getBaseline</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBaselineResizeBehavior--\" title=\"class or interface in java.awt\">getBaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds--\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getColorModel--\" title=\"class or interface in java.awt\">getColorModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentListeners--\" title=\"class or interface in java.awt\">getComponentListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentOrientation--\" title=\"class or interface in java.awt\">getComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getCursor--\" title=\"class or interface in java.awt\">getCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getDropTarget--\" title=\"class or interface in java.awt\">getDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusCycleRootAncestor--\" title=\"class or interface in java.awt\">getFocusCycleRootAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusListeners--\" title=\"class or interface in java.awt\">getFocusListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusTraversalKeysEnabled--\" title=\"class or interface in java.awt\">getFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFont--\" title=\"class or interface in java.awt\">getFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFontMetrics-java.awt.Font-\" title=\"class or interface in java.awt\">getFontMetrics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getForeground--\" title=\"class or interface in java.awt\">getForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getGraphicsConfiguration--\" title=\"class or interface in java.awt\">getGraphicsConfiguration</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyBoundsListeners--\" title=\"class or interface in java.awt\">getHierarchyBoundsListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyListeners--\" title=\"class or interface in java.awt\">getHierarchyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getIgnoreRepaint--\" title=\"class or interface in java.awt\">getIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputContext--\" title=\"class or interface in java.awt\">getInputContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodListeners--\" title=\"class or interface in java.awt\">getInputMethodListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodRequests--\" title=\"class or interface in java.awt\">getInputMethodRequests</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getKeyListeners--\" title=\"class or interface in java.awt\">getKeyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation--\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation-java.awt.Point-\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocationOnScreen--\" title=\"class or interface in java.awt\">getLocationOnScreen</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseListeners--\" title=\"class or interface in java.awt\">getMouseListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseMotionListeners--\" title=\"class or interface in java.awt\">getMouseMotionListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMousePosition--\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseWheelListeners--\" title=\"class or interface in java.awt\">getMouseWheelListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getName--\" title=\"class or interface in java.awt\">getName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getParent--\" title=\"class or interface in java.awt\">getParent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPeer--\" title=\"class or interface in java.awt\">getPeer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners--\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners-java.lang.String-\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize--\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getToolkit--\" title=\"class or interface in java.awt\">getToolkit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getTreeLock--\" title=\"class or interface in java.awt\">getTreeLock</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getX--\" title=\"class or interface in java.awt\">getX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getY--\" title=\"class or interface in java.awt\">getY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#gotFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">gotFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#handleEvent-java.awt.Event-\" title=\"class or interface in java.awt\">handleEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hasFocus--\" title=\"class or interface in java.awt\">hasFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hide--\" title=\"class or interface in java.awt\">hide</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#imageUpdate-java.awt.Image-int-int-int-int-int-\" title=\"class or interface in java.awt\">imageUpdate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#inside-int-int-\" title=\"class or interface in java.awt\">inside</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isBackgroundSet--\" title=\"class or interface in java.awt\">isBackgroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isCursorSet--\" title=\"class or interface in java.awt\">isCursorSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDisplayable--\" title=\"class or interface in java.awt\">isDisplayable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDoubleBuffered--\" title=\"class or interface in java.awt\">isDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isEnabled--\" title=\"class or interface in java.awt\">isEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusable--\" title=\"class or interface in java.awt\">isFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusOwner--\" title=\"class or interface in java.awt\">isFocusOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusTraversable--\" title=\"class or interface in java.awt\">isFocusTraversable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFontSet--\" title=\"class or interface in java.awt\">isFontSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isForegroundSet--\" title=\"class or interface in java.awt\">isForegroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isLightweight--\" title=\"class or interface in java.awt\">isLightweight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMaximumSizeSet--\" title=\"class or interface in java.awt\">isMaximumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMinimumSizeSet--\" title=\"class or interface in java.awt\">isMinimumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isOpaque--\" title=\"class or interface in java.awt\">isOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isPreferredSizeSet--\" title=\"class or interface in java.awt\">isPreferredSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isShowing--\" title=\"class or interface in java.awt\">isShowing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isValid--\" title=\"class or interface in java.awt\">isValid</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isVisible--\" title=\"class or interface in java.awt\">isVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyDown-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyUp-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list--\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintStream-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintWriter-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#location--\" title=\"class or interface in java.awt\">location</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#lostFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">lostFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDown-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDrag-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDrag</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseEnter-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseEnter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseExit-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseExit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseMove-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseMove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseUp-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#move-int-int-\" title=\"class or interface in java.awt\">move</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#nextFocus--\" title=\"class or interface in java.awt\">nextFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#paintAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#postEvent-java.awt.Event-\" title=\"class or interface in java.awt\">postEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#printAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">printAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processComponentEvent-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt\">processComponentEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processFocusEvent-java.awt.event.FocusEvent-\" title=\"class or interface in java.awt\">processFocusEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyBoundsEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyBoundsEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processInputMethodEvent-java.awt.event.InputMethodEvent-\" title=\"class or interface in java.awt\">processInputMethodEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in java.awt\">processKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseEvent-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt\">processMouseEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseMotionEvent-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt\">processMouseMotionEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseWheelEvent-java.awt.event.MouseWheelEvent-\" title=\"class or interface in java.awt\">processMouseWheelEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#remove-java.awt.MenuComponent-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">removeComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">removeFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">removeHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">removeHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">removeInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">removeKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">removeMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">removeMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">removeMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-int-int-int-int-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-long-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocus--\" title=\"class or interface in java.awt\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocus-boolean-\" title=\"class or interface in java.awt\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocusInWindow--\" title=\"class or interface in java.awt\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocusInWindow-boolean-\" title=\"class or interface in java.awt\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#reshape-int-int-int-int-\" title=\"class or interface in java.awt\">reshape</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#revalidate--\" title=\"class or interface in java.awt\">revalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-int-int-int-int-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">setComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setCursor-java.awt.Cursor-\" title=\"class or interface in java.awt\">setCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setDropTarget-java.awt.dnd.DropTarget-\" title=\"class or interface in java.awt\">setDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setEnabled-boolean-\" title=\"class or interface in java.awt\">setEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusable-boolean-\" title=\"class or interface in java.awt\">setFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusTraversalKeysEnabled-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setForeground-java.awt.Color-\" title=\"class or interface in java.awt\">setForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setIgnoreRepaint-boolean-\" title=\"class or interface in java.awt\">setIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocale-java.util.Locale-\" title=\"class or interface in java.awt\">setLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-int-int-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-java.awt.Point-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setMaximumSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setMinimumSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setName-java.lang.String-\" title=\"class or interface in java.awt\">setName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setPreferredSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setVisible-boolean-\" title=\"class or interface in java.awt\">setVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show--\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show-boolean-\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#size--\" title=\"class or interface in java.awt\">size</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#toString--\" title=\"class or interface in java.awt\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocus--\" title=\"class or interface in java.awt\">transferFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusBackward--\" title=\"class or interface in java.awt\">transferFocusBackward</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusUpCycle--\" title=\"class or interface in java.awt\">transferFocusUpCycle</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.program.ProgramInterface\">\n<!--   -->\n</a>\n<h3>Methods inherited from interface&nbsp;acm.program.<a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></h3>\n<code><a href=\"../../acm/program/ProgramInterface.html#exit--\">exit</a>, <a href=\"../../acm/program/ProgramInterface.html#getTitle--\">getTitle</a>, <a href=\"../../acm/program/ProgramInterface.html#pause-double-\">pause</a>, <a href=\"../../acm/program/ProgramInterface.html#print-java.lang.Object-\">print</a>, <a href=\"../../acm/program/ProgramInterface.html#print-java.lang.String-\">print</a>, <a href=\"../../acm/program/ProgramInterface.html#printf-java.lang.String-java.lang.Object...-\">printf</a>, <a href=\"../../acm/program/ProgramInterface.html#println--\">println</a>, <a href=\"../../acm/program/ProgramInterface.html#println-java.lang.Object-\">println</a>, <a href=\"../../acm/program/ProgramInterface.html#println-java.lang.String-\">println</a>, <a href=\"../../acm/program/ProgramInterface.html#setParameterTable-java.util.Map-\">setParameterTable</a>, <a href=\"../../acm/program/ProgramInterface.html#setStartupObject-java.lang.Object-\">setStartupObject</a>, <a href=\"../../acm/program/ProgramInterface.html#setTitle-java.lang.String-\">setTitle</a>, <a href=\"../../acm/program/ProgramInterface.html#start--\">start</a>, <a href=\"../../acm/program/ProgramInterface.html#start-java.lang.String:A-\">start</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.graphics.GCanvasInterface\">\n<!--   -->\n</a>\n<h3>Methods inherited from interface&nbsp;acm.graphics.<a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></h3>\n<code><a href=\"../../acm/graphics/GCanvasInterface.html#getBackground--\">getBackground</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#getFont--\">getFont</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#getHeight--\">getHeight</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#getSize--\">getSize</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#getWidth--\">getWidth</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#setFont-java.awt.Font-\">setFont</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#setSize-java.awt.Dimension-\">setSize</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.event.MouseListener\">\n<!--   -->\n</a>\n<h3>Methods inherited from interface&nbsp;java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true#mouseClicked-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseClicked</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true#mouseEntered-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseEntered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true#mouseExited-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseExited</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true#mousePressed-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mousePressed</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true#mouseReleased-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseReleased</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.event.MouseMotionListener\">\n<!--   -->\n</a>\n<h3>Methods inherited from interface&nbsp;java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true#mouseDragged-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseDragged</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true#mouseMoved-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseMoved</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Iterable\">\n<!--   -->\n</a>\n<h3>Methods inherited from interface&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true#forEach-java.util.function.Consumer-\" title=\"class or interface in java.lang\">forEach</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true#spliterator--\" title=\"class or interface in java.lang\">spliterator</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GraphicsProgram--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GraphicsProgram</h4>\n<pre>protected&nbsp;GraphicsProgram()</pre>\n<div class=\"block\">Creates a new graphics program.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GraphicsProgram program = new GraphicsProgram();</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"add-acm.graphics.GObject-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>public&nbsp;void&nbsp;add(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</pre>\n<div class=\"block\">Adds a new graphical object to this container.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#add-acm.graphics.GObject-\">add</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>gobj</code> - The graphical object to add</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>add(gobj);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"add-acm.graphics.GObject-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>public final&nbsp;void&nbsp;add(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj,\n                      double&nbsp;x,\n                      double&nbsp;y)</pre>\n<div class=\"block\">Adds the graphical object to the canvas and sets its location to the\n point (<code>x</code>,&nbsp;<code>y</code>).</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#add-acm.graphics.GObject-double-double-\">add</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>gobj</code> - The graphical object to add</dd>\n<dd><code>x</code> - The new x-coordinate for the object</dd>\n<dd><code>y</code> - The new y-coordinate for the object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>add(gobj, x, y);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"add-acm.graphics.GObject-acm.graphics.GPoint-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>public final&nbsp;void&nbsp;add(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj,\n                      <a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</pre>\n<div class=\"block\">Adds the graphical object to the canvas and sets its location to the\n specified point.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#add-acm.graphics.GObject-acm.graphics.GPoint-\">add</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>gobj</code> - The graphical object to add</dd>\n<dd><code>pt</code> - The new coordinates of the point</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>add(gobj, pt);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"add-java.awt.Component-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>public final&nbsp;void&nbsp;add(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n                      double&nbsp;x,\n                      double&nbsp;y)</pre>\n<div class=\"block\">Adds the component to the canvas and sets its location to the point (\n <code>x</code>,&nbsp;<code>y</code>).</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#add-java.awt.Component-double-double-\">add</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>comp</code> - The component to add</dd>\n<dd><code>x</code> - The new x-coordinate for the object</dd>\n<dd><code>y</code> - The new y-coordinate for the object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>add(comp, x, y);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"add-java.awt.Component-acm.graphics.GPoint-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>public final&nbsp;void&nbsp;add(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n                      <a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</pre>\n<div class=\"block\">Adds the component to the canvas and sets its location to the specified\n point.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#add-java.awt.Component-acm.graphics.GPoint-\">add</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>comp</code> - The component to add</dd>\n<dd><code>pt</code> - A <code>GPoint</code> object giving the coordinates of the\n            point</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>add(comp, pt);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"addKeyListeners--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addKeyListeners</h4>\n<pre>public&nbsp;void&nbsp;addKeyListeners()</pre>\n<div class=\"block\">Adds the program as a <code>KeyListener</code> to the canvas.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/GraphicsProgramInterface.html#addKeyListeners--\">addKeyListeners</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>addKeyListeners();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"addKeyListeners-java.awt.event.KeyListener-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addKeyListeners</h4>\n<pre>public&nbsp;void&nbsp;addKeyListeners(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>&nbsp;listener)</pre>\n<div class=\"block\">Adds the specified listener as a <code>KeyListener</code> to the canvas.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/GraphicsProgramInterface.html#addKeyListeners-java.awt.event.KeyListener-\">addKeyListeners</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>listener</code> - A <code>KeyListener</code> object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>addKeyListeners(listener);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"addMouseListeners--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addMouseListeners</h4>\n<pre>public&nbsp;void&nbsp;addMouseListeners()</pre>\n<div class=\"block\">Adds the program as both a <code>MouseListener</code> and\n <code>MouseMotionListener</code> to the canvas.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/GraphicsProgramInterface.html#addMouseListeners--\">addMouseListeners</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>addMouseListeners();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"addMouseListeners-java.util.EventListener-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addMouseListeners</h4>\n<pre>public&nbsp;void&nbsp;addMouseListeners(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a>&nbsp;listener)</pre>\n<div class=\"block\">Adds the specified listener as a <code>MouseListener</code> and/or\n <code>MouseMotionListener</code>, as appropriate, to the canvas.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/GraphicsProgramInterface.html#addMouseListeners-java.util.EventListener-\">addMouseListeners</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>listener</code> - A listener object that is either a <code>MouseListener</code>,\n            a <code>MouseMotionListener</code>, or both</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>addMouseListeners(listener);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"clear--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clear</h4>\n<pre>public&nbsp;void&nbsp;clear()</pre>\n<div class=\"block\">Removes all graphical objects from this container.\n Equivalent to removeAll but also clears pixel data.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#clear--\">clear</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>clear();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"clearCanvas--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clearCanvas</h4>\n<pre>public&nbsp;void&nbsp;clearCanvas()</pre>\n<div class=\"block\">Removes all graphical objects from this container.\n Equivalent to removeAll.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/GraphicsProgramInterface.html#clearCanvas--\">clearCanvas</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>clearCanvas();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"createGCanvas--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createGCanvas</h4>\n<pre>protected&nbsp;<a href=\"../../acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a>&nbsp;createGCanvas()</pre>\n<div class=\"block\">Creates the <code>GCanvas</code> used by the <code>GraphicsProgram</code>\n . Subclasses can override this method to create their own\n <code>GCanvas</code> types.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The <code>GCanvas</code> to be inserted into the program</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GCanvas gc = program.createGCanvas();</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"endHook--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>endHook</h4>\n<pre>protected&nbsp;void&nbsp;endHook()</pre>\n<div class=\"block\">Ensures that the window is repainted at the end of the program.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/Program.html#endHook--\">endHook</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getCanvasHeight--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getCanvasHeight</h4>\n<pre>public&nbsp;double&nbsp;getCanvasHeight()</pre>\n<div class=\"block\">Returns the height of the central canvas area.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/GraphicsProgramInterface.html#getCanvasHeight--\">getCanvasHeight</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the height of the central canvas area</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getCanvasSize--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getCanvasSize</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a>&nbsp;getCanvasSize()</pre>\n<div class=\"block\">Returns the size of the central canvas area.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/GraphicsProgramInterface.html#getCanvasSize--\">getCanvasSize</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the size of the central canvas area</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getCanvasWidth--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getCanvasWidth</h4>\n<pre>public&nbsp;double&nbsp;getCanvasWidth()</pre>\n<div class=\"block\">Returns the width of the central canvas area.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/GraphicsProgramInterface.html#getCanvasWidth--\">getCanvasWidth</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the width of the central canvas area</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getElementCount--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getElementCount</h4>\n<pre>public&nbsp;int&nbsp;getElementCount()</pre>\n<div class=\"block\">Returns the number of graphical objects stored in this\n <code>GCanvas</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#getElementCount--\">getElementCount</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The number of graphical objects in this <code>GCanvas</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int n = getElementCount();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getElement-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getElement</h4>\n<pre>public&nbsp;&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;&nbsp;T&nbsp;getElement(int&nbsp;index)</pre>\n<div class=\"block\">Returns the graphical object at the specified index, numbering from back\n to front in the the <i>z</i> dimension.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#getElement-int-\">getElement</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>index</code> - The index of the component to return</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The graphical object at the specified index</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GObject gobj = getElement(index);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getElementAt-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getElementAt</h4>\n<pre>public&nbsp;&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;&nbsp;T&nbsp;getElementAt(double&nbsp;x,\n                                          double&nbsp;y)</pre>\n<div class=\"block\">Returns the topmost graphical object that contains the point (\n <code>x</code>, <code>y</code>), or <code>null</code> if no such object\n exists.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#getElementAt-double-double-\">getElementAt</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x</code> - The x-coordinate of the point being tested</dd>\n<dd><code>y</code> - The y-coordinate of the point being tested</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The graphical object at the specified location, or\n         <code>null</code> if no such object exists.</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GObject gobj = program.getElementAt(x, y);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getElementAt-double...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getElementAt</h4>\n<pre>public&nbsp;&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;&nbsp;T&nbsp;getElementAt(double...&nbsp;coords)</pre>\n<div class=\"block\">This version of getElementAt accepts a variable number of coordinate\n pairs (in x1, y1, x2, y2, x3, y3, ... order) and will return the\n topmost graphical objectfound at any of these pairs.\n The pairs are checked in the order they are passed.\n If no graphical object is found at any of these coordinate pairs,\n null is returned.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#getElementAt-double...-\">getElementAt</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getElementAt-acm.graphics.GPoint-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getElementAt</h4>\n<pre>public final&nbsp;&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;&nbsp;T&nbsp;getElementAt(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</pre>\n<div class=\"block\">Returns the topmost graphical object that contains the specified point,\n or <code>null</code> if no such object exists.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#getElementAt-acm.graphics.GPoint-\">getElementAt</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>pt</code> - The coordinates being tested</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The graphical object at the specified location, or\n         <code>null</code> if no such object exists</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GObject gobj = program.getElementAt(pt);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getGCanvas--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getGCanvas</h4>\n<pre>public&nbsp;<a href=\"../../acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a>&nbsp;getGCanvas()</pre>\n<div class=\"block\">Returns the <code>GCanvas</code> object used by this program.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/GraphicsProgramInterface.html#getGCanvas--\">getGCanvas</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The <code>GCanvas</code> object used by the program</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>GCanvas gc = getGCanvas();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"hasElementAt-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hasElementAt</h4>\n<pre>public&nbsp;boolean&nbsp;hasElementAt(double&nbsp;x,\n                            double&nbsp;y)</pre>\n<div class=\"block\">Returns true if a graphical object exists that touches the given\n (x, y) pixel position, or false if no such object exists.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#hasElementAt-double-double-\">hasElementAt</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"hasElementAt-double...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hasElementAt</h4>\n<pre>public&nbsp;boolean&nbsp;hasElementAt(double...&nbsp;coords)</pre>\n<div class=\"block\">Returns true if a graphical object exists that touches any of the given\n (x, y) pixel positions, or false if no such object exists.\n This method accepts a variable number of coordinate\n pairs (in x1, y1, x2, y2, x3, y3, ... order).\n The pairs are checked in the order they are passed.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#hasElementAt-double...-\">hasElementAt</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"init--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>init</h4>\n<pre>public&nbsp;void&nbsp;init()</pre>\n<div class=\"block\">Specifies the code to be executed as startup time before the\n <code>run</code> method is called. Subclasses can override this method to\n perform any initialization code that would ordinarily be included in an\n applet <code>init</code> method. In general, subclasses will override\n <code>init</code> in GUI-based programs where the program simply sets up\n an initial state and then waits for events from the user. The\n <code>run</code> method is required for applications in which there needs\n to be some control thread while the program runs, as in a typical\n animation.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#init--\">init</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/Program.html#init--\">init</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>program.init();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"isAntiAliasing--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isAntiAliasing</h4>\n<pre>public&nbsp;boolean&nbsp;isAntiAliasing()</pre>\n<div class=\"block\">Sets whether this program's canvas uses anti-aliasing, which is\n smoothing and blending of neighboring pixels.\n Default true.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#isAntiAliasing--\">isAntiAliasing</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"isStarted--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isStarted</h4>\n<pre>protected&nbsp;boolean&nbsp;isStarted()</pre>\n<div class=\"block\">Checks to see whether this program has started, usually by checking to\n see whether some pane exists. Subclasses can override this method to\n ensure that their structures are visible before proceeding.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/Program.html#isStarted--\">isStarted</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"iterator--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>iterator</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true\" title=\"class or interface in java.util\">Iterator</a>&lt;<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;&nbsp;iterator()</pre>\n<div class=\"block\">Returns an <code>Iterator</code> that cycles through the elements within\n this container in the default direction, which is from back to front. You\n can also run the iterator in the opposite direction by using the <a\n href=\"#iterator(int)\"><code>iterator</code></a><code>(</code><font\n size=-1><i>direction</i></font><code>)</code> form of this method.\n \n <p>\n Applets that want to run in browsers, however, should avoid using this\n method, because <code>Iterator</code> is not supported on 1.1 browsers.\n For maximum portability, you should rely instead on the <a\n href=\"GContainer.html#getElementCount()\"><code>getElementCount</code></a>\n and <a href=\"GContainer.html#getElement(int)\"><code>getElement</code></a>\n methods, which provide the same functionality in a browser-compatible\n way.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#iterator--\">iterator</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true#iterator--\" title=\"class or interface in java.lang\">iterator</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;</code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>An <code>Iterator</code> ranging over the elements of the\n         container from back to front</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>Iterator<GObject> i = iterator();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"iterator-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>iterator</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true\" title=\"class or interface in java.util\">Iterator</a>&lt;<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;&nbsp;iterator(int&nbsp;direction)</pre>\n<div class=\"block\">Returns an <code>Iterator</code> that cycles through the elements within\n this container in the specified direction, which must be one of the\n constants <a href=\"../graphics/GContainer.html#FRONT_TO_BACK\">\n <code>FRONT_TO_BACK</code></a> or <a\n href=\"GContainer.html#BACK_TO_FRONT\"><code>BACK_TO_FRONT</code></a> from\n the <a href=\"../graphics/GContainer.html\"><code>GContainer</code></a>\n interface.\n <p>\n \n <code>  for (Iterator&lt;GObject&gt; i = iterator(direction); i.hasNext(); )</code>\n \n <p>\n Applets that want to run in browsers, however, should avoid using this\n method, because <code>Iterator</code> is not supported on 1.1 browsers.\n For maximum portability, you should rely instead on the <a\n href=\"GContainer.html#getElementCount()\"><code>getElementCount</code></a>\n and <a href=\"GContainer.html#getElement(int)\"><code>getElement</code></a>\n methods, which provide the same functionality in a browser-compatible\n way.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#iterator-int-\">iterator</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>An <code>Iterator</code> ranging over the elements of the\n         container in the specified direction</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>Iterator<GObject> i = iterator(direction);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"remove-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>remove</h4>\n<pre>public&nbsp;void&nbsp;remove(double&nbsp;x,\n                   double&nbsp;y)</pre>\n<div class=\"block\">Removes the top-most graphical object at the given (x, y) position from this container.\n If no graphical object is located at that position, does nothing.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#remove-double-double-\">remove</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>remove(x, y);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"remove-acm.graphics.GPoint-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>remove</h4>\n<pre>public&nbsp;void&nbsp;remove(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</pre>\n<div class=\"block\">Removes the top-most graphical object at the given (x, y) position from this container.\n If no graphical object is located at that position, does nothing.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#remove-acm.graphics.GPoint-\">remove</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>remove(pt);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"remove-acm.graphics.GObject-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>remove</h4>\n<pre>public&nbsp;void&nbsp;remove(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</pre>\n<div class=\"block\">Removes a graphical object from this container.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#remove-acm.graphics.GObject-\">remove</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>gobj</code> - The graphical object to remove</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>remove(gobj);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"removeAll--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeAll</h4>\n<pre>public&nbsp;void&nbsp;removeAll()</pre>\n<div class=\"block\">Removes all graphical objects from this container. Note that this\n definition overrides the <code>Container</code> version of\n <code>removeAll</code>, which is replaced by <a\n href=\"#removeAllComponents()\"><code>removeAllComponents</code></a>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#removeAll--\">removeAll</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/Program.html#removeAll--\">removeAll</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>removeAll();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"removeAll-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeAll</h4>\n<pre>public&nbsp;void&nbsp;removeAll(double&nbsp;x,\n                      double&nbsp;y)</pre>\n<div class=\"block\">Removes all graphical objects at the given (x, y) position from this container.\n If no graphical objects are located at that position, does nothing.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#removeAll-double-double-\">removeAll</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>removeAll(x, y);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"removeAll-double...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeAll</h4>\n<pre>public&nbsp;void&nbsp;removeAll(double...&nbsp;coords)</pre>\n<div class=\"block\">Removes all graphical objects at the given (x, y) positions from this container.\n If no graphical objects are located at that position, does nothing.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#removeAll-double...-\">removeAll</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>removeAll(x1, y1, x2, y2, ...);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"removeAll-acm.graphics.GPoint-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeAll</h4>\n<pre>public&nbsp;void&nbsp;removeAll(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</pre>\n<div class=\"block\">Removes all graphical objects at the given (x, y) position from this container.\n If no graphical objects are located at that position, does nothing.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#removeAll-acm.graphics.GPoint-\">removeAll</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>removeAll(pt);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"removeAllComponents--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeAllComponents</h4>\n<pre>public&nbsp;void&nbsp;removeAllComponents()</pre>\n<div class=\"block\">Removes all components from this container.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/GraphicsProgramInterface.html#removeAllComponents--\">removeAllComponents</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>removeAllComponents();</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"repaint--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>repaint</h4>\n<pre>public&nbsp;void&nbsp;repaint()</pre>\n<div class=\"block\">Signals a need to repaint this window.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#repaint--\">repaint</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/Program.html#repaint--\">repaint</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"run--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>run</h4>\n<pre>public&nbsp;void&nbsp;run()</pre>\n<div class=\"block\">Specifies the code to be executed as the program runs. The\n <code>run</code> method is required for applications that have a thread\n of control that runs even in the absence of user actions, such as a\n program that uses console interation or that involves animation.\n GUI-based programs that operate by setting up an initial configuration\n and then wait for user events usually do not specify a <code>run</code>\n method and supply a new definition for <code>init</code> instead.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#run--\">run</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true#run--\" title=\"class or interface in java.lang\">run</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/Program.html#run--\">run</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setAntiAliasing-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setAntiAliasing</h4>\n<pre>public&nbsp;void&nbsp;setAntiAliasing(boolean&nbsp;antialias)</pre>\n<div class=\"block\">Sets whether this program's canvas uses anti-aliasing, which is\n smoothing and blending of neighboring pixels.\n Default true.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#setAntiAliasing-boolean-\">setAntiAliasing</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setBackground-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setBackground</h4>\n<pre>public&nbsp;void&nbsp;setBackground(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;bg)</pre>\n<div class=\"block\">Sets the background color of the <code>GCanvas</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#setBackground-java.awt.Color-\">setBackground</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/Program.html#setBackground-java.awt.Color-\">setBackground</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>bg</code> - The new background color</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>setBackground(bg);</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"setCanvasHeight-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setCanvasHeight</h4>\n<pre>public&nbsp;void&nbsp;setCanvasHeight(double&nbsp;height)</pre>\n<div class=\"block\">Sets this program to be exactly the right size so that its graphical canvas will be\n the given height in pixels.\n This is often preferred over setHeight() because you'll know exactly how many pixels\n are available to you for drawing.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/GraphicsProgramInterface.html#setCanvasHeight-double-\">setCanvasHeight</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>height</code> - the desired height of the drawing canvas, in pixels</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setCanvasSize-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setCanvasSize</h4>\n<pre>public&nbsp;void&nbsp;setCanvasSize(double&nbsp;width,\n                          double&nbsp;height)</pre>\n<div class=\"block\">Sets this program to be exactly the right size so that its graphical canvas will be\n the given size in pixels.\n This is often preferred over setSize() because you'll know exactly how many pixels\n are available to you for drawing.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/GraphicsProgramInterface.html#setCanvasSize-double-double-\">setCanvasSize</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>width</code> - the desired width of the drawing canvas, in pixels</dd>\n<dd><code>height</code> - the desired height of the drawing canvas, in pixels</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setCanvasWidth-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setCanvasWidth</h4>\n<pre>public&nbsp;void&nbsp;setCanvasWidth(double&nbsp;width)</pre>\n<div class=\"block\">Sets this program to be exactly the right size so that its graphical canvas will be\n the given width in pixels.\n This is often preferred over setWidth() because you'll know exactly how many pixels\n are available to you for drawing.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/GraphicsProgramInterface.html#setCanvasWidth-double-\">setCanvasWidth</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>width</code> - the desired width of the drawing canvas, in pixels</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setSize-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setSize</h4>\n<pre>public&nbsp;void&nbsp;setSize(double&nbsp;width,\n                    double&nbsp;height)</pre>\n<div class=\"block\">Sets this program to be exactly the right size so that its graphical canvas will be\n the given size in pixels.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/GraphicsProgramInterface.html#setSize-double-double-\">setSize</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/Program.html#setSize-double-double-\">setSize</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>width</code> - the desired width of the drawing canvas, in pixels</dd>\n<dd><code>height</code> - the desired height of the drawing canvas, in pixels</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setShowPixelInfo-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setShowPixelInfo</h4>\n<pre>public&nbsp;void&nbsp;setShowPixelInfo(boolean&nbsp;show)</pre>\n<div class=\"block\">Sets whether to display information on this canvas about the current pixel where\n the mouse pointer is resting in this program's graphical canvas.\n Displays the current pixel's (x, y) coordinate and color.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#setShowPixelInfo-boolean-\">setShowPixelInfo</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/Program.html#setShowPixelInfo-boolean-\">setShowPixelInfo</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setSize-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setSize</h4>\n<pre>public&nbsp;void&nbsp;setSize(int&nbsp;width,\n                    int&nbsp;height)</pre>\n<div class=\"block\">Sets this program to be exactly the right size so that its graphical canvas will be\n the given size in pixels.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-int-int-\" title=\"class or interface in java.awt\">setSize</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>width</code> - the desired width of the drawing canvas, in pixels</dd>\n<dd><code>height</code> - the desired height of the drawing canvas, in pixels</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setWindowSize-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setWindowSize</h4>\n<pre>public&nbsp;void&nbsp;setWindowSize(double&nbsp;width,\n                          double&nbsp;height)</pre>\n<div class=\"block\">Sets this program's window to be the given size in pixels.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/GraphicsProgramInterface.html#setWindowSize-double-double-\">setWindowSize</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>width</code> - the desired width of the window, in pixels</dd>\n<dd><code>height</code> - the desired height of the window, in pixels</dd>\n</dl>\n</li>\n</ul>\n<a name=\"startGraphicsProgram-acm.graphics.GObject-java.lang.String:A-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>startGraphicsProgram</h4>\n<pre>public static&nbsp;void&nbsp;startGraphicsProgram(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj,\n                                        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)\n                                 throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a></pre>\n<div class=\"block\">Creates a <code>GraphicsProgram</code> containing the specified\n <code>GObject</code> and then starts it. This code is called only by the\n <code>start</code> method in <code>GObject</code>.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>gobj</code> - The object to be inserted into the\n            <code>GraphicsProgram</code></dd>\n<dd><code>args</code> - The array of arguments</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>startGraphicsProgram(gobj, args);</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"toImage--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>toImage</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/BufferedImage.html?is-external=true\" title=\"class or interface in java.awt.image\">BufferedImage</a>&nbsp;toImage()</pre>\n<div class=\"block\">Returns an image representation of the current contents of the screen.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#toImage--\">toImage</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"waitForClick--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>waitForClick</h4>\n<pre>public&nbsp;void&nbsp;waitForClick()</pre>\n<div class=\"block\">Waits for a mouse click in the window before proceeding.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/GraphicsProgramInterface.html#waitForClick--\">waitForClick</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>waitForClick();</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/program/DialogProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/program/GraphicsProgram.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GraphicsProgram.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JApplet\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.acm.program.Program\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/program/GraphicsProgramInterface.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:07 PDT 2017 -->\n<title>GraphicsProgramInterface</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GraphicsProgramInterface\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":6,\"i1\":6,\"i2\":6,\"i3\":6,\"i4\":6,\"i5\":6,\"i6\":6,\"i7\":6,\"i8\":6,\"i9\":6,\"i10\":6,\"i11\":6,\"i12\":6,\"i13\":6,\"i14\":6,\"i15\":6};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],4:[\"t3\",\"Abstract Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/program/GraphicsProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/program/GraphicsProgramInterface.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GraphicsProgramInterface.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.program</div>\n<h2 title=\"Interface GraphicsProgramInterface\" class=\"title\">Interface GraphicsProgramInterface</h2>\n</div>\n<div class=\"contentContainer\">\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Superinterfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a>, <a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a>, <a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></dd>\n</dl>\n<dl>\n<dt>All Known Implementing Classes:</dt>\n<dd><a href=\"../../acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a>, <a href=\"../../acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public interface <span class=\"typeNameLabel\">GraphicsProgramInterface</span>\nextends <a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a>, <a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.program.ProgramInterface\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;acm.program.<a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></h3>\n<code><a href=\"../../acm/program/ProgramInterface.html#CENTER\">CENTER</a>, <a href=\"../../acm/program/ProgramInterface.html#EAST\">EAST</a>, <a href=\"../../acm/program/ProgramInterface.html#NORTH\">NORTH</a>, <a href=\"../../acm/program/ProgramInterface.html#SOUTH\">SOUTH</a>, <a href=\"../../acm/program/ProgramInterface.html#WEST\">WEST</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t3\" class=\"tableTab\"><span><a href=\"javascript:show(4);\">Abstract Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgramInterface.html#addKeyListeners--\">addKeyListeners</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgramInterface.html#addKeyListeners-java.awt.event.KeyListener-\">addKeyListeners</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>&nbsp;listener)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgramInterface.html#addMouseListeners--\">addMouseListeners</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgramInterface.html#addMouseListeners-java.util.EventListener-\">addMouseListeners</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a>&nbsp;listener)</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgramInterface.html#clearCanvas--\">clearCanvas</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgramInterface.html#getCanvasHeight--\">getCanvasHeight</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgramInterface.html#getCanvasSize--\">getCanvasSize</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgramInterface.html#getCanvasWidth--\">getCanvasWidth</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgramInterface.html#getGCanvas--\">getGCanvas</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgramInterface.html#removeAllComponents--\">removeAllComponents</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgramInterface.html#setCanvasHeight-double-\">setCanvasHeight</a></span>(double&nbsp;height)</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgramInterface.html#setCanvasSize-double-double-\">setCanvasSize</a></span>(double&nbsp;width,\n             double&nbsp;height)</code>&nbsp;</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgramInterface.html#setCanvasWidth-double-\">setCanvasWidth</a></span>(double&nbsp;width)</code>&nbsp;</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgramInterface.html#setSize-double-double-\">setSize</a></span>(double&nbsp;width,\n       double&nbsp;height)</code>&nbsp;</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgramInterface.html#setWindowSize-double-double-\">setWindowSize</a></span>(double&nbsp;width,\n             double&nbsp;height)</code>&nbsp;</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/GraphicsProgramInterface.html#waitForClick--\">waitForClick</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.program.ProgramInterface\">\n<!--   -->\n</a>\n<h3>Methods inherited from interface&nbsp;acm.program.<a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></h3>\n<code><a href=\"../../acm/program/ProgramInterface.html#exit--\">exit</a>, <a href=\"../../acm/program/ProgramInterface.html#getTitle--\">getTitle</a>, <a href=\"../../acm/program/ProgramInterface.html#init--\">init</a>, <a href=\"../../acm/program/ProgramInterface.html#pause-double-\">pause</a>, <a href=\"../../acm/program/ProgramInterface.html#print-java.lang.Object-\">print</a>, <a href=\"../../acm/program/ProgramInterface.html#print-java.lang.String-\">print</a>, <a href=\"../../acm/program/ProgramInterface.html#printf-java.lang.String-java.lang.Object...-\">printf</a>, <a href=\"../../acm/program/ProgramInterface.html#println--\">println</a>, <a href=\"../../acm/program/ProgramInterface.html#println-java.lang.Object-\">println</a>, <a href=\"../../acm/program/ProgramInterface.html#println-java.lang.String-\">println</a>, <a href=\"../../acm/program/ProgramInterface.html#run--\">run</a>, <a href=\"../../acm/program/ProgramInterface.html#setParameterTable-java.util.Map-\">setParameterTable</a>, <a href=\"../../acm/program/ProgramInterface.html#setStartupObject-java.lang.Object-\">setStartupObject</a>, <a href=\"../../acm/program/ProgramInterface.html#setTitle-java.lang.String-\">setTitle</a>, <a href=\"../../acm/program/ProgramInterface.html#start--\">start</a>, <a href=\"../../acm/program/ProgramInterface.html#start-java.lang.String:A-\">start</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.graphics.GCanvasInterface\">\n<!--   -->\n</a>\n<h3>Methods inherited from interface&nbsp;acm.graphics.<a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></h3>\n<code><a href=\"../../acm/graphics/GCanvasInterface.html#add-java.awt.Component-double-double-\">add</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#add-java.awt.Component-acm.graphics.GPoint-\">add</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#add-acm.graphics.GObject-\">add</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#add-acm.graphics.GObject-double-double-\">add</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#add-acm.graphics.GObject-acm.graphics.GPoint-\">add</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#clear--\">clear</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#getBackground--\">getBackground</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#getElement-int-\">getElement</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#getElementAt-double...-\">getElementAt</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#getElementAt-double-double-\">getElementAt</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#getElementAt-acm.graphics.GPoint-\">getElementAt</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#getElementCount--\">getElementCount</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#getFont--\">getFont</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#getHeight--\">getHeight</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#getSize--\">getSize</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#getWidth--\">getWidth</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#hasElementAt-double...-\">hasElementAt</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#hasElementAt-double-double-\">hasElementAt</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#isAntiAliasing--\">isAntiAliasing</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#iterator--\">iterator</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#iterator-int-\">iterator</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#remove-double-double-\">remove</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#remove-acm.graphics.GObject-\">remove</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#remove-acm.graphics.GPoint-\">remove</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#removeAll--\">removeAll</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#removeAll-double...-\">removeAll</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#removeAll-double-double-\">removeAll</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#removeAll-acm.graphics.GPoint-\">removeAll</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#repaint--\">repaint</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#setAntiAliasing-boolean-\">setAntiAliasing</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#setBackground-java.awt.Color-\">setBackground</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#setFont-java.awt.Font-\">setFont</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#setShowPixelInfo-boolean-\">setShowPixelInfo</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#setSize-java.awt.Dimension-\">setSize</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#toImage--\">toImage</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.event.MouseListener\">\n<!--   -->\n</a>\n<h3>Methods inherited from interface&nbsp;java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true#mouseClicked-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseClicked</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true#mouseEntered-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseEntered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true#mouseExited-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseExited</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true#mousePressed-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mousePressed</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true#mouseReleased-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseReleased</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.event.MouseMotionListener\">\n<!--   -->\n</a>\n<h3>Methods inherited from interface&nbsp;java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true#mouseDragged-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseDragged</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true#mouseMoved-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseMoved</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"addKeyListeners--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addKeyListeners</h4>\n<pre>void&nbsp;addKeyListeners()</pre>\n</li>\n</ul>\n<a name=\"addKeyListeners-java.awt.event.KeyListener-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addKeyListeners</h4>\n<pre>void&nbsp;addKeyListeners(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>&nbsp;listener)</pre>\n</li>\n</ul>\n<a name=\"addMouseListeners--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addMouseListeners</h4>\n<pre>void&nbsp;addMouseListeners()</pre>\n</li>\n</ul>\n<a name=\"addMouseListeners-java.util.EventListener-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addMouseListeners</h4>\n<pre>void&nbsp;addMouseListeners(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a>&nbsp;listener)</pre>\n</li>\n</ul>\n<a name=\"clearCanvas--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clearCanvas</h4>\n<pre>void&nbsp;clearCanvas()</pre>\n</li>\n</ul>\n<a name=\"getCanvasHeight--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getCanvasHeight</h4>\n<pre>double&nbsp;getCanvasHeight()</pre>\n</li>\n</ul>\n<a name=\"getCanvasSize--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getCanvasSize</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a>&nbsp;getCanvasSize()</pre>\n</li>\n</ul>\n<a name=\"getCanvasWidth--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getCanvasWidth</h4>\n<pre>double&nbsp;getCanvasWidth()</pre>\n</li>\n</ul>\n<a name=\"getGCanvas--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getGCanvas</h4>\n<pre><a href=\"../../acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a>&nbsp;getGCanvas()</pre>\n</li>\n</ul>\n<a name=\"removeAllComponents--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeAllComponents</h4>\n<pre>void&nbsp;removeAllComponents()</pre>\n</li>\n</ul>\n<a name=\"setCanvasHeight-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setCanvasHeight</h4>\n<pre>void&nbsp;setCanvasHeight(double&nbsp;height)</pre>\n</li>\n</ul>\n<a name=\"setCanvasSize-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setCanvasSize</h4>\n<pre>void&nbsp;setCanvasSize(double&nbsp;width,\n                   double&nbsp;height)</pre>\n</li>\n</ul>\n<a name=\"setCanvasWidth-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setCanvasWidth</h4>\n<pre>void&nbsp;setCanvasWidth(double&nbsp;width)</pre>\n</li>\n</ul>\n<a name=\"setSize-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setSize</h4>\n<pre>void&nbsp;setSize(double&nbsp;width,\n             double&nbsp;height)</pre>\n</li>\n</ul>\n<a name=\"setWindowSize-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setWindowSize</h4>\n<pre>void&nbsp;setWindowSize(double&nbsp;width,\n                   double&nbsp;height)</pre>\n</li>\n</ul>\n<a name=\"waitForClick--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>waitForClick</h4>\n<pre>void&nbsp;waitForClick()</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/program/GraphicsProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/program/GraphicsProgramInterface.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GraphicsProgramInterface.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/program/HeadlessGraphicsProgram.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:07 PDT 2017 -->\n<title>HeadlessGraphicsProgram</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"HeadlessGraphicsProgram\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":10,\"i16\":10,\"i17\":10,\"i18\":10,\"i19\":10,\"i20\":10,\"i21\":10,\"i22\":10,\"i23\":10,\"i24\":10,\"i25\":10,\"i26\":10,\"i27\":10,\"i28\":10,\"i29\":10,\"i30\":9,\"i31\":10,\"i32\":10,\"i33\":10,\"i34\":10,\"i35\":10,\"i36\":10,\"i37\":10,\"i38\":10,\"i39\":10,\"i40\":10,\"i41\":10,\"i42\":10,\"i43\":10,\"i44\":10,\"i45\":10,\"i46\":10,\"i47\":10,\"i48\":10,\"i49\":10,\"i50\":10,\"i51\":10,\"i52\":10,\"i53\":10,\"i54\":10,\"i55\":10,\"i56\":10,\"i57\":10,\"i58\":10,\"i59\":10,\"i60\":10,\"i61\":10,\"i62\":10,\"i63\":10,\"i64\":10,\"i65\":10,\"i66\":9,\"i67\":10,\"i68\":10,\"i69\":10,\"i70\":10,\"i71\":10,\"i72\":10,\"i73\":10,\"i74\":9,\"i75\":10,\"i76\":10,\"i77\":10,\"i78\":10,\"i79\":10,\"i80\":10,\"i81\":10,\"i82\":10,\"i83\":10,\"i84\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/program/HeadlessGraphicsProgram.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"HeadlessGraphicsProgram.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.program</div>\n<h2 title=\"Class HeadlessGraphicsProgram\" class=\"title\">Class HeadlessGraphicsProgram</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.program.HeadlessGraphicsProgram</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a>, <a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a>, <a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">HeadlessGraphicsProgram</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>\nimplements <a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.program.ProgramInterface\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;acm.program.<a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></h3>\n<code><a href=\"../../acm/program/ProgramInterface.html#CENTER\">CENTER</a>, <a href=\"../../acm/program/ProgramInterface.html#EAST\">EAST</a>, <a href=\"../../acm/program/ProgramInterface.html#NORTH\">NORTH</a>, <a href=\"../../acm/program/ProgramInterface.html#SOUTH\">SOUTH</a>, <a href=\"../../acm/program/ProgramInterface.html#WEST\">WEST</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#HeadlessGraphicsProgram--\">HeadlessGraphicsProgram</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#add-java.awt.Component-double-double-\">add</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n   double&nbsp;x,\n   double&nbsp;y)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#add-java.awt.Component-acm.graphics.GPoint-\">add</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n   <a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#add-acm.graphics.GObject-\">add</a></span>(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#add-acm.graphics.GObject-double-double-\">add</a></span>(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj,\n   double&nbsp;x,\n   double&nbsp;y)</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#add-acm.graphics.GObject-acm.graphics.GPoint-\">add</a></span>(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj,\n   <a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#addKeyListeners--\">addKeyListeners</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#addKeyListeners-java.awt.event.KeyListener-\">addKeyListeners</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>&nbsp;listener)</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#addMouseListeners--\">addMouseListeners</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#addMouseListeners-java.util.EventListener-\">addMouseListeners</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a>&nbsp;listener)</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#clear--\">clear</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#clearCanvas--\">clearCanvas</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#exit--\">exit</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#fakeMouseClicked-int-int-\">fakeMouseClicked</a></span>(int&nbsp;x,\n                int&nbsp;y)</code>&nbsp;</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#fakeMouseDragged-int-int-\">fakeMouseDragged</a></span>(int&nbsp;x,\n                int&nbsp;y)</code>&nbsp;</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#fakeMouseDragSequence-int...-\">fakeMouseDragSequence</a></span>(int...&nbsp;coords)</code>&nbsp;</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#fakeMouseMoved-int-int-\">fakeMouseMoved</a></span>(int&nbsp;x,\n              int&nbsp;y)</code>&nbsp;</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#fakeMousePressed-int-int-\">fakeMousePressed</a></span>(int&nbsp;x,\n                int&nbsp;y)</code>&nbsp;</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#fakeMouseReleased-int-int-\">fakeMouseReleased</a></span>(int&nbsp;x,\n                 int&nbsp;y)</code>&nbsp;</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#getBackground--\">getBackground</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#getCanvasHeight--\">getCanvasHeight</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#getCanvasSize--\">getCanvasSize</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#getCanvasWidth--\">getCanvasWidth</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;<br>T</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#getElement-int-\">getElement</a></span>(int&nbsp;index)</code>&nbsp;</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code>&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;<br>T</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#getElementAt-double...-\">getElementAt</a></span>(double...&nbsp;coords)</code>&nbsp;</td>\n</tr>\n<tr id=\"i24\" class=\"altColor\">\n<td class=\"colFirst\"><code>&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;<br>T</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#getElementAt-double-double-\">getElementAt</a></span>(double&nbsp;x,\n            double&nbsp;y)</code>&nbsp;</td>\n</tr>\n<tr id=\"i25\" class=\"rowColor\">\n<td class=\"colFirst\"><code>&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;<br>T</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#getElementAt-acm.graphics.GPoint-\">getElementAt</a></span>(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</code>&nbsp;</td>\n</tr>\n<tr id=\"i26\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#getElementCount--\">getElementCount</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i27\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#getFont--\">getFont</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i28\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#getGCanvas--\">getGCanvas</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i29\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#getHeight--\">getHeight</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i30\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#getSaveFile--\">getSaveFile</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i31\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#getSize--\">getSize</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i32\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#getTitle--\">getTitle</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i33\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#getWidth--\">getWidth</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i34\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#hasElementAt-double...-\">hasElementAt</a></span>(double...&nbsp;coords)</code>&nbsp;</td>\n</tr>\n<tr id=\"i35\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#hasElementAt-double-double-\">hasElementAt</a></span>(double&nbsp;x,\n            double&nbsp;y)</code>&nbsp;</td>\n</tr>\n<tr id=\"i36\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#init--\">init</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i37\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#isAntiAliasing--\">isAntiAliasing</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i38\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true\" title=\"class or interface in java.util\">Iterator</a>&lt;<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#iterator--\">iterator</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i39\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true\" title=\"class or interface in java.util\">Iterator</a>&lt;<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#iterator-int-\">iterator</a></span>(int&nbsp;direction)</code>&nbsp;</td>\n</tr>\n<tr id=\"i40\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#main-java.lang.String:A-\">main</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</code>&nbsp;</td>\n</tr>\n<tr id=\"i41\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#mouseClicked-java.awt.event.MouseEvent-\">mouseClicked</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</code>&nbsp;</td>\n</tr>\n<tr id=\"i42\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#mouseDragged-java.awt.event.MouseEvent-\">mouseDragged</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</code>&nbsp;</td>\n</tr>\n<tr id=\"i43\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#mouseEntered-java.awt.event.MouseEvent-\">mouseEntered</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</code>&nbsp;</td>\n</tr>\n<tr id=\"i44\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#mouseExited-java.awt.event.MouseEvent-\">mouseExited</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</code>&nbsp;</td>\n</tr>\n<tr id=\"i45\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#mouseMoved-java.awt.event.MouseEvent-\">mouseMoved</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</code>&nbsp;</td>\n</tr>\n<tr id=\"i46\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#mousePressed-java.awt.event.MouseEvent-\">mousePressed</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</code>&nbsp;</td>\n</tr>\n<tr id=\"i47\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#mouseReleased-java.awt.event.MouseEvent-\">mouseReleased</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</code>&nbsp;</td>\n</tr>\n<tr id=\"i48\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#pause-double-\">pause</a></span>(double&nbsp;milliseconds)</code>&nbsp;</td>\n</tr>\n<tr id=\"i49\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#print-java.lang.Object-\">print</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i50\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#print-java.lang.String-\">print</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i51\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#printf-java.lang.String-java.lang.Object...-\">printf</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;format,\n      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>...&nbsp;args)</code>&nbsp;</td>\n</tr>\n<tr id=\"i52\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#println--\">println</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i53\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#println-java.lang.Object-\">println</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i54\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#println-java.lang.String-\">println</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i55\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#remove-double-double-\">remove</a></span>(double&nbsp;x,\n      double&nbsp;y)</code>&nbsp;</td>\n</tr>\n<tr id=\"i56\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#remove-acm.graphics.GObject-\">remove</a></span>(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</code>&nbsp;</td>\n</tr>\n<tr id=\"i57\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#remove-acm.graphics.GPoint-\">remove</a></span>(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</code>&nbsp;</td>\n</tr>\n<tr id=\"i58\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#removeAll--\">removeAll</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i59\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#removeAll-double...-\">removeAll</a></span>(double...&nbsp;coords)</code>&nbsp;</td>\n</tr>\n<tr id=\"i60\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#removeAll-double-double-\">removeAll</a></span>(double&nbsp;x,\n         double&nbsp;y)</code>&nbsp;</td>\n</tr>\n<tr id=\"i61\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#removeAll-acm.graphics.GPoint-\">removeAll</a></span>(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</code>&nbsp;</td>\n</tr>\n<tr id=\"i62\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#removeAllComponents--\">removeAllComponents</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i63\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#repaint--\">repaint</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i64\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#run--\">run</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i65\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#save--\">save</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i66\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#setAntiAliasDefault-boolean-\">setAntiAliasDefault</a></span>(boolean&nbsp;antialias)</code>&nbsp;</td>\n</tr>\n<tr id=\"i67\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#setAntiAliasing-boolean-\">setAntiAliasing</a></span>(boolean&nbsp;antialias)</code>&nbsp;</td>\n</tr>\n<tr id=\"i68\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#setBackground-java.awt.Color-\">setBackground</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;bg)</code>&nbsp;</td>\n</tr>\n<tr id=\"i69\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#setCanvasHeight-double-\">setCanvasHeight</a></span>(double&nbsp;height)</code>&nbsp;</td>\n</tr>\n<tr id=\"i70\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#setCanvasSize-double-double-\">setCanvasSize</a></span>(double&nbsp;width,\n             double&nbsp;height)</code>&nbsp;</td>\n</tr>\n<tr id=\"i71\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#setCanvasWidth-double-\">setCanvasWidth</a></span>(double&nbsp;width)</code>&nbsp;</td>\n</tr>\n<tr id=\"i72\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#setFont-java.awt.Font-\">setFont</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a>&nbsp;font)</code>&nbsp;</td>\n</tr>\n<tr id=\"i73\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#setParameterTable-java.util.Map-\">setParameterTable</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;table)</code>&nbsp;</td>\n</tr>\n<tr id=\"i74\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#setSaveFile-java.lang.String-\">setSaveFile</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>&nbsp;</td>\n</tr>\n<tr id=\"i75\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#setShowPixelInfo-boolean-\">setShowPixelInfo</a></span>(boolean&nbsp;show)</code>&nbsp;</td>\n</tr>\n<tr id=\"i76\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#setSize-java.awt.Dimension-\">setSize</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a>&nbsp;size)</code>&nbsp;</td>\n</tr>\n<tr id=\"i77\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#setSize-double-double-\">setSize</a></span>(double&nbsp;width,\n       double&nbsp;height)</code>&nbsp;</td>\n</tr>\n<tr id=\"i78\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#setStartupObject-java.lang.Object-\">setStartupObject</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj)</code>&nbsp;</td>\n</tr>\n<tr id=\"i79\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#setTitle-java.lang.String-\">setTitle</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;title)</code>&nbsp;</td>\n</tr>\n<tr id=\"i80\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#setWindowSize-double-double-\">setWindowSize</a></span>(double&nbsp;width,\n             double&nbsp;height)</code>&nbsp;</td>\n</tr>\n<tr id=\"i81\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#start--\">start</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i82\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#start-java.lang.String:A-\">start</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</code>&nbsp;</td>\n</tr>\n<tr id=\"i83\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/BufferedImage.html?is-external=true\" title=\"class or interface in java.awt.image\">BufferedImage</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#toImage--\">toImage</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i84\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html#waitForClick--\">waitForClick</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"HeadlessGraphicsProgram--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>HeadlessGraphicsProgram</h4>\n<pre>public&nbsp;HeadlessGraphicsProgram()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"getSaveFile--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSaveFile</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getSaveFile()</pre>\n</li>\n</ul>\n<a name=\"setAntiAliasDefault-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setAntiAliasDefault</h4>\n<pre>public static&nbsp;void&nbsp;setAntiAliasDefault(boolean&nbsp;antialias)</pre>\n</li>\n</ul>\n<a name=\"setSaveFile-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setSaveFile</h4>\n<pre>public static&nbsp;void&nbsp;setSaveFile(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</pre>\n</li>\n</ul>\n<a name=\"main-java.lang.String:A-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>main</h4>\n<pre>public final&nbsp;void&nbsp;main(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</pre>\n</li>\n</ul>\n<a name=\"exit--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>exit</h4>\n<pre>public final&nbsp;void&nbsp;exit()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#exit--\">exit</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"init--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>init</h4>\n<pre>public&nbsp;void&nbsp;init()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#init--\">init</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"run--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>run</h4>\n<pre>public&nbsp;void&nbsp;run()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#run--\">run</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"save--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>save</h4>\n<pre>public final&nbsp;void&nbsp;save()</pre>\n</li>\n</ul>\n<a name=\"setParameterTable-java.util.Map-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setParameterTable</h4>\n<pre>public&nbsp;void&nbsp;setParameterTable(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;table)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#setParameterTable-java.util.Map-\">setParameterTable</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setStartupObject-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setStartupObject</h4>\n<pre>public&nbsp;void&nbsp;setStartupObject(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#setStartupObject-java.lang.Object-\">setStartupObject</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"start--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>start</h4>\n<pre>public&nbsp;void&nbsp;start()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#start--\">start</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"start-java.lang.String:A-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>start</h4>\n<pre>public&nbsp;void&nbsp;start(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#start-java.lang.String:A-\">start</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"fakeMouseClicked-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fakeMouseClicked</h4>\n<pre>public&nbsp;void&nbsp;fakeMouseClicked(int&nbsp;x,\n                             int&nbsp;y)</pre>\n</li>\n</ul>\n<a name=\"fakeMousePressed-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fakeMousePressed</h4>\n<pre>public&nbsp;void&nbsp;fakeMousePressed(int&nbsp;x,\n                             int&nbsp;y)</pre>\n</li>\n</ul>\n<a name=\"fakeMouseReleased-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fakeMouseReleased</h4>\n<pre>public&nbsp;void&nbsp;fakeMouseReleased(int&nbsp;x,\n                              int&nbsp;y)</pre>\n</li>\n</ul>\n<a name=\"fakeMouseMoved-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fakeMouseMoved</h4>\n<pre>public&nbsp;void&nbsp;fakeMouseMoved(int&nbsp;x,\n                           int&nbsp;y)</pre>\n</li>\n</ul>\n<a name=\"fakeMouseDragged-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fakeMouseDragged</h4>\n<pre>public&nbsp;void&nbsp;fakeMouseDragged(int&nbsp;x,\n                             int&nbsp;y)</pre>\n</li>\n</ul>\n<a name=\"fakeMouseDragSequence-int...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fakeMouseDragSequence</h4>\n<pre>public&nbsp;void&nbsp;fakeMouseDragSequence(int...&nbsp;coords)</pre>\n</li>\n</ul>\n<a name=\"add-acm.graphics.GObject-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>public&nbsp;void&nbsp;add(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#add-acm.graphics.GObject-\">add</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"add-acm.graphics.GObject-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>public&nbsp;void&nbsp;add(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj,\n                double&nbsp;x,\n                double&nbsp;y)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#add-acm.graphics.GObject-double-double-\">add</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"add-acm.graphics.GObject-acm.graphics.GPoint-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>public&nbsp;void&nbsp;add(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj,\n                <a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#add-acm.graphics.GObject-acm.graphics.GPoint-\">add</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"add-java.awt.Component-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>public&nbsp;void&nbsp;add(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n                double&nbsp;x,\n                double&nbsp;y)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#add-java.awt.Component-double-double-\">add</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"add-java.awt.Component-acm.graphics.GPoint-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>public&nbsp;void&nbsp;add(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n                <a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#add-java.awt.Component-acm.graphics.GPoint-\">add</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"clear--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clear</h4>\n<pre>public&nbsp;void&nbsp;clear()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#clear--\">clear</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getBackground--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getBackground</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;getBackground()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#getBackground--\">getBackground</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getElementCount--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getElementCount</h4>\n<pre>public&nbsp;int&nbsp;getElementCount()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#getElementCount--\">getElementCount</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getElement-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getElement</h4>\n<pre>public&nbsp;&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;&nbsp;T&nbsp;getElement(int&nbsp;index)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#getElement-int-\">getElement</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getElementAt-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getElementAt</h4>\n<pre>public&nbsp;&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;&nbsp;T&nbsp;getElementAt(double&nbsp;x,\n                                          double&nbsp;y)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#getElementAt-double-double-\">getElementAt</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getElementAt-double...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getElementAt</h4>\n<pre>public&nbsp;&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;&nbsp;T&nbsp;getElementAt(double...&nbsp;coords)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#getElementAt-double...-\">getElementAt</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getElementAt-acm.graphics.GPoint-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getElementAt</h4>\n<pre>public&nbsp;&lt;T extends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;&nbsp;T&nbsp;getElementAt(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#getElementAt-acm.graphics.GPoint-\">getElementAt</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getFont--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFont</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a>&nbsp;getFont()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#getFont--\">getFont</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"hasElementAt-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hasElementAt</h4>\n<pre>public&nbsp;boolean&nbsp;hasElementAt(double&nbsp;x,\n                            double&nbsp;y)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#hasElementAt-double-double-\">hasElementAt</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"hasElementAt-double...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hasElementAt</h4>\n<pre>public&nbsp;boolean&nbsp;hasElementAt(double...&nbsp;coords)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#hasElementAt-double...-\">hasElementAt</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"isAntiAliasing--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isAntiAliasing</h4>\n<pre>public&nbsp;boolean&nbsp;isAntiAliasing()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#isAntiAliasing--\">isAntiAliasing</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"iterator--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>iterator</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true\" title=\"class or interface in java.util\">Iterator</a>&lt;<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;&nbsp;iterator()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#iterator--\">iterator</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"iterator-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>iterator</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true\" title=\"class or interface in java.util\">Iterator</a>&lt;<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;&nbsp;iterator(int&nbsp;direction)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#iterator-int-\">iterator</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"mouseClicked-java.awt.event.MouseEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>mouseClicked</h4>\n<pre>public&nbsp;void&nbsp;mouseClicked(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true#mouseClicked-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseClicked</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"mousePressed-java.awt.event.MouseEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>mousePressed</h4>\n<pre>public&nbsp;void&nbsp;mousePressed(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true#mousePressed-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mousePressed</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"mouseReleased-java.awt.event.MouseEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>mouseReleased</h4>\n<pre>public&nbsp;void&nbsp;mouseReleased(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true#mouseReleased-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseReleased</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"mouseEntered-java.awt.event.MouseEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>mouseEntered</h4>\n<pre>public&nbsp;void&nbsp;mouseEntered(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true#mouseEntered-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseEntered</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"mouseExited-java.awt.event.MouseEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>mouseExited</h4>\n<pre>public&nbsp;void&nbsp;mouseExited(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true#mouseExited-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseExited</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"mouseDragged-java.awt.event.MouseEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>mouseDragged</h4>\n<pre>public&nbsp;void&nbsp;mouseDragged(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true#mouseDragged-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseDragged</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"mouseMoved-java.awt.event.MouseEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>mouseMoved</h4>\n<pre>public&nbsp;void&nbsp;mouseMoved(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true#mouseMoved-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseMoved</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"remove-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>remove</h4>\n<pre>public&nbsp;void&nbsp;remove(double&nbsp;x,\n                   double&nbsp;y)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#remove-double-double-\">remove</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"remove-acm.graphics.GPoint-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>remove</h4>\n<pre>public&nbsp;void&nbsp;remove(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#remove-acm.graphics.GPoint-\">remove</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"remove-acm.graphics.GObject-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>remove</h4>\n<pre>public&nbsp;void&nbsp;remove(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;gobj)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#remove-acm.graphics.GObject-\">remove</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"removeAll--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeAll</h4>\n<pre>public&nbsp;void&nbsp;removeAll()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#removeAll--\">removeAll</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"removeAll-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeAll</h4>\n<pre>public&nbsp;void&nbsp;removeAll(double&nbsp;x,\n                      double&nbsp;y)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#removeAll-double-double-\">removeAll</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"removeAll-double...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeAll</h4>\n<pre>public&nbsp;void&nbsp;removeAll(double...&nbsp;coords)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#removeAll-double...-\">removeAll</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"removeAll-acm.graphics.GPoint-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeAll</h4>\n<pre>public&nbsp;void&nbsp;removeAll(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;pt)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#removeAll-acm.graphics.GPoint-\">removeAll</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"repaint--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>repaint</h4>\n<pre>public&nbsp;void&nbsp;repaint()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#repaint--\">repaint</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setAntiAliasing-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setAntiAliasing</h4>\n<pre>public&nbsp;void&nbsp;setAntiAliasing(boolean&nbsp;antialias)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#setAntiAliasing-boolean-\">setAntiAliasing</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setBackground-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setBackground</h4>\n<pre>public&nbsp;void&nbsp;setBackground(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;bg)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#setBackground-java.awt.Color-\">setBackground</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setShowPixelInfo-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setShowPixelInfo</h4>\n<pre>public&nbsp;void&nbsp;setShowPixelInfo(boolean&nbsp;show)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#setShowPixelInfo-boolean-\">setShowPixelInfo</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"toImage--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>toImage</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/BufferedImage.html?is-external=true\" title=\"class or interface in java.awt.image\">BufferedImage</a>&nbsp;toImage()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#toImage--\">toImage</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"addKeyListeners--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addKeyListeners</h4>\n<pre>public&nbsp;void&nbsp;addKeyListeners()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/GraphicsProgramInterface.html#addKeyListeners--\">addKeyListeners</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"addKeyListeners-java.awt.event.KeyListener-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addKeyListeners</h4>\n<pre>public&nbsp;void&nbsp;addKeyListeners(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>&nbsp;listener)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/GraphicsProgramInterface.html#addKeyListeners-java.awt.event.KeyListener-\">addKeyListeners</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"addMouseListeners--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addMouseListeners</h4>\n<pre>public&nbsp;void&nbsp;addMouseListeners()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/GraphicsProgramInterface.html#addMouseListeners--\">addMouseListeners</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"addMouseListeners-java.util.EventListener-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addMouseListeners</h4>\n<pre>public&nbsp;void&nbsp;addMouseListeners(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a>&nbsp;listener)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/GraphicsProgramInterface.html#addMouseListeners-java.util.EventListener-\">addMouseListeners</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"clearCanvas--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clearCanvas</h4>\n<pre>public&nbsp;void&nbsp;clearCanvas()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/GraphicsProgramInterface.html#clearCanvas--\">clearCanvas</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getHeight--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getHeight</h4>\n<pre>public&nbsp;int&nbsp;getHeight()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#getHeight--\">getHeight</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getSize--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSize</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a>&nbsp;getSize()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#getSize--\">getSize</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getWidth--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getWidth</h4>\n<pre>public&nbsp;int&nbsp;getWidth()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#getWidth--\">getWidth</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getCanvasHeight--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getCanvasHeight</h4>\n<pre>public&nbsp;double&nbsp;getCanvasHeight()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/GraphicsProgramInterface.html#getCanvasHeight--\">getCanvasHeight</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getCanvasSize--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getCanvasSize</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a>&nbsp;getCanvasSize()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/GraphicsProgramInterface.html#getCanvasSize--\">getCanvasSize</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getCanvasWidth--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getCanvasWidth</h4>\n<pre>public&nbsp;double&nbsp;getCanvasWidth()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/GraphicsProgramInterface.html#getCanvasWidth--\">getCanvasWidth</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getGCanvas--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getGCanvas</h4>\n<pre>public&nbsp;<a href=\"../../acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a>&nbsp;getGCanvas()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/GraphicsProgramInterface.html#getGCanvas--\">getGCanvas</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"pause-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>pause</h4>\n<pre>public&nbsp;void&nbsp;pause(double&nbsp;milliseconds)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#pause-double-\">pause</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"removeAllComponents--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeAllComponents</h4>\n<pre>public&nbsp;void&nbsp;removeAllComponents()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/GraphicsProgramInterface.html#removeAllComponents--\">removeAllComponents</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setCanvasHeight-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setCanvasHeight</h4>\n<pre>public&nbsp;void&nbsp;setCanvasHeight(double&nbsp;height)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/GraphicsProgramInterface.html#setCanvasHeight-double-\">setCanvasHeight</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setCanvasSize-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setCanvasSize</h4>\n<pre>public&nbsp;void&nbsp;setCanvasSize(double&nbsp;width,\n                          double&nbsp;height)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/GraphicsProgramInterface.html#setCanvasSize-double-double-\">setCanvasSize</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setCanvasWidth-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setCanvasWidth</h4>\n<pre>public&nbsp;void&nbsp;setCanvasWidth(double&nbsp;width)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/GraphicsProgramInterface.html#setCanvasWidth-double-\">setCanvasWidth</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setFont-java.awt.Font-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setFont</h4>\n<pre>public&nbsp;void&nbsp;setFont(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a>&nbsp;font)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#setFont-java.awt.Font-\">setFont</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setSize-java.awt.Dimension-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setSize</h4>\n<pre>public&nbsp;void&nbsp;setSize(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a>&nbsp;size)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#setSize-java.awt.Dimension-\">setSize</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setSize-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setSize</h4>\n<pre>public&nbsp;void&nbsp;setSize(double&nbsp;width,\n                    double&nbsp;height)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/GraphicsProgramInterface.html#setSize-double-double-\">setSize</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setWindowSize-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setWindowSize</h4>\n<pre>public&nbsp;void&nbsp;setWindowSize(double&nbsp;width,\n                          double&nbsp;height)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/GraphicsProgramInterface.html#setWindowSize-double-double-\">setWindowSize</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"waitForClick--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>waitForClick</h4>\n<pre>public&nbsp;void&nbsp;waitForClick()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/GraphicsProgramInterface.html#waitForClick--\">waitForClick</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getTitle--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getTitle</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getTitle()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#getTitle--\">getTitle</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"print-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public&nbsp;void&nbsp;print(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#print-java.lang.Object-\">print</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"print-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public&nbsp;void&nbsp;print(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#print-java.lang.String-\">print</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"printf-java.lang.String-java.lang.Object...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>printf</h4>\n<pre>public&nbsp;void&nbsp;printf(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;format,\n                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>...&nbsp;args)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#printf-java.lang.String-java.lang.Object...-\">printf</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"println--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public&nbsp;void&nbsp;println()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#println--\">println</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"println-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public&nbsp;void&nbsp;println(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#println-java.lang.Object-\">println</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"println-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public&nbsp;void&nbsp;println(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#println-java.lang.String-\">println</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setTitle-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>setTitle</h4>\n<pre>public&nbsp;void&nbsp;setTitle(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;title)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#setTitle-java.lang.String-\">setTitle</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/program/HeadlessGraphicsProgram.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"HeadlessGraphicsProgram.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/program/Program.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:08 PDT 2017 -->\n<title>Program</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"Program\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":10,\"i16\":10,\"i17\":10,\"i18\":10,\"i19\":10,\"i20\":10,\"i21\":10,\"i22\":10,\"i23\":10,\"i24\":10,\"i25\":10,\"i26\":10,\"i27\":10,\"i28\":9,\"i29\":10,\"i30\":10,\"i31\":10,\"i32\":10,\"i33\":10,\"i34\":10,\"i35\":10,\"i36\":10,\"i37\":10,\"i38\":10,\"i39\":10,\"i40\":10,\"i41\":10,\"i42\":10,\"i43\":10,\"i44\":10,\"i45\":10,\"i46\":10,\"i47\":10,\"i48\":10,\"i49\":10,\"i50\":10,\"i51\":10,\"i52\":10,\"i53\":10,\"i54\":10,\"i55\":10,\"i56\":10,\"i57\":10,\"i58\":10,\"i59\":10,\"i60\":10,\"i61\":10,\"i62\":10,\"i63\":10,\"i64\":10,\"i65\":10,\"i66\":10,\"i67\":10,\"i68\":10,\"i69\":10,\"i70\":10,\"i71\":10,\"i72\":10,\"i73\":10,\"i74\":10,\"i75\":10,\"i76\":10,\"i77\":10,\"i78\":10,\"i79\":10,\"i80\":10,\"i81\":10,\"i82\":10,\"i83\":10,\"i84\":10,\"i85\":10,\"i86\":10,\"i87\":10,\"i88\":10,\"i89\":10,\"i90\":10,\"i91\":10,\"i92\":10,\"i93\":10,\"i94\":10,\"i95\":10,\"i96\":10,\"i97\":10,\"i98\":10,\"i99\":10,\"i100\":10,\"i101\":10,\"i102\":10,\"i103\":10,\"i104\":10,\"i105\":10,\"i106\":10,\"i107\":10,\"i108\":10,\"i109\":10,\"i110\":10,\"i111\":10,\"i112\":10,\"i113\":10,\"i114\":10,\"i115\":9,\"i116\":10,\"i117\":10,\"i118\":10,\"i119\":10,\"i120\":10,\"i121\":10,\"i122\":10,\"i123\":10,\"i124\":10,\"i125\":10,\"i126\":10,\"i127\":10,\"i128\":10,\"i129\":10,\"i130\":10,\"i131\":10,\"i132\":10,\"i133\":10,\"i134\":10,\"i135\":10,\"i136\":10,\"i137\":10,\"i138\":10,\"i139\":10,\"i140\":10,\"i141\":10,\"i142\":10,\"i143\":10,\"i144\":10,\"i145\":10,\"i146\":10,\"i147\":10,\"i148\":10,\"i149\":10,\"i150\":10,\"i151\":10,\"i152\":10,\"i153\":10,\"i154\":10,\"i155\":10,\"i156\":10,\"i157\":10,\"i158\":10,\"i159\":10,\"i160\":10,\"i161\":10,\"i162\":10,\"i163\":10,\"i164\":10,\"i165\":10,\"i166\":10,\"i167\":10,\"i168\":10,\"i169\":10,\"i170\":10,\"i171\":10,\"i172\":10,\"i173\":10,\"i174\":10,\"i175\":10,\"i176\":10,\"i177\":10,\"i178\":10,\"i179\":10,\"i180\":10,\"i181\":10,\"i182\":10,\"i183\":10,\"i184\":10,\"i185\":10,\"i186\":10,\"i187\":10,\"i188\":10,\"i189\":10,\"i190\":10,\"i191\":10,\"i192\":10,\"i193\":10,\"i194\":10,\"i195\":10,\"i196\":10,\"i197\":10,\"i198\":10,\"i199\":10,\"i200\":10,\"i201\":10,\"i202\":10,\"i203\":10,\"i204\":10,\"i205\":10,\"i206\":10,\"i207\":10,\"i208\":10,\"i209\":10,\"i210\":10,\"i211\":10,\"i212\":10,\"i213\":10,\"i214\":10,\"i215\":10,\"i216\":10,\"i217\":10,\"i218\":10,\"i219\":10,\"i220\":10,\"i221\":10,\"i222\":10,\"i223\":10,\"i224\":10,\"i225\":10,\"i226\":10,\"i227\":10,\"i228\":10,\"i229\":10,\"i230\":10,\"i231\":10,\"i232\":10,\"i233\":10,\"i234\":10,\"i235\":10,\"i236\":10,\"i237\":10,\"i238\":10,\"i239\":10,\"i240\":10,\"i241\":10,\"i242\":10,\"i243\":10,\"i244\":10,\"i245\":10,\"i246\":10,\"i247\":10,\"i248\":10,\"i249\":10,\"i250\":10,\"i251\":10,\"i252\":10,\"i253\":10,\"i254\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/program/Program.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Program.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JApplet\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.program</div>\n<h2 title=\"Class Program\" class=\"title\">Class Program</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Component</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Container</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Panel</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">java.applet.Applet</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JApplet</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.program.Program</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd>acm.io.IOModel, <a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/AdjustmentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">AdjustmentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ContainerListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ItemListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ItemListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseWheelListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/TextListener.html?is-external=true\" title=\"class or interface in java.awt.event\">TextListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowFocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowStateListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowStateListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListDataListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListDataListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListSelectionListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListSelectionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/MouseInputListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">MouseInputListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/PopupMenuListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">PopupMenuListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/RootPaneContainer.html?is-external=true\" title=\"class or interface in javax.swing\">RootPaneContainer</a></dd>\n</dl>\n<dl>\n<dt>Direct Known Subclasses:</dt>\n<dd><a href=\"../../acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a>, <a href=\"../../acm/program/DialogProgram.html\" title=\"class in acm.program\">DialogProgram</a>, <a href=\"../../acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a>, <a href=\"../../stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a>, <a href=\"../../stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public abstract class <span class=\"typeNameLabel\">Program</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a>\nimplements <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/AdjustmentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">AdjustmentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ContainerListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusListener</a>, acm.io.IOModel, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ItemListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ItemListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListDataListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListDataListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListSelectionListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListSelectionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/MouseInputListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">MouseInputListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseWheelListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/PopupMenuListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">PopupMenuListener</a>, <a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/TextListener.html?is-external=true\" title=\"class or interface in java.awt.event\">TextListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowFocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowStateListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowStateListener</a></pre>\n<div class=\"block\">This class is the superclass for all executable\n programs in the <code>acm.program</code> package.  Its principal\n role is to unify the concepts of applets and applications in a single\n class, although it also provides applications with many other useful\n facilities not traditionally available in applications.\n\n <p>In many programming environments, objects that are specific instances\n of a <code>Program</code> subclass will run automatically without any\n special action on your part.  For maximum portability, you might want\n to define a static <code>main</code> method as described in the comments\n for the standard implementation of <a href=\"#main(String[])\"><code>main</code></a>.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#acm.program.Program\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JApplet\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.AccessibleJApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet.AccessibleJApplet</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.applet.Applet\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.applet.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">Applet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.AccessibleApplet.html?is-external=true\" title=\"class or interface in java.applet\">Applet.AccessibleApplet</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Panel\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\">Panel</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.AccessibleAWTPanel.html?is-external=true\" title=\"class or interface in java.awt\">Panel.AccessibleAWTPanel</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.AccessibleAWTContainer.html?is-external=true\" title=\"class or interface in java.awt\">Container.AccessibleAWTContainer</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.AccessibleAWTComponent.html?is-external=true\" title=\"class or interface in java.awt\">Component.AccessibleAWTComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BaselineResizeBehavior.html?is-external=true\" title=\"class or interface in java.awt\">Component.BaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BltBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.BltBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.FlipBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.FlipBufferStrategy</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#CONFIG_FILE_NAME\">CONFIG_FILE_NAME</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#invisibleObjects\">invisibleObjects</a></span></code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.JApplet\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#accessibleContext\" title=\"class or interface in javax.swing\">accessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#rootPane\" title=\"class or interface in javax.swing\">rootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#rootPaneCheckingEnabled\" title=\"class or interface in javax.swing\">rootPaneCheckingEnabled</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#BOTTOM_ALIGNMENT\" title=\"class or interface in java.awt\">BOTTOM_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#CENTER_ALIGNMENT\" title=\"class or interface in java.awt\">CENTER_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#LEFT_ALIGNMENT\" title=\"class or interface in java.awt\">LEFT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#RIGHT_ALIGNMENT\" title=\"class or interface in java.awt\">RIGHT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#TOP_ALIGNMENT\" title=\"class or interface in java.awt\">TOP_ALIGNMENT</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.program.ProgramInterface\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;acm.program.<a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></h3>\n<code><a href=\"../../acm/program/ProgramInterface.html#CENTER\">CENTER</a>, <a href=\"../../acm/program/ProgramInterface.html#EAST\">EAST</a>, <a href=\"../../acm/program/ProgramInterface.html#NORTH\">NORTH</a>, <a href=\"../../acm/program/ProgramInterface.html#SOUTH\">SOUTH</a>, <a href=\"../../acm/program/ProgramInterface.html#WEST\">WEST</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.image.ImageObserver\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ABORT\" title=\"class or interface in java.awt.image\">ABORT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ALLBITS\" title=\"class or interface in java.awt.image\">ALLBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ERROR\" title=\"class or interface in java.awt.image\">ERROR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#FRAMEBITS\" title=\"class or interface in java.awt.image\">FRAMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#HEIGHT\" title=\"class or interface in java.awt.image\">HEIGHT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#PROPERTIES\" title=\"class or interface in java.awt.image\">PROPERTIES</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#SOMEBITS\" title=\"class or interface in java.awt.image\">SOMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#WIDTH\" title=\"class or interface in java.awt.image\">WIDTH</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier</th>\n<th class=\"colLast\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected </code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#Program--\">Program</a></span>()</code>\n<div class=\"block\">This code initializes the program data structures.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#actionPerformed-java.awt.event.ActionEvent-\">actionPerformed</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;e)</code>\n<div class=\"block\">Called when a component (typically a button) is activated.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#add-java.awt.Component-java.lang.String-java.lang.Object-\">add</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;region,\n   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;constraints)</code>\n<div class=\"block\">Adds the component to the specified border region with the indicated\n constraints object.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#addActionListeners--\">addActionListeners</a></span>()</code>\n<div class=\"block\">Adds the program as an <code>ActionListener</code> to every button in\n the structure that does not have a listener already.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#addActionListeners-java.awt.event.ActionListener-\">addActionListeners</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener)</code>\n<div class=\"block\">Adds the specified listener to every button in\n the structure that does not have a listener already.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#addActionListenersToButtonsOnly--\">addActionListenersToButtonsOnly</a></span>()</code>\n<div class=\"block\">Adds the program as an <code>ActionListener</code> to every button in\n the structure that does not have a listener already.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#addAllActionListeners--\">addAllActionListeners</a></span>()</code>\n<div class=\"block\">Adds the program as an <code>ActionListener</code> to every button or component in\n the structure that does not have a listener already.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#addExitHook-java.lang.Object-\">addExitHook</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj)</code>\n<div class=\"block\">Requests that the program call the <code>exit</code> method in the\n specified object before exiting.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#addImpl-java.awt.Component-java.lang.Object-int-\">addImpl</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;constraints,\n       int&nbsp;index)</code>\n<div class=\"block\">Adds the specified component to the content pane using the specified constraints and index.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#adjustmentValueChanged-java.awt.event.AdjustmentEvent-\">adjustmentValueChanged</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/AdjustmentEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">AdjustmentEvent</a>&nbsp;e)</code>\n<div class=\"block\">Required empty method of AdjustmentListener interface.</div>\n</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#alert-java.lang.Object-\">alert</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</code>\n<div class=\"block\">Pops up a dialog box displaying a string representation of the given message.</div>\n</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#alert-java.lang.String-\">alert</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message)</code>\n<div class=\"block\">Pops up a dialog box displaying the given message.</div>\n</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#animation--\">animation</a></span>()</code>\n<div class=\"block\">Override this method to indicate what to do on every frame advance\n in an animated program after setAnimated(true) is called.</div>\n</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#center--\">center</a></span>()</code>\n<div class=\"block\">Moves this program's window to the center of the screen.</div>\n</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#changedUpdate-javax.swing.event.DocumentEvent-\">changedUpdate</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentEvent</a>&nbsp;e)</code>\n<div class=\"block\">Required method of DocumentListener interface.</div>\n</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#checkCompilerFlags--\">checkCompilerFlags</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#checkKill--\">checkKill</a></span>()</code>\n<div class=\"block\">Checks whether the program has been stopped via the killMe method.</div>\n</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#checkStartupSettings--\">checkStartupSettings</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#componentAdded-java.awt.event.ContainerEvent-\">componentAdded</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ContainerEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ContainerEvent</a>&nbsp;e)</code>\n<div class=\"block\">Required method of ContainerListener interface.</div>\n</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#componentHidden-java.awt.event.ComponentEvent-\">componentHidden</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentEvent</a>&nbsp;e)</code>\n<div class=\"block\">Required method of ComponentListener interface.</div>\n</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#componentMoved-java.awt.event.ComponentEvent-\">componentMoved</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentEvent</a>&nbsp;e)</code>\n<div class=\"block\">Required method of ComponentListener interface.</div>\n</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#componentRemoved-java.awt.event.ContainerEvent-\">componentRemoved</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ContainerEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ContainerEvent</a>&nbsp;e)</code>\n<div class=\"block\">Required method of ContainerListener interface.</div>\n</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#componentResized-java.awt.event.ComponentEvent-\">componentResized</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentEvent</a>&nbsp;e)</code>\n<div class=\"block\">Required method of ComponentListener interface.</div>\n</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#componentShown-java.awt.event.ComponentEvent-\">componentShown</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentEvent</a>&nbsp;e)</code>\n<div class=\"block\">Required method of ComponentListener interface.</div>\n</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#confirm-java.lang.String-\">confirm</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;question)</code>\n<div class=\"block\">Pops up a dialog box displaying the given message and asking the user to choose Yes or No.</div>\n</td>\n</tr>\n<tr id=\"i24\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#contentsChanged-javax.swing.event.ListDataEvent-\">contentsChanged</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListDataEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListDataEvent</a>&nbsp;e)</code>\n<div class=\"block\">Required method of ListDataListener interface.</div>\n</td>\n</tr>\n<tr id=\"i25\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"../../acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#createConsole--\">createConsole</a></span>()</code>\n<div class=\"block\">Creates the console used by the <code>ConsoleProgram</code>.</div>\n</td>\n</tr>\n<tr id=\"i26\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected acm.io.IODialog</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#createDialogIO--\">createDialogIO</a></span>()</code>\n<div class=\"block\">Creates the dialog used for interaction (primarily by the <code>DialogProgram</code>\n class).</div>\n</td>\n</tr>\n<tr id=\"i27\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"../../acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#createMenuBar--\">createMenuBar</a></span>()</code>\n<div class=\"block\">Creates a menu bar for use with the program.</div>\n</td>\n</tr>\n<tr id=\"i28\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#createParameterTable-java.lang.String:A-\">createParameterTable</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</code>\n<div class=\"block\">Creates a hash table containing the parameters specified in the\n argument list.</div>\n</td>\n</tr>\n<tr id=\"i29\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true\" title=\"class or interface in javax.swing\">JFrame</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#createProgramFrame--\">createProgramFrame</a></span>()</code>\n<div class=\"block\">Creates the frame containing the program.</div>\n</td>\n</tr>\n<tr id=\"i30\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#destroy--\">destroy</a></span>()</code>\n<div class=\"block\">Called when the program has been told to destroy itself.</div>\n</td>\n</tr>\n<tr id=\"i31\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#endHook--\">endHook</a></span>()</code>\n<div class=\"block\">Performs class-specific cleanup for the program just after\n it finishes.</div>\n</td>\n</tr>\n<tr id=\"i32\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#error-java.lang.Exception-\">error</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true\" title=\"class or interface in java.lang\">Exception</a>&nbsp;ex)</code>\n<div class=\"block\">Generates an ErrorException with the given exception as its cause.</div>\n</td>\n</tr>\n<tr id=\"i33\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#error-java.lang.Exception-java.lang.String-\">error</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true\" title=\"class or interface in java.lang\">Exception</a>&nbsp;ex,\n     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</code>\n<div class=\"block\">Generates an ErrorException with the given exception and text.</div>\n</td>\n</tr>\n<tr id=\"i34\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#error-java.lang.String-\">error</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</code>\n<div class=\"block\">Generates an ErrorException with the given text as its error message.</div>\n</td>\n</tr>\n<tr id=\"i35\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#exit--\">exit</a></span>()</code>\n<div class=\"block\">Exits from the program.</div>\n</td>\n</tr>\n<tr id=\"i36\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#fileExists-java.lang.String-\">fileExists</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>\n<div class=\"block\">Returns true if the given file exists within the current working directory.</div>\n</td>\n</tr>\n<tr id=\"i37\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#fileExists-java.lang.String-java.lang.String-\">fileExists</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;directory,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>\n<div class=\"block\">Returns true if the given file exists within the given directory.</div>\n</td>\n</tr>\n<tr id=\"i38\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#fileExistsInsideJAR-java.lang.String-\">fileExistsInsideJAR</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>\n<div class=\"block\">Returns true if the given file exists inside the app's JAR archive within the current working directory.</div>\n</td>\n</tr>\n<tr id=\"i39\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#fileExistsInsideJAR-java.lang.String-java.lang.String-\">fileExistsInsideJAR</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;directory,\n                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>\n<div class=\"block\">Returns true if the given file exists inside the app's JAR archive within the given directory.</div>\n</td>\n</tr>\n<tr id=\"i40\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#fileExistsOnDisk-java.lang.String-\">fileExistsOnDisk</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>\n<div class=\"block\">Returns true if the given file exists in the current working directory.</div>\n</td>\n</tr>\n<tr id=\"i41\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#fileExistsOnDisk-java.lang.String-java.lang.String-\">fileExistsOnDisk</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;directory,\n                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>\n<div class=\"block\">Returns true if the given file exists in the given directory.</div>\n</td>\n</tr>\n<tr id=\"i42\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#fileSize-java.lang.String-\">fileSize</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>\n<div class=\"block\">Returns the size of the given file in bytes in the current working directory.</div>\n</td>\n</tr>\n<tr id=\"i43\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#fileSize-java.lang.String-java.lang.String-\">fileSize</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;directory,\n        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>\n<div class=\"block\">Returns the size of the given file in bytes.</div>\n</td>\n</tr>\n<tr id=\"i44\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#focusGained-java.awt.event.FocusEvent-\">focusGained</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusEvent</a>&nbsp;e)</code>\n<div class=\"block\">Required empty method of FocusListener interface; does nothing.</div>\n</td>\n</tr>\n<tr id=\"i45\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#focusLost-java.awt.event.FocusEvent-\">focusLost</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusEvent</a>&nbsp;e)</code>\n<div class=\"block\">Required empty method of FocusListener interface; does nothing.</div>\n</td>\n</tr>\n<tr id=\"i46\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getAnimationDelay--\">getAnimationDelay</a></span>()</code>\n<div class=\"block\">Returns the delay between frames of animation in milliseconds (default 20).</div>\n</td>\n</tr>\n<tr id=\"i47\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AppletStub.html?is-external=true\" title=\"class or interface in java.applet\">AppletStub</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getAppletStub--\">getAppletStub</a></span>()</code>\n<div class=\"block\">Retrieves the applet stub.</div>\n</td>\n</tr>\n<tr id=\"i48\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getArgumentArray--\">getArgumentArray</a></span>()</code>\n<div class=\"block\">Retrieves the array of arguments passed in from the command line, or\n <code>null</code> if no arguments are available.</div>\n</td>\n</tr>\n<tr id=\"i49\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getBoolean--\">getBoolean</a></span>()</code>\n<div class=\"block\">Reads and returns a boolean value (<code>true</code> or <code>false</code>).</div>\n</td>\n</tr>\n<tr id=\"i50\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getBoolean-java.lang.String-\">getBoolean</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt)</code>\n<div class=\"block\">Prompts the user to enter a boolean value, which is returned as\n the value of this method.</div>\n</td>\n</tr>\n<tr id=\"i51\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getBoolean-java.lang.String-java.lang.String-java.lang.String-\">getBoolean</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;trueLabel,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;falseLabel)</code>\n<div class=\"block\">Prompts the user to enter a boolean value, which is matched against the\n labels provided.</div>\n</td>\n</tr>\n<tr id=\"i52\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getBorder-java.lang.String-\">getBorder</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;side)</code>\n<div class=\"block\">Returns the component installed as a border on the specified side, which must\n be one of the constants from <code>BorderLayout</code> (<code>NORTH</code>,\n <code>SOUTH</code>, <code>EAST</code>, <code>WEST</code>).</div>\n</td>\n</tr>\n<tr id=\"i53\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getBottomY--\">getBottomY</a></span>()</code>\n<div class=\"block\">Returns the y-coordinate of the bottom of this program's window.</div>\n</td>\n</tr>\n<tr id=\"i54\" class=\"altColor\">\n<td class=\"colFirst\"><code>acm.graphics.GDimension</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getCenterLocation--\">getCenterLocation</a></span>()</code>\n<div class=\"block\">Returns the x/y-coordinates of the center of this program's window.</div>\n</td>\n</tr>\n<tr id=\"i55\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getCenterX--\">getCenterX</a></span>()</code>\n<div class=\"block\">Returns the x-coordinate of the center of this program's window.</div>\n</td>\n</tr>\n<tr id=\"i56\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getCenterY--\">getCenterY</a></span>()</code>\n<div class=\"block\">Returns the y-coordinate of the center of this program's window.</div>\n</td>\n</tr>\n<tr id=\"i57\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getCentralRegionSize--\">getCentralRegionSize</a></span>()</code>\n<div class=\"block\">Returns the size of the central region.</div>\n</td>\n</tr>\n<tr id=\"i58\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getConsole--\">getConsole</a></span>()</code>\n<div class=\"block\">Returns the console associated with this program.</div>\n</td>\n</tr>\n<tr id=\"i59\" class=\"rowColor\">\n<td class=\"colFirst\"><code>acm.io.IODialog</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getDialog--\">getDialog</a></span>()</code>\n<div class=\"block\">Returns the dialog used for user interaction.</div>\n</td>\n</tr>\n<tr id=\"i60\" class=\"altColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getDouble--\">getDouble</a></span>()</code>\n<div class=\"block\">Reads and returns a double-precision value from the user.</div>\n</td>\n</tr>\n<tr id=\"i61\" class=\"rowColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getDouble-double-double-\">getDouble</a></span>(double&nbsp;low,\n         double&nbsp;high)</code>\n<div class=\"block\">Reads and returns a double-precision value from the user, which is\n constrained to be within the specified inclusive range.</div>\n</td>\n</tr>\n<tr id=\"i62\" class=\"altColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getDouble-java.lang.String-\">getDouble</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt)</code>\n<div class=\"block\">Prompts the user to enter an double-precision number, which is then\n returned as the value of this method.</div>\n</td>\n</tr>\n<tr id=\"i63\" class=\"rowColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getDouble-java.lang.String-double-double-\">getDouble</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt,\n         double&nbsp;low,\n         double&nbsp;high)</code>\n<div class=\"block\">Prompts the user to enter an double-precision number, which is then returned\n as the value of this method.</div>\n</td>\n</tr>\n<tr id=\"i64\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getHeight--\">getHeight</a></span>()</code>\n<div class=\"block\">Returns the height of the central region.</div>\n</td>\n</tr>\n<tr id=\"i65\" class=\"rowColor\">\n<td class=\"colFirst\"><code>acm.io.IOModel</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getInputModel--\">getInputModel</a></span>()</code>\n<div class=\"block\">Returns the <code>IOModel</code> used for program input, which will\n ordinarily be the console.</div>\n</td>\n</tr>\n<tr id=\"i66\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getInteger--\">getInteger</a></span>()</code>\n<div class=\"block\">Reads and returns an integer value from the user.</div>\n</td>\n</tr>\n<tr id=\"i67\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getInteger-int-int-\">getInteger</a></span>(int&nbsp;low,\n          int&nbsp;high)</code>\n<div class=\"block\">Reads and returns an integer value from the user, which is constrained to\n be within the specified inclusive range.</div>\n</td>\n</tr>\n<tr id=\"i68\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getInteger-java.lang.String-\">getInteger</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt)</code>\n<div class=\"block\">Prompts the user to enter an integer, which is then returned as the value\n of this method.</div>\n</td>\n</tr>\n<tr id=\"i69\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getInteger-java.lang.String-int-int-\">getInteger</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt,\n          int&nbsp;low,\n          int&nbsp;high)</code>\n<div class=\"block\">Prompts the user to enter an integer, which is then returned as the value\n of this method.</div>\n</td>\n</tr>\n<tr id=\"i70\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true\" title=\"class or interface in javax.swing\">JFrame</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getJFrame--\">getJFrame</a></span>()</code>\n<div class=\"block\">Returns the Java Swing window frame that encloses this program.</div>\n</td>\n</tr>\n<tr id=\"i71\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/LayoutManager.html?is-external=true\" title=\"class or interface in java.awt\">LayoutManager</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getLayout--\">getLayout</a></span>()</code>\n<div class=\"block\">Gets the layout manager for the central region of the content pane.</div>\n</td>\n</tr>\n<tr id=\"i72\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getLine--\">getLine</a></span>()</code>\n<div class=\"block\">Reads and returns a line of input from the console.</div>\n</td>\n</tr>\n<tr id=\"i73\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getLine-java.lang.String-\">getLine</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt)</code>\n<div class=\"block\">Prompts the user for a line of input.</div>\n</td>\n</tr>\n<tr id=\"i74\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true\" title=\"class or interface in java.lang\">Thread</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getMainThread--\">getMainThread</a></span>()</code>\n<div class=\"block\">Returns the thread that is running the main program.</div>\n</td>\n</tr>\n<tr id=\"i75\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getMenuBar--\">getMenuBar</a></span>()</code>\n<div class=\"block\">Returns the menu bar associated with this program.</div>\n</td>\n</tr>\n<tr id=\"i76\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getOutputColor--\">getOutputColor</a></span>()</code>\n<div class=\"block\">Returns the current output color used to display output on the console.</div>\n</td>\n</tr>\n<tr id=\"i77\" class=\"rowColor\">\n<td class=\"colFirst\"><code>acm.io.IOModel</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getOutputModel--\">getOutputModel</a></span>()</code>\n<div class=\"block\">Returns the <code>IOModel</code> used for program output, which will\n ordinarily be the console.</div>\n</td>\n</tr>\n<tr id=\"i78\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getParameter-java.lang.String-\">getParameter</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>\n<div class=\"block\">Returns the parameter associated with name.</div>\n</td>\n</tr>\n<tr id=\"i79\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getParameterTable--\">getParameterTable</a></span>()</code>\n<div class=\"block\">Retrieves the parameter table.</div>\n</td>\n</tr>\n<tr id=\"i80\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getPreferredSize--\">getPreferredSize</a></span>()</code>\n<div class=\"block\">Returns the preferred size of the content pane.</div>\n</td>\n</tr>\n<tr id=\"i81\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html?is-external=true\" title=\"class or interface in java.io\">BufferedReader</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getReader--\">getReader</a></span>()</code>\n<div class=\"block\">Returns a <code>BufferedReader</code> whose input comes from the console.</div>\n</td>\n</tr>\n<tr id=\"i82\" class=\"altColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getReal--\">getReal</a></span>()</code>\n<div class=\"block\">Reads and returns a double-precision value from the user.</div>\n</td>\n</tr>\n<tr id=\"i83\" class=\"rowColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getReal-double-double-\">getReal</a></span>(double&nbsp;low,\n       double&nbsp;high)</code>\n<div class=\"block\">Reads and returns a double-precision value from the user, which is\n constrained to be within the specified inclusive range.</div>\n</td>\n</tr>\n<tr id=\"i84\" class=\"altColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getReal-java.lang.String-\">getReal</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt)</code>\n<div class=\"block\">Prompts the user to enter an double-precision number, which is then\n returned as the value of this method.</div>\n</td>\n</tr>\n<tr id=\"i85\" class=\"rowColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getReal-java.lang.String-double-double-\">getReal</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt,\n       double&nbsp;low,\n       double&nbsp;high)</code>\n<div class=\"block\">Prompts the user to enter an double-precision number, which is then returned\n as the value of this method.</div>\n</td>\n</tr>\n<tr id=\"i86\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getRegionPanel-java.lang.String-\">getRegionPanel</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;region)</code>\n<div class=\"block\">Gets the <code>JPanel</code> for the specified region.</div>\n</td>\n</tr>\n<tr id=\"i87\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getRightX--\">getRightX</a></span>()</code>\n<div class=\"block\">Returns the x-coordinate of the right edge of this program's window.</div>\n</td>\n</tr>\n<tr id=\"i88\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getScreenHeight--\">getScreenHeight</a></span>()</code>\n<div class=\"block\">Returns the height of the screen in pixels.</div>\n</td>\n</tr>\n<tr id=\"i89\" class=\"rowColor\">\n<td class=\"colFirst\"><code>acm.graphics.GDimension</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getScreenSize--\">getScreenSize</a></span>()</code>\n<div class=\"block\">Returns the width x height of the screen in pixels.</div>\n</td>\n</tr>\n<tr id=\"i90\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getScreenWidth--\">getScreenWidth</a></span>()</code>\n<div class=\"block\">Returns the width of the screen in pixels.</div>\n</td>\n</tr>\n<tr id=\"i91\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getStartupObject--\">getStartupObject</a></span>()</code>\n<div class=\"block\">Retrieves the object that was created when this program was started\n if that object is something other than a <code>Program</code>.</div>\n</td>\n</tr>\n<tr id=\"i92\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getTitle--\">getTitle</a></span>()</code>\n<div class=\"block\">Gets the title of this program.</div>\n</td>\n</tr>\n<tr id=\"i93\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getWidth--\">getWidth</a></span>()</code>\n<div class=\"block\">Returns the width of the central region.</div>\n</td>\n</tr>\n<tr id=\"i94\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true\" title=\"class or interface in java.awt\">Window</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getWindow--\">getWindow</a></span>()</code>\n<div class=\"block\">Returns the Java Swing window that encloses this program.</div>\n</td>\n</tr>\n<tr id=\"i95\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintWriter.html?is-external=true\" title=\"class or interface in java.io\">PrintWriter</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getWriter--\">getWriter</a></span>()</code>\n<div class=\"block\">Returns a <code>PrintWriter</code> whose output is directed to the console.</div>\n</td>\n</tr>\n<tr id=\"i96\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#getYesOrNo-java.lang.String-\">getYesOrNo</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt)</code>\n<div class=\"block\">Prompts the user to answer a yes/no question and returns true if the user\n typed 'yes' (or anything that starts with a 'y', case-insensitively),\n false if the user types anything that starts with 'n', or re-prompts if\n the user doesn't type a 'y' or 'n' word.</div>\n</td>\n</tr>\n<tr id=\"i97\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#hasConfiguration--\">hasConfiguration</a></span>()</code>\n<div class=\"block\">Returns true if this program has any saved configuration stored on disk.</div>\n</td>\n</tr>\n<tr id=\"i98\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#init--\">init</a></span>()</code>\n<div class=\"block\">Specifies the code to be executed as startup time before the\n <code>run</code> method is called.</div>\n</td>\n</tr>\n<tr id=\"i99\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#insertUpdate-javax.swing.event.DocumentEvent-\">insertUpdate</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentEvent</a>&nbsp;e)</code>\n<div class=\"block\">Required method of DocumentListener interface.</div>\n</td>\n</tr>\n<tr id=\"i100\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#intervalAdded-javax.swing.event.ListDataEvent-\">intervalAdded</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListDataEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListDataEvent</a>&nbsp;e)</code>\n<div class=\"block\">Required method of ListDataListener interface.</div>\n</td>\n</tr>\n<tr id=\"i101\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#intervalRemoved-javax.swing.event.ListDataEvent-\">intervalRemoved</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListDataEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListDataEvent</a>&nbsp;e)</code>\n<div class=\"block\">Required method of ListDataListener interface.</div>\n</td>\n</tr>\n<tr id=\"i102\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#isAnimated--\">isAnimated</a></span>()</code>\n<div class=\"block\">Returns true if the program is currently in animated mode.</div>\n</td>\n</tr>\n<tr id=\"i103\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#isApplet--\">isApplet</a></span>()</code>\n<div class=\"block\">Returns <code>true</code> if this program is running as an applet in a browser.</div>\n</td>\n</tr>\n<tr id=\"i104\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#isAppletMode--\">isAppletMode</a></span>()</code>\n<div class=\"block\">Returns <code>true</code> if this program is running as an applet in a browser.</div>\n</td>\n</tr>\n<tr id=\"i105\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#isExitOnClose--\">isExitOnClose</a></span>()</code>\n<div class=\"block\">Returns whether the program will exit when its window is closed (default true).</div>\n</td>\n</tr>\n<tr id=\"i106\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#isInitialized--\">isInitialized</a></span>()</code>\n<div class=\"block\">Returns true if this program's init() method has been called.</div>\n</td>\n</tr>\n<tr id=\"i107\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#isStarted--\">isStarted</a></span>()</code>\n<div class=\"block\">Checks to see whether this program has started, usually by checking to see\n whether some pane exists.</div>\n</td>\n</tr>\n<tr id=\"i108\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#itemStateChanged-java.awt.event.ItemEvent-\">itemStateChanged</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ItemEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ItemEvent</a>&nbsp;e)</code>\n<div class=\"block\">Required empty method of ItemListener interface.</div>\n</td>\n</tr>\n<tr id=\"i109\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#keyPressed-java.awt.event.KeyEvent-\">keyPressed</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyEvent</a>&nbsp;e)</code>\n<div class=\"block\">Called when a key is pressed.</div>\n</td>\n</tr>\n<tr id=\"i110\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#keyReleased-java.awt.event.KeyEvent-\">keyReleased</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyEvent</a>&nbsp;e)</code>\n<div class=\"block\">Called when a key is released.</div>\n</td>\n</tr>\n<tr id=\"i111\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#keyTyped-java.awt.event.KeyEvent-\">keyTyped</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyEvent</a>&nbsp;e)</code>\n<div class=\"block\">Called when a key is typed (i.e., pressed and released).</div>\n</td>\n</tr>\n<tr id=\"i112\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#killMe--\">killMe</a></span>()</code>\n<div class=\"block\">Instructs the program to stop/kill itself.</div>\n</td>\n</tr>\n<tr id=\"i113\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#loadConfiguration--\">loadConfiguration</a></span>()</code>\n<div class=\"block\">Loads any saved configuration of this program from disk.</div>\n</td>\n</tr>\n<tr id=\"i114\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#loadConfiguration-java.util.Properties-\">loadConfiguration</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Properties.html?is-external=true\" title=\"class or interface in java.util\">Properties</a>&nbsp;props)</code>\n<div class=\"block\">Loads any saved configuration of this program from disk.</div>\n</td>\n</tr>\n<tr id=\"i115\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#main-java.lang.String:A-\">main</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</code>\n<div class=\"block\">Every application must either contain a \"Main-Class\" entry in its\n manifest file or include a main method that looks like this, where\n <code>MyClass</code> is the name of the program class:</div>\n</td>\n</tr>\n<tr id=\"i116\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#menuAction-java.awt.event.ActionEvent-\">menuAction</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;event)</code>\n<div class=\"block\">Called whenever a program action is detected in the menu bar.</div>\n</td>\n</tr>\n<tr id=\"i117\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#menuCanceled-javax.swing.event.MenuEvent-\">menuCanceled</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/MenuEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">MenuEvent</a>&nbsp;e)</code>\n<div class=\"block\">Required method of MenuListener interface.</div>\n</td>\n</tr>\n<tr id=\"i118\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#menuDeselected-javax.swing.event.MenuEvent-\">menuDeselected</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/MenuEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">MenuEvent</a>&nbsp;e)</code>\n<div class=\"block\">Required method of MenuListener interface.</div>\n</td>\n</tr>\n<tr id=\"i119\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#menuSelected-javax.swing.event.MenuEvent-\">menuSelected</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/MenuEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">MenuEvent</a>&nbsp;e)</code>\n<div class=\"block\">Required method of MenuListener interface.</div>\n</td>\n</tr>\n<tr id=\"i120\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#mouseClicked-java.awt.event.MouseEvent-\">mouseClicked</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</code>\n<div class=\"block\">Called when the mouse is clicked.</div>\n</td>\n</tr>\n<tr id=\"i121\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#mouseDragged-java.awt.event.MouseEvent-\">mouseDragged</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</code>\n<div class=\"block\">Called when the mouse is dragged with the button down.</div>\n</td>\n</tr>\n<tr id=\"i122\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#mouseEntered-java.awt.event.MouseEvent-\">mouseEntered</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</code>\n<div class=\"block\">Called when the mouse enters the source (which may be\n either a component or a <code>GObject</code>).</div>\n</td>\n</tr>\n<tr id=\"i123\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#mouseExited-java.awt.event.MouseEvent-\">mouseExited</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</code>\n<div class=\"block\">Called when the mouse exits the source (which may be\n either a component or a <code>GObject</code>).</div>\n</td>\n</tr>\n<tr id=\"i124\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#mouseMoved-java.awt.event.MouseEvent-\">mouseMoved</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</code>\n<div class=\"block\">Called when the mouse is moved.</div>\n</td>\n</tr>\n<tr id=\"i125\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#mousePressed-java.awt.event.MouseEvent-\">mousePressed</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</code>\n<div class=\"block\">Called when the mouse button is pressed.</div>\n</td>\n</tr>\n<tr id=\"i126\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#mouseReleased-java.awt.event.MouseEvent-\">mouseReleased</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</code>\n<div class=\"block\">Called when the mouse button is released.</div>\n</td>\n</tr>\n<tr id=\"i127\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#mouseWheelMoved-java.awt.event.MouseWheelEvent-\">mouseWheelMoved</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseWheelEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseWheelEvent</a>&nbsp;e)</code>\n<div class=\"block\">Implementation of MouseWheelListener interface.</div>\n</td>\n</tr>\n<tr id=\"i128\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#openFile-java.lang.String-\">openFile</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>\n<div class=\"block\">Opens the given file for reading.</div>\n</td>\n</tr>\n<tr id=\"i129\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#openFile-java.lang.String-java.lang.String-\">openFile</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;directory,\n        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>\n<div class=\"block\">Opens the given file from within the given directory.</div>\n</td>\n</tr>\n<tr id=\"i130\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#openFileFromDisk-java.lang.String-\">openFileFromDisk</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>\n<div class=\"block\">Opens the given file from within the current working directory.</div>\n</td>\n</tr>\n<tr id=\"i131\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#openFileFromDisk-java.lang.String-java.lang.String-\">openFileFromDisk</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;directory,\n                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>\n<div class=\"block\">Opens the given file from within the given directory.</div>\n</td>\n</tr>\n<tr id=\"i132\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#openFileFromJAR-java.lang.String-\">openFileFromJAR</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>\n<div class=\"block\">Opens the given file from inside the app's JAR archive.</div>\n</td>\n</tr>\n<tr id=\"i133\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#openFileFromJAR-java.lang.String-java.lang.String-\">openFileFromJAR</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;directory,\n               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>\n<div class=\"block\">Opens the given file from within the app's JAR archive in the given directory.</div>\n</td>\n</tr>\n<tr id=\"i134\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#pack--\">pack</a></span>()</code>\n<div class=\"block\">Resizes this program to exactly fit the preferred size of its contents.</div>\n</td>\n</tr>\n<tr id=\"i135\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#pause-double-\">pause</a></span>(double&nbsp;milliseconds)</code>\n<div class=\"block\">Delays the calling thread for the specified time, which is expressed in\n milliseconds.</div>\n</td>\n</tr>\n<tr id=\"i136\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#pauseTick--\">pauseTick</a></span>()</code>\n<div class=\"block\">Sets a 'pause tick' flag.</div>\n</td>\n</tr>\n<tr id=\"i137\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#popupMenuCanceled-javax.swing.event.PopupMenuEvent-\">popupMenuCanceled</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/PopupMenuEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">PopupMenuEvent</a>&nbsp;e)</code>\n<div class=\"block\">Required method of PopupMenuListener interface.</div>\n</td>\n</tr>\n<tr id=\"i138\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#popupMenuWillBecomeInvisible-javax.swing.event.PopupMenuEvent-\">popupMenuWillBecomeInvisible</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/PopupMenuEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">PopupMenuEvent</a>&nbsp;e)</code>\n<div class=\"block\">Required method of PopupMenuListener interface.</div>\n</td>\n</tr>\n<tr id=\"i139\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#popupMenuWillBecomeVisible-javax.swing.event.PopupMenuEvent-\">popupMenuWillBecomeVisible</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/PopupMenuEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">PopupMenuEvent</a>&nbsp;e)</code>\n<div class=\"block\">Required method of PopupMenuListener interface.</div>\n</td>\n</tr>\n<tr id=\"i140\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#print-boolean-\">print</a></span>(boolean&nbsp;x)</code>\n<div class=\"block\">Makes sure that <code>print</code> can display a <code>boolean</code>.</div>\n</td>\n</tr>\n<tr id=\"i141\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#print-boolean-java.awt.Color-\">print</a></span>(boolean&nbsp;value,\n     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>\n<div class=\"block\">Prints the given value in the given color.</div>\n</td>\n</tr>\n<tr id=\"i142\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#print-char-\">print</a></span>(char&nbsp;x)</code>\n<div class=\"block\">Makes sure that <code>print</code> can display a <code>char</code>.</div>\n</td>\n</tr>\n<tr id=\"i143\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#print-char-java.awt.Color-\">print</a></span>(char&nbsp;value,\n     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>\n<div class=\"block\">Prints the given value in the given color.</div>\n</td>\n</tr>\n<tr id=\"i144\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#print-double-\">print</a></span>(double&nbsp;x)</code>\n<div class=\"block\">Makes sure that <code>print</code> can display a <code>double</code>.</div>\n</td>\n</tr>\n<tr id=\"i145\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#print-double-java.awt.Color-\">print</a></span>(double&nbsp;value,\n     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>\n<div class=\"block\">Prints the given value in the given color.</div>\n</td>\n</tr>\n<tr id=\"i146\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#print-float-\">print</a></span>(float&nbsp;x)</code>\n<div class=\"block\">Makes sure that <code>print</code> can display a <code>float</code>.</div>\n</td>\n</tr>\n<tr id=\"i147\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#print-float-java.awt.Color-\">print</a></span>(float&nbsp;value,\n     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>\n<div class=\"block\">Prints the given value in the given color.</div>\n</td>\n</tr>\n<tr id=\"i148\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#print-int-\">print</a></span>(int&nbsp;x)</code>\n<div class=\"block\">Makes sure that <code>print</code> can display an <code>int</code>.</div>\n</td>\n</tr>\n<tr id=\"i149\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#print-int-java.awt.Color-\">print</a></span>(int&nbsp;value,\n     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>\n<div class=\"block\">Prints the given value in the given color.</div>\n</td>\n</tr>\n<tr id=\"i150\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#print-long-\">print</a></span>(long&nbsp;x)</code>\n<div class=\"block\">Makes sure that <code>print</code> can display a <code>long</code>.</div>\n</td>\n</tr>\n<tr id=\"i151\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#print-long-java.awt.Color-\">print</a></span>(long&nbsp;value,\n     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>\n<div class=\"block\">Prints the given value in the given color.</div>\n</td>\n</tr>\n<tr id=\"i152\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#print-java.lang.Object-\">print</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;x)</code>\n<div class=\"block\">Makes sure that <code>print</code> can display an <code>Object</code>.</div>\n</td>\n</tr>\n<tr id=\"i153\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#print-java.lang.Object-java.awt.Color-\">print</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value,\n     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>\n<div class=\"block\">Prints the given value in the given color.</div>\n</td>\n</tr>\n<tr id=\"i154\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#print-java.lang.String-\">print</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</code>\n<div class=\"block\">Displays the argument value on the console, leaving the cursor at the end of\n the output.</div>\n</td>\n</tr>\n<tr id=\"i155\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#print-java.lang.String-java.awt.Color-\">print</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value,\n     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>\n<div class=\"block\">Prints the given string in the given color.</div>\n</td>\n</tr>\n<tr id=\"i156\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#printf-java.lang.String-java.lang.Object...-\">printf</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;format,\n      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>...&nbsp;args)</code>\n<div class=\"block\">Writes a formatted string to this output stream using the specified format string and arguments.</div>\n</td>\n</tr>\n<tr id=\"i157\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#println--\">println</a></span>()</code>\n<div class=\"block\">Advances the console cursor to the beginning of the next line.</div>\n</td>\n</tr>\n<tr id=\"i158\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#println-boolean-\">println</a></span>(boolean&nbsp;x)</code>\n<div class=\"block\">Makes sure that <code>println</code> can display a <code>boolean</code>.</div>\n</td>\n</tr>\n<tr id=\"i159\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#println-boolean-java.awt.Color-\">println</a></span>(boolean&nbsp;value,\n       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>\n<div class=\"block\">Prints the given value in the given color and then advances the cursor to the beginning of the next line.</div>\n</td>\n</tr>\n<tr id=\"i160\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#println-char-\">println</a></span>(char&nbsp;x)</code>\n<div class=\"block\">Makes sure that <code>println</code> can display a <code>char</code>.</div>\n</td>\n</tr>\n<tr id=\"i161\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#println-char-java.awt.Color-\">println</a></span>(char&nbsp;value,\n       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>\n<div class=\"block\">Prints the given value in the given color and then advances the cursor to the beginning of the next line.</div>\n</td>\n</tr>\n<tr id=\"i162\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#println-double-\">println</a></span>(double&nbsp;x)</code>\n<div class=\"block\">Makes sure that <code>println</code> can display a <code>double</code>.</div>\n</td>\n</tr>\n<tr id=\"i163\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#println-double-java.awt.Color-\">println</a></span>(double&nbsp;value,\n       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>\n<div class=\"block\">Prints the given value in the given color and then advances the cursor to the beginning of the next line.</div>\n</td>\n</tr>\n<tr id=\"i164\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#println-float-\">println</a></span>(float&nbsp;x)</code>\n<div class=\"block\">Makes sure that <code>println</code> can display a <code>float</code>.</div>\n</td>\n</tr>\n<tr id=\"i165\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#println-float-java.awt.Color-\">println</a></span>(float&nbsp;value,\n       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>\n<div class=\"block\">Prints the given value in the given color and then advances the cursor to the beginning of the next line.</div>\n</td>\n</tr>\n<tr id=\"i166\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#println-int-\">println</a></span>(int&nbsp;x)</code>\n<div class=\"block\">Makes sure that <code>println</code> can display an <code>int</code>.</div>\n</td>\n</tr>\n<tr id=\"i167\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#println-int-java.awt.Color-\">println</a></span>(int&nbsp;value,\n       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>\n<div class=\"block\">Prints the given value in the given color and then advances the cursor to the beginning of the next line.</div>\n</td>\n</tr>\n<tr id=\"i168\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#println-long-\">println</a></span>(long&nbsp;x)</code>\n<div class=\"block\">Makes sure that <code>println</code> can display a <code>long</code>.</div>\n</td>\n</tr>\n<tr id=\"i169\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#println-long-java.awt.Color-\">println</a></span>(long&nbsp;value,\n       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>\n<div class=\"block\">Prints the given value in the given color and then advances the cursor to the beginning of the next line.</div>\n</td>\n</tr>\n<tr id=\"i170\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#println-java.lang.Object-\">println</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;x)</code>\n<div class=\"block\">Makes sure that <code>println</code> can display an <code>Object</code>.</div>\n</td>\n</tr>\n<tr id=\"i171\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#println-java.lang.Object-java.awt.Color-\">println</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value,\n       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>\n<div class=\"block\">Prints the given value in the given color and then advances the cursor to the beginning of the next line.</div>\n</td>\n</tr>\n<tr id=\"i172\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#println-java.lang.String-\">println</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</code>\n<div class=\"block\">Displays the argument value on the console and then advances the cursor\n to the beginning of the next line.</div>\n</td>\n</tr>\n<tr id=\"i173\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#println-java.lang.String-java.awt.Color-\">println</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value,\n       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>\n<div class=\"block\">Prints the given string in the given color and then advances the cursor to the beginning of the next line.</div>\n</td>\n</tr>\n<tr id=\"i174\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#prompt-java.lang.String-\">prompt</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt)</code>\n<div class=\"block\">Pops up a dialog box displaying the given message and asking the user to type a response.</div>\n</td>\n</tr>\n<tr id=\"i175\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#readBoolean--\">readBoolean</a></span>()</code>\n<div class=\"block\">Reads and returns a boolean value (<code>true</code> or <code>false</code>).</div>\n</td>\n</tr>\n<tr id=\"i176\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#readBoolean-java.lang.String-\">readBoolean</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt)</code>\n<div class=\"block\">Prompts the user to enter a boolean value, which is returned as\n the value of this method.</div>\n</td>\n</tr>\n<tr id=\"i177\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#readBoolean-java.lang.String-java.lang.String-java.lang.String-\">readBoolean</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt,\n           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;trueLabel,\n           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;falseLabel)</code>\n<div class=\"block\">Prompts the user to enter a boolean value, which is matched against the\n labels provided.</div>\n</td>\n</tr>\n<tr id=\"i178\" class=\"altColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#readDouble--\">readDouble</a></span>()</code>\n<div class=\"block\">Reads and returns a double-precision value from the user.</div>\n</td>\n</tr>\n<tr id=\"i179\" class=\"rowColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#readDouble-double-double-\">readDouble</a></span>(double&nbsp;low,\n          double&nbsp;high)</code>\n<div class=\"block\">Reads and returns a double-precision value from the user, which is\n constrained to be within the specified inclusive range.</div>\n</td>\n</tr>\n<tr id=\"i180\" class=\"altColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#readDouble-java.lang.String-\">readDouble</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt)</code>\n<div class=\"block\">Prompts the user to enter an double-precision number, which is then\n returned as the value of this method.</div>\n</td>\n</tr>\n<tr id=\"i181\" class=\"rowColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#readDouble-java.lang.String-double-double-\">readDouble</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt,\n          double&nbsp;low,\n          double&nbsp;high)</code>\n<div class=\"block\">Prompts the user to enter an double-precision number, which is then returned\n as the value of this method.</div>\n</td>\n</tr>\n<tr id=\"i182\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#readInt--\">readInt</a></span>()</code>\n<div class=\"block\">Reads and returns an integer value from the user.</div>\n</td>\n</tr>\n<tr id=\"i183\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#readInt-int-int-\">readInt</a></span>(int&nbsp;low,\n       int&nbsp;high)</code>\n<div class=\"block\">Reads and returns an integer value from the user, which is constrained to\n be within the specified inclusive range.</div>\n</td>\n</tr>\n<tr id=\"i184\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#readInt-java.lang.String-\">readInt</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt)</code>\n<div class=\"block\">Prompts the user to enter an integer, which is then returned as the value\n of this method.</div>\n</td>\n</tr>\n<tr id=\"i185\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#readInt-java.lang.String-int-int-\">readInt</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt,\n       int&nbsp;low,\n       int&nbsp;high)</code>\n<div class=\"block\">Prompts the user to enter an integer, which is then returned as the value\n of this method.</div>\n</td>\n</tr>\n<tr id=\"i186\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#readLine--\">readLine</a></span>()</code>\n<div class=\"block\">Reads and returns a line of input from the console.</div>\n</td>\n</tr>\n<tr id=\"i187\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#readLine-java.lang.String-\">readLine</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt)</code>\n<div class=\"block\">Prompts the user for a line of input.</div>\n</td>\n</tr>\n<tr id=\"i188\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#remove-java.awt.Component-\">remove</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp)</code>\n<div class=\"block\">Removes the specified component from the central region.</div>\n</td>\n</tr>\n<tr id=\"i189\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#remove-int-\">remove</a></span>(int&nbsp;index)</code>\n<div class=\"block\">Removes the component at the specified index from the central region.</div>\n</td>\n</tr>\n<tr id=\"i190\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#removeAll--\">removeAll</a></span>()</code>\n<div class=\"block\">Removes all components from the central region.</div>\n</td>\n</tr>\n<tr id=\"i191\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#removeFromRegion-java.awt.Component-java.lang.String-\">removeFromRegion</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;region)</code>\n<div class=\"block\">Removes the specified component from the specified region of this program window.</div>\n</td>\n</tr>\n<tr id=\"i192\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#removeMenuBar--\">removeMenuBar</a></span>()</code>\n<div class=\"block\">Removes the JMenuBar at the top of the program window.</div>\n</td>\n</tr>\n<tr id=\"i193\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#removeUpdate-javax.swing.event.DocumentEvent-\">removeUpdate</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentEvent</a>&nbsp;e)</code>\n<div class=\"block\">Required method of DocumentListener interface.</div>\n</td>\n</tr>\n<tr id=\"i194\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#repaint--\">repaint</a></span>()</code>\n<div class=\"block\">Forwards repaint to the content pane.</div>\n</td>\n</tr>\n<tr id=\"i195\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#run--\">run</a></span>()</code>\n<div class=\"block\">Specifies the code to be executed as the program runs.</div>\n</td>\n</tr>\n<tr id=\"i196\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#runHook--\">runHook</a></span>()</code>\n<div class=\"block\">Calls the run method in the program.</div>\n</td>\n</tr>\n<tr id=\"i197\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#saveConfiguration--\">saveConfiguration</a></span>()</code>\n<div class=\"block\">Saves configuration of this program to disk.</div>\n</td>\n</tr>\n<tr id=\"i198\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#saveConfiguration-java.util.Properties-\">saveConfiguration</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Properties.html?is-external=true\" title=\"class or interface in java.util\">Properties</a>&nbsp;props)</code>\n<div class=\"block\">Saves configuration of this program to disk in the given properties collection.</div>\n</td>\n</tr>\n<tr id=\"i199\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#setAnimated-boolean-\">setAnimated</a></span>(boolean&nbsp;value)</code>\n<div class=\"block\">Sets the program to be in animated (true) or non-animated (false) mode.</div>\n</td>\n</tr>\n<tr id=\"i200\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#setAnimationDelay-int-\">setAnimationDelay</a></span>(int&nbsp;delayMS)</code>\n<div class=\"block\">Sets the number of milliseconds to delay between frames of animation.</div>\n</td>\n</tr>\n<tr id=\"i201\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#setAppletStub-java.applet.AppletStub-\">setAppletStub</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AppletStub.html?is-external=true\" title=\"class or interface in java.applet\">AppletStub</a>&nbsp;stub)</code>\n<div class=\"block\">Sets the applet stub for this program in a way that makes it possible for\n clients to retrieve it.</div>\n</td>\n</tr>\n<tr id=\"i202\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#setBackground-java.awt.Color-\">setBackground</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>\n<div class=\"block\">Sets the background for the central region of the content pane.</div>\n</td>\n</tr>\n<tr id=\"i203\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#setBottomY-double-\">setBottomY</a></span>(double&nbsp;y)</code>\n<div class=\"block\">Sets the y location of the bottom of this program.</div>\n</td>\n</tr>\n<tr id=\"i204\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#setCenterLocation-double-double-\">setCenterLocation</a></span>(double&nbsp;x,\n                 double&nbsp;y)</code>\n<div class=\"block\">Sets the y location of the horizontal and vertical center of this program.</div>\n</td>\n</tr>\n<tr id=\"i205\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#setCenterX-double-\">setCenterX</a></span>(double&nbsp;x)</code>\n<div class=\"block\">Sets the x location of the horizontal center of this program.</div>\n</td>\n</tr>\n<tr id=\"i206\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#setCenterY-double-\">setCenterY</a></span>(double&nbsp;y)</code>\n<div class=\"block\">Sets the y location of the vertical center of this program.</div>\n</td>\n</tr>\n<tr id=\"i207\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#setConsole-acm.io.IOConsole-\">setConsole</a></span>(<a href=\"../../acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a>&nbsp;console)</code>\n<div class=\"block\">Sets the console associated with this program.</div>\n</td>\n</tr>\n<tr id=\"i208\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#setDialog-acm.io.IODialog-\">setDialog</a></span>(acm.io.IODialog&nbsp;dialog)</code>\n<div class=\"block\">Sets the dialog associated with this program.</div>\n</td>\n</tr>\n<tr id=\"i209\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#setExitOnClose-boolean-\">setExitOnClose</a></span>(boolean&nbsp;exitOnClose)</code>\n<div class=\"block\">Sets whether the program will exit when its window is closed (default true).</div>\n</td>\n</tr>\n<tr id=\"i210\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#setFramesPerSecond-int-\">setFramesPerSecond</a></span>(int&nbsp;fps)</code>\n<div class=\"block\">Sets the animation delay properly to produce the given number of frames\n per second of animation.</div>\n</td>\n</tr>\n<tr id=\"i211\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#setHeight-double-\">setHeight</a></span>(double&nbsp;height)</code>\n<div class=\"block\">Sets the height of this program without changing its width.</div>\n</td>\n</tr>\n<tr id=\"i212\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#setInputModel-acm.io.IOModel-\">setInputModel</a></span>(acm.io.IOModel&nbsp;io)</code>\n<div class=\"block\">Sets the input model associated with this program.</div>\n</td>\n</tr>\n<tr id=\"i213\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#setInvisible-acm.graphics.GObject-boolean-\">setInvisible</a></span>(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;obj,\n            boolean&nbsp;invisible)</code>\n<div class=\"block\">Marks the given GObject as being 'invisible'.</div>\n</td>\n</tr>\n<tr id=\"i214\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#setJFrame-javax.swing.JFrame-\">setJFrame</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true\" title=\"class or interface in javax.swing\">JFrame</a>&nbsp;jframe)</code>\n<div class=\"block\">Sets the Java Swing window frame that encloses this program.</div>\n</td>\n</tr>\n<tr id=\"i215\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#setJMenuBar-javax.swing.JMenuBar-\">setJMenuBar</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuBar</a>&nbsp;bar)</code>\n<div class=\"block\">Sets the JMenuBar at the top of the program window to be the given menu bar.</div>\n</td>\n</tr>\n<tr id=\"i216\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#setLayout-java.awt.LayoutManager-\">setLayout</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/LayoutManager.html?is-external=true\" title=\"class or interface in java.awt\">LayoutManager</a>&nbsp;layout)</code>\n<div class=\"block\">Sets the layout manager for the central region of the content pane.</div>\n</td>\n</tr>\n<tr id=\"i217\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#setLocation-double-double-\">setLocation</a></span>(double&nbsp;x,\n           double&nbsp;y)</code>\n<div class=\"block\">Sets the (x, y) location of the top-left corner of this program.</div>\n</td>\n</tr>\n<tr id=\"i218\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#setLocation-acm.graphics.GPoint-\">setLocation</a></span>(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;point)</code>\n<div class=\"block\">Sets the (x, y) location of the top-left corner of this program.</div>\n</td>\n</tr>\n<tr id=\"i219\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#setOutputColor-java.awt.Color-\">setOutputColor</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>\n<div class=\"block\">Sets the current output color used to display output on the console.</div>\n</td>\n</tr>\n<tr id=\"i220\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#setOutputModel-acm.io.IOModel-\">setOutputModel</a></span>(acm.io.IOModel&nbsp;io)</code>\n<div class=\"block\">Sets the output model associated with this program.</div>\n</td>\n</tr>\n<tr id=\"i221\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#setParameter-java.lang.String-java.lang.String-\">setParameter</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</code>\n<div class=\"block\">Sets a new value for the named parameter.</div>\n</td>\n</tr>\n<tr id=\"i222\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#setParameterTable-java.util.Map-\">setParameterTable</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;ht)</code>\n<div class=\"block\">Sets the parameter table for this program.</div>\n</td>\n</tr>\n<tr id=\"i223\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#setPauseScaleFactor-double-\">setPauseScaleFactor</a></span>(double&nbsp;factor)</code>\n<div class=\"block\">Applies a scaling factor to the duration of pause() calls.</div>\n</td>\n</tr>\n<tr id=\"i224\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#setResizable-boolean-\">setResizable</a></span>(boolean&nbsp;resizable)</code>\n<div class=\"block\">Sets the title of this program.</div>\n</td>\n</tr>\n<tr id=\"i225\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#setRightX-double-\">setRightX</a></span>(double&nbsp;x)</code>\n<div class=\"block\">Sets the x location of the right edge of this program.</div>\n</td>\n</tr>\n<tr id=\"i226\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#setShowPixelGrid-boolean-\">setShowPixelGrid</a></span>(boolean&nbsp;show)</code>\n<div class=\"block\">Sets whether to display a grid of horizontal and vertical lines on this canvas\n for debugging, if this program contains a graphical canvas.</div>\n</td>\n</tr>\n<tr id=\"i227\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#setShowPixelInfo-boolean-\">setShowPixelInfo</a></span>(boolean&nbsp;show)</code>\n<div class=\"block\">Sets whether to display information on this canvas about the current pixel where\n the mouse pointer is resting in this program's graphical canvas, if this program\n contains a graphical canvas.</div>\n</td>\n</tr>\n<tr id=\"i228\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#setSize-double-double-\">setSize</a></span>(double&nbsp;width,\n       double&nbsp;height)</code>\n<div class=\"block\">Sets the width and height of this program.</div>\n</td>\n</tr>\n<tr id=\"i229\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#setStartupObject-java.lang.Object-\">setStartupObject</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj)</code>\n<div class=\"block\">Sets the object that is created when the program is started so that\n it can be retrieved later by <code>getStartupObject</code>.</div>\n</td>\n</tr>\n<tr id=\"i230\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#setTitle-java.lang.String-\">setTitle</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;title)</code>\n<div class=\"block\">Sets the title of this program.</div>\n</td>\n</tr>\n<tr id=\"i231\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#setWidth-double-\">setWidth</a></span>(double&nbsp;width)</code>\n<div class=\"block\">Sets the width of this program without changing its height.</div>\n</td>\n</tr>\n<tr id=\"i232\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#setX-double-\">setX</a></span>(double&nbsp;x)</code>\n<div class=\"block\">Sets the x location of the top-left corner of this program.</div>\n</td>\n</tr>\n<tr id=\"i233\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#setY-double-\">setY</a></span>(double&nbsp;y)</code>\n<div class=\"block\">Sets the y location of the top-left corner of this program.</div>\n</td>\n</tr>\n<tr id=\"i234\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#showErrorMessage-java.lang.String-\">showErrorMessage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;msg)</code>\n<div class=\"block\">Displays the error message in the standard output model.</div>\n</td>\n</tr>\n<tr id=\"i235\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#start--\">start</a></span>()</code>\n<div class=\"block\">Starts the program when it is running in application mode.</div>\n</td>\n</tr>\n<tr id=\"i236\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#start-java.lang.String:A-\">start</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</code>\n<div class=\"block\">Starts the program using the specified argument list.</div>\n</td>\n</tr>\n<tr id=\"i237\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#startAnimation--\">startAnimation</a></span>()</code>\n<div class=\"block\">Sets the program into animated mode.</div>\n</td>\n</tr>\n<tr id=\"i238\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#startHook--\">startHook</a></span>()</code>\n<div class=\"block\">Performs class-specific initialization for the program just before\n it starts.</div>\n</td>\n</tr>\n<tr id=\"i239\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#startRun--\">startRun</a></span>()</code>\n<div class=\"block\">Initializes and runs the run method.</div>\n</td>\n</tr>\n<tr id=\"i240\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#stateChanged-javax.swing.event.ChangeEvent-\">stateChanged</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeEvent</a>&nbsp;event)</code>\n<div class=\"block\">Required method of ChangeListener interface.</div>\n</td>\n</tr>\n<tr id=\"i241\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#stopAnimation--\">stopAnimation</a></span>()</code>\n<div class=\"block\">Sets the program into non-animated (default) mode.</div>\n</td>\n</tr>\n<tr id=\"i242\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#textValueChanged-java.awt.event.TextEvent-\">textValueChanged</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/TextEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">TextEvent</a>&nbsp;e)</code>\n<div class=\"block\">Required method of TextListener interface.</div>\n</td>\n</tr>\n<tr id=\"i243\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#validate--\">validate</a></span>()</code>\n<div class=\"block\">Forwards validate to the content pane.</div>\n</td>\n</tr>\n<tr id=\"i244\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#valueChanged-javax.swing.event.ListSelectionEvent-\">valueChanged</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListSelectionEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListSelectionEvent</a>&nbsp;e)</code>\n<div class=\"block\">Required method of ListSelectionListener interface.</div>\n</td>\n</tr>\n<tr id=\"i245\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#windowActivated-java.awt.event.WindowEvent-\">windowActivated</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;event)</code>\n<div class=\"block\">Required empty method of WindowListener interface.</div>\n</td>\n</tr>\n<tr id=\"i246\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#windowClosed-java.awt.event.WindowEvent-\">windowClosed</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;event)</code>\n<div class=\"block\">Required empty method of WindowListener interface.</div>\n</td>\n</tr>\n<tr id=\"i247\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#windowClosing-java.awt.event.WindowEvent-\">windowClosing</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;event)</code>\n<div class=\"block\">Required empty method of WindowListener interface.</div>\n</td>\n</tr>\n<tr id=\"i248\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#windowDeactivated-java.awt.event.WindowEvent-\">windowDeactivated</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;event)</code>\n<div class=\"block\">Required empty method of WindowListener interface.</div>\n</td>\n</tr>\n<tr id=\"i249\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#windowDeiconified-java.awt.event.WindowEvent-\">windowDeiconified</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;event)</code>\n<div class=\"block\">Required empty method of WindowListener interface.</div>\n</td>\n</tr>\n<tr id=\"i250\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#windowGainedFocus-java.awt.event.WindowEvent-\">windowGainedFocus</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;e)</code>\n<div class=\"block\">Required empty method of WindowFocusListener interface.</div>\n</td>\n</tr>\n<tr id=\"i251\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#windowIconified-java.awt.event.WindowEvent-\">windowIconified</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;event)</code>\n<div class=\"block\">Required empty method of WindowListener interface.</div>\n</td>\n</tr>\n<tr id=\"i252\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#windowLostFocus-java.awt.event.WindowEvent-\">windowLostFocus</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;e)</code>\n<div class=\"block\">Required empty method of WindowFocusListener interface.</div>\n</td>\n</tr>\n<tr id=\"i253\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#windowOpened-java.awt.event.WindowEvent-\">windowOpened</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;event)</code>\n<div class=\"block\">Required empty method of WindowListener interface.</div>\n</td>\n</tr>\n<tr id=\"i254\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/Program.html#windowStateChanged-java.awt.event.WindowEvent-\">windowStateChanged</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;e)</code>\n<div class=\"block\">Required empty method of WindowStateListener interface.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JApplet\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#createRootPane--\" title=\"class or interface in javax.swing\">createRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getAccessibleContext--\" title=\"class or interface in javax.swing\">getAccessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getContentPane--\" title=\"class or interface in javax.swing\">getContentPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getGlassPane--\" title=\"class or interface in javax.swing\">getGlassPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getGraphics--\" title=\"class or interface in javax.swing\">getGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getJMenuBar--\" title=\"class or interface in javax.swing\">getJMenuBar</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getLayeredPane--\" title=\"class or interface in javax.swing\">getLayeredPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getRootPane--\" title=\"class or interface in javax.swing\">getRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getTransferHandler--\" title=\"class or interface in javax.swing\">getTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#isRootPaneCheckingEnabled--\" title=\"class or interface in javax.swing\">isRootPaneCheckingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#paramString--\" title=\"class or interface in javax.swing\">paramString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#repaint-long-int-int-int-int-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setContentPane-java.awt.Container-\" title=\"class or interface in javax.swing\">setContentPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setGlassPane-java.awt.Component-\" title=\"class or interface in javax.swing\">setGlassPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setLayeredPane-javax.swing.JLayeredPane-\" title=\"class or interface in javax.swing\">setLayeredPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setRootPane-javax.swing.JRootPane-\" title=\"class or interface in javax.swing\">setRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setRootPaneCheckingEnabled-boolean-\" title=\"class or interface in javax.swing\">setRootPaneCheckingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setTransferHandler-javax.swing.TransferHandler-\" title=\"class or interface in javax.swing\">setTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#update-java.awt.Graphics-\" title=\"class or interface in javax.swing\">update</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.applet.Applet\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.applet.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">Applet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAppletContext--\" title=\"class or interface in java.applet\">getAppletContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAppletInfo--\" title=\"class or interface in java.applet\">getAppletInfo</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAudioClip-java.net.URL-\" title=\"class or interface in java.applet\">getAudioClip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAudioClip-java.net.URL-java.lang.String-\" title=\"class or interface in java.applet\">getAudioClip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getCodeBase--\" title=\"class or interface in java.applet\">getCodeBase</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getDocumentBase--\" title=\"class or interface in java.applet\">getDocumentBase</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getImage-java.net.URL-\" title=\"class or interface in java.applet\">getImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getImage-java.net.URL-java.lang.String-\" title=\"class or interface in java.applet\">getImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getLocale--\" title=\"class or interface in java.applet\">getLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getParameterInfo--\" title=\"class or interface in java.applet\">getParameterInfo</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#isActive--\" title=\"class or interface in java.applet\">isActive</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#isValidateRoot--\" title=\"class or interface in java.applet\">isValidateRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#newAudioClip-java.net.URL-\" title=\"class or interface in java.applet\">newAudioClip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#play-java.net.URL-\" title=\"class or interface in java.applet\">play</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#play-java.net.URL-java.lang.String-\" title=\"class or interface in java.applet\">play</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#resize-java.awt.Dimension-\" title=\"class or interface in java.applet\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#resize-int-int-\" title=\"class or interface in java.applet\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#setStub-java.applet.AppletStub-\" title=\"class or interface in java.applet\">setStub</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#showStatus-java.lang.String-\" title=\"class or interface in java.applet\">showStatus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#stop--\" title=\"class or interface in java.applet\">stop</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Panel\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\">Panel</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true#addNotify--\" title=\"class or interface in java.awt\">addNotify</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.lang.String-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">addContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#applyComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">applyComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#areFocusTraversalKeysSet-int-\" title=\"class or interface in java.awt\">areFocusTraversalKeysSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#countComponents--\" title=\"class or interface in java.awt\">countComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#deliverEvent-java.awt.Event-\" title=\"class or interface in java.awt\">deliverEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#doLayout--\" title=\"class or interface in java.awt\">doLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-int-int-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getAlignmentX--\" title=\"class or interface in java.awt\">getAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getAlignmentY--\" title=\"class or interface in java.awt\">getAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponent-int-\" title=\"class or interface in java.awt\">getComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-int-int-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentCount--\" title=\"class or interface in java.awt\">getComponentCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponents--\" title=\"class or interface in java.awt\">getComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentZOrder-java.awt.Component-\" title=\"class or interface in java.awt\">getComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getContainerListeners--\" title=\"class or interface in java.awt\">getContainerListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalKeys-int-\" title=\"class or interface in java.awt\">getFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalPolicy--\" title=\"class or interface in java.awt\">getFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getInsets--\" title=\"class or interface in java.awt\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getListeners-java.lang.Class-\" title=\"class or interface in java.awt\">getListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMaximumSize--\" title=\"class or interface in java.awt\">getMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMinimumSize--\" title=\"class or interface in java.awt\">getMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMousePosition-boolean-\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#insets--\" title=\"class or interface in java.awt\">insets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#invalidate--\" title=\"class or interface in java.awt\">invalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isAncestorOf-java.awt.Component-\" title=\"class or interface in java.awt\">isAncestorOf</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot--\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot-java.awt.Container-\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicyProvider--\" title=\"class or interface in java.awt\">isFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicySet--\" title=\"class or interface in java.awt\">isFocusTraversalPolicySet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#layout--\" title=\"class or interface in java.awt\">layout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintStream-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintWriter-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#locate-int-int-\" title=\"class or interface in java.awt\">locate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#minimumSize--\" title=\"class or interface in java.awt\">minimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paint-java.awt.Graphics-\" title=\"class or interface in java.awt\">paint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paintComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#preferredSize--\" title=\"class or interface in java.awt\">preferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#print-java.awt.Graphics-\" title=\"class or interface in java.awt\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#printComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">printComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processContainerEvent-java.awt.event.ContainerEvent-\" title=\"class or interface in java.awt\">processContainerEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">processEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">removeContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeNotify--\" title=\"class or interface in java.awt\">removeNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setComponentZOrder-java.awt.Component-int-\" title=\"class or interface in java.awt\">setComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusCycleRoot-boolean-\" title=\"class or interface in java.awt\">setFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalKeys-int-java.util.Set-\" title=\"class or interface in java.awt\">setFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicy-java.awt.FocusTraversalPolicy-\" title=\"class or interface in java.awt\">setFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicyProvider-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFont-java.awt.Font-\" title=\"class or interface in java.awt\">setFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#transferFocusDownCycle--\" title=\"class or interface in java.awt\">transferFocusDownCycle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validateTree--\" title=\"class or interface in java.awt\">validateTree</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#action-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">action</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#add-java.awt.PopupMenu-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">addComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">addFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">addHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">addHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">addInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">addKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">addMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">addMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">addMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#bounds--\" title=\"class or interface in java.awt\">bounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#coalesceEvents-java.awt.AWTEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">coalesceEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-int-int-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-java.awt.Point-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-java.awt.image.ImageProducer-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-int-int-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-java.awt.ImageCapabilities-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disable--\" title=\"class or interface in java.awt\">disable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disableEvents-long-\" title=\"class or interface in java.awt\">disableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#dispatchEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">dispatchEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable--\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable-boolean-\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableEvents-long-\" title=\"class or interface in java.awt\">enableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableInputMethods-boolean-\" title=\"class or interface in java.awt\">enableInputMethods</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-boolean-boolean-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-byte-byte-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-char-char-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-double-double-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-float-float-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-int-int-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-long-long-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-short-short-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBackground--\" title=\"class or interface in java.awt\">getBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBaseline-int-int-\" title=\"class or interface in java.awt\">getBaseline</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBaselineResizeBehavior--\" title=\"class or interface in java.awt\">getBaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds--\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getColorModel--\" title=\"class or interface in java.awt\">getColorModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentListeners--\" title=\"class or interface in java.awt\">getComponentListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentOrientation--\" title=\"class or interface in java.awt\">getComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getCursor--\" title=\"class or interface in java.awt\">getCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getDropTarget--\" title=\"class or interface in java.awt\">getDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusCycleRootAncestor--\" title=\"class or interface in java.awt\">getFocusCycleRootAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusListeners--\" title=\"class or interface in java.awt\">getFocusListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusTraversalKeysEnabled--\" title=\"class or interface in java.awt\">getFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFont--\" title=\"class or interface in java.awt\">getFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFontMetrics-java.awt.Font-\" title=\"class or interface in java.awt\">getFontMetrics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getForeground--\" title=\"class or interface in java.awt\">getForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getGraphicsConfiguration--\" title=\"class or interface in java.awt\">getGraphicsConfiguration</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyBoundsListeners--\" title=\"class or interface in java.awt\">getHierarchyBoundsListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyListeners--\" title=\"class or interface in java.awt\">getHierarchyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getIgnoreRepaint--\" title=\"class or interface in java.awt\">getIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputContext--\" title=\"class or interface in java.awt\">getInputContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodListeners--\" title=\"class or interface in java.awt\">getInputMethodListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodRequests--\" title=\"class or interface in java.awt\">getInputMethodRequests</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getKeyListeners--\" title=\"class or interface in java.awt\">getKeyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation--\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation-java.awt.Point-\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocationOnScreen--\" title=\"class or interface in java.awt\">getLocationOnScreen</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseListeners--\" title=\"class or interface in java.awt\">getMouseListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseMotionListeners--\" title=\"class or interface in java.awt\">getMouseMotionListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMousePosition--\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseWheelListeners--\" title=\"class or interface in java.awt\">getMouseWheelListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getName--\" title=\"class or interface in java.awt\">getName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getParent--\" title=\"class or interface in java.awt\">getParent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPeer--\" title=\"class or interface in java.awt\">getPeer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners--\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners-java.lang.String-\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize--\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getToolkit--\" title=\"class or interface in java.awt\">getToolkit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getTreeLock--\" title=\"class or interface in java.awt\">getTreeLock</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getX--\" title=\"class or interface in java.awt\">getX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getY--\" title=\"class or interface in java.awt\">getY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#gotFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">gotFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#handleEvent-java.awt.Event-\" title=\"class or interface in java.awt\">handleEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hasFocus--\" title=\"class or interface in java.awt\">hasFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hide--\" title=\"class or interface in java.awt\">hide</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#imageUpdate-java.awt.Image-int-int-int-int-int-\" title=\"class or interface in java.awt\">imageUpdate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#inside-int-int-\" title=\"class or interface in java.awt\">inside</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isBackgroundSet--\" title=\"class or interface in java.awt\">isBackgroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isCursorSet--\" title=\"class or interface in java.awt\">isCursorSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDisplayable--\" title=\"class or interface in java.awt\">isDisplayable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDoubleBuffered--\" title=\"class or interface in java.awt\">isDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isEnabled--\" title=\"class or interface in java.awt\">isEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusable--\" title=\"class or interface in java.awt\">isFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusOwner--\" title=\"class or interface in java.awt\">isFocusOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusTraversable--\" title=\"class or interface in java.awt\">isFocusTraversable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFontSet--\" title=\"class or interface in java.awt\">isFontSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isForegroundSet--\" title=\"class or interface in java.awt\">isForegroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isLightweight--\" title=\"class or interface in java.awt\">isLightweight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMaximumSizeSet--\" title=\"class or interface in java.awt\">isMaximumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMinimumSizeSet--\" title=\"class or interface in java.awt\">isMinimumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isOpaque--\" title=\"class or interface in java.awt\">isOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isPreferredSizeSet--\" title=\"class or interface in java.awt\">isPreferredSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isShowing--\" title=\"class or interface in java.awt\">isShowing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isValid--\" title=\"class or interface in java.awt\">isValid</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isVisible--\" title=\"class or interface in java.awt\">isVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyDown-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyUp-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list--\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintStream-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintWriter-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#location--\" title=\"class or interface in java.awt\">location</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#lostFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">lostFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDown-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDrag-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDrag</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseEnter-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseEnter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseExit-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseExit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseMove-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseMove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseUp-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#move-int-int-\" title=\"class or interface in java.awt\">move</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#nextFocus--\" title=\"class or interface in java.awt\">nextFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#paintAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#postEvent-java.awt.Event-\" title=\"class or interface in java.awt\">postEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#printAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">printAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processComponentEvent-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt\">processComponentEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processFocusEvent-java.awt.event.FocusEvent-\" title=\"class or interface in java.awt\">processFocusEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyBoundsEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyBoundsEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processInputMethodEvent-java.awt.event.InputMethodEvent-\" title=\"class or interface in java.awt\">processInputMethodEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in java.awt\">processKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseEvent-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt\">processMouseEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseMotionEvent-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt\">processMouseMotionEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseWheelEvent-java.awt.event.MouseWheelEvent-\" title=\"class or interface in java.awt\">processMouseWheelEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#remove-java.awt.MenuComponent-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">removeComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">removeFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">removeHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">removeHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">removeInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">removeKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">removeMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">removeMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">removeMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-int-int-int-int-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-long-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocus--\" title=\"class or interface in java.awt\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocus-boolean-\" title=\"class or interface in java.awt\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocusInWindow--\" title=\"class or interface in java.awt\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocusInWindow-boolean-\" title=\"class or interface in java.awt\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#reshape-int-int-int-int-\" title=\"class or interface in java.awt\">reshape</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#revalidate--\" title=\"class or interface in java.awt\">revalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-int-int-int-int-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">setComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setCursor-java.awt.Cursor-\" title=\"class or interface in java.awt\">setCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setDropTarget-java.awt.dnd.DropTarget-\" title=\"class or interface in java.awt\">setDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setEnabled-boolean-\" title=\"class or interface in java.awt\">setEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusable-boolean-\" title=\"class or interface in java.awt\">setFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusTraversalKeysEnabled-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setForeground-java.awt.Color-\" title=\"class or interface in java.awt\">setForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setIgnoreRepaint-boolean-\" title=\"class or interface in java.awt\">setIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocale-java.util.Locale-\" title=\"class or interface in java.awt\">setLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-int-int-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-java.awt.Point-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setMaximumSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setMinimumSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setName-java.lang.String-\" title=\"class or interface in java.awt\">setName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setPreferredSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-int-int-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setVisible-boolean-\" title=\"class or interface in java.awt\">setVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show--\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show-boolean-\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#size--\" title=\"class or interface in java.awt\">size</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#toString--\" title=\"class or interface in java.awt\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocus--\" title=\"class or interface in java.awt\">transferFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusBackward--\" title=\"class or interface in java.awt\">transferFocusBackward</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusUpCycle--\" title=\"class or interface in java.awt\">transferFocusUpCycle</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"CONFIG_FILE_NAME\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>CONFIG_FILE_NAME</h4>\n<pre>protected static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> CONFIG_FILE_NAME</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.Program.CONFIG_FILE_NAME\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"invisibleObjects\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>invisibleObjects</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt; invisibleObjects</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"Program--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>Program</h4>\n<pre>protected&nbsp;Program()</pre>\n<div class=\"block\">This code initializes the program data structures.</div>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"contentsChanged-javax.swing.event.ListDataEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>contentsChanged</h4>\n<pre>public&nbsp;void&nbsp;contentsChanged(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListDataEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListDataEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Required method of ListDataListener interface.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListDataListener.html?is-external=true#contentsChanged-javax.swing.event.ListDataEvent-\" title=\"class or interface in javax.swing.event\">contentsChanged</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListDataListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListDataListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"intervalAdded-javax.swing.event.ListDataEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>intervalAdded</h4>\n<pre>public&nbsp;void&nbsp;intervalAdded(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListDataEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListDataEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Required method of ListDataListener interface.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListDataListener.html?is-external=true#intervalAdded-javax.swing.event.ListDataEvent-\" title=\"class or interface in javax.swing.event\">intervalAdded</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListDataListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListDataListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"intervalRemoved-javax.swing.event.ListDataEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>intervalRemoved</h4>\n<pre>public&nbsp;void&nbsp;intervalRemoved(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListDataEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListDataEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Required method of ListDataListener interface.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListDataListener.html?is-external=true#intervalRemoved-javax.swing.event.ListDataEvent-\" title=\"class or interface in javax.swing.event\">intervalRemoved</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListDataListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListDataListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"menuCanceled-javax.swing.event.MenuEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>menuCanceled</h4>\n<pre>public&nbsp;void&nbsp;menuCanceled(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/MenuEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">MenuEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Required method of MenuListener interface.</div>\n</li>\n</ul>\n<a name=\"menuDeselected-javax.swing.event.MenuEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>menuDeselected</h4>\n<pre>public&nbsp;void&nbsp;menuDeselected(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/MenuEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">MenuEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Required method of MenuListener interface.</div>\n</li>\n</ul>\n<a name=\"menuSelected-javax.swing.event.MenuEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>menuSelected</h4>\n<pre>public&nbsp;void&nbsp;menuSelected(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/MenuEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">MenuEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Required method of MenuListener interface.</div>\n</li>\n</ul>\n<a name=\"popupMenuCanceled-javax.swing.event.PopupMenuEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>popupMenuCanceled</h4>\n<pre>public&nbsp;void&nbsp;popupMenuCanceled(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/PopupMenuEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">PopupMenuEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Required method of PopupMenuListener interface.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/PopupMenuListener.html?is-external=true#popupMenuCanceled-javax.swing.event.PopupMenuEvent-\" title=\"class or interface in javax.swing.event\">popupMenuCanceled</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/PopupMenuListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">PopupMenuListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"popupMenuWillBecomeInvisible-javax.swing.event.PopupMenuEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>popupMenuWillBecomeInvisible</h4>\n<pre>public&nbsp;void&nbsp;popupMenuWillBecomeInvisible(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/PopupMenuEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">PopupMenuEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Required method of PopupMenuListener interface.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/PopupMenuListener.html?is-external=true#popupMenuWillBecomeInvisible-javax.swing.event.PopupMenuEvent-\" title=\"class or interface in javax.swing.event\">popupMenuWillBecomeInvisible</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/PopupMenuListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">PopupMenuListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"popupMenuWillBecomeVisible-javax.swing.event.PopupMenuEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>popupMenuWillBecomeVisible</h4>\n<pre>public&nbsp;void&nbsp;popupMenuWillBecomeVisible(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/PopupMenuEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">PopupMenuEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Required method of PopupMenuListener interface.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/PopupMenuListener.html?is-external=true#popupMenuWillBecomeVisible-javax.swing.event.PopupMenuEvent-\" title=\"class or interface in javax.swing.event\">popupMenuWillBecomeVisible</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/PopupMenuListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">PopupMenuListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"valueChanged-javax.swing.event.ListSelectionEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>valueChanged</h4>\n<pre>public&nbsp;void&nbsp;valueChanged(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListSelectionEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListSelectionEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Required method of ListSelectionListener interface.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListSelectionListener.html?is-external=true#valueChanged-javax.swing.event.ListSelectionEvent-\" title=\"class or interface in javax.swing.event\">valueChanged</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListSelectionListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListSelectionListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"actionPerformed-java.awt.event.ActionEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>actionPerformed</h4>\n<pre>public&nbsp;void&nbsp;actionPerformed(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Called when a component (typically a button) is activated.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true#actionPerformed-java.awt.event.ActionEvent-\" title=\"class or interface in java.awt.event\">actionPerformed</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"add-java.awt.Component-java.lang.String-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>public&nbsp;void&nbsp;add(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;region,\n                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;constraints)</pre>\n<div class=\"block\">Adds the component to the specified border region with the indicated\n constraints object.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>comp</code> - The component to be added</dd>\n<dd><code>region</code> - The region of the window (<code>NORTH</code>, <code>SOUTH</code>,\n               <code>EAST</code>, <code>WEST</code>, or <code>CENTER</code>)</dd>\n<dd><code>constraints</code> - The constraints object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>add(comp, region, constraints);</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"addActionListeners--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addActionListeners</h4>\n<pre>public&nbsp;void&nbsp;addActionListeners()</pre>\n<div class=\"block\">Adds the program as an <code>ActionListener</code> to every button in\n the structure that does not have a listener already.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>addActionListeners();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"addActionListeners-java.awt.event.ActionListener-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addActionListeners</h4>\n<pre>public&nbsp;void&nbsp;addActionListeners(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener)</pre>\n<div class=\"block\">Adds the specified listener to every button in\n the structure that does not have a listener already.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>listener</code> - The <code>ActionListener</code> to be added</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>addActionListeners(listener);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"addActionListenersToButtonsOnly--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addActionListenersToButtonsOnly</h4>\n<pre>public&nbsp;void&nbsp;addActionListenersToButtonsOnly()</pre>\n<div class=\"block\">Adds the program as an <code>ActionListener</code> to every button in\n the structure that does not have a listener already.\n Also adds action listeners to other components that have action commands.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>addActionListeners();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"addAllActionListeners--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addAllActionListeners</h4>\n<pre>public&nbsp;void&nbsp;addAllActionListeners()</pre>\n<div class=\"block\">Adds the program as an <code>ActionListener</code> to every button or component in\n the structure that does not have a listener already.\n Also adds action listeners to other components that have action commands.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>addAllActionListeners();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"addExitHook-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addExitHook</h4>\n<pre>public&nbsp;void&nbsp;addExitHook(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj)</pre>\n<div class=\"block\">Requests that the program call the <code>exit</code> method in the\n specified object before exiting.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>program.addExitHook(obj);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"addImpl-java.awt.Component-java.lang.Object-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addImpl</h4>\n<pre>protected&nbsp;void&nbsp;addImpl(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;constraints,\n                       int&nbsp;index)</pre>\n<div class=\"block\">Adds the specified component to the content pane using the specified constraints and index.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#addImpl-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in javax.swing\">addImpl</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"adjustmentValueChanged-java.awt.event.AdjustmentEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>adjustmentValueChanged</h4>\n<pre>public&nbsp;void&nbsp;adjustmentValueChanged(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/AdjustmentEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">AdjustmentEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Required empty method of AdjustmentListener interface.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/AdjustmentListener.html?is-external=true#adjustmentValueChanged-java.awt.event.AdjustmentEvent-\" title=\"class or interface in java.awt.event\">adjustmentValueChanged</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/AdjustmentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">AdjustmentListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"alert-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>alert</h4>\n<pre>public&nbsp;void&nbsp;alert(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</pre>\n<div class=\"block\">Pops up a dialog box displaying a string representation of the given message.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>value</code> - the value to display (its toString() method is implicitly called)</dd>\n</dl>\n</li>\n</ul>\n<a name=\"alert-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>alert</h4>\n<pre>public&nbsp;void&nbsp;alert(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message)</pre>\n<div class=\"block\">Pops up a dialog box displaying the given message.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>value</code> - the value to display</dd>\n</dl>\n</li>\n</ul>\n<a name=\"animation--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>animation</h4>\n<pre>public&nbsp;void&nbsp;animation()</pre>\n<div class=\"block\">Override this method to indicate what to do on every frame advance\n in an animated program after setAnimated(true) is called.</div>\n</li>\n</ul>\n<a name=\"center--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>center</h4>\n<pre>public&nbsp;void&nbsp;center()</pre>\n<div class=\"block\">Moves this program's window to the center of the screen.</div>\n</li>\n</ul>\n<a name=\"changedUpdate-javax.swing.event.DocumentEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>changedUpdate</h4>\n<pre>public&nbsp;void&nbsp;changedUpdate(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Required method of DocumentListener interface.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentListener.html?is-external=true#changedUpdate-javax.swing.event.DocumentEvent-\" title=\"class or interface in javax.swing.event\">changedUpdate</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"checkCompilerFlags--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>checkCompilerFlags</h4>\n<pre>protected&nbsp;void&nbsp;checkCompilerFlags()</pre>\n</li>\n</ul>\n<a name=\"checkKill--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>checkKill</h4>\n<pre>public&nbsp;void&nbsp;checkKill()</pre>\n<div class=\"block\">Checks whether the program has been stopped via the killMe method.\n Not to be called by students.</div>\n</li>\n</ul>\n<a name=\"checkStartupSettings--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>checkStartupSettings</h4>\n<pre>protected&nbsp;void&nbsp;checkStartupSettings()</pre>\n</li>\n</ul>\n<a name=\"componentAdded-java.awt.event.ContainerEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>componentAdded</h4>\n<pre>public&nbsp;void&nbsp;componentAdded(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ContainerEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ContainerEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Required method of ContainerListener interface. Does nothing.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ContainerListener.html?is-external=true#componentAdded-java.awt.event.ContainerEvent-\" title=\"class or interface in java.awt.event\">componentAdded</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ContainerListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ContainerListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"componentHidden-java.awt.event.ComponentEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>componentHidden</h4>\n<pre>public&nbsp;void&nbsp;componentHidden(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Required method of ComponentListener interface. Does nothing.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true#componentHidden-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt.event\">componentHidden</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"componentMoved-java.awt.event.ComponentEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>componentMoved</h4>\n<pre>public&nbsp;void&nbsp;componentMoved(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Required method of ComponentListener interface. Does nothing.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true#componentMoved-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt.event\">componentMoved</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"componentRemoved-java.awt.event.ContainerEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>componentRemoved</h4>\n<pre>public&nbsp;void&nbsp;componentRemoved(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ContainerEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ContainerEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Required method of ContainerListener interface. Does nothing.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ContainerListener.html?is-external=true#componentRemoved-java.awt.event.ContainerEvent-\" title=\"class or interface in java.awt.event\">componentRemoved</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ContainerListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ContainerListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"componentResized-java.awt.event.ComponentEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>componentResized</h4>\n<pre>public&nbsp;void&nbsp;componentResized(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Required method of ComponentListener interface. Does nothing.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true#componentResized-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt.event\">componentResized</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"componentShown-java.awt.event.ComponentEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>componentShown</h4>\n<pre>public&nbsp;void&nbsp;componentShown(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Required method of ComponentListener interface. Does nothing.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true#componentShown-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt.event\">componentShown</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"confirm-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>confirm</h4>\n<pre>public&nbsp;boolean&nbsp;confirm(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;question)</pre>\n<div class=\"block\">Pops up a dialog box displaying the given message and asking the user to choose Yes or No.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>value</code> - the value to display</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>true if user chose Yes, false if they chose No</dd>\n</dl>\n</li>\n</ul>\n<a name=\"createConsole--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createConsole</h4>\n<pre>protected&nbsp;<a href=\"../../acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a>&nbsp;createConsole()</pre>\n<div class=\"block\">Creates the console used by the <code>ConsoleProgram</code>.  Subclasses can\n override this method to create their own console types.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The console to be used by the program</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>IOConsole console = program.createConsole();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"createDialogIO--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createDialogIO</h4>\n<pre>protected&nbsp;acm.io.IODialog&nbsp;createDialogIO()</pre>\n<div class=\"block\">Creates the dialog used for interaction (primarily by the <code>DialogProgram</code>\n class).  Subclasses can override this method to create their own dialog types.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The dialog to be used by the program</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>IODialog dialog = program.createDialogIO();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"createMenuBar--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createMenuBar</h4>\n<pre>protected&nbsp;<a href=\"../../acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a>&nbsp;createMenuBar()</pre>\n<div class=\"block\">Creates a menu bar for use with the program.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>A menu bar for use with this <code>Program</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>ProgramMenuBar menuBar = createMenuBar();</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"createParameterTable-java.lang.String:A-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createParameterTable</h4>\n<pre>protected static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;createParameterTable(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</pre>\n<div class=\"block\">Creates a hash table containing the parameters specified in the\n argument list.  Parameters are taken to be any argument that matches\n the template\n\n <p>   <i>name</i><code>=</code><i>value</i>\n\n All other arguments are collected as a tab-separated string and placed\n in an entry under the key <code>\"ARGS\"</code>.  All named parameters\n are converted to lower case to preserve the case-insensitive semantics\n of <code>getParameter</code>.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>args</code> - The array of strings passed to the application</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>A <code>HashMap</code> containing the parameter bindings</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>HashMap<String,String> ht = createParameterTable(args);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"createProgramFrame--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createProgramFrame</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true\" title=\"class or interface in javax.swing\">JFrame</a>&nbsp;createProgramFrame()</pre>\n<div class=\"block\">Creates the frame containing the program.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The newly allocated <code>Frame</code> object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>Frame frame = program.createProgramFrame();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"destroy--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>destroy</h4>\n<pre>public&nbsp;void&nbsp;destroy()</pre>\n<div class=\"block\">Called when the program has been told to destroy itself.  The code here\n stops the main thread and any animators that have been initiated by this\n applet.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#destroy--\" title=\"class or interface in java.applet\">destroy</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">Applet</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>program.destroy();</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"endHook--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>endHook</h4>\n<pre>protected&nbsp;void&nbsp;endHook()</pre>\n<div class=\"block\">Performs class-specific cleanup for the program just after\n it finishes.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"error-java.lang.Exception-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>error</h4>\n<pre>public&nbsp;void&nbsp;error(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true\" title=\"class or interface in java.lang\">Exception</a>&nbsp;ex)</pre>\n<div class=\"block\">Generates an ErrorException with the given exception as its cause.</div>\n</li>\n</ul>\n<a name=\"error-java.lang.Exception-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>error</h4>\n<pre>public&nbsp;void&nbsp;error(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true\" title=\"class or interface in java.lang\">Exception</a>&nbsp;ex,\n                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</pre>\n<div class=\"block\">Generates an ErrorException with the given exception and text.</div>\n</li>\n</ul>\n<a name=\"error-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>error</h4>\n<pre>public&nbsp;void&nbsp;error(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</pre>\n<div class=\"block\">Generates an ErrorException with the given text as its error message.</div>\n</li>\n</ul>\n<a name=\"exit--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>exit</h4>\n<pre>public&nbsp;void&nbsp;exit()</pre>\n<div class=\"block\">Exits from the program.  Subclasses should override this method if they need\n to perform any actions before shutting down the program, such as asking the\n user to save any unsaved files.  Any clients that do override this method\n should call <code>super.exit()</code> at the end of their processing.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#exit--\">exit</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>program.exit();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"fileExists-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fileExists</h4>\n<pre>protected&nbsp;boolean&nbsp;fileExists(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</pre>\n<div class=\"block\">Returns true if the given file exists within the current working directory.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>filename</code> - name of the file.</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>true if file exists, false if not</dd>\n</dl>\n</li>\n</ul>\n<a name=\"fileExists-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fileExists</h4>\n<pre>protected&nbsp;boolean&nbsp;fileExists(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;directory,\n                             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</pre>\n<div class=\"block\">Returns true if the given file exists within the given directory.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>directory</code> - directory to search for the file.</dd>\n<dd><code>filename</code> - name of the file.</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>true if file exists, false if not</dd>\n</dl>\n</li>\n</ul>\n<a name=\"fileExistsInsideJAR-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fileExistsInsideJAR</h4>\n<pre>protected&nbsp;boolean&nbsp;fileExistsInsideJAR(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</pre>\n<div class=\"block\">Returns true if the given file exists inside the app's JAR archive within the current working directory.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>directory</code> - directory to search for the file.</dd>\n<dd><code>filename</code> - name of the file.</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>true if file exists, false if not</dd>\n</dl>\n</li>\n</ul>\n<a name=\"fileExistsInsideJAR-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fileExistsInsideJAR</h4>\n<pre>protected&nbsp;boolean&nbsp;fileExistsInsideJAR(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;directory,\n                                      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</pre>\n<div class=\"block\">Returns true if the given file exists inside the app's JAR archive within the given directory.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>directory</code> - directory to search for the file.</dd>\n<dd><code>filename</code> - name of the file.</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>true if file exists, false if not</dd>\n</dl>\n</li>\n</ul>\n<a name=\"fileExistsOnDisk-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fileExistsOnDisk</h4>\n<pre>protected&nbsp;boolean&nbsp;fileExistsOnDisk(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</pre>\n<div class=\"block\">Returns true if the given file exists in the current working directory.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>filename</code> - name of the file.</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>true if file exists, false if not</dd>\n</dl>\n</li>\n</ul>\n<a name=\"fileExistsOnDisk-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fileExistsOnDisk</h4>\n<pre>protected&nbsp;boolean&nbsp;fileExistsOnDisk(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;directory,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</pre>\n<div class=\"block\">Returns true if the given file exists in the given directory.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>directory</code> - directory to search for the file.</dd>\n<dd><code>filename</code> - name of the file.</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>true if file exists, false if not</dd>\n</dl>\n</li>\n</ul>\n<a name=\"fileSize-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fileSize</h4>\n<pre>protected&nbsp;int&nbsp;fileSize(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</pre>\n<div class=\"block\">Returns the size of the given file in bytes in the current working directory.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>filename</code> - name of the file.</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>file size in bytes</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"../../stanford/cs106/io/IORuntimeException.html\" title=\"class in stanford.cs106.io\">IORuntimeException</a></code> - if file is not found or cannot be read</dd>\n</dl>\n</li>\n</ul>\n<a name=\"fileSize-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fileSize</h4>\n<pre>protected&nbsp;int&nbsp;fileSize(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;directory,\n                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</pre>\n<div class=\"block\">Returns the size of the given file in bytes.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>directory</code> - directory to search for the file.</dd>\n<dd><code>filename</code> - name of the file.</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>file size in bytes</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"../../stanford/cs106/io/IORuntimeException.html\" title=\"class in stanford.cs106.io\">IORuntimeException</a></code> - if file is not found or cannot be read</dd>\n</dl>\n</li>\n</ul>\n<a name=\"focusGained-java.awt.event.FocusEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>focusGained</h4>\n<pre>public&nbsp;void&nbsp;focusGained(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Required empty method of FocusListener interface; does nothing.\n Invoked when a component gains the keyboard focus.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusListener.html?is-external=true#focusGained-java.awt.event.FocusEvent-\" title=\"class or interface in java.awt.event\">focusGained</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"focusLost-java.awt.event.FocusEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>focusLost</h4>\n<pre>public&nbsp;void&nbsp;focusLost(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Required empty method of FocusListener interface; does nothing.\n Invoked when a component loses the keyboard focus.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusListener.html?is-external=true#focusLost-java.awt.event.FocusEvent-\" title=\"class or interface in java.awt.event\">focusLost</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getAnimationDelay--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getAnimationDelay</h4>\n<pre>public&nbsp;int&nbsp;getAnimationDelay()</pre>\n<div class=\"block\">Returns the delay between frames of animation in milliseconds (default 20).</div>\n</li>\n</ul>\n<a name=\"getAppletStub--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getAppletStub</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AppletStub.html?is-external=true\" title=\"class or interface in java.applet\">AppletStub</a>&nbsp;getAppletStub()</pre>\n<div class=\"block\">Retrieves the applet stub.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The applet stub</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>AppletStub stub = getAppletStub();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getArgumentArray--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getArgumentArray</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;getArgumentArray()</pre>\n<div class=\"block\">Retrieves the array of arguments passed in from the command line, or\n <code>null</code> if no arguments are available.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The array of command-line arguments</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>String[] args = getArgumentArray();</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"getBoolean--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getBoolean</h4>\n<pre>public final&nbsp;boolean&nbsp;getBoolean()</pre>\n<div class=\"block\">Reads and returns a boolean value (<code>true</code> or <code>false</code>).\n The input must match one of these strings, ignoring case.  If the user\n types a value that is not one of these possibilities, the method ordinarily\n offers the user a chance to reenter the data, although this behavior\n can be changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a boolean value</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>boolean flag = program.getBoolean();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getBoolean-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getBoolean</h4>\n<pre>public&nbsp;boolean&nbsp;getBoolean(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt)</pre>\n<div class=\"block\">Prompts the user to enter a boolean value, which is returned as\n the value of this method.  If the user types a value that is not a\n legal boolean value, the method ordinarily offers the user a chance\n to reenter the data, although this behavior can be changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>prompt</code> - The prompt string to display to the user</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a boolean value</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>boolean flag = program.readBoolean(prompt);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getBoolean-java.lang.String-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getBoolean</h4>\n<pre>public&nbsp;boolean&nbsp;getBoolean(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt,\n                          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;trueLabel,\n                          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;falseLabel)</pre>\n<div class=\"block\">Prompts the user to enter a boolean value, which is matched against the\n labels provided.  If the user enters a value that is not one of the two\n choices, <code>readBoolean</code> ordinarily offers the user a chance\n to reenter the data, although this behavior can be changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>prompt</code> - The prompt string to display to the user</dd>\n<dd><code>trueLabel</code> - The string used to indicate <code>true</code></dd>\n<dd><code>falseLabel</code> - The string used to indicate <code>false</code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a boolean value</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>boolean flag = program.getBoolean(prompt, trueLabel, falseLabel);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getBorder-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getBorder</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;getBorder(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;side)</pre>\n<div class=\"block\">Returns the component installed as a border on the specified side, which must\n be one of the constants from <code>BorderLayout</code> (<code>NORTH</code>,\n <code>SOUTH</code>, <code>EAST</code>, <code>WEST</code>).</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>side</code> - The side (<code>NORTH</code>, <code>SOUTH</code>, <code>EAST</code>,\n             or <code>WEST</code>)</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The component used as a border on the specified side</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>getBorder(side, comp);</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"getBottomY--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getBottomY</h4>\n<pre>public&nbsp;int&nbsp;getBottomY()</pre>\n<div class=\"block\">Returns the y-coordinate of the bottom of this program's window.</div>\n</li>\n</ul>\n<a name=\"getCenterLocation--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getCenterLocation</h4>\n<pre>public&nbsp;acm.graphics.GDimension&nbsp;getCenterLocation()</pre>\n<div class=\"block\">Returns the x/y-coordinates of the center of this program's window.</div>\n</li>\n</ul>\n<a name=\"getCenterX--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getCenterX</h4>\n<pre>public&nbsp;int&nbsp;getCenterX()</pre>\n<div class=\"block\">Returns the x-coordinate of the center of this program's window.</div>\n</li>\n</ul>\n<a name=\"getCenterY--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getCenterY</h4>\n<pre>public&nbsp;int&nbsp;getCenterY()</pre>\n<div class=\"block\">Returns the y-coordinate of the center of this program's window.</div>\n</li>\n</ul>\n<a name=\"getCentralRegionSize--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getCentralRegionSize</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a>&nbsp;getCentralRegionSize()</pre>\n<div class=\"block\">Returns the size of the central region.  If the content pane has\n not been validated, this method computes its preferred size by\n subtracting the sizes required for the side panels from the size\n of the entire frame.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The size of the central region</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getConsole--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getConsole</h4>\n<pre>public&nbsp;<a href=\"../../acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a>&nbsp;getConsole()</pre>\n<div class=\"block\">Returns the console associated with this program.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The <code>IOConsole</code> object used for this program</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>IOConsole console = program.getConsole();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getDialog--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getDialog</h4>\n<pre>public&nbsp;acm.io.IODialog&nbsp;getDialog()</pre>\n<div class=\"block\">Returns the dialog used for user interaction.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The <code>IODialog</code> object used for this program</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>IODialog dialog = program.getDialog();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getDouble--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getDouble</h4>\n<pre>public&nbsp;double&nbsp;getDouble()</pre>\n<div class=\"block\">Reads and returns a double-precision value from the user.  If the user\n types a value that is not a legal number, the method ordinarily offers\n the user a chance to reenter the data, although this behavior can be\n changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a <code>double</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double d = program.getDouble();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getDouble-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getDouble</h4>\n<pre>public&nbsp;double&nbsp;getDouble(double&nbsp;low,\n                        double&nbsp;high)</pre>\n<div class=\"block\">Reads and returns a double-precision value from the user, which is\n constrained to be within the specified inclusive range.  If the user\n types a value that is not a legal number, the method ordinarily offers\n the user a chance to reenter the data, although this behavior can be\n changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>low</code> - The lowest value in the permitted range</dd>\n<dd><code>high</code> - The highest value in the permitted range</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a <code>double</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double d = program.getDouble(low, high);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getDouble-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getDouble</h4>\n<pre>public final&nbsp;double&nbsp;getDouble(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt)</pre>\n<div class=\"block\">Prompts the user to enter an double-precision number, which is then\n returned as the value of this method.  If the user types a value that\n is not a legal number, the method ordinarily offers the user a chance to\n reenter the data,  although this behavior can be changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>prompt</code> - The prompt string to display to the user</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a <code>double</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double d = program.getDouble(prompt);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getDouble-java.lang.String-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getDouble</h4>\n<pre>public&nbsp;double&nbsp;getDouble(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt,\n                        double&nbsp;low,\n                        double&nbsp;high)</pre>\n<div class=\"block\">Prompts the user to enter an double-precision number, which is then returned\n as the value of this method.  The value must be within the inclusive range\n between <code>low</code> and <code>high</code>.  If the user types a value\n that is not a legal number, the method ordinarily offers the user a chance\n to reenter the data,  although this behavior can be changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>prompt</code> - The prompt string to display to the user</dd>\n<dd><code>low</code> - The lowest value in the permitted range</dd>\n<dd><code>high</code> - The highest value in the permitted range</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a <code>double</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>d = program.getDouble(prompt, low, high);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getHeight--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getHeight</h4>\n<pre>public&nbsp;int&nbsp;getHeight()</pre>\n<div class=\"block\">Returns the height of the central region.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHeight--\" title=\"class or interface in java.awt\">getHeight</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The height of the central region</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int height = getHeight();</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"getInputModel--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getInputModel</h4>\n<pre>public&nbsp;acm.io.IOModel&nbsp;getInputModel()</pre>\n<div class=\"block\">Returns the <code>IOModel</code> used for program input, which will\n ordinarily be the console.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The <code>IOModel</code> used for program input</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>IOModel io = program.getInputModel();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getInteger--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getInteger</h4>\n<pre>public&nbsp;int&nbsp;getInteger()</pre>\n<div class=\"block\">Reads and returns an integer value from the user.  If the user types\n a value that is not a legal integer, the method ordinarily offers the\n user a chance to reenter the data, although this behavior can be\n changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a decimal integer</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int n = program.getInteger();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getInteger-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getInteger</h4>\n<pre>public&nbsp;int&nbsp;getInteger(int&nbsp;low,\n                      int&nbsp;high)</pre>\n<div class=\"block\">Reads and returns an integer value from the user, which is constrained to\n be within the specified inclusive range.  If the user types a value\n that is not a legal integer, the method ordinarily offers the user a chance\n to reenter the data, although this behavior can be changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>low</code> - The lowest value in the permitted range</dd>\n<dd><code>high</code> - The highest value in the permitted range</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a decimal integer</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int n = program.getInteger(low, high);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getInteger-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getInteger</h4>\n<pre>public final&nbsp;int&nbsp;getInteger(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt)</pre>\n<div class=\"block\">Prompts the user to enter an integer, which is then returned as the value\n of this method.  If the user types a value that is not a legal integer,\n the method ordinarily offers the user a chance to reenter the data,\n although this behavior can be changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>prompt</code> - The prompt string to display to the user</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a decimal integer</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int n = program.getInteger(prompt);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getInteger-java.lang.String-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getInteger</h4>\n<pre>public&nbsp;int&nbsp;getInteger(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt,\n                      int&nbsp;low,\n                      int&nbsp;high)</pre>\n<div class=\"block\">Prompts the user to enter an integer, which is then returned as the value\n of this method.  The value must be within the inclusive range between\n <code>low</code> and <code>high</code>.  If the user types a value that\n is not a legal integer or is outside the specified range, the method\n ordinarily offers the user a chance to reenter the data,\n although this behavior can be changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>prompt</code> - The prompt string to display to the user</dd>\n<dd><code>low</code> - The lowest value in the permitted range</dd>\n<dd><code>high</code> - The highest value in the permitted range</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a decimal integer</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int n = console.getInteger(prompt, low, high);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getJFrame--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getJFrame</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true\" title=\"class or interface in javax.swing\">JFrame</a>&nbsp;getJFrame()</pre>\n<div class=\"block\">Returns the Java Swing window frame that encloses this program.\n Will be null until start() has been called on the program.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the window frame</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getLayout--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getLayout</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/LayoutManager.html?is-external=true\" title=\"class or interface in java.awt\">LayoutManager</a>&nbsp;getLayout()</pre>\n<div class=\"block\">Gets the layout manager for the central region of the content pane.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getLayout--\" title=\"class or interface in java.awt\">getLayout</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The active layout manager</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>LayoutManager layout = setLayout();</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"getLine--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getLine</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getLine()</pre>\n<div class=\"block\">Reads and returns a line of input from the console.  The end-of-line\n characters that terminate the input are not included in the returned\n string.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The next line of input as a <code>String</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>String str = program.getLine();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getLine-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getLine</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getLine(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt)</pre>\n<div class=\"block\">Prompts the user for a line of input.  The end-of-line characters\n that terminate the input are not included in the returned string.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>prompt</code> - The prompt string to display to the user</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The next line of input as a <code>String</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>String str = program.getLine(prompt);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getMainThread--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getMainThread</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true\" title=\"class or interface in java.lang\">Thread</a>&nbsp;getMainThread()</pre>\n<div class=\"block\">Returns the thread that is running the main program.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The thread that is running the main program, if any</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>Thread mainThread = getMainThread();</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"getMenuBar--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getMenuBar</h4>\n<pre>public&nbsp;<a href=\"../../acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a>&nbsp;getMenuBar()</pre>\n<div class=\"block\">Returns the menu bar associated with this program.  Note that this menu bar\n cannot be set by clients, although it can be changed initially by overriding\n the <code>createMenuBar</code> factory method.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The menu bar in use for this program</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>ProgramMenuBar mbar = getMenuBar();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getOutputColor--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getOutputColor</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;getOutputColor()</pre>\n<div class=\"block\">Returns the current output color used to display output on the console.\n If it has never been explicitly set, returns a default of Color.BLACK.</div>\n</li>\n</ul>\n<a name=\"getOutputModel--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getOutputModel</h4>\n<pre>public&nbsp;acm.io.IOModel&nbsp;getOutputModel()</pre>\n<div class=\"block\">Returns the <code>IOModel</code> used for program output, which will\n ordinarily be the console.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The <code>IOModel</code> used for program output</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>IOModel io = program.getOutputModel();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getParameter-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getParameter</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getParameter(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n<div class=\"block\">Returns the parameter associated with name.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getParameter-java.lang.String-\" title=\"class or interface in java.applet\">getParameter</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">Applet</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>name</code> - The name of the parameter</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value associated with the parameter, or <code>null</code> if none</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>String value = getParameter(name);</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"getParameterTable--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getParameterTable</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;getParameterTable()</pre>\n<div class=\"block\">Retrieves the parameter table.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The parameter table</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>ParameterTable ht = getParameterTable();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getPreferredSize--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getPreferredSize</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a>&nbsp;getPreferredSize()</pre>\n<div class=\"block\">Returns the preferred size of the content pane.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getPreferredSize--\" title=\"class or interface in java.awt\">getPreferredSize</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The preferred size of the content pane</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>Dimension size = getPreferredSize();</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"getReader--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getReader</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html?is-external=true\" title=\"class or interface in java.io\">BufferedReader</a>&nbsp;getReader()</pre>\n<div class=\"block\">Returns a <code>BufferedReader</code> whose input comes from the console.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>A <code>Reader</code> for use with this console</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>BufferedReader rd = getReader();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getReal--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getReal</h4>\n<pre>public&nbsp;double&nbsp;getReal()</pre>\n<div class=\"block\">Reads and returns a double-precision value from the user.  If the user\n types a value that is not a legal number, the method ordinarily offers\n the user a chance to reenter the data, although this behavior can be\n changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a <code>double</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double d = program.getReal();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getReal-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getReal</h4>\n<pre>public&nbsp;double&nbsp;getReal(double&nbsp;low,\n                      double&nbsp;high)</pre>\n<div class=\"block\">Reads and returns a double-precision value from the user, which is\n constrained to be within the specified inclusive range.  If the user\n types a value that is not a legal number, the method ordinarily offers\n the user a chance to reenter the data, although this behavior can be\n changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>low</code> - The lowest value in the permitted range</dd>\n<dd><code>high</code> - The highest value in the permitted range</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a <code>double</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double d = program.getReal(low, high);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getReal-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getReal</h4>\n<pre>public final&nbsp;double&nbsp;getReal(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt)</pre>\n<div class=\"block\">Prompts the user to enter an double-precision number, which is then\n returned as the value of this method.  If the user types a value that\n is not a legal number, the method ordinarily offers the user a chance to\n reenter the data,  although this behavior can be changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>prompt</code> - The prompt string to display to the user</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a <code>double</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double d = program.getReal(prompt);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getReal-java.lang.String-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getReal</h4>\n<pre>public&nbsp;double&nbsp;getReal(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt,\n                      double&nbsp;low,\n                      double&nbsp;high)</pre>\n<div class=\"block\">Prompts the user to enter an double-precision number, which is then returned\n as the value of this method.  The value must be within the inclusive range\n between <code>low</code> and <code>high</code>.  If the user types a value\n that is not a legal number, the method ordinarily offers the user a chance\n to reenter the data,  although this behavior can be changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>prompt</code> - The prompt string to display to the user</dd>\n<dd><code>low</code> - The lowest value in the permitted range</dd>\n<dd><code>high</code> - The highest value in the permitted range</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a <code>double</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>d = program.getReal(prompt, low, high);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getRegionPanel-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getRegionPanel</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a>&nbsp;getRegionPanel(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;region)</pre>\n<div class=\"block\">Gets the <code>JPanel</code> for the specified region.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>region</code> - The region of the window (<code>NORTH</code>, <code>SOUTH</code>,\n               <code>EAST</code>, <code>WEST</code>, or <code>CENTER</code>)</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The <code>JPanel</code> for that subregion</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>JPanel panel = getRegionPanel(region);</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"getRightX--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getRightX</h4>\n<pre>public&nbsp;int&nbsp;getRightX()</pre>\n<div class=\"block\">Returns the x-coordinate of the right edge of this program's window.</div>\n</li>\n</ul>\n<a name=\"getScreenHeight--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getScreenHeight</h4>\n<pre>public&nbsp;int&nbsp;getScreenHeight()</pre>\n<div class=\"block\">Returns the height of the screen in pixels.</div>\n</li>\n</ul>\n<a name=\"getScreenSize--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getScreenSize</h4>\n<pre>public&nbsp;acm.graphics.GDimension&nbsp;getScreenSize()</pre>\n<div class=\"block\">Returns the width x height of the screen in pixels.</div>\n</li>\n</ul>\n<a name=\"getScreenWidth--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getScreenWidth</h4>\n<pre>public&nbsp;int&nbsp;getScreenWidth()</pre>\n<div class=\"block\">Returns the width of the screen in pixels.</div>\n</li>\n</ul>\n<a name=\"getStartupObject--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getStartupObject</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;getStartupObject()</pre>\n<div class=\"block\">Retrieves the object that was created when this program was started\n if that object is something other than a <code>Program</code>.  In\n the normal case of running a <code>Program</code> object, this method\n will return <code>null</code>.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The startup object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>Object obj = getStartupObject();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getTitle--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getTitle</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getTitle()</pre>\n<div class=\"block\">Gets the title of this program.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#getTitle--\">getTitle</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The title in use for this program</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>String title = getTitle();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getWidth--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getWidth</h4>\n<pre>public&nbsp;int&nbsp;getWidth()</pre>\n<div class=\"block\">Returns the width of the central region.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getWidth--\" title=\"class or interface in java.awt\">getWidth</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The width of the central region</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int width = getWidth();</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"getWindow--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getWindow</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true\" title=\"class or interface in java.awt\">Window</a>&nbsp;getWindow()</pre>\n<div class=\"block\">Returns the Java Swing window that encloses this program.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the window frame</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getWriter--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getWriter</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintWriter.html?is-external=true\" title=\"class or interface in java.io\">PrintWriter</a>&nbsp;getWriter()</pre>\n<div class=\"block\">Returns a <code>PrintWriter</code> whose output is directed to the console.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>A <code>PrintWriter</code> for use with this console</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>PrintWriter wr = getWriter();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getYesOrNo-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getYesOrNo</h4>\n<pre>public&nbsp;boolean&nbsp;getYesOrNo(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt)</pre>\n<div class=\"block\">Prompts the user to answer a yes/no question and returns true if the user\n typed 'yes' (or anything that starts with a 'y', case-insensitively),\n false if the user types anything that starts with 'n', or re-prompts if\n the user doesn't type a 'y' or 'n' word.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>true if user types a 'y' word; false if user types an 'n' word</dd>\n</dl>\n</li>\n</ul>\n<a name=\"hasConfiguration--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hasConfiguration</h4>\n<pre>public final&nbsp;boolean&nbsp;hasConfiguration()</pre>\n<div class=\"block\">Returns true if this program has any saved configuration stored on disk.</div>\n</li>\n</ul>\n<a name=\"init--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>init</h4>\n<pre>public&nbsp;void&nbsp;init()</pre>\n<div class=\"block\">Specifies the code to be executed as startup time before the\n <code>run</code> method is called.  Subclasses can override this\n method to perform any initialization code that would ordinarily\n be included in an applet <code>init</code> method.  In general,\n subclasses will override <code>init</code> in GUI-based programs\n where the program simply sets up an initial state and then waits\n for events from the user.  The <code>run</code> method is required\n for applications in which there needs to be some control thread\n while the program runs, as in a typical animation.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#init--\">init</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#init--\" title=\"class or interface in java.applet\">init</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">Applet</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>program.init();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"insertUpdate-javax.swing.event.DocumentEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>insertUpdate</h4>\n<pre>public&nbsp;void&nbsp;insertUpdate(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Required method of DocumentListener interface.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentListener.html?is-external=true#insertUpdate-javax.swing.event.DocumentEvent-\" title=\"class or interface in javax.swing.event\">insertUpdate</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"isAnimated--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isAnimated</h4>\n<pre>public&nbsp;boolean&nbsp;isAnimated()</pre>\n<div class=\"block\">Returns true if the program is currently in animated mode.</div>\n</li>\n</ul>\n<a name=\"isApplet--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isApplet</h4>\n<pre>protected&nbsp;boolean&nbsp;isApplet()</pre>\n<div class=\"block\">Returns <code>true</code> if this program is running as an applet in a browser.</div>\n</li>\n</ul>\n<a name=\"isAppletMode--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isAppletMode</h4>\n<pre>public&nbsp;boolean&nbsp;isAppletMode()</pre>\n<div class=\"block\">Returns <code>true</code> if this program is running as an applet in a browser.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd><code>true</code> if this program is running as an applet, <code>false</code> otherwise</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>if (isAppletMode()) . . .</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"isExitOnClose--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isExitOnClose</h4>\n<pre>public&nbsp;boolean&nbsp;isExitOnClose()</pre>\n<div class=\"block\">Returns whether the program will exit when its window is closed (default true).</div>\n</li>\n</ul>\n<a name=\"isInitialized--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isInitialized</h4>\n<pre>public&nbsp;boolean&nbsp;isInitialized()</pre>\n<div class=\"block\">Returns true if this program's init() method has been called.</div>\n</li>\n</ul>\n<a name=\"isStarted--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isStarted</h4>\n<pre>protected&nbsp;boolean&nbsp;isStarted()</pre>\n<div class=\"block\">Checks to see whether this program has started, usually by checking to see\n whether some pane exists.  Subclasses can override this method to ensure\n that their structures are visible before proceeding.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"itemStateChanged-java.awt.event.ItemEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>itemStateChanged</h4>\n<pre>public&nbsp;void&nbsp;itemStateChanged(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ItemEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ItemEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Required empty method of ItemListener interface.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ItemListener.html?is-external=true#itemStateChanged-java.awt.event.ItemEvent-\" title=\"class or interface in java.awt.event\">itemStateChanged</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ItemListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ItemListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"keyPressed-java.awt.event.KeyEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>keyPressed</h4>\n<pre>public&nbsp;void&nbsp;keyPressed(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Called when a key is pressed.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true#keyPressed-java.awt.event.KeyEvent-\" title=\"class or interface in java.awt.event\">keyPressed</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"keyReleased-java.awt.event.KeyEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>keyReleased</h4>\n<pre>public&nbsp;void&nbsp;keyReleased(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Called when a key is released.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true#keyReleased-java.awt.event.KeyEvent-\" title=\"class or interface in java.awt.event\">keyReleased</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"keyTyped-java.awt.event.KeyEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>keyTyped</h4>\n<pre>public&nbsp;void&nbsp;keyTyped(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Called when a key is typed (i.e., pressed and released).</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true#keyTyped-java.awt.event.KeyEvent-\" title=\"class or interface in java.awt.event\">keyTyped</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"killMe--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>killMe</h4>\n<pre>public&nbsp;void&nbsp;killMe()</pre>\n<div class=\"block\">Instructs the program to stop/kill itself.\n Not to be called by students.</div>\n</li>\n</ul>\n<a name=\"loadConfiguration--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>loadConfiguration</h4>\n<pre>public final&nbsp;void&nbsp;loadConfiguration()</pre>\n<div class=\"block\">Loads any saved configuration of this program from disk.</div>\n</li>\n</ul>\n<a name=\"loadConfiguration-java.util.Properties-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>loadConfiguration</h4>\n<pre>protected&nbsp;void&nbsp;loadConfiguration(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Properties.html?is-external=true\" title=\"class or interface in java.util\">Properties</a>&nbsp;props)</pre>\n<div class=\"block\">Loads any saved configuration of this program from disk.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>props</code> - properties to load from</dd>\n</dl>\n</li>\n</ul>\n<a name=\"menuAction-java.awt.event.ActionEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>menuAction</h4>\n<pre>public&nbsp;boolean&nbsp;menuAction(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;event)</pre>\n<div class=\"block\">Called whenever a program action is detected in the menu bar.\n Subclasses can override this method to extend the set of menu\n commands recognized even in the absence of a component with\n keyboard focus.</div>\n</li>\n</ul>\n<a name=\"mouseClicked-java.awt.event.MouseEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>mouseClicked</h4>\n<pre>public&nbsp;void&nbsp;mouseClicked(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Called when the mouse is clicked.  A call to <code>mouseClicked</code>\n is always preceded by both a <code>mousePressed</code> and a\n <code>mouseReleased</code> event for the same source.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true#mouseClicked-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseClicked</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"mouseDragged-java.awt.event.MouseEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>mouseDragged</h4>\n<pre>public&nbsp;void&nbsp;mouseDragged(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Called when the mouse is dragged with the button down.  Java\n makes several guarantees about dragging.  First, a\n <code>mouseDragged</code> call is always preceded by a\n <code>mousePressed</code> call for the same source.  If the\n mouse is pressed elsewhere and then enters a source with\n the button down, no drag event occurs.  Moreover, once the\n mouse button goes down in a particular source, only that\n source will receive mouse events until the button goes up.\n Those events, moreover, are reported even in the mouse\n travels outside the domain of the object.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true#mouseDragged-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseDragged</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"mouseEntered-java.awt.event.MouseEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>mouseEntered</h4>\n<pre>public&nbsp;void&nbsp;mouseEntered(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Called when the mouse enters the source (which may be\n either a component or a <code>GObject</code>).</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true#mouseEntered-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseEntered</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"mouseExited-java.awt.event.MouseEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>mouseExited</h4>\n<pre>public&nbsp;void&nbsp;mouseExited(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Called when the mouse exits the source (which may be\n either a component or a <code>GObject</code>).</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true#mouseExited-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseExited</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"mouseMoved-java.awt.event.MouseEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>mouseMoved</h4>\n<pre>public&nbsp;void&nbsp;mouseMoved(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Called when the mouse is moved.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true#mouseMoved-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseMoved</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"mousePressed-java.awt.event.MouseEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>mousePressed</h4>\n<pre>public&nbsp;void&nbsp;mousePressed(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Called when the mouse button is pressed.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true#mousePressed-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mousePressed</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"mouseReleased-java.awt.event.MouseEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>mouseReleased</h4>\n<pre>public&nbsp;void&nbsp;mouseReleased(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Called when the mouse button is released.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true#mouseReleased-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseReleased</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"mouseWheelMoved-java.awt.event.MouseWheelEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>mouseWheelMoved</h4>\n<pre>public&nbsp;void&nbsp;mouseWheelMoved(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseWheelEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseWheelEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Implementation of MouseWheelListener interface.\n This method does nothing but can be overridden.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseWheelListener.html?is-external=true#mouseWheelMoved-java.awt.event.MouseWheelEvent-\" title=\"class or interface in java.awt.event\">mouseWheelMoved</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseWheelListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseWheelListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"openFile-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>openFile</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;openFile(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</pre>\n<div class=\"block\">Opens the given file for reading.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>filename</code> - name of the file.</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>stream to read file</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"../../stanford/cs106/io/IORuntimeException.html\" title=\"class in stanford.cs106.io\">IORuntimeException</a></code> - if file is not found</dd>\n</dl>\n</li>\n</ul>\n<a name=\"openFile-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>openFile</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;openFile(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;directory,\n                               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</pre>\n<div class=\"block\">Opens the given file from within the given directory.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>filename</code> - name of the file.</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>stream to read file</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"../../stanford/cs106/io/IORuntimeException.html\" title=\"class in stanford.cs106.io\">IORuntimeException</a></code> - if file is not found</dd>\n</dl>\n</li>\n</ul>\n<a name=\"openFileFromDisk-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>openFileFromDisk</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;openFileFromDisk(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</pre>\n<div class=\"block\">Opens the given file from within the current working directory.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>filename</code> - name of the file.</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>stream to read file</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"../../stanford/cs106/io/IORuntimeException.html\" title=\"class in stanford.cs106.io\">IORuntimeException</a></code> - if file is not found</dd>\n</dl>\n</li>\n</ul>\n<a name=\"openFileFromDisk-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>openFileFromDisk</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;openFileFromDisk(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;directory,\n                                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</pre>\n<div class=\"block\">Opens the given file from within the given directory.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>directory</code> - directory to search for the file.</dd>\n<dd><code>filename</code> - name of the file.</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>stream to read file</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"../../stanford/cs106/io/IORuntimeException.html\" title=\"class in stanford.cs106.io\">IORuntimeException</a></code> - if file is not found</dd>\n</dl>\n</li>\n</ul>\n<a name=\"openFileFromJAR-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>openFileFromJAR</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;openFileFromJAR(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</pre>\n<div class=\"block\">Opens the given file from inside the app's JAR archive.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>filename</code> - name of the file.</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>stream to read file</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"../../stanford/cs106/io/IORuntimeException.html\" title=\"class in stanford.cs106.io\">IORuntimeException</a></code> - if file is not found</dd>\n</dl>\n</li>\n</ul>\n<a name=\"openFileFromJAR-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>openFileFromJAR</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;openFileFromJAR(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;directory,\n                                      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</pre>\n<div class=\"block\">Opens the given file from within the app's JAR archive in the given directory.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>directory</code> - directory to search for the file.</dd>\n<dd><code>filename</code> - name of the file.</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>stream to read file</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"../../stanford/cs106/io/IORuntimeException.html\" title=\"class in stanford.cs106.io\">IORuntimeException</a></code> - if file is not found</dd>\n</dl>\n</li>\n</ul>\n<a name=\"pack--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>pack</h4>\n<pre>public&nbsp;void&nbsp;pack()</pre>\n<div class=\"block\">Resizes this program to exactly fit the preferred size of its contents.</div>\n</li>\n</ul>\n<a name=\"pause-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>pause</h4>\n<pre>public&nbsp;void&nbsp;pause(double&nbsp;milliseconds)</pre>\n<div class=\"block\">Delays the calling thread for the specified time, which is expressed in\n milliseconds.  Unlike <code>Thread.sleep</code>, this method never throws an\n exception.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#pause-double-\">pause</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>milliseconds</code> - The sleep time in milliseconds</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>program.pause(milliseconds);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"pauseTick--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>pauseTick</h4>\n<pre>public&nbsp;void&nbsp;pauseTick()</pre>\n<div class=\"block\">Sets a 'pause tick' flag.\n Not to be called by students.</div>\n</li>\n</ul>\n<a name=\"print-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public final&nbsp;void&nbsp;print(boolean&nbsp;x)</pre>\n<div class=\"block\">Makes sure that <code>print</code> can display a <code>boolean</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>print</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"print-boolean-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public&nbsp;void&nbsp;print(boolean&nbsp;value,\n                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n<div class=\"block\">Prints the given value in the given color.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>value</code> - The value to print.</dd>\n<dd><code>color</code> - The color in which to draw the value. If null, draws in black.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"print-char-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public final&nbsp;void&nbsp;print(char&nbsp;x)</pre>\n<div class=\"block\">Makes sure that <code>print</code> can display a <code>char</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>print</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"print-char-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public&nbsp;void&nbsp;print(char&nbsp;value,\n                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n<div class=\"block\">Prints the given value in the given color.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>value</code> - The value to print.</dd>\n<dd><code>color</code> - The color in which to draw the value. If null, draws in black.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"print-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public final&nbsp;void&nbsp;print(double&nbsp;x)</pre>\n<div class=\"block\">Makes sure that <code>print</code> can display a <code>double</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>print</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"print-double-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public&nbsp;void&nbsp;print(double&nbsp;value,\n                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n<div class=\"block\">Prints the given value in the given color.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>value</code> - The value to print.</dd>\n<dd><code>color</code> - The color in which to draw the value. If null, draws in black.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"print-float-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public final&nbsp;void&nbsp;print(float&nbsp;x)</pre>\n<div class=\"block\">Makes sure that <code>print</code> can display a <code>float</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>print</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"print-float-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public&nbsp;void&nbsp;print(float&nbsp;value,\n                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n<div class=\"block\">Prints the given value in the given color.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>value</code> - The value to print.</dd>\n<dd><code>color</code> - The color in which to draw the value. If null, draws in black.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"print-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public final&nbsp;void&nbsp;print(int&nbsp;x)</pre>\n<div class=\"block\">Makes sure that <code>print</code> can display an <code>int</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>print</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"print-int-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public&nbsp;void&nbsp;print(int&nbsp;value,\n                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n<div class=\"block\">Prints the given value in the given color.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>value</code> - The value to print.</dd>\n<dd><code>color</code> - The color in which to draw the value. If null, draws in black.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"print-long-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public final&nbsp;void&nbsp;print(long&nbsp;x)</pre>\n<div class=\"block\">Makes sure that <code>print</code> can display a <code>long</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>print</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"print-long-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public&nbsp;void&nbsp;print(long&nbsp;value,\n                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n<div class=\"block\">Prints the given value in the given color.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>value</code> - The value to print.</dd>\n<dd><code>color</code> - The color in which to draw the value. If null, draws in black.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"print-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public final&nbsp;void&nbsp;print(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;x)</pre>\n<div class=\"block\">Makes sure that <code>print</code> can display an <code>Object</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>print</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#print-java.lang.Object-\">print</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"print-java.lang.Object-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public&nbsp;void&nbsp;print(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value,\n                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n<div class=\"block\">Prints the given value in the given color.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>value</code> - The value to print.</dd>\n<dd><code>color</code> - The color in which to draw the value. If null, draws in black.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"print-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public&nbsp;void&nbsp;print(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</pre>\n<div class=\"block\">Displays the argument value on the console, leaving the cursor at the end of\n the output.  The <code>print</code> method is overloaded so that\n <code>value</code> can be of any type.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>print</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#print-java.lang.String-\">print</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>value</code> - The value to be displayed</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>program.print(value);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"print-java.lang.String-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public&nbsp;void&nbsp;print(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value,\n                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n<div class=\"block\">Prints the given string in the given color.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>value</code> - The string to print.</dd>\n<dd><code>color</code> - The color in which to draw the text. If null, draws in black.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"printf-java.lang.String-java.lang.Object...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>printf</h4>\n<pre>public&nbsp;void&nbsp;printf(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;format,\n                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>...&nbsp;args)</pre>\n<div class=\"block\">Writes a formatted string to this output stream using the specified format string and arguments.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#printf-java.lang.String-java.lang.Object...-\">printf</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>format</code> - A format string as described in Java's Format string syntax.</dd>\n<dd><code>args</code> - Arguments referenced by the format specifiers in the format string. If there are more arguments than format specifiers, the extra arguments are ignored. The number of arguments is variable and may be zero. The maximum number of arguments is limited by the maximum dimension of a Java array as defined by The Java™ Virtual Machine Specification. The behavior on a null argument depends on the conversion.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/IllegalFormatException.html?is-external=true\" title=\"class or interface in java.util\">IllegalFormatException</a></code> - If a format string contains an illegal syntax, a format specifier that is incompatible with the given arguments, insufficient arguments given the format string, or other illegal conditions.</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - If the format is null</dd>\n</dl>\n</li>\n</ul>\n<a name=\"println--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public&nbsp;void&nbsp;println()</pre>\n<div class=\"block\">Advances the console cursor to the beginning of the next line.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>println</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#println--\">println</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>program.println();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"println-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public final&nbsp;void&nbsp;println(boolean&nbsp;x)</pre>\n<div class=\"block\">Makes sure that <code>println</code> can display a <code>boolean</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>println</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"println-boolean-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public&nbsp;void&nbsp;println(boolean&nbsp;value,\n                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n<div class=\"block\">Prints the given value in the given color and then advances the cursor to the beginning of the next line.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>value</code> - The value to print.</dd>\n<dd><code>color</code> - The color in which to draw the value. If null, draws in black.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"println-char-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public final&nbsp;void&nbsp;println(char&nbsp;x)</pre>\n<div class=\"block\">Makes sure that <code>println</code> can display a <code>char</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>println</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"println-char-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public&nbsp;void&nbsp;println(char&nbsp;value,\n                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n<div class=\"block\">Prints the given value in the given color and then advances the cursor to the beginning of the next line.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>value</code> - The value to print.</dd>\n<dd><code>color</code> - The color in which to draw the value. If null, draws in black.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"println-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public final&nbsp;void&nbsp;println(double&nbsp;x)</pre>\n<div class=\"block\">Makes sure that <code>println</code> can display a <code>double</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>println</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"println-double-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public&nbsp;void&nbsp;println(double&nbsp;value,\n                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n<div class=\"block\">Prints the given value in the given color and then advances the cursor to the beginning of the next line.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>value</code> - The value to print.</dd>\n<dd><code>color</code> - The color in which to draw the value. If null, draws in black.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"println-float-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public final&nbsp;void&nbsp;println(float&nbsp;x)</pre>\n<div class=\"block\">Makes sure that <code>println</code> can display a <code>float</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>println</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"println-float-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public&nbsp;void&nbsp;println(float&nbsp;value,\n                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n<div class=\"block\">Prints the given value in the given color and then advances the cursor to the beginning of the next line.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>value</code> - The value to print.</dd>\n<dd><code>color</code> - The color in which to draw the value. If null, draws in black.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"println-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public final&nbsp;void&nbsp;println(int&nbsp;x)</pre>\n<div class=\"block\">Makes sure that <code>println</code> can display an <code>int</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>println</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"println-int-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public&nbsp;void&nbsp;println(int&nbsp;value,\n                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n<div class=\"block\">Prints the given value in the given color and then advances the cursor to the beginning of the next line.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>value</code> - The value to print.</dd>\n<dd><code>color</code> - The color in which to draw the value. If null, draws in black.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"println-long-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public final&nbsp;void&nbsp;println(long&nbsp;x)</pre>\n<div class=\"block\">Makes sure that <code>println</code> can display a <code>long</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>println</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"println-long-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public&nbsp;void&nbsp;println(long&nbsp;value,\n                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n<div class=\"block\">Prints the given value in the given color and then advances the cursor to the beginning of the next line.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>value</code> - The value to print.</dd>\n<dd><code>color</code> - The color in which to draw the value. If null, draws in black.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"println-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public final&nbsp;void&nbsp;println(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;x)</pre>\n<div class=\"block\">Makes sure that <code>println</code> can display an <code>Object</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>println</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#println-java.lang.Object-\">println</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"println-java.lang.Object-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public&nbsp;void&nbsp;println(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value,\n                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n<div class=\"block\">Prints the given value in the given color and then advances the cursor to the beginning of the next line.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>value</code> - The value to print.</dd>\n<dd><code>color</code> - The color in which to draw the value. If null, draws in black.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"println-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public&nbsp;void&nbsp;println(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</pre>\n<div class=\"block\">Displays the argument value on the console and then advances the cursor\n to the beginning of the next line.  The <code>println</code> method is\n overloaded so that <code>value</code> can be of any type.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>println</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#println-java.lang.String-\">println</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>value</code> - The value to be displayed</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>program.println(value);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"println-java.lang.String-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public&nbsp;void&nbsp;println(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value,\n                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n<div class=\"block\">Prints the given string in the given color and then advances the cursor to the beginning of the next line.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>value</code> - The string to print.</dd>\n<dd><code>color</code> - The color in which to draw the text. If null, draws in black.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"prompt-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>prompt</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt)</pre>\n<div class=\"block\">Pops up a dialog box displaying the given message and asking the user to type a response.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>value</code> - the value to display</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the text that the user typed, or null if the user presses Cancel</dd>\n</dl>\n</li>\n</ul>\n<a name=\"readBoolean--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readBoolean</h4>\n<pre>public final&nbsp;boolean&nbsp;readBoolean()</pre>\n<div class=\"block\">Reads and returns a boolean value (<code>true</code> or <code>false</code>).\n The input must match one of these strings, ignoring case.  If the user\n types a value that is not one of these possibilities, the method ordinarily\n offers the user a chance to reenter the data, although this behavior\n can be changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readBoolean</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a boolean value</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>boolean flag = program.readBoolean();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"readBoolean-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readBoolean</h4>\n<pre>public final&nbsp;boolean&nbsp;readBoolean(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt)</pre>\n<div class=\"block\">Prompts the user to enter a boolean value, which is returned as\n the value of this method.  If the user types a value that is not a\n legal boolean value, the method ordinarily offers the user a chance\n to reenter the data, although this behavior can be changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readBoolean</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>prompt</code> - The prompt string to display to the user</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a boolean value</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>boolean flag = program.readBoolean(prompt);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"readBoolean-java.lang.String-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readBoolean</h4>\n<pre>public&nbsp;boolean&nbsp;readBoolean(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt,\n                           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;trueLabel,\n                           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;falseLabel)</pre>\n<div class=\"block\">Prompts the user to enter a boolean value, which is matched against the\n labels provided.  If the user enters a value that is not one of the two\n choices, <code>readBoolean</code> ordinarily offers the user a chance\n to reenter the data, although this behavior can be changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readBoolean</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>prompt</code> - The prompt string to display to the user</dd>\n<dd><code>trueLabel</code> - The string used to indicate <code>true</code></dd>\n<dd><code>falseLabel</code> - The string used to indicate <code>false</code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a boolean value</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>boolean flag = program.readBoolean(prompt, trueLabel, falseLabel);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"readDouble--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readDouble</h4>\n<pre>public final&nbsp;double&nbsp;readDouble()</pre>\n<div class=\"block\">Reads and returns a double-precision value from the user.  If the user\n types a value that is not a legal number, the method ordinarily offers\n the user a chance to reenter the data, although this behavior can be\n changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readDouble</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a <code>double</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double d = program.readDouble();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"readDouble-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readDouble</h4>\n<pre>public final&nbsp;double&nbsp;readDouble(double&nbsp;low,\n                               double&nbsp;high)</pre>\n<div class=\"block\">Reads and returns a double-precision value from the user, which is\n constrained to be within the specified inclusive range.  If the user\n types a value that is not a legal number, the method ordinarily offers\n the user a chance to reenter the data, although this behavior can be\n changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readDouble</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>low</code> - The lowest value in the permitted range</dd>\n<dd><code>high</code> - The highest value in the permitted range</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a <code>double</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double d = program.readDouble(low, high);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"readDouble-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readDouble</h4>\n<pre>public final&nbsp;double&nbsp;readDouble(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt)</pre>\n<div class=\"block\">Prompts the user to enter an double-precision number, which is then\n returned as the value of this method.  If the user types a value that\n is not a legal number, the method ordinarily offers the user a chance to\n reenter the data,  although this behavior can be changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readDouble</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>prompt</code> - The prompt string to display to the user</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a <code>double</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double d = program.readDouble(prompt);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"readDouble-java.lang.String-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readDouble</h4>\n<pre>public&nbsp;double&nbsp;readDouble(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt,\n                         double&nbsp;low,\n                         double&nbsp;high)</pre>\n<div class=\"block\">Prompts the user to enter an double-precision number, which is then returned\n as the value of this method.  The value must be within the inclusive range\n between <code>low</code> and <code>high</code>.  If the user types a value\n that is not a legal number, the method ordinarily offers the user a chance\n to reenter the data,  although this behavior can be changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readDouble</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>prompt</code> - The prompt string to display to the user</dd>\n<dd><code>low</code> - The lowest value in the permitted range</dd>\n<dd><code>high</code> - The highest value in the permitted range</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a <code>double</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>d = program.readDouble(prompt, low, high);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"readInt--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readInt</h4>\n<pre>public final&nbsp;int&nbsp;readInt()</pre>\n<div class=\"block\">Reads and returns an integer value from the user.  If the user types\n a value that is not a legal integer, the method ordinarily offers the\n user a chance to reenter the data, although this behavior can be\n changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readInt</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a decimal integer</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int n = program.readInt();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"readInt-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readInt</h4>\n<pre>public final&nbsp;int&nbsp;readInt(int&nbsp;low,\n                         int&nbsp;high)</pre>\n<div class=\"block\">Reads and returns an integer value from the user, which is constrained to\n be within the specified inclusive range.  If the user types a value\n that is not a legal integer, the method ordinarily offers the user a chance\n to reenter the data, although this behavior can be changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readInt</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>low</code> - The lowest value in the permitted range</dd>\n<dd><code>high</code> - The highest value in the permitted range</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a decimal integer</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int n = program.readInt(low, high);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"readInt-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readInt</h4>\n<pre>public final&nbsp;int&nbsp;readInt(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt)</pre>\n<div class=\"block\">Prompts the user to enter an integer, which is then returned as the value\n of this method.  If the user types a value that is not a legal integer,\n the method ordinarily offers the user a chance to reenter the data,\n although this behavior can be changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readInt</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>prompt</code> - The prompt string to display to the user</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a decimal integer</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int n = program.readInt(prompt);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"readInt-java.lang.String-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readInt</h4>\n<pre>public&nbsp;int&nbsp;readInt(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt,\n                   int&nbsp;low,\n                   int&nbsp;high)</pre>\n<div class=\"block\">Prompts the user to enter an integer, which is then returned as the value\n of this method.  The value must be within the inclusive range between\n <code>low</code> and <code>high</code>.  If the user types a value that\n is not a legal integer or is outside the specified range, the method\n ordinarily offers the user a chance to reenter the data,\n although this behavior can be changed using the\n <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readInt</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>prompt</code> - The prompt string to display to the user</dd>\n<dd><code>low</code> - The lowest value in the permitted range</dd>\n<dd><code>high</code> - The highest value in the permitted range</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value of the input interpreted as a decimal integer</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int n = console.readInt(prompt, low, high);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"readLine--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readLine</h4>\n<pre>public final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;readLine()</pre>\n<div class=\"block\">Reads and returns a line of input from the console.  The end-of-line\n characters that terminate the input are not included in the returned\n string.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readLine</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The next line of input as a <code>String</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>String str = program.readLine();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"readLine-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readLine</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;readLine(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prompt)</pre>\n<div class=\"block\">Prompts the user for a line of input.  The end-of-line characters\n that terminate the input are not included in the returned string.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>readLine</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>prompt</code> - The prompt string to display to the user</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The next line of input as a <code>String</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>String str = program.readLine(prompt);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"remove-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>remove</h4>\n<pre>public&nbsp;void&nbsp;remove(int&nbsp;index)</pre>\n<div class=\"block\">Removes the component at the specified index from the central region.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#remove-int-\" title=\"class or interface in java.awt\">remove</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>index</code> - The index position of the component to remove</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>remove(index);</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"remove-java.awt.Component-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>remove</h4>\n<pre>public&nbsp;void&nbsp;remove(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp)</pre>\n<div class=\"block\">Removes the specified component from the central region.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#remove-java.awt.Component-\" title=\"class or interface in javax.swing\">remove</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>comp</code> - The component to remove</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>remove(comp);</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"removeAll--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeAll</h4>\n<pre>public&nbsp;void&nbsp;removeAll()</pre>\n<div class=\"block\">Removes all components from the central region.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeAll--\" title=\"class or interface in java.awt\">removeAll</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>removeAll();</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"removeFromRegion-java.awt.Component-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeFromRegion</h4>\n<pre>public&nbsp;void&nbsp;removeFromRegion(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n                             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;region)</pre>\n<div class=\"block\">Removes the specified component from the specified region of this program window.</div>\n</li>\n</ul>\n<a name=\"removeMenuBar--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeMenuBar</h4>\n<pre>public&nbsp;void&nbsp;removeMenuBar()</pre>\n<div class=\"block\">Removes the JMenuBar at the top of the program window.</div>\n</li>\n</ul>\n<a name=\"removeUpdate-javax.swing.event.DocumentEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeUpdate</h4>\n<pre>public&nbsp;void&nbsp;removeUpdate(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Required method of DocumentListener interface.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentListener.html?is-external=true#removeUpdate-javax.swing.event.DocumentEvent-\" title=\"class or interface in javax.swing.event\">removeUpdate</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"repaint--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>repaint</h4>\n<pre>public&nbsp;void&nbsp;repaint()</pre>\n<div class=\"block\">Forwards repaint to the content pane.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint--\" title=\"class or interface in java.awt\">repaint</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>repaint();</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"run--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>run</h4>\n<pre>public&nbsp;void&nbsp;run()</pre>\n<div class=\"block\">Specifies the code to be executed as the program runs.\n The <code>run</code> method is required for applications that have\n a thread of control that runs even in the absence of user actions,\n such as a program that uses console interation or that involves\n animation.  GUI-based programs that operate by setting up an initial\n configuration and then wait for user events usually do not specify a\n <code>run</code> method and supply a new definition for <code>init</code>\n instead.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#run--\">run</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true#run--\" title=\"class or interface in java.lang\">run</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"runHook--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>runHook</h4>\n<pre>protected&nbsp;void&nbsp;runHook()</pre>\n<div class=\"block\">Calls the run method in the program.  Subclasses can override this\n method to transfer control somewhere else.</div>\n</li>\n</ul>\n<a name=\"saveConfiguration--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>saveConfiguration</h4>\n<pre>public final&nbsp;void&nbsp;saveConfiguration()</pre>\n<div class=\"block\">Saves configuration of this program to disk.</div>\n</li>\n</ul>\n<a name=\"saveConfiguration-java.util.Properties-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>saveConfiguration</h4>\n<pre>protected&nbsp;void&nbsp;saveConfiguration(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Properties.html?is-external=true\" title=\"class or interface in java.util\">Properties</a>&nbsp;props)</pre>\n<div class=\"block\">Saves configuration of this program to disk in the given properties collection.</div>\n</li>\n</ul>\n<a name=\"setAnimated-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setAnimated</h4>\n<pre>public&nbsp;void&nbsp;setAnimated(boolean&nbsp;value)</pre>\n<div class=\"block\">Sets the program to be in animated (true) or non-animated (false) mode.</div>\n</li>\n</ul>\n<a name=\"setAnimationDelay-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setAnimationDelay</h4>\n<pre>public&nbsp;void&nbsp;setAnimationDelay(int&nbsp;delayMS)</pre>\n<div class=\"block\">Sets the number of milliseconds to delay between frames of animation.\n If animation is already in progress, the delay change will take effect immediately.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>delayMS</code> - delay in milliseconds (must be a positive integer)</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setAppletStub-java.applet.AppletStub-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setAppletStub</h4>\n<pre>protected&nbsp;void&nbsp;setAppletStub(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AppletStub.html?is-external=true\" title=\"class or interface in java.applet\">AppletStub</a>&nbsp;stub)</pre>\n<div class=\"block\">Sets the applet stub for this program in a way that makes it possible for\n clients to retrieve it.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>stub</code> - The applet stub</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>setAppletStub(stub);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setBackground-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setBackground</h4>\n<pre>public&nbsp;void&nbsp;setBackground(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n<div class=\"block\">Sets the background for the central region of the content pane.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBackground-java.awt.Color-\" title=\"class or interface in java.awt\">setBackground</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>color</code> - The new background color</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>setBackground(color);</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"setBottomY-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setBottomY</h4>\n<pre>public&nbsp;void&nbsp;setBottomY(double&nbsp;y)</pre>\n<div class=\"block\">Sets the y location of the bottom of this program.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>y</code> - the y location as a pixel offset (will be rounded down to nearest integer)</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setCenterX-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setCenterX</h4>\n<pre>public&nbsp;void&nbsp;setCenterX(double&nbsp;x)</pre>\n<div class=\"block\">Sets the x location of the horizontal center of this program.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x</code> - the x location as a pixel offset (will be rounded down to nearest integer)</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setCenterY-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setCenterY</h4>\n<pre>public&nbsp;void&nbsp;setCenterY(double&nbsp;y)</pre>\n<div class=\"block\">Sets the y location of the vertical center of this program.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>y</code> - the y location as a pixel offset (will be rounded down to nearest integer)</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setCenterLocation-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setCenterLocation</h4>\n<pre>public&nbsp;void&nbsp;setCenterLocation(double&nbsp;x,\n                              double&nbsp;y)</pre>\n<div class=\"block\">Sets the y location of the horizontal and vertical center of this program.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x</code> - the x location as a pixel offset (will be rounded down to nearest integer)</dd>\n<dd><code>y</code> - the y location as a pixel offset (will be rounded down to nearest integer)</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setConsole-acm.io.IOConsole-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setConsole</h4>\n<pre>public&nbsp;void&nbsp;setConsole(<a href=\"../../acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a>&nbsp;console)</pre>\n<div class=\"block\">Sets the console associated with this program.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>console</code> - The <code>IOConsole</code> object used for this program</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>program.setConsole(console);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setDialog-acm.io.IODialog-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setDialog</h4>\n<pre>public&nbsp;void&nbsp;setDialog(acm.io.IODialog&nbsp;dialog)</pre>\n<div class=\"block\">Sets the dialog associated with this program.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>dialog</code> - The <code>IODialog</code> object used for this program</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>program.setDialog(dialog);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setExitOnClose-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setExitOnClose</h4>\n<pre>public&nbsp;void&nbsp;setExitOnClose(boolean&nbsp;exitOnClose)</pre>\n<div class=\"block\">Sets whether the program will exit when its window is closed (default true).</div>\n</li>\n</ul>\n<a name=\"setFramesPerSecond-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setFramesPerSecond</h4>\n<pre>public&nbsp;void&nbsp;setFramesPerSecond(int&nbsp;fps)</pre>\n<div class=\"block\">Sets the animation delay properly to produce the given number of frames\n per second of animation.\n Equivalent to calling setAnimationDelay(1000 / fps).\n Special case: If 0 fps is passed, stops the animation.\n Note that calling this method does not start the animation running.\n If animation is already in progress, the FPS change will take effect immediately.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>fps</code> - frames per second (must be a non-negative integer)</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setHeight-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setHeight</h4>\n<pre>public&nbsp;void&nbsp;setHeight(double&nbsp;height)</pre>\n<div class=\"block\">Sets the height of this program without changing its width.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>height</code> - the new height, in pixels (will be rounded down to nearest integer)</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setInputModel-acm.io.IOModel-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setInputModel</h4>\n<pre>public&nbsp;void&nbsp;setInputModel(acm.io.IOModel&nbsp;io)</pre>\n<div class=\"block\">Sets the input model associated with this program.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>io</code> - The input model used for this program</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>program.setInputModel(io);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setInvisible-acm.graphics.GObject-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setInvisible</h4>\n<pre>public&nbsp;void&nbsp;setInvisible(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;obj,\n                         boolean&nbsp;invisible)</pre>\n<div class=\"block\">Marks the given GObject as being 'invisible'.\n Not to be called by students.</div>\n</li>\n</ul>\n<a name=\"setJFrame-javax.swing.JFrame-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setJFrame</h4>\n<pre>public&nbsp;void&nbsp;setJFrame(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true\" title=\"class or interface in javax.swing\">JFrame</a>&nbsp;jframe)</pre>\n<div class=\"block\">Sets the Java Swing window frame that encloses this program.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>jframe</code> - </dd>\n</dl>\n</li>\n</ul>\n<a name=\"setJMenuBar-javax.swing.JMenuBar-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setJMenuBar</h4>\n<pre>public&nbsp;void&nbsp;setJMenuBar(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuBar</a>&nbsp;bar)</pre>\n<div class=\"block\">Sets the JMenuBar at the top of the program window to be the given menu bar.\n If the menu bar passed is null, removes the menu bar.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setJMenuBar-javax.swing.JMenuBar-\" title=\"class or interface in javax.swing\">setJMenuBar</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setLayout-java.awt.LayoutManager-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setLayout</h4>\n<pre>public&nbsp;void&nbsp;setLayout(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/LayoutManager.html?is-external=true\" title=\"class or interface in java.awt\">LayoutManager</a>&nbsp;layout)</pre>\n<div class=\"block\">Sets the layout manager for the central region of the content pane.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setLayout-java.awt.LayoutManager-\" title=\"class or interface in javax.swing\">setLayout</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>layout</code> - The layout manager to use</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>setLayout(layout);</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"setLocation-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setLocation</h4>\n<pre>public&nbsp;void&nbsp;setLocation(double&nbsp;x,\n                        double&nbsp;y)</pre>\n<div class=\"block\">Sets the (x, y) location of the top-left corner of this program.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x</code> - the x location as a pixel offset (will be rounded down to nearest integer)</dd>\n<dd><code>y</code> - the y location as a pixel offset (will be rounded down to nearest integer)</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setLocation-acm.graphics.GPoint-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setLocation</h4>\n<pre>public&nbsp;void&nbsp;setLocation(<a href=\"../../acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a>&nbsp;point)</pre>\n<div class=\"block\">Sets the (x, y) location of the top-left corner of this program.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x</code> - the x location as a pixel offset (will be rounded down to nearest integer)</dd>\n<dd><code>y</code> - the y location as a pixel offset (will be rounded down to nearest integer)</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setOutputColor-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setOutputColor</h4>\n<pre>public&nbsp;void&nbsp;setOutputColor(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n<div class=\"block\">Sets the current output color used to display output on the console.\n If null is passed, uses a default of Color.BLACK.</div>\n</li>\n</ul>\n<a name=\"setOutputModel-acm.io.IOModel-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setOutputModel</h4>\n<pre>public&nbsp;void&nbsp;setOutputModel(acm.io.IOModel&nbsp;io)</pre>\n<div class=\"block\">Sets the output model associated with this program.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>io</code> - The <code>IOModel</code> object used as the output model</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>program.setOutputModel(io);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setParameter-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setParameter</h4>\n<pre>public&nbsp;void&nbsp;setParameter(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n                         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</pre>\n<div class=\"block\">Sets a new value for the named parameter.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>name</code> - The name of the parameter</dd>\n<dd><code>value</code> - The new value</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>setParameter(name, value);</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"setParameterTable-java.util.Map-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setParameterTable</h4>\n<pre>public&nbsp;void&nbsp;setParameterTable(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;ht)</pre>\n<div class=\"block\">Sets the parameter table for this program.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#setParameterTable-java.util.Map-\">setParameterTable</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>ht</code> - The parameter table</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>setParameterTable(ht);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setPauseScaleFactor-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setPauseScaleFactor</h4>\n<pre>public&nbsp;void&nbsp;setPauseScaleFactor(double&nbsp;factor)</pre>\n<div class=\"block\">Applies a scaling factor to the duration of pause() calls.\n Not to be called by students.</div>\n</li>\n</ul>\n<a name=\"setResizable-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setResizable</h4>\n<pre>public&nbsp;void&nbsp;setResizable(boolean&nbsp;resizable)</pre>\n<div class=\"block\">Sets the title of this program.  The title appears in the title bar\n when the program is running as an application.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>title</code> - The title for this program</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>setTitle(title);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setRightX-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setRightX</h4>\n<pre>public&nbsp;void&nbsp;setRightX(double&nbsp;x)</pre>\n<div class=\"block\">Sets the x location of the right edge of this program.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x</code> - the x location as a pixel offset (will be rounded down to nearest integer)</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setShowPixelGrid-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setShowPixelGrid</h4>\n<pre>public&nbsp;void&nbsp;setShowPixelGrid(boolean&nbsp;show)</pre>\n<div class=\"block\">Sets whether to display a grid of horizontal and vertical lines on this canvas\n for debugging, if this program contains a graphical canvas.</div>\n</li>\n</ul>\n<a name=\"setShowPixelInfo-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setShowPixelInfo</h4>\n<pre>public&nbsp;void&nbsp;setShowPixelInfo(boolean&nbsp;show)</pre>\n<div class=\"block\">Sets whether to display information on this canvas about the current pixel where\n the mouse pointer is resting in this program's graphical canvas, if this program\n contains a graphical canvas.\n Displays the current pixel's (x, y) coordinate and color.</div>\n</li>\n</ul>\n<a name=\"setSize-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setSize</h4>\n<pre>public&nbsp;void&nbsp;setSize(double&nbsp;width,\n                    double&nbsp;height)</pre>\n<div class=\"block\">Sets the width and height of this program.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>width</code> - the new width, in pixels (will be rounded down to nearest integer)</dd>\n<dd><code>height</code> - the new height, in pixels (will be rounded down to nearest integer)</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setStartupObject-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setStartupObject</h4>\n<pre>public&nbsp;void&nbsp;setStartupObject(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj)</pre>\n<div class=\"block\">Sets the object that is created when the program is started so that\n it can be retrieved later by <code>getStartupObject</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#setStartupObject-java.lang.Object-\">setStartupObject</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>obj</code> - The startup object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>setStartupObject(obj);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setTitle-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setTitle</h4>\n<pre>public&nbsp;void&nbsp;setTitle(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;title)</pre>\n<div class=\"block\">Sets the title of this program.  The title appears in the title bar\n when the program is running as an application.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#setTitle-java.lang.String-\">setTitle</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>title</code> - The title for this program</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>setTitle(title);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setWidth-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setWidth</h4>\n<pre>public&nbsp;void&nbsp;setWidth(double&nbsp;width)</pre>\n<div class=\"block\">Sets the width of this program without changing its height.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>width</code> - the new width, in pixels (will be rounded down to nearest integer)</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setX-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setX</h4>\n<pre>public&nbsp;void&nbsp;setX(double&nbsp;x)</pre>\n<div class=\"block\">Sets the x location of the top-left corner of this program.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x</code> - the x location as a pixel offset (will be rounded down to nearest integer)</dd>\n<dd><code>y</code> - the y location as a pixel offset (will be rounded down to nearest integer)</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setY-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setY</h4>\n<pre>public&nbsp;void&nbsp;setY(double&nbsp;y)</pre>\n<div class=\"block\">Sets the y location of the top-left corner of this program.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>y</code> - the y location as a pixel offset (will be rounded down to nearest integer)</dd>\n</dl>\n</li>\n</ul>\n<a name=\"showErrorMessage-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>showErrorMessage</h4>\n<pre>public&nbsp;void&nbsp;showErrorMessage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;msg)</pre>\n<div class=\"block\">Displays the error message in the standard output model.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>showErrorMessage</code>&nbsp;in interface&nbsp;<code>acm.io.IOModel</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>msg</code> - The error msg to be displayed</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>showErrorMessage(msg);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"start--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>start</h4>\n<pre>public final&nbsp;void&nbsp;start()</pre>\n<div class=\"block\">Starts the program when it is running in application mode.  Note that this\n overloads the <code>start</code> method in <code>Applet</code> and therefore\n will be called as part of applet startup.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#start--\">start</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#start--\" title=\"class or interface in java.applet\">start</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">Applet</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>program.start();</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"start-java.lang.String:A-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>start</h4>\n<pre>public&nbsp;void&nbsp;start(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</pre>\n<div class=\"block\">Starts the program using the specified argument list.\n Note: Java back-end C++ lib programs do not call start(), so any mandatory initialization\n code that affects the back-end and C++ probably should not go here.\n Java back-end C++ programs instead use the JavaBackEnd class's main() / run() methods\n to construct and initialize Program objects.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#start-java.lang.String:A-\">start</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>args</code> - An array of strings passed to the program</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>program.start(args);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"startAnimation--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>startAnimation</h4>\n<pre>public&nbsp;void&nbsp;startAnimation()</pre>\n<div class=\"block\">Sets the program into animated mode.\n The animation() method will be called repeatedly in the background.</div>\n</li>\n</ul>\n<a name=\"startHook--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>startHook</h4>\n<pre>protected&nbsp;void&nbsp;startHook()</pre>\n<div class=\"block\">Performs class-specific initialization for the program just before\n it starts.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"startRun--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>startRun</h4>\n<pre>protected&nbsp;void&nbsp;startRun()</pre>\n<div class=\"block\">Initializes and runs the run method.</div>\n</li>\n</ul>\n<a name=\"stateChanged-javax.swing.event.ChangeEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>stateChanged</h4>\n<pre>public&nbsp;void&nbsp;stateChanged(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeEvent</a>&nbsp;event)</pre>\n<div class=\"block\">Required method of ChangeListener interface.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true#stateChanged-javax.swing.event.ChangeEvent-\" title=\"class or interface in javax.swing.event\">stateChanged</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"stopAnimation--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>stopAnimation</h4>\n<pre>public&nbsp;void&nbsp;stopAnimation()</pre>\n<div class=\"block\">Sets the program into non-animated (default) mode.\n The animation() method will no longer be called repeatedly in the background.</div>\n</li>\n</ul>\n<a name=\"textValueChanged-java.awt.event.TextEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>textValueChanged</h4>\n<pre>public&nbsp;void&nbsp;textValueChanged(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/TextEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">TextEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Required method of TextListener interface.\n Invoked when the value of the text has changed.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/TextListener.html?is-external=true#textValueChanged-java.awt.event.TextEvent-\" title=\"class or interface in java.awt.event\">textValueChanged</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/TextListener.html?is-external=true\" title=\"class or interface in java.awt.event\">TextListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"validate--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>validate</h4>\n<pre>public&nbsp;void&nbsp;validate()</pre>\n<div class=\"block\">Forwards validate to the content pane.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validate--\" title=\"class or interface in java.awt\">validate</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>validate();</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"windowActivated-java.awt.event.WindowEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>windowActivated</h4>\n<pre>public&nbsp;void&nbsp;windowActivated(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;event)</pre>\n<div class=\"block\">Required empty method of WindowListener interface.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true#windowActivated-java.awt.event.WindowEvent-\" title=\"class or interface in java.awt.event\">windowActivated</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"windowClosed-java.awt.event.WindowEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>windowClosed</h4>\n<pre>public&nbsp;void&nbsp;windowClosed(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;event)</pre>\n<div class=\"block\">Required empty method of WindowListener interface.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true#windowClosed-java.awt.event.WindowEvent-\" title=\"class or interface in java.awt.event\">windowClosed</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"windowClosing-java.awt.event.WindowEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>windowClosing</h4>\n<pre>public&nbsp;void&nbsp;windowClosing(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;event)</pre>\n<div class=\"block\">Required empty method of WindowListener interface.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true#windowClosing-java.awt.event.WindowEvent-\" title=\"class or interface in java.awt.event\">windowClosing</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"windowDeactivated-java.awt.event.WindowEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>windowDeactivated</h4>\n<pre>public&nbsp;void&nbsp;windowDeactivated(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;event)</pre>\n<div class=\"block\">Required empty method of WindowListener interface.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true#windowDeactivated-java.awt.event.WindowEvent-\" title=\"class or interface in java.awt.event\">windowDeactivated</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"windowDeiconified-java.awt.event.WindowEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>windowDeiconified</h4>\n<pre>public&nbsp;void&nbsp;windowDeiconified(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;event)</pre>\n<div class=\"block\">Required empty method of WindowListener interface.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true#windowDeiconified-java.awt.event.WindowEvent-\" title=\"class or interface in java.awt.event\">windowDeiconified</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"windowGainedFocus-java.awt.event.WindowEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>windowGainedFocus</h4>\n<pre>public&nbsp;void&nbsp;windowGainedFocus(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Required empty method of WindowFocusListener interface.\n Invoked when the Window is set to be the focused Window, which means that the Window, or one of its subcomponents, will receive keyboard events.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowFocusListener.html?is-external=true#windowGainedFocus-java.awt.event.WindowEvent-\" title=\"class or interface in java.awt.event\">windowGainedFocus</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowFocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowFocusListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"windowIconified-java.awt.event.WindowEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>windowIconified</h4>\n<pre>public&nbsp;void&nbsp;windowIconified(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;event)</pre>\n<div class=\"block\">Required empty method of WindowListener interface.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true#windowIconified-java.awt.event.WindowEvent-\" title=\"class or interface in java.awt.event\">windowIconified</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"windowLostFocus-java.awt.event.WindowEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>windowLostFocus</h4>\n<pre>public&nbsp;void&nbsp;windowLostFocus(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Required empty method of WindowFocusListener interface.\n Invoked when the Window is no longer the focused Window, which means that keyboard events will no longer be delivered to the Window or any of its subcomponents.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowFocusListener.html?is-external=true#windowLostFocus-java.awt.event.WindowEvent-\" title=\"class or interface in java.awt.event\">windowLostFocus</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowFocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowFocusListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"windowOpened-java.awt.event.WindowEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>windowOpened</h4>\n<pre>public&nbsp;void&nbsp;windowOpened(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;event)</pre>\n<div class=\"block\">Required empty method of WindowListener interface.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true#windowOpened-java.awt.event.WindowEvent-\" title=\"class or interface in java.awt.event\">windowOpened</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"windowStateChanged-java.awt.event.WindowEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>windowStateChanged</h4>\n<pre>public&nbsp;void&nbsp;windowStateChanged(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Required empty method of WindowStateListener interface.\n Invoked when window state is changed.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowStateListener.html?is-external=true#windowStateChanged-java.awt.event.WindowEvent-\" title=\"class or interface in java.awt.event\">windowStateChanged</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowStateListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowStateListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"main-java.lang.String:A-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>main</h4>\n<pre>public static&nbsp;void&nbsp;main(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</pre>\n<div class=\"block\">Every application must either contain a \"Main-Class\" entry in its\n manifest file or include a main method that looks like this, where\n <code>MyClass</code> is the name of the program class:\n\n <p><pre><code>\n &nbsp;    public static void main(String[] args) {\n &nbsp;       new MyClass().start();\n &nbsp;    }\n </code></pre>\n\n <p>If the program needs the command line arguments, the <code>args</code>\n array can be passed to the <code>start</code> method and then retrieved\n using the <code>getArgumentArray</code> method.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>args</code> - An array of string arguments</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/program/Program.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Program.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JApplet\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/program/ProgramInterface.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:08 PDT 2017 -->\n<title>ProgramInterface</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"ProgramInterface\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":6,\"i1\":6,\"i2\":6,\"i3\":6,\"i4\":6,\"i5\":6,\"i6\":6,\"i7\":6,\"i8\":6,\"i9\":6,\"i10\":6,\"i11\":6,\"i12\":6,\"i13\":6,\"i14\":6,\"i15\":6};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],4:[\"t3\",\"Abstract Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/program/ProgramMenuBar.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/program/ProgramInterface.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ProgramInterface.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.program</div>\n<h2 title=\"Interface ProgramInterface\" class=\"title\">Interface ProgramInterface</h2>\n</div>\n<div class=\"contentContainer\">\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Known Subinterfaces:</dt>\n<dd><a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></dd>\n</dl>\n<dl>\n<dt>All Known Implementing Classes:</dt>\n<dd><a href=\"../../acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a>, <a href=\"../../acm/program/AsciiArtProgram.html\" title=\"class in acm.program\">AsciiArtProgram</a>, <a href=\"../../acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a>, <a href=\"../../acm/program/ConsoleProgram.html\" title=\"class in acm.program\">ConsoleProgram</a>, <a href=\"../../acm/program/DialogProgram.html\" title=\"class in acm.program\">DialogProgram</a>, <a href=\"../../acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a>, <a href=\"../../acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a>, <a href=\"../../stanford/karel/HeadlessKarel.html\" title=\"class in stanford.karel\">HeadlessKarel</a>, <a href=\"../../stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\">HeadlessSuperKarel</a>, <a href=\"../../stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a>, <a href=\"../../stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a>, <a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a>, <a href=\"../../stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\">SuperKarel</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public interface <span class=\"typeNameLabel\">ProgramInterface</span></pre>\n<div class=\"block\">This interface contains all methods that Program classes are required to implement.</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramInterface.html#CENTER\">CENTER</a></span></code>\n<div class=\"block\">Constant specifying the center of the container</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramInterface.html#EAST\">EAST</a></span></code>\n<div class=\"block\">Constant specifying the east edge of the container</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramInterface.html#NORTH\">NORTH</a></span></code>\n<div class=\"block\">Constant specifying the north edge of the container</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramInterface.html#SOUTH\">SOUTH</a></span></code>\n<div class=\"block\">Constant specifying the south edge of the container</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramInterface.html#WEST\">WEST</a></span></code>\n<div class=\"block\">Constant specifying the west edge of the container</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t3\" class=\"tableTab\"><span><a href=\"javascript:show(4);\">Abstract Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramInterface.html#exit--\">exit</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramInterface.html#getTitle--\">getTitle</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramInterface.html#init--\">init</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramInterface.html#pause-double-\">pause</a></span>(double&nbsp;milliseconds)</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramInterface.html#print-java.lang.Object-\">print</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramInterface.html#print-java.lang.String-\">print</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramInterface.html#printf-java.lang.String-java.lang.Object...-\">printf</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;format,\n      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>...&nbsp;args)</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramInterface.html#println--\">println</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramInterface.html#println-java.lang.Object-\">println</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramInterface.html#println-java.lang.String-\">println</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramInterface.html#run--\">run</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramInterface.html#setParameterTable-java.util.Map-\">setParameterTable</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;table)</code>&nbsp;</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramInterface.html#setStartupObject-java.lang.Object-\">setStartupObject</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj)</code>&nbsp;</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramInterface.html#setTitle-java.lang.String-\">setTitle</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;title)</code>&nbsp;</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramInterface.html#start--\">start</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramInterface.html#start-java.lang.String:A-\">start</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"CENTER\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>CENTER</h4>\n<pre>static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> CENTER</pre>\n<div class=\"block\">Constant specifying the center of the container</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramInterface.CENTER\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"EAST\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>EAST</h4>\n<pre>static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> EAST</pre>\n<div class=\"block\">Constant specifying the east edge of the container</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramInterface.EAST\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"NORTH\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>NORTH</h4>\n<pre>static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> NORTH</pre>\n<div class=\"block\">Constant specifying the north edge of the container</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramInterface.NORTH\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"SOUTH\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SOUTH</h4>\n<pre>static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> SOUTH</pre>\n<div class=\"block\">Constant specifying the south edge of the container</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramInterface.SOUTH\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"WEST\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>WEST</h4>\n<pre>static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> WEST</pre>\n<div class=\"block\">Constant specifying the west edge of the container</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramInterface.WEST\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"exit--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>exit</h4>\n<pre>void&nbsp;exit()</pre>\n</li>\n</ul>\n<a name=\"getTitle--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getTitle</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getTitle()</pre>\n</li>\n</ul>\n<a name=\"init--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>init</h4>\n<pre>void&nbsp;init()</pre>\n</li>\n</ul>\n<a name=\"pause-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>pause</h4>\n<pre>void&nbsp;pause(double&nbsp;milliseconds)</pre>\n</li>\n</ul>\n<a name=\"print-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>void&nbsp;print(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"print-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>void&nbsp;print(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"printf-java.lang.String-java.lang.Object...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>printf</h4>\n<pre>void&nbsp;printf(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;format,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>...&nbsp;args)</pre>\n</li>\n</ul>\n<a name=\"println--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>void&nbsp;println()</pre>\n</li>\n</ul>\n<a name=\"println-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>void&nbsp;println(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"println-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>void&nbsp;println(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"run--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>run</h4>\n<pre>void&nbsp;run()</pre>\n</li>\n</ul>\n<a name=\"setParameterTable-java.util.Map-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setParameterTable</h4>\n<pre>void&nbsp;setParameterTable(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;table)</pre>\n</li>\n</ul>\n<a name=\"setStartupObject-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setStartupObject</h4>\n<pre>void&nbsp;setStartupObject(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj)</pre>\n</li>\n</ul>\n<a name=\"setTitle-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setTitle</h4>\n<pre>void&nbsp;setTitle(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;title)</pre>\n</li>\n</ul>\n<a name=\"start--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>start</h4>\n<pre>void&nbsp;start()</pre>\n</li>\n</ul>\n<a name=\"start-java.lang.String:A-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>start</h4>\n<pre>void&nbsp;start(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/program/ProgramMenuBar.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/program/ProgramInterface.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ProgramInterface.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/program/ProgramMenuBar.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:08 PDT 2017 -->\n<title>ProgramMenuBar</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"ProgramMenuBar\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":10,\"i16\":10,\"i17\":10,\"i18\":10,\"i19\":10,\"i20\":10,\"i21\":10,\"i22\":10,\"i23\":10,\"i24\":10,\"i25\":10,\"i26\":10,\"i27\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/program/ProgramStartupFlags.html\" title=\"interface in acm.program\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/program/ProgramMenuBar.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ProgramMenuBar.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JMenuBar\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.program</div>\n<h2 title=\"Class ProgramMenuBar\" class=\"title\">Class ProgramMenuBar</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Component</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Container</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JComponent</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JMenuBar</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.program.ProgramMenuBar</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuItem</a>&gt;, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/MenuElement.html?is-external=true\" title=\"class or interface in javax.swing\">MenuElement</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">ProgramMenuBar</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuBar</a>\nimplements <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuItem</a>&gt;</pre>\n<div class=\"block\">This class standardizes the menu bars used in the ACM program package. The\n fundamental principles behind the design of this package are:\n\n <p>\n <ol>\n <li>The most common menu operations (including, for example, the standard\n editing operations <b>cut</b>, <b>copy</b>, and <b>paste</b>) should always\n be available and require no action on the part of the programmer.\n <p>\n <li>It should be easy to extend the menu bar without interfering with the\n standard operations.\n <p>\n <li>Menu bars should work in a familiar way on each of the major platforms.\n In particular, Macintosh users expect there to be a single menu bar at the\n top of the screen rather than a menu bar in each window.\n </ol>\n\n <p>\n These goals turn out to be difficult to achieve simultaneously. In\n particular, supporting both Macintosh-style and Windows-style menu bars\n requires creating a parallel <code>MenuBar</code> structure behind the\n underlying <code>JMenuBar</code>, which accounts for much of the complexity\n in this implementation.\n\n <p>\n <b>Using the <code>ProgramMenuBar</code> class</b>\n\n The <code>ProgramMenuBar</code> class supports two distinct disciplines for\n listening for menu actions:\n\n <p>\n <ul>\n <li><b>Focused items</b> correspond to actions that are relevant only to the\n component with the keyboard focus (such as <b>Cut</b>, <b>Copy</b>, and\n <b>Paste</b>). Clients create focused items by calling\n <a href=\"#createFocusedItem(String)\"><code>createFocusedItem</code></a>.\n Activating a focused item passes an action event to the listener set by\n calling <a href=\"#setFocusedListener(ActionListener)\">\n <code>setFocusedListener</code></a>, which should be called whenever a\n component interested in responding to menu actions gains the keyboard focus.\n <p>\n <li><b>Program items</b> correspond to actions that are relevant throughout\n the lifetime of the program (such as <b>Quit</b> and <b>Print</b>). Clients\n create program items by calling <a href=\"#createProgramItem(String)\">\n <code>createProgramItem</code></a>. Activating a program item passes an\n action event to the <code>menuAction</code> method in the\n <code>Program</code> object that created the menu bar.\n </ul></div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#acm.program.ProgramMenuBar\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JMenuBar\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuBar</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.AccessibleJMenuBar.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuBar.AccessibleJMenuBar</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.AccessibleJComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent.AccessibleJComponent</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.AccessibleAWTContainer.html?is-external=true\" title=\"class or interface in java.awt\">Container.AccessibleAWTContainer</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.AccessibleAWTComponent.html?is-external=true\" title=\"class or interface in java.awt\">Component.AccessibleAWTComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BaselineResizeBehavior.html?is-external=true\" title=\"class or interface in java.awt\">Component.BaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BltBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.BltBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.FlipBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.FlipBufferStrategy</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#ALT_F4\">ALT_F4</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#COMMAND_A\">COMMAND_A</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#COMMAND_B\">COMMAND_B</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#COMMAND_C\">COMMAND_C</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#COMMAND_END\">COMMAND_END</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#COMMAND_EQUALS\">COMMAND_EQUALS</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#COMMAND_HOME\">COMMAND_HOME</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#COMMAND_I\">COMMAND_I</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#COMMAND_L\">COMMAND_L</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#COMMAND_MINUS\">COMMAND_MINUS</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#COMMAND_P\">COMMAND_P</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#COMMAND_PLUS\">COMMAND_PLUS</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#COMMAND_Q\">COMMAND_Q</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#COMMAND_S\">COMMAND_S</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#COMMAND_SHIFT_MINUS\">COMMAND_SHIFT_MINUS</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#COMMAND_SHIFT_PLUS\">COMMAND_SHIFT_PLUS</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#COMMAND_V\">COMMAND_V</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#COMMAND_W\">COMMAND_W</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#COMMAND_X\">COMMAND_X</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#CTRL_A\">CTRL_A</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#CTRL_B\">CTRL_B</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#CTRL_C\">CTRL_C</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#CTRL_END\">CTRL_END</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#CTRL_EQUALS\">CTRL_EQUALS</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#CTRL_HOME\">CTRL_HOME</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#CTRL_I\">CTRL_I</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#CTRL_L\">CTRL_L</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#CTRL_MINUS\">CTRL_MINUS</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#CTRL_P\">CTRL_P</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#CTRL_PLUS\">CTRL_PLUS</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#CTRL_Q\">CTRL_Q</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#CTRL_S\">CTRL_S</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#CTRL_SHIFT_MINUS\">CTRL_SHIFT_MINUS</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#CTRL_SHIFT_PLUS\">CTRL_SHIFT_PLUS</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#CTRL_V\">CTRL_V</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#CTRL_W\">CTRL_W</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#CTRL_X\">CTRL_X</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#DOWN_ARROW\">DOWN_ARROW</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#F1\">F1</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_ABOUT\">MENU_ITEM_TEXT_ABOUT</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_ANTI_ALIASING\">MENU_ITEM_TEXT_ANTI_ALIASING</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_BACKGROUND_COLOR\">MENU_ITEM_TEXT_BACKGROUND_COLOR</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_CHECK_FOR_UPDATES\">MENU_ITEM_TEXT_CHECK_FOR_UPDATES</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_CLEAR_CONSOLE\">MENU_ITEM_TEXT_CLEAR_CONSOLE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_COMPARE_OUTPUT\">MENU_ITEM_TEXT_COMPARE_OUTPUT</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_COPY\">MENU_ITEM_TEXT_COPY</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_CUT\">MENU_ITEM_TEXT_CUT</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_EXPORT_APPLET\">MENU_ITEM_TEXT_EXPORT_APPLET</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_FONT\">MENU_ITEM_TEXT_FONT</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_FOREGROUND_COLOR\">MENU_ITEM_TEXT_FOREGROUND_COLOR</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_INTERACTIVE\">MENU_ITEM_TEXT_INTERACTIVE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_LOAD_INPUT_SCRIPT\">MENU_ITEM_TEXT_LOAD_INPUT_SCRIPT</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_MSKAREL\">MENU_ITEM_TEXT_MSKAREL</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_PASTE\">MENU_ITEM_TEXT_PASTE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_PRINT\">MENU_ITEM_TEXT_PRINT</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_PRINT_CONSOLE\">MENU_ITEM_TEXT_PRINT_CONSOLE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_QUIT\">MENU_ITEM_TEXT_QUIT</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_SAVE\">MENU_ITEM_TEXT_SAVE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_SAVE_AS\">MENU_ITEM_TEXT_SAVE_AS</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_SCRIPT\">MENU_ITEM_TEXT_SCRIPT</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_SELECT_ALL\">MENU_ITEM_TEXT_SELECT_ALL</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_SHOW_PIXEL_GRID\">MENU_ITEM_TEXT_SHOW_PIXEL_GRID</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_SHOW_PIXEL_INFO\">MENU_ITEM_TEXT_SHOW_PIXEL_INFO</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_SUBMIT_PROJECT\">MENU_ITEM_TEXT_SUBMIT_PROJECT</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#PGDN\">PGDN</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#PGUP\">PGUP</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#SHIFT\">SHIFT</a></span></code>\n<div class=\"block\">Constant indicating that an accelerator key requires the SHIFT modifier.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#UP_ARROW\">UP_ARROW</a></span></code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#listenerList\" title=\"class or interface in javax.swing\">listenerList</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#TOOL_TIP_TEXT_KEY\" title=\"class or interface in javax.swing\">TOOL_TIP_TEXT_KEY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#ui\" title=\"class or interface in javax.swing\">ui</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#UNDEFINED_CONDITION\" title=\"class or interface in javax.swing\">UNDEFINED_CONDITION</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_ANCESTOR_OF_FOCUSED_COMPONENT\" title=\"class or interface in javax.swing\">WHEN_ANCESTOR_OF_FOCUSED_COMPONENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_FOCUSED\" title=\"class or interface in javax.swing\">WHEN_FOCUSED</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_IN_FOCUSED_WINDOW\" title=\"class or interface in javax.swing\">WHEN_IN_FOCUSED_WINDOW</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#accessibleContext\" title=\"class or interface in java.awt\">accessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#BOTTOM_ALIGNMENT\" title=\"class or interface in java.awt\">BOTTOM_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#CENTER_ALIGNMENT\" title=\"class or interface in java.awt\">CENTER_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#LEFT_ALIGNMENT\" title=\"class or interface in java.awt\">LEFT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#RIGHT_ALIGNMENT\" title=\"class or interface in java.awt\">RIGHT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#TOP_ALIGNMENT\" title=\"class or interface in java.awt\">TOP_ALIGNMENT</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.image.ImageObserver\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ABORT\" title=\"class or interface in java.awt.image\">ABORT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ALLBITS\" title=\"class or interface in java.awt.image\">ALLBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ERROR\" title=\"class or interface in java.awt.image\">ERROR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#FRAMEBITS\" title=\"class or interface in java.awt.image\">FRAMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#HEIGHT\" title=\"class or interface in java.awt.image\">HEIGHT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#PROPERTIES\" title=\"class or interface in java.awt.image\">PROPERTIES</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#SOMEBITS\" title=\"class or interface in java.awt.image\">SOMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#WIDTH\" title=\"class or interface in java.awt.image\">WIDTH</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#ProgramMenuBar-acm.program.Program-\">ProgramMenuBar</a></span>(<a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a>&nbsp;owner)</code>\n<div class=\"block\">Creates an empty <code>ProgramMenuBar</code>.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#addConsoleOptionsMenu--\">addConsoleOptionsMenu</a></span>()</code>\n<div class=\"block\">Installs the <code>Options</code> menu for console programs.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#addEditMenu--\">addEditMenu</a></span>()</code>\n<div class=\"block\">Installs the <code>Edit</code> menu.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#addEditMenuItems-javax.swing.JMenu-\">addEditMenuItems</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenu.html?is-external=true\" title=\"class or interface in javax.swing\">JMenu</a>&nbsp;menu)</code>\n<div class=\"block\">Adds the standard <code>Edit</code> items to the specified menu.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#addFileMenu--\">addFileMenu</a></span>()</code>\n<div class=\"block\">Installs the <code>File</code> menu.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#addFileMenuItems-javax.swing.JMenu-\">addFileMenuItems</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenu.html?is-external=true\" title=\"class or interface in javax.swing\">JMenu</a>&nbsp;menu)</code>\n<div class=\"block\">Adds the standard <code>File</code> items to the specified menu.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#addGraphicsOptionsMenu--\">addGraphicsOptionsMenu</a></span>()</code>\n<div class=\"block\">Installs the <code>Options</code> menu for graphics programs.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#addHelpMenu--\">addHelpMenu</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#addKarelOptionsMenu--\">addKarelOptionsMenu</a></span>()</code>\n<div class=\"block\">Installs the <code>Options</code> menu for Karel programs.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#addMenus--\">addMenus</a></span>()</code>\n<div class=\"block\">Adds menus to the menu bar.</div>\n</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuItem</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#createFocusedItem-java.lang.String-\">createFocusedItem</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;action)</code>\n<div class=\"block\">Creates a focused menu item with the specified action command.</div>\n</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuItem</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#createFocusedItem-java.lang.String-int-\">createFocusedItem</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;action,\n                 int&nbsp;key)</code>\n<div class=\"block\">Creates a focused menu item with the specified action command and\n accelerator key.</div>\n</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuItem</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#createFocusedItem-java.lang.String-int-javax.swing.KeyStroke-\">createFocusedItem</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;action,\n                 int&nbsp;key,\n                 <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a>&nbsp;keystroke)</code>&nbsp;</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuItem</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#createFocusedItem-java.lang.String-int-javax.swing.KeyStroke-boolean-\">createFocusedItem</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;action,\n                 int&nbsp;key,\n                 <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a>&nbsp;keystroke,\n                 boolean&nbsp;shouldSetAccelerator)</code>&nbsp;</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuItem</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#createProgramItem-java.lang.String-\">createProgramItem</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;action)</code>\n<div class=\"block\">Creates a program menu item with the specified action command.</div>\n</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuItem</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#createProgramItem-java.lang.String-int-\">createProgramItem</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;action,\n                 int&nbsp;key)</code>&nbsp;</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuItem</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#createProgramItem-java.lang.String-int-javax.swing.KeyStroke-\">createProgramItem</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;action,\n                 int&nbsp;key,\n                 <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a>&nbsp;keystroke)</code>\n<div class=\"block\">Creates a program menu item with the specified action command and\n accelerator key.</div>\n</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuItem</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#createStandardItem-java.lang.String-int-\">createStandardItem</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;action,\n                  int&nbsp;mnemonic)</code>\n<div class=\"block\">Creates one of the standard menu items implemented by the\n <code>ProgramMenuBar</code> class.</div>\n</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuItem</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#createStandardItem-java.lang.String-int-javax.swing.KeyStroke-\">createStandardItem</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;action,\n                  int&nbsp;mnemonic,\n                  <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a>&nbsp;keystroke)</code>&nbsp;</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#fireAccelerator-java.awt.event.KeyEvent-\">fireAccelerator</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyEvent</a>&nbsp;e)</code>\n<div class=\"block\">Triggers the accelerator associated with the keystroke implied by the key\n event.</div>\n</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#fireActionListeners-java.awt.event.ActionEvent-\">fireActionListeners</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;e)</code>\n<div class=\"block\">Fires the action listeners responsible for handling the specified event.</div>\n</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>&lt;T extends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuItem</a>&gt;<br>T</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#getMenuItem-java.lang.String-\">getMenuItem</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</code>&nbsp;</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#getProgram--\">getProgram</a></span>()</code>\n<div class=\"block\">Returns the <code>Program</code> object associated with this menu.</div>\n</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#install-java.awt.Component-\">install</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp)</code>\n<div class=\"block\">Installs the menu bar in the <code>JFrame</code> or <code>Program</code>\n object enclosing the component <code>comp</code>.</div>\n</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#isFocusedItem-javax.swing.JMenuItem-\">isFocusedItem</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuItem</a>&nbsp;item)</code>\n<div class=\"block\">Returns <code>true</code> if the item is a focused item.</div>\n</td>\n</tr>\n<tr id=\"i24\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true\" title=\"class or interface in java.util\">Iterator</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuItem</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#iterator--\">iterator</a></span>()</code>\n<div class=\"block\">Returns an iterator that enumerates the individual menu items under the\n control of the menu bar.</div>\n</td>\n</tr>\n<tr id=\"i25\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#setAccelerator-javax.swing.JMenuItem-int-\">setAccelerator</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuItem</a>&nbsp;item,\n              int&nbsp;key)</code>\n<div class=\"block\">Sets the accelerator for the item as appropriate to the operating system\n conventions.</div>\n</td>\n</tr>\n<tr id=\"i26\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#setEnabled-java.lang.String-boolean-\">setEnabled</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;action,\n          boolean&nbsp;flag)</code>\n<div class=\"block\">Enables or disables any menu items that generate the specified action\n command.</div>\n</td>\n</tr>\n<tr id=\"i27\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramMenuBar.html#setFocusedListener-java.awt.event.ActionListener-\">setFocusedListener</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener)</code>\n<div class=\"block\">Registers a listener that responds while the caller holds the keyboard\n focus.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JMenuBar\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuBar</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#add-javax.swing.JMenu-\" title=\"class or interface in javax.swing\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#addNotify--\" title=\"class or interface in javax.swing\">addNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#getAccessibleContext--\" title=\"class or interface in javax.swing\">getAccessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#getComponent--\" title=\"class or interface in javax.swing\">getComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#getComponentAtIndex-int-\" title=\"class or interface in javax.swing\">getComponentAtIndex</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#getComponentIndex-java.awt.Component-\" title=\"class or interface in javax.swing\">getComponentIndex</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#getHelpMenu--\" title=\"class or interface in javax.swing\">getHelpMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#getMargin--\" title=\"class or interface in javax.swing\">getMargin</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#getMenu-int-\" title=\"class or interface in javax.swing\">getMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#getMenuCount--\" title=\"class or interface in javax.swing\">getMenuCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#getSelectionModel--\" title=\"class or interface in javax.swing\">getSelectionModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#getSubElements--\" title=\"class or interface in javax.swing\">getSubElements</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#getUI--\" title=\"class or interface in javax.swing\">getUI</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#getUIClassID--\" title=\"class or interface in javax.swing\">getUIClassID</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#isBorderPainted--\" title=\"class or interface in javax.swing\">isBorderPainted</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#isSelected--\" title=\"class or interface in javax.swing\">isSelected</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#menuSelectionChanged-boolean-\" title=\"class or interface in javax.swing\">menuSelectionChanged</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#paintBorder-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#paramString--\" title=\"class or interface in javax.swing\">paramString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#processKeyBinding-javax.swing.KeyStroke-java.awt.event.KeyEvent-int-boolean-\" title=\"class or interface in javax.swing\">processKeyBinding</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#processKeyEvent-java.awt.event.KeyEvent-javax.swing.MenuElement:A-javax.swing.MenuSelectionManager-\" title=\"class or interface in javax.swing\">processKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#processMouseEvent-java.awt.event.MouseEvent-javax.swing.MenuElement:A-javax.swing.MenuSelectionManager-\" title=\"class or interface in javax.swing\">processMouseEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#removeNotify--\" title=\"class or interface in javax.swing\">removeNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#setBorderPainted-boolean-\" title=\"class or interface in javax.swing\">setBorderPainted</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#setHelpMenu-javax.swing.JMenu-\" title=\"class or interface in javax.swing\">setHelpMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#setMargin-java.awt.Insets-\" title=\"class or interface in javax.swing\">setMargin</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#setSelected-java.awt.Component-\" title=\"class or interface in javax.swing\">setSelected</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#setSelectionModel-javax.swing.SingleSelectionModel-\" title=\"class or interface in javax.swing\">setSelectionModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#setUI-javax.swing.plaf.MenuBarUI-\" title=\"class or interface in javax.swing\">setUI</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#updateUI--\" title=\"class or interface in javax.swing\">updateUI</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addAncestorListener-javax.swing.event.AncestorListener-\" title=\"class or interface in javax.swing\">addAncestorListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addVetoableChangeListener-java.beans.VetoableChangeListener-\" title=\"class or interface in javax.swing\">addVetoableChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#computeVisibleRect-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">computeVisibleRect</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#contains-int-int-\" title=\"class or interface in javax.swing\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#createToolTip--\" title=\"class or interface in javax.swing\">createToolTip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#disable--\" title=\"class or interface in javax.swing\">disable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#enable--\" title=\"class or interface in javax.swing\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-boolean-boolean-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-char-char-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-int-int-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#fireVetoableChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in javax.swing\">fireVetoableChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getActionForKeyStroke-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">getActionForKeyStroke</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getActionMap--\" title=\"class or interface in javax.swing\">getActionMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAlignmentX--\" title=\"class or interface in javax.swing\">getAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAlignmentY--\" title=\"class or interface in javax.swing\">getAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAncestorListeners--\" title=\"class or interface in javax.swing\">getAncestorListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAutoscrolls--\" title=\"class or interface in javax.swing\">getAutoscrolls</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBaseline-int-int-\" title=\"class or interface in javax.swing\">getBaseline</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBaselineResizeBehavior--\" title=\"class or interface in javax.swing\">getBaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBorder--\" title=\"class or interface in javax.swing\">getBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBounds-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getClientProperty-java.lang.Object-\" title=\"class or interface in javax.swing\">getClientProperty</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getComponentGraphics-java.awt.Graphics-\" title=\"class or interface in javax.swing\">getComponentGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getComponentPopupMenu--\" title=\"class or interface in javax.swing\">getComponentPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getConditionForKeyStroke-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">getConditionForKeyStroke</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getDebugGraphicsOptions--\" title=\"class or interface in javax.swing\">getDebugGraphicsOptions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getDefaultLocale--\" title=\"class or interface in javax.swing\">getDefaultLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getFontMetrics-java.awt.Font-\" title=\"class or interface in javax.swing\">getFontMetrics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getGraphics--\" title=\"class or interface in javax.swing\">getGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getHeight--\" title=\"class or interface in javax.swing\">getHeight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInheritsPopupMenu--\" title=\"class or interface in javax.swing\">getInheritsPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputMap--\" title=\"class or interface in javax.swing\">getInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputMap-int-\" title=\"class or interface in javax.swing\">getInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputVerifier--\" title=\"class or interface in javax.swing\">getInputVerifier</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInsets--\" title=\"class or interface in javax.swing\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInsets-java.awt.Insets-\" title=\"class or interface in javax.swing\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getListeners-java.lang.Class-\" title=\"class or interface in javax.swing\">getListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getLocation-java.awt.Point-\" title=\"class or interface in javax.swing\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getMaximumSize--\" title=\"class or interface in javax.swing\">getMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getMinimumSize--\" title=\"class or interface in javax.swing\">getMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getNextFocusableComponent--\" title=\"class or interface in javax.swing\">getNextFocusableComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getPopupLocation-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">getPopupLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getPreferredSize--\" title=\"class or interface in javax.swing\">getPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getRegisteredKeyStrokes--\" title=\"class or interface in javax.swing\">getRegisteredKeyStrokes</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getRootPane--\" title=\"class or interface in javax.swing\">getRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getToolTipLocation-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">getToolTipLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getToolTipText--\" title=\"class or interface in javax.swing\">getToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getToolTipText-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">getToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getTopLevelAncestor--\" title=\"class or interface in javax.swing\">getTopLevelAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getTransferHandler--\" title=\"class or interface in javax.swing\">getTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVerifyInputWhenFocusTarget--\" title=\"class or interface in javax.swing\">getVerifyInputWhenFocusTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVetoableChangeListeners--\" title=\"class or interface in javax.swing\">getVetoableChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVisibleRect--\" title=\"class or interface in javax.swing\">getVisibleRect</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getWidth--\" title=\"class or interface in javax.swing\">getWidth</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getX--\" title=\"class or interface in javax.swing\">getX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getY--\" title=\"class or interface in javax.swing\">getY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#grabFocus--\" title=\"class or interface in javax.swing\">grabFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#hide--\" title=\"class or interface in javax.swing\">hide</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isDoubleBuffered--\" title=\"class or interface in javax.swing\">isDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isLightweightComponent-java.awt.Component-\" title=\"class or interface in javax.swing\">isLightweightComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isManagingFocus--\" title=\"class or interface in javax.swing\">isManagingFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isOpaque--\" title=\"class or interface in javax.swing\">isOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isOptimizedDrawingEnabled--\" title=\"class or interface in javax.swing\">isOptimizedDrawingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingForPrint--\" title=\"class or interface in javax.swing\">isPaintingForPrint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingOrigin--\" title=\"class or interface in javax.swing\">isPaintingOrigin</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingTile--\" title=\"class or interface in javax.swing\">isPaintingTile</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isRequestFocusEnabled--\" title=\"class or interface in javax.swing\">isRequestFocusEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isValidateRoot--\" title=\"class or interface in javax.swing\">isValidateRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paint-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintChildren-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintChildren</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintComponent-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintImmediately-int-int-int-int-\" title=\"class or interface in javax.swing\">paintImmediately</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintImmediately-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">paintImmediately</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#print-java.awt.Graphics-\" title=\"class or interface in javax.swing\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printAll-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printBorder-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printChildren-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printChildren</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printComponent-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processComponentKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in javax.swing\">processComponentKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in javax.swing\">processKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processMouseEvent-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">processMouseEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processMouseMotionEvent-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">processMouseMotionEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#putClientProperty-java.lang.Object-java.lang.Object-\" title=\"class or interface in javax.swing\">putClientProperty</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#registerKeyboardAction-java.awt.event.ActionListener-javax.swing.KeyStroke-int-\" title=\"class or interface in javax.swing\">registerKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#registerKeyboardAction-java.awt.event.ActionListener-java.lang.String-javax.swing.KeyStroke-int-\" title=\"class or interface in javax.swing\">registerKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#removeAncestorListener-javax.swing.event.AncestorListener-\" title=\"class or interface in javax.swing\">removeAncestorListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#removeVetoableChangeListener-java.beans.VetoableChangeListener-\" title=\"class or interface in javax.swing\">removeVetoableChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#repaint-long-int-int-int-int-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#repaint-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestDefaultFocus--\" title=\"class or interface in javax.swing\">requestDefaultFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocus--\" title=\"class or interface in javax.swing\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocus-boolean-\" title=\"class or interface in javax.swing\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocusInWindow--\" title=\"class or interface in javax.swing\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocusInWindow-boolean-\" title=\"class or interface in javax.swing\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#resetKeyboardActions--\" title=\"class or interface in javax.swing\">resetKeyboardActions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#reshape-int-int-int-int-\" title=\"class or interface in javax.swing\">reshape</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#revalidate--\" title=\"class or interface in javax.swing\">revalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#scrollRectToVisible-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">scrollRectToVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setActionMap-javax.swing.ActionMap-\" title=\"class or interface in javax.swing\">setActionMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAlignmentX-float-\" title=\"class or interface in javax.swing\">setAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAlignmentY-float-\" title=\"class or interface in javax.swing\">setAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAutoscrolls-boolean-\" title=\"class or interface in javax.swing\">setAutoscrolls</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setBackground-java.awt.Color-\" title=\"class or interface in javax.swing\">setBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setBorder-javax.swing.border.Border-\" title=\"class or interface in javax.swing\">setBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setComponentPopupMenu-javax.swing.JPopupMenu-\" title=\"class or interface in javax.swing\">setComponentPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDebugGraphicsOptions-int-\" title=\"class or interface in javax.swing\">setDebugGraphicsOptions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDefaultLocale-java.util.Locale-\" title=\"class or interface in javax.swing\">setDefaultLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDoubleBuffered-boolean-\" title=\"class or interface in javax.swing\">setDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setEnabled-boolean-\" title=\"class or interface in javax.swing\">setEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setFocusTraversalKeys-int-java.util.Set-\" title=\"class or interface in javax.swing\">setFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setFont-java.awt.Font-\" title=\"class or interface in javax.swing\">setFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setForeground-java.awt.Color-\" title=\"class or interface in javax.swing\">setForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInheritsPopupMenu-boolean-\" title=\"class or interface in javax.swing\">setInheritsPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInputMap-int-javax.swing.InputMap-\" title=\"class or interface in javax.swing\">setInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInputVerifier-javax.swing.InputVerifier-\" title=\"class or interface in javax.swing\">setInputVerifier</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setMaximumSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setMinimumSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setNextFocusableComponent-java.awt.Component-\" title=\"class or interface in javax.swing\">setNextFocusableComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setOpaque-boolean-\" title=\"class or interface in javax.swing\">setOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setPreferredSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setRequestFocusEnabled-boolean-\" title=\"class or interface in javax.swing\">setRequestFocusEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setToolTipText-java.lang.String-\" title=\"class or interface in javax.swing\">setToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setTransferHandler-javax.swing.TransferHandler-\" title=\"class or interface in javax.swing\">setTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setUI-javax.swing.plaf.ComponentUI-\" title=\"class or interface in javax.swing\">setUI</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setVerifyInputWhenFocusTarget-boolean-\" title=\"class or interface in javax.swing\">setVerifyInputWhenFocusTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setVisible-boolean-\" title=\"class or interface in javax.swing\">setVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#unregisterKeyboardAction-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">unregisterKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#update-java.awt.Graphics-\" title=\"class or interface in javax.swing\">update</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.lang.String-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">addContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addImpl-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">addImpl</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#applyComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">applyComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#areFocusTraversalKeysSet-int-\" title=\"class or interface in java.awt\">areFocusTraversalKeysSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#countComponents--\" title=\"class or interface in java.awt\">countComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#deliverEvent-java.awt.Event-\" title=\"class or interface in java.awt\">deliverEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#doLayout--\" title=\"class or interface in java.awt\">doLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-int-int-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponent-int-\" title=\"class or interface in java.awt\">getComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-int-int-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentCount--\" title=\"class or interface in java.awt\">getComponentCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponents--\" title=\"class or interface in java.awt\">getComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentZOrder-java.awt.Component-\" title=\"class or interface in java.awt\">getComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getContainerListeners--\" title=\"class or interface in java.awt\">getContainerListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalKeys-int-\" title=\"class or interface in java.awt\">getFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalPolicy--\" title=\"class or interface in java.awt\">getFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getLayout--\" title=\"class or interface in java.awt\">getLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMousePosition-boolean-\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#insets--\" title=\"class or interface in java.awt\">insets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#invalidate--\" title=\"class or interface in java.awt\">invalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isAncestorOf-java.awt.Component-\" title=\"class or interface in java.awt\">isAncestorOf</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot--\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot-java.awt.Container-\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicyProvider--\" title=\"class or interface in java.awt\">isFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicySet--\" title=\"class or interface in java.awt\">isFocusTraversalPolicySet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#layout--\" title=\"class or interface in java.awt\">layout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintStream-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintWriter-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#locate-int-int-\" title=\"class or interface in java.awt\">locate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#minimumSize--\" title=\"class or interface in java.awt\">minimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paintComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#preferredSize--\" title=\"class or interface in java.awt\">preferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#printComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">printComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processContainerEvent-java.awt.event.ContainerEvent-\" title=\"class or interface in java.awt\">processContainerEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">processEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#remove-java.awt.Component-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#remove-int-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeAll--\" title=\"class or interface in java.awt\">removeAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">removeContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setComponentZOrder-java.awt.Component-int-\" title=\"class or interface in java.awt\">setComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusCycleRoot-boolean-\" title=\"class or interface in java.awt\">setFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicy-java.awt.FocusTraversalPolicy-\" title=\"class or interface in java.awt\">setFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicyProvider-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setLayout-java.awt.LayoutManager-\" title=\"class or interface in java.awt\">setLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#transferFocusDownCycle--\" title=\"class or interface in java.awt\">transferFocusDownCycle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validate--\" title=\"class or interface in java.awt\">validate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validateTree--\" title=\"class or interface in java.awt\">validateTree</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#action-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">action</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#add-java.awt.PopupMenu-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">addComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">addFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">addHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">addHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">addInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">addKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">addMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">addMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">addMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#bounds--\" title=\"class or interface in java.awt\">bounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#coalesceEvents-java.awt.AWTEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">coalesceEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-java.awt.Point-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-java.awt.image.ImageProducer-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-int-int-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-java.awt.ImageCapabilities-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disableEvents-long-\" title=\"class or interface in java.awt\">disableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#dispatchEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">dispatchEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable-boolean-\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableEvents-long-\" title=\"class or interface in java.awt\">enableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableInputMethods-boolean-\" title=\"class or interface in java.awt\">enableInputMethods</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-byte-byte-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-double-double-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-float-float-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-long-long-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-short-short-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBackground--\" title=\"class or interface in java.awt\">getBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds--\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getColorModel--\" title=\"class or interface in java.awt\">getColorModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentListeners--\" title=\"class or interface in java.awt\">getComponentListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentOrientation--\" title=\"class or interface in java.awt\">getComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getCursor--\" title=\"class or interface in java.awt\">getCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getDropTarget--\" title=\"class or interface in java.awt\">getDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusCycleRootAncestor--\" title=\"class or interface in java.awt\">getFocusCycleRootAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusListeners--\" title=\"class or interface in java.awt\">getFocusListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusTraversalKeysEnabled--\" title=\"class or interface in java.awt\">getFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFont--\" title=\"class or interface in java.awt\">getFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getForeground--\" title=\"class or interface in java.awt\">getForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getGraphicsConfiguration--\" title=\"class or interface in java.awt\">getGraphicsConfiguration</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyBoundsListeners--\" title=\"class or interface in java.awt\">getHierarchyBoundsListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyListeners--\" title=\"class or interface in java.awt\">getHierarchyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getIgnoreRepaint--\" title=\"class or interface in java.awt\">getIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputContext--\" title=\"class or interface in java.awt\">getInputContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodListeners--\" title=\"class or interface in java.awt\">getInputMethodListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodRequests--\" title=\"class or interface in java.awt\">getInputMethodRequests</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getKeyListeners--\" title=\"class or interface in java.awt\">getKeyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocale--\" title=\"class or interface in java.awt\">getLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation--\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocationOnScreen--\" title=\"class or interface in java.awt\">getLocationOnScreen</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseListeners--\" title=\"class or interface in java.awt\">getMouseListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseMotionListeners--\" title=\"class or interface in java.awt\">getMouseMotionListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMousePosition--\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseWheelListeners--\" title=\"class or interface in java.awt\">getMouseWheelListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getName--\" title=\"class or interface in java.awt\">getName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getParent--\" title=\"class or interface in java.awt\">getParent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPeer--\" title=\"class or interface in java.awt\">getPeer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners--\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners-java.lang.String-\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize--\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getToolkit--\" title=\"class or interface in java.awt\">getToolkit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getTreeLock--\" title=\"class or interface in java.awt\">getTreeLock</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#gotFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">gotFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#handleEvent-java.awt.Event-\" title=\"class or interface in java.awt\">handleEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hasFocus--\" title=\"class or interface in java.awt\">hasFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#imageUpdate-java.awt.Image-int-int-int-int-int-\" title=\"class or interface in java.awt\">imageUpdate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#inside-int-int-\" title=\"class or interface in java.awt\">inside</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isBackgroundSet--\" title=\"class or interface in java.awt\">isBackgroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isCursorSet--\" title=\"class or interface in java.awt\">isCursorSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDisplayable--\" title=\"class or interface in java.awt\">isDisplayable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isEnabled--\" title=\"class or interface in java.awt\">isEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusable--\" title=\"class or interface in java.awt\">isFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusOwner--\" title=\"class or interface in java.awt\">isFocusOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusTraversable--\" title=\"class or interface in java.awt\">isFocusTraversable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFontSet--\" title=\"class or interface in java.awt\">isFontSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isForegroundSet--\" title=\"class or interface in java.awt\">isForegroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isLightweight--\" title=\"class or interface in java.awt\">isLightweight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMaximumSizeSet--\" title=\"class or interface in java.awt\">isMaximumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMinimumSizeSet--\" title=\"class or interface in java.awt\">isMinimumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isPreferredSizeSet--\" title=\"class or interface in java.awt\">isPreferredSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isShowing--\" title=\"class or interface in java.awt\">isShowing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isValid--\" title=\"class or interface in java.awt\">isValid</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isVisible--\" title=\"class or interface in java.awt\">isVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyDown-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyUp-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list--\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintStream-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintWriter-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#location--\" title=\"class or interface in java.awt\">location</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#lostFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">lostFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDown-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDrag-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDrag</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseEnter-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseEnter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseExit-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseExit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseMove-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseMove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseUp-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#move-int-int-\" title=\"class or interface in java.awt\">move</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#nextFocus--\" title=\"class or interface in java.awt\">nextFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#paintAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#postEvent-java.awt.Event-\" title=\"class or interface in java.awt\">postEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processComponentEvent-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt\">processComponentEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processFocusEvent-java.awt.event.FocusEvent-\" title=\"class or interface in java.awt\">processFocusEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyBoundsEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyBoundsEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processInputMethodEvent-java.awt.event.InputMethodEvent-\" title=\"class or interface in java.awt\">processInputMethodEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseWheelEvent-java.awt.event.MouseWheelEvent-\" title=\"class or interface in java.awt\">processMouseWheelEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#remove-java.awt.MenuComponent-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">removeComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">removeFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">removeHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">removeHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">removeInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">removeKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">removeMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">removeMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">removeMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint--\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-int-int-int-int-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-long-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#resize-java.awt.Dimension-\" title=\"class or interface in java.awt\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#resize-int-int-\" title=\"class or interface in java.awt\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-int-int-int-int-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">setComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setCursor-java.awt.Cursor-\" title=\"class or interface in java.awt\">setCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setDropTarget-java.awt.dnd.DropTarget-\" title=\"class or interface in java.awt\">setDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusable-boolean-\" title=\"class or interface in java.awt\">setFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusTraversalKeysEnabled-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setIgnoreRepaint-boolean-\" title=\"class or interface in java.awt\">setIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocale-java.util.Locale-\" title=\"class or interface in java.awt\">setLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-int-int-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-java.awt.Point-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setName-java.lang.String-\" title=\"class or interface in java.awt\">setName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-int-int-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show--\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show-boolean-\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#size--\" title=\"class or interface in java.awt\">size</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#toString--\" title=\"class or interface in java.awt\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocus--\" title=\"class or interface in java.awt\">transferFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusBackward--\" title=\"class or interface in java.awt\">transferFocusBackward</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusUpCycle--\" title=\"class or interface in java.awt\">transferFocusUpCycle</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Iterable\">\n<!--   -->\n</a>\n<h3>Methods inherited from interface&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true#forEach-java.util.function.Consumer-\" title=\"class or interface in java.lang\">forEach</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true#spliterator--\" title=\"class or interface in java.lang\">spliterator</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"MENU_ITEM_TEXT_ABOUT\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MENU_ITEM_TEXT_ABOUT</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> MENU_ITEM_TEXT_ABOUT</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramMenuBar.MENU_ITEM_TEXT_ABOUT\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MENU_ITEM_TEXT_ANTI_ALIASING\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MENU_ITEM_TEXT_ANTI_ALIASING</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> MENU_ITEM_TEXT_ANTI_ALIASING</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramMenuBar.MENU_ITEM_TEXT_ANTI_ALIASING\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MENU_ITEM_TEXT_BACKGROUND_COLOR\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MENU_ITEM_TEXT_BACKGROUND_COLOR</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> MENU_ITEM_TEXT_BACKGROUND_COLOR</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramMenuBar.MENU_ITEM_TEXT_BACKGROUND_COLOR\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MENU_ITEM_TEXT_CHECK_FOR_UPDATES\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MENU_ITEM_TEXT_CHECK_FOR_UPDATES</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> MENU_ITEM_TEXT_CHECK_FOR_UPDATES</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramMenuBar.MENU_ITEM_TEXT_CHECK_FOR_UPDATES\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MENU_ITEM_TEXT_CLEAR_CONSOLE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MENU_ITEM_TEXT_CLEAR_CONSOLE</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> MENU_ITEM_TEXT_CLEAR_CONSOLE</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramMenuBar.MENU_ITEM_TEXT_CLEAR_CONSOLE\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MENU_ITEM_TEXT_COPY\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MENU_ITEM_TEXT_COPY</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> MENU_ITEM_TEXT_COPY</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramMenuBar.MENU_ITEM_TEXT_COPY\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MENU_ITEM_TEXT_CUT\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MENU_ITEM_TEXT_CUT</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> MENU_ITEM_TEXT_CUT</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramMenuBar.MENU_ITEM_TEXT_CUT\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MENU_ITEM_TEXT_EXPORT_APPLET\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MENU_ITEM_TEXT_EXPORT_APPLET</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> MENU_ITEM_TEXT_EXPORT_APPLET</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramMenuBar.MENU_ITEM_TEXT_EXPORT_APPLET\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MENU_ITEM_TEXT_FONT\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MENU_ITEM_TEXT_FONT</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> MENU_ITEM_TEXT_FONT</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramMenuBar.MENU_ITEM_TEXT_FONT\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MENU_ITEM_TEXT_FOREGROUND_COLOR\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MENU_ITEM_TEXT_FOREGROUND_COLOR</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> MENU_ITEM_TEXT_FOREGROUND_COLOR</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramMenuBar.MENU_ITEM_TEXT_FOREGROUND_COLOR\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MENU_ITEM_TEXT_PASTE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MENU_ITEM_TEXT_PASTE</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> MENU_ITEM_TEXT_PASTE</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramMenuBar.MENU_ITEM_TEXT_PASTE\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MENU_ITEM_TEXT_PRINT\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MENU_ITEM_TEXT_PRINT</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> MENU_ITEM_TEXT_PRINT</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramMenuBar.MENU_ITEM_TEXT_PRINT\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MENU_ITEM_TEXT_PRINT_CONSOLE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MENU_ITEM_TEXT_PRINT_CONSOLE</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> MENU_ITEM_TEXT_PRINT_CONSOLE</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramMenuBar.MENU_ITEM_TEXT_PRINT_CONSOLE\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MENU_ITEM_TEXT_QUIT\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MENU_ITEM_TEXT_QUIT</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> MENU_ITEM_TEXT_QUIT</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramMenuBar.MENU_ITEM_TEXT_QUIT\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MENU_ITEM_TEXT_SAVE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MENU_ITEM_TEXT_SAVE</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> MENU_ITEM_TEXT_SAVE</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramMenuBar.MENU_ITEM_TEXT_SAVE\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MENU_ITEM_TEXT_SAVE_AS\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MENU_ITEM_TEXT_SAVE_AS</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> MENU_ITEM_TEXT_SAVE_AS</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramMenuBar.MENU_ITEM_TEXT_SAVE_AS\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MENU_ITEM_TEXT_SCRIPT\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MENU_ITEM_TEXT_SCRIPT</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> MENU_ITEM_TEXT_SCRIPT</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramMenuBar.MENU_ITEM_TEXT_SCRIPT\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MENU_ITEM_TEXT_SELECT_ALL\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MENU_ITEM_TEXT_SELECT_ALL</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> MENU_ITEM_TEXT_SELECT_ALL</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramMenuBar.MENU_ITEM_TEXT_SELECT_ALL\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MENU_ITEM_TEXT_SHOW_PIXEL_GRID\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MENU_ITEM_TEXT_SHOW_PIXEL_GRID</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> MENU_ITEM_TEXT_SHOW_PIXEL_GRID</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramMenuBar.MENU_ITEM_TEXT_SHOW_PIXEL_GRID\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MENU_ITEM_TEXT_SHOW_PIXEL_INFO\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MENU_ITEM_TEXT_SHOW_PIXEL_INFO</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> MENU_ITEM_TEXT_SHOW_PIXEL_INFO</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramMenuBar.MENU_ITEM_TEXT_SHOW_PIXEL_INFO\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MENU_ITEM_TEXT_SUBMIT_PROJECT\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MENU_ITEM_TEXT_SUBMIT_PROJECT</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> MENU_ITEM_TEXT_SUBMIT_PROJECT</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramMenuBar.MENU_ITEM_TEXT_SUBMIT_PROJECT\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MENU_ITEM_TEXT_INTERACTIVE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MENU_ITEM_TEXT_INTERACTIVE</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> MENU_ITEM_TEXT_INTERACTIVE</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramMenuBar.MENU_ITEM_TEXT_INTERACTIVE\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MENU_ITEM_TEXT_MSKAREL\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MENU_ITEM_TEXT_MSKAREL</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> MENU_ITEM_TEXT_MSKAREL</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramMenuBar.MENU_ITEM_TEXT_MSKAREL\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MENU_ITEM_TEXT_COMPARE_OUTPUT\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MENU_ITEM_TEXT_COMPARE_OUTPUT</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> MENU_ITEM_TEXT_COMPARE_OUTPUT</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramMenuBar.MENU_ITEM_TEXT_COMPARE_OUTPUT\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MENU_ITEM_TEXT_LOAD_INPUT_SCRIPT\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MENU_ITEM_TEXT_LOAD_INPUT_SCRIPT</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> MENU_ITEM_TEXT_LOAD_INPUT_SCRIPT</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramMenuBar.MENU_ITEM_TEXT_LOAD_INPUT_SCRIPT\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"SHIFT\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SHIFT</h4>\n<pre>public static final&nbsp;int SHIFT</pre>\n<div class=\"block\">Constant indicating that an accelerator key requires the SHIFT modifier.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramMenuBar.SHIFT\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"ALT_F4\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>ALT_F4</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> ALT_F4</pre>\n</li>\n</ul>\n<a name=\"COMMAND_A\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>COMMAND_A</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> COMMAND_A</pre>\n</li>\n</ul>\n<a name=\"COMMAND_B\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>COMMAND_B</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> COMMAND_B</pre>\n</li>\n</ul>\n<a name=\"COMMAND_C\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>COMMAND_C</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> COMMAND_C</pre>\n</li>\n</ul>\n<a name=\"COMMAND_END\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>COMMAND_END</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> COMMAND_END</pre>\n</li>\n</ul>\n<a name=\"COMMAND_EQUALS\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>COMMAND_EQUALS</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> COMMAND_EQUALS</pre>\n</li>\n</ul>\n<a name=\"COMMAND_HOME\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>COMMAND_HOME</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> COMMAND_HOME</pre>\n</li>\n</ul>\n<a name=\"COMMAND_I\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>COMMAND_I</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> COMMAND_I</pre>\n</li>\n</ul>\n<a name=\"COMMAND_L\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>COMMAND_L</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> COMMAND_L</pre>\n</li>\n</ul>\n<a name=\"COMMAND_MINUS\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>COMMAND_MINUS</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> COMMAND_MINUS</pre>\n</li>\n</ul>\n<a name=\"COMMAND_SHIFT_MINUS\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>COMMAND_SHIFT_MINUS</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> COMMAND_SHIFT_MINUS</pre>\n</li>\n</ul>\n<a name=\"COMMAND_P\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>COMMAND_P</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> COMMAND_P</pre>\n</li>\n</ul>\n<a name=\"COMMAND_PLUS\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>COMMAND_PLUS</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> COMMAND_PLUS</pre>\n</li>\n</ul>\n<a name=\"COMMAND_SHIFT_PLUS\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>COMMAND_SHIFT_PLUS</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> COMMAND_SHIFT_PLUS</pre>\n</li>\n</ul>\n<a name=\"COMMAND_Q\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>COMMAND_Q</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> COMMAND_Q</pre>\n</li>\n</ul>\n<a name=\"COMMAND_S\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>COMMAND_S</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> COMMAND_S</pre>\n</li>\n</ul>\n<a name=\"COMMAND_V\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>COMMAND_V</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> COMMAND_V</pre>\n</li>\n</ul>\n<a name=\"COMMAND_W\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>COMMAND_W</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> COMMAND_W</pre>\n</li>\n</ul>\n<a name=\"COMMAND_X\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>COMMAND_X</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> COMMAND_X</pre>\n</li>\n</ul>\n<a name=\"CTRL_A\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>CTRL_A</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> CTRL_A</pre>\n</li>\n</ul>\n<a name=\"CTRL_B\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>CTRL_B</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> CTRL_B</pre>\n</li>\n</ul>\n<a name=\"CTRL_C\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>CTRL_C</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> CTRL_C</pre>\n</li>\n</ul>\n<a name=\"CTRL_END\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>CTRL_END</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> CTRL_END</pre>\n</li>\n</ul>\n<a name=\"CTRL_EQUALS\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>CTRL_EQUALS</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> CTRL_EQUALS</pre>\n</li>\n</ul>\n<a name=\"CTRL_HOME\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>CTRL_HOME</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> CTRL_HOME</pre>\n</li>\n</ul>\n<a name=\"CTRL_I\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>CTRL_I</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> CTRL_I</pre>\n</li>\n</ul>\n<a name=\"CTRL_L\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>CTRL_L</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> CTRL_L</pre>\n</li>\n</ul>\n<a name=\"CTRL_MINUS\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>CTRL_MINUS</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> CTRL_MINUS</pre>\n</li>\n</ul>\n<a name=\"CTRL_SHIFT_MINUS\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>CTRL_SHIFT_MINUS</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> CTRL_SHIFT_MINUS</pre>\n</li>\n</ul>\n<a name=\"CTRL_P\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>CTRL_P</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> CTRL_P</pre>\n</li>\n</ul>\n<a name=\"CTRL_Q\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>CTRL_Q</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> CTRL_Q</pre>\n</li>\n</ul>\n<a name=\"CTRL_PLUS\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>CTRL_PLUS</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> CTRL_PLUS</pre>\n</li>\n</ul>\n<a name=\"CTRL_SHIFT_PLUS\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>CTRL_SHIFT_PLUS</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> CTRL_SHIFT_PLUS</pre>\n</li>\n</ul>\n<a name=\"CTRL_S\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>CTRL_S</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> CTRL_S</pre>\n</li>\n</ul>\n<a name=\"CTRL_V\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>CTRL_V</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> CTRL_V</pre>\n</li>\n</ul>\n<a name=\"CTRL_W\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>CTRL_W</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> CTRL_W</pre>\n</li>\n</ul>\n<a name=\"CTRL_X\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>CTRL_X</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> CTRL_X</pre>\n</li>\n</ul>\n<a name=\"DOWN_ARROW\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>DOWN_ARROW</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> DOWN_ARROW</pre>\n</li>\n</ul>\n<a name=\"F1\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>F1</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> F1</pre>\n</li>\n</ul>\n<a name=\"PGDN\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>PGDN</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> PGDN</pre>\n</li>\n</ul>\n<a name=\"PGUP\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>PGUP</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> PGUP</pre>\n</li>\n</ul>\n<a name=\"UP_ARROW\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>UP_ARROW</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> UP_ARROW</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"ProgramMenuBar-acm.program.Program-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>ProgramMenuBar</h4>\n<pre>public&nbsp;ProgramMenuBar(<a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a>&nbsp;owner)</pre>\n<div class=\"block\">Creates an empty <code>ProgramMenuBar</code>.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>owner</code> - The <code>Program</code> that owns this menu bar.</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>ProgramMenuBar mbar = new ProgramMenuBar(owner);</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"getProgram--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getProgram</h4>\n<pre>public&nbsp;<a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a>&nbsp;getProgram()</pre>\n<div class=\"block\">Returns the <code>Program</code> object associated with this menu.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The program associated with this menu bar</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>Program program = mbar.getProgram();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"createStandardItem-java.lang.String-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createStandardItem</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuItem</a>&nbsp;createStandardItem(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;action,\n                                    int&nbsp;mnemonic)</pre>\n<div class=\"block\">Creates one of the standard menu items implemented by the\n <code>ProgramMenuBar</code> class. The menu item is identified by its\n action command.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>action</code> - The action command identifying the menu item to be created</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>JMenuItem item = mbar.createStandardItem(action);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"createStandardItem-java.lang.String-int-javax.swing.KeyStroke-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createStandardItem</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuItem</a>&nbsp;createStandardItem(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;action,\n                                    int&nbsp;mnemonic,\n                                    <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a>&nbsp;keystroke)</pre>\n</li>\n</ul>\n<a name=\"createProgramItem-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createProgramItem</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuItem</a>&nbsp;createProgramItem(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;action)</pre>\n<div class=\"block\">Creates a program menu item with the specified action command. The\n initial item has the same label as the action command, but clients can\n change this name by calling <code>setName</code> on the item.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>action</code> - The action command generated by this menu item</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>JMenuItem item = createProgramItem(action);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"createProgramItem-java.lang.String-int-javax.swing.KeyStroke-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createProgramItem</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuItem</a>&nbsp;createProgramItem(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;action,\n                                   int&nbsp;key,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a>&nbsp;keystroke)</pre>\n<div class=\"block\">Creates a program menu item with the specified action command and\n accelerator key.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>action</code> - The action command generated by this menu item</dd>\n<dd><code>key</code> - The integer value of the keystroke accelerator</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>JMenuItem item = createProgramItem(action, key);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"createProgramItem-java.lang.String-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createProgramItem</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuItem</a>&nbsp;createProgramItem(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;action,\n                                   int&nbsp;key)</pre>\n</li>\n</ul>\n<a name=\"createFocusedItem-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createFocusedItem</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuItem</a>&nbsp;createFocusedItem(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;action)</pre>\n<div class=\"block\">Creates a focused menu item with the specified action command.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>action</code> - The action command generated by this menu item</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>JMenuItem item = createFocusedItem(action);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"createFocusedItem-java.lang.String-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createFocusedItem</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuItem</a>&nbsp;createFocusedItem(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;action,\n                                   int&nbsp;key)</pre>\n<div class=\"block\">Creates a focused menu item with the specified action command and\n accelerator key.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>action</code> - The action command generated by this menu item</dd>\n<dd><code>key</code> - The integer value of the keystroke accelerator</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>JMenuItem item = createFocusedItem(action, key);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"createFocusedItem-java.lang.String-int-javax.swing.KeyStroke-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createFocusedItem</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuItem</a>&nbsp;createFocusedItem(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;action,\n                                   int&nbsp;key,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a>&nbsp;keystroke)</pre>\n</li>\n</ul>\n<a name=\"createFocusedItem-java.lang.String-int-javax.swing.KeyStroke-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createFocusedItem</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuItem</a>&nbsp;createFocusedItem(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;action,\n                                   int&nbsp;key,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a>&nbsp;keystroke,\n                                   boolean&nbsp;shouldSetAccelerator)</pre>\n</li>\n</ul>\n<a name=\"getMenuItem-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getMenuItem</h4>\n<pre>public&nbsp;&lt;T extends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuItem</a>&gt;&nbsp;T&nbsp;getMenuItem(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</pre>\n</li>\n</ul>\n<a name=\"isFocusedItem-javax.swing.JMenuItem-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isFocusedItem</h4>\n<pre>public&nbsp;boolean&nbsp;isFocusedItem(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuItem</a>&nbsp;item)</pre>\n<div class=\"block\">Returns <code>true</code> if the item is a focused item.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>item</code> - A menu item installed in the menu bar</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd><code>true</code> if the item is a program item</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>if (mbar.isFocusedItem(item)) . . .</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setAccelerator-javax.swing.JMenuItem-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setAccelerator</h4>\n<pre>public&nbsp;void&nbsp;setAccelerator(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuItem</a>&nbsp;item,\n                           int&nbsp;key)</pre>\n<div class=\"block\">Sets the accelerator for the item as appropriate to the operating system\n conventions.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>item</code> - The menu item triggered by this accelerator</dd>\n<dd><code>key</code> - The integer value of the keystroke accelerator</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>mbar.setAccelerator(item, key);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setEnabled-java.lang.String-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setEnabled</h4>\n<pre>public&nbsp;void&nbsp;setEnabled(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;action,\n                       boolean&nbsp;flag)</pre>\n<div class=\"block\">Enables or disables any menu items that generate the specified action\n command.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>action</code> - The action command triggered by the menu item</dd>\n<dd><code>flag</code> - <code>true</code> to enable the item, <code>false</code> to\n            disable it</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>mbar.setEnabled(action, flag);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"install-java.awt.Component-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>install</h4>\n<pre>public&nbsp;void&nbsp;install(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp)</pre>\n<div class=\"block\">Installs the menu bar in the <code>JFrame</code> or <code>Program</code>\n object enclosing the component <code>comp</code>.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>comp</code> - A descendant of the frame in which the menu is to be installed</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>mbar.install(comp);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"fireActionListeners-java.awt.event.ActionEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fireActionListeners</h4>\n<pre>public&nbsp;void&nbsp;fireActionListeners(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Fires the action listeners responsible for handling the specified event.\n The process of choosing the appropriate handlers takes into account\n whether the action command is designated as program or focused.</div>\n</li>\n</ul>\n<a name=\"fireAccelerator-java.awt.event.KeyEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fireAccelerator</h4>\n<pre>public&nbsp;boolean&nbsp;fireAccelerator(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyEvent</a>&nbsp;e)</pre>\n<div class=\"block\">Triggers the accelerator associated with the keystroke implied by the key\n event. This method returns <code>true</code> if such an accelerator\n exists.</div>\n</li>\n</ul>\n<a name=\"setFocusedListener-java.awt.event.ActionListener-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setFocusedListener</h4>\n<pre>public&nbsp;void&nbsp;setFocusedListener(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener)</pre>\n<div class=\"block\">Registers a listener that responds while the caller holds the keyboard\n focus. The caller should register its listener when it acquires the\n keyboard focus and set it to <code>null</code> when it loses it.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>listener</code> - An <code>ActionListener</code> that responds to focused items</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>setFocusedListener(listener);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"iterator--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>iterator</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true\" title=\"class or interface in java.util\">Iterator</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuItem</a>&gt;&nbsp;iterator()</pre>\n<div class=\"block\">Returns an iterator that enumerates the individual menu items under the\n control of the menu bar.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true#iterator--\" title=\"class or interface in java.lang\">iterator</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuItem</a>&gt;</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>Iterator<JMenuItem> iterator = mbar.iterator(); return An iterator\n        that enumerates the menu items</dd>\n</dl>\n</li>\n</ul>\n<a name=\"addMenus--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addMenus</h4>\n<pre>protected&nbsp;void&nbsp;addMenus()</pre>\n<div class=\"block\">Adds menus to the menu bar. Subclasses that wish to change the\n composition of the menu bar beyond the default <code>File</code> and\n <code>Edit</code> menus should override this method with one that adds\n the desired menus.</div>\n</li>\n</ul>\n<a name=\"addFileMenu--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addFileMenu</h4>\n<pre>protected&nbsp;void&nbsp;addFileMenu()</pre>\n<div class=\"block\">Installs the <code>File</code> menu.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>mbar.addFileMenu();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"addEditMenu--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addEditMenu</h4>\n<pre>protected&nbsp;void&nbsp;addEditMenu()</pre>\n<div class=\"block\">Installs the <code>Edit</code> menu.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>mbar.addEditMenu();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"addConsoleOptionsMenu--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addConsoleOptionsMenu</h4>\n<pre>protected&nbsp;void&nbsp;addConsoleOptionsMenu()</pre>\n<div class=\"block\">Installs the <code>Options</code> menu for console programs.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>mbar.addConsoleOptionsMenu();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"addGraphicsOptionsMenu--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addGraphicsOptionsMenu</h4>\n<pre>protected&nbsp;void&nbsp;addGraphicsOptionsMenu()</pre>\n<div class=\"block\">Installs the <code>Options</code> menu for graphics programs.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>mbar.addGraphicsOptionsMenu();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"addKarelOptionsMenu--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addKarelOptionsMenu</h4>\n<pre>protected&nbsp;void&nbsp;addKarelOptionsMenu()</pre>\n<div class=\"block\">Installs the <code>Options</code> menu for Karel programs.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>mbar.addKarelOptionsMenu();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"addHelpMenu--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addHelpMenu</h4>\n<pre>protected&nbsp;void&nbsp;addHelpMenu()</pre>\n</li>\n</ul>\n<a name=\"addFileMenuItems-javax.swing.JMenu-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addFileMenuItems</h4>\n<pre>protected&nbsp;void&nbsp;addFileMenuItems(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenu.html?is-external=true\" title=\"class or interface in javax.swing\">JMenu</a>&nbsp;menu)</pre>\n<div class=\"block\">Adds the standard <code>File</code> items to the specified menu.\n Subclasses can override this method to change the list of items.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>menu</code> - The menu to which the <code>File</code> items are added</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>mbar.addFileMenuItems(menu);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"addEditMenuItems-javax.swing.JMenu-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>addEditMenuItems</h4>\n<pre>protected&nbsp;void&nbsp;addEditMenuItems(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenu.html?is-external=true\" title=\"class or interface in javax.swing\">JMenu</a>&nbsp;menu)</pre>\n<div class=\"block\">Adds the standard <code>Edit</code> items to the specified menu.\n Subclasses can override this method to change the list of items.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>menu</code> - The menu to which the <code>Edit</code> items are added</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>mbar.addEditMenuItems(menu);</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/program/ProgramStartupFlags.html\" title=\"interface in acm.program\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/program/ProgramMenuBar.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ProgramMenuBar.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JMenuBar\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/program/ProgramStartupFlags.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:08 PDT 2017 -->\n<title>ProgramStartupFlags</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"ProgramStartupFlags\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/program/ProgramMenuBar.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li>Next&nbsp;Class</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/program/ProgramStartupFlags.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ProgramStartupFlags.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li>Method</li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li>Method</li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.program</div>\n<h2 title=\"Interface ProgramStartupFlags\" class=\"title\">Interface ProgramStartupFlags</h2>\n</div>\n<div class=\"contentContainer\">\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public interface <span class=\"typeNameLabel\">ProgramStartupFlags</span></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramStartupFlags.html#SPL_AUTOGRADER_MODE\">SPL_AUTOGRADER_MODE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramStartupFlags.html#SPL_CONSOLE_ECHO\">SPL_CONSOLE_ECHO</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramStartupFlags.html#SPL_CONSOLE_EXIT_ON_CLOSE\">SPL_CONSOLE_EXIT_ON_CLOSE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramStartupFlags.html#SPL_CONSOLE_FONTSIZE\">SPL_CONSOLE_FONTSIZE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramStartupFlags.html#SPL_CONSOLE_HEIGHT\">SPL_CONSOLE_HEIGHT</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramStartupFlags.html#SPL_CONSOLE_LOCATION_SAVED\">SPL_CONSOLE_LOCATION_SAVED</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramStartupFlags.html#SPL_CONSOLE_WIDTH\">SPL_CONSOLE_WIDTH</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramStartupFlags.html#SPL_CONSOLE_X\">SPL_CONSOLE_X</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/program/ProgramStartupFlags.html#SPL_CONSOLE_Y\">SPL_CONSOLE_Y</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"SPL_AUTOGRADER_MODE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SPL_AUTOGRADER_MODE</h4>\n<pre>static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> SPL_AUTOGRADER_MODE</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramStartupFlags.SPL_AUTOGRADER_MODE\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"SPL_CONSOLE_FONTSIZE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SPL_CONSOLE_FONTSIZE</h4>\n<pre>static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> SPL_CONSOLE_FONTSIZE</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramStartupFlags.SPL_CONSOLE_FONTSIZE\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"SPL_CONSOLE_WIDTH\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SPL_CONSOLE_WIDTH</h4>\n<pre>static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> SPL_CONSOLE_WIDTH</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramStartupFlags.SPL_CONSOLE_WIDTH\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"SPL_CONSOLE_HEIGHT\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SPL_CONSOLE_HEIGHT</h4>\n<pre>static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> SPL_CONSOLE_HEIGHT</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramStartupFlags.SPL_CONSOLE_HEIGHT\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"SPL_CONSOLE_X\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SPL_CONSOLE_X</h4>\n<pre>static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> SPL_CONSOLE_X</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramStartupFlags.SPL_CONSOLE_X\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"SPL_CONSOLE_Y\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SPL_CONSOLE_Y</h4>\n<pre>static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> SPL_CONSOLE_Y</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramStartupFlags.SPL_CONSOLE_Y\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"SPL_CONSOLE_ECHO\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SPL_CONSOLE_ECHO</h4>\n<pre>static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> SPL_CONSOLE_ECHO</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramStartupFlags.SPL_CONSOLE_ECHO\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"SPL_CONSOLE_EXIT_ON_CLOSE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SPL_CONSOLE_EXIT_ON_CLOSE</h4>\n<pre>static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> SPL_CONSOLE_EXIT_ON_CLOSE</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramStartupFlags.SPL_CONSOLE_EXIT_ON_CLOSE\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"SPL_CONSOLE_LOCATION_SAVED\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>SPL_CONSOLE_LOCATION_SAVED</h4>\n<pre>static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> SPL_CONSOLE_LOCATION_SAVED</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.program.ProgramStartupFlags.SPL_CONSOLE_LOCATION_SAVED\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/program/ProgramMenuBar.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li>Next&nbsp;Class</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/program/ProgramStartupFlags.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ProgramStartupFlags.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li>Method</li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li>Method</li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/program/package-frame.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>acm.program</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<h1 class=\"bar\"><a href=\"../../acm/program/package-summary.html\" target=\"classFrame\">acm.program</a></h1>\n<div class=\"indexContainer\">\n<h2 title=\"Interfaces\">Interfaces</h2>\n<ul title=\"Interfaces\">\n<li><a href=\"GraphicsProgramInterface.html\" title=\"interface in acm.program\" target=\"classFrame\"><span class=\"interfaceName\">GraphicsProgramInterface</span></a></li>\n<li><a href=\"ProgramInterface.html\" title=\"interface in acm.program\" target=\"classFrame\"><span class=\"interfaceName\">ProgramInterface</span></a></li>\n<li><a href=\"ProgramStartupFlags.html\" title=\"interface in acm.program\" target=\"classFrame\"><span class=\"interfaceName\">ProgramStartupFlags</span></a></li>\n</ul>\n<h2 title=\"Classes\">Classes</h2>\n<ul title=\"Classes\">\n<li><a href=\"AbstractConsoleProgram.html\" title=\"class in acm.program\" target=\"classFrame\">AbstractConsoleProgram</a></li>\n<li><a href=\"AsciiArtProgram.html\" title=\"class in acm.program\" target=\"classFrame\">AsciiArtProgram</a></li>\n<li><a href=\"CommandLineProgram.html\" title=\"class in acm.program\" target=\"classFrame\">CommandLineProgram</a></li>\n<li><a href=\"ConsoleProgram.html\" title=\"class in acm.program\" target=\"classFrame\">ConsoleProgram</a></li>\n<li><a href=\"DialogProgram.html\" title=\"class in acm.program\" target=\"classFrame\">DialogProgram</a></li>\n<li><a href=\"GraphicsProgram.html\" title=\"class in acm.program\" target=\"classFrame\">GraphicsProgram</a></li>\n<li><a href=\"HeadlessGraphicsProgram.html\" title=\"class in acm.program\" target=\"classFrame\">HeadlessGraphicsProgram</a></li>\n<li><a href=\"Program.html\" title=\"class in acm.program\" target=\"classFrame\">Program</a></li>\n<li><a href=\"ProgramMenuBar.html\" title=\"class in acm.program\" target=\"classFrame\">ProgramMenuBar</a></li>\n</ul>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/program/package-summary.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>acm.program</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"acm.program\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li class=\"navBarCell1Rev\">Package</li>\n<li>Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/io/package-summary.html\">Prev&nbsp;Package</a></li>\n<li><a href=\"../../acm/util/package-summary.html\">Next&nbsp;Package</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/program/package-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 title=\"Package\" class=\"title\">Package&nbsp;acm.program</h1>\n<div class=\"docSummary\">\n<div class=\"block\">This package provides a set of classes that simplify the creation of programs.</div>\n</div>\n<p>See:&nbsp;<a href=\"#package.description\">Description</a></p>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Interface Summary table, listing interfaces, and an explanation\">\n<caption><span>Interface Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Interface</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></td>\n<td class=\"colLast\">\n<div class=\"block\">This interface contains all methods that Program classes are required to implement.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../acm/program/ProgramStartupFlags.html\" title=\"interface in acm.program\">ProgramStartupFlags</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Class Summary table, listing classes, and an explanation\">\n<caption><span>Class Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Class</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../acm/program/AsciiArtProgram.html\" title=\"class in acm.program\">AsciiArtProgram</a></td>\n<td class=\"colLast\">\n<div class=\"block\">...</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></td>\n<td class=\"colLast\">\n<div class=\"block\">This class simulates the functionality of a <code>ConsoleProgram</code>\n in an environment that lacks a graphics context.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../acm/program/ConsoleProgram.html\" title=\"class in acm.program\">ConsoleProgram</a></td>\n<td class=\"colLast\">\n<div class=\"block\">This class is a standard subclass of <code><a href=\"Program.html\">Program</a></code>\n that installs a console in the window.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../acm/program/DialogProgram.html\" title=\"class in acm.program\">DialogProgram</a></td>\n<td class=\"colLast\">\n<div class=\"block\">This class is a standard subclass of <code><a href=\"Program.html\">Program</a></code>\n that takes its input from a <code>IODialog</code> object.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></td>\n<td class=\"colLast\">\n<div class=\"block\">This class is a standard subclass of\n <code><a href=\"Program.html\">Program</a></code> whose principal window is\n used for drawing graphics.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></td>\n<td class=\"colLast\">\n<div class=\"block\">This class is the superclass for all executable\n programs in the <code>acm.program</code> package.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></td>\n<td class=\"colLast\">\n<div class=\"block\">This class standardizes the menu bars used in the ACM program package.</div>\n</td>\n</tr>\n</tbody>\n</table>\n</li>\n</ul>\n<a name=\"package.description\">\n<!--   -->\n</a>\n<h2 title=\"Package acm.program Description\">Package acm.program Description</h2>\n<div class=\"block\">This package provides a set of classes that simplify the creation of programs.\nThe package includes five abstract classes, each of which uses a particular\nparadigm for input and output, as follows:\n\n<p><table border=0>\n<tr><td valign=top><a href=\"Program.html\"><code>Program</code></a>&nbsp;&nbsp;</td>\n<td>This class is the root of the program hierachy and defines a program in which\ninput and output are performed using the system console, which is redirected to\nthe standard Java I/O streams <code>System.in</code> and <code>System.out</code>.</td></tr>\n\n<tr><td valign=top><a href=\"ConsoleProgram.html\"><code>ConsoleProgram</code></a>&nbsp;&nbsp;</td>\n<td>This class is similar to <a href=\"Program.html\"><code>Program</code></a> but\nfills the program frame with an interactive console (as defined in the\n<a href=\"../io/IOConsole.html\"><code>IOConsole</code></a> class in the\n<a href=\"../io/package-summary.html\"><code>acm.io</code></a> package).</td></tr>\n\n<tr><td valign=top><a href=\"DialogProgram.html\"><code>DialogProgram</code></a>&nbsp;&nbsp;</td>\n<td>This class extends the basic functionality of the <a href=\"Program.html\"><code>Program</code></a>\nclass so that input operations are performed using the\n<a href=\"../io/IODialog.html\"><code>IODialog</code></a> class in the\n<a href=\"../io/package-summary.html\"><code>acm.io</code></a> package.</td></tr>\n\n<tr><td valign=top><a href=\"CommandLineProgram.html\"><code>CommandLineProgram</code></a>&nbsp;&nbsp;</td>\n<td>This class is similar to\n<a href=\"ConsoleProgram.html\"><code>ConsoleProgram</code></a>\nbut uses <code>System.in</code> and <code>System.out</code> instead of\nan <code>IOConsole</code>.  This class is typically used only for Java\nprograms that are invoked from a command line and make no use of Java&#146;s\ngraphical capabilities.</td></tr>\n</table>\n\n<p>The principal advantages of using the <code>Program</code> class are:\n\n<ul>\n<li>The conventional pattern of use associated with the <code>acm.program</code> package moves\nstudents away from the imperative style of <code>public&nbsp;static&nbsp;void&nbsp;main</code>\ninto a more pedagogically defensible framework in which students are always working in the\ncontext of an object.\n<li>The <code>Program</code> class allows Java applications to double as applets,\nthereby making it possible for intructors to use either paradigm in a consistent way.\nEven for those instructors that choose to focus on the application paradigm, using\nthe <code>Program</code> class makes it much easier for students to make their code\navailable on the web.  Moreover, because the <code>Program</code> class is defined\nto be a subclass of <code>Applet</code>, applications that run in that domain can\ntake advantage of such applet-based features as loading audio clips and images from\nthe code base.\n<li>The <code>Program</code> class includes several features that make instruction\neasier, such as the definition of standard menu bars that support operations like\nprinting and running programs with a test script.\n<li>The classes in the <code>acm.program</code> package offer a compelling example\nof an inheritance hierarchy that introductory students can understand and appreciate\nright from the beginning of their first course.\n</ul>\n\n<p>In most environments, the only thing students need to do to create a new\nprogram is to define a <code>Program</code> subclass that implements a <code>run</code>\nmethod.  For example, the following class definition creates a traditional,\nstream-oriented program that reads in two integers and computes their sum:\n\n<p><pre><code>\n&nbsp;    public class Add2 extends ConsoleProgram {\n&nbsp;       public void run() {\n&nbsp;          println(\"This program adds two numbers.\");\n&nbsp;          int n1 = readInt(\"Enter n1: \");\n&nbsp;          int n2 = readInt(\"Enter n2: \");\n&nbsp;          int total = n1 + n2;\n&nbsp;          println(\"The total is \" + total + \".\");\n&nbsp;       }\n&nbsp;    }\n</code></pre></div>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li class=\"navBarCell1Rev\">Package</li>\n<li>Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/io/package-summary.html\">Prev&nbsp;Package</a></li>\n<li><a href=\"../../acm/util/package-summary.html\">Next&nbsp;Package</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/program/package-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/program/package-tree.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>acm.program Class Hierarchy</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"acm.program Class Hierarchy\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/io/package-tree.html\">Prev</a></li>\n<li><a href=\"../../acm/util/package-tree.html\">Next</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/program/package-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 class=\"title\">Hierarchy For Package acm.program</h1>\n<span class=\"packageHierarchyLabel\">Package Hierarchies:</span>\n<ul class=\"horizontal\">\n<li><a href=\"../../overview-tree.html\">All Packages</a></li>\n</ul>\n</div>\n<div class=\"contentContainer\">\n<h2 title=\"Class Hierarchy\">Class Hierarchy</h2>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Object</span></a>\n<ul>\n<li type=\"circle\">acm.program.<a href=\"../../acm/program/CommandLineProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">CommandLineProgram</span></a> (implements java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, acm.io.IOModel, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a>, acm.program.<a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a>)</li>\n<li type=\"circle\">java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\"><span class=\"typeNameLink\">Component</span></a> (implements java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\"><span class=\"typeNameLink\">Container</span></a>\n<ul>\n<li type=\"circle\">javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\"><span class=\"typeNameLink\">JComponent</span></a> (implements java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true\" title=\"class or interface in javax.swing\"><span class=\"typeNameLink\">JMenuBar</span></a> (implements javax.accessibility.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/MenuElement.html?is-external=true\" title=\"class or interface in javax.swing\">MenuElement</a>)\n<ul>\n<li type=\"circle\">acm.program.<a href=\"../../acm/program/ProgramMenuBar.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">ProgramMenuBar</span></a> (implements java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;T&gt;)</li>\n</ul>\n</li>\n</ul>\n</li>\n<li type=\"circle\">java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\"><span class=\"typeNameLink\">Panel</span></a> (implements javax.accessibility.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>)\n<ul>\n<li type=\"circle\">java.applet.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\"><span class=\"typeNameLink\">Applet</span></a>\n<ul>\n<li type=\"circle\">javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\"><span class=\"typeNameLink\">JApplet</span></a> (implements javax.accessibility.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/RootPaneContainer.html?is-external=true\" title=\"class or interface in javax.swing\">RootPaneContainer</a>)\n<ul>\n<li type=\"circle\">acm.program.<a href=\"../../acm/program/Program.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Program</span></a> (implements java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/AdjustmentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">AdjustmentListener</a>, javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ContainerListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ContainerListener</a>, javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusListener</a>, acm.io.IOModel, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ItemListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ItemListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>, javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListDataListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListDataListener</a>, javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListSelectionListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListSelectionListener</a>, javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/MouseInputListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">MouseInputListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseWheelListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseWheelListener</a>, javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/PopupMenuListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">PopupMenuListener</a>, acm.program.<a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a>, java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/TextListener.html?is-external=true\" title=\"class or interface in java.awt.event\">TextListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowFocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowFocusListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowStateListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowStateListener</a>)\n<ul>\n<li type=\"circle\">acm.program.<a href=\"../../acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">AbstractConsoleProgram</span></a>\n<ul>\n<li type=\"circle\">acm.program.<a href=\"../../acm/program/ConsoleProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">ConsoleProgram</span></a>\n<ul>\n<li type=\"circle\">acm.program.<a href=\"../../acm/program/AsciiArtProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">AsciiArtProgram</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li type=\"circle\">acm.program.<a href=\"../../acm/program/DialogProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">DialogProgram</span></a></li>\n<li type=\"circle\">acm.program.<a href=\"../../acm/program/GraphicsProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">GraphicsProgram</span></a> (implements acm.program.<a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a>, java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;T&gt;)</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li type=\"circle\">acm.program.<a href=\"../../acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">HeadlessGraphicsProgram</span></a> (implements acm.program.<a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a>)</li>\n</ul>\n</li>\n</ul>\n<h2 title=\"Interface Hierarchy\">Interface Hierarchy</h2>\n<ul>\n<li type=\"circle\">java.util.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\"><span class=\"typeNameLink\">EventListener</span></a>\n<ul>\n<li type=\"circle\">java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\"><span class=\"typeNameLink\">MouseListener</span></a>\n<ul>\n<li type=\"circle\">acm.program.<a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\"><span class=\"typeNameLink\">GraphicsProgramInterface</span></a> (also extends acm.graphics.<a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a>, acm.program.<a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a>)</li>\n</ul>\n</li>\n<li type=\"circle\">java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\"><span class=\"typeNameLink\">MouseMotionListener</span></a>\n<ul>\n<li type=\"circle\">acm.program.<a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\"><span class=\"typeNameLink\">GraphicsProgramInterface</span></a> (also extends acm.graphics.<a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>, acm.program.<a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a>)</li>\n</ul>\n</li>\n</ul>\n</li>\n<li type=\"circle\">acm.graphics.<a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\"><span class=\"typeNameLink\">GCanvasInterface</span></a>\n<ul>\n<li type=\"circle\">acm.program.<a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\"><span class=\"typeNameLink\">GraphicsProgramInterface</span></a> (also extends java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a>, acm.program.<a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a>)</li>\n</ul>\n</li>\n<li type=\"circle\">acm.program.<a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\"><span class=\"typeNameLink\">ProgramInterface</span></a>\n<ul>\n<li type=\"circle\">acm.program.<a href=\"../../acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\"><span class=\"typeNameLink\">GraphicsProgramInterface</span></a> (also extends acm.graphics.<a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a>)</li>\n</ul>\n</li>\n<li type=\"circle\">acm.program.<a href=\"../../acm/program/ProgramStartupFlags.html\" title=\"interface in acm.program\"><span class=\"typeNameLink\">ProgramStartupFlags</span></a></li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/io/package-tree.html\">Prev</a></li>\n<li><a href=\"../../acm/util/package-tree.html\">Next</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/program/package-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/util/ErrorException.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>ErrorException</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"ErrorException\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Class</li>\n<li><a href=\"../../acm/util/FileChooserFilter.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/util/ErrorException.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ErrorException.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#methods.inherited.from.class.java.lang.Throwable\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li>Method</li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.util</div>\n<h2 title=\"Class ErrorException\" class=\"title\">Class ErrorException</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Throwable</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Exception</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.RuntimeException</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.util.ErrorException</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">ErrorException</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.html?is-external=true\" title=\"class or interface in java.lang\">RuntimeException</a></pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#acm.util.ErrorException\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/ErrorException.html#ErrorException-java.lang.Exception-\">ErrorException</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true\" title=\"class or interface in java.lang\">Exception</a>&nbsp;cause)</code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/ErrorException.html#ErrorException-java.lang.String-\">ErrorException</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message)</code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/ErrorException.html#ErrorException-java.lang.String-java.lang.Throwable-\">ErrorException</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;cause)</code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/ErrorException.html#ErrorException-java.lang.Throwable-\">ErrorException</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;cause)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Throwable\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#addSuppressed-java.lang.Throwable-\" title=\"class or interface in java.lang\">addSuppressed</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#fillInStackTrace--\" title=\"class or interface in java.lang\">fillInStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getCause--\" title=\"class or interface in java.lang\">getCause</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getLocalizedMessage--\" title=\"class or interface in java.lang\">getLocalizedMessage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getMessage--\" title=\"class or interface in java.lang\">getMessage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getStackTrace--\" title=\"class or interface in java.lang\">getStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getSuppressed--\" title=\"class or interface in java.lang\">getSuppressed</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#initCause-java.lang.Throwable-\" title=\"class or interface in java.lang\">initCause</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#printStackTrace--\" title=\"class or interface in java.lang\">printStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#printStackTrace-java.io.PrintStream-\" title=\"class or interface in java.lang\">printStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#printStackTrace-java.io.PrintWriter-\" title=\"class or interface in java.lang\">printStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#setStackTrace-java.lang.StackTraceElement:A-\" title=\"class or interface in java.lang\">setStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"ErrorException-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>ErrorException</h4>\n<pre>public&nbsp;ErrorException(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message)</pre>\n</li>\n</ul>\n<a name=\"ErrorException-java.lang.String-java.lang.Throwable-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>ErrorException</h4>\n<pre>public&nbsp;ErrorException(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n                      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;cause)</pre>\n</li>\n</ul>\n<a name=\"ErrorException-java.lang.Exception-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>ErrorException</h4>\n<pre>public&nbsp;ErrorException(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true\" title=\"class or interface in java.lang\">Exception</a>&nbsp;cause)</pre>\n</li>\n</ul>\n<a name=\"ErrorException-java.lang.Throwable-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>ErrorException</h4>\n<pre>public&nbsp;ErrorException(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;cause)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Class</li>\n<li><a href=\"../../acm/util/FileChooserFilter.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/util/ErrorException.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ErrorException.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#methods.inherited.from.class.java.lang.Throwable\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li>Method</li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/util/FileChooserFilter.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>FileChooserFilter</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"FileChooserFilter\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/util/ErrorException.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/util/MediaTools.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/util/FileChooserFilter.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"FileChooserFilter.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.util</div>\n<h2 title=\"Class FileChooserFilter\" class=\"title\">Class FileChooserFilter</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/filechooser/FileFilter.html?is-external=true\" title=\"class or interface in javax.swing.filechooser\">javax.swing.filechooser.FileFilter</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.util.FileChooserFilter</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">FileChooserFilter</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/filechooser/FileFilter.html?is-external=true\" title=\"class or interface in javax.swing.filechooser\">FileFilter</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/FileChooserFilter.html#FileChooserFilter-java.lang.String-\">FileChooserFilter</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;path)</code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/FileChooserFilter.html#FileChooserFilter-java.lang.String-java.lang.String-\">FileChooserFilter</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;path,\n                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;desc)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/FileChooserFilter.html#accept-java.io.File-\">accept</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/FileChooserFilter.html#getDescription--\">getDescription</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/FileChooserFilter.html#getDirectory--\">getDirectory</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/FileChooserFilter.html#getPattern--\">getPattern</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"FileChooserFilter-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>FileChooserFilter</h4>\n<pre>public&nbsp;FileChooserFilter(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;path)</pre>\n</li>\n</ul>\n<a name=\"FileChooserFilter-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>FileChooserFilter</h4>\n<pre>public&nbsp;FileChooserFilter(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;path,\n                         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;desc)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"getDirectory--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getDirectory</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getDirectory()</pre>\n</li>\n</ul>\n<a name=\"getPattern--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getPattern</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getPattern()</pre>\n</li>\n</ul>\n<a name=\"getDescription--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getDescription</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getDescription()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/filechooser/FileFilter.html?is-external=true#getDescription--\" title=\"class or interface in javax.swing.filechooser\">getDescription</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/filechooser/FileFilter.html?is-external=true\" title=\"class or interface in javax.swing.filechooser\">FileFilter</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"accept-java.io.File-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>accept</h4>\n<pre>public&nbsp;boolean&nbsp;accept(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/filechooser/FileFilter.html?is-external=true#accept-java.io.File-\" title=\"class or interface in javax.swing.filechooser\">accept</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/filechooser/FileFilter.html?is-external=true\" title=\"class or interface in javax.swing.filechooser\">FileFilter</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/util/ErrorException.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/util/MediaTools.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/util/FileChooserFilter.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"FileChooserFilter.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/util/MediaTools.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>MediaTools</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"MediaTools\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9,\"i2\":9,\"i3\":9,\"i4\":9,\"i5\":9,\"i6\":9,\"i7\":9,\"i8\":9,\"i9\":9,\"i10\":9,\"i11\":9,\"i12\":9,\"i13\":9,\"i14\":9,\"i15\":9,\"i16\":9,\"i17\":9,\"i18\":9,\"i19\":9,\"i20\":9,\"i21\":9,\"i22\":9,\"i23\":9,\"i24\":9,\"i25\":9,\"i26\":9,\"i27\":9,\"i28\":9,\"i29\":9,\"i30\":9,\"i31\":9,\"i32\":9,\"i33\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/util/FileChooserFilter.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/util/PatchingClassLoader.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/util/MediaTools.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"MediaTools.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.util</div>\n<h2 title=\"Class MediaTools\" class=\"title\">Class MediaTools</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.util.MediaTools</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">MediaTools</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n<div class=\"block\">This class implements a standard mechanism for loading images, sounds, and\n data files from the resources associated with a jar file.</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/MediaTools.html#DEFAULT_AUDIO_PATH\">DEFAULT_AUDIO_PATH</a></span></code>\n<div class=\"block\">The list of directories scanned for audio clips, separated by colons.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/MediaTools.html#DEFAULT_DATAFILE_PATH\">DEFAULT_DATAFILE_PATH</a></span></code>\n<div class=\"block\">The list of directories scanned for data files, separated by colons.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/MediaTools.html#DEFAULT_IMAGE_PATH\">DEFAULT_IMAGE_PATH</a></span></code>\n<div class=\"block\">The list of directories scanned for images, separated by colons.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/MediaTools.html#beep--\">beep</a></span>()</code>\n<div class=\"block\">This method sounds the audible alert on the console, which is typically a\n beep sound.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AudioClip.html?is-external=true\" title=\"class or interface in java.applet\">AudioClip</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/MediaTools.html#createAudioClip-java.io.InputStream-\">createAudioClip</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;in)</code>\n<div class=\"block\">Generates an audio clip from an input stream containing the data bytes\n for the audio clip.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AudioClip.html?is-external=true\" title=\"class or interface in java.applet\">AudioClip</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/MediaTools.html#createAudioClip-java.lang.String:A-\">createAudioClip</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;hexData)</code>\n<div class=\"block\">Generates an audio clip from a string array that provides the sound\n values.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/BufferedImage.html?is-external=true\" title=\"class or interface in java.awt.image\">BufferedImage</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/MediaTools.html#createBufferedImage-java.awt.Image-int-\">createBufferedImage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;image,\n                   int&nbsp;type)</code>\n<div class=\"block\">Creates a <code>BufferedImage</code> from the specified image.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/MediaTools.html#createImage-java.io.InputStream-\">createImage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;in)</code>\n<div class=\"block\">Generates an image from an input stream containing the data bytes for the\n image formatted in image/gif format.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/MediaTools.html#createImage-int:A:A-\">createImage</a></span>(int[][]&nbsp;array)</code>\n<div class=\"block\">Generates an image from a two-dimensional array of pixel values.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/MediaTools.html#createImage-int:A-int-int-\">createImage</a></span>(int[]&nbsp;pixels,\n           int&nbsp;width,\n           int&nbsp;height)</code>\n<div class=\"block\">Generates an image from a single-dimensional array of pixel values.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/MediaTools.html#createImage-java.lang.String:A-\">createImage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;hexData)</code>\n<div class=\"block\">Generates an image from a string array that provides the pixel values.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/MediaTools.html#createPSPreviewImage-java.awt.Image-java.lang.String:A-\">createPSPreviewImage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;image,\n                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;preview)</code>\n<div class=\"block\">Creates a new image that combines an existing image with a PostScript\n preview represented as a string array.</div>\n</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/MediaTools.html#defineAudioClip-java.lang.String-java.applet.AudioClip-\">defineAudioClip</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AudioClip.html?is-external=true\" title=\"class or interface in java.applet\">AudioClip</a>&nbsp;clip)</code>\n<div class=\"block\">Inserts the given clip into the audio clip table under the specified\n name.</div>\n</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/MediaTools.html#defineImage-java.lang.String-java.awt.Image-\">defineImage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;image)</code>\n<div class=\"block\">Inserts the given image into the image table under the specified name.</div>\n</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/MediaTools.html#flushAudioClip-java.lang.String-\">flushAudioClip</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>\n<div class=\"block\">Removes the audio clip with the given name from the cache, allowing it to\n be freed by the garbage collector.</div>\n</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/MediaTools.html#flushImage-java.lang.String-\">flushImage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>\n<div class=\"block\">Removes the image with the given name from the cache, allowing it to be\n freed by the garbage collector.</div>\n</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/MediaTools.html#getHexInputStream-java.lang.String:A-\">getHexInputStream</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;hexData)</code>\n<div class=\"block\">Returns an input stream whose bytes come from the string array\n <code>hex</code>, in which the elements consist of continuous bytes of\n hex data.</div>\n</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/MediaTools.html#getImageObserver--\">getImageObserver</a></span>()</code>\n<div class=\"block\">This method returns a new lightweight component suitable as an\n <code>imageObserver</code>.</div>\n</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static int[][]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/MediaTools.html#getPixelArray-java.awt.Image-\">getPixelArray</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;image)</code>\n<div class=\"block\">Returns a two-dimensional array of the pixels in the image.</div>\n</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/MediaTools.html#isCachingEnabled--\">isCachingEnabled</a></span>()</code>\n<div class=\"block\">This method returns the status of the flag that determins whether images\n and audio clips are cached internally by name, as described in <a\n href=\"#setCachingEnabled(boolean)\"><code>setCachingEnabled</code></a>.</div>\n</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AudioClip.html?is-external=true\" title=\"class or interface in java.applet\">AudioClip</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/MediaTools.html#loadAudioClip-java.lang.String-\">loadAudioClip</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>\n<div class=\"block\">Searches the default audio clip search path for an audio clip with the\n specified name and then loads it to create an <code>AudioClip</code>.</div>\n</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AudioClip.html?is-external=true\" title=\"class or interface in java.applet\">AudioClip</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/MediaTools.html#loadAudioClip-java.lang.String-java.lang.String-\">loadAudioClip</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;path)</code>\n<div class=\"block\">Searches for an audio clip with the given name and loads it to create an\n <code>AudioClip</code>.</div>\n</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AudioClip.html?is-external=true\" title=\"class or interface in java.applet\">AudioClip</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/MediaTools.html#loadAudioClip-java.net.URL-\">loadAudioClip</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URL.html?is-external=true\" title=\"class or interface in java.net\">URL</a>&nbsp;url)</code>\n<div class=\"block\">Loads an audio clip from the specified URL.</div>\n</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AudioClip.html?is-external=true\" title=\"class or interface in java.applet\">AudioClip</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/MediaTools.html#loadAudioClip-java.net.URL-boolean-\">loadAudioClip</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URL.html?is-external=true\" title=\"class or interface in java.net\">URL</a>&nbsp;url,\n             boolean&nbsp;topLevel)</code>\n<div class=\"block\">Loads an audio clip from the specified URL.</div>\n</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/MediaTools.html#loadImage-java.io.File-\">loadImage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)</code>\n<div class=\"block\">Searches the default image search path for an image with the specified\n file's name and then loads it to create an <code>Image</code>.</div>\n</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/MediaTools.html#loadImage-java.awt.Image-\">loadImage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;image)</code>\n<div class=\"block\">Makes sure that the image is fully loaded before returning.</div>\n</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/MediaTools.html#loadImage-java.lang.String-\">loadImage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>\n<div class=\"block\">Searches the default image search path for an image with the specified\n name and then loads it to create an <code>Image</code>.</div>\n</td>\n</tr>\n<tr id=\"i24\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/MediaTools.html#loadImage-java.lang.String-java.lang.String-\">loadImage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;path)</code>\n<div class=\"block\">Searches for an image with the given name and loads it to create an\n <code>Image</code>.</div>\n</td>\n</tr>\n<tr id=\"i25\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/MediaTools.html#loadImage-java.net.URL-\">loadImage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URL.html?is-external=true\" title=\"class or interface in java.net\">URL</a>&nbsp;url)</code>\n<div class=\"block\">Loads an image from the specified URL.</div>\n</td>\n</tr>\n<tr id=\"i26\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/MediaTools.html#loadImage-java.net.URL-boolean-\">loadImage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URL.html?is-external=true\" title=\"class or interface in java.net\">URL</a>&nbsp;url,\n         boolean&nbsp;topLevel)</code>\n<div class=\"block\">Loads an image from the specified URL.</div>\n</td>\n</tr>\n<tr id=\"i27\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/MediaTools.html#openDataFile-java.lang.String-\">openDataFile</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>\n<div class=\"block\">Searches the default datafile search path for a file with the specified\n name and then opens it to create an <code>InputStream</code>.</div>\n</td>\n</tr>\n<tr id=\"i28\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/MediaTools.html#openDataFile-java.lang.String-java.lang.String-\">openDataFile</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;path)</code>\n<div class=\"block\">Searches for a data file with the given name and opens it to create an\n <code>InputStream</code>.</div>\n</td>\n</tr>\n<tr id=\"i29\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/MediaTools.html#openDataFile-java.net.URL-\">openDataFile</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URL.html?is-external=true\" title=\"class or interface in java.net\">URL</a>&nbsp;url)</code>\n<div class=\"block\">Opens the specified URL to create an <code>InputStream</code>.</div>\n</td>\n</tr>\n<tr id=\"i30\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/MediaTools.html#openDataFile-java.net.URL-boolean-\">openDataFile</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URL.html?is-external=true\" title=\"class or interface in java.net\">URL</a>&nbsp;url,\n            boolean&nbsp;topLevel)</code>\n<div class=\"block\">Opens a data file using the specified URL.</div>\n</td>\n</tr>\n<tr id=\"i31\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/MediaTools.html#saveImage-java.awt.Image-java.io.File-\">saveImage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;image,\n         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)</code>\n<div class=\"block\">Saves an image to the specified file.</div>\n</td>\n</tr>\n<tr id=\"i32\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/MediaTools.html#saveImage-java.awt.Image-java.lang.String-\">saveImage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;image,\n         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>\n<div class=\"block\">Saves an image to a file with the specified filename.</div>\n</td>\n</tr>\n<tr id=\"i33\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/MediaTools.html#setCachingEnabled-boolean-\">setCachingEnabled</a></span>(boolean&nbsp;flag)</code>\n<div class=\"block\">This method sets an internal flag in the <code>MediaTools</code> package\n to indicate whether images and audio clips are cached internally by name.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"DEFAULT_IMAGE_PATH\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>DEFAULT_IMAGE_PATH</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> DEFAULT_IMAGE_PATH</pre>\n<div class=\"block\">The list of directories scanned for images, separated by colons.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.util.MediaTools.DEFAULT_IMAGE_PATH\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"DEFAULT_AUDIO_PATH\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>DEFAULT_AUDIO_PATH</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> DEFAULT_AUDIO_PATH</pre>\n<div class=\"block\">The list of directories scanned for audio clips, separated by colons.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.util.MediaTools.DEFAULT_AUDIO_PATH\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"DEFAULT_DATAFILE_PATH\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>DEFAULT_DATAFILE_PATH</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> DEFAULT_DATAFILE_PATH</pre>\n<div class=\"block\">The list of directories scanned for data files, separated by colons.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.util.MediaTools.DEFAULT_DATAFILE_PATH\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"loadImage-java.io.File-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>loadImage</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;loadImage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)</pre>\n<div class=\"block\">Searches the default image search path for an image with the specified\n file's name and then loads it to create an <code>Image</code>. The search\n process consists of the following steps:\n \n <p>\n <ol>\n <li>Check to see if an image with that name has already been defined. If\n so, return that image.\n <p>\n \n <li>Check to see if there is a resource available with that name whose\n contents can be read as an <code>Image</code>. If so, read the image from\n the resource file.\n <p>\n \n <li>Load the image from a file with the specified name, relative to the\n application directory or the applet code base.\n </ol>\n <p>\n \n The second and third steps are repeated for each element of the image\n search path, which consists of a list of directories separated by colons.\n \n <p>\n Unlike the <code>getImage</code> method in the <code>Applet</code> class,\n <code>loadImage</code> waits for an image to be fully loaded before\n returning.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>file</code> - The file of the image</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>A fully loaded <code>Image</code> object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>Image image = MediaTools.loadImage(name);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"loadImage-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>loadImage</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;loadImage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n<div class=\"block\">Searches the default image search path for an image with the specified\n name and then loads it to create an <code>Image</code>. The search\n process consists of the following steps:\n \n <p>\n <ol>\n <li>Check to see if an image with that name has already been defined. If\n so, return that image.\n <p>\n \n <li>Check to see if there is a resource available with that name whose\n contents can be read as an <code>Image</code>. If so, read the image from\n the resource file.\n <p>\n \n <li>Load the image from a file with the specified name, relative to the\n application directory or the applet code base.\n </ol>\n <p>\n \n The second and third steps are repeated for each element of the image\n search path, which consists of a list of directories separated by colons.\n \n <p>\n Unlike the <code>getImage</code> method in the <code>Applet</code> class,\n <code>loadImage</code> waits for an image to be fully loaded before\n returning.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>name</code> - The name of the image</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>A fully loaded <code>Image</code> object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>Image image = MediaTools.loadImage(name);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"loadImage-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>loadImage</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;loadImage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n                              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;path)</pre>\n<div class=\"block\">Searches for an image with the given name and loads it to create an\n <code>Image</code>. Its operation is identical to the single-argument <a\n href=\"#loadImage(String)\"><code>loadImage</code></a> call except in that\n this version allows the client to specify the search path explicitly.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>name</code> - The name of the image</dd>\n<dd><code>path</code> - A string of directories names separated by colons</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>A fully loaded <code>Image</code> object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>Image image = MediaTools.loadImage(name, path);</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"loadImage-java.net.URL-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>loadImage</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;loadImage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URL.html?is-external=true\" title=\"class or interface in java.net\">URL</a>&nbsp;url)</pre>\n<div class=\"block\">Loads an image from the specified URL.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>url</code> - The url containing the image</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>A fully loaded <code>Image</code> object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>Image image = MediaTools.loadImage(url);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"loadImage-java.awt.Image-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>loadImage</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;loadImage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;image)</pre>\n<div class=\"block\">Makes sure that the image is fully loaded before returning.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>image</code> - The <code>Image</code> which may not yet be loaded</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The same <code>Image</code> after ensuring that it is fully\n         loaded</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>image = MediaTools.loadImage(image);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"defineImage-java.lang.String-java.awt.Image-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>defineImage</h4>\n<pre>public static&nbsp;void&nbsp;defineImage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n                               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;image)</pre>\n<div class=\"block\">Inserts the given image into the image table under the specified name.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>name</code> - The name for the image</dd>\n<dd><code>image</code> - The image to be stored in the table</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>MediaTools.defineImage(name, image);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"flushImage-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>flushImage</h4>\n<pre>public static&nbsp;void&nbsp;flushImage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n<div class=\"block\">Removes the image with the given name from the cache, allowing it to be\n freed by the garbage collector.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>name</code> - The name for the image</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>MediaTools.flushImage(name);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"createImage-int:A:A-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createImage</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;createImage(int[][]&nbsp;array)</pre>\n<div class=\"block\">Generates an image from a two-dimensional array of pixel values. As in\n standard image processing applications, the array is indexed so that the\n first subscript determines the row and the second determines the column.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>array</code> - A two-dimensional array of <code>int</code>s representing the\n            pixels</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>An <code>Image</code> object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>Image image = MediaTools.createImage(array);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"createImage-int:A-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createImage</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;createImage(int[]&nbsp;pixels,\n                                int&nbsp;width,\n                                int&nbsp;height)</pre>\n<div class=\"block\">Generates an image from a single-dimensional array of pixel values. The\n pixel array is stored in row-major order, which means that the pixels for\n the entire first row come before the pixels in the second row, and so on.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>pixels</code> - An array of <code>int</code>s representing the pixels</dd>\n<dd><code>width</code> - The width of the image</dd>\n<dd><code>height</code> - The height of the image</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>An <code>Image</code> object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>Image image = MediaTools.createImage(pixels, width, height);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"createImage-java.io.InputStream-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createImage</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;createImage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;in)</pre>\n<div class=\"block\">Generates an image from an input stream containing the data bytes for the\n image formatted in image/gif format.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>in</code> - An input stream containing the data</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>An <code>Image</code> object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>Image image = MediaTools.createImage(in);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"createImage-java.lang.String:A-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createImage</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;createImage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;hexData)</pre>\n<div class=\"block\">Generates an image from a string array that provides the pixel values.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>hexData</code> - A hex string array representing a .gif value</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>An <code>Image</code> object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>Image image = MediaTools.createImage(hexData);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getPixelArray-java.awt.Image-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getPixelArray</h4>\n<pre>public static&nbsp;int[][]&nbsp;getPixelArray(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;image)</pre>\n<div class=\"block\">Returns a two-dimensional array of the pixels in the image. As in\n standard image processing applications, the array is indexed so that the\n first subscript determines the row and the second determines the column.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>image</code> - The image</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>A two-dimensional array of pixels</dd>\n</dl>\n</li>\n</ul>\n<a name=\"saveImage-java.awt.Image-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>saveImage</h4>\n<pre>public static&nbsp;void&nbsp;saveImage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;image,\n                             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</pre>\n<div class=\"block\">Saves an image to a file with the specified filename. The data format for\n the image file is determined by the suffix of the filename. If the suffix\n of the file is not recognized as a supported image type, calling this\n method generates an error.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>image</code> - The image</dd>\n<dd><code>filename</code> - The name of the file to which the image is saved</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>MediaTools.saveImage(image, filename);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"saveImage-java.awt.Image-java.io.File-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>saveImage</h4>\n<pre>public static&nbsp;void&nbsp;saveImage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;image,\n                             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)</pre>\n<div class=\"block\">Saves an image to the specified file. The data format for the image file\n is determined by the suffix of the filename. If the suffix of the file is\n not recognized as a supported image type, calling this method generates\n an error.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>image</code> - The image</dd>\n<dd><code>file</code> - The <code>File</code> to which the image is saved</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>MediaTools.saveImage(image, file);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"createPSPreviewImage-java.awt.Image-java.lang.String:A-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createPSPreviewImage</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;createPSPreviewImage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;image,\n                                         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;preview)</pre>\n<div class=\"block\">Creates a new image that combines an existing image with a PostScript\n preview represented as a string array. Clients can retrieve the\n PostScript preview by asking for the <code>\"PSPreview\"</code> property.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>image</code> - The original image</dd>\n<dd><code>preview</code> - The corresponding PostScript preview</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>A new image that includes the preview</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>MediaTools.createPSPreviewImage(image, preview);</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"loadAudioClip-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>loadAudioClip</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AudioClip.html?is-external=true\" title=\"class or interface in java.applet\">AudioClip</a>&nbsp;loadAudioClip(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n<div class=\"block\">Searches the default audio clip search path for an audio clip with the\n specified name and then loads it to create an <code>AudioClip</code>. The\n search process consists of the following steps:\n \n <p>\n <ol>\n <li>Check to see if an audio clip with that name has already been\n defined. If so, return that audio clip.\n <p>\n \n <li>Check to see if there is a resource available with that name whose\n contents can be read as an <code>AudioClip</code>. If so, read the audio\n clip from the resource file.\n <p>\n \n <li>Load the audio clip from a file with the specified name, relative to\n the application directory or the applet code base.\n </ol>\n <p>\n \n The second and third steps are repeated for each element of the audio\n clip search path, which consists of a list of directories separated by\n colons.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>name</code> - The name of the audio clip</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>A new <code>AudioClip</code> object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>AudioClip clip = MediaTools.loadAudioClip(name);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"loadAudioClip-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>loadAudioClip</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AudioClip.html?is-external=true\" title=\"class or interface in java.applet\">AudioClip</a>&nbsp;loadAudioClip(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n                                      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;path)</pre>\n<div class=\"block\">Searches for an audio clip with the given name and loads it to create an\n <code>AudioClip</code>. Its operation is identical to the single-argument\n <a href=\"#loadAudioClip(String)\"><code>loadAudioClip</code></a> call\n except in that this version allows the client to specify the search path\n explicitly.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>name</code> - The name of the audio clip</dd>\n<dd><code>path</code> - A string of directories names separated by colons</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>A new <code>AudioClip</code> object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>AudioClip clip = MediaTools.loadAudioClip(name, path);</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"loadAudioClip-java.net.URL-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>loadAudioClip</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AudioClip.html?is-external=true\" title=\"class or interface in java.applet\">AudioClip</a>&nbsp;loadAudioClip(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URL.html?is-external=true\" title=\"class or interface in java.net\">URL</a>&nbsp;url)</pre>\n<div class=\"block\">Loads an audio clip from the specified URL.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>url</code> - The url containing the audio clip</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>A new <code>AudioClip</code> object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>AudioClip clip = MediaTools.loadAudioClip(url);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"defineAudioClip-java.lang.String-java.applet.AudioClip-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>defineAudioClip</h4>\n<pre>public static&nbsp;void&nbsp;defineAudioClip(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AudioClip.html?is-external=true\" title=\"class or interface in java.applet\">AudioClip</a>&nbsp;clip)</pre>\n<div class=\"block\">Inserts the given clip into the audio clip table under the specified\n name.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>name</code> - The name for the audio clip</dd>\n<dd><code>clip</code> - The audio clip to be stored in the table</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>MediaTools.defineAudioClip(name, clip);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"flushAudioClip-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>flushAudioClip</h4>\n<pre>public static&nbsp;void&nbsp;flushAudioClip(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n<div class=\"block\">Removes the audio clip with the given name from the cache, allowing it to\n be freed by the garbage collector.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>name</code> - The name for the audio clip</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>MediaTools.flushAudioClip(name);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"createAudioClip-java.io.InputStream-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createAudioClip</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AudioClip.html?is-external=true\" title=\"class or interface in java.applet\">AudioClip</a>&nbsp;createAudioClip(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;in)</pre>\n<div class=\"block\">Generates an audio clip from an input stream containing the data bytes\n for the audio clip. The implementation first tries to create a\n <code>SoundClip</code> object from the data. If that fails, it then backs\n up to the older strategy of using the <code>SunAudioClip</code> class.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>in</code> - An input stream containing the data</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>An <code>AudioClip</code> object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>AudioClip clip = MediaTools.createAudioClip(in);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"createAudioClip-java.lang.String:A-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createAudioClip</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AudioClip.html?is-external=true\" title=\"class or interface in java.applet\">AudioClip</a>&nbsp;createAudioClip(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;hexData)</pre>\n<div class=\"block\">Generates an audio clip from a string array that provides the sound\n values.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>hexData</code> - A hex string array representing an audio clip</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>An <code>AudioClip</code> object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>AudioClip audio clip = MediaTools.createAudioClip(hexData);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"openDataFile-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>openDataFile</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;openDataFile(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n<div class=\"block\">Searches the default datafile search path for a file with the specified\n name and then opens it to create an <code>InputStream</code>. The search\n process consists of the following steps:\n \n <p>\n <ol>\n <li>Check to see if there is a resource available with that name. If so,\n return an <code>InputStream</code> open on that resource.\n <p>\n \n <li>Open the file with the specified name, relative to the application\n directory or the applet code base.\n </ol>\n <p>\n \n These steps are repeated for each element of the datafile search path,\n which consists of a list of directories separated by colons.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>name</code> - The name of the input file</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>A new <code>InputStream</code> open on the specified file</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>InputStream in = MediaTools.openDataFile(name);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"openDataFile-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>openDataFile</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;openDataFile(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n                                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;path)</pre>\n<div class=\"block\">Searches for a data file with the given name and opens it to create an\n <code>InputStream</code>. Its operation is identical to the\n single-argument <a href=\"#openDataFile(String)\"><code>openDataFile</code>\n </a> call except in that this version allows the client to specify the\n search path explicitly.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>name</code> - The name of the audio clip</dd>\n<dd><code>path</code> - A string of directories names separated by colons</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>A new <code>InputStream</code> open on the specified file</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>InputStream in = MediaTools.openDataFile(name, path);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"openDataFile-java.net.URL-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>openDataFile</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;openDataFile(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URL.html?is-external=true\" title=\"class or interface in java.net\">URL</a>&nbsp;url)</pre>\n<div class=\"block\">Opens the specified URL to create an <code>InputStream</code>.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>url</code> - The URL of the data file</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>A new <code>InputStream</code> open on the specified URL</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>InputStream in = MediaTools.openDataFile(url);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"createBufferedImage-java.awt.Image-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createBufferedImage</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/BufferedImage.html?is-external=true\" title=\"class or interface in java.awt.image\">BufferedImage</a>&nbsp;createBufferedImage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;image,\n                                                int&nbsp;type)</pre>\n<div class=\"block\">Creates a <code>BufferedImage</code> from the specified image. The\n <code>type</code> parameter is used to specify the image type, as\n described in the <code>BufferedImage</code> documentation.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>image</code> - The original image</dd>\n<dd><code>type</code> - The type code used to describe the image model</dd>\n<dd><code>A</code> - <code>BufferedImage</code> containing the image data</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>BufferedImage image = MediaTools.createBufferedImage(image, type);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getHexInputStream-java.lang.String:A-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getHexInputStream</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;getHexInputStream(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;hexData)</pre>\n<div class=\"block\">Returns an input stream whose bytes come from the string array\n <code>hex</code>, in which the elements consist of continuous bytes of\n hex data.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>hexData</code> - An array of strings specifying a byte stream coded in hex</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>An input stream for reading the bytes</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>InputStream in = MediaTools.getHexInputStream(hexData);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setCachingEnabled-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setCachingEnabled</h4>\n<pre>public static&nbsp;void&nbsp;setCachingEnabled(boolean&nbsp;flag)</pre>\n<div class=\"block\">This method sets an internal flag in the <code>MediaTools</code> package\n to indicate whether images and audio clips are cached internally by name.\n This flag is disabled by default.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>flag</code> - <code>true</code> to enable caching by name,\n            <code>false</code> to disable it.</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>MediaTools.setCachingEnabled(flag);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"isCachingEnabled--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isCachingEnabled</h4>\n<pre>public static&nbsp;boolean&nbsp;isCachingEnabled()</pre>\n<div class=\"block\">This method returns the status of the flag that determins whether images\n and audio clips are cached internally by name, as described in <a\n href=\"#setCachingEnabled(boolean)\"><code>setCachingEnabled</code></a>.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd><code>true</code> if caching by name is enabled,\n         <code>false</code> otherwise.</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>boolean flag = MediaTools.isCachingEnabled();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getImageObserver--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getImageObserver</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;getImageObserver()</pre>\n<div class=\"block\">This method returns a new lightweight component suitable as an\n <code>imageObserver</code>.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>A new lightweight component suitable as an\n         <code>imageObserver</code>.</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>Component imageObserver = MediaTools.getImageObserver();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"beep--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>beep</h4>\n<pre>public static&nbsp;void&nbsp;beep()</pre>\n<div class=\"block\">This method sounds the audible alert on the console, which is typically a\n beep sound.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>MediaTools.beep();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"loadImage-java.net.URL-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>loadImage</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;loadImage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URL.html?is-external=true\" title=\"class or interface in java.net\">URL</a>&nbsp;url,\n                              boolean&nbsp;topLevel)</pre>\n<div class=\"block\">Loads an image from the specified URL. The <code>topLevel</code> flag is\n <code>false</code> if this is invoked internally.</div>\n</li>\n</ul>\n<a name=\"loadAudioClip-java.net.URL-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>loadAudioClip</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AudioClip.html?is-external=true\" title=\"class or interface in java.applet\">AudioClip</a>&nbsp;loadAudioClip(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URL.html?is-external=true\" title=\"class or interface in java.net\">URL</a>&nbsp;url,\n                                      boolean&nbsp;topLevel)</pre>\n<div class=\"block\">Loads an audio clip from the specified URL. The <code>topLevel</code>\n flag is <code>false</code> if this is invoked internally.</div>\n</li>\n</ul>\n<a name=\"openDataFile-java.net.URL-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>openDataFile</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;openDataFile(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URL.html?is-external=true\" title=\"class or interface in java.net\">URL</a>&nbsp;url,\n                                       boolean&nbsp;topLevel)</pre>\n<div class=\"block\">Opens a data file using the specified URL. The <code>topLevel</code> flag\n is <code>false</code> if this is invoked internally.</div>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/util/FileChooserFilter.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/util/PatchingClassLoader.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/util/MediaTools.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"MediaTools.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/util/PatchingClassLoader.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>PatchingClassLoader</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"PatchingClassLoader\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/util/MediaTools.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/util/RandomGenerator.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/util/PatchingClassLoader.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"PatchingClassLoader.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.util</div>\n<h2 title=\"Class PatchingClassLoader\" class=\"title\">Class PatchingClassLoader</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.ClassLoader</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.util.PatchingClassLoader</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">PatchingClassLoader</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true\" title=\"class or interface in java.lang\">ClassLoader</a></pre>\n<div class=\"block\">A ClassLoader that allows you to patch what the superclass is for an existing class\n as it is loaded.  This is primarily used to hot-patch ConsolePrograms to be CommandLinePrograms\n when run in a non-graphical setting.</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/PatchingClassLoader.html#PatchingClassLoader-java.lang.String-java.lang.Class-\">PatchingClassLoader</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;targetClassName,\n                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;newSuperClass)</code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/PatchingClassLoader.html#PatchingClassLoader-java.lang.String-java.lang.String-\">PatchingClassLoader</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;targetClassName,\n                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;newSuperClassName)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URL.html?is-external=true\" title=\"class or interface in java.net\">URL</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/PatchingClassLoader.html#getResource-java.lang.String-\">getResource</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/PatchingClassLoader.html#getResourceAsStream-java.lang.String-\">getResourceAsStream</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/PatchingClassLoader.html#loadClass-java.lang.String-boolean-\">loadClass</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n         boolean&nbsp;resolve)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.ClassLoader\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true\" title=\"class or interface in java.lang\">ClassLoader</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#clearAssertionStatus--\" title=\"class or interface in java.lang\">clearAssertionStatus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#defineClass-byte:A-int-int-\" title=\"class or interface in java.lang\">defineClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#defineClass-java.lang.String-byte:A-int-int-\" title=\"class or interface in java.lang\">defineClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#defineClass-java.lang.String-byte:A-int-int-java.security.ProtectionDomain-\" title=\"class or interface in java.lang\">defineClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#defineClass-java.lang.String-java.nio.ByteBuffer-java.security.ProtectionDomain-\" title=\"class or interface in java.lang\">defineClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#definePackage-java.lang.String-java.lang.String-java.lang.String-java.lang.String-java.lang.String-java.lang.String-java.lang.String-java.net.URL-\" title=\"class or interface in java.lang\">definePackage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#findClass-java.lang.String-\" title=\"class or interface in java.lang\">findClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#findLibrary-java.lang.String-\" title=\"class or interface in java.lang\">findLibrary</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#findLoadedClass-java.lang.String-\" title=\"class or interface in java.lang\">findLoadedClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#findResource-java.lang.String-\" title=\"class or interface in java.lang\">findResource</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#findResources-java.lang.String-\" title=\"class or interface in java.lang\">findResources</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#findSystemClass-java.lang.String-\" title=\"class or interface in java.lang\">findSystemClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#getClassLoadingLock-java.lang.String-\" title=\"class or interface in java.lang\">getClassLoadingLock</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#getPackage-java.lang.String-\" title=\"class or interface in java.lang\">getPackage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#getPackages--\" title=\"class or interface in java.lang\">getPackages</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#getParent--\" title=\"class or interface in java.lang\">getParent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#getResources-java.lang.String-\" title=\"class or interface in java.lang\">getResources</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#getSystemClassLoader--\" title=\"class or interface in java.lang\">getSystemClassLoader</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#getSystemResource-java.lang.String-\" title=\"class or interface in java.lang\">getSystemResource</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#getSystemResourceAsStream-java.lang.String-\" title=\"class or interface in java.lang\">getSystemResourceAsStream</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#getSystemResources-java.lang.String-\" title=\"class or interface in java.lang\">getSystemResources</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#loadClass-java.lang.String-\" title=\"class or interface in java.lang\">loadClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#registerAsParallelCapable--\" title=\"class or interface in java.lang\">registerAsParallelCapable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#resolveClass-java.lang.Class-\" title=\"class or interface in java.lang\">resolveClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#setClassAssertionStatus-java.lang.String-boolean-\" title=\"class or interface in java.lang\">setClassAssertionStatus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#setDefaultAssertionStatus-boolean-\" title=\"class or interface in java.lang\">setDefaultAssertionStatus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#setPackageAssertionStatus-java.lang.String-boolean-\" title=\"class or interface in java.lang\">setPackageAssertionStatus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#setSigners-java.lang.Class-java.lang.Object:A-\" title=\"class or interface in java.lang\">setSigners</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"PatchingClassLoader-java.lang.String-java.lang.Class-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>PatchingClassLoader</h4>\n<pre>public&nbsp;PatchingClassLoader(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;targetClassName,\n                           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;newSuperClass)</pre>\n</li>\n</ul>\n<a name=\"PatchingClassLoader-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>PatchingClassLoader</h4>\n<pre>public&nbsp;PatchingClassLoader(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;targetClassName,\n                           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;newSuperClassName)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"loadClass-java.lang.String-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>loadClass</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;loadClass(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n                          boolean&nbsp;resolve)\n                   throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true\" title=\"class or interface in java.lang\">ClassNotFoundException</a></pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#loadClass-java.lang.String-boolean-\" title=\"class or interface in java.lang\">loadClass</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true\" title=\"class or interface in java.lang\">ClassLoader</a></code></dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true\" title=\"class or interface in java.lang\">ClassNotFoundException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getResourceAsStream-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getResourceAsStream</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;getResourceAsStream(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#getResourceAsStream-java.lang.String-\" title=\"class or interface in java.lang\">getResourceAsStream</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true\" title=\"class or interface in java.lang\">ClassLoader</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getResource-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>getResource</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URL.html?is-external=true\" title=\"class or interface in java.net\">URL</a>&nbsp;getResource(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#getResource-java.lang.String-\" title=\"class or interface in java.lang\">getResource</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true\" title=\"class or interface in java.lang\">ClassLoader</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/util/MediaTools.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/util/RandomGenerator.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/util/PatchingClassLoader.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"PatchingClassLoader.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/util/RandomGenerator.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>RandomGenerator</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"RandomGenerator\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9,\"i2\":9,\"i3\":9,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/util/PatchingClassLoader.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/util/SoundClip.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/util/RandomGenerator.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"RandomGenerator.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.util</div>\n<h2 title=\"Class RandomGenerator\" class=\"title\">Class RandomGenerator</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true\" title=\"class or interface in java.util\">java.util.Random</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.util.RandomGenerator</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a></dd>\n</dl>\n<dl>\n<dt>Direct Known Subclasses:</dt>\n<dd><a href=\"../../stanford/cs106/util/RandomGenerator.html\" title=\"class in stanford.cs106.util\">RandomGenerator</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">RandomGenerator</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true\" title=\"class or interface in java.util\">Random</a></pre>\n<div class=\"block\">This class implements a simple random number generator that allows clients to\n generate pseudorandom integers, doubles, booleans, and colors. To use it, the\n first step is to declare an instance variable to hold the random generator as\n follows:\n\n <p>\n \n <pre>\n <code>\n &nbsp;    private RandomGenerator rgen = RandomGenerator.getInstance();\n </code>\n </pre>\n\n <p>\n By default, the <code>RandomGenerator</code> object is initialized to begin\n at an unpredictable point in a pseudorandom sequence. During debugging, it is\n often useful to set the internal seed for the random generator explicitly so\n that it always returns the same sequence. To do so, you need to invoke the\n <a href=\"http://com/j2se/1.4.2/docs/api/java/util/Random.html#setSeed(int)\">\n <code>setSeed</code></a> method.\n\n <p>\n The <code>RandomGenerator</code> object returned by <code>getInstance</code>\n is shared across all classes in an application. Using this shared instance of\n the generator is preferable to allocating new instances of\n <code>RandomGenerator</code>. If you create several random generators in\n succession, they will typically generate the same sequence of values.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#acm.util.RandomGenerator\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/RandomGenerator.html#RandomGenerator--\">RandomGenerator</a></span>()</code>\n<div class=\"block\">Creates a new random generator.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/RandomGenerator.html#RandomGenerator-long-\">RandomGenerator</a></span>(long&nbsp;seed)</code>\n<div class=\"block\">Creates a new random generator, using the given seed value to influence\n its random generation of values.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/RandomGenerator.html#clearFixedIntegers--\">clearFixedIntegers</a></span>()</code>\n<div class=\"block\">Removes any previously added fixed numbers that were passed to\n feedFixedIntegers.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/RandomGenerator.html#feedFixedIntegers-int...-\">feedFixedIntegers</a></span>(int...&nbsp;numbers)</code>\n<div class=\"block\">Adds a set of fixed numbers that will be returned by future calls to\n nextInt.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/RandomGenerator.html#feedFixedIntegers-java.lang.Iterable-\">feedFixedIntegers</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true\" title=\"class or interface in java.lang\">Integer</a>&gt;&nbsp;numbers)</code>\n<div class=\"block\">Adds a set of fixed numbers that will be returned by future calls to\n nextInt.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../acm/util/RandomGenerator.html\" title=\"class in acm.util\">RandomGenerator</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/RandomGenerator.html#getInstance--\">getInstance</a></span>()</code>\n<div class=\"block\">Returns a <code>RandomGenerator</code> instance that can be shared among\n several classes.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/RandomGenerator.html#nextBoolean--\">nextBoolean</a></span>()</code>\n<div class=\"block\">Returns a random <code>boolean</code> value that is <code>true</code> or\n <code>false</code> with equal probability.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/RandomGenerator.html#nextBoolean-double-\">nextBoolean</a></span>(double&nbsp;p)</code>\n<div class=\"block\">Returns a random <code>boolean</code> value with the specified\n probability.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>&lt;T&gt;&nbsp;T</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/RandomGenerator.html#nextChoice-java.lang.Iterable-\">nextChoice</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;T&gt;&nbsp;choices)</code>\n<div class=\"block\">Randomly chooses one of the values passed and returns it.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>&lt;T&gt;&nbsp;T</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/RandomGenerator.html#nextChoice-java.util.List-\">nextChoice</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;T&gt;&nbsp;choices)</code>\n<div class=\"block\">Randomly chooses one of the values passed and returns it.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>&lt;T&gt;&nbsp;T</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/RandomGenerator.html#nextChoice-T...-\">nextChoice</a></span>(T...&nbsp;choices)</code>\n<div class=\"block\">Randomly chooses one of the values passed and returns it.</div>\n</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/RandomGenerator.html#nextColor--\">nextColor</a></span>()</code>\n<div class=\"block\">Returns a random opaque color whose components are chosen uniformly in\n the 0-255 range.</div>\n</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/RandomGenerator.html#nextDouble-double-double-\">nextDouble</a></span>(double&nbsp;low,\n          double&nbsp;high)</code>\n<div class=\"block\">Returns the next random real number in the specified range.</div>\n</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/RandomGenerator.html#nextInt--\">nextInt</a></span>()</code>\n<div class=\"block\">Returns the next random integer, which can be any legal integer value.</div>\n</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/RandomGenerator.html#nextInt-int-\">nextInt</a></span>(int&nbsp;n)</code>\n<div class=\"block\">Returns the next random integer between 0 and <code>n</code>-1,\n inclusive.</div>\n</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/RandomGenerator.html#nextInt-int-int-\">nextInt</a></span>(int&nbsp;low,\n       int&nbsp;high)</code>\n<div class=\"block\">Returns the next random integer in the specified range.</div>\n</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/RandomGenerator.html#setSharedSeed-long-\">setSharedSeed</a></span>(long&nbsp;seed)</code>\n<div class=\"block\">Sets a seed value that will be used by all RandomGenerators when they are\n constructed.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.util.Random\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.util.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true\" title=\"class or interface in java.util\">Random</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#doubles--\" title=\"class or interface in java.util\">doubles</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#doubles-double-double-\" title=\"class or interface in java.util\">doubles</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#doubles-long-\" title=\"class or interface in java.util\">doubles</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#doubles-long-double-double-\" title=\"class or interface in java.util\">doubles</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#ints--\" title=\"class or interface in java.util\">ints</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#ints-int-int-\" title=\"class or interface in java.util\">ints</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#ints-long-\" title=\"class or interface in java.util\">ints</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#ints-long-int-int-\" title=\"class or interface in java.util\">ints</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#longs--\" title=\"class or interface in java.util\">longs</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#longs-long-\" title=\"class or interface in java.util\">longs</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#longs-long-long-\" title=\"class or interface in java.util\">longs</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#longs-long-long-long-\" title=\"class or interface in java.util\">longs</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#next-int-\" title=\"class or interface in java.util\">next</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#nextBytes-byte:A-\" title=\"class or interface in java.util\">nextBytes</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#nextDouble--\" title=\"class or interface in java.util\">nextDouble</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#nextFloat--\" title=\"class or interface in java.util\">nextFloat</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#nextGaussian--\" title=\"class or interface in java.util\">nextGaussian</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#nextLong--\" title=\"class or interface in java.util\">nextLong</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#setSeed-long-\" title=\"class or interface in java.util\">setSeed</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"RandomGenerator--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>RandomGenerator</h4>\n<pre>public&nbsp;RandomGenerator()</pre>\n<div class=\"block\">Creates a new random generator. Most clients will not use the constructor\n directly but will instead call <a href=\"#getInstance()\">\n <code>getInstance</code></a> to obtain a <code>RandomGenerator</code>\n object that is shared by all classes in the application.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>RandomGenerator rgen = new RandomGenerator();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"RandomGenerator-long-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>RandomGenerator</h4>\n<pre>public&nbsp;RandomGenerator(long&nbsp;seed)</pre>\n<div class=\"block\">Creates a new random generator, using the given seed value to influence\n its random generation of values.</div>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"nextChoice-java.lang.Object:A-\">\n<!--   -->\n</a><a name=\"nextChoice-T...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>nextChoice</h4>\n<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;nextChoice(T...&nbsp;choices)</pre>\n<div class=\"block\">Randomly chooses one of the values passed and returns it.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>choices</code> - a set of choices</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>a randomly chosen choice</dd>\n</dl>\n</li>\n</ul>\n<a name=\"nextChoice-java.util.List-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>nextChoice</h4>\n<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;nextChoice(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;T&gt;&nbsp;choices)</pre>\n<div class=\"block\">Randomly chooses one of the values passed and returns it.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>choices</code> - a set of choices</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>a randomly chosen choice</dd>\n</dl>\n</li>\n</ul>\n<a name=\"nextChoice-java.lang.Iterable-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>nextChoice</h4>\n<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;nextChoice(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;T&gt;&nbsp;choices)</pre>\n<div class=\"block\">Randomly chooses one of the values passed and returns it.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>choices</code> - a set of choices</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>a randomly chosen choice</dd>\n</dl>\n</li>\n</ul>\n<a name=\"nextInt--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>nextInt</h4>\n<pre>public&nbsp;int&nbsp;nextInt()</pre>\n<div class=\"block\">Returns the next random integer, which can be any legal integer value.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#nextInt--\" title=\"class or interface in java.util\">nextInt</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true\" title=\"class or interface in java.util\">Random</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"nextInt-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>nextInt</h4>\n<pre>public&nbsp;int&nbsp;nextInt(int&nbsp;n)</pre>\n<div class=\"block\">Returns the next random integer between 0 and <code>n</code>-1,\n inclusive. This method is in modern implementations of the\n <code>Random</code> class, but is missing from JDK 1.1.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#nextInt-int-\" title=\"class or interface in java.util\">nextInt</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true\" title=\"class or interface in java.util\">Random</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"nextBoolean--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>nextBoolean</h4>\n<pre>public&nbsp;boolean&nbsp;nextBoolean()</pre>\n<div class=\"block\">Returns a random <code>boolean</code> value that is <code>true</code> or\n <code>false</code> with equal probability. This method is in modern\n implementations of the <code>Random</code> class, but is missing from JDK\n 1.1.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#nextBoolean--\" title=\"class or interface in java.util\">nextBoolean</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true\" title=\"class or interface in java.util\">Random</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"nextInt-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>nextInt</h4>\n<pre>public&nbsp;int&nbsp;nextInt(int&nbsp;low,\n                   int&nbsp;high)</pre>\n<div class=\"block\">Returns the next random integer in the specified range. For example, you\n can generate the roll of a six-sided die by calling\n\n <p>\n \n <pre>\n <code>\n &nbsp;    rgen.nextInt(1, 6);\n </code>\n </pre>\n\n <p>\n or a random decimal digit by calling\n\n <p>\n \n <pre>\n <code>\n &nbsp;    rgen.nextInt(0, 9);\n </code>\n </pre></div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>low</code> - The low end of the range</dd>\n<dd><code>high</code> - The high end of the range</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The next random <code>int</code> between <code>low</code> and\n         <code>high</code>, inclusive</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int k = rgen.nextInt(low, high)</dd>\n</dl>\n</li>\n</ul>\n<a name=\"nextDouble-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>nextDouble</h4>\n<pre>public&nbsp;double&nbsp;nextDouble(double&nbsp;low,\n                         double&nbsp;high)</pre>\n<div class=\"block\">Returns the next random real number in the specified range. The resulting\n value is always at least <code>low</code> but always strictly less than\n <code>high</code>. You can use this method to generate continuous random\n values. For example, you can set the variables <code>x</code> and\n <code>y</code> to specify a random point inside the unit square as\n follows:\n\n <p>\n \n <pre>\n <code>\n &nbsp;    double x = rgen.nextDouble(0.0, 1.0);\n &nbsp;    double y = rgen.nextDouble(0.0, 1.0);\n </code>\n </pre></div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>low</code> - The low end of the range</dd>\n<dd><code>high</code> - The high end of the range</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>A random <code>double</code> value <i>d</i> in the range\n         <code>low</code> &le; <i>d</i> &lt; <code>high</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double d = rgen.nextDouble(low, high)</dd>\n</dl>\n</li>\n</ul>\n<a name=\"nextBoolean-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>nextBoolean</h4>\n<pre>public&nbsp;boolean&nbsp;nextBoolean(double&nbsp;p)</pre>\n<div class=\"block\">Returns a random <code>boolean</code> value with the specified\n probability. You can use this method to simulate an event that occurs\n with a particular probability. For example, you could simulate the result\n of tossing a coin like this:\n\n <p>\n \n <pre>\n <code>\n &nbsp;    String coinFlip = rgen.nextBoolean(0.5) ? \"HEADS\" : \"TAILS\";\n </code>\n </pre></div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>p</code> - A value between 0 (impossible) and 1 (certain) indicating the\n            probability</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value <code>true</code> with probability <code>p</code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>if (rgen.nextBoolean(p)) . . .</dd>\n</dl>\n</li>\n</ul>\n<a name=\"nextColor--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>nextColor</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;nextColor()</pre>\n<div class=\"block\">Returns a random opaque color whose components are chosen uniformly in\n the 0-255 range.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>A random opaque\n         <a href=\"http://com/j2se/1.4.2/docs/api/java/awt/Color.html\">\n         <code>Color</code></a></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>Color color = rgen.newColor()</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getInstance--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getInstance</h4>\n<pre>public static&nbsp;<a href=\"../../acm/util/RandomGenerator.html\" title=\"class in acm.util\">RandomGenerator</a>&nbsp;getInstance()</pre>\n<div class=\"block\">Returns a <code>RandomGenerator</code> instance that can be shared among\n several classes.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>A shared <code>RandomGenerator</code> object</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>RandomGenerator rgen = RandomGenerator.getInstance();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"clearFixedIntegers--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clearFixedIntegers</h4>\n<pre>public static&nbsp;void&nbsp;clearFixedIntegers()</pre>\n<div class=\"block\">Removes any previously added fixed numbers that were passed to\n feedFixedIntegers.</div>\n</li>\n</ul>\n<a name=\"feedFixedIntegers-int...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>feedFixedIntegers</h4>\n<pre>public static&nbsp;void&nbsp;feedFixedIntegers(int...&nbsp;numbers)</pre>\n<div class=\"block\">Adds a set of fixed numbers that will be returned by future calls to\n nextInt. This is done to \"rig\" the random generator so it will always\n return the same sequence of integers, to aid in testing of programs.\n Another way to achieve a similar effect is to use the setSeed method.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>numbers</code> - </dd>\n</dl>\n</li>\n</ul>\n<a name=\"feedFixedIntegers-java.lang.Iterable-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>feedFixedIntegers</h4>\n<pre>public static&nbsp;void&nbsp;feedFixedIntegers(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true\" title=\"class or interface in java.lang\">Integer</a>&gt;&nbsp;numbers)</pre>\n<div class=\"block\">Adds a set of fixed numbers that will be returned by future calls to\n nextInt. This is done to \"rig\" the random generator so it will always\n return the same sequence of integers, to aid in testing of programs.\n Another way to achieve a similar effect is to use the setSeed method.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>numbers</code> - </dd>\n</dl>\n</li>\n</ul>\n<a name=\"setSharedSeed-long-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>setSharedSeed</h4>\n<pre>public static&nbsp;void&nbsp;setSharedSeed(long&nbsp;seed)</pre>\n<div class=\"block\">Sets a seed value that will be used by all RandomGenerators when they are\n constructed. Note: This will not change the seed of any previously\n constructed RandomGenerator object. To do that, call\n <code>rg.setSeed(seed);</code> on that object.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>seed</code> - </dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/util/PatchingClassLoader.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../acm/util/SoundClip.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/util/RandomGenerator.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"RandomGenerator.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/util/SoundClip.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>SoundClip</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"SoundClip\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":10,\"i16\":9,\"i17\":10,\"i18\":10,\"i19\":10,\"i20\":10,\"i21\":9,\"i22\":10,\"i23\":10,\"i24\":10,\"i25\":10,\"i26\":10,\"i27\":10,\"i28\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/util/RandomGenerator.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li>Next&nbsp;Class</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/util/SoundClip.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"SoundClip.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">acm.util</div>\n<h2 title=\"Class SoundClip\" class=\"title\">Class SoundClip</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>acm.util.SoundClip</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AudioClip.html?is-external=true\" title=\"class or interface in java.applet\">AudioClip</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">SoundClip</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>\nimplements <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AudioClip.html?is-external=true\" title=\"class or interface in java.applet\">AudioClip</a></pre>\n<div class=\"block\">This class represents a sound, which can be created from a URL, sound file,\n resource stream, or digital samples.</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#LEFT\">LEFT</a></span></code>\n<div class=\"block\">Identifies the left channel in a stereo sound.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#MAX_SAMPLE\">MAX_SAMPLE</a></span></code>\n<div class=\"block\">Specifies the maximum value of a sample in a sound.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#MONO\">MONO</a></span></code>\n<div class=\"block\">Number of channels in a mono sound.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#RIGHT\">RIGHT</a></span></code>\n<div class=\"block\">Identifies the right channel in a stereo sound.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#STANDARD_FRAME_RATE\">STANDARD_FRAME_RATE</a></span></code>\n<div class=\"block\">Specifies the standard frame rate in a sampled sound.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#STEREO\">STEREO</a></span></code>\n<div class=\"block\">Number of channels in a stereo sound.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#SoundClip--\">SoundClip</a></span>()</code>\n<div class=\"block\">Creates an empty single-channel sound to which samples can be added.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#SoundClip-java.io.File-\">SoundClip</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)</code>\n<div class=\"block\">Creates a new sound by reading the data from the specified file.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#SoundClip-java.io.InputStream-\">SoundClip</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;in)</code>\n<div class=\"block\">Creates a new sound by reading the data from the specified input stream.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#SoundClip-int-\">SoundClip</a></span>(int&nbsp;channels)</code>\n<div class=\"block\">Creates an empty sound with the specified number of channels, which\n must be 1 for mono and 2 for stereo.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#SoundClip-int:A-\">SoundClip</a></span>(int[]&nbsp;samples)</code>\n<div class=\"block\">Creates a new mono sound from the sample array.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#SoundClip-int:A-int:A-\">SoundClip</a></span>(int[]&nbsp;left,\n         int[]&nbsp;right)</code>\n<div class=\"block\">Creates a new stereo sound from the two sample arrays.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#SoundClip-java.lang.String-\">SoundClip</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>\n<div class=\"block\">Creates a new sound by reading the data from the specified file.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#SoundClip-java.net.URL-\">SoundClip</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URL.html?is-external=true\" title=\"class or interface in java.net\">URL</a>&nbsp;url)</code>\n<div class=\"block\">Creates a new sound by reading the data from the specified URL.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#addSampleData-int-\">addSampleData</a></span>(int&nbsp;sample)</code>\n<div class=\"block\">Adds a single sound sample to the end of the sound.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#addSampleData-int:A-\">addSampleData</a></span>(int[]&nbsp;samples)</code>\n<div class=\"block\">Adds the specified samples to the end of the sound.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#addSampleData-int:A-int:A-\">addSampleData</a></span>(int[]&nbsp;left,\n             int[]&nbsp;right)</code>\n<div class=\"block\">Adds the specified samples to the end of the appropriate channels of\n the stereo sound.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#addSampleData-int-int-\">addSampleData</a></span>(int&nbsp;left,\n             int&nbsp;right)</code>\n<div class=\"block\">Adds the specified samples to the end of the appropriate channels of\n the stereo sound.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/sound/sampled/AudioInputStream.html?is-external=true\" title=\"class or interface in javax.sound.sampled\">AudioInputStream</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#getAudioInputStream--\">getAudioInputStream</a></span>()</code>\n<div class=\"block\">Returns an <code>AudioInputStream</code> for the sound.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#getChannelCount--\">getChannelCount</a></span>()</code>\n<div class=\"block\">Returns the number of channels.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected byte[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#getData--\">getData</a></span>()</code>\n<div class=\"block\">Returns the byte array containing the sound data.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#getDuration--\">getDuration</a></span>()</code>\n<div class=\"block\">Returns the duration of a sound (in seconds).</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/sound/sampled/AudioFormat.html?is-external=true\" title=\"class or interface in javax.sound.sampled\">AudioFormat</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#getFormat--\">getFormat</a></span>()</code>\n<div class=\"block\">Returns the format in which the sound is stored.</div>\n</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#getFrameCount--\">getFrameCount</a></span>()</code>\n<div class=\"block\">Returns the number of frames in a sound.</div>\n</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#getFrameIndex--\">getFrameIndex</a></span>()</code>\n<div class=\"block\">Returns the current frame index in the sound.</div>\n</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#getFrameRate--\">getFrameRate</a></span>()</code>\n<div class=\"block\">Returns the frame rate of the sound.</div>\n</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#getName--\">getName</a></span>()</code>\n<div class=\"block\">Returns the name of the sound, which is typically the file name from which it\n was read.</div>\n</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#getSampleData--\">getSampleData</a></span>()</code>\n<div class=\"block\">Returns an array of integers corresponding to the samples in the primary\n channel of the sound.</div>\n</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>int[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#getSampleData-int-\">getSampleData</a></span>(int&nbsp;channel)</code>\n<div class=\"block\">Returns an array of integers corresponding to the samples in the specified\n channel, which is typically represented by <code>LEFT</code> or <code>RIGHT</code>.</div>\n</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#getVolume--\">getVolume</a></span>()</code>\n<div class=\"block\">Returns the overall volume setting for the sound, which is a number\n between 0 (silent) and 1 (maximum volume).</div>\n</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#intensityToSample-double-\">intensityToSample</a></span>(double&nbsp;intensity)</code>\n<div class=\"block\">Converts an intensity value between -1.0 and +1.0 into the corresponding\n integer sample in the range -32767 and +32767.</div>\n</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#isStereo--\">isStereo</a></span>()</code>\n<div class=\"block\">Returns <code>true</code> if the sound is recorded in stereo.</div>\n</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#loop--\">loop</a></span>()</code>\n<div class=\"block\">Plays the sound in a continuous audio loop.</div>\n</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#play--\">play</a></span>()</code>\n<div class=\"block\">Plays the sound through the computer's audio system.</div>\n</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#rewind--\">rewind</a></span>()</code>\n<div class=\"block\">Rewinds the sound to the beginning.</div>\n</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#sampleToIntensity-int-\">sampleToIntensity</a></span>(int&nbsp;sample)</code>\n<div class=\"block\">Converts an integer sample in the range -32767 and +32767 into a\n <code>double</code> between -1.0 and +1.0.</div>\n</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#save-java.io.File-\">save</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)</code>\n<div class=\"block\">Writes the sound to the specified <code>File</code> object.</div>\n</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#save-java.lang.String-\">save</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>\n<div class=\"block\">Writes a data file containing the specified sound.</div>\n</td>\n</tr>\n<tr id=\"i24\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#setFrameIndex-int-\">setFrameIndex</a></span>(int&nbsp;frameIndex)</code>\n<div class=\"block\">Sets the current frame index.</div>\n</td>\n</tr>\n<tr id=\"i25\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#setName-java.lang.String-\">setName</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>\n<div class=\"block\">Sets a name to identify the sound.</div>\n</td>\n</tr>\n<tr id=\"i26\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#setVolume-double-\">setVolume</a></span>(double&nbsp;volume)</code>\n<div class=\"block\">Sets the overall volume setting for the sound, which is a number\n between 0 (silent) and 1 (maximum volume).</div>\n</td>\n</tr>\n<tr id=\"i27\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#stop--\">stop</a></span>()</code>\n<div class=\"block\">Stops the playback of the sound.</div>\n</td>\n</tr>\n<tr id=\"i28\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../acm/util/SoundClip.html#toString--\">toString</a></span>()</code>\n<div class=\"block\">Converts a sound to a string.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"MONO\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MONO</h4>\n<pre>public static final&nbsp;int MONO</pre>\n<div class=\"block\">Number of channels in a mono sound.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.util.SoundClip.MONO\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"STEREO\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>STEREO</h4>\n<pre>public static final&nbsp;int STEREO</pre>\n<div class=\"block\">Number of channels in a stereo sound.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.util.SoundClip.STEREO\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"LEFT\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>LEFT</h4>\n<pre>public static final&nbsp;int LEFT</pre>\n<div class=\"block\">Identifies the left channel in a stereo sound.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.util.SoundClip.LEFT\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"RIGHT\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>RIGHT</h4>\n<pre>public static final&nbsp;int RIGHT</pre>\n<div class=\"block\">Identifies the right channel in a stereo sound.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.util.SoundClip.RIGHT\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"STANDARD_FRAME_RATE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>STANDARD_FRAME_RATE</h4>\n<pre>public static final&nbsp;double STANDARD_FRAME_RATE</pre>\n<div class=\"block\">Specifies the standard frame rate in a sampled sound.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.util.SoundClip.STANDARD_FRAME_RATE\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MAX_SAMPLE\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>MAX_SAMPLE</h4>\n<pre>public static final&nbsp;int MAX_SAMPLE</pre>\n<div class=\"block\">Specifies the maximum value of a sample in a sound.  Samples are signed integers\n between <code>-MAX_SAMPLE</code> and <code>MAX_SAMPLE</code>.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#acm.util.SoundClip.MAX_SAMPLE\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"SoundClip--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SoundClip</h4>\n<pre>public&nbsp;SoundClip()</pre>\n<div class=\"block\">Creates an empty single-channel sound to which samples can be added.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>SoundClip sound = new SoundClip();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"SoundClip-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SoundClip</h4>\n<pre>public&nbsp;SoundClip(int&nbsp;channels)</pre>\n<div class=\"block\">Creates an empty sound with the specified number of channels, which\n must be 1 for mono and 2 for stereo.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>channels</code> - The desired number of channels (1 for mono, 2 for stereo)</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>SoundClip sound = new SoundClip(channels);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"SoundClip-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SoundClip</h4>\n<pre>public&nbsp;SoundClip(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n<div class=\"block\">Creates a new sound by reading the data from the specified file.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>name</code> - The file from which the sound is read</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>SoundClip sound = new SoundClip(name);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"SoundClip-java.io.File-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SoundClip</h4>\n<pre>public&nbsp;SoundClip(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)</pre>\n<div class=\"block\">Creates a new sound by reading the data from the specified file.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>file</code> - A <code>File</code> object from which the sound is read</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>SoundClip sound = new SoundClip(file);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"SoundClip-java.net.URL-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SoundClip</h4>\n<pre>public&nbsp;SoundClip(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URL.html?is-external=true\" title=\"class or interface in java.net\">URL</a>&nbsp;url)</pre>\n<div class=\"block\">Creates a new sound by reading the data from the specified URL.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>url</code> - A network URL containing the sound</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>SoundClip sound = new SoundClip(url);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"SoundClip-java.io.InputStream-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SoundClip</h4>\n<pre>public&nbsp;SoundClip(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;in)</pre>\n<div class=\"block\">Creates a new sound by reading the data from the specified input stream.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>in</code> - An <code>InputStream</code> from which the sound is read</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>SoundClip sound = new SoundClip(in);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"SoundClip-int:A-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SoundClip</h4>\n<pre>public&nbsp;SoundClip(int[]&nbsp;samples)</pre>\n<div class=\"block\">Creates a new mono sound from the sample array.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>samples</code> - An array of integers containing the sampled sound</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>SoundClip sound = new SoundClip(samples);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"SoundClip-int:A-int:A-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>SoundClip</h4>\n<pre>public&nbsp;SoundClip(int[]&nbsp;left,\n                 int[]&nbsp;right)</pre>\n<div class=\"block\">Creates a new stereo sound from the two sample arrays.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>left</code> - An array of integers containing the samples for the left channel</dd>\n<dd><code>right</code> - An array of integers containing the samples for the right channel</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>SoundClip sound = new SoundClip(samples);</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"play--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>play</h4>\n<pre>public&nbsp;void&nbsp;play()</pre>\n<div class=\"block\">Plays the sound through the computer's audio system.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AudioClip.html?is-external=true#play--\" title=\"class or interface in java.applet\">play</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AudioClip.html?is-external=true\" title=\"class or interface in java.applet\">AudioClip</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>sound.play();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"loop--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>loop</h4>\n<pre>public&nbsp;void&nbsp;loop()</pre>\n<div class=\"block\">Plays the sound in a continuous audio loop.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AudioClip.html?is-external=true#loop--\" title=\"class or interface in java.applet\">loop</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AudioClip.html?is-external=true\" title=\"class or interface in java.applet\">AudioClip</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>sound.loop();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"stop--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>stop</h4>\n<pre>public&nbsp;void&nbsp;stop()</pre>\n<div class=\"block\">Stops the playback of the sound.  Calling <code>stop</code> saves the\n current frame index so that calling <code>start</code> will resume from\n the point at which it stopped.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AudioClip.html?is-external=true#stop--\" title=\"class or interface in java.applet\">stop</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AudioClip.html?is-external=true\" title=\"class or interface in java.applet\">AudioClip</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>sound.stop();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"save-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>save</h4>\n<pre>public&nbsp;void&nbsp;save(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</pre>\n<div class=\"block\">Writes a data file containing the specified sound.  The format of the sound\n is determined by the file extension, as follows:\n\n <center>\n <table border=1>\n <tr><td align=center><code>.au</code></td><td>Sun audio file with ALAW encoding</td></tr>\n <tr><td align=center><code>.wav</code></td><td>Waveform audio format</td></tr>\n <tr><td align=center><code>.aif</code> or <code>.aiff</code></td><td>Audio Interchange File Format</td></tr>\n </table>\n </center></div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>filename</code> - The name of the file</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>sound.save(filename);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"save-java.io.File-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>save</h4>\n<pre>public&nbsp;void&nbsp;save(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)</pre>\n<div class=\"block\">Writes the sound to the specified <code>File</code> object.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>file</code> - The <code>File</code> object to which the sound is written</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>sound.save(file);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getName--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getName</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getName()</pre>\n<div class=\"block\">Returns the name of the sound, which is typically the file name from which it\n was read.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The name of the sound</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>String name = sound.getName();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setName-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setName</h4>\n<pre>public&nbsp;void&nbsp;setName(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n<div class=\"block\">Sets a name to identify the sound.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>name</code> - The name to use for the sound</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>sound.setName(name);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getChannelCount--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getChannelCount</h4>\n<pre>public&nbsp;int&nbsp;getChannelCount()</pre>\n<div class=\"block\">Returns the number of channels.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The number of channels (1 for mono, 2 for stereo)</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int channels = sound.getChannelCount();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"isStereo--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isStereo</h4>\n<pre>public&nbsp;boolean&nbsp;isStereo()</pre>\n<div class=\"block\">Returns <code>true</code> if the sound is recorded in stereo.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd><code>true</code> if the sound is recorded in stereo</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>if (sound.isStereo()) . . .</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getFrameCount--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFrameCount</h4>\n<pre>public&nbsp;int&nbsp;getFrameCount()</pre>\n<div class=\"block\">Returns the number of frames in a sound.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The number of frames in a sound</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int nFrames = sound.getFrameCount();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getFrameRate--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFrameRate</h4>\n<pre>public&nbsp;double&nbsp;getFrameRate()</pre>\n<div class=\"block\">Returns the frame rate of the sound.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The frame rate of the sound (in frames/second)</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double frameRate = sound.getFrameRate();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getDuration--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getDuration</h4>\n<pre>public&nbsp;double&nbsp;getDuration()</pre>\n<div class=\"block\">Returns the duration of a sound (in seconds).</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The duration of a sound (in seconds)</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double duration = sound.getDuration();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getFrameIndex--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFrameIndex</h4>\n<pre>public&nbsp;int&nbsp;getFrameIndex()</pre>\n<div class=\"block\">Returns the current frame index in the sound.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The current frame index in the sound</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int frameIndex = sound.getFrameIndex();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setFrameIndex-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setFrameIndex</h4>\n<pre>public&nbsp;void&nbsp;setFrameIndex(int&nbsp;frameIndex)</pre>\n<div class=\"block\">Sets the current frame index.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>frameIndex</code> - The current frame index in the sound</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>sound.setFrameIndex(frameIndex);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"rewind--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>rewind</h4>\n<pre>public&nbsp;void&nbsp;rewind()</pre>\n<div class=\"block\">Rewinds the sound to the beginning.  This method is useful after you have\n stopped a sound and want to replay it from the beginning.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>sound.rewind();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getVolume--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getVolume</h4>\n<pre>public&nbsp;double&nbsp;getVolume()</pre>\n<div class=\"block\">Returns the overall volume setting for the sound, which is a number\n between 0 (silent) and 1 (maximum volume).</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The overall volume setting for the sound</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double volume = sound.getVolume();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setVolume-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setVolume</h4>\n<pre>public&nbsp;void&nbsp;setVolume(double&nbsp;volume)</pre>\n<div class=\"block\">Sets the overall volume setting for the sound, which is a number\n between 0 (silent) and 1 (maximum volume).</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>volume</code> - The new overall volume setting for the sound</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>sound.setVolume(volume);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getSampleData--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSampleData</h4>\n<pre>public&nbsp;int[]&nbsp;getSampleData()</pre>\n<div class=\"block\">Returns an array of integers corresponding to the samples in the primary\n channel of the sound.  For mono sounds, this channel is the only channel;\n for stereo sounds, it is defined to be the left channel.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>An array of the samples in the sound</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int[] samples = sound.getSampleData();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getSampleData-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSampleData</h4>\n<pre>public&nbsp;int[]&nbsp;getSampleData(int&nbsp;channel)</pre>\n<div class=\"block\">Returns an array of integers corresponding to the samples in the specified\n channel, which is typically represented by <code>LEFT</code> or <code>RIGHT</code>.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>channel</code> - The channel for which samples are requested</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>An array of the samples in the sound</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int[] samples = sound.getSampleData(channel);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"addSampleData-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addSampleData</h4>\n<pre>public&nbsp;void&nbsp;addSampleData(int&nbsp;sample)</pre>\n<div class=\"block\">Adds a single sound sample to the end of the sound.  If the sound is stereo,\n the new sample is added to both the left and right channel.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>sample</code> - An integers representing a new sound samples</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>sound.addSampleData(sample);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"addSampleData-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addSampleData</h4>\n<pre>public&nbsp;void&nbsp;addSampleData(int&nbsp;left,\n                          int&nbsp;right)</pre>\n<div class=\"block\">Adds the specified samples to the end of the appropriate channels of\n the stereo sound.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>left</code> - An integer containing a single sample for the left channel</dd>\n<dd><code>right</code> - An integer containing a single sample for the right channel</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>sound.addSampleData(left, right);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"addSampleData-int:A-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addSampleData</h4>\n<pre>public&nbsp;void&nbsp;addSampleData(int[]&nbsp;samples)</pre>\n<div class=\"block\">Adds the specified samples to the end of the sound.  If the sound is stereo,\n the new samples are added to both the left and right channel.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>samples</code> - An array of integers containing the new sound samples</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>sound.addSampleData(samples);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"addSampleData-int:A-int:A-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addSampleData</h4>\n<pre>public&nbsp;void&nbsp;addSampleData(int[]&nbsp;left,\n                          int[]&nbsp;right)</pre>\n<div class=\"block\">Adds the specified samples to the end of the appropriate channels of\n the stereo sound.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>left</code> - An array of integers containing the samples for the left channel</dd>\n<dd><code>right</code> - An array of integers containing the samples for the right channel</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>sound.addSampleData(left, right);</dd>\n</dl>\n</li>\n</ul>\n<a name=\"toString--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>toString</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;toString()</pre>\n<div class=\"block\">Converts a sound to a string.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>A string representation of the sound</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>String str = sound.toString();</dd>\n</dl>\n</li>\n</ul>\n<a name=\"sampleToIntensity-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>sampleToIntensity</h4>\n<pre>public static&nbsp;double&nbsp;sampleToIntensity(int&nbsp;sample)</pre>\n<div class=\"block\">Converts an integer sample in the range -32767 and +32767 into a\n <code>double</code> between -1.0 and +1.0.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>sample</code> - An integer sample from a digital sound</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The corresponding intensity value between -1.0 and +1.0</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>double intensity = SoundClip.sampleToIntensity(sample)</dd>\n</dl>\n</li>\n</ul>\n<a name=\"intensityToSample-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>intensityToSample</h4>\n<pre>public static&nbsp;int&nbsp;intensityToSample(double&nbsp;intensity)</pre>\n<div class=\"block\">Converts an intensity value between -1.0 and +1.0 into the corresponding\n integer sample in the range -32767 and +32767.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>intensity</code> - An intensity value between -1.0 and +1.0</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The corresponding integer sample between -32767 and +32767</dd>\n<dt><span class=\"simpleTagLabel\">Usage:</span></dt>\n<dd>int sample = SoundClip.intensityToSample(intensity)</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getData--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getData</h4>\n<pre>protected&nbsp;byte[]&nbsp;getData()</pre>\n<div class=\"block\">Returns the byte array containing the sound data.</div>\n</li>\n</ul>\n<a name=\"getFormat--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFormat</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/sound/sampled/AudioFormat.html?is-external=true\" title=\"class or interface in javax.sound.sampled\">AudioFormat</a>&nbsp;getFormat()</pre>\n<div class=\"block\">Returns the format in which the sound is stored.</div>\n</li>\n</ul>\n<a name=\"getAudioInputStream--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>getAudioInputStream</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/sound/sampled/AudioInputStream.html?is-external=true\" title=\"class or interface in javax.sound.sampled\">AudioInputStream</a>&nbsp;getAudioInputStream()</pre>\n<div class=\"block\">Returns an <code>AudioInputStream</code> for the sound.</div>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/util/RandomGenerator.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li>Next&nbsp;Class</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/util/SoundClip.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"SoundClip.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/util/package-frame.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>acm.util</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<h1 class=\"bar\"><a href=\"../../acm/util/package-summary.html\" target=\"classFrame\">acm.util</a></h1>\n<div class=\"indexContainer\">\n<h2 title=\"Classes\">Classes</h2>\n<ul title=\"Classes\">\n<li><a href=\"FileChooserFilter.html\" title=\"class in acm.util\" target=\"classFrame\">FileChooserFilter</a></li>\n<li><a href=\"MediaTools.html\" title=\"class in acm.util\" target=\"classFrame\">MediaTools</a></li>\n<li><a href=\"PatchingClassLoader.html\" title=\"class in acm.util\" target=\"classFrame\">PatchingClassLoader</a></li>\n<li><a href=\"RandomGenerator.html\" title=\"class in acm.util\" target=\"classFrame\">RandomGenerator</a></li>\n<li><a href=\"SoundClip.html\" title=\"class in acm.util\" target=\"classFrame\">SoundClip</a></li>\n</ul>\n<h2 title=\"Exceptions\">Exceptions</h2>\n<ul title=\"Exceptions\">\n<li><a href=\"ErrorException.html\" title=\"class in acm.util\" target=\"classFrame\">ErrorException</a></li>\n</ul>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/util/package-summary.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>acm.util</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"acm.util\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li class=\"navBarCell1Rev\">Package</li>\n<li>Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/program/package-summary.html\">Prev&nbsp;Package</a></li>\n<li><a href=\"../../stanford/cs106/audio/package-summary.html\">Next&nbsp;Package</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/util/package-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 title=\"Package\" class=\"title\">Package&nbsp;acm.util</h1>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Class Summary table, listing classes, and an explanation\">\n<caption><span>Class Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Class</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../acm/util/FileChooserFilter.html\" title=\"class in acm.util\">FileChooserFilter</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></td>\n<td class=\"colLast\">\n<div class=\"block\">This class implements a standard mechanism for loading images, sounds, and\n data files from the resources associated with a jar file.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../acm/util/PatchingClassLoader.html\" title=\"class in acm.util\">PatchingClassLoader</a></td>\n<td class=\"colLast\">\n<div class=\"block\">A ClassLoader that allows you to patch what the superclass is for an existing class\n as it is loaded.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../acm/util/RandomGenerator.html\" title=\"class in acm.util\">RandomGenerator</a></td>\n<td class=\"colLast\">\n<div class=\"block\">This class implements a simple random number generator that allows clients to\n generate pseudorandom integers, doubles, booleans, and colors.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></td>\n<td class=\"colLast\">\n<div class=\"block\">This class represents a sound, which can be created from a URL, sound file,\n resource stream, or digital samples.</div>\n</td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Exception Summary table, listing exceptions, and an explanation\">\n<caption><span>Exception Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Exception</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../acm/util/ErrorException.html\" title=\"class in acm.util\">ErrorException</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n</tbody>\n</table>\n</li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li class=\"navBarCell1Rev\">Package</li>\n<li>Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/program/package-summary.html\">Prev&nbsp;Package</a></li>\n<li><a href=\"../../stanford/cs106/audio/package-summary.html\">Next&nbsp;Package</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/util/package-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/acm/util/package-tree.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>acm.util Class Hierarchy</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"acm.util Class Hierarchy\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/program/package-tree.html\">Prev</a></li>\n<li><a href=\"../../stanford/cs106/audio/package-tree.html\">Next</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/util/package-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 class=\"title\">Hierarchy For Package acm.util</h1>\n<span class=\"packageHierarchyLabel\">Package Hierarchies:</span>\n<ul class=\"horizontal\">\n<li><a href=\"../../overview-tree.html\">All Packages</a></li>\n</ul>\n</div>\n<div class=\"contentContainer\">\n<h2 title=\"Class Hierarchy\">Class Hierarchy</h2>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Object</span></a>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">ClassLoader</span></a>\n<ul>\n<li type=\"circle\">acm.util.<a href=\"../../acm/util/PatchingClassLoader.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">PatchingClassLoader</span></a></li>\n</ul>\n</li>\n<li type=\"circle\">javax.swing.filechooser.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/filechooser/FileFilter.html?is-external=true\" title=\"class or interface in javax.swing.filechooser\"><span class=\"typeNameLink\">FileFilter</span></a>\n<ul>\n<li type=\"circle\">acm.util.<a href=\"../../acm/util/FileChooserFilter.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">FileChooserFilter</span></a></li>\n</ul>\n</li>\n<li type=\"circle\">acm.util.<a href=\"../../acm/util/MediaTools.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">MediaTools</span></a></li>\n<li type=\"circle\">java.util.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true\" title=\"class or interface in java.util\"><span class=\"typeNameLink\">Random</span></a> (implements java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">acm.util.<a href=\"../../acm/util/RandomGenerator.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">RandomGenerator</span></a></li>\n</ul>\n</li>\n<li type=\"circle\">acm.util.<a href=\"../../acm/util/SoundClip.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">SoundClip</span></a> (implements java.applet.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AudioClip.html?is-external=true\" title=\"class or interface in java.applet\">AudioClip</a>)</li>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Throwable</span></a> (implements java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Exception</span></a>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">RuntimeException</span></a>\n<ul>\n<li type=\"circle\">acm.util.<a href=\"../../acm/util/ErrorException.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">ErrorException</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../acm/program/package-tree.html\">Prev</a></li>\n<li><a href=\"../../stanford/cs106/audio/package-tree.html\">Next</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?acm/util/package-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/allclasses-frame.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>All Classes</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"script.js\"></script>\n</head>\n<body>\n<h1 class=\"bar\">All&nbsp;Classes</h1>\n<div class=\"indexContainer\">\n<ul>\n<li><a href=\"acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\" target=\"classFrame\">AbstractConsoleProgram</a></li>\n<li><a href=\"stanford/cs106/collections/AbstractMultimap.html\" title=\"class in stanford.cs106.collections\" target=\"classFrame\">AbstractMultimap</a></li>\n<li><a href=\"stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\" target=\"classFrame\">AbstractTable</a></li>\n<li><a href=\"stanford/cs106/audio/Accidental.html\" title=\"enum in stanford.cs106.audio\" target=\"classFrame\">Accidental</a></li>\n<li><a href=\"acm/program/AsciiArtProgram.html\" title=\"class in acm.program\" target=\"classFrame\">AsciiArtProgram</a></li>\n<li><a href=\"stanford/cs106/junit/Assert.html\" title=\"class in stanford.cs106.junit\" target=\"classFrame\">Assert</a></li>\n<li><a href=\"stanford/cs106/net/BackEndServer.html\" title=\"class in stanford.cs106.net\" target=\"classFrame\">BackEndServer</a></li>\n<li><a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\" target=\"classFrame\">BasicGraph</a></li>\n<li><a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\" target=\"classFrame\">ClassUtils</a></li>\n<li><a href=\"stanford/cs106/reflect/ClassUtils.BetterClassLoader.html\" title=\"class in stanford.cs106.reflect\" target=\"classFrame\">ClassUtils.BetterClassLoader</a></li>\n<li><a href=\"stanford/cs106/reflect/ClassUtils.ClassComparator.html\" title=\"class in stanford.cs106.reflect\" target=\"classFrame\">ClassUtils.ClassComparator</a></li>\n<li><a href=\"stanford/cs106/reflect/ClassUtils.ExtensionFilter.html\" title=\"class in stanford.cs106.reflect\" target=\"classFrame\">ClassUtils.ExtensionFilter</a></li>\n<li><a href=\"stanford/cs106/gui/ClipboardUtils.html\" title=\"class in stanford.cs106.gui\" target=\"classFrame\">ClipboardUtils</a></li>\n<li><a href=\"stanford/cs106/util/CollectionUtils.html\" title=\"class in stanford.cs106.util\" target=\"classFrame\">CollectionUtils</a></li>\n<li><a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\" target=\"classFrame\">CommandLineProgram</a></li>\n<li><a href=\"stanford/cs106/junit/ComparisonFailureEnhanced.html\" title=\"class in stanford.cs106.junit\" target=\"classFrame\">ComparisonFailureEnhanced</a></li>\n<li><a href=\"stanford/cs106/reflect/CompilerErrorException.html\" title=\"class in stanford.cs106.reflect\" target=\"classFrame\">CompilerErrorException</a></li>\n<li><a href=\"acm/io/ConsoleModel.html\" title=\"interface in acm.io\" target=\"classFrame\"><span class=\"interfaceName\">ConsoleModel</span></a></li>\n<li><a href=\"acm/program/ConsoleProgram.html\" title=\"class in acm.program\" target=\"classFrame\">ConsoleProgram</a></li>\n<li><a href=\"stanford/cs106/util/ConstantUtils.html\" title=\"class in stanford.cs106.util\" target=\"classFrame\">ConstantUtils</a></li>\n<li><a href=\"acm/program/DialogProgram.html\" title=\"class in acm.program\" target=\"classFrame\">DialogProgram</a></li>\n<li><a href=\"acm/gui/DoubleField.html\" title=\"class in acm.gui\" target=\"classFrame\">DoubleField</a></li>\n<li><a href=\"stanford/cs106/net/Downloader.html\" title=\"class in stanford.cs106.net\" target=\"classFrame\">Downloader</a></li>\n<li><a href=\"stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\" target=\"classFrame\">Edge</a></li>\n<li><a href=\"acm/util/ErrorException.html\" title=\"class in acm.util\" target=\"classFrame\">ErrorException</a></li>\n<li><a href=\"acm/gui/Event.html\" title=\"class in acm.gui\" target=\"classFrame\">Event</a></li>\n<li><a href=\"stanford/karel/Event.html\" title=\"class in stanford.karel\" target=\"classFrame\">Event</a></li>\n<li><a href=\"stanford/cs106/util/ExceptionUtils.html\" title=\"class in stanford.cs106.util\" target=\"classFrame\">ExceptionUtils</a></li>\n<li><a href=\"stanford/cs106/io/ExtensionFileFilter.html\" title=\"class in stanford.cs106.io\" target=\"classFrame\">ExtensionFileFilter</a></li>\n<li><a href=\"acm/util/FileChooserFilter.html\" title=\"class in acm.util\" target=\"classFrame\">FileChooserFilter</a></li>\n<li><a href=\"acm/graphics/G3DRect.html\" title=\"class in acm.graphics\" target=\"classFrame\">G3DRect</a></li>\n<li><a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\" target=\"classFrame\">GCanvas</a></li>\n<li><a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\" target=\"classFrame\"><span class=\"interfaceName\">GCanvasInterface</span></a></li>\n<li><a href=\"acm/graphics/GCompound.html\" title=\"class in acm.graphics\" target=\"classFrame\">GCompound</a></li>\n<li><a href=\"acm/graphics/GContainer.html\" title=\"interface in acm.graphics\" target=\"classFrame\"><span class=\"interfaceName\">GContainer</span></a></li>\n<li><a href=\"acm/graphics/GImage.html\" title=\"class in acm.graphics\" target=\"classFrame\">GImage</a></li>\n<li><a href=\"acm/graphics/GLabel.html\" title=\"class in acm.graphics\" target=\"classFrame\">GLabel</a></li>\n<li><a href=\"acm/graphics/GLine.html\" title=\"class in acm.graphics\" target=\"classFrame\">GLine</a></li>\n<li><a href=\"acm/graphics/GLineGroup.html\" title=\"class in acm.graphics\" target=\"classFrame\">GLineGroup</a></li>\n<li><a href=\"acm/graphics/GMath.html\" title=\"class in acm.graphics\" target=\"classFrame\">GMath</a></li>\n<li><a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\" target=\"classFrame\">GObject</a></li>\n<li><a href=\"acm/graphics/GOval.html\" title=\"class in acm.graphics\" target=\"classFrame\">GOval</a></li>\n<li><a href=\"acm/graphics/GPoint.html\" title=\"class in acm.graphics\" target=\"classFrame\">GPoint</a></li>\n<li><a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\" target=\"classFrame\"><span class=\"interfaceName\">Graph</span></a></li>\n<li><a href=\"stanford/cs106/collections/GraphColor.html\" title=\"enum in stanford.cs106.collections\" target=\"classFrame\">GraphColor</a></li>\n<li><a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\" target=\"classFrame\">GraphicsProgram</a></li>\n<li><a href=\"acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\" target=\"classFrame\"><span class=\"interfaceName\">GraphicsProgramInterface</span></a></li>\n<li><a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\" target=\"classFrame\">GRectangle</a></li>\n<li><a href=\"acm/graphics/GResizable.html\" title=\"interface in acm.graphics\" target=\"classFrame\"><span class=\"interfaceName\">GResizable</span></a></li>\n<li><a href=\"stanford/cs106/collections/Grid.html\" title=\"class in stanford.cs106.collections\" target=\"classFrame\">Grid</a></li>\n<li><a href=\"acm/graphics/GScalable.html\" title=\"interface in acm.graphics\" target=\"classFrame\"><span class=\"interfaceName\">GScalable</span></a></li>\n<li><a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\" target=\"classFrame\">GuiUtils</a></li>\n<li><a href=\"stanford/cs106/collections/HashBasedTable.html\" title=\"class in stanford.cs106.collections\" target=\"classFrame\">HashBasedTable</a></li>\n<li><a href=\"stanford/cs106/collections/HashMultimap.html\" title=\"class in stanford.cs106.collections\" target=\"classFrame\">HashMultimap</a></li>\n<li><a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\" target=\"classFrame\">HeadlessGraphicsProgram</a></li>\n<li><a href=\"stanford/karel/HeadlessKarel.html\" title=\"class in stanford.karel\" target=\"classFrame\">HeadlessKarel</a></li>\n<li><a href=\"stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\" target=\"classFrame\">HeadlessSuperKarel</a></li>\n<li><a href=\"acm/gui/IntField.html\" title=\"class in acm.gui\" target=\"classFrame\">IntField</a></li>\n<li><a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\" target=\"classFrame\">IOConsole</a></li>\n<li><a href=\"stanford/cs106/io/IORuntimeException.html\" title=\"class in stanford.cs106.io\" target=\"classFrame\">IORuntimeException</a></li>\n<li><a href=\"stanford/cs106/io/IOUtils.html\" title=\"class in stanford.cs106.io\" target=\"classFrame\">IOUtils</a></li>\n<li><a href=\"acm/gui/JButtonGroup.html\" title=\"class in acm.gui\" target=\"classFrame\">JButtonGroup</a></li>\n<li><a href=\"stanford/cs106/gui/JComboGroupBox.html\" title=\"class in stanford.cs106.gui\" target=\"classFrame\">JComboGroupBox</a></li>\n<li><a href=\"acm/gui/JFontChooser.html\" title=\"class in acm.gui\" target=\"classFrame\">JFontChooser</a></li>\n<li><a href=\"acm/gui/JListOptionPane.html\" title=\"class in acm.gui\" target=\"classFrame\">JListOptionPane</a></li>\n<li><a href=\"acm/gui/JPlaceholderTextField.html\" title=\"class in acm.gui\" target=\"classFrame\">JPlaceholderTextField</a></li>\n<li><a href=\"acm/gui/JStringList.html\" title=\"class in acm.gui\" target=\"classFrame\">JStringList</a></li>\n<li><a href=\"stanford/cs106/junit/JUnitListener.html\" title=\"interface in stanford.cs106.junit\" target=\"classFrame\"><span class=\"interfaceName\">JUnitListener</span></a></li>\n<li><a href=\"stanford/cs106/junit/JUnitUtils.html\" title=\"class in stanford.cs106.junit\" target=\"classFrame\">JUnitUtils</a></li>\n<li><a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\" target=\"classFrame\">Karel</a></li>\n<li><a href=\"stanford/karel/KarelControlPanel.html\" title=\"class in stanford.karel\" target=\"classFrame\">KarelControlPanel</a></li>\n<li><a href=\"stanford/karel/KarelDirection.html\" title=\"enum in stanford.karel\" target=\"classFrame\">KarelDirection</a></li>\n<li><a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\" target=\"classFrame\"><span class=\"interfaceName\">KarelInterface</span></a></li>\n<li><a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\" target=\"classFrame\">KarelProgram</a></li>\n<li><a href=\"stanford/karel/KarelProgram.State.html\" title=\"enum in stanford.karel\" target=\"classFrame\">KarelProgram.State</a></li>\n<li><a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\" target=\"classFrame\">KarelWorld</a></li>\n<li><a href=\"stanford/cs106/collections/Lexicon.html\" title=\"class in stanford.cs106.collections\" target=\"classFrame\">Lexicon</a></li>\n<li><a href=\"stanford/cs106/io/LimitedPrintStream.html\" title=\"class in stanford.cs106.io\" target=\"classFrame\">LimitedPrintStream</a></li>\n<li><a href=\"stanford/cs106/io/LimitedPrintStream.ExcessiveOutputException.html\" title=\"class in stanford.cs106.io\" target=\"classFrame\">LimitedPrintStream.ExcessiveOutputException</a></li>\n<li><a href=\"stanford/cs106/gui/ListOptionPane.html\" title=\"class in stanford.cs106.gui\" target=\"classFrame\">ListOptionPane</a></li>\n<li><a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\" target=\"classFrame\">MediaTools</a></li>\n<li><a href=\"stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\" target=\"classFrame\"><span class=\"interfaceName\">Multimap</span></a></li>\n<li><a href=\"stanford/cs106/net/NetworkManager.html\" title=\"class in stanford.cs106.net\" target=\"classFrame\">NetworkManager</a></li>\n<li><a href=\"stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\" target=\"classFrame\">Note</a></li>\n<li><a href=\"stanford/cs106/util/OperatingSystem.html\" title=\"enum in stanford.cs106.util\" target=\"classFrame\">OperatingSystem</a></li>\n<li><a href=\"stanford/cs106/io/OutputCapturer.html\" title=\"class in stanford.cs106.io\" target=\"classFrame\">OutputCapturer</a></li>\n<li><a href=\"acm/util/PatchingClassLoader.html\" title=\"class in acm.util\" target=\"classFrame\">PatchingClassLoader</a></li>\n<li><a href=\"stanford/cs106/audio/Pitch.html\" title=\"enum in stanford.cs106.audio\" target=\"classFrame\">Pitch</a></li>\n<li><a href=\"stanford/cs106/util/ProcessUtils.html\" title=\"class in stanford.cs106.util\" target=\"classFrame\">ProcessUtils</a></li>\n<li><a href=\"acm/program/Program.html\" title=\"class in acm.program\" target=\"classFrame\">Program</a></li>\n<li><a href=\"acm/program/ProgramInterface.html\" title=\"interface in acm.program\" target=\"classFrame\"><span class=\"interfaceName\">ProgramInterface</span></a></li>\n<li><a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\" target=\"classFrame\">ProgramMenuBar</a></li>\n<li><a href=\"acm/program/ProgramStartupFlags.html\" title=\"interface in acm.program\" target=\"classFrame\"><span class=\"interfaceName\">ProgramStartupFlags</span></a></li>\n<li><a href=\"acm/util/RandomGenerator.html\" title=\"class in acm.util\" target=\"classFrame\">RandomGenerator</a></li>\n<li><a href=\"stanford/cs106/util/RandomGenerator.html\" title=\"class in stanford.cs106.util\" target=\"classFrame\">RandomGenerator</a></li>\n<li><a href=\"stanford/cs106/io/ReaderInputStream.html\" title=\"class in stanford.cs106.io\" target=\"classFrame\">ReaderInputStream</a></li>\n<li><a href=\"stanford/cs106/util/RecursionUtils.html\" title=\"class in stanford.cs106.util\" target=\"classFrame\">RecursionUtils</a></li>\n<li><a href=\"stanford/cs106/reflect/ReflectionRuntimeException.html\" title=\"class in stanford.cs106.reflect\" target=\"classFrame\">ReflectionRuntimeException</a></li>\n<li><a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\" target=\"classFrame\">ReflectionUtils</a></li>\n<li><a href=\"stanford/cs106/reflect/ReflectionUtils.FieldNameComparator.html\" title=\"class in stanford.cs106.reflect\" target=\"classFrame\">ReflectionUtils.FieldNameComparator</a></li>\n<li><a href=\"stanford/cs106/reflect/ReflectionUtils.MethodNameComparator.html\" title=\"class in stanford.cs106.reflect\" target=\"classFrame\">ReflectionUtils.MethodNameComparator</a></li>\n<li><a href=\"stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\" target=\"classFrame\">Request</a></li>\n<li><a href=\"stanford/cs106/gui/ResizeListener.html\" title=\"interface in stanford.cs106.gui\" target=\"classFrame\"><span class=\"interfaceName\">ResizeListener</span></a></li>\n<li><a href=\"stanford/cs106/io/ResourceUtils.html\" title=\"class in stanford.cs106.io\" target=\"classFrame\">ResourceUtils</a></li>\n<li><a href=\"stanford/cs106/net/SimpleClient.html\" title=\"class in stanford.cs106.net\" target=\"classFrame\">SimpleClient</a></li>\n<li><a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\" target=\"classFrame\">SimpleScanner</a></li>\n<li><a href=\"stanford/cs106/net/SimpleServer.html\" title=\"class in stanford.cs106.net\" target=\"classFrame\">SimpleServer</a></li>\n<li><a href=\"stanford/cs106/net/SimpleServer.SimpleServerException.html\" title=\"class in stanford.cs106.net\" target=\"classFrame\">SimpleServer.SimpleServerException</a></li>\n<li><a href=\"stanford/cs106/net/SimpleServerListener.html\" title=\"interface in stanford.cs106.net\" target=\"classFrame\"><span class=\"interfaceName\">SimpleServerListener</span></a></li>\n<li><a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\" target=\"classFrame\">SoundClip</a></li>\n<li><a href=\"stanford/cs106/audio/SplClip.html\" title=\"class in stanford.cs106.audio\" target=\"classFrame\">SplClip</a></li>\n<li><a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\" target=\"classFrame\">StandardConsoleModel</a></li>\n<li><a href=\"stanford/cs106/util/Stanford.html\" title=\"class in stanford.cs106.util\" target=\"classFrame\">Stanford</a></li>\n<li><a href=\"stanford/cs106/audio/StdAudio.html\" title=\"class in stanford.cs106.audio\" target=\"classFrame\">StdAudio</a></li>\n<li><a href=\"stanford/cs106/audio/StdAudio.AudioEvent.html\" title=\"class in stanford.cs106.audio\" target=\"classFrame\">StdAudio.AudioEvent</a></li>\n<li><a href=\"stanford/cs106/audio/StdAudio.AudioEvent.Type.html\" title=\"enum in stanford.cs106.audio\" target=\"classFrame\">StdAudio.AudioEvent.Type</a></li>\n<li><a href=\"stanford/cs106/audio/StdAudio.AudioEventListener.html\" title=\"interface in stanford.cs106.audio\" target=\"classFrame\"><span class=\"interfaceName\">StdAudio.AudioEventListener</span></a></li>\n<li><a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\" target=\"classFrame\">StringUtils</a></li>\n<li><a href=\"stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\" target=\"classFrame\">SuperKarel</a></li>\n<li><a href=\"acm/io/SystemConsoleModel.html\" title=\"class in acm.io\" target=\"classFrame\">SystemConsoleModel</a></li>\n<li><a href=\"stanford/cs106/util/SystemProperties.html\" title=\"class in stanford.cs106.util\" target=\"classFrame\">SystemProperties</a></li>\n<li><a href=\"stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\" target=\"classFrame\"><span class=\"interfaceName\">Table</span></a></li>\n<li><a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\" target=\"classFrame\">TableLayout</a></li>\n<li><a href=\"stanford/cs106/junit/TestCategory.html\" title=\"annotation in stanford.cs106.junit\" target=\"classFrame\">TestCategory</a></li>\n<li><a href=\"stanford/cs106/collections/TreeBasedTable.html\" title=\"class in stanford.cs106.collections\" target=\"classFrame\">TreeBasedTable</a></li>\n<li><a href=\"stanford/cs106/collections/TreeMultimap.html\" title=\"class in stanford.cs106.collections\" target=\"classFrame\">TreeMultimap</a></li>\n<li><a href=\"stanford/cs106/junit/UnitTestType.html\" title=\"enum in stanford.cs106.junit\" target=\"classFrame\">UnitTestType</a></li>\n<li><a href=\"stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\" target=\"classFrame\">Vertex</a></li>\n<li><a href=\"stanford/cs106/collections/Vertex.Event.html\" title=\"enum in stanford.cs106.collections\" target=\"classFrame\">Vertex.Event</a></li>\n<li><a href=\"stanford/cs106/gui/WindowCloseKeyListener.html\" title=\"class in stanford.cs106.gui\" target=\"classFrame\">WindowCloseKeyListener</a></li>\n<li><a href=\"stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\" target=\"classFrame\">XmlUtils</a></li>\n<li><a href=\"stanford/cs106/util/XmlUtils.XmlRuntimeException.html\" title=\"class in stanford.cs106.util\" target=\"classFrame\">XmlUtils.XmlRuntimeException</a></li>\n</ul>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/allclasses-noframe.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>All Classes</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"script.js\"></script>\n</head>\n<body>\n<h1 class=\"bar\">All&nbsp;Classes</h1>\n<div class=\"indexContainer\">\n<ul>\n<li><a href=\"acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></li>\n<li><a href=\"stanford/cs106/collections/AbstractMultimap.html\" title=\"class in stanford.cs106.collections\">AbstractMultimap</a></li>\n<li><a href=\"stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\">AbstractTable</a></li>\n<li><a href=\"stanford/cs106/audio/Accidental.html\" title=\"enum in stanford.cs106.audio\">Accidental</a></li>\n<li><a href=\"acm/program/AsciiArtProgram.html\" title=\"class in acm.program\">AsciiArtProgram</a></li>\n<li><a href=\"stanford/cs106/junit/Assert.html\" title=\"class in stanford.cs106.junit\">Assert</a></li>\n<li><a href=\"stanford/cs106/net/BackEndServer.html\" title=\"class in stanford.cs106.net\">BackEndServer</a></li>\n<li><a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></li>\n<li><a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></li>\n<li><a href=\"stanford/cs106/reflect/ClassUtils.BetterClassLoader.html\" title=\"class in stanford.cs106.reflect\">ClassUtils.BetterClassLoader</a></li>\n<li><a href=\"stanford/cs106/reflect/ClassUtils.ClassComparator.html\" title=\"class in stanford.cs106.reflect\">ClassUtils.ClassComparator</a></li>\n<li><a href=\"stanford/cs106/reflect/ClassUtils.ExtensionFilter.html\" title=\"class in stanford.cs106.reflect\">ClassUtils.ExtensionFilter</a></li>\n<li><a href=\"stanford/cs106/gui/ClipboardUtils.html\" title=\"class in stanford.cs106.gui\">ClipboardUtils</a></li>\n<li><a href=\"stanford/cs106/util/CollectionUtils.html\" title=\"class in stanford.cs106.util\">CollectionUtils</a></li>\n<li><a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></li>\n<li><a href=\"stanford/cs106/junit/ComparisonFailureEnhanced.html\" title=\"class in stanford.cs106.junit\">ComparisonFailureEnhanced</a></li>\n<li><a href=\"stanford/cs106/reflect/CompilerErrorException.html\" title=\"class in stanford.cs106.reflect\">CompilerErrorException</a></li>\n<li><a href=\"acm/io/ConsoleModel.html\" title=\"interface in acm.io\"><span class=\"interfaceName\">ConsoleModel</span></a></li>\n<li><a href=\"acm/program/ConsoleProgram.html\" title=\"class in acm.program\">ConsoleProgram</a></li>\n<li><a href=\"stanford/cs106/util/ConstantUtils.html\" title=\"class in stanford.cs106.util\">ConstantUtils</a></li>\n<li><a href=\"acm/program/DialogProgram.html\" title=\"class in acm.program\">DialogProgram</a></li>\n<li><a href=\"acm/gui/DoubleField.html\" title=\"class in acm.gui\">DoubleField</a></li>\n<li><a href=\"stanford/cs106/net/Downloader.html\" title=\"class in stanford.cs106.net\">Downloader</a></li>\n<li><a href=\"stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\">Edge</a></li>\n<li><a href=\"acm/util/ErrorException.html\" title=\"class in acm.util\">ErrorException</a></li>\n<li><a href=\"acm/gui/Event.html\" title=\"class in acm.gui\">Event</a></li>\n<li><a href=\"stanford/karel/Event.html\" title=\"class in stanford.karel\">Event</a></li>\n<li><a href=\"stanford/cs106/util/ExceptionUtils.html\" title=\"class in stanford.cs106.util\">ExceptionUtils</a></li>\n<li><a href=\"stanford/cs106/io/ExtensionFileFilter.html\" title=\"class in stanford.cs106.io\">ExtensionFileFilter</a></li>\n<li><a href=\"acm/util/FileChooserFilter.html\" title=\"class in acm.util\">FileChooserFilter</a></li>\n<li><a href=\"acm/graphics/G3DRect.html\" title=\"class in acm.graphics\">G3DRect</a></li>\n<li><a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></li>\n<li><a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\"><span class=\"interfaceName\">GCanvasInterface</span></a></li>\n<li><a href=\"acm/graphics/GCompound.html\" title=\"class in acm.graphics\">GCompound</a></li>\n<li><a href=\"acm/graphics/GContainer.html\" title=\"interface in acm.graphics\"><span class=\"interfaceName\">GContainer</span></a></li>\n<li><a href=\"acm/graphics/GImage.html\" title=\"class in acm.graphics\">GImage</a></li>\n<li><a href=\"acm/graphics/GLabel.html\" title=\"class in acm.graphics\">GLabel</a></li>\n<li><a href=\"acm/graphics/GLine.html\" title=\"class in acm.graphics\">GLine</a></li>\n<li><a href=\"acm/graphics/GLineGroup.html\" title=\"class in acm.graphics\">GLineGroup</a></li>\n<li><a href=\"acm/graphics/GMath.html\" title=\"class in acm.graphics\">GMath</a></li>\n<li><a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></li>\n<li><a href=\"acm/graphics/GOval.html\" title=\"class in acm.graphics\">GOval</a></li>\n<li><a href=\"acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a></li>\n<li><a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\"><span class=\"interfaceName\">Graph</span></a></li>\n<li><a href=\"stanford/cs106/collections/GraphColor.html\" title=\"enum in stanford.cs106.collections\">GraphColor</a></li>\n<li><a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></li>\n<li><a href=\"acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\"><span class=\"interfaceName\">GraphicsProgramInterface</span></a></li>\n<li><a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></li>\n<li><a href=\"acm/graphics/GResizable.html\" title=\"interface in acm.graphics\"><span class=\"interfaceName\">GResizable</span></a></li>\n<li><a href=\"stanford/cs106/collections/Grid.html\" title=\"class in stanford.cs106.collections\">Grid</a></li>\n<li><a href=\"acm/graphics/GScalable.html\" title=\"interface in acm.graphics\"><span class=\"interfaceName\">GScalable</span></a></li>\n<li><a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></li>\n<li><a href=\"stanford/cs106/collections/HashBasedTable.html\" title=\"class in stanford.cs106.collections\">HashBasedTable</a></li>\n<li><a href=\"stanford/cs106/collections/HashMultimap.html\" title=\"class in stanford.cs106.collections\">HashMultimap</a></li>\n<li><a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></li>\n<li><a href=\"stanford/karel/HeadlessKarel.html\" title=\"class in stanford.karel\">HeadlessKarel</a></li>\n<li><a href=\"stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\">HeadlessSuperKarel</a></li>\n<li><a href=\"acm/gui/IntField.html\" title=\"class in acm.gui\">IntField</a></li>\n<li><a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></li>\n<li><a href=\"stanford/cs106/io/IORuntimeException.html\" title=\"class in stanford.cs106.io\">IORuntimeException</a></li>\n<li><a href=\"stanford/cs106/io/IOUtils.html\" title=\"class in stanford.cs106.io\">IOUtils</a></li>\n<li><a href=\"acm/gui/JButtonGroup.html\" title=\"class in acm.gui\">JButtonGroup</a></li>\n<li><a href=\"stanford/cs106/gui/JComboGroupBox.html\" title=\"class in stanford.cs106.gui\">JComboGroupBox</a></li>\n<li><a href=\"acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></li>\n<li><a href=\"acm/gui/JListOptionPane.html\" title=\"class in acm.gui\">JListOptionPane</a></li>\n<li><a href=\"acm/gui/JPlaceholderTextField.html\" title=\"class in acm.gui\">JPlaceholderTextField</a></li>\n<li><a href=\"acm/gui/JStringList.html\" title=\"class in acm.gui\">JStringList</a></li>\n<li><a href=\"stanford/cs106/junit/JUnitListener.html\" title=\"interface in stanford.cs106.junit\"><span class=\"interfaceName\">JUnitListener</span></a></li>\n<li><a href=\"stanford/cs106/junit/JUnitUtils.html\" title=\"class in stanford.cs106.junit\">JUnitUtils</a></li>\n<li><a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></li>\n<li><a href=\"stanford/karel/KarelControlPanel.html\" title=\"class in stanford.karel\">KarelControlPanel</a></li>\n<li><a href=\"stanford/karel/KarelDirection.html\" title=\"enum in stanford.karel\">KarelDirection</a></li>\n<li><a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\"><span class=\"interfaceName\">KarelInterface</span></a></li>\n<li><a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></li>\n<li><a href=\"stanford/karel/KarelProgram.State.html\" title=\"enum in stanford.karel\">KarelProgram.State</a></li>\n<li><a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></li>\n<li><a href=\"stanford/cs106/collections/Lexicon.html\" title=\"class in stanford.cs106.collections\">Lexicon</a></li>\n<li><a href=\"stanford/cs106/io/LimitedPrintStream.html\" title=\"class in stanford.cs106.io\">LimitedPrintStream</a></li>\n<li><a href=\"stanford/cs106/io/LimitedPrintStream.ExcessiveOutputException.html\" title=\"class in stanford.cs106.io\">LimitedPrintStream.ExcessiveOutputException</a></li>\n<li><a href=\"stanford/cs106/gui/ListOptionPane.html\" title=\"class in stanford.cs106.gui\">ListOptionPane</a></li>\n<li><a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></li>\n<li><a href=\"stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\"><span class=\"interfaceName\">Multimap</span></a></li>\n<li><a href=\"stanford/cs106/net/NetworkManager.html\" title=\"class in stanford.cs106.net\">NetworkManager</a></li>\n<li><a href=\"stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\">Note</a></li>\n<li><a href=\"stanford/cs106/util/OperatingSystem.html\" title=\"enum in stanford.cs106.util\">OperatingSystem</a></li>\n<li><a href=\"stanford/cs106/io/OutputCapturer.html\" title=\"class in stanford.cs106.io\">OutputCapturer</a></li>\n<li><a href=\"acm/util/PatchingClassLoader.html\" title=\"class in acm.util\">PatchingClassLoader</a></li>\n<li><a href=\"stanford/cs106/audio/Pitch.html\" title=\"enum in stanford.cs106.audio\">Pitch</a></li>\n<li><a href=\"stanford/cs106/util/ProcessUtils.html\" title=\"class in stanford.cs106.util\">ProcessUtils</a></li>\n<li><a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></li>\n<li><a href=\"acm/program/ProgramInterface.html\" title=\"interface in acm.program\"><span class=\"interfaceName\">ProgramInterface</span></a></li>\n<li><a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></li>\n<li><a href=\"acm/program/ProgramStartupFlags.html\" title=\"interface in acm.program\"><span class=\"interfaceName\">ProgramStartupFlags</span></a></li>\n<li><a href=\"acm/util/RandomGenerator.html\" title=\"class in acm.util\">RandomGenerator</a></li>\n<li><a href=\"stanford/cs106/util/RandomGenerator.html\" title=\"class in stanford.cs106.util\">RandomGenerator</a></li>\n<li><a href=\"stanford/cs106/io/ReaderInputStream.html\" title=\"class in stanford.cs106.io\">ReaderInputStream</a></li>\n<li><a href=\"stanford/cs106/util/RecursionUtils.html\" title=\"class in stanford.cs106.util\">RecursionUtils</a></li>\n<li><a href=\"stanford/cs106/reflect/ReflectionRuntimeException.html\" title=\"class in stanford.cs106.reflect\">ReflectionRuntimeException</a></li>\n<li><a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></li>\n<li><a href=\"stanford/cs106/reflect/ReflectionUtils.FieldNameComparator.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils.FieldNameComparator</a></li>\n<li><a href=\"stanford/cs106/reflect/ReflectionUtils.MethodNameComparator.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils.MethodNameComparator</a></li>\n<li><a href=\"stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\">Request</a></li>\n<li><a href=\"stanford/cs106/gui/ResizeListener.html\" title=\"interface in stanford.cs106.gui\"><span class=\"interfaceName\">ResizeListener</span></a></li>\n<li><a href=\"stanford/cs106/io/ResourceUtils.html\" title=\"class in stanford.cs106.io\">ResourceUtils</a></li>\n<li><a href=\"stanford/cs106/net/SimpleClient.html\" title=\"class in stanford.cs106.net\">SimpleClient</a></li>\n<li><a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></li>\n<li><a href=\"stanford/cs106/net/SimpleServer.html\" title=\"class in stanford.cs106.net\">SimpleServer</a></li>\n<li><a href=\"stanford/cs106/net/SimpleServer.SimpleServerException.html\" title=\"class in stanford.cs106.net\">SimpleServer.SimpleServerException</a></li>\n<li><a href=\"stanford/cs106/net/SimpleServerListener.html\" title=\"interface in stanford.cs106.net\"><span class=\"interfaceName\">SimpleServerListener</span></a></li>\n<li><a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></li>\n<li><a href=\"stanford/cs106/audio/SplClip.html\" title=\"class in stanford.cs106.audio\">SplClip</a></li>\n<li><a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></li>\n<li><a href=\"stanford/cs106/util/Stanford.html\" title=\"class in stanford.cs106.util\">Stanford</a></li>\n<li><a href=\"stanford/cs106/audio/StdAudio.html\" title=\"class in stanford.cs106.audio\">StdAudio</a></li>\n<li><a href=\"stanford/cs106/audio/StdAudio.AudioEvent.html\" title=\"class in stanford.cs106.audio\">StdAudio.AudioEvent</a></li>\n<li><a href=\"stanford/cs106/audio/StdAudio.AudioEvent.Type.html\" title=\"enum in stanford.cs106.audio\">StdAudio.AudioEvent.Type</a></li>\n<li><a href=\"stanford/cs106/audio/StdAudio.AudioEventListener.html\" title=\"interface in stanford.cs106.audio\"><span class=\"interfaceName\">StdAudio.AudioEventListener</span></a></li>\n<li><a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></li>\n<li><a href=\"stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\">SuperKarel</a></li>\n<li><a href=\"acm/io/SystemConsoleModel.html\" title=\"class in acm.io\">SystemConsoleModel</a></li>\n<li><a href=\"stanford/cs106/util/SystemProperties.html\" title=\"class in stanford.cs106.util\">SystemProperties</a></li>\n<li><a href=\"stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\"><span class=\"interfaceName\">Table</span></a></li>\n<li><a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></li>\n<li><a href=\"stanford/cs106/junit/TestCategory.html\" title=\"annotation in stanford.cs106.junit\">TestCategory</a></li>\n<li><a href=\"stanford/cs106/collections/TreeBasedTable.html\" title=\"class in stanford.cs106.collections\">TreeBasedTable</a></li>\n<li><a href=\"stanford/cs106/collections/TreeMultimap.html\" title=\"class in stanford.cs106.collections\">TreeMultimap</a></li>\n<li><a href=\"stanford/cs106/junit/UnitTestType.html\" title=\"enum in stanford.cs106.junit\">UnitTestType</a></li>\n<li><a href=\"stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a></li>\n<li><a href=\"stanford/cs106/collections/Vertex.Event.html\" title=\"enum in stanford.cs106.collections\">Vertex.Event</a></li>\n<li><a href=\"stanford/cs106/gui/WindowCloseKeyListener.html\" title=\"class in stanford.cs106.gui\">WindowCloseKeyListener</a></li>\n<li><a href=\"stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\">XmlUtils</a></li>\n<li><a href=\"stanford/cs106/util/XmlUtils.XmlRuntimeException.html\" title=\"class in stanford.cs106.util\">XmlUtils.XmlRuntimeException</a></li>\n</ul>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/constant-values.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>Constant Field Values</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"Constant Field Values\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"overview-summary.html\">Overview</a></li>\n<li>Package</li>\n<li>Class</li>\n<li><a href=\"overview-tree.html\">Tree</a></li>\n<li><a href=\"deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"index-all.html\">Index</a></li>\n<li><a href=\"help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev</li>\n<li>Next</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"index.html?constant-values.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"constant-values.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 title=\"Constant Field Values\" class=\"title\">Constant Field Values</h1>\n<h2 title=\"Contents\">Contents</h2>\n<ul>\n<li><a href=\"#acm.graphics\">acm.graphics.*</a></li>\n<li><a href=\"#acm.gui\">acm.gui.*</a></li>\n<li><a href=\"#acm.io\">acm.io.*</a></li>\n<li><a href=\"#acm.program\">acm.program.*</a></li>\n<li><a href=\"#acm.util\">acm.util.*</a></li>\n<li><a href=\"#stanford.cs106\">stanford.cs106.*</a></li>\n<li><a href=\"#stanford.karel\">stanford.karel.*</a></li>\n</ul>\n</div>\n<div class=\"constantValuesContainer\"><a name=\"acm.graphics\">\n<!--   -->\n</a>\n<h2 title=\"acm.graphics\">acm.graphics.*</h2>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<table class=\"constantsSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constant Field Values table, listing constant fields, and values\">\n<caption><span>acm.graphics.<a href=\"acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a></span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th scope=\"col\">Constant Field</th>\n<th class=\"colLast\" scope=\"col\">Value</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.graphics.GContainer.BACK_TO_FRONT\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"acm/graphics/GContainer.html#BACK_TO_FRONT\">BACK_TO_FRONT</a></code></td>\n<td class=\"colLast\"><code>0</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"acm.graphics.GContainer.FRONT_TO_BACK\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"acm/graphics/GContainer.html#FRONT_TO_BACK\">FRONT_TO_BACK</a></code></td>\n<td class=\"colLast\"><code>1</code></td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"constantsSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constant Field Values table, listing constant fields, and values\">\n<caption><span>acm.graphics.<a href=\"acm/graphics/GLine.html\" title=\"class in acm.graphics\">GLine</a></span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th scope=\"col\">Constant Field</th>\n<th class=\"colLast\" scope=\"col\">Value</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.graphics.GLine.LINE_TOLERANCE\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;double</code></td>\n<td><code><a href=\"acm/graphics/GLine.html#LINE_TOLERANCE\">LINE_TOLERANCE</a></code></td>\n<td class=\"colLast\"><code>1.5</code></td>\n</tr>\n</tbody>\n</table>\n</li>\n</ul>\n<a name=\"acm.gui\">\n<!--   -->\n</a>\n<h2 title=\"acm.gui\">acm.gui.*</h2>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<table class=\"constantsSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constant Field Values table, listing constant fields, and values\">\n<caption><span>acm.gui.<a href=\"acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th scope=\"col\">Constant Field</th>\n<th class=\"colLast\" scope=\"col\">Value</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.gui.JFontChooser.CANCEL_OPTION\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"acm/gui/JFontChooser.html#CANCEL_OPTION\">CANCEL_OPTION</a></code></td>\n<td class=\"colLast\"><code>1</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"acm.gui.JFontChooser.ERROR_OPTION\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"acm/gui/JFontChooser.html#ERROR_OPTION\">ERROR_OPTION</a></code></td>\n<td class=\"colLast\"><code>-1</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.gui.JFontChooser.OK_OPTION\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"acm/gui/JFontChooser.html#OK_OPTION\">OK_OPTION</a></code></td>\n<td class=\"colLast\"><code>0</code></td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"constantsSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constant Field Values table, listing constant fields, and values\">\n<caption><span>acm.gui.<a href=\"acm/gui/JFontChooser.DialogCancelAction.html\" title=\"class in acm.gui\">JFontChooser.DialogCancelAction</a></span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th scope=\"col\">Constant Field</th>\n<th class=\"colLast\" scope=\"col\">Value</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.gui.JFontChooser.DialogCancelAction.ACTION_NAME\">\n<!--   -->\n</a><code>protected&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/gui/JFontChooser.DialogCancelAction.html#ACTION_NAME\">ACTION_NAME</a></code></td>\n<td class=\"colLast\"><code>\"Cancel\"</code></td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"constantsSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constant Field Values table, listing constant fields, and values\">\n<caption><span>acm.gui.<a href=\"acm/gui/JFontChooser.DialogOKAction.html\" title=\"class in acm.gui\">JFontChooser.DialogOKAction</a></span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th scope=\"col\">Constant Field</th>\n<th class=\"colLast\" scope=\"col\">Value</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.gui.JFontChooser.DialogOKAction.ACTION_NAME\">\n<!--   -->\n</a><code>protected&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/gui/JFontChooser.DialogOKAction.html#ACTION_NAME\">ACTION_NAME</a></code></td>\n<td class=\"colLast\"><code>\"OK\"</code></td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"constantsSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constant Field Values table, listing constant fields, and values\">\n<caption><span>acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th scope=\"col\">Constant Field</th>\n<th class=\"colLast\" scope=\"col\">Value</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.gui.TableLayout.BOTH\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"acm/gui/TableLayout.html#BOTH\">BOTH</a></code></td>\n<td class=\"colLast\"><code>1</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"acm.gui.TableLayout.BOTTOM\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"acm/gui/TableLayout.html#BOTTOM\">BOTTOM</a></code></td>\n<td class=\"colLast\"><code>14</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.gui.TableLayout.CENTER\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"acm/gui/TableLayout.html#CENTER\">CENTER</a></code></td>\n<td class=\"colLast\"><code>10</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"acm.gui.TableLayout.FILL\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"acm/gui/TableLayout.html#FILL\">FILL</a></code></td>\n<td class=\"colLast\"><code>1</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.gui.TableLayout.HORIZONTAL\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"acm/gui/TableLayout.html#HORIZONTAL\">HORIZONTAL</a></code></td>\n<td class=\"colLast\"><code>2</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"acm.gui.TableLayout.LEFT\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"acm/gui/TableLayout.html#LEFT\">LEFT</a></code></td>\n<td class=\"colLast\"><code>11</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.gui.TableLayout.NONE\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"acm/gui/TableLayout.html#NONE\">NONE</a></code></td>\n<td class=\"colLast\"><code>0</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"acm.gui.TableLayout.RIGHT\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"acm/gui/TableLayout.html#RIGHT\">RIGHT</a></code></td>\n<td class=\"colLast\"><code>12</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.gui.TableLayout.TOP\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"acm/gui/TableLayout.html#TOP\">TOP</a></code></td>\n<td class=\"colLast\"><code>13</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"acm.gui.TableLayout.VERTICAL\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"acm/gui/TableLayout.html#VERTICAL\">VERTICAL</a></code></td>\n<td class=\"colLast\"><code>3</code></td>\n</tr>\n</tbody>\n</table>\n</li>\n</ul>\n<a name=\"acm.io\">\n<!--   -->\n</a>\n<h2 title=\"acm.io\">acm.io.*</h2>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<table class=\"constantsSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constant Field Values table, listing constant fields, and values\">\n<caption><span>acm.io.<a href=\"acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th scope=\"col\">Constant Field</th>\n<th class=\"colLast\" scope=\"col\">Value</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.io.ConsoleModel.ERROR_STYLE\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"acm/io/ConsoleModel.html#ERROR_STYLE\">ERROR_STYLE</a></code></td>\n<td class=\"colLast\"><code>2</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"acm.io.ConsoleModel.INPUT_STYLE\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"acm/io/ConsoleModel.html#INPUT_STYLE\">INPUT_STYLE</a></code></td>\n<td class=\"colLast\"><code>1</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.io.ConsoleModel.OUTPUT_STYLE\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"acm/io/ConsoleModel.html#OUTPUT_STYLE\">OUTPUT_STYLE</a></code></td>\n<td class=\"colLast\"><code>0</code></td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"constantsSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constant Field Values table, listing constant fields, and values\">\n<caption><span>acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th scope=\"col\">Constant Field</th>\n<th class=\"colLast\" scope=\"col\">Value</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.io.IOConsole.MINIMUM_CONSOLE_HEIGHT\">\n<!--   -->\n</a><code>protected&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"acm/io/IOConsole.html#MINIMUM_CONSOLE_HEIGHT\">MINIMUM_CONSOLE_HEIGHT</a></code></td>\n<td class=\"colLast\"><code>40</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"acm.io.IOConsole.MINIMUM_CONSOLE_WIDTH\">\n<!--   -->\n</a><code>protected&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"acm/io/IOConsole.html#MINIMUM_CONSOLE_WIDTH\">MINIMUM_CONSOLE_WIDTH</a></code></td>\n<td class=\"colLast\"><code>50</code></td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"constantsSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constant Field Values table, listing constant fields, and values\">\n<caption><span>acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th scope=\"col\">Constant Field</th>\n<th class=\"colLast\" scope=\"col\">Value</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.io.SimpleScanner.SCANNER_APPLET_MODE_PROPERTY_NAME\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/io/SimpleScanner.html#SCANNER_APPLET_MODE_PROPERTY_NAME\">SCANNER_APPLET_MODE_PROPERTY_NAME</a></code></td>\n<td class=\"colLast\"><code>\"scanner.appletmode\"</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"acm.io.SimpleScanner.SCANNER_ECHO_PROPERTY_NAME\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/io/SimpleScanner.html#SCANNER_ECHO_PROPERTY_NAME\">SCANNER_ECHO_PROPERTY_NAME</a></code></td>\n<td class=\"colLast\"><code>\"scanner.echo\"</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.io.SimpleScanner.SCANNER_REUSE_PROPERTY_NAME\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/io/SimpleScanner.html#SCANNER_REUSE_PROPERTY_NAME\">SCANNER_REUSE_PROPERTY_NAME</a></code></td>\n<td class=\"colLast\"><code>\"scanner.reuse\"</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"acm.io.SimpleScanner.SCANNER_WORKING_DIR_PROPERTY_NAME\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/io/SimpleScanner.html#SCANNER_WORKING_DIR_PROPERTY_NAME\">SCANNER_WORKING_DIR_PROPERTY_NAME</a></code></td>\n<td class=\"colLast\"><code>\"scanner.workingdir\"</code></td>\n</tr>\n</tbody>\n</table>\n</li>\n</ul>\n<a name=\"acm.program\">\n<!--   -->\n</a>\n<h2 title=\"acm.program\">acm.program.*</h2>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<table class=\"constantsSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constant Field Values table, listing constant fields, and values\">\n<caption><span>acm.program.<a href=\"acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th scope=\"col\">Constant Field</th>\n<th class=\"colLast\" scope=\"col\">Value</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.program.AbstractConsoleProgram.PROGRAM_COMPLETED_TITLE_SUFFIX\">\n<!--   -->\n</a><code>protected&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/AbstractConsoleProgram.html#PROGRAM_COMPLETED_TITLE_SUFFIX\">PROGRAM_COMPLETED_TITLE_SUFFIX</a></code></td>\n<td class=\"colLast\"><code>\" [completed]\"</code></td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"constantsSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constant Field Values table, listing constant fields, and values\">\n<caption><span>acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th scope=\"col\">Constant Field</th>\n<th class=\"colLast\" scope=\"col\">Value</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.program.Program.CONFIG_FILE_NAME\">\n<!--   -->\n</a><code>protected&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/Program.html#CONFIG_FILE_NAME\">CONFIG_FILE_NAME</a></code></td>\n<td class=\"colLast\"><code>\"spl-jar-settings.txt\"</code></td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"constantsSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constant Field Values table, listing constant fields, and values\">\n<caption><span>acm.program.<a href=\"acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th scope=\"col\">Constant Field</th>\n<th class=\"colLast\" scope=\"col\">Value</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramInterface.CENTER\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/ProgramInterface.html#CENTER\">CENTER</a></code></td>\n<td class=\"colLast\"><code>\"Center\"</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramInterface.EAST\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/ProgramInterface.html#EAST\">EAST</a></code></td>\n<td class=\"colLast\"><code>\"East\"</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramInterface.NORTH\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/ProgramInterface.html#NORTH\">NORTH</a></code></td>\n<td class=\"colLast\"><code>\"North\"</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramInterface.SOUTH\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/ProgramInterface.html#SOUTH\">SOUTH</a></code></td>\n<td class=\"colLast\"><code>\"South\"</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramInterface.WEST\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/ProgramInterface.html#WEST\">WEST</a></code></td>\n<td class=\"colLast\"><code>\"West\"</code></td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"constantsSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constant Field Values table, listing constant fields, and values\">\n<caption><span>acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th scope=\"col\">Constant Field</th>\n<th class=\"colLast\" scope=\"col\">Value</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramMenuBar.MENU_ITEM_TEXT_ABOUT\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_ABOUT\">MENU_ITEM_TEXT_ABOUT</a></code></td>\n<td class=\"colLast\"><code>\"About...\"</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramMenuBar.MENU_ITEM_TEXT_ANTI_ALIASING\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_ANTI_ALIASING\">MENU_ITEM_TEXT_ANTI_ALIASING</a></code></td>\n<td class=\"colLast\"><code>\"Anti-aliasing\"</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramMenuBar.MENU_ITEM_TEXT_BACKGROUND_COLOR\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_BACKGROUND_COLOR\">MENU_ITEM_TEXT_BACKGROUND_COLOR</a></code></td>\n<td class=\"colLast\"><code>\"Background Color...\"</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramMenuBar.MENU_ITEM_TEXT_CHECK_FOR_UPDATES\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_CHECK_FOR_UPDATES\">MENU_ITEM_TEXT_CHECK_FOR_UPDATES</a></code></td>\n<td class=\"colLast\"><code>\"Check for Updates\"</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramMenuBar.MENU_ITEM_TEXT_CLEAR_CONSOLE\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_CLEAR_CONSOLE\">MENU_ITEM_TEXT_CLEAR_CONSOLE</a></code></td>\n<td class=\"colLast\"><code>\"Clear Console\"</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramMenuBar.MENU_ITEM_TEXT_COMPARE_OUTPUT\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_COMPARE_OUTPUT\">MENU_ITEM_TEXT_COMPARE_OUTPUT</a></code></td>\n<td class=\"colLast\"><code>\"Compare Output...\"</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramMenuBar.MENU_ITEM_TEXT_COPY\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_COPY\">MENU_ITEM_TEXT_COPY</a></code></td>\n<td class=\"colLast\"><code>\"Copy\"</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramMenuBar.MENU_ITEM_TEXT_CUT\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_CUT\">MENU_ITEM_TEXT_CUT</a></code></td>\n<td class=\"colLast\"><code>\"Cut\"</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramMenuBar.MENU_ITEM_TEXT_EXPORT_APPLET\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_EXPORT_APPLET\">MENU_ITEM_TEXT_EXPORT_APPLET</a></code></td>\n<td class=\"colLast\"><code>\"Export Applet\"</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramMenuBar.MENU_ITEM_TEXT_FONT\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_FONT\">MENU_ITEM_TEXT_FONT</a></code></td>\n<td class=\"colLast\"><code>\"Font...\"</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramMenuBar.MENU_ITEM_TEXT_FOREGROUND_COLOR\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_FOREGROUND_COLOR\">MENU_ITEM_TEXT_FOREGROUND_COLOR</a></code></td>\n<td class=\"colLast\"><code>\"Text Color...\"</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramMenuBar.MENU_ITEM_TEXT_INTERACTIVE\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_INTERACTIVE\">MENU_ITEM_TEXT_INTERACTIVE</a></code></td>\n<td class=\"colLast\"><code>\"Interactive Mode\"</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramMenuBar.MENU_ITEM_TEXT_LOAD_INPUT_SCRIPT\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_LOAD_INPUT_SCRIPT\">MENU_ITEM_TEXT_LOAD_INPUT_SCRIPT</a></code></td>\n<td class=\"colLast\"><code>\"Load Input Script...\"</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramMenuBar.MENU_ITEM_TEXT_MSKAREL\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_MSKAREL\">MENU_ITEM_TEXT_MSKAREL</a></code></td>\n<td class=\"colLast\"><code>\"Ms. Karel\"</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramMenuBar.MENU_ITEM_TEXT_PASTE\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_PASTE\">MENU_ITEM_TEXT_PASTE</a></code></td>\n<td class=\"colLast\"><code>\"Paste\"</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramMenuBar.MENU_ITEM_TEXT_PRINT\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_PRINT\">MENU_ITEM_TEXT_PRINT</a></code></td>\n<td class=\"colLast\"><code>\"Print\"</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramMenuBar.MENU_ITEM_TEXT_PRINT_CONSOLE\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_PRINT_CONSOLE\">MENU_ITEM_TEXT_PRINT_CONSOLE</a></code></td>\n<td class=\"colLast\"><code>\"Print Console\"</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramMenuBar.MENU_ITEM_TEXT_QUIT\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_QUIT\">MENU_ITEM_TEXT_QUIT</a></code></td>\n<td class=\"colLast\"><code>\"Quit\"</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramMenuBar.MENU_ITEM_TEXT_SAVE\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_SAVE\">MENU_ITEM_TEXT_SAVE</a></code></td>\n<td class=\"colLast\"><code>\"Save\"</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramMenuBar.MENU_ITEM_TEXT_SAVE_AS\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_SAVE_AS\">MENU_ITEM_TEXT_SAVE_AS</a></code></td>\n<td class=\"colLast\"><code>\"Save As...\"</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramMenuBar.MENU_ITEM_TEXT_SCRIPT\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_SCRIPT\">MENU_ITEM_TEXT_SCRIPT</a></code></td>\n<td class=\"colLast\"><code>\"Script\"</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramMenuBar.MENU_ITEM_TEXT_SELECT_ALL\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_SELECT_ALL\">MENU_ITEM_TEXT_SELECT_ALL</a></code></td>\n<td class=\"colLast\"><code>\"Select All\"</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramMenuBar.MENU_ITEM_TEXT_SHOW_PIXEL_GRID\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_SHOW_PIXEL_GRID\">MENU_ITEM_TEXT_SHOW_PIXEL_GRID</a></code></td>\n<td class=\"colLast\"><code>\"Show Pixel Grid\"</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramMenuBar.MENU_ITEM_TEXT_SHOW_PIXEL_INFO\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_SHOW_PIXEL_INFO\">MENU_ITEM_TEXT_SHOW_PIXEL_INFO</a></code></td>\n<td class=\"colLast\"><code>\"Show Pixel Info\"</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramMenuBar.MENU_ITEM_TEXT_SUBMIT_PROJECT\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_SUBMIT_PROJECT\">MENU_ITEM_TEXT_SUBMIT_PROJECT</a></code></td>\n<td class=\"colLast\"><code>\"Submit Project\"</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramMenuBar.SHIFT\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"acm/program/ProgramMenuBar.html#SHIFT\">SHIFT</a></code></td>\n<td class=\"colLast\"><code>131072</code></td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"constantsSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constant Field Values table, listing constant fields, and values\">\n<caption><span>acm.program.<a href=\"acm/program/ProgramStartupFlags.html\" title=\"interface in acm.program\">ProgramStartupFlags</a></span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th scope=\"col\">Constant Field</th>\n<th class=\"colLast\" scope=\"col\">Value</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramStartupFlags.SPL_AUTOGRADER_MODE\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/ProgramStartupFlags.html#SPL_AUTOGRADER_MODE\">SPL_AUTOGRADER_MODE</a></code></td>\n<td class=\"colLast\"><code>\"SPL_AUTOGRADER_MODE\"</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramStartupFlags.SPL_CONSOLE_ECHO\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/ProgramStartupFlags.html#SPL_CONSOLE_ECHO\">SPL_CONSOLE_ECHO</a></code></td>\n<td class=\"colLast\"><code>\"SPL_CONSOLE_ECHO\"</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramStartupFlags.SPL_CONSOLE_EXIT_ON_CLOSE\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/ProgramStartupFlags.html#SPL_CONSOLE_EXIT_ON_CLOSE\">SPL_CONSOLE_EXIT_ON_CLOSE</a></code></td>\n<td class=\"colLast\"><code>\"SPL_CONSOLE_EXIT_ON_CLOSE\"</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramStartupFlags.SPL_CONSOLE_FONTSIZE\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/ProgramStartupFlags.html#SPL_CONSOLE_FONTSIZE\">SPL_CONSOLE_FONTSIZE</a></code></td>\n<td class=\"colLast\"><code>\"SPL_CONSOLE_FONTSIZE\"</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramStartupFlags.SPL_CONSOLE_HEIGHT\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/ProgramStartupFlags.html#SPL_CONSOLE_HEIGHT\">SPL_CONSOLE_HEIGHT</a></code></td>\n<td class=\"colLast\"><code>\"SPL_CONSOLE_HEIGHT\"</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramStartupFlags.SPL_CONSOLE_LOCATION_SAVED\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/ProgramStartupFlags.html#SPL_CONSOLE_LOCATION_SAVED\">SPL_CONSOLE_LOCATION_SAVED</a></code></td>\n<td class=\"colLast\"><code>\"SPL_CONSOLE_LOCATION_SAVED\"</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramStartupFlags.SPL_CONSOLE_WIDTH\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/ProgramStartupFlags.html#SPL_CONSOLE_WIDTH\">SPL_CONSOLE_WIDTH</a></code></td>\n<td class=\"colLast\"><code>\"SPL_CONSOLE_WIDTH\"</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramStartupFlags.SPL_CONSOLE_X\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/ProgramStartupFlags.html#SPL_CONSOLE_X\">SPL_CONSOLE_X</a></code></td>\n<td class=\"colLast\"><code>\"SPL_CONSOLE_X\"</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.program.ProgramStartupFlags.SPL_CONSOLE_Y\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/program/ProgramStartupFlags.html#SPL_CONSOLE_Y\">SPL_CONSOLE_Y</a></code></td>\n<td class=\"colLast\"><code>\"SPL_CONSOLE_Y\"</code></td>\n</tr>\n</tbody>\n</table>\n</li>\n</ul>\n<a name=\"acm.util\">\n<!--   -->\n</a>\n<h2 title=\"acm.util\">acm.util.*</h2>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<table class=\"constantsSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constant Field Values table, listing constant fields, and values\">\n<caption><span>acm.util.<a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th scope=\"col\">Constant Field</th>\n<th class=\"colLast\" scope=\"col\">Value</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.util.MediaTools.DEFAULT_AUDIO_PATH\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/util/MediaTools.html#DEFAULT_AUDIO_PATH\">DEFAULT_AUDIO_PATH</a></code></td>\n<td class=\"colLast\"><code>\".:sounds:res:res/sounds\"</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"acm.util.MediaTools.DEFAULT_DATAFILE_PATH\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/util/MediaTools.html#DEFAULT_DATAFILE_PATH\">DEFAULT_DATAFILE_PATH</a></code></td>\n<td class=\"colLast\"><code>\".:datafiles:res:res/datafiles:inputs\"</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.util.MediaTools.DEFAULT_IMAGE_PATH\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"acm/util/MediaTools.html#DEFAULT_IMAGE_PATH\">DEFAULT_IMAGE_PATH</a></code></td>\n<td class=\"colLast\"><code>\".:images:res:res/images\"</code></td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"constantsSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constant Field Values table, listing constant fields, and values\">\n<caption><span>acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th scope=\"col\">Constant Field</th>\n<th class=\"colLast\" scope=\"col\">Value</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.util.SoundClip.LEFT\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"acm/util/SoundClip.html#LEFT\">LEFT</a></code></td>\n<td class=\"colLast\"><code>0</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"acm.util.SoundClip.MAX_SAMPLE\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"acm/util/SoundClip.html#MAX_SAMPLE\">MAX_SAMPLE</a></code></td>\n<td class=\"colLast\"><code>32767</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.util.SoundClip.MONO\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"acm/util/SoundClip.html#MONO\">MONO</a></code></td>\n<td class=\"colLast\"><code>1</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"acm.util.SoundClip.RIGHT\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"acm/util/SoundClip.html#RIGHT\">RIGHT</a></code></td>\n<td class=\"colLast\"><code>1</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"acm.util.SoundClip.STANDARD_FRAME_RATE\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;double</code></td>\n<td><code><a href=\"acm/util/SoundClip.html#STANDARD_FRAME_RATE\">STANDARD_FRAME_RATE</a></code></td>\n<td class=\"colLast\"><code>22050.0</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"acm.util.SoundClip.STEREO\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"acm/util/SoundClip.html#STEREO\">STEREO</a></code></td>\n<td class=\"colLast\"><code>2</code></td>\n</tr>\n</tbody>\n</table>\n</li>\n</ul>\n<a name=\"stanford.cs106\">\n<!--   -->\n</a>\n<h2 title=\"stanford.cs106\">stanford.cs106.*</h2>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<table class=\"constantsSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constant Field Values table, listing constant fields, and values\">\n<caption><span>stanford.cs106.audio.<a href=\"stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\">Note</a></span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th scope=\"col\">Constant Field</th>\n<th class=\"colLast\" scope=\"col\">Value</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"stanford.cs106.audio.Note.OCTAVE_MAX\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/cs106/audio/Note.html#OCTAVE_MAX\">OCTAVE_MAX</a></code></td>\n<td class=\"colLast\"><code>10</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"stanford.cs106.audio.Note.OCTAVE_MIN\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/cs106/audio/Note.html#OCTAVE_MIN\">OCTAVE_MIN</a></code></td>\n<td class=\"colLast\"><code>1</code></td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"constantsSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constant Field Values table, listing constant fields, and values\">\n<caption><span>stanford.cs106.audio.<a href=\"stanford/cs106/audio/StdAudio.html\" title=\"class in stanford.cs106.audio\">StdAudio</a></span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th scope=\"col\">Constant Field</th>\n<th class=\"colLast\" scope=\"col\">Value</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"stanford.cs106.audio.StdAudio.SAMPLE_RATE\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/cs106/audio/StdAudio.html#SAMPLE_RATE\">SAMPLE_RATE</a></code></td>\n<td class=\"colLast\"><code>44100</code></td>\n</tr>\n</tbody>\n</table>\n</li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<table class=\"constantsSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constant Field Values table, listing constant fields, and values\">\n<caption><span>stanford.cs106.collections.<a href=\"stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\">Edge</a>&lt;<a href=\"stanford/cs106/collections/Edge.html\" title=\"type parameter in Edge\">V</a>,<a href=\"stanford/cs106/collections/Edge.html\" title=\"type parameter in Edge\">E</a>&gt;</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th scope=\"col\">Constant Field</th>\n<th class=\"colLast\" scope=\"col\">Value</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"stanford.cs106.collections.Edge.DEFAULT_WEIGHT\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/cs106/collections/Edge.html#DEFAULT_WEIGHT\">DEFAULT_WEIGHT</a></code></td>\n<td class=\"colLast\"><code>1</code></td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"constantsSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constant Field Values table, listing constant fields, and values\">\n<caption><span>stanford.cs106.collections.<a href=\"stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"stanford/cs106/collections/Vertex.html\" title=\"type parameter in Vertex\">V</a>&gt;</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th scope=\"col\">Constant Field</th>\n<th class=\"colLast\" scope=\"col\">Value</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"stanford.cs106.collections.Vertex.MAX_COST\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;double</code></td>\n<td><code><a href=\"stanford/cs106/collections/Vertex.html#MAX_COST\">MAX_COST</a></code></td>\n<td class=\"colLast\"><code>1d/0d</code></td>\n</tr>\n</tbody>\n</table>\n</li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<table class=\"constantsSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constant Field Values table, listing constant fields, and values\">\n<caption><span>stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th scope=\"col\">Constant Field</th>\n<th class=\"colLast\" scope=\"col\">Value</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"stanford.cs106.gui.GuiUtils.SETTINGS_FILENAME\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"stanford/cs106/gui/GuiUtils.html#SETTINGS_FILENAME\">SETTINGS_FILENAME</a></code></td>\n<td class=\"colLast\"><code>\"autograder-window-settings.sav\"</code></td>\n</tr>\n</tbody>\n</table>\n</li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<table class=\"constantsSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constant Field Values table, listing constant fields, and values\">\n<caption><span>stanford.cs106.net.<a href=\"stanford/cs106/net/SimpleClient.html\" title=\"class in stanford.cs106.net\">SimpleClient</a></span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th scope=\"col\">Constant Field</th>\n<th class=\"colLast\" scope=\"col\">Value</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"stanford.cs106.net.SimpleClient.ERROR_KEY\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"stanford/cs106/net/SimpleClient.html#ERROR_KEY\">ERROR_KEY</a></code></td>\n<td class=\"colLast\"><code>\"Error:\"</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"stanford.cs106.net.SimpleClient.SESSION_KEY_PARAM_NAME\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"stanford/cs106/net/SimpleClient.html#SESSION_KEY_PARAM_NAME\">SESSION_KEY_PARAM_NAME</a></code></td>\n<td class=\"colLast\"><code>\"SESSION_ID\"</code></td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"constantsSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constant Field Values table, listing constant fields, and values\">\n<caption><span>stanford.cs106.net.<a href=\"stanford/cs106/net/SimpleServer.html\" title=\"class in stanford.cs106.net\">SimpleServer</a></span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th scope=\"col\">Constant Field</th>\n<th class=\"colLast\" scope=\"col\">Value</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"stanford.cs106.net.SimpleServer.DEFAULT_PORT\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/cs106/net/SimpleServer.html#DEFAULT_PORT\">DEFAULT_PORT</a></code></td>\n<td class=\"colLast\"><code>8080</code></td>\n</tr>\n</tbody>\n</table>\n</li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<table class=\"constantsSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constant Field Values table, listing constant fields, and values\">\n<caption><span>stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th scope=\"col\">Constant Field</th>\n<th class=\"colLast\" scope=\"col\">Value</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"stanford.cs106.reflect.ClassUtils.CLASS_EXTENSION\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"stanford/cs106/reflect/ClassUtils.html#CLASS_EXTENSION\">CLASS_EXTENSION</a></code></td>\n<td class=\"colLast\"><code>\".class\"</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"stanford.cs106.reflect.ClassUtils.JAVA_EXTENSION\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"stanford/cs106/reflect/ClassUtils.html#JAVA_EXTENSION\">JAVA_EXTENSION</a></code></td>\n<td class=\"colLast\"><code>\".java\"</code></td>\n</tr>\n</tbody>\n</table>\n</li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<table class=\"constantsSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constant Field Values table, listing constant fields, and values\">\n<caption><span>stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th scope=\"col\">Constant Field</th>\n<th class=\"colLast\" scope=\"col\">Value</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"stanford.cs106.util.StringUtils.DEFAULT_TAB_WIDTH\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/cs106/util/StringUtils.html#DEFAULT_TAB_WIDTH\">DEFAULT_TAB_WIDTH</a></code></td>\n<td class=\"colLast\"><code>4</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"stanford.cs106.util.StringUtils.TAB_STRING\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"stanford/cs106/util/StringUtils.html#TAB_STRING\">TAB_STRING</a></code></td>\n<td class=\"colLast\"><code>\"\\t\"</code></td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"constantsSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constant Field Values table, listing constant fields, and values\">\n<caption><span>stanford.cs106.util.<a href=\"stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\">XmlUtils</a></span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th scope=\"col\">Constant Field</th>\n<th class=\"colLast\" scope=\"col\">Value</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"stanford.cs106.util.XmlUtils.XML_EXTENSION\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"stanford/cs106/util/XmlUtils.html#XML_EXTENSION\">XML_EXTENSION</a></code></td>\n<td class=\"colLast\"><code>\".xml\"</code></td>\n</tr>\n</tbody>\n</table>\n</li>\n</ul>\n<a name=\"stanford.karel\">\n<!--   -->\n</a>\n<h2 title=\"stanford.karel\">stanford.karel.*</h2>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<table class=\"constantsSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constant Field Values table, listing constant fields, and values\">\n<caption><span>stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th scope=\"col\">Constant Field</th>\n<th class=\"colLast\" scope=\"col\">Value</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelProgram.EAST\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/karel/KarelProgram.html#EAST\">EAST</a></code></td>\n<td class=\"colLast\"><code>1</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelProgram.FANCY\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/karel/KarelProgram.html#FANCY\">FANCY</a></code></td>\n<td class=\"colLast\"><code>1</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelProgram.INFINITE\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/karel/KarelProgram.html#INFINITE\">INFINITE</a></code></td>\n<td class=\"colLast\"><code>99999999</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelProgram.NORTH\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/karel/KarelProgram.html#NORTH\">NORTH</a></code></td>\n<td class=\"colLast\"><code>0</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelProgram.SIMPLE\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/karel/KarelProgram.html#SIMPLE\">SIMPLE</a></code></td>\n<td class=\"colLast\"><code>0</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelProgram.SOUTH\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/karel/KarelProgram.html#SOUTH\">SOUTH</a></code></td>\n<td class=\"colLast\"><code>2</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelProgram.WEST\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/karel/KarelProgram.html#WEST\">WEST</a></code></td>\n<td class=\"colLast\"><code>3</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelProgram.WORLD_EXTENSION\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"stanford/karel/KarelProgram.html#WORLD_EXTENSION\">WORLD_EXTENSION</a></code></td>\n<td class=\"colLast\"><code>\".w\"</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelProgram.WORLDS_DIRECTORY\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"stanford/karel/KarelProgram.html#WORLDS_DIRECTORY\">WORLDS_DIRECTORY</a></code></td>\n<td class=\"colLast\"><code>\"worlds\"</code></td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"constantsSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constant Field Values table, listing constant fields, and values\">\n<caption><span>stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th scope=\"col\">Constant Field</th>\n<th class=\"colLast\" scope=\"col\">Value</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelWorld.BEEPER_BORDER\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/karel/KarelWorld.html#BEEPER_BORDER\">BEEPER_BORDER</a></code></td>\n<td class=\"colLast\"><code>1</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelWorld.BEEPER_FONT_FAMILY\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td><code><a href=\"stanford/karel/KarelWorld.html#BEEPER_FONT_FAMILY\">BEEPER_FONT_FAMILY</a></code></td>\n<td class=\"colLast\"><code>\"SansSerif\"</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelWorld.BEEPER_FRACTION\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;double</code></td>\n<td><code><a href=\"stanford/karel/KarelWorld.html#BEEPER_FRACTION\">BEEPER_FRACTION</a></code></td>\n<td class=\"colLast\"><code>0.7</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelWorld.BLANKB\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/karel/KarelWorld.html#BLANKB\">BLANKB</a></code></td>\n<td class=\"colLast\"><code>-3</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelWorld.BOTTOM_NUMBER_MARGIN\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/karel/KarelWorld.html#BOTTOM_NUMBER_MARGIN\">BOTTOM_NUMBER_MARGIN</a></code></td>\n<td class=\"colLast\"><code>15</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelWorld.CENTER\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/karel/KarelWorld.html#CENTER\">CENTER</a></code></td>\n<td class=\"colLast\"><code>14</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelWorld.CROSS_THRESHOLD\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/karel/KarelWorld.html#CROSS_THRESHOLD\">CROSS_THRESHOLD</a></code></td>\n<td class=\"colLast\"><code>11</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelWorld.DOUBLE_WALL_THRESHOLD\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/karel/KarelWorld.html#DOUBLE_WALL_THRESHOLD\">DOUBLE_WALL_THRESHOLD</a></code></td>\n<td class=\"colLast\"><code>24</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelWorld.EAST\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/karel/KarelWorld.html#EAST\">EAST</a></code></td>\n<td class=\"colLast\"><code>1</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelWorld.FANCY\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/karel/KarelWorld.html#FANCY\">FANCY</a></code></td>\n<td class=\"colLast\"><code>1</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelWorld.INFINITE\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/karel/KarelWorld.html#INFINITE\">INFINITE</a></code></td>\n<td class=\"colLast\"><code>99999999</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelWorld.LEFT_NUMBER_MARGIN\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/karel/KarelWorld.html#LEFT_NUMBER_MARGIN\">LEFT_NUMBER_MARGIN</a></code></td>\n<td class=\"colLast\"><code>16</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelWorld.MAX_DISPLAY_HEIGHT\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/karel/KarelWorld.html#MAX_DISPLAY_HEIGHT\">MAX_DISPLAY_HEIGHT</a></code></td>\n<td class=\"colLast\"><code>315</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelWorld.MAX_DISPLAY_WIDTH\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/karel/KarelWorld.html#MAX_DISPLAY_WIDTH\">MAX_DISPLAY_WIDTH</a></code></td>\n<td class=\"colLast\"><code>316</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelWorld.MAX_HEIGHT\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/karel/KarelWorld.html#MAX_HEIGHT\">MAX_HEIGHT</a></code></td>\n<td class=\"colLast\"><code>50</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelWorld.MAX_WIDTH\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/karel/KarelWorld.html#MAX_WIDTH\">MAX_WIDTH</a></code></td>\n<td class=\"colLast\"><code>50</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelWorld.MIN_BEEPER\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/karel/KarelWorld.html#MIN_BEEPER\">MIN_BEEPER</a></code></td>\n<td class=\"colLast\"><code>4</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelWorld.MIN_FANCY\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/karel/KarelWorld.html#MIN_FANCY\">MIN_FANCY</a></code></td>\n<td class=\"colLast\"><code>20</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelWorld.MIN_LABEL\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/karel/KarelWorld.html#MIN_LABEL\">MIN_LABEL</a></code></td>\n<td class=\"colLast\"><code>15</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelWorld.MINUS1\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/karel/KarelWorld.html#MINUS1\">MINUS1</a></code></td>\n<td class=\"colLast\"><code>-2</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelWorld.NORTH\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/karel/KarelWorld.html#NORTH\">NORTH</a></code></td>\n<td class=\"colLast\"><code>0</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelWorld.NORTHEAST\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/karel/KarelWorld.html#NORTHEAST\">NORTHEAST</a></code></td>\n<td class=\"colLast\"><code>10</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelWorld.NORTHWEST\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/karel/KarelWorld.html#NORTHWEST\">NORTHWEST</a></code></td>\n<td class=\"colLast\"><code>11</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelWorld.NUMBER_THRESHOLD\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/karel/KarelWorld.html#NUMBER_THRESHOLD\">NUMBER_THRESHOLD</a></code></td>\n<td class=\"colLast\"><code>15</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelWorld.PLUS1\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/karel/KarelWorld.html#PLUS1\">PLUS1</a></code></td>\n<td class=\"colLast\"><code>-1</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelWorld.SIMPLE\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/karel/KarelWorld.html#SIMPLE\">SIMPLE</a></code></td>\n<td class=\"colLast\"><code>0</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelWorld.SIMPLE_FRACTION\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;double</code></td>\n<td><code><a href=\"stanford/karel/KarelWorld.html#SIMPLE_FRACTION\">SIMPLE_FRACTION</a></code></td>\n<td class=\"colLast\"><code>0.7</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelWorld.SOUTH\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/karel/KarelWorld.html#SOUTH\">SOUTH</a></code></td>\n<td class=\"colLast\"><code>2</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelWorld.SOUTHEAST\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/karel/KarelWorld.html#SOUTHEAST\">SOUTHEAST</a></code></td>\n<td class=\"colLast\"><code>12</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelWorld.SOUTHWEST\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/karel/KarelWorld.html#SOUTHWEST\">SOUTHWEST</a></code></td>\n<td class=\"colLast\"><code>13</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelWorld.TOKEN_TRACE\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;boolean</code></td>\n<td><code><a href=\"stanford/karel/KarelWorld.html#TOKEN_TRACE\">TOKEN_TRACE</a></code></td>\n<td class=\"colLast\"><code>false</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelWorld.WALL_FRACTION\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;double</code></td>\n<td><code><a href=\"stanford/karel/KarelWorld.html#WALL_FRACTION\">WALL_FRACTION</a></code></td>\n<td class=\"colLast\"><code>0.3</code></td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelWorld.WALL_TOLERANCE\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;double</code></td>\n<td><code><a href=\"stanford/karel/KarelWorld.html#WALL_TOLERANCE\">WALL_TOLERANCE</a></code></td>\n<td class=\"colLast\"><code>0.15</code></td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a name=\"stanford.karel.KarelWorld.WEST\">\n<!--   -->\n</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>\n<td><code><a href=\"stanford/karel/KarelWorld.html#WEST\">WEST</a></code></td>\n<td class=\"colLast\"><code>3</code></td>\n</tr>\n</tbody>\n</table>\n</li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"overview-summary.html\">Overview</a></li>\n<li>Package</li>\n<li>Class</li>\n<li><a href=\"overview-tree.html\">Tree</a></li>\n<li><a href=\"deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"index-all.html\">Index</a></li>\n<li><a href=\"help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev</li>\n<li>Next</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"index.html?constant-values.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"constant-values.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/deprecated-list.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>Deprecated List</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"Deprecated List\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"overview-summary.html\">Overview</a></li>\n<li>Package</li>\n<li>Class</li>\n<li><a href=\"overview-tree.html\">Tree</a></li>\n<li class=\"navBarCell1Rev\">Deprecated</li>\n<li><a href=\"index-all.html\">Index</a></li>\n<li><a href=\"help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev</li>\n<li>Next</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"index.html?deprecated-list.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"deprecated-list.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 title=\"Deprecated API\" class=\"title\">Deprecated API</h1>\n<h2 title=\"Contents\">Contents</h2>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"overview-summary.html\">Overview</a></li>\n<li>Package</li>\n<li>Class</li>\n<li><a href=\"overview-tree.html\">Tree</a></li>\n<li class=\"navBarCell1Rev\">Deprecated</li>\n<li><a href=\"index-all.html\">Index</a></li>\n<li><a href=\"help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev</li>\n<li>Next</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"index.html?deprecated-list.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"deprecated-list.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/help-doc.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>API Help</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"API Help\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"overview-summary.html\">Overview</a></li>\n<li>Package</li>\n<li>Class</li>\n<li><a href=\"overview-tree.html\">Tree</a></li>\n<li><a href=\"deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"index-all.html\">Index</a></li>\n<li class=\"navBarCell1Rev\">Help</li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev</li>\n<li>Next</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"index.html?help-doc.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"help-doc.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 class=\"title\">How This API Document Is Organized</h1>\n<div class=\"subTitle\">This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.</div>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h2>Overview</h2>\n<p>The <a href=\"overview-summary.html\">Overview</a> page is the front page of this API document and provides a list of all packages with a summary for each.  This page can also contain an overall description of the set of packages.</p>\n</li>\n<li class=\"blockList\">\n<h2>Package</h2>\n<p>Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain six categories:</p>\n<ul>\n<li>Interfaces (italic)</li>\n<li>Classes</li>\n<li>Enums</li>\n<li>Exceptions</li>\n<li>Errors</li>\n<li>Annotation Types</li>\n</ul>\n</li>\n<li class=\"blockList\">\n<h2>Class/Interface</h2>\n<p>Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:</p>\n<ul>\n<li>Class inheritance diagram</li>\n<li>Direct Subclasses</li>\n<li>All Known Subinterfaces</li>\n<li>All Known Implementing Classes</li>\n<li>Class/interface declaration</li>\n<li>Class/interface description</li>\n</ul>\n<ul>\n<li>Nested Class Summary</li>\n<li>Field Summary</li>\n<li>Constructor Summary</li>\n<li>Method Summary</li>\n</ul>\n<ul>\n<li>Field Detail</li>\n<li>Constructor Detail</li>\n<li>Method Detail</li>\n</ul>\n<p>Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.</p>\n</li>\n<li class=\"blockList\">\n<h2>Annotation Type</h2>\n<p>Each annotation type has its own separate page with the following sections:</p>\n<ul>\n<li>Annotation Type declaration</li>\n<li>Annotation Type description</li>\n<li>Required Element Summary</li>\n<li>Optional Element Summary</li>\n<li>Element Detail</li>\n</ul>\n</li>\n<li class=\"blockList\">\n<h2>Enum</h2>\n<p>Each enum has its own separate page with the following sections:</p>\n<ul>\n<li>Enum declaration</li>\n<li>Enum description</li>\n<li>Enum Constant Summary</li>\n<li>Enum Constant Detail</li>\n</ul>\n</li>\n<li class=\"blockList\">\n<h2>Tree (Class Hierarchy)</h2>\n<p>There is a <a href=\"overview-tree.html\">Class Hierarchy</a> page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with <code>java.lang.Object</code>. The interfaces do not inherit from <code>java.lang.Object</code>.</p>\n<ul>\n<li>When viewing the Overview page, clicking on \"Tree\" displays the hierarchy for all packages.</li>\n<li>When viewing a particular package, class or interface page, clicking \"Tree\" displays the hierarchy for only that package.</li>\n</ul>\n</li>\n<li class=\"blockList\">\n<h2>Deprecated API</h2>\n<p>The <a href=\"deprecated-list.html\">Deprecated API</a> page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.</p>\n</li>\n<li class=\"blockList\">\n<h2>Index</h2>\n<p>The <a href=\"index-all.html\">Index</a> contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.</p>\n</li>\n<li class=\"blockList\">\n<h2>Prev/Next</h2>\n<p>These links take you to the next or previous class, interface, package, or related page.</p>\n</li>\n<li class=\"blockList\">\n<h2>Frames/No Frames</h2>\n<p>These links show and hide the HTML frames.  All pages are available with or without frames.</p>\n</li>\n<li class=\"blockList\">\n<h2>All Classes</h2>\n<p>The <a href=\"allclasses-noframe.html\">All Classes</a> link shows all classes and interfaces except non-static nested types.</p>\n</li>\n<li class=\"blockList\">\n<h2>Serialized Form</h2>\n<p>Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking \"Serialized Form\" in the \"See also\" section of the class description.</p>\n</li>\n<li class=\"blockList\">\n<h2>Constant Field Values</h2>\n<p>The <a href=\"constant-values.html\">Constant Field Values</a> page lists the static final fields and their values.</p>\n</li>\n</ul>\n<span class=\"emphasizedPhrase\">This help file applies to API documentation generated using the standard doclet.</span></div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"overview-summary.html\">Overview</a></li>\n<li>Package</li>\n<li>Class</li>\n<li><a href=\"overview-tree.html\">Tree</a></li>\n<li><a href=\"deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"index-all.html\">Index</a></li>\n<li class=\"navBarCell1Rev\">Help</li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev</li>\n<li>Next</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"index.html?help-doc.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"help-doc.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/index-all.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>Index</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"Index\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"overview-summary.html\">Overview</a></li>\n<li>Package</li>\n<li>Class</li>\n<li><a href=\"overview-tree.html\">Tree</a></li>\n<li><a href=\"deprecated-list.html\">Deprecated</a></li>\n<li class=\"navBarCell1Rev\">Index</li>\n<li><a href=\"help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev</li>\n<li>Next</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"index.html?index-all.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"index-all.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"contentContainer\"><a href=\"#I:A\">A</a>&nbsp;<a href=\"#I:B\">B</a>&nbsp;<a href=\"#I:C\">C</a>&nbsp;<a href=\"#I:D\">D</a>&nbsp;<a href=\"#I:E\">E</a>&nbsp;<a href=\"#I:F\">F</a>&nbsp;<a href=\"#I:G\">G</a>&nbsp;<a href=\"#I:H\">H</a>&nbsp;<a href=\"#I:I\">I</a>&nbsp;<a href=\"#I:J\">J</a>&nbsp;<a href=\"#I:K\">K</a>&nbsp;<a href=\"#I:L\">L</a>&nbsp;<a href=\"#I:M\">M</a>&nbsp;<a href=\"#I:N\">N</a>&nbsp;<a href=\"#I:O\">O</a>&nbsp;<a href=\"#I:P\">P</a>&nbsp;<a href=\"#I:R\">R</a>&nbsp;<a href=\"#I:S\">S</a>&nbsp;<a href=\"#I:T\">T</a>&nbsp;<a href=\"#I:U\">U</a>&nbsp;<a href=\"#I:V\">V</a>&nbsp;<a href=\"#I:W\">W</a>&nbsp;<a href=\"#I:X\">X</a>&nbsp;<a href=\"#I:Y\">Y</a>&nbsp;<a name=\"I:A\">\n<!--   -->\n</a>\n<h2 class=\"title\">A</h2>\n<dl>\n<dt><a href=\"acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">AbstractConsoleProgram</span></a> - Class in <a href=\"acm/program/package-summary.html\">acm.program</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AbstractConsoleProgram.html#AbstractConsoleProgram--\">AbstractConsoleProgram()</a></span> - Constructor for class acm.program.<a href=\"acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/collections/AbstractMultimap.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">AbstractMultimap</span></a>&lt;<a href=\"stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">K</a>,<a href=\"stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">V</a>&gt; - Class in <a href=\"stanford/cs106/collections/package-summary.html\">stanford.cs106.collections</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/AbstractMultimap.html#AbstractMultimap--\">AbstractMultimap()</a></span> - Constructor for class stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractMultimap.html\" title=\"class in stanford.cs106.collections\">AbstractMultimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/AbstractMultimap.html#AbstractMultimap-boolean-\">AbstractMultimap(boolean)</a></span> - Constructor for class stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractMultimap.html\" title=\"class in stanford.cs106.collections\">AbstractMultimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">AbstractTable</span></a>&lt;<a href=\"stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">R</a>,<a href=\"stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">C</a>,<a href=\"stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">V</a>&gt; - Class in <a href=\"stanford/cs106/collections/package-summary.html\">stanford.cs106.collections</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/AbstractTable.html#AbstractTable--\">AbstractTable()</a></span> - Constructor for class stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\">AbstractTable</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/FileChooserFilter.html#accept-java.io.File-\">accept(File)</a></span> - Method in class acm.util.<a href=\"acm/util/FileChooserFilter.html\" title=\"class in acm.util\">FileChooserFilter</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/ExtensionFileFilter.html#accept-java.io.File-\">accept(File)</a></span> - Method in class stanford.cs106.io.<a href=\"stanford/cs106/io/ExtensionFileFilter.html\" title=\"class in stanford.cs106.io\">ExtensionFileFilter</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.ExtensionFilter.html#accept-java.io.File-\">accept(File)</a></span> - Method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.ExtensionFilter.html\" title=\"class in stanford.cs106.reflect\">ClassUtils.ExtensionFilter</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/audio/Accidental.html\" title=\"enum in stanford.cs106.audio\"><span class=\"typeNameLink\">Accidental</span></a> - Enum in <a href=\"stanford/cs106/audio/package-summary.html\">stanford.cs106.audio</a></dt>\n<dd>\n<div class=\"block\">An Accidental represents a musical accidental: sharp, flat, or natural.</div>\n</dd>\n<dt><a href=\"acm/graphics/package-summary.html\">acm.graphics</a> - package acm.graphics</dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"acm/gui/package-summary.html\">acm.gui</a> - package acm.gui</dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"acm/io/package-summary.html\">acm.io</a> - package acm.io</dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"acm/program/package-summary.html\">acm.program</a> - package acm.program</dt>\n<dd>\n<div class=\"block\">This package provides a set of classes that simplify the creation of programs.</div>\n</dd>\n<dt><a href=\"acm/util/package-summary.html\">acm.util</a> - package acm.util</dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.DialogCancelAction.html#ACTION_NAME\">ACTION_NAME</a></span> - Static variable in class acm.gui.<a href=\"acm/gui/JFontChooser.DialogCancelAction.html\" title=\"class in acm.gui\">JFontChooser.DialogCancelAction</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.DialogOKAction.html#ACTION_NAME\">ACTION_NAME</a></span> - Static variable in class acm.gui.<a href=\"acm/gui/JFontChooser.DialogOKAction.html\" title=\"class in acm.gui\">JFontChooser.DialogOKAction</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.DialogCancelAction.html#actionPerformed-java.awt.event.ActionEvent-\">actionPerformed(ActionEvent)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JFontChooser.DialogCancelAction.html\" title=\"class in acm.gui\">JFontChooser.DialogCancelAction</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.DialogOKAction.html#actionPerformed-java.awt.event.ActionEvent-\">actionPerformed(ActionEvent)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JFontChooser.DialogOKAction.html\" title=\"class in acm.gui\">JFontChooser.DialogOKAction</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JListOptionPane.html#actionPerformed-java.awt.event.ActionEvent-\">actionPerformed(ActionEvent)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JListOptionPane.html\" title=\"class in acm.gui\">JListOptionPane</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#actionPerformed-java.awt.event.ActionEvent-\">actionPerformed(ActionEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Called when a component (typically a button) is activated.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#actionPerformed-java.awt.event.ActionEvent-\">actionPerformed(ActionEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Called when a component (typically a button) is activated.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelControlPanel.html#actionPerformed-java.awt.event.ActionEvent-\">actionPerformed(ActionEvent)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelControlPanel.html\" title=\"class in stanford.karel\">KarelControlPanel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#add-java.awt.Component-\">add(Component)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Adds the component to this canvas without changing its location.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#add-java.awt.Component-double-double-\">add(Component, double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Adds the component to this canvas and sets its location\n to the point (<code>x</code>,&nbsp;<code>y</code>).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#add-java.awt.Component-acm.graphics.GPoint-\">add(Component, GPoint)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Adds the component to this canvas and sets its location to the specified point.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#add-acm.graphics.GObject-\">add(GObject)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Adds the graphical object to this canvas.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#add-acm.graphics.GObject-double-double-\">add(GObject, double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Adds the graphical object to this canvas and sets its location\n to the point (<code>x</code>,&nbsp;<code>y</code>).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#add-acm.graphics.GObject-acm.graphics.GPoint-\">add(GObject, GPoint)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Adds the graphical object to this canvas and sets its location to the specified point.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvasInterface.html#add-acm.graphics.GObject-\">add(GObject)</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvasInterface.html#add-acm.graphics.GObject-double-double-\">add(GObject, double, double)</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvasInterface.html#add-acm.graphics.GObject-acm.graphics.GPoint-\">add(GObject, GPoint)</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvasInterface.html#add-java.awt.Component-double-double-\">add(Component, double, double)</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvasInterface.html#add-java.awt.Component-acm.graphics.GPoint-\">add(Component, GPoint)</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCompound.html#add-acm.graphics.GObject-\">add(GObject)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCompound.html\" title=\"class in acm.graphics\">GCompound</a></dt>\n<dd>\n<div class=\"block\">Adds a new graphical object to this <code>GCompound</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCompound.html#add-acm.graphics.GObject-double-double-\">add(GObject, double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCompound.html\" title=\"class in acm.graphics\">GCompound</a></dt>\n<dd>\n<div class=\"block\">Adds the graphical object to this canvas and sets its location\n to the point (<code>x</code>,&nbsp;<code>y</code>).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCompound.html#add-acm.graphics.GObject-acm.graphics.GPoint-\">add(GObject, GPoint)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCompound.html\" title=\"class in acm.graphics\">GCompound</a></dt>\n<dd>\n<div class=\"block\">Adds the graphical object to this canvas and sets its location to the specified point.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GContainer.html#add-acm.graphics.GObject-\">add(GObject)</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a></dt>\n<dd>\n<div class=\"block\">Adds a new graphical object to this container.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GContainer.html#add-acm.graphics.GObject-double-double-\">add(GObject, double, double)</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a></dt>\n<dd>\n<div class=\"block\">Adds the graphical object to this canvas and sets its location\n to the point (<code>x</code>,&nbsp;<code>y</code>).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GContainer.html#add-acm.graphics.GObject-acm.graphics.GPoint-\">add(GObject, GPoint)</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a></dt>\n<dd>\n<div class=\"block\">Adds the graphical object to this canvas and sets its location to the specified point.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLineGroup.html#add-double-double-\">add(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLineGroup.html\" title=\"class in acm.graphics\">GLineGroup</a></dt>\n<dd>\n<div class=\"block\">Adds a point with the given coordinates to this line group.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLineGroup.html#add-acm.graphics.GPoint-\">add(GPoint)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLineGroup.html\" title=\"class in acm.graphics\">GLineGroup</a></dt>\n<dd>\n<div class=\"block\">Adds the given point to this line group.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GRectangle.html#add-acm.graphics.GRectangle-\">add(GRectangle)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></dt>\n<dd>\n<div class=\"block\">Adjusts the bounds of the current <code>GRectangle</code> so that it contains\n the rectangle represented by the argument.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GRectangle.html#add-double-double-\">add(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></dt>\n<dd>\n<div class=\"block\">Adds the specified point to the rectangle.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JButtonGroup.html#add-java.awt.Component-\">add(Component)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JButtonGroup.html\" title=\"class in acm.gui\">JButtonGroup</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JButtonGroup.html#add-java.awt.Component-int-\">add(Component, int)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JButtonGroup.html\" title=\"class in acm.gui\">JButtonGroup</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JButtonGroup.html#add-java.lang.String-java.awt.Component-\">add(String, Component)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JButtonGroup.html\" title=\"class in acm.gui\">JButtonGroup</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JButtonGroup.html#add-javax.swing.JRadioButton-\">add(JRadioButton)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JButtonGroup.html\" title=\"class in acm.gui\">JButtonGroup</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JButtonGroup.html#add-java.lang.String-\">add(String)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JButtonGroup.html\" title=\"class in acm.gui\">JButtonGroup</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#add-java.awt.Component-java.lang.String-java.lang.Object-\">add(Component, String, Object)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Adds the component to the specified border region with the indicated\n constraints object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#add-acm.graphics.GObject-\">add(GObject)</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Adds a new graphical object to this container.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#add-acm.graphics.GObject-double-double-\">add(GObject, double, double)</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Adds the graphical object to the canvas and sets its location to the\n point (<code>x</code>,&nbsp;<code>y</code>).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#add-acm.graphics.GObject-acm.graphics.GPoint-\">add(GObject, GPoint)</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Adds the graphical object to the canvas and sets its location to the\n specified point.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#add-java.awt.Component-double-double-\">add(Component, double, double)</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Adds the component to the canvas and sets its location to the point (\n <code>x</code>,&nbsp;<code>y</code>).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#add-java.awt.Component-acm.graphics.GPoint-\">add(Component, GPoint)</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Adds the component to the canvas and sets its location to the specified\n point.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#add-acm.graphics.GObject-\">add(GObject)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#add-acm.graphics.GObject-double-double-\">add(GObject, double, double)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#add-acm.graphics.GObject-acm.graphics.GPoint-\">add(GObject, GPoint)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#add-java.awt.Component-double-double-\">add(Component, double, double)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#add-java.awt.Component-acm.graphics.GPoint-\">add(Component, GPoint)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#add-java.awt.Component-java.lang.String-java.lang.Object-\">add(Component, String, Object)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Adds the component to the specified border region with the indicated\n constraints object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Lexicon.html#add-java.lang.String-\">add(String)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Lexicon.html\" title=\"class in stanford.cs106.collections\">Lexicon</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/WindowCloseKeyListener.html#add-java.awt.Window-\">add(Window)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/WindowCloseKeyListener.html\" title=\"class in stanford.cs106.gui\">WindowCloseKeyListener</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Event.html#add-java.util.Observer-\">add(Observer)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Event.html\" title=\"class in stanford.karel\">Event</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.html#add-stanford.karel.Karel-\">add(Karel)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.html#add-stanford.karel.KarelInterface-int-int-int-int-\">add(KarelInterface, int, int, int, int)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#add-stanford.karel.KarelInterface-\">add(KarelInterface)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#addActionListener-java.awt.event.ActionListener-\">addActionListener(ActionListener)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Adds an action listener to this graphical object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JButtonGroup.html#addActionListener-java.awt.event.ActionListener-\">addActionListener(ActionListener)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JButtonGroup.html\" title=\"class in acm.gui\">JButtonGroup</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JStringList.html#addActionListener-java.awt.event.ActionListener-\">addActionListener(ActionListener)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JStringList.html\" title=\"class in acm.gui\">JStringList</a></dt>\n<dd>\n<div class=\"block\">Attaches the given listener to this list of strings so that it will be\n notified when the user clicks on items in the list.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#addActionListeners--\">addActionListeners()</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Adds the program as an <code>ActionListener</code> to every button in\n the structure that does not have a listener already.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#addActionListeners-java.awt.event.ActionListener-\">addActionListeners(ActionListener)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Adds the specified listener to every button in\n the structure that does not have a listener already.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#addActionListeners--\">addActionListeners()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Adds the program as an <code>ActionListener</code> to every button in\n the structure that does not have a listener already.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#addActionListeners-java.awt.event.ActionListener-\">addActionListeners(ActionListener)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Adds the specified listener to every button in\n the structure that does not have a listener already.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#addActionListenersToButtonsOnly--\">addActionListenersToButtonsOnly()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Adds the program as an <code>ActionListener</code> to every button in\n the structure that does not have a listener already.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JButtonGroup.html#addAll-java.awt.event.ActionListener-java.lang.String...-\">addAll(ActionListener, String...)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JButtonGroup.html\" title=\"class in acm.gui\">JButtonGroup</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#addAllActionListeners--\">addAllActionListeners()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Adds the program as an <code>ActionListener</code> to every button or component in\n the structure that does not have a listener already.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/StdAudio.html#addAudioEventListener-stanford.cs106.audio.StdAudio.AudioEventListener-\">addAudioEventListener(StdAudio.AudioEventListener)</a></span> - Static method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/StdAudio.html\" title=\"class in stanford.cs106.audio\">StdAudio</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#addConsoleOptionsMenu--\">addConsoleOptionsMenu()</a></span> - Method in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>\n<div class=\"block\">Installs the <code>Options</code> menu for console programs.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/JComboGroupBox.html#addDelimiter-java.lang.String-\">addDelimiter(String)</a></span> - Method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/JComboGroupBox.html\" title=\"class in stanford.cs106.gui\">JComboGroupBox</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#addEdge-java.lang.String-java.lang.String-\">addEdge(String, String)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Adds an edge between the given two vertices, if none already exists.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#addEdge-java.lang.String-java.lang.String-double-\">addEdge(String, String, double)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Adds an edge between the given two vertices, if none already exists.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#addEdge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">addEdge(Vertex&lt;V&gt;, Vertex&lt;V&gt;)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Adds an edge between the given two vertices, if none already exists.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#addEdge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-double-\">addEdge(Vertex&lt;V&gt;, Vertex&lt;V&gt;, double)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Adds an edge between the given two vertices, if none already exists.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#addEdge-java.lang.String-java.lang.String-\">addEdge(String, String)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Adds an edge between the given two vertices, if none already exists.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#addEdge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">addEdge(Vertex&lt;V&gt;, Vertex&lt;V&gt;)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Adds an edge between the given two vertices, if none already exists.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#addEdge-java.lang.String-java.lang.String-double-\">addEdge(String, String, double)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Adds an edge between the given two vertices, if none already exists.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#addEdge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-double-\">addEdge(Vertex&lt;V&gt;, Vertex&lt;V&gt;, double)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Adds an edge between the given two vertices, if none already exists.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#addEditMenu--\">addEditMenu()</a></span> - Method in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>\n<div class=\"block\">Installs the <code>Edit</code> menu.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#addEditMenuItems-javax.swing.JMenu-\">addEditMenuItems(JMenu)</a></span> - Method in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>\n<div class=\"block\">Adds the standard <code>Edit</code> items to the specified menu.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#addExitHook-java.lang.Object-\">addExitHook(Object)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Requests that the program call the <code>exit</code> method in the\n specified object before exiting.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#addExitHook-java.lang.Object-\">addExitHook(Object)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Requests that the program call the <code>exit</code> method in the\n specified object before exiting.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#addFileMenu--\">addFileMenu()</a></span> - Method in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>\n<div class=\"block\">Installs the <code>File</code> menu.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#addFileMenuItems-javax.swing.JMenu-\">addFileMenuItems(JMenu)</a></span> - Method in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>\n<div class=\"block\">Adds the standard <code>File</code> items to the specified menu.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#addGraphicsOptionsMenu--\">addGraphicsOptionsMenu()</a></span> - Method in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>\n<div class=\"block\">Installs the <code>Options</code> menu for graphics programs.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#addHelpMenu--\">addHelpMenu()</a></span> - Method in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#addImpl-java.awt.Component-java.lang.Object-int-\">addImpl(Component, Object, int)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Adds the specified component to the content pane using the specified constraints and index.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#addImpl-java.awt.Component-java.lang.Object-int-\">addImpl(Component, Object, int)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Adds the specified component to the content pane using the specified constraints and index.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JStringList.html#addItem-java.lang.String-\">addItem(String)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JStringList.html\" title=\"class in acm.gui\">JStringList</a></dt>\n<dd>\n<div class=\"block\">Appends the given string to the end of this list, using the default black color.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JStringList.html#addItem-java.lang.String-java.awt.Color-\">addItem(String, Color)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JStringList.html\" title=\"class in acm.gui\">JStringList</a></dt>\n<dd>\n<div class=\"block\">Appends the given string to the end of this list, using the given color.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/JComboGroupBox.html#addItem-java.lang.String-\">addItem(String)</a></span> - Method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/JComboGroupBox.html\" title=\"class in stanford.cs106.gui\">JComboGroupBox</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JStringList.html#addItems-java.lang.String:A-\">addItems(String[])</a></span> - Method in class acm.gui.<a href=\"acm/gui/JStringList.html\" title=\"class in acm.gui\">JStringList</a></dt>\n<dd>\n<div class=\"block\">Adds all of the items from the given array to this list, in black.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JStringList.html#addItems-java.lang.String:A-java.awt.Color:A-\">addItems(String[], Color[])</a></span> - Method in class acm.gui.<a href=\"acm/gui/JStringList.html\" title=\"class in acm.gui\">JStringList</a></dt>\n<dd>\n<div class=\"block\">Adds all of the items from the given array to this list, in the given colors.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#addKarelOptionsMenu--\">addKarelOptionsMenu()</a></span> - Method in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>\n<div class=\"block\">Installs the <code>Options</code> menu for Karel programs.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#addKeyListenerRecursive-java.awt.Component-java.awt.event.KeyListener-\">addKeyListenerRecursive(Component, KeyListener)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#addKeyListeners--\">addKeyListeners()</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Adds the program as a <code>KeyListener</code> to the canvas.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#addKeyListeners-java.awt.event.KeyListener-\">addKeyListeners(KeyListener)</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Adds the specified listener as a <code>KeyListener</code> to the canvas.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgramInterface.html#addKeyListeners--\">addKeyListeners()</a></span> - Method in interface acm.program.<a href=\"acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgramInterface.html#addKeyListeners-java.awt.event.KeyListener-\">addKeyListeners(KeyListener)</a></span> - Method in interface acm.program.<a href=\"acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#addKeyListeners--\">addKeyListeners()</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#addKeyListeners-java.awt.event.KeyListener-\">addKeyListeners(KeyListener)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#addLayoutComponent-java.lang.String-java.awt.Component-\">addLayoutComponent(String, Component)</a></span> - Method in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Adds a component to the layout.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#addLayoutComponent-java.awt.Component-java.lang.Object-\">addLayoutComponent(Component, Object)</a></span> - Method in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Adds a component to the layout.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#addMenus--\">addMenus()</a></span> - Method in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>\n<div class=\"block\">Adds menus to the menu bar.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#addMouseListener-java.awt.event.MouseListener-\">addMouseListener(MouseListener)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Adds a mouse listener to this graphical object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#addMouseListeners--\">addMouseListeners()</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Adds the program as both a <code>MouseListener</code> and\n <code>MouseMotionListener</code> to the canvas.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#addMouseListeners-java.util.EventListener-\">addMouseListeners(EventListener)</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Adds the specified listener as a <code>MouseListener</code> and/or\n <code>MouseMotionListener</code>, as appropriate, to the canvas.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgramInterface.html#addMouseListeners--\">addMouseListeners()</a></span> - Method in interface acm.program.<a href=\"acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgramInterface.html#addMouseListeners-java.util.EventListener-\">addMouseListeners(EventListener)</a></span> - Method in interface acm.program.<a href=\"acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#addMouseListeners--\">addMouseListeners()</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#addMouseListeners-java.util.EventListener-\">addMouseListeners(EventListener)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#addMouseMotionListener-java.awt.event.MouseMotionListener-\">addMouseMotionListener(MouseMotionListener)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Adds a mouse motion listener to this graphical object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/Request.html#addParam-java.lang.String-\">addParam(String)</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\">Request</a></dt>\n<dd>\n<div class=\"block\">Adds a new query parameter with the given name and an empty value.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/Request.html#addParam-java.lang.String-java.lang.String-\">addParam(String, String)</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\">Request</a></dt>\n<dd>\n<div class=\"block\">Adds a new query parameter with the given name and value.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/Request.html#addParams-java.lang.String...-\">addParams(String...)</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\">Request</a></dt>\n<dd>\n<div class=\"block\">Adds new query parameters with the given name/value pairs,\n passed as a var-args array in the order K1, V1, K2, V2, etc.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/Request.html#addRaw-java.lang.String-java.lang.String-\">addRaw(String, String)</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\">Request</a></dt>\n<dd>\n<div class=\"block\">Adds a new query parameter with the given name and value.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#addResizeListener-acm.program.Program-\">addResizeListener(Program)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>\n<div class=\"block\">Sets up the given program so that its componentResized method will be\n called whenever the window resizes.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#addSampleData-int-\">addSampleData(int)</a></span> - Method in class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Adds a single sound sample to the end of the sound.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#addSampleData-int-int-\">addSampleData(int, int)</a></span> - Method in class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Adds the specified samples to the end of the appropriate channels of\n the stereo sound.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#addSampleData-int:A-\">addSampleData(int[])</a></span> - Method in class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Adds the specified samples to the end of the sound.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#addSampleData-int:A-int:A-\">addSampleData(int[], int[])</a></span> - Method in class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Adds the specified samples to the end of the appropriate channels of\n the stereo sound.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#addVertex-java.lang.String-\">addVertex(String)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Adds the given element as a vertex in this graph.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#addVertex-java.lang.String-\">addVertex(String)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Adds the given element as a vertex in this graph.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Lexicon.html#addWordsFrom-java.io.InputStream-\">addWordsFrom(InputStream)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Lexicon.html\" title=\"class in stanford.cs106.collections\">Lexicon</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Lexicon.html#addWordsFrom-java.io.Reader-\">addWordsFrom(Reader)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Lexicon.html\" title=\"class in stanford.cs106.collections\">Lexicon</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Lexicon.html#addWordsFrom-java.util.Scanner-\">addWordsFrom(Scanner)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Lexicon.html\" title=\"class in stanford.cs106.collections\">Lexicon</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Lexicon.html#addWordsFromFile-java.io.File-\">addWordsFromFile(File)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Lexicon.html\" title=\"class in stanford.cs106.collections\">Lexicon</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Lexicon.html#addWordsFromFile-java.lang.String-\">addWordsFromFile(String)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Lexicon.html\" title=\"class in stanford.cs106.collections\">Lexicon</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#adjacentPoint-java.awt.Point-int-\">adjacentPoint(Point, int)</a></span> - Static method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#adjacentPoint-int-int-int-\">adjacentPoint(int, int, int)</a></span> - Static method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#adjustBeepers-int-int-\">adjustBeepers(int, int)</a></span> - Static method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#adjustmentValueChanged-java.awt.event.AdjustmentEvent-\">adjustmentValueChanged(AdjustmentEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Required empty method of AdjustmentListener interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelControlPanel.html#adjustmentValueChanged-java.awt.event.AdjustmentEvent-\">adjustmentValueChanged(AdjustmentEvent)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelControlPanel.html\" title=\"class in stanford.karel\">KarelControlPanel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#alert-java.lang.Object-\">alert(Object)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Pops up a dialog box displaying a string representation of the given message.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#alert-java.lang.String-\">alert(String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Pops up a dialog box displaying the given message.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#ALT_F4\">ALT_F4</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GMath.html#angle-double-double-\">angle(double, double)</a></span> - Static method in class acm.graphics.<a href=\"acm/graphics/GMath.html\" title=\"class in acm.graphics\">GMath</a></dt>\n<dd>\n<div class=\"block\">Returns the angle in degrees from the origin to the point (<code>x</code>\n ,&nbsp;<code>y</code>).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GMath.html#angle-double-double-double-double-\">angle(double, double, double, double)</a></span> - Static method in class acm.graphics.<a href=\"acm/graphics/GMath.html\" title=\"class in acm.graphics\">GMath</a></dt>\n<dd>\n<div class=\"block\">Computes the angle in degrees formed by a line segment from the point (\n <code>x0</code>,&nbsp;<code>y0</code>) and (<code>x1</code>,&nbsp;\n <code>y1</code>).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#animation--\">animation()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Override this method to indicate what to do on every frame advance\n in an animated program after setAnimated(true) is called.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#appendSpace-java.lang.String-\">appendSpace(String)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCompound.html#areMouseListenersEnabled--\">areMouseListenersEnabled()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCompound.html\" title=\"class in acm.graphics\">GCompound</a></dt>\n<dd>\n<div class=\"block\">Returns <code>true</code> if mouse listeners have ever been assigned to\n this object or to any of the contained objects.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#areMouseListenersEnabled--\">areMouseListenersEnabled()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Returns <code>true</code> if mouse listeners have ever been assigned to\n this object.</div>\n</dd>\n<dt><a href=\"acm/program/AsciiArtProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">AsciiArtProgram</span></a> - Class in <a href=\"acm/program/package-summary.html\">acm.program</a></dt>\n<dd>\n<div class=\"block\">...</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AsciiArtProgram.html#AsciiArtProgram--\">AsciiArtProgram()</a></span> - Constructor for class acm.program.<a href=\"acm/program/AsciiArtProgram.html\" title=\"class in acm.program\">AsciiArtProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/CollectionUtils.html#asList-T...-\">asList(T...)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/CollectionUtils.html\" title=\"class in stanford.cs106.util\">CollectionUtils</a></dt>\n<dd>\n<div class=\"block\">Converts the elements passed into a list.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/CollectionUtils.html#asList-java.util.Enumeration-\">asList(Enumeration&lt;T&gt;)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/CollectionUtils.html\" title=\"class in stanford.cs106.util\">CollectionUtils</a></dt>\n<dd>\n<div class=\"block\">Converts the elements found in the given Enumeration into a list.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/CollectionUtils.html#asList-java.util.Iterator-\">asList(Iterator&lt;T&gt;)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/CollectionUtils.html\" title=\"class in stanford.cs106.util\">CollectionUtils</a></dt>\n<dd>\n<div class=\"block\">Converts the elements found in the given Iterator into a list.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/CollectionUtils.html#asMap-K:A-V:A-\">asMap(K[], V[])</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/CollectionUtils.html\" title=\"class in stanford.cs106.util\">CollectionUtils</a></dt>\n<dd>\n<div class=\"block\">Converts the given pair of arrays into a map that maps each keys[i] to\n the corresponding values[i].</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/CollectionUtils.html#asMap-java.util.List-java.util.List-\">asMap(List&lt;K&gt;, List&lt;V&gt;)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/CollectionUtils.html\" title=\"class in stanford.cs106.util\">CollectionUtils</a></dt>\n<dd>\n<div class=\"block\">Converts the given pair of lists into a map that maps each keys[i] to\n the corresponding values[i].</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/CollectionUtils.html#asMapSorted-K:A-V:A-\">asMapSorted(K[], V[])</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/CollectionUtils.html\" title=\"class in stanford.cs106.util\">CollectionUtils</a></dt>\n<dd>\n<div class=\"block\">Converts the given pair of arrays into a sorted map that maps each\n keys[i] to the corresponding values[i].</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/CollectionUtils.html#asMapSorted-java.util.List-java.util.List-\">asMapSorted(List&lt;K&gt;, List&lt;V&gt;)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/CollectionUtils.html\" title=\"class in stanford.cs106.util\">CollectionUtils</a></dt>\n<dd>\n<div class=\"block\">Converts the given pair of arrays into a map that maps each keys[i] to\n the corresponding values[i].</div>\n</dd>\n<dt><a href=\"stanford/cs106/junit/Assert.html\" title=\"class in stanford.cs106.junit\"><span class=\"typeNameLink\">Assert</span></a> - Class in <a href=\"stanford/cs106/junit/package-summary.html\">stanford.cs106.junit</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/Assert.html#assertDiff-java.lang.String-java.lang.String-java.lang.String-\">assertDiff(String, String, String)</a></span> - Static method in class stanford.cs106.junit.<a href=\"stanford/cs106/junit/Assert.html\" title=\"class in stanford.cs106.junit\">Assert</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/Assert.html#assertDiff-java.lang.String-java.lang.String-java.lang.String-int-\">assertDiff(String, String, String, int)</a></span> - Static method in class stanford.cs106.junit.<a href=\"stanford/cs106/junit/Assert.html\" title=\"class in stanford.cs106.junit\">Assert</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/Assert.html#assertEquals-java.lang.String-java.lang.String-java.lang.String-\">assertEquals(String, String, String)</a></span> - Static method in class stanford.cs106.junit.<a href=\"stanford/cs106/junit/Assert.html\" title=\"class in stanford.cs106.junit\">Assert</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/Assert.html#assertEquals-java.lang.String-java.lang.Object-java.lang.Object-\">assertEquals(String, Object, Object)</a></span> - Static method in class stanford.cs106.junit.<a href=\"stanford/cs106/junit/Assert.html\" title=\"class in stanford.cs106.junit\">Assert</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/Assert.html#assertEquals-java.lang.String-int-int-\">assertEquals(String, int, int)</a></span> - Static method in class stanford.cs106.junit.<a href=\"stanford/cs106/junit/Assert.html\" title=\"class in stanford.cs106.junit\">Assert</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/Assert.html#assertEquals-java.lang.String-boolean-boolean-\">assertEquals(String, boolean, boolean)</a></span> - Static method in class stanford.cs106.junit.<a href=\"stanford/cs106/junit/Assert.html\" title=\"class in stanford.cs106.junit\">Assert</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/Assert.html#assertEquals-java.lang.String-char-char-\">assertEquals(String, char, char)</a></span> - Static method in class stanford.cs106.junit.<a href=\"stanford/cs106/junit/Assert.html\" title=\"class in stanford.cs106.junit\">Assert</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/Assert.html#assertEquals-java.lang.String-double-double-double-\">assertEquals(String, double, double, double)</a></span> - Static method in class stanford.cs106.junit.<a href=\"stanford/cs106/junit/Assert.html\" title=\"class in stanford.cs106.junit\">Assert</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/Assert.html#assertFalse-java.lang.String-boolean-\">assertFalse(String, boolean)</a></span> - Static method in class stanford.cs106.junit.<a href=\"stanford/cs106/junit/Assert.html\" title=\"class in stanford.cs106.junit\">Assert</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/Assert.html#assertNotNull-java.lang.String-java.lang.Object-\">assertNotNull(String, Object)</a></span> - Static method in class stanford.cs106.junit.<a href=\"stanford/cs106/junit/Assert.html\" title=\"class in stanford.cs106.junit\">Assert</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/Assert.html#assertNotSame-java.lang.String-int-int-\">assertNotSame(String, int, int)</a></span> - Static method in class stanford.cs106.junit.<a href=\"stanford/cs106/junit/Assert.html\" title=\"class in stanford.cs106.junit\">Assert</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/Assert.html#assertNotSame-java.lang.String-double-double-\">assertNotSame(String, double, double)</a></span> - Static method in class stanford.cs106.junit.<a href=\"stanford/cs106/junit/Assert.html\" title=\"class in stanford.cs106.junit\">Assert</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/Assert.html#assertNotSame-java.lang.String-double-double-double-\">assertNotSame(String, double, double, double)</a></span> - Static method in class stanford.cs106.junit.<a href=\"stanford/cs106/junit/Assert.html\" title=\"class in stanford.cs106.junit\">Assert</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/Assert.html#assertNotSame-java.lang.String-boolean-boolean-\">assertNotSame(String, boolean, boolean)</a></span> - Static method in class stanford.cs106.junit.<a href=\"stanford/cs106/junit/Assert.html\" title=\"class in stanford.cs106.junit\">Assert</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/Assert.html#assertNotSame-java.lang.String-char-char-\">assertNotSame(String, char, char)</a></span> - Static method in class stanford.cs106.junit.<a href=\"stanford/cs106/junit/Assert.html\" title=\"class in stanford.cs106.junit\">Assert</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/Assert.html#assertNull-java.lang.String-java.lang.Object-\">assertNull(String, Object)</a></span> - Static method in class stanford.cs106.junit.<a href=\"stanford/cs106/junit/Assert.html\" title=\"class in stanford.cs106.junit\">Assert</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/Assert.html#assertSame-java.lang.String-java.lang.Object-java.lang.Object-\">assertSame(String, Object, Object)</a></span> - Static method in class stanford.cs106.junit.<a href=\"stanford/cs106/junit/Assert.html\" title=\"class in stanford.cs106.junit\">Assert</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/Assert.html#assertSame-java.lang.String-java.lang.String-java.lang.String-\">assertSame(String, String, String)</a></span> - Static method in class stanford.cs106.junit.<a href=\"stanford/cs106/junit/Assert.html\" title=\"class in stanford.cs106.junit\">Assert</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/Assert.html#assertTrue-java.lang.String-boolean-\">assertTrue(String, boolean)</a></span> - Static method in class stanford.cs106.junit.<a href=\"stanford/cs106/junit/Assert.html\" title=\"class in stanford.cs106.junit\">Assert</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/CollectionUtils.html#asSet-K-\">asSet(K)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/CollectionUtils.html\" title=\"class in stanford.cs106.util\">CollectionUtils</a></dt>\n<dd>\n<div class=\"block\">Converts the given values into a set.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/CollectionUtils.html#asSet-K...-\">asSet(K...)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/CollectionUtils.html\" title=\"class in stanford.cs106.util\">CollectionUtils</a></dt>\n<dd>\n<div class=\"block\">Converts the given values into a set.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/CollectionUtils.html#asSetSorted-K...-\">asSetSorted(K...)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/CollectionUtils.html\" title=\"class in stanford.cs106.util\">CollectionUtils</a></dt>\n<dd>\n<div class=\"block\">Converts the given values into a sorted set.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/XmlUtils.html#attributeIsFalsey-org.w3c.dom.Node-java.lang.String-\">attributeIsFalsey(Node, String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\">XmlUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/XmlUtils.html#attributeIsTruthy-org.w3c.dom.Node-java.lang.String-\">attributeIsTruthy(Node, String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\">XmlUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/StdAudio.AudioEvent.html#AudioEvent-stanford.cs106.audio.StdAudio.AudioEvent.Type-\">AudioEvent(StdAudio.AudioEvent.Type)</a></span> - Constructor for class stanford.cs106.audio.<a href=\"stanford/cs106/audio/StdAudio.AudioEvent.html\" title=\"class in stanford.cs106.audio\">StdAudio.AudioEvent</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/StdAudio.AudioEvent.html#AudioEvent-stanford.cs106.audio.StdAudio.AudioEvent.Type-double-\">AudioEvent(StdAudio.AudioEvent.Type, double)</a></span> - Constructor for class stanford.cs106.audio.<a href=\"stanford/cs106/audio/StdAudio.AudioEvent.html\" title=\"class in stanford.cs106.audio\">StdAudio.AudioEvent</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/StdAudio.AudioEvent.html#AudioEvent-stanford.cs106.audio.StdAudio.AudioEvent.Type-stanford.cs106.audio.Note-double-\">AudioEvent(StdAudio.AudioEvent.Type, Note, double)</a></span> - Constructor for class stanford.cs106.audio.<a href=\"stanford/cs106/audio/StdAudio.AudioEvent.html\" title=\"class in stanford.cs106.audio\">StdAudio.AudioEvent</a></dt>\n<dd>&nbsp;</dd>\n</dl>\n<a name=\"I:B\">\n<!--   -->\n</a>\n<h2 class=\"title\">B</h2>\n<dl>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GContainer.html#BACK_TO_FRONT\">BACK_TO_FRONT</a></span> - Static variable in interface acm.graphics.<a href=\"acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a></dt>\n<dd>\n<div class=\"block\">Specifies that iterators should run from back to front</div>\n</dd>\n<dt><a href=\"stanford/cs106/net/BackEndServer.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">BackEndServer</span></a> - Class in <a href=\"stanford/cs106/net/package-summary.html\">stanford.cs106.net</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/BackEndServer.html#BackEndServer--\">BackEndServer()</a></span> - Constructor for class stanford.cs106.net.<a href=\"stanford/cs106/net/BackEndServer.html\" title=\"class in stanford.cs106.net\">BackEndServer</a></dt>\n<dd>\n<div class=\"block\">Method: Constructor\n -------------------\n All this method does is create an object that could be used to handle\n HTTP requests (but at the time of construction does nothing).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/BackEndServer.html#BackEndServer-int-\">BackEndServer(int)</a></span> - Constructor for class stanford.cs106.net.<a href=\"stanford/cs106/net/BackEndServer.html\" title=\"class in stanford.cs106.net\">BackEndServer</a></dt>\n<dd>\n<div class=\"block\">Method: Constructor\n -------------------\n All this method does is create an object that could be used to handle\n HTTP requests (but at the time of construction does nothing).</div>\n</dd>\n<dt><a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">BasicGraph</span></a>&lt;<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt; - Class in <a href=\"stanford/cs106/collections/package-summary.html\">stanford.cs106.collections</a></dt>\n<dd>\n<div class=\"block\">BasicGraph represents a mostly-complete implementation of the Graph interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#BasicGraph--\">BasicGraph()</a></span> - Constructor for class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Constructs a new empty undirected, unweighted graph.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#BasicGraph-boolean-boolean-\">BasicGraph(boolean, boolean)</a></span> - Constructor for class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Constructs a new empty graph that can be directed or undirected,\n weighted or unweighted.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/MediaTools.html#beep--\">beep()</a></span> - Static method in class acm.util.<a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></dt>\n<dd>\n<div class=\"block\">This method sounds the audible alert on the console, which is typically a\n beep sound.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#BEEPER_BORDER\">BEEPER_BORDER</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#BEEPER_COLOR\">BEEPER_COLOR</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#BEEPER_FONT_FAMILY\">BEEPER_FONT_FAMILY</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#BEEPER_FRACTION\">BEEPER_FRACTION</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#BEEPER_NUMBER_FONT\">BEEPER_NUMBER_FONT</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#beeperBagCommand--\">beeperBagCommand()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#beeperCommand--\">beeperCommand()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#beeperLabel-int-\">beeperLabel(int)</a></span> - Static method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Karel.html#beepersInBag--\">beepersInBag()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelInterface.html#beepersInBag--\">beepersInBag()</a></span> - Method in interface stanford.karel.<a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Karel.html#beepersPresent--\">beepersPresent()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelInterface.html#beepersPresent--\">beepersPresent()</a></span> - Method in interface stanford.karel.<a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessSuperKarel.html#BLACK\">BLACK</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\">HeadlessSuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.html#BLACK\">BLACK</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/SuperKarel.html#BLACK\">BLACK</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\">SuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#BLANKB\">BLANKB</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessSuperKarel.html#BLUE\">BLUE</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\">HeadlessSuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.html#BLUE\">BLUE</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/SuperKarel.html#BLUE\">BLUE</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\">SuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#BOTH\">BOTH</a></span> - Static variable in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Resize component in both directions</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#BOTTOM\">BOTTOM</a></span> - Static variable in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Align table vertically at the bottom of its container</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#BOTTOM_NUMBER_MARGIN\">BOTTOM_NUMBER_MARGIN</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n</dl>\n<a name=\"I:C\">\n<!--   -->\n</a>\n<h2 class=\"title\">C</h2>\n<dl>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.html#CANCEL_OPTION\">CANCEL_OPTION</a></span> - Static variable in class acm.gui.<a href=\"acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></dt>\n<dd>\n<div class=\"block\">Return value from <code>showDialog()</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ConsoleProgram.html#captureOutput--\">captureOutput()</a></span> - Method in class acm.program.<a href=\"acm/program/ConsoleProgram.html\" title=\"class in acm.program\">ConsoleProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ConsoleProgram.html#captureOutput-boolean-\">captureOutput(boolean)</a></span> - Method in class acm.program.<a href=\"acm/program/ConsoleProgram.html\" title=\"class in acm.program\">ConsoleProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#CENTER\">CENTER</a></span> - Static variable in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Center table in the container</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#center--\">center()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Moves this program's window to the center of the screen.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramInterface.html#CENTER\">CENTER</a></span> - Static variable in interface acm.program.<a href=\"acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></dt>\n<dd>\n<div class=\"block\">Constant specifying the center of the container</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#CENTER\">CENTER</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#centerWindow-java.awt.Window-\">centerWindow(Window)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#centerWindowWithin-java.awt.Window-java.awt.Component-\">centerWindowWithin(Window, Component)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.html#changedUpdate-javax.swing.event.DocumentEvent-\">changedUpdate(DocumentEvent)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.html\" title=\"class in acm.gui\">JFontChooser.ListSearchTextFieldDocumentHandler</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#changedUpdate-javax.swing.event.DocumentEvent-\">changedUpdate(DocumentEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Required method of DocumentListener interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AbstractConsoleProgram.html#checkCompilerFlags--\">checkCompilerFlags()</a></span> - Method in class acm.program.<a href=\"acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#checkCompilerFlags--\">checkCompilerFlags()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#checkForNegative-double-\">checkForNegative(double)</a></span> - Static method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Tests the given integer to see whether it is negative.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#checkForNegative-int-\">checkForNegative(int)</a></span> - Static method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Tests the given integer to see whether it is negative.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#checkForNull-java.lang.Object...-\">checkForNull(Object...)</a></span> - Static method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Tests the given arguments for null.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#checkIfHeadless-java.lang.String-\">checkIfHeadless(String)</a></span> - Static method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Checks to see if the program is running in a headless environment and, if so,\n runs it in that form.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#checkKill--\">checkKill()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Checks whether the program has been stopped via the killMe method.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#checkStartupSettings--\">checkStartupSettings()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#checkVertex-java.lang.String-\">checkVertex(String)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Tests the given vertex for null and for membership in the graph.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#checkVertex-stanford.cs106.collections.Vertex-\">checkVertex(Vertex&lt;V&gt;)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#checkVertexes-java.lang.String-java.lang.String-\">checkVertexes(String, String)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Tests the given vertices for null and for membership in the graph.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#checkVertexes-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">checkVertexes(Vertex&lt;V&gt;, Vertex&lt;V&gt;)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Tests the given vertices for null and for membership in the graph.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#checkWall-java.awt.Point-int-\">checkWall(Point, int)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#checkWall-int-int-int-\">checkWall(int, int, int)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Karel.html#checkWorld-java.lang.String-\">checkWorld(String)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.html#CLASS_EXTENSION\">CLASS_EXTENSION</a></span> - Static variable in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.ClassComparator.html#ClassComparator--\">ClassComparator()</a></span> - Constructor for class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.ClassComparator.html\" title=\"class in stanford.cs106.reflect\">ClassUtils.ClassComparator</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#classForName-java.lang.String-\">classForName(String)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.html#classImplements-java.lang.Class-java.lang.Class-\">classImplements(Class&lt;?&gt;, Class&lt;?&gt;)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">ClassUtils</span></a> - Class in <a href=\"stanford/cs106/reflect/package-summary.html\">stanford.cs106.reflect</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.html#ClassUtils--\">ClassUtils()</a></span> - Constructor for class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/reflect/ClassUtils.BetterClassLoader.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">ClassUtils.BetterClassLoader</span></a> - Class in <a href=\"stanford/cs106/reflect/package-summary.html\">stanford.cs106.reflect</a></dt>\n<dd>\n<div class=\"block\">Loads classes from files on the server's hard disk.</div>\n</dd>\n<dt><a href=\"stanford/cs106/reflect/ClassUtils.ClassComparator.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">ClassUtils.ClassComparator</span></a> - Class in <a href=\"stanford/cs106/reflect/package-summary.html\">stanford.cs106.reflect</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/reflect/ClassUtils.ExtensionFilter.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">ClassUtils.ExtensionFilter</span></a> - Class in <a href=\"stanford/cs106/reflect/package-summary.html\">stanford.cs106.reflect</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#clear--\">clear()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Removes all graphical objects from this canvas.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvasInterface.html#clear--\">clear()</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLineGroup.html#clear--\">clear()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLineGroup.html\" title=\"class in acm.graphics\">GLineGroup</a></dt>\n<dd>\n<div class=\"block\">Removes all points from this line group.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JButtonGroup.html#clear--\">clear()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JButtonGroup.html\" title=\"class in acm.gui\">JButtonGroup</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JStringList.html#clear--\">clear()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JStringList.html\" title=\"class in acm.gui\">JStringList</a></dt>\n<dd>\n<div class=\"block\">Removes all strings from this list.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/ConsoleModel.html#clear--\">clear()</a></span> - Method in interface acm.io.<a href=\"acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#clear--\">clear()</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/StandardConsoleModel.html#clear--\">clear()</a></span> - Method in class acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SystemConsoleModel.html#clear--\">clear()</a></span> - Method in class acm.io.<a href=\"acm/io/SystemConsoleModel.html\" title=\"class in acm.io\">SystemConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AsciiArtProgram.html#clear--\">clear()</a></span> - Method in class acm.program.<a href=\"acm/program/AsciiArtProgram.html\" title=\"class in acm.program\">AsciiArtProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#clear--\">clear()</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Removes all graphical objects from this container.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#clear--\">clear()</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/AbstractMultimap.html#clear--\">clear()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractMultimap.html\" title=\"class in stanford.cs106.collections\">AbstractMultimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/AbstractTable.html#clear--\">clear()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\">AbstractTable</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#clear--\">clear()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Removes all vertices and edges from this graph.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#clear--\">clear()</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Removes all vertices and edges from this graph.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Multimap.html#clear--\">clear()</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\">Multimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Table.html#clear--\">clear()</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\">Table</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Vertex.html#clear--\">clear()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a></dt>\n<dd>\n<div class=\"block\">Resets the previous, visited, cost, and number data fields to their original values.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Vertex.html#clear-boolean-\">clear(boolean)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a></dt>\n<dd>\n<div class=\"block\">Resets the previous, visited, cost, and number data fields to their original values.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/StdAudio.html#clearAudioEventListeners--\">clearAudioEventListeners()</a></span> - Static method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/StdAudio.html\" title=\"class in stanford.cs106.audio\">StdAudio</a></dt>\n<dd>\n<div class=\"block\">Removes all audio event listeners from being notified of future\n audio events, if any were present.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#clearCache--\">clearCache()</a></span> - Static method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#clearCanvas--\">clearCanvas()</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Removes all graphical objects from this container.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgramInterface.html#clearCanvas--\">clearCanvas()</a></span> - Method in interface acm.program.<a href=\"acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#clearCanvas--\">clearCanvas()</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AbstractConsoleProgram.html#clearConsole--\">clearConsole()</a></span> - Method in class acm.program.<a href=\"acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></dt>\n<dd>\n<div class=\"block\">Erases any text from the main console.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#clearEdges--\">clearEdges()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Removes all edges from this graph.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#clearEdges-java.lang.String-\">clearEdges(String)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#clearEdges-stanford.cs106.collections.Vertex-\">clearEdges(Vertex&lt;V&gt;)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#clearEdges--\">clearEdges()</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Removes all edges from this graph.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/RandomGenerator.html#clearFixedIntegers--\">clearFixedIntegers()</a></span> - Static method in class acm.util.<a href=\"acm/util/RandomGenerator.html\" title=\"class in acm.util\">RandomGenerator</a></dt>\n<dd>\n<div class=\"block\">Removes any previously added fixed numbers that were passed to\n feedFixedIntegers.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#clearVertexInfo--\">clearVertexInfo()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Resets all distance / previous / visited markings from vertex info\n objects in this graph.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#clearWall-java.awt.Point-int-\">clearWall(Point, int)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#clearWall-int-int-int-\">clearWall(int, int, int)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/gui/ClipboardUtils.html\" title=\"class in stanford.cs106.gui\"><span class=\"typeNameLink\">ClipboardUtils</span></a> - Class in <a href=\"stanford/cs106/gui/package-summary.html\">stanford.cs106.gui</a></dt>\n<dd>\n<div class=\"block\">Utility methods to set and get the state of the current OS clipboard.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#clone--\">clone()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Returns a deep copy of this object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Edge.html#clone--\">clone()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\">Edge</a></dt>\n<dd>\n<div class=\"block\">Returns a copy of this Edge as per the contract of the Object.clone method.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Vertex.html#clone--\">clone()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a></dt>\n<dd>\n<div class=\"block\">Returns a copy of this Vertex as per the contract of the Object.clone method.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#close--\">close()</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Closes this scanner.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/StdAudio.html#close--\">close()</a></span> - Static method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/StdAudio.html\" title=\"class in stanford.cs106.audio\">StdAudio</a></dt>\n<dd>\n<div class=\"block\">Close standard audio.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/LimitedPrintStream.html#close--\">close()</a></span> - Method in class stanford.cs106.io.<a href=\"stanford/cs106/io/LimitedPrintStream.html\" title=\"class in stanford.cs106.io\">LimitedPrintStream</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/ReaderInputStream.html#close--\">close()</a></span> - Method in class stanford.cs106.io.<a href=\"stanford/cs106/io/ReaderInputStream.html\" title=\"class in stanford.cs106.io\">ReaderInputStream</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/util/CollectionUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">CollectionUtils</span></a> - Class in <a href=\"stanford/cs106/util/package-summary.html\">stanford.cs106.util</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Vertex.html#color--\">color()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a></dt>\n<dd>\n<div class=\"block\">Returns color of vertex</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#colorName-java.awt.Color-\">colorName(Color)</a></span> - Static method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Translates a color to a string representation.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#colorName-int-\">colorName(int)</a></span> - Static method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Translates a color RGB int to a string representation such as \"0xFF00FF\" or \"YELLOW\".</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#colorNameFriendly-int-\">colorNameFriendly(int)</a></span> - Static method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Translates a color RGB int to a string representation such as \"#ff00ff\" or \"dark gray\".</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/AbstractTable.html#column-C-\">column(C)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\">AbstractTable</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Table.html#column-C-\">column(C)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\">Table</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#COMMAND_A\">COMMAND_A</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#COMMAND_B\">COMMAND_B</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#COMMAND_C\">COMMAND_C</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#COMMAND_END\">COMMAND_END</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#COMMAND_EQUALS\">COMMAND_EQUALS</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#COMMAND_HOME\">COMMAND_HOME</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#COMMAND_I\">COMMAND_I</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#COMMAND_L\">COMMAND_L</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#COMMAND_MINUS\">COMMAND_MINUS</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#COMMAND_P\">COMMAND_P</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#COMMAND_PLUS\">COMMAND_PLUS</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#COMMAND_Q\">COMMAND_Q</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#COMMAND_S\">COMMAND_S</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#COMMAND_SHIFT_MINUS\">COMMAND_SHIFT_MINUS</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#COMMAND_SHIFT_PLUS\">COMMAND_SHIFT_PLUS</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#COMMAND_V\">COMMAND_V</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#COMMAND_W\">COMMAND_W</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#COMMAND_X\">COMMAND_X</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">CommandLineProgram</span></a> - Class in <a href=\"acm/program/package-summary.html\">acm.program</a></dt>\n<dd>\n<div class=\"block\">This class simulates the functionality of a <code>ConsoleProgram</code>\n in an environment that lacks a graphics context.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#CommandLineProgram--\">CommandLineProgram()</a></span> - Constructor for class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">This code initializes the program data structures.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.ClassComparator.html#compare-java.lang.Class-java.lang.Class-\">compare(Class&lt;?&gt;, Class&lt;?&gt;)</a></span> - Method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.ClassComparator.html\" title=\"class in stanford.cs106.reflect\">ClassUtils.ClassComparator</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.FieldNameComparator.html#compare-java.lang.reflect.Field-java.lang.reflect.Field-\">compare(Field, Field)</a></span> - Method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.FieldNameComparator.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils.FieldNameComparator</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.MethodNameComparator.html#compare-java.lang.reflect.Method-java.lang.reflect.Method-\">compare(Method, Method)</a></span> - Method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.MethodNameComparator.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils.MethodNameComparator</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AbstractConsoleProgram.html#compareOutput--\">compareOutput()</a></span> - Method in class acm.program.<a href=\"acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></dt>\n<dd>\n<div class=\"block\">Pops up a file chooser to compare output to some expected output.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Vertex.html#compareTo-stanford.cs106.collections.Vertex-\">compareTo(Vertex&lt;V&gt;)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/junit/ComparisonFailureEnhanced.html\" title=\"class in stanford.cs106.junit\"><span class=\"typeNameLink\">ComparisonFailureEnhanced</span></a> - Error in <a href=\"stanford/cs106/junit/package-summary.html\">stanford.cs106.junit</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/ComparisonFailureEnhanced.html#ComparisonFailureEnhanced-stanford.cs106.junit.UnitTestType-java.lang.String-java.lang.String-java.lang.String-\">ComparisonFailureEnhanced(UnitTestType, String, String, String)</a></span> - Constructor for error stanford.cs106.junit.<a href=\"stanford/cs106/junit/ComparisonFailureEnhanced.html\" title=\"class in stanford.cs106.junit\">ComparisonFailureEnhanced</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/ComparisonFailureEnhanced.html#ComparisonFailureEnhanced-stanford.cs106.junit.UnitTestType-java.lang.String-java.lang.String-java.lang.String-java.lang.String-\">ComparisonFailureEnhanced(UnitTestType, String, String, String, String)</a></span> - Constructor for error stanford.cs106.junit.<a href=\"stanford/cs106/junit/ComparisonFailureEnhanced.html\" title=\"class in stanford.cs106.junit\">ComparisonFailureEnhanced</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.html#compile-java.lang.String-\">compile(String)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dt>\n<dd>\n<div class=\"block\">Compiles the .java source file with the given file name,\n and returns the file name of the newly compiled .class file.</div>\n</dd>\n<dt><a href=\"stanford/cs106/reflect/CompilerErrorException.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">CompilerErrorException</span></a> - Exception in <a href=\"stanford/cs106/reflect/package-summary.html\">stanford.cs106.reflect</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/CompilerErrorException.html#CompilerErrorException-java.lang.String-\">CompilerErrorException(String)</a></span> - Constructor for exception stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/CompilerErrorException.html\" title=\"class in stanford.cs106.reflect\">CompilerErrorException</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#componentAdded-java.awt.event.ContainerEvent-\">componentAdded(ContainerEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Required method of ContainerListener interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#componentHidden-java.awt.event.ComponentEvent-\">componentHidden(ComponentEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Required method of ComponentListener interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#componentMoved-java.awt.event.ComponentEvent-\">componentMoved(ComponentEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Required method of ComponentListener interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#componentRemoved-java.awt.event.ContainerEvent-\">componentRemoved(ContainerEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Required method of ContainerListener interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#componentResized-java.awt.event.ComponentEvent-\">componentResized(ComponentEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Required method of ComponentListener interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/ResizeListener.html#componentResized-java.awt.event.ComponentEvent-\">componentResized(ComponentEvent)</a></span> - Method in interface stanford.cs106.gui.<a href=\"stanford/cs106/gui/ResizeListener.html\" title=\"interface in stanford.cs106.gui\">ResizeListener</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#componentResizedHook--\">componentResizedHook()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#componentShown-java.awt.event.ComponentEvent-\">componentShown(ComponentEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Required method of ComponentListener interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#conditionalRepaint--\">conditionalRepaint()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Repaints the canvas if auto-repaint is in effect.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#CONFIG_FILE_NAME\">CONFIG_FILE_NAME</a></span> - Static variable in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#confirm-java.lang.String-\">confirm(String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Pops up a dialog box displaying the given message and asking the user to choose Yes or No.</div>\n</dd>\n<dt><a href=\"acm/io/ConsoleModel.html\" title=\"interface in acm.io\"><span class=\"typeNameLink\">ConsoleModel</span></a> - Interface in <a href=\"acm/io/package-summary.html\">acm.io</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"acm/program/ConsoleProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">ConsoleProgram</span></a> - Class in <a href=\"acm/program/package-summary.html\">acm.program</a></dt>\n<dd>\n<div class=\"block\">This class is a standard subclass of <code><a href=\"./acm/program/Program.html\">Program</a></code>\n that installs a console in the window.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ConsoleProgram.html#ConsoleProgram--\">ConsoleProgram()</a></span> - Constructor for class acm.program.<a href=\"acm/program/ConsoleProgram.html\" title=\"class in acm.program\">ConsoleProgram</a></dt>\n<dd>\n<div class=\"block\">Creates a new console program.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#constantExists-java.lang.Class-java.lang.String-\">constantExists(Class&lt;?&gt;, String)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#constantExists-java.lang.String-java.lang.String-\">constantExists(String, String)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/util/ConstantUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">ConstantUtils</span></a> - Class in <a href=\"stanford/cs106/util/package-summary.html\">stanford.cs106.util</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/ConstantUtils.html#ConstantUtils--\">ConstantUtils()</a></span> - Constructor for class stanford.cs106.util.<a href=\"stanford/cs106/util/ConstantUtils.html\" title=\"class in stanford.cs106.util\">ConstantUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCompound.html#contains-double-double-\">contains(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCompound.html\" title=\"class in acm.graphics\">GCompound</a></dt>\n<dd>\n<div class=\"block\">Checks to see whether a point is \"inside\" the compound, which means that it is\n inside one of the components.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLabel.html#contains-double-double-\">contains(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLabel.html\" title=\"class in acm.graphics\">GLabel</a></dt>\n<dd>\n<div class=\"block\">Returns true if this label contains the given x/y point.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLine.html#contains-double-double-\">contains(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLine.html\" title=\"class in acm.graphics\">GLine</a></dt>\n<dd>\n<div class=\"block\">Checks to see whether a point is inside the object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLineGroup.html#contains-double-double-\">contains(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLineGroup.html\" title=\"class in acm.graphics\">GLineGroup</a></dt>\n<dd>\n<div class=\"block\">Returns true if any of the line segments in this line group touch the given point.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#contains-double-double-\">contains(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Checks to see whether a point is inside the object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#contains-acm.graphics.GPoint-\">contains(GPoint)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Checks to see whether a point is inside the object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GOval.html#contains-double-double-\">contains(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GOval.html\" title=\"class in acm.graphics\">GOval</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GRectangle.html#contains-double-double-\">contains(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></dt>\n<dd>\n<div class=\"block\">Returns <code>true</code> if the <code>GRectangle</code> contains the specified point.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GRectangle.html#contains-acm.graphics.GPoint-\">contains(GPoint)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></dt>\n<dd>\n<div class=\"block\">Returns <code>true</code> if the <code>GRectangle</code> contains the specified point.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/AbstractTable.html#contains-java.lang.Object-java.lang.Object-\">contains(Object, Object)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\">AbstractTable</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Edge.html#contains-stanford.cs106.collections.Vertex-\">contains(Vertex&lt;V&gt;)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\">Edge</a></dt>\n<dd>\n<div class=\"block\">Returns true if this edge touches the given vertex, that is,\n if it is the start or end of this edge.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Lexicon.html#contains-java.lang.String-\">contains(String)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Lexicon.html\" title=\"class in stanford.cs106.collections\">Lexicon</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Table.html#contains-java.lang.Object-java.lang.Object-\">contains(Object, Object)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\">Table</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/AbstractTable.html#containsColumn-java.lang.Object-\">containsColumn(Object)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\">AbstractTable</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Table.html#containsColumn-java.lang.Object-\">containsColumn(Object)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\">Table</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#containsEdge-java.lang.String-java.lang.String-\">containsEdge(String, String)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Returns whether this graph contains an edge between the given vertices.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#containsEdge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">containsEdge(Vertex&lt;V&gt;, Vertex&lt;V&gt;)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Returns whether this graph contains an edge between the given vertices.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#containsEdge-java.lang.String-java.lang.String-\">containsEdge(String, String)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Returns whether this graph contains an edge between the given vertices.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#containsEdge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">containsEdge(Vertex&lt;V&gt;, Vertex&lt;V&gt;)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Returns whether this graph contains an edge between the given vertices.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/AbstractMultimap.html#containsEntry-java.lang.Object-java.lang.Object-\">containsEntry(Object, Object)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractMultimap.html\" title=\"class in stanford.cs106.collections\">AbstractMultimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Multimap.html#containsEntry-java.lang.Object-java.lang.Object-\">containsEntry(Object, Object)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\">Multimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/AbstractMultimap.html#containsKey-java.lang.Object-\">containsKey(Object)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractMultimap.html\" title=\"class in stanford.cs106.collections\">AbstractMultimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Multimap.html#containsKey-java.lang.Object-\">containsKey(Object)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\">Multimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#containsPath-java.util.List-\">containsPath(List&lt;String&gt;)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Returns true if the given list of vertices represents a path that can\n be formed by walking edges between those vertices in this graph,\n walking from the start to the end of the list.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#containsPath-java.util.List-\">containsPath(List&lt;String&gt;)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Returns true if the given list of vertices represents a path that can\n be formed by walking edges between those vertices in this graph,\n walking from the start to the end of the list.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Lexicon.html#containsPrefix-java.lang.String-\">containsPrefix(String)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Lexicon.html\" title=\"class in stanford.cs106.collections\">Lexicon</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/AbstractTable.html#containsRow-java.lang.Object-\">containsRow(Object)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\">AbstractTable</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Table.html#containsRow-java.lang.Object-\">containsRow(Object)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\">Table</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/AbstractMultimap.html#containsValue-java.lang.Object-\">containsValue(Object)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractMultimap.html\" title=\"class in stanford.cs106.collections\">AbstractMultimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/AbstractTable.html#containsValue-java.lang.Object-\">containsValue(Object)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\">AbstractTable</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Multimap.html#containsValue-java.lang.Object-\">containsValue(Object)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\">Multimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Table.html#containsValue-java.lang.Object-\">containsValue(Object)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\">Table</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#containsVertex-java.lang.String-\">containsVertex(String)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Returns whether this graph contains the given vertex.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#containsVertex-stanford.cs106.collections.Vertex-\">containsVertex(Vertex&lt;V&gt;)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Returns whether this graph contains the given vertex.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#containsVertex-java.lang.String-\">containsVertex(String)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Returns whether this graph contains the given vertex.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#containsVertex-stanford.cs106.collections.Vertex-\">containsVertex(Vertex&lt;V&gt;)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Returns whether this graph contains the given vertex.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#contentsChanged-javax.swing.event.ListDataEvent-\">contentsChanged(ListDataEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Required method of ListDataListener interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/ConsoleModel.html#copy--\">copy()</a></span> - Method in interface acm.io.<a href=\"acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#copy--\">copy()</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/StandardConsoleModel.html#copy--\">copy()</a></span> - Method in class acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SystemConsoleModel.html#copy--\">copy()</a></span> - Method in class acm.io.<a href=\"acm/io/SystemConsoleModel.html\" title=\"class in acm.io\">SystemConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/ClipboardUtils.html#copy-java.lang.String-\">copy(String)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/ClipboardUtils.html\" title=\"class in stanford.cs106.gui\">ClipboardUtils</a></dt>\n<dd>\n<div class=\"block\">Sets the clipboard to store the given text.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/IOUtils.html#copy-java.io.File-java.io.File-\">copy(File, File)</a></span> - Static method in class stanford.cs106.io.<a href=\"stanford/cs106/io/IOUtils.html\" title=\"class in stanford.cs106.io\">IOUtils</a></dt>\n<dd>\n<div class=\"block\">Copies the entire contents of the given in file into the given out file.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelControlPanel.html#cornerAction-java.awt.Point-\">cornerAction(Point)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelControlPanel.html\" title=\"class in stanford.karel\">KarelControlPanel</a></dt>\n<dd>\n<div class=\"block\">This action is invoked when the mouse is clicked on a corner, which is\n the wall in the indicated direction from the given point.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessSuperKarel.html#cornerColorIs-java.awt.Color-\">cornerColorIs(Color)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\">HeadlessSuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessSuperKarel.html#cornerColorIs-int-\">cornerColorIs(int)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\">HeadlessSuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessSuperKarel.html#cornerColorIs-double-double-double-\">cornerColorIs(double, double, double)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\">HeadlessSuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/SuperKarel.html#cornerColorIs-java.awt.Color-\">cornerColorIs(Color)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\">SuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/SuperKarel.html#cornerColorIs-int-\">cornerColorIs(int)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\">SuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/SuperKarel.html#cornerColorIs-double-double-double-\">cornerColorIs(double, double, double)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\">SuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#corruptVertexInfo--\">corruptVertexInfo()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Sets some of the distance / previous / visited markings from vertex info\n objects in this graph to have various random values, to test whether\n a student's code properly clears the info between calls.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GMath.html#cosDegrees-double-\">cosDegrees(double)</a></span> - Static method in class acm.graphics.<a href=\"acm/graphics/GMath.html\" title=\"class in acm.graphics\">GMath</a></dt>\n<dd>\n<div class=\"block\">Returns the trigonometric cosine of its argument where <code>angle</code>\n is expressed in degrees.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#cost-java.util.List-\">cost(List&lt;String&gt;)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Returns the total cost of following the given path of vertices in this graph,\n which is the sum of the edge weights between the path's vertices from start to end.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Edge.html#cost--\">cost()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\">Edge</a></dt>\n<dd>\n<div class=\"block\">Returns the weight of this edge.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#cost-java.util.List-\">cost(List&lt;String&gt;)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Returns the total cost of following the given path of vertices in this graph,\n which is the sum of the edge weights between the path's vertices from start to end.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Vertex.html#cost--\">cost()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a></dt>\n<dd>\n<div class=\"block\">Returns the value of the internal 'cost' to reach this vertex.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/RecursionUtils.html#countCalls--\">countCalls()</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/RecursionUtils.html\" title=\"class in stanford.cs106.util\">RecursionUtils</a></dt>\n<dd>\n<div class=\"block\">Returns the number of recursive calls currently on top of the call stack.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/HashBasedTable.html#create--\">create()</a></span> - Static method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/HashBasedTable.html\" title=\"class in stanford.cs106.collections\">HashBasedTable</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/HashMultimap.html#create--\">create()</a></span> - Static method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/HashMultimap.html\" title=\"class in stanford.cs106.collections\">HashMultimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/HashMultimap.html#create-boolean-\">create(boolean)</a></span> - Static method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/HashMultimap.html\" title=\"class in stanford.cs106.collections\">HashMultimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/TreeBasedTable.html#create--\">create()</a></span> - Static method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/TreeBasedTable.html\" title=\"class in stanford.cs106.collections\">TreeBasedTable</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/TreeMultimap.html#create--\">create()</a></span> - Static method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/TreeMultimap.html\" title=\"class in stanford.cs106.collections\">TreeMultimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/TreeMultimap.html#create-boolean-\">create(boolean)</a></span> - Static method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/TreeMultimap.html\" title=\"class in stanford.cs106.collections\">TreeMultimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/MediaTools.html#createAudioClip-java.io.InputStream-\">createAudioClip(InputStream)</a></span> - Static method in class acm.util.<a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></dt>\n<dd>\n<div class=\"block\">Generates an audio clip from an input stream containing the data bytes\n for the audio clip.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/MediaTools.html#createAudioClip-java.lang.String:A-\">createAudioClip(String[])</a></span> - Static method in class acm.util.<a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></dt>\n<dd>\n<div class=\"block\">Generates an audio clip from a string array that provides the sound\n values.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/MediaTools.html#createBufferedImage-java.awt.Image-int-\">createBufferedImage(Image, int)</a></span> - Static method in class acm.util.<a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></dt>\n<dd>\n<div class=\"block\">Creates a <code>BufferedImage</code> from the specified image.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#createButton-java.lang.String-char-java.awt.event.ActionListener-\">createButton(String, char, ActionListener)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#createButton-java.lang.String-char-java.awt.event.ActionListener-java.awt.Container-\">createButton(String, char, ActionListener, Container)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#createButton-java.lang.String-java.lang.String-char-java.awt.event.ActionListener-\">createButton(String, String, char, ActionListener)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#createButton-java.lang.String-java.lang.String-char-java.awt.event.ActionListener-java.awt.Container-\">createButton(String, String, char, ActionListener, Container)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#createButton-java.lang.String-java.lang.String-java.lang.String-char-java.awt.event.ActionListener-\">createButton(String, String, String, char, ActionListener)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#createButton-java.lang.String-java.lang.String-java.lang.String-char-java.awt.event.ActionListener-java.awt.Container-\">createButton(String, String, String, char, ActionListener, Container)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#createButtonGroup-java.awt.event.ActionListener-java.lang.String...-\">createButtonGroup(ActionListener, String...)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelControlPanel.html#createButtonPanel--\">createButtonPanel()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelControlPanel.html\" title=\"class in stanford.karel\">KarelControlPanel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#createCheckBox-java.lang.String-java.awt.event.ActionListener-\">createCheckBox(String, ActionListener)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#createCheckBox-java.lang.String-java.lang.String-char-java.awt.event.ActionListener-\">createCheckBox(String, String, char, ActionListener)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#createCheckBox-java.lang.String-boolean-java.awt.event.ActionListener-\">createCheckBox(String, boolean, ActionListener)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#createCheckBox-java.lang.String-char-boolean-\">createCheckBox(String, char, boolean)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#createCheckBox-java.lang.String-char-boolean-java.awt.event.ActionListener-\">createCheckBox(String, char, boolean, ActionListener)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#createCheckBox-java.lang.String-java.lang.String-char-boolean-java.awt.event.ActionListener-\">createCheckBox(String, String, char, boolean, ActionListener)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#createCheckBox-java.lang.String-char-java.awt.event.ActionListener-java.awt.Container-\">createCheckBox(String, char, ActionListener, Container)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#createCheckBox-java.lang.String-char-boolean-java.awt.event.ActionListener-java.awt.Container-\">createCheckBox(String, char, boolean, ActionListener, Container)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#createCheckBox-java.lang.String-java.lang.String-char-boolean-java.awt.event.ActionListener-java.awt.Container-\">createCheckBox(String, String, char, boolean, ActionListener, Container)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#createCheckBoxMenuItem-java.lang.String-java.awt.event.ActionListener-javax.swing.JMenu-\">createCheckBoxMenuItem(String, ActionListener, JMenu)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#createCheckBoxMenuItem-java.lang.String-boolean-java.awt.event.ActionListener-javax.swing.JMenu-\">createCheckBoxMenuItem(String, boolean, ActionListener, JMenu)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#createCheckBoxMenuItem-java.lang.String-char-boolean-java.awt.event.ActionListener-javax.swing.JMenu-\">createCheckBoxMenuItem(String, char, boolean, ActionListener, JMenu)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/AbstractTable.html#createColumnMap--\">createColumnMap()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\">AbstractTable</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/HashBasedTable.html#createColumnMap--\">createColumnMap()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/HashBasedTable.html\" title=\"class in stanford.cs106.collections\">HashBasedTable</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/TreeBasedTable.html#createColumnMap--\">createColumnMap()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/TreeBasedTable.html\" title=\"class in stanford.cs106.collections\">TreeBasedTable</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#createComboBox-java.lang.String-java.awt.event.ActionListener-java.lang.String...-\">createComboBox(String, ActionListener, String...)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#createComboGroupBox-java.lang.String-java.awt.event.ActionListener-java.lang.String...-\">createComboGroupBox(String, ActionListener, String...)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#createConsole--\">createConsole()</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Creates the console used by the <code>ConsoleProgram</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ConsoleProgram.html#createConsole--\">createConsole()</a></span> - Method in class acm.program.<a href=\"acm/program/ConsoleProgram.html\" title=\"class in acm.program\">ConsoleProgram</a></dt>\n<dd>\n<div class=\"block\">Creates the console used by the <code>ConsoleProgram</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#createConsole--\">createConsole()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Creates the console used by the <code>ConsoleProgram</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#createConsoleModel--\">createConsoleModel()</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.html#createDialog-java.awt.Component-\">createDialog(Component)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#createDialogIO--\">createDialogIO()</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Creates the dialog used for interaction (primarily by the <code>DialogProgram</code>\n class).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#createDialogIO--\">createDialogIO()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Creates the dialog used for interaction (primarily by the <code>DialogProgram</code>\n class).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelControlPanel.html#createEditor--\">createEditor()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelControlPanel.html\" title=\"class in stanford.karel\">KarelControlPanel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelControlPanel.html#createEditorPanel--\">createEditorPanel()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelControlPanel.html\" title=\"class in stanford.karel\">KarelControlPanel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#createFocusedItem-java.lang.String-\">createFocusedItem(String)</a></span> - Method in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>\n<div class=\"block\">Creates a focused menu item with the specified action command.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#createFocusedItem-java.lang.String-int-\">createFocusedItem(String, int)</a></span> - Method in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>\n<div class=\"block\">Creates a focused menu item with the specified action command and\n accelerator key.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#createFocusedItem-java.lang.String-int-javax.swing.KeyStroke-\">createFocusedItem(String, int, KeyStroke)</a></span> - Method in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#createFocusedItem-java.lang.String-int-javax.swing.KeyStroke-boolean-\">createFocusedItem(String, int, KeyStroke, boolean)</a></span> - Method in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#createGCanvas--\">createGCanvas()</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Creates the <code>GCanvas</code> used by the <code>GraphicsProgram</code>\n .</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/MediaTools.html#createImage-int:A:A-\">createImage(int[][])</a></span> - Static method in class acm.util.<a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></dt>\n<dd>\n<div class=\"block\">Generates an image from a two-dimensional array of pixel values.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/MediaTools.html#createImage-int:A-int-int-\">createImage(int[], int, int)</a></span> - Static method in class acm.util.<a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></dt>\n<dd>\n<div class=\"block\">Generates an image from a single-dimensional array of pixel values.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/MediaTools.html#createImage-java.io.InputStream-\">createImage(InputStream)</a></span> - Static method in class acm.util.<a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></dt>\n<dd>\n<div class=\"block\">Generates an image from an input stream containing the data bytes for the\n image formatted in image/gif format.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/MediaTools.html#createImage-java.lang.String:A-\">createImage(String[])</a></span> - Static method in class acm.util.<a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></dt>\n<dd>\n<div class=\"block\">Generates an image from a string array that provides the pixel values.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#createImage-int-int-\">createImage(int, int)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#createLabel-java.lang.String-int-\">createLabel(String, int)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#createLabel-java.lang.String-int-boolean-\">createLabel(String, int, boolean)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/AbstractMultimap.html#createList--\">createList()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractMultimap.html\" title=\"class in stanford.cs106.collections\">AbstractMultimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/AbstractMultimap.html#createMap--\">createMap()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractMultimap.html\" title=\"class in stanford.cs106.collections\">AbstractMultimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/HashMultimap.html#createMap--\">createMap()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/HashMultimap.html\" title=\"class in stanford.cs106.collections\">HashMultimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/TreeMultimap.html#createMap--\">createMap()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/TreeMultimap.html\" title=\"class in stanford.cs106.collections\">TreeMultimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#createMenu-java.lang.String-javax.swing.JMenuBar-\">createMenu(String, JMenuBar)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#createMenu-java.lang.String-char-javax.swing.JMenuBar-\">createMenu(String, char, JMenuBar)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#createMenuBar--\">createMenuBar()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Creates a menu bar for use with the program.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#createMenuItem-java.lang.String-java.awt.event.ActionListener-javax.swing.JMenu-\">createMenuItem(String, ActionListener, JMenu)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#createMenuItem-java.lang.String-char-java.awt.event.ActionListener-javax.swing.JMenu-\">createMenuItem(String, char, ActionListener, JMenu)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#createPanel-java.awt.Component...-\">createPanel(Component...)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#createPanel-java.awt.LayoutManager-java.awt.Component...-\">createPanel(LayoutManager, Component...)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#createParameterTable-java.lang.String:A-\">createParameterTable(String[])</a></span> - Static method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Creates a hash table containing the parameters specified in the\n argument list.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#createParameterTable-java.lang.String:A-\">createParameterTable(String[])</a></span> - Static method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Creates a hash table containing the parameters specified in the\n argument list.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#createProgramFrame--\">createProgramFrame()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Creates the frame containing the program.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#createProgramItem-java.lang.String-\">createProgramItem(String)</a></span> - Method in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>\n<div class=\"block\">Creates a program menu item with the specified action command.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#createProgramItem-java.lang.String-int-javax.swing.KeyStroke-\">createProgramItem(String, int, KeyStroke)</a></span> - Method in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>\n<div class=\"block\">Creates a program menu item with the specified action command and\n accelerator key.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#createProgramItem-java.lang.String-int-\">createProgramItem(String, int)</a></span> - Method in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/MediaTools.html#createPSPreviewImage-java.awt.Image-java.lang.String:A-\">createPSPreviewImage(Image, String[])</a></span> - Static method in class acm.util.<a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></dt>\n<dd>\n<div class=\"block\">Creates a new image that combines an existing image with a PostScript\n preview represented as a string array.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#createRadioButton-java.lang.String-char-boolean-javax.swing.ButtonGroup-java.awt.event.ActionListener-java.awt.Container-\">createRadioButton(String, char, boolean, ButtonGroup, ActionListener, Container)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelControlPanel.html#createResizePanel--\">createResizePanel()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelControlPanel.html\" title=\"class in stanford.karel\">KarelControlPanel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelControlPanel.html#createResizer--\">createResizer()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelControlPanel.html\" title=\"class in stanford.karel\">KarelControlPanel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GImage.html#createRGBPixel-int-int-int-\">createRGBPixel(int, int, int)</a></span> - Static method in class acm.graphics.<a href=\"acm/graphics/GImage.html\" title=\"class in acm.graphics\">GImage</a></dt>\n<dd>\n<div class=\"block\">Creates an opaque pixel value with the color components given by\n <code>red</code>, <code>green</code>, and <code>blue</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GImage.html#createRGBPixel-int-int-int-int-\">createRGBPixel(int, int, int, int)</a></span> - Static method in class acm.graphics.<a href=\"acm/graphics/GImage.html\" title=\"class in acm.graphics\">GImage</a></dt>\n<dd>\n<div class=\"block\">Creates a pixel value with the color components given by\n <code>red</code>, <code>green</code>, and <code>blue</code>\n and the transparency value <code>alpha</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/AbstractTable.html#createRowMap--\">createRowMap()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\">AbstractTable</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/HashBasedTable.html#createRowMap--\">createRowMap()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/HashBasedTable.html\" title=\"class in stanford.cs106.collections\">HashBasedTable</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/TreeBasedTable.html#createRowMap--\">createRowMap()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/TreeBasedTable.html\" title=\"class in stanford.cs106.collections\">TreeBasedTable</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/AbstractMultimap.html#createSet--\">createSet()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractMultimap.html\" title=\"class in stanford.cs106.collections\">AbstractMultimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/HashMultimap.html#createSet--\">createSet()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/HashMultimap.html\" title=\"class in stanford.cs106.collections\">HashMultimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/TreeMultimap.html#createSet--\">createSet()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/TreeMultimap.html\" title=\"class in stanford.cs106.collections\">TreeMultimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#createSlider-int-int-int-int-int-javax.swing.event.ChangeListener-java.awt.Container-\">createSlider(int, int, int, int, int, ChangeListener, Container)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#createStandardItem-java.lang.String-int-\">createStandardItem(String, int)</a></span> - Method in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>\n<div class=\"block\">Creates one of the standard menu items implemented by the\n <code>ProgramMenuBar</code> class.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#createStandardItem-java.lang.String-int-javax.swing.KeyStroke-\">createStandardItem(String, int, KeyStroke)</a></span> - Method in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/AbstractTable.html#createTableMap--\">createTableMap()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\">AbstractTable</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/HashBasedTable.html#createTableMap--\">createTableMap()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/HashBasedTable.html\" title=\"class in stanford.cs106.collections\">HashBasedTable</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/TreeBasedTable.html#createTableMap--\">createTableMap()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/TreeBasedTable.html\" title=\"class in stanford.cs106.collections\">TreeBasedTable</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#createTransformedGraphics-java.awt.Graphics-\">createTransformedGraphics(Graphics)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Creates a new Graphics2D that includes any transformations done to this object,\n such as scaling and rotation.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.html#createWorld--\">createWorld()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dt>\n<dd>\n<div class=\"block\">Creates the <code>KarelWorld</code> in which Karel lives.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#CROSS_THRESHOLD\">CROSS_THRESHOLD</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#CTRL_A\">CTRL_A</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#CTRL_B\">CTRL_B</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#CTRL_C\">CTRL_C</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#CTRL_END\">CTRL_END</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#CTRL_EQUALS\">CTRL_EQUALS</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#CTRL_HOME\">CTRL_HOME</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#CTRL_I\">CTRL_I</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#CTRL_L\">CTRL_L</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#CTRL_MINUS\">CTRL_MINUS</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#CTRL_P\">CTRL_P</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#CTRL_PLUS\">CTRL_PLUS</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#CTRL_Q\">CTRL_Q</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#CTRL_S\">CTRL_S</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#CTRL_SHIFT_MINUS\">CTRL_SHIFT_MINUS</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#CTRL_SHIFT_PLUS\">CTRL_SHIFT_PLUS</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#CTRL_V\">CTRL_V</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#CTRL_W\">CTRL_W</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#CTRL_X\">CTRL_X</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/ConsoleModel.html#cut--\">cut()</a></span> - Method in interface acm.io.<a href=\"acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#cut--\">cut()</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/StandardConsoleModel.html#cut--\">cut()</a></span> - Method in class acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SystemConsoleModel.html#cut--\">cut()</a></span> - Method in class acm.io.<a href=\"acm/io/SystemConsoleModel.html\" title=\"class in acm.io\">SystemConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessSuperKarel.html#CYAN\">CYAN</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\">HeadlessSuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.html#CYAN\">CYAN</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/SuperKarel.html#CYAN\">CYAN</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\">SuperKarel</a></dt>\n<dd>&nbsp;</dd>\n</dl>\n<a name=\"I:D\">\n<!--   -->\n</a>\n<h2 class=\"title\">D</h2>\n<dl>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessSuperKarel.html#DARK_GRAY\">DARK_GRAY</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\">HeadlessSuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.html#DARK_GRAY\">DARK_GRAY</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/SuperKarel.html#DARK_GRAY\">DARK_GRAY</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\">SuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/Note.html#DEBUG\">DEBUG</a></span> - Static variable in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\">Note</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/Request.html#decode-java.lang.String-\">decode(String)</a></span> - Static method in class stanford.cs106.net.<a href=\"stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\">Request</a></dt>\n<dd>\n<div class=\"block\">URL-decodes the given string.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/MediaTools.html#DEFAULT_AUDIO_PATH\">DEFAULT_AUDIO_PATH</a></span> - Static variable in class acm.util.<a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></dt>\n<dd>\n<div class=\"block\">The list of directories scanned for audio clips, separated by colons.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/MediaTools.html#DEFAULT_DATAFILE_PATH\">DEFAULT_DATAFILE_PATH</a></span> - Static variable in class acm.util.<a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></dt>\n<dd>\n<div class=\"block\">The list of directories scanned for data files, separated by colons.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLabel.html#DEFAULT_FONT\">DEFAULT_FONT</a></span> - Static variable in class acm.graphics.<a href=\"acm/graphics/GLabel.html\" title=\"class in acm.graphics\">GLabel</a></dt>\n<dd>\n<div class=\"block\">The default font used to display strings.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#DEFAULT_FONT\">DEFAULT_FONT</a></span> - Static variable in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/MediaTools.html#DEFAULT_IMAGE_PATH\">DEFAULT_IMAGE_PATH</a></span> - Static variable in class acm.util.<a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></dt>\n<dd>\n<div class=\"block\">The list of directories scanned for images, separated by colons.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/SimpleServer.html#DEFAULT_PORT\">DEFAULT_PORT</a></span> - Static variable in class stanford.cs106.net.<a href=\"stanford/cs106/net/SimpleServer.html\" title=\"class in stanford.cs106.net\">SimpleServer</a></dt>\n<dd>\n<div class=\"block\">Default port to listen for requests.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#DEFAULT_TAB_WIDTH\">DEFAULT_TAB_WIDTH</a></span> - Static variable in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Edge.html#DEFAULT_WEIGHT\">DEFAULT_WEIGHT</a></span> - Static variable in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\">Edge</a></dt>\n<dd>\n<div class=\"block\">Default weight of an edge in an undirected graph (1).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/MediaTools.html#defineAudioClip-java.lang.String-java.applet.AudioClip-\">defineAudioClip(String, AudioClip)</a></span> - Static method in class acm.util.<a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></dt>\n<dd>\n<div class=\"block\">Inserts the given clip into the audio clip table under the specified\n name.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/MediaTools.html#defineImage-java.lang.String-java.awt.Image-\">defineImage(String, Image)</a></span> - Static method in class acm.util.<a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></dt>\n<dd>\n<div class=\"block\">Inserts the given image into the image table under the specified name.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#degree-java.lang.String-\">degree(String)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Returns the number of outgoing edges from the given vertex.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#degree-stanford.cs106.collections.Vertex-\">degree(Vertex&lt;V&gt;)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Returns the number of outgoing edges from the given vertex.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#degree-java.lang.String-\">degree(String)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Returns the number of outgoing edges from the given vertex.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#degree-stanford.cs106.collections.Vertex-\">degree(Vertex&lt;V&gt;)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Returns the number of outgoing edges from the given vertex.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#delimiter--\">delimiter()</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Returns the Pattern this Scanner is currently using to match delimiters.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#destroy--\">destroy()</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Called when the program has been told to destroy itself.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#destroy--\">destroy()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Called when the program has been told to destroy itself.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.DialogCancelAction.html#DialogCancelAction-javax.swing.JDialog-\">DialogCancelAction(JDialog)</a></span> - Constructor for class acm.gui.<a href=\"acm/gui/JFontChooser.DialogCancelAction.html\" title=\"class in acm.gui\">JFontChooser.DialogCancelAction</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.DialogOKAction.html#DialogOKAction-javax.swing.JDialog-\">DialogOKAction(JDialog)</a></span> - Constructor for class acm.gui.<a href=\"acm/gui/JFontChooser.DialogOKAction.html\" title=\"class in acm.gui\">JFontChooser.DialogOKAction</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"acm/program/DialogProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">DialogProgram</span></a> - Class in <a href=\"acm/program/package-summary.html\">acm.program</a></dt>\n<dd>\n<div class=\"block\">This class is a standard subclass of <code><a href=\"./acm/program/Program.html\">Program</a></code>\n that takes its input from a <code>IODialog</code> object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/DialogProgram.html#DialogProgram--\">DialogProgram()</a></span> - Constructor for class acm.program.<a href=\"acm/program/DialogProgram.html\" title=\"class in acm.program\">DialogProgram</a></dt>\n<dd>\n<div class=\"block\">Creates a new dialog program.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.html#dialogResultValue\">dialogResultValue</a></span> - Variable in class acm.gui.<a href=\"acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#diff-java.io.File-\">diff(File)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Compares the pixels of this canvas to the image stored in the given file.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#diff-java.io.File-boolean-\">diff(File, boolean)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Compares the pixels of this canvas to the image stored in the given file.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#diff-java.lang.String-\">diff(String)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Compares the pixels of this canvas to the image stored in the given file.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#diff-java.lang.String-boolean-\">diff(String, boolean)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Compares the pixels of this canvas to the image stored in the given file.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#directionName-int-\">directionName(int)</a></span> - Static method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#dispatchMouseEvent-java.awt.event.MouseEvent-\">dispatchMouseEvent(MouseEvent)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Dispatches this mouse event to the uppermost graphical object for which\n the active point is within the object bounds.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GMath.html#distance-double-double-\">distance(double, double)</a></span> - Static method in class acm.graphics.<a href=\"acm/graphics/GMath.html\" title=\"class in acm.graphics\">GMath</a></dt>\n<dd>\n<div class=\"block\">Computes the distance between the origin and the point (<code>x</code>\n ,&nbsp;<code>y</code>).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GMath.html#distance-double-double-double-double-\">distance(double, double, double, double)</a></span> - Static method in class acm.graphics.<a href=\"acm/graphics/GMath.html\" title=\"class in acm.graphics\">GMath</a></dt>\n<dd>\n<div class=\"block\">Computes the distance between the points (<code>x0</code>,&nbsp;\n <code>y0</code>) and (<code>x1</code>,&nbsp;<code>y1</code>).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLine.html#distanceSquared-double-double-double-double-\">distanceSquared(double, double, double, double)</a></span> - Static method in class acm.graphics.<a href=\"acm/graphics/GLine.html\" title=\"class in acm.graphics\">GLine</a></dt>\n<dd>\n<div class=\"block\">Returns the square of the distance between (<code>x0</code>,&nbsp;\n <code>y0</code>) and (<code>x1</code>,&nbsp;<code>y1</code>).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#DOUBLE_WALL_THRESHOLD\">DOUBLE_WALL_THRESHOLD</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"acm/gui/DoubleField.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">DoubleField</span></a> - Class in <a href=\"acm/gui/package-summary.html\">acm.gui</a></dt>\n<dd>\n<div class=\"block\">This class implements a simple interactor that accepts a floating-point value.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/DoubleField.html#DoubleField--\">DoubleField()</a></span> - Constructor for class acm.gui.<a href=\"acm/gui/DoubleField.html\" title=\"class in acm.gui\">DoubleField</a></dt>\n<dd>\n<div class=\"block\">Creates a new field object for entering a <code>double</code> value.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/DoubleField.html#DoubleField-double-\">DoubleField(double)</a></span> - Constructor for class acm.gui.<a href=\"acm/gui/DoubleField.html\" title=\"class in acm.gui\">DoubleField</a></dt>\n<dd>\n<div class=\"block\">Creates a new field object for entering a <code>double</code> value.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/DoubleField.html#DoubleField-double-double-\">DoubleField(double, double)</a></span> - Constructor for class acm.gui.<a href=\"acm/gui/DoubleField.html\" title=\"class in acm.gui\">DoubleField</a></dt>\n<dd>\n<div class=\"block\">Creates a new field object for entering a <code>double</code> value,\n which is constrained to be within the specified range.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/DoubleField.html#DoubleField-double-double-double-\">DoubleField(double, double, double)</a></span> - Constructor for class acm.gui.<a href=\"acm/gui/DoubleField.html\" title=\"class in acm.gui\">DoubleField</a></dt>\n<dd>\n<div class=\"block\">Creates a new field object for entering a <code>double</code> value,\n which is constrained to be within the specified range.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#DOWN_ARROW\">DOWN_ARROW</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/net/Downloader.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">Downloader</span></a> - Class in <a href=\"stanford/cs106/net/package-summary.html\">stanford.cs106.net</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/Downloader.html#downloadFile-java.net.URL-\">downloadFile(URL)</a></span> - Static method in class stanford.cs106.net.<a href=\"stanford/cs106/net/Downloader.html\" title=\"class in stanford.cs106.net\">Downloader</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#draw-java.awt.Shape-\">draw(Shape)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Draws an outlined version of the given shape.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#drawArc-double-double-double-double-double-double-\">drawArc(double, double, double, double, double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Draws an outlined arc with the given coordinates.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#drawBeeper-java.awt.Graphics-int-int-int-int-int-java.awt.Component-\">drawBeeper(Graphics, int, int, int, int, int, Component)</a></span> - Static method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#drawBeeper-java.awt.Graphics-int-int-int-java.lang.String-int-java.awt.Component-\">drawBeeper(Graphics, int, int, int, String, int, Component)</a></span> - Static method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#drawBeeperForStyle-java.awt.Graphics-int-int-int-int-int-\">drawBeeperForStyle(Graphics, int, int, int, int, int)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AsciiArtProgram.html#drawCharacter-int-int-\">drawCharacter(int, int)</a></span> - Method in class acm.program.<a href=\"acm/program/AsciiArtProgram.html\" title=\"class in acm.program\">AsciiArtProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AsciiArtProgram.html#drawCharacter-int-int-java.lang.String-\">drawCharacter(int, int, String)</a></span> - Method in class acm.program.<a href=\"acm/program/AsciiArtProgram.html\" title=\"class in acm.program\">AsciiArtProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#drawCorner-java.awt.Graphics-int-int-java.awt.Point-\">drawCorner(Graphics, int, int, Point)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#drawCornerMarker-java.awt.Graphics-int-int-\">drawCornerMarker(Graphics, int, int)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#drawFancyKarel-java.awt.Graphics-int-int-int-int-\">drawFancyKarel(Graphics, int, int, int, int)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#drawFancyKarel-java.awt.Graphics-int-int-int-int-boolean-\">drawFancyKarel(Graphics, int, int, int, int, boolean)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#drawFancyKarel-java.awt.Graphics-int-int-int-int-java.awt.Color-\">drawFancyKarel(Graphics, int, int, int, int, Color)</a></span> - Static method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#drawFancyKarel-java.awt.Graphics-int-int-int-int-java.awt.Color-boolean-\">drawFancyKarel(Graphics, int, int, int, int, Color, boolean)</a></span> - Static method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#drawKarel-java.awt.Graphics-int-int-int-int-\">drawKarel(Graphics, int, int, int, int)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#drawLine-double-double-double-double-\">drawLine(double, double, double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Draws a line with the given endpoint coordinates.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AsciiArtProgram.html#drawLine-double-double-double-double-\">drawLine(double, double, double, double)</a></span> - Method in class acm.program.<a href=\"acm/program/AsciiArtProgram.html\" title=\"class in acm.program\">AsciiArtProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AsciiArtProgram.html#drawLine-int-int-int-int-\">drawLine(int, int, int, int)</a></span> - Method in class acm.program.<a href=\"acm/program/AsciiArtProgram.html\" title=\"class in acm.program\">AsciiArtProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#drawMarkedCorner-java.awt.Graphics-int-int-int-\">drawMarkedCorner(Graphics, int, int, int)</a></span> - Static method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#drawOval-double-double-double-double-\">drawOval(double, double, double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Draws an outlined oval with the given coordinates.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#drawPolarLine-double-double-double-double-\">drawPolarLine(double, double, double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Draws a line with the given polar coordinates, returning its starting endpoint.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#drawPolarLine-acm.graphics.GPoint-double-double-\">drawPolarLine(GPoint, double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Draws a line with the given polar coordinates, returning its starting endpoint.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#drawRect-double-double-double-double-\">drawRect(double, double, double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Draws an outlined rectangle with the given coordinates.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AsciiArtProgram.html#drawRect-double-double-double-double-\">drawRect(double, double, double, double)</a></span> - Method in class acm.program.<a href=\"acm/program/AsciiArtProgram.html\" title=\"class in acm.program\">AsciiArtProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AsciiArtProgram.html#drawRect-int-int-int-int-\">drawRect(int, int, int, int)</a></span> - Method in class acm.program.<a href=\"acm/program/AsciiArtProgram.html\" title=\"class in acm.program\">AsciiArtProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#drawSimpleKarel-java.awt.Graphics-int-int-int-int-\">drawSimpleKarel(Graphics, int, int, int, int)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n</dl>\n<a name=\"I:E\">\n<!--   -->\n</a>\n<h2 class=\"title\">E</h2>\n<dl>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramInterface.html#EAST\">EAST</a></span> - Static variable in interface acm.program.<a href=\"acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></dt>\n<dd>\n<div class=\"block\">Constant specifying the east edge of the container</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.html#EAST\">EAST</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#EAST\">EAST</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ConsoleProgram.html#echoComments--\">echoComments()</a></span> - Method in class acm.program.<a href=\"acm/program/ConsoleProgram.html\" title=\"class in acm.program\">ConsoleProgram</a></dt>\n<dd>\n<div class=\"block\">Print all echoed comments from the input override file onscreen.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#edge-java.lang.String-java.lang.String-\">edge(String, String)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Returns the extra information stored in the edge between vertices v1 and v2, if one exists.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#edge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">edge(Vertex&lt;V&gt;, Vertex&lt;V&gt;)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Returns the extra information stored in the edge between vertices v1 and v2, if one exists.</div>\n</dd>\n<dt><a href=\"stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Edge</span></a>&lt;<a href=\"stanford/cs106/collections/Edge.html\" title=\"type parameter in Edge\">V</a>,<a href=\"stanford/cs106/collections/Edge.html\" title=\"type parameter in Edge\">E</a>&gt; - Class in <a href=\"stanford/cs106/collections/package-summary.html\">stanford.cs106.collections</a></dt>\n<dd>\n<div class=\"block\">An Edge object represents information stored in a graph edge,\n including its vertices, weight, and any extra edge info.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Edge.html#Edge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">Edge(Vertex&lt;V&gt;, Vertex&lt;V&gt;)</a></span> - Constructor for class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\">Edge</a></dt>\n<dd>\n<div class=\"block\">Constructs information about the given edge with the default edge weight.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Edge.html#Edge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-double-\">Edge(Vertex&lt;V&gt;, Vertex&lt;V&gt;, double)</a></span> - Constructor for class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\">Edge</a></dt>\n<dd>\n<div class=\"block\">Constructs information about the given edge with the default edge weight.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#edge-java.lang.String-java.lang.String-\">edge(String, String)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Returns the extra information stored in the edge between vertices v1 and v2, if one exists.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#edge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">edge(Vertex&lt;V&gt;, Vertex&lt;V&gt;)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Returns the extra information stored in the edge between vertices v1 and v2, if one exists.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#edgeCount--\">edgeCount()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Returns the total number of edges in this graph.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#edgeCount--\">edgeCount()</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Returns the total number of edges in this graph.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#edges--\">edges()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Returns a collection of all edges in this graph.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#edges--\">edges()</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Returns a collection of all edges in this graph.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#edgeWeight-java.lang.String-java.lang.String-\">edgeWeight(String, String)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Returns the weight of the edge between vertices v1 and v2, if one exists.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#edgeWeight-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">edgeWeight(Vertex&lt;V&gt;, Vertex&lt;V&gt;)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Returns the weight of the edge between vertices v1 and v2, if one exists.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#edgeWeight-java.lang.String-java.lang.String-\">edgeWeight(String, String)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Returns the weight of the edge between vertices v1 and v2, if one exists.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#edgeWeight-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">edgeWeight(Vertex&lt;V&gt;, Vertex&lt;V&gt;)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Returns the weight of the edge between vertices v1 and v2, if one exists.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/Request.html#encode-java.lang.String-\">encode(String)</a></span> - Static method in class stanford.cs106.net.<a href=\"stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\">Request</a></dt>\n<dd>\n<div class=\"block\">URL-encodes the given string.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Edge.html#end--\">end()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\">Edge</a></dt>\n<dd>\n<div class=\"block\">Returns the ending vertex of this edge.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AbstractConsoleProgram.html#endHook--\">endHook()</a></span> - Method in class acm.program.<a href=\"acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></dt>\n<dd>\n<div class=\"block\">Called as the program is shutting down.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#endHook--\">endHook()</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Performs class-specific cleanup for the program just after\n it finishes.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#endHook--\">endHook()</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Ensures that the window is repainted at the end of the program.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#endHook--\">endHook()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Performs class-specific cleanup for the program just after\n it finishes.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelControlPanel.html#endWorldEdit--\">endWorldEdit()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelControlPanel.html\" title=\"class in stanford.karel\">KarelControlPanel</a></dt>\n<dd>\n<div class=\"block\">This action is invoked at the end of an editing session.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/XmlUtils.html#ensureNotNull-java.lang.Object-java.lang.String-\">ensureNotNull(Object, String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\">XmlUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GPoint.html#equals-java.lang.Object-\">equals(Object)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a></dt>\n<dd>\n<div class=\"block\">Tests whether two <code>GPoint</code> objects are equal.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GPoint.html#equals-double-double-\">equals(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a></dt>\n<dd>\n<div class=\"block\">Returns true if this GPoint's coordinates equal the given coordinates.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GRectangle.html#equals-java.lang.Object-\">equals(Object)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></dt>\n<dd>\n<div class=\"block\">Tests whether two <code>GRectangle</code> objects are equal.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/Note.html#equals-java.lang.Object-\">equals(Object)</a></span> - Method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\">Note</a></dt>\n<dd>\n<div class=\"block\">Returns true if o refers to a Note object with the same state\n as this Note object; otherwise false.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#equals-java.lang.Object-\">equals(Object)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Returns true if o refers to a graph with the same vertices, edges, and other properties\n (directed vs.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Edge.html#equals-java.lang.Object-\">equals(Object)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\">Edge</a></dt>\n<dd>\n<div class=\"block\">Returns true if o refers to an Edge object with identical state to this Edge object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Grid.html#equals-java.lang.Object-\">equals(Object)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Grid.html\" title=\"class in stanford.cs106.collections\">Grid</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Lexicon.html#equals-java.lang.Object-\">equals(Object)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Lexicon.html\" title=\"class in stanford.cs106.collections\">Lexicon</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Vertex.html#equals-java.lang.Object-\">equals(Object)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a></dt>\n<dd>\n<div class=\"block\">Returns true if o refers to a Vertex object correspending to the same\n underlying 'V' object as this one.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#equalsIgnoreWhitespace-java.lang.String-java.lang.String-\">equalsIgnoreWhitespace(String, String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#equalsIgnoreWhitespace-java.lang.String-java.lang.String-boolean-\">equalsIgnoreWhitespace(String, String, boolean)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#error-java.lang.Exception-\">error(Exception)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Generates an ErrorException with the given exception as its cause.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#error-java.lang.Exception-java.lang.String-\">error(Exception, String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Generates an ErrorException with the given exception and text.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#error-java.lang.String-\">error(String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Generates an ErrorException with the given text as its error message.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/SimpleClient.html#ERROR_KEY\">ERROR_KEY</a></span> - Static variable in class stanford.cs106.net.<a href=\"stanford/cs106/net/SimpleClient.html\" title=\"class in stanford.cs106.net\">SimpleClient</a></dt>\n<dd>\n<div class=\"block\">A special error prefix that will appear at the start of error responses.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.html#ERROR_OPTION\">ERROR_OPTION</a></span> - Static variable in class acm.gui.<a href=\"acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></dt>\n<dd>\n<div class=\"block\">Return value from <code>showDialog()</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/ConsoleModel.html#ERROR_STYLE\">ERROR_STYLE</a></span> - Static variable in interface acm.io.<a href=\"acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#errorDialog-java.lang.String-\">errorDialog(String)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#errorDialog-java.awt.Component-java.lang.String-\">errorDialog(Component, String)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#errorDialog-java.awt.Component-java.lang.String-java.lang.Throwable-\">errorDialog(Component, String, Throwable)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#errorDialog-java.lang.Throwable-\">errorDialog(Throwable)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#errorDialog-java.awt.Component-java.lang.Throwable-\">errorDialog(Component, Throwable)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"acm/util/ErrorException.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">ErrorException</span></a> - Exception in <a href=\"acm/util/package-summary.html\">acm.util</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/ErrorException.html#ErrorException-java.lang.String-\">ErrorException(String)</a></span> - Constructor for exception acm.util.<a href=\"acm/util/ErrorException.html\" title=\"class in acm.util\">ErrorException</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/ErrorException.html#ErrorException-java.lang.String-java.lang.Throwable-\">ErrorException(String, Throwable)</a></span> - Constructor for exception acm.util.<a href=\"acm/util/ErrorException.html\" title=\"class in acm.util\">ErrorException</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/ErrorException.html#ErrorException-java.lang.Exception-\">ErrorException(Exception)</a></span> - Constructor for exception acm.util.<a href=\"acm/util/ErrorException.html\" title=\"class in acm.util\">ErrorException</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/ErrorException.html#ErrorException-java.lang.Throwable-\">ErrorException(Throwable)</a></span> - Constructor for exception acm.util.<a href=\"acm/util/ErrorException.html\" title=\"class in acm.util\">ErrorException</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#escape-java.lang.String-\">escape(String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"acm/gui/Event.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Event</span></a>&lt;<a href=\"acm/gui/Event.html\" title=\"type parameter in Event\">T</a>&gt; - Class in <a href=\"acm/gui/package-summary.html\">acm.gui</a></dt>\n<dd>\n<div class=\"block\">A helper class to represent observable events.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/Event.html#Event--\">Event()</a></span> - Constructor for class acm.gui.<a href=\"acm/gui/Event.html\" title=\"class in acm.gui\">Event</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/karel/Event.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">Event</span></a>&lt;<a href=\"stanford/karel/Event.html\" title=\"type parameter in Event\">T</a>&gt; - Class in <a href=\"stanford/karel/package-summary.html\">stanford.karel</a></dt>\n<dd>\n<div class=\"block\">An event is an improved version of a java.util.Observable.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Event.html#Event--\">Event()</a></span> - Constructor for class stanford.karel.<a href=\"stanford/karel/Event.html\" title=\"class in stanford.karel\">Event</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Event.html#Event-java.lang.String-\">Event(String)</a></span> - Constructor for class stanford.karel.<a href=\"stanford/karel/Event.html\" title=\"class in stanford.karel\">Event</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/util/ExceptionUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">ExceptionUtils</span></a> - Class in <a href=\"stanford/cs106/util/package-summary.html\">stanford.cs106.util</a></dt>\n<dd>\n<div class=\"block\">This class contains utility code related to exceptions.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/LimitedPrintStream.ExcessiveOutputException.html#ExcessiveOutputException--\">ExcessiveOutputException()</a></span> - Constructor for exception stanford.cs106.io.<a href=\"stanford/cs106/io/LimitedPrintStream.ExcessiveOutputException.html\" title=\"class in stanford.cs106.io\">LimitedPrintStream.ExcessiveOutputException</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/LimitedPrintStream.ExcessiveOutputException.html#ExcessiveOutputException-java.lang.String-\">ExcessiveOutputException(String)</a></span> - Constructor for exception stanford.cs106.io.<a href=\"stanford/cs106/io/LimitedPrintStream.ExcessiveOutputException.html\" title=\"class in stanford.cs106.io\">LimitedPrintStream.ExcessiveOutputException</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#exit--\">exit()</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Exits from the program.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#exit--\">exit()</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#exit--\">exit()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Exits from the program.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramInterface.html#exit--\">exit()</a></span> - Method in interface acm.program.<a href=\"acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessKarel.html#exit--\">exit()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/HeadlessKarel.html\" title=\"class in stanford.karel\">HeadlessKarel</a></dt>\n<dd>\n<div class=\"block\">Exits the program.</div>\n</dd>\n<dt><a href=\"stanford/cs106/io/ExtensionFileFilter.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">ExtensionFileFilter</span></a> - Class in <a href=\"stanford/cs106/io/package-summary.html\">stanford.cs106.io</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/ExtensionFileFilter.html#ExtensionFileFilter-java.lang.String...-\">ExtensionFileFilter(String...)</a></span> - Constructor for class stanford.cs106.io.<a href=\"stanford/cs106/io/ExtensionFileFilter.html\" title=\"class in stanford.cs106.io\">ExtensionFileFilter</a></dt>\n<dd>\n<div class=\"block\">Filters to keep only the given extensions (don't include the dot in front of each).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.ExtensionFilter.html#ExtensionFilter-java.lang.String-\">ExtensionFilter(String)</a></span> - Constructor for class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.ExtensionFilter.html\" title=\"class in stanford.cs106.reflect\">ClassUtils.ExtensionFilter</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#extractOptionPaneIcon-java.lang.String-\">extractOptionPaneIcon(String)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Edge.html#extraData\">extraData</a></span> - Variable in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\">Edge</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Vertex.html#extraData\">extraData</a></span> - Variable in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a></dt>\n<dd>&nbsp;</dd>\n</dl>\n<a name=\"I:F\">\n<!--   -->\n</a>\n<h2 class=\"title\">F</h2>\n<dl>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#F1\">F1</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Karel.html#facingEast--\">facingEast()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelInterface.html#facingEast--\">facingEast()</a></span> - Method in interface stanford.karel.<a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Karel.html#facingNorth--\">facingNorth()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelInterface.html#facingNorth--\">facingNorth()</a></span> - Method in interface stanford.karel.<a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Karel.html#facingSouth--\">facingSouth()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelInterface.html#facingSouth--\">facingSouth()</a></span> - Method in interface stanford.karel.<a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Karel.html#facingWest--\">facingWest()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelInterface.html#facingWest--\">facingWest()</a></span> - Method in interface stanford.karel.<a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/Assert.html#fail-java.lang.String-\">fail(String)</a></span> - Static method in class stanford.cs106.junit.<a href=\"stanford/cs106/junit/Assert.html\" title=\"class in stanford.cs106.junit\">Assert</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#fakeMouseClicked-int-int-\">fakeMouseClicked(int, int)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#fakeMouseDragged-int-int-\">fakeMouseDragged(int, int)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#fakeMouseDragSequence-int...-\">fakeMouseDragSequence(int...)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#fakeMouseMoved-int-int-\">fakeMouseMoved(int, int)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#fakeMousePressed-int-int-\">fakeMousePressed(int, int)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#fakeMouseReleased-int-int-\">fakeMouseReleased(int, int)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.html#FANCY\">FANCY</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#FANCY\">FANCY</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/RandomGenerator.html#feedFixedIntegers-int...-\">feedFixedIntegers(int...)</a></span> - Static method in class acm.util.<a href=\"acm/util/RandomGenerator.html\" title=\"class in acm.util\">RandomGenerator</a></dt>\n<dd>\n<div class=\"block\">Adds a set of fixed numbers that will be returned by future calls to\n nextInt.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/RandomGenerator.html#feedFixedIntegers-java.lang.Iterable-\">feedFixedIntegers(Iterable&lt;Integer&gt;)</a></span> - Static method in class acm.util.<a href=\"acm/util/RandomGenerator.html\" title=\"class in acm.util\">RandomGenerator</a></dt>\n<dd>\n<div class=\"block\">Adds a set of fixed numbers that will be returned by future calls to\n nextInt.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.FieldNameComparator.html#FieldNameComparator--\">FieldNameComparator()</a></span> - Constructor for class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.FieldNameComparator.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils.FieldNameComparator</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"acm/util/FileChooserFilter.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">FileChooserFilter</span></a> - Class in <a href=\"acm/util/package-summary.html\">acm.util</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/FileChooserFilter.html#FileChooserFilter-java.lang.String-\">FileChooserFilter(String)</a></span> - Constructor for class acm.util.<a href=\"acm/util/FileChooserFilter.html\" title=\"class in acm.util\">FileChooserFilter</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/FileChooserFilter.html#FileChooserFilter-java.lang.String-java.lang.String-\">FileChooserFilter(String, String)</a></span> - Constructor for class acm.util.<a href=\"acm/util/FileChooserFilter.html\" title=\"class in acm.util\">FileChooserFilter</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#fileExists-java.lang.String-\">fileExists(String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns true if the given file exists within the current working directory.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#fileExists-java.lang.String-java.lang.String-\">fileExists(String, String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns true if the given file exists within the given directory.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/ResourceUtils.html#fileExists-java.lang.String-\">fileExists(String)</a></span> - Static method in class stanford.cs106.io.<a href=\"stanford/cs106/io/ResourceUtils.html\" title=\"class in stanford.cs106.io\">ResourceUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#fileExistsInsideJAR-java.lang.String-\">fileExistsInsideJAR(String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns true if the given file exists inside the app's JAR archive within the current working directory.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#fileExistsInsideJAR-java.lang.String-java.lang.String-\">fileExistsInsideJAR(String, String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns true if the given file exists inside the app's JAR archive within the given directory.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#fileExistsOnDisk-java.lang.String-\">fileExistsOnDisk(String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns true if the given file exists in the current working directory.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#fileExistsOnDisk-java.lang.String-java.lang.String-\">fileExistsOnDisk(String, String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns true if the given file exists in the given directory.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/ResourceUtils.html#filenameToURL-java.lang.String-\">filenameToURL(String)</a></span> - Static method in class stanford.cs106.io.<a href=\"stanford/cs106/io/ResourceUtils.html\" title=\"class in stanford.cs106.io\">ResourceUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#fileSize-java.lang.String-\">fileSize(String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns the size of the given file in bytes in the current working directory.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#fileSize-java.lang.String-java.lang.String-\">fileSize(String, String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns the size of the given file in bytes.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#fill-java.awt.Shape-\">fill(Shape)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Draws a filled version of the given shape.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#FILL\">FILL</a></span> - Static variable in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Expand table to fill its container</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Grid.html#fill-E-\">fill(E)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Grid.html\" title=\"class in stanford.cs106.collections\">Grid</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#fillArc-double-double-double-double-double-double-\">fillArc(double, double, double, double, double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Draws a filled arc with the given coordinates.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#fillOval-double-double-double-double-\">fillOval(double, double, double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Draws a filled oval with the given coordinates.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#fillRect-double-double-double-double-\">fillRect(double, double, double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Draws a filled rectangle with the given coordinates.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AsciiArtProgram.html#fillRect-double-double-double-double-\">fillRect(double, double, double, double)</a></span> - Method in class acm.program.<a href=\"acm/program/AsciiArtProgram.html\" title=\"class in acm.program\">AsciiArtProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AsciiArtProgram.html#fillRect-int-int-int-int-\">fillRect(int, int, int, int)</a></span> - Method in class acm.program.<a href=\"acm/program/AsciiArtProgram.html\" title=\"class in acm.program\">AsciiArtProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/ExceptionUtils.html#filterStackTrace-java.lang.String-java.lang.String...-\">filterStackTrace(String, String...)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/ExceptionUtils.html\" title=\"class in stanford.cs106.util\">ExceptionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#findInLine-java.util.regex.Pattern-\">findInLine(Pattern)</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Attempts to find the next occurrence of the specified pattern ignoring \n     delimiters.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#findInLine-java.lang.String-\">findInLine(String)</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Attempts to find the next occurrence of a pattern constructed from the \n     specified string, ignoring delimiters.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/NetworkManager.html#findIPAddress-java.awt.event.ActionListener-\">findIPAddress(ActionListener)</a></span> - Static method in class stanford.cs106.net.<a href=\"stanford/cs106/net/NetworkManager.html\" title=\"class in stanford.cs106.net\">NetworkManager</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#findWithinHorizon-java.util.regex.Pattern-int-\">findWithinHorizon(Pattern, int)</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Attempts to find the next occurrence of the specified pattern.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#findWithinHorizon-java.lang.String-int-\">findWithinHorizon(String, int)</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Attempts to find the next occurrence of a pattern constructed from the \n     specified string, ignoring delimiters.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Edge.html#finish--\">finish()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\">Edge</a></dt>\n<dd>\n<div class=\"block\">Returns the ending vertex of this edge.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/Event.html#fire--\">fire()</a></span> - Method in class acm.gui.<a href=\"acm/gui/Event.html\" title=\"class in acm.gui\">Event</a></dt>\n<dd>\n<div class=\"block\">Convenience method to replace notifyObservers.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/Event.html#fire-T-\">fire(T)</a></span> - Method in class acm.gui.<a href=\"acm/gui/Event.html\" title=\"class in acm.gui\">Event</a></dt>\n<dd>\n<div class=\"block\">Convenience method to replace notifyObservers.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Event.html#fire--\">fire()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Event.html\" title=\"class in stanford.karel\">Event</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Event.html#fire-T-\">fire(T)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Event.html\" title=\"class in stanford.karel\">Event</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#fireAccelerator-java.awt.event.KeyEvent-\">fireAccelerator(KeyEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>\n<div class=\"block\">Triggers the accelerator associated with the keystroke implied by the key\n event.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#fireActionEvent-java.awt.event.ActionEvent-\">fireActionEvent(ActionEvent)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Triggers an action event for this graphical object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#fireActionEvent-java.lang.String-\">fireActionEvent(String)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Triggers an action event for this graphical object with the specified\n action command.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#fireActionListeners-java.awt.event.ActionEvent-\">fireActionListeners(ActionEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>\n<div class=\"block\">Fires the action listeners responsible for handling the specified event.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCompound.html#fireMouseListeners-java.awt.event.MouseEvent-\">fireMouseListeners(MouseEvent)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCompound.html\" title=\"class in acm.graphics\">GCompound</a></dt>\n<dd>\n<div class=\"block\">Dispatches a mouse event to the topmost child that covers the location\n in the event <code>e</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#fireMouseListeners-java.awt.event.MouseEvent-\">fireMouseListeners(MouseEvent)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Sends the event to the appropriate listener.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GImage.html#fit-double-double-\">fit(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GImage.html\" title=\"class in acm.graphics\">GImage</a></dt>\n<dd>\n<div class=\"block\">Resizes the image to the largest size that fits within the given width/height\n while maintaining the image's \"aspect ratio\" (not stretching the image's\n relative width/height).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#fitToBox-java.lang.String-int-int-\">fitToBox(String, int, int)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#fitToBox-java.lang.String-int-int-boolean-\">fitToBox(String, int, int, boolean)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#fitToHeight-java.lang.String-int-\">fitToHeight(String, int)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#fitToWidth-java.lang.String-int-\">fitToWidth(String, int)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/MediaTools.html#flushAudioClip-java.lang.String-\">flushAudioClip(String)</a></span> - Static method in class acm.util.<a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></dt>\n<dd>\n<div class=\"block\">Removes the audio clip with the given name from the cache, allowing it to\n be freed by the garbage collector.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/MediaTools.html#flushImage-java.lang.String-\">flushImage(String)</a></span> - Static method in class acm.util.<a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></dt>\n<dd>\n<div class=\"block\">Removes the image with the given name from the cache, allowing it to be\n freed by the garbage collector.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.TextFieldFocusHandlerForTextSelection.html#focusGained-java.awt.event.FocusEvent-\">focusGained(FocusEvent)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JFontChooser.TextFieldFocusHandlerForTextSelection.html\" title=\"class in acm.gui\">JFontChooser.TextFieldFocusHandlerForTextSelection</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/StandardConsoleModel.html#focusGained-java.awt.event.FocusEvent-\">focusGained(FocusEvent)</a></span> - Method in class acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#focusGained-java.awt.event.FocusEvent-\">focusGained(FocusEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Required empty method of FocusListener interface; does nothing.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.TextFieldFocusHandlerForTextSelection.html#focusLost-java.awt.event.FocusEvent-\">focusLost(FocusEvent)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JFontChooser.TextFieldFocusHandlerForTextSelection.html\" title=\"class in acm.gui\">JFontChooser.TextFieldFocusHandlerForTextSelection</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/StandardConsoleModel.html#focusLost-java.awt.event.FocusEvent-\">focusLost(FocusEvent)</a></span> - Method in class acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#focusLost-java.awt.event.FocusEvent-\">focusLost(FocusEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Required empty method of FocusListener interface; does nothing.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AbstractConsoleProgram.html#fontEnlarge--\">fontEnlarge()</a></span> - Method in class acm.program.<a href=\"acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></dt>\n<dd>\n<div class=\"block\">Makes the console's font larger by 2pt.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AbstractConsoleProgram.html#fontShrink--\">fontShrink()</a></span> - Method in class acm.program.<a href=\"acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></dt>\n<dd>\n<div class=\"block\">Makes the console's font smaller by 2pt.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AbstractConsoleProgram.html#fontToggleBold--\">fontToggleBold()</a></span> - Method in class acm.program.<a href=\"acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></dt>\n<dd>\n<div class=\"block\">Makes the console's font toggle between bold and non-bold.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#forceSquareSize-int-\">forceSquareSize(int)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#forgetWindowLocation-java.awt.Frame-\">forgetWindowLocation(Frame)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#formatDoubleLikeCpp-double-\">formatDoubleLikeCpp(double)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>\n<div class=\"block\">Tries to format double the C++ iostream way, with up to 6 digits shown after the decimal point.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/Request.html#fromUrl-java.lang.String-\">fromUrl(String)</a></span> - Static method in class stanford.cs106.net.<a href=\"stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\">Request</a></dt>\n<dd>\n<div class=\"block\">Converts the given string into a Request object,\n parsing and separating any of its query parameters.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/Request.html#fromUrl-java.net.URL-\">fromUrl(URL)</a></span> - Static method in class stanford.cs106.net.<a href=\"stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\">Request</a></dt>\n<dd>\n<div class=\"block\">Converts the given URL into a Request object,\n parsing and separating any of its query parameters.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GContainer.html#FRONT_TO_BACK\">FRONT_TO_BACK</a></span> - Static variable in interface acm.graphics.<a href=\"acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a></dt>\n<dd>\n<div class=\"block\">Specifies that iterators should run from front to back</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Karel.html#frontIsBlocked--\">frontIsBlocked()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelInterface.html#frontIsBlocked--\">frontIsBlocked()</a></span> - Method in interface stanford.karel.<a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Karel.html#frontIsClear--\">frontIsClear()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelInterface.html#frontIsClear--\">frontIsClear()</a></span> - Method in interface stanford.karel.<a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></dt>\n<dd>&nbsp;</dd>\n</dl>\n<a name=\"I:G\">\n<!--   -->\n</a>\n<h2 class=\"title\">G</h2>\n<dl>\n<dt><a href=\"acm/graphics/G3DRect.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">G3DRect</span></a> - Class in <a href=\"acm/graphics/package-summary.html\">acm.graphics</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/G3DRect.html#G3DRect-double-double-\">G3DRect(double, double)</a></span> - Constructor for class acm.graphics.<a href=\"acm/graphics/G3DRect.html\" title=\"class in acm.graphics\">G3DRect</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/G3DRect.html#G3DRect-double-double-double-double-\">G3DRect(double, double, double, double)</a></span> - Constructor for class acm.graphics.<a href=\"acm/graphics/G3DRect.html\" title=\"class in acm.graphics\">G3DRect</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/G3DRect.html#G3DRect-double-double-double-double-boolean-\">G3DRect(double, double, double, double, boolean)</a></span> - Constructor for class acm.graphics.<a href=\"acm/graphics/G3DRect.html\" title=\"class in acm.graphics\">G3DRect</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">GCanvas</span></a> - Class in <a href=\"acm/graphics/package-summary.html\">acm.graphics</a></dt>\n<dd>\n<div class=\"block\">The <code>GCanvas</code> class is a lightweight component that also\n serves as a container for graphical objects.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#GCanvas--\">GCanvas()</a></span> - Constructor for class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Creates a new <code>GCanvas</code> that contains no objects.</div>\n</dd>\n<dt><a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\"><span class=\"typeNameLink\">GCanvasInterface</span></a> - Interface in <a href=\"acm/graphics/package-summary.html\">acm.graphics</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"acm/graphics/GCompound.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">GCompound</span></a> - Class in <a href=\"acm/graphics/package-summary.html\">acm.graphics</a></dt>\n<dd>\n<div class=\"block\">This class defines a graphical object that consists of a collection\n of other graphical objects.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCompound.html#GCompound--\">GCompound()</a></span> - Constructor for class acm.graphics.<a href=\"acm/graphics/GCompound.html\" title=\"class in acm.graphics\">GCompound</a></dt>\n<dd>\n<div class=\"block\">Creates a new <code>GCompound</code> object with no internal components.</div>\n</dd>\n<dt><a href=\"acm/graphics/GContainer.html\" title=\"interface in acm.graphics\"><span class=\"typeNameLink\">GContainer</span></a> - Interface in <a href=\"acm/graphics/package-summary.html\">acm.graphics</a></dt>\n<dd>\n<div class=\"block\">Defines the functionality of an object that can serve as the parent\n of a <a href=\"./acm/graphics/GObject.html\"><code>GObject</code></a>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/AbstractMultimap.html#get-K-\">get(K)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractMultimap.html\" title=\"class in stanford.cs106.collections\">AbstractMultimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/AbstractTable.html#get-java.lang.Object-java.lang.Object-\">get(Object, Object)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\">AbstractTable</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Grid.html#get-int-int-\">get(int, int)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Grid.html\" title=\"class in stanford.cs106.collections\">Grid</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Multimap.html#get-K-\">get(K)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\">Multimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Table.html#get-java.lang.Object-java.lang.Object-\">get(Object, Object)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\">Table</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/ClipboardUtils.html#get--\">get()</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/ClipboardUtils.html\" title=\"class in stanford.cs106.gui\">ClipboardUtils</a></dt>\n<dd>\n<div class=\"block\">Returns the current contents of the clipboard.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/OperatingSystem.html#get--\">get()</a></span> - Static method in enum stanford.cs106.util.<a href=\"stanford/cs106/util/OperatingSystem.html\" title=\"enum in stanford.cs106.util\">OperatingSystem</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/Note.html#getAccidental--\">getAccidental()</a></span> - Method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\">Note</a></dt>\n<dd>\n<div class=\"block\">Returns this Note's accidental value of SHARP, FLAT, or NATURAL.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JStringList.html#getActionCommand--\">getActionCommand()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JStringList.html\" title=\"class in acm.gui\">JStringList</a></dt>\n<dd>\n<div class=\"block\">Returns the current action command of this list, which is the string that\n will occur when action events are performed on this list.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JButtonGroup.html#getActionListeners--\">getActionListeners()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JButtonGroup.html\" title=\"class in acm.gui\">JButtonGroup</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JStringList.html#getActionListeners--\">getActionListeners()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JStringList.html\" title=\"class in acm.gui\">JStringList</a></dt>\n<dd>\n<div class=\"block\">Returns an array of all action listeners currently listening to this list.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/ComparisonFailureEnhanced.html#getActual--\">getActual()</a></span> - Method in error stanford.cs106.junit.<a href=\"stanford/cs106/junit/ComparisonFailureEnhanced.html\" title=\"class in stanford.cs106.junit\">ComparisonFailureEnhanced</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#getAlignment--\">getAlignment()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AbstractConsoleProgram.html#getAllOutput--\">getAllOutput()</a></span> - Method in class acm.program.<a href=\"acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></dt>\n<dd>\n<div class=\"block\">Returns all text that has been displayed on this console so far.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GImage.html#getAlpha-int-\">getAlpha(int)</a></span> - Static method in class acm.graphics.<a href=\"acm/graphics/GImage.html\" title=\"class in acm.graphics\">GImage</a></dt>\n<dd>\n<div class=\"block\">Returns the alpha component from an RGB value.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#getAncestor-java.awt.Component-java.lang.Class-\">getAncestor(Component, Class&lt;C&gt;)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>\n<div class=\"block\">Looks upward at parent containers of the given component until it finds one of the given type or\n any subclass of the given type, and returns it.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getAnimationDelay--\">getAnimationDelay()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns the delay between frames of animation in milliseconds (default 20).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#getAppletMode--\">getAppletMode()</a></span> - Static method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#getAppletStub--\">getAppletStub()</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Retrieves the applet stub.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getAppletStub--\">getAppletStub()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Retrieves the applet stub.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#getArgumentArray--\">getArgumentArray()</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Retrieves the array of arguments passed in from the command line, or\n <code>null</code> if no arguments are available.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getArgumentArray--\">getArgumentArray()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Retrieves the array of arguments passed in from the command line, or\n <code>null</code> if no arguments are available.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLabel.html#getAscent--\">getAscent()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLabel.html\" title=\"class in acm.graphics\">GLabel</a></dt>\n<dd>\n<div class=\"block\">Returns the distance this string extends above the baseline.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/XmlUtils.html#getAttribute-org.w3c.dom.Node-java.lang.String-\">getAttribute(Node, String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\">XmlUtils</a></dt>\n<dd>\n<div class=\"block\">Returns the value of the attribute of the given node with the given name.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/XmlUtils.html#getAttribute-org.w3c.dom.Node-java.lang.String-boolean-\">getAttribute(Node, String, boolean)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\">XmlUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/XmlUtils.html#getAttribute-org.w3c.dom.Node-java.lang.String-boolean-java.lang.String-\">getAttribute(Node, String, boolean, String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\">XmlUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/XmlUtils.html#getAttributeAny-org.w3c.dom.Node-java.lang.String...-\">getAttributeAny(Node, String...)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\">XmlUtils</a></dt>\n<dd>\n<div class=\"block\">Returns the value of the first attribute found with any of the given names, else null.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/XmlUtils.html#getAttributeAny-org.w3c.dom.Node-boolean-java.lang.String...-\">getAttributeAny(Node, boolean, String...)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\">XmlUtils</a></dt>\n<dd>\n<div class=\"block\">Returns the value of the first attribute found with any of the given names, else null.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/XmlUtils.html#getAttributeInt-org.w3c.dom.Node-java.lang.String-\">getAttributeInt(Node, String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\">XmlUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/XmlUtils.html#getAttributeInt-org.w3c.dom.Node-java.lang.String-boolean-\">getAttributeInt(Node, String, boolean)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\">XmlUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/XmlUtils.html#getAttributeInt-org.w3c.dom.Node-java.lang.String-boolean-int-\">getAttributeInt(Node, String, boolean, int)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\">XmlUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/XmlUtils.html#getAttributeOrChild-org.w3c.dom.Node-java.lang.String-\">getAttributeOrChild(Node, String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\">XmlUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/XmlUtils.html#getAttributeOrChild-org.w3c.dom.Node-java.lang.String-boolean-\">getAttributeOrChild(Node, String, boolean)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\">XmlUtils</a></dt>\n<dd>\n<div class=\"block\">Returns the value of the attribute of the given node with the given name.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/XmlUtils.html#getAttributes-org.w3c.dom.Node-\">getAttributes(Node)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\">XmlUtils</a></dt>\n<dd>\n<div class=\"block\">Returns all attributes of the given XML node as a list of name=value strings.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#getAudioInputStream--\">getAudioInputStream()</a></span> - Method in class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Returns an <code>AudioInputStream</code> for the sound.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#getAutoRepaintFlag--\">getAutoRepaintFlag()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Returns the current setting of the auto-repaint flag as described in\n <a href=\"./acm/graphics/#setAutoRepaintFlag(boolean)\"><code>setAutoRepaintFlag</code></a>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GImage.html#getAWTBounds--\">getAWTBounds()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GImage.html\" title=\"class in acm.graphics\">GImage</a></dt>\n<dd>\n<div class=\"block\">Returns an AWT <code>Rectangle</code> that specifies the bounds of this object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvasInterface.html#getBackground--\">getBackground()</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#getBackground--\">getBackground()</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AsciiArtProgram.html#getBackgroundCharacter--\">getBackgroundCharacter()</a></span> - Method in class acm.program.<a href=\"acm/program/AsciiArtProgram.html\" title=\"class in acm.program\">AsciiArtProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AsciiArtProgram.html#getBackgroundColor--\">getBackgroundColor()</a></span> - Method in class acm.program.<a href=\"acm/program/AsciiArtProgram.html\" title=\"class in acm.program\">AsciiArtProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Karel.html#getBeepersInBag--\">getBeepersInBag()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelInterface.html#getBeepersInBag--\">getBeepersInBag()</a></span> - Method in interface stanford.karel.<a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#getBeepersOnCorner-java.awt.Point-\">getBeepersOnCorner(Point)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#getBeepersOnCorner-int-int-\">getBeepersOnCorner(int, int)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GImage.html#getBlue-int-\">getBlue(int)</a></span> - Static method in class acm.graphics.<a href=\"acm/graphics/GImage.html\" title=\"class in acm.graphics\">GImage</a></dt>\n<dd>\n<div class=\"block\">Returns the blue component from an RGB value.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getBoolean--\">getBoolean()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Reads and returns a boolean value (<code>true</code> or <code>false</code>).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getBoolean-java.lang.String-\">getBoolean(String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Prompts the user to enter a boolean value, which is returned as\n the value of this method.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getBoolean-java.lang.String-java.lang.String-java.lang.String-\">getBoolean(String, String, String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Prompts the user to enter a boolean value, which is matched against the\n labels provided.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#getBorder-java.lang.String-\">getBorder(String)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Returns the component installed as a border on the specified side, which must\n be one of the constants from <code>BorderLayout</code> (<code>NORTH</code>,\n <code>SOUTH</code>, <code>EAST</code>, <code>WEST</code>).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getBorder-java.lang.String-\">getBorder(String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns the component installed as a border on the specified side, which must\n be one of the constants from <code>BorderLayout</code> (<code>NORTH</code>,\n <code>SOUTH</code>, <code>EAST</code>, <code>WEST</code>).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#getBottomY--\">getBottomY()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Returns the bottom y-coordinate of the object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getBottomY--\">getBottomY()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns the y-coordinate of the bottom of this program's window.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCompound.html#getBounds--\">getBounds()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCompound.html\" title=\"class in acm.graphics\">GCompound</a></dt>\n<dd>\n<div class=\"block\">Returns the bounding rectangle for this compound object, which consists of\n the union of the bounding rectangles for each of the components.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GImage.html#getBounds--\">getBounds()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GImage.html\" title=\"class in acm.graphics\">GImage</a></dt>\n<dd>\n<div class=\"block\">Returns the bounding box of this object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLabel.html#getBounds--\">getBounds()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLabel.html\" title=\"class in acm.graphics\">GLabel</a></dt>\n<dd>\n<div class=\"block\">Returns a <code>GRectangle</code> that specifies the bounding box for the string.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLine.html#getBounds--\">getBounds()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLine.html\" title=\"class in acm.graphics\">GLine</a></dt>\n<dd>\n<div class=\"block\">Returns the bounding box for this object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLineGroup.html#getBounds--\">getBounds()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLineGroup.html\" title=\"class in acm.graphics\">GLineGroup</a></dt>\n<dd>\n<div class=\"block\">Returns a bounding rectangle that tightly contains this line group.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#getBounds--\">getBounds()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Returns the bounding box of this object, which is defined to be the\n smallest rectangle that covers everything drawn by the figure.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GOval.html#getBounds--\">getBounds()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GOval.html\" title=\"class in acm.graphics\">GOval</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GRectangle.html#getBounds--\">getBounds()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></dt>\n<dd>\n<div class=\"block\">Returns a new <code>GRectangle</code> whose bounds are the same as this one.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JButtonGroup.html#getButtonCount--\">getButtonCount()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JButtonGroup.html\" title=\"class in acm.gui\">JButtonGroup</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/ExceptionUtils.html#getCallingClassName-java.lang.String...-\">getCallingClassName(String...)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/ExceptionUtils.html\" title=\"class in stanford.cs106.util\">ExceptionUtils</a></dt>\n<dd>\n<div class=\"block\">The current class name on top of the current method call stack,\n ignoring any classes in the given list of classes to skip.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#getCanvasHeight--\">getCanvasHeight()</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Returns the height of the central canvas area.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgramInterface.html#getCanvasHeight--\">getCanvasHeight()</a></span> - Method in interface acm.program.<a href=\"acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#getCanvasHeight--\">getCanvasHeight()</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCompound.html#getCanvasPoint-acm.graphics.GPoint-\">getCanvasPoint(GPoint)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCompound.html\" title=\"class in acm.graphics\">GCompound</a></dt>\n<dd>\n<div class=\"block\">Converts the location of the specified point in this compound to\n the corresponding point in the enclosing canvas.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCompound.html#getCanvasPoint-double-double-\">getCanvasPoint(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCompound.html\" title=\"class in acm.graphics\">GCompound</a></dt>\n<dd>\n<div class=\"block\">Converts the location of the specified point in this compound to\n the corresponding point in the enclosing canvas.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#getCanvasSize--\">getCanvasSize()</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Returns the size of the central canvas area.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgramInterface.html#getCanvasSize--\">getCanvasSize()</a></span> - Method in interface acm.program.<a href=\"acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#getCanvasSize--\">getCanvasSize()</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#getCanvasWidth--\">getCanvasWidth()</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Returns the width of the central canvas area.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgramInterface.html#getCanvasWidth--\">getCanvasWidth()</a></span> - Method in interface acm.program.<a href=\"acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#getCanvasWidth--\">getCanvasWidth()</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ConsoleProgram.html#getCapturedOutput--\">getCapturedOutput()</a></span> - Method in class acm.program.<a href=\"acm/program/ConsoleProgram.html\" title=\"class in acm.program\">ConsoleProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#getCenterLocation--\">getCenterLocation()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Returns the central x/y-coordinates of this object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getCenterLocation--\">getCenterLocation()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns the x/y-coordinates of the center of this program's window.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#getCenterX--\">getCenterX()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Returns the central x-coordinate of this object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getCenterX--\">getCenterX()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns the x-coordinate of the center of this program's window.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#getCenterY--\">getCenterY()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Returns the central y-coordinate of this object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getCenterY--\">getCenterY()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns the y-coordinate of the center of this program's window.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getCentralRegionSize--\">getCentralRegionSize()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns the size of the central region.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#getChannelCount--\">getChannelCount()</a></span> - Method in class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Returns the number of channels.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AsciiArtProgram.html#getCharacter-double-double-\">getCharacter(double, double)</a></span> - Method in class acm.program.<a href=\"acm/program/AsciiArtProgram.html\" title=\"class in acm.program\">AsciiArtProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AsciiArtProgram.html#getCharacter-int-int-\">getCharacter(int, int)</a></span> - Method in class acm.program.<a href=\"acm/program/AsciiArtProgram.html\" title=\"class in acm.program\">AsciiArtProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/XmlUtils.html#getChildByTagName-org.w3c.dom.Node-java.lang.String-boolean-\">getChildByTagName(Node, String, boolean)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\">XmlUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/XmlUtils.html#getChildByTagName-org.w3c.dom.Node-java.lang.String-\">getChildByTagName(Node, String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\">XmlUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/XmlUtils.html#getChildNode-org.w3c.dom.Node-java.lang.String-\">getChildNode(Node, String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\">XmlUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/XmlUtils.html#getChildNodes-org.w3c.dom.Node-java.lang.String...-\">getChildNodes(Node, String...)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\">XmlUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/XmlUtils.html#getChildrenByTagName-org.w3c.dom.Node-java.lang.String-\">getChildrenByTagName(Node, String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\">XmlUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/XmlUtils.html#getChildrenByTagNames-org.w3c.dom.Node-java.lang.String...-\">getChildrenByTagNames(Node, String...)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\">XmlUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/XmlUtils.html#getChildValue-org.w3c.dom.Node-java.lang.String-\">getChildValue(Node, String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\">XmlUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/XmlUtils.html#getChildValue-org.w3c.dom.Node-java.lang.String-boolean-\">getChildValue(Node, String, boolean)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\">XmlUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.html#getClasses-java.lang.Class-java.lang.String-\">getClasses(Class&lt;T&gt;, String)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#getClassNameWithoutPackage-java.lang.String-\">getClassNameWithoutPackage(String)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#getClassNameWithoutPackage-java.lang.Class-\">getClassNameWithoutPackage(Class&lt;?&gt;)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#getClassNameWithoutPackage-java.lang.Class-java.lang.reflect.Type-\">getClassNameWithoutPackage(Class&lt;?&gt;, Type)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.html#getClassPathFolders--\">getClassPathFolders()</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#getColor--\">getColor()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Returns the color used to display this object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JStringList.html#getColor-int-\">getColor(int)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JStringList.html\" title=\"class in acm.gui\">JStringList</a></dt>\n<dd>\n<div class=\"block\">Returns the color of the item in the list at the given index.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#getColumnCount--\">getColumnCount()</a></span> - Method in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Returns the number of columns in the table.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AsciiArtProgram.html#getColumns--\">getColumns()</a></span> - Method in class acm.program.<a href=\"acm/program/AsciiArtProgram.html\" title=\"class in acm.program\">AsciiArtProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#getColumns--\">getColumns()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/Request.html#getCommand--\">getCommand()</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\">Request</a></dt>\n<dd>\n<div class=\"block\">Returns this request's HTTP command verb.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ConsoleProgram.html#getComments--\">getComments()</a></span> - Method in class acm.program.<a href=\"acm/program/ConsoleProgram.html\" title=\"class in acm.program\">ConsoleProgram</a></dt>\n<dd>\n<div class=\"block\">Print all echoed comments from the input override file onscreen.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#getComponent--\">getComponent()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Returns the component in which this object is installed, or <code>null</code>\n if none exists.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/ConsoleModel.html#getConsole--\">getConsole()</a></span> - Method in interface acm.io.<a href=\"acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/StandardConsoleModel.html#getConsole--\">getConsole()</a></span> - Method in class acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SystemConsoleModel.html#getConsole--\">getConsole()</a></span> - Method in class acm.io.<a href=\"acm/io/SystemConsoleModel.html\" title=\"class in acm.io\">SystemConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#getConsole--\">getConsole()</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Returns the console associated with this program.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getConsole--\">getConsole()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns the console associated with this program.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#getConsoleModel--\">getConsoleModel()</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SystemConsoleModel.html#getConsoleModel--\">getConsoleModel()</a></span> - Method in class acm.io.<a href=\"acm/io/SystemConsoleModel.html\" title=\"class in acm.io\">SystemConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/ConsoleModel.html#getConsolePane--\">getConsolePane()</a></span> - Method in interface acm.io.<a href=\"acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/StandardConsoleModel.html#getConsolePane--\">getConsolePane()</a></span> - Method in class acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SystemConsoleModel.html#getConsolePane--\">getConsolePane()</a></span> - Method in class acm.io.<a href=\"acm/io/SystemConsoleModel.html\" title=\"class in acm.io\">SystemConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#getConstantValue-java.lang.Class-java.lang.String-\">getConstantValue(Class&lt;?&gt;, String)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#getConstantValue-java.lang.Class-java.lang.Object-java.lang.String-\">getConstantValue(Class&lt;?&gt;, Object, String)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#getConstantValue-java.lang.String-java.lang.String-\">getConstantValue(String, String)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#getConstantValueBoolean-java.lang.Class-java.lang.Object-java.lang.String-\">getConstantValueBoolean(Class&lt;?&gt;, Object, String)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#getConstantValueBoolean-java.lang.Class-java.lang.String-\">getConstantValueBoolean(Class&lt;?&gt;, String)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#getConstantValueBoolean-java.lang.String-java.lang.String-\">getConstantValueBoolean(String, String)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#getConstantValueDouble-java.lang.Class-java.lang.Object-java.lang.String-\">getConstantValueDouble(Class&lt;?&gt;, Object, String)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#getConstantValueDouble-java.lang.Class-java.lang.String-\">getConstantValueDouble(Class&lt;?&gt;, String)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#getConstantValueDouble-java.lang.String-java.lang.String-\">getConstantValueDouble(String, String)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#getConstantValueInt-java.lang.Class-java.lang.Object-java.lang.String-\">getConstantValueInt(Class&lt;?&gt;, Object, String)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#getConstantValueInt-java.lang.Class-java.lang.String-\">getConstantValueInt(Class&lt;?&gt;, String)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#getConstantValueInt-java.lang.String-java.lang.String-\">getConstantValueInt(String, String)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#getConstraints-java.awt.Component-\">getConstraints(Component)</a></span> - Method in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Returns a copy of the constraints requested for the specified component.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#getCornerColor-java.awt.Point-\">getCornerColor(Point)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#getCornerColor-int-int-\">getCornerColor(int, int)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/IOUtils.html#getCurrentDirectory--\">getCurrentDirectory()</a></span> - Static method in class stanford.cs106.io.<a href=\"stanford/cs106/io/IOUtils.html\" title=\"class in stanford.cs106.io\">IOUtils</a></dt>\n<dd>\n<div class=\"block\">The directory in which the current app is running.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/Stanford.html#getCurrentQuarter--\">getCurrentQuarter()</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/Stanford.html\" title=\"class in stanford.cs106.util\">Stanford</a></dt>\n<dd>\n<div class=\"block\">Returns a quarter string such as \"15sp\" for Spring 2015.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#getData--\">getData()</a></span> - Method in class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Returns the byte array containing the sound data.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#getDefaultArgs-java.lang.reflect.Method-\">getDefaultArgs(Method)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#getDefaultFill--\">getDefaultFill()</a></span> - Method in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Returns the default fill parameter for components in the table.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#getDefaultValue-java.lang.Class-\">getDefaultValue(Class&lt;?&gt;)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#getDescendent-java.awt.Container-java.lang.Class-\">getDescendent(Container, Class&lt;JC&gt;)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>\n<div class=\"block\">Returns first found descendent of given type within the given container; null if not found.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#getDescendents-java.awt.Container-java.lang.Class-\">getDescendents(Container, Class&lt;JC&gt;)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLabel.html#getDescent--\">getDescent()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLabel.html\" title=\"class in acm.graphics\">GLabel</a></dt>\n<dd>\n<div class=\"block\">Returns the distance this string descends below the baseline.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/FileChooserFilter.html#getDescription--\">getDescription()</a></span> - Method in class acm.util.<a href=\"acm/util/FileChooserFilter.html\" title=\"class in acm.util\">FileChooserFilter</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/ExtensionFileFilter.html#getDescription--\">getDescription()</a></span> - Method in class stanford.cs106.io.<a href=\"stanford/cs106/io/ExtensionFileFilter.html\" title=\"class in stanford.cs106.io\">ExtensionFileFilter</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/ComparisonFailureEnhanced.html#getDetails--\">getDetails()</a></span> - Method in error stanford.cs106.junit.<a href=\"stanford/cs106/junit/ComparisonFailureEnhanced.html\" title=\"class in stanford.cs106.junit\">ComparisonFailureEnhanced</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#getDialog--\">getDialog()</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Returns the dialog used for user interaction.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getDialog--\">getDialog()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns the dialog used for user interaction.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Karel.html#getDirection--\">getDirection()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelInterface.html#getDirection--\">getDirection()</a></span> - Method in interface stanford.karel.<a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/FileChooserFilter.html#getDirectory--\">getDirectory()</a></span> - Method in class acm.util.<a href=\"acm/util/FileChooserFilter.html\" title=\"class in acm.util\">FileChooserFilter</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getDouble--\">getDouble()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Reads and returns a double-precision value from the user.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getDouble-double-double-\">getDouble(double, double)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Reads and returns a double-precision value from the user, which is\n constrained to be within the specified inclusive range.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getDouble-java.lang.String-\">getDouble(String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Prompts the user to enter an double-precision number, which is then\n returned as the value of this method.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getDouble-java.lang.String-double-double-\">getDouble(String, double, double)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Prompts the user to enter an double-precision number, which is then returned\n as the value of this method.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#getDuration--\">getDuration()</a></span> - Method in class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Returns the duration of a sound (in seconds).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/Note.html#getDuration--\">getDuration()</a></span> - Method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\">Note</a></dt>\n<dd>\n<div class=\"block\">Returns this Note's duration in seconds.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/StdAudio.AudioEvent.html#getDuration--\">getDuration()</a></span> - Method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/StdAudio.AudioEvent.html\" title=\"class in stanford.cs106.audio\">StdAudio.AudioEvent</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#getEcho--\">getEcho()</a></span> - Static method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#getEditMode--\">getEditMode()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelControlPanel.html#getEditor--\">getEditor()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelControlPanel.html\" title=\"class in stanford.karel\">KarelControlPanel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#getElement-int-\">getElement(int)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Returns the graphical object at the specified index, numbering from back\n to front in the the <i>z</i> dimension.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvasInterface.html#getElement-int-\">getElement(int)</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCompound.html#getElement-int-\">getElement(int)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCompound.html\" title=\"class in acm.graphics\">GCompound</a></dt>\n<dd>\n<div class=\"block\">Returns the graphical object at the specified index, numbering from back\n to front in the the <i>z</i> dimension.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GContainer.html#getElement-int-\">getElement(int)</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a></dt>\n<dd>\n<div class=\"block\">Returns the graphical object at the specified index, numbering from back\n to front in the the <i>z</i> dimension.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#getElement-int-\">getElement(int)</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Returns the graphical object at the specified index, numbering from back\n to front in the the <i>z</i> dimension.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#getElement-int-\">getElement(int)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#getElementAt-double-double-\">getElementAt(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Returns the topmost graphical object that contains the point\n (<code>x</code>, <code>y</code>), or <code>null</code> if no such\n object exists.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#getElementAt-double...-\">getElementAt(double...)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">This version of getElementAt accepts a variable number of coordinate\n pairs (in x1, y1, x2, y2, x3, y3, ...</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#getElementAt-acm.graphics.GPoint-\">getElementAt(GPoint)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Returns the topmost graphical object that contains the specified point,\n or <code>null</code> if no such object exists.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvasInterface.html#getElementAt-double-double-\">getElementAt(double, double)</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvasInterface.html#getElementAt-double...-\">getElementAt(double...)</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvasInterface.html#getElementAt-acm.graphics.GPoint-\">getElementAt(GPoint)</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCompound.html#getElementAt-double-double-\">getElementAt(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCompound.html\" title=\"class in acm.graphics\">GCompound</a></dt>\n<dd>\n<div class=\"block\">Returns the topmost graphical object that contains the point\n (<code>x</code>, <code>y</code>), or <code>null</code> if no such\n object exists.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCompound.html#getElementAt-acm.graphics.GPoint-\">getElementAt(GPoint)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCompound.html\" title=\"class in acm.graphics\">GCompound</a></dt>\n<dd>\n<div class=\"block\">Returns the topmost graphical object that contains the specified point,\n or <code>null</code> if no such object exists.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GContainer.html#getElementAt-double-double-\">getElementAt(double, double)</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a></dt>\n<dd>\n<div class=\"block\">Returns the topmost graphical object that contains the point\n (<code>x</code>, <code>y</code>), or <code>null</code> if no such\n object exists.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GContainer.html#getElementAt-acm.graphics.GPoint-\">getElementAt(GPoint)</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a></dt>\n<dd>\n<div class=\"block\">Returns the topmost graphical object that contains the specified point,\n or <code>null</code> if no such object exists.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#getElementAt-double-double-\">getElementAt(double, double)</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Returns the topmost graphical object that contains the point (\n <code>x</code>, <code>y</code>), or <code>null</code> if no such object\n exists.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#getElementAt-double...-\">getElementAt(double...)</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">This version of getElementAt accepts a variable number of coordinate\n pairs (in x1, y1, x2, y2, x3, y3, ...</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#getElementAt-acm.graphics.GPoint-\">getElementAt(GPoint)</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Returns the topmost graphical object that contains the specified point,\n or <code>null</code> if no such object exists.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#getElementAt-double-double-\">getElementAt(double, double)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#getElementAt-double...-\">getElementAt(double...)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#getElementAt-acm.graphics.GPoint-\">getElementAt(GPoint)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/XmlUtils.html#getElementByTagName-org.w3c.dom.Document-java.lang.String-\">getElementByTagName(Document, String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\">XmlUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#getElementCount--\">getElementCount()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Returns the number of graphical objects stored in this <code>GCanvas</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvasInterface.html#getElementCount--\">getElementCount()</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCompound.html#getElementCount--\">getElementCount()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCompound.html\" title=\"class in acm.graphics\">GCompound</a></dt>\n<dd>\n<div class=\"block\">Returns the number of graphical objects stored in this container.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GContainer.html#getElementCount--\">getElementCount()</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a></dt>\n<dd>\n<div class=\"block\">Returns the number of graphical objects stored in this <code>GCanvas</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#getElementCount--\">getElementCount()</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Returns the number of graphical objects stored in this\n <code>GCanvas</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#getElementCount--\">getElementCount()</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLine.html#getEndPoint--\">getEndPoint()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLine.html\" title=\"class in acm.graphics\">GLine</a></dt>\n<dd>\n<div class=\"block\">Returns the end point of the line as a <code>GPoint</code> object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#getErrorColor--\">getErrorColor()</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/NetworkManager.html#getErrorEvent--\">getErrorEvent()</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/NetworkManager.html\" title=\"class in stanford.cs106.net\">NetworkManager</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#getErrorStyle--\">getErrorStyle()</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/DoubleField.html#getExceptionOnError--\">getExceptionOnError()</a></span> - Method in class acm.gui.<a href=\"acm/gui/DoubleField.html\" title=\"class in acm.gui\">DoubleField</a></dt>\n<dd>\n<div class=\"block\">Returns the state of the error-handling flag.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/IntField.html#getExceptionOnError--\">getExceptionOnError()</a></span> - Method in class acm.gui.<a href=\"acm/gui/IntField.html\" title=\"class in acm.gui\">IntField</a></dt>\n<dd>\n<div class=\"block\">Returns the state of the error-handling flag.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#getExceptionOnError--\">getExceptionOnError()</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/ComparisonFailureEnhanced.html#getExpected--\">getExpected()</a></span> - Method in error stanford.cs106.junit.<a href=\"stanford/cs106/junit/ComparisonFailureEnhanced.html\" title=\"class in stanford.cs106.junit\">ComparisonFailureEnhanced</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/IOUtils.html#getExpectedInputDirectory--\">getExpectedInputDirectory()</a></span> - Static method in class stanford.cs106.io.<a href=\"stanford/cs106/io/IOUtils.html\" title=\"class in stanford.cs106.io\">IOUtils</a></dt>\n<dd>\n<div class=\"block\">Returns a directory that is likely to contain expected input files for\n a running Stanford lib project.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/IOUtils.html#getExpectedOutputDirectory--\">getExpectedOutputDirectory()</a></span> - Static method in class stanford.cs106.io.<a href=\"stanford/cs106/io/IOUtils.html\" title=\"class in stanford.cs106.io\">IOUtils</a></dt>\n<dd>\n<div class=\"block\">Returns a directory that is likely to contain expected output files for\n a running Stanford lib project.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/SplClip.html#getExtension-java.lang.String-\">getExtension(String)</a></span> - Static method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/SplClip.html\" title=\"class in stanford.cs106.audio\">SplClip</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/IOUtils.html#getExtension-java.io.File-\">getExtension(File)</a></span> - Static method in class stanford.cs106.io.<a href=\"stanford/cs106/io/IOUtils.html\" title=\"class in stanford.cs106.io\">IOUtils</a></dt>\n<dd>\n<div class=\"block\">The file name extension (such as mp3, doc, txt) of the given file's name.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/IOUtils.html#getExtension-java.lang.String-\">getExtension(String)</a></span> - Static method in class stanford.cs106.io.<a href=\"stanford/cs106/io/IOUtils.html\" title=\"class in stanford.cs106.io\">IOUtils</a></dt>\n<dd>\n<div class=\"block\">The file name extension (such as mp3, doc, txt) of the given file's name.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#getExtensionFileFilter-java.lang.String-java.lang.String...-\">getExtensionFileFilter(String, String...)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#getField-java.lang.Class-java.lang.String-\">getField(Class&lt;?&gt;, String)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#getField-java.lang.Class-java.lang.String-boolean-\">getField(Class&lt;?&gt;, String, boolean)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.html#getFieldNames-java.lang.Class-\">getFieldNames(Class&lt;?&gt;)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dt>\n<dd>\n<div class=\"block\">Returns a set of names of all fields in the given class.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.html#getFields-java.lang.Class-java.lang.Class-\">getFields(Class&lt;?&gt;, Class&lt;?&gt;)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.html#getFields-java.lang.Class-java.lang.Class-java.lang.Class-\">getFields(Class&lt;?&gt;, Class&lt;?&gt;, Class&lt;?&gt;)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.html#getFields-java.lang.Class-java.lang.Class-java.lang.Class-boolean-\">getFields(Class&lt;?&gt;, Class&lt;?&gt;, Class&lt;?&gt;, boolean)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.html#getFields-java.lang.Class-java.util.Set-java.lang.Class-boolean-\">getFields(Class&lt;?&gt;, Set&lt;Class&lt;?&gt;&gt;, Class&lt;?&gt;, boolean)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#getFieldToMatchRegex-java.lang.Class-java.lang.String-\">getFieldToMatchRegex(Class&lt;?&gt;, String)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#getFieldToMatchRegex-java.lang.Class-java.lang.String-boolean-\">getFieldToMatchRegex(Class&lt;?&gt;, String, boolean)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.html#getFieldTypes-java.lang.Class-\">getFieldTypes(Class&lt;?&gt;)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dt>\n<dd>\n<div class=\"block\">Returns a set of types of all fields in the given class.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#getFieldValue-java.lang.Object-java.lang.reflect.Field-\">getFieldValue(Object, Field)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#getFieldValue-java.lang.Object-java.lang.String-\">getFieldValue(Object, String)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/IOUtils.html#getFileName-java.lang.String-\">getFileName(String)</a></span> - Static method in class stanford.cs106.io.<a href=\"stanford/cs106/io/IOUtils.html\" title=\"class in stanford.cs106.io\">IOUtils</a></dt>\n<dd>\n<div class=\"block\">Strips folders from file's name.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AsciiArtProgram.html#getFillCharacter--\">getFillCharacter()</a></span> - Method in class acm.program.<a href=\"acm/program/AsciiArtProgram.html\" title=\"class in acm.program\">AsciiArtProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GOval.html#getFillColor--\">getFillColor()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GOval.html\" title=\"class in acm.graphics\">GOval</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.html#getFirstClassPathFolder--\">getFirstClassPathFolder()</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#getFirstFieldValueOfType-java.lang.Class-java.lang.Object-java.lang.Class-\">getFirstFieldValueOfType(Class&lt;?&gt;, Object, Class&lt;?&gt;)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/IOUtils.html#getFolder-java.lang.String-\">getFolder(String)</a></span> - Static method in class stanford.cs106.io.<a href=\"stanford/cs106/io/IOUtils.html\" title=\"class in stanford.cs106.io\">IOUtils</a></dt>\n<dd>\n<div class=\"block\">The folder name of the given file path.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvasInterface.html#getFont--\">getFont()</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLabel.html#getFont--\">getFont()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLabel.html\" title=\"class in acm.graphics\">GLabel</a></dt>\n<dd>\n<div class=\"block\">Returns the font in which the <code>GLabel</code> is displayed.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AbstractConsoleProgram.html#getFont--\">getFont()</a></span> - Method in class acm.program.<a href=\"acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></dt>\n<dd>\n<div class=\"block\">Returns the font currently used in the console.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#getFont--\">getFont()</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.html#getFontFamilies--\">getFontFamilies()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.html#getFontFamilyList--\">getFontFamilyList()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.html#getFontFamilyPanel--\">getFontFamilyPanel()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.html#getFontFamilyTextField--\">getFontFamilyTextField()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLabel.html#getFontMetrics--\">getFontMetrics()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLabel.html\" title=\"class in acm.graphics\">GLabel</a></dt>\n<dd>\n<div class=\"block\">Returns a <code>FontMetrics</code> object describing the dimensions of this string.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.html#getFontSizeList--\">getFontSizeList()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.html#getFontSizePanel--\">getFontSizePanel()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.html#getFontSizeTextField--\">getFontSizeTextField()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.html#getFontStyleList--\">getFontStyleList()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.html#getFontStyleNames--\">getFontStyleNames()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.html#getFontStylePanel--\">getFontStylePanel()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.html#getFontStyleTextField--\">getFontStyleTextField()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AsciiArtProgram.html#getForegroundCharacter--\">getForegroundCharacter()</a></span> - Method in class acm.program.<a href=\"acm/program/AsciiArtProgram.html\" title=\"class in acm.program\">AsciiArtProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AsciiArtProgram.html#getForegroundColor--\">getForegroundColor()</a></span> - Method in class acm.program.<a href=\"acm/program/AsciiArtProgram.html\" title=\"class in acm.program\">AsciiArtProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/DoubleField.html#getFormat--\">getFormat()</a></span> - Method in class acm.gui.<a href=\"acm/gui/DoubleField.html\" title=\"class in acm.gui\">DoubleField</a></dt>\n<dd>\n<div class=\"block\">Returns the format currently in use for this field, or\n <code>null</code> if no format has been set.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/IntField.html#getFormat--\">getFormat()</a></span> - Method in class acm.gui.<a href=\"acm/gui/IntField.html\" title=\"class in acm.gui\">IntField</a></dt>\n<dd>\n<div class=\"block\">Returns the format currently in use for this field, or\n <code>null</code> if no format has been set.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#getFormat--\">getFormat()</a></span> - Method in class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Returns the format in which the sound is stored.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#getFrameCount--\">getFrameCount()</a></span> - Method in class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Returns the number of frames in a sound.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#getFrameIndex--\">getFrameIndex()</a></span> - Method in class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Returns the current frame index in the sound.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#getFrameRate--\">getFrameRate()</a></span> - Method in class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Returns the frame rate of the sound.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#getGCanvas--\">getGCanvas()</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Returns the <code>GCanvas</code> object used by this program.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgramInterface.html#getGCanvas--\">getGCanvas()</a></span> - Method in interface acm.program.<a href=\"acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#getGCanvas--\">getGCanvas()</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GImage.html#getGreen-int-\">getGreen(int)</a></span> - Static method in class acm.graphics.<a href=\"acm/graphics/GImage.html\" title=\"class in acm.graphics\">GImage</a></dt>\n<dd>\n<div class=\"block\">Returns the green component from an RGB value.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvasInterface.html#getHeight--\">getHeight()</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLabel.html#getHeight--\">getHeight()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLabel.html\" title=\"class in acm.graphics\">GLabel</a></dt>\n<dd>\n<div class=\"block\">Returns the height of this string, as it appears on the display.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#getHeight--\">getHeight()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Returns the height of this object, which is defined to be\n the height of the bounding box.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GRectangle.html#getHeight--\">getHeight()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></dt>\n<dd>\n<div class=\"block\">Returns the height of this <code>GDimension</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#getHeight--\">getHeight()</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Returns the height of the central region.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#getHeight--\">getHeight()</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getHeight--\">getHeight()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns the height of the central region.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#getHeight-java.lang.String-\">getHeight(String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#getHeight--\">getHeight()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/MediaTools.html#getHexInputStream-java.lang.String:A-\">getHexInputStream(String[])</a></span> - Static method in class acm.util.<a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></dt>\n<dd>\n<div class=\"block\">Returns an input stream whose bytes come from the string array\n <code>hex</code>, in which the elements consist of continuous bytes of\n hex data.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#getHgap--\">getHgap()</a></span> - Method in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Returns the horizontal gap between components.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#getHorizontalAlignment--\">getHorizontalAlignment()</a></span> - Method in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Returns the horizontal alignment for the table.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/NetworkManager.html#getHostName--\">getHostName()</a></span> - Static method in class stanford.cs106.net.<a href=\"stanford/cs106/net/NetworkManager.html\" title=\"class in stanford.cs106.net\">NetworkManager</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GImage.html#getImage--\">getImage()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GImage.html\" title=\"class in acm.graphics\">GImage</a></dt>\n<dd>\n<div class=\"block\">Returns the image stored inside this <code>GImage</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/MediaTools.html#getImageObserver--\">getImageObserver()</a></span> - Static method in class acm.util.<a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></dt>\n<dd>\n<div class=\"block\">This method returns a new lightweight component suitable as an\n <code>imageObserver</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#getInputColor--\">getInputColor()</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#getInputModel--\">getInputModel()</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Returns the <code>IOModel</code> used for program input, which will\n typically be either the default <code>IOConsole</code> or <code>IODialog</code> object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getInputModel--\">getInputModel()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns the <code>IOModel</code> used for program input, which will\n ordinarily be the console.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/ConsoleModel.html#getInputScript--\">getInputScript()</a></span> - Method in interface acm.io.<a href=\"acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#getInputScript--\">getInputScript()</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/StandardConsoleModel.html#getInputScript--\">getInputScript()</a></span> - Method in class acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SystemConsoleModel.html#getInputScript--\">getInputScript()</a></span> - Method in class acm.io.<a href=\"acm/io/SystemConsoleModel.html\" title=\"class in acm.io\">SystemConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#getInputStyle--\">getInputStyle()</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/RandomGenerator.html#getInstance--\">getInstance()</a></span> - Static method in class acm.util.<a href=\"acm/util/RandomGenerator.html\" title=\"class in acm.util\">RandomGenerator</a></dt>\n<dd>\n<div class=\"block\">Returns a <code>RandomGenerator</code> instance that can be shared among\n several classes.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/BackEndServer.html#getInstance--\">getInstance()</a></span> - Static method in class stanford.cs106.net.<a href=\"stanford/cs106/net/BackEndServer.html\" title=\"class in stanford.cs106.net\">BackEndServer</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/BackEndServer.html#getInstance-int-\">getInstance(int)</a></span> - Static method in class stanford.cs106.net.<a href=\"stanford/cs106/net/BackEndServer.html\" title=\"class in stanford.cs106.net\">BackEndServer</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/RandomGenerator.html#getInstance--\">getInstance()</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/RandomGenerator.html\" title=\"class in stanford.cs106.util\">RandomGenerator</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getInteger--\">getInteger()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Reads and returns an integer value from the user.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getInteger-int-int-\">getInteger(int, int)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Reads and returns an integer value from the user, which is constrained to\n be within the specified inclusive range.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getInteger-java.lang.String-\">getInteger(String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Prompts the user to enter an integer, which is then returned as the value\n of this method.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getInteger-java.lang.String-int-int-\">getInteger(String, int, int)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Prompts the user to enter an integer, which is then returned as the value\n of this method.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/NetworkManager.html#getIpAddress--\">getIpAddress()</a></span> - Static method in class stanford.cs106.net.<a href=\"stanford/cs106/net/NetworkManager.html\" title=\"class in stanford.cs106.net\">NetworkManager</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/NetworkManager.html#getIpAddresses--\">getIpAddresses()</a></span> - Static method in class stanford.cs106.net.<a href=\"stanford/cs106/net/NetworkManager.html\" title=\"class in stanford.cs106.net\">NetworkManager</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JStringList.html#getItem-int-\">getItem(int)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JStringList.html\" title=\"class in acm.gui\">JStringList</a></dt>\n<dd>\n<div class=\"block\">Returns the text of the item in the list at the given index.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JStringList.html#getItemCount--\">getItemCount()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JStringList.html\" title=\"class in acm.gui\">JStringList</a></dt>\n<dd>\n<div class=\"block\">Returns the number of items in the list.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/JComboGroupBox.html#getItemText-int-\">getItemText(int)</a></span> - Method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/JComboGroupBox.html\" title=\"class in stanford.cs106.gui\">JComboGroupBox</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getJFrame--\">getJFrame()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns the Java Swing window frame that encloses this program.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.html#getKarel--\">getKarel()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#getKarel--\">getKarel()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#getKarel-int-\">getKarel(int)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#getKarelCount--\">getKarelCount()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#getKarelOnSquare-int-int-\">getKarelOnSquare(int, int)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLabel.html#getLabel--\">getLabel()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLabel.html\" title=\"class in acm.graphics\">GLabel</a></dt>\n<dd>\n<div class=\"block\">Returns the string displayed by this object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#getLayout--\">getLayout()</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Gets the layout manager for the central region of the content pane.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getLayout--\">getLayout()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Gets the layout manager for the central region of the content pane.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#getLayoutAlignmentX-java.awt.Container-\">getLayoutAlignmentX(Container)</a></span> - Method in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Returns the alignment along the <i>x</i>-axis as described in the\n <code>LayoutManager2</code> interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#getLayoutAlignmentY-java.awt.Container-\">getLayoutAlignmentY(Container)</a></span> - Method in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Returns the alignment along the <i>y</i>-axis as described in the\n <code>LayoutManager2</code> interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/ConsoleModel.html#getLength--\">getLength()</a></span> - Method in interface acm.io.<a href=\"acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/StandardConsoleModel.html#getLength--\">getLength()</a></span> - Method in class acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SystemConsoleModel.html#getLength--\">getLength()</a></span> - Method in class acm.io.<a href=\"acm/io/SystemConsoleModel.html\" title=\"class in acm.io\">SystemConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getLine--\">getLine()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Reads and returns a line of input from the console.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getLine-java.lang.String-\">getLine(String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Prompts the user for a line of input.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/ExceptionUtils.html#getLineNumber-java.lang.Throwable-java.lang.String-\">getLineNumber(Throwable, String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/ExceptionUtils.html\" title=\"class in stanford.cs106.util\">ExceptionUtils</a></dt>\n<dd>\n<div class=\"block\">The top-level line number within the given class name on which\n this exception occurred.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/ExceptionUtils.html#getLineNumber-java.lang.Throwable-java.lang.String-java.lang.String-\">getLineNumber(Throwable, String, String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/ExceptionUtils.html\" title=\"class in stanford.cs106.util\">ExceptionUtils</a></dt>\n<dd>\n<div class=\"block\">The top-level line number within the given class and method name\n on which this exception occurred in the given method.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#getLineWidth--\">getLineWidth()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Returns the thickness of lines drawn on this shape.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCompound.html#getLocalPoint-double-double-\">getLocalPoint(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCompound.html\" title=\"class in acm.graphics\">GCompound</a></dt>\n<dd>\n<div class=\"block\">Converts the specified point on the enclosing canvas to the\n corresponding point in the space of this compound.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCompound.html#getLocalPoint-acm.graphics.GPoint-\">getLocalPoint(GPoint)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCompound.html\" title=\"class in acm.graphics\">GCompound</a></dt>\n<dd>\n<div class=\"block\">Converts the location of the specified point on the enclosing canvas\n to the corresponding point in the space of this compound.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#getLocation--\">getLocation()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Returns the location of this object as a <code>GPoint</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GPoint.html#getLocation--\">getLocation()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a></dt>\n<dd>\n<div class=\"block\">Returns a new <code>GPoint</code> whose coordinates are the same as this\n one.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GRectangle.html#getLocation--\">getLocation()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></dt>\n<dd>\n<div class=\"block\">Returns a new <code>GPoint</code> with the location of the rectangle.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Karel.html#getLocation--\">getLocation()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelInterface.html#getLocation--\">getLocation()</a></span> - Method in interface stanford.karel.<a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessKarel.html#getLocationsVisited--\">getLocationsVisited()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/HeadlessKarel.html\" title=\"class in stanford.karel\">HeadlessKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#getLook--\">getLook()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#getMacMenuBarFlag--\">getMacMenuBarFlag()</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Retrieves the setting of the Mac menu bar flag.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getMainThread--\">getMainThread()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns the thread that is running the main program.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#getMatrix--\">getMatrix()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Returns the transformation matrix for this object, including any scaling and rotation done to it.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#getMenuBar--\">getMenuBar()</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getMenuBar--\">getMenuBar()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns the menu bar associated with this program.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#getMenuItem-java.lang.String-\">getMenuItem(String)</a></span> - Method in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/ComparisonFailureEnhanced.html#getMessage--\">getMessage()</a></span> - Method in error stanford.cs106.junit.<a href=\"stanford/cs106/junit/ComparisonFailureEnhanced.html\" title=\"class in stanford.cs106.junit\">ComparisonFailureEnhanced</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#getMethod-java.lang.Class-java.lang.String-\">getMethod(Class&lt;?&gt;, String)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/ExceptionUtils.html#getMethodName-java.lang.Throwable-java.lang.String-\">getMethodName(Throwable, String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/ExceptionUtils.html\" title=\"class in stanford.cs106.util\">ExceptionUtils</a></dt>\n<dd>\n<div class=\"block\">The current method name within the given class name that is\n highest on the current method call stack.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.html#getMethodNames-java.lang.Class-\">getMethodNames(Class&lt;?&gt;)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dt>\n<dd>\n<div class=\"block\">Returns a set of names of all methods in the given class.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#getMinimumSize--\">getMinimumSize()</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JStringList.html#getModel--\">getModel()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JStringList.html\" title=\"class in acm.gui\">JStringList</a></dt>\n<dd>\n<div class=\"block\">Returns a reference to the underlying data model of this list.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#getMonitor--\">getMonitor()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#getName--\">getName()</a></span> - Method in class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Returns the name of the sound, which is typically the file name from which it\n was read.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Event.html#getName--\">getName()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Event.html\" title=\"class in stanford.karel\">Event</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#getNativeArcFlag--\">getNativeArcFlag()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Returns the current setting of the native-arc flag as described in\n <a href=\"./acm/graphics/#setNativeArcFlag(boolean)\"><code>setNativeArcFlag</code></a>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.html#getNonPrivateConstructors-java.lang.Class-\">getNonPrivateConstructors(Class&lt;?&gt;)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dt>\n<dd>\n<div class=\"block\">Returns a set of names of all methods in the given class that are not private.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.html#getNonPrivateFieldNames-java.lang.String-\">getNonPrivateFieldNames(String)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dt>\n<dd>\n<div class=\"block\">Returns a set of names of all fields in class with the given name that are not private.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.html#getNonPrivateFieldNames-java.lang.String-boolean-\">getNonPrivateFieldNames(String, boolean)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.html#getNonPrivateFieldNames-java.lang.Class-\">getNonPrivateFieldNames(Class&lt;?&gt;)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dt>\n<dd>\n<div class=\"block\">Returns a set of names of all fields in the given class that are not private.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.html#getNonPrivateFieldNames-java.lang.Class-boolean-\">getNonPrivateFieldNames(Class&lt;?&gt;, boolean)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.html#getNonPrivateMethodNames-java.lang.Class-\">getNonPrivateMethodNames(Class&lt;?&gt;)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.html#getNonPrivateMethodNames-java.lang.Class-boolean-\">getNonPrivateMethodNames(Class&lt;?&gt;, boolean)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dt>\n<dd>\n<div class=\"block\">Returns a set of names of all methods in the given class that are not private.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.html#getNonPrivateMethods-java.lang.Class-\">getNonPrivateMethods(Class&lt;?&gt;)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dt>\n<dd>\n<div class=\"block\">Returns a set of names of all methods in the given class that are not private.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/StdAudio.AudioEvent.html#getNote--\">getNote()</a></span> - Method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/StdAudio.AudioEvent.html\" title=\"class in stanford.cs106.audio\">StdAudio.AudioEvent</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#getNumberSquaresFlag--\">getNumberSquaresFlag()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#getObjectColor--\">getObjectColor()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">This method returns the color set for this specific object, which may\n be <code>null</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/Note.html#getOctave--\">getOctave()</a></span> - Method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\">Note</a></dt>\n<dd>\n<div class=\"block\">Returns this Note's octave.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#getOSG--\">getOSG()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Returns the graphical pen for drawing on this canvas.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/StandardConsoleModel.html#getOutputColor--\">getOutputColor()</a></span> - Method in class acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getOutputColor--\">getOutputColor()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns the current output color used to display output on the console.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#getOutputModel--\">getOutputModel()</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Returns the <code>IOModel</code> used for program output, which will\n typically be either the default <code>IOConsole</code> or <code>IODialog</code> object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getOutputModel--\">getOutputModel()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns the <code>IOModel</code> used for program output, which will\n ordinarily be the console.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/Request.html#getParam-java.lang.String-\">getParam(String)</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\">Request</a></dt>\n<dd>\n<div class=\"block\">Returns the value of this request's query parameter with the given name.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#getParameter-java.lang.String-\">getParameter(String)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Returns the parameter associated with name.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getParameter-java.lang.String-\">getParameter(String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns the parameter associated with name.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#getParameterTable--\">getParameterTable()</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Retrieves the parameter table.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getParameterTable--\">getParameterTable()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Retrieves the parameter table.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/Request.html#getParams--\">getParams()</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\">Request</a></dt>\n<dd>\n<div class=\"block\">Returns all of this request's query parameters as a map.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#getParent--\">getParent()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Returns the parent of this object, which is the canvas or compound object in\n which it is enclosed.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#getPathname--\">getPathname()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#getPathName--\">getPathName()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/FileChooserFilter.html#getPattern--\">getPattern()</a></span> - Method in class acm.util.<a href=\"acm/util/FileChooserFilter.html\" title=\"class in acm.util\">FileChooserFilter</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/ProcessUtils.html#getPID--\">getPID()</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/ProcessUtils.html\" title=\"class in stanford.cs106.util\">ProcessUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/Note.html#getPitch--\">getPitch()</a></span> - Method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\">Note</a></dt>\n<dd>\n<div class=\"block\">Returns this Note's pitch value of A-G or R for a rest.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GImage.html#getPixelArray--\">getPixelArray()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GImage.html\" title=\"class in acm.graphics\">GImage</a></dt>\n<dd>\n<div class=\"block\">Returns a two-dimensional array of pixel values from the stored image.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/MediaTools.html#getPixelArray-java.awt.Image-\">getPixelArray(Image)</a></span> - Static method in class acm.util.<a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></dt>\n<dd>\n<div class=\"block\">Returns a two-dimensional array of the pixels in the image.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#getPixelsAsString--\">getPixelsAsString()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Returns a Base64-encoded representation of the pixel data of this image.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JPlaceholderTextField.html#getPlaceholder--\">getPlaceholder()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JPlaceholderTextField.html\" title=\"class in acm.gui\">JPlaceholderTextField</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/BackEndServer.html#getPort--\">getPort()</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/BackEndServer.html\" title=\"class in stanford.cs106.net\">BackEndServer</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/NetworkManager.html#getPort--\">getPort()</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/NetworkManager.html\" title=\"class in stanford.cs106.net\">NetworkManager</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/SimpleServer.html#getPort--\">getPort()</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/SimpleServer.html\" title=\"class in stanford.cs106.net\">SimpleServer</a></dt>\n<dd>\n<div class=\"block\">Returns the port on which this server will listen.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/DoubleField.html#getPreferredSize--\">getPreferredSize()</a></span> - Method in class acm.gui.<a href=\"acm/gui/DoubleField.html\" title=\"class in acm.gui\">DoubleField</a></dt>\n<dd>\n<div class=\"block\">Overrides the standard definition to impose a target size.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/IntField.html#getPreferredSize--\">getPreferredSize()</a></span> - Method in class acm.gui.<a href=\"acm/gui/IntField.html\" title=\"class in acm.gui\">IntField</a></dt>\n<dd>\n<div class=\"block\">Overrides the standard definition to impose a target size.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#getPreferredSize--\">getPreferredSize()</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#getPreferredSize--\">getPreferredSize()</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Returns the preferred size of the content pane.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getPreferredSize--\">getPreferredSize()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns the preferred size of the content pane.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelControlPanel.html#getPreferredSize--\">getPreferredSize()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelControlPanel.html\" title=\"class in stanford.karel\">KarelControlPanel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#getProgram--\">getProgram()</a></span> - Method in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>\n<div class=\"block\">Returns the <code>Program</code> object associated with this menu.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelControlPanel.html#getProgram--\">getProgram()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelControlPanel.html\" title=\"class in stanford.karel\">KarelControlPanel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/Request.html#getRaw-java.lang.String-\">getRaw(String)</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\">Request</a></dt>\n<dd>\n<div class=\"block\">Returns the value of this request's query parameter with the given name.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#getReader--\">getReader()</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#getReader--\">getReader()</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Returns a <code>BufferedReader</code> whose input comes from the console.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getReader--\">getReader()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns a <code>BufferedReader</code> whose input comes from the console.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getReal--\">getReal()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Reads and returns a double-precision value from the user.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getReal-double-double-\">getReal(double, double)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Reads and returns a double-precision value from the user, which is\n constrained to be within the specified inclusive range.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getReal-java.lang.String-\">getReal(String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Prompts the user to enter an double-precision number, which is then\n returned as the value of this method.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getReal-java.lang.String-double-double-\">getReal(String, double, double)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Prompts the user to enter an double-precision number, which is then returned\n as the value of this method.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/NetworkManager.html#getReceiveEvent--\">getReceiveEvent()</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/NetworkManager.html\" title=\"class in stanford.cs106.net\">NetworkManager</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GImage.html#getRed-int-\">getRed(int)</a></span> - Static method in class acm.graphics.<a href=\"acm/graphics/GImage.html\" title=\"class in acm.graphics\">GImage</a></dt>\n<dd>\n<div class=\"block\">Returns the red component from an RGB value.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#getRegionPanel-java.lang.String-\">getRegionPanel(String)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Gets the <code>JPanel</code> for the specified region.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getRegionPanel-java.lang.String-\">getRegionPanel(String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Gets the <code>JPanel</code> for the specified region.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#getRepaintFlag--\">getRepaintFlag()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelControlPanel.html#getResizer--\">getResizer()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelControlPanel.html\" title=\"class in stanford.karel\">KarelControlPanel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/PatchingClassLoader.html#getResource-java.lang.String-\">getResource(String)</a></span> - Method in class acm.util.<a href=\"acm/util/PatchingClassLoader.html\" title=\"class in acm.util\">PatchingClassLoader</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/PatchingClassLoader.html#getResourceAsStream-java.lang.String-\">getResourceAsStream(String)</a></span> - Method in class acm.util.<a href=\"acm/util/PatchingClassLoader.html\" title=\"class in acm.util\">PatchingClassLoader</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#getReuse--\">getReuse()</a></span> - Static method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#getRGB-int-int-\">getRGB(int, int)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Returns the RGB color stored at the given (x, y) pixel, or 0 if that pixel falls outside the bounds of this canvas.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#getRightX--\">getRightX()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Returns the rightmost x-coordinate of the object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getRightX--\">getRightX()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns the x-coordinate of the right edge of this program's window.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#getRowCount--\">getRowCount()</a></span> - Method in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Returns the number of rows in the table.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AsciiArtProgram.html#getRows--\">getRows()</a></span> - Method in class acm.program.<a href=\"acm/program/AsciiArtProgram.html\" title=\"class in acm.program\">AsciiArtProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#getRows--\">getRows()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#getSampleData--\">getSampleData()</a></span> - Method in class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Returns an array of integers corresponding to the samples in the primary\n channel of the sound.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#getSampleData-int-\">getSampleData(int)</a></span> - Method in class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Returns an array of integers corresponding to the samples in the specified\n channel, which is typically represented by <code>LEFT</code> or <code>RIGHT</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.html#getSamplePanel--\">getSamplePanel()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.html#getSampleTextField--\">getSampleTextField()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#getSaveFile--\">getSaveFile()</a></span> - Static method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessKarel.html#getSaveFile--\">getSaveFile()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/HeadlessKarel.html\" title=\"class in stanford.karel\">HeadlessKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getScreenHeight--\">getScreenHeight()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns the height of the screen in pixels.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getScreenSize--\">getScreenSize()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns the width x height of the screen in pixels.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getScreenWidth--\">getScreenWidth()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns the width of the screen in pixels.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/StandardConsoleModel.html#getScrollPane--\">getScrollPane()</a></span> - Method in class acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JButtonGroup.html#getSelectedButton--\">getSelectedButton()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JButtonGroup.html\" title=\"class in acm.gui\">JButtonGroup</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.html#getSelectedFont--\">getSelectedFont()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></dt>\n<dd>\n<div class=\"block\">Get the selected font.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.html#getSelectedFontFamily--\">getSelectedFontFamily()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></dt>\n<dd>\n<div class=\"block\">Get the family name of the selected font.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.html#getSelectedFontSize--\">getSelectedFontSize()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></dt>\n<dd>\n<div class=\"block\">Get the size of the selected font.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.html#getSelectedFontStyle--\">getSelectedFontStyle()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></dt>\n<dd>\n<div class=\"block\">Get the style of the selected font.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JListOptionPane.html#getSelectedIndex--\">getSelectedIndex()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JListOptionPane.html\" title=\"class in acm.gui\">JListOptionPane</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JButtonGroup.html#getSelectedText--\">getSelectedText()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JButtonGroup.html\" title=\"class in acm.gui\">JButtonGroup</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JListOptionPane.html#getSelectedValue--\">getSelectedValue()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JListOptionPane.html\" title=\"class in acm.gui\">JListOptionPane</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JStringList.html#getSelectedValue--\">getSelectedValue()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JStringList.html\" title=\"class in acm.gui\">JStringList</a></dt>\n<dd>\n<div class=\"block\">Returns the string that is currently selected in this list.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JStringList.html#getSelectedValueColor--\">getSelectedValueColor()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JStringList.html\" title=\"class in acm.gui\">JStringList</a></dt>\n<dd>\n<div class=\"block\">Returns the color of the string that is currently selected in this list.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JListOptionPane.html#getSelectedValues--\">getSelectedValues()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JListOptionPane.html\" title=\"class in acm.gui\">JListOptionPane</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvasInterface.html#getSize--\">getSize()</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GImage.html#getSize--\">getSize()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GImage.html\" title=\"class in acm.graphics\">GImage</a></dt>\n<dd>\n<div class=\"block\">Returns the size of this object as a <code>GDimension</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#getSize--\">getSize()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Returns the size of the bounding box for this object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GOval.html#getSize--\">getSize()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GOval.html\" title=\"class in acm.graphics\">GOval</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GRectangle.html#getSize--\">getSize()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></dt>\n<dd>\n<div class=\"block\">Returns a new <code>GDimension</code> object with the size of the <code>GRectangle</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#getSize--\">getSize()</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#getSize--\">getSize()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelControlPanel.html#getSpeed--\">getSpeed()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelControlPanel.html\" title=\"class in stanford.karel\">KarelControlPanel</a></dt>\n<dd>\n<div class=\"block\">This method is invoked when the KarelWorld class needs to get the\n simulation speed.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#getSquareSize--\">getSquareSize()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLine.html#getStartPoint--\">getStartPoint()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLine.html\" title=\"class in acm.graphics\">GLine</a></dt>\n<dd>\n<div class=\"block\">Returns the coordinates of the initial point in the line.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getStartupObject--\">getStartupObject()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Retrieves the object that was created when this program was started\n if that object is something other than a <code>Program</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/ComparisonFailureEnhanced.html#getStudent--\">getStudent()</a></span> - Method in error stanford.cs106.junit.<a href=\"stanford/cs106/junit/ComparisonFailureEnhanced.html\" title=\"class in stanford.cs106.junit\">ComparisonFailureEnhanced</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/SystemProperties.html#getSystemProperty-java.lang.String-\">getSystemProperty(String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/SystemProperties.html\" title=\"class in stanford.cs106.util\">SystemProperties</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/SystemProperties.html#getSystemPropertyBoolean-java.lang.String-\">getSystemPropertyBoolean(String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/SystemProperties.html\" title=\"class in stanford.cs106.util\">SystemProperties</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/SystemProperties.html#getSystemPropertyBoolean-java.lang.String-boolean-\">getSystemPropertyBoolean(String, boolean)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/SystemProperties.html\" title=\"class in stanford.cs106.util\">SystemProperties</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/SystemProperties.html#getSystemPropertyDouble-java.lang.String-\">getSystemPropertyDouble(String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/SystemProperties.html\" title=\"class in stanford.cs106.util\">SystemProperties</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/SystemProperties.html#getSystemPropertyDouble-java.lang.String-double-\">getSystemPropertyDouble(String, double)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/SystemProperties.html\" title=\"class in stanford.cs106.util\">SystemProperties</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/SystemProperties.html#getSystemPropertyInt-java.lang.String-\">getSystemPropertyInt(String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/SystemProperties.html\" title=\"class in stanford.cs106.util\">SystemProperties</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/SystemProperties.html#getSystemPropertyInt-java.lang.String-int-\">getSystemPropertyInt(String, int)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/SystemProperties.html\" title=\"class in stanford.cs106.util\">SystemProperties</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/IOUtils.html#getTempFolder--\">getTempFolder()</a></span> - Static method in class stanford.cs106.io.<a href=\"stanford/cs106/io/IOUtils.html\" title=\"class in stanford.cs106.io\">IOUtils</a></dt>\n<dd>\n<div class=\"block\">The full path to the server's temp directory, such as \"/tmp/foobar/\".</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/JUnitUtils.html#getTestCategory-java.lang.Class-java.lang.reflect.Method-\">getTestCategory(Class&lt;?&gt;, Method)</a></span> - Static method in class stanford.cs106.junit.<a href=\"stanford/cs106/junit/JUnitUtils.html\" title=\"class in stanford.cs106.junit\">JUnitUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/JUnitUtils.html#getTestCategory-java.lang.Class-java.lang.reflect.Method-boolean-\">getTestCategory(Class&lt;?&gt;, Method, boolean)</a></span> - Static method in class stanford.cs106.junit.<a href=\"stanford/cs106/junit/JUnitUtils.html\" title=\"class in stanford.cs106.junit\">JUnitUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/JUnitUtils.html#getTestFullName-java.lang.Class-java.lang.reflect.Method-\">getTestFullName(Class&lt;?&gt;, Method)</a></span> - Static method in class stanford.cs106.junit.<a href=\"stanford/cs106/junit/JUnitUtils.html\" title=\"class in stanford.cs106.junit\">JUnitUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLabel.html#getText--\">getText()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLabel.html\" title=\"class in acm.graphics\">GLabel</a></dt>\n<dd>\n<div class=\"block\">Returns the string displayed by this object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/ConsoleModel.html#getText--\">getText()</a></span> - Method in interface acm.io.<a href=\"acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/ConsoleModel.html#getText-int-int-\">getText(int, int)</a></span> - Method in interface acm.io.<a href=\"acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/StandardConsoleModel.html#getText--\">getText()</a></span> - Method in class acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/StandardConsoleModel.html#getText-int-int-\">getText(int, int)</a></span> - Method in class acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SystemConsoleModel.html#getText--\">getText()</a></span> - Method in class acm.io.<a href=\"acm/io/SystemConsoleModel.html\" title=\"class in acm.io\">SystemConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SystemConsoleModel.html#getText-int-int-\">getText(int, int)</a></span> - Method in class acm.io.<a href=\"acm/io/SystemConsoleModel.html\" title=\"class in acm.io\">SystemConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/XmlUtils.html#getTextContent-org.w3c.dom.Node-\">getTextContent(Node)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\">XmlUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/XmlUtils.html#getTextContent-org.w3c.dom.Node-boolean-\">getTextContent(Node, boolean)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\">XmlUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/ConsoleModel.html#getTextPane--\">getTextPane()</a></span> - Method in interface acm.io.<a href=\"acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/StandardConsoleModel.html#getTextPane--\">getTextPane()</a></span> - Method in class acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SystemConsoleModel.html#getTextPane--\">getTextPane()</a></span> - Method in class acm.io.<a href=\"acm/io/SystemConsoleModel.html\" title=\"class in acm.io\">SystemConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#getTitle--\">getTitle()</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Gets the title of this program.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#getTitle--\">getTitle()</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getTitle--\">getTitle()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Gets the title of this program.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramInterface.html#getTitle--\">getTitle()</a></span> - Method in interface acm.program.<a href=\"acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessKarel.html#getTitle--\">getTitle()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/HeadlessKarel.html\" title=\"class in stanford.karel\">HeadlessKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#getTitle--\">getTitle()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/StdAudio.AudioEvent.html#getType--\">getType()</a></span> - Method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/StdAudio.AudioEvent.html\" title=\"class in stanford.cs106.audio\">StdAudio.AudioEvent</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/ComparisonFailureEnhanced.html#getType--\">getType()</a></span> - Method in error stanford.cs106.junit.<a href=\"stanford/cs106/junit/ComparisonFailureEnhanced.html\" title=\"class in stanford.cs106.junit\">ComparisonFailureEnhanced</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/ExceptionUtils.html#getUnderlyingCause-java.lang.Throwable-\">getUnderlyingCause(Throwable)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/ExceptionUtils.html\" title=\"class in stanford.cs106.util\">ExceptionUtils</a></dt>\n<dd>\n<div class=\"block\">The true cause of an exception that has occurred.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/DoubleField.html#getValue--\">getValue()</a></span> - Method in class acm.gui.<a href=\"acm/gui/DoubleField.html\" title=\"class in acm.gui\">DoubleField</a></dt>\n<dd>\n<div class=\"block\">Returns the value of this field as a <code>double</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/IntField.html#getValue--\">getValue()</a></span> - Method in class acm.gui.<a href=\"acm/gui/IntField.html\" title=\"class in acm.gui\">IntField</a></dt>\n<dd>\n<div class=\"block\">Returns the value of this field as a <code>int</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JPlaceholderTextField.html#getValueAsDouble--\">getValueAsDouble()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JPlaceholderTextField.html\" title=\"class in acm.gui\">JPlaceholderTextField</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JPlaceholderTextField.html#getValueAsInt--\">getValueAsInt()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JPlaceholderTextField.html\" title=\"class in acm.gui\">JPlaceholderTextField</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JPlaceholderTextField.html#getValueAsInteger--\">getValueAsInteger()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JPlaceholderTextField.html\" title=\"class in acm.gui\">JPlaceholderTextField</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/Accidental.html#getValueOf-java.lang.String-\">getValueOf(String)</a></span> - Static method in enum stanford.cs106.audio.<a href=\"stanford/cs106/audio/Accidental.html\" title=\"enum in stanford.cs106.audio\">Accidental</a></dt>\n<dd>\n<div class=\"block\">Returns the Accidental that is equivalent to the given string,\n such as Accidental.SHARP for \"SHARP\", or null if the string does not\n match any Accidental value.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/Pitch.html#getValueOf-java.lang.String-\">getValueOf(String)</a></span> - Static method in enum stanford.cs106.audio.<a href=\"stanford/cs106/audio/Pitch.html\" title=\"enum in stanford.cs106.audio\">Pitch</a></dt>\n<dd>\n<div class=\"block\">Returns the Pitch that is equivalent to the given string,\n such as Pitch.D for \"D\", or null if the string does not\n match any Pitch value.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/ComparisonFailureEnhanced.html#getValueType--\">getValueType()</a></span> - Method in error stanford.cs106.junit.<a href=\"stanford/cs106/junit/ComparisonFailureEnhanced.html\" title=\"class in stanford.cs106.junit\">ComparisonFailureEnhanced</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.html#getVersionString--\">getVersionString()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#getVerticalAlignment--\">getVerticalAlignment()</a></span> - Method in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Returns the vertical alignment for the table.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#getVgap--\">getVgap()</a></span> - Method in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Returns the vertical gap between components.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#getVolume--\">getVolume()</a></span> - Method in class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Returns the overall volume setting for the sound, which is a number\n between 0 (silent) and 1 (maximum volume).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvasInterface.html#getWidth--\">getWidth()</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLabel.html#getWidth--\">getWidth()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLabel.html\" title=\"class in acm.graphics\">GLabel</a></dt>\n<dd>\n<div class=\"block\">Returns the width of this string, as it appears on the display.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#getWidth--\">getWidth()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Returns the width of this object, which is defined to be\n the width of the bounding box.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GRectangle.html#getWidth--\">getWidth()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></dt>\n<dd>\n<div class=\"block\">Returns the width of this <code>GDimension</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#getWidth--\">getWidth()</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Returns the width of the central region.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#getWidth--\">getWidth()</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getWidth--\">getWidth()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns the width of the central region.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#getWidth-java.lang.String-\">getWidth(String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#getWidth--\">getWidth()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getWindow--\">getWindow()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns the Java Swing window that encloses this program.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#getWorkingDir--\">getWorkingDir()</a></span> - Static method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Karel.html#getWorld--\">getWorld()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelControlPanel.html#getWorld--\">getWorld()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelControlPanel.html\" title=\"class in stanford.karel\">KarelControlPanel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelInterface.html#getWorld--\">getWorld()</a></span> - Method in interface stanford.karel.<a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.html#getWorld--\">getWorld()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dt>\n<dd>\n<div class=\"block\">Returns the <code>KarelWorld</code> object in which Karel lives.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.html#getWorldDirectory--\">getWorldDirectory()</a></span> - Static method in class stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dt>\n<dd>\n<div class=\"block\">Returns the default directory in which Karel's worlds live.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessKarel.html#getWorldFile--\">getWorldFile()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/HeadlessKarel.html\" title=\"class in stanford.karel\">HeadlessKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#getWriter--\">getWriter()</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#getWriter--\">getWriter()</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Returns a <code>PrintWriter</code> whose output is directed to the console.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getWriter--\">getWriter()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns a <code>PrintWriter</code> whose output is directed to the console.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#getX--\">getX()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Returns the leftmost x-coordinate of the object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GPoint.html#getX--\">getX()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a></dt>\n<dd>\n<div class=\"block\">Returns the x coordinate of this <code>GPoint</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GRectangle.html#getX--\">getX()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></dt>\n<dd>\n<div class=\"block\">Returns the x coordinate of this <code>GRectangle</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#getY--\">getY()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Returns the topmost y-coordinate of the object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GPoint.html#getY--\">getY()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a></dt>\n<dd>\n<div class=\"block\">Returns the y coordinate of this <code>GPoint</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GRectangle.html#getY--\">getY()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></dt>\n<dd>\n<div class=\"block\">Returns the y coordinate of this <code>GRectangle</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#getYesOrNo-java.lang.String-\">getYesOrNo(String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Prompts the user to answer a yes/no question and returns true if the user\n typed 'yes' (or anything that starts with a 'y', case-insensitively),\n false if the user types anything that starts with 'n', or re-prompts if\n the user doesn't type a 'y' or 'n' word.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/Downloader.html#getZipFileContents-java.net.URL-\">getZipFileContents(URL)</a></span> - Static method in class stanford.cs106.net.<a href=\"stanford/cs106/net/Downloader.html\" title=\"class in stanford.cs106.net\">Downloader</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"acm/graphics/GImage.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">GImage</span></a> - Class in <a href=\"acm/graphics/package-summary.html\">acm.graphics</a></dt>\n<dd>\n<div class=\"block\">The <code>GImage</code> class is a graphical object whose appearance is\n defined by an image.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GImage.html#GImage-java.awt.Image-\">GImage(Image)</a></span> - Constructor for class acm.graphics.<a href=\"acm/graphics/GImage.html\" title=\"class in acm.graphics\">GImage</a></dt>\n<dd>\n<div class=\"block\">Creates a new <code>GImage</code> object at the origin that displays\n the specified image.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GImage.html#GImage-java.lang.String-\">GImage(String)</a></span> - Constructor for class acm.graphics.<a href=\"acm/graphics/GImage.html\" title=\"class in acm.graphics\">GImage</a></dt>\n<dd>\n<div class=\"block\">Creates a new <code>GImage</code> object by looking for an image with that\n name.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GImage.html#GImage-int:A:A-\">GImage(int[][])</a></span> - Constructor for class acm.graphics.<a href=\"acm/graphics/GImage.html\" title=\"class in acm.graphics\">GImage</a></dt>\n<dd>\n<div class=\"block\">Creates a new <code>GImage</code> object at the origin.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GImage.html#GImage-java.awt.Image-double-double-\">GImage(Image, double, double)</a></span> - Constructor for class acm.graphics.<a href=\"acm/graphics/GImage.html\" title=\"class in acm.graphics\">GImage</a></dt>\n<dd>\n<div class=\"block\">Creates a new <code>GImage</code> object at the specified coordinates.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GImage.html#GImage-java.lang.String-double-double-\">GImage(String, double, double)</a></span> - Constructor for class acm.graphics.<a href=\"acm/graphics/GImage.html\" title=\"class in acm.graphics\">GImage</a></dt>\n<dd>\n<div class=\"block\">Creates a new <code>GImage</code> object at the specified coordinates.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GImage.html#GImage-int:A:A-double-double-\">GImage(int[][], double, double)</a></span> - Constructor for class acm.graphics.<a href=\"acm/graphics/GImage.html\" title=\"class in acm.graphics\">GImage</a></dt>\n<dd>\n<div class=\"block\">Creates a new <code>GImage</code> object at the specified coordinates.</div>\n</dd>\n<dt><a href=\"acm/graphics/GLabel.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">GLabel</span></a> - Class in <a href=\"acm/graphics/package-summary.html\">acm.graphics</a></dt>\n<dd>\n<div class=\"block\">The <code>GLabel</code> class is a graphical object whose appearance\n consists of a text string.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLabel.html#GLabel-java.lang.String-\">GLabel(String)</a></span> - Constructor for class acm.graphics.<a href=\"acm/graphics/GLabel.html\" title=\"class in acm.graphics\">GLabel</a></dt>\n<dd>\n<div class=\"block\">Creates a new <code>GLabel</code> object initialized to contain the specified string.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLabel.html#GLabel-java.lang.String-double-double-\">GLabel(String, double, double)</a></span> - Constructor for class acm.graphics.<a href=\"acm/graphics/GLabel.html\" title=\"class in acm.graphics\">GLabel</a></dt>\n<dd>\n<div class=\"block\">Creates a new <code>GLabel</code> object with its baseline origin at the\n specified position.</div>\n</dd>\n<dt><a href=\"acm/graphics/GLine.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">GLine</span></a> - Class in <a href=\"acm/graphics/package-summary.html\">acm.graphics</a></dt>\n<dd>\n<div class=\"block\">The <code>GLine</code> class is a graphical object whose appearance consists\n of a line segment.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLine.html#GLine--\">GLine()</a></span> - Constructor for class acm.graphics.<a href=\"acm/graphics/GLine.html\" title=\"class in acm.graphics\">GLine</a></dt>\n<dd>\n<div class=\"block\">Constructs a line segment of length 0 at position (0, 0).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLine.html#GLine-double-double-\">GLine(double, double)</a></span> - Constructor for class acm.graphics.<a href=\"acm/graphics/GLine.html\" title=\"class in acm.graphics\">GLine</a></dt>\n<dd>\n<div class=\"block\">Constructs a line segment of length 0 at position (x0, y0).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLine.html#GLine-double-double-double-double-\">GLine(double, double, double, double)</a></span> - Constructor for class acm.graphics.<a href=\"acm/graphics/GLine.html\" title=\"class in acm.graphics\">GLine</a></dt>\n<dd>\n<div class=\"block\">Constructs a line segment from its endpoints.</div>\n</dd>\n<dt><a href=\"acm/graphics/GLineGroup.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">GLineGroup</span></a> - Class in <a href=\"acm/graphics/package-summary.html\">acm.graphics</a></dt>\n<dd>\n<div class=\"block\">A line group represents a collection of points that form line segments.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLineGroup.html#GLineGroup--\">GLineGroup()</a></span> - Constructor for class acm.graphics.<a href=\"acm/graphics/GLineGroup.html\" title=\"class in acm.graphics\">GLineGroup</a></dt>\n<dd>\n<div class=\"block\">Creates a new line group that does not contain any points.</div>\n</dd>\n<dt><a href=\"acm/graphics/GMath.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">GMath</span></a> - Class in <a href=\"acm/graphics/package-summary.html\">acm.graphics</a></dt>\n<dd>\n<div class=\"block\">This class defines a variety of static mathematical methods that are useful\n for the <code>acm.graphics</code> package.</div>\n</dd>\n<dt><a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">GObject</span></a> - Class in <a href=\"acm/graphics/package-summary.html\">acm.graphics</a></dt>\n<dd>\n<div class=\"block\">This class is the common superclass of all graphical objects that can\n be displayed on a <a href=\"./acm/graphics/GCanvas.html\"><code>GCanvas</code></a>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#GObject--\">GObject()</a></span> - Constructor for class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Constructs a new <code>GObject</code> and initializes its state.</div>\n</dd>\n<dt><a href=\"acm/graphics/GOval.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">GOval</span></a> - Class in <a href=\"acm/graphics/package-summary.html\">acm.graphics</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GOval.html#GOval-double-double-\">GOval(double, double)</a></span> - Constructor for class acm.graphics.<a href=\"acm/graphics/GOval.html\" title=\"class in acm.graphics\">GOval</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GOval.html#GOval-double-double-double-double-\">GOval(double, double, double, double)</a></span> - Constructor for class acm.graphics.<a href=\"acm/graphics/GOval.html\" title=\"class in acm.graphics\">GOval</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"acm/graphics/GPoint.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">GPoint</span></a> - Class in <a href=\"acm/graphics/package-summary.html\">acm.graphics</a></dt>\n<dd>\n<div class=\"block\">This class is a double-precision version of the <code>Point</code> class in\n <code>java.awt</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GPoint.html#GPoint--\">GPoint()</a></span> - Constructor for class acm.graphics.<a href=\"acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a></dt>\n<dd>\n<div class=\"block\">Constructs a new <code>GPoint</code> at the origin (0, 0).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GPoint.html#GPoint-double-double-\">GPoint(double, double)</a></span> - Constructor for class acm.graphics.<a href=\"acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a></dt>\n<dd>\n<div class=\"block\">Constructs a new <code>GPoint</code> with the specified coordinates.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GPoint.html#GPoint-acm.graphics.GPoint-\">GPoint(GPoint)</a></span> - Constructor for class acm.graphics.<a href=\"acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a></dt>\n<dd>\n<div class=\"block\">Constructs a new <code>GPoint</code> from an existing one.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GPoint.html#GPoint-java.awt.Point-\">GPoint(Point)</a></span> - Constructor for class acm.graphics.<a href=\"acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a></dt>\n<dd>\n<div class=\"block\">Constructs a new <code>GPoint</code> from an existing AWT\n <code>Point</code>.</div>\n</dd>\n<dt><a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\"><span class=\"typeNameLink\">Graph</span></a>&lt;<a href=\"stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>,<a href=\"stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">E</a>&gt; - Interface in <a href=\"stanford/cs106/collections/package-summary.html\">stanford.cs106.collections</a></dt>\n<dd>\n<div class=\"block\">A Graph is a collection of vertices and edges between vertices.</div>\n</dd>\n<dt><a href=\"stanford/cs106/collections/GraphColor.html\" title=\"enum in stanford.cs106.collections\"><span class=\"typeNameLink\">GraphColor</span></a> - Enum in <a href=\"stanford/cs106/collections/package-summary.html\">stanford.cs106.collections</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">GraphicsProgram</span></a> - Class in <a href=\"acm/program/package-summary.html\">acm.program</a></dt>\n<dd>\n<div class=\"block\">This class is a standard subclass of\n <code><a href=\"./acm/program/Program.html\">Program</a></code> whose principal window is\n used for drawing graphics.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#GraphicsProgram--\">GraphicsProgram()</a></span> - Constructor for class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Creates a new graphics program.</div>\n</dd>\n<dt><a href=\"acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\"><span class=\"typeNameLink\">GraphicsProgramInterface</span></a> - Interface in <a href=\"acm/program/package-summary.html\">acm.program</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessSuperKarel.html#GRAY\">GRAY</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\">HeadlessSuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.html#GRAY\">GRAY</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/SuperKarel.html#GRAY\">GRAY</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\">SuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">GRectangle</span></a> - Class in <a href=\"acm/graphics/package-summary.html\">acm.graphics</a></dt>\n<dd>\n<div class=\"block\">This class is a double-precision version of the <code>Rectangle</code> class\n in <code>java.awt</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GRectangle.html#GRectangle--\">GRectangle()</a></span> - Constructor for class acm.graphics.<a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></dt>\n<dd>\n<div class=\"block\">Constructs a new empty <code>GRectangle</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GRectangle.html#GRectangle-double-double-double-double-\">GRectangle(double, double, double, double)</a></span> - Constructor for class acm.graphics.<a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></dt>\n<dd>\n<div class=\"block\">Constructs a new <code>GRectangle</code> with the specified coordinates and size.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GRectangle.html#GRectangle-double-double-\">GRectangle(double, double)</a></span> - Constructor for class acm.graphics.<a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></dt>\n<dd>\n<div class=\"block\">Constructs a <code>GRectangle</code> at the origin with the specified width and height.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GRectangle.html#GRectangle-acm.graphics.GPoint-acm.graphics.GDimension-\">GRectangle(GPoint, GDimension)</a></span> - Constructor for class acm.graphics.<a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></dt>\n<dd>\n<div class=\"block\">Constructs a new <code>GRectangle</code> with the specified location and size.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GRectangle.html#GRectangle-acm.graphics.GPoint-\">GRectangle(GPoint)</a></span> - Constructor for class acm.graphics.<a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></dt>\n<dd>\n<div class=\"block\">Constructs a new empty <code>GRectangle</code> at the specified location.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GRectangle.html#GRectangle-acm.graphics.GDimension-\">GRectangle(GDimension)</a></span> - Constructor for class acm.graphics.<a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></dt>\n<dd>\n<div class=\"block\">Constructs a new <code>GRectangle</code> at the origin with the specified size.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GRectangle.html#GRectangle-acm.graphics.GRectangle-\">GRectangle(GRectangle)</a></span> - Constructor for class acm.graphics.<a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></dt>\n<dd>\n<div class=\"block\">Constructs a new <code>GRectangle</code> from an existing one.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessSuperKarel.html#GREEN\">GREEN</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\">HeadlessSuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.html#GREEN\">GREEN</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/SuperKarel.html#GREEN\">GREEN</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\">SuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"acm/graphics/GResizable.html\" title=\"interface in acm.graphics\"><span class=\"typeNameLink\">GResizable</span></a> - Interface in <a href=\"acm/graphics/package-summary.html\">acm.graphics</a></dt>\n<dd>\n<div class=\"block\">Specifies the characteristics of a graphical object that supports the\n <code>setSize</code> and <code>setBounds</code> methods.</div>\n</dd>\n<dt><a href=\"stanford/cs106/collections/Grid.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Grid</span></a>&lt;<a href=\"stanford/cs106/collections/Grid.html\" title=\"type parameter in Grid\">E</a>&gt; - Class in <a href=\"stanford/cs106/collections/package-summary.html\">stanford.cs106.collections</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Grid.html#Grid-int-int-\">Grid(int, int)</a></span> - Constructor for class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Grid.html\" title=\"class in stanford.cs106.collections\">Grid</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GRectangle.html#grow-double-double-\">grow(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></dt>\n<dd>\n<div class=\"block\">Adjusts the edges of a rectangle by the specified <code>dx</code> and <code>dy</code>\n offsets along each of its borders.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#growFont-javax.swing.JComponent-\">growFont(JComponent)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#growFont-javax.swing.JComponent-int-\">growFont(JComponent, int)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"acm/graphics/GScalable.html\" title=\"interface in acm.graphics\"><span class=\"typeNameLink\">GScalable</span></a> - Interface in <a href=\"acm/graphics/package-summary.html\">acm.graphics</a></dt>\n<dd>\n<div class=\"block\">Specifies the characteristics of a graphical object that supports the\n <code>scale</code> method.</div>\n</dd>\n<dt><a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\"><span class=\"typeNameLink\">GuiUtils</span></a> - Class in <a href=\"stanford/cs106/gui/package-summary.html\">stanford.cs106.gui</a></dt>\n<dd>&nbsp;</dd>\n</dl>\n<a name=\"I:H\">\n<!--   -->\n</a>\n<h2 class=\"title\">H</h2>\n<dl>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/XmlUtils.html#hasAttribute-org.w3c.dom.Node-java.lang.String-\">hasAttribute(Node, String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\">XmlUtils</a></dt>\n<dd>\n<div class=\"block\">Returns whether the given XML DOM node contains the given attribute.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/XmlUtils.html#hasAttributeAny-org.w3c.dom.Node-java.lang.String...-\">hasAttributeAny(Node, String...)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\">XmlUtils</a></dt>\n<dd>\n<div class=\"block\">Returns the value of the first attribute found with any of the given names, else null.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/XmlUtils.html#hasAttributes-org.w3c.dom.Node-java.lang.String...-\">hasAttributes(Node, String...)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\">XmlUtils</a></dt>\n<dd>\n<div class=\"block\">Returns whether the given XML DOM node contains all of the given attributes.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#hasConfiguration--\">hasConfiguration()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns true if this program has any saved configuration stored on disk.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#hasElementAt-double-double-\">hasElementAt(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Returns true if a graphical object exists that touches the given\n (x, y) pixel position, or false if no such object exists.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#hasElementAt-double...-\">hasElementAt(double...)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Returns true if a graphical object exists that touches any of the given\n (x, y) pixel positions, or false if no such object exists.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvasInterface.html#hasElementAt-double-double-\">hasElementAt(double, double)</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvasInterface.html#hasElementAt-double...-\">hasElementAt(double...)</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#hasElementAt-double-double-\">hasElementAt(double, double)</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Returns true if a graphical object exists that touches the given\n (x, y) pixel position, or false if no such object exists.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#hasElementAt-double...-\">hasElementAt(double...)</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Returns true if a graphical object exists that touches any of the given\n (x, y) pixel positions, or false if no such object exists.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#hasElementAt-double-double-\">hasElementAt(double, double)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#hasElementAt-double...-\">hasElementAt(double...)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/collections/HashBasedTable.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">HashBasedTable</span></a>&lt;<a href=\"stanford/cs106/collections/HashBasedTable.html\" title=\"type parameter in HashBasedTable\">R</a>,<a href=\"stanford/cs106/collections/HashBasedTable.html\" title=\"type parameter in HashBasedTable\">C</a>,<a href=\"stanford/cs106/collections/HashBasedTable.html\" title=\"type parameter in HashBasedTable\">V</a>&gt; - Class in <a href=\"stanford/cs106/collections/package-summary.html\">stanford.cs106.collections</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/HashBasedTable.html#HashBasedTable--\">HashBasedTable()</a></span> - Constructor for class stanford.cs106.collections.<a href=\"stanford/cs106/collections/HashBasedTable.html\" title=\"class in stanford.cs106.collections\">HashBasedTable</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GPoint.html#hashCode--\">hashCode()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a></dt>\n<dd>\n<div class=\"block\">Returns an integer hash code for the point.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GRectangle.html#hashCode--\">hashCode()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></dt>\n<dd>\n<div class=\"block\">Returns an integer hash code for the rectangle.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#hashCode--\">hashCode()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Returns an integer code for placing this graph into a hash-based collection.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Edge.html#hashCode--\">hashCode()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\">Edge</a></dt>\n<dd>\n<div class=\"block\">Returns an integer code for placing this edge into a hash-based collection.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Grid.html#hashCode--\">hashCode()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Grid.html\" title=\"class in stanford.cs106.collections\">Grid</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Lexicon.html#hashCode--\">hashCode()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Lexicon.html\" title=\"class in stanford.cs106.collections\">Lexicon</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Vertex.html#hashCode--\">hashCode()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a></dt>\n<dd>\n<div class=\"block\">Returns an integer code for placing this vertex into a hash-based collection.</div>\n</dd>\n<dt><a href=\"stanford/cs106/collections/HashMultimap.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">HashMultimap</span></a>&lt;<a href=\"stanford/cs106/collections/HashMultimap.html\" title=\"type parameter in HashMultimap\">K</a>,<a href=\"stanford/cs106/collections/HashMultimap.html\" title=\"type parameter in HashMultimap\">V</a>&gt; - Class in <a href=\"stanford/cs106/collections/package-summary.html\">stanford.cs106.collections</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/HashMultimap.html#HashMultimap--\">HashMultimap()</a></span> - Constructor for class stanford.cs106.collections.<a href=\"stanford/cs106/collections/HashMultimap.html\" title=\"class in stanford.cs106.collections\">HashMultimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/HashMultimap.html#HashMultimap-boolean-\">HashMultimap(boolean)</a></span> - Constructor for class stanford.cs106.collections.<a href=\"stanford/cs106/collections/HashMultimap.html\" title=\"class in stanford.cs106.collections\">HashMultimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.html#hasMain-java.lang.Class-\">hasMain(Class&lt;?&gt;)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#hasNext--\">hasNext()</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Returns true if this scanner has another token in its input.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#hasNext-java.util.regex.Pattern-\">hasNext(Pattern)</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Returns true if the next complete token matches the specified pattern.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#hasNext-java.lang.String-\">hasNext(String)</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Returns the next token if it matches the pattern constructed from the \n     specified string.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#hasNextBigDecimal--\">hasNextBigDecimal()</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted\n     as a BigDecimal using the nextBigDecimal() method.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#hasNextBigInteger--\">hasNextBigInteger()</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted\n     as a BigInteger in the default radix using the nextBigInteger() method.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#hasNextBigInteger-int-\">hasNextBigInteger(int)</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted as\n     a BigInteger in the specified radix using the nextBigInteger() method.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#hasNextBoolean--\">hasNextBoolean()</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted as\n     a boolean value.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#hasNextByte--\">hasNextByte()</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted as \n     a byte value in the default radix using the nextByte() method.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#hasNextByte-int-\">hasNextByte(int)</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted as\n     a byte value in the specified radix using the nextByte() method.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#hasNextDouble--\">hasNextDouble()</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted as\n     a double value using the nextDouble() method.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#hasNextFloat--\">hasNextFloat()</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted as\n     a float value using the nextFloat() method.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#hasNextInt--\">hasNextInt()</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted as\n     an int value in the default radix using the nextInt() method.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#hasNextInt-int-\">hasNextInt(int)</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted as \n     an int value in the specified radix using the nextInt() method.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#hasNextLine--\">hasNextLine()</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Returns true if there is another line in the input of this scanner.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#hasNextLong--\">hasNextLong()</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted as\n     a long value in the default radix using the nextLong() method.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#hasNextLong-int-\">hasNextLong(int)</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted as\n     a long value in the specified radix using the nextLong() method.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#hasNextShort--\">hasNextShort()</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted as \n     a short value in the default radix using the nextShort() method.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#hasNextShort-int-\">hasNextShort(int)</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Returns true if the next token in this scanner's input can be interpreted as\n     a short value in the specified radix using the nextShort() method.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/Request.html#hasParam-java.lang.String-\">hasParam(String)</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\">Request</a></dt>\n<dd>\n<div class=\"block\">Returns true if this request contains a query parameter with the given name.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JListOptionPane.html#hasSelectedValue--\">hasSelectedValue()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JListOptionPane.html\" title=\"class in acm.gui\">JListOptionPane</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/SystemProperties.html#hasSystemProperty-java.lang.String-\">hasSystemProperty(String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/SystemProperties.html\" title=\"class in stanford.cs106.util\">SystemProperties</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessKarel.html#hasVisited-int-int-\">hasVisited(int, int)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/HeadlessKarel.html\" title=\"class in stanford.karel\">HeadlessKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessKarel.html#hasVisited-java.awt.Point-\">hasVisited(Point)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/HeadlessKarel.html\" title=\"class in stanford.karel\">HeadlessKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">HeadlessGraphicsProgram</span></a> - Class in <a href=\"acm/program/package-summary.html\">acm.program</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#HeadlessGraphicsProgram--\">HeadlessGraphicsProgram()</a></span> - Constructor for class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/karel/HeadlessKarel.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">HeadlessKarel</span></a> - Class in <a href=\"stanford/karel/package-summary.html\">stanford.karel</a></dt>\n<dd>\n<div class=\"block\">A version of a Karel superclass that doesn't crash when run\n in headless (non-graphical) mode.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessKarel.html#HeadlessKarel--\">HeadlessKarel()</a></span> - Constructor for class stanford.karel.<a href=\"stanford/karel/HeadlessKarel.html\" title=\"class in stanford.karel\">HeadlessKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">HeadlessSuperKarel</span></a> - Class in <a href=\"stanford/karel/package-summary.html\">stanford.karel</a></dt>\n<dd>\n<div class=\"block\">Extended Karel class .</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessSuperKarel.html#HeadlessSuperKarel--\">HeadlessSuperKarel()</a></span> - Constructor for class stanford.karel.<a href=\"stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\">HeadlessSuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Grid.html#height--\">height()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Grid.html\" title=\"class in stanford.cs106.collections\">Grid</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#heighten-javax.swing.JComponent-int-\">heighten(JComponent, int)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/StandardConsoleModel.html#historyDown--\">historyDown()</a></span> - Method in class acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AbstractConsoleProgram.html#historyDown--\">historyDown()</a></span> - Method in class acm.program.<a href=\"acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></dt>\n<dd>\n<div class=\"block\">Retrieves the next command in the console input history.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/StandardConsoleModel.html#historyUp--\">historyUp()</a></span> - Method in class acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AbstractConsoleProgram.html#historyUp--\">historyUp()</a></span> - Method in class acm.program.<a href=\"acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></dt>\n<dd>\n<div class=\"block\">Retrieves the previous command in the console input history.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#HORIZONTAL\">HORIZONTAL</a></span> - Static variable in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Resize component in horizontal direction only</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#htmlDecode-java.lang.String-\">htmlDecode(String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#htmlDecode-java.lang.String-boolean-\">htmlDecode(String, boolean)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#htmlEncode-java.lang.String-\">htmlEncode(String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#htmlEncode-java.lang.String-boolean-\">htmlEncode(String, boolean)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#htmlEncode-java.lang.String-boolean-boolean-\">htmlEncode(String, boolean, boolean)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#htmlEncode-int-\">htmlEncode(int)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#htmlEncode-double-\">htmlEncode(double)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#htmlEncode-char-\">htmlEncode(char)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#htmlEncode-boolean-\">htmlEncode(boolean)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#htmlEncode-long-\">htmlEncode(long)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#htmlEncode-java.lang.Object-\">htmlEncode(Object)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n</dl>\n<a name=\"I:I\">\n<!--   -->\n</a>\n<h2 class=\"title\">I</h2>\n<dl>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#ignoreCommand--\">ignoreCommand()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#inBounds-int-int-\">inBounds(int, int)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Whether the given (x, y) point falls within the bounds of this canvas, from (0, 0) ..</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GImage.html#inBounds-double-double-\">inBounds(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GImage.html\" title=\"class in acm.graphics\">GImage</a></dt>\n<dd>\n<div class=\"block\">Returns whether the given x/y pixel position is within the bounds of the image,\n in other words, whether it is between (0, 0) and (w, h).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Grid.html#inBounds-int-int-\">inBounds(int, int)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Grid.html\" title=\"class in stanford.cs106.collections\">Grid</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#inDegree-java.lang.String-\">inDegree(String)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Returns the number of incoming edges to the given vertex.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#inDegree-stanford.cs106.collections.Vertex-\">inDegree(Vertex&lt;V&gt;)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Returns the number of incoming edges to the given vertex.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#inDegree-java.lang.String-\">inDegree(String)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Returns the number of incoming edges to the given vertex.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#inDegree-stanford.cs106.collections.Vertex-\">inDegree(Vertex&lt;V&gt;)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Returns the number of incoming edges to the given vertex.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/CollectionUtils.html#indexOfSafe-java.util.List-T-\">indexOfSafe(List&lt;T&gt;, T)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/CollectionUtils.html\" title=\"class in stanford.cs106.util\">CollectionUtils</a></dt>\n<dd>\n<div class=\"block\">Returns the index of the given value in the given list,\n using == to compare rather than .equals.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.html#INFINITE\">INFINITE</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#INFINITE\">INFINITE</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#init--\">init()</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">The init method is called at startup time before the run method is\n called.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ConsoleProgram.html#init--\">init()</a></span> - Method in class acm.program.<a href=\"acm/program/ConsoleProgram.html\" title=\"class in acm.program\">ConsoleProgram</a></dt>\n<dd>\n<div class=\"block\">Specifies the code to be executed as startup time before the\n <code>run</code> method is called.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/DialogProgram.html#init--\">init()</a></span> - Method in class acm.program.<a href=\"acm/program/DialogProgram.html\" title=\"class in acm.program\">DialogProgram</a></dt>\n<dd>\n<div class=\"block\">Specifies the code to be executed as startup time before the\n <code>run</code> method is called.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#init--\">init()</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Specifies the code to be executed as startup time before the\n <code>run</code> method is called.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#init--\">init()</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#init--\">init()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Specifies the code to be executed as startup time before the\n <code>run</code> method is called.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramInterface.html#init--\">init()</a></span> - Method in interface acm.program.<a href=\"acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessKarel.html#init--\">init()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/HeadlessKarel.html\" title=\"class in stanford.karel\">HeadlessKarel</a></dt>\n<dd>\n<div class=\"block\">Initializes Karel.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#init-int-int-\">init(int, int)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/ConsoleModel.html#INPUT_STYLE\">INPUT_STYLE</a></span> - Static variable in interface acm.io.<a href=\"acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.html#insertUpdate-javax.swing.event.DocumentEvent-\">insertUpdate(DocumentEvent)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.html\" title=\"class in acm.gui\">JFontChooser.ListSearchTextFieldDocumentHandler</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#insertUpdate-javax.swing.event.DocumentEvent-\">insertUpdate(DocumentEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Required method of DocumentListener interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#install-java.awt.Component-\">install(Component)</a></span> - Method in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>\n<div class=\"block\">Installs the menu bar in the <code>JFrame</code> or <code>Program</code>\n object enclosing the component <code>comp</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#intensityToSample-double-\">intensityToSample(double)</a></span> - Static method in class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Converts an intensity value between -1.0 and +1.0 into the corresponding\n integer sample in the range -32767 and +32767.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GRectangle.html#intersection-acm.graphics.GRectangle-\">intersection(GRectangle)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></dt>\n<dd>\n<div class=\"block\">Returns the largest rectangle that is contained in both\n <code>r1</code> and <code>r2</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLine.html#intersects-double-double-double-double-double-double-double-\">intersects(double, double, double, double, double, double, double)</a></span> - Static method in class acm.graphics.<a href=\"acm/graphics/GLine.html\" title=\"class in acm.graphics\">GLine</a></dt>\n<dd>\n<div class=\"block\">Returns whether the given x/y point intersects the line from x0,y0 to x1,y1 of the given width.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#intersects-acm.graphics.GObject-\">intersects(GObject)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Returns true if this object touches the given other object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GRectangle.html#intersects-acm.graphics.GRectangle-\">intersects(GRectangle)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></dt>\n<dd>\n<div class=\"block\">Returns <code>true</code> if <code>r1</code> and <code>r2</code> have a nonempty\n intersection.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#intervalAdded-javax.swing.event.ListDataEvent-\">intervalAdded(ListDataEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Required method of ListDataListener interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#intervalRemoved-javax.swing.event.ListDataEvent-\">intervalRemoved(ListDataEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Required method of ListDataListener interface.</div>\n</dd>\n<dt><a href=\"acm/gui/IntField.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">IntField</span></a> - Class in <a href=\"acm/gui/package-summary.html\">acm.gui</a></dt>\n<dd>\n<div class=\"block\">This class implements a simple interactor that accepts an integer value.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/IntField.html#IntField--\">IntField()</a></span> - Constructor for class acm.gui.<a href=\"acm/gui/IntField.html\" title=\"class in acm.gui\">IntField</a></dt>\n<dd>\n<div class=\"block\">Creates a new field object for entering a <code>int</code> value.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/IntField.html#IntField-int-\">IntField(int)</a></span> - Constructor for class acm.gui.<a href=\"acm/gui/IntField.html\" title=\"class in acm.gui\">IntField</a></dt>\n<dd>\n<div class=\"block\">Creates a new field object for entering a <code>int</code> value.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/IntField.html#IntField-int-int-\">IntField(int, int)</a></span> - Constructor for class acm.gui.<a href=\"acm/gui/IntField.html\" title=\"class in acm.gui\">IntField</a></dt>\n<dd>\n<div class=\"block\">Creates a new field object for entering a <code>int</code> value,\n which is constrained to be within the specified range.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/IntField.html#IntField-int-int-int-\">IntField(int, int, int)</a></span> - Constructor for class acm.gui.<a href=\"acm/gui/IntField.html\" title=\"class in acm.gui\">IntField</a></dt>\n<dd>\n<div class=\"block\">Creates a new field object for entering a <code>int</code> value,\n which is constrained to be within the specified range.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#invalidateLayout-java.awt.Container-\">invalidateLayout(Container)</a></span> - Method in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Indicates that the layout is no longer valid.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#inverseNeighbors-java.lang.String-\">inverseNeighbors(String)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#inverseNeighbors-stanford.cs106.collections.Vertex-\">inverseNeighbors(Vertex&lt;V&gt;)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#invisibleObjects\">invisibleObjects</a></span> - Variable in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\"><span class=\"typeNameLink\">IOConsole</span></a> - Class in <a href=\"acm/io/package-summary.html\">acm.io</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#IOConsole--\">IOConsole()</a></span> - Constructor for class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#ioException--\">ioException()</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Returns the IOException last thrown by this Scanner.</div>\n</dd>\n<dt><a href=\"stanford/cs106/io/IORuntimeException.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">IORuntimeException</span></a> - Exception in <a href=\"stanford/cs106/io/package-summary.html\">stanford.cs106.io</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/IORuntimeException.html#IORuntimeException-java.lang.String-\">IORuntimeException(String)</a></span> - Constructor for exception stanford.cs106.io.<a href=\"stanford/cs106/io/IORuntimeException.html\" title=\"class in stanford.cs106.io\">IORuntimeException</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/IORuntimeException.html#IORuntimeException-java.lang.String-java.lang.Throwable-\">IORuntimeException(String, Throwable)</a></span> - Constructor for exception stanford.cs106.io.<a href=\"stanford/cs106/io/IORuntimeException.html\" title=\"class in stanford.cs106.io\">IORuntimeException</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/IORuntimeException.html#IORuntimeException-java.lang.Throwable-\">IORuntimeException(Throwable)</a></span> - Constructor for exception stanford.cs106.io.<a href=\"stanford/cs106/io/IORuntimeException.html\" title=\"class in stanford.cs106.io\">IORuntimeException</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/io/IOUtils.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">IOUtils</span></a> - Class in <a href=\"stanford/cs106/io/package-summary.html\">stanford.cs106.io</a></dt>\n<dd>\n<div class=\"block\">Utility methods related to file processing and I/O.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#isAnimated--\">isAnimated()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns true if the program is currently in animated mode.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#isAntiAliasing--\">isAntiAliasing()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Sets whether this canvas uses anti-aliasing, which is smoothing and blending of neighboring pixels.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvasInterface.html#isAntiAliasing--\">isAntiAliasing()</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#isAntiAliasing--\">isAntiAliasing()</a></span> - Static method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#isAntiAliasing--\">isAntiAliasing()</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Sets whether this program's canvas uses anti-aliasing, which is\n smoothing and blending of neighboring pixels.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#isAntiAliasing--\">isAntiAliasing()</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#isApplet--\">isApplet()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns <code>true</code> if this program is running as an applet in a browser.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#isAppletMode--\">isAppletMode()</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Returns <code>true</code> if this program is running as an applet in a browser.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#isAppletMode--\">isAppletMode()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns <code>true</code> if this program is running as an applet in a browser.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GMath.html#isBoolean-java.lang.String-\">isBoolean(String)</a></span> - Static method in class acm.graphics.<a href=\"acm/graphics/GMath.html\" title=\"class in acm.graphics\">GMath</a></dt>\n<dd>\n<div class=\"block\">Returns true if the given string could be interpreted as a boolean, such as \"true\" or \"false\".</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/MediaTools.html#isCachingEnabled--\">isCachingEnabled()</a></span> - Static method in class acm.util.<a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></dt>\n<dd>\n<div class=\"block\">This method returns the status of the flag that determins whether images\n and audio clips are cached internally by name, as described in <a\n href=\"./acm/util/#setCachingEnabled(boolean)\"><code>setCachingEnabled</code></a>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/OutputCapturer.html#isCapturing--\">isCapturing()</a></span> - Static method in class stanford.cs106.io.<a href=\"stanford/cs106/io/OutputCapturer.html\" title=\"class in stanford.cs106.io\">OutputCapturer</a></dt>\n<dd>\n<div class=\"block\">Returns true if output is currently being captured.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GMath.html#isChar-java.lang.String-\">isChar(String)</a></span> - Static method in class acm.graphics.<a href=\"acm/graphics/GMath.html\" title=\"class in acm.graphics\">GMath</a></dt>\n<dd>\n<div class=\"block\">Returns true if the given string could be interpreted as a char, such as \"Q\" or \"\\n\".</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/StandardConsoleModel.html#isCommandEnabled-java.lang.String-\">isCommandEnabled(String)</a></span> - Method in class acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#isConsoleMenuItem-javax.swing.JMenuItem-\">isConsoleMenuItem(JMenuItem)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/JComboGroupBox.html#isDelimiter-int-\">isDelimiter(int)</a></span> - Method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/JComboGroupBox.html\" title=\"class in stanford.cs106.gui\">JComboGroupBox</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#isDirected--\">isDirected()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Returns true if this is a directed graph, and false if it is undirected.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#isDirected--\">isDirected()</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Returns true if this is a directed graph, and false if it is undirected.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GMath.html#isDouble-java.lang.String-\">isDouble(String)</a></span> - Static method in class acm.graphics.<a href=\"acm/graphics/GMath.html\" title=\"class in acm.graphics\">GMath</a></dt>\n<dd>\n<div class=\"block\">Returns true if the given string could be interpreted as a double, such as \"123.45\".</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLineGroup.html#isEmpty--\">isEmpty()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLineGroup.html\" title=\"class in acm.graphics\">GLineGroup</a></dt>\n<dd>\n<div class=\"block\">Returns true if there are no points in this line group.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GRectangle.html#isEmpty--\">isEmpty()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></dt>\n<dd>\n<div class=\"block\">Returns <code>true</code> if the rectangle is empty.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JButtonGroup.html#isEmpty--\">isEmpty()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JButtonGroup.html\" title=\"class in acm.gui\">JButtonGroup</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/AbstractMultimap.html#isEmpty--\">isEmpty()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractMultimap.html\" title=\"class in stanford.cs106.collections\">AbstractMultimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/AbstractTable.html#isEmpty--\">isEmpty()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\">AbstractTable</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#isEmpty--\">isEmpty()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Returns true if this graph does not contain any vertices or edges.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#isEmpty--\">isEmpty()</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Returns true if this graph does not contain any vertices or edges.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Grid.html#isEmpty--\">isEmpty()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Grid.html\" title=\"class in stanford.cs106.collections\">Grid</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Lexicon.html#isEmpty--\">isEmpty()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Lexicon.html\" title=\"class in stanford.cs106.collections\">Lexicon</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Multimap.html#isEmpty--\">isEmpty()</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\">Multimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Table.html#isEmpty--\">isEmpty()</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\">Table</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/ClipboardUtils.html#isEmpty--\">isEmpty()</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/ClipboardUtils.html\" title=\"class in stanford.cs106.gui\">ClipboardUtils</a></dt>\n<dd>\n<div class=\"block\">Returns true if the clipboard currently does not contain any text.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#isExitOnClose--\">isExitOnClose()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns whether the program will exit when its window is closed (default true).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#isFalsey-java.lang.String-\">isFalsey(String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GOval.html#isFilled--\">isFilled()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GOval.html\" title=\"class in acm.graphics\">GOval</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#isFocusedItem-javax.swing.JMenuItem-\">isFocusedItem(JMenuItem)</a></span> - Method in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>\n<div class=\"block\">Returns <code>true</code> if the item is a focused item.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#isHeadless--\">isHeadless()</a></span> - Static method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Returns true if the program is running in non-graphical \"headless\" mode.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#isInitialized--\">isInitialized()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Returns true if this program's init() method has been called.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.html#isInnerClass-java.lang.Class-\">isInnerClass(Class&lt;?&gt;)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.html#isInnerClass-java.lang.String-\">isInnerClass(String)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GMath.html#isInteger-java.lang.String-\">isInteger(String)</a></span> - Static method in class acm.graphics.<a href=\"acm/graphics/GMath.html\" title=\"class in acm.graphics\">GMath</a></dt>\n<dd>\n<div class=\"block\">Returns true if the given string could be interpreted as an integer, such as \"12345\".</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/JUnitUtils.html#isJUnitMethod-java.lang.Class-java.lang.reflect.Method-\">isJUnitMethod(Class&lt;?&gt;, Method)</a></span> - Static method in class stanford.cs106.junit.<a href=\"stanford/cs106/junit/JUnitUtils.html\" title=\"class in stanford.cs106.junit\">JUnitUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/JUnitUtils.html#isJUnitMethod-java.lang.Class-java.lang.String-\">isJUnitMethod(Class&lt;?&gt;, String)</a></span> - Static method in class stanford.cs106.junit.<a href=\"stanford/cs106/junit/JUnitUtils.html\" title=\"class in stanford.cs106.junit\">JUnitUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GMath.html#isLong-java.lang.String-\">isLong(String)</a></span> - Static method in class acm.graphics.<a href=\"acm/graphics/GMath.html\" title=\"class in acm.graphics\">GMath</a></dt>\n<dd>\n<div class=\"block\">Returns true if the given string could be interpreted as an long, such as \"12345\".</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/StdAudio.html#isMuted--\">isMuted()</a></span> - Static method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/StdAudio.html\" title=\"class in stanford.cs106.audio\">StdAudio</a></dt>\n<dd>\n<div class=\"block\">Returns whether the audio system is currently muted.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/StdAudio.html#isPaused--\">isPaused()</a></span> - Static method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/StdAudio.html\" title=\"class in stanford.cs106.audio\">StdAudio</a></dt>\n<dd>\n<div class=\"block\">Returns whether the audio system is currently paused.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/ConsoleModel.html#isPointSelection--\">isPointSelection()</a></span> - Method in interface acm.io.<a href=\"acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/StandardConsoleModel.html#isPointSelection--\">isPointSelection()</a></span> - Method in class acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SystemConsoleModel.html#isPointSelection--\">isPointSelection()</a></span> - Method in class acm.io.<a href=\"acm/io/SystemConsoleModel.html\" title=\"class in acm.io\">SystemConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/G3DRect.html#isRaised--\">isRaised()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/G3DRect.html\" title=\"class in acm.graphics\">G3DRect</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/Note.html#isRepeat--\">isRepeat()</a></span> - Method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\">Note</a></dt>\n<dd>\n<div class=\"block\">Returns true if this Note is the start or end of a repeated section.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/Note.html#isRest--\">isRest()</a></span> - Method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\">Note</a></dt>\n<dd>\n<div class=\"block\">Returns true if this Note is a rest.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/BackEndServer.html#isRunning--\">isRunning()</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/BackEndServer.html\" title=\"class in stanford.cs106.net\">BackEndServer</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/SimpleServer.html#isRunning--\">isRunning()</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/SimpleServer.html\" title=\"class in stanford.cs106.net\">SimpleServer</a></dt>\n<dd>\n<div class=\"block\">Returns whether the server is currently active and listening for HTTP requests,\n which will be true after start() is called.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JButtonGroup.html#isSelected-java.lang.String-\">isSelected(String)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JButtonGroup.html\" title=\"class in acm.gui\">JButtonGroup</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#isStarted--\">isStarted()</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Checks to see whether this program has started, usually by checking to see\n whether some pane exists.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#isStarted--\">isStarted()</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Checks to see whether this program has started, usually by checking to\n see whether some pane exists.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#isStarted--\">isStarted()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Checks to see whether this program has started, usually by checking to see\n whether some pane exists.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.html#isStarted--\">isStarted()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dt>\n<dd>\n<div class=\"block\">Checks to see whether this program has started.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#isStereo--\">isStereo()</a></span> - Method in class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Returns <code>true</code> if the sound is recorded in stereo.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#isStrictGridBagModel--\">isStrictGridBagModel()</a></span> - Method in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Returns <code>true</code> if this layout manager is treating multirow\n cells exactly as <code>GridBagLayout</code> does.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#isTruthy-java.lang.String-\">isTruthy(String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JButtonGroup.html#isVertical--\">isVertical()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JButtonGroup.html\" title=\"class in acm.gui\">JButtonGroup</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#isVisible--\">isVisible()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Checks to see whether this object is visible.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#isWeighted--\">isWeighted()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Returns true if this is a weighted graph and false if it is unweighted.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#isWeighted--\">isWeighted()</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Returns true if this is a weighted graph and false if it is unweighted.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#itemStateChanged-java.awt.event.ItemEvent-\">itemStateChanged(ItemEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Required empty method of ItemListener interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#iterator--\">iterator()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Returns an <code>Iterator</code> that cycles through the elements within\n this container in the default direction, which is from back to front.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#iterator-int-\">iterator(int)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Returns an <code>Iterator</code> that cycles through the elements\n within this container in the specified direction, which must be one\n of the constants <a href=\"./acm/graphics/GContainer.html#FRONT_TO_BACK\"><code>GContainer.FRONT_TO_BACK</code></a>\n or <a href=\"./acm/graphics/GContainer.html#BACK_TO_FRONT\"><code>GContainer.BACK_TO_FRONT</code></a>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvasInterface.html#iterator--\">iterator()</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvasInterface.html#iterator-int-\">iterator(int)</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCompound.html#iterator--\">iterator()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCompound.html\" title=\"class in acm.graphics\">GCompound</a></dt>\n<dd>\n<div class=\"block\">Returns an <code>Iterator</code> that cycles through the elements within\n this container in the default direction, which is from back to front.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCompound.html#iterator-int-\">iterator(int)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCompound.html\" title=\"class in acm.graphics\">GCompound</a></dt>\n<dd>\n<div class=\"block\">Returns an <code>Iterator</code> that cycles through the elements\n within this container in the specified direction, which must be one\n of the constants <a href=\"./acm/graphics/GContainer.html#FRONT_TO_BACK\"><code>GContainer.FRONT_TO_BACK</code></a>\n or <a href=\"./acm/graphics/GContainer.html#BACK_TO_FRONT\"><code>GContainer.BACK_TO_FRONT</code></a>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLineGroup.html#iterator--\">iterator()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLineGroup.html\" title=\"class in acm.graphics\">GLineGroup</a></dt>\n<dd>\n<div class=\"block\">Returns an Iterator for examining the points in this line group.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JButtonGroup.html#iterator--\">iterator()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JButtonGroup.html\" title=\"class in acm.gui\">JButtonGroup</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#iterator--\">iterator()</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Returns an <code>Iterator</code> that cycles through the elements within\n this container in the default direction, which is from back to front.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#iterator-int-\">iterator(int)</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Returns an <code>Iterator</code> that cycles through the elements within\n this container in the specified direction, which must be one of the\n constants <a href=\"./acm/program/../graphics/GContainer.html#FRONT_TO_BACK\">\n <code>FRONT_TO_BACK</code></a> or <a\n href=\"./acm/program/GContainer.html#BACK_TO_FRONT\"><code>BACK_TO_FRONT</code></a> from\n the <a href=\"./acm/program/../graphics/GContainer.html\"><code>GContainer</code></a>\n interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#iterator--\">iterator()</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#iterator-int-\">iterator(int)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#iterator--\">iterator()</a></span> - Method in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>\n<div class=\"block\">Returns an iterator that enumerates the individual menu items under the\n control of the menu bar.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Lexicon.html#iterator--\">iterator()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Lexicon.html\" title=\"class in stanford.cs106.collections\">Lexicon</a></dt>\n<dd>&nbsp;</dd>\n</dl>\n<a name=\"I:J\">\n<!--   -->\n</a>\n<h2 class=\"title\">J</h2>\n<dl>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.html#JAVA_EXTENSION\">JAVA_EXTENSION</a></span> - Static variable in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"acm/gui/JButtonGroup.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">JButtonGroup</span></a> - Class in <a href=\"acm/gui/package-summary.html\">acm.gui</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JButtonGroup.html#JButtonGroup--\">JButtonGroup()</a></span> - Constructor for class acm.gui.<a href=\"acm/gui/JButtonGroup.html\" title=\"class in acm.gui\">JButtonGroup</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JButtonGroup.html#JButtonGroup-java.lang.String...-\">JButtonGroup(String...)</a></span> - Constructor for class acm.gui.<a href=\"acm/gui/JButtonGroup.html\" title=\"class in acm.gui\">JButtonGroup</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JButtonGroup.html#JButtonGroup-java.awt.event.ActionListener-java.lang.String...-\">JButtonGroup(ActionListener, String...)</a></span> - Constructor for class acm.gui.<a href=\"acm/gui/JButtonGroup.html\" title=\"class in acm.gui\">JButtonGroup</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/gui/JComboGroupBox.html\" title=\"class in stanford.cs106.gui\"><span class=\"typeNameLink\">JComboGroupBox</span></a> - Class in <a href=\"stanford/cs106/gui/package-summary.html\">stanford.cs106.gui</a></dt>\n<dd>\n<div class=\"block\">A JComboBox that allows group tags, like the HTML optgroup tag.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/JComboGroupBox.html#JComboGroupBox--\">JComboGroupBox()</a></span> - Constructor for class stanford.cs106.gui.<a href=\"stanford/cs106/gui/JComboGroupBox.html\" title=\"class in stanford.cs106.gui\">JComboGroupBox</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"acm/gui/JFontChooser.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">JFontChooser</span></a> - Class in <a href=\"acm/gui/package-summary.html\">acm.gui</a></dt>\n<dd>\n<div class=\"block\">The <code>JFontChooser</code> class is a swing component for font selection.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.html#JFontChooser--\">JFontChooser()</a></span> - Constructor for class acm.gui.<a href=\"acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></dt>\n<dd>\n<div class=\"block\">Constructs a <code>JFontChooser</code> object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.html#JFontChooser-int:A-\">JFontChooser(int[])</a></span> - Constructor for class acm.gui.<a href=\"acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.html#JFontChooser-java.lang.String:A-\">JFontChooser(String[])</a></span> - Constructor for class acm.gui.<a href=\"acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></dt>\n<dd>\n<div class=\"block\">Constructs a <code>JFontChooser</code> object using the given font size\n array.</div>\n</dd>\n<dt><a href=\"acm/gui/JFontChooser.DialogCancelAction.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">JFontChooser.DialogCancelAction</span></a> - Class in <a href=\"acm/gui/package-summary.html\">acm.gui</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"acm/gui/JFontChooser.DialogOKAction.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">JFontChooser.DialogOKAction</span></a> - Class in <a href=\"acm/gui/package-summary.html\">acm.gui</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">JFontChooser.ListSearchTextFieldDocumentHandler</span></a> - Class in <a href=\"acm/gui/package-summary.html\">acm.gui</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.ListSelector.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">JFontChooser.ListSearchTextFieldDocumentHandler.ListSelector</span></a> - Class in <a href=\"acm/gui/package-summary.html\">acm.gui</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"acm/gui/JFontChooser.ListSelectionHandler.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">JFontChooser.ListSelectionHandler</span></a> - Class in <a href=\"acm/gui/package-summary.html\">acm.gui</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"acm/gui/JFontChooser.TextFieldFocusHandlerForTextSelection.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">JFontChooser.TextFieldFocusHandlerForTextSelection</span></a> - Class in <a href=\"acm/gui/package-summary.html\">acm.gui</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"acm/gui/JFontChooser.TextFieldKeyHandlerForListSelectionUpDown.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">JFontChooser.TextFieldKeyHandlerForListSelectionUpDown</span></a> - Class in <a href=\"acm/gui/package-summary.html\">acm.gui</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"acm/gui/JListOptionPane.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">JListOptionPane</span></a> - Class in <a href=\"acm/gui/package-summary.html\">acm.gui</a></dt>\n<dd>\n<div class=\"block\">A pop-up dialog box of options as a clickable list.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JListOptionPane.html#JListOptionPane-javax.swing.JFrame-java.lang.Iterable-\">JListOptionPane(JFrame, Iterable&lt;String&gt;)</a></span> - Constructor for class acm.gui.<a href=\"acm/gui/JListOptionPane.html\" title=\"class in acm.gui\">JListOptionPane</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/CollectionUtils.html#join-java.util.Collection-\">join(Collection&lt;?&gt;)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/CollectionUtils.html\" title=\"class in stanford.cs106.util\">CollectionUtils</a></dt>\n<dd>\n<div class=\"block\">Combines the elements of the given collection into a string separated\n by commas.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/CollectionUtils.html#join-java.util.Collection-java.lang.String-\">join(Collection&lt;?&gt;, String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/CollectionUtils.html\" title=\"class in stanford.cs106.util\">CollectionUtils</a></dt>\n<dd>\n<div class=\"block\">Combines the elements of the given collection into a string separated\n by the given separator.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/CollectionUtils.html#join-java.util.Map-\">join(Map&lt;?, ?&gt;)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/CollectionUtils.html\" title=\"class in stanford.cs106.util\">CollectionUtils</a></dt>\n<dd>\n<div class=\"block\">Combines the elements of the given map into a string separated\n by an equals sign between keys and their values, and commas between each entry.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/CollectionUtils.html#join-java.util.Map-java.lang.String-java.lang.String-\">join(Map&lt;?, ?&gt;, String, String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/CollectionUtils.html\" title=\"class in stanford.cs106.util\">CollectionUtils</a></dt>\n<dd>\n<div class=\"block\">Combines the elements of the given collection into a string separated\n by the given kv separator between keys and their values, and\n the given element separator commas between each entry.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#join-java.lang.String:A-java.lang.String-\">join(String[], String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#join-java.lang.String:A-java.lang.String-int-\">join(String[], String, int)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#join-java.lang.String:A-java.lang.String-int-int-\">join(String[], String, int, int)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#join-java.lang.Iterable-java.lang.String-\">join(Iterable&lt;String&gt;, String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"acm/gui/JPlaceholderTextField.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">JPlaceholderTextField</span></a> - Class in <a href=\"acm/gui/package-summary.html\">acm.gui</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JPlaceholderTextField.html#JPlaceholderTextField--\">JPlaceholderTextField()</a></span> - Constructor for class acm.gui.<a href=\"acm/gui/JPlaceholderTextField.html\" title=\"class in acm.gui\">JPlaceholderTextField</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JPlaceholderTextField.html#JPlaceholderTextField-javax.swing.text.Document-java.lang.String-int-\">JPlaceholderTextField(Document, String, int)</a></span> - Constructor for class acm.gui.<a href=\"acm/gui/JPlaceholderTextField.html\" title=\"class in acm.gui\">JPlaceholderTextField</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JPlaceholderTextField.html#JPlaceholderTextField-int-\">JPlaceholderTextField(int)</a></span> - Constructor for class acm.gui.<a href=\"acm/gui/JPlaceholderTextField.html\" title=\"class in acm.gui\">JPlaceholderTextField</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JPlaceholderTextField.html#JPlaceholderTextField-java.lang.String-\">JPlaceholderTextField(String)</a></span> - Constructor for class acm.gui.<a href=\"acm/gui/JPlaceholderTextField.html\" title=\"class in acm.gui\">JPlaceholderTextField</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JPlaceholderTextField.html#JPlaceholderTextField-java.lang.String-int-\">JPlaceholderTextField(String, int)</a></span> - Constructor for class acm.gui.<a href=\"acm/gui/JPlaceholderTextField.html\" title=\"class in acm.gui\">JPlaceholderTextField</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"acm/gui/JStringList.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">JStringList</span></a> - Class in <a href=\"acm/gui/package-summary.html\">acm.gui</a></dt>\n<dd>\n<div class=\"block\">Represents a list of strings with optional colors.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JStringList.html#JStringList--\">JStringList()</a></span> - Constructor for class acm.gui.<a href=\"acm/gui/JStringList.html\" title=\"class in acm.gui\">JStringList</a></dt>\n<dd>\n<div class=\"block\">Constructs a new empty list of strings.</div>\n</dd>\n<dt><a href=\"stanford/cs106/junit/JUnitListener.html\" title=\"interface in stanford.cs106.junit\"><span class=\"typeNameLink\">JUnitListener</span></a> - Interface in <a href=\"stanford/cs106/junit/package-summary.html\">stanford.cs106.junit</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/junit/JUnitUtils.html\" title=\"class in stanford.cs106.junit\"><span class=\"typeNameLink\">JUnitUtils</span></a> - Class in <a href=\"stanford/cs106/junit/package-summary.html\">stanford.cs106.junit</a></dt>\n<dd>&nbsp;</dd>\n</dl>\n<a name=\"I:K\">\n<!--   -->\n</a>\n<h2 class=\"title\">K</h2>\n<dl>\n<dt><a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">Karel</span></a> - Class in <a href=\"stanford/karel/package-summary.html\">stanford.karel</a></dt>\n<dd>\n<div class=\"block\">The <code>Karel</code> class represents the simplest possible Karel the Robot\n object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Karel.html#Karel--\">Karel()</a></span> - Constructor for class stanford.karel.<a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/karel/KarelControlPanel.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">KarelControlPanel</span></a> - Class in <a href=\"stanford/karel/package-summary.html\">stanford.karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelControlPanel.html#KarelControlPanel-stanford.karel.KarelProgram-\">KarelControlPanel(KarelProgram)</a></span> - Constructor for class stanford.karel.<a href=\"stanford/karel/KarelControlPanel.html\" title=\"class in stanford.karel\">KarelControlPanel</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/karel/KarelDirection.html\" title=\"enum in stanford.karel\"><span class=\"typeNameLink\">KarelDirection</span></a> - Enum in <a href=\"stanford/karel/package-summary.html\">stanford.karel</a></dt>\n<dd>\n<div class=\"block\">An enum internally used to keep track of Karel directions.</div>\n</dd>\n<dt><a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\"><span class=\"typeNameLink\">KarelInterface</span></a> - Interface in <a href=\"stanford/karel/package-summary.html\">stanford.karel</a></dt>\n<dd>\n<div class=\"block\">An interface to represent Karel objects.</div>\n</dd>\n<dt><a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">KarelProgram</span></a> - Class in <a href=\"stanford/karel/package-summary.html\">stanford.karel</a></dt>\n<dd>\n<div class=\"block\">This class is a subclass of <code><a href=\"./stanford/karel/Program.html\">Program</a></code>\n that runs a Karel program.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.html#KarelProgram--\">KarelProgram()</a></span> - Constructor for class stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dt>\n<dd>\n<div class=\"block\">Creates a new Karel program.</div>\n</dd>\n<dt><a href=\"stanford/karel/KarelProgram.State.html\" title=\"enum in stanford.karel\"><span class=\"typeNameLink\">KarelProgram.State</span></a> - Enum in <a href=\"stanford/karel/package-summary.html\">stanford.karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">KarelWorld</span></a> - Class in <a href=\"stanford/karel/package-summary.html\">stanford.karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#KarelWorld--\">KarelWorld()</a></span> - Constructor for class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.TextFieldKeyHandlerForListSelectionUpDown.html#keyPressed-java.awt.event.KeyEvent-\">keyPressed(KeyEvent)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JFontChooser.TextFieldKeyHandlerForListSelectionUpDown.html\" title=\"class in acm.gui\">JFontChooser.TextFieldKeyHandlerForListSelectionUpDown</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/StandardConsoleModel.html#keyPressed-java.awt.event.KeyEvent-\">keyPressed(KeyEvent)</a></span> - Method in class acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#keyPressed-java.awt.event.KeyEvent-\">keyPressed(KeyEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Called when a key is pressed.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#keyPressed-java.awt.event.KeyEvent-\">keyPressed(KeyEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Called when a key is pressed.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/WindowCloseKeyListener.html#keyPressed-java.awt.event.KeyEvent-\">keyPressed(KeyEvent)</a></span> - Method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/WindowCloseKeyListener.html\" title=\"class in stanford.cs106.gui\">WindowCloseKeyListener</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/StandardConsoleModel.html#keyReleased-java.awt.event.KeyEvent-\">keyReleased(KeyEvent)</a></span> - Method in class acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#keyReleased-java.awt.event.KeyEvent-\">keyReleased(KeyEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Called when a key is released.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#keyReleased-java.awt.event.KeyEvent-\">keyReleased(KeyEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Called when a key is released.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/WindowCloseKeyListener.html#keyReleased-java.awt.event.KeyEvent-\">keyReleased(KeyEvent)</a></span> - Method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/WindowCloseKeyListener.html\" title=\"class in stanford.cs106.gui\">WindowCloseKeyListener</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/AbstractMultimap.html#keySet--\">keySet()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractMultimap.html\" title=\"class in stanford.cs106.collections\">AbstractMultimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Multimap.html#keySet--\">keySet()</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\">Multimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/StandardConsoleModel.html#keyTyped-java.awt.event.KeyEvent-\">keyTyped(KeyEvent)</a></span> - Method in class acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#keyTyped-java.awt.event.KeyEvent-\">keyTyped(KeyEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Called when a key is typed (i.e., pressed and released).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#keyTyped-java.awt.event.KeyEvent-\">keyTyped(KeyEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Called when a key is typed (i.e., pressed and released).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/WindowCloseKeyListener.html#keyTyped-java.awt.event.KeyEvent-\">keyTyped(KeyEvent)</a></span> - Method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/WindowCloseKeyListener.html\" title=\"class in stanford.cs106.gui\">WindowCloseKeyListener</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#killMe--\">killMe()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Instructs the program to stop/kill itself.</div>\n</dd>\n</dl>\n<a name=\"I:L\">\n<!--   -->\n</a>\n<h2 class=\"title\">L</h2>\n<dl>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#labelBeeper-java.awt.Graphics-int-int-int-java.lang.String-java.awt.Component-\">labelBeeper(Graphics, int, int, int, String, Component)</a></span> - Static method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#layoutContainer-java.awt.Container-\">layoutContainer(Container)</a></span> - Method in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Lays out the components in the target container.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#LEFT\">LEFT</a></span> - Static variable in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Align table horizontally at the left of its container</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#LEFT\">LEFT</a></span> - Static variable in class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Identifies the left channel in a stereo sound.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#LEFT_NUMBER_MARGIN\">LEFT_NUMBER_MARGIN</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#leftFrom-int-\">leftFrom(int)</a></span> - Static method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Karel.html#leftIsBlocked--\">leftIsBlocked()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelInterface.html#leftIsBlocked--\">leftIsBlocked()</a></span> - Method in interface stanford.karel.<a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Karel.html#leftIsClear--\">leftIsClear()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelInterface.html#leftIsClear--\">leftIsClear()</a></span> - Method in interface stanford.karel.<a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#levenshtein-java.lang.String-java.lang.String-\">levenshtein(String, String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>\n<div class=\"block\">Returns the Levenshtein edit distance between the two given strings;\n the number of characters that must be added, removed, or modified to\n turn the one string into the other.</div>\n</dd>\n<dt><a href=\"stanford/cs106/collections/Lexicon.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Lexicon</span></a> - Class in <a href=\"stanford/cs106/collections/package-summary.html\">stanford.cs106.collections</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Lexicon.html#Lexicon--\">Lexicon()</a></span> - Constructor for class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Lexicon.html\" title=\"class in stanford.cs106.collections\">Lexicon</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Lexicon.html#Lexicon-java.lang.String-\">Lexicon(String)</a></span> - Constructor for class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Lexicon.html\" title=\"class in stanford.cs106.collections\">Lexicon</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessSuperKarel.html#LIGHT_GRAY\">LIGHT_GRAY</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\">HeadlessSuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.html#LIGHT_GRAY\">LIGHT_GRAY</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/SuperKarel.html#LIGHT_GRAY\">LIGHT_GRAY</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\">SuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/io/LimitedPrintStream.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">LimitedPrintStream</span></a> - Class in <a href=\"stanford/cs106/io/package-summary.html\">stanford.cs106.io</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/LimitedPrintStream.html#LimitedPrintStream-java.io.OutputStream-\">LimitedPrintStream(OutputStream)</a></span> - Constructor for class stanford.cs106.io.<a href=\"stanford/cs106/io/LimitedPrintStream.html\" title=\"class in stanford.cs106.io\">LimitedPrintStream</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/LimitedPrintStream.html#LimitedPrintStream-java.io.File-\">LimitedPrintStream(File)</a></span> - Constructor for class stanford.cs106.io.<a href=\"stanford/cs106/io/LimitedPrintStream.html\" title=\"class in stanford.cs106.io\">LimitedPrintStream</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/LimitedPrintStream.html#LimitedPrintStream-java.lang.String-\">LimitedPrintStream(String)</a></span> - Constructor for class stanford.cs106.io.<a href=\"stanford/cs106/io/LimitedPrintStream.html\" title=\"class in stanford.cs106.io\">LimitedPrintStream</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/LimitedPrintStream.html#LimitedPrintStream-java.io.OutputStream-int-int-\">LimitedPrintStream(OutputStream, int, int)</a></span> - Constructor for class stanford.cs106.io.<a href=\"stanford/cs106/io/LimitedPrintStream.html\" title=\"class in stanford.cs106.io\">LimitedPrintStream</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/LimitedPrintStream.html#LimitedPrintStream-java.io.File-int-int-\">LimitedPrintStream(File, int, int)</a></span> - Constructor for class stanford.cs106.io.<a href=\"stanford/cs106/io/LimitedPrintStream.html\" title=\"class in stanford.cs106.io\">LimitedPrintStream</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/LimitedPrintStream.html#LimitedPrintStream-java.lang.String-int-int-\">LimitedPrintStream(String, int, int)</a></span> - Constructor for class stanford.cs106.io.<a href=\"stanford/cs106/io/LimitedPrintStream.html\" title=\"class in stanford.cs106.io\">LimitedPrintStream</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/io/LimitedPrintStream.ExcessiveOutputException.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">LimitedPrintStream.ExcessiveOutputException</span></a> - Exception in <a href=\"stanford/cs106/io/package-summary.html\">stanford.cs106.io</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#LINE_SEPARATOR\">LINE_SEPARATOR</a></span> - Static variable in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLine.html#LINE_TOLERANCE\">LINE_TOLERANCE</a></span> - Static variable in class acm.graphics.<a href=\"acm/graphics/GLine.html\" title=\"class in acm.graphics\">GLine</a></dt>\n<dd>\n<div class=\"block\">This constant defines how close (measured in pixel units) a point has to\n be to a line before that point is considered to be \"contained\" within the\n line.</div>\n</dd>\n<dt><a href=\"stanford/cs106/gui/ListOptionPane.html\" title=\"class in stanford.cs106.gui\"><span class=\"typeNameLink\">ListOptionPane</span></a> - Class in <a href=\"stanford/cs106/gui/package-summary.html\">stanford.cs106.gui</a></dt>\n<dd>\n<div class=\"block\">This class is here only for backward compatibility.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/ListOptionPane.html#ListOptionPane-javax.swing.JFrame-java.lang.Iterable-\">ListOptionPane(JFrame, Iterable&lt;String&gt;)</a></span> - Constructor for class stanford.cs106.gui.<a href=\"stanford/cs106/gui/ListOptionPane.html\" title=\"class in stanford.cs106.gui\">ListOptionPane</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.html#ListSearchTextFieldDocumentHandler-javax.swing.JList-\">ListSearchTextFieldDocumentHandler(JList)</a></span> - Constructor for class acm.gui.<a href=\"acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.html\" title=\"class in acm.gui\">JFontChooser.ListSearchTextFieldDocumentHandler</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.ListSelector.html#ListSelector-int-\">ListSelector(int)</a></span> - Constructor for class acm.gui.<a href=\"acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.ListSelector.html\" title=\"class in acm.gui\">JFontChooser.ListSearchTextFieldDocumentHandler.ListSelector</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#load-java.lang.String:A-\">load(String[])</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#load-java.io.File-\">load(File)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#load-java.lang.String-\">load(String)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#load-java.io.Reader-\">load(Reader)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/MediaTools.html#loadAudioClip-java.lang.String-\">loadAudioClip(String)</a></span> - Static method in class acm.util.<a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></dt>\n<dd>\n<div class=\"block\">Searches the default audio clip search path for an audio clip with the\n specified name and then loads it to create an <code>AudioClip</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/MediaTools.html#loadAudioClip-java.lang.String-java.lang.String-\">loadAudioClip(String, String)</a></span> - Static method in class acm.util.<a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></dt>\n<dd>\n<div class=\"block\">Searches for an audio clip with the given name and loads it to create an\n <code>AudioClip</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/MediaTools.html#loadAudioClip-java.net.URL-\">loadAudioClip(URL)</a></span> - Static method in class acm.util.<a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></dt>\n<dd>\n<div class=\"block\">Loads an audio clip from the specified URL.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/MediaTools.html#loadAudioClip-java.net.URL-boolean-\">loadAudioClip(URL, boolean)</a></span> - Static method in class acm.util.<a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></dt>\n<dd>\n<div class=\"block\">Loads an audio clip from the specified URL.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/PatchingClassLoader.html#loadClass-java.lang.String-boolean-\">loadClass(String, boolean)</a></span> - Method in class acm.util.<a href=\"acm/util/PatchingClassLoader.html\" title=\"class in acm.util\">PatchingClassLoader</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.BetterClassLoader.html#loadClass-java.lang.String-\">loadClass(String)</a></span> - Method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.BetterClassLoader.html\" title=\"class in stanford.cs106.reflect\">ClassUtils.BetterClassLoader</a></dt>\n<dd>\n<div class=\"block\">Tries to load the class from the default system class loader, but if\n it isn't found, loads from the internal list of URLs.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.html#loadClass-java.lang.String-\">loadClass(String)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AbstractConsoleProgram.html#loadConfiguration-java.util.Properties-\">loadConfiguration(Properties)</a></span> - Method in class acm.program.<a href=\"acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></dt>\n<dd>\n<div class=\"block\">Reads the console's configuration settings, if present.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#loadConfiguration--\">loadConfiguration()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Loads any saved configuration of this program from disk.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#loadConfiguration-java.util.Properties-\">loadConfiguration(Properties)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Loads any saved configuration of this program from disk.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.html#loadConfiguration-java.util.Properties-\">loadConfiguration(Properties)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/MediaTools.html#loadImage-java.io.File-\">loadImage(File)</a></span> - Static method in class acm.util.<a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></dt>\n<dd>\n<div class=\"block\">Searches the default image search path for an image with the specified\n file's name and then loads it to create an <code>Image</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/MediaTools.html#loadImage-java.lang.String-\">loadImage(String)</a></span> - Static method in class acm.util.<a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></dt>\n<dd>\n<div class=\"block\">Searches the default image search path for an image with the specified\n name and then loads it to create an <code>Image</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/MediaTools.html#loadImage-java.lang.String-java.lang.String-\">loadImage(String, String)</a></span> - Static method in class acm.util.<a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></dt>\n<dd>\n<div class=\"block\">Searches for an image with the given name and loads it to create an\n <code>Image</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/MediaTools.html#loadImage-java.net.URL-\">loadImage(URL)</a></span> - Static method in class acm.util.<a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></dt>\n<dd>\n<div class=\"block\">Loads an image from the specified URL.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/MediaTools.html#loadImage-java.awt.Image-\">loadImage(Image)</a></span> - Static method in class acm.util.<a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></dt>\n<dd>\n<div class=\"block\">Makes sure that the image is fully loaded before returning.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/MediaTools.html#loadImage-java.net.URL-boolean-\">loadImage(URL, boolean)</a></span> - Static method in class acm.util.<a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></dt>\n<dd>\n<div class=\"block\">Loads an image from the specified URL.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.html#loadInitialWorld--\">loadInitialWorld()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AbstractConsoleProgram.html#loadInputScript--\">loadInputScript()</a></span> - Method in class acm.program.<a href=\"acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></dt>\n<dd>\n<div class=\"block\">Pops up a file chooser to compare output to some expected output.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#loadWindowLocation-java.awt.Frame-\">loadWindowLocation(Frame)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#locale--\">locale()</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Returns this scanner's locale.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#lookupConstraints-java.awt.Component-\">lookupConstraints(Component)</a></span> - Method in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Returns the constraints object for the specified component.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#lookupConstraints-java.awt.Component-java.awt.Container-\">lookupConstraints(Component, Container)</a></span> - Method in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Returns the <code>TableConstraints</code> object actually applied to the specified\n component when it is laid out in the target container.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#loop--\">loop()</a></span> - Method in class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Plays the sound in a continuous audio loop.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/SplClip.html#loop--\">loop()</a></span> - Method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/SplClip.html\" title=\"class in stanford.cs106.audio\">SplClip</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/StdAudio.html#loop-java.lang.String-\">loop(String)</a></span> - Static method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/StdAudio.html\" title=\"class in stanford.cs106.audio\">StdAudio</a></dt>\n<dd>\n<div class=\"block\">Loop a sound file (in .wav or .au format) in a background thread.</div>\n</dd>\n</dl>\n<a name=\"I:M\">\n<!--   -->\n</a>\n<h2 class=\"title\">M</h2>\n<dl>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessSuperKarel.html#MAGENTA\">MAGENTA</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\">HeadlessSuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.html#MAGENTA\">MAGENTA</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/SuperKarel.html#MAGENTA\">MAGENTA</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\">SuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#main-java.lang.String:A-\">main(String[])</a></span> - Static method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Every application must either contain a \"Main-Class\" entry in its\n manifest file or include a main method that looks like this, where\n <code>MyClass</code> is the name of the program class:</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#main-java.lang.String:A-\">main(String[])</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#main-java.lang.String:A-\">main(String[])</a></span> - Static method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Every application must either contain a \"Main-Class\" entry in its\n manifest file or include a main method that looks like this, where\n <code>MyClass</code> is the name of the program class:</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/StdAudio.html#main-java.lang.String:A-\">main(String[])</a></span> - Static method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/StdAudio.html\" title=\"class in stanford.cs106.audio\">StdAudio</a></dt>\n<dd>\n<div class=\"block\">Test client - play an A major scale to standard audio.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Karel.html#main-java.lang.String:A-\">main(String[])</a></span> - Static method in class stanford.karel.<a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.html#main--\">main()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dt>\n<dd>\n<div class=\"block\">Contains the code to be executed for each specific program subclass.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/ConstantUtils.html#makeConstantDouble-java.lang.Double-\">makeConstantDouble(Double)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/ConstantUtils.html\" title=\"class in stanford.cs106.util\">ConstantUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/ConstantUtils.html#makeConstantInteger-java.lang.Integer-\">makeConstantInteger(Integer)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/ConstantUtils.html\" title=\"class in stanford.cs106.util\">ConstantUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/ConstantUtils.html#makeConstantString-java.lang.String-\">makeConstantString(String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/ConstantUtils.html\" title=\"class in stanford.cs106.util\">ConstantUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/SimpleClient.html#makeRequest-stanford.cs106.net.Request-\">makeRequest(Request)</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/SimpleClient.html\" title=\"class in stanford.cs106.net\">SimpleClient</a></dt>\n<dd>\n<div class=\"block\">Initiates a synchronous HTTP request to this client's given server host,\n waiting for the HTTP response to be sent back, and returns the response.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/SimpleClient.html#makeRequest-java.lang.String-java.lang.String...-\">makeRequest(String, String...)</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/SimpleClient.html\" title=\"class in stanford.cs106.net\">SimpleClient</a></dt>\n<dd>\n<div class=\"block\">Initiates a synchronous HTTP request to this client's given server host,\n waiting for the HTTP response to be sent back, and returns the response.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/ReaderInputStream.html#mark-int-\">mark(int)</a></span> - Method in class stanford.cs106.io.<a href=\"stanford/cs106/io/ReaderInputStream.html\" title=\"class in stanford.cs106.io\">ReaderInputStream</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCompound.html#markAsComplete--\">markAsComplete()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCompound.html\" title=\"class in acm.graphics\">GCompound</a></dt>\n<dd>\n<div class=\"block\">Calling this method makes it illegal to add or remove elements from the\n compound object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#MARKED_COLOR\">MARKED_COLOR</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/ReaderInputStream.html#markSupported--\">markSupported()</a></span> - Method in class stanford.cs106.io.<a href=\"stanford/cs106/io/ReaderInputStream.html\" title=\"class in stanford.cs106.io\">ReaderInputStream</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Vertex.html#MAX_COST\">MAX_COST</a></span> - Static variable in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a></dt>\n<dd>\n<div class=\"block\">Maximum possible cost to reach a vertex from another; treat this as \"infinity\".</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#MAX_DISPLAY_HEIGHT\">MAX_DISPLAY_HEIGHT</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#MAX_DISPLAY_WIDTH\">MAX_DISPLAY_WIDTH</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#MAX_HEIGHT\">MAX_HEIGHT</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#MAX_SAMPLE\">MAX_SAMPLE</a></span> - Static variable in class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Specifies the maximum value of a sample in a sound.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#MAX_WIDTH\">MAX_WIDTH</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#maximumLayoutSize-java.awt.Container-\">maximumLayoutSize(Container)</a></span> - Method in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Calculates the maximum size for the <code>FrameLayout</code> component\n when laid out in the <code>target</code> container.</div>\n</dd>\n<dt><a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">MediaTools</span></a> - Class in <a href=\"acm/util/package-summary.html\">acm.util</a></dt>\n<dd>\n<div class=\"block\">This class implements a standard mechanism for loading images, sounds, and\n data files from the resources associated with a jar file.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_ABOUT\">MENU_ITEM_TEXT_ABOUT</a></span> - Static variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_ANTI_ALIASING\">MENU_ITEM_TEXT_ANTI_ALIASING</a></span> - Static variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_BACKGROUND_COLOR\">MENU_ITEM_TEXT_BACKGROUND_COLOR</a></span> - Static variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_CHECK_FOR_UPDATES\">MENU_ITEM_TEXT_CHECK_FOR_UPDATES</a></span> - Static variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_CLEAR_CONSOLE\">MENU_ITEM_TEXT_CLEAR_CONSOLE</a></span> - Static variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_COMPARE_OUTPUT\">MENU_ITEM_TEXT_COMPARE_OUTPUT</a></span> - Static variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_COPY\">MENU_ITEM_TEXT_COPY</a></span> - Static variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_CUT\">MENU_ITEM_TEXT_CUT</a></span> - Static variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_EXPORT_APPLET\">MENU_ITEM_TEXT_EXPORT_APPLET</a></span> - Static variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_FONT\">MENU_ITEM_TEXT_FONT</a></span> - Static variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_FOREGROUND_COLOR\">MENU_ITEM_TEXT_FOREGROUND_COLOR</a></span> - Static variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_INTERACTIVE\">MENU_ITEM_TEXT_INTERACTIVE</a></span> - Static variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_LOAD_INPUT_SCRIPT\">MENU_ITEM_TEXT_LOAD_INPUT_SCRIPT</a></span> - Static variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_MSKAREL\">MENU_ITEM_TEXT_MSKAREL</a></span> - Static variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_PASTE\">MENU_ITEM_TEXT_PASTE</a></span> - Static variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_PRINT\">MENU_ITEM_TEXT_PRINT</a></span> - Static variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_PRINT_CONSOLE\">MENU_ITEM_TEXT_PRINT_CONSOLE</a></span> - Static variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_QUIT\">MENU_ITEM_TEXT_QUIT</a></span> - Static variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_SAVE\">MENU_ITEM_TEXT_SAVE</a></span> - Static variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_SAVE_AS\">MENU_ITEM_TEXT_SAVE_AS</a></span> - Static variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_SCRIPT\">MENU_ITEM_TEXT_SCRIPT</a></span> - Static variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_SELECT_ALL\">MENU_ITEM_TEXT_SELECT_ALL</a></span> - Static variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_SHOW_PIXEL_GRID\">MENU_ITEM_TEXT_SHOW_PIXEL_GRID</a></span> - Static variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_SHOW_PIXEL_INFO\">MENU_ITEM_TEXT_SHOW_PIXEL_INFO</a></span> - Static variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_SUBMIT_PROJECT\">MENU_ITEM_TEXT_SUBMIT_PROJECT</a></span> - Static variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#menuAction-java.awt.event.ActionEvent-\">menuAction(ActionEvent)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AbstractConsoleProgram.html#menuAction-java.awt.event.ActionEvent-\">menuAction(ActionEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></dt>\n<dd>\n<div class=\"block\">Responds to menu clicks.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#menuAction-java.lang.String-\">menuAction(String)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Called whenever an action event is detected in the menu bar.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#menuAction-java.awt.event.ActionEvent-\">menuAction(ActionEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Called whenever a program action is detected in the menu bar.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Karel.html#menuAction-java.awt.event.ActionEvent-\">menuAction(ActionEvent)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.html#menuAction-java.awt.event.ActionEvent-\">menuAction(ActionEvent)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#menuCanceled-javax.swing.event.MenuEvent-\">menuCanceled(MenuEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Required method of MenuListener interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#menuDeselected-javax.swing.event.MenuEvent-\">menuDeselected(MenuEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Required method of MenuListener interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#menuSelected-javax.swing.event.MenuEvent-\">menuSelected(MenuEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Required method of MenuListener interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#methodInvoke-java.lang.String-java.lang.Object-java.lang.String-java.lang.Object...-\">methodInvoke(String, Object, String, Object...)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#methodInvoke-java.lang.Class-java.lang.Object-java.lang.String-java.lang.Object...-\">methodInvoke(Class&lt;?&gt;, Object, String, Object...)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.MethodNameComparator.html#MethodNameComparator--\">MethodNameComparator()</a></span> - Constructor for class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.MethodNameComparator.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils.MethodNameComparator</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#MIN_BEEPER\">MIN_BEEPER</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#MIN_FANCY\">MIN_FANCY</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#MIN_LABEL\">MIN_LABEL</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#MINIMUM_CONSOLE_HEIGHT\">MINIMUM_CONSOLE_HEIGHT</a></span> - Static variable in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#MINIMUM_CONSOLE_WIDTH\">MINIMUM_CONSOLE_WIDTH</a></span> - Static variable in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#minimumLayoutSize-java.awt.Container-\">minimumLayoutSize(Container)</a></span> - Method in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Calculates the minimum size for the <code>FrameLayout</code> component\n when laid out in the <code>target</code> container.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#MINUS1\">MINUS1</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#MONO\">MONO</a></span> - Static variable in class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Number of channels in a mono sound.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#mouseClicked-java.awt.event.MouseEvent-\">mouseClicked(MouseEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Called when the mouse is clicked.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#mouseClicked-java.awt.event.MouseEvent-\">mouseClicked(MouseEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#mouseClicked-java.awt.event.MouseEvent-\">mouseClicked(MouseEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Called when the mouse is clicked.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#mouseDragged-java.awt.event.MouseEvent-\">mouseDragged(MouseEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Called when the mouse is dragged with the button down.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#mouseDragged-java.awt.event.MouseEvent-\">mouseDragged(MouseEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#mouseDragged-java.awt.event.MouseEvent-\">mouseDragged(MouseEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Called when the mouse is dragged with the button down.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#mouseDraggedHook-java.awt.event.MouseEvent-\">mouseDraggedHook(MouseEvent)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#mouseEntered-java.awt.event.MouseEvent-\">mouseEntered(MouseEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Called when the mouse enters the source (which may be\n either a component or a <code>GObject</code>).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#mouseEntered-java.awt.event.MouseEvent-\">mouseEntered(MouseEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#mouseEntered-java.awt.event.MouseEvent-\">mouseEntered(MouseEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Called when the mouse enters the source (which may be\n either a component or a <code>GObject</code>).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#mouseExited-java.awt.event.MouseEvent-\">mouseExited(MouseEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Called when the mouse exits the source (which may be\n either a component or a <code>GObject</code>).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#mouseExited-java.awt.event.MouseEvent-\">mouseExited(MouseEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#mouseExited-java.awt.event.MouseEvent-\">mouseExited(MouseEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Called when the mouse exits the source (which may be\n either a component or a <code>GObject</code>).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#mouseMoved-java.awt.event.MouseEvent-\">mouseMoved(MouseEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Called when the mouse is moved.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#mouseMoved-java.awt.event.MouseEvent-\">mouseMoved(MouseEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#mouseMoved-java.awt.event.MouseEvent-\">mouseMoved(MouseEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Called when the mouse is moved.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#mousePressed-java.awt.event.MouseEvent-\">mousePressed(MouseEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Called when the mouse button is pressed.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#mousePressed-java.awt.event.MouseEvent-\">mousePressed(MouseEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#mousePressed-java.awt.event.MouseEvent-\">mousePressed(MouseEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Called when the mouse button is pressed.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#mousePressedHook-java.awt.event.MouseEvent-\">mousePressedHook(MouseEvent)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#mouseReleased-java.awt.event.MouseEvent-\">mouseReleased(MouseEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Called when the mouse button is released.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#mouseReleased-java.awt.event.MouseEvent-\">mouseReleased(MouseEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#mouseReleased-java.awt.event.MouseEvent-\">mouseReleased(MouseEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Called when the mouse button is released.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AbstractConsoleProgram.html#mouseWheelMoved-java.awt.event.MouseWheelEvent-\">mouseWheelMoved(MouseWheelEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></dt>\n<dd>\n<div class=\"block\">Implementation of MouseWheelListener interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#mouseWheelMoved-java.awt.event.MouseWheelEvent-\">mouseWheelMoved(MouseWheelEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Implementation of MouseWheelListener interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#move-double-double-\">move(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Moves the object on the screen using the displacements <code>dx</code> and <code>dy</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessKarel.html#move--\">move()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/HeadlessKarel.html\" title=\"class in stanford.karel\">HeadlessKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Karel.html#move--\">move()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelInterface.html#move--\">move()</a></span> - Method in interface stanford.karel.<a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#movePolar-double-double-\">movePolar(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Moves the object using displacements given in polar coordinates.</div>\n</dd>\n<dt><a href=\"stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\"><span class=\"typeNameLink\">Multimap</span></a>&lt;<a href=\"stanford/cs106/collections/Multimap.html\" title=\"type parameter in Multimap\">K</a>,<a href=\"stanford/cs106/collections/Multimap.html\" title=\"type parameter in Multimap\">V</a>&gt; - Interface in <a href=\"stanford/cs106/collections/package-summary.html\">stanford.cs106.collections</a></dt>\n<dd>&nbsp;</dd>\n</dl>\n<a name=\"I:N\">\n<!--   -->\n</a>\n<h2 class=\"title\">N</h2>\n<dl>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Vertex.html#name--\">name()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a></dt>\n<dd>\n<div class=\"block\">Returns the vertex's name.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#nCopies-java.lang.String-int-\">nCopies(String, int)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>\n<div class=\"block\">Returns a string that contains s repeated n times.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#neighbors-java.lang.String-\">neighbors(String)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Returns a collection containing all neighbors, that is, all vertices that are\n directly connected to the given vertex by an outgoing edge.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#neighbors-stanford.cs106.collections.Vertex-\">neighbors(Vertex&lt;V&gt;)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Returns a collection containing all neighbors, that is, all vertices that are\n directly connected to the given vertex by an outgoing edge.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#neighbors-java.lang.String-\">neighbors(String)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Returns a collection containing all neighbors, that is, all vertices that are\n directly connected to the given vertex by an outgoing edge.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#neighbors-stanford.cs106.collections.Vertex-\">neighbors(Vertex&lt;V&gt;)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Returns a collection containing all neighbors, that is, all vertices that are\n directly connected to the given vertex by an outgoing edge.</div>\n</dd>\n<dt><a href=\"stanford/cs106/net/NetworkManager.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">NetworkManager</span></a> - Class in <a href=\"stanford/cs106/net/package-summary.html\">stanford.cs106.net</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/NetworkManager.html#NetworkManager-int-\">NetworkManager(int)</a></span> - Constructor for class stanford.cs106.net.<a href=\"stanford/cs106/net/NetworkManager.html\" title=\"class in stanford.cs106.net\">NetworkManager</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessSuperKarel.html#newColor-int-\">newColor(int)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\">HeadlessSuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/SuperKarel.html#newColor-int-\">newColor(int)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\">SuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.BetterClassLoader.html#newInstance-java.lang.String...-\">newInstance(String...)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.BetterClassLoader.html\" title=\"class in stanford.cs106.reflect\">ClassUtils.BetterClassLoader</a></dt>\n<dd>\n<div class=\"block\">Creates a new loader that loads classes from the given array of file names.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.BetterClassLoader.html#newInstance-java.lang.ClassLoader-java.lang.String...-\">newInstance(ClassLoader, String...)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.BetterClassLoader.html\" title=\"class in stanford.cs106.reflect\">ClassUtils.BetterClassLoader</a></dt>\n<dd>\n<div class=\"block\">Creates a new loader that loads classes from the given array of file names.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#next--\">next()</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Finds and returns the next complete token from this scanner.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#next-java.util.regex.Pattern-\">next(Pattern)</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Returns the next token if it matches the specified pattern.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#next-java.lang.String-\">next(String)</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Returns the next token if it matches the pattern constructed from the \n     specified string.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#nextBigDecimal--\">nextBigDecimal()</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Scans the next token of the input as a BigDecimal.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#nextBigInteger--\">nextBigInteger()</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Scans the next token of the input as a BigInteger.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#nextBigInteger-int-\">nextBigInteger(int)</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Scans the next token of the input as a BigInteger.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#nextBoolean--\">nextBoolean()</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Scans the next token of the input into a boolean value and returns that\n     value.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/RandomGenerator.html#nextBoolean--\">nextBoolean()</a></span> - Method in class acm.util.<a href=\"acm/util/RandomGenerator.html\" title=\"class in acm.util\">RandomGenerator</a></dt>\n<dd>\n<div class=\"block\">Returns a random <code>boolean</code> value that is <code>true</code> or\n <code>false</code> with equal probability.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/RandomGenerator.html#nextBoolean-double-\">nextBoolean(double)</a></span> - Method in class acm.util.<a href=\"acm/util/RandomGenerator.html\" title=\"class in acm.util\">RandomGenerator</a></dt>\n<dd>\n<div class=\"block\">Returns a random <code>boolean</code> value with the specified\n probability.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/RandomGenerator.html#nextBoolean--\">nextBoolean()</a></span> - Method in class stanford.cs106.util.<a href=\"stanford/cs106/util/RandomGenerator.html\" title=\"class in stanford.cs106.util\">RandomGenerator</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/RandomGenerator.html#nextBoolean-double-\">nextBoolean(double)</a></span> - Method in class stanford.cs106.util.<a href=\"stanford/cs106/util/RandomGenerator.html\" title=\"class in stanford.cs106.util\">RandomGenerator</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#nextByte--\">nextByte()</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Scans the next token of the input as a byte.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#nextByte-int-\">nextByte(int)</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Scans the next token of the input as a byte.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/RandomGenerator.html#nextChoice-T...-\">nextChoice(T...)</a></span> - Method in class acm.util.<a href=\"acm/util/RandomGenerator.html\" title=\"class in acm.util\">RandomGenerator</a></dt>\n<dd>\n<div class=\"block\">Randomly chooses one of the values passed and returns it.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/RandomGenerator.html#nextChoice-java.util.List-\">nextChoice(List&lt;T&gt;)</a></span> - Method in class acm.util.<a href=\"acm/util/RandomGenerator.html\" title=\"class in acm.util\">RandomGenerator</a></dt>\n<dd>\n<div class=\"block\">Randomly chooses one of the values passed and returns it.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/RandomGenerator.html#nextChoice-java.lang.Iterable-\">nextChoice(Iterable&lt;T&gt;)</a></span> - Method in class acm.util.<a href=\"acm/util/RandomGenerator.html\" title=\"class in acm.util\">RandomGenerator</a></dt>\n<dd>\n<div class=\"block\">Randomly chooses one of the values passed and returns it.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/RandomGenerator.html#nextColor--\">nextColor()</a></span> - Method in class acm.util.<a href=\"acm/util/RandomGenerator.html\" title=\"class in acm.util\">RandomGenerator</a></dt>\n<dd>\n<div class=\"block\">Returns a random opaque color whose components are chosen uniformly in\n the 0-255 range.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#nextDouble--\">nextDouble()</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Scans the next token of the input as a double.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/RandomGenerator.html#nextDouble-double-double-\">nextDouble(double, double)</a></span> - Method in class acm.util.<a href=\"acm/util/RandomGenerator.html\" title=\"class in acm.util\">RandomGenerator</a></dt>\n<dd>\n<div class=\"block\">Returns the next random real number in the specified range.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/RandomGenerator.html#nextDouble--\">nextDouble()</a></span> - Method in class stanford.cs106.util.<a href=\"stanford/cs106/util/RandomGenerator.html\" title=\"class in stanford.cs106.util\">RandomGenerator</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/RandomGenerator.html#nextDouble-double-double-\">nextDouble(double, double)</a></span> - Method in class stanford.cs106.util.<a href=\"stanford/cs106/util/RandomGenerator.html\" title=\"class in stanford.cs106.util\">RandomGenerator</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#nextFloat--\">nextFloat()</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Scans the next token of the input as a float.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#nextInt--\">nextInt()</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Scans the next token of the input as an int.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#nextInt-int-\">nextInt(int)</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Scans the next token of the input as an int.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/RandomGenerator.html#nextInt--\">nextInt()</a></span> - Method in class acm.util.<a href=\"acm/util/RandomGenerator.html\" title=\"class in acm.util\">RandomGenerator</a></dt>\n<dd>\n<div class=\"block\">Returns the next random integer, which can be any legal integer value.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/RandomGenerator.html#nextInt-int-\">nextInt(int)</a></span> - Method in class acm.util.<a href=\"acm/util/RandomGenerator.html\" title=\"class in acm.util\">RandomGenerator</a></dt>\n<dd>\n<div class=\"block\">Returns the next random integer between 0 and <code>n</code>-1,\n inclusive.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/RandomGenerator.html#nextInt-int-int-\">nextInt(int, int)</a></span> - Method in class acm.util.<a href=\"acm/util/RandomGenerator.html\" title=\"class in acm.util\">RandomGenerator</a></dt>\n<dd>\n<div class=\"block\">Returns the next random integer in the specified range.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/RandomGenerator.html#nextInt--\">nextInt()</a></span> - Method in class stanford.cs106.util.<a href=\"stanford/cs106/util/RandomGenerator.html\" title=\"class in stanford.cs106.util\">RandomGenerator</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/RandomGenerator.html#nextInt-int-\">nextInt(int)</a></span> - Method in class stanford.cs106.util.<a href=\"stanford/cs106/util/RandomGenerator.html\" title=\"class in stanford.cs106.util\">RandomGenerator</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/RandomGenerator.html#nextInt-int-int-\">nextInt(int, int)</a></span> - Method in class stanford.cs106.util.<a href=\"stanford/cs106/util/RandomGenerator.html\" title=\"class in stanford.cs106.util\">RandomGenerator</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#nextLine--\">nextLine()</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Advances this scanner past the current line and returns the input that was\n     skipped.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#nextLong--\">nextLong()</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Scans the next token of the input as a long.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#nextLong-int-\">nextLong(int)</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Scans the next token of the input as a long.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#nextShort--\">nextShort()</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Scans the next token of the input as a short.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#nextShort-int-\">nextShort(int)</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Scans the next token of the input as a short.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Karel.html#noBeepersInBag--\">noBeepersInBag()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelInterface.html#noBeepersInBag--\">noBeepersInBag()</a></span> - Method in interface stanford.karel.<a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Karel.html#noBeepersPresent--\">noBeepersPresent()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelInterface.html#noBeepersPresent--\">noBeepersPresent()</a></span> - Method in interface stanford.karel.<a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#NONE\">NONE</a></span> - Static variable in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Do not resize component</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramInterface.html#NORTH\">NORTH</a></span> - Static variable in interface acm.program.<a href=\"acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></dt>\n<dd>\n<div class=\"block\">Constant specifying the north edge of the container</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.html#NORTH\">NORTH</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#NORTH\">NORTH</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#NORTHEAST\">NORTHEAST</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#NORTHWEST\">NORTHWEST</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\"><span class=\"typeNameLink\">Note</span></a> - Class in <a href=\"stanford/cs106/audio/package-summary.html\">stanford.cs106.audio</a></dt>\n<dd>\n<div class=\"block\">This instructor-provided file represents musical notes and is to be used\n by your Melody class.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/Note.html#Note-java.lang.String-\">Note(String)</a></span> - Constructor for class stanford.cs106.audio.<a href=\"stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\">Note</a></dt>\n<dd>\n<div class=\"block\">Constructs a Note with the information contained in the given line.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/Note.html#Note-double-stanford.cs106.audio.Pitch-int-stanford.cs106.audio.Accidental-boolean-\">Note(double, Pitch, int, Accidental, boolean)</a></span> - Constructor for class stanford.cs106.audio.<a href=\"stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\">Note</a></dt>\n<dd>\n<div class=\"block\">Constructs a Note with the given information.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/Note.html#Note-double-java.lang.String-int-java.lang.String-boolean-\">Note(double, String, int, String, boolean)</a></span> - Constructor for class stanford.cs106.audio.<a href=\"stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\">Note</a></dt>\n<dd>\n<div class=\"block\">Constructs a Note with the given information.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/Note.html#Note-double-boolean-\">Note(double, boolean)</a></span> - Constructor for class stanford.cs106.audio.<a href=\"stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\">Note</a></dt>\n<dd>\n<div class=\"block\">Constructs a new rest (Pitch.R) of the given duration.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/StdAudio.html#note-double-double-double-\">note(double, double, double)</a></span> - Static method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/StdAudio.html\" title=\"class in stanford.cs106.audio\">StdAudio</a></dt>\n<dd>\n<div class=\"block\">Create a note (sine wave) of the given frequency (Hz), for the given\n duration (seconds) scaled to the given volume (amplitude).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Karel.html#notFacingEast--\">notFacingEast()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelInterface.html#notFacingEast--\">notFacingEast()</a></span> - Method in interface stanford.karel.<a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Karel.html#notFacingNorth--\">notFacingNorth()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelInterface.html#notFacingNorth--\">notFacingNorth()</a></span> - Method in interface stanford.karel.<a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Karel.html#notFacingSouth--\">notFacingSouth()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelInterface.html#notFacingSouth--\">notFacingSouth()</a></span> - Method in interface stanford.karel.<a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Karel.html#notFacingWest--\">notFacingWest()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelInterface.html#notFacingWest--\">notFacingWest()</a></span> - Method in interface stanford.karel.<a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Vertex.html#notifyObservers--\">notifyObservers()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Vertex.html#notifyObservers-java.lang.Object-\">notifyObservers(Object)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Vertex.html#number--\">number()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a></dt>\n<dd>\n<div class=\"block\">Returns the value of the internal 'number' vertex marker for this vertex.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#NUMBER_FONT\">NUMBER_FONT</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#NUMBER_THRESHOLD\">NUMBER_THRESHOLD</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#numberLines-java.lang.String-\">numberLines(String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Grid.html#numCols--\">numCols()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Grid.html\" title=\"class in stanford.cs106.collections\">Grid</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Grid.html#numRows--\">numRows()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Grid.html\" title=\"class in stanford.cs106.collections\">Grid</a></dt>\n<dd>&nbsp;</dd>\n</dl>\n<a name=\"I:O\">\n<!--   -->\n</a>\n<h2 class=\"title\">O</h2>\n<dl>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/Note.html#OCTAVE_MAX\">OCTAVE_MAX</a></span> - Static variable in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\">Note</a></dt>\n<dd>\n<div class=\"block\">Constant for the maximum legal value that an octave can have.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/Note.html#OCTAVE_MIN\">OCTAVE_MIN</a></span> - Static variable in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\">Note</a></dt>\n<dd>\n<div class=\"block\">Constant for the minimum legal value that an octave can have.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.html#OK_OPTION\">OK_OPTION</a></span> - Static variable in class acm.gui.<a href=\"acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></dt>\n<dd>\n<div class=\"block\">Return value from <code>showDialog()</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/StdAudio.AudioEventListener.html#onAudioEvent-stanford.cs106.audio.StdAudio.AudioEvent-\">onAudioEvent(StdAudio.AudioEvent)</a></span> - Method in interface stanford.cs106.audio.<a href=\"stanford/cs106/audio/StdAudio.AudioEventListener.html\" title=\"interface in stanford.cs106.audio\">StdAudio.AudioEventListener</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/MediaTools.html#openDataFile-java.lang.String-\">openDataFile(String)</a></span> - Static method in class acm.util.<a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></dt>\n<dd>\n<div class=\"block\">Searches the default datafile search path for a file with the specified\n name and then opens it to create an <code>InputStream</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/MediaTools.html#openDataFile-java.lang.String-java.lang.String-\">openDataFile(String, String)</a></span> - Static method in class acm.util.<a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></dt>\n<dd>\n<div class=\"block\">Searches for a data file with the given name and opens it to create an\n <code>InputStream</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/MediaTools.html#openDataFile-java.net.URL-\">openDataFile(URL)</a></span> - Static method in class acm.util.<a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></dt>\n<dd>\n<div class=\"block\">Opens the specified URL to create an <code>InputStream</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/MediaTools.html#openDataFile-java.net.URL-boolean-\">openDataFile(URL, boolean)</a></span> - Static method in class acm.util.<a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></dt>\n<dd>\n<div class=\"block\">Opens a data file using the specified URL.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/SplClip.html#opened-java.lang.Object-java.util.Map-\">opened(Object, Map)</a></span> - Method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/SplClip.html\" title=\"class in stanford.cs106.audio\">SplClip</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#openFile-java.lang.String-\">openFile(String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Opens the given file for reading.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#openFile-java.lang.String-java.lang.String-\">openFile(String, String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Opens the given file from within the given directory.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/ResourceUtils.html#openFile-java.lang.String-\">openFile(String)</a></span> - Static method in class stanford.cs106.io.<a href=\"stanford/cs106/io/ResourceUtils.html\" title=\"class in stanford.cs106.io\">ResourceUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#openFileFromDisk-java.lang.String-\">openFileFromDisk(String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Opens the given file from within the current working directory.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#openFileFromDisk-java.lang.String-java.lang.String-\">openFileFromDisk(String, String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Opens the given file from within the given directory.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#openFileFromJAR-java.lang.String-\">openFileFromJAR(String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Opens the given file from inside the app's JAR archive.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#openFileFromJAR-java.lang.String-java.lang.String-\">openFileFromJAR(String, String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Opens the given file from within the app's JAR archive in the given directory.</div>\n</dd>\n<dt><a href=\"stanford/cs106/util/OperatingSystem.html\" title=\"enum in stanford.cs106.util\"><span class=\"typeNameLink\">OperatingSystem</span></a> - Enum in <a href=\"stanford/cs106/util/package-summary.html\">stanford.cs106.util</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#oppositeDirection-int-\">oppositeDirection(int)</a></span> - Static method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessSuperKarel.html#ORANGE\">ORANGE</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\">HeadlessSuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.html#ORANGE\">ORANGE</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/SuperKarel.html#ORANGE\">ORANGE</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\">SuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#outDegree-java.lang.String-\">outDegree(String)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Returns the number of outgoing edges from the given vertex.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#outDegree-stanford.cs106.collections.Vertex-\">outDegree(Vertex&lt;V&gt;)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Returns the number of outgoing edges from the given vertex.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#outDegree-java.lang.String-\">outDegree(String)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Returns the number of outgoing edges from the given vertex.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#outDegree-stanford.cs106.collections.Vertex-\">outDegree(Vertex&lt;V&gt;)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Returns the number of outgoing edges from the given vertex.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#outOfBounds-java.awt.Point-\">outOfBounds(Point)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#outOfBounds-int-int-\">outOfBounds(int, int)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/ConsoleModel.html#OUTPUT_STYLE\">OUTPUT_STYLE</a></span> - Static variable in interface acm.io.<a href=\"acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/io/OutputCapturer.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">OutputCapturer</span></a> - Class in <a href=\"stanford/cs106/io/package-summary.html\">stanford.cs106.io</a></dt>\n<dd>\n<div class=\"block\">for capturing console output (for methods that do printlns)</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/OutputCapturer.html#OutputCapturer--\">OutputCapturer()</a></span> - Constructor for class stanford.cs106.io.<a href=\"stanford/cs106/io/OutputCapturer.html\" title=\"class in stanford.cs106.io\">OutputCapturer</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ConsoleProgram.html#overrideInput-java.lang.String-\">overrideInput(String)</a></span> - Method in class acm.program.<a href=\"acm/program/ConsoleProgram.html\" title=\"class in acm.program\">ConsoleProgram</a></dt>\n<dd>\n<div class=\"block\">Signals the ConsoleProgram to use the input profile read from the file\n with inputFilename, rather than prompt the user for input.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ConsoleProgram.html#overrideInput-java.io.InputStream-\">overrideInput(InputStream)</a></span> - Method in class acm.program.<a href=\"acm/program/ConsoleProgram.html\" title=\"class in acm.program\">ConsoleProgram</a></dt>\n<dd>\n<div class=\"block\">Signals the ConsoleProgram to use the input profile read from the given stream,\n rather than prompt the user for input.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ConsoleProgram.html#overrideInput-java.io.Reader-\">overrideInput(Reader)</a></span> - Method in class acm.program.<a href=\"acm/program/ConsoleProgram.html\" title=\"class in acm.program\">ConsoleProgram</a></dt>\n<dd>\n<div class=\"block\">Signals the ConsoleProgram to use the input profile read from the given reader,\n rather than prompt the user for input.</div>\n</dd>\n</dl>\n<a name=\"I:P\">\n<!--   -->\n</a>\n<h2 class=\"title\">P</h2>\n<dl>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#pack--\">pack()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Resizes this program to exactly fit the preferred size of its contents.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#pad-javax.swing.JComponent-int-int-\">pad(JComponent, int, int)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#padL-int-int-\">padL(int, int)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#padL-java.lang.String-int-\">padL(String, int)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#padNumber-int-int-\">padNumber(int, int)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#padNumber-int-int-boolean-\">padNumber(int, int, boolean)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#padR-int-int-\">padR(int, int)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#padR-java.lang.String-int-\">padR(String, int)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#paint-java.awt.Graphics-\">paint(Graphics)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">All subclasses of <code>GObject</code> must define a <code>paint</code>\n method which allows the object to draw itself on the <code>Graphics</code>\n context passed in as the parameter <code>g</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/G3DRect.html#paint2d-java.awt.Graphics2D-\">paint2d(Graphics2D)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/G3DRect.html\" title=\"class in acm.graphics\">G3DRect</a></dt>\n<dd>\n<div class=\"block\">Implements the <code>paint2d</code> operation for this graphical object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCompound.html#paint2d-java.awt.Graphics2D-\">paint2d(Graphics2D)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCompound.html\" title=\"class in acm.graphics\">GCompound</a></dt>\n<dd>\n<div class=\"block\">Implements the <code>paint2d</code> operation for this graphical object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GImage.html#paint2d-java.awt.Graphics2D-\">paint2d(Graphics2D)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GImage.html\" title=\"class in acm.graphics\">GImage</a></dt>\n<dd>\n<div class=\"block\">Implements the <code>paint2d</code> operation for this graphical object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLabel.html#paint2d-java.awt.Graphics2D-\">paint2d(Graphics2D)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLabel.html\" title=\"class in acm.graphics\">GLabel</a></dt>\n<dd>\n<div class=\"block\">Implements the <code>paint2d</code> operation for this graphical object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLine.html#paint2d-java.awt.Graphics2D-\">paint2d(Graphics2D)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLine.html\" title=\"class in acm.graphics\">GLine</a></dt>\n<dd>\n<div class=\"block\">Implements the <code>paint2d</code> operation for this graphical object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLineGroup.html#paint2d-java.awt.Graphics2D-\">paint2d(Graphics2D)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLineGroup.html\" title=\"class in acm.graphics\">GLineGroup</a></dt>\n<dd>\n<div class=\"block\">Paints the group of lines on the screen.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#paint2d-java.awt.Graphics2D-\">paint2d(Graphics2D)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">All subclasses of <code>GObject</code> must define a <code>paint2d</code>\n method which allows the object to draw itself on the <code>Graphics</code>\n context passed in as the parameter <code>g</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GOval.html#paint2d-java.awt.Graphics2D-\">paint2d(Graphics2D)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GOval.html\" title=\"class in acm.graphics\">GOval</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#paintComponent-java.awt.Graphics-\">paintComponent(Graphics)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Paints the canvas.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JPlaceholderTextField.html#paintComponent-java.awt.Graphics-\">paintComponent(Graphics)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JPlaceholderTextField.html\" title=\"class in acm.gui\">JPlaceholderTextField</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#paintComponent-java.awt.Graphics-\">paintComponent(Graphics)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessSuperKarel.html#paintCorner-java.awt.Color-\">paintCorner(Color)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\">HeadlessSuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessSuperKarel.html#paintCorner-int-\">paintCorner(int)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\">HeadlessSuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessSuperKarel.html#paintCorner-double-double-double-\">paintCorner(double, double, double)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\">HeadlessSuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/SuperKarel.html#paintCorner-java.awt.Color-\">paintCorner(Color)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\">SuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/SuperKarel.html#paintCorner-int-\">paintCorner(int)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\">SuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/SuperKarel.html#paintCorner-double-double-double-\">paintCorner(double, double, double)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\">SuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLabel.html#paramString--\">paramString()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLabel.html\" title=\"class in acm.graphics\">GLabel</a></dt>\n<dd>\n<div class=\"block\">Returns a string indicating the parameters of this object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLine.html#paramString--\">paramString()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLine.html\" title=\"class in acm.graphics\">GLine</a></dt>\n<dd>\n<div class=\"block\">Returns a string indicating the parameters of this object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLineGroup.html#paramString--\">paramString()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLineGroup.html\" title=\"class in acm.graphics\">GLineGroup</a></dt>\n<dd>\n<div class=\"block\">Returns a string indicating the parameters of this object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#paramString--\">paramString()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Returns a string indicating the parameters of this object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#parseBooleanArray-java.lang.String-\">parseBooleanArray(String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#parseCharArray-java.lang.String-\">parseCharArray(String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#parseDoubleArray-java.lang.String-\">parseDoubleArray(String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#parseIntArray-java.lang.String-\">parseIntArray(String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#parseIntArray2D-java.lang.String-\">parseIntArray2D(String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#parsePoint-java.lang.String-\">parsePoint(String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#parseStringArray-java.lang.String-\">parseStringArray(String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#parseValue-java.lang.Class-java.lang.String-\">parseValue(Class&lt;?&gt;, String)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#parseValue-java.lang.Class-java.lang.reflect.Type-java.lang.String-\">parseValue(Class&lt;?&gt;, Type, String)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/Assert.html#pass-java.lang.String-\">pass(String)</a></span> - Static method in class stanford.cs106.junit.<a href=\"stanford/cs106/junit/Assert.html\" title=\"class in stanford.cs106.junit\">Assert</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/ConsoleModel.html#paste--\">paste()</a></span> - Method in interface acm.io.<a href=\"acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#paste--\">paste()</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/StandardConsoleModel.html#paste--\">paste()</a></span> - Method in class acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SystemConsoleModel.html#paste--\">paste()</a></span> - Method in class acm.io.<a href=\"acm/io/SystemConsoleModel.html\" title=\"class in acm.io\">SystemConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"acm/util/PatchingClassLoader.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">PatchingClassLoader</span></a> - Class in <a href=\"acm/util/package-summary.html\">acm.util</a></dt>\n<dd>\n<div class=\"block\">A ClassLoader that allows you to patch what the superclass is for an existing class\n as it is loaded.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/PatchingClassLoader.html#PatchingClassLoader-java.lang.String-java.lang.Class-\">PatchingClassLoader(String, Class&lt;?&gt;)</a></span> - Constructor for class acm.util.<a href=\"acm/util/PatchingClassLoader.html\" title=\"class in acm.util\">PatchingClassLoader</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/PatchingClassLoader.html#PatchingClassLoader-java.lang.String-java.lang.String-\">PatchingClassLoader(String, String)</a></span> - Constructor for class acm.util.<a href=\"acm/util/PatchingClassLoader.html\" title=\"class in acm.util\">PatchingClassLoader</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#pause-double-\">pause(double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Delays the calling thread for the specified time, which is expressed in\n milliseconds.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#pause-double-\">pause(double)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Causes the program to delay for the given number of milliseconds.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#pause-double-\">pause(double)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#pause-double-\">pause(double)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Delays the calling thread for the specified time, which is expressed in\n milliseconds.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramInterface.html#pause-double-\">pause(double)</a></span> - Method in interface acm.program.<a href=\"acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessSuperKarel.html#pause-double-\">pause(double)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\">HeadlessSuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelInterface.html#pause-double-\">pause(double)</a></span> - Method in interface stanford.karel.<a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/SuperKarel.html#pause-double-\">pause(double)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\">SuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#pauseTick--\">pauseTick()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Sets a 'pause tick' flag.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#PGDN\">PGDN</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#PGUP\">PGUP</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Karel.html#pickBeeper--\">pickBeeper()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelInterface.html#pickBeeper--\">pickBeeper()</a></span> - Method in interface stanford.karel.<a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessSuperKarel.html#PINK\">PINK</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\">HeadlessSuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.html#PINK\">PINK</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/SuperKarel.html#PINK\">PINK</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\">SuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/audio/Pitch.html\" title=\"enum in stanford.cs106.audio\"><span class=\"typeNameLink\">Pitch</span></a> - Enum in <a href=\"stanford/cs106/audio/package-summary.html\">stanford.cs106.audio</a></dt>\n<dd>\n<div class=\"block\">A Pitch represents a musical pitch.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#play--\">play()</a></span> - Method in class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Plays the sound through the computer's audio system.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/Note.html#play--\">play()</a></span> - Method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\">Note</a></dt>\n<dd>\n<div class=\"block\">Plays this note through the underlying audio system.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/SplClip.html#play--\">play()</a></span> - Method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/SplClip.html\" title=\"class in stanford.cs106.audio\">SplClip</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/StdAudio.html#play-double-\">play(double)</a></span> - Static method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/StdAudio.html\" title=\"class in stanford.cs106.audio\">StdAudio</a></dt>\n<dd>\n<div class=\"block\">Write one sample (between -1.0 and +1.0) to standard audio.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/StdAudio.html#play-double:A-\">play(double[])</a></span> - Static method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/StdAudio.html\" title=\"class in stanford.cs106.audio\">StdAudio</a></dt>\n<dd>\n<div class=\"block\">Write an array of samples (between -1.0 and +1.0) to standard audio.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/StdAudio.html#play-double:A-double-\">play(double[], double)</a></span> - Static method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/StdAudio.html\" title=\"class in stanford.cs106.audio\">StdAudio</a></dt>\n<dd>\n<div class=\"block\">Write an array of samples (between -1.0 and +1.0) to standard audio.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/StdAudio.html#play-stanford.cs106.audio.Note-double:A-double-\">play(Note, double[], double)</a></span> - Static method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/StdAudio.html\" title=\"class in stanford.cs106.audio\">StdAudio</a></dt>\n<dd>\n<div class=\"block\">Write an array of samples (between -1.0 and +1.0) to standard audio.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/StdAudio.html#play-java.lang.String-\">play(String)</a></span> - Static method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/StdAudio.html\" title=\"class in stanford.cs106.audio\">StdAudio</a></dt>\n<dd>\n<div class=\"block\">Play a sound file (in .wav or .au format) in a background thread.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#plural-int-\">plural(int)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#PLUS1\">PLUS1</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#popupMenuCanceled-javax.swing.event.PopupMenuEvent-\">popupMenuCanceled(PopupMenuEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Required method of PopupMenuListener interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#popupMenuWillBecomeInvisible-javax.swing.event.PopupMenuEvent-\">popupMenuWillBecomeInvisible(PopupMenuEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Required method of PopupMenuListener interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#popupMenuWillBecomeVisible-javax.swing.event.PopupMenuEvent-\">popupMenuWillBecomeVisible(PopupMenuEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Required method of PopupMenuListener interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/SimpleServer.html#portIsAvailable--\">portIsAvailable()</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/SimpleServer.html\" title=\"class in stanford.cs106.net\">SimpleServer</a></dt>\n<dd>\n<div class=\"block\">Returns true if this server's port is available for listening.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/SimpleServer.html#portIsAvailable-int-\">portIsAvailable(int)</a></span> - Static method in class stanford.cs106.net.<a href=\"stanford/cs106/net/SimpleServer.html\" title=\"class in stanford.cs106.net\">SimpleServer</a></dt>\n<dd>\n<div class=\"block\">Returns true if the given port is available for listening.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#preferredLayoutSize-java.awt.Container-\">preferredLayoutSize(Container)</a></span> - Method in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Calculates the preferred size for the <code>FrameLayout</code> component\n when laid out in the <code>target</code> container.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Lexicon.html#prefixCount--\">prefixCount()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Lexicon.html\" title=\"class in stanford.cs106.collections\">Lexicon</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JListOptionPane.html#pressedOk--\">pressedOk()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JListOptionPane.html\" title=\"class in acm.gui\">JListOptionPane</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Vertex.html#previous--\">previous()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a></dt>\n<dd>\n<div class=\"block\">Returns the value of the internal 'previous' vertex marker for this vertex.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#primitiveFor-java.lang.Class-\">primitiveFor(Class&lt;?&gt;)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/ConsoleModel.html#print-java.lang.String-int-\">print(String, int)</a></span> - Method in interface acm.io.<a href=\"acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/ConsoleModel.html#print-java.awt.PrintJob-\">print(PrintJob)</a></span> - Method in interface acm.io.<a href=\"acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#print-java.lang.String-\">print(String)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#print-boolean-\">print(boolean)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#print-char-\">print(char)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#print-double-\">print(double)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#print-float-\">print(float)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#print-int-\">print(int)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#print-long-\">print(long)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#print-java.lang.Object-\">print(Object)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/StandardConsoleModel.html#print-java.lang.String-int-\">print(String, int)</a></span> - Method in class acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/StandardConsoleModel.html#print-java.awt.PrintJob-\">print(PrintJob)</a></span> - Method in class acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SystemConsoleModel.html#print-java.lang.String-int-\">print(String, int)</a></span> - Method in class acm.io.<a href=\"acm/io/SystemConsoleModel.html\" title=\"class in acm.io\">SystemConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SystemConsoleModel.html#print-java.awt.PrintJob-\">print(PrintJob)</a></span> - Method in class acm.io.<a href=\"acm/io/SystemConsoleModel.html\" title=\"class in acm.io\">SystemConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#print-java.lang.String-\">print(String)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Displays the argument value on the console, leaving the cursor at the end of\n the output.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#print-boolean-\">print(boolean)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Makes sure that <code>print</code> can display a <code>boolean</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#print-char-\">print(char)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Makes sure that <code>print</code> can display a <code>char</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#print-double-\">print(double)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Makes sure that <code>print</code> can display a <code>double</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#print-float-\">print(float)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Makes sure that <code>print</code> can display a <code>float</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#print-int-\">print(int)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Makes sure that <code>print</code> can display an <code>int</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#print-long-\">print(long)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Makes sure that <code>print</code> can display a <code>long</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#print-java.lang.Object-\">print(Object)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Makes sure that <code>print</code> can display an <code>Object</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ConsoleProgram.html#print-java.lang.String-\">print(String)</a></span> - Method in class acm.program.<a href=\"acm/program/ConsoleProgram.html\" title=\"class in acm.program\">ConsoleProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ConsoleProgram.html#print-java.lang.String-java.awt.Color-\">print(String, Color)</a></span> - Method in class acm.program.<a href=\"acm/program/ConsoleProgram.html\" title=\"class in acm.program\">ConsoleProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#print-java.lang.Object-\">print(Object)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#print-java.lang.String-\">print(String)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#print-boolean-\">print(boolean)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Makes sure that <code>print</code> can display a <code>boolean</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#print-boolean-java.awt.Color-\">print(boolean, Color)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Prints the given value in the given color.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#print-char-\">print(char)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Makes sure that <code>print</code> can display a <code>char</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#print-char-java.awt.Color-\">print(char, Color)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Prints the given value in the given color.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#print-double-\">print(double)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Makes sure that <code>print</code> can display a <code>double</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#print-double-java.awt.Color-\">print(double, Color)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Prints the given value in the given color.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#print-float-\">print(float)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Makes sure that <code>print</code> can display a <code>float</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#print-float-java.awt.Color-\">print(float, Color)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Prints the given value in the given color.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#print-int-\">print(int)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Makes sure that <code>print</code> can display an <code>int</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#print-int-java.awt.Color-\">print(int, Color)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Prints the given value in the given color.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#print-long-\">print(long)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Makes sure that <code>print</code> can display a <code>long</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#print-long-java.awt.Color-\">print(long, Color)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Prints the given value in the given color.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#print-java.lang.Object-\">print(Object)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Makes sure that <code>print</code> can display an <code>Object</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#print-java.lang.Object-java.awt.Color-\">print(Object, Color)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Prints the given value in the given color.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#print-java.lang.String-\">print(String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Displays the argument value on the console, leaving the cursor at the end of\n the output.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#print-java.lang.String-java.awt.Color-\">print(String, Color)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Prints the given string in the given color.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramInterface.html#print-java.lang.Object-\">print(Object)</a></span> - Method in interface acm.program.<a href=\"acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramInterface.html#print-java.lang.String-\">print(String)</a></span> - Method in interface acm.program.<a href=\"acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/LimitedPrintStream.html#print-int-\">print(int)</a></span> - Method in class stanford.cs106.io.<a href=\"stanford/cs106/io/LimitedPrintStream.html\" title=\"class in stanford.cs106.io\">LimitedPrintStream</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/LimitedPrintStream.html#print-double-\">print(double)</a></span> - Method in class stanford.cs106.io.<a href=\"stanford/cs106/io/LimitedPrintStream.html\" title=\"class in stanford.cs106.io\">LimitedPrintStream</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/LimitedPrintStream.html#print-float-\">print(float)</a></span> - Method in class stanford.cs106.io.<a href=\"stanford/cs106/io/LimitedPrintStream.html\" title=\"class in stanford.cs106.io\">LimitedPrintStream</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/LimitedPrintStream.html#print-long-\">print(long)</a></span> - Method in class stanford.cs106.io.<a href=\"stanford/cs106/io/LimitedPrintStream.html\" title=\"class in stanford.cs106.io\">LimitedPrintStream</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/LimitedPrintStream.html#print-short-\">print(short)</a></span> - Method in class stanford.cs106.io.<a href=\"stanford/cs106/io/LimitedPrintStream.html\" title=\"class in stanford.cs106.io\">LimitedPrintStream</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/LimitedPrintStream.html#print-byte-\">print(byte)</a></span> - Method in class stanford.cs106.io.<a href=\"stanford/cs106/io/LimitedPrintStream.html\" title=\"class in stanford.cs106.io\">LimitedPrintStream</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/LimitedPrintStream.html#print-boolean-\">print(boolean)</a></span> - Method in class stanford.cs106.io.<a href=\"stanford/cs106/io/LimitedPrintStream.html\" title=\"class in stanford.cs106.io\">LimitedPrintStream</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/LimitedPrintStream.html#print-char-\">print(char)</a></span> - Method in class stanford.cs106.io.<a href=\"stanford/cs106/io/LimitedPrintStream.html\" title=\"class in stanford.cs106.io\">LimitedPrintStream</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/LimitedPrintStream.html#print-java.lang.Object-\">print(Object)</a></span> - Method in class stanford.cs106.io.<a href=\"stanford/cs106/io/LimitedPrintStream.html\" title=\"class in stanford.cs106.io\">LimitedPrintStream</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/LimitedPrintStream.html#print-java.lang.String-\">print(String)</a></span> - Method in class stanford.cs106.io.<a href=\"stanford/cs106/io/LimitedPrintStream.html\" title=\"class in stanford.cs106.io\">LimitedPrintStream</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessKarel.html#print-java.lang.Object-\">print(Object)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/HeadlessKarel.html\" title=\"class in stanford.karel\">HeadlessKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessKarel.html#print-java.lang.String-\">print(String)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/HeadlessKarel.html\" title=\"class in stanford.karel\">HeadlessKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/StandardConsoleModel.html#printCallback-java.lang.String-int-\">printCallback(String, int)</a></span> - Method in class acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#printComponentHierarchy-java.awt.Component-\">printComponentHierarchy(Component)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#printConsole--\">printConsole()</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#printConsole-java.awt.PrintJob-\">printConsole(PrintJob)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#printf-java.lang.String-java.lang.Object...-\">printf(String, Object...)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Writes a formatted string to this output stream using the specified format string and arguments.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ConsoleProgram.html#printf-java.lang.String-java.lang.Object...-\">printf(String, Object...)</a></span> - Method in class acm.program.<a href=\"acm/program/ConsoleProgram.html\" title=\"class in acm.program\">ConsoleProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#printf-java.lang.String-java.lang.Object...-\">printf(String, Object...)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#printf-java.lang.String-java.lang.Object...-\">printf(String, Object...)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Writes a formatted string to this output stream using the specified format string and arguments.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramInterface.html#printf-java.lang.String-java.lang.Object...-\">printf(String, Object...)</a></span> - Method in interface acm.program.<a href=\"acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessKarel.html#printf-java.lang.String-java.lang.Object...-\">printf(String, Object...)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/HeadlessKarel.html\" title=\"class in stanford.karel\">HeadlessKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#println--\">println()</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#println-java.lang.String-\">println(String)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#println-boolean-\">println(boolean)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#println-char-\">println(char)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#println-double-\">println(double)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#println-float-\">println(float)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#println-int-\">println(int)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#println-long-\">println(long)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#println-java.lang.Object-\">println(Object)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#println--\">println()</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Advances the console cursor to the beginning of the next line.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#println-java.lang.String-\">println(String)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Displays the argument value on the console and then advances the cursor\n to the beginning of the next line.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#println-boolean-\">println(boolean)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Makes sure that <code>println</code> can display a <code>boolean</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#println-char-\">println(char)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Makes sure that <code>println</code> can display a <code>char</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#println-double-\">println(double)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Makes sure that <code>println</code> can display a <code>double</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#println-float-\">println(float)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Makes sure that <code>println</code> can display a <code>float</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#println-int-\">println(int)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Makes sure that <code>println</code> can display an <code>int</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#println-long-\">println(long)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Makes sure that <code>println</code> can display a <code>long</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#println-java.lang.Object-\">println(Object)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Makes sure that <code>println</code> can display an <code>Object</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ConsoleProgram.html#println--\">println()</a></span> - Method in class acm.program.<a href=\"acm/program/ConsoleProgram.html\" title=\"class in acm.program\">ConsoleProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ConsoleProgram.html#println-java.lang.String-\">println(String)</a></span> - Method in class acm.program.<a href=\"acm/program/ConsoleProgram.html\" title=\"class in acm.program\">ConsoleProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ConsoleProgram.html#println-java.lang.String-java.awt.Color-\">println(String, Color)</a></span> - Method in class acm.program.<a href=\"acm/program/ConsoleProgram.html\" title=\"class in acm.program\">ConsoleProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#println--\">println()</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#println-java.lang.Object-\">println(Object)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#println-java.lang.String-\">println(String)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#println--\">println()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Advances the console cursor to the beginning of the next line.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#println-boolean-\">println(boolean)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Makes sure that <code>println</code> can display a <code>boolean</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#println-boolean-java.awt.Color-\">println(boolean, Color)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Prints the given value in the given color and then advances the cursor to the beginning of the next line.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#println-char-\">println(char)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Makes sure that <code>println</code> can display a <code>char</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#println-char-java.awt.Color-\">println(char, Color)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Prints the given value in the given color and then advances the cursor to the beginning of the next line.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#println-double-\">println(double)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Makes sure that <code>println</code> can display a <code>double</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#println-double-java.awt.Color-\">println(double, Color)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Prints the given value in the given color and then advances the cursor to the beginning of the next line.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#println-float-\">println(float)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Makes sure that <code>println</code> can display a <code>float</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#println-float-java.awt.Color-\">println(float, Color)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Prints the given value in the given color and then advances the cursor to the beginning of the next line.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#println-int-\">println(int)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Makes sure that <code>println</code> can display an <code>int</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#println-int-java.awt.Color-\">println(int, Color)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Prints the given value in the given color and then advances the cursor to the beginning of the next line.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#println-long-\">println(long)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Makes sure that <code>println</code> can display a <code>long</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#println-long-java.awt.Color-\">println(long, Color)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Prints the given value in the given color and then advances the cursor to the beginning of the next line.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#println-java.lang.Object-\">println(Object)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Makes sure that <code>println</code> can display an <code>Object</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#println-java.lang.Object-java.awt.Color-\">println(Object, Color)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Prints the given value in the given color and then advances the cursor to the beginning of the next line.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#println-java.lang.String-\">println(String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Displays the argument value on the console and then advances the cursor\n to the beginning of the next line.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#println-java.lang.String-java.awt.Color-\">println(String, Color)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Prints the given string in the given color and then advances the cursor to the beginning of the next line.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramInterface.html#println--\">println()</a></span> - Method in interface acm.program.<a href=\"acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramInterface.html#println-java.lang.Object-\">println(Object)</a></span> - Method in interface acm.program.<a href=\"acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramInterface.html#println-java.lang.String-\">println(String)</a></span> - Method in interface acm.program.<a href=\"acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/LimitedPrintStream.html#println-int-\">println(int)</a></span> - Method in class stanford.cs106.io.<a href=\"stanford/cs106/io/LimitedPrintStream.html\" title=\"class in stanford.cs106.io\">LimitedPrintStream</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/LimitedPrintStream.html#println-double-\">println(double)</a></span> - Method in class stanford.cs106.io.<a href=\"stanford/cs106/io/LimitedPrintStream.html\" title=\"class in stanford.cs106.io\">LimitedPrintStream</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/LimitedPrintStream.html#println-float-\">println(float)</a></span> - Method in class stanford.cs106.io.<a href=\"stanford/cs106/io/LimitedPrintStream.html\" title=\"class in stanford.cs106.io\">LimitedPrintStream</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/LimitedPrintStream.html#println-long-\">println(long)</a></span> - Method in class stanford.cs106.io.<a href=\"stanford/cs106/io/LimitedPrintStream.html\" title=\"class in stanford.cs106.io\">LimitedPrintStream</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/LimitedPrintStream.html#println-short-\">println(short)</a></span> - Method in class stanford.cs106.io.<a href=\"stanford/cs106/io/LimitedPrintStream.html\" title=\"class in stanford.cs106.io\">LimitedPrintStream</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/LimitedPrintStream.html#println-byte-\">println(byte)</a></span> - Method in class stanford.cs106.io.<a href=\"stanford/cs106/io/LimitedPrintStream.html\" title=\"class in stanford.cs106.io\">LimitedPrintStream</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/LimitedPrintStream.html#println-boolean-\">println(boolean)</a></span> - Method in class stanford.cs106.io.<a href=\"stanford/cs106/io/LimitedPrintStream.html\" title=\"class in stanford.cs106.io\">LimitedPrintStream</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/LimitedPrintStream.html#println-char-\">println(char)</a></span> - Method in class stanford.cs106.io.<a href=\"stanford/cs106/io/LimitedPrintStream.html\" title=\"class in stanford.cs106.io\">LimitedPrintStream</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/LimitedPrintStream.html#println-java.lang.Object-\">println(Object)</a></span> - Method in class stanford.cs106.io.<a href=\"stanford/cs106/io/LimitedPrintStream.html\" title=\"class in stanford.cs106.io\">LimitedPrintStream</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/LimitedPrintStream.html#println-java.lang.String-\">println(String)</a></span> - Method in class stanford.cs106.io.<a href=\"stanford/cs106/io/LimitedPrintStream.html\" title=\"class in stanford.cs106.io\">LimitedPrintStream</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/RecursionUtils.html#println-boolean-\">println(boolean)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/RecursionUtils.html\" title=\"class in stanford.cs106.util\">RecursionUtils</a></dt>\n<dd>\n<div class=\"block\">Prints the given value, with each line indented relative to how many\n recursive calls are currently on top of the call stack.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/RecursionUtils.html#println-char-\">println(char)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/RecursionUtils.html\" title=\"class in stanford.cs106.util\">RecursionUtils</a></dt>\n<dd>\n<div class=\"block\">Prints the given value, with each line indented relative to how many\n recursive calls are currently on top of the call stack.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/RecursionUtils.html#println-double-\">println(double)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/RecursionUtils.html\" title=\"class in stanford.cs106.util\">RecursionUtils</a></dt>\n<dd>\n<div class=\"block\">Prints the given value, with each line indented relative to how many\n recursive calls are currently on top of the call stack.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/RecursionUtils.html#println-int-\">println(int)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/RecursionUtils.html\" title=\"class in stanford.cs106.util\">RecursionUtils</a></dt>\n<dd>\n<div class=\"block\">Prints the given value, with each line indented relative to how many\n recursive calls are currently on top of the call stack.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/RecursionUtils.html#println-long-\">println(long)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/RecursionUtils.html\" title=\"class in stanford.cs106.util\">RecursionUtils</a></dt>\n<dd>\n<div class=\"block\">Prints the given value, with each line indented relative to how many\n recursive calls are currently on top of the call stack.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/RecursionUtils.html#println-java.lang.Object-\">println(Object)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/RecursionUtils.html\" title=\"class in stanford.cs106.util\">RecursionUtils</a></dt>\n<dd>\n<div class=\"block\">Prints the given value, with each line indented relative to how many\n recursive calls are currently on top of the call stack.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/RecursionUtils.html#println-java.lang.String-\">println(String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/RecursionUtils.html\" title=\"class in stanford.cs106.util\">RecursionUtils</a></dt>\n<dd>\n<div class=\"block\">Prints the given string, with each line indented relative to how many\n recursive calls are currently on top of the call stack.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessKarel.html#println--\">println()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/HeadlessKarel.html\" title=\"class in stanford.karel\">HeadlessKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessKarel.html#println-java.lang.Object-\">println(Object)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/HeadlessKarel.html\" title=\"class in stanford.karel\">HeadlessKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessKarel.html#println-java.lang.String-\">println(String)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/HeadlessKarel.html\" title=\"class in stanford.karel\">HeadlessKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/util/ProcessUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">ProcessUtils</span></a> - Class in <a href=\"stanford/cs106/util/package-summary.html\">stanford.cs106.util</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"acm/program/Program.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Program</span></a> - Class in <a href=\"acm/program/package-summary.html\">acm.program</a></dt>\n<dd>\n<div class=\"block\">This class is the superclass for all executable\n programs in the <code>acm.program</code> package.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#Program--\">Program()</a></span> - Constructor for class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">This code initializes the program data structures.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AbstractConsoleProgram.html#PROGRAM_COMPLETED_TITLE_SUFFIX\">PROGRAM_COMPLETED_TITLE_SUFFIX</a></span> - Static variable in class acm.program.<a href=\"acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"acm/program/ProgramInterface.html\" title=\"interface in acm.program\"><span class=\"typeNameLink\">ProgramInterface</span></a> - Interface in <a href=\"acm/program/package-summary.html\">acm.program</a></dt>\n<dd>\n<div class=\"block\">This interface contains all methods that Program classes are required to implement.</div>\n</dd>\n<dt><a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">ProgramMenuBar</span></a> - Class in <a href=\"acm/program/package-summary.html\">acm.program</a></dt>\n<dd>\n<div class=\"block\">This class standardizes the menu bars used in the ACM program package.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#ProgramMenuBar-acm.program.Program-\">ProgramMenuBar(Program)</a></span> - Constructor for class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>\n<div class=\"block\">Creates an empty <code>ProgramMenuBar</code>.</div>\n</dd>\n<dt><a href=\"acm/program/ProgramStartupFlags.html\" title=\"interface in acm.program\"><span class=\"typeNameLink\">ProgramStartupFlags</span></a> - Interface in <a href=\"acm/program/package-summary.html\">acm.program</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/SplClip.html#progress-int-long-byte:A-java.util.Map-\">progress(int, long, byte[], Map)</a></span> - Method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/SplClip.html\" title=\"class in stanford.cs106.audio\">SplClip</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#prompt-java.lang.String-\">prompt(String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Pops up a dialog box displaying the given message and asking the user to type a response.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AbstractConsoleProgram.html#promptUserForFile-java.lang.String-\">promptUserForFile(String)</a></span> - Method in class acm.program.<a href=\"acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></dt>\n<dd>\n<div class=\"block\">Asks the user to type a file name, re-prompting until the user types a\n file that exists in the current directory.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AbstractConsoleProgram.html#promptUserForFile-java.lang.String-java.lang.String-\">promptUserForFile(String, String)</a></span> - Method in class acm.program.<a href=\"acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></dt>\n<dd>\n<div class=\"block\">Asks the user to type a file name, re-prompting until the user types a\n file that exists in the given directory.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AbstractConsoleProgram.html#promptUserForFile-java.lang.String-java.lang.String-java.lang.String-\">promptUserForFile(String, String, String)</a></span> - Method in class acm.program.<a href=\"acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></dt>\n<dd>\n<div class=\"block\">Asks the user to type a file name, re-prompting until the user types a\n file that exists in the given directory.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/AbstractMultimap.html#put-K-V-\">put(K, V)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractMultimap.html\" title=\"class in stanford.cs106.collections\">AbstractMultimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/AbstractTable.html#put-R-C-V-\">put(R, C, V)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\">AbstractTable</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Multimap.html#put-K-V-\">put(K, V)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\">Multimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Table.html#put-R-C-V-\">put(R, C, V)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\">Table</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Karel.html#putBeeper--\">putBeeper()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelInterface.html#putBeeper--\">putBeeper()</a></span> - Method in interface stanford.karel.<a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></dt>\n<dd>&nbsp;</dd>\n</dl>\n<a name=\"I:R\">\n<!--   -->\n</a>\n<h2 class=\"title\">R</h2>\n<dl>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#radix--\">radix()</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Returns this scanner's default radix.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessSuperKarel.html#random--\">random()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\">HeadlessSuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessSuperKarel.html#random-double-\">random(double)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\">HeadlessSuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/SuperKarel.html#random--\">random()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\">SuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/SuperKarel.html#random-double-\">random(double)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\">SuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"acm/util/RandomGenerator.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">RandomGenerator</span></a> - Class in <a href=\"acm/util/package-summary.html\">acm.util</a></dt>\n<dd>\n<div class=\"block\">This class implements a simple random number generator that allows clients to\n generate pseudorandom integers, doubles, booleans, and colors.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/RandomGenerator.html#RandomGenerator--\">RandomGenerator()</a></span> - Constructor for class acm.util.<a href=\"acm/util/RandomGenerator.html\" title=\"class in acm.util\">RandomGenerator</a></dt>\n<dd>\n<div class=\"block\">Creates a new random generator.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/RandomGenerator.html#RandomGenerator-long-\">RandomGenerator(long)</a></span> - Constructor for class acm.util.<a href=\"acm/util/RandomGenerator.html\" title=\"class in acm.util\">RandomGenerator</a></dt>\n<dd>\n<div class=\"block\">Creates a new random generator, using the given seed value to influence\n its random generation of values.</div>\n</dd>\n<dt><a href=\"stanford/cs106/util/RandomGenerator.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">RandomGenerator</span></a> - Class in <a href=\"stanford/cs106/util/package-summary.html\">stanford.cs106.util</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/RandomGenerator.html#RandomGenerator--\">RandomGenerator()</a></span> - Constructor for class stanford.cs106.util.<a href=\"stanford/cs106/util/RandomGenerator.html\" title=\"class in stanford.cs106.util\">RandomGenerator</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/RandomGenerator.html#RandomGenerator-long-\">RandomGenerator(long)</a></span> - Constructor for class stanford.cs106.util.<a href=\"stanford/cs106/util/RandomGenerator.html\" title=\"class in stanford.cs106.util\">RandomGenerator</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/StdAudio.html#read-java.lang.String-\">read(String)</a></span> - Static method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/StdAudio.html\" title=\"class in stanford.cs106.audio\">StdAudio</a></dt>\n<dd>\n<div class=\"block\">Read audio samples from a file (in .wav or .au format) and return them as\n a double array with values between -1.0 and +1.0.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/ReaderInputStream.html#read--\">read()</a></span> - Method in class stanford.cs106.io.<a href=\"stanford/cs106/io/ReaderInputStream.html\" title=\"class in stanford.cs106.io\">ReaderInputStream</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/ReaderInputStream.html#read-byte:A-int-int-\">read(byte[], int, int)</a></span> - Method in class stanford.cs106.io.<a href=\"stanford/cs106/io/ReaderInputStream.html\" title=\"class in stanford.cs106.io\">ReaderInputStream</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.html#readAndRename-java.lang.String-java.lang.String-\">readAndRename(String, String)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.html#readAndRename-java.lang.String-java.lang.String-java.lang.String-\">readAndRename(String, String, String)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#readBoolean--\">readBoolean()</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#readBoolean-java.lang.String-\">readBoolean(String)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#readBoolean-java.lang.String-java.lang.String-java.lang.String-\">readBoolean(String, String, String)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#readBoolean--\">readBoolean()</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Reads and returns a boolean value (<code>true</code> or <code>false</code>).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#readBoolean-java.lang.String-\">readBoolean(String)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Prompts the user to enter a boolean value, which is returned as\n the value of this method.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#readBoolean-java.lang.String-java.lang.String-java.lang.String-\">readBoolean(String, String, String)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Prompts the user to enter a boolean value, which is matched against the\n labels provided.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ConsoleProgram.html#readBoolean-java.lang.String-java.lang.String-java.lang.String-\">readBoolean(String, String, String)</a></span> - Method in class acm.program.<a href=\"acm/program/ConsoleProgram.html\" title=\"class in acm.program\">ConsoleProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#readBoolean--\">readBoolean()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Reads and returns a boolean value (<code>true</code> or <code>false</code>).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#readBoolean-java.lang.String-\">readBoolean(String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Prompts the user to enter a boolean value, which is returned as\n the value of this method.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#readBoolean-java.lang.String-java.lang.String-java.lang.String-\">readBoolean(String, String, String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Prompts the user to enter a boolean value, which is matched against the\n labels provided.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#readDouble--\">readDouble()</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#readDouble-double-double-\">readDouble(double, double)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#readDouble-java.lang.String-\">readDouble(String)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#readDouble-java.lang.String-double-double-\">readDouble(String, double, double)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#readDouble--\">readDouble()</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Reads and returns a double-precision value from the user.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#readDouble-double-double-\">readDouble(double, double)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Reads and returns a double-precision value from the user, which is\n constrained to be within the specified inclusive range.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#readDouble-java.lang.String-\">readDouble(String)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Prompts the user to enter an double-precision number, which is then\n returned as the value of this method.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#readDouble-java.lang.String-double-double-\">readDouble(String, double, double)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Prompts the user to enter an double-precision number, which is then returned\n as the value of this method.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ConsoleProgram.html#readDouble-java.lang.String-double-double-\">readDouble(String, double, double)</a></span> - Method in class acm.program.<a href=\"acm/program/ConsoleProgram.html\" title=\"class in acm.program\">ConsoleProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#readDouble--\">readDouble()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Reads and returns a double-precision value from the user.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#readDouble-double-double-\">readDouble(double, double)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Reads and returns a double-precision value from the user, which is\n constrained to be within the specified inclusive range.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#readDouble-java.lang.String-\">readDouble(String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Prompts the user to enter an double-precision number, which is then\n returned as the value of this method.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#readDouble-java.lang.String-double-double-\">readDouble(String, double, double)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Prompts the user to enter an double-precision number, which is then returned\n as the value of this method.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/IOUtils.html#readEntireFile-java.io.File-\">readEntireFile(File)</a></span> - Static method in class stanford.cs106.io.<a href=\"stanford/cs106/io/IOUtils.html\" title=\"class in stanford.cs106.io\">IOUtils</a></dt>\n<dd>\n<div class=\"block\">Reads the given file's text fully and returns it as a String.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/IOUtils.html#readEntireFile-java.lang.String-\">readEntireFile(String)</a></span> - Static method in class stanford.cs106.io.<a href=\"stanford/cs106/io/IOUtils.html\" title=\"class in stanford.cs106.io\">IOUtils</a></dt>\n<dd>\n<div class=\"block\">Reads the given file's text fully and returns it as a String.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/IOUtils.html#readEntireFileBytes-java.lang.String-\">readEntireFileBytes(String)</a></span> - Static method in class stanford.cs106.io.<a href=\"stanford/cs106/io/IOUtils.html\" title=\"class in stanford.cs106.io\">IOUtils</a></dt>\n<dd>\n<div class=\"block\">Reads the full text from the file with the given name,\n and returns it as an array of bytes.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/IOUtils.html#readEntireFileBytes-java.io.File-\">readEntireFileBytes(File)</a></span> - Static method in class stanford.cs106.io.<a href=\"stanford/cs106/io/IOUtils.html\" title=\"class in stanford.cs106.io\">IOUtils</a></dt>\n<dd>\n<div class=\"block\">Reads the full text from the given file,\n and returns it as an array of bytes.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/IOUtils.html#readEntireReader-java.io.Reader-\">readEntireReader(Reader)</a></span> - Static method in class stanford.cs106.io.<a href=\"stanford/cs106/io/IOUtils.html\" title=\"class in stanford.cs106.io\">IOUtils</a></dt>\n<dd>\n<div class=\"block\">Reads the given reader's text fully and returns it as a String.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/IOUtils.html#readEntireReaderBytes-java.io.Reader-\">readEntireReaderBytes(Reader)</a></span> - Static method in class stanford.cs106.io.<a href=\"stanford/cs106/io/IOUtils.html\" title=\"class in stanford.cs106.io\">IOUtils</a></dt>\n<dd>\n<div class=\"block\">Reads the given reader's text fully and returns it as an array of bytes.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/IOUtils.html#readEntireScanner-java.util.Scanner-\">readEntireScanner(Scanner)</a></span> - Static method in class stanford.cs106.io.<a href=\"stanford/cs106/io/IOUtils.html\" title=\"class in stanford.cs106.io\">IOUtils</a></dt>\n<dd>\n<div class=\"block\">Reads the given scanner's text fully and returns it as a String.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/IOUtils.html#readEntireStream-java.io.InputStream-\">readEntireStream(InputStream)</a></span> - Static method in class stanford.cs106.io.<a href=\"stanford/cs106/io/IOUtils.html\" title=\"class in stanford.cs106.io\">IOUtils</a></dt>\n<dd>\n<div class=\"block\">Reads the given stream's text fully and returns it as a String.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/IOUtils.html#readEntireStreamBytes-java.io.InputStream-\">readEntireStreamBytes(InputStream)</a></span> - Static method in class stanford.cs106.io.<a href=\"stanford/cs106/io/IOUtils.html\" title=\"class in stanford.cs106.io\">IOUtils</a></dt>\n<dd>\n<div class=\"block\">Reads the given stream's text fully and returns it as an array of bytes.</div>\n</dd>\n<dt><a href=\"stanford/cs106/io/ReaderInputStream.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">ReaderInputStream</span></a> - Class in <a href=\"stanford/cs106/io/package-summary.html\">stanford.cs106.io</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/ReaderInputStream.html#ReaderInputStream-java.io.Reader-\">ReaderInputStream(Reader)</a></span> - Constructor for class stanford.cs106.io.<a href=\"stanford/cs106/io/ReaderInputStream.html\" title=\"class in stanford.cs106.io\">ReaderInputStream</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#readInt--\">readInt()</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#readInt-int-int-\">readInt(int, int)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#readInt-java.lang.String-\">readInt(String)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#readInt-java.lang.String-int-int-\">readInt(String, int, int)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#readInt--\">readInt()</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Reads and returns an integer value from the user.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#readInt-int-int-\">readInt(int, int)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Reads and returns an integer value from the user, which is constrained to\n be within the specified inclusive range.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#readInt-java.lang.String-\">readInt(String)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Prompts the user to enter an integer, which is then returned as the value\n of this method.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#readInt-java.lang.String-int-int-\">readInt(String, int, int)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Prompts the user to enter an integer, which is then returned as the value\n of this method.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ConsoleProgram.html#readInt-java.lang.String-int-int-\">readInt(String, int, int)</a></span> - Method in class acm.program.<a href=\"acm/program/ConsoleProgram.html\" title=\"class in acm.program\">ConsoleProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#readInt--\">readInt()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Reads and returns an integer value from the user.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#readInt-int-int-\">readInt(int, int)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Reads and returns an integer value from the user, which is constrained to\n be within the specified inclusive range.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#readInt-java.lang.String-\">readInt(String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Prompts the user to enter an integer, which is then returned as the value\n of this method.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#readInt-java.lang.String-int-int-\">readInt(String, int, int)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Prompts the user to enter an integer, which is then returned as the value\n of this method.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/ConsoleModel.html#readLine--\">readLine()</a></span> - Method in interface acm.io.<a href=\"acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#readLine--\">readLine()</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#readLine-java.lang.String-\">readLine(String)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/StandardConsoleModel.html#readLine--\">readLine()</a></span> - Method in class acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SystemConsoleModel.html#readLine--\">readLine()</a></span> - Method in class acm.io.<a href=\"acm/io/SystemConsoleModel.html\" title=\"class in acm.io\">SystemConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#readLine--\">readLine()</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Reads and returns a line of input from the console.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#readLine-java.lang.String-\">readLine(String)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Prompts the user for a line of input.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ConsoleProgram.html#readLine-java.lang.String-\">readLine(String)</a></span> - Method in class acm.program.<a href=\"acm/program/ConsoleProgram.html\" title=\"class in acm.program\">ConsoleProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#readLine--\">readLine()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Reads and returns a line of input from the console.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#readLine-java.lang.String-\">readLine(String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Prompts the user for a line of input.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/StandardConsoleModel.html#readLineCallback--\">readLineCallback()</a></span> - Method in class acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/util/RecursionUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">RecursionUtils</span></a> - Class in <a href=\"stanford/cs106/util/package-summary.html\">stanford.cs106.util</a></dt>\n<dd>\n<div class=\"block\">A class with a few \"helper\" methods for recursion and backtracking.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessSuperKarel.html#RED\">RED</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\">HeadlessSuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.html#RED\">RED</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/SuperKarel.html#RED\">RED</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\">SuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/IOUtils.html#redirectInput-java.lang.String-\">redirectInput(String)</a></span> - Static method in class stanford.cs106.io.<a href=\"stanford/cs106/io/IOUtils.html\" title=\"class in stanford.cs106.io\">IOUtils</a></dt>\n<dd>\n<div class=\"block\">Redirects System.in to pull input data from the text in the given string.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/IOUtils.html#redirectOutput--\">redirectOutput()</a></span> - Static method in class stanford.cs106.io.<a href=\"stanford/cs106/io/IOUtils.html\" title=\"class in stanford.cs106.io\">IOUtils</a></dt>\n<dd>\n<div class=\"block\">Redirects System.out to a byte array output stream, which is returned.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/IOUtils.html#redirectOutput-boolean-\">redirectOutput(boolean)</a></span> - Static method in class stanford.cs106.io.<a href=\"stanford/cs106/io/IOUtils.html\" title=\"class in stanford.cs106.io\">IOUtils</a></dt>\n<dd>\n<div class=\"block\">Redirects System.out to a byte array output stream, which is returned.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AsciiArtProgram.html#redraw--\">redraw()</a></span> - Method in class acm.program.<a href=\"acm/program/AsciiArtProgram.html\" title=\"class in acm.program\">AsciiArtProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.html#reflectionEquals-java.lang.Object-java.lang.Object-\">reflectionEquals(Object, Object)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/reflect/ReflectionRuntimeException.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">ReflectionRuntimeException</span></a> - Exception in <a href=\"stanford/cs106/reflect/package-summary.html\">stanford.cs106.reflect</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionRuntimeException.html#ReflectionRuntimeException-java.lang.String-\">ReflectionRuntimeException(String)</a></span> - Constructor for exception stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionRuntimeException.html\" title=\"class in stanford.cs106.reflect\">ReflectionRuntimeException</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionRuntimeException.html#ReflectionRuntimeException-java.lang.String-java.lang.Throwable-\">ReflectionRuntimeException(String, Throwable)</a></span> - Constructor for exception stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionRuntimeException.html\" title=\"class in stanford.cs106.reflect\">ReflectionRuntimeException</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionRuntimeException.html#ReflectionRuntimeException-java.lang.Throwable-\">ReflectionRuntimeException(Throwable)</a></span> - Constructor for exception stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionRuntimeException.html\" title=\"class in stanford.cs106.reflect\">ReflectionRuntimeException</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">ReflectionUtils</span></a> - Class in <a href=\"stanford/cs106/reflect/package-summary.html\">stanford.cs106.reflect</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#ReflectionUtils--\">ReflectionUtils()</a></span> - Constructor for class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/reflect/ReflectionUtils.FieldNameComparator.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">ReflectionUtils.FieldNameComparator</span></a> - Class in <a href=\"stanford/cs106/reflect/package-summary.html\">stanford.cs106.reflect</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/reflect/ReflectionUtils.MethodNameComparator.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">ReflectionUtils.MethodNameComparator</span></a> - Class in <a href=\"stanford/cs106/reflect/package-summary.html\">stanford.cs106.reflect</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#rememberWindowLocation-java.awt.Frame-\">rememberWindowLocation(Frame)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#remove-java.awt.Component-\">remove(Component)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Removes the component from the canvas.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#remove-double-double-\">remove(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Removes the top-most graphical object at the given (x, y) position from this container.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#remove-acm.graphics.GObject-\">remove(GObject)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Removes a graphical object from this <code>GCanvas</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#remove-acm.graphics.GPoint-\">remove(GPoint)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Removes the top-most graphical object at the given (x, y) position from this container.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvasInterface.html#remove-double-double-\">remove(double, double)</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvasInterface.html#remove-acm.graphics.GPoint-\">remove(GPoint)</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvasInterface.html#remove-acm.graphics.GObject-\">remove(GObject)</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCompound.html#remove-acm.graphics.GObject-\">remove(GObject)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCompound.html\" title=\"class in acm.graphics\">GCompound</a></dt>\n<dd>\n<div class=\"block\">Removes a graphical object from this <code>GCompound</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GContainer.html#remove-acm.graphics.GObject-\">remove(GObject)</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a></dt>\n<dd>\n<div class=\"block\">Removes a graphical object from this container.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLineGroup.html#remove-double-double-\">remove(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLineGroup.html\" title=\"class in acm.graphics\">GLineGroup</a></dt>\n<dd>\n<div class=\"block\">Removes the given point from this line group, if it is part of the line group.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLineGroup.html#remove-acm.graphics.GPoint-\">remove(GPoint)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLineGroup.html\" title=\"class in acm.graphics\">GLineGroup</a></dt>\n<dd>\n<div class=\"block\">Removes the given point from this line group, if it is part of the line group.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JButtonGroup.html#remove-java.awt.Component-\">remove(Component)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JButtonGroup.html\" title=\"class in acm.gui\">JButtonGroup</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JButtonGroup.html#remove-javax.swing.JRadioButton-\">remove(JRadioButton)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JButtonGroup.html\" title=\"class in acm.gui\">JButtonGroup</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JButtonGroup.html#remove-java.lang.String-\">remove(String)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JButtonGroup.html\" title=\"class in acm.gui\">JButtonGroup</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#remove--\">remove()</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">The remove operation is not supported by this implementation of Iterator.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#remove-int-\">remove(int)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Removes the component at the specified index from the central region.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#remove-java.awt.Component-\">remove(Component)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Removes the specified component from the central region.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#remove-double-double-\">remove(double, double)</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Removes the top-most graphical object at the given (x, y) position from this container.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#remove-acm.graphics.GPoint-\">remove(GPoint)</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Removes the top-most graphical object at the given (x, y) position from this container.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#remove-acm.graphics.GObject-\">remove(GObject)</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Removes a graphical object from this container.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#remove-double-double-\">remove(double, double)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#remove-acm.graphics.GPoint-\">remove(GPoint)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#remove-acm.graphics.GObject-\">remove(GObject)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#remove-int-\">remove(int)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Removes the component at the specified index from the central region.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#remove-java.awt.Component-\">remove(Component)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Removes the specified component from the central region.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/AbstractMultimap.html#remove-java.lang.Object-java.lang.Object-\">remove(Object, Object)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractMultimap.html\" title=\"class in stanford.cs106.collections\">AbstractMultimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/AbstractTable.html#remove-java.lang.Object-java.lang.Object-\">remove(Object, Object)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\">AbstractTable</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Multimap.html#remove-java.lang.Object-java.lang.Object-\">remove(Object, Object)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\">Multimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Table.html#remove-java.lang.Object-java.lang.Object-\">remove(Object, Object)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\">Table</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Event.html#remove-java.util.Observer-\">remove(Observer)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Event.html\" title=\"class in stanford.karel\">Event</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#remove-stanford.karel.KarelInterface-\">remove(KarelInterface)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#removeActionListener-java.awt.event.ActionListener-\">removeActionListener(ActionListener)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Removes an action listener from this graphical object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JButtonGroup.html#removeActionListener-java.awt.event.ActionListener-\">removeActionListener(ActionListener)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JButtonGroup.html\" title=\"class in acm.gui\">JButtonGroup</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JStringList.html#removeActionListener-java.awt.event.ActionListener-\">removeActionListener(ActionListener)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JStringList.html\" title=\"class in acm.gui\">JStringList</a></dt>\n<dd>\n<div class=\"block\">Detaches the given listener so that it will not be notified of future\n action events that occur in this list.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#removeAll--\">removeAll()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Removes all graphical objects from this <code>GCanvas</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#removeAll-double-double-\">removeAll(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Removes all graphical objects at the given (x, y) position from this container.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#removeAll-double...-\">removeAll(double...)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Removes all graphical objects at the given (x, y) positions from this container.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#removeAll-acm.graphics.GPoint-\">removeAll(GPoint)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Removes all graphical objects at the given (x, y) position from this container.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvasInterface.html#removeAll--\">removeAll()</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvasInterface.html#removeAll-double-double-\">removeAll(double, double)</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvasInterface.html#removeAll-double...-\">removeAll(double...)</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvasInterface.html#removeAll-acm.graphics.GPoint-\">removeAll(GPoint)</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCompound.html#removeAll--\">removeAll()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCompound.html\" title=\"class in acm.graphics\">GCompound</a></dt>\n<dd>\n<div class=\"block\">Removes all graphical objects from this <code>GCompound</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GContainer.html#removeAll--\">removeAll()</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a></dt>\n<dd>\n<div class=\"block\">Removes all graphical objects from this container.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JButtonGroup.html#removeAll--\">removeAll()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JButtonGroup.html\" title=\"class in acm.gui\">JButtonGroup</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#removeAll--\">removeAll()</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Removes all components from the central region.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#removeAll--\">removeAll()</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Removes all graphical objects from this container.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#removeAll-double-double-\">removeAll(double, double)</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Removes all graphical objects at the given (x, y) position from this container.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#removeAll-double...-\">removeAll(double...)</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Removes all graphical objects at the given (x, y) positions from this container.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#removeAll-acm.graphics.GPoint-\">removeAll(GPoint)</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Removes all graphical objects at the given (x, y) position from this container.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#removeAll--\">removeAll()</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#removeAll-double-double-\">removeAll(double, double)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#removeAll-double...-\">removeAll(double...)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#removeAll-acm.graphics.GPoint-\">removeAll(GPoint)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#removeAll--\">removeAll()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Removes all components from the central region.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/AbstractMultimap.html#removeAll-java.lang.Object-\">removeAll(Object)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractMultimap.html\" title=\"class in stanford.cs106.collections\">AbstractMultimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Multimap.html#removeAll-java.lang.Object-\">removeAll(Object)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\">Multimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#removeAllComponents--\">removeAllComponents()</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Removes all components from this container.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgramInterface.html#removeAllComponents--\">removeAllComponents()</a></span> - Method in interface acm.program.<a href=\"acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#removeAllComponents--\">removeAllComponents()</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/StdAudio.html#removeAudioEventListener-stanford.cs106.audio.StdAudio.AudioEventListener-\">removeAudioEventListener(StdAudio.AudioEventListener)</a></span> - Static method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/StdAudio.html\" title=\"class in stanford.cs106.audio\">StdAudio</a></dt>\n<dd>\n<div class=\"block\">Removes the given audio event listener from being notified of future\n audio events, if it was present.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#removeEdge-stanford.cs106.collections.Edge-\">removeEdge(Edge&lt;V, E&gt;)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Removes any edge(s) that exist with the given extra info stored in it/them.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#removeEdge-java.lang.String-java.lang.String-\">removeEdge(String, String)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Removes any edge that exists from vertex v1 to vertex v2.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#removeEdge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">removeEdge(Vertex&lt;V&gt;, Vertex&lt;V&gt;)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Removes any edge that exists from vertex v1 to vertex v2.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#removeEdge-stanford.cs106.collections.Edge-\">removeEdge(Edge&lt;V, E&gt;)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Removes any edge(s) that exist with the given extra info stored in it/them.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#removeEdge-java.lang.String-java.lang.String-\">removeEdge(String, String)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Removes any edge that exists from vertex v1 to vertex v2.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#removeEdge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">removeEdge(Vertex&lt;V&gt;, Vertex&lt;V&gt;)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Removes any edge that exists from vertex v1 to vertex v2.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/IOUtils.html#removeExtension-java.lang.String-\">removeExtension(String)</a></span> - Static method in class stanford.cs106.io.<a href=\"stanford/cs106/io/IOUtils.html\" title=\"class in stanford.cs106.io\">IOUtils</a></dt>\n<dd>\n<div class=\"block\">Removes the file's extension; e.g.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/IOUtils.html#removeFolder-java.lang.String-\">removeFolder(String)</a></span> - Static method in class stanford.cs106.io.<a href=\"stanford/cs106/io/IOUtils.html\" title=\"class in stanford.cs106.io\">IOUtils</a></dt>\n<dd>\n<div class=\"block\">Removes any leading folders from the given file name;\n e.g.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#removeFromRegion-java.awt.Component-java.lang.String-\">removeFromRegion(Component, String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Removes the specified component from the specified region of this program window.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JStringList.html#removeItem-int-\">removeItem(int)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JStringList.html\" title=\"class in acm.gui\">JStringList</a></dt>\n<dd>\n<div class=\"block\">Removes the element at the given index from this list, shifting others\n down an index if necessary.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JStringList.html#removeItem-java.lang.String-\">removeItem(String)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JStringList.html\" title=\"class in acm.gui\">JStringList</a></dt>\n<dd>\n<div class=\"block\">Removes the first occurrence of the given string element at the given index from this list, shifting others\n down an index if necessary.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#removeLayoutComponent-java.awt.Component-\">removeLayoutComponent(Component)</a></span> - Method in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Removes the specified component from the layout.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#removeMenuBar--\">removeMenuBar()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Removes the JMenuBar at the top of the program window.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#removeMouseListener-java.awt.event.MouseListener-\">removeMouseListener(MouseListener)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Removes a mouse listener from this graphical object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#removeMouseMotionListener-java.awt.event.MouseMotionListener-\">removeMouseMotionListener(MouseMotionListener)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Removes a mouse motion listener from this graphical object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/Request.html#removeParam-java.lang.String-\">removeParam(String)</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\">Request</a></dt>\n<dd>\n<div class=\"block\">Removes the query parameter with the given name from this request.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.html#removeUpdate-javax.swing.event.DocumentEvent-\">removeUpdate(DocumentEvent)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.html\" title=\"class in acm.gui\">JFontChooser.ListSearchTextFieldDocumentHandler</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#removeUpdate-javax.swing.event.DocumentEvent-\">removeUpdate(DocumentEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Required method of DocumentListener interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#removeVertex-java.lang.String-\">removeVertex(String)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Removes the given vertex from this graph, along with all edges that were\n touching it.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#removeVertex-stanford.cs106.collections.Vertex-\">removeVertex(Vertex&lt;V&gt;)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Removes the given vertex from this graph, along with all edges that were\n touching it.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#removeVertex-java.lang.String-\">removeVertex(String)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Removes the given vertex from this graph, along with all edges that were\n touching it.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#removeVertex-stanford.cs106.collections.Vertex-\">removeVertex(Vertex&lt;V&gt;)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Removes the given vertex from this graph, along with all edges that were\n touching it.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#removeWhitespace-java.lang.String-\">removeWhitespace(String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.html#renameAndWriteJavaFile-java.lang.String-java.lang.String-java.lang.String-boolean-\">renameAndWriteJavaFile(String, String, String, boolean)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/BackEndServer.html#renderTemplate-java.lang.String-java.util.Map-\">renderTemplate(String, Map&lt;String, String&gt;)</a></span> - Static method in class stanford.cs106.net.<a href=\"stanford/cs106/net/BackEndServer.html\" title=\"class in stanford.cs106.net\">BackEndServer</a></dt>\n<dd>\n<div class=\"block\">Method: Render Template\n -----------------------\n OPTIONAL: This method takes in a template (currently it takes the path to a template)\n and provides functionality for (a) importing other slivers of HTML and (b) inserting\n values from a map into all places in the template with the sequence {{key}}.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvasInterface.html#repaint--\">repaint()</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#repaint--\">repaint()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Signals that the object needs to be repainted.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#repaint--\">repaint()</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Forwards repaint to the content pane.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#repaint--\">repaint()</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Signals a need to repaint this window.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#repaint--\">repaint()</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#repaint--\">repaint()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Forwards repaint to the content pane.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#repaint--\">repaint()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">Request</span></a> - Class in <a href=\"stanford/cs106/net/package-summary.html\">stanford.cs106.net</a></dt>\n<dd>\n<div class=\"block\">A Request object encapsulates a basic HTTP request along with its\n various query parameter key/value pairs.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/Request.html#Request-java.lang.String-\">Request(String)</a></span> - Constructor for class stanford.cs106.net.<a href=\"stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\">Request</a></dt>\n<dd>\n<div class=\"block\">Constructs a new Request object with the given command verb.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/Request.html#Request-java.lang.String-java.lang.String...-\">Request(String, String...)</a></span> - Constructor for class stanford.cs106.net.<a href=\"stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\">Request</a></dt>\n<dd>\n<div class=\"block\">Constructs a new Request object with the given command verb\n and the given set of parameter key/value pairs.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/ConsoleModel.html#requestFocus--\">requestFocus()</a></span> - Method in interface acm.io.<a href=\"acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#requestFocus--\">requestFocus()</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/StandardConsoleModel.html#requestFocus--\">requestFocus()</a></span> - Method in class acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SystemConsoleModel.html#requestFocus--\">requestFocus()</a></span> - Method in class acm.io.<a href=\"acm/io/SystemConsoleModel.html\" title=\"class in acm.io\">SystemConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/SimpleServerListener.html#requestMade-stanford.cs106.net.Request-\">requestMade(Request)</a></span> - Method in interface stanford.cs106.net.<a href=\"stanford/cs106/net/SimpleServerListener.html\" title=\"interface in stanford.cs106.net\">SimpleServerListener</a></dt>\n<dd>\n<div class=\"block\">Responds to the given request, returning the response to send back.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/XmlUtils.html#requireAttributes-org.w3c.dom.Node-java.lang.String...-\">requireAttributes(Node, String...)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\">XmlUtils</a></dt>\n<dd>\n<div class=\"block\">Ensures that the given XML DOM node contains all of the given attributes.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/ReaderInputStream.html#reset--\">reset()</a></span> - Method in class stanford.cs106.io.<a href=\"stanford/cs106/io/ReaderInputStream.html\" title=\"class in stanford.cs106.io\">ReaderInputStream</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#reset--\">reset()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#resetData--\">resetData()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Clears out any data stored in each vertex.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#resetData--\">resetData()</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Clears out any data stored in each vertex.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Grid.html#resize-int-int-\">resize(int, int)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Grid.html\" title=\"class in stanford.cs106.collections\">Grid</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/gui/ResizeListener.html\" title=\"interface in stanford.cs106.gui\"><span class=\"typeNameLink\">ResizeListener</span></a> - Interface in <a href=\"stanford/cs106/gui/package-summary.html\">stanford.cs106.gui</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/io/ResourceUtils.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">ResourceUtils</span></a> - Class in <a href=\"stanford/cs106/io/package-summary.html\">stanford.cs106.io</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/ResourceUtils.html#ResourceUtils--\">ResourceUtils()</a></span> - Constructor for class stanford.cs106.io.<a href=\"stanford/cs106/io/ResourceUtils.html\" title=\"class in stanford.cs106.io\">ResourceUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#rewind--\">rewind()</a></span> - Method in class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Rewinds the sound to the beginning.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/RandomGenerator.html#rigBoolean-java.lang.Boolean-\">rigBoolean(Boolean)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/RandomGenerator.html\" title=\"class in stanford.cs106.util\">RandomGenerator</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/RandomGenerator.html#rigDouble-java.lang.Double-\">rigDouble(Double)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/RandomGenerator.html\" title=\"class in stanford.cs106.util\">RandomGenerator</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#RIGHT\">RIGHT</a></span> - Static variable in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Align table horizontally at the right of its container</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#RIGHT\">RIGHT</a></span> - Static variable in class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Identifies the right channel in a stereo sound.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#rightFrom-int-\">rightFrom(int)</a></span> - Static method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Karel.html#rightIsBlocked--\">rightIsBlocked()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelInterface.html#rightIsBlocked--\">rightIsBlocked()</a></span> - Method in interface stanford.karel.<a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Karel.html#rightIsClear--\">rightIsClear()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelInterface.html#rightIsClear--\">rightIsClear()</a></span> - Method in interface stanford.karel.<a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/RandomGenerator.html#rigInt-java.lang.Integer-\">rigInt(Integer)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/RandomGenerator.html\" title=\"class in stanford.cs106.util\">RandomGenerator</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#rotate-double-\">rotate(double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Rotates this object by the given degrees counter-clockwise.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GMath.html#round-double-\">round(double)</a></span> - Static method in class acm.graphics.<a href=\"acm/graphics/GMath.html\" title=\"class in acm.graphics\">GMath</a></dt>\n<dd>\n<div class=\"block\">Rounds a <code>double</code> value to the nearest <code>int</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GMath.html#round-double-int-\">round(double, int)</a></span> - Static method in class acm.graphics.<a href=\"acm/graphics/GMath.html\" title=\"class in acm.graphics\">GMath</a></dt>\n<dd>\n<div class=\"block\">Rounds a <code>double</code> value to the given number of decimal places.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/AbstractTable.html#row-R-\">row(R)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\">AbstractTable</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Table.html#row-R-\">row(R)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\">Table</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/AbstractTable.html#rowKeySet--\">rowKeySet()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\">AbstractTable</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Table.html#rowKeySet--\">rowKeySet()</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\">Table</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/AbstractTable.html#rowMap--\">rowMap()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\">AbstractTable</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Table.html#rowMap--\">rowMap()</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\">Table</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.ListSelector.html#run--\">run()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.ListSelector.html\" title=\"class in acm.gui\">JFontChooser.ListSearchTextFieldDocumentHandler.ListSelector</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#run--\">run()</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Contains the code to be executed for each specific program subclass.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ConsoleProgram.html#run--\">run()</a></span> - Method in class acm.program.<a href=\"acm/program/ConsoleProgram.html\" title=\"class in acm.program\">ConsoleProgram</a></dt>\n<dd>\n<div class=\"block\">Specifies the code to be executed as the program runs.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/DialogProgram.html#run--\">run()</a></span> - Method in class acm.program.<a href=\"acm/program/DialogProgram.html\" title=\"class in acm.program\">DialogProgram</a></dt>\n<dd>\n<div class=\"block\">Specifies the code to be executed as the program runs.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#run--\">run()</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Specifies the code to be executed as the program runs.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#run--\">run()</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#run--\">run()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Specifies the code to be executed as the program runs.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramInterface.html#run--\">run()</a></span> - Method in interface acm.program.<a href=\"acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/SplClip.html#run--\">run()</a></span> - Method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/SplClip.html\" title=\"class in stanford.cs106.audio\">SplClip</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessKarel.html#run--\">run()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/HeadlessKarel.html\" title=\"class in stanford.karel\">HeadlessKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessSuperKarel.html#run--\">run()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\">HeadlessSuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Karel.html#run--\">run()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelInterface.html#run--\">run()</a></span> - Method in interface stanford.karel.<a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/SuperKarel.html#run--\">run()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\">SuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#runHook--\">runHook()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Calls the run method in the program.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/JUnitUtils.html#runJUnitMethod-java.lang.Class-java.lang.reflect.Method-stanford.cs106.junit.JUnitListener-\">runJUnitMethod(Class&lt;?&gt;, Method, JUnitListener)</a></span> - Static method in class stanford.cs106.junit.<a href=\"stanford/cs106/junit/JUnitUtils.html\" title=\"class in stanford.cs106.junit\">JUnitUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.html#runMain-java.lang.Class-\">runMain(Class&lt;?&gt;)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.html#runMain-java.lang.Class-java.lang.String:A-\">runMain(Class&lt;?&gt;, String[])</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dt>\n<dd>&nbsp;</dd>\n</dl>\n<a name=\"I:S\">\n<!--   -->\n</a>\n<h2 class=\"title\">S</h2>\n<dl>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/StdAudio.html#SAMPLE_RATE\">SAMPLE_RATE</a></span> - Static variable in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/StdAudio.html\" title=\"class in stanford.cs106.audio\">StdAudio</a></dt>\n<dd>\n<div class=\"block\">The sample rate - 44,100 Hz for CD quality audio.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#sampleToIntensity-int-\">sampleToIntensity(int)</a></span> - Static method in class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Converts an integer sample in the range -32767 and +32767 into a\n <code>double</code> between -1.0 and +1.0.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.html#sanitizeClassName-java.lang.String-\">sanitizeClassName(String)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#save-java.io.File-\">save(File)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Writes the contents of the canvas to the given file.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#save-java.lang.String-\">save(String)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Writes the contents of the canvas to the given file.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#save--\">save()</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#save-java.io.Writer-\">save(Writer)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#save--\">save()</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#save-java.lang.String-\">save(String)</a></span> - Method in class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Writes a data file containing the specified sound.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#save-java.io.File-\">save(File)</a></span> - Method in class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Writes the sound to the specified <code>File</code> object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/StdAudio.html#save-java.lang.String-double:A-\">save(String, double[])</a></span> - Static method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/StdAudio.html\" title=\"class in stanford.cs106.audio\">StdAudio</a></dt>\n<dd>\n<div class=\"block\">Save the double array as a sound file (using .wav or .au format).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#save--\">save()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#saveAs--\">saveAs()</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AbstractConsoleProgram.html#saveConfiguration-java.util.Properties-\">saveConfiguration(Properties)</a></span> - Method in class acm.program.<a href=\"acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></dt>\n<dd>\n<div class=\"block\">Writes the console's configuration settings to disk.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#saveConfiguration--\">saveConfiguration()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Saves configuration of this program to disk.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#saveConfiguration-java.util.Properties-\">saveConfiguration(Properties)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Saves configuration of this program to disk in the given properties collection.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.html#saveConfiguration-java.util.Properties-\">saveConfiguration(Properties)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GImage.html#saveImage-java.io.File-\">saveImage(File)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GImage.html\" title=\"class in acm.graphics\">GImage</a></dt>\n<dd>\n<div class=\"block\">Saves the image to the specified file.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GImage.html#saveImage-java.lang.String-\">saveImage(String)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GImage.html\" title=\"class in acm.graphics\">GImage</a></dt>\n<dd>\n<div class=\"block\">Saves the image to a file with the specified filename.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/MediaTools.html#saveImage-java.awt.Image-java.lang.String-\">saveImage(Image, String)</a></span> - Static method in class acm.util.<a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></dt>\n<dd>\n<div class=\"block\">Saves an image to a file with the specified filename.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/MediaTools.html#saveImage-java.awt.Image-java.io.File-\">saveImage(Image, File)</a></span> - Static method in class acm.util.<a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></dt>\n<dd>\n<div class=\"block\">Saves an image to the specified file.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#saveToImage-java.io.File-\">saveToImage(File)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>\n<div class=\"block\">Saves an image of this Karel world to the given image file.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#saveToImage-java.lang.String-\">saveToImage(String)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>\n<div class=\"block\">Saves an image of this Karel world to the given image file.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessSuperKarel.html#say-java.lang.String-\">say(String)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\">HeadlessSuperKarel</a></dt>\n<dd>\n<div class=\"block\">Causes Karel to pop up a speech bubble with the given text in it.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/SuperKarel.html#say-java.lang.String-\">say(String)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\">SuperKarel</a></dt>\n<dd>\n<div class=\"block\">Causes Karel to pop up a speech bubble with the given text in it.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCompound.html#scale-double-double-\">scale(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCompound.html\" title=\"class in acm.graphics\">GCompound</a></dt>\n<dd>\n<div class=\"block\">Scales every object contained in this compound by the scale factors\n <code>sx</code> and <code>sy</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GImage.html#scale-double-double-\">scale(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GImage.html\" title=\"class in acm.graphics\">GImage</a></dt>\n<dd>\n<div class=\"block\">Scales the object on the screen by the scale factors <code>sx</code> and <code>sy</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLine.html#scale-double-double-\">scale(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLine.html\" title=\"class in acm.graphics\">GLine</a></dt>\n<dd>\n<div class=\"block\">Scales the line on the screen by the scale factors <code>sx</code> and\n <code>sy</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#scale-double-double-\">scale(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Scales the size of this object by the given factors in the x and y dimensions.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#scale-double-\">scale(double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Scales the size of this object by the given factor in the x and y dimensions.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GScalable.html#scale-double-double-\">scale(double, double)</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a></dt>\n<dd>\n<div class=\"block\">Scales the object on the screen by the scale factors <code>sx</code> and <code>sy</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GScalable.html#scale-double-\">scale(double)</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a></dt>\n<dd>\n<div class=\"block\">Scales the object on the screen by the scale factor <code>sf</code>, which applies\n in both dimensions.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#SCANNER_APPLET_MODE_PROPERTY_NAME\">SCANNER_APPLET_MODE_PROPERTY_NAME</a></span> - Static variable in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#SCANNER_ECHO_PROPERTY_NAME\">SCANNER_ECHO_PROPERTY_NAME</a></span> - Static variable in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#SCANNER_REUSE_PROPERTY_NAME\">SCANNER_REUSE_PROPERTY_NAME</a></span> - Static variable in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#SCANNER_WORKING_DIR_PROPERTY_NAME\">SCANNER_WORKING_DIR_PROPERTY_NAME</a></span> - Static variable in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#script--\">script()</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AbstractConsoleProgram.html#scrollLineDown--\">scrollLineDown()</a></span> - Method in class acm.program.<a href=\"acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></dt>\n<dd>\n<div class=\"block\">Tells the console's output area to scroll itself downward by one line.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AbstractConsoleProgram.html#scrollLineUp--\">scrollLineUp()</a></span> - Method in class acm.program.<a href=\"acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></dt>\n<dd>\n<div class=\"block\">Tells the console's output area to scroll itself upward by one line.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AbstractConsoleProgram.html#scrollPageDown--\">scrollPageDown()</a></span> - Method in class acm.program.<a href=\"acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></dt>\n<dd>\n<div class=\"block\">Tells the console's output area to scroll itself downward by one page.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AbstractConsoleProgram.html#scrollPageUp--\">scrollPageUp()</a></span> - Method in class acm.program.<a href=\"acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></dt>\n<dd>\n<div class=\"block\">Tells the console's output area to scroll itself upward by one page.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AbstractConsoleProgram.html#scrollToBottom--\">scrollToBottom()</a></span> - Method in class acm.program.<a href=\"acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></dt>\n<dd>\n<div class=\"block\">Tells the console's output area to scroll itself to the bottom of the output.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AbstractConsoleProgram.html#scrollToTop--\">scrollToTop()</a></span> - Method in class acm.program.<a href=\"acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></dt>\n<dd>\n<div class=\"block\">Tells the console's output area to scroll itself to the top of the output.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/ConsoleModel.html#selectAll--\">selectAll()</a></span> - Method in interface acm.io.<a href=\"acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#selectAll--\">selectAll()</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/StandardConsoleModel.html#selectAll--\">selectAll()</a></span> - Method in class acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SystemConsoleModel.html#selectAll--\">selectAll()</a></span> - Method in class acm.io.<a href=\"acm/io/SystemConsoleModel.html\" title=\"class in acm.io\">SystemConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/NetworkManager.html#send-java.lang.String-java.lang.String...-\">send(String, String...)</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/NetworkManager.html\" title=\"class in stanford.cs106.net\">NetworkManager</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#sendBackward-acm.graphics.GObject-\">sendBackward(GObject)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Implements the <code>sendBackward</code> function from the <code>GContainer</code>\n interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCompound.html#sendBackward-acm.graphics.GObject-\">sendBackward(GObject)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCompound.html\" title=\"class in acm.graphics\">GCompound</a></dt>\n<dd>\n<div class=\"block\">Implements the <code>sendBackward</code> function from the <code>GContainer</code>\n interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#sendBackward--\">sendBackward()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Moves this object one step toward the back in the <i>z</i> dimension.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#sendForward-acm.graphics.GObject-\">sendForward(GObject)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Implements the <code>sendForward</code> function from the <code>GContainer</code>\n interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCompound.html#sendForward-acm.graphics.GObject-\">sendForward(GObject)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCompound.html\" title=\"class in acm.graphics\">GCompound</a></dt>\n<dd>\n<div class=\"block\">Implements the <code>sendForward</code> function from the <code>GContainer</code>\n interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#sendForward--\">sendForward()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Moves this object one step toward the front in the <i>z</i> dimension.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/NetworkManager.html#sendHttp-java.lang.String-java.util.Map-\">sendHttp(String, Map&lt;String, Object&gt;)</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/NetworkManager.html\" title=\"class in stanford.cs106.net\">NetworkManager</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/BackEndServer.html#sendResponse-int-int-java.lang.String-java.lang.String-\">sendResponse(int, int, String, String)</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/BackEndServer.html\" title=\"class in stanford.cs106.net\">BackEndServer</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/BackEndServer.html#sendResponseFile-int-int-java.lang.String-java.lang.String-\">sendResponseFile(int, int, String, String)</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/BackEndServer.html\" title=\"class in stanford.cs106.net\">BackEndServer</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#sendToBack-acm.graphics.GObject-\">sendToBack(GObject)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Implements the <code>sendToBack</code> function from the <code>GContainer</code>\n interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCompound.html#sendToBack-acm.graphics.GObject-\">sendToBack(GObject)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCompound.html\" title=\"class in acm.graphics\">GCompound</a></dt>\n<dd>\n<div class=\"block\">Implements the <code>sendToBack</code> function from the <code>GContainer</code>\n interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#sendToBack--\">sendToBack()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Moves this object to the back of the display in the <i>z</i> dimension.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#sendToFront-acm.graphics.GObject-\">sendToFront(GObject)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Implements the <code>sendToFront</code> function from the <code>GContainer</code>\n interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCompound.html#sendToFront-acm.graphics.GObject-\">sendToFront(GObject)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCompound.html\" title=\"class in acm.graphics\">GCompound</a></dt>\n<dd>\n<div class=\"block\">Implements the <code>sendToFront</code> function from the <code>GContainer</code>\n interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#sendToFront--\">sendToFront()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Moves this object to the front of the display in the <i>z</i> dimension.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/SimpleClient.html#SESSION_KEY_PARAM_NAME\">SESSION_KEY_PARAM_NAME</a></span> - Static variable in class stanford.cs106.net.<a href=\"stanford/cs106/net/SimpleClient.html\" title=\"class in stanford.cs106.net\">SimpleClient</a></dt>\n<dd>\n<div class=\"block\">A special request parameter used to indicate that the server should\n maintain a session with this client.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/SimpleServer.html#sessionData-stanford.cs106.net.Request-\">sessionData(Request)</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/SimpleServer.html\" title=\"class in stanford.cs106.net\">SimpleServer</a></dt>\n<dd>\n<div class=\"block\">Returns all data associated with the given request's session.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/SimpleClient.html#sessionEnd--\">sessionEnd()</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/SimpleClient.html\" title=\"class in stanford.cs106.net\">SimpleClient</a></dt>\n<dd>\n<div class=\"block\">Ends any current session between this client and the server host.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/SimpleServer.html#sessionEnd-stanford.cs106.net.Request-\">sessionEnd(Request)</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/SimpleServer.html\" title=\"class in stanford.cs106.net\">SimpleServer</a></dt>\n<dd>\n<div class=\"block\">Ends any active session for the given request, clearing its session data.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/SimpleClient.html#sessionIsInProgress--\">sessionIsInProgress()</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/SimpleClient.html\" title=\"class in stanford.cs106.net\">SimpleClient</a></dt>\n<dd>\n<div class=\"block\">Returns true if a session is currently in progress between this client\n and the server host.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/SimpleServer.html#sessionIsInProgress-stanford.cs106.net.Request-\">sessionIsInProgress(Request)</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/SimpleServer.html\" title=\"class in stanford.cs106.net\">SimpleServer</a></dt>\n<dd>\n<div class=\"block\">Returns whether the given request contains an active session.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/SimpleClient.html#sessionStart--\">sessionStart()</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/SimpleClient.html\" title=\"class in stanford.cs106.net\">SimpleClient</a></dt>\n<dd>\n<div class=\"block\">Begins a session between this client and the server host.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/SimpleServer.html#sessionStart-stanford.cs106.net.Request-\">sessionStart(Request)</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/SimpleServer.html\" title=\"class in stanford.cs106.net\">SimpleServer</a></dt>\n<dd>\n<div class=\"block\">Begins an active session for the given request, with empty session data.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Grid.html#set-int-int-E-\">set(int, int, E)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Grid.html\" title=\"class in stanford.cs106.collections\">Grid</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#setAccelerator-javax.swing.JMenuItem-int-\">setAccelerator(JMenuItem, int)</a></span> - Method in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>\n<div class=\"block\">Sets the accelerator for the item as appropriate to the operating system\n conventions.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/Note.html#setAccidental-stanford.cs106.audio.Accidental-\">setAccidental(Accidental)</a></span> - Method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\">Note</a></dt>\n<dd>\n<div class=\"block\">Sets this Note's accidental value to be the given value: SHARP, FLAT, or NATURAL.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/Note.html#setAccidental-java.lang.String-\">setAccidental(String)</a></span> - Method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\">Note</a></dt>\n<dd>\n<div class=\"block\">Sets this Note's accidental value to be the given value: \"SHARP\", \"FLAT\", or \"NATURAL\".</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JStringList.html#setActionCommand-java.lang.String-\">setActionCommand(String)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JStringList.html\" title=\"class in acm.gui\">JStringList</a></dt>\n<dd>\n<div class=\"block\">Sets the current action command of this list, which is the string that\n will occur when action events are performed on this list.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#setAlignment-int-\">setAlignment(int)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/RandomGenerator.html#setAllSeed-java.lang.Long-\">setAllSeed(Long)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/RandomGenerator.html\" title=\"class in stanford.cs106.util\">RandomGenerator</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#setAnimated-boolean-\">setAnimated(boolean)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Sets the program to be in animated (true) or non-animated (false) mode.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#setAnimationDelay-int-\">setAnimationDelay(int)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Sets the number of milliseconds to delay between frames of animation.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#setAntiAliasDefault-boolean-\">setAntiAliasDefault(boolean)</a></span> - Static method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#setAntiAliasing-boolean-\">setAntiAliasing(boolean)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Sets whether this canvas uses anti-aliasing, which is smoothing and blending of neighboring pixels.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvasInterface.html#setAntiAliasing-boolean-\">setAntiAliasing(boolean)</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#setAntiAliasing-boolean-\">setAntiAliasing(boolean)</a></span> - Static method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#setAntiAliasing-boolean-\">setAntiAliasing(boolean)</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Sets whether this program's canvas uses anti-aliasing, which is\n smoothing and blending of neighboring pixels.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#setAntiAliasing-boolean-\">setAntiAliasing(boolean)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#setAppletMode-boolean-\">setAppletMode(boolean)</a></span> - Static method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#setAppletStub-java.applet.AppletStub-\">setAppletStub(AppletStub)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Sets the applet stub for this program in a way that makes it possible for\n clients to retrieve it.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#setAppletStub-java.applet.AppletStub-\">setAppletStub(AppletStub)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Sets the applet stub for this program in a way that makes it possible for\n clients to retrieve it.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/XmlUtils.html#setAttribute-org.w3c.dom.Node-java.lang.String-java.lang.String-\">setAttribute(Node, String, String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\">XmlUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#setAutoRepaintFlag-boolean-\">setAutoRepaintFlag(boolean)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Changes the setting of the auto-repaint flag.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#setBackground-java.awt.Color-\">setBackground(Color)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvasInterface.html#setBackground-java.awt.Color-\">setBackground(Color)</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#setBackground-java.awt.Color-\">setBackground(Color)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#setBackground-java.awt.Color-\">setBackground(Color)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Sets the background for the central region of the content pane.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#setBackground-java.awt.Color-\">setBackground(Color)</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Sets the background color of the <code>GCanvas</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#setBackground-java.awt.Color-\">setBackground(Color)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#setBackground-java.awt.Color-\">setBackground(Color)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Sets the background for the central region of the content pane.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AsciiArtProgram.html#setBackgroundCharacter-char-\">setBackgroundCharacter(char)</a></span> - Method in class acm.program.<a href=\"acm/program/AsciiArtProgram.html\" title=\"class in acm.program\">AsciiArtProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AsciiArtProgram.html#setBackgroundCharacter-java.lang.String-\">setBackgroundCharacter(String)</a></span> - Method in class acm.program.<a href=\"acm/program/AsciiArtProgram.html\" title=\"class in acm.program\">AsciiArtProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AsciiArtProgram.html#setBackgroundColor-java.awt.Color-\">setBackgroundColor(Color)</a></span> - Method in class acm.program.<a href=\"acm/program/AsciiArtProgram.html\" title=\"class in acm.program\">AsciiArtProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#setBeepers-int-int-\">setBeepers(int, int)</a></span> - Static method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Karel.html#setBeepersInBag-int-\">setBeepersInBag(int)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelInterface.html#setBeepersInBag-int-\">setBeepersInBag(int)</a></span> - Method in interface stanford.karel.<a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#setBeepersOnCorner-java.awt.Point-int-\">setBeepersOnCorner(Point, int)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#setBeepersOnCorner-int-int-int-\">setBeepersOnCorner(int, int, int)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#setBorder-java.awt.Color-\">setBorder(Color)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Sets this canvas to use a border of the given color, 1px thick.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#setBorder-java.awt.Color-int-\">setBorder(Color, int)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Sets this canvas to use a border of the given color and number of pixels thick.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLabel.html#setBottomY-double-\">setBottomY(double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLabel.html\" title=\"class in acm.graphics\">GLabel</a></dt>\n<dd>\n<div class=\"block\">Sets the bottom y-coordinate of this object to the given y value.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#setBottomY-double-\">setBottomY(double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Sets the bottom y-coordinate of this object to the given y value.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#setBottomY-double-\">setBottomY(double)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Sets the y location of the bottom of this program.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GImage.html#setBounds-double-double-double-double-\">setBounds(double, double, double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GImage.html\" title=\"class in acm.graphics\">GImage</a></dt>\n<dd>\n<div class=\"block\">Changes the bounds of this object to the specified values.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GImage.html#setBounds-acm.graphics.GRectangle-\">setBounds(GRectangle)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GImage.html\" title=\"class in acm.graphics\">GImage</a></dt>\n<dd>\n<div class=\"block\">Changes the bounds of this object to the values from the specified\n <code>GRectangle</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GOval.html#setBounds-double-double-double-double-\">setBounds(double, double, double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GOval.html\" title=\"class in acm.graphics\">GOval</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GOval.html#setBounds-acm.graphics.GRectangle-\">setBounds(GRectangle)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GOval.html\" title=\"class in acm.graphics\">GOval</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GRectangle.html#setBounds-double-double-double-double-\">setBounds(double, double, double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></dt>\n<dd>\n<div class=\"block\">Sets the components of a <code>GRectangle</code> from the specified values.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GRectangle.html#setBounds-acm.graphics.GPoint-acm.graphics.GDimension-\">setBounds(GPoint, GDimension)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></dt>\n<dd>\n<div class=\"block\">Sets the components of a <code>GRectangle</code> from the specified location and size.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GRectangle.html#setBounds-acm.graphics.GRectangle-\">setBounds(GRectangle)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></dt>\n<dd>\n<div class=\"block\">Sets the bounds of one <code>GRectangle</code> equal to that of another.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GResizable.html#setBounds-double-double-double-double-\">setBounds(double, double, double, double)</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GResizable.html\" title=\"interface in acm.graphics\">GResizable</a></dt>\n<dd>\n<div class=\"block\">Changes the bounds of this object to the specified values.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GResizable.html#setBounds-acm.graphics.GRectangle-\">setBounds(GRectangle)</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GResizable.html\" title=\"interface in acm.graphics\">GResizable</a></dt>\n<dd>\n<div class=\"block\">Changes the bounds of this object to the values from the specified\n <code>GRectangle</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/MediaTools.html#setCachingEnabled-boolean-\">setCachingEnabled(boolean)</a></span> - Static method in class acm.util.<a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\">MediaTools</a></dt>\n<dd>\n<div class=\"block\">This method sets an internal flag in the <code>MediaTools</code> package\n to indicate whether images and audio clips are cached internally by name.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#setCanvasHeight-double-\">setCanvasHeight(double)</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Sets this program to be exactly the right size so that its graphical canvas will be\n the given height in pixels.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgramInterface.html#setCanvasHeight-double-\">setCanvasHeight(double)</a></span> - Method in interface acm.program.<a href=\"acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#setCanvasHeight-double-\">setCanvasHeight(double)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#setCanvasSize-double-double-\">setCanvasSize(double, double)</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Sets this program to be exactly the right size so that its graphical canvas will be\n the given size in pixels.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgramInterface.html#setCanvasSize-double-double-\">setCanvasSize(double, double)</a></span> - Method in interface acm.program.<a href=\"acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#setCanvasSize-double-double-\">setCanvasSize(double, double)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#setCanvasWidth-double-\">setCanvasWidth(double)</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Sets this program to be exactly the right size so that its graphical canvas will be\n the given width in pixels.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgramInterface.html#setCanvasWidth-double-\">setCanvasWidth(double)</a></span> - Method in interface acm.program.<a href=\"acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#setCanvasWidth-double-\">setCanvasWidth(double)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLabel.html#setCenterLocation-double-double-\">setCenterLocation(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLabel.html\" title=\"class in acm.graphics\">GLabel</a></dt>\n<dd>\n<div class=\"block\">Sets the central x/y-coordinates of this object to the given x/y values.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#setCenterLocation-double-double-\">setCenterLocation(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Sets the central x/y-coordinates of this object to the given x/y values.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#setCenterLocation-acm.graphics.GPoint-\">setCenterLocation(GPoint)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Sets the central x/y-coordinates of this object to the given x/y values.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#setCenterLocation-double-double-\">setCenterLocation(double, double)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Sets the y location of the horizontal and vertical center of this program.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#setCenterX-double-\">setCenterX(double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Sets the central x-coordinate of this object to the given x value.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#setCenterX-double-\">setCenterX(double)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Sets the x location of the horizontal center of this program.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLabel.html#setCenterY-double-\">setCenterY(double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLabel.html\" title=\"class in acm.graphics\">GLabel</a></dt>\n<dd>\n<div class=\"block\">Sets the central y-coordinate of this object to the given y value.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#setCenterY-double-\">setCenterY(double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Sets the central y-coordinate of this object to the given y value.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#setCenterY-double-\">setCenterY(double)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Sets the y location of the vertical center of this program.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AbstractConsoleProgram.html#setClearConsoleEnabled-boolean-\">setClearConsoleEnabled(boolean)</a></span> - Method in class acm.program.<a href=\"acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></dt>\n<dd>\n<div class=\"block\">Turns on/off the ability to clear the console using clearConsole(); (default true)</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#setColor-java.awt.Color-\">setColor(Color)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#setColor-int-\">setColor(int)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#setColor-java.awt.Color-\">setColor(Color)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Sets the color used to display this object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JStringList.html#setColor-int-java.awt.Color-\">setColor(int, Color)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JStringList.html\" title=\"class in acm.gui\">JStringList</a></dt>\n<dd>\n<div class=\"block\">Sets the color of the item at the given index to the given color.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Vertex.html#setColor-java.awt.Color-\">setColor(Color)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a></dt>\n<dd>\n<div class=\"block\">Sets the vertex's color</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AbstractConsoleProgram.html#setColorFromChooser-boolean-\">setColorFromChooser(boolean)</a></span> - Method in class acm.program.<a href=\"acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></dt>\n<dd>\n<div class=\"block\">Pops up a JColorChooser to let the user pick a color for the console.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JStringList.html#setColors-java.awt.Color:A-\">setColors(Color[])</a></span> - Method in class acm.gui.<a href=\"acm/gui/JStringList.html\" title=\"class in acm.gui\">JStringList</a></dt>\n<dd>\n<div class=\"block\">Sets the items of this list to use the colors from the given array.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#setColumnCount-int-\">setColumnCount(int)</a></span> - Method in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Resets the number of columns in the table.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/ConsoleModel.html#setConsole-acm.io.IOConsole-\">setConsole(IOConsole)</a></span> - Method in interface acm.io.<a href=\"acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/StandardConsoleModel.html#setConsole-acm.io.IOConsole-\">setConsole(IOConsole)</a></span> - Method in class acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SystemConsoleModel.html#setConsole-acm.io.IOConsole-\">setConsole(IOConsole)</a></span> - Method in class acm.io.<a href=\"acm/io/SystemConsoleModel.html\" title=\"class in acm.io\">SystemConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#setConsole-acm.io.IOConsole-\">setConsole(IOConsole)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Sets the console associated with this program.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#setConsole-acm.io.IOConsole-\">setConsole(IOConsole)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Sets the console associated with this program.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#setConstantValue-java.lang.Class-java.lang.String-java.lang.Object-\">setConstantValue(Class&lt;?&gt;, String, Object)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#setConstantValue-java.lang.Class-java.lang.Object-java.lang.String-java.lang.Object-\">setConstantValue(Class&lt;?&gt;, Object, String, Object)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#setConstantValue-java.lang.String-java.lang.String-java.lang.Object-\">setConstantValue(String, String, Object)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#setConstraints-java.awt.Component-java.awt.GridBagConstraints-\">setConstraints(Component, GridBagConstraints)</a></span> - Method in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Sets the constraints for the component to a copy of the supplied\n constraints.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#setConstraints-java.awt.Component-java.lang.String-\">setConstraints(Component, String)</a></span> - Method in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Sets the constraints for the component to the constraints\n specified by the string.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/SplClip.html#setController-javazoom.jlgui.basicplayer.BasicController-\">setController(BasicController)</a></span> - Method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/SplClip.html\" title=\"class in stanford.cs106.audio\">SplClip</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#setCornerColor-java.awt.Point-java.awt.Color-\">setCornerColor(Point, Color)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#setCornerColor-int-int-java.awt.Color-\">setCornerColor(int, int, Color)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Vertex.html#setCost-double-\">setCost(double)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a></dt>\n<dd>\n<div class=\"block\">Sets the value of the internal 'cost' to reach this vertex.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#setDefaultFill-int-\">setDefaultFill(int)</a></span> - Method in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Sets the default fill parameter for components in the table.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/ComparisonFailureEnhanced.html#setDetails-java.lang.String-\">setDetails(String)</a></span> - Method in error stanford.cs106.junit.<a href=\"stanford/cs106/junit/ComparisonFailureEnhanced.html\" title=\"class in stanford.cs106.junit\">ComparisonFailureEnhanced</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#setDialog-acm.io.IODialog-\">setDialog(IODialog)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Sets the dialog associated with this program.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Karel.html#setDirection-int-\">setDirection(int)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelInterface.html#setDirection-int-\">setDirection(int)</a></span> - Method in interface stanford.karel.<a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#setDisplayFlag-boolean-\">setDisplayFlag(boolean)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Karel.html#setDisplayOneFlag-boolean-\">setDisplayOneFlag(boolean)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#setDisplayOneFlag-boolean-\">setDisplayOneFlag(boolean)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/Note.html#setDuration-double-\">setDuration(double)</a></span> - Method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\">Note</a></dt>\n<dd>\n<div class=\"block\">Sets this Note's duration in seconds to be the given value.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#setEcho-boolean-\">setEcho(boolean)</a></span> - Static method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#setEchoForce-boolean-\">setEchoForce(boolean)</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#setEchoStream-java.io.PrintStream-\">setEchoStream(PrintStream)</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#setEditMode-boolean-\">setEditMode(boolean)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#setEnabled-java.lang.String-boolean-\">setEnabled(String, boolean)</a></span> - Method in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>\n<div class=\"block\">Enables or disables any menu items that generate the specified action\n command.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLine.html#setEndPoint-double-double-\">setEndPoint(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLine.html\" title=\"class in acm.graphics\">GLine</a></dt>\n<dd>\n<div class=\"block\">Sets the end point of the line to the point (<code>x</code>,&nbsp;\n <code>y</code>).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLine.html#setEndPointPolar-double-double-\">setEndPointPolar(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLine.html\" title=\"class in acm.graphics\">GLine</a></dt>\n<dd>\n<div class=\"block\">Sets the end point of the line using polar coordinates.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/ConsoleModel.html#setErrorColor-java.awt.Color-\">setErrorColor(Color)</a></span> - Method in interface acm.io.<a href=\"acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#setErrorColor-java.awt.Color-\">setErrorColor(Color)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/StandardConsoleModel.html#setErrorColor-java.awt.Color-\">setErrorColor(Color)</a></span> - Method in class acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SystemConsoleModel.html#setErrorColor-java.awt.Color-\">setErrorColor(Color)</a></span> - Method in class acm.io.<a href=\"acm/io/SystemConsoleModel.html\" title=\"class in acm.io\">SystemConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/ConsoleModel.html#setErrorStyle-int-\">setErrorStyle(int)</a></span> - Method in interface acm.io.<a href=\"acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#setErrorStyle-int-\">setErrorStyle(int)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/StandardConsoleModel.html#setErrorStyle-int-\">setErrorStyle(int)</a></span> - Method in class acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SystemConsoleModel.html#setErrorStyle-int-\">setErrorStyle(int)</a></span> - Method in class acm.io.<a href=\"acm/io/SystemConsoleModel.html\" title=\"class in acm.io\">SystemConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/DoubleField.html#setExceptionOnError-boolean-\">setExceptionOnError(boolean)</a></span> - Method in class acm.gui.<a href=\"acm/gui/DoubleField.html\" title=\"class in acm.gui\">DoubleField</a></dt>\n<dd>\n<div class=\"block\">Sets the error-handling mode of this interactor as specified by the <code>flag</code>\n parameter.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/IntField.html#setExceptionOnError-boolean-\">setExceptionOnError(boolean)</a></span> - Method in class acm.gui.<a href=\"acm/gui/IntField.html\" title=\"class in acm.gui\">IntField</a></dt>\n<dd>\n<div class=\"block\">Sets the error-handling mode of this interactor as specified by the <code>flag</code>\n parameter.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#setExceptionOnError-boolean-\">setExceptionOnError(boolean)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessKarel.html#setExitEnabled-boolean-\">setExitEnabled(boolean)</a></span> - Static method in class stanford.karel.<a href=\"stanford/karel/HeadlessKarel.html\" title=\"class in stanford.karel\">HeadlessKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#setExitOnClose-boolean-\">setExitOnClose(boolean)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Sets whether the program will exit when its window is closed (default true).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#setFieldValue-java.lang.Class-java.lang.String-java.lang.Object-\">setFieldValue(Class&lt;?&gt;, String, Object)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#setFieldValue-java.lang.Object-java.lang.reflect.Field-java.lang.Object-\">setFieldValue(Object, Field, Object)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AsciiArtProgram.html#setFillCharacter-char-\">setFillCharacter(char)</a></span> - Method in class acm.program.<a href=\"acm/program/AsciiArtProgram.html\" title=\"class in acm.program\">AsciiArtProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AsciiArtProgram.html#setFillCharacter-java.lang.String-\">setFillCharacter(String)</a></span> - Method in class acm.program.<a href=\"acm/program/AsciiArtProgram.html\" title=\"class in acm.program\">AsciiArtProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GOval.html#setFillColor-java.awt.Color-\">setFillColor(Color)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GOval.html\" title=\"class in acm.graphics\">GOval</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GOval.html#setFilled-boolean-\">setFilled(boolean)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GOval.html\" title=\"class in acm.graphics\">GOval</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#setFocusedListener-java.awt.event.ActionListener-\">setFocusedListener(ActionListener)</a></span> - Method in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>\n<div class=\"block\">Registers a listener that responds while the caller holds the keyboard\n focus.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvasInterface.html#setFont-java.awt.Font-\">setFont(Font)</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLabel.html#setFont-java.awt.Font-\">setFont(Font)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLabel.html\" title=\"class in acm.graphics\">GLabel</a></dt>\n<dd>\n<div class=\"block\">Changes the font used to display the <code>GLabel</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLabel.html#setFont-java.lang.String-\">setFont(String)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLabel.html\" title=\"class in acm.graphics\">GLabel</a></dt>\n<dd>\n<div class=\"block\">Changes the font used to display the <code>GLabel</code> as specified by\n the string <code>str</code>, which is interpreted in the style of\n <code>Font.decode</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#setFont-java.lang.String-\">setFont(String)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#setFont-java.awt.Font-\">setFont(Font)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SystemConsoleModel.html#setFont-java.awt.Font-\">setFont(Font)</a></span> - Method in class acm.io.<a href=\"acm/io/SystemConsoleModel.html\" title=\"class in acm.io\">SystemConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AbstractConsoleProgram.html#setFont-java.awt.Font-\">setFont(Font)</a></span> - Method in class acm.program.<a href=\"acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></dt>\n<dd>\n<div class=\"block\">Sets the font for the console.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AbstractConsoleProgram.html#setFont-java.lang.String-\">setFont(String)</a></span> - Method in class acm.program.<a href=\"acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></dt>\n<dd>\n<div class=\"block\">Sets the font used for the console as specified by the string\n <code>str</code>, which is interpreted in the style of\n <code>Font.decode</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#setFont-java.awt.Font-\">setFont(Font)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AbstractConsoleProgram.html#setFontFromChooser--\">setFontFromChooser()</a></span> - Method in class acm.program.<a href=\"acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></dt>\n<dd>\n<div class=\"block\">Pops up a JFontChooser to let the user pick a font for the console.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#setForeground-java.awt.Color-\">setForeground(Color)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#setForeground-int-\">setForeground(int)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#setForeground-java.awt.Color-\">setForeground(Color)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AsciiArtProgram.html#setForegroundCharacter-char-\">setForegroundCharacter(char)</a></span> - Method in class acm.program.<a href=\"acm/program/AsciiArtProgram.html\" title=\"class in acm.program\">AsciiArtProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AsciiArtProgram.html#setForegroundCharacter-java.lang.String-\">setForegroundCharacter(String)</a></span> - Method in class acm.program.<a href=\"acm/program/AsciiArtProgram.html\" title=\"class in acm.program\">AsciiArtProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AsciiArtProgram.html#setForegroundColor-java.awt.Color-\">setForegroundColor(Color)</a></span> - Method in class acm.program.<a href=\"acm/program/AsciiArtProgram.html\" title=\"class in acm.program\">AsciiArtProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/DoubleField.html#setFormat-java.lang.String-\">setFormat(String)</a></span> - Method in class acm.gui.<a href=\"acm/gui/DoubleField.html\" title=\"class in acm.gui\">DoubleField</a></dt>\n<dd>\n<div class=\"block\">Sets the format used for the field.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/IntField.html#setFormat-java.lang.String-\">setFormat(String)</a></span> - Method in class acm.gui.<a href=\"acm/gui/IntField.html\" title=\"class in acm.gui\">IntField</a></dt>\n<dd>\n<div class=\"block\">Sets the format used for the field.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#setFrameIndex-int-\">setFrameIndex(int)</a></span> - Method in class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Sets the current frame index.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#setFramesPerSecond-int-\">setFramesPerSecond(int)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Sets the animation delay properly to produce the given number of frames\n per second of animation.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#setHeight-double-\">setHeight(double)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Sets the height of this program without changing its width.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#setHgap-int-\">setHgap(int)</a></span> - Method in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Sets the horizontal gap between components.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#setHorizontalAlignment-int-\">setHorizontalAlignment(int)</a></span> - Method in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Sets the horizontal alignment for the table.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GImage.html#setImage-java.awt.Image-\">setImage(Image)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GImage.html\" title=\"class in acm.graphics\">GImage</a></dt>\n<dd>\n<div class=\"block\">Resets the image used by this <code>GImage</code> object to the new image\n specified as an argument.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GImage.html#setImage-java.lang.String-\">setImage(String)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GImage.html\" title=\"class in acm.graphics\">GImage</a></dt>\n<dd>\n<div class=\"block\">Resets the image used by this <code>GImage</code> object to the one identified\n by the argument <code>name</code>, which is processed exactly as described\n in the constructors.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/ConsoleModel.html#setInputColor-java.awt.Color-\">setInputColor(Color)</a></span> - Method in interface acm.io.<a href=\"acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#setInputColor-java.awt.Color-\">setInputColor(Color)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/StandardConsoleModel.html#setInputColor-java.awt.Color-\">setInputColor(Color)</a></span> - Method in class acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SystemConsoleModel.html#setInputColor-java.awt.Color-\">setInputColor(Color)</a></span> - Method in class acm.io.<a href=\"acm/io/SystemConsoleModel.html\" title=\"class in acm.io\">SystemConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#setInputModel-acm.io.IOModel-\">setInputModel(IOModel)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Sets the input model associated with this program.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/ConsoleModel.html#setInputScript-java.io.BufferedReader-\">setInputScript(BufferedReader)</a></span> - Method in interface acm.io.<a href=\"acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#setInputScript-java.io.BufferedReader-\">setInputScript(BufferedReader)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/StandardConsoleModel.html#setInputScript-java.io.BufferedReader-\">setInputScript(BufferedReader)</a></span> - Method in class acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SystemConsoleModel.html#setInputScript-java.io.BufferedReader-\">setInputScript(BufferedReader)</a></span> - Method in class acm.io.<a href=\"acm/io/SystemConsoleModel.html\" title=\"class in acm.io\">SystemConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/ConsoleModel.html#setInputStyle-int-\">setInputStyle(int)</a></span> - Method in interface acm.io.<a href=\"acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#setInputStyle-int-\">setInputStyle(int)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/StandardConsoleModel.html#setInputStyle-int-\">setInputStyle(int)</a></span> - Method in class acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SystemConsoleModel.html#setInputStyle-int-\">setInputStyle(int)</a></span> - Method in class acm.io.<a href=\"acm/io/SystemConsoleModel.html\" title=\"class in acm.io\">SystemConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#setInteractiveMode-boolean-\">setInteractiveMode(boolean)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#setInvisible-acm.graphics.GObject-boolean-\">setInvisible(GObject, boolean)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Marks the given GObject as being 'invisible'.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JStringList.html#setItem-int-java.lang.String-\">setItem(int, String)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JStringList.html\" title=\"class in acm.gui\">JStringList</a></dt>\n<dd>\n<div class=\"block\">Sets the item at the given index to store the given text.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JStringList.html#setItem-int-java.lang.String-java.awt.Color-\">setItem(int, String, Color)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JStringList.html\" title=\"class in acm.gui\">JStringList</a></dt>\n<dd>\n<div class=\"block\">Sets the item at the given index to store the given text in the given color.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JStringList.html#setItems-java.lang.String:A-java.awt.Color:A-\">setItems(String[], Color[])</a></span> - Method in class acm.gui.<a href=\"acm/gui/JStringList.html\" title=\"class in acm.gui\">JStringList</a></dt>\n<dd>\n<div class=\"block\">Sets the list contents to be the given items in the given colors.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/BackEndServer.html#setJavaBackEnd-stanford.spl.JavaBackEnd-\">setJavaBackEnd(JavaBackEnd)</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/BackEndServer.html\" title=\"class in stanford.cs106.net\">BackEndServer</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#setJFrame-javax.swing.JFrame-\">setJFrame(JFrame)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Sets the Java Swing window frame that encloses this program.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#setJMenuBar-javax.swing.JMenuBar-\">setJMenuBar(JMenuBar)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Sets the JMenuBar at the top of the program window to be the given menu bar.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLabel.html#setLabel-java.lang.String-\">setLabel(String)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLabel.html\" title=\"class in acm.graphics\">GLabel</a></dt>\n<dd>\n<div class=\"block\">Changes the string stored within the <code>GLabel</code> object, so that\n a new text string appears on the display.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#setLayout-java.awt.LayoutManager-\">setLayout(LayoutManager)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Sets the layout manager for the central region of the content pane.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#setLayout-java.awt.LayoutManager-\">setLayout(LayoutManager)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Sets the layout manager for the central region of the content pane.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#setLineWidth-double-\">setLineWidth(double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Sets the thickness of lines drawn on this shape to the given number of pixels.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLineGroup.html#setLocation-double-double-\">setLocation(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLineGroup.html\" title=\"class in acm.graphics\">GLineGroup</a></dt>\n<dd>\n<div class=\"block\">Sets the line group's top/left corner to the given x/y pair.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#setLocation-double-double-\">setLocation(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Sets the location of this object to the point (<code>x</code>, <code>y</code>).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#setLocation-acm.graphics.GPoint-\">setLocation(GPoint)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Sets the location of this object to the specified point.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GPoint.html#setLocation-double-double-\">setLocation(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a></dt>\n<dd>\n<div class=\"block\">Sets the location of the <code>GPoint</code> to the specified\n <code>x</code> and <code>y</code> values.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GPoint.html#setLocation-acm.graphics.GPoint-\">setLocation(GPoint)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a></dt>\n<dd>\n<div class=\"block\">Sets the location of the <code>GPoint</code> to that of an existing one.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GRectangle.html#setLocation-double-double-\">setLocation(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></dt>\n<dd>\n<div class=\"block\">Sets the location of the <code>GRectangle</code> to the specified <code>x</code>\n and <code>y</code> values.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GRectangle.html#setLocation-acm.graphics.GPoint-\">setLocation(GPoint)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></dt>\n<dd>\n<div class=\"block\">Sets the location of the <code>GRectangle</code> to the specified point.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#setLocation-double-double-\">setLocation(double, double)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Sets the (x, y) location of the top-left corner of this program.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#setLocation-acm.graphics.GPoint-\">setLocation(GPoint)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Sets the (x, y) location of the top-left corner of this program.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Karel.html#setLocation-java.awt.Point-\">setLocation(Point)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Karel.html#setLocation-int-int-\">setLocation(int, int)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelInterface.html#setLocation-int-int-\">setLocation(int, int)</a></span> - Method in interface stanford.karel.<a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelInterface.html#setLocation-java.awt.Point-\">setLocation(Point)</a></span> - Method in interface stanford.karel.<a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#setLook-int-\">setLook(int)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#setMacMenuBarFlag-boolean-\">setMacMenuBarFlag(boolean)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Sets a flag indicating whether applications running on the Macintosh\n should use standard Mac menus.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/ConsoleModel.html#setMenuBar-acm.program.ProgramMenuBar-\">setMenuBar(ProgramMenuBar)</a></span> - Method in interface acm.io.<a href=\"acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#setMenuBar-acm.program.ProgramMenuBar-\">setMenuBar(ProgramMenuBar)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/StandardConsoleModel.html#setMenuBar-acm.program.ProgramMenuBar-\">setMenuBar(ProgramMenuBar)</a></span> - Method in class acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SystemConsoleModel.html#setMenuBar-acm.program.ProgramMenuBar-\">setMenuBar(ProgramMenuBar)</a></span> - Method in class acm.io.<a href=\"acm/io/SystemConsoleModel.html\" title=\"class in acm.io\">SystemConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#setMonitor-stanford.karel.KarelWorldMonitor-\">setMonitor(KarelWorldMonitor)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#setMsKarel-boolean-\">setMsKarel(boolean)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JListOptionPane.html#setMultipleSelection-boolean-\">setMultipleSelection(boolean)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JListOptionPane.html\" title=\"class in acm.gui\">JListOptionPane</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/StdAudio.html#setMute-boolean-\">setMute(boolean)</a></span> - Static method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/StdAudio.html\" title=\"class in stanford.cs106.audio\">StdAudio</a></dt>\n<dd>\n<div class=\"block\">Sets whether the audio system is muted.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#setName-java.lang.String-\">setName(String)</a></span> - Method in class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Sets a name to identify the sound.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#setNativeArcFlag-boolean-\">setNativeArcFlag(boolean)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Sets whether the redering code for <code>GArc</code> and <code>GOval</code> should use\n Java arcs.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Vertex.html#setNumber-int-\">setNumber(int)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a></dt>\n<dd>\n<div class=\"block\">Sets the value of the internal 'number' vertex marker for this vertex.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#setNumberSquaresFlag-boolean-\">setNumberSquaresFlag(boolean)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/Note.html#setOctave-int-\">setOctave(int)</a></span> - Method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\">Note</a></dt>\n<dd>\n<div class=\"block\">Sets this Note's octave to be the given value.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#setOpaque-boolean-\">setOpaque(boolean)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Sets a flag indicating whether this canvas is opaque, which means that it\n obscures anything behind it.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/StandardConsoleModel.html#setOutputColor-java.awt.Color-\">setOutputColor(Color)</a></span> - Method in class acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#setOutputColor-java.awt.Color-\">setOutputColor(Color)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Sets the current output color used to display output on the console.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#setOutputModel-acm.io.IOModel-\">setOutputModel(IOModel)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Sets the output model associated with this program.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/StandardConsoleModel.html#setOutputStyle-int-\">setOutputStyle(int)</a></span> - Method in class acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#setParameter-java.lang.String-java.lang.String-\">setParameter(String, String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Sets a new value for the named parameter.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#setParameterTable-java.util.Map-\">setParameterTable(Map&lt;String, String&gt;)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#setParameterTable-java.util.HashMap-\">setParameterTable(HashMap&lt;String, String&gt;)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Sets the parameter table for this program.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#setParameterTable-java.util.Map-\">setParameterTable(Map&lt;String, String&gt;)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#setParameterTable-java.util.Map-\">setParameterTable(Map&lt;String, String&gt;)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Sets the parameter table for this program.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramInterface.html#setParameterTable-java.util.Map-\">setParameterTable(Map&lt;String, String&gt;)</a></span> - Method in interface acm.program.<a href=\"acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#setParent-acm.graphics.GContainer-\">setParent(GContainer)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Sets the parent of this object, which should be called only by the\n <code>GContainer</code> in which this is installed.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#setPathname-java.lang.String-\">setPathname(String)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#setPathName-java.lang.String-\">setPathName(String)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/StdAudio.html#setPaused-boolean-\">setPaused(boolean)</a></span> - Static method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/StdAudio.html\" title=\"class in stanford.cs106.audio\">StdAudio</a></dt>\n<dd>\n<div class=\"block\">Sets whether the audio system is paused.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#setPauseScaleFactor-double-\">setPauseScaleFactor(double)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Applies a scaling factor to the duration of pause() calls.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/Note.html#setPitch-stanford.cs106.audio.Pitch-\">setPitch(Pitch)</a></span> - Method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\">Note</a></dt>\n<dd>\n<div class=\"block\">Sets this Note's pitch to be the given value.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/Note.html#setPitch-java.lang.String-\">setPitch(String)</a></span> - Method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\">Note</a></dt>\n<dd>\n<div class=\"block\">Sets this Note's pitch to be the given value.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GImage.html#setPixelArray-int:A:A-\">setPixelArray(int[][])</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GImage.html\" title=\"class in acm.graphics\">GImage</a></dt>\n<dd>\n<div class=\"block\">Sets the image to use the given two-dimensional array of pixel values.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#setPixelsFromString-java.lang.String-\">setPixelsFromString(String)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JPlaceholderTextField.html#setPlaceholder-java.lang.String-\">setPlaceholder(String)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JPlaceholderTextField.html\" title=\"class in acm.gui\">JPlaceholderTextField</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#setPreferredHeight-javax.swing.JComponent-int-\">setPreferredHeight(JComponent, int)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#setPreferredWidth-javax.swing.JComponent-int-\">setPreferredWidth(JComponent, int)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Vertex.html#setPrevious-stanford.cs106.collections.Vertex-\">setPrevious(Vertex&lt;V&gt;)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a></dt>\n<dd>\n<div class=\"block\">Sets the value of the internal 'previous' vertex marker for this vertex.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/G3DRect.html#setRaised-boolean-\">setRaised(boolean)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/G3DRect.html\" title=\"class in acm.graphics\">G3DRect</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#setReadBooleanRepromptMessage-java.lang.String-\">setReadBooleanRepromptMessage(String)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#setReadDoubleDefaultPrompt-java.lang.String-\">setReadDoubleDefaultPrompt(String)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#setReadDoubleRepromptMessage-java.lang.String-\">setReadDoubleRepromptMessage(String)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#setReadIntDefaultPrompt-java.lang.String-\">setReadIntDefaultPrompt(String)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#setReadIntRepromptMessage-java.lang.String-\">setReadIntRepromptMessage(String)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/AsciiArtProgram.html#setRedrawAutomatically-boolean-\">setRedrawAutomatically(boolean)</a></span> - Method in class acm.program.<a href=\"acm/program/AsciiArtProgram.html\" title=\"class in acm.program\">AsciiArtProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#setRepaintFlag-boolean-\">setRepaintFlag(boolean)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/Note.html#setRepeat-boolean-\">setRepeat(boolean)</a></span> - Method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\">Note</a></dt>\n<dd>\n<div class=\"block\">Sets this Note's repeat flag to be the given value.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#setResizable-boolean-\">setResizable(boolean)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Sets the title of this program.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/ResourceUtils.html#setResourceLoaderClass-java.lang.Class-\">setResourceLoaderClass(Class&lt;?&gt;)</a></span> - Static method in class stanford.cs106.io.<a href=\"stanford/cs106/io/ResourceUtils.html\" title=\"class in stanford.cs106.io\">ResourceUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#setReuse-boolean-\">setReuse(boolean)</a></span> - Static method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#setRGB-int-int-int-\">setRGB(int, int, int)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#setRGB-int-int-int-boolean-\">setRGB(int, int, int, boolean)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#setRightX-double-\">setRightX(double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Sets the rightmost x-coordinate of this object to the given x value.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#setRightX-double-\">setRightX(double)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Sets the x location of the right edge of this program.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#setRowCount-int-\">setRowCount(int)</a></span> - Method in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Resets the number of rows in the table.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#setSaveFile-java.lang.String-\">setSaveFile(String)</a></span> - Static method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessKarel.html#setSaveFile-java.lang.String-\">setSaveFile(String)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/HeadlessKarel.html\" title=\"class in stanford.karel\">HeadlessKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.html#setSelectedFont-java.awt.Font-\">setSelectedFont(Font)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></dt>\n<dd>\n<div class=\"block\">Set the selected font.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.html#setSelectedFontFamily-java.lang.String-\">setSelectedFontFamily(String)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></dt>\n<dd>\n<div class=\"block\">Set the family name of the selected font.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.html#setSelectedFontSize-int-\">setSelectedFontSize(int)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></dt>\n<dd>\n<div class=\"block\">Set the size of the selected font.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.html#setSelectedFontStyle-int-\">setSelectedFontStyle(int)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></dt>\n<dd>\n<div class=\"block\">Set the style of the selected font.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/RandomGenerator.html#setSharedSeed-long-\">setSharedSeed(long)</a></span> - Static method in class acm.util.<a href=\"acm/util/RandomGenerator.html\" title=\"class in acm.util\">RandomGenerator</a></dt>\n<dd>\n<div class=\"block\">Sets a seed value that will be used by all RandomGenerators when they are\n constructed.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#setShowPixelGrid-boolean-\">setShowPixelGrid(boolean)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Sets whether to display information on this canvas about the current pixel where\n the mouse pointer is resting.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#setShowPixelGrid-boolean-\">setShowPixelGrid(boolean)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Sets whether to display a grid of horizontal and vertical lines on this canvas\n for debugging, if this program contains a graphical canvas.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#setShowPixelInfo-boolean-\">setShowPixelInfo(boolean)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Sets whether to display information on this canvas about the current pixel where\n the mouse pointer is resting.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvasInterface.html#setShowPixelInfo-boolean-\">setShowPixelInfo(boolean)</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#setShowPixelInfo-boolean-\">setShowPixelInfo(boolean)</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Sets whether to display information on this canvas about the current pixel where\n the mouse pointer is resting in this program's graphical canvas.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#setShowPixelInfo-boolean-\">setShowPixelInfo(boolean)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#setShowPixelInfo-boolean-\">setShowPixelInfo(boolean)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Sets whether to display information on this canvas about the current pixel where\n the mouse pointer is resting in this program's graphical canvas, if this program\n contains a graphical canvas.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvasInterface.html#setSize-java.awt.Dimension-\">setSize(Dimension)</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GImage.html#setSize-double-double-\">setSize(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GImage.html\" title=\"class in acm.graphics\">GImage</a></dt>\n<dd>\n<div class=\"block\">Changes the size of this object to the specified width and height.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GImage.html#setSize-acm.graphics.GDimension-\">setSize(GDimension)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GImage.html\" title=\"class in acm.graphics\">GImage</a></dt>\n<dd>\n<div class=\"block\">Changes the size of this object to the specified <code>GDimension</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GOval.html#setSize-double-double-\">setSize(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GOval.html\" title=\"class in acm.graphics\">GOval</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GOval.html#setSize-acm.graphics.GDimension-\">setSize(GDimension)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GOval.html\" title=\"class in acm.graphics\">GOval</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GRectangle.html#setSize-double-double-\">setSize(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></dt>\n<dd>\n<div class=\"block\">Sets the size of the <code>GRectangle</code> to the specified values.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GRectangle.html#setSize-acm.graphics.GDimension-\">setSize(GDimension)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></dt>\n<dd>\n<div class=\"block\">Sets the size of the <code>GRectangle</code> to the specified dimension.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GResizable.html#setSize-double-double-\">setSize(double, double)</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GResizable.html\" title=\"interface in acm.graphics\">GResizable</a></dt>\n<dd>\n<div class=\"block\">Changes the size of this object to the specified width and height.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GResizable.html#setSize-acm.graphics.GDimension-\">setSize(GDimension)</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GResizable.html\" title=\"interface in acm.graphics\">GResizable</a></dt>\n<dd>\n<div class=\"block\">Changes the size of this object as specified by the <code>GDimension</code>\n object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#setSize-double-double-\">setSize(double, double)</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Sets this program to be exactly the right size so that its graphical canvas will be\n the given size in pixels.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#setSize-int-int-\">setSize(int, int)</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Sets this program to be exactly the right size so that its graphical canvas will be\n the given size in pixels.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgramInterface.html#setSize-double-double-\">setSize(double, double)</a></span> - Method in interface acm.program.<a href=\"acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#setSize-java.awt.Dimension-\">setSize(Dimension)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#setSize-double-double-\">setSize(double, double)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#setSize-double-double-\">setSize(double, double)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Sets the width and height of this program.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#setSize-int-int-\">setSize(int, int)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelControlPanel.html#setSpeed-double-\">setSpeed(double)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelControlPanel.html\" title=\"class in stanford.karel\">KarelControlPanel</a></dt>\n<dd>\n<div class=\"block\">This method is invoked when a world map file needs to set the simulation\n speed (between 0 and 100).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLine.html#setStartPoint-double-double-\">setStartPoint(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLine.html\" title=\"class in acm.graphics\">GLine</a></dt>\n<dd>\n<div class=\"block\">Sets the initial point in the line to (<code>x</code>,&nbsp;\n <code>y</code>), leaving the end point unchanged.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#setStartupObject-java.lang.Object-\">setStartupObject(Object)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#setStartupObject-java.lang.Object-\">setStartupObject(Object)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#setStartupObject-java.lang.Object-\">setStartupObject(Object)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Sets the object that is created when the program is started so that\n it can be retrieved later by <code>getStartupObject</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramInterface.html#setStartupObject-java.lang.Object-\">setStartupObject(Object)</a></span> - Method in interface acm.program.<a href=\"acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.html#setStatus-java.lang.String-\">setStatus(String)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#setStrictGridBagModel-boolean-\">setStrictGridBagModel(boolean)</a></span> - Method in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Sets a flag indicating whether the layout manager should match the\n model used in <code>GridBagLayout</code> even when that interpretation\n seems wrong.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#setSystemLookAndFeel--\">setSystemLookAndFeel()</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/SystemProperties.html#setSystemProperty-java.lang.String-java.lang.String-\">setSystemProperty(String, String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/SystemProperties.html\" title=\"class in stanford.cs106.util\">SystemProperties</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/JUnitListener.html#setTestCounts-int-int-\">setTestCounts(int, int)</a></span> - Method in interface stanford.cs106.junit.<a href=\"stanford/cs106/junit/JUnitListener.html\" title=\"interface in stanford.cs106.junit\">JUnitListener</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/JUnitListener.html#setTestDetails-java.lang.String-java.util.Map-\">setTestDetails(String, Map&lt;String, String&gt;)</a></span> - Method in interface stanford.cs106.junit.<a href=\"stanford/cs106/junit/JUnitListener.html\" title=\"interface in stanford.cs106.junit\">JUnitListener</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/JUnitListener.html#setTestDetailsMessage-java.lang.String-java.lang.String-\">setTestDetailsMessage(String, String)</a></span> - Method in interface stanford.cs106.junit.<a href=\"stanford/cs106/junit/JUnitListener.html\" title=\"interface in stanford.cs106.junit\">JUnitListener</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/JUnitListener.html#setTestingCompleted-boolean-\">setTestingCompleted(boolean)</a></span> - Method in interface stanford.cs106.junit.<a href=\"stanford/cs106/junit/JUnitListener.html\" title=\"interface in stanford.cs106.junit\">JUnitListener</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/JUnitListener.html#setTestResult-java.lang.String-java.lang.String-\">setTestResult(String, String)</a></span> - Method in interface stanford.cs106.junit.<a href=\"stanford/cs106/junit/JUnitListener.html\" title=\"interface in stanford.cs106.junit\">JUnitListener</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/JUnitListener.html#setTestRuntime-java.lang.String-int-\">setTestRuntime(String, int)</a></span> - Method in interface stanford.cs106.junit.<a href=\"stanford/cs106/junit/JUnitListener.html\" title=\"interface in stanford.cs106.junit\">JUnitListener</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLabel.html#setText-java.lang.String-\">setText(String)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLabel.html\" title=\"class in acm.graphics\">GLabel</a></dt>\n<dd>\n<div class=\"block\">Changes the string stored within the <code>GLabel</code> object, so that\n a new text string appears on the display.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#SETTINGS_FILENAME\">SETTINGS_FILENAME</a></span> - Static variable in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#setTitle-java.lang.String-\">setTitle(String)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Sets the title of this program.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#setTitle-java.lang.String-\">setTitle(String)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#setTitle-java.lang.String-\">setTitle(String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Sets the title of this program.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramInterface.html#setTitle-java.lang.String-\">setTitle(String)</a></span> - Method in interface acm.program.<a href=\"acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessKarel.html#setTitle-java.lang.String-\">setTitle(String)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/HeadlessKarel.html\" title=\"class in stanford.karel\">HeadlessKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#setTitle-java.lang.String-\">setTitle(String)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#setToDefaultSize--\">setToDefaultSize()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLabel.html#setTopY-double-\">setTopY(double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLabel.html\" title=\"class in acm.graphics\">GLabel</a></dt>\n<dd>\n<div class=\"block\">Sets the top y-coordinate of this object to the given y value.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessKarel.html#setTrackLocationsVisited-boolean-\">setTrackLocationsVisited(boolean)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/HeadlessKarel.html\" title=\"class in stanford.karel\">HeadlessKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/DoubleField.html#setValue-double-\">setValue(double)</a></span> - Method in class acm.gui.<a href=\"acm/gui/DoubleField.html\" title=\"class in acm.gui\">DoubleField</a></dt>\n<dd>\n<div class=\"block\">Sets the value of a field.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/IntField.html#setValue-int-\">setValue(int)</a></span> - Method in class acm.gui.<a href=\"acm/gui/IntField.html\" title=\"class in acm.gui\">IntField</a></dt>\n<dd>\n<div class=\"block\">Sets the value of a field.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JPlaceholderTextField.html#setValue-double-\">setValue(double)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JPlaceholderTextField.html\" title=\"class in acm.gui\">JPlaceholderTextField</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JPlaceholderTextField.html#setValue-int-\">setValue(int)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JPlaceholderTextField.html\" title=\"class in acm.gui\">JPlaceholderTextField</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JPlaceholderTextField.html#setValue-long-\">setValue(long)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JPlaceholderTextField.html\" title=\"class in acm.gui\">JPlaceholderTextField</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JButtonGroup.html#setVertical-boolean-\">setVertical(boolean)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JButtonGroup.html\" title=\"class in acm.gui\">JButtonGroup</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#setVerticalAlignment-int-\">setVerticalAlignment(int)</a></span> - Method in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Sets the vertical alignment for the table.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#setVgap-int-\">setVgap(int)</a></span> - Method in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Sets the vertical gap between components.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#setVisible-boolean-\">setVisible(boolean)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Sets whether this object is visible.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Vertex.html#setVisited--\">setVisited()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a></dt>\n<dd>\n<div class=\"block\">Sets the value of the internal 'previous' vertex marker to true for this vertex.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Vertex.html#setVisited-boolean-\">setVisited(boolean)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a></dt>\n<dd>\n<div class=\"block\">Sets the value of the internal 'previous' vertex marker for this vertex.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#setVolume-double-\">setVolume(double)</a></span> - Method in class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Sets the overall volume setting for the sound, which is a number\n between 0 (silent) and 1 (maximum volume).</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#setWall-java.awt.Point-int-\">setWall(Point, int)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#setWall-int-int-int-\">setWall(int, int, int)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Edge.html#setWeight-double-\">setWeight(double)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\">Edge</a></dt>\n<dd>\n<div class=\"block\">Modifies this edge's weight to be the given value.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#setWidth-double-\">setWidth(double)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Sets the width of this program without changing its height.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#setWindowSize-double-double-\">setWindowSize(double, double)</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Sets this program's window to be the given size in pixels.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgramInterface.html#setWindowSize-double-double-\">setWindowSize(double, double)</a></span> - Method in interface acm.program.<a href=\"acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#setWindowSize-double-double-\">setWindowSize(double, double)</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#setWorkingDir-java.lang.String-\">setWorkingDir(String)</a></span> - Static method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Karel.html#setWorld-stanford.karel.KarelWorld-\">setWorld(KarelWorld)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelInterface.html#setWorld-stanford.karel.KarelWorld-\">setWorld(KarelWorld)</a></span> - Method in interface stanford.karel.<a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.html#setWorld-stanford.karel.KarelWorld-\">setWorld(KarelWorld)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessKarel.html#setWorldFile-java.lang.String-\">setWorldFile(String)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/HeadlessKarel.html\" title=\"class in stanford.karel\">HeadlessKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#setX-double-\">setX(double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Sets the leftmost x-coordinate of this object to the given x value.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#setX-double-\">setX(double)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Sets the x location of the top-left corner of this program.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#setY-double-\">setY(double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Sets the topmost y-coordinate of this object to the given y value.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#setY-double-\">setY(double)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Sets the y location of the top-left corner of this program.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#SHIFT\">SHIFT</a></span> - Static variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>\n<div class=\"block\">Constant indicating that an accelerator key requires the SHIFT modifier.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#shiftPreferredSize-javax.swing.JComponent-int-int-\">shiftPreferredSize(JComponent, int, int)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.html#showDialog-java.awt.Component-\">showDialog(Component)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></dt>\n<dd>\n<div class=\"block\">Show font selection dialog.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#showDiffDialog--\">showDiffDialog()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Pops up a dialog box to compare the contents of this canvas to an expected image file.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#showDiffDialog-java.io.File-\">showDiffDialog(File)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Pops up a dialog box to compare the contents of this canvas to an expected image file.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#showDiffDialog-java.lang.String-\">showDiffDialog(String)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Pops up a dialog box to compare the contents of this canvas to an expected image file.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#showErrorMessage-java.lang.String-\">showErrorMessage(String)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#showErrorMessage-java.lang.String-\">showErrorMessage(String)</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Displays the error message in the standard output model.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#showErrorMessage-java.lang.String-\">showErrorMessage(String)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Displays the error message in the standard output model.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#showSaveDialog--\">showSaveDialog()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Pops up a dialog box to save the contents of this canvas to a file.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#showSaveDialog-java.io.File-\">showSaveDialog(File)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Pops up a dialog box to save the contents of this canvas to a file.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#showSaveDialog-java.lang.String-\">showSaveDialog(String)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Pops up a dialog box to save the contents of this canvas to a file.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#shrinkFont-javax.swing.JComponent-\">shrinkFont(JComponent)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#shrinkFont-javax.swing.JComponent-int-\">shrinkFont(JComponent, int)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.html#SIMPLE\">SIMPLE</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#SIMPLE\">SIMPLE</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#SIMPLE_FRACTION\">SIMPLE_FRACTION</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/net/SimpleClient.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">SimpleClient</span></a> - Class in <a href=\"stanford/cs106/net/package-summary.html\">stanford.cs106.net</a></dt>\n<dd>\n<div class=\"block\">This class implements a basic synchronous HTTP client.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/SimpleClient.html#SimpleClient-java.lang.String-\">SimpleClient(String)</a></span> - Constructor for class stanford.cs106.net.<a href=\"stanford/cs106/net/SimpleClient.html\" title=\"class in stanford.cs106.net\">SimpleClient</a></dt>\n<dd>\n<div class=\"block\">Initialiazes a new client to connect to the given HTTP server/host.</div>\n</dd>\n<dt><a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\"><span class=\"typeNameLink\">SimpleScanner</span></a> - Class in <a href=\"acm/io/package-summary.html\">acm.io</a></dt>\n<dd>\n<div class=\"block\">A simple text scanner which can parse primitive types and strings \n using regular expressions.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#SimpleScanner-java.io.File-\">SimpleScanner(File)</a></span> - Constructor for class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Constructs a new Scanner that produces values scanned from the specified \n        file.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#SimpleScanner-java.io.InputStream-\">SimpleScanner(InputStream)</a></span> - Constructor for class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Constructs a new Scanner that produces values scanned from the specified \n     input stream.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#SimpleScanner-java.io.Reader-\">SimpleScanner(Reader)</a></span> - Constructor for class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Constructs a new Scanner that produces values scanned from the specified\n     source.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#SimpleScanner-java.lang.String-\">SimpleScanner(String)</a></span> - Constructor for class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Constructs a new Scanner that produces values scanned from the specified\n     string.</div>\n</dd>\n<dt><a href=\"stanford/cs106/net/SimpleServer.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">SimpleServer</span></a> - Class in <a href=\"stanford/cs106/net/package-summary.html\">stanford.cs106.net</a></dt>\n<dd>\n<div class=\"block\">This class implements a simple synchronous HTTP server that can listen on a\n given port and respond to requests made by clients.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/SimpleServer.html#SimpleServer-int-\">SimpleServer(int)</a></span> - Constructor for class stanford.cs106.net.<a href=\"stanford/cs106/net/SimpleServer.html\" title=\"class in stanford.cs106.net\">SimpleServer</a></dt>\n<dd>\n<div class=\"block\">Constructs a new server that will listen on the given port.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/SimpleServer.html#SimpleServer-stanford.cs106.net.SimpleServerListener-\">SimpleServer(SimpleServerListener)</a></span> - Constructor for class stanford.cs106.net.<a href=\"stanford/cs106/net/SimpleServer.html\" title=\"class in stanford.cs106.net\">SimpleServer</a></dt>\n<dd>\n<div class=\"block\">Constructs a new server that will listen on a default port, with the given\n listener to be notified as each request comes in.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/SimpleServer.html#SimpleServer-stanford.cs106.net.SimpleServerListener-int-\">SimpleServer(SimpleServerListener, int)</a></span> - Constructor for class stanford.cs106.net.<a href=\"stanford/cs106/net/SimpleServer.html\" title=\"class in stanford.cs106.net\">SimpleServer</a></dt>\n<dd>\n<div class=\"block\">Constructs a new server that will listen on the given port, with the given\n listener to be notified as each request comes in.</div>\n</dd>\n<dt><a href=\"stanford/cs106/net/SimpleServer.SimpleServerException.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">SimpleServer.SimpleServerException</span></a> - Exception in <a href=\"stanford/cs106/net/package-summary.html\">stanford.cs106.net</a></dt>\n<dd>\n<div class=\"block\">An exception type that represents server-related runtime errors.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/SimpleServer.SimpleServerException.html#SimpleServerException-java.lang.String-\">SimpleServerException(String)</a></span> - Constructor for exception stanford.cs106.net.<a href=\"stanford/cs106/net/SimpleServer.SimpleServerException.html\" title=\"class in stanford.cs106.net\">SimpleServer.SimpleServerException</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/SimpleServer.SimpleServerException.html#SimpleServerException-java.lang.Throwable-\">SimpleServerException(Throwable)</a></span> - Constructor for exception stanford.cs106.net.<a href=\"stanford/cs106/net/SimpleServer.SimpleServerException.html\" title=\"class in stanford.cs106.net\">SimpleServer.SimpleServerException</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/net/SimpleServerListener.html\" title=\"interface in stanford.cs106.net\"><span class=\"typeNameLink\">SimpleServerListener</span></a> - Interface in <a href=\"stanford/cs106/net/package-summary.html\">stanford.cs106.net</a></dt>\n<dd>\n<div class=\"block\">A listener that can respond to requests made to a server.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GMath.html#sinDegrees-double-\">sinDegrees(double)</a></span> - Static method in class acm.graphics.<a href=\"acm/graphics/GMath.html\" title=\"class in acm.graphics\">GMath</a></dt>\n<dd>\n<div class=\"block\">Returns the trigonometric sine of its argument where <code>angle</code>\n is expressed in degrees.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLineGroup.html#size--\">size()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLineGroup.html\" title=\"class in acm.graphics\">GLineGroup</a></dt>\n<dd>\n<div class=\"block\">Returns the number of points that have been added to the line group.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/AbstractMultimap.html#size--\">size()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractMultimap.html\" title=\"class in stanford.cs106.collections\">AbstractMultimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/AbstractTable.html#size--\">size()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\">AbstractTable</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Grid.html#size--\">size()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Grid.html\" title=\"class in stanford.cs106.collections\">Grid</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Lexicon.html#size--\">size()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Lexicon.html\" title=\"class in stanford.cs106.collections\">Lexicon</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Multimap.html#size--\">size()</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\">Multimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Table.html#size--\">size()</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\">Table</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#skip-java.util.regex.Pattern-\">skip(Pattern)</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Skips input that matches the specified pattern, ignoring delimiters.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#skip-java.lang.String-\">skip(String)</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Skips input that matches a pattern constructed from the specified string.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/ReaderInputStream.html#skip-long-\">skip(long)</a></span> - Method in class stanford.cs106.io.<a href=\"stanford/cs106/io/ReaderInputStream.html\" title=\"class in stanford.cs106.io\">ReaderInputStream</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#sortChars-java.lang.String-\">sortChars(String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">SoundClip</span></a> - Class in <a href=\"acm/util/package-summary.html\">acm.util</a></dt>\n<dd>\n<div class=\"block\">This class represents a sound, which can be created from a URL, sound file,\n resource stream, or digital samples.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#SoundClip--\">SoundClip()</a></span> - Constructor for class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Creates an empty single-channel sound to which samples can be added.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#SoundClip-int-\">SoundClip(int)</a></span> - Constructor for class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Creates an empty sound with the specified number of channels, which\n must be 1 for mono and 2 for stereo.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#SoundClip-java.lang.String-\">SoundClip(String)</a></span> - Constructor for class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Creates a new sound by reading the data from the specified file.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#SoundClip-java.io.File-\">SoundClip(File)</a></span> - Constructor for class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Creates a new sound by reading the data from the specified file.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#SoundClip-java.net.URL-\">SoundClip(URL)</a></span> - Constructor for class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Creates a new sound by reading the data from the specified URL.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#SoundClip-java.io.InputStream-\">SoundClip(InputStream)</a></span> - Constructor for class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Creates a new sound by reading the data from the specified input stream.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#SoundClip-int:A-\">SoundClip(int[])</a></span> - Constructor for class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Creates a new mono sound from the sample array.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#SoundClip-int:A-int:A-\">SoundClip(int[], int[])</a></span> - Constructor for class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Creates a new stereo sound from the two sample arrays.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramInterface.html#SOUTH\">SOUTH</a></span> - Static variable in interface acm.program.<a href=\"acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></dt>\n<dd>\n<div class=\"block\">Constant specifying the south edge of the container</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.html#SOUTH\">SOUTH</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#SOUTH\">SOUTH</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#SOUTHEAST\">SOUTHEAST</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#SOUTHWEST\">SOUTHWEST</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramStartupFlags.html#SPL_AUTOGRADER_MODE\">SPL_AUTOGRADER_MODE</a></span> - Static variable in interface acm.program.<a href=\"acm/program/ProgramStartupFlags.html\" title=\"interface in acm.program\">ProgramStartupFlags</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramStartupFlags.html#SPL_CONSOLE_ECHO\">SPL_CONSOLE_ECHO</a></span> - Static variable in interface acm.program.<a href=\"acm/program/ProgramStartupFlags.html\" title=\"interface in acm.program\">ProgramStartupFlags</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramStartupFlags.html#SPL_CONSOLE_EXIT_ON_CLOSE\">SPL_CONSOLE_EXIT_ON_CLOSE</a></span> - Static variable in interface acm.program.<a href=\"acm/program/ProgramStartupFlags.html\" title=\"interface in acm.program\">ProgramStartupFlags</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramStartupFlags.html#SPL_CONSOLE_FONTSIZE\">SPL_CONSOLE_FONTSIZE</a></span> - Static variable in interface acm.program.<a href=\"acm/program/ProgramStartupFlags.html\" title=\"interface in acm.program\">ProgramStartupFlags</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramStartupFlags.html#SPL_CONSOLE_HEIGHT\">SPL_CONSOLE_HEIGHT</a></span> - Static variable in interface acm.program.<a href=\"acm/program/ProgramStartupFlags.html\" title=\"interface in acm.program\">ProgramStartupFlags</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramStartupFlags.html#SPL_CONSOLE_LOCATION_SAVED\">SPL_CONSOLE_LOCATION_SAVED</a></span> - Static variable in interface acm.program.<a href=\"acm/program/ProgramStartupFlags.html\" title=\"interface in acm.program\">ProgramStartupFlags</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramStartupFlags.html#SPL_CONSOLE_WIDTH\">SPL_CONSOLE_WIDTH</a></span> - Static variable in interface acm.program.<a href=\"acm/program/ProgramStartupFlags.html\" title=\"interface in acm.program\">ProgramStartupFlags</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramStartupFlags.html#SPL_CONSOLE_X\">SPL_CONSOLE_X</a></span> - Static variable in interface acm.program.<a href=\"acm/program/ProgramStartupFlags.html\" title=\"interface in acm.program\">ProgramStartupFlags</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramStartupFlags.html#SPL_CONSOLE_Y\">SPL_CONSOLE_Y</a></span> - Static variable in interface acm.program.<a href=\"acm/program/ProgramStartupFlags.html\" title=\"interface in acm.program\">ProgramStartupFlags</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/audio/SplClip.html\" title=\"class in stanford.cs106.audio\"><span class=\"typeNameLink\">SplClip</span></a> - Class in <a href=\"stanford/cs106/audio/package-summary.html\">stanford.cs106.audio</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/SplClip.html#SplClip-java.lang.String-\">SplClip(String)</a></span> - Constructor for class stanford.cs106.audio.<a href=\"stanford/cs106/audio/SplClip.html\" title=\"class in stanford.cs106.audio\">SplClip</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/ExceptionUtils.html#stackTraceToString--\">stackTraceToString()</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/ExceptionUtils.html\" title=\"class in stanford.cs106.util\">ExceptionUtils</a></dt>\n<dd>\n<div class=\"block\">The current stack trace as a multi-line String.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/ExceptionUtils.html#stackTraceToString-int-\">stackTraceToString(int)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/ExceptionUtils.html\" title=\"class in stanford.cs106.util\">ExceptionUtils</a></dt>\n<dd>\n<div class=\"block\">The current stack trace as a multi-line String.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/ExceptionUtils.html#stackTraceToString-java.lang.Throwable-\">stackTraceToString(Throwable)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/ExceptionUtils.html\" title=\"class in stanford.cs106.util\">ExceptionUtils</a></dt>\n<dd>\n<div class=\"block\">The stack trace of the given exception as a multi-line String.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/ExceptionUtils.html#stackTraceToString-java.lang.Throwable-int-\">stackTraceToString(Throwable, int)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/ExceptionUtils.html\" title=\"class in stanford.cs106.util\">ExceptionUtils</a></dt>\n<dd>\n<div class=\"block\">The stack trace of the given exception as a multi-line String.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#STANDARD_FRAME_RATE\">STANDARD_FRAME_RATE</a></span> - Static variable in class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Specifies the standard frame rate in a sampled sound.</div>\n</dd>\n<dt><a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\"><span class=\"typeNameLink\">StandardConsoleModel</span></a> - Class in <a href=\"acm/io/package-summary.html\">acm.io</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/StandardConsoleModel.html#StandardConsoleModel--\">StandardConsoleModel()</a></span> - Constructor for class acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/util/Stanford.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Stanford</span></a> - Class in <a href=\"stanford/cs106/util/package-summary.html\">stanford.cs106.util</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/audio/package-summary.html\">stanford.cs106.audio</a> - package stanford.cs106.audio</dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/collections/package-summary.html\">stanford.cs106.collections</a> - package stanford.cs106.collections</dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/gui/package-summary.html\">stanford.cs106.gui</a> - package stanford.cs106.gui</dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/io/package-summary.html\">stanford.cs106.io</a> - package stanford.cs106.io</dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/junit/package-summary.html\">stanford.cs106.junit</a> - package stanford.cs106.junit</dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/net/package-summary.html\">stanford.cs106.net</a> - package stanford.cs106.net</dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/reflect/package-summary.html\">stanford.cs106.reflect</a> - package stanford.cs106.reflect</dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/util/package-summary.html\">stanford.cs106.util</a> - package stanford.cs106.util</dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/karel/package-summary.html\">stanford.karel</a> - package stanford.karel</dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#start--\">start()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Starts a <code>GraphicsProgram</code> containing this object.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#start-java.lang.String:A-\">start(String[])</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Starts a <code>GraphicsProgram</code> containing this object, passing\n it the specified arguments.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#start--\">start()</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#start-java.lang.String:A-\">start(String[])</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Starts the program using the specified argument list.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#start--\">start()</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#start-java.lang.String:A-\">start(String[])</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#start--\">start()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Starts the program when it is running in application mode.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#start-java.lang.String:A-\">start(String[])</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Starts the program using the specified argument list.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramInterface.html#start--\">start()</a></span> - Method in interface acm.program.<a href=\"acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramInterface.html#start-java.lang.String:A-\">start(String[])</a></span> - Method in interface acm.program.<a href=\"acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Edge.html#start--\">start()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\">Edge</a></dt>\n<dd>\n<div class=\"block\">Returns the starting vertex of this edge.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/OutputCapturer.html#start--\">start()</a></span> - Static method in class stanford.cs106.io.<a href=\"stanford/cs106/io/OutputCapturer.html\" title=\"class in stanford.cs106.io\">OutputCapturer</a></dt>\n<dd>\n<div class=\"block\">Begins capturing output with no limit as to its length.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/OutputCapturer.html#start-boolean-\">start(boolean)</a></span> - Static method in class stanford.cs106.io.<a href=\"stanford/cs106/io/OutputCapturer.html\" title=\"class in stanford.cs106.io\">OutputCapturer</a></dt>\n<dd>\n<div class=\"block\">Begins capturing output.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/BackEndServer.html#start--\">start()</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/BackEndServer.html\" title=\"class in stanford.cs106.net\">BackEndServer</a></dt>\n<dd>\n<div class=\"block\">Method: Start\n -------------\n This method starts a server on the given port.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/NetworkManager.html#start--\">start()</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/NetworkManager.html\" title=\"class in stanford.cs106.net\">NetworkManager</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/SimpleServer.html#start--\">start()</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/SimpleServer.html\" title=\"class in stanford.cs106.net\">SimpleServer</a></dt>\n<dd>\n<div class=\"block\">Starts a server on the given port.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessKarel.html#start--\">start()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/HeadlessKarel.html\" title=\"class in stanford.karel\">HeadlessKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Karel.html#start-java.lang.String:A-\">start(String[])</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></dt>\n<dd>\n<div class=\"block\">Starts a <code>KarelProgram</code> containing this Karel instance,\n passing it the specified arguments.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#startAnimation--\">startAnimation()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Sets the program into animated mode.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#startGraphicsProgram-acm.graphics.GObject-java.lang.String:A-\">startGraphicsProgram(GObject, String[])</a></span> - Static method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Creates a <code>GraphicsProgram</code> containing the specified\n <code>GObject</code> and then starts it.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#startHook--\">startHook()</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Performs class-specific initialization for the program just before\n it starts.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#startHook--\">startHook()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Performs class-specific initialization for the program just before\n it starts.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#startRun--\">startRun()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Initializes and runs the run method.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.html#startRun--\">startRun()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelControlPanel.html#startWorldEdit--\">startWorldEdit()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelControlPanel.html\" title=\"class in stanford.karel\">KarelControlPanel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#stateChanged-javax.swing.event.ChangeEvent-\">stateChanged(ChangeEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Required method of ChangeListener interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelControlPanel.html#stateChanged-javax.swing.event.ChangeEvent-\">stateChanged(ChangeEvent)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelControlPanel.html\" title=\"class in stanford.karel\">KarelControlPanel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.html#StateEvent\">StateEvent</a></span> - Variable in class stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/SplClip.html#stateUpdated-javazoom.jlgui.basicplayer.BasicPlayerEvent-\">stateUpdated(BasicPlayerEvent)</a></span> - Method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/SplClip.html\" title=\"class in stanford.cs106.audio\">SplClip</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#staticMethodInvoke-java.lang.String-java.lang.String-java.lang.Object...-\">staticMethodInvoke(String, String, Object...)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#staticMethodInvoke-java.lang.Class-java.lang.String-java.lang.Object...-\">staticMethodInvoke(Class&lt;?&gt;, String, Object...)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/audio/StdAudio.html\" title=\"class in stanford.cs106.audio\"><span class=\"typeNameLink\">StdAudio</span></a> - Class in <a href=\"stanford/cs106/audio/package-summary.html\">stanford.cs106.audio</a></dt>\n<dd>\n<div class=\"block\"><i>Standard audio</i>.</div>\n</dd>\n<dt><a href=\"stanford/cs106/audio/StdAudio.AudioEvent.html\" title=\"class in stanford.cs106.audio\"><span class=\"typeNameLink\">StdAudio.AudioEvent</span></a> - Class in <a href=\"stanford/cs106/audio/package-summary.html\">stanford.cs106.audio</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/audio/StdAudio.AudioEvent.Type.html\" title=\"enum in stanford.cs106.audio\"><span class=\"typeNameLink\">StdAudio.AudioEvent.Type</span></a> - Enum in <a href=\"stanford/cs106/audio/package-summary.html\">stanford.cs106.audio</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/audio/StdAudio.AudioEventListener.html\" title=\"interface in stanford.cs106.audio\"><span class=\"typeNameLink\">StdAudio.AudioEventListener</span></a> - Interface in <a href=\"stanford/cs106/audio/package-summary.html\">stanford.cs106.audio</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#STEREO\">STEREO</a></span> - Static variable in class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Number of channels in a stereo sound.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#stop--\">stop()</a></span> - Method in class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Stops the playback of the sound.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/SplClip.html#stop--\">stop()</a></span> - Method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/SplClip.html\" title=\"class in stanford.cs106.audio\">SplClip</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/OutputCapturer.html#stop--\">stop()</a></span> - Static method in class stanford.cs106.io.<a href=\"stanford/cs106/io/OutputCapturer.html\" title=\"class in stanford.cs106.io\">OutputCapturer</a></dt>\n<dd>\n<div class=\"block\">Stops capturing output and returns the string of captured output.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/BackEndServer.html#stop--\">stop()</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/BackEndServer.html\" title=\"class in stanford.cs106.net\">BackEndServer</a></dt>\n<dd>\n<div class=\"block\">...</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/NetworkManager.html#stop--\">stop()</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/NetworkManager.html\" title=\"class in stanford.cs106.net\">NetworkManager</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/SimpleServer.html#stop--\">stop()</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/SimpleServer.html\" title=\"class in stanford.cs106.net\">SimpleServer</a></dt>\n<dd>\n<div class=\"block\">Stops the server so that it will no longer listen to HTTP requests.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#stopAnimation--\">stopAnimation()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Sets the program into non-animated (default) mode.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/IOUtils.html#stopRedirectingInput--\">stopRedirectingInput()</a></span> - Static method in class stanford.cs106.io.<a href=\"stanford/cs106/io/IOUtils.html\" title=\"class in stanford.cs106.io\">IOUtils</a></dt>\n<dd>\n<div class=\"block\">Sets System.in back to its original state.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/IOUtils.html#stopRedirectingOutput--\">stopRedirectingOutput()</a></span> - Static method in class stanford.cs106.io.<a href=\"stanford/cs106/io/IOUtils.html\" title=\"class in stanford.cs106.io\">IOUtils</a></dt>\n<dd>\n<div class=\"block\">Sets System.out/err back to their original state.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#stringIsBoolean-java.lang.String-\">stringIsBoolean(String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#stringIsDouble-java.lang.String-\">stringIsDouble(String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#stringIsInteger-java.lang.String-\">stringIsInteger(String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#stringIsInteger-java.lang.String-int-\">stringIsInteger(String, int)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#stringIsReal-java.lang.String-\">stringIsReal(String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">StringUtils</span></a> - Class in <a href=\"stanford/cs106/util/package-summary.html\">stanford.cs106.util</a></dt>\n<dd>\n<div class=\"block\">This class contains utility code related to Strings and text processing.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.html#stripPackages-java.lang.Class-\">stripPackages(Class&lt;?&gt;)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.html#stripPackages-java.lang.String-\">stripPackages(String)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">SuperKarel</span></a> - Class in <a href=\"stanford/karel/package-summary.html\">stanford.karel</a></dt>\n<dd>\n<div class=\"block\">Extended Karel class .</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/SuperKarel.html#SuperKarel--\">SuperKarel()</a></span> - Constructor for class stanford.karel.<a href=\"stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\">SuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/SplClip.html#supportsExtension-java.lang.String-\">supportsExtension(String)</a></span> - Static method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/SplClip.html\" title=\"class in stanford.cs106.audio\">SplClip</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/SplClip.html#supportsFile-java.lang.String-\">supportsFile(String)</a></span> - Static method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/SplClip.html\" title=\"class in stanford.cs106.audio\">SplClip</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#SYSTEM_CONSOLE\">SYSTEM_CONSOLE</a></span> - Static variable in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"acm/io/SystemConsoleModel.html\" title=\"class in acm.io\"><span class=\"typeNameLink\">SystemConsoleModel</span></a> - Class in <a href=\"acm/io/package-summary.html\">acm.io</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SystemConsoleModel.html#SystemConsoleModel--\">SystemConsoleModel()</a></span> - Constructor for class acm.io.<a href=\"acm/io/SystemConsoleModel.html\" title=\"class in acm.io\">SystemConsoleModel</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/util/SystemProperties.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">SystemProperties</span></a> - Class in <a href=\"stanford/cs106/util/package-summary.html\">stanford.cs106.util</a></dt>\n<dd>&nbsp;</dd>\n</dl>\n<a name=\"I:T\">\n<!--   -->\n</a>\n<h2 class=\"title\">T</h2>\n<dl>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#TAB_STRING\">TAB_STRING</a></span> - Static variable in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\"><span class=\"typeNameLink\">Table</span></a>&lt;<a href=\"stanford/cs106/collections/Table.html\" title=\"type parameter in Table\">R</a>,<a href=\"stanford/cs106/collections/Table.html\" title=\"type parameter in Table\">C</a>,<a href=\"stanford/cs106/collections/Table.html\" title=\"type parameter in Table\">V</a>&gt; - Interface in <a href=\"stanford/cs106/collections/package-summary.html\">stanford.cs106.collections</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">TableLayout</span></a> - Class in <a href=\"acm/gui/package-summary.html\">acm.gui</a></dt>\n<dd>\n<div class=\"block\">This class implements a new <code>LayoutManager</code> that arranges\n components into a two-dimensional grid.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#TableLayout--\">TableLayout()</a></span> - Constructor for class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Creates a new <code>TableLayout</code> object with no limits\n on the number of rows and columns.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#TableLayout-int-int-\">TableLayout(int, int)</a></span> - Constructor for class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Creates a new <code>TableLayout</code> object with the specified\n number of rows and columns.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#TableLayout-int-int-int-int-\">TableLayout(int, int, int, int)</a></span> - Constructor for class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Creates a new <code>TableLayout</code> object with the specified\n row count, column count, alignment, horizontal gap, and vertical gap.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GMath.html#tanDegrees-double-\">tanDegrees(double)</a></span> - Static method in class acm.graphics.<a href=\"acm/graphics/GMath.html\" title=\"class in acm.graphics\">GMath</a></dt>\n<dd>\n<div class=\"block\">Returns the trigonometric tangent of its argument where\n <code>angle</code> is expressed in degrees.</div>\n</dd>\n<dt><a href=\"stanford/cs106/junit/TestCategory.html\" title=\"annotation in stanford.cs106.junit\"><span class=\"typeNameLink\">TestCategory</span></a> - Annotation Type in <a href=\"stanford/cs106/junit/package-summary.html\">stanford.cs106.junit</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.TextFieldFocusHandlerForTextSelection.html#TextFieldFocusHandlerForTextSelection-javax.swing.text.JTextComponent-\">TextFieldFocusHandlerForTextSelection(JTextComponent)</a></span> - Constructor for class acm.gui.<a href=\"acm/gui/JFontChooser.TextFieldFocusHandlerForTextSelection.html\" title=\"class in acm.gui\">JFontChooser.TextFieldFocusHandlerForTextSelection</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.TextFieldKeyHandlerForListSelectionUpDown.html#TextFieldKeyHandlerForListSelectionUpDown-javax.swing.JList-\">TextFieldKeyHandlerForListSelectionUpDown(JList)</a></span> - Constructor for class acm.gui.<a href=\"acm/gui/JFontChooser.TextFieldKeyHandlerForListSelectionUpDown.html\" title=\"class in acm.gui\">JFontChooser.TextFieldKeyHandlerForListSelectionUpDown</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#textValueChanged-java.awt.event.TextEvent-\">textValueChanged(TextEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Required method of TextListener interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#toAsciiDump-java.lang.String-\">toAsciiDump(String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GMath.html#toDegrees-double-\">toDegrees(double)</a></span> - Static method in class acm.graphics.<a href=\"acm/graphics/GMath.html\" title=\"class in acm.graphics\">GMath</a></dt>\n<dd>\n<div class=\"block\">Converts an angle from radians to degrees.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/Request.html#toGetRequest--\">toGetRequest()</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\">Request</a></dt>\n<dd>\n<div class=\"block\">Converts this request into a URL string that could be used for an\n HTTP GET request, such as\n \"http://server:port/verb?param1=value1&param2=value2...&paramN=valueN\".</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#toImage--\">toImage()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Returns the pixel contents of this canvas as a BufferedImage.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#toImage-int-int-\">toImage(int, int)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Returns the pixel contents of this canvas as a BufferedImage of the given size.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvasInterface.html#toImage--\">toImage()</a></span> - Method in interface acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#toImage--\">toImage()</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Returns an image representation of the current contents of the screen.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#toImage--\">toImage()</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#toImage--\">toImage()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>\n<div class=\"block\">Converts this Karel world into an image that is returned.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/IOUtils.html#toInputStream-java.lang.String-\">toInputStream(String)</a></span> - Static method in class stanford.cs106.io.<a href=\"stanford/cs106/io/IOUtils.html\" title=\"class in stanford.cs106.io\">IOUtils</a></dt>\n<dd>\n<div class=\"block\">Creates and returns an input stream to read the characters of the given\n string as bytes, one character at a time.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#TOKEN_TRACE\">TOKEN_TRACE</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#TOP\">TOP</a></span> - Static variable in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Align table vertically at the top of its container</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GPoint.html#toPoint--\">toPoint()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a></dt>\n<dd>\n<div class=\"block\">Converts this <code>GPoint</code> to the nearest integer-based\n <code>Point</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#toPrintableChar-char-\">toPrintableChar(char)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GMath.html#toRadians-double-\">toRadians(double)</a></span> - Static method in class acm.graphics.<a href=\"acm/graphics/GMath.html\" title=\"class in acm.graphics\">GMath</a></dt>\n<dd>\n<div class=\"block\">Converts an angle from degrees to radians.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GRectangle.html#toRectangle--\">toRectangle()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></dt>\n<dd>\n<div class=\"block\">Converts this <code>GRectangle</code> to the nearest integer-based <code>Rectangle</code>.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#toString--\">toString()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Overrides the <code>toString</code> method in <code>Object</code> to produce\n more readable output.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GPoint.html#toString--\">toString()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a></dt>\n<dd>\n<div class=\"block\">Converts this <code>GPoint</code> to its string representation.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GRectangle.html#toString--\">toString()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></dt>\n<dd>\n<div class=\"block\">Converts this <code>GRectangle</code> to its string representation.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#toString--\">toString()</a></span> - Method in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Creates a printable representation of the layout.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#toString--\">toString()</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Returns the string representation of this Scanner.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/util/SoundClip.html#toString--\">toString()</a></span> - Method in class acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\">SoundClip</a></dt>\n<dd>\n<div class=\"block\">Converts a sound to a string.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/Note.html#toString--\">toString()</a></span> - Method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\">Note</a></dt>\n<dd>\n<div class=\"block\">Returns a string representation of this note.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/StdAudio.AudioEvent.html#toString--\">toString()</a></span> - Method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/StdAudio.AudioEvent.html\" title=\"class in stanford.cs106.audio\">StdAudio.AudioEvent</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/AbstractMultimap.html#toString--\">toString()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractMultimap.html\" title=\"class in stanford.cs106.collections\">AbstractMultimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/AbstractTable.html#toString--\">toString()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\">AbstractTable</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#toString--\">toString()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Returns a string representation of this graph and its vertices and edges, such as\n \"{V={A, B, C}, E={(A, B), (A, C)}}\".</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Edge.html#toString--\">toString()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\">Edge</a></dt>\n<dd>\n<div class=\"block\">Returns a string representation of the information about this edge.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#toString--\">toString()</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Returns a string representation of this graph and its vertices and edges, such as\n \"{V={A, B, C}, E={(A, B), (A, C)}}\".</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Grid.html#toString--\">toString()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Grid.html\" title=\"class in stanford.cs106.collections\">Grid</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Lexicon.html#toString--\">toString()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Lexicon.html\" title=\"class in stanford.cs106.collections\">Lexicon</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Vertex.html#toString--\">toString()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a></dt>\n<dd>\n<div class=\"block\">Returns a string representation of the information about this vertex.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/Request.html#toString--\">toString()</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\">Request</a></dt>\n<dd>\n<div class=\"block\">Returns a string representation of this request for debugging.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/SimpleClient.html#toString--\">toString()</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/SimpleClient.html\" title=\"class in stanford.cs106.net\">SimpleClient</a></dt>\n<dd>\n<div class=\"block\">Returns a string representation of this client.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/net/SimpleServer.html#toString--\">toString()</a></span> - Method in class stanford.cs106.net.<a href=\"stanford/cs106/net/SimpleServer.html\" title=\"class in stanford.cs106.net\">SimpleServer</a></dt>\n<dd>\n<div class=\"block\">Returns a string representation of this server.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#toString-java.awt.Point-\">toString(Point)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Event.html#toString--\">toString()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Event.html\" title=\"class in stanford.karel\">Event</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Grid.html#toString2D--\">toString2D()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Grid.html\" title=\"class in stanford.cs106.collections\">Grid</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Grid.html#toString2D-java.lang.String-java.lang.String-java.lang.String-java.lang.String-\">toString2D(String, String, String, String)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Grid.html\" title=\"class in stanford.cs106.collections\">Grid</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#toStringDetailed--\">toStringDetailed()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Returns a detailed multi-line string representation of this graph and its vertices, such as\n \"Graph{\n     vertices:\n         A -> neighbors: [B, C]\n         B -> neighbors: [A]\n         C -> neighbors: [A]\n     edges:\n         (A,B,weight=2)\n         (A,C)\n }\"</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#toStringDetailed--\">toStringDetailed()</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Returns a detailed multi-line string representation of this graph and its vertices, such as\n \"Graph{\n     vertices:\n         A -> neighbors: [B, C]\n         B -> neighbors: [A]\n         C -> neighbors: [A]\n     edges:\n         (A,B,weight=2)\n         (A,C)\n }\"</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ReflectionUtils.html#toStringViaReflection-java.lang.Object-\">toStringViaReflection(Object)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelControlPanel.html#trace--\">trace()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelControlPanel.html\" title=\"class in stanford.karel\">KarelControlPanel</a></dt>\n<dd>\n<div class=\"block\">This action is invoked when karel executes an instruction</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#trace--\">trace()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GLineGroup.html#translate-double-double-\">translate(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GLineGroup.html\" title=\"class in acm.graphics\">GLineGroup</a></dt>\n<dd>\n<div class=\"block\">Shifts every point in this line group by the given amounts.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GPoint.html#translate-double-double-\">translate(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GPoint.html\" title=\"class in acm.graphics\">GPoint</a></dt>\n<dd>\n<div class=\"block\">Adjusts the coordinates of a point by the specified <code>dx</code> and\n <code>dy</code> offsets.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GRectangle.html#translate-double-double-\">translate(double, double)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></dt>\n<dd>\n<div class=\"block\">Adjusts the coordinates of a rectangle by the specified <code>dx</code> and\n <code>dy</code> offsets.</div>\n</dd>\n<dt><a href=\"stanford/cs106/collections/TreeBasedTable.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">TreeBasedTable</span></a>&lt;<a href=\"stanford/cs106/collections/TreeBasedTable.html\" title=\"type parameter in TreeBasedTable\">R</a> extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;? super <a href=\"stanford/cs106/collections/TreeBasedTable.html\" title=\"type parameter in TreeBasedTable\">R</a>&gt;,<a href=\"stanford/cs106/collections/TreeBasedTable.html\" title=\"type parameter in TreeBasedTable\">C</a> extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;? super <a href=\"stanford/cs106/collections/TreeBasedTable.html\" title=\"type parameter in TreeBasedTable\">C</a>&gt;,<a href=\"stanford/cs106/collections/TreeBasedTable.html\" title=\"type parameter in TreeBasedTable\">V</a>&gt; - Class in <a href=\"stanford/cs106/collections/package-summary.html\">stanford.cs106.collections</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/TreeBasedTable.html#TreeBasedTable--\">TreeBasedTable()</a></span> - Constructor for class stanford.cs106.collections.<a href=\"stanford/cs106/collections/TreeBasedTable.html\" title=\"class in stanford.cs106.collections\">TreeBasedTable</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/collections/TreeMultimap.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">TreeMultimap</span></a>&lt;<a href=\"stanford/cs106/collections/TreeMultimap.html\" title=\"type parameter in TreeMultimap\">K</a> extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;<a href=\"stanford/cs106/collections/TreeMultimap.html\" title=\"type parameter in TreeMultimap\">K</a>&gt;,<a href=\"stanford/cs106/collections/TreeMultimap.html\" title=\"type parameter in TreeMultimap\">V</a>&gt; - Class in <a href=\"stanford/cs106/collections/package-summary.html\">stanford.cs106.collections</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/TreeMultimap.html#TreeMultimap--\">TreeMultimap()</a></span> - Constructor for class stanford.cs106.collections.<a href=\"stanford/cs106/collections/TreeMultimap.html\" title=\"class in stanford.cs106.collections\">TreeMultimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/TreeMultimap.html#TreeMultimap-boolean-\">TreeMultimap(boolean)</a></span> - Constructor for class stanford.cs106.collections.<a href=\"stanford/cs106/collections/TreeMultimap.html\" title=\"class in stanford.cs106.collections\">TreeMultimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#trimBlankLines-java.lang.String-\">trimBlankLines(String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>\n<div class=\"block\">Removes any blank lines (just \\n or spaces/tabs followed by \\n) from the\n start/end of s.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#trimEnd-java.lang.String-\">trimEnd(String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#trimEndsOfLines-java.lang.String-\">trimEndsOfLines(String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#trimLines-java.lang.String-\">trimLines(String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>\n<div class=\"block\">Trims out any leading/trailing whitespace from all lines of string s.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#trimR-java.lang.String-\">trimR(String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#truncate-java.lang.String-int-\">truncate(String, int)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>\n<div class=\"block\">Trims the given string to be at most the given number of characters in length.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#truncate-java.lang.String-int-java.lang.String-\">truncate(String, int, String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>\n<div class=\"block\">Trims the given string to be at most the given number of characters in length.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessSuperKarel.html#turnAround--\">turnAround()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\">HeadlessSuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/SuperKarel.html#turnAround--\">turnAround()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\">SuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/Karel.html#turnLeft--\">turnLeft()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelInterface.html#turnLeft--\">turnLeft()</a></span> - Method in interface stanford.karel.<a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessSuperKarel.html#turnRight--\">turnRight()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\">HeadlessSuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/SuperKarel.html#turnRight--\">turnRight()</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\">SuperKarel</a></dt>\n<dd>&nbsp;</dd>\n</dl>\n<a name=\"I:U\">\n<!--   -->\n</a>\n<h2 class=\"title\">U</h2>\n<dl>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#unindent-java.lang.String-\">unindent(String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>\n<div class=\"block\">Looks at all lines of the given string, figuring out how 'indented' each\n line is; then removes the longest common indentation prefix string that\n occurs in all lines.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GRectangle.html#union-acm.graphics.GRectangle-\">union(GRectangle)</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></dt>\n<dd>\n<div class=\"block\">Returns the smallest rectangle that contains both\n <code>r1</code> and <code>r2</code>.</div>\n</dd>\n<dt><a href=\"stanford/cs106/junit/UnitTestType.html\" title=\"enum in stanford.cs106.junit\"><span class=\"typeNameLink\">UnitTestType</span></a> - Enum in <a href=\"stanford/cs106/junit/package-summary.html\">stanford.cs106.junit</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#untabify-java.lang.String-\">untabify(String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>\n<div class=\"block\">Replaces tabs with a string of spaces of a default width.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#untabify-java.lang.String-int-\">untabify(String, int)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>\n<div class=\"block\">Replaces tabs with a string of spaces of the given width.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/XmlUtils.html#up-org.w3c.dom.Node-java.lang.String-\">up(Node, String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\">XmlUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramMenuBar.html#UP_ARROW\">UP_ARROW</a></span> - Variable in class acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelControlPanel.html#update-java.util.Observable-java.lang.Object-\">update(Observable, Object)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelControlPanel.html\" title=\"class in stanford.karel\">KarelControlPanel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#update-java.awt.Graphics-\">update(Graphics)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#updateContents-java.awt.Graphics-java.awt.Point-\">updateContents(Graphics, Point)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#updateCorner-int-int-\">updateCorner(int, int)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#updateCorner-java.awt.Point-\">updateCorner(Point)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#updateEditMode-boolean-\">updateEditMode(boolean)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GCanvas.html#updateEnabledList--\">updateEnabledList()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></dt>\n<dd>\n<div class=\"block\">Reconstructs the enabledList list in the correct order.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/graphics/GObject.html#updateEnabledList--\">updateEnabledList()</a></span> - Method in class acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></dt>\n<dd>\n<div class=\"block\">Tells the parent to update its list of enabled objects.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/IOConsole.html#updateMenuBar-acm.program.ProgramMenuBar-\">updateMenuBar(ProgramMenuBar)</a></span> - Method in class acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.html#updateSampleFont--\">updateSampleFont()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JFontChooser.html\" title=\"class in acm.gui\">JFontChooser</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#updateWalls-java.awt.Graphics-java.awt.Point-\">updateWalls(Graphics, Point)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#urlDecode-java.lang.String-\">urlDecode(String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#urlEncode-java.lang.String-\">urlEncode(String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#useDelimiter-java.util.regex.Pattern-\">useDelimiter(Pattern)</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Sets this scanner's delimiting pattern to the specified pattern.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#useDelimiter-java.lang.String-\">useDelimiter(String)</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Sets this scanner's delimiting pattern to a pattern constructed from the specified String.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#useLocale-java.util.Locale-\">useLocale(Locale)</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Sets this scanner's locale to the specified locale.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/io/SimpleScanner.html#useRadix-int-\">useRadix(int)</a></span> - Method in class acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\">SimpleScanner</a></dt>\n<dd>\n<div class=\"block\">Sets this scanner's default radix to the specified radix.</div>\n</dd>\n</dl>\n<a name=\"I:V\">\n<!--   -->\n</a>\n<h2 class=\"title\">V</h2>\n<dl>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/CommandLineProgram.html#validate--\">validate()</a></span> - Method in class acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></dt>\n<dd>\n<div class=\"block\">Forwards validate to the content pane.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#validate--\">validate()</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Forwards validate to the content pane.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/XmlUtils.html#validate-java.lang.String-java.lang.String-\">validate(String, String)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\">XmlUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JFontChooser.ListSelectionHandler.html#valueChanged-javax.swing.event.ListSelectionEvent-\">valueChanged(ListSelectionEvent)</a></span> - Method in class acm.gui.<a href=\"acm/gui/JFontChooser.ListSelectionHandler.html\" title=\"class in acm.gui\">JFontChooser.ListSelectionHandler</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#valueChanged-javax.swing.event.ListSelectionEvent-\">valueChanged(ListSelectionEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Required method of ListSelectionListener interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JPlaceholderTextField.html#valueIsDouble--\">valueIsDouble()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JPlaceholderTextField.html\" title=\"class in acm.gui\">JPlaceholderTextField</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JPlaceholderTextField.html#valueIsInt--\">valueIsInt()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JPlaceholderTextField.html\" title=\"class in acm.gui\">JPlaceholderTextField</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/JPlaceholderTextField.html#valueIsInteger--\">valueIsInteger()</a></span> - Method in class acm.gui.<a href=\"acm/gui/JPlaceholderTextField.html\" title=\"class in acm.gui\">JPlaceholderTextField</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/Accidental.html#valueOf-java.lang.String-\">valueOf(String)</a></span> - Static method in enum stanford.cs106.audio.<a href=\"stanford/cs106/audio/Accidental.html\" title=\"enum in stanford.cs106.audio\">Accidental</a></dt>\n<dd>\n<div class=\"block\">Returns the enum constant of this type with the specified name.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/Pitch.html#valueOf-java.lang.String-\">valueOf(String)</a></span> - Static method in enum stanford.cs106.audio.<a href=\"stanford/cs106/audio/Pitch.html\" title=\"enum in stanford.cs106.audio\">Pitch</a></dt>\n<dd>\n<div class=\"block\">Returns the enum constant of this type with the specified name.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/StdAudio.AudioEvent.Type.html#valueOf-java.lang.String-\">valueOf(String)</a></span> - Static method in enum stanford.cs106.audio.<a href=\"stanford/cs106/audio/StdAudio.AudioEvent.Type.html\" title=\"enum in stanford.cs106.audio\">StdAudio.AudioEvent.Type</a></dt>\n<dd>\n<div class=\"block\">Returns the enum constant of this type with the specified name.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/GraphColor.html#valueOf-java.lang.String-\">valueOf(String)</a></span> - Static method in enum stanford.cs106.collections.<a href=\"stanford/cs106/collections/GraphColor.html\" title=\"enum in stanford.cs106.collections\">GraphColor</a></dt>\n<dd>\n<div class=\"block\">Returns the enum constant of this type with the specified name.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Vertex.Event.html#valueOf-java.lang.String-\">valueOf(String)</a></span> - Static method in enum stanford.cs106.collections.<a href=\"stanford/cs106/collections/Vertex.Event.html\" title=\"enum in stanford.cs106.collections\">Vertex.Event</a></dt>\n<dd>\n<div class=\"block\">Returns the enum constant of this type with the specified name.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/UnitTestType.html#valueOf-java.lang.String-\">valueOf(String)</a></span> - Static method in enum stanford.cs106.junit.<a href=\"stanford/cs106/junit/UnitTestType.html\" title=\"enum in stanford.cs106.junit\">UnitTestType</a></dt>\n<dd>\n<div class=\"block\">Returns the enum constant of this type with the specified name.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/OperatingSystem.html#valueOf-java.lang.String-\">valueOf(String)</a></span> - Static method in enum stanford.cs106.util.<a href=\"stanford/cs106/util/OperatingSystem.html\" title=\"enum in stanford.cs106.util\">OperatingSystem</a></dt>\n<dd>\n<div class=\"block\">Returns the enum constant of this type with the specified name.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelDirection.html#valueOf-java.lang.String-\">valueOf(String)</a></span> - Static method in enum stanford.karel.<a href=\"stanford/karel/KarelDirection.html\" title=\"enum in stanford.karel\">KarelDirection</a></dt>\n<dd>\n<div class=\"block\">Returns the enum constant of this type with the specified name.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelDirection.html#valueOf-int-\">valueOf(int)</a></span> - Static method in enum stanford.karel.<a href=\"stanford/karel/KarelDirection.html\" title=\"enum in stanford.karel\">KarelDirection</a></dt>\n<dd>\n<div class=\"block\">Converts an int like KarelWorld.NORTH into a KarelDirection.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.State.html#valueOf-java.lang.String-\">valueOf(String)</a></span> - Static method in enum stanford.karel.<a href=\"stanford/karel/KarelProgram.State.html\" title=\"enum in stanford.karel\">KarelProgram.State</a></dt>\n<dd>\n<div class=\"block\">Returns the enum constant of this type with the specified name.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/Accidental.html#values--\">values()</a></span> - Static method in enum stanford.cs106.audio.<a href=\"stanford/cs106/audio/Accidental.html\" title=\"enum in stanford.cs106.audio\">Accidental</a></dt>\n<dd>\n<div class=\"block\">Returns an array containing the constants of this enum type, in\nthe order they are declared.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/Pitch.html#values--\">values()</a></span> - Static method in enum stanford.cs106.audio.<a href=\"stanford/cs106/audio/Pitch.html\" title=\"enum in stanford.cs106.audio\">Pitch</a></dt>\n<dd>\n<div class=\"block\">Returns an array containing the constants of this enum type, in\nthe order they are declared.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/StdAudio.AudioEvent.Type.html#values--\">values()</a></span> - Static method in enum stanford.cs106.audio.<a href=\"stanford/cs106/audio/StdAudio.AudioEvent.Type.html\" title=\"enum in stanford.cs106.audio\">StdAudio.AudioEvent.Type</a></dt>\n<dd>\n<div class=\"block\">Returns an array containing the constants of this enum type, in\nthe order they are declared.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/AbstractMultimap.html#values--\">values()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractMultimap.html\" title=\"class in stanford.cs106.collections\">AbstractMultimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/AbstractTable.html#values--\">values()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\">AbstractTable</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/GraphColor.html#values--\">values()</a></span> - Static method in enum stanford.cs106.collections.<a href=\"stanford/cs106/collections/GraphColor.html\" title=\"enum in stanford.cs106.collections\">GraphColor</a></dt>\n<dd>\n<div class=\"block\">Returns an array containing the constants of this enum type, in\nthe order they are declared.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Multimap.html#values--\">values()</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\">Multimap</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Table.html#values--\">values()</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\">Table</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Vertex.Event.html#values--\">values()</a></span> - Static method in enum stanford.cs106.collections.<a href=\"stanford/cs106/collections/Vertex.Event.html\" title=\"enum in stanford.cs106.collections\">Vertex.Event</a></dt>\n<dd>\n<div class=\"block\">Returns an array containing the constants of this enum type, in\nthe order they are declared.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/junit/UnitTestType.html#values--\">values()</a></span> - Static method in enum stanford.cs106.junit.<a href=\"stanford/cs106/junit/UnitTestType.html\" title=\"enum in stanford.cs106.junit\">UnitTestType</a></dt>\n<dd>\n<div class=\"block\">Returns an array containing the constants of this enum type, in\nthe order they are declared.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/OperatingSystem.html#values--\">values()</a></span> - Static method in enum stanford.cs106.util.<a href=\"stanford/cs106/util/OperatingSystem.html\" title=\"enum in stanford.cs106.util\">OperatingSystem</a></dt>\n<dd>\n<div class=\"block\">Returns an array containing the constants of this enum type, in\nthe order they are declared.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelDirection.html#values--\">values()</a></span> - Static method in enum stanford.karel.<a href=\"stanford/karel/KarelDirection.html\" title=\"enum in stanford.karel\">KarelDirection</a></dt>\n<dd>\n<div class=\"block\">Returns an array containing the constants of this enum type, in\nthe order they are declared.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.State.html#values--\">values()</a></span> - Static method in enum stanford.karel.<a href=\"stanford/karel/KarelProgram.State.html\" title=\"enum in stanford.karel\">KarelProgram.State</a></dt>\n<dd>\n<div class=\"block\">Returns an array containing the constants of this enum type, in\nthe order they are declared.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#vertex-java.lang.String-\">vertex(String)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#vertex-java.lang.String-\">vertex(String)</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Returns the structure of information about the vertex with the given name.</div>\n</dd>\n<dt><a href=\"stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Vertex</span></a>&lt;<a href=\"stanford/cs106/collections/Vertex.html\" title=\"type parameter in Vertex\">V</a>&gt; - Class in <a href=\"stanford/cs106/collections/package-summary.html\">stanford.cs106.collections</a></dt>\n<dd>\n<div class=\"block\">A Vertex object represents extra information associated with each vertex.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Vertex.html#Vertex-java.lang.String-\">Vertex(String)</a></span> - Constructor for class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a></dt>\n<dd>\n<div class=\"block\">Constructs information for the given vertex.</div>\n</dd>\n<dt><a href=\"stanford/cs106/collections/Vertex.Event.html\" title=\"enum in stanford.cs106.collections\"><span class=\"typeNameLink\">Vertex.Event</span></a> - Enum in <a href=\"stanford/cs106/collections/package-summary.html\">stanford.cs106.collections</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#vertexCount--\">vertexCount()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Returns the number of vertices in this graph.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#vertexCount--\">vertexCount()</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Returns the number of vertices in this graph.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#vertexes--\">vertexes()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Returns a collection of the vertices in this graph.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Graph.html#vertexes--\">vertexes()</a></span> - Method in interface stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a></dt>\n<dd>\n<div class=\"block\">Returns a collection of the vertices in this graph.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#vertexInfo-java.lang.String-\">vertexInfo(String)</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Returns the Vertex object associated with the given vertex.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/BasicGraph.html#vertexInfos--\">vertexInfos()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dt>\n<dd>\n<div class=\"block\">Returns a read-only view of all internal data about vertex information.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/gui/TableLayout.html#VERTICAL\">VERTICAL</a></span> - Static variable in class acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">TableLayout</a></dt>\n<dd>\n<div class=\"block\">Resize component in vertical direction only</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Vertex.html#visited--\">visited()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a></dt>\n<dd>\n<div class=\"block\">Returns the value of the internal 'visited' vertex marker for this vertex.</div>\n</dd>\n</dl>\n<a name=\"I:W\">\n<!--   -->\n</a>\n<h2 class=\"title\">W</h2>\n<dl>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgram.html#waitForClick--\">waitForClick()</a></span> - Method in class acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">GraphicsProgram</a></dt>\n<dd>\n<div class=\"block\">Waits for a mouse click in the window before proceeding.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/GraphicsProgramInterface.html#waitForClick--\">waitForClick()</a></span> - Method in interface acm.program.<a href=\"acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/HeadlessGraphicsProgram.html#waitForClick--\">waitForClick()</a></span> - Method in class acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\">HeadlessGraphicsProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/audio/SplClip.html#waitUntilDonePlaying--\">waitUntilDonePlaying()</a></span> - Method in class stanford.cs106.audio.<a href=\"stanford/cs106/audio/SplClip.html\" title=\"class in stanford.cs106.audio\">SplClip</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#WALL_FRACTION\">WALL_FRACTION</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#WALL_TOLERANCE\">WALL_TOLERANCE</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelControlPanel.html#wallAction-java.awt.Point-int-\">wallAction(Point, int)</a></span> - Method in class stanford.karel.<a href=\"stanford/karel/KarelControlPanel.html\" title=\"class in stanford.karel\">KarelControlPanel</a></dt>\n<dd>\n<div class=\"block\">This action is invoked when the mouse is clicked on a wall, which is the\n wall in the indicated direction from the Karel coordinates given by pt.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Edge.html#weight--\">weight()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\">Edge</a></dt>\n<dd>\n<div class=\"block\">Returns the weight of this edge.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/ProgramInterface.html#WEST\">WEST</a></span> - Static variable in interface acm.program.<a href=\"acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></dt>\n<dd>\n<div class=\"block\">Constant specifying the west edge of the container</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.html#WEST\">WEST</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelWorld.html#WEST\">WEST</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessSuperKarel.html#WHITE\">WHITE</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\">HeadlessSuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.html#WHITE\">WHITE</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/SuperKarel.html#WHITE\">WHITE</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\">SuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/GuiUtils.html#widen-javax.swing.JComponent-int-\">widen(JComponent, int)</a></span> - Static method in class stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/collections/Grid.html#width--\">width()</a></span> - Method in class stanford.cs106.collections.<a href=\"stanford/cs106/collections/Grid.html\" title=\"class in stanford.cs106.collections\">Grid</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#windowActivated-java.awt.event.WindowEvent-\">windowActivated(WindowEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Required empty method of WindowListener interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#windowClosed-java.awt.event.WindowEvent-\">windowClosed(WindowEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Required empty method of WindowListener interface.</div>\n</dd>\n<dt><a href=\"stanford/cs106/gui/WindowCloseKeyListener.html\" title=\"class in stanford.cs106.gui\"><span class=\"typeNameLink\">WindowCloseKeyListener</span></a> - Class in <a href=\"stanford/cs106/gui/package-summary.html\">stanford.cs106.gui</a></dt>\n<dd>\n<div class=\"block\">Makes a given window close itself when you press Escape or Ctrl-W.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/gui/WindowCloseKeyListener.html#WindowCloseKeyListener-java.awt.Window-\">WindowCloseKeyListener(Window)</a></span> - Constructor for class stanford.cs106.gui.<a href=\"stanford/cs106/gui/WindowCloseKeyListener.html\" title=\"class in stanford.cs106.gui\">WindowCloseKeyListener</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#windowClosing-java.awt.event.WindowEvent-\">windowClosing(WindowEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Required empty method of WindowListener interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#windowDeactivated-java.awt.event.WindowEvent-\">windowDeactivated(WindowEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Required empty method of WindowListener interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#windowDeiconified-java.awt.event.WindowEvent-\">windowDeiconified(WindowEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Required empty method of WindowListener interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#windowGainedFocus-java.awt.event.WindowEvent-\">windowGainedFocus(WindowEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Required empty method of WindowFocusListener interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#windowIconified-java.awt.event.WindowEvent-\">windowIconified(WindowEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Required empty method of WindowListener interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#windowLostFocus-java.awt.event.WindowEvent-\">windowLostFocus(WindowEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Required empty method of WindowFocusListener interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#windowOpened-java.awt.event.WindowEvent-\">windowOpened(WindowEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Required empty method of WindowListener interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"acm/program/Program.html#windowStateChanged-java.awt.event.WindowEvent-\">windowStateChanged(WindowEvent)</a></span> - Method in class acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a></dt>\n<dd>\n<div class=\"block\">Required empty method of WindowStateListener interface.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.html#WORLD_EXTENSION\">WORLD_EXTENSION</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dt>\n<dd>\n<div class=\"block\">File extension for Karel worlds.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.html#WORLDS_DIRECTORY\">WORLDS_DIRECTORY</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dt>\n<dd>\n<div class=\"block\">Directory where *.w Karel world files are found.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/StringUtils.html#wrapLines-java.lang.String-int-\">wrapLines(String, int)</a></span> - Static method in class stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.html#writeAndCompile-java.lang.String-java.lang.String-boolean-\">writeAndCompile(String, String, boolean)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/reflect/ClassUtils.html#writeAndLoadClass-java.lang.String-java.lang.String-boolean-\">writeAndLoadClass(String, String, boolean)</a></span> - Static method in class stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/IOUtils.html#writeBytes-byte:A-java.lang.String-\">writeBytes(byte[], String)</a></span> - Static method in class stanford.cs106.io.<a href=\"stanford/cs106/io/IOUtils.html\" title=\"class in stanford.cs106.io\">IOUtils</a></dt>\n<dd>\n<div class=\"block\">Writes the given bytes into the given file, replacing any existing content.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/IOUtils.html#writeEntireFile-java.lang.String-java.lang.String-\">writeEntireFile(String, String)</a></span> - Static method in class stanford.cs106.io.<a href=\"stanford/cs106/io/IOUtils.html\" title=\"class in stanford.cs106.io\">IOUtils</a></dt>\n<dd>\n<div class=\"block\">Writes the given text into the file with the given name, replacing any existing text.</div>\n</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/io/IOUtils.html#writeEntireFile-java.lang.String-java.io.File-\">writeEntireFile(String, File)</a></span> - Static method in class stanford.cs106.io.<a href=\"stanford/cs106/io/IOUtils.html\" title=\"class in stanford.cs106.io\">IOUtils</a></dt>\n<dd>\n<div class=\"block\">Writes the given text into the given file, replacing any existing text.</div>\n</dd>\n</dl>\n<a name=\"I:X\">\n<!--   -->\n</a>\n<h2 class=\"title\">X</h2>\n<dl>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/XmlUtils.html#XML_EXTENSION\">XML_EXTENSION</a></span> - Static variable in class stanford.cs106.util.<a href=\"stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\">XmlUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/XmlUtils.XmlRuntimeException.html#XmlRuntimeException-java.lang.String-\">XmlRuntimeException(String)</a></span> - Constructor for exception stanford.cs106.util.<a href=\"stanford/cs106/util/XmlUtils.XmlRuntimeException.html\" title=\"class in stanford.cs106.util\">XmlUtils.XmlRuntimeException</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/XmlUtils.XmlRuntimeException.html#XmlRuntimeException-java.lang.String-java.lang.Throwable-\">XmlRuntimeException(String, Throwable)</a></span> - Constructor for exception stanford.cs106.util.<a href=\"stanford/cs106/util/XmlUtils.XmlRuntimeException.html\" title=\"class in stanford.cs106.util\">XmlUtils.XmlRuntimeException</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">XmlUtils</span></a> - Class in <a href=\"stanford/cs106/util/package-summary.html\">stanford.cs106.util</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/cs106/util/XmlUtils.html#XmlUtils--\">XmlUtils()</a></span> - Constructor for class stanford.cs106.util.<a href=\"stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\">XmlUtils</a></dt>\n<dd>&nbsp;</dd>\n<dt><a href=\"stanford/cs106/util/XmlUtils.XmlRuntimeException.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">XmlUtils.XmlRuntimeException</span></a> - Exception in <a href=\"stanford/cs106/util/package-summary.html\">stanford.cs106.util</a></dt>\n<dd>\n<div class=\"block\">Represents exceptions that can occur while processing XML text.</div>\n</dd>\n</dl>\n<a name=\"I:Y\">\n<!--   -->\n</a>\n<h2 class=\"title\">Y</h2>\n<dl>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/HeadlessSuperKarel.html#YELLOW\">YELLOW</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\">HeadlessSuperKarel</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/KarelProgram.html#YELLOW\">YELLOW</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dt>\n<dd>&nbsp;</dd>\n<dt><span class=\"memberNameLink\"><a href=\"stanford/karel/SuperKarel.html#YELLOW\">YELLOW</a></span> - Static variable in class stanford.karel.<a href=\"stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\">SuperKarel</a></dt>\n<dd>&nbsp;</dd>\n</dl>\n<a href=\"#I:A\">A</a>&nbsp;<a href=\"#I:B\">B</a>&nbsp;<a href=\"#I:C\">C</a>&nbsp;<a href=\"#I:D\">D</a>&nbsp;<a href=\"#I:E\">E</a>&nbsp;<a href=\"#I:F\">F</a>&nbsp;<a href=\"#I:G\">G</a>&nbsp;<a href=\"#I:H\">H</a>&nbsp;<a href=\"#I:I\">I</a>&nbsp;<a href=\"#I:J\">J</a>&nbsp;<a href=\"#I:K\">K</a>&nbsp;<a href=\"#I:L\">L</a>&nbsp;<a href=\"#I:M\">M</a>&nbsp;<a href=\"#I:N\">N</a>&nbsp;<a href=\"#I:O\">O</a>&nbsp;<a href=\"#I:P\">P</a>&nbsp;<a href=\"#I:R\">R</a>&nbsp;<a href=\"#I:S\">S</a>&nbsp;<a href=\"#I:T\">T</a>&nbsp;<a href=\"#I:U\">U</a>&nbsp;<a href=\"#I:V\">V</a>&nbsp;<a href=\"#I:W\">W</a>&nbsp;<a href=\"#I:X\">X</a>&nbsp;<a href=\"#I:Y\">Y</a>&nbsp;</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"overview-summary.html\">Overview</a></li>\n<li>Package</li>\n<li>Class</li>\n<li><a href=\"overview-tree.html\">Tree</a></li>\n<li><a href=\"deprecated-list.html\">Deprecated</a></li>\n<li class=\"navBarCell1Rev\">Index</li>\n<li><a href=\"help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev</li>\n<li>Next</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"index.html?index-all.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"index-all.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/index.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Frameset//EN\" \"http://www.w3.org/TR/html4/frameset.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>Generated Documentation (Untitled)</title>\n<script type=\"text/javascript\">\n    targetPage = \"\" + window.location.search;\n    if (targetPage != \"\" && targetPage != \"undefined\")\n        targetPage = targetPage.substring(1);\n    if (targetPage.indexOf(\":\") != -1 || (targetPage != \"\" && !validURL(targetPage)))\n        targetPage = \"undefined\";\n    function validURL(url) {\n        try {\n            url = decodeURIComponent(url);\n        }\n        catch (error) {\n            return false;\n        }\n        var pos = url.indexOf(\".html\");\n        if (pos == -1 || pos != url.length - 5)\n            return false;\n        var allowNumber = false;\n        var allowSep = false;\n        var seenDot = false;\n        for (var i = 0; i < url.length - 5; i++) {\n            var ch = url.charAt(i);\n            if ('a' <= ch && ch <= 'z' ||\n                    'A' <= ch && ch <= 'Z' ||\n                    ch == '$' ||\n                    ch == '_' ||\n                    ch.charCodeAt(0) > 127) {\n                allowNumber = true;\n                allowSep = true;\n            } else if ('0' <= ch && ch <= '9'\n                    || ch == '-') {\n                if (!allowNumber)\n                     return false;\n            } else if (ch == '/' || ch == '.') {\n                if (!allowSep)\n                    return false;\n                allowNumber = false;\n                allowSep = false;\n                if (ch == '.')\n                     seenDot = true;\n                if (ch == '/' && seenDot)\n                     return false;\n            } else {\n                return false;\n            }\n        }\n        return true;\n    }\n    function loadFrames() {\n        if (targetPage != \"\" && targetPage != \"undefined\")\n             top.classFrame.location = top.targetPage;\n    }\n</script>\n</head>\n<frameset cols=\"20%,80%\" title=\"Documentation frame\" onload=\"top.loadFrames()\">\n<frameset rows=\"30%,70%\" title=\"Left frames\" onload=\"top.loadFrames()\">\n<frame src=\"overview-frame.html\" name=\"packageListFrame\" title=\"All Packages\">\n<frame src=\"allclasses-frame.html\" name=\"packageFrame\" title=\"All classes and interfaces (except non-static nested types)\">\n</frameset>\n<frame src=\"overview-summary.html\" name=\"classFrame\" title=\"Package, class and interface descriptions\" scrolling=\"yes\">\n<noframes>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<h2>Frame Alert</h2>\n<p>This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. Link to <a href=\"overview-summary.html\">Non-frame version</a>.</p>\n</noframes>\n</frameset>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/javazoom/jlgui/basicplayer/BasicController.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:30 PDT 2017 -->\n<title>BasicController</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"BasicController\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":6,\"i1\":6,\"i2\":6,\"i3\":6,\"i4\":6,\"i5\":6,\"i6\":6,\"i7\":6,\"i8\":6,\"i9\":6};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],4:[\"t3\",\"Abstract Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Class</li>\n<li><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html\" title=\"class in javazoom.jlgui.basicplayer\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?javazoom/jlgui/basicplayer/BasicController.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"BasicController.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">javazoom.jlgui.basicplayer</div>\n<h2 title=\"Interface BasicController\" class=\"title\">Interface BasicController</h2>\n</div>\n<div class=\"contentContainer\">\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Known Implementing Classes:</dt>\n<dd><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayer</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public interface <span class=\"typeNameLabel\">BasicController</span></pre>\n<div class=\"block\">This interface defines player controls available.</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t3\" class=\"tableTab\"><span><a href=\"javascript:show(4);\">Abstract Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html#open-java.io.File-\">open</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)</code>\n<div class=\"block\">Open file to play.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html#open-java.io.InputStream-\">open</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;in)</code>\n<div class=\"block\">Open inputstream to play.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html#open-java.net.URL-\">open</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URL.html?is-external=true\" title=\"class or interface in java.net\">URL</a>&nbsp;url)</code>\n<div class=\"block\">Open URL to play.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html#pause--\">pause</a></span>()</code>\n<div class=\"block\">Pause playback.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html#play--\">play</a></span>()</code>\n<div class=\"block\">Start playback.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html#resume--\">resume</a></span>()</code>\n<div class=\"block\">Resume playback.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>long</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html#seek-long-\">seek</a></span>(long&nbsp;bytes)</code>\n<div class=\"block\">Skip bytes.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html#setGain-double-\">setGain</a></span>(double&nbsp;gain)</code>\n<div class=\"block\">Sets Gain value.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html#setPan-double-\">setPan</a></span>(double&nbsp;pan)</code>\n<div class=\"block\">Sets Pan (Balance) value.</div>\n</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html#stop--\">stop</a></span>()</code>\n<div class=\"block\">Stop playback.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"open-java.io.InputStream-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>open</h4>\n<pre>void&nbsp;open(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;in)\n   throws <a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></pre>\n<div class=\"block\">Open inputstream to play.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>in</code> - </dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"open-java.io.File-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>open</h4>\n<pre>void&nbsp;open(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)\n   throws <a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></pre>\n<div class=\"block\">Open file to play.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>file</code> - </dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"open-java.net.URL-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>open</h4>\n<pre>void&nbsp;open(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URL.html?is-external=true\" title=\"class or interface in java.net\">URL</a>&nbsp;url)\n   throws <a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></pre>\n<div class=\"block\">Open URL to play.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>url</code> - </dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"seek-long-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>seek</h4>\n<pre>long&nbsp;seek(long&nbsp;bytes)\n   throws <a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></pre>\n<div class=\"block\">Skip bytes.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>bytes</code> - </dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>bytes skipped according to audio frames constraint.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"play--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>play</h4>\n<pre>void&nbsp;play()\n   throws <a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></pre>\n<div class=\"block\">Start playback.</div>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"stop--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>stop</h4>\n<pre>void&nbsp;stop()\n   throws <a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></pre>\n<div class=\"block\">Stop playback.</div>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"pause--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>pause</h4>\n<pre>void&nbsp;pause()\n    throws <a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></pre>\n<div class=\"block\">Pause playback.</div>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"resume--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>resume</h4>\n<pre>void&nbsp;resume()\n     throws <a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></pre>\n<div class=\"block\">Resume playback.</div>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setPan-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setPan</h4>\n<pre>void&nbsp;setPan(double&nbsp;pan)\n     throws <a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></pre>\n<div class=\"block\">Sets Pan (Balance) value.\n Linear scale : -1.0 <--> +1.0</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>pan</code> - value from -1.0 to +1.0</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setGain-double-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>setGain</h4>\n<pre>void&nbsp;setGain(double&nbsp;gain)\n      throws <a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></pre>\n<div class=\"block\">Sets Gain value.\n Linear scale 0.0  <-->  1.0</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>gain</code> - value from 0.0 to 1.0</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Class</li>\n<li><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html\" title=\"class in javazoom.jlgui.basicplayer\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?javazoom/jlgui/basicplayer/BasicController.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"BasicController.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/javazoom/jlgui/basicplayer/BasicPlayer.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:30 PDT 2017 -->\n<title>BasicPlayer</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"BasicPlayer\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":10,\"i16\":10,\"i17\":10,\"i18\":10,\"i19\":10,\"i20\":10,\"i21\":10,\"i22\":10,\"i23\":10,\"i24\":10,\"i25\":10,\"i26\":10,\"i27\":10,\"i28\":10,\"i29\":10,\"i30\":10,\"i31\":10,\"i32\":10,\"i33\":10,\"i34\":10,\"i35\":10,\"i36\":10,\"i37\":10,\"i38\":10,\"i39\":10,\"i40\":10,\"i41\":10,\"i42\":10,\"i43\":10,\"i44\":10,\"i45\":10,\"i46\":10,\"i47\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html\" title=\"interface in javazoom.jlgui.basicplayer\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerEvent.html\" title=\"class in javazoom.jlgui.basicplayer\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?javazoom/jlgui/basicplayer/BasicPlayer.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"BasicPlayer.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">javazoom.jlgui.basicplayer</div>\n<h2 title=\"Class BasicPlayer\" class=\"title\">Class BasicPlayer</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>javazoom.jlgui.basicplayer.BasicPlayer</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a>, <a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html\" title=\"interface in javazoom.jlgui.basicplayer\">BasicController</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">BasicPlayer</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>\nimplements <a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html\" title=\"interface in javazoom.jlgui.basicplayer\">BasicController</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a></pre>\n<div class=\"block\">BasicPlayer is a threaded simple player class based on JavaSound API. It has\n been successfully tested under J2SE 1.3.x, 1.4.x and 1.5.x.</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#encodedLength\">encodedLength</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#EXTERNAL_BUFFER_SIZE\">EXTERNAL_BUFFER_SIZE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/sound/sampled/AudioFileFormat.html?is-external=true\" title=\"class or interface in javax.sound.sampled\">AudioFileFormat</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#m_audioFileFormat\">m_audioFileFormat</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/sound/sampled/AudioInputStream.html?is-external=true\" title=\"class or interface in javax.sound.sampled\">AudioInputStream</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#m_audioInputStream\">m_audioInputStream</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#m_dataSource\">m_dataSource</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/sound/sampled/AudioInputStream.html?is-external=true\" title=\"class or interface in javax.sound.sampled\">AudioInputStream</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#m_encodedaudioInputStream\">m_encodedaudioInputStream</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/sound/sampled/FloatControl.html?is-external=true\" title=\"class or interface in javax.sound.sampled\">FloatControl</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#m_gainControl\">m_gainControl</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/sound/sampled/SourceDataLine.html?is-external=true\" title=\"class or interface in javax.sound.sampled\">SourceDataLine</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#m_line\">m_line</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#m_mixerName\">m_mixerName</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/sound/sampled/FloatControl.html?is-external=true\" title=\"class or interface in javax.sound.sampled\">FloatControl</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#m_panControl\">m_panControl</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true\" title=\"class or interface in java.lang\">Thread</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#m_thread\">m_thread</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#OPENED\">OPENED</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#PAUSED\">PAUSED</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#PLAYING\">PLAYING</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#SEEKING\">SEEKING</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#SKIP_INACCURACY_SIZE\">SKIP_INACCURACY_SIZE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#STOPPED\">STOPPED</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#UNKNOWN\">UNKNOWN</a></span></code>\n<div class=\"block\">These variables are used to distinguish stopped, paused, playing states.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#BasicPlayer--\">BasicPlayer</a></span>()</code>\n<div class=\"block\">Constructs a Basic Player.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#addBasicPlayerListener-javazoom.jlgui.basicplayer.BasicPlayerListener-\">addBasicPlayerListener</a></span>(<a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerListener.html\" title=\"interface in javazoom.jlgui.basicplayer\">BasicPlayerListener</a>&nbsp;bpl)</code>\n<div class=\"block\">Add listener to be notified.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#closeStream--\">closeStream</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#createLine--\">createLine</a></span>()</code>\n<div class=\"block\">Inits a DateLine.<br>\n \n We check if the line supports Gain and Pan controls.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#deepCopy-java.util.Map-\">deepCopy</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&nbsp;src)</code>\n<div class=\"block\">Deep copy of a Map.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#getEncodedStreamPosition--\">getEncodedStreamPosition</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>float</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#getGainValue--\">getGainValue</a></span>()</code>\n<div class=\"block\">Returns Gain value.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#getLineBufferSize--\">getLineBufferSize</a></span>()</code>\n<div class=\"block\">Return SourceDataLine buffer size.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#getLineCurrentBufferSize--\">getLineCurrentBufferSize</a></span>()</code>\n<div class=\"block\">Return SourceDataLine current buffer size.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#getListeners--\">getListeners</a></span>()</code>\n<div class=\"block\">Return registered listeners.</div>\n</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>float</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#getMaximumGain--\">getMaximumGain</a></span>()</code>\n<div class=\"block\">Gets max Gain value.</div>\n</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>float</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#getMinimumGain--\">getMinimumGain</a></span>()</code>\n<div class=\"block\">Gets min Gain value.</div>\n</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/sound/sampled/Mixer.html?is-external=true\" title=\"class or interface in javax.sound.sampled\">Mixer</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#getMixer-java.lang.String-\">getMixer</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>&nbsp;</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#getMixerName--\">getMixerName</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#getMixers--\">getMixers</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>float</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#getPan--\">getPan</a></span>()</code>\n<div class=\"block\">Returns Pan value.</div>\n</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>float</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#getPrecision--\">getPrecision</a></span>()</code>\n<div class=\"block\">Returns Pan precision.</div>\n</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>long</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#getSleepTime--\">getSleepTime</a></span>()</code>\n<div class=\"block\">Return thread sleep time in milliseconds.</div>\n</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#getStatus--\">getStatus</a></span>()</code>\n<div class=\"block\">Returns BasicPlayer status.</div>\n</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#hasGainControl--\">hasGainControl</a></span>()</code>\n<div class=\"block\">Returns true if Gain control is supported.</div>\n</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#hasPanControl--\">hasPanControl</a></span>()</code>\n<div class=\"block\">Returns true if Pan control is supported.</div>\n</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#initAudioInputStream--\">initAudioInputStream</a></span>()</code>\n<div class=\"block\">Inits AudioInputStream and AudioFileFormat from the data source.</div>\n</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#initAudioInputStream-java.io.File-\">initAudioInputStream</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)</code>\n<div class=\"block\">Inits Audio ressources from file.</div>\n</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#initAudioInputStream-java.io.InputStream-\">initAudioInputStream</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;inputStream)</code>\n<div class=\"block\">Inits Audio ressources from InputStream.</div>\n</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#initAudioInputStream-java.net.URL-\">initAudioInputStream</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URL.html?is-external=true\" title=\"class or interface in java.net\">URL</a>&nbsp;url)</code>\n<div class=\"block\">Inits Audio ressources from URL.</div>\n</td>\n</tr>\n<tr id=\"i24\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#initLine--\">initLine</a></span>()</code>\n<div class=\"block\">Inits Audio ressources from AudioSystem.<br></div>\n</td>\n</tr>\n<tr id=\"i25\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#notifyEvent-int-int-double-java.lang.Object-\">notifyEvent</a></span>(int&nbsp;code,\n           int&nbsp;position,\n           double&nbsp;value,\n           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;description)</code>\n<div class=\"block\">Notify listeners about a BasicPlayerEvent.</div>\n</td>\n</tr>\n<tr id=\"i26\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#open-java.io.File-\">open</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)</code>\n<div class=\"block\">Open file to play.</div>\n</td>\n</tr>\n<tr id=\"i27\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#open-java.io.InputStream-\">open</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;inputStream)</code>\n<div class=\"block\">Open inputstream to play.</div>\n</td>\n</tr>\n<tr id=\"i28\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#open-java.net.URL-\">open</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URL.html?is-external=true\" title=\"class or interface in java.net\">URL</a>&nbsp;url)</code>\n<div class=\"block\">Open URL to play.</div>\n</td>\n</tr>\n<tr id=\"i29\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#openLine--\">openLine</a></span>()</code>\n<div class=\"block\">Opens the line.</div>\n</td>\n</tr>\n<tr id=\"i30\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#pause--\">pause</a></span>()</code>\n<div class=\"block\">Pause playback.</div>\n</td>\n</tr>\n<tr id=\"i31\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#pausePlayback--\">pausePlayback</a></span>()</code>\n<div class=\"block\">Pauses the playback.<br>\n \n Player Status = PAUSED.</div>\n</td>\n</tr>\n<tr id=\"i32\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#play--\">play</a></span>()</code>\n<div class=\"block\">Start playback.</div>\n</td>\n</tr>\n<tr id=\"i33\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#removeBasicPlayerListener-javazoom.jlgui.basicplayer.BasicPlayerListener-\">removeBasicPlayerListener</a></span>(<a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerListener.html\" title=\"interface in javazoom.jlgui.basicplayer\">BasicPlayerListener</a>&nbsp;bpl)</code>\n<div class=\"block\">Remove registered listener.</div>\n</td>\n</tr>\n<tr id=\"i34\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#reset--\">reset</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i35\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#resume--\">resume</a></span>()</code>\n<div class=\"block\">Resume playback.</div>\n</td>\n</tr>\n<tr id=\"i36\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#resumePlayback--\">resumePlayback</a></span>()</code>\n<div class=\"block\">Resumes the playback.<br>\n \n Player Status = PLAYING.</div>\n</td>\n</tr>\n<tr id=\"i37\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#run--\">run</a></span>()</code>\n<div class=\"block\">Main loop.</div>\n</td>\n</tr>\n<tr id=\"i38\" class=\"altColor\">\n<td class=\"colFirst\"><code>long</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#seek-long-\">seek</a></span>(long&nbsp;bytes)</code>\n<div class=\"block\">Skip bytes.</div>\n</td>\n</tr>\n<tr id=\"i39\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#setGain-double-\">setGain</a></span>(double&nbsp;fGain)</code>\n<div class=\"block\">Sets Gain value.</div>\n</td>\n</tr>\n<tr id=\"i40\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#setLineBufferSize-int-\">setLineBufferSize</a></span>(int&nbsp;size)</code>\n<div class=\"block\">Set SourceDataLine buffer size.</div>\n</td>\n</tr>\n<tr id=\"i41\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#setMixerName-java.lang.String-\">setMixerName</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>&nbsp;</td>\n</tr>\n<tr id=\"i42\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#setPan-double-\">setPan</a></span>(double&nbsp;fPan)</code>\n<div class=\"block\">Sets Pan value.</div>\n</td>\n</tr>\n<tr id=\"i43\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#setSleepTime-long-\">setSleepTime</a></span>(long&nbsp;time)</code>\n<div class=\"block\">Set thread sleep time.</div>\n</td>\n</tr>\n<tr id=\"i44\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected long</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#skipBytes-long-\">skipBytes</a></span>(long&nbsp;bytes)</code>\n<div class=\"block\">Skip bytes in the File inputstream.</div>\n</td>\n</tr>\n<tr id=\"i45\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#startPlayback--\">startPlayback</a></span>()</code>\n<div class=\"block\">Starts playback.</div>\n</td>\n</tr>\n<tr id=\"i46\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#stop--\">stop</a></span>()</code>\n<div class=\"block\">Stop playback.</div>\n</td>\n</tr>\n<tr id=\"i47\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html#stopPlayback--\">stopPlayback</a></span>()</code>\n<div class=\"block\">Stops the playback.<br>\n \n Player Status = STOPPED.<br>\n Thread should free Audio ressources.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"EXTERNAL_BUFFER_SIZE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>EXTERNAL_BUFFER_SIZE</h4>\n<pre>public static&nbsp;int EXTERNAL_BUFFER_SIZE</pre>\n</li>\n</ul>\n<a name=\"SKIP_INACCURACY_SIZE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SKIP_INACCURACY_SIZE</h4>\n<pre>public static&nbsp;int SKIP_INACCURACY_SIZE</pre>\n</li>\n</ul>\n<a name=\"m_thread\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>m_thread</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true\" title=\"class or interface in java.lang\">Thread</a> m_thread</pre>\n</li>\n</ul>\n<a name=\"m_dataSource\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>m_dataSource</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a> m_dataSource</pre>\n</li>\n</ul>\n<a name=\"m_encodedaudioInputStream\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>m_encodedaudioInputStream</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/sound/sampled/AudioInputStream.html?is-external=true\" title=\"class or interface in javax.sound.sampled\">AudioInputStream</a> m_encodedaudioInputStream</pre>\n</li>\n</ul>\n<a name=\"encodedLength\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>encodedLength</h4>\n<pre>protected&nbsp;int encodedLength</pre>\n</li>\n</ul>\n<a name=\"m_audioInputStream\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>m_audioInputStream</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/sound/sampled/AudioInputStream.html?is-external=true\" title=\"class or interface in javax.sound.sampled\">AudioInputStream</a> m_audioInputStream</pre>\n</li>\n</ul>\n<a name=\"m_audioFileFormat\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>m_audioFileFormat</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/sound/sampled/AudioFileFormat.html?is-external=true\" title=\"class or interface in javax.sound.sampled\">AudioFileFormat</a> m_audioFileFormat</pre>\n</li>\n</ul>\n<a name=\"m_line\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>m_line</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/sound/sampled/SourceDataLine.html?is-external=true\" title=\"class or interface in javax.sound.sampled\">SourceDataLine</a> m_line</pre>\n</li>\n</ul>\n<a name=\"m_gainControl\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>m_gainControl</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/sound/sampled/FloatControl.html?is-external=true\" title=\"class or interface in javax.sound.sampled\">FloatControl</a> m_gainControl</pre>\n</li>\n</ul>\n<a name=\"m_panControl\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>m_panControl</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/sound/sampled/FloatControl.html?is-external=true\" title=\"class or interface in javax.sound.sampled\">FloatControl</a> m_panControl</pre>\n</li>\n</ul>\n<a name=\"m_mixerName\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>m_mixerName</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> m_mixerName</pre>\n</li>\n</ul>\n<a name=\"UNKNOWN\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>UNKNOWN</h4>\n<pre>public static final&nbsp;int UNKNOWN</pre>\n<div class=\"block\">These variables are used to distinguish stopped, paused, playing states.\n We need them to control Thread.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#javazoom.jlgui.basicplayer.BasicPlayer.UNKNOWN\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"PLAYING\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>PLAYING</h4>\n<pre>public static final&nbsp;int PLAYING</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#javazoom.jlgui.basicplayer.BasicPlayer.PLAYING\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"PAUSED\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>PAUSED</h4>\n<pre>public static final&nbsp;int PAUSED</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#javazoom.jlgui.basicplayer.BasicPlayer.PAUSED\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"STOPPED\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>STOPPED</h4>\n<pre>public static final&nbsp;int STOPPED</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#javazoom.jlgui.basicplayer.BasicPlayer.STOPPED\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"OPENED\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>OPENED</h4>\n<pre>public static final&nbsp;int OPENED</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#javazoom.jlgui.basicplayer.BasicPlayer.OPENED\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"SEEKING\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>SEEKING</h4>\n<pre>public static final&nbsp;int SEEKING</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#javazoom.jlgui.basicplayer.BasicPlayer.SEEKING\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"BasicPlayer--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>BasicPlayer</h4>\n<pre>public&nbsp;BasicPlayer()</pre>\n<div class=\"block\">Constructs a Basic Player.</div>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"reset--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>reset</h4>\n<pre>protected&nbsp;void&nbsp;reset()</pre>\n</li>\n</ul>\n<a name=\"addBasicPlayerListener-javazoom.jlgui.basicplayer.BasicPlayerListener-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addBasicPlayerListener</h4>\n<pre>public&nbsp;void&nbsp;addBasicPlayerListener(<a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerListener.html\" title=\"interface in javazoom.jlgui.basicplayer\">BasicPlayerListener</a>&nbsp;bpl)</pre>\n<div class=\"block\">Add listener to be notified.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>bpl</code> - </dd>\n</dl>\n</li>\n</ul>\n<a name=\"getListeners--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getListeners</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&nbsp;getListeners()</pre>\n<div class=\"block\">Return registered listeners.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"removeBasicPlayerListener-javazoom.jlgui.basicplayer.BasicPlayerListener-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeBasicPlayerListener</h4>\n<pre>public&nbsp;void&nbsp;removeBasicPlayerListener(<a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerListener.html\" title=\"interface in javazoom.jlgui.basicplayer\">BasicPlayerListener</a>&nbsp;bpl)</pre>\n<div class=\"block\">Remove registered listener.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>bpl</code> - </dd>\n</dl>\n</li>\n</ul>\n<a name=\"setLineBufferSize-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setLineBufferSize</h4>\n<pre>public&nbsp;void&nbsp;setLineBufferSize(int&nbsp;size)</pre>\n<div class=\"block\">Set SourceDataLine buffer size. It affects audio latency. (the delay\n between line.write(data) and real sound). Minimum value should be over\n 10000 bytes.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>size</code> - -1 means maximum buffer size available.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getLineBufferSize--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getLineBufferSize</h4>\n<pre>public&nbsp;int&nbsp;getLineBufferSize()</pre>\n<div class=\"block\">Return SourceDataLine buffer size.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>-1 maximum buffer size.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getLineCurrentBufferSize--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getLineCurrentBufferSize</h4>\n<pre>public&nbsp;int&nbsp;getLineCurrentBufferSize()</pre>\n<div class=\"block\">Return SourceDataLine current buffer size.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"setSleepTime-long-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setSleepTime</h4>\n<pre>public&nbsp;void&nbsp;setSleepTime(long&nbsp;time)</pre>\n<div class=\"block\">Set thread sleep time. Default is -1 (no sleep time).</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>time</code> - in milliseconds.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getSleepTime--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSleepTime</h4>\n<pre>public&nbsp;long&nbsp;getSleepTime()</pre>\n<div class=\"block\">Return thread sleep time in milliseconds.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>-1 means no sleep time.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getStatus--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getStatus</h4>\n<pre>public&nbsp;int&nbsp;getStatus()</pre>\n<div class=\"block\">Returns BasicPlayer status.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>status</dd>\n</dl>\n</li>\n</ul>\n<a name=\"open-java.io.File-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>open</h4>\n<pre>public&nbsp;void&nbsp;open(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)\n          throws <a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></pre>\n<div class=\"block\">Open file to play.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html#open-java.io.File-\">open</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html\" title=\"interface in javazoom.jlgui.basicplayer\">BasicController</a></code></dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"open-java.net.URL-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>open</h4>\n<pre>public&nbsp;void&nbsp;open(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URL.html?is-external=true\" title=\"class or interface in java.net\">URL</a>&nbsp;url)\n          throws <a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></pre>\n<div class=\"block\">Open URL to play.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html#open-java.net.URL-\">open</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html\" title=\"interface in javazoom.jlgui.basicplayer\">BasicController</a></code></dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"open-java.io.InputStream-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>open</h4>\n<pre>public&nbsp;void&nbsp;open(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;inputStream)\n          throws <a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></pre>\n<div class=\"block\">Open inputstream to play.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html#open-java.io.InputStream-\">open</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html\" title=\"interface in javazoom.jlgui.basicplayer\">BasicController</a></code></dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"initAudioInputStream--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>initAudioInputStream</h4>\n<pre>protected&nbsp;void&nbsp;initAudioInputStream()\n                             throws <a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></pre>\n<div class=\"block\">Inits AudioInputStream and AudioFileFormat from the data source.</div>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"initAudioInputStream-java.io.File-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>initAudioInputStream</h4>\n<pre>protected&nbsp;void&nbsp;initAudioInputStream(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)\n                             throws <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/sound/sampled/UnsupportedAudioFileException.html?is-external=true\" title=\"class or interface in javax.sound.sampled\">UnsupportedAudioFileException</a>,\n                                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<div class=\"block\">Inits Audio ressources from file.</div>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/sound/sampled/UnsupportedAudioFileException.html?is-external=true\" title=\"class or interface in javax.sound.sampled\">UnsupportedAudioFileException</a></code></dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"initAudioInputStream-java.net.URL-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>initAudioInputStream</h4>\n<pre>protected&nbsp;void&nbsp;initAudioInputStream(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URL.html?is-external=true\" title=\"class or interface in java.net\">URL</a>&nbsp;url)\n                             throws <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/sound/sampled/UnsupportedAudioFileException.html?is-external=true\" title=\"class or interface in javax.sound.sampled\">UnsupportedAudioFileException</a>,\n                                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<div class=\"block\">Inits Audio ressources from URL.</div>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/sound/sampled/UnsupportedAudioFileException.html?is-external=true\" title=\"class or interface in javax.sound.sampled\">UnsupportedAudioFileException</a></code></dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"initAudioInputStream-java.io.InputStream-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>initAudioInputStream</h4>\n<pre>protected&nbsp;void&nbsp;initAudioInputStream(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;inputStream)\n                             throws <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/sound/sampled/UnsupportedAudioFileException.html?is-external=true\" title=\"class or interface in javax.sound.sampled\">UnsupportedAudioFileException</a>,\n                                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<div class=\"block\">Inits Audio ressources from InputStream.</div>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/sound/sampled/UnsupportedAudioFileException.html?is-external=true\" title=\"class or interface in javax.sound.sampled\">UnsupportedAudioFileException</a></code></dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"initLine--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>initLine</h4>\n<pre>protected&nbsp;void&nbsp;initLine()\n                 throws <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/sound/sampled/LineUnavailableException.html?is-external=true\" title=\"class or interface in javax.sound.sampled\">LineUnavailableException</a></pre>\n<div class=\"block\">Inits Audio ressources from AudioSystem.<br></div>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/sound/sampled/LineUnavailableException.html?is-external=true\" title=\"class or interface in javax.sound.sampled\">LineUnavailableException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"createLine--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createLine</h4>\n<pre>protected&nbsp;void&nbsp;createLine()\n                   throws <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/sound/sampled/LineUnavailableException.html?is-external=true\" title=\"class or interface in javax.sound.sampled\">LineUnavailableException</a></pre>\n<div class=\"block\">Inits a DateLine.<br>\n \n We check if the line supports Gain and Pan controls.\n \n From the AudioInputStream, i.e. from the sound file, we fetch information\n about the format of the audio data. These information include the\n sampling frequency, the number of channels and the size of the samples.\n There information are needed to ask JavaSound for a suitable output line\n for this audio file. Furthermore, we have to give JavaSound a hint about\n how big the internal buffer for the line should be. Here, we say\n AudioSystem.NOT_SPECIFIED, signaling that we don't care about the exact\n size. JavaSound will use some default value for the buffer size.</div>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/sound/sampled/LineUnavailableException.html?is-external=true\" title=\"class or interface in javax.sound.sampled\">LineUnavailableException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"openLine--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>openLine</h4>\n<pre>protected&nbsp;void&nbsp;openLine()\n                 throws <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/sound/sampled/LineUnavailableException.html?is-external=true\" title=\"class or interface in javax.sound.sampled\">LineUnavailableException</a></pre>\n<div class=\"block\">Opens the line.</div>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/sound/sampled/LineUnavailableException.html?is-external=true\" title=\"class or interface in javax.sound.sampled\">LineUnavailableException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"stopPlayback--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>stopPlayback</h4>\n<pre>protected&nbsp;void&nbsp;stopPlayback()</pre>\n<div class=\"block\">Stops the playback.<br>\n \n Player Status = STOPPED.<br>\n Thread should free Audio ressources.</div>\n</li>\n</ul>\n<a name=\"pausePlayback--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>pausePlayback</h4>\n<pre>protected&nbsp;void&nbsp;pausePlayback()</pre>\n<div class=\"block\">Pauses the playback.<br>\n \n Player Status = PAUSED.</div>\n</li>\n</ul>\n<a name=\"resumePlayback--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>resumePlayback</h4>\n<pre>protected&nbsp;void&nbsp;resumePlayback()</pre>\n<div class=\"block\">Resumes the playback.<br>\n \n Player Status = PLAYING.</div>\n</li>\n</ul>\n<a name=\"startPlayback--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>startPlayback</h4>\n<pre>protected&nbsp;void&nbsp;startPlayback()\n                      throws <a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></pre>\n<div class=\"block\">Starts playback.</div>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"run--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>run</h4>\n<pre>public&nbsp;void&nbsp;run()</pre>\n<div class=\"block\">Main loop.\n \n Player Status == STOPPED || SEEKING => End of Thread + Freeing Audio\n Ressources.<br>\n Player Status == PLAYING => Audio stream data sent to Audio line.<br>\n Player Status == PAUSED => Waiting for another status.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true#run--\" title=\"class or interface in java.lang\">run</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"skipBytes-long-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>skipBytes</h4>\n<pre>protected&nbsp;long&nbsp;skipBytes(long&nbsp;bytes)\n                  throws <a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></pre>\n<div class=\"block\">Skip bytes in the File inputstream. It will skip N frames matching to\n bytes, so it will never skip given bytes length exactly.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>bytes</code> - </dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>value>0 for File and value=0 for URL and InputStream</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"notifyEvent-int-int-double-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>notifyEvent</h4>\n<pre>protected&nbsp;void&nbsp;notifyEvent(int&nbsp;code,\n                           int&nbsp;position,\n                           double&nbsp;value,\n                           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;description)</pre>\n<div class=\"block\">Notify listeners about a BasicPlayerEvent.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>code</code> - event code.</dd>\n<dd><code>position</code> - in the stream when the event occurs.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getEncodedStreamPosition--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getEncodedStreamPosition</h4>\n<pre>protected&nbsp;int&nbsp;getEncodedStreamPosition()</pre>\n</li>\n</ul>\n<a name=\"closeStream--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>closeStream</h4>\n<pre>protected&nbsp;void&nbsp;closeStream()</pre>\n</li>\n</ul>\n<a name=\"hasGainControl--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hasGainControl</h4>\n<pre>public&nbsp;boolean&nbsp;hasGainControl()</pre>\n<div class=\"block\">Returns true if Gain control is supported.</div>\n</li>\n</ul>\n<a name=\"getGainValue--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getGainValue</h4>\n<pre>public&nbsp;float&nbsp;getGainValue()</pre>\n<div class=\"block\">Returns Gain value.</div>\n</li>\n</ul>\n<a name=\"getMaximumGain--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getMaximumGain</h4>\n<pre>public&nbsp;float&nbsp;getMaximumGain()</pre>\n<div class=\"block\">Gets max Gain value.</div>\n</li>\n</ul>\n<a name=\"getMinimumGain--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getMinimumGain</h4>\n<pre>public&nbsp;float&nbsp;getMinimumGain()</pre>\n<div class=\"block\">Gets min Gain value.</div>\n</li>\n</ul>\n<a name=\"hasPanControl--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hasPanControl</h4>\n<pre>public&nbsp;boolean&nbsp;hasPanControl()</pre>\n<div class=\"block\">Returns true if Pan control is supported.</div>\n</li>\n</ul>\n<a name=\"getPrecision--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getPrecision</h4>\n<pre>public&nbsp;float&nbsp;getPrecision()</pre>\n<div class=\"block\">Returns Pan precision.</div>\n</li>\n</ul>\n<a name=\"getPan--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getPan</h4>\n<pre>public&nbsp;float&nbsp;getPan()</pre>\n<div class=\"block\">Returns Pan value.</div>\n</li>\n</ul>\n<a name=\"deepCopy-java.util.Map-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>deepCopy</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&nbsp;deepCopy(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&nbsp;src)</pre>\n<div class=\"block\">Deep copy of a Map.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>src</code> - </dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"seek-long-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>seek</h4>\n<pre>public&nbsp;long&nbsp;seek(long&nbsp;bytes)\n          throws <a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from interface:&nbsp;<code><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html#seek-long-\">BasicController</a></code></span></div>\n<div class=\"block\">Skip bytes.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html#seek-long-\">seek</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html\" title=\"interface in javazoom.jlgui.basicplayer\">BasicController</a></code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>bytes skipped according to audio frames constraint.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></code></dd>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html#seek-long-\"><code>BasicController.seek(long)</code></a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"play--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>play</h4>\n<pre>public&nbsp;void&nbsp;play()\n          throws <a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from interface:&nbsp;<code><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html#play--\">BasicController</a></code></span></div>\n<div class=\"block\">Start playback.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html#play--\">play</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html\" title=\"interface in javazoom.jlgui.basicplayer\">BasicController</a></code></dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></code></dd>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html#play--\"><code>BasicController.play()</code></a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"stop--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>stop</h4>\n<pre>public&nbsp;void&nbsp;stop()\n          throws <a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from interface:&nbsp;<code><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html#stop--\">BasicController</a></code></span></div>\n<div class=\"block\">Stop playback.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html#stop--\">stop</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html\" title=\"interface in javazoom.jlgui.basicplayer\">BasicController</a></code></dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></code></dd>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html#stop--\"><code>BasicController.stop()</code></a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"pause--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>pause</h4>\n<pre>public&nbsp;void&nbsp;pause()\n           throws <a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from interface:&nbsp;<code><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html#pause--\">BasicController</a></code></span></div>\n<div class=\"block\">Pause playback.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html#pause--\">pause</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html\" title=\"interface in javazoom.jlgui.basicplayer\">BasicController</a></code></dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></code></dd>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html#pause--\"><code>BasicController.pause()</code></a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"resume--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>resume</h4>\n<pre>public&nbsp;void&nbsp;resume()\n            throws <a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from interface:&nbsp;<code><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html#resume--\">BasicController</a></code></span></div>\n<div class=\"block\">Resume playback.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html#resume--\">resume</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html\" title=\"interface in javazoom.jlgui.basicplayer\">BasicController</a></code></dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></code></dd>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html#resume--\"><code>BasicController.resume()</code></a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setPan-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setPan</h4>\n<pre>public&nbsp;void&nbsp;setPan(double&nbsp;fPan)\n            throws <a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></pre>\n<div class=\"block\">Sets Pan value. Line should be opened before calling this method. Linear\n scale : -1.0 <--> +1.0</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html#setPan-double-\">setPan</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html\" title=\"interface in javazoom.jlgui.basicplayer\">BasicController</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>fPan</code> - value from -1.0 to +1.0</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setGain-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setGain</h4>\n<pre>public&nbsp;void&nbsp;setGain(double&nbsp;fGain)\n             throws <a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></pre>\n<div class=\"block\">Sets Gain value. Line should be opened before calling this method. Linear\n scale 0.0 <--> 1.0 Threshold Coef. : 1/2 to avoid saturation.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html#setGain-double-\">setGain</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html\" title=\"interface in javazoom.jlgui.basicplayer\">BasicController</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>fGain</code> - value from 0.0 to 1.0</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getMixers--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getMixers</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&nbsp;getMixers()</pre>\n</li>\n</ul>\n<a name=\"getMixer-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getMixer</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/sound/sampled/Mixer.html?is-external=true\" title=\"class or interface in javax.sound.sampled\">Mixer</a>&nbsp;getMixer(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n</li>\n</ul>\n<a name=\"getMixerName--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getMixerName</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getMixerName()</pre>\n</li>\n</ul>\n<a name=\"setMixerName-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>setMixerName</h4>\n<pre>public&nbsp;void&nbsp;setMixerName(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html\" title=\"interface in javazoom.jlgui.basicplayer\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerEvent.html\" title=\"class in javazoom.jlgui.basicplayer\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?javazoom/jlgui/basicplayer/BasicPlayer.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"BasicPlayer.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/javazoom/jlgui/basicplayer/BasicPlayerEvent.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:30 PDT 2017 -->\n<title>BasicPlayerEvent</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"BasicPlayerEvent\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html\" title=\"class in javazoom.jlgui.basicplayer\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerEventLauncher.html\" title=\"class in javazoom.jlgui.basicplayer\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?javazoom/jlgui/basicplayer/BasicPlayerEvent.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"BasicPlayerEvent.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">javazoom.jlgui.basicplayer</div>\n<h2 title=\"Class BasicPlayerEvent\" class=\"title\">Class BasicPlayerEvent</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>javazoom.jlgui.basicplayer.BasicPlayerEvent</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">BasicPlayerEvent</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n<div class=\"block\">This class implements player events.</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerEvent.html#EOM\">EOM</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerEvent.html#GAIN\">GAIN</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerEvent.html#OPENED\">OPENED</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerEvent.html#OPENING\">OPENING</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerEvent.html#PAN\">PAN</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerEvent.html#PAUSED\">PAUSED</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerEvent.html#PLAYING\">PLAYING</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerEvent.html#RESUMED\">RESUMED</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerEvent.html#SEEKED\">SEEKED</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerEvent.html#SEEKING\">SEEKING</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerEvent.html#STOPPED\">STOPPED</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerEvent.html#UNKNOWN\">UNKNOWN</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerEvent.html#BasicPlayerEvent-java.lang.Object-int-int-double-java.lang.Object-\">BasicPlayerEvent</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;source,\n                int&nbsp;code,\n                int&nbsp;position,\n                double&nbsp;value,\n                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;desc)</code>\n<div class=\"block\">Constructor</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerEvent.html#getCode--\">getCode</a></span>()</code>\n<div class=\"block\">Return code of the event triggered.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerEvent.html#getDescription--\">getDescription</a></span>()</code>\n<div class=\"block\">Return description.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerEvent.html#getPosition--\">getPosition</a></span>()</code>\n<div class=\"block\">Return position in the stream when event occured.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerEvent.html#getSource--\">getSource</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerEvent.html#getValue--\">getValue</a></span>()</code>\n<div class=\"block\">Return value related to event triggered.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerEvent.html#toString--\">toString</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"UNKNOWN\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>UNKNOWN</h4>\n<pre>public static final&nbsp;int UNKNOWN</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#javazoom.jlgui.basicplayer.BasicPlayerEvent.UNKNOWN\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"OPENING\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>OPENING</h4>\n<pre>public static final&nbsp;int OPENING</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#javazoom.jlgui.basicplayer.BasicPlayerEvent.OPENING\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"OPENED\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>OPENED</h4>\n<pre>public static final&nbsp;int OPENED</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#javazoom.jlgui.basicplayer.BasicPlayerEvent.OPENED\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"PLAYING\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>PLAYING</h4>\n<pre>public static final&nbsp;int PLAYING</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#javazoom.jlgui.basicplayer.BasicPlayerEvent.PLAYING\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"STOPPED\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>STOPPED</h4>\n<pre>public static final&nbsp;int STOPPED</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#javazoom.jlgui.basicplayer.BasicPlayerEvent.STOPPED\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"PAUSED\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>PAUSED</h4>\n<pre>public static final&nbsp;int PAUSED</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#javazoom.jlgui.basicplayer.BasicPlayerEvent.PAUSED\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"RESUMED\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>RESUMED</h4>\n<pre>public static final&nbsp;int RESUMED</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#javazoom.jlgui.basicplayer.BasicPlayerEvent.RESUMED\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"SEEKING\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SEEKING</h4>\n<pre>public static final&nbsp;int SEEKING</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#javazoom.jlgui.basicplayer.BasicPlayerEvent.SEEKING\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"SEEKED\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SEEKED</h4>\n<pre>public static final&nbsp;int SEEKED</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#javazoom.jlgui.basicplayer.BasicPlayerEvent.SEEKED\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"EOM\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>EOM</h4>\n<pre>public static final&nbsp;int EOM</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#javazoom.jlgui.basicplayer.BasicPlayerEvent.EOM\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"PAN\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>PAN</h4>\n<pre>public static final&nbsp;int PAN</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#javazoom.jlgui.basicplayer.BasicPlayerEvent.PAN\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"GAIN\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GAIN</h4>\n<pre>public static final&nbsp;int GAIN</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#javazoom.jlgui.basicplayer.BasicPlayerEvent.GAIN\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"BasicPlayerEvent-java.lang.Object-int-int-double-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>BasicPlayerEvent</h4>\n<pre>public&nbsp;BasicPlayerEvent(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;source,\n                        int&nbsp;code,\n                        int&nbsp;position,\n                        double&nbsp;value,\n                        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;desc)</pre>\n<div class=\"block\">Constructor</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>source</code> - of the event</dd>\n<dd><code>code</code> - of the envent</dd>\n<dd><code>position</code> - optional stream position</dd>\n<dd><code>value</code> - opitional control value</dd>\n<dd><code>desc</code> - optional description</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"getCode--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getCode</h4>\n<pre>public&nbsp;int&nbsp;getCode()</pre>\n<div class=\"block\">Return code of the event triggered.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"getPosition--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getPosition</h4>\n<pre>public&nbsp;int&nbsp;getPosition()</pre>\n<div class=\"block\">Return position in the stream when event occured.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"getValue--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getValue</h4>\n<pre>public&nbsp;double&nbsp;getValue()</pre>\n<div class=\"block\">Return value related to event triggered.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"getDescription--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getDescription</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;getDescription()</pre>\n<div class=\"block\">Return description.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"getSource--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSource</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;getSource()</pre>\n</li>\n</ul>\n<a name=\"toString--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>toString</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;toString()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html\" title=\"class in javazoom.jlgui.basicplayer\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerEventLauncher.html\" title=\"class in javazoom.jlgui.basicplayer\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?javazoom/jlgui/basicplayer/BasicPlayerEvent.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"BasicPlayerEvent.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/javazoom/jlgui/basicplayer/BasicPlayerEventLauncher.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:30 PDT 2017 -->\n<title>BasicPlayerEventLauncher</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"BasicPlayerEventLauncher\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerEvent.html\" title=\"class in javazoom.jlgui.basicplayer\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?javazoom/jlgui/basicplayer/BasicPlayerEventLauncher.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"BasicPlayerEventLauncher.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.java.lang.Thread\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.java.lang.Thread\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">javazoom.jlgui.basicplayer</div>\n<h2 title=\"Class BasicPlayerEventLauncher\" class=\"title\">Class BasicPlayerEventLauncher</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Thread</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>javazoom.jlgui.basicplayer.BasicPlayerEventLauncher</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">BasicPlayerEventLauncher</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true\" title=\"class or interface in java.lang\">Thread</a></pre>\n<div class=\"block\">This class implements a threaded events launcher.</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.lang.Thread\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true\" title=\"class or interface in java.lang\">Thread</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.State.html?is-external=true\" title=\"class or interface in java.lang\">Thread.State</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.UncaughtExceptionHandler.html?is-external=true\" title=\"class or interface in java.lang\">Thread.UncaughtExceptionHandler</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.lang.Thread\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true\" title=\"class or interface in java.lang\">Thread</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#MAX_PRIORITY\" title=\"class or interface in java.lang\">MAX_PRIORITY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#MIN_PRIORITY\" title=\"class or interface in java.lang\">MIN_PRIORITY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#NORM_PRIORITY\" title=\"class or interface in java.lang\">NORM_PRIORITY</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerEventLauncher.html#BasicPlayerEventLauncher-int-int-double-java.lang.Object-java.util.Collection-java.lang.Object-\">BasicPlayerEventLauncher</a></span>(int&nbsp;code,\n                        int&nbsp;position,\n                        double&nbsp;value,\n                        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;description,\n                        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&nbsp;listeners,\n                        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;source)</code>\n<div class=\"block\">Contructor.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerEventLauncher.html#run--\">run</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Thread\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true\" title=\"class or interface in java.lang\">Thread</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#activeCount--\" title=\"class or interface in java.lang\">activeCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#checkAccess--\" title=\"class or interface in java.lang\">checkAccess</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#countStackFrames--\" title=\"class or interface in java.lang\">countStackFrames</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#currentThread--\" title=\"class or interface in java.lang\">currentThread</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#destroy--\" title=\"class or interface in java.lang\">destroy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#dumpStack--\" title=\"class or interface in java.lang\">dumpStack</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#enumerate-java.lang.Thread:A-\" title=\"class or interface in java.lang\">enumerate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getAllStackTraces--\" title=\"class or interface in java.lang\">getAllStackTraces</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getContextClassLoader--\" title=\"class or interface in java.lang\">getContextClassLoader</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getDefaultUncaughtExceptionHandler--\" title=\"class or interface in java.lang\">getDefaultUncaughtExceptionHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getId--\" title=\"class or interface in java.lang\">getId</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getName--\" title=\"class or interface in java.lang\">getName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getPriority--\" title=\"class or interface in java.lang\">getPriority</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getStackTrace--\" title=\"class or interface in java.lang\">getStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getState--\" title=\"class or interface in java.lang\">getState</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getThreadGroup--\" title=\"class or interface in java.lang\">getThreadGroup</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getUncaughtExceptionHandler--\" title=\"class or interface in java.lang\">getUncaughtExceptionHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#holdsLock-java.lang.Object-\" title=\"class or interface in java.lang\">holdsLock</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#interrupt--\" title=\"class or interface in java.lang\">interrupt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#interrupted--\" title=\"class or interface in java.lang\">interrupted</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#isAlive--\" title=\"class or interface in java.lang\">isAlive</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#isDaemon--\" title=\"class or interface in java.lang\">isDaemon</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#isInterrupted--\" title=\"class or interface in java.lang\">isInterrupted</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#join--\" title=\"class or interface in java.lang\">join</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#join-long-\" title=\"class or interface in java.lang\">join</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#join-long-int-\" title=\"class or interface in java.lang\">join</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#resume--\" title=\"class or interface in java.lang\">resume</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#setContextClassLoader-java.lang.ClassLoader-\" title=\"class or interface in java.lang\">setContextClassLoader</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#setDaemon-boolean-\" title=\"class or interface in java.lang\">setDaemon</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#setDefaultUncaughtExceptionHandler-java.lang.Thread.UncaughtExceptionHandler-\" title=\"class or interface in java.lang\">setDefaultUncaughtExceptionHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#setName-java.lang.String-\" title=\"class or interface in java.lang\">setName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#setPriority-int-\" title=\"class or interface in java.lang\">setPriority</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#setUncaughtExceptionHandler-java.lang.Thread.UncaughtExceptionHandler-\" title=\"class or interface in java.lang\">setUncaughtExceptionHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#sleep-long-\" title=\"class or interface in java.lang\">sleep</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#sleep-long-int-\" title=\"class or interface in java.lang\">sleep</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#start--\" title=\"class or interface in java.lang\">start</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#stop--\" title=\"class or interface in java.lang\">stop</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#stop-java.lang.Throwable-\" title=\"class or interface in java.lang\">stop</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#suspend--\" title=\"class or interface in java.lang\">suspend</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#yield--\" title=\"class or interface in java.lang\">yield</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"BasicPlayerEventLauncher-int-int-double-java.lang.Object-java.util.Collection-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>BasicPlayerEventLauncher</h4>\n<pre>public&nbsp;BasicPlayerEventLauncher(int&nbsp;code,\n                                int&nbsp;position,\n                                double&nbsp;value,\n                                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;description,\n                                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&nbsp;listeners,\n                                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;source)</pre>\n<div class=\"block\">Contructor.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>code</code> - </dd>\n<dd><code>position</code> - </dd>\n<dd><code>value</code> - </dd>\n<dd><code>description</code> - </dd>\n<dd><code>listeners</code> - </dd>\n<dd><code>source</code> - </dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"run--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>run</h4>\n<pre>public&nbsp;void&nbsp;run()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true#run--\" title=\"class or interface in java.lang\">run</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#run--\" title=\"class or interface in java.lang\">run</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true\" title=\"class or interface in java.lang\">Thread</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerEvent.html\" title=\"class in javazoom.jlgui.basicplayer\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?javazoom/jlgui/basicplayer/BasicPlayerEventLauncher.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"BasicPlayerEventLauncher.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.java.lang.Thread\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.java.lang.Thread\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/javazoom/jlgui/basicplayer/BasicPlayerException.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:30 PDT 2017 -->\n<title>BasicPlayerException</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"BasicPlayerException\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerEventLauncher.html\" title=\"class in javazoom.jlgui.basicplayer\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerListener.html\" title=\"interface in javazoom.jlgui.basicplayer\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?javazoom/jlgui/basicplayer/BasicPlayerException.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"BasicPlayerException.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">javazoom.jlgui.basicplayer</div>\n<h2 title=\"Class BasicPlayerException\" class=\"title\">Class BasicPlayerException</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Throwable</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Exception</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.RuntimeException</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>javazoom.jlgui.basicplayer.BasicPlayerException</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">BasicPlayerException</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.html?is-external=true\" title=\"class or interface in java.lang\">RuntimeException</a></pre>\n<div class=\"block\">This class implements custom exception for basicplayer.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../serialized-form.html#javazoom.jlgui.basicplayer.BasicPlayerException\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html#CANNOTINITLINE\">CANNOTINITLINE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html#GAINCONTROLNOTSUPPORTED\">GAINCONTROLNOTSUPPORTED</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html#PANCONTROLNOTSUPPORTED\">PANCONTROLNOTSUPPORTED</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html#SKIPNOTSUPPORTED\">SKIPNOTSUPPORTED</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html#WAITERROR\">WAITERROR</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html#BasicPlayerException--\">BasicPlayerException</a></span>()</code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html#BasicPlayerException-java.lang.String-\">BasicPlayerException</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;msg)</code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html#BasicPlayerException-java.lang.String-java.lang.Throwable-\">BasicPlayerException</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;msg,\n                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;cause)</code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html#BasicPlayerException-java.lang.Throwable-\">BasicPlayerException</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;cause)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html#getCause--\">getCause</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html#getMessage--\">getMessage</a></span>()</code>\n<div class=\"block\">Returns the detail message string of this throwable.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html#printStackTrace--\">printStackTrace</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html#printStackTrace-java.io.PrintStream-\">printStackTrace</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true\" title=\"class or interface in java.io\">PrintStream</a>&nbsp;out)</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html#printStackTrace-java.io.PrintWriter-\">printStackTrace</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintWriter.html?is-external=true\" title=\"class or interface in java.io\">PrintWriter</a>&nbsp;out)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Throwable\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#addSuppressed-java.lang.Throwable-\" title=\"class or interface in java.lang\">addSuppressed</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#fillInStackTrace--\" title=\"class or interface in java.lang\">fillInStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getLocalizedMessage--\" title=\"class or interface in java.lang\">getLocalizedMessage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getStackTrace--\" title=\"class or interface in java.lang\">getStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getSuppressed--\" title=\"class or interface in java.lang\">getSuppressed</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#initCause-java.lang.Throwable-\" title=\"class or interface in java.lang\">initCause</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#setStackTrace-java.lang.StackTraceElement:A-\" title=\"class or interface in java.lang\">setStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"GAINCONTROLNOTSUPPORTED\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>GAINCONTROLNOTSUPPORTED</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> GAINCONTROLNOTSUPPORTED</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#javazoom.jlgui.basicplayer.BasicPlayerException.GAINCONTROLNOTSUPPORTED\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"PANCONTROLNOTSUPPORTED\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>PANCONTROLNOTSUPPORTED</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> PANCONTROLNOTSUPPORTED</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#javazoom.jlgui.basicplayer.BasicPlayerException.PANCONTROLNOTSUPPORTED\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"WAITERROR\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>WAITERROR</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> WAITERROR</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#javazoom.jlgui.basicplayer.BasicPlayerException.WAITERROR\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"CANNOTINITLINE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>CANNOTINITLINE</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> CANNOTINITLINE</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#javazoom.jlgui.basicplayer.BasicPlayerException.CANNOTINITLINE\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"SKIPNOTSUPPORTED\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>SKIPNOTSUPPORTED</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> SKIPNOTSUPPORTED</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#javazoom.jlgui.basicplayer.BasicPlayerException.SKIPNOTSUPPORTED\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"BasicPlayerException--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>BasicPlayerException</h4>\n<pre>public&nbsp;BasicPlayerException()</pre>\n</li>\n</ul>\n<a name=\"BasicPlayerException-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>BasicPlayerException</h4>\n<pre>public&nbsp;BasicPlayerException(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;msg)</pre>\n</li>\n</ul>\n<a name=\"BasicPlayerException-java.lang.Throwable-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>BasicPlayerException</h4>\n<pre>public&nbsp;BasicPlayerException(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;cause)</pre>\n</li>\n</ul>\n<a name=\"BasicPlayerException-java.lang.String-java.lang.Throwable-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>BasicPlayerException</h4>\n<pre>public&nbsp;BasicPlayerException(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;msg,\n                            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;cause)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"getCause--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getCause</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;getCause()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getCause--\" title=\"class or interface in java.lang\">getCause</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getMessage--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getMessage</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getMessage()</pre>\n<div class=\"block\">Returns the detail message string of this throwable. If it was\n created with a null message, returns the following:\n (cause==null ? null : cause.toString()).</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getMessage--\" title=\"class or interface in java.lang\">getMessage</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"printStackTrace--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>printStackTrace</h4>\n<pre>public&nbsp;void&nbsp;printStackTrace()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#printStackTrace--\" title=\"class or interface in java.lang\">printStackTrace</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"printStackTrace-java.io.PrintStream-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>printStackTrace</h4>\n<pre>public&nbsp;void&nbsp;printStackTrace(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true\" title=\"class or interface in java.io\">PrintStream</a>&nbsp;out)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#printStackTrace-java.io.PrintStream-\" title=\"class or interface in java.lang\">printStackTrace</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"printStackTrace-java.io.PrintWriter-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>printStackTrace</h4>\n<pre>public&nbsp;void&nbsp;printStackTrace(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintWriter.html?is-external=true\" title=\"class or interface in java.io\">PrintWriter</a>&nbsp;out)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#printStackTrace-java.io.PrintWriter-\" title=\"class or interface in java.lang\">printStackTrace</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerEventLauncher.html\" title=\"class in javazoom.jlgui.basicplayer\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerListener.html\" title=\"interface in javazoom.jlgui.basicplayer\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?javazoom/jlgui/basicplayer/BasicPlayerException.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"BasicPlayerException.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/javazoom/jlgui/basicplayer/BasicPlayerListener.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:30 PDT 2017 -->\n<title>BasicPlayerListener</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"BasicPlayerListener\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":6,\"i1\":6,\"i2\":6,\"i3\":6};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],4:[\"t3\",\"Abstract Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li>Next&nbsp;Class</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?javazoom/jlgui/basicplayer/BasicPlayerListener.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"BasicPlayerListener.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">javazoom.jlgui.basicplayer</div>\n<h2 title=\"Interface BasicPlayerListener\" class=\"title\">Interface BasicPlayerListener</h2>\n</div>\n<div class=\"contentContainer\">\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Known Implementing Classes:</dt>\n<dd><a href=\"../../../stanford/cs106/audio/SplClip.html\" title=\"class in stanford.cs106.audio\">SplClip</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public interface <span class=\"typeNameLabel\">BasicPlayerListener</span></pre>\n<div class=\"block\">This interface defines callbacks methods that will be notified for all\n registered BasicPlayerListener of BasicPlayer.</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t3\" class=\"tableTab\"><span><a href=\"javascript:show(4);\">Abstract Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerListener.html#opened-java.lang.Object-java.util.Map-\">opened</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;stream,\n      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&nbsp;properties)</code>\n<div class=\"block\">Open callback, stream is ready to play.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerListener.html#progress-int-long-byte:A-java.util.Map-\">progress</a></span>(int&nbsp;bytesread,\n        long&nbsp;microseconds,\n        byte[]&nbsp;pcmdata,\n        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&nbsp;properties)</code>\n<div class=\"block\">Progress callback while playing.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerListener.html#setController-javazoom.jlgui.basicplayer.BasicController-\">setController</a></span>(<a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html\" title=\"interface in javazoom.jlgui.basicplayer\">BasicController</a>&nbsp;controller)</code>\n<div class=\"block\">A handle to the BasicPlayer, plugins may control the player through the\n controller (play, stop, ...)</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerListener.html#stateUpdated-javazoom.jlgui.basicplayer.BasicPlayerEvent-\">stateUpdated</a></span>(<a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerEvent.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerEvent</a>&nbsp;event)</code>\n<div class=\"block\">Notification callback for basicplayer events such as opened, eom ...</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"opened-java.lang.Object-java.util.Map-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>opened</h4>\n<pre>void&nbsp;opened(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;stream,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&nbsp;properties)</pre>\n<div class=\"block\">Open callback, stream is ready to play.\n \n properties map includes audio format dependant features such as bitrate,\n duration, frequency, channels, number of frames, vbr flag, id3v2/id3v1\n (for MP3 only), comments (for Ogg Vorbis), ...</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>stream</code> - could be File, URL or InputStream</dd>\n<dd><code>properties</code> - audio stream properties.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"progress-int-long-byte:A-java.util.Map-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>progress</h4>\n<pre>void&nbsp;progress(int&nbsp;bytesread,\n              long&nbsp;microseconds,\n              byte[]&nbsp;pcmdata,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&nbsp;properties)</pre>\n<div class=\"block\">Progress callback while playing.\n \n This method is called severals time per seconds while playing. properties\n map includes audio format features such as instant bitrate, microseconds\n position, current frame number, ...</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>bytesread</code> - from encoded stream.</dd>\n<dd><code>microseconds</code> - elapsed (<b>reseted after a seek !</b>).</dd>\n<dd><code>pcmdata</code> - PCM samples.</dd>\n<dd><code>properties</code> - audio stream parameters.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"stateUpdated-javazoom.jlgui.basicplayer.BasicPlayerEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>stateUpdated</h4>\n<pre>void&nbsp;stateUpdated(<a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerEvent.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerEvent</a>&nbsp;event)</pre>\n<div class=\"block\">Notification callback for basicplayer events such as opened, eom ...</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>event</code> - </dd>\n</dl>\n</li>\n</ul>\n<a name=\"setController-javazoom.jlgui.basicplayer.BasicController-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>setController</h4>\n<pre>void&nbsp;setController(<a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html\" title=\"interface in javazoom.jlgui.basicplayer\">BasicController</a>&nbsp;controller)</pre>\n<div class=\"block\">A handle to the BasicPlayer, plugins may control the player through the\n controller (play, stop, ...)</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>controller</code> - : a handle to the player</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li>Next&nbsp;Class</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?javazoom/jlgui/basicplayer/BasicPlayerListener.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"BasicPlayerListener.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/javazoom/jlgui/basicplayer/package-frame.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:36 PDT 2017 -->\n<title>javazoom.jlgui.basicplayer</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<h1 class=\"bar\"><a href=\"../../../javazoom/jlgui/basicplayer/package-summary.html\" target=\"classFrame\">javazoom.jlgui.basicplayer</a></h1>\n<div class=\"indexContainer\">\n<h2 title=\"Interfaces\">Interfaces</h2>\n<ul title=\"Interfaces\">\n<li><a href=\"BasicController.html\" title=\"interface in javazoom.jlgui.basicplayer\" target=\"classFrame\"><span class=\"interfaceName\">BasicController</span></a></li>\n<li><a href=\"BasicPlayerListener.html\" title=\"interface in javazoom.jlgui.basicplayer\" target=\"classFrame\"><span class=\"interfaceName\">BasicPlayerListener</span></a></li>\n</ul>\n<h2 title=\"Classes\">Classes</h2>\n<ul title=\"Classes\">\n<li><a href=\"BasicPlayer.html\" title=\"class in javazoom.jlgui.basicplayer\" target=\"classFrame\">BasicPlayer</a></li>\n<li><a href=\"BasicPlayerEvent.html\" title=\"class in javazoom.jlgui.basicplayer\" target=\"classFrame\">BasicPlayerEvent</a></li>\n<li><a href=\"BasicPlayerEventLauncher.html\" title=\"class in javazoom.jlgui.basicplayer\" target=\"classFrame\">BasicPlayerEventLauncher</a></li>\n</ul>\n<h2 title=\"Exceptions\">Exceptions</h2>\n<ul title=\"Exceptions\">\n<li><a href=\"BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\" target=\"classFrame\">BasicPlayerException</a></li>\n</ul>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/javazoom/jlgui/basicplayer/package-summary.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:36 PDT 2017 -->\n<title>javazoom.jlgui.basicplayer</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"javazoom.jlgui.basicplayer\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li class=\"navBarCell1Rev\">Package</li>\n<li>Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../acm/util/package-summary.html\">Prev&nbsp;Package</a></li>\n<li><a href=\"../../../stanford/cs106/audio/package-summary.html\">Next&nbsp;Package</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?javazoom/jlgui/basicplayer/package-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 title=\"Package\" class=\"title\">Package&nbsp;javazoom.jlgui.basicplayer</h1>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Interface Summary table, listing interfaces, and an explanation\">\n<caption><span>Interface Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Interface</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html\" title=\"interface in javazoom.jlgui.basicplayer\">BasicController</a></td>\n<td class=\"colLast\">\n<div class=\"block\">This interface defines player controls available.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerListener.html\" title=\"interface in javazoom.jlgui.basicplayer\">BasicPlayerListener</a></td>\n<td class=\"colLast\">\n<div class=\"block\">This interface defines callbacks methods that will be notified for all\n registered BasicPlayerListener of BasicPlayer.</div>\n</td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Class Summary table, listing classes, and an explanation\">\n<caption><span>Class Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Class</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayer</a></td>\n<td class=\"colLast\">\n<div class=\"block\">BasicPlayer is a threaded simple player class based on JavaSound API.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerEvent.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerEvent</a></td>\n<td class=\"colLast\">\n<div class=\"block\">This class implements player events.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerEventLauncher.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerEventLauncher</a></td>\n<td class=\"colLast\">\n<div class=\"block\">This class implements a threaded events launcher.</div>\n</td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Exception Summary table, listing exceptions, and an explanation\">\n<caption><span>Exception Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Exception</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\">BasicPlayerException</a></td>\n<td class=\"colLast\">\n<div class=\"block\">This class implements custom exception for basicplayer.</div>\n</td>\n</tr>\n</tbody>\n</table>\n</li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li class=\"navBarCell1Rev\">Package</li>\n<li>Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../acm/util/package-summary.html\">Prev&nbsp;Package</a></li>\n<li><a href=\"../../../stanford/cs106/audio/package-summary.html\">Next&nbsp;Package</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?javazoom/jlgui/basicplayer/package-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/javazoom/jlgui/basicplayer/package-tree.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:36 PDT 2017 -->\n<title>javazoom.jlgui.basicplayer Class Hierarchy</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"javazoom.jlgui.basicplayer Class Hierarchy\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../acm/util/package-tree.html\">Prev</a></li>\n<li><a href=\"../../../stanford/cs106/audio/package-tree.html\">Next</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?javazoom/jlgui/basicplayer/package-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 class=\"title\">Hierarchy For Package javazoom.jlgui.basicplayer</h1>\n<span class=\"packageHierarchyLabel\">Package Hierarchies:</span>\n<ul class=\"horizontal\">\n<li><a href=\"../../../overview-tree.html\">All Packages</a></li>\n</ul>\n</div>\n<div class=\"contentContainer\">\n<h2 title=\"Class Hierarchy\">Class Hierarchy</h2>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Object</span></a>\n<ul>\n<li type=\"circle\">javazoom.jlgui.basicplayer.<a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayer.html\" title=\"class in javazoom.jlgui.basicplayer\"><span class=\"typeNameLink\">BasicPlayer</span></a> (implements javazoom.jlgui.basicplayer.<a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html\" title=\"interface in javazoom.jlgui.basicplayer\">BasicController</a>, java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a>)</li>\n<li type=\"circle\">javazoom.jlgui.basicplayer.<a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerEvent.html\" title=\"class in javazoom.jlgui.basicplayer\"><span class=\"typeNameLink\">BasicPlayerEvent</span></a></li>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Thread</span></a> (implements java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a>)\n<ul>\n<li type=\"circle\">javazoom.jlgui.basicplayer.<a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerEventLauncher.html\" title=\"class in javazoom.jlgui.basicplayer\"><span class=\"typeNameLink\">BasicPlayerEventLauncher</span></a></li>\n</ul>\n</li>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Throwable</span></a> (implements java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Exception</span></a>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">RuntimeException</span></a>\n<ul>\n<li type=\"circle\">javazoom.jlgui.basicplayer.<a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerException.html\" title=\"class in javazoom.jlgui.basicplayer\"><span class=\"typeNameLink\">BasicPlayerException</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<h2 title=\"Interface Hierarchy\">Interface Hierarchy</h2>\n<ul>\n<li type=\"circle\">javazoom.jlgui.basicplayer.<a href=\"../../../javazoom/jlgui/basicplayer/BasicController.html\" title=\"interface in javazoom.jlgui.basicplayer\"><span class=\"typeNameLink\">BasicController</span></a></li>\n<li type=\"circle\">javazoom.jlgui.basicplayer.<a href=\"../../../javazoom/jlgui/basicplayer/BasicPlayerListener.html\" title=\"interface in javazoom.jlgui.basicplayer\"><span class=\"typeNameLink\">BasicPlayerListener</span></a></li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../acm/util/package-tree.html\">Prev</a></li>\n<li><a href=\"../../../stanford/cs106/audio/package-tree.html\">Next</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?javazoom/jlgui/basicplayer/package-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/overview-frame.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>Overview List</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"script.js\"></script>\n</head>\n<body>\n<div class=\"indexHeader\"><span><a href=\"allclasses-frame.html\" target=\"packageFrame\">All&nbsp;Classes</a></span></div>\n<div class=\"indexContainer\">\n<h2 title=\"Packages\">Packages</h2>\n<ul title=\"Packages\">\n<li><a href=\"acm/graphics/package-frame.html\" target=\"packageFrame\">acm.graphics</a></li>\n<li><a href=\"acm/gui/package-frame.html\" target=\"packageFrame\">acm.gui</a></li>\n<li><a href=\"acm/io/package-frame.html\" target=\"packageFrame\">acm.io</a></li>\n<li><a href=\"acm/program/package-frame.html\" target=\"packageFrame\">acm.program</a></li>\n<li><a href=\"acm/util/package-frame.html\" target=\"packageFrame\">acm.util</a></li>\n<li><a href=\"stanford/cs106/audio/package-frame.html\" target=\"packageFrame\">stanford.cs106.audio</a></li>\n<li><a href=\"stanford/cs106/collections/package-frame.html\" target=\"packageFrame\">stanford.cs106.collections</a></li>\n<li><a href=\"stanford/cs106/gui/package-frame.html\" target=\"packageFrame\">stanford.cs106.gui</a></li>\n<li><a href=\"stanford/cs106/io/package-frame.html\" target=\"packageFrame\">stanford.cs106.io</a></li>\n<li><a href=\"stanford/cs106/junit/package-frame.html\" target=\"packageFrame\">stanford.cs106.junit</a></li>\n<li><a href=\"stanford/cs106/net/package-frame.html\" target=\"packageFrame\">stanford.cs106.net</a></li>\n<li><a href=\"stanford/cs106/reflect/package-frame.html\" target=\"packageFrame\">stanford.cs106.reflect</a></li>\n<li><a href=\"stanford/cs106/util/package-frame.html\" target=\"packageFrame\">stanford.cs106.util</a></li>\n<li><a href=\"stanford/karel/package-frame.html\" target=\"packageFrame\">stanford.karel</a></li>\n</ul>\n</div>\n<p>&nbsp;</p>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/overview-summary.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>Overview</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"Overview\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li class=\"navBarCell1Rev\">Overview</li>\n<li>Package</li>\n<li>Class</li>\n<li><a href=\"overview-tree.html\">Tree</a></li>\n<li><a href=\"deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"index-all.html\">Index</a></li>\n<li><a href=\"help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev</li>\n<li>Next</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"index.html?overview-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"overview-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"contentContainer\">\n<table class=\"overviewSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Packages table, listing packages, and an explanation\">\n<caption><span>Packages</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Package</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"acm/graphics/package-summary.html\">acm.graphics</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"acm/gui/package-summary.html\">acm.gui</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"acm/io/package-summary.html\">acm.io</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"acm/program/package-summary.html\">acm.program</a></td>\n<td class=\"colLast\">\n<div class=\"block\">This package provides a set of classes that simplify the creation of programs.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"acm/util/package-summary.html\">acm.util</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"stanford/cs106/audio/package-summary.html\">stanford.cs106.audio</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"stanford/cs106/collections/package-summary.html\">stanford.cs106.collections</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"stanford/cs106/gui/package-summary.html\">stanford.cs106.gui</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"stanford/cs106/io/package-summary.html\">stanford.cs106.io</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"stanford/cs106/junit/package-summary.html\">stanford.cs106.junit</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"stanford/cs106/net/package-summary.html\">stanford.cs106.net</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"stanford/cs106/reflect/package-summary.html\">stanford.cs106.reflect</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"stanford/cs106/util/package-summary.html\">stanford.cs106.util</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"stanford/karel/package-summary.html\">stanford.karel</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n</tbody>\n</table>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li class=\"navBarCell1Rev\">Overview</li>\n<li>Package</li>\n<li>Class</li>\n<li><a href=\"overview-tree.html\">Tree</a></li>\n<li><a href=\"deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"index-all.html\">Index</a></li>\n<li><a href=\"help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev</li>\n<li>Next</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"index.html?overview-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"overview-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/overview-tree.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>Class Hierarchy</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"Class Hierarchy\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"overview-summary.html\">Overview</a></li>\n<li>Package</li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"index-all.html\">Index</a></li>\n<li><a href=\"help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev</li>\n<li>Next</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"index.html?overview-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"overview-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 class=\"title\">Hierarchy For All Packages</h1>\n<span class=\"packageHierarchyLabel\">Package Hierarchies:</span>\n<ul class=\"horizontal\">\n<li><a href=\"acm/graphics/package-tree.html\">acm.graphics</a>, </li>\n<li><a href=\"acm/gui/package-tree.html\">acm.gui</a>, </li>\n<li><a href=\"acm/io/package-tree.html\">acm.io</a>, </li>\n<li><a href=\"acm/program/package-tree.html\">acm.program</a>, </li>\n<li><a href=\"acm/util/package-tree.html\">acm.util</a>, </li>\n<li><a href=\"stanford/cs106/audio/package-tree.html\">stanford.cs106.audio</a>, </li>\n<li><a href=\"stanford/cs106/collections/package-tree.html\">stanford.cs106.collections</a>, </li>\n<li><a href=\"stanford/cs106/gui/package-tree.html\">stanford.cs106.gui</a>, </li>\n<li><a href=\"stanford/cs106/io/package-tree.html\">stanford.cs106.io</a>, </li>\n<li><a href=\"stanford/cs106/junit/package-tree.html\">stanford.cs106.junit</a>, </li>\n<li><a href=\"stanford/cs106/net/package-tree.html\">stanford.cs106.net</a>, </li>\n<li><a href=\"stanford/cs106/reflect/package-tree.html\">stanford.cs106.reflect</a>, </li>\n<li><a href=\"stanford/cs106/util/package-tree.html\">stanford.cs106.util</a>, </li>\n<li><a href=\"stanford/karel/package-tree.html\">stanford.karel</a></li>\n</ul>\n</div>\n<div class=\"contentContainer\">\n<h2 title=\"Class Hierarchy\">Class Hierarchy</h2>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Object</span></a>\n<ul>\n<li type=\"circle\">javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractAction.html?is-external=true\" title=\"class or interface in javax.swing\"><span class=\"typeNameLink\">AbstractAction</span></a> (implements javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Action.html?is-external=true\" title=\"class or interface in javax.swing\">Action</a>, java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true\" title=\"class or interface in java.lang\">Cloneable</a>, java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">acm.gui.<a href=\"acm/gui/JFontChooser.DialogCancelAction.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">JFontChooser.DialogCancelAction</span></a></li>\n<li type=\"circle\">acm.gui.<a href=\"acm/gui/JFontChooser.DialogOKAction.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">JFontChooser.DialogOKAction</span></a></li>\n</ul>\n</li>\n<li type=\"circle\">stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractMultimap.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">AbstractMultimap</span></a>&lt;K,V&gt; (implements stanford.cs106.collections.<a href=\"stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\">Multimap</a>&lt;K,V&gt;)\n<ul>\n<li type=\"circle\">stanford.cs106.collections.<a href=\"stanford/cs106/collections/HashMultimap.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">HashMultimap</span></a>&lt;K,V&gt;</li>\n<li type=\"circle\">stanford.cs106.collections.<a href=\"stanford/cs106/collections/TreeMultimap.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">TreeMultimap</span></a>&lt;K,V&gt;</li>\n</ul>\n</li>\n<li type=\"circle\">stanford.cs106.collections.<a href=\"stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">AbstractTable</span></a>&lt;R,C,V&gt; (implements stanford.cs106.collections.<a href=\"stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\">Table</a>&lt;R,C,V&gt;)\n<ul>\n<li type=\"circle\">stanford.cs106.collections.<a href=\"stanford/cs106/collections/HashBasedTable.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">HashBasedTable</span></a>&lt;R,C,V&gt;</li>\n<li type=\"circle\">stanford.cs106.collections.<a href=\"stanford/cs106/collections/TreeBasedTable.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">TreeBasedTable</span></a>&lt;R,C,V&gt;</li>\n</ul>\n</li>\n<li type=\"circle\">stanford.cs106.junit.<a href=\"stanford/cs106/junit/Assert.html\" title=\"class in stanford.cs106.junit\"><span class=\"typeNameLink\">Assert</span></a></li>\n<li type=\"circle\">stanford.cs106.net.<a href=\"stanford/cs106/net/BackEndServer.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">BackEndServer</span></a></li>\n<li type=\"circle\">stanford.cs106.collections.<a href=\"stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">BasicGraph</span></a>&lt;V,E&gt; (implements stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;V,E&gt;)</li>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">ClassLoader</span></a>\n<ul>\n<li type=\"circle\">acm.util.<a href=\"acm/util/PatchingClassLoader.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">PatchingClassLoader</span></a></li>\n<li type=\"circle\">java.security.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/security/SecureClassLoader.html?is-external=true\" title=\"class or interface in java.security\"><span class=\"typeNameLink\">SecureClassLoader</span></a>\n<ul>\n<li type=\"circle\">java.net.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URLClassLoader.html?is-external=true\" title=\"class or interface in java.net\"><span class=\"typeNameLink\">URLClassLoader</span></a> (implements java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true\" title=\"class or interface in java.io\">Closeable</a>)\n<ul>\n<li type=\"circle\">stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.BetterClassLoader.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">ClassUtils.BetterClassLoader</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li type=\"circle\">stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">ClassUtils</span></a></li>\n<li type=\"circle\">stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.ClassComparator.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">ClassUtils.ClassComparator</span></a> (implements java.util.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true\" title=\"class or interface in java.util\">Comparator</a>&lt;T&gt;)</li>\n<li type=\"circle\">stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ClassUtils.ExtensionFilter.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">ClassUtils.ExtensionFilter</span></a> (implements java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FileFilter.html?is-external=true\" title=\"class or interface in java.io\">FileFilter</a>)</li>\n<li type=\"circle\">stanford.cs106.gui.<a href=\"stanford/cs106/gui/ClipboardUtils.html\" title=\"class in stanford.cs106.gui\"><span class=\"typeNameLink\">ClipboardUtils</span></a></li>\n<li type=\"circle\">stanford.cs106.util.<a href=\"stanford/cs106/util/CollectionUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">CollectionUtils</span></a></li>\n<li type=\"circle\">acm.program.<a href=\"acm/program/CommandLineProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">CommandLineProgram</span></a> (implements java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, acm.io.IOModel, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a>, acm.program.<a href=\"acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a>)</li>\n<li type=\"circle\">java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\"><span class=\"typeNameLink\">Component</span></a> (implements java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\"><span class=\"typeNameLink\">Container</span></a>\n<ul>\n<li type=\"circle\">acm.io.<a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\"><span class=\"typeNameLink\">IOConsole</span></a> (implements acm.io.IOModel)</li>\n<li type=\"circle\">javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\"><span class=\"typeNameLink\">JComponent</span></a> (implements java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">acm.graphics.<a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">GCanvas</span></a> (implements acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a>, acm.graphics.<a href=\"acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a>, java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;T&gt;)</li>\n<li type=\"circle\">javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true\" title=\"class or interface in javax.swing\"><span class=\"typeNameLink\">JComboBox</span></a>&lt;E&gt; (implements javax.accessibility.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/ItemSelectable.html?is-external=true\" title=\"class or interface in java.awt\">ItemSelectable</a>, javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListDataListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListDataListener</a>)\n<ul>\n<li type=\"circle\">stanford.cs106.gui.<a href=\"stanford/cs106/gui/JComboGroupBox.html\" title=\"class in stanford.cs106.gui\"><span class=\"typeNameLink\">JComboGroupBox</span></a></li>\n</ul>\n</li>\n<li type=\"circle\">acm.gui.<a href=\"acm/gui/JFontChooser.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">JFontChooser</span></a></li>\n<li type=\"circle\">javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true\" title=\"class or interface in javax.swing\"><span class=\"typeNameLink\">JList</span></a>&lt;E&gt; (implements javax.accessibility.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Scrollable.html?is-external=true\" title=\"class or interface in javax.swing\">Scrollable</a>)\n<ul>\n<li type=\"circle\">acm.gui.<a href=\"acm/gui/JStringList.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">JStringList</span></a></li>\n</ul>\n</li>\n<li type=\"circle\">javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true\" title=\"class or interface in javax.swing\"><span class=\"typeNameLink\">JMenuBar</span></a> (implements javax.accessibility.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/MenuElement.html?is-external=true\" title=\"class or interface in javax.swing\">MenuElement</a>)\n<ul>\n<li type=\"circle\">acm.program.<a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">ProgramMenuBar</span></a> (implements java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;T&gt;)</li>\n</ul>\n</li>\n<li type=\"circle\">javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\"><span class=\"typeNameLink\">JPanel</span></a> (implements javax.accessibility.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>)\n<ul>\n<li type=\"circle\">acm.gui.<a href=\"acm/gui/JButtonGroup.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">JButtonGroup</span></a> (implements java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;T&gt;)</li>\n<li type=\"circle\">stanford.karel.<a href=\"stanford/karel/KarelControlPanel.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">KarelControlPanel</span></a> (implements java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/AdjustmentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">AdjustmentListener</a>, javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeListener</a>, java.util.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observer.html?is-external=true\" title=\"class or interface in java.util\">Observer</a>)</li>\n</ul>\n</li>\n<li type=\"circle\">javax.swing.text.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html?is-external=true\" title=\"class or interface in javax.swing.text\"><span class=\"typeNameLink\">JTextComponent</span></a> (implements javax.accessibility.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Scrollable.html?is-external=true\" title=\"class or interface in javax.swing\">Scrollable</a>)\n<ul>\n<li type=\"circle\">javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\"><span class=\"typeNameLink\">JTextField</span></a> (implements javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingConstants.html?is-external=true\" title=\"class or interface in javax.swing\">SwingConstants</a>)\n<ul>\n<li type=\"circle\">acm.gui.<a href=\"acm/gui/DoubleField.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">DoubleField</span></a></li>\n<li type=\"circle\">acm.gui.<a href=\"acm/gui/IntField.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">IntField</span></a></li>\n<li type=\"circle\">acm.gui.<a href=\"acm/gui/JPlaceholderTextField.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">JPlaceholderTextField</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li type=\"circle\">stanford.karel.<a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">KarelWorld</span></a></li>\n</ul>\n</li>\n<li type=\"circle\">java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\"><span class=\"typeNameLink\">Panel</span></a> (implements javax.accessibility.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>)\n<ul>\n<li type=\"circle\">java.applet.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\"><span class=\"typeNameLink\">Applet</span></a>\n<ul>\n<li type=\"circle\">javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\"><span class=\"typeNameLink\">JApplet</span></a> (implements javax.accessibility.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/RootPaneContainer.html?is-external=true\" title=\"class or interface in javax.swing\">RootPaneContainer</a>)\n<ul>\n<li type=\"circle\">acm.program.<a href=\"acm/program/Program.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Program</span></a> (implements java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/AdjustmentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">AdjustmentListener</a>, javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ContainerListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ContainerListener</a>, javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusListener</a>, acm.io.IOModel, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ItemListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ItemListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>, javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListDataListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListDataListener</a>, javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListSelectionListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListSelectionListener</a>, javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/MouseInputListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">MouseInputListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseWheelListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseWheelListener</a>, javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/PopupMenuListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">PopupMenuListener</a>, acm.program.<a href=\"acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a>, java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/TextListener.html?is-external=true\" title=\"class or interface in java.awt.event\">TextListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowFocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowFocusListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowStateListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowStateListener</a>)\n<ul>\n<li type=\"circle\">acm.program.<a href=\"acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">AbstractConsoleProgram</span></a>\n<ul>\n<li type=\"circle\">acm.program.<a href=\"acm/program/ConsoleProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">ConsoleProgram</span></a>\n<ul>\n<li type=\"circle\">acm.program.<a href=\"acm/program/AsciiArtProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">AsciiArtProgram</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li type=\"circle\">acm.program.<a href=\"acm/program/DialogProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">DialogProgram</span></a></li>\n<li type=\"circle\">acm.program.<a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">GraphicsProgram</span></a> (implements acm.program.<a href=\"acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a>, java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;T&gt;)</li>\n<li type=\"circle\">stanford.karel.<a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">Karel</span></a> (implements stanford.karel.<a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a>, java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a>)\n<ul>\n<li type=\"circle\">stanford.karel.<a href=\"stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">SuperKarel</span></a></li>\n</ul>\n</li>\n<li type=\"circle\">stanford.karel.<a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">KarelProgram</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li type=\"circle\">java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true\" title=\"class or interface in java.awt\"><span class=\"typeNameLink\">Window</span></a> (implements javax.accessibility.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>)\n<ul>\n<li type=\"circle\">java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true\" title=\"class or interface in java.awt\"><span class=\"typeNameLink\">Dialog</span></a>\n<ul>\n<li type=\"circle\">javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true\" title=\"class or interface in javax.swing\"><span class=\"typeNameLink\">JDialog</span></a> (implements javax.accessibility.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/RootPaneContainer.html?is-external=true\" title=\"class or interface in javax.swing\">RootPaneContainer</a>, javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/WindowConstants.html?is-external=true\" title=\"class or interface in javax.swing\">WindowConstants</a>)\n<ul>\n<li type=\"circle\">acm.gui.<a href=\"acm/gui/JListOptionPane.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">JListOptionPane</span></a> (implements java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>)\n<ul>\n<li type=\"circle\">stanford.cs106.gui.<a href=\"stanford/cs106/gui/ListOptionPane.html\" title=\"class in stanford.cs106.gui\"><span class=\"typeNameLink\">ListOptionPane</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li type=\"circle\">stanford.cs106.util.<a href=\"stanford/cs106/util/ConstantUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">ConstantUtils</span></a></li>\n<li type=\"circle\">stanford.cs106.net.<a href=\"stanford/cs106/net/Downloader.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">Downloader</span></a></li>\n<li type=\"circle\">stanford.cs106.collections.<a href=\"stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Edge</span></a>&lt;V,E&gt; (implements java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true\" title=\"class or interface in java.lang\">Cloneable</a>)</li>\n<li type=\"circle\">stanford.cs106.util.<a href=\"stanford/cs106/util/ExceptionUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">ExceptionUtils</span></a></li>\n<li type=\"circle\">javax.swing.filechooser.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/filechooser/FileFilter.html?is-external=true\" title=\"class or interface in javax.swing.filechooser\"><span class=\"typeNameLink\">FileFilter</span></a>\n<ul>\n<li type=\"circle\">stanford.cs106.io.<a href=\"stanford/cs106/io/ExtensionFileFilter.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">ExtensionFileFilter</span></a> (implements java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FileFilter.html?is-external=true\" title=\"class or interface in java.io\">FileFilter</a>)</li>\n<li type=\"circle\">acm.util.<a href=\"acm/util/FileChooserFilter.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">FileChooserFilter</span></a></li>\n</ul>\n</li>\n<li type=\"circle\">java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusAdapter.html?is-external=true\" title=\"class or interface in java.awt.event\"><span class=\"typeNameLink\">FocusAdapter</span></a> (implements java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusListener</a>)\n<ul>\n<li type=\"circle\">acm.gui.<a href=\"acm/gui/JFontChooser.TextFieldFocusHandlerForTextSelection.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">JFontChooser.TextFieldFocusHandlerForTextSelection</span></a></li>\n</ul>\n</li>\n<li type=\"circle\">acm.graphics.<a href=\"acm/graphics/GMath.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">GMath</span></a></li>\n<li type=\"circle\">acm.graphics.<a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">GObject</span></a> (implements java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true\" title=\"class or interface in java.lang\">Cloneable</a>, acm.graphics.<a href=\"acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a>, java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">acm.graphics.<a href=\"acm/graphics/GCompound.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">GCompound</span></a> (implements acm.graphics.<a href=\"acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a>, acm.graphics.<a href=\"acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a>, java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;T&gt;)</li>\n<li type=\"circle\">acm.graphics.<a href=\"acm/graphics/GImage.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">GImage</span></a> (implements acm.graphics.<a href=\"acm/graphics/GResizable.html\" title=\"interface in acm.graphics\">GResizable</a>, acm.graphics.<a href=\"acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a>)</li>\n<li type=\"circle\">acm.graphics.<a href=\"acm/graphics/GLabel.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">GLabel</span></a></li>\n<li type=\"circle\">acm.graphics.<a href=\"acm/graphics/GLine.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">GLine</span></a> (implements acm.graphics.<a href=\"acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a>)</li>\n<li type=\"circle\">acm.graphics.<a href=\"acm/graphics/GLineGroup.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">GLineGroup</span></a> (implements java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;T&gt;)</li>\n<li type=\"circle\">acm.graphics.<a href=\"acm/graphics/GOval.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">GOval</span></a> (implements acm.graphics.GFillable, acm.graphics.<a href=\"acm/graphics/GResizable.html\" title=\"interface in acm.graphics\">GResizable</a>)</li>\n<li type=\"circle\">acm.graphics.GRect (implements acm.graphics.GFillable, acm.graphics.<a href=\"acm/graphics/GResizable.html\" title=\"interface in acm.graphics\">GResizable</a>)\n<ul>\n<li type=\"circle\">acm.graphics.<a href=\"acm/graphics/G3DRect.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">G3DRect</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li type=\"circle\">acm.graphics.<a href=\"acm/graphics/GPoint.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">GPoint</span></a> (implements java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)</li>\n<li type=\"circle\">acm.graphics.<a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">GRectangle</span></a> (implements java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)</li>\n<li type=\"circle\">stanford.cs106.collections.<a href=\"stanford/cs106/collections/Grid.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Grid</span></a>&lt;E&gt;</li>\n<li type=\"circle\">stanford.cs106.gui.<a href=\"stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\"><span class=\"typeNameLink\">GuiUtils</span></a></li>\n<li type=\"circle\">acm.program.<a href=\"acm/program/HeadlessGraphicsProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">HeadlessGraphicsProgram</span></a> (implements acm.program.<a href=\"acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\">GraphicsProgramInterface</a>)</li>\n<li type=\"circle\">stanford.karel.<a href=\"stanford/karel/HeadlessKarel.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">HeadlessKarel</span></a>\n<ul>\n<li type=\"circle\">stanford.karel.<a href=\"stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">HeadlessSuperKarel</span></a></li>\n</ul>\n</li>\n<li type=\"circle\">java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\"><span class=\"typeNameLink\">InputStream</span></a> (implements java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true\" title=\"class or interface in java.io\">Closeable</a>)\n<ul>\n<li type=\"circle\">stanford.cs106.io.<a href=\"stanford/cs106/io/ReaderInputStream.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">ReaderInputStream</span></a></li>\n</ul>\n</li>\n<li type=\"circle\">stanford.cs106.io.<a href=\"stanford/cs106/io/IOUtils.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">IOUtils</span></a></li>\n<li type=\"circle\">acm.gui.<a href=\"acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">JFontChooser.ListSearchTextFieldDocumentHandler</span></a> (implements javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentListener</a>)</li>\n<li type=\"circle\">acm.gui.<a href=\"acm/gui/JFontChooser.ListSearchTextFieldDocumentHandler.ListSelector.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">JFontChooser.ListSearchTextFieldDocumentHandler.ListSelector</span></a> (implements java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a>)</li>\n<li type=\"circle\">acm.gui.<a href=\"acm/gui/JFontChooser.ListSelectionHandler.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">JFontChooser.ListSelectionHandler</span></a> (implements javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListSelectionListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListSelectionListener</a>)</li>\n<li type=\"circle\">stanford.cs106.junit.<a href=\"stanford/cs106/junit/JUnitUtils.html\" title=\"class in stanford.cs106.junit\"><span class=\"typeNameLink\">JUnitUtils</span></a></li>\n<li type=\"circle\">java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyAdapter.html?is-external=true\" title=\"class or interface in java.awt.event\"><span class=\"typeNameLink\">KeyAdapter</span></a> (implements java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>)\n<ul>\n<li type=\"circle\">acm.gui.<a href=\"acm/gui/JFontChooser.TextFieldKeyHandlerForListSelectionUpDown.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">JFontChooser.TextFieldKeyHandlerForListSelectionUpDown</span></a></li>\n</ul>\n</li>\n<li type=\"circle\">stanford.cs106.collections.<a href=\"stanford/cs106/collections/Lexicon.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Lexicon</span></a> (implements java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;T&gt;)</li>\n<li type=\"circle\">acm.util.<a href=\"acm/util/MediaTools.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">MediaTools</span></a></li>\n<li type=\"circle\">stanford.cs106.net.<a href=\"stanford/cs106/net/NetworkManager.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">NetworkManager</span></a></li>\n<li type=\"circle\">stanford.cs106.audio.<a href=\"stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\"><span class=\"typeNameLink\">Note</span></a></li>\n<li type=\"circle\">java.util.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true\" title=\"class or interface in java.util\"><span class=\"typeNameLink\">Observable</span></a>\n<ul>\n<li type=\"circle\">acm.gui.<a href=\"acm/gui/Event.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">Event</span></a>&lt;T&gt;</li>\n<li type=\"circle\">stanford.karel.<a href=\"stanford/karel/Event.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">Event</span></a>&lt;T&gt;</li>\n<li type=\"circle\">stanford.cs106.collections.<a href=\"stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Vertex</span></a>&lt;V&gt; (implements java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true\" title=\"class or interface in java.lang\">Cloneable</a>, java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;T&gt;)</li>\n</ul>\n</li>\n<li type=\"circle\">stanford.cs106.io.<a href=\"stanford/cs106/io/OutputCapturer.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">OutputCapturer</span></a></li>\n<li type=\"circle\">java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true\" title=\"class or interface in java.io\"><span class=\"typeNameLink\">OutputStream</span></a> (implements java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true\" title=\"class or interface in java.io\">Closeable</a>, java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Flushable.html?is-external=true\" title=\"class or interface in java.io\">Flushable</a>)\n<ul>\n<li type=\"circle\">java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FilterOutputStream.html?is-external=true\" title=\"class or interface in java.io\"><span class=\"typeNameLink\">FilterOutputStream</span></a>\n<ul>\n<li type=\"circle\">java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true\" title=\"class or interface in java.io\"><span class=\"typeNameLink\">PrintStream</span></a> (implements java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Appendable.html?is-external=true\" title=\"class or interface in java.lang\">Appendable</a>, java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true\" title=\"class or interface in java.io\">Closeable</a>)\n<ul>\n<li type=\"circle\">stanford.cs106.io.<a href=\"stanford/cs106/io/LimitedPrintStream.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">LimitedPrintStream</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li type=\"circle\">stanford.cs106.util.<a href=\"stanford/cs106/util/ProcessUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">ProcessUtils</span></a></li>\n<li type=\"circle\">java.util.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true\" title=\"class or interface in java.util\"><span class=\"typeNameLink\">Random</span></a> (implements java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">acm.util.<a href=\"acm/util/RandomGenerator.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">RandomGenerator</span></a>\n<ul>\n<li type=\"circle\">stanford.cs106.util.<a href=\"stanford/cs106/util/RandomGenerator.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">RandomGenerator</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li type=\"circle\">stanford.cs106.util.<a href=\"stanford/cs106/util/RecursionUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">RecursionUtils</span></a></li>\n<li type=\"circle\">stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">ReflectionUtils</span></a></li>\n<li type=\"circle\">stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.FieldNameComparator.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">ReflectionUtils.FieldNameComparator</span></a> (implements java.util.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true\" title=\"class or interface in java.util\">Comparator</a>&lt;T&gt;)</li>\n<li type=\"circle\">stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionUtils.MethodNameComparator.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">ReflectionUtils.MethodNameComparator</span></a> (implements java.util.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true\" title=\"class or interface in java.util\">Comparator</a>&lt;T&gt;)</li>\n<li type=\"circle\">stanford.cs106.net.<a href=\"stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">Request</span></a></li>\n<li type=\"circle\">stanford.cs106.io.<a href=\"stanford/cs106/io/ResourceUtils.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">ResourceUtils</span></a></li>\n<li type=\"circle\">stanford.cs106.net.<a href=\"stanford/cs106/net/SimpleClient.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">SimpleClient</span></a></li>\n<li type=\"circle\">acm.io.<a href=\"acm/io/SimpleScanner.html\" title=\"class in acm.io\"><span class=\"typeNameLink\">SimpleScanner</span></a></li>\n<li type=\"circle\">stanford.cs106.net.<a href=\"stanford/cs106/net/SimpleServer.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">SimpleServer</span></a></li>\n<li type=\"circle\">acm.util.<a href=\"acm/util/SoundClip.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">SoundClip</span></a> (implements java.applet.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AudioClip.html?is-external=true\" title=\"class or interface in java.applet\">AudioClip</a>)</li>\n<li type=\"circle\">stanford.cs106.audio.<a href=\"stanford/cs106/audio/SplClip.html\" title=\"class in stanford.cs106.audio\"><span class=\"typeNameLink\">SplClip</span></a> (implements java.applet.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AudioClip.html?is-external=true\" title=\"class or interface in java.applet\">AudioClip</a>, javazoom.jlgui.basicplayer.BasicPlayerListener, java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a>)</li>\n<li type=\"circle\">acm.io.<a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\"><span class=\"typeNameLink\">StandardConsoleModel</span></a> (implements acm.io.<a href=\"acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>)</li>\n<li type=\"circle\">stanford.cs106.util.<a href=\"stanford/cs106/util/Stanford.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Stanford</span></a></li>\n<li type=\"circle\">stanford.cs106.audio.<a href=\"stanford/cs106/audio/StdAudio.html\" title=\"class in stanford.cs106.audio\"><span class=\"typeNameLink\">StdAudio</span></a></li>\n<li type=\"circle\">stanford.cs106.audio.<a href=\"stanford/cs106/audio/StdAudio.AudioEvent.html\" title=\"class in stanford.cs106.audio\"><span class=\"typeNameLink\">StdAudio.AudioEvent</span></a></li>\n<li type=\"circle\">stanford.cs106.util.<a href=\"stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">StringUtils</span></a></li>\n<li type=\"circle\">acm.io.<a href=\"acm/io/SystemConsoleModel.html\" title=\"class in acm.io\"><span class=\"typeNameLink\">SystemConsoleModel</span></a> (implements acm.io.<a href=\"acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a>)</li>\n<li type=\"circle\">stanford.cs106.util.<a href=\"stanford/cs106/util/SystemProperties.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">SystemProperties</span></a></li>\n<li type=\"circle\">acm.gui.<a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">TableLayout</span></a> (implements java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/LayoutManager2.html?is-external=true\" title=\"class or interface in java.awt\">LayoutManager2</a>, java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)</li>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Throwable</span></a> (implements java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Error.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Error</span></a>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/AssertionError.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">AssertionError</span></a>\n<ul>\n<li type=\"circle\">org.junit.ComparisonFailure\n<ul>\n<li type=\"circle\">stanford.cs106.junit.<a href=\"stanford/cs106/junit/ComparisonFailureEnhanced.html\" title=\"class in stanford.cs106.junit\"><span class=\"typeNameLink\">ComparisonFailureEnhanced</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Exception</span></a>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">RuntimeException</span></a>\n<ul>\n<li type=\"circle\">stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/CompilerErrorException.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">CompilerErrorException</span></a></li>\n<li type=\"circle\">acm.util.<a href=\"acm/util/ErrorException.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">ErrorException</span></a></li>\n<li type=\"circle\">stanford.cs106.io.<a href=\"stanford/cs106/io/IORuntimeException.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">IORuntimeException</span></a>\n<ul>\n<li type=\"circle\">stanford.cs106.net.<a href=\"stanford/cs106/net/SimpleServer.SimpleServerException.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">SimpleServer.SimpleServerException</span></a></li>\n</ul>\n</li>\n<li type=\"circle\">stanford.cs106.io.<a href=\"stanford/cs106/io/LimitedPrintStream.ExcessiveOutputException.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">LimitedPrintStream.ExcessiveOutputException</span></a></li>\n<li type=\"circle\">stanford.cs106.reflect.<a href=\"stanford/cs106/reflect/ReflectionRuntimeException.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">ReflectionRuntimeException</span></a></li>\n<li type=\"circle\">stanford.cs106.util.<a href=\"stanford/cs106/util/XmlUtils.XmlRuntimeException.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">XmlUtils.XmlRuntimeException</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li type=\"circle\">stanford.cs106.gui.<a href=\"stanford/cs106/gui/WindowCloseKeyListener.html\" title=\"class in stanford.cs106.gui\"><span class=\"typeNameLink\">WindowCloseKeyListener</span></a> (implements java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>)</li>\n<li type=\"circle\">stanford.cs106.util.<a href=\"stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">XmlUtils</span></a></li>\n</ul>\n</li>\n</ul>\n<h2 title=\"Interface Hierarchy\">Interface Hierarchy</h2>\n<ul>\n<li type=\"circle\">acm.io.<a href=\"acm/io/ConsoleModel.html\" title=\"interface in acm.io\"><span class=\"typeNameLink\">ConsoleModel</span></a></li>\n<li type=\"circle\">java.util.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\"><span class=\"typeNameLink\">EventListener</span></a>\n<ul>\n<li type=\"circle\">java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\"><span class=\"typeNameLink\">MouseListener</span></a>\n<ul>\n<li type=\"circle\">acm.program.<a href=\"acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\"><span class=\"typeNameLink\">GraphicsProgramInterface</span></a> (also extends acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a>, acm.program.<a href=\"acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a>)</li>\n</ul>\n</li>\n<li type=\"circle\">java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\"><span class=\"typeNameLink\">MouseMotionListener</span></a>\n<ul>\n<li type=\"circle\">acm.program.<a href=\"acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\"><span class=\"typeNameLink\">GraphicsProgramInterface</span></a> (also extends acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>, acm.program.<a href=\"acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a>)</li>\n</ul>\n</li>\n</ul>\n</li>\n<li type=\"circle\">acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\"><span class=\"typeNameLink\">GCanvasInterface</span></a>\n<ul>\n<li type=\"circle\">acm.program.<a href=\"acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\"><span class=\"typeNameLink\">GraphicsProgramInterface</span></a> (also extends java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a>, acm.program.<a href=\"acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a>)</li>\n</ul>\n</li>\n<li type=\"circle\">acm.graphics.<a href=\"acm/graphics/GContainer.html\" title=\"interface in acm.graphics\"><span class=\"typeNameLink\">GContainer</span></a></li>\n<li type=\"circle\">stanford.cs106.collections.<a href=\"stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\"><span class=\"typeNameLink\">Graph</span></a>&lt;V,E&gt;</li>\n<li type=\"circle\">acm.graphics.<a href=\"acm/graphics/GResizable.html\" title=\"interface in acm.graphics\"><span class=\"typeNameLink\">GResizable</span></a></li>\n<li type=\"circle\">acm.graphics.<a href=\"acm/graphics/GScalable.html\" title=\"interface in acm.graphics\"><span class=\"typeNameLink\">GScalable</span></a></li>\n<li type=\"circle\">stanford.cs106.junit.<a href=\"stanford/cs106/junit/JUnitListener.html\" title=\"interface in stanford.cs106.junit\"><span class=\"typeNameLink\">JUnitListener</span></a></li>\n<li type=\"circle\">stanford.karel.<a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\"><span class=\"typeNameLink\">KarelInterface</span></a></li>\n<li type=\"circle\">stanford.cs106.collections.<a href=\"stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\"><span class=\"typeNameLink\">Multimap</span></a>&lt;K,V&gt;</li>\n<li type=\"circle\">acm.program.<a href=\"acm/program/ProgramInterface.html\" title=\"interface in acm.program\"><span class=\"typeNameLink\">ProgramInterface</span></a>\n<ul>\n<li type=\"circle\">acm.program.<a href=\"acm/program/GraphicsProgramInterface.html\" title=\"interface in acm.program\"><span class=\"typeNameLink\">GraphicsProgramInterface</span></a> (also extends acm.graphics.<a href=\"acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a>)</li>\n</ul>\n</li>\n<li type=\"circle\">acm.program.<a href=\"acm/program/ProgramStartupFlags.html\" title=\"interface in acm.program\"><span class=\"typeNameLink\">ProgramStartupFlags</span></a></li>\n<li type=\"circle\">stanford.cs106.gui.<a href=\"stanford/cs106/gui/ResizeListener.html\" title=\"interface in stanford.cs106.gui\"><span class=\"typeNameLink\">ResizeListener</span></a></li>\n<li type=\"circle\">stanford.cs106.net.<a href=\"stanford/cs106/net/SimpleServerListener.html\" title=\"interface in stanford.cs106.net\"><span class=\"typeNameLink\">SimpleServerListener</span></a></li>\n<li type=\"circle\">stanford.cs106.audio.<a href=\"stanford/cs106/audio/StdAudio.AudioEventListener.html\" title=\"interface in stanford.cs106.audio\"><span class=\"typeNameLink\">StdAudio.AudioEventListener</span></a></li>\n<li type=\"circle\">stanford.cs106.collections.<a href=\"stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\"><span class=\"typeNameLink\">Table</span></a>&lt;R,C,V&gt;</li>\n</ul>\n<h2 title=\"Annotation Type Hierarchy\">Annotation Type Hierarchy</h2>\n<ul>\n<li type=\"circle\">stanford.cs106.junit.<a href=\"stanford/cs106/junit/TestCategory.html\" title=\"annotation in stanford.cs106.junit\"><span class=\"typeNameLink\">TestCategory</span></a> (implements java.lang.annotation.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true\" title=\"class or interface in java.lang.annotation\">Annotation</a>)</li>\n</ul>\n<h2 title=\"Enum Hierarchy\">Enum Hierarchy</h2>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Object</span></a>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Enum</span></a>&lt;E&gt; (implements java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;T&gt;, java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">stanford.karel.<a href=\"stanford/karel/KarelDirection.html\" title=\"enum in stanford.karel\"><span class=\"typeNameLink\">KarelDirection</span></a></li>\n<li type=\"circle\">stanford.karel.<a href=\"stanford/karel/KarelProgram.State.html\" title=\"enum in stanford.karel\"><span class=\"typeNameLink\">KarelProgram.State</span></a></li>\n<li type=\"circle\">stanford.cs106.audio.<a href=\"stanford/cs106/audio/Accidental.html\" title=\"enum in stanford.cs106.audio\"><span class=\"typeNameLink\">Accidental</span></a></li>\n<li type=\"circle\">stanford.cs106.audio.<a href=\"stanford/cs106/audio/Pitch.html\" title=\"enum in stanford.cs106.audio\"><span class=\"typeNameLink\">Pitch</span></a></li>\n<li type=\"circle\">stanford.cs106.audio.<a href=\"stanford/cs106/audio/StdAudio.AudioEvent.Type.html\" title=\"enum in stanford.cs106.audio\"><span class=\"typeNameLink\">StdAudio.AudioEvent.Type</span></a></li>\n<li type=\"circle\">stanford.cs106.collections.<a href=\"stanford/cs106/collections/GraphColor.html\" title=\"enum in stanford.cs106.collections\"><span class=\"typeNameLink\">GraphColor</span></a></li>\n<li type=\"circle\">stanford.cs106.collections.<a href=\"stanford/cs106/collections/Vertex.Event.html\" title=\"enum in stanford.cs106.collections\"><span class=\"typeNameLink\">Vertex.Event</span></a></li>\n<li type=\"circle\">stanford.cs106.junit.<a href=\"stanford/cs106/junit/UnitTestType.html\" title=\"enum in stanford.cs106.junit\"><span class=\"typeNameLink\">UnitTestType</span></a></li>\n<li type=\"circle\">stanford.cs106.util.<a href=\"stanford/cs106/util/OperatingSystem.html\" title=\"enum in stanford.cs106.util\"><span class=\"typeNameLink\">OperatingSystem</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"overview-summary.html\">Overview</a></li>\n<li>Package</li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"index-all.html\">Index</a></li>\n<li><a href=\"help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev</li>\n<li>Next</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"index.html?overview-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"overview-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/package-list",
    "content": "acm.graphics\nacm.gui\nacm.io\nacm.program\nacm.util\nstanford.cs106.audio\nstanford.cs106.collections\nstanford.cs106.gui\nstanford.cs106.io\nstanford.cs106.junit\nstanford.cs106.net\nstanford.cs106.reflect\nstanford.cs106.util\nstanford.karel\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/script.js",
    "content": "function show(type)\n{\n    count = 0;\n    for (var key in methods) {\n        var row = document.getElementById(key);\n        if ((methods[key] &  type) != 0) {\n            row.style.display = '';\n            row.className = (count++ % 2) ? rowColor : altColor;\n        }\n        else\n            row.style.display = 'none';\n    }\n    updateTabs(type);\n}\n\nfunction updateTabs(type)\n{\n    for (var value in tabs) {\n        var sNode = document.getElementById(tabs[value][0]);\n        var spanNode = sNode.firstChild;\n        if (value == type) {\n            sNode.className = activeTableTab;\n            spanNode.innerHTML = tabs[value][1];\n        }\n        else {\n            sNode.className = tableTab;\n            spanNode.innerHTML = \"<a href=\\\"javascript:show(\"+ value + \");\\\">\" + tabs[value][1] + \"</a>\";\n        }\n    }\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/serialized-form.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>Serialized Form</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"Serialized Form\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"overview-summary.html\">Overview</a></li>\n<li>Package</li>\n<li>Class</li>\n<li><a href=\"overview-tree.html\">Tree</a></li>\n<li><a href=\"deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"index-all.html\">Index</a></li>\n<li><a href=\"help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev</li>\n<li>Next</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"index.html?serialized-form.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"serialized-form.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 title=\"Serialized Form\" class=\"title\">Serialized Form</h1>\n</div>\n<div class=\"serializedFormContainer\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h2 title=\"Package\">Package&nbsp;acm.graphics</h2>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"acm.graphics.G3DRect\">\n<!--   -->\n</a>\n<h3>Class <a href=\"acm/graphics/G3DRect.html\" title=\"class in acm.graphics\">acm.graphics.G3DRect</a> extends acm.graphics.GRect implements Serializable</h3>\n<dl class=\"nameValue\">\n<dt>serialVersionUID:</dt>\n<dd>21L</dd>\n</dl>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockListLast\">\n<h4>isRaised</h4>\n<pre>boolean isRaised</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\"><a name=\"acm.graphics.GArc\">\n<!--   -->\n</a>\n<h3>Class acm.graphics.GArc extends <a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a> implements Serializable</h3>\n<dl class=\"nameValue\">\n<dt>serialVersionUID:</dt>\n<dd>21L</dd>\n</dl>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>frameWidth</h4>\n<pre>double frameWidth</pre>\n</li>\n<li class=\"blockList\">\n<h4>frameHeight</h4>\n<pre>double frameHeight</pre>\n</li>\n<li class=\"blockList\">\n<h4>arcStart</h4>\n<pre>double arcStart</pre>\n</li>\n<li class=\"blockList\">\n<h4>arcSweep</h4>\n<pre>double arcSweep</pre>\n</li>\n<li class=\"blockList\">\n<h4>fillColor</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> fillColor</pre>\n</li>\n<li class=\"blockListLast\">\n<h4>isFilled</h4>\n<pre>boolean isFilled</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\"><a name=\"acm.graphics.GCanvas\">\n<!--   -->\n</a>\n<h3>Class <a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">acm.graphics.GCanvas</a> extends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a> implements Serializable</h3>\n<dl class=\"nameValue\">\n<dt>serialVersionUID:</dt>\n<dd>0L</dd>\n</dl>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>gCanvasListener</h4>\n<pre>acm.graphics.GCanvas.GCanvasListener gCanvasListener</pre>\n</li>\n<li class=\"blockList\">\n<h4>lastObject</h4>\n<pre><a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a> lastObject</pre>\n</li>\n<li class=\"blockList\">\n<h4>dragObject</h4>\n<pre><a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a> dragObject</pre>\n</li>\n<li class=\"blockList\">\n<h4>contents</h4>\n<pre>acm.graphics.GObjectList contents</pre>\n</li>\n<li class=\"blockList\">\n<h4>bufferedImage</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/BufferedImage.html?is-external=true\" title=\"class or interface in java.awt.image\">BufferedImage</a> bufferedImage</pre>\n</li>\n<li class=\"blockList\">\n<h4>bufferedImage2</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/BufferedImage.html?is-external=true\" title=\"class or interface in java.awt.image\">BufferedImage</a> bufferedImage2</pre>\n</li>\n<li class=\"blockList\">\n<h4>osg</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics2D.html?is-external=true\" title=\"class or interface in java.awt\">Graphics2D</a> osg</pre>\n</li>\n<li class=\"blockList\">\n<h4>antialias</h4>\n<pre>boolean antialias</pre>\n</li>\n<li class=\"blockList\">\n<h4>autoRepaint</h4>\n<pre>boolean autoRepaint</pre>\n</li>\n<li class=\"blockList\">\n<h4>nativeArcFlag</h4>\n<pre>boolean nativeArcFlag</pre>\n</li>\n<li class=\"blockList\">\n<h4>showPixelGrid</h4>\n<pre>boolean showPixelGrid</pre>\n</li>\n<li class=\"blockList\">\n<h4>showPixelInfo</h4>\n<pre>boolean showPixelInfo</pre>\n</li>\n<li class=\"blockListLast\">\n<h4>lastMousePoint</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a> lastMousePoint</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\"><a name=\"acm.graphics.GCompound\">\n<!--   -->\n</a>\n<h3>Class <a href=\"acm/graphics/GCompound.html\" title=\"class in acm.graphics\">acm.graphics.GCompound</a> extends <a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a> implements Serializable</h3>\n<dl class=\"nameValue\">\n<dt>serialVersionUID:</dt>\n<dd>1L</dd>\n</dl>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>complete</h4>\n<pre>boolean complete</pre>\n</li>\n<li class=\"blockList\">\n<h4>contents</h4>\n<pre>acm.graphics.GObjectList contents</pre>\n</li>\n<li class=\"blockList\">\n<h4>lastObject</h4>\n<pre><a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a> lastObject</pre>\n</li>\n<li class=\"blockListLast\">\n<h4>dragObject</h4>\n<pre><a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a> dragObject</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\"><a name=\"acm.graphics.GDimension\">\n<!--   -->\n</a>\n<h3>Class acm.graphics.GDimension extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a> implements Serializable</h3>\n<dl class=\"nameValue\">\n<dt>serialVersionUID:</dt>\n<dd>21L</dd>\n</dl>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>width</h4>\n<pre>double width</pre>\n</li>\n<li class=\"blockListLast\">\n<h4>height</h4>\n<pre>double height</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\"><a name=\"acm.graphics.GImage\">\n<!--   -->\n</a>\n<h3>Class <a href=\"acm/graphics/GImage.html\" title=\"class in acm.graphics\">acm.graphics.GImage</a> extends <a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a> implements Serializable</h3>\n<dl class=\"nameValue\">\n<dt>serialVersionUID:</dt>\n<dd>1L</dd>\n</dl>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>myImage</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a> myImage</pre>\n</li>\n<li class=\"blockList\">\n<h4>myWidth</h4>\n<pre>double myWidth</pre>\n</li>\n<li class=\"blockList\">\n<h4>myHeight</h4>\n<pre>double myHeight</pre>\n</li>\n<li class=\"blockListLast\">\n<h4>sizeDetermined</h4>\n<pre>boolean sizeDetermined</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\"><a name=\"acm.graphics.GLabel\">\n<!--   -->\n</a>\n<h3>Class <a href=\"acm/graphics/GLabel.html\" title=\"class in acm.graphics\">acm.graphics.GLabel</a> extends <a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a> implements Serializable</h3>\n<dl class=\"nameValue\">\n<dt>serialVersionUID:</dt>\n<dd>1L</dd>\n</dl>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>label</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> label</pre>\n</li>\n<li class=\"blockListLast\">\n<h4>labelFont</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a> labelFont</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\"><a name=\"acm.graphics.GLine\">\n<!--   -->\n</a>\n<h3>Class <a href=\"acm/graphics/GLine.html\" title=\"class in acm.graphics\">acm.graphics.GLine</a> extends <a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a> implements Serializable</h3>\n<dl class=\"nameValue\">\n<dt>serialVersionUID:</dt>\n<dd>1L</dd>\n</dl>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>dx</h4>\n<pre>double dx</pre>\n</li>\n<li class=\"blockListLast\">\n<h4>dy</h4>\n<pre>double dy</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\"><a name=\"acm.graphics.GLineGroup\">\n<!--   -->\n</a>\n<h3>Class <a href=\"acm/graphics/GLineGroup.html\" title=\"class in acm.graphics\">acm.graphics.GLineGroup</a> extends <a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a> implements Serializable</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockListLast\">\n<h4>points</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">E</a>&gt; points</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\"><a name=\"acm.graphics.GObject\">\n<!--   -->\n</a>\n<h3>Class <a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">acm.graphics.GObject</a> extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a> implements Serializable</h3>\n<dl class=\"nameValue\">\n<dt>serialVersionUID:</dt>\n<dd>21L</dd>\n</dl>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>compoundParent</h4>\n<pre><a href=\"acm/graphics/GCompound.html\" title=\"class in acm.graphics\">GCompound</a> compoundParent</pre>\n</li>\n<li class=\"blockList\">\n<h4>matrix</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/geom/AffineTransform.html?is-external=true\" title=\"class or interface in java.awt.geom\">AffineTransform</a> matrix</pre>\n</li>\n<li class=\"blockList\">\n<h4>objectColor</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> objectColor</pre>\n</li>\n<li class=\"blockList\">\n<h4>lineWidth</h4>\n<pre>double lineWidth</pre>\n</li>\n<li class=\"blockList\">\n<h4>xc</h4>\n<pre>double xc</pre>\n</li>\n<li class=\"blockList\">\n<h4>yc</h4>\n<pre>double yc</pre>\n</li>\n<li class=\"blockList\">\n<h4>isVisible</h4>\n<pre>boolean isVisible</pre>\n</li>\n<li class=\"blockListLast\">\n<h4>mouseListenersEnabled</h4>\n<pre>boolean mouseListenersEnabled</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\"><a name=\"acm.graphics.GOval\">\n<!--   -->\n</a>\n<h3>Class <a href=\"acm/graphics/GOval.html\" title=\"class in acm.graphics\">acm.graphics.GOval</a> extends <a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a> implements Serializable</h3>\n<dl class=\"nameValue\">\n<dt>serialVersionUID:</dt>\n<dd>21L</dd>\n</dl>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>frameWidth</h4>\n<pre>double frameWidth</pre>\n</li>\n<li class=\"blockList\">\n<h4>frameHeight</h4>\n<pre>double frameHeight</pre>\n</li>\n<li class=\"blockList\">\n<h4>isFilled</h4>\n<pre>boolean isFilled</pre>\n</li>\n<li class=\"blockListLast\">\n<h4>fillColor</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> fillColor</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\"><a name=\"acm.graphics.GPen\">\n<!--   -->\n</a>\n<h3>Class acm.graphics.GPen extends <a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a> implements Serializable</h3>\n<dl class=\"nameValue\">\n<dt>serialVersionUID:</dt>\n<dd>21L</dd>\n</dl>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>animator</h4>\n<pre>acm.util.Animator animator</pre>\n</li>\n<li class=\"blockList\">\n<h4>regionOpen</h4>\n<pre>boolean regionOpen</pre>\n</li>\n<li class=\"blockList\">\n<h4>regionStarted</h4>\n<pre>boolean regionStarted</pre>\n</li>\n<li class=\"blockList\">\n<h4>penVisible</h4>\n<pre>boolean penVisible</pre>\n</li>\n<li class=\"blockList\">\n<h4>path</h4>\n<pre>acm.graphics.PathList path</pre>\n</li>\n<li class=\"blockList\">\n<h4>penImage</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a> penImage</pre>\n</li>\n<li class=\"blockListLast\">\n<h4>fillColor</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> fillColor</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\"><a name=\"acm.graphics.GPoint\">\n<!--   -->\n</a>\n<h3>Class <a href=\"acm/graphics/GPoint.html\" title=\"class in acm.graphics\">acm.graphics.GPoint</a> extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a> implements Serializable</h3>\n<dl class=\"nameValue\">\n<dt>serialVersionUID:</dt>\n<dd>1L</dd>\n</dl>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>xc</h4>\n<pre>double xc</pre>\n</li>\n<li class=\"blockListLast\">\n<h4>yc</h4>\n<pre>double yc</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\"><a name=\"acm.graphics.GPolygon\">\n<!--   -->\n</a>\n<h3>Class acm.graphics.GPolygon extends <a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a> implements Serializable</h3>\n<dl class=\"nameValue\">\n<dt>serialVersionUID:</dt>\n<dd>21L</dd>\n</dl>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>vertices</h4>\n<pre>acm.graphics.VertexList vertices</pre>\n</li>\n<li class=\"blockList\">\n<h4>complete</h4>\n<pre>boolean complete</pre>\n</li>\n<li class=\"blockList\">\n<h4>isFilled</h4>\n<pre>boolean isFilled</pre>\n</li>\n<li class=\"blockListLast\">\n<h4>fillColor</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> fillColor</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\"><a name=\"acm.graphics.GRect\">\n<!--   -->\n</a>\n<h3>Class acm.graphics.GRect extends <a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a> implements Serializable</h3>\n<dl class=\"nameValue\">\n<dt>serialVersionUID:</dt>\n<dd>21L</dd>\n</dl>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>frameWidth</h4>\n<pre>double frameWidth</pre>\n</li>\n<li class=\"blockList\">\n<h4>frameHeight</h4>\n<pre>double frameHeight</pre>\n</li>\n<li class=\"blockList\">\n<h4>isFilled</h4>\n<pre>boolean isFilled</pre>\n</li>\n<li class=\"blockListLast\">\n<h4>fillColor</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> fillColor</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\"><a name=\"acm.graphics.GRectangle\">\n<!--   -->\n</a>\n<h3>Class <a href=\"acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">acm.graphics.GRectangle</a> extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a> implements Serializable</h3>\n<dl class=\"nameValue\">\n<dt>serialVersionUID:</dt>\n<dd>1L</dd>\n</dl>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>xc</h4>\n<pre>double xc</pre>\n</li>\n<li class=\"blockList\">\n<h4>yc</h4>\n<pre>double yc</pre>\n</li>\n<li class=\"blockList\">\n<h4>myWidth</h4>\n<pre>double myWidth</pre>\n</li>\n<li class=\"blockListLast\">\n<h4>myHeight</h4>\n<pre>double myHeight</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\"><a name=\"acm.graphics.GRoundRect\">\n<!--   -->\n</a>\n<h3>Class acm.graphics.GRoundRect extends acm.graphics.GRect implements Serializable</h3>\n<dl class=\"nameValue\">\n<dt>serialVersionUID:</dt>\n<dd>21L</dd>\n</dl>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>aWidth</h4>\n<pre>double aWidth</pre>\n</li>\n<li class=\"blockListLast\">\n<h4>aHeight</h4>\n<pre>double aHeight</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\"><a name=\"acm.graphics.GTurtle\">\n<!--   -->\n</a>\n<h3>Class acm.graphics.GTurtle extends <a href=\"acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a> implements Serializable</h3>\n<dl class=\"nameValue\">\n<dt>serialVersionUID:</dt>\n<dd>21L</dd>\n</dl>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>pen</h4>\n<pre>acm.graphics.GPen pen</pre>\n</li>\n<li class=\"blockList\">\n<h4>direction</h4>\n<pre>double direction</pre>\n</li>\n<li class=\"blockList\">\n<h4>penDown</h4>\n<pre>boolean penDown</pre>\n</li>\n<li class=\"blockList\">\n<h4>turtleVisible</h4>\n<pre>boolean turtleVisible</pre>\n</li>\n<li class=\"blockListLast\">\n<h4>turtleSize</h4>\n<pre>int turtleSize</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\">\n<h2 title=\"Package\">Package&nbsp;acm.gui</h2>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"acm.gui.DoubleField\">\n<!--   -->\n</a>\n<h3>Class <a href=\"acm/gui/DoubleField.html\" title=\"class in acm.gui\">acm.gui.DoubleField</a> extends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField</a> implements Serializable</h3>\n<dl class=\"nameValue\">\n<dt>serialVersionUID:</dt>\n<dd>1L</dd>\n</dl>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>exceptionOnError</h4>\n<pre>boolean exceptionOnError</pre>\n</li>\n<li class=\"blockList\">\n<h4>minValue</h4>\n<pre>double minValue</pre>\n</li>\n<li class=\"blockList\">\n<h4>maxValue</h4>\n<pre>double maxValue</pre>\n</li>\n<li class=\"blockList\">\n<h4>formatString</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> formatString</pre>\n</li>\n<li class=\"blockList\">\n<h4>formatter</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/text/DecimalFormat.html?is-external=true\" title=\"class or interface in java.text\">DecimalFormat</a> formatter</pre>\n</li>\n<li class=\"blockList\">\n<h4>parser</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/text/NumberFormat.html?is-external=true\" title=\"class or interface in java.text\">NumberFormat</a> parser</pre>\n</li>\n<li class=\"blockListLast\">\n<h4>dialog</h4>\n<pre>acm.io.IODialog dialog</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\"><a name=\"acm.gui.HPanel\">\n<!--   -->\n</a>\n<h3>Class acm.gui.HPanel extends acm.gui.TablePanel implements Serializable</h3>\n<dl class=\"nameValue\">\n<dt>serialVersionUID:</dt>\n<dd>1L</dd>\n</dl>\n</li>\n<li class=\"blockList\"><a name=\"acm.gui.IntField\">\n<!--   -->\n</a>\n<h3>Class <a href=\"acm/gui/IntField.html\" title=\"class in acm.gui\">acm.gui.IntField</a> extends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField</a> implements Serializable</h3>\n<dl class=\"nameValue\">\n<dt>serialVersionUID:</dt>\n<dd>1L</dd>\n</dl>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>exceptionOnError</h4>\n<pre>boolean exceptionOnError</pre>\n</li>\n<li class=\"blockList\">\n<h4>minValue</h4>\n<pre>int minValue</pre>\n</li>\n<li class=\"blockList\">\n<h4>maxValue</h4>\n<pre>int maxValue</pre>\n</li>\n<li class=\"blockList\">\n<h4>formatString</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> formatString</pre>\n</li>\n<li class=\"blockList\">\n<h4>formatter</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/text/DecimalFormat.html?is-external=true\" title=\"class or interface in java.text\">DecimalFormat</a> formatter</pre>\n</li>\n<li class=\"blockList\">\n<h4>parser</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/text/NumberFormat.html?is-external=true\" title=\"class or interface in java.text\">NumberFormat</a> parser</pre>\n</li>\n<li class=\"blockListLast\">\n<h4>dialog</h4>\n<pre>acm.io.IODialog dialog</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\"><a name=\"acm.gui.JButtonGroup\">\n<!--   -->\n</a>\n<h3>Class <a href=\"acm/gui/JButtonGroup.html\" title=\"class in acm.gui\">acm.gui.JButtonGroup</a> extends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a> implements Serializable</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>group</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/ButtonGroup.html?is-external=true\" title=\"class or interface in javax.swing\">ButtonGroup</a> group</pre>\n</li>\n<li class=\"blockList\">\n<h4>buttons</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">E</a>&gt; buttons</pre>\n</li>\n<li class=\"blockListLast\">\n<h4>vertical</h4>\n<pre>boolean vertical</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\"><a name=\"acm.gui.JFontChooser\">\n<!--   -->\n</a>\n<h3>Class <a href=\"acm/gui/JFontChooser.html\" title=\"class in acm.gui\">acm.gui.JFontChooser</a> extends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a> implements Serializable</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>dialogResultValue</h4>\n<pre>int dialogResultValue</pre>\n</li>\n<li class=\"blockList\">\n<h4>fontStyleNames</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[] fontStyleNames</pre>\n</li>\n<li class=\"blockList\">\n<h4>fontFamilyNames</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[] fontFamilyNames</pre>\n</li>\n<li class=\"blockList\">\n<h4>fontSizeStrings</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[] fontSizeStrings</pre>\n</li>\n<li class=\"blockList\">\n<h4>fontFamilyTextField</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField</a> fontFamilyTextField</pre>\n</li>\n<li class=\"blockList\">\n<h4>fontStyleTextField</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField</a> fontStyleTextField</pre>\n</li>\n<li class=\"blockList\">\n<h4>fontSizeTextField</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField</a> fontSizeTextField</pre>\n</li>\n<li class=\"blockList\">\n<h4>fontNameList</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true\" title=\"class or interface in javax.swing\">JList</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true\" title=\"class or interface in javax.swing\">E</a>&gt; fontNameList</pre>\n</li>\n<li class=\"blockList\">\n<h4>fontStyleList</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true\" title=\"class or interface in javax.swing\">JList</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true\" title=\"class or interface in javax.swing\">E</a>&gt; fontStyleList</pre>\n</li>\n<li class=\"blockList\">\n<h4>fontSizeList</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true\" title=\"class or interface in javax.swing\">JList</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true\" title=\"class or interface in javax.swing\">E</a>&gt; fontSizeList</pre>\n</li>\n<li class=\"blockList\">\n<h4>fontNamePanel</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a> fontNamePanel</pre>\n</li>\n<li class=\"blockList\">\n<h4>fontStylePanel</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a> fontStylePanel</pre>\n</li>\n<li class=\"blockList\">\n<h4>fontSizePanel</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a> fontSizePanel</pre>\n</li>\n<li class=\"blockList\">\n<h4>samplePanel</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a> samplePanel</pre>\n</li>\n<li class=\"blockListLast\">\n<h4>sampleText</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField</a> sampleText</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\"><a name=\"acm.gui.JFontChooser.DialogCancelAction\">\n<!--   -->\n</a>\n<h3>Class <a href=\"acm/gui/JFontChooser.DialogCancelAction.html\" title=\"class in acm.gui\">acm.gui.JFontChooser.DialogCancelAction</a> extends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractAction.html?is-external=true\" title=\"class or interface in javax.swing\">AbstractAction</a> implements Serializable</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockListLast\">\n<h4>dialog</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true\" title=\"class or interface in javax.swing\">JDialog</a> dialog</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\"><a name=\"acm.gui.JFontChooser.DialogOKAction\">\n<!--   -->\n</a>\n<h3>Class <a href=\"acm/gui/JFontChooser.DialogOKAction.html\" title=\"class in acm.gui\">acm.gui.JFontChooser.DialogOKAction</a> extends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractAction.html?is-external=true\" title=\"class or interface in javax.swing\">AbstractAction</a> implements Serializable</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockListLast\">\n<h4>dialog</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true\" title=\"class or interface in javax.swing\">JDialog</a> dialog</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\"><a name=\"acm.gui.JListOptionPane\">\n<!--   -->\n</a>\n<h3>Class <a href=\"acm/gui/JListOptionPane.html\" title=\"class in acm.gui\">acm.gui.JListOptionPane</a> extends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true\" title=\"class or interface in javax.swing\">JDialog</a> implements Serializable</h3>\n<dl class=\"nameValue\">\n<dt>serialVersionUID:</dt>\n<dd>0L</dd>\n</dl>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>list</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true\" title=\"class or interface in javax.swing\">JList</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true\" title=\"class or interface in javax.swing\">E</a>&gt; list</pre>\n</li>\n<li class=\"blockList\">\n<h4>ok</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JButton.html?is-external=true\" title=\"class or interface in javax.swing\">JButton</a> ok</pre>\n</li>\n<li class=\"blockList\">\n<h4>cancel</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JButton.html?is-external=true\" title=\"class or interface in javax.swing\">JButton</a> cancel</pre>\n</li>\n<li class=\"blockListLast\">\n<h4>pressedOk</h4>\n<pre>boolean pressedOk</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\"><a name=\"acm.gui.JPlaceholderTextField\">\n<!--   -->\n</a>\n<h3>Class <a href=\"acm/gui/JPlaceholderTextField.html\" title=\"class in acm.gui\">acm.gui.JPlaceholderTextField</a> extends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField</a> implements Serializable</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>placeholder</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> placeholder</pre>\n</li>\n<li class=\"blockListLast\">\n<h4>placeholderColor</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> placeholderColor</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\"><a name=\"acm.gui.JStringList\">\n<!--   -->\n</a>\n<h3>Class <a href=\"acm/gui/JStringList.html\" title=\"class in acm.gui\">acm.gui.JStringList</a> extends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html?is-external=true\" title=\"class or interface in javax.swing\">JList</a> implements Serializable</h3>\n<dl class=\"nameValue\">\n<dt>serialVersionUID:</dt>\n<dd>0L</dd>\n</dl>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>colorsList</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">E</a>&gt; colorsList</pre>\n</li>\n<li class=\"blockList\">\n<h4>listeners</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">E</a>&gt; listeners</pre>\n</li>\n<li class=\"blockListLast\">\n<h4>actionCommand</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> actionCommand</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\"><a name=\"acm.gui.TableConstraints\">\n<!--   -->\n</a>\n<h3>Class acm.gui.TableConstraints extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/GridBagConstraints.html?is-external=true\" title=\"class or interface in java.awt\">GridBagConstraints</a> implements Serializable</h3>\n<dl class=\"nameValue\">\n<dt>serialVersionUID:</dt>\n<dd>1L</dd>\n</dl>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>width</h4>\n<pre>int width</pre>\n</li>\n<li class=\"blockListLast\">\n<h4>height</h4>\n<pre>int height</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\"><a name=\"acm.gui.TableLayout\">\n<!--   -->\n</a>\n<h3>Class <a href=\"acm/gui/TableLayout.html\" title=\"class in acm.gui\">acm.gui.TableLayout</a> extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a> implements Serializable</h3>\n<dl class=\"nameValue\">\n<dt>serialVersionUID:</dt>\n<dd>1L</dd>\n</dl>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>constraintTable</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true\" title=\"class or interface in java.util\">HashMap</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true\" title=\"class or interface in java.util\">K</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true\" title=\"class or interface in java.util\">V</a>&gt; constraintTable</pre>\n</li>\n<li class=\"blockList\">\n<h4>layoutTable</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true\" title=\"class or interface in java.util\">HashMap</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true\" title=\"class or interface in java.util\">K</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true\" title=\"class or interface in java.util\">V</a>&gt; layoutTable</pre>\n</li>\n<li class=\"blockList\">\n<h4>propertyTable</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true\" title=\"class or interface in java.util\">HashMap</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true\" title=\"class or interface in java.util\">K</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true\" title=\"class or interface in java.util\">V</a>&gt; propertyTable</pre>\n</li>\n<li class=\"blockList\">\n<h4>useStrictGridBagModel</h4>\n<pre>boolean useStrictGridBagModel</pre>\n</li>\n<li class=\"blockList\">\n<h4>nRows</h4>\n<pre>int nRows</pre>\n</li>\n<li class=\"blockList\">\n<h4>nColumns</h4>\n<pre>int nColumns</pre>\n</li>\n<li class=\"blockList\">\n<h4>horizontalAlignment</h4>\n<pre>int horizontalAlignment</pre>\n</li>\n<li class=\"blockList\">\n<h4>verticalAlignment</h4>\n<pre>int verticalAlignment</pre>\n</li>\n<li class=\"blockList\">\n<h4>defaultFill</h4>\n<pre>int defaultFill</pre>\n</li>\n<li class=\"blockList\">\n<h4>hGap</h4>\n<pre>int hGap</pre>\n</li>\n<li class=\"blockListLast\">\n<h4>vGap</h4>\n<pre>int vGap</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\"><a name=\"acm.gui.TablePanel\">\n<!--   -->\n</a>\n<h3>Class acm.gui.TablePanel extends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a> implements Serializable</h3>\n<dl class=\"nameValue\">\n<dt>serialVersionUID:</dt>\n<dd>1L</dd>\n</dl>\n</li>\n<li class=\"blockList\"><a name=\"acm.gui.VPanel\">\n<!--   -->\n</a>\n<h3>Class acm.gui.VPanel extends acm.gui.TablePanel implements Serializable</h3>\n<dl class=\"nameValue\">\n<dt>serialVersionUID:</dt>\n<dd>1L</dd>\n</dl>\n</li>\n</ul>\n</li>\n<li class=\"blockList\">\n<h2 title=\"Package\">Package&nbsp;acm.io</h2>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"acm.io.IOConsole\">\n<!--   -->\n</a>\n<h3>Class <a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">acm.io.IOConsole</a> extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a> implements Serializable</h3>\n<dl class=\"nameValue\">\n<dt>serialVersionUID:</dt>\n<dd>0L</dd>\n</dl>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>consoleModel</h4>\n<pre><a href=\"acm/io/ConsoleModel.html\" title=\"interface in acm.io\">ConsoleModel</a> consoleModel</pre>\n</li>\n<li class=\"blockList\">\n<h4>exceptionOnError</h4>\n<pre>boolean exceptionOnError</pre>\n</li>\n<li class=\"blockList\">\n<h4>inputColor</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> inputColor</pre>\n</li>\n<li class=\"blockList\">\n<h4>inputStyle</h4>\n<pre>int inputStyle</pre>\n</li>\n<li class=\"blockList\">\n<h4>errorColor</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> errorColor</pre>\n</li>\n<li class=\"blockList\">\n<h4>errorStyle</h4>\n<pre>int errorStyle</pre>\n</li>\n<li class=\"blockList\">\n<h4>reader</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html?is-external=true\" title=\"class or interface in java.io\">BufferedReader</a> reader</pre>\n</li>\n<li class=\"blockList\">\n<h4>writer</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintWriter.html?is-external=true\" title=\"class or interface in java.io\">PrintWriter</a> writer</pre>\n</li>\n<li class=\"blockList\">\n<h4>file</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a> file</pre>\n</li>\n<li class=\"blockList\">\n<h4>menuBar</h4>\n<pre><a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a> menuBar</pre>\n</li>\n<li class=\"blockList\">\n<h4>GETINTEGER_REPROMPT_MESSAGE</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> GETINTEGER_REPROMPT_MESSAGE</pre>\n</li>\n<li class=\"blockList\">\n<h4>GETINTEGER_DEFAULT_PROMPT</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> GETINTEGER_DEFAULT_PROMPT</pre>\n</li>\n<li class=\"blockList\">\n<h4>GETREAL_REPROMPT_MESSAGE</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> GETREAL_REPROMPT_MESSAGE</pre>\n</li>\n<li class=\"blockList\">\n<h4>GETREAL_DEFAULT_PROMPT</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> GETREAL_DEFAULT_PROMPT</pre>\n</li>\n<li class=\"blockListLast\">\n<h4>GETBOOL_REPROMPT_MESSAGE</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> GETBOOL_REPROMPT_MESSAGE</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\">\n<h2 title=\"Package\">Package&nbsp;acm.program</h2>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"acm.program.AbstractConsoleProgram\">\n<!--   -->\n</a>\n<h3>Class <a href=\"acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">acm.program.AbstractConsoleProgram</a> extends <a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a> implements Serializable</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>backgroundHasBeenSet</h4>\n<pre>boolean backgroundHasBeenSet</pre>\n</li>\n<li class=\"blockList\">\n<h4>clearEnabled</h4>\n<pre>boolean clearEnabled</pre>\n</li>\n<li class=\"blockList\">\n<h4>fontHasBeenSet</h4>\n<pre>boolean fontHasBeenSet</pre>\n</li>\n<li class=\"blockList\">\n<h4>foregroundHasBeenSet</h4>\n<pre>boolean foregroundHasBeenSet</pre>\n</li>\n<li class=\"blockListLast\">\n<h4>mouseListenersAdded</h4>\n<pre>boolean mouseListenersAdded</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\"><a name=\"acm.program.AsciiArtProgram\">\n<!--   -->\n</a>\n<h3>Class <a href=\"acm/program/AsciiArtProgram.html\" title=\"class in acm.program\">acm.program.AsciiArtProgram</a> extends <a href=\"acm/program/ConsoleProgram.html\" title=\"class in acm.program\">ConsoleProgram</a> implements Serializable</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>background</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> background</pre>\n</li>\n<li class=\"blockList\">\n<h4>fill</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> fill</pre>\n</li>\n<li class=\"blockList\">\n<h4>paint</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> paint</pre>\n</li>\n<li class=\"blockList\">\n<h4>matrix</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">K</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">V</a>&gt; matrix</pre>\n</li>\n<li class=\"blockList\">\n<h4>maxX</h4>\n<pre>int maxX</pre>\n</li>\n<li class=\"blockList\">\n<h4>maxY</h4>\n<pre>int maxY</pre>\n</li>\n<li class=\"blockList\">\n<h4>redrawAutomatically</h4>\n<pre>boolean redrawAutomatically</pre>\n</li>\n<li class=\"blockListLast\">\n<h4>sConsole</h4>\n<pre><a href=\"acm/io/StandardConsoleModel.html\" title=\"class in acm.io\">StandardConsoleModel</a> sConsole</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\"><a name=\"acm.program.ConsoleProgram\">\n<!--   -->\n</a>\n<h3>Class <a href=\"acm/program/ConsoleProgram.html\" title=\"class in acm.program\">acm.program.ConsoleProgram</a> extends <a href=\"acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a> implements Serializable</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>inputReader</h4>\n<pre>acm.program.ConsoleProgram.InputFileReader inputReader</pre>\n</li>\n<li class=\"blockList\">\n<h4>outputCapture</h4>\n<pre>boolean outputCapture</pre>\n</li>\n<li class=\"blockList\">\n<h4>inputOverride</h4>\n<pre>boolean inputOverride</pre>\n</li>\n<li class=\"blockList\">\n<h4>echoedComments</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">E</a>&gt; echoedComments</pre>\n</li>\n<li class=\"blockListLast\">\n<h4>capturedOutput</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true\" title=\"class or interface in java.lang\">StringBuilder</a> capturedOutput</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\"><a name=\"acm.program.DialogProgram\">\n<!--   -->\n</a>\n<h3>Class <a href=\"acm/program/DialogProgram.html\" title=\"class in acm.program\">acm.program.DialogProgram</a> extends <a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a> implements Serializable</h3>\n</li>\n<li class=\"blockList\"><a name=\"acm.program.GraphicsProgram\">\n<!--   -->\n</a>\n<h3>Class <a href=\"acm/program/GraphicsProgram.html\" title=\"class in acm.program\">acm.program.GraphicsProgram</a> extends <a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a> implements Serializable</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>gc</h4>\n<pre><a href=\"acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a> gc</pre>\n</li>\n<li class=\"blockList\">\n<h4>eventListener</h4>\n<pre>acm.program.GProgramListener eventListener</pre>\n</li>\n<li class=\"blockListLast\">\n<h4>listenersAdded</h4>\n<pre>boolean listenersAdded</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\"><a name=\"acm.program.Program\">\n<!--   -->\n</a>\n<h3>Class <a href=\"acm/program/Program.html\" title=\"class in acm.program\">acm.program.Program</a> extends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a> implements Serializable</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>appletStarter</h4>\n<pre>acm.program.AppletStarter appletStarter</pre>\n</li>\n<li class=\"blockList\">\n<h4>appletStub</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AppletStub.html?is-external=true\" title=\"class or interface in java.applet\">AppletStub</a> appletStub</pre>\n</li>\n<li class=\"blockList\">\n<h4>finalizers</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true\" title=\"class or interface in java.util\">ArrayList</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true\" title=\"class or interface in java.util\">E</a>&gt; finalizers</pre>\n</li>\n<li class=\"blockList\">\n<h4>animatedMode</h4>\n<pre>boolean animatedMode</pre>\n</li>\n<li class=\"blockList\">\n<h4>appletMode</h4>\n<pre>boolean appletMode</pre>\n</li>\n<li class=\"blockList\">\n<h4>exitOnClose</h4>\n<pre>boolean exitOnClose</pre>\n</li>\n<li class=\"blockList\">\n<h4>initFinished</h4>\n<pre>boolean initFinished</pre>\n</li>\n<li class=\"blockList\">\n<h4>kill</h4>\n<pre>boolean kill</pre>\n</li>\n<li class=\"blockList\">\n<h4>pauseTickFlag</h4>\n<pre>boolean pauseTickFlag</pre>\n</li>\n<li class=\"blockList\">\n<h4>shown</h4>\n<pre>boolean shown</pre>\n</li>\n<li class=\"blockList\">\n<h4>started</h4>\n<pre>boolean started</pre>\n</li>\n<li class=\"blockList\">\n<h4>eastBorder</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a> eastBorder</pre>\n</li>\n<li class=\"blockList\">\n<h4>northBorder</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a> northBorder</pre>\n</li>\n<li class=\"blockList\">\n<h4>southBorder</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a> southBorder</pre>\n</li>\n<li class=\"blockList\">\n<h4>westBorder</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a> westBorder</pre>\n</li>\n<li class=\"blockList\">\n<h4>pauseScaleFactor</h4>\n<pre>double pauseScaleFactor</pre>\n</li>\n<li class=\"blockList\">\n<h4>lastSaveFile</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a> lastSaveFile</pre>\n</li>\n<li class=\"blockList\">\n<h4>animationDelay</h4>\n<pre>int animationDelay</pre>\n</li>\n<li class=\"blockList\">\n<h4>myConsole</h4>\n<pre><a href=\"acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a> myConsole</pre>\n</li>\n<li class=\"blockList\">\n<h4>myDialog</h4>\n<pre>acm.io.IODialog myDialog</pre>\n</li>\n<li class=\"blockList\">\n<h4>inputModel</h4>\n<pre>acm.io.IOModel inputModel</pre>\n</li>\n<li class=\"blockList\">\n<h4>outputModel</h4>\n<pre>acm.io.IOModel outputModel</pre>\n</li>\n<li class=\"blockList\">\n<h4>animationTimer</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Timer.html?is-external=true\" title=\"class or interface in javax.swing\">Timer</a> animationTimer</pre>\n</li>\n<li class=\"blockList\">\n<h4>programFrame</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true\" title=\"class or interface in javax.swing\">JFrame</a> programFrame</pre>\n</li>\n<li class=\"blockList\">\n<h4>centerPanel</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a> centerPanel</pre>\n</li>\n<li class=\"blockList\">\n<h4>eastPanel</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a> eastPanel</pre>\n</li>\n<li class=\"blockList\">\n<h4>northPanel</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a> northPanel</pre>\n</li>\n<li class=\"blockList\">\n<h4>southPanel</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a> southPanel</pre>\n</li>\n<li class=\"blockList\">\n<h4>westPanel</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a> westPanel</pre>\n</li>\n<li class=\"blockList\">\n<h4>parameterTable</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">K</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">V</a>&gt; parameterTable</pre>\n</li>\n<li class=\"blockList\">\n<h4>startupObject</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a> startupObject</pre>\n</li>\n<li class=\"blockList\">\n<h4>myMenuBar</h4>\n<pre><a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a> myMenuBar</pre>\n</li>\n<li class=\"blockList\">\n<h4>programBounds</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Rectangle.html?is-external=true\" title=\"class or interface in java.awt\">Rectangle</a> programBounds</pre>\n</li>\n<li class=\"blockList\">\n<h4>myTitle</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> myTitle</pre>\n</li>\n<li class=\"blockListLast\">\n<h4>invisibleObjects</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">E</a>&gt; invisibleObjects</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\"><a name=\"acm.program.ProgramMenuBar\">\n<!--   -->\n</a>\n<h3>Class <a href=\"acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">acm.program.ProgramMenuBar</a> extends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuBar</a> implements Serializable</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>ALT_F4</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> ALT_F4</pre>\n</li>\n<li class=\"blockList\">\n<h4>COMMAND_A</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> COMMAND_A</pre>\n</li>\n<li class=\"blockList\">\n<h4>COMMAND_B</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> COMMAND_B</pre>\n</li>\n<li class=\"blockList\">\n<h4>COMMAND_C</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> COMMAND_C</pre>\n</li>\n<li class=\"blockList\">\n<h4>COMMAND_END</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> COMMAND_END</pre>\n</li>\n<li class=\"blockList\">\n<h4>COMMAND_EQUALS</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> COMMAND_EQUALS</pre>\n</li>\n<li class=\"blockList\">\n<h4>COMMAND_HOME</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> COMMAND_HOME</pre>\n</li>\n<li class=\"blockList\">\n<h4>COMMAND_I</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> COMMAND_I</pre>\n</li>\n<li class=\"blockList\">\n<h4>COMMAND_L</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> COMMAND_L</pre>\n</li>\n<li class=\"blockList\">\n<h4>COMMAND_MINUS</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> COMMAND_MINUS</pre>\n</li>\n<li class=\"blockList\">\n<h4>COMMAND_SHIFT_MINUS</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> COMMAND_SHIFT_MINUS</pre>\n</li>\n<li class=\"blockList\">\n<h4>COMMAND_P</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> COMMAND_P</pre>\n</li>\n<li class=\"blockList\">\n<h4>COMMAND_PLUS</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> COMMAND_PLUS</pre>\n</li>\n<li class=\"blockList\">\n<h4>COMMAND_SHIFT_PLUS</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> COMMAND_SHIFT_PLUS</pre>\n</li>\n<li class=\"blockList\">\n<h4>COMMAND_Q</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> COMMAND_Q</pre>\n</li>\n<li class=\"blockList\">\n<h4>COMMAND_S</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> COMMAND_S</pre>\n</li>\n<li class=\"blockList\">\n<h4>COMMAND_V</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> COMMAND_V</pre>\n</li>\n<li class=\"blockList\">\n<h4>COMMAND_W</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> COMMAND_W</pre>\n</li>\n<li class=\"blockList\">\n<h4>COMMAND_X</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> COMMAND_X</pre>\n</li>\n<li class=\"blockList\">\n<h4>CTRL_A</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> CTRL_A</pre>\n</li>\n<li class=\"blockList\">\n<h4>CTRL_B</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> CTRL_B</pre>\n</li>\n<li class=\"blockList\">\n<h4>CTRL_C</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> CTRL_C</pre>\n</li>\n<li class=\"blockList\">\n<h4>CTRL_END</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> CTRL_END</pre>\n</li>\n<li class=\"blockList\">\n<h4>CTRL_EQUALS</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> CTRL_EQUALS</pre>\n</li>\n<li class=\"blockList\">\n<h4>CTRL_HOME</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> CTRL_HOME</pre>\n</li>\n<li class=\"blockList\">\n<h4>CTRL_I</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> CTRL_I</pre>\n</li>\n<li class=\"blockList\">\n<h4>CTRL_L</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> CTRL_L</pre>\n</li>\n<li class=\"blockList\">\n<h4>CTRL_MINUS</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> CTRL_MINUS</pre>\n</li>\n<li class=\"blockList\">\n<h4>CTRL_SHIFT_MINUS</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> CTRL_SHIFT_MINUS</pre>\n</li>\n<li class=\"blockList\">\n<h4>CTRL_P</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> CTRL_P</pre>\n</li>\n<li class=\"blockList\">\n<h4>CTRL_Q</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> CTRL_Q</pre>\n</li>\n<li class=\"blockList\">\n<h4>CTRL_PLUS</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> CTRL_PLUS</pre>\n</li>\n<li class=\"blockList\">\n<h4>CTRL_SHIFT_PLUS</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> CTRL_SHIFT_PLUS</pre>\n</li>\n<li class=\"blockList\">\n<h4>CTRL_S</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> CTRL_S</pre>\n</li>\n<li class=\"blockList\">\n<h4>CTRL_V</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> CTRL_V</pre>\n</li>\n<li class=\"blockList\">\n<h4>CTRL_W</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> CTRL_W</pre>\n</li>\n<li class=\"blockList\">\n<h4>CTRL_X</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> CTRL_X</pre>\n</li>\n<li class=\"blockList\">\n<h4>DOWN_ARROW</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> DOWN_ARROW</pre>\n</li>\n<li class=\"blockList\">\n<h4>F1</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> F1</pre>\n</li>\n<li class=\"blockList\">\n<h4>PGDN</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> PGDN</pre>\n</li>\n<li class=\"blockList\">\n<h4>PGUP</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> PGUP</pre>\n</li>\n<li class=\"blockList\">\n<h4>UP_ARROW</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html?is-external=true\" title=\"class or interface in javax.swing\">KeyStroke</a> UP_ARROW</pre>\n</li>\n<li class=\"blockList\">\n<h4>program</h4>\n<pre><a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a> program</pre>\n</li>\n<li class=\"blockList\">\n<h4>menuBarListener</h4>\n<pre>acm.program.ProgramMenuBar.ProgramMenuBarListener menuBarListener</pre>\n</li>\n<li class=\"blockList\">\n<h4>focusedListener</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a> focusedListener</pre>\n</li>\n<li class=\"blockList\">\n<h4>accelerators</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true\" title=\"class or interface in java.util\">HashMap</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true\" title=\"class or interface in java.util\">K</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true\" title=\"class or interface in java.util\">V</a>&gt; accelerators</pre>\n</li>\n<li class=\"blockListLast\">\n<h4>focusedItems</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/HashSet.html?is-external=true\" title=\"class or interface in java.util\">HashSet</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/HashSet.html?is-external=true\" title=\"class or interface in java.util\">E</a>&gt; focusedItems</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\">\n<h2 title=\"Package\">Package&nbsp;acm.util</h2>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"acm.util.CancelledException\">\n<!--   -->\n</a>\n<h3>Class acm.util.CancelledException extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.html?is-external=true\" title=\"class or interface in java.lang\">RuntimeException</a> implements Serializable</h3>\n</li>\n<li class=\"blockList\"><a name=\"acm.util.ErrorException\">\n<!--   -->\n</a>\n<h3>Class <a href=\"acm/util/ErrorException.html\" title=\"class in acm.util\">acm.util.ErrorException</a> extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.html?is-external=true\" title=\"class or interface in java.lang\">RuntimeException</a> implements Serializable</h3>\n</li>\n<li class=\"blockList\"><a name=\"acm.util.RandomGenerator\">\n<!--   -->\n</a>\n<h3>Class <a href=\"acm/util/RandomGenerator.html\" title=\"class in acm.util\">acm.util.RandomGenerator</a> extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true\" title=\"class or interface in java.util\">Random</a> implements Serializable</h3>\n<dl class=\"nameValue\">\n<dt>serialVersionUID:</dt>\n<dd>1L</dd>\n</dl>\n</li>\n<li class=\"blockList\"><a name=\"acm.util.SwingTimer\">\n<!--   -->\n</a>\n<h3>Class acm.util.SwingTimer extends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Timer.html?is-external=true\" title=\"class or interface in javax.swing\">Timer</a> implements Serializable</h3>\n<dl class=\"nameValue\">\n<dt>serialVersionUID:</dt>\n<dd>1L</dd>\n</dl>\n</li>\n</ul>\n</li>\n<li class=\"blockList\">\n<h2 title=\"Package\">Package&nbsp;stanford.cs106.collections</h2>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"stanford.cs106.collections.SearchableGraph\">\n<!--   -->\n</a>\n<h3>Class stanford.cs106.collections.SearchableGraph extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a> implements Serializable</h3>\n</li>\n</ul>\n</li>\n<li class=\"blockList\">\n<h2 title=\"Package\">Package&nbsp;stanford.cs106.gui</h2>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"stanford.cs106.gui.JComboGroupBox\">\n<!--   -->\n</a>\n<h3>Class <a href=\"stanford/cs106/gui/JComboGroupBox.html\" title=\"class in stanford.cs106.gui\">stanford.cs106.gui.JComboGroupBox</a> extends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true\" title=\"class or interface in javax.swing\">JComboBox</a> implements Serializable</h3>\n</li>\n<li class=\"blockList\"><a name=\"stanford.cs106.gui.ListOptionPane\">\n<!--   -->\n</a>\n<h3>Class <a href=\"stanford/cs106/gui/ListOptionPane.html\" title=\"class in stanford.cs106.gui\">stanford.cs106.gui.ListOptionPane</a> extends <a href=\"acm/gui/JListOptionPane.html\" title=\"class in acm.gui\">JListOptionPane</a> implements Serializable</h3>\n</li>\n</ul>\n</li>\n<li class=\"blockList\">\n<h2 title=\"Package\">Package&nbsp;stanford.cs106.io</h2>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"stanford.cs106.io.IORuntimeException\">\n<!--   -->\n</a>\n<h3>Class <a href=\"stanford/cs106/io/IORuntimeException.html\" title=\"class in stanford.cs106.io\">stanford.cs106.io.IORuntimeException</a> extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.html?is-external=true\" title=\"class or interface in java.lang\">RuntimeException</a> implements Serializable</h3>\n<dl class=\"nameValue\">\n<dt>serialVersionUID:</dt>\n<dd>1L</dd>\n</dl>\n</li>\n<li class=\"blockList\"><a name=\"stanford.cs106.io.LimitedPrintStream.ExcessiveOutputException\">\n<!--   -->\n</a>\n<h3>Class <a href=\"stanford/cs106/io/LimitedPrintStream.ExcessiveOutputException.html\" title=\"class in stanford.cs106.io\">stanford.cs106.io.LimitedPrintStream.ExcessiveOutputException</a> extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.html?is-external=true\" title=\"class or interface in java.lang\">RuntimeException</a> implements Serializable</h3>\n<dl class=\"nameValue\">\n<dt>serialVersionUID:</dt>\n<dd>0L</dd>\n</dl>\n</li>\n</ul>\n</li>\n<li class=\"blockList\">\n<h2 title=\"Package\">Package&nbsp;stanford.cs106.junit</h2>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"stanford.cs106.junit.ComparisonFailureEnhanced\">\n<!--   -->\n</a>\n<h3>Class <a href=\"stanford/cs106/junit/ComparisonFailureEnhanced.html\" title=\"class in stanford.cs106.junit\">stanford.cs106.junit.ComparisonFailureEnhanced</a> extends org.junit.ComparisonFailure implements Serializable</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>type</h4>\n<pre><a href=\"stanford/cs106/junit/UnitTestType.html\" title=\"enum in stanford.cs106.junit\">UnitTestType</a> type</pre>\n</li>\n<li class=\"blockList\">\n<h4>details</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> details</pre>\n</li>\n<li class=\"blockList\">\n<h4>valueType</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> valueType</pre>\n</li>\n<li class=\"blockList\">\n<h4>expected</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> expected</pre>\n</li>\n<li class=\"blockList\">\n<h4>actual</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> actual</pre>\n</li>\n<li class=\"blockListLast\">\n<h4>message</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> message</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\">\n<h2 title=\"Package\">Package&nbsp;stanford.cs106.net</h2>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"stanford.cs106.net.SimpleServer.SimpleServerException\">\n<!--   -->\n</a>\n<h3>Class <a href=\"stanford/cs106/net/SimpleServer.SimpleServerException.html\" title=\"class in stanford.cs106.net\">stanford.cs106.net.SimpleServer.SimpleServerException</a> extends <a href=\"stanford/cs106/io/IORuntimeException.html\" title=\"class in stanford.cs106.io\">IORuntimeException</a> implements Serializable</h3>\n</li>\n</ul>\n</li>\n<li class=\"blockList\">\n<h2 title=\"Package\">Package&nbsp;stanford.cs106.reflect</h2>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"stanford.cs106.reflect.CompilerErrorException\">\n<!--   -->\n</a>\n<h3>Class <a href=\"stanford/cs106/reflect/CompilerErrorException.html\" title=\"class in stanford.cs106.reflect\">stanford.cs106.reflect.CompilerErrorException</a> extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.html?is-external=true\" title=\"class or interface in java.lang\">RuntimeException</a> implements Serializable</h3>\n</li>\n<li class=\"blockList\"><a name=\"stanford.cs106.reflect.ReflectionRuntimeException\">\n<!--   -->\n</a>\n<h3>Class <a href=\"stanford/cs106/reflect/ReflectionRuntimeException.html\" title=\"class in stanford.cs106.reflect\">stanford.cs106.reflect.ReflectionRuntimeException</a> extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.html?is-external=true\" title=\"class or interface in java.lang\">RuntimeException</a> implements Serializable</h3>\n<dl class=\"nameValue\">\n<dt>serialVersionUID:</dt>\n<dd>1L</dd>\n</dl>\n</li>\n</ul>\n</li>\n<li class=\"blockList\">\n<h2 title=\"Package\">Package&nbsp;stanford.cs106.util</h2>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"stanford.cs106.util.RandomGenerator\">\n<!--   -->\n</a>\n<h3>Class <a href=\"stanford/cs106/util/RandomGenerator.html\" title=\"class in stanford.cs106.util\">stanford.cs106.util.RandomGenerator</a> extends <a href=\"acm/util/RandomGenerator.html\" title=\"class in acm.util\">RandomGenerator</a> implements Serializable</h3>\n<dl class=\"nameValue\">\n<dt>serialVersionUID:</dt>\n<dd>0L</dd>\n</dl>\n</li>\n<li class=\"blockList\"><a name=\"stanford.cs106.util.XmlUtils.XmlRuntimeException\">\n<!--   -->\n</a>\n<h3>Class <a href=\"stanford/cs106/util/XmlUtils.XmlRuntimeException.html\" title=\"class in stanford.cs106.util\">stanford.cs106.util.XmlUtils.XmlRuntimeException</a> extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.html?is-external=true\" title=\"class or interface in java.lang\">RuntimeException</a> implements Serializable</h3>\n<dl class=\"nameValue\">\n<dt>serialVersionUID:</dt>\n<dd>0L</dd>\n</dl>\n</li>\n</ul>\n</li>\n<li class=\"blockList\">\n<h2 title=\"Package\">Package&nbsp;stanford.karel</h2>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"stanford.karel.Karel\">\n<!--   -->\n</a>\n<h3>Class <a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">stanford.karel.Karel</a> extends <a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a> implements Serializable</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>world</h4>\n<pre><a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a> world</pre>\n</li>\n<li class=\"blockList\">\n<h4>x</h4>\n<pre>int x</pre>\n</li>\n<li class=\"blockList\">\n<h4>y</h4>\n<pre>int y</pre>\n</li>\n<li class=\"blockList\">\n<h4>dir</h4>\n<pre>int dir</pre>\n</li>\n<li class=\"blockListLast\">\n<h4>beepers</h4>\n<pre>int beepers</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\"><a name=\"stanford.karel.KarelControlPanel\">\n<!--   -->\n</a>\n<h3>Class <a href=\"stanford/karel/KarelControlPanel.html\" title=\"class in stanford.karel\">stanford.karel.KarelControlPanel</a> extends stanford.karel.CardPanel implements Serializable</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>program</h4>\n<pre><a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a> program</pre>\n</li>\n<li class=\"blockList\">\n<h4>world</h4>\n<pre><a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a> world</pre>\n</li>\n<li class=\"blockList\">\n<h4>editor</h4>\n<pre>stanford.karel.KarelWorldEditor editor</pre>\n</li>\n<li class=\"blockList\">\n<h4>resizer</h4>\n<pre>stanford.karel.KarelResizer resizer</pre>\n</li>\n<li class=\"blockList\">\n<h4>buttonPanel</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a> buttonPanel</pre>\n</li>\n<li class=\"blockList\">\n<h4>editorPanel</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a> editorPanel</pre>\n</li>\n<li class=\"blockList\">\n<h4>resizePanel</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a> resizePanel</pre>\n</li>\n<li class=\"blockList\">\n<h4>startButton</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JButton.html?is-external=true\" title=\"class or interface in javax.swing\">JButton</a> startButton</pre>\n</li>\n<li class=\"blockList\">\n<h4>resetButton</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JButton.html?is-external=true\" title=\"class or interface in javax.swing\">JButton</a> resetButton</pre>\n</li>\n<li class=\"blockList\">\n<h4>loadWorldButton</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JButton.html?is-external=true\" title=\"class or interface in javax.swing\">JButton</a> loadWorldButton</pre>\n</li>\n<li class=\"blockList\">\n<h4>newWorldButton</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JButton.html?is-external=true\" title=\"class or interface in javax.swing\">JButton</a> newWorldButton</pre>\n</li>\n<li class=\"blockList\">\n<h4>editWorldButton</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JButton.html?is-external=true\" title=\"class or interface in javax.swing\">JButton</a> editWorldButton</pre>\n</li>\n<li class=\"blockList\">\n<h4>saveWorldButton</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JButton.html?is-external=true\" title=\"class or interface in javax.swing\">JButton</a> saveWorldButton</pre>\n</li>\n<li class=\"blockList\">\n<h4>dontSaveButton</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JButton.html?is-external=true\" title=\"class or interface in javax.swing\">JButton</a> dontSaveButton</pre>\n</li>\n<li class=\"blockList\">\n<h4>okButton</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JButton.html?is-external=true\" title=\"class or interface in javax.swing\">JButton</a> okButton</pre>\n</li>\n<li class=\"blockList\">\n<h4>cancelButton</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JButton.html?is-external=true\" title=\"class or interface in javax.swing\">JButton</a> cancelButton</pre>\n</li>\n<li class=\"blockList\">\n<h4>speedBar</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JSlider.html?is-external=true\" title=\"class or interface in javax.swing\">JSlider</a> speedBar</pre>\n</li>\n<li class=\"blockListLast\">\n<h4>speed</h4>\n<pre>double speed</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\"><a name=\"stanford.karel.KarelProgram\">\n<!--   -->\n</a>\n<h3>Class <a href=\"stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">stanford.karel.KarelProgram</a> extends <a href=\"acm/program/Program.html\" title=\"class in acm.program\">Program</a> implements Serializable</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>world</h4>\n<pre><a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a> world</pre>\n</li>\n<li class=\"blockList\">\n<h4>controlPanel</h4>\n<pre><a href=\"stanford/karel/KarelControlPanel.html\" title=\"class in stanford.karel\">KarelControlPanel</a> controlPanel</pre>\n</li>\n<li class=\"blockList\">\n<h4>errorDialog</h4>\n<pre>stanford.karel.KarelErrorDialog errorDialog</pre>\n</li>\n<li class=\"blockList\">\n<h4>statusLabel</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JLabel.html?is-external=true\" title=\"class or interface in javax.swing\">JLabel</a> statusLabel</pre>\n</li>\n<li class=\"blockList\">\n<h4>started</h4>\n<pre>boolean started</pre>\n</li>\n<li class=\"blockListLast\">\n<h4>StateEvent</h4>\n<pre><a href=\"stanford/karel/Event.html\" title=\"class in stanford.karel\">Event</a>&lt;<a href=\"stanford/karel/Event.html\" title=\"type parameter in Event\">T</a>&gt; StateEvent</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\"><a name=\"stanford.karel.KarelWorld\">\n<!--   -->\n</a>\n<h3>Class <a href=\"stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">stanford.karel.KarelWorld</a> extends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a> implements Serializable</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h3>Serialized Fields</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>tokenizer</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/StreamTokenizer.html?is-external=true\" title=\"class or interface in java.io\">StreamTokenizer</a> tokenizer</pre>\n</li>\n<li class=\"blockList\">\n<h4>monitor</h4>\n<pre>stanford.karel.KarelWorldMonitor monitor</pre>\n</li>\n<li class=\"blockList\">\n<h4>activeKarel</h4>\n<pre><a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a> activeKarel</pre>\n</li>\n<li class=\"blockList\">\n<h4>lastKarel</h4>\n<pre><a href=\"stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a> lastKarel</pre>\n</li>\n<li class=\"blockList\">\n<h4>repaintFlag</h4>\n<pre>boolean repaintFlag</pre>\n</li>\n<li class=\"blockList\">\n<h4>displayFlag</h4>\n<pre>boolean displayFlag</pre>\n</li>\n<li class=\"blockList\">\n<h4>editMode</h4>\n<pre>boolean editMode</pre>\n</li>\n<li class=\"blockList\">\n<h4>numberSquaresFlag</h4>\n<pre>boolean numberSquaresFlag</pre>\n</li>\n<li class=\"blockList\">\n<h4>displayOneFlag</h4>\n<pre>boolean displayOneFlag</pre>\n</li>\n<li class=\"blockList\">\n<h4>msKarel</h4>\n<pre>boolean msKarel</pre>\n</li>\n<li class=\"blockList\">\n<h4>interactiveMode</h4>\n<pre>boolean interactiveMode</pre>\n</li>\n<li class=\"blockList\">\n<h4>cols</h4>\n<pre>int cols</pre>\n</li>\n<li class=\"blockList\">\n<h4>rows</h4>\n<pre>int rows</pre>\n</li>\n<li class=\"blockList\">\n<h4>sqSize</h4>\n<pre>int sqSize</pre>\n</li>\n<li class=\"blockList\">\n<h4>forcedSize</h4>\n<pre>int forcedSize</pre>\n</li>\n<li class=\"blockList\">\n<h4>alignment</h4>\n<pre>int alignment</pre>\n</li>\n<li class=\"blockList\">\n<h4>width</h4>\n<pre>int width</pre>\n</li>\n<li class=\"blockList\">\n<h4>height</h4>\n<pre>int height</pre>\n</li>\n<li class=\"blockList\">\n<h4>widthPx</h4>\n<pre>int widthPx</pre>\n</li>\n<li class=\"blockList\">\n<h4>heightPx</h4>\n<pre>int heightPx</pre>\n</li>\n<li class=\"blockList\">\n<h4>leftMargin</h4>\n<pre>int leftMargin</pre>\n</li>\n<li class=\"blockList\">\n<h4>bottomMargin</h4>\n<pre>int bottomMargin</pre>\n</li>\n<li class=\"blockList\">\n<h4>lastClick</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> lastClick</pre>\n</li>\n<li class=\"blockList\">\n<h4>pathname</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> pathname</pre>\n</li>\n<li class=\"blockList\">\n<h4>title</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> title</pre>\n</li>\n<li class=\"blockList\">\n<h4>map</h4>\n<pre>stanford.karel.KarelWorld.Corner[][] map</pre>\n</li>\n<li class=\"blockList\">\n<h4>look</h4>\n<pre>int look</pre>\n</li>\n<li class=\"blockList\">\n<h4>lastBeeperCount</h4>\n<pre>int lastBeeperCount</pre>\n</li>\n<li class=\"blockList\">\n<h4>speedFormat</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/text/NumberFormat.html?is-external=true\" title=\"class or interface in java.text\">NumberFormat</a> speedFormat</pre>\n</li>\n<li class=\"blockList\">\n<h4>karels</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true\" title=\"class or interface in java.util\">ArrayList</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true\" title=\"class or interface in java.util\">E</a>&gt; karels</pre>\n</li>\n<li class=\"blockList\">\n<h4>sizeLock</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a> sizeLock</pre>\n</li>\n<li class=\"blockListLast\">\n<h4>offscreen</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a> offscreen</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"blockList\"><a name=\"stanford.karel.SuperKarel\">\n<!--   -->\n</a>\n<h3>Class <a href=\"stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\">stanford.karel.SuperKarel</a> extends <a href=\"stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a> implements Serializable</h3>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"overview-summary.html\">Overview</a></li>\n<li>Package</li>\n<li>Class</li>\n<li><a href=\"overview-tree.html\">Tree</a></li>\n<li><a href=\"deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"index-all.html\">Index</a></li>\n<li><a href=\"help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev</li>\n<li>Next</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"index.html?serialized-form.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"serialized-form.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/audio/Accidental.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:02 PDT 2017 -->\n<title>Accidental</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"Accidental\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9,\"i2\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Class</li>\n<li><a href=\"../../../stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/audio/Accidental.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Accidental.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#enum.constant.summary\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#enum.constant.detail\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.audio</div>\n<h2 title=\"Enum Accidental\" class=\"title\">Enum Accidental</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Enum</a>&lt;<a href=\"../../../stanford/cs106/audio/Accidental.html\" title=\"enum in stanford.cs106.audio\">Accidental</a>&gt;</li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.audio.Accidental</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;<a href=\"../../../stanford/cs106/audio/Accidental.html\" title=\"enum in stanford.cs106.audio\">Accidental</a>&gt;</dd>\n</dl>\n<hr>\n<br>\n<pre>public enum <span class=\"typeNameLabel\">Accidental</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true\" title=\"class or interface in java.lang\">Enum</a>&lt;<a href=\"../../../stanford/cs106/audio/Accidental.html\" title=\"enum in stanford.cs106.audio\">Accidental</a>&gt;</pre>\n<div class=\"block\">An Accidental represents a musical accidental: sharp, flat, or natural.</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== ENUM CONSTANT SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"enum.constant.summary\">\n<!--   -->\n</a>\n<h3>Enum Constant Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Enum Constant Summary table, listing enum constants, and an explanation\">\n<caption><span>Enum Constants</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Enum Constant and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Accidental.html#FLAT\">FLAT</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Accidental.html#NATURAL\">NATURAL</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Accidental.html#SHARP\">SHARP</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../../stanford/cs106/audio/Accidental.html\" title=\"enum in stanford.cs106.audio\">Accidental</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Accidental.html#getValueOf-java.lang.String-\">getValueOf</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>\n<div class=\"block\">Returns the Accidental that is equivalent to the given string,\n such as Accidental.SHARP for \"SHARP\", or null if the string does not\n match any Accidental value.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../../stanford/cs106/audio/Accidental.html\" title=\"enum in stanford.cs106.audio\">Accidental</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Accidental.html#valueOf-java.lang.String-\">valueOf</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>\n<div class=\"block\">Returns the enum constant of this type with the specified name.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../../stanford/cs106/audio/Accidental.html\" title=\"enum in stanford.cs106.audio\">Accidental</a>[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Accidental.html#values--\">values</a></span>()</code>\n<div class=\"block\">Returns an array containing the constants of this enum type, in\nthe order they are declared.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Enum\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true\" title=\"class or interface in java.lang\">Enum</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#compareTo-E-\" title=\"class or interface in java.lang\">compareTo</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#getDeclaringClass--\" title=\"class or interface in java.lang\">getDeclaringClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#name--\" title=\"class or interface in java.lang\">name</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#ordinal--\" title=\"class or interface in java.lang\">ordinal</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#valueOf-java.lang.Class-java.lang.String-\" title=\"class or interface in java.lang\">valueOf</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ ENUM CONSTANT DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"enum.constant.detail\">\n<!--   -->\n</a>\n<h3>Enum Constant Detail</h3>\n<a name=\"SHARP\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SHARP</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/audio/Accidental.html\" title=\"enum in stanford.cs106.audio\">Accidental</a> SHARP</pre>\n</li>\n</ul>\n<a name=\"NATURAL\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>NATURAL</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/audio/Accidental.html\" title=\"enum in stanford.cs106.audio\">Accidental</a> NATURAL</pre>\n</li>\n</ul>\n<a name=\"FLAT\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>FLAT</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/audio/Accidental.html\" title=\"enum in stanford.cs106.audio\">Accidental</a> FLAT</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"values--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>values</h4>\n<pre>public static&nbsp;<a href=\"../../../stanford/cs106/audio/Accidental.html\" title=\"enum in stanford.cs106.audio\">Accidental</a>[]&nbsp;values()</pre>\n<div class=\"block\">Returns an array containing the constants of this enum type, in\nthe order they are declared.  This method may be used to iterate\nover the constants as follows:\n<pre>\nfor (Accidental c : Accidental.values())\n&nbsp;   System.out.println(c);\n</pre></div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>an array containing the constants of this enum type, in the order they are declared</dd>\n</dl>\n</li>\n</ul>\n<a name=\"valueOf-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>valueOf</h4>\n<pre>public static&nbsp;<a href=\"../../../stanford/cs106/audio/Accidental.html\" title=\"enum in stanford.cs106.audio\">Accidental</a>&nbsp;valueOf(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n<div class=\"block\">Returns the enum constant of this type with the specified name.\nThe string must match <i>exactly</i> an identifier used to declare an\nenum constant in this type.  (Extraneous whitespace characters are \nnot permitted.)</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>name</code> - the name of the enum constant to be returned.</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the enum constant with the specified name</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - if this enum type has no constant with the specified name</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if the argument is null</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getValueOf-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>getValueOf</h4>\n<pre>public static&nbsp;<a href=\"../../../stanford/cs106/audio/Accidental.html\" title=\"enum in stanford.cs106.audio\">Accidental</a>&nbsp;getValueOf(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n<div class=\"block\">Returns the Accidental that is equivalent to the given string,\n such as Accidental.SHARP for \"SHARP\", or null if the string does not\n match any Accidental value.</div>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Class</li>\n<li><a href=\"../../../stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/audio/Accidental.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Accidental.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#enum.constant.summary\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#enum.constant.detail\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/audio/Note.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:02 PDT 2017 -->\n<title>Note</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"Note\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/audio/Accidental.html\" title=\"enum in stanford.cs106.audio\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/audio/Pitch.html\" title=\"enum in stanford.cs106.audio\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/audio/Note.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Note.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.audio</div>\n<h2 title=\"Class Note\" class=\"title\">Class Note</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.audio.Note</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">Note</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n<div class=\"block\">This instructor-provided file represents musical notes and is to be used\n by your Melody class.\n\n Each Note object represents a musical note or rest.\n A Note encapsulates a pitch (A-G), a duration in seconds, an octave,\n an accidental (sharp, flat, or natural), and a flag of whether it is the\n start/end of a repeated section or not.\n A song or melody can be thought of as a list or array of Note objects.</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Note.html#DEBUG\">DEBUG</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Note.html#OCTAVE_MAX\">OCTAVE_MAX</a></span></code>\n<div class=\"block\">Constant for the maximum legal value that an octave can have.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Note.html#OCTAVE_MIN\">OCTAVE_MIN</a></span></code>\n<div class=\"block\">Constant for the minimum legal value that an octave can have.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Note.html#Note-double-boolean-\">Note</a></span>(double&nbsp;duration,\n    boolean&nbsp;repeat)</code>\n<div class=\"block\">Constructs a new rest (Pitch.R) of the given duration.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Note.html#Note-double-stanford.cs106.audio.Pitch-int-stanford.cs106.audio.Accidental-boolean-\">Note</a></span>(double&nbsp;duration,\n    <a href=\"../../../stanford/cs106/audio/Pitch.html\" title=\"enum in stanford.cs106.audio\">Pitch</a>&nbsp;pitch,\n    int&nbsp;octave,\n    <a href=\"../../../stanford/cs106/audio/Accidental.html\" title=\"enum in stanford.cs106.audio\">Accidental</a>&nbsp;accidental,\n    boolean&nbsp;repeat)</code>\n<div class=\"block\">Constructs a Note with the given information.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Note.html#Note-double-java.lang.String-int-java.lang.String-boolean-\">Note</a></span>(double&nbsp;duration,\n    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;pitch,\n    int&nbsp;octave,\n    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;accidental,\n    boolean&nbsp;repeat)</code>\n<div class=\"block\">Constructs a Note with the given information.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Note.html#Note-java.lang.String-\">Note</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;line)</code>\n<div class=\"block\">Constructs a Note with the information contained in the given line.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Note.html#equals-java.lang.Object-\">equals</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;o)</code>\n<div class=\"block\">Returns true if o refers to a Note object with the same state\n as this Note object; otherwise false.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../../stanford/cs106/audio/Accidental.html\" title=\"enum in stanford.cs106.audio\">Accidental</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Note.html#getAccidental--\">getAccidental</a></span>()</code>\n<div class=\"block\">Returns this Note's accidental value of SHARP, FLAT, or NATURAL.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Note.html#getDuration--\">getDuration</a></span>()</code>\n<div class=\"block\">Returns this Note's duration in seconds.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Note.html#getOctave--\">getOctave</a></span>()</code>\n<div class=\"block\">Returns this Note's octave.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../../stanford/cs106/audio/Pitch.html\" title=\"enum in stanford.cs106.audio\">Pitch</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Note.html#getPitch--\">getPitch</a></span>()</code>\n<div class=\"block\">Returns this Note's pitch value of A-G or R for a rest.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Note.html#isRepeat--\">isRepeat</a></span>()</code>\n<div class=\"block\">Returns true if this Note is the start or end of a repeated section.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Note.html#isRest--\">isRest</a></span>()</code>\n<div class=\"block\">Returns true if this Note is a rest.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Note.html#play--\">play</a></span>()</code>\n<div class=\"block\">Plays this note through the underlying audio system.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Note.html#setAccidental-stanford.cs106.audio.Accidental-\">setAccidental</a></span>(<a href=\"../../../stanford/cs106/audio/Accidental.html\" title=\"enum in stanford.cs106.audio\">Accidental</a>&nbsp;accidental)</code>\n<div class=\"block\">Sets this Note's accidental value to be the given value: SHARP, FLAT, or NATURAL.</div>\n</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Note.html#setAccidental-java.lang.String-\">setAccidental</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;accidental)</code>\n<div class=\"block\">Sets this Note's accidental value to be the given value: \"SHARP\", \"FLAT\", or \"NATURAL\".</div>\n</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Note.html#setDuration-double-\">setDuration</a></span>(double&nbsp;duration)</code>\n<div class=\"block\">Sets this Note's duration in seconds to be the given value.</div>\n</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Note.html#setOctave-int-\">setOctave</a></span>(int&nbsp;octave)</code>\n<div class=\"block\">Sets this Note's octave to be the given value.</div>\n</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Note.html#setPitch-stanford.cs106.audio.Pitch-\">setPitch</a></span>(<a href=\"../../../stanford/cs106/audio/Pitch.html\" title=\"enum in stanford.cs106.audio\">Pitch</a>&nbsp;pitch)</code>\n<div class=\"block\">Sets this Note's pitch to be the given value.</div>\n</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Note.html#setPitch-java.lang.String-\">setPitch</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;pitch)</code>\n<div class=\"block\">Sets this Note's pitch to be the given value.</div>\n</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Note.html#setRepeat-boolean-\">setRepeat</a></span>(boolean&nbsp;repeat)</code>\n<div class=\"block\">Sets this Note's repeat flag to be the given value.</div>\n</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Note.html#toString--\">toString</a></span>()</code>\n<div class=\"block\">Returns a string representation of this note.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"OCTAVE_MIN\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>OCTAVE_MIN</h4>\n<pre>public static final&nbsp;int OCTAVE_MIN</pre>\n<div class=\"block\">Constant for the minimum legal value that an octave can have.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#stanford.cs106.audio.Note.OCTAVE_MIN\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"OCTAVE_MAX\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>OCTAVE_MAX</h4>\n<pre>public static final&nbsp;int OCTAVE_MAX</pre>\n<div class=\"block\">Constant for the maximum legal value that an octave can have.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#stanford.cs106.audio.Note.OCTAVE_MAX\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"DEBUG\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>DEBUG</h4>\n<pre>public static&nbsp;boolean DEBUG</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"Note-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>Note</h4>\n<pre>public&nbsp;Note(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;line)</pre>\n<div class=\"block\">Constructs a Note with the information contained in the given line.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>line</code> - a line of input data such as \"0.2 C 4 NATURAL false\" or \"0.4 R false\" for a rest</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if line is null.</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - if duration is negative or octave is not\n                                  between OCTAVE_MIN and OCTAVE_MAX inclusive.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"Note-double-stanford.cs106.audio.Pitch-int-stanford.cs106.audio.Accidental-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>Note</h4>\n<pre>public&nbsp;Note(double&nbsp;duration,\n            <a href=\"../../../stanford/cs106/audio/Pitch.html\" title=\"enum in stanford.cs106.audio\">Pitch</a>&nbsp;pitch,\n            int&nbsp;octave,\n            <a href=\"../../../stanford/cs106/audio/Accidental.html\" title=\"enum in stanford.cs106.audio\">Accidental</a>&nbsp;accidental,\n            boolean&nbsp;repeat)</pre>\n<div class=\"block\">Constructs a Note with the given information.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>duration</code> - Note's duration in seconds.</dd>\n<dd><code>pitch</code> - Note's pitch from Pitch.A through Pitch.G, or Pitch.R for a rest.</dd>\n<dd><code>octave</code> - Note's octave from OCTAVE_MIN through OCTAVE_MAX inclusive.</dd>\n<dd><code>accidental</code> - Note's accidental from Accidental.SHARP, FLAT, or NATURAL.</dd>\n<dd><code>repeat</code> - true if this note starts/ends a repeated section.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if pitch or accidental is null.</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - if duration is negative or octave is not\n                                  between OCTAVE_MIN and OCTAVE_MAX inclusive.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"Note-double-java.lang.String-int-java.lang.String-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>Note</h4>\n<pre>public&nbsp;Note(double&nbsp;duration,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;pitch,\n            int&nbsp;octave,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;accidental,\n            boolean&nbsp;repeat)</pre>\n<div class=\"block\">Constructs a Note with the given information.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>duration</code> - Note's duration in seconds.</dd>\n<dd><code>pitch</code> - Note's pitch from \"A\" through \"G\", or \"R\" for a rest.</dd>\n<dd><code>octave</code> - Note's octave from OCTAVE_MIN through OCTAVE_MAX inclusive.</dd>\n<dd><code>accidental</code> - Note's accidental from \"SHARP\", \"FLAT\", or \"NATURAL\".</dd>\n<dd><code>repeat</code> - true if this note starts/ends a repeated section.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if pitch or accidental is null.</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - if duration is negative or octave is not\n                                  between OCTAVE_MIN and OCTAVE_MAX inclusive.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"Note-double-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>Note</h4>\n<pre>public&nbsp;Note(double&nbsp;duration,\n            boolean&nbsp;repeat)</pre>\n<div class=\"block\">Constructs a new rest (Pitch.R) of the given duration.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>duration</code> - Note's duration in seconds.</dd>\n<dd><code>repeat</code> - true if this rest starts/ends a repeated section.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if accidental is null.</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - if duration is negative.</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"equals-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>equals</h4>\n<pre>public&nbsp;boolean&nbsp;equals(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;o)</pre>\n<div class=\"block\">Returns true if o refers to a Note object with the same state\n as this Note object; otherwise false.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>o</code> - the object to compare against</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>true if o refers to a Note object with the same state\n as this Note object; otherwise false.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getAccidental--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getAccidental</h4>\n<pre>public&nbsp;<a href=\"../../../stanford/cs106/audio/Accidental.html\" title=\"enum in stanford.cs106.audio\">Accidental</a>&nbsp;getAccidental()</pre>\n<div class=\"block\">Returns this Note's accidental value of SHARP, FLAT, or NATURAL.\n The accidental value is meaningless for a rest; this method will\n return Accidental.NATURAL by default if called on a rest.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>this Note's accidental value of SHARP, FLAT, or NATURAL.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getDuration--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getDuration</h4>\n<pre>public&nbsp;double&nbsp;getDuration()</pre>\n<div class=\"block\">Returns this Note's duration in seconds.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>this Note's duration in seconds.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getOctave--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getOctave</h4>\n<pre>public&nbsp;int&nbsp;getOctave()</pre>\n<div class=\"block\">Returns this Note's octave.\n The octave value is meaningless for a rest; this method will return\n OCTAVE_MIN + 1 by default if called on a rest.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>this Note's octave from OCTAVE_MIN to OCTAVE_MAX.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getPitch--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getPitch</h4>\n<pre>public&nbsp;<a href=\"../../../stanford/cs106/audio/Pitch.html\" title=\"enum in stanford.cs106.audio\">Pitch</a>&nbsp;getPitch()</pre>\n<div class=\"block\">Returns this Note's pitch value of A-G or R for a rest.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>this Note's pitch value of A-G or R for a rest.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"isRepeat--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isRepeat</h4>\n<pre>public&nbsp;boolean&nbsp;isRepeat()</pre>\n<div class=\"block\">Returns true if this Note is the start or end of a repeated section.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>true if this Note is the start or end of a repeated section,\n         otherwise false.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"isRest--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isRest</h4>\n<pre>public&nbsp;boolean&nbsp;isRest()</pre>\n<div class=\"block\">Returns true if this Note is a rest.  Equivalent to checking whether\n this note's pitch is Pitch.R.  Provided for convenience.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>true if this Note is a rest, otherwise false.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"play--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>play</h4>\n<pre>public&nbsp;void&nbsp;play()</pre>\n<div class=\"block\">Plays this note through the underlying audio system.\n Also prints a message to the system console for debugging.\n If the audio system is muted or paused, the note may not play.</div>\n</li>\n</ul>\n<a name=\"setAccidental-stanford.cs106.audio.Accidental-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setAccidental</h4>\n<pre>public&nbsp;void&nbsp;setAccidental(<a href=\"../../../stanford/cs106/audio/Accidental.html\" title=\"enum in stanford.cs106.audio\">Accidental</a>&nbsp;accidental)</pre>\n<div class=\"block\">Sets this Note's accidental value to be the given value: SHARP, FLAT, or NATURAL.\n The accidental value is meaningless for a rest, but the Note object still\n maintains an accidental value internally (initially Accidental.NATURAL)\n which is ignored.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>accidental</code> - Note's accidental from Accidental.SHARP, FLAT, or NATURAL.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if the accidental is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setAccidental-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setAccidental</h4>\n<pre>public&nbsp;void&nbsp;setAccidental(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;accidental)</pre>\n<div class=\"block\">Sets this Note's accidental value to be the given value: \"SHARP\", \"FLAT\", or \"NATURAL\".\n The accidental value is meaningless for a rest, but the Note object still\n maintains an accidental value internally (initially Accidental.NATURAL)\n which is ignored.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>accidental</code> - Note's accidental from \"SHARP\", \"FLAT\", or \"NATURAL\".</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setDuration-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setDuration</h4>\n<pre>public&nbsp;void&nbsp;setDuration(double&nbsp;duration)</pre>\n<div class=\"block\">Sets this Note's duration in seconds to be the given value.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>duration</code> - Note's duration in seconds.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - if duration is negative.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setOctave-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setOctave</h4>\n<pre>public&nbsp;void&nbsp;setOctave(int&nbsp;octave)</pre>\n<div class=\"block\">Sets this Note's octave to be the given value.\n The octave value is meaningless for a rest, but the Note object still\n maintains an octave value internally (initially OCTAVE_MIN + 1)\n which is ignored.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>octave</code> - Note's octave from OCTAVE_MIN through OCTAVE_MAX inclusive.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - if octave is not between OCTAVE_MIN\n                                  and OCTAVE_MAX inclusive.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setPitch-stanford.cs106.audio.Pitch-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setPitch</h4>\n<pre>public&nbsp;void&nbsp;setPitch(<a href=\"../../../stanford/cs106/audio/Pitch.html\" title=\"enum in stanford.cs106.audio\">Pitch</a>&nbsp;pitch)</pre>\n<div class=\"block\">Sets this Note's pitch to be the given value.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>pitch</code> - Note's pitch from Pitch.A through Pitch.G, or Pitch.R for a rest.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if pitch is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setPitch-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setPitch</h4>\n<pre>public&nbsp;void&nbsp;setPitch(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;pitch)</pre>\n<div class=\"block\">Sets this Note's pitch to be the given value.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>pitch</code> - Note's pitch from \"A\" through \"G\", or \"R\" for a rest.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if pitch is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setRepeat-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setRepeat</h4>\n<pre>public&nbsp;void&nbsp;setRepeat(boolean&nbsp;repeat)</pre>\n<div class=\"block\">Sets this Note's repeat flag to be the given value.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>repeat</code> - true to indicate that this note is the start/end of a\n               repeated section, or false if not.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"toString--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>toString</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;toString()</pre>\n<div class=\"block\">Returns a string representation of this note.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>A string such as \"0.4 C 5 NATURAL false\".</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/audio/Accidental.html\" title=\"enum in stanford.cs106.audio\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/audio/Pitch.html\" title=\"enum in stanford.cs106.audio\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/audio/Note.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Note.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/audio/Pitch.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:02 PDT 2017 -->\n<title>Pitch</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"Pitch\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9,\"i2\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/audio/SplClip.html\" title=\"class in stanford.cs106.audio\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/audio/Pitch.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Pitch.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#enum.constant.summary\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#enum.constant.detail\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.audio</div>\n<h2 title=\"Enum Pitch\" class=\"title\">Enum Pitch</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Enum</a>&lt;<a href=\"../../../stanford/cs106/audio/Pitch.html\" title=\"enum in stanford.cs106.audio\">Pitch</a>&gt;</li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.audio.Pitch</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;<a href=\"../../../stanford/cs106/audio/Pitch.html\" title=\"enum in stanford.cs106.audio\">Pitch</a>&gt;</dd>\n</dl>\n<hr>\n<br>\n<pre>public enum <span class=\"typeNameLabel\">Pitch</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true\" title=\"class or interface in java.lang\">Enum</a>&lt;<a href=\"../../../stanford/cs106/audio/Pitch.html\" title=\"enum in stanford.cs106.audio\">Pitch</a>&gt;</pre>\n<div class=\"block\">A Pitch represents a musical pitch. R represents a rest, no pitch.</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== ENUM CONSTANT SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"enum.constant.summary\">\n<!--   -->\n</a>\n<h3>Enum Constant Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Enum Constant Summary table, listing enum constants, and an explanation\">\n<caption><span>Enum Constants</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Enum Constant and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Pitch.html#A\">A</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Pitch.html#B\">B</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Pitch.html#C\">C</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Pitch.html#D\">D</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Pitch.html#E\">E</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Pitch.html#F\">F</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Pitch.html#G\">G</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Pitch.html#R\">R</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../../stanford/cs106/audio/Pitch.html\" title=\"enum in stanford.cs106.audio\">Pitch</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Pitch.html#getValueOf-java.lang.String-\">getValueOf</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>\n<div class=\"block\">Returns the Pitch that is equivalent to the given string,\n such as Pitch.D for \"D\", or null if the string does not\n match any Pitch value.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../../stanford/cs106/audio/Pitch.html\" title=\"enum in stanford.cs106.audio\">Pitch</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Pitch.html#valueOf-java.lang.String-\">valueOf</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>\n<div class=\"block\">Returns the enum constant of this type with the specified name.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../../stanford/cs106/audio/Pitch.html\" title=\"enum in stanford.cs106.audio\">Pitch</a>[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/Pitch.html#values--\">values</a></span>()</code>\n<div class=\"block\">Returns an array containing the constants of this enum type, in\nthe order they are declared.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Enum\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true\" title=\"class or interface in java.lang\">Enum</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#compareTo-E-\" title=\"class or interface in java.lang\">compareTo</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#getDeclaringClass--\" title=\"class or interface in java.lang\">getDeclaringClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#name--\" title=\"class or interface in java.lang\">name</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#ordinal--\" title=\"class or interface in java.lang\">ordinal</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#valueOf-java.lang.Class-java.lang.String-\" title=\"class or interface in java.lang\">valueOf</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ ENUM CONSTANT DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"enum.constant.detail\">\n<!--   -->\n</a>\n<h3>Enum Constant Detail</h3>\n<a name=\"A\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>A</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/audio/Pitch.html\" title=\"enum in stanford.cs106.audio\">Pitch</a> A</pre>\n</li>\n</ul>\n<a name=\"B\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>B</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/audio/Pitch.html\" title=\"enum in stanford.cs106.audio\">Pitch</a> B</pre>\n</li>\n</ul>\n<a name=\"C\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>C</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/audio/Pitch.html\" title=\"enum in stanford.cs106.audio\">Pitch</a> C</pre>\n</li>\n</ul>\n<a name=\"D\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>D</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/audio/Pitch.html\" title=\"enum in stanford.cs106.audio\">Pitch</a> D</pre>\n</li>\n</ul>\n<a name=\"E\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>E</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/audio/Pitch.html\" title=\"enum in stanford.cs106.audio\">Pitch</a> E</pre>\n</li>\n</ul>\n<a name=\"F\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>F</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/audio/Pitch.html\" title=\"enum in stanford.cs106.audio\">Pitch</a> F</pre>\n</li>\n</ul>\n<a name=\"G\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>G</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/audio/Pitch.html\" title=\"enum in stanford.cs106.audio\">Pitch</a> G</pre>\n</li>\n</ul>\n<a name=\"R\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>R</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/audio/Pitch.html\" title=\"enum in stanford.cs106.audio\">Pitch</a> R</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"values--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>values</h4>\n<pre>public static&nbsp;<a href=\"../../../stanford/cs106/audio/Pitch.html\" title=\"enum in stanford.cs106.audio\">Pitch</a>[]&nbsp;values()</pre>\n<div class=\"block\">Returns an array containing the constants of this enum type, in\nthe order they are declared.  This method may be used to iterate\nover the constants as follows:\n<pre>\nfor (Pitch c : Pitch.values())\n&nbsp;   System.out.println(c);\n</pre></div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>an array containing the constants of this enum type, in the order they are declared</dd>\n</dl>\n</li>\n</ul>\n<a name=\"valueOf-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>valueOf</h4>\n<pre>public static&nbsp;<a href=\"../../../stanford/cs106/audio/Pitch.html\" title=\"enum in stanford.cs106.audio\">Pitch</a>&nbsp;valueOf(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n<div class=\"block\">Returns the enum constant of this type with the specified name.\nThe string must match <i>exactly</i> an identifier used to declare an\nenum constant in this type.  (Extraneous whitespace characters are \nnot permitted.)</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>name</code> - the name of the enum constant to be returned.</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the enum constant with the specified name</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - if this enum type has no constant with the specified name</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if the argument is null</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getValueOf-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>getValueOf</h4>\n<pre>public static&nbsp;<a href=\"../../../stanford/cs106/audio/Pitch.html\" title=\"enum in stanford.cs106.audio\">Pitch</a>&nbsp;getValueOf(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n<div class=\"block\">Returns the Pitch that is equivalent to the given string,\n such as Pitch.D for \"D\", or null if the string does not\n match any Pitch value.</div>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/audio/SplClip.html\" title=\"class in stanford.cs106.audio\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/audio/Pitch.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Pitch.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#enum.constant.summary\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#enum.constant.detail\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/audio/SplClip.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:02 PDT 2017 -->\n<title>SplClip</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"SplClip\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":9,\"i10\":9,\"i11\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/audio/Pitch.html\" title=\"enum in stanford.cs106.audio\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/audio/StdAudio.html\" title=\"class in stanford.cs106.audio\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/audio/SplClip.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"SplClip.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.audio</div>\n<h2 title=\"Class SplClip\" class=\"title\">Class SplClip</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.audio.SplClip</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AudioClip.html?is-external=true\" title=\"class or interface in java.applet\">AudioClip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a>, javazoom.jlgui.basicplayer.BasicPlayerListener</dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">SplClip</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>\nimplements <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AudioClip.html?is-external=true\" title=\"class or interface in java.applet\">AudioClip</a>, javazoom.jlgui.basicplayer.BasicPlayerListener, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/SplClip.html#SplClip-java.lang.String-\">SplClip</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/SplClip.html#getExtension-java.lang.String-\">getExtension</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/SplClip.html#loop--\">loop</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/SplClip.html#opened-java.lang.Object-java.util.Map-\">opened</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;stream,\n      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&nbsp;properties)</code>\n<div class=\"block\">Open callback, stream is ready to play.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/SplClip.html#play--\">play</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/SplClip.html#progress-int-long-byte:A-java.util.Map-\">progress</a></span>(int&nbsp;bytesread,\n        long&nbsp;microseconds,\n        byte[]&nbsp;pcmdata,\n        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&nbsp;properties)</code>\n<div class=\"block\">Progress callback while playing.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/SplClip.html#run--\">run</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/SplClip.html#setController-javazoom.jlgui.basicplayer.BasicController-\">setController</a></span>(javazoom.jlgui.basicplayer.BasicController&nbsp;controller)</code>\n<div class=\"block\">A handle to the BasicPlayer, plugins may control the player through the\n controller (play, stop, ...)</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/SplClip.html#stateUpdated-javazoom.jlgui.basicplayer.BasicPlayerEvent-\">stateUpdated</a></span>(javazoom.jlgui.basicplayer.BasicPlayerEvent&nbsp;event)</code>\n<div class=\"block\">Notification callback for basicplayer events such as opened, eom ...</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/SplClip.html#stop--\">stop</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/SplClip.html#supportsExtension-java.lang.String-\">supportsExtension</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;extension)</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/SplClip.html#supportsFile-java.lang.String-\">supportsFile</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/SplClip.html#waitUntilDonePlaying--\">waitUntilDonePlaying</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"SplClip-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>SplClip</h4>\n<pre>public&nbsp;SplClip(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"supportsExtension-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>supportsExtension</h4>\n<pre>public static&nbsp;boolean&nbsp;supportsExtension(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;extension)</pre>\n</li>\n</ul>\n<a name=\"supportsFile-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>supportsFile</h4>\n<pre>public static&nbsp;boolean&nbsp;supportsFile(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n</li>\n</ul>\n<a name=\"getExtension-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getExtension</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getExtension(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n</li>\n</ul>\n<a name=\"loop--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>loop</h4>\n<pre>public&nbsp;void&nbsp;loop()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AudioClip.html?is-external=true#loop--\" title=\"class or interface in java.applet\">loop</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AudioClip.html?is-external=true\" title=\"class or interface in java.applet\">AudioClip</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"play--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>play</h4>\n<pre>public&nbsp;void&nbsp;play()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AudioClip.html?is-external=true#play--\" title=\"class or interface in java.applet\">play</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AudioClip.html?is-external=true\" title=\"class or interface in java.applet\">AudioClip</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"run--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>run</h4>\n<pre>public&nbsp;void&nbsp;run()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true#run--\" title=\"class or interface in java.lang\">run</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"stop--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>stop</h4>\n<pre>public&nbsp;void&nbsp;stop()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AudioClip.html?is-external=true#stop--\" title=\"class or interface in java.applet\">stop</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AudioClip.html?is-external=true\" title=\"class or interface in java.applet\">AudioClip</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"waitUntilDonePlaying--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>waitUntilDonePlaying</h4>\n<pre>public&nbsp;void&nbsp;waitUntilDonePlaying()</pre>\n</li>\n</ul>\n<a name=\"opened-java.lang.Object-java.util.Map-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>opened</h4>\n<pre>public&nbsp;void&nbsp;opened(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;stream,\n                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&nbsp;properties)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from interface:&nbsp;<code>javazoom.jlgui.basicplayer.BasicPlayerListener</code></span></div>\n<div class=\"block\">Open callback, stream is ready to play.\n \n properties map includes audio format dependant features such as bitrate,\n duration, frequency, channels, number of frames, vbr flag, id3v2/id3v1\n (for MP3 only), comments (for Ogg Vorbis), ...</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>opened</code>&nbsp;in interface&nbsp;<code>javazoom.jlgui.basicplayer.BasicPlayerListener</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>stream</code> - could be File, URL or InputStream</dd>\n<dd><code>properties</code> - audio stream properties.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"progress-int-long-byte:A-java.util.Map-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>progress</h4>\n<pre>public&nbsp;void&nbsp;progress(int&nbsp;bytesread,\n                     long&nbsp;microseconds,\n                     byte[]&nbsp;pcmdata,\n                     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&nbsp;properties)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from interface:&nbsp;<code>javazoom.jlgui.basicplayer.BasicPlayerListener</code></span></div>\n<div class=\"block\">Progress callback while playing.\n \n This method is called severals time per seconds while playing. properties\n map includes audio format features such as instant bitrate, microseconds\n position, current frame number, ...</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>progress</code>&nbsp;in interface&nbsp;<code>javazoom.jlgui.basicplayer.BasicPlayerListener</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>bytesread</code> - from encoded stream.</dd>\n<dd><code>microseconds</code> - elapsed (<b>reseted after a seek !</b>).</dd>\n<dd><code>pcmdata</code> - PCM samples.</dd>\n<dd><code>properties</code> - audio stream parameters.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"stateUpdated-javazoom.jlgui.basicplayer.BasicPlayerEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>stateUpdated</h4>\n<pre>public&nbsp;void&nbsp;stateUpdated(javazoom.jlgui.basicplayer.BasicPlayerEvent&nbsp;event)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from interface:&nbsp;<code>javazoom.jlgui.basicplayer.BasicPlayerListener</code></span></div>\n<div class=\"block\">Notification callback for basicplayer events such as opened, eom ...</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>stateUpdated</code>&nbsp;in interface&nbsp;<code>javazoom.jlgui.basicplayer.BasicPlayerListener</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setController-javazoom.jlgui.basicplayer.BasicController-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>setController</h4>\n<pre>public&nbsp;void&nbsp;setController(javazoom.jlgui.basicplayer.BasicController&nbsp;controller)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from interface:&nbsp;<code>javazoom.jlgui.basicplayer.BasicPlayerListener</code></span></div>\n<div class=\"block\">A handle to the BasicPlayer, plugins may control the player through the\n controller (play, stop, ...)</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code>setController</code>&nbsp;in interface&nbsp;<code>javazoom.jlgui.basicplayer.BasicPlayerListener</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>controller</code> - : a handle to the player</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/audio/Pitch.html\" title=\"enum in stanford.cs106.audio\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/audio/StdAudio.html\" title=\"class in stanford.cs106.audio\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/audio/SplClip.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"SplClip.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/audio/StdAudio.AudioEvent.Type.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:02 PDT 2017 -->\n<title>StdAudio.AudioEvent.Type</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"StdAudio.AudioEvent.Type\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.html\" title=\"class in stanford.cs106.audio\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/audio/StdAudio.AudioEventListener.html\" title=\"interface in stanford.cs106.audio\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/audio/StdAudio.AudioEvent.Type.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"StdAudio.AudioEvent.Type.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#enum.constant.summary\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#enum.constant.detail\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.audio</div>\n<h2 title=\"Enum StdAudio.AudioEvent.Type\" class=\"title\">Enum StdAudio.AudioEvent.Type</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Enum</a>&lt;<a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.Type.html\" title=\"enum in stanford.cs106.audio\">StdAudio.AudioEvent.Type</a>&gt;</li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.audio.StdAudio.AudioEvent.Type</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;<a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.Type.html\" title=\"enum in stanford.cs106.audio\">StdAudio.AudioEvent.Type</a>&gt;</dd>\n</dl>\n<dl>\n<dt>Enclosing class:</dt>\n<dd><a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.html\" title=\"class in stanford.cs106.audio\">StdAudio.AudioEvent</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public static enum <span class=\"typeNameLabel\">StdAudio.AudioEvent.Type</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true\" title=\"class or interface in java.lang\">Enum</a>&lt;<a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.Type.html\" title=\"enum in stanford.cs106.audio\">StdAudio.AudioEvent.Type</a>&gt;</pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== ENUM CONSTANT SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"enum.constant.summary\">\n<!--   -->\n</a>\n<h3>Enum Constant Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Enum Constant Summary table, listing enum constants, and an explanation\">\n<caption><span>Enum Constants</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Enum Constant and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.Type.html#LOOP\">LOOP</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.Type.html#MUTE\">MUTE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.Type.html#PAUSE\">PAUSE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.Type.html#PLAY\">PLAY</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.Type.html#STOP\">STOP</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.Type.html#UNMUTE\">UNMUTE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.Type.html#UNPAUSE\">UNPAUSE</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.Type.html\" title=\"enum in stanford.cs106.audio\">StdAudio.AudioEvent.Type</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.Type.html#valueOf-java.lang.String-\">valueOf</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>\n<div class=\"block\">Returns the enum constant of this type with the specified name.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.Type.html\" title=\"enum in stanford.cs106.audio\">StdAudio.AudioEvent.Type</a>[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.Type.html#values--\">values</a></span>()</code>\n<div class=\"block\">Returns an array containing the constants of this enum type, in\nthe order they are declared.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Enum\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true\" title=\"class or interface in java.lang\">Enum</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#compareTo-E-\" title=\"class or interface in java.lang\">compareTo</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#getDeclaringClass--\" title=\"class or interface in java.lang\">getDeclaringClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#name--\" title=\"class or interface in java.lang\">name</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#ordinal--\" title=\"class or interface in java.lang\">ordinal</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#valueOf-java.lang.Class-java.lang.String-\" title=\"class or interface in java.lang\">valueOf</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ ENUM CONSTANT DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"enum.constant.detail\">\n<!--   -->\n</a>\n<h3>Enum Constant Detail</h3>\n<a name=\"PLAY\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>PLAY</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.Type.html\" title=\"enum in stanford.cs106.audio\">StdAudio.AudioEvent.Type</a> PLAY</pre>\n</li>\n</ul>\n<a name=\"LOOP\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>LOOP</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.Type.html\" title=\"enum in stanford.cs106.audio\">StdAudio.AudioEvent.Type</a> LOOP</pre>\n</li>\n</ul>\n<a name=\"PAUSE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>PAUSE</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.Type.html\" title=\"enum in stanford.cs106.audio\">StdAudio.AudioEvent.Type</a> PAUSE</pre>\n</li>\n</ul>\n<a name=\"UNPAUSE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>UNPAUSE</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.Type.html\" title=\"enum in stanford.cs106.audio\">StdAudio.AudioEvent.Type</a> UNPAUSE</pre>\n</li>\n</ul>\n<a name=\"STOP\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>STOP</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.Type.html\" title=\"enum in stanford.cs106.audio\">StdAudio.AudioEvent.Type</a> STOP</pre>\n</li>\n</ul>\n<a name=\"MUTE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MUTE</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.Type.html\" title=\"enum in stanford.cs106.audio\">StdAudio.AudioEvent.Type</a> MUTE</pre>\n</li>\n</ul>\n<a name=\"UNMUTE\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>UNMUTE</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.Type.html\" title=\"enum in stanford.cs106.audio\">StdAudio.AudioEvent.Type</a> UNMUTE</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"values--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>values</h4>\n<pre>public static&nbsp;<a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.Type.html\" title=\"enum in stanford.cs106.audio\">StdAudio.AudioEvent.Type</a>[]&nbsp;values()</pre>\n<div class=\"block\">Returns an array containing the constants of this enum type, in\nthe order they are declared.  This method may be used to iterate\nover the constants as follows:\n<pre>\nfor (StdAudio.AudioEvent.Type c : StdAudio.AudioEvent.Type.values())\n&nbsp;   System.out.println(c);\n</pre></div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>an array containing the constants of this enum type, in the order they are declared</dd>\n</dl>\n</li>\n</ul>\n<a name=\"valueOf-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>valueOf</h4>\n<pre>public static&nbsp;<a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.Type.html\" title=\"enum in stanford.cs106.audio\">StdAudio.AudioEvent.Type</a>&nbsp;valueOf(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n<div class=\"block\">Returns the enum constant of this type with the specified name.\nThe string must match <i>exactly</i> an identifier used to declare an\nenum constant in this type.  (Extraneous whitespace characters are \nnot permitted.)</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>name</code> - the name of the enum constant to be returned.</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the enum constant with the specified name</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - if this enum type has no constant with the specified name</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if the argument is null</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.html\" title=\"class in stanford.cs106.audio\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/audio/StdAudio.AudioEventListener.html\" title=\"interface in stanford.cs106.audio\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/audio/StdAudio.AudioEvent.Type.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"StdAudio.AudioEvent.Type.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#enum.constant.summary\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#enum.constant.detail\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/audio/StdAudio.AudioEvent.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:02 PDT 2017 -->\n<title>StdAudio.AudioEvent</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"StdAudio.AudioEvent\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/audio/StdAudio.html\" title=\"class in stanford.cs106.audio\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.Type.html\" title=\"enum in stanford.cs106.audio\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/audio/StdAudio.AudioEvent.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"StdAudio.AudioEvent.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.class.summary\">Nested</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.audio</div>\n<h2 title=\"Class StdAudio.AudioEvent\" class=\"title\">Class StdAudio.AudioEvent</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.audio.StdAudio.AudioEvent</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>Enclosing class:</dt>\n<dd><a href=\"../../../stanford/cs106/audio/StdAudio.html\" title=\"class in stanford.cs106.audio\">StdAudio</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public static class <span class=\"typeNameLabel\">StdAudio.AudioEvent</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Nested Class Summary table, listing nested classes, and an explanation\">\n<caption><span>Nested Classes</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Class and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static class&nbsp;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.Type.html\" title=\"enum in stanford.cs106.audio\">StdAudio.AudioEvent.Type</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.html#AudioEvent-stanford.cs106.audio.StdAudio.AudioEvent.Type-\">AudioEvent</a></span>(<a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.Type.html\" title=\"enum in stanford.cs106.audio\">StdAudio.AudioEvent.Type</a>&nbsp;type)</code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.html#AudioEvent-stanford.cs106.audio.StdAudio.AudioEvent.Type-double-\">AudioEvent</a></span>(<a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.Type.html\" title=\"enum in stanford.cs106.audio\">StdAudio.AudioEvent.Type</a>&nbsp;type,\n          double&nbsp;duration)</code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.html#AudioEvent-stanford.cs106.audio.StdAudio.AudioEvent.Type-stanford.cs106.audio.Note-double-\">AudioEvent</a></span>(<a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.Type.html\" title=\"enum in stanford.cs106.audio\">StdAudio.AudioEvent.Type</a>&nbsp;type,\n          <a href=\"../../../stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\">Note</a>&nbsp;note,\n          double&nbsp;duration)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.html#getDuration--\">getDuration</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../../stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\">Note</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.html#getNote--\">getNote</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.Type.html\" title=\"enum in stanford.cs106.audio\">StdAudio.AudioEvent.Type</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.html#getType--\">getType</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.html#toString--\">toString</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"AudioEvent-stanford.cs106.audio.StdAudio.AudioEvent.Type-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>AudioEvent</h4>\n<pre>public&nbsp;AudioEvent(<a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.Type.html\" title=\"enum in stanford.cs106.audio\">StdAudio.AudioEvent.Type</a>&nbsp;type)</pre>\n</li>\n</ul>\n<a name=\"AudioEvent-stanford.cs106.audio.StdAudio.AudioEvent.Type-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>AudioEvent</h4>\n<pre>public&nbsp;AudioEvent(<a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.Type.html\" title=\"enum in stanford.cs106.audio\">StdAudio.AudioEvent.Type</a>&nbsp;type,\n                  double&nbsp;duration)</pre>\n</li>\n</ul>\n<a name=\"AudioEvent-stanford.cs106.audio.StdAudio.AudioEvent.Type-stanford.cs106.audio.Note-double-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>AudioEvent</h4>\n<pre>public&nbsp;AudioEvent(<a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.Type.html\" title=\"enum in stanford.cs106.audio\">StdAudio.AudioEvent.Type</a>&nbsp;type,\n                  <a href=\"../../../stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\">Note</a>&nbsp;note,\n                  double&nbsp;duration)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"getDuration--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getDuration</h4>\n<pre>public&nbsp;double&nbsp;getDuration()</pre>\n</li>\n</ul>\n<a name=\"getNote--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getNote</h4>\n<pre>public&nbsp;<a href=\"../../../stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\">Note</a>&nbsp;getNote()</pre>\n</li>\n</ul>\n<a name=\"getType--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getType</h4>\n<pre>public&nbsp;<a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.Type.html\" title=\"enum in stanford.cs106.audio\">StdAudio.AudioEvent.Type</a>&nbsp;getType()</pre>\n</li>\n</ul>\n<a name=\"toString--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>toString</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;toString()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/audio/StdAudio.html\" title=\"class in stanford.cs106.audio\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.Type.html\" title=\"enum in stanford.cs106.audio\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/audio/StdAudio.AudioEvent.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"StdAudio.AudioEvent.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.class.summary\">Nested</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/audio/StdAudio.AudioEventListener.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:02 PDT 2017 -->\n<title>StdAudio.AudioEventListener</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"StdAudio.AudioEventListener\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":6};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],4:[\"t3\",\"Abstract Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.Type.html\" title=\"enum in stanford.cs106.audio\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li>Next&nbsp;Class</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/audio/StdAudio.AudioEventListener.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"StdAudio.AudioEventListener.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.audio</div>\n<h2 title=\"Interface StdAudio.AudioEventListener\" class=\"title\">Interface StdAudio.AudioEventListener</h2>\n</div>\n<div class=\"contentContainer\">\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>Enclosing class:</dt>\n<dd><a href=\"../../../stanford/cs106/audio/StdAudio.html\" title=\"class in stanford.cs106.audio\">StdAudio</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public static interface <span class=\"typeNameLabel\">StdAudio.AudioEventListener</span></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t3\" class=\"tableTab\"><span><a href=\"javascript:show(4);\">Abstract Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/StdAudio.AudioEventListener.html#onAudioEvent-stanford.cs106.audio.StdAudio.AudioEvent-\">onAudioEvent</a></span>(<a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.html\" title=\"class in stanford.cs106.audio\">StdAudio.AudioEvent</a>&nbsp;event)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"onAudioEvent-stanford.cs106.audio.StdAudio.AudioEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>onAudioEvent</h4>\n<pre>void&nbsp;onAudioEvent(<a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.html\" title=\"class in stanford.cs106.audio\">StdAudio.AudioEvent</a>&nbsp;event)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.Type.html\" title=\"enum in stanford.cs106.audio\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li>Next&nbsp;Class</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/audio/StdAudio.AudioEventListener.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"StdAudio.AudioEventListener.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/audio/StdAudio.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:02 PDT 2017 -->\n<title>StdAudio</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"StdAudio\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9,\"i2\":9,\"i3\":9,\"i4\":9,\"i5\":9,\"i6\":9,\"i7\":9,\"i8\":9,\"i9\":9,\"i10\":9,\"i11\":9,\"i12\":9,\"i13\":9,\"i14\":9,\"i15\":9,\"i16\":9,\"i17\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/audio/SplClip.html\" title=\"class in stanford.cs106.audio\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.html\" title=\"class in stanford.cs106.audio\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/audio/StdAudio.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"StdAudio.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.class.summary\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.audio</div>\n<h2 title=\"Class StdAudio\" class=\"title\">Class StdAudio</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.audio.StdAudio</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public final class <span class=\"typeNameLabel\">StdAudio</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n<div class=\"block\"><i>Standard audio</i>. This class provides a basic capability for creating,\n reading, and saving audio.\n <p>\n The audio format uses a sampling rate of 44,100 (CD quality audio), 16-bit,\n monaural.\n \n <p>\n For additional documentation, see <a\n href=\"http://introcs.cs.princeton.edu/15inout\">Section 1.5</a> of\n <i>Introduction to Programming in Java: An Interdisciplinary Approach</i> by\n Robert Sedgewick and Kevin Wayne.</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Nested Class Summary table, listing nested classes, and an explanation\">\n<caption><span>Nested Classes</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Class and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static class&nbsp;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.html\" title=\"class in stanford.cs106.audio\">StdAudio.AudioEvent</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static interface&nbsp;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/StdAudio.AudioEventListener.html\" title=\"interface in stanford.cs106.audio\">StdAudio.AudioEventListener</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/StdAudio.html#SAMPLE_RATE\">SAMPLE_RATE</a></span></code>\n<div class=\"block\">The sample rate - 44,100 Hz for CD quality audio.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/StdAudio.html#addAudioEventListener-stanford.cs106.audio.StdAudio.AudioEventListener-\">addAudioEventListener</a></span>(<a href=\"../../../stanford/cs106/audio/StdAudio.AudioEventListener.html\" title=\"interface in stanford.cs106.audio\">StdAudio.AudioEventListener</a>&nbsp;listener)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/StdAudio.html#clearAudioEventListeners--\">clearAudioEventListeners</a></span>()</code>\n<div class=\"block\">Removes all audio event listeners from being notified of future\n audio events, if any were present.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/StdAudio.html#close--\">close</a></span>()</code>\n<div class=\"block\">Close standard audio.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/StdAudio.html#isMuted--\">isMuted</a></span>()</code>\n<div class=\"block\">Returns whether the audio system is currently muted.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/StdAudio.html#isPaused--\">isPaused</a></span>()</code>\n<div class=\"block\">Returns whether the audio system is currently paused.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/StdAudio.html#loop-java.lang.String-\">loop</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>\n<div class=\"block\">Loop a sound file (in .wav or .au format) in a background thread.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/StdAudio.html#main-java.lang.String:A-\">main</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</code>\n<div class=\"block\">Test client - play an A major scale to standard audio.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static double[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/StdAudio.html#note-double-double-double-\">note</a></span>(double&nbsp;hz,\n    double&nbsp;duration,\n    double&nbsp;amplitude)</code>\n<div class=\"block\">Create a note (sine wave) of the given frequency (Hz), for the given\n duration (seconds) scaled to the given volume (amplitude).</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/StdAudio.html#play-double-\">play</a></span>(double&nbsp;in)</code>\n<div class=\"block\">Write one sample (between -1.0 and +1.0) to standard audio.</div>\n</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/StdAudio.html#play-double:A-\">play</a></span>(double[]&nbsp;input)</code>\n<div class=\"block\">Write an array of samples (between -1.0 and +1.0) to standard audio.</div>\n</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/StdAudio.html#play-double:A-double-\">play</a></span>(double[]&nbsp;input,\n    double&nbsp;duration)</code>\n<div class=\"block\">Write an array of samples (between -1.0 and +1.0) to standard audio.</div>\n</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/StdAudio.html#play-stanford.cs106.audio.Note-double:A-double-\">play</a></span>(<a href=\"../../../stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\">Note</a>&nbsp;note,\n    double[]&nbsp;input,\n    double&nbsp;duration)</code>\n<div class=\"block\">Write an array of samples (between -1.0 and +1.0) to standard audio.</div>\n</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/StdAudio.html#play-java.lang.String-\">play</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>\n<div class=\"block\">Play a sound file (in .wav or .au format) in a background thread.</div>\n</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static double[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/StdAudio.html#read-java.lang.String-\">read</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>\n<div class=\"block\">Read audio samples from a file (in .wav or .au format) and return them as\n a double array with values between -1.0 and +1.0.</div>\n</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/StdAudio.html#removeAudioEventListener-stanford.cs106.audio.StdAudio.AudioEventListener-\">removeAudioEventListener</a></span>(<a href=\"../../../stanford/cs106/audio/StdAudio.AudioEventListener.html\" title=\"interface in stanford.cs106.audio\">StdAudio.AudioEventListener</a>&nbsp;listener)</code>\n<div class=\"block\">Removes the given audio event listener from being notified of future\n audio events, if it was present.</div>\n</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/StdAudio.html#save-java.lang.String-double:A-\">save</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename,\n    double[]&nbsp;input)</code>\n<div class=\"block\">Save the double array as a sound file (using .wav or .au format).</div>\n</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/StdAudio.html#setMute-boolean-\">setMute</a></span>(boolean&nbsp;mute)</code>\n<div class=\"block\">Sets whether the audio system is muted.</div>\n</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/audio/StdAudio.html#setPaused-boolean-\">setPaused</a></span>(boolean&nbsp;pause)</code>\n<div class=\"block\">Sets whether the audio system is paused.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"SAMPLE_RATE\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>SAMPLE_RATE</h4>\n<pre>public static final&nbsp;int SAMPLE_RATE</pre>\n<div class=\"block\">The sample rate - 44,100 Hz for CD quality audio.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#stanford.cs106.audio.StdAudio.SAMPLE_RATE\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"addAudioEventListener-stanford.cs106.audio.StdAudio.AudioEventListener-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addAudioEventListener</h4>\n<pre>public static&nbsp;void&nbsp;addAudioEventListener(<a href=\"../../../stanford/cs106/audio/StdAudio.AudioEventListener.html\" title=\"interface in stanford.cs106.audio\">StdAudio.AudioEventListener</a>&nbsp;listener)</pre>\n</li>\n</ul>\n<a name=\"clearAudioEventListeners--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clearAudioEventListeners</h4>\n<pre>public static&nbsp;void&nbsp;clearAudioEventListeners()</pre>\n<div class=\"block\">Removes all audio event listeners from being notified of future\n audio events, if any were present.  If none were present, has no effect.</div>\n</li>\n</ul>\n<a name=\"close--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>close</h4>\n<pre>public static&nbsp;void&nbsp;close()</pre>\n<div class=\"block\">Close standard audio.</div>\n</li>\n</ul>\n<a name=\"isMuted--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isMuted</h4>\n<pre>public static&nbsp;boolean&nbsp;isMuted()</pre>\n<div class=\"block\">Returns whether the audio system is currently muted.</div>\n</li>\n</ul>\n<a name=\"isPaused--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isPaused</h4>\n<pre>public static&nbsp;boolean&nbsp;isPaused()</pre>\n<div class=\"block\">Returns whether the audio system is currently paused.</div>\n</li>\n</ul>\n<a name=\"loop-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>loop</h4>\n<pre>public static&nbsp;void&nbsp;loop(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</pre>\n<div class=\"block\">Loop a sound file (in .wav or .au format) in a background thread.</div>\n</li>\n</ul>\n<a name=\"note-double-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>note</h4>\n<pre>public static&nbsp;double[]&nbsp;note(double&nbsp;hz,\n                            double&nbsp;duration,\n                            double&nbsp;amplitude)</pre>\n<div class=\"block\">Create a note (sine wave) of the given frequency (Hz), for the given\n duration (seconds) scaled to the given volume (amplitude).</div>\n</li>\n</ul>\n<a name=\"play-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>play</h4>\n<pre>public static&nbsp;void&nbsp;play(double&nbsp;in)</pre>\n<div class=\"block\">Write one sample (between -1.0 and +1.0) to standard audio. If the sample\n is outside the range, it will be clipped.</div>\n</li>\n</ul>\n<a name=\"play-double:A-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>play</h4>\n<pre>public static&nbsp;void&nbsp;play(double[]&nbsp;input)</pre>\n<div class=\"block\">Write an array of samples (between -1.0 and +1.0) to standard audio. If a\n sample is outside the range, it will be clipped.</div>\n</li>\n</ul>\n<a name=\"play-double:A-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>play</h4>\n<pre>public static&nbsp;void&nbsp;play(double[]&nbsp;input,\n                        double&nbsp;duration)</pre>\n<div class=\"block\">Write an array of samples (between -1.0 and +1.0) to standard audio. If a\n sample is outside the range, it will be clipped.</div>\n</li>\n</ul>\n<a name=\"play-stanford.cs106.audio.Note-double:A-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>play</h4>\n<pre>public static&nbsp;void&nbsp;play(<a href=\"../../../stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\">Note</a>&nbsp;note,\n                        double[]&nbsp;input,\n                        double&nbsp;duration)</pre>\n<div class=\"block\">Write an array of samples (between -1.0 and +1.0) to standard audio. If a\n sample is outside the range, it will be clipped.</div>\n</li>\n</ul>\n<a name=\"play-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>play</h4>\n<pre>public static&nbsp;void&nbsp;play(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</pre>\n<div class=\"block\">Play a sound file (in .wav or .au format) in a background thread.</div>\n</li>\n</ul>\n<a name=\"read-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>read</h4>\n<pre>public static&nbsp;double[]&nbsp;read(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</pre>\n<div class=\"block\">Read audio samples from a file (in .wav or .au format) and return them as\n a double array with values between -1.0 and +1.0.</div>\n</li>\n</ul>\n<a name=\"removeAudioEventListener-stanford.cs106.audio.StdAudio.AudioEventListener-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeAudioEventListener</h4>\n<pre>public static&nbsp;void&nbsp;removeAudioEventListener(<a href=\"../../../stanford/cs106/audio/StdAudio.AudioEventListener.html\" title=\"interface in stanford.cs106.audio\">StdAudio.AudioEventListener</a>&nbsp;listener)</pre>\n<div class=\"block\">Removes the given audio event listener from being notified of future\n audio events, if it was present.  If not present, has no effect.</div>\n</li>\n</ul>\n<a name=\"save-java.lang.String-double:A-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>save</h4>\n<pre>public static&nbsp;void&nbsp;save(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename,\n                        double[]&nbsp;input)</pre>\n<div class=\"block\">Save the double array as a sound file (using .wav or .au format).</div>\n</li>\n</ul>\n<a name=\"setMute-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setMute</h4>\n<pre>public static&nbsp;void&nbsp;setMute(boolean&nbsp;mute)</pre>\n<div class=\"block\">Sets whether the audio system is muted.\n If audio is muted, notes do not play and playing methods return immediately.</div>\n</li>\n</ul>\n<a name=\"setPaused-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setPaused</h4>\n<pre>public static&nbsp;void&nbsp;setPaused(boolean&nbsp;pause)</pre>\n<div class=\"block\">Sets whether the audio system is paused.\n If audio is paused, playing methods \"block\" in an infinite while loop.</div>\n</li>\n</ul>\n<a name=\"main-java.lang.String:A-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>main</h4>\n<pre>public static&nbsp;void&nbsp;main(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</pre>\n<div class=\"block\">Test client - play an A major scale to standard audio.</div>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/audio/SplClip.html\" title=\"class in stanford.cs106.audio\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.html\" title=\"class in stanford.cs106.audio\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/audio/StdAudio.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"StdAudio.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.class.summary\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/audio/package-frame.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>stanford.cs106.audio</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<h1 class=\"bar\"><a href=\"../../../stanford/cs106/audio/package-summary.html\" target=\"classFrame\">stanford.cs106.audio</a></h1>\n<div class=\"indexContainer\">\n<h2 title=\"Interfaces\">Interfaces</h2>\n<ul title=\"Interfaces\">\n<li><a href=\"StdAudio.AudioEventListener.html\" title=\"interface in stanford.cs106.audio\" target=\"classFrame\"><span class=\"interfaceName\">StdAudio.AudioEventListener</span></a></li>\n</ul>\n<h2 title=\"Classes\">Classes</h2>\n<ul title=\"Classes\">\n<li><a href=\"Note.html\" title=\"class in stanford.cs106.audio\" target=\"classFrame\">Note</a></li>\n<li><a href=\"SplClip.html\" title=\"class in stanford.cs106.audio\" target=\"classFrame\">SplClip</a></li>\n<li><a href=\"StdAudio.html\" title=\"class in stanford.cs106.audio\" target=\"classFrame\">StdAudio</a></li>\n<li><a href=\"StdAudio.AudioEvent.html\" title=\"class in stanford.cs106.audio\" target=\"classFrame\">StdAudio.AudioEvent</a></li>\n</ul>\n<h2 title=\"Enums\">Enums</h2>\n<ul title=\"Enums\">\n<li><a href=\"Accidental.html\" title=\"enum in stanford.cs106.audio\" target=\"classFrame\">Accidental</a></li>\n<li><a href=\"Pitch.html\" title=\"enum in stanford.cs106.audio\" target=\"classFrame\">Pitch</a></li>\n<li><a href=\"StdAudio.AudioEvent.Type.html\" title=\"enum in stanford.cs106.audio\" target=\"classFrame\">StdAudio.AudioEvent.Type</a></li>\n</ul>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/audio/package-summary.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>stanford.cs106.audio</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"stanford.cs106.audio\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li class=\"navBarCell1Rev\">Package</li>\n<li>Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../acm/util/package-summary.html\">Prev&nbsp;Package</a></li>\n<li><a href=\"../../../stanford/cs106/collections/package-summary.html\">Next&nbsp;Package</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/audio/package-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 title=\"Package\" class=\"title\">Package&nbsp;stanford.cs106.audio</h1>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Interface Summary table, listing interfaces, and an explanation\">\n<caption><span>Interface Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Interface</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/audio/StdAudio.AudioEventListener.html\" title=\"interface in stanford.cs106.audio\">StdAudio.AudioEventListener</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Class Summary table, listing classes, and an explanation\">\n<caption><span>Class Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Class</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\">Note</a></td>\n<td class=\"colLast\">\n<div class=\"block\">This instructor-provided file represents musical notes and is to be used\n by your Melody class.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/audio/SplClip.html\" title=\"class in stanford.cs106.audio\">SplClip</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/audio/StdAudio.html\" title=\"class in stanford.cs106.audio\">StdAudio</a></td>\n<td class=\"colLast\">\n<div class=\"block\"><i>Standard audio</i>.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.html\" title=\"class in stanford.cs106.audio\">StdAudio.AudioEvent</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Enum Summary table, listing enums, and an explanation\">\n<caption><span>Enum Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Enum</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/audio/Accidental.html\" title=\"enum in stanford.cs106.audio\">Accidental</a></td>\n<td class=\"colLast\">\n<div class=\"block\">An Accidental represents a musical accidental: sharp, flat, or natural.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/audio/Pitch.html\" title=\"enum in stanford.cs106.audio\">Pitch</a></td>\n<td class=\"colLast\">\n<div class=\"block\">A Pitch represents a musical pitch.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.Type.html\" title=\"enum in stanford.cs106.audio\">StdAudio.AudioEvent.Type</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n</tbody>\n</table>\n</li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li class=\"navBarCell1Rev\">Package</li>\n<li>Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../acm/util/package-summary.html\">Prev&nbsp;Package</a></li>\n<li><a href=\"../../../stanford/cs106/collections/package-summary.html\">Next&nbsp;Package</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/audio/package-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/audio/package-tree.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>stanford.cs106.audio Class Hierarchy</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"stanford.cs106.audio Class Hierarchy\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../acm/util/package-tree.html\">Prev</a></li>\n<li><a href=\"../../../stanford/cs106/collections/package-tree.html\">Next</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/audio/package-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 class=\"title\">Hierarchy For Package stanford.cs106.audio</h1>\n<span class=\"packageHierarchyLabel\">Package Hierarchies:</span>\n<ul class=\"horizontal\">\n<li><a href=\"../../../overview-tree.html\">All Packages</a></li>\n</ul>\n</div>\n<div class=\"contentContainer\">\n<h2 title=\"Class Hierarchy\">Class Hierarchy</h2>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Object</span></a>\n<ul>\n<li type=\"circle\">stanford.cs106.audio.<a href=\"../../../stanford/cs106/audio/Note.html\" title=\"class in stanford.cs106.audio\"><span class=\"typeNameLink\">Note</span></a></li>\n<li type=\"circle\">stanford.cs106.audio.<a href=\"../../../stanford/cs106/audio/SplClip.html\" title=\"class in stanford.cs106.audio\"><span class=\"typeNameLink\">SplClip</span></a> (implements java.applet.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/AudioClip.html?is-external=true\" title=\"class or interface in java.applet\">AudioClip</a>, javazoom.jlgui.basicplayer.BasicPlayerListener, java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a>)</li>\n<li type=\"circle\">stanford.cs106.audio.<a href=\"../../../stanford/cs106/audio/StdAudio.html\" title=\"class in stanford.cs106.audio\"><span class=\"typeNameLink\">StdAudio</span></a></li>\n<li type=\"circle\">stanford.cs106.audio.<a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.html\" title=\"class in stanford.cs106.audio\"><span class=\"typeNameLink\">StdAudio.AudioEvent</span></a></li>\n</ul>\n</li>\n</ul>\n<h2 title=\"Interface Hierarchy\">Interface Hierarchy</h2>\n<ul>\n<li type=\"circle\">stanford.cs106.audio.<a href=\"../../../stanford/cs106/audio/StdAudio.AudioEventListener.html\" title=\"interface in stanford.cs106.audio\"><span class=\"typeNameLink\">StdAudio.AudioEventListener</span></a></li>\n</ul>\n<h2 title=\"Enum Hierarchy\">Enum Hierarchy</h2>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Object</span></a>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Enum</span></a>&lt;E&gt; (implements java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;T&gt;, java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">stanford.cs106.audio.<a href=\"../../../stanford/cs106/audio/Pitch.html\" title=\"enum in stanford.cs106.audio\"><span class=\"typeNameLink\">Pitch</span></a></li>\n<li type=\"circle\">stanford.cs106.audio.<a href=\"../../../stanford/cs106/audio/StdAudio.AudioEvent.Type.html\" title=\"enum in stanford.cs106.audio\"><span class=\"typeNameLink\">StdAudio.AudioEvent.Type</span></a></li>\n<li type=\"circle\">stanford.cs106.audio.<a href=\"../../../stanford/cs106/audio/Accidental.html\" title=\"enum in stanford.cs106.audio\"><span class=\"typeNameLink\">Accidental</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../acm/util/package-tree.html\">Prev</a></li>\n<li><a href=\"../../../stanford/cs106/collections/package-tree.html\">Next</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/audio/package-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/autograder/GuidedAutograder.ReflectionPanel.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:24 PDT 2017 -->\n<title>GuidedAutograder.ReflectionPanel</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GuidedAutograder.ReflectionPanel\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html\" title=\"class in stanford.cs106.autograder\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.StudentProgramRunnerThread.html\" title=\"class in stanford.cs106.autograder\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/autograder/GuidedAutograder.ReflectionPanel.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GuidedAutograder.ReflectionPanel.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.autograder</div>\n<h2 title=\"Class GuidedAutograder.ReflectionPanel\" class=\"title\">Class GuidedAutograder.ReflectionPanel</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.autograder.GuidedAutograder.ReflectionPanel</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a></dd>\n</dl>\n<dl>\n<dt>Enclosing class:</dt>\n<dd><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html\" title=\"class in stanford.cs106.autograder\">GuidedAutograder</a></dd>\n</dl>\n<hr>\n<br>\n<pre>protected class <span class=\"typeNameLabel\">GuidedAutograder.ReflectionPanel</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>\nimplements <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.ReflectionPanel.html#clazz\">clazz</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true\" title=\"class or interface in javax.swing\">JComboBox</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.ReflectionPanel.html#constantBox\">constantBox</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Field</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.ReflectionPanel.html#constantTable\">constantTable</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.ReflectionPanel.html#constantValueFromBox\">constantValueFromBox</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.ReflectionPanel.html#constantValueToBox\">constantValueToBox</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true\" title=\"class or interface in javax.swing\">JComboBox</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.ReflectionPanel.html#fieldBox\">fieldBox</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Field</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.ReflectionPanel.html#fieldTable\">fieldTable</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.ReflectionPanel.html#fieldValueFromBox\">fieldValueFromBox</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.ReflectionPanel.html#fieldValueToBox\">fieldValueToBox</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true\" title=\"class or interface in javax.swing\">JComboBox</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.ReflectionPanel.html#methodBox\">methodBox</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Method</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.ReflectionPanel.html#methodTable\">methodTable</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.ReflectionPanel.html#object\">object</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.ReflectionPanel.html#ReflectionPanel-java.lang.Class-\">ReflectionPanel</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz)</code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.ReflectionPanel.html#ReflectionPanel-java.lang.Class-java.lang.Object-\">ReflectionPanel</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;object)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.ReflectionPanel.html#actionPerformed-java.awt.event.ActionEvent-\">actionPerformed</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;event)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.ReflectionPanel.html#currentConstantValueGet--\">currentConstantValueGet</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.ReflectionPanel.html#currentConstantValueSet--\">currentConstantValueSet</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.ReflectionPanel.html#currentFieldValueGet--\">currentFieldValueGet</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.ReflectionPanel.html#currentFieldValueSet--\">currentFieldValueSet</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.ReflectionPanel.html#currentMethodCall--\">currentMethodCall</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.ReflectionPanel.html#doLayout--\">doLayout</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.ReflectionPanel.html#setObject-java.lang.Object-\">setObject</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;object)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"clazz\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clazz</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt; clazz</pre>\n</li>\n</ul>\n<a name=\"object\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>object</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a> object</pre>\n</li>\n</ul>\n<a name=\"fieldBox\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fieldBox</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true\" title=\"class or interface in javax.swing\">JComboBox</a> fieldBox</pre>\n</li>\n</ul>\n<a name=\"constantBox\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>constantBox</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true\" title=\"class or interface in javax.swing\">JComboBox</a> constantBox</pre>\n</li>\n</ul>\n<a name=\"methodBox\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>methodBox</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true\" title=\"class or interface in javax.swing\">JComboBox</a> methodBox</pre>\n</li>\n</ul>\n<a name=\"fieldValueFromBox\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fieldValueFromBox</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField</a> fieldValueFromBox</pre>\n</li>\n</ul>\n<a name=\"fieldValueToBox\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fieldValueToBox</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField</a> fieldValueToBox</pre>\n</li>\n</ul>\n<a name=\"constantValueFromBox\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>constantValueFromBox</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField</a> constantValueFromBox</pre>\n</li>\n</ul>\n<a name=\"constantValueToBox\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>constantValueToBox</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html?is-external=true\" title=\"class or interface in javax.swing\">JTextField</a> constantValueToBox</pre>\n</li>\n</ul>\n<a name=\"fieldTable\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fieldTable</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Field</a>&gt; fieldTable</pre>\n</li>\n</ul>\n<a name=\"constantTable\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>constantTable</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Field</a>&gt; constantTable</pre>\n</li>\n</ul>\n<a name=\"methodTable\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>methodTable</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Method</a>&gt; methodTable</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"ReflectionPanel-java.lang.Class-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>ReflectionPanel</h4>\n<pre>public&nbsp;ReflectionPanel(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz)</pre>\n</li>\n</ul>\n<a name=\"ReflectionPanel-java.lang.Class-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>ReflectionPanel</h4>\n<pre>public&nbsp;ReflectionPanel(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;object)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"doLayout--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>doLayout</h4>\n<pre>public&nbsp;void&nbsp;doLayout()</pre>\n</li>\n</ul>\n<a name=\"setObject-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setObject</h4>\n<pre>public&nbsp;void&nbsp;setObject(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;object)</pre>\n</li>\n</ul>\n<a name=\"actionPerformed-java.awt.event.ActionEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>actionPerformed</h4>\n<pre>public&nbsp;void&nbsp;actionPerformed(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;event)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true#actionPerformed-java.awt.event.ActionEvent-\" title=\"class or interface in java.awt.event\">actionPerformed</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"currentFieldValueGet--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>currentFieldValueGet</h4>\n<pre>protected&nbsp;void&nbsp;currentFieldValueGet()</pre>\n</li>\n</ul>\n<a name=\"currentFieldValueSet--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>currentFieldValueSet</h4>\n<pre>protected&nbsp;void&nbsp;currentFieldValueSet()</pre>\n</li>\n</ul>\n<a name=\"currentConstantValueGet--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>currentConstantValueGet</h4>\n<pre>protected&nbsp;void&nbsp;currentConstantValueGet()</pre>\n</li>\n</ul>\n<a name=\"currentConstantValueSet--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>currentConstantValueSet</h4>\n<pre>protected&nbsp;void&nbsp;currentConstantValueSet()</pre>\n</li>\n</ul>\n<a name=\"currentMethodCall--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>currentMethodCall</h4>\n<pre>protected&nbsp;void&nbsp;currentMethodCall()</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html\" title=\"class in stanford.cs106.autograder\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.StudentProgramRunnerThread.html\" title=\"class in stanford.cs106.autograder\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/autograder/GuidedAutograder.ReflectionPanel.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GuidedAutograder.ReflectionPanel.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/autograder/GuidedAutograder.StudentProgramRunnerThread.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:24 PDT 2017 -->\n<title>GuidedAutograder.StudentProgramRunnerThread</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GuidedAutograder.StudentProgramRunnerThread\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.ReflectionPanel.html\" title=\"class in stanford.cs106.autograder\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li>Next&nbsp;Class</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/autograder/GuidedAutograder.StudentProgramRunnerThread.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GuidedAutograder.StudentProgramRunnerThread.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.java.lang.Thread\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.autograder</div>\n<h2 title=\"Class GuidedAutograder.StudentProgramRunnerThread\" class=\"title\">Class GuidedAutograder.StudentProgramRunnerThread</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Thread</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.autograder.GuidedAutograder.StudentProgramRunnerThread</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a></dd>\n</dl>\n<dl>\n<dt>Enclosing class:</dt>\n<dd><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html\" title=\"class in stanford.cs106.autograder\">GuidedAutograder</a></dd>\n</dl>\n<hr>\n<br>\n<pre>protected class <span class=\"typeNameLabel\">GuidedAutograder.StudentProgramRunnerThread</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true\" title=\"class or interface in java.lang\">Thread</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.lang.Thread\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true\" title=\"class or interface in java.lang\">Thread</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.State.html?is-external=true\" title=\"class or interface in java.lang\">Thread.State</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.UncaughtExceptionHandler.html?is-external=true\" title=\"class or interface in java.lang\">Thread.UncaughtExceptionHandler</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.StudentProgramRunnerThread.html#started\">started</a></span></code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.lang.Thread\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true\" title=\"class or interface in java.lang\">Thread</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#MAX_PRIORITY\" title=\"class or interface in java.lang\">MAX_PRIORITY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#MIN_PRIORITY\" title=\"class or interface in java.lang\">MIN_PRIORITY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#NORM_PRIORITY\" title=\"class or interface in java.lang\">NORM_PRIORITY</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.StudentProgramRunnerThread.html#StudentProgramRunnerThread-java.lang.Class-boolean-\">StudentProgramRunnerThread</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                          boolean&nbsp;callInitAndRun)</code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.StudentProgramRunnerThread.html#StudentProgramRunnerThread-java.lang.Class-int-int-boolean-\">StudentProgramRunnerThread</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                          int&nbsp;width,\n                          int&nbsp;height,\n                          boolean&nbsp;callInitAndRun)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true\" title=\"class or interface in javax.swing\">JFrame</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.StudentProgramRunnerThread.html#getFrame--\">getFrame</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.StudentProgramRunnerThread.html#getProgram--\">getProgram</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.StudentProgramRunnerThread.html#killMe--\">killMe</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.StudentProgramRunnerThread.html#run--\">run</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Thread\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true\" title=\"class or interface in java.lang\">Thread</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#activeCount--\" title=\"class or interface in java.lang\">activeCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#checkAccess--\" title=\"class or interface in java.lang\">checkAccess</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#countStackFrames--\" title=\"class or interface in java.lang\">countStackFrames</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#currentThread--\" title=\"class or interface in java.lang\">currentThread</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#destroy--\" title=\"class or interface in java.lang\">destroy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#dumpStack--\" title=\"class or interface in java.lang\">dumpStack</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#enumerate-java.lang.Thread:A-\" title=\"class or interface in java.lang\">enumerate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getAllStackTraces--\" title=\"class or interface in java.lang\">getAllStackTraces</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getContextClassLoader--\" title=\"class or interface in java.lang\">getContextClassLoader</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getDefaultUncaughtExceptionHandler--\" title=\"class or interface in java.lang\">getDefaultUncaughtExceptionHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getId--\" title=\"class or interface in java.lang\">getId</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getName--\" title=\"class or interface in java.lang\">getName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getPriority--\" title=\"class or interface in java.lang\">getPriority</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getStackTrace--\" title=\"class or interface in java.lang\">getStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getState--\" title=\"class or interface in java.lang\">getState</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getThreadGroup--\" title=\"class or interface in java.lang\">getThreadGroup</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getUncaughtExceptionHandler--\" title=\"class or interface in java.lang\">getUncaughtExceptionHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#holdsLock-java.lang.Object-\" title=\"class or interface in java.lang\">holdsLock</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#interrupt--\" title=\"class or interface in java.lang\">interrupt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#interrupted--\" title=\"class or interface in java.lang\">interrupted</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#isAlive--\" title=\"class or interface in java.lang\">isAlive</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#isDaemon--\" title=\"class or interface in java.lang\">isDaemon</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#isInterrupted--\" title=\"class or interface in java.lang\">isInterrupted</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#join--\" title=\"class or interface in java.lang\">join</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#join-long-\" title=\"class or interface in java.lang\">join</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#join-long-int-\" title=\"class or interface in java.lang\">join</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#resume--\" title=\"class or interface in java.lang\">resume</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#setContextClassLoader-java.lang.ClassLoader-\" title=\"class or interface in java.lang\">setContextClassLoader</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#setDaemon-boolean-\" title=\"class or interface in java.lang\">setDaemon</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#setDefaultUncaughtExceptionHandler-java.lang.Thread.UncaughtExceptionHandler-\" title=\"class or interface in java.lang\">setDefaultUncaughtExceptionHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#setName-java.lang.String-\" title=\"class or interface in java.lang\">setName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#setPriority-int-\" title=\"class or interface in java.lang\">setPriority</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#setUncaughtExceptionHandler-java.lang.Thread.UncaughtExceptionHandler-\" title=\"class or interface in java.lang\">setUncaughtExceptionHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#sleep-long-\" title=\"class or interface in java.lang\">sleep</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#sleep-long-int-\" title=\"class or interface in java.lang\">sleep</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#start--\" title=\"class or interface in java.lang\">start</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#stop--\" title=\"class or interface in java.lang\">stop</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#stop-java.lang.Throwable-\" title=\"class or interface in java.lang\">stop</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#suspend--\" title=\"class or interface in java.lang\">suspend</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#yield--\" title=\"class or interface in java.lang\">yield</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"started\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>started</h4>\n<pre>public&nbsp;boolean started</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"StudentProgramRunnerThread-java.lang.Class-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>StudentProgramRunnerThread</h4>\n<pre>public&nbsp;StudentProgramRunnerThread(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                                  boolean&nbsp;callInitAndRun)</pre>\n</li>\n</ul>\n<a name=\"StudentProgramRunnerThread-java.lang.Class-int-int-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>StudentProgramRunnerThread</h4>\n<pre>public&nbsp;StudentProgramRunnerThread(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                                  int&nbsp;width,\n                                  int&nbsp;height,\n                                  boolean&nbsp;callInitAndRun)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"getProgram--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getProgram</h4>\n<pre>public&nbsp;<a href=\"../../../acm/program/Program.html\" title=\"class in acm.program\">Program</a>&nbsp;getProgram()</pre>\n</li>\n</ul>\n<a name=\"getFrame--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFrame</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true\" title=\"class or interface in javax.swing\">JFrame</a>&nbsp;getFrame()</pre>\n</li>\n</ul>\n<a name=\"killMe--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>killMe</h4>\n<pre>public&nbsp;void&nbsp;killMe()</pre>\n</li>\n</ul>\n<a name=\"run--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>run</h4>\n<pre>public&nbsp;void&nbsp;run()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true#run--\" title=\"class or interface in java.lang\">run</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#run--\" title=\"class or interface in java.lang\">run</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true\" title=\"class or interface in java.lang\">Thread</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.ReflectionPanel.html\" title=\"class in stanford.cs106.autograder\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li>Next&nbsp;Class</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/autograder/GuidedAutograder.StudentProgramRunnerThread.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GuidedAutograder.StudentProgramRunnerThread.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.java.lang.Thread\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/autograder/GuidedAutograder.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:24 PDT 2017 -->\n<title>GuidedAutograder</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GuidedAutograder\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":10,\"i16\":10,\"i17\":10,\"i18\":10,\"i19\":10,\"i20\":10,\"i21\":10,\"i22\":9,\"i23\":10,\"i24\":10,\"i25\":10,\"i26\":10,\"i27\":10,\"i28\":10,\"i29\":10,\"i30\":10,\"i31\":10,\"i32\":10,\"i33\":10,\"i34\":10,\"i35\":9,\"i36\":10,\"i37\":10,\"i38\":10,\"i39\":10,\"i40\":10,\"i41\":10,\"i42\":10,\"i43\":10,\"i44\":10,\"i45\":10,\"i46\":10,\"i47\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Class</li>\n<li><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.ReflectionPanel.html\" title=\"class in stanford.cs106.autograder\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/autograder/GuidedAutograder.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GuidedAutograder.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.class.summary\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.autograder</div>\n<h2 title=\"Class GuidedAutograder\" class=\"title\">Class GuidedAutograder</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.autograder.GuidedAutograder</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeListener</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public abstract class <span class=\"typeNameLabel\">GuidedAutograder</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>\nimplements <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeListener</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Nested Class Summary table, listing nested classes, and an explanation\">\n<caption><span>Nested Classes</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Class and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected class&nbsp;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.ReflectionPanel.html\" title=\"class in stanford.cs106.autograder\">GuidedAutograder.ReflectionPanel</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected class&nbsp;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.StudentProgramRunnerThread.html\" title=\"class in stanford.cs106.autograder\">GuidedAutograder.StudentProgramRunnerThread</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#ASSERT_OUTPUT_PREFIX\">ASSERT_OUTPUT_PREFIX</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#AUTHOR\">AUTHOR</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true\" title=\"class or interface in javax.swing\">JFrame</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#autograderFrame\">autograderFrame</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#failCount\">failCount</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#GRID_LINE_COLOR\">GRID_LINE_COLOR</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JCheckBox.html?is-external=true\" title=\"class or interface in javax.swing\">JCheckBox</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#initRunBox\">initRunBox</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#INPUTS_DIR\">INPUTS_DIR</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true\" title=\"class or interface in javax.swing\">JComboBox</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#inputsBox\">inputsBox</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#JUNIT_CLASSES\">JUNIT_CLASSES</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#labelWidth\">labelWidth</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#LATE_DAYS_FILE\">LATE_DAYS_FILE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#LAUNCH_CLASSES\">LAUNCH_CLASSES</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/LookAndFeel.html?is-external=true\" title=\"class or interface in javax.swing\">LookAndFeel</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#lookAndFeel\">lookAndFeel</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#MESSAGE_LOG_COLS\">MESSAGE_LOG_COLS</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#MESSAGE_LOG_FONT\">MESSAGE_LOG_FONT</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#MESSAGE_LOG_ROWS\">MESSAGE_LOG_ROWS</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextArea.html?is-external=true\" title=\"class or interface in javax.swing\">JTextArea</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#messageLog\">messageLog</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JScrollPane.html?is-external=true\" title=\"class or interface in javax.swing\">JScrollPane</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#messageLogScrollPane\">messageLogScrollPane</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true\" title=\"class or interface in javax.swing\">JComboBox</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#outputsBox\">outputsBox</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#overallPanel\">overallPanel</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#panelTable\">panelTable</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#passCount\">passCount</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#PRINT_PASSING_ASSERTS\">PRINT_PASSING_ASSERTS</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"../../../acm/gui/IntField.html\" title=\"class in acm.gui\">IntField</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#randomIntField\">randomIntField</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"../../../acm/gui/IntField.html\" title=\"class in acm.gui\">IntField</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#randomSeedField\">randomSeedField</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#REFLECTION_PANEL_CLASSES\">REFLECTION_PANEL_CLASSES</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;,<a href=\"../../../stanford/cs106/autograder/GuidedAutograder.ReflectionPanel.html\" title=\"class in stanford.cs106.autograder\">GuidedAutograder.ReflectionPanel</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#reflectionPanels\">reflectionPanels</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JCheckBox.html?is-external=true\" title=\"class or interface in javax.swing\">JCheckBox</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#restartBox\">restartBox</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"../../../stanford/cs106/autograder/GuidedAutograder.StudentProgramRunnerThread.html\" title=\"class in stanford.cs106.autograder\">GuidedAutograder.StudentProgramRunnerThread</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#runnerThread\">runnerThread</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#SET_LOOK_AND_FEEL\">SET_LOOK_AND_FEEL</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#SHOW_DELAY_PANEL\">SHOW_DELAY_PANEL</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#SHOW_FONT_PANEL\">SHOW_FONT_PANEL</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#SHOW_INIT_RUN_BOXES\">SHOW_INIT_RUN_BOXES</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#SHOW_INPUT_INJECT_PANEL\">SHOW_INPUT_INJECT_PANEL</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#SHOW_JUNIT_PANEL\">SHOW_JUNIT_PANEL</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#SHOW_MESSAGELOG_PANEL\">SHOW_MESSAGELOG_PANEL</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#SHOW_RANDOM_PANEL\">SHOW_RANDOM_PANEL</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#SHOW_REFLECTION_FIELDS\">SHOW_REFLECTION_FIELDS</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#SHOW_REFLECTION_METHODS\">SHOW_REFLECTION_METHODS</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#SHOW_REFLECTION_PANELS\">SHOW_REFLECTION_PANELS</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#SHOW_USER_INPUT_PANEL\">SHOW_USER_INPUT_PANEL</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#SHOW_WINDOW_PANEL\">SHOW_WINDOW_PANEL</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;? extends <a href=\"../../../acm/program/Program.html\" title=\"class in acm.program\">Program</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#STUDENT_CLASS\">STUDENT_CLASS</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"../../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#studentProgram\">studentProgram</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#SUPPORTED_FIELD_TYPES\">SUPPORTED_FIELD_TYPES</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JSlider.html?is-external=true\" title=\"class or interface in javax.swing\">JSlider</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#timeSlider\">timeSlider</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#TITLE\">TITLE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JCheckBox.html?is-external=true\" title=\"class or interface in javax.swing\">JCheckBox</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#uppercaseBox\">uppercaseBox</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#USER_INPUTS_ADDITIONAL\">USER_INPUTS_ADDITIONAL</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#VERSION\">VERSION</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#windowHeight\">windowHeight</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#windowWidth\">windowWidth</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#GuidedAutograder--\">GuidedAutograder</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#actionPerformed-java.awt.event.ActionEvent-\">actionPerformed</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;event)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#addPanel-java.lang.String-java.util.Collection-\">addPanel</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&gt;&nbsp;components)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#addPanel-java.lang.String-java.awt.Component...-\">addPanel</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>...&nbsp;components)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#addPanel-java.lang.String-java.awt.LayoutManager-java.util.Collection-\">addPanel</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/LayoutManager.html?is-external=true\" title=\"class or interface in java.awt\">LayoutManager</a>&nbsp;layout,\n        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&gt;&nbsp;components)</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#addPanel-java.lang.String-java.awt.LayoutManager-java.awt.Component...-\">addPanel</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/LayoutManager.html?is-external=true\" title=\"class or interface in java.awt\">LayoutManager</a>&nbsp;layout,\n        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>...&nbsp;components)</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#assertEquals-java.lang.String-java.lang.Object-java.lang.Object-\">assertEquals</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;msg,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;expected,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;actual)</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#assertFalse-java.lang.String-boolean-\">assertFalse</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;msg,\n           boolean&nbsp;b)</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#assertPrintCounts--\">assertPrintCounts</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#assertPrintCounts-boolean-\">assertPrintCounts</a></span>(boolean&nbsp;resetAfter)</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#assertResetCounts--\">assertResetCounts</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#assertTrue-java.lang.String-boolean-\">assertTrue</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;msg,\n          boolean&nbsp;b)</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#constantsSetAllWindow-int-int-\">constantsSetAllWindow</a></span>(int&nbsp;width,\n                     int&nbsp;height)</code>&nbsp;</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected &lt;T&gt;&nbsp;T</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#constGet-java.lang.String-\">constGet</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>&nbsp;</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#constGetInt-java.lang.String-\">constGetInt</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>&nbsp;</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#constSet-java.lang.String-java.lang.Object-\">constSet</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#constSetMaybe-java.lang.String-double-java.lang.Object-\">constSetMaybe</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n             double&nbsp;value,\n             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;defaultValue)</code>&nbsp;</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#constSetMaybe-java.lang.String-int-java.lang.Object-\">constSetMaybe</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n             int&nbsp;value,\n             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;defaultValue)</code>&nbsp;</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#createComponents--\">createComponents</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#diffOutput--\">diffOutput</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#displayLateness--\">displayLateness</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#doExtraLayout--\">doExtraLayout</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#doLayout--\">doLayout</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#getGridLineColor--\">getGridLineColor</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#getWindowHeight--\">getWindowHeight</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i24\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#getWindowWidth--\">getWindowWidth</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i25\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#gridLineAdd-double-double-double-double-\">gridLineAdd</a></span>(double&nbsp;x1,\n           double&nbsp;y1,\n           double&nbsp;x2,\n           double&nbsp;y2)</code>&nbsp;</td>\n</tr>\n<tr id=\"i26\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#gridLineAdd-acm.graphics.GContainer-double-double-double-double-\">gridLineAdd</a></span>(<a href=\"../../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a>&nbsp;container,\n           double&nbsp;x1,\n           double&nbsp;y1,\n           double&nbsp;x2,\n           double&nbsp;y2)</code>&nbsp;</td>\n</tr>\n<tr id=\"i27\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#gridLineRemoveAll--\">gridLineRemoveAll</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i28\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#gridLineRemoveAll-acm.graphics.GContainer-\">gridLineRemoveAll</a></span>(<a href=\"../../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a>&nbsp;container)</code>&nbsp;</td>\n</tr>\n<tr id=\"i29\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#gridLinesExist--\">gridLinesExist</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i30\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#gridLinesExist-acm.graphics.GContainer-\">gridLinesExist</a></span>(<a href=\"../../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a>&nbsp;container)</code>&nbsp;</td>\n</tr>\n<tr id=\"i31\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#injectInput--\">injectInput</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i32\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#junitLaunch-java.lang.Class-\">junitLaunch</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz)</code>&nbsp;</td>\n</tr>\n<tr id=\"i33\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#junitLaunch-java.lang.String-\">junitLaunch</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className)</code>&nbsp;</td>\n</tr>\n<tr id=\"i34\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#printlnLog-java.lang.String-\">printlnLog</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;msg)</code>&nbsp;</td>\n</tr>\n<tr id=\"i35\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#setGridLineColor-java.awt.Color-\">setGridLineColor</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>&nbsp;</td>\n</tr>\n<tr id=\"i36\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#setWindowHeight-int-\">setWindowHeight</a></span>(int&nbsp;height)</code>&nbsp;</td>\n</tr>\n<tr id=\"i37\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#setWindowSize-int-int-\">setWindowSize</a></span>(int&nbsp;width,\n             int&nbsp;height)</code>&nbsp;</td>\n</tr>\n<tr id=\"i38\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#setWindowWidth-int-\">setWindowWidth</a></span>(int&nbsp;width)</code>&nbsp;</td>\n</tr>\n<tr id=\"i39\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#start--\">start</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i40\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#stateChanged-javax.swing.event.ChangeEvent-\">stateChanged</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeEvent</a>&nbsp;event)</code>&nbsp;</td>\n</tr>\n<tr id=\"i41\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#studentProgramThreadKill--\">studentProgramThreadKill</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i42\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#studentProgramThreadLaunch--\">studentProgramThreadLaunch</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i43\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#studentProgramThreadLaunch-java.lang.Class-\">studentProgramThreadLaunch</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;? extends <a href=\"../../../acm/program/Program.html\" title=\"class in acm.program\">Program</a>&gt;&nbsp;clazz)</code>&nbsp;</td>\n</tr>\n<tr id=\"i44\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#studentProgramThreadLaunch-java.lang.String-\">studentProgramThreadLaunch</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className)</code>&nbsp;</td>\n</tr>\n<tr id=\"i45\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#studentProgramThreadLaunchIfBoxChecked--\">studentProgramThreadLaunchIfBoxChecked</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i46\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#updateAllReflectionPanels--\">updateAllReflectionPanels</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i47\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html#userInput-java.lang.String-java.awt.event.ActionEvent-\">userInput</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;cmd,\n         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;event)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"STUDENT_CLASS\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>STUDENT_CLASS</h4>\n<pre>protected static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;? extends <a href=\"../../../acm/program/Program.html\" title=\"class in acm.program\">Program</a>&gt; STUDENT_CLASS</pre>\n</li>\n</ul>\n<a name=\"REFLECTION_PANEL_CLASSES\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>REFLECTION_PANEL_CLASSES</h4>\n<pre>protected static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;[] REFLECTION_PANEL_CLASSES</pre>\n</li>\n</ul>\n<a name=\"LAUNCH_CLASSES\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>LAUNCH_CLASSES</h4>\n<pre>protected static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;[] LAUNCH_CLASSES</pre>\n</li>\n</ul>\n<a name=\"JUNIT_CLASSES\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>JUNIT_CLASSES</h4>\n<pre>protected static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;[] JUNIT_CLASSES</pre>\n</li>\n</ul>\n<a name=\"USER_INPUTS_ADDITIONAL\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>USER_INPUTS_ADDITIONAL</h4>\n<pre>protected static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt; USER_INPUTS_ADDITIONAL</pre>\n</li>\n</ul>\n<a name=\"VERSION\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>VERSION</h4>\n<pre>protected static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> VERSION</pre>\n</li>\n</ul>\n<a name=\"AUTHOR\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>AUTHOR</h4>\n<pre>protected static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> AUTHOR</pre>\n</li>\n</ul>\n<a name=\"TITLE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>TITLE</h4>\n<pre>protected static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> TITLE</pre>\n</li>\n</ul>\n<a name=\"GRID_LINE_COLOR\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>GRID_LINE_COLOR</h4>\n<pre>protected static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> GRID_LINE_COLOR</pre>\n</li>\n</ul>\n<a name=\"INPUTS_DIR\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>INPUTS_DIR</h4>\n<pre>protected static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> INPUTS_DIR</pre>\n</li>\n</ul>\n<a name=\"LATE_DAYS_FILE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>LATE_DAYS_FILE</h4>\n<pre>protected static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> LATE_DAYS_FILE</pre>\n</li>\n</ul>\n<a name=\"ASSERT_OUTPUT_PREFIX\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>ASSERT_OUTPUT_PREFIX</h4>\n<pre>protected static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> ASSERT_OUTPUT_PREFIX</pre>\n</li>\n</ul>\n<a name=\"SHOW_WINDOW_PANEL\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SHOW_WINDOW_PANEL</h4>\n<pre>protected static&nbsp;boolean SHOW_WINDOW_PANEL</pre>\n</li>\n</ul>\n<a name=\"SHOW_FONT_PANEL\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SHOW_FONT_PANEL</h4>\n<pre>protected static&nbsp;boolean SHOW_FONT_PANEL</pre>\n</li>\n</ul>\n<a name=\"SHOW_DELAY_PANEL\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SHOW_DELAY_PANEL</h4>\n<pre>protected static&nbsp;boolean SHOW_DELAY_PANEL</pre>\n</li>\n</ul>\n<a name=\"SHOW_REFLECTION_PANELS\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SHOW_REFLECTION_PANELS</h4>\n<pre>protected static&nbsp;boolean SHOW_REFLECTION_PANELS</pre>\n</li>\n</ul>\n<a name=\"SHOW_REFLECTION_FIELDS\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SHOW_REFLECTION_FIELDS</h4>\n<pre>protected static&nbsp;boolean SHOW_REFLECTION_FIELDS</pre>\n</li>\n</ul>\n<a name=\"SHOW_REFLECTION_METHODS\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SHOW_REFLECTION_METHODS</h4>\n<pre>protected static&nbsp;boolean SHOW_REFLECTION_METHODS</pre>\n</li>\n</ul>\n<a name=\"SHOW_MESSAGELOG_PANEL\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SHOW_MESSAGELOG_PANEL</h4>\n<pre>protected static&nbsp;boolean SHOW_MESSAGELOG_PANEL</pre>\n</li>\n</ul>\n<a name=\"SHOW_INPUT_INJECT_PANEL\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SHOW_INPUT_INJECT_PANEL</h4>\n<pre>protected static&nbsp;boolean SHOW_INPUT_INJECT_PANEL</pre>\n</li>\n</ul>\n<a name=\"SHOW_USER_INPUT_PANEL\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SHOW_USER_INPUT_PANEL</h4>\n<pre>protected static&nbsp;boolean SHOW_USER_INPUT_PANEL</pre>\n</li>\n</ul>\n<a name=\"SHOW_RANDOM_PANEL\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SHOW_RANDOM_PANEL</h4>\n<pre>protected static&nbsp;boolean SHOW_RANDOM_PANEL</pre>\n</li>\n</ul>\n<a name=\"SHOW_JUNIT_PANEL\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SHOW_JUNIT_PANEL</h4>\n<pre>protected static&nbsp;boolean SHOW_JUNIT_PANEL</pre>\n</li>\n</ul>\n<a name=\"SHOW_INIT_RUN_BOXES\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SHOW_INIT_RUN_BOXES</h4>\n<pre>protected static&nbsp;boolean SHOW_INIT_RUN_BOXES</pre>\n</li>\n</ul>\n<a name=\"MESSAGE_LOG_ROWS\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MESSAGE_LOG_ROWS</h4>\n<pre>protected static&nbsp;int MESSAGE_LOG_ROWS</pre>\n</li>\n</ul>\n<a name=\"MESSAGE_LOG_COLS\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MESSAGE_LOG_COLS</h4>\n<pre>protected static&nbsp;int MESSAGE_LOG_COLS</pre>\n</li>\n</ul>\n<a name=\"MESSAGE_LOG_FONT\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MESSAGE_LOG_FONT</h4>\n<pre>protected static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a> MESSAGE_LOG_FONT</pre>\n</li>\n</ul>\n<a name=\"PRINT_PASSING_ASSERTS\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>PRINT_PASSING_ASSERTS</h4>\n<pre>protected static&nbsp;boolean PRINT_PASSING_ASSERTS</pre>\n</li>\n</ul>\n<a name=\"SET_LOOK_AND_FEEL\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SET_LOOK_AND_FEEL</h4>\n<pre>protected static&nbsp;boolean SET_LOOK_AND_FEEL</pre>\n</li>\n</ul>\n<a name=\"SUPPORTED_FIELD_TYPES\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SUPPORTED_FIELD_TYPES</h4>\n<pre>protected static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&gt; SUPPORTED_FIELD_TYPES</pre>\n</li>\n</ul>\n<a name=\"studentProgram\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>studentProgram</h4>\n<pre>protected&nbsp;<a href=\"../../../acm/program/Program.html\" title=\"class in acm.program\">Program</a> studentProgram</pre>\n</li>\n</ul>\n<a name=\"runnerThread\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>runnerThread</h4>\n<pre>protected&nbsp;<a href=\"../../../stanford/cs106/autograder/GuidedAutograder.StudentProgramRunnerThread.html\" title=\"class in stanford.cs106.autograder\">GuidedAutograder.StudentProgramRunnerThread</a> runnerThread</pre>\n</li>\n</ul>\n<a name=\"overallPanel\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>overallPanel</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a> overallPanel</pre>\n</li>\n</ul>\n<a name=\"initRunBox\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>initRunBox</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JCheckBox.html?is-external=true\" title=\"class or interface in javax.swing\">JCheckBox</a> initRunBox</pre>\n</li>\n</ul>\n<a name=\"restartBox\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>restartBox</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JCheckBox.html?is-external=true\" title=\"class or interface in javax.swing\">JCheckBox</a> restartBox</pre>\n</li>\n</ul>\n<a name=\"inputsBox\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>inputsBox</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true\" title=\"class or interface in javax.swing\">JComboBox</a> inputsBox</pre>\n</li>\n</ul>\n<a name=\"outputsBox\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>outputsBox</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true\" title=\"class or interface in javax.swing\">JComboBox</a> outputsBox</pre>\n</li>\n</ul>\n<a name=\"autograderFrame\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>autograderFrame</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true\" title=\"class or interface in javax.swing\">JFrame</a> autograderFrame</pre>\n</li>\n</ul>\n<a name=\"messageLogScrollPane\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>messageLogScrollPane</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JScrollPane.html?is-external=true\" title=\"class or interface in javax.swing\">JScrollPane</a> messageLogScrollPane</pre>\n</li>\n</ul>\n<a name=\"timeSlider\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>timeSlider</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JSlider.html?is-external=true\" title=\"class or interface in javax.swing\">JSlider</a> timeSlider</pre>\n</li>\n</ul>\n<a name=\"randomSeedField\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>randomSeedField</h4>\n<pre>protected&nbsp;<a href=\"../../../acm/gui/IntField.html\" title=\"class in acm.gui\">IntField</a> randomSeedField</pre>\n</li>\n</ul>\n<a name=\"randomIntField\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>randomIntField</h4>\n<pre>protected&nbsp;<a href=\"../../../acm/gui/IntField.html\" title=\"class in acm.gui\">IntField</a> randomIntField</pre>\n</li>\n</ul>\n<a name=\"uppercaseBox\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>uppercaseBox</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JCheckBox.html?is-external=true\" title=\"class or interface in javax.swing\">JCheckBox</a> uppercaseBox</pre>\n</li>\n</ul>\n<a name=\"messageLog\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>messageLog</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextArea.html?is-external=true\" title=\"class or interface in javax.swing\">JTextArea</a> messageLog</pre>\n</li>\n</ul>\n<a name=\"panelTable\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>panelTable</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&gt; panelTable</pre>\n</li>\n</ul>\n<a name=\"reflectionPanels\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>reflectionPanels</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;,<a href=\"../../../stanford/cs106/autograder/GuidedAutograder.ReflectionPanel.html\" title=\"class in stanford.cs106.autograder\">GuidedAutograder.ReflectionPanel</a>&gt; reflectionPanels</pre>\n</li>\n</ul>\n<a name=\"labelWidth\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>labelWidth</h4>\n<pre>protected&nbsp;int labelWidth</pre>\n</li>\n</ul>\n<a name=\"windowWidth\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>windowWidth</h4>\n<pre>protected&nbsp;int windowWidth</pre>\n</li>\n</ul>\n<a name=\"windowHeight\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>windowHeight</h4>\n<pre>protected&nbsp;int windowHeight</pre>\n</li>\n</ul>\n<a name=\"passCount\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>passCount</h4>\n<pre>protected&nbsp;int passCount</pre>\n</li>\n</ul>\n<a name=\"failCount\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>failCount</h4>\n<pre>protected&nbsp;int failCount</pre>\n</li>\n</ul>\n<a name=\"lookAndFeel\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>lookAndFeel</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/LookAndFeel.html?is-external=true\" title=\"class or interface in javax.swing\">LookAndFeel</a> lookAndFeel</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GuidedAutograder--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GuidedAutograder</h4>\n<pre>public&nbsp;GuidedAutograder()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"getGridLineColor--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getGridLineColor</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;getGridLineColor()</pre>\n</li>\n</ul>\n<a name=\"setGridLineColor-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setGridLineColor</h4>\n<pre>public static&nbsp;void&nbsp;setGridLineColor(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n</li>\n</ul>\n<a name=\"start--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>start</h4>\n<pre>public&nbsp;void&nbsp;start()</pre>\n</li>\n</ul>\n<a name=\"createComponents--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createComponents</h4>\n<pre>protected&nbsp;void&nbsp;createComponents()</pre>\n</li>\n</ul>\n<a name=\"doLayout--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>doLayout</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&nbsp;doLayout()</pre>\n</li>\n</ul>\n<a name=\"doExtraLayout--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>doExtraLayout</h4>\n<pre>protected&nbsp;void&nbsp;doExtraLayout()</pre>\n</li>\n</ul>\n<a name=\"actionPerformed-java.awt.event.ActionEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>actionPerformed</h4>\n<pre>public&nbsp;void&nbsp;actionPerformed(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;event)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true#actionPerformed-java.awt.event.ActionEvent-\" title=\"class or interface in java.awt.event\">actionPerformed</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"stateChanged-javax.swing.event.ChangeEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>stateChanged</h4>\n<pre>public&nbsp;void&nbsp;stateChanged(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeEvent</a>&nbsp;event)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true#stateChanged-javax.swing.event.ChangeEvent-\" title=\"class or interface in javax.swing.event\">stateChanged</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"assertTrue-java.lang.String-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>assertTrue</h4>\n<pre>protected&nbsp;void&nbsp;assertTrue(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;msg,\n                          boolean&nbsp;b)</pre>\n</li>\n</ul>\n<a name=\"assertFalse-java.lang.String-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>assertFalse</h4>\n<pre>protected&nbsp;void&nbsp;assertFalse(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;msg,\n                           boolean&nbsp;b)</pre>\n</li>\n</ul>\n<a name=\"assertEquals-java.lang.String-java.lang.Object-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>assertEquals</h4>\n<pre>protected&nbsp;void&nbsp;assertEquals(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;msg,\n                            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;expected,\n                            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;actual)</pre>\n</li>\n</ul>\n<a name=\"assertPrintCounts--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>assertPrintCounts</h4>\n<pre>protected&nbsp;void&nbsp;assertPrintCounts()</pre>\n</li>\n</ul>\n<a name=\"assertPrintCounts-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>assertPrintCounts</h4>\n<pre>protected&nbsp;void&nbsp;assertPrintCounts(boolean&nbsp;resetAfter)</pre>\n</li>\n</ul>\n<a name=\"assertResetCounts--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>assertResetCounts</h4>\n<pre>protected&nbsp;void&nbsp;assertResetCounts()</pre>\n</li>\n</ul>\n<a name=\"addPanel-java.lang.String-java.util.Collection-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addPanel</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a>&nbsp;addPanel(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n                          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&gt;&nbsp;components)</pre>\n</li>\n</ul>\n<a name=\"addPanel-java.lang.String-java.awt.Component...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addPanel</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a>&nbsp;addPanel(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n                          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>...&nbsp;components)</pre>\n</li>\n</ul>\n<a name=\"addPanel-java.lang.String-java.awt.LayoutManager-java.util.Collection-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addPanel</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a>&nbsp;addPanel(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n                          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/LayoutManager.html?is-external=true\" title=\"class or interface in java.awt\">LayoutManager</a>&nbsp;layout,\n                          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&gt;&nbsp;components)</pre>\n</li>\n</ul>\n<a name=\"addPanel-java.lang.String-java.awt.LayoutManager-java.awt.Component...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addPanel</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a>&nbsp;addPanel(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n                          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/LayoutManager.html?is-external=true\" title=\"class or interface in java.awt\">LayoutManager</a>&nbsp;layout,\n                          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>...&nbsp;components)</pre>\n</li>\n</ul>\n<a name=\"diffOutput--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>diffOutput</h4>\n<pre>protected&nbsp;void&nbsp;diffOutput()</pre>\n</li>\n</ul>\n<a name=\"injectInput--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>injectInput</h4>\n<pre>protected&nbsp;void&nbsp;injectInput()</pre>\n</li>\n</ul>\n<a name=\"userInput-java.lang.String-java.awt.event.ActionEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>userInput</h4>\n<pre>protected&nbsp;void&nbsp;userInput(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;cmd,\n                         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;event)</pre>\n</li>\n</ul>\n<a name=\"studentProgramThreadKill--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>studentProgramThreadKill</h4>\n<pre>protected&nbsp;void&nbsp;studentProgramThreadKill()</pre>\n</li>\n</ul>\n<a name=\"studentProgramThreadLaunchIfBoxChecked--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>studentProgramThreadLaunchIfBoxChecked</h4>\n<pre>protected&nbsp;void&nbsp;studentProgramThreadLaunchIfBoxChecked()</pre>\n</li>\n</ul>\n<a name=\"studentProgramThreadLaunch--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>studentProgramThreadLaunch</h4>\n<pre>protected&nbsp;void&nbsp;studentProgramThreadLaunch()</pre>\n</li>\n</ul>\n<a name=\"studentProgramThreadLaunch-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>studentProgramThreadLaunch</h4>\n<pre>protected&nbsp;void&nbsp;studentProgramThreadLaunch(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className)</pre>\n</li>\n</ul>\n<a name=\"junitLaunch-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>junitLaunch</h4>\n<pre>protected&nbsp;void&nbsp;junitLaunch(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className)</pre>\n</li>\n</ul>\n<a name=\"junitLaunch-java.lang.Class-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>junitLaunch</h4>\n<pre>protected&nbsp;void&nbsp;junitLaunch(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz)</pre>\n</li>\n</ul>\n<a name=\"studentProgramThreadLaunch-java.lang.Class-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>studentProgramThreadLaunch</h4>\n<pre>protected&nbsp;void&nbsp;studentProgramThreadLaunch(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;? extends <a href=\"../../../acm/program/Program.html\" title=\"class in acm.program\">Program</a>&gt;&nbsp;clazz)</pre>\n</li>\n</ul>\n<a name=\"constantsSetAllWindow-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>constantsSetAllWindow</h4>\n<pre>protected&nbsp;void&nbsp;constantsSetAllWindow(int&nbsp;width,\n                                     int&nbsp;height)</pre>\n</li>\n</ul>\n<a name=\"constGet-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>constGet</h4>\n<pre>protected&nbsp;&lt;T&gt;&nbsp;T&nbsp;constGet(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n</li>\n</ul>\n<a name=\"constGetInt-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>constGetInt</h4>\n<pre>protected&nbsp;int&nbsp;constGetInt(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n</li>\n</ul>\n<a name=\"constSet-java.lang.String-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>constSet</h4>\n<pre>protected&nbsp;void&nbsp;constSet(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n                        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"constSetMaybe-java.lang.String-int-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>constSetMaybe</h4>\n<pre>protected&nbsp;void&nbsp;constSetMaybe(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n                             int&nbsp;value,\n                             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;defaultValue)</pre>\n</li>\n</ul>\n<a name=\"constSetMaybe-java.lang.String-double-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>constSetMaybe</h4>\n<pre>protected&nbsp;void&nbsp;constSetMaybe(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n                             double&nbsp;value,\n                             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;defaultValue)</pre>\n</li>\n</ul>\n<a name=\"getWindowWidth--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getWindowWidth</h4>\n<pre>protected&nbsp;int&nbsp;getWindowWidth()</pre>\n</li>\n</ul>\n<a name=\"getWindowHeight--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getWindowHeight</h4>\n<pre>protected&nbsp;int&nbsp;getWindowHeight()</pre>\n</li>\n</ul>\n<a name=\"setWindowWidth-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setWindowWidth</h4>\n<pre>protected&nbsp;void&nbsp;setWindowWidth(int&nbsp;width)</pre>\n</li>\n</ul>\n<a name=\"setWindowHeight-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setWindowHeight</h4>\n<pre>protected&nbsp;void&nbsp;setWindowHeight(int&nbsp;height)</pre>\n</li>\n</ul>\n<a name=\"setWindowSize-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setWindowSize</h4>\n<pre>protected&nbsp;void&nbsp;setWindowSize(int&nbsp;width,\n                             int&nbsp;height)</pre>\n</li>\n</ul>\n<a name=\"displayLateness--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>displayLateness</h4>\n<pre>protected&nbsp;void&nbsp;displayLateness()</pre>\n</li>\n</ul>\n<a name=\"gridLineAdd-acm.graphics.GContainer-double-double-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>gridLineAdd</h4>\n<pre>protected&nbsp;void&nbsp;gridLineAdd(<a href=\"../../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a>&nbsp;container,\n                           double&nbsp;x1,\n                           double&nbsp;y1,\n                           double&nbsp;x2,\n                           double&nbsp;y2)</pre>\n</li>\n</ul>\n<a name=\"gridLineAdd-double-double-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>gridLineAdd</h4>\n<pre>protected&nbsp;void&nbsp;gridLineAdd(double&nbsp;x1,\n                           double&nbsp;y1,\n                           double&nbsp;x2,\n                           double&nbsp;y2)</pre>\n</li>\n</ul>\n<a name=\"gridLinesExist-acm.graphics.GContainer-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>gridLinesExist</h4>\n<pre>protected&nbsp;boolean&nbsp;gridLinesExist(<a href=\"../../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a>&nbsp;container)</pre>\n</li>\n</ul>\n<a name=\"gridLinesExist--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>gridLinesExist</h4>\n<pre>protected&nbsp;boolean&nbsp;gridLinesExist()</pre>\n</li>\n</ul>\n<a name=\"gridLineRemoveAll-acm.graphics.GContainer-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>gridLineRemoveAll</h4>\n<pre>protected&nbsp;void&nbsp;gridLineRemoveAll(<a href=\"../../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a>&nbsp;container)</pre>\n</li>\n</ul>\n<a name=\"gridLineRemoveAll--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>gridLineRemoveAll</h4>\n<pre>protected&nbsp;void&nbsp;gridLineRemoveAll()</pre>\n</li>\n</ul>\n<a name=\"printlnLog-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>printlnLog</h4>\n<pre>protected&nbsp;void&nbsp;printlnLog(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;msg)</pre>\n</li>\n</ul>\n<a name=\"updateAllReflectionPanels--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>updateAllReflectionPanels</h4>\n<pre>protected&nbsp;void&nbsp;updateAllReflectionPanels()</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Class</li>\n<li><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.ReflectionPanel.html\" title=\"class in stanford.cs106.autograder\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/autograder/GuidedAutograder.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GuidedAutograder.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.class.summary\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/autograder/package-frame.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:36 PDT 2017 -->\n<title>stanford.cs106.autograder</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<h1 class=\"bar\"><a href=\"../../../stanford/cs106/autograder/package-summary.html\" target=\"classFrame\">stanford.cs106.autograder</a></h1>\n<div class=\"indexContainer\">\n<h2 title=\"Classes\">Classes</h2>\n<ul title=\"Classes\">\n<li><a href=\"GuidedAutograder.html\" title=\"class in stanford.cs106.autograder\" target=\"classFrame\">GuidedAutograder</a></li>\n</ul>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/autograder/package-summary.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:36 PDT 2017 -->\n<title>stanford.cs106.autograder</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"stanford.cs106.autograder\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li class=\"navBarCell1Rev\">Package</li>\n<li>Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/audio/package-summary.html\">Prev&nbsp;Package</a></li>\n<li><a href=\"../../../stanford/cs106/collections/package-summary.html\">Next&nbsp;Package</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/autograder/package-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 title=\"Package\" class=\"title\">Package&nbsp;stanford.cs106.autograder</h1>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Class Summary table, listing classes, and an explanation\">\n<caption><span>Class Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Class</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html\" title=\"class in stanford.cs106.autograder\">GuidedAutograder</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n</tbody>\n</table>\n</li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li class=\"navBarCell1Rev\">Package</li>\n<li>Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/audio/package-summary.html\">Prev&nbsp;Package</a></li>\n<li><a href=\"../../../stanford/cs106/collections/package-summary.html\">Next&nbsp;Package</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/autograder/package-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/autograder/package-tree.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:36 PDT 2017 -->\n<title>stanford.cs106.autograder Class Hierarchy</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"stanford.cs106.autograder Class Hierarchy\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/audio/package-tree.html\">Prev</a></li>\n<li><a href=\"../../../stanford/cs106/collections/package-tree.html\">Next</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/autograder/package-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 class=\"title\">Hierarchy For Package stanford.cs106.autograder</h1>\n<span class=\"packageHierarchyLabel\">Package Hierarchies:</span>\n<ul class=\"horizontal\">\n<li><a href=\"../../../overview-tree.html\">All Packages</a></li>\n</ul>\n</div>\n<div class=\"contentContainer\">\n<h2 title=\"Class Hierarchy\">Class Hierarchy</h2>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Object</span></a>\n<ul>\n<li type=\"circle\">stanford.cs106.autograder.<a href=\"../../../stanford/cs106/autograder/GuidedAutograder.html\" title=\"class in stanford.cs106.autograder\"><span class=\"typeNameLink\">GuidedAutograder</span></a> (implements java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeListener</a>)</li>\n<li type=\"circle\">stanford.cs106.autograder.<a href=\"../../../stanford/cs106/autograder/GuidedAutograder.ReflectionPanel.html\" title=\"class in stanford.cs106.autograder\"><span class=\"typeNameLink\">GuidedAutograder.ReflectionPanel</span></a> (implements java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>)</li>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Thread</span></a> (implements java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a>)\n<ul>\n<li type=\"circle\">stanford.cs106.autograder.<a href=\"../../../stanford/cs106/autograder/GuidedAutograder.StudentProgramRunnerThread.html\" title=\"class in stanford.cs106.autograder\"><span class=\"typeNameLink\">GuidedAutograder.StudentProgramRunnerThread</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/audio/package-tree.html\">Prev</a></li>\n<li><a href=\"../../../stanford/cs106/collections/package-tree.html\">Next</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/autograder/package-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/collections/AbstractMultimap.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>AbstractMultimap</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"AbstractMultimap\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":6,\"i6\":6,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],4:[\"t3\",\"Abstract Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Class</li>\n<li><a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/collections/AbstractMultimap.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AbstractMultimap.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.collections</div>\n<h2 title=\"Class AbstractMultimap\" class=\"title\">Class AbstractMultimap&lt;K,V&gt;</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.collections.AbstractMultimap&lt;K,V&gt;</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"../../../stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\">Multimap</a>&lt;K,V&gt;</dd>\n</dl>\n<dl>\n<dt>Direct Known Subclasses:</dt>\n<dd><a href=\"../../../stanford/cs106/collections/HashMultimap.html\" title=\"class in stanford.cs106.collections\">HashMultimap</a>, <a href=\"../../../stanford/cs106/collections/TreeMultimap.html\" title=\"class in stanford.cs106.collections\">TreeMultimap</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public abstract class <span class=\"typeNameLabel\">AbstractMultimap&lt;K,V&gt;</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>\nimplements <a href=\"../../../stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\">Multimap</a>&lt;K,V&gt;</pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#AbstractMultimap--\">AbstractMultimap</a></span>()</code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#AbstractMultimap-boolean-\">AbstractMultimap</a></span>(boolean&nbsp;isSet)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t3\" class=\"tableTab\"><span><a href=\"javascript:show(4);\">Abstract Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#clear--\">clear</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#containsEntry-java.lang.Object-java.lang.Object-\">containsEntry</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;key,\n             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#containsKey-java.lang.Object-\">containsKey</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;key)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#containsValue-java.lang.Object-\">containsValue</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">V</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#createList--\">createList</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected abstract <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">K</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">V</a>&gt;&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#createMap--\">createMap</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected abstract <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">V</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#createSet--\">createSet</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">V</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#get-K-\">get</a></span>(<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">K</a>&nbsp;key)</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#isEmpty--\">isEmpty</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">K</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#keySet--\">keySet</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#put-K-V-\">put</a></span>(<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">K</a>&nbsp;key,\n   <a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">V</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#remove-java.lang.Object-java.lang.Object-\">remove</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;key,\n      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">V</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#removeAll-java.lang.Object-\">removeAll</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;key)</code>&nbsp;</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#size--\">size</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#toString--\">toString</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">V</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#values--\">values</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"AbstractMultimap--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>AbstractMultimap</h4>\n<pre>public&nbsp;AbstractMultimap()</pre>\n</li>\n</ul>\n<a name=\"AbstractMultimap-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>AbstractMultimap</h4>\n<pre>public&nbsp;AbstractMultimap(boolean&nbsp;isSet)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"clear--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clear</h4>\n<pre>public&nbsp;void&nbsp;clear()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Multimap.html#clear--\">clear</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\">Multimap</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">K</a>,<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">V</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"createMap--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createMap</h4>\n<pre>protected abstract&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">K</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">V</a>&gt;&gt;&nbsp;createMap()</pre>\n</li>\n</ul>\n<a name=\"createSet--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createSet</h4>\n<pre>protected abstract&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">V</a>&gt;&nbsp;createSet()</pre>\n</li>\n</ul>\n<a name=\"createList--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createList</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">V</a>&gt;&nbsp;createList()</pre>\n</li>\n</ul>\n<a name=\"containsEntry-java.lang.Object-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>containsEntry</h4>\n<pre>public&nbsp;boolean&nbsp;containsEntry(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;key,\n                             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Multimap.html#containsEntry-java.lang.Object-java.lang.Object-\">containsEntry</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\">Multimap</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">K</a>,<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">V</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"containsKey-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>containsKey</h4>\n<pre>public&nbsp;boolean&nbsp;containsKey(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;key)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Multimap.html#containsKey-java.lang.Object-\">containsKey</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\">Multimap</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">K</a>,<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">V</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"containsValue-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>containsValue</h4>\n<pre>public&nbsp;boolean&nbsp;containsValue(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Multimap.html#containsValue-java.lang.Object-\">containsValue</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\">Multimap</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">K</a>,<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">V</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"get-java.lang.Object-\">\n<!--   -->\n</a><a name=\"get-K-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>get</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">V</a>&gt;&nbsp;get(<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">K</a>&nbsp;key)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Multimap.html#get-K-\">get</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\">Multimap</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">K</a>,<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">V</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"isEmpty--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isEmpty</h4>\n<pre>public&nbsp;boolean&nbsp;isEmpty()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Multimap.html#isEmpty--\">isEmpty</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\">Multimap</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">K</a>,<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">V</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"keySet--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>keySet</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">K</a>&gt;&nbsp;keySet()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Multimap.html#keySet--\">keySet</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\">Multimap</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">K</a>,<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">V</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"put-java.lang.Object-java.lang.Object-\">\n<!--   -->\n</a><a name=\"put-K-V-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>put</h4>\n<pre>public&nbsp;boolean&nbsp;put(<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">K</a>&nbsp;key,\n                   <a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">V</a>&nbsp;value)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Multimap.html#put-K-V-\">put</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\">Multimap</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">K</a>,<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">V</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"remove-java.lang.Object-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>remove</h4>\n<pre>public&nbsp;boolean&nbsp;remove(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;key,\n                      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Multimap.html#remove-java.lang.Object-java.lang.Object-\">remove</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\">Multimap</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">K</a>,<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">V</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"removeAll-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeAll</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">V</a>&gt;&nbsp;removeAll(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;key)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Multimap.html#removeAll-java.lang.Object-\">removeAll</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\">Multimap</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">K</a>,<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">V</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"size--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>size</h4>\n<pre>public&nbsp;int&nbsp;size()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Multimap.html#size--\">size</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\">Multimap</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">K</a>,<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">V</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"toString--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>toString</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;toString()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"values--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>values</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">V</a>&gt;&nbsp;values()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Multimap.html#values--\">values</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\">Multimap</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">K</a>,<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"type parameter in AbstractMultimap\">V</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Class</li>\n<li><a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/collections/AbstractMultimap.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AbstractMultimap.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/collections/AbstractTable.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>AbstractTable</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"AbstractTable\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":6,\"i7\":6,\"i8\":6,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":10,\"i16\":10,\"i17\":10,\"i18\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],4:[\"t3\",\"Abstract Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/collections/AbstractTable.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AbstractTable.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.collections</div>\n<h2 title=\"Class AbstractTable\" class=\"title\">Class AbstractTable&lt;R,C,V&gt;</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.collections.AbstractTable&lt;R,C,V&gt;</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"../../../stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\">Table</a>&lt;R,C,V&gt;</dd>\n</dl>\n<dl>\n<dt>Direct Known Subclasses:</dt>\n<dd><a href=\"../../../stanford/cs106/collections/HashBasedTable.html\" title=\"class in stanford.cs106.collections\">HashBasedTable</a>, <a href=\"../../../stanford/cs106/collections/TreeBasedTable.html\" title=\"class in stanford.cs106.collections\">TreeBasedTable</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public abstract class <span class=\"typeNameLabel\">AbstractTable&lt;R,C,V&gt;</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>\nimplements <a href=\"../../../stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\">Table</a>&lt;R,C,V&gt;</pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/AbstractTable.html#AbstractTable--\">AbstractTable</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t3\" class=\"tableTab\"><span><a href=\"javascript:show(4);\">Abstract Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/AbstractTable.html#clear--\">clear</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">R</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">V</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/AbstractTable.html#column-C-\">column</a></span>(<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">C</a>&nbsp;columnKey)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/AbstractTable.html#contains-java.lang.Object-java.lang.Object-\">contains</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;rowKey,\n        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;columnKey)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/AbstractTable.html#containsColumn-java.lang.Object-\">containsColumn</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;columnKey)</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/AbstractTable.html#containsRow-java.lang.Object-\">containsRow</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;rowKey)</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/AbstractTable.html#containsValue-java.lang.Object-\">containsValue</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected abstract <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">R</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">V</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/AbstractTable.html#createColumnMap--\">createColumnMap</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected abstract <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">C</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">V</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/AbstractTable.html#createRowMap--\">createRowMap</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected abstract <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">R</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">C</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">V</a>&gt;&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/AbstractTable.html#createTableMap--\">createTableMap</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">V</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/AbstractTable.html#get-java.lang.Object-java.lang.Object-\">get</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;rowKey,\n   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;columnKey)</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/AbstractTable.html#isEmpty--\">isEmpty</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">V</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/AbstractTable.html#put-R-C-V-\">put</a></span>(<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">R</a>&nbsp;rowKey,\n   <a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">C</a>&nbsp;columnKey,\n   <a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">V</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">V</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/AbstractTable.html#remove-java.lang.Object-java.lang.Object-\">remove</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;rowKey,\n      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;columnKey)</code>&nbsp;</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">C</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">V</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/AbstractTable.html#row-R-\">row</a></span>(<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">R</a>&nbsp;rowKey)</code>&nbsp;</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">R</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/AbstractTable.html#rowKeySet--\">rowKeySet</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">R</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">C</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">V</a>&gt;&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/AbstractTable.html#rowMap--\">rowMap</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/AbstractTable.html#size--\">size</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/AbstractTable.html#toString--\">toString</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">V</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/AbstractTable.html#values--\">values</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"AbstractTable--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>AbstractTable</h4>\n<pre>public&nbsp;AbstractTable()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"createTableMap--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createTableMap</h4>\n<pre>protected abstract&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">R</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">C</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">V</a>&gt;&gt;&nbsp;createTableMap()</pre>\n</li>\n</ul>\n<a name=\"createRowMap--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createRowMap</h4>\n<pre>protected abstract&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">C</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">V</a>&gt;&nbsp;createRowMap()</pre>\n</li>\n</ul>\n<a name=\"createColumnMap--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createColumnMap</h4>\n<pre>protected abstract&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">R</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">V</a>&gt;&nbsp;createColumnMap()</pre>\n</li>\n</ul>\n<a name=\"clear--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clear</h4>\n<pre>public&nbsp;void&nbsp;clear()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Table.html#clear--\">clear</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\">Table</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">R</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">C</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">V</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"column-java.lang.Object-\">\n<!--   -->\n</a><a name=\"column-C-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>column</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">R</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">V</a>&gt;&nbsp;column(<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">C</a>&nbsp;columnKey)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Table.html#column-C-\">column</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\">Table</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">R</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">C</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">V</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"contains-java.lang.Object-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>contains</h4>\n<pre>public&nbsp;boolean&nbsp;contains(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;rowKey,\n                        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;columnKey)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Table.html#contains-java.lang.Object-java.lang.Object-\">contains</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\">Table</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">R</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">C</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">V</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"containsColumn-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>containsColumn</h4>\n<pre>public&nbsp;boolean&nbsp;containsColumn(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;columnKey)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Table.html#containsColumn-java.lang.Object-\">containsColumn</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\">Table</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">R</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">C</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">V</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"containsRow-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>containsRow</h4>\n<pre>public&nbsp;boolean&nbsp;containsRow(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;rowKey)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Table.html#containsRow-java.lang.Object-\">containsRow</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\">Table</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">R</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">C</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">V</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"containsValue-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>containsValue</h4>\n<pre>public&nbsp;boolean&nbsp;containsValue(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Table.html#containsValue-java.lang.Object-\">containsValue</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\">Table</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">R</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">C</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">V</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"get-java.lang.Object-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>get</h4>\n<pre>public&nbsp;<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">V</a>&nbsp;get(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;rowKey,\n             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;columnKey)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Table.html#get-java.lang.Object-java.lang.Object-\">get</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\">Table</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">R</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">C</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">V</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"isEmpty--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isEmpty</h4>\n<pre>public&nbsp;boolean&nbsp;isEmpty()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Table.html#isEmpty--\">isEmpty</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\">Table</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">R</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">C</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">V</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"put-java.lang.Object-java.lang.Object-java.lang.Object-\">\n<!--   -->\n</a><a name=\"put-R-C-V-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>put</h4>\n<pre>public&nbsp;<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">V</a>&nbsp;put(<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">R</a>&nbsp;rowKey,\n             <a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">C</a>&nbsp;columnKey,\n             <a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">V</a>&nbsp;value)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Table.html#put-R-C-V-\">put</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\">Table</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">R</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">C</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">V</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"remove-java.lang.Object-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>remove</h4>\n<pre>public&nbsp;<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">V</a>&nbsp;remove(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;rowKey,\n                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;columnKey)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Table.html#remove-java.lang.Object-java.lang.Object-\">remove</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\">Table</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">R</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">C</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">V</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"row-java.lang.Object-\">\n<!--   -->\n</a><a name=\"row-R-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>row</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">C</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">V</a>&gt;&nbsp;row(<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">R</a>&nbsp;rowKey)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Table.html#row-R-\">row</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\">Table</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">R</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">C</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">V</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"rowKeySet--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>rowKeySet</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">R</a>&gt;&nbsp;rowKeySet()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Table.html#rowKeySet--\">rowKeySet</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\">Table</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">R</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">C</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">V</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"rowMap--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>rowMap</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">R</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">C</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">V</a>&gt;&gt;&nbsp;rowMap()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Table.html#rowMap--\">rowMap</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\">Table</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">R</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">C</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">V</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"size--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>size</h4>\n<pre>public&nbsp;int&nbsp;size()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Table.html#size--\">size</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\">Table</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">R</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">C</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">V</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"toString--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>toString</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;toString()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"values--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>values</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">V</a>&gt;&nbsp;values()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Table.html#values--\">values</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\">Table</a>&lt;<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">R</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">C</a>,<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"type parameter in AbstractTable\">V</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/collections/AbstractTable.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AbstractTable.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/collections/BasicGraph.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>BasicGraph</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"BasicGraph\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":9,\"i6\":9,\"i7\":9,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":10,\"i16\":10,\"i17\":10,\"i18\":10,\"i19\":10,\"i20\":10,\"i21\":10,\"i22\":10,\"i23\":10,\"i24\":10,\"i25\":10,\"i26\":10,\"i27\":10,\"i28\":10,\"i29\":10,\"i30\":10,\"i31\":10,\"i32\":10,\"i33\":10,\"i34\":10,\"i35\":10,\"i36\":10,\"i37\":10,\"i38\":10,\"i39\":10,\"i40\":10,\"i41\":10,\"i42\":10,\"i43\":10,\"i44\":10,\"i45\":10,\"i46\":10,\"i47\":10,\"i48\":10,\"i49\":10,\"i50\":10,\"i51\":10,\"i52\":10,\"i53\":10,\"i54\":10,\"i55\":10,\"i56\":10,\"i57\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/collections/BasicGraph.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"BasicGraph.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.collections</div>\n<h2 title=\"Class BasicGraph\" class=\"title\">Class BasicGraph&lt;V,E&gt;</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.collections.BasicGraph&lt;V,E&gt;</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;V,E&gt;</dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">BasicGraph&lt;V,E&gt;</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>\nimplements <a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;V,E&gt;</pre>\n<div class=\"block\">BasicGraph represents a mostly-complete implementation of the Graph interface.\n The only functionality missing is the three path-searching algorithms represented\n by the isReachable, minimumWeightPath, and shortestPath methods.</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#BasicGraph--\">BasicGraph</a></span>()</code>\n<div class=\"block\">Constructs a new empty undirected, unweighted graph.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#BasicGraph-boolean-boolean-\">BasicGraph</a></span>(boolean&nbsp;directed,\n          boolean&nbsp;weighted)</code>\n<div class=\"block\">Constructs a new empty graph that can be directed or undirected,\n weighted or unweighted.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#addEdge-java.lang.String-java.lang.String-\">addEdge</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v1,\n       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v2)</code>\n<div class=\"block\">Adds an edge between the given two vertices, if none already exists.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#addEdge-java.lang.String-java.lang.String-double-\">addEdge</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v1,\n       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v2,\n       double&nbsp;weight)</code>\n<div class=\"block\">Adds an edge between the given two vertices, if none already exists.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#addEdge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">addEdge</a></span>(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v1,\n       <a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v2)</code>\n<div class=\"block\">Adds an edge between the given two vertices, if none already exists.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#addEdge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-double-\">addEdge</a></span>(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v1,\n       <a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v2,\n       double&nbsp;weight)</code>\n<div class=\"block\">Adds an edge between the given two vertices, if none already exists.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#addVertex-java.lang.String-\">addVertex</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v)</code>\n<div class=\"block\">Adds the given element as a vertex in this graph.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#checkForNegative-double-\">checkForNegative</a></span>(double&nbsp;value)</code>\n<div class=\"block\">Tests the given integer to see whether it is negative.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#checkForNegative-int-\">checkForNegative</a></span>(int&nbsp;value)</code>\n<div class=\"block\">Tests the given integer to see whether it is negative.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#checkForNull-java.lang.Object...-\">checkForNull</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>...&nbsp;args)</code>\n<div class=\"block\">Tests the given arguments for null.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#checkVertex-java.lang.String-\">checkVertex</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;vertex)</code>\n<div class=\"block\">Tests the given vertex for null and for membership in the graph.</div>\n</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#checkVertex-stanford.cs106.collections.Vertex-\">checkVertex</a></span>(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;vertex)</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#checkVertexes-java.lang.String-java.lang.String-\">checkVertexes</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v1,\n             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v2)</code>\n<div class=\"block\">Tests the given vertices for null and for membership in the graph.</div>\n</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#checkVertexes-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">checkVertexes</a></span>(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v1,\n             <a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v2)</code>\n<div class=\"block\">Tests the given vertices for null and for membership in the graph.</div>\n</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#clear--\">clear</a></span>()</code>\n<div class=\"block\">Removes all vertices and edges from this graph.</div>\n</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#clearEdges--\">clearEdges</a></span>()</code>\n<div class=\"block\">Removes all edges from this graph.</div>\n</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#clearEdges-java.lang.String-\">clearEdges</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v)</code>&nbsp;</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#clearEdges-stanford.cs106.collections.Vertex-\">clearEdges</a></span>(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v)</code>&nbsp;</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#clearVertexInfo--\">clearVertexInfo</a></span>()</code>\n<div class=\"block\">Resets all distance / previous / visited markings from vertex info\n objects in this graph.</div>\n</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#containsEdge-java.lang.String-java.lang.String-\">containsEdge</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v1,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v2)</code>\n<div class=\"block\">Returns whether this graph contains an edge between the given vertices.</div>\n</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#containsEdge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">containsEdge</a></span>(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v1,\n            <a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v2)</code>\n<div class=\"block\">Returns whether this graph contains an edge between the given vertices.</div>\n</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#containsPath-java.util.List-\">containsPath</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;path)</code>\n<div class=\"block\">Returns true if the given list of vertices represents a path that can\n be formed by walking edges between those vertices in this graph,\n walking from the start to the end of the list.</div>\n</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#containsVertex-java.lang.String-\">containsVertex</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v)</code>\n<div class=\"block\">Returns whether this graph contains the given vertex.</div>\n</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#containsVertex-stanford.cs106.collections.Vertex-\">containsVertex</a></span>(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v)</code>\n<div class=\"block\">Returns whether this graph contains the given vertex.</div>\n</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#corruptVertexInfo--\">corruptVertexInfo</a></span>()</code>\n<div class=\"block\">Sets some of the distance / previous / visited markings from vertex info\n objects in this graph to have various random values, to test whether\n a student's code properly clears the info between calls.</div>\n</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#cost-java.util.List-\">cost</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;path)</code>\n<div class=\"block\">Returns the total cost of following the given path of vertices in this graph,\n which is the sum of the edge weights between the path's vertices from start to end.</div>\n</td>\n</tr>\n<tr id=\"i24\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#degree-java.lang.String-\">degree</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v)</code>\n<div class=\"block\">Returns the number of outgoing edges from the given vertex.</div>\n</td>\n</tr>\n<tr id=\"i25\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#degree-stanford.cs106.collections.Vertex-\">degree</a></span>(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v)</code>\n<div class=\"block\">Returns the number of outgoing edges from the given vertex.</div>\n</td>\n</tr>\n<tr id=\"i26\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\">Edge</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#edge-java.lang.String-java.lang.String-\">edge</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v1,\n    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v2)</code>\n<div class=\"block\">Returns the extra information stored in the edge between vertices v1 and v2, if one exists.</div>\n</td>\n</tr>\n<tr id=\"i27\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\">Edge</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#edge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">edge</a></span>(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v1,\n    <a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v2)</code>\n<div class=\"block\">Returns the extra information stored in the edge between vertices v1 and v2, if one exists.</div>\n</td>\n</tr>\n<tr id=\"i28\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#edgeCount--\">edgeCount</a></span>()</code>\n<div class=\"block\">Returns the total number of edges in this graph.</div>\n</td>\n</tr>\n<tr id=\"i29\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\">Edge</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#edges--\">edges</a></span>()</code>\n<div class=\"block\">Returns a collection of all edges in this graph.</div>\n</td>\n</tr>\n<tr id=\"i30\" class=\"altColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#edgeWeight-java.lang.String-java.lang.String-\">edgeWeight</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v1,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v2)</code>\n<div class=\"block\">Returns the weight of the edge between vertices v1 and v2, if one exists.</div>\n</td>\n</tr>\n<tr id=\"i31\" class=\"rowColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#edgeWeight-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">edgeWeight</a></span>(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v1,\n          <a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v2)</code>\n<div class=\"block\">Returns the weight of the edge between vertices v1 and v2, if one exists.</div>\n</td>\n</tr>\n<tr id=\"i32\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#equals-java.lang.Object-\">equals</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;o)</code>\n<div class=\"block\">Returns true if o refers to a graph with the same vertices, edges, and other properties\n (directed vs.</div>\n</td>\n</tr>\n<tr id=\"i33\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#hashCode--\">hashCode</a></span>()</code>\n<div class=\"block\">Returns an integer code for placing this graph into a hash-based collection.</div>\n</td>\n</tr>\n<tr id=\"i34\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#inDegree-java.lang.String-\">inDegree</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v)</code>\n<div class=\"block\">Returns the number of incoming edges to the given vertex.</div>\n</td>\n</tr>\n<tr id=\"i35\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#inDegree-stanford.cs106.collections.Vertex-\">inDegree</a></span>(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v)</code>\n<div class=\"block\">Returns the number of incoming edges to the given vertex.</div>\n</td>\n</tr>\n<tr id=\"i36\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#inverseNeighbors-java.lang.String-\">inverseNeighbors</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v)</code>&nbsp;</td>\n</tr>\n<tr id=\"i37\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#inverseNeighbors-stanford.cs106.collections.Vertex-\">inverseNeighbors</a></span>(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v)</code>&nbsp;</td>\n</tr>\n<tr id=\"i38\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#isDirected--\">isDirected</a></span>()</code>\n<div class=\"block\">Returns true if this is a directed graph, and false if it is undirected.</div>\n</td>\n</tr>\n<tr id=\"i39\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#isEmpty--\">isEmpty</a></span>()</code>\n<div class=\"block\">Returns true if this graph does not contain any vertices or edges.</div>\n</td>\n</tr>\n<tr id=\"i40\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#isWeighted--\">isWeighted</a></span>()</code>\n<div class=\"block\">Returns true if this is a weighted graph and false if it is unweighted.</div>\n</td>\n</tr>\n<tr id=\"i41\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#neighbors-java.lang.String-\">neighbors</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v)</code>\n<div class=\"block\">Returns a collection containing all neighbors, that is, all vertices that are\n directly connected to the given vertex by an outgoing edge.</div>\n</td>\n</tr>\n<tr id=\"i42\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#neighbors-stanford.cs106.collections.Vertex-\">neighbors</a></span>(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v)</code>\n<div class=\"block\">Returns a collection containing all neighbors, that is, all vertices that are\n directly connected to the given vertex by an outgoing edge.</div>\n</td>\n</tr>\n<tr id=\"i43\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#outDegree-java.lang.String-\">outDegree</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v)</code>\n<div class=\"block\">Returns the number of outgoing edges from the given vertex.</div>\n</td>\n</tr>\n<tr id=\"i44\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#outDegree-stanford.cs106.collections.Vertex-\">outDegree</a></span>(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v)</code>\n<div class=\"block\">Returns the number of outgoing edges from the given vertex.</div>\n</td>\n</tr>\n<tr id=\"i45\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#removeEdge-stanford.cs106.collections.Edge-\">removeEdge</a></span>(<a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\">Edge</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;&nbsp;e)</code>\n<div class=\"block\">Removes any edge(s) that exist with the given extra info stored in it/them.</div>\n</td>\n</tr>\n<tr id=\"i46\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#removeEdge-java.lang.String-java.lang.String-\">removeEdge</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v1,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v2)</code>\n<div class=\"block\">Removes any edge that exists from vertex v1 to vertex v2.</div>\n</td>\n</tr>\n<tr id=\"i47\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#removeEdge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">removeEdge</a></span>(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v1,\n          <a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v2)</code>\n<div class=\"block\">Removes any edge that exists from vertex v1 to vertex v2.</div>\n</td>\n</tr>\n<tr id=\"i48\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#removeVertex-java.lang.String-\">removeVertex</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v)</code>\n<div class=\"block\">Removes the given vertex from this graph, along with all edges that were\n touching it.</div>\n</td>\n</tr>\n<tr id=\"i49\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#removeVertex-stanford.cs106.collections.Vertex-\">removeVertex</a></span>(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v)</code>\n<div class=\"block\">Removes the given vertex from this graph, along with all edges that were\n touching it.</div>\n</td>\n</tr>\n<tr id=\"i50\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#resetData--\">resetData</a></span>()</code>\n<div class=\"block\">Clears out any data stored in each vertex.</div>\n</td>\n</tr>\n<tr id=\"i51\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#toString--\">toString</a></span>()</code>\n<div class=\"block\">Returns a string representation of this graph and its vertices and edges, such as\n \"{V={A, B, C}, E={(A, B), (A, C)}}\".</div>\n</td>\n</tr>\n<tr id=\"i52\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#toStringDetailed--\">toStringDetailed</a></span>()</code>\n<div class=\"block\">Returns a detailed multi-line string representation of this graph and its vertices, such as\n \"Graph{\n     vertices:\n         A -> neighbors: [B, C]\n         B -> neighbors: [A]\n         C -> neighbors: [A]\n     edges:\n         (A,B,weight=2)\n         (A,C)\n }\"</div>\n</td>\n</tr>\n<tr id=\"i53\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#vertex-java.lang.String-\">vertex</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>\n<div class=\"block\">Returns the structure of information about the vertex with the given name.</div>\n</td>\n</tr>\n<tr id=\"i54\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#vertexCount--\">vertexCount</a></span>()</code>\n<div class=\"block\">Returns the number of vertices in this graph.</div>\n</td>\n</tr>\n<tr id=\"i55\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#vertexes--\">vertexes</a></span>()</code>\n<div class=\"block\">Returns a collection of the vertices in this graph.</div>\n</td>\n</tr>\n<tr id=\"i56\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#vertexInfo-java.lang.String-\">vertexInfo</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v)</code>\n<div class=\"block\">Returns the Vertex object associated with the given vertex.</div>\n</td>\n</tr>\n<tr id=\"i57\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html#vertexInfos--\">vertexInfos</a></span>()</code>\n<div class=\"block\">Returns a read-only view of all internal data about vertex information.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"BasicGraph--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>BasicGraph</h4>\n<pre>public&nbsp;BasicGraph()</pre>\n<div class=\"block\">Constructs a new empty undirected, unweighted graph.</div>\n</li>\n</ul>\n<a name=\"BasicGraph-boolean-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>BasicGraph</h4>\n<pre>public&nbsp;BasicGraph(boolean&nbsp;directed,\n                  boolean&nbsp;weighted)</pre>\n<div class=\"block\">Constructs a new empty graph that can be directed or undirected,\n weighted or unweighted.</div>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"addEdge-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addEdge</h4>\n<pre>public final&nbsp;void&nbsp;addEdge(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v1,\n                          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v2)</pre>\n<div class=\"block\">Adds an edge between the given two vertices, if none already exists.\n The edge will be given a default weight of 1.\n No extra information will be stored in the edge.\n If an edge already exists between these vertices, its extra information\n will be cleared and its weight is updated to 1.\n If this graph is undirected, the two vertices can be passed in either order.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#addEdge-java.lang.String-java.lang.String-\">addEdge</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v1</code> - Starting vertex.</dd>\n<dd><code>v2</code> - Ending vertex.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"addEdge-java.lang.String-java.lang.String-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addEdge</h4>\n<pre>public final&nbsp;void&nbsp;addEdge(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v1,\n                          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v2,\n                          double&nbsp;weight)</pre>\n<div class=\"block\">Adds an edge between the given two vertices, if none already exists.\n The edge will be given a default weight of 1.\n No extra information will be stored in the edge.\n If an edge already exists between these vertices, its extra information\n will be cleared and its weight is updated to 1.\n If this graph is undirected, the two vertices can be passed in either order.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#addEdge-java.lang.String-java.lang.String-double-\">addEdge</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v1</code> - Starting vertex.</dd>\n<dd><code>v2</code> - Ending vertex.</dd>\n<dd><code>weight</code> - Edge's weight.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"addEdge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addEdge</h4>\n<pre>public final&nbsp;void&nbsp;addEdge(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v1,\n                          <a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v2)</pre>\n<div class=\"block\">Adds an edge between the given two vertices, if none already exists.\n The edge will be given a default weight of 1.\n No extra information will be stored in the edge.\n If an edge already exists between these vertices, its extra information\n will be cleared and its weight is updated to 1.\n If this graph is undirected, the two vertices can be passed in either order.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#addEdge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">addEdge</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v1</code> - Starting vertex.</dd>\n<dd><code>v2</code> - Ending vertex.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"addEdge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addEdge</h4>\n<pre>public final&nbsp;void&nbsp;addEdge(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v1,\n                          <a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v2,\n                          double&nbsp;weight)</pre>\n<div class=\"block\">Adds an edge between the given two vertices, if none already exists.\n The edge will be given a default weight of 1.\n No extra information will be stored in the edge.\n If an edge already exists between these vertices, its extra information\n will be cleared and its weight is updated to 1.\n If this graph is undirected, the two vertices can be passed in either order.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#addEdge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-double-\">addEdge</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v1</code> - Starting vertex.</dd>\n<dd><code>v2</code> - Ending vertex.</dd>\n<dd><code>weight</code> - Edge's weight.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"addVertex-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addVertex</h4>\n<pre>public final&nbsp;void&nbsp;addVertex(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v)</pre>\n<div class=\"block\">Adds the given element as a vertex in this graph.\n If the given element is already a vertex in this graph, no change is made.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#addVertex-java.lang.String-\">addVertex</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v</code> - The vertex to add.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"clear--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clear</h4>\n<pre>public final&nbsp;void&nbsp;clear()</pre>\n<div class=\"block\">Removes all vertices and edges from this graph.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#clear--\">clear</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"clearEdges--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clearEdges</h4>\n<pre>public final&nbsp;void&nbsp;clearEdges()</pre>\n<div class=\"block\">Removes all edges from this graph.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#clearEdges--\">clearEdges</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"clearEdges-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clearEdges</h4>\n<pre>public final&nbsp;void&nbsp;clearEdges(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v)</pre>\n</li>\n</ul>\n<a name=\"clearEdges-stanford.cs106.collections.Vertex-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clearEdges</h4>\n<pre>public final&nbsp;void&nbsp;clearEdges(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v)</pre>\n</li>\n</ul>\n<a name=\"containsEdge-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>containsEdge</h4>\n<pre>public final&nbsp;boolean&nbsp;containsEdge(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v1,\n                                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v2)</pre>\n<div class=\"block\">Returns whether this graph contains an edge between the given vertices.\n If either vertex is not part of this graph, returns false.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#containsEdge-java.lang.String-java.lang.String-\">containsEdge</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"containsEdge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>containsEdge</h4>\n<pre>public final&nbsp;boolean&nbsp;containsEdge(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v1,\n                                  <a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v2)</pre>\n<div class=\"block\">Returns whether this graph contains an edge between the given vertices.\n If either vertex is not part of this graph, returns false.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#containsEdge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">containsEdge</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"containsPath-java.util.List-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>containsPath</h4>\n<pre>public final&nbsp;boolean&nbsp;containsPath(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;path)</pre>\n<div class=\"block\">Returns true if the given list of vertices represents a path that can\n be formed by walking edges between those vertices in this graph,\n walking from the start to the end of the list.\n If any vertex in the path is not found in this graph, or if there is\n not an edge between any pair of neighboring vertices in the list, returns false.\n Returns true for an empty list, and for a one-element list where the one\n element is a vertex that is found in this graph.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#containsPath-java.util.List-\">containsPath</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>path</code> - The list of vertices representing the path to check.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"containsVertex-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>containsVertex</h4>\n<pre>public final&nbsp;boolean&nbsp;containsVertex(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v)</pre>\n<div class=\"block\">Returns whether this graph contains the given vertex.\n If the vertex passed is null, returns false.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#containsVertex-java.lang.String-\">containsVertex</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v</code> - The vertex.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"containsVertex-stanford.cs106.collections.Vertex-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>containsVertex</h4>\n<pre>public final&nbsp;boolean&nbsp;containsVertex(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v)</pre>\n<div class=\"block\">Returns whether this graph contains the given vertex.\n If the vertex passed is null, returns false.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#containsVertex-stanford.cs106.collections.Vertex-\">containsVertex</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v</code> - The vertex.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"cost-java.util.List-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>cost</h4>\n<pre>public final&nbsp;double&nbsp;cost(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;path)</pre>\n<div class=\"block\">Returns the total cost of following the given path of vertices in this graph,\n which is the sum of the edge weights between the path's vertices from start to end.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#cost-java.util.List-\">cost</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>path</code> - The list of vertices in the path to examine.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"degree-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>degree</h4>\n<pre>public final&nbsp;int&nbsp;degree(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v)</pre>\n<div class=\"block\">Returns the number of outgoing edges from the given vertex.\n This method is an alias for outDegree; it is provided because\n undirected graphs generally just think of vertices as having one\n overall degree and not a separate in- and out- degree.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#degree-java.lang.String-\">degree</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v</code> - The vertex.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"degree-stanford.cs106.collections.Vertex-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>degree</h4>\n<pre>public final&nbsp;int&nbsp;degree(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v)</pre>\n<div class=\"block\">Returns the number of outgoing edges from the given vertex.\n This method is an alias for outDegree; it is provided because\n undirected graphs generally just think of vertices as having one\n overall degree and not a separate in- and out- degree.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#degree-stanford.cs106.collections.Vertex-\">degree</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v</code> - The vertex.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"edge-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>edge</h4>\n<pre>public final&nbsp;<a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\">Edge</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;&nbsp;edge(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v1,\n                            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v2)</pre>\n<div class=\"block\">Returns the extra information stored in the edge between vertices v1 and v2, if one exists.\n If this graph is undirected, the two vertices can be passed in either order.\n Returns null if there is no edge between the given vertices or if the edge between\n the given vertices contains no extra information.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#edge-java.lang.String-java.lang.String-\">edge</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v1</code> - The starting vertex.</dd>\n<dd><code>v2</code> - The ending vertex.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"edge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>edge</h4>\n<pre>public final&nbsp;<a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\">Edge</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;&nbsp;edge(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v1,\n                            <a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v2)</pre>\n<div class=\"block\">Returns the extra information stored in the edge between vertices v1 and v2, if one exists.\n If this graph is undirected, the two vertices can be passed in either order.\n Returns null if there is no edge between the given vertices or if the edge between\n the given vertices contains no extra information.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#edge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">edge</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v1</code> - The starting vertex.</dd>\n<dd><code>v2</code> - The ending vertex.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"edgeCount--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>edgeCount</h4>\n<pre>public final&nbsp;int&nbsp;edgeCount()</pre>\n<div class=\"block\">Returns the total number of edges in this graph.\n Note that this does not necessarily equal edges().size() because edges()\n returns a set of unique edge information values stored in each edge,\n excluding nulls (edges without any extra information stored in them),\n while this method returns a count of all edges including ones without\n any information stored in them and ones with information that is a duplicate\n of that stored in some other edge.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#edgeCount--\">edgeCount</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"edges--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>edges</h4>\n<pre>public final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\">Edge</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;&gt;&nbsp;edges()</pre>\n<div class=\"block\">Returns a collection of all edges in this graph.\n The collection is a shallow 'view' of the edges.\n Any changes made to it are written back to the graph.\n New edges cannot be added directly to the collection returned by this method,\n because it would not know which vertices to associate the edge with.\n But edges can be removed, cleared, etc.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#edges--\">edges</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"edgeWeight-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>edgeWeight</h4>\n<pre>public final&nbsp;double&nbsp;edgeWeight(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v1,\n                               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v2)</pre>\n<div class=\"block\">Returns the weight of the edge between vertices v1 and v2, if one exists.\n If this graph is undirected, the two vertices can be passed in either order.\n Returns -1 if there is no edge between the given vertices.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#edgeWeight-java.lang.String-java.lang.String-\">edgeWeight</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v1</code> - The starting vertex.</dd>\n<dd><code>v2</code> - The ending vertex.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"edgeWeight-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>edgeWeight</h4>\n<pre>public final&nbsp;double&nbsp;edgeWeight(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v1,\n                               <a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v2)</pre>\n<div class=\"block\">Returns the weight of the edge between vertices v1 and v2, if one exists.\n If this graph is undirected, the two vertices can be passed in either order.\n Returns -1 if there is no edge between the given vertices.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#edgeWeight-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">edgeWeight</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v1</code> - The starting vertex.</dd>\n<dd><code>v2</code> - The ending vertex.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"equals-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>equals</h4>\n<pre>public&nbsp;boolean&nbsp;equals(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;o)</pre>\n<div class=\"block\">Returns true if o refers to a graph with the same vertices, edges, and other properties\n (directed vs. undirected, weighted vs. unweighted, etc.) as this graph.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>o</code> - The object to compare against.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"hashCode--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hashCode</h4>\n<pre>public&nbsp;int&nbsp;hashCode()</pre>\n<div class=\"block\">Returns an integer code for placing this graph into a hash-based collection.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"inDegree-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>inDegree</h4>\n<pre>public final&nbsp;int&nbsp;inDegree(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v)</pre>\n<div class=\"block\">Returns the number of incoming edges to the given vertex.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#inDegree-java.lang.String-\">inDegree</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v</code> - The vertex to examine.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"inDegree-stanford.cs106.collections.Vertex-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>inDegree</h4>\n<pre>public final&nbsp;int&nbsp;inDegree(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v)</pre>\n<div class=\"block\">Returns the number of incoming edges to the given vertex.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#inDegree-stanford.cs106.collections.Vertex-\">inDegree</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v</code> - The vertex to examine.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"inverseNeighbors-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>inverseNeighbors</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&gt;&nbsp;inverseNeighbors(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v)</pre>\n</li>\n</ul>\n<a name=\"inverseNeighbors-stanford.cs106.collections.Vertex-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>inverseNeighbors</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&gt;&nbsp;inverseNeighbors(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v)</pre>\n</li>\n</ul>\n<a name=\"isDirected--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isDirected</h4>\n<pre>public final&nbsp;boolean&nbsp;isDirected()</pre>\n<div class=\"block\">Returns true if this is a directed graph, and false if it is undirected.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#isDirected--\">isDirected</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"isEmpty--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isEmpty</h4>\n<pre>public final&nbsp;boolean&nbsp;isEmpty()</pre>\n<div class=\"block\">Returns true if this graph does not contain any vertices or edges.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#isEmpty--\">isEmpty</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"isWeighted--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isWeighted</h4>\n<pre>public final&nbsp;boolean&nbsp;isWeighted()</pre>\n<div class=\"block\">Returns true if this is a weighted graph and false if it is unweighted.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#isWeighted--\">isWeighted</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"neighbors-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>neighbors</h4>\n<pre>public final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&gt;&nbsp;neighbors(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v)</pre>\n<div class=\"block\">Returns a collection containing all neighbors, that is, all vertices that are\n directly connected to the given vertex by an outgoing edge.\n The collection is a shallow 'view' of the neighboring vertices.\n Any changes made to it are written back to the graph.\n New vertices cannot be added directly to the collection returned by this method.\n But vertices can be removed, cleared, etc.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#neighbors-java.lang.String-\">neighbors</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v</code> - The vertex to examine.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"neighbors-stanford.cs106.collections.Vertex-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>neighbors</h4>\n<pre>public final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&gt;&nbsp;neighbors(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v)</pre>\n<div class=\"block\">Returns a collection containing all neighbors, that is, all vertices that are\n directly connected to the given vertex by an outgoing edge.\n The collection is a shallow 'view' of the neighboring vertices.\n Any changes made to it are written back to the graph.\n New vertices cannot be added directly to the collection returned by this method.\n But vertices can be removed, cleared, etc.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#neighbors-stanford.cs106.collections.Vertex-\">neighbors</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v</code> - The vertex to examine.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"outDegree-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>outDegree</h4>\n<pre>public final&nbsp;int&nbsp;outDegree(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v)</pre>\n<div class=\"block\">Returns the number of outgoing edges from the given vertex.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#outDegree-java.lang.String-\">outDegree</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v</code> - The vertex to examine.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"outDegree-stanford.cs106.collections.Vertex-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>outDegree</h4>\n<pre>public final&nbsp;int&nbsp;outDegree(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v)</pre>\n<div class=\"block\">Returns the number of outgoing edges from the given vertex.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#outDegree-stanford.cs106.collections.Vertex-\">outDegree</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v</code> - The vertex to examine.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"removeEdge-stanford.cs106.collections.Edge-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeEdge</h4>\n<pre>public final&nbsp;void&nbsp;removeEdge(<a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\">Edge</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;&nbsp;e)</pre>\n<div class=\"block\">Removes any edge(s) that exist with the given extra info stored in it/them.\n If multiple edges have the given extra info, all are removed.\n If null is passed, removes any edges that have no extra info stored in them.\n If no edge exists in this graph with the given extra info, has no effect.\n This implementation must examine all edges in the graph to find the\n specified edge, so it is inefficient.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#removeEdge-stanford.cs106.collections.Edge-\">removeEdge</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>e</code> - The edge extra info of the edge to remove.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"removeEdge-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeEdge</h4>\n<pre>public final&nbsp;void&nbsp;removeEdge(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v1,\n                             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v2)</pre>\n<div class=\"block\">Removes any edge that exists from vertex v1 to vertex v2.\n If this graph is undirected, the two vertices can be passed in either order.\n If no edge exists in this graph between the two given vertices, has no effect.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#removeEdge-java.lang.String-java.lang.String-\">removeEdge</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v1</code> - The starting vertex of the edge.</dd>\n<dd><code>v2</code> - The ending vertex of the edge.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"removeEdge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeEdge</h4>\n<pre>public final&nbsp;void&nbsp;removeEdge(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v1,\n                             <a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v2)</pre>\n<div class=\"block\">Removes any edge that exists from vertex v1 to vertex v2.\n If this graph is undirected, the two vertices can be passed in either order.\n If no edge exists in this graph between the two given vertices, has no effect.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#removeEdge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">removeEdge</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v1</code> - The starting vertex of the edge.</dd>\n<dd><code>v2</code> - The ending vertex of the edge.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"removeVertex-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeVertex</h4>\n<pre>public final&nbsp;void&nbsp;removeVertex(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v)</pre>\n<div class=\"block\">Removes the given vertex from this graph, along with all edges that were\n touching it.\n If the given vertex is not part of this graph, has no effect.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#removeVertex-java.lang.String-\">removeVertex</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v</code> - The vertex to remove.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"removeVertex-stanford.cs106.collections.Vertex-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeVertex</h4>\n<pre>public final&nbsp;void&nbsp;removeVertex(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v)</pre>\n<div class=\"block\">Removes the given vertex from this graph, along with all edges that were\n touching it.\n If the given vertex is not part of this graph, has no effect.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#removeVertex-stanford.cs106.collections.Vertex-\">removeVertex</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v</code> - The vertex to remove.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"resetData--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>resetData</h4>\n<pre>public final&nbsp;void&nbsp;resetData()</pre>\n<div class=\"block\">Clears out any data stored in each vertex.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#resetData--\">resetData</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"toString--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>toString</h4>\n<pre>public final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;toString()</pre>\n<div class=\"block\">Returns a string representation of this graph and its vertices and edges, such as\n \"{V={A, B, C}, E={(A, B), (A, C)}}\".</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#toString--\">toString</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"toStringDetailed--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>toStringDetailed</h4>\n<pre>public final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;toStringDetailed()</pre>\n<div class=\"block\">Returns a detailed multi-line string representation of this graph and its vertices, such as\n \"Graph{\n     vertices:\n         A -> neighbors: [B, C]\n         B -> neighbors: [A]\n         C -> neighbors: [A]\n     edges:\n         (A,B,weight=2)\n         (A,C)\n }\"</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#toStringDetailed--\">toStringDetailed</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"vertex-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>vertex</h4>\n<pre>public&nbsp;<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;vertex(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from interface:&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html#vertex-java.lang.String-\">Graph</a></code></span></div>\n<div class=\"block\">Returns the structure of information about the vertex with the given name.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#vertex-java.lang.String-\">vertex</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"vertexCount--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>vertexCount</h4>\n<pre>public final&nbsp;int&nbsp;vertexCount()</pre>\n<div class=\"block\">Returns the number of vertices in this graph.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#vertexCount--\">vertexCount</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"vertexes--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>vertexes</h4>\n<pre>public final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&gt;&nbsp;vertexes()</pre>\n<div class=\"block\">Returns a collection of the vertices in this graph.\n The collection is a shallow 'view' of the vertices.\n Any changes made to it are written back to the graph.\n Vertices can be added, removed, cleared, etc. on this collection.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/Graph.html#vertexes--\">vertexes</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>,<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">E</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"checkForNegative-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>checkForNegative</h4>\n<pre>protected static&nbsp;void&nbsp;checkForNegative(double&nbsp;value)</pre>\n<div class=\"block\">Tests the given integer to see whether it is negative.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>value</code> - The integer to examine.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - If the value is negative.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"checkForNegative-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>checkForNegative</h4>\n<pre>protected static&nbsp;void&nbsp;checkForNegative(int&nbsp;value)</pre>\n<div class=\"block\">Tests the given integer to see whether it is negative.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>value</code> - The integer to examine.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - If the value is negative.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"checkForNull-java.lang.Object...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>checkForNull</h4>\n<pre>protected static&nbsp;void&nbsp;checkForNull(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>...&nbsp;args)</pre>\n<div class=\"block\">Tests the given arguments for null.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>args</code> - The arguments to examine.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - If any argument is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"checkVertex-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>checkVertex</h4>\n<pre>protected final&nbsp;void&nbsp;checkVertex(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;vertex)</pre>\n<div class=\"block\">Tests the given vertex for null and for membership in the graph.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>vertex</code> - The vertex to examine.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - If the vertex is not part of this graph.</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - If the vertex is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"checkVertex-stanford.cs106.collections.Vertex-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>checkVertex</h4>\n<pre>protected final&nbsp;void&nbsp;checkVertex(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;vertex)</pre>\n</li>\n</ul>\n<a name=\"checkVertexes-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>checkVertexes</h4>\n<pre>protected final&nbsp;void&nbsp;checkVertexes(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v1,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v2)</pre>\n<div class=\"block\">Tests the given vertices for null and for membership in the graph.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v1</code> - The first vertex to examine.</dd>\n<dd><code>v2</code> - The second vertex to examine.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - If any vertex is not part of this graph.</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - If any vertex is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"checkVertexes-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>checkVertexes</h4>\n<pre>protected final&nbsp;void&nbsp;checkVertexes(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v1,\n                                   <a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;v2)</pre>\n<div class=\"block\">Tests the given vertices for null and for membership in the graph.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v1</code> - The first vertex to examine.</dd>\n<dd><code>v2</code> - The second vertex to examine.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - If any vertex is not part of this graph.</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - If any vertex is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"clearVertexInfo--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clearVertexInfo</h4>\n<pre>protected final&nbsp;void&nbsp;clearVertexInfo()</pre>\n<div class=\"block\">Resets all distance / previous / visited markings from vertex info\n objects in this graph.</div>\n</li>\n</ul>\n<a name=\"corruptVertexInfo--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>corruptVertexInfo</h4>\n<pre>protected final&nbsp;void&nbsp;corruptVertexInfo()</pre>\n<div class=\"block\">Sets some of the distance / previous / visited markings from vertex info\n objects in this graph to have various random values, to test whether\n a student's code properly clears the info between calls.</div>\n</li>\n</ul>\n<a name=\"vertexInfo-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>vertexInfo</h4>\n<pre>protected final&nbsp;<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&nbsp;vertexInfo(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v)</pre>\n<div class=\"block\">Returns the Vertex object associated with the given vertex.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v</code> - The vertex to examine.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - If any vertex is not part of this graph.</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - If any vertex is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"vertexInfos--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>vertexInfos</h4>\n<pre>protected final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"type parameter in BasicGraph\">V</a>&gt;&gt;&nbsp;vertexInfos()</pre>\n<div class=\"block\">Returns a read-only view of all internal data about vertex information.</div>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/collections/BasicGraph.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"BasicGraph.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/collections/Edge.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>Edge</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"Edge\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/collections/Edge.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Edge.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.collections</div>\n<h2 title=\"Class Edge\" class=\"title\">Class Edge&lt;V,E&gt;</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.collections.Edge&lt;V,E&gt;</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true\" title=\"class or interface in java.lang\">Cloneable</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">Edge&lt;V,E&gt;</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>\nimplements <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true\" title=\"class or interface in java.lang\">Cloneable</a></pre>\n<div class=\"block\">An Edge object represents information stored in a graph edge,\n including its vertices, weight, and any extra edge info.</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Edge.html#DEFAULT_WEIGHT\">DEFAULT_WEIGHT</a></span></code>\n<div class=\"block\">Default weight of an edge in an undirected graph (1).</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"type parameter in Edge\">E</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Edge.html#extraData\">extraData</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Edge.html#Edge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">Edge</a></span>(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"type parameter in Edge\">V</a>&gt;&nbsp;start,\n    <a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"type parameter in Edge\">V</a>&gt;&nbsp;end)</code>\n<div class=\"block\">Constructs information about the given edge with the default edge weight.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Edge.html#Edge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-double-\">Edge</a></span>(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"type parameter in Edge\">V</a>&gt;&nbsp;start,\n    <a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"type parameter in Edge\">V</a>&gt;&nbsp;end,\n    double&nbsp;weight)</code>\n<div class=\"block\">Constructs information about the given edge with the default edge weight.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\">Edge</a>&lt;<a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"type parameter in Edge\">V</a>,<a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"type parameter in Edge\">E</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Edge.html#clone--\">clone</a></span>()</code>\n<div class=\"block\">Returns a copy of this Edge as per the contract of the Object.clone method.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Edge.html#contains-stanford.cs106.collections.Vertex-\">contains</a></span>(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"type parameter in Edge\">V</a>&gt;&nbsp;vertex)</code>\n<div class=\"block\">Returns true if this edge touches the given vertex, that is,\n if it is the start or end of this edge.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Edge.html#cost--\">cost</a></span>()</code>\n<div class=\"block\">Returns the weight of this edge.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"type parameter in Edge\">V</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Edge.html#end--\">end</a></span>()</code>\n<div class=\"block\">Returns the ending vertex of this edge.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Edge.html#equals-java.lang.Object-\">equals</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;o)</code>\n<div class=\"block\">Returns true if o refers to an Edge object with identical state to this Edge object.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"type parameter in Edge\">V</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Edge.html#finish--\">finish</a></span>()</code>\n<div class=\"block\">Returns the ending vertex of this edge.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Edge.html#hashCode--\">hashCode</a></span>()</code>\n<div class=\"block\">Returns an integer code for placing this edge into a hash-based collection.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Edge.html#setWeight-double-\">setWeight</a></span>(double&nbsp;weight)</code>\n<div class=\"block\">Modifies this edge's weight to be the given value.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"type parameter in Edge\">V</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Edge.html#start--\">start</a></span>()</code>\n<div class=\"block\">Returns the starting vertex of this edge.</div>\n</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Edge.html#toString--\">toString</a></span>()</code>\n<div class=\"block\">Returns a string representation of the information about this edge.</div>\n</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Edge.html#weight--\">weight</a></span>()</code>\n<div class=\"block\">Returns the weight of this edge.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"DEFAULT_WEIGHT\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>DEFAULT_WEIGHT</h4>\n<pre>public static final&nbsp;int DEFAULT_WEIGHT</pre>\n<div class=\"block\">Default weight of an edge in an undirected graph (1).</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#stanford.cs106.collections.Edge.DEFAULT_WEIGHT\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"extraData\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>extraData</h4>\n<pre>public&nbsp;<a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"type parameter in Edge\">E</a> extraData</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"Edge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>Edge</h4>\n<pre>public&nbsp;Edge(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"type parameter in Edge\">V</a>&gt;&nbsp;start,\n            <a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"type parameter in Edge\">V</a>&gt;&nbsp;end)</pre>\n<div class=\"block\">Constructs information about the given edge with the default edge weight.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>start</code> - The starting vertex of the edge.</dd>\n<dd><code>end</code> - The ending vertex of the edge.</dd>\n<dd><code>edge</code> - The extra information (if any) to store in this edge; null if none.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - If the start or end vertex is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"Edge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-double-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>Edge</h4>\n<pre>public&nbsp;Edge(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"type parameter in Edge\">V</a>&gt;&nbsp;start,\n            <a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"type parameter in Edge\">V</a>&gt;&nbsp;end,\n            double&nbsp;weight)</pre>\n<div class=\"block\">Constructs information about the given edge with the default edge weight.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>start</code> - The starting vertex of the edge.</dd>\n<dd><code>end</code> - The ending vertex of the edge.</dd>\n<dd><code>edge</code> - The extra information (if any) to store in this edge; null if none.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - If the start or end vertex is null.</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"clone--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clone</h4>\n<pre>public&nbsp;<a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\">Edge</a>&lt;<a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"type parameter in Edge\">V</a>,<a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"type parameter in Edge\">E</a>&gt;&nbsp;clone()</pre>\n<div class=\"block\">Returns a copy of this Edge as per the contract of the Object.clone method.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"contains-stanford.cs106.collections.Vertex-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>contains</h4>\n<pre>public&nbsp;boolean&nbsp;contains(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"type parameter in Edge\">V</a>&gt;&nbsp;vertex)</pre>\n<div class=\"block\">Returns true if this edge touches the given vertex, that is,\n if it is the start or end of this edge.</div>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - If the vertex is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"cost--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>cost</h4>\n<pre>public&nbsp;double&nbsp;cost()</pre>\n<div class=\"block\">Returns the weight of this edge.</div>\n</li>\n</ul>\n<a name=\"end--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>end</h4>\n<pre>public&nbsp;<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"type parameter in Edge\">V</a>&gt;&nbsp;end()</pre>\n<div class=\"block\">Returns the ending vertex of this edge.\n In undirected graphs, the notion of \"start\" and \"end\" are ambiguous\n for an edge; this method always returns the second vertex that was passed\n to the edge's constructor.</div>\n</li>\n</ul>\n<a name=\"equals-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>equals</h4>\n<pre>public&nbsp;boolean&nbsp;equals(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;o)</pre>\n<div class=\"block\">Returns true if o refers to an Edge object with identical state to this Edge object.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>o</code> - the object to examine</dd>\n</dl>\n</li>\n</ul>\n<a name=\"finish--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>finish</h4>\n<pre>public&nbsp;<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"type parameter in Edge\">V</a>&gt;&nbsp;finish()</pre>\n<div class=\"block\">Returns the ending vertex of this edge.\n In undirected graphs, the notion of \"start\" and \"end\" are ambiguous\n for an edge; this method always returns the second vertex that was passed\n to the edge's constructor.</div>\n</li>\n</ul>\n<a name=\"hashCode--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hashCode</h4>\n<pre>public&nbsp;int&nbsp;hashCode()</pre>\n<div class=\"block\">Returns an integer code for placing this edge into a hash-based collection.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setWeight-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setWeight</h4>\n<pre>public&nbsp;void&nbsp;setWeight(double&nbsp;weight)</pre>\n<div class=\"block\">Modifies this edge's weight to be the given value.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>weight</code> - The new weight to use.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - If the weight is negative.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"start--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>start</h4>\n<pre>public&nbsp;<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"type parameter in Edge\">V</a>&gt;&nbsp;start()</pre>\n<div class=\"block\">Returns the starting vertex of this edge.\n In undirected graphs, the notion of \"start\" and \"end\" are ambiguous\n for an edge; this method always returns the first vertex that was passed\n to the edge's constructor.</div>\n</li>\n</ul>\n<a name=\"weight--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>weight</h4>\n<pre>public&nbsp;double&nbsp;weight()</pre>\n<div class=\"block\">Returns the weight of this edge.</div>\n</li>\n</ul>\n<a name=\"toString--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>toString</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;toString()</pre>\n<div class=\"block\">Returns a string representation of the information about this edge.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/collections/Edge.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Edge.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/collections/Graph.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>Graph</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"Graph\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":6,\"i1\":6,\"i2\":6,\"i3\":6,\"i4\":6,\"i5\":6,\"i6\":6,\"i7\":6,\"i8\":6,\"i9\":6,\"i10\":6,\"i11\":6,\"i12\":6,\"i13\":6,\"i14\":6,\"i15\":6,\"i16\":6,\"i17\":6,\"i18\":6,\"i19\":6,\"i20\":6,\"i21\":6,\"i22\":6,\"i23\":6,\"i24\":6,\"i25\":6,\"i26\":6,\"i27\":6,\"i28\":6,\"i29\":6,\"i30\":6,\"i31\":6,\"i32\":6,\"i33\":6,\"i34\":6,\"i35\":6,\"i36\":6,\"i37\":6,\"i38\":6,\"i39\":6,\"i40\":6};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],4:[\"t3\",\"Abstract Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/collections/GraphColor.html\" title=\"enum in stanford.cs106.collections\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/collections/Graph.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Graph.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.collections</div>\n<h2 title=\"Interface Graph\" class=\"title\">Interface Graph&lt;V,E&gt;</h2>\n</div>\n<div class=\"contentContainer\">\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Known Implementing Classes:</dt>\n<dd><a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public interface <span class=\"typeNameLabel\">Graph&lt;V,E&gt;</span></pre>\n<div class=\"block\">A Graph is a collection of vertices and edges between vertices.\n A graph can be directed or undirected (indicating whether edges are one-directional\n or bidirectional, respectively), and weighted or unweighted (indicating whether\n edges have different or uniform cost, respectively).\n \n <p>\n A Graph does not allow null vertices, but it does allow null edges,\n which corresponds to an edge with no extra information stored in it.\n \n <p>\n A Graph can have at most one edge with the same start and end vertex;\n in other words, it is not permitted to have two edges between the same vertices,\n except in a directed graph it is allowed to have an edge A,B and an edge B,A.\n Loops (edges from a vertex directly back to itself) are prohibited; an\n IllegalArgumentException will be thrown on an attempt to add a loop.\n \n <p>\n Implementations of the Graph interface do not allow edges with negative weights.\n If a negative edge weight is passed, an IllegalArgumentException is thrown.\n A weight of 0 is allowed.</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t3\" class=\"tableTab\"><span><a href=\"javascript:show(4);\">Abstract Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#addEdge-java.lang.String-java.lang.String-\">addEdge</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v1,\n       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v2)</code>\n<div class=\"block\">Adds an edge between the given two vertices, if none already exists.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#addEdge-java.lang.String-java.lang.String-double-\">addEdge</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v1,\n       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v2,\n       double&nbsp;weight)</code>\n<div class=\"block\">Adds an edge between the given two vertices, if none already exists.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#addEdge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">addEdge</a></span>(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&nbsp;v1,\n       <a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&nbsp;v2)</code>\n<div class=\"block\">Adds an edge between the given two vertices, if none already exists.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#addEdge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-double-\">addEdge</a></span>(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&nbsp;v1,\n       <a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&nbsp;v2,\n       double&nbsp;weight)</code>\n<div class=\"block\">Adds an edge between the given two vertices, if none already exists.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#addVertex-java.lang.String-\">addVertex</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v)</code>\n<div class=\"block\">Adds the given element as a vertex in this graph.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#clear--\">clear</a></span>()</code>\n<div class=\"block\">Removes all vertices and edges from this graph.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#clearEdges--\">clearEdges</a></span>()</code>\n<div class=\"block\">Removes all edges from this graph.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#containsEdge-java.lang.String-java.lang.String-\">containsEdge</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v1,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v2)</code>\n<div class=\"block\">Returns whether this graph contains an edge between the given vertices.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#containsEdge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">containsEdge</a></span>(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&nbsp;v1,\n            <a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&nbsp;v2)</code>\n<div class=\"block\">Returns whether this graph contains an edge between the given vertices.</div>\n</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#containsPath-java.util.List-\">containsPath</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;path)</code>\n<div class=\"block\">Returns true if the given list of vertices represents a path that can\n be formed by walking edges between those vertices in this graph,\n walking from the start to the end of the list.</div>\n</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#containsVertex-java.lang.String-\">containsVertex</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v)</code>\n<div class=\"block\">Returns whether this graph contains the given vertex.</div>\n</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#containsVertex-stanford.cs106.collections.Vertex-\">containsVertex</a></span>(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&nbsp;v)</code>\n<div class=\"block\">Returns whether this graph contains the given vertex.</div>\n</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#cost-java.util.List-\">cost</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;path)</code>\n<div class=\"block\">Returns the total cost of following the given path of vertices in this graph,\n which is the sum of the edge weights between the path's vertices from start to end.</div>\n</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#degree-java.lang.String-\">degree</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v)</code>\n<div class=\"block\">Returns the number of outgoing edges from the given vertex.</div>\n</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#degree-stanford.cs106.collections.Vertex-\">degree</a></span>(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&nbsp;v)</code>\n<div class=\"block\">Returns the number of outgoing edges from the given vertex.</div>\n</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\">Edge</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>,<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">E</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#edge-java.lang.String-java.lang.String-\">edge</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v1,\n    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v2)</code>\n<div class=\"block\">Returns the extra information stored in the edge between vertices v1 and v2, if one exists.</div>\n</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\">Edge</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>,<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">E</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#edge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">edge</a></span>(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&nbsp;v1,\n    <a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&nbsp;v2)</code>\n<div class=\"block\">Returns the extra information stored in the edge between vertices v1 and v2, if one exists.</div>\n</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#edgeCount--\">edgeCount</a></span>()</code>\n<div class=\"block\">Returns the total number of edges in this graph.</div>\n</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\">Edge</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>,<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">E</a>&gt;&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#edges--\">edges</a></span>()</code>\n<div class=\"block\">Returns a collection of all edges in this graph.</div>\n</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#edgeWeight-java.lang.String-java.lang.String-\">edgeWeight</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v1,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v2)</code>\n<div class=\"block\">Returns the weight of the edge between vertices v1 and v2, if one exists.</div>\n</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#edgeWeight-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">edgeWeight</a></span>(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&nbsp;v1,\n          <a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&nbsp;v2)</code>\n<div class=\"block\">Returns the weight of the edge between vertices v1 and v2, if one exists.</div>\n</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#inDegree-java.lang.String-\">inDegree</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v)</code>\n<div class=\"block\">Returns the number of incoming edges to the given vertex.</div>\n</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#inDegree-stanford.cs106.collections.Vertex-\">inDegree</a></span>(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&nbsp;v)</code>\n<div class=\"block\">Returns the number of incoming edges to the given vertex.</div>\n</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#isDirected--\">isDirected</a></span>()</code>\n<div class=\"block\">Returns true if this is a directed graph, and false if it is undirected.</div>\n</td>\n</tr>\n<tr id=\"i24\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#isEmpty--\">isEmpty</a></span>()</code>\n<div class=\"block\">Returns true if this graph does not contain any vertices or edges.</div>\n</td>\n</tr>\n<tr id=\"i25\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#isWeighted--\">isWeighted</a></span>()</code>\n<div class=\"block\">Returns true if this is a weighted graph and false if it is unweighted.</div>\n</td>\n</tr>\n<tr id=\"i26\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#neighbors-java.lang.String-\">neighbors</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v)</code>\n<div class=\"block\">Returns a collection containing all neighbors, that is, all vertices that are\n directly connected to the given vertex by an outgoing edge.</div>\n</td>\n</tr>\n<tr id=\"i27\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#neighbors-stanford.cs106.collections.Vertex-\">neighbors</a></span>(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&nbsp;v)</code>\n<div class=\"block\">Returns a collection containing all neighbors, that is, all vertices that are\n directly connected to the given vertex by an outgoing edge.</div>\n</td>\n</tr>\n<tr id=\"i28\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#outDegree-java.lang.String-\">outDegree</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v)</code>\n<div class=\"block\">Returns the number of outgoing edges from the given vertex.</div>\n</td>\n</tr>\n<tr id=\"i29\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#outDegree-stanford.cs106.collections.Vertex-\">outDegree</a></span>(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&nbsp;v)</code>\n<div class=\"block\">Returns the number of outgoing edges from the given vertex.</div>\n</td>\n</tr>\n<tr id=\"i30\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#removeEdge-stanford.cs106.collections.Edge-\">removeEdge</a></span>(<a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\">Edge</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>,<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">E</a>&gt;&nbsp;e)</code>\n<div class=\"block\">Removes any edge(s) that exist with the given extra info stored in it/them.</div>\n</td>\n</tr>\n<tr id=\"i31\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#removeEdge-java.lang.String-java.lang.String-\">removeEdge</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v1,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v2)</code>\n<div class=\"block\">Removes any edge that exists from vertex v1 to vertex v2.</div>\n</td>\n</tr>\n<tr id=\"i32\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#removeEdge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">removeEdge</a></span>(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&nbsp;v1,\n          <a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&nbsp;v2)</code>\n<div class=\"block\">Removes any edge that exists from vertex v1 to vertex v2.</div>\n</td>\n</tr>\n<tr id=\"i33\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#removeVertex-java.lang.String-\">removeVertex</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v)</code>\n<div class=\"block\">Removes the given vertex from this graph, along with all edges that were\n touching it.</div>\n</td>\n</tr>\n<tr id=\"i34\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#removeVertex-stanford.cs106.collections.Vertex-\">removeVertex</a></span>(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&nbsp;v)</code>\n<div class=\"block\">Removes the given vertex from this graph, along with all edges that were\n touching it.</div>\n</td>\n</tr>\n<tr id=\"i35\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#resetData--\">resetData</a></span>()</code>\n<div class=\"block\">Clears out any data stored in each vertex.</div>\n</td>\n</tr>\n<tr id=\"i36\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#toString--\">toString</a></span>()</code>\n<div class=\"block\">Returns a string representation of this graph and its vertices and edges, such as\n \"{V={A, B, C}, E={(A, B), (A, C)}}\".</div>\n</td>\n</tr>\n<tr id=\"i37\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#toStringDetailed--\">toStringDetailed</a></span>()</code>\n<div class=\"block\">Returns a detailed multi-line string representation of this graph and its vertices, such as\n \"Graph{\n     vertices:\n         A -> neighbors: [B, C]\n         B -> neighbors: [A]\n         C -> neighbors: [A]\n     edges:\n         (A,B,weight=2)\n         (A,C)\n }\"</div>\n</td>\n</tr>\n<tr id=\"i38\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#vertex-java.lang.String-\">vertex</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>\n<div class=\"block\">Returns the structure of information about the vertex with the given name.</div>\n</td>\n</tr>\n<tr id=\"i39\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#vertexCount--\">vertexCount</a></span>()</code>\n<div class=\"block\">Returns the number of vertices in this graph.</div>\n</td>\n</tr>\n<tr id=\"i40\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Graph.html#vertexes--\">vertexes</a></span>()</code>\n<div class=\"block\">Returns a collection of the vertices in this graph.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"addEdge-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addEdge</h4>\n<pre>void&nbsp;addEdge(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v1,\n             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v2)</pre>\n<div class=\"block\">Adds an edge between the given two vertices, if none already exists.\n The edge will be given a default weight of 1.\n No extra information will be stored in the edge.\n If an edge already exists between these vertices, its extra information\n will be cleared and its weight is updated to 1.\n If this graph is undirected, the two vertices can be passed in either order.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v1</code> - Starting vertex.</dd>\n<dd><code>v2</code> - Ending vertex.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - If either vertex is not part of the graph,\n                                  or if v1 and v2 are the same (a loop).</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - If any object parameter is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"addEdge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addEdge</h4>\n<pre>void&nbsp;addEdge(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&nbsp;v1,\n             <a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&nbsp;v2)</pre>\n<div class=\"block\">Adds an edge between the given two vertices, if none already exists.\n The edge will be given a default weight of 1.\n No extra information will be stored in the edge.\n If an edge already exists between these vertices, its extra information\n will be cleared and its weight is updated to 1.\n If this graph is undirected, the two vertices can be passed in either order.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v1</code> - Starting vertex.</dd>\n<dd><code>v2</code> - Ending vertex.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - If either vertex is not part of the graph,\n                                  or if v1 and v2 are the same (a loop).</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - If any object parameter is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"addEdge-java.lang.String-java.lang.String-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addEdge</h4>\n<pre>void&nbsp;addEdge(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v1,\n             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v2,\n             double&nbsp;weight)</pre>\n<div class=\"block\">Adds an edge between the given two vertices, if none already exists.\n The edge will be given a default weight of 1.\n No extra information will be stored in the edge.\n If an edge already exists between these vertices, its extra information\n will be cleared and its weight is updated to 1.\n If this graph is undirected, the two vertices can be passed in either order.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v1</code> - Starting vertex.</dd>\n<dd><code>v2</code> - Ending vertex.</dd>\n<dd><code>weight</code> - Edge's weight.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - If either vertex is not part of the graph,\n                                  if edge weight is negative,\n                                  if v1 and v2 are the same (a loop),\n                                  or if this is an unweighted graph and an edge\n                                  weight other than 1 is passed.</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - If any object parameter is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"addEdge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addEdge</h4>\n<pre>void&nbsp;addEdge(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&nbsp;v1,\n             <a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&nbsp;v2,\n             double&nbsp;weight)</pre>\n<div class=\"block\">Adds an edge between the given two vertices, if none already exists.\n The edge will be given a default weight of 1.\n No extra information will be stored in the edge.\n If an edge already exists between these vertices, its extra information\n will be cleared and its weight is updated to 1.\n If this graph is undirected, the two vertices can be passed in either order.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v1</code> - Starting vertex.</dd>\n<dd><code>v2</code> - Ending vertex.</dd>\n<dd><code>weight</code> - Edge's weight.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - If either vertex is not part of the graph,\n                                  if edge weight is negative,\n                                  if v1 and v2 are the same (a loop),\n                                  or if this is an unweighted graph and an edge\n                                  weight other than 1 is passed.</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - If any object parameter is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"addVertex-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addVertex</h4>\n<pre>void&nbsp;addVertex(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v)</pre>\n<div class=\"block\">Adds the given element as a vertex in this graph.\n If the given element is already a vertex in this graph, no change is made.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v</code> - The vertex to add.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - If the vertex is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"clear--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clear</h4>\n<pre>void&nbsp;clear()</pre>\n<div class=\"block\">Removes all vertices and edges from this graph.</div>\n</li>\n</ul>\n<a name=\"clearEdges--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clearEdges</h4>\n<pre>void&nbsp;clearEdges()</pre>\n<div class=\"block\">Removes all edges from this graph.</div>\n</li>\n</ul>\n<a name=\"containsEdge-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>containsEdge</h4>\n<pre>boolean&nbsp;containsEdge(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v1,\n                     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v2)</pre>\n<div class=\"block\">Returns whether this graph contains an edge between the given vertices.\n If either vertex is not part of this graph, returns false.</div>\n</li>\n</ul>\n<a name=\"containsEdge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>containsEdge</h4>\n<pre>boolean&nbsp;containsEdge(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&nbsp;v1,\n                     <a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&nbsp;v2)</pre>\n<div class=\"block\">Returns whether this graph contains an edge between the given vertices.\n If either vertex is not part of this graph, returns false.</div>\n</li>\n</ul>\n<a name=\"containsPath-java.util.List-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>containsPath</h4>\n<pre>boolean&nbsp;containsPath(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;path)</pre>\n<div class=\"block\">Returns true if the given list of vertices represents a path that can\n be formed by walking edges between those vertices in this graph,\n walking from the start to the end of the list.\n If any vertex in the path is not found in this graph, or if there is\n not an edge between any pair of neighboring vertices in the list, returns false.\n Returns true for an empty list, and for a one-element list where the one\n element is a vertex that is found in this graph.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>path</code> - The list of vertices representing the path to check.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - If the list or any of its elements is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"containsVertex-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>containsVertex</h4>\n<pre>boolean&nbsp;containsVertex(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v)</pre>\n<div class=\"block\">Returns whether this graph contains the given vertex.\n If the vertex passed is null, returns false.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v</code> - The vertex.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"containsVertex-stanford.cs106.collections.Vertex-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>containsVertex</h4>\n<pre>boolean&nbsp;containsVertex(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&nbsp;v)</pre>\n<div class=\"block\">Returns whether this graph contains the given vertex.\n If the vertex passed is null, returns false.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v</code> - The vertex.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"cost-java.util.List-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>cost</h4>\n<pre>double&nbsp;cost(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;path)</pre>\n<div class=\"block\">Returns the total cost of following the given path of vertices in this graph,\n which is the sum of the edge weights between the path's vertices from start to end.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>path</code> - The list of vertices in the path to examine.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - If any vertex in the path is not part of this graph,\n                                  or if there is not an edge between any two neighboring\n                                  vertices in the path.</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - If the path or any vertex in it is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"degree-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>degree</h4>\n<pre>int&nbsp;degree(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v)</pre>\n<div class=\"block\">Returns the number of outgoing edges from the given vertex.\n This method is an alias for outDegree; it is provided because\n undirected graphs generally just think of vertices as having one\n overall degree and not a separate in- and out- degree.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v</code> - The vertex.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - If the vertex is not part of the graph.</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - If any object parameter is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"degree-stanford.cs106.collections.Vertex-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>degree</h4>\n<pre>int&nbsp;degree(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&nbsp;v)</pre>\n<div class=\"block\">Returns the number of outgoing edges from the given vertex.\n This method is an alias for outDegree; it is provided because\n undirected graphs generally just think of vertices as having one\n overall degree and not a separate in- and out- degree.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v</code> - The vertex.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - If the vertex is not part of the graph.</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - If any object parameter is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"edge-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>edge</h4>\n<pre><a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\">Edge</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>,<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">E</a>&gt;&nbsp;edge(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v1,\n               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v2)</pre>\n<div class=\"block\">Returns the extra information stored in the edge between vertices v1 and v2, if one exists.\n If this graph is undirected, the two vertices can be passed in either order.\n Returns null if there is no edge between the given vertices or if the edge between\n the given vertices contains no extra information.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v1</code> - The starting vertex.</dd>\n<dd><code>v2</code> - The ending vertex.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - If either vertex is not part of the graph.</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - If any object parameter is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"edge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>edge</h4>\n<pre><a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\">Edge</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>,<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">E</a>&gt;&nbsp;edge(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&nbsp;v1,\n               <a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&nbsp;v2)</pre>\n<div class=\"block\">Returns the extra information stored in the edge between vertices v1 and v2, if one exists.\n If this graph is undirected, the two vertices can be passed in either order.\n Returns null if there is no edge between the given vertices or if the edge between\n the given vertices contains no extra information.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v1</code> - The starting vertex.</dd>\n<dd><code>v2</code> - The ending vertex.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - If either vertex is not part of the graph.</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - If any object parameter is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"edgeCount--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>edgeCount</h4>\n<pre>int&nbsp;edgeCount()</pre>\n<div class=\"block\">Returns the total number of edges in this graph.\n Note that this does not necessarily equal edges().size() because edges()\n returns a set of unique edge information values stored in each edge,\n excluding nulls (edges without any extra information stored in them),\n while this method returns a count of all edges including ones without\n any information stored in them and ones with information that is a duplicate\n of that stored in some other edge.</div>\n</li>\n</ul>\n<a name=\"edges--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>edges</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\">Edge</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>,<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">E</a>&gt;&gt;&nbsp;edges()</pre>\n<div class=\"block\">Returns a collection of all edges in this graph.\n The collection is a shallow 'view' of the edges.\n Any changes made to it are written back to the graph.\n New edges cannot be added directly to the collection returned by this method,\n because it would not know which vertices to associate the edge with.\n But edges can be removed, cleared, etc.</div>\n</li>\n</ul>\n<a name=\"edgeWeight-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>edgeWeight</h4>\n<pre>double&nbsp;edgeWeight(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v1,\n                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v2)</pre>\n<div class=\"block\">Returns the weight of the edge between vertices v1 and v2, if one exists.\n If this graph is undirected, the two vertices can be passed in either order.\n Returns -1 if there is no edge between the given vertices.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v1</code> - The starting vertex.</dd>\n<dd><code>v2</code> - The ending vertex.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - If either vertex is not part of the graph.</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - If any object parameter is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"edgeWeight-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>edgeWeight</h4>\n<pre>double&nbsp;edgeWeight(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&nbsp;v1,\n                  <a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&nbsp;v2)</pre>\n<div class=\"block\">Returns the weight of the edge between vertices v1 and v2, if one exists.\n If this graph is undirected, the two vertices can be passed in either order.\n Returns -1 if there is no edge between the given vertices.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v1</code> - The starting vertex.</dd>\n<dd><code>v2</code> - The ending vertex.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - If either vertex is not part of the graph.</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - If any object parameter is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"inDegree-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>inDegree</h4>\n<pre>int&nbsp;inDegree(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v)</pre>\n<div class=\"block\">Returns the number of incoming edges to the given vertex.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v</code> - The vertex to examine.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - If the vertex is not part of the graph.</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - If any object parameter is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"inDegree-stanford.cs106.collections.Vertex-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>inDegree</h4>\n<pre>int&nbsp;inDegree(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&nbsp;v)</pre>\n<div class=\"block\">Returns the number of incoming edges to the given vertex.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v</code> - The vertex to examine.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - If the vertex is not part of the graph.</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - If any object parameter is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"isDirected--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isDirected</h4>\n<pre>boolean&nbsp;isDirected()</pre>\n<div class=\"block\">Returns true if this is a directed graph, and false if it is undirected.</div>\n</li>\n</ul>\n<a name=\"isEmpty--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isEmpty</h4>\n<pre>boolean&nbsp;isEmpty()</pre>\n<div class=\"block\">Returns true if this graph does not contain any vertices or edges.</div>\n</li>\n</ul>\n<a name=\"isWeighted--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isWeighted</h4>\n<pre>boolean&nbsp;isWeighted()</pre>\n<div class=\"block\">Returns true if this is a weighted graph and false if it is unweighted.</div>\n</li>\n</ul>\n<a name=\"neighbors-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>neighbors</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&gt;&nbsp;neighbors(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v)</pre>\n<div class=\"block\">Returns a collection containing all neighbors, that is, all vertices that are\n directly connected to the given vertex by an outgoing edge.\n The collection is a shallow 'view' of the neighboring vertices.\n Any changes made to it are written back to the graph.\n New vertices cannot be added directly to the collection returned by this method.\n But vertices can be removed, cleared, etc.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v</code> - The vertex to examine.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - If the vertex is not part of this graph.</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - If the vertex is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"neighbors-stanford.cs106.collections.Vertex-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>neighbors</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&gt;&nbsp;neighbors(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&nbsp;v)</pre>\n<div class=\"block\">Returns a collection containing all neighbors, that is, all vertices that are\n directly connected to the given vertex by an outgoing edge.\n The collection is a shallow 'view' of the neighboring vertices.\n Any changes made to it are written back to the graph.\n New vertices cannot be added directly to the collection returned by this method.\n But vertices can be removed, cleared, etc.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v</code> - The vertex to examine.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - If the vertex is not part of this graph.</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - If the vertex is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"outDegree-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>outDegree</h4>\n<pre>int&nbsp;outDegree(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v)</pre>\n<div class=\"block\">Returns the number of outgoing edges from the given vertex.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v</code> - The vertex to examine.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"outDegree-stanford.cs106.collections.Vertex-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>outDegree</h4>\n<pre>int&nbsp;outDegree(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&nbsp;v)</pre>\n<div class=\"block\">Returns the number of outgoing edges from the given vertex.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v</code> - The vertex to examine.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"removeEdge-stanford.cs106.collections.Edge-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeEdge</h4>\n<pre>void&nbsp;removeEdge(<a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\">Edge</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>,<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">E</a>&gt;&nbsp;e)</pre>\n<div class=\"block\">Removes any edge(s) that exist with the given extra info stored in it/them.\n If multiple edges have the given extra info, all are removed.\n If null is passed, removes any edges that have no extra info stored in them.\n If no edge exists in this graph with the given extra info, has no effect.\n This implementation must examine all edges in the graph to find the\n specified edge, so it is inefficient.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>e</code> - The edge extra info of the edge to remove.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"removeEdge-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeEdge</h4>\n<pre>void&nbsp;removeEdge(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v1,\n                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v2)</pre>\n<div class=\"block\">Removes any edge that exists from vertex v1 to vertex v2.\n If this graph is undirected, the two vertices can be passed in either order.\n If no edge exists in this graph between the two given vertices, has no effect.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v1</code> - The starting vertex of the edge.</dd>\n<dd><code>v2</code> - The ending vertex of the edge.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - If either vertex is not part of the graph.</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - If any object parameter is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"removeEdge-stanford.cs106.collections.Vertex-stanford.cs106.collections.Vertex-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeEdge</h4>\n<pre>void&nbsp;removeEdge(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&nbsp;v1,\n                <a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&nbsp;v2)</pre>\n<div class=\"block\">Removes any edge that exists from vertex v1 to vertex v2.\n If this graph is undirected, the two vertices can be passed in either order.\n If no edge exists in this graph between the two given vertices, has no effect.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v1</code> - The starting vertex of the edge.</dd>\n<dd><code>v2</code> - The ending vertex of the edge.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - If either vertex is not part of the graph.</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - If any object parameter is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"removeVertex-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeVertex</h4>\n<pre>void&nbsp;removeVertex(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;v)</pre>\n<div class=\"block\">Removes the given vertex from this graph, along with all edges that were\n touching it.\n If the given vertex is not part of this graph, has no effect.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v</code> - The vertex to remove.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - If the vertex is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"removeVertex-stanford.cs106.collections.Vertex-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeVertex</h4>\n<pre>void&nbsp;removeVertex(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&nbsp;v)</pre>\n<div class=\"block\">Removes the given vertex from this graph, along with all edges that were\n touching it.\n If the given vertex is not part of this graph, has no effect.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v</code> - The vertex to remove.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - If the vertex is null.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"resetData--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>resetData</h4>\n<pre>void&nbsp;resetData()</pre>\n<div class=\"block\">Clears out any data stored in each vertex.</div>\n</li>\n</ul>\n<a name=\"toString--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>toString</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;toString()</pre>\n<div class=\"block\">Returns a string representation of this graph and its vertices and edges, such as\n \"{V={A, B, C}, E={(A, B), (A, C)}}\".</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"toStringDetailed--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>toStringDetailed</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;toStringDetailed()</pre>\n<div class=\"block\">Returns a detailed multi-line string representation of this graph and its vertices, such as\n \"Graph{\n     vertices:\n         A -> neighbors: [B, C]\n         B -> neighbors: [A]\n         C -> neighbors: [A]\n     edges:\n         (A,B,weight=2)\n         (A,C)\n }\"</div>\n</li>\n</ul>\n<a name=\"vertex-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>vertex</h4>\n<pre><a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&nbsp;vertex(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n<div class=\"block\">Returns the structure of information about the vertex with the given name.</div>\n</li>\n</ul>\n<a name=\"vertexCount--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>vertexCount</h4>\n<pre>int&nbsp;vertexCount()</pre>\n<div class=\"block\">Returns the number of vertices in this graph.</div>\n</li>\n</ul>\n<a name=\"vertexes--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>vertexes</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"type parameter in Graph\">V</a>&gt;&gt;&nbsp;vertexes()</pre>\n<div class=\"block\">Returns a collection of the vertices in this graph.\n The collection is a shallow 'view' of the vertices.\n Any changes made to it are written back to the graph.\n Vertices can be added, removed, cleared, etc. on this collection.</div>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/collections/GraphColor.html\" title=\"enum in stanford.cs106.collections\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/collections/Graph.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Graph.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/collections/GraphColor.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>GraphColor</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GraphColor\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/collections/Grid.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/collections/GraphColor.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GraphColor.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#enum.constant.summary\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#enum.constant.detail\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.collections</div>\n<h2 title=\"Enum GraphColor\" class=\"title\">Enum GraphColor</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Enum</a>&lt;<a href=\"../../../stanford/cs106/collections/GraphColor.html\" title=\"enum in stanford.cs106.collections\">GraphColor</a>&gt;</li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.collections.GraphColor</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;<a href=\"../../../stanford/cs106/collections/GraphColor.html\" title=\"enum in stanford.cs106.collections\">GraphColor</a>&gt;</dd>\n</dl>\n<hr>\n<br>\n<pre>public enum <span class=\"typeNameLabel\">GraphColor</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true\" title=\"class or interface in java.lang\">Enum</a>&lt;<a href=\"../../../stanford/cs106/collections/GraphColor.html\" title=\"enum in stanford.cs106.collections\">GraphColor</a>&gt;</pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== ENUM CONSTANT SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"enum.constant.summary\">\n<!--   -->\n</a>\n<h3>Enum Constant Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Enum Constant Summary table, listing enum constants, and an explanation\">\n<caption><span>Enum Constants</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Enum Constant and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/GraphColor.html#GRAY\">GRAY</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/GraphColor.html#GREEN\">GREEN</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/GraphColor.html#RED\">RED</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/GraphColor.html#UNCOLORED\">UNCOLORED</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/GraphColor.html#WHITE\">WHITE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/GraphColor.html#YELLOW\">YELLOW</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../../stanford/cs106/collections/GraphColor.html\" title=\"enum in stanford.cs106.collections\">GraphColor</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/GraphColor.html#valueOf-java.lang.String-\">valueOf</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>\n<div class=\"block\">Returns the enum constant of this type with the specified name.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../../stanford/cs106/collections/GraphColor.html\" title=\"enum in stanford.cs106.collections\">GraphColor</a>[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/GraphColor.html#values--\">values</a></span>()</code>\n<div class=\"block\">Returns an array containing the constants of this enum type, in\nthe order they are declared.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Enum\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true\" title=\"class or interface in java.lang\">Enum</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#compareTo-E-\" title=\"class or interface in java.lang\">compareTo</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#getDeclaringClass--\" title=\"class or interface in java.lang\">getDeclaringClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#name--\" title=\"class or interface in java.lang\">name</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#ordinal--\" title=\"class or interface in java.lang\">ordinal</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#valueOf-java.lang.Class-java.lang.String-\" title=\"class or interface in java.lang\">valueOf</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ ENUM CONSTANT DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"enum.constant.detail\">\n<!--   -->\n</a>\n<h3>Enum Constant Detail</h3>\n<a name=\"UNCOLORED\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>UNCOLORED</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/collections/GraphColor.html\" title=\"enum in stanford.cs106.collections\">GraphColor</a> UNCOLORED</pre>\n</li>\n</ul>\n<a name=\"WHITE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>WHITE</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/collections/GraphColor.html\" title=\"enum in stanford.cs106.collections\">GraphColor</a> WHITE</pre>\n</li>\n</ul>\n<a name=\"GRAY\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>GRAY</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/collections/GraphColor.html\" title=\"enum in stanford.cs106.collections\">GraphColor</a> GRAY</pre>\n</li>\n</ul>\n<a name=\"YELLOW\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>YELLOW</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/collections/GraphColor.html\" title=\"enum in stanford.cs106.collections\">GraphColor</a> YELLOW</pre>\n</li>\n</ul>\n<a name=\"GREEN\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>GREEN</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/collections/GraphColor.html\" title=\"enum in stanford.cs106.collections\">GraphColor</a> GREEN</pre>\n</li>\n</ul>\n<a name=\"RED\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>RED</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/collections/GraphColor.html\" title=\"enum in stanford.cs106.collections\">GraphColor</a> RED</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"values--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>values</h4>\n<pre>public static&nbsp;<a href=\"../../../stanford/cs106/collections/GraphColor.html\" title=\"enum in stanford.cs106.collections\">GraphColor</a>[]&nbsp;values()</pre>\n<div class=\"block\">Returns an array containing the constants of this enum type, in\nthe order they are declared.  This method may be used to iterate\nover the constants as follows:\n<pre>\nfor (GraphColor c : GraphColor.values())\n&nbsp;   System.out.println(c);\n</pre></div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>an array containing the constants of this enum type, in the order they are declared</dd>\n</dl>\n</li>\n</ul>\n<a name=\"valueOf-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>valueOf</h4>\n<pre>public static&nbsp;<a href=\"../../../stanford/cs106/collections/GraphColor.html\" title=\"enum in stanford.cs106.collections\">GraphColor</a>&nbsp;valueOf(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n<div class=\"block\">Returns the enum constant of this type with the specified name.\nThe string must match <i>exactly</i> an identifier used to declare an\nenum constant in this type.  (Extraneous whitespace characters are \nnot permitted.)</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>name</code> - the name of the enum constant to be returned.</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the enum constant with the specified name</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - if this enum type has no constant with the specified name</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if the argument is null</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/collections/Grid.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/collections/GraphColor.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GraphColor.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#enum.constant.summary\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#enum.constant.detail\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/collections/Grid.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>Grid</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"Grid\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/collections/GraphColor.html\" title=\"enum in stanford.cs106.collections\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/collections/HashBasedTable.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/collections/Grid.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Grid.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.collections</div>\n<h2 title=\"Class Grid\" class=\"title\">Class Grid&lt;E&gt;</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.collections.Grid&lt;E&gt;</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">Grid&lt;E&gt;</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Grid.html#Grid-int-int-\">Grid</a></span>(int&nbsp;rows,\n    int&nbsp;cols)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Grid.html#equals-java.lang.Object-\">equals</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;o)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Grid.html#fill-E-\">fill</a></span>(<a href=\"../../../stanford/cs106/collections/Grid.html\" title=\"type parameter in Grid\">E</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../../stanford/cs106/collections/Grid.html\" title=\"type parameter in Grid\">E</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Grid.html#get-int-int-\">get</a></span>(int&nbsp;row,\n   int&nbsp;col)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Grid.html#hashCode--\">hashCode</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Grid.html#height--\">height</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Grid.html#inBounds-int-int-\">inBounds</a></span>(int&nbsp;row,\n        int&nbsp;col)</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Grid.html#isEmpty--\">isEmpty</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Grid.html#numCols--\">numCols</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Grid.html#numRows--\">numRows</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Grid.html#resize-int-int-\">resize</a></span>(int&nbsp;rows,\n      int&nbsp;cols)</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Grid.html#set-int-int-E-\">set</a></span>(int&nbsp;row,\n   int&nbsp;col,\n   <a href=\"../../../stanford/cs106/collections/Grid.html\" title=\"type parameter in Grid\">E</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Grid.html#size--\">size</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Grid.html#toString--\">toString</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Grid.html#toString2D--\">toString2D</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Grid.html#toString2D-java.lang.String-java.lang.String-java.lang.String-java.lang.String-\">toString2D</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;rowStart,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;rowEnd,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;colSeparator,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;rowSeparator)</code>&nbsp;</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Grid.html#width--\">width</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"Grid-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>Grid</h4>\n<pre>public&nbsp;Grid(int&nbsp;rows,\n            int&nbsp;cols)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"equals-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>equals</h4>\n<pre>public&nbsp;boolean&nbsp;equals(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;o)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"fill-java.lang.Object-\">\n<!--   -->\n</a><a name=\"fill-E-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fill</h4>\n<pre>public&nbsp;void&nbsp;fill(<a href=\"../../../stanford/cs106/collections/Grid.html\" title=\"type parameter in Grid\">E</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"get-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>get</h4>\n<pre>public&nbsp;<a href=\"../../../stanford/cs106/collections/Grid.html\" title=\"type parameter in Grid\">E</a>&nbsp;get(int&nbsp;row,\n             int&nbsp;col)</pre>\n</li>\n</ul>\n<a name=\"hashCode--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hashCode</h4>\n<pre>public&nbsp;int&nbsp;hashCode()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"height--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>height</h4>\n<pre>public&nbsp;int&nbsp;height()</pre>\n</li>\n</ul>\n<a name=\"inBounds-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>inBounds</h4>\n<pre>public&nbsp;boolean&nbsp;inBounds(int&nbsp;row,\n                        int&nbsp;col)</pre>\n</li>\n</ul>\n<a name=\"isEmpty--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isEmpty</h4>\n<pre>public&nbsp;boolean&nbsp;isEmpty()</pre>\n</li>\n</ul>\n<a name=\"numCols--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>numCols</h4>\n<pre>public&nbsp;int&nbsp;numCols()</pre>\n</li>\n</ul>\n<a name=\"numRows--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>numRows</h4>\n<pre>public&nbsp;int&nbsp;numRows()</pre>\n</li>\n</ul>\n<a name=\"resize-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>resize</h4>\n<pre>public&nbsp;void&nbsp;resize(int&nbsp;rows,\n                   int&nbsp;cols)</pre>\n</li>\n</ul>\n<a name=\"set-int-int-java.lang.Object-\">\n<!--   -->\n</a><a name=\"set-int-int-E-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>set</h4>\n<pre>public&nbsp;void&nbsp;set(int&nbsp;row,\n                int&nbsp;col,\n                <a href=\"../../../stanford/cs106/collections/Grid.html\" title=\"type parameter in Grid\">E</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"size--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>size</h4>\n<pre>public&nbsp;int&nbsp;size()</pre>\n</li>\n</ul>\n<a name=\"toString--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>toString</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;toString()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"toString2D--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>toString2D</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;toString2D()</pre>\n</li>\n</ul>\n<a name=\"toString2D-java.lang.String-java.lang.String-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>toString2D</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;toString2D(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;rowStart,\n                         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;rowEnd,\n                         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;colSeparator,\n                         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;rowSeparator)</pre>\n</li>\n</ul>\n<a name=\"width--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>width</h4>\n<pre>public&nbsp;int&nbsp;width()</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/collections/GraphColor.html\" title=\"enum in stanford.cs106.collections\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/collections/HashBasedTable.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/collections/Grid.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Grid.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/collections/HashBasedTable.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>HashBasedTable</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"HashBasedTable\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":10,\"i2\":10,\"i3\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/collections/Grid.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/collections/HashMultimap.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/collections/HashBasedTable.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"HashBasedTable.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.collections</div>\n<h2 title=\"Class HashBasedTable\" class=\"title\">Class HashBasedTable&lt;R,C,V&gt;</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\">stanford.cs106.collections.AbstractTable</a>&lt;R,C,V&gt;</li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.collections.HashBasedTable&lt;R,C,V&gt;</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"../../../stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\">Table</a>&lt;R,C,V&gt;</dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">HashBasedTable&lt;R,C,V&gt;</span>\nextends <a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\">AbstractTable</a>&lt;R,C,V&gt;</pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/HashBasedTable.html#HashBasedTable--\">HashBasedTable</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static &lt;R,C,V&gt;&nbsp;<a href=\"../../../stanford/cs106/collections/HashBasedTable.html\" title=\"class in stanford.cs106.collections\">HashBasedTable</a>&lt;R,C,V&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/HashBasedTable.html#create--\">create</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/HashBasedTable.html\" title=\"type parameter in HashBasedTable\">R</a>,<a href=\"../../../stanford/cs106/collections/HashBasedTable.html\" title=\"type parameter in HashBasedTable\">V</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/HashBasedTable.html#createColumnMap--\">createColumnMap</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/HashBasedTable.html\" title=\"type parameter in HashBasedTable\">C</a>,<a href=\"../../../stanford/cs106/collections/HashBasedTable.html\" title=\"type parameter in HashBasedTable\">V</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/HashBasedTable.html#createRowMap--\">createRowMap</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/HashBasedTable.html\" title=\"type parameter in HashBasedTable\">R</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/HashBasedTable.html\" title=\"type parameter in HashBasedTable\">C</a>,<a href=\"../../../stanford/cs106/collections/HashBasedTable.html\" title=\"type parameter in HashBasedTable\">V</a>&gt;&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/HashBasedTable.html#createTableMap--\">createTableMap</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.cs106.collections.AbstractTable\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.cs106.collections.<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\">AbstractTable</a></h3>\n<code><a href=\"../../../stanford/cs106/collections/AbstractTable.html#clear--\">clear</a>, <a href=\"../../../stanford/cs106/collections/AbstractTable.html#column-C-\">column</a>, <a href=\"../../../stanford/cs106/collections/AbstractTable.html#contains-java.lang.Object-java.lang.Object-\">contains</a>, <a href=\"../../../stanford/cs106/collections/AbstractTable.html#containsColumn-java.lang.Object-\">containsColumn</a>, <a href=\"../../../stanford/cs106/collections/AbstractTable.html#containsRow-java.lang.Object-\">containsRow</a>, <a href=\"../../../stanford/cs106/collections/AbstractTable.html#containsValue-java.lang.Object-\">containsValue</a>, <a href=\"../../../stanford/cs106/collections/AbstractTable.html#get-java.lang.Object-java.lang.Object-\">get</a>, <a href=\"../../../stanford/cs106/collections/AbstractTable.html#isEmpty--\">isEmpty</a>, <a href=\"../../../stanford/cs106/collections/AbstractTable.html#put-R-C-V-\">put</a>, <a href=\"../../../stanford/cs106/collections/AbstractTable.html#remove-java.lang.Object-java.lang.Object-\">remove</a>, <a href=\"../../../stanford/cs106/collections/AbstractTable.html#row-R-\">row</a>, <a href=\"../../../stanford/cs106/collections/AbstractTable.html#rowKeySet--\">rowKeySet</a>, <a href=\"../../../stanford/cs106/collections/AbstractTable.html#rowMap--\">rowMap</a>, <a href=\"../../../stanford/cs106/collections/AbstractTable.html#size--\">size</a>, <a href=\"../../../stanford/cs106/collections/AbstractTable.html#toString--\">toString</a>, <a href=\"../../../stanford/cs106/collections/AbstractTable.html#values--\">values</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"HashBasedTable--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>HashBasedTable</h4>\n<pre>public&nbsp;HashBasedTable()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"create--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>create</h4>\n<pre>public static&nbsp;&lt;R,C,V&gt;&nbsp;<a href=\"../../../stanford/cs106/collections/HashBasedTable.html\" title=\"class in stanford.cs106.collections\">HashBasedTable</a>&lt;R,C,V&gt;&nbsp;create()</pre>\n</li>\n</ul>\n<a name=\"createTableMap--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createTableMap</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/HashBasedTable.html\" title=\"type parameter in HashBasedTable\">R</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/HashBasedTable.html\" title=\"type parameter in HashBasedTable\">C</a>,<a href=\"../../../stanford/cs106/collections/HashBasedTable.html\" title=\"type parameter in HashBasedTable\">V</a>&gt;&gt;&nbsp;createTableMap()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/AbstractTable.html#createTableMap--\">createTableMap</a></code>&nbsp;in class&nbsp;<code><a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\">AbstractTable</a>&lt;<a href=\"../../../stanford/cs106/collections/HashBasedTable.html\" title=\"type parameter in HashBasedTable\">R</a>,<a href=\"../../../stanford/cs106/collections/HashBasedTable.html\" title=\"type parameter in HashBasedTable\">C</a>,<a href=\"../../../stanford/cs106/collections/HashBasedTable.html\" title=\"type parameter in HashBasedTable\">V</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"createColumnMap--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createColumnMap</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/HashBasedTable.html\" title=\"type parameter in HashBasedTable\">R</a>,<a href=\"../../../stanford/cs106/collections/HashBasedTable.html\" title=\"type parameter in HashBasedTable\">V</a>&gt;&nbsp;createColumnMap()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/AbstractTable.html#createColumnMap--\">createColumnMap</a></code>&nbsp;in class&nbsp;<code><a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\">AbstractTable</a>&lt;<a href=\"../../../stanford/cs106/collections/HashBasedTable.html\" title=\"type parameter in HashBasedTable\">R</a>,<a href=\"../../../stanford/cs106/collections/HashBasedTable.html\" title=\"type parameter in HashBasedTable\">C</a>,<a href=\"../../../stanford/cs106/collections/HashBasedTable.html\" title=\"type parameter in HashBasedTable\">V</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"createRowMap--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>createRowMap</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/HashBasedTable.html\" title=\"type parameter in HashBasedTable\">C</a>,<a href=\"../../../stanford/cs106/collections/HashBasedTable.html\" title=\"type parameter in HashBasedTable\">V</a>&gt;&nbsp;createRowMap()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/AbstractTable.html#createRowMap--\">createRowMap</a></code>&nbsp;in class&nbsp;<code><a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\">AbstractTable</a>&lt;<a href=\"../../../stanford/cs106/collections/HashBasedTable.html\" title=\"type parameter in HashBasedTable\">R</a>,<a href=\"../../../stanford/cs106/collections/HashBasedTable.html\" title=\"type parameter in HashBasedTable\">C</a>,<a href=\"../../../stanford/cs106/collections/HashBasedTable.html\" title=\"type parameter in HashBasedTable\">V</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/collections/Grid.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/collections/HashMultimap.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/collections/HashBasedTable.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"HashBasedTable.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/collections/HashMultimap.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>HashMultimap</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"HashMultimap\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9,\"i2\":10,\"i3\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/collections/HashBasedTable.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/collections/Lexicon.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/collections/HashMultimap.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"HashMultimap.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.collections</div>\n<h2 title=\"Class HashMultimap\" class=\"title\">Class HashMultimap&lt;K,V&gt;</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"class in stanford.cs106.collections\">stanford.cs106.collections.AbstractMultimap</a>&lt;K,V&gt;</li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.collections.HashMultimap&lt;K,V&gt;</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"../../../stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\">Multimap</a>&lt;K,V&gt;</dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">HashMultimap&lt;K,V&gt;</span>\nextends <a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"class in stanford.cs106.collections\">AbstractMultimap</a>&lt;K,V&gt;</pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/HashMultimap.html#HashMultimap--\">HashMultimap</a></span>()</code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/HashMultimap.html#HashMultimap-boolean-\">HashMultimap</a></span>(boolean&nbsp;isSet)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static &lt;K,V&gt;&nbsp;<a href=\"../../../stanford/cs106/collections/HashMultimap.html\" title=\"class in stanford.cs106.collections\">HashMultimap</a>&lt;K,V&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/HashMultimap.html#create--\">create</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static &lt;K,V&gt;&nbsp;<a href=\"../../../stanford/cs106/collections/HashMultimap.html\" title=\"class in stanford.cs106.collections\">HashMultimap</a>&lt;K,V&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/HashMultimap.html#create-boolean-\">create</a></span>(boolean&nbsp;isSet)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/HashMultimap.html\" title=\"type parameter in HashMultimap\">K</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"../../../stanford/cs106/collections/HashMultimap.html\" title=\"type parameter in HashMultimap\">V</a>&gt;&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/HashMultimap.html#createMap--\">createMap</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"../../../stanford/cs106/collections/HashMultimap.html\" title=\"type parameter in HashMultimap\">V</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/HashMultimap.html#createSet--\">createSet</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.cs106.collections.AbstractMultimap\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.cs106.collections.<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"class in stanford.cs106.collections\">AbstractMultimap</a></h3>\n<code><a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#clear--\">clear</a>, <a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#containsEntry-java.lang.Object-java.lang.Object-\">containsEntry</a>, <a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#containsKey-java.lang.Object-\">containsKey</a>, <a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#containsValue-java.lang.Object-\">containsValue</a>, <a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#createList--\">createList</a>, <a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#get-K-\">get</a>, <a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#isEmpty--\">isEmpty</a>, <a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#keySet--\">keySet</a>, <a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#put-K-V-\">put</a>, <a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#remove-java.lang.Object-java.lang.Object-\">remove</a>, <a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#removeAll-java.lang.Object-\">removeAll</a>, <a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#size--\">size</a>, <a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#toString--\">toString</a>, <a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#values--\">values</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"HashMultimap--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>HashMultimap</h4>\n<pre>public&nbsp;HashMultimap()</pre>\n</li>\n</ul>\n<a name=\"HashMultimap-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>HashMultimap</h4>\n<pre>public&nbsp;HashMultimap(boolean&nbsp;isSet)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"create--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>create</h4>\n<pre>public static&nbsp;&lt;K,V&gt;&nbsp;<a href=\"../../../stanford/cs106/collections/HashMultimap.html\" title=\"class in stanford.cs106.collections\">HashMultimap</a>&lt;K,V&gt;&nbsp;create()</pre>\n</li>\n</ul>\n<a name=\"create-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>create</h4>\n<pre>public static&nbsp;&lt;K,V&gt;&nbsp;<a href=\"../../../stanford/cs106/collections/HashMultimap.html\" title=\"class in stanford.cs106.collections\">HashMultimap</a>&lt;K,V&gt;&nbsp;create(boolean&nbsp;isSet)</pre>\n</li>\n</ul>\n<a name=\"createMap--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createMap</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/HashMultimap.html\" title=\"type parameter in HashMultimap\">K</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"../../../stanford/cs106/collections/HashMultimap.html\" title=\"type parameter in HashMultimap\">V</a>&gt;&gt;&nbsp;createMap()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#createMap--\">createMap</a></code>&nbsp;in class&nbsp;<code><a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"class in stanford.cs106.collections\">AbstractMultimap</a>&lt;<a href=\"../../../stanford/cs106/collections/HashMultimap.html\" title=\"type parameter in HashMultimap\">K</a>,<a href=\"../../../stanford/cs106/collections/HashMultimap.html\" title=\"type parameter in HashMultimap\">V</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"createSet--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>createSet</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"../../../stanford/cs106/collections/HashMultimap.html\" title=\"type parameter in HashMultimap\">V</a>&gt;&nbsp;createSet()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#createSet--\">createSet</a></code>&nbsp;in class&nbsp;<code><a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"class in stanford.cs106.collections\">AbstractMultimap</a>&lt;<a href=\"../../../stanford/cs106/collections/HashMultimap.html\" title=\"type parameter in HashMultimap\">K</a>,<a href=\"../../../stanford/cs106/collections/HashMultimap.html\" title=\"type parameter in HashMultimap\">V</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/collections/HashBasedTable.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/collections/Lexicon.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/collections/HashMultimap.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"HashMultimap.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/collections/Lexicon.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>Lexicon</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"Lexicon\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/collections/HashMultimap.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/collections/Lexicon.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Lexicon.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.collections</div>\n<h2 title=\"Class Lexicon\" class=\"title\">Class Lexicon</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.collections.Lexicon</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;</dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">Lexicon</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>\nimplements <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;</pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Lexicon.html#Lexicon--\">Lexicon</a></span>()</code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Lexicon.html#Lexicon-java.lang.String-\">Lexicon</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Lexicon.html#add-java.lang.String-\">add</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;word)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Lexicon.html#addWordsFrom-java.io.InputStream-\">addWordsFrom</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;input)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Lexicon.html#addWordsFrom-java.io.Reader-\">addWordsFrom</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Reader.html?is-external=true\" title=\"class or interface in java.io\">Reader</a>&nbsp;reader)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Lexicon.html#addWordsFrom-java.util.Scanner-\">addWordsFrom</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Scanner.html?is-external=true\" title=\"class or interface in java.util\">Scanner</a>&nbsp;input)</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Lexicon.html#addWordsFromFile-java.io.File-\">addWordsFromFile</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Lexicon.html#addWordsFromFile-java.lang.String-\">addWordsFromFile</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Lexicon.html#contains-java.lang.String-\">contains</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;word)</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Lexicon.html#containsPrefix-java.lang.String-\">containsPrefix</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prefix)</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Lexicon.html#equals-java.lang.Object-\">equals</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;o)</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Lexicon.html#hashCode--\">hashCode</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Lexicon.html#isEmpty--\">isEmpty</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true\" title=\"class or interface in java.util\">Iterator</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Lexicon.html#iterator--\">iterator</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Lexicon.html#prefixCount--\">prefixCount</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Lexicon.html#size--\">size</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Lexicon.html#toString--\">toString</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Iterable\">\n<!--   -->\n</a>\n<h3>Methods inherited from interface&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true#forEach-java.util.function.Consumer-\" title=\"class or interface in java.lang\">forEach</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true#spliterator--\" title=\"class or interface in java.lang\">spliterator</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"Lexicon--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>Lexicon</h4>\n<pre>public&nbsp;Lexicon()</pre>\n</li>\n</ul>\n<a name=\"Lexicon-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>Lexicon</h4>\n<pre>public&nbsp;Lexicon(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"add-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>public&nbsp;void&nbsp;add(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;word)</pre>\n</li>\n</ul>\n<a name=\"addWordsFrom-java.io.InputStream-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addWordsFrom</h4>\n<pre>public&nbsp;void&nbsp;addWordsFrom(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;input)</pre>\n</li>\n</ul>\n<a name=\"addWordsFrom-java.io.Reader-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addWordsFrom</h4>\n<pre>public&nbsp;void&nbsp;addWordsFrom(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Reader.html?is-external=true\" title=\"class or interface in java.io\">Reader</a>&nbsp;reader)</pre>\n</li>\n</ul>\n<a name=\"addWordsFrom-java.util.Scanner-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addWordsFrom</h4>\n<pre>public&nbsp;void&nbsp;addWordsFrom(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Scanner.html?is-external=true\" title=\"class or interface in java.util\">Scanner</a>&nbsp;input)</pre>\n</li>\n</ul>\n<a name=\"addWordsFromFile-java.io.File-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addWordsFromFile</h4>\n<pre>public&nbsp;void&nbsp;addWordsFromFile(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)</pre>\n</li>\n</ul>\n<a name=\"addWordsFromFile-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addWordsFromFile</h4>\n<pre>public&nbsp;void&nbsp;addWordsFromFile(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</pre>\n</li>\n</ul>\n<a name=\"contains-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>contains</h4>\n<pre>public&nbsp;boolean&nbsp;contains(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;word)</pre>\n</li>\n</ul>\n<a name=\"containsPrefix-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>containsPrefix</h4>\n<pre>public&nbsp;boolean&nbsp;containsPrefix(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;prefix)</pre>\n</li>\n</ul>\n<a name=\"equals-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>equals</h4>\n<pre>public&nbsp;boolean&nbsp;equals(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;o)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"hashCode--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hashCode</h4>\n<pre>public&nbsp;int&nbsp;hashCode()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"isEmpty--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isEmpty</h4>\n<pre>public&nbsp;boolean&nbsp;isEmpty()</pre>\n</li>\n</ul>\n<a name=\"iterator--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>iterator</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true\" title=\"class or interface in java.util\">Iterator</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;iterator()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true#iterator--\" title=\"class or interface in java.lang\">iterator</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"prefixCount--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>prefixCount</h4>\n<pre>public&nbsp;int&nbsp;prefixCount()</pre>\n</li>\n</ul>\n<a name=\"size--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>size</h4>\n<pre>public&nbsp;int&nbsp;size()</pre>\n</li>\n</ul>\n<a name=\"toString--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>toString</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;toString()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/collections/HashMultimap.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/collections/Lexicon.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Lexicon.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/collections/Multimap.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>Multimap</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"Multimap\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":6,\"i1\":6,\"i2\":6,\"i3\":6,\"i4\":6,\"i5\":6,\"i6\":6,\"i7\":6,\"i8\":6,\"i9\":6,\"i10\":6,\"i11\":6};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],4:[\"t3\",\"Abstract Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/collections/Lexicon.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/collections/Multimap.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Multimap.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.collections</div>\n<h2 title=\"Interface Multimap\" class=\"title\">Interface Multimap&lt;K,V&gt;</h2>\n</div>\n<div class=\"contentContainer\">\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Known Implementing Classes:</dt>\n<dd><a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"class in stanford.cs106.collections\">AbstractMultimap</a>, <a href=\"../../../stanford/cs106/collections/HashMultimap.html\" title=\"class in stanford.cs106.collections\">HashMultimap</a>, <a href=\"../../../stanford/cs106/collections/TreeMultimap.html\" title=\"class in stanford.cs106.collections\">TreeMultimap</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public interface <span class=\"typeNameLabel\">Multimap&lt;K,V&gt;</span></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t3\" class=\"tableTab\"><span><a href=\"javascript:show(4);\">Abstract Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Multimap.html#clear--\">clear</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Multimap.html#containsEntry-java.lang.Object-java.lang.Object-\">containsEntry</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;key,\n             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Multimap.html#containsKey-java.lang.Object-\">containsKey</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;key)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Multimap.html#containsValue-java.lang.Object-\">containsValue</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"../../../stanford/cs106/collections/Multimap.html\" title=\"type parameter in Multimap\">V</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Multimap.html#get-K-\">get</a></span>(<a href=\"../../../stanford/cs106/collections/Multimap.html\" title=\"type parameter in Multimap\">K</a>&nbsp;key)</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Multimap.html#isEmpty--\">isEmpty</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"../../../stanford/cs106/collections/Multimap.html\" title=\"type parameter in Multimap\">K</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Multimap.html#keySet--\">keySet</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Multimap.html#put-K-V-\">put</a></span>(<a href=\"../../../stanford/cs106/collections/Multimap.html\" title=\"type parameter in Multimap\">K</a>&nbsp;key,\n   <a href=\"../../../stanford/cs106/collections/Multimap.html\" title=\"type parameter in Multimap\">V</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Multimap.html#remove-java.lang.Object-java.lang.Object-\">remove</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;key,\n      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"../../../stanford/cs106/collections/Multimap.html\" title=\"type parameter in Multimap\">V</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Multimap.html#removeAll-java.lang.Object-\">removeAll</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;key)</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Multimap.html#size--\">size</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"../../../stanford/cs106/collections/Multimap.html\" title=\"type parameter in Multimap\">V</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Multimap.html#values--\">values</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"clear--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clear</h4>\n<pre>void&nbsp;clear()</pre>\n</li>\n</ul>\n<a name=\"containsEntry-java.lang.Object-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>containsEntry</h4>\n<pre>boolean&nbsp;containsEntry(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;key,\n                      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"containsKey-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>containsKey</h4>\n<pre>boolean&nbsp;containsKey(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;key)</pre>\n</li>\n</ul>\n<a name=\"containsValue-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>containsValue</h4>\n<pre>boolean&nbsp;containsValue(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"get-java.lang.Object-\">\n<!--   -->\n</a><a name=\"get-K-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>get</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"../../../stanford/cs106/collections/Multimap.html\" title=\"type parameter in Multimap\">V</a>&gt;&nbsp;get(<a href=\"../../../stanford/cs106/collections/Multimap.html\" title=\"type parameter in Multimap\">K</a>&nbsp;key)</pre>\n</li>\n</ul>\n<a name=\"isEmpty--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isEmpty</h4>\n<pre>boolean&nbsp;isEmpty()</pre>\n</li>\n</ul>\n<a name=\"keySet--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>keySet</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"../../../stanford/cs106/collections/Multimap.html\" title=\"type parameter in Multimap\">K</a>&gt;&nbsp;keySet()</pre>\n</li>\n</ul>\n<a name=\"put-java.lang.Object-java.lang.Object-\">\n<!--   -->\n</a><a name=\"put-K-V-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>put</h4>\n<pre>boolean&nbsp;put(<a href=\"../../../stanford/cs106/collections/Multimap.html\" title=\"type parameter in Multimap\">K</a>&nbsp;key,\n            <a href=\"../../../stanford/cs106/collections/Multimap.html\" title=\"type parameter in Multimap\">V</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"remove-java.lang.Object-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>remove</h4>\n<pre>boolean&nbsp;remove(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;key,\n               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"removeAll-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeAll</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"../../../stanford/cs106/collections/Multimap.html\" title=\"type parameter in Multimap\">V</a>&gt;&nbsp;removeAll(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;key)</pre>\n</li>\n</ul>\n<a name=\"size--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>size</h4>\n<pre>int&nbsp;size()</pre>\n</li>\n</ul>\n<a name=\"values--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>values</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"../../../stanford/cs106/collections/Multimap.html\" title=\"type parameter in Multimap\">V</a>&gt;&nbsp;values()</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/collections/Lexicon.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/collections/Multimap.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Multimap.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/collections/Table.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>Table</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"Table\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":6,\"i1\":6,\"i2\":6,\"i3\":6,\"i4\":6,\"i5\":6,\"i6\":6,\"i7\":6,\"i8\":6,\"i9\":6,\"i10\":6,\"i11\":6,\"i12\":6,\"i13\":6,\"i14\":6};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],4:[\"t3\",\"Abstract Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/collections/TreeBasedTable.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/collections/Table.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Table.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.collections</div>\n<h2 title=\"Interface Table\" class=\"title\">Interface Table&lt;R,C,V&gt;</h2>\n</div>\n<div class=\"contentContainer\">\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Known Implementing Classes:</dt>\n<dd><a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\">AbstractTable</a>, <a href=\"../../../stanford/cs106/collections/HashBasedTable.html\" title=\"class in stanford.cs106.collections\">HashBasedTable</a>, <a href=\"../../../stanford/cs106/collections/TreeBasedTable.html\" title=\"class in stanford.cs106.collections\">TreeBasedTable</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public interface <span class=\"typeNameLabel\">Table&lt;R,C,V&gt;</span></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t3\" class=\"tableTab\"><span><a href=\"javascript:show(4);\">Abstract Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Table.html#clear--\">clear</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/Table.html\" title=\"type parameter in Table\">R</a>,<a href=\"../../../stanford/cs106/collections/Table.html\" title=\"type parameter in Table\">V</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Table.html#column-C-\">column</a></span>(<a href=\"../../../stanford/cs106/collections/Table.html\" title=\"type parameter in Table\">C</a>&nbsp;columnKey)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Table.html#contains-java.lang.Object-java.lang.Object-\">contains</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;rowKey,\n        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;columnKey)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Table.html#containsColumn-java.lang.Object-\">containsColumn</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;columnKey)</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Table.html#containsRow-java.lang.Object-\">containsRow</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;rowKey)</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Table.html#containsValue-java.lang.Object-\">containsValue</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../../stanford/cs106/collections/Table.html\" title=\"type parameter in Table\">V</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Table.html#get-java.lang.Object-java.lang.Object-\">get</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;rowKey,\n   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;columnKey)</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Table.html#isEmpty--\">isEmpty</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../../stanford/cs106/collections/Table.html\" title=\"type parameter in Table\">V</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Table.html#put-R-C-V-\">put</a></span>(<a href=\"../../../stanford/cs106/collections/Table.html\" title=\"type parameter in Table\">R</a>&nbsp;rowKey,\n   <a href=\"../../../stanford/cs106/collections/Table.html\" title=\"type parameter in Table\">C</a>&nbsp;columnKey,\n   <a href=\"../../../stanford/cs106/collections/Table.html\" title=\"type parameter in Table\">V</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../../stanford/cs106/collections/Table.html\" title=\"type parameter in Table\">V</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Table.html#remove-java.lang.Object-java.lang.Object-\">remove</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;rowKey,\n      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;columnKey)</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/Table.html\" title=\"type parameter in Table\">C</a>,<a href=\"../../../stanford/cs106/collections/Table.html\" title=\"type parameter in Table\">V</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Table.html#row-R-\">row</a></span>(<a href=\"../../../stanford/cs106/collections/Table.html\" title=\"type parameter in Table\">R</a>&nbsp;rowKey)</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"../../../stanford/cs106/collections/Table.html\" title=\"type parameter in Table\">R</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Table.html#rowKeySet--\">rowKeySet</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/Table.html\" title=\"type parameter in Table\">R</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/Table.html\" title=\"type parameter in Table\">C</a>,<a href=\"../../../stanford/cs106/collections/Table.html\" title=\"type parameter in Table\">V</a>&gt;&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Table.html#rowMap--\">rowMap</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Table.html#size--\">size</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"../../../stanford/cs106/collections/Table.html\" title=\"type parameter in Table\">V</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Table.html#values--\">values</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"clear--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clear</h4>\n<pre>void&nbsp;clear()</pre>\n</li>\n</ul>\n<a name=\"column-java.lang.Object-\">\n<!--   -->\n</a><a name=\"column-C-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>column</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/Table.html\" title=\"type parameter in Table\">R</a>,<a href=\"../../../stanford/cs106/collections/Table.html\" title=\"type parameter in Table\">V</a>&gt;&nbsp;column(<a href=\"../../../stanford/cs106/collections/Table.html\" title=\"type parameter in Table\">C</a>&nbsp;columnKey)</pre>\n</li>\n</ul>\n<a name=\"contains-java.lang.Object-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>contains</h4>\n<pre>boolean&nbsp;contains(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;rowKey,\n                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;columnKey)</pre>\n</li>\n</ul>\n<a name=\"containsColumn-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>containsColumn</h4>\n<pre>boolean&nbsp;containsColumn(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;columnKey)</pre>\n</li>\n</ul>\n<a name=\"containsRow-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>containsRow</h4>\n<pre>boolean&nbsp;containsRow(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;rowKey)</pre>\n</li>\n</ul>\n<a name=\"containsValue-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>containsValue</h4>\n<pre>boolean&nbsp;containsValue(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"get-java.lang.Object-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>get</h4>\n<pre><a href=\"../../../stanford/cs106/collections/Table.html\" title=\"type parameter in Table\">V</a>&nbsp;get(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;rowKey,\n      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;columnKey)</pre>\n</li>\n</ul>\n<a name=\"isEmpty--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isEmpty</h4>\n<pre>boolean&nbsp;isEmpty()</pre>\n</li>\n</ul>\n<a name=\"put-java.lang.Object-java.lang.Object-java.lang.Object-\">\n<!--   -->\n</a><a name=\"put-R-C-V-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>put</h4>\n<pre><a href=\"../../../stanford/cs106/collections/Table.html\" title=\"type parameter in Table\">V</a>&nbsp;put(<a href=\"../../../stanford/cs106/collections/Table.html\" title=\"type parameter in Table\">R</a>&nbsp;rowKey,\n      <a href=\"../../../stanford/cs106/collections/Table.html\" title=\"type parameter in Table\">C</a>&nbsp;columnKey,\n      <a href=\"../../../stanford/cs106/collections/Table.html\" title=\"type parameter in Table\">V</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"remove-java.lang.Object-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>remove</h4>\n<pre><a href=\"../../../stanford/cs106/collections/Table.html\" title=\"type parameter in Table\">V</a>&nbsp;remove(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;rowKey,\n         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;columnKey)</pre>\n</li>\n</ul>\n<a name=\"row-java.lang.Object-\">\n<!--   -->\n</a><a name=\"row-R-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>row</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/Table.html\" title=\"type parameter in Table\">C</a>,<a href=\"../../../stanford/cs106/collections/Table.html\" title=\"type parameter in Table\">V</a>&gt;&nbsp;row(<a href=\"../../../stanford/cs106/collections/Table.html\" title=\"type parameter in Table\">R</a>&nbsp;rowKey)</pre>\n</li>\n</ul>\n<a name=\"rowKeySet--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>rowKeySet</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"../../../stanford/cs106/collections/Table.html\" title=\"type parameter in Table\">R</a>&gt;&nbsp;rowKeySet()</pre>\n</li>\n</ul>\n<a name=\"rowMap--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>rowMap</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/Table.html\" title=\"type parameter in Table\">R</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/Table.html\" title=\"type parameter in Table\">C</a>,<a href=\"../../../stanford/cs106/collections/Table.html\" title=\"type parameter in Table\">V</a>&gt;&gt;&nbsp;rowMap()</pre>\n</li>\n</ul>\n<a name=\"size--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>size</h4>\n<pre>int&nbsp;size()</pre>\n</li>\n</ul>\n<a name=\"values--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>values</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"../../../stanford/cs106/collections/Table.html\" title=\"type parameter in Table\">V</a>&gt;&nbsp;values()</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/collections/TreeBasedTable.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/collections/Table.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Table.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/collections/TreeBasedTable.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>TreeBasedTable</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"TreeBasedTable\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":10,\"i2\":10,\"i3\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/collections/TreeMultimap.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/collections/TreeBasedTable.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"TreeBasedTable.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.collections</div>\n<h2 title=\"Class TreeBasedTable\" class=\"title\">Class TreeBasedTable&lt;R extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;? super R&gt;,C extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;? super C&gt;,V&gt;</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\">stanford.cs106.collections.AbstractTable</a>&lt;R,C,V&gt;</li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.collections.TreeBasedTable&lt;R,C,V&gt;</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"../../../stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\">Table</a>&lt;R,C,V&gt;</dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">TreeBasedTable&lt;R extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;? super R&gt;,C extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;? super C&gt;,V&gt;</span>\nextends <a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\">AbstractTable</a>&lt;R,C,V&gt;</pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/TreeBasedTable.html#TreeBasedTable--\">TreeBasedTable</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static &lt;R extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;? super R&gt;,C extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;? super C&gt;,V&gt;<br><a href=\"../../../stanford/cs106/collections/TreeBasedTable.html\" title=\"class in stanford.cs106.collections\">TreeBasedTable</a>&lt;R,C,V&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/TreeBasedTable.html#create--\">create</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/TreeBasedTable.html\" title=\"type parameter in TreeBasedTable\">R</a>,<a href=\"../../../stanford/cs106/collections/TreeBasedTable.html\" title=\"type parameter in TreeBasedTable\">V</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/TreeBasedTable.html#createColumnMap--\">createColumnMap</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/TreeBasedTable.html\" title=\"type parameter in TreeBasedTable\">C</a>,<a href=\"../../../stanford/cs106/collections/TreeBasedTable.html\" title=\"type parameter in TreeBasedTable\">V</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/TreeBasedTable.html#createRowMap--\">createRowMap</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/TreeBasedTable.html\" title=\"type parameter in TreeBasedTable\">R</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/TreeBasedTable.html\" title=\"type parameter in TreeBasedTable\">C</a>,<a href=\"../../../stanford/cs106/collections/TreeBasedTable.html\" title=\"type parameter in TreeBasedTable\">V</a>&gt;&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/TreeBasedTable.html#createTableMap--\">createTableMap</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.cs106.collections.AbstractTable\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.cs106.collections.<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\">AbstractTable</a></h3>\n<code><a href=\"../../../stanford/cs106/collections/AbstractTable.html#clear--\">clear</a>, <a href=\"../../../stanford/cs106/collections/AbstractTable.html#column-C-\">column</a>, <a href=\"../../../stanford/cs106/collections/AbstractTable.html#contains-java.lang.Object-java.lang.Object-\">contains</a>, <a href=\"../../../stanford/cs106/collections/AbstractTable.html#containsColumn-java.lang.Object-\">containsColumn</a>, <a href=\"../../../stanford/cs106/collections/AbstractTable.html#containsRow-java.lang.Object-\">containsRow</a>, <a href=\"../../../stanford/cs106/collections/AbstractTable.html#containsValue-java.lang.Object-\">containsValue</a>, <a href=\"../../../stanford/cs106/collections/AbstractTable.html#get-java.lang.Object-java.lang.Object-\">get</a>, <a href=\"../../../stanford/cs106/collections/AbstractTable.html#isEmpty--\">isEmpty</a>, <a href=\"../../../stanford/cs106/collections/AbstractTable.html#put-R-C-V-\">put</a>, <a href=\"../../../stanford/cs106/collections/AbstractTable.html#remove-java.lang.Object-java.lang.Object-\">remove</a>, <a href=\"../../../stanford/cs106/collections/AbstractTable.html#row-R-\">row</a>, <a href=\"../../../stanford/cs106/collections/AbstractTable.html#rowKeySet--\">rowKeySet</a>, <a href=\"../../../stanford/cs106/collections/AbstractTable.html#rowMap--\">rowMap</a>, <a href=\"../../../stanford/cs106/collections/AbstractTable.html#size--\">size</a>, <a href=\"../../../stanford/cs106/collections/AbstractTable.html#toString--\">toString</a>, <a href=\"../../../stanford/cs106/collections/AbstractTable.html#values--\">values</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"TreeBasedTable--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>TreeBasedTable</h4>\n<pre>public&nbsp;TreeBasedTable()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"create--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>create</h4>\n<pre>public static&nbsp;&lt;R extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;? super R&gt;,C extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;? super C&gt;,V&gt;&nbsp;<a href=\"../../../stanford/cs106/collections/TreeBasedTable.html\" title=\"class in stanford.cs106.collections\">TreeBasedTable</a>&lt;R,C,V&gt;&nbsp;create()</pre>\n</li>\n</ul>\n<a name=\"createTableMap--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createTableMap</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/TreeBasedTable.html\" title=\"type parameter in TreeBasedTable\">R</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/TreeBasedTable.html\" title=\"type parameter in TreeBasedTable\">C</a>,<a href=\"../../../stanford/cs106/collections/TreeBasedTable.html\" title=\"type parameter in TreeBasedTable\">V</a>&gt;&gt;&nbsp;createTableMap()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/AbstractTable.html#createTableMap--\">createTableMap</a></code>&nbsp;in class&nbsp;<code><a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\">AbstractTable</a>&lt;<a href=\"../../../stanford/cs106/collections/TreeBasedTable.html\" title=\"type parameter in TreeBasedTable\">R</a> extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;? super <a href=\"../../../stanford/cs106/collections/TreeBasedTable.html\" title=\"type parameter in TreeBasedTable\">R</a>&gt;,<a href=\"../../../stanford/cs106/collections/TreeBasedTable.html\" title=\"type parameter in TreeBasedTable\">C</a> extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;? super <a href=\"../../../stanford/cs106/collections/TreeBasedTable.html\" title=\"type parameter in TreeBasedTable\">C</a>&gt;,<a href=\"../../../stanford/cs106/collections/TreeBasedTable.html\" title=\"type parameter in TreeBasedTable\">V</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"createColumnMap--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createColumnMap</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/TreeBasedTable.html\" title=\"type parameter in TreeBasedTable\">R</a>,<a href=\"../../../stanford/cs106/collections/TreeBasedTable.html\" title=\"type parameter in TreeBasedTable\">V</a>&gt;&nbsp;createColumnMap()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/AbstractTable.html#createColumnMap--\">createColumnMap</a></code>&nbsp;in class&nbsp;<code><a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\">AbstractTable</a>&lt;<a href=\"../../../stanford/cs106/collections/TreeBasedTable.html\" title=\"type parameter in TreeBasedTable\">R</a> extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;? super <a href=\"../../../stanford/cs106/collections/TreeBasedTable.html\" title=\"type parameter in TreeBasedTable\">R</a>&gt;,<a href=\"../../../stanford/cs106/collections/TreeBasedTable.html\" title=\"type parameter in TreeBasedTable\">C</a> extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;? super <a href=\"../../../stanford/cs106/collections/TreeBasedTable.html\" title=\"type parameter in TreeBasedTable\">C</a>&gt;,<a href=\"../../../stanford/cs106/collections/TreeBasedTable.html\" title=\"type parameter in TreeBasedTable\">V</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"createRowMap--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>createRowMap</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/TreeBasedTable.html\" title=\"type parameter in TreeBasedTable\">C</a>,<a href=\"../../../stanford/cs106/collections/TreeBasedTable.html\" title=\"type parameter in TreeBasedTable\">V</a>&gt;&nbsp;createRowMap()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/AbstractTable.html#createRowMap--\">createRowMap</a></code>&nbsp;in class&nbsp;<code><a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\">AbstractTable</a>&lt;<a href=\"../../../stanford/cs106/collections/TreeBasedTable.html\" title=\"type parameter in TreeBasedTable\">R</a> extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;? super <a href=\"../../../stanford/cs106/collections/TreeBasedTable.html\" title=\"type parameter in TreeBasedTable\">R</a>&gt;,<a href=\"../../../stanford/cs106/collections/TreeBasedTable.html\" title=\"type parameter in TreeBasedTable\">C</a> extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;? super <a href=\"../../../stanford/cs106/collections/TreeBasedTable.html\" title=\"type parameter in TreeBasedTable\">C</a>&gt;,<a href=\"../../../stanford/cs106/collections/TreeBasedTable.html\" title=\"type parameter in TreeBasedTable\">V</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/collections/TreeMultimap.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/collections/TreeBasedTable.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"TreeBasedTable.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/collections/TreeMultimap.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>TreeMultimap</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"TreeMultimap\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9,\"i2\":10,\"i3\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/collections/TreeBasedTable.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/collections/TreeMultimap.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"TreeMultimap.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.collections</div>\n<h2 title=\"Class TreeMultimap\" class=\"title\">Class TreeMultimap&lt;K extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;K&gt;,V&gt;</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"class in stanford.cs106.collections\">stanford.cs106.collections.AbstractMultimap</a>&lt;K,V&gt;</li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.collections.TreeMultimap&lt;K,V&gt;</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"../../../stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\">Multimap</a>&lt;K,V&gt;</dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">TreeMultimap&lt;K extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;K&gt;,V&gt;</span>\nextends <a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"class in stanford.cs106.collections\">AbstractMultimap</a>&lt;K,V&gt;</pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/TreeMultimap.html#TreeMultimap--\">TreeMultimap</a></span>()</code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/TreeMultimap.html#TreeMultimap-boolean-\">TreeMultimap</a></span>(boolean&nbsp;isSet)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static &lt;K extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;K&gt;,V&gt;<br><a href=\"../../../stanford/cs106/collections/TreeMultimap.html\" title=\"class in stanford.cs106.collections\">TreeMultimap</a>&lt;K,V&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/TreeMultimap.html#create--\">create</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static &lt;K extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;K&gt;,V&gt;<br><a href=\"../../../stanford/cs106/collections/TreeMultimap.html\" title=\"class in stanford.cs106.collections\">TreeMultimap</a>&lt;K,V&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/TreeMultimap.html#create-boolean-\">create</a></span>(boolean&nbsp;isSet)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/TreeMultimap.html\" title=\"type parameter in TreeMultimap\">K</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"../../../stanford/cs106/collections/TreeMultimap.html\" title=\"type parameter in TreeMultimap\">V</a>&gt;&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/TreeMultimap.html#createMap--\">createMap</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"../../../stanford/cs106/collections/TreeMultimap.html\" title=\"type parameter in TreeMultimap\">V</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/TreeMultimap.html#createSet--\">createSet</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.cs106.collections.AbstractMultimap\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.cs106.collections.<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"class in stanford.cs106.collections\">AbstractMultimap</a></h3>\n<code><a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#clear--\">clear</a>, <a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#containsEntry-java.lang.Object-java.lang.Object-\">containsEntry</a>, <a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#containsKey-java.lang.Object-\">containsKey</a>, <a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#containsValue-java.lang.Object-\">containsValue</a>, <a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#createList--\">createList</a>, <a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#get-K-\">get</a>, <a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#isEmpty--\">isEmpty</a>, <a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#keySet--\">keySet</a>, <a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#put-K-V-\">put</a>, <a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#remove-java.lang.Object-java.lang.Object-\">remove</a>, <a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#removeAll-java.lang.Object-\">removeAll</a>, <a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#size--\">size</a>, <a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#toString--\">toString</a>, <a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#values--\">values</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"TreeMultimap--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>TreeMultimap</h4>\n<pre>public&nbsp;TreeMultimap()</pre>\n</li>\n</ul>\n<a name=\"TreeMultimap-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>TreeMultimap</h4>\n<pre>public&nbsp;TreeMultimap(boolean&nbsp;isSet)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"create--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>create</h4>\n<pre>public static&nbsp;&lt;K extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;K&gt;,V&gt;&nbsp;<a href=\"../../../stanford/cs106/collections/TreeMultimap.html\" title=\"class in stanford.cs106.collections\">TreeMultimap</a>&lt;K,V&gt;&nbsp;create()</pre>\n</li>\n</ul>\n<a name=\"create-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>create</h4>\n<pre>public static&nbsp;&lt;K extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;K&gt;,V&gt;&nbsp;<a href=\"../../../stanford/cs106/collections/TreeMultimap.html\" title=\"class in stanford.cs106.collections\">TreeMultimap</a>&lt;K,V&gt;&nbsp;create(boolean&nbsp;isSet)</pre>\n</li>\n</ul>\n<a name=\"createMap--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createMap</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"../../../stanford/cs106/collections/TreeMultimap.html\" title=\"type parameter in TreeMultimap\">K</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"../../../stanford/cs106/collections/TreeMultimap.html\" title=\"type parameter in TreeMultimap\">V</a>&gt;&gt;&nbsp;createMap()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#createMap--\">createMap</a></code>&nbsp;in class&nbsp;<code><a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"class in stanford.cs106.collections\">AbstractMultimap</a>&lt;<a href=\"../../../stanford/cs106/collections/TreeMultimap.html\" title=\"type parameter in TreeMultimap\">K</a> extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;<a href=\"../../../stanford/cs106/collections/TreeMultimap.html\" title=\"type parameter in TreeMultimap\">K</a>&gt;,<a href=\"../../../stanford/cs106/collections/TreeMultimap.html\" title=\"type parameter in TreeMultimap\">V</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"createSet--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>createSet</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;<a href=\"../../../stanford/cs106/collections/TreeMultimap.html\" title=\"type parameter in TreeMultimap\">V</a>&gt;&nbsp;createSet()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../../stanford/cs106/collections/AbstractMultimap.html#createSet--\">createSet</a></code>&nbsp;in class&nbsp;<code><a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"class in stanford.cs106.collections\">AbstractMultimap</a>&lt;<a href=\"../../../stanford/cs106/collections/TreeMultimap.html\" title=\"type parameter in TreeMultimap\">K</a> extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;<a href=\"../../../stanford/cs106/collections/TreeMultimap.html\" title=\"type parameter in TreeMultimap\">K</a>&gt;,<a href=\"../../../stanford/cs106/collections/TreeMultimap.html\" title=\"type parameter in TreeMultimap\">V</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/collections/TreeBasedTable.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/collections/TreeMultimap.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"TreeMultimap.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/collections/Vertex.Event.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>Vertex.Event</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"Vertex.Event\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li>Next&nbsp;Class</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/collections/Vertex.Event.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Vertex.Event.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#enum.constant.summary\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#enum.constant.detail\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.collections</div>\n<h2 title=\"Enum Vertex.Event\" class=\"title\">Enum Vertex.Event</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Enum</a>&lt;<a href=\"../../../stanford/cs106/collections/Vertex.Event.html\" title=\"enum in stanford.cs106.collections\">Vertex.Event</a>&gt;</li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.collections.Vertex.Event</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;<a href=\"../../../stanford/cs106/collections/Vertex.Event.html\" title=\"enum in stanford.cs106.collections\">Vertex.Event</a>&gt;</dd>\n</dl>\n<dl>\n<dt>Enclosing class:</dt>\n<dd><a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"type parameter in Vertex\">V</a>&gt;</dd>\n</dl>\n<hr>\n<br>\n<pre>public static enum <span class=\"typeNameLabel\">Vertex.Event</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true\" title=\"class or interface in java.lang\">Enum</a>&lt;<a href=\"../../../stanford/cs106/collections/Vertex.Event.html\" title=\"enum in stanford.cs106.collections\">Vertex.Event</a>&gt;</pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== ENUM CONSTANT SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"enum.constant.summary\">\n<!--   -->\n</a>\n<h3>Enum Constant Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Enum Constant Summary table, listing enum constants, and an explanation\">\n<caption><span>Enum Constants</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Enum Constant and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Vertex.Event.html#COLOR_CHANGED\">COLOR_CHANGED</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../../stanford/cs106/collections/Vertex.Event.html\" title=\"enum in stanford.cs106.collections\">Vertex.Event</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Vertex.Event.html#valueOf-java.lang.String-\">valueOf</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>\n<div class=\"block\">Returns the enum constant of this type with the specified name.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../../stanford/cs106/collections/Vertex.Event.html\" title=\"enum in stanford.cs106.collections\">Vertex.Event</a>[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Vertex.Event.html#values--\">values</a></span>()</code>\n<div class=\"block\">Returns an array containing the constants of this enum type, in\nthe order they are declared.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Enum\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true\" title=\"class or interface in java.lang\">Enum</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#compareTo-E-\" title=\"class or interface in java.lang\">compareTo</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#getDeclaringClass--\" title=\"class or interface in java.lang\">getDeclaringClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#name--\" title=\"class or interface in java.lang\">name</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#ordinal--\" title=\"class or interface in java.lang\">ordinal</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#valueOf-java.lang.Class-java.lang.String-\" title=\"class or interface in java.lang\">valueOf</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ ENUM CONSTANT DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"enum.constant.detail\">\n<!--   -->\n</a>\n<h3>Enum Constant Detail</h3>\n<a name=\"COLOR_CHANGED\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>COLOR_CHANGED</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/collections/Vertex.Event.html\" title=\"enum in stanford.cs106.collections\">Vertex.Event</a> COLOR_CHANGED</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"values--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>values</h4>\n<pre>public static&nbsp;<a href=\"../../../stanford/cs106/collections/Vertex.Event.html\" title=\"enum in stanford.cs106.collections\">Vertex.Event</a>[]&nbsp;values()</pre>\n<div class=\"block\">Returns an array containing the constants of this enum type, in\nthe order they are declared.  This method may be used to iterate\nover the constants as follows:\n<pre>\nfor (Vertex.Event c : Vertex.Event.values())\n&nbsp;   System.out.println(c);\n</pre></div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>an array containing the constants of this enum type, in the order they are declared</dd>\n</dl>\n</li>\n</ul>\n<a name=\"valueOf-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>valueOf</h4>\n<pre>public static&nbsp;<a href=\"../../../stanford/cs106/collections/Vertex.Event.html\" title=\"enum in stanford.cs106.collections\">Vertex.Event</a>&nbsp;valueOf(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n<div class=\"block\">Returns the enum constant of this type with the specified name.\nThe string must match <i>exactly</i> an identifier used to declare an\nenum constant in this type.  (Extraneous whitespace characters are \nnot permitted.)</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>name</code> - the name of the enum constant to be returned.</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the enum constant with the specified name</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - if this enum type has no constant with the specified name</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if the argument is null</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li>Next&nbsp;Class</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/collections/Vertex.Event.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Vertex.Event.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#enum.constant.summary\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#enum.constant.detail\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/collections/Vertex.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>Vertex</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"Vertex\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":10,\"i16\":10,\"i17\":10,\"i18\":10,\"i19\":10,\"i20\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/collections/TreeMultimap.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/collections/Vertex.Event.html\" title=\"enum in stanford.cs106.collections\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/collections/Vertex.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Vertex.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.class.summary\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.collections</div>\n<h2 title=\"Class Vertex\" class=\"title\">Class Vertex&lt;V&gt;</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true\" title=\"class or interface in java.util\">java.util.Observable</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.collections.Vertex&lt;V&gt;</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true\" title=\"class or interface in java.lang\">Cloneable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;V&gt;&gt;</dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">Vertex&lt;V&gt;</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true\" title=\"class or interface in java.util\">Observable</a>\nimplements <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;V&gt;&gt;, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true\" title=\"class or interface in java.lang\">Cloneable</a></pre>\n<div class=\"block\">A Vertex object represents extra information associated with each vertex.\n Each Vertex object for some vertex value v is accessed internally in a\n Graph subclass by writing:\n \n <pre>\n <code>\n vertexInfo(v)\n </code>\n </pre></div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Nested Class Summary table, listing nested classes, and an explanation\">\n<caption><span>Nested Classes</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Class and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static class&nbsp;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Vertex.Event.html\" title=\"enum in stanford.cs106.collections\">Vertex.Event</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"type parameter in Vertex\">V</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Vertex.html#extraData\">extraData</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Vertex.html#MAX_COST\">MAX_COST</a></span></code>\n<div class=\"block\">Maximum possible cost to reach a vertex from another; treat this as \"infinity\".</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Vertex.html#Vertex-java.lang.String-\">Vertex</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>\n<div class=\"block\">Constructs information for the given vertex.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Vertex.html#clear--\">clear</a></span>()</code>\n<div class=\"block\">Resets the previous, visited, cost, and number data fields to their original values.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Vertex.html#clear-boolean-\">clear</a></span>(boolean&nbsp;clearExtraData)</code>\n<div class=\"block\">Resets the previous, visited, cost, and number data fields to their original values.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"type parameter in Vertex\">V</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Vertex.html#clone--\">clone</a></span>()</code>\n<div class=\"block\">Returns a copy of this Vertex as per the contract of the Object.clone method.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Vertex.html#color--\">color</a></span>()</code>\n<div class=\"block\">Returns color of vertex</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Vertex.html#compareTo-stanford.cs106.collections.Vertex-\">compareTo</a></span>(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"type parameter in Vertex\">V</a>&gt;&nbsp;o)</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Vertex.html#cost--\">cost</a></span>()</code>\n<div class=\"block\">Returns the value of the internal 'cost' to reach this vertex.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Vertex.html#equals-java.lang.Object-\">equals</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;o)</code>\n<div class=\"block\">Returns true if o refers to a Vertex object correspending to the same\n underlying 'V' object as this one.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Vertex.html#hashCode--\">hashCode</a></span>()</code>\n<div class=\"block\">Returns an integer code for placing this vertex into a hash-based collection.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Vertex.html#name--\">name</a></span>()</code>\n<div class=\"block\">Returns the vertex's name.</div>\n</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Vertex.html#notifyObservers--\">notifyObservers</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Vertex.html#notifyObservers-java.lang.Object-\">notifyObservers</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;arg)</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Vertex.html#number--\">number</a></span>()</code>\n<div class=\"block\">Returns the value of the internal 'number' vertex marker for this vertex.</div>\n</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"type parameter in Vertex\">V</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Vertex.html#previous--\">previous</a></span>()</code>\n<div class=\"block\">Returns the value of the internal 'previous' vertex marker for this vertex.</div>\n</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Vertex.html#setColor-java.awt.Color-\">setColor</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>\n<div class=\"block\">Sets the vertex's color</div>\n</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Vertex.html#setCost-double-\">setCost</a></span>(double&nbsp;cost)</code>\n<div class=\"block\">Sets the value of the internal 'cost' to reach this vertex.</div>\n</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Vertex.html#setNumber-int-\">setNumber</a></span>(int&nbsp;number)</code>\n<div class=\"block\">Sets the value of the internal 'number' vertex marker for this vertex.</div>\n</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Vertex.html#setPrevious-stanford.cs106.collections.Vertex-\">setPrevious</a></span>(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"type parameter in Vertex\">V</a>&gt;&nbsp;previous)</code>\n<div class=\"block\">Sets the value of the internal 'previous' vertex marker for this vertex.</div>\n</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Vertex.html#setVisited--\">setVisited</a></span>()</code>\n<div class=\"block\">Sets the value of the internal 'previous' vertex marker to true for this vertex.</div>\n</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Vertex.html#setVisited-boolean-\">setVisited</a></span>(boolean&nbsp;visited)</code>\n<div class=\"block\">Sets the value of the internal 'previous' vertex marker for this vertex.</div>\n</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Vertex.html#toString--\">toString</a></span>()</code>\n<div class=\"block\">Returns a string representation of the information about this vertex.</div>\n</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/collections/Vertex.html#visited--\">visited</a></span>()</code>\n<div class=\"block\">Returns the value of the internal 'visited' vertex marker for this vertex.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.util.Observable\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.util.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true\" title=\"class or interface in java.util\">Observable</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#addObserver-java.util.Observer-\" title=\"class or interface in java.util\">addObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#clearChanged--\" title=\"class or interface in java.util\">clearChanged</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#countObservers--\" title=\"class or interface in java.util\">countObservers</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#deleteObserver-java.util.Observer-\" title=\"class or interface in java.util\">deleteObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#deleteObservers--\" title=\"class or interface in java.util\">deleteObservers</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#hasChanged--\" title=\"class or interface in java.util\">hasChanged</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#setChanged--\" title=\"class or interface in java.util\">setChanged</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"MAX_COST\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MAX_COST</h4>\n<pre>public static final&nbsp;double MAX_COST</pre>\n<div class=\"block\">Maximum possible cost to reach a vertex from another; treat this as \"infinity\".</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#stanford.cs106.collections.Vertex.MAX_COST\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"extraData\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>extraData</h4>\n<pre>public&nbsp;<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"type parameter in Vertex\">V</a> extraData</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"Vertex-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>Vertex</h4>\n<pre>public&nbsp;Vertex(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n<div class=\"block\">Constructs information for the given vertex.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>v</code> - The vertex this information is about.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - If the vertex is null.</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"clear--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clear</h4>\n<pre>public&nbsp;void&nbsp;clear()</pre>\n<div class=\"block\">Resets the previous, visited, cost, and number data fields to their original values.</div>\n</li>\n</ul>\n<a name=\"clear-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clear</h4>\n<pre>public&nbsp;void&nbsp;clear(boolean&nbsp;clearExtraData)</pre>\n<div class=\"block\">Resets the previous, visited, cost, and number data fields to their original values.</div>\n</li>\n</ul>\n<a name=\"clone--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clone</h4>\n<pre>public&nbsp;<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"type parameter in Vertex\">V</a>&gt;&nbsp;clone()</pre>\n<div class=\"block\">Returns a copy of this Vertex as per the contract of the Object.clone method.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"color--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>color</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color()</pre>\n<div class=\"block\">Returns color of vertex</div>\n</li>\n</ul>\n<a name=\"compareTo-stanford.cs106.collections.Vertex-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>compareTo</h4>\n<pre>public&nbsp;int&nbsp;compareTo(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"type parameter in Vertex\">V</a>&gt;&nbsp;o)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true#compareTo-T-\" title=\"class or interface in java.lang\">compareTo</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"type parameter in Vertex\">V</a>&gt;&gt;</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"cost--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>cost</h4>\n<pre>public&nbsp;double&nbsp;cost()</pre>\n<div class=\"block\">Returns the value of the internal 'cost' to reach this vertex.\n Returns Integer.MAX_VALUE if the cost was not set previously.\n Used internally in various path-finding algorithms.</div>\n</li>\n</ul>\n<a name=\"equals-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>equals</h4>\n<pre>public&nbsp;boolean&nbsp;equals(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;o)</pre>\n<div class=\"block\">Returns true if o refers to a Vertex object correspending to the same\n underlying 'V' object as this one.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"hashCode--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hashCode</h4>\n<pre>public&nbsp;int&nbsp;hashCode()</pre>\n<div class=\"block\">Returns an integer code for placing this vertex into a hash-based collection.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"name--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>name</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name()</pre>\n<div class=\"block\">Returns the vertex's name.</div>\n</li>\n</ul>\n<a name=\"notifyObservers--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>notifyObservers</h4>\n<pre>public&nbsp;void&nbsp;notifyObservers()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#notifyObservers--\" title=\"class or interface in java.util\">notifyObservers</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true\" title=\"class or interface in java.util\">Observable</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"notifyObservers-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>notifyObservers</h4>\n<pre>public&nbsp;void&nbsp;notifyObservers(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;arg)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#notifyObservers-java.lang.Object-\" title=\"class or interface in java.util\">notifyObservers</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true\" title=\"class or interface in java.util\">Observable</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"number--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>number</h4>\n<pre>public&nbsp;int&nbsp;number()</pre>\n<div class=\"block\">Returns the value of the internal 'number' vertex marker for this vertex.\n Returns -1 if the number was not set previously.\n Used internally in various algorithms such as topological sort.</div>\n</li>\n</ul>\n<a name=\"previous--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>previous</h4>\n<pre>public&nbsp;<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"type parameter in Vertex\">V</a>&gt;&nbsp;previous()</pre>\n<div class=\"block\">Returns the value of the internal 'previous' vertex marker for this vertex.\n Used internally in various path-finding algorithms.\n If no previous vertex has been set, returns null.</div>\n</li>\n</ul>\n<a name=\"setColor-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setColor</h4>\n<pre>public&nbsp;void&nbsp;setColor(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n<div class=\"block\">Sets the vertex's color</div>\n</li>\n</ul>\n<a name=\"setCost-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setCost</h4>\n<pre>public&nbsp;void&nbsp;setCost(double&nbsp;cost)</pre>\n<div class=\"block\">Sets the value of the internal 'cost' to reach this vertex.\n Used internally in various path-finding algorithms.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>cost</code> - the new cost to use</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setNumber-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setNumber</h4>\n<pre>public&nbsp;void&nbsp;setNumber(int&nbsp;number)</pre>\n<div class=\"block\">Sets the value of the internal 'number' vertex marker for this vertex.\n Used internally in various algorithms such as topological sort.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>number</code> - the new number to use</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setPrevious-stanford.cs106.collections.Vertex-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setPrevious</h4>\n<pre>public&nbsp;void&nbsp;setPrevious(<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"type parameter in Vertex\">V</a>&gt;&nbsp;previous)</pre>\n<div class=\"block\">Sets the value of the internal 'previous' vertex marker for this vertex.\n Used internally in various path-finding algorithms.\n If null is passed, the previous vertex is cleared.</div>\n</li>\n</ul>\n<a name=\"setVisited--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setVisited</h4>\n<pre>public&nbsp;void&nbsp;setVisited()</pre>\n<div class=\"block\">Sets the value of the internal 'previous' vertex marker to true for this vertex.\n Used internally in various path-finding algorithms.</div>\n</li>\n</ul>\n<a name=\"setVisited-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setVisited</h4>\n<pre>public&nbsp;void&nbsp;setVisited(boolean&nbsp;visited)</pre>\n<div class=\"block\">Sets the value of the internal 'previous' vertex marker for this vertex.\n Used internally in various path-finding algorithms.</div>\n</li>\n</ul>\n<a name=\"visited--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>visited</h4>\n<pre>public&nbsp;boolean&nbsp;visited()</pre>\n<div class=\"block\">Returns the value of the internal 'visited' vertex marker for this vertex.\n Used internally in various path-finding algorithms.</div>\n</li>\n</ul>\n<a name=\"toString--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>toString</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;toString()</pre>\n<div class=\"block\">Returns a string representation of the information about this vertex.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/collections/TreeMultimap.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/collections/Vertex.Event.html\" title=\"enum in stanford.cs106.collections\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/collections/Vertex.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Vertex.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.class.summary\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/collections/package-frame.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>stanford.cs106.collections</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<h1 class=\"bar\"><a href=\"../../../stanford/cs106/collections/package-summary.html\" target=\"classFrame\">stanford.cs106.collections</a></h1>\n<div class=\"indexContainer\">\n<h2 title=\"Interfaces\">Interfaces</h2>\n<ul title=\"Interfaces\">\n<li><a href=\"Graph.html\" title=\"interface in stanford.cs106.collections\" target=\"classFrame\"><span class=\"interfaceName\">Graph</span></a></li>\n<li><a href=\"Multimap.html\" title=\"interface in stanford.cs106.collections\" target=\"classFrame\"><span class=\"interfaceName\">Multimap</span></a></li>\n<li><a href=\"Table.html\" title=\"interface in stanford.cs106.collections\" target=\"classFrame\"><span class=\"interfaceName\">Table</span></a></li>\n</ul>\n<h2 title=\"Classes\">Classes</h2>\n<ul title=\"Classes\">\n<li><a href=\"AbstractMultimap.html\" title=\"class in stanford.cs106.collections\" target=\"classFrame\">AbstractMultimap</a></li>\n<li><a href=\"AbstractTable.html\" title=\"class in stanford.cs106.collections\" target=\"classFrame\">AbstractTable</a></li>\n<li><a href=\"BasicGraph.html\" title=\"class in stanford.cs106.collections\" target=\"classFrame\">BasicGraph</a></li>\n<li><a href=\"Edge.html\" title=\"class in stanford.cs106.collections\" target=\"classFrame\">Edge</a></li>\n<li><a href=\"Grid.html\" title=\"class in stanford.cs106.collections\" target=\"classFrame\">Grid</a></li>\n<li><a href=\"HashBasedTable.html\" title=\"class in stanford.cs106.collections\" target=\"classFrame\">HashBasedTable</a></li>\n<li><a href=\"HashMultimap.html\" title=\"class in stanford.cs106.collections\" target=\"classFrame\">HashMultimap</a></li>\n<li><a href=\"Lexicon.html\" title=\"class in stanford.cs106.collections\" target=\"classFrame\">Lexicon</a></li>\n<li><a href=\"TreeBasedTable.html\" title=\"class in stanford.cs106.collections\" target=\"classFrame\">TreeBasedTable</a></li>\n<li><a href=\"TreeMultimap.html\" title=\"class in stanford.cs106.collections\" target=\"classFrame\">TreeMultimap</a></li>\n<li><a href=\"Vertex.html\" title=\"class in stanford.cs106.collections\" target=\"classFrame\">Vertex</a></li>\n</ul>\n<h2 title=\"Enums\">Enums</h2>\n<ul title=\"Enums\">\n<li><a href=\"GraphColor.html\" title=\"enum in stanford.cs106.collections\" target=\"classFrame\">GraphColor</a></li>\n<li><a href=\"Vertex.Event.html\" title=\"enum in stanford.cs106.collections\" target=\"classFrame\">Vertex.Event</a></li>\n</ul>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/collections/package-summary.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>stanford.cs106.collections</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"stanford.cs106.collections\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li class=\"navBarCell1Rev\">Package</li>\n<li>Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/audio/package-summary.html\">Prev&nbsp;Package</a></li>\n<li><a href=\"../../../stanford/cs106/gui/package-summary.html\">Next&nbsp;Package</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/collections/package-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 title=\"Package\" class=\"title\">Package&nbsp;stanford.cs106.collections</h1>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Interface Summary table, listing interfaces, and an explanation\">\n<caption><span>Interface Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Interface</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;V,E&gt;</td>\n<td class=\"colLast\">\n<div class=\"block\">A Graph is a collection of vertices and edges between vertices.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\">Multimap</a>&lt;K,V&gt;</td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\">Table</a>&lt;R,C,V&gt;</td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Class Summary table, listing classes, and an explanation\">\n<caption><span>Class Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Class</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"class in stanford.cs106.collections\">AbstractMultimap</a>&lt;K,V&gt;</td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\">AbstractTable</a>&lt;R,C,V&gt;</td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\">BasicGraph</a>&lt;V,E&gt;</td>\n<td class=\"colLast\">\n<div class=\"block\">BasicGraph represents a mostly-complete implementation of the Graph interface.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\">Edge</a>&lt;V,E&gt;</td>\n<td class=\"colLast\">\n<div class=\"block\">An Edge object represents information stored in a graph edge,\n including its vertices, weight, and any extra edge info.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/collections/Grid.html\" title=\"class in stanford.cs106.collections\">Grid</a>&lt;E&gt;</td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/collections/HashBasedTable.html\" title=\"class in stanford.cs106.collections\">HashBasedTable</a>&lt;R,C,V&gt;</td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/collections/HashMultimap.html\" title=\"class in stanford.cs106.collections\">HashMultimap</a>&lt;K,V&gt;</td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/collections/Lexicon.html\" title=\"class in stanford.cs106.collections\">Lexicon</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/collections/TreeBasedTable.html\" title=\"class in stanford.cs106.collections\">TreeBasedTable</a>&lt;R extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;? super R&gt;,C extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;? super C&gt;,V&gt;</td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/collections/TreeMultimap.html\" title=\"class in stanford.cs106.collections\">TreeMultimap</a>&lt;K extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;K&gt;,V&gt;</td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\">Vertex</a>&lt;V&gt;</td>\n<td class=\"colLast\">\n<div class=\"block\">A Vertex object represents extra information associated with each vertex.</div>\n</td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Enum Summary table, listing enums, and an explanation\">\n<caption><span>Enum Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Enum</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/collections/GraphColor.html\" title=\"enum in stanford.cs106.collections\">GraphColor</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/collections/Vertex.Event.html\" title=\"enum in stanford.cs106.collections\">Vertex.Event</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n</tbody>\n</table>\n</li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li class=\"navBarCell1Rev\">Package</li>\n<li>Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/audio/package-summary.html\">Prev&nbsp;Package</a></li>\n<li><a href=\"../../../stanford/cs106/gui/package-summary.html\">Next&nbsp;Package</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/collections/package-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/collections/package-tree.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>stanford.cs106.collections Class Hierarchy</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"stanford.cs106.collections Class Hierarchy\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/audio/package-tree.html\">Prev</a></li>\n<li><a href=\"../../../stanford/cs106/gui/package-tree.html\">Next</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/collections/package-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 class=\"title\">Hierarchy For Package stanford.cs106.collections</h1>\n<span class=\"packageHierarchyLabel\">Package Hierarchies:</span>\n<ul class=\"horizontal\">\n<li><a href=\"../../../overview-tree.html\">All Packages</a></li>\n</ul>\n</div>\n<div class=\"contentContainer\">\n<h2 title=\"Class Hierarchy\">Class Hierarchy</h2>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Object</span></a>\n<ul>\n<li type=\"circle\">stanford.cs106.collections.<a href=\"../../../stanford/cs106/collections/AbstractMultimap.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">AbstractMultimap</span></a>&lt;K,V&gt; (implements stanford.cs106.collections.<a href=\"../../../stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\">Multimap</a>&lt;K,V&gt;)\n<ul>\n<li type=\"circle\">stanford.cs106.collections.<a href=\"../../../stanford/cs106/collections/HashMultimap.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">HashMultimap</span></a>&lt;K,V&gt;</li>\n<li type=\"circle\">stanford.cs106.collections.<a href=\"../../../stanford/cs106/collections/TreeMultimap.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">TreeMultimap</span></a>&lt;K,V&gt;</li>\n</ul>\n</li>\n<li type=\"circle\">stanford.cs106.collections.<a href=\"../../../stanford/cs106/collections/AbstractTable.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">AbstractTable</span></a>&lt;R,C,V&gt; (implements stanford.cs106.collections.<a href=\"../../../stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\">Table</a>&lt;R,C,V&gt;)\n<ul>\n<li type=\"circle\">stanford.cs106.collections.<a href=\"../../../stanford/cs106/collections/HashBasedTable.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">HashBasedTable</span></a>&lt;R,C,V&gt;</li>\n<li type=\"circle\">stanford.cs106.collections.<a href=\"../../../stanford/cs106/collections/TreeBasedTable.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">TreeBasedTable</span></a>&lt;R,C,V&gt;</li>\n</ul>\n</li>\n<li type=\"circle\">stanford.cs106.collections.<a href=\"../../../stanford/cs106/collections/BasicGraph.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">BasicGraph</span></a>&lt;V,E&gt; (implements stanford.cs106.collections.<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\">Graph</a>&lt;V,E&gt;)</li>\n<li type=\"circle\">stanford.cs106.collections.<a href=\"../../../stanford/cs106/collections/Edge.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Edge</span></a>&lt;V,E&gt; (implements java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true\" title=\"class or interface in java.lang\">Cloneable</a>)</li>\n<li type=\"circle\">stanford.cs106.collections.<a href=\"../../../stanford/cs106/collections/Grid.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Grid</span></a>&lt;E&gt;</li>\n<li type=\"circle\">stanford.cs106.collections.<a href=\"../../../stanford/cs106/collections/Lexicon.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Lexicon</span></a> (implements java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;T&gt;)</li>\n<li type=\"circle\">java.util.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true\" title=\"class or interface in java.util\"><span class=\"typeNameLink\">Observable</span></a>\n<ul>\n<li type=\"circle\">stanford.cs106.collections.<a href=\"../../../stanford/cs106/collections/Vertex.html\" title=\"class in stanford.cs106.collections\"><span class=\"typeNameLink\">Vertex</span></a>&lt;V&gt; (implements java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true\" title=\"class or interface in java.lang\">Cloneable</a>, java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;T&gt;)</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<h2 title=\"Interface Hierarchy\">Interface Hierarchy</h2>\n<ul>\n<li type=\"circle\">stanford.cs106.collections.<a href=\"../../../stanford/cs106/collections/Graph.html\" title=\"interface in stanford.cs106.collections\"><span class=\"typeNameLink\">Graph</span></a>&lt;V,E&gt;</li>\n<li type=\"circle\">stanford.cs106.collections.<a href=\"../../../stanford/cs106/collections/Multimap.html\" title=\"interface in stanford.cs106.collections\"><span class=\"typeNameLink\">Multimap</span></a>&lt;K,V&gt;</li>\n<li type=\"circle\">stanford.cs106.collections.<a href=\"../../../stanford/cs106/collections/Table.html\" title=\"interface in stanford.cs106.collections\"><span class=\"typeNameLink\">Table</span></a>&lt;R,C,V&gt;</li>\n</ul>\n<h2 title=\"Enum Hierarchy\">Enum Hierarchy</h2>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Object</span></a>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Enum</span></a>&lt;E&gt; (implements java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;T&gt;, java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">stanford.cs106.collections.<a href=\"../../../stanford/cs106/collections/Vertex.Event.html\" title=\"enum in stanford.cs106.collections\"><span class=\"typeNameLink\">Vertex.Event</span></a></li>\n<li type=\"circle\">stanford.cs106.collections.<a href=\"../../../stanford/cs106/collections/GraphColor.html\" title=\"enum in stanford.cs106.collections\"><span class=\"typeNameLink\">GraphColor</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/audio/package-tree.html\">Prev</a></li>\n<li><a href=\"../../../stanford/cs106/gui/package-tree.html\">Next</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/collections/package-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/diff/Diff.Difference.Type.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:24 PDT 2017 -->\n<title>Diff.Difference.Type</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"Diff.Difference.Type\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/diff/Diff.Difference.html\" title=\"class in stanford.cs106.diff\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/diff/DiffCollection.html\" title=\"class in stanford.cs106.diff\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/diff/Diff.Difference.Type.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Diff.Difference.Type.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#enum.constant.summary\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#enum.constant.detail\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.diff</div>\n<h2 title=\"Enum Diff.Difference.Type\" class=\"title\">Enum Diff.Difference.Type</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Enum</a>&lt;<a href=\"../../../stanford/cs106/diff/Diff.Difference.Type.html\" title=\"enum in stanford.cs106.diff\">Diff.Difference.Type</a>&gt;</li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.diff.Diff.Difference.Type</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;<a href=\"../../../stanford/cs106/diff/Diff.Difference.Type.html\" title=\"enum in stanford.cs106.diff\">Diff.Difference.Type</a>&gt;</dd>\n</dl>\n<dl>\n<dt>Enclosing class:</dt>\n<dd><a href=\"../../../stanford/cs106/diff/Diff.Difference.html\" title=\"class in stanford.cs106.diff\">Diff.Difference</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public static enum <span class=\"typeNameLabel\">Diff.Difference.Type</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true\" title=\"class or interface in java.lang\">Enum</a>&lt;<a href=\"../../../stanford/cs106/diff/Diff.Difference.Type.html\" title=\"enum in stanford.cs106.diff\">Diff.Difference.Type</a>&gt;</pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== ENUM CONSTANT SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"enum.constant.summary\">\n<!--   -->\n</a>\n<h3>Enum Constant Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Enum Constant Summary table, listing enum constants, and an explanation\">\n<caption><span>Enum Constants</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Enum Constant and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/Diff.Difference.Type.html#ADD\">ADD</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/Diff.Difference.Type.html#DELETE\">DELETE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/Diff.Difference.Type.html#MODIFY\">MODIFY</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../../stanford/cs106/diff/Diff.Difference.Type.html\" title=\"enum in stanford.cs106.diff\">Diff.Difference.Type</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/Diff.Difference.Type.html#valueOf-java.lang.String-\">valueOf</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>\n<div class=\"block\">Returns the enum constant of this type with the specified name.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../../stanford/cs106/diff/Diff.Difference.Type.html\" title=\"enum in stanford.cs106.diff\">Diff.Difference.Type</a>[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/Diff.Difference.Type.html#values--\">values</a></span>()</code>\n<div class=\"block\">Returns an array containing the constants of this enum type, in\nthe order they are declared.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Enum\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true\" title=\"class or interface in java.lang\">Enum</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#compareTo-E-\" title=\"class or interface in java.lang\">compareTo</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#getDeclaringClass--\" title=\"class or interface in java.lang\">getDeclaringClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#name--\" title=\"class or interface in java.lang\">name</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#ordinal--\" title=\"class or interface in java.lang\">ordinal</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#valueOf-java.lang.Class-java.lang.String-\" title=\"class or interface in java.lang\">valueOf</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ ENUM CONSTANT DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"enum.constant.detail\">\n<!--   -->\n</a>\n<h3>Enum Constant Detail</h3>\n<a name=\"DELETE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>DELETE</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/diff/Diff.Difference.Type.html\" title=\"enum in stanford.cs106.diff\">Diff.Difference.Type</a> DELETE</pre>\n</li>\n</ul>\n<a name=\"ADD\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>ADD</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/diff/Diff.Difference.Type.html\" title=\"enum in stanford.cs106.diff\">Diff.Difference.Type</a> ADD</pre>\n</li>\n</ul>\n<a name=\"MODIFY\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>MODIFY</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/diff/Diff.Difference.Type.html\" title=\"enum in stanford.cs106.diff\">Diff.Difference.Type</a> MODIFY</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"values--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>values</h4>\n<pre>public static&nbsp;<a href=\"../../../stanford/cs106/diff/Diff.Difference.Type.html\" title=\"enum in stanford.cs106.diff\">Diff.Difference.Type</a>[]&nbsp;values()</pre>\n<div class=\"block\">Returns an array containing the constants of this enum type, in\nthe order they are declared.  This method may be used to iterate\nover the constants as follows:\n<pre>\nfor (Diff.Difference.Type c : Diff.Difference.Type.values())\n&nbsp;   System.out.println(c);\n</pre></div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>an array containing the constants of this enum type, in the order they are declared</dd>\n</dl>\n</li>\n</ul>\n<a name=\"valueOf-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>valueOf</h4>\n<pre>public static&nbsp;<a href=\"../../../stanford/cs106/diff/Diff.Difference.Type.html\" title=\"enum in stanford.cs106.diff\">Diff.Difference.Type</a>&nbsp;valueOf(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n<div class=\"block\">Returns the enum constant of this type with the specified name.\nThe string must match <i>exactly</i> an identifier used to declare an\nenum constant in this type.  (Extraneous whitespace characters are \nnot permitted.)</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>name</code> - the name of the enum constant to be returned.</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the enum constant with the specified name</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - if this enum type has no constant with the specified name</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if the argument is null</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/diff/Diff.Difference.html\" title=\"class in stanford.cs106.diff\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/diff/DiffCollection.html\" title=\"class in stanford.cs106.diff\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/diff/Diff.Difference.Type.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Diff.Difference.Type.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#enum.constant.summary\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#enum.constant.detail\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/diff/Diff.Difference.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:24 PDT 2017 -->\n<title>Diff.Difference</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"Diff.Difference\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/diff/Diff.html\" title=\"class in stanford.cs106.diff\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/diff/Diff.Difference.Type.html\" title=\"enum in stanford.cs106.diff\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/diff/Diff.Difference.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Diff.Difference.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.class.summary\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.diff</div>\n<h2 title=\"Class Diff.Difference\" class=\"title\">Class Diff.Difference</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.diff.Diff.Difference</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>Enclosing class:</dt>\n<dd><a href=\"../../../stanford/cs106/diff/Diff.html\" title=\"class in stanford.cs106.diff\">Diff</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public static class <span class=\"typeNameLabel\">Diff.Difference</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Nested Class Summary table, listing nested classes, and an explanation\">\n<caption><span>Nested Classes</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Class and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static class&nbsp;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/Diff.Difference.Type.html\" title=\"enum in stanford.cs106.diff\">Diff.Difference.Type</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/Diff.Difference.html#actualEnd\">actualEnd</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/Diff.Difference.html#actualStart\">actualStart</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/Diff.Difference.html#expectedEnd\">expectedEnd</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/Diff.Difference.html#expectedStart\">expectedStart</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../../stanford/cs106/diff/Diff.Difference.Type.html\" title=\"enum in stanford.cs106.diff\">Diff.Difference.Type</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/Diff.Difference.html#type\">type</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/Diff.Difference.html#Difference-stanford.cs106.diff.Diff.Difference.Type-int-int-int-int-\">Difference</a></span>(<a href=\"../../../stanford/cs106/diff/Diff.Difference.Type.html\" title=\"enum in stanford.cs106.diff\">Diff.Difference.Type</a>&nbsp;type,\n          int&nbsp;expectedStart,\n          int&nbsp;expectedEnd,\n          int&nbsp;actualStart,\n          int&nbsp;actualEnd)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/Diff.Difference.html#actualToString--\">actualToString</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/Diff.Difference.html#expectedToString--\">expectedToString</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/Diff.Difference.html#toString--\">toString</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"type\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>type</h4>\n<pre>public&nbsp;<a href=\"../../../stanford/cs106/diff/Diff.Difference.Type.html\" title=\"enum in stanford.cs106.diff\">Diff.Difference.Type</a> type</pre>\n</li>\n</ul>\n<a name=\"expectedStart\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>expectedStart</h4>\n<pre>public&nbsp;int expectedStart</pre>\n</li>\n</ul>\n<a name=\"expectedEnd\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>expectedEnd</h4>\n<pre>public&nbsp;int expectedEnd</pre>\n</li>\n</ul>\n<a name=\"actualStart\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>actualStart</h4>\n<pre>public&nbsp;int actualStart</pre>\n</li>\n</ul>\n<a name=\"actualEnd\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>actualEnd</h4>\n<pre>public&nbsp;int actualEnd</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"Difference-stanford.cs106.diff.Diff.Difference.Type-int-int-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>Difference</h4>\n<pre>public&nbsp;Difference(<a href=\"../../../stanford/cs106/diff/Diff.Difference.Type.html\" title=\"enum in stanford.cs106.diff\">Diff.Difference.Type</a>&nbsp;type,\n                  int&nbsp;expectedStart,\n                  int&nbsp;expectedEnd,\n                  int&nbsp;actualStart,\n                  int&nbsp;actualEnd)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"expectedToString--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>expectedToString</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;expectedToString()</pre>\n</li>\n</ul>\n<a name=\"actualToString--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>actualToString</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actualToString()</pre>\n</li>\n</ul>\n<a name=\"toString--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>toString</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;toString()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/diff/Diff.html\" title=\"class in stanford.cs106.diff\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/diff/Diff.Difference.Type.html\" title=\"enum in stanford.cs106.diff\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/diff/Diff.Difference.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Diff.Difference.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.class.summary\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/diff/Diff.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:24 PDT 2017 -->\n<title>Diff</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"Diff\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9,\"i2\":9,\"i3\":9,\"i4\":9,\"i5\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Class</li>\n<li><a href=\"../../../stanford/cs106/diff/Diff.Difference.html\" title=\"class in stanford.cs106.diff\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/diff/Diff.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Diff.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.class.summary\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.diff</div>\n<h2 title=\"Class Diff\" class=\"title\">Class Diff</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.diff.Diff</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">Diff</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Nested Class Summary table, listing nested classes, and an explanation\">\n<caption><span>Nested Classes</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Class and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static class&nbsp;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/Diff.Difference.html\" title=\"class in stanford.cs106.diff\">Diff.Difference</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/Diff.html#FLAGS_DEFAULT\">FLAGS_DEFAULT</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/Diff.html#FLAGS_DEFAULT_LENIENT\">FLAGS_DEFAULT_LENIENT</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/Diff.html#FLAGS_DEFAULT_STRICT\">FLAGS_DEFAULT_STRICT</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/Diff.html#IGNORE_AFTERDECIMAL\">IGNORE_AFTERDECIMAL</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/Diff.html#IGNORE_BLANK_LINES\">IGNORE_BLANK_LINES</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/Diff.html#IGNORE_CASE\">IGNORE_CASE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/Diff.html#IGNORE_CHARORDER\">IGNORE_CHARORDER</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/Diff.html#IGNORE_EVERYTHING\">IGNORE_EVERYTHING</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/Diff.html#IGNORE_LEADING\">IGNORE_LEADING</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/Diff.html#IGNORE_LINEORDER\">IGNORE_LINEORDER</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/Diff.html#IGNORE_NONNUMBERS\">IGNORE_NONNUMBERS</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/Diff.html#IGNORE_NUMBERS\">IGNORE_NUMBERS</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/Diff.html#IGNORE_PUNCTUATION\">IGNORE_PUNCTUATION</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/Diff.html#IGNORE_TRAILING\">IGNORE_TRAILING</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/Diff.html#IGNORE_WHITESPACE\">IGNORE_WHITESPACE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/Diff.html#NO_DIFFS_MESSAGE\">NO_DIFFS_MESSAGE</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/Diff.html#Diff--\">Diff</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/Diff.html#diff-java.lang.String-java.lang.String-\">diff</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s1,\n    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s2)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/Diff.html#diff-java.lang.String-java.lang.String-int-\">diff</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s1,\n    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s2,\n    int&nbsp;flags)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;<a href=\"../../../stanford/cs106/diff/Diff.Difference.html\" title=\"class in stanford.cs106.diff\">Diff.Difference</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/Diff.html#diffAsList-java.lang.String-java.lang.String-\">diffAsList</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s1,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s2)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;<a href=\"../../../stanford/cs106/diff/Diff.Difference.html\" title=\"class in stanford.cs106.diff\">Diff.Difference</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/Diff.html#diffAsList-java.lang.String-java.lang.String-int-\">diffAsList</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s1,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s2,\n          int&nbsp;flags)</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/Diff.html#diffSideBySide-java.lang.String-java.lang.String-\">diffSideBySide</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;str1,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;str2)</code>\n<div class=\"block\">Returns a side-by-side comparision using the diff tool.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/Diff.html#diffSideBySide-java.lang.String-java.lang.String-int-\">diffSideBySide</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;str1,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;str2,\n              int&nbsp;width)</code>\n<div class=\"block\">Returns a side-by-side comparision using the diff tool.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"NO_DIFFS_MESSAGE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>NO_DIFFS_MESSAGE</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> NO_DIFFS_MESSAGE</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#stanford.cs106.diff.Diff.NO_DIFFS_MESSAGE\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"IGNORE_LEADING\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>IGNORE_LEADING</h4>\n<pre>public static final&nbsp;int IGNORE_LEADING</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#stanford.cs106.diff.Diff.IGNORE_LEADING\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"IGNORE_TRAILING\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>IGNORE_TRAILING</h4>\n<pre>public static final&nbsp;int IGNORE_TRAILING</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#stanford.cs106.diff.Diff.IGNORE_TRAILING\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"IGNORE_WHITESPACE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>IGNORE_WHITESPACE</h4>\n<pre>public static final&nbsp;int IGNORE_WHITESPACE</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#stanford.cs106.diff.Diff.IGNORE_WHITESPACE\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"IGNORE_BLANK_LINES\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>IGNORE_BLANK_LINES</h4>\n<pre>public static final&nbsp;int IGNORE_BLANK_LINES</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#stanford.cs106.diff.Diff.IGNORE_BLANK_LINES\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"IGNORE_CASE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>IGNORE_CASE</h4>\n<pre>public static final&nbsp;int IGNORE_CASE</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#stanford.cs106.diff.Diff.IGNORE_CASE\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"IGNORE_NUMBERS\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>IGNORE_NUMBERS</h4>\n<pre>public static final&nbsp;int IGNORE_NUMBERS</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#stanford.cs106.diff.Diff.IGNORE_NUMBERS\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"IGNORE_NONNUMBERS\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>IGNORE_NONNUMBERS</h4>\n<pre>public static final&nbsp;int IGNORE_NONNUMBERS</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#stanford.cs106.diff.Diff.IGNORE_NONNUMBERS\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"IGNORE_PUNCTUATION\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>IGNORE_PUNCTUATION</h4>\n<pre>public static final&nbsp;int IGNORE_PUNCTUATION</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#stanford.cs106.diff.Diff.IGNORE_PUNCTUATION\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"IGNORE_AFTERDECIMAL\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>IGNORE_AFTERDECIMAL</h4>\n<pre>public static final&nbsp;int IGNORE_AFTERDECIMAL</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#stanford.cs106.diff.Diff.IGNORE_AFTERDECIMAL\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"IGNORE_CHARORDER\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>IGNORE_CHARORDER</h4>\n<pre>public static final&nbsp;int IGNORE_CHARORDER</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#stanford.cs106.diff.Diff.IGNORE_CHARORDER\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"IGNORE_LINEORDER\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>IGNORE_LINEORDER</h4>\n<pre>public static final&nbsp;int IGNORE_LINEORDER</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#stanford.cs106.diff.Diff.IGNORE_LINEORDER\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"IGNORE_EVERYTHING\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>IGNORE_EVERYTHING</h4>\n<pre>public static final&nbsp;int IGNORE_EVERYTHING</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#stanford.cs106.diff.Diff.IGNORE_EVERYTHING\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"FLAGS_DEFAULT\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>FLAGS_DEFAULT</h4>\n<pre>public static final&nbsp;int FLAGS_DEFAULT</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#stanford.cs106.diff.Diff.FLAGS_DEFAULT\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"FLAGS_DEFAULT_LENIENT\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>FLAGS_DEFAULT_LENIENT</h4>\n<pre>public static final&nbsp;int FLAGS_DEFAULT_LENIENT</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#stanford.cs106.diff.Diff.FLAGS_DEFAULT_LENIENT\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"FLAGS_DEFAULT_STRICT\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>FLAGS_DEFAULT_STRICT</h4>\n<pre>public static final&nbsp;int FLAGS_DEFAULT_STRICT</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#stanford.cs106.diff.Diff.FLAGS_DEFAULT_STRICT\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"Diff--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>Diff</h4>\n<pre>public&nbsp;Diff()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"diffAsList-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>diffAsList</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;<a href=\"../../../stanford/cs106/diff/Diff.Difference.html\" title=\"class in stanford.cs106.diff\">Diff.Difference</a>&gt;&nbsp;diffAsList(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s1,\n                                               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s2)</pre>\n</li>\n</ul>\n<a name=\"diffAsList-java.lang.String-java.lang.String-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>diffAsList</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;<a href=\"../../../stanford/cs106/diff/Diff.Difference.html\" title=\"class in stanford.cs106.diff\">Diff.Difference</a>&gt;&nbsp;diffAsList(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s1,\n                                               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s2,\n                                               int&nbsp;flags)</pre>\n</li>\n</ul>\n<a name=\"diff-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>diff</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;diff(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s1,\n                          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s2)</pre>\n</li>\n</ul>\n<a name=\"diff-java.lang.String-java.lang.String-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>diff</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;diff(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s1,\n                          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s2,\n                          int&nbsp;flags)</pre>\n</li>\n</ul>\n<a name=\"diffSideBySide-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>diffSideBySide</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;diffSideBySide(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;str1,\n                                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;str2)</pre>\n<div class=\"block\">Returns a side-by-side comparision using the diff tool.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>str1</code> - the first string. Output appears on the left.</dd>\n<dd><code>str2</code> - the string to compare to str2. Output is on the right.</dd>\n<dd><code>a</code> - side-by-side diff of str1 and str2</dd>\n</dl>\n</li>\n</ul>\n<a name=\"diffSideBySide-java.lang.String-java.lang.String-int-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>diffSideBySide</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;diffSideBySide(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;str1,\n                                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;str2,\n                                    int&nbsp;width)</pre>\n<div class=\"block\">Returns a side-by-side comparision using the diff tool.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>str1</code> - the first string. Output appears on the left.</dd>\n<dd><code>str2</code> - the string to compare to str2. Output is on the right.</dd>\n<dd><code>a</code> - side-by-side diff of str1 and str2</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Class</li>\n<li><a href=\"../../../stanford/cs106/diff/Diff.Difference.html\" title=\"class in stanford.cs106.diff\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/diff/Diff.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Diff.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.class.summary\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/diff/DiffCollection.Difference.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:24 PDT 2017 -->\n<title>DiffCollection.Difference</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"DiffCollection.Difference\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/diff/DiffCollection.html\" title=\"class in stanford.cs106.diff\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/diff/DiffGui.html\" title=\"class in stanford.cs106.diff\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/diff/DiffCollection.Difference.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"DiffCollection.Difference.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.diff</div>\n<h2 title=\"Class DiffCollection.Difference\" class=\"title\">Class DiffCollection.Difference</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.diff.DiffCollection.Difference</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>Enclosing class:</dt>\n<dd><a href=\"../../../stanford/cs106/diff/DiffCollection.html\" title=\"class in stanford.cs106.diff\">DiffCollection</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public static final class <span class=\"typeNameLabel\">DiffCollection.Difference</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n<div class=\"block\">Represents a difference, as used in <code>Diff</code>. A difference\n consists of two pairs of starting and ending points, each pair\n representing either the \"from\" or the \"to\" collection passed to\n <code>Diff</code>. If an ending point is -1, then the difference was\n either a deletion or an addition. For example, if\n <code>getDeletedEnd()</code> returns -1, then the difference represents\n an addition.</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffCollection.Difference.html#NONE\">NONE</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffCollection.Difference.html#Difference-int-int-int-int-\">Difference</a></span>(int&nbsp;delStart,\n          int&nbsp;delEnd,\n          int&nbsp;addStart,\n          int&nbsp;addEnd)</code>\n<div class=\"block\">Creates the difference for the given start and end points for the\n deletion and addition.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffCollection.Difference.html#addedIndexToString--\">addedIndexToString</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffCollection.Difference.html#deletedIndexToString--\">deletedIndexToString</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffCollection.Difference.html#equals-java.lang.Object-\">equals</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj)</code>\n<div class=\"block\">Compares this object to the other for equality.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffCollection.Difference.html#getAddedEnd--\">getAddedEnd</a></span>()</code>\n<div class=\"block\">The point at which the addition ends, if any.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffCollection.Difference.html#getAddedStart--\">getAddedStart</a></span>()</code>\n<div class=\"block\">The point at which the addition starts, if any.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffCollection.Difference.html#getDeletedEnd--\">getDeletedEnd</a></span>()</code>\n<div class=\"block\">The point at which the deletion ends, if any.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffCollection.Difference.html#getDeletedStart--\">getDeletedStart</a></span>()</code>\n<div class=\"block\">The point at which the deletion starts, if any.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffCollection.Difference.html#hashCode--\">hashCode</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffCollection.Difference.html#indexToString-int-int-\">indexToString</a></span>(int&nbsp;start,\n             int&nbsp;end)</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffCollection.Difference.html#setAdded-int-\">setAdded</a></span>(int&nbsp;line)</code>\n<div class=\"block\">Sets the point as added.</div>\n</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffCollection.Difference.html#setDeleted-int-\">setDeleted</a></span>(int&nbsp;line)</code>\n<div class=\"block\">Sets the point as deleted.</div>\n</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffCollection.Difference.html#toString--\">toString</a></span>()</code>\n<div class=\"block\">Returns a string representation of this difference.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"NONE\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>NONE</h4>\n<pre>public static final&nbsp;int NONE</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#stanford.cs106.diff.DiffCollection.Difference.NONE\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"Difference-int-int-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>Difference</h4>\n<pre>public&nbsp;Difference(int&nbsp;delStart,\n                  int&nbsp;delEnd,\n                  int&nbsp;addStart,\n                  int&nbsp;addEnd)</pre>\n<div class=\"block\">Creates the difference for the given start and end points for the\n deletion and addition.</div>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"getDeletedStart--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getDeletedStart</h4>\n<pre>public&nbsp;int&nbsp;getDeletedStart()</pre>\n<div class=\"block\">The point at which the deletion starts, if any. A value equal to\n <code>NONE</code> means this is an addition.</div>\n</li>\n</ul>\n<a name=\"getDeletedEnd--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getDeletedEnd</h4>\n<pre>public&nbsp;int&nbsp;getDeletedEnd()</pre>\n<div class=\"block\">The point at which the deletion ends, if any. A value equal to\n <code>NONE</code> means this is an addition.</div>\n</li>\n</ul>\n<a name=\"getAddedStart--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getAddedStart</h4>\n<pre>public&nbsp;int&nbsp;getAddedStart()</pre>\n<div class=\"block\">The point at which the addition starts, if any. A value equal to\n <code>NONE</code> means this must be an addition.</div>\n</li>\n</ul>\n<a name=\"getAddedEnd--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getAddedEnd</h4>\n<pre>public&nbsp;int&nbsp;getAddedEnd()</pre>\n<div class=\"block\">The point at which the addition ends, if any. A value equal to\n <code>NONE</code> means this must be an addition.</div>\n</li>\n</ul>\n<a name=\"setDeleted-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setDeleted</h4>\n<pre>public&nbsp;void&nbsp;setDeleted(int&nbsp;line)</pre>\n<div class=\"block\">Sets the point as deleted. The start and end points will be modified\n to include the given line.</div>\n</li>\n</ul>\n<a name=\"setAdded-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setAdded</h4>\n<pre>public&nbsp;void&nbsp;setAdded(int&nbsp;line)</pre>\n<div class=\"block\">Sets the point as added. The start and end points will be modified to\n include the given line.</div>\n</li>\n</ul>\n<a name=\"equals-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>equals</h4>\n<pre>public&nbsp;boolean&nbsp;equals(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj)</pre>\n<div class=\"block\">Compares this object to the other for equality. Both objects must be\n of type Difference, with the same starting and ending points.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"hashCode--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hashCode</h4>\n<pre>public&nbsp;int&nbsp;hashCode()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"addedIndexToString--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addedIndexToString</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;addedIndexToString()</pre>\n</li>\n</ul>\n<a name=\"deletedIndexToString--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>deletedIndexToString</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;deletedIndexToString()</pre>\n</li>\n</ul>\n<a name=\"indexToString-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>indexToString</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;indexToString(int&nbsp;start,\n                            int&nbsp;end)</pre>\n</li>\n</ul>\n<a name=\"toString--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>toString</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;toString()</pre>\n<div class=\"block\">Returns a string representation of this difference.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/diff/DiffCollection.html\" title=\"class in stanford.cs106.diff\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/diff/DiffGui.html\" title=\"class in stanford.cs106.diff\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/diff/DiffCollection.Difference.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"DiffCollection.Difference.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/diff/DiffCollection.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:24 PDT 2017 -->\n<title>DiffCollection</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"DiffCollection\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":9,\"i11\":10,\"i12\":10,\"i13\":9,\"i14\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/diff/Diff.Difference.Type.html\" title=\"enum in stanford.cs106.diff\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/diff/DiffCollection.Difference.html\" title=\"class in stanford.cs106.diff\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/diff/DiffCollection.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"DiffCollection.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.class.summary\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.diff</div>\n<h2 title=\"Class DiffCollection\" class=\"title\">Class DiffCollection</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.diff.DiffCollection</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">DiffCollection</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n<div class=\"block\">Compares two collections, returning a list of the additions, changes, and\n deletions between them. A <code>Comparator</code> may be passed as an\n argument to the constructor, and will thus be used. If not provided, the\n initial value in the <code>a</code> (\"from\") collection will be looked at to\n see if it supports the <code>Comparable</code> interface. If so, its\n <code>equals</code> and <code>compareTo</code> methods will be invoked on the\n instances in the \"from\" and \"to\" collections; otherwise, for speed, hash\n codes from the objects will be used instead for comparison.\n \n <p>\n The file FileDiff.java shows an example usage of this class, in an\n application similar to the Unix \"diff\" program.\n </p>\n \n <p>\n Source originally from: http://www.incava.org/projects/java/java-diff/\n </p></div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Nested Class Summary table, listing nested classes, and an explanation\">\n<caption><span>Nested Classes</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Class and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static class&nbsp;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffCollection.Difference.html\" title=\"class in stanford.cs106.diff\">DiffCollection.Difference</a></span></code>\n<div class=\"block\">Represents a difference, as used in <code>Diff</code>.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffCollection.html#a\">a</a></span></code>\n<div class=\"block\">The source array, AKA the \"from\" values.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffCollection.html#b\">b</a></span></code>\n<div class=\"block\">The target array, AKA the \"to\" values.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;<a href=\"../../../stanford/cs106/diff/DiffCollection.Difference.html\" title=\"class in stanford.cs106.diff\">DiffCollection.Difference</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffCollection.html#diffs\">diffs</a></span></code>\n<div class=\"block\">The list of differences, as <code>Difference</code> instances.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffCollection.html#DiffCollection-java.lang.Object:A-java.lang.Object:A-\">DiffCollection</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>[]&nbsp;a,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>[]&nbsp;b)</code>\n<div class=\"block\">Constructs the Diff object for the two arrays, using the default\n comparison mechanism between the objects, such as <code>equals</code> and\n <code>compareTo</code>.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffCollection.html#append-java.lang.Integer-\">append</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true\" title=\"class or interface in java.lang\">Integer</a>&nbsp;value)</code>\n<div class=\"block\">Adds the given value to the \"end\" of the threshold map, that is, with the\n greatest index/key.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffCollection.html#callFinishedA--\">callFinishedA</a></span>()</code>\n<div class=\"block\">Override and return true in order to have <code>finishedA</code> invoked\n at the last element in the <code>a</code> array.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffCollection.html#callFinishedB--\">callFinishedB</a></span>()</code>\n<div class=\"block\">Override and return true in order to have <code>finishedB</code> invoked\n at the last element in the <code>b</code> array.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;<a href=\"../../../stanford/cs106/diff/DiffCollection.Difference.html\" title=\"class in stanford.cs106.diff\">DiffCollection.Difference</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffCollection.html#diff--\">diff</a></span>()</code>\n<div class=\"block\">Runs diff and returns the results.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffCollection.html#equals-java.lang.Object-java.lang.Object-\">equals</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;x,\n      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;y)</code>\n<div class=\"block\">Compares the two objects, using the comparator provided with the\n constructor, if any.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true\" title=\"class or interface in java.lang\">Integer</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffCollection.html#getLastValue--\">getLastValue</a></span>()</code>\n<div class=\"block\">Returns the value for the greatest key in the map.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true\" title=\"class or interface in java.lang\">Integer</a>[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffCollection.html#getLongestCommonSubsequences--\">getLongestCommonSubsequences</a></span>()</code>\n<div class=\"block\">Returns an array of the longest common subsequences.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true\" title=\"class or interface in java.lang\">Integer</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffCollection.html#insert-java.lang.Integer-java.lang.Integer-\">insert</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true\" title=\"class or interface in java.lang\">Integer</a>&nbsp;j,\n      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true\" title=\"class or interface in java.lang\">Integer</a>&nbsp;k)</code>\n<div class=\"block\">Inserts the given values into the threshold map.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffCollection.html#isGreaterThan-java.lang.Integer-java.lang.Integer-\">isGreaterThan</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true\" title=\"class or interface in java.lang\">Integer</a>&nbsp;index,\n             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true\" title=\"class or interface in java.lang\">Integer</a>&nbsp;val)</code>\n<div class=\"block\">Returns whether the value in the map for the given index is greater than\n the given value.</div>\n</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffCollection.html#isLessThan-java.lang.Integer-java.lang.Integer-\">isLessThan</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true\" title=\"class or interface in java.lang\">Integer</a>&nbsp;index,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true\" title=\"class or interface in java.lang\">Integer</a>&nbsp;val)</code>\n<div class=\"block\">Returns whether the value in the map for the given index is less than the\n given value.</div>\n</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffCollection.html#isNonzero-java.lang.Integer-\">isNonzero</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true\" title=\"class or interface in java.lang\">Integer</a>&nbsp;i)</code>\n<div class=\"block\">Returns whether the integer is not zero (including if it is not null).</div>\n</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffCollection.html#onANotB-int-int-\">onANotB</a></span>(int&nbsp;ai,\n       int&nbsp;bi)</code>\n<div class=\"block\">Invoked for elements in <code>a</code> and not in <code>b</code>.</div>\n</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffCollection.html#onBNotA-int-int-\">onBNotA</a></span>(int&nbsp;ai,\n       int&nbsp;bi)</code>\n<div class=\"block\">Invoked for elements in <code>b</code> and not in <code>a</code>.</div>\n</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true\" title=\"class or interface in java.lang\">Integer</a>[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffCollection.html#toArray-java.util.TreeMap-\">toArray</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/TreeMap.html?is-external=true\" title=\"class or interface in java.util\">TreeMap</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true\" title=\"class or interface in java.lang\">Integer</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true\" title=\"class or interface in java.lang\">Integer</a>&gt;&nbsp;map)</code>\n<div class=\"block\">Converts the map (indexed by java.lang.Integers) into an array.</div>\n</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffCollection.html#traverseSequences--\">traverseSequences</a></span>()</code>\n<div class=\"block\">Traverses the sequences, seeking the longest common subsequences,\n invoking the methods <code>finishedA</code>, <code>finishedB</code>,\n <code>onANotB</code>, and <code>onBNotA</code>.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"a\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>a</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>[] a</pre>\n<div class=\"block\">The source array, AKA the \"from\" values.</div>\n</li>\n</ul>\n<a name=\"b\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>b</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>[] b</pre>\n<div class=\"block\">The target array, AKA the \"to\" values.</div>\n</li>\n</ul>\n<a name=\"diffs\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>diffs</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;<a href=\"../../../stanford/cs106/diff/DiffCollection.Difference.html\" title=\"class in stanford.cs106.diff\">DiffCollection.Difference</a>&gt; diffs</pre>\n<div class=\"block\">The list of differences, as <code>Difference</code> instances.</div>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"DiffCollection-java.lang.Object:A-java.lang.Object:A-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>DiffCollection</h4>\n<pre>public&nbsp;DiffCollection(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>[]&nbsp;a,\n                      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>[]&nbsp;b)</pre>\n<div class=\"block\">Constructs the Diff object for the two arrays, using the default\n comparison mechanism between the objects, such as <code>equals</code> and\n <code>compareTo</code>.</div>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"diff--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>diff</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;<a href=\"../../../stanford/cs106/diff/DiffCollection.Difference.html\" title=\"class in stanford.cs106.diff\">DiffCollection.Difference</a>&gt;&nbsp;diff()</pre>\n<div class=\"block\">Runs diff and returns the results.</div>\n</li>\n</ul>\n<a name=\"traverseSequences--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>traverseSequences</h4>\n<pre>protected&nbsp;void&nbsp;traverseSequences()</pre>\n<div class=\"block\">Traverses the sequences, seeking the longest common subsequences,\n invoking the methods <code>finishedA</code>, <code>finishedB</code>,\n <code>onANotB</code>, and <code>onBNotA</code>.</div>\n</li>\n</ul>\n<a name=\"callFinishedA--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>callFinishedA</h4>\n<pre>protected&nbsp;boolean&nbsp;callFinishedA()</pre>\n<div class=\"block\">Override and return true in order to have <code>finishedA</code> invoked\n at the last element in the <code>a</code> array.</div>\n</li>\n</ul>\n<a name=\"callFinishedB--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>callFinishedB</h4>\n<pre>protected&nbsp;boolean&nbsp;callFinishedB()</pre>\n<div class=\"block\">Override and return true in order to have <code>finishedB</code> invoked\n at the last element in the <code>b</code> array.</div>\n</li>\n</ul>\n<a name=\"onANotB-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>onANotB</h4>\n<pre>protected&nbsp;void&nbsp;onANotB(int&nbsp;ai,\n                       int&nbsp;bi)</pre>\n<div class=\"block\">Invoked for elements in <code>a</code> and not in <code>b</code>.</div>\n</li>\n</ul>\n<a name=\"onBNotA-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>onBNotA</h4>\n<pre>protected&nbsp;void&nbsp;onBNotA(int&nbsp;ai,\n                       int&nbsp;bi)</pre>\n<div class=\"block\">Invoked for elements in <code>b</code> and not in <code>a</code>.</div>\n</li>\n</ul>\n<a name=\"equals-java.lang.Object-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>equals</h4>\n<pre>protected&nbsp;boolean&nbsp;equals(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;x,\n                         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;y)</pre>\n<div class=\"block\">Compares the two objects, using the comparator provided with the\n constructor, if any.</div>\n</li>\n</ul>\n<a name=\"getLongestCommonSubsequences--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getLongestCommonSubsequences</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true\" title=\"class or interface in java.lang\">Integer</a>[]&nbsp;getLongestCommonSubsequences()</pre>\n<div class=\"block\">Returns an array of the longest common subsequences.</div>\n</li>\n</ul>\n<a name=\"toArray-java.util.TreeMap-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>toArray</h4>\n<pre>protected static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true\" title=\"class or interface in java.lang\">Integer</a>[]&nbsp;toArray(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/TreeMap.html?is-external=true\" title=\"class or interface in java.util\">TreeMap</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true\" title=\"class or interface in java.lang\">Integer</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true\" title=\"class or interface in java.lang\">Integer</a>&gt;&nbsp;map)</pre>\n<div class=\"block\">Converts the map (indexed by java.lang.Integers) into an array.</div>\n</li>\n</ul>\n<a name=\"isNonzero-java.lang.Integer-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isNonzero</h4>\n<pre>protected static&nbsp;boolean&nbsp;isNonzero(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true\" title=\"class or interface in java.lang\">Integer</a>&nbsp;i)</pre>\n<div class=\"block\">Returns whether the integer is not zero (including if it is not null).</div>\n</li>\n</ul>\n<a name=\"isGreaterThan-java.lang.Integer-java.lang.Integer-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isGreaterThan</h4>\n<pre>protected&nbsp;boolean&nbsp;isGreaterThan(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true\" title=\"class or interface in java.lang\">Integer</a>&nbsp;index,\n                                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true\" title=\"class or interface in java.lang\">Integer</a>&nbsp;val)</pre>\n<div class=\"block\">Returns whether the value in the map for the given index is greater than\n the given value.</div>\n</li>\n</ul>\n<a name=\"isLessThan-java.lang.Integer-java.lang.Integer-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isLessThan</h4>\n<pre>protected&nbsp;boolean&nbsp;isLessThan(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true\" title=\"class or interface in java.lang\">Integer</a>&nbsp;index,\n                             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true\" title=\"class or interface in java.lang\">Integer</a>&nbsp;val)</pre>\n<div class=\"block\">Returns whether the value in the map for the given index is less than the\n given value.</div>\n</li>\n</ul>\n<a name=\"getLastValue--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getLastValue</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true\" title=\"class or interface in java.lang\">Integer</a>&nbsp;getLastValue()</pre>\n<div class=\"block\">Returns the value for the greatest key in the map.</div>\n</li>\n</ul>\n<a name=\"append-java.lang.Integer-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>append</h4>\n<pre>protected&nbsp;void&nbsp;append(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true\" title=\"class or interface in java.lang\">Integer</a>&nbsp;value)</pre>\n<div class=\"block\">Adds the given value to the \"end\" of the threshold map, that is, with the\n greatest index/key.</div>\n</li>\n</ul>\n<a name=\"insert-java.lang.Integer-java.lang.Integer-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>insert</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true\" title=\"class or interface in java.lang\">Integer</a>&nbsp;insert(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true\" title=\"class or interface in java.lang\">Integer</a>&nbsp;j,\n                         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true\" title=\"class or interface in java.lang\">Integer</a>&nbsp;k)</pre>\n<div class=\"block\">Inserts the given values into the threshold map.</div>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/diff/Diff.Difference.Type.html\" title=\"enum in stanford.cs106.diff\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/diff/DiffCollection.Difference.html\" title=\"class in stanford.cs106.diff\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/diff/DiffCollection.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"DiffCollection.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.class.summary\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/diff/DiffGui.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:24 PDT 2017 -->\n<title>DiffGui</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"DiffGui\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/diff/DiffCollection.Difference.html\" title=\"class in stanford.cs106.diff\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/diff/DiffImage.html\" title=\"class in stanford.cs106.diff\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/diff/DiffGui.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"DiffGui.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.diff</div>\n<h2 title=\"Class DiffGui\" class=\"title\">Class DiffGui</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.diff.DiffGui</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/AdjustmentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">AdjustmentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">DiffGui</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>\nimplements <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/AdjustmentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">AdjustmentListener</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffGui.html#EXPECTED_COLOR\">EXPECTED_COLOR</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffGui.html#LINE_NUMBER_BG_COLOR\">LINE_NUMBER_BG_COLOR</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffGui.html#LINE_NUMBER_FG_COLOR\">LINE_NUMBER_FG_COLOR</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffGui.html#SIDE_BY_SIDE_ENABLED\">SIDE_BY_SIDE_ENABLED</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffGui.html#STUDENT_COLOR\">STUDENT_COLOR</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffGui.html#DiffGui-java.lang.String-java.lang.String-\">DiffGui</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s1,\n       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s2)</code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffGui.html#DiffGui-java.lang.String-java.lang.String-java.lang.String-java.lang.String-\">DiffGui</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name1,\n       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s1,\n       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name2,\n       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s2)</code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffGui.html#DiffGui-java.lang.String-java.lang.String-java.lang.String-java.lang.String-boolean-\">DiffGui</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name1,\n       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s1,\n       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name2,\n       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s2,\n       boolean&nbsp;checkboxes)</code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffGui.html#DiffGui-java.lang.String-java.lang.String-java.lang.String-java.lang.String-int-\">DiffGui</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name1,\n       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s1,\n       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name2,\n       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s2,\n       int&nbsp;flags)</code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffGui.html#DiffGui-java.lang.String-java.lang.String-java.lang.String-java.lang.String-int-boolean-\">DiffGui</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name1,\n       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s1,\n       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name2,\n       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s2,\n       int&nbsp;flags,\n       boolean&nbsp;checkboxes)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffGui.html#actionPerformed-java.awt.event.ActionEvent-\">actionPerformed</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;event)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffGui.html#adjustmentValueChanged-java.awt.event.AdjustmentEvent-\">adjustmentValueChanged</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/AdjustmentEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">AdjustmentEvent</a>&nbsp;event)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffGui.html#setDiffCheckboxes-boolean-\">setDiffCheckboxes</a></span>(boolean&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffGui.html#show--\">show</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"SIDE_BY_SIDE_ENABLED\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SIDE_BY_SIDE_ENABLED</h4>\n<pre>public static&nbsp;boolean SIDE_BY_SIDE_ENABLED</pre>\n</li>\n</ul>\n<a name=\"EXPECTED_COLOR\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>EXPECTED_COLOR</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> EXPECTED_COLOR</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#stanford.cs106.diff.DiffGui.EXPECTED_COLOR\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"STUDENT_COLOR\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>STUDENT_COLOR</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> STUDENT_COLOR</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#stanford.cs106.diff.DiffGui.STUDENT_COLOR\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"LINE_NUMBER_BG_COLOR\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>LINE_NUMBER_BG_COLOR</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> LINE_NUMBER_BG_COLOR</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#stanford.cs106.diff.DiffGui.LINE_NUMBER_BG_COLOR\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"LINE_NUMBER_FG_COLOR\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>LINE_NUMBER_FG_COLOR</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> LINE_NUMBER_FG_COLOR</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#stanford.cs106.diff.DiffGui.LINE_NUMBER_FG_COLOR\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"DiffGui-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>DiffGui</h4>\n<pre>public&nbsp;DiffGui(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s1,\n               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s2)</pre>\n</li>\n</ul>\n<a name=\"DiffGui-java.lang.String-java.lang.String-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>DiffGui</h4>\n<pre>public&nbsp;DiffGui(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name1,\n               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s1,\n               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name2,\n               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s2)</pre>\n</li>\n</ul>\n<a name=\"DiffGui-java.lang.String-java.lang.String-java.lang.String-java.lang.String-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>DiffGui</h4>\n<pre>public&nbsp;DiffGui(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name1,\n               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s1,\n               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name2,\n               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s2,\n               boolean&nbsp;checkboxes)</pre>\n</li>\n</ul>\n<a name=\"DiffGui-java.lang.String-java.lang.String-java.lang.String-java.lang.String-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>DiffGui</h4>\n<pre>public&nbsp;DiffGui(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name1,\n               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s1,\n               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name2,\n               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s2,\n               int&nbsp;flags)</pre>\n</li>\n</ul>\n<a name=\"DiffGui-java.lang.String-java.lang.String-java.lang.String-java.lang.String-int-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>DiffGui</h4>\n<pre>public&nbsp;DiffGui(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name1,\n               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s1,\n               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name2,\n               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s2,\n               int&nbsp;flags,\n               boolean&nbsp;checkboxes)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"adjustmentValueChanged-java.awt.event.AdjustmentEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>adjustmentValueChanged</h4>\n<pre>public&nbsp;void&nbsp;adjustmentValueChanged(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/AdjustmentEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">AdjustmentEvent</a>&nbsp;event)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/AdjustmentListener.html?is-external=true#adjustmentValueChanged-java.awt.event.AdjustmentEvent-\" title=\"class or interface in java.awt.event\">adjustmentValueChanged</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/AdjustmentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">AdjustmentListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"actionPerformed-java.awt.event.ActionEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>actionPerformed</h4>\n<pre>public&nbsp;void&nbsp;actionPerformed(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;event)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true#actionPerformed-java.awt.event.ActionEvent-\" title=\"class or interface in java.awt.event\">actionPerformed</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"show--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>show</h4>\n<pre>public&nbsp;void&nbsp;show()</pre>\n</li>\n</ul>\n<a name=\"setDiffCheckboxes-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>setDiffCheckboxes</h4>\n<pre>public&nbsp;void&nbsp;setDiffCheckboxes(boolean&nbsp;value)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/diff/DiffCollection.Difference.html\" title=\"class in stanford.cs106.diff\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/diff/DiffImage.html\" title=\"class in stanford.cs106.diff\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/diff/DiffGui.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"DiffGui.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/diff/DiffImage.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:24 PDT 2017 -->\n<title>DiffImage</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"DiffImage\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/diff/DiffGui.html\" title=\"class in stanford.cs106.diff\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li>Next&nbsp;Class</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/diff/DiffImage.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"DiffImage.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JPanel\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.javax.swing.JComponent\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.diff</div>\n<h2 title=\"Class DiffImage\" class=\"title\">Class DiffImage</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Component</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Container</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JComponent</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JPanel</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.diff.DiffImage</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">DiffImage</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a></pre>\n<div class=\"block\">This class views the difference between two images in a graphical window\n with a slider to switch between the two.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../serialized-form.html#stanford.cs106.diff.DiffImage\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JPanel\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.AccessibleJPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel.AccessibleJPanel</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.AccessibleJComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent.AccessibleJComponent</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.AccessibleAWTContainer.html?is-external=true\" title=\"class or interface in java.awt\">Container.AccessibleAWTContainer</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.AccessibleAWTComponent.html?is-external=true\" title=\"class or interface in java.awt\">Component.AccessibleAWTComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BaselineResizeBehavior.html?is-external=true\" title=\"class or interface in java.awt\">Component.BaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BltBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.BltBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.FlipBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.FlipBufferStrategy</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#listenerList\" title=\"class or interface in javax.swing\">listenerList</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#TOOL_TIP_TEXT_KEY\" title=\"class or interface in javax.swing\">TOOL_TIP_TEXT_KEY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#ui\" title=\"class or interface in javax.swing\">ui</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#UNDEFINED_CONDITION\" title=\"class or interface in javax.swing\">UNDEFINED_CONDITION</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_ANCESTOR_OF_FOCUSED_COMPONENT\" title=\"class or interface in javax.swing\">WHEN_ANCESTOR_OF_FOCUSED_COMPONENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_FOCUSED\" title=\"class or interface in javax.swing\">WHEN_FOCUSED</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_IN_FOCUSED_WINDOW\" title=\"class or interface in javax.swing\">WHEN_IN_FOCUSED_WINDOW</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#accessibleContext\" title=\"class or interface in java.awt\">accessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#BOTTOM_ALIGNMENT\" title=\"class or interface in java.awt\">BOTTOM_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#CENTER_ALIGNMENT\" title=\"class or interface in java.awt\">CENTER_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#LEFT_ALIGNMENT\" title=\"class or interface in java.awt\">LEFT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#RIGHT_ALIGNMENT\" title=\"class or interface in java.awt\">RIGHT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#TOP_ALIGNMENT\" title=\"class or interface in java.awt\">TOP_ALIGNMENT</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.image.ImageObserver\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ABORT\" title=\"class or interface in java.awt.image\">ABORT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ALLBITS\" title=\"class or interface in java.awt.image\">ALLBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ERROR\" title=\"class or interface in java.awt.image\">ERROR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#FRAMEBITS\" title=\"class or interface in java.awt.image\">FRAMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#HEIGHT\" title=\"class or interface in java.awt.image\">HEIGHT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#PROPERTIES\" title=\"class or interface in java.awt.image\">PROPERTIES</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#SOMEBITS\" title=\"class or interface in java.awt.image\">SOMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#WIDTH\" title=\"class or interface in java.awt.image\">WIDTH</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffImage.html#DiffImage-java.awt.Image-java.awt.Image-\">DiffImage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;image1,\n         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;image2)</code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffImage.html#DiffImage-java.awt.Image-java.awt.Image-boolean-\">DiffImage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;image1,\n         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;image2,\n         boolean&nbsp;display)</code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffImage.html#DiffImage-java.lang.String-java.lang.String-\">DiffImage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;imageFile1,\n         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;imageFile2)</code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffImage.html#DiffImage-java.lang.String-java.lang.String-boolean-\">DiffImage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;imageFile1,\n         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;imageFile2,\n         boolean&nbsp;display)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffImage.html#countDiffPixels--\">countDiffPixels</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffImage.html#display--\">display</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffImage.html#drawImageFull-java.awt.Graphics2D-java.awt.image.BufferedImage-\">drawImageFull</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics2D.html?is-external=true\" title=\"class or interface in java.awt\">Graphics2D</a>&nbsp;g2,\n             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/BufferedImage.html?is-external=true\" title=\"class or interface in java.awt.image\">BufferedImage</a>&nbsp;image)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffImage.html#paintComponent-java.awt.Graphics-\">paintComponent</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g)</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffImage.html#save-java.io.File-\">save</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffImage.html#save-java.lang.String-\">save</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffImage.html#saveAs--\">saveAs</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffImage.html#setImage1--\">setImage1</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffImage.html#setImage1-java.awt.image.BufferedImage-\">setImage1</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/BufferedImage.html?is-external=true\" title=\"class or interface in java.awt.image\">BufferedImage</a>&nbsp;image)</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffImage.html#setImage1-java.lang.String-\">setImage1</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffImage.html#setImage1Label-java.lang.String-\">setImage1Label</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffImage.html#setImage2--\">setImage2</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffImage.html#setImage2-java.awt.image.BufferedImage-\">setImage2</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/BufferedImage.html?is-external=true\" title=\"class or interface in java.awt.image\">BufferedImage</a>&nbsp;image)</code>&nbsp;</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffImage.html#setImage2-java.lang.String-\">setImage2</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>&nbsp;</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/diff/DiffImage.html#setImage2Label-java.lang.String-\">setImage2Label</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JPanel\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true#getAccessibleContext--\" title=\"class or interface in javax.swing\">getAccessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true#getUI--\" title=\"class or interface in javax.swing\">getUI</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true#getUIClassID--\" title=\"class or interface in javax.swing\">getUIClassID</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true#paramString--\" title=\"class or interface in javax.swing\">paramString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true#setUI-javax.swing.plaf.PanelUI-\" title=\"class or interface in javax.swing\">setUI</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true#updateUI--\" title=\"class or interface in javax.swing\">updateUI</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addAncestorListener-javax.swing.event.AncestorListener-\" title=\"class or interface in javax.swing\">addAncestorListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addNotify--\" title=\"class or interface in javax.swing\">addNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addVetoableChangeListener-java.beans.VetoableChangeListener-\" title=\"class or interface in javax.swing\">addVetoableChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#computeVisibleRect-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">computeVisibleRect</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#contains-int-int-\" title=\"class or interface in javax.swing\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#createToolTip--\" title=\"class or interface in javax.swing\">createToolTip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#disable--\" title=\"class or interface in javax.swing\">disable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#enable--\" title=\"class or interface in javax.swing\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-boolean-boolean-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-char-char-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-int-int-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#fireVetoableChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in javax.swing\">fireVetoableChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getActionForKeyStroke-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">getActionForKeyStroke</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getActionMap--\" title=\"class or interface in javax.swing\">getActionMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAlignmentX--\" title=\"class or interface in javax.swing\">getAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAlignmentY--\" title=\"class or interface in javax.swing\">getAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAncestorListeners--\" title=\"class or interface in javax.swing\">getAncestorListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAutoscrolls--\" title=\"class or interface in javax.swing\">getAutoscrolls</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBaseline-int-int-\" title=\"class or interface in javax.swing\">getBaseline</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBaselineResizeBehavior--\" title=\"class or interface in javax.swing\">getBaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBorder--\" title=\"class or interface in javax.swing\">getBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBounds-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getClientProperty-java.lang.Object-\" title=\"class or interface in javax.swing\">getClientProperty</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getComponentGraphics-java.awt.Graphics-\" title=\"class or interface in javax.swing\">getComponentGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getComponentPopupMenu--\" title=\"class or interface in javax.swing\">getComponentPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getConditionForKeyStroke-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">getConditionForKeyStroke</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getDebugGraphicsOptions--\" title=\"class or interface in javax.swing\">getDebugGraphicsOptions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getDefaultLocale--\" title=\"class or interface in javax.swing\">getDefaultLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getFontMetrics-java.awt.Font-\" title=\"class or interface in javax.swing\">getFontMetrics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getGraphics--\" title=\"class or interface in javax.swing\">getGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getHeight--\" title=\"class or interface in javax.swing\">getHeight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInheritsPopupMenu--\" title=\"class or interface in javax.swing\">getInheritsPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputMap--\" title=\"class or interface in javax.swing\">getInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputMap-int-\" title=\"class or interface in javax.swing\">getInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputVerifier--\" title=\"class or interface in javax.swing\">getInputVerifier</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInsets--\" title=\"class or interface in javax.swing\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInsets-java.awt.Insets-\" title=\"class or interface in javax.swing\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getListeners-java.lang.Class-\" title=\"class or interface in javax.swing\">getListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getLocation-java.awt.Point-\" title=\"class or interface in javax.swing\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getMaximumSize--\" title=\"class or interface in javax.swing\">getMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getMinimumSize--\" title=\"class or interface in javax.swing\">getMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getNextFocusableComponent--\" title=\"class or interface in javax.swing\">getNextFocusableComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getPopupLocation-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">getPopupLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getPreferredSize--\" title=\"class or interface in javax.swing\">getPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getRegisteredKeyStrokes--\" title=\"class or interface in javax.swing\">getRegisteredKeyStrokes</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getRootPane--\" title=\"class or interface in javax.swing\">getRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getToolTipLocation-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">getToolTipLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getToolTipText--\" title=\"class or interface in javax.swing\">getToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getToolTipText-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">getToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getTopLevelAncestor--\" title=\"class or interface in javax.swing\">getTopLevelAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getTransferHandler--\" title=\"class or interface in javax.swing\">getTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVerifyInputWhenFocusTarget--\" title=\"class or interface in javax.swing\">getVerifyInputWhenFocusTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVetoableChangeListeners--\" title=\"class or interface in javax.swing\">getVetoableChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVisibleRect--\" title=\"class or interface in javax.swing\">getVisibleRect</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getWidth--\" title=\"class or interface in javax.swing\">getWidth</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getX--\" title=\"class or interface in javax.swing\">getX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getY--\" title=\"class or interface in javax.swing\">getY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#grabFocus--\" title=\"class or interface in javax.swing\">grabFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#hide--\" title=\"class or interface in javax.swing\">hide</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isDoubleBuffered--\" title=\"class or interface in javax.swing\">isDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isLightweightComponent-java.awt.Component-\" title=\"class or interface in javax.swing\">isLightweightComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isManagingFocus--\" title=\"class or interface in javax.swing\">isManagingFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isOpaque--\" title=\"class or interface in javax.swing\">isOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isOptimizedDrawingEnabled--\" title=\"class or interface in javax.swing\">isOptimizedDrawingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingForPrint--\" title=\"class or interface in javax.swing\">isPaintingForPrint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingOrigin--\" title=\"class or interface in javax.swing\">isPaintingOrigin</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingTile--\" title=\"class or interface in javax.swing\">isPaintingTile</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isRequestFocusEnabled--\" title=\"class or interface in javax.swing\">isRequestFocusEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isValidateRoot--\" title=\"class or interface in javax.swing\">isValidateRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paint-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintBorder-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintChildren-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintChildren</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintImmediately-int-int-int-int-\" title=\"class or interface in javax.swing\">paintImmediately</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintImmediately-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">paintImmediately</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#print-java.awt.Graphics-\" title=\"class or interface in javax.swing\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printAll-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printBorder-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printChildren-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printChildren</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printComponent-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processComponentKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in javax.swing\">processComponentKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processKeyBinding-javax.swing.KeyStroke-java.awt.event.KeyEvent-int-boolean-\" title=\"class or interface in javax.swing\">processKeyBinding</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in javax.swing\">processKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processMouseEvent-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">processMouseEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processMouseMotionEvent-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">processMouseMotionEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#putClientProperty-java.lang.Object-java.lang.Object-\" title=\"class or interface in javax.swing\">putClientProperty</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#registerKeyboardAction-java.awt.event.ActionListener-javax.swing.KeyStroke-int-\" title=\"class or interface in javax.swing\">registerKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#registerKeyboardAction-java.awt.event.ActionListener-java.lang.String-javax.swing.KeyStroke-int-\" title=\"class or interface in javax.swing\">registerKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#removeAncestorListener-javax.swing.event.AncestorListener-\" title=\"class or interface in javax.swing\">removeAncestorListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#removeNotify--\" title=\"class or interface in javax.swing\">removeNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#removeVetoableChangeListener-java.beans.VetoableChangeListener-\" title=\"class or interface in javax.swing\">removeVetoableChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#repaint-long-int-int-int-int-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#repaint-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestDefaultFocus--\" title=\"class or interface in javax.swing\">requestDefaultFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocus--\" title=\"class or interface in javax.swing\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocus-boolean-\" title=\"class or interface in javax.swing\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocusInWindow--\" title=\"class or interface in javax.swing\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocusInWindow-boolean-\" title=\"class or interface in javax.swing\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#resetKeyboardActions--\" title=\"class or interface in javax.swing\">resetKeyboardActions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#reshape-int-int-int-int-\" title=\"class or interface in javax.swing\">reshape</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#revalidate--\" title=\"class or interface in javax.swing\">revalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#scrollRectToVisible-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">scrollRectToVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setActionMap-javax.swing.ActionMap-\" title=\"class or interface in javax.swing\">setActionMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAlignmentX-float-\" title=\"class or interface in javax.swing\">setAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAlignmentY-float-\" title=\"class or interface in javax.swing\">setAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAutoscrolls-boolean-\" title=\"class or interface in javax.swing\">setAutoscrolls</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setBackground-java.awt.Color-\" title=\"class or interface in javax.swing\">setBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setBorder-javax.swing.border.Border-\" title=\"class or interface in javax.swing\">setBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setComponentPopupMenu-javax.swing.JPopupMenu-\" title=\"class or interface in javax.swing\">setComponentPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDebugGraphicsOptions-int-\" title=\"class or interface in javax.swing\">setDebugGraphicsOptions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDefaultLocale-java.util.Locale-\" title=\"class or interface in javax.swing\">setDefaultLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDoubleBuffered-boolean-\" title=\"class or interface in javax.swing\">setDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setEnabled-boolean-\" title=\"class or interface in javax.swing\">setEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setFocusTraversalKeys-int-java.util.Set-\" title=\"class or interface in javax.swing\">setFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setFont-java.awt.Font-\" title=\"class or interface in javax.swing\">setFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setForeground-java.awt.Color-\" title=\"class or interface in javax.swing\">setForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInheritsPopupMenu-boolean-\" title=\"class or interface in javax.swing\">setInheritsPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInputMap-int-javax.swing.InputMap-\" title=\"class or interface in javax.swing\">setInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInputVerifier-javax.swing.InputVerifier-\" title=\"class or interface in javax.swing\">setInputVerifier</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setMaximumSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setMinimumSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setNextFocusableComponent-java.awt.Component-\" title=\"class or interface in javax.swing\">setNextFocusableComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setOpaque-boolean-\" title=\"class or interface in javax.swing\">setOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setPreferredSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setRequestFocusEnabled-boolean-\" title=\"class or interface in javax.swing\">setRequestFocusEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setToolTipText-java.lang.String-\" title=\"class or interface in javax.swing\">setToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setTransferHandler-javax.swing.TransferHandler-\" title=\"class or interface in javax.swing\">setTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setUI-javax.swing.plaf.ComponentUI-\" title=\"class or interface in javax.swing\">setUI</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setVerifyInputWhenFocusTarget-boolean-\" title=\"class or interface in javax.swing\">setVerifyInputWhenFocusTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setVisible-boolean-\" title=\"class or interface in javax.swing\">setVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#unregisterKeyboardAction-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">unregisterKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#update-java.awt.Graphics-\" title=\"class or interface in javax.swing\">update</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.lang.String-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">addContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addImpl-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">addImpl</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#applyComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">applyComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#areFocusTraversalKeysSet-int-\" title=\"class or interface in java.awt\">areFocusTraversalKeysSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#countComponents--\" title=\"class or interface in java.awt\">countComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#deliverEvent-java.awt.Event-\" title=\"class or interface in java.awt\">deliverEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#doLayout--\" title=\"class or interface in java.awt\">doLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-int-int-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponent-int-\" title=\"class or interface in java.awt\">getComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-int-int-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentCount--\" title=\"class or interface in java.awt\">getComponentCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponents--\" title=\"class or interface in java.awt\">getComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentZOrder-java.awt.Component-\" title=\"class or interface in java.awt\">getComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getContainerListeners--\" title=\"class or interface in java.awt\">getContainerListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalKeys-int-\" title=\"class or interface in java.awt\">getFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalPolicy--\" title=\"class or interface in java.awt\">getFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getLayout--\" title=\"class or interface in java.awt\">getLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMousePosition-boolean-\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#insets--\" title=\"class or interface in java.awt\">insets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#invalidate--\" title=\"class or interface in java.awt\">invalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isAncestorOf-java.awt.Component-\" title=\"class or interface in java.awt\">isAncestorOf</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot--\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot-java.awt.Container-\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicyProvider--\" title=\"class or interface in java.awt\">isFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicySet--\" title=\"class or interface in java.awt\">isFocusTraversalPolicySet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#layout--\" title=\"class or interface in java.awt\">layout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintStream-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintWriter-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#locate-int-int-\" title=\"class or interface in java.awt\">locate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#minimumSize--\" title=\"class or interface in java.awt\">minimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paintComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#preferredSize--\" title=\"class or interface in java.awt\">preferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#printComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">printComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processContainerEvent-java.awt.event.ContainerEvent-\" title=\"class or interface in java.awt\">processContainerEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">processEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#remove-java.awt.Component-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#remove-int-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeAll--\" title=\"class or interface in java.awt\">removeAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">removeContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setComponentZOrder-java.awt.Component-int-\" title=\"class or interface in java.awt\">setComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusCycleRoot-boolean-\" title=\"class or interface in java.awt\">setFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicy-java.awt.FocusTraversalPolicy-\" title=\"class or interface in java.awt\">setFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicyProvider-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setLayout-java.awt.LayoutManager-\" title=\"class or interface in java.awt\">setLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#transferFocusDownCycle--\" title=\"class or interface in java.awt\">transferFocusDownCycle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validate--\" title=\"class or interface in java.awt\">validate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validateTree--\" title=\"class or interface in java.awt\">validateTree</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#action-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">action</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#add-java.awt.PopupMenu-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">addComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">addFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">addHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">addHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">addInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">addKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">addMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">addMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">addMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#bounds--\" title=\"class or interface in java.awt\">bounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#coalesceEvents-java.awt.AWTEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">coalesceEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-java.awt.Point-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-java.awt.image.ImageProducer-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-int-int-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-java.awt.ImageCapabilities-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disableEvents-long-\" title=\"class or interface in java.awt\">disableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#dispatchEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">dispatchEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable-boolean-\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableEvents-long-\" title=\"class or interface in java.awt\">enableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableInputMethods-boolean-\" title=\"class or interface in java.awt\">enableInputMethods</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-byte-byte-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-double-double-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-float-float-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-long-long-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-short-short-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBackground--\" title=\"class or interface in java.awt\">getBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds--\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getColorModel--\" title=\"class or interface in java.awt\">getColorModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentListeners--\" title=\"class or interface in java.awt\">getComponentListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentOrientation--\" title=\"class or interface in java.awt\">getComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getCursor--\" title=\"class or interface in java.awt\">getCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getDropTarget--\" title=\"class or interface in java.awt\">getDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusCycleRootAncestor--\" title=\"class or interface in java.awt\">getFocusCycleRootAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusListeners--\" title=\"class or interface in java.awt\">getFocusListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusTraversalKeysEnabled--\" title=\"class or interface in java.awt\">getFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFont--\" title=\"class or interface in java.awt\">getFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getForeground--\" title=\"class or interface in java.awt\">getForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getGraphicsConfiguration--\" title=\"class or interface in java.awt\">getGraphicsConfiguration</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyBoundsListeners--\" title=\"class or interface in java.awt\">getHierarchyBoundsListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyListeners--\" title=\"class or interface in java.awt\">getHierarchyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getIgnoreRepaint--\" title=\"class or interface in java.awt\">getIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputContext--\" title=\"class or interface in java.awt\">getInputContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodListeners--\" title=\"class or interface in java.awt\">getInputMethodListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodRequests--\" title=\"class or interface in java.awt\">getInputMethodRequests</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getKeyListeners--\" title=\"class or interface in java.awt\">getKeyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocale--\" title=\"class or interface in java.awt\">getLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation--\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocationOnScreen--\" title=\"class or interface in java.awt\">getLocationOnScreen</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseListeners--\" title=\"class or interface in java.awt\">getMouseListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseMotionListeners--\" title=\"class or interface in java.awt\">getMouseMotionListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMousePosition--\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseWheelListeners--\" title=\"class or interface in java.awt\">getMouseWheelListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getName--\" title=\"class or interface in java.awt\">getName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getParent--\" title=\"class or interface in java.awt\">getParent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPeer--\" title=\"class or interface in java.awt\">getPeer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners--\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners-java.lang.String-\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize--\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getToolkit--\" title=\"class or interface in java.awt\">getToolkit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getTreeLock--\" title=\"class or interface in java.awt\">getTreeLock</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#gotFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">gotFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#handleEvent-java.awt.Event-\" title=\"class or interface in java.awt\">handleEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hasFocus--\" title=\"class or interface in java.awt\">hasFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#imageUpdate-java.awt.Image-int-int-int-int-int-\" title=\"class or interface in java.awt\">imageUpdate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#inside-int-int-\" title=\"class or interface in java.awt\">inside</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isBackgroundSet--\" title=\"class or interface in java.awt\">isBackgroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isCursorSet--\" title=\"class or interface in java.awt\">isCursorSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDisplayable--\" title=\"class or interface in java.awt\">isDisplayable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isEnabled--\" title=\"class or interface in java.awt\">isEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusable--\" title=\"class or interface in java.awt\">isFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusOwner--\" title=\"class or interface in java.awt\">isFocusOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusTraversable--\" title=\"class or interface in java.awt\">isFocusTraversable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFontSet--\" title=\"class or interface in java.awt\">isFontSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isForegroundSet--\" title=\"class or interface in java.awt\">isForegroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isLightweight--\" title=\"class or interface in java.awt\">isLightweight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMaximumSizeSet--\" title=\"class or interface in java.awt\">isMaximumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMinimumSizeSet--\" title=\"class or interface in java.awt\">isMinimumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isPreferredSizeSet--\" title=\"class or interface in java.awt\">isPreferredSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isShowing--\" title=\"class or interface in java.awt\">isShowing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isValid--\" title=\"class or interface in java.awt\">isValid</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isVisible--\" title=\"class or interface in java.awt\">isVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyDown-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyUp-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list--\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintStream-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintWriter-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#location--\" title=\"class or interface in java.awt\">location</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#lostFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">lostFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDown-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDrag-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDrag</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseEnter-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseEnter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseExit-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseExit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseMove-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseMove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseUp-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#move-int-int-\" title=\"class or interface in java.awt\">move</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#nextFocus--\" title=\"class or interface in java.awt\">nextFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#paintAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#postEvent-java.awt.Event-\" title=\"class or interface in java.awt\">postEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processComponentEvent-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt\">processComponentEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processFocusEvent-java.awt.event.FocusEvent-\" title=\"class or interface in java.awt\">processFocusEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyBoundsEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyBoundsEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processInputMethodEvent-java.awt.event.InputMethodEvent-\" title=\"class or interface in java.awt\">processInputMethodEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseWheelEvent-java.awt.event.MouseWheelEvent-\" title=\"class or interface in java.awt\">processMouseWheelEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#remove-java.awt.MenuComponent-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">removeComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">removeFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">removeHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">removeHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">removeInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">removeKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">removeMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">removeMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">removeMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint--\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-int-int-int-int-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-long-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#resize-java.awt.Dimension-\" title=\"class or interface in java.awt\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#resize-int-int-\" title=\"class or interface in java.awt\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-int-int-int-int-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">setComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setCursor-java.awt.Cursor-\" title=\"class or interface in java.awt\">setCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setDropTarget-java.awt.dnd.DropTarget-\" title=\"class or interface in java.awt\">setDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusable-boolean-\" title=\"class or interface in java.awt\">setFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusTraversalKeysEnabled-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setIgnoreRepaint-boolean-\" title=\"class or interface in java.awt\">setIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocale-java.util.Locale-\" title=\"class or interface in java.awt\">setLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-int-int-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-java.awt.Point-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setName-java.lang.String-\" title=\"class or interface in java.awt\">setName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-int-int-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show--\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show-boolean-\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#size--\" title=\"class or interface in java.awt\">size</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#toString--\" title=\"class or interface in java.awt\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocus--\" title=\"class or interface in java.awt\">transferFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusBackward--\" title=\"class or interface in java.awt\">transferFocusBackward</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusUpCycle--\" title=\"class or interface in java.awt\">transferFocusUpCycle</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"DiffImage-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>DiffImage</h4>\n<pre>public&nbsp;DiffImage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;imageFile1,\n                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;imageFile2)</pre>\n</li>\n</ul>\n<a name=\"DiffImage-java.lang.String-java.lang.String-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>DiffImage</h4>\n<pre>public&nbsp;DiffImage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;imageFile1,\n                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;imageFile2,\n                 boolean&nbsp;display)</pre>\n</li>\n</ul>\n<a name=\"DiffImage-java.awt.Image-java.awt.Image-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>DiffImage</h4>\n<pre>public&nbsp;DiffImage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;image1,\n                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;image2)</pre>\n</li>\n</ul>\n<a name=\"DiffImage-java.awt.Image-java.awt.Image-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>DiffImage</h4>\n<pre>public&nbsp;DiffImage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;image1,\n                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;image2,\n                 boolean&nbsp;display)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"countDiffPixels--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>countDiffPixels</h4>\n<pre>public&nbsp;void&nbsp;countDiffPixels()</pre>\n</li>\n</ul>\n<a name=\"display--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>display</h4>\n<pre>public&nbsp;void&nbsp;display()</pre>\n</li>\n</ul>\n<a name=\"drawImageFull-java.awt.Graphics2D-java.awt.image.BufferedImage-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>drawImageFull</h4>\n<pre>public&nbsp;void&nbsp;drawImageFull(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics2D.html?is-external=true\" title=\"class or interface in java.awt\">Graphics2D</a>&nbsp;g2,\n                          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/BufferedImage.html?is-external=true\" title=\"class or interface in java.awt.image\">BufferedImage</a>&nbsp;image)</pre>\n</li>\n</ul>\n<a name=\"paintComponent-java.awt.Graphics-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>paintComponent</h4>\n<pre>public&nbsp;void&nbsp;paintComponent(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintComponent-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintComponent</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"save-java.io.File-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>save</h4>\n<pre>public&nbsp;void&nbsp;save(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)\n          throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"save-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>save</h4>\n<pre>public&nbsp;void&nbsp;save(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)\n          throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"saveAs--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>saveAs</h4>\n<pre>public&nbsp;void&nbsp;saveAs()</pre>\n</li>\n</ul>\n<a name=\"setImage1--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setImage1</h4>\n<pre>public&nbsp;void&nbsp;setImage1()</pre>\n</li>\n</ul>\n<a name=\"setImage1-java.awt.image.BufferedImage-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setImage1</h4>\n<pre>public&nbsp;void&nbsp;setImage1(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/BufferedImage.html?is-external=true\" title=\"class or interface in java.awt.image\">BufferedImage</a>&nbsp;image)</pre>\n</li>\n</ul>\n<a name=\"setImage1-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setImage1</h4>\n<pre>public&nbsp;void&nbsp;setImage1(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)\n               throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setImage1Label-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setImage1Label</h4>\n<pre>public&nbsp;void&nbsp;setImage1Label(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</pre>\n</li>\n</ul>\n<a name=\"setImage2--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setImage2</h4>\n<pre>public&nbsp;void&nbsp;setImage2()</pre>\n</li>\n</ul>\n<a name=\"setImage2-java.awt.image.BufferedImage-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setImage2</h4>\n<pre>public&nbsp;void&nbsp;setImage2(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/BufferedImage.html?is-external=true\" title=\"class or interface in java.awt.image\">BufferedImage</a>&nbsp;image)</pre>\n</li>\n</ul>\n<a name=\"setImage2-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setImage2</h4>\n<pre>public&nbsp;void&nbsp;setImage2(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)\n               throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setImage2Label-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>setImage2Label</h4>\n<pre>public&nbsp;void&nbsp;setImage2Label(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/diff/DiffGui.html\" title=\"class in stanford.cs106.diff\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li>Next&nbsp;Class</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/diff/DiffImage.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"DiffImage.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JPanel\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.javax.swing.JComponent\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/diff/package-frame.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:36 PDT 2017 -->\n<title>stanford.cs106.diff</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<h1 class=\"bar\"><a href=\"../../../stanford/cs106/diff/package-summary.html\" target=\"classFrame\">stanford.cs106.diff</a></h1>\n<div class=\"indexContainer\">\n<h2 title=\"Classes\">Classes</h2>\n<ul title=\"Classes\">\n<li><a href=\"Diff.html\" title=\"class in stanford.cs106.diff\" target=\"classFrame\">Diff</a></li>\n<li><a href=\"Diff.Difference.html\" title=\"class in stanford.cs106.diff\" target=\"classFrame\">Diff.Difference</a></li>\n<li><a href=\"DiffCollection.html\" title=\"class in stanford.cs106.diff\" target=\"classFrame\">DiffCollection</a></li>\n<li><a href=\"DiffCollection.Difference.html\" title=\"class in stanford.cs106.diff\" target=\"classFrame\">DiffCollection.Difference</a></li>\n<li><a href=\"DiffGui.html\" title=\"class in stanford.cs106.diff\" target=\"classFrame\">DiffGui</a></li>\n<li><a href=\"DiffImage.html\" title=\"class in stanford.cs106.diff\" target=\"classFrame\">DiffImage</a></li>\n</ul>\n<h2 title=\"Enums\">Enums</h2>\n<ul title=\"Enums\">\n<li><a href=\"Diff.Difference.Type.html\" title=\"enum in stanford.cs106.diff\" target=\"classFrame\">Diff.Difference.Type</a></li>\n</ul>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/diff/package-summary.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:36 PDT 2017 -->\n<title>stanford.cs106.diff</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"stanford.cs106.diff\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li class=\"navBarCell1Rev\">Package</li>\n<li>Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/collections/package-summary.html\">Prev&nbsp;Package</a></li>\n<li><a href=\"../../../stanford/cs106/gui/package-summary.html\">Next&nbsp;Package</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/diff/package-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 title=\"Package\" class=\"title\">Package&nbsp;stanford.cs106.diff</h1>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Class Summary table, listing classes, and an explanation\">\n<caption><span>Class Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Class</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/diff/Diff.html\" title=\"class in stanford.cs106.diff\">Diff</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/diff/Diff.Difference.html\" title=\"class in stanford.cs106.diff\">Diff.Difference</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/diff/DiffCollection.html\" title=\"class in stanford.cs106.diff\">DiffCollection</a></td>\n<td class=\"colLast\">\n<div class=\"block\">Compares two collections, returning a list of the additions, changes, and\n deletions between them.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/diff/DiffCollection.Difference.html\" title=\"class in stanford.cs106.diff\">DiffCollection.Difference</a></td>\n<td class=\"colLast\">\n<div class=\"block\">Represents a difference, as used in <code>Diff</code>.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/diff/DiffGui.html\" title=\"class in stanford.cs106.diff\">DiffGui</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/diff/DiffImage.html\" title=\"class in stanford.cs106.diff\">DiffImage</a></td>\n<td class=\"colLast\">\n<div class=\"block\">This class views the difference between two images in a graphical window\n with a slider to switch between the two.</div>\n</td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Enum Summary table, listing enums, and an explanation\">\n<caption><span>Enum Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Enum</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/diff/Diff.Difference.Type.html\" title=\"enum in stanford.cs106.diff\">Diff.Difference.Type</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n</tbody>\n</table>\n</li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li class=\"navBarCell1Rev\">Package</li>\n<li>Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/collections/package-summary.html\">Prev&nbsp;Package</a></li>\n<li><a href=\"../../../stanford/cs106/gui/package-summary.html\">Next&nbsp;Package</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/diff/package-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/diff/package-tree.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:36 PDT 2017 -->\n<title>stanford.cs106.diff Class Hierarchy</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"stanford.cs106.diff Class Hierarchy\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/collections/package-tree.html\">Prev</a></li>\n<li><a href=\"../../../stanford/cs106/gui/package-tree.html\">Next</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/diff/package-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 class=\"title\">Hierarchy For Package stanford.cs106.diff</h1>\n<span class=\"packageHierarchyLabel\">Package Hierarchies:</span>\n<ul class=\"horizontal\">\n<li><a href=\"../../../overview-tree.html\">All Packages</a></li>\n</ul>\n</div>\n<div class=\"contentContainer\">\n<h2 title=\"Class Hierarchy\">Class Hierarchy</h2>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Object</span></a>\n<ul>\n<li type=\"circle\">java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\"><span class=\"typeNameLink\">Component</span></a> (implements java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\"><span class=\"typeNameLink\">Container</span></a>\n<ul>\n<li type=\"circle\">javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\"><span class=\"typeNameLink\">JComponent</span></a> (implements java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\"><span class=\"typeNameLink\">JPanel</span></a> (implements javax.accessibility.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>)\n<ul>\n<li type=\"circle\">stanford.cs106.diff.<a href=\"../../../stanford/cs106/diff/DiffImage.html\" title=\"class in stanford.cs106.diff\"><span class=\"typeNameLink\">DiffImage</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li type=\"circle\">stanford.cs106.diff.<a href=\"../../../stanford/cs106/diff/Diff.html\" title=\"class in stanford.cs106.diff\"><span class=\"typeNameLink\">Diff</span></a></li>\n<li type=\"circle\">stanford.cs106.diff.<a href=\"../../../stanford/cs106/diff/Diff.Difference.html\" title=\"class in stanford.cs106.diff\"><span class=\"typeNameLink\">Diff.Difference</span></a></li>\n<li type=\"circle\">stanford.cs106.diff.<a href=\"../../../stanford/cs106/diff/DiffCollection.html\" title=\"class in stanford.cs106.diff\"><span class=\"typeNameLink\">DiffCollection</span></a></li>\n<li type=\"circle\">stanford.cs106.diff.<a href=\"../../../stanford/cs106/diff/DiffCollection.Difference.html\" title=\"class in stanford.cs106.diff\"><span class=\"typeNameLink\">DiffCollection.Difference</span></a></li>\n<li type=\"circle\">stanford.cs106.diff.<a href=\"../../../stanford/cs106/diff/DiffGui.html\" title=\"class in stanford.cs106.diff\"><span class=\"typeNameLink\">DiffGui</span></a> (implements java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/AdjustmentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">AdjustmentListener</a>)</li>\n</ul>\n</li>\n</ul>\n<h2 title=\"Enum Hierarchy\">Enum Hierarchy</h2>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Object</span></a>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Enum</span></a>&lt;E&gt; (implements java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;T&gt;, java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">stanford.cs106.diff.<a href=\"../../../stanford/cs106/diff/Diff.Difference.Type.html\" title=\"enum in stanford.cs106.diff\"><span class=\"typeNameLink\">Diff.Difference.Type</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/collections/package-tree.html\">Prev</a></li>\n<li><a href=\"../../../stanford/cs106/gui/package-tree.html\">Next</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/diff/package-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/gui/ClipboardUtils.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:03 PDT 2017 -->\n<title>ClipboardUtils</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"ClipboardUtils\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9,\"i2\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Class</li>\n<li><a href=\"../../../stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/gui/ClipboardUtils.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ClipboardUtils.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.gui</div>\n<h2 title=\"Class ClipboardUtils\" class=\"title\">Class ClipboardUtils</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.gui.ClipboardUtils</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public final class <span class=\"typeNameLabel\">ClipboardUtils</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n<div class=\"block\">Utility methods to set and get the state of the current OS clipboard.</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/ClipboardUtils.html#copy-java.lang.String-\">copy</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</code>\n<div class=\"block\">Sets the clipboard to store the given text.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/ClipboardUtils.html#get--\">get</a></span>()</code>\n<div class=\"block\">Returns the current contents of the clipboard.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/ClipboardUtils.html#isEmpty--\">isEmpty</a></span>()</code>\n<div class=\"block\">Returns true if the clipboard currently does not contain any text.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"copy-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>copy</h4>\n<pre>public static&nbsp;void&nbsp;copy(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</pre>\n<div class=\"block\">Sets the clipboard to store the given text.\n Equivalent to a Ctrl+C \"copy\" operation.</div>\n</li>\n</ul>\n<a name=\"get--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>get</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;get()</pre>\n<div class=\"block\">Returns the current contents of the clipboard.\n If the clipboard contains no contents, returns an empty string.</div>\n</li>\n</ul>\n<a name=\"isEmpty--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>isEmpty</h4>\n<pre>public static&nbsp;boolean&nbsp;isEmpty()</pre>\n<div class=\"block\">Returns true if the clipboard currently does not contain any text.</div>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Class</li>\n<li><a href=\"../../../stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/gui/ClipboardUtils.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ClipboardUtils.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/gui/GuiUtils.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:03 PDT 2017 -->\n<title>GuiUtils</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GuiUtils\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9,\"i2\":9,\"i3\":9,\"i4\":9,\"i5\":9,\"i6\":9,\"i7\":9,\"i8\":9,\"i9\":9,\"i10\":9,\"i11\":9,\"i12\":9,\"i13\":9,\"i14\":9,\"i15\":9,\"i16\":9,\"i17\":9,\"i18\":9,\"i19\":9,\"i20\":9,\"i21\":9,\"i22\":9,\"i23\":9,\"i24\":9,\"i25\":9,\"i26\":9,\"i27\":9,\"i28\":9,\"i29\":9,\"i30\":9,\"i31\":9,\"i32\":9,\"i33\":9,\"i34\":9,\"i35\":9,\"i36\":9,\"i37\":9,\"i38\":9,\"i39\":9,\"i40\":9,\"i41\":9,\"i42\":9,\"i43\":9,\"i44\":9,\"i45\":9,\"i46\":9,\"i47\":9,\"i48\":9,\"i49\":9,\"i50\":9,\"i51\":9,\"i52\":9,\"i53\":9,\"i54\":9,\"i55\":9,\"i56\":9,\"i57\":9,\"i58\":9,\"i59\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/gui/ClipboardUtils.html\" title=\"class in stanford.cs106.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/gui/JComboGroupBox.html\" title=\"class in stanford.cs106.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/gui/GuiUtils.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GuiUtils.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.gui</div>\n<h2 title=\"Class GuiUtils\" class=\"title\">Class GuiUtils</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.gui.GuiUtils</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GuiUtils</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#SETTINGS_FILENAME\">SETTINGS_FILENAME</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#addKeyListenerRecursive-java.awt.Component-java.awt.event.KeyListener-\">addKeyListenerRecursive</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;component,\n                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>&nbsp;listener)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#addResizeListener-acm.program.Program-\">addResizeListener</a></span>(<a href=\"../../../acm/program/Program.html\" title=\"class in acm.program\">Program</a>&nbsp;program)</code>\n<div class=\"block\">Sets up the given program so that its componentResized method will be\n called whenever the window resizes.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#centerWindow-java.awt.Window-\">centerWindow</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true\" title=\"class or interface in java.awt\">Window</a>&nbsp;window)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#centerWindowWithin-java.awt.Window-java.awt.Component-\">centerWindowWithin</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true\" title=\"class or interface in java.awt\">Window</a>&nbsp;window,\n                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;parent)</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JButton.html?is-external=true\" title=\"class or interface in javax.swing\">JButton</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#createButton-java.lang.String-char-java.awt.event.ActionListener-\">createButton</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n            char&nbsp;mnemonic,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener)</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JButton.html?is-external=true\" title=\"class or interface in javax.swing\">JButton</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#createButton-java.lang.String-char-java.awt.event.ActionListener-java.awt.Container-\">createButton</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n            char&nbsp;mnemonic,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&nbsp;container)</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JButton.html?is-external=true\" title=\"class or interface in javax.swing\">JButton</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#createButton-java.lang.String-java.lang.String-char-java.awt.event.ActionListener-\">createButton</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actionCommand,\n            char&nbsp;mnemonic,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener)</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JButton.html?is-external=true\" title=\"class or interface in javax.swing\">JButton</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#createButton-java.lang.String-java.lang.String-char-java.awt.event.ActionListener-java.awt.Container-\">createButton</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actionCommand,\n            char&nbsp;mnemonic,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&nbsp;container)</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JButton.html?is-external=true\" title=\"class or interface in javax.swing\">JButton</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#createButton-java.lang.String-java.lang.String-java.lang.String-char-java.awt.event.ActionListener-\">createButton</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actionCommand,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;icon,\n            char&nbsp;mnemonic,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener)</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JButton.html?is-external=true\" title=\"class or interface in javax.swing\">JButton</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#createButton-java.lang.String-java.lang.String-java.lang.String-char-java.awt.event.ActionListener-java.awt.Container-\">createButton</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actionCommand,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;icon,\n            char&nbsp;mnemonic,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&nbsp;container)</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/ButtonGroup.html?is-external=true\" title=\"class or interface in javax.swing\">ButtonGroup</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#createButtonGroup-java.awt.event.ActionListener-java.lang.String...-\">createButtonGroup</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener,\n                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;items)</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JCheckBox.html?is-external=true\" title=\"class or interface in javax.swing\">JCheckBox</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#createCheckBox-java.lang.String-java.awt.event.ActionListener-\">createCheckBox</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actionCommand,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener)</code>&nbsp;</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JCheckBox.html?is-external=true\" title=\"class or interface in javax.swing\">JCheckBox</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#createCheckBox-java.lang.String-boolean-java.awt.event.ActionListener-\">createCheckBox</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actionCommand,\n              boolean&nbsp;checked,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener)</code>&nbsp;</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JCheckBox.html?is-external=true\" title=\"class or interface in javax.swing\">JCheckBox</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#createCheckBox-java.lang.String-char-java.awt.event.ActionListener-java.awt.Container-\">createCheckBox</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actionCommand,\n              char&nbsp;mnemonic,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&nbsp;container)</code>&nbsp;</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JCheckBox.html?is-external=true\" title=\"class or interface in javax.swing\">JCheckBox</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#createCheckBox-java.lang.String-char-boolean-\">createCheckBox</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actionCommand,\n              char&nbsp;mnemonic,\n              boolean&nbsp;checked)</code>&nbsp;</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JCheckBox.html?is-external=true\" title=\"class or interface in javax.swing\">JCheckBox</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#createCheckBox-java.lang.String-char-boolean-java.awt.event.ActionListener-\">createCheckBox</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actionCommand,\n              char&nbsp;mnemonic,\n              boolean&nbsp;checked,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener)</code>&nbsp;</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JCheckBox.html?is-external=true\" title=\"class or interface in javax.swing\">JCheckBox</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#createCheckBox-java.lang.String-char-boolean-java.awt.event.ActionListener-java.awt.Container-\">createCheckBox</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actionCommand,\n              char&nbsp;mnemonic,\n              boolean&nbsp;checked,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&nbsp;container)</code>&nbsp;</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JCheckBox.html?is-external=true\" title=\"class or interface in javax.swing\">JCheckBox</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#createCheckBox-java.lang.String-java.lang.String-char-java.awt.event.ActionListener-\">createCheckBox</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actionCommand,\n              char&nbsp;mnemonic,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener)</code>&nbsp;</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JCheckBox.html?is-external=true\" title=\"class or interface in javax.swing\">JCheckBox</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#createCheckBox-java.lang.String-java.lang.String-char-boolean-java.awt.event.ActionListener-\">createCheckBox</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actionCommand,\n              char&nbsp;mnemonic,\n              boolean&nbsp;checked,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener)</code>&nbsp;</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JCheckBox.html?is-external=true\" title=\"class or interface in javax.swing\">JCheckBox</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#createCheckBox-java.lang.String-java.lang.String-char-boolean-java.awt.event.ActionListener-java.awt.Container-\">createCheckBox</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actionCommand,\n              char&nbsp;mnemonic,\n              boolean&nbsp;checked,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&nbsp;container)</code>&nbsp;</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JCheckBoxMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JCheckBoxMenuItem</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#createCheckBoxMenuItem-java.lang.String-java.awt.event.ActionListener-javax.swing.JMenu-\">createCheckBoxMenuItem</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n                      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener,\n                      <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenu.html?is-external=true\" title=\"class or interface in javax.swing\">JMenu</a>&nbsp;menu)</code>&nbsp;</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JCheckBoxMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JCheckBoxMenuItem</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#createCheckBoxMenuItem-java.lang.String-boolean-java.awt.event.ActionListener-javax.swing.JMenu-\">createCheckBoxMenuItem</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n                      boolean&nbsp;checked,\n                      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener,\n                      <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenu.html?is-external=true\" title=\"class or interface in javax.swing\">JMenu</a>&nbsp;menu)</code>&nbsp;</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JCheckBoxMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JCheckBoxMenuItem</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#createCheckBoxMenuItem-java.lang.String-char-boolean-java.awt.event.ActionListener-javax.swing.JMenu-\">createCheckBoxMenuItem</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n                      char&nbsp;mnemonic,\n                      boolean&nbsp;checked,\n                      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener,\n                      <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenu.html?is-external=true\" title=\"class or interface in javax.swing\">JMenu</a>&nbsp;menu)</code>&nbsp;</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true\" title=\"class or interface in javax.swing\">JComboBox</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#createComboBox-java.lang.String-java.awt.event.ActionListener-java.lang.String...-\">createComboBox</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actionCommand,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;items)</code>&nbsp;</td>\n</tr>\n<tr id=\"i24\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../../stanford/cs106/gui/JComboGroupBox.html\" title=\"class in stanford.cs106.gui\">JComboGroupBox</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#createComboGroupBox-java.lang.String-java.awt.event.ActionListener-java.lang.String...-\">createComboGroupBox</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actionCommand,\n                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener,\n                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;items)</code>&nbsp;</td>\n</tr>\n<tr id=\"i25\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JLabel.html?is-external=true\" title=\"class or interface in javax.swing\">JLabel</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#createLabel-java.lang.String-int-\">createLabel</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n           int&nbsp;width)</code>&nbsp;</td>\n</tr>\n<tr id=\"i26\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JLabel.html?is-external=true\" title=\"class or interface in javax.swing\">JLabel</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#createLabel-java.lang.String-int-boolean-\">createLabel</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n           int&nbsp;width,\n           boolean&nbsp;rightAligned)</code>&nbsp;</td>\n</tr>\n<tr id=\"i27\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenu.html?is-external=true\" title=\"class or interface in javax.swing\">JMenu</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#createMenu-java.lang.String-char-javax.swing.JMenuBar-\">createMenu</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n          char&nbsp;mnemonic,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuBar</a>&nbsp;bar)</code>&nbsp;</td>\n</tr>\n<tr id=\"i28\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenu.html?is-external=true\" title=\"class or interface in javax.swing\">JMenu</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#createMenu-java.lang.String-javax.swing.JMenuBar-\">createMenu</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuBar</a>&nbsp;bar)</code>&nbsp;</td>\n</tr>\n<tr id=\"i29\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuItem</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#createMenuItem-java.lang.String-java.awt.event.ActionListener-javax.swing.JMenu-\">createMenuItem</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenu.html?is-external=true\" title=\"class or interface in javax.swing\">JMenu</a>&nbsp;menu)</code>&nbsp;</td>\n</tr>\n<tr id=\"i30\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuItem</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#createMenuItem-java.lang.String-char-java.awt.event.ActionListener-javax.swing.JMenu-\">createMenuItem</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n              char&nbsp;mnemonic,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenu.html?is-external=true\" title=\"class or interface in javax.swing\">JMenu</a>&nbsp;menu)</code>&nbsp;</td>\n</tr>\n<tr id=\"i31\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#createPanel-java.awt.Component...-\">createPanel</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>...&nbsp;components)</code>&nbsp;</td>\n</tr>\n<tr id=\"i32\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#createPanel-java.awt.LayoutManager-java.awt.Component...-\">createPanel</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/LayoutManager.html?is-external=true\" title=\"class or interface in java.awt\">LayoutManager</a>&nbsp;layout,\n           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>...&nbsp;components)</code>&nbsp;</td>\n</tr>\n<tr id=\"i33\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JRadioButton.html?is-external=true\" title=\"class or interface in javax.swing\">JRadioButton</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#createRadioButton-java.lang.String-char-boolean-javax.swing.ButtonGroup-java.awt.event.ActionListener-java.awt.Container-\">createRadioButton</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n                 char&nbsp;mnemonic,\n                 boolean&nbsp;selected,\n                 <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/ButtonGroup.html?is-external=true\" title=\"class or interface in javax.swing\">ButtonGroup</a>&nbsp;group,\n                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listen,\n                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&nbsp;panel)</code>&nbsp;</td>\n</tr>\n<tr id=\"i34\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JSlider.html?is-external=true\" title=\"class or interface in javax.swing\">JSlider</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#createSlider-int-int-int-int-int-javax.swing.event.ChangeListener-java.awt.Container-\">createSlider</a></span>(int&nbsp;min,\n            int&nbsp;max,\n            int&nbsp;initial,\n            int&nbsp;majorTick,\n            int&nbsp;minorTick,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeListener</a>&nbsp;listen,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&nbsp;panel)</code>&nbsp;</td>\n</tr>\n<tr id=\"i35\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#errorDialog-java.awt.Component-java.lang.String-\">errorDialog</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</code>&nbsp;</td>\n</tr>\n<tr id=\"i36\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#errorDialog-java.awt.Component-java.lang.String-java.lang.Throwable-\">errorDialog</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;th)</code>&nbsp;</td>\n</tr>\n<tr id=\"i37\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#errorDialog-java.awt.Component-java.lang.Throwable-\">errorDialog</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;th)</code>&nbsp;</td>\n</tr>\n<tr id=\"i38\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#errorDialog-java.lang.String-\">errorDialog</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</code>&nbsp;</td>\n</tr>\n<tr id=\"i39\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#errorDialog-java.lang.Throwable-\">errorDialog</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;th)</code>&nbsp;</td>\n</tr>\n<tr id=\"i40\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Icon.html?is-external=true\" title=\"class or interface in javax.swing\">Icon</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#extractOptionPaneIcon-java.lang.String-\">extractOptionPaneIcon</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</code>&nbsp;</td>\n</tr>\n<tr id=\"i41\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#forgetWindowLocation-java.awt.Frame-\">forgetWindowLocation</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true\" title=\"class or interface in java.awt\">Frame</a>&nbsp;window)</code>&nbsp;</td>\n</tr>\n<tr id=\"i42\" class=\"altColor\">\n<td class=\"colFirst\"><code>static &lt;C extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&gt;<br>C</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#getAncestor-java.awt.Component-java.lang.Class-\">getAncestor</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;C&gt;&nbsp;type)</code>\n<div class=\"block\">Looks upward at parent containers of the given component until it finds one of the given type or\n any subclass of the given type, and returns it.</div>\n</td>\n</tr>\n<tr id=\"i43\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static &lt;JC extends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&gt;<br>JC</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#getDescendent-java.awt.Container-java.lang.Class-\">getDescendent</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&nbsp;container,\n             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;JC&gt;&nbsp;type)</code>\n<div class=\"block\">Returns first found descendent of given type within the given container; null if not found.</div>\n</td>\n</tr>\n<tr id=\"i44\" class=\"altColor\">\n<td class=\"colFirst\"><code>static &lt;JC extends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&gt;<br><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;JC&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#getDescendents-java.awt.Container-java.lang.Class-\">getDescendents</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&nbsp;container,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;JC&gt;&nbsp;type)</code>&nbsp;</td>\n</tr>\n<tr id=\"i45\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/filechooser/FileFilter.html?is-external=true\" title=\"class or interface in javax.swing.filechooser\">FileFilter</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#getExtensionFileFilter-java.lang.String-java.lang.String...-\">getExtensionFileFilter</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;description,\n                      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;extensions)</code>&nbsp;</td>\n</tr>\n<tr id=\"i46\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#growFont-javax.swing.JComponent-\">growFont</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&nbsp;button)</code>&nbsp;</td>\n</tr>\n<tr id=\"i47\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#growFont-javax.swing.JComponent-int-\">growFont</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&nbsp;button,\n        int&nbsp;amount)</code>&nbsp;</td>\n</tr>\n<tr id=\"i48\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#heighten-javax.swing.JComponent-int-\">heighten</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&nbsp;component,\n        int&nbsp;px)</code>&nbsp;</td>\n</tr>\n<tr id=\"i49\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#loadWindowLocation-java.awt.Frame-\">loadWindowLocation</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true\" title=\"class or interface in java.awt\">Frame</a>&nbsp;window)</code>&nbsp;</td>\n</tr>\n<tr id=\"i50\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#pad-javax.swing.JComponent-int-int-\">pad</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&nbsp;component,\n   int&nbsp;w,\n   int&nbsp;h)</code>&nbsp;</td>\n</tr>\n<tr id=\"i51\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#printComponentHierarchy-java.awt.Component-\">printComponentHierarchy</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp)</code>&nbsp;</td>\n</tr>\n<tr id=\"i52\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#rememberWindowLocation-java.awt.Frame-\">rememberWindowLocation</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true\" title=\"class or interface in java.awt\">Frame</a>&nbsp;window)</code>&nbsp;</td>\n</tr>\n<tr id=\"i53\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#setPreferredHeight-javax.swing.JComponent-int-\">setPreferredHeight</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&nbsp;comp,\n                  int&nbsp;height)</code>&nbsp;</td>\n</tr>\n<tr id=\"i54\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#setPreferredWidth-javax.swing.JComponent-int-\">setPreferredWidth</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&nbsp;comp,\n                 int&nbsp;width)</code>&nbsp;</td>\n</tr>\n<tr id=\"i55\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#setSystemLookAndFeel--\">setSystemLookAndFeel</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i56\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#shiftPreferredSize-javax.swing.JComponent-int-int-\">shiftPreferredSize</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&nbsp;comp,\n                  int&nbsp;dw,\n                  int&nbsp;dh)</code>&nbsp;</td>\n</tr>\n<tr id=\"i57\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#shrinkFont-javax.swing.JComponent-\">shrinkFont</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&nbsp;button)</code>&nbsp;</td>\n</tr>\n<tr id=\"i58\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#shrinkFont-javax.swing.JComponent-int-\">shrinkFont</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&nbsp;button,\n          int&nbsp;amount)</code>&nbsp;</td>\n</tr>\n<tr id=\"i59\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html#widen-javax.swing.JComponent-int-\">widen</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&nbsp;component,\n     int&nbsp;px)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"SETTINGS_FILENAME\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>SETTINGS_FILENAME</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> SETTINGS_FILENAME</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#stanford.cs106.gui.GuiUtils.SETTINGS_FILENAME\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"addKeyListenerRecursive-java.awt.Component-java.awt.event.KeyListener-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addKeyListenerRecursive</h4>\n<pre>public static&nbsp;void&nbsp;addKeyListenerRecursive(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;component,\n                                           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>&nbsp;listener)</pre>\n</li>\n</ul>\n<a name=\"addResizeListener-acm.program.Program-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addResizeListener</h4>\n<pre>public static&nbsp;void&nbsp;addResizeListener(<a href=\"../../../acm/program/Program.html\" title=\"class in acm.program\">Program</a>&nbsp;program)</pre>\n<div class=\"block\">Sets up the given program so that its componentResized method will be\n called whenever the window resizes.\n The given program must implement the ResizeListener interface.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>program</code> - the program to listen to</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassCastException.html?is-external=true\" title=\"class or interface in java.lang\">ClassCastException</a></code> - if the given program does not implement the\n                            ResizeListener interface.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"centerWindow-java.awt.Window-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>centerWindow</h4>\n<pre>public static&nbsp;void&nbsp;centerWindow(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true\" title=\"class or interface in java.awt\">Window</a>&nbsp;window)</pre>\n</li>\n</ul>\n<a name=\"centerWindowWithin-java.awt.Window-java.awt.Component-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>centerWindowWithin</h4>\n<pre>public static&nbsp;void&nbsp;centerWindowWithin(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true\" title=\"class or interface in java.awt\">Window</a>&nbsp;window,\n                                      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;parent)</pre>\n</li>\n</ul>\n<a name=\"createButton-java.lang.String-char-java.awt.event.ActionListener-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createButton</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JButton.html?is-external=true\" title=\"class or interface in javax.swing\">JButton</a>&nbsp;createButton(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n                                   char&nbsp;mnemonic,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener)</pre>\n</li>\n</ul>\n<a name=\"createButton-java.lang.String-char-java.awt.event.ActionListener-java.awt.Container-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createButton</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JButton.html?is-external=true\" title=\"class or interface in javax.swing\">JButton</a>&nbsp;createButton(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n                                   char&nbsp;mnemonic,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&nbsp;container)</pre>\n</li>\n</ul>\n<a name=\"createButton-java.lang.String-java.lang.String-char-java.awt.event.ActionListener-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createButton</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JButton.html?is-external=true\" title=\"class or interface in javax.swing\">JButton</a>&nbsp;createButton(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actionCommand,\n                                   char&nbsp;mnemonic,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener)</pre>\n</li>\n</ul>\n<a name=\"createButton-java.lang.String-java.lang.String-char-java.awt.event.ActionListener-java.awt.Container-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createButton</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JButton.html?is-external=true\" title=\"class or interface in javax.swing\">JButton</a>&nbsp;createButton(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actionCommand,\n                                   char&nbsp;mnemonic,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&nbsp;container)</pre>\n</li>\n</ul>\n<a name=\"createButton-java.lang.String-java.lang.String-java.lang.String-char-java.awt.event.ActionListener-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createButton</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JButton.html?is-external=true\" title=\"class or interface in javax.swing\">JButton</a>&nbsp;createButton(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actionCommand,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;icon,\n                                   char&nbsp;mnemonic,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener)</pre>\n</li>\n</ul>\n<a name=\"createButton-java.lang.String-java.lang.String-java.lang.String-char-java.awt.event.ActionListener-java.awt.Container-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createButton</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JButton.html?is-external=true\" title=\"class or interface in javax.swing\">JButton</a>&nbsp;createButton(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actionCommand,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;icon,\n                                   char&nbsp;mnemonic,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&nbsp;container)</pre>\n</li>\n</ul>\n<a name=\"createButtonGroup-java.awt.event.ActionListener-java.lang.String...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createButtonGroup</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/ButtonGroup.html?is-external=true\" title=\"class or interface in javax.swing\">ButtonGroup</a>&nbsp;createButtonGroup(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener,\n                                            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;items)</pre>\n</li>\n</ul>\n<a name=\"createCheckBox-java.lang.String-java.awt.event.ActionListener-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createCheckBox</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JCheckBox.html?is-external=true\" title=\"class or interface in javax.swing\">JCheckBox</a>&nbsp;createCheckBox(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actionCommand,\n                                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener)</pre>\n</li>\n</ul>\n<a name=\"createCheckBox-java.lang.String-java.lang.String-char-java.awt.event.ActionListener-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createCheckBox</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JCheckBox.html?is-external=true\" title=\"class or interface in javax.swing\">JCheckBox</a>&nbsp;createCheckBox(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n                                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actionCommand,\n                                       char&nbsp;mnemonic,\n                                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener)</pre>\n</li>\n</ul>\n<a name=\"createCheckBox-java.lang.String-boolean-java.awt.event.ActionListener-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createCheckBox</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JCheckBox.html?is-external=true\" title=\"class or interface in javax.swing\">JCheckBox</a>&nbsp;createCheckBox(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actionCommand,\n                                       boolean&nbsp;checked,\n                                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener)</pre>\n</li>\n</ul>\n<a name=\"createCheckBox-java.lang.String-char-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createCheckBox</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JCheckBox.html?is-external=true\" title=\"class or interface in javax.swing\">JCheckBox</a>&nbsp;createCheckBox(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actionCommand,\n                                       char&nbsp;mnemonic,\n                                       boolean&nbsp;checked)</pre>\n</li>\n</ul>\n<a name=\"createCheckBox-java.lang.String-char-boolean-java.awt.event.ActionListener-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createCheckBox</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JCheckBox.html?is-external=true\" title=\"class or interface in javax.swing\">JCheckBox</a>&nbsp;createCheckBox(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actionCommand,\n                                       char&nbsp;mnemonic,\n                                       boolean&nbsp;checked,\n                                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener)</pre>\n</li>\n</ul>\n<a name=\"createCheckBox-java.lang.String-java.lang.String-char-boolean-java.awt.event.ActionListener-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createCheckBox</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JCheckBox.html?is-external=true\" title=\"class or interface in javax.swing\">JCheckBox</a>&nbsp;createCheckBox(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n                                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actionCommand,\n                                       char&nbsp;mnemonic,\n                                       boolean&nbsp;checked,\n                                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener)</pre>\n</li>\n</ul>\n<a name=\"createCheckBox-java.lang.String-char-java.awt.event.ActionListener-java.awt.Container-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createCheckBox</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JCheckBox.html?is-external=true\" title=\"class or interface in javax.swing\">JCheckBox</a>&nbsp;createCheckBox(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actionCommand,\n                                       char&nbsp;mnemonic,\n                                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener,\n                                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&nbsp;container)</pre>\n</li>\n</ul>\n<a name=\"createCheckBox-java.lang.String-char-boolean-java.awt.event.ActionListener-java.awt.Container-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createCheckBox</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JCheckBox.html?is-external=true\" title=\"class or interface in javax.swing\">JCheckBox</a>&nbsp;createCheckBox(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actionCommand,\n                                       char&nbsp;mnemonic,\n                                       boolean&nbsp;checked,\n                                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener,\n                                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&nbsp;container)</pre>\n</li>\n</ul>\n<a name=\"createCheckBox-java.lang.String-java.lang.String-char-boolean-java.awt.event.ActionListener-java.awt.Container-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createCheckBox</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JCheckBox.html?is-external=true\" title=\"class or interface in javax.swing\">JCheckBox</a>&nbsp;createCheckBox(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n                                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actionCommand,\n                                       char&nbsp;mnemonic,\n                                       boolean&nbsp;checked,\n                                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener,\n                                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&nbsp;container)</pre>\n</li>\n</ul>\n<a name=\"createComboBox-java.lang.String-java.awt.event.ActionListener-java.lang.String...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createComboBox</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true\" title=\"class or interface in javax.swing\">JComboBox</a>&nbsp;createComboBox(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actionCommand,\n                                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener,\n                                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;items)</pre>\n</li>\n</ul>\n<a name=\"createComboGroupBox-java.lang.String-java.awt.event.ActionListener-java.lang.String...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createComboGroupBox</h4>\n<pre>public static&nbsp;<a href=\"../../../stanford/cs106/gui/JComboGroupBox.html\" title=\"class in stanford.cs106.gui\">JComboGroupBox</a>&nbsp;createComboGroupBox(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actionCommand,\n                                                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener,\n                                                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;items)</pre>\n</li>\n</ul>\n<a name=\"createMenu-java.lang.String-javax.swing.JMenuBar-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createMenu</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenu.html?is-external=true\" title=\"class or interface in javax.swing\">JMenu</a>&nbsp;createMenu(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n                               <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuBar</a>&nbsp;bar)</pre>\n</li>\n</ul>\n<a name=\"createMenu-java.lang.String-char-javax.swing.JMenuBar-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createMenu</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenu.html?is-external=true\" title=\"class or interface in javax.swing\">JMenu</a>&nbsp;createMenu(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n                               char&nbsp;mnemonic,\n                               <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuBar</a>&nbsp;bar)</pre>\n</li>\n</ul>\n<a name=\"createMenuItem-java.lang.String-java.awt.event.ActionListener-javax.swing.JMenu-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createMenuItem</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuItem</a>&nbsp;createMenuItem(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n                                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener,\n                                       <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenu.html?is-external=true\" title=\"class or interface in javax.swing\">JMenu</a>&nbsp;menu)</pre>\n</li>\n</ul>\n<a name=\"createMenuItem-java.lang.String-char-java.awt.event.ActionListener-javax.swing.JMenu-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createMenuItem</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuItem</a>&nbsp;createMenuItem(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n                                       char&nbsp;mnemonic,\n                                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener,\n                                       <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenu.html?is-external=true\" title=\"class or interface in javax.swing\">JMenu</a>&nbsp;menu)</pre>\n</li>\n</ul>\n<a name=\"createCheckBoxMenuItem-java.lang.String-java.awt.event.ActionListener-javax.swing.JMenu-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createCheckBoxMenuItem</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JCheckBoxMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JCheckBoxMenuItem</a>&nbsp;createCheckBoxMenuItem(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n                                                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener,\n                                                       <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenu.html?is-external=true\" title=\"class or interface in javax.swing\">JMenu</a>&nbsp;menu)</pre>\n</li>\n</ul>\n<a name=\"createCheckBoxMenuItem-java.lang.String-boolean-java.awt.event.ActionListener-javax.swing.JMenu-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createCheckBoxMenuItem</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JCheckBoxMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JCheckBoxMenuItem</a>&nbsp;createCheckBoxMenuItem(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n                                                       boolean&nbsp;checked,\n                                                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener,\n                                                       <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenu.html?is-external=true\" title=\"class or interface in javax.swing\">JMenu</a>&nbsp;menu)</pre>\n</li>\n</ul>\n<a name=\"createCheckBoxMenuItem-java.lang.String-char-boolean-java.awt.event.ActionListener-javax.swing.JMenu-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createCheckBoxMenuItem</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JCheckBoxMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JCheckBoxMenuItem</a>&nbsp;createCheckBoxMenuItem(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n                                                       char&nbsp;mnemonic,\n                                                       boolean&nbsp;checked,\n                                                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener,\n                                                       <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenu.html?is-external=true\" title=\"class or interface in javax.swing\">JMenu</a>&nbsp;menu)</pre>\n</li>\n</ul>\n<a name=\"createPanel-java.awt.Component...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createPanel</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a>&nbsp;createPanel(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>...&nbsp;components)</pre>\n</li>\n</ul>\n<a name=\"createPanel-java.awt.LayoutManager-java.awt.Component...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createPanel</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a>&nbsp;createPanel(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/LayoutManager.html?is-external=true\" title=\"class or interface in java.awt\">LayoutManager</a>&nbsp;layout,\n                                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>...&nbsp;components)</pre>\n</li>\n</ul>\n<a name=\"createRadioButton-java.lang.String-char-boolean-javax.swing.ButtonGroup-java.awt.event.ActionListener-java.awt.Container-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createRadioButton</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JRadioButton.html?is-external=true\" title=\"class or interface in javax.swing\">JRadioButton</a>&nbsp;createRadioButton(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n                                             char&nbsp;mnemonic,\n                                             boolean&nbsp;selected,\n                                             <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/ButtonGroup.html?is-external=true\" title=\"class or interface in javax.swing\">ButtonGroup</a>&nbsp;group,\n                                             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listen,\n                                             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&nbsp;panel)</pre>\n</li>\n</ul>\n<a name=\"createSlider-int-int-int-int-int-javax.swing.event.ChangeListener-java.awt.Container-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createSlider</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JSlider.html?is-external=true\" title=\"class or interface in javax.swing\">JSlider</a>&nbsp;createSlider(int&nbsp;min,\n                                   int&nbsp;max,\n                                   int&nbsp;initial,\n                                   int&nbsp;majorTick,\n                                   int&nbsp;minorTick,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeListener</a>&nbsp;listen,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&nbsp;panel)</pre>\n</li>\n</ul>\n<a name=\"getExtensionFileFilter-java.lang.String-java.lang.String...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getExtensionFileFilter</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/filechooser/FileFilter.html?is-external=true\" title=\"class or interface in javax.swing.filechooser\">FileFilter</a>&nbsp;getExtensionFileFilter(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;description,\n                                                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;extensions)</pre>\n</li>\n</ul>\n<a name=\"createLabel-java.lang.String-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createLabel</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JLabel.html?is-external=true\" title=\"class or interface in javax.swing\">JLabel</a>&nbsp;createLabel(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n                                 int&nbsp;width)</pre>\n</li>\n</ul>\n<a name=\"createLabel-java.lang.String-int-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createLabel</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JLabel.html?is-external=true\" title=\"class or interface in javax.swing\">JLabel</a>&nbsp;createLabel(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n                                 int&nbsp;width,\n                                 boolean&nbsp;rightAligned)</pre>\n</li>\n</ul>\n<a name=\"getAncestor-java.awt.Component-java.lang.Class-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getAncestor</h4>\n<pre>public static&nbsp;&lt;C extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&gt;&nbsp;C&nbsp;getAncestor(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n                                                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;C&gt;&nbsp;type)</pre>\n<div class=\"block\">Looks upward at parent containers of the given component until it finds one of the given type or\n any subclass of the given type, and returns it.  If none found, returns null.</div>\n</li>\n</ul>\n<a name=\"getDescendent-java.awt.Container-java.lang.Class-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getDescendent</h4>\n<pre>public static&nbsp;&lt;JC extends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&gt;&nbsp;JC&nbsp;getDescendent(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&nbsp;container,\n                                                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;JC&gt;&nbsp;type)</pre>\n<div class=\"block\">Returns first found descendent of given type within the given container; null if not found.</div>\n</li>\n</ul>\n<a name=\"getDescendents-java.awt.Container-java.lang.Class-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getDescendents</h4>\n<pre>public static&nbsp;&lt;JC extends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&gt;&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;JC&gt;&nbsp;getDescendents(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&nbsp;container,\n                                                             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;JC&gt;&nbsp;type)</pre>\n</li>\n</ul>\n<a name=\"errorDialog-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>errorDialog</h4>\n<pre>public static&nbsp;void&nbsp;errorDialog(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</pre>\n</li>\n</ul>\n<a name=\"errorDialog-java.awt.Component-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>errorDialog</h4>\n<pre>public static&nbsp;void&nbsp;errorDialog(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n                               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</pre>\n</li>\n</ul>\n<a name=\"errorDialog-java.awt.Component-java.lang.String-java.lang.Throwable-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>errorDialog</h4>\n<pre>public static&nbsp;void&nbsp;errorDialog(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n                               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n                               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;th)</pre>\n</li>\n</ul>\n<a name=\"errorDialog-java.lang.Throwable-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>errorDialog</h4>\n<pre>public static&nbsp;void&nbsp;errorDialog(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;th)</pre>\n</li>\n</ul>\n<a name=\"errorDialog-java.awt.Component-java.lang.Throwable-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>errorDialog</h4>\n<pre>public static&nbsp;void&nbsp;errorDialog(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp,\n                               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;th)</pre>\n</li>\n</ul>\n<a name=\"extractOptionPaneIcon-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>extractOptionPaneIcon</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Icon.html?is-external=true\" title=\"class or interface in javax.swing\">Icon</a>&nbsp;extractOptionPaneIcon(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</pre>\n</li>\n</ul>\n<a name=\"forgetWindowLocation-java.awt.Frame-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>forgetWindowLocation</h4>\n<pre>public static&nbsp;void&nbsp;forgetWindowLocation(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true\" title=\"class or interface in java.awt\">Frame</a>&nbsp;window)</pre>\n</li>\n</ul>\n<a name=\"growFont-javax.swing.JComponent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>growFont</h4>\n<pre>public static&nbsp;void&nbsp;growFont(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&nbsp;button)</pre>\n</li>\n</ul>\n<a name=\"growFont-javax.swing.JComponent-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>growFont</h4>\n<pre>public static&nbsp;void&nbsp;growFont(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&nbsp;button,\n                            int&nbsp;amount)</pre>\n</li>\n</ul>\n<a name=\"loadWindowLocation-java.awt.Frame-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>loadWindowLocation</h4>\n<pre>public static&nbsp;void&nbsp;loadWindowLocation(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true\" title=\"class or interface in java.awt\">Frame</a>&nbsp;window)</pre>\n</li>\n</ul>\n<a name=\"pad-javax.swing.JComponent-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>pad</h4>\n<pre>public static&nbsp;void&nbsp;pad(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&nbsp;component,\n                       int&nbsp;w,\n                       int&nbsp;h)</pre>\n</li>\n</ul>\n<a name=\"printComponentHierarchy-java.awt.Component-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>printComponentHierarchy</h4>\n<pre>public static&nbsp;void&nbsp;printComponentHierarchy(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp)</pre>\n</li>\n</ul>\n<a name=\"rememberWindowLocation-java.awt.Frame-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>rememberWindowLocation</h4>\n<pre>public static&nbsp;void&nbsp;rememberWindowLocation(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true\" title=\"class or interface in java.awt\">Frame</a>&nbsp;window)</pre>\n</li>\n</ul>\n<a name=\"setSystemLookAndFeel--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setSystemLookAndFeel</h4>\n<pre>public static&nbsp;void&nbsp;setSystemLookAndFeel()</pre>\n</li>\n</ul>\n<a name=\"setPreferredWidth-javax.swing.JComponent-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setPreferredWidth</h4>\n<pre>public static&nbsp;void&nbsp;setPreferredWidth(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&nbsp;comp,\n                                     int&nbsp;width)</pre>\n</li>\n</ul>\n<a name=\"setPreferredHeight-javax.swing.JComponent-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setPreferredHeight</h4>\n<pre>public static&nbsp;void&nbsp;setPreferredHeight(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&nbsp;comp,\n                                      int&nbsp;height)</pre>\n</li>\n</ul>\n<a name=\"shiftPreferredSize-javax.swing.JComponent-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>shiftPreferredSize</h4>\n<pre>public static&nbsp;void&nbsp;shiftPreferredSize(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&nbsp;comp,\n                                      int&nbsp;dw,\n                                      int&nbsp;dh)</pre>\n</li>\n</ul>\n<a name=\"shrinkFont-javax.swing.JComponent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>shrinkFont</h4>\n<pre>public static&nbsp;void&nbsp;shrinkFont(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&nbsp;button)</pre>\n</li>\n</ul>\n<a name=\"shrinkFont-javax.swing.JComponent-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>shrinkFont</h4>\n<pre>public static&nbsp;void&nbsp;shrinkFont(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&nbsp;button,\n                              int&nbsp;amount)</pre>\n</li>\n</ul>\n<a name=\"heighten-javax.swing.JComponent-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>heighten</h4>\n<pre>public static&nbsp;void&nbsp;heighten(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&nbsp;component,\n                            int&nbsp;px)</pre>\n</li>\n</ul>\n<a name=\"widen-javax.swing.JComponent-int-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>widen</h4>\n<pre>public static&nbsp;void&nbsp;widen(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&nbsp;component,\n                         int&nbsp;px)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/gui/ClipboardUtils.html\" title=\"class in stanford.cs106.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/gui/JComboGroupBox.html\" title=\"class in stanford.cs106.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/gui/GuiUtils.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GuiUtils.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/gui/JComboGroupBox.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:03 PDT 2017 -->\n<title>JComboGroupBox</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"JComboGroupBox\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/gui/ListOptionPane.html\" title=\"class in stanford.cs106.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/gui/JComboGroupBox.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JComboGroupBox.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JComboBox\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.javax.swing.JComboBox\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.gui</div>\n<h2 title=\"Class JComboGroupBox\" class=\"title\">Class JComboGroupBox</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Component</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Container</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JComponent</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JComboBox</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.gui.JComboGroupBox</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/ItemSelectable.html?is-external=true\" title=\"class or interface in java.awt\">ItemSelectable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListDataListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListDataListener</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">JComboGroupBox</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true\" title=\"class or interface in javax.swing\">JComboBox</a></pre>\n<div class=\"block\">A JComboBox that allows group tags, like the HTML optgroup tag.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../serialized-form.html#stanford.cs106.gui.JComboGroupBox\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JComboBox\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true\" title=\"class or interface in javax.swing\">JComboBox</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.AccessibleJComboBox.html?is-external=true\" title=\"class or interface in javax.swing\">JComboBox.AccessibleJComboBox</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.KeySelectionManager.html?is-external=true\" title=\"class or interface in javax.swing\">JComboBox.KeySelectionManager</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.AccessibleJComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent.AccessibleJComponent</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.AccessibleAWTContainer.html?is-external=true\" title=\"class or interface in java.awt\">Container.AccessibleAWTContainer</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.AccessibleAWTComponent.html?is-external=true\" title=\"class or interface in java.awt\">Component.AccessibleAWTComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BaselineResizeBehavior.html?is-external=true\" title=\"class or interface in java.awt\">Component.BaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BltBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.BltBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.FlipBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.FlipBufferStrategy</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.JComboBox\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true\" title=\"class or interface in javax.swing\">JComboBox</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#actionCommand\" title=\"class or interface in javax.swing\">actionCommand</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#dataModel\" title=\"class or interface in javax.swing\">dataModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#editor\" title=\"class or interface in javax.swing\">editor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#isEditable\" title=\"class or interface in javax.swing\">isEditable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#keySelectionManager\" title=\"class or interface in javax.swing\">keySelectionManager</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#lightWeightPopupEnabled\" title=\"class or interface in javax.swing\">lightWeightPopupEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#maximumRowCount\" title=\"class or interface in javax.swing\">maximumRowCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#renderer\" title=\"class or interface in javax.swing\">renderer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#selectedItemReminder\" title=\"class or interface in javax.swing\">selectedItemReminder</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#listenerList\" title=\"class or interface in javax.swing\">listenerList</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#TOOL_TIP_TEXT_KEY\" title=\"class or interface in javax.swing\">TOOL_TIP_TEXT_KEY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#ui\" title=\"class or interface in javax.swing\">ui</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#UNDEFINED_CONDITION\" title=\"class or interface in javax.swing\">UNDEFINED_CONDITION</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_ANCESTOR_OF_FOCUSED_COMPONENT\" title=\"class or interface in javax.swing\">WHEN_ANCESTOR_OF_FOCUSED_COMPONENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_FOCUSED\" title=\"class or interface in javax.swing\">WHEN_FOCUSED</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_IN_FOCUSED_WINDOW\" title=\"class or interface in javax.swing\">WHEN_IN_FOCUSED_WINDOW</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#accessibleContext\" title=\"class or interface in java.awt\">accessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#BOTTOM_ALIGNMENT\" title=\"class or interface in java.awt\">BOTTOM_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#CENTER_ALIGNMENT\" title=\"class or interface in java.awt\">CENTER_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#LEFT_ALIGNMENT\" title=\"class or interface in java.awt\">LEFT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#RIGHT_ALIGNMENT\" title=\"class or interface in java.awt\">RIGHT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#TOP_ALIGNMENT\" title=\"class or interface in java.awt\">TOP_ALIGNMENT</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.image.ImageObserver\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ABORT\" title=\"class or interface in java.awt.image\">ABORT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ALLBITS\" title=\"class or interface in java.awt.image\">ALLBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ERROR\" title=\"class or interface in java.awt.image\">ERROR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#FRAMEBITS\" title=\"class or interface in java.awt.image\">FRAMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#HEIGHT\" title=\"class or interface in java.awt.image\">HEIGHT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#PROPERTIES\" title=\"class or interface in java.awt.image\">PROPERTIES</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#SOMEBITS\" title=\"class or interface in java.awt.image\">SOMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#WIDTH\" title=\"class or interface in java.awt.image\">WIDTH</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/JComboGroupBox.html#JComboGroupBox--\">JComboGroupBox</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/JComboGroupBox.html#addDelimiter-java.lang.String-\">addDelimiter</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/JComboGroupBox.html#addItem-java.lang.String-\">addItem</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;item)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/JComboGroupBox.html#getItemText-int-\">getItemText</a></span>(int&nbsp;index)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/JComboGroupBox.html#isDelimiter-int-\">isDelimiter</a></span>(int&nbsp;index)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JComboBox\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true\" title=\"class or interface in javax.swing\">JComboBox</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#actionPerformed-java.awt.event.ActionEvent-\" title=\"class or interface in javax.swing\">actionPerformed</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#actionPropertyChanged-javax.swing.Action-java.lang.String-\" title=\"class or interface in javax.swing\">actionPropertyChanged</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#addActionListener-java.awt.event.ActionListener-\" title=\"class or interface in javax.swing\">addActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#addItem-E-\" title=\"class or interface in javax.swing\">addItem</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#addItemListener-java.awt.event.ItemListener-\" title=\"class or interface in javax.swing\">addItemListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#addPopupMenuListener-javax.swing.event.PopupMenuListener-\" title=\"class or interface in javax.swing\">addPopupMenuListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#configureEditor-javax.swing.ComboBoxEditor-java.lang.Object-\" title=\"class or interface in javax.swing\">configureEditor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#configurePropertiesFromAction-javax.swing.Action-\" title=\"class or interface in javax.swing\">configurePropertiesFromAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#contentsChanged-javax.swing.event.ListDataEvent-\" title=\"class or interface in javax.swing\">contentsChanged</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#createActionPropertyChangeListener-javax.swing.Action-\" title=\"class or interface in javax.swing\">createActionPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#createDefaultKeySelectionManager--\" title=\"class or interface in javax.swing\">createDefaultKeySelectionManager</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#fireActionEvent--\" title=\"class or interface in javax.swing\">fireActionEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#fireItemStateChanged-java.awt.event.ItemEvent-\" title=\"class or interface in javax.swing\">fireItemStateChanged</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#firePopupMenuCanceled--\" title=\"class or interface in javax.swing\">firePopupMenuCanceled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#firePopupMenuWillBecomeInvisible--\" title=\"class or interface in javax.swing\">firePopupMenuWillBecomeInvisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#firePopupMenuWillBecomeVisible--\" title=\"class or interface in javax.swing\">firePopupMenuWillBecomeVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#getAccessibleContext--\" title=\"class or interface in javax.swing\">getAccessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#getAction--\" title=\"class or interface in javax.swing\">getAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#getActionCommand--\" title=\"class or interface in javax.swing\">getActionCommand</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#getActionListeners--\" title=\"class or interface in javax.swing\">getActionListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#getEditor--\" title=\"class or interface in javax.swing\">getEditor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#getItemAt-int-\" title=\"class or interface in javax.swing\">getItemAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#getItemCount--\" title=\"class or interface in javax.swing\">getItemCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#getItemListeners--\" title=\"class or interface in javax.swing\">getItemListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#getKeySelectionManager--\" title=\"class or interface in javax.swing\">getKeySelectionManager</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#getMaximumRowCount--\" title=\"class or interface in javax.swing\">getMaximumRowCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#getModel--\" title=\"class or interface in javax.swing\">getModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#getPopupMenuListeners--\" title=\"class or interface in javax.swing\">getPopupMenuListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#getPrototypeDisplayValue--\" title=\"class or interface in javax.swing\">getPrototypeDisplayValue</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#getRenderer--\" title=\"class or interface in javax.swing\">getRenderer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#getSelectedIndex--\" title=\"class or interface in javax.swing\">getSelectedIndex</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#getSelectedItem--\" title=\"class or interface in javax.swing\">getSelectedItem</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#getSelectedObjects--\" title=\"class or interface in javax.swing\">getSelectedObjects</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#getUI--\" title=\"class or interface in javax.swing\">getUI</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#getUIClassID--\" title=\"class or interface in javax.swing\">getUIClassID</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#hidePopup--\" title=\"class or interface in javax.swing\">hidePopup</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#insertItemAt-E-int-\" title=\"class or interface in javax.swing\">insertItemAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#installAncestorListener--\" title=\"class or interface in javax.swing\">installAncestorListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#intervalAdded-javax.swing.event.ListDataEvent-\" title=\"class or interface in javax.swing\">intervalAdded</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#intervalRemoved-javax.swing.event.ListDataEvent-\" title=\"class or interface in javax.swing\">intervalRemoved</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#isEditable--\" title=\"class or interface in javax.swing\">isEditable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#isLightWeightPopupEnabled--\" title=\"class or interface in javax.swing\">isLightWeightPopupEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#isPopupVisible--\" title=\"class or interface in javax.swing\">isPopupVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#paramString--\" title=\"class or interface in javax.swing\">paramString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#processKeyBinding-javax.swing.KeyStroke-java.awt.event.KeyEvent-int-boolean-\" title=\"class or interface in javax.swing\">processKeyBinding</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#processKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in javax.swing\">processKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#removeActionListener-java.awt.event.ActionListener-\" title=\"class or interface in javax.swing\">removeActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#removeAllItems--\" title=\"class or interface in javax.swing\">removeAllItems</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#removeItem-java.lang.Object-\" title=\"class or interface in javax.swing\">removeItem</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#removeItemAt-int-\" title=\"class or interface in javax.swing\">removeItemAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#removeItemListener-java.awt.event.ItemListener-\" title=\"class or interface in javax.swing\">removeItemListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#removePopupMenuListener-javax.swing.event.PopupMenuListener-\" title=\"class or interface in javax.swing\">removePopupMenuListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#selectedItemChanged--\" title=\"class or interface in javax.swing\">selectedItemChanged</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#selectWithKeyChar-char-\" title=\"class or interface in javax.swing\">selectWithKeyChar</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#setAction-javax.swing.Action-\" title=\"class or interface in javax.swing\">setAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#setActionCommand-java.lang.String-\" title=\"class or interface in javax.swing\">setActionCommand</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#setEditable-boolean-\" title=\"class or interface in javax.swing\">setEditable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#setEditor-javax.swing.ComboBoxEditor-\" title=\"class or interface in javax.swing\">setEditor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#setEnabled-boolean-\" title=\"class or interface in javax.swing\">setEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#setKeySelectionManager-javax.swing.JComboBox.KeySelectionManager-\" title=\"class or interface in javax.swing\">setKeySelectionManager</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#setLightWeightPopupEnabled-boolean-\" title=\"class or interface in javax.swing\">setLightWeightPopupEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#setMaximumRowCount-int-\" title=\"class or interface in javax.swing\">setMaximumRowCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#setModel-javax.swing.ComboBoxModel-\" title=\"class or interface in javax.swing\">setModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#setPopupVisible-boolean-\" title=\"class or interface in javax.swing\">setPopupVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#setPrototypeDisplayValue-E-\" title=\"class or interface in javax.swing\">setPrototypeDisplayValue</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#setRenderer-javax.swing.ListCellRenderer-\" title=\"class or interface in javax.swing\">setRenderer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#setSelectedIndex-int-\" title=\"class or interface in javax.swing\">setSelectedIndex</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#setSelectedItem-java.lang.Object-\" title=\"class or interface in javax.swing\">setSelectedItem</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#setUI-javax.swing.plaf.ComboBoxUI-\" title=\"class or interface in javax.swing\">setUI</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#showPopup--\" title=\"class or interface in javax.swing\">showPopup</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true#updateUI--\" title=\"class or interface in javax.swing\">updateUI</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addAncestorListener-javax.swing.event.AncestorListener-\" title=\"class or interface in javax.swing\">addAncestorListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addNotify--\" title=\"class or interface in javax.swing\">addNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addVetoableChangeListener-java.beans.VetoableChangeListener-\" title=\"class or interface in javax.swing\">addVetoableChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#computeVisibleRect-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">computeVisibleRect</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#contains-int-int-\" title=\"class or interface in javax.swing\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#createToolTip--\" title=\"class or interface in javax.swing\">createToolTip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#disable--\" title=\"class or interface in javax.swing\">disable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#enable--\" title=\"class or interface in javax.swing\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-boolean-boolean-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-char-char-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-int-int-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#fireVetoableChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in javax.swing\">fireVetoableChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getActionForKeyStroke-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">getActionForKeyStroke</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getActionMap--\" title=\"class or interface in javax.swing\">getActionMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAlignmentX--\" title=\"class or interface in javax.swing\">getAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAlignmentY--\" title=\"class or interface in javax.swing\">getAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAncestorListeners--\" title=\"class or interface in javax.swing\">getAncestorListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAutoscrolls--\" title=\"class or interface in javax.swing\">getAutoscrolls</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBaseline-int-int-\" title=\"class or interface in javax.swing\">getBaseline</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBaselineResizeBehavior--\" title=\"class or interface in javax.swing\">getBaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBorder--\" title=\"class or interface in javax.swing\">getBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBounds-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getClientProperty-java.lang.Object-\" title=\"class or interface in javax.swing\">getClientProperty</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getComponentGraphics-java.awt.Graphics-\" title=\"class or interface in javax.swing\">getComponentGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getComponentPopupMenu--\" title=\"class or interface in javax.swing\">getComponentPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getConditionForKeyStroke-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">getConditionForKeyStroke</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getDebugGraphicsOptions--\" title=\"class or interface in javax.swing\">getDebugGraphicsOptions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getDefaultLocale--\" title=\"class or interface in javax.swing\">getDefaultLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getFontMetrics-java.awt.Font-\" title=\"class or interface in javax.swing\">getFontMetrics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getGraphics--\" title=\"class or interface in javax.swing\">getGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getHeight--\" title=\"class or interface in javax.swing\">getHeight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInheritsPopupMenu--\" title=\"class or interface in javax.swing\">getInheritsPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputMap--\" title=\"class or interface in javax.swing\">getInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputMap-int-\" title=\"class or interface in javax.swing\">getInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputVerifier--\" title=\"class or interface in javax.swing\">getInputVerifier</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInsets--\" title=\"class or interface in javax.swing\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInsets-java.awt.Insets-\" title=\"class or interface in javax.swing\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getListeners-java.lang.Class-\" title=\"class or interface in javax.swing\">getListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getLocation-java.awt.Point-\" title=\"class or interface in javax.swing\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getMaximumSize--\" title=\"class or interface in javax.swing\">getMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getMinimumSize--\" title=\"class or interface in javax.swing\">getMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getNextFocusableComponent--\" title=\"class or interface in javax.swing\">getNextFocusableComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getPopupLocation-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">getPopupLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getPreferredSize--\" title=\"class or interface in javax.swing\">getPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getRegisteredKeyStrokes--\" title=\"class or interface in javax.swing\">getRegisteredKeyStrokes</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getRootPane--\" title=\"class or interface in javax.swing\">getRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getToolTipLocation-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">getToolTipLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getToolTipText--\" title=\"class or interface in javax.swing\">getToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getToolTipText-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">getToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getTopLevelAncestor--\" title=\"class or interface in javax.swing\">getTopLevelAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getTransferHandler--\" title=\"class or interface in javax.swing\">getTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVerifyInputWhenFocusTarget--\" title=\"class or interface in javax.swing\">getVerifyInputWhenFocusTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVetoableChangeListeners--\" title=\"class or interface in javax.swing\">getVetoableChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVisibleRect--\" title=\"class or interface in javax.swing\">getVisibleRect</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getWidth--\" title=\"class or interface in javax.swing\">getWidth</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getX--\" title=\"class or interface in javax.swing\">getX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getY--\" title=\"class or interface in javax.swing\">getY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#grabFocus--\" title=\"class or interface in javax.swing\">grabFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#hide--\" title=\"class or interface in javax.swing\">hide</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isDoubleBuffered--\" title=\"class or interface in javax.swing\">isDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isLightweightComponent-java.awt.Component-\" title=\"class or interface in javax.swing\">isLightweightComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isManagingFocus--\" title=\"class or interface in javax.swing\">isManagingFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isOpaque--\" title=\"class or interface in javax.swing\">isOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isOptimizedDrawingEnabled--\" title=\"class or interface in javax.swing\">isOptimizedDrawingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingForPrint--\" title=\"class or interface in javax.swing\">isPaintingForPrint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingOrigin--\" title=\"class or interface in javax.swing\">isPaintingOrigin</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingTile--\" title=\"class or interface in javax.swing\">isPaintingTile</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isRequestFocusEnabled--\" title=\"class or interface in javax.swing\">isRequestFocusEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isValidateRoot--\" title=\"class or interface in javax.swing\">isValidateRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paint-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintBorder-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintChildren-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintChildren</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintComponent-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintImmediately-int-int-int-int-\" title=\"class or interface in javax.swing\">paintImmediately</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintImmediately-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">paintImmediately</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#print-java.awt.Graphics-\" title=\"class or interface in javax.swing\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printAll-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printBorder-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printChildren-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printChildren</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printComponent-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processComponentKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in javax.swing\">processComponentKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processMouseEvent-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">processMouseEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processMouseMotionEvent-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">processMouseMotionEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#putClientProperty-java.lang.Object-java.lang.Object-\" title=\"class or interface in javax.swing\">putClientProperty</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#registerKeyboardAction-java.awt.event.ActionListener-javax.swing.KeyStroke-int-\" title=\"class or interface in javax.swing\">registerKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#registerKeyboardAction-java.awt.event.ActionListener-java.lang.String-javax.swing.KeyStroke-int-\" title=\"class or interface in javax.swing\">registerKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#removeAncestorListener-javax.swing.event.AncestorListener-\" title=\"class or interface in javax.swing\">removeAncestorListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#removeNotify--\" title=\"class or interface in javax.swing\">removeNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#removeVetoableChangeListener-java.beans.VetoableChangeListener-\" title=\"class or interface in javax.swing\">removeVetoableChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#repaint-long-int-int-int-int-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#repaint-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestDefaultFocus--\" title=\"class or interface in javax.swing\">requestDefaultFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocus--\" title=\"class or interface in javax.swing\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocus-boolean-\" title=\"class or interface in javax.swing\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocusInWindow--\" title=\"class or interface in javax.swing\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocusInWindow-boolean-\" title=\"class or interface in javax.swing\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#resetKeyboardActions--\" title=\"class or interface in javax.swing\">resetKeyboardActions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#reshape-int-int-int-int-\" title=\"class or interface in javax.swing\">reshape</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#revalidate--\" title=\"class or interface in javax.swing\">revalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#scrollRectToVisible-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">scrollRectToVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setActionMap-javax.swing.ActionMap-\" title=\"class or interface in javax.swing\">setActionMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAlignmentX-float-\" title=\"class or interface in javax.swing\">setAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAlignmentY-float-\" title=\"class or interface in javax.swing\">setAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAutoscrolls-boolean-\" title=\"class or interface in javax.swing\">setAutoscrolls</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setBackground-java.awt.Color-\" title=\"class or interface in javax.swing\">setBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setBorder-javax.swing.border.Border-\" title=\"class or interface in javax.swing\">setBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setComponentPopupMenu-javax.swing.JPopupMenu-\" title=\"class or interface in javax.swing\">setComponentPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDebugGraphicsOptions-int-\" title=\"class or interface in javax.swing\">setDebugGraphicsOptions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDefaultLocale-java.util.Locale-\" title=\"class or interface in javax.swing\">setDefaultLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDoubleBuffered-boolean-\" title=\"class or interface in javax.swing\">setDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setFocusTraversalKeys-int-java.util.Set-\" title=\"class or interface in javax.swing\">setFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setFont-java.awt.Font-\" title=\"class or interface in javax.swing\">setFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setForeground-java.awt.Color-\" title=\"class or interface in javax.swing\">setForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInheritsPopupMenu-boolean-\" title=\"class or interface in javax.swing\">setInheritsPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInputMap-int-javax.swing.InputMap-\" title=\"class or interface in javax.swing\">setInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInputVerifier-javax.swing.InputVerifier-\" title=\"class or interface in javax.swing\">setInputVerifier</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setMaximumSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setMinimumSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setNextFocusableComponent-java.awt.Component-\" title=\"class or interface in javax.swing\">setNextFocusableComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setOpaque-boolean-\" title=\"class or interface in javax.swing\">setOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setPreferredSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setRequestFocusEnabled-boolean-\" title=\"class or interface in javax.swing\">setRequestFocusEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setToolTipText-java.lang.String-\" title=\"class or interface in javax.swing\">setToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setTransferHandler-javax.swing.TransferHandler-\" title=\"class or interface in javax.swing\">setTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setUI-javax.swing.plaf.ComponentUI-\" title=\"class or interface in javax.swing\">setUI</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setVerifyInputWhenFocusTarget-boolean-\" title=\"class or interface in javax.swing\">setVerifyInputWhenFocusTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setVisible-boolean-\" title=\"class or interface in javax.swing\">setVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#unregisterKeyboardAction-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">unregisterKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#update-java.awt.Graphics-\" title=\"class or interface in javax.swing\">update</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.lang.String-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">addContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addImpl-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">addImpl</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#applyComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">applyComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#areFocusTraversalKeysSet-int-\" title=\"class or interface in java.awt\">areFocusTraversalKeysSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#countComponents--\" title=\"class or interface in java.awt\">countComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#deliverEvent-java.awt.Event-\" title=\"class or interface in java.awt\">deliverEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#doLayout--\" title=\"class or interface in java.awt\">doLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-int-int-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponent-int-\" title=\"class or interface in java.awt\">getComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-int-int-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentCount--\" title=\"class or interface in java.awt\">getComponentCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponents--\" title=\"class or interface in java.awt\">getComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentZOrder-java.awt.Component-\" title=\"class or interface in java.awt\">getComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getContainerListeners--\" title=\"class or interface in java.awt\">getContainerListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalKeys-int-\" title=\"class or interface in java.awt\">getFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalPolicy--\" title=\"class or interface in java.awt\">getFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getLayout--\" title=\"class or interface in java.awt\">getLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMousePosition-boolean-\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#insets--\" title=\"class or interface in java.awt\">insets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#invalidate--\" title=\"class or interface in java.awt\">invalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isAncestorOf-java.awt.Component-\" title=\"class or interface in java.awt\">isAncestorOf</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot--\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot-java.awt.Container-\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicyProvider--\" title=\"class or interface in java.awt\">isFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicySet--\" title=\"class or interface in java.awt\">isFocusTraversalPolicySet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#layout--\" title=\"class or interface in java.awt\">layout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintStream-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintWriter-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#locate-int-int-\" title=\"class or interface in java.awt\">locate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#minimumSize--\" title=\"class or interface in java.awt\">minimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paintComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#preferredSize--\" title=\"class or interface in java.awt\">preferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#printComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">printComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processContainerEvent-java.awt.event.ContainerEvent-\" title=\"class or interface in java.awt\">processContainerEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">processEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#remove-java.awt.Component-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#remove-int-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeAll--\" title=\"class or interface in java.awt\">removeAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">removeContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setComponentZOrder-java.awt.Component-int-\" title=\"class or interface in java.awt\">setComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusCycleRoot-boolean-\" title=\"class or interface in java.awt\">setFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicy-java.awt.FocusTraversalPolicy-\" title=\"class or interface in java.awt\">setFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicyProvider-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setLayout-java.awt.LayoutManager-\" title=\"class or interface in java.awt\">setLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#transferFocusDownCycle--\" title=\"class or interface in java.awt\">transferFocusDownCycle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validate--\" title=\"class or interface in java.awt\">validate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validateTree--\" title=\"class or interface in java.awt\">validateTree</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#action-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">action</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#add-java.awt.PopupMenu-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">addComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">addFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">addHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">addHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">addInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">addKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">addMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">addMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">addMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#bounds--\" title=\"class or interface in java.awt\">bounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#coalesceEvents-java.awt.AWTEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">coalesceEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-java.awt.Point-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-java.awt.image.ImageProducer-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-int-int-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-java.awt.ImageCapabilities-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disableEvents-long-\" title=\"class or interface in java.awt\">disableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#dispatchEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">dispatchEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable-boolean-\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableEvents-long-\" title=\"class or interface in java.awt\">enableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableInputMethods-boolean-\" title=\"class or interface in java.awt\">enableInputMethods</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-byte-byte-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-double-double-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-float-float-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-long-long-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-short-short-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBackground--\" title=\"class or interface in java.awt\">getBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds--\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getColorModel--\" title=\"class or interface in java.awt\">getColorModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentListeners--\" title=\"class or interface in java.awt\">getComponentListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentOrientation--\" title=\"class or interface in java.awt\">getComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getCursor--\" title=\"class or interface in java.awt\">getCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getDropTarget--\" title=\"class or interface in java.awt\">getDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusCycleRootAncestor--\" title=\"class or interface in java.awt\">getFocusCycleRootAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusListeners--\" title=\"class or interface in java.awt\">getFocusListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusTraversalKeysEnabled--\" title=\"class or interface in java.awt\">getFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFont--\" title=\"class or interface in java.awt\">getFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getForeground--\" title=\"class or interface in java.awt\">getForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getGraphicsConfiguration--\" title=\"class or interface in java.awt\">getGraphicsConfiguration</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyBoundsListeners--\" title=\"class or interface in java.awt\">getHierarchyBoundsListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyListeners--\" title=\"class or interface in java.awt\">getHierarchyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getIgnoreRepaint--\" title=\"class or interface in java.awt\">getIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputContext--\" title=\"class or interface in java.awt\">getInputContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodListeners--\" title=\"class or interface in java.awt\">getInputMethodListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodRequests--\" title=\"class or interface in java.awt\">getInputMethodRequests</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getKeyListeners--\" title=\"class or interface in java.awt\">getKeyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocale--\" title=\"class or interface in java.awt\">getLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation--\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocationOnScreen--\" title=\"class or interface in java.awt\">getLocationOnScreen</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseListeners--\" title=\"class or interface in java.awt\">getMouseListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseMotionListeners--\" title=\"class or interface in java.awt\">getMouseMotionListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMousePosition--\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseWheelListeners--\" title=\"class or interface in java.awt\">getMouseWheelListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getName--\" title=\"class or interface in java.awt\">getName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getParent--\" title=\"class or interface in java.awt\">getParent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPeer--\" title=\"class or interface in java.awt\">getPeer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners--\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners-java.lang.String-\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize--\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getToolkit--\" title=\"class or interface in java.awt\">getToolkit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getTreeLock--\" title=\"class or interface in java.awt\">getTreeLock</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#gotFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">gotFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#handleEvent-java.awt.Event-\" title=\"class or interface in java.awt\">handleEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hasFocus--\" title=\"class or interface in java.awt\">hasFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#imageUpdate-java.awt.Image-int-int-int-int-int-\" title=\"class or interface in java.awt\">imageUpdate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#inside-int-int-\" title=\"class or interface in java.awt\">inside</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isBackgroundSet--\" title=\"class or interface in java.awt\">isBackgroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isCursorSet--\" title=\"class or interface in java.awt\">isCursorSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDisplayable--\" title=\"class or interface in java.awt\">isDisplayable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isEnabled--\" title=\"class or interface in java.awt\">isEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusable--\" title=\"class or interface in java.awt\">isFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusOwner--\" title=\"class or interface in java.awt\">isFocusOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusTraversable--\" title=\"class or interface in java.awt\">isFocusTraversable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFontSet--\" title=\"class or interface in java.awt\">isFontSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isForegroundSet--\" title=\"class or interface in java.awt\">isForegroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isLightweight--\" title=\"class or interface in java.awt\">isLightweight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMaximumSizeSet--\" title=\"class or interface in java.awt\">isMaximumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMinimumSizeSet--\" title=\"class or interface in java.awt\">isMinimumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isPreferredSizeSet--\" title=\"class or interface in java.awt\">isPreferredSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isShowing--\" title=\"class or interface in java.awt\">isShowing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isValid--\" title=\"class or interface in java.awt\">isValid</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isVisible--\" title=\"class or interface in java.awt\">isVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyDown-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyUp-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list--\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintStream-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintWriter-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#location--\" title=\"class or interface in java.awt\">location</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#lostFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">lostFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDown-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDrag-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDrag</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseEnter-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseEnter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseExit-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseExit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseMove-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseMove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseUp-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#move-int-int-\" title=\"class or interface in java.awt\">move</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#nextFocus--\" title=\"class or interface in java.awt\">nextFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#paintAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#postEvent-java.awt.Event-\" title=\"class or interface in java.awt\">postEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processComponentEvent-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt\">processComponentEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processFocusEvent-java.awt.event.FocusEvent-\" title=\"class or interface in java.awt\">processFocusEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyBoundsEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyBoundsEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processInputMethodEvent-java.awt.event.InputMethodEvent-\" title=\"class or interface in java.awt\">processInputMethodEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseWheelEvent-java.awt.event.MouseWheelEvent-\" title=\"class or interface in java.awt\">processMouseWheelEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#remove-java.awt.MenuComponent-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">removeComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">removeFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">removeHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">removeHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">removeInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">removeKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">removeMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">removeMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">removeMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint--\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-int-int-int-int-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-long-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#resize-java.awt.Dimension-\" title=\"class or interface in java.awt\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#resize-int-int-\" title=\"class or interface in java.awt\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-int-int-int-int-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">setComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setCursor-java.awt.Cursor-\" title=\"class or interface in java.awt\">setCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setDropTarget-java.awt.dnd.DropTarget-\" title=\"class or interface in java.awt\">setDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusable-boolean-\" title=\"class or interface in java.awt\">setFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusTraversalKeysEnabled-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setIgnoreRepaint-boolean-\" title=\"class or interface in java.awt\">setIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocale-java.util.Locale-\" title=\"class or interface in java.awt\">setLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-int-int-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-java.awt.Point-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setName-java.lang.String-\" title=\"class or interface in java.awt\">setName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-int-int-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show--\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show-boolean-\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#size--\" title=\"class or interface in java.awt\">size</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#toString--\" title=\"class or interface in java.awt\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocus--\" title=\"class or interface in java.awt\">transferFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusBackward--\" title=\"class or interface in java.awt\">transferFocusBackward</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusUpCycle--\" title=\"class or interface in java.awt\">transferFocusUpCycle</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"JComboGroupBox--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>JComboGroupBox</h4>\n<pre>public&nbsp;JComboGroupBox()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"addDelimiter-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addDelimiter</h4>\n<pre>public&nbsp;void&nbsp;addDelimiter(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</pre>\n</li>\n</ul>\n<a name=\"addItem-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addItem</h4>\n<pre>public&nbsp;void&nbsp;addItem(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;item)</pre>\n</li>\n</ul>\n<a name=\"getItemText-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getItemText</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getItemText(int&nbsp;index)</pre>\n</li>\n</ul>\n<a name=\"isDelimiter-int-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>isDelimiter</h4>\n<pre>public&nbsp;boolean&nbsp;isDelimiter(int&nbsp;index)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/gui/ListOptionPane.html\" title=\"class in stanford.cs106.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/gui/JComboGroupBox.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JComboGroupBox.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JComboBox\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.javax.swing.JComboBox\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/gui/ListOptionPane.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:03 PDT 2017 -->\n<title>ListOptionPane</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"ListOptionPane\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/gui/JComboGroupBox.html\" title=\"class in stanford.cs106.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/gui/ResizeListener.html\" title=\"interface in stanford.cs106.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/gui/ListOptionPane.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ListOptionPane.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JDialog\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.javax.swing.JDialog\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#methods.inherited.from.class.acm.gui.JListOptionPane\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li>Method</li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.gui</div>\n<h2 title=\"Class ListOptionPane\" class=\"title\">Class ListOptionPane</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Component</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Container</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Window</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Dialog</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JDialog</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../../acm/gui/JListOptionPane.html\" title=\"class in acm.gui\">acm.gui.JListOptionPane</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.gui.ListOptionPane</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/RootPaneContainer.html?is-external=true\" title=\"class or interface in javax.swing\">RootPaneContainer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/WindowConstants.html?is-external=true\" title=\"class or interface in javax.swing\">WindowConstants</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">ListOptionPane</span>\nextends <a href=\"../../../acm/gui/JListOptionPane.html\" title=\"class in acm.gui\">JListOptionPane</a></pre>\n<div class=\"block\">This class is here only for backward compatibility.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../serialized-form.html#stanford.cs106.gui.ListOptionPane\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JDialog\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true\" title=\"class or interface in javax.swing\">JDialog</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.AccessibleJDialog.html?is-external=true\" title=\"class or interface in javax.swing\">JDialog.AccessibleJDialog</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Dialog\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true\" title=\"class or interface in java.awt\">Dialog</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.AccessibleAWTDialog.html?is-external=true\" title=\"class or interface in java.awt\">Dialog.AccessibleAWTDialog</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.ModalExclusionType.html?is-external=true\" title=\"class or interface in java.awt\">Dialog.ModalExclusionType</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.ModalityType.html?is-external=true\" title=\"class or interface in java.awt\">Dialog.ModalityType</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Window\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true\" title=\"class or interface in java.awt\">Window</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.AccessibleAWTWindow.html?is-external=true\" title=\"class or interface in java.awt\">Window.AccessibleAWTWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.Type.html?is-external=true\" title=\"class or interface in java.awt\">Window.Type</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.AccessibleAWTContainer.html?is-external=true\" title=\"class or interface in java.awt\">Container.AccessibleAWTContainer</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.AccessibleAWTComponent.html?is-external=true\" title=\"class or interface in java.awt\">Component.AccessibleAWTComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BaselineResizeBehavior.html?is-external=true\" title=\"class or interface in java.awt\">Component.BaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BltBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.BltBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.FlipBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.FlipBufferStrategy</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.JDialog\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true\" title=\"class or interface in javax.swing\">JDialog</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#accessibleContext\" title=\"class or interface in javax.swing\">accessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#rootPane\" title=\"class or interface in javax.swing\">rootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#rootPaneCheckingEnabled\" title=\"class or interface in javax.swing\">rootPaneCheckingEnabled</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.Dialog\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true\" title=\"class or interface in java.awt\">Dialog</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#DEFAULT_MODALITY_TYPE\" title=\"class or interface in java.awt\">DEFAULT_MODALITY_TYPE</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#BOTTOM_ALIGNMENT\" title=\"class or interface in java.awt\">BOTTOM_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#CENTER_ALIGNMENT\" title=\"class or interface in java.awt\">CENTER_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#LEFT_ALIGNMENT\" title=\"class or interface in java.awt\">LEFT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#RIGHT_ALIGNMENT\" title=\"class or interface in java.awt\">RIGHT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#TOP_ALIGNMENT\" title=\"class or interface in java.awt\">TOP_ALIGNMENT</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.WindowConstants\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/WindowConstants.html?is-external=true\" title=\"class or interface in javax.swing\">WindowConstants</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/WindowConstants.html?is-external=true#DISPOSE_ON_CLOSE\" title=\"class or interface in javax.swing\">DISPOSE_ON_CLOSE</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/WindowConstants.html?is-external=true#DO_NOTHING_ON_CLOSE\" title=\"class or interface in javax.swing\">DO_NOTHING_ON_CLOSE</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/WindowConstants.html?is-external=true#EXIT_ON_CLOSE\" title=\"class or interface in javax.swing\">EXIT_ON_CLOSE</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/WindowConstants.html?is-external=true#HIDE_ON_CLOSE\" title=\"class or interface in javax.swing\">HIDE_ON_CLOSE</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.image.ImageObserver\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ABORT\" title=\"class or interface in java.awt.image\">ABORT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ALLBITS\" title=\"class or interface in java.awt.image\">ALLBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ERROR\" title=\"class or interface in java.awt.image\">ERROR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#FRAMEBITS\" title=\"class or interface in java.awt.image\">FRAMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#HEIGHT\" title=\"class or interface in java.awt.image\">HEIGHT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#PROPERTIES\" title=\"class or interface in java.awt.image\">PROPERTIES</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#SOMEBITS\" title=\"class or interface in java.awt.image\">SOMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#WIDTH\" title=\"class or interface in java.awt.image\">WIDTH</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/ListOptionPane.html#ListOptionPane-javax.swing.JFrame-java.lang.Iterable-\">ListOptionPane</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true\" title=\"class or interface in javax.swing\">JFrame</a>&nbsp;frame,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;items)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.gui.JListOptionPane\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.gui.<a href=\"../../../acm/gui/JListOptionPane.html\" title=\"class in acm.gui\">JListOptionPane</a></h3>\n<code><a href=\"../../../acm/gui/JListOptionPane.html#actionPerformed-java.awt.event.ActionEvent-\">actionPerformed</a>, <a href=\"../../../acm/gui/JListOptionPane.html#getSelectedIndex--\">getSelectedIndex</a>, <a href=\"../../../acm/gui/JListOptionPane.html#getSelectedValue--\">getSelectedValue</a>, <a href=\"../../../acm/gui/JListOptionPane.html#getSelectedValues--\">getSelectedValues</a>, <a href=\"../../../acm/gui/JListOptionPane.html#hasSelectedValue--\">hasSelectedValue</a>, <a href=\"../../../acm/gui/JListOptionPane.html#pressedOk--\">pressedOk</a>, <a href=\"../../../acm/gui/JListOptionPane.html#setMultipleSelection-boolean-\">setMultipleSelection</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JDialog\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true\" title=\"class or interface in javax.swing\">JDialog</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#addImpl-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in javax.swing\">addImpl</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#createRootPane--\" title=\"class or interface in javax.swing\">createRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#dialogInit--\" title=\"class or interface in javax.swing\">dialogInit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#getAccessibleContext--\" title=\"class or interface in javax.swing\">getAccessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#getContentPane--\" title=\"class or interface in javax.swing\">getContentPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#getDefaultCloseOperation--\" title=\"class or interface in javax.swing\">getDefaultCloseOperation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#getGlassPane--\" title=\"class or interface in javax.swing\">getGlassPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#getGraphics--\" title=\"class or interface in javax.swing\">getGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#getJMenuBar--\" title=\"class or interface in javax.swing\">getJMenuBar</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#getLayeredPane--\" title=\"class or interface in javax.swing\">getLayeredPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#getRootPane--\" title=\"class or interface in javax.swing\">getRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#getTransferHandler--\" title=\"class or interface in javax.swing\">getTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#isDefaultLookAndFeelDecorated--\" title=\"class or interface in javax.swing\">isDefaultLookAndFeelDecorated</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#isRootPaneCheckingEnabled--\" title=\"class or interface in javax.swing\">isRootPaneCheckingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#paramString--\" title=\"class or interface in javax.swing\">paramString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#processWindowEvent-java.awt.event.WindowEvent-\" title=\"class or interface in javax.swing\">processWindowEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#remove-java.awt.Component-\" title=\"class or interface in javax.swing\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#repaint-long-int-int-int-int-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#setContentPane-java.awt.Container-\" title=\"class or interface in javax.swing\">setContentPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#setDefaultCloseOperation-int-\" title=\"class or interface in javax.swing\">setDefaultCloseOperation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#setDefaultLookAndFeelDecorated-boolean-\" title=\"class or interface in javax.swing\">setDefaultLookAndFeelDecorated</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#setGlassPane-java.awt.Component-\" title=\"class or interface in javax.swing\">setGlassPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#setJMenuBar-javax.swing.JMenuBar-\" title=\"class or interface in javax.swing\">setJMenuBar</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#setLayeredPane-javax.swing.JLayeredPane-\" title=\"class or interface in javax.swing\">setLayeredPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#setLayout-java.awt.LayoutManager-\" title=\"class or interface in javax.swing\">setLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#setRootPane-javax.swing.JRootPane-\" title=\"class or interface in javax.swing\">setRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#setRootPaneCheckingEnabled-boolean-\" title=\"class or interface in javax.swing\">setRootPaneCheckingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#setTransferHandler-javax.swing.TransferHandler-\" title=\"class or interface in javax.swing\">setTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#update-java.awt.Graphics-\" title=\"class or interface in javax.swing\">update</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Dialog\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true\" title=\"class or interface in java.awt\">Dialog</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#addNotify--\" title=\"class or interface in java.awt\">addNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#getModalityType--\" title=\"class or interface in java.awt\">getModalityType</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#getTitle--\" title=\"class or interface in java.awt\">getTitle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#hide--\" title=\"class or interface in java.awt\">hide</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#isModal--\" title=\"class or interface in java.awt\">isModal</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#isResizable--\" title=\"class or interface in java.awt\">isResizable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#isUndecorated--\" title=\"class or interface in java.awt\">isUndecorated</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#setBackground-java.awt.Color-\" title=\"class or interface in java.awt\">setBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#setModal-boolean-\" title=\"class or interface in java.awt\">setModal</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#setModalityType-java.awt.Dialog.ModalityType-\" title=\"class or interface in java.awt\">setModalityType</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#setOpacity-float-\" title=\"class or interface in java.awt\">setOpacity</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#setResizable-boolean-\" title=\"class or interface in java.awt\">setResizable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#setShape-java.awt.Shape-\" title=\"class or interface in java.awt\">setShape</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#setTitle-java.lang.String-\" title=\"class or interface in java.awt\">setTitle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#setUndecorated-boolean-\" title=\"class or interface in java.awt\">setUndecorated</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#setVisible-boolean-\" title=\"class or interface in java.awt\">setVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#show--\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#toBack--\" title=\"class or interface in java.awt\">toBack</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Window\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true\" title=\"class or interface in java.awt\">Window</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#addPropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#addPropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#addWindowFocusListener-java.awt.event.WindowFocusListener-\" title=\"class or interface in java.awt\">addWindowFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#addWindowListener-java.awt.event.WindowListener-\" title=\"class or interface in java.awt\">addWindowListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#addWindowStateListener-java.awt.event.WindowStateListener-\" title=\"class or interface in java.awt\">addWindowStateListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#applyResourceBundle-java.util.ResourceBundle-\" title=\"class or interface in java.awt\">applyResourceBundle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#applyResourceBundle-java.lang.String-\" title=\"class or interface in java.awt\">applyResourceBundle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#createBufferStrategy-int-\" title=\"class or interface in java.awt\">createBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#createBufferStrategy-int-java.awt.BufferCapabilities-\" title=\"class or interface in java.awt\">createBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#dispose--\" title=\"class or interface in java.awt\">dispose</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getBackground--\" title=\"class or interface in java.awt\">getBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getBufferStrategy--\" title=\"class or interface in java.awt\">getBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getFocusableWindowState--\" title=\"class or interface in java.awt\">getFocusableWindowState</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getFocusCycleRootAncestor--\" title=\"class or interface in java.awt\">getFocusCycleRootAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getFocusOwner--\" title=\"class or interface in java.awt\">getFocusOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getFocusTraversalKeys-int-\" title=\"class or interface in java.awt\">getFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getIconImages--\" title=\"class or interface in java.awt\">getIconImages</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getInputContext--\" title=\"class or interface in java.awt\">getInputContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getListeners-java.lang.Class-\" title=\"class or interface in java.awt\">getListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getLocale--\" title=\"class or interface in java.awt\">getLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getModalExclusionType--\" title=\"class or interface in java.awt\">getModalExclusionType</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getMostRecentFocusOwner--\" title=\"class or interface in java.awt\">getMostRecentFocusOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getOpacity--\" title=\"class or interface in java.awt\">getOpacity</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getOwnedWindows--\" title=\"class or interface in java.awt\">getOwnedWindows</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getOwner--\" title=\"class or interface in java.awt\">getOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getOwnerlessWindows--\" title=\"class or interface in java.awt\">getOwnerlessWindows</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getShape--\" title=\"class or interface in java.awt\">getShape</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getToolkit--\" title=\"class or interface in java.awt\">getToolkit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getType--\" title=\"class or interface in java.awt\">getType</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getWarningString--\" title=\"class or interface in java.awt\">getWarningString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getWindowFocusListeners--\" title=\"class or interface in java.awt\">getWindowFocusListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getWindowListeners--\" title=\"class or interface in java.awt\">getWindowListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getWindows--\" title=\"class or interface in java.awt\">getWindows</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getWindowStateListeners--\" title=\"class or interface in java.awt\">getWindowStateListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isActive--\" title=\"class or interface in java.awt\">isActive</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isAlwaysOnTop--\" title=\"class or interface in java.awt\">isAlwaysOnTop</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isAlwaysOnTopSupported--\" title=\"class or interface in java.awt\">isAlwaysOnTopSupported</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isAutoRequestFocus--\" title=\"class or interface in java.awt\">isAutoRequestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isFocusableWindow--\" title=\"class or interface in java.awt\">isFocusableWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isFocusCycleRoot--\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isFocused--\" title=\"class or interface in java.awt\">isFocused</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isLocationByPlatform--\" title=\"class or interface in java.awt\">isLocationByPlatform</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isOpaque--\" title=\"class or interface in java.awt\">isOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isShowing--\" title=\"class or interface in java.awt\">isShowing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isValidateRoot--\" title=\"class or interface in java.awt\">isValidateRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#pack--\" title=\"class or interface in java.awt\">pack</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#paint-java.awt.Graphics-\" title=\"class or interface in java.awt\">paint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#postEvent-java.awt.Event-\" title=\"class or interface in java.awt\">postEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#processEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">processEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#processWindowFocusEvent-java.awt.event.WindowEvent-\" title=\"class or interface in java.awt\">processWindowFocusEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#processWindowStateEvent-java.awt.event.WindowEvent-\" title=\"class or interface in java.awt\">processWindowStateEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#removeNotify--\" title=\"class or interface in java.awt\">removeNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#removeWindowFocusListener-java.awt.event.WindowFocusListener-\" title=\"class or interface in java.awt\">removeWindowFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#removeWindowListener-java.awt.event.WindowListener-\" title=\"class or interface in java.awt\">removeWindowListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#removeWindowStateListener-java.awt.event.WindowStateListener-\" title=\"class or interface in java.awt\">removeWindowStateListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#reshape-int-int-int-int-\" title=\"class or interface in java.awt\">reshape</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setAlwaysOnTop-boolean-\" title=\"class or interface in java.awt\">setAlwaysOnTop</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setAutoRequestFocus-boolean-\" title=\"class or interface in java.awt\">setAutoRequestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setBounds-int-int-int-int-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setCursor-java.awt.Cursor-\" title=\"class or interface in java.awt\">setCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setFocusableWindowState-boolean-\" title=\"class or interface in java.awt\">setFocusableWindowState</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setFocusCycleRoot-boolean-\" title=\"class or interface in java.awt\">setFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setIconImage-java.awt.Image-\" title=\"class or interface in java.awt\">setIconImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setIconImages-java.util.List-\" title=\"class or interface in java.awt\">setIconImages</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setLocation-int-int-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setLocation-java.awt.Point-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setLocationByPlatform-boolean-\" title=\"class or interface in java.awt\">setLocationByPlatform</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setLocationRelativeTo-java.awt.Component-\" title=\"class or interface in java.awt\">setLocationRelativeTo</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setMinimumSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setModalExclusionType-java.awt.Dialog.ModalExclusionType-\" title=\"class or interface in java.awt\">setModalExclusionType</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setSize-int-int-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setType-java.awt.Window.Type-\" title=\"class or interface in java.awt\">setType</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#toFront--\" title=\"class or interface in java.awt\">toFront</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.lang.String-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">addContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#applyComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">applyComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#areFocusTraversalKeysSet-int-\" title=\"class or interface in java.awt\">areFocusTraversalKeysSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#countComponents--\" title=\"class or interface in java.awt\">countComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#deliverEvent-java.awt.Event-\" title=\"class or interface in java.awt\">deliverEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#doLayout--\" title=\"class or interface in java.awt\">doLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-int-int-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getAlignmentX--\" title=\"class or interface in java.awt\">getAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getAlignmentY--\" title=\"class or interface in java.awt\">getAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponent-int-\" title=\"class or interface in java.awt\">getComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-int-int-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentCount--\" title=\"class or interface in java.awt\">getComponentCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponents--\" title=\"class or interface in java.awt\">getComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentZOrder-java.awt.Component-\" title=\"class or interface in java.awt\">getComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getContainerListeners--\" title=\"class or interface in java.awt\">getContainerListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalPolicy--\" title=\"class or interface in java.awt\">getFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getInsets--\" title=\"class or interface in java.awt\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getLayout--\" title=\"class or interface in java.awt\">getLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMaximumSize--\" title=\"class or interface in java.awt\">getMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMinimumSize--\" title=\"class or interface in java.awt\">getMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMousePosition-boolean-\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getPreferredSize--\" title=\"class or interface in java.awt\">getPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#insets--\" title=\"class or interface in java.awt\">insets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#invalidate--\" title=\"class or interface in java.awt\">invalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isAncestorOf-java.awt.Component-\" title=\"class or interface in java.awt\">isAncestorOf</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot-java.awt.Container-\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicyProvider--\" title=\"class or interface in java.awt\">isFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicySet--\" title=\"class or interface in java.awt\">isFocusTraversalPolicySet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#layout--\" title=\"class or interface in java.awt\">layout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintStream-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintWriter-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#locate-int-int-\" title=\"class or interface in java.awt\">locate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#minimumSize--\" title=\"class or interface in java.awt\">minimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paintComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#preferredSize--\" title=\"class or interface in java.awt\">preferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#print-java.awt.Graphics-\" title=\"class or interface in java.awt\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#printComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">printComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processContainerEvent-java.awt.event.ContainerEvent-\" title=\"class or interface in java.awt\">processContainerEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#remove-int-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeAll--\" title=\"class or interface in java.awt\">removeAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">removeContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setComponentZOrder-java.awt.Component-int-\" title=\"class or interface in java.awt\">setComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalKeys-int-java.util.Set-\" title=\"class or interface in java.awt\">setFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicy-java.awt.FocusTraversalPolicy-\" title=\"class or interface in java.awt\">setFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicyProvider-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFont-java.awt.Font-\" title=\"class or interface in java.awt\">setFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#transferFocusDownCycle--\" title=\"class or interface in java.awt\">transferFocusDownCycle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validate--\" title=\"class or interface in java.awt\">validate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validateTree--\" title=\"class or interface in java.awt\">validateTree</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#action-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">action</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#add-java.awt.PopupMenu-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">addComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">addFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">addHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">addHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">addInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">addKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">addMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">addMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">addMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#bounds--\" title=\"class or interface in java.awt\">bounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#coalesceEvents-java.awt.AWTEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">coalesceEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-int-int-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-java.awt.Point-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-java.awt.image.ImageProducer-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-int-int-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-java.awt.ImageCapabilities-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disable--\" title=\"class or interface in java.awt\">disable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disableEvents-long-\" title=\"class or interface in java.awt\">disableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#dispatchEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">dispatchEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable--\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable-boolean-\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableEvents-long-\" title=\"class or interface in java.awt\">enableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableInputMethods-boolean-\" title=\"class or interface in java.awt\">enableInputMethods</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-boolean-boolean-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-byte-byte-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-char-char-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-double-double-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-float-float-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-int-int-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-long-long-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-short-short-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBaseline-int-int-\" title=\"class or interface in java.awt\">getBaseline</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBaselineResizeBehavior--\" title=\"class or interface in java.awt\">getBaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds--\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getColorModel--\" title=\"class or interface in java.awt\">getColorModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentListeners--\" title=\"class or interface in java.awt\">getComponentListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentOrientation--\" title=\"class or interface in java.awt\">getComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getCursor--\" title=\"class or interface in java.awt\">getCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getDropTarget--\" title=\"class or interface in java.awt\">getDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusListeners--\" title=\"class or interface in java.awt\">getFocusListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusTraversalKeysEnabled--\" title=\"class or interface in java.awt\">getFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFont--\" title=\"class or interface in java.awt\">getFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFontMetrics-java.awt.Font-\" title=\"class or interface in java.awt\">getFontMetrics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getForeground--\" title=\"class or interface in java.awt\">getForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getGraphicsConfiguration--\" title=\"class or interface in java.awt\">getGraphicsConfiguration</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHeight--\" title=\"class or interface in java.awt\">getHeight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyBoundsListeners--\" title=\"class or interface in java.awt\">getHierarchyBoundsListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyListeners--\" title=\"class or interface in java.awt\">getHierarchyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getIgnoreRepaint--\" title=\"class or interface in java.awt\">getIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodListeners--\" title=\"class or interface in java.awt\">getInputMethodListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodRequests--\" title=\"class or interface in java.awt\">getInputMethodRequests</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getKeyListeners--\" title=\"class or interface in java.awt\">getKeyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation--\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation-java.awt.Point-\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocationOnScreen--\" title=\"class or interface in java.awt\">getLocationOnScreen</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseListeners--\" title=\"class or interface in java.awt\">getMouseListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseMotionListeners--\" title=\"class or interface in java.awt\">getMouseMotionListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMousePosition--\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseWheelListeners--\" title=\"class or interface in java.awt\">getMouseWheelListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getName--\" title=\"class or interface in java.awt\">getName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getParent--\" title=\"class or interface in java.awt\">getParent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPeer--\" title=\"class or interface in java.awt\">getPeer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners--\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners-java.lang.String-\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize--\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getTreeLock--\" title=\"class or interface in java.awt\">getTreeLock</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getWidth--\" title=\"class or interface in java.awt\">getWidth</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getX--\" title=\"class or interface in java.awt\">getX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getY--\" title=\"class or interface in java.awt\">getY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#gotFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">gotFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#handleEvent-java.awt.Event-\" title=\"class or interface in java.awt\">handleEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hasFocus--\" title=\"class or interface in java.awt\">hasFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#imageUpdate-java.awt.Image-int-int-int-int-int-\" title=\"class or interface in java.awt\">imageUpdate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#inside-int-int-\" title=\"class or interface in java.awt\">inside</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isBackgroundSet--\" title=\"class or interface in java.awt\">isBackgroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isCursorSet--\" title=\"class or interface in java.awt\">isCursorSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDisplayable--\" title=\"class or interface in java.awt\">isDisplayable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDoubleBuffered--\" title=\"class or interface in java.awt\">isDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isEnabled--\" title=\"class or interface in java.awt\">isEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusable--\" title=\"class or interface in java.awt\">isFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusOwner--\" title=\"class or interface in java.awt\">isFocusOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusTraversable--\" title=\"class or interface in java.awt\">isFocusTraversable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFontSet--\" title=\"class or interface in java.awt\">isFontSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isForegroundSet--\" title=\"class or interface in java.awt\">isForegroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isLightweight--\" title=\"class or interface in java.awt\">isLightweight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMaximumSizeSet--\" title=\"class or interface in java.awt\">isMaximumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMinimumSizeSet--\" title=\"class or interface in java.awt\">isMinimumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isPreferredSizeSet--\" title=\"class or interface in java.awt\">isPreferredSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isValid--\" title=\"class or interface in java.awt\">isValid</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isVisible--\" title=\"class or interface in java.awt\">isVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyDown-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyUp-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list--\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintStream-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintWriter-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#location--\" title=\"class or interface in java.awt\">location</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#lostFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">lostFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDown-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDrag-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDrag</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseEnter-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseEnter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseExit-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseExit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseMove-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseMove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseUp-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#move-int-int-\" title=\"class or interface in java.awt\">move</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#nextFocus--\" title=\"class or interface in java.awt\">nextFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#paintAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#printAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">printAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processComponentEvent-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt\">processComponentEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processFocusEvent-java.awt.event.FocusEvent-\" title=\"class or interface in java.awt\">processFocusEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyBoundsEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyBoundsEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processInputMethodEvent-java.awt.event.InputMethodEvent-\" title=\"class or interface in java.awt\">processInputMethodEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in java.awt\">processKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseEvent-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt\">processMouseEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseMotionEvent-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt\">processMouseMotionEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseWheelEvent-java.awt.event.MouseWheelEvent-\" title=\"class or interface in java.awt\">processMouseWheelEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#remove-java.awt.MenuComponent-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">removeComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">removeFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">removeHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">removeHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">removeInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">removeKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">removeMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">removeMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">removeMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint--\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-int-int-int-int-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-long-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocus--\" title=\"class or interface in java.awt\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocus-boolean-\" title=\"class or interface in java.awt\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocusInWindow--\" title=\"class or interface in java.awt\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocusInWindow-boolean-\" title=\"class or interface in java.awt\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#resize-java.awt.Dimension-\" title=\"class or interface in java.awt\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#resize-int-int-\" title=\"class or interface in java.awt\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#revalidate--\" title=\"class or interface in java.awt\">revalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">setComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setDropTarget-java.awt.dnd.DropTarget-\" title=\"class or interface in java.awt\">setDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setEnabled-boolean-\" title=\"class or interface in java.awt\">setEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusable-boolean-\" title=\"class or interface in java.awt\">setFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusTraversalKeysEnabled-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setForeground-java.awt.Color-\" title=\"class or interface in java.awt\">setForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setIgnoreRepaint-boolean-\" title=\"class or interface in java.awt\">setIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocale-java.util.Locale-\" title=\"class or interface in java.awt\">setLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setMaximumSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setName-java.lang.String-\" title=\"class or interface in java.awt\">setName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setPreferredSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show-boolean-\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#size--\" title=\"class or interface in java.awt\">size</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#toString--\" title=\"class or interface in java.awt\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocus--\" title=\"class or interface in java.awt\">transferFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusBackward--\" title=\"class or interface in java.awt\">transferFocusBackward</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusUpCycle--\" title=\"class or interface in java.awt\">transferFocusUpCycle</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"ListOptionPane-javax.swing.JFrame-java.lang.Iterable-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>ListOptionPane</h4>\n<pre>public&nbsp;ListOptionPane(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true\" title=\"class or interface in javax.swing\">JFrame</a>&nbsp;frame,\n                      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;items)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/gui/JComboGroupBox.html\" title=\"class in stanford.cs106.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/gui/ResizeListener.html\" title=\"interface in stanford.cs106.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/gui/ListOptionPane.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ListOptionPane.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JDialog\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.javax.swing.JDialog\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#methods.inherited.from.class.acm.gui.JListOptionPane\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li>Method</li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/gui/ResizeListener.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:03 PDT 2017 -->\n<title>ResizeListener</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"ResizeListener\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":6};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],4:[\"t3\",\"Abstract Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/gui/ListOptionPane.html\" title=\"class in stanford.cs106.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/gui/WindowCloseKeyListener.html\" title=\"class in stanford.cs106.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/gui/ResizeListener.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ResizeListener.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.gui</div>\n<h2 title=\"Interface ResizeListener\" class=\"title\">Interface ResizeListener</h2>\n</div>\n<div class=\"contentContainer\">\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public interface <span class=\"typeNameLabel\">ResizeListener</span></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t3\" class=\"tableTab\"><span><a href=\"javascript:show(4);\">Abstract Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/ResizeListener.html#componentResized-java.awt.event.ComponentEvent-\">componentResized</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentEvent</a>&nbsp;event)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"componentResized-java.awt.event.ComponentEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>componentResized</h4>\n<pre>void&nbsp;componentResized(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentEvent</a>&nbsp;event)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/gui/ListOptionPane.html\" title=\"class in stanford.cs106.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/gui/WindowCloseKeyListener.html\" title=\"class in stanford.cs106.gui\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/gui/ResizeListener.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ResizeListener.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/gui/WindowCloseKeyListener.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:03 PDT 2017 -->\n<title>WindowCloseKeyListener</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"WindowCloseKeyListener\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":10,\"i2\":10,\"i3\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/gui/ResizeListener.html\" title=\"interface in stanford.cs106.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li>Next&nbsp;Class</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/gui/WindowCloseKeyListener.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"WindowCloseKeyListener.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.gui</div>\n<h2 title=\"Class WindowCloseKeyListener\" class=\"title\">Class WindowCloseKeyListener</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.gui.WindowCloseKeyListener</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">WindowCloseKeyListener</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>\nimplements <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a></pre>\n<div class=\"block\">Makes a given window close itself when you press Escape or Ctrl-W.</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/WindowCloseKeyListener.html#WindowCloseKeyListener-java.awt.Window-\">WindowCloseKeyListener</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true\" title=\"class or interface in java.awt\">Window</a>&nbsp;window)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/WindowCloseKeyListener.html#add-java.awt.Window-\">add</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true\" title=\"class or interface in java.awt\">Window</a>&nbsp;window)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/WindowCloseKeyListener.html#keyPressed-java.awt.event.KeyEvent-\">keyPressed</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyEvent</a>&nbsp;e)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/WindowCloseKeyListener.html#keyReleased-java.awt.event.KeyEvent-\">keyReleased</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyEvent</a>&nbsp;e)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/gui/WindowCloseKeyListener.html#keyTyped-java.awt.event.KeyEvent-\">keyTyped</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyEvent</a>&nbsp;e)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"WindowCloseKeyListener-java.awt.Window-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>WindowCloseKeyListener</h4>\n<pre>public&nbsp;WindowCloseKeyListener(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true\" title=\"class or interface in java.awt\">Window</a>&nbsp;window)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"add-java.awt.Window-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>public static&nbsp;void&nbsp;add(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true\" title=\"class or interface in java.awt\">Window</a>&nbsp;window)</pre>\n</li>\n</ul>\n<a name=\"keyPressed-java.awt.event.KeyEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>keyPressed</h4>\n<pre>public&nbsp;void&nbsp;keyPressed(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyEvent</a>&nbsp;e)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true#keyPressed-java.awt.event.KeyEvent-\" title=\"class or interface in java.awt.event\">keyPressed</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"keyReleased-java.awt.event.KeyEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>keyReleased</h4>\n<pre>public&nbsp;void&nbsp;keyReleased(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyEvent</a>&nbsp;e)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true#keyReleased-java.awt.event.KeyEvent-\" title=\"class or interface in java.awt.event\">keyReleased</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"keyTyped-java.awt.event.KeyEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>keyTyped</h4>\n<pre>public&nbsp;void&nbsp;keyTyped(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyEvent</a>&nbsp;e)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true#keyTyped-java.awt.event.KeyEvent-\" title=\"class or interface in java.awt.event\">keyTyped</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/gui/ResizeListener.html\" title=\"interface in stanford.cs106.gui\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li>Next&nbsp;Class</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/gui/WindowCloseKeyListener.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"WindowCloseKeyListener.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/gui/package-frame.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>stanford.cs106.gui</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<h1 class=\"bar\"><a href=\"../../../stanford/cs106/gui/package-summary.html\" target=\"classFrame\">stanford.cs106.gui</a></h1>\n<div class=\"indexContainer\">\n<h2 title=\"Interfaces\">Interfaces</h2>\n<ul title=\"Interfaces\">\n<li><a href=\"ResizeListener.html\" title=\"interface in stanford.cs106.gui\" target=\"classFrame\"><span class=\"interfaceName\">ResizeListener</span></a></li>\n</ul>\n<h2 title=\"Classes\">Classes</h2>\n<ul title=\"Classes\">\n<li><a href=\"ClipboardUtils.html\" title=\"class in stanford.cs106.gui\" target=\"classFrame\">ClipboardUtils</a></li>\n<li><a href=\"GuiUtils.html\" title=\"class in stanford.cs106.gui\" target=\"classFrame\">GuiUtils</a></li>\n<li><a href=\"JComboGroupBox.html\" title=\"class in stanford.cs106.gui\" target=\"classFrame\">JComboGroupBox</a></li>\n<li><a href=\"ListOptionPane.html\" title=\"class in stanford.cs106.gui\" target=\"classFrame\">ListOptionPane</a></li>\n<li><a href=\"WindowCloseKeyListener.html\" title=\"class in stanford.cs106.gui\" target=\"classFrame\">WindowCloseKeyListener</a></li>\n</ul>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/gui/package-summary.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>stanford.cs106.gui</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"stanford.cs106.gui\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li class=\"navBarCell1Rev\">Package</li>\n<li>Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/collections/package-summary.html\">Prev&nbsp;Package</a></li>\n<li><a href=\"../../../stanford/cs106/io/package-summary.html\">Next&nbsp;Package</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/gui/package-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 title=\"Package\" class=\"title\">Package&nbsp;stanford.cs106.gui</h1>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Interface Summary table, listing interfaces, and an explanation\">\n<caption><span>Interface Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Interface</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/gui/ResizeListener.html\" title=\"interface in stanford.cs106.gui\">ResizeListener</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Class Summary table, listing classes, and an explanation\">\n<caption><span>Class Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Class</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/gui/ClipboardUtils.html\" title=\"class in stanford.cs106.gui\">ClipboardUtils</a></td>\n<td class=\"colLast\">\n<div class=\"block\">Utility methods to set and get the state of the current OS clipboard.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\">GuiUtils</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/gui/JComboGroupBox.html\" title=\"class in stanford.cs106.gui\">JComboGroupBox</a></td>\n<td class=\"colLast\">\n<div class=\"block\">A JComboBox that allows group tags, like the HTML optgroup tag.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/gui/ListOptionPane.html\" title=\"class in stanford.cs106.gui\">ListOptionPane</a></td>\n<td class=\"colLast\">\n<div class=\"block\">This class is here only for backward compatibility.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/gui/WindowCloseKeyListener.html\" title=\"class in stanford.cs106.gui\">WindowCloseKeyListener</a></td>\n<td class=\"colLast\">\n<div class=\"block\">Makes a given window close itself when you press Escape or Ctrl-W.</div>\n</td>\n</tr>\n</tbody>\n</table>\n</li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li class=\"navBarCell1Rev\">Package</li>\n<li>Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/collections/package-summary.html\">Prev&nbsp;Package</a></li>\n<li><a href=\"../../../stanford/cs106/io/package-summary.html\">Next&nbsp;Package</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/gui/package-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/gui/package-tree.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>stanford.cs106.gui Class Hierarchy</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"stanford.cs106.gui Class Hierarchy\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/collections/package-tree.html\">Prev</a></li>\n<li><a href=\"../../../stanford/cs106/io/package-tree.html\">Next</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/gui/package-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 class=\"title\">Hierarchy For Package stanford.cs106.gui</h1>\n<span class=\"packageHierarchyLabel\">Package Hierarchies:</span>\n<ul class=\"horizontal\">\n<li><a href=\"../../../overview-tree.html\">All Packages</a></li>\n</ul>\n</div>\n<div class=\"contentContainer\">\n<h2 title=\"Class Hierarchy\">Class Hierarchy</h2>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Object</span></a>\n<ul>\n<li type=\"circle\">stanford.cs106.gui.<a href=\"../../../stanford/cs106/gui/ClipboardUtils.html\" title=\"class in stanford.cs106.gui\"><span class=\"typeNameLink\">ClipboardUtils</span></a></li>\n<li type=\"circle\">java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\"><span class=\"typeNameLink\">Component</span></a> (implements java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\"><span class=\"typeNameLink\">Container</span></a>\n<ul>\n<li type=\"circle\">javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\"><span class=\"typeNameLink\">JComponent</span></a> (implements java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html?is-external=true\" title=\"class or interface in javax.swing\"><span class=\"typeNameLink\">JComboBox</span></a>&lt;E&gt; (implements javax.accessibility.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/ItemSelectable.html?is-external=true\" title=\"class or interface in java.awt\">ItemSelectable</a>, javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListDataListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListDataListener</a>)\n<ul>\n<li type=\"circle\">stanford.cs106.gui.<a href=\"../../../stanford/cs106/gui/JComboGroupBox.html\" title=\"class in stanford.cs106.gui\"><span class=\"typeNameLink\">JComboGroupBox</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li type=\"circle\">java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true\" title=\"class or interface in java.awt\"><span class=\"typeNameLink\">Window</span></a> (implements javax.accessibility.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>)\n<ul>\n<li type=\"circle\">java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true\" title=\"class or interface in java.awt\"><span class=\"typeNameLink\">Dialog</span></a>\n<ul>\n<li type=\"circle\">javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true\" title=\"class or interface in javax.swing\"><span class=\"typeNameLink\">JDialog</span></a> (implements javax.accessibility.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/RootPaneContainer.html?is-external=true\" title=\"class or interface in javax.swing\">RootPaneContainer</a>, javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/WindowConstants.html?is-external=true\" title=\"class or interface in javax.swing\">WindowConstants</a>)\n<ul>\n<li type=\"circle\">acm.gui.<a href=\"../../../acm/gui/JListOptionPane.html\" title=\"class in acm.gui\"><span class=\"typeNameLink\">JListOptionPane</span></a> (implements java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>)\n<ul>\n<li type=\"circle\">stanford.cs106.gui.<a href=\"../../../stanford/cs106/gui/ListOptionPane.html\" title=\"class in stanford.cs106.gui\"><span class=\"typeNameLink\">ListOptionPane</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li type=\"circle\">stanford.cs106.gui.<a href=\"../../../stanford/cs106/gui/GuiUtils.html\" title=\"class in stanford.cs106.gui\"><span class=\"typeNameLink\">GuiUtils</span></a></li>\n<li type=\"circle\">stanford.cs106.gui.<a href=\"../../../stanford/cs106/gui/WindowCloseKeyListener.html\" title=\"class in stanford.cs106.gui\"><span class=\"typeNameLink\">WindowCloseKeyListener</span></a> (implements java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>)</li>\n</ul>\n</li>\n</ul>\n<h2 title=\"Interface Hierarchy\">Interface Hierarchy</h2>\n<ul>\n<li type=\"circle\">stanford.cs106.gui.<a href=\"../../../stanford/cs106/gui/ResizeListener.html\" title=\"interface in stanford.cs106.gui\"><span class=\"typeNameLink\">ResizeListener</span></a></li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/collections/package-tree.html\">Prev</a></li>\n<li><a href=\"../../../stanford/cs106/io/package-tree.html\">Next</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/gui/package-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/io/ExtensionFileFilter.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:03 PDT 2017 -->\n<title>ExtensionFileFilter</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"ExtensionFileFilter\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Class</li>\n<li><a href=\"../../../stanford/cs106/io/IORuntimeException.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/io/ExtensionFileFilter.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ExtensionFileFilter.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.io</div>\n<h2 title=\"Class ExtensionFileFilter\" class=\"title\">Class ExtensionFileFilter</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/filechooser/FileFilter.html?is-external=true\" title=\"class or interface in javax.swing.filechooser\">javax.swing.filechooser.FileFilter</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.io.ExtensionFileFilter</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FileFilter.html?is-external=true\" title=\"class or interface in java.io\">FileFilter</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">ExtensionFileFilter</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/filechooser/FileFilter.html?is-external=true\" title=\"class or interface in javax.swing.filechooser\">FileFilter</a>\nimplements <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FileFilter.html?is-external=true\" title=\"class or interface in java.io\">FileFilter</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/ExtensionFileFilter.html#ExtensionFileFilter-java.lang.String...-\">ExtensionFileFilter</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;extensions)</code>\n<div class=\"block\">Filters to keep only the given extensions (don't include the dot in front of each).</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/ExtensionFileFilter.html#accept-java.io.File-\">accept</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/ExtensionFileFilter.html#getDescription--\">getDescription</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"ExtensionFileFilter-java.lang.String...-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>ExtensionFileFilter</h4>\n<pre>public&nbsp;ExtensionFileFilter(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;extensions)</pre>\n<div class=\"block\">Filters to keep only the given extensions (don't include the dot in front of each).</div>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"accept-java.io.File-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>accept</h4>\n<pre>public&nbsp;boolean&nbsp;accept(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FileFilter.html?is-external=true#accept-java.io.File-\" title=\"class or interface in java.io\">accept</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FileFilter.html?is-external=true\" title=\"class or interface in java.io\">FileFilter</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/filechooser/FileFilter.html?is-external=true#accept-java.io.File-\" title=\"class or interface in javax.swing.filechooser\">accept</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/filechooser/FileFilter.html?is-external=true\" title=\"class or interface in javax.swing.filechooser\">FileFilter</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getDescription--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>getDescription</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getDescription()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/filechooser/FileFilter.html?is-external=true#getDescription--\" title=\"class or interface in javax.swing.filechooser\">getDescription</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/filechooser/FileFilter.html?is-external=true\" title=\"class or interface in javax.swing.filechooser\">FileFilter</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Class</li>\n<li><a href=\"../../../stanford/cs106/io/IORuntimeException.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/io/ExtensionFileFilter.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ExtensionFileFilter.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/io/IORuntimeException.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:03 PDT 2017 -->\n<title>IORuntimeException</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"IORuntimeException\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/io/ExtensionFileFilter.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/io/IOUtils.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/io/IORuntimeException.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"IORuntimeException.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#methods.inherited.from.class.java.lang.Throwable\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li>Method</li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.io</div>\n<h2 title=\"Class IORuntimeException\" class=\"title\">Class IORuntimeException</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Throwable</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Exception</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.RuntimeException</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.io.IORuntimeException</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a></dd>\n</dl>\n<dl>\n<dt>Direct Known Subclasses:</dt>\n<dd><a href=\"../../../stanford/cs106/net/SimpleServer.SimpleServerException.html\" title=\"class in stanford.cs106.net\">SimpleServer.SimpleServerException</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">IORuntimeException</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.html?is-external=true\" title=\"class or interface in java.lang\">RuntimeException</a></pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../serialized-form.html#stanford.cs106.io.IORuntimeException\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/IORuntimeException.html#IORuntimeException-java.lang.String-\">IORuntimeException</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/IORuntimeException.html#IORuntimeException-java.lang.String-java.lang.Throwable-\">IORuntimeException</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s,\n                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;t)</code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/IORuntimeException.html#IORuntimeException-java.lang.Throwable-\">IORuntimeException</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;t)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Throwable\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#addSuppressed-java.lang.Throwable-\" title=\"class or interface in java.lang\">addSuppressed</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#fillInStackTrace--\" title=\"class or interface in java.lang\">fillInStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getCause--\" title=\"class or interface in java.lang\">getCause</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getLocalizedMessage--\" title=\"class or interface in java.lang\">getLocalizedMessage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getMessage--\" title=\"class or interface in java.lang\">getMessage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getStackTrace--\" title=\"class or interface in java.lang\">getStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getSuppressed--\" title=\"class or interface in java.lang\">getSuppressed</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#initCause-java.lang.Throwable-\" title=\"class or interface in java.lang\">initCause</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#printStackTrace--\" title=\"class or interface in java.lang\">printStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#printStackTrace-java.io.PrintStream-\" title=\"class or interface in java.lang\">printStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#printStackTrace-java.io.PrintWriter-\" title=\"class or interface in java.lang\">printStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#setStackTrace-java.lang.StackTraceElement:A-\" title=\"class or interface in java.lang\">setStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"IORuntimeException-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>IORuntimeException</h4>\n<pre>public&nbsp;IORuntimeException(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n</li>\n</ul>\n<a name=\"IORuntimeException-java.lang.String-java.lang.Throwable-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>IORuntimeException</h4>\n<pre>public&nbsp;IORuntimeException(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s,\n                          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;t)</pre>\n</li>\n</ul>\n<a name=\"IORuntimeException-java.lang.Throwable-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>IORuntimeException</h4>\n<pre>public&nbsp;IORuntimeException(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;t)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/io/ExtensionFileFilter.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/io/IOUtils.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/io/IORuntimeException.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"IORuntimeException.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#methods.inherited.from.class.java.lang.Throwable\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li>Method</li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/io/IOUtils.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:03 PDT 2017 -->\n<title>IOUtils</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"IOUtils\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9,\"i2\":9,\"i3\":9,\"i4\":9,\"i5\":9,\"i6\":9,\"i7\":9,\"i8\":9,\"i9\":9,\"i10\":9,\"i11\":9,\"i12\":9,\"i13\":9,\"i14\":9,\"i15\":9,\"i16\":9,\"i17\":9,\"i18\":9,\"i19\":9,\"i20\":9,\"i21\":9,\"i22\":9,\"i23\":9,\"i24\":9,\"i25\":9,\"i26\":9,\"i27\":9,\"i28\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/io/IORuntimeException.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/io/LimitedPrintStream.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/io/IOUtils.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"IOUtils.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.io</div>\n<h2 title=\"Class IOUtils\" class=\"title\">Class IOUtils</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.io.IOUtils</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">IOUtils</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n<div class=\"block\">Utility methods related to file processing and I/O.</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/IOUtils.html#copy-java.io.File-java.io.File-\">copy</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;in,\n    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;out)</code>\n<div class=\"block\">Copies the entire contents of the given in file into the given out file.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/IOUtils.html#getCurrentDirectory--\">getCurrentDirectory</a></span>()</code>\n<div class=\"block\">The directory in which the current app is running.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/IOUtils.html#getExpectedInputDirectory--\">getExpectedInputDirectory</a></span>()</code>\n<div class=\"block\">Returns a directory that is likely to contain expected input files for\n a running Stanford lib project.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/IOUtils.html#getExpectedOutputDirectory--\">getExpectedOutputDirectory</a></span>()</code>\n<div class=\"block\">Returns a directory that is likely to contain expected output files for\n a running Stanford lib project.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/IOUtils.html#getExtension-java.io.File-\">getExtension</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)</code>\n<div class=\"block\">The file name extension (such as mp3, doc, txt) of the given file's name.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/IOUtils.html#getExtension-java.lang.String-\">getExtension</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fileName)</code>\n<div class=\"block\">The file name extension (such as mp3, doc, txt) of the given file's name.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/IOUtils.html#getFileName-java.lang.String-\">getFileName</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filePath)</code>\n<div class=\"block\">Strips folders from file's name.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/IOUtils.html#getFolder-java.lang.String-\">getFolder</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fileName)</code>\n<div class=\"block\">The folder name of the given file path.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/IOUtils.html#getTempFolder--\">getTempFolder</a></span>()</code>\n<div class=\"block\">The full path to the server's temp directory, such as \"/tmp/foobar/\".</div>\n</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/IOUtils.html#readEntireFile-java.io.File-\">readEntireFile</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)</code>\n<div class=\"block\">Reads the given file's text fully and returns it as a String.</div>\n</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/IOUtils.html#readEntireFile-java.lang.String-\">readEntireFile</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fileName)</code>\n<div class=\"block\">Reads the given file's text fully and returns it as a String.</div>\n</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static byte[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/IOUtils.html#readEntireFileBytes-java.io.File-\">readEntireFileBytes</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)</code>\n<div class=\"block\">Reads the full text from the given file,\n and returns it as an array of bytes.</div>\n</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>static byte[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/IOUtils.html#readEntireFileBytes-java.lang.String-\">readEntireFileBytes</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fileName)</code>\n<div class=\"block\">Reads the full text from the file with the given name,\n and returns it as an array of bytes.</div>\n</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/IOUtils.html#readEntireReader-java.io.Reader-\">readEntireReader</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Reader.html?is-external=true\" title=\"class or interface in java.io\">Reader</a>&nbsp;reader)</code>\n<div class=\"block\">Reads the given reader's text fully and returns it as a String.</div>\n</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>static byte[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/IOUtils.html#readEntireReaderBytes-java.io.Reader-\">readEntireReaderBytes</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Reader.html?is-external=true\" title=\"class or interface in java.io\">Reader</a>&nbsp;reader)</code>\n<div class=\"block\">Reads the given reader's text fully and returns it as an array of bytes.</div>\n</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/IOUtils.html#readEntireScanner-java.util.Scanner-\">readEntireScanner</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Scanner.html?is-external=true\" title=\"class or interface in java.util\">Scanner</a>&nbsp;input)</code>\n<div class=\"block\">Reads the given scanner's text fully and returns it as a String.</div>\n</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/IOUtils.html#readEntireStream-java.io.InputStream-\">readEntireStream</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;stream)</code>\n<div class=\"block\">Reads the given stream's text fully and returns it as a String.</div>\n</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static byte[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/IOUtils.html#readEntireStreamBytes-java.io.InputStream-\">readEntireStreamBytes</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;stream)</code>\n<div class=\"block\">Reads the given stream's text fully and returns it as an array of bytes.</div>\n</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/IOUtils.html#redirectInput-java.lang.String-\">redirectInput</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;data)</code>\n<div class=\"block\">Redirects System.in to pull input data from the text in the given string.</div>\n</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/ByteArrayOutputStream.html?is-external=true\" title=\"class or interface in java.io\">ByteArrayOutputStream</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/IOUtils.html#redirectOutput--\">redirectOutput</a></span>()</code>\n<div class=\"block\">Redirects System.out to a byte array output stream, which is returned.</div>\n</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/ByteArrayOutputStream.html?is-external=true\" title=\"class or interface in java.io\">ByteArrayOutputStream</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/IOUtils.html#redirectOutput-boolean-\">redirectOutput</a></span>(boolean&nbsp;limit)</code>\n<div class=\"block\">Redirects System.out to a byte array output stream, which is returned.</div>\n</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/IOUtils.html#removeExtension-java.lang.String-\">removeExtension</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fileName)</code>\n<div class=\"block\">Removes the file's extension; e.g.</div>\n</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/IOUtils.html#removeFolder-java.lang.String-\">removeFolder</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fileName)</code>\n<div class=\"block\">Removes any leading folders from the given file name;\n e.g.</div>\n</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/IOUtils.html#stopRedirectingInput--\">stopRedirectingInput</a></span>()</code>\n<div class=\"block\">Sets System.in back to its original state.</div>\n</td>\n</tr>\n<tr id=\"i24\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/IOUtils.html#stopRedirectingOutput--\">stopRedirectingOutput</a></span>()</code>\n<div class=\"block\">Sets System.out/err back to their original state.</div>\n</td>\n</tr>\n<tr id=\"i25\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/IOUtils.html#toInputStream-java.lang.String-\">toInputStream</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;data)</code>\n<div class=\"block\">Creates and returns an input stream to read the characters of the given\n string as bytes, one character at a time.</div>\n</td>\n</tr>\n<tr id=\"i26\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/IOUtils.html#writeBytes-byte:A-java.lang.String-\">writeBytes</a></span>(byte[]&nbsp;bytes,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fileName)</code>\n<div class=\"block\">Writes the given bytes into the given file, replacing any existing content.</div>\n</td>\n</tr>\n<tr id=\"i27\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/IOUtils.html#writeEntireFile-java.lang.String-java.io.File-\">writeEntireFile</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)</code>\n<div class=\"block\">Writes the given text into the given file, replacing any existing text.</div>\n</td>\n</tr>\n<tr id=\"i28\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/IOUtils.html#writeEntireFile-java.lang.String-java.lang.String-\">writeEntireFile</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fileName)</code>\n<div class=\"block\">Writes the given text into the file with the given name, replacing any existing text.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"copy-java.io.File-java.io.File-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>copy</h4>\n<pre>public static&nbsp;void&nbsp;copy(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;in,\n                        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;out)</pre>\n<div class=\"block\">Copies the entire contents of the given in file into the given out file.</div>\n</li>\n</ul>\n<a name=\"getCurrentDirectory--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getCurrentDirectory</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getCurrentDirectory()</pre>\n<div class=\"block\">The directory in which the current app is running.</div>\n</li>\n</ul>\n<a name=\"getExpectedInputDirectory--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getExpectedInputDirectory</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;getExpectedInputDirectory()</pre>\n<div class=\"block\">Returns a directory that is likely to contain expected input files for\n a running Stanford lib project.\n Checks in subfolders of the current directory such as input/, expected-output/, etc.</div>\n</li>\n</ul>\n<a name=\"getExpectedOutputDirectory--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getExpectedOutputDirectory</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;getExpectedOutputDirectory()</pre>\n<div class=\"block\">Returns a directory that is likely to contain expected output files for\n a running Stanford lib project.\n Checks in subfolders of the current directory such as output/, expected-output/, etc.</div>\n</li>\n</ul>\n<a name=\"getExtension-java.io.File-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getExtension</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getExtension(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)</pre>\n<div class=\"block\">The file name extension (such as mp3, doc, txt) of the given file's name.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>null if the file is null, or \"\" if the file has no extension</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getExtension-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getExtension</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getExtension(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fileName)</pre>\n<div class=\"block\">The file name extension (such as mp3, doc, txt) of the given file's name.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>null if the file is null, or \"\" if the file has no extension</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getFileName-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFileName</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getFileName(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filePath)</pre>\n<div class=\"block\">Strips folders from file's name.  Like basename in Perl/PHP.\n e.g. \"foo/bar/Baz.java\" returns \"Baz.java\"</div>\n</li>\n</ul>\n<a name=\"getFolder-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFolder</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getFolder(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fileName)</pre>\n<div class=\"block\">The folder name of the given file path.\n e.g. \"foo/bar/Baz.java\" returns \"foo/bar/\"\n PRE: no folders in fileName (no \"foo/bar/Baz.java\")</div>\n</li>\n</ul>\n<a name=\"getTempFolder--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getTempFolder</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getTempFolder()</pre>\n<div class=\"block\">The full path to the server's temp directory, such as \"/tmp/foobar/\".</div>\n</li>\n</ul>\n<a name=\"readEntireFile-java.io.File-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readEntireFile</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;readEntireFile(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)</pre>\n<div class=\"block\">Reads the given file's text fully and returns it as a String.</div>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FileNotFoundException.html?is-external=true\" title=\"class or interface in java.io\">FileNotFoundException</a></code> - if file cannot be read</dd>\n</dl>\n</li>\n</ul>\n<a name=\"readEntireFile-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readEntireFile</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;readEntireFile(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fileName)</pre>\n<div class=\"block\">Reads the given file's text fully and returns it as a String.</div>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FileNotFoundException.html?is-external=true\" title=\"class or interface in java.io\">FileNotFoundException</a></code> - if file cannot be read</dd>\n</dl>\n</li>\n</ul>\n<a name=\"readEntireReader-java.io.Reader-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readEntireReader</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;readEntireReader(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Reader.html?is-external=true\" title=\"class or interface in java.io\">Reader</a>&nbsp;reader)</pre>\n<div class=\"block\">Reads the given reader's text fully and returns it as a String.</div>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FileNotFoundException.html?is-external=true\" title=\"class or interface in java.io\">FileNotFoundException</a></code> - if file cannot be read</dd>\n</dl>\n</li>\n</ul>\n<a name=\"readEntireScanner-java.util.Scanner-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readEntireScanner</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;readEntireScanner(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Scanner.html?is-external=true\" title=\"class or interface in java.util\">Scanner</a>&nbsp;input)</pre>\n<div class=\"block\">Reads the given scanner's text fully and returns it as a String.</div>\n</li>\n</ul>\n<a name=\"readEntireStream-java.io.InputStream-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readEntireStream</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;readEntireStream(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;stream)</pre>\n<div class=\"block\">Reads the given stream's text fully and returns it as a String.</div>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FileNotFoundException.html?is-external=true\" title=\"class or interface in java.io\">FileNotFoundException</a></code> - if file cannot be read</dd>\n</dl>\n</li>\n</ul>\n<a name=\"readEntireStreamBytes-java.io.InputStream-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readEntireStreamBytes</h4>\n<pre>public static&nbsp;byte[]&nbsp;readEntireStreamBytes(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;stream)</pre>\n<div class=\"block\">Reads the given stream's text fully and returns it as an array of bytes.</div>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code> - if stream cannot be read</dd>\n</dl>\n</li>\n</ul>\n<a name=\"readEntireReaderBytes-java.io.Reader-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readEntireReaderBytes</h4>\n<pre>public static&nbsp;byte[]&nbsp;readEntireReaderBytes(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Reader.html?is-external=true\" title=\"class or interface in java.io\">Reader</a>&nbsp;reader)</pre>\n<div class=\"block\">Reads the given reader's text fully and returns it as an array of bytes.</div>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code> - if stream cannot be read</dd>\n</dl>\n</li>\n</ul>\n<a name=\"readEntireFileBytes-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readEntireFileBytes</h4>\n<pre>public static&nbsp;byte[]&nbsp;readEntireFileBytes(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fileName)</pre>\n<div class=\"block\">Reads the full text from the file with the given name,\n and returns it as an array of bytes.</div>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code> - if stream cannot be read</dd>\n</dl>\n</li>\n</ul>\n<a name=\"readEntireFileBytes-java.io.File-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readEntireFileBytes</h4>\n<pre>public static&nbsp;byte[]&nbsp;readEntireFileBytes(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)</pre>\n<div class=\"block\">Reads the full text from the given file,\n and returns it as an array of bytes.</div>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code> - if stream cannot be read</dd>\n</dl>\n</li>\n</ul>\n<a name=\"toInputStream-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>toInputStream</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;toInputStream(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;data)</pre>\n<div class=\"block\">Creates and returns an input stream to read the characters of the given\n string as bytes, one character at a time.</div>\n</li>\n</ul>\n<a name=\"redirectInput-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>redirectInput</h4>\n<pre>public static&nbsp;void&nbsp;redirectInput(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;data)</pre>\n<div class=\"block\">Redirects System.in to pull input data from the text in the given string.</div>\n</li>\n</ul>\n<a name=\"redirectOutput--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>redirectOutput</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/ByteArrayOutputStream.html?is-external=true\" title=\"class or interface in java.io\">ByteArrayOutputStream</a>&nbsp;redirectOutput()</pre>\n<div class=\"block\">Redirects System.out to a byte array output stream, which is returned.\n Also sets a limit on the amount of output that can be produced before an\n ExcessiveOutputException will occur (so students can't infinitely println).</div>\n</li>\n</ul>\n<a name=\"redirectOutput-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>redirectOutput</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/ByteArrayOutputStream.html?is-external=true\" title=\"class or interface in java.io\">ByteArrayOutputStream</a>&nbsp;redirectOutput(boolean&nbsp;limit)</pre>\n<div class=\"block\">Redirects System.out to a byte array output stream, which is returned.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>limit</code> - if true, sets a limit on the amount of output that can be\n              produced before an ExcessiveOutputException will occur\n              (so students can't infinitely println).</dd>\n</dl>\n</li>\n</ul>\n<a name=\"removeExtension-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeExtension</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;removeExtension(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fileName)</pre>\n<div class=\"block\">Removes the file's extension; e.g. \"foobar.mp3\" returns \"foobar\"</div>\n</li>\n</ul>\n<a name=\"removeFolder-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeFolder</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;removeFolder(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fileName)</pre>\n<div class=\"block\">Removes any leading folders from the given file name;\n e.g. \"foo/bar/Baz.java\" returns \"Baz.java\"</div>\n</li>\n</ul>\n<a name=\"stopRedirectingInput--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>stopRedirectingInput</h4>\n<pre>public static&nbsp;void&nbsp;stopRedirectingInput()</pre>\n<div class=\"block\">Sets System.in back to its original state.</div>\n</li>\n</ul>\n<a name=\"stopRedirectingOutput--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>stopRedirectingOutput</h4>\n<pre>public static&nbsp;void&nbsp;stopRedirectingOutput()</pre>\n<div class=\"block\">Sets System.out/err back to their original state.</div>\n</li>\n</ul>\n<a name=\"writeEntireFile-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>writeEntireFile</h4>\n<pre>public static&nbsp;void&nbsp;writeEntireFile(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fileName)</pre>\n<div class=\"block\">Writes the given text into the file with the given name, replacing any existing text.</div>\n</li>\n</ul>\n<a name=\"writeEntireFile-java.lang.String-java.io.File-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>writeEntireFile</h4>\n<pre>public static&nbsp;void&nbsp;writeEntireFile(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)</pre>\n<div class=\"block\">Writes the given text into the given file, replacing any existing text.</div>\n</li>\n</ul>\n<a name=\"writeBytes-byte:A-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>writeBytes</h4>\n<pre>public static&nbsp;void&nbsp;writeBytes(byte[]&nbsp;bytes,\n                              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fileName)</pre>\n<div class=\"block\">Writes the given bytes into the given file, replacing any existing content.</div>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/io/IORuntimeException.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/io/LimitedPrintStream.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/io/IOUtils.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"IOUtils.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/io/LimitedPrintStream.ExcessiveOutputException.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:04 PDT 2017 -->\n<title>LimitedPrintStream.ExcessiveOutputException</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"LimitedPrintStream.ExcessiveOutputException\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/io/LimitedPrintStream.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/io/OutputCapturer.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/io/LimitedPrintStream.ExcessiveOutputException.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"LimitedPrintStream.ExcessiveOutputException.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#methods.inherited.from.class.java.lang.Throwable\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li>Method</li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.io</div>\n<h2 title=\"Class LimitedPrintStream.ExcessiveOutputException\" class=\"title\">Class LimitedPrintStream.ExcessiveOutputException</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Throwable</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Exception</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.RuntimeException</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.io.LimitedPrintStream.ExcessiveOutputException</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a></dd>\n</dl>\n<dl>\n<dt>Enclosing class:</dt>\n<dd><a href=\"../../../stanford/cs106/io/LimitedPrintStream.html\" title=\"class in stanford.cs106.io\">LimitedPrintStream</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public static class <span class=\"typeNameLabel\">LimitedPrintStream.ExcessiveOutputException</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.html?is-external=true\" title=\"class or interface in java.lang\">RuntimeException</a></pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../serialized-form.html#stanford.cs106.io.LimitedPrintStream.ExcessiveOutputException\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/LimitedPrintStream.ExcessiveOutputException.html#ExcessiveOutputException--\">ExcessiveOutputException</a></span>()</code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/LimitedPrintStream.ExcessiveOutputException.html#ExcessiveOutputException-java.lang.String-\">ExcessiveOutputException</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Throwable\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#addSuppressed-java.lang.Throwable-\" title=\"class or interface in java.lang\">addSuppressed</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#fillInStackTrace--\" title=\"class or interface in java.lang\">fillInStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getCause--\" title=\"class or interface in java.lang\">getCause</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getLocalizedMessage--\" title=\"class or interface in java.lang\">getLocalizedMessage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getMessage--\" title=\"class or interface in java.lang\">getMessage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getStackTrace--\" title=\"class or interface in java.lang\">getStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getSuppressed--\" title=\"class or interface in java.lang\">getSuppressed</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#initCause-java.lang.Throwable-\" title=\"class or interface in java.lang\">initCause</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#printStackTrace--\" title=\"class or interface in java.lang\">printStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#printStackTrace-java.io.PrintStream-\" title=\"class or interface in java.lang\">printStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#printStackTrace-java.io.PrintWriter-\" title=\"class or interface in java.lang\">printStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#setStackTrace-java.lang.StackTraceElement:A-\" title=\"class or interface in java.lang\">setStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"ExcessiveOutputException--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>ExcessiveOutputException</h4>\n<pre>public&nbsp;ExcessiveOutputException()</pre>\n</li>\n</ul>\n<a name=\"ExcessiveOutputException-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>ExcessiveOutputException</h4>\n<pre>public&nbsp;ExcessiveOutputException(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/io/LimitedPrintStream.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/io/OutputCapturer.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/io/LimitedPrintStream.ExcessiveOutputException.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"LimitedPrintStream.ExcessiveOutputException.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#methods.inherited.from.class.java.lang.Throwable\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li>Method</li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/io/LimitedPrintStream.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:04 PDT 2017 -->\n<title>LimitedPrintStream</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"LimitedPrintStream\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":10,\"i16\":10,\"i17\":10,\"i18\":10,\"i19\":10,\"i20\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/io/IOUtils.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/io/LimitedPrintStream.ExcessiveOutputException.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/io/LimitedPrintStream.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"LimitedPrintStream.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.class.summary\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.java.io.FilterOutputStream\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.io</div>\n<h2 title=\"Class LimitedPrintStream\" class=\"title\">Class LimitedPrintStream</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true\" title=\"class or interface in java.io\">java.io.OutputStream</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FilterOutputStream.html?is-external=true\" title=\"class or interface in java.io\">java.io.FilterOutputStream</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true\" title=\"class or interface in java.io\">java.io.PrintStream</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.io.LimitedPrintStream</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true\" title=\"class or interface in java.io\">Closeable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Flushable.html?is-external=true\" title=\"class or interface in java.io\">Flushable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Appendable.html?is-external=true\" title=\"class or interface in java.lang\">Appendable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/AutoCloseable.html?is-external=true\" title=\"class or interface in java.lang\">AutoCloseable</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">LimitedPrintStream</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true\" title=\"class or interface in java.io\">PrintStream</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Nested Class Summary table, listing nested classes, and an explanation\">\n<caption><span>Nested Classes</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Class and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static class&nbsp;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/LimitedPrintStream.ExcessiveOutputException.html\" title=\"class in stanford.cs106.io\">LimitedPrintStream.ExcessiveOutputException</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.io.FilterOutputStream\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FilterOutputStream.html?is-external=true\" title=\"class or interface in java.io\">FilterOutputStream</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FilterOutputStream.html?is-external=true#out\" title=\"class or interface in java.io\">out</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/LimitedPrintStream.html#LimitedPrintStream-java.io.File-\">LimitedPrintStream</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)</code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/LimitedPrintStream.html#LimitedPrintStream-java.io.File-int-int-\">LimitedPrintStream</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file,\n                  int&nbsp;maxCalls,\n                  int&nbsp;maxChars)</code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/LimitedPrintStream.html#LimitedPrintStream-java.io.OutputStream-\">LimitedPrintStream</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true\" title=\"class or interface in java.io\">OutputStream</a>&nbsp;stream)</code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/LimitedPrintStream.html#LimitedPrintStream-java.io.OutputStream-int-int-\">LimitedPrintStream</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true\" title=\"class or interface in java.io\">OutputStream</a>&nbsp;stream,\n                  int&nbsp;maxCalls,\n                  int&nbsp;maxChars)</code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/LimitedPrintStream.html#LimitedPrintStream-java.lang.String-\">LimitedPrintStream</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;file)</code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/LimitedPrintStream.html#LimitedPrintStream-java.lang.String-int-int-\">LimitedPrintStream</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;file,\n                  int&nbsp;maxCalls,\n                  int&nbsp;maxChars)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/LimitedPrintStream.html#close--\">close</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/LimitedPrintStream.html#print-boolean-\">print</a></span>(boolean&nbsp;x)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/LimitedPrintStream.html#print-byte-\">print</a></span>(byte&nbsp;x)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/LimitedPrintStream.html#print-char-\">print</a></span>(char&nbsp;x)</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/LimitedPrintStream.html#print-double-\">print</a></span>(double&nbsp;x)</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/LimitedPrintStream.html#print-float-\">print</a></span>(float&nbsp;x)</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/LimitedPrintStream.html#print-int-\">print</a></span>(int&nbsp;x)</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/LimitedPrintStream.html#print-long-\">print</a></span>(long&nbsp;x)</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/LimitedPrintStream.html#print-java.lang.Object-\">print</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;x)</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/LimitedPrintStream.html#print-short-\">print</a></span>(short&nbsp;x)</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/LimitedPrintStream.html#print-java.lang.String-\">print</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;x)</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/LimitedPrintStream.html#println-boolean-\">println</a></span>(boolean&nbsp;x)</code>&nbsp;</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/LimitedPrintStream.html#println-byte-\">println</a></span>(byte&nbsp;x)</code>&nbsp;</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/LimitedPrintStream.html#println-char-\">println</a></span>(char&nbsp;x)</code>&nbsp;</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/LimitedPrintStream.html#println-double-\">println</a></span>(double&nbsp;x)</code>&nbsp;</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/LimitedPrintStream.html#println-float-\">println</a></span>(float&nbsp;x)</code>&nbsp;</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/LimitedPrintStream.html#println-int-\">println</a></span>(int&nbsp;x)</code>&nbsp;</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/LimitedPrintStream.html#println-long-\">println</a></span>(long&nbsp;x)</code>&nbsp;</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/LimitedPrintStream.html#println-java.lang.Object-\">println</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;x)</code>&nbsp;</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/LimitedPrintStream.html#println-short-\">println</a></span>(short&nbsp;x)</code>&nbsp;</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/LimitedPrintStream.html#println-java.lang.String-\">println</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;x)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.io.PrintStream\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true\" title=\"class or interface in java.io\">PrintStream</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true#append-char-\" title=\"class or interface in java.io\">append</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true#append-java.lang.CharSequence-\" title=\"class or interface in java.io\">append</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true#append-java.lang.CharSequence-int-int-\" title=\"class or interface in java.io\">append</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true#checkError--\" title=\"class or interface in java.io\">checkError</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true#clearError--\" title=\"class or interface in java.io\">clearError</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true#flush--\" title=\"class or interface in java.io\">flush</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true#format-java.util.Locale-java.lang.String-java.lang.Object...-\" title=\"class or interface in java.io\">format</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true#format-java.lang.String-java.lang.Object...-\" title=\"class or interface in java.io\">format</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true#print-char:A-\" title=\"class or interface in java.io\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true#printf-java.util.Locale-java.lang.String-java.lang.Object...-\" title=\"class or interface in java.io\">printf</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true#printf-java.lang.String-java.lang.Object...-\" title=\"class or interface in java.io\">printf</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true#println--\" title=\"class or interface in java.io\">println</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true#println-char:A-\" title=\"class or interface in java.io\">println</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true#setError--\" title=\"class or interface in java.io\">setError</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true#write-byte:A-int-int-\" title=\"class or interface in java.io\">write</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true#write-int-\" title=\"class or interface in java.io\">write</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.io.FilterOutputStream\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FilterOutputStream.html?is-external=true\" title=\"class or interface in java.io\">FilterOutputStream</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FilterOutputStream.html?is-external=true#write-byte:A-\" title=\"class or interface in java.io\">write</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"LimitedPrintStream-java.io.OutputStream-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>LimitedPrintStream</h4>\n<pre>public&nbsp;LimitedPrintStream(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true\" title=\"class or interface in java.io\">OutputStream</a>&nbsp;stream)</pre>\n</li>\n</ul>\n<a name=\"LimitedPrintStream-java.io.File-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>LimitedPrintStream</h4>\n<pre>public&nbsp;LimitedPrintStream(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)\n                   throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FileNotFoundException.html?is-external=true\" title=\"class or interface in java.io\">FileNotFoundException</a></pre>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FileNotFoundException.html?is-external=true\" title=\"class or interface in java.io\">FileNotFoundException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"LimitedPrintStream-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>LimitedPrintStream</h4>\n<pre>public&nbsp;LimitedPrintStream(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;file)\n                   throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FileNotFoundException.html?is-external=true\" title=\"class or interface in java.io\">FileNotFoundException</a></pre>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FileNotFoundException.html?is-external=true\" title=\"class or interface in java.io\">FileNotFoundException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"LimitedPrintStream-java.io.OutputStream-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>LimitedPrintStream</h4>\n<pre>public&nbsp;LimitedPrintStream(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true\" title=\"class or interface in java.io\">OutputStream</a>&nbsp;stream,\n                          int&nbsp;maxCalls,\n                          int&nbsp;maxChars)</pre>\n</li>\n</ul>\n<a name=\"LimitedPrintStream-java.io.File-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>LimitedPrintStream</h4>\n<pre>public&nbsp;LimitedPrintStream(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file,\n                          int&nbsp;maxCalls,\n                          int&nbsp;maxChars)\n                   throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FileNotFoundException.html?is-external=true\" title=\"class or interface in java.io\">FileNotFoundException</a></pre>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FileNotFoundException.html?is-external=true\" title=\"class or interface in java.io\">FileNotFoundException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"LimitedPrintStream-java.lang.String-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>LimitedPrintStream</h4>\n<pre>public&nbsp;LimitedPrintStream(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;file,\n                          int&nbsp;maxCalls,\n                          int&nbsp;maxChars)\n                   throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FileNotFoundException.html?is-external=true\" title=\"class or interface in java.io\">FileNotFoundException</a></pre>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FileNotFoundException.html?is-external=true\" title=\"class or interface in java.io\">FileNotFoundException</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"close--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>close</h4>\n<pre>public&nbsp;void&nbsp;close()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true#close--\" title=\"class or interface in java.io\">close</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true\" title=\"class or interface in java.io\">Closeable</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/AutoCloseable.html?is-external=true#close--\" title=\"class or interface in java.lang\">close</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/AutoCloseable.html?is-external=true\" title=\"class or interface in java.lang\">AutoCloseable</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true#close--\" title=\"class or interface in java.io\">close</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true\" title=\"class or interface in java.io\">PrintStream</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"print-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public&nbsp;void&nbsp;print(int&nbsp;x)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true#print-int-\" title=\"class or interface in java.io\">print</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true\" title=\"class or interface in java.io\">PrintStream</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"print-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public&nbsp;void&nbsp;print(double&nbsp;x)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true#print-double-\" title=\"class or interface in java.io\">print</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true\" title=\"class or interface in java.io\">PrintStream</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"print-float-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public&nbsp;void&nbsp;print(float&nbsp;x)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true#print-float-\" title=\"class or interface in java.io\">print</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true\" title=\"class or interface in java.io\">PrintStream</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"print-long-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public&nbsp;void&nbsp;print(long&nbsp;x)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true#print-long-\" title=\"class or interface in java.io\">print</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true\" title=\"class or interface in java.io\">PrintStream</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"print-short-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public&nbsp;void&nbsp;print(short&nbsp;x)</pre>\n</li>\n</ul>\n<a name=\"print-byte-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public&nbsp;void&nbsp;print(byte&nbsp;x)</pre>\n</li>\n</ul>\n<a name=\"print-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public&nbsp;void&nbsp;print(boolean&nbsp;x)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true#print-boolean-\" title=\"class or interface in java.io\">print</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true\" title=\"class or interface in java.io\">PrintStream</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"print-char-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public&nbsp;void&nbsp;print(char&nbsp;x)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true#print-char-\" title=\"class or interface in java.io\">print</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true\" title=\"class or interface in java.io\">PrintStream</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"print-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public&nbsp;void&nbsp;print(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;x)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true#print-java.lang.Object-\" title=\"class or interface in java.io\">print</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true\" title=\"class or interface in java.io\">PrintStream</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"print-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public&nbsp;void&nbsp;print(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;x)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true#print-java.lang.String-\" title=\"class or interface in java.io\">print</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true\" title=\"class or interface in java.io\">PrintStream</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"println-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public&nbsp;void&nbsp;println(int&nbsp;x)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true#println-int-\" title=\"class or interface in java.io\">println</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true\" title=\"class or interface in java.io\">PrintStream</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"println-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public&nbsp;void&nbsp;println(double&nbsp;x)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true#println-double-\" title=\"class or interface in java.io\">println</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true\" title=\"class or interface in java.io\">PrintStream</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"println-float-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public&nbsp;void&nbsp;println(float&nbsp;x)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true#println-float-\" title=\"class or interface in java.io\">println</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true\" title=\"class or interface in java.io\">PrintStream</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"println-long-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public&nbsp;void&nbsp;println(long&nbsp;x)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true#println-long-\" title=\"class or interface in java.io\">println</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true\" title=\"class or interface in java.io\">PrintStream</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"println-short-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public&nbsp;void&nbsp;println(short&nbsp;x)</pre>\n</li>\n</ul>\n<a name=\"println-byte-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public&nbsp;void&nbsp;println(byte&nbsp;x)</pre>\n</li>\n</ul>\n<a name=\"println-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public&nbsp;void&nbsp;println(boolean&nbsp;x)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true#println-boolean-\" title=\"class or interface in java.io\">println</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true\" title=\"class or interface in java.io\">PrintStream</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"println-char-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public&nbsp;void&nbsp;println(char&nbsp;x)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true#println-char-\" title=\"class or interface in java.io\">println</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true\" title=\"class or interface in java.io\">PrintStream</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"println-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public&nbsp;void&nbsp;println(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;x)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true#println-java.lang.Object-\" title=\"class or interface in java.io\">println</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true\" title=\"class or interface in java.io\">PrintStream</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"println-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public&nbsp;void&nbsp;println(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;x)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true#println-java.lang.String-\" title=\"class or interface in java.io\">println</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true\" title=\"class or interface in java.io\">PrintStream</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/io/IOUtils.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/io/LimitedPrintStream.ExcessiveOutputException.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/io/LimitedPrintStream.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"LimitedPrintStream.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.class.summary\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.java.io.FilterOutputStream\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/io/OutputCapturer.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:04 PDT 2017 -->\n<title>OutputCapturer</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"OutputCapturer\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9,\"i2\":9,\"i3\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/io/LimitedPrintStream.ExcessiveOutputException.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/io/ReaderInputStream.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/io/OutputCapturer.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"OutputCapturer.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.io</div>\n<h2 title=\"Class OutputCapturer\" class=\"title\">Class OutputCapturer</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.io.OutputCapturer</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">OutputCapturer</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n<div class=\"block\">for capturing console output (for methods that do printlns)</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/OutputCapturer.html#OutputCapturer--\">OutputCapturer</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/OutputCapturer.html#isCapturing--\">isCapturing</a></span>()</code>\n<div class=\"block\">Returns true if output is currently being captured.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/OutputCapturer.html#start--\">start</a></span>()</code>\n<div class=\"block\">Begins capturing output with no limit as to its length.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/OutputCapturer.html#start-boolean-\">start</a></span>(boolean&nbsp;limit)</code>\n<div class=\"block\">Begins capturing output.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/OutputCapturer.html#stop--\">stop</a></span>()</code>\n<div class=\"block\">Stops capturing output and returns the string of captured output.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"OutputCapturer--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>OutputCapturer</h4>\n<pre>public&nbsp;OutputCapturer()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"isCapturing--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isCapturing</h4>\n<pre>public static&nbsp;boolean&nbsp;isCapturing()</pre>\n<div class=\"block\">Returns true if output is currently being captured.</div>\n</li>\n</ul>\n<a name=\"start--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>start</h4>\n<pre>public static&nbsp;void&nbsp;start()</pre>\n<div class=\"block\">Begins capturing output with no limit as to its length.</div>\n</li>\n</ul>\n<a name=\"start-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>start</h4>\n<pre>public static&nbsp;void&nbsp;start(boolean&nbsp;limit)</pre>\n<div class=\"block\">Begins capturing output.  Will throw an exception if the student \n printlns too much.</div>\n</li>\n</ul>\n<a name=\"stop--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>stop</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;stop()</pre>\n<div class=\"block\">Stops capturing output and returns the string of captured output.</div>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/io/LimitedPrintStream.ExcessiveOutputException.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/io/ReaderInputStream.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/io/OutputCapturer.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"OutputCapturer.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/io/ReaderInputStream.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:04 PDT 2017 -->\n<title>ReaderInputStream</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"ReaderInputStream\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/io/OutputCapturer.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/io/ResourceUtils.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/io/ReaderInputStream.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ReaderInputStream.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.io</div>\n<h2 title=\"Class ReaderInputStream\" class=\"title\">Class ReaderInputStream</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">java.io.InputStream</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.io.ReaderInputStream</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true\" title=\"class or interface in java.io\">Closeable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/AutoCloseable.html?is-external=true\" title=\"class or interface in java.lang\">AutoCloseable</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">ReaderInputStream</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/ReaderInputStream.html#ReaderInputStream-java.io.Reader-\">ReaderInputStream</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Reader.html?is-external=true\" title=\"class or interface in java.io\">Reader</a>&nbsp;source)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/ReaderInputStream.html#close--\">close</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/ReaderInputStream.html#mark-int-\">mark</a></span>(int&nbsp;readAheadLimit)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/ReaderInputStream.html#markSupported--\">markSupported</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/ReaderInputStream.html#read--\">read</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/ReaderInputStream.html#read-byte:A-int-int-\">read</a></span>(byte[]&nbsp;b,\n    int&nbsp;offset,\n    int&nbsp;length)</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/ReaderInputStream.html#reset--\">reset</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>long</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/ReaderInputStream.html#skip-long-\">skip</a></span>(long&nbsp;n)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.io.InputStream\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true#available--\" title=\"class or interface in java.io\">available</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true#read-byte:A-\" title=\"class or interface in java.io\">read</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"ReaderInputStream-java.io.Reader-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>ReaderInputStream</h4>\n<pre>public&nbsp;ReaderInputStream(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Reader.html?is-external=true\" title=\"class or interface in java.io\">Reader</a>&nbsp;source)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"close--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>close</h4>\n<pre>public&nbsp;void&nbsp;close()\n           throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true#close--\" title=\"class or interface in java.io\">close</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true\" title=\"class or interface in java.io\">Closeable</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/AutoCloseable.html?is-external=true#close--\" title=\"class or interface in java.lang\">close</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/AutoCloseable.html?is-external=true\" title=\"class or interface in java.lang\">AutoCloseable</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true#close--\" title=\"class or interface in java.io\">close</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a></code></dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"mark-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>mark</h4>\n<pre>public&nbsp;void&nbsp;mark(int&nbsp;readAheadLimit)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true#mark-int-\" title=\"class or interface in java.io\">mark</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"markSupported--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>markSupported</h4>\n<pre>public&nbsp;boolean&nbsp;markSupported()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true#markSupported--\" title=\"class or interface in java.io\">markSupported</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"read--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>read</h4>\n<pre>public&nbsp;int&nbsp;read()\n         throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true#read--\" title=\"class or interface in java.io\">read</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a></code></dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"read-byte:A-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>read</h4>\n<pre>public&nbsp;int&nbsp;read(byte[]&nbsp;b,\n                int&nbsp;offset,\n                int&nbsp;length)\n         throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true#read-byte:A-int-int-\" title=\"class or interface in java.io\">read</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a></code></dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"reset--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>reset</h4>\n<pre>public&nbsp;void&nbsp;reset()\n           throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true#reset--\" title=\"class or interface in java.io\">reset</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a></code></dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"skip-long-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>skip</h4>\n<pre>public&nbsp;long&nbsp;skip(long&nbsp;n)\n          throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true#skip-long-\" title=\"class or interface in java.io\">skip</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a></code></dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/io/OutputCapturer.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/io/ResourceUtils.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/io/ReaderInputStream.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ReaderInputStream.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/io/ResourceUtils.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:04 PDT 2017 -->\n<title>ResourceUtils</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"ResourceUtils\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9,\"i2\":9,\"i3\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/io/ReaderInputStream.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li>Next&nbsp;Class</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/io/ResourceUtils.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ResourceUtils.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.io</div>\n<h2 title=\"Class ResourceUtils\" class=\"title\">Class ResourceUtils</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.io.ResourceUtils</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">ResourceUtils</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/ResourceUtils.html#ResourceUtils--\">ResourceUtils</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/ResourceUtils.html#fileExists-java.lang.String-\">fileExists</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URL.html?is-external=true\" title=\"class or interface in java.net\">URL</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/ResourceUtils.html#filenameToURL-java.lang.String-\">filenameToURL</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/ResourceUtils.html#openFile-java.lang.String-\">openFile</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/io/ResourceUtils.html#setResourceLoaderClass-java.lang.Class-\">setResourceLoaderClass</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"ResourceUtils--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>ResourceUtils</h4>\n<pre>public&nbsp;ResourceUtils()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"setResourceLoaderClass-java.lang.Class-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setResourceLoaderClass</h4>\n<pre>public static&nbsp;void&nbsp;setResourceLoaderClass(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz)</pre>\n</li>\n</ul>\n<a name=\"fileExists-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fileExists</h4>\n<pre>public static&nbsp;boolean&nbsp;fileExists(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</pre>\n</li>\n</ul>\n<a name=\"filenameToURL-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>filenameToURL</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URL.html?is-external=true\" title=\"class or interface in java.net\">URL</a>&nbsp;filenameToURL(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</pre>\n</li>\n</ul>\n<a name=\"openFile-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>openFile</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;openFile(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/io/ReaderInputStream.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li>Next&nbsp;Class</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/io/ResourceUtils.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ResourceUtils.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/io/package-frame.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>stanford.cs106.io</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<h1 class=\"bar\"><a href=\"../../../stanford/cs106/io/package-summary.html\" target=\"classFrame\">stanford.cs106.io</a></h1>\n<div class=\"indexContainer\">\n<h2 title=\"Classes\">Classes</h2>\n<ul title=\"Classes\">\n<li><a href=\"ExtensionFileFilter.html\" title=\"class in stanford.cs106.io\" target=\"classFrame\">ExtensionFileFilter</a></li>\n<li><a href=\"IOUtils.html\" title=\"class in stanford.cs106.io\" target=\"classFrame\">IOUtils</a></li>\n<li><a href=\"LimitedPrintStream.html\" title=\"class in stanford.cs106.io\" target=\"classFrame\">LimitedPrintStream</a></li>\n<li><a href=\"OutputCapturer.html\" title=\"class in stanford.cs106.io\" target=\"classFrame\">OutputCapturer</a></li>\n<li><a href=\"ReaderInputStream.html\" title=\"class in stanford.cs106.io\" target=\"classFrame\">ReaderInputStream</a></li>\n<li><a href=\"ResourceUtils.html\" title=\"class in stanford.cs106.io\" target=\"classFrame\">ResourceUtils</a></li>\n</ul>\n<h2 title=\"Exceptions\">Exceptions</h2>\n<ul title=\"Exceptions\">\n<li><a href=\"IORuntimeException.html\" title=\"class in stanford.cs106.io\" target=\"classFrame\">IORuntimeException</a></li>\n<li><a href=\"LimitedPrintStream.ExcessiveOutputException.html\" title=\"class in stanford.cs106.io\" target=\"classFrame\">LimitedPrintStream.ExcessiveOutputException</a></li>\n</ul>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/io/package-summary.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>stanford.cs106.io</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"stanford.cs106.io\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li class=\"navBarCell1Rev\">Package</li>\n<li>Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/gui/package-summary.html\">Prev&nbsp;Package</a></li>\n<li><a href=\"../../../stanford/cs106/junit/package-summary.html\">Next&nbsp;Package</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/io/package-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 title=\"Package\" class=\"title\">Package&nbsp;stanford.cs106.io</h1>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Class Summary table, listing classes, and an explanation\">\n<caption><span>Class Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Class</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/io/ExtensionFileFilter.html\" title=\"class in stanford.cs106.io\">ExtensionFileFilter</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/io/IOUtils.html\" title=\"class in stanford.cs106.io\">IOUtils</a></td>\n<td class=\"colLast\">\n<div class=\"block\">Utility methods related to file processing and I/O.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/io/LimitedPrintStream.html\" title=\"class in stanford.cs106.io\">LimitedPrintStream</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/io/OutputCapturer.html\" title=\"class in stanford.cs106.io\">OutputCapturer</a></td>\n<td class=\"colLast\">\n<div class=\"block\">for capturing console output (for methods that do printlns)</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/io/ReaderInputStream.html\" title=\"class in stanford.cs106.io\">ReaderInputStream</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/io/ResourceUtils.html\" title=\"class in stanford.cs106.io\">ResourceUtils</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Exception Summary table, listing exceptions, and an explanation\">\n<caption><span>Exception Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Exception</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/io/IORuntimeException.html\" title=\"class in stanford.cs106.io\">IORuntimeException</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/io/LimitedPrintStream.ExcessiveOutputException.html\" title=\"class in stanford.cs106.io\">LimitedPrintStream.ExcessiveOutputException</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n</tbody>\n</table>\n</li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li class=\"navBarCell1Rev\">Package</li>\n<li>Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/gui/package-summary.html\">Prev&nbsp;Package</a></li>\n<li><a href=\"../../../stanford/cs106/junit/package-summary.html\">Next&nbsp;Package</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/io/package-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/io/package-tree.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>stanford.cs106.io Class Hierarchy</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"stanford.cs106.io Class Hierarchy\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/gui/package-tree.html\">Prev</a></li>\n<li><a href=\"../../../stanford/cs106/junit/package-tree.html\">Next</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/io/package-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 class=\"title\">Hierarchy For Package stanford.cs106.io</h1>\n<span class=\"packageHierarchyLabel\">Package Hierarchies:</span>\n<ul class=\"horizontal\">\n<li><a href=\"../../../overview-tree.html\">All Packages</a></li>\n</ul>\n</div>\n<div class=\"contentContainer\">\n<h2 title=\"Class Hierarchy\">Class Hierarchy</h2>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Object</span></a>\n<ul>\n<li type=\"circle\">javax.swing.filechooser.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/filechooser/FileFilter.html?is-external=true\" title=\"class or interface in javax.swing.filechooser\"><span class=\"typeNameLink\">FileFilter</span></a>\n<ul>\n<li type=\"circle\">stanford.cs106.io.<a href=\"../../../stanford/cs106/io/ExtensionFileFilter.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">ExtensionFileFilter</span></a> (implements java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FileFilter.html?is-external=true\" title=\"class or interface in java.io\">FileFilter</a>)</li>\n</ul>\n</li>\n<li type=\"circle\">java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\"><span class=\"typeNameLink\">InputStream</span></a> (implements java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true\" title=\"class or interface in java.io\">Closeable</a>)\n<ul>\n<li type=\"circle\">stanford.cs106.io.<a href=\"../../../stanford/cs106/io/ReaderInputStream.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">ReaderInputStream</span></a></li>\n</ul>\n</li>\n<li type=\"circle\">stanford.cs106.io.<a href=\"../../../stanford/cs106/io/IOUtils.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">IOUtils</span></a></li>\n<li type=\"circle\">stanford.cs106.io.<a href=\"../../../stanford/cs106/io/OutputCapturer.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">OutputCapturer</span></a></li>\n<li type=\"circle\">java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true\" title=\"class or interface in java.io\"><span class=\"typeNameLink\">OutputStream</span></a> (implements java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true\" title=\"class or interface in java.io\">Closeable</a>, java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Flushable.html?is-external=true\" title=\"class or interface in java.io\">Flushable</a>)\n<ul>\n<li type=\"circle\">java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FilterOutputStream.html?is-external=true\" title=\"class or interface in java.io\"><span class=\"typeNameLink\">FilterOutputStream</span></a>\n<ul>\n<li type=\"circle\">java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html?is-external=true\" title=\"class or interface in java.io\"><span class=\"typeNameLink\">PrintStream</span></a> (implements java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Appendable.html?is-external=true\" title=\"class or interface in java.lang\">Appendable</a>, java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true\" title=\"class or interface in java.io\">Closeable</a>)\n<ul>\n<li type=\"circle\">stanford.cs106.io.<a href=\"../../../stanford/cs106/io/LimitedPrintStream.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">LimitedPrintStream</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li type=\"circle\">stanford.cs106.io.<a href=\"../../../stanford/cs106/io/ResourceUtils.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">ResourceUtils</span></a></li>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Throwable</span></a> (implements java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Exception</span></a>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">RuntimeException</span></a>\n<ul>\n<li type=\"circle\">stanford.cs106.io.<a href=\"../../../stanford/cs106/io/IORuntimeException.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">IORuntimeException</span></a></li>\n<li type=\"circle\">stanford.cs106.io.<a href=\"../../../stanford/cs106/io/LimitedPrintStream.ExcessiveOutputException.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">LimitedPrintStream.ExcessiveOutputException</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/gui/package-tree.html\">Prev</a></li>\n<li><a href=\"../../../stanford/cs106/junit/package-tree.html\">Next</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/io/package-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/junit/Assert.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:02 PDT 2017 -->\n<title>Assert</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"Assert\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9,\"i2\":9,\"i3\":9,\"i4\":9,\"i5\":9,\"i6\":9,\"i7\":9,\"i8\":9,\"i9\":9,\"i10\":9,\"i11\":9,\"i12\":9,\"i13\":9,\"i14\":9,\"i15\":9,\"i16\":9,\"i17\":9,\"i18\":9,\"i19\":9,\"i20\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Class</li>\n<li><a href=\"../../../stanford/cs106/junit/ComparisonFailureEnhanced.html\" title=\"class in stanford.cs106.junit\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/junit/Assert.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Assert.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.junit</div>\n<h2 title=\"Class Assert\" class=\"title\">Class Assert</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.junit.Assert</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">Assert</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/Assert.html#assertDiff-java.lang.String-java.lang.String-java.lang.String-\">assertDiff</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;expected,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actual)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/Assert.html#assertDiff-java.lang.String-java.lang.String-java.lang.String-int-\">assertDiff</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;expected,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actual,\n          int&nbsp;flags)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/Assert.html#assertEquals-java.lang.String-boolean-boolean-\">assertEquals</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n            boolean&nbsp;expected,\n            boolean&nbsp;actual)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/Assert.html#assertEquals-java.lang.String-char-char-\">assertEquals</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n            char&nbsp;expected,\n            char&nbsp;actual)</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/Assert.html#assertEquals-java.lang.String-double-double-double-\">assertEquals</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n            double&nbsp;expected,\n            double&nbsp;actual,\n            double&nbsp;delta)</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/Assert.html#assertEquals-java.lang.String-int-int-\">assertEquals</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n            int&nbsp;expected,\n            int&nbsp;actual)</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/Assert.html#assertEquals-java.lang.String-java.lang.Object-java.lang.Object-\">assertEquals</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;expected,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;actual)</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/Assert.html#assertEquals-java.lang.String-java.lang.String-java.lang.String-\">assertEquals</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;expected,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actual)</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/Assert.html#assertFalse-java.lang.String-boolean-\">assertFalse</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n           boolean&nbsp;b)</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/Assert.html#assertNotNull-java.lang.String-java.lang.Object-\">assertNotNull</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;o)</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/Assert.html#assertNotSame-java.lang.String-boolean-boolean-\">assertNotSame</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n             boolean&nbsp;expected,\n             boolean&nbsp;actual)</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/Assert.html#assertNotSame-java.lang.String-char-char-\">assertNotSame</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n             char&nbsp;expected,\n             char&nbsp;actual)</code>&nbsp;</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/Assert.html#assertNotSame-java.lang.String-double-double-\">assertNotSame</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n             double&nbsp;expected,\n             double&nbsp;actual)</code>&nbsp;</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/Assert.html#assertNotSame-java.lang.String-double-double-double-\">assertNotSame</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n             double&nbsp;expected,\n             double&nbsp;actual,\n             double&nbsp;delta)</code>&nbsp;</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/Assert.html#assertNotSame-java.lang.String-int-int-\">assertNotSame</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n             int&nbsp;expected,\n             int&nbsp;actual)</code>&nbsp;</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/Assert.html#assertNull-java.lang.String-java.lang.Object-\">assertNull</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;o)</code>&nbsp;</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/Assert.html#assertSame-java.lang.String-java.lang.Object-java.lang.Object-\">assertSame</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;expected,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;actual)</code>&nbsp;</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/Assert.html#assertSame-java.lang.String-java.lang.String-java.lang.String-\">assertSame</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;expected,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actual)</code>&nbsp;</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/Assert.html#assertTrue-java.lang.String-boolean-\">assertTrue</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n          boolean&nbsp;b)</code>&nbsp;</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/Assert.html#fail-java.lang.String-\">fail</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message)</code>&nbsp;</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/Assert.html#pass-java.lang.String-\">pass</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"assertDiff-java.lang.String-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>assertDiff</h4>\n<pre>public static&nbsp;void&nbsp;assertDiff(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n                              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;expected,\n                              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actual)</pre>\n</li>\n</ul>\n<a name=\"assertDiff-java.lang.String-java.lang.String-java.lang.String-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>assertDiff</h4>\n<pre>public static&nbsp;void&nbsp;assertDiff(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n                              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;expected,\n                              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actual,\n                              int&nbsp;flags)</pre>\n</li>\n</ul>\n<a name=\"assertEquals-java.lang.String-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>assertEquals</h4>\n<pre>public static&nbsp;void&nbsp;assertEquals(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n                                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;expected,\n                                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actual)</pre>\n</li>\n</ul>\n<a name=\"assertEquals-java.lang.String-java.lang.Object-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>assertEquals</h4>\n<pre>public static&nbsp;void&nbsp;assertEquals(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n                                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;expected,\n                                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;actual)</pre>\n</li>\n</ul>\n<a name=\"assertEquals-java.lang.String-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>assertEquals</h4>\n<pre>public static&nbsp;void&nbsp;assertEquals(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n                                int&nbsp;expected,\n                                int&nbsp;actual)</pre>\n</li>\n</ul>\n<a name=\"assertEquals-java.lang.String-boolean-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>assertEquals</h4>\n<pre>public static&nbsp;void&nbsp;assertEquals(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n                                boolean&nbsp;expected,\n                                boolean&nbsp;actual)</pre>\n</li>\n</ul>\n<a name=\"assertEquals-java.lang.String-char-char-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>assertEquals</h4>\n<pre>public static&nbsp;void&nbsp;assertEquals(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n                                char&nbsp;expected,\n                                char&nbsp;actual)</pre>\n</li>\n</ul>\n<a name=\"assertEquals-java.lang.String-double-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>assertEquals</h4>\n<pre>public static&nbsp;void&nbsp;assertEquals(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n                                double&nbsp;expected,\n                                double&nbsp;actual,\n                                double&nbsp;delta)</pre>\n</li>\n</ul>\n<a name=\"assertTrue-java.lang.String-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>assertTrue</h4>\n<pre>public static&nbsp;void&nbsp;assertTrue(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n                              boolean&nbsp;b)</pre>\n</li>\n</ul>\n<a name=\"assertFalse-java.lang.String-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>assertFalse</h4>\n<pre>public static&nbsp;void&nbsp;assertFalse(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n                               boolean&nbsp;b)</pre>\n</li>\n</ul>\n<a name=\"assertNull-java.lang.String-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>assertNull</h4>\n<pre>public static&nbsp;void&nbsp;assertNull(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n                              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;o)</pre>\n</li>\n</ul>\n<a name=\"assertNotNull-java.lang.String-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>assertNotNull</h4>\n<pre>public static&nbsp;void&nbsp;assertNotNull(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n                                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;o)</pre>\n</li>\n</ul>\n<a name=\"assertNotSame-java.lang.String-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>assertNotSame</h4>\n<pre>public static&nbsp;void&nbsp;assertNotSame(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n                                 int&nbsp;expected,\n                                 int&nbsp;actual)</pre>\n</li>\n</ul>\n<a name=\"assertNotSame-java.lang.String-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>assertNotSame</h4>\n<pre>public static&nbsp;void&nbsp;assertNotSame(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n                                 double&nbsp;expected,\n                                 double&nbsp;actual)</pre>\n</li>\n</ul>\n<a name=\"assertNotSame-java.lang.String-double-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>assertNotSame</h4>\n<pre>public static&nbsp;void&nbsp;assertNotSame(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n                                 double&nbsp;expected,\n                                 double&nbsp;actual,\n                                 double&nbsp;delta)</pre>\n</li>\n</ul>\n<a name=\"assertNotSame-java.lang.String-boolean-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>assertNotSame</h4>\n<pre>public static&nbsp;void&nbsp;assertNotSame(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n                                 boolean&nbsp;expected,\n                                 boolean&nbsp;actual)</pre>\n</li>\n</ul>\n<a name=\"assertNotSame-java.lang.String-char-char-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>assertNotSame</h4>\n<pre>public static&nbsp;void&nbsp;assertNotSame(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n                                 char&nbsp;expected,\n                                 char&nbsp;actual)</pre>\n</li>\n</ul>\n<a name=\"assertSame-java.lang.String-java.lang.Object-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>assertSame</h4>\n<pre>public static&nbsp;void&nbsp;assertSame(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n                              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;expected,\n                              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;actual)</pre>\n</li>\n</ul>\n<a name=\"assertSame-java.lang.String-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>assertSame</h4>\n<pre>public static&nbsp;void&nbsp;assertSame(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n                              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;expected,\n                              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actual)</pre>\n</li>\n</ul>\n<a name=\"fail-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fail</h4>\n<pre>public static&nbsp;void&nbsp;fail(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message)</pre>\n</li>\n</ul>\n<a name=\"pass-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>pass</h4>\n<pre>public static&nbsp;void&nbsp;pass(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Class</li>\n<li><a href=\"../../../stanford/cs106/junit/ComparisonFailureEnhanced.html\" title=\"class in stanford.cs106.junit\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/junit/Assert.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Assert.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/junit/ComparisonFailureEnhanced.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:02 PDT 2017 -->\n<title>ComparisonFailureEnhanced</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"ComparisonFailureEnhanced\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/junit/Assert.html\" title=\"class in stanford.cs106.junit\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/junit/JUnitListener.html\" title=\"interface in stanford.cs106.junit\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/junit/ComparisonFailureEnhanced.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ComparisonFailureEnhanced.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.junit</div>\n<h2 title=\"Class ComparisonFailureEnhanced\" class=\"title\">Class ComparisonFailureEnhanced</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Throwable</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Error.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Error</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/AssertionError.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.AssertionError</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>org.junit.ComparisonFailure</li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.junit.ComparisonFailureEnhanced</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">ComparisonFailureEnhanced</span>\nextends org.junit.ComparisonFailure</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../serialized-form.html#stanford.cs106.junit.ComparisonFailureEnhanced\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/ComparisonFailureEnhanced.html#ComparisonFailureEnhanced-stanford.cs106.junit.UnitTestType-java.lang.String-java.lang.String-java.lang.String-\">ComparisonFailureEnhanced</a></span>(<a href=\"../../../stanford/cs106/junit/UnitTestType.html\" title=\"enum in stanford.cs106.junit\">UnitTestType</a>&nbsp;type,\n                         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n                         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;expected,\n                         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actual)</code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/ComparisonFailureEnhanced.html#ComparisonFailureEnhanced-stanford.cs106.junit.UnitTestType-java.lang.String-java.lang.String-java.lang.String-java.lang.String-\">ComparisonFailureEnhanced</a></span>(<a href=\"../../../stanford/cs106/junit/UnitTestType.html\" title=\"enum in stanford.cs106.junit\">UnitTestType</a>&nbsp;type,\n                         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;valueType,\n                         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n                         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;expected,\n                         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actual)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/ComparisonFailureEnhanced.html#getActual--\">getActual</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/ComparisonFailureEnhanced.html#getDetails--\">getDetails</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/ComparisonFailureEnhanced.html#getExpected--\">getExpected</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/ComparisonFailureEnhanced.html#getMessage--\">getMessage</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/ComparisonFailureEnhanced.html#getStudent--\">getStudent</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../../stanford/cs106/junit/UnitTestType.html\" title=\"enum in stanford.cs106.junit\">UnitTestType</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/ComparisonFailureEnhanced.html#getType--\">getType</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/ComparisonFailureEnhanced.html#getValueType--\">getValueType</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/ComparisonFailureEnhanced.html#setDetails-java.lang.String-\">setDetails</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;details)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Throwable\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#addSuppressed-java.lang.Throwable-\" title=\"class or interface in java.lang\">addSuppressed</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#fillInStackTrace--\" title=\"class or interface in java.lang\">fillInStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getCause--\" title=\"class or interface in java.lang\">getCause</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getLocalizedMessage--\" title=\"class or interface in java.lang\">getLocalizedMessage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getStackTrace--\" title=\"class or interface in java.lang\">getStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getSuppressed--\" title=\"class or interface in java.lang\">getSuppressed</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#initCause-java.lang.Throwable-\" title=\"class or interface in java.lang\">initCause</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#printStackTrace--\" title=\"class or interface in java.lang\">printStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#printStackTrace-java.io.PrintStream-\" title=\"class or interface in java.lang\">printStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#printStackTrace-java.io.PrintWriter-\" title=\"class or interface in java.lang\">printStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#setStackTrace-java.lang.StackTraceElement:A-\" title=\"class or interface in java.lang\">setStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"ComparisonFailureEnhanced-stanford.cs106.junit.UnitTestType-java.lang.String-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>ComparisonFailureEnhanced</h4>\n<pre>public&nbsp;ComparisonFailureEnhanced(<a href=\"../../../stanford/cs106/junit/UnitTestType.html\" title=\"enum in stanford.cs106.junit\">UnitTestType</a>&nbsp;type,\n                                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n                                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;expected,\n                                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actual)</pre>\n</li>\n</ul>\n<a name=\"ComparisonFailureEnhanced-stanford.cs106.junit.UnitTestType-java.lang.String-java.lang.String-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>ComparisonFailureEnhanced</h4>\n<pre>public&nbsp;ComparisonFailureEnhanced(<a href=\"../../../stanford/cs106/junit/UnitTestType.html\" title=\"enum in stanford.cs106.junit\">UnitTestType</a>&nbsp;type,\n                                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;valueType,\n                                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n                                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;expected,\n                                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;actual)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"getMessage--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getMessage</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getMessage()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code>getMessage</code>&nbsp;in class&nbsp;<code>org.junit.ComparisonFailure</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getExpected--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getExpected</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getExpected()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code>getExpected</code>&nbsp;in class&nbsp;<code>org.junit.ComparisonFailure</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getActual--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getActual</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getActual()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code>getActual</code>&nbsp;in class&nbsp;<code>org.junit.ComparisonFailure</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getStudent--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getStudent</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getStudent()</pre>\n</li>\n</ul>\n<a name=\"getType--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getType</h4>\n<pre>public&nbsp;<a href=\"../../../stanford/cs106/junit/UnitTestType.html\" title=\"enum in stanford.cs106.junit\">UnitTestType</a>&nbsp;getType()</pre>\n</li>\n</ul>\n<a name=\"getDetails--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getDetails</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getDetails()</pre>\n</li>\n</ul>\n<a name=\"getValueType--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getValueType</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getValueType()</pre>\n</li>\n</ul>\n<a name=\"setDetails-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>setDetails</h4>\n<pre>public&nbsp;void&nbsp;setDetails(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;details)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/junit/Assert.html\" title=\"class in stanford.cs106.junit\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/junit/JUnitListener.html\" title=\"interface in stanford.cs106.junit\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/junit/ComparisonFailureEnhanced.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ComparisonFailureEnhanced.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/junit/JUnitListener.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:02 PDT 2017 -->\n<title>JUnitListener</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"JUnitListener\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":6,\"i1\":6,\"i2\":6,\"i3\":6,\"i4\":6,\"i5\":6};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],4:[\"t3\",\"Abstract Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/junit/ComparisonFailureEnhanced.html\" title=\"class in stanford.cs106.junit\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/junit/JUnitUtils.html\" title=\"class in stanford.cs106.junit\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/junit/JUnitListener.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JUnitListener.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.junit</div>\n<h2 title=\"Interface JUnitListener\" class=\"title\">Interface JUnitListener</h2>\n</div>\n<div class=\"contentContainer\">\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public interface <span class=\"typeNameLabel\">JUnitListener</span></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t3\" class=\"tableTab\"><span><a href=\"javascript:show(4);\">Abstract Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/JUnitListener.html#setTestCounts-int-int-\">setTestCounts</a></span>(int&nbsp;passCount,\n             int&nbsp;testCount)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/JUnitListener.html#setTestDetails-java.lang.String-java.util.Map-\">setTestDetails</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;testName,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;details)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/JUnitListener.html#setTestDetailsMessage-java.lang.String-java.lang.String-\">setTestDetailsMessage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;testName,\n                     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;detailsMessage)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/JUnitListener.html#setTestingCompleted-boolean-\">setTestingCompleted</a></span>(boolean&nbsp;completed)</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/JUnitListener.html#setTestResult-java.lang.String-java.lang.String-\">setTestResult</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;testName,\n             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;result)</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/JUnitListener.html#setTestRuntime-java.lang.String-int-\">setTestRuntime</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;testName,\n              int&nbsp;runtimeMS)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"setTestCounts-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setTestCounts</h4>\n<pre>void&nbsp;setTestCounts(int&nbsp;passCount,\n                   int&nbsp;testCount)</pre>\n</li>\n</ul>\n<a name=\"setTestDetails-java.lang.String-java.util.Map-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setTestDetails</h4>\n<pre>void&nbsp;setTestDetails(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;testName,\n                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;details)</pre>\n</li>\n</ul>\n<a name=\"setTestDetailsMessage-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setTestDetailsMessage</h4>\n<pre>void&nbsp;setTestDetailsMessage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;testName,\n                           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;detailsMessage)</pre>\n</li>\n</ul>\n<a name=\"setTestingCompleted-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setTestingCompleted</h4>\n<pre>void&nbsp;setTestingCompleted(boolean&nbsp;completed)</pre>\n</li>\n</ul>\n<a name=\"setTestResult-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setTestResult</h4>\n<pre>boolean&nbsp;setTestResult(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;testName,\n                      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;result)</pre>\n</li>\n</ul>\n<a name=\"setTestRuntime-java.lang.String-int-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>setTestRuntime</h4>\n<pre>boolean&nbsp;setTestRuntime(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;testName,\n                       int&nbsp;runtimeMS)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/junit/ComparisonFailureEnhanced.html\" title=\"class in stanford.cs106.junit\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/junit/JUnitUtils.html\" title=\"class in stanford.cs106.junit\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/junit/JUnitListener.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JUnitListener.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/junit/JUnitUtils.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:02 PDT 2017 -->\n<title>JUnitUtils</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"JUnitUtils\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9,\"i2\":9,\"i3\":9,\"i4\":9,\"i5\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/junit/JUnitListener.html\" title=\"interface in stanford.cs106.junit\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/junit/TestCategory.html\" title=\"annotation in stanford.cs106.junit\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/junit/JUnitUtils.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JUnitUtils.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.junit</div>\n<h2 title=\"Class JUnitUtils\" class=\"title\">Class JUnitUtils</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.junit.JUnitUtils</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">JUnitUtils</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/JUnitUtils.html#getTestCategory-java.lang.Class-java.lang.reflect.Method-\">getTestCategory</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Method</a>&nbsp;method)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/JUnitUtils.html#getTestCategory-java.lang.Class-java.lang.reflect.Method-boolean-\">getTestCategory</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Method</a>&nbsp;method,\n               boolean&nbsp;infer)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/JUnitUtils.html#getTestFullName-java.lang.Class-java.lang.reflect.Method-\">getTestFullName</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Method</a>&nbsp;method)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/JUnitUtils.html#isJUnitMethod-java.lang.Class-java.lang.reflect.Method-\">isJUnitMethod</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Method</a>&nbsp;method)</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/JUnitUtils.html#isJUnitMethod-java.lang.Class-java.lang.String-\">isJUnitMethod</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;methodName)</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/JUnitUtils.html#runJUnitMethod-java.lang.Class-java.lang.reflect.Method-stanford.cs106.junit.JUnitListener-\">runJUnitMethod</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;junitClass,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Method</a>&nbsp;method,\n              <a href=\"../../../stanford/cs106/junit/JUnitListener.html\" title=\"interface in stanford.cs106.junit\">JUnitListener</a>&nbsp;listener)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"getTestCategory-java.lang.Class-java.lang.reflect.Method-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getTestCategory</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getTestCategory(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                                     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Method</a>&nbsp;method)</pre>\n</li>\n</ul>\n<a name=\"getTestCategory-java.lang.Class-java.lang.reflect.Method-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getTestCategory</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getTestCategory(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                                     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Method</a>&nbsp;method,\n                                     boolean&nbsp;infer)</pre>\n</li>\n</ul>\n<a name=\"getTestFullName-java.lang.Class-java.lang.reflect.Method-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getTestFullName</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getTestFullName(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                                     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Method</a>&nbsp;method)</pre>\n</li>\n</ul>\n<a name=\"isJUnitMethod-java.lang.Class-java.lang.reflect.Method-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isJUnitMethod</h4>\n<pre>public static&nbsp;boolean&nbsp;isJUnitMethod(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Method</a>&nbsp;method)</pre>\n</li>\n</ul>\n<a name=\"isJUnitMethod-java.lang.Class-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isJUnitMethod</h4>\n<pre>public static&nbsp;boolean&nbsp;isJUnitMethod(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;methodName)</pre>\n</li>\n</ul>\n<a name=\"runJUnitMethod-java.lang.Class-java.lang.reflect.Method-stanford.cs106.junit.JUnitListener-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>runJUnitMethod</h4>\n<pre>public static&nbsp;void&nbsp;runJUnitMethod(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;junitClass,\n                                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Method</a>&nbsp;method,\n                                  <a href=\"../../../stanford/cs106/junit/JUnitListener.html\" title=\"interface in stanford.cs106.junit\">JUnitListener</a>&nbsp;listener)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/junit/JUnitListener.html\" title=\"interface in stanford.cs106.junit\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/junit/TestCategory.html\" title=\"annotation in stanford.cs106.junit\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/junit/JUnitUtils.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JUnitUtils.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/junit/TestCategory.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:02 PDT 2017 -->\n<title>TestCategory</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"TestCategory\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/junit/JUnitUtils.html\" title=\"class in stanford.cs106.junit\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/junit/UnitTestType.html\" title=\"enum in stanford.cs106.junit\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/junit/TestCategory.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"TestCategory.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Required&nbsp;|&nbsp;</li>\n<li><a href=\"#annotation.type.optional.element.summary\">Optional</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#annotation.type.element.detail\">Element</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.junit</div>\n<h2 title=\"Annotation Type TestCategory\" class=\"title\">Annotation Type TestCategory</h2>\n</div>\n<div class=\"contentContainer\">\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Target.html?is-external=true\" title=\"class or interface in java.lang.annotation\">@Target</a>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Target.html?is-external=true#value--\" title=\"class or interface in java.lang.annotation\">value</a>=<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/ElementType.html?is-external=true#METHOD\" title=\"class or interface in java.lang.annotation\">METHOD</a>)\n <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Retention.html?is-external=true\" title=\"class or interface in java.lang.annotation\">@Retention</a>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Retention.html?is-external=true#value--\" title=\"class or interface in java.lang.annotation\">value</a>=<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/RetentionPolicy.html?is-external=true#RUNTIME\" title=\"class or interface in java.lang.annotation\">RUNTIME</a>)\npublic @interface <span class=\"memberNameLabel\">TestCategory</span></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== ANNOTATION TYPE OPTIONAL MEMBER SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"annotation.type.optional.element.summary\">\n<!--   -->\n</a>\n<h3>Optional Element Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Optional Element Summary table, listing optional elements, and an explanation\">\n<caption><span>Optional Elements</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Optional Element and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/TestCategory.html#value--\">value</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ ANNOTATION TYPE MEMBER DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"annotation.type.element.detail\">\n<!--   -->\n</a>\n<h3>Element Detail</h3>\n<a name=\"value--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>value</h4>\n<pre>public abstract&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value</pre>\n<dl>\n<dt>Default:</dt>\n<dd>\"\"</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/junit/JUnitUtils.html\" title=\"class in stanford.cs106.junit\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/junit/UnitTestType.html\" title=\"enum in stanford.cs106.junit\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/junit/TestCategory.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"TestCategory.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Required&nbsp;|&nbsp;</li>\n<li><a href=\"#annotation.type.optional.element.summary\">Optional</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#annotation.type.element.detail\">Element</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/junit/UnitTestType.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:02 PDT 2017 -->\n<title>UnitTestType</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"UnitTestType\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/junit/TestCategory.html\" title=\"annotation in stanford.cs106.junit\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li>Next&nbsp;Class</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/junit/UnitTestType.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"UnitTestType.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#enum.constant.summary\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#enum.constant.detail\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.junit</div>\n<h2 title=\"Enum UnitTestType\" class=\"title\">Enum UnitTestType</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Enum</a>&lt;<a href=\"../../../stanford/cs106/junit/UnitTestType.html\" title=\"enum in stanford.cs106.junit\">UnitTestType</a>&gt;</li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.junit.UnitTestType</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;<a href=\"../../../stanford/cs106/junit/UnitTestType.html\" title=\"enum in stanford.cs106.junit\">UnitTestType</a>&gt;</dd>\n</dl>\n<hr>\n<br>\n<pre>public enum <span class=\"typeNameLabel\">UnitTestType</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true\" title=\"class or interface in java.lang\">Enum</a>&lt;<a href=\"../../../stanford/cs106/junit/UnitTestType.html\" title=\"enum in stanford.cs106.junit\">UnitTestType</a>&gt;</pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== ENUM CONSTANT SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"enum.constant.summary\">\n<!--   -->\n</a>\n<h3>Enum Constant Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Enum Constant Summary table, listing enum constants, and an explanation\">\n<caption><span>Enum Constants</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Enum Constant and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/UnitTestType.html#ASSERT_DIFF\">ASSERT_DIFF</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/UnitTestType.html#ASSERT_EQUALS\">ASSERT_EQUALS</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/UnitTestType.html#ASSERT_FALSE\">ASSERT_FALSE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/UnitTestType.html#ASSERT_NEAR\">ASSERT_NEAR</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/UnitTestType.html#ASSERT_NOT_EQUALS\">ASSERT_NOT_EQUALS</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/UnitTestType.html#ASSERT_NOT_NULL\">ASSERT_NOT_NULL</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/UnitTestType.html#ASSERT_NULL\">ASSERT_NULL</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/UnitTestType.html#ASSERT_TRUE\">ASSERT_TRUE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/UnitTestType.html#EXCEPTION\">EXCEPTION</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/UnitTestType.html#FAIL\">FAIL</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/UnitTestType.html#NOT_EXCEPTION\">NOT_EXCEPTION</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/UnitTestType.html#PASS\">PASS</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../../stanford/cs106/junit/UnitTestType.html\" title=\"enum in stanford.cs106.junit\">UnitTestType</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/UnitTestType.html#valueOf-java.lang.String-\">valueOf</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>\n<div class=\"block\">Returns the enum constant of this type with the specified name.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../../stanford/cs106/junit/UnitTestType.html\" title=\"enum in stanford.cs106.junit\">UnitTestType</a>[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/junit/UnitTestType.html#values--\">values</a></span>()</code>\n<div class=\"block\">Returns an array containing the constants of this enum type, in\nthe order they are declared.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Enum\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true\" title=\"class or interface in java.lang\">Enum</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#compareTo-E-\" title=\"class or interface in java.lang\">compareTo</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#getDeclaringClass--\" title=\"class or interface in java.lang\">getDeclaringClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#name--\" title=\"class or interface in java.lang\">name</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#ordinal--\" title=\"class or interface in java.lang\">ordinal</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#valueOf-java.lang.Class-java.lang.String-\" title=\"class or interface in java.lang\">valueOf</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ ENUM CONSTANT DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"enum.constant.detail\">\n<!--   -->\n</a>\n<h3>Enum Constant Detail</h3>\n<a name=\"ASSERT_EQUALS\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>ASSERT_EQUALS</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/junit/UnitTestType.html\" title=\"enum in stanford.cs106.junit\">UnitTestType</a> ASSERT_EQUALS</pre>\n</li>\n</ul>\n<a name=\"ASSERT_NOT_EQUALS\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>ASSERT_NOT_EQUALS</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/junit/UnitTestType.html\" title=\"enum in stanford.cs106.junit\">UnitTestType</a> ASSERT_NOT_EQUALS</pre>\n</li>\n</ul>\n<a name=\"ASSERT_NEAR\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>ASSERT_NEAR</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/junit/UnitTestType.html\" title=\"enum in stanford.cs106.junit\">UnitTestType</a> ASSERT_NEAR</pre>\n</li>\n</ul>\n<a name=\"ASSERT_DIFF\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>ASSERT_DIFF</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/junit/UnitTestType.html\" title=\"enum in stanford.cs106.junit\">UnitTestType</a> ASSERT_DIFF</pre>\n</li>\n</ul>\n<a name=\"ASSERT_TRUE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>ASSERT_TRUE</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/junit/UnitTestType.html\" title=\"enum in stanford.cs106.junit\">UnitTestType</a> ASSERT_TRUE</pre>\n</li>\n</ul>\n<a name=\"ASSERT_FALSE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>ASSERT_FALSE</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/junit/UnitTestType.html\" title=\"enum in stanford.cs106.junit\">UnitTestType</a> ASSERT_FALSE</pre>\n</li>\n</ul>\n<a name=\"ASSERT_NULL\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>ASSERT_NULL</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/junit/UnitTestType.html\" title=\"enum in stanford.cs106.junit\">UnitTestType</a> ASSERT_NULL</pre>\n</li>\n</ul>\n<a name=\"ASSERT_NOT_NULL\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>ASSERT_NOT_NULL</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/junit/UnitTestType.html\" title=\"enum in stanford.cs106.junit\">UnitTestType</a> ASSERT_NOT_NULL</pre>\n</li>\n</ul>\n<a name=\"EXCEPTION\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>EXCEPTION</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/junit/UnitTestType.html\" title=\"enum in stanford.cs106.junit\">UnitTestType</a> EXCEPTION</pre>\n</li>\n</ul>\n<a name=\"NOT_EXCEPTION\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>NOT_EXCEPTION</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/junit/UnitTestType.html\" title=\"enum in stanford.cs106.junit\">UnitTestType</a> NOT_EXCEPTION</pre>\n</li>\n</ul>\n<a name=\"PASS\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>PASS</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/junit/UnitTestType.html\" title=\"enum in stanford.cs106.junit\">UnitTestType</a> PASS</pre>\n</li>\n</ul>\n<a name=\"FAIL\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>FAIL</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/junit/UnitTestType.html\" title=\"enum in stanford.cs106.junit\">UnitTestType</a> FAIL</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"values--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>values</h4>\n<pre>public static&nbsp;<a href=\"../../../stanford/cs106/junit/UnitTestType.html\" title=\"enum in stanford.cs106.junit\">UnitTestType</a>[]&nbsp;values()</pre>\n<div class=\"block\">Returns an array containing the constants of this enum type, in\nthe order they are declared.  This method may be used to iterate\nover the constants as follows:\n<pre>\nfor (UnitTestType c : UnitTestType.values())\n&nbsp;   System.out.println(c);\n</pre></div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>an array containing the constants of this enum type, in the order they are declared</dd>\n</dl>\n</li>\n</ul>\n<a name=\"valueOf-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>valueOf</h4>\n<pre>public static&nbsp;<a href=\"../../../stanford/cs106/junit/UnitTestType.html\" title=\"enum in stanford.cs106.junit\">UnitTestType</a>&nbsp;valueOf(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n<div class=\"block\">Returns the enum constant of this type with the specified name.\nThe string must match <i>exactly</i> an identifier used to declare an\nenum constant in this type.  (Extraneous whitespace characters are \nnot permitted.)</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>name</code> - the name of the enum constant to be returned.</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the enum constant with the specified name</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - if this enum type has no constant with the specified name</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if the argument is null</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/junit/TestCategory.html\" title=\"annotation in stanford.cs106.junit\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li>Next&nbsp;Class</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/junit/UnitTestType.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"UnitTestType.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#enum.constant.summary\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#enum.constant.detail\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/junit/package-frame.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>stanford.cs106.junit</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<h1 class=\"bar\"><a href=\"../../../stanford/cs106/junit/package-summary.html\" target=\"classFrame\">stanford.cs106.junit</a></h1>\n<div class=\"indexContainer\">\n<h2 title=\"Interfaces\">Interfaces</h2>\n<ul title=\"Interfaces\">\n<li><a href=\"JUnitListener.html\" title=\"interface in stanford.cs106.junit\" target=\"classFrame\"><span class=\"interfaceName\">JUnitListener</span></a></li>\n</ul>\n<h2 title=\"Classes\">Classes</h2>\n<ul title=\"Classes\">\n<li><a href=\"Assert.html\" title=\"class in stanford.cs106.junit\" target=\"classFrame\">Assert</a></li>\n<li><a href=\"JUnitUtils.html\" title=\"class in stanford.cs106.junit\" target=\"classFrame\">JUnitUtils</a></li>\n</ul>\n<h2 title=\"Enums\">Enums</h2>\n<ul title=\"Enums\">\n<li><a href=\"UnitTestType.html\" title=\"enum in stanford.cs106.junit\" target=\"classFrame\">UnitTestType</a></li>\n</ul>\n<h2 title=\"Errors\">Errors</h2>\n<ul title=\"Errors\">\n<li><a href=\"ComparisonFailureEnhanced.html\" title=\"class in stanford.cs106.junit\" target=\"classFrame\">ComparisonFailureEnhanced</a></li>\n</ul>\n<h2 title=\"Annotation Types\">Annotation Types</h2>\n<ul title=\"Annotation Types\">\n<li><a href=\"TestCategory.html\" title=\"annotation in stanford.cs106.junit\" target=\"classFrame\">TestCategory</a></li>\n</ul>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/junit/package-summary.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>stanford.cs106.junit</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"stanford.cs106.junit\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li class=\"navBarCell1Rev\">Package</li>\n<li>Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/io/package-summary.html\">Prev&nbsp;Package</a></li>\n<li><a href=\"../../../stanford/cs106/net/package-summary.html\">Next&nbsp;Package</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/junit/package-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 title=\"Package\" class=\"title\">Package&nbsp;stanford.cs106.junit</h1>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Interface Summary table, listing interfaces, and an explanation\">\n<caption><span>Interface Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Interface</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/junit/JUnitListener.html\" title=\"interface in stanford.cs106.junit\">JUnitListener</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Class Summary table, listing classes, and an explanation\">\n<caption><span>Class Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Class</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/junit/Assert.html\" title=\"class in stanford.cs106.junit\">Assert</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/junit/JUnitUtils.html\" title=\"class in stanford.cs106.junit\">JUnitUtils</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Enum Summary table, listing enums, and an explanation\">\n<caption><span>Enum Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Enum</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/junit/UnitTestType.html\" title=\"enum in stanford.cs106.junit\">UnitTestType</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Error Summary table, listing errors, and an explanation\">\n<caption><span>Error Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Error</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/junit/ComparisonFailureEnhanced.html\" title=\"class in stanford.cs106.junit\">ComparisonFailureEnhanced</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Annotation Types Summary table, listing annotation types, and an explanation\">\n<caption><span>Annotation Types Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Annotation Type</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/junit/TestCategory.html\" title=\"annotation in stanford.cs106.junit\">TestCategory</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n</tbody>\n</table>\n</li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li class=\"navBarCell1Rev\">Package</li>\n<li>Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/io/package-summary.html\">Prev&nbsp;Package</a></li>\n<li><a href=\"../../../stanford/cs106/net/package-summary.html\">Next&nbsp;Package</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/junit/package-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/junit/package-tree.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>stanford.cs106.junit Class Hierarchy</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"stanford.cs106.junit Class Hierarchy\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/io/package-tree.html\">Prev</a></li>\n<li><a href=\"../../../stanford/cs106/net/package-tree.html\">Next</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/junit/package-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 class=\"title\">Hierarchy For Package stanford.cs106.junit</h1>\n<span class=\"packageHierarchyLabel\">Package Hierarchies:</span>\n<ul class=\"horizontal\">\n<li><a href=\"../../../overview-tree.html\">All Packages</a></li>\n</ul>\n</div>\n<div class=\"contentContainer\">\n<h2 title=\"Class Hierarchy\">Class Hierarchy</h2>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Object</span></a>\n<ul>\n<li type=\"circle\">stanford.cs106.junit.<a href=\"../../../stanford/cs106/junit/Assert.html\" title=\"class in stanford.cs106.junit\"><span class=\"typeNameLink\">Assert</span></a></li>\n<li type=\"circle\">stanford.cs106.junit.<a href=\"../../../stanford/cs106/junit/JUnitUtils.html\" title=\"class in stanford.cs106.junit\"><span class=\"typeNameLink\">JUnitUtils</span></a></li>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Throwable</span></a> (implements java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Error.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Error</span></a>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/AssertionError.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">AssertionError</span></a>\n<ul>\n<li type=\"circle\">org.junit.ComparisonFailure\n<ul>\n<li type=\"circle\">stanford.cs106.junit.<a href=\"../../../stanford/cs106/junit/ComparisonFailureEnhanced.html\" title=\"class in stanford.cs106.junit\"><span class=\"typeNameLink\">ComparisonFailureEnhanced</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<h2 title=\"Interface Hierarchy\">Interface Hierarchy</h2>\n<ul>\n<li type=\"circle\">stanford.cs106.junit.<a href=\"../../../stanford/cs106/junit/JUnitListener.html\" title=\"interface in stanford.cs106.junit\"><span class=\"typeNameLink\">JUnitListener</span></a></li>\n</ul>\n<h2 title=\"Annotation Type Hierarchy\">Annotation Type Hierarchy</h2>\n<ul>\n<li type=\"circle\">stanford.cs106.junit.<a href=\"../../../stanford/cs106/junit/TestCategory.html\" title=\"annotation in stanford.cs106.junit\"><span class=\"typeNameLink\">TestCategory</span></a> (implements java.lang.annotation.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true\" title=\"class or interface in java.lang.annotation\">Annotation</a>)</li>\n</ul>\n<h2 title=\"Enum Hierarchy\">Enum Hierarchy</h2>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Object</span></a>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Enum</span></a>&lt;E&gt; (implements java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;T&gt;, java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">stanford.cs106.junit.<a href=\"../../../stanford/cs106/junit/UnitTestType.html\" title=\"enum in stanford.cs106.junit\"><span class=\"typeNameLink\">UnitTestType</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/io/package-tree.html\">Prev</a></li>\n<li><a href=\"../../../stanford/cs106/net/package-tree.html\">Next</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/junit/package-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/net/BackEndServer.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:04 PDT 2017 -->\n<title>BackEndServer</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"BackEndServer\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9,\"i2\":10,\"i3\":10,\"i4\":9,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Class</li>\n<li><a href=\"../../../stanford/cs106/net/Downloader.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/net/BackEndServer.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"BackEndServer.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.net</div>\n<h2 title=\"Class BackEndServer\" class=\"title\">Class BackEndServer</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.net.BackEndServer</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">BackEndServer</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/BackEndServer.html#BackEndServer--\">BackEndServer</a></span>()</code>\n<div class=\"block\">Method: Constructor\n -------------------\n All this method does is create an object that could be used to handle\n HTTP requests (but at the time of construction does nothing).</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/BackEndServer.html#BackEndServer-int-\">BackEndServer</a></span>(int&nbsp;port)</code>\n<div class=\"block\">Method: Constructor\n -------------------\n All this method does is create an object that could be used to handle\n HTTP requests (but at the time of construction does nothing).</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../../stanford/cs106/net/BackEndServer.html\" title=\"class in stanford.cs106.net\">BackEndServer</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/BackEndServer.html#getInstance--\">getInstance</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../../stanford/cs106/net/BackEndServer.html\" title=\"class in stanford.cs106.net\">BackEndServer</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/BackEndServer.html#getInstance-int-\">getInstance</a></span>(int&nbsp;port)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/BackEndServer.html#getPort--\">getPort</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/BackEndServer.html#isRunning--\">isRunning</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/BackEndServer.html#renderTemplate-java.lang.String-java.util.Map-\">renderTemplate</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;templatePath,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;args)</code>\n<div class=\"block\">Method: Render Template\n -----------------------\n OPTIONAL: This method takes in a template (currently it takes the path to a template)\n and provides functionality for (a) importing other slivers of HTML and (b) inserting\n values from a map into all places in the template with the sequence {{key}}.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/BackEndServer.html#sendResponse-int-int-java.lang.String-java.lang.String-\">sendResponse</a></span>(int&nbsp;requestID,\n            int&nbsp;httpErrorCode,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;contentType,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;responseText)</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/BackEndServer.html#sendResponseFile-int-int-java.lang.String-java.lang.String-\">sendResponseFile</a></span>(int&nbsp;requestID,\n                int&nbsp;httpErrorCode,\n                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;contentType,\n                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;responseFilePath)</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/BackEndServer.html#setJavaBackEnd-stanford.spl.JavaBackEnd-\">setJavaBackEnd</a></span>(stanford.spl.JavaBackEnd&nbsp;javaBackEnd)</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/BackEndServer.html#start--\">start</a></span>()</code>\n<div class=\"block\">Method: Start\n -------------\n This method starts a server on the given port.</div>\n</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/BackEndServer.html#stop--\">stop</a></span>()</code>\n<div class=\"block\">...</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"BackEndServer--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>BackEndServer</h4>\n<pre>public&nbsp;BackEndServer()</pre>\n<div class=\"block\">Method: Constructor\n -------------------\n All this method does is create an object that could be used to handle\n HTTP requests (but at the time of construction does nothing).</div>\n</li>\n</ul>\n<a name=\"BackEndServer-int-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>BackEndServer</h4>\n<pre>public&nbsp;BackEndServer(int&nbsp;port)</pre>\n<div class=\"block\">Method: Constructor\n -------------------\n All this method does is create an object that could be used to handle\n HTTP requests (but at the time of construction does nothing).</div>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"getInstance--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getInstance</h4>\n<pre>public static&nbsp;<a href=\"../../../stanford/cs106/net/BackEndServer.html\" title=\"class in stanford.cs106.net\">BackEndServer</a>&nbsp;getInstance()</pre>\n</li>\n</ul>\n<a name=\"getInstance-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getInstance</h4>\n<pre>public static&nbsp;<a href=\"../../../stanford/cs106/net/BackEndServer.html\" title=\"class in stanford.cs106.net\">BackEndServer</a>&nbsp;getInstance(int&nbsp;port)</pre>\n</li>\n</ul>\n<a name=\"getPort--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getPort</h4>\n<pre>public&nbsp;int&nbsp;getPort()</pre>\n</li>\n</ul>\n<a name=\"isRunning--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isRunning</h4>\n<pre>public&nbsp;boolean&nbsp;isRunning()</pre>\n</li>\n</ul>\n<a name=\"sendResponse-int-int-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>sendResponse</h4>\n<pre>public&nbsp;void&nbsp;sendResponse(int&nbsp;requestID,\n                         int&nbsp;httpErrorCode,\n                         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;contentType,\n                         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;responseText)</pre>\n</li>\n</ul>\n<a name=\"sendResponseFile-int-int-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>sendResponseFile</h4>\n<pre>public&nbsp;void&nbsp;sendResponseFile(int&nbsp;requestID,\n                             int&nbsp;httpErrorCode,\n                             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;contentType,\n                             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;responseFilePath)</pre>\n</li>\n</ul>\n<a name=\"setJavaBackEnd-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setJavaBackEnd</h4>\n<pre>public&nbsp;void&nbsp;setJavaBackEnd(stanford.spl.JavaBackEnd&nbsp;javaBackEnd)</pre>\n</li>\n</ul>\n<a name=\"start--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>start</h4>\n<pre>public&nbsp;void&nbsp;start()</pre>\n<div class=\"block\">Method: Start\n -------------\n This method starts a server on the given port. It is hard coded to handle\n img requests and resource requests specially by just reading the files and\n returning them. All other requests should be handled by the users code.</div>\n</li>\n</ul>\n<a name=\"stop--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>stop</h4>\n<pre>public&nbsp;void&nbsp;stop()</pre>\n<div class=\"block\">...</div>\n</li>\n</ul>\n<a name=\"renderTemplate-java.lang.String-java.util.Map-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>renderTemplate</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;renderTemplate(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;templatePath,\n                                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;args)</pre>\n<div class=\"block\">Method: Render Template\n -----------------------\n OPTIONAL: This method takes in a template (currently it takes the path to a template)\n and provides functionality for (a) importing other slivers of HTML and (b) inserting\n values from a map into all places in the template with the sequence {{key}}. See\n resources/index.html for an example.</div>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Class</li>\n<li><a href=\"../../../stanford/cs106/net/Downloader.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/net/BackEndServer.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"BackEndServer.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/net/Downloader.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:04 PDT 2017 -->\n<title>Downloader</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"Downloader\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/net/BackEndServer.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/net/NetworkManager.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/net/Downloader.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Downloader.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.net</div>\n<h2 title=\"Class Downloader\" class=\"title\">Class Downloader</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.net.Downloader</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">Downloader</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/Downloader.html#downloadFile-java.net.URL-\">downloadFile</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URL.html?is-external=true\" title=\"class or interface in java.net\">URL</a>&nbsp;url)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,byte[]&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/Downloader.html#getZipFileContents-java.net.URL-\">getZipFileContents</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URL.html?is-external=true\" title=\"class or interface in java.net\">URL</a>&nbsp;url)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"downloadFile-java.net.URL-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>downloadFile</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;downloadFile(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URL.html?is-external=true\" title=\"class or interface in java.net\">URL</a>&nbsp;url)\n                           throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getZipFileContents-java.net.URL-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>getZipFileContents</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,byte[]&gt;&nbsp;getZipFileContents(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URL.html?is-external=true\" title=\"class or interface in java.net\">URL</a>&nbsp;url)\n                                             throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/net/BackEndServer.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/net/NetworkManager.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/net/Downloader.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Downloader.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/net/NetworkManager.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:04 PDT 2017 -->\n<title>NetworkManager</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"NetworkManager\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":10,\"i2\":9,\"i3\":9,\"i4\":9,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/net/Downloader.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/net/NetworkManager.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"NetworkManager.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.net</div>\n<h2 title=\"Class NetworkManager\" class=\"title\">Class NetworkManager</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.net.NetworkManager</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">NetworkManager</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/NetworkManager.html#NetworkManager-int-\">NetworkManager</a></span>(int&nbsp;port)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/NetworkManager.html#findIPAddress-java.awt.event.ActionListener-\">findIPAddress</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../../acm/gui/Event.html\" title=\"class in acm.gui\">Event</a>&lt;? extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true\" title=\"class or interface in java.lang\">Exception</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/NetworkManager.html#getErrorEvent--\">getErrorEvent</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/NetworkManager.html#getHostName--\">getHostName</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/NetworkManager.html#getIpAddress--\">getIpAddress</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/NetworkManager.html#getIpAddresses--\">getIpAddresses</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/NetworkManager.html#getPort--\">getPort</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../../acm/gui/Event.html\" title=\"class in acm.gui\">Event</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/NetworkManager.html#getReceiveEvent--\">getReceiveEvent</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/NetworkManager.html#send-java.lang.String-java.lang.String...-\">send</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;host,\n    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;strings)</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/NetworkManager.html#sendHttp-java.lang.String-java.util.Map-\">sendHttp</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;url,\n        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&gt;&nbsp;params)</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/NetworkManager.html#start--\">start</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/NetworkManager.html#stop--\">stop</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"NetworkManager-int-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>NetworkManager</h4>\n<pre>public&nbsp;NetworkManager(int&nbsp;port)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"findIPAddress-java.awt.event.ActionListener-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>findIPAddress</h4>\n<pre>public static&nbsp;void&nbsp;findIPAddress(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;listener)</pre>\n</li>\n</ul>\n<a name=\"getHostName--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getHostName</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getHostName()</pre>\n</li>\n</ul>\n<a name=\"getIpAddress--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getIpAddress</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getIpAddress()</pre>\n</li>\n</ul>\n<a name=\"getIpAddresses--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getIpAddresses</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getIpAddresses()</pre>\n</li>\n</ul>\n<a name=\"getErrorEvent--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getErrorEvent</h4>\n<pre>public&nbsp;<a href=\"../../../acm/gui/Event.html\" title=\"class in acm.gui\">Event</a>&lt;? extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true\" title=\"class or interface in java.lang\">Exception</a>&gt;&nbsp;getErrorEvent()</pre>\n</li>\n</ul>\n<a name=\"getPort--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getPort</h4>\n<pre>public&nbsp;int&nbsp;getPort()</pre>\n</li>\n</ul>\n<a name=\"getReceiveEvent--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getReceiveEvent</h4>\n<pre>public&nbsp;<a href=\"../../../acm/gui/Event.html\" title=\"class in acm.gui\">Event</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&gt;&nbsp;getReceiveEvent()</pre>\n</li>\n</ul>\n<a name=\"send-java.lang.String-java.lang.String...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>send</h4>\n<pre>public&nbsp;void&nbsp;send(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;host,\n                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;strings)</pre>\n</li>\n</ul>\n<a name=\"sendHttp-java.lang.String-java.util.Map-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>sendHttp</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;sendHttp(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;url,\n                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&gt;&nbsp;params)</pre>\n</li>\n</ul>\n<a name=\"stop--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>stop</h4>\n<pre>public&nbsp;void&nbsp;stop()</pre>\n</li>\n</ul>\n<a name=\"start--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>start</h4>\n<pre>public&nbsp;void&nbsp;start()\n           throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/net/Downloader.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/net/NetworkManager.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"NetworkManager.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/net/Request.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:04 PDT 2017 -->\n<title>Request</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"Request\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":9,\"i5\":9,\"i6\":9,\"i7\":9,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/net/NetworkManager.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/net/SimpleClient.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/net/Request.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Request.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.net</div>\n<h2 title=\"Class Request\" class=\"title\">Class Request</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.net.Request</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">Request</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n<div class=\"block\">A Request object encapsulates a basic HTTP request along with its\n various query parameter key/value pairs.</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/Request.html#Request-java.lang.String-\">Request</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;cmd)</code>\n<div class=\"block\">Constructs a new Request object with the given command verb.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/Request.html#Request-java.lang.String-java.lang.String...-\">Request</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;cmd,\n       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;parameters)</code>\n<div class=\"block\">Constructs a new Request object with the given command verb\n and the given set of parameter key/value pairs.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/Request.html#addParam-java.lang.String-\">addParam</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;key)</code>\n<div class=\"block\">Adds a new query parameter with the given name and an empty value.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/Request.html#addParam-java.lang.String-java.lang.String-\">addParam</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;key,\n        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</code>\n<div class=\"block\">Adds a new query parameter with the given name and value.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/Request.html#addParams-java.lang.String...-\">addParams</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;params)</code>\n<div class=\"block\">Adds new query parameters with the given name/value pairs,\n passed as a var-args array in the order K1, V1, K2, V2, etc.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/Request.html#addRaw-java.lang.String-java.lang.String-\">addRaw</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;key,\n      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</code>\n<div class=\"block\">Adds a new query parameter with the given name and value.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/Request.html#decode-java.lang.String-\">decode</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;str)</code>\n<div class=\"block\">URL-decodes the given string.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/Request.html#encode-java.lang.String-\">encode</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;str)</code>\n<div class=\"block\">URL-encodes the given string.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../../stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\">Request</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/Request.html#fromUrl-java.lang.String-\">fromUrl</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;url)</code>\n<div class=\"block\">Converts the given string into a Request object,\n parsing and separating any of its query parameters.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../../stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\">Request</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/Request.html#fromUrl-java.net.URL-\">fromUrl</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URL.html?is-external=true\" title=\"class or interface in java.net\">URL</a>&nbsp;url)</code>\n<div class=\"block\">Converts the given URL into a Request object,\n parsing and separating any of its query parameters.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/Request.html#getCommand--\">getCommand</a></span>()</code>\n<div class=\"block\">Returns this request's HTTP command verb.</div>\n</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/Request.html#getParam-java.lang.String-\">getParam</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;key)</code>\n<div class=\"block\">Returns the value of this request's query parameter with the given name.</div>\n</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/Request.html#getParams--\">getParams</a></span>()</code>\n<div class=\"block\">Returns all of this request's query parameters as a map.</div>\n</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/Request.html#getRaw-java.lang.String-\">getRaw</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;key)</code>\n<div class=\"block\">Returns the value of this request's query parameter with the given name.</div>\n</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/Request.html#hasParam-java.lang.String-\">hasParam</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;key)</code>\n<div class=\"block\">Returns true if this request contains a query parameter with the given name.</div>\n</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/Request.html#removeParam-java.lang.String-\">removeParam</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;key)</code>\n<div class=\"block\">Removes the query parameter with the given name from this request.</div>\n</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/Request.html#toGetRequest--\">toGetRequest</a></span>()</code>\n<div class=\"block\">Converts this request into a URL string that could be used for an\n HTTP GET request, such as\n \"http://server:port/verb?param1=value1&param2=value2...&paramN=valueN\".</div>\n</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/Request.html#toString--\">toString</a></span>()</code>\n<div class=\"block\">Returns a string representation of this request for debugging.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"Request-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>Request</h4>\n<pre>public&nbsp;Request(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;cmd)</pre>\n<div class=\"block\">Constructs a new Request object with the given command verb.</div>\n</li>\n</ul>\n<a name=\"Request-java.lang.String-java.lang.String...-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>Request</h4>\n<pre>public&nbsp;Request(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;cmd,\n               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;parameters)</pre>\n<div class=\"block\">Constructs a new Request object with the given command verb\n and the given set of parameter key/value pairs.</div>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"decode-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>decode</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;decode(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;str)</pre>\n<div class=\"block\">URL-decodes the given string.</div>\n</li>\n</ul>\n<a name=\"encode-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>encode</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;encode(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;str)</pre>\n<div class=\"block\">URL-encodes the given string.</div>\n</li>\n</ul>\n<a name=\"fromUrl-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fromUrl</h4>\n<pre>public static&nbsp;<a href=\"../../../stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\">Request</a>&nbsp;fromUrl(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;url)</pre>\n<div class=\"block\">Converts the given string into a Request object,\n parsing and separating any of its query parameters.</div>\n</li>\n</ul>\n<a name=\"fromUrl-java.net.URL-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fromUrl</h4>\n<pre>public static&nbsp;<a href=\"../../../stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\">Request</a>&nbsp;fromUrl(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URL.html?is-external=true\" title=\"class or interface in java.net\">URL</a>&nbsp;url)</pre>\n<div class=\"block\">Converts the given URL into a Request object,\n parsing and separating any of its query parameters.</div>\n</li>\n</ul>\n<a name=\"addParam-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addParam</h4>\n<pre>public&nbsp;void&nbsp;addParam(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;key)</pre>\n<div class=\"block\">Adds a new query parameter with the given name and an empty value.</div>\n</li>\n</ul>\n<a name=\"addParam-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addParam</h4>\n<pre>public&nbsp;void&nbsp;addParam(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;key,\n                     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</pre>\n<div class=\"block\">Adds a new query parameter with the given name and value.</div>\n</li>\n</ul>\n<a name=\"addParams-java.lang.String...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addParams</h4>\n<pre>public&nbsp;void&nbsp;addParams(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;params)</pre>\n<div class=\"block\">Adds new query parameters with the given name/value pairs,\n passed as a var-args array in the order K1, V1, K2, V2, etc.</div>\n</li>\n</ul>\n<a name=\"addRaw-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addRaw</h4>\n<pre>public&nbsp;void&nbsp;addRaw(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;key,\n                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</pre>\n<div class=\"block\">Adds a new query parameter with the given name and value.\n The value is not URL-encoded before including it.</div>\n</li>\n</ul>\n<a name=\"getCommand--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getCommand</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getCommand()</pre>\n<div class=\"block\">Returns this request's HTTP command verb.</div>\n</li>\n</ul>\n<a name=\"getParam-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getParam</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getParam(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;key)</pre>\n<div class=\"block\">Returns the value of this request's query parameter with the given name.\n The parameter value is URL-decoded before returning it.\n If the request contains no such parameter, returns null.</div>\n</li>\n</ul>\n<a name=\"getParams--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getParams</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;getParams()</pre>\n<div class=\"block\">Returns all of this request's query parameters as a map.\n The map returned is immutable and cannot be directly modified.\n If the request contains no parameters, returns an empty map.</div>\n</li>\n</ul>\n<a name=\"getRaw-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getRaw</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getRaw(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;key)</pre>\n<div class=\"block\">Returns the value of this request's query parameter with the given name.\n The parameter value is *not* URL-decoded before returning it.\n If the request contains no such parameter, returns null.</div>\n</li>\n</ul>\n<a name=\"hasParam-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hasParam</h4>\n<pre>public&nbsp;boolean&nbsp;hasParam(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;key)</pre>\n<div class=\"block\">Returns true if this request contains a query parameter with the given name.</div>\n</li>\n</ul>\n<a name=\"removeParam-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeParam</h4>\n<pre>public&nbsp;void&nbsp;removeParam(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;key)</pre>\n<div class=\"block\">Removes the query parameter with the given name from this request.\n If no such query parameter was present, has no effect.</div>\n</li>\n</ul>\n<a name=\"toGetRequest--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>toGetRequest</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;toGetRequest()</pre>\n<div class=\"block\">Converts this request into a URL string that could be used for an\n HTTP GET request, such as\n \"http://server:port/verb?param1=value1&param2=value2...&paramN=valueN\".</div>\n</li>\n</ul>\n<a name=\"toString--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>toString</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;toString()</pre>\n<div class=\"block\">Returns a string representation of this request for debugging.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/net/NetworkManager.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/net/SimpleClient.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/net/Request.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Request.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/net/SimpleClient.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:04 PDT 2017 -->\n<title>SimpleClient</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"SimpleClient\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/net/SimpleServer.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/net/SimpleClient.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"SimpleClient.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.net</div>\n<h2 title=\"Class SimpleClient\" class=\"title\">Class SimpleClient</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.net.SimpleClient</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">SimpleClient</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n<div class=\"block\">This class implements a basic synchronous HTTP client.\n It can connect to an HTTP server on a given port (perhaps a SimpleServer?),\n send it requests, and receive/return their responses.</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/SimpleClient.html#ERROR_KEY\">ERROR_KEY</a></span></code>\n<div class=\"block\">A special error prefix that will appear at the start of error responses.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/SimpleClient.html#SESSION_KEY_PARAM_NAME\">SESSION_KEY_PARAM_NAME</a></span></code>\n<div class=\"block\">A special request parameter used to indicate that the server should\n maintain a session with this client.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/SimpleClient.html#SimpleClient-java.lang.String-\">SimpleClient</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;host)</code>\n<div class=\"block\">Initialiazes a new client to connect to the given HTTP server/host.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/SimpleClient.html#makeRequest-stanford.cs106.net.Request-\">makeRequest</a></span>(<a href=\"../../../stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\">Request</a>&nbsp;request)</code>\n<div class=\"block\">Initiates a synchronous HTTP request to this client's given server host,\n waiting for the HTTP response to be sent back, and returns the response.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/SimpleClient.html#makeRequest-java.lang.String-java.lang.String...-\">makeRequest</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;command,\n           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;params)</code>\n<div class=\"block\">Initiates a synchronous HTTP request to this client's given server host,\n waiting for the HTTP response to be sent back, and returns the response.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/SimpleClient.html#sessionEnd--\">sessionEnd</a></span>()</code>\n<div class=\"block\">Ends any current session between this client and the server host.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/SimpleClient.html#sessionIsInProgress--\">sessionIsInProgress</a></span>()</code>\n<div class=\"block\">Returns true if a session is currently in progress between this client\n and the server host.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/SimpleClient.html#sessionStart--\">sessionStart</a></span>()</code>\n<div class=\"block\">Begins a session between this client and the server host.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/SimpleClient.html#toString--\">toString</a></span>()</code>\n<div class=\"block\">Returns a string representation of this client.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"ERROR_KEY\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>ERROR_KEY</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> ERROR_KEY</pre>\n<div class=\"block\">A special error prefix that will appear at the start of error responses.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#stanford.cs106.net.SimpleClient.ERROR_KEY\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"SESSION_KEY_PARAM_NAME\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>SESSION_KEY_PARAM_NAME</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> SESSION_KEY_PARAM_NAME</pre>\n<div class=\"block\">A special request parameter used to indicate that the server should\n maintain a session with this client.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#stanford.cs106.net.SimpleClient.SESSION_KEY_PARAM_NAME\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"SimpleClient-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>SimpleClient</h4>\n<pre>public&nbsp;SimpleClient(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;host)</pre>\n<div class=\"block\">Initialiazes a new client to connect to the given HTTP server/host.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>host</code> - e.g. \"http://localhost:8080/\"</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"makeRequest-stanford.cs106.net.Request-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>makeRequest</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;makeRequest(<a href=\"../../../stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\">Request</a>&nbsp;request)</pre>\n<div class=\"block\">Initiates a synchronous HTTP request to this client's given server host,\n waiting for the HTTP response to be sent back, and returns the response.</div>\n</li>\n</ul>\n<a name=\"makeRequest-java.lang.String-java.lang.String...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>makeRequest</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;makeRequest(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;command,\n                          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;params)</pre>\n<div class=\"block\">Initiates a synchronous HTTP request to this client's given server host,\n waiting for the HTTP response to be sent back, and returns the response.</div>\n</li>\n</ul>\n<a name=\"sessionEnd--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>sessionEnd</h4>\n<pre>public&nbsp;void&nbsp;sessionEnd()</pre>\n<div class=\"block\">Ends any current session between this client and the server host.\n If no session is in progress, has no effect.</div>\n</li>\n</ul>\n<a name=\"sessionIsInProgress--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>sessionIsInProgress</h4>\n<pre>public&nbsp;boolean&nbsp;sessionIsInProgress()</pre>\n<div class=\"block\">Returns true if a session is currently in progress between this client\n and the server host.</div>\n</li>\n</ul>\n<a name=\"sessionStart--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>sessionStart</h4>\n<pre>public&nbsp;void&nbsp;sessionStart()</pre>\n<div class=\"block\">Begins a session between this client and the server host.\n If a session is already in progress, has no effect.</div>\n</li>\n</ul>\n<a name=\"toString--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>toString</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;toString()</pre>\n<div class=\"block\">Returns a string representation of this client.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/net/SimpleServer.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/net/SimpleClient.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"SimpleClient.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/net/SimpleServer.SimpleServerException.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:04 PDT 2017 -->\n<title>SimpleServer.SimpleServerException</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"SimpleServer.SimpleServerException\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/net/SimpleServer.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/net/SimpleServerListener.html\" title=\"interface in stanford.cs106.net\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/net/SimpleServer.SimpleServerException.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"SimpleServer.SimpleServerException.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#methods.inherited.from.class.java.lang.Throwable\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li>Method</li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.net</div>\n<h2 title=\"Class SimpleServer.SimpleServerException\" class=\"title\">Class SimpleServer.SimpleServerException</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Throwable</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Exception</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.RuntimeException</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../../stanford/cs106/io/IORuntimeException.html\" title=\"class in stanford.cs106.io\">stanford.cs106.io.IORuntimeException</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.net.SimpleServer.SimpleServerException</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a></dd>\n</dl>\n<dl>\n<dt>Enclosing class:</dt>\n<dd><a href=\"../../../stanford/cs106/net/SimpleServer.html\" title=\"class in stanford.cs106.net\">SimpleServer</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public static class <span class=\"typeNameLabel\">SimpleServer.SimpleServerException</span>\nextends <a href=\"../../../stanford/cs106/io/IORuntimeException.html\" title=\"class in stanford.cs106.io\">IORuntimeException</a></pre>\n<div class=\"block\">An exception type that represents server-related runtime errors.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../serialized-form.html#stanford.cs106.net.SimpleServer.SimpleServerException\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/SimpleServer.SimpleServerException.html#SimpleServerException-java.lang.String-\">SimpleServerException</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message)</code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/SimpleServer.SimpleServerException.html#SimpleServerException-java.lang.Throwable-\">SimpleServerException</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;cause)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Throwable\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#addSuppressed-java.lang.Throwable-\" title=\"class or interface in java.lang\">addSuppressed</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#fillInStackTrace--\" title=\"class or interface in java.lang\">fillInStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getCause--\" title=\"class or interface in java.lang\">getCause</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getLocalizedMessage--\" title=\"class or interface in java.lang\">getLocalizedMessage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getMessage--\" title=\"class or interface in java.lang\">getMessage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getStackTrace--\" title=\"class or interface in java.lang\">getStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getSuppressed--\" title=\"class or interface in java.lang\">getSuppressed</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#initCause-java.lang.Throwable-\" title=\"class or interface in java.lang\">initCause</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#printStackTrace--\" title=\"class or interface in java.lang\">printStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#printStackTrace-java.io.PrintStream-\" title=\"class or interface in java.lang\">printStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#printStackTrace-java.io.PrintWriter-\" title=\"class or interface in java.lang\">printStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#setStackTrace-java.lang.StackTraceElement:A-\" title=\"class or interface in java.lang\">setStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"SimpleServerException-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SimpleServerException</h4>\n<pre>public&nbsp;SimpleServerException(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message)</pre>\n</li>\n</ul>\n<a name=\"SimpleServerException-java.lang.Throwable-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>SimpleServerException</h4>\n<pre>public&nbsp;SimpleServerException(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;cause)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/net/SimpleServer.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/net/SimpleServerListener.html\" title=\"interface in stanford.cs106.net\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/net/SimpleServer.SimpleServerException.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"SimpleServer.SimpleServerException.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#methods.inherited.from.class.java.lang.Throwable\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li>Method</li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/net/SimpleServer.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:04 PDT 2017 -->\n<title>SimpleServer</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"SimpleServer\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":9,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/net/SimpleClient.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/net/SimpleServer.SimpleServerException.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/net/SimpleServer.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"SimpleServer.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.class.summary\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.net</div>\n<h2 title=\"Class SimpleServer\" class=\"title\">Class SimpleServer</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.net.SimpleServer</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">SimpleServer</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n<div class=\"block\">This class implements a simple synchronous HTTP server that can listen on a\n given port and respond to requests made by clients.</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Nested Class Summary table, listing nested classes, and an explanation\">\n<caption><span>Nested Classes</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Class and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static class&nbsp;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/SimpleServer.SimpleServerException.html\" title=\"class in stanford.cs106.net\">SimpleServer.SimpleServerException</a></span></code>\n<div class=\"block\">An exception type that represents server-related runtime errors.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/SimpleServer.html#DEFAULT_PORT\">DEFAULT_PORT</a></span></code>\n<div class=\"block\">Default port to listen for requests.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/SimpleServer.html#SimpleServer-int-\">SimpleServer</a></span>(int&nbsp;port)</code>\n<div class=\"block\">Constructs a new server that will listen on the given port.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/SimpleServer.html#SimpleServer-stanford.cs106.net.SimpleServerListener-\">SimpleServer</a></span>(<a href=\"../../../stanford/cs106/net/SimpleServerListener.html\" title=\"interface in stanford.cs106.net\">SimpleServerListener</a>&nbsp;webApp)</code>\n<div class=\"block\">Constructs a new server that will listen on a default port, with the given\n listener to be notified as each request comes in.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/SimpleServer.html#SimpleServer-stanford.cs106.net.SimpleServerListener-int-\">SimpleServer</a></span>(<a href=\"../../../stanford/cs106/net/SimpleServerListener.html\" title=\"interface in stanford.cs106.net\">SimpleServerListener</a>&nbsp;webApp,\n            int&nbsp;port)</code>\n<div class=\"block\">Constructs a new server that will listen on the given port, with the given\n listener to be notified as each request comes in.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/SimpleServer.html#getPort--\">getPort</a></span>()</code>\n<div class=\"block\">Returns the port on which this server will listen.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/SimpleServer.html#isRunning--\">isRunning</a></span>()</code>\n<div class=\"block\">Returns whether the server is currently active and listening for HTTP requests,\n which will be true after start() is called.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/SimpleServer.html#portIsAvailable--\">portIsAvailable</a></span>()</code>\n<div class=\"block\">Returns true if this server's port is available for listening.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/SimpleServer.html#portIsAvailable-int-\">portIsAvailable</a></span>(int&nbsp;port)</code>\n<div class=\"block\">Returns true if the given port is available for listening.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true\" title=\"class or interface in java.util\">HashMap</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/SimpleServer.html#sessionData-stanford.cs106.net.Request-\">sessionData</a></span>(<a href=\"../../../stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\">Request</a>&nbsp;request)</code>\n<div class=\"block\">Returns all data associated with the given request's session.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/SimpleServer.html#sessionEnd-stanford.cs106.net.Request-\">sessionEnd</a></span>(<a href=\"../../../stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\">Request</a>&nbsp;request)</code>\n<div class=\"block\">Ends any active session for the given request, clearing its session data.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/SimpleServer.html#sessionIsInProgress-stanford.cs106.net.Request-\">sessionIsInProgress</a></span>(<a href=\"../../../stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\">Request</a>&nbsp;request)</code>\n<div class=\"block\">Returns whether the given request contains an active session.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/SimpleServer.html#sessionStart-stanford.cs106.net.Request-\">sessionStart</a></span>(<a href=\"../../../stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\">Request</a>&nbsp;request)</code>\n<div class=\"block\">Begins an active session for the given request, with empty session data.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/SimpleServer.html#start--\">start</a></span>()</code>\n<div class=\"block\">Starts a server on the given port.</div>\n</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/SimpleServer.html#stop--\">stop</a></span>()</code>\n<div class=\"block\">Stops the server so that it will no longer listen to HTTP requests.</div>\n</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/SimpleServer.html#toString--\">toString</a></span>()</code>\n<div class=\"block\">Returns a string representation of this server.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"DEFAULT_PORT\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>DEFAULT_PORT</h4>\n<pre>public static final&nbsp;int DEFAULT_PORT</pre>\n<div class=\"block\">Default port to listen for requests.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#stanford.cs106.net.SimpleServer.DEFAULT_PORT\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"SimpleServer-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SimpleServer</h4>\n<pre>public&nbsp;SimpleServer(int&nbsp;port)</pre>\n<div class=\"block\">Constructs a new server that will listen on the given port.\n The server does not start listening until start() is called.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>port</code> - the port to listen on, up to 65535</dd>\n</dl>\n</li>\n</ul>\n<a name=\"SimpleServer-stanford.cs106.net.SimpleServerListener-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SimpleServer</h4>\n<pre>public&nbsp;SimpleServer(<a href=\"../../../stanford/cs106/net/SimpleServerListener.html\" title=\"interface in stanford.cs106.net\">SimpleServerListener</a>&nbsp;webApp)</pre>\n<div class=\"block\">Constructs a new server that will listen on a default port, with the given\n listener to be notified as each request comes in.\n The server does not start listening until start() is called.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>webApp</code> - listener to notify on each request</dd>\n</dl>\n</li>\n</ul>\n<a name=\"SimpleServer-stanford.cs106.net.SimpleServerListener-int-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>SimpleServer</h4>\n<pre>public&nbsp;SimpleServer(<a href=\"../../../stanford/cs106/net/SimpleServerListener.html\" title=\"interface in stanford.cs106.net\">SimpleServerListener</a>&nbsp;webApp,\n                    int&nbsp;port)</pre>\n<div class=\"block\">Constructs a new server that will listen on the given port, with the given\n listener to be notified as each request comes in.\n The server does not start listening until start() is called.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>webApp</code> - listener to notify on each request</dd>\n<dd><code>port</code> - the port to listen on, up to 65535</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"getPort--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getPort</h4>\n<pre>public&nbsp;int&nbsp;getPort()</pre>\n<div class=\"block\">Returns the port on which this server will listen.</div>\n</li>\n</ul>\n<a name=\"isRunning--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isRunning</h4>\n<pre>public&nbsp;boolean&nbsp;isRunning()</pre>\n<div class=\"block\">Returns whether the server is currently active and listening for HTTP requests,\n which will be true after start() is called.</div>\n</li>\n</ul>\n<a name=\"portIsAvailable--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>portIsAvailable</h4>\n<pre>public&nbsp;boolean&nbsp;portIsAvailable()</pre>\n<div class=\"block\">Returns true if this server's port is available for listening.</div>\n</li>\n</ul>\n<a name=\"portIsAvailable-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>portIsAvailable</h4>\n<pre>public static&nbsp;boolean&nbsp;portIsAvailable(int&nbsp;port)</pre>\n<div class=\"block\">Returns true if the given port is available for listening.</div>\n</li>\n</ul>\n<a name=\"sessionIsInProgress-stanford.cs106.net.Request-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>sessionIsInProgress</h4>\n<pre>public&nbsp;boolean&nbsp;sessionIsInProgress(<a href=\"../../../stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\">Request</a>&nbsp;request)</pre>\n<div class=\"block\">Returns whether the given request contains an active session.</div>\n</li>\n</ul>\n<a name=\"sessionData-stanford.cs106.net.Request-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>sessionData</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true\" title=\"class or interface in java.util\">HashMap</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;sessionData(<a href=\"../../../stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\">Request</a>&nbsp;request)</pre>\n<div class=\"block\">Returns all data associated with the given request's session.\n If the given request has no active session, returns null.</div>\n</li>\n</ul>\n<a name=\"sessionEnd-stanford.cs106.net.Request-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>sessionEnd</h4>\n<pre>public&nbsp;void&nbsp;sessionEnd(<a href=\"../../../stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\">Request</a>&nbsp;request)</pre>\n<div class=\"block\">Ends any active session for the given request, clearing its session data.\n If there was no session for the given request, has no effect.</div>\n</li>\n</ul>\n<a name=\"sessionStart-stanford.cs106.net.Request-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>sessionStart</h4>\n<pre>public&nbsp;void&nbsp;sessionStart(<a href=\"../../../stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\">Request</a>&nbsp;request)</pre>\n<div class=\"block\">Begins an active session for the given request, with empty session data.\n The session will use a unique key provided in the request by the client;\n if no such key is present, throws a SimpleServerException.\n If there was already a session for the given request, has no effect.</div>\n</li>\n</ul>\n<a name=\"start--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>start</h4>\n<pre>public&nbsp;void&nbsp;start()</pre>\n<div class=\"block\">Starts a server on the given port. It is hard coded to handle\n img requests and resource requests specially by just reading the files and\n returning them. All other requests should be handled by the user's code.\n If the server is already running, this will have no effect.</div>\n</li>\n</ul>\n<a name=\"stop--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>stop</h4>\n<pre>public&nbsp;void&nbsp;stop()</pre>\n<div class=\"block\">Stops the server so that it will no longer listen to HTTP requests.</div>\n</li>\n</ul>\n<a name=\"toString--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>toString</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;toString()</pre>\n<div class=\"block\">Returns a string representation of this server.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/net/SimpleClient.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/net/SimpleServer.SimpleServerException.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/net/SimpleServer.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"SimpleServer.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.class.summary\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/net/SimpleServerListener.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:04 PDT 2017 -->\n<title>SimpleServerListener</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"SimpleServerListener\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":6};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],4:[\"t3\",\"Abstract Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/net/SimpleServer.SimpleServerException.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li>Next&nbsp;Class</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/net/SimpleServerListener.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"SimpleServerListener.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.net</div>\n<h2 title=\"Interface SimpleServerListener\" class=\"title\">Interface SimpleServerListener</h2>\n</div>\n<div class=\"contentContainer\">\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public interface <span class=\"typeNameLabel\">SimpleServerListener</span></pre>\n<div class=\"block\">A listener that can respond to requests made to a server.</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t3\" class=\"tableTab\"><span><a href=\"javascript:show(4);\">Abstract Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/net/SimpleServerListener.html#requestMade-stanford.cs106.net.Request-\">requestMade</a></span>(<a href=\"../../../stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\">Request</a>&nbsp;request)</code>\n<div class=\"block\">Responds to the given request, returning the response to send back.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"requestMade-stanford.cs106.net.Request-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>requestMade</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;requestMade(<a href=\"../../../stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\">Request</a>&nbsp;request)</pre>\n<div class=\"block\">Responds to the given request, returning the response to send back.</div>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/net/SimpleServer.SimpleServerException.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li>Next&nbsp;Class</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/net/SimpleServerListener.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"SimpleServerListener.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/net/package-frame.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>stanford.cs106.net</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<h1 class=\"bar\"><a href=\"../../../stanford/cs106/net/package-summary.html\" target=\"classFrame\">stanford.cs106.net</a></h1>\n<div class=\"indexContainer\">\n<h2 title=\"Interfaces\">Interfaces</h2>\n<ul title=\"Interfaces\">\n<li><a href=\"SimpleServerListener.html\" title=\"interface in stanford.cs106.net\" target=\"classFrame\"><span class=\"interfaceName\">SimpleServerListener</span></a></li>\n</ul>\n<h2 title=\"Classes\">Classes</h2>\n<ul title=\"Classes\">\n<li><a href=\"BackEndServer.html\" title=\"class in stanford.cs106.net\" target=\"classFrame\">BackEndServer</a></li>\n<li><a href=\"Downloader.html\" title=\"class in stanford.cs106.net\" target=\"classFrame\">Downloader</a></li>\n<li><a href=\"NetworkManager.html\" title=\"class in stanford.cs106.net\" target=\"classFrame\">NetworkManager</a></li>\n<li><a href=\"Request.html\" title=\"class in stanford.cs106.net\" target=\"classFrame\">Request</a></li>\n<li><a href=\"SimpleClient.html\" title=\"class in stanford.cs106.net\" target=\"classFrame\">SimpleClient</a></li>\n<li><a href=\"SimpleServer.html\" title=\"class in stanford.cs106.net\" target=\"classFrame\">SimpleServer</a></li>\n</ul>\n<h2 title=\"Exceptions\">Exceptions</h2>\n<ul title=\"Exceptions\">\n<li><a href=\"SimpleServer.SimpleServerException.html\" title=\"class in stanford.cs106.net\" target=\"classFrame\">SimpleServer.SimpleServerException</a></li>\n</ul>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/net/package-summary.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>stanford.cs106.net</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"stanford.cs106.net\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li class=\"navBarCell1Rev\">Package</li>\n<li>Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/junit/package-summary.html\">Prev&nbsp;Package</a></li>\n<li><a href=\"../../../stanford/cs106/reflect/package-summary.html\">Next&nbsp;Package</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/net/package-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 title=\"Package\" class=\"title\">Package&nbsp;stanford.cs106.net</h1>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Interface Summary table, listing interfaces, and an explanation\">\n<caption><span>Interface Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Interface</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/net/SimpleServerListener.html\" title=\"interface in stanford.cs106.net\">SimpleServerListener</a></td>\n<td class=\"colLast\">\n<div class=\"block\">A listener that can respond to requests made to a server.</div>\n</td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Class Summary table, listing classes, and an explanation\">\n<caption><span>Class Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Class</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/net/BackEndServer.html\" title=\"class in stanford.cs106.net\">BackEndServer</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/net/Downloader.html\" title=\"class in stanford.cs106.net\">Downloader</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/net/NetworkManager.html\" title=\"class in stanford.cs106.net\">NetworkManager</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\">Request</a></td>\n<td class=\"colLast\">\n<div class=\"block\">A Request object encapsulates a basic HTTP request along with its\n various query parameter key/value pairs.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/net/SimpleClient.html\" title=\"class in stanford.cs106.net\">SimpleClient</a></td>\n<td class=\"colLast\">\n<div class=\"block\">This class implements a basic synchronous HTTP client.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/net/SimpleServer.html\" title=\"class in stanford.cs106.net\">SimpleServer</a></td>\n<td class=\"colLast\">\n<div class=\"block\">This class implements a simple synchronous HTTP server that can listen on a\n given port and respond to requests made by clients.</div>\n</td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Exception Summary table, listing exceptions, and an explanation\">\n<caption><span>Exception Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Exception</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/net/SimpleServer.SimpleServerException.html\" title=\"class in stanford.cs106.net\">SimpleServer.SimpleServerException</a></td>\n<td class=\"colLast\">\n<div class=\"block\">An exception type that represents server-related runtime errors.</div>\n</td>\n</tr>\n</tbody>\n</table>\n</li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li class=\"navBarCell1Rev\">Package</li>\n<li>Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/junit/package-summary.html\">Prev&nbsp;Package</a></li>\n<li><a href=\"../../../stanford/cs106/reflect/package-summary.html\">Next&nbsp;Package</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/net/package-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/net/package-tree.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>stanford.cs106.net Class Hierarchy</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"stanford.cs106.net Class Hierarchy\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/junit/package-tree.html\">Prev</a></li>\n<li><a href=\"../../../stanford/cs106/reflect/package-tree.html\">Next</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/net/package-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 class=\"title\">Hierarchy For Package stanford.cs106.net</h1>\n<span class=\"packageHierarchyLabel\">Package Hierarchies:</span>\n<ul class=\"horizontal\">\n<li><a href=\"../../../overview-tree.html\">All Packages</a></li>\n</ul>\n</div>\n<div class=\"contentContainer\">\n<h2 title=\"Class Hierarchy\">Class Hierarchy</h2>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Object</span></a>\n<ul>\n<li type=\"circle\">stanford.cs106.net.<a href=\"../../../stanford/cs106/net/BackEndServer.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">BackEndServer</span></a></li>\n<li type=\"circle\">stanford.cs106.net.<a href=\"../../../stanford/cs106/net/Downloader.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">Downloader</span></a></li>\n<li type=\"circle\">stanford.cs106.net.<a href=\"../../../stanford/cs106/net/NetworkManager.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">NetworkManager</span></a></li>\n<li type=\"circle\">stanford.cs106.net.<a href=\"../../../stanford/cs106/net/Request.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">Request</span></a></li>\n<li type=\"circle\">stanford.cs106.net.<a href=\"../../../stanford/cs106/net/SimpleClient.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">SimpleClient</span></a></li>\n<li type=\"circle\">stanford.cs106.net.<a href=\"../../../stanford/cs106/net/SimpleServer.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">SimpleServer</span></a></li>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Throwable</span></a> (implements java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Exception</span></a>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">RuntimeException</span></a>\n<ul>\n<li type=\"circle\">stanford.cs106.io.<a href=\"../../../stanford/cs106/io/IORuntimeException.html\" title=\"class in stanford.cs106.io\"><span class=\"typeNameLink\">IORuntimeException</span></a>\n<ul>\n<li type=\"circle\">stanford.cs106.net.<a href=\"../../../stanford/cs106/net/SimpleServer.SimpleServerException.html\" title=\"class in stanford.cs106.net\"><span class=\"typeNameLink\">SimpleServer.SimpleServerException</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<h2 title=\"Interface Hierarchy\">Interface Hierarchy</h2>\n<ul>\n<li type=\"circle\">stanford.cs106.net.<a href=\"../../../stanford/cs106/net/SimpleServerListener.html\" title=\"interface in stanford.cs106.net\"><span class=\"typeNameLink\">SimpleServerListener</span></a></li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/junit/package-tree.html\">Prev</a></li>\n<li><a href=\"../../../stanford/cs106/reflect/package-tree.html\">Next</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/net/package-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/program/CommandLineProgramMarty.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:30 PDT 2017 -->\n<title>CommandLineProgramMarty</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"CommandLineProgramMarty\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Class</li>\n<li><a href=\"../../../stanford/cs106/program/ConsoleProgramMarty.html\" title=\"class in stanford.cs106.program\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/program/CommandLineProgramMarty.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"CommandLineProgramMarty.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.program</div>\n<h2 title=\"Class CommandLineProgramMarty\" class=\"title\">Class CommandLineProgramMarty</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../../acm/program/CommandLineProgram.html\" title=\"class in acm.program\">acm.program.CommandLineProgram</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.program.CommandLineProgramMarty</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd>acm.io.IOModel, <a href=\"../../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">CommandLineProgramMarty</span>\nextends <a href=\"../../../acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true\" title=\"class or interface in java.lang\">Boolean</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/program/CommandLineProgramMarty.html#isApplet\">isApplet</a></span></code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.program.ProgramInterface\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;acm.program.<a href=\"../../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></h3>\n<code><a href=\"../../../acm/program/ProgramInterface.html#CENTER\">CENTER</a>, <a href=\"../../../acm/program/ProgramInterface.html#EAST\">EAST</a>, <a href=\"../../../acm/program/ProgramInterface.html#NORTH\">NORTH</a>, <a href=\"../../../acm/program/ProgramInterface.html#SOUTH\">SOUTH</a>, <a href=\"../../../acm/program/ProgramInterface.html#WEST\">WEST</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/program/CommandLineProgramMarty.html#CommandLineProgramMarty--\">CommandLineProgramMarty</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/program/CommandLineProgramMarty.html#fileExists-java.lang.String-\">fileExists</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/program/CommandLineProgramMarty.html#fileExistsInsideJAR-java.lang.String-\">fileExistsInsideJAR</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/program/CommandLineProgramMarty.html#fileExistsOnDisk-java.lang.String-\">fileExistsOnDisk</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/program/CommandLineProgramMarty.html#isApplet--\">isApplet</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/program/CommandLineProgramMarty.html#openFile-java.lang.String-\">openFile</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/program/CommandLineProgramMarty.html#openFileFromDisk-java.lang.String-\">openFileFromDisk</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/program/CommandLineProgramMarty.html#openFileFromJAR-java.lang.String-\">openFileFromJAR</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/program/CommandLineProgramMarty.html#readEntireFile-java.lang.String-\">readEntireFile</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/program/CommandLineProgramMarty.html#readEntireStream-java.io.InputStream-\">readEntireStream</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;stream)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.program.CommandLineProgram\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.program.<a href=\"../../../acm/program/CommandLineProgram.html\" title=\"class in acm.program\">CommandLineProgram</a></h3>\n<code><a href=\"../../../acm/program/CommandLineProgram.html#actionPerformed-java.awt.event.ActionEvent-\">actionPerformed</a>, <a href=\"../../../acm/program/CommandLineProgram.html#add-java.awt.Component-java.lang.String-java.lang.Object-\">add</a>, <a href=\"../../../acm/program/CommandLineProgram.html#addActionListeners--\">addActionListeners</a>, <a href=\"../../../acm/program/CommandLineProgram.html#addActionListeners-java.awt.event.ActionListener-\">addActionListeners</a>, <a href=\"../../../acm/program/CommandLineProgram.html#addExitHook-java.lang.Object-\">addExitHook</a>, <a href=\"../../../acm/program/CommandLineProgram.html#addImpl-java.awt.Component-java.lang.Object-int-\">addImpl</a>, <a href=\"../../../acm/program/CommandLineProgram.html#checkIfHeadless-java.lang.String-\">checkIfHeadless</a>, <a href=\"../../../acm/program/CommandLineProgram.html#createConsole--\">createConsole</a>, <a href=\"../../../acm/program/CommandLineProgram.html#createDialogIO--\">createDialogIO</a>, <a href=\"../../../acm/program/CommandLineProgram.html#createParameterTable-java.lang.String:A-\">createParameterTable</a>, <a href=\"../../../acm/program/CommandLineProgram.html#destroy--\">destroy</a>, <a href=\"../../../acm/program/CommandLineProgram.html#endHook--\">endHook</a>, <a href=\"../../../acm/program/CommandLineProgram.html#exit--\">exit</a>, <a href=\"../../../acm/program/CommandLineProgram.html#getAppletStub--\">getAppletStub</a>, <a href=\"../../../acm/program/CommandLineProgram.html#getArgumentArray--\">getArgumentArray</a>, <a href=\"../../../acm/program/CommandLineProgram.html#getBorder-java.lang.String-\">getBorder</a>, <a href=\"../../../acm/program/CommandLineProgram.html#getConsole--\">getConsole</a>, <a href=\"../../../acm/program/CommandLineProgram.html#getDialog--\">getDialog</a>, <a href=\"../../../acm/program/CommandLineProgram.html#getHeight--\">getHeight</a>, <a href=\"../../../acm/program/CommandLineProgram.html#getInputModel--\">getInputModel</a>, <a href=\"../../../acm/program/CommandLineProgram.html#getLayout--\">getLayout</a>, <a href=\"../../../acm/program/CommandLineProgram.html#getMacMenuBarFlag--\">getMacMenuBarFlag</a>, <a href=\"../../../acm/program/CommandLineProgram.html#getOutputModel--\">getOutputModel</a>, <a href=\"../../../acm/program/CommandLineProgram.html#getParameter-java.lang.String-\">getParameter</a>, <a href=\"../../../acm/program/CommandLineProgram.html#getParameterTable--\">getParameterTable</a>, <a href=\"../../../acm/program/CommandLineProgram.html#getPreferredSize--\">getPreferredSize</a>, <a href=\"../../../acm/program/CommandLineProgram.html#getReader--\">getReader</a>, <a href=\"../../../acm/program/CommandLineProgram.html#getRegionPanel-java.lang.String-\">getRegionPanel</a>, <a href=\"../../../acm/program/CommandLineProgram.html#getTitle--\">getTitle</a>, <a href=\"../../../acm/program/CommandLineProgram.html#getWidth--\">getWidth</a>, <a href=\"../../../acm/program/CommandLineProgram.html#getWriter--\">getWriter</a>, <a href=\"../../../acm/program/CommandLineProgram.html#init--\">init</a>, <a href=\"../../../acm/program/CommandLineProgram.html#isAppletMode--\">isAppletMode</a>, <a href=\"../../../acm/program/CommandLineProgram.html#isHeadless--\">isHeadless</a>, <a href=\"../../../acm/program/CommandLineProgram.html#isStarted--\">isStarted</a>, <a href=\"../../../acm/program/CommandLineProgram.html#keyPressed-java.awt.event.KeyEvent-\">keyPressed</a>, <a href=\"../../../acm/program/CommandLineProgram.html#keyReleased-java.awt.event.KeyEvent-\">keyReleased</a>, <a href=\"../../../acm/program/CommandLineProgram.html#keyTyped-java.awt.event.KeyEvent-\">keyTyped</a>, <a href=\"../../../acm/program/CommandLineProgram.html#main-java.lang.String:A-\">main</a>, <a href=\"../../../acm/program/CommandLineProgram.html#menuAction-java.lang.String-\">menuAction</a>, <a href=\"../../../acm/program/CommandLineProgram.html#mouseClicked-java.awt.event.MouseEvent-\">mouseClicked</a>, <a href=\"../../../acm/program/CommandLineProgram.html#mouseDragged-java.awt.event.MouseEvent-\">mouseDragged</a>, <a href=\"../../../acm/program/CommandLineProgram.html#mouseEntered-java.awt.event.MouseEvent-\">mouseEntered</a>, <a href=\"../../../acm/program/CommandLineProgram.html#mouseExited-java.awt.event.MouseEvent-\">mouseExited</a>, <a href=\"../../../acm/program/CommandLineProgram.html#mouseMoved-java.awt.event.MouseEvent-\">mouseMoved</a>, <a href=\"../../../acm/program/CommandLineProgram.html#mousePressed-java.awt.event.MouseEvent-\">mousePressed</a>, <a href=\"../../../acm/program/CommandLineProgram.html#mouseReleased-java.awt.event.MouseEvent-\">mouseReleased</a>, <a href=\"../../../acm/program/CommandLineProgram.html#pause-double-\">pause</a>, <a href=\"../../../acm/program/CommandLineProgram.html#print-boolean-\">print</a>, <a href=\"../../../acm/program/CommandLineProgram.html#print-char-\">print</a>, <a href=\"../../../acm/program/CommandLineProgram.html#print-double-\">print</a>, <a href=\"../../../acm/program/CommandLineProgram.html#print-float-\">print</a>, <a href=\"../../../acm/program/CommandLineProgram.html#print-int-\">print</a>, <a href=\"../../../acm/program/CommandLineProgram.html#print-long-\">print</a>, <a href=\"../../../acm/program/CommandLineProgram.html#print-java.lang.Object-\">print</a>, <a href=\"../../../acm/program/CommandLineProgram.html#print-java.lang.String-\">print</a>, <a href=\"../../../acm/program/CommandLineProgram.html#printf-java.lang.String-java.lang.Object...-\">printf</a>, <a href=\"../../../acm/program/CommandLineProgram.html#println--\">println</a>, <a href=\"../../../acm/program/CommandLineProgram.html#println-boolean-\">println</a>, <a href=\"../../../acm/program/CommandLineProgram.html#println-char-\">println</a>, <a href=\"../../../acm/program/CommandLineProgram.html#println-double-\">println</a>, <a href=\"../../../acm/program/CommandLineProgram.html#println-float-\">println</a>, <a href=\"../../../acm/program/CommandLineProgram.html#println-int-\">println</a>, <a href=\"../../../acm/program/CommandLineProgram.html#println-long-\">println</a>, <a href=\"../../../acm/program/CommandLineProgram.html#println-java.lang.Object-\">println</a>, <a href=\"../../../acm/program/CommandLineProgram.html#println-java.lang.String-\">println</a>, <a href=\"../../../acm/program/CommandLineProgram.html#readBoolean--\">readBoolean</a>, <a href=\"../../../acm/program/CommandLineProgram.html#readBoolean-java.lang.String-\">readBoolean</a>, <a href=\"../../../acm/program/CommandLineProgram.html#readBoolean-java.lang.String-java.lang.String-java.lang.String-\">readBoolean</a>, <a href=\"../../../acm/program/CommandLineProgram.html#readDouble--\">readDouble</a>, <a href=\"../../../acm/program/CommandLineProgram.html#readDouble-double-double-\">readDouble</a>, <a href=\"../../../acm/program/CommandLineProgram.html#readDouble-java.lang.String-\">readDouble</a>, <a href=\"../../../acm/program/CommandLineProgram.html#readDouble-java.lang.String-double-double-\">readDouble</a>, <a href=\"../../../acm/program/CommandLineProgram.html#readInt--\">readInt</a>, <a href=\"../../../acm/program/CommandLineProgram.html#readInt-int-int-\">readInt</a>, <a href=\"../../../acm/program/CommandLineProgram.html#readInt-java.lang.String-\">readInt</a>, <a href=\"../../../acm/program/CommandLineProgram.html#readInt-java.lang.String-int-int-\">readInt</a>, <a href=\"../../../acm/program/CommandLineProgram.html#readLine--\">readLine</a>, <a href=\"../../../acm/program/CommandLineProgram.html#readLine-java.lang.String-\">readLine</a>, <a href=\"../../../acm/program/CommandLineProgram.html#remove-java.awt.Component-\">remove</a>, <a href=\"../../../acm/program/CommandLineProgram.html#remove-int-\">remove</a>, <a href=\"../../../acm/program/CommandLineProgram.html#removeAll--\">removeAll</a>, <a href=\"../../../acm/program/CommandLineProgram.html#repaint--\">repaint</a>, <a href=\"../../../acm/program/CommandLineProgram.html#run--\">run</a>, <a href=\"../../../acm/program/CommandLineProgram.html#setAppletStub-java.applet.AppletStub-\">setAppletStub</a>, <a href=\"../../../acm/program/CommandLineProgram.html#setBackground-java.awt.Color-\">setBackground</a>, <a href=\"../../../acm/program/CommandLineProgram.html#setConsole-acm.io.IOConsole-\">setConsole</a>, <a href=\"../../../acm/program/CommandLineProgram.html#setLayout-java.awt.LayoutManager-\">setLayout</a>, <a href=\"../../../acm/program/CommandLineProgram.html#setMacMenuBarFlag-boolean-\">setMacMenuBarFlag</a>, <a href=\"../../../acm/program/CommandLineProgram.html#setParameterTable-java.util.HashMap-\">setParameterTable</a>, <a href=\"../../../acm/program/CommandLineProgram.html#setParameterTable-java.util.Map-\">setParameterTable</a>, <a href=\"../../../acm/program/CommandLineProgram.html#setStartupObject-java.lang.Object-\">setStartupObject</a>, <a href=\"../../../acm/program/CommandLineProgram.html#setTitle-java.lang.String-\">setTitle</a>, <a href=\"../../../acm/program/CommandLineProgram.html#showErrorMessage-java.lang.String-\">showErrorMessage</a>, <a href=\"../../../acm/program/CommandLineProgram.html#start--\">start</a>, <a href=\"../../../acm/program/CommandLineProgram.html#start-java.lang.String:A-\">start</a>, <a href=\"../../../acm/program/CommandLineProgram.html#startHook--\">startHook</a>, <a href=\"../../../acm/program/CommandLineProgram.html#validate--\">validate</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"isApplet\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>isApplet</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true\" title=\"class or interface in java.lang\">Boolean</a> isApplet</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"CommandLineProgramMarty--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>CommandLineProgramMarty</h4>\n<pre>public&nbsp;CommandLineProgramMarty()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"isApplet--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isApplet</h4>\n<pre>protected&nbsp;boolean&nbsp;isApplet()</pre>\n</li>\n</ul>\n<a name=\"fileExists-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fileExists</h4>\n<pre>protected&nbsp;boolean&nbsp;fileExists(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)\n                      throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"fileExistsInsideJAR-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fileExistsInsideJAR</h4>\n<pre>protected&nbsp;boolean&nbsp;fileExistsInsideJAR(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)\n                               throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"fileExistsOnDisk-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fileExistsOnDisk</h4>\n<pre>protected&nbsp;boolean&nbsp;fileExistsOnDisk(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)\n                            throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"openFile-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>openFile</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;openFile(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)\n                        throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"openFileFromDisk-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>openFileFromDisk</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;openFileFromDisk(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)\n                                throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"openFileFromJAR-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>openFileFromJAR</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;openFileFromJAR(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)\n                               throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"readEntireFile-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readEntireFile</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;readEntireFile(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)\n                         throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"readEntireStream-java.io.InputStream-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>readEntireStream</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;readEntireStream(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;stream)\n                           throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Class</li>\n<li><a href=\"../../../stanford/cs106/program/ConsoleProgramMarty.html\" title=\"class in stanford.cs106.program\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/program/CommandLineProgramMarty.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"CommandLineProgramMarty.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/program/ConsoleProgramMarty.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:31 PDT 2017 -->\n<title>ConsoleProgramMarty</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"ConsoleProgramMarty\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/program/CommandLineProgramMarty.html\" title=\"class in stanford.cs106.program\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/program/ProgramUtils.html\" title=\"class in stanford.cs106.program\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/program/ConsoleProgramMarty.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ConsoleProgramMarty.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JApplet\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.program</div>\n<h2 title=\"Class ConsoleProgramMarty\" class=\"title\">Class ConsoleProgramMarty</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Component</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Container</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Panel</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">java.applet.Applet</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JApplet</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../../acm/program/Program.html\" title=\"class in acm.program\">acm.program.Program</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../../acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">acm.program.AbstractConsoleProgram</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../../acm/program/ConsoleProgram.html\" title=\"class in acm.program\">acm.program.ConsoleProgram</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.program.ConsoleProgramMarty</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd>acm.io.IOModel, <a href=\"../../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/AdjustmentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">AdjustmentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ContainerListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ItemListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ItemListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseWheelListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/TextListener.html?is-external=true\" title=\"class or interface in java.awt.event\">TextListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowFocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowStateListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowStateListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListDataListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListDataListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListSelectionListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListSelectionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/MouseInputListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">MouseInputListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/PopupMenuListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">PopupMenuListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/RootPaneContainer.html?is-external=true\" title=\"class or interface in javax.swing\">RootPaneContainer</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">ConsoleProgramMarty</span>\nextends <a href=\"../../../acm/program/ConsoleProgram.html\" title=\"class in acm.program\">ConsoleProgram</a></pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../serialized-form.html#stanford.cs106.program.ConsoleProgramMarty\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JApplet\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.AccessibleJApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet.AccessibleJApplet</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.applet.Applet\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.applet.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">Applet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.AccessibleApplet.html?is-external=true\" title=\"class or interface in java.applet\">Applet.AccessibleApplet</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Panel\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\">Panel</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.AccessibleAWTPanel.html?is-external=true\" title=\"class or interface in java.awt\">Panel.AccessibleAWTPanel</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.AccessibleAWTContainer.html?is-external=true\" title=\"class or interface in java.awt\">Container.AccessibleAWTContainer</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.AccessibleAWTComponent.html?is-external=true\" title=\"class or interface in java.awt\">Component.AccessibleAWTComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BaselineResizeBehavior.html?is-external=true\" title=\"class or interface in java.awt\">Component.BaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BltBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.BltBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.FlipBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.FlipBufferStrategy</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true\" title=\"class or interface in java.lang\">Boolean</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/program/ConsoleProgramMarty.html#isApplet\">isApplet</a></span></code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.program.AbstractConsoleProgram\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;acm.program.<a href=\"../../../acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></h3>\n<code><a href=\"../../../acm/program/AbstractConsoleProgram.html#PROGRAM_COMPLETED_TITLE_SUFFIX\">PROGRAM_COMPLETED_TITLE_SUFFIX</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.program.Program\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;acm.program.<a href=\"../../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></h3>\n<code><a href=\"../../../acm/program/Program.html#CONFIG_FILE_NAME\">CONFIG_FILE_NAME</a>, <a href=\"../../../acm/program/Program.html#invisibleObjects\">invisibleObjects</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.JApplet\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#accessibleContext\" title=\"class or interface in javax.swing\">accessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#rootPane\" title=\"class or interface in javax.swing\">rootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#rootPaneCheckingEnabled\" title=\"class or interface in javax.swing\">rootPaneCheckingEnabled</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#BOTTOM_ALIGNMENT\" title=\"class or interface in java.awt\">BOTTOM_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#CENTER_ALIGNMENT\" title=\"class or interface in java.awt\">CENTER_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#LEFT_ALIGNMENT\" title=\"class or interface in java.awt\">LEFT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#RIGHT_ALIGNMENT\" title=\"class or interface in java.awt\">RIGHT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#TOP_ALIGNMENT\" title=\"class or interface in java.awt\">TOP_ALIGNMENT</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.program.ProgramInterface\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;acm.program.<a href=\"../../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></h3>\n<code><a href=\"../../../acm/program/ProgramInterface.html#CENTER\">CENTER</a>, <a href=\"../../../acm/program/ProgramInterface.html#EAST\">EAST</a>, <a href=\"../../../acm/program/ProgramInterface.html#NORTH\">NORTH</a>, <a href=\"../../../acm/program/ProgramInterface.html#SOUTH\">SOUTH</a>, <a href=\"../../../acm/program/ProgramInterface.html#WEST\">WEST</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.image.ImageObserver\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ABORT\" title=\"class or interface in java.awt.image\">ABORT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ALLBITS\" title=\"class or interface in java.awt.image\">ALLBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ERROR\" title=\"class or interface in java.awt.image\">ERROR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#FRAMEBITS\" title=\"class or interface in java.awt.image\">FRAMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#HEIGHT\" title=\"class or interface in java.awt.image\">HEIGHT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#PROPERTIES\" title=\"class or interface in java.awt.image\">PROPERTIES</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#SOMEBITS\" title=\"class or interface in java.awt.image\">SOMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#WIDTH\" title=\"class or interface in java.awt.image\">WIDTH</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/program/ConsoleProgramMarty.html#ConsoleProgramMarty--\">ConsoleProgramMarty</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/program/ConsoleProgramMarty.html#isApplet--\">isApplet</a></span>()</code>\n<div class=\"block\">Returns <code>true</code> if this program is running as an applet in a browser.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/program/ConsoleProgramMarty.html#readEntireFile-java.lang.String-\">readEntireFile</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/program/ConsoleProgramMarty.html#readEntireStream-java.io.InputStream-\">readEntireStream</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;stream)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.program.ConsoleProgram\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.program.<a href=\"../../../acm/program/ConsoleProgram.html\" title=\"class in acm.program\">ConsoleProgram</a></h3>\n<code><a href=\"../../../acm/program/ConsoleProgram.html#captureOutput--\">captureOutput</a>, <a href=\"../../../acm/program/ConsoleProgram.html#captureOutput-boolean-\">captureOutput</a>, <a href=\"../../../acm/program/ConsoleProgram.html#createConsole--\">createConsole</a>, <a href=\"../../../acm/program/ConsoleProgram.html#echoComments--\">echoComments</a>, <a href=\"../../../acm/program/ConsoleProgram.html#getCapturedOutput--\">getCapturedOutput</a>, <a href=\"../../../acm/program/ConsoleProgram.html#getComments--\">getComments</a>, <a href=\"../../../acm/program/ConsoleProgram.html#init--\">init</a>, <a href=\"../../../acm/program/ConsoleProgram.html#overrideInput-java.io.InputStream-\">overrideInput</a>, <a href=\"../../../acm/program/ConsoleProgram.html#overrideInput-java.io.Reader-\">overrideInput</a>, <a href=\"../../../acm/program/ConsoleProgram.html#overrideInput-java.lang.String-\">overrideInput</a>, <a href=\"../../../acm/program/ConsoleProgram.html#print-java.lang.String-\">print</a>, <a href=\"../../../acm/program/ConsoleProgram.html#print-java.lang.String-java.awt.Color-\">print</a>, <a href=\"../../../acm/program/ConsoleProgram.html#printf-java.lang.String-java.lang.Object...-\">printf</a>, <a href=\"../../../acm/program/ConsoleProgram.html#println--\">println</a>, <a href=\"../../../acm/program/ConsoleProgram.html#println-java.lang.String-\">println</a>, <a href=\"../../../acm/program/ConsoleProgram.html#println-java.lang.String-java.awt.Color-\">println</a>, <a href=\"../../../acm/program/ConsoleProgram.html#readBoolean-java.lang.String-java.lang.String-java.lang.String-\">readBoolean</a>, <a href=\"../../../acm/program/ConsoleProgram.html#readDouble-java.lang.String-double-double-\">readDouble</a>, <a href=\"../../../acm/program/ConsoleProgram.html#readInt-java.lang.String-int-int-\">readInt</a>, <a href=\"../../../acm/program/ConsoleProgram.html#readLine-java.lang.String-\">readLine</a>, <a href=\"../../../acm/program/ConsoleProgram.html#run--\">run</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.program.AbstractConsoleProgram\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.program.<a href=\"../../../acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></h3>\n<code><a href=\"../../../acm/program/AbstractConsoleProgram.html#checkCompilerFlags--\">checkCompilerFlags</a>, <a href=\"../../../acm/program/AbstractConsoleProgram.html#clearConsole--\">clearConsole</a>, <a href=\"../../../acm/program/AbstractConsoleProgram.html#compareOutput--\">compareOutput</a>, <a href=\"../../../acm/program/AbstractConsoleProgram.html#endHook--\">endHook</a>, <a href=\"../../../acm/program/AbstractConsoleProgram.html#fontEnlarge--\">fontEnlarge</a>, <a href=\"../../../acm/program/AbstractConsoleProgram.html#fontShrink--\">fontShrink</a>, <a href=\"../../../acm/program/AbstractConsoleProgram.html#fontToggleBold--\">fontToggleBold</a>, <a href=\"../../../acm/program/AbstractConsoleProgram.html#getAllOutput--\">getAllOutput</a>, <a href=\"../../../acm/program/AbstractConsoleProgram.html#getFont--\">getFont</a>, <a href=\"../../../acm/program/AbstractConsoleProgram.html#historyDown--\">historyDown</a>, <a href=\"../../../acm/program/AbstractConsoleProgram.html#historyUp--\">historyUp</a>, <a href=\"../../../acm/program/AbstractConsoleProgram.html#loadConfiguration-java.util.Properties-\">loadConfiguration</a>, <a href=\"../../../acm/program/AbstractConsoleProgram.html#loadInputScript--\">loadInputScript</a>, <a href=\"../../../acm/program/AbstractConsoleProgram.html#menuAction-java.awt.event.ActionEvent-\">menuAction</a>, <a href=\"../../../acm/program/AbstractConsoleProgram.html#mouseWheelMoved-java.awt.event.MouseWheelEvent-\">mouseWheelMoved</a>, <a href=\"../../../acm/program/AbstractConsoleProgram.html#promptUserForFile-java.lang.String-\">promptUserForFile</a>, <a href=\"../../../acm/program/AbstractConsoleProgram.html#promptUserForFile-java.lang.String-java.lang.String-\">promptUserForFile</a>, <a href=\"../../../acm/program/AbstractConsoleProgram.html#promptUserForFile-java.lang.String-java.lang.String-java.lang.String-\">promptUserForFile</a>, <a href=\"../../../acm/program/AbstractConsoleProgram.html#saveConfiguration-java.util.Properties-\">saveConfiguration</a>, <a href=\"../../../acm/program/AbstractConsoleProgram.html#scrollLineDown--\">scrollLineDown</a>, <a href=\"../../../acm/program/AbstractConsoleProgram.html#scrollLineUp--\">scrollLineUp</a>, <a href=\"../../../acm/program/AbstractConsoleProgram.html#scrollPageDown--\">scrollPageDown</a>, <a href=\"../../../acm/program/AbstractConsoleProgram.html#scrollPageUp--\">scrollPageUp</a>, <a href=\"../../../acm/program/AbstractConsoleProgram.html#scrollToBottom--\">scrollToBottom</a>, <a href=\"../../../acm/program/AbstractConsoleProgram.html#scrollToTop--\">scrollToTop</a>, <a href=\"../../../acm/program/AbstractConsoleProgram.html#setClearConsoleEnabled-boolean-\">setClearConsoleEnabled</a>, <a href=\"../../../acm/program/AbstractConsoleProgram.html#setColorFromChooser-boolean-\">setColorFromChooser</a>, <a href=\"../../../acm/program/AbstractConsoleProgram.html#setFont-java.awt.Font-\">setFont</a>, <a href=\"../../../acm/program/AbstractConsoleProgram.html#setFont-java.lang.String-\">setFont</a>, <a href=\"../../../acm/program/AbstractConsoleProgram.html#setFontFromChooser--\">setFontFromChooser</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.program.Program\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.program.<a href=\"../../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></h3>\n<code><a href=\"../../../acm/program/Program.html#actionPerformed-java.awt.event.ActionEvent-\">actionPerformed</a>, <a href=\"../../../acm/program/Program.html#add-java.awt.Component-java.lang.String-java.lang.Object-\">add</a>, <a href=\"../../../acm/program/Program.html#addActionListeners--\">addActionListeners</a>, <a href=\"../../../acm/program/Program.html#addActionListeners-java.awt.event.ActionListener-\">addActionListeners</a>, <a href=\"../../../acm/program/Program.html#addActionListenersToButtonsOnly--\">addActionListenersToButtonsOnly</a>, <a href=\"../../../acm/program/Program.html#addAllActionListeners--\">addAllActionListeners</a>, <a href=\"../../../acm/program/Program.html#addExitHook-java.lang.Object-\">addExitHook</a>, <a href=\"../../../acm/program/Program.html#addImpl-java.awt.Component-java.lang.Object-int-\">addImpl</a>, <a href=\"../../../acm/program/Program.html#adjustmentValueChanged-java.awt.event.AdjustmentEvent-\">adjustmentValueChanged</a>, <a href=\"../../../acm/program/Program.html#alert-java.lang.Object-\">alert</a>, <a href=\"../../../acm/program/Program.html#alert-java.lang.String-\">alert</a>, <a href=\"../../../acm/program/Program.html#animation--\">animation</a>, <a href=\"../../../acm/program/Program.html#center--\">center</a>, <a href=\"../../../acm/program/Program.html#changedUpdate-javax.swing.event.DocumentEvent-\">changedUpdate</a>, <a href=\"../../../acm/program/Program.html#checkKill--\">checkKill</a>, <a href=\"../../../acm/program/Program.html#checkStartupSettings--\">checkStartupSettings</a>, <a href=\"../../../acm/program/Program.html#componentAdded-java.awt.event.ContainerEvent-\">componentAdded</a>, <a href=\"../../../acm/program/Program.html#componentHidden-java.awt.event.ComponentEvent-\">componentHidden</a>, <a href=\"../../../acm/program/Program.html#componentMoved-java.awt.event.ComponentEvent-\">componentMoved</a>, <a href=\"../../../acm/program/Program.html#componentRemoved-java.awt.event.ContainerEvent-\">componentRemoved</a>, <a href=\"../../../acm/program/Program.html#componentResized-java.awt.event.ComponentEvent-\">componentResized</a>, <a href=\"../../../acm/program/Program.html#componentShown-java.awt.event.ComponentEvent-\">componentShown</a>, <a href=\"../../../acm/program/Program.html#confirm-java.lang.String-\">confirm</a>, <a href=\"../../../acm/program/Program.html#contentsChanged-javax.swing.event.ListDataEvent-\">contentsChanged</a>, <a href=\"../../../acm/program/Program.html#createDialogIO--\">createDialogIO</a>, <a href=\"../../../acm/program/Program.html#createMenuBar--\">createMenuBar</a>, <a href=\"../../../acm/program/Program.html#createParameterTable-java.lang.String:A-\">createParameterTable</a>, <a href=\"../../../acm/program/Program.html#createProgramFrame--\">createProgramFrame</a>, <a href=\"../../../acm/program/Program.html#destroy--\">destroy</a>, <a href=\"../../../acm/program/Program.html#error-java.lang.Exception-\">error</a>, <a href=\"../../../acm/program/Program.html#error-java.lang.Exception-java.lang.String-\">error</a>, <a href=\"../../../acm/program/Program.html#error-java.lang.String-\">error</a>, <a href=\"../../../acm/program/Program.html#exit--\">exit</a>, <a href=\"../../../acm/program/Program.html#fileExists-java.lang.String-\">fileExists</a>, <a href=\"../../../acm/program/Program.html#fileExists-java.lang.String-java.lang.String-\">fileExists</a>, <a href=\"../../../acm/program/Program.html#fileExistsInsideJAR-java.lang.String-\">fileExistsInsideJAR</a>, <a href=\"../../../acm/program/Program.html#fileExistsInsideJAR-java.lang.String-java.lang.String-\">fileExistsInsideJAR</a>, <a href=\"../../../acm/program/Program.html#fileExistsOnDisk-java.lang.String-\">fileExistsOnDisk</a>, <a href=\"../../../acm/program/Program.html#fileExistsOnDisk-java.lang.String-java.lang.String-\">fileExistsOnDisk</a>, <a href=\"../../../acm/program/Program.html#fileSize-java.lang.String-\">fileSize</a>, <a href=\"../../../acm/program/Program.html#fileSize-java.lang.String-java.lang.String-\">fileSize</a>, <a href=\"../../../acm/program/Program.html#focusGained-java.awt.event.FocusEvent-\">focusGained</a>, <a href=\"../../../acm/program/Program.html#focusLost-java.awt.event.FocusEvent-\">focusLost</a>, <a href=\"../../../acm/program/Program.html#getAnimationDelay--\">getAnimationDelay</a>, <a href=\"../../../acm/program/Program.html#getAppletStub--\">getAppletStub</a>, <a href=\"../../../acm/program/Program.html#getArgumentArray--\">getArgumentArray</a>, <a href=\"../../../acm/program/Program.html#getBoolean--\">getBoolean</a>, <a href=\"../../../acm/program/Program.html#getBoolean-java.lang.String-\">getBoolean</a>, <a href=\"../../../acm/program/Program.html#getBoolean-java.lang.String-java.lang.String-java.lang.String-\">getBoolean</a>, <a href=\"../../../acm/program/Program.html#getBorder-java.lang.String-\">getBorder</a>, <a href=\"../../../acm/program/Program.html#getBottomY--\">getBottomY</a>, <a href=\"../../../acm/program/Program.html#getCenterLocation--\">getCenterLocation</a>, <a href=\"../../../acm/program/Program.html#getCenterX--\">getCenterX</a>, <a href=\"../../../acm/program/Program.html#getCenterY--\">getCenterY</a>, <a href=\"../../../acm/program/Program.html#getCentralRegionSize--\">getCentralRegionSize</a>, <a href=\"../../../acm/program/Program.html#getConsole--\">getConsole</a>, <a href=\"../../../acm/program/Program.html#getDialog--\">getDialog</a>, <a href=\"../../../acm/program/Program.html#getDouble--\">getDouble</a>, <a href=\"../../../acm/program/Program.html#getDouble-double-double-\">getDouble</a>, <a href=\"../../../acm/program/Program.html#getDouble-java.lang.String-\">getDouble</a>, <a href=\"../../../acm/program/Program.html#getDouble-java.lang.String-double-double-\">getDouble</a>, <a href=\"../../../acm/program/Program.html#getHeight--\">getHeight</a>, <a href=\"../../../acm/program/Program.html#getInputModel--\">getInputModel</a>, <a href=\"../../../acm/program/Program.html#getInteger--\">getInteger</a>, <a href=\"../../../acm/program/Program.html#getInteger-int-int-\">getInteger</a>, <a href=\"../../../acm/program/Program.html#getInteger-java.lang.String-\">getInteger</a>, <a href=\"../../../acm/program/Program.html#getInteger-java.lang.String-int-int-\">getInteger</a>, <a href=\"../../../acm/program/Program.html#getJFrame--\">getJFrame</a>, <a href=\"../../../acm/program/Program.html#getLayout--\">getLayout</a>, <a href=\"../../../acm/program/Program.html#getLine--\">getLine</a>, <a href=\"../../../acm/program/Program.html#getLine-java.lang.String-\">getLine</a>, <a href=\"../../../acm/program/Program.html#getMainThread--\">getMainThread</a>, <a href=\"../../../acm/program/Program.html#getMenuBar--\">getMenuBar</a>, <a href=\"../../../acm/program/Program.html#getOutputColor--\">getOutputColor</a>, <a href=\"../../../acm/program/Program.html#getOutputModel--\">getOutputModel</a>, <a href=\"../../../acm/program/Program.html#getParameter-java.lang.String-\">getParameter</a>, <a href=\"../../../acm/program/Program.html#getParameterTable--\">getParameterTable</a>, <a href=\"../../../acm/program/Program.html#getPreferredSize--\">getPreferredSize</a>, <a href=\"../../../acm/program/Program.html#getReader--\">getReader</a>, <a href=\"../../../acm/program/Program.html#getReal--\">getReal</a>, <a href=\"../../../acm/program/Program.html#getReal-double-double-\">getReal</a>, <a href=\"../../../acm/program/Program.html#getReal-java.lang.String-\">getReal</a>, <a href=\"../../../acm/program/Program.html#getReal-java.lang.String-double-double-\">getReal</a>, <a href=\"../../../acm/program/Program.html#getRegionPanel-java.lang.String-\">getRegionPanel</a>, <a href=\"../../../acm/program/Program.html#getRightX--\">getRightX</a>, <a href=\"../../../acm/program/Program.html#getScreenHeight--\">getScreenHeight</a>, <a href=\"../../../acm/program/Program.html#getScreenSize--\">getScreenSize</a>, <a href=\"../../../acm/program/Program.html#getScreenWidth--\">getScreenWidth</a>, <a href=\"../../../acm/program/Program.html#getStartupObject--\">getStartupObject</a>, <a href=\"../../../acm/program/Program.html#getTitle--\">getTitle</a>, <a href=\"../../../acm/program/Program.html#getWidth--\">getWidth</a>, <a href=\"../../../acm/program/Program.html#getWindow--\">getWindow</a>, <a href=\"../../../acm/program/Program.html#getWriter--\">getWriter</a>, <a href=\"../../../acm/program/Program.html#getYesOrNo-java.lang.String-\">getYesOrNo</a>, <a href=\"../../../acm/program/Program.html#hasConfiguration--\">hasConfiguration</a>, <a href=\"../../../acm/program/Program.html#insertUpdate-javax.swing.event.DocumentEvent-\">insertUpdate</a>, <a href=\"../../../acm/program/Program.html#intervalAdded-javax.swing.event.ListDataEvent-\">intervalAdded</a>, <a href=\"../../../acm/program/Program.html#intervalRemoved-javax.swing.event.ListDataEvent-\">intervalRemoved</a>, <a href=\"../../../acm/program/Program.html#isAnimated--\">isAnimated</a>, <a href=\"../../../acm/program/Program.html#isAppletMode--\">isAppletMode</a>, <a href=\"../../../acm/program/Program.html#isExitOnClose--\">isExitOnClose</a>, <a href=\"../../../acm/program/Program.html#isInitialized--\">isInitialized</a>, <a href=\"../../../acm/program/Program.html#isStarted--\">isStarted</a>, <a href=\"../../../acm/program/Program.html#itemStateChanged-java.awt.event.ItemEvent-\">itemStateChanged</a>, <a href=\"../../../acm/program/Program.html#keyPressed-java.awt.event.KeyEvent-\">keyPressed</a>, <a href=\"../../../acm/program/Program.html#keyReleased-java.awt.event.KeyEvent-\">keyReleased</a>, <a href=\"../../../acm/program/Program.html#keyTyped-java.awt.event.KeyEvent-\">keyTyped</a>, <a href=\"../../../acm/program/Program.html#killMe--\">killMe</a>, <a href=\"../../../acm/program/Program.html#loadConfiguration--\">loadConfiguration</a>, <a href=\"../../../acm/program/Program.html#main-java.lang.String:A-\">main</a>, <a href=\"../../../acm/program/Program.html#menuCanceled-javax.swing.event.MenuEvent-\">menuCanceled</a>, <a href=\"../../../acm/program/Program.html#menuDeselected-javax.swing.event.MenuEvent-\">menuDeselected</a>, <a href=\"../../../acm/program/Program.html#menuSelected-javax.swing.event.MenuEvent-\">menuSelected</a>, <a href=\"../../../acm/program/Program.html#mouseClicked-java.awt.event.MouseEvent-\">mouseClicked</a>, <a href=\"../../../acm/program/Program.html#mouseDragged-java.awt.event.MouseEvent-\">mouseDragged</a>, <a href=\"../../../acm/program/Program.html#mouseEntered-java.awt.event.MouseEvent-\">mouseEntered</a>, <a href=\"../../../acm/program/Program.html#mouseExited-java.awt.event.MouseEvent-\">mouseExited</a>, <a href=\"../../../acm/program/Program.html#mouseMoved-java.awt.event.MouseEvent-\">mouseMoved</a>, <a href=\"../../../acm/program/Program.html#mousePressed-java.awt.event.MouseEvent-\">mousePressed</a>, <a href=\"../../../acm/program/Program.html#mouseReleased-java.awt.event.MouseEvent-\">mouseReleased</a>, <a href=\"../../../acm/program/Program.html#openFile-java.lang.String-\">openFile</a>, <a href=\"../../../acm/program/Program.html#openFile-java.lang.String-java.lang.String-\">openFile</a>, <a href=\"../../../acm/program/Program.html#openFileFromDisk-java.lang.String-\">openFileFromDisk</a>, <a href=\"../../../acm/program/Program.html#openFileFromDisk-java.lang.String-java.lang.String-\">openFileFromDisk</a>, <a href=\"../../../acm/program/Program.html#openFileFromJAR-java.lang.String-\">openFileFromJAR</a>, <a href=\"../../../acm/program/Program.html#openFileFromJAR-java.lang.String-java.lang.String-\">openFileFromJAR</a>, <a href=\"../../../acm/program/Program.html#pack--\">pack</a>, <a href=\"../../../acm/program/Program.html#pause-double-\">pause</a>, <a href=\"../../../acm/program/Program.html#pauseTick--\">pauseTick</a>, <a href=\"../../../acm/program/Program.html#popupMenuCanceled-javax.swing.event.PopupMenuEvent-\">popupMenuCanceled</a>, <a href=\"../../../acm/program/Program.html#popupMenuWillBecomeInvisible-javax.swing.event.PopupMenuEvent-\">popupMenuWillBecomeInvisible</a>, <a href=\"../../../acm/program/Program.html#popupMenuWillBecomeVisible-javax.swing.event.PopupMenuEvent-\">popupMenuWillBecomeVisible</a>, <a href=\"../../../acm/program/Program.html#print-boolean-\">print</a>, <a href=\"../../../acm/program/Program.html#print-boolean-java.awt.Color-\">print</a>, <a href=\"../../../acm/program/Program.html#print-char-\">print</a>, <a href=\"../../../acm/program/Program.html#print-char-java.awt.Color-\">print</a>, <a href=\"../../../acm/program/Program.html#print-double-\">print</a>, <a href=\"../../../acm/program/Program.html#print-double-java.awt.Color-\">print</a>, <a href=\"../../../acm/program/Program.html#print-float-\">print</a>, <a href=\"../../../acm/program/Program.html#print-float-java.awt.Color-\">print</a>, <a href=\"../../../acm/program/Program.html#print-int-\">print</a>, <a href=\"../../../acm/program/Program.html#print-int-java.awt.Color-\">print</a>, <a href=\"../../../acm/program/Program.html#print-long-\">print</a>, <a href=\"../../../acm/program/Program.html#print-long-java.awt.Color-\">print</a>, <a href=\"../../../acm/program/Program.html#print-java.lang.Object-\">print</a>, <a href=\"../../../acm/program/Program.html#print-java.lang.Object-java.awt.Color-\">print</a>, <a href=\"../../../acm/program/Program.html#println-boolean-\">println</a>, <a href=\"../../../acm/program/Program.html#println-boolean-java.awt.Color-\">println</a>, <a href=\"../../../acm/program/Program.html#println-char-\">println</a>, <a href=\"../../../acm/program/Program.html#println-char-java.awt.Color-\">println</a>, <a href=\"../../../acm/program/Program.html#println-double-\">println</a>, <a href=\"../../../acm/program/Program.html#println-double-java.awt.Color-\">println</a>, <a href=\"../../../acm/program/Program.html#println-float-\">println</a>, <a href=\"../../../acm/program/Program.html#println-float-java.awt.Color-\">println</a>, <a href=\"../../../acm/program/Program.html#println-int-\">println</a>, <a href=\"../../../acm/program/Program.html#println-int-java.awt.Color-\">println</a>, <a href=\"../../../acm/program/Program.html#println-long-\">println</a>, <a href=\"../../../acm/program/Program.html#println-long-java.awt.Color-\">println</a>, <a href=\"../../../acm/program/Program.html#println-java.lang.Object-\">println</a>, <a href=\"../../../acm/program/Program.html#println-java.lang.Object-java.awt.Color-\">println</a>, <a href=\"../../../acm/program/Program.html#prompt-java.lang.String-\">prompt</a>, <a href=\"../../../acm/program/Program.html#readBoolean--\">readBoolean</a>, <a href=\"../../../acm/program/Program.html#readBoolean-java.lang.String-\">readBoolean</a>, <a href=\"../../../acm/program/Program.html#readDouble--\">readDouble</a>, <a href=\"../../../acm/program/Program.html#readDouble-double-double-\">readDouble</a>, <a href=\"../../../acm/program/Program.html#readDouble-java.lang.String-\">readDouble</a>, <a href=\"../../../acm/program/Program.html#readInt--\">readInt</a>, <a href=\"../../../acm/program/Program.html#readInt-int-int-\">readInt</a>, <a href=\"../../../acm/program/Program.html#readInt-java.lang.String-\">readInt</a>, <a href=\"../../../acm/program/Program.html#readLine--\">readLine</a>, <a href=\"../../../acm/program/Program.html#remove-java.awt.Component-\">remove</a>, <a href=\"../../../acm/program/Program.html#remove-int-\">remove</a>, <a href=\"../../../acm/program/Program.html#removeAll--\">removeAll</a>, <a href=\"../../../acm/program/Program.html#removeFromRegion-java.awt.Component-java.lang.String-\">removeFromRegion</a>, <a href=\"../../../acm/program/Program.html#removeMenuBar--\">removeMenuBar</a>, <a href=\"../../../acm/program/Program.html#removeUpdate-javax.swing.event.DocumentEvent-\">removeUpdate</a>, <a href=\"../../../acm/program/Program.html#repaint--\">repaint</a>, <a href=\"../../../acm/program/Program.html#runHook--\">runHook</a>, <a href=\"../../../acm/program/Program.html#saveConfiguration--\">saveConfiguration</a>, <a href=\"../../../acm/program/Program.html#setAnimated-boolean-\">setAnimated</a>, <a href=\"../../../acm/program/Program.html#setAnimationDelay-int-\">setAnimationDelay</a>, <a href=\"../../../acm/program/Program.html#setAppletStub-java.applet.AppletStub-\">setAppletStub</a>, <a href=\"../../../acm/program/Program.html#setBackground-java.awt.Color-\">setBackground</a>, <a href=\"../../../acm/program/Program.html#setBottomY-double-\">setBottomY</a>, <a href=\"../../../acm/program/Program.html#setCenterLocation-double-double-\">setCenterLocation</a>, <a href=\"../../../acm/program/Program.html#setCenterX-double-\">setCenterX</a>, <a href=\"../../../acm/program/Program.html#setCenterY-double-\">setCenterY</a>, <a href=\"../../../acm/program/Program.html#setConsole-acm.io.IOConsole-\">setConsole</a>, <a href=\"../../../acm/program/Program.html#setDialog-acm.io.IODialog-\">setDialog</a>, <a href=\"../../../acm/program/Program.html#setExitOnClose-boolean-\">setExitOnClose</a>, <a href=\"../../../acm/program/Program.html#setFramesPerSecond-int-\">setFramesPerSecond</a>, <a href=\"../../../acm/program/Program.html#setHeight-double-\">setHeight</a>, <a href=\"../../../acm/program/Program.html#setInputModel-acm.io.IOModel-\">setInputModel</a>, <a href=\"../../../acm/program/Program.html#setInvisible-acm.graphics.GObject-boolean-\">setInvisible</a>, <a href=\"../../../acm/program/Program.html#setJFrame-javax.swing.JFrame-\">setJFrame</a>, <a href=\"../../../acm/program/Program.html#setJMenuBar-javax.swing.JMenuBar-\">setJMenuBar</a>, <a href=\"../../../acm/program/Program.html#setLayout-java.awt.LayoutManager-\">setLayout</a>, <a href=\"../../../acm/program/Program.html#setLocation-double-double-\">setLocation</a>, <a href=\"../../../acm/program/Program.html#setLocation-acm.graphics.GPoint-\">setLocation</a>, <a href=\"../../../acm/program/Program.html#setOutputColor-java.awt.Color-\">setOutputColor</a>, <a href=\"../../../acm/program/Program.html#setOutputModel-acm.io.IOModel-\">setOutputModel</a>, <a href=\"../../../acm/program/Program.html#setParameter-java.lang.String-java.lang.String-\">setParameter</a>, <a href=\"../../../acm/program/Program.html#setParameterTable-java.util.Map-\">setParameterTable</a>, <a href=\"../../../acm/program/Program.html#setPauseScaleFactor-double-\">setPauseScaleFactor</a>, <a href=\"../../../acm/program/Program.html#setResizable-boolean-\">setResizable</a>, <a href=\"../../../acm/program/Program.html#setRightX-double-\">setRightX</a>, <a href=\"../../../acm/program/Program.html#setShowPixelGrid-boolean-\">setShowPixelGrid</a>, <a href=\"../../../acm/program/Program.html#setShowPixelInfo-boolean-\">setShowPixelInfo</a>, <a href=\"../../../acm/program/Program.html#setSize-double-double-\">setSize</a>, <a href=\"../../../acm/program/Program.html#setStartupObject-java.lang.Object-\">setStartupObject</a>, <a href=\"../../../acm/program/Program.html#setTitle-java.lang.String-\">setTitle</a>, <a href=\"../../../acm/program/Program.html#setWidth-double-\">setWidth</a>, <a href=\"../../../acm/program/Program.html#setX-double-\">setX</a>, <a href=\"../../../acm/program/Program.html#setY-double-\">setY</a>, <a href=\"../../../acm/program/Program.html#showErrorMessage-java.lang.String-\">showErrorMessage</a>, <a href=\"../../../acm/program/Program.html#start--\">start</a>, <a href=\"../../../acm/program/Program.html#start-java.lang.String:A-\">start</a>, <a href=\"../../../acm/program/Program.html#startAnimation--\">startAnimation</a>, <a href=\"../../../acm/program/Program.html#startHook--\">startHook</a>, <a href=\"../../../acm/program/Program.html#startRun--\">startRun</a>, <a href=\"../../../acm/program/Program.html#stateChanged-javax.swing.event.ChangeEvent-\">stateChanged</a>, <a href=\"../../../acm/program/Program.html#stopAnimation--\">stopAnimation</a>, <a href=\"../../../acm/program/Program.html#textValueChanged-java.awt.event.TextEvent-\">textValueChanged</a>, <a href=\"../../../acm/program/Program.html#validate--\">validate</a>, <a href=\"../../../acm/program/Program.html#valueChanged-javax.swing.event.ListSelectionEvent-\">valueChanged</a>, <a href=\"../../../acm/program/Program.html#windowActivated-java.awt.event.WindowEvent-\">windowActivated</a>, <a href=\"../../../acm/program/Program.html#windowClosed-java.awt.event.WindowEvent-\">windowClosed</a>, <a href=\"../../../acm/program/Program.html#windowClosing-java.awt.event.WindowEvent-\">windowClosing</a>, <a href=\"../../../acm/program/Program.html#windowDeactivated-java.awt.event.WindowEvent-\">windowDeactivated</a>, <a href=\"../../../acm/program/Program.html#windowDeiconified-java.awt.event.WindowEvent-\">windowDeiconified</a>, <a href=\"../../../acm/program/Program.html#windowGainedFocus-java.awt.event.WindowEvent-\">windowGainedFocus</a>, <a href=\"../../../acm/program/Program.html#windowIconified-java.awt.event.WindowEvent-\">windowIconified</a>, <a href=\"../../../acm/program/Program.html#windowLostFocus-java.awt.event.WindowEvent-\">windowLostFocus</a>, <a href=\"../../../acm/program/Program.html#windowOpened-java.awt.event.WindowEvent-\">windowOpened</a>, <a href=\"../../../acm/program/Program.html#windowStateChanged-java.awt.event.WindowEvent-\">windowStateChanged</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JApplet\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#createRootPane--\" title=\"class or interface in javax.swing\">createRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getAccessibleContext--\" title=\"class or interface in javax.swing\">getAccessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getContentPane--\" title=\"class or interface in javax.swing\">getContentPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getGlassPane--\" title=\"class or interface in javax.swing\">getGlassPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getGraphics--\" title=\"class or interface in javax.swing\">getGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getJMenuBar--\" title=\"class or interface in javax.swing\">getJMenuBar</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getLayeredPane--\" title=\"class or interface in javax.swing\">getLayeredPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getRootPane--\" title=\"class or interface in javax.swing\">getRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getTransferHandler--\" title=\"class or interface in javax.swing\">getTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#isRootPaneCheckingEnabled--\" title=\"class or interface in javax.swing\">isRootPaneCheckingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#paramString--\" title=\"class or interface in javax.swing\">paramString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#repaint-long-int-int-int-int-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setContentPane-java.awt.Container-\" title=\"class or interface in javax.swing\">setContentPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setGlassPane-java.awt.Component-\" title=\"class or interface in javax.swing\">setGlassPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setLayeredPane-javax.swing.JLayeredPane-\" title=\"class or interface in javax.swing\">setLayeredPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setRootPane-javax.swing.JRootPane-\" title=\"class or interface in javax.swing\">setRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setRootPaneCheckingEnabled-boolean-\" title=\"class or interface in javax.swing\">setRootPaneCheckingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setTransferHandler-javax.swing.TransferHandler-\" title=\"class or interface in javax.swing\">setTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#update-java.awt.Graphics-\" title=\"class or interface in javax.swing\">update</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.applet.Applet\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.applet.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">Applet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAppletContext--\" title=\"class or interface in java.applet\">getAppletContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAppletInfo--\" title=\"class or interface in java.applet\">getAppletInfo</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAudioClip-java.net.URL-\" title=\"class or interface in java.applet\">getAudioClip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAudioClip-java.net.URL-java.lang.String-\" title=\"class or interface in java.applet\">getAudioClip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getCodeBase--\" title=\"class or interface in java.applet\">getCodeBase</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getDocumentBase--\" title=\"class or interface in java.applet\">getDocumentBase</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getImage-java.net.URL-\" title=\"class or interface in java.applet\">getImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getImage-java.net.URL-java.lang.String-\" title=\"class or interface in java.applet\">getImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getLocale--\" title=\"class or interface in java.applet\">getLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getParameterInfo--\" title=\"class or interface in java.applet\">getParameterInfo</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#isActive--\" title=\"class or interface in java.applet\">isActive</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#isValidateRoot--\" title=\"class or interface in java.applet\">isValidateRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#newAudioClip-java.net.URL-\" title=\"class or interface in java.applet\">newAudioClip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#play-java.net.URL-\" title=\"class or interface in java.applet\">play</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#play-java.net.URL-java.lang.String-\" title=\"class or interface in java.applet\">play</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#resize-java.awt.Dimension-\" title=\"class or interface in java.applet\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#resize-int-int-\" title=\"class or interface in java.applet\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#setStub-java.applet.AppletStub-\" title=\"class or interface in java.applet\">setStub</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#showStatus-java.lang.String-\" title=\"class or interface in java.applet\">showStatus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#stop--\" title=\"class or interface in java.applet\">stop</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Panel\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\">Panel</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true#addNotify--\" title=\"class or interface in java.awt\">addNotify</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.lang.String-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">addContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#applyComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">applyComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#areFocusTraversalKeysSet-int-\" title=\"class or interface in java.awt\">areFocusTraversalKeysSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#countComponents--\" title=\"class or interface in java.awt\">countComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#deliverEvent-java.awt.Event-\" title=\"class or interface in java.awt\">deliverEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#doLayout--\" title=\"class or interface in java.awt\">doLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-int-int-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getAlignmentX--\" title=\"class or interface in java.awt\">getAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getAlignmentY--\" title=\"class or interface in java.awt\">getAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponent-int-\" title=\"class or interface in java.awt\">getComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-int-int-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentCount--\" title=\"class or interface in java.awt\">getComponentCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponents--\" title=\"class or interface in java.awt\">getComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentZOrder-java.awt.Component-\" title=\"class or interface in java.awt\">getComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getContainerListeners--\" title=\"class or interface in java.awt\">getContainerListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalKeys-int-\" title=\"class or interface in java.awt\">getFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalPolicy--\" title=\"class or interface in java.awt\">getFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getInsets--\" title=\"class or interface in java.awt\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getListeners-java.lang.Class-\" title=\"class or interface in java.awt\">getListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMaximumSize--\" title=\"class or interface in java.awt\">getMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMinimumSize--\" title=\"class or interface in java.awt\">getMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMousePosition-boolean-\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#insets--\" title=\"class or interface in java.awt\">insets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#invalidate--\" title=\"class or interface in java.awt\">invalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isAncestorOf-java.awt.Component-\" title=\"class or interface in java.awt\">isAncestorOf</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot--\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot-java.awt.Container-\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicyProvider--\" title=\"class or interface in java.awt\">isFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicySet--\" title=\"class or interface in java.awt\">isFocusTraversalPolicySet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#layout--\" title=\"class or interface in java.awt\">layout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintStream-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintWriter-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#locate-int-int-\" title=\"class or interface in java.awt\">locate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#minimumSize--\" title=\"class or interface in java.awt\">minimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paint-java.awt.Graphics-\" title=\"class or interface in java.awt\">paint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paintComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#preferredSize--\" title=\"class or interface in java.awt\">preferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#print-java.awt.Graphics-\" title=\"class or interface in java.awt\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#printComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">printComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processContainerEvent-java.awt.event.ContainerEvent-\" title=\"class or interface in java.awt\">processContainerEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">processEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">removeContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeNotify--\" title=\"class or interface in java.awt\">removeNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setComponentZOrder-java.awt.Component-int-\" title=\"class or interface in java.awt\">setComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusCycleRoot-boolean-\" title=\"class or interface in java.awt\">setFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalKeys-int-java.util.Set-\" title=\"class or interface in java.awt\">setFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicy-java.awt.FocusTraversalPolicy-\" title=\"class or interface in java.awt\">setFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicyProvider-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#transferFocusDownCycle--\" title=\"class or interface in java.awt\">transferFocusDownCycle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validateTree--\" title=\"class or interface in java.awt\">validateTree</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#action-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">action</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#add-java.awt.PopupMenu-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">addComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">addFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">addHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">addHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">addInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">addKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">addMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">addMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">addMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#bounds--\" title=\"class or interface in java.awt\">bounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#coalesceEvents-java.awt.AWTEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">coalesceEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-int-int-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-java.awt.Point-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-java.awt.image.ImageProducer-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-int-int-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-java.awt.ImageCapabilities-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disable--\" title=\"class or interface in java.awt\">disable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disableEvents-long-\" title=\"class or interface in java.awt\">disableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#dispatchEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">dispatchEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable--\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable-boolean-\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableEvents-long-\" title=\"class or interface in java.awt\">enableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableInputMethods-boolean-\" title=\"class or interface in java.awt\">enableInputMethods</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-boolean-boolean-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-byte-byte-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-char-char-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-double-double-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-float-float-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-int-int-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-long-long-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-short-short-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBackground--\" title=\"class or interface in java.awt\">getBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBaseline-int-int-\" title=\"class or interface in java.awt\">getBaseline</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBaselineResizeBehavior--\" title=\"class or interface in java.awt\">getBaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds--\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getColorModel--\" title=\"class or interface in java.awt\">getColorModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentListeners--\" title=\"class or interface in java.awt\">getComponentListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentOrientation--\" title=\"class or interface in java.awt\">getComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getCursor--\" title=\"class or interface in java.awt\">getCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getDropTarget--\" title=\"class or interface in java.awt\">getDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusCycleRootAncestor--\" title=\"class or interface in java.awt\">getFocusCycleRootAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusListeners--\" title=\"class or interface in java.awt\">getFocusListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusTraversalKeysEnabled--\" title=\"class or interface in java.awt\">getFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFontMetrics-java.awt.Font-\" title=\"class or interface in java.awt\">getFontMetrics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getForeground--\" title=\"class or interface in java.awt\">getForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getGraphicsConfiguration--\" title=\"class or interface in java.awt\">getGraphicsConfiguration</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyBoundsListeners--\" title=\"class or interface in java.awt\">getHierarchyBoundsListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyListeners--\" title=\"class or interface in java.awt\">getHierarchyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getIgnoreRepaint--\" title=\"class or interface in java.awt\">getIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputContext--\" title=\"class or interface in java.awt\">getInputContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodListeners--\" title=\"class or interface in java.awt\">getInputMethodListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodRequests--\" title=\"class or interface in java.awt\">getInputMethodRequests</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getKeyListeners--\" title=\"class or interface in java.awt\">getKeyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation--\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation-java.awt.Point-\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocationOnScreen--\" title=\"class or interface in java.awt\">getLocationOnScreen</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseListeners--\" title=\"class or interface in java.awt\">getMouseListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseMotionListeners--\" title=\"class or interface in java.awt\">getMouseMotionListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMousePosition--\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseWheelListeners--\" title=\"class or interface in java.awt\">getMouseWheelListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getName--\" title=\"class or interface in java.awt\">getName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getParent--\" title=\"class or interface in java.awt\">getParent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPeer--\" title=\"class or interface in java.awt\">getPeer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners--\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners-java.lang.String-\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize--\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getToolkit--\" title=\"class or interface in java.awt\">getToolkit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getTreeLock--\" title=\"class or interface in java.awt\">getTreeLock</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getX--\" title=\"class or interface in java.awt\">getX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getY--\" title=\"class or interface in java.awt\">getY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#gotFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">gotFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#handleEvent-java.awt.Event-\" title=\"class or interface in java.awt\">handleEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hasFocus--\" title=\"class or interface in java.awt\">hasFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hide--\" title=\"class or interface in java.awt\">hide</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#imageUpdate-java.awt.Image-int-int-int-int-int-\" title=\"class or interface in java.awt\">imageUpdate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#inside-int-int-\" title=\"class or interface in java.awt\">inside</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isBackgroundSet--\" title=\"class or interface in java.awt\">isBackgroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isCursorSet--\" title=\"class or interface in java.awt\">isCursorSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDisplayable--\" title=\"class or interface in java.awt\">isDisplayable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDoubleBuffered--\" title=\"class or interface in java.awt\">isDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isEnabled--\" title=\"class or interface in java.awt\">isEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusable--\" title=\"class or interface in java.awt\">isFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusOwner--\" title=\"class or interface in java.awt\">isFocusOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusTraversable--\" title=\"class or interface in java.awt\">isFocusTraversable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFontSet--\" title=\"class or interface in java.awt\">isFontSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isForegroundSet--\" title=\"class or interface in java.awt\">isForegroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isLightweight--\" title=\"class or interface in java.awt\">isLightweight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMaximumSizeSet--\" title=\"class or interface in java.awt\">isMaximumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMinimumSizeSet--\" title=\"class or interface in java.awt\">isMinimumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isOpaque--\" title=\"class or interface in java.awt\">isOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isPreferredSizeSet--\" title=\"class or interface in java.awt\">isPreferredSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isShowing--\" title=\"class or interface in java.awt\">isShowing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isValid--\" title=\"class or interface in java.awt\">isValid</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isVisible--\" title=\"class or interface in java.awt\">isVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyDown-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyUp-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list--\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintStream-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintWriter-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#location--\" title=\"class or interface in java.awt\">location</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#lostFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">lostFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDown-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDrag-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDrag</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseEnter-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseEnter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseExit-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseExit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseMove-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseMove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseUp-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#move-int-int-\" title=\"class or interface in java.awt\">move</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#nextFocus--\" title=\"class or interface in java.awt\">nextFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#paintAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#postEvent-java.awt.Event-\" title=\"class or interface in java.awt\">postEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#printAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">printAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processComponentEvent-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt\">processComponentEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processFocusEvent-java.awt.event.FocusEvent-\" title=\"class or interface in java.awt\">processFocusEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyBoundsEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyBoundsEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processInputMethodEvent-java.awt.event.InputMethodEvent-\" title=\"class or interface in java.awt\">processInputMethodEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in java.awt\">processKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseEvent-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt\">processMouseEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseMotionEvent-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt\">processMouseMotionEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseWheelEvent-java.awt.event.MouseWheelEvent-\" title=\"class or interface in java.awt\">processMouseWheelEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#remove-java.awt.MenuComponent-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">removeComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">removeFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">removeHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">removeHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">removeInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">removeKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">removeMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">removeMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">removeMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-int-int-int-int-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-long-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocus--\" title=\"class or interface in java.awt\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocus-boolean-\" title=\"class or interface in java.awt\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocusInWindow--\" title=\"class or interface in java.awt\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocusInWindow-boolean-\" title=\"class or interface in java.awt\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#reshape-int-int-int-int-\" title=\"class or interface in java.awt\">reshape</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#revalidate--\" title=\"class or interface in java.awt\">revalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-int-int-int-int-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">setComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setCursor-java.awt.Cursor-\" title=\"class or interface in java.awt\">setCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setDropTarget-java.awt.dnd.DropTarget-\" title=\"class or interface in java.awt\">setDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setEnabled-boolean-\" title=\"class or interface in java.awt\">setEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusable-boolean-\" title=\"class or interface in java.awt\">setFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusTraversalKeysEnabled-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setForeground-java.awt.Color-\" title=\"class or interface in java.awt\">setForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setIgnoreRepaint-boolean-\" title=\"class or interface in java.awt\">setIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocale-java.util.Locale-\" title=\"class or interface in java.awt\">setLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-int-int-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-java.awt.Point-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setMaximumSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setMinimumSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setName-java.lang.String-\" title=\"class or interface in java.awt\">setName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setPreferredSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-int-int-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setVisible-boolean-\" title=\"class or interface in java.awt\">setVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show--\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show-boolean-\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#size--\" title=\"class or interface in java.awt\">size</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#toString--\" title=\"class or interface in java.awt\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocus--\" title=\"class or interface in java.awt\">transferFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusBackward--\" title=\"class or interface in java.awt\">transferFocusBackward</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusUpCycle--\" title=\"class or interface in java.awt\">transferFocusUpCycle</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"isApplet\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>isApplet</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true\" title=\"class or interface in java.lang\">Boolean</a> isApplet</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"ConsoleProgramMarty--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>ConsoleProgramMarty</h4>\n<pre>public&nbsp;ConsoleProgramMarty()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"isApplet--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isApplet</h4>\n<pre>protected&nbsp;boolean&nbsp;isApplet()</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../../acm/program/Program.html#isApplet--\">Program</a></code></span></div>\n<div class=\"block\">Returns <code>true</code> if this program is running as an applet in a browser.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../../acm/program/Program.html#isApplet--\">isApplet</a></code>&nbsp;in class&nbsp;<code><a href=\"../../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"readEntireFile-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readEntireFile</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;readEntireFile(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)\n                         throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"readEntireStream-java.io.InputStream-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>readEntireStream</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;readEntireStream(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;stream)\n                           throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/program/CommandLineProgramMarty.html\" title=\"class in stanford.cs106.program\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/program/ProgramUtils.html\" title=\"class in stanford.cs106.program\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/program/ConsoleProgramMarty.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ConsoleProgramMarty.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JApplet\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/program/ProgramUtils.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:31 PDT 2017 -->\n<title>ProgramUtils</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"ProgramUtils\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/program/ConsoleProgramMarty.html\" title=\"class in stanford.cs106.program\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/program/ResizableProgram.html\" title=\"class in stanford.cs106.program\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/program/ProgramUtils.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ProgramUtils.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.program</div>\n<h2 title=\"Class ProgramUtils\" class=\"title\">Class ProgramUtils</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.program.ProgramUtils</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">ProgramUtils</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/program/ProgramUtils.html#getConsoleOutput-acm.program.ConsoleProgram-\">getConsoleOutput</a></span>(<a href=\"../../../acm/program/ConsoleProgram.html\" title=\"class in acm.program\">ConsoleProgram</a>&nbsp;program)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/program/ProgramUtils.html#injectConsoleInput-acm.program.ConsoleProgram-java.lang.String-\">injectConsoleInput</a></span>(<a href=\"../../../acm/program/ConsoleProgram.html\" title=\"class in acm.program\">ConsoleProgram</a>&nbsp;program,\n                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;input)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"injectConsoleInput-acm.program.ConsoleProgram-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>injectConsoleInput</h4>\n<pre>public static&nbsp;void&nbsp;injectConsoleInput(<a href=\"../../../acm/program/ConsoleProgram.html\" title=\"class in acm.program\">ConsoleProgram</a>&nbsp;program,\n                                      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;input)</pre>\n</li>\n</ul>\n<a name=\"getConsoleOutput-acm.program.ConsoleProgram-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>getConsoleOutput</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getConsoleOutput(<a href=\"../../../acm/program/ConsoleProgram.html\" title=\"class in acm.program\">ConsoleProgram</a>&nbsp;program)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/program/ConsoleProgramMarty.html\" title=\"class in stanford.cs106.program\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/program/ResizableProgram.html\" title=\"class in stanford.cs106.program\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/program/ProgramUtils.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ProgramUtils.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/program/ResizableProgram.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:31 PDT 2017 -->\n<title>ResizableProgram</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"ResizableProgram\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/program/ProgramUtils.html\" title=\"class in stanford.cs106.program\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li>Next&nbsp;Class</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/program/ResizableProgram.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ResizableProgram.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JApplet\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.acm.program.Program\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.program</div>\n<h2 title=\"Class ResizableProgram\" class=\"title\">Class ResizableProgram</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Component</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Container</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Panel</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">java.applet.Applet</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JApplet</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../../acm/program/Program.html\" title=\"class in acm.program\">acm.program.Program</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.program.ResizableProgram</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd>acm.io.IOModel, <a href=\"../../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/AdjustmentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">AdjustmentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ContainerListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ItemListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ItemListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseWheelListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/TextListener.html?is-external=true\" title=\"class or interface in java.awt.event\">TextListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowFocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowStateListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowStateListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListDataListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListDataListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListSelectionListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListSelectionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/MouseInputListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">MouseInputListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/PopupMenuListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">PopupMenuListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/RootPaneContainer.html?is-external=true\" title=\"class or interface in javax.swing\">RootPaneContainer</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">ResizableProgram</span>\nextends <a href=\"../../../acm/program/Program.html\" title=\"class in acm.program\">Program</a>\nimplements <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentListener</a></pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../serialized-form.html#stanford.cs106.program.ResizableProgram\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JApplet\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.AccessibleJApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet.AccessibleJApplet</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.applet.Applet\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.applet.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">Applet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.AccessibleApplet.html?is-external=true\" title=\"class or interface in java.applet\">Applet.AccessibleApplet</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Panel\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\">Panel</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.AccessibleAWTPanel.html?is-external=true\" title=\"class or interface in java.awt\">Panel.AccessibleAWTPanel</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.AccessibleAWTContainer.html?is-external=true\" title=\"class or interface in java.awt\">Container.AccessibleAWTContainer</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.AccessibleAWTComponent.html?is-external=true\" title=\"class or interface in java.awt\">Component.AccessibleAWTComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BaselineResizeBehavior.html?is-external=true\" title=\"class or interface in java.awt\">Component.BaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BltBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.BltBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.FlipBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.FlipBufferStrategy</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.program.Program\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;acm.program.<a href=\"../../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></h3>\n<code><a href=\"../../../acm/program/Program.html#CONFIG_FILE_NAME\">CONFIG_FILE_NAME</a>, <a href=\"../../../acm/program/Program.html#invisibleObjects\">invisibleObjects</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.JApplet\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#accessibleContext\" title=\"class or interface in javax.swing\">accessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#rootPane\" title=\"class or interface in javax.swing\">rootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#rootPaneCheckingEnabled\" title=\"class or interface in javax.swing\">rootPaneCheckingEnabled</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#BOTTOM_ALIGNMENT\" title=\"class or interface in java.awt\">BOTTOM_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#CENTER_ALIGNMENT\" title=\"class or interface in java.awt\">CENTER_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#LEFT_ALIGNMENT\" title=\"class or interface in java.awt\">LEFT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#RIGHT_ALIGNMENT\" title=\"class or interface in java.awt\">RIGHT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#TOP_ALIGNMENT\" title=\"class or interface in java.awt\">TOP_ALIGNMENT</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.program.ProgramInterface\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;acm.program.<a href=\"../../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></h3>\n<code><a href=\"../../../acm/program/ProgramInterface.html#CENTER\">CENTER</a>, <a href=\"../../../acm/program/ProgramInterface.html#EAST\">EAST</a>, <a href=\"../../../acm/program/ProgramInterface.html#NORTH\">NORTH</a>, <a href=\"../../../acm/program/ProgramInterface.html#SOUTH\">SOUTH</a>, <a href=\"../../../acm/program/ProgramInterface.html#WEST\">WEST</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.image.ImageObserver\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ABORT\" title=\"class or interface in java.awt.image\">ABORT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ALLBITS\" title=\"class or interface in java.awt.image\">ALLBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ERROR\" title=\"class or interface in java.awt.image\">ERROR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#FRAMEBITS\" title=\"class or interface in java.awt.image\">FRAMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#HEIGHT\" title=\"class or interface in java.awt.image\">HEIGHT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#PROPERTIES\" title=\"class or interface in java.awt.image\">PROPERTIES</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#SOMEBITS\" title=\"class or interface in java.awt.image\">SOMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#WIDTH\" title=\"class or interface in java.awt.image\">WIDTH</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/program/ResizableProgram.html#ResizableProgram--\">ResizableProgram</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/program/ResizableProgram.html#componentHidden-java.awt.event.ComponentEvent-\">componentHidden</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentEvent</a>&nbsp;e)</code>\n<div class=\"block\">Required method of ComponentListener interface.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/program/ResizableProgram.html#componentMoved-java.awt.event.ComponentEvent-\">componentMoved</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentEvent</a>&nbsp;e)</code>\n<div class=\"block\">Required method of ComponentListener interface.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/program/ResizableProgram.html#componentResized-java.awt.event.ComponentEvent-\">componentResized</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentEvent</a>&nbsp;e)</code>\n<div class=\"block\">Required method of ComponentListener interface.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/program/ResizableProgram.html#componentShown-java.awt.event.ComponentEvent-\">componentShown</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentEvent</a>&nbsp;e)</code>\n<div class=\"block\">Required method of ComponentListener interface.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.program.Program\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.program.<a href=\"../../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></h3>\n<code><a href=\"../../../acm/program/Program.html#actionPerformed-java.awt.event.ActionEvent-\">actionPerformed</a>, <a href=\"../../../acm/program/Program.html#add-java.awt.Component-java.lang.String-java.lang.Object-\">add</a>, <a href=\"../../../acm/program/Program.html#addActionListeners--\">addActionListeners</a>, <a href=\"../../../acm/program/Program.html#addActionListeners-java.awt.event.ActionListener-\">addActionListeners</a>, <a href=\"../../../acm/program/Program.html#addActionListenersToButtonsOnly--\">addActionListenersToButtonsOnly</a>, <a href=\"../../../acm/program/Program.html#addAllActionListeners--\">addAllActionListeners</a>, <a href=\"../../../acm/program/Program.html#addExitHook-java.lang.Object-\">addExitHook</a>, <a href=\"../../../acm/program/Program.html#addImpl-java.awt.Component-java.lang.Object-int-\">addImpl</a>, <a href=\"../../../acm/program/Program.html#adjustmentValueChanged-java.awt.event.AdjustmentEvent-\">adjustmentValueChanged</a>, <a href=\"../../../acm/program/Program.html#alert-java.lang.Object-\">alert</a>, <a href=\"../../../acm/program/Program.html#alert-java.lang.String-\">alert</a>, <a href=\"../../../acm/program/Program.html#animation--\">animation</a>, <a href=\"../../../acm/program/Program.html#center--\">center</a>, <a href=\"../../../acm/program/Program.html#changedUpdate-javax.swing.event.DocumentEvent-\">changedUpdate</a>, <a href=\"../../../acm/program/Program.html#checkCompilerFlags--\">checkCompilerFlags</a>, <a href=\"../../../acm/program/Program.html#checkKill--\">checkKill</a>, <a href=\"../../../acm/program/Program.html#checkStartupSettings--\">checkStartupSettings</a>, <a href=\"../../../acm/program/Program.html#componentAdded-java.awt.event.ContainerEvent-\">componentAdded</a>, <a href=\"../../../acm/program/Program.html#componentRemoved-java.awt.event.ContainerEvent-\">componentRemoved</a>, <a href=\"../../../acm/program/Program.html#confirm-java.lang.String-\">confirm</a>, <a href=\"../../../acm/program/Program.html#contentsChanged-javax.swing.event.ListDataEvent-\">contentsChanged</a>, <a href=\"../../../acm/program/Program.html#createConsole--\">createConsole</a>, <a href=\"../../../acm/program/Program.html#createDialogIO--\">createDialogIO</a>, <a href=\"../../../acm/program/Program.html#createMenuBar--\">createMenuBar</a>, <a href=\"../../../acm/program/Program.html#createParameterTable-java.lang.String:A-\">createParameterTable</a>, <a href=\"../../../acm/program/Program.html#createProgramFrame--\">createProgramFrame</a>, <a href=\"../../../acm/program/Program.html#destroy--\">destroy</a>, <a href=\"../../../acm/program/Program.html#endHook--\">endHook</a>, <a href=\"../../../acm/program/Program.html#error-java.lang.Exception-\">error</a>, <a href=\"../../../acm/program/Program.html#error-java.lang.Exception-java.lang.String-\">error</a>, <a href=\"../../../acm/program/Program.html#error-java.lang.String-\">error</a>, <a href=\"../../../acm/program/Program.html#exit--\">exit</a>, <a href=\"../../../acm/program/Program.html#fileExists-java.lang.String-\">fileExists</a>, <a href=\"../../../acm/program/Program.html#fileExists-java.lang.String-java.lang.String-\">fileExists</a>, <a href=\"../../../acm/program/Program.html#fileExistsInsideJAR-java.lang.String-\">fileExistsInsideJAR</a>, <a href=\"../../../acm/program/Program.html#fileExistsInsideJAR-java.lang.String-java.lang.String-\">fileExistsInsideJAR</a>, <a href=\"../../../acm/program/Program.html#fileExistsOnDisk-java.lang.String-\">fileExistsOnDisk</a>, <a href=\"../../../acm/program/Program.html#fileExistsOnDisk-java.lang.String-java.lang.String-\">fileExistsOnDisk</a>, <a href=\"../../../acm/program/Program.html#fileSize-java.lang.String-\">fileSize</a>, <a href=\"../../../acm/program/Program.html#fileSize-java.lang.String-java.lang.String-\">fileSize</a>, <a href=\"../../../acm/program/Program.html#focusGained-java.awt.event.FocusEvent-\">focusGained</a>, <a href=\"../../../acm/program/Program.html#focusLost-java.awt.event.FocusEvent-\">focusLost</a>, <a href=\"../../../acm/program/Program.html#getAnimationDelay--\">getAnimationDelay</a>, <a href=\"../../../acm/program/Program.html#getAppletStub--\">getAppletStub</a>, <a href=\"../../../acm/program/Program.html#getArgumentArray--\">getArgumentArray</a>, <a href=\"../../../acm/program/Program.html#getBoolean--\">getBoolean</a>, <a href=\"../../../acm/program/Program.html#getBoolean-java.lang.String-\">getBoolean</a>, <a href=\"../../../acm/program/Program.html#getBoolean-java.lang.String-java.lang.String-java.lang.String-\">getBoolean</a>, <a href=\"../../../acm/program/Program.html#getBorder-java.lang.String-\">getBorder</a>, <a href=\"../../../acm/program/Program.html#getBottomY--\">getBottomY</a>, <a href=\"../../../acm/program/Program.html#getCenterLocation--\">getCenterLocation</a>, <a href=\"../../../acm/program/Program.html#getCenterX--\">getCenterX</a>, <a href=\"../../../acm/program/Program.html#getCenterY--\">getCenterY</a>, <a href=\"../../../acm/program/Program.html#getCentralRegionSize--\">getCentralRegionSize</a>, <a href=\"../../../acm/program/Program.html#getConsole--\">getConsole</a>, <a href=\"../../../acm/program/Program.html#getDialog--\">getDialog</a>, <a href=\"../../../acm/program/Program.html#getDouble--\">getDouble</a>, <a href=\"../../../acm/program/Program.html#getDouble-double-double-\">getDouble</a>, <a href=\"../../../acm/program/Program.html#getDouble-java.lang.String-\">getDouble</a>, <a href=\"../../../acm/program/Program.html#getDouble-java.lang.String-double-double-\">getDouble</a>, <a href=\"../../../acm/program/Program.html#getHeight--\">getHeight</a>, <a href=\"../../../acm/program/Program.html#getInputModel--\">getInputModel</a>, <a href=\"../../../acm/program/Program.html#getInteger--\">getInteger</a>, <a href=\"../../../acm/program/Program.html#getInteger-int-int-\">getInteger</a>, <a href=\"../../../acm/program/Program.html#getInteger-java.lang.String-\">getInteger</a>, <a href=\"../../../acm/program/Program.html#getInteger-java.lang.String-int-int-\">getInteger</a>, <a href=\"../../../acm/program/Program.html#getJFrame--\">getJFrame</a>, <a href=\"../../../acm/program/Program.html#getLayout--\">getLayout</a>, <a href=\"../../../acm/program/Program.html#getLine--\">getLine</a>, <a href=\"../../../acm/program/Program.html#getLine-java.lang.String-\">getLine</a>, <a href=\"../../../acm/program/Program.html#getMainThread--\">getMainThread</a>, <a href=\"../../../acm/program/Program.html#getMenuBar--\">getMenuBar</a>, <a href=\"../../../acm/program/Program.html#getOutputColor--\">getOutputColor</a>, <a href=\"../../../acm/program/Program.html#getOutputModel--\">getOutputModel</a>, <a href=\"../../../acm/program/Program.html#getParameter-java.lang.String-\">getParameter</a>, <a href=\"../../../acm/program/Program.html#getParameterTable--\">getParameterTable</a>, <a href=\"../../../acm/program/Program.html#getPreferredSize--\">getPreferredSize</a>, <a href=\"../../../acm/program/Program.html#getReader--\">getReader</a>, <a href=\"../../../acm/program/Program.html#getReal--\">getReal</a>, <a href=\"../../../acm/program/Program.html#getReal-double-double-\">getReal</a>, <a href=\"../../../acm/program/Program.html#getReal-java.lang.String-\">getReal</a>, <a href=\"../../../acm/program/Program.html#getReal-java.lang.String-double-double-\">getReal</a>, <a href=\"../../../acm/program/Program.html#getRegionPanel-java.lang.String-\">getRegionPanel</a>, <a href=\"../../../acm/program/Program.html#getRightX--\">getRightX</a>, <a href=\"../../../acm/program/Program.html#getScreenHeight--\">getScreenHeight</a>, <a href=\"../../../acm/program/Program.html#getScreenSize--\">getScreenSize</a>, <a href=\"../../../acm/program/Program.html#getScreenWidth--\">getScreenWidth</a>, <a href=\"../../../acm/program/Program.html#getStartupObject--\">getStartupObject</a>, <a href=\"../../../acm/program/Program.html#getTitle--\">getTitle</a>, <a href=\"../../../acm/program/Program.html#getWidth--\">getWidth</a>, <a href=\"../../../acm/program/Program.html#getWindow--\">getWindow</a>, <a href=\"../../../acm/program/Program.html#getWriter--\">getWriter</a>, <a href=\"../../../acm/program/Program.html#getYesOrNo-java.lang.String-\">getYesOrNo</a>, <a href=\"../../../acm/program/Program.html#hasConfiguration--\">hasConfiguration</a>, <a href=\"../../../acm/program/Program.html#init--\">init</a>, <a href=\"../../../acm/program/Program.html#insertUpdate-javax.swing.event.DocumentEvent-\">insertUpdate</a>, <a href=\"../../../acm/program/Program.html#intervalAdded-javax.swing.event.ListDataEvent-\">intervalAdded</a>, <a href=\"../../../acm/program/Program.html#intervalRemoved-javax.swing.event.ListDataEvent-\">intervalRemoved</a>, <a href=\"../../../acm/program/Program.html#isAnimated--\">isAnimated</a>, <a href=\"../../../acm/program/Program.html#isApplet--\">isApplet</a>, <a href=\"../../../acm/program/Program.html#isAppletMode--\">isAppletMode</a>, <a href=\"../../../acm/program/Program.html#isExitOnClose--\">isExitOnClose</a>, <a href=\"../../../acm/program/Program.html#isInitialized--\">isInitialized</a>, <a href=\"../../../acm/program/Program.html#isStarted--\">isStarted</a>, <a href=\"../../../acm/program/Program.html#itemStateChanged-java.awt.event.ItemEvent-\">itemStateChanged</a>, <a href=\"../../../acm/program/Program.html#keyPressed-java.awt.event.KeyEvent-\">keyPressed</a>, <a href=\"../../../acm/program/Program.html#keyReleased-java.awt.event.KeyEvent-\">keyReleased</a>, <a href=\"../../../acm/program/Program.html#keyTyped-java.awt.event.KeyEvent-\">keyTyped</a>, <a href=\"../../../acm/program/Program.html#killMe--\">killMe</a>, <a href=\"../../../acm/program/Program.html#loadConfiguration--\">loadConfiguration</a>, <a href=\"../../../acm/program/Program.html#loadConfiguration-java.util.Properties-\">loadConfiguration</a>, <a href=\"../../../acm/program/Program.html#main-java.lang.String:A-\">main</a>, <a href=\"../../../acm/program/Program.html#menuAction-java.awt.event.ActionEvent-\">menuAction</a>, <a href=\"../../../acm/program/Program.html#menuCanceled-javax.swing.event.MenuEvent-\">menuCanceled</a>, <a href=\"../../../acm/program/Program.html#menuDeselected-javax.swing.event.MenuEvent-\">menuDeselected</a>, <a href=\"../../../acm/program/Program.html#menuSelected-javax.swing.event.MenuEvent-\">menuSelected</a>, <a href=\"../../../acm/program/Program.html#mouseClicked-java.awt.event.MouseEvent-\">mouseClicked</a>, <a href=\"../../../acm/program/Program.html#mouseDragged-java.awt.event.MouseEvent-\">mouseDragged</a>, <a href=\"../../../acm/program/Program.html#mouseEntered-java.awt.event.MouseEvent-\">mouseEntered</a>, <a href=\"../../../acm/program/Program.html#mouseExited-java.awt.event.MouseEvent-\">mouseExited</a>, <a href=\"../../../acm/program/Program.html#mouseMoved-java.awt.event.MouseEvent-\">mouseMoved</a>, <a href=\"../../../acm/program/Program.html#mousePressed-java.awt.event.MouseEvent-\">mousePressed</a>, <a href=\"../../../acm/program/Program.html#mouseReleased-java.awt.event.MouseEvent-\">mouseReleased</a>, <a href=\"../../../acm/program/Program.html#mouseWheelMoved-java.awt.event.MouseWheelEvent-\">mouseWheelMoved</a>, <a href=\"../../../acm/program/Program.html#openFile-java.lang.String-\">openFile</a>, <a href=\"../../../acm/program/Program.html#openFile-java.lang.String-java.lang.String-\">openFile</a>, <a href=\"../../../acm/program/Program.html#openFileFromDisk-java.lang.String-\">openFileFromDisk</a>, <a href=\"../../../acm/program/Program.html#openFileFromDisk-java.lang.String-java.lang.String-\">openFileFromDisk</a>, <a href=\"../../../acm/program/Program.html#openFileFromJAR-java.lang.String-\">openFileFromJAR</a>, <a href=\"../../../acm/program/Program.html#openFileFromJAR-java.lang.String-java.lang.String-\">openFileFromJAR</a>, <a href=\"../../../acm/program/Program.html#pack--\">pack</a>, <a href=\"../../../acm/program/Program.html#pause-double-\">pause</a>, <a href=\"../../../acm/program/Program.html#pauseTick--\">pauseTick</a>, <a href=\"../../../acm/program/Program.html#popupMenuCanceled-javax.swing.event.PopupMenuEvent-\">popupMenuCanceled</a>, <a href=\"../../../acm/program/Program.html#popupMenuWillBecomeInvisible-javax.swing.event.PopupMenuEvent-\">popupMenuWillBecomeInvisible</a>, <a href=\"../../../acm/program/Program.html#popupMenuWillBecomeVisible-javax.swing.event.PopupMenuEvent-\">popupMenuWillBecomeVisible</a>, <a href=\"../../../acm/program/Program.html#print-boolean-\">print</a>, <a href=\"../../../acm/program/Program.html#print-boolean-java.awt.Color-\">print</a>, <a href=\"../../../acm/program/Program.html#print-char-\">print</a>, <a href=\"../../../acm/program/Program.html#print-char-java.awt.Color-\">print</a>, <a href=\"../../../acm/program/Program.html#print-double-\">print</a>, <a href=\"../../../acm/program/Program.html#print-double-java.awt.Color-\">print</a>, <a href=\"../../../acm/program/Program.html#print-float-\">print</a>, <a href=\"../../../acm/program/Program.html#print-float-java.awt.Color-\">print</a>, <a href=\"../../../acm/program/Program.html#print-int-\">print</a>, <a href=\"../../../acm/program/Program.html#print-int-java.awt.Color-\">print</a>, <a href=\"../../../acm/program/Program.html#print-long-\">print</a>, <a href=\"../../../acm/program/Program.html#print-long-java.awt.Color-\">print</a>, <a href=\"../../../acm/program/Program.html#print-java.lang.Object-\">print</a>, <a href=\"../../../acm/program/Program.html#print-java.lang.Object-java.awt.Color-\">print</a>, <a href=\"../../../acm/program/Program.html#print-java.lang.String-\">print</a>, <a href=\"../../../acm/program/Program.html#print-java.lang.String-java.awt.Color-\">print</a>, <a href=\"../../../acm/program/Program.html#printf-java.lang.String-java.lang.Object...-\">printf</a>, <a href=\"../../../acm/program/Program.html#println--\">println</a>, <a href=\"../../../acm/program/Program.html#println-boolean-\">println</a>, <a href=\"../../../acm/program/Program.html#println-boolean-java.awt.Color-\">println</a>, <a href=\"../../../acm/program/Program.html#println-char-\">println</a>, <a href=\"../../../acm/program/Program.html#println-char-java.awt.Color-\">println</a>, <a href=\"../../../acm/program/Program.html#println-double-\">println</a>, <a href=\"../../../acm/program/Program.html#println-double-java.awt.Color-\">println</a>, <a href=\"../../../acm/program/Program.html#println-float-\">println</a>, <a href=\"../../../acm/program/Program.html#println-float-java.awt.Color-\">println</a>, <a href=\"../../../acm/program/Program.html#println-int-\">println</a>, <a href=\"../../../acm/program/Program.html#println-int-java.awt.Color-\">println</a>, <a href=\"../../../acm/program/Program.html#println-long-\">println</a>, <a href=\"../../../acm/program/Program.html#println-long-java.awt.Color-\">println</a>, <a href=\"../../../acm/program/Program.html#println-java.lang.Object-\">println</a>, <a href=\"../../../acm/program/Program.html#println-java.lang.Object-java.awt.Color-\">println</a>, <a href=\"../../../acm/program/Program.html#println-java.lang.String-\">println</a>, <a href=\"../../../acm/program/Program.html#println-java.lang.String-java.awt.Color-\">println</a>, <a href=\"../../../acm/program/Program.html#prompt-java.lang.String-\">prompt</a>, <a href=\"../../../acm/program/Program.html#readBoolean--\">readBoolean</a>, <a href=\"../../../acm/program/Program.html#readBoolean-java.lang.String-\">readBoolean</a>, <a href=\"../../../acm/program/Program.html#readBoolean-java.lang.String-java.lang.String-java.lang.String-\">readBoolean</a>, <a href=\"../../../acm/program/Program.html#readDouble--\">readDouble</a>, <a href=\"../../../acm/program/Program.html#readDouble-double-double-\">readDouble</a>, <a href=\"../../../acm/program/Program.html#readDouble-java.lang.String-\">readDouble</a>, <a href=\"../../../acm/program/Program.html#readDouble-java.lang.String-double-double-\">readDouble</a>, <a href=\"../../../acm/program/Program.html#readInt--\">readInt</a>, <a href=\"../../../acm/program/Program.html#readInt-int-int-\">readInt</a>, <a href=\"../../../acm/program/Program.html#readInt-java.lang.String-\">readInt</a>, <a href=\"../../../acm/program/Program.html#readInt-java.lang.String-int-int-\">readInt</a>, <a href=\"../../../acm/program/Program.html#readLine--\">readLine</a>, <a href=\"../../../acm/program/Program.html#readLine-java.lang.String-\">readLine</a>, <a href=\"../../../acm/program/Program.html#remove-java.awt.Component-\">remove</a>, <a href=\"../../../acm/program/Program.html#remove-int-\">remove</a>, <a href=\"../../../acm/program/Program.html#removeAll--\">removeAll</a>, <a href=\"../../../acm/program/Program.html#removeFromRegion-java.awt.Component-java.lang.String-\">removeFromRegion</a>, <a href=\"../../../acm/program/Program.html#removeMenuBar--\">removeMenuBar</a>, <a href=\"../../../acm/program/Program.html#removeUpdate-javax.swing.event.DocumentEvent-\">removeUpdate</a>, <a href=\"../../../acm/program/Program.html#repaint--\">repaint</a>, <a href=\"../../../acm/program/Program.html#run--\">run</a>, <a href=\"../../../acm/program/Program.html#runHook--\">runHook</a>, <a href=\"../../../acm/program/Program.html#saveConfiguration--\">saveConfiguration</a>, <a href=\"../../../acm/program/Program.html#saveConfiguration-java.util.Properties-\">saveConfiguration</a>, <a href=\"../../../acm/program/Program.html#setAnimated-boolean-\">setAnimated</a>, <a href=\"../../../acm/program/Program.html#setAnimationDelay-int-\">setAnimationDelay</a>, <a href=\"../../../acm/program/Program.html#setAppletStub-java.applet.AppletStub-\">setAppletStub</a>, <a href=\"../../../acm/program/Program.html#setBackground-java.awt.Color-\">setBackground</a>, <a href=\"../../../acm/program/Program.html#setBottomY-double-\">setBottomY</a>, <a href=\"../../../acm/program/Program.html#setCenterLocation-double-double-\">setCenterLocation</a>, <a href=\"../../../acm/program/Program.html#setCenterX-double-\">setCenterX</a>, <a href=\"../../../acm/program/Program.html#setCenterY-double-\">setCenterY</a>, <a href=\"../../../acm/program/Program.html#setConsole-acm.io.IOConsole-\">setConsole</a>, <a href=\"../../../acm/program/Program.html#setDialog-acm.io.IODialog-\">setDialog</a>, <a href=\"../../../acm/program/Program.html#setExitOnClose-boolean-\">setExitOnClose</a>, <a href=\"../../../acm/program/Program.html#setFramesPerSecond-int-\">setFramesPerSecond</a>, <a href=\"../../../acm/program/Program.html#setHeight-double-\">setHeight</a>, <a href=\"../../../acm/program/Program.html#setInputModel-acm.io.IOModel-\">setInputModel</a>, <a href=\"../../../acm/program/Program.html#setInvisible-acm.graphics.GObject-boolean-\">setInvisible</a>, <a href=\"../../../acm/program/Program.html#setJFrame-javax.swing.JFrame-\">setJFrame</a>, <a href=\"../../../acm/program/Program.html#setJMenuBar-javax.swing.JMenuBar-\">setJMenuBar</a>, <a href=\"../../../acm/program/Program.html#setLayout-java.awt.LayoutManager-\">setLayout</a>, <a href=\"../../../acm/program/Program.html#setLocation-double-double-\">setLocation</a>, <a href=\"../../../acm/program/Program.html#setLocation-acm.graphics.GPoint-\">setLocation</a>, <a href=\"../../../acm/program/Program.html#setOutputColor-java.awt.Color-\">setOutputColor</a>, <a href=\"../../../acm/program/Program.html#setOutputModel-acm.io.IOModel-\">setOutputModel</a>, <a href=\"../../../acm/program/Program.html#setParameter-java.lang.String-java.lang.String-\">setParameter</a>, <a href=\"../../../acm/program/Program.html#setParameterTable-java.util.Map-\">setParameterTable</a>, <a href=\"../../../acm/program/Program.html#setPauseScaleFactor-double-\">setPauseScaleFactor</a>, <a href=\"../../../acm/program/Program.html#setResizable-boolean-\">setResizable</a>, <a href=\"../../../acm/program/Program.html#setRightX-double-\">setRightX</a>, <a href=\"../../../acm/program/Program.html#setShowPixelGrid-boolean-\">setShowPixelGrid</a>, <a href=\"../../../acm/program/Program.html#setShowPixelInfo-boolean-\">setShowPixelInfo</a>, <a href=\"../../../acm/program/Program.html#setSize-double-double-\">setSize</a>, <a href=\"../../../acm/program/Program.html#setStartupObject-java.lang.Object-\">setStartupObject</a>, <a href=\"../../../acm/program/Program.html#setTitle-java.lang.String-\">setTitle</a>, <a href=\"../../../acm/program/Program.html#setWidth-double-\">setWidth</a>, <a href=\"../../../acm/program/Program.html#setX-double-\">setX</a>, <a href=\"../../../acm/program/Program.html#setY-double-\">setY</a>, <a href=\"../../../acm/program/Program.html#showErrorMessage-java.lang.String-\">showErrorMessage</a>, <a href=\"../../../acm/program/Program.html#start--\">start</a>, <a href=\"../../../acm/program/Program.html#start-java.lang.String:A-\">start</a>, <a href=\"../../../acm/program/Program.html#startAnimation--\">startAnimation</a>, <a href=\"../../../acm/program/Program.html#startHook--\">startHook</a>, <a href=\"../../../acm/program/Program.html#startRun--\">startRun</a>, <a href=\"../../../acm/program/Program.html#stateChanged-javax.swing.event.ChangeEvent-\">stateChanged</a>, <a href=\"../../../acm/program/Program.html#stopAnimation--\">stopAnimation</a>, <a href=\"../../../acm/program/Program.html#textValueChanged-java.awt.event.TextEvent-\">textValueChanged</a>, <a href=\"../../../acm/program/Program.html#validate--\">validate</a>, <a href=\"../../../acm/program/Program.html#valueChanged-javax.swing.event.ListSelectionEvent-\">valueChanged</a>, <a href=\"../../../acm/program/Program.html#windowActivated-java.awt.event.WindowEvent-\">windowActivated</a>, <a href=\"../../../acm/program/Program.html#windowClosed-java.awt.event.WindowEvent-\">windowClosed</a>, <a href=\"../../../acm/program/Program.html#windowClosing-java.awt.event.WindowEvent-\">windowClosing</a>, <a href=\"../../../acm/program/Program.html#windowDeactivated-java.awt.event.WindowEvent-\">windowDeactivated</a>, <a href=\"../../../acm/program/Program.html#windowDeiconified-java.awt.event.WindowEvent-\">windowDeiconified</a>, <a href=\"../../../acm/program/Program.html#windowGainedFocus-java.awt.event.WindowEvent-\">windowGainedFocus</a>, <a href=\"../../../acm/program/Program.html#windowIconified-java.awt.event.WindowEvent-\">windowIconified</a>, <a href=\"../../../acm/program/Program.html#windowLostFocus-java.awt.event.WindowEvent-\">windowLostFocus</a>, <a href=\"../../../acm/program/Program.html#windowOpened-java.awt.event.WindowEvent-\">windowOpened</a>, <a href=\"../../../acm/program/Program.html#windowStateChanged-java.awt.event.WindowEvent-\">windowStateChanged</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JApplet\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#createRootPane--\" title=\"class or interface in javax.swing\">createRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getAccessibleContext--\" title=\"class or interface in javax.swing\">getAccessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getContentPane--\" title=\"class or interface in javax.swing\">getContentPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getGlassPane--\" title=\"class or interface in javax.swing\">getGlassPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getGraphics--\" title=\"class or interface in javax.swing\">getGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getJMenuBar--\" title=\"class or interface in javax.swing\">getJMenuBar</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getLayeredPane--\" title=\"class or interface in javax.swing\">getLayeredPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getRootPane--\" title=\"class or interface in javax.swing\">getRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getTransferHandler--\" title=\"class or interface in javax.swing\">getTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#isRootPaneCheckingEnabled--\" title=\"class or interface in javax.swing\">isRootPaneCheckingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#paramString--\" title=\"class or interface in javax.swing\">paramString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#repaint-long-int-int-int-int-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setContentPane-java.awt.Container-\" title=\"class or interface in javax.swing\">setContentPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setGlassPane-java.awt.Component-\" title=\"class or interface in javax.swing\">setGlassPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setLayeredPane-javax.swing.JLayeredPane-\" title=\"class or interface in javax.swing\">setLayeredPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setRootPane-javax.swing.JRootPane-\" title=\"class or interface in javax.swing\">setRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setRootPaneCheckingEnabled-boolean-\" title=\"class or interface in javax.swing\">setRootPaneCheckingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setTransferHandler-javax.swing.TransferHandler-\" title=\"class or interface in javax.swing\">setTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#update-java.awt.Graphics-\" title=\"class or interface in javax.swing\">update</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.applet.Applet\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.applet.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">Applet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAppletContext--\" title=\"class or interface in java.applet\">getAppletContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAppletInfo--\" title=\"class or interface in java.applet\">getAppletInfo</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAudioClip-java.net.URL-\" title=\"class or interface in java.applet\">getAudioClip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAudioClip-java.net.URL-java.lang.String-\" title=\"class or interface in java.applet\">getAudioClip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getCodeBase--\" title=\"class or interface in java.applet\">getCodeBase</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getDocumentBase--\" title=\"class or interface in java.applet\">getDocumentBase</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getImage-java.net.URL-\" title=\"class or interface in java.applet\">getImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getImage-java.net.URL-java.lang.String-\" title=\"class or interface in java.applet\">getImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getLocale--\" title=\"class or interface in java.applet\">getLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getParameterInfo--\" title=\"class or interface in java.applet\">getParameterInfo</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#isActive--\" title=\"class or interface in java.applet\">isActive</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#isValidateRoot--\" title=\"class or interface in java.applet\">isValidateRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#newAudioClip-java.net.URL-\" title=\"class or interface in java.applet\">newAudioClip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#play-java.net.URL-\" title=\"class or interface in java.applet\">play</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#play-java.net.URL-java.lang.String-\" title=\"class or interface in java.applet\">play</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#resize-java.awt.Dimension-\" title=\"class or interface in java.applet\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#resize-int-int-\" title=\"class or interface in java.applet\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#setStub-java.applet.AppletStub-\" title=\"class or interface in java.applet\">setStub</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#showStatus-java.lang.String-\" title=\"class or interface in java.applet\">showStatus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#stop--\" title=\"class or interface in java.applet\">stop</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Panel\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\">Panel</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true#addNotify--\" title=\"class or interface in java.awt\">addNotify</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.lang.String-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">addContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#applyComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">applyComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#areFocusTraversalKeysSet-int-\" title=\"class or interface in java.awt\">areFocusTraversalKeysSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#countComponents--\" title=\"class or interface in java.awt\">countComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#deliverEvent-java.awt.Event-\" title=\"class or interface in java.awt\">deliverEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#doLayout--\" title=\"class or interface in java.awt\">doLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-int-int-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getAlignmentX--\" title=\"class or interface in java.awt\">getAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getAlignmentY--\" title=\"class or interface in java.awt\">getAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponent-int-\" title=\"class or interface in java.awt\">getComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-int-int-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentCount--\" title=\"class or interface in java.awt\">getComponentCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponents--\" title=\"class or interface in java.awt\">getComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentZOrder-java.awt.Component-\" title=\"class or interface in java.awt\">getComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getContainerListeners--\" title=\"class or interface in java.awt\">getContainerListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalKeys-int-\" title=\"class or interface in java.awt\">getFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalPolicy--\" title=\"class or interface in java.awt\">getFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getInsets--\" title=\"class or interface in java.awt\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getListeners-java.lang.Class-\" title=\"class or interface in java.awt\">getListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMaximumSize--\" title=\"class or interface in java.awt\">getMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMinimumSize--\" title=\"class or interface in java.awt\">getMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMousePosition-boolean-\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#insets--\" title=\"class or interface in java.awt\">insets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#invalidate--\" title=\"class or interface in java.awt\">invalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isAncestorOf-java.awt.Component-\" title=\"class or interface in java.awt\">isAncestorOf</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot--\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot-java.awt.Container-\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicyProvider--\" title=\"class or interface in java.awt\">isFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicySet--\" title=\"class or interface in java.awt\">isFocusTraversalPolicySet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#layout--\" title=\"class or interface in java.awt\">layout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintStream-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintWriter-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#locate-int-int-\" title=\"class or interface in java.awt\">locate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#minimumSize--\" title=\"class or interface in java.awt\">minimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paint-java.awt.Graphics-\" title=\"class or interface in java.awt\">paint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paintComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#preferredSize--\" title=\"class or interface in java.awt\">preferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#print-java.awt.Graphics-\" title=\"class or interface in java.awt\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#printComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">printComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processContainerEvent-java.awt.event.ContainerEvent-\" title=\"class or interface in java.awt\">processContainerEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">processEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">removeContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeNotify--\" title=\"class or interface in java.awt\">removeNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setComponentZOrder-java.awt.Component-int-\" title=\"class or interface in java.awt\">setComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusCycleRoot-boolean-\" title=\"class or interface in java.awt\">setFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalKeys-int-java.util.Set-\" title=\"class or interface in java.awt\">setFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicy-java.awt.FocusTraversalPolicy-\" title=\"class or interface in java.awt\">setFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicyProvider-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFont-java.awt.Font-\" title=\"class or interface in java.awt\">setFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#transferFocusDownCycle--\" title=\"class or interface in java.awt\">transferFocusDownCycle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validateTree--\" title=\"class or interface in java.awt\">validateTree</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#action-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">action</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#add-java.awt.PopupMenu-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">addComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">addFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">addHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">addHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">addInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">addKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">addMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">addMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">addMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#bounds--\" title=\"class or interface in java.awt\">bounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#coalesceEvents-java.awt.AWTEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">coalesceEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-int-int-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-java.awt.Point-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-java.awt.image.ImageProducer-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-int-int-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-java.awt.ImageCapabilities-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disable--\" title=\"class or interface in java.awt\">disable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disableEvents-long-\" title=\"class or interface in java.awt\">disableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#dispatchEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">dispatchEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable--\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable-boolean-\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableEvents-long-\" title=\"class or interface in java.awt\">enableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableInputMethods-boolean-\" title=\"class or interface in java.awt\">enableInputMethods</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-boolean-boolean-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-byte-byte-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-char-char-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-double-double-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-float-float-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-int-int-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-long-long-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-short-short-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBackground--\" title=\"class or interface in java.awt\">getBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBaseline-int-int-\" title=\"class or interface in java.awt\">getBaseline</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBaselineResizeBehavior--\" title=\"class or interface in java.awt\">getBaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds--\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getColorModel--\" title=\"class or interface in java.awt\">getColorModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentListeners--\" title=\"class or interface in java.awt\">getComponentListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentOrientation--\" title=\"class or interface in java.awt\">getComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getCursor--\" title=\"class or interface in java.awt\">getCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getDropTarget--\" title=\"class or interface in java.awt\">getDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusCycleRootAncestor--\" title=\"class or interface in java.awt\">getFocusCycleRootAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusListeners--\" title=\"class or interface in java.awt\">getFocusListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusTraversalKeysEnabled--\" title=\"class or interface in java.awt\">getFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFont--\" title=\"class or interface in java.awt\">getFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFontMetrics-java.awt.Font-\" title=\"class or interface in java.awt\">getFontMetrics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getForeground--\" title=\"class or interface in java.awt\">getForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getGraphicsConfiguration--\" title=\"class or interface in java.awt\">getGraphicsConfiguration</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyBoundsListeners--\" title=\"class or interface in java.awt\">getHierarchyBoundsListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyListeners--\" title=\"class or interface in java.awt\">getHierarchyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getIgnoreRepaint--\" title=\"class or interface in java.awt\">getIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputContext--\" title=\"class or interface in java.awt\">getInputContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodListeners--\" title=\"class or interface in java.awt\">getInputMethodListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodRequests--\" title=\"class or interface in java.awt\">getInputMethodRequests</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getKeyListeners--\" title=\"class or interface in java.awt\">getKeyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation--\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation-java.awt.Point-\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocationOnScreen--\" title=\"class or interface in java.awt\">getLocationOnScreen</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseListeners--\" title=\"class or interface in java.awt\">getMouseListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseMotionListeners--\" title=\"class or interface in java.awt\">getMouseMotionListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMousePosition--\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseWheelListeners--\" title=\"class or interface in java.awt\">getMouseWheelListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getName--\" title=\"class or interface in java.awt\">getName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getParent--\" title=\"class or interface in java.awt\">getParent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPeer--\" title=\"class or interface in java.awt\">getPeer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners--\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners-java.lang.String-\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize--\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getToolkit--\" title=\"class or interface in java.awt\">getToolkit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getTreeLock--\" title=\"class or interface in java.awt\">getTreeLock</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getX--\" title=\"class or interface in java.awt\">getX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getY--\" title=\"class or interface in java.awt\">getY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#gotFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">gotFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#handleEvent-java.awt.Event-\" title=\"class or interface in java.awt\">handleEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hasFocus--\" title=\"class or interface in java.awt\">hasFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hide--\" title=\"class or interface in java.awt\">hide</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#imageUpdate-java.awt.Image-int-int-int-int-int-\" title=\"class or interface in java.awt\">imageUpdate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#inside-int-int-\" title=\"class or interface in java.awt\">inside</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isBackgroundSet--\" title=\"class or interface in java.awt\">isBackgroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isCursorSet--\" title=\"class or interface in java.awt\">isCursorSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDisplayable--\" title=\"class or interface in java.awt\">isDisplayable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDoubleBuffered--\" title=\"class or interface in java.awt\">isDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isEnabled--\" title=\"class or interface in java.awt\">isEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusable--\" title=\"class or interface in java.awt\">isFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusOwner--\" title=\"class or interface in java.awt\">isFocusOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusTraversable--\" title=\"class or interface in java.awt\">isFocusTraversable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFontSet--\" title=\"class or interface in java.awt\">isFontSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isForegroundSet--\" title=\"class or interface in java.awt\">isForegroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isLightweight--\" title=\"class or interface in java.awt\">isLightweight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMaximumSizeSet--\" title=\"class or interface in java.awt\">isMaximumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMinimumSizeSet--\" title=\"class or interface in java.awt\">isMinimumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isOpaque--\" title=\"class or interface in java.awt\">isOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isPreferredSizeSet--\" title=\"class or interface in java.awt\">isPreferredSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isShowing--\" title=\"class or interface in java.awt\">isShowing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isValid--\" title=\"class or interface in java.awt\">isValid</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isVisible--\" title=\"class or interface in java.awt\">isVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyDown-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyUp-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list--\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintStream-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintWriter-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#location--\" title=\"class or interface in java.awt\">location</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#lostFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">lostFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDown-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDrag-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDrag</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseEnter-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseEnter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseExit-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseExit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseMove-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseMove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseUp-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#move-int-int-\" title=\"class or interface in java.awt\">move</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#nextFocus--\" title=\"class or interface in java.awt\">nextFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#paintAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#postEvent-java.awt.Event-\" title=\"class or interface in java.awt\">postEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#printAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">printAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processComponentEvent-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt\">processComponentEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processFocusEvent-java.awt.event.FocusEvent-\" title=\"class or interface in java.awt\">processFocusEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyBoundsEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyBoundsEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processInputMethodEvent-java.awt.event.InputMethodEvent-\" title=\"class or interface in java.awt\">processInputMethodEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in java.awt\">processKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseEvent-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt\">processMouseEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseMotionEvent-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt\">processMouseMotionEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseWheelEvent-java.awt.event.MouseWheelEvent-\" title=\"class or interface in java.awt\">processMouseWheelEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#remove-java.awt.MenuComponent-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">removeComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">removeFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">removeHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">removeHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">removeInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">removeKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">removeMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">removeMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">removeMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-int-int-int-int-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-long-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocus--\" title=\"class or interface in java.awt\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocus-boolean-\" title=\"class or interface in java.awt\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocusInWindow--\" title=\"class or interface in java.awt\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocusInWindow-boolean-\" title=\"class or interface in java.awt\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#reshape-int-int-int-int-\" title=\"class or interface in java.awt\">reshape</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#revalidate--\" title=\"class or interface in java.awt\">revalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-int-int-int-int-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">setComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setCursor-java.awt.Cursor-\" title=\"class or interface in java.awt\">setCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setDropTarget-java.awt.dnd.DropTarget-\" title=\"class or interface in java.awt\">setDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setEnabled-boolean-\" title=\"class or interface in java.awt\">setEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusable-boolean-\" title=\"class or interface in java.awt\">setFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusTraversalKeysEnabled-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setForeground-java.awt.Color-\" title=\"class or interface in java.awt\">setForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setIgnoreRepaint-boolean-\" title=\"class or interface in java.awt\">setIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocale-java.util.Locale-\" title=\"class or interface in java.awt\">setLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-int-int-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-java.awt.Point-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setMaximumSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setMinimumSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setName-java.lang.String-\" title=\"class or interface in java.awt\">setName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setPreferredSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-int-int-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setVisible-boolean-\" title=\"class or interface in java.awt\">setVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show--\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show-boolean-\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#size--\" title=\"class or interface in java.awt\">size</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#toString--\" title=\"class or interface in java.awt\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocus--\" title=\"class or interface in java.awt\">transferFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusBackward--\" title=\"class or interface in java.awt\">transferFocusBackward</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusUpCycle--\" title=\"class or interface in java.awt\">transferFocusUpCycle</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"ResizableProgram--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>ResizableProgram</h4>\n<pre>public&nbsp;ResizableProgram()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"componentHidden-java.awt.event.ComponentEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>componentHidden</h4>\n<pre>public&nbsp;void&nbsp;componentHidden(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentEvent</a>&nbsp;e)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../../acm/program/Program.html#componentHidden-java.awt.event.ComponentEvent-\">Program</a></code></span></div>\n<div class=\"block\">Required method of ComponentListener interface. Does nothing.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true#componentHidden-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt.event\">componentHidden</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentListener</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../../acm/program/Program.html#componentHidden-java.awt.event.ComponentEvent-\">componentHidden</a></code>&nbsp;in class&nbsp;<code><a href=\"../../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"componentMoved-java.awt.event.ComponentEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>componentMoved</h4>\n<pre>public&nbsp;void&nbsp;componentMoved(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentEvent</a>&nbsp;e)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../../acm/program/Program.html#componentMoved-java.awt.event.ComponentEvent-\">Program</a></code></span></div>\n<div class=\"block\">Required method of ComponentListener interface. Does nothing.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true#componentMoved-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt.event\">componentMoved</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentListener</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../../acm/program/Program.html#componentMoved-java.awt.event.ComponentEvent-\">componentMoved</a></code>&nbsp;in class&nbsp;<code><a href=\"../../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"componentResized-java.awt.event.ComponentEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>componentResized</h4>\n<pre>public&nbsp;void&nbsp;componentResized(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentEvent</a>&nbsp;e)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../../acm/program/Program.html#componentResized-java.awt.event.ComponentEvent-\">Program</a></code></span></div>\n<div class=\"block\">Required method of ComponentListener interface. Does nothing.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true#componentResized-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt.event\">componentResized</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentListener</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../../acm/program/Program.html#componentResized-java.awt.event.ComponentEvent-\">componentResized</a></code>&nbsp;in class&nbsp;<code><a href=\"../../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"componentShown-java.awt.event.ComponentEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>componentShown</h4>\n<pre>public&nbsp;void&nbsp;componentShown(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentEvent</a>&nbsp;e)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../../acm/program/Program.html#componentShown-java.awt.event.ComponentEvent-\">Program</a></code></span></div>\n<div class=\"block\">Required method of ComponentListener interface. Does nothing.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true#componentShown-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt.event\">componentShown</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentListener</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../../acm/program/Program.html#componentShown-java.awt.event.ComponentEvent-\">componentShown</a></code>&nbsp;in class&nbsp;<code><a href=\"../../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/program/ProgramUtils.html\" title=\"class in stanford.cs106.program\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li>Next&nbsp;Class</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/program/ResizableProgram.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ResizableProgram.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JApplet\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.acm.program.Program\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/program/package-frame.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:36 PDT 2017 -->\n<title>stanford.cs106.program</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<h1 class=\"bar\"><a href=\"../../../stanford/cs106/program/package-summary.html\" target=\"classFrame\">stanford.cs106.program</a></h1>\n<div class=\"indexContainer\">\n<h2 title=\"Classes\">Classes</h2>\n<ul title=\"Classes\">\n<li><a href=\"CommandLineProgramMarty.html\" title=\"class in stanford.cs106.program\" target=\"classFrame\">CommandLineProgramMarty</a></li>\n<li><a href=\"ConsoleProgramMarty.html\" title=\"class in stanford.cs106.program\" target=\"classFrame\">ConsoleProgramMarty</a></li>\n<li><a href=\"ProgramUtils.html\" title=\"class in stanford.cs106.program\" target=\"classFrame\">ProgramUtils</a></li>\n<li><a href=\"ResizableProgram.html\" title=\"class in stanford.cs106.program\" target=\"classFrame\">ResizableProgram</a></li>\n</ul>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/program/package-summary.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:36 PDT 2017 -->\n<title>stanford.cs106.program</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"stanford.cs106.program\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li class=\"navBarCell1Rev\">Package</li>\n<li>Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/net/package-summary.html\">Prev&nbsp;Package</a></li>\n<li><a href=\"../../../stanford/cs106/reflect/package-summary.html\">Next&nbsp;Package</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/program/package-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 title=\"Package\" class=\"title\">Package&nbsp;stanford.cs106.program</h1>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Class Summary table, listing classes, and an explanation\">\n<caption><span>Class Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Class</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/program/CommandLineProgramMarty.html\" title=\"class in stanford.cs106.program\">CommandLineProgramMarty</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/program/ConsoleProgramMarty.html\" title=\"class in stanford.cs106.program\">ConsoleProgramMarty</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/program/ProgramUtils.html\" title=\"class in stanford.cs106.program\">ProgramUtils</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/program/ResizableProgram.html\" title=\"class in stanford.cs106.program\">ResizableProgram</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n</tbody>\n</table>\n</li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li class=\"navBarCell1Rev\">Package</li>\n<li>Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/net/package-summary.html\">Prev&nbsp;Package</a></li>\n<li><a href=\"../../../stanford/cs106/reflect/package-summary.html\">Next&nbsp;Package</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/program/package-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/program/package-tree.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:36 PDT 2017 -->\n<title>stanford.cs106.program Class Hierarchy</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"stanford.cs106.program Class Hierarchy\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/net/package-tree.html\">Prev</a></li>\n<li><a href=\"../../../stanford/cs106/reflect/package-tree.html\">Next</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/program/package-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 class=\"title\">Hierarchy For Package stanford.cs106.program</h1>\n<span class=\"packageHierarchyLabel\">Package Hierarchies:</span>\n<ul class=\"horizontal\">\n<li><a href=\"../../../overview-tree.html\">All Packages</a></li>\n</ul>\n</div>\n<div class=\"contentContainer\">\n<h2 title=\"Class Hierarchy\">Class Hierarchy</h2>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Object</span></a>\n<ul>\n<li type=\"circle\">acm.program.<a href=\"../../../acm/program/CommandLineProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">CommandLineProgram</span></a> (implements java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, acm.io.IOModel, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a>, acm.program.<a href=\"../../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a>)\n<ul>\n<li type=\"circle\">stanford.cs106.program.<a href=\"../../../stanford/cs106/program/CommandLineProgramMarty.html\" title=\"class in stanford.cs106.program\"><span class=\"typeNameLink\">CommandLineProgramMarty</span></a></li>\n</ul>\n</li>\n<li type=\"circle\">java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\"><span class=\"typeNameLink\">Component</span></a> (implements java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\"><span class=\"typeNameLink\">Container</span></a>\n<ul>\n<li type=\"circle\">java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\"><span class=\"typeNameLink\">Panel</span></a> (implements javax.accessibility.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>)\n<ul>\n<li type=\"circle\">java.applet.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\"><span class=\"typeNameLink\">Applet</span></a>\n<ul>\n<li type=\"circle\">javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\"><span class=\"typeNameLink\">JApplet</span></a> (implements javax.accessibility.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/RootPaneContainer.html?is-external=true\" title=\"class or interface in javax.swing\">RootPaneContainer</a>)\n<ul>\n<li type=\"circle\">acm.program.<a href=\"../../../acm/program/Program.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Program</span></a> (implements java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/AdjustmentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">AdjustmentListener</a>, javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ContainerListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ContainerListener</a>, javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusListener</a>, acm.io.IOModel, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ItemListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ItemListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>, javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListDataListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListDataListener</a>, javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListSelectionListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListSelectionListener</a>, javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/MouseInputListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">MouseInputListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseWheelListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseWheelListener</a>, javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/PopupMenuListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">PopupMenuListener</a>, acm.program.<a href=\"../../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a>, java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/TextListener.html?is-external=true\" title=\"class or interface in java.awt.event\">TextListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowFocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowFocusListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowStateListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowStateListener</a>)\n<ul>\n<li type=\"circle\">acm.program.<a href=\"../../../acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">AbstractConsoleProgram</span></a>\n<ul>\n<li type=\"circle\">acm.program.<a href=\"../../../acm/program/ConsoleProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">ConsoleProgram</span></a>\n<ul>\n<li type=\"circle\">stanford.cs106.program.<a href=\"../../../stanford/cs106/program/ConsoleProgramMarty.html\" title=\"class in stanford.cs106.program\"><span class=\"typeNameLink\">ConsoleProgramMarty</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li type=\"circle\">stanford.cs106.program.<a href=\"../../../stanford/cs106/program/ResizableProgram.html\" title=\"class in stanford.cs106.program\"><span class=\"typeNameLink\">ResizableProgram</span></a> (implements java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentListener</a>)</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li type=\"circle\">stanford.cs106.program.<a href=\"../../../stanford/cs106/program/ProgramUtils.html\" title=\"class in stanford.cs106.program\"><span class=\"typeNameLink\">ProgramUtils</span></a></li>\n</ul>\n</li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/net/package-tree.html\">Prev</a></li>\n<li><a href=\"../../../stanford/cs106/reflect/package-tree.html\">Next</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/program/package-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/reflect/ClassUtils.BetterClassLoader.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>ClassUtils.BetterClassLoader</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"ClassUtils.BetterClassLoader\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":9,\"i2\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/reflect/ClassUtils.ClassComparator.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/reflect/ClassUtils.BetterClassLoader.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ClassUtils.BetterClassLoader.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.reflect</div>\n<h2 title=\"Class ClassUtils.BetterClassLoader\" class=\"title\">Class ClassUtils.BetterClassLoader</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.ClassLoader</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/security/SecureClassLoader.html?is-external=true\" title=\"class or interface in java.security\">java.security.SecureClassLoader</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URLClassLoader.html?is-external=true\" title=\"class or interface in java.net\">java.net.URLClassLoader</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.reflect.ClassUtils.BetterClassLoader</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true\" title=\"class or interface in java.io\">Closeable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/AutoCloseable.html?is-external=true\" title=\"class or interface in java.lang\">AutoCloseable</a></dd>\n</dl>\n<dl>\n<dt>Enclosing class:</dt>\n<dd><a href=\"../../../stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public static class <span class=\"typeNameLabel\">ClassUtils.BetterClassLoader</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URLClassLoader.html?is-external=true\" title=\"class or interface in java.net\">URLClassLoader</a></pre>\n<div class=\"block\">Loads classes from files on the server's hard disk.\n I shouldn't need to write this class, but Java's built-in class loaders\n (particularly URLClassLoader) are actually quite shitty.  You have to pass\n them arrays of java.net.URL objects, and they throw a million exceptions, and\n they don't really work very well.  So I have to make my own wrapper.  Sigh.</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.BetterClassLoader.html#loadClass-java.lang.String-\">loadClass</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>\n<div class=\"block\">Tries to load the class from the default system class loader, but if\n it isn't found, loads from the internal list of URLs.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true\" title=\"class or interface in java.lang\">ClassLoader</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.BetterClassLoader.html#newInstance-java.lang.ClassLoader-java.lang.String...-\">newInstance</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true\" title=\"class or interface in java.lang\">ClassLoader</a>&nbsp;parent,\n           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;filenames)</code>\n<div class=\"block\">Creates a new loader that loads classes from the given array of file names.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true\" title=\"class or interface in java.lang\">ClassLoader</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.BetterClassLoader.html#newInstance-java.lang.String...-\">newInstance</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;filenames)</code>\n<div class=\"block\">Creates a new loader that loads classes from the given array of file names.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.net.URLClassLoader\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.net.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URLClassLoader.html?is-external=true\" title=\"class or interface in java.net\">URLClassLoader</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URLClassLoader.html?is-external=true#addURL-java.net.URL-\" title=\"class or interface in java.net\">addURL</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URLClassLoader.html?is-external=true#close--\" title=\"class or interface in java.net\">close</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URLClassLoader.html?is-external=true#definePackage-java.lang.String-java.util.jar.Manifest-java.net.URL-\" title=\"class or interface in java.net\">definePackage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URLClassLoader.html?is-external=true#findClass-java.lang.String-\" title=\"class or interface in java.net\">findClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URLClassLoader.html?is-external=true#findResource-java.lang.String-\" title=\"class or interface in java.net\">findResource</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URLClassLoader.html?is-external=true#findResources-java.lang.String-\" title=\"class or interface in java.net\">findResources</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URLClassLoader.html?is-external=true#getPermissions-java.security.CodeSource-\" title=\"class or interface in java.net\">getPermissions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URLClassLoader.html?is-external=true#getResourceAsStream-java.lang.String-\" title=\"class or interface in java.net\">getResourceAsStream</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URLClassLoader.html?is-external=true#getURLs--\" title=\"class or interface in java.net\">getURLs</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URLClassLoader.html?is-external=true#newInstance-java.net.URL:A-\" title=\"class or interface in java.net\">newInstance</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URLClassLoader.html?is-external=true#newInstance-java.net.URL:A-java.lang.ClassLoader-\" title=\"class or interface in java.net\">newInstance</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.security.SecureClassLoader\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.security.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/security/SecureClassLoader.html?is-external=true\" title=\"class or interface in java.security\">SecureClassLoader</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/security/SecureClassLoader.html?is-external=true#defineClass-java.lang.String-byte:A-int-int-java.security.CodeSource-\" title=\"class or interface in java.security\">defineClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/security/SecureClassLoader.html?is-external=true#defineClass-java.lang.String-java.nio.ByteBuffer-java.security.CodeSource-\" title=\"class or interface in java.security\">defineClass</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.ClassLoader\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true\" title=\"class or interface in java.lang\">ClassLoader</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#clearAssertionStatus--\" title=\"class or interface in java.lang\">clearAssertionStatus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#defineClass-byte:A-int-int-\" title=\"class or interface in java.lang\">defineClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#defineClass-java.lang.String-byte:A-int-int-\" title=\"class or interface in java.lang\">defineClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#defineClass-java.lang.String-byte:A-int-int-java.security.ProtectionDomain-\" title=\"class or interface in java.lang\">defineClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#defineClass-java.lang.String-java.nio.ByteBuffer-java.security.ProtectionDomain-\" title=\"class or interface in java.lang\">defineClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#definePackage-java.lang.String-java.lang.String-java.lang.String-java.lang.String-java.lang.String-java.lang.String-java.lang.String-java.net.URL-\" title=\"class or interface in java.lang\">definePackage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#findLibrary-java.lang.String-\" title=\"class or interface in java.lang\">findLibrary</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#findLoadedClass-java.lang.String-\" title=\"class or interface in java.lang\">findLoadedClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#findSystemClass-java.lang.String-\" title=\"class or interface in java.lang\">findSystemClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#getClassLoadingLock-java.lang.String-\" title=\"class or interface in java.lang\">getClassLoadingLock</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#getPackage-java.lang.String-\" title=\"class or interface in java.lang\">getPackage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#getPackages--\" title=\"class or interface in java.lang\">getPackages</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#getParent--\" title=\"class or interface in java.lang\">getParent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#getResource-java.lang.String-\" title=\"class or interface in java.lang\">getResource</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#getResources-java.lang.String-\" title=\"class or interface in java.lang\">getResources</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#getSystemClassLoader--\" title=\"class or interface in java.lang\">getSystemClassLoader</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#getSystemResource-java.lang.String-\" title=\"class or interface in java.lang\">getSystemResource</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#getSystemResourceAsStream-java.lang.String-\" title=\"class or interface in java.lang\">getSystemResourceAsStream</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#getSystemResources-java.lang.String-\" title=\"class or interface in java.lang\">getSystemResources</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#loadClass-java.lang.String-boolean-\" title=\"class or interface in java.lang\">loadClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#registerAsParallelCapable--\" title=\"class or interface in java.lang\">registerAsParallelCapable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#resolveClass-java.lang.Class-\" title=\"class or interface in java.lang\">resolveClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#setClassAssertionStatus-java.lang.String-boolean-\" title=\"class or interface in java.lang\">setClassAssertionStatus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#setDefaultAssertionStatus-boolean-\" title=\"class or interface in java.lang\">setDefaultAssertionStatus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#setPackageAssertionStatus-java.lang.String-boolean-\" title=\"class or interface in java.lang\">setPackageAssertionStatus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#setSigners-java.lang.Class-java.lang.Object:A-\" title=\"class or interface in java.lang\">setSigners</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"newInstance-java.lang.String...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>newInstance</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true\" title=\"class or interface in java.lang\">ClassLoader</a>&nbsp;newInstance(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;filenames)</pre>\n<div class=\"block\">Creates a new loader that loads classes from the given array of file names.\n If a class can't be found in any of those files, falls back to the system\n class loader.</div>\n</li>\n</ul>\n<a name=\"newInstance-java.lang.ClassLoader-java.lang.String...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>newInstance</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true\" title=\"class or interface in java.lang\">ClassLoader</a>&nbsp;newInstance(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true\" title=\"class or interface in java.lang\">ClassLoader</a>&nbsp;parent,\n                                      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;filenames)</pre>\n<div class=\"block\">Creates a new loader that loads classes from the given array of file names.\n If a class can't be found in any of those files, falls back to the given\n \"parent\" class loader.</div>\n</li>\n</ul>\n<a name=\"loadClass-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>loadClass</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;loadClass(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)\n                   throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true\" title=\"class or interface in java.lang\">ClassNotFoundException</a></pre>\n<div class=\"block\">Tries to load the class from the default system class loader, but if\n it isn't found, loads from the internal list of URLs.\n \n The main exception is that classes from the 'Sandbox' package are\n forcibly loaded from Practice-It's own notions of the sandbox.* classes.\n JUnit classes are also treated as a special case.\n \n This is to make it so that dynamically loaded DumpingGround classes\n can see sandbox.* classes that they interact with.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true#loadClass-java.lang.String-\" title=\"class or interface in java.lang\">loadClass</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true\" title=\"class or interface in java.lang\">ClassLoader</a></code></dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true\" title=\"class or interface in java.lang\">ClassNotFoundException</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/reflect/ClassUtils.ClassComparator.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/reflect/ClassUtils.BetterClassLoader.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ClassUtils.BetterClassLoader.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/reflect/ClassUtils.ClassComparator.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>ClassUtils.ClassComparator</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"ClassUtils.ClassComparator\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/reflect/ClassUtils.BetterClassLoader.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/reflect/ClassUtils.ExtensionFilter.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/reflect/ClassUtils.ClassComparator.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ClassUtils.ClassComparator.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.reflect</div>\n<h2 title=\"Class ClassUtils.ClassComparator\" class=\"title\">Class ClassUtils.ClassComparator</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.reflect.ClassUtils.ClassComparator</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true\" title=\"class or interface in java.util\">Comparator</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&gt;</dd>\n</dl>\n<dl>\n<dt>Enclosing class:</dt>\n<dd><a href=\"../../../stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public static class <span class=\"typeNameLabel\">ClassUtils.ClassComparator</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>\nimplements <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true\" title=\"class or interface in java.util\">Comparator</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&gt;</pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.ClassComparator.html#ClassComparator--\">ClassComparator</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.ClassComparator.html#compare-java.lang.Class-java.lang.Class-\">compare</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;c1,\n       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;c2)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.util.Comparator\">\n<!--   -->\n</a>\n<h3>Methods inherited from interface&nbsp;java.util.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true\" title=\"class or interface in java.util\">Comparator</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#comparing-java.util.function.Function-\" title=\"class or interface in java.util\">comparing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#comparing-java.util.function.Function-java.util.Comparator-\" title=\"class or interface in java.util\">comparing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#comparingDouble-java.util.function.ToDoubleFunction-\" title=\"class or interface in java.util\">comparingDouble</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#comparingInt-java.util.function.ToIntFunction-\" title=\"class or interface in java.util\">comparingInt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#comparingLong-java.util.function.ToLongFunction-\" title=\"class or interface in java.util\">comparingLong</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.util\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#naturalOrder--\" title=\"class or interface in java.util\">naturalOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#nullsFirst-java.util.Comparator-\" title=\"class or interface in java.util\">nullsFirst</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#nullsLast-java.util.Comparator-\" title=\"class or interface in java.util\">nullsLast</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#reversed--\" title=\"class or interface in java.util\">reversed</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#reverseOrder--\" title=\"class or interface in java.util\">reverseOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#thenComparing-java.util.Comparator-\" title=\"class or interface in java.util\">thenComparing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#thenComparing-java.util.function.Function-\" title=\"class or interface in java.util\">thenComparing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#thenComparing-java.util.function.Function-java.util.Comparator-\" title=\"class or interface in java.util\">thenComparing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#thenComparingDouble-java.util.function.ToDoubleFunction-\" title=\"class or interface in java.util\">thenComparingDouble</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#thenComparingInt-java.util.function.ToIntFunction-\" title=\"class or interface in java.util\">thenComparingInt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#thenComparingLong-java.util.function.ToLongFunction-\" title=\"class or interface in java.util\">thenComparingLong</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"ClassComparator--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>ClassComparator</h4>\n<pre>public&nbsp;ClassComparator()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"compare-java.lang.Class-java.lang.Class-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>compare</h4>\n<pre>public&nbsp;int&nbsp;compare(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;c1,\n                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;c2)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#compare-T-T-\" title=\"class or interface in java.util\">compare</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true\" title=\"class or interface in java.util\">Comparator</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&gt;</code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/reflect/ClassUtils.BetterClassLoader.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/reflect/ClassUtils.ExtensionFilter.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/reflect/ClassUtils.ClassComparator.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ClassUtils.ClassComparator.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/reflect/ClassUtils.ExtensionFilter.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>ClassUtils.ExtensionFilter</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"ClassUtils.ExtensionFilter\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/reflect/ClassUtils.ClassComparator.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/reflect/CompilerErrorException.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/reflect/ClassUtils.ExtensionFilter.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ClassUtils.ExtensionFilter.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.reflect</div>\n<h2 title=\"Class ClassUtils.ExtensionFilter\" class=\"title\">Class ClassUtils.ExtensionFilter</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.reflect.ClassUtils.ExtensionFilter</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FileFilter.html?is-external=true\" title=\"class or interface in java.io\">FileFilter</a></dd>\n</dl>\n<dl>\n<dt>Enclosing class:</dt>\n<dd><a href=\"../../../stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public static class <span class=\"typeNameLabel\">ClassUtils.ExtensionFilter</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>\nimplements <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FileFilter.html?is-external=true\" title=\"class or interface in java.io\">FileFilter</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.ExtensionFilter.html#ExtensionFilter-java.lang.String-\">ExtensionFilter</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;extension)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.ExtensionFilter.html#accept-java.io.File-\">accept</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;f)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"ExtensionFilter-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>ExtensionFilter</h4>\n<pre>public&nbsp;ExtensionFilter(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;extension)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"accept-java.io.File-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>accept</h4>\n<pre>public&nbsp;boolean&nbsp;accept(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;f)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FileFilter.html?is-external=true#accept-java.io.File-\" title=\"class or interface in java.io\">accept</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FileFilter.html?is-external=true\" title=\"class or interface in java.io\">FileFilter</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/reflect/ClassUtils.ClassComparator.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/reflect/CompilerErrorException.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/reflect/ClassUtils.ExtensionFilter.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ClassUtils.ExtensionFilter.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/reflect/ClassUtils.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>ClassUtils</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"ClassUtils\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9,\"i2\":9,\"i3\":9,\"i4\":9,\"i5\":9,\"i6\":9,\"i7\":9,\"i8\":9,\"i9\":9,\"i10\":9,\"i11\":9,\"i12\":9,\"i13\":9,\"i14\":9,\"i15\":9,\"i16\":9,\"i17\":9,\"i18\":9,\"i19\":9,\"i20\":9,\"i21\":9,\"i22\":9,\"i23\":9,\"i24\":9,\"i25\":9,\"i26\":9,\"i27\":9,\"i28\":9,\"i29\":9,\"i30\":9,\"i31\":9,\"i32\":9,\"i33\":9,\"i34\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Class</li>\n<li><a href=\"../../../stanford/cs106/reflect/ClassUtils.BetterClassLoader.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/reflect/ClassUtils.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ClassUtils.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.class.summary\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.reflect</div>\n<h2 title=\"Class ClassUtils\" class=\"title\">Class ClassUtils</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.reflect.ClassUtils</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public final class <span class=\"typeNameLabel\">ClassUtils</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Nested Class Summary table, listing nested classes, and an explanation\">\n<caption><span>Nested Classes</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Class and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static class&nbsp;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.BetterClassLoader.html\" title=\"class in stanford.cs106.reflect\">ClassUtils.BetterClassLoader</a></span></code>\n<div class=\"block\">Loads classes from files on the server's hard disk.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static class&nbsp;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.ClassComparator.html\" title=\"class in stanford.cs106.reflect\">ClassUtils.ClassComparator</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static class&nbsp;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.ExtensionFilter.html\" title=\"class in stanford.cs106.reflect\">ClassUtils.ExtensionFilter</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.html#CLASS_EXTENSION\">CLASS_EXTENSION</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.html#JAVA_EXTENSION\">JAVA_EXTENSION</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.html#ClassUtils--\">ClassUtils</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.html#classImplements-java.lang.Class-java.lang.Class-\">classImplements</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;interfaceType)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.html#compile-java.lang.String-\">compile</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fileName)</code>\n<div class=\"block\">Compiles the .java source file with the given file name,\n and returns the file name of the newly compiled .class file.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>static &lt;T&gt;&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;? extends T&gt;&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.html#getClasses-java.lang.Class-java.lang.String-\">getClasses</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;T&gt;&nbsp;superClass,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;folderName)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.html#getClassPathFolders--\">getClassPathFolders</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.html#getFieldNames-java.lang.Class-\">getFieldNames</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz)</code>\n<div class=\"block\">Returns a set of names of all fields in the given class.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Field</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.html#getFields-java.lang.Class-java.lang.Class-\">getFields</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;type)</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Field</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.html#getFields-java.lang.Class-java.lang.Class-java.lang.Class-\">getFields</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;type,\n         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;parameterizedType)</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Field</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.html#getFields-java.lang.Class-java.lang.Class-java.lang.Class-boolean-\">getFields</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;type,\n         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;parameterizedType,\n         boolean&nbsp;allowSubtype)</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Field</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.html#getFields-java.lang.Class-java.util.Set-java.lang.Class-boolean-\">getFields</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&gt;&nbsp;types,\n         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;parameterizedType,\n         boolean&nbsp;allowSubtype)</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.html#getFieldTypes-java.lang.Class-\">getFieldTypes</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz)</code>\n<div class=\"block\">Returns a set of types of all fields in the given class.</div>\n</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.html#getFirstClassPathFolder--\">getFirstClassPathFolder</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.html#getMethodNames-java.lang.Class-\">getMethodNames</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz)</code>\n<div class=\"block\">Returns a set of names of all methods in the given class.</div>\n</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Constructor.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Constructor</a>&lt;?&gt;&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.html#getNonPrivateConstructors-java.lang.Class-\">getNonPrivateConstructors</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz)</code>\n<div class=\"block\">Returns a set of names of all methods in the given class that are not private.</div>\n</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.html#getNonPrivateFieldNames-java.lang.Class-\">getNonPrivateFieldNames</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz)</code>\n<div class=\"block\">Returns a set of names of all fields in the given class that are not private.</div>\n</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.html#getNonPrivateFieldNames-java.lang.Class-boolean-\">getNonPrivateFieldNames</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                       boolean&nbsp;allowProtected)</code>&nbsp;</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.html#getNonPrivateFieldNames-java.lang.String-\">getNonPrivateFieldNames</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className)</code>\n<div class=\"block\">Returns a set of names of all fields in class with the given name that are not private.</div>\n</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.html#getNonPrivateFieldNames-java.lang.String-boolean-\">getNonPrivateFieldNames</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className,\n                       boolean&nbsp;allowProtected)</code>&nbsp;</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.html#getNonPrivateMethodNames-java.lang.Class-\">getNonPrivateMethodNames</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz)</code>&nbsp;</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.html#getNonPrivateMethodNames-java.lang.Class-boolean-\">getNonPrivateMethodNames</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                        boolean&nbsp;allowProtected)</code>\n<div class=\"block\">Returns a set of names of all methods in the given class that are not private.</div>\n</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Method</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.html#getNonPrivateMethods-java.lang.Class-\">getNonPrivateMethods</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz)</code>\n<div class=\"block\">Returns a set of names of all methods in the given class that are not private.</div>\n</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.html#hasMain-java.lang.Class-\">hasMain</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz)</code>&nbsp;</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.html#isInnerClass-java.lang.Class-\">isInnerClass</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz)</code>&nbsp;</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.html#isInnerClass-java.lang.String-\">isInnerClass</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className)</code>&nbsp;</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.html#loadClass-java.lang.String-\">loadClass</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fileName)</code>&nbsp;</td>\n</tr>\n<tr id=\"i24\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.html#readAndRename-java.lang.String-java.lang.String-\">readAndRename</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;oldClassName,\n             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;newClassName)</code>&nbsp;</td>\n</tr>\n<tr id=\"i25\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.html#readAndRename-java.lang.String-java.lang.String-java.lang.String-\">readAndRename</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fileName,\n             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;oldClassName,\n             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;newClassName)</code>&nbsp;</td>\n</tr>\n<tr id=\"i26\" class=\"altColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.html#reflectionEquals-java.lang.Object-java.lang.Object-\">reflectionEquals</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;o1,\n                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;o2)</code>&nbsp;</td>\n</tr>\n<tr id=\"i27\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.html#renameAndWriteJavaFile-java.lang.String-java.lang.String-java.lang.String-boolean-\">renameAndWriteJavaFile</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fileText,\n                      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;oldClassName,\n                      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;newClassName,\n                      boolean&nbsp;useTempFolder)</code>&nbsp;</td>\n</tr>\n<tr id=\"i28\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.html#runMain-java.lang.Class-\">runMain</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz)</code>&nbsp;</td>\n</tr>\n<tr id=\"i29\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.html#runMain-java.lang.Class-java.lang.String:A-\">runMain</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</code>&nbsp;</td>\n</tr>\n<tr id=\"i30\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.html#sanitizeClassName-java.lang.String-\">sanitizeClassName</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</code>&nbsp;</td>\n</tr>\n<tr id=\"i31\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.html#stripPackages-java.lang.Class-\">stripPackages</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz)</code>&nbsp;</td>\n</tr>\n<tr id=\"i32\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.html#stripPackages-java.lang.String-\">stripPackages</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className)</code>&nbsp;</td>\n</tr>\n<tr id=\"i33\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.html#writeAndCompile-java.lang.String-java.lang.String-boolean-\">writeAndCompile</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fileText,\n               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className,\n               boolean&nbsp;useTempFolder)</code>&nbsp;</td>\n</tr>\n<tr id=\"i34\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.html#writeAndLoadClass-java.lang.String-java.lang.String-boolean-\">writeAndLoadClass</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fileText,\n                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className,\n                 boolean&nbsp;useTempFolder)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"CLASS_EXTENSION\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>CLASS_EXTENSION</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> CLASS_EXTENSION</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#stanford.cs106.reflect.ClassUtils.CLASS_EXTENSION\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"JAVA_EXTENSION\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>JAVA_EXTENSION</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> JAVA_EXTENSION</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#stanford.cs106.reflect.ClassUtils.JAVA_EXTENSION\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"ClassUtils--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>ClassUtils</h4>\n<pre>public&nbsp;ClassUtils()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"hasMain-java.lang.Class-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hasMain</h4>\n<pre>public static&nbsp;boolean&nbsp;hasMain(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz)</pre>\n</li>\n</ul>\n<a name=\"runMain-java.lang.Class-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>runMain</h4>\n<pre>public static&nbsp;void&nbsp;runMain(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz)\n                    throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/SecurityException.html?is-external=true\" title=\"class or interface in java.lang\">SecurityException</a>,\n                           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NoSuchMethodException.html?is-external=true\" title=\"class or interface in java.lang\">NoSuchMethodException</a>,\n                           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a>,\n                           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalAccessException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalAccessException</a>,\n                           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/InvocationTargetException.html?is-external=true\" title=\"class or interface in java.lang.reflect\">InvocationTargetException</a></pre>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/SecurityException.html?is-external=true\" title=\"class or interface in java.lang\">SecurityException</a></code></dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NoSuchMethodException.html?is-external=true\" title=\"class or interface in java.lang\">NoSuchMethodException</a></code></dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code></dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalAccessException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalAccessException</a></code></dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/InvocationTargetException.html?is-external=true\" title=\"class or interface in java.lang.reflect\">InvocationTargetException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"runMain-java.lang.Class-java.lang.String:A-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>runMain</h4>\n<pre>public static&nbsp;void&nbsp;runMain(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)\n                    throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/SecurityException.html?is-external=true\" title=\"class or interface in java.lang\">SecurityException</a>,\n                           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NoSuchMethodException.html?is-external=true\" title=\"class or interface in java.lang\">NoSuchMethodException</a>,\n                           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a>,\n                           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalAccessException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalAccessException</a>,\n                           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/InvocationTargetException.html?is-external=true\" title=\"class or interface in java.lang.reflect\">InvocationTargetException</a></pre>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/SecurityException.html?is-external=true\" title=\"class or interface in java.lang\">SecurityException</a></code></dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NoSuchMethodException.html?is-external=true\" title=\"class or interface in java.lang\">NoSuchMethodException</a></code></dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code></dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalAccessException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalAccessException</a></code></dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/InvocationTargetException.html?is-external=true\" title=\"class or interface in java.lang.reflect\">InvocationTargetException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getClassPathFolders--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getClassPathFolders</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;getClassPathFolders()</pre>\n</li>\n</ul>\n<a name=\"getFields-java.lang.Class-java.lang.Class-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFields</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Field</a>&gt;&nbsp;getFields(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;type)</pre>\n</li>\n</ul>\n<a name=\"getFields-java.lang.Class-java.lang.Class-java.lang.Class-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFields</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Field</a>&gt;&nbsp;getFields(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;type,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;parameterizedType)</pre>\n</li>\n</ul>\n<a name=\"getFields-java.lang.Class-java.lang.Class-java.lang.Class-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFields</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Field</a>&gt;&nbsp;getFields(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;type,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;parameterizedType,\n                                   boolean&nbsp;allowSubtype)</pre>\n</li>\n</ul>\n<a name=\"getFields-java.lang.Class-java.util.Set-java.lang.Class-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFields</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Field</a>&gt;&nbsp;getFields(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&gt;&nbsp;types,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;parameterizedType,\n                                   boolean&nbsp;allowSubtype)</pre>\n</li>\n</ul>\n<a name=\"getFieldNames-java.lang.Class-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFieldNames</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;getFieldNames(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz)</pre>\n<div class=\"block\">Returns a set of names of all fields in the given class.\n If the class is not found, returns an empty set.</div>\n</li>\n</ul>\n<a name=\"getFieldTypes-java.lang.Class-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFieldTypes</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&gt;&nbsp;getFieldTypes(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz)</pre>\n<div class=\"block\">Returns a set of types of all fields in the given class.\n If the class is not found, returns an empty set.</div>\n</li>\n</ul>\n<a name=\"getFirstClassPathFolder--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFirstClassPathFolder</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getFirstClassPathFolder()</pre>\n</li>\n</ul>\n<a name=\"getNonPrivateFieldNames-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getNonPrivateFieldNames</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;getNonPrivateFieldNames(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className)</pre>\n<div class=\"block\">Returns a set of names of all fields in class with the given name that are not private.\n If the class name is not found, returns an empty set.\n If class name is null, throws a NullPointerException.</div>\n</li>\n</ul>\n<a name=\"getNonPrivateFieldNames-java.lang.String-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getNonPrivateFieldNames</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;getNonPrivateFieldNames(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className,\n                                                  boolean&nbsp;allowProtected)</pre>\n</li>\n</ul>\n<a name=\"getNonPrivateFieldNames-java.lang.Class-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getNonPrivateFieldNames</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;getNonPrivateFieldNames(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz)</pre>\n<div class=\"block\">Returns a set of names of all fields in the given class that are not private.\n If class is null, throws a NullPointerException.</div>\n</li>\n</ul>\n<a name=\"getNonPrivateFieldNames-java.lang.Class-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getNonPrivateFieldNames</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;getNonPrivateFieldNames(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                                                  boolean&nbsp;allowProtected)</pre>\n</li>\n</ul>\n<a name=\"getNonPrivateMethodNames-java.lang.Class-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getNonPrivateMethodNames</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;getNonPrivateMethodNames(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz)</pre>\n</li>\n</ul>\n<a name=\"getNonPrivateMethodNames-java.lang.Class-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getNonPrivateMethodNames</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;getNonPrivateMethodNames(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                                                   boolean&nbsp;allowProtected)</pre>\n<div class=\"block\">Returns a set of names of all methods in the given class that are not private.\n If class is null, throws a NullPointerException.</div>\n</li>\n</ul>\n<a name=\"getNonPrivateMethods-java.lang.Class-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getNonPrivateMethods</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Method</a>&gt;&nbsp;getNonPrivateMethods(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz)</pre>\n<div class=\"block\">Returns a set of names of all methods in the given class that are not private.\n If class is null, throws a NullPointerException.</div>\n</li>\n</ul>\n<a name=\"getNonPrivateConstructors-java.lang.Class-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getNonPrivateConstructors</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Constructor.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Constructor</a>&lt;?&gt;&gt;&nbsp;getNonPrivateConstructors(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz)</pre>\n<div class=\"block\">Returns a set of names of all methods in the given class that are not private.\n If class is null, throws a NullPointerException.</div>\n</li>\n</ul>\n<a name=\"getMethodNames-java.lang.Class-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getMethodNames</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;getMethodNames(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz)</pre>\n<div class=\"block\">Returns a set of names of all methods in the given class.\n If class is null, throws a NullPointerException.</div>\n</li>\n</ul>\n<a name=\"isInnerClass-java.lang.Class-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isInnerClass</h4>\n<pre>public static&nbsp;boolean&nbsp;isInnerClass(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz)</pre>\n</li>\n</ul>\n<a name=\"isInnerClass-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isInnerClass</h4>\n<pre>public static&nbsp;boolean&nbsp;isInnerClass(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className)</pre>\n</li>\n</ul>\n<a name=\"writeAndCompile-java.lang.String-java.lang.String-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>writeAndCompile</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;writeAndCompile(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fileText,\n                                     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className,\n                                     boolean&nbsp;useTempFolder)\n                              throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a>,\n                                     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true\" title=\"class or interface in java.lang\">ClassNotFoundException</a>,\n                                     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NoSuchMethodException.html?is-external=true\" title=\"class or interface in java.lang\">NoSuchMethodException</a>,\n                                     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalAccessException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalAccessException</a>,\n                                     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/InvocationTargetException.html?is-external=true\" title=\"class or interface in java.lang.reflect\">InvocationTargetException</a></pre>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true\" title=\"class or interface in java.lang\">ClassNotFoundException</a></code></dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NoSuchMethodException.html?is-external=true\" title=\"class or interface in java.lang\">NoSuchMethodException</a></code></dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalAccessException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalAccessException</a></code></dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/InvocationTargetException.html?is-external=true\" title=\"class or interface in java.lang.reflect\">InvocationTargetException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"writeAndLoadClass-java.lang.String-java.lang.String-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>writeAndLoadClass</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;writeAndLoadClass(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fileText,\n                                         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className,\n                                         boolean&nbsp;useTempFolder)\n                                  throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a>,\n                                         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true\" title=\"class or interface in java.lang\">ClassNotFoundException</a>,\n                                         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalAccessException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalAccessException</a>,\n                                         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/InvocationTargetException.html?is-external=true\" title=\"class or interface in java.lang.reflect\">InvocationTargetException</a>,\n                                         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NoSuchMethodException.html?is-external=true\" title=\"class or interface in java.lang\">NoSuchMethodException</a></pre>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true\" title=\"class or interface in java.lang\">ClassNotFoundException</a></code></dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalAccessException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalAccessException</a></code></dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/InvocationTargetException.html?is-external=true\" title=\"class or interface in java.lang.reflect\">InvocationTargetException</a></code></dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NoSuchMethodException.html?is-external=true\" title=\"class or interface in java.lang\">NoSuchMethodException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"compile-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>compile</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;compile(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fileName)\n                      throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true\" title=\"class or interface in java.lang\">ClassNotFoundException</a>,\n                             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NoSuchMethodException.html?is-external=true\" title=\"class or interface in java.lang\">NoSuchMethodException</a>,\n                             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalAccessException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalAccessException</a>,\n                             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/InvocationTargetException.html?is-external=true\" title=\"class or interface in java.lang.reflect\">InvocationTargetException</a></pre>\n<div class=\"block\">Compiles the .java source file with the given file name,\n and returns the file name of the newly compiled .class file.\n Throws a CompilerErrorException if the compilation fails.</div>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true\" title=\"class or interface in java.lang\">ClassNotFoundException</a></code></dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NoSuchMethodException.html?is-external=true\" title=\"class or interface in java.lang\">NoSuchMethodException</a></code></dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalAccessException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalAccessException</a></code></dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/InvocationTargetException.html?is-external=true\" title=\"class or interface in java.lang.reflect\">InvocationTargetException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getClasses-java.lang.Class-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getClasses</h4>\n<pre>public static&nbsp;&lt;T&gt;&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;? extends T&gt;&gt;&nbsp;getClasses(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;T&gt;&nbsp;superClass,\n                                                      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;folderName)</pre>\n</li>\n</ul>\n<a name=\"classImplements-java.lang.Class-java.lang.Class-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>classImplements</h4>\n<pre>public static&nbsp;boolean&nbsp;classImplements(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                                      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;interfaceType)</pre>\n</li>\n</ul>\n<a name=\"loadClass-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>loadClass</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;loadClass(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fileName)\n                          throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true\" title=\"class or interface in java.lang\">ClassNotFoundException</a></pre>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true\" title=\"class or interface in java.lang\">ClassNotFoundException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"readAndRename-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readAndRename</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;readAndRename(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;oldClassName,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;newClassName)\n                            throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"readAndRename-java.lang.String-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readAndRename</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;readAndRename(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fileName,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;oldClassName,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;newClassName)\n                            throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"renameAndWriteJavaFile-java.lang.String-java.lang.String-java.lang.String-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>renameAndWriteJavaFile</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;renameAndWriteJavaFile(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fileText,\n                                            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;oldClassName,\n                                            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;newClassName,\n                                            boolean&nbsp;useTempFolder)</pre>\n</li>\n</ul>\n<a name=\"sanitizeClassName-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>sanitizeClassName</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;sanitizeClassName(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</pre>\n</li>\n</ul>\n<a name=\"stripPackages-java.lang.Class-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>stripPackages</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;stripPackages(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz)</pre>\n</li>\n</ul>\n<a name=\"stripPackages-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>stripPackages</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;stripPackages(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className)</pre>\n</li>\n</ul>\n<a name=\"reflectionEquals-java.lang.Object-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>reflectionEquals</h4>\n<pre>public static&nbsp;boolean&nbsp;reflectionEquals(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;o1,\n                                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;o2)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Class</li>\n<li><a href=\"../../../stanford/cs106/reflect/ClassUtils.BetterClassLoader.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/reflect/ClassUtils.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ClassUtils.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.class.summary\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/reflect/CompilerErrorException.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>CompilerErrorException</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"CompilerErrorException\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/reflect/ClassUtils.ExtensionFilter.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/reflect/ReflectionRuntimeException.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/reflect/CompilerErrorException.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"CompilerErrorException.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#methods.inherited.from.class.java.lang.Throwable\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li>Method</li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.reflect</div>\n<h2 title=\"Class CompilerErrorException\" class=\"title\">Class CompilerErrorException</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Throwable</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Exception</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.RuntimeException</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.reflect.CompilerErrorException</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">CompilerErrorException</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.html?is-external=true\" title=\"class or interface in java.lang\">RuntimeException</a></pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../serialized-form.html#stanford.cs106.reflect.CompilerErrorException\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/CompilerErrorException.html#CompilerErrorException-java.lang.String-\">CompilerErrorException</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Throwable\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#addSuppressed-java.lang.Throwable-\" title=\"class or interface in java.lang\">addSuppressed</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#fillInStackTrace--\" title=\"class or interface in java.lang\">fillInStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getCause--\" title=\"class or interface in java.lang\">getCause</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getLocalizedMessage--\" title=\"class or interface in java.lang\">getLocalizedMessage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getMessage--\" title=\"class or interface in java.lang\">getMessage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getStackTrace--\" title=\"class or interface in java.lang\">getStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getSuppressed--\" title=\"class or interface in java.lang\">getSuppressed</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#initCause-java.lang.Throwable-\" title=\"class or interface in java.lang\">initCause</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#printStackTrace--\" title=\"class or interface in java.lang\">printStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#printStackTrace-java.io.PrintStream-\" title=\"class or interface in java.lang\">printStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#printStackTrace-java.io.PrintWriter-\" title=\"class or interface in java.lang\">printStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#setStackTrace-java.lang.StackTraceElement:A-\" title=\"class or interface in java.lang\">setStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"CompilerErrorException-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>CompilerErrorException</h4>\n<pre>public&nbsp;CompilerErrorException(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/reflect/ClassUtils.ExtensionFilter.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/reflect/ReflectionRuntimeException.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/reflect/CompilerErrorException.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"CompilerErrorException.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#methods.inherited.from.class.java.lang.Throwable\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li>Method</li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/reflect/ReflectionRuntimeException.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:13 PDT 2017 -->\n<title>ReflectionRuntimeException</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"ReflectionRuntimeException\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/reflect/CompilerErrorException.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/reflect/ReflectionRuntimeException.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ReflectionRuntimeException.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#methods.inherited.from.class.java.lang.Throwable\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li>Method</li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.reflect</div>\n<h2 title=\"Class ReflectionRuntimeException\" class=\"title\">Class ReflectionRuntimeException</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Throwable</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Exception</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.RuntimeException</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.reflect.ReflectionRuntimeException</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">ReflectionRuntimeException</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.html?is-external=true\" title=\"class or interface in java.lang\">RuntimeException</a></pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../serialized-form.html#stanford.cs106.reflect.ReflectionRuntimeException\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionRuntimeException.html#ReflectionRuntimeException-java.lang.String-\">ReflectionRuntimeException</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionRuntimeException.html#ReflectionRuntimeException-java.lang.String-java.lang.Throwable-\">ReflectionRuntimeException</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s,\n                          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;t)</code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionRuntimeException.html#ReflectionRuntimeException-java.lang.Throwable-\">ReflectionRuntimeException</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;t)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Throwable\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#addSuppressed-java.lang.Throwable-\" title=\"class or interface in java.lang\">addSuppressed</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#fillInStackTrace--\" title=\"class or interface in java.lang\">fillInStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getCause--\" title=\"class or interface in java.lang\">getCause</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getLocalizedMessage--\" title=\"class or interface in java.lang\">getLocalizedMessage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getMessage--\" title=\"class or interface in java.lang\">getMessage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getStackTrace--\" title=\"class or interface in java.lang\">getStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getSuppressed--\" title=\"class or interface in java.lang\">getSuppressed</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#initCause-java.lang.Throwable-\" title=\"class or interface in java.lang\">initCause</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#printStackTrace--\" title=\"class or interface in java.lang\">printStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#printStackTrace-java.io.PrintStream-\" title=\"class or interface in java.lang\">printStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#printStackTrace-java.io.PrintWriter-\" title=\"class or interface in java.lang\">printStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#setStackTrace-java.lang.StackTraceElement:A-\" title=\"class or interface in java.lang\">setStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"ReflectionRuntimeException-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>ReflectionRuntimeException</h4>\n<pre>public&nbsp;ReflectionRuntimeException(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n</li>\n</ul>\n<a name=\"ReflectionRuntimeException-java.lang.String-java.lang.Throwable-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>ReflectionRuntimeException</h4>\n<pre>public&nbsp;ReflectionRuntimeException(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s,\n                                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;t)</pre>\n</li>\n</ul>\n<a name=\"ReflectionRuntimeException-java.lang.Throwable-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>ReflectionRuntimeException</h4>\n<pre>public&nbsp;ReflectionRuntimeException(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;t)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/reflect/CompilerErrorException.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/reflect/ReflectionRuntimeException.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ReflectionRuntimeException.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#methods.inherited.from.class.java.lang.Throwable\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li>Method</li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/reflect/ReflectionUtils.FieldNameComparator.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>ReflectionUtils.FieldNameComparator</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"ReflectionUtils.FieldNameComparator\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.MethodNameComparator.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/reflect/ReflectionUtils.FieldNameComparator.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ReflectionUtils.FieldNameComparator.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.reflect</div>\n<h2 title=\"Class ReflectionUtils.FieldNameComparator\" class=\"title\">Class ReflectionUtils.FieldNameComparator</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.reflect.ReflectionUtils.FieldNameComparator</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true\" title=\"class or interface in java.util\">Comparator</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Field</a>&gt;</dd>\n</dl>\n<dl>\n<dt>Enclosing class:</dt>\n<dd><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public static class <span class=\"typeNameLabel\">ReflectionUtils.FieldNameComparator</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>\nimplements <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true\" title=\"class or interface in java.util\">Comparator</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Field</a>&gt;</pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.FieldNameComparator.html#FieldNameComparator--\">FieldNameComparator</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.FieldNameComparator.html#compare-java.lang.reflect.Field-java.lang.reflect.Field-\">compare</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Field</a>&nbsp;arg0,\n       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Field</a>&nbsp;arg1)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.util.Comparator\">\n<!--   -->\n</a>\n<h3>Methods inherited from interface&nbsp;java.util.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true\" title=\"class or interface in java.util\">Comparator</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#comparing-java.util.function.Function-\" title=\"class or interface in java.util\">comparing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#comparing-java.util.function.Function-java.util.Comparator-\" title=\"class or interface in java.util\">comparing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#comparingDouble-java.util.function.ToDoubleFunction-\" title=\"class or interface in java.util\">comparingDouble</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#comparingInt-java.util.function.ToIntFunction-\" title=\"class or interface in java.util\">comparingInt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#comparingLong-java.util.function.ToLongFunction-\" title=\"class or interface in java.util\">comparingLong</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.util\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#naturalOrder--\" title=\"class or interface in java.util\">naturalOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#nullsFirst-java.util.Comparator-\" title=\"class or interface in java.util\">nullsFirst</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#nullsLast-java.util.Comparator-\" title=\"class or interface in java.util\">nullsLast</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#reversed--\" title=\"class or interface in java.util\">reversed</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#reverseOrder--\" title=\"class or interface in java.util\">reverseOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#thenComparing-java.util.Comparator-\" title=\"class or interface in java.util\">thenComparing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#thenComparing-java.util.function.Function-\" title=\"class or interface in java.util\">thenComparing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#thenComparing-java.util.function.Function-java.util.Comparator-\" title=\"class or interface in java.util\">thenComparing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#thenComparingDouble-java.util.function.ToDoubleFunction-\" title=\"class or interface in java.util\">thenComparingDouble</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#thenComparingInt-java.util.function.ToIntFunction-\" title=\"class or interface in java.util\">thenComparingInt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#thenComparingLong-java.util.function.ToLongFunction-\" title=\"class or interface in java.util\">thenComparingLong</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"FieldNameComparator--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>FieldNameComparator</h4>\n<pre>public&nbsp;FieldNameComparator()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"compare-java.lang.reflect.Field-java.lang.reflect.Field-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>compare</h4>\n<pre>public&nbsp;int&nbsp;compare(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Field</a>&nbsp;arg0,\n                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Field</a>&nbsp;arg1)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#compare-T-T-\" title=\"class or interface in java.util\">compare</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true\" title=\"class or interface in java.util\">Comparator</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Field</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.MethodNameComparator.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/reflect/ReflectionUtils.FieldNameComparator.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ReflectionUtils.FieldNameComparator.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/reflect/ReflectionUtils.MethodNameComparator.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>ReflectionUtils.MethodNameComparator</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"ReflectionUtils.MethodNameComparator\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.FieldNameComparator.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li>Next&nbsp;Class</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/reflect/ReflectionUtils.MethodNameComparator.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ReflectionUtils.MethodNameComparator.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.reflect</div>\n<h2 title=\"Class ReflectionUtils.MethodNameComparator\" class=\"title\">Class ReflectionUtils.MethodNameComparator</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.reflect.ReflectionUtils.MethodNameComparator</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true\" title=\"class or interface in java.util\">Comparator</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Method</a>&gt;</dd>\n</dl>\n<dl>\n<dt>Enclosing class:</dt>\n<dd><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public static class <span class=\"typeNameLabel\">ReflectionUtils.MethodNameComparator</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>\nimplements <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true\" title=\"class or interface in java.util\">Comparator</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Method</a>&gt;</pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.MethodNameComparator.html#MethodNameComparator--\">MethodNameComparator</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.MethodNameComparator.html#compare-java.lang.reflect.Method-java.lang.reflect.Method-\">compare</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Method</a>&nbsp;arg0,\n       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Method</a>&nbsp;arg1)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.util.Comparator\">\n<!--   -->\n</a>\n<h3>Methods inherited from interface&nbsp;java.util.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true\" title=\"class or interface in java.util\">Comparator</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#comparing-java.util.function.Function-\" title=\"class or interface in java.util\">comparing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#comparing-java.util.function.Function-java.util.Comparator-\" title=\"class or interface in java.util\">comparing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#comparingDouble-java.util.function.ToDoubleFunction-\" title=\"class or interface in java.util\">comparingDouble</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#comparingInt-java.util.function.ToIntFunction-\" title=\"class or interface in java.util\">comparingInt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#comparingLong-java.util.function.ToLongFunction-\" title=\"class or interface in java.util\">comparingLong</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.util\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#naturalOrder--\" title=\"class or interface in java.util\">naturalOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#nullsFirst-java.util.Comparator-\" title=\"class or interface in java.util\">nullsFirst</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#nullsLast-java.util.Comparator-\" title=\"class or interface in java.util\">nullsLast</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#reversed--\" title=\"class or interface in java.util\">reversed</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#reverseOrder--\" title=\"class or interface in java.util\">reverseOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#thenComparing-java.util.Comparator-\" title=\"class or interface in java.util\">thenComparing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#thenComparing-java.util.function.Function-\" title=\"class or interface in java.util\">thenComparing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#thenComparing-java.util.function.Function-java.util.Comparator-\" title=\"class or interface in java.util\">thenComparing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#thenComparingDouble-java.util.function.ToDoubleFunction-\" title=\"class or interface in java.util\">thenComparingDouble</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#thenComparingInt-java.util.function.ToIntFunction-\" title=\"class or interface in java.util\">thenComparingInt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#thenComparingLong-java.util.function.ToLongFunction-\" title=\"class or interface in java.util\">thenComparingLong</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"MethodNameComparator--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>MethodNameComparator</h4>\n<pre>public&nbsp;MethodNameComparator()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"compare-java.lang.reflect.Method-java.lang.reflect.Method-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>compare</h4>\n<pre>public&nbsp;int&nbsp;compare(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Method</a>&nbsp;arg0,\n                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Method</a>&nbsp;arg1)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true#compare-T-T-\" title=\"class or interface in java.util\">compare</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true\" title=\"class or interface in java.util\">Comparator</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Method</a>&gt;</code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.FieldNameComparator.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li>Next&nbsp;Class</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/reflect/ReflectionUtils.MethodNameComparator.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ReflectionUtils.MethodNameComparator.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/reflect/ReflectionUtils.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>ReflectionUtils</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"ReflectionUtils\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9,\"i2\":9,\"i3\":9,\"i4\":9,\"i5\":9,\"i6\":9,\"i7\":9,\"i8\":9,\"i9\":9,\"i10\":9,\"i11\":9,\"i12\":9,\"i13\":9,\"i14\":9,\"i15\":9,\"i16\":9,\"i17\":9,\"i18\":9,\"i19\":9,\"i20\":9,\"i21\":9,\"i22\":9,\"i23\":9,\"i24\":9,\"i25\":9,\"i26\":9,\"i27\":9,\"i28\":9,\"i29\":9,\"i30\":9,\"i31\":9,\"i32\":9,\"i33\":9,\"i34\":9,\"i35\":9,\"i36\":9,\"i37\":9,\"i38\":9,\"i39\":9,\"i40\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/reflect/ReflectionRuntimeException.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.FieldNameComparator.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/reflect/ReflectionUtils.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ReflectionUtils.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.class.summary\">Nested</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.reflect</div>\n<h2 title=\"Class ReflectionUtils\" class=\"title\">Class ReflectionUtils</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.reflect.ReflectionUtils</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">ReflectionUtils</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Nested Class Summary table, listing nested classes, and an explanation\">\n<caption><span>Nested Classes</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Class and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static class&nbsp;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.FieldNameComparator.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils.FieldNameComparator</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static class&nbsp;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.MethodNameComparator.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils.MethodNameComparator</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#ReflectionUtils--\">ReflectionUtils</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#classForName-java.lang.String-\">classForName</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#constantExists-java.lang.Class-java.lang.String-\">constantExists</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constantNameRegex)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#constantExists-java.lang.String-java.lang.String-\">constantExists</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constantNameRegex)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#getClassNameWithoutPackage-java.lang.Class-\">getClassNameWithoutPackage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz)</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#getClassNameWithoutPackage-java.lang.Class-java.lang.reflect.Type-\">getClassNameWithoutPackage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Type.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Type</a>&nbsp;genericType)</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#getClassNameWithoutPackage-java.lang.String-\">getClassNameWithoutPackage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className)</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#getConstantValue-java.lang.Class-java.lang.Object-java.lang.String-\">getConstantValue</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj,\n                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constantNameRegex)</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#getConstantValue-java.lang.Class-java.lang.String-\">getConstantValue</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constantNameRegex)</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#getConstantValue-java.lang.String-java.lang.String-\">getConstantValue</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className,\n                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constantNameRegex)</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#getConstantValueBoolean-java.lang.Class-java.lang.Object-java.lang.String-\">getConstantValueBoolean</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj,\n                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constantNameRegex)</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#getConstantValueBoolean-java.lang.Class-java.lang.String-\">getConstantValueBoolean</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constantNameRegex)</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#getConstantValueBoolean-java.lang.String-java.lang.String-\">getConstantValueBoolean</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className,\n                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constantNameRegex)</code>&nbsp;</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>static double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#getConstantValueDouble-java.lang.Class-java.lang.Object-java.lang.String-\">getConstantValueDouble</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj,\n                      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constantNameRegex)</code>&nbsp;</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#getConstantValueDouble-java.lang.Class-java.lang.String-\">getConstantValueDouble</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constantNameRegex)</code>&nbsp;</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>static double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#getConstantValueDouble-java.lang.String-java.lang.String-\">getConstantValueDouble</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className,\n                      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constantNameRegex)</code>&nbsp;</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#getConstantValueInt-java.lang.Class-java.lang.Object-java.lang.String-\">getConstantValueInt</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj,\n                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constantNameRegex)</code>&nbsp;</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#getConstantValueInt-java.lang.Class-java.lang.String-\">getConstantValueInt</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constantNameRegex)</code>&nbsp;</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#getConstantValueInt-java.lang.String-java.lang.String-\">getConstantValueInt</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className,\n                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constantNameRegex)</code>&nbsp;</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#getDefaultArgs-java.lang.reflect.Method-\">getDefaultArgs</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Method</a>&nbsp;method)</code>&nbsp;</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#getDefaultValue-java.lang.Class-\">getDefaultValue</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;type)</code>&nbsp;</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Field</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#getField-java.lang.Class-java.lang.String-\">getField</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fieldName)</code>&nbsp;</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Field</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#getField-java.lang.Class-java.lang.String-boolean-\">getField</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fieldName,\n        boolean&nbsp;checkSuperclasses)</code>&nbsp;</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Field</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#getFieldToMatchRegex-java.lang.Class-java.lang.String-\">getFieldToMatchRegex</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constantNameRegex)</code>&nbsp;</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Field</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#getFieldToMatchRegex-java.lang.Class-java.lang.String-boolean-\">getFieldToMatchRegex</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constantNameRegex,\n                    boolean&nbsp;includeSuperclasses)</code>&nbsp;</td>\n</tr>\n<tr id=\"i24\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#getFieldValue-java.lang.Object-java.lang.reflect.Field-\">getFieldValue</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj,\n             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Field</a>&nbsp;field)</code>&nbsp;</td>\n</tr>\n<tr id=\"i25\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#getFieldValue-java.lang.Object-java.lang.String-\">getFieldValue</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj,\n             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>&nbsp;</td>\n</tr>\n<tr id=\"i26\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#getFirstFieldValueOfType-java.lang.Class-java.lang.Object-java.lang.Class-\">getFirstFieldValueOfType</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj,\n                        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;fieldType)</code>&nbsp;</td>\n</tr>\n<tr id=\"i27\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Method</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#getMethod-java.lang.Class-java.lang.String-\">getMethod</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;methodName)</code>&nbsp;</td>\n</tr>\n<tr id=\"i28\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#methodInvoke-java.lang.Class-java.lang.Object-java.lang.String-java.lang.Object...-\">methodInvoke</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;methodName,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>...&nbsp;params)</code>&nbsp;</td>\n</tr>\n<tr id=\"i29\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#methodInvoke-java.lang.String-java.lang.Object-java.lang.String-java.lang.Object...-\">methodInvoke</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;methodName,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>...&nbsp;params)</code>&nbsp;</td>\n</tr>\n<tr id=\"i30\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#parseValue-java.lang.Class-java.lang.String-\">parseValue</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;type,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i31\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#parseValue-java.lang.Class-java.lang.reflect.Type-java.lang.String-\">parseValue</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;type,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Type.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Type</a>&nbsp;genericType,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i32\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#primitiveFor-java.lang.Class-\">primitiveFor</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz)</code>&nbsp;</td>\n</tr>\n<tr id=\"i33\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#setConstantValue-java.lang.Class-java.lang.Object-java.lang.String-java.lang.Object-\">setConstantValue</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj,\n                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constantNameRegex,\n                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i34\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#setConstantValue-java.lang.Class-java.lang.String-java.lang.Object-\">setConstantValue</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constantNameRegex,\n                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i35\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#setConstantValue-java.lang.String-java.lang.String-java.lang.Object-\">setConstantValue</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className,\n                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constantNameRegex,\n                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i36\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#setFieldValue-java.lang.Class-java.lang.String-java.lang.Object-\">setFieldValue</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i37\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#setFieldValue-java.lang.Object-java.lang.reflect.Field-java.lang.Object-\">setFieldValue</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj,\n             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Field</a>&nbsp;field,\n             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i38\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#staticMethodInvoke-java.lang.Class-java.lang.String-java.lang.Object...-\">staticMethodInvoke</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;methodName,\n                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>...&nbsp;params)</code>&nbsp;</td>\n</tr>\n<tr id=\"i39\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#staticMethodInvoke-java.lang.String-java.lang.String-java.lang.Object...-\">staticMethodInvoke</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className,\n                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;methodName,\n                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>...&nbsp;params)</code>&nbsp;</td>\n</tr>\n<tr id=\"i40\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html#toStringViaReflection-java.lang.Object-\">toStringViaReflection</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;o)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"ReflectionUtils--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>ReflectionUtils</h4>\n<pre>public&nbsp;ReflectionUtils()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"getClassNameWithoutPackage-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getClassNameWithoutPackage</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getClassNameWithoutPackage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className)</pre>\n</li>\n</ul>\n<a name=\"getClassNameWithoutPackage-java.lang.Class-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getClassNameWithoutPackage</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getClassNameWithoutPackage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz)</pre>\n</li>\n</ul>\n<a name=\"getClassNameWithoutPackage-java.lang.Class-java.lang.reflect.Type-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getClassNameWithoutPackage</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getClassNameWithoutPackage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                                                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Type.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Type</a>&nbsp;genericType)</pre>\n</li>\n</ul>\n<a name=\"constantExists-java.lang.Class-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>constantExists</h4>\n<pre>public static&nbsp;boolean&nbsp;constantExists(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                                     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constantNameRegex)</pre>\n</li>\n</ul>\n<a name=\"constantExists-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>constantExists</h4>\n<pre>public static&nbsp;boolean&nbsp;constantExists(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className,\n                                     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constantNameRegex)</pre>\n</li>\n</ul>\n<a name=\"getConstantValue-java.lang.Class-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getConstantValue</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;getConstantValue(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                                      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constantNameRegex)</pre>\n</li>\n</ul>\n<a name=\"getConstantValue-java.lang.Class-java.lang.Object-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getConstantValue</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;getConstantValue(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                                      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj,\n                                      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constantNameRegex)</pre>\n</li>\n</ul>\n<a name=\"getConstantValue-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getConstantValue</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;getConstantValue(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className,\n                                      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constantNameRegex)</pre>\n</li>\n</ul>\n<a name=\"getConstantValueDouble-java.lang.Class-java.lang.Object-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getConstantValueDouble</h4>\n<pre>public static&nbsp;double&nbsp;getConstantValueDouble(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                                            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj,\n                                            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constantNameRegex)</pre>\n</li>\n</ul>\n<a name=\"getConstantValueDouble-java.lang.Class-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getConstantValueDouble</h4>\n<pre>public static&nbsp;double&nbsp;getConstantValueDouble(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                                            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constantNameRegex)</pre>\n</li>\n</ul>\n<a name=\"getConstantValueDouble-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getConstantValueDouble</h4>\n<pre>public static&nbsp;double&nbsp;getConstantValueDouble(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className,\n                                            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constantNameRegex)</pre>\n</li>\n</ul>\n<a name=\"getConstantValueInt-java.lang.Class-java.lang.Object-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getConstantValueInt</h4>\n<pre>public static&nbsp;int&nbsp;getConstantValueInt(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                                      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj,\n                                      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constantNameRegex)</pre>\n</li>\n</ul>\n<a name=\"getConstantValueInt-java.lang.Class-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getConstantValueInt</h4>\n<pre>public static&nbsp;int&nbsp;getConstantValueInt(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                                      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constantNameRegex)</pre>\n</li>\n</ul>\n<a name=\"getConstantValueInt-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getConstantValueInt</h4>\n<pre>public static&nbsp;int&nbsp;getConstantValueInt(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className,\n                                      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constantNameRegex)</pre>\n</li>\n</ul>\n<a name=\"getConstantValueBoolean-java.lang.Class-java.lang.Object-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getConstantValueBoolean</h4>\n<pre>public static&nbsp;boolean&nbsp;getConstantValueBoolean(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                                              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj,\n                                              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constantNameRegex)</pre>\n</li>\n</ul>\n<a name=\"getConstantValueBoolean-java.lang.Class-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getConstantValueBoolean</h4>\n<pre>public static&nbsp;boolean&nbsp;getConstantValueBoolean(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                                              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constantNameRegex)</pre>\n</li>\n</ul>\n<a name=\"getConstantValueBoolean-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getConstantValueBoolean</h4>\n<pre>public static&nbsp;boolean&nbsp;getConstantValueBoolean(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className,\n                                              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constantNameRegex)</pre>\n</li>\n</ul>\n<a name=\"getFieldToMatchRegex-java.lang.Class-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFieldToMatchRegex</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Field</a>&nbsp;getFieldToMatchRegex(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                                         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constantNameRegex)</pre>\n</li>\n</ul>\n<a name=\"getFieldToMatchRegex-java.lang.Class-java.lang.String-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFieldToMatchRegex</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Field</a>&nbsp;getFieldToMatchRegex(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                                         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constantNameRegex,\n                                         boolean&nbsp;includeSuperclasses)</pre>\n</li>\n</ul>\n<a name=\"setConstantValue-java.lang.Class-java.lang.String-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setConstantValue</h4>\n<pre>public static&nbsp;void&nbsp;setConstantValue(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constantNameRegex,\n                                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"setConstantValue-java.lang.Class-java.lang.Object-java.lang.String-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setConstantValue</h4>\n<pre>public static&nbsp;void&nbsp;setConstantValue(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj,\n                                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constantNameRegex,\n                                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"setConstantValue-java.lang.String-java.lang.String-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setConstantValue</h4>\n<pre>public static&nbsp;void&nbsp;setConstantValue(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className,\n                                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;constantNameRegex,\n                                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"getDefaultArgs-java.lang.reflect.Method-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getDefaultArgs</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>[]&nbsp;getDefaultArgs(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Method</a>&nbsp;method)</pre>\n</li>\n</ul>\n<a name=\"getDefaultValue-java.lang.Class-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getDefaultValue</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;getDefaultValue(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;type)</pre>\n</li>\n</ul>\n<a name=\"getFirstFieldValueOfType-java.lang.Class-java.lang.Object-java.lang.Class-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFirstFieldValueOfType</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;getFirstFieldValueOfType(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                                              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj,\n                                              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;fieldType)</pre>\n</li>\n</ul>\n<a name=\"getFieldValue-java.lang.Object-java.lang.reflect.Field-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFieldValue</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;getFieldValue(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Field</a>&nbsp;field)</pre>\n</li>\n</ul>\n<a name=\"getFieldValue-java.lang.Object-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFieldValue</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;getFieldValue(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n</li>\n</ul>\n<a name=\"parseValue-java.lang.Class-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>parseValue</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;parseValue(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;type,\n                                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"parseValue-java.lang.Class-java.lang.reflect.Type-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>parseValue</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;parseValue(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;type,\n                                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Type.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Type</a>&nbsp;genericType,\n                                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"setFieldValue-java.lang.Class-java.lang.String-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setFieldValue</h4>\n<pre>public static&nbsp;void&nbsp;setFieldValue(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n                                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"setFieldValue-java.lang.Object-java.lang.reflect.Field-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setFieldValue</h4>\n<pre>public static&nbsp;void&nbsp;setFieldValue(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj,\n                                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Field</a>&nbsp;field,\n                                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"classForName-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>classForName</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;classForName(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className)</pre>\n</li>\n</ul>\n<a name=\"staticMethodInvoke-java.lang.String-java.lang.String-java.lang.Object...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>staticMethodInvoke</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;staticMethodInvoke(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className,\n                                        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;methodName,\n                                        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>...&nbsp;params)</pre>\n</li>\n</ul>\n<a name=\"staticMethodInvoke-java.lang.Class-java.lang.String-java.lang.Object...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>staticMethodInvoke</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;staticMethodInvoke(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                                        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;methodName,\n                                        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>...&nbsp;params)</pre>\n</li>\n</ul>\n<a name=\"methodInvoke-java.lang.String-java.lang.Object-java.lang.String-java.lang.Object...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>methodInvoke</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;methodInvoke(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className,\n                                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj,\n                                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;methodName,\n                                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>...&nbsp;params)</pre>\n</li>\n</ul>\n<a name=\"methodInvoke-java.lang.Class-java.lang.Object-java.lang.String-java.lang.Object...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>methodInvoke</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;methodInvoke(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj,\n                                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;methodName,\n                                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>...&nbsp;params)</pre>\n</li>\n</ul>\n<a name=\"getMethod-java.lang.Class-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getMethod</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Method</a>&nbsp;getMethod(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;methodName)</pre>\n</li>\n</ul>\n<a name=\"getField-java.lang.Class-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getField</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Field</a>&nbsp;getField(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fieldName)</pre>\n</li>\n</ul>\n<a name=\"getField-java.lang.Class-java.lang.String-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getField</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html?is-external=true\" title=\"class or interface in java.lang.reflect\">Field</a>&nbsp;getField(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz,\n                             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fieldName,\n                             boolean&nbsp;checkSuperclasses)</pre>\n</li>\n</ul>\n<a name=\"primitiveFor-java.lang.Class-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>primitiveFor</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;primitiveFor(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true\" title=\"class or interface in java.lang\">Class</a>&lt;?&gt;&nbsp;clazz)</pre>\n</li>\n</ul>\n<a name=\"toStringViaReflection-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>toStringViaReflection</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;toStringViaReflection(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;o)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/reflect/ReflectionRuntimeException.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.FieldNameComparator.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/reflect/ReflectionUtils.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ReflectionUtils.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.class.summary\">Nested</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/reflect/package-frame.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>stanford.cs106.reflect</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<h1 class=\"bar\"><a href=\"../../../stanford/cs106/reflect/package-summary.html\" target=\"classFrame\">stanford.cs106.reflect</a></h1>\n<div class=\"indexContainer\">\n<h2 title=\"Classes\">Classes</h2>\n<ul title=\"Classes\">\n<li><a href=\"ClassUtils.html\" title=\"class in stanford.cs106.reflect\" target=\"classFrame\">ClassUtils</a></li>\n<li><a href=\"ClassUtils.BetterClassLoader.html\" title=\"class in stanford.cs106.reflect\" target=\"classFrame\">ClassUtils.BetterClassLoader</a></li>\n<li><a href=\"ClassUtils.ClassComparator.html\" title=\"class in stanford.cs106.reflect\" target=\"classFrame\">ClassUtils.ClassComparator</a></li>\n<li><a href=\"ClassUtils.ExtensionFilter.html\" title=\"class in stanford.cs106.reflect\" target=\"classFrame\">ClassUtils.ExtensionFilter</a></li>\n<li><a href=\"ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\" target=\"classFrame\">ReflectionUtils</a></li>\n<li><a href=\"ReflectionUtils.FieldNameComparator.html\" title=\"class in stanford.cs106.reflect\" target=\"classFrame\">ReflectionUtils.FieldNameComparator</a></li>\n<li><a href=\"ReflectionUtils.MethodNameComparator.html\" title=\"class in stanford.cs106.reflect\" target=\"classFrame\">ReflectionUtils.MethodNameComparator</a></li>\n</ul>\n<h2 title=\"Exceptions\">Exceptions</h2>\n<ul title=\"Exceptions\">\n<li><a href=\"CompilerErrorException.html\" title=\"class in stanford.cs106.reflect\" target=\"classFrame\">CompilerErrorException</a></li>\n<li><a href=\"ReflectionRuntimeException.html\" title=\"class in stanford.cs106.reflect\" target=\"classFrame\">ReflectionRuntimeException</a></li>\n</ul>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/reflect/package-summary.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>stanford.cs106.reflect</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"stanford.cs106.reflect\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li class=\"navBarCell1Rev\">Package</li>\n<li>Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/net/package-summary.html\">Prev&nbsp;Package</a></li>\n<li><a href=\"../../../stanford/cs106/util/package-summary.html\">Next&nbsp;Package</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/reflect/package-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 title=\"Package\" class=\"title\">Package&nbsp;stanford.cs106.reflect</h1>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Class Summary table, listing classes, and an explanation\">\n<caption><span>Class Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Class</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\">ClassUtils</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.BetterClassLoader.html\" title=\"class in stanford.cs106.reflect\">ClassUtils.BetterClassLoader</a></td>\n<td class=\"colLast\">\n<div class=\"block\">Loads classes from files on the server's hard disk.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.ClassComparator.html\" title=\"class in stanford.cs106.reflect\">ClassUtils.ClassComparator</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/reflect/ClassUtils.ExtensionFilter.html\" title=\"class in stanford.cs106.reflect\">ClassUtils.ExtensionFilter</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.FieldNameComparator.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils.FieldNameComparator</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/reflect/ReflectionUtils.MethodNameComparator.html\" title=\"class in stanford.cs106.reflect\">ReflectionUtils.MethodNameComparator</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Exception Summary table, listing exceptions, and an explanation\">\n<caption><span>Exception Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Exception</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/reflect/CompilerErrorException.html\" title=\"class in stanford.cs106.reflect\">CompilerErrorException</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/reflect/ReflectionRuntimeException.html\" title=\"class in stanford.cs106.reflect\">ReflectionRuntimeException</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n</tbody>\n</table>\n</li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li class=\"navBarCell1Rev\">Package</li>\n<li>Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/net/package-summary.html\">Prev&nbsp;Package</a></li>\n<li><a href=\"../../../stanford/cs106/util/package-summary.html\">Next&nbsp;Package</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/reflect/package-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/reflect/package-tree.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>stanford.cs106.reflect Class Hierarchy</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"stanford.cs106.reflect Class Hierarchy\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/net/package-tree.html\">Prev</a></li>\n<li><a href=\"../../../stanford/cs106/util/package-tree.html\">Next</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/reflect/package-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 class=\"title\">Hierarchy For Package stanford.cs106.reflect</h1>\n<span class=\"packageHierarchyLabel\">Package Hierarchies:</span>\n<ul class=\"horizontal\">\n<li><a href=\"../../../overview-tree.html\">All Packages</a></li>\n</ul>\n</div>\n<div class=\"contentContainer\">\n<h2 title=\"Class Hierarchy\">Class Hierarchy</h2>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Object</span></a>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">ClassLoader</span></a>\n<ul>\n<li type=\"circle\">java.security.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/security/SecureClassLoader.html?is-external=true\" title=\"class or interface in java.security\"><span class=\"typeNameLink\">SecureClassLoader</span></a>\n<ul>\n<li type=\"circle\">java.net.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/net/URLClassLoader.html?is-external=true\" title=\"class or interface in java.net\"><span class=\"typeNameLink\">URLClassLoader</span></a> (implements java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true\" title=\"class or interface in java.io\">Closeable</a>)\n<ul>\n<li type=\"circle\">stanford.cs106.reflect.<a href=\"../../../stanford/cs106/reflect/ClassUtils.BetterClassLoader.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">ClassUtils.BetterClassLoader</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li type=\"circle\">stanford.cs106.reflect.<a href=\"../../../stanford/cs106/reflect/ClassUtils.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">ClassUtils</span></a></li>\n<li type=\"circle\">stanford.cs106.reflect.<a href=\"../../../stanford/cs106/reflect/ClassUtils.ClassComparator.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">ClassUtils.ClassComparator</span></a> (implements java.util.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true\" title=\"class or interface in java.util\">Comparator</a>&lt;T&gt;)</li>\n<li type=\"circle\">stanford.cs106.reflect.<a href=\"../../../stanford/cs106/reflect/ClassUtils.ExtensionFilter.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">ClassUtils.ExtensionFilter</span></a> (implements java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FileFilter.html?is-external=true\" title=\"class or interface in java.io\">FileFilter</a>)</li>\n<li type=\"circle\">stanford.cs106.reflect.<a href=\"../../../stanford/cs106/reflect/ReflectionUtils.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">ReflectionUtils</span></a></li>\n<li type=\"circle\">stanford.cs106.reflect.<a href=\"../../../stanford/cs106/reflect/ReflectionUtils.FieldNameComparator.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">ReflectionUtils.FieldNameComparator</span></a> (implements java.util.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true\" title=\"class or interface in java.util\">Comparator</a>&lt;T&gt;)</li>\n<li type=\"circle\">stanford.cs106.reflect.<a href=\"../../../stanford/cs106/reflect/ReflectionUtils.MethodNameComparator.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">ReflectionUtils.MethodNameComparator</span></a> (implements java.util.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true\" title=\"class or interface in java.util\">Comparator</a>&lt;T&gt;)</li>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Throwable</span></a> (implements java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Exception</span></a>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">RuntimeException</span></a>\n<ul>\n<li type=\"circle\">stanford.cs106.reflect.<a href=\"../../../stanford/cs106/reflect/CompilerErrorException.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">CompilerErrorException</span></a></li>\n<li type=\"circle\">stanford.cs106.reflect.<a href=\"../../../stanford/cs106/reflect/ReflectionRuntimeException.html\" title=\"class in stanford.cs106.reflect\"><span class=\"typeNameLink\">ReflectionRuntimeException</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/net/package-tree.html\">Prev</a></li>\n<li><a href=\"../../../stanford/cs106/util/package-tree.html\">Next</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/reflect/package-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/util/CollectionUtils.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:02 PDT 2017 -->\n<title>CollectionUtils</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"CollectionUtils\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9,\"i2\":9,\"i3\":9,\"i4\":9,\"i5\":9,\"i6\":9,\"i7\":9,\"i8\":9,\"i9\":9,\"i10\":9,\"i11\":9,\"i12\":9,\"i13\":9,\"i14\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Class</li>\n<li><a href=\"../../../stanford/cs106/util/ConstantUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/util/CollectionUtils.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"CollectionUtils.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.util</div>\n<h2 title=\"Class CollectionUtils\" class=\"title\">Class CollectionUtils</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.util.CollectionUtils</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">CollectionUtils</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static &lt;T&gt;&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;T&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/CollectionUtils.html#asList-java.util.Enumeration-\">asList</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Enumeration.html?is-external=true\" title=\"class or interface in java.util\">Enumeration</a>&lt;T&gt;&nbsp;enu)</code>\n<div class=\"block\">Converts the elements found in the given Enumeration into a list.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static &lt;T&gt;&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;T&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/CollectionUtils.html#asList-java.util.Iterator-\">asList</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true\" title=\"class or interface in java.util\">Iterator</a>&lt;T&gt;&nbsp;itr)</code>\n<div class=\"block\">Converts the elements found in the given Iterator into a list.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>static &lt;T&gt;&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true\" title=\"class or interface in java.util\">ArrayList</a>&lt;T&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/CollectionUtils.html#asList-T...-\">asList</a></span>(T...&nbsp;strings)</code>\n<div class=\"block\">Converts the elements passed into a list.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static &lt;K,V&gt;&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;K,V&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/CollectionUtils.html#asMap-K:A-V:A-\">asMap</a></span>(K[]&nbsp;keys,\n     V[]&nbsp;values)</code>\n<div class=\"block\">Converts the given pair of arrays into a map that maps each keys[i] to\n the corresponding values[i].</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>static &lt;K,V&gt;&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;K,V&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/CollectionUtils.html#asMap-java.util.List-java.util.List-\">asMap</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;K&gt;&nbsp;keys,\n     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;V&gt;&nbsp;values)</code>\n<div class=\"block\">Converts the given pair of lists into a map that maps each keys[i] to\n the corresponding values[i].</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static &lt;K extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;? super K&gt;,V&gt;<br><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;K,V&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/CollectionUtils.html#asMapSorted-K:A-V:A-\">asMapSorted</a></span>(K[]&nbsp;keys,\n           V[]&nbsp;values)</code>\n<div class=\"block\">Converts the given pair of arrays into a sorted map that maps each\n keys[i] to the corresponding values[i].</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>static &lt;K extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;? super K&gt;,V&gt;<br><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;K,V&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/CollectionUtils.html#asMapSorted-java.util.List-java.util.List-\">asMapSorted</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;K&gt;&nbsp;keys,\n           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;V&gt;&nbsp;values)</code>\n<div class=\"block\">Converts the given pair of arrays into a map that maps each keys[i] to\n the corresponding values[i].</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static &lt;K&gt;&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;K&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/CollectionUtils.html#asSet-K...-\">asSet</a></span>(K...&nbsp;values)</code>\n<div class=\"block\">Converts the given values into a set.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>static &lt;K&gt;&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;K&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/CollectionUtils.html#asSet-K-\">asSet</a></span>(K&nbsp;value)</code>\n<div class=\"block\">Converts the given values into a set.</div>\n</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static &lt;K extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;K&gt;&gt;<br><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;K&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/CollectionUtils.html#asSetSorted-K...-\">asSetSorted</a></span>(K...&nbsp;values)</code>\n<div class=\"block\">Converts the given values into a sorted set.</div>\n</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>static &lt;T&gt;&nbsp;int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/CollectionUtils.html#indexOfSafe-java.util.List-T-\">indexOfSafe</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;T&gt;&nbsp;list,\n           T&nbsp;value)</code>\n<div class=\"block\">Returns the index of the given value in the given list,\n using == to compare rather than .equals.</div>\n</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/CollectionUtils.html#join-java.util.Collection-\">join</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;?&gt;&nbsp;c)</code>\n<div class=\"block\">Combines the elements of the given collection into a string separated\n by commas.</div>\n</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/CollectionUtils.html#join-java.util.Collection-java.lang.String-\">join</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;?&gt;&nbsp;c,\n    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;separator)</code>\n<div class=\"block\">Combines the elements of the given collection into a string separated\n by the given separator.</div>\n</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/CollectionUtils.html#join-java.util.Map-\">join</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;?,?&gt;&nbsp;map)</code>\n<div class=\"block\">Combines the elements of the given map into a string separated\n by an equals sign between keys and their values, and commas between each entry.</div>\n</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/CollectionUtils.html#join-java.util.Map-java.lang.String-java.lang.String-\">join</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;?,?&gt;&nbsp;map,\n    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;kvSeparator,\n    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;elementSeparator)</code>\n<div class=\"block\">Combines the elements of the given collection into a string separated\n by the given kv separator between keys and their values, and\n the given element separator commas between each entry.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"asList-java.lang.Object:A-\">\n<!--   -->\n</a><a name=\"asList-T...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>asList</h4>\n<pre>public static&nbsp;&lt;T&gt;&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true\" title=\"class or interface in java.util\">ArrayList</a>&lt;T&gt;&nbsp;asList(T...&nbsp;strings)</pre>\n<div class=\"block\">Converts the elements passed into a list.\n Almost the same as Java's Collections.asList, but returns an ArrayList.</div>\n</li>\n</ul>\n<a name=\"asList-java.util.Enumeration-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>asList</h4>\n<pre>public static&nbsp;&lt;T&gt;&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;T&gt;&nbsp;asList(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Enumeration.html?is-external=true\" title=\"class or interface in java.util\">Enumeration</a>&lt;T&gt;&nbsp;enu)</pre>\n<div class=\"block\">Converts the elements found in the given Enumeration into a list.</div>\n</li>\n</ul>\n<a name=\"asList-java.util.Iterator-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>asList</h4>\n<pre>public static&nbsp;&lt;T&gt;&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;T&gt;&nbsp;asList(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true\" title=\"class or interface in java.util\">Iterator</a>&lt;T&gt;&nbsp;itr)</pre>\n<div class=\"block\">Converts the elements found in the given Iterator into a list.</div>\n</li>\n</ul>\n<a name=\"asMap-java.lang.Object:A-java.lang.Object:A-\">\n<!--   -->\n</a><a name=\"asMap-K:A-V:A-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>asMap</h4>\n<pre>public static&nbsp;&lt;K,V&gt;&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;K,V&gt;&nbsp;asMap(K[]&nbsp;keys,\n                                   V[]&nbsp;values)</pre>\n<div class=\"block\">Converts the given pair of arrays into a map that maps each keys[i] to\n the corresponding values[i].</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the map (empty map if keys == null or values == null)</dd>\n</dl>\n</li>\n</ul>\n<a name=\"asMap-java.util.List-java.util.List-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>asMap</h4>\n<pre>public static&nbsp;&lt;K,V&gt;&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;K,V&gt;&nbsp;asMap(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;K&gt;&nbsp;keys,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;V&gt;&nbsp;values)</pre>\n<div class=\"block\">Converts the given pair of lists into a map that maps each keys[i] to\n the corresponding values[i].</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the map (empty map if keys == null or values == null)</dd>\n</dl>\n</li>\n</ul>\n<a name=\"asMapSorted-java.lang.Comparable:A-java.lang.Object:A-\">\n<!--   -->\n</a><a name=\"asMapSorted-K:A-V:A-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>asMapSorted</h4>\n<pre>public static&nbsp;&lt;K extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;? super K&gt;,V&gt;&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;K,V&gt;&nbsp;asMapSorted(K[]&nbsp;keys,\n                                                                       V[]&nbsp;values)</pre>\n<div class=\"block\">Converts the given pair of arrays into a sorted map that maps each\n keys[i] to the corresponding values[i].</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the map (empty map if keys == null or values == null)</dd>\n</dl>\n</li>\n</ul>\n<a name=\"asMapSorted-java.util.List-java.util.List-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>asMapSorted</h4>\n<pre>public static&nbsp;&lt;K extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;? super K&gt;,V&gt;&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;K,V&gt;&nbsp;asMapSorted(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;K&gt;&nbsp;keys,\n                                                                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;V&gt;&nbsp;values)</pre>\n<div class=\"block\">Converts the given pair of arrays into a map that maps each keys[i] to\n the corresponding values[i].</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the map (empty map if keys == null or values == null)</dd>\n</dl>\n</li>\n</ul>\n<a name=\"asSet-java.lang.Object-\">\n<!--   -->\n</a><a name=\"asSet-K-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>asSet</h4>\n<pre>public static&nbsp;&lt;K&gt;&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;K&gt;&nbsp;asSet(K&nbsp;value)</pre>\n<div class=\"block\">Converts the given values into a set.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the set, or empty set if values == null</dd>\n</dl>\n</li>\n</ul>\n<a name=\"asSet-java.lang.Object:A-\">\n<!--   -->\n</a><a name=\"asSet-K...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>asSet</h4>\n<pre>public static&nbsp;&lt;K&gt;&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;K&gt;&nbsp;asSet(K...&nbsp;values)</pre>\n<div class=\"block\">Converts the given values into a set.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the set, or empty set if values == null</dd>\n</dl>\n</li>\n</ul>\n<a name=\"asSetSorted-java.lang.Comparable:A-\">\n<!--   -->\n</a><a name=\"asSetSorted-K...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>asSetSorted</h4>\n<pre>public static&nbsp;&lt;K extends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;K&gt;&gt;&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;K&gt;&nbsp;asSetSorted(K...&nbsp;values)</pre>\n<div class=\"block\">Converts the given values into a sorted set.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the set, or empty set if values == null</dd>\n</dl>\n</li>\n</ul>\n<a name=\"indexOfSafe-java.util.List-java.lang.Object-\">\n<!--   -->\n</a><a name=\"indexOfSafe-java.util.List-T-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>indexOfSafe</h4>\n<pre>public static&nbsp;&lt;T&gt;&nbsp;int&nbsp;indexOfSafe(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;T&gt;&nbsp;list,\n                                  T&nbsp;value)</pre>\n<div class=\"block\">Returns the index of the given value in the given list,\n using == to compare rather than .equals.</div>\n</li>\n</ul>\n<a name=\"join-java.util.Collection-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>join</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;join(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;?&gt;&nbsp;c)</pre>\n<div class=\"block\">Combines the elements of the given collection into a string separated\n by commas.</div>\n</li>\n</ul>\n<a name=\"join-java.util.Collection-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>join</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;join(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true\" title=\"class or interface in java.util\">Collection</a>&lt;?&gt;&nbsp;c,\n                          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;separator)</pre>\n<div class=\"block\">Combines the elements of the given collection into a string separated\n by the given separator.</div>\n</li>\n</ul>\n<a name=\"join-java.util.Map-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>join</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;join(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;?,?&gt;&nbsp;map)</pre>\n<div class=\"block\">Combines the elements of the given map into a string separated\n by an equals sign between keys and their values, and commas between each entry.</div>\n</li>\n</ul>\n<a name=\"join-java.util.Map-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>join</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;join(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;?,?&gt;&nbsp;map,\n                          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;kvSeparator,\n                          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;elementSeparator)</pre>\n<div class=\"block\">Combines the elements of the given collection into a string separated\n by the given kv separator between keys and their values, and\n the given element separator commas between each entry.</div>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Class</li>\n<li><a href=\"../../../stanford/cs106/util/ConstantUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/util/CollectionUtils.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"CollectionUtils.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/util/ConstantUtils.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:02 PDT 2017 -->\n<title>ConstantUtils</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"ConstantUtils\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9,\"i2\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/util/CollectionUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/util/ExceptionUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/util/ConstantUtils.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ConstantUtils.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.util</div>\n<h2 title=\"Class ConstantUtils\" class=\"title\">Class ConstantUtils</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.util.ConstantUtils</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">ConstantUtils</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/ConstantUtils.html#ConstantUtils--\">ConstantUtils</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Double.html?is-external=true\" title=\"class or interface in java.lang\">Double</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/ConstantUtils.html#makeConstantDouble-java.lang.Double-\">makeConstantDouble</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Double.html?is-external=true\" title=\"class or interface in java.lang\">Double</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true\" title=\"class or interface in java.lang\">Integer</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/ConstantUtils.html#makeConstantInteger-java.lang.Integer-\">makeConstantInteger</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true\" title=\"class or interface in java.lang\">Integer</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/ConstantUtils.html#makeConstantString-java.lang.String-\">makeConstantString</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"ConstantUtils--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>ConstantUtils</h4>\n<pre>public&nbsp;ConstantUtils()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"makeConstantString-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>makeConstantString</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;makeConstantString(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</pre>\n</li>\n</ul>\n<a name=\"makeConstantInteger-java.lang.Integer-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>makeConstantInteger</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true\" title=\"class or interface in java.lang\">Integer</a>&nbsp;makeConstantInteger(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true\" title=\"class or interface in java.lang\">Integer</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"makeConstantDouble-java.lang.Double-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>makeConstantDouble</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Double.html?is-external=true\" title=\"class or interface in java.lang\">Double</a>&nbsp;makeConstantDouble(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Double.html?is-external=true\" title=\"class or interface in java.lang\">Double</a>&nbsp;value)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/util/CollectionUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/util/ExceptionUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/util/ConstantUtils.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ConstantUtils.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/util/ExceptionUtils.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:02 PDT 2017 -->\n<title>ExceptionUtils</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"ExceptionUtils\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9,\"i2\":9,\"i3\":9,\"i4\":9,\"i5\":9,\"i6\":9,\"i7\":9,\"i8\":9,\"i9\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/util/ConstantUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/util/OperatingSystem.html\" title=\"enum in stanford.cs106.util\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/util/ExceptionUtils.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ExceptionUtils.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.util</div>\n<h2 title=\"Class ExceptionUtils\" class=\"title\">Class ExceptionUtils</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.util.ExceptionUtils</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">ExceptionUtils</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n<div class=\"block\">This class contains utility code related to exceptions.\n A lot of the methods are related to examining an exception's stack trace\n to learn things about what methods/classes are on the call stack.\n This helps Practice-It figure out what went wrong in a student's code and where.</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/ExceptionUtils.html#filterStackTrace-java.lang.String-java.lang.String...-\">filterStackTrace</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;stackTrace,\n                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;packagesToStrip)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/ExceptionUtils.html#getCallingClassName-java.lang.String...-\">getCallingClassName</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;classNamesToSkip)</code>\n<div class=\"block\">The current class name on top of the current method call stack,\n ignoring any classes in the given list of classes to skip.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/ExceptionUtils.html#getLineNumber-java.lang.Throwable-java.lang.String-\">getLineNumber</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;throwable,\n             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className)</code>\n<div class=\"block\">The top-level line number within the given class name on which\n this exception occurred.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/ExceptionUtils.html#getLineNumber-java.lang.Throwable-java.lang.String-java.lang.String-\">getLineNumber</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;throwable,\n             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className,\n             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;methodName)</code>\n<div class=\"block\">The top-level line number within the given class and method name\n on which this exception occurred in the given method.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/ExceptionUtils.html#getMethodName-java.lang.Throwable-java.lang.String-\">getMethodName</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;throwable,\n             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className)</code>\n<div class=\"block\">The current method name within the given class name that is\n highest on the current method call stack.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/ExceptionUtils.html#getUnderlyingCause-java.lang.Throwable-\">getUnderlyingCause</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;t)</code>\n<div class=\"block\">The true cause of an exception that has occurred.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/ExceptionUtils.html#stackTraceToString--\">stackTraceToString</a></span>()</code>\n<div class=\"block\">The current stack trace as a multi-line String.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/ExceptionUtils.html#stackTraceToString-int-\">stackTraceToString</a></span>(int&nbsp;lines)</code>\n<div class=\"block\">The current stack trace as a multi-line String.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/ExceptionUtils.html#stackTraceToString-java.lang.Throwable-\">stackTraceToString</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;throwable)</code>\n<div class=\"block\">The stack trace of the given exception as a multi-line String.</div>\n</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/ExceptionUtils.html#stackTraceToString-java.lang.Throwable-int-\">stackTraceToString</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;throwable,\n                  int&nbsp;lines)</code>\n<div class=\"block\">The stack trace of the given exception as a multi-line String.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"filterStackTrace-java.lang.String-java.lang.String...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>filterStackTrace</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filterStackTrace(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;stackTrace,\n                                      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;packagesToStrip)</pre>\n</li>\n</ul>\n<a name=\"stackTraceToString--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>stackTraceToString</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;stackTraceToString()</pre>\n<div class=\"block\">The current stack trace as a multi-line String.</div>\n</li>\n</ul>\n<a name=\"stackTraceToString-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>stackTraceToString</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;stackTraceToString(int&nbsp;lines)</pre>\n<div class=\"block\">The current stack trace as a multi-line String.</div>\n</li>\n</ul>\n<a name=\"stackTraceToString-java.lang.Throwable-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>stackTraceToString</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;stackTraceToString(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;throwable)</pre>\n<div class=\"block\">The stack trace of the given exception as a multi-line String.</div>\n</li>\n</ul>\n<a name=\"stackTraceToString-java.lang.Throwable-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>stackTraceToString</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;stackTraceToString(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;throwable,\n                                        int&nbsp;lines)</pre>\n<div class=\"block\">The stack trace of the given exception as a multi-line String.</div>\n</li>\n</ul>\n<a name=\"getLineNumber-java.lang.Throwable-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getLineNumber</h4>\n<pre>public static&nbsp;int&nbsp;getLineNumber(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;throwable,\n                                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className)</pre>\n<div class=\"block\">The top-level line number within the given class name on which\n this exception occurred.  For example, if you have the exception:\n \n <pre>\n RuntimeException\n     at Foo.java line 42\n     at Bar.java line 18\n     at Bar.java line 29\n </pre>\n \n and you ask for the line number from Bar, returns 18.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>-1 if the exception doesn't contain a stack frame for this class</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getLineNumber-java.lang.Throwable-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getLineNumber</h4>\n<pre>public static&nbsp;int&nbsp;getLineNumber(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;throwable,\n                                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className,\n                                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;methodName)</pre>\n<div class=\"block\">The top-level line number within the given class and method name\n on which this exception occurred in the given method.  For example, if\n you have the exception:\n \n <pre>\n RuntimeException\n     at Foo.java:method0() line 42\n     at Bar.java:method1() line 96\n     at Bar.java:method2() line 18\n     at Bar.java:method2() line 29\n </pre>\n \n and you ask for the line number from Bar, method2, returns 18.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>-1 if the exception doesn't contain a stack frame for this class/method</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getCallingClassName-java.lang.String...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getCallingClassName</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getCallingClassName(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;classNamesToSkip)</pre>\n<div class=\"block\">The current class name on top of the current method call stack,\n ignoring any classes in the given list of classes to skip.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the class name, or null if none can be determined (unlikely)</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getMethodName-java.lang.Throwable-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getMethodName</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getMethodName(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;throwable,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;className)</pre>\n<div class=\"block\">The current method name within the given class name that is\n highest on the current method call stack.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the method name, or empty string if no method from that class is on the stack</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getUnderlyingCause-java.lang.Throwable-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>getUnderlyingCause</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;getUnderlyingCause(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;t)</pre>\n<div class=\"block\">The true cause of an exception that has occurred.\n Basically calls t.getCause() until it hits the top level.\n If passed null, returns null.</div>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/util/ConstantUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/util/OperatingSystem.html\" title=\"enum in stanford.cs106.util\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/util/ExceptionUtils.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ExceptionUtils.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/util/OperatingSystem.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:02 PDT 2017 -->\n<title>OperatingSystem</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"OperatingSystem\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9,\"i2\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/util/ExceptionUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/util/ProcessUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/util/OperatingSystem.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"OperatingSystem.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#enum.constant.summary\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#enum.constant.detail\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.util</div>\n<h2 title=\"Enum OperatingSystem\" class=\"title\">Enum OperatingSystem</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Enum</a>&lt;<a href=\"../../../stanford/cs106/util/OperatingSystem.html\" title=\"enum in stanford.cs106.util\">OperatingSystem</a>&gt;</li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.util.OperatingSystem</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;<a href=\"../../../stanford/cs106/util/OperatingSystem.html\" title=\"enum in stanford.cs106.util\">OperatingSystem</a>&gt;</dd>\n</dl>\n<hr>\n<br>\n<pre>public enum <span class=\"typeNameLabel\">OperatingSystem</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true\" title=\"class or interface in java.lang\">Enum</a>&lt;<a href=\"../../../stanford/cs106/util/OperatingSystem.html\" title=\"enum in stanford.cs106.util\">OperatingSystem</a>&gt;</pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== ENUM CONSTANT SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"enum.constant.summary\">\n<!--   -->\n</a>\n<h3>Enum Constant Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Enum Constant Summary table, listing enum constants, and an explanation\">\n<caption><span>Enum Constants</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Enum Constant and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/OperatingSystem.html#LINUX\">LINUX</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/OperatingSystem.html#MAC\">MAC</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/OperatingSystem.html#UNKNOWN\">UNKNOWN</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/OperatingSystem.html#WINDOWS\">WINDOWS</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../../stanford/cs106/util/OperatingSystem.html\" title=\"enum in stanford.cs106.util\">OperatingSystem</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/OperatingSystem.html#get--\">get</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../../stanford/cs106/util/OperatingSystem.html\" title=\"enum in stanford.cs106.util\">OperatingSystem</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/OperatingSystem.html#valueOf-java.lang.String-\">valueOf</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>\n<div class=\"block\">Returns the enum constant of this type with the specified name.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../../stanford/cs106/util/OperatingSystem.html\" title=\"enum in stanford.cs106.util\">OperatingSystem</a>[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/OperatingSystem.html#values--\">values</a></span>()</code>\n<div class=\"block\">Returns an array containing the constants of this enum type, in\nthe order they are declared.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Enum\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true\" title=\"class or interface in java.lang\">Enum</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#compareTo-E-\" title=\"class or interface in java.lang\">compareTo</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#getDeclaringClass--\" title=\"class or interface in java.lang\">getDeclaringClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#name--\" title=\"class or interface in java.lang\">name</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#ordinal--\" title=\"class or interface in java.lang\">ordinal</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#valueOf-java.lang.Class-java.lang.String-\" title=\"class or interface in java.lang\">valueOf</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ ENUM CONSTANT DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"enum.constant.detail\">\n<!--   -->\n</a>\n<h3>Enum Constant Detail</h3>\n<a name=\"WINDOWS\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>WINDOWS</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/util/OperatingSystem.html\" title=\"enum in stanford.cs106.util\">OperatingSystem</a> WINDOWS</pre>\n</li>\n</ul>\n<a name=\"MAC\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MAC</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/util/OperatingSystem.html\" title=\"enum in stanford.cs106.util\">OperatingSystem</a> MAC</pre>\n</li>\n</ul>\n<a name=\"LINUX\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>LINUX</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/util/OperatingSystem.html\" title=\"enum in stanford.cs106.util\">OperatingSystem</a> LINUX</pre>\n</li>\n</ul>\n<a name=\"UNKNOWN\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>UNKNOWN</h4>\n<pre>public static final&nbsp;<a href=\"../../../stanford/cs106/util/OperatingSystem.html\" title=\"enum in stanford.cs106.util\">OperatingSystem</a> UNKNOWN</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"values--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>values</h4>\n<pre>public static&nbsp;<a href=\"../../../stanford/cs106/util/OperatingSystem.html\" title=\"enum in stanford.cs106.util\">OperatingSystem</a>[]&nbsp;values()</pre>\n<div class=\"block\">Returns an array containing the constants of this enum type, in\nthe order they are declared.  This method may be used to iterate\nover the constants as follows:\n<pre>\nfor (OperatingSystem c : OperatingSystem.values())\n&nbsp;   System.out.println(c);\n</pre></div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>an array containing the constants of this enum type, in the order they are declared</dd>\n</dl>\n</li>\n</ul>\n<a name=\"valueOf-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>valueOf</h4>\n<pre>public static&nbsp;<a href=\"../../../stanford/cs106/util/OperatingSystem.html\" title=\"enum in stanford.cs106.util\">OperatingSystem</a>&nbsp;valueOf(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n<div class=\"block\">Returns the enum constant of this type with the specified name.\nThe string must match <i>exactly</i> an identifier used to declare an\nenum constant in this type.  (Extraneous whitespace characters are \nnot permitted.)</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>name</code> - the name of the enum constant to be returned.</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the enum constant with the specified name</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - if this enum type has no constant with the specified name</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if the argument is null</dd>\n</dl>\n</li>\n</ul>\n<a name=\"get--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>get</h4>\n<pre>public static&nbsp;<a href=\"../../../stanford/cs106/util/OperatingSystem.html\" title=\"enum in stanford.cs106.util\">OperatingSystem</a>&nbsp;get()</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/util/ExceptionUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/util/ProcessUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/util/OperatingSystem.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"OperatingSystem.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#enum.constant.summary\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#enum.constant.detail\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/util/ProcessUtils.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:02 PDT 2017 -->\n<title>ProcessUtils</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"ProcessUtils\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/util/OperatingSystem.html\" title=\"enum in stanford.cs106.util\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/util/RandomGenerator.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/util/ProcessUtils.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ProcessUtils.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.util</div>\n<h2 title=\"Class ProcessUtils\" class=\"title\">Class ProcessUtils</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.util.ProcessUtils</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">ProcessUtils</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/ProcessUtils.html#getPID--\">getPID</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"getPID--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>getPID</h4>\n<pre>public static&nbsp;int&nbsp;getPID()</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/util/OperatingSystem.html\" title=\"enum in stanford.cs106.util\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/util/RandomGenerator.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/util/ProcessUtils.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"ProcessUtils.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/util/RandomGenerator.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:02 PDT 2017 -->\n<title>RandomGenerator</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"RandomGenerator\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":9,\"i9\":9,\"i10\":9,\"i11\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/util/ProcessUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/util/RecursionUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/util/RandomGenerator.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"RandomGenerator.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.util</div>\n<h2 title=\"Class RandomGenerator\" class=\"title\">Class RandomGenerator</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true\" title=\"class or interface in java.util\">java.util.Random</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../../acm/util/RandomGenerator.html\" title=\"class in acm.util\">acm.util.RandomGenerator</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.util.RandomGenerator</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">RandomGenerator</span>\nextends <a href=\"../../../acm/util/RandomGenerator.html\" title=\"class in acm.util\">RandomGenerator</a></pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../serialized-form.html#stanford.cs106.util.RandomGenerator\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/RandomGenerator.html#RandomGenerator--\">RandomGenerator</a></span>()</code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/RandomGenerator.html#RandomGenerator-long-\">RandomGenerator</a></span>(long&nbsp;seed)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../../stanford/cs106/util/RandomGenerator.html\" title=\"class in stanford.cs106.util\">RandomGenerator</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/RandomGenerator.html#getInstance--\">getInstance</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/RandomGenerator.html#nextBoolean--\">nextBoolean</a></span>()</code>\n<div class=\"block\">Returns a random <code>boolean</code> value that is <code>true</code> or\n <code>false</code> with equal probability.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/RandomGenerator.html#nextBoolean-double-\">nextBoolean</a></span>(double&nbsp;probability)</code>\n<div class=\"block\">Returns a random <code>boolean</code> value with the specified\n probability.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/RandomGenerator.html#nextDouble--\">nextDouble</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/RandomGenerator.html#nextDouble-double-double-\">nextDouble</a></span>(double&nbsp;min,\n          double&nbsp;max)</code>\n<div class=\"block\">Returns the next random real number in the specified range.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/RandomGenerator.html#nextInt--\">nextInt</a></span>()</code>\n<div class=\"block\">Returns the next random integer, which can be any legal integer value.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/RandomGenerator.html#nextInt-int-\">nextInt</a></span>(int&nbsp;max)</code>\n<div class=\"block\">Returns the next random integer between 0 and <code>n</code>-1,\n inclusive.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/RandomGenerator.html#nextInt-int-int-\">nextInt</a></span>(int&nbsp;min,\n       int&nbsp;max)</code>\n<div class=\"block\">Returns the next random integer in the specified range.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/RandomGenerator.html#rigBoolean-java.lang.Boolean-\">rigBoolean</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true\" title=\"class or interface in java.lang\">Boolean</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/RandomGenerator.html#rigDouble-java.lang.Double-\">rigDouble</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Double.html?is-external=true\" title=\"class or interface in java.lang\">Double</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/RandomGenerator.html#rigInt-java.lang.Integer-\">rigInt</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true\" title=\"class or interface in java.lang\">Integer</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/RandomGenerator.html#setAllSeed-java.lang.Long-\">setAllSeed</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true\" title=\"class or interface in java.lang\">Long</a>&nbsp;seed)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.util.RandomGenerator\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.util.<a href=\"../../../acm/util/RandomGenerator.html\" title=\"class in acm.util\">RandomGenerator</a></h3>\n<code><a href=\"../../../acm/util/RandomGenerator.html#clearFixedIntegers--\">clearFixedIntegers</a>, <a href=\"../../../acm/util/RandomGenerator.html#feedFixedIntegers-int...-\">feedFixedIntegers</a>, <a href=\"../../../acm/util/RandomGenerator.html#feedFixedIntegers-java.lang.Iterable-\">feedFixedIntegers</a>, <a href=\"../../../acm/util/RandomGenerator.html#nextChoice-java.lang.Iterable-\">nextChoice</a>, <a href=\"../../../acm/util/RandomGenerator.html#nextChoice-java.util.List-\">nextChoice</a>, <a href=\"../../../acm/util/RandomGenerator.html#nextChoice-T...-\">nextChoice</a>, <a href=\"../../../acm/util/RandomGenerator.html#nextColor--\">nextColor</a>, <a href=\"../../../acm/util/RandomGenerator.html#setSharedSeed-long-\">setSharedSeed</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.util.Random\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.util.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true\" title=\"class or interface in java.util\">Random</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#doubles--\" title=\"class or interface in java.util\">doubles</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#doubles-double-double-\" title=\"class or interface in java.util\">doubles</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#doubles-long-\" title=\"class or interface in java.util\">doubles</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#doubles-long-double-double-\" title=\"class or interface in java.util\">doubles</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#ints--\" title=\"class or interface in java.util\">ints</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#ints-int-int-\" title=\"class or interface in java.util\">ints</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#ints-long-\" title=\"class or interface in java.util\">ints</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#ints-long-int-int-\" title=\"class or interface in java.util\">ints</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#longs--\" title=\"class or interface in java.util\">longs</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#longs-long-\" title=\"class or interface in java.util\">longs</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#longs-long-long-\" title=\"class or interface in java.util\">longs</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#longs-long-long-long-\" title=\"class or interface in java.util\">longs</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#next-int-\" title=\"class or interface in java.util\">next</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#nextBytes-byte:A-\" title=\"class or interface in java.util\">nextBytes</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#nextFloat--\" title=\"class or interface in java.util\">nextFloat</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#nextGaussian--\" title=\"class or interface in java.util\">nextGaussian</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#nextLong--\" title=\"class or interface in java.util\">nextLong</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#setSeed-long-\" title=\"class or interface in java.util\">setSeed</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"RandomGenerator--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>RandomGenerator</h4>\n<pre>public&nbsp;RandomGenerator()</pre>\n</li>\n</ul>\n<a name=\"RandomGenerator-long-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>RandomGenerator</h4>\n<pre>public&nbsp;RandomGenerator(long&nbsp;seed)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"setAllSeed-java.lang.Long-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setAllSeed</h4>\n<pre>public static&nbsp;void&nbsp;setAllSeed(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true\" title=\"class or interface in java.lang\">Long</a>&nbsp;seed)</pre>\n</li>\n</ul>\n<a name=\"getInstance--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getInstance</h4>\n<pre>public static&nbsp;<a href=\"../../../stanford/cs106/util/RandomGenerator.html\" title=\"class in stanford.cs106.util\">RandomGenerator</a>&nbsp;getInstance()</pre>\n</li>\n</ul>\n<a name=\"rigBoolean-java.lang.Boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>rigBoolean</h4>\n<pre>public static&nbsp;void&nbsp;rigBoolean(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true\" title=\"class or interface in java.lang\">Boolean</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"rigDouble-java.lang.Double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>rigDouble</h4>\n<pre>public static&nbsp;void&nbsp;rigDouble(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Double.html?is-external=true\" title=\"class or interface in java.lang\">Double</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"rigInt-java.lang.Integer-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>rigInt</h4>\n<pre>public static&nbsp;void&nbsp;rigInt(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true\" title=\"class or interface in java.lang\">Integer</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"nextBoolean--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>nextBoolean</h4>\n<pre>public&nbsp;boolean&nbsp;nextBoolean()</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../../acm/util/RandomGenerator.html#nextBoolean--\">RandomGenerator</a></code></span></div>\n<div class=\"block\">Returns a random <code>boolean</code> value that is <code>true</code> or\n <code>false</code> with equal probability. This method is in modern\n implementations of the <code>Random</code> class, but is missing from JDK\n 1.1.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../../acm/util/RandomGenerator.html#nextBoolean--\">nextBoolean</a></code>&nbsp;in class&nbsp;<code><a href=\"../../../acm/util/RandomGenerator.html\" title=\"class in acm.util\">RandomGenerator</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"nextBoolean-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>nextBoolean</h4>\n<pre>public&nbsp;boolean&nbsp;nextBoolean(double&nbsp;probability)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../../acm/util/RandomGenerator.html#nextBoolean-double-\">RandomGenerator</a></code></span></div>\n<div class=\"block\">Returns a random <code>boolean</code> value with the specified\n probability. You can use this method to simulate an event that occurs\n with a particular probability. For example, you could simulate the result\n of tossing a coin like this:\n\n <p>\n \n <pre>\n <code>\n &nbsp;    String coinFlip = rgen.nextBoolean(0.5) ? \"HEADS\" : \"TAILS\";\n </code>\n </pre></div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../../acm/util/RandomGenerator.html#nextBoolean-double-\">nextBoolean</a></code>&nbsp;in class&nbsp;<code><a href=\"../../../acm/util/RandomGenerator.html\" title=\"class in acm.util\">RandomGenerator</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>probability</code> - A value between 0 (impossible) and 1 (certain) indicating the\n            probability</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The value <code>true</code> with probability <code>p</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"nextDouble--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>nextDouble</h4>\n<pre>public&nbsp;double&nbsp;nextDouble()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true#nextDouble--\" title=\"class or interface in java.util\">nextDouble</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true\" title=\"class or interface in java.util\">Random</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"nextDouble-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>nextDouble</h4>\n<pre>public&nbsp;double&nbsp;nextDouble(double&nbsp;min,\n                         double&nbsp;max)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../../acm/util/RandomGenerator.html#nextDouble-double-double-\">RandomGenerator</a></code></span></div>\n<div class=\"block\">Returns the next random real number in the specified range. The resulting\n value is always at least <code>low</code> but always strictly less than\n <code>high</code>. You can use this method to generate continuous random\n values. For example, you can set the variables <code>x</code> and\n <code>y</code> to specify a random point inside the unit square as\n follows:\n\n <p>\n \n <pre>\n <code>\n &nbsp;    double x = rgen.nextDouble(0.0, 1.0);\n &nbsp;    double y = rgen.nextDouble(0.0, 1.0);\n </code>\n </pre></div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../../acm/util/RandomGenerator.html#nextDouble-double-double-\">nextDouble</a></code>&nbsp;in class&nbsp;<code><a href=\"../../../acm/util/RandomGenerator.html\" title=\"class in acm.util\">RandomGenerator</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>min</code> - The low end of the range</dd>\n<dd><code>max</code> - The high end of the range</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>A random <code>double</code> value <i>d</i> in the range\n         <code>low</code> &le; <i>d</i> &lt; <code>high</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"nextInt--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>nextInt</h4>\n<pre>public&nbsp;int&nbsp;nextInt()</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../../acm/util/RandomGenerator.html#nextInt--\">RandomGenerator</a></code></span></div>\n<div class=\"block\">Returns the next random integer, which can be any legal integer value.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../../acm/util/RandomGenerator.html#nextInt--\">nextInt</a></code>&nbsp;in class&nbsp;<code><a href=\"../../../acm/util/RandomGenerator.html\" title=\"class in acm.util\">RandomGenerator</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"nextInt-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>nextInt</h4>\n<pre>public&nbsp;int&nbsp;nextInt(int&nbsp;max)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../../acm/util/RandomGenerator.html#nextInt-int-\">RandomGenerator</a></code></span></div>\n<div class=\"block\">Returns the next random integer between 0 and <code>n</code>-1,\n inclusive. This method is in modern implementations of the\n <code>Random</code> class, but is missing from JDK 1.1.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../../acm/util/RandomGenerator.html#nextInt-int-\">nextInt</a></code>&nbsp;in class&nbsp;<code><a href=\"../../../acm/util/RandomGenerator.html\" title=\"class in acm.util\">RandomGenerator</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"nextInt-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>nextInt</h4>\n<pre>public&nbsp;int&nbsp;nextInt(int&nbsp;min,\n                   int&nbsp;max)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../../acm/util/RandomGenerator.html#nextInt-int-int-\">RandomGenerator</a></code></span></div>\n<div class=\"block\">Returns the next random integer in the specified range. For example, you\n can generate the roll of a six-sided die by calling\n\n <p>\n \n <pre>\n <code>\n &nbsp;    rgen.nextInt(1, 6);\n </code>\n </pre>\n\n <p>\n or a random decimal digit by calling\n\n <p>\n \n <pre>\n <code>\n &nbsp;    rgen.nextInt(0, 9);\n </code>\n </pre></div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../../acm/util/RandomGenerator.html#nextInt-int-int-\">nextInt</a></code>&nbsp;in class&nbsp;<code><a href=\"../../../acm/util/RandomGenerator.html\" title=\"class in acm.util\">RandomGenerator</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>min</code> - The low end of the range</dd>\n<dd><code>max</code> - The high end of the range</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The next random <code>int</code> between <code>low</code> and\n         <code>high</code>, inclusive</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/util/ProcessUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/util/RecursionUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/util/RandomGenerator.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"RandomGenerator.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/util/RecursionUtils.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:02 PDT 2017 -->\n<title>RecursionUtils</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"RecursionUtils\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9,\"i2\":9,\"i3\":9,\"i4\":9,\"i5\":9,\"i6\":9,\"i7\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/util/RandomGenerator.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/util/Stanford.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/util/RecursionUtils.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"RecursionUtils.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.util</div>\n<h2 title=\"Class RecursionUtils\" class=\"title\">Class RecursionUtils</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.util.RecursionUtils</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">RecursionUtils</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n<div class=\"block\">A class with a few \"helper\" methods for recursion and backtracking.</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/RecursionUtils.html#countCalls--\">countCalls</a></span>()</code>\n<div class=\"block\">Returns the number of recursive calls currently on top of the call stack.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/RecursionUtils.html#println-boolean-\">println</a></span>(boolean&nbsp;b)</code>\n<div class=\"block\">Prints the given value, with each line indented relative to how many\n recursive calls are currently on top of the call stack.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/RecursionUtils.html#println-char-\">println</a></span>(char&nbsp;c)</code>\n<div class=\"block\">Prints the given value, with each line indented relative to how many\n recursive calls are currently on top of the call stack.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/RecursionUtils.html#println-double-\">println</a></span>(double&nbsp;d)</code>\n<div class=\"block\">Prints the given value, with each line indented relative to how many\n recursive calls are currently on top of the call stack.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/RecursionUtils.html#println-int-\">println</a></span>(int&nbsp;n)</code>\n<div class=\"block\">Prints the given value, with each line indented relative to how many\n recursive calls are currently on top of the call stack.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/RecursionUtils.html#println-long-\">println</a></span>(long&nbsp;l)</code>\n<div class=\"block\">Prints the given value, with each line indented relative to how many\n recursive calls are currently on top of the call stack.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/RecursionUtils.html#println-java.lang.Object-\">println</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;o)</code>\n<div class=\"block\">Prints the given value, with each line indented relative to how many\n recursive calls are currently on top of the call stack.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/RecursionUtils.html#println-java.lang.String-\">println</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>\n<div class=\"block\">Prints the given string, with each line indented relative to how many\n recursive calls are currently on top of the call stack.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"countCalls--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>countCalls</h4>\n<pre>public static&nbsp;int&nbsp;countCalls()</pre>\n<div class=\"block\">Returns the number of recursive calls currently on top of the call stack.</div>\n</li>\n</ul>\n<a name=\"println-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public static&nbsp;void&nbsp;println(boolean&nbsp;b)</pre>\n<div class=\"block\">Prints the given value, with each line indented relative to how many\n recursive calls are currently on top of the call stack.</div>\n</li>\n</ul>\n<a name=\"println-char-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public static&nbsp;void&nbsp;println(char&nbsp;c)</pre>\n<div class=\"block\">Prints the given value, with each line indented relative to how many\n recursive calls are currently on top of the call stack.</div>\n</li>\n</ul>\n<a name=\"println-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public static&nbsp;void&nbsp;println(double&nbsp;d)</pre>\n<div class=\"block\">Prints the given value, with each line indented relative to how many\n recursive calls are currently on top of the call stack.</div>\n</li>\n</ul>\n<a name=\"println-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public static&nbsp;void&nbsp;println(int&nbsp;n)</pre>\n<div class=\"block\">Prints the given value, with each line indented relative to how many\n recursive calls are currently on top of the call stack.</div>\n</li>\n</ul>\n<a name=\"println-long-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public static&nbsp;void&nbsp;println(long&nbsp;l)</pre>\n<div class=\"block\">Prints the given value, with each line indented relative to how many\n recursive calls are currently on top of the call stack.</div>\n</li>\n</ul>\n<a name=\"println-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public static&nbsp;void&nbsp;println(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;o)</pre>\n<div class=\"block\">Prints the given value, with each line indented relative to how many\n recursive calls are currently on top of the call stack.</div>\n</li>\n</ul>\n<a name=\"println-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public static&nbsp;void&nbsp;println(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n<div class=\"block\">Prints the given string, with each line indented relative to how many\n recursive calls are currently on top of the call stack.</div>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/util/RandomGenerator.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/util/Stanford.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/util/RecursionUtils.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"RecursionUtils.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/util/Stanford.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:02 PDT 2017 -->\n<title>Stanford</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"Stanford\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/util/RecursionUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/util/Stanford.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Stanford.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.util</div>\n<h2 title=\"Class Stanford\" class=\"title\">Class Stanford</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.util.Stanford</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">Stanford</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/Stanford.html#getCurrentQuarter--\">getCurrentQuarter</a></span>()</code>\n<div class=\"block\">Returns a quarter string such as \"15sp\" for Spring 2015.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"getCurrentQuarter--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>getCurrentQuarter</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getCurrentQuarter()</pre>\n<div class=\"block\">Returns a quarter string such as \"15sp\" for Spring 2015.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>a quarter string such as \"15sp\" for Spring 2015.</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/util/RecursionUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/util/Stanford.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Stanford.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/util/StringUtils.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:02 PDT 2017 -->\n<title>StringUtils</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"StringUtils\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9,\"i2\":9,\"i3\":9,\"i4\":9,\"i5\":9,\"i6\":9,\"i7\":9,\"i8\":9,\"i9\":9,\"i10\":9,\"i11\":9,\"i12\":9,\"i13\":9,\"i14\":9,\"i15\":9,\"i16\":9,\"i17\":9,\"i18\":9,\"i19\":9,\"i20\":9,\"i21\":9,\"i22\":9,\"i23\":9,\"i24\":9,\"i25\":9,\"i26\":9,\"i27\":9,\"i28\":9,\"i29\":9,\"i30\":9,\"i31\":9,\"i32\":9,\"i33\":9,\"i34\":9,\"i35\":9,\"i36\":9,\"i37\":9,\"i38\":9,\"i39\":9,\"i40\":9,\"i41\":9,\"i42\":9,\"i43\":9,\"i44\":9,\"i45\":9,\"i46\":9,\"i47\":9,\"i48\":9,\"i49\":9,\"i50\":9,\"i51\":9,\"i52\":9,\"i53\":9,\"i54\":9,\"i55\":9,\"i56\":9,\"i57\":9,\"i58\":9,\"i59\":9,\"i60\":9,\"i61\":9,\"i62\":9,\"i63\":9,\"i64\":9,\"i65\":9,\"i66\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/util/Stanford.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/util/SystemProperties.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/util/StringUtils.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"StringUtils.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.util</div>\n<h2 title=\"Class StringUtils\" class=\"title\">Class StringUtils</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.util.StringUtils</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">StringUtils</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n<div class=\"block\">This class contains utility code related to Strings and text processing.</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#DEFAULT_TAB_WIDTH\">DEFAULT_TAB_WIDTH</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#TAB_STRING\">TAB_STRING</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#equalsIgnoreWhitespace-java.lang.String-java.lang.String-\">equalsIgnoreWhitespace</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s1,\n                      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s2)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#equalsIgnoreWhitespace-java.lang.String-java.lang.String-boolean-\">equalsIgnoreWhitespace</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s1,\n                      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s2,\n                      boolean&nbsp;ignoreCase)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#escape-java.lang.String-\">escape</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#fitToBox-java.lang.String-int-int-\">fitToBox</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value,\n        int&nbsp;width,\n        int&nbsp;height)</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#fitToBox-java.lang.String-int-int-boolean-\">fitToBox</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value,\n        int&nbsp;width,\n        int&nbsp;height,\n        boolean&nbsp;html)</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#fitToHeight-java.lang.String-int-\">fitToHeight</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value,\n           int&nbsp;height)</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#fitToWidth-java.lang.String-int-\">fitToWidth</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value,\n          int&nbsp;width)</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#formatDoubleLikeCpp-double-\">formatDoubleLikeCpp</a></span>(double&nbsp;value)</code>\n<div class=\"block\">Tries to format double the C++ iostream way, with up to 6 digits shown after the decimal point.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#getHeight-java.lang.String-\">getHeight</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#getWidth-java.lang.String-\">getWidth</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#htmlDecode-java.lang.String-\">htmlDecode</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#htmlDecode-java.lang.String-boolean-\">htmlDecode</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value,\n          boolean&nbsp;replaceSpecialChars)</code>&nbsp;</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#htmlEncode-boolean-\">htmlEncode</a></span>(boolean&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#htmlEncode-char-\">htmlEncode</a></span>(char&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#htmlEncode-double-\">htmlEncode</a></span>(double&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#htmlEncode-int-\">htmlEncode</a></span>(int&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#htmlEncode-long-\">htmlEncode</a></span>(long&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#htmlEncode-java.lang.Object-\">htmlEncode</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#htmlEncode-java.lang.String-\">htmlEncode</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#htmlEncode-java.lang.String-boolean-\">htmlEncode</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value,\n          boolean&nbsp;replaceSpecialChars)</code>&nbsp;</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#htmlEncode-java.lang.String-boolean-boolean-\">htmlEncode</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value,\n          boolean&nbsp;replaceSpecialChars,\n          boolean&nbsp;nbsp)</code>&nbsp;</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#isFalsey-java.lang.String-\">isFalsey</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#isTruthy-java.lang.String-\">isTruthy</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#join-java.lang.Iterable-java.lang.String-\">join</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;tokens,\n    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;delimiter)</code>&nbsp;</td>\n</tr>\n<tr id=\"i24\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#join-java.lang.String:A-java.lang.String-\">join</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;tokens,\n    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;delimiter)</code>&nbsp;</td>\n</tr>\n<tr id=\"i25\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#join-java.lang.String:A-java.lang.String-int-\">join</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;tokens,\n    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;delimiter,\n    int&nbsp;limit)</code>&nbsp;</td>\n</tr>\n<tr id=\"i26\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#join-java.lang.String:A-java.lang.String-int-int-\">join</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;tokens,\n    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;delimiter,\n    int&nbsp;startIndex,\n    int&nbsp;limit)</code>&nbsp;</td>\n</tr>\n<tr id=\"i27\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#levenshtein-java.lang.String-java.lang.String-\">levenshtein</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s1,\n           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s2)</code>\n<div class=\"block\">Returns the Levenshtein edit distance between the two given strings;\n the number of characters that must be added, removed, or modified to\n turn the one string into the other.</div>\n</td>\n</tr>\n<tr id=\"i28\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#nCopies-java.lang.String-int-\">nCopies</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s,\n       int&nbsp;n)</code>\n<div class=\"block\">Returns a string that contains s repeated n times.</div>\n</td>\n</tr>\n<tr id=\"i29\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#numberLines-java.lang.String-\">numberLines</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>&nbsp;</td>\n</tr>\n<tr id=\"i30\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#padL-int-int-\">padL</a></span>(int&nbsp;s,\n    int&nbsp;width)</code>&nbsp;</td>\n</tr>\n<tr id=\"i31\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#padL-java.lang.String-int-\">padL</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s,\n    int&nbsp;width)</code>&nbsp;</td>\n</tr>\n<tr id=\"i32\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#padNumber-int-int-\">padNumber</a></span>(int&nbsp;n,\n         int&nbsp;length)</code>&nbsp;</td>\n</tr>\n<tr id=\"i33\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#padNumber-int-int-boolean-\">padNumber</a></span>(int&nbsp;n,\n         int&nbsp;length,\n         boolean&nbsp;html)</code>&nbsp;</td>\n</tr>\n<tr id=\"i34\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#padR-int-int-\">padR</a></span>(int&nbsp;s,\n    int&nbsp;width)</code>&nbsp;</td>\n</tr>\n<tr id=\"i35\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#padR-java.lang.String-int-\">padR</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s,\n    int&nbsp;width)</code>&nbsp;</td>\n</tr>\n<tr id=\"i36\" class=\"altColor\">\n<td class=\"colFirst\"><code>static boolean[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#parseBooleanArray-java.lang.String-\">parseBooleanArray</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>&nbsp;</td>\n</tr>\n<tr id=\"i37\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static char[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#parseCharArray-java.lang.String-\">parseCharArray</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>&nbsp;</td>\n</tr>\n<tr id=\"i38\" class=\"altColor\">\n<td class=\"colFirst\"><code>static double[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#parseDoubleArray-java.lang.String-\">parseDoubleArray</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>&nbsp;</td>\n</tr>\n<tr id=\"i39\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static int[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#parseIntArray-java.lang.String-\">parseIntArray</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>&nbsp;</td>\n</tr>\n<tr id=\"i40\" class=\"altColor\">\n<td class=\"colFirst\"><code>static int[][]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#parseIntArray2D-java.lang.String-\">parseIntArray2D</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>&nbsp;</td>\n</tr>\n<tr id=\"i41\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#parsePoint-java.lang.String-\">parsePoint</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i42\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#parseStringArray-java.lang.String-\">parseStringArray</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>&nbsp;</td>\n</tr>\n<tr id=\"i43\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#plural-int-\">plural</a></span>(int&nbsp;n)</code>&nbsp;</td>\n</tr>\n<tr id=\"i44\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#removeWhitespace-java.lang.String-\">removeWhitespace</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>&nbsp;</td>\n</tr>\n<tr id=\"i45\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#sortChars-java.lang.String-\">sortChars</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>&nbsp;</td>\n</tr>\n<tr id=\"i46\" class=\"altColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#stringIsBoolean-java.lang.String-\">stringIsBoolean</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</code>&nbsp;</td>\n</tr>\n<tr id=\"i47\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#stringIsDouble-java.lang.String-\">stringIsDouble</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</code>&nbsp;</td>\n</tr>\n<tr id=\"i48\" class=\"altColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#stringIsInteger-java.lang.String-\">stringIsInteger</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</code>&nbsp;</td>\n</tr>\n<tr id=\"i49\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#stringIsInteger-java.lang.String-int-\">stringIsInteger</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n               int&nbsp;radix)</code>&nbsp;</td>\n</tr>\n<tr id=\"i50\" class=\"altColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#stringIsReal-java.lang.String-\">stringIsReal</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</code>&nbsp;</td>\n</tr>\n<tr id=\"i51\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#toAsciiDump-java.lang.String-\">toAsciiDump</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>&nbsp;</td>\n</tr>\n<tr id=\"i52\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#toPrintableChar-char-\">toPrintableChar</a></span>(char&nbsp;c)</code>&nbsp;</td>\n</tr>\n<tr id=\"i53\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#toString-java.awt.Point-\">toString</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;p)</code>&nbsp;</td>\n</tr>\n<tr id=\"i54\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#trimBlankLines-java.lang.String-\">trimBlankLines</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>\n<div class=\"block\">Removes any blank lines (just \\n or spaces/tabs followed by \\n) from the\n start/end of s.</div>\n</td>\n</tr>\n<tr id=\"i55\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#trimEnd-java.lang.String-\">trimEnd</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>&nbsp;</td>\n</tr>\n<tr id=\"i56\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#trimEndsOfLines-java.lang.String-\">trimEndsOfLines</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>&nbsp;</td>\n</tr>\n<tr id=\"i57\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#trimLines-java.lang.String-\">trimLines</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>\n<div class=\"block\">Trims out any leading/trailing whitespace from all lines of string s.</div>\n</td>\n</tr>\n<tr id=\"i58\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#trimR-java.lang.String-\">trimR</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>&nbsp;</td>\n</tr>\n<tr id=\"i59\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#truncate-java.lang.String-int-\">truncate</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s,\n        int&nbsp;length)</code>\n<div class=\"block\">Trims the given string to be at most the given number of characters in length.</div>\n</td>\n</tr>\n<tr id=\"i60\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#truncate-java.lang.String-int-java.lang.String-\">truncate</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s,\n        int&nbsp;length,\n        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;suffix)</code>\n<div class=\"block\">Trims the given string to be at most the given number of characters in length.</div>\n</td>\n</tr>\n<tr id=\"i61\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#unindent-java.lang.String-\">unindent</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>\n<div class=\"block\">Looks at all lines of the given string, figuring out how 'indented' each\n line is; then removes the longest common indentation prefix string that\n occurs in all lines.</div>\n</td>\n</tr>\n<tr id=\"i62\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#untabify-java.lang.String-\">untabify</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>\n<div class=\"block\">Replaces tabs with a string of spaces of a default width.</div>\n</td>\n</tr>\n<tr id=\"i63\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#untabify-java.lang.String-int-\">untabify</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s,\n        int&nbsp;tabWidth)</code>\n<div class=\"block\">Replaces tabs with a string of spaces of the given width.</div>\n</td>\n</tr>\n<tr id=\"i64\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#urlDecode-java.lang.String-\">urlDecode</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>&nbsp;</td>\n</tr>\n<tr id=\"i65\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#urlEncode-java.lang.String-\">urlEncode</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>&nbsp;</td>\n</tr>\n<tr id=\"i66\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/StringUtils.html#wrapLines-java.lang.String-int-\">wrapLines</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s,\n         int&nbsp;length)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"DEFAULT_TAB_WIDTH\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>DEFAULT_TAB_WIDTH</h4>\n<pre>public static final&nbsp;int DEFAULT_TAB_WIDTH</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#stanford.cs106.util.StringUtils.DEFAULT_TAB_WIDTH\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"TAB_STRING\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>TAB_STRING</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> TAB_STRING</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#stanford.cs106.util.StringUtils.TAB_STRING\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"escape-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>escape</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;escape(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n</li>\n</ul>\n<a name=\"fitToWidth-java.lang.String-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fitToWidth</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fitToWidth(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value,\n                                int&nbsp;width)</pre>\n</li>\n</ul>\n<a name=\"fitToHeight-java.lang.String-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fitToHeight</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fitToHeight(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value,\n                                 int&nbsp;height)</pre>\n</li>\n</ul>\n<a name=\"fitToBox-java.lang.String-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fitToBox</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fitToBox(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value,\n                              int&nbsp;width,\n                              int&nbsp;height)</pre>\n</li>\n</ul>\n<a name=\"fitToBox-java.lang.String-int-int-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fitToBox</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fitToBox(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value,\n                              int&nbsp;width,\n                              int&nbsp;height,\n                              boolean&nbsp;html)</pre>\n</li>\n</ul>\n<a name=\"formatDoubleLikeCpp-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>formatDoubleLikeCpp</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;formatDoubleLikeCpp(double&nbsp;value)</pre>\n<div class=\"block\">Tries to format double the C++ iostream way, with up to 6 digits shown after the decimal point.</div>\n</li>\n</ul>\n<a name=\"getWidth-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getWidth</h4>\n<pre>public static&nbsp;int&nbsp;getWidth(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"getHeight-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getHeight</h4>\n<pre>public static&nbsp;int&nbsp;getHeight(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"htmlDecode-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>htmlDecode</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;htmlDecode(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"htmlDecode-java.lang.String-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>htmlDecode</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;htmlDecode(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value,\n                                boolean&nbsp;replaceSpecialChars)</pre>\n</li>\n</ul>\n<a name=\"htmlEncode-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>htmlEncode</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;htmlEncode(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"htmlEncode-java.lang.String-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>htmlEncode</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;htmlEncode(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value,\n                                boolean&nbsp;replaceSpecialChars)</pre>\n</li>\n</ul>\n<a name=\"htmlEncode-java.lang.String-boolean-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>htmlEncode</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;htmlEncode(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value,\n                                boolean&nbsp;replaceSpecialChars,\n                                boolean&nbsp;nbsp)</pre>\n</li>\n</ul>\n<a name=\"htmlEncode-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>htmlEncode</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;htmlEncode(int&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"htmlEncode-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>htmlEncode</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;htmlEncode(double&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"htmlEncode-char-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>htmlEncode</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;htmlEncode(char&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"htmlEncode-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>htmlEncode</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;htmlEncode(boolean&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"htmlEncode-long-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>htmlEncode</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;htmlEncode(long&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"htmlEncode-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>htmlEncode</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;htmlEncode(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"isFalsey-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isFalsey</h4>\n<pre>public static&nbsp;boolean&nbsp;isFalsey(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"isTruthy-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isTruthy</h4>\n<pre>public static&nbsp;boolean&nbsp;isTruthy(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"join-java.lang.String:A-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>join</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;join(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;tokens,\n                          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;delimiter)</pre>\n</li>\n</ul>\n<a name=\"join-java.lang.String:A-java.lang.String-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>join</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;join(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;tokens,\n                          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;delimiter,\n                          int&nbsp;limit)</pre>\n</li>\n</ul>\n<a name=\"join-java.lang.String:A-java.lang.String-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>join</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;join(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;tokens,\n                          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;delimiter,\n                          int&nbsp;startIndex,\n                          int&nbsp;limit)</pre>\n</li>\n</ul>\n<a name=\"join-java.lang.Iterable-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>join</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;join(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;tokens,\n                          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;delimiter)</pre>\n</li>\n</ul>\n<a name=\"levenshtein-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>levenshtein</h4>\n<pre>public static&nbsp;int&nbsp;levenshtein(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s1,\n                              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s2)</pre>\n<div class=\"block\">Returns the Levenshtein edit distance between the two given strings;\n the number of characters that must be added, removed, or modified to\n turn the one string into the other.\n Case-insensitive.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><code>http://en.wikipedia.org/wiki/Levenshtein_distance</code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"nCopies-java.lang.String-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>nCopies</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;nCopies(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s,\n                             int&nbsp;n)</pre>\n<div class=\"block\">Returns a string that contains s repeated n times.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>s</code> - string to repeat.  if s is null, returns null.</dd>\n<dd><code>n</code> - number of repetitions.  if <= 0, returns \"\".</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the repeated string</dd>\n</dl>\n</li>\n</ul>\n<a name=\"numberLines-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>numberLines</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;numberLines(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n</li>\n</ul>\n<a name=\"padL-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>padL</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;padL(int&nbsp;s,\n                          int&nbsp;width)</pre>\n</li>\n</ul>\n<a name=\"padL-java.lang.String-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>padL</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;padL(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s,\n                          int&nbsp;width)</pre>\n</li>\n</ul>\n<a name=\"padR-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>padR</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;padR(int&nbsp;s,\n                          int&nbsp;width)</pre>\n</li>\n</ul>\n<a name=\"padR-java.lang.String-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>padR</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;padR(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s,\n                          int&nbsp;width)</pre>\n</li>\n</ul>\n<a name=\"padNumber-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>padNumber</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;padNumber(int&nbsp;n,\n                               int&nbsp;length)</pre>\n</li>\n</ul>\n<a name=\"padNumber-int-int-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>padNumber</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;padNumber(int&nbsp;n,\n                               int&nbsp;length,\n                               boolean&nbsp;html)</pre>\n</li>\n</ul>\n<a name=\"parseBooleanArray-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>parseBooleanArray</h4>\n<pre>public static&nbsp;boolean[]&nbsp;parseBooleanArray(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n</li>\n</ul>\n<a name=\"parseCharArray-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>parseCharArray</h4>\n<pre>public static&nbsp;char[]&nbsp;parseCharArray(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n</li>\n</ul>\n<a name=\"parseDoubleArray-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>parseDoubleArray</h4>\n<pre>public static&nbsp;double[]&nbsp;parseDoubleArray(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n</li>\n</ul>\n<a name=\"parseIntArray-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>parseIntArray</h4>\n<pre>public static&nbsp;int[]&nbsp;parseIntArray(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n</li>\n</ul>\n<a name=\"parseIntArray2D-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>parseIntArray2D</h4>\n<pre>public static&nbsp;int[][]&nbsp;parseIntArray2D(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n</li>\n</ul>\n<a name=\"parseStringArray-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>parseStringArray</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;parseStringArray(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n</li>\n</ul>\n<a name=\"parsePoint-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>parsePoint</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;parsePoint(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"plural-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>plural</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;plural(int&nbsp;n)</pre>\n</li>\n</ul>\n<a name=\"equalsIgnoreWhitespace-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>equalsIgnoreWhitespace</h4>\n<pre>public static&nbsp;boolean&nbsp;equalsIgnoreWhitespace(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s1,\n                                             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s2)</pre>\n</li>\n</ul>\n<a name=\"equalsIgnoreWhitespace-java.lang.String-java.lang.String-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>equalsIgnoreWhitespace</h4>\n<pre>public static&nbsp;boolean&nbsp;equalsIgnoreWhitespace(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s1,\n                                             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s2,\n                                             boolean&nbsp;ignoreCase)</pre>\n</li>\n</ul>\n<a name=\"removeWhitespace-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeWhitespace</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;removeWhitespace(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n</li>\n</ul>\n<a name=\"sortChars-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>sortChars</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;sortChars(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n</li>\n</ul>\n<a name=\"stringIsBoolean-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>stringIsBoolean</h4>\n<pre>public static&nbsp;boolean&nbsp;stringIsBoolean(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</pre>\n</li>\n</ul>\n<a name=\"stringIsDouble-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>stringIsDouble</h4>\n<pre>public static&nbsp;boolean&nbsp;stringIsDouble(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</pre>\n</li>\n</ul>\n<a name=\"stringIsInteger-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>stringIsInteger</h4>\n<pre>public static&nbsp;boolean&nbsp;stringIsInteger(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</pre>\n</li>\n</ul>\n<a name=\"stringIsInteger-java.lang.String-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>stringIsInteger</h4>\n<pre>public static&nbsp;boolean&nbsp;stringIsInteger(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n                                      int&nbsp;radix)</pre>\n</li>\n</ul>\n<a name=\"stringIsReal-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>stringIsReal</h4>\n<pre>public static&nbsp;boolean&nbsp;stringIsReal(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</pre>\n</li>\n</ul>\n<a name=\"toAsciiDump-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>toAsciiDump</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;toAsciiDump(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n</li>\n</ul>\n<a name=\"toPrintableChar-char-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>toPrintableChar</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;toPrintableChar(char&nbsp;c)</pre>\n</li>\n</ul>\n<a name=\"toString-java.awt.Point-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>toString</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;toString(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;p)</pre>\n</li>\n</ul>\n<a name=\"trimBlankLines-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>trimBlankLines</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;trimBlankLines(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n<div class=\"block\">Removes any blank lines (just \\n or spaces/tabs followed by \\n) from the\n start/end of s.</div>\n</li>\n</ul>\n<a name=\"trimEnd-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>trimEnd</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;trimEnd(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n</li>\n</ul>\n<a name=\"trimR-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>trimR</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;trimR(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n</li>\n</ul>\n<a name=\"trimLines-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>trimLines</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;trimLines(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n<div class=\"block\">Trims out any leading/trailing whitespace from all lines of string s.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>null if s == null</dd>\n</dl>\n</li>\n</ul>\n<a name=\"trimEndsOfLines-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>trimEndsOfLines</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;trimEndsOfLines(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n</li>\n</ul>\n<a name=\"truncate-java.lang.String-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>truncate</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;truncate(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s,\n                              int&nbsp;length)</pre>\n<div class=\"block\">Trims the given string to be at most the given number of characters in length.\n Similar to fitToWidth, but doesn't put ... at end.</div>\n</li>\n</ul>\n<a name=\"truncate-java.lang.String-int-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>truncate</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;truncate(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s,\n                              int&nbsp;length,\n                              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;suffix)</pre>\n<div class=\"block\">Trims the given string to be at most the given number of characters in length.\n Similar to fitToWidth, but doesn't put ... at end.</div>\n</li>\n</ul>\n<a name=\"unindent-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>unindent</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;unindent(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n<div class=\"block\">Looks at all lines of the given string, figuring out how 'indented' each\n line is; then removes the longest common indentation prefix string that\n occurs in all lines.\n For example, if some lines are indented 8 spaces, some 16, and some 12,\n then each line starts with at least 8 spaces; so those 8 are stripped from\n each line to yield a string where some lines are indented 0 spaces,\n some 8, and some 4.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>null if s == null</dd>\n</dl>\n</li>\n</ul>\n<a name=\"untabify-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>untabify</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;untabify(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n<div class=\"block\">Replaces tabs with a string of spaces of a default width.</div>\n</li>\n</ul>\n<a name=\"untabify-java.lang.String-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>untabify</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;untabify(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s,\n                              int&nbsp;tabWidth)</pre>\n<div class=\"block\">Replaces tabs with a string of spaces of the given width.</div>\n</li>\n</ul>\n<a name=\"urlEncode-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>urlEncode</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;urlEncode(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n</li>\n</ul>\n<a name=\"urlDecode-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>urlDecode</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;urlDecode(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n</li>\n</ul>\n<a name=\"wrapLines-java.lang.String-int-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>wrapLines</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;wrapLines(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s,\n                               int&nbsp;length)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/util/Stanford.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/util/SystemProperties.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/util/StringUtils.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"StringUtils.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/util/SystemProperties.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:02 PDT 2017 -->\n<title>SystemProperties</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"SystemProperties\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9,\"i2\":9,\"i3\":9,\"i4\":9,\"i5\":9,\"i6\":9,\"i7\":9,\"i8\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/util/SystemProperties.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"SystemProperties.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.util</div>\n<h2 title=\"Class SystemProperties\" class=\"title\">Class SystemProperties</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.util.SystemProperties</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public final class <span class=\"typeNameLabel\">SystemProperties</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/SystemProperties.html#getSystemProperty-java.lang.String-\">getSystemProperty</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/SystemProperties.html#getSystemPropertyBoolean-java.lang.String-\">getSystemPropertyBoolean</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/SystemProperties.html#getSystemPropertyBoolean-java.lang.String-boolean-\">getSystemPropertyBoolean</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n                        boolean&nbsp;defaultValue)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/SystemProperties.html#getSystemPropertyDouble-java.lang.String-\">getSystemPropertyDouble</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>static double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/SystemProperties.html#getSystemPropertyDouble-java.lang.String-double-\">getSystemPropertyDouble</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n                       double&nbsp;defaultValue)</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/SystemProperties.html#getSystemPropertyInt-java.lang.String-\">getSystemPropertyInt</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/SystemProperties.html#getSystemPropertyInt-java.lang.String-int-\">getSystemPropertyInt</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n                    int&nbsp;defaultValue)</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/SystemProperties.html#hasSystemProperty-java.lang.String-\">hasSystemProperty</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/SystemProperties.html#setSystemProperty-java.lang.String-java.lang.String-\">setSystemProperty</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"hasSystemProperty-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hasSystemProperty</h4>\n<pre>public static&nbsp;boolean&nbsp;hasSystemProperty(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n</li>\n</ul>\n<a name=\"getSystemProperty-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSystemProperty</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getSystemProperty(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n</li>\n</ul>\n<a name=\"getSystemPropertyInt-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSystemPropertyInt</h4>\n<pre>public static&nbsp;int&nbsp;getSystemPropertyInt(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n</li>\n</ul>\n<a name=\"getSystemPropertyInt-java.lang.String-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSystemPropertyInt</h4>\n<pre>public static&nbsp;int&nbsp;getSystemPropertyInt(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n                                       int&nbsp;defaultValue)</pre>\n</li>\n</ul>\n<a name=\"getSystemPropertyDouble-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSystemPropertyDouble</h4>\n<pre>public static&nbsp;double&nbsp;getSystemPropertyDouble(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n</li>\n</ul>\n<a name=\"getSystemPropertyDouble-java.lang.String-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSystemPropertyDouble</h4>\n<pre>public static&nbsp;double&nbsp;getSystemPropertyDouble(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n                                             double&nbsp;defaultValue)</pre>\n</li>\n</ul>\n<a name=\"getSystemPropertyBoolean-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSystemPropertyBoolean</h4>\n<pre>public static&nbsp;boolean&nbsp;getSystemPropertyBoolean(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n</li>\n</ul>\n<a name=\"getSystemPropertyBoolean-java.lang.String-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSystemPropertyBoolean</h4>\n<pre>public static&nbsp;boolean&nbsp;getSystemPropertyBoolean(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n                                               boolean&nbsp;defaultValue)</pre>\n</li>\n</ul>\n<a name=\"setSystemProperty-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>setSystemProperty</h4>\n<pre>public static&nbsp;void&nbsp;setSystemProperty(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n                                     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/util/SystemProperties.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"SystemProperties.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/util/XmlUtils.XmlRuntimeException.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:03 PDT 2017 -->\n<title>XmlUtils.XmlRuntimeException</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"XmlUtils.XmlRuntimeException\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li>Next&nbsp;Class</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/util/XmlUtils.XmlRuntimeException.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"XmlUtils.XmlRuntimeException.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#methods.inherited.from.class.java.lang.Throwable\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li>Method</li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.util</div>\n<h2 title=\"Class XmlUtils.XmlRuntimeException\" class=\"title\">Class XmlUtils.XmlRuntimeException</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Throwable</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Exception</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.RuntimeException</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.util.XmlUtils.XmlRuntimeException</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a></dd>\n</dl>\n<dl>\n<dt>Enclosing class:</dt>\n<dd><a href=\"../../../stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\">XmlUtils</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public static class <span class=\"typeNameLabel\">XmlUtils.XmlRuntimeException</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.html?is-external=true\" title=\"class or interface in java.lang\">RuntimeException</a></pre>\n<div class=\"block\">Represents exceptions that can occur while processing XML text.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../serialized-form.html#stanford.cs106.util.XmlUtils.XmlRuntimeException\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/XmlUtils.XmlRuntimeException.html#XmlRuntimeException-java.lang.String-\">XmlRuntimeException</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message)</code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/XmlUtils.XmlRuntimeException.html#XmlRuntimeException-java.lang.String-java.lang.Throwable-\">XmlRuntimeException</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;cause)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Throwable\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#addSuppressed-java.lang.Throwable-\" title=\"class or interface in java.lang\">addSuppressed</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#fillInStackTrace--\" title=\"class or interface in java.lang\">fillInStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getCause--\" title=\"class or interface in java.lang\">getCause</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getLocalizedMessage--\" title=\"class or interface in java.lang\">getLocalizedMessage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getMessage--\" title=\"class or interface in java.lang\">getMessage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getStackTrace--\" title=\"class or interface in java.lang\">getStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getSuppressed--\" title=\"class or interface in java.lang\">getSuppressed</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#initCause-java.lang.Throwable-\" title=\"class or interface in java.lang\">initCause</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#printStackTrace--\" title=\"class or interface in java.lang\">printStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#printStackTrace-java.io.PrintStream-\" title=\"class or interface in java.lang\">printStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#printStackTrace-java.io.PrintWriter-\" title=\"class or interface in java.lang\">printStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#setStackTrace-java.lang.StackTraceElement:A-\" title=\"class or interface in java.lang\">setStackTrace</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"XmlRuntimeException-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>XmlRuntimeException</h4>\n<pre>public&nbsp;XmlRuntimeException(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message)</pre>\n</li>\n</ul>\n<a name=\"XmlRuntimeException-java.lang.String-java.lang.Throwable-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>XmlRuntimeException</h4>\n<pre>public&nbsp;XmlRuntimeException(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;message,\n                           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\">Throwable</a>&nbsp;cause)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li>Next&nbsp;Class</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/util/XmlUtils.XmlRuntimeException.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"XmlUtils.XmlRuntimeException.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#methods.inherited.from.class.java.lang.Throwable\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li>Method</li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/util/XmlUtils.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:03 PDT 2017 -->\n<title>XmlUtils</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"XmlUtils\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9,\"i2\":9,\"i3\":9,\"i4\":9,\"i5\":9,\"i6\":9,\"i7\":9,\"i8\":9,\"i9\":9,\"i10\":9,\"i11\":9,\"i12\":9,\"i13\":9,\"i14\":9,\"i15\":9,\"i16\":9,\"i17\":9,\"i18\":9,\"i19\":9,\"i20\":9,\"i21\":9,\"i22\":9,\"i23\":9,\"i24\":9,\"i25\":9,\"i26\":9,\"i27\":9,\"i28\":9,\"i29\":9,\"i30\":9,\"i31\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/util/SystemProperties.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/util/XmlUtils.XmlRuntimeException.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/util/XmlUtils.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"XmlUtils.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.class.summary\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.cs106.util</div>\n<h2 title=\"Class XmlUtils\" class=\"title\">Class XmlUtils</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.cs106.util.XmlUtils</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">XmlUtils</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Nested Class Summary table, listing nested classes, and an explanation\">\n<caption><span>Nested Classes</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Class and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static class&nbsp;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/XmlUtils.XmlRuntimeException.html\" title=\"class in stanford.cs106.util\">XmlUtils.XmlRuntimeException</a></span></code>\n<div class=\"block\">Represents exceptions that can occur while processing XML text.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/XmlUtils.html#XML_EXTENSION\">XML_EXTENSION</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/XmlUtils.html#XmlUtils--\">XmlUtils</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/XmlUtils.html#attributeIsFalsey-org.w3c.dom.Node-java.lang.String-\">attributeIsFalsey</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/XmlUtils.html#attributeIsTruthy-org.w3c.dom.Node-java.lang.String-\">attributeIsTruthy</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/XmlUtils.html#ensureNotNull-java.lang.Object-java.lang.String-\">ensureNotNull</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;node,\n             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;tag)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/XmlUtils.html#getAttribute-org.w3c.dom.Node-java.lang.String-\">getAttribute</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>\n<div class=\"block\">Returns the value of the attribute of the given node with the given name.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/XmlUtils.html#getAttribute-org.w3c.dom.Node-java.lang.String-boolean-\">getAttribute</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n            boolean&nbsp;required)</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/XmlUtils.html#getAttribute-org.w3c.dom.Node-java.lang.String-boolean-java.lang.String-\">getAttribute</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n            boolean&nbsp;required,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;defaultValue)</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/XmlUtils.html#getAttributeAny-org.w3c.dom.Node-boolean-java.lang.String...-\">getAttributeAny</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n               boolean&nbsp;required,\n               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;names)</code>\n<div class=\"block\">Returns the value of the first attribute found with any of the given names, else null.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/XmlUtils.html#getAttributeAny-org.w3c.dom.Node-java.lang.String...-\">getAttributeAny</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;names)</code>\n<div class=\"block\">Returns the value of the first attribute found with any of the given names, else null.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/XmlUtils.html#getAttributeInt-org.w3c.dom.Node-java.lang.String-\">getAttributeInt</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/XmlUtils.html#getAttributeInt-org.w3c.dom.Node-java.lang.String-boolean-\">getAttributeInt</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n               boolean&nbsp;required)</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/XmlUtils.html#getAttributeInt-org.w3c.dom.Node-java.lang.String-boolean-int-\">getAttributeInt</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n               boolean&nbsp;required,\n               int&nbsp;defaultValue)</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/XmlUtils.html#getAttributeOrChild-org.w3c.dom.Node-java.lang.String-\">getAttributeOrChild</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>&nbsp;</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/XmlUtils.html#getAttributeOrChild-org.w3c.dom.Node-java.lang.String-boolean-\">getAttributeOrChild</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n                   boolean&nbsp;required)</code>\n<div class=\"block\">Returns the value of the attribute of the given node with the given name.</div>\n</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/XmlUtils.html#getAttributes-org.w3c.dom.Node-\">getAttributes</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node)</code>\n<div class=\"block\">Returns all attributes of the given XML node as a list of name=value strings.</div>\n</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/XmlUtils.html#getChildByTagName-org.w3c.dom.Node-java.lang.String-\">getChildByTagName</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;element)</code>&nbsp;</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/XmlUtils.html#getChildByTagName-org.w3c.dom.Node-java.lang.String-boolean-\">getChildByTagName</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;element,\n                 boolean&nbsp;required)</code>&nbsp;</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/XmlUtils.html#getChildNode-org.w3c.dom.Node-java.lang.String-\">getChildNode</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;element)</code>&nbsp;</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/XmlUtils.html#getChildNodes-org.w3c.dom.Node-java.lang.String...-\">getChildNodes</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;elements)</code>&nbsp;</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/XmlUtils.html#getChildrenByTagName-org.w3c.dom.Node-java.lang.String-\">getChildrenByTagName</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;element)</code>&nbsp;</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/XmlUtils.html#getChildrenByTagNames-org.w3c.dom.Node-java.lang.String...-\">getChildrenByTagNames</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n                     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;elements)</code>&nbsp;</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/XmlUtils.html#getChildValue-org.w3c.dom.Node-java.lang.String-\">getChildValue</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;element)</code>&nbsp;</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/XmlUtils.html#getChildValue-org.w3c.dom.Node-java.lang.String-boolean-\">getChildValue</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;element,\n             boolean&nbsp;required)</code>&nbsp;</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Element.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Element</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/XmlUtils.html#getElementByTagName-org.w3c.dom.Document-java.lang.String-\">getElementByTagName</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Document.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Document</a>&nbsp;document,\n                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;element)</code>&nbsp;</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/XmlUtils.html#getTextContent-org.w3c.dom.Node-\">getTextContent</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node)</code>&nbsp;</td>\n</tr>\n<tr id=\"i24\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/XmlUtils.html#getTextContent-org.w3c.dom.Node-boolean-\">getTextContent</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n              boolean&nbsp;trim)</code>&nbsp;</td>\n</tr>\n<tr id=\"i25\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/XmlUtils.html#hasAttribute-org.w3c.dom.Node-java.lang.String-\">hasAttribute</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>\n<div class=\"block\">Returns whether the given XML DOM node contains the given attribute.</div>\n</td>\n</tr>\n<tr id=\"i26\" class=\"altColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/XmlUtils.html#hasAttributeAny-org.w3c.dom.Node-java.lang.String...-\">hasAttributeAny</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;names)</code>\n<div class=\"block\">Returns the value of the first attribute found with any of the given names, else null.</div>\n</td>\n</tr>\n<tr id=\"i27\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/XmlUtils.html#hasAttributes-org.w3c.dom.Node-java.lang.String...-\">hasAttributes</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;names)</code>\n<div class=\"block\">Returns whether the given XML DOM node contains all of the given attributes.</div>\n</td>\n</tr>\n<tr id=\"i28\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/XmlUtils.html#requireAttributes-org.w3c.dom.Node-java.lang.String...-\">requireAttributes</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;names)</code>\n<div class=\"block\">Ensures that the given XML DOM node contains all of the given attributes.</div>\n</td>\n</tr>\n<tr id=\"i29\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/XmlUtils.html#setAttribute-org.w3c.dom.Node-java.lang.String-java.lang.String-\">setAttribute</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i30\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/XmlUtils.html#up-org.w3c.dom.Node-java.lang.String-\">up</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;element)</code>&nbsp;</td>\n</tr>\n<tr id=\"i31\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../../stanford/cs106/util/XmlUtils.html#validate-java.lang.String-java.lang.String-\">validate</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;xmlFileName,\n        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;schemaFileName)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"XML_EXTENSION\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>XML_EXTENSION</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> XML_EXTENSION</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../../constant-values.html#stanford.cs106.util.XmlUtils.XML_EXTENSION\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"XmlUtils--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>XmlUtils</h4>\n<pre>public&nbsp;XmlUtils()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"attributeIsFalsey-org.w3c.dom.Node-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>attributeIsFalsey</h4>\n<pre>public static&nbsp;boolean&nbsp;attributeIsFalsey(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n                                        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n</li>\n</ul>\n<a name=\"attributeIsTruthy-org.w3c.dom.Node-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>attributeIsTruthy</h4>\n<pre>public static&nbsp;boolean&nbsp;attributeIsTruthy(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n                                        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n</li>\n</ul>\n<a name=\"ensureNotNull-java.lang.Object-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>ensureNotNull</h4>\n<pre>public static&nbsp;void&nbsp;ensureNotNull(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;node,\n                                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;tag)</pre>\n</li>\n</ul>\n<a name=\"getAttribute-org.w3c.dom.Node-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getAttribute</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getAttribute(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n                                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n<div class=\"block\">Returns the value of the attribute of the given node with the given name.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>node</code> - the XML node to examine</dd>\n<dd><code>name</code> - the attribute name for which to retrieve the value</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the attribute value, or null if the attribute does not exist for this node</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setAttribute-org.w3c.dom.Node-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setAttribute</h4>\n<pre>public static&nbsp;void&nbsp;setAttribute(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n                                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n                                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"getAttribute-org.w3c.dom.Node-java.lang.String-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getAttribute</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getAttribute(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n                                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n                                  boolean&nbsp;required)</pre>\n</li>\n</ul>\n<a name=\"getAttribute-org.w3c.dom.Node-java.lang.String-boolean-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getAttribute</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getAttribute(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n                                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n                                  boolean&nbsp;required,\n                                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;defaultValue)</pre>\n</li>\n</ul>\n<a name=\"getAttributeInt-org.w3c.dom.Node-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getAttributeInt</h4>\n<pre>public static&nbsp;int&nbsp;getAttributeInt(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n                                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n</li>\n</ul>\n<a name=\"getAttributeInt-org.w3c.dom.Node-java.lang.String-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getAttributeInt</h4>\n<pre>public static&nbsp;int&nbsp;getAttributeInt(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n                                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n                                  boolean&nbsp;required)</pre>\n</li>\n</ul>\n<a name=\"getAttributeInt-org.w3c.dom.Node-java.lang.String-boolean-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getAttributeInt</h4>\n<pre>public static&nbsp;int&nbsp;getAttributeInt(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n                                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n                                  boolean&nbsp;required,\n                                  int&nbsp;defaultValue)</pre>\n</li>\n</ul>\n<a name=\"getAttributeAny-org.w3c.dom.Node-java.lang.String...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getAttributeAny</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getAttributeAny(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n                                     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;names)</pre>\n<div class=\"block\">Returns the value of the first attribute found with any of the given names, else null.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>node</code> - the XML node to examine</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the attribute value, or null if the attribute does not exist for this node</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getAttributeAny-org.w3c.dom.Node-boolean-java.lang.String...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getAttributeAny</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getAttributeAny(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n                                     boolean&nbsp;required,\n                                     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;names)</pre>\n<div class=\"block\">Returns the value of the first attribute found with any of the given names, else null.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>node</code> - the XML node to examine</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the attribute value, or null if the attribute does not exist for this node</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getAttributeOrChild-org.w3c.dom.Node-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getAttributeOrChild</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getAttributeOrChild(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n                                         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n</li>\n</ul>\n<a name=\"getAttributeOrChild-org.w3c.dom.Node-java.lang.String-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getAttributeOrChild</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getAttributeOrChild(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n                                         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name,\n                                         boolean&nbsp;required)</pre>\n<div class=\"block\">Returns the value of the attribute of the given node with the given name.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>node</code> - the XML node to examine</dd>\n<dd><code>name</code> - the attribute name for which to retrieve the value</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the attribute value, or null if the attribute does not exist for this node</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getAttributes-org.w3c.dom.Node-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getAttributes</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;getAttributes(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node)</pre>\n<div class=\"block\">Returns all attributes of the given XML node as a list of name=value strings.\n Mostly just for debugging.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>node</code> - </dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n</dl>\n</li>\n</ul>\n<a name=\"getChildNode-org.w3c.dom.Node-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getChildNode</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;getChildNode(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n                                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;element)</pre>\n</li>\n</ul>\n<a name=\"getChildNodes-org.w3c.dom.Node-java.lang.String...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getChildNodes</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&gt;&nbsp;getChildNodes(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n                                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;elements)</pre>\n</li>\n</ul>\n<a name=\"getChildValue-org.w3c.dom.Node-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getChildValue</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getChildValue(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;element)</pre>\n</li>\n</ul>\n<a name=\"getChildValue-org.w3c.dom.Node-java.lang.String-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getChildValue</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getChildValue(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;element,\n                                   boolean&nbsp;required)</pre>\n</li>\n</ul>\n<a name=\"getChildByTagName-org.w3c.dom.Node-java.lang.String-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getChildByTagName</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;getChildByTagName(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n                                     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;element,\n                                     boolean&nbsp;required)</pre>\n</li>\n</ul>\n<a name=\"getChildByTagName-org.w3c.dom.Node-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getChildByTagName</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;getChildByTagName(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n                                     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;element)</pre>\n</li>\n</ul>\n<a name=\"getChildrenByTagName-org.w3c.dom.Node-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getChildrenByTagName</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&gt;&nbsp;getChildrenByTagName(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n                                              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;element)</pre>\n</li>\n</ul>\n<a name=\"getChildrenByTagNames-org.w3c.dom.Node-java.lang.String...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getChildrenByTagNames</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true\" title=\"class or interface in java.util\">List</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&gt;&nbsp;getChildrenByTagNames(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n                                               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;elements)</pre>\n</li>\n</ul>\n<a name=\"getElementByTagName-org.w3c.dom.Document-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getElementByTagName</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Element.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Element</a>&nbsp;getElementByTagName(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Document.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Document</a>&nbsp;document,\n                                          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;element)</pre>\n</li>\n</ul>\n<a name=\"getTextContent-org.w3c.dom.Node-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getTextContent</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getTextContent(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node)</pre>\n</li>\n</ul>\n<a name=\"getTextContent-org.w3c.dom.Node-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getTextContent</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getTextContent(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n                                    boolean&nbsp;trim)</pre>\n</li>\n</ul>\n<a name=\"hasAttribute-org.w3c.dom.Node-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hasAttribute</h4>\n<pre>public static&nbsp;boolean&nbsp;hasAttribute(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n                                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n<div class=\"block\">Returns whether the given XML DOM node contains the given attribute.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>node</code> - the XML node to examine</dd>\n<dd><code>name</code> - an attribute name to check</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>true if the attribute exists, false if not</dd>\n</dl>\n</li>\n</ul>\n<a name=\"hasAttributeAny-org.w3c.dom.Node-java.lang.String...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hasAttributeAny</h4>\n<pre>public static&nbsp;boolean&nbsp;hasAttributeAny(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n                                      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;names)</pre>\n<div class=\"block\">Returns the value of the first attribute found with any of the given names, else null.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>node</code> - the XML node to examine</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the attribute value, or null if the attribute does not exist for this node</dd>\n</dl>\n</li>\n</ul>\n<a name=\"hasAttributes-org.w3c.dom.Node-java.lang.String...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hasAttributes</h4>\n<pre>public static&nbsp;boolean&nbsp;hasAttributes(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n                                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;names)</pre>\n<div class=\"block\">Returns whether the given XML DOM node contains all of the given attributes.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>node</code> - the XML node to examine</dd>\n<dd><code>names</code> - a variable-length list of attribute names to check</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>true if all attributes exist, false if not</dd>\n</dl>\n</li>\n</ul>\n<a name=\"requireAttributes-org.w3c.dom.Node-java.lang.String...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>requireAttributes</h4>\n<pre>public static&nbsp;void&nbsp;requireAttributes(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n                                     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>...&nbsp;names)</pre>\n<div class=\"block\">Ensures that the given XML DOM node contains all of the given attributes.\n Throws an exception if any attribute is not found.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>node</code> - the XML node to examine</dd>\n<dd><code>names</code> - a variable-length list of attribute names to check</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/xml/stream/XMLStreamException.html?is-external=true\" title=\"class or interface in javax.xml.stream\">XMLStreamException</a></code> - if any attribute is not found</dd>\n</dl>\n</li>\n</ul>\n<a name=\"validate-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>validate</h4>\n<pre>public static&nbsp;void&nbsp;validate(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;xmlFileName,\n                            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;schemaFileName)\n                     throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a>,\n                            <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/xml/parsers/ParserConfigurationException.html?is-external=true\" title=\"class or interface in javax.xml.parsers\">ParserConfigurationException</a>,\n                            <a href=\"https://docs.oracle.com/javase/8/docs/api/org/xml/sax/SAXException.html?is-external=true\" title=\"class or interface in org.xml.sax\">SAXException</a></pre>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/xml/parsers/ParserConfigurationException.html?is-external=true\" title=\"class or interface in javax.xml.parsers\">ParserConfigurationException</a></code></dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/org/xml/sax/SAXException.html?is-external=true\" title=\"class or interface in org.xml.sax\">SAXException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"up-org.w3c.dom.Node-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>up</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;up(<a href=\"https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Node.html?is-external=true\" title=\"class or interface in org.w3c.dom\">Node</a>&nbsp;node,\n                      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;element)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/util/SystemProperties.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../../stanford/cs106/util/XmlUtils.XmlRuntimeException.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/util/XmlUtils.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"XmlUtils.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.class.summary\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/util/package-frame.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>stanford.cs106.util</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<h1 class=\"bar\"><a href=\"../../../stanford/cs106/util/package-summary.html\" target=\"classFrame\">stanford.cs106.util</a></h1>\n<div class=\"indexContainer\">\n<h2 title=\"Classes\">Classes</h2>\n<ul title=\"Classes\">\n<li><a href=\"CollectionUtils.html\" title=\"class in stanford.cs106.util\" target=\"classFrame\">CollectionUtils</a></li>\n<li><a href=\"ConstantUtils.html\" title=\"class in stanford.cs106.util\" target=\"classFrame\">ConstantUtils</a></li>\n<li><a href=\"ExceptionUtils.html\" title=\"class in stanford.cs106.util\" target=\"classFrame\">ExceptionUtils</a></li>\n<li><a href=\"ProcessUtils.html\" title=\"class in stanford.cs106.util\" target=\"classFrame\">ProcessUtils</a></li>\n<li><a href=\"RandomGenerator.html\" title=\"class in stanford.cs106.util\" target=\"classFrame\">RandomGenerator</a></li>\n<li><a href=\"RecursionUtils.html\" title=\"class in stanford.cs106.util\" target=\"classFrame\">RecursionUtils</a></li>\n<li><a href=\"Stanford.html\" title=\"class in stanford.cs106.util\" target=\"classFrame\">Stanford</a></li>\n<li><a href=\"StringUtils.html\" title=\"class in stanford.cs106.util\" target=\"classFrame\">StringUtils</a></li>\n<li><a href=\"SystemProperties.html\" title=\"class in stanford.cs106.util\" target=\"classFrame\">SystemProperties</a></li>\n<li><a href=\"XmlUtils.html\" title=\"class in stanford.cs106.util\" target=\"classFrame\">XmlUtils</a></li>\n</ul>\n<h2 title=\"Enums\">Enums</h2>\n<ul title=\"Enums\">\n<li><a href=\"OperatingSystem.html\" title=\"enum in stanford.cs106.util\" target=\"classFrame\">OperatingSystem</a></li>\n</ul>\n<h2 title=\"Exceptions\">Exceptions</h2>\n<ul title=\"Exceptions\">\n<li><a href=\"XmlUtils.XmlRuntimeException.html\" title=\"class in stanford.cs106.util\" target=\"classFrame\">XmlUtils.XmlRuntimeException</a></li>\n</ul>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/util/package-summary.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>stanford.cs106.util</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"stanford.cs106.util\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li class=\"navBarCell1Rev\">Package</li>\n<li>Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/reflect/package-summary.html\">Prev&nbsp;Package</a></li>\n<li><a href=\"../../../stanford/karel/package-summary.html\">Next&nbsp;Package</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/util/package-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 title=\"Package\" class=\"title\">Package&nbsp;stanford.cs106.util</h1>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Class Summary table, listing classes, and an explanation\">\n<caption><span>Class Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Class</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/util/CollectionUtils.html\" title=\"class in stanford.cs106.util\">CollectionUtils</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/util/ConstantUtils.html\" title=\"class in stanford.cs106.util\">ConstantUtils</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/util/ExceptionUtils.html\" title=\"class in stanford.cs106.util\">ExceptionUtils</a></td>\n<td class=\"colLast\">\n<div class=\"block\">This class contains utility code related to exceptions.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/util/ProcessUtils.html\" title=\"class in stanford.cs106.util\">ProcessUtils</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/util/RandomGenerator.html\" title=\"class in stanford.cs106.util\">RandomGenerator</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/util/RecursionUtils.html\" title=\"class in stanford.cs106.util\">RecursionUtils</a></td>\n<td class=\"colLast\">\n<div class=\"block\">A class with a few \"helper\" methods for recursion and backtracking.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/util/Stanford.html\" title=\"class in stanford.cs106.util\">Stanford</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\">StringUtils</a></td>\n<td class=\"colLast\">\n<div class=\"block\">This class contains utility code related to Strings and text processing.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/util/SystemProperties.html\" title=\"class in stanford.cs106.util\">SystemProperties</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\">XmlUtils</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Enum Summary table, listing enums, and an explanation\">\n<caption><span>Enum Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Enum</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/util/OperatingSystem.html\" title=\"enum in stanford.cs106.util\">OperatingSystem</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Exception Summary table, listing exceptions, and an explanation\">\n<caption><span>Exception Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Exception</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../../stanford/cs106/util/XmlUtils.XmlRuntimeException.html\" title=\"class in stanford.cs106.util\">XmlUtils.XmlRuntimeException</a></td>\n<td class=\"colLast\">\n<div class=\"block\">Represents exceptions that can occur while processing XML text.</div>\n</td>\n</tr>\n</tbody>\n</table>\n</li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li class=\"navBarCell1Rev\">Package</li>\n<li>Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/reflect/package-summary.html\">Prev&nbsp;Package</a></li>\n<li><a href=\"../../../stanford/karel/package-summary.html\">Next&nbsp;Package</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/util/package-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/cs106/util/package-tree.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>stanford.cs106.util Class Hierarchy</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"stanford.cs106.util Class Hierarchy\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/reflect/package-tree.html\">Prev</a></li>\n<li><a href=\"../../../stanford/karel/package-tree.html\">Next</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/util/package-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 class=\"title\">Hierarchy For Package stanford.cs106.util</h1>\n<span class=\"packageHierarchyLabel\">Package Hierarchies:</span>\n<ul class=\"horizontal\">\n<li><a href=\"../../../overview-tree.html\">All Packages</a></li>\n</ul>\n</div>\n<div class=\"contentContainer\">\n<h2 title=\"Class Hierarchy\">Class Hierarchy</h2>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Object</span></a>\n<ul>\n<li type=\"circle\">stanford.cs106.util.<a href=\"../../../stanford/cs106/util/CollectionUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">CollectionUtils</span></a></li>\n<li type=\"circle\">stanford.cs106.util.<a href=\"../../../stanford/cs106/util/ConstantUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">ConstantUtils</span></a></li>\n<li type=\"circle\">stanford.cs106.util.<a href=\"../../../stanford/cs106/util/ExceptionUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">ExceptionUtils</span></a></li>\n<li type=\"circle\">stanford.cs106.util.<a href=\"../../../stanford/cs106/util/ProcessUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">ProcessUtils</span></a></li>\n<li type=\"circle\">java.util.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true\" title=\"class or interface in java.util\"><span class=\"typeNameLink\">Random</span></a> (implements java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">acm.util.<a href=\"../../../acm/util/RandomGenerator.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">RandomGenerator</span></a>\n<ul>\n<li type=\"circle\">stanford.cs106.util.<a href=\"../../../stanford/cs106/util/RandomGenerator.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">RandomGenerator</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li type=\"circle\">stanford.cs106.util.<a href=\"../../../stanford/cs106/util/RecursionUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">RecursionUtils</span></a></li>\n<li type=\"circle\">stanford.cs106.util.<a href=\"../../../stanford/cs106/util/Stanford.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">Stanford</span></a></li>\n<li type=\"circle\">stanford.cs106.util.<a href=\"../../../stanford/cs106/util/StringUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">StringUtils</span></a></li>\n<li type=\"circle\">stanford.cs106.util.<a href=\"../../../stanford/cs106/util/SystemProperties.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">SystemProperties</span></a></li>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Throwable</span></a> (implements java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Exception</span></a>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">RuntimeException</span></a>\n<ul>\n<li type=\"circle\">stanford.cs106.util.<a href=\"../../../stanford/cs106/util/XmlUtils.XmlRuntimeException.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">XmlUtils.XmlRuntimeException</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li type=\"circle\">stanford.cs106.util.<a href=\"../../../stanford/cs106/util/XmlUtils.html\" title=\"class in stanford.cs106.util\"><span class=\"typeNameLink\">XmlUtils</span></a></li>\n</ul>\n</li>\n</ul>\n<h2 title=\"Enum Hierarchy\">Enum Hierarchy</h2>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Object</span></a>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Enum</span></a>&lt;E&gt; (implements java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;T&gt;, java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">stanford.cs106.util.<a href=\"../../../stanford/cs106/util/OperatingSystem.html\" title=\"enum in stanford.cs106.util\"><span class=\"typeNameLink\">OperatingSystem</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"../../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../../index-all.html\">Index</a></li>\n<li><a href=\"../../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../../stanford/cs106/reflect/package-tree.html\">Prev</a></li>\n<li><a href=\"../../../stanford/karel/package-tree.html\">Next</a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../../index.html?stanford/cs106/util/package-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/karel/Event.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:08 PDT 2017 -->\n<title>Event</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"Event\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Class</li>\n<li><a href=\"../../stanford/karel/HeadlessKarel.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/karel/Event.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Event.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.karel</div>\n<h2 title=\"Class Event\" class=\"title\">Class Event&lt;T&gt;</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true\" title=\"class or interface in java.util\">java.util.Observable</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.karel.Event&lt;T&gt;</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">Event&lt;T&gt;</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true\" title=\"class or interface in java.util\">Observable</a></pre>\n<div class=\"block\">An event is an improved version of a java.util.Observable.</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Event.html#Event--\">Event</a></span>()</code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Event.html#Event-java.lang.String-\">Event</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Event.html#add-java.util.Observer-\">add</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observer.html?is-external=true\" title=\"class or interface in java.util\">Observer</a>&nbsp;o)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Event.html#fire--\">fire</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Event.html#fire-T-\">fire</a></span>(<a href=\"../../stanford/karel/Event.html\" title=\"type parameter in Event\">T</a>&nbsp;arg)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Event.html#getName--\">getName</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Event.html#remove-java.util.Observer-\">remove</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observer.html?is-external=true\" title=\"class or interface in java.util\">Observer</a>&nbsp;o)</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Event.html#toString--\">toString</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.util.Observable\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.util.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true\" title=\"class or interface in java.util\">Observable</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#addObserver-java.util.Observer-\" title=\"class or interface in java.util\">addObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#clearChanged--\" title=\"class or interface in java.util\">clearChanged</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#countObservers--\" title=\"class or interface in java.util\">countObservers</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#deleteObserver-java.util.Observer-\" title=\"class or interface in java.util\">deleteObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#deleteObservers--\" title=\"class or interface in java.util\">deleteObservers</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#hasChanged--\" title=\"class or interface in java.util\">hasChanged</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#notifyObservers--\" title=\"class or interface in java.util\">notifyObservers</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#notifyObservers-java.lang.Object-\" title=\"class or interface in java.util\">notifyObservers</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#setChanged--\" title=\"class or interface in java.util\">setChanged</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"Event--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>Event</h4>\n<pre>public&nbsp;Event()</pre>\n</li>\n</ul>\n<a name=\"Event-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>Event</h4>\n<pre>public&nbsp;Event(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"add-java.util.Observer-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>public&nbsp;void&nbsp;add(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observer.html?is-external=true\" title=\"class or interface in java.util\">Observer</a>&nbsp;o)</pre>\n</li>\n</ul>\n<a name=\"remove-java.util.Observer-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>remove</h4>\n<pre>public&nbsp;void&nbsp;remove(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observer.html?is-external=true\" title=\"class or interface in java.util\">Observer</a>&nbsp;o)</pre>\n</li>\n</ul>\n<a name=\"fire--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fire</h4>\n<pre>public&nbsp;void&nbsp;fire()</pre>\n</li>\n</ul>\n<a name=\"fire-java.lang.Object-\">\n<!--   -->\n</a><a name=\"fire-T-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fire</h4>\n<pre>public&nbsp;void&nbsp;fire(<a href=\"../../stanford/karel/Event.html\" title=\"type parameter in Event\">T</a>&nbsp;arg)</pre>\n</li>\n</ul>\n<a name=\"getName--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getName</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getName()</pre>\n</li>\n</ul>\n<a name=\"toString--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>toString</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;toString()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Class</li>\n<li><a href=\"../../stanford/karel/HeadlessKarel.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/karel/Event.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Event.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/karel/HeadlessKarel.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:08 PDT 2017 -->\n<title>HeadlessKarel</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"HeadlessKarel\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":10,\"i16\":10,\"i17\":10,\"i18\":10,\"i19\":10,\"i20\":10,\"i21\":10,\"i22\":10,\"i23\":9,\"i24\":10,\"i25\":10,\"i26\":10,\"i27\":10,\"i28\":10,\"i29\":10,\"i30\":10,\"i31\":10,\"i32\":10,\"i33\":10,\"i34\":10,\"i35\":10,\"i36\":10,\"i37\":10,\"i38\":10,\"i39\":10,\"i40\":10,\"i41\":10,\"i42\":10,\"i43\":10,\"i44\":10,\"i45\":10,\"i46\":9,\"i47\":10,\"i48\":10,\"i49\":10,\"i50\":10,\"i51\":10,\"i52\":10,\"i53\":10,\"i54\":10,\"i55\":10,\"i56\":10,\"i57\":10,\"i58\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/karel/Event.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/karel/HeadlessKarel.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"HeadlessKarel.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.karel</div>\n<h2 title=\"Class HeadlessKarel\" class=\"title\">Class HeadlessKarel</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.karel.HeadlessKarel</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a>, <a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></dd>\n</dl>\n<dl>\n<dt>Direct Known Subclasses:</dt>\n<dd><a href=\"../../stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\">HeadlessSuperKarel</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">HeadlessKarel</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n<div class=\"block\">A version of a Karel superclass that doesn't crash when run\n in headless (non-graphical) mode.</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.program.ProgramInterface\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;acm.program.<a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></h3>\n<code><a href=\"../../acm/program/ProgramInterface.html#CENTER\">CENTER</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#HeadlessKarel--\">HeadlessKarel</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#beepersInBag--\">beepersInBag</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#beepersPresent--\">beepersPresent</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#checkWorld-java.lang.String-\">checkWorld</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;caller)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#exit--\">exit</a></span>()</code>\n<div class=\"block\">Exits the program.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#facingEast--\">facingEast</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#facingNorth--\">facingNorth</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#facingSouth--\">facingSouth</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#facingWest--\">facingWest</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#frontIsBlocked--\">frontIsBlocked</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#frontIsClear--\">frontIsClear</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#getBeepersInBag--\">getBeepersInBag</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#getDirection--\">getDirection</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#getLocation--\">getLocation</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#getLocationsVisited--\">getLocationsVisited</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#getSaveFile--\">getSaveFile</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#getTitle--\">getTitle</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#getWorld--\">getWorld</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#getWorldFile--\">getWorldFile</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#hasVisited-int-int-\">hasVisited</a></span>(int&nbsp;x,\n          int&nbsp;y)</code>&nbsp;</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#hasVisited-java.awt.Point-\">hasVisited</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt)</code>&nbsp;</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#init--\">init</a></span>()</code>\n<div class=\"block\">Initializes Karel.</div>\n</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#leftIsBlocked--\">leftIsBlocked</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#leftIsClear--\">leftIsClear</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#main-java.lang.String:A-\">main</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</code>&nbsp;</td>\n</tr>\n<tr id=\"i24\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#move--\">move</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i25\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#noBeepersInBag--\">noBeepersInBag</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i26\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#noBeepersPresent--\">noBeepersPresent</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i27\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#notFacingEast--\">notFacingEast</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i28\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#notFacingNorth--\">notFacingNorth</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i29\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#notFacingSouth--\">notFacingSouth</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i30\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#notFacingWest--\">notFacingWest</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i31\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#pause-double-\">pause</a></span>(double&nbsp;ms)</code>&nbsp;</td>\n</tr>\n<tr id=\"i32\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#pickBeeper--\">pickBeeper</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i33\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#print-java.lang.Object-\">print</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i34\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#print-java.lang.String-\">print</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i35\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#printf-java.lang.String-java.lang.Object...-\">printf</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;format,\n      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>...&nbsp;args)</code>&nbsp;</td>\n</tr>\n<tr id=\"i36\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#println--\">println</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i37\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#println-java.lang.Object-\">println</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i38\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#println-java.lang.String-\">println</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i39\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#putBeeper--\">putBeeper</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i40\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#rightIsBlocked--\">rightIsBlocked</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i41\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#rightIsClear--\">rightIsClear</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i42\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#run--\">run</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i43\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#setBeepersInBag-int-\">setBeepersInBag</a></span>(int&nbsp;nBeepers)</code>&nbsp;</td>\n</tr>\n<tr id=\"i44\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#setDirection-int-\">setDirection</a></span>(int&nbsp;dir)</code>&nbsp;</td>\n</tr>\n<tr id=\"i45\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#setDisplayOneFlag-boolean-\">setDisplayOneFlag</a></span>(boolean&nbsp;flag)</code>&nbsp;</td>\n</tr>\n<tr id=\"i46\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#setExitEnabled-boolean-\">setExitEnabled</a></span>(boolean&nbsp;enabled)</code>&nbsp;</td>\n</tr>\n<tr id=\"i47\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#setLocation-int-int-\">setLocation</a></span>(int&nbsp;x,\n           int&nbsp;y)</code>&nbsp;</td>\n</tr>\n<tr id=\"i48\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#setLocation-java.awt.Point-\">setLocation</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt)</code>&nbsp;</td>\n</tr>\n<tr id=\"i49\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#setParameterTable-java.util.Map-\">setParameterTable</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;table)</code>&nbsp;</td>\n</tr>\n<tr id=\"i50\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#setSaveFile-java.lang.String-\">setSaveFile</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>&nbsp;</td>\n</tr>\n<tr id=\"i51\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#setStartupObject-java.lang.Object-\">setStartupObject</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj)</code>&nbsp;</td>\n</tr>\n<tr id=\"i52\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#setTitle-java.lang.String-\">setTitle</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;title)</code>&nbsp;</td>\n</tr>\n<tr id=\"i53\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#setTrackLocationsVisited-boolean-\">setTrackLocationsVisited</a></span>(boolean&nbsp;track)</code>&nbsp;</td>\n</tr>\n<tr id=\"i54\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#setWorld-stanford.karel.KarelWorld-\">setWorld</a></span>(<a href=\"../../stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a>&nbsp;world)</code>&nbsp;</td>\n</tr>\n<tr id=\"i55\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#setWorldFile-java.lang.String-\">setWorldFile</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>&nbsp;</td>\n</tr>\n<tr id=\"i56\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#start--\">start</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i57\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#start-java.lang.String:A-\">start</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</code>\n<div class=\"block\">Starts a <code>KarelProgram</code> containing this Karel instance,\n passing it the specified arguments.</div>\n</td>\n</tr>\n<tr id=\"i58\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessKarel.html#turnLeft--\">turnLeft</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"HeadlessKarel--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>HeadlessKarel</h4>\n<pre>public&nbsp;HeadlessKarel()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"exit--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>exit</h4>\n<pre>public final&nbsp;void&nbsp;exit()</pre>\n<div class=\"block\">Exits the program.\n Saves to a file first if needed.</div>\n</li>\n</ul>\n<a name=\"getLocationsVisited--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getLocationsVisited</h4>\n<pre>public final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true\" title=\"class or interface in java.util\">Set</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&gt;&nbsp;getLocationsVisited()</pre>\n</li>\n</ul>\n<a name=\"getSaveFile--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSaveFile</h4>\n<pre>protected final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getSaveFile()</pre>\n</li>\n</ul>\n<a name=\"getWorldFile--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getWorldFile</h4>\n<pre>protected final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getWorldFile()</pre>\n</li>\n</ul>\n<a name=\"hasVisited-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hasVisited</h4>\n<pre>public final&nbsp;boolean&nbsp;hasVisited(int&nbsp;x,\n                                int&nbsp;y)</pre>\n</li>\n</ul>\n<a name=\"hasVisited-java.awt.Point-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>hasVisited</h4>\n<pre>public final&nbsp;boolean&nbsp;hasVisited(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt)</pre>\n</li>\n</ul>\n<a name=\"init--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>init</h4>\n<pre>public final&nbsp;void&nbsp;init()</pre>\n<div class=\"block\">Initializes Karel.\n You cannot override this method; we need it to be called as-is.</div>\n</li>\n</ul>\n<a name=\"move--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>move</h4>\n<pre>public final&nbsp;void&nbsp;move()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#move--\">move</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"run--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>run</h4>\n<pre>public&nbsp;void&nbsp;run()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#run--\">run</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true#run--\" title=\"class or interface in java.lang\">run</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#run--\">run</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setExitEnabled-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setExitEnabled</h4>\n<pre>public static&nbsp;void&nbsp;setExitEnabled(boolean&nbsp;enabled)</pre>\n</li>\n</ul>\n<a name=\"setSaveFile-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setSaveFile</h4>\n<pre>public final&nbsp;void&nbsp;setSaveFile(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</pre>\n</li>\n</ul>\n<a name=\"setTrackLocationsVisited-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setTrackLocationsVisited</h4>\n<pre>public final&nbsp;void&nbsp;setTrackLocationsVisited(boolean&nbsp;track)</pre>\n</li>\n</ul>\n<a name=\"setWorldFile-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setWorldFile</h4>\n<pre>public final&nbsp;void&nbsp;setWorldFile(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</pre>\n</li>\n</ul>\n<a name=\"start--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>start</h4>\n<pre>public final&nbsp;void&nbsp;start()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#start--\">start</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getTitle--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getTitle</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getTitle()</pre>\n</li>\n</ul>\n<a name=\"print-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public&nbsp;void&nbsp;print(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"print-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public&nbsp;void&nbsp;print(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"printf-java.lang.String-java.lang.Object...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>printf</h4>\n<pre>public&nbsp;void&nbsp;printf(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;format,\n                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>...&nbsp;args)</pre>\n</li>\n</ul>\n<a name=\"println--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public&nbsp;void&nbsp;println()</pre>\n</li>\n</ul>\n<a name=\"println-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public&nbsp;void&nbsp;println(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"println-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public&nbsp;void&nbsp;println(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"setTitle-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setTitle</h4>\n<pre>public&nbsp;void&nbsp;setTitle(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;title)</pre>\n</li>\n</ul>\n<a name=\"turnLeft--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>turnLeft</h4>\n<pre>public&nbsp;void&nbsp;turnLeft()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#turnLeft--\">turnLeft</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"pickBeeper--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>pickBeeper</h4>\n<pre>public&nbsp;void&nbsp;pickBeeper()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#pickBeeper--\">pickBeeper</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"putBeeper--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>putBeeper</h4>\n<pre>public&nbsp;void&nbsp;putBeeper()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#putBeeper--\">putBeeper</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"frontIsClear--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>frontIsClear</h4>\n<pre>public&nbsp;boolean&nbsp;frontIsClear()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#frontIsClear--\">frontIsClear</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"frontIsBlocked--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>frontIsBlocked</h4>\n<pre>public&nbsp;boolean&nbsp;frontIsBlocked()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#frontIsBlocked--\">frontIsBlocked</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"leftIsClear--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>leftIsClear</h4>\n<pre>public&nbsp;boolean&nbsp;leftIsClear()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#leftIsClear--\">leftIsClear</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"leftIsBlocked--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>leftIsBlocked</h4>\n<pre>public&nbsp;boolean&nbsp;leftIsBlocked()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#leftIsBlocked--\">leftIsBlocked</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"rightIsClear--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>rightIsClear</h4>\n<pre>public&nbsp;boolean&nbsp;rightIsClear()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#rightIsClear--\">rightIsClear</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"rightIsBlocked--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>rightIsBlocked</h4>\n<pre>public&nbsp;boolean&nbsp;rightIsBlocked()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#rightIsBlocked--\">rightIsBlocked</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"beepersPresent--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>beepersPresent</h4>\n<pre>public&nbsp;boolean&nbsp;beepersPresent()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#beepersPresent--\">beepersPresent</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"noBeepersPresent--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>noBeepersPresent</h4>\n<pre>public&nbsp;boolean&nbsp;noBeepersPresent()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#noBeepersPresent--\">noBeepersPresent</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"beepersInBag--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>beepersInBag</h4>\n<pre>public&nbsp;boolean&nbsp;beepersInBag()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#beepersInBag--\">beepersInBag</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"noBeepersInBag--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>noBeepersInBag</h4>\n<pre>public&nbsp;boolean&nbsp;noBeepersInBag()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#noBeepersInBag--\">noBeepersInBag</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"facingNorth--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>facingNorth</h4>\n<pre>public&nbsp;boolean&nbsp;facingNorth()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#facingNorth--\">facingNorth</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"facingEast--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>facingEast</h4>\n<pre>public&nbsp;boolean&nbsp;facingEast()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#facingEast--\">facingEast</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"facingSouth--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>facingSouth</h4>\n<pre>public&nbsp;boolean&nbsp;facingSouth()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#facingSouth--\">facingSouth</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"facingWest--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>facingWest</h4>\n<pre>public&nbsp;boolean&nbsp;facingWest()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#facingWest--\">facingWest</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"notFacingNorth--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>notFacingNorth</h4>\n<pre>public&nbsp;boolean&nbsp;notFacingNorth()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#notFacingNorth--\">notFacingNorth</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"notFacingEast--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>notFacingEast</h4>\n<pre>public&nbsp;boolean&nbsp;notFacingEast()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#notFacingEast--\">notFacingEast</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"notFacingSouth--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>notFacingSouth</h4>\n<pre>public&nbsp;boolean&nbsp;notFacingSouth()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#notFacingSouth--\">notFacingSouth</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"notFacingWest--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>notFacingWest</h4>\n<pre>public&nbsp;boolean&nbsp;notFacingWest()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#notFacingWest--\">notFacingWest</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"pause-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>pause</h4>\n<pre>public&nbsp;void&nbsp;pause(double&nbsp;ms)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#pause-double-\">pause</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#pause-double-\">pause</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"main-java.lang.String:A-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>main</h4>\n<pre>public static&nbsp;void&nbsp;main(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</pre>\n</li>\n</ul>\n<a name=\"setParameterTable-java.util.Map-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setParameterTable</h4>\n<pre>public&nbsp;void&nbsp;setParameterTable(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;table)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#setParameterTable-java.util.Map-\">setParameterTable</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setStartupObject-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setStartupObject</h4>\n<pre>public&nbsp;void&nbsp;setStartupObject(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#setStartupObject-java.lang.Object-\">setStartupObject</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"start-java.lang.String:A-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>start</h4>\n<pre>public&nbsp;void&nbsp;start(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</pre>\n<div class=\"block\">Starts a <code>KarelProgram</code> containing this Karel instance,\n passing it the specified arguments.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#start-java.lang.String:A-\">start</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getLocation--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getLocation</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;getLocation()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#getLocation--\">getLocation</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setLocation-java.awt.Point-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setLocation</h4>\n<pre>public&nbsp;void&nbsp;setLocation(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#setLocation-java.awt.Point-\">setLocation</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setLocation-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setLocation</h4>\n<pre>public&nbsp;void&nbsp;setLocation(int&nbsp;x,\n                        int&nbsp;y)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#setLocation-int-int-\">setLocation</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getDirection--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getDirection</h4>\n<pre>public&nbsp;int&nbsp;getDirection()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#getDirection--\">getDirection</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setDirection-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setDirection</h4>\n<pre>public&nbsp;void&nbsp;setDirection(int&nbsp;dir)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#setDirection-int-\">setDirection</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getBeepersInBag--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getBeepersInBag</h4>\n<pre>public&nbsp;int&nbsp;getBeepersInBag()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#getBeepersInBag--\">getBeepersInBag</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setBeepersInBag-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setBeepersInBag</h4>\n<pre>public&nbsp;void&nbsp;setBeepersInBag(int&nbsp;nBeepers)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#setBeepersInBag-int-\">setBeepersInBag</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getWorld--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getWorld</h4>\n<pre>public&nbsp;<a href=\"../../stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a>&nbsp;getWorld()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#getWorld--\">getWorld</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setWorld-stanford.karel.KarelWorld-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setWorld</h4>\n<pre>public&nbsp;void&nbsp;setWorld(<a href=\"../../stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a>&nbsp;world)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#setWorld-stanford.karel.KarelWorld-\">setWorld</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"checkWorld-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>checkWorld</h4>\n<pre>protected&nbsp;void&nbsp;checkWorld(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;caller)</pre>\n</li>\n</ul>\n<a name=\"setDisplayOneFlag-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>setDisplayOneFlag</h4>\n<pre>public&nbsp;void&nbsp;setDisplayOneFlag(boolean&nbsp;flag)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/karel/Event.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/karel/HeadlessKarel.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"HeadlessKarel.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/karel/HeadlessSuperKarel.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:08 PDT 2017 -->\n<title>HeadlessSuperKarel</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"HeadlessSuperKarel\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":10,\"i16\":10,\"i17\":10,\"i18\":9,\"i19\":10,\"i20\":10,\"i21\":10,\"i22\":10,\"i23\":10,\"i24\":10,\"i25\":10,\"i26\":10,\"i27\":10,\"i28\":10,\"i29\":10,\"i30\":10,\"i31\":10,\"i32\":10,\"i33\":10,\"i34\":10,\"i35\":10,\"i36\":10,\"i37\":10,\"i38\":10,\"i39\":10,\"i40\":10,\"i41\":10,\"i42\":10,\"i43\":10,\"i44\":10,\"i45\":10,\"i46\":10,\"i47\":10,\"i48\":10,\"i49\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/karel/HeadlessKarel.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/karel/Karel.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/karel/HeadlessSuperKarel.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"HeadlessSuperKarel.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.karel</div>\n<h2 title=\"Class HeadlessSuperKarel\" class=\"title\">Class HeadlessSuperKarel</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/karel/HeadlessKarel.html\" title=\"class in stanford.karel\">stanford.karel.HeadlessKarel</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.karel.HeadlessSuperKarel</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a>, <a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">HeadlessSuperKarel</span>\nextends <a href=\"../../stanford/karel/HeadlessKarel.html\" title=\"class in stanford.karel\">HeadlessKarel</a></pre>\n<div class=\"block\">Extended Karel class . . .</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#BLACK\">BLACK</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#BLUE\">BLUE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#CYAN\">CYAN</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#DARK_GRAY\">DARK_GRAY</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#GRAY\">GRAY</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#GREEN\">GREEN</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#LIGHT_GRAY\">LIGHT_GRAY</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#MAGENTA\">MAGENTA</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#ORANGE\">ORANGE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#PINK\">PINK</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#RED\">RED</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#WHITE\">WHITE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#YELLOW\">YELLOW</a></span></code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.program.ProgramInterface\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;acm.program.<a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></h3>\n<code><a href=\"../../acm/program/ProgramInterface.html#CENTER\">CENTER</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#HeadlessSuperKarel--\">HeadlessSuperKarel</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#beepersInBag--\">beepersInBag</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#beepersPresent--\">beepersPresent</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#checkWorld-java.lang.String-\">checkWorld</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;caller)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#cornerColorIs-java.awt.Color-\">cornerColorIs</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#cornerColorIs-double-double-double-\">cornerColorIs</a></span>(double&nbsp;red,\n             double&nbsp;blue,\n             double&nbsp;green)</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#cornerColorIs-int-\">cornerColorIs</a></span>(int&nbsp;rgb)</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#facingEast--\">facingEast</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#facingNorth--\">facingNorth</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#facingSouth--\">facingSouth</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#facingWest--\">facingWest</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#frontIsBlocked--\">frontIsBlocked</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#frontIsClear--\">frontIsClear</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#getBeepersInBag--\">getBeepersInBag</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#getDirection--\">getDirection</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#getLocation--\">getLocation</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#getWorld--\">getWorld</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#leftIsBlocked--\">leftIsBlocked</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#leftIsClear--\">leftIsClear</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#main-java.lang.String:A-\">main</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</code>&nbsp;</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#newColor-int-\">newColor</a></span>(int&nbsp;rgb)</code>&nbsp;</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#noBeepersInBag--\">noBeepersInBag</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#noBeepersPresent--\">noBeepersPresent</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#notFacingEast--\">notFacingEast</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#notFacingNorth--\">notFacingNorth</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i24\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#notFacingSouth--\">notFacingSouth</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i25\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#notFacingWest--\">notFacingWest</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i26\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#paintCorner-java.awt.Color-\">paintCorner</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>&nbsp;</td>\n</tr>\n<tr id=\"i27\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#paintCorner-double-double-double-\">paintCorner</a></span>(double&nbsp;red,\n           double&nbsp;blue,\n           double&nbsp;green)</code>&nbsp;</td>\n</tr>\n<tr id=\"i28\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#paintCorner-int-\">paintCorner</a></span>(int&nbsp;rgb)</code>&nbsp;</td>\n</tr>\n<tr id=\"i29\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#pause-double-\">pause</a></span>(double&nbsp;milliseconds)</code>&nbsp;</td>\n</tr>\n<tr id=\"i30\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#pickBeeper--\">pickBeeper</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i31\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#putBeeper--\">putBeeper</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i32\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#random--\">random</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i33\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#random-double-\">random</a></span>(double&nbsp;p)</code>&nbsp;</td>\n</tr>\n<tr id=\"i34\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#rightIsBlocked--\">rightIsBlocked</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i35\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#rightIsClear--\">rightIsClear</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i36\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#run--\">run</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i37\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#say-java.lang.String-\">say</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</code>\n<div class=\"block\">Causes Karel to pop up a speech bubble with the given text in it.</div>\n</td>\n</tr>\n<tr id=\"i38\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#setBeepersInBag-int-\">setBeepersInBag</a></span>(int&nbsp;nBeepers)</code>&nbsp;</td>\n</tr>\n<tr id=\"i39\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#setDirection-int-\">setDirection</a></span>(int&nbsp;dir)</code>&nbsp;</td>\n</tr>\n<tr id=\"i40\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#setDisplayOneFlag-boolean-\">setDisplayOneFlag</a></span>(boolean&nbsp;flag)</code>&nbsp;</td>\n</tr>\n<tr id=\"i41\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#setLocation-int-int-\">setLocation</a></span>(int&nbsp;x,\n           int&nbsp;y)</code>&nbsp;</td>\n</tr>\n<tr id=\"i42\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#setLocation-java.awt.Point-\">setLocation</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt)</code>&nbsp;</td>\n</tr>\n<tr id=\"i43\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#setParameterTable-java.util.Map-\">setParameterTable</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;table)</code>&nbsp;</td>\n</tr>\n<tr id=\"i44\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#setStartupObject-java.lang.Object-\">setStartupObject</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj)</code>&nbsp;</td>\n</tr>\n<tr id=\"i45\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#setWorld-stanford.karel.KarelWorld-\">setWorld</a></span>(<a href=\"../../stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a>&nbsp;world)</code>&nbsp;</td>\n</tr>\n<tr id=\"i46\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#start-java.lang.String:A-\">start</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</code>\n<div class=\"block\">Starts a <code>KarelProgram</code> containing this Karel instance,\n passing it the specified arguments.</div>\n</td>\n</tr>\n<tr id=\"i47\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#turnAround--\">turnAround</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i48\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#turnLeft--\">turnLeft</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i49\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html#turnRight--\">turnRight</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.karel.HeadlessKarel\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.karel.<a href=\"../../stanford/karel/HeadlessKarel.html\" title=\"class in stanford.karel\">HeadlessKarel</a></h3>\n<code><a href=\"../../stanford/karel/HeadlessKarel.html#exit--\">exit</a>, <a href=\"../../stanford/karel/HeadlessKarel.html#getLocationsVisited--\">getLocationsVisited</a>, <a href=\"../../stanford/karel/HeadlessKarel.html#getSaveFile--\">getSaveFile</a>, <a href=\"../../stanford/karel/HeadlessKarel.html#getTitle--\">getTitle</a>, <a href=\"../../stanford/karel/HeadlessKarel.html#getWorldFile--\">getWorldFile</a>, <a href=\"../../stanford/karel/HeadlessKarel.html#hasVisited-int-int-\">hasVisited</a>, <a href=\"../../stanford/karel/HeadlessKarel.html#hasVisited-java.awt.Point-\">hasVisited</a>, <a href=\"../../stanford/karel/HeadlessKarel.html#init--\">init</a>, <a href=\"../../stanford/karel/HeadlessKarel.html#move--\">move</a>, <a href=\"../../stanford/karel/HeadlessKarel.html#print-java.lang.Object-\">print</a>, <a href=\"../../stanford/karel/HeadlessKarel.html#print-java.lang.String-\">print</a>, <a href=\"../../stanford/karel/HeadlessKarel.html#printf-java.lang.String-java.lang.Object...-\">printf</a>, <a href=\"../../stanford/karel/HeadlessKarel.html#println--\">println</a>, <a href=\"../../stanford/karel/HeadlessKarel.html#println-java.lang.Object-\">println</a>, <a href=\"../../stanford/karel/HeadlessKarel.html#println-java.lang.String-\">println</a>, <a href=\"../../stanford/karel/HeadlessKarel.html#setExitEnabled-boolean-\">setExitEnabled</a>, <a href=\"../../stanford/karel/HeadlessKarel.html#setSaveFile-java.lang.String-\">setSaveFile</a>, <a href=\"../../stanford/karel/HeadlessKarel.html#setTitle-java.lang.String-\">setTitle</a>, <a href=\"../../stanford/karel/HeadlessKarel.html#setTrackLocationsVisited-boolean-\">setTrackLocationsVisited</a>, <a href=\"../../stanford/karel/HeadlessKarel.html#setWorldFile-java.lang.String-\">setWorldFile</a>, <a href=\"../../stanford/karel/HeadlessKarel.html#start--\">start</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"BLACK\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>BLACK</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> BLACK</pre>\n</li>\n</ul>\n<a name=\"BLUE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>BLUE</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> BLUE</pre>\n</li>\n</ul>\n<a name=\"CYAN\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>CYAN</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> CYAN</pre>\n</li>\n</ul>\n<a name=\"DARK_GRAY\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>DARK_GRAY</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> DARK_GRAY</pre>\n</li>\n</ul>\n<a name=\"GRAY\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>GRAY</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> GRAY</pre>\n</li>\n</ul>\n<a name=\"GREEN\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>GREEN</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> GREEN</pre>\n</li>\n</ul>\n<a name=\"LIGHT_GRAY\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>LIGHT_GRAY</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> LIGHT_GRAY</pre>\n</li>\n</ul>\n<a name=\"MAGENTA\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MAGENTA</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> MAGENTA</pre>\n</li>\n</ul>\n<a name=\"ORANGE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>ORANGE</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> ORANGE</pre>\n</li>\n</ul>\n<a name=\"PINK\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>PINK</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> PINK</pre>\n</li>\n</ul>\n<a name=\"RED\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>RED</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> RED</pre>\n</li>\n</ul>\n<a name=\"WHITE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>WHITE</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> WHITE</pre>\n</li>\n</ul>\n<a name=\"YELLOW\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>YELLOW</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> YELLOW</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"HeadlessSuperKarel--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>HeadlessSuperKarel</h4>\n<pre>public&nbsp;HeadlessSuperKarel()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"run--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>run</h4>\n<pre>public&nbsp;void&nbsp;run()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#run--\">run</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true#run--\" title=\"class or interface in java.lang\">run</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#run--\">run</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../stanford/karel/HeadlessKarel.html#run--\">run</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/karel/HeadlessKarel.html\" title=\"class in stanford.karel\">HeadlessKarel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"turnRight--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>turnRight</h4>\n<pre>public&nbsp;void&nbsp;turnRight()</pre>\n</li>\n</ul>\n<a name=\"turnAround--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>turnAround</h4>\n<pre>public&nbsp;void&nbsp;turnAround()</pre>\n</li>\n</ul>\n<a name=\"paintCorner-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>paintCorner</h4>\n<pre>public&nbsp;void&nbsp;paintCorner(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n</li>\n</ul>\n<a name=\"paintCorner-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>paintCorner</h4>\n<pre>public&nbsp;void&nbsp;paintCorner(int&nbsp;rgb)</pre>\n</li>\n</ul>\n<a name=\"paintCorner-double-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>paintCorner</h4>\n<pre>public&nbsp;void&nbsp;paintCorner(double&nbsp;red,\n                        double&nbsp;blue,\n                        double&nbsp;green)</pre>\n</li>\n</ul>\n<a name=\"newColor-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>newColor</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;newColor(int&nbsp;rgb)</pre>\n</li>\n</ul>\n<a name=\"random--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>random</h4>\n<pre>public&nbsp;boolean&nbsp;random()</pre>\n</li>\n</ul>\n<a name=\"random-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>random</h4>\n<pre>public&nbsp;boolean&nbsp;random(double&nbsp;p)</pre>\n</li>\n</ul>\n<a name=\"cornerColorIs-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>cornerColorIs</h4>\n<pre>public&nbsp;boolean&nbsp;cornerColorIs(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n</li>\n</ul>\n<a name=\"cornerColorIs-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>cornerColorIs</h4>\n<pre>public&nbsp;boolean&nbsp;cornerColorIs(int&nbsp;rgb)</pre>\n</li>\n</ul>\n<a name=\"cornerColorIs-double-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>cornerColorIs</h4>\n<pre>public&nbsp;boolean&nbsp;cornerColorIs(double&nbsp;red,\n                             double&nbsp;blue,\n                             double&nbsp;green)</pre>\n</li>\n</ul>\n<a name=\"pause-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>pause</h4>\n<pre>public&nbsp;void&nbsp;pause(double&nbsp;milliseconds)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#pause-double-\">pause</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#pause-double-\">pause</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"say-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>say</h4>\n<pre>public&nbsp;void&nbsp;say(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</pre>\n<div class=\"block\">Causes Karel to pop up a speech bubble with the given text in it.</div>\n</li>\n</ul>\n<a name=\"turnLeft--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>turnLeft</h4>\n<pre>public&nbsp;void&nbsp;turnLeft()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#turnLeft--\">turnLeft</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"pickBeeper--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>pickBeeper</h4>\n<pre>public&nbsp;void&nbsp;pickBeeper()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#pickBeeper--\">pickBeeper</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"putBeeper--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>putBeeper</h4>\n<pre>public&nbsp;void&nbsp;putBeeper()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#putBeeper--\">putBeeper</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"frontIsClear--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>frontIsClear</h4>\n<pre>public&nbsp;boolean&nbsp;frontIsClear()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#frontIsClear--\">frontIsClear</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"frontIsBlocked--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>frontIsBlocked</h4>\n<pre>public&nbsp;boolean&nbsp;frontIsBlocked()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#frontIsBlocked--\">frontIsBlocked</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"leftIsClear--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>leftIsClear</h4>\n<pre>public&nbsp;boolean&nbsp;leftIsClear()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#leftIsClear--\">leftIsClear</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"leftIsBlocked--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>leftIsBlocked</h4>\n<pre>public&nbsp;boolean&nbsp;leftIsBlocked()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#leftIsBlocked--\">leftIsBlocked</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"rightIsClear--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>rightIsClear</h4>\n<pre>public&nbsp;boolean&nbsp;rightIsClear()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#rightIsClear--\">rightIsClear</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"rightIsBlocked--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>rightIsBlocked</h4>\n<pre>public&nbsp;boolean&nbsp;rightIsBlocked()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#rightIsBlocked--\">rightIsBlocked</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"beepersPresent--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>beepersPresent</h4>\n<pre>public&nbsp;boolean&nbsp;beepersPresent()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#beepersPresent--\">beepersPresent</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"noBeepersPresent--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>noBeepersPresent</h4>\n<pre>public&nbsp;boolean&nbsp;noBeepersPresent()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#noBeepersPresent--\">noBeepersPresent</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"beepersInBag--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>beepersInBag</h4>\n<pre>public&nbsp;boolean&nbsp;beepersInBag()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#beepersInBag--\">beepersInBag</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"noBeepersInBag--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>noBeepersInBag</h4>\n<pre>public&nbsp;boolean&nbsp;noBeepersInBag()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#noBeepersInBag--\">noBeepersInBag</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"facingNorth--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>facingNorth</h4>\n<pre>public&nbsp;boolean&nbsp;facingNorth()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#facingNorth--\">facingNorth</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"facingEast--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>facingEast</h4>\n<pre>public&nbsp;boolean&nbsp;facingEast()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#facingEast--\">facingEast</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"facingSouth--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>facingSouth</h4>\n<pre>public&nbsp;boolean&nbsp;facingSouth()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#facingSouth--\">facingSouth</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"facingWest--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>facingWest</h4>\n<pre>public&nbsp;boolean&nbsp;facingWest()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#facingWest--\">facingWest</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"notFacingNorth--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>notFacingNorth</h4>\n<pre>public&nbsp;boolean&nbsp;notFacingNorth()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#notFacingNorth--\">notFacingNorth</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"notFacingEast--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>notFacingEast</h4>\n<pre>public&nbsp;boolean&nbsp;notFacingEast()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#notFacingEast--\">notFacingEast</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"notFacingSouth--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>notFacingSouth</h4>\n<pre>public&nbsp;boolean&nbsp;notFacingSouth()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#notFacingSouth--\">notFacingSouth</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"notFacingWest--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>notFacingWest</h4>\n<pre>public&nbsp;boolean&nbsp;notFacingWest()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#notFacingWest--\">notFacingWest</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"main-java.lang.String:A-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>main</h4>\n<pre>public static&nbsp;void&nbsp;main(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</pre>\n</li>\n</ul>\n<a name=\"setParameterTable-java.util.Map-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setParameterTable</h4>\n<pre>public&nbsp;void&nbsp;setParameterTable(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;table)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#setParameterTable-java.util.Map-\">setParameterTable</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setStartupObject-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setStartupObject</h4>\n<pre>public&nbsp;void&nbsp;setStartupObject(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;obj)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#setStartupObject-java.lang.Object-\">setStartupObject</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"start-java.lang.String:A-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>start</h4>\n<pre>public&nbsp;void&nbsp;start(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</pre>\n<div class=\"block\">Starts a <code>KarelProgram</code> containing this Karel instance,\n passing it the specified arguments.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#start-java.lang.String:A-\">start</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getLocation--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getLocation</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;getLocation()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#getLocation--\">getLocation</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setLocation-java.awt.Point-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setLocation</h4>\n<pre>public&nbsp;void&nbsp;setLocation(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#setLocation-java.awt.Point-\">setLocation</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setLocation-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setLocation</h4>\n<pre>public&nbsp;void&nbsp;setLocation(int&nbsp;x,\n                        int&nbsp;y)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#setLocation-int-int-\">setLocation</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getDirection--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getDirection</h4>\n<pre>public&nbsp;int&nbsp;getDirection()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#getDirection--\">getDirection</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setDirection-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setDirection</h4>\n<pre>public&nbsp;void&nbsp;setDirection(int&nbsp;dir)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#setDirection-int-\">setDirection</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getBeepersInBag--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getBeepersInBag</h4>\n<pre>public&nbsp;int&nbsp;getBeepersInBag()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#getBeepersInBag--\">getBeepersInBag</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setBeepersInBag-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setBeepersInBag</h4>\n<pre>public&nbsp;void&nbsp;setBeepersInBag(int&nbsp;nBeepers)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#setBeepersInBag-int-\">setBeepersInBag</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getWorld--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getWorld</h4>\n<pre>public&nbsp;<a href=\"../../stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a>&nbsp;getWorld()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#getWorld--\">getWorld</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setWorld-stanford.karel.KarelWorld-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setWorld</h4>\n<pre>public&nbsp;void&nbsp;setWorld(<a href=\"../../stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a>&nbsp;world)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#setWorld-stanford.karel.KarelWorld-\">setWorld</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"checkWorld-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>checkWorld</h4>\n<pre>protected&nbsp;void&nbsp;checkWorld(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;caller)</pre>\n</li>\n</ul>\n<a name=\"setDisplayOneFlag-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>setDisplayOneFlag</h4>\n<pre>public&nbsp;void&nbsp;setDisplayOneFlag(boolean&nbsp;flag)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/karel/HeadlessKarel.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/karel/Karel.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/karel/HeadlessSuperKarel.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"HeadlessSuperKarel.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/karel/Karel.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:09 PDT 2017 -->\n<title>Karel</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"Karel\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":9,\"i16\":10,\"i17\":10,\"i18\":10,\"i19\":10,\"i20\":10,\"i21\":10,\"i22\":10,\"i23\":10,\"i24\":10,\"i25\":10,\"i26\":10,\"i27\":10,\"i28\":10,\"i29\":10,\"i30\":10,\"i31\":10,\"i32\":10,\"i33\":10,\"i34\":10,\"i35\":10,\"i36\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/karel/KarelControlPanel.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/karel/Karel.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Karel.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JApplet\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.acm.program.Program\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.karel</div>\n<h2 title=\"Class Karel\" class=\"title\">Class Karel</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Component</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Container</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Panel</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">java.applet.Applet</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JApplet</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">acm.program.Program</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.karel.Karel</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd>acm.io.IOModel, <a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/AdjustmentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">AdjustmentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ContainerListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ItemListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ItemListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseWheelListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/TextListener.html?is-external=true\" title=\"class or interface in java.awt.event\">TextListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowFocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowStateListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowStateListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListDataListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListDataListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListSelectionListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListSelectionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/MouseInputListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">MouseInputListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/PopupMenuListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">PopupMenuListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/RootPaneContainer.html?is-external=true\" title=\"class or interface in javax.swing\">RootPaneContainer</a>, <a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></dd>\n</dl>\n<dl>\n<dt>Direct Known Subclasses:</dt>\n<dd><a href=\"../../stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\">SuperKarel</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">Karel</span>\nextends <a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a>\nimplements <a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a></pre>\n<div class=\"block\">The <code>Karel</code> class represents the simplest possible Karel the Robot\n object. Each instance of the <code>Karel</code> class represents an\n individual robot that can move inside a world laid out as a grid of streets\n and avenues. The other characteristics of Karel's world include\n <b><i>walls,</i></b> which separate individual corners, and\n <b><i>beepers,</i></b> which are described by Karel's creator as\n \"plastic cones which emit a quiet beeping noise.\" As it is shipped from the\n factory, Karel can execute only four operations:\n \n <dl>\n <dt><code><a href=\"#move()\">move</a>()</code></dt>\n <dd>Moves this Karel forward one block. Karel cannot move forward if there is\n a wall blocking the way.</dd>\n <p>\n <dt><code><a href=\"#turnLeft()\">turnLeft</a>()</code></dt>\n <dd>Rotates this Karel 90 degrees to the left (counterclockwise).</dd>\n <p>\n <dt><code><a href=\"#pickBeeper()\">pickBeeper</a>()</code></dt>\n <dd>Picks up one beeper from the current corner and stores the beeper in this\n Karel's beeper bag, which can hold an infinite number of beepers. Karel can\n execute a <code>pickBeeper</code> instruction only if there is a beeper on\n the current corner.</dd>\n <p>\n <dt><code><a href=\"#putBeeper()\">putBeeper</a>()</code></dt>\n <dd>Takes one beeper from this Karel's beeper bag and deposits it on the\n current corner. Karel can execute a <code>pickBeeper</code> instruction only\n if there is a beeper in its bag.</dd>\n <p>\n </dl>\n \n <p>\n Karel programs are executed by defining a new subclass that extends\n <code>Karel</code> and provides it with a <code>run</code> method that\n defines its operation. For example, the following Karel subclass represents a\n Karel program that moves forward, picks up a beeper from the square, and then\n moves forward one more time:\n \n <p>\n <table cellspacing=0 cellpadding=0>\n <tr>\n <td width=36>&nbsp;</td>\n <td>\n <table cellspacing=0 cellpadding=0>\n <tr>\n <td>\n \n <pre>\n <code>\n public class SimpleKarelExample extends Karel {\n &nbsp;&nbsp;&nbsp;public void run() {\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;move();\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;putBeeper();\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;move();\n &nbsp;&nbsp;&nbsp;}\n }\n </code>\n </pre>\n \n </td>\n </tr>\n </table>\n </td>\n </tr>\n </table></div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#stanford.karel.Karel\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JApplet\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.AccessibleJApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet.AccessibleJApplet</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.applet.Applet\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.applet.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">Applet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.AccessibleApplet.html?is-external=true\" title=\"class or interface in java.applet\">Applet.AccessibleApplet</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Panel\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\">Panel</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.AccessibleAWTPanel.html?is-external=true\" title=\"class or interface in java.awt\">Panel.AccessibleAWTPanel</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.AccessibleAWTContainer.html?is-external=true\" title=\"class or interface in java.awt\">Container.AccessibleAWTContainer</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.AccessibleAWTComponent.html?is-external=true\" title=\"class or interface in java.awt\">Component.AccessibleAWTComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BaselineResizeBehavior.html?is-external=true\" title=\"class or interface in java.awt\">Component.BaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BltBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.BltBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.FlipBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.FlipBufferStrategy</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.program.Program\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;acm.program.<a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></h3>\n<code><a href=\"../../acm/program/Program.html#CONFIG_FILE_NAME\">CONFIG_FILE_NAME</a>, <a href=\"../../acm/program/Program.html#invisibleObjects\">invisibleObjects</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.JApplet\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#accessibleContext\" title=\"class or interface in javax.swing\">accessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#rootPane\" title=\"class or interface in javax.swing\">rootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#rootPaneCheckingEnabled\" title=\"class or interface in javax.swing\">rootPaneCheckingEnabled</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#BOTTOM_ALIGNMENT\" title=\"class or interface in java.awt\">BOTTOM_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#CENTER_ALIGNMENT\" title=\"class or interface in java.awt\">CENTER_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#LEFT_ALIGNMENT\" title=\"class or interface in java.awt\">LEFT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#RIGHT_ALIGNMENT\" title=\"class or interface in java.awt\">RIGHT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#TOP_ALIGNMENT\" title=\"class or interface in java.awt\">TOP_ALIGNMENT</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.program.ProgramInterface\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;acm.program.<a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></h3>\n<code><a href=\"../../acm/program/ProgramInterface.html#CENTER\">CENTER</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.image.ImageObserver\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ABORT\" title=\"class or interface in java.awt.image\">ABORT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ALLBITS\" title=\"class or interface in java.awt.image\">ALLBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ERROR\" title=\"class or interface in java.awt.image\">ERROR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#FRAMEBITS\" title=\"class or interface in java.awt.image\">FRAMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#HEIGHT\" title=\"class or interface in java.awt.image\">HEIGHT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#PROPERTIES\" title=\"class or interface in java.awt.image\">PROPERTIES</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#SOMEBITS\" title=\"class or interface in java.awt.image\">SOMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#WIDTH\" title=\"class or interface in java.awt.image\">WIDTH</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Karel.html#Karel--\">Karel</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Karel.html#beepersInBag--\">beepersInBag</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Karel.html#beepersPresent--\">beepersPresent</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Karel.html#checkWorld-java.lang.String-\">checkWorld</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;caller)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Karel.html#facingEast--\">facingEast</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Karel.html#facingNorth--\">facingNorth</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Karel.html#facingSouth--\">facingSouth</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Karel.html#facingWest--\">facingWest</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Karel.html#frontIsBlocked--\">frontIsBlocked</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Karel.html#frontIsClear--\">frontIsClear</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Karel.html#getBeepersInBag--\">getBeepersInBag</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Karel.html#getDirection--\">getDirection</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Karel.html#getLocation--\">getLocation</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Karel.html#getWorld--\">getWorld</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Karel.html#leftIsBlocked--\">leftIsBlocked</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Karel.html#leftIsClear--\">leftIsClear</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Karel.html#main-java.lang.String:A-\">main</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</code>&nbsp;</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Karel.html#menuAction-java.awt.event.ActionEvent-\">menuAction</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;event)</code>\n<div class=\"block\">Called whenever a program action is detected in the menu bar.</div>\n</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Karel.html#move--\">move</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Karel.html#noBeepersInBag--\">noBeepersInBag</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Karel.html#noBeepersPresent--\">noBeepersPresent</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Karel.html#notFacingEast--\">notFacingEast</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Karel.html#notFacingNorth--\">notFacingNorth</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Karel.html#notFacingSouth--\">notFacingSouth</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Karel.html#notFacingWest--\">notFacingWest</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i24\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Karel.html#pickBeeper--\">pickBeeper</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i25\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Karel.html#putBeeper--\">putBeeper</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i26\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Karel.html#rightIsBlocked--\">rightIsBlocked</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i27\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Karel.html#rightIsClear--\">rightIsClear</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i28\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Karel.html#run--\">run</a></span>()</code>\n<div class=\"block\">Specifies the code to be executed as the program runs.</div>\n</td>\n</tr>\n<tr id=\"i29\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Karel.html#setBeepersInBag-int-\">setBeepersInBag</a></span>(int&nbsp;nBeepers)</code>&nbsp;</td>\n</tr>\n<tr id=\"i30\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Karel.html#setDirection-int-\">setDirection</a></span>(int&nbsp;dir)</code>&nbsp;</td>\n</tr>\n<tr id=\"i31\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Karel.html#setDisplayOneFlag-boolean-\">setDisplayOneFlag</a></span>(boolean&nbsp;flag)</code>&nbsp;</td>\n</tr>\n<tr id=\"i32\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Karel.html#setLocation-int-int-\">setLocation</a></span>(int&nbsp;x,\n           int&nbsp;y)</code>&nbsp;</td>\n</tr>\n<tr id=\"i33\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Karel.html#setLocation-java.awt.Point-\">setLocation</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt)</code>&nbsp;</td>\n</tr>\n<tr id=\"i34\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Karel.html#setWorld-stanford.karel.KarelWorld-\">setWorld</a></span>(<a href=\"../../stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a>&nbsp;world)</code>&nbsp;</td>\n</tr>\n<tr id=\"i35\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Karel.html#start-java.lang.String:A-\">start</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</code>\n<div class=\"block\">Starts a <code>KarelProgram</code> containing this Karel instance,\n passing it the specified arguments.</div>\n</td>\n</tr>\n<tr id=\"i36\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/Karel.html#turnLeft--\">turnLeft</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.program.Program\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.program.<a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></h3>\n<code><a href=\"../../acm/program/Program.html#actionPerformed-java.awt.event.ActionEvent-\">actionPerformed</a>, <a href=\"../../acm/program/Program.html#add-java.awt.Component-java.lang.String-java.lang.Object-\">add</a>, <a href=\"../../acm/program/Program.html#addActionListeners--\">addActionListeners</a>, <a href=\"../../acm/program/Program.html#addActionListeners-java.awt.event.ActionListener-\">addActionListeners</a>, <a href=\"../../acm/program/Program.html#addActionListenersToButtonsOnly--\">addActionListenersToButtonsOnly</a>, <a href=\"../../acm/program/Program.html#addAllActionListeners--\">addAllActionListeners</a>, <a href=\"../../acm/program/Program.html#addExitHook-java.lang.Object-\">addExitHook</a>, <a href=\"../../acm/program/Program.html#addImpl-java.awt.Component-java.lang.Object-int-\">addImpl</a>, <a href=\"../../acm/program/Program.html#adjustmentValueChanged-java.awt.event.AdjustmentEvent-\">adjustmentValueChanged</a>, <a href=\"../../acm/program/Program.html#alert-java.lang.Object-\">alert</a>, <a href=\"../../acm/program/Program.html#alert-java.lang.String-\">alert</a>, <a href=\"../../acm/program/Program.html#animation--\">animation</a>, <a href=\"../../acm/program/Program.html#center--\">center</a>, <a href=\"../../acm/program/Program.html#changedUpdate-javax.swing.event.DocumentEvent-\">changedUpdate</a>, <a href=\"../../acm/program/Program.html#checkCompilerFlags--\">checkCompilerFlags</a>, <a href=\"../../acm/program/Program.html#checkKill--\">checkKill</a>, <a href=\"../../acm/program/Program.html#checkStartupSettings--\">checkStartupSettings</a>, <a href=\"../../acm/program/Program.html#componentAdded-java.awt.event.ContainerEvent-\">componentAdded</a>, <a href=\"../../acm/program/Program.html#componentHidden-java.awt.event.ComponentEvent-\">componentHidden</a>, <a href=\"../../acm/program/Program.html#componentMoved-java.awt.event.ComponentEvent-\">componentMoved</a>, <a href=\"../../acm/program/Program.html#componentRemoved-java.awt.event.ContainerEvent-\">componentRemoved</a>, <a href=\"../../acm/program/Program.html#componentResized-java.awt.event.ComponentEvent-\">componentResized</a>, <a href=\"../../acm/program/Program.html#componentShown-java.awt.event.ComponentEvent-\">componentShown</a>, <a href=\"../../acm/program/Program.html#confirm-java.lang.String-\">confirm</a>, <a href=\"../../acm/program/Program.html#contentsChanged-javax.swing.event.ListDataEvent-\">contentsChanged</a>, <a href=\"../../acm/program/Program.html#createConsole--\">createConsole</a>, <a href=\"../../acm/program/Program.html#createDialogIO--\">createDialogIO</a>, <a href=\"../../acm/program/Program.html#createMenuBar--\">createMenuBar</a>, <a href=\"../../acm/program/Program.html#createParameterTable-java.lang.String:A-\">createParameterTable</a>, <a href=\"../../acm/program/Program.html#createProgramFrame--\">createProgramFrame</a>, <a href=\"../../acm/program/Program.html#destroy--\">destroy</a>, <a href=\"../../acm/program/Program.html#endHook--\">endHook</a>, <a href=\"../../acm/program/Program.html#error-java.lang.Exception-\">error</a>, <a href=\"../../acm/program/Program.html#error-java.lang.Exception-java.lang.String-\">error</a>, <a href=\"../../acm/program/Program.html#error-java.lang.String-\">error</a>, <a href=\"../../acm/program/Program.html#exit--\">exit</a>, <a href=\"../../acm/program/Program.html#fileExists-java.lang.String-\">fileExists</a>, <a href=\"../../acm/program/Program.html#fileExists-java.lang.String-java.lang.String-\">fileExists</a>, <a href=\"../../acm/program/Program.html#fileExistsInsideJAR-java.lang.String-\">fileExistsInsideJAR</a>, <a href=\"../../acm/program/Program.html#fileExistsInsideJAR-java.lang.String-java.lang.String-\">fileExistsInsideJAR</a>, <a href=\"../../acm/program/Program.html#fileExistsOnDisk-java.lang.String-\">fileExistsOnDisk</a>, <a href=\"../../acm/program/Program.html#fileExistsOnDisk-java.lang.String-java.lang.String-\">fileExistsOnDisk</a>, <a href=\"../../acm/program/Program.html#fileSize-java.lang.String-\">fileSize</a>, <a href=\"../../acm/program/Program.html#fileSize-java.lang.String-java.lang.String-\">fileSize</a>, <a href=\"../../acm/program/Program.html#focusGained-java.awt.event.FocusEvent-\">focusGained</a>, <a href=\"../../acm/program/Program.html#focusLost-java.awt.event.FocusEvent-\">focusLost</a>, <a href=\"../../acm/program/Program.html#getAnimationDelay--\">getAnimationDelay</a>, <a href=\"../../acm/program/Program.html#getAppletStub--\">getAppletStub</a>, <a href=\"../../acm/program/Program.html#getArgumentArray--\">getArgumentArray</a>, <a href=\"../../acm/program/Program.html#getBoolean--\">getBoolean</a>, <a href=\"../../acm/program/Program.html#getBoolean-java.lang.String-\">getBoolean</a>, <a href=\"../../acm/program/Program.html#getBoolean-java.lang.String-java.lang.String-java.lang.String-\">getBoolean</a>, <a href=\"../../acm/program/Program.html#getBorder-java.lang.String-\">getBorder</a>, <a href=\"../../acm/program/Program.html#getBottomY--\">getBottomY</a>, <a href=\"../../acm/program/Program.html#getCenterLocation--\">getCenterLocation</a>, <a href=\"../../acm/program/Program.html#getCenterX--\">getCenterX</a>, <a href=\"../../acm/program/Program.html#getCenterY--\">getCenterY</a>, <a href=\"../../acm/program/Program.html#getCentralRegionSize--\">getCentralRegionSize</a>, <a href=\"../../acm/program/Program.html#getConsole--\">getConsole</a>, <a href=\"../../acm/program/Program.html#getDialog--\">getDialog</a>, <a href=\"../../acm/program/Program.html#getDouble--\">getDouble</a>, <a href=\"../../acm/program/Program.html#getDouble-double-double-\">getDouble</a>, <a href=\"../../acm/program/Program.html#getDouble-java.lang.String-\">getDouble</a>, <a href=\"../../acm/program/Program.html#getDouble-java.lang.String-double-double-\">getDouble</a>, <a href=\"../../acm/program/Program.html#getHeight--\">getHeight</a>, <a href=\"../../acm/program/Program.html#getInputModel--\">getInputModel</a>, <a href=\"../../acm/program/Program.html#getInteger--\">getInteger</a>, <a href=\"../../acm/program/Program.html#getInteger-int-int-\">getInteger</a>, <a href=\"../../acm/program/Program.html#getInteger-java.lang.String-\">getInteger</a>, <a href=\"../../acm/program/Program.html#getInteger-java.lang.String-int-int-\">getInteger</a>, <a href=\"../../acm/program/Program.html#getJFrame--\">getJFrame</a>, <a href=\"../../acm/program/Program.html#getLayout--\">getLayout</a>, <a href=\"../../acm/program/Program.html#getLine--\">getLine</a>, <a href=\"../../acm/program/Program.html#getLine-java.lang.String-\">getLine</a>, <a href=\"../../acm/program/Program.html#getMainThread--\">getMainThread</a>, <a href=\"../../acm/program/Program.html#getMenuBar--\">getMenuBar</a>, <a href=\"../../acm/program/Program.html#getOutputColor--\">getOutputColor</a>, <a href=\"../../acm/program/Program.html#getOutputModel--\">getOutputModel</a>, <a href=\"../../acm/program/Program.html#getParameter-java.lang.String-\">getParameter</a>, <a href=\"../../acm/program/Program.html#getParameterTable--\">getParameterTable</a>, <a href=\"../../acm/program/Program.html#getPreferredSize--\">getPreferredSize</a>, <a href=\"../../acm/program/Program.html#getReader--\">getReader</a>, <a href=\"../../acm/program/Program.html#getReal--\">getReal</a>, <a href=\"../../acm/program/Program.html#getReal-double-double-\">getReal</a>, <a href=\"../../acm/program/Program.html#getReal-java.lang.String-\">getReal</a>, <a href=\"../../acm/program/Program.html#getReal-java.lang.String-double-double-\">getReal</a>, <a href=\"../../acm/program/Program.html#getRegionPanel-java.lang.String-\">getRegionPanel</a>, <a href=\"../../acm/program/Program.html#getRightX--\">getRightX</a>, <a href=\"../../acm/program/Program.html#getScreenHeight--\">getScreenHeight</a>, <a href=\"../../acm/program/Program.html#getScreenSize--\">getScreenSize</a>, <a href=\"../../acm/program/Program.html#getScreenWidth--\">getScreenWidth</a>, <a href=\"../../acm/program/Program.html#getStartupObject--\">getStartupObject</a>, <a href=\"../../acm/program/Program.html#getTitle--\">getTitle</a>, <a href=\"../../acm/program/Program.html#getWidth--\">getWidth</a>, <a href=\"../../acm/program/Program.html#getWindow--\">getWindow</a>, <a href=\"../../acm/program/Program.html#getWriter--\">getWriter</a>, <a href=\"../../acm/program/Program.html#getYesOrNo-java.lang.String-\">getYesOrNo</a>, <a href=\"../../acm/program/Program.html#hasConfiguration--\">hasConfiguration</a>, <a href=\"../../acm/program/Program.html#init--\">init</a>, <a href=\"../../acm/program/Program.html#insertUpdate-javax.swing.event.DocumentEvent-\">insertUpdate</a>, <a href=\"../../acm/program/Program.html#intervalAdded-javax.swing.event.ListDataEvent-\">intervalAdded</a>, <a href=\"../../acm/program/Program.html#intervalRemoved-javax.swing.event.ListDataEvent-\">intervalRemoved</a>, <a href=\"../../acm/program/Program.html#isAnimated--\">isAnimated</a>, <a href=\"../../acm/program/Program.html#isApplet--\">isApplet</a>, <a href=\"../../acm/program/Program.html#isAppletMode--\">isAppletMode</a>, <a href=\"../../acm/program/Program.html#isExitOnClose--\">isExitOnClose</a>, <a href=\"../../acm/program/Program.html#isInitialized--\">isInitialized</a>, <a href=\"../../acm/program/Program.html#isStarted--\">isStarted</a>, <a href=\"../../acm/program/Program.html#itemStateChanged-java.awt.event.ItemEvent-\">itemStateChanged</a>, <a href=\"../../acm/program/Program.html#keyPressed-java.awt.event.KeyEvent-\">keyPressed</a>, <a href=\"../../acm/program/Program.html#keyReleased-java.awt.event.KeyEvent-\">keyReleased</a>, <a href=\"../../acm/program/Program.html#keyTyped-java.awt.event.KeyEvent-\">keyTyped</a>, <a href=\"../../acm/program/Program.html#killMe--\">killMe</a>, <a href=\"../../acm/program/Program.html#loadConfiguration--\">loadConfiguration</a>, <a href=\"../../acm/program/Program.html#loadConfiguration-java.util.Properties-\">loadConfiguration</a>, <a href=\"../../acm/program/Program.html#menuCanceled-javax.swing.event.MenuEvent-\">menuCanceled</a>, <a href=\"../../acm/program/Program.html#menuDeselected-javax.swing.event.MenuEvent-\">menuDeselected</a>, <a href=\"../../acm/program/Program.html#menuSelected-javax.swing.event.MenuEvent-\">menuSelected</a>, <a href=\"../../acm/program/Program.html#mouseClicked-java.awt.event.MouseEvent-\">mouseClicked</a>, <a href=\"../../acm/program/Program.html#mouseDragged-java.awt.event.MouseEvent-\">mouseDragged</a>, <a href=\"../../acm/program/Program.html#mouseEntered-java.awt.event.MouseEvent-\">mouseEntered</a>, <a href=\"../../acm/program/Program.html#mouseExited-java.awt.event.MouseEvent-\">mouseExited</a>, <a href=\"../../acm/program/Program.html#mouseMoved-java.awt.event.MouseEvent-\">mouseMoved</a>, <a href=\"../../acm/program/Program.html#mousePressed-java.awt.event.MouseEvent-\">mousePressed</a>, <a href=\"../../acm/program/Program.html#mouseReleased-java.awt.event.MouseEvent-\">mouseReleased</a>, <a href=\"../../acm/program/Program.html#mouseWheelMoved-java.awt.event.MouseWheelEvent-\">mouseWheelMoved</a>, <a href=\"../../acm/program/Program.html#openFile-java.lang.String-\">openFile</a>, <a href=\"../../acm/program/Program.html#openFile-java.lang.String-java.lang.String-\">openFile</a>, <a href=\"../../acm/program/Program.html#openFileFromDisk-java.lang.String-\">openFileFromDisk</a>, <a href=\"../../acm/program/Program.html#openFileFromDisk-java.lang.String-java.lang.String-\">openFileFromDisk</a>, <a href=\"../../acm/program/Program.html#openFileFromJAR-java.lang.String-\">openFileFromJAR</a>, <a href=\"../../acm/program/Program.html#openFileFromJAR-java.lang.String-java.lang.String-\">openFileFromJAR</a>, <a href=\"../../acm/program/Program.html#pack--\">pack</a>, <a href=\"../../acm/program/Program.html#pause-double-\">pause</a>, <a href=\"../../acm/program/Program.html#pauseTick--\">pauseTick</a>, <a href=\"../../acm/program/Program.html#popupMenuCanceled-javax.swing.event.PopupMenuEvent-\">popupMenuCanceled</a>, <a href=\"../../acm/program/Program.html#popupMenuWillBecomeInvisible-javax.swing.event.PopupMenuEvent-\">popupMenuWillBecomeInvisible</a>, <a href=\"../../acm/program/Program.html#popupMenuWillBecomeVisible-javax.swing.event.PopupMenuEvent-\">popupMenuWillBecomeVisible</a>, <a href=\"../../acm/program/Program.html#print-boolean-\">print</a>, <a href=\"../../acm/program/Program.html#print-boolean-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-char-\">print</a>, <a href=\"../../acm/program/Program.html#print-char-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-double-\">print</a>, <a href=\"../../acm/program/Program.html#print-double-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-float-\">print</a>, <a href=\"../../acm/program/Program.html#print-float-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-int-\">print</a>, <a href=\"../../acm/program/Program.html#print-int-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-long-\">print</a>, <a href=\"../../acm/program/Program.html#print-long-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-java.lang.Object-\">print</a>, <a href=\"../../acm/program/Program.html#print-java.lang.Object-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-java.lang.String-\">print</a>, <a href=\"../../acm/program/Program.html#print-java.lang.String-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#printf-java.lang.String-java.lang.Object...-\">printf</a>, <a href=\"../../acm/program/Program.html#println--\">println</a>, <a href=\"../../acm/program/Program.html#println-boolean-\">println</a>, <a href=\"../../acm/program/Program.html#println-boolean-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-char-\">println</a>, <a href=\"../../acm/program/Program.html#println-char-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-double-\">println</a>, <a href=\"../../acm/program/Program.html#println-double-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-float-\">println</a>, <a href=\"../../acm/program/Program.html#println-float-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-int-\">println</a>, <a href=\"../../acm/program/Program.html#println-int-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-long-\">println</a>, <a href=\"../../acm/program/Program.html#println-long-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-java.lang.Object-\">println</a>, <a href=\"../../acm/program/Program.html#println-java.lang.Object-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-java.lang.String-\">println</a>, <a href=\"../../acm/program/Program.html#println-java.lang.String-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#prompt-java.lang.String-\">prompt</a>, <a href=\"../../acm/program/Program.html#readBoolean--\">readBoolean</a>, <a href=\"../../acm/program/Program.html#readBoolean-java.lang.String-\">readBoolean</a>, <a href=\"../../acm/program/Program.html#readBoolean-java.lang.String-java.lang.String-java.lang.String-\">readBoolean</a>, <a href=\"../../acm/program/Program.html#readDouble--\">readDouble</a>, <a href=\"../../acm/program/Program.html#readDouble-double-double-\">readDouble</a>, <a href=\"../../acm/program/Program.html#readDouble-java.lang.String-\">readDouble</a>, <a href=\"../../acm/program/Program.html#readDouble-java.lang.String-double-double-\">readDouble</a>, <a href=\"../../acm/program/Program.html#readInt--\">readInt</a>, <a href=\"../../acm/program/Program.html#readInt-int-int-\">readInt</a>, <a href=\"../../acm/program/Program.html#readInt-java.lang.String-\">readInt</a>, <a href=\"../../acm/program/Program.html#readInt-java.lang.String-int-int-\">readInt</a>, <a href=\"../../acm/program/Program.html#readLine--\">readLine</a>, <a href=\"../../acm/program/Program.html#readLine-java.lang.String-\">readLine</a>, <a href=\"../../acm/program/Program.html#remove-java.awt.Component-\">remove</a>, <a href=\"../../acm/program/Program.html#remove-int-\">remove</a>, <a href=\"../../acm/program/Program.html#removeAll--\">removeAll</a>, <a href=\"../../acm/program/Program.html#removeFromRegion-java.awt.Component-java.lang.String-\">removeFromRegion</a>, <a href=\"../../acm/program/Program.html#removeMenuBar--\">removeMenuBar</a>, <a href=\"../../acm/program/Program.html#removeUpdate-javax.swing.event.DocumentEvent-\">removeUpdate</a>, <a href=\"../../acm/program/Program.html#repaint--\">repaint</a>, <a href=\"../../acm/program/Program.html#runHook--\">runHook</a>, <a href=\"../../acm/program/Program.html#saveConfiguration--\">saveConfiguration</a>, <a href=\"../../acm/program/Program.html#saveConfiguration-java.util.Properties-\">saveConfiguration</a>, <a href=\"../../acm/program/Program.html#setAnimated-boolean-\">setAnimated</a>, <a href=\"../../acm/program/Program.html#setAnimationDelay-int-\">setAnimationDelay</a>, <a href=\"../../acm/program/Program.html#setAppletStub-java.applet.AppletStub-\">setAppletStub</a>, <a href=\"../../acm/program/Program.html#setBackground-java.awt.Color-\">setBackground</a>, <a href=\"../../acm/program/Program.html#setBottomY-double-\">setBottomY</a>, <a href=\"../../acm/program/Program.html#setCenterLocation-double-double-\">setCenterLocation</a>, <a href=\"../../acm/program/Program.html#setCenterX-double-\">setCenterX</a>, <a href=\"../../acm/program/Program.html#setCenterY-double-\">setCenterY</a>, <a href=\"../../acm/program/Program.html#setConsole-acm.io.IOConsole-\">setConsole</a>, <a href=\"../../acm/program/Program.html#setDialog-acm.io.IODialog-\">setDialog</a>, <a href=\"../../acm/program/Program.html#setExitOnClose-boolean-\">setExitOnClose</a>, <a href=\"../../acm/program/Program.html#setFramesPerSecond-int-\">setFramesPerSecond</a>, <a href=\"../../acm/program/Program.html#setHeight-double-\">setHeight</a>, <a href=\"../../acm/program/Program.html#setInputModel-acm.io.IOModel-\">setInputModel</a>, <a href=\"../../acm/program/Program.html#setInvisible-acm.graphics.GObject-boolean-\">setInvisible</a>, <a href=\"../../acm/program/Program.html#setJFrame-javax.swing.JFrame-\">setJFrame</a>, <a href=\"../../acm/program/Program.html#setJMenuBar-javax.swing.JMenuBar-\">setJMenuBar</a>, <a href=\"../../acm/program/Program.html#setLayout-java.awt.LayoutManager-\">setLayout</a>, <a href=\"../../acm/program/Program.html#setLocation-double-double-\">setLocation</a>, <a href=\"../../acm/program/Program.html#setLocation-acm.graphics.GPoint-\">setLocation</a>, <a href=\"../../acm/program/Program.html#setOutputColor-java.awt.Color-\">setOutputColor</a>, <a href=\"../../acm/program/Program.html#setOutputModel-acm.io.IOModel-\">setOutputModel</a>, <a href=\"../../acm/program/Program.html#setParameter-java.lang.String-java.lang.String-\">setParameter</a>, <a href=\"../../acm/program/Program.html#setParameterTable-java.util.Map-\">setParameterTable</a>, <a href=\"../../acm/program/Program.html#setPauseScaleFactor-double-\">setPauseScaleFactor</a>, <a href=\"../../acm/program/Program.html#setResizable-boolean-\">setResizable</a>, <a href=\"../../acm/program/Program.html#setRightX-double-\">setRightX</a>, <a href=\"../../acm/program/Program.html#setShowPixelGrid-boolean-\">setShowPixelGrid</a>, <a href=\"../../acm/program/Program.html#setShowPixelInfo-boolean-\">setShowPixelInfo</a>, <a href=\"../../acm/program/Program.html#setSize-double-double-\">setSize</a>, <a href=\"../../acm/program/Program.html#setStartupObject-java.lang.Object-\">setStartupObject</a>, <a href=\"../../acm/program/Program.html#setTitle-java.lang.String-\">setTitle</a>, <a href=\"../../acm/program/Program.html#setWidth-double-\">setWidth</a>, <a href=\"../../acm/program/Program.html#setX-double-\">setX</a>, <a href=\"../../acm/program/Program.html#setY-double-\">setY</a>, <a href=\"../../acm/program/Program.html#showErrorMessage-java.lang.String-\">showErrorMessage</a>, <a href=\"../../acm/program/Program.html#start--\">start</a>, <a href=\"../../acm/program/Program.html#startAnimation--\">startAnimation</a>, <a href=\"../../acm/program/Program.html#startHook--\">startHook</a>, <a href=\"../../acm/program/Program.html#startRun--\">startRun</a>, <a href=\"../../acm/program/Program.html#stateChanged-javax.swing.event.ChangeEvent-\">stateChanged</a>, <a href=\"../../acm/program/Program.html#stopAnimation--\">stopAnimation</a>, <a href=\"../../acm/program/Program.html#textValueChanged-java.awt.event.TextEvent-\">textValueChanged</a>, <a href=\"../../acm/program/Program.html#validate--\">validate</a>, <a href=\"../../acm/program/Program.html#valueChanged-javax.swing.event.ListSelectionEvent-\">valueChanged</a>, <a href=\"../../acm/program/Program.html#windowActivated-java.awt.event.WindowEvent-\">windowActivated</a>, <a href=\"../../acm/program/Program.html#windowClosed-java.awt.event.WindowEvent-\">windowClosed</a>, <a href=\"../../acm/program/Program.html#windowClosing-java.awt.event.WindowEvent-\">windowClosing</a>, <a href=\"../../acm/program/Program.html#windowDeactivated-java.awt.event.WindowEvent-\">windowDeactivated</a>, <a href=\"../../acm/program/Program.html#windowDeiconified-java.awt.event.WindowEvent-\">windowDeiconified</a>, <a href=\"../../acm/program/Program.html#windowGainedFocus-java.awt.event.WindowEvent-\">windowGainedFocus</a>, <a href=\"../../acm/program/Program.html#windowIconified-java.awt.event.WindowEvent-\">windowIconified</a>, <a href=\"../../acm/program/Program.html#windowLostFocus-java.awt.event.WindowEvent-\">windowLostFocus</a>, <a href=\"../../acm/program/Program.html#windowOpened-java.awt.event.WindowEvent-\">windowOpened</a>, <a href=\"../../acm/program/Program.html#windowStateChanged-java.awt.event.WindowEvent-\">windowStateChanged</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JApplet\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#createRootPane--\" title=\"class or interface in javax.swing\">createRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getAccessibleContext--\" title=\"class or interface in javax.swing\">getAccessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getContentPane--\" title=\"class or interface in javax.swing\">getContentPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getGlassPane--\" title=\"class or interface in javax.swing\">getGlassPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getGraphics--\" title=\"class or interface in javax.swing\">getGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getJMenuBar--\" title=\"class or interface in javax.swing\">getJMenuBar</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getLayeredPane--\" title=\"class or interface in javax.swing\">getLayeredPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getRootPane--\" title=\"class or interface in javax.swing\">getRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getTransferHandler--\" title=\"class or interface in javax.swing\">getTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#isRootPaneCheckingEnabled--\" title=\"class or interface in javax.swing\">isRootPaneCheckingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#paramString--\" title=\"class or interface in javax.swing\">paramString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#repaint-long-int-int-int-int-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setContentPane-java.awt.Container-\" title=\"class or interface in javax.swing\">setContentPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setGlassPane-java.awt.Component-\" title=\"class or interface in javax.swing\">setGlassPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setLayeredPane-javax.swing.JLayeredPane-\" title=\"class or interface in javax.swing\">setLayeredPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setRootPane-javax.swing.JRootPane-\" title=\"class or interface in javax.swing\">setRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setRootPaneCheckingEnabled-boolean-\" title=\"class or interface in javax.swing\">setRootPaneCheckingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setTransferHandler-javax.swing.TransferHandler-\" title=\"class or interface in javax.swing\">setTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#update-java.awt.Graphics-\" title=\"class or interface in javax.swing\">update</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.applet.Applet\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.applet.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">Applet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAppletContext--\" title=\"class or interface in java.applet\">getAppletContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAppletInfo--\" title=\"class or interface in java.applet\">getAppletInfo</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAudioClip-java.net.URL-\" title=\"class or interface in java.applet\">getAudioClip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAudioClip-java.net.URL-java.lang.String-\" title=\"class or interface in java.applet\">getAudioClip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getCodeBase--\" title=\"class or interface in java.applet\">getCodeBase</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getDocumentBase--\" title=\"class or interface in java.applet\">getDocumentBase</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getImage-java.net.URL-\" title=\"class or interface in java.applet\">getImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getImage-java.net.URL-java.lang.String-\" title=\"class or interface in java.applet\">getImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getLocale--\" title=\"class or interface in java.applet\">getLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getParameterInfo--\" title=\"class or interface in java.applet\">getParameterInfo</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#isActive--\" title=\"class or interface in java.applet\">isActive</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#isValidateRoot--\" title=\"class or interface in java.applet\">isValidateRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#newAudioClip-java.net.URL-\" title=\"class or interface in java.applet\">newAudioClip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#play-java.net.URL-\" title=\"class or interface in java.applet\">play</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#play-java.net.URL-java.lang.String-\" title=\"class or interface in java.applet\">play</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#resize-java.awt.Dimension-\" title=\"class or interface in java.applet\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#resize-int-int-\" title=\"class or interface in java.applet\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#setStub-java.applet.AppletStub-\" title=\"class or interface in java.applet\">setStub</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#showStatus-java.lang.String-\" title=\"class or interface in java.applet\">showStatus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#stop--\" title=\"class or interface in java.applet\">stop</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Panel\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\">Panel</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true#addNotify--\" title=\"class or interface in java.awt\">addNotify</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.lang.String-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">addContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#applyComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">applyComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#areFocusTraversalKeysSet-int-\" title=\"class or interface in java.awt\">areFocusTraversalKeysSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#countComponents--\" title=\"class or interface in java.awt\">countComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#deliverEvent-java.awt.Event-\" title=\"class or interface in java.awt\">deliverEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#doLayout--\" title=\"class or interface in java.awt\">doLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-int-int-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getAlignmentX--\" title=\"class or interface in java.awt\">getAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getAlignmentY--\" title=\"class or interface in java.awt\">getAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponent-int-\" title=\"class or interface in java.awt\">getComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-int-int-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentCount--\" title=\"class or interface in java.awt\">getComponentCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponents--\" title=\"class or interface in java.awt\">getComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentZOrder-java.awt.Component-\" title=\"class or interface in java.awt\">getComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getContainerListeners--\" title=\"class or interface in java.awt\">getContainerListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalKeys-int-\" title=\"class or interface in java.awt\">getFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalPolicy--\" title=\"class or interface in java.awt\">getFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getInsets--\" title=\"class or interface in java.awt\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getListeners-java.lang.Class-\" title=\"class or interface in java.awt\">getListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMaximumSize--\" title=\"class or interface in java.awt\">getMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMinimumSize--\" title=\"class or interface in java.awt\">getMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMousePosition-boolean-\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#insets--\" title=\"class or interface in java.awt\">insets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#invalidate--\" title=\"class or interface in java.awt\">invalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isAncestorOf-java.awt.Component-\" title=\"class or interface in java.awt\">isAncestorOf</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot--\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot-java.awt.Container-\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicyProvider--\" title=\"class or interface in java.awt\">isFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicySet--\" title=\"class or interface in java.awt\">isFocusTraversalPolicySet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#layout--\" title=\"class or interface in java.awt\">layout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintStream-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintWriter-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#locate-int-int-\" title=\"class or interface in java.awt\">locate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#minimumSize--\" title=\"class or interface in java.awt\">minimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paint-java.awt.Graphics-\" title=\"class or interface in java.awt\">paint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paintComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#preferredSize--\" title=\"class or interface in java.awt\">preferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#print-java.awt.Graphics-\" title=\"class or interface in java.awt\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#printComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">printComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processContainerEvent-java.awt.event.ContainerEvent-\" title=\"class or interface in java.awt\">processContainerEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">processEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">removeContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeNotify--\" title=\"class or interface in java.awt\">removeNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setComponentZOrder-java.awt.Component-int-\" title=\"class or interface in java.awt\">setComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusCycleRoot-boolean-\" title=\"class or interface in java.awt\">setFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalKeys-int-java.util.Set-\" title=\"class or interface in java.awt\">setFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicy-java.awt.FocusTraversalPolicy-\" title=\"class or interface in java.awt\">setFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicyProvider-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFont-java.awt.Font-\" title=\"class or interface in java.awt\">setFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#transferFocusDownCycle--\" title=\"class or interface in java.awt\">transferFocusDownCycle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validateTree--\" title=\"class or interface in java.awt\">validateTree</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#action-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">action</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#add-java.awt.PopupMenu-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">addComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">addFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">addHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">addHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">addInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">addKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">addMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">addMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">addMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#bounds--\" title=\"class or interface in java.awt\">bounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#coalesceEvents-java.awt.AWTEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">coalesceEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-int-int-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-java.awt.Point-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-java.awt.image.ImageProducer-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-int-int-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-java.awt.ImageCapabilities-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disable--\" title=\"class or interface in java.awt\">disable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disableEvents-long-\" title=\"class or interface in java.awt\">disableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#dispatchEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">dispatchEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable--\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable-boolean-\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableEvents-long-\" title=\"class or interface in java.awt\">enableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableInputMethods-boolean-\" title=\"class or interface in java.awt\">enableInputMethods</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-boolean-boolean-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-byte-byte-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-char-char-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-double-double-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-float-float-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-int-int-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-long-long-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-short-short-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBackground--\" title=\"class or interface in java.awt\">getBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBaseline-int-int-\" title=\"class or interface in java.awt\">getBaseline</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBaselineResizeBehavior--\" title=\"class or interface in java.awt\">getBaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds--\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getColorModel--\" title=\"class or interface in java.awt\">getColorModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentListeners--\" title=\"class or interface in java.awt\">getComponentListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentOrientation--\" title=\"class or interface in java.awt\">getComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getCursor--\" title=\"class or interface in java.awt\">getCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getDropTarget--\" title=\"class or interface in java.awt\">getDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusCycleRootAncestor--\" title=\"class or interface in java.awt\">getFocusCycleRootAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusListeners--\" title=\"class or interface in java.awt\">getFocusListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusTraversalKeysEnabled--\" title=\"class or interface in java.awt\">getFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFont--\" title=\"class or interface in java.awt\">getFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFontMetrics-java.awt.Font-\" title=\"class or interface in java.awt\">getFontMetrics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getForeground--\" title=\"class or interface in java.awt\">getForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getGraphicsConfiguration--\" title=\"class or interface in java.awt\">getGraphicsConfiguration</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyBoundsListeners--\" title=\"class or interface in java.awt\">getHierarchyBoundsListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyListeners--\" title=\"class or interface in java.awt\">getHierarchyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getIgnoreRepaint--\" title=\"class or interface in java.awt\">getIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputContext--\" title=\"class or interface in java.awt\">getInputContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodListeners--\" title=\"class or interface in java.awt\">getInputMethodListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodRequests--\" title=\"class or interface in java.awt\">getInputMethodRequests</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getKeyListeners--\" title=\"class or interface in java.awt\">getKeyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation-java.awt.Point-\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocationOnScreen--\" title=\"class or interface in java.awt\">getLocationOnScreen</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseListeners--\" title=\"class or interface in java.awt\">getMouseListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseMotionListeners--\" title=\"class or interface in java.awt\">getMouseMotionListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMousePosition--\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseWheelListeners--\" title=\"class or interface in java.awt\">getMouseWheelListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getName--\" title=\"class or interface in java.awt\">getName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getParent--\" title=\"class or interface in java.awt\">getParent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPeer--\" title=\"class or interface in java.awt\">getPeer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners--\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners-java.lang.String-\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize--\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getToolkit--\" title=\"class or interface in java.awt\">getToolkit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getTreeLock--\" title=\"class or interface in java.awt\">getTreeLock</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getX--\" title=\"class or interface in java.awt\">getX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getY--\" title=\"class or interface in java.awt\">getY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#gotFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">gotFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#handleEvent-java.awt.Event-\" title=\"class or interface in java.awt\">handleEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hasFocus--\" title=\"class or interface in java.awt\">hasFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hide--\" title=\"class or interface in java.awt\">hide</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#imageUpdate-java.awt.Image-int-int-int-int-int-\" title=\"class or interface in java.awt\">imageUpdate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#inside-int-int-\" title=\"class or interface in java.awt\">inside</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isBackgroundSet--\" title=\"class or interface in java.awt\">isBackgroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isCursorSet--\" title=\"class or interface in java.awt\">isCursorSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDisplayable--\" title=\"class or interface in java.awt\">isDisplayable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDoubleBuffered--\" title=\"class or interface in java.awt\">isDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isEnabled--\" title=\"class or interface in java.awt\">isEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusable--\" title=\"class or interface in java.awt\">isFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusOwner--\" title=\"class or interface in java.awt\">isFocusOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusTraversable--\" title=\"class or interface in java.awt\">isFocusTraversable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFontSet--\" title=\"class or interface in java.awt\">isFontSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isForegroundSet--\" title=\"class or interface in java.awt\">isForegroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isLightweight--\" title=\"class or interface in java.awt\">isLightweight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMaximumSizeSet--\" title=\"class or interface in java.awt\">isMaximumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMinimumSizeSet--\" title=\"class or interface in java.awt\">isMinimumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isOpaque--\" title=\"class or interface in java.awt\">isOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isPreferredSizeSet--\" title=\"class or interface in java.awt\">isPreferredSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isShowing--\" title=\"class or interface in java.awt\">isShowing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isValid--\" title=\"class or interface in java.awt\">isValid</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isVisible--\" title=\"class or interface in java.awt\">isVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyDown-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyUp-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list--\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintStream-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintWriter-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#location--\" title=\"class or interface in java.awt\">location</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#lostFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">lostFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDown-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDrag-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDrag</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseEnter-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseEnter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseExit-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseExit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseMove-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseMove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseUp-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#move-int-int-\" title=\"class or interface in java.awt\">move</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#nextFocus--\" title=\"class or interface in java.awt\">nextFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#paintAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#postEvent-java.awt.Event-\" title=\"class or interface in java.awt\">postEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#printAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">printAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processComponentEvent-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt\">processComponentEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processFocusEvent-java.awt.event.FocusEvent-\" title=\"class or interface in java.awt\">processFocusEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyBoundsEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyBoundsEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processInputMethodEvent-java.awt.event.InputMethodEvent-\" title=\"class or interface in java.awt\">processInputMethodEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in java.awt\">processKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseEvent-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt\">processMouseEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseMotionEvent-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt\">processMouseMotionEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseWheelEvent-java.awt.event.MouseWheelEvent-\" title=\"class or interface in java.awt\">processMouseWheelEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#remove-java.awt.MenuComponent-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">removeComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">removeFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">removeHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">removeHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">removeInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">removeKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">removeMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">removeMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">removeMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-int-int-int-int-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-long-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocus--\" title=\"class or interface in java.awt\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocus-boolean-\" title=\"class or interface in java.awt\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocusInWindow--\" title=\"class or interface in java.awt\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocusInWindow-boolean-\" title=\"class or interface in java.awt\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#reshape-int-int-int-int-\" title=\"class or interface in java.awt\">reshape</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#revalidate--\" title=\"class or interface in java.awt\">revalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-int-int-int-int-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">setComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setCursor-java.awt.Cursor-\" title=\"class or interface in java.awt\">setCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setDropTarget-java.awt.dnd.DropTarget-\" title=\"class or interface in java.awt\">setDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setEnabled-boolean-\" title=\"class or interface in java.awt\">setEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusable-boolean-\" title=\"class or interface in java.awt\">setFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusTraversalKeysEnabled-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setForeground-java.awt.Color-\" title=\"class or interface in java.awt\">setForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setIgnoreRepaint-boolean-\" title=\"class or interface in java.awt\">setIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocale-java.util.Locale-\" title=\"class or interface in java.awt\">setLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setMaximumSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setMinimumSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setName-java.lang.String-\" title=\"class or interface in java.awt\">setName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setPreferredSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-int-int-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setVisible-boolean-\" title=\"class or interface in java.awt\">setVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show--\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show-boolean-\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#size--\" title=\"class or interface in java.awt\">size</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#toString--\" title=\"class or interface in java.awt\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocus--\" title=\"class or interface in java.awt\">transferFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusBackward--\" title=\"class or interface in java.awt\">transferFocusBackward</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusUpCycle--\" title=\"class or interface in java.awt\">transferFocusUpCycle</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.karel.KarelInterface\">\n<!--   -->\n</a>\n<h3>Methods inherited from interface&nbsp;stanford.karel.<a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></h3>\n<code><a href=\"../../stanford/karel/KarelInterface.html#pause-double-\">pause</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"Karel--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>Karel</h4>\n<pre>public&nbsp;Karel()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"run--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>run</h4>\n<pre>public&nbsp;void&nbsp;run()</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../acm/program/Program.html#run--\">Program</a></code></span></div>\n<div class=\"block\">Specifies the code to be executed as the program runs.\n The <code>run</code> method is required for applications that have\n a thread of control that runs even in the absence of user actions,\n such as a program that uses console interation or that involves\n animation.  GUI-based programs that operate by setting up an initial\n configuration and then wait for user events usually do not specify a\n <code>run</code> method and supply a new definition for <code>init</code>\n instead.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#run--\">run</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true#run--\" title=\"class or interface in java.lang\">run</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#run--\">run</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/Program.html#run--\">run</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"move--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>move</h4>\n<pre>public&nbsp;void&nbsp;move()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#move--\">move</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"turnLeft--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>turnLeft</h4>\n<pre>public&nbsp;void&nbsp;turnLeft()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#turnLeft--\">turnLeft</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"pickBeeper--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>pickBeeper</h4>\n<pre>public&nbsp;void&nbsp;pickBeeper()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#pickBeeper--\">pickBeeper</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"putBeeper--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>putBeeper</h4>\n<pre>public&nbsp;void&nbsp;putBeeper()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#putBeeper--\">putBeeper</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"frontIsClear--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>frontIsClear</h4>\n<pre>public&nbsp;boolean&nbsp;frontIsClear()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#frontIsClear--\">frontIsClear</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"frontIsBlocked--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>frontIsBlocked</h4>\n<pre>public&nbsp;boolean&nbsp;frontIsBlocked()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#frontIsBlocked--\">frontIsBlocked</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"leftIsClear--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>leftIsClear</h4>\n<pre>public&nbsp;boolean&nbsp;leftIsClear()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#leftIsClear--\">leftIsClear</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"leftIsBlocked--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>leftIsBlocked</h4>\n<pre>public&nbsp;boolean&nbsp;leftIsBlocked()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#leftIsBlocked--\">leftIsBlocked</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"rightIsClear--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>rightIsClear</h4>\n<pre>public&nbsp;boolean&nbsp;rightIsClear()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#rightIsClear--\">rightIsClear</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"rightIsBlocked--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>rightIsBlocked</h4>\n<pre>public&nbsp;boolean&nbsp;rightIsBlocked()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#rightIsBlocked--\">rightIsBlocked</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"beepersPresent--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>beepersPresent</h4>\n<pre>public&nbsp;boolean&nbsp;beepersPresent()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#beepersPresent--\">beepersPresent</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"noBeepersPresent--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>noBeepersPresent</h4>\n<pre>public&nbsp;boolean&nbsp;noBeepersPresent()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#noBeepersPresent--\">noBeepersPresent</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"beepersInBag--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>beepersInBag</h4>\n<pre>public&nbsp;boolean&nbsp;beepersInBag()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#beepersInBag--\">beepersInBag</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"noBeepersInBag--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>noBeepersInBag</h4>\n<pre>public&nbsp;boolean&nbsp;noBeepersInBag()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#noBeepersInBag--\">noBeepersInBag</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"facingNorth--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>facingNorth</h4>\n<pre>public&nbsp;boolean&nbsp;facingNorth()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#facingNorth--\">facingNorth</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"facingEast--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>facingEast</h4>\n<pre>public&nbsp;boolean&nbsp;facingEast()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#facingEast--\">facingEast</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"facingSouth--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>facingSouth</h4>\n<pre>public&nbsp;boolean&nbsp;facingSouth()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#facingSouth--\">facingSouth</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"facingWest--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>facingWest</h4>\n<pre>public&nbsp;boolean&nbsp;facingWest()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#facingWest--\">facingWest</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"notFacingNorth--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>notFacingNorth</h4>\n<pre>public&nbsp;boolean&nbsp;notFacingNorth()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#notFacingNorth--\">notFacingNorth</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"notFacingEast--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>notFacingEast</h4>\n<pre>public&nbsp;boolean&nbsp;notFacingEast()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#notFacingEast--\">notFacingEast</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"notFacingSouth--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>notFacingSouth</h4>\n<pre>public&nbsp;boolean&nbsp;notFacingSouth()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#notFacingSouth--\">notFacingSouth</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"notFacingWest--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>notFacingWest</h4>\n<pre>public&nbsp;boolean&nbsp;notFacingWest()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#notFacingWest--\">notFacingWest</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"main-java.lang.String:A-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>main</h4>\n<pre>public static&nbsp;void&nbsp;main(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</pre>\n</li>\n</ul>\n<a name=\"menuAction-java.awt.event.ActionEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>menuAction</h4>\n<pre>public&nbsp;boolean&nbsp;menuAction(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;event)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../acm/program/Program.html#menuAction-java.awt.event.ActionEvent-\">Program</a></code></span></div>\n<div class=\"block\">Called whenever a program action is detected in the menu bar.\n Subclasses can override this method to extend the set of menu\n commands recognized even in the absence of a component with\n keyboard focus.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/Program.html#menuAction-java.awt.event.ActionEvent-\">menuAction</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"start-java.lang.String:A-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>start</h4>\n<pre>public&nbsp;void&nbsp;start(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</pre>\n<div class=\"block\">Starts a <code>KarelProgram</code> containing this Karel instance,\n passing it the specified arguments.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#start-java.lang.String:A-\">start</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/Program.html#start-java.lang.String:A-\">start</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>args</code> - An array of strings passed to the program</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getLocation--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getLocation</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;getLocation()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#getLocation--\">getLocation</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation--\" title=\"class or interface in java.awt\">getLocation</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setLocation-java.awt.Point-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setLocation</h4>\n<pre>public&nbsp;void&nbsp;setLocation(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#setLocation-java.awt.Point-\">setLocation</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-java.awt.Point-\" title=\"class or interface in java.awt\">setLocation</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setLocation-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setLocation</h4>\n<pre>public&nbsp;void&nbsp;setLocation(int&nbsp;x,\n                        int&nbsp;y)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#setLocation-int-int-\">setLocation</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-int-int-\" title=\"class or interface in java.awt\">setLocation</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getDirection--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getDirection</h4>\n<pre>public&nbsp;int&nbsp;getDirection()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#getDirection--\">getDirection</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setDirection-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setDirection</h4>\n<pre>public&nbsp;void&nbsp;setDirection(int&nbsp;dir)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#setDirection-int-\">setDirection</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getBeepersInBag--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getBeepersInBag</h4>\n<pre>public&nbsp;int&nbsp;getBeepersInBag()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#getBeepersInBag--\">getBeepersInBag</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setBeepersInBag-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setBeepersInBag</h4>\n<pre>public&nbsp;void&nbsp;setBeepersInBag(int&nbsp;nBeepers)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#setBeepersInBag-int-\">setBeepersInBag</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getWorld--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getWorld</h4>\n<pre>public&nbsp;<a href=\"../../stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a>&nbsp;getWorld()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#getWorld--\">getWorld</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setWorld-stanford.karel.KarelWorld-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setWorld</h4>\n<pre>public&nbsp;void&nbsp;setWorld(<a href=\"../../stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a>&nbsp;world)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#setWorld-stanford.karel.KarelWorld-\">setWorld</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"checkWorld-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>checkWorld</h4>\n<pre>protected&nbsp;void&nbsp;checkWorld(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;caller)</pre>\n</li>\n</ul>\n<a name=\"setDisplayOneFlag-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>setDisplayOneFlag</h4>\n<pre>public&nbsp;void&nbsp;setDisplayOneFlag(boolean&nbsp;flag)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/karel/KarelControlPanel.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/karel/Karel.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Karel.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JApplet\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.acm.program.Program\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/karel/KarelControlPanel.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:09 PDT 2017 -->\n<title>KarelControlPanel</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"KarelControlPanel\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":10,\"i16\":10,\"i17\":10,\"i18\":10,\"i19\":10,\"i20\":10,\"i21\":10,\"i22\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/karel/Karel.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/karel/KarelDirection.html\" title=\"enum in stanford.karel\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/karel/KarelControlPanel.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"KarelControlPanel.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JPanel\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.javax.swing.JComponent\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.karel</div>\n<h2 title=\"Class KarelControlPanel\" class=\"title\">Class KarelControlPanel</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Component</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Container</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JComponent</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JPanel</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.karel.KarelControlPanel</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/AdjustmentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">AdjustmentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observer.html?is-external=true\" title=\"class or interface in java.util\">Observer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeListener</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">KarelControlPanel</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a>\nimplements <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/AdjustmentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">AdjustmentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observer.html?is-external=true\" title=\"class or interface in java.util\">Observer</a></pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#stanford.karel.KarelControlPanel\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JPanel\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.AccessibleJPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel.AccessibleJPanel</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.AccessibleJComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent.AccessibleJComponent</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.AccessibleAWTContainer.html?is-external=true\" title=\"class or interface in java.awt\">Container.AccessibleAWTContainer</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.AccessibleAWTComponent.html?is-external=true\" title=\"class or interface in java.awt\">Component.AccessibleAWTComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BaselineResizeBehavior.html?is-external=true\" title=\"class or interface in java.awt\">Component.BaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BltBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.BltBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.FlipBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.FlipBufferStrategy</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#listenerList\" title=\"class or interface in javax.swing\">listenerList</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#TOOL_TIP_TEXT_KEY\" title=\"class or interface in javax.swing\">TOOL_TIP_TEXT_KEY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#ui\" title=\"class or interface in javax.swing\">ui</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#UNDEFINED_CONDITION\" title=\"class or interface in javax.swing\">UNDEFINED_CONDITION</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_ANCESTOR_OF_FOCUSED_COMPONENT\" title=\"class or interface in javax.swing\">WHEN_ANCESTOR_OF_FOCUSED_COMPONENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_FOCUSED\" title=\"class or interface in javax.swing\">WHEN_FOCUSED</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_IN_FOCUSED_WINDOW\" title=\"class or interface in javax.swing\">WHEN_IN_FOCUSED_WINDOW</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#accessibleContext\" title=\"class or interface in java.awt\">accessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#BOTTOM_ALIGNMENT\" title=\"class or interface in java.awt\">BOTTOM_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#CENTER_ALIGNMENT\" title=\"class or interface in java.awt\">CENTER_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#LEFT_ALIGNMENT\" title=\"class or interface in java.awt\">LEFT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#RIGHT_ALIGNMENT\" title=\"class or interface in java.awt\">RIGHT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#TOP_ALIGNMENT\" title=\"class or interface in java.awt\">TOP_ALIGNMENT</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.image.ImageObserver\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ABORT\" title=\"class or interface in java.awt.image\">ABORT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ALLBITS\" title=\"class or interface in java.awt.image\">ALLBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ERROR\" title=\"class or interface in java.awt.image\">ERROR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#FRAMEBITS\" title=\"class or interface in java.awt.image\">FRAMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#HEIGHT\" title=\"class or interface in java.awt.image\">HEIGHT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#PROPERTIES\" title=\"class or interface in java.awt.image\">PROPERTIES</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#SOMEBITS\" title=\"class or interface in java.awt.image\">SOMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#WIDTH\" title=\"class or interface in java.awt.image\">WIDTH</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelControlPanel.html#KarelControlPanel-stanford.karel.KarelProgram-\">KarelControlPanel</a></span>(<a href=\"../../stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a>&nbsp;program)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelControlPanel.html#actionPerformed-java.awt.event.ActionEvent-\">actionPerformed</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;e)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelControlPanel.html#adjustmentValueChanged-java.awt.event.AdjustmentEvent-\">adjustmentValueChanged</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/AdjustmentEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">AdjustmentEvent</a>&nbsp;e)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelControlPanel.html#cornerAction-java.awt.Point-\">cornerAction</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt)</code>\n<div class=\"block\">This action is invoked when the mouse is clicked on a corner, which is\n the wall in the indicated direction from the given point.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelControlPanel.html#createButtonPanel--\">createButtonPanel</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected stanford.karel.KarelWorldEditor</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelControlPanel.html#createEditor--\">createEditor</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelControlPanel.html#createEditorPanel--\">createEditorPanel</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelControlPanel.html#createResizePanel--\">createResizePanel</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected stanford.karel.KarelResizer</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelControlPanel.html#createResizer--\">createResizer</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelControlPanel.html#endWorldEdit--\">endWorldEdit</a></span>()</code>\n<div class=\"block\">This action is invoked at the end of an editing session.</div>\n</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>stanford.karel.KarelWorldEditor</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelControlPanel.html#getEditor--\">getEditor</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelControlPanel.html#getPreferredSize--\">getPreferredSize</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelControlPanel.html#getProgram--\">getProgram</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>stanford.karel.KarelResizer</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelControlPanel.html#getResizer--\">getResizer</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelControlPanel.html#getSpeed--\">getSpeed</a></span>()</code>\n<div class=\"block\">This method is invoked when the KarelWorld class needs to get the\n simulation speed.</div>\n</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelControlPanel.html#getView--\">getView</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelControlPanel.html#getWorld--\">getWorld</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelControlPanel.html#setSpeed-double-\">setSpeed</a></span>(double&nbsp;speed)</code>\n<div class=\"block\">This method is invoked when a world map file needs to set the simulation\n speed (between 0 and 100).</div>\n</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelControlPanel.html#setView-java.lang.String-\">setView</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>&nbsp;</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelControlPanel.html#startWorldEdit--\">startWorldEdit</a></span>()</code>\n<div class=\"block\">This action is invoked at the beginning of an editing session.</div>\n</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelControlPanel.html#stateChanged-javax.swing.event.ChangeEvent-\">stateChanged</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeEvent</a>&nbsp;e)</code>&nbsp;</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelControlPanel.html#trace--\">trace</a></span>()</code>\n<div class=\"block\">This action is invoked when karel executes an instruction</div>\n</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelControlPanel.html#update-java.util.Observable-java.lang.Object-\">update</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true\" title=\"class or interface in java.util\">Observable</a>&nbsp;obs,\n      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;arg)</code>&nbsp;</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelControlPanel.html#wallAction-java.awt.Point-int-\">wallAction</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt,\n          int&nbsp;dir)</code>\n<div class=\"block\">This action is invoked when the mouse is clicked on a wall, which is the\n wall in the indicated direction from the Karel coordinates given by pt.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JPanel\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\">JPanel</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true#getAccessibleContext--\" title=\"class or interface in javax.swing\">getAccessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true#getUI--\" title=\"class or interface in javax.swing\">getUI</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true#getUIClassID--\" title=\"class or interface in javax.swing\">getUIClassID</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true#paramString--\" title=\"class or interface in javax.swing\">paramString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true#setUI-javax.swing.plaf.PanelUI-\" title=\"class or interface in javax.swing\">setUI</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true#updateUI--\" title=\"class or interface in javax.swing\">updateUI</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addAncestorListener-javax.swing.event.AncestorListener-\" title=\"class or interface in javax.swing\">addAncestorListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addNotify--\" title=\"class or interface in javax.swing\">addNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addVetoableChangeListener-java.beans.VetoableChangeListener-\" title=\"class or interface in javax.swing\">addVetoableChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#computeVisibleRect-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">computeVisibleRect</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#contains-int-int-\" title=\"class or interface in javax.swing\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#createToolTip--\" title=\"class or interface in javax.swing\">createToolTip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#disable--\" title=\"class or interface in javax.swing\">disable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#enable--\" title=\"class or interface in javax.swing\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-boolean-boolean-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-char-char-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-int-int-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#fireVetoableChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in javax.swing\">fireVetoableChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getActionForKeyStroke-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">getActionForKeyStroke</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getActionMap--\" title=\"class or interface in javax.swing\">getActionMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAlignmentX--\" title=\"class or interface in javax.swing\">getAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAlignmentY--\" title=\"class or interface in javax.swing\">getAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAncestorListeners--\" title=\"class or interface in javax.swing\">getAncestorListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAutoscrolls--\" title=\"class or interface in javax.swing\">getAutoscrolls</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBaseline-int-int-\" title=\"class or interface in javax.swing\">getBaseline</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBaselineResizeBehavior--\" title=\"class or interface in javax.swing\">getBaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBorder--\" title=\"class or interface in javax.swing\">getBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBounds-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getClientProperty-java.lang.Object-\" title=\"class or interface in javax.swing\">getClientProperty</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getComponentGraphics-java.awt.Graphics-\" title=\"class or interface in javax.swing\">getComponentGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getComponentPopupMenu--\" title=\"class or interface in javax.swing\">getComponentPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getConditionForKeyStroke-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">getConditionForKeyStroke</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getDebugGraphicsOptions--\" title=\"class or interface in javax.swing\">getDebugGraphicsOptions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getDefaultLocale--\" title=\"class or interface in javax.swing\">getDefaultLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getFontMetrics-java.awt.Font-\" title=\"class or interface in javax.swing\">getFontMetrics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getGraphics--\" title=\"class or interface in javax.swing\">getGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getHeight--\" title=\"class or interface in javax.swing\">getHeight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInheritsPopupMenu--\" title=\"class or interface in javax.swing\">getInheritsPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputMap--\" title=\"class or interface in javax.swing\">getInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputMap-int-\" title=\"class or interface in javax.swing\">getInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputVerifier--\" title=\"class or interface in javax.swing\">getInputVerifier</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInsets--\" title=\"class or interface in javax.swing\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInsets-java.awt.Insets-\" title=\"class or interface in javax.swing\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getListeners-java.lang.Class-\" title=\"class or interface in javax.swing\">getListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getLocation-java.awt.Point-\" title=\"class or interface in javax.swing\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getMaximumSize--\" title=\"class or interface in javax.swing\">getMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getMinimumSize--\" title=\"class or interface in javax.swing\">getMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getNextFocusableComponent--\" title=\"class or interface in javax.swing\">getNextFocusableComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getPopupLocation-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">getPopupLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getRegisteredKeyStrokes--\" title=\"class or interface in javax.swing\">getRegisteredKeyStrokes</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getRootPane--\" title=\"class or interface in javax.swing\">getRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getToolTipLocation-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">getToolTipLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getToolTipText--\" title=\"class or interface in javax.swing\">getToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getToolTipText-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">getToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getTopLevelAncestor--\" title=\"class or interface in javax.swing\">getTopLevelAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getTransferHandler--\" title=\"class or interface in javax.swing\">getTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVerifyInputWhenFocusTarget--\" title=\"class or interface in javax.swing\">getVerifyInputWhenFocusTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVetoableChangeListeners--\" title=\"class or interface in javax.swing\">getVetoableChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVisibleRect--\" title=\"class or interface in javax.swing\">getVisibleRect</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getWidth--\" title=\"class or interface in javax.swing\">getWidth</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getX--\" title=\"class or interface in javax.swing\">getX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getY--\" title=\"class or interface in javax.swing\">getY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#grabFocus--\" title=\"class or interface in javax.swing\">grabFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#hide--\" title=\"class or interface in javax.swing\">hide</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isDoubleBuffered--\" title=\"class or interface in javax.swing\">isDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isLightweightComponent-java.awt.Component-\" title=\"class or interface in javax.swing\">isLightweightComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isManagingFocus--\" title=\"class or interface in javax.swing\">isManagingFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isOpaque--\" title=\"class or interface in javax.swing\">isOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isOptimizedDrawingEnabled--\" title=\"class or interface in javax.swing\">isOptimizedDrawingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingForPrint--\" title=\"class or interface in javax.swing\">isPaintingForPrint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingOrigin--\" title=\"class or interface in javax.swing\">isPaintingOrigin</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingTile--\" title=\"class or interface in javax.swing\">isPaintingTile</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isRequestFocusEnabled--\" title=\"class or interface in javax.swing\">isRequestFocusEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isValidateRoot--\" title=\"class or interface in javax.swing\">isValidateRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paint-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintBorder-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintChildren-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintChildren</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintComponent-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintImmediately-int-int-int-int-\" title=\"class or interface in javax.swing\">paintImmediately</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintImmediately-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">paintImmediately</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#print-java.awt.Graphics-\" title=\"class or interface in javax.swing\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printAll-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printBorder-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printChildren-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printChildren</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printComponent-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processComponentKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in javax.swing\">processComponentKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processKeyBinding-javax.swing.KeyStroke-java.awt.event.KeyEvent-int-boolean-\" title=\"class or interface in javax.swing\">processKeyBinding</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in javax.swing\">processKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processMouseEvent-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">processMouseEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processMouseMotionEvent-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">processMouseMotionEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#putClientProperty-java.lang.Object-java.lang.Object-\" title=\"class or interface in javax.swing\">putClientProperty</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#registerKeyboardAction-java.awt.event.ActionListener-javax.swing.KeyStroke-int-\" title=\"class or interface in javax.swing\">registerKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#registerKeyboardAction-java.awt.event.ActionListener-java.lang.String-javax.swing.KeyStroke-int-\" title=\"class or interface in javax.swing\">registerKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#removeAncestorListener-javax.swing.event.AncestorListener-\" title=\"class or interface in javax.swing\">removeAncestorListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#removeNotify--\" title=\"class or interface in javax.swing\">removeNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#removeVetoableChangeListener-java.beans.VetoableChangeListener-\" title=\"class or interface in javax.swing\">removeVetoableChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#repaint-long-int-int-int-int-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#repaint-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestDefaultFocus--\" title=\"class or interface in javax.swing\">requestDefaultFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocus--\" title=\"class or interface in javax.swing\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocus-boolean-\" title=\"class or interface in javax.swing\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocusInWindow--\" title=\"class or interface in javax.swing\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocusInWindow-boolean-\" title=\"class or interface in javax.swing\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#resetKeyboardActions--\" title=\"class or interface in javax.swing\">resetKeyboardActions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#reshape-int-int-int-int-\" title=\"class or interface in javax.swing\">reshape</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#revalidate--\" title=\"class or interface in javax.swing\">revalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#scrollRectToVisible-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">scrollRectToVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setActionMap-javax.swing.ActionMap-\" title=\"class or interface in javax.swing\">setActionMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAlignmentX-float-\" title=\"class or interface in javax.swing\">setAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAlignmentY-float-\" title=\"class or interface in javax.swing\">setAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAutoscrolls-boolean-\" title=\"class or interface in javax.swing\">setAutoscrolls</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setBackground-java.awt.Color-\" title=\"class or interface in javax.swing\">setBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setBorder-javax.swing.border.Border-\" title=\"class or interface in javax.swing\">setBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setComponentPopupMenu-javax.swing.JPopupMenu-\" title=\"class or interface in javax.swing\">setComponentPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDebugGraphicsOptions-int-\" title=\"class or interface in javax.swing\">setDebugGraphicsOptions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDefaultLocale-java.util.Locale-\" title=\"class or interface in javax.swing\">setDefaultLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDoubleBuffered-boolean-\" title=\"class or interface in javax.swing\">setDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setEnabled-boolean-\" title=\"class or interface in javax.swing\">setEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setFocusTraversalKeys-int-java.util.Set-\" title=\"class or interface in javax.swing\">setFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setFont-java.awt.Font-\" title=\"class or interface in javax.swing\">setFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setForeground-java.awt.Color-\" title=\"class or interface in javax.swing\">setForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInheritsPopupMenu-boolean-\" title=\"class or interface in javax.swing\">setInheritsPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInputMap-int-javax.swing.InputMap-\" title=\"class or interface in javax.swing\">setInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInputVerifier-javax.swing.InputVerifier-\" title=\"class or interface in javax.swing\">setInputVerifier</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setMaximumSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setMinimumSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setNextFocusableComponent-java.awt.Component-\" title=\"class or interface in javax.swing\">setNextFocusableComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setOpaque-boolean-\" title=\"class or interface in javax.swing\">setOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setPreferredSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setRequestFocusEnabled-boolean-\" title=\"class or interface in javax.swing\">setRequestFocusEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setToolTipText-java.lang.String-\" title=\"class or interface in javax.swing\">setToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setTransferHandler-javax.swing.TransferHandler-\" title=\"class or interface in javax.swing\">setTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setUI-javax.swing.plaf.ComponentUI-\" title=\"class or interface in javax.swing\">setUI</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setVerifyInputWhenFocusTarget-boolean-\" title=\"class or interface in javax.swing\">setVerifyInputWhenFocusTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setVisible-boolean-\" title=\"class or interface in javax.swing\">setVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#unregisterKeyboardAction-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">unregisterKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#update-java.awt.Graphics-\" title=\"class or interface in javax.swing\">update</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.lang.String-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">addContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addImpl-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">addImpl</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#applyComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">applyComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#areFocusTraversalKeysSet-int-\" title=\"class or interface in java.awt\">areFocusTraversalKeysSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#countComponents--\" title=\"class or interface in java.awt\">countComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#deliverEvent-java.awt.Event-\" title=\"class or interface in java.awt\">deliverEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#doLayout--\" title=\"class or interface in java.awt\">doLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-int-int-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponent-int-\" title=\"class or interface in java.awt\">getComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-int-int-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentCount--\" title=\"class or interface in java.awt\">getComponentCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponents--\" title=\"class or interface in java.awt\">getComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentZOrder-java.awt.Component-\" title=\"class or interface in java.awt\">getComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getContainerListeners--\" title=\"class or interface in java.awt\">getContainerListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalKeys-int-\" title=\"class or interface in java.awt\">getFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalPolicy--\" title=\"class or interface in java.awt\">getFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getLayout--\" title=\"class or interface in java.awt\">getLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMousePosition-boolean-\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#insets--\" title=\"class or interface in java.awt\">insets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#invalidate--\" title=\"class or interface in java.awt\">invalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isAncestorOf-java.awt.Component-\" title=\"class or interface in java.awt\">isAncestorOf</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot--\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot-java.awt.Container-\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicyProvider--\" title=\"class or interface in java.awt\">isFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicySet--\" title=\"class or interface in java.awt\">isFocusTraversalPolicySet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#layout--\" title=\"class or interface in java.awt\">layout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintStream-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintWriter-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#locate-int-int-\" title=\"class or interface in java.awt\">locate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#minimumSize--\" title=\"class or interface in java.awt\">minimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paintComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#preferredSize--\" title=\"class or interface in java.awt\">preferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#printComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">printComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processContainerEvent-java.awt.event.ContainerEvent-\" title=\"class or interface in java.awt\">processContainerEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">processEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#remove-java.awt.Component-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#remove-int-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeAll--\" title=\"class or interface in java.awt\">removeAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">removeContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setComponentZOrder-java.awt.Component-int-\" title=\"class or interface in java.awt\">setComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusCycleRoot-boolean-\" title=\"class or interface in java.awt\">setFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicy-java.awt.FocusTraversalPolicy-\" title=\"class or interface in java.awt\">setFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicyProvider-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setLayout-java.awt.LayoutManager-\" title=\"class or interface in java.awt\">setLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#transferFocusDownCycle--\" title=\"class or interface in java.awt\">transferFocusDownCycle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validate--\" title=\"class or interface in java.awt\">validate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validateTree--\" title=\"class or interface in java.awt\">validateTree</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#action-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">action</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#add-java.awt.PopupMenu-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">addComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">addFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">addHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">addHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">addInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">addKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">addMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">addMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">addMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#bounds--\" title=\"class or interface in java.awt\">bounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#coalesceEvents-java.awt.AWTEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">coalesceEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-java.awt.Point-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-java.awt.image.ImageProducer-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-int-int-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-java.awt.ImageCapabilities-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disableEvents-long-\" title=\"class or interface in java.awt\">disableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#dispatchEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">dispatchEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable-boolean-\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableEvents-long-\" title=\"class or interface in java.awt\">enableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableInputMethods-boolean-\" title=\"class or interface in java.awt\">enableInputMethods</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-byte-byte-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-double-double-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-float-float-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-long-long-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-short-short-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBackground--\" title=\"class or interface in java.awt\">getBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds--\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getColorModel--\" title=\"class or interface in java.awt\">getColorModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentListeners--\" title=\"class or interface in java.awt\">getComponentListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentOrientation--\" title=\"class or interface in java.awt\">getComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getCursor--\" title=\"class or interface in java.awt\">getCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getDropTarget--\" title=\"class or interface in java.awt\">getDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusCycleRootAncestor--\" title=\"class or interface in java.awt\">getFocusCycleRootAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusListeners--\" title=\"class or interface in java.awt\">getFocusListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusTraversalKeysEnabled--\" title=\"class or interface in java.awt\">getFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFont--\" title=\"class or interface in java.awt\">getFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getForeground--\" title=\"class or interface in java.awt\">getForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getGraphicsConfiguration--\" title=\"class or interface in java.awt\">getGraphicsConfiguration</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyBoundsListeners--\" title=\"class or interface in java.awt\">getHierarchyBoundsListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyListeners--\" title=\"class or interface in java.awt\">getHierarchyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getIgnoreRepaint--\" title=\"class or interface in java.awt\">getIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputContext--\" title=\"class or interface in java.awt\">getInputContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodListeners--\" title=\"class or interface in java.awt\">getInputMethodListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodRequests--\" title=\"class or interface in java.awt\">getInputMethodRequests</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getKeyListeners--\" title=\"class or interface in java.awt\">getKeyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocale--\" title=\"class or interface in java.awt\">getLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation--\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocationOnScreen--\" title=\"class or interface in java.awt\">getLocationOnScreen</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseListeners--\" title=\"class or interface in java.awt\">getMouseListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseMotionListeners--\" title=\"class or interface in java.awt\">getMouseMotionListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMousePosition--\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseWheelListeners--\" title=\"class or interface in java.awt\">getMouseWheelListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getName--\" title=\"class or interface in java.awt\">getName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getParent--\" title=\"class or interface in java.awt\">getParent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPeer--\" title=\"class or interface in java.awt\">getPeer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners--\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners-java.lang.String-\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize--\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getToolkit--\" title=\"class or interface in java.awt\">getToolkit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getTreeLock--\" title=\"class or interface in java.awt\">getTreeLock</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#gotFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">gotFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#handleEvent-java.awt.Event-\" title=\"class or interface in java.awt\">handleEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hasFocus--\" title=\"class or interface in java.awt\">hasFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#imageUpdate-java.awt.Image-int-int-int-int-int-\" title=\"class or interface in java.awt\">imageUpdate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#inside-int-int-\" title=\"class or interface in java.awt\">inside</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isBackgroundSet--\" title=\"class or interface in java.awt\">isBackgroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isCursorSet--\" title=\"class or interface in java.awt\">isCursorSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDisplayable--\" title=\"class or interface in java.awt\">isDisplayable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isEnabled--\" title=\"class or interface in java.awt\">isEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusable--\" title=\"class or interface in java.awt\">isFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusOwner--\" title=\"class or interface in java.awt\">isFocusOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusTraversable--\" title=\"class or interface in java.awt\">isFocusTraversable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFontSet--\" title=\"class or interface in java.awt\">isFontSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isForegroundSet--\" title=\"class or interface in java.awt\">isForegroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isLightweight--\" title=\"class or interface in java.awt\">isLightweight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMaximumSizeSet--\" title=\"class or interface in java.awt\">isMaximumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMinimumSizeSet--\" title=\"class or interface in java.awt\">isMinimumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isPreferredSizeSet--\" title=\"class or interface in java.awt\">isPreferredSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isShowing--\" title=\"class or interface in java.awt\">isShowing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isValid--\" title=\"class or interface in java.awt\">isValid</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isVisible--\" title=\"class or interface in java.awt\">isVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyDown-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyUp-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list--\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintStream-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintWriter-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#location--\" title=\"class or interface in java.awt\">location</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#lostFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">lostFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDown-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDrag-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDrag</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseEnter-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseEnter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseExit-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseExit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseMove-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseMove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseUp-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#move-int-int-\" title=\"class or interface in java.awt\">move</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#nextFocus--\" title=\"class or interface in java.awt\">nextFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#paintAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#postEvent-java.awt.Event-\" title=\"class or interface in java.awt\">postEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processComponentEvent-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt\">processComponentEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processFocusEvent-java.awt.event.FocusEvent-\" title=\"class or interface in java.awt\">processFocusEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyBoundsEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyBoundsEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processInputMethodEvent-java.awt.event.InputMethodEvent-\" title=\"class or interface in java.awt\">processInputMethodEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseWheelEvent-java.awt.event.MouseWheelEvent-\" title=\"class or interface in java.awt\">processMouseWheelEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#remove-java.awt.MenuComponent-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">removeComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">removeFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">removeHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">removeHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">removeInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">removeKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">removeMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">removeMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">removeMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint--\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-int-int-int-int-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-long-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#resize-java.awt.Dimension-\" title=\"class or interface in java.awt\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#resize-int-int-\" title=\"class or interface in java.awt\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-int-int-int-int-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">setComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setCursor-java.awt.Cursor-\" title=\"class or interface in java.awt\">setCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setDropTarget-java.awt.dnd.DropTarget-\" title=\"class or interface in java.awt\">setDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusable-boolean-\" title=\"class or interface in java.awt\">setFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusTraversalKeysEnabled-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setIgnoreRepaint-boolean-\" title=\"class or interface in java.awt\">setIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocale-java.util.Locale-\" title=\"class or interface in java.awt\">setLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-int-int-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-java.awt.Point-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setName-java.lang.String-\" title=\"class or interface in java.awt\">setName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-int-int-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show--\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show-boolean-\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#size--\" title=\"class or interface in java.awt\">size</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#toString--\" title=\"class or interface in java.awt\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocus--\" title=\"class or interface in java.awt\">transferFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusBackward--\" title=\"class or interface in java.awt\">transferFocusBackward</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusUpCycle--\" title=\"class or interface in java.awt\">transferFocusUpCycle</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"KarelControlPanel-stanford.karel.KarelProgram-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>KarelControlPanel</h4>\n<pre>public&nbsp;KarelControlPanel(<a href=\"../../stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a>&nbsp;program)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"getWorld--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getWorld</h4>\n<pre>public&nbsp;<a href=\"../../stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a>&nbsp;getWorld()</pre>\n</li>\n</ul>\n<a name=\"getProgram--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getProgram</h4>\n<pre>public&nbsp;<a href=\"../../stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a>&nbsp;getProgram()</pre>\n</li>\n</ul>\n<a name=\"getEditor--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getEditor</h4>\n<pre>public&nbsp;stanford.karel.KarelWorldEditor&nbsp;getEditor()</pre>\n</li>\n</ul>\n<a name=\"getResizer--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getResizer</h4>\n<pre>public&nbsp;stanford.karel.KarelResizer&nbsp;getResizer()</pre>\n</li>\n</ul>\n<a name=\"getPreferredSize--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getPreferredSize</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a>&nbsp;getPreferredSize()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getPreferredSize--\" title=\"class or interface in javax.swing\">getPreferredSize</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"startWorldEdit--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>startWorldEdit</h4>\n<pre>public&nbsp;void&nbsp;startWorldEdit()</pre>\n<div class=\"block\">This action is invoked at the beginning of an editing session.</div>\n</li>\n</ul>\n<a name=\"endWorldEdit--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>endWorldEdit</h4>\n<pre>public&nbsp;void&nbsp;endWorldEdit()</pre>\n<div class=\"block\">This action is invoked at the end of an editing session.</div>\n</li>\n</ul>\n<a name=\"wallAction-java.awt.Point-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>wallAction</h4>\n<pre>public&nbsp;void&nbsp;wallAction(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt,\n                       int&nbsp;dir)</pre>\n<div class=\"block\">This action is invoked when the mouse is clicked on a wall, which is the\n wall in the indicated direction from the Karel coordinates given by pt.</div>\n</li>\n</ul>\n<a name=\"cornerAction-java.awt.Point-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>cornerAction</h4>\n<pre>public&nbsp;void&nbsp;cornerAction(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt)</pre>\n<div class=\"block\">This action is invoked when the mouse is clicked on a corner, which is\n the wall in the indicated direction from the given point.</div>\n</li>\n</ul>\n<a name=\"trace--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>trace</h4>\n<pre>public&nbsp;void&nbsp;trace()</pre>\n<div class=\"block\">This action is invoked when karel executes an instruction</div>\n</li>\n</ul>\n<a name=\"setSpeed-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setSpeed</h4>\n<pre>public&nbsp;void&nbsp;setSpeed(double&nbsp;speed)</pre>\n<div class=\"block\">This method is invoked when a world map file needs to set the simulation\n speed (between 0 and 100).</div>\n</li>\n</ul>\n<a name=\"getSpeed--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSpeed</h4>\n<pre>public&nbsp;double&nbsp;getSpeed()</pre>\n<div class=\"block\">This method is invoked when the KarelWorld class needs to get the\n simulation speed.</div>\n</li>\n</ul>\n<a name=\"createEditor--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createEditor</h4>\n<pre>protected&nbsp;stanford.karel.KarelWorldEditor&nbsp;createEditor()</pre>\n</li>\n</ul>\n<a name=\"createEditorPanel--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createEditorPanel</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&nbsp;createEditorPanel()</pre>\n</li>\n</ul>\n<a name=\"createButtonPanel--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createButtonPanel</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&nbsp;createButtonPanel()</pre>\n</li>\n</ul>\n<a name=\"createResizePanel--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createResizePanel</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&nbsp;createResizePanel()</pre>\n</li>\n</ul>\n<a name=\"createResizer--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createResizer</h4>\n<pre>protected&nbsp;stanford.karel.KarelResizer&nbsp;createResizer()</pre>\n</li>\n</ul>\n<a name=\"actionPerformed-java.awt.event.ActionEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>actionPerformed</h4>\n<pre>public&nbsp;void&nbsp;actionPerformed(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;e)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true#actionPerformed-java.awt.event.ActionEvent-\" title=\"class or interface in java.awt.event\">actionPerformed</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"adjustmentValueChanged-java.awt.event.AdjustmentEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>adjustmentValueChanged</h4>\n<pre>public&nbsp;void&nbsp;adjustmentValueChanged(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/AdjustmentEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">AdjustmentEvent</a>&nbsp;e)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/AdjustmentListener.html?is-external=true#adjustmentValueChanged-java.awt.event.AdjustmentEvent-\" title=\"class or interface in java.awt.event\">adjustmentValueChanged</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/AdjustmentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">AdjustmentListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"stateChanged-javax.swing.event.ChangeEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>stateChanged</h4>\n<pre>public&nbsp;void&nbsp;stateChanged(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeEvent</a>&nbsp;e)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true#stateChanged-javax.swing.event.ChangeEvent-\" title=\"class or interface in javax.swing.event\">stateChanged</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"update-java.util.Observable-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>update</h4>\n<pre>public&nbsp;void&nbsp;update(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true\" title=\"class or interface in java.util\">Observable</a>&nbsp;obs,\n                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;arg)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observer.html?is-external=true#update-java.util.Observable-java.lang.Object-\" title=\"class or interface in java.util\">update</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observer.html?is-external=true\" title=\"class or interface in java.util\">Observer</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setView-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setView</h4>\n<pre>public&nbsp;void&nbsp;setView(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n</li>\n</ul>\n<a name=\"getView--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>getView</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getView()</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/karel/Karel.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/karel/KarelDirection.html\" title=\"enum in stanford.karel\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/karel/KarelControlPanel.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"KarelControlPanel.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JPanel\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.javax.swing.JComponent\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/karel/KarelDirection.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:09 PDT 2017 -->\n<title>KarelDirection</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"KarelDirection\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9,\"i2\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/karel/KarelControlPanel.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/karel/KarelDirection.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"KarelDirection.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#enum.constant.summary\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#enum.constant.detail\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.karel</div>\n<h2 title=\"Enum KarelDirection\" class=\"title\">Enum KarelDirection</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Enum</a>&lt;<a href=\"../../stanford/karel/KarelDirection.html\" title=\"enum in stanford.karel\">KarelDirection</a>&gt;</li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.karel.KarelDirection</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;<a href=\"../../stanford/karel/KarelDirection.html\" title=\"enum in stanford.karel\">KarelDirection</a>&gt;</dd>\n</dl>\n<hr>\n<br>\n<pre>public enum <span class=\"typeNameLabel\">KarelDirection</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true\" title=\"class or interface in java.lang\">Enum</a>&lt;<a href=\"../../stanford/karel/KarelDirection.html\" title=\"enum in stanford.karel\">KarelDirection</a>&gt;</pre>\n<div class=\"block\">An enum internally used to keep track of Karel directions.</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== ENUM CONSTANT SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"enum.constant.summary\">\n<!--   -->\n</a>\n<h3>Enum Constant Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Enum Constant Summary table, listing enum constants, and an explanation\">\n<caption><span>Enum Constants</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Enum Constant and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelDirection.html#EAST\">EAST</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelDirection.html#NORTH\">NORTH</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelDirection.html#SOUTH\">SOUTH</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelDirection.html#WEST\">WEST</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../stanford/karel/KarelDirection.html\" title=\"enum in stanford.karel\">KarelDirection</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelDirection.html#valueOf-int-\">valueOf</a></span>(int&nbsp;dir)</code>\n<div class=\"block\">Converts an int like KarelWorld.NORTH into a KarelDirection.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../stanford/karel/KarelDirection.html\" title=\"enum in stanford.karel\">KarelDirection</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelDirection.html#valueOf-java.lang.String-\">valueOf</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>\n<div class=\"block\">Returns the enum constant of this type with the specified name.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../stanford/karel/KarelDirection.html\" title=\"enum in stanford.karel\">KarelDirection</a>[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelDirection.html#values--\">values</a></span>()</code>\n<div class=\"block\">Returns an array containing the constants of this enum type, in\nthe order they are declared.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Enum\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true\" title=\"class or interface in java.lang\">Enum</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#compareTo-E-\" title=\"class or interface in java.lang\">compareTo</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#getDeclaringClass--\" title=\"class or interface in java.lang\">getDeclaringClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#name--\" title=\"class or interface in java.lang\">name</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#ordinal--\" title=\"class or interface in java.lang\">ordinal</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#valueOf-java.lang.Class-java.lang.String-\" title=\"class or interface in java.lang\">valueOf</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ ENUM CONSTANT DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"enum.constant.detail\">\n<!--   -->\n</a>\n<h3>Enum Constant Detail</h3>\n<a name=\"NORTH\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>NORTH</h4>\n<pre>public static final&nbsp;<a href=\"../../stanford/karel/KarelDirection.html\" title=\"enum in stanford.karel\">KarelDirection</a> NORTH</pre>\n</li>\n</ul>\n<a name=\"EAST\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>EAST</h4>\n<pre>public static final&nbsp;<a href=\"../../stanford/karel/KarelDirection.html\" title=\"enum in stanford.karel\">KarelDirection</a> EAST</pre>\n</li>\n</ul>\n<a name=\"SOUTH\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SOUTH</h4>\n<pre>public static final&nbsp;<a href=\"../../stanford/karel/KarelDirection.html\" title=\"enum in stanford.karel\">KarelDirection</a> SOUTH</pre>\n</li>\n</ul>\n<a name=\"WEST\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>WEST</h4>\n<pre>public static final&nbsp;<a href=\"../../stanford/karel/KarelDirection.html\" title=\"enum in stanford.karel\">KarelDirection</a> WEST</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"values--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>values</h4>\n<pre>public static&nbsp;<a href=\"../../stanford/karel/KarelDirection.html\" title=\"enum in stanford.karel\">KarelDirection</a>[]&nbsp;values()</pre>\n<div class=\"block\">Returns an array containing the constants of this enum type, in\nthe order they are declared.  This method may be used to iterate\nover the constants as follows:\n<pre>\nfor (KarelDirection c : KarelDirection.values())\n&nbsp;   System.out.println(c);\n</pre></div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>an array containing the constants of this enum type, in the order they are declared</dd>\n</dl>\n</li>\n</ul>\n<a name=\"valueOf-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>valueOf</h4>\n<pre>public static&nbsp;<a href=\"../../stanford/karel/KarelDirection.html\" title=\"enum in stanford.karel\">KarelDirection</a>&nbsp;valueOf(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n<div class=\"block\">Returns the enum constant of this type with the specified name.\nThe string must match <i>exactly</i> an identifier used to declare an\nenum constant in this type.  (Extraneous whitespace characters are \nnot permitted.)</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>name</code> - the name of the enum constant to be returned.</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the enum constant with the specified name</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - if this enum type has no constant with the specified name</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if the argument is null</dd>\n</dl>\n</li>\n</ul>\n<a name=\"valueOf-int-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>valueOf</h4>\n<pre>public static&nbsp;<a href=\"../../stanford/karel/KarelDirection.html\" title=\"enum in stanford.karel\">KarelDirection</a>&nbsp;valueOf(int&nbsp;dir)</pre>\n<div class=\"block\">Converts an int like KarelWorld.NORTH into a KarelDirection.</div>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/karel/KarelControlPanel.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/karel/KarelDirection.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"KarelDirection.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#enum.constant.summary\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#enum.constant.detail\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/karel/KarelInterface.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:09 PDT 2017 -->\n<title>KarelInterface</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"KarelInterface\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":6,\"i1\":6,\"i2\":6,\"i3\":6,\"i4\":6,\"i5\":6,\"i6\":6,\"i7\":6,\"i8\":6,\"i9\":6,\"i10\":6,\"i11\":6,\"i12\":6,\"i13\":6,\"i14\":6,\"i15\":6,\"i16\":6,\"i17\":6,\"i18\":6,\"i19\":6,\"i20\":6,\"i21\":6,\"i22\":6,\"i23\":6,\"i24\":6,\"i25\":6,\"i26\":6,\"i27\":6,\"i28\":6,\"i29\":6,\"i30\":6,\"i31\":6,\"i32\":6};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],4:[\"t3\",\"Abstract Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/karel/KarelDirection.html\" title=\"enum in stanford.karel\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/karel/KarelInterface.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"KarelInterface.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.karel</div>\n<h2 title=\"Interface KarelInterface\" class=\"title\">Interface KarelInterface</h2>\n</div>\n<div class=\"contentContainer\">\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Known Implementing Classes:</dt>\n<dd><a href=\"../../stanford/karel/HeadlessKarel.html\" title=\"class in stanford.karel\">HeadlessKarel</a>, <a href=\"../../stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\">HeadlessSuperKarel</a>, <a href=\"../../stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a>, <a href=\"../../stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\">SuperKarel</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public interface <span class=\"typeNameLabel\">KarelInterface</span></pre>\n<div class=\"block\">An interface to represent Karel objects.\n Used to present a common supertype between Karel and HeadlessKarel.</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t3\" class=\"tableTab\"><span><a href=\"javascript:show(4);\">Abstract Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelInterface.html#beepersInBag--\">beepersInBag</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelInterface.html#beepersPresent--\">beepersPresent</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelInterface.html#facingEast--\">facingEast</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelInterface.html#facingNorth--\">facingNorth</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelInterface.html#facingSouth--\">facingSouth</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelInterface.html#facingWest--\">facingWest</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelInterface.html#frontIsBlocked--\">frontIsBlocked</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelInterface.html#frontIsClear--\">frontIsClear</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelInterface.html#getBeepersInBag--\">getBeepersInBag</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelInterface.html#getDirection--\">getDirection</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelInterface.html#getLocation--\">getLocation</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelInterface.html#getWorld--\">getWorld</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelInterface.html#leftIsBlocked--\">leftIsBlocked</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelInterface.html#leftIsClear--\">leftIsClear</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelInterface.html#move--\">move</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelInterface.html#noBeepersInBag--\">noBeepersInBag</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelInterface.html#noBeepersPresent--\">noBeepersPresent</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelInterface.html#notFacingEast--\">notFacingEast</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelInterface.html#notFacingNorth--\">notFacingNorth</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelInterface.html#notFacingSouth--\">notFacingSouth</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelInterface.html#notFacingWest--\">notFacingWest</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelInterface.html#pause-double-\">pause</a></span>(double&nbsp;ms)</code>&nbsp;</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelInterface.html#pickBeeper--\">pickBeeper</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelInterface.html#putBeeper--\">putBeeper</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i24\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelInterface.html#rightIsBlocked--\">rightIsBlocked</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i25\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelInterface.html#rightIsClear--\">rightIsClear</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i26\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelInterface.html#run--\">run</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i27\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelInterface.html#setBeepersInBag-int-\">setBeepersInBag</a></span>(int&nbsp;beepers)</code>&nbsp;</td>\n</tr>\n<tr id=\"i28\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelInterface.html#setDirection-int-\">setDirection</a></span>(int&nbsp;dir)</code>&nbsp;</td>\n</tr>\n<tr id=\"i29\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelInterface.html#setLocation-int-int-\">setLocation</a></span>(int&nbsp;x,\n           int&nbsp;y)</code>&nbsp;</td>\n</tr>\n<tr id=\"i30\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelInterface.html#setLocation-java.awt.Point-\">setLocation</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt)</code>&nbsp;</td>\n</tr>\n<tr id=\"i31\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelInterface.html#setWorld-stanford.karel.KarelWorld-\">setWorld</a></span>(<a href=\"../../stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a>&nbsp;world)</code>&nbsp;</td>\n</tr>\n<tr id=\"i32\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelInterface.html#turnLeft--\">turnLeft</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"getDirection--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getDirection</h4>\n<pre>int&nbsp;getDirection()</pre>\n</li>\n</ul>\n<a name=\"getBeepersInBag--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getBeepersInBag</h4>\n<pre>int&nbsp;getBeepersInBag()</pre>\n</li>\n</ul>\n<a name=\"getWorld--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getWorld</h4>\n<pre><a href=\"../../stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a>&nbsp;getWorld()</pre>\n</li>\n</ul>\n<a name=\"getLocation--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getLocation</h4>\n<pre><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;getLocation()</pre>\n</li>\n</ul>\n<a name=\"pause-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>pause</h4>\n<pre>void&nbsp;pause(double&nbsp;ms)</pre>\n</li>\n</ul>\n<a name=\"setBeepersInBag-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setBeepersInBag</h4>\n<pre>void&nbsp;setBeepersInBag(int&nbsp;beepers)</pre>\n</li>\n</ul>\n<a name=\"setDirection-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setDirection</h4>\n<pre>void&nbsp;setDirection(int&nbsp;dir)</pre>\n</li>\n</ul>\n<a name=\"setLocation-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setLocation</h4>\n<pre>void&nbsp;setLocation(int&nbsp;x,\n                 int&nbsp;y)</pre>\n</li>\n</ul>\n<a name=\"setLocation-java.awt.Point-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setLocation</h4>\n<pre>void&nbsp;setLocation(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt)</pre>\n</li>\n</ul>\n<a name=\"setWorld-stanford.karel.KarelWorld-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setWorld</h4>\n<pre>void&nbsp;setWorld(<a href=\"../../stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a>&nbsp;world)</pre>\n</li>\n</ul>\n<a name=\"run--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>run</h4>\n<pre>void&nbsp;run()</pre>\n</li>\n</ul>\n<a name=\"move--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>move</h4>\n<pre>void&nbsp;move()</pre>\n</li>\n</ul>\n<a name=\"turnLeft--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>turnLeft</h4>\n<pre>void&nbsp;turnLeft()</pre>\n</li>\n</ul>\n<a name=\"pickBeeper--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>pickBeeper</h4>\n<pre>void&nbsp;pickBeeper()</pre>\n</li>\n</ul>\n<a name=\"putBeeper--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>putBeeper</h4>\n<pre>void&nbsp;putBeeper()</pre>\n</li>\n</ul>\n<a name=\"frontIsClear--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>frontIsClear</h4>\n<pre>boolean&nbsp;frontIsClear()</pre>\n</li>\n</ul>\n<a name=\"frontIsBlocked--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>frontIsBlocked</h4>\n<pre>boolean&nbsp;frontIsBlocked()</pre>\n</li>\n</ul>\n<a name=\"leftIsClear--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>leftIsClear</h4>\n<pre>boolean&nbsp;leftIsClear()</pre>\n</li>\n</ul>\n<a name=\"leftIsBlocked--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>leftIsBlocked</h4>\n<pre>boolean&nbsp;leftIsBlocked()</pre>\n</li>\n</ul>\n<a name=\"rightIsClear--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>rightIsClear</h4>\n<pre>boolean&nbsp;rightIsClear()</pre>\n</li>\n</ul>\n<a name=\"rightIsBlocked--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>rightIsBlocked</h4>\n<pre>boolean&nbsp;rightIsBlocked()</pre>\n</li>\n</ul>\n<a name=\"beepersPresent--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>beepersPresent</h4>\n<pre>boolean&nbsp;beepersPresent()</pre>\n</li>\n</ul>\n<a name=\"noBeepersPresent--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>noBeepersPresent</h4>\n<pre>boolean&nbsp;noBeepersPresent()</pre>\n</li>\n</ul>\n<a name=\"beepersInBag--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>beepersInBag</h4>\n<pre>boolean&nbsp;beepersInBag()</pre>\n</li>\n</ul>\n<a name=\"noBeepersInBag--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>noBeepersInBag</h4>\n<pre>boolean&nbsp;noBeepersInBag()</pre>\n</li>\n</ul>\n<a name=\"facingNorth--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>facingNorth</h4>\n<pre>boolean&nbsp;facingNorth()</pre>\n</li>\n</ul>\n<a name=\"facingEast--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>facingEast</h4>\n<pre>boolean&nbsp;facingEast()</pre>\n</li>\n</ul>\n<a name=\"facingSouth--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>facingSouth</h4>\n<pre>boolean&nbsp;facingSouth()</pre>\n</li>\n</ul>\n<a name=\"facingWest--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>facingWest</h4>\n<pre>boolean&nbsp;facingWest()</pre>\n</li>\n</ul>\n<a name=\"notFacingNorth--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>notFacingNorth</h4>\n<pre>boolean&nbsp;notFacingNorth()</pre>\n</li>\n</ul>\n<a name=\"notFacingEast--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>notFacingEast</h4>\n<pre>boolean&nbsp;notFacingEast()</pre>\n</li>\n</ul>\n<a name=\"notFacingSouth--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>notFacingSouth</h4>\n<pre>boolean&nbsp;notFacingSouth()</pre>\n</li>\n</ul>\n<a name=\"notFacingWest--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>notFacingWest</h4>\n<pre>boolean&nbsp;notFacingWest()</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/karel/KarelDirection.html\" title=\"enum in stanford.karel\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/karel/KarelInterface.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"KarelInterface.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/karel/KarelProgram.State.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:10 PDT 2017 -->\n<title>KarelProgram.State</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"KarelProgram.State\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/karel/KarelProgram.State.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"KarelProgram.State.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#enum.constant.summary\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#enum.constant.detail\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.karel</div>\n<h2 title=\"Enum KarelProgram.State\" class=\"title\">Enum KarelProgram.State</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Enum</a>&lt;<a href=\"../../stanford/karel/KarelProgram.State.html\" title=\"enum in stanford.karel\">KarelProgram.State</a>&gt;</li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.karel.KarelProgram.State</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;<a href=\"../../stanford/karel/KarelProgram.State.html\" title=\"enum in stanford.karel\">KarelProgram.State</a>&gt;</dd>\n</dl>\n<dl>\n<dt>Enclosing class:</dt>\n<dd><a href=\"../../stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public static enum <span class=\"typeNameLabel\">KarelProgram.State</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true\" title=\"class or interface in java.lang\">Enum</a>&lt;<a href=\"../../stanford/karel/KarelProgram.State.html\" title=\"enum in stanford.karel\">KarelProgram.State</a>&gt;</pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== ENUM CONSTANT SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"enum.constant.summary\">\n<!--   -->\n</a>\n<h3>Enum Constant Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Enum Constant Summary table, listing enum constants, and an explanation\">\n<caption><span>Enum Constants</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Enum Constant and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.State.html#ERROR\">ERROR</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.State.html#RUNNING\">RUNNING</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.State.html#STOPPED\">STOPPED</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../stanford/karel/KarelProgram.State.html\" title=\"enum in stanford.karel\">KarelProgram.State</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.State.html#valueOf-java.lang.String-\">valueOf</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>\n<div class=\"block\">Returns the enum constant of this type with the specified name.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../stanford/karel/KarelProgram.State.html\" title=\"enum in stanford.karel\">KarelProgram.State</a>[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.State.html#values--\">values</a></span>()</code>\n<div class=\"block\">Returns an array containing the constants of this enum type, in\nthe order they are declared.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Enum\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true\" title=\"class or interface in java.lang\">Enum</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#compareTo-E-\" title=\"class or interface in java.lang\">compareTo</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#getDeclaringClass--\" title=\"class or interface in java.lang\">getDeclaringClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#name--\" title=\"class or interface in java.lang\">name</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#ordinal--\" title=\"class or interface in java.lang\">ordinal</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#valueOf-java.lang.Class-java.lang.String-\" title=\"class or interface in java.lang\">valueOf</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ ENUM CONSTANT DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"enum.constant.detail\">\n<!--   -->\n</a>\n<h3>Enum Constant Detail</h3>\n<a name=\"RUNNING\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>RUNNING</h4>\n<pre>public static final&nbsp;<a href=\"../../stanford/karel/KarelProgram.State.html\" title=\"enum in stanford.karel\">KarelProgram.State</a> RUNNING</pre>\n</li>\n</ul>\n<a name=\"STOPPED\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>STOPPED</h4>\n<pre>public static final&nbsp;<a href=\"../../stanford/karel/KarelProgram.State.html\" title=\"enum in stanford.karel\">KarelProgram.State</a> STOPPED</pre>\n</li>\n</ul>\n<a name=\"ERROR\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>ERROR</h4>\n<pre>public static final&nbsp;<a href=\"../../stanford/karel/KarelProgram.State.html\" title=\"enum in stanford.karel\">KarelProgram.State</a> ERROR</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"values--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>values</h4>\n<pre>public static&nbsp;<a href=\"../../stanford/karel/KarelProgram.State.html\" title=\"enum in stanford.karel\">KarelProgram.State</a>[]&nbsp;values()</pre>\n<div class=\"block\">Returns an array containing the constants of this enum type, in\nthe order they are declared.  This method may be used to iterate\nover the constants as follows:\n<pre>\nfor (KarelProgram.State c : KarelProgram.State.values())\n&nbsp;   System.out.println(c);\n</pre></div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>an array containing the constants of this enum type, in the order they are declared</dd>\n</dl>\n</li>\n</ul>\n<a name=\"valueOf-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>valueOf</h4>\n<pre>public static&nbsp;<a href=\"../../stanford/karel/KarelProgram.State.html\" title=\"enum in stanford.karel\">KarelProgram.State</a>&nbsp;valueOf(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n<div class=\"block\">Returns the enum constant of this type with the specified name.\nThe string must match <i>exactly</i> an identifier used to declare an\nenum constant in this type.  (Extraneous whitespace characters are \nnot permitted.)</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>name</code> - the name of the enum constant to be returned.</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the enum constant with the specified name</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - if this enum type has no constant with the specified name</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if the argument is null</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/karel/KarelProgram.State.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"KarelProgram.State.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#enum.constant.summary\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#enum.constant.detail\">Enum Constants</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/karel/KarelProgram.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:10 PDT 2017 -->\n<title>KarelProgram</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"KarelProgram\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":9,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/karel/KarelProgram.State.html\" title=\"enum in stanford.karel\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/karel/KarelProgram.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"KarelProgram.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.class.summary\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.karel</div>\n<h2 title=\"Class KarelProgram\" class=\"title\">Class KarelProgram</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Component</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Container</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Panel</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">java.applet.Applet</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JApplet</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">acm.program.Program</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.karel.KarelProgram</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd>acm.io.IOModel, <a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/AdjustmentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">AdjustmentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ContainerListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ItemListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ItemListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseWheelListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/TextListener.html?is-external=true\" title=\"class or interface in java.awt.event\">TextListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowFocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowStateListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowStateListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListDataListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListDataListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListSelectionListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListSelectionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/MouseInputListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">MouseInputListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/PopupMenuListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">PopupMenuListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/RootPaneContainer.html?is-external=true\" title=\"class or interface in javax.swing\">RootPaneContainer</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">KarelProgram</span>\nextends <a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></pre>\n<div class=\"block\">This class is a subclass of <code><a href=\"Program.html\">Program</a></code>\n that runs a Karel program.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#stanford.karel.KarelProgram\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Nested Class Summary table, listing nested classes, and an explanation\">\n<caption><span>Nested Classes</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Class and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static class&nbsp;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.State.html\" title=\"enum in stanford.karel\">KarelProgram.State</a></span></code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JApplet\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.AccessibleJApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet.AccessibleJApplet</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.applet.Applet\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.applet.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">Applet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.AccessibleApplet.html?is-external=true\" title=\"class or interface in java.applet\">Applet.AccessibleApplet</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Panel\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\">Panel</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.AccessibleAWTPanel.html?is-external=true\" title=\"class or interface in java.awt\">Panel.AccessibleAWTPanel</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.AccessibleAWTContainer.html?is-external=true\" title=\"class or interface in java.awt\">Container.AccessibleAWTContainer</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.AccessibleAWTComponent.html?is-external=true\" title=\"class or interface in java.awt\">Component.AccessibleAWTComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BaselineResizeBehavior.html?is-external=true\" title=\"class or interface in java.awt\">Component.BaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BltBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.BltBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.FlipBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.FlipBufferStrategy</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.html#BLACK\">BLACK</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.html#BLUE\">BLUE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.html#CYAN\">CYAN</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.html#DARK_GRAY\">DARK_GRAY</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.html#EAST\">EAST</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.html#FANCY\">FANCY</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.html#GRAY\">GRAY</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.html#GREEN\">GREEN</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.html#INFINITE\">INFINITE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.html#LIGHT_GRAY\">LIGHT_GRAY</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.html#MAGENTA\">MAGENTA</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.html#NORTH\">NORTH</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.html#ORANGE\">ORANGE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.html#PINK\">PINK</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.html#RED\">RED</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.html#SIMPLE\">SIMPLE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.html#SOUTH\">SOUTH</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../stanford/karel/Event.html\" title=\"class in stanford.karel\">Event</a>&lt;<a href=\"../../stanford/karel/KarelProgram.State.html\" title=\"enum in stanford.karel\">KarelProgram.State</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.html#StateEvent\">StateEvent</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.html#WEST\">WEST</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.html#WHITE\">WHITE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.html#WORLD_EXTENSION\">WORLD_EXTENSION</a></span></code>\n<div class=\"block\">File extension for Karel worlds.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.html#WORLDS_DIRECTORY\">WORLDS_DIRECTORY</a></span></code>\n<div class=\"block\">Directory where *.w Karel world files are found.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.html#YELLOW\">YELLOW</a></span></code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.program.Program\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;acm.program.<a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></h3>\n<code><a href=\"../../acm/program/Program.html#CONFIG_FILE_NAME\">CONFIG_FILE_NAME</a>, <a href=\"../../acm/program/Program.html#invisibleObjects\">invisibleObjects</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.JApplet\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#accessibleContext\" title=\"class or interface in javax.swing\">accessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#rootPane\" title=\"class or interface in javax.swing\">rootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#rootPaneCheckingEnabled\" title=\"class or interface in javax.swing\">rootPaneCheckingEnabled</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#BOTTOM_ALIGNMENT\" title=\"class or interface in java.awt\">BOTTOM_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#CENTER_ALIGNMENT\" title=\"class or interface in java.awt\">CENTER_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#LEFT_ALIGNMENT\" title=\"class or interface in java.awt\">LEFT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#RIGHT_ALIGNMENT\" title=\"class or interface in java.awt\">RIGHT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#TOP_ALIGNMENT\" title=\"class or interface in java.awt\">TOP_ALIGNMENT</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.program.ProgramInterface\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;acm.program.<a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></h3>\n<code><a href=\"../../acm/program/ProgramInterface.html#CENTER\">CENTER</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.image.ImageObserver\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ABORT\" title=\"class or interface in java.awt.image\">ABORT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ALLBITS\" title=\"class or interface in java.awt.image\">ALLBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ERROR\" title=\"class or interface in java.awt.image\">ERROR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#FRAMEBITS\" title=\"class or interface in java.awt.image\">FRAMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#HEIGHT\" title=\"class or interface in java.awt.image\">HEIGHT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#PROPERTIES\" title=\"class or interface in java.awt.image\">PROPERTIES</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#SOMEBITS\" title=\"class or interface in java.awt.image\">SOMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#WIDTH\" title=\"class or interface in java.awt.image\">WIDTH</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.html#KarelProgram--\">KarelProgram</a></span>()</code>\n<div class=\"block\">Creates a new Karel program.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.html#add-stanford.karel.Karel-\">add</a></span>(<a href=\"../../stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a>&nbsp;karel)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.html#add-stanford.karel.KarelInterface-int-int-int-int-\">add</a></span>(<a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a>&nbsp;karel,\n   int&nbsp;x,\n   int&nbsp;y,\n   int&nbsp;dir,\n   int&nbsp;nBeepers)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"../../stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.html#createWorld--\">createWorld</a></span>()</code>\n<div class=\"block\">Creates the <code>KarelWorld</code> in which Karel lives.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected <a href=\"../../stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.html#getKarel--\">getKarel</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.html#getWorld--\">getWorld</a></span>()</code>\n<div class=\"block\">Returns the <code>KarelWorld</code> object in which Karel lives.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.html#getWorldDirectory--\">getWorldDirectory</a></span>()</code>\n<div class=\"block\">Returns the default directory in which Karel's worlds live.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.html#isStarted--\">isStarted</a></span>()</code>\n<div class=\"block\">Checks to see whether this program has started.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.html#loadConfiguration-java.util.Properties-\">loadConfiguration</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Properties.html?is-external=true\" title=\"class or interface in java.util\">Properties</a>&nbsp;props)</code>\n<div class=\"block\">Loads any saved configuration of this program from disk.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.html#loadInitialWorld--\">loadInitialWorld</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.html#main--\">main</a></span>()</code>\n<div class=\"block\">Contains the code to be executed for each specific program subclass.</div>\n</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.html#menuAction-java.awt.event.ActionEvent-\">menuAction</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;event)</code>\n<div class=\"block\">Called whenever a program action is detected in the menu bar.</div>\n</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.html#saveConfiguration-java.util.Properties-\">saveConfiguration</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Properties.html?is-external=true\" title=\"class or interface in java.util\">Properties</a>&nbsp;props)</code>\n<div class=\"block\">Saves configuration of this program to disk in the given properties collection.</div>\n</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.html#setStatus-java.lang.String-\">setStatus</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;status)</code>&nbsp;</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.html#setWorld-stanford.karel.KarelWorld-\">setWorld</a></span>(<a href=\"../../stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a>&nbsp;world)</code>&nbsp;</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelProgram.html#startRun--\">startRun</a></span>()</code>\n<div class=\"block\">Initializes and runs the run method.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.program.Program\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.program.<a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></h3>\n<code><a href=\"../../acm/program/Program.html#actionPerformed-java.awt.event.ActionEvent-\">actionPerformed</a>, <a href=\"../../acm/program/Program.html#add-java.awt.Component-java.lang.String-java.lang.Object-\">add</a>, <a href=\"../../acm/program/Program.html#addActionListeners--\">addActionListeners</a>, <a href=\"../../acm/program/Program.html#addActionListeners-java.awt.event.ActionListener-\">addActionListeners</a>, <a href=\"../../acm/program/Program.html#addActionListenersToButtonsOnly--\">addActionListenersToButtonsOnly</a>, <a href=\"../../acm/program/Program.html#addAllActionListeners--\">addAllActionListeners</a>, <a href=\"../../acm/program/Program.html#addExitHook-java.lang.Object-\">addExitHook</a>, <a href=\"../../acm/program/Program.html#addImpl-java.awt.Component-java.lang.Object-int-\">addImpl</a>, <a href=\"../../acm/program/Program.html#adjustmentValueChanged-java.awt.event.AdjustmentEvent-\">adjustmentValueChanged</a>, <a href=\"../../acm/program/Program.html#alert-java.lang.Object-\">alert</a>, <a href=\"../../acm/program/Program.html#alert-java.lang.String-\">alert</a>, <a href=\"../../acm/program/Program.html#animation--\">animation</a>, <a href=\"../../acm/program/Program.html#center--\">center</a>, <a href=\"../../acm/program/Program.html#changedUpdate-javax.swing.event.DocumentEvent-\">changedUpdate</a>, <a href=\"../../acm/program/Program.html#checkCompilerFlags--\">checkCompilerFlags</a>, <a href=\"../../acm/program/Program.html#checkKill--\">checkKill</a>, <a href=\"../../acm/program/Program.html#checkStartupSettings--\">checkStartupSettings</a>, <a href=\"../../acm/program/Program.html#componentAdded-java.awt.event.ContainerEvent-\">componentAdded</a>, <a href=\"../../acm/program/Program.html#componentHidden-java.awt.event.ComponentEvent-\">componentHidden</a>, <a href=\"../../acm/program/Program.html#componentMoved-java.awt.event.ComponentEvent-\">componentMoved</a>, <a href=\"../../acm/program/Program.html#componentRemoved-java.awt.event.ContainerEvent-\">componentRemoved</a>, <a href=\"../../acm/program/Program.html#componentResized-java.awt.event.ComponentEvent-\">componentResized</a>, <a href=\"../../acm/program/Program.html#componentShown-java.awt.event.ComponentEvent-\">componentShown</a>, <a href=\"../../acm/program/Program.html#confirm-java.lang.String-\">confirm</a>, <a href=\"../../acm/program/Program.html#contentsChanged-javax.swing.event.ListDataEvent-\">contentsChanged</a>, <a href=\"../../acm/program/Program.html#createConsole--\">createConsole</a>, <a href=\"../../acm/program/Program.html#createDialogIO--\">createDialogIO</a>, <a href=\"../../acm/program/Program.html#createMenuBar--\">createMenuBar</a>, <a href=\"../../acm/program/Program.html#createParameterTable-java.lang.String:A-\">createParameterTable</a>, <a href=\"../../acm/program/Program.html#createProgramFrame--\">createProgramFrame</a>, <a href=\"../../acm/program/Program.html#destroy--\">destroy</a>, <a href=\"../../acm/program/Program.html#endHook--\">endHook</a>, <a href=\"../../acm/program/Program.html#error-java.lang.Exception-\">error</a>, <a href=\"../../acm/program/Program.html#error-java.lang.Exception-java.lang.String-\">error</a>, <a href=\"../../acm/program/Program.html#error-java.lang.String-\">error</a>, <a href=\"../../acm/program/Program.html#exit--\">exit</a>, <a href=\"../../acm/program/Program.html#fileExists-java.lang.String-\">fileExists</a>, <a href=\"../../acm/program/Program.html#fileExists-java.lang.String-java.lang.String-\">fileExists</a>, <a href=\"../../acm/program/Program.html#fileExistsInsideJAR-java.lang.String-\">fileExistsInsideJAR</a>, <a href=\"../../acm/program/Program.html#fileExistsInsideJAR-java.lang.String-java.lang.String-\">fileExistsInsideJAR</a>, <a href=\"../../acm/program/Program.html#fileExistsOnDisk-java.lang.String-\">fileExistsOnDisk</a>, <a href=\"../../acm/program/Program.html#fileExistsOnDisk-java.lang.String-java.lang.String-\">fileExistsOnDisk</a>, <a href=\"../../acm/program/Program.html#fileSize-java.lang.String-\">fileSize</a>, <a href=\"../../acm/program/Program.html#fileSize-java.lang.String-java.lang.String-\">fileSize</a>, <a href=\"../../acm/program/Program.html#focusGained-java.awt.event.FocusEvent-\">focusGained</a>, <a href=\"../../acm/program/Program.html#focusLost-java.awt.event.FocusEvent-\">focusLost</a>, <a href=\"../../acm/program/Program.html#getAnimationDelay--\">getAnimationDelay</a>, <a href=\"../../acm/program/Program.html#getAppletStub--\">getAppletStub</a>, <a href=\"../../acm/program/Program.html#getArgumentArray--\">getArgumentArray</a>, <a href=\"../../acm/program/Program.html#getBoolean--\">getBoolean</a>, <a href=\"../../acm/program/Program.html#getBoolean-java.lang.String-\">getBoolean</a>, <a href=\"../../acm/program/Program.html#getBoolean-java.lang.String-java.lang.String-java.lang.String-\">getBoolean</a>, <a href=\"../../acm/program/Program.html#getBorder-java.lang.String-\">getBorder</a>, <a href=\"../../acm/program/Program.html#getBottomY--\">getBottomY</a>, <a href=\"../../acm/program/Program.html#getCenterLocation--\">getCenterLocation</a>, <a href=\"../../acm/program/Program.html#getCenterX--\">getCenterX</a>, <a href=\"../../acm/program/Program.html#getCenterY--\">getCenterY</a>, <a href=\"../../acm/program/Program.html#getCentralRegionSize--\">getCentralRegionSize</a>, <a href=\"../../acm/program/Program.html#getConsole--\">getConsole</a>, <a href=\"../../acm/program/Program.html#getDialog--\">getDialog</a>, <a href=\"../../acm/program/Program.html#getDouble--\">getDouble</a>, <a href=\"../../acm/program/Program.html#getDouble-double-double-\">getDouble</a>, <a href=\"../../acm/program/Program.html#getDouble-java.lang.String-\">getDouble</a>, <a href=\"../../acm/program/Program.html#getDouble-java.lang.String-double-double-\">getDouble</a>, <a href=\"../../acm/program/Program.html#getHeight--\">getHeight</a>, <a href=\"../../acm/program/Program.html#getInputModel--\">getInputModel</a>, <a href=\"../../acm/program/Program.html#getInteger--\">getInteger</a>, <a href=\"../../acm/program/Program.html#getInteger-int-int-\">getInteger</a>, <a href=\"../../acm/program/Program.html#getInteger-java.lang.String-\">getInteger</a>, <a href=\"../../acm/program/Program.html#getInteger-java.lang.String-int-int-\">getInteger</a>, <a href=\"../../acm/program/Program.html#getJFrame--\">getJFrame</a>, <a href=\"../../acm/program/Program.html#getLayout--\">getLayout</a>, <a href=\"../../acm/program/Program.html#getLine--\">getLine</a>, <a href=\"../../acm/program/Program.html#getLine-java.lang.String-\">getLine</a>, <a href=\"../../acm/program/Program.html#getMainThread--\">getMainThread</a>, <a href=\"../../acm/program/Program.html#getMenuBar--\">getMenuBar</a>, <a href=\"../../acm/program/Program.html#getOutputColor--\">getOutputColor</a>, <a href=\"../../acm/program/Program.html#getOutputModel--\">getOutputModel</a>, <a href=\"../../acm/program/Program.html#getParameter-java.lang.String-\">getParameter</a>, <a href=\"../../acm/program/Program.html#getParameterTable--\">getParameterTable</a>, <a href=\"../../acm/program/Program.html#getPreferredSize--\">getPreferredSize</a>, <a href=\"../../acm/program/Program.html#getReader--\">getReader</a>, <a href=\"../../acm/program/Program.html#getReal--\">getReal</a>, <a href=\"../../acm/program/Program.html#getReal-double-double-\">getReal</a>, <a href=\"../../acm/program/Program.html#getReal-java.lang.String-\">getReal</a>, <a href=\"../../acm/program/Program.html#getReal-java.lang.String-double-double-\">getReal</a>, <a href=\"../../acm/program/Program.html#getRegionPanel-java.lang.String-\">getRegionPanel</a>, <a href=\"../../acm/program/Program.html#getRightX--\">getRightX</a>, <a href=\"../../acm/program/Program.html#getScreenHeight--\">getScreenHeight</a>, <a href=\"../../acm/program/Program.html#getScreenSize--\">getScreenSize</a>, <a href=\"../../acm/program/Program.html#getScreenWidth--\">getScreenWidth</a>, <a href=\"../../acm/program/Program.html#getStartupObject--\">getStartupObject</a>, <a href=\"../../acm/program/Program.html#getTitle--\">getTitle</a>, <a href=\"../../acm/program/Program.html#getWidth--\">getWidth</a>, <a href=\"../../acm/program/Program.html#getWindow--\">getWindow</a>, <a href=\"../../acm/program/Program.html#getWriter--\">getWriter</a>, <a href=\"../../acm/program/Program.html#getYesOrNo-java.lang.String-\">getYesOrNo</a>, <a href=\"../../acm/program/Program.html#hasConfiguration--\">hasConfiguration</a>, <a href=\"../../acm/program/Program.html#init--\">init</a>, <a href=\"../../acm/program/Program.html#insertUpdate-javax.swing.event.DocumentEvent-\">insertUpdate</a>, <a href=\"../../acm/program/Program.html#intervalAdded-javax.swing.event.ListDataEvent-\">intervalAdded</a>, <a href=\"../../acm/program/Program.html#intervalRemoved-javax.swing.event.ListDataEvent-\">intervalRemoved</a>, <a href=\"../../acm/program/Program.html#isAnimated--\">isAnimated</a>, <a href=\"../../acm/program/Program.html#isApplet--\">isApplet</a>, <a href=\"../../acm/program/Program.html#isAppletMode--\">isAppletMode</a>, <a href=\"../../acm/program/Program.html#isExitOnClose--\">isExitOnClose</a>, <a href=\"../../acm/program/Program.html#isInitialized--\">isInitialized</a>, <a href=\"../../acm/program/Program.html#itemStateChanged-java.awt.event.ItemEvent-\">itemStateChanged</a>, <a href=\"../../acm/program/Program.html#keyPressed-java.awt.event.KeyEvent-\">keyPressed</a>, <a href=\"../../acm/program/Program.html#keyReleased-java.awt.event.KeyEvent-\">keyReleased</a>, <a href=\"../../acm/program/Program.html#keyTyped-java.awt.event.KeyEvent-\">keyTyped</a>, <a href=\"../../acm/program/Program.html#killMe--\">killMe</a>, <a href=\"../../acm/program/Program.html#loadConfiguration--\">loadConfiguration</a>, <a href=\"../../acm/program/Program.html#main-java.lang.String:A-\">main</a>, <a href=\"../../acm/program/Program.html#menuCanceled-javax.swing.event.MenuEvent-\">menuCanceled</a>, <a href=\"../../acm/program/Program.html#menuDeselected-javax.swing.event.MenuEvent-\">menuDeselected</a>, <a href=\"../../acm/program/Program.html#menuSelected-javax.swing.event.MenuEvent-\">menuSelected</a>, <a href=\"../../acm/program/Program.html#mouseClicked-java.awt.event.MouseEvent-\">mouseClicked</a>, <a href=\"../../acm/program/Program.html#mouseDragged-java.awt.event.MouseEvent-\">mouseDragged</a>, <a href=\"../../acm/program/Program.html#mouseEntered-java.awt.event.MouseEvent-\">mouseEntered</a>, <a href=\"../../acm/program/Program.html#mouseExited-java.awt.event.MouseEvent-\">mouseExited</a>, <a href=\"../../acm/program/Program.html#mouseMoved-java.awt.event.MouseEvent-\">mouseMoved</a>, <a href=\"../../acm/program/Program.html#mousePressed-java.awt.event.MouseEvent-\">mousePressed</a>, <a href=\"../../acm/program/Program.html#mouseReleased-java.awt.event.MouseEvent-\">mouseReleased</a>, <a href=\"../../acm/program/Program.html#mouseWheelMoved-java.awt.event.MouseWheelEvent-\">mouseWheelMoved</a>, <a href=\"../../acm/program/Program.html#openFile-java.lang.String-\">openFile</a>, <a href=\"../../acm/program/Program.html#openFile-java.lang.String-java.lang.String-\">openFile</a>, <a href=\"../../acm/program/Program.html#openFileFromDisk-java.lang.String-\">openFileFromDisk</a>, <a href=\"../../acm/program/Program.html#openFileFromDisk-java.lang.String-java.lang.String-\">openFileFromDisk</a>, <a href=\"../../acm/program/Program.html#openFileFromJAR-java.lang.String-\">openFileFromJAR</a>, <a href=\"../../acm/program/Program.html#openFileFromJAR-java.lang.String-java.lang.String-\">openFileFromJAR</a>, <a href=\"../../acm/program/Program.html#pack--\">pack</a>, <a href=\"../../acm/program/Program.html#pause-double-\">pause</a>, <a href=\"../../acm/program/Program.html#pauseTick--\">pauseTick</a>, <a href=\"../../acm/program/Program.html#popupMenuCanceled-javax.swing.event.PopupMenuEvent-\">popupMenuCanceled</a>, <a href=\"../../acm/program/Program.html#popupMenuWillBecomeInvisible-javax.swing.event.PopupMenuEvent-\">popupMenuWillBecomeInvisible</a>, <a href=\"../../acm/program/Program.html#popupMenuWillBecomeVisible-javax.swing.event.PopupMenuEvent-\">popupMenuWillBecomeVisible</a>, <a href=\"../../acm/program/Program.html#print-boolean-\">print</a>, <a href=\"../../acm/program/Program.html#print-boolean-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-char-\">print</a>, <a href=\"../../acm/program/Program.html#print-char-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-double-\">print</a>, <a href=\"../../acm/program/Program.html#print-double-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-float-\">print</a>, <a href=\"../../acm/program/Program.html#print-float-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-int-\">print</a>, <a href=\"../../acm/program/Program.html#print-int-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-long-\">print</a>, <a href=\"../../acm/program/Program.html#print-long-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-java.lang.Object-\">print</a>, <a href=\"../../acm/program/Program.html#print-java.lang.Object-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-java.lang.String-\">print</a>, <a href=\"../../acm/program/Program.html#print-java.lang.String-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#printf-java.lang.String-java.lang.Object...-\">printf</a>, <a href=\"../../acm/program/Program.html#println--\">println</a>, <a href=\"../../acm/program/Program.html#println-boolean-\">println</a>, <a href=\"../../acm/program/Program.html#println-boolean-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-char-\">println</a>, <a href=\"../../acm/program/Program.html#println-char-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-double-\">println</a>, <a href=\"../../acm/program/Program.html#println-double-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-float-\">println</a>, <a href=\"../../acm/program/Program.html#println-float-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-int-\">println</a>, <a href=\"../../acm/program/Program.html#println-int-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-long-\">println</a>, <a href=\"../../acm/program/Program.html#println-long-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-java.lang.Object-\">println</a>, <a href=\"../../acm/program/Program.html#println-java.lang.Object-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-java.lang.String-\">println</a>, <a href=\"../../acm/program/Program.html#println-java.lang.String-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#prompt-java.lang.String-\">prompt</a>, <a href=\"../../acm/program/Program.html#readBoolean--\">readBoolean</a>, <a href=\"../../acm/program/Program.html#readBoolean-java.lang.String-\">readBoolean</a>, <a href=\"../../acm/program/Program.html#readBoolean-java.lang.String-java.lang.String-java.lang.String-\">readBoolean</a>, <a href=\"../../acm/program/Program.html#readDouble--\">readDouble</a>, <a href=\"../../acm/program/Program.html#readDouble-double-double-\">readDouble</a>, <a href=\"../../acm/program/Program.html#readDouble-java.lang.String-\">readDouble</a>, <a href=\"../../acm/program/Program.html#readDouble-java.lang.String-double-double-\">readDouble</a>, <a href=\"../../acm/program/Program.html#readInt--\">readInt</a>, <a href=\"../../acm/program/Program.html#readInt-int-int-\">readInt</a>, <a href=\"../../acm/program/Program.html#readInt-java.lang.String-\">readInt</a>, <a href=\"../../acm/program/Program.html#readInt-java.lang.String-int-int-\">readInt</a>, <a href=\"../../acm/program/Program.html#readLine--\">readLine</a>, <a href=\"../../acm/program/Program.html#readLine-java.lang.String-\">readLine</a>, <a href=\"../../acm/program/Program.html#remove-java.awt.Component-\">remove</a>, <a href=\"../../acm/program/Program.html#remove-int-\">remove</a>, <a href=\"../../acm/program/Program.html#removeAll--\">removeAll</a>, <a href=\"../../acm/program/Program.html#removeFromRegion-java.awt.Component-java.lang.String-\">removeFromRegion</a>, <a href=\"../../acm/program/Program.html#removeMenuBar--\">removeMenuBar</a>, <a href=\"../../acm/program/Program.html#removeUpdate-javax.swing.event.DocumentEvent-\">removeUpdate</a>, <a href=\"../../acm/program/Program.html#repaint--\">repaint</a>, <a href=\"../../acm/program/Program.html#run--\">run</a>, <a href=\"../../acm/program/Program.html#runHook--\">runHook</a>, <a href=\"../../acm/program/Program.html#saveConfiguration--\">saveConfiguration</a>, <a href=\"../../acm/program/Program.html#setAnimated-boolean-\">setAnimated</a>, <a href=\"../../acm/program/Program.html#setAnimationDelay-int-\">setAnimationDelay</a>, <a href=\"../../acm/program/Program.html#setAppletStub-java.applet.AppletStub-\">setAppletStub</a>, <a href=\"../../acm/program/Program.html#setBackground-java.awt.Color-\">setBackground</a>, <a href=\"../../acm/program/Program.html#setBottomY-double-\">setBottomY</a>, <a href=\"../../acm/program/Program.html#setCenterLocation-double-double-\">setCenterLocation</a>, <a href=\"../../acm/program/Program.html#setCenterX-double-\">setCenterX</a>, <a href=\"../../acm/program/Program.html#setCenterY-double-\">setCenterY</a>, <a href=\"../../acm/program/Program.html#setConsole-acm.io.IOConsole-\">setConsole</a>, <a href=\"../../acm/program/Program.html#setDialog-acm.io.IODialog-\">setDialog</a>, <a href=\"../../acm/program/Program.html#setExitOnClose-boolean-\">setExitOnClose</a>, <a href=\"../../acm/program/Program.html#setFramesPerSecond-int-\">setFramesPerSecond</a>, <a href=\"../../acm/program/Program.html#setHeight-double-\">setHeight</a>, <a href=\"../../acm/program/Program.html#setInputModel-acm.io.IOModel-\">setInputModel</a>, <a href=\"../../acm/program/Program.html#setInvisible-acm.graphics.GObject-boolean-\">setInvisible</a>, <a href=\"../../acm/program/Program.html#setJFrame-javax.swing.JFrame-\">setJFrame</a>, <a href=\"../../acm/program/Program.html#setJMenuBar-javax.swing.JMenuBar-\">setJMenuBar</a>, <a href=\"../../acm/program/Program.html#setLayout-java.awt.LayoutManager-\">setLayout</a>, <a href=\"../../acm/program/Program.html#setLocation-double-double-\">setLocation</a>, <a href=\"../../acm/program/Program.html#setLocation-acm.graphics.GPoint-\">setLocation</a>, <a href=\"../../acm/program/Program.html#setOutputColor-java.awt.Color-\">setOutputColor</a>, <a href=\"../../acm/program/Program.html#setOutputModel-acm.io.IOModel-\">setOutputModel</a>, <a href=\"../../acm/program/Program.html#setParameter-java.lang.String-java.lang.String-\">setParameter</a>, <a href=\"../../acm/program/Program.html#setParameterTable-java.util.Map-\">setParameterTable</a>, <a href=\"../../acm/program/Program.html#setPauseScaleFactor-double-\">setPauseScaleFactor</a>, <a href=\"../../acm/program/Program.html#setResizable-boolean-\">setResizable</a>, <a href=\"../../acm/program/Program.html#setRightX-double-\">setRightX</a>, <a href=\"../../acm/program/Program.html#setShowPixelGrid-boolean-\">setShowPixelGrid</a>, <a href=\"../../acm/program/Program.html#setShowPixelInfo-boolean-\">setShowPixelInfo</a>, <a href=\"../../acm/program/Program.html#setSize-double-double-\">setSize</a>, <a href=\"../../acm/program/Program.html#setStartupObject-java.lang.Object-\">setStartupObject</a>, <a href=\"../../acm/program/Program.html#setTitle-java.lang.String-\">setTitle</a>, <a href=\"../../acm/program/Program.html#setWidth-double-\">setWidth</a>, <a href=\"../../acm/program/Program.html#setX-double-\">setX</a>, <a href=\"../../acm/program/Program.html#setY-double-\">setY</a>, <a href=\"../../acm/program/Program.html#showErrorMessage-java.lang.String-\">showErrorMessage</a>, <a href=\"../../acm/program/Program.html#start--\">start</a>, <a href=\"../../acm/program/Program.html#start-java.lang.String:A-\">start</a>, <a href=\"../../acm/program/Program.html#startAnimation--\">startAnimation</a>, <a href=\"../../acm/program/Program.html#startHook--\">startHook</a>, <a href=\"../../acm/program/Program.html#stateChanged-javax.swing.event.ChangeEvent-\">stateChanged</a>, <a href=\"../../acm/program/Program.html#stopAnimation--\">stopAnimation</a>, <a href=\"../../acm/program/Program.html#textValueChanged-java.awt.event.TextEvent-\">textValueChanged</a>, <a href=\"../../acm/program/Program.html#validate--\">validate</a>, <a href=\"../../acm/program/Program.html#valueChanged-javax.swing.event.ListSelectionEvent-\">valueChanged</a>, <a href=\"../../acm/program/Program.html#windowActivated-java.awt.event.WindowEvent-\">windowActivated</a>, <a href=\"../../acm/program/Program.html#windowClosed-java.awt.event.WindowEvent-\">windowClosed</a>, <a href=\"../../acm/program/Program.html#windowClosing-java.awt.event.WindowEvent-\">windowClosing</a>, <a href=\"../../acm/program/Program.html#windowDeactivated-java.awt.event.WindowEvent-\">windowDeactivated</a>, <a href=\"../../acm/program/Program.html#windowDeiconified-java.awt.event.WindowEvent-\">windowDeiconified</a>, <a href=\"../../acm/program/Program.html#windowGainedFocus-java.awt.event.WindowEvent-\">windowGainedFocus</a>, <a href=\"../../acm/program/Program.html#windowIconified-java.awt.event.WindowEvent-\">windowIconified</a>, <a href=\"../../acm/program/Program.html#windowLostFocus-java.awt.event.WindowEvent-\">windowLostFocus</a>, <a href=\"../../acm/program/Program.html#windowOpened-java.awt.event.WindowEvent-\">windowOpened</a>, <a href=\"../../acm/program/Program.html#windowStateChanged-java.awt.event.WindowEvent-\">windowStateChanged</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JApplet\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#createRootPane--\" title=\"class or interface in javax.swing\">createRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getAccessibleContext--\" title=\"class or interface in javax.swing\">getAccessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getContentPane--\" title=\"class or interface in javax.swing\">getContentPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getGlassPane--\" title=\"class or interface in javax.swing\">getGlassPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getGraphics--\" title=\"class or interface in javax.swing\">getGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getJMenuBar--\" title=\"class or interface in javax.swing\">getJMenuBar</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getLayeredPane--\" title=\"class or interface in javax.swing\">getLayeredPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getRootPane--\" title=\"class or interface in javax.swing\">getRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getTransferHandler--\" title=\"class or interface in javax.swing\">getTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#isRootPaneCheckingEnabled--\" title=\"class or interface in javax.swing\">isRootPaneCheckingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#paramString--\" title=\"class or interface in javax.swing\">paramString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#repaint-long-int-int-int-int-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setContentPane-java.awt.Container-\" title=\"class or interface in javax.swing\">setContentPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setGlassPane-java.awt.Component-\" title=\"class or interface in javax.swing\">setGlassPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setLayeredPane-javax.swing.JLayeredPane-\" title=\"class or interface in javax.swing\">setLayeredPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setRootPane-javax.swing.JRootPane-\" title=\"class or interface in javax.swing\">setRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setRootPaneCheckingEnabled-boolean-\" title=\"class or interface in javax.swing\">setRootPaneCheckingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setTransferHandler-javax.swing.TransferHandler-\" title=\"class or interface in javax.swing\">setTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#update-java.awt.Graphics-\" title=\"class or interface in javax.swing\">update</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.applet.Applet\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.applet.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">Applet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAppletContext--\" title=\"class or interface in java.applet\">getAppletContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAppletInfo--\" title=\"class or interface in java.applet\">getAppletInfo</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAudioClip-java.net.URL-\" title=\"class or interface in java.applet\">getAudioClip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAudioClip-java.net.URL-java.lang.String-\" title=\"class or interface in java.applet\">getAudioClip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getCodeBase--\" title=\"class or interface in java.applet\">getCodeBase</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getDocumentBase--\" title=\"class or interface in java.applet\">getDocumentBase</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getImage-java.net.URL-\" title=\"class or interface in java.applet\">getImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getImage-java.net.URL-java.lang.String-\" title=\"class or interface in java.applet\">getImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getLocale--\" title=\"class or interface in java.applet\">getLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getParameterInfo--\" title=\"class or interface in java.applet\">getParameterInfo</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#isActive--\" title=\"class or interface in java.applet\">isActive</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#isValidateRoot--\" title=\"class or interface in java.applet\">isValidateRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#newAudioClip-java.net.URL-\" title=\"class or interface in java.applet\">newAudioClip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#play-java.net.URL-\" title=\"class or interface in java.applet\">play</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#play-java.net.URL-java.lang.String-\" title=\"class or interface in java.applet\">play</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#resize-java.awt.Dimension-\" title=\"class or interface in java.applet\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#resize-int-int-\" title=\"class or interface in java.applet\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#setStub-java.applet.AppletStub-\" title=\"class or interface in java.applet\">setStub</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#showStatus-java.lang.String-\" title=\"class or interface in java.applet\">showStatus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#stop--\" title=\"class or interface in java.applet\">stop</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Panel\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\">Panel</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true#addNotify--\" title=\"class or interface in java.awt\">addNotify</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.lang.String-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">addContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#applyComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">applyComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#areFocusTraversalKeysSet-int-\" title=\"class or interface in java.awt\">areFocusTraversalKeysSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#countComponents--\" title=\"class or interface in java.awt\">countComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#deliverEvent-java.awt.Event-\" title=\"class or interface in java.awt\">deliverEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#doLayout--\" title=\"class or interface in java.awt\">doLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-int-int-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getAlignmentX--\" title=\"class or interface in java.awt\">getAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getAlignmentY--\" title=\"class or interface in java.awt\">getAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponent-int-\" title=\"class or interface in java.awt\">getComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-int-int-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentCount--\" title=\"class or interface in java.awt\">getComponentCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponents--\" title=\"class or interface in java.awt\">getComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentZOrder-java.awt.Component-\" title=\"class or interface in java.awt\">getComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getContainerListeners--\" title=\"class or interface in java.awt\">getContainerListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalKeys-int-\" title=\"class or interface in java.awt\">getFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalPolicy--\" title=\"class or interface in java.awt\">getFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getInsets--\" title=\"class or interface in java.awt\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getListeners-java.lang.Class-\" title=\"class or interface in java.awt\">getListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMaximumSize--\" title=\"class or interface in java.awt\">getMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMinimumSize--\" title=\"class or interface in java.awt\">getMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMousePosition-boolean-\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#insets--\" title=\"class or interface in java.awt\">insets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#invalidate--\" title=\"class or interface in java.awt\">invalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isAncestorOf-java.awt.Component-\" title=\"class or interface in java.awt\">isAncestorOf</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot--\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot-java.awt.Container-\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicyProvider--\" title=\"class or interface in java.awt\">isFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicySet--\" title=\"class or interface in java.awt\">isFocusTraversalPolicySet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#layout--\" title=\"class or interface in java.awt\">layout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintStream-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintWriter-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#locate-int-int-\" title=\"class or interface in java.awt\">locate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#minimumSize--\" title=\"class or interface in java.awt\">minimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paint-java.awt.Graphics-\" title=\"class or interface in java.awt\">paint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paintComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#preferredSize--\" title=\"class or interface in java.awt\">preferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#print-java.awt.Graphics-\" title=\"class or interface in java.awt\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#printComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">printComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processContainerEvent-java.awt.event.ContainerEvent-\" title=\"class or interface in java.awt\">processContainerEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">processEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">removeContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeNotify--\" title=\"class or interface in java.awt\">removeNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setComponentZOrder-java.awt.Component-int-\" title=\"class or interface in java.awt\">setComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusCycleRoot-boolean-\" title=\"class or interface in java.awt\">setFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalKeys-int-java.util.Set-\" title=\"class or interface in java.awt\">setFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicy-java.awt.FocusTraversalPolicy-\" title=\"class or interface in java.awt\">setFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicyProvider-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFont-java.awt.Font-\" title=\"class or interface in java.awt\">setFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#transferFocusDownCycle--\" title=\"class or interface in java.awt\">transferFocusDownCycle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validateTree--\" title=\"class or interface in java.awt\">validateTree</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#action-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">action</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#add-java.awt.PopupMenu-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">addComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">addFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">addHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">addHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">addInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">addKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">addMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">addMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">addMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#bounds--\" title=\"class or interface in java.awt\">bounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#coalesceEvents-java.awt.AWTEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">coalesceEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-int-int-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-java.awt.Point-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-java.awt.image.ImageProducer-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-int-int-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-java.awt.ImageCapabilities-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disable--\" title=\"class or interface in java.awt\">disable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disableEvents-long-\" title=\"class or interface in java.awt\">disableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#dispatchEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">dispatchEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable--\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable-boolean-\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableEvents-long-\" title=\"class or interface in java.awt\">enableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableInputMethods-boolean-\" title=\"class or interface in java.awt\">enableInputMethods</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-boolean-boolean-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-byte-byte-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-char-char-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-double-double-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-float-float-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-int-int-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-long-long-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-short-short-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBackground--\" title=\"class or interface in java.awt\">getBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBaseline-int-int-\" title=\"class or interface in java.awt\">getBaseline</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBaselineResizeBehavior--\" title=\"class or interface in java.awt\">getBaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds--\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getColorModel--\" title=\"class or interface in java.awt\">getColorModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentListeners--\" title=\"class or interface in java.awt\">getComponentListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentOrientation--\" title=\"class or interface in java.awt\">getComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getCursor--\" title=\"class or interface in java.awt\">getCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getDropTarget--\" title=\"class or interface in java.awt\">getDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusCycleRootAncestor--\" title=\"class or interface in java.awt\">getFocusCycleRootAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusListeners--\" title=\"class or interface in java.awt\">getFocusListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusTraversalKeysEnabled--\" title=\"class or interface in java.awt\">getFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFont--\" title=\"class or interface in java.awt\">getFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFontMetrics-java.awt.Font-\" title=\"class or interface in java.awt\">getFontMetrics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getForeground--\" title=\"class or interface in java.awt\">getForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getGraphicsConfiguration--\" title=\"class or interface in java.awt\">getGraphicsConfiguration</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyBoundsListeners--\" title=\"class or interface in java.awt\">getHierarchyBoundsListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyListeners--\" title=\"class or interface in java.awt\">getHierarchyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getIgnoreRepaint--\" title=\"class or interface in java.awt\">getIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputContext--\" title=\"class or interface in java.awt\">getInputContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodListeners--\" title=\"class or interface in java.awt\">getInputMethodListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodRequests--\" title=\"class or interface in java.awt\">getInputMethodRequests</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getKeyListeners--\" title=\"class or interface in java.awt\">getKeyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation--\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation-java.awt.Point-\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocationOnScreen--\" title=\"class or interface in java.awt\">getLocationOnScreen</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseListeners--\" title=\"class or interface in java.awt\">getMouseListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseMotionListeners--\" title=\"class or interface in java.awt\">getMouseMotionListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMousePosition--\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseWheelListeners--\" title=\"class or interface in java.awt\">getMouseWheelListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getName--\" title=\"class or interface in java.awt\">getName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getParent--\" title=\"class or interface in java.awt\">getParent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPeer--\" title=\"class or interface in java.awt\">getPeer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners--\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners-java.lang.String-\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize--\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getToolkit--\" title=\"class or interface in java.awt\">getToolkit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getTreeLock--\" title=\"class or interface in java.awt\">getTreeLock</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getX--\" title=\"class or interface in java.awt\">getX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getY--\" title=\"class or interface in java.awt\">getY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#gotFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">gotFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#handleEvent-java.awt.Event-\" title=\"class or interface in java.awt\">handleEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hasFocus--\" title=\"class or interface in java.awt\">hasFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hide--\" title=\"class or interface in java.awt\">hide</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#imageUpdate-java.awt.Image-int-int-int-int-int-\" title=\"class or interface in java.awt\">imageUpdate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#inside-int-int-\" title=\"class or interface in java.awt\">inside</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isBackgroundSet--\" title=\"class or interface in java.awt\">isBackgroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isCursorSet--\" title=\"class or interface in java.awt\">isCursorSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDisplayable--\" title=\"class or interface in java.awt\">isDisplayable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDoubleBuffered--\" title=\"class or interface in java.awt\">isDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isEnabled--\" title=\"class or interface in java.awt\">isEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusable--\" title=\"class or interface in java.awt\">isFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusOwner--\" title=\"class or interface in java.awt\">isFocusOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusTraversable--\" title=\"class or interface in java.awt\">isFocusTraversable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFontSet--\" title=\"class or interface in java.awt\">isFontSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isForegroundSet--\" title=\"class or interface in java.awt\">isForegroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isLightweight--\" title=\"class or interface in java.awt\">isLightweight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMaximumSizeSet--\" title=\"class or interface in java.awt\">isMaximumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMinimumSizeSet--\" title=\"class or interface in java.awt\">isMinimumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isOpaque--\" title=\"class or interface in java.awt\">isOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isPreferredSizeSet--\" title=\"class or interface in java.awt\">isPreferredSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isShowing--\" title=\"class or interface in java.awt\">isShowing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isValid--\" title=\"class or interface in java.awt\">isValid</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isVisible--\" title=\"class or interface in java.awt\">isVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyDown-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyUp-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list--\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintStream-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintWriter-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#location--\" title=\"class or interface in java.awt\">location</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#lostFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">lostFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDown-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDrag-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDrag</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseEnter-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseEnter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseExit-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseExit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseMove-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseMove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseUp-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#move-int-int-\" title=\"class or interface in java.awt\">move</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#nextFocus--\" title=\"class or interface in java.awt\">nextFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#paintAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#postEvent-java.awt.Event-\" title=\"class or interface in java.awt\">postEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#printAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">printAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processComponentEvent-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt\">processComponentEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processFocusEvent-java.awt.event.FocusEvent-\" title=\"class or interface in java.awt\">processFocusEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyBoundsEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyBoundsEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processInputMethodEvent-java.awt.event.InputMethodEvent-\" title=\"class or interface in java.awt\">processInputMethodEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in java.awt\">processKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseEvent-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt\">processMouseEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseMotionEvent-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt\">processMouseMotionEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseWheelEvent-java.awt.event.MouseWheelEvent-\" title=\"class or interface in java.awt\">processMouseWheelEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#remove-java.awt.MenuComponent-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">removeComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">removeFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">removeHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">removeHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">removeInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">removeKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">removeMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">removeMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">removeMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-int-int-int-int-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-long-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocus--\" title=\"class or interface in java.awt\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocus-boolean-\" title=\"class or interface in java.awt\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocusInWindow--\" title=\"class or interface in java.awt\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocusInWindow-boolean-\" title=\"class or interface in java.awt\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#reshape-int-int-int-int-\" title=\"class or interface in java.awt\">reshape</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#revalidate--\" title=\"class or interface in java.awt\">revalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-int-int-int-int-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">setComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setCursor-java.awt.Cursor-\" title=\"class or interface in java.awt\">setCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setDropTarget-java.awt.dnd.DropTarget-\" title=\"class or interface in java.awt\">setDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setEnabled-boolean-\" title=\"class or interface in java.awt\">setEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusable-boolean-\" title=\"class or interface in java.awt\">setFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusTraversalKeysEnabled-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setForeground-java.awt.Color-\" title=\"class or interface in java.awt\">setForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setIgnoreRepaint-boolean-\" title=\"class or interface in java.awt\">setIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocale-java.util.Locale-\" title=\"class or interface in java.awt\">setLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-int-int-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-java.awt.Point-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setMaximumSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setMinimumSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setName-java.lang.String-\" title=\"class or interface in java.awt\">setName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setPreferredSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-int-int-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setVisible-boolean-\" title=\"class or interface in java.awt\">setVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show--\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show-boolean-\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#size--\" title=\"class or interface in java.awt\">size</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#toString--\" title=\"class or interface in java.awt\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocus--\" title=\"class or interface in java.awt\">transferFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusBackward--\" title=\"class or interface in java.awt\">transferFocusBackward</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusUpCycle--\" title=\"class or interface in java.awt\">transferFocusUpCycle</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"WORLDS_DIRECTORY\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>WORLDS_DIRECTORY</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> WORLDS_DIRECTORY</pre>\n<div class=\"block\">Directory where *.w Karel world files are found.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelProgram.WORLDS_DIRECTORY\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"WORLD_EXTENSION\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>WORLD_EXTENSION</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> WORLD_EXTENSION</pre>\n<div class=\"block\">File extension for Karel worlds.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelProgram.WORLD_EXTENSION\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"NORTH\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>NORTH</h4>\n<pre>public static final&nbsp;int NORTH</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelProgram.NORTH\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"EAST\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>EAST</h4>\n<pre>public static final&nbsp;int EAST</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelProgram.EAST\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"SOUTH\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SOUTH</h4>\n<pre>public static final&nbsp;int SOUTH</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelProgram.SOUTH\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"WEST\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>WEST</h4>\n<pre>public static final&nbsp;int WEST</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelProgram.WEST\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"INFINITE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>INFINITE</h4>\n<pre>public static final&nbsp;int INFINITE</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelProgram.INFINITE\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"SIMPLE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SIMPLE</h4>\n<pre>public static final&nbsp;int SIMPLE</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelProgram.SIMPLE\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"FANCY\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>FANCY</h4>\n<pre>public static final&nbsp;int FANCY</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelProgram.FANCY\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"BLACK\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>BLACK</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> BLACK</pre>\n</li>\n</ul>\n<a name=\"BLUE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>BLUE</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> BLUE</pre>\n</li>\n</ul>\n<a name=\"CYAN\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>CYAN</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> CYAN</pre>\n</li>\n</ul>\n<a name=\"DARK_GRAY\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>DARK_GRAY</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> DARK_GRAY</pre>\n</li>\n</ul>\n<a name=\"GRAY\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>GRAY</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> GRAY</pre>\n</li>\n</ul>\n<a name=\"GREEN\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>GREEN</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> GREEN</pre>\n</li>\n</ul>\n<a name=\"LIGHT_GRAY\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>LIGHT_GRAY</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> LIGHT_GRAY</pre>\n</li>\n</ul>\n<a name=\"MAGENTA\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MAGENTA</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> MAGENTA</pre>\n</li>\n</ul>\n<a name=\"ORANGE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>ORANGE</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> ORANGE</pre>\n</li>\n</ul>\n<a name=\"PINK\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>PINK</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> PINK</pre>\n</li>\n</ul>\n<a name=\"RED\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>RED</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> RED</pre>\n</li>\n</ul>\n<a name=\"WHITE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>WHITE</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> WHITE</pre>\n</li>\n</ul>\n<a name=\"YELLOW\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>YELLOW</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> YELLOW</pre>\n</li>\n</ul>\n<a name=\"StateEvent\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>StateEvent</h4>\n<pre>public&nbsp;<a href=\"../../stanford/karel/Event.html\" title=\"class in stanford.karel\">Event</a>&lt;<a href=\"../../stanford/karel/KarelProgram.State.html\" title=\"enum in stanford.karel\">KarelProgram.State</a>&gt; StateEvent</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"KarelProgram--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>KarelProgram</h4>\n<pre>public&nbsp;KarelProgram()</pre>\n<div class=\"block\">Creates a new Karel program.</div>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"main--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>main</h4>\n<pre>public&nbsp;void&nbsp;main()</pre>\n<div class=\"block\">Contains the code to be executed for each specific program subclass. If\n you are defining your own <code>KarelProgram</code> class, you need to\n override the definition of <code>main</code> so that it contains the code\n for your application.</div>\n</li>\n</ul>\n<a name=\"setStatus-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setStatus</h4>\n<pre>public&nbsp;void&nbsp;setStatus(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;status)</pre>\n</li>\n</ul>\n<a name=\"getWorld--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getWorld</h4>\n<pre>public&nbsp;<a href=\"../../stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a>&nbsp;getWorld()</pre>\n<div class=\"block\">Returns the <code>KarelWorld</code> object in which Karel lives.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The <code>KarelWorld</code> object in which Karel lives</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setWorld-stanford.karel.KarelWorld-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setWorld</h4>\n<pre>protected&nbsp;void&nbsp;setWorld(<a href=\"../../stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a>&nbsp;world)</pre>\n</li>\n</ul>\n<a name=\"getWorldDirectory--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getWorldDirectory</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getWorldDirectory()</pre>\n<div class=\"block\">Returns the default directory in which Karel's worlds live.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The directory in which Karel's worlds lives</dd>\n</dl>\n</li>\n</ul>\n<a name=\"createWorld--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createWorld</h4>\n<pre>protected&nbsp;<a href=\"../../stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a>&nbsp;createWorld()</pre>\n<div class=\"block\">Creates the <code>KarelWorld</code> in which Karel lives. Subclasses can\n override this method to create their own <code>KarelWorld</code> types.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The <code>World</code> object in which Karel lives</dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n<dd>student</dd>\n</dl>\n</li>\n</ul>\n<a name=\"isStarted--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isStarted</h4>\n<pre>protected&nbsp;boolean&nbsp;isStarted()</pre>\n<div class=\"block\">Checks to see whether this program has started.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/Program.html#isStarted--\">isStarted</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Noshow:</span></dt>\n<dd>student</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getKarel--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getKarel</h4>\n<pre>protected&nbsp;<a href=\"../../stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a>&nbsp;getKarel()</pre>\n</li>\n</ul>\n<a name=\"add-stanford.karel.Karel-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>public&nbsp;void&nbsp;add(<a href=\"../../stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a>&nbsp;karel)</pre>\n</li>\n</ul>\n<a name=\"add-stanford.karel.KarelInterface-int-int-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>public&nbsp;void&nbsp;add(<a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a>&nbsp;karel,\n                int&nbsp;x,\n                int&nbsp;y,\n                int&nbsp;dir,\n                int&nbsp;nBeepers)</pre>\n</li>\n</ul>\n<a name=\"menuAction-java.awt.event.ActionEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>menuAction</h4>\n<pre>public&nbsp;boolean&nbsp;menuAction(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;event)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../acm/program/Program.html#menuAction-java.awt.event.ActionEvent-\">Program</a></code></span></div>\n<div class=\"block\">Called whenever a program action is detected in the menu bar.\n Subclasses can override this method to extend the set of menu\n commands recognized even in the absence of a component with\n keyboard focus.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/Program.html#menuAction-java.awt.event.ActionEvent-\">menuAction</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"loadConfiguration-java.util.Properties-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>loadConfiguration</h4>\n<pre>protected&nbsp;void&nbsp;loadConfiguration(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Properties.html?is-external=true\" title=\"class or interface in java.util\">Properties</a>&nbsp;props)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../acm/program/Program.html#loadConfiguration-java.util.Properties-\">Program</a></code></span></div>\n<div class=\"block\">Loads any saved configuration of this program from disk.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/Program.html#loadConfiguration-java.util.Properties-\">loadConfiguration</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>props</code> - properties to load from</dd>\n</dl>\n</li>\n</ul>\n<a name=\"saveConfiguration-java.util.Properties-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>saveConfiguration</h4>\n<pre>protected&nbsp;void&nbsp;saveConfiguration(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Properties.html?is-external=true\" title=\"class or interface in java.util\">Properties</a>&nbsp;props)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../acm/program/Program.html#saveConfiguration-java.util.Properties-\">Program</a></code></span></div>\n<div class=\"block\">Saves configuration of this program to disk in the given properties collection.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/Program.html#saveConfiguration-java.util.Properties-\">saveConfiguration</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"loadInitialWorld--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>loadInitialWorld</h4>\n<pre>public&nbsp;void&nbsp;loadInitialWorld()</pre>\n</li>\n</ul>\n<a name=\"startRun--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>startRun</h4>\n<pre>protected&nbsp;void&nbsp;startRun()</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../acm/program/Program.html#startRun--\">Program</a></code></span></div>\n<div class=\"block\">Initializes and runs the run method.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/Program.html#startRun--\">startRun</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/karel/KarelProgram.State.html\" title=\"enum in stanford.karel\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/karel/KarelProgram.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"KarelProgram.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.class.summary\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/karel/KarelWorld.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:10 PDT 2017 -->\n<title>KarelWorld</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"KarelWorld\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":9,\"i2\":9,\"i3\":9,\"i4\":10,\"i5\":10,\"i6\":9,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":9,\"i14\":9,\"i15\":9,\"i16\":10,\"i17\":10,\"i18\":10,\"i19\":10,\"i20\":10,\"i21\":9,\"i22\":9,\"i23\":10,\"i24\":9,\"i25\":10,\"i26\":10,\"i27\":10,\"i28\":10,\"i29\":10,\"i30\":10,\"i31\":10,\"i32\":10,\"i33\":10,\"i34\":10,\"i35\":10,\"i36\":10,\"i37\":10,\"i38\":10,\"i39\":10,\"i40\":10,\"i41\":10,\"i42\":10,\"i43\":10,\"i44\":10,\"i45\":10,\"i46\":10,\"i47\":10,\"i48\":10,\"i49\":10,\"i50\":10,\"i51\":10,\"i52\":9,\"i53\":9,\"i54\":10,\"i55\":10,\"i56\":10,\"i57\":10,\"i58\":10,\"i59\":10,\"i60\":9,\"i61\":10,\"i62\":10,\"i63\":10,\"i64\":10,\"i65\":10,\"i66\":10,\"i67\":9,\"i68\":10,\"i69\":10,\"i70\":10,\"i71\":10,\"i72\":9,\"i73\":10,\"i74\":10,\"i75\":10,\"i76\":10,\"i77\":10,\"i78\":10,\"i79\":10,\"i80\":10,\"i81\":10,\"i82\":10,\"i83\":10,\"i84\":10,\"i85\":10,\"i86\":10,\"i87\":10,\"i88\":10,\"i89\":10,\"i90\":10,\"i91\":10,\"i92\":10,\"i93\":10,\"i94\":10,\"i95\":10,\"i96\":10,\"i97\":10,\"i98\":10,\"i99\":10,\"i100\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/karel/KarelProgram.State.html\" title=\"enum in stanford.karel\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/karel/KarelWorld.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"KarelWorld.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JComponent\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.karel</div>\n<h2 title=\"Class KarelWorld\" class=\"title\">Class KarelWorld</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Component</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Container</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JComponent</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.karel.KarelWorld</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">KarelWorld</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#stanford.karel.KarelWorld\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.AccessibleJComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent.AccessibleJComponent</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.AccessibleAWTContainer.html?is-external=true\" title=\"class or interface in java.awt\">Container.AccessibleAWTContainer</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.AccessibleAWTComponent.html?is-external=true\" title=\"class or interface in java.awt\">Component.AccessibleAWTComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BaselineResizeBehavior.html?is-external=true\" title=\"class or interface in java.awt\">Component.BaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BltBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.BltBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.FlipBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.FlipBufferStrategy</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#BEEPER_BORDER\">BEEPER_BORDER</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#BEEPER_COLOR\">BEEPER_COLOR</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#BEEPER_FONT_FAMILY\">BEEPER_FONT_FAMILY</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#BEEPER_FRACTION\">BEEPER_FRACTION</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#BEEPER_NUMBER_FONT\">BEEPER_NUMBER_FONT</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#BLANKB\">BLANKB</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#BOTTOM_NUMBER_MARGIN\">BOTTOM_NUMBER_MARGIN</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#CENTER\">CENTER</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#CROSS_THRESHOLD\">CROSS_THRESHOLD</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#DOUBLE_WALL_THRESHOLD\">DOUBLE_WALL_THRESHOLD</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#EAST\">EAST</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#FANCY\">FANCY</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#INFINITE\">INFINITE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#LEFT_NUMBER_MARGIN\">LEFT_NUMBER_MARGIN</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#MARKED_COLOR\">MARKED_COLOR</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#MAX_DISPLAY_HEIGHT\">MAX_DISPLAY_HEIGHT</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#MAX_DISPLAY_WIDTH\">MAX_DISPLAY_WIDTH</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#MAX_HEIGHT\">MAX_HEIGHT</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#MAX_WIDTH\">MAX_WIDTH</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#MIN_BEEPER\">MIN_BEEPER</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#MIN_FANCY\">MIN_FANCY</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#MIN_LABEL\">MIN_LABEL</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#MINUS1\">MINUS1</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#NORTH\">NORTH</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#NORTHEAST\">NORTHEAST</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#NORTHWEST\">NORTHWEST</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#NUMBER_FONT\">NUMBER_FONT</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#NUMBER_THRESHOLD\">NUMBER_THRESHOLD</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#PLUS1\">PLUS1</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#SIMPLE\">SIMPLE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#SIMPLE_FRACTION\">SIMPLE_FRACTION</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#SOUTH\">SOUTH</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#SOUTHEAST\">SOUTHEAST</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#SOUTHWEST\">SOUTHWEST</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#TOKEN_TRACE\">TOKEN_TRACE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#WALL_FRACTION\">WALL_FRACTION</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#WALL_TOLERANCE\">WALL_TOLERANCE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#WEST\">WEST</a></span></code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#listenerList\" title=\"class or interface in javax.swing\">listenerList</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#TOOL_TIP_TEXT_KEY\" title=\"class or interface in javax.swing\">TOOL_TIP_TEXT_KEY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#ui\" title=\"class or interface in javax.swing\">ui</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#UNDEFINED_CONDITION\" title=\"class or interface in javax.swing\">UNDEFINED_CONDITION</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_ANCESTOR_OF_FOCUSED_COMPONENT\" title=\"class or interface in javax.swing\">WHEN_ANCESTOR_OF_FOCUSED_COMPONENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_FOCUSED\" title=\"class or interface in javax.swing\">WHEN_FOCUSED</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_IN_FOCUSED_WINDOW\" title=\"class or interface in javax.swing\">WHEN_IN_FOCUSED_WINDOW</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#accessibleContext\" title=\"class or interface in java.awt\">accessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#BOTTOM_ALIGNMENT\" title=\"class or interface in java.awt\">BOTTOM_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#CENTER_ALIGNMENT\" title=\"class or interface in java.awt\">CENTER_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#LEFT_ALIGNMENT\" title=\"class or interface in java.awt\">LEFT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#RIGHT_ALIGNMENT\" title=\"class or interface in java.awt\">RIGHT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#TOP_ALIGNMENT\" title=\"class or interface in java.awt\">TOP_ALIGNMENT</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.image.ImageObserver\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ABORT\" title=\"class or interface in java.awt.image\">ABORT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ALLBITS\" title=\"class or interface in java.awt.image\">ALLBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ERROR\" title=\"class or interface in java.awt.image\">ERROR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#FRAMEBITS\" title=\"class or interface in java.awt.image\">FRAMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#HEIGHT\" title=\"class or interface in java.awt.image\">HEIGHT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#PROPERTIES\" title=\"class or interface in java.awt.image\">PROPERTIES</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#SOMEBITS\" title=\"class or interface in java.awt.image\">SOMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#WIDTH\" title=\"class or interface in java.awt.image\">WIDTH</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#KarelWorld--\">KarelWorld</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#add-stanford.karel.KarelInterface-\">add</a></span>(<a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a>&nbsp;karel)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#adjacentPoint-int-int-int-\">adjacentPoint</a></span>(int&nbsp;x,\n             int&nbsp;y,\n             int&nbsp;dir)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#adjacentPoint-java.awt.Point-int-\">adjacentPoint</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt,\n             int&nbsp;dir)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#adjustBeepers-int-int-\">adjustBeepers</a></span>(int&nbsp;nBeepers,\n             int&nbsp;delta)</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#beeperBagCommand--\">beeperBagCommand</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#beeperCommand--\">beeperCommand</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#beeperLabel-int-\">beeperLabel</a></span>(int&nbsp;n)</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#checkWall-int-int-int-\">checkWall</a></span>(int&nbsp;x,\n         int&nbsp;y,\n         int&nbsp;dir)</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#checkWall-java.awt.Point-int-\">checkWall</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt,\n         int&nbsp;dir)</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#clearWall-int-int-int-\">clearWall</a></span>(int&nbsp;x,\n         int&nbsp;y,\n         int&nbsp;dir)</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#clearWall-java.awt.Point-int-\">clearWall</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt,\n         int&nbsp;dir)</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#componentResizedHook--\">componentResizedHook</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#createImage-int-int-\">createImage</a></span>(int&nbsp;width,\n           int&nbsp;height)</code>&nbsp;</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#directionName-int-\">directionName</a></span>(int&nbsp;dir)</code>&nbsp;</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#drawBeeper-java.awt.Graphics-int-int-int-int-int-java.awt.Component-\">drawBeeper</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g,\n          int&nbsp;x,\n          int&nbsp;y,\n          int&nbsp;size,\n          int&nbsp;n,\n          int&nbsp;border,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp)</code>&nbsp;</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#drawBeeper-java.awt.Graphics-int-int-int-java.lang.String-int-java.awt.Component-\">drawBeeper</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g,\n          int&nbsp;x,\n          int&nbsp;y,\n          int&nbsp;size,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;label,\n          int&nbsp;border,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp)</code>&nbsp;</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#drawBeeperForStyle-java.awt.Graphics-int-int-int-int-int-\">drawBeeperForStyle</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g,\n                  int&nbsp;x,\n                  int&nbsp;y,\n                  int&nbsp;size,\n                  int&nbsp;n,\n                  int&nbsp;border)</code>&nbsp;</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#drawCorner-java.awt.Graphics-int-int-java.awt.Point-\">drawCorner</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g,\n          int&nbsp;x,\n          int&nbsp;y,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt)</code>&nbsp;</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#drawCornerMarker-java.awt.Graphics-int-int-\">drawCornerMarker</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g,\n                int&nbsp;x,\n                int&nbsp;y)</code>&nbsp;</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#drawFancyKarel-java.awt.Graphics-int-int-int-int-\">drawFancyKarel</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g,\n              int&nbsp;x,\n              int&nbsp;y,\n              int&nbsp;dir,\n              int&nbsp;size)</code>&nbsp;</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#drawFancyKarel-java.awt.Graphics-int-int-int-int-boolean-\">drawFancyKarel</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g,\n              int&nbsp;x,\n              int&nbsp;y,\n              int&nbsp;dir,\n              int&nbsp;size,\n              boolean&nbsp;msKarel)</code>&nbsp;</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#drawFancyKarel-java.awt.Graphics-int-int-int-int-java.awt.Color-\">drawFancyKarel</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g,\n              int&nbsp;x,\n              int&nbsp;y,\n              int&nbsp;dir,\n              int&nbsp;size,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>&nbsp;</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#drawFancyKarel-java.awt.Graphics-int-int-int-int-java.awt.Color-boolean-\">drawFancyKarel</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g,\n              int&nbsp;x,\n              int&nbsp;y,\n              int&nbsp;dir,\n              int&nbsp;size,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color,\n              boolean&nbsp;msKarel)</code>&nbsp;</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#drawKarel-java.awt.Graphics-int-int-int-int-\">drawKarel</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g,\n         int&nbsp;x,\n         int&nbsp;y,\n         int&nbsp;dir,\n         int&nbsp;size)</code>&nbsp;</td>\n</tr>\n<tr id=\"i24\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#drawMarkedCorner-java.awt.Graphics-int-int-int-\">drawMarkedCorner</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g,\n                int&nbsp;x,\n                int&nbsp;y,\n                int&nbsp;size)</code>&nbsp;</td>\n</tr>\n<tr id=\"i25\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#drawSimpleKarel-java.awt.Graphics-int-int-int-int-\">drawSimpleKarel</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g,\n               int&nbsp;x,\n               int&nbsp;y,\n               int&nbsp;dir,\n               int&nbsp;size)</code>&nbsp;</td>\n</tr>\n<tr id=\"i26\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#forceSquareSize-int-\">forceSquareSize</a></span>(int&nbsp;size)</code>&nbsp;</td>\n</tr>\n<tr id=\"i27\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#getAlignment--\">getAlignment</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i28\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#getBeepersOnCorner-int-int-\">getBeepersOnCorner</a></span>(int&nbsp;x,\n                  int&nbsp;y)</code>&nbsp;</td>\n</tr>\n<tr id=\"i29\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#getBeepersOnCorner-java.awt.Point-\">getBeepersOnCorner</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt)</code>&nbsp;</td>\n</tr>\n<tr id=\"i30\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#getColumns--\">getColumns</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i31\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#getCornerColor-int-int-\">getCornerColor</a></span>(int&nbsp;x,\n              int&nbsp;y)</code>&nbsp;</td>\n</tr>\n<tr id=\"i32\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#getCornerColor-java.awt.Point-\">getCornerColor</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt)</code>&nbsp;</td>\n</tr>\n<tr id=\"i33\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#getEditMode--\">getEditMode</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i34\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#getHeight--\">getHeight</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i35\" class=\"rowColor\">\n<td class=\"colFirst\"><code>&lt;K extends <a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a>&gt;<br>K</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#getKarel--\">getKarel</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i36\" class=\"altColor\">\n<td class=\"colFirst\"><code>&lt;K extends <a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a>&gt;<br>K</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#getKarel-int-\">getKarel</a></span>(int&nbsp;k)</code>&nbsp;</td>\n</tr>\n<tr id=\"i37\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#getKarelCount--\">getKarelCount</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i38\" class=\"altColor\">\n<td class=\"colFirst\"><code>&lt;K extends <a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a>&gt;<br>K</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#getKarelOnSquare-int-int-\">getKarelOnSquare</a></span>(int&nbsp;x,\n                int&nbsp;y)</code>&nbsp;</td>\n</tr>\n<tr id=\"i39\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#getLook--\">getLook</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i40\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected stanford.karel.KarelWorldMonitor</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#getMonitor--\">getMonitor</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i41\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#getNumberSquaresFlag--\">getNumberSquaresFlag</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i42\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#getPathname--\">getPathname</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i43\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#getPathName--\">getPathName</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i44\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#getRepaintFlag--\">getRepaintFlag</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i45\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#getRows--\">getRows</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i46\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#getSize--\">getSize</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i47\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#getSquareSize--\">getSquareSize</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i48\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#getTitle--\">getTitle</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i49\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#getWidth--\">getWidth</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i50\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#ignoreCommand--\">ignoreCommand</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i51\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#init-int-int-\">init</a></span>(int&nbsp;cols,\n    int&nbsp;rows)</code>&nbsp;</td>\n</tr>\n<tr id=\"i52\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#labelBeeper-java.awt.Graphics-int-int-int-java.lang.String-java.awt.Component-\">labelBeeper</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g,\n           int&nbsp;x,\n           int&nbsp;y,\n           int&nbsp;size,\n           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;label,\n           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp)</code>&nbsp;</td>\n</tr>\n<tr id=\"i53\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#leftFrom-int-\">leftFrom</a></span>(int&nbsp;dir)</code>&nbsp;</td>\n</tr>\n<tr id=\"i54\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#load-java.io.File-\">load</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)</code>&nbsp;</td>\n</tr>\n<tr id=\"i55\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#load-java.io.Reader-\">load</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Reader.html?is-external=true\" title=\"class or interface in java.io\">Reader</a>&nbsp;rd)</code>&nbsp;</td>\n</tr>\n<tr id=\"i56\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#load-java.lang.String-\">load</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;pathname)</code>&nbsp;</td>\n</tr>\n<tr id=\"i57\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#load-java.lang.String:A-\">load</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;lines)</code>&nbsp;</td>\n</tr>\n<tr id=\"i58\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#mouseDraggedHook-java.awt.event.MouseEvent-\">mouseDraggedHook</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</code>&nbsp;</td>\n</tr>\n<tr id=\"i59\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#mousePressedHook-java.awt.event.MouseEvent-\">mousePressedHook</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</code>&nbsp;</td>\n</tr>\n<tr id=\"i60\" class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#oppositeDirection-int-\">oppositeDirection</a></span>(int&nbsp;dir)</code>&nbsp;</td>\n</tr>\n<tr id=\"i61\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#outOfBounds-int-int-\">outOfBounds</a></span>(int&nbsp;x,\n           int&nbsp;y)</code>&nbsp;</td>\n</tr>\n<tr id=\"i62\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#outOfBounds-java.awt.Point-\">outOfBounds</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt)</code>&nbsp;</td>\n</tr>\n<tr id=\"i63\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#paintComponent-java.awt.Graphics-\">paintComponent</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g)</code>&nbsp;</td>\n</tr>\n<tr id=\"i64\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#remove-stanford.karel.KarelInterface-\">remove</a></span>(<a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a>&nbsp;karel)</code>&nbsp;</td>\n</tr>\n<tr id=\"i65\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#repaint--\">repaint</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i66\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#reset--\">reset</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i67\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#rightFrom-int-\">rightFrom</a></span>(int&nbsp;dir)</code>&nbsp;</td>\n</tr>\n<tr id=\"i68\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#save--\">save</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i69\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#saveToImage-java.io.File-\">saveToImage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)</code>\n<div class=\"block\">Saves an image of this Karel world to the given image file.</div>\n</td>\n</tr>\n<tr id=\"i70\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#saveToImage-java.lang.String-\">saveToImage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>\n<div class=\"block\">Saves an image of this Karel world to the given image file.</div>\n</td>\n</tr>\n<tr id=\"i71\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#setAlignment-int-\">setAlignment</a></span>(int&nbsp;alignment)</code>&nbsp;</td>\n</tr>\n<tr id=\"i72\" class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#setBeepers-int-int-\">setBeepers</a></span>(int&nbsp;nBeepers,\n          int&nbsp;delta)</code>&nbsp;</td>\n</tr>\n<tr id=\"i73\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#setBeepersOnCorner-int-int-int-\">setBeepersOnCorner</a></span>(int&nbsp;x,\n                  int&nbsp;y,\n                  int&nbsp;nBeepers)</code>&nbsp;</td>\n</tr>\n<tr id=\"i74\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#setBeepersOnCorner-java.awt.Point-int-\">setBeepersOnCorner</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt,\n                  int&nbsp;nBeepers)</code>&nbsp;</td>\n</tr>\n<tr id=\"i75\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#setCornerColor-int-int-java.awt.Color-\">setCornerColor</a></span>(int&nbsp;x,\n              int&nbsp;y,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>&nbsp;</td>\n</tr>\n<tr id=\"i76\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#setCornerColor-java.awt.Point-java.awt.Color-\">setCornerColor</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>&nbsp;</td>\n</tr>\n<tr id=\"i77\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#setDisplayFlag-boolean-\">setDisplayFlag</a></span>(boolean&nbsp;flag)</code>&nbsp;</td>\n</tr>\n<tr id=\"i78\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#setDisplayOneFlag-boolean-\">setDisplayOneFlag</a></span>(boolean&nbsp;flag)</code>&nbsp;</td>\n</tr>\n<tr id=\"i79\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#setEditMode-boolean-\">setEditMode</a></span>(boolean&nbsp;flag)</code>&nbsp;</td>\n</tr>\n<tr id=\"i80\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#setInteractiveMode-boolean-\">setInteractiveMode</a></span>(boolean&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i81\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#setLook-int-\">setLook</a></span>(int&nbsp;look)</code>&nbsp;</td>\n</tr>\n<tr id=\"i82\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#setMonitor-stanford.karel.KarelWorldMonitor-\">setMonitor</a></span>(stanford.karel.KarelWorldMonitor&nbsp;monitor)</code>&nbsp;</td>\n</tr>\n<tr id=\"i83\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#setMsKarel-boolean-\">setMsKarel</a></span>(boolean&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i84\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#setNumberSquaresFlag-boolean-\">setNumberSquaresFlag</a></span>(boolean&nbsp;flag)</code>&nbsp;</td>\n</tr>\n<tr id=\"i85\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#setPathname-java.lang.String-\">setPathname</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;pathname)</code>&nbsp;</td>\n</tr>\n<tr id=\"i86\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#setPathName-java.lang.String-\">setPathName</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;pathname)</code>&nbsp;</td>\n</tr>\n<tr id=\"i87\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#setRepaintFlag-boolean-\">setRepaintFlag</a></span>(boolean&nbsp;flag)</code>&nbsp;</td>\n</tr>\n<tr id=\"i88\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#setSize-int-int-\">setSize</a></span>(int&nbsp;width,\n       int&nbsp;height)</code>&nbsp;</td>\n</tr>\n<tr id=\"i89\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#setTitle-java.lang.String-\">setTitle</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;title)</code>&nbsp;</td>\n</tr>\n<tr id=\"i90\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#setToDefaultSize--\">setToDefaultSize</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i91\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#setWall-int-int-int-\">setWall</a></span>(int&nbsp;x,\n       int&nbsp;y,\n       int&nbsp;dir)</code>&nbsp;</td>\n</tr>\n<tr id=\"i92\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#setWall-java.awt.Point-int-\">setWall</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt,\n       int&nbsp;dir)</code>&nbsp;</td>\n</tr>\n<tr id=\"i93\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/BufferedImage.html?is-external=true\" title=\"class or interface in java.awt.image\">BufferedImage</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#toImage--\">toImage</a></span>()</code>\n<div class=\"block\">Converts this Karel world into an image that is returned.</div>\n</td>\n</tr>\n<tr id=\"i94\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#trace--\">trace</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i95\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#update-java.awt.Graphics-\">update</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g)</code>&nbsp;</td>\n</tr>\n<tr id=\"i96\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#updateContents-java.awt.Graphics-java.awt.Point-\">updateContents</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt)</code>&nbsp;</td>\n</tr>\n<tr id=\"i97\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#updateCorner-int-int-\">updateCorner</a></span>(int&nbsp;x,\n            int&nbsp;y)</code>&nbsp;</td>\n</tr>\n<tr id=\"i98\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#updateCorner-java.awt.Point-\">updateCorner</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt)</code>&nbsp;</td>\n</tr>\n<tr id=\"i99\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#updateEditMode-boolean-\">updateEditMode</a></span>(boolean&nbsp;flag)</code>&nbsp;</td>\n</tr>\n<tr id=\"i100\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/KarelWorld.html#updateWalls-java.awt.Graphics-java.awt.Point-\">updateWalls</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g,\n           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addAncestorListener-javax.swing.event.AncestorListener-\" title=\"class or interface in javax.swing\">addAncestorListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addNotify--\" title=\"class or interface in javax.swing\">addNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addVetoableChangeListener-java.beans.VetoableChangeListener-\" title=\"class or interface in javax.swing\">addVetoableChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#computeVisibleRect-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">computeVisibleRect</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#contains-int-int-\" title=\"class or interface in javax.swing\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#createToolTip--\" title=\"class or interface in javax.swing\">createToolTip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#disable--\" title=\"class or interface in javax.swing\">disable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#enable--\" title=\"class or interface in javax.swing\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-boolean-boolean-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-char-char-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-int-int-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#fireVetoableChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in javax.swing\">fireVetoableChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getActionForKeyStroke-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">getActionForKeyStroke</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getActionMap--\" title=\"class or interface in javax.swing\">getActionMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAlignmentX--\" title=\"class or interface in javax.swing\">getAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAlignmentY--\" title=\"class or interface in javax.swing\">getAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAncestorListeners--\" title=\"class or interface in javax.swing\">getAncestorListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAutoscrolls--\" title=\"class or interface in javax.swing\">getAutoscrolls</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBaseline-int-int-\" title=\"class or interface in javax.swing\">getBaseline</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBaselineResizeBehavior--\" title=\"class or interface in javax.swing\">getBaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBorder--\" title=\"class or interface in javax.swing\">getBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBounds-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getClientProperty-java.lang.Object-\" title=\"class or interface in javax.swing\">getClientProperty</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getComponentGraphics-java.awt.Graphics-\" title=\"class or interface in javax.swing\">getComponentGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getComponentPopupMenu--\" title=\"class or interface in javax.swing\">getComponentPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getConditionForKeyStroke-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">getConditionForKeyStroke</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getDebugGraphicsOptions--\" title=\"class or interface in javax.swing\">getDebugGraphicsOptions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getDefaultLocale--\" title=\"class or interface in javax.swing\">getDefaultLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getFontMetrics-java.awt.Font-\" title=\"class or interface in javax.swing\">getFontMetrics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getGraphics--\" title=\"class or interface in javax.swing\">getGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInheritsPopupMenu--\" title=\"class or interface in javax.swing\">getInheritsPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputMap--\" title=\"class or interface in javax.swing\">getInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputMap-int-\" title=\"class or interface in javax.swing\">getInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputVerifier--\" title=\"class or interface in javax.swing\">getInputVerifier</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInsets--\" title=\"class or interface in javax.swing\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInsets-java.awt.Insets-\" title=\"class or interface in javax.swing\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getListeners-java.lang.Class-\" title=\"class or interface in javax.swing\">getListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getLocation-java.awt.Point-\" title=\"class or interface in javax.swing\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getMaximumSize--\" title=\"class or interface in javax.swing\">getMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getMinimumSize--\" title=\"class or interface in javax.swing\">getMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getNextFocusableComponent--\" title=\"class or interface in javax.swing\">getNextFocusableComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getPopupLocation-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">getPopupLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getPreferredSize--\" title=\"class or interface in javax.swing\">getPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getRegisteredKeyStrokes--\" title=\"class or interface in javax.swing\">getRegisteredKeyStrokes</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getRootPane--\" title=\"class or interface in javax.swing\">getRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getToolTipLocation-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">getToolTipLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getToolTipText--\" title=\"class or interface in javax.swing\">getToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getToolTipText-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">getToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getTopLevelAncestor--\" title=\"class or interface in javax.swing\">getTopLevelAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getTransferHandler--\" title=\"class or interface in javax.swing\">getTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getUIClassID--\" title=\"class or interface in javax.swing\">getUIClassID</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVerifyInputWhenFocusTarget--\" title=\"class or interface in javax.swing\">getVerifyInputWhenFocusTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVetoableChangeListeners--\" title=\"class or interface in javax.swing\">getVetoableChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVisibleRect--\" title=\"class or interface in javax.swing\">getVisibleRect</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getX--\" title=\"class or interface in javax.swing\">getX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getY--\" title=\"class or interface in javax.swing\">getY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#grabFocus--\" title=\"class or interface in javax.swing\">grabFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#hide--\" title=\"class or interface in javax.swing\">hide</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isDoubleBuffered--\" title=\"class or interface in javax.swing\">isDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isLightweightComponent-java.awt.Component-\" title=\"class or interface in javax.swing\">isLightweightComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isManagingFocus--\" title=\"class or interface in javax.swing\">isManagingFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isOpaque--\" title=\"class or interface in javax.swing\">isOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isOptimizedDrawingEnabled--\" title=\"class or interface in javax.swing\">isOptimizedDrawingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingForPrint--\" title=\"class or interface in javax.swing\">isPaintingForPrint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingOrigin--\" title=\"class or interface in javax.swing\">isPaintingOrigin</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingTile--\" title=\"class or interface in javax.swing\">isPaintingTile</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isRequestFocusEnabled--\" title=\"class or interface in javax.swing\">isRequestFocusEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isValidateRoot--\" title=\"class or interface in javax.swing\">isValidateRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paint-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintBorder-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintChildren-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintChildren</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintImmediately-int-int-int-int-\" title=\"class or interface in javax.swing\">paintImmediately</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintImmediately-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">paintImmediately</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paramString--\" title=\"class or interface in javax.swing\">paramString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#print-java.awt.Graphics-\" title=\"class or interface in javax.swing\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printAll-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printBorder-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printChildren-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printChildren</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printComponent-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processComponentKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in javax.swing\">processComponentKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processKeyBinding-javax.swing.KeyStroke-java.awt.event.KeyEvent-int-boolean-\" title=\"class or interface in javax.swing\">processKeyBinding</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in javax.swing\">processKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processMouseEvent-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">processMouseEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processMouseMotionEvent-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">processMouseMotionEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#putClientProperty-java.lang.Object-java.lang.Object-\" title=\"class or interface in javax.swing\">putClientProperty</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#registerKeyboardAction-java.awt.event.ActionListener-javax.swing.KeyStroke-int-\" title=\"class or interface in javax.swing\">registerKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#registerKeyboardAction-java.awt.event.ActionListener-java.lang.String-javax.swing.KeyStroke-int-\" title=\"class or interface in javax.swing\">registerKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#removeAncestorListener-javax.swing.event.AncestorListener-\" title=\"class or interface in javax.swing\">removeAncestorListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#removeNotify--\" title=\"class or interface in javax.swing\">removeNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#removeVetoableChangeListener-java.beans.VetoableChangeListener-\" title=\"class or interface in javax.swing\">removeVetoableChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#repaint-long-int-int-int-int-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#repaint-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestDefaultFocus--\" title=\"class or interface in javax.swing\">requestDefaultFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocus--\" title=\"class or interface in javax.swing\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocus-boolean-\" title=\"class or interface in javax.swing\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocusInWindow--\" title=\"class or interface in javax.swing\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocusInWindow-boolean-\" title=\"class or interface in javax.swing\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#resetKeyboardActions--\" title=\"class or interface in javax.swing\">resetKeyboardActions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#reshape-int-int-int-int-\" title=\"class or interface in javax.swing\">reshape</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#revalidate--\" title=\"class or interface in javax.swing\">revalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#scrollRectToVisible-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">scrollRectToVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setActionMap-javax.swing.ActionMap-\" title=\"class or interface in javax.swing\">setActionMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAlignmentX-float-\" title=\"class or interface in javax.swing\">setAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAlignmentY-float-\" title=\"class or interface in javax.swing\">setAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAutoscrolls-boolean-\" title=\"class or interface in javax.swing\">setAutoscrolls</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setBackground-java.awt.Color-\" title=\"class or interface in javax.swing\">setBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setBorder-javax.swing.border.Border-\" title=\"class or interface in javax.swing\">setBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setComponentPopupMenu-javax.swing.JPopupMenu-\" title=\"class or interface in javax.swing\">setComponentPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDebugGraphicsOptions-int-\" title=\"class or interface in javax.swing\">setDebugGraphicsOptions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDefaultLocale-java.util.Locale-\" title=\"class or interface in javax.swing\">setDefaultLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDoubleBuffered-boolean-\" title=\"class or interface in javax.swing\">setDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setEnabled-boolean-\" title=\"class or interface in javax.swing\">setEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setFocusTraversalKeys-int-java.util.Set-\" title=\"class or interface in javax.swing\">setFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setFont-java.awt.Font-\" title=\"class or interface in javax.swing\">setFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setForeground-java.awt.Color-\" title=\"class or interface in javax.swing\">setForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInheritsPopupMenu-boolean-\" title=\"class or interface in javax.swing\">setInheritsPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInputMap-int-javax.swing.InputMap-\" title=\"class or interface in javax.swing\">setInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInputVerifier-javax.swing.InputVerifier-\" title=\"class or interface in javax.swing\">setInputVerifier</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setMaximumSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setMinimumSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setNextFocusableComponent-java.awt.Component-\" title=\"class or interface in javax.swing\">setNextFocusableComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setOpaque-boolean-\" title=\"class or interface in javax.swing\">setOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setPreferredSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setRequestFocusEnabled-boolean-\" title=\"class or interface in javax.swing\">setRequestFocusEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setToolTipText-java.lang.String-\" title=\"class or interface in javax.swing\">setToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setTransferHandler-javax.swing.TransferHandler-\" title=\"class or interface in javax.swing\">setTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setUI-javax.swing.plaf.ComponentUI-\" title=\"class or interface in javax.swing\">setUI</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setVerifyInputWhenFocusTarget-boolean-\" title=\"class or interface in javax.swing\">setVerifyInputWhenFocusTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setVisible-boolean-\" title=\"class or interface in javax.swing\">setVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#unregisterKeyboardAction-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">unregisterKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#updateUI--\" title=\"class or interface in javax.swing\">updateUI</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.lang.String-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">addContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addImpl-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">addImpl</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#applyComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">applyComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#areFocusTraversalKeysSet-int-\" title=\"class or interface in java.awt\">areFocusTraversalKeysSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#countComponents--\" title=\"class or interface in java.awt\">countComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#deliverEvent-java.awt.Event-\" title=\"class or interface in java.awt\">deliverEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#doLayout--\" title=\"class or interface in java.awt\">doLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-int-int-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponent-int-\" title=\"class or interface in java.awt\">getComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-int-int-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentCount--\" title=\"class or interface in java.awt\">getComponentCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponents--\" title=\"class or interface in java.awt\">getComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentZOrder-java.awt.Component-\" title=\"class or interface in java.awt\">getComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getContainerListeners--\" title=\"class or interface in java.awt\">getContainerListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalKeys-int-\" title=\"class or interface in java.awt\">getFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalPolicy--\" title=\"class or interface in java.awt\">getFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getLayout--\" title=\"class or interface in java.awt\">getLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMousePosition-boolean-\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#insets--\" title=\"class or interface in java.awt\">insets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#invalidate--\" title=\"class or interface in java.awt\">invalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isAncestorOf-java.awt.Component-\" title=\"class or interface in java.awt\">isAncestorOf</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot--\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot-java.awt.Container-\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicyProvider--\" title=\"class or interface in java.awt\">isFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicySet--\" title=\"class or interface in java.awt\">isFocusTraversalPolicySet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#layout--\" title=\"class or interface in java.awt\">layout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintStream-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintWriter-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#locate-int-int-\" title=\"class or interface in java.awt\">locate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#minimumSize--\" title=\"class or interface in java.awt\">minimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paintComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#preferredSize--\" title=\"class or interface in java.awt\">preferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#printComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">printComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processContainerEvent-java.awt.event.ContainerEvent-\" title=\"class or interface in java.awt\">processContainerEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">processEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#remove-java.awt.Component-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#remove-int-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeAll--\" title=\"class or interface in java.awt\">removeAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">removeContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setComponentZOrder-java.awt.Component-int-\" title=\"class or interface in java.awt\">setComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusCycleRoot-boolean-\" title=\"class or interface in java.awt\">setFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicy-java.awt.FocusTraversalPolicy-\" title=\"class or interface in java.awt\">setFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicyProvider-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setLayout-java.awt.LayoutManager-\" title=\"class or interface in java.awt\">setLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#transferFocusDownCycle--\" title=\"class or interface in java.awt\">transferFocusDownCycle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validate--\" title=\"class or interface in java.awt\">validate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validateTree--\" title=\"class or interface in java.awt\">validateTree</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#action-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">action</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#add-java.awt.PopupMenu-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">addComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">addFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">addHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">addHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">addInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">addKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">addMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">addMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">addMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#bounds--\" title=\"class or interface in java.awt\">bounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#coalesceEvents-java.awt.AWTEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">coalesceEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-java.awt.Point-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-java.awt.image.ImageProducer-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-java.awt.ImageCapabilities-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disableEvents-long-\" title=\"class or interface in java.awt\">disableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#dispatchEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">dispatchEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable-boolean-\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableEvents-long-\" title=\"class or interface in java.awt\">enableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableInputMethods-boolean-\" title=\"class or interface in java.awt\">enableInputMethods</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-byte-byte-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-double-double-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-float-float-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-long-long-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-short-short-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getAccessibleContext--\" title=\"class or interface in java.awt\">getAccessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBackground--\" title=\"class or interface in java.awt\">getBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds--\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getColorModel--\" title=\"class or interface in java.awt\">getColorModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentListeners--\" title=\"class or interface in java.awt\">getComponentListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentOrientation--\" title=\"class or interface in java.awt\">getComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getCursor--\" title=\"class or interface in java.awt\">getCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getDropTarget--\" title=\"class or interface in java.awt\">getDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusCycleRootAncestor--\" title=\"class or interface in java.awt\">getFocusCycleRootAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusListeners--\" title=\"class or interface in java.awt\">getFocusListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusTraversalKeysEnabled--\" title=\"class or interface in java.awt\">getFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFont--\" title=\"class or interface in java.awt\">getFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getForeground--\" title=\"class or interface in java.awt\">getForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getGraphicsConfiguration--\" title=\"class or interface in java.awt\">getGraphicsConfiguration</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyBoundsListeners--\" title=\"class or interface in java.awt\">getHierarchyBoundsListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyListeners--\" title=\"class or interface in java.awt\">getHierarchyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getIgnoreRepaint--\" title=\"class or interface in java.awt\">getIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputContext--\" title=\"class or interface in java.awt\">getInputContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodListeners--\" title=\"class or interface in java.awt\">getInputMethodListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodRequests--\" title=\"class or interface in java.awt\">getInputMethodRequests</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getKeyListeners--\" title=\"class or interface in java.awt\">getKeyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocale--\" title=\"class or interface in java.awt\">getLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation--\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocationOnScreen--\" title=\"class or interface in java.awt\">getLocationOnScreen</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseListeners--\" title=\"class or interface in java.awt\">getMouseListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseMotionListeners--\" title=\"class or interface in java.awt\">getMouseMotionListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMousePosition--\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseWheelListeners--\" title=\"class or interface in java.awt\">getMouseWheelListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getName--\" title=\"class or interface in java.awt\">getName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getParent--\" title=\"class or interface in java.awt\">getParent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPeer--\" title=\"class or interface in java.awt\">getPeer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners--\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners-java.lang.String-\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getToolkit--\" title=\"class or interface in java.awt\">getToolkit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getTreeLock--\" title=\"class or interface in java.awt\">getTreeLock</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#gotFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">gotFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#handleEvent-java.awt.Event-\" title=\"class or interface in java.awt\">handleEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hasFocus--\" title=\"class or interface in java.awt\">hasFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#imageUpdate-java.awt.Image-int-int-int-int-int-\" title=\"class or interface in java.awt\">imageUpdate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#inside-int-int-\" title=\"class or interface in java.awt\">inside</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isBackgroundSet--\" title=\"class or interface in java.awt\">isBackgroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isCursorSet--\" title=\"class or interface in java.awt\">isCursorSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDisplayable--\" title=\"class or interface in java.awt\">isDisplayable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isEnabled--\" title=\"class or interface in java.awt\">isEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusable--\" title=\"class or interface in java.awt\">isFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusOwner--\" title=\"class or interface in java.awt\">isFocusOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusTraversable--\" title=\"class or interface in java.awt\">isFocusTraversable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFontSet--\" title=\"class or interface in java.awt\">isFontSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isForegroundSet--\" title=\"class or interface in java.awt\">isForegroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isLightweight--\" title=\"class or interface in java.awt\">isLightweight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMaximumSizeSet--\" title=\"class or interface in java.awt\">isMaximumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMinimumSizeSet--\" title=\"class or interface in java.awt\">isMinimumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isPreferredSizeSet--\" title=\"class or interface in java.awt\">isPreferredSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isShowing--\" title=\"class or interface in java.awt\">isShowing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isValid--\" title=\"class or interface in java.awt\">isValid</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isVisible--\" title=\"class or interface in java.awt\">isVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyDown-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyUp-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list--\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintStream-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintWriter-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#location--\" title=\"class or interface in java.awt\">location</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#lostFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">lostFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDown-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDrag-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDrag</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseEnter-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseEnter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseExit-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseExit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseMove-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseMove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseUp-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#move-int-int-\" title=\"class or interface in java.awt\">move</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#nextFocus--\" title=\"class or interface in java.awt\">nextFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#paintAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#postEvent-java.awt.Event-\" title=\"class or interface in java.awt\">postEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processComponentEvent-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt\">processComponentEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processFocusEvent-java.awt.event.FocusEvent-\" title=\"class or interface in java.awt\">processFocusEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyBoundsEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyBoundsEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processInputMethodEvent-java.awt.event.InputMethodEvent-\" title=\"class or interface in java.awt\">processInputMethodEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseWheelEvent-java.awt.event.MouseWheelEvent-\" title=\"class or interface in java.awt\">processMouseWheelEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#remove-java.awt.MenuComponent-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">removeComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">removeFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">removeHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">removeHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">removeInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">removeKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">removeMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">removeMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">removeMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-int-int-int-int-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-long-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#resize-java.awt.Dimension-\" title=\"class or interface in java.awt\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#resize-int-int-\" title=\"class or interface in java.awt\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-int-int-int-int-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">setComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setCursor-java.awt.Cursor-\" title=\"class or interface in java.awt\">setCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setDropTarget-java.awt.dnd.DropTarget-\" title=\"class or interface in java.awt\">setDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusable-boolean-\" title=\"class or interface in java.awt\">setFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusTraversalKeysEnabled-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setIgnoreRepaint-boolean-\" title=\"class or interface in java.awt\">setIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocale-java.util.Locale-\" title=\"class or interface in java.awt\">setLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-int-int-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-java.awt.Point-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setName-java.lang.String-\" title=\"class or interface in java.awt\">setName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show--\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show-boolean-\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#size--\" title=\"class or interface in java.awt\">size</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#toString--\" title=\"class or interface in java.awt\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocus--\" title=\"class or interface in java.awt\">transferFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusBackward--\" title=\"class or interface in java.awt\">transferFocusBackward</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusUpCycle--\" title=\"class or interface in java.awt\">transferFocusUpCycle</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"NORTH\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>NORTH</h4>\n<pre>public static final&nbsp;int NORTH</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelWorld.NORTH\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"EAST\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>EAST</h4>\n<pre>public static final&nbsp;int EAST</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelWorld.EAST\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"SOUTH\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SOUTH</h4>\n<pre>public static final&nbsp;int SOUTH</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelWorld.SOUTH\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"WEST\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>WEST</h4>\n<pre>public static final&nbsp;int WEST</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelWorld.WEST\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"NORTHEAST\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>NORTHEAST</h4>\n<pre>public static final&nbsp;int NORTHEAST</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelWorld.NORTHEAST\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"NORTHWEST\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>NORTHWEST</h4>\n<pre>public static final&nbsp;int NORTHWEST</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelWorld.NORTHWEST\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"SOUTHEAST\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SOUTHEAST</h4>\n<pre>public static final&nbsp;int SOUTHEAST</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelWorld.SOUTHEAST\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"SOUTHWEST\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SOUTHWEST</h4>\n<pre>public static final&nbsp;int SOUTHWEST</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelWorld.SOUTHWEST\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"CENTER\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>CENTER</h4>\n<pre>public static final&nbsp;int CENTER</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelWorld.CENTER\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"INFINITE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>INFINITE</h4>\n<pre>public static final&nbsp;int INFINITE</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelWorld.INFINITE\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"PLUS1\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>PLUS1</h4>\n<pre>public static final&nbsp;int PLUS1</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelWorld.PLUS1\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MINUS1\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MINUS1</h4>\n<pre>public static final&nbsp;int MINUS1</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelWorld.MINUS1\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"BLANKB\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>BLANKB</h4>\n<pre>public static final&nbsp;int BLANKB</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelWorld.BLANKB\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"SIMPLE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SIMPLE</h4>\n<pre>public static final&nbsp;int SIMPLE</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelWorld.SIMPLE\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"FANCY\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>FANCY</h4>\n<pre>public static final&nbsp;int FANCY</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelWorld.FANCY\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"LEFT_NUMBER_MARGIN\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>LEFT_NUMBER_MARGIN</h4>\n<pre>public static final&nbsp;int LEFT_NUMBER_MARGIN</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelWorld.LEFT_NUMBER_MARGIN\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"BOTTOM_NUMBER_MARGIN\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>BOTTOM_NUMBER_MARGIN</h4>\n<pre>public static final&nbsp;int BOTTOM_NUMBER_MARGIN</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelWorld.BOTTOM_NUMBER_MARGIN\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"DOUBLE_WALL_THRESHOLD\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>DOUBLE_WALL_THRESHOLD</h4>\n<pre>public static final&nbsp;int DOUBLE_WALL_THRESHOLD</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelWorld.DOUBLE_WALL_THRESHOLD\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"CROSS_THRESHOLD\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>CROSS_THRESHOLD</h4>\n<pre>public static final&nbsp;int CROSS_THRESHOLD</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelWorld.CROSS_THRESHOLD\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"NUMBER_THRESHOLD\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>NUMBER_THRESHOLD</h4>\n<pre>public static final&nbsp;int NUMBER_THRESHOLD</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelWorld.NUMBER_THRESHOLD\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"NUMBER_FONT\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>NUMBER_FONT</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a> NUMBER_FONT</pre>\n</li>\n</ul>\n<a name=\"BEEPER_NUMBER_FONT\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>BEEPER_NUMBER_FONT</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a> BEEPER_NUMBER_FONT</pre>\n</li>\n</ul>\n<a name=\"WALL_FRACTION\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>WALL_FRACTION</h4>\n<pre>public static final&nbsp;double WALL_FRACTION</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelWorld.WALL_FRACTION\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"WALL_TOLERANCE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>WALL_TOLERANCE</h4>\n<pre>public static final&nbsp;double WALL_TOLERANCE</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelWorld.WALL_TOLERANCE\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MAX_WIDTH\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MAX_WIDTH</h4>\n<pre>public static final&nbsp;int MAX_WIDTH</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelWorld.MAX_WIDTH\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MAX_HEIGHT\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MAX_HEIGHT</h4>\n<pre>public static final&nbsp;int MAX_HEIGHT</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelWorld.MAX_HEIGHT\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MAX_DISPLAY_WIDTH\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MAX_DISPLAY_WIDTH</h4>\n<pre>public static final&nbsp;int MAX_DISPLAY_WIDTH</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelWorld.MAX_DISPLAY_WIDTH\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MAX_DISPLAY_HEIGHT\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MAX_DISPLAY_HEIGHT</h4>\n<pre>public static final&nbsp;int MAX_DISPLAY_HEIGHT</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelWorld.MAX_DISPLAY_HEIGHT\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"TOKEN_TRACE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>TOKEN_TRACE</h4>\n<pre>public static final&nbsp;boolean TOKEN_TRACE</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelWorld.TOKEN_TRACE\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"BEEPER_COLOR\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>BEEPER_COLOR</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> BEEPER_COLOR</pre>\n</li>\n</ul>\n<a name=\"MARKED_COLOR\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MARKED_COLOR</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> MARKED_COLOR</pre>\n</li>\n</ul>\n<a name=\"BEEPER_BORDER\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>BEEPER_BORDER</h4>\n<pre>public static final&nbsp;int BEEPER_BORDER</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelWorld.BEEPER_BORDER\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"BEEPER_FONT_FAMILY\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>BEEPER_FONT_FAMILY</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> BEEPER_FONT_FAMILY</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelWorld.BEEPER_FONT_FAMILY\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MIN_FANCY\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MIN_FANCY</h4>\n<pre>public static final&nbsp;int MIN_FANCY</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelWorld.MIN_FANCY\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MIN_BEEPER\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MIN_BEEPER</h4>\n<pre>public static final&nbsp;int MIN_BEEPER</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelWorld.MIN_BEEPER\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MIN_LABEL\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MIN_LABEL</h4>\n<pre>public static final&nbsp;int MIN_LABEL</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelWorld.MIN_LABEL\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"BEEPER_FRACTION\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>BEEPER_FRACTION</h4>\n<pre>public static final&nbsp;double BEEPER_FRACTION</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelWorld.BEEPER_FRACTION\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"SIMPLE_FRACTION\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>SIMPLE_FRACTION</h4>\n<pre>public static final&nbsp;double SIMPLE_FRACTION</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.karel.KarelWorld.SIMPLE_FRACTION\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"KarelWorld--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>KarelWorld</h4>\n<pre>public&nbsp;KarelWorld()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"createImage-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createImage</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;createImage(int&nbsp;width,\n                         int&nbsp;height)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-int-int-\" title=\"class or interface in java.awt\">createImage</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"init-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>init</h4>\n<pre>public&nbsp;void&nbsp;init(int&nbsp;cols,\n                 int&nbsp;rows)</pre>\n</li>\n</ul>\n<a name=\"add-stanford.karel.KarelInterface-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>add</h4>\n<pre>public&nbsp;void&nbsp;add(<a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a>&nbsp;karel)</pre>\n</li>\n</ul>\n<a name=\"remove-stanford.karel.KarelInterface-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>remove</h4>\n<pre>public&nbsp;void&nbsp;remove(<a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a>&nbsp;karel)</pre>\n</li>\n</ul>\n<a name=\"getKarel--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getKarel</h4>\n<pre>public&nbsp;&lt;K extends <a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a>&gt;&nbsp;K&nbsp;getKarel()</pre>\n</li>\n</ul>\n<a name=\"getKarel-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getKarel</h4>\n<pre>public&nbsp;&lt;K extends <a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a>&gt;&nbsp;K&nbsp;getKarel(int&nbsp;k)</pre>\n</li>\n</ul>\n<a name=\"getKarelCount--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getKarelCount</h4>\n<pre>public&nbsp;int&nbsp;getKarelCount()</pre>\n</li>\n</ul>\n<a name=\"getKarelOnSquare-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getKarelOnSquare</h4>\n<pre>public&nbsp;&lt;K extends <a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a>&gt;&nbsp;K&nbsp;getKarelOnSquare(int&nbsp;x,\n                                                     int&nbsp;y)</pre>\n</li>\n</ul>\n<a name=\"setTitle-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setTitle</h4>\n<pre>public&nbsp;void&nbsp;setTitle(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;title)</pre>\n</li>\n</ul>\n<a name=\"getTitle--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getTitle</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getTitle()</pre>\n</li>\n</ul>\n<a name=\"setPathname-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setPathname</h4>\n<pre>public&nbsp;void&nbsp;setPathname(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;pathname)</pre>\n</li>\n</ul>\n<a name=\"getPathname--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getPathname</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getPathname()</pre>\n</li>\n</ul>\n<a name=\"setDisplayFlag-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setDisplayFlag</h4>\n<pre>public&nbsp;void&nbsp;setDisplayFlag(boolean&nbsp;flag)</pre>\n</li>\n</ul>\n<a name=\"setRepaintFlag-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setRepaintFlag</h4>\n<pre>public&nbsp;void&nbsp;setRepaintFlag(boolean&nbsp;flag)</pre>\n</li>\n</ul>\n<a name=\"getRepaintFlag--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getRepaintFlag</h4>\n<pre>public&nbsp;boolean&nbsp;getRepaintFlag()</pre>\n</li>\n</ul>\n<a name=\"getNumberSquaresFlag--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getNumberSquaresFlag</h4>\n<pre>public&nbsp;boolean&nbsp;getNumberSquaresFlag()</pre>\n</li>\n</ul>\n<a name=\"setNumberSquaresFlag-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setNumberSquaresFlag</h4>\n<pre>public&nbsp;void&nbsp;setNumberSquaresFlag(boolean&nbsp;flag)</pre>\n</li>\n</ul>\n<a name=\"getAlignment--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getAlignment</h4>\n<pre>public&nbsp;int&nbsp;getAlignment()</pre>\n</li>\n</ul>\n<a name=\"setAlignment-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setAlignment</h4>\n<pre>public&nbsp;void&nbsp;setAlignment(int&nbsp;alignment)</pre>\n</li>\n</ul>\n<a name=\"getLook--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getLook</h4>\n<pre>public&nbsp;int&nbsp;getLook()</pre>\n</li>\n</ul>\n<a name=\"setLook-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setLook</h4>\n<pre>public&nbsp;void&nbsp;setLook(int&nbsp;look)</pre>\n</li>\n</ul>\n<a name=\"setDisplayOneFlag-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setDisplayOneFlag</h4>\n<pre>public&nbsp;void&nbsp;setDisplayOneFlag(boolean&nbsp;flag)</pre>\n</li>\n</ul>\n<a name=\"getPathName--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getPathName</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getPathName()</pre>\n</li>\n</ul>\n<a name=\"setPathName-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setPathName</h4>\n<pre>public&nbsp;void&nbsp;setPathName(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;pathname)</pre>\n</li>\n</ul>\n<a name=\"getEditMode--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getEditMode</h4>\n<pre>public&nbsp;boolean&nbsp;getEditMode()</pre>\n</li>\n</ul>\n<a name=\"setEditMode-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setEditMode</h4>\n<pre>public&nbsp;void&nbsp;setEditMode(boolean&nbsp;flag)</pre>\n</li>\n</ul>\n<a name=\"updateEditMode-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>updateEditMode</h4>\n<pre>public&nbsp;void&nbsp;updateEditMode(boolean&nbsp;flag)</pre>\n</li>\n</ul>\n<a name=\"forceSquareSize-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>forceSquareSize</h4>\n<pre>public&nbsp;void&nbsp;forceSquareSize(int&nbsp;size)</pre>\n</li>\n</ul>\n<a name=\"reset--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>reset</h4>\n<pre>public&nbsp;void&nbsp;reset()</pre>\n</li>\n</ul>\n<a name=\"getSquareSize--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSquareSize</h4>\n<pre>public&nbsp;int&nbsp;getSquareSize()</pre>\n</li>\n</ul>\n<a name=\"getColumns--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getColumns</h4>\n<pre>public&nbsp;int&nbsp;getColumns()</pre>\n</li>\n</ul>\n<a name=\"getRows--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getRows</h4>\n<pre>public&nbsp;int&nbsp;getRows()</pre>\n</li>\n</ul>\n<a name=\"outOfBounds-java.awt.Point-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>outOfBounds</h4>\n<pre>public&nbsp;boolean&nbsp;outOfBounds(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt)</pre>\n</li>\n</ul>\n<a name=\"outOfBounds-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>outOfBounds</h4>\n<pre>public&nbsp;boolean&nbsp;outOfBounds(int&nbsp;x,\n                           int&nbsp;y)</pre>\n</li>\n</ul>\n<a name=\"getBeepersOnCorner-java.awt.Point-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getBeepersOnCorner</h4>\n<pre>public&nbsp;int&nbsp;getBeepersOnCorner(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt)</pre>\n</li>\n</ul>\n<a name=\"getBeepersOnCorner-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getBeepersOnCorner</h4>\n<pre>public&nbsp;int&nbsp;getBeepersOnCorner(int&nbsp;x,\n                              int&nbsp;y)</pre>\n</li>\n</ul>\n<a name=\"setBeepersOnCorner-java.awt.Point-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setBeepersOnCorner</h4>\n<pre>public&nbsp;void&nbsp;setBeepersOnCorner(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt,\n                               int&nbsp;nBeepers)</pre>\n</li>\n</ul>\n<a name=\"setBeepersOnCorner-int-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setBeepersOnCorner</h4>\n<pre>public&nbsp;void&nbsp;setBeepersOnCorner(int&nbsp;x,\n                               int&nbsp;y,\n                               int&nbsp;nBeepers)</pre>\n</li>\n</ul>\n<a name=\"adjustBeepers-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>adjustBeepers</h4>\n<pre>public static&nbsp;int&nbsp;adjustBeepers(int&nbsp;nBeepers,\n                                int&nbsp;delta)</pre>\n</li>\n</ul>\n<a name=\"setBeepers-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setBeepers</h4>\n<pre>public static&nbsp;int&nbsp;setBeepers(int&nbsp;nBeepers,\n                             int&nbsp;delta)</pre>\n</li>\n</ul>\n<a name=\"getCornerColor-java.awt.Point-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getCornerColor</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;getCornerColor(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt)</pre>\n</li>\n</ul>\n<a name=\"getCornerColor-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getCornerColor</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;getCornerColor(int&nbsp;x,\n                            int&nbsp;y)</pre>\n</li>\n</ul>\n<a name=\"setCornerColor-java.awt.Point-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setCornerColor</h4>\n<pre>public&nbsp;void&nbsp;setCornerColor(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt,\n                           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n</li>\n</ul>\n<a name=\"setCornerColor-int-int-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setCornerColor</h4>\n<pre>public&nbsp;void&nbsp;setCornerColor(int&nbsp;x,\n                           int&nbsp;y,\n                           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n</li>\n</ul>\n<a name=\"checkWall-java.awt.Point-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>checkWall</h4>\n<pre>public&nbsp;boolean&nbsp;checkWall(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt,\n                         int&nbsp;dir)</pre>\n</li>\n</ul>\n<a name=\"checkWall-int-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>checkWall</h4>\n<pre>public&nbsp;boolean&nbsp;checkWall(int&nbsp;x,\n                         int&nbsp;y,\n                         int&nbsp;dir)</pre>\n</li>\n</ul>\n<a name=\"setWall-java.awt.Point-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setWall</h4>\n<pre>public&nbsp;void&nbsp;setWall(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt,\n                    int&nbsp;dir)</pre>\n</li>\n</ul>\n<a name=\"setWall-int-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setWall</h4>\n<pre>public&nbsp;void&nbsp;setWall(int&nbsp;x,\n                    int&nbsp;y,\n                    int&nbsp;dir)</pre>\n</li>\n</ul>\n<a name=\"clearWall-java.awt.Point-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clearWall</h4>\n<pre>public&nbsp;void&nbsp;clearWall(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt,\n                      int&nbsp;dir)</pre>\n</li>\n</ul>\n<a name=\"clearWall-int-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clearWall</h4>\n<pre>public&nbsp;void&nbsp;clearWall(int&nbsp;x,\n                      int&nbsp;y,\n                      int&nbsp;dir)</pre>\n</li>\n</ul>\n<a name=\"updateCorner-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>updateCorner</h4>\n<pre>public&nbsp;void&nbsp;updateCorner(int&nbsp;x,\n                         int&nbsp;y)</pre>\n</li>\n</ul>\n<a name=\"updateCorner-java.awt.Point-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>updateCorner</h4>\n<pre>public&nbsp;void&nbsp;updateCorner(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt)</pre>\n</li>\n</ul>\n<a name=\"directionName-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>directionName</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;directionName(int&nbsp;dir)</pre>\n</li>\n</ul>\n<a name=\"leftFrom-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>leftFrom</h4>\n<pre>public static&nbsp;int&nbsp;leftFrom(int&nbsp;dir)</pre>\n</li>\n</ul>\n<a name=\"rightFrom-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>rightFrom</h4>\n<pre>public static&nbsp;int&nbsp;rightFrom(int&nbsp;dir)</pre>\n</li>\n</ul>\n<a name=\"oppositeDirection-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>oppositeDirection</h4>\n<pre>public static&nbsp;int&nbsp;oppositeDirection(int&nbsp;dir)</pre>\n</li>\n</ul>\n<a name=\"adjacentPoint-java.awt.Point-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>adjacentPoint</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;adjacentPoint(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt,\n                                  int&nbsp;dir)</pre>\n</li>\n</ul>\n<a name=\"adjacentPoint-int-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>adjacentPoint</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;adjacentPoint(int&nbsp;x,\n                                  int&nbsp;y,\n                                  int&nbsp;dir)</pre>\n</li>\n</ul>\n<a name=\"repaint--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>repaint</h4>\n<pre>public&nbsp;void&nbsp;repaint()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint--\" title=\"class or interface in java.awt\">repaint</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"saveToImage-java.io.File-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>saveToImage</h4>\n<pre>public&nbsp;void&nbsp;saveToImage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)</pre>\n<div class=\"block\">Saves an image of this Karel world to the given image file.</div>\n</li>\n</ul>\n<a name=\"saveToImage-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>saveToImage</h4>\n<pre>public&nbsp;void&nbsp;saveToImage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</pre>\n<div class=\"block\">Saves an image of this Karel world to the given image file.</div>\n</li>\n</ul>\n<a name=\"getSize--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSize</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a>&nbsp;getSize()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize--\" title=\"class or interface in java.awt\">getSize</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getWidth--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getWidth</h4>\n<pre>public&nbsp;int&nbsp;getWidth()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getWidth--\" title=\"class or interface in javax.swing\">getWidth</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getHeight--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getHeight</h4>\n<pre>public&nbsp;int&nbsp;getHeight()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getHeight--\" title=\"class or interface in javax.swing\">getHeight</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setSize-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setSize</h4>\n<pre>public&nbsp;void&nbsp;setSize(int&nbsp;width,\n                    int&nbsp;height)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-int-int-\" title=\"class or interface in java.awt\">setSize</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setToDefaultSize--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setToDefaultSize</h4>\n<pre>public&nbsp;void&nbsp;setToDefaultSize()</pre>\n</li>\n</ul>\n<a name=\"toImage--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>toImage</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/BufferedImage.html?is-external=true\" title=\"class or interface in java.awt.image\">BufferedImage</a>&nbsp;toImage()</pre>\n<div class=\"block\">Converts this Karel world into an image that is returned.</div>\n</li>\n</ul>\n<a name=\"update-java.awt.Graphics-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>update</h4>\n<pre>public&nbsp;void&nbsp;update(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#update-java.awt.Graphics-\" title=\"class or interface in javax.swing\">update</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"paintComponent-java.awt.Graphics-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>paintComponent</h4>\n<pre>public&nbsp;void&nbsp;paintComponent(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintComponent-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintComponent</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"trace--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>trace</h4>\n<pre>public&nbsp;void&nbsp;trace()</pre>\n</li>\n</ul>\n<a name=\"setMonitor-stanford.karel.KarelWorldMonitor-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setMonitor</h4>\n<pre>protected&nbsp;void&nbsp;setMonitor(stanford.karel.KarelWorldMonitor&nbsp;monitor)</pre>\n</li>\n</ul>\n<a name=\"getMonitor--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getMonitor</h4>\n<pre>protected&nbsp;stanford.karel.KarelWorldMonitor&nbsp;getMonitor()</pre>\n</li>\n</ul>\n<a name=\"componentResizedHook--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>componentResizedHook</h4>\n<pre>protected&nbsp;void&nbsp;componentResizedHook()</pre>\n</li>\n</ul>\n<a name=\"mousePressedHook-java.awt.event.MouseEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>mousePressedHook</h4>\n<pre>protected&nbsp;void&nbsp;mousePressedHook(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</pre>\n</li>\n</ul>\n<a name=\"mouseDraggedHook-java.awt.event.MouseEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>mouseDraggedHook</h4>\n<pre>protected&nbsp;void&nbsp;mouseDraggedHook(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;e)</pre>\n</li>\n</ul>\n<a name=\"updateContents-java.awt.Graphics-java.awt.Point-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>updateContents</h4>\n<pre>public&nbsp;void&nbsp;updateContents(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g,\n                           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt)</pre>\n</li>\n</ul>\n<a name=\"drawCorner-java.awt.Graphics-int-int-java.awt.Point-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>drawCorner</h4>\n<pre>public&nbsp;void&nbsp;drawCorner(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g,\n                       int&nbsp;x,\n                       int&nbsp;y,\n                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt)</pre>\n</li>\n</ul>\n<a name=\"drawMarkedCorner-java.awt.Graphics-int-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>drawMarkedCorner</h4>\n<pre>public static&nbsp;void&nbsp;drawMarkedCorner(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g,\n                                    int&nbsp;x,\n                                    int&nbsp;y,\n                                    int&nbsp;size)</pre>\n</li>\n</ul>\n<a name=\"drawKarel-java.awt.Graphics-int-int-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>drawKarel</h4>\n<pre>public&nbsp;void&nbsp;drawKarel(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g,\n                      int&nbsp;x,\n                      int&nbsp;y,\n                      int&nbsp;dir,\n                      int&nbsp;size)</pre>\n</li>\n</ul>\n<a name=\"drawSimpleKarel-java.awt.Graphics-int-int-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>drawSimpleKarel</h4>\n<pre>public&nbsp;void&nbsp;drawSimpleKarel(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g,\n                            int&nbsp;x,\n                            int&nbsp;y,\n                            int&nbsp;dir,\n                            int&nbsp;size)</pre>\n</li>\n</ul>\n<a name=\"drawFancyKarel-java.awt.Graphics-int-int-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>drawFancyKarel</h4>\n<pre>public&nbsp;void&nbsp;drawFancyKarel(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g,\n                           int&nbsp;x,\n                           int&nbsp;y,\n                           int&nbsp;dir,\n                           int&nbsp;size)</pre>\n</li>\n</ul>\n<a name=\"drawFancyKarel-java.awt.Graphics-int-int-int-int-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>drawFancyKarel</h4>\n<pre>public&nbsp;void&nbsp;drawFancyKarel(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g,\n                           int&nbsp;x,\n                           int&nbsp;y,\n                           int&nbsp;dir,\n                           int&nbsp;size,\n                           boolean&nbsp;msKarel)</pre>\n</li>\n</ul>\n<a name=\"drawFancyKarel-java.awt.Graphics-int-int-int-int-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>drawFancyKarel</h4>\n<pre>public static&nbsp;void&nbsp;drawFancyKarel(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g,\n                                  int&nbsp;x,\n                                  int&nbsp;y,\n                                  int&nbsp;dir,\n                                  int&nbsp;size,\n                                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n</li>\n</ul>\n<a name=\"drawFancyKarel-java.awt.Graphics-int-int-int-int-java.awt.Color-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>drawFancyKarel</h4>\n<pre>public static&nbsp;void&nbsp;drawFancyKarel(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g,\n                                  int&nbsp;x,\n                                  int&nbsp;y,\n                                  int&nbsp;dir,\n                                  int&nbsp;size,\n                                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color,\n                                  boolean&nbsp;msKarel)</pre>\n</li>\n</ul>\n<a name=\"drawBeeperForStyle-java.awt.Graphics-int-int-int-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>drawBeeperForStyle</h4>\n<pre>public&nbsp;void&nbsp;drawBeeperForStyle(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g,\n                               int&nbsp;x,\n                               int&nbsp;y,\n                               int&nbsp;size,\n                               int&nbsp;n,\n                               int&nbsp;border)</pre>\n</li>\n</ul>\n<a name=\"drawBeeper-java.awt.Graphics-int-int-int-int-int-java.awt.Component-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>drawBeeper</h4>\n<pre>public static&nbsp;void&nbsp;drawBeeper(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g,\n                              int&nbsp;x,\n                              int&nbsp;y,\n                              int&nbsp;size,\n                              int&nbsp;n,\n                              int&nbsp;border,\n                              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp)</pre>\n</li>\n</ul>\n<a name=\"drawBeeper-java.awt.Graphics-int-int-int-java.lang.String-int-java.awt.Component-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>drawBeeper</h4>\n<pre>public static&nbsp;void&nbsp;drawBeeper(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g,\n                              int&nbsp;x,\n                              int&nbsp;y,\n                              int&nbsp;size,\n                              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;label,\n                              int&nbsp;border,\n                              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp)</pre>\n</li>\n</ul>\n<a name=\"labelBeeper-java.awt.Graphics-int-int-int-java.lang.String-java.awt.Component-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>labelBeeper</h4>\n<pre>public static&nbsp;void&nbsp;labelBeeper(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g,\n                               int&nbsp;x,\n                               int&nbsp;y,\n                               int&nbsp;size,\n                               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;label,\n                               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;comp)</pre>\n</li>\n</ul>\n<a name=\"beeperLabel-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>beeperLabel</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;beeperLabel(int&nbsp;n)</pre>\n</li>\n</ul>\n<a name=\"updateWalls-java.awt.Graphics-java.awt.Point-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>updateWalls</h4>\n<pre>public&nbsp;void&nbsp;updateWalls(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g,\n                        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;pt)</pre>\n</li>\n</ul>\n<a name=\"drawCornerMarker-java.awt.Graphics-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>drawCornerMarker</h4>\n<pre>public&nbsp;void&nbsp;drawCornerMarker(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g,\n                             int&nbsp;x,\n                             int&nbsp;y)</pre>\n</li>\n</ul>\n<a name=\"save--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>save</h4>\n<pre>public&nbsp;void&nbsp;save()</pre>\n</li>\n</ul>\n<a name=\"load-java.lang.String:A-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>load</h4>\n<pre>public&nbsp;void&nbsp;load(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;lines)</pre>\n</li>\n</ul>\n<a name=\"load-java.io.File-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>load</h4>\n<pre>public&nbsp;void&nbsp;load(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)</pre>\n</li>\n</ul>\n<a name=\"load-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>load</h4>\n<pre>public&nbsp;void&nbsp;load(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;pathname)</pre>\n</li>\n</ul>\n<a name=\"load-java.io.Reader-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>load</h4>\n<pre>public&nbsp;void&nbsp;load(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Reader.html?is-external=true\" title=\"class or interface in java.io\">Reader</a>&nbsp;rd)</pre>\n</li>\n</ul>\n<a name=\"setMsKarel-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setMsKarel</h4>\n<pre>public&nbsp;void&nbsp;setMsKarel(boolean&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"setInteractiveMode-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setInteractiveMode</h4>\n<pre>public&nbsp;void&nbsp;setInteractiveMode(boolean&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"beeperBagCommand--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>beeperBagCommand</h4>\n<pre>protected&nbsp;void&nbsp;beeperBagCommand()</pre>\n</li>\n</ul>\n<a name=\"beeperCommand--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>beeperCommand</h4>\n<pre>protected&nbsp;void&nbsp;beeperCommand()</pre>\n</li>\n</ul>\n<a name=\"ignoreCommand--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>ignoreCommand</h4>\n<pre>protected&nbsp;void&nbsp;ignoreCommand()</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/karel/KarelProgram.State.html\" title=\"enum in stanford.karel\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/karel/KarelWorld.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"KarelWorld.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JComponent\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/karel/SuperKarel.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:10 PDT 2017 -->\n<title>SuperKarel</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"SuperKarel\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li>Next&nbsp;Class</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/karel/SuperKarel.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"SuperKarel.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JApplet\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.karel</div>\n<h2 title=\"Class SuperKarel\" class=\"title\">Class SuperKarel</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Component</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Container</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Panel</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">java.applet.Applet</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JApplet</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">acm.program.Program</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/karel/Karel.html\" title=\"class in stanford.karel\">stanford.karel.Karel</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.karel.SuperKarel</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd>acm.io.IOModel, <a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/AdjustmentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">AdjustmentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ContainerListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ItemListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ItemListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseWheelListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/TextListener.html?is-external=true\" title=\"class or interface in java.awt.event\">TextListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowFocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowStateListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowStateListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListDataListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListDataListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListSelectionListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListSelectionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/MouseInputListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">MouseInputListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/PopupMenuListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">PopupMenuListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/RootPaneContainer.html?is-external=true\" title=\"class or interface in javax.swing\">RootPaneContainer</a>, <a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">SuperKarel</span>\nextends <a href=\"../../stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></pre>\n<div class=\"block\">Extended Karel class . . .</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#stanford.karel.SuperKarel\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JApplet\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.AccessibleJApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet.AccessibleJApplet</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.applet.Applet\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.applet.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">Applet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.AccessibleApplet.html?is-external=true\" title=\"class or interface in java.applet\">Applet.AccessibleApplet</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Panel\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\">Panel</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.AccessibleAWTPanel.html?is-external=true\" title=\"class or interface in java.awt\">Panel.AccessibleAWTPanel</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.AccessibleAWTContainer.html?is-external=true\" title=\"class or interface in java.awt\">Container.AccessibleAWTContainer</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.AccessibleAWTComponent.html?is-external=true\" title=\"class or interface in java.awt\">Component.AccessibleAWTComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BaselineResizeBehavior.html?is-external=true\" title=\"class or interface in java.awt\">Component.BaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BltBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.BltBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.FlipBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.FlipBufferStrategy</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/SuperKarel.html#BLACK\">BLACK</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/SuperKarel.html#BLUE\">BLUE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/SuperKarel.html#CYAN\">CYAN</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/SuperKarel.html#DARK_GRAY\">DARK_GRAY</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/SuperKarel.html#GRAY\">GRAY</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/SuperKarel.html#GREEN\">GREEN</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/SuperKarel.html#LIGHT_GRAY\">LIGHT_GRAY</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/SuperKarel.html#MAGENTA\">MAGENTA</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/SuperKarel.html#ORANGE\">ORANGE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/SuperKarel.html#PINK\">PINK</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/SuperKarel.html#RED\">RED</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/SuperKarel.html#WHITE\">WHITE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/SuperKarel.html#YELLOW\">YELLOW</a></span></code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.program.Program\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;acm.program.<a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></h3>\n<code><a href=\"../../acm/program/Program.html#CONFIG_FILE_NAME\">CONFIG_FILE_NAME</a>, <a href=\"../../acm/program/Program.html#invisibleObjects\">invisibleObjects</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.JApplet\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#accessibleContext\" title=\"class or interface in javax.swing\">accessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#rootPane\" title=\"class or interface in javax.swing\">rootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#rootPaneCheckingEnabled\" title=\"class or interface in javax.swing\">rootPaneCheckingEnabled</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#BOTTOM_ALIGNMENT\" title=\"class or interface in java.awt\">BOTTOM_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#CENTER_ALIGNMENT\" title=\"class or interface in java.awt\">CENTER_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#LEFT_ALIGNMENT\" title=\"class or interface in java.awt\">LEFT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#RIGHT_ALIGNMENT\" title=\"class or interface in java.awt\">RIGHT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#TOP_ALIGNMENT\" title=\"class or interface in java.awt\">TOP_ALIGNMENT</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.program.ProgramInterface\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;acm.program.<a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></h3>\n<code><a href=\"../../acm/program/ProgramInterface.html#CENTER\">CENTER</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.image.ImageObserver\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ABORT\" title=\"class or interface in java.awt.image\">ABORT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ALLBITS\" title=\"class or interface in java.awt.image\">ALLBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ERROR\" title=\"class or interface in java.awt.image\">ERROR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#FRAMEBITS\" title=\"class or interface in java.awt.image\">FRAMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#HEIGHT\" title=\"class or interface in java.awt.image\">HEIGHT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#PROPERTIES\" title=\"class or interface in java.awt.image\">PROPERTIES</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#SOMEBITS\" title=\"class or interface in java.awt.image\">SOMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#WIDTH\" title=\"class or interface in java.awt.image\">WIDTH</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/SuperKarel.html#SuperKarel--\">SuperKarel</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/SuperKarel.html#cornerColorIs-java.awt.Color-\">cornerColorIs</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/SuperKarel.html#cornerColorIs-double-double-double-\">cornerColorIs</a></span>(double&nbsp;red,\n             double&nbsp;blue,\n             double&nbsp;green)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/SuperKarel.html#cornerColorIs-int-\">cornerColorIs</a></span>(int&nbsp;rgb)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/SuperKarel.html#newColor-int-\">newColor</a></span>(int&nbsp;rgb)</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/SuperKarel.html#paintCorner-java.awt.Color-\">paintCorner</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/SuperKarel.html#paintCorner-double-double-double-\">paintCorner</a></span>(double&nbsp;red,\n           double&nbsp;blue,\n           double&nbsp;green)</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/SuperKarel.html#paintCorner-int-\">paintCorner</a></span>(int&nbsp;rgb)</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/SuperKarel.html#pause-double-\">pause</a></span>(double&nbsp;milliseconds)</code>\n<div class=\"block\">Delays the calling thread for the specified time, which is expressed in\n milliseconds.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/SuperKarel.html#random--\">random</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/SuperKarel.html#random-double-\">random</a></span>(double&nbsp;p)</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/SuperKarel.html#run--\">run</a></span>()</code>\n<div class=\"block\">Specifies the code to be executed as the program runs.</div>\n</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/SuperKarel.html#say-java.lang.String-\">say</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</code>\n<div class=\"block\">Causes Karel to pop up a speech bubble with the given text in it.</div>\n</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/SuperKarel.html#turnAround--\">turnAround</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/karel/SuperKarel.html#turnRight--\">turnRight</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.karel.Karel\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.karel.<a href=\"../../stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></h3>\n<code><a href=\"../../stanford/karel/Karel.html#beepersInBag--\">beepersInBag</a>, <a href=\"../../stanford/karel/Karel.html#beepersPresent--\">beepersPresent</a>, <a href=\"../../stanford/karel/Karel.html#checkWorld-java.lang.String-\">checkWorld</a>, <a href=\"../../stanford/karel/Karel.html#facingEast--\">facingEast</a>, <a href=\"../../stanford/karel/Karel.html#facingNorth--\">facingNorth</a>, <a href=\"../../stanford/karel/Karel.html#facingSouth--\">facingSouth</a>, <a href=\"../../stanford/karel/Karel.html#facingWest--\">facingWest</a>, <a href=\"../../stanford/karel/Karel.html#frontIsBlocked--\">frontIsBlocked</a>, <a href=\"../../stanford/karel/Karel.html#frontIsClear--\">frontIsClear</a>, <a href=\"../../stanford/karel/Karel.html#getBeepersInBag--\">getBeepersInBag</a>, <a href=\"../../stanford/karel/Karel.html#getDirection--\">getDirection</a>, <a href=\"../../stanford/karel/Karel.html#getLocation--\">getLocation</a>, <a href=\"../../stanford/karel/Karel.html#getWorld--\">getWorld</a>, <a href=\"../../stanford/karel/Karel.html#leftIsBlocked--\">leftIsBlocked</a>, <a href=\"../../stanford/karel/Karel.html#leftIsClear--\">leftIsClear</a>, <a href=\"../../stanford/karel/Karel.html#main-java.lang.String:A-\">main</a>, <a href=\"../../stanford/karel/Karel.html#menuAction-java.awt.event.ActionEvent-\">menuAction</a>, <a href=\"../../stanford/karel/Karel.html#move--\">move</a>, <a href=\"../../stanford/karel/Karel.html#noBeepersInBag--\">noBeepersInBag</a>, <a href=\"../../stanford/karel/Karel.html#noBeepersPresent--\">noBeepersPresent</a>, <a href=\"../../stanford/karel/Karel.html#notFacingEast--\">notFacingEast</a>, <a href=\"../../stanford/karel/Karel.html#notFacingNorth--\">notFacingNorth</a>, <a href=\"../../stanford/karel/Karel.html#notFacingSouth--\">notFacingSouth</a>, <a href=\"../../stanford/karel/Karel.html#notFacingWest--\">notFacingWest</a>, <a href=\"../../stanford/karel/Karel.html#pickBeeper--\">pickBeeper</a>, <a href=\"../../stanford/karel/Karel.html#putBeeper--\">putBeeper</a>, <a href=\"../../stanford/karel/Karel.html#rightIsBlocked--\">rightIsBlocked</a>, <a href=\"../../stanford/karel/Karel.html#rightIsClear--\">rightIsClear</a>, <a href=\"../../stanford/karel/Karel.html#setBeepersInBag-int-\">setBeepersInBag</a>, <a href=\"../../stanford/karel/Karel.html#setDirection-int-\">setDirection</a>, <a href=\"../../stanford/karel/Karel.html#setDisplayOneFlag-boolean-\">setDisplayOneFlag</a>, <a href=\"../../stanford/karel/Karel.html#setLocation-int-int-\">setLocation</a>, <a href=\"../../stanford/karel/Karel.html#setLocation-java.awt.Point-\">setLocation</a>, <a href=\"../../stanford/karel/Karel.html#setWorld-stanford.karel.KarelWorld-\">setWorld</a>, <a href=\"../../stanford/karel/Karel.html#start-java.lang.String:A-\">start</a>, <a href=\"../../stanford/karel/Karel.html#turnLeft--\">turnLeft</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.program.Program\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.program.<a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></h3>\n<code><a href=\"../../acm/program/Program.html#actionPerformed-java.awt.event.ActionEvent-\">actionPerformed</a>, <a href=\"../../acm/program/Program.html#add-java.awt.Component-java.lang.String-java.lang.Object-\">add</a>, <a href=\"../../acm/program/Program.html#addActionListeners--\">addActionListeners</a>, <a href=\"../../acm/program/Program.html#addActionListeners-java.awt.event.ActionListener-\">addActionListeners</a>, <a href=\"../../acm/program/Program.html#addActionListenersToButtonsOnly--\">addActionListenersToButtonsOnly</a>, <a href=\"../../acm/program/Program.html#addAllActionListeners--\">addAllActionListeners</a>, <a href=\"../../acm/program/Program.html#addExitHook-java.lang.Object-\">addExitHook</a>, <a href=\"../../acm/program/Program.html#addImpl-java.awt.Component-java.lang.Object-int-\">addImpl</a>, <a href=\"../../acm/program/Program.html#adjustmentValueChanged-java.awt.event.AdjustmentEvent-\">adjustmentValueChanged</a>, <a href=\"../../acm/program/Program.html#alert-java.lang.Object-\">alert</a>, <a href=\"../../acm/program/Program.html#alert-java.lang.String-\">alert</a>, <a href=\"../../acm/program/Program.html#animation--\">animation</a>, <a href=\"../../acm/program/Program.html#center--\">center</a>, <a href=\"../../acm/program/Program.html#changedUpdate-javax.swing.event.DocumentEvent-\">changedUpdate</a>, <a href=\"../../acm/program/Program.html#checkCompilerFlags--\">checkCompilerFlags</a>, <a href=\"../../acm/program/Program.html#checkKill--\">checkKill</a>, <a href=\"../../acm/program/Program.html#checkStartupSettings--\">checkStartupSettings</a>, <a href=\"../../acm/program/Program.html#componentAdded-java.awt.event.ContainerEvent-\">componentAdded</a>, <a href=\"../../acm/program/Program.html#componentHidden-java.awt.event.ComponentEvent-\">componentHidden</a>, <a href=\"../../acm/program/Program.html#componentMoved-java.awt.event.ComponentEvent-\">componentMoved</a>, <a href=\"../../acm/program/Program.html#componentRemoved-java.awt.event.ContainerEvent-\">componentRemoved</a>, <a href=\"../../acm/program/Program.html#componentResized-java.awt.event.ComponentEvent-\">componentResized</a>, <a href=\"../../acm/program/Program.html#componentShown-java.awt.event.ComponentEvent-\">componentShown</a>, <a href=\"../../acm/program/Program.html#confirm-java.lang.String-\">confirm</a>, <a href=\"../../acm/program/Program.html#contentsChanged-javax.swing.event.ListDataEvent-\">contentsChanged</a>, <a href=\"../../acm/program/Program.html#createConsole--\">createConsole</a>, <a href=\"../../acm/program/Program.html#createDialogIO--\">createDialogIO</a>, <a href=\"../../acm/program/Program.html#createMenuBar--\">createMenuBar</a>, <a href=\"../../acm/program/Program.html#createParameterTable-java.lang.String:A-\">createParameterTable</a>, <a href=\"../../acm/program/Program.html#createProgramFrame--\">createProgramFrame</a>, <a href=\"../../acm/program/Program.html#destroy--\">destroy</a>, <a href=\"../../acm/program/Program.html#endHook--\">endHook</a>, <a href=\"../../acm/program/Program.html#error-java.lang.Exception-\">error</a>, <a href=\"../../acm/program/Program.html#error-java.lang.Exception-java.lang.String-\">error</a>, <a href=\"../../acm/program/Program.html#error-java.lang.String-\">error</a>, <a href=\"../../acm/program/Program.html#exit--\">exit</a>, <a href=\"../../acm/program/Program.html#fileExists-java.lang.String-\">fileExists</a>, <a href=\"../../acm/program/Program.html#fileExists-java.lang.String-java.lang.String-\">fileExists</a>, <a href=\"../../acm/program/Program.html#fileExistsInsideJAR-java.lang.String-\">fileExistsInsideJAR</a>, <a href=\"../../acm/program/Program.html#fileExistsInsideJAR-java.lang.String-java.lang.String-\">fileExistsInsideJAR</a>, <a href=\"../../acm/program/Program.html#fileExistsOnDisk-java.lang.String-\">fileExistsOnDisk</a>, <a href=\"../../acm/program/Program.html#fileExistsOnDisk-java.lang.String-java.lang.String-\">fileExistsOnDisk</a>, <a href=\"../../acm/program/Program.html#fileSize-java.lang.String-\">fileSize</a>, <a href=\"../../acm/program/Program.html#fileSize-java.lang.String-java.lang.String-\">fileSize</a>, <a href=\"../../acm/program/Program.html#focusGained-java.awt.event.FocusEvent-\">focusGained</a>, <a href=\"../../acm/program/Program.html#focusLost-java.awt.event.FocusEvent-\">focusLost</a>, <a href=\"../../acm/program/Program.html#getAnimationDelay--\">getAnimationDelay</a>, <a href=\"../../acm/program/Program.html#getAppletStub--\">getAppletStub</a>, <a href=\"../../acm/program/Program.html#getArgumentArray--\">getArgumentArray</a>, <a href=\"../../acm/program/Program.html#getBoolean--\">getBoolean</a>, <a href=\"../../acm/program/Program.html#getBoolean-java.lang.String-\">getBoolean</a>, <a href=\"../../acm/program/Program.html#getBoolean-java.lang.String-java.lang.String-java.lang.String-\">getBoolean</a>, <a href=\"../../acm/program/Program.html#getBorder-java.lang.String-\">getBorder</a>, <a href=\"../../acm/program/Program.html#getBottomY--\">getBottomY</a>, <a href=\"../../acm/program/Program.html#getCenterLocation--\">getCenterLocation</a>, <a href=\"../../acm/program/Program.html#getCenterX--\">getCenterX</a>, <a href=\"../../acm/program/Program.html#getCenterY--\">getCenterY</a>, <a href=\"../../acm/program/Program.html#getCentralRegionSize--\">getCentralRegionSize</a>, <a href=\"../../acm/program/Program.html#getConsole--\">getConsole</a>, <a href=\"../../acm/program/Program.html#getDialog--\">getDialog</a>, <a href=\"../../acm/program/Program.html#getDouble--\">getDouble</a>, <a href=\"../../acm/program/Program.html#getDouble-double-double-\">getDouble</a>, <a href=\"../../acm/program/Program.html#getDouble-java.lang.String-\">getDouble</a>, <a href=\"../../acm/program/Program.html#getDouble-java.lang.String-double-double-\">getDouble</a>, <a href=\"../../acm/program/Program.html#getHeight--\">getHeight</a>, <a href=\"../../acm/program/Program.html#getInputModel--\">getInputModel</a>, <a href=\"../../acm/program/Program.html#getInteger--\">getInteger</a>, <a href=\"../../acm/program/Program.html#getInteger-int-int-\">getInteger</a>, <a href=\"../../acm/program/Program.html#getInteger-java.lang.String-\">getInteger</a>, <a href=\"../../acm/program/Program.html#getInteger-java.lang.String-int-int-\">getInteger</a>, <a href=\"../../acm/program/Program.html#getJFrame--\">getJFrame</a>, <a href=\"../../acm/program/Program.html#getLayout--\">getLayout</a>, <a href=\"../../acm/program/Program.html#getLine--\">getLine</a>, <a href=\"../../acm/program/Program.html#getLine-java.lang.String-\">getLine</a>, <a href=\"../../acm/program/Program.html#getMainThread--\">getMainThread</a>, <a href=\"../../acm/program/Program.html#getMenuBar--\">getMenuBar</a>, <a href=\"../../acm/program/Program.html#getOutputColor--\">getOutputColor</a>, <a href=\"../../acm/program/Program.html#getOutputModel--\">getOutputModel</a>, <a href=\"../../acm/program/Program.html#getParameter-java.lang.String-\">getParameter</a>, <a href=\"../../acm/program/Program.html#getParameterTable--\">getParameterTable</a>, <a href=\"../../acm/program/Program.html#getPreferredSize--\">getPreferredSize</a>, <a href=\"../../acm/program/Program.html#getReader--\">getReader</a>, <a href=\"../../acm/program/Program.html#getReal--\">getReal</a>, <a href=\"../../acm/program/Program.html#getReal-double-double-\">getReal</a>, <a href=\"../../acm/program/Program.html#getReal-java.lang.String-\">getReal</a>, <a href=\"../../acm/program/Program.html#getReal-java.lang.String-double-double-\">getReal</a>, <a href=\"../../acm/program/Program.html#getRegionPanel-java.lang.String-\">getRegionPanel</a>, <a href=\"../../acm/program/Program.html#getRightX--\">getRightX</a>, <a href=\"../../acm/program/Program.html#getScreenHeight--\">getScreenHeight</a>, <a href=\"../../acm/program/Program.html#getScreenSize--\">getScreenSize</a>, <a href=\"../../acm/program/Program.html#getScreenWidth--\">getScreenWidth</a>, <a href=\"../../acm/program/Program.html#getStartupObject--\">getStartupObject</a>, <a href=\"../../acm/program/Program.html#getTitle--\">getTitle</a>, <a href=\"../../acm/program/Program.html#getWidth--\">getWidth</a>, <a href=\"../../acm/program/Program.html#getWindow--\">getWindow</a>, <a href=\"../../acm/program/Program.html#getWriter--\">getWriter</a>, <a href=\"../../acm/program/Program.html#getYesOrNo-java.lang.String-\">getYesOrNo</a>, <a href=\"../../acm/program/Program.html#hasConfiguration--\">hasConfiguration</a>, <a href=\"../../acm/program/Program.html#init--\">init</a>, <a href=\"../../acm/program/Program.html#insertUpdate-javax.swing.event.DocumentEvent-\">insertUpdate</a>, <a href=\"../../acm/program/Program.html#intervalAdded-javax.swing.event.ListDataEvent-\">intervalAdded</a>, <a href=\"../../acm/program/Program.html#intervalRemoved-javax.swing.event.ListDataEvent-\">intervalRemoved</a>, <a href=\"../../acm/program/Program.html#isAnimated--\">isAnimated</a>, <a href=\"../../acm/program/Program.html#isApplet--\">isApplet</a>, <a href=\"../../acm/program/Program.html#isAppletMode--\">isAppletMode</a>, <a href=\"../../acm/program/Program.html#isExitOnClose--\">isExitOnClose</a>, <a href=\"../../acm/program/Program.html#isInitialized--\">isInitialized</a>, <a href=\"../../acm/program/Program.html#isStarted--\">isStarted</a>, <a href=\"../../acm/program/Program.html#itemStateChanged-java.awt.event.ItemEvent-\">itemStateChanged</a>, <a href=\"../../acm/program/Program.html#keyPressed-java.awt.event.KeyEvent-\">keyPressed</a>, <a href=\"../../acm/program/Program.html#keyReleased-java.awt.event.KeyEvent-\">keyReleased</a>, <a href=\"../../acm/program/Program.html#keyTyped-java.awt.event.KeyEvent-\">keyTyped</a>, <a href=\"../../acm/program/Program.html#killMe--\">killMe</a>, <a href=\"../../acm/program/Program.html#loadConfiguration--\">loadConfiguration</a>, <a href=\"../../acm/program/Program.html#loadConfiguration-java.util.Properties-\">loadConfiguration</a>, <a href=\"../../acm/program/Program.html#menuCanceled-javax.swing.event.MenuEvent-\">menuCanceled</a>, <a href=\"../../acm/program/Program.html#menuDeselected-javax.swing.event.MenuEvent-\">menuDeselected</a>, <a href=\"../../acm/program/Program.html#menuSelected-javax.swing.event.MenuEvent-\">menuSelected</a>, <a href=\"../../acm/program/Program.html#mouseClicked-java.awt.event.MouseEvent-\">mouseClicked</a>, <a href=\"../../acm/program/Program.html#mouseDragged-java.awt.event.MouseEvent-\">mouseDragged</a>, <a href=\"../../acm/program/Program.html#mouseEntered-java.awt.event.MouseEvent-\">mouseEntered</a>, <a href=\"../../acm/program/Program.html#mouseExited-java.awt.event.MouseEvent-\">mouseExited</a>, <a href=\"../../acm/program/Program.html#mouseMoved-java.awt.event.MouseEvent-\">mouseMoved</a>, <a href=\"../../acm/program/Program.html#mousePressed-java.awt.event.MouseEvent-\">mousePressed</a>, <a href=\"../../acm/program/Program.html#mouseReleased-java.awt.event.MouseEvent-\">mouseReleased</a>, <a href=\"../../acm/program/Program.html#mouseWheelMoved-java.awt.event.MouseWheelEvent-\">mouseWheelMoved</a>, <a href=\"../../acm/program/Program.html#openFile-java.lang.String-\">openFile</a>, <a href=\"../../acm/program/Program.html#openFile-java.lang.String-java.lang.String-\">openFile</a>, <a href=\"../../acm/program/Program.html#openFileFromDisk-java.lang.String-\">openFileFromDisk</a>, <a href=\"../../acm/program/Program.html#openFileFromDisk-java.lang.String-java.lang.String-\">openFileFromDisk</a>, <a href=\"../../acm/program/Program.html#openFileFromJAR-java.lang.String-\">openFileFromJAR</a>, <a href=\"../../acm/program/Program.html#openFileFromJAR-java.lang.String-java.lang.String-\">openFileFromJAR</a>, <a href=\"../../acm/program/Program.html#pack--\">pack</a>, <a href=\"../../acm/program/Program.html#pauseTick--\">pauseTick</a>, <a href=\"../../acm/program/Program.html#popupMenuCanceled-javax.swing.event.PopupMenuEvent-\">popupMenuCanceled</a>, <a href=\"../../acm/program/Program.html#popupMenuWillBecomeInvisible-javax.swing.event.PopupMenuEvent-\">popupMenuWillBecomeInvisible</a>, <a href=\"../../acm/program/Program.html#popupMenuWillBecomeVisible-javax.swing.event.PopupMenuEvent-\">popupMenuWillBecomeVisible</a>, <a href=\"../../acm/program/Program.html#print-boolean-\">print</a>, <a href=\"../../acm/program/Program.html#print-boolean-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-char-\">print</a>, <a href=\"../../acm/program/Program.html#print-char-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-double-\">print</a>, <a href=\"../../acm/program/Program.html#print-double-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-float-\">print</a>, <a href=\"../../acm/program/Program.html#print-float-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-int-\">print</a>, <a href=\"../../acm/program/Program.html#print-int-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-long-\">print</a>, <a href=\"../../acm/program/Program.html#print-long-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-java.lang.Object-\">print</a>, <a href=\"../../acm/program/Program.html#print-java.lang.Object-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-java.lang.String-\">print</a>, <a href=\"../../acm/program/Program.html#print-java.lang.String-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#printf-java.lang.String-java.lang.Object...-\">printf</a>, <a href=\"../../acm/program/Program.html#println--\">println</a>, <a href=\"../../acm/program/Program.html#println-boolean-\">println</a>, <a href=\"../../acm/program/Program.html#println-boolean-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-char-\">println</a>, <a href=\"../../acm/program/Program.html#println-char-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-double-\">println</a>, <a href=\"../../acm/program/Program.html#println-double-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-float-\">println</a>, <a href=\"../../acm/program/Program.html#println-float-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-int-\">println</a>, <a href=\"../../acm/program/Program.html#println-int-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-long-\">println</a>, <a href=\"../../acm/program/Program.html#println-long-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-java.lang.Object-\">println</a>, <a href=\"../../acm/program/Program.html#println-java.lang.Object-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-java.lang.String-\">println</a>, <a href=\"../../acm/program/Program.html#println-java.lang.String-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#prompt-java.lang.String-\">prompt</a>, <a href=\"../../acm/program/Program.html#readBoolean--\">readBoolean</a>, <a href=\"../../acm/program/Program.html#readBoolean-java.lang.String-\">readBoolean</a>, <a href=\"../../acm/program/Program.html#readBoolean-java.lang.String-java.lang.String-java.lang.String-\">readBoolean</a>, <a href=\"../../acm/program/Program.html#readDouble--\">readDouble</a>, <a href=\"../../acm/program/Program.html#readDouble-double-double-\">readDouble</a>, <a href=\"../../acm/program/Program.html#readDouble-java.lang.String-\">readDouble</a>, <a href=\"../../acm/program/Program.html#readDouble-java.lang.String-double-double-\">readDouble</a>, <a href=\"../../acm/program/Program.html#readInt--\">readInt</a>, <a href=\"../../acm/program/Program.html#readInt-int-int-\">readInt</a>, <a href=\"../../acm/program/Program.html#readInt-java.lang.String-\">readInt</a>, <a href=\"../../acm/program/Program.html#readInt-java.lang.String-int-int-\">readInt</a>, <a href=\"../../acm/program/Program.html#readLine--\">readLine</a>, <a href=\"../../acm/program/Program.html#readLine-java.lang.String-\">readLine</a>, <a href=\"../../acm/program/Program.html#remove-java.awt.Component-\">remove</a>, <a href=\"../../acm/program/Program.html#remove-int-\">remove</a>, <a href=\"../../acm/program/Program.html#removeAll--\">removeAll</a>, <a href=\"../../acm/program/Program.html#removeFromRegion-java.awt.Component-java.lang.String-\">removeFromRegion</a>, <a href=\"../../acm/program/Program.html#removeMenuBar--\">removeMenuBar</a>, <a href=\"../../acm/program/Program.html#removeUpdate-javax.swing.event.DocumentEvent-\">removeUpdate</a>, <a href=\"../../acm/program/Program.html#repaint--\">repaint</a>, <a href=\"../../acm/program/Program.html#runHook--\">runHook</a>, <a href=\"../../acm/program/Program.html#saveConfiguration--\">saveConfiguration</a>, <a href=\"../../acm/program/Program.html#saveConfiguration-java.util.Properties-\">saveConfiguration</a>, <a href=\"../../acm/program/Program.html#setAnimated-boolean-\">setAnimated</a>, <a href=\"../../acm/program/Program.html#setAnimationDelay-int-\">setAnimationDelay</a>, <a href=\"../../acm/program/Program.html#setAppletStub-java.applet.AppletStub-\">setAppletStub</a>, <a href=\"../../acm/program/Program.html#setBackground-java.awt.Color-\">setBackground</a>, <a href=\"../../acm/program/Program.html#setBottomY-double-\">setBottomY</a>, <a href=\"../../acm/program/Program.html#setCenterLocation-double-double-\">setCenterLocation</a>, <a href=\"../../acm/program/Program.html#setCenterX-double-\">setCenterX</a>, <a href=\"../../acm/program/Program.html#setCenterY-double-\">setCenterY</a>, <a href=\"../../acm/program/Program.html#setConsole-acm.io.IOConsole-\">setConsole</a>, <a href=\"../../acm/program/Program.html#setDialog-acm.io.IODialog-\">setDialog</a>, <a href=\"../../acm/program/Program.html#setExitOnClose-boolean-\">setExitOnClose</a>, <a href=\"../../acm/program/Program.html#setFramesPerSecond-int-\">setFramesPerSecond</a>, <a href=\"../../acm/program/Program.html#setHeight-double-\">setHeight</a>, <a href=\"../../acm/program/Program.html#setInputModel-acm.io.IOModel-\">setInputModel</a>, <a href=\"../../acm/program/Program.html#setInvisible-acm.graphics.GObject-boolean-\">setInvisible</a>, <a href=\"../../acm/program/Program.html#setJFrame-javax.swing.JFrame-\">setJFrame</a>, <a href=\"../../acm/program/Program.html#setJMenuBar-javax.swing.JMenuBar-\">setJMenuBar</a>, <a href=\"../../acm/program/Program.html#setLayout-java.awt.LayoutManager-\">setLayout</a>, <a href=\"../../acm/program/Program.html#setLocation-double-double-\">setLocation</a>, <a href=\"../../acm/program/Program.html#setLocation-acm.graphics.GPoint-\">setLocation</a>, <a href=\"../../acm/program/Program.html#setOutputColor-java.awt.Color-\">setOutputColor</a>, <a href=\"../../acm/program/Program.html#setOutputModel-acm.io.IOModel-\">setOutputModel</a>, <a href=\"../../acm/program/Program.html#setParameter-java.lang.String-java.lang.String-\">setParameter</a>, <a href=\"../../acm/program/Program.html#setParameterTable-java.util.Map-\">setParameterTable</a>, <a href=\"../../acm/program/Program.html#setPauseScaleFactor-double-\">setPauseScaleFactor</a>, <a href=\"../../acm/program/Program.html#setResizable-boolean-\">setResizable</a>, <a href=\"../../acm/program/Program.html#setRightX-double-\">setRightX</a>, <a href=\"../../acm/program/Program.html#setShowPixelGrid-boolean-\">setShowPixelGrid</a>, <a href=\"../../acm/program/Program.html#setShowPixelInfo-boolean-\">setShowPixelInfo</a>, <a href=\"../../acm/program/Program.html#setSize-double-double-\">setSize</a>, <a href=\"../../acm/program/Program.html#setStartupObject-java.lang.Object-\">setStartupObject</a>, <a href=\"../../acm/program/Program.html#setTitle-java.lang.String-\">setTitle</a>, <a href=\"../../acm/program/Program.html#setWidth-double-\">setWidth</a>, <a href=\"../../acm/program/Program.html#setX-double-\">setX</a>, <a href=\"../../acm/program/Program.html#setY-double-\">setY</a>, <a href=\"../../acm/program/Program.html#showErrorMessage-java.lang.String-\">showErrorMessage</a>, <a href=\"../../acm/program/Program.html#start--\">start</a>, <a href=\"../../acm/program/Program.html#startAnimation--\">startAnimation</a>, <a href=\"../../acm/program/Program.html#startHook--\">startHook</a>, <a href=\"../../acm/program/Program.html#startRun--\">startRun</a>, <a href=\"../../acm/program/Program.html#stateChanged-javax.swing.event.ChangeEvent-\">stateChanged</a>, <a href=\"../../acm/program/Program.html#stopAnimation--\">stopAnimation</a>, <a href=\"../../acm/program/Program.html#textValueChanged-java.awt.event.TextEvent-\">textValueChanged</a>, <a href=\"../../acm/program/Program.html#validate--\">validate</a>, <a href=\"../../acm/program/Program.html#valueChanged-javax.swing.event.ListSelectionEvent-\">valueChanged</a>, <a href=\"../../acm/program/Program.html#windowActivated-java.awt.event.WindowEvent-\">windowActivated</a>, <a href=\"../../acm/program/Program.html#windowClosed-java.awt.event.WindowEvent-\">windowClosed</a>, <a href=\"../../acm/program/Program.html#windowClosing-java.awt.event.WindowEvent-\">windowClosing</a>, <a href=\"../../acm/program/Program.html#windowDeactivated-java.awt.event.WindowEvent-\">windowDeactivated</a>, <a href=\"../../acm/program/Program.html#windowDeiconified-java.awt.event.WindowEvent-\">windowDeiconified</a>, <a href=\"../../acm/program/Program.html#windowGainedFocus-java.awt.event.WindowEvent-\">windowGainedFocus</a>, <a href=\"../../acm/program/Program.html#windowIconified-java.awt.event.WindowEvent-\">windowIconified</a>, <a href=\"../../acm/program/Program.html#windowLostFocus-java.awt.event.WindowEvent-\">windowLostFocus</a>, <a href=\"../../acm/program/Program.html#windowOpened-java.awt.event.WindowEvent-\">windowOpened</a>, <a href=\"../../acm/program/Program.html#windowStateChanged-java.awt.event.WindowEvent-\">windowStateChanged</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JApplet\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#createRootPane--\" title=\"class or interface in javax.swing\">createRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getAccessibleContext--\" title=\"class or interface in javax.swing\">getAccessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getContentPane--\" title=\"class or interface in javax.swing\">getContentPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getGlassPane--\" title=\"class or interface in javax.swing\">getGlassPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getGraphics--\" title=\"class or interface in javax.swing\">getGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getJMenuBar--\" title=\"class or interface in javax.swing\">getJMenuBar</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getLayeredPane--\" title=\"class or interface in javax.swing\">getLayeredPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getRootPane--\" title=\"class or interface in javax.swing\">getRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getTransferHandler--\" title=\"class or interface in javax.swing\">getTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#isRootPaneCheckingEnabled--\" title=\"class or interface in javax.swing\">isRootPaneCheckingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#paramString--\" title=\"class or interface in javax.swing\">paramString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#repaint-long-int-int-int-int-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setContentPane-java.awt.Container-\" title=\"class or interface in javax.swing\">setContentPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setGlassPane-java.awt.Component-\" title=\"class or interface in javax.swing\">setGlassPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setLayeredPane-javax.swing.JLayeredPane-\" title=\"class or interface in javax.swing\">setLayeredPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setRootPane-javax.swing.JRootPane-\" title=\"class or interface in javax.swing\">setRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setRootPaneCheckingEnabled-boolean-\" title=\"class or interface in javax.swing\">setRootPaneCheckingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setTransferHandler-javax.swing.TransferHandler-\" title=\"class or interface in javax.swing\">setTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#update-java.awt.Graphics-\" title=\"class or interface in javax.swing\">update</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.applet.Applet\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.applet.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">Applet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAppletContext--\" title=\"class or interface in java.applet\">getAppletContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAppletInfo--\" title=\"class or interface in java.applet\">getAppletInfo</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAudioClip-java.net.URL-\" title=\"class or interface in java.applet\">getAudioClip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAudioClip-java.net.URL-java.lang.String-\" title=\"class or interface in java.applet\">getAudioClip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getCodeBase--\" title=\"class or interface in java.applet\">getCodeBase</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getDocumentBase--\" title=\"class or interface in java.applet\">getDocumentBase</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getImage-java.net.URL-\" title=\"class or interface in java.applet\">getImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getImage-java.net.URL-java.lang.String-\" title=\"class or interface in java.applet\">getImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getLocale--\" title=\"class or interface in java.applet\">getLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getParameterInfo--\" title=\"class or interface in java.applet\">getParameterInfo</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#isActive--\" title=\"class or interface in java.applet\">isActive</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#isValidateRoot--\" title=\"class or interface in java.applet\">isValidateRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#newAudioClip-java.net.URL-\" title=\"class or interface in java.applet\">newAudioClip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#play-java.net.URL-\" title=\"class or interface in java.applet\">play</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#play-java.net.URL-java.lang.String-\" title=\"class or interface in java.applet\">play</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#resize-java.awt.Dimension-\" title=\"class or interface in java.applet\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#resize-int-int-\" title=\"class or interface in java.applet\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#setStub-java.applet.AppletStub-\" title=\"class or interface in java.applet\">setStub</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#showStatus-java.lang.String-\" title=\"class or interface in java.applet\">showStatus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#stop--\" title=\"class or interface in java.applet\">stop</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Panel\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\">Panel</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true#addNotify--\" title=\"class or interface in java.awt\">addNotify</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.lang.String-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">addContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#applyComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">applyComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#areFocusTraversalKeysSet-int-\" title=\"class or interface in java.awt\">areFocusTraversalKeysSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#countComponents--\" title=\"class or interface in java.awt\">countComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#deliverEvent-java.awt.Event-\" title=\"class or interface in java.awt\">deliverEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#doLayout--\" title=\"class or interface in java.awt\">doLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-int-int-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getAlignmentX--\" title=\"class or interface in java.awt\">getAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getAlignmentY--\" title=\"class or interface in java.awt\">getAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponent-int-\" title=\"class or interface in java.awt\">getComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-int-int-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentCount--\" title=\"class or interface in java.awt\">getComponentCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponents--\" title=\"class or interface in java.awt\">getComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentZOrder-java.awt.Component-\" title=\"class or interface in java.awt\">getComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getContainerListeners--\" title=\"class or interface in java.awt\">getContainerListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalKeys-int-\" title=\"class or interface in java.awt\">getFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalPolicy--\" title=\"class or interface in java.awt\">getFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getInsets--\" title=\"class or interface in java.awt\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getListeners-java.lang.Class-\" title=\"class or interface in java.awt\">getListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMaximumSize--\" title=\"class or interface in java.awt\">getMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMinimumSize--\" title=\"class or interface in java.awt\">getMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMousePosition-boolean-\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#insets--\" title=\"class or interface in java.awt\">insets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#invalidate--\" title=\"class or interface in java.awt\">invalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isAncestorOf-java.awt.Component-\" title=\"class or interface in java.awt\">isAncestorOf</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot--\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot-java.awt.Container-\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicyProvider--\" title=\"class or interface in java.awt\">isFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicySet--\" title=\"class or interface in java.awt\">isFocusTraversalPolicySet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#layout--\" title=\"class or interface in java.awt\">layout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintStream-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintWriter-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#locate-int-int-\" title=\"class or interface in java.awt\">locate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#minimumSize--\" title=\"class or interface in java.awt\">minimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paint-java.awt.Graphics-\" title=\"class or interface in java.awt\">paint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paintComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#preferredSize--\" title=\"class or interface in java.awt\">preferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#print-java.awt.Graphics-\" title=\"class or interface in java.awt\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#printComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">printComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processContainerEvent-java.awt.event.ContainerEvent-\" title=\"class or interface in java.awt\">processContainerEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">processEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">removeContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeNotify--\" title=\"class or interface in java.awt\">removeNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setComponentZOrder-java.awt.Component-int-\" title=\"class or interface in java.awt\">setComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusCycleRoot-boolean-\" title=\"class or interface in java.awt\">setFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalKeys-int-java.util.Set-\" title=\"class or interface in java.awt\">setFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicy-java.awt.FocusTraversalPolicy-\" title=\"class or interface in java.awt\">setFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicyProvider-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFont-java.awt.Font-\" title=\"class or interface in java.awt\">setFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#transferFocusDownCycle--\" title=\"class or interface in java.awt\">transferFocusDownCycle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validateTree--\" title=\"class or interface in java.awt\">validateTree</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#action-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">action</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#add-java.awt.PopupMenu-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">addComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">addFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">addHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">addHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">addInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">addKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">addMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">addMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">addMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#bounds--\" title=\"class or interface in java.awt\">bounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#coalesceEvents-java.awt.AWTEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">coalesceEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-int-int-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-java.awt.Point-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-java.awt.image.ImageProducer-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-int-int-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-java.awt.ImageCapabilities-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disable--\" title=\"class or interface in java.awt\">disable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disableEvents-long-\" title=\"class or interface in java.awt\">disableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#dispatchEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">dispatchEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable--\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable-boolean-\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableEvents-long-\" title=\"class or interface in java.awt\">enableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableInputMethods-boolean-\" title=\"class or interface in java.awt\">enableInputMethods</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-boolean-boolean-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-byte-byte-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-char-char-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-double-double-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-float-float-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-int-int-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-long-long-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-short-short-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBackground--\" title=\"class or interface in java.awt\">getBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBaseline-int-int-\" title=\"class or interface in java.awt\">getBaseline</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBaselineResizeBehavior--\" title=\"class or interface in java.awt\">getBaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds--\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getColorModel--\" title=\"class or interface in java.awt\">getColorModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentListeners--\" title=\"class or interface in java.awt\">getComponentListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentOrientation--\" title=\"class or interface in java.awt\">getComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getCursor--\" title=\"class or interface in java.awt\">getCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getDropTarget--\" title=\"class or interface in java.awt\">getDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusCycleRootAncestor--\" title=\"class or interface in java.awt\">getFocusCycleRootAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusListeners--\" title=\"class or interface in java.awt\">getFocusListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusTraversalKeysEnabled--\" title=\"class or interface in java.awt\">getFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFont--\" title=\"class or interface in java.awt\">getFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFontMetrics-java.awt.Font-\" title=\"class or interface in java.awt\">getFontMetrics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getForeground--\" title=\"class or interface in java.awt\">getForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getGraphicsConfiguration--\" title=\"class or interface in java.awt\">getGraphicsConfiguration</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyBoundsListeners--\" title=\"class or interface in java.awt\">getHierarchyBoundsListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyListeners--\" title=\"class or interface in java.awt\">getHierarchyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getIgnoreRepaint--\" title=\"class or interface in java.awt\">getIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputContext--\" title=\"class or interface in java.awt\">getInputContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodListeners--\" title=\"class or interface in java.awt\">getInputMethodListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodRequests--\" title=\"class or interface in java.awt\">getInputMethodRequests</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getKeyListeners--\" title=\"class or interface in java.awt\">getKeyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation-java.awt.Point-\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocationOnScreen--\" title=\"class or interface in java.awt\">getLocationOnScreen</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseListeners--\" title=\"class or interface in java.awt\">getMouseListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseMotionListeners--\" title=\"class or interface in java.awt\">getMouseMotionListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMousePosition--\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseWheelListeners--\" title=\"class or interface in java.awt\">getMouseWheelListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getName--\" title=\"class or interface in java.awt\">getName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getParent--\" title=\"class or interface in java.awt\">getParent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPeer--\" title=\"class or interface in java.awt\">getPeer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners--\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners-java.lang.String-\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize--\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getToolkit--\" title=\"class or interface in java.awt\">getToolkit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getTreeLock--\" title=\"class or interface in java.awt\">getTreeLock</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getX--\" title=\"class or interface in java.awt\">getX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getY--\" title=\"class or interface in java.awt\">getY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#gotFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">gotFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#handleEvent-java.awt.Event-\" title=\"class or interface in java.awt\">handleEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hasFocus--\" title=\"class or interface in java.awt\">hasFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hide--\" title=\"class or interface in java.awt\">hide</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#imageUpdate-java.awt.Image-int-int-int-int-int-\" title=\"class or interface in java.awt\">imageUpdate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#inside-int-int-\" title=\"class or interface in java.awt\">inside</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isBackgroundSet--\" title=\"class or interface in java.awt\">isBackgroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isCursorSet--\" title=\"class or interface in java.awt\">isCursorSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDisplayable--\" title=\"class or interface in java.awt\">isDisplayable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDoubleBuffered--\" title=\"class or interface in java.awt\">isDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isEnabled--\" title=\"class or interface in java.awt\">isEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusable--\" title=\"class or interface in java.awt\">isFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusOwner--\" title=\"class or interface in java.awt\">isFocusOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusTraversable--\" title=\"class or interface in java.awt\">isFocusTraversable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFontSet--\" title=\"class or interface in java.awt\">isFontSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isForegroundSet--\" title=\"class or interface in java.awt\">isForegroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isLightweight--\" title=\"class or interface in java.awt\">isLightweight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMaximumSizeSet--\" title=\"class or interface in java.awt\">isMaximumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMinimumSizeSet--\" title=\"class or interface in java.awt\">isMinimumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isOpaque--\" title=\"class or interface in java.awt\">isOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isPreferredSizeSet--\" title=\"class or interface in java.awt\">isPreferredSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isShowing--\" title=\"class or interface in java.awt\">isShowing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isValid--\" title=\"class or interface in java.awt\">isValid</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isVisible--\" title=\"class or interface in java.awt\">isVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyDown-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyUp-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list--\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintStream-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintWriter-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#location--\" title=\"class or interface in java.awt\">location</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#lostFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">lostFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDown-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDrag-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDrag</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseEnter-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseEnter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseExit-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseExit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseMove-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseMove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseUp-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#move-int-int-\" title=\"class or interface in java.awt\">move</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#nextFocus--\" title=\"class or interface in java.awt\">nextFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#paintAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#postEvent-java.awt.Event-\" title=\"class or interface in java.awt\">postEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#printAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">printAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processComponentEvent-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt\">processComponentEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processFocusEvent-java.awt.event.FocusEvent-\" title=\"class or interface in java.awt\">processFocusEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyBoundsEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyBoundsEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processInputMethodEvent-java.awt.event.InputMethodEvent-\" title=\"class or interface in java.awt\">processInputMethodEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in java.awt\">processKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseEvent-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt\">processMouseEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseMotionEvent-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt\">processMouseMotionEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseWheelEvent-java.awt.event.MouseWheelEvent-\" title=\"class or interface in java.awt\">processMouseWheelEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#remove-java.awt.MenuComponent-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">removeComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">removeFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">removeHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">removeHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">removeInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">removeKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">removeMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">removeMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">removeMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-int-int-int-int-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-long-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocus--\" title=\"class or interface in java.awt\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocus-boolean-\" title=\"class or interface in java.awt\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocusInWindow--\" title=\"class or interface in java.awt\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocusInWindow-boolean-\" title=\"class or interface in java.awt\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#reshape-int-int-int-int-\" title=\"class or interface in java.awt\">reshape</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#revalidate--\" title=\"class or interface in java.awt\">revalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-int-int-int-int-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">setComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setCursor-java.awt.Cursor-\" title=\"class or interface in java.awt\">setCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setDropTarget-java.awt.dnd.DropTarget-\" title=\"class or interface in java.awt\">setDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setEnabled-boolean-\" title=\"class or interface in java.awt\">setEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusable-boolean-\" title=\"class or interface in java.awt\">setFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusTraversalKeysEnabled-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setForeground-java.awt.Color-\" title=\"class or interface in java.awt\">setForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setIgnoreRepaint-boolean-\" title=\"class or interface in java.awt\">setIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocale-java.util.Locale-\" title=\"class or interface in java.awt\">setLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setMaximumSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setMinimumSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setName-java.lang.String-\" title=\"class or interface in java.awt\">setName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setPreferredSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-int-int-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setVisible-boolean-\" title=\"class or interface in java.awt\">setVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show--\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show-boolean-\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#size--\" title=\"class or interface in java.awt\">size</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#toString--\" title=\"class or interface in java.awt\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocus--\" title=\"class or interface in java.awt\">transferFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusBackward--\" title=\"class or interface in java.awt\">transferFocusBackward</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusUpCycle--\" title=\"class or interface in java.awt\">transferFocusUpCycle</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"BLACK\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>BLACK</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> BLACK</pre>\n</li>\n</ul>\n<a name=\"BLUE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>BLUE</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> BLUE</pre>\n</li>\n</ul>\n<a name=\"CYAN\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>CYAN</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> CYAN</pre>\n</li>\n</ul>\n<a name=\"DARK_GRAY\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>DARK_GRAY</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> DARK_GRAY</pre>\n</li>\n</ul>\n<a name=\"GRAY\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>GRAY</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> GRAY</pre>\n</li>\n</ul>\n<a name=\"GREEN\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>GREEN</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> GREEN</pre>\n</li>\n</ul>\n<a name=\"LIGHT_GRAY\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>LIGHT_GRAY</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> LIGHT_GRAY</pre>\n</li>\n</ul>\n<a name=\"MAGENTA\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MAGENTA</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> MAGENTA</pre>\n</li>\n</ul>\n<a name=\"ORANGE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>ORANGE</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> ORANGE</pre>\n</li>\n</ul>\n<a name=\"PINK\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>PINK</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> PINK</pre>\n</li>\n</ul>\n<a name=\"RED\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>RED</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> RED</pre>\n</li>\n</ul>\n<a name=\"WHITE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>WHITE</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> WHITE</pre>\n</li>\n</ul>\n<a name=\"YELLOW\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>YELLOW</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> YELLOW</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"SuperKarel--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>SuperKarel</h4>\n<pre>public&nbsp;SuperKarel()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"run--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>run</h4>\n<pre>public&nbsp;void&nbsp;run()</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../acm/program/Program.html#run--\">Program</a></code></span></div>\n<div class=\"block\">Specifies the code to be executed as the program runs.\n The <code>run</code> method is required for applications that have\n a thread of control that runs even in the absence of user actions,\n such as a program that uses console interation or that involves\n animation.  GUI-based programs that operate by setting up an initial\n configuration and then wait for user events usually do not specify a\n <code>run</code> method and supply a new definition for <code>init</code>\n instead.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#run--\">run</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true#run--\" title=\"class or interface in java.lang\">run</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#run--\">run</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../stanford/karel/Karel.html#run--\">run</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"turnRight--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>turnRight</h4>\n<pre>public&nbsp;void&nbsp;turnRight()</pre>\n</li>\n</ul>\n<a name=\"turnAround--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>turnAround</h4>\n<pre>public&nbsp;void&nbsp;turnAround()</pre>\n</li>\n</ul>\n<a name=\"paintCorner-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>paintCorner</h4>\n<pre>public&nbsp;void&nbsp;paintCorner(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n</li>\n</ul>\n<a name=\"paintCorner-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>paintCorner</h4>\n<pre>public&nbsp;void&nbsp;paintCorner(int&nbsp;rgb)</pre>\n</li>\n</ul>\n<a name=\"paintCorner-double-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>paintCorner</h4>\n<pre>public&nbsp;void&nbsp;paintCorner(double&nbsp;red,\n                        double&nbsp;blue,\n                        double&nbsp;green)</pre>\n</li>\n</ul>\n<a name=\"newColor-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>newColor</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;newColor(int&nbsp;rgb)</pre>\n</li>\n</ul>\n<a name=\"random--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>random</h4>\n<pre>public&nbsp;boolean&nbsp;random()</pre>\n</li>\n</ul>\n<a name=\"random-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>random</h4>\n<pre>public&nbsp;boolean&nbsp;random(double&nbsp;p)</pre>\n</li>\n</ul>\n<a name=\"cornerColorIs-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>cornerColorIs</h4>\n<pre>public&nbsp;boolean&nbsp;cornerColorIs(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n</li>\n</ul>\n<a name=\"cornerColorIs-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>cornerColorIs</h4>\n<pre>public&nbsp;boolean&nbsp;cornerColorIs(int&nbsp;rgb)</pre>\n</li>\n</ul>\n<a name=\"cornerColorIs-double-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>cornerColorIs</h4>\n<pre>public&nbsp;boolean&nbsp;cornerColorIs(double&nbsp;red,\n                             double&nbsp;blue,\n                             double&nbsp;green)</pre>\n</li>\n</ul>\n<a name=\"pause-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>pause</h4>\n<pre>public&nbsp;void&nbsp;pause(double&nbsp;milliseconds)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../acm/program/Program.html#pause-double-\">Program</a></code></span></div>\n<div class=\"block\">Delays the calling thread for the specified time, which is expressed in\n milliseconds.  Unlike <code>Thread.sleep</code>, this method never throws an\n exception.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/program/ProgramInterface.html#pause-double-\">pause</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/karel/KarelInterface.html#pause-double-\">pause</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/Program.html#pause-double-\">pause</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>milliseconds</code> - The sleep time in milliseconds</dd>\n</dl>\n</li>\n</ul>\n<a name=\"say-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>say</h4>\n<pre>public&nbsp;void&nbsp;say(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</pre>\n<div class=\"block\">Causes Karel to pop up a speech bubble with the given text in it.</div>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li>Next&nbsp;Class</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/karel/SuperKarel.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"SuperKarel.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JApplet\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/karel/package-frame.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>stanford.karel</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<h1 class=\"bar\"><a href=\"../../stanford/karel/package-summary.html\" target=\"classFrame\">stanford.karel</a></h1>\n<div class=\"indexContainer\">\n<h2 title=\"Interfaces\">Interfaces</h2>\n<ul title=\"Interfaces\">\n<li><a href=\"KarelInterface.html\" title=\"interface in stanford.karel\" target=\"classFrame\"><span class=\"interfaceName\">KarelInterface</span></a></li>\n</ul>\n<h2 title=\"Classes\">Classes</h2>\n<ul title=\"Classes\">\n<li><a href=\"Event.html\" title=\"class in stanford.karel\" target=\"classFrame\">Event</a></li>\n<li><a href=\"HeadlessKarel.html\" title=\"class in stanford.karel\" target=\"classFrame\">HeadlessKarel</a></li>\n<li><a href=\"HeadlessSuperKarel.html\" title=\"class in stanford.karel\" target=\"classFrame\">HeadlessSuperKarel</a></li>\n<li><a href=\"Karel.html\" title=\"class in stanford.karel\" target=\"classFrame\">Karel</a></li>\n<li><a href=\"KarelControlPanel.html\" title=\"class in stanford.karel\" target=\"classFrame\">KarelControlPanel</a></li>\n<li><a href=\"KarelProgram.html\" title=\"class in stanford.karel\" target=\"classFrame\">KarelProgram</a></li>\n<li><a href=\"KarelWorld.html\" title=\"class in stanford.karel\" target=\"classFrame\">KarelWorld</a></li>\n<li><a href=\"SuperKarel.html\" title=\"class in stanford.karel\" target=\"classFrame\">SuperKarel</a></li>\n</ul>\n<h2 title=\"Enums\">Enums</h2>\n<ul title=\"Enums\">\n<li><a href=\"KarelDirection.html\" title=\"enum in stanford.karel\" target=\"classFrame\">KarelDirection</a></li>\n<li><a href=\"KarelProgram.State.html\" title=\"enum in stanford.karel\" target=\"classFrame\">KarelProgram.State</a></li>\n</ul>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/karel/package-summary.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>stanford.karel</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"stanford.karel\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li class=\"navBarCell1Rev\">Package</li>\n<li>Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/cs106/util/package-summary.html\">Prev&nbsp;Package</a></li>\n<li>Next&nbsp;Package</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/karel/package-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 title=\"Package\" class=\"title\">Package&nbsp;stanford.karel</h1>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Interface Summary table, listing interfaces, and an explanation\">\n<caption><span>Interface Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Interface</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a></td>\n<td class=\"colLast\">\n<div class=\"block\">An interface to represent Karel objects.</div>\n</td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Class Summary table, listing classes, and an explanation\">\n<caption><span>Class Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Class</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/karel/Event.html\" title=\"class in stanford.karel\">Event</a>&lt;T&gt;</td>\n<td class=\"colLast\">\n<div class=\"block\">An event is an improved version of a java.util.Observable.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/karel/HeadlessKarel.html\" title=\"class in stanford.karel\">HeadlessKarel</a></td>\n<td class=\"colLast\">\n<div class=\"block\">A version of a Karel superclass that doesn't crash when run\n in headless (non-graphical) mode.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\">HeadlessSuperKarel</a></td>\n<td class=\"colLast\">\n<div class=\"block\">Extended Karel class .</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/karel/Karel.html\" title=\"class in stanford.karel\">Karel</a></td>\n<td class=\"colLast\">\n<div class=\"block\">The <code>Karel</code> class represents the simplest possible Karel the Robot\n object.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/karel/KarelControlPanel.html\" title=\"class in stanford.karel\">KarelControlPanel</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\">KarelProgram</a></td>\n<td class=\"colLast\">\n<div class=\"block\">This class is a subclass of <code><a href=\"Program.html\">Program</a></code>\n that runs a Karel program.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\">KarelWorld</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\">SuperKarel</a></td>\n<td class=\"colLast\">\n<div class=\"block\">Extended Karel class .</div>\n</td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Enum Summary table, listing enums, and an explanation\">\n<caption><span>Enum Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Enum</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/karel/KarelDirection.html\" title=\"enum in stanford.karel\">KarelDirection</a></td>\n<td class=\"colLast\">\n<div class=\"block\">An enum internally used to keep track of Karel directions.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/karel/KarelProgram.State.html\" title=\"enum in stanford.karel\">KarelProgram.State</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n</tbody>\n</table>\n</li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li class=\"navBarCell1Rev\">Package</li>\n<li>Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/cs106/util/package-summary.html\">Prev&nbsp;Package</a></li>\n<li>Next&nbsp;Package</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/karel/package-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/karel/package-tree.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:33:14 PDT 2017 -->\n<title>stanford.karel Class Hierarchy</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"stanford.karel Class Hierarchy\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/cs106/util/package-tree.html\">Prev</a></li>\n<li>Next</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/karel/package-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 class=\"title\">Hierarchy For Package stanford.karel</h1>\n<span class=\"packageHierarchyLabel\">Package Hierarchies:</span>\n<ul class=\"horizontal\">\n<li><a href=\"../../overview-tree.html\">All Packages</a></li>\n</ul>\n</div>\n<div class=\"contentContainer\">\n<h2 title=\"Class Hierarchy\">Class Hierarchy</h2>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Object</span></a>\n<ul>\n<li type=\"circle\">java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\"><span class=\"typeNameLink\">Component</span></a> (implements java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\"><span class=\"typeNameLink\">Container</span></a>\n<ul>\n<li type=\"circle\">javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\"><span class=\"typeNameLink\">JComponent</span></a> (implements java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html?is-external=true\" title=\"class or interface in javax.swing\"><span class=\"typeNameLink\">JPanel</span></a> (implements javax.accessibility.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>)\n<ul>\n<li type=\"circle\">stanford.karel.<a href=\"../../stanford/karel/KarelControlPanel.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">KarelControlPanel</span></a> (implements java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/AdjustmentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">AdjustmentListener</a>, javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeListener</a>, java.util.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observer.html?is-external=true\" title=\"class or interface in java.util\">Observer</a>)</li>\n</ul>\n</li>\n<li type=\"circle\">stanford.karel.<a href=\"../../stanford/karel/KarelWorld.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">KarelWorld</span></a></li>\n</ul>\n</li>\n<li type=\"circle\">java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\"><span class=\"typeNameLink\">Panel</span></a> (implements javax.accessibility.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>)\n<ul>\n<li type=\"circle\">java.applet.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\"><span class=\"typeNameLink\">Applet</span></a>\n<ul>\n<li type=\"circle\">javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\"><span class=\"typeNameLink\">JApplet</span></a> (implements javax.accessibility.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/RootPaneContainer.html?is-external=true\" title=\"class or interface in javax.swing\">RootPaneContainer</a>)\n<ul>\n<li type=\"circle\">acm.program.<a href=\"../../acm/program/Program.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Program</span></a> (implements java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/AdjustmentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">AdjustmentListener</a>, javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ContainerListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ContainerListener</a>, javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusListener</a>, acm.io.IOModel, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ItemListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ItemListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>, javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListDataListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListDataListener</a>, javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListSelectionListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListSelectionListener</a>, javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/MouseInputListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">MouseInputListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseWheelListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseWheelListener</a>, javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/PopupMenuListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">PopupMenuListener</a>, acm.program.<a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a>, java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/TextListener.html?is-external=true\" title=\"class or interface in java.awt.event\">TextListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowFocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowFocusListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowStateListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowStateListener</a>)\n<ul>\n<li type=\"circle\">stanford.karel.<a href=\"../../stanford/karel/Karel.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">Karel</span></a> (implements stanford.karel.<a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\">KarelInterface</a>, java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a>)\n<ul>\n<li type=\"circle\">stanford.karel.<a href=\"../../stanford/karel/SuperKarel.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">SuperKarel</span></a></li>\n</ul>\n</li>\n<li type=\"circle\">stanford.karel.<a href=\"../../stanford/karel/KarelProgram.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">KarelProgram</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li type=\"circle\">stanford.karel.<a href=\"../../stanford/karel/HeadlessKarel.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">HeadlessKarel</span></a>\n<ul>\n<li type=\"circle\">stanford.karel.<a href=\"../../stanford/karel/HeadlessSuperKarel.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">HeadlessSuperKarel</span></a></li>\n</ul>\n</li>\n<li type=\"circle\">java.util.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true\" title=\"class or interface in java.util\"><span class=\"typeNameLink\">Observable</span></a>\n<ul>\n<li type=\"circle\">stanford.karel.<a href=\"../../stanford/karel/Event.html\" title=\"class in stanford.karel\"><span class=\"typeNameLink\">Event</span></a>&lt;T&gt;</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<h2 title=\"Interface Hierarchy\">Interface Hierarchy</h2>\n<ul>\n<li type=\"circle\">stanford.karel.<a href=\"../../stanford/karel/KarelInterface.html\" title=\"interface in stanford.karel\"><span class=\"typeNameLink\">KarelInterface</span></a></li>\n</ul>\n<h2 title=\"Enum Hierarchy\">Enum Hierarchy</h2>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Object</span></a>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Enum</span></a>&lt;E&gt; (implements java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true\" title=\"class or interface in java.lang\">Comparable</a>&lt;T&gt;, java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">stanford.karel.<a href=\"../../stanford/karel/KarelProgram.State.html\" title=\"enum in stanford.karel\"><span class=\"typeNameLink\">KarelProgram.State</span></a></li>\n<li type=\"circle\">stanford.karel.<a href=\"../../stanford/karel/KarelDirection.html\" title=\"enum in stanford.karel\"><span class=\"typeNameLink\">KarelDirection</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/cs106/util/package-tree.html\">Prev</a></li>\n<li>Next</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/karel/package-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/AutograderInput.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>AutograderInput</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"AutograderInput\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":9,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Class</li>\n<li><a href=\"../../stanford/spl/AutograderInput_addButton.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderInput.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderInput.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class AutograderInput\" class=\"title\">Class AutograderInput</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true\" title=\"class or interface in java.util\">java.util.Observable</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.AutograderInput</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">AutograderInput</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true\" title=\"class or interface in java.util\">Observable</a>\nimplements <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderInput.html#AutograderInput-stanford.spl.JavaBackEnd-\">AutograderInput</a></span>(<a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;javaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderInput.html#actionPerformed-java.awt.event.ActionEvent-\">actionPerformed</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;event)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderInput.html#addBlank--\">addBlank</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderInput.html#addButton-java.lang.String-\">addButton</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderInput.html#addButton-java.lang.String-java.lang.String-\">addButton</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;input)</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderInput.html#addCategory-java.lang.String-\">addCategory</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderInput.html#buttonCount--\">buttonCount</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderInput.html#getColumns--\">getColumns</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../stanford/spl/AutograderInput.html\" title=\"class in stanford.spl\">AutograderInput</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderInput.html#getInstance-stanford.spl.JavaBackEnd-\">getInstance</a></span>(<a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;javaBackEnd)</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderInput.html#isEmpty--\">isEmpty</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderInput.html#removeButton-java.lang.String-\">removeButton</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderInput.html#removeCategory-java.lang.String-\">removeCategory</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderInput.html#setColumns-int-\">setColumns</a></span>(int&nbsp;columns)</code>&nbsp;</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderInput.html#setVisible-boolean-\">setVisible</a></span>(boolean&nbsp;value)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.util.Observable\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.util.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true\" title=\"class or interface in java.util\">Observable</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#addObserver-java.util.Observer-\" title=\"class or interface in java.util\">addObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#clearChanged--\" title=\"class or interface in java.util\">clearChanged</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#countObservers--\" title=\"class or interface in java.util\">countObservers</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#deleteObserver-java.util.Observer-\" title=\"class or interface in java.util\">deleteObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#deleteObservers--\" title=\"class or interface in java.util\">deleteObservers</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#hasChanged--\" title=\"class or interface in java.util\">hasChanged</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#notifyObservers--\" title=\"class or interface in java.util\">notifyObservers</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#notifyObservers-java.lang.Object-\" title=\"class or interface in java.util\">notifyObservers</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#setChanged--\" title=\"class or interface in java.util\">setChanged</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"AutograderInput-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>AutograderInput</h4>\n<pre>public&nbsp;AutograderInput(<a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;javaBackEnd)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"getInstance-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getInstance</h4>\n<pre>public static&nbsp;<a href=\"../../stanford/spl/AutograderInput.html\" title=\"class in stanford.spl\">AutograderInput</a>&nbsp;getInstance(<a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;javaBackEnd)</pre>\n</li>\n</ul>\n<a name=\"addBlank--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addBlank</h4>\n<pre>public&nbsp;void&nbsp;addBlank()</pre>\n</li>\n</ul>\n<a name=\"addButton-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addButton</h4>\n<pre>public&nbsp;void&nbsp;addButton(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</pre>\n</li>\n</ul>\n<a name=\"addButton-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addButton</h4>\n<pre>public&nbsp;void&nbsp;addButton(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n                      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;input)</pre>\n</li>\n</ul>\n<a name=\"addCategory-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addCategory</h4>\n<pre>public&nbsp;void&nbsp;addCategory(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n</li>\n</ul>\n<a name=\"actionPerformed-java.awt.event.ActionEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>actionPerformed</h4>\n<pre>public&nbsp;void&nbsp;actionPerformed(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;event)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true#actionPerformed-java.awt.event.ActionEvent-\" title=\"class or interface in java.awt.event\">actionPerformed</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"isEmpty--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isEmpty</h4>\n<pre>public&nbsp;boolean&nbsp;isEmpty()</pre>\n</li>\n</ul>\n<a name=\"buttonCount--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>buttonCount</h4>\n<pre>public&nbsp;int&nbsp;buttonCount()</pre>\n</li>\n</ul>\n<a name=\"getColumns--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getColumns</h4>\n<pre>public&nbsp;int&nbsp;getColumns()</pre>\n</li>\n</ul>\n<a name=\"removeButton-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeButton</h4>\n<pre>public&nbsp;void&nbsp;removeButton(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</pre>\n</li>\n</ul>\n<a name=\"removeCategory-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeCategory</h4>\n<pre>public&nbsp;void&nbsp;removeCategory(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n</li>\n</ul>\n<a name=\"setColumns-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setColumns</h4>\n<pre>public&nbsp;void&nbsp;setColumns(int&nbsp;columns)</pre>\n</li>\n</ul>\n<a name=\"setVisible-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>setVisible</h4>\n<pre>public&nbsp;void&nbsp;setVisible(boolean&nbsp;value)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li>Prev&nbsp;Class</li>\n<li><a href=\"../../stanford/spl/AutograderInput_addButton.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderInput.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderInput.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/AutograderInput_addButton.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>AutograderInput_addButton</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"AutograderInput_addButton\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderInput.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/AutograderInput_addCategory.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderInput_addButton.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderInput_addButton.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class AutograderInput_addButton\" class=\"title\">Class AutograderInput_addButton</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.AutograderInput_addButton</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">AutograderInput_addButton</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderInput_addButton.html#AutograderInput_addButton--\">AutograderInput_addButton</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderInput_addButton.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"AutograderInput_addButton--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>AutograderInput_addButton</h4>\n<pre>public&nbsp;AutograderInput_addButton()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderInput.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/AutograderInput_addCategory.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderInput_addButton.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderInput_addButton.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/AutograderInput_addCategory.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>AutograderInput_addCategory</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"AutograderInput_addCategory\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderInput_addButton.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/AutograderInput_removeButton.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderInput_addCategory.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderInput_addCategory.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class AutograderInput_addCategory\" class=\"title\">Class AutograderInput_addCategory</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.AutograderInput_addCategory</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">AutograderInput_addCategory</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderInput_addCategory.html#AutograderInput_addCategory--\">AutograderInput_addCategory</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderInput_addCategory.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"AutograderInput_addCategory--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>AutograderInput_addCategory</h4>\n<pre>public&nbsp;AutograderInput_addCategory()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderInput_addButton.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/AutograderInput_removeButton.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderInput_addCategory.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderInput_addCategory.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/AutograderInput_removeButton.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>AutograderInput_removeButton</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"AutograderInput_removeButton\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderInput_addCategory.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/AutograderInput_removeCategory.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderInput_removeButton.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderInput_removeButton.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class AutograderInput_removeButton\" class=\"title\">Class AutograderInput_removeButton</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.AutograderInput_removeButton</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">AutograderInput_removeButton</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderInput_removeButton.html#AutograderInput_removeButton--\">AutograderInput_removeButton</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderInput_removeButton.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"AutograderInput_removeButton--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>AutograderInput_removeButton</h4>\n<pre>public&nbsp;AutograderInput_removeButton()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderInput_addCategory.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/AutograderInput_removeCategory.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderInput_removeButton.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderInput_removeButton.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/AutograderInput_removeCategory.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>AutograderInput_removeCategory</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"AutograderInput_removeCategory\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderInput_removeButton.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/AutograderInput_setColumns.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderInput_removeCategory.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderInput_removeCategory.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class AutograderInput_removeCategory\" class=\"title\">Class AutograderInput_removeCategory</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.AutograderInput_removeCategory</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">AutograderInput_removeCategory</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderInput_removeCategory.html#AutograderInput_removeCategory--\">AutograderInput_removeCategory</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderInput_removeCategory.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"AutograderInput_removeCategory--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>AutograderInput_removeCategory</h4>\n<pre>public&nbsp;AutograderInput_removeCategory()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderInput_removeButton.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/AutograderInput_setColumns.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderInput_removeCategory.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderInput_removeCategory.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/AutograderInput_setColumns.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>AutograderInput_setColumns</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"AutograderInput_setColumns\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderInput_removeCategory.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/AutograderInput_setVisible.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderInput_setColumns.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderInput_setColumns.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class AutograderInput_setColumns\" class=\"title\">Class AutograderInput_setColumns</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.AutograderInput_setColumns</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">AutograderInput_setColumns</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderInput_setColumns.html#AutograderInput_setColumns--\">AutograderInput_setColumns</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderInput_setColumns.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"AutograderInput_setColumns--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>AutograderInput_setColumns</h4>\n<pre>public&nbsp;AutograderInput_setColumns()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderInput_removeCategory.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/AutograderInput_setVisible.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderInput_setColumns.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderInput_setColumns.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/AutograderInput_setVisible.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>AutograderInput_setVisible</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"AutograderInput_setVisible\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderInput_setColumns.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/AutograderUnitTest_addTest.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderInput_setVisible.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderInput_setVisible.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class AutograderInput_setVisible\" class=\"title\">Class AutograderInput_setVisible</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.AutograderInput_setVisible</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">AutograderInput_setVisible</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderInput_setVisible.html#AutograderInput_setVisible--\">AutograderInput_setVisible</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderInput_setVisible.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"AutograderInput_setVisible--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>AutograderInput_setVisible</h4>\n<pre>public&nbsp;AutograderInput_setVisible()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderInput_setColumns.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/AutograderUnitTest_addTest.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderInput_setVisible.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderInput_setVisible.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/AutograderUnitTestGUI.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>AutograderUnitTestGUI</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"AutograderUnitTestGUI\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":9,\"i8\":9,\"i9\":10,\"i10\":9,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":10,\"i16\":10,\"i17\":10,\"i18\":10,\"i19\":10,\"i20\":10,\"i21\":10,\"i22\":10,\"i23\":10,\"i24\":10,\"i25\":10,\"i26\":10,\"i27\":10,\"i28\":10,\"i29\":10,\"i30\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderUnitTest_setWindowDescriptionText.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/Base64.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderUnitTestGUI.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderUnitTestGUI.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class AutograderUnitTestGUI\" class=\"title\">Class AutograderUnitTestGUI</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true\" title=\"class or interface in java.util\">java.util.Observable</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.AutograderUnitTestGUI</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a>, <a href=\"../../stanford/cs106/junit/JUnitListener.html\" title=\"interface in stanford.cs106.junit\">JUnitListener</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">AutograderUnitTestGUI</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true\" title=\"class or interface in java.util\">Observable</a>\nimplements <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, <a href=\"../../stanford/cs106/junit/JUnitListener.html\" title=\"interface in stanford.cs106.junit\">JUnitListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTestGUI.html#AutograderUnitTestGUI-stanford.spl.JavaBackEnd-java.lang.String-\">AutograderUnitTestGUI</a></span>(<a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;javaBackEnd,\n                     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;title)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTestGUI.html#actionPerformed-java.awt.event.ActionEvent-\">actionPerformed</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;event)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTestGUI.html#addCategory-java.lang.String-\">addCategory</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTestGUI.html#addTest-java.lang.String-java.lang.String-\">addTest</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;testName,\n       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;categoryName)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTestGUI.html#catchExceptions--\">catchExceptions</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTestGUI.html#clearTestResults--\">clearTestResults</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTestGUI.html#clearTests--\">clearTests</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTestGUI.html#getFailedCount--\">getFailedCount</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../stanford/spl/AutograderUnitTestGUI.html\" title=\"class in stanford.spl\">AutograderUnitTestGUI</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTestGUI.html#getInstance-stanford.spl.JavaBackEnd-\">getInstance</a></span>(<a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;javaBackEnd)</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../stanford/spl/AutograderUnitTestGUI.html\" title=\"class in stanford.spl\">AutograderUnitTestGUI</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTestGUI.html#getInstance-stanford.spl.JavaBackEnd-boolean-\">getInstance</a></span>(<a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;javaBackEnd,\n           boolean&nbsp;isStyleCheck)</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTestGUI.html#getPassedCount--\">getPassedCount</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../stanford/spl/AutograderUnitTestGUI.html\" title=\"class in stanford.spl\">AutograderUnitTestGUI</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTestGUI.html#getStyleCheckInstance-stanford.spl.JavaBackEnd-\">getStyleCheckInstance</a></span>(<a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;javaBackEnd)</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTestGUI.html#getTestCount--\">getTestCount</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTestGUI.html#isChecked-java.lang.String-\">isChecked</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;testFullName)</code>&nbsp;</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTestGUI.html#isEmpty--\">isEmpty</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTestGUI.html#isStyleCheck--\">isStyleCheck</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTestGUI.html#isVisible--\">isVisible</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTestGUI.html#mouseClicked-java.awt.event.MouseEvent-\">mouseClicked</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;event)</code>&nbsp;</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTestGUI.html#mouseEntered-java.awt.event.MouseEvent-\">mouseEntered</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;event)</code>&nbsp;</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTestGUI.html#mouseExited-java.awt.event.MouseEvent-\">mouseExited</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;event)</code>&nbsp;</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTestGUI.html#mousePressed-java.awt.event.MouseEvent-\">mousePressed</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;event)</code>&nbsp;</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTestGUI.html#mouseReleased-java.awt.event.MouseEvent-\">mouseReleased</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;event)</code>&nbsp;</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTestGUI.html#setCheckboxesShown-boolean-\">setCheckboxesShown</a></span>(boolean&nbsp;shown)</code>&nbsp;</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTestGUI.html#setChecked-java.lang.String-boolean-\">setChecked</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;testFullName,\n          boolean&nbsp;checked)</code>&nbsp;</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTestGUI.html#setDescription-java.lang.String-\">setDescription</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</code>&nbsp;</td>\n</tr>\n<tr id=\"i24\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTestGUI.html#setTestCounts-int-int-\">setTestCounts</a></span>(int&nbsp;passCount,\n             int&nbsp;testCount)</code>&nbsp;</td>\n</tr>\n<tr id=\"i25\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTestGUI.html#setTestDetails-java.lang.String-java.util.Map-\">setTestDetails</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;testFullName,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;details)</code>&nbsp;</td>\n</tr>\n<tr id=\"i26\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTestGUI.html#setTestDetailsMessage-java.lang.String-java.lang.String-\">setTestDetailsMessage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;testName,\n                     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;detailsMessage)</code>&nbsp;</td>\n</tr>\n<tr id=\"i27\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTestGUI.html#setTestingCompleted-boolean-\">setTestingCompleted</a></span>(boolean&nbsp;completed)</code>&nbsp;</td>\n</tr>\n<tr id=\"i28\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTestGUI.html#setTestResult-java.lang.String-java.lang.String-\">setTestResult</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;testFullName,\n             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;result)</code>&nbsp;</td>\n</tr>\n<tr id=\"i29\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTestGUI.html#setTestRuntime-java.lang.String-int-\">setTestRuntime</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;testFullName,\n              int&nbsp;runtimeMS)</code>&nbsp;</td>\n</tr>\n<tr id=\"i30\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTestGUI.html#setVisible-boolean-\">setVisible</a></span>(boolean&nbsp;visible)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.util.Observable\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.util.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true\" title=\"class or interface in java.util\">Observable</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#addObserver-java.util.Observer-\" title=\"class or interface in java.util\">addObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#clearChanged--\" title=\"class or interface in java.util\">clearChanged</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#countObservers--\" title=\"class or interface in java.util\">countObservers</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#deleteObserver-java.util.Observer-\" title=\"class or interface in java.util\">deleteObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#deleteObservers--\" title=\"class or interface in java.util\">deleteObservers</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#hasChanged--\" title=\"class or interface in java.util\">hasChanged</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#notifyObservers--\" title=\"class or interface in java.util\">notifyObservers</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#notifyObservers-java.lang.Object-\" title=\"class or interface in java.util\">notifyObservers</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true#setChanged--\" title=\"class or interface in java.util\">setChanged</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"AutograderUnitTestGUI-stanford.spl.JavaBackEnd-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>AutograderUnitTestGUI</h4>\n<pre>public&nbsp;AutograderUnitTestGUI(<a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;javaBackEnd,\n                             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;title)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"getInstance-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getInstance</h4>\n<pre>public static&nbsp;<a href=\"../../stanford/spl/AutograderUnitTestGUI.html\" title=\"class in stanford.spl\">AutograderUnitTestGUI</a>&nbsp;getInstance(<a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;javaBackEnd)</pre>\n</li>\n</ul>\n<a name=\"getInstance-stanford.spl.JavaBackEnd-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getInstance</h4>\n<pre>public static&nbsp;<a href=\"../../stanford/spl/AutograderUnitTestGUI.html\" title=\"class in stanford.spl\">AutograderUnitTestGUI</a>&nbsp;getInstance(<a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;javaBackEnd,\n                                                boolean&nbsp;isStyleCheck)</pre>\n</li>\n</ul>\n<a name=\"getStyleCheckInstance-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getStyleCheckInstance</h4>\n<pre>public static&nbsp;<a href=\"../../stanford/spl/AutograderUnitTestGUI.html\" title=\"class in stanford.spl\">AutograderUnitTestGUI</a>&nbsp;getStyleCheckInstance(<a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;javaBackEnd)</pre>\n</li>\n</ul>\n<a name=\"actionPerformed-java.awt.event.ActionEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>actionPerformed</h4>\n<pre>public&nbsp;void&nbsp;actionPerformed(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;event)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true#actionPerformed-java.awt.event.ActionEvent-\" title=\"class or interface in java.awt.event\">actionPerformed</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"addCategory-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addCategory</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a>&nbsp;addCategory(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;name)</pre>\n</li>\n</ul>\n<a name=\"addTest-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addTest</h4>\n<pre>public&nbsp;void&nbsp;addTest(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;testName,\n                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;categoryName)</pre>\n</li>\n</ul>\n<a name=\"catchExceptions--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>catchExceptions</h4>\n<pre>public&nbsp;boolean&nbsp;catchExceptions()</pre>\n</li>\n</ul>\n<a name=\"clearTests--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clearTests</h4>\n<pre>public&nbsp;void&nbsp;clearTests()</pre>\n</li>\n</ul>\n<a name=\"clearTestResults--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clearTestResults</h4>\n<pre>public&nbsp;void&nbsp;clearTestResults()</pre>\n</li>\n</ul>\n<a name=\"getFailedCount--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFailedCount</h4>\n<pre>public&nbsp;int&nbsp;getFailedCount()</pre>\n</li>\n</ul>\n<a name=\"getPassedCount--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getPassedCount</h4>\n<pre>public&nbsp;int&nbsp;getPassedCount()</pre>\n</li>\n</ul>\n<a name=\"getTestCount--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getTestCount</h4>\n<pre>public&nbsp;int&nbsp;getTestCount()</pre>\n</li>\n</ul>\n<a name=\"isChecked-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isChecked</h4>\n<pre>public&nbsp;boolean&nbsp;isChecked(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;testFullName)</pre>\n</li>\n</ul>\n<a name=\"isEmpty--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isEmpty</h4>\n<pre>public&nbsp;boolean&nbsp;isEmpty()</pre>\n</li>\n</ul>\n<a name=\"isStyleCheck--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isStyleCheck</h4>\n<pre>public&nbsp;boolean&nbsp;isStyleCheck()</pre>\n</li>\n</ul>\n<a name=\"isVisible--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isVisible</h4>\n<pre>public&nbsp;boolean&nbsp;isVisible()</pre>\n</li>\n</ul>\n<a name=\"mouseClicked-java.awt.event.MouseEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>mouseClicked</h4>\n<pre>public&nbsp;void&nbsp;mouseClicked(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;event)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true#mouseClicked-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseClicked</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"mouseEntered-java.awt.event.MouseEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>mouseEntered</h4>\n<pre>public&nbsp;void&nbsp;mouseEntered(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;event)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true#mouseEntered-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseEntered</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"mouseExited-java.awt.event.MouseEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>mouseExited</h4>\n<pre>public&nbsp;void&nbsp;mouseExited(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;event)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true#mouseExited-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseExited</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"mousePressed-java.awt.event.MouseEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>mousePressed</h4>\n<pre>public&nbsp;void&nbsp;mousePressed(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;event)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true#mousePressed-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mousePressed</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"mouseReleased-java.awt.event.MouseEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>mouseReleased</h4>\n<pre>public&nbsp;void&nbsp;mouseReleased(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;event)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true#mouseReleased-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseReleased</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setChecked-java.lang.String-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setChecked</h4>\n<pre>public&nbsp;void&nbsp;setChecked(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;testFullName,\n                       boolean&nbsp;checked)</pre>\n</li>\n</ul>\n<a name=\"setDescription-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setDescription</h4>\n<pre>public&nbsp;void&nbsp;setDescription(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</pre>\n</li>\n</ul>\n<a name=\"setTestCounts-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setTestCounts</h4>\n<pre>public&nbsp;void&nbsp;setTestCounts(int&nbsp;passCount,\n                          int&nbsp;testCount)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/cs106/junit/JUnitListener.html#setTestCounts-int-int-\">setTestCounts</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/cs106/junit/JUnitListener.html\" title=\"interface in stanford.cs106.junit\">JUnitListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setTestDetails-java.lang.String-java.util.Map-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setTestDetails</h4>\n<pre>public&nbsp;void&nbsp;setTestDetails(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;testFullName,\n                           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true\" title=\"class or interface in java.util\">Map</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&gt;&nbsp;details)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/cs106/junit/JUnitListener.html#setTestDetails-java.lang.String-java.util.Map-\">setTestDetails</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/cs106/junit/JUnitListener.html\" title=\"interface in stanford.cs106.junit\">JUnitListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setTestDetailsMessage-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setTestDetailsMessage</h4>\n<pre>public&nbsp;void&nbsp;setTestDetailsMessage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;testName,\n                                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;detailsMessage)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/cs106/junit/JUnitListener.html#setTestDetailsMessage-java.lang.String-java.lang.String-\">setTestDetailsMessage</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/cs106/junit/JUnitListener.html\" title=\"interface in stanford.cs106.junit\">JUnitListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setTestingCompleted-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setTestingCompleted</h4>\n<pre>public&nbsp;void&nbsp;setTestingCompleted(boolean&nbsp;completed)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/cs106/junit/JUnitListener.html#setTestingCompleted-boolean-\">setTestingCompleted</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/cs106/junit/JUnitListener.html\" title=\"interface in stanford.cs106.junit\">JUnitListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setTestResult-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setTestResult</h4>\n<pre>public&nbsp;boolean&nbsp;setTestResult(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;testFullName,\n                             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;result)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/cs106/junit/JUnitListener.html#setTestResult-java.lang.String-java.lang.String-\">setTestResult</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/cs106/junit/JUnitListener.html\" title=\"interface in stanford.cs106.junit\">JUnitListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setTestRuntime-java.lang.String-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setTestRuntime</h4>\n<pre>public&nbsp;boolean&nbsp;setTestRuntime(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;testFullName,\n                              int&nbsp;runtimeMS)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/cs106/junit/JUnitListener.html#setTestRuntime-java.lang.String-int-\">setTestRuntime</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/cs106/junit/JUnitListener.html\" title=\"interface in stanford.cs106.junit\">JUnitListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setCheckboxesShown-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setCheckboxesShown</h4>\n<pre>public&nbsp;void&nbsp;setCheckboxesShown(boolean&nbsp;shown)</pre>\n</li>\n</ul>\n<a name=\"setVisible-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>setVisible</h4>\n<pre>public&nbsp;void&nbsp;setVisible(boolean&nbsp;visible)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderUnitTest_setWindowDescriptionText.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/Base64.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderUnitTestGUI.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderUnitTestGUI.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/AutograderUnitTest_addTest.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>AutograderUnitTest_addTest</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"AutograderUnitTest_addTest\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderInput_setVisible.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/AutograderUnitTest_catchExceptions.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderUnitTest_addTest.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderUnitTest_addTest.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class AutograderUnitTest_addTest\" class=\"title\">Class AutograderUnitTest_addTest</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.AutograderUnitTest_addTest</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">AutograderUnitTest_addTest</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTest_addTest.html#AutograderUnitTest_addTest--\">AutograderUnitTest_addTest</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTest_addTest.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"AutograderUnitTest_addTest--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>AutograderUnitTest_addTest</h4>\n<pre>public&nbsp;AutograderUnitTest_addTest()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderInput_setVisible.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/AutograderUnitTest_catchExceptions.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderUnitTest_addTest.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderUnitTest_addTest.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/AutograderUnitTest_catchExceptions.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>AutograderUnitTest_catchExceptions</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"AutograderUnitTest_catchExceptions\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderUnitTest_addTest.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/AutograderUnitTest_clearTestResults.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderUnitTest_catchExceptions.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderUnitTest_catchExceptions.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class AutograderUnitTest_catchExceptions\" class=\"title\">Class AutograderUnitTest_catchExceptions</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.AutograderUnitTest_catchExceptions</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">AutograderUnitTest_catchExceptions</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTest_catchExceptions.html#AutograderUnitTest_catchExceptions--\">AutograderUnitTest_catchExceptions</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTest_catchExceptions.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;scanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"AutograderUnitTest_catchExceptions--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>AutograderUnitTest_catchExceptions</h4>\n<pre>public&nbsp;AutograderUnitTest_catchExceptions()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;scanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderUnitTest_addTest.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/AutograderUnitTest_clearTestResults.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderUnitTest_catchExceptions.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderUnitTest_catchExceptions.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/AutograderUnitTest_clearTestResults.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>AutograderUnitTest_clearTestResults</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"AutograderUnitTest_clearTestResults\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderUnitTest_catchExceptions.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/AutograderUnitTest_clearTests.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderUnitTest_clearTestResults.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderUnitTest_clearTestResults.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class AutograderUnitTest_clearTestResults\" class=\"title\">Class AutograderUnitTest_clearTestResults</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.AutograderUnitTest_clearTestResults</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">AutograderUnitTest_clearTestResults</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTest_clearTestResults.html#AutograderUnitTest_clearTestResults--\">AutograderUnitTest_clearTestResults</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTest_clearTestResults.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"AutograderUnitTest_clearTestResults--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>AutograderUnitTest_clearTestResults</h4>\n<pre>public&nbsp;AutograderUnitTest_clearTestResults()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderUnitTest_catchExceptions.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/AutograderUnitTest_clearTests.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderUnitTest_clearTestResults.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderUnitTest_clearTestResults.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/AutograderUnitTest_clearTests.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>AutograderUnitTest_clearTests</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"AutograderUnitTest_clearTests\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderUnitTest_clearTestResults.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/AutograderUnitTest_isChecked.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderUnitTest_clearTests.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderUnitTest_clearTests.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class AutograderUnitTest_clearTests\" class=\"title\">Class AutograderUnitTest_clearTests</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.AutograderUnitTest_clearTests</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">AutograderUnitTest_clearTests</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTest_clearTests.html#AutograderUnitTest_clearTests--\">AutograderUnitTest_clearTests</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTest_clearTests.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"AutograderUnitTest_clearTests--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>AutograderUnitTest_clearTests</h4>\n<pre>public&nbsp;AutograderUnitTest_clearTests()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderUnitTest_clearTestResults.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/AutograderUnitTest_isChecked.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderUnitTest_clearTests.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderUnitTest_clearTests.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/AutograderUnitTest_isChecked.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>AutograderUnitTest_isChecked</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"AutograderUnitTest_isChecked\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderUnitTest_clearTests.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/AutograderUnitTest_setChecked.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderUnitTest_isChecked.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderUnitTest_isChecked.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class AutograderUnitTest_isChecked\" class=\"title\">Class AutograderUnitTest_isChecked</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.AutograderUnitTest_isChecked</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">AutograderUnitTest_isChecked</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTest_isChecked.html#AutograderUnitTest_isChecked--\">AutograderUnitTest_isChecked</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTest_isChecked.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"AutograderUnitTest_isChecked--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>AutograderUnitTest_isChecked</h4>\n<pre>public&nbsp;AutograderUnitTest_isChecked()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderUnitTest_clearTests.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/AutograderUnitTest_setChecked.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderUnitTest_isChecked.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderUnitTest_isChecked.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/AutograderUnitTest_setChecked.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>AutograderUnitTest_setChecked</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"AutograderUnitTest_setChecked\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderUnitTest_isChecked.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/AutograderUnitTest_setTestCounts.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderUnitTest_setChecked.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderUnitTest_setChecked.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class AutograderUnitTest_setChecked\" class=\"title\">Class AutograderUnitTest_setChecked</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.AutograderUnitTest_setChecked</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">AutograderUnitTest_setChecked</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTest_setChecked.html#AutograderUnitTest_setChecked--\">AutograderUnitTest_setChecked</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTest_setChecked.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"AutograderUnitTest_setChecked--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>AutograderUnitTest_setChecked</h4>\n<pre>public&nbsp;AutograderUnitTest_setChecked()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderUnitTest_isChecked.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/AutograderUnitTest_setTestCounts.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderUnitTest_setChecked.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderUnitTest_setChecked.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/AutograderUnitTest_setTestCounts.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>AutograderUnitTest_setTestCounts</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"AutograderUnitTest_setTestCounts\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderUnitTest_setChecked.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/AutograderUnitTest_setTestDetails.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderUnitTest_setTestCounts.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderUnitTest_setTestCounts.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class AutograderUnitTest_setTestCounts\" class=\"title\">Class AutograderUnitTest_setTestCounts</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.AutograderUnitTest_setTestCounts</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">AutograderUnitTest_setTestCounts</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTest_setTestCounts.html#AutograderUnitTest_setTestCounts--\">AutograderUnitTest_setTestCounts</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTest_setTestCounts.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"AutograderUnitTest_setTestCounts--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>AutograderUnitTest_setTestCounts</h4>\n<pre>public&nbsp;AutograderUnitTest_setTestCounts()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderUnitTest_setChecked.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/AutograderUnitTest_setTestDetails.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderUnitTest_setTestCounts.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderUnitTest_setTestCounts.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/AutograderUnitTest_setTestDetails.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>AutograderUnitTest_setTestDetails</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"AutograderUnitTest_setTestDetails\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderUnitTest_setTestCounts.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/AutograderUnitTest_setTestingCompleted.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderUnitTest_setTestDetails.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderUnitTest_setTestDetails.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class AutograderUnitTest_setTestDetails\" class=\"title\">Class AutograderUnitTest_setTestDetails</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.AutograderUnitTest_setTestDetails</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">AutograderUnitTest_setTestDetails</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTest_setTestDetails.html#AutograderUnitTest_setTestDetails--\">AutograderUnitTest_setTestDetails</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTest_setTestDetails.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"AutograderUnitTest_setTestDetails--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>AutograderUnitTest_setTestDetails</h4>\n<pre>public&nbsp;AutograderUnitTest_setTestDetails()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderUnitTest_setTestCounts.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/AutograderUnitTest_setTestingCompleted.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderUnitTest_setTestDetails.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderUnitTest_setTestDetails.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/AutograderUnitTest_setTestResult.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>AutograderUnitTest_setTestResult</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"AutograderUnitTest_setTestResult\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderUnitTest_setTestingCompleted.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/AutograderUnitTest_setTestRuntime.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderUnitTest_setTestResult.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderUnitTest_setTestResult.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class AutograderUnitTest_setTestResult\" class=\"title\">Class AutograderUnitTest_setTestResult</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.AutograderUnitTest_setTestResult</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">AutograderUnitTest_setTestResult</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTest_setTestResult.html#AutograderUnitTest_setTestResult--\">AutograderUnitTest_setTestResult</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTest_setTestResult.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"AutograderUnitTest_setTestResult--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>AutograderUnitTest_setTestResult</h4>\n<pre>public&nbsp;AutograderUnitTest_setTestResult()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderUnitTest_setTestingCompleted.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/AutograderUnitTest_setTestRuntime.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderUnitTest_setTestResult.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderUnitTest_setTestResult.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/AutograderUnitTest_setTestRuntime.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>AutograderUnitTest_setTestRuntime</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"AutograderUnitTest_setTestRuntime\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderUnitTest_setTestResult.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/AutograderUnitTest_setVisible.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderUnitTest_setTestRuntime.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderUnitTest_setTestRuntime.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class AutograderUnitTest_setTestRuntime\" class=\"title\">Class AutograderUnitTest_setTestRuntime</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.AutograderUnitTest_setTestRuntime</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">AutograderUnitTest_setTestRuntime</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTest_setTestRuntime.html#AutograderUnitTest_setTestRuntime--\">AutograderUnitTest_setTestRuntime</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTest_setTestRuntime.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"AutograderUnitTest_setTestRuntime--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>AutograderUnitTest_setTestRuntime</h4>\n<pre>public&nbsp;AutograderUnitTest_setTestRuntime()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderUnitTest_setTestResult.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/AutograderUnitTest_setVisible.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderUnitTest_setTestRuntime.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderUnitTest_setTestRuntime.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/AutograderUnitTest_setTestingCompleted.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>AutograderUnitTest_setTestingCompleted</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"AutograderUnitTest_setTestingCompleted\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderUnitTest_setTestDetails.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/AutograderUnitTest_setTestResult.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderUnitTest_setTestingCompleted.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderUnitTest_setTestingCompleted.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class AutograderUnitTest_setTestingCompleted\" class=\"title\">Class AutograderUnitTest_setTestingCompleted</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.AutograderUnitTest_setTestingCompleted</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">AutograderUnitTest_setTestingCompleted</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTest_setTestingCompleted.html#AutograderUnitTest_setTestingCompleted--\">AutograderUnitTest_setTestingCompleted</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTest_setTestingCompleted.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"AutograderUnitTest_setTestingCompleted--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>AutograderUnitTest_setTestingCompleted</h4>\n<pre>public&nbsp;AutograderUnitTest_setTestingCompleted()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderUnitTest_setTestDetails.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/AutograderUnitTest_setTestResult.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderUnitTest_setTestingCompleted.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderUnitTest_setTestingCompleted.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/AutograderUnitTest_setVisible.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>AutograderUnitTest_setVisible</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"AutograderUnitTest_setVisible\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderUnitTest_setTestRuntime.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/AutograderUnitTest_setWindowDescriptionText.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderUnitTest_setVisible.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderUnitTest_setVisible.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class AutograderUnitTest_setVisible\" class=\"title\">Class AutograderUnitTest_setVisible</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.AutograderUnitTest_setVisible</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">AutograderUnitTest_setVisible</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTest_setVisible.html#AutograderUnitTest_setVisible--\">AutograderUnitTest_setVisible</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTest_setVisible.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"AutograderUnitTest_setVisible--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>AutograderUnitTest_setVisible</h4>\n<pre>public&nbsp;AutograderUnitTest_setVisible()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderUnitTest_setTestRuntime.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/AutograderUnitTest_setWindowDescriptionText.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderUnitTest_setVisible.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderUnitTest_setVisible.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/AutograderUnitTest_setWindowDescriptionText.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>AutograderUnitTest_setWindowDescriptionText</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"AutograderUnitTest_setWindowDescriptionText\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderUnitTest_setVisible.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/AutograderUnitTestGUI.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderUnitTest_setWindowDescriptionText.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderUnitTest_setWindowDescriptionText.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class AutograderUnitTest_setWindowDescriptionText\" class=\"title\">Class AutograderUnitTest_setWindowDescriptionText</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.AutograderUnitTest_setWindowDescriptionText</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">AutograderUnitTest_setWindowDescriptionText</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTest_setWindowDescriptionText.html#AutograderUnitTest_setWindowDescriptionText--\">AutograderUnitTest_setWindowDescriptionText</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/AutograderUnitTest_setWindowDescriptionText.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"AutograderUnitTest_setWindowDescriptionText--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>AutograderUnitTest_setWindowDescriptionText</h4>\n<pre>public&nbsp;AutograderUnitTest_setWindowDescriptionText()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderUnitTest_setVisible.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/AutograderUnitTestGUI.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/AutograderUnitTest_setWindowDescriptionText.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"AutograderUnitTest_setWindowDescriptionText.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/Base64.InputStream.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>Base64.InputStream</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"Base64.InputStream\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/Base64.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/Base64.OutputStream.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/Base64.InputStream.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Base64.InputStream.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.java.io.FilterInputStream\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class Base64.InputStream\" class=\"title\">Class Base64.InputStream</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">java.io.InputStream</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FilterInputStream.html?is-external=true\" title=\"class or interface in java.io\">java.io.FilterInputStream</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.Base64.InputStream</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true\" title=\"class or interface in java.io\">Closeable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/AutoCloseable.html?is-external=true\" title=\"class or interface in java.lang\">AutoCloseable</a></dd>\n</dl>\n<dl>\n<dt>Enclosing class:</dt>\n<dd><a href=\"../../stanford/spl/Base64.html\" title=\"class in stanford.spl\">Base64</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public static class <span class=\"typeNameLabel\">Base64.InputStream</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FilterInputStream.html?is-external=true\" title=\"class or interface in java.io\">FilterInputStream</a></pre>\n<div class=\"block\">A <a href=\"../../stanford/spl/Base64.InputStream.html\" title=\"class in stanford.spl\"><code>Base64.InputStream</code></a> will read data from another\n <tt>java.io.InputStream</tt>, given in the constructor,\n and encode/decode to/from Base64 notation on the fly.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n<dd>1.3</dd>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../stanford/spl/Base64.html\" title=\"class in stanford.spl\"><code>Base64</code></a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.io.FilterInputStream\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FilterInputStream.html?is-external=true\" title=\"class or interface in java.io\">FilterInputStream</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FilterInputStream.html?is-external=true#in\" title=\"class or interface in java.io\">in</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.InputStream.html#InputStream-java.io.InputStream-\">InputStream</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;in)</code>\n<div class=\"block\">Constructs a <a href=\"../../stanford/spl/Base64.InputStream.html\" title=\"class in stanford.spl\"><code>Base64.InputStream</code></a> in DECODE mode.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.InputStream.html#InputStream-java.io.InputStream-int-\">InputStream</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;in,\n           int&nbsp;options)</code>\n<div class=\"block\">Constructs a <a href=\"../../stanford/spl/Base64.InputStream.html\" title=\"class in stanford.spl\"><code>Base64.InputStream</code></a> in\n either ENCODE or DECODE mode.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.InputStream.html#read--\">read</a></span>()</code>\n<div class=\"block\">Reads enough of the input stream to convert\n to/from Base64 and returns the next byte.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.InputStream.html#read-byte:A-int-int-\">read</a></span>(byte[]&nbsp;dest,\n    int&nbsp;off,\n    int&nbsp;len)</code>\n<div class=\"block\">Calls <a href=\"../../stanford/spl/Base64.InputStream.html#read--\"><code>read()</code></a> repeatedly until the end of stream\n is reached or <var>len</var> bytes are read.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.io.FilterInputStream\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FilterInputStream.html?is-external=true\" title=\"class or interface in java.io\">FilterInputStream</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FilterInputStream.html?is-external=true#available--\" title=\"class or interface in java.io\">available</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FilterInputStream.html?is-external=true#close--\" title=\"class or interface in java.io\">close</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FilterInputStream.html?is-external=true#mark-int-\" title=\"class or interface in java.io\">mark</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FilterInputStream.html?is-external=true#markSupported--\" title=\"class or interface in java.io\">markSupported</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FilterInputStream.html?is-external=true#read-byte:A-\" title=\"class or interface in java.io\">read</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FilterInputStream.html?is-external=true#reset--\" title=\"class or interface in java.io\">reset</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FilterInputStream.html?is-external=true#skip-long-\" title=\"class or interface in java.io\">skip</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"InputStream-java.io.InputStream-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>InputStream</h4>\n<pre>public&nbsp;InputStream(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;in)</pre>\n<div class=\"block\">Constructs a <a href=\"../../stanford/spl/Base64.InputStream.html\" title=\"class in stanford.spl\"><code>Base64.InputStream</code></a> in DECODE mode.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>in</code> - the <tt>java.io.InputStream</tt> from which to read data.</dd>\n<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n<dd>1.3</dd>\n</dl>\n</li>\n</ul>\n<a name=\"InputStream-java.io.InputStream-int-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>InputStream</h4>\n<pre>public&nbsp;InputStream(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\">InputStream</a>&nbsp;in,\n                   int&nbsp;options)</pre>\n<div class=\"block\">Constructs a <a href=\"../../stanford/spl/Base64.InputStream.html\" title=\"class in stanford.spl\"><code>Base64.InputStream</code></a> in\n either ENCODE or DECODE mode.\n <p>\n Valid options:<pre>\n   ENCODE or DECODE: Encode or Decode as data is read.\n   DO_BREAK_LINES: break lines at 76 characters\n     (only meaningful when encoding)</i>\n </pre>\n <p>\n Example: <code>new Base64.InputStream( in, Base64.DECODE )</code></div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>in</code> - the <tt>java.io.InputStream</tt> from which to read data.</dd>\n<dd><code>options</code> - Specified options</dd>\n<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n<dd>2.0</dd>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../stanford/spl/Base64.html#ENCODE\"><code>Base64.ENCODE</code></a>, \n<a href=\"../../stanford/spl/Base64.html#DECODE\"><code>Base64.DECODE</code></a>, \n<a href=\"../../stanford/spl/Base64.html#DO_BREAK_LINES\"><code>Base64.DO_BREAK_LINES</code></a></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"read--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>read</h4>\n<pre>public&nbsp;int&nbsp;read()\n         throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<div class=\"block\">Reads enough of the input stream to convert\n to/from Base64 and returns the next byte.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FilterInputStream.html?is-external=true#read--\" title=\"class or interface in java.io\">read</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FilterInputStream.html?is-external=true\" title=\"class or interface in java.io\">FilterInputStream</a></code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>next byte</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n<dd>1.3</dd>\n</dl>\n</li>\n</ul>\n<a name=\"read-byte:A-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>read</h4>\n<pre>public&nbsp;int&nbsp;read(byte[]&nbsp;dest,\n                int&nbsp;off,\n                int&nbsp;len)\n         throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<div class=\"block\">Calls <a href=\"../../stanford/spl/Base64.InputStream.html#read--\"><code>read()</code></a> repeatedly until the end of stream\n is reached or <var>len</var> bytes are read.\n Returns number of bytes read into array or -1 if\n end of stream is encountered.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FilterInputStream.html?is-external=true#read-byte:A-int-int-\" title=\"class or interface in java.io\">read</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FilterInputStream.html?is-external=true\" title=\"class or interface in java.io\">FilterInputStream</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>dest</code> - array to hold values</dd>\n<dd><code>off</code> - offset for array</dd>\n<dd><code>len</code> - max number of bytes to read into array</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>bytes read into array or -1 if end of stream is encountered.</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n<dd>1.3</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/Base64.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/Base64.OutputStream.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/Base64.InputStream.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Base64.InputStream.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.java.io.FilterInputStream\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/Base64.OutputStream.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>Base64.OutputStream</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"Base64.OutputStream\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/Base64.InputStream.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/Clipboard_get.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/Base64.OutputStream.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Base64.OutputStream.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.java.io.FilterOutputStream\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class Base64.OutputStream\" class=\"title\">Class Base64.OutputStream</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true\" title=\"class or interface in java.io\">java.io.OutputStream</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FilterOutputStream.html?is-external=true\" title=\"class or interface in java.io\">java.io.FilterOutputStream</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.Base64.OutputStream</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true\" title=\"class or interface in java.io\">Closeable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Flushable.html?is-external=true\" title=\"class or interface in java.io\">Flushable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/AutoCloseable.html?is-external=true\" title=\"class or interface in java.lang\">AutoCloseable</a></dd>\n</dl>\n<dl>\n<dt>Enclosing class:</dt>\n<dd><a href=\"../../stanford/spl/Base64.html\" title=\"class in stanford.spl\">Base64</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public static class <span class=\"typeNameLabel\">Base64.OutputStream</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FilterOutputStream.html?is-external=true\" title=\"class or interface in java.io\">FilterOutputStream</a></pre>\n<div class=\"block\">A <a href=\"../../stanford/spl/Base64.OutputStream.html\" title=\"class in stanford.spl\"><code>Base64.OutputStream</code></a> will write data to another\n <tt>java.io.OutputStream</tt>, given in the constructor,\n and encode/decode to/from Base64 notation on the fly.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n<dd>1.3</dd>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../stanford/spl/Base64.html\" title=\"class in stanford.spl\"><code>Base64</code></a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.io.FilterOutputStream\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FilterOutputStream.html?is-external=true\" title=\"class or interface in java.io\">FilterOutputStream</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FilterOutputStream.html?is-external=true#out\" title=\"class or interface in java.io\">out</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.OutputStream.html#OutputStream-java.io.OutputStream-\">OutputStream</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true\" title=\"class or interface in java.io\">OutputStream</a>&nbsp;out)</code>\n<div class=\"block\">Constructs a <a href=\"../../stanford/spl/Base64.OutputStream.html\" title=\"class in stanford.spl\"><code>Base64.OutputStream</code></a> in ENCODE mode.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.OutputStream.html#OutputStream-java.io.OutputStream-int-\">OutputStream</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true\" title=\"class or interface in java.io\">OutputStream</a>&nbsp;out,\n            int&nbsp;options)</code>\n<div class=\"block\">Constructs a <a href=\"../../stanford/spl/Base64.OutputStream.html\" title=\"class in stanford.spl\"><code>Base64.OutputStream</code></a> in\n either ENCODE or DECODE mode.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.OutputStream.html#close--\">close</a></span>()</code>\n<div class=\"block\">Flushes and closes (I think, in the superclass) the stream.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.OutputStream.html#flushBase64--\">flushBase64</a></span>()</code>\n<div class=\"block\">Method added by PHIL.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.OutputStream.html#resumeEncoding--\">resumeEncoding</a></span>()</code>\n<div class=\"block\">Resumes encoding of the stream.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.OutputStream.html#suspendEncoding--\">suspendEncoding</a></span>()</code>\n<div class=\"block\">Suspends encoding of the stream.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.OutputStream.html#write-byte:A-int-int-\">write</a></span>(byte[]&nbsp;theBytes,\n     int&nbsp;off,\n     int&nbsp;len)</code>\n<div class=\"block\">Calls <a href=\"../../stanford/spl/Base64.OutputStream.html#write-int-\"><code>write(int)</code></a> repeatedly until <var>len</var> \n bytes are written.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.OutputStream.html#write-int-\">write</a></span>(int&nbsp;theByte)</code>\n<div class=\"block\">Writes the byte to the output stream after\n converting to/from Base64 notation.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.io.FilterOutputStream\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FilterOutputStream.html?is-external=true\" title=\"class or interface in java.io\">FilterOutputStream</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FilterOutputStream.html?is-external=true#flush--\" title=\"class or interface in java.io\">flush</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FilterOutputStream.html?is-external=true#write-byte:A-\" title=\"class or interface in java.io\">write</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"OutputStream-java.io.OutputStream-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>OutputStream</h4>\n<pre>public&nbsp;OutputStream(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true\" title=\"class or interface in java.io\">OutputStream</a>&nbsp;out)</pre>\n<div class=\"block\">Constructs a <a href=\"../../stanford/spl/Base64.OutputStream.html\" title=\"class in stanford.spl\"><code>Base64.OutputStream</code></a> in ENCODE mode.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>out</code> - the <tt>java.io.OutputStream</tt> to which data will be written.</dd>\n<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n<dd>1.3</dd>\n</dl>\n</li>\n</ul>\n<a name=\"OutputStream-java.io.OutputStream-int-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>OutputStream</h4>\n<pre>public&nbsp;OutputStream(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true\" title=\"class or interface in java.io\">OutputStream</a>&nbsp;out,\n                    int&nbsp;options)</pre>\n<div class=\"block\">Constructs a <a href=\"../../stanford/spl/Base64.OutputStream.html\" title=\"class in stanford.spl\"><code>Base64.OutputStream</code></a> in\n either ENCODE or DECODE mode.\n <p>\n Valid options:<pre>\n   ENCODE or DECODE: Encode or Decode as data is read.\n   DO_BREAK_LINES: don't break lines at 76 characters\n     (only meaningful when encoding)</i>\n </pre>\n <p>\n Example: <code>new Base64.OutputStream( out, Base64.ENCODE )</code></div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>out</code> - the <tt>java.io.OutputStream</tt> to which data will be written.</dd>\n<dd><code>options</code> - Specified options.</dd>\n<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n<dd>1.3</dd>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../stanford/spl/Base64.html#ENCODE\"><code>Base64.ENCODE</code></a>, \n<a href=\"../../stanford/spl/Base64.html#DECODE\"><code>Base64.DECODE</code></a>, \n<a href=\"../../stanford/spl/Base64.html#DO_BREAK_LINES\"><code>Base64.DO_BREAK_LINES</code></a></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"write-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>write</h4>\n<pre>public&nbsp;void&nbsp;write(int&nbsp;theByte)\n           throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<div class=\"block\">Writes the byte to the output stream after\n converting to/from Base64 notation.\n When encoding, bytes are buffered three\n at a time before the output stream actually\n gets a write() call.\n When decoding, bytes are buffered four\n at a time.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FilterOutputStream.html?is-external=true#write-int-\" title=\"class or interface in java.io\">write</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FilterOutputStream.html?is-external=true\" title=\"class or interface in java.io\">FilterOutputStream</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>theByte</code> - the byte to write</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n<dd>1.3</dd>\n</dl>\n</li>\n</ul>\n<a name=\"write-byte:A-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>write</h4>\n<pre>public&nbsp;void&nbsp;write(byte[]&nbsp;theBytes,\n                  int&nbsp;off,\n                  int&nbsp;len)\n           throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<div class=\"block\">Calls <a href=\"../../stanford/spl/Base64.OutputStream.html#write-int-\"><code>write(int)</code></a> repeatedly until <var>len</var> \n bytes are written.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FilterOutputStream.html?is-external=true#write-byte:A-int-int-\" title=\"class or interface in java.io\">write</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FilterOutputStream.html?is-external=true\" title=\"class or interface in java.io\">FilterOutputStream</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>theBytes</code> - array from which to read bytes</dd>\n<dd><code>off</code> - offset for array</dd>\n<dd><code>len</code> - max number of bytes to read into array</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n<dd>1.3</dd>\n</dl>\n</li>\n</ul>\n<a name=\"flushBase64--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>flushBase64</h4>\n<pre>public&nbsp;void&nbsp;flushBase64()\n                 throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<div class=\"block\">Method added by PHIL. [Thanks, PHIL. -Rob]\n This pads the buffer without closing the stream.</div>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code> - if there's an error.</dd>\n</dl>\n</li>\n</ul>\n<a name=\"close--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>close</h4>\n<pre>public&nbsp;void&nbsp;close()\n           throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<div class=\"block\">Flushes and closes (I think, in the superclass) the stream.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true#close--\" title=\"class or interface in java.io\">close</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true\" title=\"class or interface in java.io\">Closeable</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/AutoCloseable.html?is-external=true#close--\" title=\"class or interface in java.lang\">close</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/AutoCloseable.html?is-external=true\" title=\"class or interface in java.lang\">AutoCloseable</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FilterOutputStream.html?is-external=true#close--\" title=\"class or interface in java.io\">close</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FilterOutputStream.html?is-external=true\" title=\"class or interface in java.io\">FilterOutputStream</a></code></dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n<dd>1.3</dd>\n</dl>\n</li>\n</ul>\n<a name=\"suspendEncoding--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>suspendEncoding</h4>\n<pre>public&nbsp;void&nbsp;suspendEncoding()\n                     throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<div class=\"block\">Suspends encoding of the stream.\n May be helpful if you need to embed a piece of\n base64-encoded data in a stream.</div>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code> - if there's an error flushing</dd>\n<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n<dd>1.5.1</dd>\n</dl>\n</li>\n</ul>\n<a name=\"resumeEncoding--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>resumeEncoding</h4>\n<pre>public&nbsp;void&nbsp;resumeEncoding()</pre>\n<div class=\"block\">Resumes encoding of the stream.\n May be helpful if you need to embed a piece of\n base64-encoded data in a stream.</div>\n<dl>\n<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n<dd>1.5.1</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/Base64.InputStream.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/Clipboard_get.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/Base64.OutputStream.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Base64.OutputStream.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.java.io.FilterOutputStream\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/Base64.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>Base64</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"Base64\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9,\"i2\":9,\"i3\":9,\"i4\":9,\"i5\":9,\"i6\":9,\"i7\":9,\"i8\":9,\"i9\":9,\"i10\":9,\"i11\":9,\"i12\":9,\"i13\":9,\"i14\":9,\"i15\":9,\"i16\":9,\"i17\":9,\"i18\":9,\"i19\":9,\"i20\":9,\"i21\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderUnitTestGUI.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/Base64.InputStream.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/Base64.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Base64.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.class.summary\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class Base64\" class=\"title\">Class Base64</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.Base64</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">Base64</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n<div class=\"block\"><p>Encodes and decodes to and from Base64 notation.</p>\n <p>Homepage: <a href=\"http://iharder.net/base64\">http://iharder.net/base64</a>.</p>\n \n <p>Example:</p>\n \n <code>String encoded = Base64.encode( myByteArray );</code>\n <br />\n <code>byte[] myByteArray = Base64.decode( encoded );</code>\n\n <p>The <tt>options</tt> parameter, which appears in a few places, is used to pass \n several pieces of information to the encoder. In the \"higher level\" methods such as \n encodeBytes( bytes, options ) the options parameter can be used to indicate such \n things as first gzipping the bytes before encoding them, not inserting linefeeds,\n and encoding using the URL-safe and Ordered dialects.</p>\n\n <p>Note, according to <a href=\"http://www.faqs.org/rfcs/rfc3548.html\">RFC3548</a>,\n Section 2.1, implementations should not add line feeds unless explicitly told\n to do so. I've got Base64 set to this behavior now, although earlier versions\n broke lines by default.</p>\n\n <p>The constants defined in Base64 can be OR-ed together to combine options, so you \n might make a call like this:</p>\n\n <code>String encoded = Base64.encodeBytes( mybytes, Base64.GZIP | Base64.DO_BREAK_LINES );</code>\n <p>to compress the data before encoding it and then making the output have newline characters.</p>\n <p>Also...</p>\n <code>String encoded = Base64.encodeBytes( crazyString.getBytes() );</code>\n\n\n\n <p>\n Change Log:\n </p>\n <ul>\n  <li>v2.3.7 - Fixed subtle bug when base 64 input stream contained the\n   value 01111111, which is an invalid base 64 character but should not\n   throw an ArrayIndexOutOfBoundsException either. Led to discovery of\n   mishandling (or potential for better handling) of other bad input\n   characters. You should now get an IOException if you try decoding\n   something that has bad characters in it.</li>\n  <li>v2.3.6 - Fixed bug when breaking lines and the final byte of the encoded\n   string ended in the last column; the buffer was not properly shrunk and\n   contained an extra (null) byte that made it into the string.</li>\n  <li>v2.3.5 - Fixed bug in <a href=\"../../stanford/spl/Base64.html#encodeFromFile-java.lang.String-\"><code>encodeFromFile(java.lang.String)</code></a> where estimated buffer size\n   was wrong for files of size 31, 34, and 37 bytes.</li>\n  <li>v2.3.4 - Fixed bug when working with gzipped streams whereby flushing\n   the Base64.OutputStream closed the Base64 encoding (by padding with equals\n   signs) too soon. Also added an option to suppress the automatic decoding\n   of gzipped streams. Also added experimental support for specifying a\n   class loader when using the\n   <a href=\"../../stanford/spl/Base64.html#decodeToObject-java.lang.String-int-java.lang.ClassLoader-\"><code>decodeToObject(java.lang.String, int, java.lang.ClassLoader)</code></a>\n   method.</li>\n  <li>v2.3.3 - Changed default char encoding to US-ASCII which reduces the internal Java\n   footprint with its CharEncoders and so forth. Fixed some javadocs that were\n   inconsistent. Removed imports and specified things like java.io.IOException\n   explicitly inline.</li>\n  <li>v2.3.2 - Reduced memory footprint! Finally refined the \"guessing\" of how big the\n   final encoded data will be so that the code doesn't have to create two output\n   arrays: an oversized initial one and then a final, exact-sized one. Big win\n   when using the <a href=\"../../stanford/spl/Base64.html#encodeBytesToBytes-byte:A-\"><code>encodeBytesToBytes(byte[])</code></a> family of methods (and not\n   using the gzip options which uses a different mechanism with streams and stuff).</li>\n  <li>v2.3.1 - Added <a href=\"../../stanford/spl/Base64.html#encodeBytesToBytes-byte:A-int-int-int-\"><code>encodeBytesToBytes(byte[], int, int, int)</code></a> and some\n   similar helper methods to be more efficient with memory by not returning a\n   String but just a byte array.</li>\n  <li>v2.3 - <strong>This is not a drop-in replacement!</strong> This is two years of comments\n   and bug fixes queued up and finally executed. Thanks to everyone who sent\n   me stuff, and I'm sorry I wasn't able to distribute your fixes to everyone else.\n   Much bad coding was cleaned up including throwing exceptions where necessary \n   instead of returning null values or something similar. Here are some changes\n   that may affect you:\n   <ul>\n    <li><em>Does not break lines, by default.</em> This is to keep in compliance with\n      <a href=\"http://www.faqs.org/rfcs/rfc3548.html\">RFC3548</a>.</li>\n    <li><em>Throws exceptions instead of returning null values.</em> Because some operations\n      (especially those that may permit the GZIP option) use IO streams, there\n      is a possiblity of an java.io.IOException being thrown. After some discussion and\n      thought, I've changed the behavior of the methods to throw java.io.IOExceptions\n      rather than return null if ever there's an error. I think this is more\n      appropriate, though it will require some changes to your code. Sorry,\n      it should have been done this way to begin with.</li>\n    <li><em>Removed all references to System.out, System.err, and the like.</em>\n      Shame on me. All I can say is sorry they were ever there.</li>\n    <li><em>Throws NullPointerExceptions and IllegalArgumentExceptions</em> as needed\n      such as when passed arrays are null or offsets are invalid.</li>\n    <li>Cleaned up as much javadoc as I could to avoid any javadoc warnings.\n      This was especially annoying before for people who were thorough in their\n      own projects and then had gobs of javadoc warnings on this file.</li>\n   </ul>\n  <li>v2.2.1 - Fixed bug using URL_SAFE and ORDERED encodings. Fixed bug\n   when using very small files (~&lt; 40 bytes).</li>\n  <li>v2.2 - Added some helper methods for encoding/decoding directly from\n   one file to the next. Also added a main() method to support command line\n   encoding/decoding from one file to the next. Also added these Base64 dialects:\n   <ol>\n   <li>The default is RFC3548 format.</li>\n   <li>Calling Base64.setFormat(Base64.BASE64_FORMAT.URLSAFE_FORMAT) generates\n   URL and file name friendly format as described in Section 4 of RFC3548.\n   http://www.faqs.org/rfcs/rfc3548.html</li>\n   <li>Calling Base64.setFormat(Base64.BASE64_FORMAT.ORDERED_FORMAT) generates\n   URL and file name friendly format that preserves lexical ordering as described\n   in http://www.faqs.org/qa/rfcc-1940.html</li>\n   </ol>\n   Special thanks to Jim Kellerman at <a href=\"http://www.powerset.com/\">http://www.powerset.com/</a>\n   for contributing the new Base64 dialects.\n  </li>\n \n  <li>v2.1 - Cleaned up javadoc comments and unused variables and methods. Added\n   some convenience methods for reading and writing to and from files.</li>\n  <li>v2.0.2 - Now specifies UTF-8 encoding in places where the code fails on systems\n   with other encodings (like EBCDIC).</li>\n  <li>v2.0.1 - Fixed an error when decoding a single byte, that is, when the\n   encoded data was a single byte.</li>\n  <li>v2.0 - I got rid of methods that used booleans to set options. \n   Now everything is more consolidated and cleaner. The code now detects\n   when data that's being decoded is gzip-compressed and will decompress it\n   automatically. Generally things are cleaner. You'll probably have to\n   change some method calls that you were making to support the new\n   options format (<tt>int</tt>s that you \"OR\" together).</li>\n  <li>v1.5.1 - Fixed bug when decompressing and decoding to a             \n   byte[] using <tt>decode( String s, boolean gzipCompressed )</tt>.      \n   Added the ability to \"suspend\" encoding in the Output Stream so        \n   you can turn on and off the encoding if you need to embed base64       \n   data in an otherwise \"normal\" stream (like an XML file).</li>  \n  <li>v1.5 - Output stream pases on flush() command but doesn't do anything itself.\n      This helps when using GZIP streams.\n      Added the ability to GZip-compress objects before encoding them.</li>\n  <li>v1.4 - Added helper methods to read/write files.</li>\n  <li>v1.3.6 - Fixed OutputStream.flush() so that 'position' is reset.</li>\n  <li>v1.3.5 - Added flag to turn on and off line breaks. Fixed bug in input stream\n      where last buffer being read, if not completely full, was not returned.</li>\n  <li>v1.3.4 - Fixed when \"improperly padded stream\" error was thrown at the wrong time.</li>\n  <li>v1.3.3 - Fixed I/O streams which were totally messed up.</li>\n </ul>\n\n <p>\n I am placing this code in the Public Domain. Do with it as you will.\n This software comes with no guarantees or warranties but with\n plenty of well-wishing instead!\n Please visit <a href=\"http://iharder.net/base64\">http://iharder.net/base64</a>\n periodically to check for updates or to contribute improvements.\n </p></div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Nested Class Summary table, listing nested classes, and an explanation\">\n<caption><span>Nested Classes</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Class and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static class&nbsp;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.InputStream.html\" title=\"class in stanford.spl\">Base64.InputStream</a></span></code>\n<div class=\"block\">A <a href=\"../../stanford/spl/Base64.InputStream.html\" title=\"class in stanford.spl\"><code>Base64.InputStream</code></a> will read data from another\n <tt>java.io.InputStream</tt>, given in the constructor,\n and encode/decode to/from Base64 notation on the fly.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static class&nbsp;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.OutputStream.html\" title=\"class in stanford.spl\">Base64.OutputStream</a></span></code>\n<div class=\"block\">A <a href=\"../../stanford/spl/Base64.OutputStream.html\" title=\"class in stanford.spl\"><code>Base64.OutputStream</code></a> will write data to another\n <tt>java.io.OutputStream</tt>, given in the constructor,\n and encode/decode to/from Base64 notation on the fly.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.html#DECODE\">DECODE</a></span></code>\n<div class=\"block\">Specify decoding in first bit.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.html#DO_BREAK_LINES\">DO_BREAK_LINES</a></span></code>\n<div class=\"block\">Do break lines when encoding.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.html#DONT_GUNZIP\">DONT_GUNZIP</a></span></code>\n<div class=\"block\">Specify that gzipped data should <em>not</em> be automatically gunzipped.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.html#ENCODE\">ENCODE</a></span></code>\n<div class=\"block\">Specify encoding in first bit.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.html#GZIP\">GZIP</a></span></code>\n<div class=\"block\">Specify that data should be gzip-compressed in second bit.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.html#NO_OPTIONS\">NO_OPTIONS</a></span></code>\n<div class=\"block\">No options specified.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.html#ORDERED\">ORDERED</a></span></code>\n<div class=\"block\">Encode using the special \"ordered\" dialect of Base64 described here:\n <a href=\"http://www.faqs.org/qa/rfcc-1940.html\">http://www.faqs.org/qa/rfcc-1940.html</a>.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.html#URL_SAFE\">URL_SAFE</a></span></code>\n<div class=\"block\">Encode using Base64-like encoding that is URL- and Filename-safe as described\n in Section 4 of RFC3548: \n <a href=\"http://www.faqs.org/rfcs/rfc3548.html\">http://www.faqs.org/rfcs/rfc3548.html</a>.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static byte[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.html#decode-byte:A-\">decode</a></span>(byte[]&nbsp;source)</code>\n<div class=\"block\">Low-level access to decoding ASCII characters in\n the form of a byte array.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static byte[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.html#decode-byte:A-int-int-int-\">decode</a></span>(byte[]&nbsp;source,\n      int&nbsp;off,\n      int&nbsp;len,\n      int&nbsp;options)</code>\n<div class=\"block\">Low-level access to decoding ASCII characters in\n the form of a byte array.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>static byte[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.html#decode-java.lang.String-\">decode</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>\n<div class=\"block\">Decodes data from Base64 notation, automatically\n detecting gzip-compressed data and decompressing it.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static byte[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.html#decode-java.lang.String-int-\">decode</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s,\n      int&nbsp;options)</code>\n<div class=\"block\">Decodes data from Base64 notation, automatically\n detecting gzip-compressed data and decompressing it.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.html#decodeFileToFile-java.lang.String-java.lang.String-\">decodeFileToFile</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;infile,\n                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;outfile)</code>\n<div class=\"block\">Reads <tt>infile</tt> and decodes it to <tt>outfile</tt>.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static byte[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.html#decodeFromFile-java.lang.String-\">decodeFromFile</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>\n<div class=\"block\">Convenience method for reading a base64-encoded\n file and decoding it.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.html#decodeToFile-java.lang.String-java.lang.String-\">decodeToFile</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;dataToDecode,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>\n<div class=\"block\">Convenience method for decoding data to a file.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.html#decodeToObject-java.lang.String-\">decodeToObject</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;encodedObject)</code>\n<div class=\"block\">Attempts to decode Base64 data and deserialize a Java\n Object within.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.html#decodeToObject-java.lang.String-int-java.lang.ClassLoader-\">decodeToObject</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;encodedObject,\n              int&nbsp;options,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true\" title=\"class or interface in java.lang\">ClassLoader</a>&nbsp;loader)</code>\n<div class=\"block\">Attempts to decode Base64 data and deserialize a Java\n Object within.</div>\n</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.html#encode-java.nio.ByteBuffer-java.nio.ByteBuffer-\">encode</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true\" title=\"class or interface in java.nio\">ByteBuffer</a>&nbsp;raw,\n      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true\" title=\"class or interface in java.nio\">ByteBuffer</a>&nbsp;encoded)</code>\n<div class=\"block\">Performs Base64 encoding on the <code>raw</code> ByteBuffer,\n writing it to the <code>encoded</code> ByteBuffer.</div>\n</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.html#encode-java.nio.ByteBuffer-java.nio.CharBuffer-\">encode</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true\" title=\"class or interface in java.nio\">ByteBuffer</a>&nbsp;raw,\n      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/nio/CharBuffer.html?is-external=true\" title=\"class or interface in java.nio\">CharBuffer</a>&nbsp;encoded)</code>\n<div class=\"block\">Performs Base64 encoding on the <code>raw</code> ByteBuffer,\n writing it to the <code>encoded</code> CharBuffer.</div>\n</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.html#encodeBytes-byte:A-\">encodeBytes</a></span>(byte[]&nbsp;source)</code>\n<div class=\"block\">Encodes a byte array into Base64 notation.</div>\n</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.html#encodeBytes-byte:A-int-\">encodeBytes</a></span>(byte[]&nbsp;source,\n           int&nbsp;options)</code>\n<div class=\"block\">Encodes a byte array into Base64 notation.</div>\n</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.html#encodeBytes-byte:A-int-int-\">encodeBytes</a></span>(byte[]&nbsp;source,\n           int&nbsp;off,\n           int&nbsp;len)</code>\n<div class=\"block\">Encodes a byte array into Base64 notation.</div>\n</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.html#encodeBytes-byte:A-int-int-int-\">encodeBytes</a></span>(byte[]&nbsp;source,\n           int&nbsp;off,\n           int&nbsp;len,\n           int&nbsp;options)</code>\n<div class=\"block\">Encodes a byte array into Base64 notation.</div>\n</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static byte[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.html#encodeBytesToBytes-byte:A-\">encodeBytesToBytes</a></span>(byte[]&nbsp;source)</code>\n<div class=\"block\">Similar to <a href=\"../../stanford/spl/Base64.html#encodeBytes-byte:A-\"><code>encodeBytes(byte[])</code></a> but returns\n a byte array instead of instantiating a String.</div>\n</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>static byte[]</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.html#encodeBytesToBytes-byte:A-int-int-int-\">encodeBytesToBytes</a></span>(byte[]&nbsp;source,\n                  int&nbsp;off,\n                  int&nbsp;len,\n                  int&nbsp;options)</code>\n<div class=\"block\">Similar to <a href=\"../../stanford/spl/Base64.html#encodeBytes-byte:A-int-int-int-\"><code>encodeBytes(byte[], int, int, int)</code></a> but returns\n a byte array instead of instantiating a String.</div>\n</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.html#encodeFileToFile-java.lang.String-java.lang.String-\">encodeFileToFile</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;infile,\n                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;outfile)</code>\n<div class=\"block\">Reads <tt>infile</tt> and encodes it to <tt>outfile</tt>.</div>\n</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.html#encodeFromFile-java.lang.String-\">encodeFromFile</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>\n<div class=\"block\">Convenience method for reading a binary file\n and base64-encoding it.</div>\n</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.html#encodeObject-java.io.Serializable-\">encodeObject</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>&nbsp;serializableObject)</code>\n<div class=\"block\">Serializes an object and returns the Base64-encoded\n version of that serialized object.</div>\n</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.html#encodeObject-java.io.Serializable-int-\">encodeObject</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>&nbsp;serializableObject,\n            int&nbsp;options)</code>\n<div class=\"block\">Serializes an object and returns the Base64-encoded\n version of that serialized object.</div>\n</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Base64.html#encodeToFile-byte:A-java.lang.String-\">encodeToFile</a></span>(byte[]&nbsp;dataToEncode,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>\n<div class=\"block\">Convenience method for encoding data to a file.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"NO_OPTIONS\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>NO_OPTIONS</h4>\n<pre>public static final&nbsp;int NO_OPTIONS</pre>\n<div class=\"block\">No options specified. Value is zero.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.Base64.NO_OPTIONS\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"ENCODE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>ENCODE</h4>\n<pre>public static final&nbsp;int ENCODE</pre>\n<div class=\"block\">Specify encoding in first bit. Value is one.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.Base64.ENCODE\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"DECODE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>DECODE</h4>\n<pre>public static final&nbsp;int DECODE</pre>\n<div class=\"block\">Specify decoding in first bit. Value is zero.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.Base64.DECODE\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"GZIP\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>GZIP</h4>\n<pre>public static final&nbsp;int GZIP</pre>\n<div class=\"block\">Specify that data should be gzip-compressed in second bit. Value is two.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.Base64.GZIP\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"DONT_GUNZIP\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>DONT_GUNZIP</h4>\n<pre>public static final&nbsp;int DONT_GUNZIP</pre>\n<div class=\"block\">Specify that gzipped data should <em>not</em> be automatically gunzipped.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.Base64.DONT_GUNZIP\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"DO_BREAK_LINES\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>DO_BREAK_LINES</h4>\n<pre>public static final&nbsp;int DO_BREAK_LINES</pre>\n<div class=\"block\">Do break lines when encoding. Value is 8.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.Base64.DO_BREAK_LINES\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"URL_SAFE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>URL_SAFE</h4>\n<pre>public static final&nbsp;int URL_SAFE</pre>\n<div class=\"block\">Encode using Base64-like encoding that is URL- and Filename-safe as described\n in Section 4 of RFC3548: \n <a href=\"http://www.faqs.org/rfcs/rfc3548.html\">http://www.faqs.org/rfcs/rfc3548.html</a>.\n It is important to note that data encoded this way is <em>not</em> officially valid Base64, \n or at the very least should not be called Base64 without also specifying that is\n was encoded using the URL- and Filename-safe dialect.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.Base64.URL_SAFE\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"ORDERED\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>ORDERED</h4>\n<pre>public static final&nbsp;int ORDERED</pre>\n<div class=\"block\">Encode using the special \"ordered\" dialect of Base64 described here:\n <a href=\"http://www.faqs.org/qa/rfcc-1940.html\">http://www.faqs.org/qa/rfcc-1940.html</a>.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.Base64.ORDERED\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"encode-java.nio.ByteBuffer-java.nio.ByteBuffer-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>encode</h4>\n<pre>public static&nbsp;void&nbsp;encode(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true\" title=\"class or interface in java.nio\">ByteBuffer</a>&nbsp;raw,\n                          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true\" title=\"class or interface in java.nio\">ByteBuffer</a>&nbsp;encoded)</pre>\n<div class=\"block\">Performs Base64 encoding on the <code>raw</code> ByteBuffer,\n writing it to the <code>encoded</code> ByteBuffer.\n This is an experimental feature. Currently it does not\n pass along any options (such as <a href=\"../../stanford/spl/Base64.html#DO_BREAK_LINES\"><code>DO_BREAK_LINES</code></a>\n or <a href=\"../../stanford/spl/Base64.html#GZIP\"><code>GZIP</code></a>.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>raw</code> - input buffer</dd>\n<dd><code>encoded</code> - output buffer</dd>\n<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n<dd>2.3</dd>\n</dl>\n</li>\n</ul>\n<a name=\"encode-java.nio.ByteBuffer-java.nio.CharBuffer-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>encode</h4>\n<pre>public static&nbsp;void&nbsp;encode(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true\" title=\"class or interface in java.nio\">ByteBuffer</a>&nbsp;raw,\n                          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/nio/CharBuffer.html?is-external=true\" title=\"class or interface in java.nio\">CharBuffer</a>&nbsp;encoded)</pre>\n<div class=\"block\">Performs Base64 encoding on the <code>raw</code> ByteBuffer,\n writing it to the <code>encoded</code> CharBuffer.\n This is an experimental feature. Currently it does not\n pass along any options (such as <a href=\"../../stanford/spl/Base64.html#DO_BREAK_LINES\"><code>DO_BREAK_LINES</code></a>\n or <a href=\"../../stanford/spl/Base64.html#GZIP\"><code>GZIP</code></a>.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>raw</code> - input buffer</dd>\n<dd><code>encoded</code> - output buffer</dd>\n<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n<dd>2.3</dd>\n</dl>\n</li>\n</ul>\n<a name=\"encodeObject-java.io.Serializable-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>encodeObject</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;encodeObject(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>&nbsp;serializableObject)\n                           throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<div class=\"block\">Serializes an object and returns the Base64-encoded\n version of that serialized object.  \n  \n <p>As of v 2.3, if the object\n cannot be serialized or there is another error,\n the method will throw an java.io.IOException. <b>This is new to v2.3!</b>\n In earlier versions, it just returned a null value, but\n in retrospect that's a pretty poor way to handle it.</p>\n \n The object is not GZip-compressed before being encoded.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>serializableObject</code> - The object to encode</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The Base64-encoded object</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code> - if there is an error</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if serializedObject is null</dd>\n<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n<dd>1.4</dd>\n</dl>\n</li>\n</ul>\n<a name=\"encodeObject-java.io.Serializable-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>encodeObject</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;encodeObject(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>&nbsp;serializableObject,\n                                  int&nbsp;options)\n                           throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<div class=\"block\">Serializes an object and returns the Base64-encoded\n version of that serialized object.\n  \n <p>As of v 2.3, if the object\n cannot be serialized or there is another error,\n the method will throw an java.io.IOException. <b>This is new to v2.3!</b>\n In earlier versions, it just returned a null value, but\n in retrospect that's a pretty poor way to handle it.</p>\n \n The object is not GZip-compressed before being encoded.\n <p>\n Example options:<pre>\n   GZIP: gzip-compresses object before encoding it.\n   DO_BREAK_LINES: break lines at 76 characters\n </pre>\n <p>\n Example: <code>encodeObject( myObj, Base64.GZIP )</code> or\n <p>\n Example: <code>encodeObject( myObj, Base64.GZIP | Base64.DO_BREAK_LINES )</code></div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>serializableObject</code> - The object to encode</dd>\n<dd><code>options</code> - Specified options</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The Base64-encoded object</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code> - if there is an error</dd>\n<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n<dd>2.0</dd>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../stanford/spl/Base64.html#GZIP\"><code>GZIP</code></a>, \n<a href=\"../../stanford/spl/Base64.html#DO_BREAK_LINES\"><code>DO_BREAK_LINES</code></a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"encodeBytes-byte:A-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>encodeBytes</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;encodeBytes(byte[]&nbsp;source)</pre>\n<div class=\"block\">Encodes a byte array into Base64 notation.\n Does not GZip-compress data.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>source</code> - The data to convert</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The data in Base64-encoded form</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if source array is null</dd>\n<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n<dd>1.4</dd>\n</dl>\n</li>\n</ul>\n<a name=\"encodeBytes-byte:A-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>encodeBytes</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;encodeBytes(byte[]&nbsp;source,\n                                 int&nbsp;options)\n                          throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<div class=\"block\">Encodes a byte array into Base64 notation.\n <p>\n Example options:<pre>\n   GZIP: gzip-compresses object before encoding it.\n   DO_BREAK_LINES: break lines at 76 characters\n     <i>Note: Technically, this makes your encoding non-compliant.</i>\n </pre>\n <p>\n Example: <code>encodeBytes( myData, Base64.GZIP )</code> or\n <p>\n Example: <code>encodeBytes( myData, Base64.GZIP | Base64.DO_BREAK_LINES )</code>\n\n  \n <p>As of v 2.3, if there is an error with the GZIP stream,\n the method will throw an java.io.IOException. <b>This is new to v2.3!</b>\n In earlier versions, it just returned a null value, but\n in retrospect that's a pretty poor way to handle it.</p></div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>source</code> - The data to convert</dd>\n<dd><code>options</code> - Specified options</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The Base64-encoded data as a String</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code> - if there is an error</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if source array is null</dd>\n<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n<dd>2.0</dd>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../stanford/spl/Base64.html#GZIP\"><code>GZIP</code></a>, \n<a href=\"../../stanford/spl/Base64.html#DO_BREAK_LINES\"><code>DO_BREAK_LINES</code></a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"encodeBytes-byte:A-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>encodeBytes</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;encodeBytes(byte[]&nbsp;source,\n                                 int&nbsp;off,\n                                 int&nbsp;len)</pre>\n<div class=\"block\">Encodes a byte array into Base64 notation.\n Does not GZip-compress data.\n  \n <p>As of v 2.3, if there is an error,\n the method will throw an java.io.IOException. <b>This is new to v2.3!</b>\n In earlier versions, it just returned a null value, but\n in retrospect that's a pretty poor way to handle it.</p></div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>source</code> - The data to convert</dd>\n<dd><code>off</code> - Offset in array where conversion should begin</dd>\n<dd><code>len</code> - Length of data to convert</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The Base64-encoded data as a String</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if source array is null</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - if source array, offset, or length are invalid</dd>\n<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n<dd>1.4</dd>\n</dl>\n</li>\n</ul>\n<a name=\"encodeBytes-byte:A-int-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>encodeBytes</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;encodeBytes(byte[]&nbsp;source,\n                                 int&nbsp;off,\n                                 int&nbsp;len,\n                                 int&nbsp;options)\n                          throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<div class=\"block\">Encodes a byte array into Base64 notation.\n <p>\n Example options:<pre>\n   GZIP: gzip-compresses object before encoding it.\n   DO_BREAK_LINES: break lines at 76 characters\n     <i>Note: Technically, this makes your encoding non-compliant.</i>\n </pre>\n <p>\n Example: <code>encodeBytes( myData, Base64.GZIP )</code> or\n <p>\n Example: <code>encodeBytes( myData, Base64.GZIP | Base64.DO_BREAK_LINES )</code>\n\n  \n <p>As of v 2.3, if there is an error with the GZIP stream,\n the method will throw an java.io.IOException. <b>This is new to v2.3!</b>\n In earlier versions, it just returned a null value, but\n in retrospect that's a pretty poor way to handle it.</p></div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>source</code> - The data to convert</dd>\n<dd><code>off</code> - Offset in array where conversion should begin</dd>\n<dd><code>len</code> - Length of data to convert</dd>\n<dd><code>options</code> - Specified options</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The Base64-encoded data as a String</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code> - if there is an error</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if source array is null</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - if source array, offset, or length are invalid</dd>\n<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n<dd>2.0</dd>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../stanford/spl/Base64.html#GZIP\"><code>GZIP</code></a>, \n<a href=\"../../stanford/spl/Base64.html#DO_BREAK_LINES\"><code>DO_BREAK_LINES</code></a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"encodeBytesToBytes-byte:A-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>encodeBytesToBytes</h4>\n<pre>public static&nbsp;byte[]&nbsp;encodeBytesToBytes(byte[]&nbsp;source)</pre>\n<div class=\"block\">Similar to <a href=\"../../stanford/spl/Base64.html#encodeBytes-byte:A-\"><code>encodeBytes(byte[])</code></a> but returns\n a byte array instead of instantiating a String. This is more efficient\n if you're working with I/O streams and have large data sets to encode.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>source</code> - The data to convert</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The Base64-encoded data as a byte[] (of ASCII characters)</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if source array is null</dd>\n<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n<dd>2.3.1</dd>\n</dl>\n</li>\n</ul>\n<a name=\"encodeBytesToBytes-byte:A-int-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>encodeBytesToBytes</h4>\n<pre>public static&nbsp;byte[]&nbsp;encodeBytesToBytes(byte[]&nbsp;source,\n                                        int&nbsp;off,\n                                        int&nbsp;len,\n                                        int&nbsp;options)\n                                 throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<div class=\"block\">Similar to <a href=\"../../stanford/spl/Base64.html#encodeBytes-byte:A-int-int-int-\"><code>encodeBytes(byte[], int, int, int)</code></a> but returns\n a byte array instead of instantiating a String. This is more efficient\n if you're working with I/O streams and have large data sets to encode.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>source</code> - The data to convert</dd>\n<dd><code>off</code> - Offset in array where conversion should begin</dd>\n<dd><code>len</code> - Length of data to convert</dd>\n<dd><code>options</code> - Specified options</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The Base64-encoded data as a String</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code> - if there is an error</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if source array is null</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true\" title=\"class or interface in java.lang\">IllegalArgumentException</a></code> - if source array, offset, or length are invalid</dd>\n<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n<dd>2.3.1</dd>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../stanford/spl/Base64.html#GZIP\"><code>GZIP</code></a>, \n<a href=\"../../stanford/spl/Base64.html#DO_BREAK_LINES\"><code>DO_BREAK_LINES</code></a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"decode-byte:A-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>decode</h4>\n<pre>public static&nbsp;byte[]&nbsp;decode(byte[]&nbsp;source)\n                     throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<div class=\"block\">Low-level access to decoding ASCII characters in\n the form of a byte array. <strong>Ignores GUNZIP option, if\n it's set.</strong> This is not generally a recommended method,\n although it is used internally as part of the decoding process.\n Special case: if len = 0, an empty array is returned. Still,\n if you need more speed and reduced memory footprint (and aren't\n gzipping), consider this method.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>source</code> - The Base64 encoded data</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>decoded data</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n<dd>2.3.1</dd>\n</dl>\n</li>\n</ul>\n<a name=\"decode-byte:A-int-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>decode</h4>\n<pre>public static&nbsp;byte[]&nbsp;decode(byte[]&nbsp;source,\n                            int&nbsp;off,\n                            int&nbsp;len,\n                            int&nbsp;options)\n                     throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<div class=\"block\">Low-level access to decoding ASCII characters in\n the form of a byte array. <strong>Ignores GUNZIP option, if\n it's set.</strong> This is not generally a recommended method,\n although it is used internally as part of the decoding process.\n Special case: if len = 0, an empty array is returned. Still,\n if you need more speed and reduced memory footprint (and aren't\n gzipping), consider this method.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>source</code> - The Base64 encoded data</dd>\n<dd><code>off</code> - The offset of where to begin decoding</dd>\n<dd><code>len</code> - The length of characters to decode</dd>\n<dd><code>options</code> - Can specify options such as alphabet type to use</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>decoded data</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code> - If bogus characters exist in source data</dd>\n<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n<dd>1.3</dd>\n</dl>\n</li>\n</ul>\n<a name=\"decode-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>decode</h4>\n<pre>public static&nbsp;byte[]&nbsp;decode(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)\n                     throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<div class=\"block\">Decodes data from Base64 notation, automatically\n detecting gzip-compressed data and decompressing it.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>s</code> - the string to decode</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the decoded data</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code> - If there is a problem</dd>\n<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n<dd>1.4</dd>\n</dl>\n</li>\n</ul>\n<a name=\"decode-java.lang.String-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>decode</h4>\n<pre>public static&nbsp;byte[]&nbsp;decode(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s,\n                            int&nbsp;options)\n                     throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<div class=\"block\">Decodes data from Base64 notation, automatically\n detecting gzip-compressed data and decompressing it.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>s</code> - the string to decode</dd>\n<dd><code>options</code> - encode options such as URL_SAFE</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>the decoded data</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code> - if there is an error</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if <tt>s</tt> is null</dd>\n<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n<dd>1.4</dd>\n</dl>\n</li>\n</ul>\n<a name=\"decodeToObject-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>decodeToObject</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;decodeToObject(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;encodedObject)\n                             throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a>,\n                                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true\" title=\"class or interface in java.lang\">ClassNotFoundException</a></pre>\n<div class=\"block\">Attempts to decode Base64 data and deserialize a Java\n Object within. Returns <tt>null</tt> if there was an error.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>encodedObject</code> - The Base64 data to decode</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The decoded and deserialized object</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if encodedObject is null</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code> - if there is a general error</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true\" title=\"class or interface in java.lang\">ClassNotFoundException</a></code> - if the decoded object is of a\n         class that cannot be found by the JVM</dd>\n<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n<dd>1.5</dd>\n</dl>\n</li>\n</ul>\n<a name=\"decodeToObject-java.lang.String-int-java.lang.ClassLoader-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>decodeToObject</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;decodeToObject(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;encodedObject,\n                                    int&nbsp;options,\n                                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true\" title=\"class or interface in java.lang\">ClassLoader</a>&nbsp;loader)\n                             throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a>,\n                                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true\" title=\"class or interface in java.lang\">ClassNotFoundException</a></pre>\n<div class=\"block\">Attempts to decode Base64 data and deserialize a Java\n Object within. Returns <tt>null</tt> if there was an error.\n If <tt>loader</tt> is not null, it will be the class loader\n used when deserializing.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>encodedObject</code> - The Base64 data to decode</dd>\n<dd><code>options</code> - Various parameters related to decoding</dd>\n<dd><code>loader</code> - Optional class loader to use in deserializing classes.</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The decoded and deserialized object</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if encodedObject is null</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code> - if there is a general error</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true\" title=\"class or interface in java.lang\">ClassNotFoundException</a></code> - if the decoded object is of a \n         class that cannot be found by the JVM</dd>\n<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n<dd>2.3.4</dd>\n</dl>\n</li>\n</ul>\n<a name=\"encodeToFile-byte:A-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>encodeToFile</h4>\n<pre>public static&nbsp;void&nbsp;encodeToFile(byte[]&nbsp;dataToEncode,\n                                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)\n                         throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<div class=\"block\">Convenience method for encoding data to a file.\n\n <p>As of v 2.3, if there is a error,\n the method will throw an java.io.IOException. <b>This is new to v2.3!</b>\n In earlier versions, it just returned false, but\n in retrospect that's a pretty poor way to handle it.</p></div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>dataToEncode</code> - byte array of data to encode in base64 form</dd>\n<dd><code>filename</code> - Filename for saving encoded data</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code> - if there is an error</dd>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true\" title=\"class or interface in java.lang\">NullPointerException</a></code> - if dataToEncode is null</dd>\n<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n<dd>2.1</dd>\n</dl>\n</li>\n</ul>\n<a name=\"decodeToFile-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>decodeToFile</h4>\n<pre>public static&nbsp;void&nbsp;decodeToFile(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;dataToDecode,\n                                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)\n                         throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<div class=\"block\">Convenience method for decoding data to a file.\n\n <p>As of v 2.3, if there is a error,\n the method will throw an java.io.IOException. <b>This is new to v2.3!</b>\n In earlier versions, it just returned false, but\n in retrospect that's a pretty poor way to handle it.</p></div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>dataToDecode</code> - Base64-encoded data as a string</dd>\n<dd><code>filename</code> - Filename for saving decoded data</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code> - if there is an error</dd>\n<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n<dd>2.1</dd>\n</dl>\n</li>\n</ul>\n<a name=\"decodeFromFile-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>decodeFromFile</h4>\n<pre>public static&nbsp;byte[]&nbsp;decodeFromFile(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)\n                             throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<div class=\"block\">Convenience method for reading a base64-encoded\n file and decoding it.\n\n <p>As of v 2.3, if there is a error,\n the method will throw an java.io.IOException. <b>This is new to v2.3!</b>\n In earlier versions, it just returned false, but\n in retrospect that's a pretty poor way to handle it.</p></div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>filename</code> - Filename for reading encoded data</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>decoded byte array</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code> - if there is an error</dd>\n<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n<dd>2.1</dd>\n</dl>\n</li>\n</ul>\n<a name=\"encodeFromFile-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>encodeFromFile</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;encodeFromFile(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)\n                             throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<div class=\"block\">Convenience method for reading a binary file\n and base64-encoding it.\n\n <p>As of v 2.3, if there is a error,\n the method will throw an java.io.IOException. <b>This is new to v2.3!</b>\n In earlier versions, it just returned false, but\n in retrospect that's a pretty poor way to handle it.</p></div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>filename</code> - Filename for reading binary data</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>base64-encoded string</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code> - if there is an error</dd>\n<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n<dd>2.1</dd>\n</dl>\n</li>\n</ul>\n<a name=\"encodeFileToFile-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>encodeFileToFile</h4>\n<pre>public static&nbsp;void&nbsp;encodeFileToFile(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;infile,\n                                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;outfile)\n                             throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<div class=\"block\">Reads <tt>infile</tt> and encodes it to <tt>outfile</tt>.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>infile</code> - Input file</dd>\n<dd><code>outfile</code> - Output file</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code> - if there is an error</dd>\n<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n<dd>2.2</dd>\n</dl>\n</li>\n</ul>\n<a name=\"decodeFileToFile-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>decodeFileToFile</h4>\n<pre>public static&nbsp;void&nbsp;decodeFileToFile(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;infile,\n                                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;outfile)\n                             throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<div class=\"block\">Reads <tt>infile</tt> and decodes it to <tt>outfile</tt>.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>infile</code> - Input file</dd>\n<dd><code>outfile</code> - Output file</dd>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code> - if there is an error</dd>\n<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n<dd>2.2</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/AutograderUnitTestGUI.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/Base64.InputStream.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/Base64.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Base64.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.class.summary\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/Clipboard_get.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>Clipboard_get</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"Clipboard_get\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/Base64.OutputStream.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/Clipboard_set.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/Clipboard_get.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Clipboard_get.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class Clipboard_get\" class=\"title\">Class Clipboard_get</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.Clipboard_get</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">Clipboard_get</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Clipboard_get.html#Clipboard_get--\">Clipboard_get</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Clipboard_get.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"Clipboard_get--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>Clipboard_get</h4>\n<pre>public&nbsp;Clipboard_get()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/Base64.OutputStream.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/Clipboard_set.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/Clipboard_get.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Clipboard_get.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/Clipboard_set.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>Clipboard_set</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"Clipboard_set\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/Clipboard_get.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/DiffImage_compareImages.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/Clipboard_set.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Clipboard_set.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class Clipboard_set\" class=\"title\">Class Clipboard_set</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.Clipboard_set</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">Clipboard_set</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Clipboard_set.html#Clipboard_set--\">Clipboard_set</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Clipboard_set.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"Clipboard_set--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>Clipboard_set</h4>\n<pre>public&nbsp;Clipboard_set()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/Clipboard_get.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/DiffImage_compareImages.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/Clipboard_set.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Clipboard_set.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/DiffImage_compareImages.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>DiffImage_compareImages</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"DiffImage_compareImages\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/Clipboard_set.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/DiffImage_compareWindowToImage.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/DiffImage_compareImages.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"DiffImage_compareImages.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class DiffImage_compareImages\" class=\"title\">Class DiffImage_compareImages</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.DiffImage_compareImages</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">DiffImage_compareImages</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/DiffImage_compareImages.html#DiffImage_compareImages--\">DiffImage_compareImages</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/DiffImage_compareImages.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"DiffImage_compareImages--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>DiffImage_compareImages</h4>\n<pre>public&nbsp;DiffImage_compareImages()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/Clipboard_set.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/DiffImage_compareWindowToImage.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/DiffImage_compareImages.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"DiffImage_compareImages.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/DiffImage_compareWindowToImage.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>DiffImage_compareWindowToImage</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"DiffImage_compareWindowToImage\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/DiffImage_compareImages.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/DiffImage_show.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/DiffImage_compareWindowToImage.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"DiffImage_compareWindowToImage.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class DiffImage_compareWindowToImage\" class=\"title\">Class DiffImage_compareWindowToImage</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.DiffImage_compareWindowToImage</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">DiffImage_compareWindowToImage</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/DiffImage_compareWindowToImage.html#DiffImage_compareWindowToImage--\">DiffImage_compareWindowToImage</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/DiffImage_compareWindowToImage.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"DiffImage_compareWindowToImage--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>DiffImage_compareWindowToImage</h4>\n<pre>public&nbsp;DiffImage_compareWindowToImage()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/DiffImage_compareImages.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/DiffImage_show.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/DiffImage_compareWindowToImage.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"DiffImage_compareWindowToImage.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/DiffImage_show.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>DiffImage_show</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"DiffImage_show\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/DiffImage_compareWindowToImage.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/File_getTempDirectory.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/DiffImage_show.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"DiffImage_show.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class DiffImage_show\" class=\"title\">Class DiffImage_show</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.DiffImage_show</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">DiffImage_show</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/DiffImage_show.html#DiffImage_show--\">DiffImage_show</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/DiffImage_show.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"DiffImage_show--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>DiffImage_show</h4>\n<pre>public&nbsp;DiffImage_show()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/DiffImage_compareWindowToImage.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/File_getTempDirectory.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/DiffImage_show.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"DiffImage_show.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/File_getTempDirectory.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>File_getTempDirectory</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"File_getTempDirectory\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/DiffImage_show.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/File_openFileDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/File_getTempDirectory.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"File_getTempDirectory.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class File_getTempDirectory\" class=\"title\">Class File_getTempDirectory</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.File_getTempDirectory</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">File_getTempDirectory</span>\nextends <a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/File_getTempDirectory.html#File_getTempDirectory--\">File_getTempDirectory</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/File_getTempDirectory.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"File_getTempDirectory--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>File_getTempDirectory</h4>\n<pre>public&nbsp;File_getTempDirectory()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/DiffImage_show.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/File_openFileDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/File_getTempDirectory.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"File_getTempDirectory.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/File_openFileDialog.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>File_openFileDialog</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"File_openFileDialog\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/File_getTempDirectory.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GBufferedImage.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/File_openFileDialog.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"File_openFileDialog.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class File_openFileDialog\" class=\"title\">Class File_openFileDialog</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.File_openFileDialog</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">File_openFileDialog</span>\nextends <a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/File_openFileDialog.html#File_openFileDialog--\">File_openFileDialog</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/File_openFileDialog.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"File_openFileDialog--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>File_openFileDialog</h4>\n<pre>public&nbsp;File_openFileDialog()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/File_getTempDirectory.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GBufferedImage.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/File_openFileDialog.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"File_openFileDialog.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GBufferedImage.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GBufferedImage</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GBufferedImage\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":9,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":9,\"i15\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/File_openFileDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GBufferedImage_create.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GBufferedImage.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GBufferedImage.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GBufferedImage\" class=\"title\">Class GBufferedImage</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">acm.graphics.GObject</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/GInteractor.html\" title=\"class in stanford.spl\">stanford.spl.GInteractor</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GBufferedImage</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"../../acm/graphics/GResizable.html\" title=\"interface in acm.graphics\">GResizable</a>, <a href=\"../../acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true\" title=\"class or interface in java.lang\">Cloneable</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GBufferedImage</span>\nextends <a href=\"../../stanford/spl/GInteractor.html\" title=\"class in stanford.spl\">GInteractor</a></pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#stanford.spl.GBufferedImage\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GBufferedImage.html#GBufferedImage-int-int-\">GBufferedImage</a></span>(int&nbsp;width,\n              int&nbsp;height)</code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GBufferedImage.html#GBufferedImage-int-int-int-\">GBufferedImage</a></span>(int&nbsp;width,\n              int&nbsp;height,\n              int&nbsp;backgroundColor)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GBufferedImage.html#clear--\">clear</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GBufferedImage.html#fill-int-\">fill</a></span>(int&nbsp;rgb)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GBufferedImage.html#fillRegion-int-int-int-int-int-\">fillRegion</a></span>(int&nbsp;x,\n          int&nbsp;y,\n          int&nbsp;width,\n          int&nbsp;height,\n          int&nbsp;rgb)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GBufferedImage.html#fromStringBase64-java.lang.String-\">fromStringBase64</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;base64)</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GBufferedImage.html#fromStringBase64-java.lang.String-java.awt.image.BufferedImage-\">fromStringBase64</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;base64,\n                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/BufferedImage.html?is-external=true\" title=\"class or interface in java.awt.image\">BufferedImage</a>&nbsp;bufferedImage)</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/BufferedImage.html?is-external=true\" title=\"class or interface in java.awt.image\">BufferedImage</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GBufferedImage.html#getBufferedImage--\">getBufferedImage</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GBufferedImage.html#getGraphics--\">getGraphics</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GBufferedImage.html#getImageHeight--\">getImageHeight</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GBufferedImage.html#getImageWidth--\">getImageWidth</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GBufferedImage.html#load-java.lang.String-\">load</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GBufferedImage.html#resize-int-int-boolean-\">resize</a></span>(int&nbsp;w,\n      int&nbsp;h,\n      boolean&nbsp;retain)</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GBufferedImage.html#save-java.lang.String-\">save</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>&nbsp;</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GBufferedImage.html#setRGB-int-int-int-\">setRGB</a></span>(int&nbsp;x,\n      int&nbsp;y,\n      int&nbsp;rgb)</code>&nbsp;</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GBufferedImage.html#toStringBase64--\">toStringBase64</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GBufferedImage.html#toStringBase64-java.awt.image.BufferedImage-\">toStringBase64</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/BufferedImage.html?is-external=true\" title=\"class or interface in java.awt.image\">BufferedImage</a>&nbsp;bufferedImage)</code>&nbsp;</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GBufferedImage.html#toStringBase64-java.awt.image.BufferedImage-int-int-\">toStringBase64</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/BufferedImage.html?is-external=true\" title=\"class or interface in java.awt.image\">BufferedImage</a>&nbsp;bufferedImage,\n              int&nbsp;imageWidth,\n              int&nbsp;imageHeight)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.GInteractor\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/GInteractor.html\" title=\"class in stanford.spl\">GInteractor</a></h3>\n<code><a href=\"../../stanford/spl/GInteractor.html#getAccelerator--\">getAccelerator</a>, <a href=\"../../stanford/spl/GInteractor.html#getActionCommand--\">getActionCommand</a>, <a href=\"../../stanford/spl/GInteractor.html#getBounds--\">getBounds</a>, <a href=\"../../stanford/spl/GInteractor.html#getFont--\">getFont</a>, <a href=\"../../stanford/spl/GInteractor.html#getFontString--\">getFontString</a>, <a href=\"../../stanford/spl/GInteractor.html#getIcon--\">getIcon</a>, <a href=\"../../stanford/spl/GInteractor.html#getInteractor--\">getInteractor</a>, <a href=\"../../stanford/spl/GInteractor.html#getMnemonic--\">getMnemonic</a>, <a href=\"../../stanford/spl/GInteractor.html#isEnabled--\">isEnabled</a>, <a href=\"../../stanford/spl/GInteractor.html#paint2d-java.awt.Graphics2D-\">paint2d</a>, <a href=\"../../stanford/spl/GInteractor.html#paintObject-java.awt.Graphics-\">paintObject</a>, <a href=\"../../stanford/spl/GInteractor.html#repaint--\">repaint</a>, <a href=\"../../stanford/spl/GInteractor.html#requestFocus--\">requestFocus</a>, <a href=\"../../stanford/spl/GInteractor.html#setAccelerator-java.lang.String-\">setAccelerator</a>, <a href=\"../../stanford/spl/GInteractor.html#setActionCommand-java.lang.String-\">setActionCommand</a>, <a href=\"../../stanford/spl/GInteractor.html#setBackground-java.awt.Color-\">setBackground</a>, <a href=\"../../stanford/spl/GInteractor.html#setBounds-double-double-double-double-\">setBounds</a>, <a href=\"../../stanford/spl/GInteractor.html#setBounds-acm.graphics.GRectangle-\">setBounds</a>, <a href=\"../../stanford/spl/GInteractor.html#setColor-java.awt.Color-\">setColor</a>, <a href=\"../../stanford/spl/GInteractor.html#setEnabled-boolean-\">setEnabled</a>, <a href=\"../../stanford/spl/GInteractor.html#setFont-java.awt.Font-\">setFont</a>, <a href=\"../../stanford/spl/GInteractor.html#setFont-java.lang.String-\">setFont</a>, <a href=\"../../stanford/spl/GInteractor.html#setForeground-java.awt.Color-\">setForeground</a>, <a href=\"../../stanford/spl/GInteractor.html#setIcon-javax.swing.Icon-\">setIcon</a>, <a href=\"../../stanford/spl/GInteractor.html#setIcon-java.lang.String-\">setIcon</a>, <a href=\"../../stanford/spl/GInteractor.html#setLocation-double-double-\">setLocation</a>, <a href=\"../../stanford/spl/GInteractor.html#setMnemonic-char-\">setMnemonic</a>, <a href=\"../../stanford/spl/GInteractor.html#setMnemonic-int-\">setMnemonic</a>, <a href=\"../../stanford/spl/GInteractor.html#setParent-acm.graphics.GContainer-\">setParent</a>, <a href=\"../../stanford/spl/GInteractor.html#setSize-double-double-\">setSize</a>, <a href=\"../../stanford/spl/GInteractor.html#setSize-acm.graphics.GDimension-\">setSize</a>, <a href=\"../../stanford/spl/GInteractor.html#setTooltip-java.lang.String-\">setTooltip</a>, <a href=\"../../stanford/spl/GInteractor.html#setVisible-boolean-\">setVisible</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.graphics.GObject\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.graphics.<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></h3>\n<code><a href=\"../../acm/graphics/GObject.html#addActionListener-java.awt.event.ActionListener-\">addActionListener</a>, <a href=\"../../acm/graphics/GObject.html#addMouseListener-java.awt.event.MouseListener-\">addMouseListener</a>, <a href=\"../../acm/graphics/GObject.html#addMouseMotionListener-java.awt.event.MouseMotionListener-\">addMouseMotionListener</a>, <a href=\"../../acm/graphics/GObject.html#areMouseListenersEnabled--\">areMouseListenersEnabled</a>, <a href=\"../../acm/graphics/GObject.html#clone--\">clone</a>, <a href=\"../../acm/graphics/GObject.html#colorName-java.awt.Color-\">colorName</a>, <a href=\"../../acm/graphics/GObject.html#colorName-int-\">colorName</a>, <a href=\"../../acm/graphics/GObject.html#colorNameFriendly-int-\">colorNameFriendly</a>, <a href=\"../../acm/graphics/GObject.html#contains-double-double-\">contains</a>, <a href=\"../../acm/graphics/GObject.html#contains-acm.graphics.GPoint-\">contains</a>, <a href=\"../../acm/graphics/GObject.html#createTransformedGraphics-java.awt.Graphics-\">createTransformedGraphics</a>, <a href=\"../../acm/graphics/GObject.html#fireActionEvent-java.awt.event.ActionEvent-\">fireActionEvent</a>, <a href=\"../../acm/graphics/GObject.html#fireActionEvent-java.lang.String-\">fireActionEvent</a>, <a href=\"../../acm/graphics/GObject.html#fireMouseListeners-java.awt.event.MouseEvent-\">fireMouseListeners</a>, <a href=\"../../acm/graphics/GObject.html#getBottomY--\">getBottomY</a>, <a href=\"../../acm/graphics/GObject.html#getCenterLocation--\">getCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#getCenterX--\">getCenterX</a>, <a href=\"../../acm/graphics/GObject.html#getCenterY--\">getCenterY</a>, <a href=\"../../acm/graphics/GObject.html#getColor--\">getColor</a>, <a href=\"../../acm/graphics/GObject.html#getComponent--\">getComponent</a>, <a href=\"../../acm/graphics/GObject.html#getHeight--\">getHeight</a>, <a href=\"../../acm/graphics/GObject.html#getLineWidth--\">getLineWidth</a>, <a href=\"../../acm/graphics/GObject.html#getLocation--\">getLocation</a>, <a href=\"../../acm/graphics/GObject.html#getMatrix--\">getMatrix</a>, <a href=\"../../acm/graphics/GObject.html#getObjectColor--\">getObjectColor</a>, <a href=\"../../acm/graphics/GObject.html#getParent--\">getParent</a>, <a href=\"../../acm/graphics/GObject.html#getRightX--\">getRightX</a>, <a href=\"../../acm/graphics/GObject.html#getSize--\">getSize</a>, <a href=\"../../acm/graphics/GObject.html#getWidth--\">getWidth</a>, <a href=\"../../acm/graphics/GObject.html#getX--\">getX</a>, <a href=\"../../acm/graphics/GObject.html#getY--\">getY</a>, <a href=\"../../acm/graphics/GObject.html#intersects-acm.graphics.GObject-\">intersects</a>, <a href=\"../../acm/graphics/GObject.html#isAntiAliasing--\">isAntiAliasing</a>, <a href=\"../../acm/graphics/GObject.html#isVisible--\">isVisible</a>, <a href=\"../../acm/graphics/GObject.html#move-double-double-\">move</a>, <a href=\"../../acm/graphics/GObject.html#movePolar-double-double-\">movePolar</a>, <a href=\"../../acm/graphics/GObject.html#paint-java.awt.Graphics-\">paint</a>, <a href=\"../../acm/graphics/GObject.html#paramString--\">paramString</a>, <a href=\"../../acm/graphics/GObject.html#pause-double-\">pause</a>, <a href=\"../../acm/graphics/GObject.html#removeActionListener-java.awt.event.ActionListener-\">removeActionListener</a>, <a href=\"../../acm/graphics/GObject.html#removeMouseListener-java.awt.event.MouseListener-\">removeMouseListener</a>, <a href=\"../../acm/graphics/GObject.html#removeMouseMotionListener-java.awt.event.MouseMotionListener-\">removeMouseMotionListener</a>, <a href=\"../../acm/graphics/GObject.html#rotate-double-\">rotate</a>, <a href=\"../../acm/graphics/GObject.html#scale-double-\">scale</a>, <a href=\"../../acm/graphics/GObject.html#scale-double-double-\">scale</a>, <a href=\"../../acm/graphics/GObject.html#sendBackward--\">sendBackward</a>, <a href=\"../../acm/graphics/GObject.html#sendForward--\">sendForward</a>, <a href=\"../../acm/graphics/GObject.html#sendToBack--\">sendToBack</a>, <a href=\"../../acm/graphics/GObject.html#sendToFront--\">sendToFront</a>, <a href=\"../../acm/graphics/GObject.html#setAntiAliasing-boolean-\">setAntiAliasing</a>, <a href=\"../../acm/graphics/GObject.html#setBottomY-double-\">setBottomY</a>, <a href=\"../../acm/graphics/GObject.html#setCenterLocation-double-double-\">setCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#setCenterLocation-acm.graphics.GPoint-\">setCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#setCenterX-double-\">setCenterX</a>, <a href=\"../../acm/graphics/GObject.html#setCenterY-double-\">setCenterY</a>, <a href=\"../../acm/graphics/GObject.html#setLineWidth-double-\">setLineWidth</a>, <a href=\"../../acm/graphics/GObject.html#setLocation-acm.graphics.GPoint-\">setLocation</a>, <a href=\"../../acm/graphics/GObject.html#setRightX-double-\">setRightX</a>, <a href=\"../../acm/graphics/GObject.html#setX-double-\">setX</a>, <a href=\"../../acm/graphics/GObject.html#setY-double-\">setY</a>, <a href=\"../../acm/graphics/GObject.html#start--\">start</a>, <a href=\"../../acm/graphics/GObject.html#start-java.lang.String:A-\">start</a>, <a href=\"../../acm/graphics/GObject.html#toString--\">toString</a>, <a href=\"../../acm/graphics/GObject.html#updateEnabledList--\">updateEnabledList</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GBufferedImage-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>GBufferedImage</h4>\n<pre>public&nbsp;GBufferedImage(int&nbsp;width,\n                      int&nbsp;height)</pre>\n</li>\n</ul>\n<a name=\"GBufferedImage-int-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GBufferedImage</h4>\n<pre>public&nbsp;GBufferedImage(int&nbsp;width,\n                      int&nbsp;height,\n                      int&nbsp;backgroundColor)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"clear--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clear</h4>\n<pre>public&nbsp;void&nbsp;clear()</pre>\n</li>\n</ul>\n<a name=\"fill-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fill</h4>\n<pre>public&nbsp;void&nbsp;fill(int&nbsp;rgb)</pre>\n</li>\n</ul>\n<a name=\"fillRegion-int-int-int-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fillRegion</h4>\n<pre>public&nbsp;void&nbsp;fillRegion(int&nbsp;x,\n                       int&nbsp;y,\n                       int&nbsp;width,\n                       int&nbsp;height,\n                       int&nbsp;rgb)</pre>\n</li>\n</ul>\n<a name=\"getBufferedImage--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getBufferedImage</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/BufferedImage.html?is-external=true\" title=\"class or interface in java.awt.image\">BufferedImage</a>&nbsp;getBufferedImage()</pre>\n</li>\n</ul>\n<a name=\"getGraphics--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getGraphics</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;getGraphics()</pre>\n</li>\n</ul>\n<a name=\"getImageHeight--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getImageHeight</h4>\n<pre>public&nbsp;int&nbsp;getImageHeight()</pre>\n</li>\n</ul>\n<a name=\"getImageWidth--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getImageWidth</h4>\n<pre>public&nbsp;int&nbsp;getImageWidth()</pre>\n</li>\n</ul>\n<a name=\"load-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>load</h4>\n<pre>public&nbsp;void&nbsp;load(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)\n          throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"resize-int-int-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>resize</h4>\n<pre>public&nbsp;void&nbsp;resize(int&nbsp;w,\n                   int&nbsp;h,\n                   boolean&nbsp;retain)</pre>\n</li>\n</ul>\n<a name=\"save-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>save</h4>\n<pre>public&nbsp;void&nbsp;save(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)\n          throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setRGB-int-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setRGB</h4>\n<pre>public&nbsp;void&nbsp;setRGB(int&nbsp;x,\n                   int&nbsp;y,\n                   int&nbsp;rgb)</pre>\n</li>\n</ul>\n<a name=\"toStringBase64--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>toStringBase64</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;toStringBase64()</pre>\n</li>\n</ul>\n<a name=\"toStringBase64-java.awt.image.BufferedImage-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>toStringBase64</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;toStringBase64(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/BufferedImage.html?is-external=true\" title=\"class or interface in java.awt.image\">BufferedImage</a>&nbsp;bufferedImage)</pre>\n</li>\n</ul>\n<a name=\"toStringBase64-java.awt.image.BufferedImage-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>toStringBase64</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;toStringBase64(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/BufferedImage.html?is-external=true\" title=\"class or interface in java.awt.image\">BufferedImage</a>&nbsp;bufferedImage,\n                                    int&nbsp;imageWidth,\n                                    int&nbsp;imageHeight)</pre>\n</li>\n</ul>\n<a name=\"fromStringBase64-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>fromStringBase64</h4>\n<pre>public&nbsp;void&nbsp;fromStringBase64(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;base64)\n                      throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"fromStringBase64-java.lang.String-java.awt.image.BufferedImage-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>fromStringBase64</h4>\n<pre>public static&nbsp;void&nbsp;fromStringBase64(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;base64,\n                                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/BufferedImage.html?is-external=true\" title=\"class or interface in java.awt.image\">BufferedImage</a>&nbsp;bufferedImage)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/File_openFileDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GBufferedImage_create.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GBufferedImage.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GBufferedImage.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GBufferedImage_create.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GBufferedImage_create</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GBufferedImage_create\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GBufferedImage.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GBufferedImage_fill.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GBufferedImage_create.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GBufferedImage_create.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GBufferedImage_create\" class=\"title\">Class GBufferedImage_create</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GBufferedImage_create</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GBufferedImage_create</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GBufferedImage_create.html#GBufferedImage_create--\">GBufferedImage_create</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GBufferedImage_create.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GBufferedImage_create--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GBufferedImage_create</h4>\n<pre>public&nbsp;GBufferedImage_create()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GBufferedImage.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GBufferedImage_fill.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GBufferedImage_create.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GBufferedImage_create.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GBufferedImage_fill.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GBufferedImage_fill</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GBufferedImage_fill\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GBufferedImage_create.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GBufferedImage_fillRegion.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GBufferedImage_fill.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GBufferedImage_fill.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GBufferedImage_fill\" class=\"title\">Class GBufferedImage_fill</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GBufferedImage_fill</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GBufferedImage_fill</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GBufferedImage_fill.html#GBufferedImage_fill--\">GBufferedImage_fill</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GBufferedImage_fill.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GBufferedImage_fill--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GBufferedImage_fill</h4>\n<pre>public&nbsp;GBufferedImage_fill()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GBufferedImage_create.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GBufferedImage_fillRegion.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GBufferedImage_fill.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GBufferedImage_fill.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GBufferedImage_fillRegion.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GBufferedImage_fillRegion</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GBufferedImage_fillRegion\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GBufferedImage_fill.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GBufferedImage_load.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GBufferedImage_fillRegion.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GBufferedImage_fillRegion.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GBufferedImage_fillRegion\" class=\"title\">Class GBufferedImage_fillRegion</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GBufferedImage_fillRegion</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GBufferedImage_fillRegion</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GBufferedImage_fillRegion.html#GBufferedImage_fillRegion--\">GBufferedImage_fillRegion</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GBufferedImage_fillRegion.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GBufferedImage_fillRegion--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GBufferedImage_fillRegion</h4>\n<pre>public&nbsp;GBufferedImage_fillRegion()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GBufferedImage_fill.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GBufferedImage_load.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GBufferedImage_fillRegion.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GBufferedImage_fillRegion.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GBufferedImage_load.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GBufferedImage_load</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GBufferedImage_load\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GBufferedImage_fillRegion.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GBufferedImage_resize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GBufferedImage_load.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GBufferedImage_load.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GBufferedImage_load\" class=\"title\">Class GBufferedImage_load</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GBufferedImage_load</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GBufferedImage_load</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GBufferedImage_load.html#GBufferedImage_load--\">GBufferedImage_load</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GBufferedImage_load.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GBufferedImage_load--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GBufferedImage_load</h4>\n<pre>public&nbsp;GBufferedImage_load()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GBufferedImage_fillRegion.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GBufferedImage_resize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GBufferedImage_load.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GBufferedImage_load.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GBufferedImage_resize.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GBufferedImage_resize</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GBufferedImage_resize\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GBufferedImage_load.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GBufferedImage_save.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GBufferedImage_resize.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GBufferedImage_resize.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GBufferedImage_resize\" class=\"title\">Class GBufferedImage_resize</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GBufferedImage_resize</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GBufferedImage_resize</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GBufferedImage_resize.html#GBufferedImage_resize--\">GBufferedImage_resize</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GBufferedImage_resize.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GBufferedImage_resize--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GBufferedImage_resize</h4>\n<pre>public&nbsp;GBufferedImage_resize()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GBufferedImage_load.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GBufferedImage_save.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GBufferedImage_resize.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GBufferedImage_resize.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GBufferedImage_save.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GBufferedImage_save</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GBufferedImage_save\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GBufferedImage_resize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GBufferedImage_setRGB.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GBufferedImage_save.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GBufferedImage_save.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GBufferedImage_save\" class=\"title\">Class GBufferedImage_save</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GBufferedImage_save</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GBufferedImage_save</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GBufferedImage_save.html#GBufferedImage_save--\">GBufferedImage_save</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GBufferedImage_save.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GBufferedImage_save--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GBufferedImage_save</h4>\n<pre>public&nbsp;GBufferedImage_save()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GBufferedImage_resize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GBufferedImage_setRGB.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GBufferedImage_save.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GBufferedImage_save.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GBufferedImage_setRGB.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GBufferedImage_setRGB</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GBufferedImage_setRGB\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GBufferedImage_save.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GBufferedImage_updateAllPixels.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GBufferedImage_setRGB.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GBufferedImage_setRGB.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GBufferedImage_setRGB\" class=\"title\">Class GBufferedImage_setRGB</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GBufferedImage_setRGB</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GBufferedImage_setRGB</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GBufferedImage_setRGB.html#GBufferedImage_setRGB--\">GBufferedImage_setRGB</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GBufferedImage_setRGB.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GBufferedImage_setRGB--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GBufferedImage_setRGB</h4>\n<pre>public&nbsp;GBufferedImage_setRGB()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GBufferedImage_save.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GBufferedImage_updateAllPixels.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GBufferedImage_setRGB.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GBufferedImage_setRGB.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GBufferedImage_updateAllPixels.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GBufferedImage_updateAllPixels</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GBufferedImage_updateAllPixels\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GBufferedImage_setRGB.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GCompound_add.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GBufferedImage_updateAllPixels.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GBufferedImage_updateAllPixels.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GBufferedImage_updateAllPixels\" class=\"title\">Class GBufferedImage_updateAllPixels</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GBufferedImage_updateAllPixels</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GBufferedImage_updateAllPixels</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GBufferedImage_updateAllPixels.html#GBufferedImage_updateAllPixels--\">GBufferedImage_updateAllPixels</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GBufferedImage_updateAllPixels.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GBufferedImage_updateAllPixels--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GBufferedImage_updateAllPixels</h4>\n<pre>public&nbsp;GBufferedImage_updateAllPixels()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GBufferedImage_setRGB.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GCompound_add.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GBufferedImage_updateAllPixels.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GBufferedImage_updateAllPixels.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GCompound_add.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GCompound_add</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GCompound_add\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GBufferedImage_updateAllPixels.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GFileChooser_showOpenDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GCompound_add.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GCompound_add.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GCompound_add\" class=\"title\">Class GCompound_add</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GCompound_add</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GCompound_add</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GCompound_add.html#GCompound_add--\">GCompound_add</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GCompound_add.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GCompound_add--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GCompound_add</h4>\n<pre>public&nbsp;GCompound_add()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GBufferedImage_updateAllPixels.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GFileChooser_showOpenDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GCompound_add.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GCompound_add.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GFileChooser_showOpenDialog.GFileChooserFileFilter.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GFileChooser_showOpenDialog.GFileChooserFileFilter</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GFileChooser_showOpenDialog.GFileChooserFileFilter\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GFileChooser_showOpenDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GFileChooser_showSaveDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GFileChooser_showOpenDialog.GFileChooserFileFilter.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GFileChooser_showOpenDialog.GFileChooserFileFilter.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GFileChooser_showOpenDialog.GFileChooserFileFilter\" class=\"title\">Class GFileChooser_showOpenDialog.GFileChooserFileFilter</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/filechooser/FileFilter.html?is-external=true\" title=\"class or interface in javax.swing.filechooser\">javax.swing.filechooser.FileFilter</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GFileChooser_showOpenDialog.GFileChooserFileFilter</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>Enclosing class:</dt>\n<dd><a href=\"../../stanford/spl/GFileChooser_showOpenDialog.html\" title=\"class in stanford.spl\">GFileChooser_showOpenDialog</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public static class <span class=\"typeNameLabel\">GFileChooser_showOpenDialog.GFileChooserFileFilter</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/filechooser/FileFilter.html?is-external=true\" title=\"class or interface in javax.swing.filechooser\">FileFilter</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GFileChooser_showOpenDialog.GFileChooserFileFilter.html#GFileChooserFileFilter-java.lang.String-\">GFileChooserFileFilter</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fileFilter)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GFileChooser_showOpenDialog.GFileChooserFileFilter.html#accept-java.io.File-\">accept</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;f)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GFileChooser_showOpenDialog.GFileChooserFileFilter.html#getDescription--\">getDescription</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GFileChooserFileFilter-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GFileChooserFileFilter</h4>\n<pre>public&nbsp;GFileChooserFileFilter(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fileFilter)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"accept-java.io.File-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>accept</h4>\n<pre>public&nbsp;boolean&nbsp;accept(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;f)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/filechooser/FileFilter.html?is-external=true#accept-java.io.File-\" title=\"class or interface in javax.swing.filechooser\">accept</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/filechooser/FileFilter.html?is-external=true\" title=\"class or interface in javax.swing.filechooser\">FileFilter</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getDescription--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>getDescription</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getDescription()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/filechooser/FileFilter.html?is-external=true#getDescription--\" title=\"class or interface in javax.swing.filechooser\">getDescription</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/filechooser/FileFilter.html?is-external=true\" title=\"class or interface in javax.swing.filechooser\">FileFilter</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GFileChooser_showOpenDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GFileChooser_showSaveDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GFileChooser_showOpenDialog.GFileChooserFileFilter.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GFileChooser_showOpenDialog.GFileChooserFileFilter.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GFileChooser_showOpenDialog.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GFileChooser_showOpenDialog</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GFileChooser_showOpenDialog\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GCompound_add.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GFileChooser_showOpenDialog.GFileChooserFileFilter.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GFileChooser_showOpenDialog.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GFileChooser_showOpenDialog.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.class.summary\">Nested</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GFileChooser_showOpenDialog\" class=\"title\">Class GFileChooser_showOpenDialog</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GFileChooser_showOpenDialog</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GFileChooser_showOpenDialog</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Nested Class Summary table, listing nested classes, and an explanation\">\n<caption><span>Nested Classes</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Class and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static class&nbsp;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GFileChooser_showOpenDialog.GFileChooserFileFilter.html\" title=\"class in stanford.spl\">GFileChooser_showOpenDialog.GFileChooserFileFilter</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GFileChooser_showOpenDialog.html#GFileChooser_showOpenDialog--\">GFileChooser_showOpenDialog</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GFileChooser_showOpenDialog.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GFileChooser_showOpenDialog--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GFileChooser_showOpenDialog</h4>\n<pre>public&nbsp;GFileChooser_showOpenDialog()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GCompound_add.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GFileChooser_showOpenDialog.GFileChooserFileFilter.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GFileChooser_showOpenDialog.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GFileChooser_showOpenDialog.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.class.summary\">Nested</a>&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GFileChooser_showSaveDialog.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GFileChooser_showSaveDialog</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GFileChooser_showSaveDialog\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GFileChooser_showOpenDialog.GFileChooserFileFilter.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GInteractor.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GFileChooser_showSaveDialog.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GFileChooser_showSaveDialog.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GFileChooser_showSaveDialog\" class=\"title\">Class GFileChooser_showSaveDialog</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GFileChooser_showSaveDialog</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GFileChooser_showSaveDialog</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GFileChooser_showSaveDialog.html#GFileChooser_showSaveDialog--\">GFileChooser_showSaveDialog</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GFileChooser_showSaveDialog.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GFileChooser_showSaveDialog--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GFileChooser_showSaveDialog</h4>\n<pre>public&nbsp;GFileChooser_showSaveDialog()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GFileChooser_showOpenDialog.GFileChooserFileFilter.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GInteractor.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GFileChooser_showSaveDialog.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GFileChooser_showSaveDialog.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GInteractor.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GInteractor</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GInteractor\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":10,\"i16\":10,\"i17\":10,\"i18\":10,\"i19\":10,\"i20\":10,\"i21\":10,\"i22\":10,\"i23\":10,\"i24\":10,\"i25\":10,\"i26\":10,\"i27\":10,\"i28\":10,\"i29\":10,\"i30\":10,\"i31\":10,\"i32\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GFileChooser_showSaveDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GInteractor_addActionListener.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GInteractor.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GInteractor.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GInteractor\" class=\"title\">Class GInteractor</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">acm.graphics.GObject</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GInteractor</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"../../acm/graphics/GResizable.html\" title=\"interface in acm.graphics\">GResizable</a>, <a href=\"../../acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true\" title=\"class or interface in java.lang\">Cloneable</a></dd>\n</dl>\n<dl>\n<dt>Direct Known Subclasses:</dt>\n<dd><a href=\"../../stanford/spl/GBufferedImage.html\" title=\"class in stanford.spl\">GBufferedImage</a>, <a href=\"../../stanford/spl/GRadioButton.html\" title=\"class in stanford.spl\">GRadioButton</a>, <a href=\"../../stanford/spl/GSlider.html\" title=\"class in stanford.spl\">GSlider</a>, <a href=\"../../stanford/spl/GTable.html\" title=\"class in stanford.spl\">GTable</a>, <a href=\"../../stanford/spl/GTextArea.html\" title=\"class in stanford.spl\">GTextArea</a>, <a href=\"../../stanford/spl/GTextField.html\" title=\"class in stanford.spl\">GTextField</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public abstract class <span class=\"typeNameLabel\">GInteractor</span>\nextends <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>\nimplements <a href=\"../../acm/graphics/GResizable.html\" title=\"interface in acm.graphics\">GResizable</a></pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#stanford.spl.GInteractor\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor.html#GInteractor-javax.swing.JComponent-\">GInteractor</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&nbsp;paramJComponent)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor.html#getAccelerator--\">getAccelerator</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor.html#getActionCommand--\">getActionCommand</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor.html#getBounds--\">getBounds</a></span>()</code>\n<div class=\"block\">Returns the bounding box of this object, which is defined to be the\n smallest rectangle that covers everything drawn by the figure.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor.html#getFont--\">getFont</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor.html#getFontString--\">getFontString</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Icon.html?is-external=true\" title=\"class or interface in javax.swing\">Icon</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor.html#getIcon--\">getIcon</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor.html#getInteractor--\">getInteractor</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>char</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor.html#getMnemonic--\">getMnemonic</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor.html#isEnabled--\">isEnabled</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor.html#paint2d-java.awt.Graphics2D-\">paint2d</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics2D.html?is-external=true\" title=\"class or interface in java.awt\">Graphics2D</a>&nbsp;paramGraphics2D)</code>\n<div class=\"block\">All subclasses of <code>GObject</code> must define a <code>paint2d</code>\n method which allows the object to draw itself on the <code>Graphics</code>\n context passed in as the parameter <code>g</code>.</div>\n</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor.html#paintObject-java.awt.Graphics-\">paintObject</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;paramGraphics)</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor.html#repaint--\">repaint</a></span>()</code>\n<div class=\"block\">Signals that the object needs to be repainted.</div>\n</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor.html#requestFocus--\">requestFocus</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor.html#setAccelerator-java.lang.String-\">setAccelerator</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;accelerator)</code>&nbsp;</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor.html#setActionCommand-java.lang.String-\">setActionCommand</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</code>&nbsp;</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor.html#setBackground-java.awt.Color-\">setBackground</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>&nbsp;</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor.html#setBounds-double-double-double-double-\">setBounds</a></span>(double&nbsp;paramDouble1,\n         double&nbsp;paramDouble2,\n         double&nbsp;paramDouble3,\n         double&nbsp;paramDouble4)</code>\n<div class=\"block\">Changes the bounds of this object to the specified values.</div>\n</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor.html#setBounds-acm.graphics.GRectangle-\">setBounds</a></span>(<a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a>&nbsp;paramGRectangle)</code>\n<div class=\"block\">Changes the bounds of this object to the values from the specified\n <code>GRectangle</code>.</div>\n</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor.html#setColor-java.awt.Color-\">setColor</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>\n<div class=\"block\">Sets the color used to display this object.</div>\n</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor.html#setEnabled-boolean-\">setEnabled</a></span>(boolean&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor.html#setFont-java.awt.Font-\">setFont</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a>&nbsp;font)</code>&nbsp;</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor.html#setFont-java.lang.String-\">setFont</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fontString)</code>&nbsp;</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor.html#setForeground-java.awt.Color-\">setForeground</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>&nbsp;</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor.html#setIcon-javax.swing.Icon-\">setIcon</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Icon.html?is-external=true\" title=\"class or interface in javax.swing\">Icon</a>&nbsp;icon)</code>&nbsp;</td>\n</tr>\n<tr id=\"i24\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor.html#setIcon-java.lang.String-\">setIcon</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;iconFileName)</code>&nbsp;</td>\n</tr>\n<tr id=\"i25\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor.html#setLocation-double-double-\">setLocation</a></span>(double&nbsp;paramDouble1,\n           double&nbsp;paramDouble2)</code>\n<div class=\"block\">Sets the location of this object to the point (<code>x</code>, <code>y</code>).</div>\n</td>\n</tr>\n<tr id=\"i26\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor.html#setMnemonic-char-\">setMnemonic</a></span>(char&nbsp;mnemonic)</code>&nbsp;</td>\n</tr>\n<tr id=\"i27\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor.html#setMnemonic-int-\">setMnemonic</a></span>(int&nbsp;mnemonic)</code>&nbsp;</td>\n</tr>\n<tr id=\"i28\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor.html#setParent-acm.graphics.GContainer-\">setParent</a></span>(<a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a>&nbsp;paramGContainer)</code>\n<div class=\"block\">Sets the parent of this object, which should be called only by the\n <code>GContainer</code> in which this is installed.</div>\n</td>\n</tr>\n<tr id=\"i29\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor.html#setSize-double-double-\">setSize</a></span>(double&nbsp;paramDouble1,\n       double&nbsp;paramDouble2)</code>\n<div class=\"block\">Changes the size of this object to the specified width and height.</div>\n</td>\n</tr>\n<tr id=\"i30\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor.html#setSize-acm.graphics.GDimension-\">setSize</a></span>(acm.graphics.GDimension&nbsp;paramGDimension)</code>\n<div class=\"block\">Changes the size of this object as specified by the <code>GDimension</code>\n object.</div>\n</td>\n</tr>\n<tr id=\"i31\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor.html#setTooltip-java.lang.String-\">setTooltip</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;tooltipText)</code>&nbsp;</td>\n</tr>\n<tr id=\"i32\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor.html#setVisible-boolean-\">setVisible</a></span>(boolean&nbsp;paramBoolean)</code>\n<div class=\"block\">Sets whether this object is visible.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.graphics.GObject\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.graphics.<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></h3>\n<code><a href=\"../../acm/graphics/GObject.html#addActionListener-java.awt.event.ActionListener-\">addActionListener</a>, <a href=\"../../acm/graphics/GObject.html#addMouseListener-java.awt.event.MouseListener-\">addMouseListener</a>, <a href=\"../../acm/graphics/GObject.html#addMouseMotionListener-java.awt.event.MouseMotionListener-\">addMouseMotionListener</a>, <a href=\"../../acm/graphics/GObject.html#areMouseListenersEnabled--\">areMouseListenersEnabled</a>, <a href=\"../../acm/graphics/GObject.html#clone--\">clone</a>, <a href=\"../../acm/graphics/GObject.html#colorName-java.awt.Color-\">colorName</a>, <a href=\"../../acm/graphics/GObject.html#colorName-int-\">colorName</a>, <a href=\"../../acm/graphics/GObject.html#colorNameFriendly-int-\">colorNameFriendly</a>, <a href=\"../../acm/graphics/GObject.html#contains-double-double-\">contains</a>, <a href=\"../../acm/graphics/GObject.html#contains-acm.graphics.GPoint-\">contains</a>, <a href=\"../../acm/graphics/GObject.html#createTransformedGraphics-java.awt.Graphics-\">createTransformedGraphics</a>, <a href=\"../../acm/graphics/GObject.html#fireActionEvent-java.awt.event.ActionEvent-\">fireActionEvent</a>, <a href=\"../../acm/graphics/GObject.html#fireActionEvent-java.lang.String-\">fireActionEvent</a>, <a href=\"../../acm/graphics/GObject.html#fireMouseListeners-java.awt.event.MouseEvent-\">fireMouseListeners</a>, <a href=\"../../acm/graphics/GObject.html#getBottomY--\">getBottomY</a>, <a href=\"../../acm/graphics/GObject.html#getCenterLocation--\">getCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#getCenterX--\">getCenterX</a>, <a href=\"../../acm/graphics/GObject.html#getCenterY--\">getCenterY</a>, <a href=\"../../acm/graphics/GObject.html#getColor--\">getColor</a>, <a href=\"../../acm/graphics/GObject.html#getComponent--\">getComponent</a>, <a href=\"../../acm/graphics/GObject.html#getHeight--\">getHeight</a>, <a href=\"../../acm/graphics/GObject.html#getLineWidth--\">getLineWidth</a>, <a href=\"../../acm/graphics/GObject.html#getLocation--\">getLocation</a>, <a href=\"../../acm/graphics/GObject.html#getMatrix--\">getMatrix</a>, <a href=\"../../acm/graphics/GObject.html#getObjectColor--\">getObjectColor</a>, <a href=\"../../acm/graphics/GObject.html#getParent--\">getParent</a>, <a href=\"../../acm/graphics/GObject.html#getRightX--\">getRightX</a>, <a href=\"../../acm/graphics/GObject.html#getSize--\">getSize</a>, <a href=\"../../acm/graphics/GObject.html#getWidth--\">getWidth</a>, <a href=\"../../acm/graphics/GObject.html#getX--\">getX</a>, <a href=\"../../acm/graphics/GObject.html#getY--\">getY</a>, <a href=\"../../acm/graphics/GObject.html#intersects-acm.graphics.GObject-\">intersects</a>, <a href=\"../../acm/graphics/GObject.html#isAntiAliasing--\">isAntiAliasing</a>, <a href=\"../../acm/graphics/GObject.html#isVisible--\">isVisible</a>, <a href=\"../../acm/graphics/GObject.html#move-double-double-\">move</a>, <a href=\"../../acm/graphics/GObject.html#movePolar-double-double-\">movePolar</a>, <a href=\"../../acm/graphics/GObject.html#paint-java.awt.Graphics-\">paint</a>, <a href=\"../../acm/graphics/GObject.html#paramString--\">paramString</a>, <a href=\"../../acm/graphics/GObject.html#pause-double-\">pause</a>, <a href=\"../../acm/graphics/GObject.html#removeActionListener-java.awt.event.ActionListener-\">removeActionListener</a>, <a href=\"../../acm/graphics/GObject.html#removeMouseListener-java.awt.event.MouseListener-\">removeMouseListener</a>, <a href=\"../../acm/graphics/GObject.html#removeMouseMotionListener-java.awt.event.MouseMotionListener-\">removeMouseMotionListener</a>, <a href=\"../../acm/graphics/GObject.html#rotate-double-\">rotate</a>, <a href=\"../../acm/graphics/GObject.html#scale-double-\">scale</a>, <a href=\"../../acm/graphics/GObject.html#scale-double-double-\">scale</a>, <a href=\"../../acm/graphics/GObject.html#sendBackward--\">sendBackward</a>, <a href=\"../../acm/graphics/GObject.html#sendForward--\">sendForward</a>, <a href=\"../../acm/graphics/GObject.html#sendToBack--\">sendToBack</a>, <a href=\"../../acm/graphics/GObject.html#sendToFront--\">sendToFront</a>, <a href=\"../../acm/graphics/GObject.html#setAntiAliasing-boolean-\">setAntiAliasing</a>, <a href=\"../../acm/graphics/GObject.html#setBottomY-double-\">setBottomY</a>, <a href=\"../../acm/graphics/GObject.html#setCenterLocation-double-double-\">setCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#setCenterLocation-acm.graphics.GPoint-\">setCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#setCenterX-double-\">setCenterX</a>, <a href=\"../../acm/graphics/GObject.html#setCenterY-double-\">setCenterY</a>, <a href=\"../../acm/graphics/GObject.html#setLineWidth-double-\">setLineWidth</a>, <a href=\"../../acm/graphics/GObject.html#setLocation-acm.graphics.GPoint-\">setLocation</a>, <a href=\"../../acm/graphics/GObject.html#setRightX-double-\">setRightX</a>, <a href=\"../../acm/graphics/GObject.html#setX-double-\">setX</a>, <a href=\"../../acm/graphics/GObject.html#setY-double-\">setY</a>, <a href=\"../../acm/graphics/GObject.html#start--\">start</a>, <a href=\"../../acm/graphics/GObject.html#start-java.lang.String:A-\">start</a>, <a href=\"../../acm/graphics/GObject.html#toString--\">toString</a>, <a href=\"../../acm/graphics/GObject.html#updateEnabledList--\">updateEnabledList</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GInteractor-javax.swing.JComponent-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GInteractor</h4>\n<pre>public&nbsp;GInteractor(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&nbsp;paramJComponent)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"setAccelerator-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setAccelerator</h4>\n<pre>public&nbsp;boolean&nbsp;setAccelerator(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;accelerator)</pre>\n</li>\n</ul>\n<a name=\"getAccelerator--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getAccelerator</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getAccelerator()</pre>\n</li>\n</ul>\n<a name=\"setBackground-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setBackground</h4>\n<pre>public&nbsp;void&nbsp;setBackground(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n</li>\n</ul>\n<a name=\"setColor-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setColor</h4>\n<pre>public&nbsp;void&nbsp;setColor(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../acm/graphics/GObject.html#setColor-java.awt.Color-\">GObject</a></code></span></div>\n<div class=\"block\">Sets the color used to display this object.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#setColor-java.awt.Color-\">setColor</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>color</code> - The color used to display this object</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setFont-java.awt.Font-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setFont</h4>\n<pre>public&nbsp;void&nbsp;setFont(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a>&nbsp;font)</pre>\n</li>\n</ul>\n<a name=\"setFont-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setFont</h4>\n<pre>public&nbsp;void&nbsp;setFont(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;fontString)</pre>\n</li>\n</ul>\n<a name=\"getFont--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFont</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a>&nbsp;getFont()</pre>\n</li>\n</ul>\n<a name=\"getFontString--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFontString</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getFontString()</pre>\n</li>\n</ul>\n<a name=\"setForeground-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setForeground</h4>\n<pre>public&nbsp;void&nbsp;setForeground(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n</li>\n</ul>\n<a name=\"setEnabled-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setEnabled</h4>\n<pre>public&nbsp;void&nbsp;setEnabled(boolean&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"isEnabled--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isEnabled</h4>\n<pre>public&nbsp;boolean&nbsp;isEnabled()</pre>\n</li>\n</ul>\n<a name=\"getInteractor--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getInteractor</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&nbsp;getInteractor()</pre>\n</li>\n</ul>\n<a name=\"getBounds--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getBounds</h4>\n<pre>public&nbsp;<a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a>&nbsp;getBounds()</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../acm/graphics/GObject.html#getBounds--\">GObject</a></code></span></div>\n<div class=\"block\">Returns the bounding box of this object, which is defined to be the\n smallest rectangle that covers everything drawn by the figure.  The\n coordinates of this rectangle do not necessarily match the location\n returned by <a href=\"#getLocation()\"><code>getLocation</code></a>.\n Given a <a href=\"GLabel.html\"><code>GLabel</code></a> object, for\n example, <a href=\"#getLocation()\"><code>getLocation</code></a>\n returns the coordinates of the point on the baseline at which the\n string begins; <code>getBounds</code>, by contrast, returns a\n rectangle that covers the entire window area occupied by the string.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#getBounds--\">getBounds</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The bounding box for this object</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getIcon--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getIcon</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Icon.html?is-external=true\" title=\"class or interface in javax.swing\">Icon</a>&nbsp;getIcon()</pre>\n</li>\n</ul>\n<a name=\"setIcon-javax.swing.Icon-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setIcon</h4>\n<pre>public&nbsp;void&nbsp;setIcon(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/Icon.html?is-external=true\" title=\"class or interface in javax.swing\">Icon</a>&nbsp;icon)</pre>\n</li>\n</ul>\n<a name=\"setIcon-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setIcon</h4>\n<pre>public&nbsp;void&nbsp;setIcon(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;iconFileName)</pre>\n</li>\n</ul>\n<a name=\"setLocation-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setLocation</h4>\n<pre>public&nbsp;void&nbsp;setLocation(double&nbsp;paramDouble1,\n                        double&nbsp;paramDouble2)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../acm/graphics/GObject.html#setLocation-double-double-\">GObject</a></code></span></div>\n<div class=\"block\">Sets the location of this object to the point (<code>x</code>, <code>y</code>).</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#setLocation-double-double-\">setLocation</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>paramDouble1</code> - The new x-coordinate for the object</dd>\n<dd><code>paramDouble2</code> - The new y-coordinate for the object</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setMnemonic-char-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setMnemonic</h4>\n<pre>public&nbsp;boolean&nbsp;setMnemonic(char&nbsp;mnemonic)</pre>\n</li>\n</ul>\n<a name=\"setMnemonic-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setMnemonic</h4>\n<pre>public&nbsp;boolean&nbsp;setMnemonic(int&nbsp;mnemonic)</pre>\n</li>\n</ul>\n<a name=\"getMnemonic--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getMnemonic</h4>\n<pre>public&nbsp;char&nbsp;getMnemonic()</pre>\n</li>\n</ul>\n<a name=\"setVisible-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setVisible</h4>\n<pre>public&nbsp;void&nbsp;setVisible(boolean&nbsp;paramBoolean)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../acm/graphics/GObject.html#setVisible-boolean-\">GObject</a></code></span></div>\n<div class=\"block\">Sets whether this object is visible.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#setVisible-boolean-\">setVisible</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>paramBoolean</code> - <code>true</code> to make the object visible, <code>false</code> to hide it</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setParent-acm.graphics.GContainer-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setParent</h4>\n<pre>public&nbsp;void&nbsp;setParent(<a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a>&nbsp;paramGContainer)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../acm/graphics/GObject.html#setParent-acm.graphics.GContainer-\">GObject</a></code></span></div>\n<div class=\"block\">Sets the parent of this object, which should be called only by the\n <code>GContainer</code> in which this is installed.  The\n serialization behavior of the parent data depends on the parent\n type.  Because a <code>GCompound</code> is serializable, it\n needs to be maintained in a nontransient variable; other parent\n classes are transient, so that these parents are not recorded\n in the serial form.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#setParent-acm.graphics.GContainer-\">setParent</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setSize-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setSize</h4>\n<pre>public&nbsp;void&nbsp;setSize(double&nbsp;paramDouble1,\n                    double&nbsp;paramDouble2)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from interface:&nbsp;<code><a href=\"../../acm/graphics/GResizable.html#setSize-double-double-\">GResizable</a></code></span></div>\n<div class=\"block\">Changes the size of this object to the specified width and height.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GResizable.html#setSize-double-double-\">setSize</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GResizable.html\" title=\"interface in acm.graphics\">GResizable</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>paramDouble1</code> - The new width of the object</dd>\n<dd><code>paramDouble2</code> - The new height of the object</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setSize-acm.graphics.GDimension-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setSize</h4>\n<pre>public&nbsp;void&nbsp;setSize(acm.graphics.GDimension&nbsp;paramGDimension)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from interface:&nbsp;<code><a href=\"../../acm/graphics/GResizable.html#setSize-acm.graphics.GDimension-\">GResizable</a></code></span></div>\n<div class=\"block\">Changes the size of this object as specified by the <code>GDimension</code>\n object.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GResizable.html#setSize-acm.graphics.GDimension-\">setSize</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GResizable.html\" title=\"interface in acm.graphics\">GResizable</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>paramGDimension</code> - A <code>GDimension</code> object specifying the new size</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setBounds-double-double-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setBounds</h4>\n<pre>public&nbsp;void&nbsp;setBounds(double&nbsp;paramDouble1,\n                      double&nbsp;paramDouble2,\n                      double&nbsp;paramDouble3,\n                      double&nbsp;paramDouble4)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from interface:&nbsp;<code><a href=\"../../acm/graphics/GResizable.html#setBounds-double-double-double-double-\">GResizable</a></code></span></div>\n<div class=\"block\">Changes the bounds of this object to the specified values.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GResizable.html#setBounds-double-double-double-double-\">setBounds</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GResizable.html\" title=\"interface in acm.graphics\">GResizable</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>paramDouble1</code> - The new x-coordinate for the object</dd>\n<dd><code>paramDouble2</code> - The new y-coordinate for the object</dd>\n<dd><code>paramDouble3</code> - The new width of the object</dd>\n<dd><code>paramDouble4</code> - The new height of the object</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setBounds-acm.graphics.GRectangle-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setBounds</h4>\n<pre>public&nbsp;void&nbsp;setBounds(<a href=\"../../acm/graphics/GRectangle.html\" title=\"class in acm.graphics\">GRectangle</a>&nbsp;paramGRectangle)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from interface:&nbsp;<code><a href=\"../../acm/graphics/GResizable.html#setBounds-acm.graphics.GRectangle-\">GResizable</a></code></span></div>\n<div class=\"block\">Changes the bounds of this object to the values from the specified\n <code>GRectangle</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GResizable.html#setBounds-acm.graphics.GRectangle-\">setBounds</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GResizable.html\" title=\"interface in acm.graphics\">GResizable</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>paramGRectangle</code> - A <code>GRectangle</code> specifying the new bounds</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setActionCommand-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setActionCommand</h4>\n<pre>public&nbsp;void&nbsp;setActionCommand(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</pre>\n</li>\n</ul>\n<a name=\"getActionCommand--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getActionCommand</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getActionCommand()</pre>\n</li>\n</ul>\n<a name=\"setTooltip-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setTooltip</h4>\n<pre>public&nbsp;void&nbsp;setTooltip(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;tooltipText)</pre>\n</li>\n</ul>\n<a name=\"repaint--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>repaint</h4>\n<pre>public&nbsp;void&nbsp;repaint()</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../acm/graphics/GObject.html#repaint--\">GObject</a></code></span></div>\n<div class=\"block\">Signals that the object needs to be repainted.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#repaint--\">repaint</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"paint2d-java.awt.Graphics2D-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>paint2d</h4>\n<pre>public&nbsp;void&nbsp;paint2d(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics2D.html?is-external=true\" title=\"class or interface in java.awt\">Graphics2D</a>&nbsp;paramGraphics2D)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../acm/graphics/GObject.html#paint2d-java.awt.Graphics2D-\">GObject</a></code></span></div>\n<div class=\"block\">All subclasses of <code>GObject</code> must define a <code>paint2d</code>\n method which allows the object to draw itself on the <code>Graphics</code>\n context passed in as the parameter <code>g</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#paint2d-java.awt.Graphics2D-\">paint2d</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>paramGraphics2D</code> - The graphics context into which the painting is done</dd>\n</dl>\n</li>\n</ul>\n<a name=\"paintObject-java.awt.Graphics-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>paintObject</h4>\n<pre>protected&nbsp;void&nbsp;paintObject(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;paramGraphics)</pre>\n</li>\n</ul>\n<a name=\"requestFocus--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>requestFocus</h4>\n<pre>public&nbsp;void&nbsp;requestFocus()</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GFileChooser_showSaveDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GInteractor_addActionListener.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GInteractor.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GInteractor.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GInteractor_addActionListener.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GInteractor_addActionListener</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GInteractor_addActionListener\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GInteractor.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GInteractor_getAccelerator.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GInteractor_addActionListener.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GInteractor_addActionListener.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GInteractor_addActionListener\" class=\"title\">Class GInteractor_addActionListener</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GInteractor_addActionListener</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GInteractor_addActionListener</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor_addActionListener.html#GInteractor_addActionListener--\">GInteractor_addActionListener</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor_addActionListener.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GInteractor_addActionListener--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GInteractor_addActionListener</h4>\n<pre>public&nbsp;GInteractor_addActionListener()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GInteractor.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GInteractor_getAccelerator.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GInteractor_addActionListener.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GInteractor_addActionListener.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GInteractor_getAccelerator.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GInteractor_getAccelerator</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GInteractor_getAccelerator\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GInteractor_addActionListener.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GInteractor_getFont.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GInteractor_getAccelerator.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GInteractor_getAccelerator.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GInteractor_getAccelerator\" class=\"title\">Class GInteractor_getAccelerator</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GInteractor_getAccelerator</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GInteractor_getAccelerator</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor_getAccelerator.html#GInteractor_getAccelerator--\">GInteractor_getAccelerator</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor_getAccelerator.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GInteractor_getAccelerator--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GInteractor_getAccelerator</h4>\n<pre>public&nbsp;GInteractor_getAccelerator()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GInteractor_addActionListener.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GInteractor_getFont.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GInteractor_getAccelerator.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GInteractor_getAccelerator.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GInteractor_getFont.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GInteractor_getFont</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GInteractor_getFont\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GInteractor_getAccelerator.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GInteractor_getMnemonic.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GInteractor_getFont.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GInteractor_getFont.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GInteractor_getFont\" class=\"title\">Class GInteractor_getFont</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GInteractor_getFont</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GInteractor_getFont</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor_getFont.html#GInteractor_getFont--\">GInteractor_getFont</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor_getFont.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GInteractor_getFont--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GInteractor_getFont</h4>\n<pre>public&nbsp;GInteractor_getFont()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GInteractor_getAccelerator.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GInteractor_getMnemonic.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GInteractor_getFont.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GInteractor_getFont.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GInteractor_getMnemonic.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GInteractor_getMnemonic</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GInteractor_getMnemonic\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GInteractor_getFont.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GInteractor_isEnabled.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GInteractor_getMnemonic.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GInteractor_getMnemonic.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GInteractor_getMnemonic\" class=\"title\">Class GInteractor_getMnemonic</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GInteractor_getMnemonic</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GInteractor_getMnemonic</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor_getMnemonic.html#GInteractor_getMnemonic--\">GInteractor_getMnemonic</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor_getMnemonic.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GInteractor_getMnemonic--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GInteractor_getMnemonic</h4>\n<pre>public&nbsp;GInteractor_getMnemonic()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GInteractor_getFont.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GInteractor_isEnabled.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GInteractor_getMnemonic.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GInteractor_getMnemonic.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GInteractor_isEnabled.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GInteractor_isEnabled</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GInteractor_isEnabled\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GInteractor_getMnemonic.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GInteractor_removeActionListener.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GInteractor_isEnabled.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GInteractor_isEnabled.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GInteractor_isEnabled\" class=\"title\">Class GInteractor_isEnabled</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GInteractor_isEnabled</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GInteractor_isEnabled</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor_isEnabled.html#GInteractor_isEnabled--\">GInteractor_isEnabled</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor_isEnabled.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GInteractor_isEnabled--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GInteractor_isEnabled</h4>\n<pre>public&nbsp;GInteractor_isEnabled()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GInteractor_getMnemonic.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GInteractor_removeActionListener.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GInteractor_isEnabled.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GInteractor_isEnabled.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GInteractor_removeActionListener.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GInteractor_removeActionListener</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GInteractor_removeActionListener\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GInteractor_isEnabled.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GInteractor_requestFocus.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GInteractor_removeActionListener.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GInteractor_removeActionListener.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GInteractor_removeActionListener\" class=\"title\">Class GInteractor_removeActionListener</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GInteractor_removeActionListener</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GInteractor_removeActionListener</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor_removeActionListener.html#GInteractor_removeActionListener--\">GInteractor_removeActionListener</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor_removeActionListener.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GInteractor_removeActionListener--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GInteractor_removeActionListener</h4>\n<pre>public&nbsp;GInteractor_removeActionListener()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GInteractor_isEnabled.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GInteractor_requestFocus.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GInteractor_removeActionListener.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GInteractor_removeActionListener.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GInteractor_requestFocus.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GInteractor_requestFocus</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GInteractor_requestFocus\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GInteractor_removeActionListener.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GInteractor_setAccelerator.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GInteractor_requestFocus.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GInteractor_requestFocus.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GInteractor_requestFocus\" class=\"title\">Class GInteractor_requestFocus</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GInteractor_requestFocus</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GInteractor_requestFocus</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor_requestFocus.html#GInteractor_requestFocus--\">GInteractor_requestFocus</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor_requestFocus.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GInteractor_requestFocus--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GInteractor_requestFocus</h4>\n<pre>public&nbsp;GInteractor_requestFocus()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GInteractor_removeActionListener.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GInteractor_setAccelerator.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GInteractor_requestFocus.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GInteractor_requestFocus.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GInteractor_setAccelerator.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GInteractor_setAccelerator</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GInteractor_setAccelerator\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GInteractor_requestFocus.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GInteractor_setBackground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GInteractor_setAccelerator.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GInteractor_setAccelerator.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GInteractor_setAccelerator\" class=\"title\">Class GInteractor_setAccelerator</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GInteractor_setAccelerator</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GInteractor_setAccelerator</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor_setAccelerator.html#GInteractor_setAccelerator--\">GInteractor_setAccelerator</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor_setAccelerator.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GInteractor_setAccelerator--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GInteractor_setAccelerator</h4>\n<pre>public&nbsp;GInteractor_setAccelerator()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GInteractor_requestFocus.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GInteractor_setBackground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GInteractor_setAccelerator.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GInteractor_setAccelerator.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GInteractor_setBackground.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GInteractor_setBackground</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GInteractor_setBackground\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GInteractor_setAccelerator.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GInteractor_setEnabled.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GInteractor_setBackground.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GInteractor_setBackground.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GInteractor_setBackground\" class=\"title\">Class GInteractor_setBackground</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GInteractor_setBackground</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GInteractor_setBackground</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor_setBackground.html#GInteractor_setBackground--\">GInteractor_setBackground</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor_setBackground.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GInteractor_setBackground--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GInteractor_setBackground</h4>\n<pre>public&nbsp;GInteractor_setBackground()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GInteractor_setAccelerator.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GInteractor_setEnabled.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GInteractor_setBackground.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GInteractor_setBackground.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GInteractor_setEnabled.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GInteractor_setEnabled</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GInteractor_setEnabled\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GInteractor_setBackground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GInteractor_setFont.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GInteractor_setEnabled.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GInteractor_setEnabled.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GInteractor_setEnabled\" class=\"title\">Class GInteractor_setEnabled</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GInteractor_setEnabled</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GInteractor_setEnabled</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor_setEnabled.html#GInteractor_setEnabled--\">GInteractor_setEnabled</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor_setEnabled.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GInteractor_setEnabled--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GInteractor_setEnabled</h4>\n<pre>public&nbsp;GInteractor_setEnabled()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GInteractor_setBackground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GInteractor_setFont.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GInteractor_setEnabled.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GInteractor_setEnabled.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GInteractor_setFont.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GInteractor_setFont</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GInteractor_setFont\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GInteractor_setEnabled.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GInteractor_setIcon.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GInteractor_setFont.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GInteractor_setFont.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GInteractor_setFont\" class=\"title\">Class GInteractor_setFont</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GInteractor_setFont</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GInteractor_setFont</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor_setFont.html#GInteractor_setFont--\">GInteractor_setFont</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor_setFont.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GInteractor_setFont--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GInteractor_setFont</h4>\n<pre>public&nbsp;GInteractor_setFont()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GInteractor_setEnabled.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GInteractor_setIcon.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GInteractor_setFont.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GInteractor_setFont.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GInteractor_setIcon.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GInteractor_setIcon</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GInteractor_setIcon\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GInteractor_setFont.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GInteractor_setMnemonic.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GInteractor_setIcon.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GInteractor_setIcon.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GInteractor_setIcon\" class=\"title\">Class GInteractor_setIcon</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GInteractor_setIcon</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GInteractor_setIcon</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor_setIcon.html#GInteractor_setIcon--\">GInteractor_setIcon</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor_setIcon.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GInteractor_setIcon--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GInteractor_setIcon</h4>\n<pre>public&nbsp;GInteractor_setIcon()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GInteractor_setFont.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GInteractor_setMnemonic.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GInteractor_setIcon.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GInteractor_setIcon.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GInteractor_setMnemonic.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GInteractor_setMnemonic</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GInteractor_setMnemonic\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GInteractor_setIcon.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GInteractor_setText.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GInteractor_setMnemonic.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GInteractor_setMnemonic.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GInteractor_setMnemonic\" class=\"title\">Class GInteractor_setMnemonic</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GInteractor_setMnemonic</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GInteractor_setMnemonic</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor_setMnemonic.html#GInteractor_setMnemonic--\">GInteractor_setMnemonic</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor_setMnemonic.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GInteractor_setMnemonic--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GInteractor_setMnemonic</h4>\n<pre>public&nbsp;GInteractor_setMnemonic()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GInteractor_setIcon.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GInteractor_setText.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GInteractor_setMnemonic.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GInteractor_setMnemonic.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GInteractor_setText.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GInteractor_setText</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GInteractor_setText\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GInteractor_setMnemonic.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GInteractor_setTextPosition.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GInteractor_setText.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GInteractor_setText.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GInteractor_setText\" class=\"title\">Class GInteractor_setText</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GInteractor_setText</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GInteractor_setText</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor_setText.html#GInteractor_setText--\">GInteractor_setText</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor_setText.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GInteractor_setText--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GInteractor_setText</h4>\n<pre>public&nbsp;GInteractor_setText()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GInteractor_setMnemonic.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GInteractor_setTextPosition.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GInteractor_setText.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GInteractor_setText.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GInteractor_setTextPosition.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GInteractor_setTextPosition</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GInteractor_setTextPosition\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GInteractor_setText.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GInteractor_setTooltip.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GInteractor_setTextPosition.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GInteractor_setTextPosition.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GInteractor_setTextPosition\" class=\"title\">Class GInteractor_setTextPosition</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GInteractor_setTextPosition</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GInteractor_setTextPosition</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor_setTextPosition.html#GInteractor_setTextPosition--\">GInteractor_setTextPosition</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor_setTextPosition.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GInteractor_setTextPosition--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GInteractor_setTextPosition</h4>\n<pre>public&nbsp;GInteractor_setTextPosition()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GInteractor_setText.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GInteractor_setTooltip.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GInteractor_setTextPosition.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GInteractor_setTextPosition.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GInteractor_setTooltip.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GInteractor_setTooltip</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GInteractor_setTooltip\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GInteractor_setTextPosition.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GObject_remove.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GInteractor_setTooltip.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GInteractor_setTooltip.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GInteractor_setTooltip\" class=\"title\">Class GInteractor_setTooltip</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GInteractor_setTooltip</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GInteractor_setTooltip</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor_setTooltip.html#GInteractor_setTooltip--\">GInteractor_setTooltip</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GInteractor_setTooltip.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GInteractor_setTooltip--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GInteractor_setTooltip</h4>\n<pre>public&nbsp;GInteractor_setTooltip()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GInteractor_setTextPosition.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GObject_remove.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GInteractor_setTooltip.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GInteractor_setTooltip.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GObject_remove.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GObject_remove</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GObject_remove\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GInteractor_setTooltip.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GObject_setAntialiasing.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GObject_remove.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GObject_remove.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GObject_remove\" class=\"title\">Class GObject_remove</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GObject_remove</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GObject_remove</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GObject_remove.html#GObject_remove--\">GObject_remove</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GObject_remove.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GObject_remove--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GObject_remove</h4>\n<pre>public&nbsp;GObject_remove()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GInteractor_setTooltip.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GObject_setAntialiasing.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GObject_remove.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GObject_remove.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GObject_setAntialiasing.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GObject_setAntialiasing</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GObject_setAntialiasing\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GObject_remove.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GOptionPane_showConfirmDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GObject_setAntialiasing.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GObject_setAntialiasing.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GObject_setAntialiasing\" class=\"title\">Class GObject_setAntialiasing</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GObject_setAntialiasing</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GObject_setAntialiasing</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GObject_setAntialiasing.html#GObject_setAntialiasing--\">GObject_setAntialiasing</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GObject_setAntialiasing.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GObject_setAntialiasing--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GObject_setAntialiasing</h4>\n<pre>public&nbsp;GObject_setAntialiasing()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GObject_remove.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GOptionPane_showConfirmDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GObject_setAntialiasing.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GObject_setAntialiasing.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GOptionPane_showConfirmDialog.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GOptionPane_showConfirmDialog</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GOptionPane_showConfirmDialog\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GObject_setAntialiasing.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GOptionPane_showInputDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GOptionPane_showConfirmDialog.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GOptionPane_showConfirmDialog.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GOptionPane_showConfirmDialog\" class=\"title\">Class GOptionPane_showConfirmDialog</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GOptionPane_showConfirmDialog</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GOptionPane_showConfirmDialog</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GOptionPane_showConfirmDialog.html#GOptionPane_showConfirmDialog--\">GOptionPane_showConfirmDialog</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GOptionPane_showConfirmDialog.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GOptionPane_showConfirmDialog--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GOptionPane_showConfirmDialog</h4>\n<pre>public&nbsp;GOptionPane_showConfirmDialog()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GObject_setAntialiasing.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GOptionPane_showInputDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GOptionPane_showConfirmDialog.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GOptionPane_showConfirmDialog.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GOptionPane_showInputDialog.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GOptionPane_showInputDialog</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GOptionPane_showInputDialog\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GOptionPane_showConfirmDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GOptionPane_showMessageDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GOptionPane_showInputDialog.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GOptionPane_showInputDialog.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GOptionPane_showInputDialog\" class=\"title\">Class GOptionPane_showInputDialog</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GOptionPane_showInputDialog</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GOptionPane_showInputDialog</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GOptionPane_showInputDialog.html#GOptionPane_showInputDialog--\">GOptionPane_showInputDialog</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GOptionPane_showInputDialog.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GOptionPane_showInputDialog--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GOptionPane_showInputDialog</h4>\n<pre>public&nbsp;GOptionPane_showInputDialog()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GOptionPane_showConfirmDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GOptionPane_showMessageDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GOptionPane_showInputDialog.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GOptionPane_showInputDialog.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GOptionPane_showMessageDialog.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GOptionPane_showMessageDialog</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GOptionPane_showMessageDialog\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GOptionPane_showInputDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GOptionPane_showOptionDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GOptionPane_showMessageDialog.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GOptionPane_showMessageDialog.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GOptionPane_showMessageDialog\" class=\"title\">Class GOptionPane_showMessageDialog</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GOptionPane_showMessageDialog</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GOptionPane_showMessageDialog</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GOptionPane_showMessageDialog.html#GOptionPane_showMessageDialog--\">GOptionPane_showMessageDialog</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GOptionPane_showMessageDialog.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GOptionPane_showMessageDialog--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GOptionPane_showMessageDialog</h4>\n<pre>public&nbsp;GOptionPane_showMessageDialog()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GOptionPane_showInputDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GOptionPane_showOptionDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GOptionPane_showMessageDialog.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GOptionPane_showMessageDialog.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GOptionPane_showOptionDialog.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GOptionPane_showOptionDialog</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GOptionPane_showOptionDialog\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GOptionPane_showMessageDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GOptionPane_showTextFileDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GOptionPane_showOptionDialog.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GOptionPane_showOptionDialog.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GOptionPane_showOptionDialog\" class=\"title\">Class GOptionPane_showOptionDialog</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GOptionPane_showOptionDialog</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GOptionPane_showOptionDialog</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GOptionPane_showOptionDialog.html#GOptionPane_showOptionDialog--\">GOptionPane_showOptionDialog</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GOptionPane_showOptionDialog.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GOptionPane_showOptionDialog--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GOptionPane_showOptionDialog</h4>\n<pre>public&nbsp;GOptionPane_showOptionDialog()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GOptionPane_showMessageDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GOptionPane_showTextFileDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GOptionPane_showOptionDialog.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GOptionPane_showOptionDialog.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GOptionPane_showTextFileDialog.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GOptionPane_showTextFileDialog</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GOptionPane_showTextFileDialog\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GOptionPane_showOptionDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GRadioButton.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GOptionPane_showTextFileDialog.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GOptionPane_showTextFileDialog.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GOptionPane_showTextFileDialog\" class=\"title\">Class GOptionPane_showTextFileDialog</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GOptionPane_showTextFileDialog</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GOptionPane_showTextFileDialog</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GOptionPane_showTextFileDialog.html#GOptionPane_showTextFileDialog--\">GOptionPane_showTextFileDialog</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GOptionPane_showTextFileDialog.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GOptionPane_showTextFileDialog--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GOptionPane_showTextFileDialog</h4>\n<pre>public&nbsp;GOptionPane_showTextFileDialog()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GOptionPane_showOptionDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GRadioButton.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GOptionPane_showTextFileDialog.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GOptionPane_showTextFileDialog.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GRadioButton.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GRadioButton</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GRadioButton\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GOptionPane_showTextFileDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GRadioButton_create.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GRadioButton.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GRadioButton.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GRadioButton\" class=\"title\">Class GRadioButton</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">acm.graphics.GObject</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/GInteractor.html\" title=\"class in stanford.spl\">stanford.spl.GInteractor</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GRadioButton</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"../../acm/graphics/GResizable.html\" title=\"interface in acm.graphics\">GResizable</a>, <a href=\"../../acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true\" title=\"class or interface in java.lang\">Cloneable</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GRadioButton</span>\nextends <a href=\"../../stanford/spl/GInteractor.html\" title=\"class in stanford.spl\">GInteractor</a></pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#stanford.spl.GRadioButton\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GRadioButton.html#GRadioButton-java.lang.String-java.lang.String-\">GRadioButton</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;label,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;group)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GRadioButton.html#isSelected--\">isSelected</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GRadioButton.html#setSelected-boolean-\">setSelected</a></span>(boolean&nbsp;selected)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.GInteractor\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/GInteractor.html\" title=\"class in stanford.spl\">GInteractor</a></h3>\n<code><a href=\"../../stanford/spl/GInteractor.html#getAccelerator--\">getAccelerator</a>, <a href=\"../../stanford/spl/GInteractor.html#getActionCommand--\">getActionCommand</a>, <a href=\"../../stanford/spl/GInteractor.html#getBounds--\">getBounds</a>, <a href=\"../../stanford/spl/GInteractor.html#getFont--\">getFont</a>, <a href=\"../../stanford/spl/GInteractor.html#getFontString--\">getFontString</a>, <a href=\"../../stanford/spl/GInteractor.html#getIcon--\">getIcon</a>, <a href=\"../../stanford/spl/GInteractor.html#getInteractor--\">getInteractor</a>, <a href=\"../../stanford/spl/GInteractor.html#getMnemonic--\">getMnemonic</a>, <a href=\"../../stanford/spl/GInteractor.html#isEnabled--\">isEnabled</a>, <a href=\"../../stanford/spl/GInteractor.html#paint2d-java.awt.Graphics2D-\">paint2d</a>, <a href=\"../../stanford/spl/GInteractor.html#paintObject-java.awt.Graphics-\">paintObject</a>, <a href=\"../../stanford/spl/GInteractor.html#repaint--\">repaint</a>, <a href=\"../../stanford/spl/GInteractor.html#requestFocus--\">requestFocus</a>, <a href=\"../../stanford/spl/GInteractor.html#setAccelerator-java.lang.String-\">setAccelerator</a>, <a href=\"../../stanford/spl/GInteractor.html#setActionCommand-java.lang.String-\">setActionCommand</a>, <a href=\"../../stanford/spl/GInteractor.html#setBackground-java.awt.Color-\">setBackground</a>, <a href=\"../../stanford/spl/GInteractor.html#setBounds-double-double-double-double-\">setBounds</a>, <a href=\"../../stanford/spl/GInteractor.html#setBounds-acm.graphics.GRectangle-\">setBounds</a>, <a href=\"../../stanford/spl/GInteractor.html#setColor-java.awt.Color-\">setColor</a>, <a href=\"../../stanford/spl/GInteractor.html#setEnabled-boolean-\">setEnabled</a>, <a href=\"../../stanford/spl/GInteractor.html#setFont-java.awt.Font-\">setFont</a>, <a href=\"../../stanford/spl/GInteractor.html#setFont-java.lang.String-\">setFont</a>, <a href=\"../../stanford/spl/GInteractor.html#setForeground-java.awt.Color-\">setForeground</a>, <a href=\"../../stanford/spl/GInteractor.html#setIcon-javax.swing.Icon-\">setIcon</a>, <a href=\"../../stanford/spl/GInteractor.html#setIcon-java.lang.String-\">setIcon</a>, <a href=\"../../stanford/spl/GInteractor.html#setLocation-double-double-\">setLocation</a>, <a href=\"../../stanford/spl/GInteractor.html#setMnemonic-char-\">setMnemonic</a>, <a href=\"../../stanford/spl/GInteractor.html#setMnemonic-int-\">setMnemonic</a>, <a href=\"../../stanford/spl/GInteractor.html#setParent-acm.graphics.GContainer-\">setParent</a>, <a href=\"../../stanford/spl/GInteractor.html#setSize-double-double-\">setSize</a>, <a href=\"../../stanford/spl/GInteractor.html#setSize-acm.graphics.GDimension-\">setSize</a>, <a href=\"../../stanford/spl/GInteractor.html#setTooltip-java.lang.String-\">setTooltip</a>, <a href=\"../../stanford/spl/GInteractor.html#setVisible-boolean-\">setVisible</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.graphics.GObject\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.graphics.<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></h3>\n<code><a href=\"../../acm/graphics/GObject.html#addActionListener-java.awt.event.ActionListener-\">addActionListener</a>, <a href=\"../../acm/graphics/GObject.html#addMouseListener-java.awt.event.MouseListener-\">addMouseListener</a>, <a href=\"../../acm/graphics/GObject.html#addMouseMotionListener-java.awt.event.MouseMotionListener-\">addMouseMotionListener</a>, <a href=\"../../acm/graphics/GObject.html#areMouseListenersEnabled--\">areMouseListenersEnabled</a>, <a href=\"../../acm/graphics/GObject.html#clone--\">clone</a>, <a href=\"../../acm/graphics/GObject.html#colorName-java.awt.Color-\">colorName</a>, <a href=\"../../acm/graphics/GObject.html#colorName-int-\">colorName</a>, <a href=\"../../acm/graphics/GObject.html#colorNameFriendly-int-\">colorNameFriendly</a>, <a href=\"../../acm/graphics/GObject.html#contains-double-double-\">contains</a>, <a href=\"../../acm/graphics/GObject.html#contains-acm.graphics.GPoint-\">contains</a>, <a href=\"../../acm/graphics/GObject.html#createTransformedGraphics-java.awt.Graphics-\">createTransformedGraphics</a>, <a href=\"../../acm/graphics/GObject.html#fireActionEvent-java.awt.event.ActionEvent-\">fireActionEvent</a>, <a href=\"../../acm/graphics/GObject.html#fireActionEvent-java.lang.String-\">fireActionEvent</a>, <a href=\"../../acm/graphics/GObject.html#fireMouseListeners-java.awt.event.MouseEvent-\">fireMouseListeners</a>, <a href=\"../../acm/graphics/GObject.html#getBottomY--\">getBottomY</a>, <a href=\"../../acm/graphics/GObject.html#getCenterLocation--\">getCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#getCenterX--\">getCenterX</a>, <a href=\"../../acm/graphics/GObject.html#getCenterY--\">getCenterY</a>, <a href=\"../../acm/graphics/GObject.html#getColor--\">getColor</a>, <a href=\"../../acm/graphics/GObject.html#getComponent--\">getComponent</a>, <a href=\"../../acm/graphics/GObject.html#getHeight--\">getHeight</a>, <a href=\"../../acm/graphics/GObject.html#getLineWidth--\">getLineWidth</a>, <a href=\"../../acm/graphics/GObject.html#getLocation--\">getLocation</a>, <a href=\"../../acm/graphics/GObject.html#getMatrix--\">getMatrix</a>, <a href=\"../../acm/graphics/GObject.html#getObjectColor--\">getObjectColor</a>, <a href=\"../../acm/graphics/GObject.html#getParent--\">getParent</a>, <a href=\"../../acm/graphics/GObject.html#getRightX--\">getRightX</a>, <a href=\"../../acm/graphics/GObject.html#getSize--\">getSize</a>, <a href=\"../../acm/graphics/GObject.html#getWidth--\">getWidth</a>, <a href=\"../../acm/graphics/GObject.html#getX--\">getX</a>, <a href=\"../../acm/graphics/GObject.html#getY--\">getY</a>, <a href=\"../../acm/graphics/GObject.html#intersects-acm.graphics.GObject-\">intersects</a>, <a href=\"../../acm/graphics/GObject.html#isAntiAliasing--\">isAntiAliasing</a>, <a href=\"../../acm/graphics/GObject.html#isVisible--\">isVisible</a>, <a href=\"../../acm/graphics/GObject.html#move-double-double-\">move</a>, <a href=\"../../acm/graphics/GObject.html#movePolar-double-double-\">movePolar</a>, <a href=\"../../acm/graphics/GObject.html#paint-java.awt.Graphics-\">paint</a>, <a href=\"../../acm/graphics/GObject.html#paramString--\">paramString</a>, <a href=\"../../acm/graphics/GObject.html#pause-double-\">pause</a>, <a href=\"../../acm/graphics/GObject.html#removeActionListener-java.awt.event.ActionListener-\">removeActionListener</a>, <a href=\"../../acm/graphics/GObject.html#removeMouseListener-java.awt.event.MouseListener-\">removeMouseListener</a>, <a href=\"../../acm/graphics/GObject.html#removeMouseMotionListener-java.awt.event.MouseMotionListener-\">removeMouseMotionListener</a>, <a href=\"../../acm/graphics/GObject.html#rotate-double-\">rotate</a>, <a href=\"../../acm/graphics/GObject.html#scale-double-\">scale</a>, <a href=\"../../acm/graphics/GObject.html#scale-double-double-\">scale</a>, <a href=\"../../acm/graphics/GObject.html#sendBackward--\">sendBackward</a>, <a href=\"../../acm/graphics/GObject.html#sendForward--\">sendForward</a>, <a href=\"../../acm/graphics/GObject.html#sendToBack--\">sendToBack</a>, <a href=\"../../acm/graphics/GObject.html#sendToFront--\">sendToFront</a>, <a href=\"../../acm/graphics/GObject.html#setAntiAliasing-boolean-\">setAntiAliasing</a>, <a href=\"../../acm/graphics/GObject.html#setBottomY-double-\">setBottomY</a>, <a href=\"../../acm/graphics/GObject.html#setCenterLocation-double-double-\">setCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#setCenterLocation-acm.graphics.GPoint-\">setCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#setCenterX-double-\">setCenterX</a>, <a href=\"../../acm/graphics/GObject.html#setCenterY-double-\">setCenterY</a>, <a href=\"../../acm/graphics/GObject.html#setLineWidth-double-\">setLineWidth</a>, <a href=\"../../acm/graphics/GObject.html#setLocation-acm.graphics.GPoint-\">setLocation</a>, <a href=\"../../acm/graphics/GObject.html#setRightX-double-\">setRightX</a>, <a href=\"../../acm/graphics/GObject.html#setX-double-\">setX</a>, <a href=\"../../acm/graphics/GObject.html#setY-double-\">setY</a>, <a href=\"../../acm/graphics/GObject.html#start--\">start</a>, <a href=\"../../acm/graphics/GObject.html#start-java.lang.String:A-\">start</a>, <a href=\"../../acm/graphics/GObject.html#toString--\">toString</a>, <a href=\"../../acm/graphics/GObject.html#updateEnabledList--\">updateEnabledList</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GRadioButton-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GRadioButton</h4>\n<pre>public&nbsp;GRadioButton(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;label,\n                    <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;group)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"isSelected--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isSelected</h4>\n<pre>public&nbsp;boolean&nbsp;isSelected()</pre>\n</li>\n</ul>\n<a name=\"setSelected-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>setSelected</h4>\n<pre>public&nbsp;void&nbsp;setSelected(boolean&nbsp;selected)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GOptionPane_showTextFileDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GRadioButton_create.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GRadioButton.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GRadioButton.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GRadioButton_create.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GRadioButton_create</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GRadioButton_create\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GRadioButton.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GRadioButton_isSelected.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GRadioButton_create.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GRadioButton_create.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GRadioButton_create\" class=\"title\">Class GRadioButton_create</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GRadioButton_create</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GRadioButton_create</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GRadioButton_create.html#GRadioButton_create--\">GRadioButton_create</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GRadioButton_create.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GRadioButton_create--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GRadioButton_create</h4>\n<pre>public&nbsp;GRadioButton_create()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GRadioButton.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GRadioButton_isSelected.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GRadioButton_create.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GRadioButton_create.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GRadioButton_isSelected.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GRadioButton_isSelected</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GRadioButton_isSelected\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GRadioButton_create.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GRadioButton_setSelected.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GRadioButton_isSelected.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GRadioButton_isSelected.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GRadioButton_isSelected\" class=\"title\">Class GRadioButton_isSelected</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GRadioButton_isSelected</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GRadioButton_isSelected</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GRadioButton_isSelected.html#GRadioButton_isSelected--\">GRadioButton_isSelected</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GRadioButton_isSelected.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GRadioButton_isSelected--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GRadioButton_isSelected</h4>\n<pre>public&nbsp;GRadioButton_isSelected()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GRadioButton_create.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GRadioButton_setSelected.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GRadioButton_isSelected.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GRadioButton_isSelected.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GRadioButton_setSelected.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GRadioButton_setSelected</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GRadioButton_setSelected\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GRadioButton_isSelected.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GSlider.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GRadioButton_setSelected.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GRadioButton_setSelected.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GRadioButton_setSelected\" class=\"title\">Class GRadioButton_setSelected</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GRadioButton_setSelected</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GRadioButton_setSelected</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GRadioButton_setSelected.html#GRadioButton_setSelected--\">GRadioButton_setSelected</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GRadioButton_setSelected.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GRadioButton_setSelected--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GRadioButton_setSelected</h4>\n<pre>public&nbsp;GRadioButton_setSelected()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GRadioButton_isSelected.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GSlider.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GRadioButton_setSelected.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GRadioButton_setSelected.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GSlider.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GSlider</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GSlider\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GRadioButton_setSelected.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GSlider_getMajorTickSpacing.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GSlider.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GSlider.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GSlider\" class=\"title\">Class GSlider</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">acm.graphics.GObject</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/GInteractor.html\" title=\"class in stanford.spl\">stanford.spl.GInteractor</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GSlider</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"../../acm/graphics/GResizable.html\" title=\"interface in acm.graphics\">GResizable</a>, <a href=\"../../acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true\" title=\"class or interface in java.lang\">Cloneable</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GSlider</span>\nextends <a href=\"../../stanford/spl/GInteractor.html\" title=\"class in stanford.spl\">GInteractor</a></pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#stanford.spl.GSlider\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GSlider.html#GSlider-int-int-int-javax.swing.event.ChangeListener-\">GSlider</a></span>(int&nbsp;paramInt1,\n       int&nbsp;paramInt2,\n       int&nbsp;paramInt3,\n       <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeListener</a>&nbsp;paramChangeListener)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GSlider.html#getMajorTickSpacing--\">getMajorTickSpacing</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GSlider.html#getMinorTickSpacing--\">getMinorTickSpacing</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GSlider.html#getPaintLabels--\">getPaintLabels</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GSlider.html#getPaintTicks--\">getPaintTicks</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GSlider.html#getSnapToTicks--\">getSnapToTicks</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GSlider.html#setMajorTickSpacing-int-\">setMajorTickSpacing</a></span>(int&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GSlider.html#setMinorTickSpacing-int-\">setMinorTickSpacing</a></span>(int&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GSlider.html#setPaintLabels-boolean-\">setPaintLabels</a></span>(boolean&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GSlider.html#setPaintTicks-boolean-\">setPaintTicks</a></span>(boolean&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GSlider.html#setSnapToTicks-boolean-\">setSnapToTicks</a></span>(boolean&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GSlider.html#setSystemLookAndFeelProperties--\">setSystemLookAndFeelProperties</a></span>()</code>\n<div class=\"block\">Settings for Java look-and-feel related to tables.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.GInteractor\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/GInteractor.html\" title=\"class in stanford.spl\">GInteractor</a></h3>\n<code><a href=\"../../stanford/spl/GInteractor.html#getAccelerator--\">getAccelerator</a>, <a href=\"../../stanford/spl/GInteractor.html#getActionCommand--\">getActionCommand</a>, <a href=\"../../stanford/spl/GInteractor.html#getBounds--\">getBounds</a>, <a href=\"../../stanford/spl/GInteractor.html#getFont--\">getFont</a>, <a href=\"../../stanford/spl/GInteractor.html#getFontString--\">getFontString</a>, <a href=\"../../stanford/spl/GInteractor.html#getIcon--\">getIcon</a>, <a href=\"../../stanford/spl/GInteractor.html#getInteractor--\">getInteractor</a>, <a href=\"../../stanford/spl/GInteractor.html#getMnemonic--\">getMnemonic</a>, <a href=\"../../stanford/spl/GInteractor.html#isEnabled--\">isEnabled</a>, <a href=\"../../stanford/spl/GInteractor.html#paint2d-java.awt.Graphics2D-\">paint2d</a>, <a href=\"../../stanford/spl/GInteractor.html#paintObject-java.awt.Graphics-\">paintObject</a>, <a href=\"../../stanford/spl/GInteractor.html#repaint--\">repaint</a>, <a href=\"../../stanford/spl/GInteractor.html#requestFocus--\">requestFocus</a>, <a href=\"../../stanford/spl/GInteractor.html#setAccelerator-java.lang.String-\">setAccelerator</a>, <a href=\"../../stanford/spl/GInteractor.html#setActionCommand-java.lang.String-\">setActionCommand</a>, <a href=\"../../stanford/spl/GInteractor.html#setBackground-java.awt.Color-\">setBackground</a>, <a href=\"../../stanford/spl/GInteractor.html#setBounds-double-double-double-double-\">setBounds</a>, <a href=\"../../stanford/spl/GInteractor.html#setBounds-acm.graphics.GRectangle-\">setBounds</a>, <a href=\"../../stanford/spl/GInteractor.html#setColor-java.awt.Color-\">setColor</a>, <a href=\"../../stanford/spl/GInteractor.html#setEnabled-boolean-\">setEnabled</a>, <a href=\"../../stanford/spl/GInteractor.html#setFont-java.awt.Font-\">setFont</a>, <a href=\"../../stanford/spl/GInteractor.html#setFont-java.lang.String-\">setFont</a>, <a href=\"../../stanford/spl/GInteractor.html#setForeground-java.awt.Color-\">setForeground</a>, <a href=\"../../stanford/spl/GInteractor.html#setIcon-javax.swing.Icon-\">setIcon</a>, <a href=\"../../stanford/spl/GInteractor.html#setIcon-java.lang.String-\">setIcon</a>, <a href=\"../../stanford/spl/GInteractor.html#setLocation-double-double-\">setLocation</a>, <a href=\"../../stanford/spl/GInteractor.html#setMnemonic-char-\">setMnemonic</a>, <a href=\"../../stanford/spl/GInteractor.html#setMnemonic-int-\">setMnemonic</a>, <a href=\"../../stanford/spl/GInteractor.html#setParent-acm.graphics.GContainer-\">setParent</a>, <a href=\"../../stanford/spl/GInteractor.html#setSize-double-double-\">setSize</a>, <a href=\"../../stanford/spl/GInteractor.html#setSize-acm.graphics.GDimension-\">setSize</a>, <a href=\"../../stanford/spl/GInteractor.html#setTooltip-java.lang.String-\">setTooltip</a>, <a href=\"../../stanford/spl/GInteractor.html#setVisible-boolean-\">setVisible</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.graphics.GObject\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.graphics.<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></h3>\n<code><a href=\"../../acm/graphics/GObject.html#addActionListener-java.awt.event.ActionListener-\">addActionListener</a>, <a href=\"../../acm/graphics/GObject.html#addMouseListener-java.awt.event.MouseListener-\">addMouseListener</a>, <a href=\"../../acm/graphics/GObject.html#addMouseMotionListener-java.awt.event.MouseMotionListener-\">addMouseMotionListener</a>, <a href=\"../../acm/graphics/GObject.html#areMouseListenersEnabled--\">areMouseListenersEnabled</a>, <a href=\"../../acm/graphics/GObject.html#clone--\">clone</a>, <a href=\"../../acm/graphics/GObject.html#colorName-java.awt.Color-\">colorName</a>, <a href=\"../../acm/graphics/GObject.html#colorName-int-\">colorName</a>, <a href=\"../../acm/graphics/GObject.html#colorNameFriendly-int-\">colorNameFriendly</a>, <a href=\"../../acm/graphics/GObject.html#contains-double-double-\">contains</a>, <a href=\"../../acm/graphics/GObject.html#contains-acm.graphics.GPoint-\">contains</a>, <a href=\"../../acm/graphics/GObject.html#createTransformedGraphics-java.awt.Graphics-\">createTransformedGraphics</a>, <a href=\"../../acm/graphics/GObject.html#fireActionEvent-java.awt.event.ActionEvent-\">fireActionEvent</a>, <a href=\"../../acm/graphics/GObject.html#fireActionEvent-java.lang.String-\">fireActionEvent</a>, <a href=\"../../acm/graphics/GObject.html#fireMouseListeners-java.awt.event.MouseEvent-\">fireMouseListeners</a>, <a href=\"../../acm/graphics/GObject.html#getBottomY--\">getBottomY</a>, <a href=\"../../acm/graphics/GObject.html#getCenterLocation--\">getCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#getCenterX--\">getCenterX</a>, <a href=\"../../acm/graphics/GObject.html#getCenterY--\">getCenterY</a>, <a href=\"../../acm/graphics/GObject.html#getColor--\">getColor</a>, <a href=\"../../acm/graphics/GObject.html#getComponent--\">getComponent</a>, <a href=\"../../acm/graphics/GObject.html#getHeight--\">getHeight</a>, <a href=\"../../acm/graphics/GObject.html#getLineWidth--\">getLineWidth</a>, <a href=\"../../acm/graphics/GObject.html#getLocation--\">getLocation</a>, <a href=\"../../acm/graphics/GObject.html#getMatrix--\">getMatrix</a>, <a href=\"../../acm/graphics/GObject.html#getObjectColor--\">getObjectColor</a>, <a href=\"../../acm/graphics/GObject.html#getParent--\">getParent</a>, <a href=\"../../acm/graphics/GObject.html#getRightX--\">getRightX</a>, <a href=\"../../acm/graphics/GObject.html#getSize--\">getSize</a>, <a href=\"../../acm/graphics/GObject.html#getWidth--\">getWidth</a>, <a href=\"../../acm/graphics/GObject.html#getX--\">getX</a>, <a href=\"../../acm/graphics/GObject.html#getY--\">getY</a>, <a href=\"../../acm/graphics/GObject.html#intersects-acm.graphics.GObject-\">intersects</a>, <a href=\"../../acm/graphics/GObject.html#isAntiAliasing--\">isAntiAliasing</a>, <a href=\"../../acm/graphics/GObject.html#isVisible--\">isVisible</a>, <a href=\"../../acm/graphics/GObject.html#move-double-double-\">move</a>, <a href=\"../../acm/graphics/GObject.html#movePolar-double-double-\">movePolar</a>, <a href=\"../../acm/graphics/GObject.html#paint-java.awt.Graphics-\">paint</a>, <a href=\"../../acm/graphics/GObject.html#paramString--\">paramString</a>, <a href=\"../../acm/graphics/GObject.html#pause-double-\">pause</a>, <a href=\"../../acm/graphics/GObject.html#removeActionListener-java.awt.event.ActionListener-\">removeActionListener</a>, <a href=\"../../acm/graphics/GObject.html#removeMouseListener-java.awt.event.MouseListener-\">removeMouseListener</a>, <a href=\"../../acm/graphics/GObject.html#removeMouseMotionListener-java.awt.event.MouseMotionListener-\">removeMouseMotionListener</a>, <a href=\"../../acm/graphics/GObject.html#rotate-double-\">rotate</a>, <a href=\"../../acm/graphics/GObject.html#scale-double-\">scale</a>, <a href=\"../../acm/graphics/GObject.html#scale-double-double-\">scale</a>, <a href=\"../../acm/graphics/GObject.html#sendBackward--\">sendBackward</a>, <a href=\"../../acm/graphics/GObject.html#sendForward--\">sendForward</a>, <a href=\"../../acm/graphics/GObject.html#sendToBack--\">sendToBack</a>, <a href=\"../../acm/graphics/GObject.html#sendToFront--\">sendToFront</a>, <a href=\"../../acm/graphics/GObject.html#setAntiAliasing-boolean-\">setAntiAliasing</a>, <a href=\"../../acm/graphics/GObject.html#setBottomY-double-\">setBottomY</a>, <a href=\"../../acm/graphics/GObject.html#setCenterLocation-double-double-\">setCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#setCenterLocation-acm.graphics.GPoint-\">setCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#setCenterX-double-\">setCenterX</a>, <a href=\"../../acm/graphics/GObject.html#setCenterY-double-\">setCenterY</a>, <a href=\"../../acm/graphics/GObject.html#setLineWidth-double-\">setLineWidth</a>, <a href=\"../../acm/graphics/GObject.html#setLocation-acm.graphics.GPoint-\">setLocation</a>, <a href=\"../../acm/graphics/GObject.html#setRightX-double-\">setRightX</a>, <a href=\"../../acm/graphics/GObject.html#setX-double-\">setX</a>, <a href=\"../../acm/graphics/GObject.html#setY-double-\">setY</a>, <a href=\"../../acm/graphics/GObject.html#start--\">start</a>, <a href=\"../../acm/graphics/GObject.html#start-java.lang.String:A-\">start</a>, <a href=\"../../acm/graphics/GObject.html#toString--\">toString</a>, <a href=\"../../acm/graphics/GObject.html#updateEnabledList--\">updateEnabledList</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GSlider-int-int-int-javax.swing.event.ChangeListener-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GSlider</h4>\n<pre>public&nbsp;GSlider(int&nbsp;paramInt1,\n               int&nbsp;paramInt2,\n               int&nbsp;paramInt3,\n               <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeListener</a>&nbsp;paramChangeListener)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"setSystemLookAndFeelProperties--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setSystemLookAndFeelProperties</h4>\n<pre>public static&nbsp;void&nbsp;setSystemLookAndFeelProperties()</pre>\n<div class=\"block\">Settings for Java look-and-feel related to tables.</div>\n</li>\n</ul>\n<a name=\"getPaintLabels--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getPaintLabels</h4>\n<pre>public&nbsp;boolean&nbsp;getPaintLabels()</pre>\n</li>\n</ul>\n<a name=\"getPaintTicks--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getPaintTicks</h4>\n<pre>public&nbsp;boolean&nbsp;getPaintTicks()</pre>\n</li>\n</ul>\n<a name=\"getSnapToTicks--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSnapToTicks</h4>\n<pre>public&nbsp;boolean&nbsp;getSnapToTicks()</pre>\n</li>\n</ul>\n<a name=\"getMajorTickSpacing--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getMajorTickSpacing</h4>\n<pre>public&nbsp;int&nbsp;getMajorTickSpacing()</pre>\n</li>\n</ul>\n<a name=\"getMinorTickSpacing--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getMinorTickSpacing</h4>\n<pre>public&nbsp;int&nbsp;getMinorTickSpacing()</pre>\n</li>\n</ul>\n<a name=\"setPaintLabels-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setPaintLabels</h4>\n<pre>public&nbsp;void&nbsp;setPaintLabels(boolean&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"setPaintTicks-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setPaintTicks</h4>\n<pre>public&nbsp;void&nbsp;setPaintTicks(boolean&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"setSnapToTicks-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setSnapToTicks</h4>\n<pre>public&nbsp;void&nbsp;setSnapToTicks(boolean&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"setMajorTickSpacing-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setMajorTickSpacing</h4>\n<pre>public&nbsp;void&nbsp;setMajorTickSpacing(int&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"setMinorTickSpacing-int-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>setMinorTickSpacing</h4>\n<pre>public&nbsp;void&nbsp;setMinorTickSpacing(int&nbsp;value)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GRadioButton_setSelected.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GSlider_getMajorTickSpacing.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GSlider.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GSlider.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GSlider_getMajorTickSpacing.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GSlider_getMajorTickSpacing</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GSlider_getMajorTickSpacing\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GSlider.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GSlider_getMinorTickSpacing.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GSlider_getMajorTickSpacing.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GSlider_getMajorTickSpacing.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GSlider_getMajorTickSpacing\" class=\"title\">Class GSlider_getMajorTickSpacing</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GSlider_getMajorTickSpacing</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GSlider_getMajorTickSpacing</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GSlider_getMajorTickSpacing.html#GSlider_getMajorTickSpacing--\">GSlider_getMajorTickSpacing</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GSlider_getMajorTickSpacing.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GSlider_getMajorTickSpacing--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GSlider_getMajorTickSpacing</h4>\n<pre>public&nbsp;GSlider_getMajorTickSpacing()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GSlider.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GSlider_getMinorTickSpacing.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GSlider_getMajorTickSpacing.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GSlider_getMajorTickSpacing.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GSlider_getMinorTickSpacing.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GSlider_getMinorTickSpacing</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GSlider_getMinorTickSpacing\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GSlider_getMajorTickSpacing.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GSlider_getPaintLabels.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GSlider_getMinorTickSpacing.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GSlider_getMinorTickSpacing.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GSlider_getMinorTickSpacing\" class=\"title\">Class GSlider_getMinorTickSpacing</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GSlider_getMinorTickSpacing</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GSlider_getMinorTickSpacing</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GSlider_getMinorTickSpacing.html#GSlider_getMinorTickSpacing--\">GSlider_getMinorTickSpacing</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GSlider_getMinorTickSpacing.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GSlider_getMinorTickSpacing--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GSlider_getMinorTickSpacing</h4>\n<pre>public&nbsp;GSlider_getMinorTickSpacing()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GSlider_getMajorTickSpacing.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GSlider_getPaintLabels.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GSlider_getMinorTickSpacing.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GSlider_getMinorTickSpacing.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GSlider_getPaintLabels.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GSlider_getPaintLabels</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GSlider_getPaintLabels\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GSlider_getMinorTickSpacing.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GSlider_getPaintTicks.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GSlider_getPaintLabels.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GSlider_getPaintLabels.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GSlider_getPaintLabels\" class=\"title\">Class GSlider_getPaintLabels</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GSlider_getPaintLabels</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GSlider_getPaintLabels</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GSlider_getPaintLabels.html#GSlider_getPaintLabels--\">GSlider_getPaintLabels</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GSlider_getPaintLabels.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GSlider_getPaintLabels--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GSlider_getPaintLabels</h4>\n<pre>public&nbsp;GSlider_getPaintLabels()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GSlider_getMinorTickSpacing.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GSlider_getPaintTicks.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GSlider_getPaintLabels.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GSlider_getPaintLabels.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GSlider_getPaintTicks.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GSlider_getPaintTicks</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GSlider_getPaintTicks\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GSlider_getPaintLabels.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GSlider_getSnapToTicks.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GSlider_getPaintTicks.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GSlider_getPaintTicks.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GSlider_getPaintTicks\" class=\"title\">Class GSlider_getPaintTicks</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GSlider_getPaintTicks</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GSlider_getPaintTicks</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GSlider_getPaintTicks.html#GSlider_getPaintTicks--\">GSlider_getPaintTicks</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GSlider_getPaintTicks.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GSlider_getPaintTicks--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GSlider_getPaintTicks</h4>\n<pre>public&nbsp;GSlider_getPaintTicks()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GSlider_getPaintLabels.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GSlider_getSnapToTicks.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GSlider_getPaintTicks.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GSlider_getPaintTicks.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GSlider_getSnapToTicks.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GSlider_getSnapToTicks</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GSlider_getSnapToTicks\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GSlider_getPaintTicks.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GSlider_setMajorTickSpacing.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GSlider_getSnapToTicks.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GSlider_getSnapToTicks.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GSlider_getSnapToTicks\" class=\"title\">Class GSlider_getSnapToTicks</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GSlider_getSnapToTicks</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GSlider_getSnapToTicks</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GSlider_getSnapToTicks.html#GSlider_getSnapToTicks--\">GSlider_getSnapToTicks</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GSlider_getSnapToTicks.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GSlider_getSnapToTicks--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GSlider_getSnapToTicks</h4>\n<pre>public&nbsp;GSlider_getSnapToTicks()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GSlider_getPaintTicks.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GSlider_setMajorTickSpacing.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GSlider_getSnapToTicks.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GSlider_getSnapToTicks.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GSlider_setMajorTickSpacing.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GSlider_setMajorTickSpacing</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GSlider_setMajorTickSpacing\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GSlider_getSnapToTicks.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GSlider_setMinorTickSpacing.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GSlider_setMajorTickSpacing.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GSlider_setMajorTickSpacing.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GSlider_setMajorTickSpacing\" class=\"title\">Class GSlider_setMajorTickSpacing</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GSlider_setMajorTickSpacing</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GSlider_setMajorTickSpacing</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GSlider_setMajorTickSpacing.html#GSlider_setMajorTickSpacing--\">GSlider_setMajorTickSpacing</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GSlider_setMajorTickSpacing.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GSlider_setMajorTickSpacing--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GSlider_setMajorTickSpacing</h4>\n<pre>public&nbsp;GSlider_setMajorTickSpacing()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GSlider_getSnapToTicks.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GSlider_setMinorTickSpacing.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GSlider_setMajorTickSpacing.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GSlider_setMajorTickSpacing.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GSlider_setMinorTickSpacing.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GSlider_setMinorTickSpacing</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GSlider_setMinorTickSpacing\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GSlider_setMajorTickSpacing.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GSlider_setPaintLabels.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GSlider_setMinorTickSpacing.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GSlider_setMinorTickSpacing.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GSlider_setMinorTickSpacing\" class=\"title\">Class GSlider_setMinorTickSpacing</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GSlider_setMinorTickSpacing</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GSlider_setMinorTickSpacing</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GSlider_setMinorTickSpacing.html#GSlider_setMinorTickSpacing--\">GSlider_setMinorTickSpacing</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GSlider_setMinorTickSpacing.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GSlider_setMinorTickSpacing--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GSlider_setMinorTickSpacing</h4>\n<pre>public&nbsp;GSlider_setMinorTickSpacing()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GSlider_setMajorTickSpacing.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GSlider_setPaintLabels.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GSlider_setMinorTickSpacing.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GSlider_setMinorTickSpacing.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GSlider_setPaintLabels.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GSlider_setPaintLabels</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GSlider_setPaintLabels\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GSlider_setMinorTickSpacing.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GSlider_setPaintTicks.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GSlider_setPaintLabels.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GSlider_setPaintLabels.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GSlider_setPaintLabels\" class=\"title\">Class GSlider_setPaintLabels</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GSlider_setPaintLabels</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GSlider_setPaintLabels</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GSlider_setPaintLabels.html#GSlider_setPaintLabels--\">GSlider_setPaintLabels</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GSlider_setPaintLabels.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GSlider_setPaintLabels--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GSlider_setPaintLabels</h4>\n<pre>public&nbsp;GSlider_setPaintLabels()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GSlider_setMinorTickSpacing.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GSlider_setPaintTicks.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GSlider_setPaintLabels.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GSlider_setPaintLabels.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GSlider_setPaintTicks.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GSlider_setPaintTicks</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GSlider_setPaintTicks\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GSlider_setPaintLabels.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GSlider_setSnapToTicks.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GSlider_setPaintTicks.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GSlider_setPaintTicks.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GSlider_setPaintTicks\" class=\"title\">Class GSlider_setPaintTicks</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GSlider_setPaintTicks</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GSlider_setPaintTicks</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GSlider_setPaintTicks.html#GSlider_setPaintTicks--\">GSlider_setPaintTicks</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GSlider_setPaintTicks.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GSlider_setPaintTicks--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GSlider_setPaintTicks</h4>\n<pre>public&nbsp;GSlider_setPaintTicks()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GSlider_setPaintLabels.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GSlider_setSnapToTicks.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GSlider_setPaintTicks.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GSlider_setPaintTicks.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GSlider_setSnapToTicks.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GSlider_setSnapToTicks</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GSlider_setSnapToTicks\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GSlider_setPaintTicks.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GSlider_setSnapToTicks.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GSlider_setSnapToTicks.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GSlider_setSnapToTicks\" class=\"title\">Class GSlider_setSnapToTicks</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GSlider_setSnapToTicks</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GSlider_setSnapToTicks</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GSlider_setSnapToTicks.html#GSlider_setSnapToTicks--\">GSlider_setSnapToTicks</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GSlider_setSnapToTicks.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GSlider_setSnapToTicks--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GSlider_setSnapToTicks</h4>\n<pre>public&nbsp;GSlider_setSnapToTicks()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GSlider_setPaintTicks.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GSlider_setSnapToTicks.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GSlider_setSnapToTicks.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTable.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTable</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTable\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":9,\"i14\":10,\"i15\":10,\"i16\":10,\"i17\":10,\"i18\":10,\"i19\":10,\"i20\":10,\"i21\":10,\"i22\":10,\"i23\":10,\"i24\":10,\"i25\":10,\"i26\":10,\"i27\":10,\"i28\":10,\"i29\":10,\"i30\":10,\"i31\":10,\"i32\":10,\"i33\":10,\"i34\":10,\"i35\":10,\"i36\":10,\"i37\":10,\"i38\":10,\"i39\":10,\"i40\":10,\"i41\":10,\"i42\":10,\"i43\":10,\"i44\":10,\"i45\":10,\"i46\":10,\"i47\":10,\"i48\":10,\"i49\":10,\"i50\":10,\"i51\":10,\"i52\":10,\"i53\":10,\"i54\":9,\"i55\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GSlider_setSnapToTicks.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_autofitColumnWidths.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTable\" class=\"title\">Class GTable</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">acm.graphics.GObject</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/GInteractor.html\" title=\"class in stanford.spl\">stanford.spl.GInteractor</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTable</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"../../acm/graphics/GResizable.html\" title=\"interface in acm.graphics\">GResizable</a>, <a href=\"../../acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true\" title=\"class or interface in java.lang\">Cloneable</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTable</span>\nextends <a href=\"../../stanford/spl/GInteractor.html\" title=\"class in stanford.spl\">GInteractor</a></pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#stanford.spl.GTable\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#COLUMN_HEADER_EXCEL\">COLUMN_HEADER_EXCEL</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#COLUMN_HEADER_NONE\">COLUMN_HEADER_NONE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#COLUMN_HEADER_NUMERIC\">COLUMN_HEADER_NUMERIC</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#TABLE_COPY\">TABLE_COPY</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#TABLE_CUT\">TABLE_CUT</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#TABLE_EDIT_BEGIN\">TABLE_EDIT_BEGIN</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#TABLE_EVENT\">TABLE_EVENT</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#TABLE_PASTE\">TABLE_PASTE</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#TABLE_REPLACE_BEGIN\">TABLE_REPLACE_BEGIN</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#TABLE_SELECTED\">TABLE_SELECTED</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#TABLE_UPDATED\">TABLE_UPDATED</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#GTable--\">GTable</a></span>()</code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#GTable-int-int-\">GTable</a></span>(int&nbsp;numRows,\n      int&nbsp;numCols)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#addGTableListener-stanford.spl.GTableListener-\">addGTableListener</a></span>(<a href=\"../../stanford/spl/GTableListener.html\" title=\"interface in stanford.spl\">GTableListener</a>&nbsp;listener)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#autofitColumnWidths--\">autofitColumnWidths</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#clear--\">clear</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#clearFormatting--\">clearFormatting</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#clearGTableListeners--\">clearGTableListeners</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#get-int-int-\">get</a></span>(int&nbsp;row,\n   int&nbsp;column)</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#getColumnHeaderStyle--\">getColumnHeaderStyle</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#getColumnWidth-int-\">getColumnWidth</a></span>(int&nbsp;col)</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#getFont--\">getFont</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#getSelectedColumn--\">getSelectedColumn</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#getSelectedRow--\">getSelectedRow</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#inBounds-int-int-\">inBounds</a></span>(int&nbsp;row,\n        int&nbsp;column)</code>&nbsp;</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#isEventEnabled-int-\">isEventEnabled</a></span>(int&nbsp;type)</code>&nbsp;</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#main-java.lang.String:A-\">main</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</code>&nbsp;</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#numCols--\">numCols</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#numRows--\">numRows</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#removeGTableListener-stanford.spl.GTableListener-\">removeGTableListener</a></span>(<a href=\"../../stanford/spl/GTableListener.html\" title=\"interface in stanford.spl\">GTableListener</a>&nbsp;listener)</code>&nbsp;</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#requestFocus--\">requestFocus</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#resize-int-int-\">resize</a></span>(int&nbsp;numRows,\n      int&nbsp;numCols)</code>&nbsp;</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#rowColumnHeadersVisible--\">rowColumnHeadersVisible</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#select-int-int-\">select</a></span>(int&nbsp;row,\n      int&nbsp;column)</code>&nbsp;</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#set-int-int-java.lang.String-\">set</a></span>(int&nbsp;row,\n   int&nbsp;column,\n   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#set-int-int-java.lang.String-boolean-\">set</a></span>(int&nbsp;row,\n   int&nbsp;column,\n   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value,\n   boolean&nbsp;notifyBackEnd)</code>&nbsp;</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#setBackground-java.awt.Color-\">setBackground</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>&nbsp;</td>\n</tr>\n<tr id=\"i24\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#setCellAlignment-int-int-int-\">setCellAlignment</a></span>(int&nbsp;row,\n                int&nbsp;column,\n                int&nbsp;alignment)</code>&nbsp;</td>\n</tr>\n<tr id=\"i25\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#setCellBackground-int-int-java.awt.Color-\">setCellBackground</a></span>(int&nbsp;row,\n                 int&nbsp;column,\n                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>&nbsp;</td>\n</tr>\n<tr id=\"i26\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#setCellColor-int-int-java.awt.Color-\">setCellColor</a></span>(int&nbsp;row,\n            int&nbsp;column,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>&nbsp;</td>\n</tr>\n<tr id=\"i27\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#setCellFont-int-int-java.awt.Font-\">setCellFont</a></span>(int&nbsp;row,\n           int&nbsp;column,\n           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a>&nbsp;font)</code>&nbsp;</td>\n</tr>\n<tr id=\"i28\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#setCellForeground-int-int-java.awt.Color-\">setCellForeground</a></span>(int&nbsp;row,\n                 int&nbsp;column,\n                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>&nbsp;</td>\n</tr>\n<tr id=\"i29\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#setColor-java.awt.Color-\">setColor</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>\n<div class=\"block\">Sets the color used to display this object.</div>\n</td>\n</tr>\n<tr id=\"i30\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#setColumnAlignment-int-int-\">setColumnAlignment</a></span>(int&nbsp;column,\n                  int&nbsp;alignment)</code>&nbsp;</td>\n</tr>\n<tr id=\"i31\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#setColumnBackground-int-java.awt.Color-\">setColumnBackground</a></span>(int&nbsp;column,\n                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>&nbsp;</td>\n</tr>\n<tr id=\"i32\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#setColumnColor-int-java.awt.Color-\">setColumnColor</a></span>(int&nbsp;column,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>&nbsp;</td>\n</tr>\n<tr id=\"i33\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#setColumnFont-int-java.awt.Font-\">setColumnFont</a></span>(int&nbsp;column,\n             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a>&nbsp;font)</code>&nbsp;</td>\n</tr>\n<tr id=\"i34\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#setColumnForeground-int-java.awt.Color-\">setColumnForeground</a></span>(int&nbsp;column,\n                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>&nbsp;</td>\n</tr>\n<tr id=\"i35\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#setColumnHeaderStyle-int-\">setColumnHeaderStyle</a></span>(int&nbsp;style)</code>&nbsp;</td>\n</tr>\n<tr id=\"i36\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#setColumnHeadersVisible-boolean-\">setColumnHeadersVisible</a></span>(boolean&nbsp;visible)</code>&nbsp;</td>\n</tr>\n<tr id=\"i37\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#setColumnWidth-int-int-\">setColumnWidth</a></span>(int&nbsp;col,\n              int&nbsp;width)</code>&nbsp;</td>\n</tr>\n<tr id=\"i38\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#setDefaultColumnWidth-int-\">setDefaultColumnWidth</a></span>(int&nbsp;width)</code>&nbsp;</td>\n</tr>\n<tr id=\"i39\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#setEditable-boolean-\">setEditable</a></span>(boolean&nbsp;editable)</code>&nbsp;</td>\n</tr>\n<tr id=\"i40\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#setEditable-int-int-boolean-\">setEditable</a></span>(int&nbsp;row,\n           int&nbsp;column,\n           boolean&nbsp;editable)</code>&nbsp;</td>\n</tr>\n<tr id=\"i41\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#setEditorValue-int-int-java.lang.String-\">setEditorValue</a></span>(int&nbsp;row,\n              int&nbsp;column,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i42\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#setEventEnabled-int-boolean-\">setEventEnabled</a></span>(int&nbsp;eventType,\n               boolean&nbsp;enabled)</code>&nbsp;</td>\n</tr>\n<tr id=\"i43\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#setFont-java.awt.Font-\">setFont</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a>&nbsp;font)</code>&nbsp;</td>\n</tr>\n<tr id=\"i44\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#setForeground-java.awt.Color-\">setForeground</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>&nbsp;</td>\n</tr>\n<tr id=\"i45\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#setHorizontalAlignment-int-\">setHorizontalAlignment</a></span>(int&nbsp;alignment)</code>&nbsp;</td>\n</tr>\n<tr id=\"i46\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#setJavaBackEnd-stanford.spl.JavaBackEnd-\">setJavaBackEnd</a></span>(<a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</code>&nbsp;</td>\n</tr>\n<tr id=\"i47\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#setRowAlignment-int-int-\">setRowAlignment</a></span>(int&nbsp;row,\n               int&nbsp;alignment)</code>&nbsp;</td>\n</tr>\n<tr id=\"i48\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#setRowBackground-int-java.awt.Color-\">setRowBackground</a></span>(int&nbsp;row,\n                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>&nbsp;</td>\n</tr>\n<tr id=\"i49\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#setRowColor-int-java.awt.Color-\">setRowColor</a></span>(int&nbsp;row,\n           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>&nbsp;</td>\n</tr>\n<tr id=\"i50\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#setRowColumnHeadersVisible-boolean-\">setRowColumnHeadersVisible</a></span>(boolean&nbsp;visible)</code>&nbsp;</td>\n</tr>\n<tr id=\"i51\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#setRowFont-int-java.awt.Font-\">setRowFont</a></span>(int&nbsp;row,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a>&nbsp;font)</code>&nbsp;</td>\n</tr>\n<tr id=\"i52\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#setRowForeground-int-java.awt.Color-\">setRowForeground</a></span>(int&nbsp;row,\n                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>&nbsp;</td>\n</tr>\n<tr id=\"i53\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#setRowHeadersVisible-boolean-\">setRowHeadersVisible</a></span>(boolean&nbsp;visible)</code>&nbsp;</td>\n</tr>\n<tr id=\"i54\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#setSystemLookAndFeelProperties--\">setSystemLookAndFeelProperties</a></span>()</code>\n<div class=\"block\">Settings for Java look-and-feel related to tables.</div>\n</td>\n</tr>\n<tr id=\"i55\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable.html#toExcelStyleColumnName-int-\">toExcelStyleColumnName</a></span>(int&nbsp;columnNumber)</code>\n<div class=\"block\">Returns an Excel-style column name, such as \"A\" for 0, \"B\" for 1, ..., \"Z\", \"AA\", \"AB\", etc.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.GInteractor\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/GInteractor.html\" title=\"class in stanford.spl\">GInteractor</a></h3>\n<code><a href=\"../../stanford/spl/GInteractor.html#getAccelerator--\">getAccelerator</a>, <a href=\"../../stanford/spl/GInteractor.html#getActionCommand--\">getActionCommand</a>, <a href=\"../../stanford/spl/GInteractor.html#getBounds--\">getBounds</a>, <a href=\"../../stanford/spl/GInteractor.html#getFontString--\">getFontString</a>, <a href=\"../../stanford/spl/GInteractor.html#getIcon--\">getIcon</a>, <a href=\"../../stanford/spl/GInteractor.html#getInteractor--\">getInteractor</a>, <a href=\"../../stanford/spl/GInteractor.html#getMnemonic--\">getMnemonic</a>, <a href=\"../../stanford/spl/GInteractor.html#isEnabled--\">isEnabled</a>, <a href=\"../../stanford/spl/GInteractor.html#paint2d-java.awt.Graphics2D-\">paint2d</a>, <a href=\"../../stanford/spl/GInteractor.html#paintObject-java.awt.Graphics-\">paintObject</a>, <a href=\"../../stanford/spl/GInteractor.html#repaint--\">repaint</a>, <a href=\"../../stanford/spl/GInteractor.html#setAccelerator-java.lang.String-\">setAccelerator</a>, <a href=\"../../stanford/spl/GInteractor.html#setActionCommand-java.lang.String-\">setActionCommand</a>, <a href=\"../../stanford/spl/GInteractor.html#setBounds-double-double-double-double-\">setBounds</a>, <a href=\"../../stanford/spl/GInteractor.html#setBounds-acm.graphics.GRectangle-\">setBounds</a>, <a href=\"../../stanford/spl/GInteractor.html#setEnabled-boolean-\">setEnabled</a>, <a href=\"../../stanford/spl/GInteractor.html#setFont-java.lang.String-\">setFont</a>, <a href=\"../../stanford/spl/GInteractor.html#setIcon-javax.swing.Icon-\">setIcon</a>, <a href=\"../../stanford/spl/GInteractor.html#setIcon-java.lang.String-\">setIcon</a>, <a href=\"../../stanford/spl/GInteractor.html#setLocation-double-double-\">setLocation</a>, <a href=\"../../stanford/spl/GInteractor.html#setMnemonic-char-\">setMnemonic</a>, <a href=\"../../stanford/spl/GInteractor.html#setMnemonic-int-\">setMnemonic</a>, <a href=\"../../stanford/spl/GInteractor.html#setParent-acm.graphics.GContainer-\">setParent</a>, <a href=\"../../stanford/spl/GInteractor.html#setSize-double-double-\">setSize</a>, <a href=\"../../stanford/spl/GInteractor.html#setSize-acm.graphics.GDimension-\">setSize</a>, <a href=\"../../stanford/spl/GInteractor.html#setTooltip-java.lang.String-\">setTooltip</a>, <a href=\"../../stanford/spl/GInteractor.html#setVisible-boolean-\">setVisible</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.graphics.GObject\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.graphics.<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></h3>\n<code><a href=\"../../acm/graphics/GObject.html#addActionListener-java.awt.event.ActionListener-\">addActionListener</a>, <a href=\"../../acm/graphics/GObject.html#addMouseListener-java.awt.event.MouseListener-\">addMouseListener</a>, <a href=\"../../acm/graphics/GObject.html#addMouseMotionListener-java.awt.event.MouseMotionListener-\">addMouseMotionListener</a>, <a href=\"../../acm/graphics/GObject.html#areMouseListenersEnabled--\">areMouseListenersEnabled</a>, <a href=\"../../acm/graphics/GObject.html#clone--\">clone</a>, <a href=\"../../acm/graphics/GObject.html#colorName-java.awt.Color-\">colorName</a>, <a href=\"../../acm/graphics/GObject.html#colorName-int-\">colorName</a>, <a href=\"../../acm/graphics/GObject.html#colorNameFriendly-int-\">colorNameFriendly</a>, <a href=\"../../acm/graphics/GObject.html#contains-double-double-\">contains</a>, <a href=\"../../acm/graphics/GObject.html#contains-acm.graphics.GPoint-\">contains</a>, <a href=\"../../acm/graphics/GObject.html#createTransformedGraphics-java.awt.Graphics-\">createTransformedGraphics</a>, <a href=\"../../acm/graphics/GObject.html#fireActionEvent-java.awt.event.ActionEvent-\">fireActionEvent</a>, <a href=\"../../acm/graphics/GObject.html#fireActionEvent-java.lang.String-\">fireActionEvent</a>, <a href=\"../../acm/graphics/GObject.html#fireMouseListeners-java.awt.event.MouseEvent-\">fireMouseListeners</a>, <a href=\"../../acm/graphics/GObject.html#getBottomY--\">getBottomY</a>, <a href=\"../../acm/graphics/GObject.html#getCenterLocation--\">getCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#getCenterX--\">getCenterX</a>, <a href=\"../../acm/graphics/GObject.html#getCenterY--\">getCenterY</a>, <a href=\"../../acm/graphics/GObject.html#getColor--\">getColor</a>, <a href=\"../../acm/graphics/GObject.html#getComponent--\">getComponent</a>, <a href=\"../../acm/graphics/GObject.html#getHeight--\">getHeight</a>, <a href=\"../../acm/graphics/GObject.html#getLineWidth--\">getLineWidth</a>, <a href=\"../../acm/graphics/GObject.html#getLocation--\">getLocation</a>, <a href=\"../../acm/graphics/GObject.html#getMatrix--\">getMatrix</a>, <a href=\"../../acm/graphics/GObject.html#getObjectColor--\">getObjectColor</a>, <a href=\"../../acm/graphics/GObject.html#getParent--\">getParent</a>, <a href=\"../../acm/graphics/GObject.html#getRightX--\">getRightX</a>, <a href=\"../../acm/graphics/GObject.html#getSize--\">getSize</a>, <a href=\"../../acm/graphics/GObject.html#getWidth--\">getWidth</a>, <a href=\"../../acm/graphics/GObject.html#getX--\">getX</a>, <a href=\"../../acm/graphics/GObject.html#getY--\">getY</a>, <a href=\"../../acm/graphics/GObject.html#intersects-acm.graphics.GObject-\">intersects</a>, <a href=\"../../acm/graphics/GObject.html#isAntiAliasing--\">isAntiAliasing</a>, <a href=\"../../acm/graphics/GObject.html#isVisible--\">isVisible</a>, <a href=\"../../acm/graphics/GObject.html#move-double-double-\">move</a>, <a href=\"../../acm/graphics/GObject.html#movePolar-double-double-\">movePolar</a>, <a href=\"../../acm/graphics/GObject.html#paint-java.awt.Graphics-\">paint</a>, <a href=\"../../acm/graphics/GObject.html#paramString--\">paramString</a>, <a href=\"../../acm/graphics/GObject.html#pause-double-\">pause</a>, <a href=\"../../acm/graphics/GObject.html#removeActionListener-java.awt.event.ActionListener-\">removeActionListener</a>, <a href=\"../../acm/graphics/GObject.html#removeMouseListener-java.awt.event.MouseListener-\">removeMouseListener</a>, <a href=\"../../acm/graphics/GObject.html#removeMouseMotionListener-java.awt.event.MouseMotionListener-\">removeMouseMotionListener</a>, <a href=\"../../acm/graphics/GObject.html#rotate-double-\">rotate</a>, <a href=\"../../acm/graphics/GObject.html#scale-double-\">scale</a>, <a href=\"../../acm/graphics/GObject.html#scale-double-double-\">scale</a>, <a href=\"../../acm/graphics/GObject.html#sendBackward--\">sendBackward</a>, <a href=\"../../acm/graphics/GObject.html#sendForward--\">sendForward</a>, <a href=\"../../acm/graphics/GObject.html#sendToBack--\">sendToBack</a>, <a href=\"../../acm/graphics/GObject.html#sendToFront--\">sendToFront</a>, <a href=\"../../acm/graphics/GObject.html#setAntiAliasing-boolean-\">setAntiAliasing</a>, <a href=\"../../acm/graphics/GObject.html#setBottomY-double-\">setBottomY</a>, <a href=\"../../acm/graphics/GObject.html#setCenterLocation-double-double-\">setCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#setCenterLocation-acm.graphics.GPoint-\">setCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#setCenterX-double-\">setCenterX</a>, <a href=\"../../acm/graphics/GObject.html#setCenterY-double-\">setCenterY</a>, <a href=\"../../acm/graphics/GObject.html#setLineWidth-double-\">setLineWidth</a>, <a href=\"../../acm/graphics/GObject.html#setLocation-acm.graphics.GPoint-\">setLocation</a>, <a href=\"../../acm/graphics/GObject.html#setRightX-double-\">setRightX</a>, <a href=\"../../acm/graphics/GObject.html#setX-double-\">setX</a>, <a href=\"../../acm/graphics/GObject.html#setY-double-\">setY</a>, <a href=\"../../acm/graphics/GObject.html#start--\">start</a>, <a href=\"../../acm/graphics/GObject.html#start-java.lang.String:A-\">start</a>, <a href=\"../../acm/graphics/GObject.html#toString--\">toString</a>, <a href=\"../../acm/graphics/GObject.html#updateEnabledList--\">updateEnabledList</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"TABLE_EVENT\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>TABLE_EVENT</h4>\n<pre>public static final&nbsp;int TABLE_EVENT</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.GTable.TABLE_EVENT\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"TABLE_UPDATED\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>TABLE_UPDATED</h4>\n<pre>public static final&nbsp;int TABLE_UPDATED</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.GTable.TABLE_UPDATED\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"TABLE_SELECTED\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>TABLE_SELECTED</h4>\n<pre>public static final&nbsp;int TABLE_SELECTED</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.GTable.TABLE_SELECTED\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"TABLE_EDIT_BEGIN\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>TABLE_EDIT_BEGIN</h4>\n<pre>public static final&nbsp;int TABLE_EDIT_BEGIN</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.GTable.TABLE_EDIT_BEGIN\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"TABLE_REPLACE_BEGIN\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>TABLE_REPLACE_BEGIN</h4>\n<pre>public static final&nbsp;int TABLE_REPLACE_BEGIN</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.GTable.TABLE_REPLACE_BEGIN\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"TABLE_CUT\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>TABLE_CUT</h4>\n<pre>public static final&nbsp;int TABLE_CUT</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.GTable.TABLE_CUT\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"TABLE_COPY\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>TABLE_COPY</h4>\n<pre>public static final&nbsp;int TABLE_COPY</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.GTable.TABLE_COPY\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"TABLE_PASTE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>TABLE_PASTE</h4>\n<pre>public static final&nbsp;int TABLE_PASTE</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.GTable.TABLE_PASTE\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"COLUMN_HEADER_NONE\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>COLUMN_HEADER_NONE</h4>\n<pre>public static final&nbsp;int COLUMN_HEADER_NONE</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.GTable.COLUMN_HEADER_NONE\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"COLUMN_HEADER_EXCEL\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>COLUMN_HEADER_EXCEL</h4>\n<pre>public static final&nbsp;int COLUMN_HEADER_EXCEL</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.GTable.COLUMN_HEADER_EXCEL\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"COLUMN_HEADER_NUMERIC\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>COLUMN_HEADER_NUMERIC</h4>\n<pre>public static final&nbsp;int COLUMN_HEADER_NUMERIC</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.GTable.COLUMN_HEADER_NUMERIC\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTable--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>GTable</h4>\n<pre>public&nbsp;GTable()</pre>\n</li>\n</ul>\n<a name=\"GTable-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTable</h4>\n<pre>public&nbsp;GTable(int&nbsp;numRows,\n              int&nbsp;numCols)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"setSystemLookAndFeelProperties--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setSystemLookAndFeelProperties</h4>\n<pre>public static&nbsp;void&nbsp;setSystemLookAndFeelProperties()</pre>\n<div class=\"block\">Settings for Java look-and-feel related to tables.</div>\n</li>\n</ul>\n<a name=\"addGTableListener-stanford.spl.GTableListener-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addGTableListener</h4>\n<pre>public&nbsp;void&nbsp;addGTableListener(<a href=\"../../stanford/spl/GTableListener.html\" title=\"interface in stanford.spl\">GTableListener</a>&nbsp;listener)</pre>\n</li>\n</ul>\n<a name=\"autofitColumnWidths--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>autofitColumnWidths</h4>\n<pre>public&nbsp;void&nbsp;autofitColumnWidths()</pre>\n</li>\n</ul>\n<a name=\"clear--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clear</h4>\n<pre>public&nbsp;void&nbsp;clear()</pre>\n</li>\n</ul>\n<a name=\"clearFormatting--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clearFormatting</h4>\n<pre>public&nbsp;void&nbsp;clearFormatting()</pre>\n</li>\n</ul>\n<a name=\"clearGTableListeners--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clearGTableListeners</h4>\n<pre>public&nbsp;void&nbsp;clearGTableListeners()</pre>\n</li>\n</ul>\n<a name=\"get-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>get</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;get(int&nbsp;row,\n                  int&nbsp;column)</pre>\n</li>\n</ul>\n<a name=\"getColumnHeaderStyle--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getColumnHeaderStyle</h4>\n<pre>public&nbsp;int&nbsp;getColumnHeaderStyle()</pre>\n</li>\n</ul>\n<a name=\"getColumnWidth-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getColumnWidth</h4>\n<pre>public&nbsp;int&nbsp;getColumnWidth(int&nbsp;col)</pre>\n</li>\n</ul>\n<a name=\"getFont--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFont</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a>&nbsp;getFont()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../stanford/spl/GInteractor.html#getFont--\">getFont</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/GInteractor.html\" title=\"class in stanford.spl\">GInteractor</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getSelectedColumn--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSelectedColumn</h4>\n<pre>public&nbsp;int&nbsp;getSelectedColumn()</pre>\n</li>\n</ul>\n<a name=\"getSelectedRow--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSelectedRow</h4>\n<pre>public&nbsp;int&nbsp;getSelectedRow()</pre>\n</li>\n</ul>\n<a name=\"inBounds-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>inBounds</h4>\n<pre>public&nbsp;boolean&nbsp;inBounds(int&nbsp;row,\n                        int&nbsp;column)</pre>\n</li>\n</ul>\n<a name=\"isEventEnabled-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isEventEnabled</h4>\n<pre>public&nbsp;boolean&nbsp;isEventEnabled(int&nbsp;type)</pre>\n</li>\n</ul>\n<a name=\"numCols--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>numCols</h4>\n<pre>public&nbsp;int&nbsp;numCols()</pre>\n</li>\n</ul>\n<a name=\"numRows--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>numRows</h4>\n<pre>public&nbsp;int&nbsp;numRows()</pre>\n</li>\n</ul>\n<a name=\"removeGTableListener-stanford.spl.GTableListener-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeGTableListener</h4>\n<pre>public&nbsp;void&nbsp;removeGTableListener(<a href=\"../../stanford/spl/GTableListener.html\" title=\"interface in stanford.spl\">GTableListener</a>&nbsp;listener)</pre>\n</li>\n</ul>\n<a name=\"requestFocus--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>requestFocus</h4>\n<pre>public&nbsp;void&nbsp;requestFocus()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../stanford/spl/GInteractor.html#requestFocus--\">requestFocus</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/GInteractor.html\" title=\"class in stanford.spl\">GInteractor</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"resize-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>resize</h4>\n<pre>public&nbsp;void&nbsp;resize(int&nbsp;numRows,\n                   int&nbsp;numCols)</pre>\n</li>\n</ul>\n<a name=\"rowColumnHeadersVisible--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>rowColumnHeadersVisible</h4>\n<pre>public&nbsp;boolean&nbsp;rowColumnHeadersVisible()</pre>\n</li>\n</ul>\n<a name=\"select-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>select</h4>\n<pre>public&nbsp;void&nbsp;select(int&nbsp;row,\n                   int&nbsp;column)</pre>\n</li>\n</ul>\n<a name=\"set-int-int-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>set</h4>\n<pre>public&nbsp;void&nbsp;set(int&nbsp;row,\n                int&nbsp;column,\n                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"set-int-int-java.lang.String-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>set</h4>\n<pre>public&nbsp;void&nbsp;set(int&nbsp;row,\n                int&nbsp;column,\n                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value,\n                boolean&nbsp;notifyBackEnd)</pre>\n</li>\n</ul>\n<a name=\"setBackground-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setBackground</h4>\n<pre>public&nbsp;void&nbsp;setBackground(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../stanford/spl/GInteractor.html#setBackground-java.awt.Color-\">setBackground</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/GInteractor.html\" title=\"class in stanford.spl\">GInteractor</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setCellAlignment-int-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setCellAlignment</h4>\n<pre>public&nbsp;void&nbsp;setCellAlignment(int&nbsp;row,\n                             int&nbsp;column,\n                             int&nbsp;alignment)</pre>\n</li>\n</ul>\n<a name=\"setCellBackground-int-int-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setCellBackground</h4>\n<pre>public&nbsp;void&nbsp;setCellBackground(int&nbsp;row,\n                              int&nbsp;column,\n                              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n</li>\n</ul>\n<a name=\"setCellColor-int-int-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setCellColor</h4>\n<pre>public&nbsp;void&nbsp;setCellColor(int&nbsp;row,\n                         int&nbsp;column,\n                         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n</li>\n</ul>\n<a name=\"setCellFont-int-int-java.awt.Font-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setCellFont</h4>\n<pre>public&nbsp;void&nbsp;setCellFont(int&nbsp;row,\n                        int&nbsp;column,\n                        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a>&nbsp;font)</pre>\n</li>\n</ul>\n<a name=\"setCellForeground-int-int-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setCellForeground</h4>\n<pre>public&nbsp;void&nbsp;setCellForeground(int&nbsp;row,\n                              int&nbsp;column,\n                              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n</li>\n</ul>\n<a name=\"setColor-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setColor</h4>\n<pre>public&nbsp;void&nbsp;setColor(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../acm/graphics/GObject.html#setColor-java.awt.Color-\">GObject</a></code></span></div>\n<div class=\"block\">Sets the color used to display this object.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../stanford/spl/GInteractor.html#setColor-java.awt.Color-\">setColor</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/GInteractor.html\" title=\"class in stanford.spl\">GInteractor</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>color</code> - The color used to display this object</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setColumnAlignment-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setColumnAlignment</h4>\n<pre>public&nbsp;void&nbsp;setColumnAlignment(int&nbsp;column,\n                               int&nbsp;alignment)</pre>\n</li>\n</ul>\n<a name=\"setColumnBackground-int-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setColumnBackground</h4>\n<pre>public&nbsp;void&nbsp;setColumnBackground(int&nbsp;column,\n                                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n</li>\n</ul>\n<a name=\"setColumnColor-int-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setColumnColor</h4>\n<pre>public&nbsp;void&nbsp;setColumnColor(int&nbsp;column,\n                           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n</li>\n</ul>\n<a name=\"setColumnFont-int-java.awt.Font-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setColumnFont</h4>\n<pre>public&nbsp;void&nbsp;setColumnFont(int&nbsp;column,\n                          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a>&nbsp;font)</pre>\n</li>\n</ul>\n<a name=\"setColumnForeground-int-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setColumnForeground</h4>\n<pre>public&nbsp;void&nbsp;setColumnForeground(int&nbsp;column,\n                                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n</li>\n</ul>\n<a name=\"setColumnHeaderStyle-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setColumnHeaderStyle</h4>\n<pre>public&nbsp;void&nbsp;setColumnHeaderStyle(int&nbsp;style)</pre>\n</li>\n</ul>\n<a name=\"setColumnHeadersVisible-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setColumnHeadersVisible</h4>\n<pre>public&nbsp;void&nbsp;setColumnHeadersVisible(boolean&nbsp;visible)</pre>\n</li>\n</ul>\n<a name=\"setColumnWidth-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setColumnWidth</h4>\n<pre>public&nbsp;void&nbsp;setColumnWidth(int&nbsp;col,\n                           int&nbsp;width)</pre>\n</li>\n</ul>\n<a name=\"setDefaultColumnWidth-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setDefaultColumnWidth</h4>\n<pre>public&nbsp;void&nbsp;setDefaultColumnWidth(int&nbsp;width)</pre>\n</li>\n</ul>\n<a name=\"setEditable-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setEditable</h4>\n<pre>public&nbsp;void&nbsp;setEditable(boolean&nbsp;editable)</pre>\n</li>\n</ul>\n<a name=\"setEditable-int-int-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setEditable</h4>\n<pre>public&nbsp;void&nbsp;setEditable(int&nbsp;row,\n                        int&nbsp;column,\n                        boolean&nbsp;editable)</pre>\n</li>\n</ul>\n<a name=\"setEditorValue-int-int-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setEditorValue</h4>\n<pre>public&nbsp;void&nbsp;setEditorValue(int&nbsp;row,\n                           int&nbsp;column,\n                           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"setEventEnabled-int-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setEventEnabled</h4>\n<pre>public&nbsp;void&nbsp;setEventEnabled(int&nbsp;eventType,\n                            boolean&nbsp;enabled)</pre>\n</li>\n</ul>\n<a name=\"setFont-java.awt.Font-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setFont</h4>\n<pre>public&nbsp;void&nbsp;setFont(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a>&nbsp;font)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../stanford/spl/GInteractor.html#setFont-java.awt.Font-\">setFont</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/GInteractor.html\" title=\"class in stanford.spl\">GInteractor</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setForeground-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setForeground</h4>\n<pre>public&nbsp;void&nbsp;setForeground(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../stanford/spl/GInteractor.html#setForeground-java.awt.Color-\">setForeground</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/GInteractor.html\" title=\"class in stanford.spl\">GInteractor</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setHorizontalAlignment-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setHorizontalAlignment</h4>\n<pre>public&nbsp;void&nbsp;setHorizontalAlignment(int&nbsp;alignment)</pre>\n</li>\n</ul>\n<a name=\"setJavaBackEnd-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setJavaBackEnd</h4>\n<pre>public&nbsp;void&nbsp;setJavaBackEnd(<a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</pre>\n</li>\n</ul>\n<a name=\"setRowAlignment-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setRowAlignment</h4>\n<pre>public&nbsp;void&nbsp;setRowAlignment(int&nbsp;row,\n                            int&nbsp;alignment)</pre>\n</li>\n</ul>\n<a name=\"setRowBackground-int-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setRowBackground</h4>\n<pre>public&nbsp;void&nbsp;setRowBackground(int&nbsp;row,\n                             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n</li>\n</ul>\n<a name=\"setRowColor-int-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setRowColor</h4>\n<pre>public&nbsp;void&nbsp;setRowColor(int&nbsp;row,\n                        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n</li>\n</ul>\n<a name=\"setRowColumnHeadersVisible-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setRowColumnHeadersVisible</h4>\n<pre>public&nbsp;void&nbsp;setRowColumnHeadersVisible(boolean&nbsp;visible)</pre>\n</li>\n</ul>\n<a name=\"setRowFont-int-java.awt.Font-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setRowFont</h4>\n<pre>public&nbsp;void&nbsp;setRowFont(int&nbsp;row,\n                       <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a>&nbsp;font)</pre>\n</li>\n</ul>\n<a name=\"setRowForeground-int-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setRowForeground</h4>\n<pre>public&nbsp;void&nbsp;setRowForeground(int&nbsp;row,\n                             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n</li>\n</ul>\n<a name=\"setRowHeadersVisible-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setRowHeadersVisible</h4>\n<pre>public&nbsp;void&nbsp;setRowHeadersVisible(boolean&nbsp;visible)</pre>\n</li>\n</ul>\n<a name=\"toExcelStyleColumnName-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>toExcelStyleColumnName</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;toExcelStyleColumnName(int&nbsp;columnNumber)</pre>\n<div class=\"block\">Returns an Excel-style column name, such as \"A\" for 0, \"B\" for 1, ..., \"Z\", \"AA\", \"AB\", etc.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>columnNumber</code> - 0-based column number</dd>\n</dl>\n</li>\n</ul>\n<a name=\"main-java.lang.String:A-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>main</h4>\n<pre>public static&nbsp;void&nbsp;main(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GSlider_setSnapToTicks.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_autofitColumnWidths.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTableAdapter.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTableAdapter</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTableAdapter\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setRowForeground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTableEvent.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTableAdapter.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTableAdapter.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTableAdapter\" class=\"title\">Class GTableAdapter</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTableAdapter</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"../../stanford/spl/GTableListener.html\" title=\"interface in stanford.spl\">GTableListener</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTableAdapter</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>\nimplements <a href=\"../../stanford/spl/GTableListener.html\" title=\"interface in stanford.spl\">GTableListener</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTableAdapter.html#GTableAdapter--\">GTableAdapter</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTableAdapter.html#tableCopy-stanford.spl.GTableEvent-\">tableCopy</a></span>(<a href=\"../../stanford/spl/GTableEvent.html\" title=\"class in stanford.spl\">GTableEvent</a>&nbsp;event)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTableAdapter.html#tableCut-stanford.spl.GTableEvent-\">tableCut</a></span>(<a href=\"../../stanford/spl/GTableEvent.html\" title=\"class in stanford.spl\">GTableEvent</a>&nbsp;event)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTableAdapter.html#tableEditBegin-stanford.spl.GTableEvent-\">tableEditBegin</a></span>(<a href=\"../../stanford/spl/GTableEvent.html\" title=\"class in stanford.spl\">GTableEvent</a>&nbsp;event)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTableAdapter.html#tablePaste-stanford.spl.GTableEvent-\">tablePaste</a></span>(<a href=\"../../stanford/spl/GTableEvent.html\" title=\"class in stanford.spl\">GTableEvent</a>&nbsp;event)</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTableAdapter.html#tableReplaceBegin-stanford.spl.GTableEvent-\">tableReplaceBegin</a></span>(<a href=\"../../stanford/spl/GTableEvent.html\" title=\"class in stanford.spl\">GTableEvent</a>&nbsp;event)</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTableAdapter.html#tableSelected-stanford.spl.GTableEvent-\">tableSelected</a></span>(<a href=\"../../stanford/spl/GTableEvent.html\" title=\"class in stanford.spl\">GTableEvent</a>&nbsp;event)</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTableAdapter.html#tableUpdated-stanford.spl.GTableEvent-\">tableUpdated</a></span>(<a href=\"../../stanford/spl/GTableEvent.html\" title=\"class in stanford.spl\">GTableEvent</a>&nbsp;event)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTableAdapter--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTableAdapter</h4>\n<pre>public&nbsp;GTableAdapter()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"tableCopy-stanford.spl.GTableEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>tableCopy</h4>\n<pre>public&nbsp;void&nbsp;tableCopy(<a href=\"../../stanford/spl/GTableEvent.html\" title=\"class in stanford.spl\">GTableEvent</a>&nbsp;event)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/GTableListener.html#tableCopy-stanford.spl.GTableEvent-\">tableCopy</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/spl/GTableListener.html\" title=\"interface in stanford.spl\">GTableListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"tableCut-stanford.spl.GTableEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>tableCut</h4>\n<pre>public&nbsp;void&nbsp;tableCut(<a href=\"../../stanford/spl/GTableEvent.html\" title=\"class in stanford.spl\">GTableEvent</a>&nbsp;event)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/GTableListener.html#tableCut-stanford.spl.GTableEvent-\">tableCut</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/spl/GTableListener.html\" title=\"interface in stanford.spl\">GTableListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"tableEditBegin-stanford.spl.GTableEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>tableEditBegin</h4>\n<pre>public&nbsp;void&nbsp;tableEditBegin(<a href=\"../../stanford/spl/GTableEvent.html\" title=\"class in stanford.spl\">GTableEvent</a>&nbsp;event)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/GTableListener.html#tableEditBegin-stanford.spl.GTableEvent-\">tableEditBegin</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/spl/GTableListener.html\" title=\"interface in stanford.spl\">GTableListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"tablePaste-stanford.spl.GTableEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>tablePaste</h4>\n<pre>public&nbsp;void&nbsp;tablePaste(<a href=\"../../stanford/spl/GTableEvent.html\" title=\"class in stanford.spl\">GTableEvent</a>&nbsp;event)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/GTableListener.html#tablePaste-stanford.spl.GTableEvent-\">tablePaste</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/spl/GTableListener.html\" title=\"interface in stanford.spl\">GTableListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"tableReplaceBegin-stanford.spl.GTableEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>tableReplaceBegin</h4>\n<pre>public&nbsp;void&nbsp;tableReplaceBegin(<a href=\"../../stanford/spl/GTableEvent.html\" title=\"class in stanford.spl\">GTableEvent</a>&nbsp;event)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/GTableListener.html#tableReplaceBegin-stanford.spl.GTableEvent-\">tableReplaceBegin</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/spl/GTableListener.html\" title=\"interface in stanford.spl\">GTableListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"tableSelected-stanford.spl.GTableEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>tableSelected</h4>\n<pre>public&nbsp;void&nbsp;tableSelected(<a href=\"../../stanford/spl/GTableEvent.html\" title=\"class in stanford.spl\">GTableEvent</a>&nbsp;event)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/GTableListener.html#tableSelected-stanford.spl.GTableEvent-\">tableSelected</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/spl/GTableListener.html\" title=\"interface in stanford.spl\">GTableListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"tableUpdated-stanford.spl.GTableEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>tableUpdated</h4>\n<pre>public&nbsp;void&nbsp;tableUpdated(<a href=\"../../stanford/spl/GTableEvent.html\" title=\"class in stanford.spl\">GTableEvent</a>&nbsp;event)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/GTableListener.html#tableUpdated-stanford.spl.GTableEvent-\">tableUpdated</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../stanford/spl/GTableListener.html\" title=\"interface in stanford.spl\">GTableListener</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setRowForeground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTableEvent.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTableAdapter.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTableAdapter.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTableEvent.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTableEvent</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTableEvent\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTableAdapter.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTableListener.html\" title=\"interface in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTableEvent.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTableEvent.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTableEvent\" class=\"title\">Class GTableEvent</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTableEvent</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTableEvent</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTableEvent.html#GTableEvent-stanford.spl.GTable-\">GTableEvent</a></span>(<a href=\"../../stanford/spl/GTable.html\" title=\"class in stanford.spl\">GTable</a>&nbsp;table)</code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTableEvent.html#GTableEvent-stanford.spl.GTable-int-int-\">GTableEvent</a></span>(<a href=\"../../stanford/spl/GTable.html\" title=\"class in stanford.spl\">GTable</a>&nbsp;table,\n           int&nbsp;row,\n           int&nbsp;col)</code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTableEvent.html#GTableEvent-stanford.spl.GTable-int-int-java.lang.String-\">GTableEvent</a></span>(<a href=\"../../stanford/spl/GTable.html\" title=\"class in stanford.spl\">GTable</a>&nbsp;table,\n           int&nbsp;row,\n           int&nbsp;col,\n           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTableEvent.html#getColumn--\">getColumn</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTableEvent.html#getRow--\">getRow</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../stanford/spl/GTable.html\" title=\"class in stanford.spl\">GTable</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTableEvent.html#getSource--\">getSource</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTableEvent.html#getValue--\">getValue</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTableEvent-stanford.spl.GTable-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>GTableEvent</h4>\n<pre>public&nbsp;GTableEvent(<a href=\"../../stanford/spl/GTable.html\" title=\"class in stanford.spl\">GTable</a>&nbsp;table)</pre>\n</li>\n</ul>\n<a name=\"GTableEvent-stanford.spl.GTable-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>GTableEvent</h4>\n<pre>public&nbsp;GTableEvent(<a href=\"../../stanford/spl/GTable.html\" title=\"class in stanford.spl\">GTable</a>&nbsp;table,\n                   int&nbsp;row,\n                   int&nbsp;col)</pre>\n</li>\n</ul>\n<a name=\"GTableEvent-stanford.spl.GTable-int-int-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTableEvent</h4>\n<pre>public&nbsp;GTableEvent(<a href=\"../../stanford/spl/GTable.html\" title=\"class in stanford.spl\">GTable</a>&nbsp;table,\n                   int&nbsp;row,\n                   int&nbsp;col,\n                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;value)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"getColumn--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getColumn</h4>\n<pre>public&nbsp;int&nbsp;getColumn()</pre>\n</li>\n</ul>\n<a name=\"getRow--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getRow</h4>\n<pre>public&nbsp;int&nbsp;getRow()</pre>\n</li>\n</ul>\n<a name=\"getSource--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSource</h4>\n<pre>public&nbsp;<a href=\"../../stanford/spl/GTable.html\" title=\"class in stanford.spl\">GTable</a>&nbsp;getSource()</pre>\n</li>\n</ul>\n<a name=\"getValue--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>getValue</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getValue()</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTableAdapter.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTableListener.html\" title=\"interface in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTableEvent.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTableEvent.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTableListener.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTableListener</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTableListener\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":6,\"i1\":6,\"i2\":6,\"i3\":6,\"i4\":6,\"i5\":6,\"i6\":6};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],4:[\"t3\",\"Abstract Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTableEvent.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTextArea.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTableListener.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTableListener.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Interface GTableListener\" class=\"title\">Interface GTableListener</h2>\n</div>\n<div class=\"contentContainer\">\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Known Implementing Classes:</dt>\n<dd><a href=\"../../stanford/spl/GTableAdapter.html\" title=\"class in stanford.spl\">GTableAdapter</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public interface <span class=\"typeNameLabel\">GTableListener</span></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t3\" class=\"tableTab\"><span><a href=\"javascript:show(4);\">Abstract Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTableListener.html#tableCopy-stanford.spl.GTableEvent-\">tableCopy</a></span>(<a href=\"../../stanford/spl/GTableEvent.html\" title=\"class in stanford.spl\">GTableEvent</a>&nbsp;event)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTableListener.html#tableCut-stanford.spl.GTableEvent-\">tableCut</a></span>(<a href=\"../../stanford/spl/GTableEvent.html\" title=\"class in stanford.spl\">GTableEvent</a>&nbsp;event)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTableListener.html#tableEditBegin-stanford.spl.GTableEvent-\">tableEditBegin</a></span>(<a href=\"../../stanford/spl/GTableEvent.html\" title=\"class in stanford.spl\">GTableEvent</a>&nbsp;event)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTableListener.html#tablePaste-stanford.spl.GTableEvent-\">tablePaste</a></span>(<a href=\"../../stanford/spl/GTableEvent.html\" title=\"class in stanford.spl\">GTableEvent</a>&nbsp;event)</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTableListener.html#tableReplaceBegin-stanford.spl.GTableEvent-\">tableReplaceBegin</a></span>(<a href=\"../../stanford/spl/GTableEvent.html\" title=\"class in stanford.spl\">GTableEvent</a>&nbsp;event)</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTableListener.html#tableSelected-stanford.spl.GTableEvent-\">tableSelected</a></span>(<a href=\"../../stanford/spl/GTableEvent.html\" title=\"class in stanford.spl\">GTableEvent</a>&nbsp;event)</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTableListener.html#tableUpdated-stanford.spl.GTableEvent-\">tableUpdated</a></span>(<a href=\"../../stanford/spl/GTableEvent.html\" title=\"class in stanford.spl\">GTableEvent</a>&nbsp;event)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"tableCopy-stanford.spl.GTableEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>tableCopy</h4>\n<pre>void&nbsp;tableCopy(<a href=\"../../stanford/spl/GTableEvent.html\" title=\"class in stanford.spl\">GTableEvent</a>&nbsp;event)</pre>\n</li>\n</ul>\n<a name=\"tableCut-stanford.spl.GTableEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>tableCut</h4>\n<pre>void&nbsp;tableCut(<a href=\"../../stanford/spl/GTableEvent.html\" title=\"class in stanford.spl\">GTableEvent</a>&nbsp;event)</pre>\n</li>\n</ul>\n<a name=\"tableEditBegin-stanford.spl.GTableEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>tableEditBegin</h4>\n<pre>void&nbsp;tableEditBegin(<a href=\"../../stanford/spl/GTableEvent.html\" title=\"class in stanford.spl\">GTableEvent</a>&nbsp;event)</pre>\n</li>\n</ul>\n<a name=\"tablePaste-stanford.spl.GTableEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>tablePaste</h4>\n<pre>void&nbsp;tablePaste(<a href=\"../../stanford/spl/GTableEvent.html\" title=\"class in stanford.spl\">GTableEvent</a>&nbsp;event)</pre>\n</li>\n</ul>\n<a name=\"tableReplaceBegin-stanford.spl.GTableEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>tableReplaceBegin</h4>\n<pre>void&nbsp;tableReplaceBegin(<a href=\"../../stanford/spl/GTableEvent.html\" title=\"class in stanford.spl\">GTableEvent</a>&nbsp;event)</pre>\n</li>\n</ul>\n<a name=\"tableSelected-stanford.spl.GTableEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>tableSelected</h4>\n<pre>void&nbsp;tableSelected(<a href=\"../../stanford/spl/GTableEvent.html\" title=\"class in stanford.spl\">GTableEvent</a>&nbsp;event)</pre>\n</li>\n</ul>\n<a name=\"tableUpdated-stanford.spl.GTableEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>tableUpdated</h4>\n<pre>void&nbsp;tableUpdated(<a href=\"../../stanford/spl/GTableEvent.html\" title=\"class in stanford.spl\">GTableEvent</a>&nbsp;event)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTableEvent.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTextArea.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTableListener.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTableListener.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTable_autofitColumnWidths.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTable_autofitColumnWidths</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTable_autofitColumnWidths\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_clear.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_autofitColumnWidths.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_autofitColumnWidths.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTable_autofitColumnWidths\" class=\"title\">Class GTable_autofitColumnWidths</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTable_autofitColumnWidths</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTable_autofitColumnWidths</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_autofitColumnWidths.html#GTable_autofitColumnWidths--\">GTable_autofitColumnWidths</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_autofitColumnWidths.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTable_autofitColumnWidths--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTable_autofitColumnWidths</h4>\n<pre>public&nbsp;GTable_autofitColumnWidths()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_clear.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_autofitColumnWidths.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_autofitColumnWidths.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTable_clear.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTable_clear</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTable_clear\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_autofitColumnWidths.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_clearFormatting.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_clear.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_clear.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTable_clear\" class=\"title\">Class GTable_clear</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTable_clear</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTable_clear</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_clear.html#GTable_clear--\">GTable_clear</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_clear.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTable_clear--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTable_clear</h4>\n<pre>public&nbsp;GTable_clear()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_autofitColumnWidths.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_clearFormatting.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_clear.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_clear.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTable_clearFormatting.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTable_clearFormatting</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTable_clearFormatting\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_clear.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_create.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_clearFormatting.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_clearFormatting.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTable_clearFormatting\" class=\"title\">Class GTable_clearFormatting</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTable_clearFormatting</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTable_clearFormatting</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_clearFormatting.html#GTable_clearFormatting--\">GTable_clearFormatting</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_clearFormatting.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTable_clearFormatting--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTable_clearFormatting</h4>\n<pre>public&nbsp;GTable_clearFormatting()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_clear.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_create.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_clearFormatting.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_clearFormatting.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTable_create.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTable_create</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTable_create\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_clearFormatting.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_get.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_create.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_create.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTable_create\" class=\"title\">Class GTable_create</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTable_create</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTable_create</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_create.html#GTable_create--\">GTable_create</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_create.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;scanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTable_create--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTable_create</h4>\n<pre>public&nbsp;GTable_create()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;scanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_clearFormatting.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_get.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_create.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_create.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTable_get.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTable_get</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTable_get\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_create.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_getColumnWidth.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_get.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_get.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTable_get\" class=\"title\">Class GTable_get</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTable_get</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTable_get</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_get.html#GTable_get--\">GTable_get</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_get.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTable_get--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTable_get</h4>\n<pre>public&nbsp;GTable_get()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_create.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_getColumnWidth.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_get.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_get.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTable_getColumnWidth.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTable_getColumnWidth</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTable_getColumnWidth\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_get.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_getSelection.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_getColumnWidth.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_getColumnWidth.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTable_getColumnWidth\" class=\"title\">Class GTable_getColumnWidth</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTable_getColumnWidth</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTable_getColumnWidth</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_getColumnWidth.html#GTable_getColumnWidth--\">GTable_getColumnWidth</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_getColumnWidth.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTable_getColumnWidth--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTable_getColumnWidth</h4>\n<pre>public&nbsp;GTable_getColumnWidth()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_get.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_getSelection.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_getColumnWidth.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_getColumnWidth.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTable_getSelection.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTable_getSelection</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTable_getSelection\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_getColumnWidth.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_resize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_getSelection.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_getSelection.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTable_getSelection\" class=\"title\">Class GTable_getSelection</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTable_getSelection</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTable_getSelection</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_getSelection.html#GTable_getSelection--\">GTable_getSelection</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_getSelection.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTable_getSelection--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTable_getSelection</h4>\n<pre>public&nbsp;GTable_getSelection()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_getColumnWidth.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_resize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_getSelection.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_getSelection.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTable_resize.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTable_resize</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTable_resize\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_getSelection.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_select.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_resize.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_resize.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTable_resize\" class=\"title\">Class GTable_resize</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTable_resize</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTable_resize</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_resize.html#GTable_resize--\">GTable_resize</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_resize.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTable_resize--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTable_resize</h4>\n<pre>public&nbsp;GTable_resize()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_getSelection.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_select.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_resize.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_resize.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTable_select.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTable_select</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTable_select\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_resize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_set.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_select.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_select.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTable_select\" class=\"title\">Class GTable_select</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTable_select</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTable_select</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_select.html#GTable_select--\">GTable_select</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_select.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTable_select--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTable_select</h4>\n<pre>public&nbsp;GTable_select()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_resize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_set.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_select.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_select.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTable_set.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTable_set</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTable_set\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_select.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setCellAlignment.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_set.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_set.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTable_set\" class=\"title\">Class GTable_set</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTable_set</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTable_set</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_set.html#GTable_set--\">GTable_set</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_set.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTable_set--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTable_set</h4>\n<pre>public&nbsp;GTable_set()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_select.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setCellAlignment.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_set.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_set.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTable_setCellAlignment.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTable_setCellAlignment</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTable_setCellAlignment\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_set.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setCellBackground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setCellAlignment.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setCellAlignment.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTable_setCellAlignment\" class=\"title\">Class GTable_setCellAlignment</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTable_setCellAlignment</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTable_setCellAlignment</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setCellAlignment.html#GTable_setCellAlignment--\">GTable_setCellAlignment</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setCellAlignment.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;scanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTable_setCellAlignment--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTable_setCellAlignment</h4>\n<pre>public&nbsp;GTable_setCellAlignment()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;scanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_set.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setCellBackground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setCellAlignment.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setCellAlignment.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTable_setCellBackground.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTable_setCellBackground</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTable_setCellBackground\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setCellAlignment.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setCellFont.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setCellBackground.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setCellBackground.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTable_setCellBackground\" class=\"title\">Class GTable_setCellBackground</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTable_setCellBackground</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTable_setCellBackground</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setCellBackground.html#GTable_setCellBackground--\">GTable_setCellBackground</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setCellBackground.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;scanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTable_setCellBackground--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTable_setCellBackground</h4>\n<pre>public&nbsp;GTable_setCellBackground()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;scanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setCellAlignment.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setCellFont.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setCellBackground.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setCellBackground.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTable_setCellFont.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTable_setCellFont</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTable_setCellFont\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setCellBackground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setCellForeground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setCellFont.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setCellFont.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTable_setCellFont\" class=\"title\">Class GTable_setCellFont</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTable_setCellFont</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTable_setCellFont</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setCellFont.html#GTable_setCellFont--\">GTable_setCellFont</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setCellFont.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;scanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTable_setCellFont--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTable_setCellFont</h4>\n<pre>public&nbsp;GTable_setCellFont()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;scanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setCellBackground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setCellForeground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setCellFont.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setCellFont.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTable_setCellForeground.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTable_setCellForeground</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTable_setCellForeground\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setCellFont.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setColumnAlignment.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setCellForeground.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setCellForeground.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTable_setCellForeground\" class=\"title\">Class GTable_setCellForeground</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTable_setCellForeground</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTable_setCellForeground</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setCellForeground.html#GTable_setCellForeground--\">GTable_setCellForeground</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setCellForeground.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;scanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTable_setCellForeground--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTable_setCellForeground</h4>\n<pre>public&nbsp;GTable_setCellForeground()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;scanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setCellFont.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setColumnAlignment.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setCellForeground.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setCellForeground.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTable_setColumnAlignment.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTable_setColumnAlignment</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTable_setColumnAlignment\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setCellForeground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setColumnBackground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setColumnAlignment.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setColumnAlignment.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTable_setColumnAlignment\" class=\"title\">Class GTable_setColumnAlignment</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTable_setColumnAlignment</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTable_setColumnAlignment</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setColumnAlignment.html#GTable_setColumnAlignment--\">GTable_setColumnAlignment</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setColumnAlignment.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;scanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTable_setColumnAlignment--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTable_setColumnAlignment</h4>\n<pre>public&nbsp;GTable_setColumnAlignment()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;scanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setCellForeground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setColumnBackground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setColumnAlignment.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setColumnAlignment.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTable_setColumnBackground.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTable_setColumnBackground</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTable_setColumnBackground\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setColumnAlignment.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setColumnFont.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setColumnBackground.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setColumnBackground.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTable_setColumnBackground\" class=\"title\">Class GTable_setColumnBackground</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTable_setColumnBackground</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTable_setColumnBackground</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setColumnBackground.html#GTable_setColumnBackground--\">GTable_setColumnBackground</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setColumnBackground.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;scanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTable_setColumnBackground--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTable_setColumnBackground</h4>\n<pre>public&nbsp;GTable_setColumnBackground()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;scanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setColumnAlignment.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setColumnFont.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setColumnBackground.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setColumnBackground.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTable_setColumnFont.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTable_setColumnFont</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTable_setColumnFont\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setColumnBackground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setColumnForeground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setColumnFont.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setColumnFont.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTable_setColumnFont\" class=\"title\">Class GTable_setColumnFont</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTable_setColumnFont</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTable_setColumnFont</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setColumnFont.html#GTable_setColumnFont--\">GTable_setColumnFont</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setColumnFont.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;scanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTable_setColumnFont--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTable_setColumnFont</h4>\n<pre>public&nbsp;GTable_setColumnFont()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;scanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setColumnBackground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setColumnForeground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setColumnFont.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setColumnFont.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTable_setColumnForeground.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTable_setColumnForeground</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTable_setColumnForeground\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setColumnFont.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setColumnHeaderStyle.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setColumnForeground.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setColumnForeground.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTable_setColumnForeground\" class=\"title\">Class GTable_setColumnForeground</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTable_setColumnForeground</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTable_setColumnForeground</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setColumnForeground.html#GTable_setColumnForeground--\">GTable_setColumnForeground</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setColumnForeground.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;scanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTable_setColumnForeground--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTable_setColumnForeground</h4>\n<pre>public&nbsp;GTable_setColumnForeground()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;scanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setColumnFont.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setColumnHeaderStyle.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setColumnForeground.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setColumnForeground.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTable_setColumnHeaderStyle.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTable_setColumnHeaderStyle</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTable_setColumnHeaderStyle\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setColumnForeground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setColumnWidth.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setColumnHeaderStyle.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setColumnHeaderStyle.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTable_setColumnHeaderStyle\" class=\"title\">Class GTable_setColumnHeaderStyle</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTable_setColumnHeaderStyle</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTable_setColumnHeaderStyle</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setColumnHeaderStyle.html#GTable_setColumnHeaderStyle--\">GTable_setColumnHeaderStyle</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setColumnHeaderStyle.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTable_setColumnHeaderStyle--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTable_setColumnHeaderStyle</h4>\n<pre>public&nbsp;GTable_setColumnHeaderStyle()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setColumnForeground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setColumnWidth.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setColumnHeaderStyle.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setColumnHeaderStyle.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTable_setColumnWidth.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTable_setColumnWidth</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTable_setColumnWidth\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setColumnHeaderStyle.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setEditable.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setColumnWidth.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setColumnWidth.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTable_setColumnWidth\" class=\"title\">Class GTable_setColumnWidth</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTable_setColumnWidth</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTable_setColumnWidth</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setColumnWidth.html#GTable_setColumnWidth--\">GTable_setColumnWidth</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setColumnWidth.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTable_setColumnWidth--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTable_setColumnWidth</h4>\n<pre>public&nbsp;GTable_setColumnWidth()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setColumnHeaderStyle.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setEditable.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setColumnWidth.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setColumnWidth.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTable_setEditable.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTable_setEditable</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTable_setEditable\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setColumnWidth.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setEditorValue.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setEditable.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setEditable.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTable_setEditable\" class=\"title\">Class GTable_setEditable</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTable_setEditable</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTable_setEditable</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setEditable.html#GTable_setEditable--\">GTable_setEditable</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setEditable.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTable_setEditable--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTable_setEditable</h4>\n<pre>public&nbsp;GTable_setEditable()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setColumnWidth.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setEditorValue.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setEditable.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setEditable.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTable_setEditorValue.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTable_setEditorValue</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTable_setEditorValue\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setEditable.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setEventEnabled.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setEditorValue.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setEditorValue.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTable_setEditorValue\" class=\"title\">Class GTable_setEditorValue</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTable_setEditorValue</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTable_setEditorValue</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setEditorValue.html#GTable_setEditorValue--\">GTable_setEditorValue</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setEditorValue.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTable_setEditorValue--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTable_setEditorValue</h4>\n<pre>public&nbsp;GTable_setEditorValue()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setEditable.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setEventEnabled.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setEditorValue.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setEditorValue.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTable_setEventEnabled.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTable_setEventEnabled</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTable_setEventEnabled\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setEditorValue.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setFont.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setEventEnabled.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setEventEnabled.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTable_setEventEnabled\" class=\"title\">Class GTable_setEventEnabled</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTable_setEventEnabled</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTable_setEventEnabled</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setEventEnabled.html#GTable_setEventEnabled--\">GTable_setEventEnabled</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setEventEnabled.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTable_setEventEnabled--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTable_setEventEnabled</h4>\n<pre>public&nbsp;GTable_setEventEnabled()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setEditorValue.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setFont.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setEventEnabled.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setEventEnabled.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTable_setFont.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTable_setFont</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTable_setFont\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setEventEnabled.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setHorizontalAlignment.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setFont.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setFont.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTable_setFont\" class=\"title\">Class GTable_setFont</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTable_setFont</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTable_setFont</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setFont.html#GTable_setFont--\">GTable_setFont</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setFont.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTable_setFont--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTable_setFont</h4>\n<pre>public&nbsp;GTable_setFont()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setEventEnabled.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setHorizontalAlignment.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setFont.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setFont.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTable_setHorizontalAlignment.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTable_setHorizontalAlignment</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTable_setHorizontalAlignment\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setFont.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setRowAlignment.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setHorizontalAlignment.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setHorizontalAlignment.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTable_setHorizontalAlignment\" class=\"title\">Class GTable_setHorizontalAlignment</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTable_setHorizontalAlignment</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTable_setHorizontalAlignment</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setHorizontalAlignment.html#GTable_setHorizontalAlignment--\">GTable_setHorizontalAlignment</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setHorizontalAlignment.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTable_setHorizontalAlignment--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTable_setHorizontalAlignment</h4>\n<pre>public&nbsp;GTable_setHorizontalAlignment()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setFont.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setRowAlignment.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setHorizontalAlignment.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setHorizontalAlignment.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTable_setRowAlignment.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTable_setRowAlignment</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTable_setRowAlignment\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setHorizontalAlignment.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setRowBackground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setRowAlignment.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setRowAlignment.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTable_setRowAlignment\" class=\"title\">Class GTable_setRowAlignment</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTable_setRowAlignment</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTable_setRowAlignment</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setRowAlignment.html#GTable_setRowAlignment--\">GTable_setRowAlignment</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setRowAlignment.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;scanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTable_setRowAlignment--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTable_setRowAlignment</h4>\n<pre>public&nbsp;GTable_setRowAlignment()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;scanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setHorizontalAlignment.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setRowBackground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setRowAlignment.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setRowAlignment.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTable_setRowBackground.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTable_setRowBackground</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTable_setRowBackground\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setRowAlignment.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setRowColumnHeadersVisible.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setRowBackground.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setRowBackground.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTable_setRowBackground\" class=\"title\">Class GTable_setRowBackground</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTable_setRowBackground</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTable_setRowBackground</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setRowBackground.html#GTable_setRowBackground--\">GTable_setRowBackground</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setRowBackground.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;scanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTable_setRowBackground--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTable_setRowBackground</h4>\n<pre>public&nbsp;GTable_setRowBackground()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;scanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setRowAlignment.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setRowColumnHeadersVisible.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setRowBackground.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setRowBackground.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTable_setRowColumnHeadersVisible.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTable_setRowColumnHeadersVisible</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTable_setRowColumnHeadersVisible\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setRowBackground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setRowFont.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setRowColumnHeadersVisible.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setRowColumnHeadersVisible.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTable_setRowColumnHeadersVisible\" class=\"title\">Class GTable_setRowColumnHeadersVisible</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTable_setRowColumnHeadersVisible</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTable_setRowColumnHeadersVisible</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setRowColumnHeadersVisible.html#GTable_setRowColumnHeadersVisible--\">GTable_setRowColumnHeadersVisible</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setRowColumnHeadersVisible.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTable_setRowColumnHeadersVisible--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTable_setRowColumnHeadersVisible</h4>\n<pre>public&nbsp;GTable_setRowColumnHeadersVisible()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setRowBackground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setRowFont.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setRowColumnHeadersVisible.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setRowColumnHeadersVisible.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTable_setRowFont.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTable_setRowFont</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTable_setRowFont\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setRowColumnHeadersVisible.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setRowForeground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setRowFont.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setRowFont.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTable_setRowFont\" class=\"title\">Class GTable_setRowFont</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTable_setRowFont</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTable_setRowFont</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setRowFont.html#GTable_setRowFont--\">GTable_setRowFont</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setRowFont.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;scanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTable_setRowFont--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTable_setRowFont</h4>\n<pre>public&nbsp;GTable_setRowFont()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;scanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setRowColumnHeadersVisible.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTable_setRowForeground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setRowFont.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setRowFont.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTable_setRowForeground.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTable_setRowForeground</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTable_setRowForeground\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setRowFont.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTableAdapter.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setRowForeground.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setRowForeground.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTable_setRowForeground\" class=\"title\">Class GTable_setRowForeground</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTable_setRowForeground</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTable_setRowForeground</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setRowForeground.html#GTable_setRowForeground--\">GTable_setRowForeground</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTable_setRowForeground.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;scanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTable_setRowForeground--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTable_setRowForeground</h4>\n<pre>public&nbsp;GTable_setRowForeground()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;scanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTable_setRowFont.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTableAdapter.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTable_setRowForeground.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTable_setRowForeground.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTextArea.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTextArea</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTextArea\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTableListener.html\" title=\"interface in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTextArea_create.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTextArea.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTextArea.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTextArea\" class=\"title\">Class GTextArea</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">acm.graphics.GObject</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/GInteractor.html\" title=\"class in stanford.spl\">stanford.spl.GInteractor</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTextArea</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"../../acm/graphics/GResizable.html\" title=\"interface in acm.graphics\">GResizable</a>, <a href=\"../../acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true\" title=\"class or interface in java.lang\">Cloneable</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTextArea</span>\nextends <a href=\"../../stanford/spl/GInteractor.html\" title=\"class in stanford.spl\">GInteractor</a></pre>\n<div class=\"block\">The <code>GTextArea</code> class is a graphical object whose appearance\n consists of a rectangular area that can display text.</div>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#stanford.spl.GTextArea\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTextArea.html#DEFAULT_BG_COLOR\">DEFAULT_BG_COLOR</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTextArea.html#DEFAULT_FONT\">DEFAULT_FONT</a></span></code>\n<div class=\"block\">The default font used to display text.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTextArea.html#GTextArea-double-double-\">GTextArea</a></span>(double&nbsp;width,\n         double&nbsp;height)</code>\n<div class=\"block\">Creates a new <code>GTextArea</code> object with its anchor point at the\n specified position.</div>\n</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTextArea.html#contains-double-double-\">contains</a></span>(double&nbsp;x,\n        double&nbsp;y)</code>\n<div class=\"block\">Checks to see whether a point is inside the object.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTextArea.html#getFont--\">getFont</a></span>()</code>\n<div class=\"block\">Returns the font used by this <code>GTextArea</code>.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTextArea.html#getText--\">getText</a></span>()</code>\n<div class=\"block\">Returns the text displayed by this object, encoded in Base64.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTextArea.html#setBackgroundColor-java.awt.Color-\">setBackgroundColor</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</code>\n<div class=\"block\">Sets the background color of this text area.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTextArea.html#setEditable-boolean-\">setEditable</a></span>(boolean&nbsp;flag)</code>\n<div class=\"block\">Sets whether this text area is editable.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTextArea.html#setFont-java.awt.Font-\">setFont</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a>&nbsp;font)</code>\n<div class=\"block\">Changes the font used in the <code>GTextArea</code>.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTextArea.html#setFont-java.lang.String-\">setFont</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;str)</code>\n<div class=\"block\">Changes the font used to display the <code>GTextArea</code> as specified by\n the string <code>str</code>, which is interpreted in the style of\n <code>Font.decode</code>.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTextArea.html#setText-java.lang.String-\">setText</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;str)</code>\n<div class=\"block\">Changes the text displayed by this <code>GTextArea</code> object.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.GInteractor\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/GInteractor.html\" title=\"class in stanford.spl\">GInteractor</a></h3>\n<code><a href=\"../../stanford/spl/GInteractor.html#getAccelerator--\">getAccelerator</a>, <a href=\"../../stanford/spl/GInteractor.html#getActionCommand--\">getActionCommand</a>, <a href=\"../../stanford/spl/GInteractor.html#getBounds--\">getBounds</a>, <a href=\"../../stanford/spl/GInteractor.html#getFontString--\">getFontString</a>, <a href=\"../../stanford/spl/GInteractor.html#getIcon--\">getIcon</a>, <a href=\"../../stanford/spl/GInteractor.html#getInteractor--\">getInteractor</a>, <a href=\"../../stanford/spl/GInteractor.html#getMnemonic--\">getMnemonic</a>, <a href=\"../../stanford/spl/GInteractor.html#isEnabled--\">isEnabled</a>, <a href=\"../../stanford/spl/GInteractor.html#paint2d-java.awt.Graphics2D-\">paint2d</a>, <a href=\"../../stanford/spl/GInteractor.html#paintObject-java.awt.Graphics-\">paintObject</a>, <a href=\"../../stanford/spl/GInteractor.html#repaint--\">repaint</a>, <a href=\"../../stanford/spl/GInteractor.html#requestFocus--\">requestFocus</a>, <a href=\"../../stanford/spl/GInteractor.html#setAccelerator-java.lang.String-\">setAccelerator</a>, <a href=\"../../stanford/spl/GInteractor.html#setActionCommand-java.lang.String-\">setActionCommand</a>, <a href=\"../../stanford/spl/GInteractor.html#setBackground-java.awt.Color-\">setBackground</a>, <a href=\"../../stanford/spl/GInteractor.html#setBounds-double-double-double-double-\">setBounds</a>, <a href=\"../../stanford/spl/GInteractor.html#setBounds-acm.graphics.GRectangle-\">setBounds</a>, <a href=\"../../stanford/spl/GInteractor.html#setColor-java.awt.Color-\">setColor</a>, <a href=\"../../stanford/spl/GInteractor.html#setEnabled-boolean-\">setEnabled</a>, <a href=\"../../stanford/spl/GInteractor.html#setForeground-java.awt.Color-\">setForeground</a>, <a href=\"../../stanford/spl/GInteractor.html#setIcon-javax.swing.Icon-\">setIcon</a>, <a href=\"../../stanford/spl/GInteractor.html#setIcon-java.lang.String-\">setIcon</a>, <a href=\"../../stanford/spl/GInteractor.html#setLocation-double-double-\">setLocation</a>, <a href=\"../../stanford/spl/GInteractor.html#setMnemonic-char-\">setMnemonic</a>, <a href=\"../../stanford/spl/GInteractor.html#setMnemonic-int-\">setMnemonic</a>, <a href=\"../../stanford/spl/GInteractor.html#setParent-acm.graphics.GContainer-\">setParent</a>, <a href=\"../../stanford/spl/GInteractor.html#setSize-double-double-\">setSize</a>, <a href=\"../../stanford/spl/GInteractor.html#setSize-acm.graphics.GDimension-\">setSize</a>, <a href=\"../../stanford/spl/GInteractor.html#setTooltip-java.lang.String-\">setTooltip</a>, <a href=\"../../stanford/spl/GInteractor.html#setVisible-boolean-\">setVisible</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.graphics.GObject\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.graphics.<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></h3>\n<code><a href=\"../../acm/graphics/GObject.html#addActionListener-java.awt.event.ActionListener-\">addActionListener</a>, <a href=\"../../acm/graphics/GObject.html#addMouseListener-java.awt.event.MouseListener-\">addMouseListener</a>, <a href=\"../../acm/graphics/GObject.html#addMouseMotionListener-java.awt.event.MouseMotionListener-\">addMouseMotionListener</a>, <a href=\"../../acm/graphics/GObject.html#areMouseListenersEnabled--\">areMouseListenersEnabled</a>, <a href=\"../../acm/graphics/GObject.html#clone--\">clone</a>, <a href=\"../../acm/graphics/GObject.html#colorName-java.awt.Color-\">colorName</a>, <a href=\"../../acm/graphics/GObject.html#colorName-int-\">colorName</a>, <a href=\"../../acm/graphics/GObject.html#colorNameFriendly-int-\">colorNameFriendly</a>, <a href=\"../../acm/graphics/GObject.html#contains-acm.graphics.GPoint-\">contains</a>, <a href=\"../../acm/graphics/GObject.html#createTransformedGraphics-java.awt.Graphics-\">createTransformedGraphics</a>, <a href=\"../../acm/graphics/GObject.html#fireActionEvent-java.awt.event.ActionEvent-\">fireActionEvent</a>, <a href=\"../../acm/graphics/GObject.html#fireActionEvent-java.lang.String-\">fireActionEvent</a>, <a href=\"../../acm/graphics/GObject.html#fireMouseListeners-java.awt.event.MouseEvent-\">fireMouseListeners</a>, <a href=\"../../acm/graphics/GObject.html#getBottomY--\">getBottomY</a>, <a href=\"../../acm/graphics/GObject.html#getCenterLocation--\">getCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#getCenterX--\">getCenterX</a>, <a href=\"../../acm/graphics/GObject.html#getCenterY--\">getCenterY</a>, <a href=\"../../acm/graphics/GObject.html#getColor--\">getColor</a>, <a href=\"../../acm/graphics/GObject.html#getComponent--\">getComponent</a>, <a href=\"../../acm/graphics/GObject.html#getHeight--\">getHeight</a>, <a href=\"../../acm/graphics/GObject.html#getLineWidth--\">getLineWidth</a>, <a href=\"../../acm/graphics/GObject.html#getLocation--\">getLocation</a>, <a href=\"../../acm/graphics/GObject.html#getMatrix--\">getMatrix</a>, <a href=\"../../acm/graphics/GObject.html#getObjectColor--\">getObjectColor</a>, <a href=\"../../acm/graphics/GObject.html#getParent--\">getParent</a>, <a href=\"../../acm/graphics/GObject.html#getRightX--\">getRightX</a>, <a href=\"../../acm/graphics/GObject.html#getSize--\">getSize</a>, <a href=\"../../acm/graphics/GObject.html#getWidth--\">getWidth</a>, <a href=\"../../acm/graphics/GObject.html#getX--\">getX</a>, <a href=\"../../acm/graphics/GObject.html#getY--\">getY</a>, <a href=\"../../acm/graphics/GObject.html#intersects-acm.graphics.GObject-\">intersects</a>, <a href=\"../../acm/graphics/GObject.html#isAntiAliasing--\">isAntiAliasing</a>, <a href=\"../../acm/graphics/GObject.html#isVisible--\">isVisible</a>, <a href=\"../../acm/graphics/GObject.html#move-double-double-\">move</a>, <a href=\"../../acm/graphics/GObject.html#movePolar-double-double-\">movePolar</a>, <a href=\"../../acm/graphics/GObject.html#paint-java.awt.Graphics-\">paint</a>, <a href=\"../../acm/graphics/GObject.html#paramString--\">paramString</a>, <a href=\"../../acm/graphics/GObject.html#pause-double-\">pause</a>, <a href=\"../../acm/graphics/GObject.html#removeActionListener-java.awt.event.ActionListener-\">removeActionListener</a>, <a href=\"../../acm/graphics/GObject.html#removeMouseListener-java.awt.event.MouseListener-\">removeMouseListener</a>, <a href=\"../../acm/graphics/GObject.html#removeMouseMotionListener-java.awt.event.MouseMotionListener-\">removeMouseMotionListener</a>, <a href=\"../../acm/graphics/GObject.html#rotate-double-\">rotate</a>, <a href=\"../../acm/graphics/GObject.html#scale-double-\">scale</a>, <a href=\"../../acm/graphics/GObject.html#scale-double-double-\">scale</a>, <a href=\"../../acm/graphics/GObject.html#sendBackward--\">sendBackward</a>, <a href=\"../../acm/graphics/GObject.html#sendForward--\">sendForward</a>, <a href=\"../../acm/graphics/GObject.html#sendToBack--\">sendToBack</a>, <a href=\"../../acm/graphics/GObject.html#sendToFront--\">sendToFront</a>, <a href=\"../../acm/graphics/GObject.html#setAntiAliasing-boolean-\">setAntiAliasing</a>, <a href=\"../../acm/graphics/GObject.html#setBottomY-double-\">setBottomY</a>, <a href=\"../../acm/graphics/GObject.html#setCenterLocation-double-double-\">setCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#setCenterLocation-acm.graphics.GPoint-\">setCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#setCenterX-double-\">setCenterX</a>, <a href=\"../../acm/graphics/GObject.html#setCenterY-double-\">setCenterY</a>, <a href=\"../../acm/graphics/GObject.html#setLineWidth-double-\">setLineWidth</a>, <a href=\"../../acm/graphics/GObject.html#setLocation-acm.graphics.GPoint-\">setLocation</a>, <a href=\"../../acm/graphics/GObject.html#setRightX-double-\">setRightX</a>, <a href=\"../../acm/graphics/GObject.html#setX-double-\">setX</a>, <a href=\"../../acm/graphics/GObject.html#setY-double-\">setY</a>, <a href=\"../../acm/graphics/GObject.html#start--\">start</a>, <a href=\"../../acm/graphics/GObject.html#start-java.lang.String:A-\">start</a>, <a href=\"../../acm/graphics/GObject.html#toString--\">toString</a>, <a href=\"../../acm/graphics/GObject.html#updateEnabledList--\">updateEnabledList</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"DEFAULT_FONT\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>DEFAULT_FONT</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a> DEFAULT_FONT</pre>\n<div class=\"block\">The default font used to display text.  You can change the font by\n invoking the <a href=\"#setFont(Font)\"><code>setFont</code></a> method.</div>\n</li>\n</ul>\n<a name=\"DEFAULT_BG_COLOR\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>DEFAULT_BG_COLOR</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a> DEFAULT_BG_COLOR</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTextArea-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTextArea</h4>\n<pre>public&nbsp;GTextArea(double&nbsp;width,\n                 double&nbsp;height)</pre>\n<div class=\"block\">Creates a new <code>GTextArea</code> object with its anchor point at the\n specified position.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>width</code> - The width of this <code>GTextArea</code> in pixels</dd>\n<dd><code>height</code> - The height of this <code>GTextArea</code> in pixels</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"setBackgroundColor-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setBackgroundColor</h4>\n<pre>public&nbsp;void&nbsp;setBackgroundColor(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;color)</pre>\n<div class=\"block\">Sets the background color of this text area.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>color</code> - The background color to be used for this text area</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setFont-java.awt.Font-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setFont</h4>\n<pre>public&nbsp;void&nbsp;setFont(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a>&nbsp;font)</pre>\n<div class=\"block\">Changes the font used in the <code>GTextArea</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../stanford/spl/GInteractor.html#setFont-java.awt.Font-\">setFont</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/GInteractor.html\" title=\"class in stanford.spl\">GInteractor</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>font</code> - A <code>Font</code> object indicating the new font</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setFont-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setFont</h4>\n<pre>public&nbsp;void&nbsp;setFont(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;str)</pre>\n<div class=\"block\">Changes the font used to display the <code>GTextArea</code> as specified by\n the string <code>str</code>, which is interpreted in the style of\n <code>Font.decode</code>.  The usual format of the font string is\n\n<pre>\n    family-style-size\n</pre>\n\n where both <code>style</code> and <code>size</code> are optional.\n If any of these parts are specified as an asterisk, the existing\n value is retained.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../stanford/spl/GInteractor.html#setFont-java.lang.String-\">setFont</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/GInteractor.html\" title=\"class in stanford.spl\">GInteractor</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>str</code> - A <code>String</code> specifying the new font</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getFont--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getFont</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a>&nbsp;getFont()</pre>\n<div class=\"block\">Returns the font used by this <code>GTextArea</code>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../stanford/spl/GInteractor.html#getFont--\">getFont</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/GInteractor.html\" title=\"class in stanford.spl\">GInteractor</a></code></dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The font in use by this object</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setText-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setText</h4>\n<pre>public&nbsp;void&nbsp;setText(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;str)</pre>\n<div class=\"block\">Changes the text displayed by this <code>GTextArea</code> object.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>str</code> - The new string to display</dd>\n</dl>\n</li>\n</ul>\n<a name=\"getText--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getText</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getText()</pre>\n<div class=\"block\">Returns the text displayed by this object, encoded in Base64.</div>\n<dl>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd>The text displayed by this object</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setEditable-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setEditable</h4>\n<pre>public&nbsp;void&nbsp;setEditable(boolean&nbsp;flag)</pre>\n<div class=\"block\">Sets whether this text area is editable.</div>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>flag</code> - true for editable</dd>\n</dl>\n</li>\n</ul>\n<a name=\"contains-double-double-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>contains</h4>\n<pre>public&nbsp;boolean&nbsp;contains(double&nbsp;x,\n                        double&nbsp;y)</pre>\n<div class=\"block\">Checks to see whether a point is inside the object.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#contains-double-double-\">contains</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>x</code> - The x-coordinate of the point being tested</dd>\n<dd><code>y</code> - The y-coordinate of the point being tested</dd>\n<dt><span class=\"returnLabel\">Returns:</span></dt>\n<dd><code>true</code> if the point (<code>x</code>,&nbsp;<code>y</code>)\n         is inside the object, and <code>false</code> otherwise</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTableListener.html\" title=\"interface in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTextArea_create.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTextArea.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTextArea.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTextArea_create.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTextArea_create</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTextArea_create\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTextArea.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTextArea_getText.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTextArea_create.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTextArea_create.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTextArea_create\" class=\"title\">Class GTextArea_create</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTextArea_create</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTextArea_create</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTextArea_create.html#GTextArea_create--\">GTextArea_create</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTextArea_create.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTextArea_create--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTextArea_create</h4>\n<pre>public&nbsp;GTextArea_create()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTextArea.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTextArea_getText.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTextArea_create.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTextArea_create.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTextArea_getText.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTextArea_getText</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTextArea_getText\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTextArea_create.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTextArea_setEditable.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTextArea_getText.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTextArea_getText.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTextArea_getText\" class=\"title\">Class GTextArea_getText</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTextArea_getText</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTextArea_getText</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTextArea_getText.html#GTextArea_getText--\">GTextArea_getText</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTextArea_getText.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;scanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTextArea_getText--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTextArea_getText</h4>\n<pre>public&nbsp;GTextArea_getText()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;scanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTextArea_create.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTextArea_setEditable.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTextArea_getText.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTextArea_getText.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTextArea_setEditable.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTextArea_setEditable</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTextArea_setEditable\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTextArea_getText.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTextArea_setFont.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTextArea_setEditable.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTextArea_setEditable.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTextArea_setEditable\" class=\"title\">Class GTextArea_setEditable</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTextArea_setEditable</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTextArea_setEditable</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTextArea_setEditable.html#GTextArea_setEditable--\">GTextArea_setEditable</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTextArea_setEditable.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;scanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTextArea_setEditable--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTextArea_setEditable</h4>\n<pre>public&nbsp;GTextArea_setEditable()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;scanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTextArea_getText.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTextArea_setFont.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTextArea_setEditable.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTextArea_setEditable.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTextArea_setFont.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTextArea_setFont</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTextArea_setFont\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTextArea_setEditable.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTextArea_setText.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTextArea_setFont.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTextArea_setFont.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTextArea_setFont\" class=\"title\">Class GTextArea_setFont</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTextArea_setFont</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTextArea_setFont</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTextArea_setFont.html#GTextArea_setFont--\">GTextArea_setFont</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTextArea_setFont.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;scanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTextArea_setFont--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTextArea_setFont</h4>\n<pre>public&nbsp;GTextArea_setFont()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;scanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTextArea_setEditable.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTextArea_setText.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTextArea_setFont.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTextArea_setFont.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTextArea_setText.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTextArea_setText</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTextArea_setText\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTextArea_setFont.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTextField.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTextArea_setText.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTextArea_setText.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTextArea_setText\" class=\"title\">Class GTextArea_setText</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTextArea_setText</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTextArea_setText</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTextArea_setText.html#GTextArea_setText--\">GTextArea_setText</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTextArea_setText.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;scanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTextArea_setText--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTextArea_setText</h4>\n<pre>public&nbsp;GTextArea_setText()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;scanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTextArea_setFont.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTextField.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTextArea_setText.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTextArea_setText.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTextField.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTextField</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTextField\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTextArea_setText.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTextField_isEditable.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTextField.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTextField.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#methods.inherited.from.class.stanford.spl.GInteractor\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li>Method</li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTextField\" class=\"title\">Class GTextField</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">acm.graphics.GObject</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/GInteractor.html\" title=\"class in stanford.spl\">stanford.spl.GInteractor</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTextField</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"../../acm/graphics/GResizable.html\" title=\"interface in acm.graphics\">GResizable</a>, <a href=\"../../acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true\" title=\"class or interface in java.lang\">Cloneable</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTextField</span>\nextends <a href=\"../../stanford/spl/GInteractor.html\" title=\"class in stanford.spl\">GInteractor</a></pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#stanford.spl.GTextField\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTextField.html#GTextField-int-java.awt.event.ActionListener-\">GTextField</a></span>(int&nbsp;paramInt,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;paramActionListener)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.GInteractor\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/GInteractor.html\" title=\"class in stanford.spl\">GInteractor</a></h3>\n<code><a href=\"../../stanford/spl/GInteractor.html#getAccelerator--\">getAccelerator</a>, <a href=\"../../stanford/spl/GInteractor.html#getActionCommand--\">getActionCommand</a>, <a href=\"../../stanford/spl/GInteractor.html#getBounds--\">getBounds</a>, <a href=\"../../stanford/spl/GInteractor.html#getFont--\">getFont</a>, <a href=\"../../stanford/spl/GInteractor.html#getFontString--\">getFontString</a>, <a href=\"../../stanford/spl/GInteractor.html#getIcon--\">getIcon</a>, <a href=\"../../stanford/spl/GInteractor.html#getInteractor--\">getInteractor</a>, <a href=\"../../stanford/spl/GInteractor.html#getMnemonic--\">getMnemonic</a>, <a href=\"../../stanford/spl/GInteractor.html#isEnabled--\">isEnabled</a>, <a href=\"../../stanford/spl/GInteractor.html#paint2d-java.awt.Graphics2D-\">paint2d</a>, <a href=\"../../stanford/spl/GInteractor.html#paintObject-java.awt.Graphics-\">paintObject</a>, <a href=\"../../stanford/spl/GInteractor.html#repaint--\">repaint</a>, <a href=\"../../stanford/spl/GInteractor.html#requestFocus--\">requestFocus</a>, <a href=\"../../stanford/spl/GInteractor.html#setAccelerator-java.lang.String-\">setAccelerator</a>, <a href=\"../../stanford/spl/GInteractor.html#setActionCommand-java.lang.String-\">setActionCommand</a>, <a href=\"../../stanford/spl/GInteractor.html#setBackground-java.awt.Color-\">setBackground</a>, <a href=\"../../stanford/spl/GInteractor.html#setBounds-double-double-double-double-\">setBounds</a>, <a href=\"../../stanford/spl/GInteractor.html#setBounds-acm.graphics.GRectangle-\">setBounds</a>, <a href=\"../../stanford/spl/GInteractor.html#setColor-java.awt.Color-\">setColor</a>, <a href=\"../../stanford/spl/GInteractor.html#setEnabled-boolean-\">setEnabled</a>, <a href=\"../../stanford/spl/GInteractor.html#setFont-java.awt.Font-\">setFont</a>, <a href=\"../../stanford/spl/GInteractor.html#setFont-java.lang.String-\">setFont</a>, <a href=\"../../stanford/spl/GInteractor.html#setForeground-java.awt.Color-\">setForeground</a>, <a href=\"../../stanford/spl/GInteractor.html#setIcon-javax.swing.Icon-\">setIcon</a>, <a href=\"../../stanford/spl/GInteractor.html#setIcon-java.lang.String-\">setIcon</a>, <a href=\"../../stanford/spl/GInteractor.html#setLocation-double-double-\">setLocation</a>, <a href=\"../../stanford/spl/GInteractor.html#setMnemonic-char-\">setMnemonic</a>, <a href=\"../../stanford/spl/GInteractor.html#setMnemonic-int-\">setMnemonic</a>, <a href=\"../../stanford/spl/GInteractor.html#setParent-acm.graphics.GContainer-\">setParent</a>, <a href=\"../../stanford/spl/GInteractor.html#setSize-double-double-\">setSize</a>, <a href=\"../../stanford/spl/GInteractor.html#setSize-acm.graphics.GDimension-\">setSize</a>, <a href=\"../../stanford/spl/GInteractor.html#setTooltip-java.lang.String-\">setTooltip</a>, <a href=\"../../stanford/spl/GInteractor.html#setVisible-boolean-\">setVisible</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.graphics.GObject\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.graphics.<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></h3>\n<code><a href=\"../../acm/graphics/GObject.html#addActionListener-java.awt.event.ActionListener-\">addActionListener</a>, <a href=\"../../acm/graphics/GObject.html#addMouseListener-java.awt.event.MouseListener-\">addMouseListener</a>, <a href=\"../../acm/graphics/GObject.html#addMouseMotionListener-java.awt.event.MouseMotionListener-\">addMouseMotionListener</a>, <a href=\"../../acm/graphics/GObject.html#areMouseListenersEnabled--\">areMouseListenersEnabled</a>, <a href=\"../../acm/graphics/GObject.html#clone--\">clone</a>, <a href=\"../../acm/graphics/GObject.html#colorName-java.awt.Color-\">colorName</a>, <a href=\"../../acm/graphics/GObject.html#colorName-int-\">colorName</a>, <a href=\"../../acm/graphics/GObject.html#colorNameFriendly-int-\">colorNameFriendly</a>, <a href=\"../../acm/graphics/GObject.html#contains-double-double-\">contains</a>, <a href=\"../../acm/graphics/GObject.html#contains-acm.graphics.GPoint-\">contains</a>, <a href=\"../../acm/graphics/GObject.html#createTransformedGraphics-java.awt.Graphics-\">createTransformedGraphics</a>, <a href=\"../../acm/graphics/GObject.html#fireActionEvent-java.awt.event.ActionEvent-\">fireActionEvent</a>, <a href=\"../../acm/graphics/GObject.html#fireActionEvent-java.lang.String-\">fireActionEvent</a>, <a href=\"../../acm/graphics/GObject.html#fireMouseListeners-java.awt.event.MouseEvent-\">fireMouseListeners</a>, <a href=\"../../acm/graphics/GObject.html#getBottomY--\">getBottomY</a>, <a href=\"../../acm/graphics/GObject.html#getCenterLocation--\">getCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#getCenterX--\">getCenterX</a>, <a href=\"../../acm/graphics/GObject.html#getCenterY--\">getCenterY</a>, <a href=\"../../acm/graphics/GObject.html#getColor--\">getColor</a>, <a href=\"../../acm/graphics/GObject.html#getComponent--\">getComponent</a>, <a href=\"../../acm/graphics/GObject.html#getHeight--\">getHeight</a>, <a href=\"../../acm/graphics/GObject.html#getLineWidth--\">getLineWidth</a>, <a href=\"../../acm/graphics/GObject.html#getLocation--\">getLocation</a>, <a href=\"../../acm/graphics/GObject.html#getMatrix--\">getMatrix</a>, <a href=\"../../acm/graphics/GObject.html#getObjectColor--\">getObjectColor</a>, <a href=\"../../acm/graphics/GObject.html#getParent--\">getParent</a>, <a href=\"../../acm/graphics/GObject.html#getRightX--\">getRightX</a>, <a href=\"../../acm/graphics/GObject.html#getSize--\">getSize</a>, <a href=\"../../acm/graphics/GObject.html#getWidth--\">getWidth</a>, <a href=\"../../acm/graphics/GObject.html#getX--\">getX</a>, <a href=\"../../acm/graphics/GObject.html#getY--\">getY</a>, <a href=\"../../acm/graphics/GObject.html#intersects-acm.graphics.GObject-\">intersects</a>, <a href=\"../../acm/graphics/GObject.html#isAntiAliasing--\">isAntiAliasing</a>, <a href=\"../../acm/graphics/GObject.html#isVisible--\">isVisible</a>, <a href=\"../../acm/graphics/GObject.html#move-double-double-\">move</a>, <a href=\"../../acm/graphics/GObject.html#movePolar-double-double-\">movePolar</a>, <a href=\"../../acm/graphics/GObject.html#paint-java.awt.Graphics-\">paint</a>, <a href=\"../../acm/graphics/GObject.html#paramString--\">paramString</a>, <a href=\"../../acm/graphics/GObject.html#pause-double-\">pause</a>, <a href=\"../../acm/graphics/GObject.html#removeActionListener-java.awt.event.ActionListener-\">removeActionListener</a>, <a href=\"../../acm/graphics/GObject.html#removeMouseListener-java.awt.event.MouseListener-\">removeMouseListener</a>, <a href=\"../../acm/graphics/GObject.html#removeMouseMotionListener-java.awt.event.MouseMotionListener-\">removeMouseMotionListener</a>, <a href=\"../../acm/graphics/GObject.html#rotate-double-\">rotate</a>, <a href=\"../../acm/graphics/GObject.html#scale-double-\">scale</a>, <a href=\"../../acm/graphics/GObject.html#scale-double-double-\">scale</a>, <a href=\"../../acm/graphics/GObject.html#sendBackward--\">sendBackward</a>, <a href=\"../../acm/graphics/GObject.html#sendForward--\">sendForward</a>, <a href=\"../../acm/graphics/GObject.html#sendToBack--\">sendToBack</a>, <a href=\"../../acm/graphics/GObject.html#sendToFront--\">sendToFront</a>, <a href=\"../../acm/graphics/GObject.html#setAntiAliasing-boolean-\">setAntiAliasing</a>, <a href=\"../../acm/graphics/GObject.html#setBottomY-double-\">setBottomY</a>, <a href=\"../../acm/graphics/GObject.html#setCenterLocation-double-double-\">setCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#setCenterLocation-acm.graphics.GPoint-\">setCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#setCenterX-double-\">setCenterX</a>, <a href=\"../../acm/graphics/GObject.html#setCenterY-double-\">setCenterY</a>, <a href=\"../../acm/graphics/GObject.html#setLineWidth-double-\">setLineWidth</a>, <a href=\"../../acm/graphics/GObject.html#setLocation-acm.graphics.GPoint-\">setLocation</a>, <a href=\"../../acm/graphics/GObject.html#setRightX-double-\">setRightX</a>, <a href=\"../../acm/graphics/GObject.html#setX-double-\">setX</a>, <a href=\"../../acm/graphics/GObject.html#setY-double-\">setY</a>, <a href=\"../../acm/graphics/GObject.html#start--\">start</a>, <a href=\"../../acm/graphics/GObject.html#start-java.lang.String:A-\">start</a>, <a href=\"../../acm/graphics/GObject.html#toString--\">toString</a>, <a href=\"../../acm/graphics/GObject.html#updateEnabledList--\">updateEnabledList</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTextField-int-java.awt.event.ActionListener-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTextField</h4>\n<pre>public&nbsp;GTextField(int&nbsp;paramInt,\n                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>&nbsp;paramActionListener)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTextArea_setText.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTextField_isEditable.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTextField.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTextField.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#methods.inherited.from.class.stanford.spl.GInteractor\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li>Method</li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTextField_isEditable.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTextField_isEditable</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTextField_isEditable\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTextField.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTextField_setEditable.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTextField_isEditable.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTextField_isEditable.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTextField_isEditable\" class=\"title\">Class GTextField_isEditable</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTextField_isEditable</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTextField_isEditable</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTextField_isEditable.html#GTextField_isEditable--\">GTextField_isEditable</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTextField_isEditable.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTextField_isEditable--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTextField_isEditable</h4>\n<pre>public&nbsp;GTextField_isEditable()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTextField.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTextField_setEditable.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTextField_isEditable.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTextField_isEditable.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTextField_setEditable.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTextField_setEditable</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTextField_setEditable\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTextField_isEditable.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTextField_setPlaceholder.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTextField_setEditable.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTextField_setEditable.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTextField_setEditable\" class=\"title\">Class GTextField_setEditable</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTextField_setEditable</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTextField_setEditable</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTextField_setEditable.html#GTextField_setEditable--\">GTextField_setEditable</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTextField_setEditable.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTextField_setEditable--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTextField_setEditable</h4>\n<pre>public&nbsp;GTextField_setEditable()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTextField_isEditable.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GTextField_setPlaceholder.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTextField_setEditable.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTextField_setEditable.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GTextField_setPlaceholder.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GTextField_setPlaceholder</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GTextField_setPlaceholder\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTextField_setEditable.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_clearCanvas.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTextField_setPlaceholder.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTextField_setPlaceholder.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GTextField_setPlaceholder\" class=\"title\">Class GTextField_setPlaceholder</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GTextField_setPlaceholder</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GTextField_setPlaceholder</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTextField_setPlaceholder.html#GTextField_setPlaceholder--\">GTextField_setPlaceholder</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GTextField_setPlaceholder.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GTextField_setPlaceholder--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GTextField_setPlaceholder</h4>\n<pre>public&nbsp;GTextField_setPlaceholder()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTextField_setEditable.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_clearCanvas.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GTextField_setPlaceholder.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GTextField_setPlaceholder.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GWindow_clearCanvas.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GWindow_clearCanvas</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GWindow_clearCanvas\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTextField_setPlaceholder.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_close.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_clearCanvas.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_clearCanvas.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GWindow_clearCanvas\" class=\"title\">Class GWindow_clearCanvas</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GWindow_clearCanvas</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GWindow_clearCanvas</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_clearCanvas.html#GWindow_clearCanvas--\">GWindow_clearCanvas</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_clearCanvas.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GWindow_clearCanvas--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GWindow_clearCanvas</h4>\n<pre>public&nbsp;GWindow_clearCanvas()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GTextField_setPlaceholder.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_close.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_clearCanvas.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_clearCanvas.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GWindow_close.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GWindow_close</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GWindow_close\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_clearCanvas.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_create.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_close.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_close.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GWindow_close\" class=\"title\">Class GWindow_close</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GWindow_close</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GWindow_close</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_close.html#GWindow_close--\">GWindow_close</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_close.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GWindow_close--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GWindow_close</h4>\n<pre>public&nbsp;GWindow_close()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_clearCanvas.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_create.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_close.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_close.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GWindow_create.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GWindow_create</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GWindow_create\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_close.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_drawInBackground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_create.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_create.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GWindow_create\" class=\"title\">Class GWindow_create</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GWindow_create</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GWindow_create</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_create.html#GWindow_create--\">GWindow_create</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_create.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GWindow_create--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GWindow_create</h4>\n<pre>public&nbsp;GWindow_create()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_close.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_drawInBackground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_create.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_create.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GWindow_drawInBackground.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GWindow_drawInBackground</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GWindow_drawInBackground\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_create.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_getCanvasSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_drawInBackground.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_drawInBackground.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GWindow_drawInBackground\" class=\"title\">Class GWindow_drawInBackground</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GWindow_drawInBackground</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GWindow_drawInBackground</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_drawInBackground.html#GWindow_drawInBackground--\">GWindow_drawInBackground</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_drawInBackground.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GWindow_drawInBackground--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GWindow_drawInBackground</h4>\n<pre>public&nbsp;GWindow_drawInBackground()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_create.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_getCanvasSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_drawInBackground.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_drawInBackground.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GWindow_getCanvasSize.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GWindow_getCanvasSize</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GWindow_getCanvasSize\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_drawInBackground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_getContentPaneSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_getCanvasSize.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_getCanvasSize.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GWindow_getCanvasSize\" class=\"title\">Class GWindow_getCanvasSize</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GWindow_getCanvasSize</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GWindow_getCanvasSize</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_getCanvasSize.html#GWindow_getCanvasSize--\">GWindow_getCanvasSize</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_getCanvasSize.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GWindow_getCanvasSize--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GWindow_getCanvasSize</h4>\n<pre>public&nbsp;GWindow_getCanvasSize()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_drawInBackground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_getContentPaneSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_getCanvasSize.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_getCanvasSize.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GWindow_getContentPaneSize.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GWindow_getContentPaneSize</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GWindow_getContentPaneSize\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_getCanvasSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_getLocation.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_getContentPaneSize.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_getContentPaneSize.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GWindow_getContentPaneSize\" class=\"title\">Class GWindow_getContentPaneSize</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GWindow_getContentPaneSize</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GWindow_getContentPaneSize</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_getContentPaneSize.html#GWindow_getContentPaneSize--\">GWindow_getContentPaneSize</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_getContentPaneSize.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GWindow_getContentPaneSize--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GWindow_getContentPaneSize</h4>\n<pre>public&nbsp;GWindow_getContentPaneSize()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_getCanvasSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_getLocation.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_getContentPaneSize.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_getContentPaneSize.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GWindow_getLocation.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GWindow_getLocation</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GWindow_getLocation\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_getContentPaneSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_getPixel.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_getLocation.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_getLocation.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GWindow_getLocation\" class=\"title\">Class GWindow_getLocation</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GWindow_getLocation</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GWindow_getLocation</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_getLocation.html#GWindow_getLocation--\">GWindow_getLocation</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_getLocation.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GWindow_getLocation--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GWindow_getLocation</h4>\n<pre>public&nbsp;GWindow_getLocation()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_getContentPaneSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_getPixel.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_getLocation.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_getLocation.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GWindow_getPixel.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GWindow_getPixel</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GWindow_getPixel\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_getLocation.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_getPixels.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_getPixel.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_getPixel.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GWindow_getPixel\" class=\"title\">Class GWindow_getPixel</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GWindow_getPixel</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GWindow_getPixel</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_getPixel.html#GWindow_getPixel--\">GWindow_getPixel</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_getPixel.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GWindow_getPixel--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GWindow_getPixel</h4>\n<pre>public&nbsp;GWindow_getPixel()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_getLocation.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_getPixels.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_getPixel.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_getPixel.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GWindow_getPixels.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GWindow_getPixels</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GWindow_getPixels\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_getPixel.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_getRegionSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_getPixels.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_getPixels.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GWindow_getPixels\" class=\"title\">Class GWindow_getPixels</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GWindow_getPixels</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GWindow_getPixels</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_getPixels.html#GWindow_getPixels--\">GWindow_getPixels</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_getPixels.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GWindow_getPixels--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GWindow_getPixels</h4>\n<pre>public&nbsp;GWindow_getPixels()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_getPixel.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_getRegionSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_getPixels.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_getPixels.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GWindow_getRegionSize.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GWindow_getRegionSize</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GWindow_getRegionSize\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_getPixels.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_getScreenSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_getRegionSize.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_getRegionSize.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GWindow_getRegionSize\" class=\"title\">Class GWindow_getRegionSize</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GWindow_getRegionSize</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GWindow_getRegionSize</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_getRegionSize.html#GWindow_getRegionSize--\">GWindow_getRegionSize</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_getRegionSize.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;scanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GWindow_getRegionSize--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GWindow_getRegionSize</h4>\n<pre>public&nbsp;GWindow_getRegionSize()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;scanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_getPixels.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_getScreenSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_getRegionSize.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_getRegionSize.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GWindow_getScreenSize.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GWindow_getScreenSize</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GWindow_getScreenSize\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_getRegionSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_getSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_getScreenSize.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_getScreenSize.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GWindow_getScreenSize\" class=\"title\">Class GWindow_getScreenSize</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GWindow_getScreenSize</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GWindow_getScreenSize</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_getScreenSize.html#GWindow_getScreenSize--\">GWindow_getScreenSize</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_getScreenSize.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;scanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GWindow_getScreenSize--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GWindow_getScreenSize</h4>\n<pre>public&nbsp;GWindow_getScreenSize()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;scanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_getRegionSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_getSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_getScreenSize.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_getScreenSize.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GWindow_getSize.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GWindow_getSize</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GWindow_getSize\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_getScreenSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_minimize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_getSize.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_getSize.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GWindow_getSize\" class=\"title\">Class GWindow_getSize</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GWindow_getSize</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GWindow_getSize</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_getSize.html#GWindow_getSize--\">GWindow_getSize</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_getSize.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GWindow_getSize--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GWindow_getSize</h4>\n<pre>public&nbsp;GWindow_getSize()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_getScreenSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_minimize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_getSize.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_getSize.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GWindow_minimize.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GWindow_minimize</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GWindow_minimize\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_getSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_pack.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_minimize.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_minimize.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GWindow_minimize\" class=\"title\">Class GWindow_minimize</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GWindow_minimize</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GWindow_minimize</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_minimize.html#GWindow_minimize--\">GWindow_minimize</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_minimize.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GWindow_minimize--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GWindow_minimize</h4>\n<pre>public&nbsp;GWindow_minimize()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_getSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_pack.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_minimize.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_minimize.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GWindow_pack.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GWindow_pack</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GWindow_pack\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_minimize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_removeFromRegion.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_pack.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_pack.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GWindow_pack\" class=\"title\">Class GWindow_pack</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GWindow_pack</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GWindow_pack</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_pack.html#GWindow_pack--\">GWindow_pack</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_pack.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GWindow_pack--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GWindow_pack</h4>\n<pre>public&nbsp;GWindow_pack()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_minimize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_removeFromRegion.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_pack.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_pack.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GWindow_removeFromRegion.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GWindow_removeFromRegion</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GWindow_removeFromRegion\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_pack.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_saveCanvasPixels.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_removeFromRegion.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_removeFromRegion.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GWindow_removeFromRegion\" class=\"title\">Class GWindow_removeFromRegion</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GWindow_removeFromRegion</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GWindow_removeFromRegion</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_removeFromRegion.html#GWindow_removeFromRegion--\">GWindow_removeFromRegion</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_removeFromRegion.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GWindow_removeFromRegion--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GWindow_removeFromRegion</h4>\n<pre>public&nbsp;GWindow_removeFromRegion()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_pack.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_saveCanvasPixels.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_removeFromRegion.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_removeFromRegion.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GWindow_saveCanvasPixels.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GWindow_saveCanvasPixels</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GWindow_saveCanvasPixels\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_removeFromRegion.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_setCanvasSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_saveCanvasPixels.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_saveCanvasPixels.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GWindow_saveCanvasPixels\" class=\"title\">Class GWindow_saveCanvasPixels</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GWindow_saveCanvasPixels</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GWindow_saveCanvasPixels</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_saveCanvasPixels.html#GWindow_saveCanvasPixels--\">GWindow_saveCanvasPixels</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_saveCanvasPixels.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GWindow_saveCanvasPixels--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GWindow_saveCanvasPixels</h4>\n<pre>public&nbsp;GWindow_saveCanvasPixels()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_removeFromRegion.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_setCanvasSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_saveCanvasPixels.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_saveCanvasPixels.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GWindow_setCanvasSize.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GWindow_setCanvasSize</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GWindow_setCanvasSize\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_saveCanvasPixels.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_setCloseOperation.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_setCanvasSize.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_setCanvasSize.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GWindow_setCanvasSize\" class=\"title\">Class GWindow_setCanvasSize</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GWindow_setCanvasSize</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GWindow_setCanvasSize</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_setCanvasSize.html#GWindow_setCanvasSize--\">GWindow_setCanvasSize</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_setCanvasSize.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GWindow_setCanvasSize--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GWindow_setCanvasSize</h4>\n<pre>public&nbsp;GWindow_setCanvasSize()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_saveCanvasPixels.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_setCloseOperation.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_setCanvasSize.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_setCanvasSize.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GWindow_setCloseOperation.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GWindow_setCloseOperation</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GWindow_setCloseOperation\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_setCanvasSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_setExitOnClose.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_setCloseOperation.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_setCloseOperation.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GWindow_setCloseOperation\" class=\"title\">Class GWindow_setCloseOperation</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GWindow_setCloseOperation</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GWindow_setCloseOperation</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_setCloseOperation.html#GWindow_setCloseOperation--\">GWindow_setCloseOperation</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_setCloseOperation.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GWindow_setCloseOperation--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GWindow_setCloseOperation</h4>\n<pre>public&nbsp;GWindow_setCloseOperation()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_setCanvasSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_setExitOnClose.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_setCloseOperation.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_setCloseOperation.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GWindow_setExitOnClose.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GWindow_setExitOnClose</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GWindow_setExitOnClose\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_setCloseOperation.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_setLocation.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_setExitOnClose.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_setExitOnClose.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GWindow_setExitOnClose\" class=\"title\">Class GWindow_setExitOnClose</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GWindow_setExitOnClose</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GWindow_setExitOnClose</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a>\nimplements <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_setExitOnClose.html#GWindow_setExitOnClose--\">GWindow_setExitOnClose</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_setExitOnClose.html#actionPerformed-java.awt.event.ActionEvent-\">actionPerformed</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;e)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_setExitOnClose.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_setExitOnClose.html#windowActivated-java.awt.event.WindowEvent-\">windowActivated</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;arg0)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_setExitOnClose.html#windowClosed-java.awt.event.WindowEvent-\">windowClosed</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;e)</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_setExitOnClose.html#windowClosing-java.awt.event.WindowEvent-\">windowClosing</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;e)</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_setExitOnClose.html#windowDeactivated-java.awt.event.WindowEvent-\">windowDeactivated</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;e)</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_setExitOnClose.html#windowDeiconified-java.awt.event.WindowEvent-\">windowDeiconified</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;e)</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_setExitOnClose.html#windowIconified-java.awt.event.WindowEvent-\">windowIconified</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;e)</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_setExitOnClose.html#windowOpened-java.awt.event.WindowEvent-\">windowOpened</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;e)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GWindow_setExitOnClose--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GWindow_setExitOnClose</h4>\n<pre>public&nbsp;GWindow_setExitOnClose()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"windowClosing-java.awt.event.WindowEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>windowClosing</h4>\n<pre>public&nbsp;void&nbsp;windowClosing(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;e)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true#windowClosing-java.awt.event.WindowEvent-\" title=\"class or interface in java.awt.event\">windowClosing</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"actionPerformed-java.awt.event.ActionEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>actionPerformed</h4>\n<pre>public&nbsp;void&nbsp;actionPerformed(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;e)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true#actionPerformed-java.awt.event.ActionEvent-\" title=\"class or interface in java.awt.event\">actionPerformed</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"windowActivated-java.awt.event.WindowEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>windowActivated</h4>\n<pre>public&nbsp;void&nbsp;windowActivated(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;arg0)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true#windowActivated-java.awt.event.WindowEvent-\" title=\"class or interface in java.awt.event\">windowActivated</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"windowClosed-java.awt.event.WindowEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>windowClosed</h4>\n<pre>public&nbsp;void&nbsp;windowClosed(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;e)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true#windowClosed-java.awt.event.WindowEvent-\" title=\"class or interface in java.awt.event\">windowClosed</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"windowDeactivated-java.awt.event.WindowEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>windowDeactivated</h4>\n<pre>public&nbsp;void&nbsp;windowDeactivated(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;e)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true#windowDeactivated-java.awt.event.WindowEvent-\" title=\"class or interface in java.awt.event\">windowDeactivated</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"windowDeiconified-java.awt.event.WindowEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>windowDeiconified</h4>\n<pre>public&nbsp;void&nbsp;windowDeiconified(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;e)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true#windowDeiconified-java.awt.event.WindowEvent-\" title=\"class or interface in java.awt.event\">windowDeiconified</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"windowIconified-java.awt.event.WindowEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>windowIconified</h4>\n<pre>public&nbsp;void&nbsp;windowIconified(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;e)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true#windowIconified-java.awt.event.WindowEvent-\" title=\"class or interface in java.awt.event\">windowIconified</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"windowOpened-java.awt.event.WindowEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>windowOpened</h4>\n<pre>public&nbsp;void&nbsp;windowOpened(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;e)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true#windowOpened-java.awt.event.WindowEvent-\" title=\"class or interface in java.awt.event\">windowOpened</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_setCloseOperation.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_setLocation.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_setExitOnClose.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_setExitOnClose.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GWindow_setLocation.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GWindow_setLocation</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GWindow_setLocation\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":9,\"i2\":9,\"i3\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_setExitOnClose.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_setLocationSaved.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_setLocation.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_setLocation.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GWindow_setLocation\" class=\"title\">Class GWindow_setLocation</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GWindow_setLocation</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GWindow_setLocation</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_setLocation.html#GWindow_setLocation--\">GWindow_setLocation</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_setLocation.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_setLocation.html#getCenter-java.awt.Dimension-\">getCenter</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a>&nbsp;windowDimensions)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_setLocation.html#getCenter-int-int-\">getCenter</a></span>(int&nbsp;windowWidth,\n         int&nbsp;windowHeight)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_setLocation.html#getCenter-java.awt.Window-\">getCenter</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true\" title=\"class or interface in java.awt\">Window</a>&nbsp;window)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GWindow_setLocation--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GWindow_setLocation</h4>\n<pre>public&nbsp;GWindow_setLocation()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getCenter-java.awt.Window-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getCenter</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;getCenter(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true\" title=\"class or interface in java.awt\">Window</a>&nbsp;window)</pre>\n</li>\n</ul>\n<a name=\"getCenter-java.awt.Dimension-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getCenter</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;getCenter(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a>&nbsp;windowDimensions)</pre>\n</li>\n</ul>\n<a name=\"getCenter-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>getCenter</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html?is-external=true\" title=\"class or interface in java.awt\">Point</a>&nbsp;getCenter(int&nbsp;windowWidth,\n                              int&nbsp;windowHeight)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_setExitOnClose.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_setLocationSaved.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_setLocation.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_setLocation.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GWindow_setLocationSaved.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GWindow_setLocationSaved</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GWindow_setLocationSaved\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_setLocation.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_setPixel.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_setLocationSaved.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_setLocationSaved.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GWindow_setLocationSaved\" class=\"title\">Class GWindow_setLocationSaved</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GWindow_setLocationSaved</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GWindow_setLocationSaved</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_setLocationSaved.html#GWindow_setLocationSaved--\">GWindow_setLocationSaved</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_setLocationSaved.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GWindow_setLocationSaved--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GWindow_setLocationSaved</h4>\n<pre>public&nbsp;GWindow_setLocationSaved()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_setLocation.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_setPixel.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_setLocationSaved.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_setLocationSaved.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GWindow_setPixel.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GWindow_setPixel</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GWindow_setPixel\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_setLocationSaved.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_setPixels.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_setPixel.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_setPixel.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GWindow_setPixel\" class=\"title\">Class GWindow_setPixel</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GWindow_setPixel</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GWindow_setPixel</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_setPixel.html#GWindow_setPixel--\">GWindow_setPixel</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_setPixel.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GWindow_setPixel--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GWindow_setPixel</h4>\n<pre>public&nbsp;GWindow_setPixel()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_setLocationSaved.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_setPixels.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_setPixel.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_setPixel.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GWindow_setPixels.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GWindow_setPixels</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GWindow_setPixels\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_setPixel.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_setRegionSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_setPixels.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_setPixels.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GWindow_setPixels\" class=\"title\">Class GWindow_setPixels</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GWindow_setPixels</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GWindow_setPixels</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_setPixels.html#GWindow_setPixels--\">GWindow_setPixels</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_setPixels.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GWindow_setPixels--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GWindow_setPixels</h4>\n<pre>public&nbsp;GWindow_setPixels()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_setPixel.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_setRegionSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_setPixels.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_setPixels.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GWindow_setRegionSize.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GWindow_setRegionSize</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GWindow_setRegionSize\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_setPixels.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_setResizable.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_setRegionSize.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_setRegionSize.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GWindow_setRegionSize\" class=\"title\">Class GWindow_setRegionSize</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GWindow_setRegionSize</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GWindow_setRegionSize</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_setRegionSize.html#GWindow_setRegionSize--\">GWindow_setRegionSize</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_setRegionSize.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;scanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GWindow_setRegionSize--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GWindow_setRegionSize</h4>\n<pre>public&nbsp;GWindow_setRegionSize()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;scanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_setPixels.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_setResizable.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_setRegionSize.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_setRegionSize.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GWindow_setResizable.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GWindow_setResizable</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GWindow_setResizable\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_setRegionSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_setSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_setResizable.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_setResizable.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GWindow_setResizable\" class=\"title\">Class GWindow_setResizable</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GWindow_setResizable</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GWindow_setResizable</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_setResizable.html#GWindow_setResizable--\">GWindow_setResizable</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_setResizable.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GWindow_setResizable--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GWindow_setResizable</h4>\n<pre>public&nbsp;GWindow_setResizable()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_setRegionSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_setSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_setResizable.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_setResizable.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GWindow_setSize.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GWindow_setSize</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GWindow_setSize\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_setResizable.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_toBack.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_setSize.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_setSize.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GWindow_setSize\" class=\"title\">Class GWindow_setSize</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GWindow_setSize</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GWindow_setSize</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_setSize.html#GWindow_setSize--\">GWindow_setSize</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_setSize.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GWindow_setSize--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GWindow_setSize</h4>\n<pre>public&nbsp;GWindow_setSize()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_setResizable.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_toBack.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_setSize.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_setSize.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GWindow_toBack.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GWindow_toBack</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GWindow_toBack\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_setSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_toFront.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_toBack.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_toBack.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GWindow_toBack\" class=\"title\">Class GWindow_toBack</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GWindow_toBack</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GWindow_toBack</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_toBack.html#GWindow_toBack--\">GWindow_toBack</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_toBack.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GWindow_toBack--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GWindow_toBack</h4>\n<pre>public&nbsp;GWindow_toBack()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_setSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/GWindow_toFront.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_toBack.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_toBack.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/GWindow_toFront.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>GWindow_toFront</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"GWindow_toFront\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_toBack.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/HttpServer_sendResponse.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_toFront.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_toFront.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class GWindow_toFront\" class=\"title\">Class GWindow_toFront</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">stanford.spl.JBESwingCommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.GWindow_toFront</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">GWindow_toFront</span>\nextends <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_toFront.html#GWindow_toFront--\">GWindow_toFront</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/GWindow_toFront.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBESwingCommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></h3>\n<code><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"GWindow_toFront--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>GWindow_toFront</h4>\n<pre>public&nbsp;GWindow_toFront()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_toBack.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/HttpServer_sendResponse.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/GWindow_toFront.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"GWindow_toFront.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/HttpServer_sendResponse.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>HttpServer_sendResponse</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"HttpServer_sendResponse\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_toFront.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/HttpServer_sendResponseFile.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/HttpServer_sendResponse.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"HttpServer_sendResponse.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class HttpServer_sendResponse\" class=\"title\">Class HttpServer_sendResponse</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.HttpServer_sendResponse</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">HttpServer_sendResponse</span>\nextends <a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/HttpServer_sendResponse.html#HttpServer_sendResponse--\">HttpServer_sendResponse</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/HttpServer_sendResponse.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"HttpServer_sendResponse--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>HttpServer_sendResponse</h4>\n<pre>public&nbsp;HttpServer_sendResponse()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/GWindow_toFront.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/HttpServer_sendResponseFile.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/HttpServer_sendResponse.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"HttpServer_sendResponse.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/HttpServer_sendResponseFile.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>HttpServer_sendResponseFile</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"HttpServer_sendResponseFile\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/HttpServer_sendResponse.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/HttpServer_start.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/HttpServer_sendResponseFile.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"HttpServer_sendResponseFile.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class HttpServer_sendResponseFile\" class=\"title\">Class HttpServer_sendResponseFile</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.HttpServer_sendResponseFile</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">HttpServer_sendResponseFile</span>\nextends <a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/HttpServer_sendResponseFile.html#HttpServer_sendResponseFile--\">HttpServer_sendResponseFile</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/HttpServer_sendResponseFile.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"HttpServer_sendResponseFile--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>HttpServer_sendResponseFile</h4>\n<pre>public&nbsp;HttpServer_sendResponseFile()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/HttpServer_sendResponse.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/HttpServer_start.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/HttpServer_sendResponseFile.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"HttpServer_sendResponseFile.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/HttpServer_start.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>HttpServer_start</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"HttpServer_start\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/HttpServer_sendResponseFile.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/HttpServer_stop.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/HttpServer_start.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"HttpServer_start.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class HttpServer_start\" class=\"title\">Class HttpServer_start</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.HttpServer_start</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">HttpServer_start</span>\nextends <a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/HttpServer_start.html#HttpServer_start--\">HttpServer_start</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/HttpServer_start.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"HttpServer_start--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>HttpServer_start</h4>\n<pre>public&nbsp;HttpServer_start()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/HttpServer_sendResponseFile.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/HttpServer_stop.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/HttpServer_start.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"HttpServer_start.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/HttpServer_stop.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>HttpServer_stop</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"HttpServer_stop\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/HttpServer_start.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/HttpServer_stop.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"HttpServer_stop.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class HttpServer_stop\" class=\"title\">Class HttpServer_stop</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.HttpServer_stop</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">HttpServer_stop</span>\nextends <a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/HttpServer_stop.html#HttpServer_stop--\">HttpServer_stop</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/HttpServer_stop.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"HttpServer_stop--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>HttpServer_stop</h4>\n<pre>public&nbsp;HttpServer_stop()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/HttpServer_start.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/HttpServer_stop.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"HttpServer_stop.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/JBECanvas.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:35 PDT 2017 -->\n<title>JBECanvas</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"JBECanvas\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JBECanvas.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JBECanvas.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JComponent\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.javax.swing.JComponent\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class JBECanvas\" class=\"title\">Class JBECanvas</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Component</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Container</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JComponent</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">acm.graphics.GCanvas</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.JBECanvas</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a>, <a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&gt;</dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">JBECanvas</span>\nextends <a href=\"../../acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#stanford.spl.JBECanvas\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.AccessibleJComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent.AccessibleJComponent</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.AccessibleAWTContainer.html?is-external=true\" title=\"class or interface in java.awt\">Container.AccessibleAWTContainer</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.AccessibleAWTComponent.html?is-external=true\" title=\"class or interface in java.awt\">Component.AccessibleAWTComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BaselineResizeBehavior.html?is-external=true\" title=\"class or interface in java.awt\">Component.BaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BltBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.BltBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.FlipBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.FlipBufferStrategy</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#listenerList\" title=\"class or interface in javax.swing\">listenerList</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#TOOL_TIP_TEXT_KEY\" title=\"class or interface in javax.swing\">TOOL_TIP_TEXT_KEY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#ui\" title=\"class or interface in javax.swing\">ui</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#UNDEFINED_CONDITION\" title=\"class or interface in javax.swing\">UNDEFINED_CONDITION</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_ANCESTOR_OF_FOCUSED_COMPONENT\" title=\"class or interface in javax.swing\">WHEN_ANCESTOR_OF_FOCUSED_COMPONENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_FOCUSED\" title=\"class or interface in javax.swing\">WHEN_FOCUSED</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_IN_FOCUSED_WINDOW\" title=\"class or interface in javax.swing\">WHEN_IN_FOCUSED_WINDOW</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#accessibleContext\" title=\"class or interface in java.awt\">accessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#BOTTOM_ALIGNMENT\" title=\"class or interface in java.awt\">BOTTOM_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#CENTER_ALIGNMENT\" title=\"class or interface in java.awt\">CENTER_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#LEFT_ALIGNMENT\" title=\"class or interface in java.awt\">LEFT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#RIGHT_ALIGNMENT\" title=\"class or interface in java.awt\">RIGHT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#TOP_ALIGNMENT\" title=\"class or interface in java.awt\">TOP_ALIGNMENT</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.graphics.GContainer\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;acm.graphics.<a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a></h3>\n<code><a href=\"../../acm/graphics/GContainer.html#BACK_TO_FRONT\">BACK_TO_FRONT</a>, <a href=\"../../acm/graphics/GContainer.html#FRONT_TO_BACK\">FRONT_TO_BACK</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.image.ImageObserver\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ABORT\" title=\"class or interface in java.awt.image\">ABORT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ALLBITS\" title=\"class or interface in java.awt.image\">ALLBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ERROR\" title=\"class or interface in java.awt.image\">ERROR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#FRAMEBITS\" title=\"class or interface in java.awt.image\">FRAMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#HEIGHT\" title=\"class or interface in java.awt.image\">HEIGHT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#PROPERTIES\" title=\"class or interface in java.awt.image\">PROPERTIES</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#SOMEBITS\" title=\"class or interface in java.awt.image\">SOMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#WIDTH\" title=\"class or interface in java.awt.image\">WIDTH</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBECanvas.html#JBECanvas-java.lang.String-int-int-\">JBECanvas</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;windowId,\n         int&nbsp;width,\n         int&nbsp;height)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBECanvas.html#clear--\">clear</a></span>()</code>\n<div class=\"block\">Removes all graphical objects from this canvas.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBECanvas.html#getPreferredSize--\">getPreferredSize</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected stanford.spl.TopCompound</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBECanvas.html#getTopCompound--\">getTopCompound</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBECanvas.html#getWindowId--\">getWindowId</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBECanvas.html#paintComponent-java.awt.Graphics-\">paintComponent</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g)</code>\n<div class=\"block\">Paints the canvas.</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBECanvas.html#setPreferredSize-java.awt.Dimension-\">setPreferredSize</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a>&nbsp;d)</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBECanvas.html#setTopCompound-stanford.spl.TopCompound-\">setTopCompound</a></span>(stanford.spl.TopCompound&nbsp;top)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.graphics.GCanvas\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.graphics.<a href=\"../../acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></h3>\n<code><a href=\"../../acm/graphics/GCanvas.html#add-java.awt.Component-\">add</a>, <a href=\"../../acm/graphics/GCanvas.html#add-java.awt.Component-double-double-\">add</a>, <a href=\"../../acm/graphics/GCanvas.html#add-java.awt.Component-acm.graphics.GPoint-\">add</a>, <a href=\"../../acm/graphics/GCanvas.html#add-acm.graphics.GObject-\">add</a>, <a href=\"../../acm/graphics/GCanvas.html#add-acm.graphics.GObject-double-double-\">add</a>, <a href=\"../../acm/graphics/GCanvas.html#add-acm.graphics.GObject-acm.graphics.GPoint-\">add</a>, <a href=\"../../acm/graphics/GCanvas.html#conditionalRepaint--\">conditionalRepaint</a>, <a href=\"../../acm/graphics/GCanvas.html#diff-java.io.File-\">diff</a>, <a href=\"../../acm/graphics/GCanvas.html#diff-java.io.File-boolean-\">diff</a>, <a href=\"../../acm/graphics/GCanvas.html#diff-java.lang.String-\">diff</a>, <a href=\"../../acm/graphics/GCanvas.html#diff-java.lang.String-boolean-\">diff</a>, <a href=\"../../acm/graphics/GCanvas.html#dispatchMouseEvent-java.awt.event.MouseEvent-\">dispatchMouseEvent</a>, <a href=\"../../acm/graphics/GCanvas.html#draw-java.awt.Shape-\">draw</a>, <a href=\"../../acm/graphics/GCanvas.html#drawArc-double-double-double-double-double-double-\">drawArc</a>, <a href=\"../../acm/graphics/GCanvas.html#drawLine-double-double-double-double-\">drawLine</a>, <a href=\"../../acm/graphics/GCanvas.html#drawOval-double-double-double-double-\">drawOval</a>, <a href=\"../../acm/graphics/GCanvas.html#drawPolarLine-double-double-double-double-\">drawPolarLine</a>, <a href=\"../../acm/graphics/GCanvas.html#drawPolarLine-acm.graphics.GPoint-double-double-\">drawPolarLine</a>, <a href=\"../../acm/graphics/GCanvas.html#drawRect-double-double-double-double-\">drawRect</a>, <a href=\"../../acm/graphics/GCanvas.html#fill-java.awt.Shape-\">fill</a>, <a href=\"../../acm/graphics/GCanvas.html#fillArc-double-double-double-double-double-double-\">fillArc</a>, <a href=\"../../acm/graphics/GCanvas.html#fillOval-double-double-double-double-\">fillOval</a>, <a href=\"../../acm/graphics/GCanvas.html#fillRect-double-double-double-double-\">fillRect</a>, <a href=\"../../acm/graphics/GCanvas.html#getAutoRepaintFlag--\">getAutoRepaintFlag</a>, <a href=\"../../acm/graphics/GCanvas.html#getElement-int-\">getElement</a>, <a href=\"../../acm/graphics/GCanvas.html#getElementAt-double...-\">getElementAt</a>, <a href=\"../../acm/graphics/GCanvas.html#getElementAt-double-double-\">getElementAt</a>, <a href=\"../../acm/graphics/GCanvas.html#getElementAt-acm.graphics.GPoint-\">getElementAt</a>, <a href=\"../../acm/graphics/GCanvas.html#getElementCount--\">getElementCount</a>, <a href=\"../../acm/graphics/GCanvas.html#getNativeArcFlag--\">getNativeArcFlag</a>, <a href=\"../../acm/graphics/GCanvas.html#getOSG--\">getOSG</a>, <a href=\"../../acm/graphics/GCanvas.html#getPixelsAsString--\">getPixelsAsString</a>, <a href=\"../../acm/graphics/GCanvas.html#getRGB-int-int-\">getRGB</a>, <a href=\"../../acm/graphics/GCanvas.html#hasElementAt-double...-\">hasElementAt</a>, <a href=\"../../acm/graphics/GCanvas.html#hasElementAt-double-double-\">hasElementAt</a>, <a href=\"../../acm/graphics/GCanvas.html#inBounds-int-int-\">inBounds</a>, <a href=\"../../acm/graphics/GCanvas.html#isAntiAliasing--\">isAntiAliasing</a>, <a href=\"../../acm/graphics/GCanvas.html#iterator--\">iterator</a>, <a href=\"../../acm/graphics/GCanvas.html#iterator-int-\">iterator</a>, <a href=\"../../acm/graphics/GCanvas.html#remove-java.awt.Component-\">remove</a>, <a href=\"../../acm/graphics/GCanvas.html#remove-double-double-\">remove</a>, <a href=\"../../acm/graphics/GCanvas.html#remove-acm.graphics.GObject-\">remove</a>, <a href=\"../../acm/graphics/GCanvas.html#remove-acm.graphics.GPoint-\">remove</a>, <a href=\"../../acm/graphics/GCanvas.html#removeAll--\">removeAll</a>, <a href=\"../../acm/graphics/GCanvas.html#removeAll-double...-\">removeAll</a>, <a href=\"../../acm/graphics/GCanvas.html#removeAll-double-double-\">removeAll</a>, <a href=\"../../acm/graphics/GCanvas.html#removeAll-acm.graphics.GPoint-\">removeAll</a>, <a href=\"../../acm/graphics/GCanvas.html#save-java.io.File-\">save</a>, <a href=\"../../acm/graphics/GCanvas.html#save-java.lang.String-\">save</a>, <a href=\"../../acm/graphics/GCanvas.html#sendBackward-acm.graphics.GObject-\">sendBackward</a>, <a href=\"../../acm/graphics/GCanvas.html#sendForward-acm.graphics.GObject-\">sendForward</a>, <a href=\"../../acm/graphics/GCanvas.html#sendToBack-acm.graphics.GObject-\">sendToBack</a>, <a href=\"../../acm/graphics/GCanvas.html#sendToFront-acm.graphics.GObject-\">sendToFront</a>, <a href=\"../../acm/graphics/GCanvas.html#setAntiAliasing-boolean-\">setAntiAliasing</a>, <a href=\"../../acm/graphics/GCanvas.html#setAutoRepaintFlag-boolean-\">setAutoRepaintFlag</a>, <a href=\"../../acm/graphics/GCanvas.html#setBackground-java.awt.Color-\">setBackground</a>, <a href=\"../../acm/graphics/GCanvas.html#setBorder-java.awt.Color-\">setBorder</a>, <a href=\"../../acm/graphics/GCanvas.html#setBorder-java.awt.Color-int-\">setBorder</a>, <a href=\"../../acm/graphics/GCanvas.html#setColor-java.awt.Color-\">setColor</a>, <a href=\"../../acm/graphics/GCanvas.html#setColor-int-\">setColor</a>, <a href=\"../../acm/graphics/GCanvas.html#setForeground-java.awt.Color-\">setForeground</a>, <a href=\"../../acm/graphics/GCanvas.html#setForeground-int-\">setForeground</a>, <a href=\"../../acm/graphics/GCanvas.html#setNativeArcFlag-boolean-\">setNativeArcFlag</a>, <a href=\"../../acm/graphics/GCanvas.html#setOpaque-boolean-\">setOpaque</a>, <a href=\"../../acm/graphics/GCanvas.html#setPixelsFromString-java.lang.String-\">setPixelsFromString</a>, <a href=\"../../acm/graphics/GCanvas.html#setRGB-int-int-int-\">setRGB</a>, <a href=\"../../acm/graphics/GCanvas.html#setRGB-int-int-int-boolean-\">setRGB</a>, <a href=\"../../acm/graphics/GCanvas.html#setShowPixelGrid-boolean-\">setShowPixelGrid</a>, <a href=\"../../acm/graphics/GCanvas.html#setShowPixelInfo-boolean-\">setShowPixelInfo</a>, <a href=\"../../acm/graphics/GCanvas.html#showDiffDialog--\">showDiffDialog</a>, <a href=\"../../acm/graphics/GCanvas.html#showDiffDialog-java.io.File-\">showDiffDialog</a>, <a href=\"../../acm/graphics/GCanvas.html#showDiffDialog-java.lang.String-\">showDiffDialog</a>, <a href=\"../../acm/graphics/GCanvas.html#showSaveDialog--\">showSaveDialog</a>, <a href=\"../../acm/graphics/GCanvas.html#showSaveDialog-java.io.File-\">showSaveDialog</a>, <a href=\"../../acm/graphics/GCanvas.html#showSaveDialog-java.lang.String-\">showSaveDialog</a>, <a href=\"../../acm/graphics/GCanvas.html#toImage--\">toImage</a>, <a href=\"../../acm/graphics/GCanvas.html#toImage-int-int-\">toImage</a>, <a href=\"../../acm/graphics/GCanvas.html#updateEnabledList--\">updateEnabledList</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addAncestorListener-javax.swing.event.AncestorListener-\" title=\"class or interface in javax.swing\">addAncestorListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addNotify--\" title=\"class or interface in javax.swing\">addNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addVetoableChangeListener-java.beans.VetoableChangeListener-\" title=\"class or interface in javax.swing\">addVetoableChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#computeVisibleRect-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">computeVisibleRect</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#contains-int-int-\" title=\"class or interface in javax.swing\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#createToolTip--\" title=\"class or interface in javax.swing\">createToolTip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#disable--\" title=\"class or interface in javax.swing\">disable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#enable--\" title=\"class or interface in javax.swing\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-boolean-boolean-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-char-char-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-int-int-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#fireVetoableChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in javax.swing\">fireVetoableChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getActionForKeyStroke-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">getActionForKeyStroke</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getActionMap--\" title=\"class or interface in javax.swing\">getActionMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAlignmentX--\" title=\"class or interface in javax.swing\">getAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAlignmentY--\" title=\"class or interface in javax.swing\">getAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAncestorListeners--\" title=\"class or interface in javax.swing\">getAncestorListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAutoscrolls--\" title=\"class or interface in javax.swing\">getAutoscrolls</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBaseline-int-int-\" title=\"class or interface in javax.swing\">getBaseline</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBaselineResizeBehavior--\" title=\"class or interface in javax.swing\">getBaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBorder--\" title=\"class or interface in javax.swing\">getBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBounds-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getClientProperty-java.lang.Object-\" title=\"class or interface in javax.swing\">getClientProperty</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getComponentGraphics-java.awt.Graphics-\" title=\"class or interface in javax.swing\">getComponentGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getComponentPopupMenu--\" title=\"class or interface in javax.swing\">getComponentPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getConditionForKeyStroke-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">getConditionForKeyStroke</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getDebugGraphicsOptions--\" title=\"class or interface in javax.swing\">getDebugGraphicsOptions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getDefaultLocale--\" title=\"class or interface in javax.swing\">getDefaultLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getFontMetrics-java.awt.Font-\" title=\"class or interface in javax.swing\">getFontMetrics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getGraphics--\" title=\"class or interface in javax.swing\">getGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getHeight--\" title=\"class or interface in javax.swing\">getHeight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInheritsPopupMenu--\" title=\"class or interface in javax.swing\">getInheritsPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputMap--\" title=\"class or interface in javax.swing\">getInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputMap-int-\" title=\"class or interface in javax.swing\">getInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputVerifier--\" title=\"class or interface in javax.swing\">getInputVerifier</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInsets--\" title=\"class or interface in javax.swing\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInsets-java.awt.Insets-\" title=\"class or interface in javax.swing\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getListeners-java.lang.Class-\" title=\"class or interface in javax.swing\">getListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getLocation-java.awt.Point-\" title=\"class or interface in javax.swing\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getMaximumSize--\" title=\"class or interface in javax.swing\">getMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getMinimumSize--\" title=\"class or interface in javax.swing\">getMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getNextFocusableComponent--\" title=\"class or interface in javax.swing\">getNextFocusableComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getPopupLocation-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">getPopupLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getRegisteredKeyStrokes--\" title=\"class or interface in javax.swing\">getRegisteredKeyStrokes</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getRootPane--\" title=\"class or interface in javax.swing\">getRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getToolTipLocation-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">getToolTipLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getToolTipText--\" title=\"class or interface in javax.swing\">getToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getToolTipText-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">getToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getTopLevelAncestor--\" title=\"class or interface in javax.swing\">getTopLevelAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getTransferHandler--\" title=\"class or interface in javax.swing\">getTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getUIClassID--\" title=\"class or interface in javax.swing\">getUIClassID</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVerifyInputWhenFocusTarget--\" title=\"class or interface in javax.swing\">getVerifyInputWhenFocusTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVetoableChangeListeners--\" title=\"class or interface in javax.swing\">getVetoableChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVisibleRect--\" title=\"class or interface in javax.swing\">getVisibleRect</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getWidth--\" title=\"class or interface in javax.swing\">getWidth</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getX--\" title=\"class or interface in javax.swing\">getX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getY--\" title=\"class or interface in javax.swing\">getY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#grabFocus--\" title=\"class or interface in javax.swing\">grabFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#hide--\" title=\"class or interface in javax.swing\">hide</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isDoubleBuffered--\" title=\"class or interface in javax.swing\">isDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isLightweightComponent-java.awt.Component-\" title=\"class or interface in javax.swing\">isLightweightComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isManagingFocus--\" title=\"class or interface in javax.swing\">isManagingFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isOpaque--\" title=\"class or interface in javax.swing\">isOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isOptimizedDrawingEnabled--\" title=\"class or interface in javax.swing\">isOptimizedDrawingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingForPrint--\" title=\"class or interface in javax.swing\">isPaintingForPrint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingOrigin--\" title=\"class or interface in javax.swing\">isPaintingOrigin</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingTile--\" title=\"class or interface in javax.swing\">isPaintingTile</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isRequestFocusEnabled--\" title=\"class or interface in javax.swing\">isRequestFocusEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isValidateRoot--\" title=\"class or interface in javax.swing\">isValidateRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paint-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintBorder-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintChildren-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintChildren</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintImmediately-int-int-int-int-\" title=\"class or interface in javax.swing\">paintImmediately</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintImmediately-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">paintImmediately</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paramString--\" title=\"class or interface in javax.swing\">paramString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#print-java.awt.Graphics-\" title=\"class or interface in javax.swing\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printAll-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printBorder-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printChildren-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printChildren</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printComponent-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processComponentKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in javax.swing\">processComponentKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processKeyBinding-javax.swing.KeyStroke-java.awt.event.KeyEvent-int-boolean-\" title=\"class or interface in javax.swing\">processKeyBinding</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in javax.swing\">processKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processMouseEvent-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">processMouseEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processMouseMotionEvent-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">processMouseMotionEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#putClientProperty-java.lang.Object-java.lang.Object-\" title=\"class or interface in javax.swing\">putClientProperty</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#registerKeyboardAction-java.awt.event.ActionListener-javax.swing.KeyStroke-int-\" title=\"class or interface in javax.swing\">registerKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#registerKeyboardAction-java.awt.event.ActionListener-java.lang.String-javax.swing.KeyStroke-int-\" title=\"class or interface in javax.swing\">registerKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#removeAncestorListener-javax.swing.event.AncestorListener-\" title=\"class or interface in javax.swing\">removeAncestorListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#removeNotify--\" title=\"class or interface in javax.swing\">removeNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#removeVetoableChangeListener-java.beans.VetoableChangeListener-\" title=\"class or interface in javax.swing\">removeVetoableChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#repaint-long-int-int-int-int-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#repaint-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestDefaultFocus--\" title=\"class or interface in javax.swing\">requestDefaultFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocus--\" title=\"class or interface in javax.swing\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocus-boolean-\" title=\"class or interface in javax.swing\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocusInWindow--\" title=\"class or interface in javax.swing\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocusInWindow-boolean-\" title=\"class or interface in javax.swing\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#resetKeyboardActions--\" title=\"class or interface in javax.swing\">resetKeyboardActions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#reshape-int-int-int-int-\" title=\"class or interface in javax.swing\">reshape</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#revalidate--\" title=\"class or interface in javax.swing\">revalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#scrollRectToVisible-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">scrollRectToVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setActionMap-javax.swing.ActionMap-\" title=\"class or interface in javax.swing\">setActionMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAlignmentX-float-\" title=\"class or interface in javax.swing\">setAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAlignmentY-float-\" title=\"class or interface in javax.swing\">setAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAutoscrolls-boolean-\" title=\"class or interface in javax.swing\">setAutoscrolls</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setBorder-javax.swing.border.Border-\" title=\"class or interface in javax.swing\">setBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setComponentPopupMenu-javax.swing.JPopupMenu-\" title=\"class or interface in javax.swing\">setComponentPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDebugGraphicsOptions-int-\" title=\"class or interface in javax.swing\">setDebugGraphicsOptions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDefaultLocale-java.util.Locale-\" title=\"class or interface in javax.swing\">setDefaultLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDoubleBuffered-boolean-\" title=\"class or interface in javax.swing\">setDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setEnabled-boolean-\" title=\"class or interface in javax.swing\">setEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setFocusTraversalKeys-int-java.util.Set-\" title=\"class or interface in javax.swing\">setFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setFont-java.awt.Font-\" title=\"class or interface in javax.swing\">setFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInheritsPopupMenu-boolean-\" title=\"class or interface in javax.swing\">setInheritsPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInputMap-int-javax.swing.InputMap-\" title=\"class or interface in javax.swing\">setInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInputVerifier-javax.swing.InputVerifier-\" title=\"class or interface in javax.swing\">setInputVerifier</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setMaximumSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setMinimumSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setNextFocusableComponent-java.awt.Component-\" title=\"class or interface in javax.swing\">setNextFocusableComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setRequestFocusEnabled-boolean-\" title=\"class or interface in javax.swing\">setRequestFocusEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setToolTipText-java.lang.String-\" title=\"class or interface in javax.swing\">setToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setTransferHandler-javax.swing.TransferHandler-\" title=\"class or interface in javax.swing\">setTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setUI-javax.swing.plaf.ComponentUI-\" title=\"class or interface in javax.swing\">setUI</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setVerifyInputWhenFocusTarget-boolean-\" title=\"class or interface in javax.swing\">setVerifyInputWhenFocusTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setVisible-boolean-\" title=\"class or interface in javax.swing\">setVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#unregisterKeyboardAction-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">unregisterKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#update-java.awt.Graphics-\" title=\"class or interface in javax.swing\">update</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#updateUI--\" title=\"class or interface in javax.swing\">updateUI</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.lang.String-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">addContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addImpl-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">addImpl</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#applyComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">applyComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#areFocusTraversalKeysSet-int-\" title=\"class or interface in java.awt\">areFocusTraversalKeysSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#countComponents--\" title=\"class or interface in java.awt\">countComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#deliverEvent-java.awt.Event-\" title=\"class or interface in java.awt\">deliverEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#doLayout--\" title=\"class or interface in java.awt\">doLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-int-int-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponent-int-\" title=\"class or interface in java.awt\">getComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-int-int-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentCount--\" title=\"class or interface in java.awt\">getComponentCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponents--\" title=\"class or interface in java.awt\">getComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentZOrder-java.awt.Component-\" title=\"class or interface in java.awt\">getComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getContainerListeners--\" title=\"class or interface in java.awt\">getContainerListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalKeys-int-\" title=\"class or interface in java.awt\">getFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalPolicy--\" title=\"class or interface in java.awt\">getFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getLayout--\" title=\"class or interface in java.awt\">getLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMousePosition-boolean-\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#insets--\" title=\"class or interface in java.awt\">insets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#invalidate--\" title=\"class or interface in java.awt\">invalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isAncestorOf-java.awt.Component-\" title=\"class or interface in java.awt\">isAncestorOf</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot--\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot-java.awt.Container-\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicyProvider--\" title=\"class or interface in java.awt\">isFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicySet--\" title=\"class or interface in java.awt\">isFocusTraversalPolicySet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#layout--\" title=\"class or interface in java.awt\">layout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintStream-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintWriter-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#locate-int-int-\" title=\"class or interface in java.awt\">locate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#minimumSize--\" title=\"class or interface in java.awt\">minimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paintComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#preferredSize--\" title=\"class or interface in java.awt\">preferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#printComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">printComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processContainerEvent-java.awt.event.ContainerEvent-\" title=\"class or interface in java.awt\">processContainerEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">processEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#remove-int-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">removeContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setComponentZOrder-java.awt.Component-int-\" title=\"class or interface in java.awt\">setComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusCycleRoot-boolean-\" title=\"class or interface in java.awt\">setFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicy-java.awt.FocusTraversalPolicy-\" title=\"class or interface in java.awt\">setFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicyProvider-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setLayout-java.awt.LayoutManager-\" title=\"class or interface in java.awt\">setLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#transferFocusDownCycle--\" title=\"class or interface in java.awt\">transferFocusDownCycle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validate--\" title=\"class or interface in java.awt\">validate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validateTree--\" title=\"class or interface in java.awt\">validateTree</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#action-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">action</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#add-java.awt.PopupMenu-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">addComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">addFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">addHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">addHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">addInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">addKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">addMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">addMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">addMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#bounds--\" title=\"class or interface in java.awt\">bounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#coalesceEvents-java.awt.AWTEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">coalesceEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-java.awt.Point-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-java.awt.image.ImageProducer-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-int-int-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-java.awt.ImageCapabilities-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disableEvents-long-\" title=\"class or interface in java.awt\">disableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#dispatchEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">dispatchEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable-boolean-\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableEvents-long-\" title=\"class or interface in java.awt\">enableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableInputMethods-boolean-\" title=\"class or interface in java.awt\">enableInputMethods</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-byte-byte-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-double-double-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-float-float-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-long-long-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-short-short-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getAccessibleContext--\" title=\"class or interface in java.awt\">getAccessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBackground--\" title=\"class or interface in java.awt\">getBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds--\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getColorModel--\" title=\"class or interface in java.awt\">getColorModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentListeners--\" title=\"class or interface in java.awt\">getComponentListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentOrientation--\" title=\"class or interface in java.awt\">getComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getCursor--\" title=\"class or interface in java.awt\">getCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getDropTarget--\" title=\"class or interface in java.awt\">getDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusCycleRootAncestor--\" title=\"class or interface in java.awt\">getFocusCycleRootAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusListeners--\" title=\"class or interface in java.awt\">getFocusListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusTraversalKeysEnabled--\" title=\"class or interface in java.awt\">getFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFont--\" title=\"class or interface in java.awt\">getFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getForeground--\" title=\"class or interface in java.awt\">getForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getGraphicsConfiguration--\" title=\"class or interface in java.awt\">getGraphicsConfiguration</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyBoundsListeners--\" title=\"class or interface in java.awt\">getHierarchyBoundsListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyListeners--\" title=\"class or interface in java.awt\">getHierarchyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getIgnoreRepaint--\" title=\"class or interface in java.awt\">getIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputContext--\" title=\"class or interface in java.awt\">getInputContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodListeners--\" title=\"class or interface in java.awt\">getInputMethodListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodRequests--\" title=\"class or interface in java.awt\">getInputMethodRequests</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getKeyListeners--\" title=\"class or interface in java.awt\">getKeyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocale--\" title=\"class or interface in java.awt\">getLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation--\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocationOnScreen--\" title=\"class or interface in java.awt\">getLocationOnScreen</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseListeners--\" title=\"class or interface in java.awt\">getMouseListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseMotionListeners--\" title=\"class or interface in java.awt\">getMouseMotionListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMousePosition--\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseWheelListeners--\" title=\"class or interface in java.awt\">getMouseWheelListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getName--\" title=\"class or interface in java.awt\">getName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getParent--\" title=\"class or interface in java.awt\">getParent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPeer--\" title=\"class or interface in java.awt\">getPeer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners--\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners-java.lang.String-\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize--\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getToolkit--\" title=\"class or interface in java.awt\">getToolkit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getTreeLock--\" title=\"class or interface in java.awt\">getTreeLock</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#gotFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">gotFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#handleEvent-java.awt.Event-\" title=\"class or interface in java.awt\">handleEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hasFocus--\" title=\"class or interface in java.awt\">hasFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#imageUpdate-java.awt.Image-int-int-int-int-int-\" title=\"class or interface in java.awt\">imageUpdate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#inside-int-int-\" title=\"class or interface in java.awt\">inside</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isBackgroundSet--\" title=\"class or interface in java.awt\">isBackgroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isCursorSet--\" title=\"class or interface in java.awt\">isCursorSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDisplayable--\" title=\"class or interface in java.awt\">isDisplayable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isEnabled--\" title=\"class or interface in java.awt\">isEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusable--\" title=\"class or interface in java.awt\">isFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusOwner--\" title=\"class or interface in java.awt\">isFocusOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusTraversable--\" title=\"class or interface in java.awt\">isFocusTraversable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFontSet--\" title=\"class or interface in java.awt\">isFontSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isForegroundSet--\" title=\"class or interface in java.awt\">isForegroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isLightweight--\" title=\"class or interface in java.awt\">isLightweight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMaximumSizeSet--\" title=\"class or interface in java.awt\">isMaximumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMinimumSizeSet--\" title=\"class or interface in java.awt\">isMinimumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isPreferredSizeSet--\" title=\"class or interface in java.awt\">isPreferredSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isShowing--\" title=\"class or interface in java.awt\">isShowing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isValid--\" title=\"class or interface in java.awt\">isValid</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isVisible--\" title=\"class or interface in java.awt\">isVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyDown-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyUp-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list--\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintStream-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintWriter-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#location--\" title=\"class or interface in java.awt\">location</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#lostFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">lostFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDown-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDrag-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDrag</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseEnter-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseEnter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseExit-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseExit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseMove-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseMove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseUp-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#move-int-int-\" title=\"class or interface in java.awt\">move</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#nextFocus--\" title=\"class or interface in java.awt\">nextFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#paintAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#postEvent-java.awt.Event-\" title=\"class or interface in java.awt\">postEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processComponentEvent-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt\">processComponentEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processFocusEvent-java.awt.event.FocusEvent-\" title=\"class or interface in java.awt\">processFocusEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyBoundsEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyBoundsEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processInputMethodEvent-java.awt.event.InputMethodEvent-\" title=\"class or interface in java.awt\">processInputMethodEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseWheelEvent-java.awt.event.MouseWheelEvent-\" title=\"class or interface in java.awt\">processMouseWheelEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#remove-java.awt.MenuComponent-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">removeComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">removeFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">removeHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">removeHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">removeInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">removeKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">removeMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">removeMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">removeMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint--\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-int-int-int-int-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-long-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#resize-java.awt.Dimension-\" title=\"class or interface in java.awt\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#resize-int-int-\" title=\"class or interface in java.awt\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-int-int-int-int-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">setComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setCursor-java.awt.Cursor-\" title=\"class or interface in java.awt\">setCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setDropTarget-java.awt.dnd.DropTarget-\" title=\"class or interface in java.awt\">setDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusable-boolean-\" title=\"class or interface in java.awt\">setFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusTraversalKeysEnabled-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setIgnoreRepaint-boolean-\" title=\"class or interface in java.awt\">setIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocale-java.util.Locale-\" title=\"class or interface in java.awt\">setLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-int-int-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-java.awt.Point-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setName-java.lang.String-\" title=\"class or interface in java.awt\">setName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-int-int-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show--\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show-boolean-\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#size--\" title=\"class or interface in java.awt\">size</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#toString--\" title=\"class or interface in java.awt\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocus--\" title=\"class or interface in java.awt\">transferFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusBackward--\" title=\"class or interface in java.awt\">transferFocusBackward</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusUpCycle--\" title=\"class or interface in java.awt\">transferFocusUpCycle</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.graphics.GCanvasInterface\">\n<!--   -->\n</a>\n<h3>Methods inherited from interface&nbsp;acm.graphics.<a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></h3>\n<code><a href=\"../../acm/graphics/GCanvasInterface.html#getBackground--\">getBackground</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#getFont--\">getFont</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#getHeight--\">getHeight</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#getSize--\">getSize</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#getWidth--\">getWidth</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#repaint--\">repaint</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#setFont-java.awt.Font-\">setFont</a>, <a href=\"../../acm/graphics/GCanvasInterface.html#setSize-java.awt.Dimension-\">setSize</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Iterable\">\n<!--   -->\n</a>\n<h3>Methods inherited from interface&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true#forEach-java.util.function.Consumer-\" title=\"class or interface in java.lang\">forEach</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true#spliterator--\" title=\"class or interface in java.lang\">spliterator</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"JBECanvas-java.lang.String-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>JBECanvas</h4>\n<pre>public&nbsp;JBECanvas(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;windowId,\n                 int&nbsp;width,\n                 int&nbsp;height)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"setTopCompound-stanford.spl.TopCompound-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setTopCompound</h4>\n<pre>protected&nbsp;void&nbsp;setTopCompound(stanford.spl.TopCompound&nbsp;top)</pre>\n</li>\n</ul>\n<a name=\"getTopCompound--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getTopCompound</h4>\n<pre>protected&nbsp;stanford.spl.TopCompound&nbsp;getTopCompound()</pre>\n</li>\n</ul>\n<a name=\"getWindowId--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getWindowId</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getWindowId()</pre>\n</li>\n</ul>\n<a name=\"getPreferredSize--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getPreferredSize</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a>&nbsp;getPreferredSize()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getPreferredSize--\" title=\"class or interface in javax.swing\">getPreferredSize</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setPreferredSize-java.awt.Dimension-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setPreferredSize</h4>\n<pre>public&nbsp;void&nbsp;setPreferredSize(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a>&nbsp;d)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setPreferredSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setPreferredSize</a></code>&nbsp;in class&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"clear--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clear</h4>\n<pre>public&nbsp;void&nbsp;clear()</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../acm/graphics/GCanvas.html#clear--\">GCanvas</a></code></span></div>\n<div class=\"block\">Removes all graphical objects from this canvas.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvasInterface.html#clear--\">clear</a></code>&nbsp;in interface&nbsp;<code><a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a></code></dd>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvas.html#clear--\">clear</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"paintComponent-java.awt.Graphics-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>paintComponent</h4>\n<pre>public&nbsp;void&nbsp;paintComponent(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html?is-external=true\" title=\"class or interface in java.awt\">Graphics</a>&nbsp;g)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../acm/graphics/GCanvas.html#paintComponent-java.awt.Graphics-\">GCanvas</a></code></span></div>\n<div class=\"block\">Paints the canvas.  This method is not ordinarily called by clients.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GCanvas.html#paintComponent-java.awt.Graphics-\">paintComponent</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GCanvas.html\" title=\"class in acm.graphics\">GCanvas</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>g</code> - The graphics context into which the canvas is painted</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JBECanvas.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JBECanvas.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JComponent\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.javax.swing.JComponent\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/JBECommand.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:35 PDT 2017 -->\n<title>JBECommand</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"JBECommand\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":6,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],4:[\"t3\",\"Abstract Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JBECanvas.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JBEConsole_minimize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JBECommand.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JBECommand.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class JBECommand\" class=\"title\">Class JBECommand</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.JBECommand</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>Direct Known Subclasses:</dt>\n<dd><a href=\"../../stanford/spl/File_getTempDirectory.html\" title=\"class in stanford.spl\">File_getTempDirectory</a>, <a href=\"../../stanford/spl/File_openFileDialog.html\" title=\"class in stanford.spl\">File_openFileDialog</a>, <a href=\"../../stanford/spl/HttpServer_sendResponse.html\" title=\"class in stanford.spl\">HttpServer_sendResponse</a>, <a href=\"../../stanford/spl/HttpServer_sendResponseFile.html\" title=\"class in stanford.spl\">HttpServer_sendResponseFile</a>, <a href=\"../../stanford/spl/HttpServer_start.html\" title=\"class in stanford.spl\">HttpServer_start</a>, <a href=\"../../stanford/spl/HttpServer_stop.html\" title=\"class in stanford.spl\">HttpServer_stop</a>, <a href=\"../../stanford/spl/JBEConsole_minimize.html\" title=\"class in stanford.spl\">JBEConsole_minimize</a>, <a href=\"../../stanford/spl/JBEConsole_print.html\" title=\"class in stanford.spl\">JBEConsole_print</a>, <a href=\"../../stanford/spl/JBEConsole_setCloseOperation.html\" title=\"class in stanford.spl\">JBEConsole_setCloseOperation</a>, <a href=\"../../stanford/spl/JBEConsole_setErrorColor.html\" title=\"class in stanford.spl\">JBEConsole_setErrorColor</a>, <a href=\"../../stanford/spl/JBEConsole_setExitOnClose.html\" title=\"class in stanford.spl\">JBEConsole_setExitOnClose</a>, <a href=\"../../stanford/spl/JBEConsole_setLocation.html\" title=\"class in stanford.spl\">JBEConsole_setLocation</a>, <a href=\"../../stanford/spl/JBEConsole_setLocationSaved.html\" title=\"class in stanford.spl\">JBEConsole_setLocationSaved</a>, <a href=\"../../stanford/spl/JBEConsole_setOutputColor.html\" title=\"class in stanford.spl\">JBEConsole_setOutputColor</a>, <a href=\"../../stanford/spl/JBEConsole_setTitle.html\" title=\"class in stanford.spl\">JBEConsole_setTitle</a>, <a href=\"../../stanford/spl/JBEConsole_setVisible.html\" title=\"class in stanford.spl\">JBEConsole_setVisible</a>, <a href=\"../../stanford/spl/JBEConsole_toFront.html\" title=\"class in stanford.spl\">JBEConsole_toFront</a>, <a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a>, <a href=\"../../stanford/spl/Note_play.html\" title=\"class in stanford.spl\">Note_play</a>, <a href=\"../../stanford/spl/Regex_match.html\" title=\"class in stanford.spl\">Regex_match</a>, <a href=\"../../stanford/spl/Regex_matchCount.html\" title=\"class in stanford.spl\">Regex_matchCount</a>, <a href=\"../../stanford/spl/Regex_matchCountWithLines.html\" title=\"class in stanford.spl\">Regex_matchCountWithLines</a>, <a href=\"../../stanford/spl/Regex_replace.html\" title=\"class in stanford.spl\">Regex_replace</a>, <a href=\"../../stanford/spl/StanfordCppLib_getJbeVersion.html\" title=\"class in stanford.spl\">StanfordCppLib_getJbeVersion</a>, <a href=\"../../stanford/spl/StanfordCppLib_setCppVersion.html\" title=\"class in stanford.spl\">StanfordCppLib_setCppVersion</a>, <a href=\"../../stanford/spl/URL_download.html\" title=\"class in stanford.spl\">URL_download</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public abstract class <span class=\"typeNameLabel\">JBECommand</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBECommand.html#JBECommand--\">JBECommand</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t3\" class=\"tableTab\"><span><a href=\"javascript:show(4);\">Abstract Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true\" title=\"class or interface in java.util\">HashMap</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a>&gt;</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>abstract void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner)</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner)</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner)</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner)</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></span>()</code>\n<div class=\"block\">Returns whether this command should wait for itself to finish running on the Swing GUI event thread.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBECommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></span>()</code>\n<div class=\"block\">Returns whether this command should run on the Swing GUI event thread.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"JBECommand--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>JBECommand</h4>\n<pre>public&nbsp;JBECommand()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public abstract&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                             <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n</li>\n</ul>\n<a name=\"createCommandTable--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createCommandTable</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true\" title=\"class or interface in java.util\">HashMap</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>,<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a>&gt;&nbsp;createCommandTable()</pre>\n</li>\n</ul>\n<a name=\"nextInt-acm.util.TokenScanner-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>nextInt</h4>\n<pre>public&nbsp;int&nbsp;nextInt(acm.util.TokenScanner&nbsp;paramTokenScanner)</pre>\n</li>\n</ul>\n<a name=\"nextDouble-acm.util.TokenScanner-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>nextDouble</h4>\n<pre>public&nbsp;double&nbsp;nextDouble(acm.util.TokenScanner&nbsp;paramTokenScanner)</pre>\n</li>\n</ul>\n<a name=\"nextString-acm.util.TokenScanner-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>nextString</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;nextString(acm.util.TokenScanner&nbsp;paramTokenScanner)</pre>\n</li>\n</ul>\n<a name=\"nextBase64-acm.util.TokenScanner-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>nextBase64</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;nextBase64(acm.util.TokenScanner&nbsp;paramTokenScanner)</pre>\n</li>\n</ul>\n<a name=\"nextBoolean-acm.util.TokenScanner-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>nextBoolean</h4>\n<pre>public&nbsp;boolean&nbsp;nextBoolean(acm.util.TokenScanner&nbsp;paramTokenScanner)</pre>\n</li>\n</ul>\n<a name=\"shouldInvokeAndWait--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>shouldInvokeAndWait</h4>\n<pre>public&nbsp;boolean&nbsp;shouldInvokeAndWait()</pre>\n<div class=\"block\">Returns whether this command should wait for itself to finish running on the Swing GUI event thread.\n This is true only for graphical/GUI related commands that return important results that must be\n processed in an exact order.</div>\n</li>\n</ul>\n<a name=\"shouldRunOnSwingEventThread--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>shouldRunOnSwingEventThread</h4>\n<pre>public&nbsp;boolean&nbsp;shouldRunOnSwingEventThread()</pre>\n<div class=\"block\">Returns whether this command should run on the Swing GUI event thread.\n This is typically true for graphical/GUI related commands.</div>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JBECanvas.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JBEConsole_minimize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JBECommand.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JBECommand.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/JBEConsole_minimize.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:35 PDT 2017 -->\n<title>JBEConsole_minimize</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"JBEConsole_minimize\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JBEConsole_print.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JBEConsole_minimize.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JBEConsole_minimize.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class JBEConsole_minimize\" class=\"title\">Class JBEConsole_minimize</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.JBEConsole_minimize</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">JBEConsole_minimize</span>\nextends <a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBEConsole_minimize.html#JBEConsole_minimize--\">JBEConsole_minimize</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBEConsole_minimize.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"JBEConsole_minimize--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>JBEConsole_minimize</h4>\n<pre>public&nbsp;JBEConsole_minimize()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JBEConsole_print.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JBEConsole_minimize.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JBEConsole_minimize.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/JBEConsole_print.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:35 PDT 2017 -->\n<title>JBEConsole_print</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"JBEConsole_print\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JBEConsole_minimize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JBEConsole_setCloseOperation.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JBEConsole_print.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JBEConsole_print.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class JBEConsole_print\" class=\"title\">Class JBEConsole_print</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.JBEConsole_print</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">JBEConsole_print</span>\nextends <a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBEConsole_print.html#JBEConsole_print--\">JBEConsole_print</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBEConsole_print.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"JBEConsole_print--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>JBEConsole_print</h4>\n<pre>public&nbsp;JBEConsole_print()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JBEConsole_minimize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JBEConsole_setCloseOperation.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JBEConsole_print.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JBEConsole_print.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/JBEConsole_setCloseOperation.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:35 PDT 2017 -->\n<title>JBEConsole_setCloseOperation</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"JBEConsole_setCloseOperation\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JBEConsole_print.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JBEConsole_setErrorColor.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JBEConsole_setCloseOperation.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JBEConsole_setCloseOperation.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class JBEConsole_setCloseOperation\" class=\"title\">Class JBEConsole_setCloseOperation</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.JBEConsole_setCloseOperation</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">JBEConsole_setCloseOperation</span>\nextends <a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBEConsole_setCloseOperation.html#JBEConsole_setCloseOperation--\">JBEConsole_setCloseOperation</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBEConsole_setCloseOperation.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"JBEConsole_setCloseOperation--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>JBEConsole_setCloseOperation</h4>\n<pre>public&nbsp;JBEConsole_setCloseOperation()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JBEConsole_print.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JBEConsole_setErrorColor.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JBEConsole_setCloseOperation.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JBEConsole_setCloseOperation.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/JBEConsole_setErrorColor.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:35 PDT 2017 -->\n<title>JBEConsole_setErrorColor</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"JBEConsole_setErrorColor\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JBEConsole_setCloseOperation.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JBEConsole_setExitOnClose.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JBEConsole_setErrorColor.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JBEConsole_setErrorColor.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class JBEConsole_setErrorColor\" class=\"title\">Class JBEConsole_setErrorColor</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.JBEConsole_setErrorColor</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">JBEConsole_setErrorColor</span>\nextends <a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBEConsole_setErrorColor.html#JBEConsole_setErrorColor--\">JBEConsole_setErrorColor</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBEConsole_setErrorColor.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"JBEConsole_setErrorColor--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>JBEConsole_setErrorColor</h4>\n<pre>public&nbsp;JBEConsole_setErrorColor()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JBEConsole_setCloseOperation.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JBEConsole_setExitOnClose.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JBEConsole_setErrorColor.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JBEConsole_setErrorColor.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/JBEConsole_setExitOnClose.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:35 PDT 2017 -->\n<title>JBEConsole_setExitOnClose</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"JBEConsole_setExitOnClose\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JBEConsole_setErrorColor.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JBEConsole_setLocation.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JBEConsole_setExitOnClose.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JBEConsole_setExitOnClose.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class JBEConsole_setExitOnClose\" class=\"title\">Class JBEConsole_setExitOnClose</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.JBEConsole_setExitOnClose</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">JBEConsole_setExitOnClose</span>\nextends <a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBEConsole_setExitOnClose.html#JBEConsole_setExitOnClose--\">JBEConsole_setExitOnClose</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBEConsole_setExitOnClose.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"JBEConsole_setExitOnClose--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>JBEConsole_setExitOnClose</h4>\n<pre>public&nbsp;JBEConsole_setExitOnClose()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JBEConsole_setErrorColor.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JBEConsole_setLocation.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JBEConsole_setExitOnClose.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JBEConsole_setExitOnClose.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/JBEConsole_setLocation.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:35 PDT 2017 -->\n<title>JBEConsole_setLocation</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"JBEConsole_setLocation\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JBEConsole_setExitOnClose.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JBEConsole_setLocationSaved.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JBEConsole_setLocation.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JBEConsole_setLocation.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class JBEConsole_setLocation\" class=\"title\">Class JBEConsole_setLocation</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.JBEConsole_setLocation</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">JBEConsole_setLocation</span>\nextends <a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBEConsole_setLocation.html#JBEConsole_setLocation--\">JBEConsole_setLocation</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBEConsole_setLocation.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"JBEConsole_setLocation--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>JBEConsole_setLocation</h4>\n<pre>public&nbsp;JBEConsole_setLocation()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JBEConsole_setExitOnClose.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JBEConsole_setLocationSaved.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JBEConsole_setLocation.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JBEConsole_setLocation.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/JBEConsole_setLocationSaved.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:35 PDT 2017 -->\n<title>JBEConsole_setLocationSaved</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"JBEConsole_setLocationSaved\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JBEConsole_setLocation.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JBEConsole_setOutputColor.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JBEConsole_setLocationSaved.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JBEConsole_setLocationSaved.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class JBEConsole_setLocationSaved\" class=\"title\">Class JBEConsole_setLocationSaved</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.JBEConsole_setLocationSaved</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">JBEConsole_setLocationSaved</span>\nextends <a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBEConsole_setLocationSaved.html#JBEConsole_setLocationSaved--\">JBEConsole_setLocationSaved</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBEConsole_setLocationSaved.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"JBEConsole_setLocationSaved--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>JBEConsole_setLocationSaved</h4>\n<pre>public&nbsp;JBEConsole_setLocationSaved()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JBEConsole_setLocation.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JBEConsole_setOutputColor.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JBEConsole_setLocationSaved.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JBEConsole_setLocationSaved.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/JBEConsole_setOutputColor.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:35 PDT 2017 -->\n<title>JBEConsole_setOutputColor</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"JBEConsole_setOutputColor\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JBEConsole_setLocationSaved.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JBEConsole_setTitle.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JBEConsole_setOutputColor.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JBEConsole_setOutputColor.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class JBEConsole_setOutputColor\" class=\"title\">Class JBEConsole_setOutputColor</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.JBEConsole_setOutputColor</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">JBEConsole_setOutputColor</span>\nextends <a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBEConsole_setOutputColor.html#JBEConsole_setOutputColor--\">JBEConsole_setOutputColor</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBEConsole_setOutputColor.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"JBEConsole_setOutputColor--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>JBEConsole_setOutputColor</h4>\n<pre>public&nbsp;JBEConsole_setOutputColor()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JBEConsole_setLocationSaved.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JBEConsole_setTitle.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JBEConsole_setOutputColor.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JBEConsole_setOutputColor.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/JBEConsole_setTitle.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:35 PDT 2017 -->\n<title>JBEConsole_setTitle</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"JBEConsole_setTitle\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JBEConsole_setOutputColor.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JBEConsole_setVisible.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JBEConsole_setTitle.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JBEConsole_setTitle.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class JBEConsole_setTitle\" class=\"title\">Class JBEConsole_setTitle</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.JBEConsole_setTitle</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">JBEConsole_setTitle</span>\nextends <a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBEConsole_setTitle.html#JBEConsole_setTitle--\">JBEConsole_setTitle</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBEConsole_setTitle.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"JBEConsole_setTitle--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>JBEConsole_setTitle</h4>\n<pre>public&nbsp;JBEConsole_setTitle()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JBEConsole_setOutputColor.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JBEConsole_setVisible.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JBEConsole_setTitle.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JBEConsole_setTitle.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/JBEConsole_setVisible.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:35 PDT 2017 -->\n<title>JBEConsole_setVisible</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"JBEConsole_setVisible\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JBEConsole_setTitle.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JBEConsole_toFront.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JBEConsole_setVisible.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JBEConsole_setVisible.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class JBEConsole_setVisible\" class=\"title\">Class JBEConsole_setVisible</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.JBEConsole_setVisible</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">JBEConsole_setVisible</span>\nextends <a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBEConsole_setVisible.html#JBEConsole_setVisible--\">JBEConsole_setVisible</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBEConsole_setVisible.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"JBEConsole_setVisible--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>JBEConsole_setVisible</h4>\n<pre>public&nbsp;JBEConsole_setVisible()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JBEConsole_setTitle.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JBEConsole_toFront.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JBEConsole_setVisible.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JBEConsole_setVisible.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/JBEConsole_toFront.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:35 PDT 2017 -->\n<title>JBEConsole_toFront</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"JBEConsole_toFront\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JBEConsole_setVisible.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JBEDummyProgram.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JBEConsole_toFront.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JBEConsole_toFront.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class JBEConsole_toFront\" class=\"title\">Class JBEConsole_toFront</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.JBEConsole_toFront</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">JBEConsole_toFront</span>\nextends <a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBEConsole_toFront.html#JBEConsole_toFront--\">JBEConsole_toFront</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBEConsole_toFront.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"JBEConsole_toFront--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>JBEConsole_toFront</h4>\n<pre>public&nbsp;JBEConsole_toFront()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;jbe)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JBEConsole_setVisible.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JBEDummyProgram.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JBEConsole_toFront.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JBEConsole_toFront.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/JBEDummyProgram.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:35 PDT 2017 -->\n<title>JBEDummyProgram</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"JBEDummyProgram\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JBEConsole_toFront.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JBEFileFilter.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JBEDummyProgram.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JBEDummyProgram.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JApplet\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.acm.program.AbstractConsoleProgram\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class JBEDummyProgram\" class=\"title\">Class JBEDummyProgram</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Component</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Container</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Panel</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">java.applet.Applet</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JApplet</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">acm.program.Program</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">acm.program.AbstractConsoleProgram</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.JBEDummyProgram</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd>acm.io.IOModel, <a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/AdjustmentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">AdjustmentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ContainerListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ItemListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ItemListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseWheelListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/TextListener.html?is-external=true\" title=\"class or interface in java.awt.event\">TextListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowFocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowStateListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowStateListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListDataListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListDataListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListSelectionListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListSelectionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/MouseInputListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">MouseInputListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/PopupMenuListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">PopupMenuListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/RootPaneContainer.html?is-external=true\" title=\"class or interface in javax.swing\">RootPaneContainer</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">JBEDummyProgram</span>\nextends <a href=\"../../acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#stanford.spl.JBEDummyProgram\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JApplet\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.AccessibleJApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet.AccessibleJApplet</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.applet.Applet\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.applet.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">Applet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.AccessibleApplet.html?is-external=true\" title=\"class or interface in java.applet\">Applet.AccessibleApplet</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Panel\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\">Panel</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.AccessibleAWTPanel.html?is-external=true\" title=\"class or interface in java.awt\">Panel.AccessibleAWTPanel</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.AccessibleAWTContainer.html?is-external=true\" title=\"class or interface in java.awt\">Container.AccessibleAWTContainer</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.AccessibleAWTComponent.html?is-external=true\" title=\"class or interface in java.awt\">Component.AccessibleAWTComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BaselineResizeBehavior.html?is-external=true\" title=\"class or interface in java.awt\">Component.BaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BltBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.BltBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.FlipBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.FlipBufferStrategy</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.program.AbstractConsoleProgram\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;acm.program.<a href=\"../../acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></h3>\n<code><a href=\"../../acm/program/AbstractConsoleProgram.html#PROGRAM_COMPLETED_TITLE_SUFFIX\">PROGRAM_COMPLETED_TITLE_SUFFIX</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.program.Program\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;acm.program.<a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></h3>\n<code><a href=\"../../acm/program/Program.html#CONFIG_FILE_NAME\">CONFIG_FILE_NAME</a>, <a href=\"../../acm/program/Program.html#invisibleObjects\">invisibleObjects</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.JApplet\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#accessibleContext\" title=\"class or interface in javax.swing\">accessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#rootPane\" title=\"class or interface in javax.swing\">rootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#rootPaneCheckingEnabled\" title=\"class or interface in javax.swing\">rootPaneCheckingEnabled</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#BOTTOM_ALIGNMENT\" title=\"class or interface in java.awt\">BOTTOM_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#CENTER_ALIGNMENT\" title=\"class or interface in java.awt\">CENTER_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#LEFT_ALIGNMENT\" title=\"class or interface in java.awt\">LEFT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#RIGHT_ALIGNMENT\" title=\"class or interface in java.awt\">RIGHT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#TOP_ALIGNMENT\" title=\"class or interface in java.awt\">TOP_ALIGNMENT</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.program.ProgramInterface\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;acm.program.<a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a></h3>\n<code><a href=\"../../acm/program/ProgramInterface.html#CENTER\">CENTER</a>, <a href=\"../../acm/program/ProgramInterface.html#EAST\">EAST</a>, <a href=\"../../acm/program/ProgramInterface.html#NORTH\">NORTH</a>, <a href=\"../../acm/program/ProgramInterface.html#SOUTH\">SOUTH</a>, <a href=\"../../acm/program/ProgramInterface.html#WEST\">WEST</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.image.ImageObserver\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ABORT\" title=\"class or interface in java.awt.image\">ABORT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ALLBITS\" title=\"class or interface in java.awt.image\">ALLBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ERROR\" title=\"class or interface in java.awt.image\">ERROR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#FRAMEBITS\" title=\"class or interface in java.awt.image\">FRAMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#HEIGHT\" title=\"class or interface in java.awt.image\">HEIGHT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#PROPERTIES\" title=\"class or interface in java.awt.image\">PROPERTIES</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#SOMEBITS\" title=\"class or interface in java.awt.image\">SOMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#WIDTH\" title=\"class or interface in java.awt.image\">WIDTH</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBEDummyProgram.html#JBEDummyProgram-stanford.spl.JavaBackEnd-\">JBEDummyProgram</a></span>(<a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBEDummyProgram.html#menuAction-java.awt.event.ActionEvent-\">menuAction</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;event)</code>\n<div class=\"block\">Responds to menu clicks.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.program.AbstractConsoleProgram\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.program.<a href=\"../../acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></h3>\n<code><a href=\"../../acm/program/AbstractConsoleProgram.html#checkCompilerFlags--\">checkCompilerFlags</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#clearConsole--\">clearConsole</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#compareOutput--\">compareOutput</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#endHook--\">endHook</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#fontEnlarge--\">fontEnlarge</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#fontShrink--\">fontShrink</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#fontToggleBold--\">fontToggleBold</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#getAllOutput--\">getAllOutput</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#getFont--\">getFont</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#historyDown--\">historyDown</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#historyUp--\">historyUp</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#loadConfiguration-java.util.Properties-\">loadConfiguration</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#loadInputScript--\">loadInputScript</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#mouseWheelMoved-java.awt.event.MouseWheelEvent-\">mouseWheelMoved</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#promptUserForFile-java.lang.String-\">promptUserForFile</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#promptUserForFile-java.lang.String-java.lang.String-\">promptUserForFile</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#promptUserForFile-java.lang.String-java.lang.String-java.lang.String-\">promptUserForFile</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#saveConfiguration-java.util.Properties-\">saveConfiguration</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#scrollLineDown--\">scrollLineDown</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#scrollLineUp--\">scrollLineUp</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#scrollPageDown--\">scrollPageDown</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#scrollPageUp--\">scrollPageUp</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#scrollToBottom--\">scrollToBottom</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#scrollToTop--\">scrollToTop</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#setClearConsoleEnabled-boolean-\">setClearConsoleEnabled</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#setColorFromChooser-boolean-\">setColorFromChooser</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#setFont-java.awt.Font-\">setFont</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#setFont-java.lang.String-\">setFont</a>, <a href=\"../../acm/program/AbstractConsoleProgram.html#setFontFromChooser--\">setFontFromChooser</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.program.Program\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.program.<a href=\"../../acm/program/Program.html\" title=\"class in acm.program\">Program</a></h3>\n<code><a href=\"../../acm/program/Program.html#actionPerformed-java.awt.event.ActionEvent-\">actionPerformed</a>, <a href=\"../../acm/program/Program.html#add-java.awt.Component-java.lang.String-java.lang.Object-\">add</a>, <a href=\"../../acm/program/Program.html#addActionListeners--\">addActionListeners</a>, <a href=\"../../acm/program/Program.html#addActionListeners-java.awt.event.ActionListener-\">addActionListeners</a>, <a href=\"../../acm/program/Program.html#addActionListenersToButtonsOnly--\">addActionListenersToButtonsOnly</a>, <a href=\"../../acm/program/Program.html#addAllActionListeners--\">addAllActionListeners</a>, <a href=\"../../acm/program/Program.html#addExitHook-java.lang.Object-\">addExitHook</a>, <a href=\"../../acm/program/Program.html#addImpl-java.awt.Component-java.lang.Object-int-\">addImpl</a>, <a href=\"../../acm/program/Program.html#adjustmentValueChanged-java.awt.event.AdjustmentEvent-\">adjustmentValueChanged</a>, <a href=\"../../acm/program/Program.html#alert-java.lang.Object-\">alert</a>, <a href=\"../../acm/program/Program.html#alert-java.lang.String-\">alert</a>, <a href=\"../../acm/program/Program.html#animation--\">animation</a>, <a href=\"../../acm/program/Program.html#center--\">center</a>, <a href=\"../../acm/program/Program.html#changedUpdate-javax.swing.event.DocumentEvent-\">changedUpdate</a>, <a href=\"../../acm/program/Program.html#checkKill--\">checkKill</a>, <a href=\"../../acm/program/Program.html#checkStartupSettings--\">checkStartupSettings</a>, <a href=\"../../acm/program/Program.html#componentAdded-java.awt.event.ContainerEvent-\">componentAdded</a>, <a href=\"../../acm/program/Program.html#componentHidden-java.awt.event.ComponentEvent-\">componentHidden</a>, <a href=\"../../acm/program/Program.html#componentMoved-java.awt.event.ComponentEvent-\">componentMoved</a>, <a href=\"../../acm/program/Program.html#componentRemoved-java.awt.event.ContainerEvent-\">componentRemoved</a>, <a href=\"../../acm/program/Program.html#componentResized-java.awt.event.ComponentEvent-\">componentResized</a>, <a href=\"../../acm/program/Program.html#componentShown-java.awt.event.ComponentEvent-\">componentShown</a>, <a href=\"../../acm/program/Program.html#confirm-java.lang.String-\">confirm</a>, <a href=\"../../acm/program/Program.html#contentsChanged-javax.swing.event.ListDataEvent-\">contentsChanged</a>, <a href=\"../../acm/program/Program.html#createConsole--\">createConsole</a>, <a href=\"../../acm/program/Program.html#createDialogIO--\">createDialogIO</a>, <a href=\"../../acm/program/Program.html#createMenuBar--\">createMenuBar</a>, <a href=\"../../acm/program/Program.html#createParameterTable-java.lang.String:A-\">createParameterTable</a>, <a href=\"../../acm/program/Program.html#createProgramFrame--\">createProgramFrame</a>, <a href=\"../../acm/program/Program.html#destroy--\">destroy</a>, <a href=\"../../acm/program/Program.html#error-java.lang.Exception-\">error</a>, <a href=\"../../acm/program/Program.html#error-java.lang.Exception-java.lang.String-\">error</a>, <a href=\"../../acm/program/Program.html#error-java.lang.String-\">error</a>, <a href=\"../../acm/program/Program.html#exit--\">exit</a>, <a href=\"../../acm/program/Program.html#fileExists-java.lang.String-\">fileExists</a>, <a href=\"../../acm/program/Program.html#fileExists-java.lang.String-java.lang.String-\">fileExists</a>, <a href=\"../../acm/program/Program.html#fileExistsInsideJAR-java.lang.String-\">fileExistsInsideJAR</a>, <a href=\"../../acm/program/Program.html#fileExistsInsideJAR-java.lang.String-java.lang.String-\">fileExistsInsideJAR</a>, <a href=\"../../acm/program/Program.html#fileExistsOnDisk-java.lang.String-\">fileExistsOnDisk</a>, <a href=\"../../acm/program/Program.html#fileExistsOnDisk-java.lang.String-java.lang.String-\">fileExistsOnDisk</a>, <a href=\"../../acm/program/Program.html#fileSize-java.lang.String-\">fileSize</a>, <a href=\"../../acm/program/Program.html#fileSize-java.lang.String-java.lang.String-\">fileSize</a>, <a href=\"../../acm/program/Program.html#focusGained-java.awt.event.FocusEvent-\">focusGained</a>, <a href=\"../../acm/program/Program.html#focusLost-java.awt.event.FocusEvent-\">focusLost</a>, <a href=\"../../acm/program/Program.html#getAnimationDelay--\">getAnimationDelay</a>, <a href=\"../../acm/program/Program.html#getAppletStub--\">getAppletStub</a>, <a href=\"../../acm/program/Program.html#getArgumentArray--\">getArgumentArray</a>, <a href=\"../../acm/program/Program.html#getBoolean--\">getBoolean</a>, <a href=\"../../acm/program/Program.html#getBoolean-java.lang.String-\">getBoolean</a>, <a href=\"../../acm/program/Program.html#getBoolean-java.lang.String-java.lang.String-java.lang.String-\">getBoolean</a>, <a href=\"../../acm/program/Program.html#getBorder-java.lang.String-\">getBorder</a>, <a href=\"../../acm/program/Program.html#getBottomY--\">getBottomY</a>, <a href=\"../../acm/program/Program.html#getCenterLocation--\">getCenterLocation</a>, <a href=\"../../acm/program/Program.html#getCenterX--\">getCenterX</a>, <a href=\"../../acm/program/Program.html#getCenterY--\">getCenterY</a>, <a href=\"../../acm/program/Program.html#getCentralRegionSize--\">getCentralRegionSize</a>, <a href=\"../../acm/program/Program.html#getConsole--\">getConsole</a>, <a href=\"../../acm/program/Program.html#getDialog--\">getDialog</a>, <a href=\"../../acm/program/Program.html#getDouble--\">getDouble</a>, <a href=\"../../acm/program/Program.html#getDouble-double-double-\">getDouble</a>, <a href=\"../../acm/program/Program.html#getDouble-java.lang.String-\">getDouble</a>, <a href=\"../../acm/program/Program.html#getDouble-java.lang.String-double-double-\">getDouble</a>, <a href=\"../../acm/program/Program.html#getHeight--\">getHeight</a>, <a href=\"../../acm/program/Program.html#getInputModel--\">getInputModel</a>, <a href=\"../../acm/program/Program.html#getInteger--\">getInteger</a>, <a href=\"../../acm/program/Program.html#getInteger-int-int-\">getInteger</a>, <a href=\"../../acm/program/Program.html#getInteger-java.lang.String-\">getInteger</a>, <a href=\"../../acm/program/Program.html#getInteger-java.lang.String-int-int-\">getInteger</a>, <a href=\"../../acm/program/Program.html#getJFrame--\">getJFrame</a>, <a href=\"../../acm/program/Program.html#getLayout--\">getLayout</a>, <a href=\"../../acm/program/Program.html#getLine--\">getLine</a>, <a href=\"../../acm/program/Program.html#getLine-java.lang.String-\">getLine</a>, <a href=\"../../acm/program/Program.html#getMainThread--\">getMainThread</a>, <a href=\"../../acm/program/Program.html#getMenuBar--\">getMenuBar</a>, <a href=\"../../acm/program/Program.html#getOutputColor--\">getOutputColor</a>, <a href=\"../../acm/program/Program.html#getOutputModel--\">getOutputModel</a>, <a href=\"../../acm/program/Program.html#getParameter-java.lang.String-\">getParameter</a>, <a href=\"../../acm/program/Program.html#getParameterTable--\">getParameterTable</a>, <a href=\"../../acm/program/Program.html#getPreferredSize--\">getPreferredSize</a>, <a href=\"../../acm/program/Program.html#getReader--\">getReader</a>, <a href=\"../../acm/program/Program.html#getReal--\">getReal</a>, <a href=\"../../acm/program/Program.html#getReal-double-double-\">getReal</a>, <a href=\"../../acm/program/Program.html#getReal-java.lang.String-\">getReal</a>, <a href=\"../../acm/program/Program.html#getReal-java.lang.String-double-double-\">getReal</a>, <a href=\"../../acm/program/Program.html#getRegionPanel-java.lang.String-\">getRegionPanel</a>, <a href=\"../../acm/program/Program.html#getRightX--\">getRightX</a>, <a href=\"../../acm/program/Program.html#getScreenHeight--\">getScreenHeight</a>, <a href=\"../../acm/program/Program.html#getScreenSize--\">getScreenSize</a>, <a href=\"../../acm/program/Program.html#getScreenWidth--\">getScreenWidth</a>, <a href=\"../../acm/program/Program.html#getStartupObject--\">getStartupObject</a>, <a href=\"../../acm/program/Program.html#getTitle--\">getTitle</a>, <a href=\"../../acm/program/Program.html#getWidth--\">getWidth</a>, <a href=\"../../acm/program/Program.html#getWindow--\">getWindow</a>, <a href=\"../../acm/program/Program.html#getWriter--\">getWriter</a>, <a href=\"../../acm/program/Program.html#getYesOrNo-java.lang.String-\">getYesOrNo</a>, <a href=\"../../acm/program/Program.html#hasConfiguration--\">hasConfiguration</a>, <a href=\"../../acm/program/Program.html#init--\">init</a>, <a href=\"../../acm/program/Program.html#insertUpdate-javax.swing.event.DocumentEvent-\">insertUpdate</a>, <a href=\"../../acm/program/Program.html#intervalAdded-javax.swing.event.ListDataEvent-\">intervalAdded</a>, <a href=\"../../acm/program/Program.html#intervalRemoved-javax.swing.event.ListDataEvent-\">intervalRemoved</a>, <a href=\"../../acm/program/Program.html#isAnimated--\">isAnimated</a>, <a href=\"../../acm/program/Program.html#isApplet--\">isApplet</a>, <a href=\"../../acm/program/Program.html#isAppletMode--\">isAppletMode</a>, <a href=\"../../acm/program/Program.html#isExitOnClose--\">isExitOnClose</a>, <a href=\"../../acm/program/Program.html#isInitialized--\">isInitialized</a>, <a href=\"../../acm/program/Program.html#isStarted--\">isStarted</a>, <a href=\"../../acm/program/Program.html#itemStateChanged-java.awt.event.ItemEvent-\">itemStateChanged</a>, <a href=\"../../acm/program/Program.html#keyPressed-java.awt.event.KeyEvent-\">keyPressed</a>, <a href=\"../../acm/program/Program.html#keyReleased-java.awt.event.KeyEvent-\">keyReleased</a>, <a href=\"../../acm/program/Program.html#keyTyped-java.awt.event.KeyEvent-\">keyTyped</a>, <a href=\"../../acm/program/Program.html#killMe--\">killMe</a>, <a href=\"../../acm/program/Program.html#loadConfiguration--\">loadConfiguration</a>, <a href=\"../../acm/program/Program.html#main-java.lang.String:A-\">main</a>, <a href=\"../../acm/program/Program.html#menuCanceled-javax.swing.event.MenuEvent-\">menuCanceled</a>, <a href=\"../../acm/program/Program.html#menuDeselected-javax.swing.event.MenuEvent-\">menuDeselected</a>, <a href=\"../../acm/program/Program.html#menuSelected-javax.swing.event.MenuEvent-\">menuSelected</a>, <a href=\"../../acm/program/Program.html#mouseClicked-java.awt.event.MouseEvent-\">mouseClicked</a>, <a href=\"../../acm/program/Program.html#mouseDragged-java.awt.event.MouseEvent-\">mouseDragged</a>, <a href=\"../../acm/program/Program.html#mouseEntered-java.awt.event.MouseEvent-\">mouseEntered</a>, <a href=\"../../acm/program/Program.html#mouseExited-java.awt.event.MouseEvent-\">mouseExited</a>, <a href=\"../../acm/program/Program.html#mouseMoved-java.awt.event.MouseEvent-\">mouseMoved</a>, <a href=\"../../acm/program/Program.html#mousePressed-java.awt.event.MouseEvent-\">mousePressed</a>, <a href=\"../../acm/program/Program.html#mouseReleased-java.awt.event.MouseEvent-\">mouseReleased</a>, <a href=\"../../acm/program/Program.html#openFile-java.lang.String-\">openFile</a>, <a href=\"../../acm/program/Program.html#openFile-java.lang.String-java.lang.String-\">openFile</a>, <a href=\"../../acm/program/Program.html#openFileFromDisk-java.lang.String-\">openFileFromDisk</a>, <a href=\"../../acm/program/Program.html#openFileFromDisk-java.lang.String-java.lang.String-\">openFileFromDisk</a>, <a href=\"../../acm/program/Program.html#openFileFromJAR-java.lang.String-\">openFileFromJAR</a>, <a href=\"../../acm/program/Program.html#openFileFromJAR-java.lang.String-java.lang.String-\">openFileFromJAR</a>, <a href=\"../../acm/program/Program.html#pack--\">pack</a>, <a href=\"../../acm/program/Program.html#pause-double-\">pause</a>, <a href=\"../../acm/program/Program.html#pauseTick--\">pauseTick</a>, <a href=\"../../acm/program/Program.html#popupMenuCanceled-javax.swing.event.PopupMenuEvent-\">popupMenuCanceled</a>, <a href=\"../../acm/program/Program.html#popupMenuWillBecomeInvisible-javax.swing.event.PopupMenuEvent-\">popupMenuWillBecomeInvisible</a>, <a href=\"../../acm/program/Program.html#popupMenuWillBecomeVisible-javax.swing.event.PopupMenuEvent-\">popupMenuWillBecomeVisible</a>, <a href=\"../../acm/program/Program.html#print-boolean-\">print</a>, <a href=\"../../acm/program/Program.html#print-boolean-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-char-\">print</a>, <a href=\"../../acm/program/Program.html#print-char-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-double-\">print</a>, <a href=\"../../acm/program/Program.html#print-double-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-float-\">print</a>, <a href=\"../../acm/program/Program.html#print-float-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-int-\">print</a>, <a href=\"../../acm/program/Program.html#print-int-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-long-\">print</a>, <a href=\"../../acm/program/Program.html#print-long-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-java.lang.Object-\">print</a>, <a href=\"../../acm/program/Program.html#print-java.lang.Object-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#print-java.lang.String-\">print</a>, <a href=\"../../acm/program/Program.html#print-java.lang.String-java.awt.Color-\">print</a>, <a href=\"../../acm/program/Program.html#printf-java.lang.String-java.lang.Object...-\">printf</a>, <a href=\"../../acm/program/Program.html#println--\">println</a>, <a href=\"../../acm/program/Program.html#println-boolean-\">println</a>, <a href=\"../../acm/program/Program.html#println-boolean-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-char-\">println</a>, <a href=\"../../acm/program/Program.html#println-char-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-double-\">println</a>, <a href=\"../../acm/program/Program.html#println-double-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-float-\">println</a>, <a href=\"../../acm/program/Program.html#println-float-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-int-\">println</a>, <a href=\"../../acm/program/Program.html#println-int-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-long-\">println</a>, <a href=\"../../acm/program/Program.html#println-long-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-java.lang.Object-\">println</a>, <a href=\"../../acm/program/Program.html#println-java.lang.Object-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#println-java.lang.String-\">println</a>, <a href=\"../../acm/program/Program.html#println-java.lang.String-java.awt.Color-\">println</a>, <a href=\"../../acm/program/Program.html#prompt-java.lang.String-\">prompt</a>, <a href=\"../../acm/program/Program.html#readBoolean--\">readBoolean</a>, <a href=\"../../acm/program/Program.html#readBoolean-java.lang.String-\">readBoolean</a>, <a href=\"../../acm/program/Program.html#readBoolean-java.lang.String-java.lang.String-java.lang.String-\">readBoolean</a>, <a href=\"../../acm/program/Program.html#readDouble--\">readDouble</a>, <a href=\"../../acm/program/Program.html#readDouble-double-double-\">readDouble</a>, <a href=\"../../acm/program/Program.html#readDouble-java.lang.String-\">readDouble</a>, <a href=\"../../acm/program/Program.html#readDouble-java.lang.String-double-double-\">readDouble</a>, <a href=\"../../acm/program/Program.html#readInt--\">readInt</a>, <a href=\"../../acm/program/Program.html#readInt-int-int-\">readInt</a>, <a href=\"../../acm/program/Program.html#readInt-java.lang.String-\">readInt</a>, <a href=\"../../acm/program/Program.html#readInt-java.lang.String-int-int-\">readInt</a>, <a href=\"../../acm/program/Program.html#readLine--\">readLine</a>, <a href=\"../../acm/program/Program.html#readLine-java.lang.String-\">readLine</a>, <a href=\"../../acm/program/Program.html#remove-java.awt.Component-\">remove</a>, <a href=\"../../acm/program/Program.html#remove-int-\">remove</a>, <a href=\"../../acm/program/Program.html#removeAll--\">removeAll</a>, <a href=\"../../acm/program/Program.html#removeFromRegion-java.awt.Component-java.lang.String-\">removeFromRegion</a>, <a href=\"../../acm/program/Program.html#removeMenuBar--\">removeMenuBar</a>, <a href=\"../../acm/program/Program.html#removeUpdate-javax.swing.event.DocumentEvent-\">removeUpdate</a>, <a href=\"../../acm/program/Program.html#repaint--\">repaint</a>, <a href=\"../../acm/program/Program.html#run--\">run</a>, <a href=\"../../acm/program/Program.html#runHook--\">runHook</a>, <a href=\"../../acm/program/Program.html#saveConfiguration--\">saveConfiguration</a>, <a href=\"../../acm/program/Program.html#setAnimated-boolean-\">setAnimated</a>, <a href=\"../../acm/program/Program.html#setAnimationDelay-int-\">setAnimationDelay</a>, <a href=\"../../acm/program/Program.html#setAppletStub-java.applet.AppletStub-\">setAppletStub</a>, <a href=\"../../acm/program/Program.html#setBackground-java.awt.Color-\">setBackground</a>, <a href=\"../../acm/program/Program.html#setBottomY-double-\">setBottomY</a>, <a href=\"../../acm/program/Program.html#setCenterLocation-double-double-\">setCenterLocation</a>, <a href=\"../../acm/program/Program.html#setCenterX-double-\">setCenterX</a>, <a href=\"../../acm/program/Program.html#setCenterY-double-\">setCenterY</a>, <a href=\"../../acm/program/Program.html#setConsole-acm.io.IOConsole-\">setConsole</a>, <a href=\"../../acm/program/Program.html#setDialog-acm.io.IODialog-\">setDialog</a>, <a href=\"../../acm/program/Program.html#setExitOnClose-boolean-\">setExitOnClose</a>, <a href=\"../../acm/program/Program.html#setFramesPerSecond-int-\">setFramesPerSecond</a>, <a href=\"../../acm/program/Program.html#setHeight-double-\">setHeight</a>, <a href=\"../../acm/program/Program.html#setInputModel-acm.io.IOModel-\">setInputModel</a>, <a href=\"../../acm/program/Program.html#setInvisible-acm.graphics.GObject-boolean-\">setInvisible</a>, <a href=\"../../acm/program/Program.html#setJFrame-javax.swing.JFrame-\">setJFrame</a>, <a href=\"../../acm/program/Program.html#setJMenuBar-javax.swing.JMenuBar-\">setJMenuBar</a>, <a href=\"../../acm/program/Program.html#setLayout-java.awt.LayoutManager-\">setLayout</a>, <a href=\"../../acm/program/Program.html#setLocation-double-double-\">setLocation</a>, <a href=\"../../acm/program/Program.html#setLocation-acm.graphics.GPoint-\">setLocation</a>, <a href=\"../../acm/program/Program.html#setOutputColor-java.awt.Color-\">setOutputColor</a>, <a href=\"../../acm/program/Program.html#setOutputModel-acm.io.IOModel-\">setOutputModel</a>, <a href=\"../../acm/program/Program.html#setParameter-java.lang.String-java.lang.String-\">setParameter</a>, <a href=\"../../acm/program/Program.html#setParameterTable-java.util.Map-\">setParameterTable</a>, <a href=\"../../acm/program/Program.html#setPauseScaleFactor-double-\">setPauseScaleFactor</a>, <a href=\"../../acm/program/Program.html#setResizable-boolean-\">setResizable</a>, <a href=\"../../acm/program/Program.html#setRightX-double-\">setRightX</a>, <a href=\"../../acm/program/Program.html#setShowPixelGrid-boolean-\">setShowPixelGrid</a>, <a href=\"../../acm/program/Program.html#setShowPixelInfo-boolean-\">setShowPixelInfo</a>, <a href=\"../../acm/program/Program.html#setSize-double-double-\">setSize</a>, <a href=\"../../acm/program/Program.html#setStartupObject-java.lang.Object-\">setStartupObject</a>, <a href=\"../../acm/program/Program.html#setTitle-java.lang.String-\">setTitle</a>, <a href=\"../../acm/program/Program.html#setWidth-double-\">setWidth</a>, <a href=\"../../acm/program/Program.html#setX-double-\">setX</a>, <a href=\"../../acm/program/Program.html#setY-double-\">setY</a>, <a href=\"../../acm/program/Program.html#showErrorMessage-java.lang.String-\">showErrorMessage</a>, <a href=\"../../acm/program/Program.html#start--\">start</a>, <a href=\"../../acm/program/Program.html#start-java.lang.String:A-\">start</a>, <a href=\"../../acm/program/Program.html#startAnimation--\">startAnimation</a>, <a href=\"../../acm/program/Program.html#startHook--\">startHook</a>, <a href=\"../../acm/program/Program.html#startRun--\">startRun</a>, <a href=\"../../acm/program/Program.html#stateChanged-javax.swing.event.ChangeEvent-\">stateChanged</a>, <a href=\"../../acm/program/Program.html#stopAnimation--\">stopAnimation</a>, <a href=\"../../acm/program/Program.html#textValueChanged-java.awt.event.TextEvent-\">textValueChanged</a>, <a href=\"../../acm/program/Program.html#validate--\">validate</a>, <a href=\"../../acm/program/Program.html#valueChanged-javax.swing.event.ListSelectionEvent-\">valueChanged</a>, <a href=\"../../acm/program/Program.html#windowActivated-java.awt.event.WindowEvent-\">windowActivated</a>, <a href=\"../../acm/program/Program.html#windowClosed-java.awt.event.WindowEvent-\">windowClosed</a>, <a href=\"../../acm/program/Program.html#windowClosing-java.awt.event.WindowEvent-\">windowClosing</a>, <a href=\"../../acm/program/Program.html#windowDeactivated-java.awt.event.WindowEvent-\">windowDeactivated</a>, <a href=\"../../acm/program/Program.html#windowDeiconified-java.awt.event.WindowEvent-\">windowDeiconified</a>, <a href=\"../../acm/program/Program.html#windowGainedFocus-java.awt.event.WindowEvent-\">windowGainedFocus</a>, <a href=\"../../acm/program/Program.html#windowIconified-java.awt.event.WindowEvent-\">windowIconified</a>, <a href=\"../../acm/program/Program.html#windowLostFocus-java.awt.event.WindowEvent-\">windowLostFocus</a>, <a href=\"../../acm/program/Program.html#windowOpened-java.awt.event.WindowEvent-\">windowOpened</a>, <a href=\"../../acm/program/Program.html#windowStateChanged-java.awt.event.WindowEvent-\">windowStateChanged</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JApplet\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\">JApplet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#createRootPane--\" title=\"class or interface in javax.swing\">createRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getAccessibleContext--\" title=\"class or interface in javax.swing\">getAccessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getContentPane--\" title=\"class or interface in javax.swing\">getContentPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getGlassPane--\" title=\"class or interface in javax.swing\">getGlassPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getGraphics--\" title=\"class or interface in javax.swing\">getGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getJMenuBar--\" title=\"class or interface in javax.swing\">getJMenuBar</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getLayeredPane--\" title=\"class or interface in javax.swing\">getLayeredPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getRootPane--\" title=\"class or interface in javax.swing\">getRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#getTransferHandler--\" title=\"class or interface in javax.swing\">getTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#isRootPaneCheckingEnabled--\" title=\"class or interface in javax.swing\">isRootPaneCheckingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#paramString--\" title=\"class or interface in javax.swing\">paramString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#repaint-long-int-int-int-int-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setContentPane-java.awt.Container-\" title=\"class or interface in javax.swing\">setContentPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setGlassPane-java.awt.Component-\" title=\"class or interface in javax.swing\">setGlassPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setLayeredPane-javax.swing.JLayeredPane-\" title=\"class or interface in javax.swing\">setLayeredPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setRootPane-javax.swing.JRootPane-\" title=\"class or interface in javax.swing\">setRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setRootPaneCheckingEnabled-boolean-\" title=\"class or interface in javax.swing\">setRootPaneCheckingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#setTransferHandler-javax.swing.TransferHandler-\" title=\"class or interface in javax.swing\">setTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true#update-java.awt.Graphics-\" title=\"class or interface in javax.swing\">update</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.applet.Applet\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.applet.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\">Applet</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAppletContext--\" title=\"class or interface in java.applet\">getAppletContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAppletInfo--\" title=\"class or interface in java.applet\">getAppletInfo</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAudioClip-java.net.URL-\" title=\"class or interface in java.applet\">getAudioClip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getAudioClip-java.net.URL-java.lang.String-\" title=\"class or interface in java.applet\">getAudioClip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getCodeBase--\" title=\"class or interface in java.applet\">getCodeBase</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getDocumentBase--\" title=\"class or interface in java.applet\">getDocumentBase</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getImage-java.net.URL-\" title=\"class or interface in java.applet\">getImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getImage-java.net.URL-java.lang.String-\" title=\"class or interface in java.applet\">getImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getLocale--\" title=\"class or interface in java.applet\">getLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#getParameterInfo--\" title=\"class or interface in java.applet\">getParameterInfo</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#isActive--\" title=\"class or interface in java.applet\">isActive</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#isValidateRoot--\" title=\"class or interface in java.applet\">isValidateRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#newAudioClip-java.net.URL-\" title=\"class or interface in java.applet\">newAudioClip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#play-java.net.URL-\" title=\"class or interface in java.applet\">play</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#play-java.net.URL-java.lang.String-\" title=\"class or interface in java.applet\">play</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#resize-java.awt.Dimension-\" title=\"class or interface in java.applet\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#resize-int-int-\" title=\"class or interface in java.applet\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#setStub-java.applet.AppletStub-\" title=\"class or interface in java.applet\">setStub</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#showStatus-java.lang.String-\" title=\"class or interface in java.applet\">showStatus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true#stop--\" title=\"class or interface in java.applet\">stop</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Panel\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\">Panel</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true#addNotify--\" title=\"class or interface in java.awt\">addNotify</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.lang.String-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">addContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#applyComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">applyComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#areFocusTraversalKeysSet-int-\" title=\"class or interface in java.awt\">areFocusTraversalKeysSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#countComponents--\" title=\"class or interface in java.awt\">countComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#deliverEvent-java.awt.Event-\" title=\"class or interface in java.awt\">deliverEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#doLayout--\" title=\"class or interface in java.awt\">doLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-int-int-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getAlignmentX--\" title=\"class or interface in java.awt\">getAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getAlignmentY--\" title=\"class or interface in java.awt\">getAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponent-int-\" title=\"class or interface in java.awt\">getComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-int-int-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentCount--\" title=\"class or interface in java.awt\">getComponentCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponents--\" title=\"class or interface in java.awt\">getComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentZOrder-java.awt.Component-\" title=\"class or interface in java.awt\">getComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getContainerListeners--\" title=\"class or interface in java.awt\">getContainerListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalKeys-int-\" title=\"class or interface in java.awt\">getFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalPolicy--\" title=\"class or interface in java.awt\">getFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getInsets--\" title=\"class or interface in java.awt\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getListeners-java.lang.Class-\" title=\"class or interface in java.awt\">getListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMaximumSize--\" title=\"class or interface in java.awt\">getMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMinimumSize--\" title=\"class or interface in java.awt\">getMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMousePosition-boolean-\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#insets--\" title=\"class or interface in java.awt\">insets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#invalidate--\" title=\"class or interface in java.awt\">invalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isAncestorOf-java.awt.Component-\" title=\"class or interface in java.awt\">isAncestorOf</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot--\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot-java.awt.Container-\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicyProvider--\" title=\"class or interface in java.awt\">isFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicySet--\" title=\"class or interface in java.awt\">isFocusTraversalPolicySet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#layout--\" title=\"class or interface in java.awt\">layout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintStream-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintWriter-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#locate-int-int-\" title=\"class or interface in java.awt\">locate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#minimumSize--\" title=\"class or interface in java.awt\">minimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paint-java.awt.Graphics-\" title=\"class or interface in java.awt\">paint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paintComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#preferredSize--\" title=\"class or interface in java.awt\">preferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#print-java.awt.Graphics-\" title=\"class or interface in java.awt\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#printComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">printComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processContainerEvent-java.awt.event.ContainerEvent-\" title=\"class or interface in java.awt\">processContainerEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">processEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">removeContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeNotify--\" title=\"class or interface in java.awt\">removeNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setComponentZOrder-java.awt.Component-int-\" title=\"class or interface in java.awt\">setComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusCycleRoot-boolean-\" title=\"class or interface in java.awt\">setFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalKeys-int-java.util.Set-\" title=\"class or interface in java.awt\">setFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicy-java.awt.FocusTraversalPolicy-\" title=\"class or interface in java.awt\">setFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicyProvider-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#transferFocusDownCycle--\" title=\"class or interface in java.awt\">transferFocusDownCycle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validateTree--\" title=\"class or interface in java.awt\">validateTree</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#action-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">action</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#add-java.awt.PopupMenu-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">addComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">addFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">addHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">addHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">addInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">addKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">addMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">addMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">addMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#bounds--\" title=\"class or interface in java.awt\">bounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#coalesceEvents-java.awt.AWTEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">coalesceEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-int-int-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-java.awt.Point-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-java.awt.image.ImageProducer-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-int-int-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-java.awt.ImageCapabilities-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disable--\" title=\"class or interface in java.awt\">disable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disableEvents-long-\" title=\"class or interface in java.awt\">disableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#dispatchEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">dispatchEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable--\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable-boolean-\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableEvents-long-\" title=\"class or interface in java.awt\">enableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableInputMethods-boolean-\" title=\"class or interface in java.awt\">enableInputMethods</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-boolean-boolean-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-byte-byte-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-char-char-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-double-double-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-float-float-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-int-int-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-long-long-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-short-short-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBackground--\" title=\"class or interface in java.awt\">getBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBaseline-int-int-\" title=\"class or interface in java.awt\">getBaseline</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBaselineResizeBehavior--\" title=\"class or interface in java.awt\">getBaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds--\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getColorModel--\" title=\"class or interface in java.awt\">getColorModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentListeners--\" title=\"class or interface in java.awt\">getComponentListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentOrientation--\" title=\"class or interface in java.awt\">getComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getCursor--\" title=\"class or interface in java.awt\">getCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getDropTarget--\" title=\"class or interface in java.awt\">getDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusCycleRootAncestor--\" title=\"class or interface in java.awt\">getFocusCycleRootAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusListeners--\" title=\"class or interface in java.awt\">getFocusListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusTraversalKeysEnabled--\" title=\"class or interface in java.awt\">getFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFontMetrics-java.awt.Font-\" title=\"class or interface in java.awt\">getFontMetrics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getForeground--\" title=\"class or interface in java.awt\">getForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getGraphicsConfiguration--\" title=\"class or interface in java.awt\">getGraphicsConfiguration</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyBoundsListeners--\" title=\"class or interface in java.awt\">getHierarchyBoundsListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyListeners--\" title=\"class or interface in java.awt\">getHierarchyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getIgnoreRepaint--\" title=\"class or interface in java.awt\">getIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputContext--\" title=\"class or interface in java.awt\">getInputContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodListeners--\" title=\"class or interface in java.awt\">getInputMethodListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodRequests--\" title=\"class or interface in java.awt\">getInputMethodRequests</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getKeyListeners--\" title=\"class or interface in java.awt\">getKeyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation--\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation-java.awt.Point-\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocationOnScreen--\" title=\"class or interface in java.awt\">getLocationOnScreen</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseListeners--\" title=\"class or interface in java.awt\">getMouseListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseMotionListeners--\" title=\"class or interface in java.awt\">getMouseMotionListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMousePosition--\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseWheelListeners--\" title=\"class or interface in java.awt\">getMouseWheelListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getName--\" title=\"class or interface in java.awt\">getName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getParent--\" title=\"class or interface in java.awt\">getParent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPeer--\" title=\"class or interface in java.awt\">getPeer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners--\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners-java.lang.String-\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize--\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getToolkit--\" title=\"class or interface in java.awt\">getToolkit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getTreeLock--\" title=\"class or interface in java.awt\">getTreeLock</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getX--\" title=\"class or interface in java.awt\">getX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getY--\" title=\"class or interface in java.awt\">getY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#gotFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">gotFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#handleEvent-java.awt.Event-\" title=\"class or interface in java.awt\">handleEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hasFocus--\" title=\"class or interface in java.awt\">hasFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hide--\" title=\"class or interface in java.awt\">hide</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#imageUpdate-java.awt.Image-int-int-int-int-int-\" title=\"class or interface in java.awt\">imageUpdate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#inside-int-int-\" title=\"class or interface in java.awt\">inside</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isBackgroundSet--\" title=\"class or interface in java.awt\">isBackgroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isCursorSet--\" title=\"class or interface in java.awt\">isCursorSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDisplayable--\" title=\"class or interface in java.awt\">isDisplayable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDoubleBuffered--\" title=\"class or interface in java.awt\">isDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isEnabled--\" title=\"class or interface in java.awt\">isEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusable--\" title=\"class or interface in java.awt\">isFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusOwner--\" title=\"class or interface in java.awt\">isFocusOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusTraversable--\" title=\"class or interface in java.awt\">isFocusTraversable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFontSet--\" title=\"class or interface in java.awt\">isFontSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isForegroundSet--\" title=\"class or interface in java.awt\">isForegroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isLightweight--\" title=\"class or interface in java.awt\">isLightweight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMaximumSizeSet--\" title=\"class or interface in java.awt\">isMaximumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMinimumSizeSet--\" title=\"class or interface in java.awt\">isMinimumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isOpaque--\" title=\"class or interface in java.awt\">isOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isPreferredSizeSet--\" title=\"class or interface in java.awt\">isPreferredSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isShowing--\" title=\"class or interface in java.awt\">isShowing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isValid--\" title=\"class or interface in java.awt\">isValid</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isVisible--\" title=\"class or interface in java.awt\">isVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyDown-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyUp-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list--\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintStream-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintWriter-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#location--\" title=\"class or interface in java.awt\">location</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#lostFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">lostFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDown-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDrag-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDrag</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseEnter-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseEnter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseExit-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseExit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseMove-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseMove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseUp-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#move-int-int-\" title=\"class or interface in java.awt\">move</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#nextFocus--\" title=\"class or interface in java.awt\">nextFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#paintAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#postEvent-java.awt.Event-\" title=\"class or interface in java.awt\">postEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#printAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">printAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processComponentEvent-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt\">processComponentEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processFocusEvent-java.awt.event.FocusEvent-\" title=\"class or interface in java.awt\">processFocusEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyBoundsEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyBoundsEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processInputMethodEvent-java.awt.event.InputMethodEvent-\" title=\"class or interface in java.awt\">processInputMethodEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in java.awt\">processKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseEvent-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt\">processMouseEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseMotionEvent-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt\">processMouseMotionEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseWheelEvent-java.awt.event.MouseWheelEvent-\" title=\"class or interface in java.awt\">processMouseWheelEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#remove-java.awt.MenuComponent-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">removeComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">removeFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">removeHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">removeHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">removeInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">removeKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">removeMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">removeMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">removeMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-int-int-int-int-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-long-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocus--\" title=\"class or interface in java.awt\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocus-boolean-\" title=\"class or interface in java.awt\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocusInWindow--\" title=\"class or interface in java.awt\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocusInWindow-boolean-\" title=\"class or interface in java.awt\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#reshape-int-int-int-int-\" title=\"class or interface in java.awt\">reshape</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#revalidate--\" title=\"class or interface in java.awt\">revalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-int-int-int-int-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">setComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setCursor-java.awt.Cursor-\" title=\"class or interface in java.awt\">setCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setDropTarget-java.awt.dnd.DropTarget-\" title=\"class or interface in java.awt\">setDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setEnabled-boolean-\" title=\"class or interface in java.awt\">setEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusable-boolean-\" title=\"class or interface in java.awt\">setFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusTraversalKeysEnabled-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setForeground-java.awt.Color-\" title=\"class or interface in java.awt\">setForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setIgnoreRepaint-boolean-\" title=\"class or interface in java.awt\">setIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocale-java.util.Locale-\" title=\"class or interface in java.awt\">setLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-int-int-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-java.awt.Point-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setMaximumSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setMinimumSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setName-java.lang.String-\" title=\"class or interface in java.awt\">setName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setPreferredSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-int-int-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setVisible-boolean-\" title=\"class or interface in java.awt\">setVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show--\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show-boolean-\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#size--\" title=\"class or interface in java.awt\">size</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#toString--\" title=\"class or interface in java.awt\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocus--\" title=\"class or interface in java.awt\">transferFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusBackward--\" title=\"class or interface in java.awt\">transferFocusBackward</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusUpCycle--\" title=\"class or interface in java.awt\">transferFocusUpCycle</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"JBEDummyProgram-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>JBEDummyProgram</h4>\n<pre>public&nbsp;JBEDummyProgram(<a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"menuAction-java.awt.event.ActionEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>menuAction</h4>\n<pre>public&nbsp;boolean&nbsp;menuAction(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;event)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../acm/program/AbstractConsoleProgram.html#menuAction-java.awt.event.ActionEvent-\">AbstractConsoleProgram</a></code></span></div>\n<div class=\"block\">Responds to menu clicks.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/program/AbstractConsoleProgram.html#menuAction-java.awt.event.ActionEvent-\">menuAction</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\">AbstractConsoleProgram</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JBEConsole_toFront.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JBEFileFilter.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JBEDummyProgram.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JBEDummyProgram.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JApplet\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.acm.program.AbstractConsoleProgram\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/JBEFileFilter.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:35 PDT 2017 -->\n<title>JBEFileFilter</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"JBEFileFilter\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JBEDummyProgram.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JBELabel.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JBEFileFilter.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JBEFileFilter.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class JBEFileFilter\" class=\"title\">Class JBEFileFilter</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/filechooser/FileFilter.html?is-external=true\" title=\"class or interface in javax.swing.filechooser\">javax.swing.filechooser.FileFilter</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../acm/util/FileChooserFilter.html\" title=\"class in acm.util\">acm.util.FileChooserFilter</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.JBEFileFilter</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">JBEFileFilter</span>\nextends <a href=\"../../acm/util/FileChooserFilter.html\" title=\"class in acm.util\">FileChooserFilter</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBEFileFilter.html#JBEFileFilter-java.lang.String-\">JBEFileFilter</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;path)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBEFileFilter.html#getDirectory--\">getDirectory</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.util.FileChooserFilter\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.util.<a href=\"../../acm/util/FileChooserFilter.html\" title=\"class in acm.util\">FileChooserFilter</a></h3>\n<code><a href=\"../../acm/util/FileChooserFilter.html#accept-java.io.File-\">accept</a>, <a href=\"../../acm/util/FileChooserFilter.html#getDescription--\">getDescription</a>, <a href=\"../../acm/util/FileChooserFilter.html#getPattern--\">getPattern</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"JBEFileFilter-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>JBEFileFilter</h4>\n<pre>public&nbsp;JBEFileFilter(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;path)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"getDirectory--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>getDirectory</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getDirectory()</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/util/FileChooserFilter.html#getDirectory--\">getDirectory</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/util/FileChooserFilter.html\" title=\"class in acm.util\">FileChooserFilter</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JBEDummyProgram.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JBELabel.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JBEFileFilter.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JBEFileFilter.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/JBELabel.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:35 PDT 2017 -->\n<title>JBELabel</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"JBELabel\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JBEFileFilter.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JBEMenuBar.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JBELabel.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JBELabel.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.acm.graphics.GLabel\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class JBELabel\" class=\"title\">Class JBELabel</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">acm.graphics.GObject</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../acm/graphics/GLabel.html\" title=\"class in acm.graphics\">acm.graphics.GLabel</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.JBELabel</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"../../acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true\" title=\"class or interface in java.lang\">Cloneable</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">JBELabel</span>\nextends <a href=\"../../acm/graphics/GLabel.html\" title=\"class in acm.graphics\">GLabel</a></pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#stanford.spl.JBELabel\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.graphics.GLabel\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;acm.graphics.<a href=\"../../acm/graphics/GLabel.html\" title=\"class in acm.graphics\">GLabel</a></h3>\n<code><a href=\"../../acm/graphics/GLabel.html#DEFAULT_FONT\">DEFAULT_FONT</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBELabel.html#JBELabel-java.lang.String-\">JBELabel</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBELabel.html#getInteractor--\">getInteractor</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBELabel.html#setColor-java.awt.Color-\">setColor</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;paramColor)</code>\n<div class=\"block\">Sets the color used to display this object.</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBELabel.html#setFont-java.awt.Font-\">setFont</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a>&nbsp;paramFont)</code>\n<div class=\"block\">Changes the font used to display the <code>GLabel</code>.</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBELabel.html#setLabel-java.lang.String-\">setLabel</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;label)</code>\n<div class=\"block\">Changes the string stored within the <code>GLabel</code> object, so that\n a new text string appears on the display.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBELabel.html#setText-java.lang.String-\">setText</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;label)</code>\n<div class=\"block\">Changes the string stored within the <code>GLabel</code> object, so that\n a new text string appears on the display.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.graphics.GLabel\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.graphics.<a href=\"../../acm/graphics/GLabel.html\" title=\"class in acm.graphics\">GLabel</a></h3>\n<code><a href=\"../../acm/graphics/GLabel.html#contains-double-double-\">contains</a>, <a href=\"../../acm/graphics/GLabel.html#getAscent--\">getAscent</a>, <a href=\"../../acm/graphics/GLabel.html#getBounds--\">getBounds</a>, <a href=\"../../acm/graphics/GLabel.html#getDescent--\">getDescent</a>, <a href=\"../../acm/graphics/GLabel.html#getFont--\">getFont</a>, <a href=\"../../acm/graphics/GLabel.html#getFontMetrics--\">getFontMetrics</a>, <a href=\"../../acm/graphics/GLabel.html#getHeight--\">getHeight</a>, <a href=\"../../acm/graphics/GLabel.html#getLabel--\">getLabel</a>, <a href=\"../../acm/graphics/GLabel.html#getText--\">getText</a>, <a href=\"../../acm/graphics/GLabel.html#getWidth--\">getWidth</a>, <a href=\"../../acm/graphics/GLabel.html#paint2d-java.awt.Graphics2D-\">paint2d</a>, <a href=\"../../acm/graphics/GLabel.html#paramString--\">paramString</a>, <a href=\"../../acm/graphics/GLabel.html#setBottomY-double-\">setBottomY</a>, <a href=\"../../acm/graphics/GLabel.html#setCenterLocation-double-double-\">setCenterLocation</a>, <a href=\"../../acm/graphics/GLabel.html#setCenterY-double-\">setCenterY</a>, <a href=\"../../acm/graphics/GLabel.html#setFont-java.lang.String-\">setFont</a>, <a href=\"../../acm/graphics/GLabel.html#setTopY-double-\">setTopY</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.graphics.GObject\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.graphics.<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></h3>\n<code><a href=\"../../acm/graphics/GObject.html#addActionListener-java.awt.event.ActionListener-\">addActionListener</a>, <a href=\"../../acm/graphics/GObject.html#addMouseListener-java.awt.event.MouseListener-\">addMouseListener</a>, <a href=\"../../acm/graphics/GObject.html#addMouseMotionListener-java.awt.event.MouseMotionListener-\">addMouseMotionListener</a>, <a href=\"../../acm/graphics/GObject.html#areMouseListenersEnabled--\">areMouseListenersEnabled</a>, <a href=\"../../acm/graphics/GObject.html#clone--\">clone</a>, <a href=\"../../acm/graphics/GObject.html#colorName-java.awt.Color-\">colorName</a>, <a href=\"../../acm/graphics/GObject.html#colorName-int-\">colorName</a>, <a href=\"../../acm/graphics/GObject.html#colorNameFriendly-int-\">colorNameFriendly</a>, <a href=\"../../acm/graphics/GObject.html#contains-acm.graphics.GPoint-\">contains</a>, <a href=\"../../acm/graphics/GObject.html#createTransformedGraphics-java.awt.Graphics-\">createTransformedGraphics</a>, <a href=\"../../acm/graphics/GObject.html#fireActionEvent-java.awt.event.ActionEvent-\">fireActionEvent</a>, <a href=\"../../acm/graphics/GObject.html#fireActionEvent-java.lang.String-\">fireActionEvent</a>, <a href=\"../../acm/graphics/GObject.html#fireMouseListeners-java.awt.event.MouseEvent-\">fireMouseListeners</a>, <a href=\"../../acm/graphics/GObject.html#getBottomY--\">getBottomY</a>, <a href=\"../../acm/graphics/GObject.html#getCenterLocation--\">getCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#getCenterX--\">getCenterX</a>, <a href=\"../../acm/graphics/GObject.html#getCenterY--\">getCenterY</a>, <a href=\"../../acm/graphics/GObject.html#getColor--\">getColor</a>, <a href=\"../../acm/graphics/GObject.html#getComponent--\">getComponent</a>, <a href=\"../../acm/graphics/GObject.html#getLineWidth--\">getLineWidth</a>, <a href=\"../../acm/graphics/GObject.html#getLocation--\">getLocation</a>, <a href=\"../../acm/graphics/GObject.html#getMatrix--\">getMatrix</a>, <a href=\"../../acm/graphics/GObject.html#getObjectColor--\">getObjectColor</a>, <a href=\"../../acm/graphics/GObject.html#getParent--\">getParent</a>, <a href=\"../../acm/graphics/GObject.html#getRightX--\">getRightX</a>, <a href=\"../../acm/graphics/GObject.html#getSize--\">getSize</a>, <a href=\"../../acm/graphics/GObject.html#getX--\">getX</a>, <a href=\"../../acm/graphics/GObject.html#getY--\">getY</a>, <a href=\"../../acm/graphics/GObject.html#intersects-acm.graphics.GObject-\">intersects</a>, <a href=\"../../acm/graphics/GObject.html#isAntiAliasing--\">isAntiAliasing</a>, <a href=\"../../acm/graphics/GObject.html#isVisible--\">isVisible</a>, <a href=\"../../acm/graphics/GObject.html#move-double-double-\">move</a>, <a href=\"../../acm/graphics/GObject.html#movePolar-double-double-\">movePolar</a>, <a href=\"../../acm/graphics/GObject.html#paint-java.awt.Graphics-\">paint</a>, <a href=\"../../acm/graphics/GObject.html#pause-double-\">pause</a>, <a href=\"../../acm/graphics/GObject.html#removeActionListener-java.awt.event.ActionListener-\">removeActionListener</a>, <a href=\"../../acm/graphics/GObject.html#removeMouseListener-java.awt.event.MouseListener-\">removeMouseListener</a>, <a href=\"../../acm/graphics/GObject.html#removeMouseMotionListener-java.awt.event.MouseMotionListener-\">removeMouseMotionListener</a>, <a href=\"../../acm/graphics/GObject.html#repaint--\">repaint</a>, <a href=\"../../acm/graphics/GObject.html#rotate-double-\">rotate</a>, <a href=\"../../acm/graphics/GObject.html#scale-double-\">scale</a>, <a href=\"../../acm/graphics/GObject.html#scale-double-double-\">scale</a>, <a href=\"../../acm/graphics/GObject.html#sendBackward--\">sendBackward</a>, <a href=\"../../acm/graphics/GObject.html#sendForward--\">sendForward</a>, <a href=\"../../acm/graphics/GObject.html#sendToBack--\">sendToBack</a>, <a href=\"../../acm/graphics/GObject.html#sendToFront--\">sendToFront</a>, <a href=\"../../acm/graphics/GObject.html#setAntiAliasing-boolean-\">setAntiAliasing</a>, <a href=\"../../acm/graphics/GObject.html#setCenterLocation-acm.graphics.GPoint-\">setCenterLocation</a>, <a href=\"../../acm/graphics/GObject.html#setCenterX-double-\">setCenterX</a>, <a href=\"../../acm/graphics/GObject.html#setLineWidth-double-\">setLineWidth</a>, <a href=\"../../acm/graphics/GObject.html#setLocation-double-double-\">setLocation</a>, <a href=\"../../acm/graphics/GObject.html#setLocation-acm.graphics.GPoint-\">setLocation</a>, <a href=\"../../acm/graphics/GObject.html#setParent-acm.graphics.GContainer-\">setParent</a>, <a href=\"../../acm/graphics/GObject.html#setRightX-double-\">setRightX</a>, <a href=\"../../acm/graphics/GObject.html#setVisible-boolean-\">setVisible</a>, <a href=\"../../acm/graphics/GObject.html#setX-double-\">setX</a>, <a href=\"../../acm/graphics/GObject.html#setY-double-\">setY</a>, <a href=\"../../acm/graphics/GObject.html#start--\">start</a>, <a href=\"../../acm/graphics/GObject.html#start-java.lang.String:A-\">start</a>, <a href=\"../../acm/graphics/GObject.html#toString--\">toString</a>, <a href=\"../../acm/graphics/GObject.html#updateEnabledList--\">updateEnabledList</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"JBELabel-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>JBELabel</h4>\n<pre>public&nbsp;JBELabel(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"getInteractor--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getInteractor</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&nbsp;getInteractor()</pre>\n</li>\n</ul>\n<a name=\"setFont-java.awt.Font-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setFont</h4>\n<pre>public&nbsp;void&nbsp;setFont(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html?is-external=true\" title=\"class or interface in java.awt\">Font</a>&nbsp;paramFont)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../acm/graphics/GLabel.html#setFont-java.awt.Font-\">GLabel</a></code></span></div>\n<div class=\"block\">Changes the font used to display the <code>GLabel</code>.  This call will\n usually change the size of the displayed object and will therefore affect\n the result of calls to <a href=\"GObject.html#getSize()\"><code>getSize</code></a>\n and <a href=\"GObject.html#getBounds()\"><code>getBounds</code></a>.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GLabel.html#setFont-java.awt.Font-\">setFont</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GLabel.html\" title=\"class in acm.graphics\">GLabel</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>paramFont</code> - A <code>Font</code> object indicating the new font</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setColor-java.awt.Color-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setColor</h4>\n<pre>public&nbsp;void&nbsp;setColor(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html?is-external=true\" title=\"class or interface in java.awt\">Color</a>&nbsp;paramColor)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../acm/graphics/GObject.html#setColor-java.awt.Color-\">GObject</a></code></span></div>\n<div class=\"block\">Sets the color used to display this object.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GObject.html#setColor-java.awt.Color-\">setColor</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>paramColor</code> - The color used to display this object</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setLabel-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setLabel</h4>\n<pre>public&nbsp;void&nbsp;setLabel(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;label)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../acm/graphics/GLabel.html#setLabel-java.lang.String-\">GLabel</a></code></span></div>\n<div class=\"block\">Changes the string stored within the <code>GLabel</code> object, so that\n a new text string appears on the display.\n Equivalent to setText.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GLabel.html#setLabel-java.lang.String-\">setLabel</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GLabel.html\" title=\"class in acm.graphics\">GLabel</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>label</code> - The new string to display</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setText-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>setText</h4>\n<pre>public&nbsp;void&nbsp;setText(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;label)</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../acm/graphics/GLabel.html#setText-java.lang.String-\">GLabel</a></code></span></div>\n<div class=\"block\">Changes the string stored within the <code>GLabel</code> object, so that\n a new text string appears on the display.\n Equivalent to setLabel.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../acm/graphics/GLabel.html#setText-java.lang.String-\">setText</a></code>&nbsp;in class&nbsp;<code><a href=\"../../acm/graphics/GLabel.html\" title=\"class in acm.graphics\">GLabel</a></code></dd>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>label</code> - The new string to display</dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JBEFileFilter.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JBEMenuBar.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JBELabel.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JBELabel.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.acm.graphics.GLabel\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/JBEMenuBar.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:35 PDT 2017 -->\n<title>JBEMenuBar</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"JBEMenuBar\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JBELabel.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JBEMenuBar.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JBEMenuBar.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JMenuBar\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.acm.program.ProgramMenuBar\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#methods.inherited.from.class.acm.program.ProgramMenuBar\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li>Method</li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class JBEMenuBar\" class=\"title\">Class JBEMenuBar</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Component</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Container</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JComponent</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JMenuBar</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">acm.program.ProgramMenuBar</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.JBEMenuBar</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuItem.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuItem</a>&gt;, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/MenuElement.html?is-external=true\" title=\"class or interface in javax.swing\">MenuElement</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">JBEMenuBar</span>\nextends <a href=\"../../acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#stanford.spl.JBEMenuBar\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JMenuBar\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuBar</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.AccessibleJMenuBar.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuBar.AccessibleJMenuBar</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.AccessibleJComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent.AccessibleJComponent</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.AccessibleAWTContainer.html?is-external=true\" title=\"class or interface in java.awt\">Container.AccessibleAWTContainer</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.AccessibleAWTComponent.html?is-external=true\" title=\"class or interface in java.awt\">Component.AccessibleAWTComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BaselineResizeBehavior.html?is-external=true\" title=\"class or interface in java.awt\">Component.BaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BltBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.BltBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.FlipBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.FlipBufferStrategy</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.acm.program.ProgramMenuBar\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;acm.program.<a href=\"../../acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></h3>\n<code><a href=\"../../acm/program/ProgramMenuBar.html#ALT_F4\">ALT_F4</a>, <a href=\"../../acm/program/ProgramMenuBar.html#COMMAND_A\">COMMAND_A</a>, <a href=\"../../acm/program/ProgramMenuBar.html#COMMAND_B\">COMMAND_B</a>, <a href=\"../../acm/program/ProgramMenuBar.html#COMMAND_C\">COMMAND_C</a>, <a href=\"../../acm/program/ProgramMenuBar.html#COMMAND_END\">COMMAND_END</a>, <a href=\"../../acm/program/ProgramMenuBar.html#COMMAND_EQUALS\">COMMAND_EQUALS</a>, <a href=\"../../acm/program/ProgramMenuBar.html#COMMAND_HOME\">COMMAND_HOME</a>, <a href=\"../../acm/program/ProgramMenuBar.html#COMMAND_I\">COMMAND_I</a>, <a href=\"../../acm/program/ProgramMenuBar.html#COMMAND_L\">COMMAND_L</a>, <a href=\"../../acm/program/ProgramMenuBar.html#COMMAND_MINUS\">COMMAND_MINUS</a>, <a href=\"../../acm/program/ProgramMenuBar.html#COMMAND_P\">COMMAND_P</a>, <a href=\"../../acm/program/ProgramMenuBar.html#COMMAND_PLUS\">COMMAND_PLUS</a>, <a href=\"../../acm/program/ProgramMenuBar.html#COMMAND_Q\">COMMAND_Q</a>, <a href=\"../../acm/program/ProgramMenuBar.html#COMMAND_S\">COMMAND_S</a>, <a href=\"../../acm/program/ProgramMenuBar.html#COMMAND_SHIFT_MINUS\">COMMAND_SHIFT_MINUS</a>, <a href=\"../../acm/program/ProgramMenuBar.html#COMMAND_SHIFT_PLUS\">COMMAND_SHIFT_PLUS</a>, <a href=\"../../acm/program/ProgramMenuBar.html#COMMAND_V\">COMMAND_V</a>, <a href=\"../../acm/program/ProgramMenuBar.html#COMMAND_W\">COMMAND_W</a>, <a href=\"../../acm/program/ProgramMenuBar.html#COMMAND_X\">COMMAND_X</a>, <a href=\"../../acm/program/ProgramMenuBar.html#CTRL_A\">CTRL_A</a>, <a href=\"../../acm/program/ProgramMenuBar.html#CTRL_B\">CTRL_B</a>, <a href=\"../../acm/program/ProgramMenuBar.html#CTRL_C\">CTRL_C</a>, <a href=\"../../acm/program/ProgramMenuBar.html#CTRL_END\">CTRL_END</a>, <a href=\"../../acm/program/ProgramMenuBar.html#CTRL_EQUALS\">CTRL_EQUALS</a>, <a href=\"../../acm/program/ProgramMenuBar.html#CTRL_HOME\">CTRL_HOME</a>, <a href=\"../../acm/program/ProgramMenuBar.html#CTRL_I\">CTRL_I</a>, <a href=\"../../acm/program/ProgramMenuBar.html#CTRL_L\">CTRL_L</a>, <a href=\"../../acm/program/ProgramMenuBar.html#CTRL_MINUS\">CTRL_MINUS</a>, <a href=\"../../acm/program/ProgramMenuBar.html#CTRL_P\">CTRL_P</a>, <a href=\"../../acm/program/ProgramMenuBar.html#CTRL_PLUS\">CTRL_PLUS</a>, <a href=\"../../acm/program/ProgramMenuBar.html#CTRL_Q\">CTRL_Q</a>, <a href=\"../../acm/program/ProgramMenuBar.html#CTRL_S\">CTRL_S</a>, <a href=\"../../acm/program/ProgramMenuBar.html#CTRL_SHIFT_MINUS\">CTRL_SHIFT_MINUS</a>, <a href=\"../../acm/program/ProgramMenuBar.html#CTRL_SHIFT_PLUS\">CTRL_SHIFT_PLUS</a>, <a href=\"../../acm/program/ProgramMenuBar.html#CTRL_V\">CTRL_V</a>, <a href=\"../../acm/program/ProgramMenuBar.html#CTRL_W\">CTRL_W</a>, <a href=\"../../acm/program/ProgramMenuBar.html#CTRL_X\">CTRL_X</a>, <a href=\"../../acm/program/ProgramMenuBar.html#DOWN_ARROW\">DOWN_ARROW</a>, <a href=\"../../acm/program/ProgramMenuBar.html#F1\">F1</a>, <a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_ABOUT\">MENU_ITEM_TEXT_ABOUT</a>, <a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_ANTI_ALIASING\">MENU_ITEM_TEXT_ANTI_ALIASING</a>, <a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_BACKGROUND_COLOR\">MENU_ITEM_TEXT_BACKGROUND_COLOR</a>, <a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_CHECK_FOR_UPDATES\">MENU_ITEM_TEXT_CHECK_FOR_UPDATES</a>, <a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_CLEAR_CONSOLE\">MENU_ITEM_TEXT_CLEAR_CONSOLE</a>, <a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_COMPARE_OUTPUT\">MENU_ITEM_TEXT_COMPARE_OUTPUT</a>, <a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_COPY\">MENU_ITEM_TEXT_COPY</a>, <a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_CUT\">MENU_ITEM_TEXT_CUT</a>, <a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_EXPORT_APPLET\">MENU_ITEM_TEXT_EXPORT_APPLET</a>, <a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_FONT\">MENU_ITEM_TEXT_FONT</a>, <a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_FOREGROUND_COLOR\">MENU_ITEM_TEXT_FOREGROUND_COLOR</a>, <a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_INTERACTIVE\">MENU_ITEM_TEXT_INTERACTIVE</a>, <a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_LOAD_INPUT_SCRIPT\">MENU_ITEM_TEXT_LOAD_INPUT_SCRIPT</a>, <a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_MSKAREL\">MENU_ITEM_TEXT_MSKAREL</a>, <a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_PASTE\">MENU_ITEM_TEXT_PASTE</a>, <a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_PRINT\">MENU_ITEM_TEXT_PRINT</a>, <a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_PRINT_CONSOLE\">MENU_ITEM_TEXT_PRINT_CONSOLE</a>, <a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_QUIT\">MENU_ITEM_TEXT_QUIT</a>, <a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_SAVE\">MENU_ITEM_TEXT_SAVE</a>, <a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_SAVE_AS\">MENU_ITEM_TEXT_SAVE_AS</a>, <a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_SCRIPT\">MENU_ITEM_TEXT_SCRIPT</a>, <a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_SELECT_ALL\">MENU_ITEM_TEXT_SELECT_ALL</a>, <a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_SHOW_PIXEL_GRID\">MENU_ITEM_TEXT_SHOW_PIXEL_GRID</a>, <a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_SHOW_PIXEL_INFO\">MENU_ITEM_TEXT_SHOW_PIXEL_INFO</a>, <a href=\"../../acm/program/ProgramMenuBar.html#MENU_ITEM_TEXT_SUBMIT_PROJECT\">MENU_ITEM_TEXT_SUBMIT_PROJECT</a>, <a href=\"../../acm/program/ProgramMenuBar.html#PGDN\">PGDN</a>, <a href=\"../../acm/program/ProgramMenuBar.html#PGUP\">PGUP</a>, <a href=\"../../acm/program/ProgramMenuBar.html#SHIFT\">SHIFT</a>, <a href=\"../../acm/program/ProgramMenuBar.html#UP_ARROW\">UP_ARROW</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#listenerList\" title=\"class or interface in javax.swing\">listenerList</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#TOOL_TIP_TEXT_KEY\" title=\"class or interface in javax.swing\">TOOL_TIP_TEXT_KEY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#ui\" title=\"class or interface in javax.swing\">ui</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#UNDEFINED_CONDITION\" title=\"class or interface in javax.swing\">UNDEFINED_CONDITION</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_ANCESTOR_OF_FOCUSED_COMPONENT\" title=\"class or interface in javax.swing\">WHEN_ANCESTOR_OF_FOCUSED_COMPONENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_FOCUSED\" title=\"class or interface in javax.swing\">WHEN_FOCUSED</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#WHEN_IN_FOCUSED_WINDOW\" title=\"class or interface in javax.swing\">WHEN_IN_FOCUSED_WINDOW</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#accessibleContext\" title=\"class or interface in java.awt\">accessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#BOTTOM_ALIGNMENT\" title=\"class or interface in java.awt\">BOTTOM_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#CENTER_ALIGNMENT\" title=\"class or interface in java.awt\">CENTER_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#LEFT_ALIGNMENT\" title=\"class or interface in java.awt\">LEFT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#RIGHT_ALIGNMENT\" title=\"class or interface in java.awt\">RIGHT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#TOP_ALIGNMENT\" title=\"class or interface in java.awt\">TOP_ALIGNMENT</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.image.ImageObserver\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ABORT\" title=\"class or interface in java.awt.image\">ABORT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ALLBITS\" title=\"class or interface in java.awt.image\">ALLBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ERROR\" title=\"class or interface in java.awt.image\">ERROR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#FRAMEBITS\" title=\"class or interface in java.awt.image\">FRAMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#HEIGHT\" title=\"class or interface in java.awt.image\">HEIGHT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#PROPERTIES\" title=\"class or interface in java.awt.image\">PROPERTIES</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#SOMEBITS\" title=\"class or interface in java.awt.image\">SOMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#WIDTH\" title=\"class or interface in java.awt.image\">WIDTH</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBEMenuBar.html#JBEMenuBar-stanford.spl.JavaBackEnd-acm.io.IOConsole-\">JBEMenuBar</a></span>(<a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd,\n          <a href=\"../../acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a>&nbsp;paramIOConsole)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.acm.program.ProgramMenuBar\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;acm.program.<a href=\"../../acm/program/ProgramMenuBar.html\" title=\"class in acm.program\">ProgramMenuBar</a></h3>\n<code><a href=\"../../acm/program/ProgramMenuBar.html#addConsoleOptionsMenu--\">addConsoleOptionsMenu</a>, <a href=\"../../acm/program/ProgramMenuBar.html#addEditMenu--\">addEditMenu</a>, <a href=\"../../acm/program/ProgramMenuBar.html#addEditMenuItems-javax.swing.JMenu-\">addEditMenuItems</a>, <a href=\"../../acm/program/ProgramMenuBar.html#addFileMenu--\">addFileMenu</a>, <a href=\"../../acm/program/ProgramMenuBar.html#addFileMenuItems-javax.swing.JMenu-\">addFileMenuItems</a>, <a href=\"../../acm/program/ProgramMenuBar.html#addGraphicsOptionsMenu--\">addGraphicsOptionsMenu</a>, <a href=\"../../acm/program/ProgramMenuBar.html#addHelpMenu--\">addHelpMenu</a>, <a href=\"../../acm/program/ProgramMenuBar.html#addKarelOptionsMenu--\">addKarelOptionsMenu</a>, <a href=\"../../acm/program/ProgramMenuBar.html#addMenus--\">addMenus</a>, <a href=\"../../acm/program/ProgramMenuBar.html#createFocusedItem-java.lang.String-\">createFocusedItem</a>, <a href=\"../../acm/program/ProgramMenuBar.html#createFocusedItem-java.lang.String-int-\">createFocusedItem</a>, <a href=\"../../acm/program/ProgramMenuBar.html#createFocusedItem-java.lang.String-int-javax.swing.KeyStroke-\">createFocusedItem</a>, <a href=\"../../acm/program/ProgramMenuBar.html#createFocusedItem-java.lang.String-int-javax.swing.KeyStroke-boolean-\">createFocusedItem</a>, <a href=\"../../acm/program/ProgramMenuBar.html#createProgramItem-java.lang.String-\">createProgramItem</a>, <a href=\"../../acm/program/ProgramMenuBar.html#createProgramItem-java.lang.String-int-\">createProgramItem</a>, <a href=\"../../acm/program/ProgramMenuBar.html#createProgramItem-java.lang.String-int-javax.swing.KeyStroke-\">createProgramItem</a>, <a href=\"../../acm/program/ProgramMenuBar.html#createStandardItem-java.lang.String-int-\">createStandardItem</a>, <a href=\"../../acm/program/ProgramMenuBar.html#createStandardItem-java.lang.String-int-javax.swing.KeyStroke-\">createStandardItem</a>, <a href=\"../../acm/program/ProgramMenuBar.html#fireAccelerator-java.awt.event.KeyEvent-\">fireAccelerator</a>, <a href=\"../../acm/program/ProgramMenuBar.html#fireActionListeners-java.awt.event.ActionEvent-\">fireActionListeners</a>, <a href=\"../../acm/program/ProgramMenuBar.html#getMenuItem-java.lang.String-\">getMenuItem</a>, <a href=\"../../acm/program/ProgramMenuBar.html#getProgram--\">getProgram</a>, <a href=\"../../acm/program/ProgramMenuBar.html#install-java.awt.Component-\">install</a>, <a href=\"../../acm/program/ProgramMenuBar.html#isFocusedItem-javax.swing.JMenuItem-\">isFocusedItem</a>, <a href=\"../../acm/program/ProgramMenuBar.html#iterator--\">iterator</a>, <a href=\"../../acm/program/ProgramMenuBar.html#setAccelerator-javax.swing.JMenuItem-int-\">setAccelerator</a>, <a href=\"../../acm/program/ProgramMenuBar.html#setEnabled-java.lang.String-boolean-\">setEnabled</a>, <a href=\"../../acm/program/ProgramMenuBar.html#setFocusedListener-java.awt.event.ActionListener-\">setFocusedListener</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JMenuBar\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true\" title=\"class or interface in javax.swing\">JMenuBar</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#add-javax.swing.JMenu-\" title=\"class or interface in javax.swing\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#addNotify--\" title=\"class or interface in javax.swing\">addNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#getAccessibleContext--\" title=\"class or interface in javax.swing\">getAccessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#getComponent--\" title=\"class or interface in javax.swing\">getComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#getComponentAtIndex-int-\" title=\"class or interface in javax.swing\">getComponentAtIndex</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#getComponentIndex-java.awt.Component-\" title=\"class or interface in javax.swing\">getComponentIndex</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#getHelpMenu--\" title=\"class or interface in javax.swing\">getHelpMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#getMargin--\" title=\"class or interface in javax.swing\">getMargin</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#getMenu-int-\" title=\"class or interface in javax.swing\">getMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#getMenuCount--\" title=\"class or interface in javax.swing\">getMenuCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#getSelectionModel--\" title=\"class or interface in javax.swing\">getSelectionModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#getSubElements--\" title=\"class or interface in javax.swing\">getSubElements</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#getUI--\" title=\"class or interface in javax.swing\">getUI</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#getUIClassID--\" title=\"class or interface in javax.swing\">getUIClassID</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#isBorderPainted--\" title=\"class or interface in javax.swing\">isBorderPainted</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#isSelected--\" title=\"class or interface in javax.swing\">isSelected</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#menuSelectionChanged-boolean-\" title=\"class or interface in javax.swing\">menuSelectionChanged</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#paintBorder-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#paramString--\" title=\"class or interface in javax.swing\">paramString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#processKeyBinding-javax.swing.KeyStroke-java.awt.event.KeyEvent-int-boolean-\" title=\"class or interface in javax.swing\">processKeyBinding</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#processKeyEvent-java.awt.event.KeyEvent-javax.swing.MenuElement:A-javax.swing.MenuSelectionManager-\" title=\"class or interface in javax.swing\">processKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#processMouseEvent-java.awt.event.MouseEvent-javax.swing.MenuElement:A-javax.swing.MenuSelectionManager-\" title=\"class or interface in javax.swing\">processMouseEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#removeNotify--\" title=\"class or interface in javax.swing\">removeNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#setBorderPainted-boolean-\" title=\"class or interface in javax.swing\">setBorderPainted</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#setHelpMenu-javax.swing.JMenu-\" title=\"class or interface in javax.swing\">setHelpMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#setMargin-java.awt.Insets-\" title=\"class or interface in javax.swing\">setMargin</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#setSelected-java.awt.Component-\" title=\"class or interface in javax.swing\">setSelected</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#setSelectionModel-javax.swing.SingleSelectionModel-\" title=\"class or interface in javax.swing\">setSelectionModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#setUI-javax.swing.plaf.MenuBarUI-\" title=\"class or interface in javax.swing\">setUI</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true#updateUI--\" title=\"class or interface in javax.swing\">updateUI</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JComponent\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addAncestorListener-javax.swing.event.AncestorListener-\" title=\"class or interface in javax.swing\">addAncestorListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#addVetoableChangeListener-java.beans.VetoableChangeListener-\" title=\"class or interface in javax.swing\">addVetoableChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#computeVisibleRect-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">computeVisibleRect</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#contains-int-int-\" title=\"class or interface in javax.swing\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#createToolTip--\" title=\"class or interface in javax.swing\">createToolTip</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#disable--\" title=\"class or interface in javax.swing\">disable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#enable--\" title=\"class or interface in javax.swing\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-boolean-boolean-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-char-char-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#firePropertyChange-java.lang.String-int-int-\" title=\"class or interface in javax.swing\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#fireVetoableChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in javax.swing\">fireVetoableChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getActionForKeyStroke-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">getActionForKeyStroke</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getActionMap--\" title=\"class or interface in javax.swing\">getActionMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAlignmentX--\" title=\"class or interface in javax.swing\">getAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAlignmentY--\" title=\"class or interface in javax.swing\">getAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAncestorListeners--\" title=\"class or interface in javax.swing\">getAncestorListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getAutoscrolls--\" title=\"class or interface in javax.swing\">getAutoscrolls</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBaseline-int-int-\" title=\"class or interface in javax.swing\">getBaseline</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBaselineResizeBehavior--\" title=\"class or interface in javax.swing\">getBaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBorder--\" title=\"class or interface in javax.swing\">getBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getBounds-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getClientProperty-java.lang.Object-\" title=\"class or interface in javax.swing\">getClientProperty</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getComponentGraphics-java.awt.Graphics-\" title=\"class or interface in javax.swing\">getComponentGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getComponentPopupMenu--\" title=\"class or interface in javax.swing\">getComponentPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getConditionForKeyStroke-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">getConditionForKeyStroke</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getDebugGraphicsOptions--\" title=\"class or interface in javax.swing\">getDebugGraphicsOptions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getDefaultLocale--\" title=\"class or interface in javax.swing\">getDefaultLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getFontMetrics-java.awt.Font-\" title=\"class or interface in javax.swing\">getFontMetrics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getGraphics--\" title=\"class or interface in javax.swing\">getGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getHeight--\" title=\"class or interface in javax.swing\">getHeight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInheritsPopupMenu--\" title=\"class or interface in javax.swing\">getInheritsPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputMap--\" title=\"class or interface in javax.swing\">getInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputMap-int-\" title=\"class or interface in javax.swing\">getInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInputVerifier--\" title=\"class or interface in javax.swing\">getInputVerifier</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInsets--\" title=\"class or interface in javax.swing\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getInsets-java.awt.Insets-\" title=\"class or interface in javax.swing\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getListeners-java.lang.Class-\" title=\"class or interface in javax.swing\">getListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getLocation-java.awt.Point-\" title=\"class or interface in javax.swing\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getMaximumSize--\" title=\"class or interface in javax.swing\">getMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getMinimumSize--\" title=\"class or interface in javax.swing\">getMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getNextFocusableComponent--\" title=\"class or interface in javax.swing\">getNextFocusableComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getPopupLocation-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">getPopupLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getPreferredSize--\" title=\"class or interface in javax.swing\">getPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getRegisteredKeyStrokes--\" title=\"class or interface in javax.swing\">getRegisteredKeyStrokes</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getRootPane--\" title=\"class or interface in javax.swing\">getRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getToolTipLocation-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">getToolTipLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getToolTipText--\" title=\"class or interface in javax.swing\">getToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getToolTipText-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">getToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getTopLevelAncestor--\" title=\"class or interface in javax.swing\">getTopLevelAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getTransferHandler--\" title=\"class or interface in javax.swing\">getTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVerifyInputWhenFocusTarget--\" title=\"class or interface in javax.swing\">getVerifyInputWhenFocusTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVetoableChangeListeners--\" title=\"class or interface in javax.swing\">getVetoableChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getVisibleRect--\" title=\"class or interface in javax.swing\">getVisibleRect</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getWidth--\" title=\"class or interface in javax.swing\">getWidth</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getX--\" title=\"class or interface in javax.swing\">getX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#getY--\" title=\"class or interface in javax.swing\">getY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#grabFocus--\" title=\"class or interface in javax.swing\">grabFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#hide--\" title=\"class or interface in javax.swing\">hide</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isDoubleBuffered--\" title=\"class or interface in javax.swing\">isDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isLightweightComponent-java.awt.Component-\" title=\"class or interface in javax.swing\">isLightweightComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isManagingFocus--\" title=\"class or interface in javax.swing\">isManagingFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isOpaque--\" title=\"class or interface in javax.swing\">isOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isOptimizedDrawingEnabled--\" title=\"class or interface in javax.swing\">isOptimizedDrawingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingForPrint--\" title=\"class or interface in javax.swing\">isPaintingForPrint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingOrigin--\" title=\"class or interface in javax.swing\">isPaintingOrigin</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isPaintingTile--\" title=\"class or interface in javax.swing\">isPaintingTile</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isRequestFocusEnabled--\" title=\"class or interface in javax.swing\">isRequestFocusEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#isValidateRoot--\" title=\"class or interface in javax.swing\">isValidateRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paint-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintChildren-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintChildren</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintComponent-java.awt.Graphics-\" title=\"class or interface in javax.swing\">paintComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintImmediately-int-int-int-int-\" title=\"class or interface in javax.swing\">paintImmediately</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#paintImmediately-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">paintImmediately</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#print-java.awt.Graphics-\" title=\"class or interface in javax.swing\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printAll-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printBorder-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printChildren-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printChildren</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#printComponent-java.awt.Graphics-\" title=\"class or interface in javax.swing\">printComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processComponentKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in javax.swing\">processComponentKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in javax.swing\">processKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processMouseEvent-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">processMouseEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#processMouseMotionEvent-java.awt.event.MouseEvent-\" title=\"class or interface in javax.swing\">processMouseMotionEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#putClientProperty-java.lang.Object-java.lang.Object-\" title=\"class or interface in javax.swing\">putClientProperty</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#registerKeyboardAction-java.awt.event.ActionListener-javax.swing.KeyStroke-int-\" title=\"class or interface in javax.swing\">registerKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#registerKeyboardAction-java.awt.event.ActionListener-java.lang.String-javax.swing.KeyStroke-int-\" title=\"class or interface in javax.swing\">registerKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#removeAncestorListener-javax.swing.event.AncestorListener-\" title=\"class or interface in javax.swing\">removeAncestorListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#removeVetoableChangeListener-java.beans.VetoableChangeListener-\" title=\"class or interface in javax.swing\">removeVetoableChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#repaint-long-int-int-int-int-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#repaint-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestDefaultFocus--\" title=\"class or interface in javax.swing\">requestDefaultFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocus--\" title=\"class or interface in javax.swing\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocus-boolean-\" title=\"class or interface in javax.swing\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocusInWindow--\" title=\"class or interface in javax.swing\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#requestFocusInWindow-boolean-\" title=\"class or interface in javax.swing\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#resetKeyboardActions--\" title=\"class or interface in javax.swing\">resetKeyboardActions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#reshape-int-int-int-int-\" title=\"class or interface in javax.swing\">reshape</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#revalidate--\" title=\"class or interface in javax.swing\">revalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#scrollRectToVisible-java.awt.Rectangle-\" title=\"class or interface in javax.swing\">scrollRectToVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setActionMap-javax.swing.ActionMap-\" title=\"class or interface in javax.swing\">setActionMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAlignmentX-float-\" title=\"class or interface in javax.swing\">setAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAlignmentY-float-\" title=\"class or interface in javax.swing\">setAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setAutoscrolls-boolean-\" title=\"class or interface in javax.swing\">setAutoscrolls</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setBackground-java.awt.Color-\" title=\"class or interface in javax.swing\">setBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setBorder-javax.swing.border.Border-\" title=\"class or interface in javax.swing\">setBorder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setComponentPopupMenu-javax.swing.JPopupMenu-\" title=\"class or interface in javax.swing\">setComponentPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDebugGraphicsOptions-int-\" title=\"class or interface in javax.swing\">setDebugGraphicsOptions</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDefaultLocale-java.util.Locale-\" title=\"class or interface in javax.swing\">setDefaultLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setDoubleBuffered-boolean-\" title=\"class or interface in javax.swing\">setDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setEnabled-boolean-\" title=\"class or interface in javax.swing\">setEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setFocusTraversalKeys-int-java.util.Set-\" title=\"class or interface in javax.swing\">setFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setFont-java.awt.Font-\" title=\"class or interface in javax.swing\">setFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setForeground-java.awt.Color-\" title=\"class or interface in javax.swing\">setForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInheritsPopupMenu-boolean-\" title=\"class or interface in javax.swing\">setInheritsPopupMenu</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInputMap-int-javax.swing.InputMap-\" title=\"class or interface in javax.swing\">setInputMap</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setInputVerifier-javax.swing.InputVerifier-\" title=\"class or interface in javax.swing\">setInputVerifier</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setMaximumSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setMinimumSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setNextFocusableComponent-java.awt.Component-\" title=\"class or interface in javax.swing\">setNextFocusableComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setOpaque-boolean-\" title=\"class or interface in javax.swing\">setOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setPreferredSize-java.awt.Dimension-\" title=\"class or interface in javax.swing\">setPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setRequestFocusEnabled-boolean-\" title=\"class or interface in javax.swing\">setRequestFocusEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setToolTipText-java.lang.String-\" title=\"class or interface in javax.swing\">setToolTipText</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setTransferHandler-javax.swing.TransferHandler-\" title=\"class or interface in javax.swing\">setTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setUI-javax.swing.plaf.ComponentUI-\" title=\"class or interface in javax.swing\">setUI</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setVerifyInputWhenFocusTarget-boolean-\" title=\"class or interface in javax.swing\">setVerifyInputWhenFocusTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#setVisible-boolean-\" title=\"class or interface in javax.swing\">setVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#unregisterKeyboardAction-javax.swing.KeyStroke-\" title=\"class or interface in javax.swing\">unregisterKeyboardAction</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true#update-java.awt.Graphics-\" title=\"class or interface in javax.swing\">update</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.lang.String-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">addContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addImpl-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">addImpl</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addPropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#applyComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">applyComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#areFocusTraversalKeysSet-int-\" title=\"class or interface in java.awt\">areFocusTraversalKeysSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#countComponents--\" title=\"class or interface in java.awt\">countComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#deliverEvent-java.awt.Event-\" title=\"class or interface in java.awt\">deliverEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#doLayout--\" title=\"class or interface in java.awt\">doLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-int-int-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponent-int-\" title=\"class or interface in java.awt\">getComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-int-int-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentCount--\" title=\"class or interface in java.awt\">getComponentCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponents--\" title=\"class or interface in java.awt\">getComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentZOrder-java.awt.Component-\" title=\"class or interface in java.awt\">getComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getContainerListeners--\" title=\"class or interface in java.awt\">getContainerListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalKeys-int-\" title=\"class or interface in java.awt\">getFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalPolicy--\" title=\"class or interface in java.awt\">getFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getLayout--\" title=\"class or interface in java.awt\">getLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMousePosition-boolean-\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#insets--\" title=\"class or interface in java.awt\">insets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#invalidate--\" title=\"class or interface in java.awt\">invalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isAncestorOf-java.awt.Component-\" title=\"class or interface in java.awt\">isAncestorOf</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot--\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot-java.awt.Container-\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicyProvider--\" title=\"class or interface in java.awt\">isFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicySet--\" title=\"class or interface in java.awt\">isFocusTraversalPolicySet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#layout--\" title=\"class or interface in java.awt\">layout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintStream-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintWriter-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#locate-int-int-\" title=\"class or interface in java.awt\">locate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#minimumSize--\" title=\"class or interface in java.awt\">minimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paintComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#preferredSize--\" title=\"class or interface in java.awt\">preferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#printComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">printComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processContainerEvent-java.awt.event.ContainerEvent-\" title=\"class or interface in java.awt\">processContainerEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">processEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#remove-java.awt.Component-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#remove-int-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeAll--\" title=\"class or interface in java.awt\">removeAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">removeContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setComponentZOrder-java.awt.Component-int-\" title=\"class or interface in java.awt\">setComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusCycleRoot-boolean-\" title=\"class or interface in java.awt\">setFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicy-java.awt.FocusTraversalPolicy-\" title=\"class or interface in java.awt\">setFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicyProvider-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setLayout-java.awt.LayoutManager-\" title=\"class or interface in java.awt\">setLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#transferFocusDownCycle--\" title=\"class or interface in java.awt\">transferFocusDownCycle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validate--\" title=\"class or interface in java.awt\">validate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validateTree--\" title=\"class or interface in java.awt\">validateTree</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#action-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">action</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#add-java.awt.PopupMenu-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">addComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">addFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">addHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">addHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">addInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">addKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">addMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">addMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">addMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#bounds--\" title=\"class or interface in java.awt\">bounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#coalesceEvents-java.awt.AWTEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">coalesceEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-java.awt.Point-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-java.awt.image.ImageProducer-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-int-int-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-java.awt.ImageCapabilities-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disableEvents-long-\" title=\"class or interface in java.awt\">disableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#dispatchEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">dispatchEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable-boolean-\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableEvents-long-\" title=\"class or interface in java.awt\">enableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableInputMethods-boolean-\" title=\"class or interface in java.awt\">enableInputMethods</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-byte-byte-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-double-double-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-float-float-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-long-long-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-short-short-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBackground--\" title=\"class or interface in java.awt\">getBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds--\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getColorModel--\" title=\"class or interface in java.awt\">getColorModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentListeners--\" title=\"class or interface in java.awt\">getComponentListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentOrientation--\" title=\"class or interface in java.awt\">getComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getCursor--\" title=\"class or interface in java.awt\">getCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getDropTarget--\" title=\"class or interface in java.awt\">getDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusCycleRootAncestor--\" title=\"class or interface in java.awt\">getFocusCycleRootAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusListeners--\" title=\"class or interface in java.awt\">getFocusListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusTraversalKeysEnabled--\" title=\"class or interface in java.awt\">getFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFont--\" title=\"class or interface in java.awt\">getFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getForeground--\" title=\"class or interface in java.awt\">getForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getGraphicsConfiguration--\" title=\"class or interface in java.awt\">getGraphicsConfiguration</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyBoundsListeners--\" title=\"class or interface in java.awt\">getHierarchyBoundsListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyListeners--\" title=\"class or interface in java.awt\">getHierarchyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getIgnoreRepaint--\" title=\"class or interface in java.awt\">getIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputContext--\" title=\"class or interface in java.awt\">getInputContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodListeners--\" title=\"class or interface in java.awt\">getInputMethodListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodRequests--\" title=\"class or interface in java.awt\">getInputMethodRequests</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getKeyListeners--\" title=\"class or interface in java.awt\">getKeyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocale--\" title=\"class or interface in java.awt\">getLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation--\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocationOnScreen--\" title=\"class or interface in java.awt\">getLocationOnScreen</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseListeners--\" title=\"class or interface in java.awt\">getMouseListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseMotionListeners--\" title=\"class or interface in java.awt\">getMouseMotionListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMousePosition--\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseWheelListeners--\" title=\"class or interface in java.awt\">getMouseWheelListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getName--\" title=\"class or interface in java.awt\">getName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getParent--\" title=\"class or interface in java.awt\">getParent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPeer--\" title=\"class or interface in java.awt\">getPeer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners--\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners-java.lang.String-\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize--\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getToolkit--\" title=\"class or interface in java.awt\">getToolkit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getTreeLock--\" title=\"class or interface in java.awt\">getTreeLock</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#gotFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">gotFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#handleEvent-java.awt.Event-\" title=\"class or interface in java.awt\">handleEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hasFocus--\" title=\"class or interface in java.awt\">hasFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#imageUpdate-java.awt.Image-int-int-int-int-int-\" title=\"class or interface in java.awt\">imageUpdate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#inside-int-int-\" title=\"class or interface in java.awt\">inside</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isBackgroundSet--\" title=\"class or interface in java.awt\">isBackgroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isCursorSet--\" title=\"class or interface in java.awt\">isCursorSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDisplayable--\" title=\"class or interface in java.awt\">isDisplayable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isEnabled--\" title=\"class or interface in java.awt\">isEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusable--\" title=\"class or interface in java.awt\">isFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusOwner--\" title=\"class or interface in java.awt\">isFocusOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusTraversable--\" title=\"class or interface in java.awt\">isFocusTraversable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFontSet--\" title=\"class or interface in java.awt\">isFontSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isForegroundSet--\" title=\"class or interface in java.awt\">isForegroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isLightweight--\" title=\"class or interface in java.awt\">isLightweight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMaximumSizeSet--\" title=\"class or interface in java.awt\">isMaximumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMinimumSizeSet--\" title=\"class or interface in java.awt\">isMinimumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isPreferredSizeSet--\" title=\"class or interface in java.awt\">isPreferredSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isShowing--\" title=\"class or interface in java.awt\">isShowing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isValid--\" title=\"class or interface in java.awt\">isValid</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isVisible--\" title=\"class or interface in java.awt\">isVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyDown-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyUp-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list--\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintStream-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintWriter-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#location--\" title=\"class or interface in java.awt\">location</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#lostFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">lostFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDown-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDrag-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDrag</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseEnter-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseEnter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseExit-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseExit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseMove-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseMove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseUp-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#move-int-int-\" title=\"class or interface in java.awt\">move</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#nextFocus--\" title=\"class or interface in java.awt\">nextFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#paintAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#postEvent-java.awt.Event-\" title=\"class or interface in java.awt\">postEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processComponentEvent-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt\">processComponentEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processFocusEvent-java.awt.event.FocusEvent-\" title=\"class or interface in java.awt\">processFocusEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyBoundsEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyBoundsEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processInputMethodEvent-java.awt.event.InputMethodEvent-\" title=\"class or interface in java.awt\">processInputMethodEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseWheelEvent-java.awt.event.MouseWheelEvent-\" title=\"class or interface in java.awt\">processMouseWheelEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#remove-java.awt.MenuComponent-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">removeComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">removeFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">removeHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">removeHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">removeInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">removeKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">removeMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">removeMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">removeMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint--\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-int-int-int-int-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-long-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#resize-java.awt.Dimension-\" title=\"class or interface in java.awt\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#resize-int-int-\" title=\"class or interface in java.awt\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-int-int-int-int-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">setComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setCursor-java.awt.Cursor-\" title=\"class or interface in java.awt\">setCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setDropTarget-java.awt.dnd.DropTarget-\" title=\"class or interface in java.awt\">setDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusable-boolean-\" title=\"class or interface in java.awt\">setFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusTraversalKeysEnabled-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setIgnoreRepaint-boolean-\" title=\"class or interface in java.awt\">setIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocale-java.util.Locale-\" title=\"class or interface in java.awt\">setLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-int-int-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocation-java.awt.Point-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setName-java.lang.String-\" title=\"class or interface in java.awt\">setName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setSize-int-int-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show--\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show-boolean-\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#size--\" title=\"class or interface in java.awt\">size</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#toString--\" title=\"class or interface in java.awt\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocus--\" title=\"class or interface in java.awt\">transferFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusBackward--\" title=\"class or interface in java.awt\">transferFocusBackward</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusUpCycle--\" title=\"class or interface in java.awt\">transferFocusUpCycle</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Iterable\">\n<!--   -->\n</a>\n<h3>Methods inherited from interface&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true#forEach-java.util.function.Consumer-\" title=\"class or interface in java.lang\">forEach</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true#spliterator--\" title=\"class or interface in java.lang\">spliterator</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"JBEMenuBar-stanford.spl.JavaBackEnd-acm.io.IOConsole-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>JBEMenuBar</h4>\n<pre>public&nbsp;JBEMenuBar(<a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd,\n                  <a href=\"../../acm/io/IOConsole.html\" title=\"class in acm.io\">IOConsole</a>&nbsp;paramIOConsole)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JBELabel.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JBEMenuBar.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JBEMenuBar.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JMenuBar\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.acm.program.ProgramMenuBar\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#methods.inherited.from.class.acm.program.ProgramMenuBar\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li>Method</li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/JBESwingCommand.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:35 PDT 2017 -->\n<title>JBESwingCommand</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"JBESwingCommand\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JBEMenuBar.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JBEWindow.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JBESwingCommand.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JBESwingCommand.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class JBESwingCommand\" class=\"title\">Class JBESwingCommand</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.JBESwingCommand</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>Direct Known Subclasses:</dt>\n<dd><a href=\"../../stanford/spl/AutograderInput_addButton.html\" title=\"class in stanford.spl\">AutograderInput_addButton</a>, <a href=\"../../stanford/spl/AutograderInput_addCategory.html\" title=\"class in stanford.spl\">AutograderInput_addCategory</a>, <a href=\"../../stanford/spl/AutograderInput_removeButton.html\" title=\"class in stanford.spl\">AutograderInput_removeButton</a>, <a href=\"../../stanford/spl/AutograderInput_removeCategory.html\" title=\"class in stanford.spl\">AutograderInput_removeCategory</a>, <a href=\"../../stanford/spl/AutograderInput_setColumns.html\" title=\"class in stanford.spl\">AutograderInput_setColumns</a>, <a href=\"../../stanford/spl/AutograderInput_setVisible.html\" title=\"class in stanford.spl\">AutograderInput_setVisible</a>, <a href=\"../../stanford/spl/AutograderUnitTest_addTest.html\" title=\"class in stanford.spl\">AutograderUnitTest_addTest</a>, <a href=\"../../stanford/spl/AutograderUnitTest_catchExceptions.html\" title=\"class in stanford.spl\">AutograderUnitTest_catchExceptions</a>, <a href=\"../../stanford/spl/AutograderUnitTest_clearTestResults.html\" title=\"class in stanford.spl\">AutograderUnitTest_clearTestResults</a>, <a href=\"../../stanford/spl/AutograderUnitTest_clearTests.html\" title=\"class in stanford.spl\">AutograderUnitTest_clearTests</a>, <a href=\"../../stanford/spl/AutograderUnitTest_isChecked.html\" title=\"class in stanford.spl\">AutograderUnitTest_isChecked</a>, <a href=\"../../stanford/spl/AutograderUnitTest_setChecked.html\" title=\"class in stanford.spl\">AutograderUnitTest_setChecked</a>, <a href=\"../../stanford/spl/AutograderUnitTest_setTestCounts.html\" title=\"class in stanford.spl\">AutograderUnitTest_setTestCounts</a>, <a href=\"../../stanford/spl/AutograderUnitTest_setTestDetails.html\" title=\"class in stanford.spl\">AutograderUnitTest_setTestDetails</a>, <a href=\"../../stanford/spl/AutograderUnitTest_setTestingCompleted.html\" title=\"class in stanford.spl\">AutograderUnitTest_setTestingCompleted</a>, <a href=\"../../stanford/spl/AutograderUnitTest_setTestResult.html\" title=\"class in stanford.spl\">AutograderUnitTest_setTestResult</a>, <a href=\"../../stanford/spl/AutograderUnitTest_setTestRuntime.html\" title=\"class in stanford.spl\">AutograderUnitTest_setTestRuntime</a>, <a href=\"../../stanford/spl/AutograderUnitTest_setVisible.html\" title=\"class in stanford.spl\">AutograderUnitTest_setVisible</a>, <a href=\"../../stanford/spl/AutograderUnitTest_setWindowDescriptionText.html\" title=\"class in stanford.spl\">AutograderUnitTest_setWindowDescriptionText</a>, <a href=\"../../stanford/spl/Clipboard_get.html\" title=\"class in stanford.spl\">Clipboard_get</a>, <a href=\"../../stanford/spl/Clipboard_set.html\" title=\"class in stanford.spl\">Clipboard_set</a>, <a href=\"../../stanford/spl/DiffImage_compareImages.html\" title=\"class in stanford.spl\">DiffImage_compareImages</a>, <a href=\"../../stanford/spl/DiffImage_compareWindowToImage.html\" title=\"class in stanford.spl\">DiffImage_compareWindowToImage</a>, <a href=\"../../stanford/spl/DiffImage_show.html\" title=\"class in stanford.spl\">DiffImage_show</a>, <a href=\"../../stanford/spl/GBufferedImage_create.html\" title=\"class in stanford.spl\">GBufferedImage_create</a>, <a href=\"../../stanford/spl/GBufferedImage_fill.html\" title=\"class in stanford.spl\">GBufferedImage_fill</a>, <a href=\"../../stanford/spl/GBufferedImage_fillRegion.html\" title=\"class in stanford.spl\">GBufferedImage_fillRegion</a>, <a href=\"../../stanford/spl/GBufferedImage_load.html\" title=\"class in stanford.spl\">GBufferedImage_load</a>, <a href=\"../../stanford/spl/GBufferedImage_resize.html\" title=\"class in stanford.spl\">GBufferedImage_resize</a>, <a href=\"../../stanford/spl/GBufferedImage_save.html\" title=\"class in stanford.spl\">GBufferedImage_save</a>, <a href=\"../../stanford/spl/GBufferedImage_setRGB.html\" title=\"class in stanford.spl\">GBufferedImage_setRGB</a>, <a href=\"../../stanford/spl/GBufferedImage_updateAllPixels.html\" title=\"class in stanford.spl\">GBufferedImage_updateAllPixels</a>, <a href=\"../../stanford/spl/GCompound_add.html\" title=\"class in stanford.spl\">GCompound_add</a>, <a href=\"../../stanford/spl/GFileChooser_showOpenDialog.html\" title=\"class in stanford.spl\">GFileChooser_showOpenDialog</a>, <a href=\"../../stanford/spl/GFileChooser_showSaveDialog.html\" title=\"class in stanford.spl\">GFileChooser_showSaveDialog</a>, <a href=\"../../stanford/spl/GInteractor_addActionListener.html\" title=\"class in stanford.spl\">GInteractor_addActionListener</a>, <a href=\"../../stanford/spl/GInteractor_getAccelerator.html\" title=\"class in stanford.spl\">GInteractor_getAccelerator</a>, <a href=\"../../stanford/spl/GInteractor_getFont.html\" title=\"class in stanford.spl\">GInteractor_getFont</a>, <a href=\"../../stanford/spl/GInteractor_getMnemonic.html\" title=\"class in stanford.spl\">GInteractor_getMnemonic</a>, <a href=\"../../stanford/spl/GInteractor_isEnabled.html\" title=\"class in stanford.spl\">GInteractor_isEnabled</a>, <a href=\"../../stanford/spl/GInteractor_removeActionListener.html\" title=\"class in stanford.spl\">GInteractor_removeActionListener</a>, <a href=\"../../stanford/spl/GInteractor_requestFocus.html\" title=\"class in stanford.spl\">GInteractor_requestFocus</a>, <a href=\"../../stanford/spl/GInteractor_setAccelerator.html\" title=\"class in stanford.spl\">GInteractor_setAccelerator</a>, <a href=\"../../stanford/spl/GInteractor_setBackground.html\" title=\"class in stanford.spl\">GInteractor_setBackground</a>, <a href=\"../../stanford/spl/GInteractor_setEnabled.html\" title=\"class in stanford.spl\">GInteractor_setEnabled</a>, <a href=\"../../stanford/spl/GInteractor_setFont.html\" title=\"class in stanford.spl\">GInteractor_setFont</a>, <a href=\"../../stanford/spl/GInteractor_setIcon.html\" title=\"class in stanford.spl\">GInteractor_setIcon</a>, <a href=\"../../stanford/spl/GInteractor_setMnemonic.html\" title=\"class in stanford.spl\">GInteractor_setMnemonic</a>, <a href=\"../../stanford/spl/GInteractor_setText.html\" title=\"class in stanford.spl\">GInteractor_setText</a>, <a href=\"../../stanford/spl/GInteractor_setTextPosition.html\" title=\"class in stanford.spl\">GInteractor_setTextPosition</a>, <a href=\"../../stanford/spl/GInteractor_setTooltip.html\" title=\"class in stanford.spl\">GInteractor_setTooltip</a>, <a href=\"../../stanford/spl/GObject_remove.html\" title=\"class in stanford.spl\">GObject_remove</a>, <a href=\"../../stanford/spl/GObject_setAntialiasing.html\" title=\"class in stanford.spl\">GObject_setAntialiasing</a>, <a href=\"../../stanford/spl/GOptionPane_showConfirmDialog.html\" title=\"class in stanford.spl\">GOptionPane_showConfirmDialog</a>, <a href=\"../../stanford/spl/GOptionPane_showInputDialog.html\" title=\"class in stanford.spl\">GOptionPane_showInputDialog</a>, <a href=\"../../stanford/spl/GOptionPane_showMessageDialog.html\" title=\"class in stanford.spl\">GOptionPane_showMessageDialog</a>, <a href=\"../../stanford/spl/GOptionPane_showOptionDialog.html\" title=\"class in stanford.spl\">GOptionPane_showOptionDialog</a>, <a href=\"../../stanford/spl/GOptionPane_showTextFileDialog.html\" title=\"class in stanford.spl\">GOptionPane_showTextFileDialog</a>, <a href=\"../../stanford/spl/GRadioButton_create.html\" title=\"class in stanford.spl\">GRadioButton_create</a>, <a href=\"../../stanford/spl/GRadioButton_isSelected.html\" title=\"class in stanford.spl\">GRadioButton_isSelected</a>, <a href=\"../../stanford/spl/GRadioButton_setSelected.html\" title=\"class in stanford.spl\">GRadioButton_setSelected</a>, <a href=\"../../stanford/spl/GSlider_getMajorTickSpacing.html\" title=\"class in stanford.spl\">GSlider_getMajorTickSpacing</a>, <a href=\"../../stanford/spl/GSlider_getMinorTickSpacing.html\" title=\"class in stanford.spl\">GSlider_getMinorTickSpacing</a>, <a href=\"../../stanford/spl/GSlider_getPaintLabels.html\" title=\"class in stanford.spl\">GSlider_getPaintLabels</a>, <a href=\"../../stanford/spl/GSlider_getPaintTicks.html\" title=\"class in stanford.spl\">GSlider_getPaintTicks</a>, <a href=\"../../stanford/spl/GSlider_getSnapToTicks.html\" title=\"class in stanford.spl\">GSlider_getSnapToTicks</a>, <a href=\"../../stanford/spl/GSlider_setMajorTickSpacing.html\" title=\"class in stanford.spl\">GSlider_setMajorTickSpacing</a>, <a href=\"../../stanford/spl/GSlider_setMinorTickSpacing.html\" title=\"class in stanford.spl\">GSlider_setMinorTickSpacing</a>, <a href=\"../../stanford/spl/GSlider_setPaintLabels.html\" title=\"class in stanford.spl\">GSlider_setPaintLabels</a>, <a href=\"../../stanford/spl/GSlider_setPaintTicks.html\" title=\"class in stanford.spl\">GSlider_setPaintTicks</a>, <a href=\"../../stanford/spl/GSlider_setSnapToTicks.html\" title=\"class in stanford.spl\">GSlider_setSnapToTicks</a>, <a href=\"../../stanford/spl/GTable_autofitColumnWidths.html\" title=\"class in stanford.spl\">GTable_autofitColumnWidths</a>, <a href=\"../../stanford/spl/GTable_clear.html\" title=\"class in stanford.spl\">GTable_clear</a>, <a href=\"../../stanford/spl/GTable_clearFormatting.html\" title=\"class in stanford.spl\">GTable_clearFormatting</a>, <a href=\"../../stanford/spl/GTable_create.html\" title=\"class in stanford.spl\">GTable_create</a>, <a href=\"../../stanford/spl/GTable_get.html\" title=\"class in stanford.spl\">GTable_get</a>, <a href=\"../../stanford/spl/GTable_getColumnWidth.html\" title=\"class in stanford.spl\">GTable_getColumnWidth</a>, <a href=\"../../stanford/spl/GTable_getSelection.html\" title=\"class in stanford.spl\">GTable_getSelection</a>, <a href=\"../../stanford/spl/GTable_resize.html\" title=\"class in stanford.spl\">GTable_resize</a>, <a href=\"../../stanford/spl/GTable_select.html\" title=\"class in stanford.spl\">GTable_select</a>, <a href=\"../../stanford/spl/GTable_set.html\" title=\"class in stanford.spl\">GTable_set</a>, <a href=\"../../stanford/spl/GTable_setCellAlignment.html\" title=\"class in stanford.spl\">GTable_setCellAlignment</a>, <a href=\"../../stanford/spl/GTable_setCellBackground.html\" title=\"class in stanford.spl\">GTable_setCellBackground</a>, <a href=\"../../stanford/spl/GTable_setCellFont.html\" title=\"class in stanford.spl\">GTable_setCellFont</a>, <a href=\"../../stanford/spl/GTable_setCellForeground.html\" title=\"class in stanford.spl\">GTable_setCellForeground</a>, <a href=\"../../stanford/spl/GTable_setColumnAlignment.html\" title=\"class in stanford.spl\">GTable_setColumnAlignment</a>, <a href=\"../../stanford/spl/GTable_setColumnBackground.html\" title=\"class in stanford.spl\">GTable_setColumnBackground</a>, <a href=\"../../stanford/spl/GTable_setColumnFont.html\" title=\"class in stanford.spl\">GTable_setColumnFont</a>, <a href=\"../../stanford/spl/GTable_setColumnForeground.html\" title=\"class in stanford.spl\">GTable_setColumnForeground</a>, <a href=\"../../stanford/spl/GTable_setColumnHeaderStyle.html\" title=\"class in stanford.spl\">GTable_setColumnHeaderStyle</a>, <a href=\"../../stanford/spl/GTable_setColumnWidth.html\" title=\"class in stanford.spl\">GTable_setColumnWidth</a>, <a href=\"../../stanford/spl/GTable_setEditable.html\" title=\"class in stanford.spl\">GTable_setEditable</a>, <a href=\"../../stanford/spl/GTable_setEditorValue.html\" title=\"class in stanford.spl\">GTable_setEditorValue</a>, <a href=\"../../stanford/spl/GTable_setEventEnabled.html\" title=\"class in stanford.spl\">GTable_setEventEnabled</a>, <a href=\"../../stanford/spl/GTable_setFont.html\" title=\"class in stanford.spl\">GTable_setFont</a>, <a href=\"../../stanford/spl/GTable_setHorizontalAlignment.html\" title=\"class in stanford.spl\">GTable_setHorizontalAlignment</a>, <a href=\"../../stanford/spl/GTable_setRowAlignment.html\" title=\"class in stanford.spl\">GTable_setRowAlignment</a>, <a href=\"../../stanford/spl/GTable_setRowBackground.html\" title=\"class in stanford.spl\">GTable_setRowBackground</a>, <a href=\"../../stanford/spl/GTable_setRowColumnHeadersVisible.html\" title=\"class in stanford.spl\">GTable_setRowColumnHeadersVisible</a>, <a href=\"../../stanford/spl/GTable_setRowFont.html\" title=\"class in stanford.spl\">GTable_setRowFont</a>, <a href=\"../../stanford/spl/GTable_setRowForeground.html\" title=\"class in stanford.spl\">GTable_setRowForeground</a>, <a href=\"../../stanford/spl/GTextArea_create.html\" title=\"class in stanford.spl\">GTextArea_create</a>, <a href=\"../../stanford/spl/GTextArea_getText.html\" title=\"class in stanford.spl\">GTextArea_getText</a>, <a href=\"../../stanford/spl/GTextArea_setEditable.html\" title=\"class in stanford.spl\">GTextArea_setEditable</a>, <a href=\"../../stanford/spl/GTextArea_setFont.html\" title=\"class in stanford.spl\">GTextArea_setFont</a>, <a href=\"../../stanford/spl/GTextArea_setText.html\" title=\"class in stanford.spl\">GTextArea_setText</a>, <a href=\"../../stanford/spl/GTextField_isEditable.html\" title=\"class in stanford.spl\">GTextField_isEditable</a>, <a href=\"../../stanford/spl/GTextField_setEditable.html\" title=\"class in stanford.spl\">GTextField_setEditable</a>, <a href=\"../../stanford/spl/GTextField_setPlaceholder.html\" title=\"class in stanford.spl\">GTextField_setPlaceholder</a>, <a href=\"../../stanford/spl/GWindow_clearCanvas.html\" title=\"class in stanford.spl\">GWindow_clearCanvas</a>, <a href=\"../../stanford/spl/GWindow_close.html\" title=\"class in stanford.spl\">GWindow_close</a>, <a href=\"../../stanford/spl/GWindow_create.html\" title=\"class in stanford.spl\">GWindow_create</a>, <a href=\"../../stanford/spl/GWindow_drawInBackground.html\" title=\"class in stanford.spl\">GWindow_drawInBackground</a>, <a href=\"../../stanford/spl/GWindow_getCanvasSize.html\" title=\"class in stanford.spl\">GWindow_getCanvasSize</a>, <a href=\"../../stanford/spl/GWindow_getContentPaneSize.html\" title=\"class in stanford.spl\">GWindow_getContentPaneSize</a>, <a href=\"../../stanford/spl/GWindow_getLocation.html\" title=\"class in stanford.spl\">GWindow_getLocation</a>, <a href=\"../../stanford/spl/GWindow_getPixel.html\" title=\"class in stanford.spl\">GWindow_getPixel</a>, <a href=\"../../stanford/spl/GWindow_getPixels.html\" title=\"class in stanford.spl\">GWindow_getPixels</a>, <a href=\"../../stanford/spl/GWindow_getRegionSize.html\" title=\"class in stanford.spl\">GWindow_getRegionSize</a>, <a href=\"../../stanford/spl/GWindow_getScreenSize.html\" title=\"class in stanford.spl\">GWindow_getScreenSize</a>, <a href=\"../../stanford/spl/GWindow_getSize.html\" title=\"class in stanford.spl\">GWindow_getSize</a>, <a href=\"../../stanford/spl/GWindow_minimize.html\" title=\"class in stanford.spl\">GWindow_minimize</a>, <a href=\"../../stanford/spl/GWindow_pack.html\" title=\"class in stanford.spl\">GWindow_pack</a>, <a href=\"../../stanford/spl/GWindow_removeFromRegion.html\" title=\"class in stanford.spl\">GWindow_removeFromRegion</a>, <a href=\"../../stanford/spl/GWindow_saveCanvasPixels.html\" title=\"class in stanford.spl\">GWindow_saveCanvasPixels</a>, <a href=\"../../stanford/spl/GWindow_setCanvasSize.html\" title=\"class in stanford.spl\">GWindow_setCanvasSize</a>, <a href=\"../../stanford/spl/GWindow_setCloseOperation.html\" title=\"class in stanford.spl\">GWindow_setCloseOperation</a>, <a href=\"../../stanford/spl/GWindow_setExitOnClose.html\" title=\"class in stanford.spl\">GWindow_setExitOnClose</a>, <a href=\"../../stanford/spl/GWindow_setLocation.html\" title=\"class in stanford.spl\">GWindow_setLocation</a>, <a href=\"../../stanford/spl/GWindow_setLocationSaved.html\" title=\"class in stanford.spl\">GWindow_setLocationSaved</a>, <a href=\"../../stanford/spl/GWindow_setPixel.html\" title=\"class in stanford.spl\">GWindow_setPixel</a>, <a href=\"../../stanford/spl/GWindow_setPixels.html\" title=\"class in stanford.spl\">GWindow_setPixels</a>, <a href=\"../../stanford/spl/GWindow_setRegionSize.html\" title=\"class in stanford.spl\">GWindow_setRegionSize</a>, <a href=\"../../stanford/spl/GWindow_setResizable.html\" title=\"class in stanford.spl\">GWindow_setResizable</a>, <a href=\"../../stanford/spl/GWindow_setSize.html\" title=\"class in stanford.spl\">GWindow_setSize</a>, <a href=\"../../stanford/spl/GWindow_toBack.html\" title=\"class in stanford.spl\">GWindow_toBack</a>, <a href=\"../../stanford/spl/GWindow_toFront.html\" title=\"class in stanford.spl\">GWindow_toFront</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public abstract class <span class=\"typeNameLabel\">JBESwingCommand</span>\nextends <a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></pre>\n<div class=\"block\">A JBECommand that should be run on the Swing event thread.</div>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBESwingCommand.html#JBESwingCommand--\">JBESwingCommand</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBESwingCommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></span>()</code>\n<div class=\"block\">Returns whether this command should run on the Swing GUI event thread.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"JBESwingCommand--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>JBESwingCommand</h4>\n<pre>public&nbsp;JBESwingCommand()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"shouldRunOnSwingEventThread--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>shouldRunOnSwingEventThread</h4>\n<pre>public&nbsp;boolean&nbsp;shouldRunOnSwingEventThread()</pre>\n<div class=\"block\"><span class=\"descfrmTypeLabel\">Description copied from class:&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html#shouldRunOnSwingEventThread--\">JBECommand</a></code></span></div>\n<div class=\"block\">Returns whether this command should run on the Swing GUI event thread.\n This is typically true for graphical/GUI related commands.</div>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Overrides:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JBEMenuBar.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JBEWindow.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JBESwingCommand.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JBESwingCommand.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/JBEWindow.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:36 PDT 2017 -->\n<title>JBEWindow</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"JBEWindow\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/LibraryUpdater.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JBEWindow.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JBEWindow.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JFrame\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.javax.swing.JFrame\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class JBEWindow\" class=\"title\">Class JBEWindow</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Component</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Container</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Window</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Frame</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JFrame</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.JBEWindow</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/RootPaneContainer.html?is-external=true\" title=\"class or interface in javax.swing\">RootPaneContainer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/WindowConstants.html?is-external=true\" title=\"class or interface in javax.swing\">WindowConstants</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">JBEWindow</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true\" title=\"class or interface in javax.swing\">JFrame</a></pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#stanford.spl.JBEWindow\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JFrame\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true\" title=\"class or interface in javax.swing\">JFrame</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.AccessibleJFrame.html?is-external=true\" title=\"class or interface in javax.swing\">JFrame.AccessibleJFrame</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Frame\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true\" title=\"class or interface in java.awt\">Frame</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.AccessibleAWTFrame.html?is-external=true\" title=\"class or interface in java.awt\">Frame.AccessibleAWTFrame</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Window\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true\" title=\"class or interface in java.awt\">Window</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.AccessibleAWTWindow.html?is-external=true\" title=\"class or interface in java.awt\">Window.AccessibleAWTWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.Type.html?is-external=true\" title=\"class or interface in java.awt\">Window.Type</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.AccessibleAWTContainer.html?is-external=true\" title=\"class or interface in java.awt\">Container.AccessibleAWTContainer</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.AccessibleAWTComponent.html?is-external=true\" title=\"class or interface in java.awt\">Component.AccessibleAWTComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BaselineResizeBehavior.html?is-external=true\" title=\"class or interface in java.awt\">Component.BaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BltBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.BltBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.FlipBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.FlipBufferStrategy</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.JFrame\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true\" title=\"class or interface in javax.swing\">JFrame</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true#accessibleContext\" title=\"class or interface in javax.swing\">accessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true#EXIT_ON_CLOSE\" title=\"class or interface in javax.swing\">EXIT_ON_CLOSE</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true#rootPane\" title=\"class or interface in javax.swing\">rootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true#rootPaneCheckingEnabled\" title=\"class or interface in javax.swing\">rootPaneCheckingEnabled</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.Frame\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true\" title=\"class or interface in java.awt\">Frame</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#CROSSHAIR_CURSOR\" title=\"class or interface in java.awt\">CROSSHAIR_CURSOR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#DEFAULT_CURSOR\" title=\"class or interface in java.awt\">DEFAULT_CURSOR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#E_RESIZE_CURSOR\" title=\"class or interface in java.awt\">E_RESIZE_CURSOR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#HAND_CURSOR\" title=\"class or interface in java.awt\">HAND_CURSOR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#ICONIFIED\" title=\"class or interface in java.awt\">ICONIFIED</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#MAXIMIZED_BOTH\" title=\"class or interface in java.awt\">MAXIMIZED_BOTH</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#MAXIMIZED_HORIZ\" title=\"class or interface in java.awt\">MAXIMIZED_HORIZ</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#MAXIMIZED_VERT\" title=\"class or interface in java.awt\">MAXIMIZED_VERT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#MOVE_CURSOR\" title=\"class or interface in java.awt\">MOVE_CURSOR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#N_RESIZE_CURSOR\" title=\"class or interface in java.awt\">N_RESIZE_CURSOR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#NE_RESIZE_CURSOR\" title=\"class or interface in java.awt\">NE_RESIZE_CURSOR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#NORMAL\" title=\"class or interface in java.awt\">NORMAL</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#NW_RESIZE_CURSOR\" title=\"class or interface in java.awt\">NW_RESIZE_CURSOR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#S_RESIZE_CURSOR\" title=\"class or interface in java.awt\">S_RESIZE_CURSOR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#SE_RESIZE_CURSOR\" title=\"class or interface in java.awt\">SE_RESIZE_CURSOR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#SW_RESIZE_CURSOR\" title=\"class or interface in java.awt\">SW_RESIZE_CURSOR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#TEXT_CURSOR\" title=\"class or interface in java.awt\">TEXT_CURSOR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#W_RESIZE_CURSOR\" title=\"class or interface in java.awt\">W_RESIZE_CURSOR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#WAIT_CURSOR\" title=\"class or interface in java.awt\">WAIT_CURSOR</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#BOTTOM_ALIGNMENT\" title=\"class or interface in java.awt\">BOTTOM_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#CENTER_ALIGNMENT\" title=\"class or interface in java.awt\">CENTER_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#LEFT_ALIGNMENT\" title=\"class or interface in java.awt\">LEFT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#RIGHT_ALIGNMENT\" title=\"class or interface in java.awt\">RIGHT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#TOP_ALIGNMENT\" title=\"class or interface in java.awt\">TOP_ALIGNMENT</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.WindowConstants\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/WindowConstants.html?is-external=true\" title=\"class or interface in javax.swing\">WindowConstants</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/WindowConstants.html?is-external=true#DISPOSE_ON_CLOSE\" title=\"class or interface in javax.swing\">DISPOSE_ON_CLOSE</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/WindowConstants.html?is-external=true#DO_NOTHING_ON_CLOSE\" title=\"class or interface in javax.swing\">DO_NOTHING_ON_CLOSE</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/WindowConstants.html?is-external=true#HIDE_ON_CLOSE\" title=\"class or interface in javax.swing\">HIDE_ON_CLOSE</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.image.ImageObserver\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ABORT\" title=\"class or interface in java.awt.image\">ABORT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ALLBITS\" title=\"class or interface in java.awt.image\">ALLBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ERROR\" title=\"class or interface in java.awt.image\">ERROR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#FRAMEBITS\" title=\"class or interface in java.awt.image\">FRAMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#HEIGHT\" title=\"class or interface in java.awt.image\">HEIGHT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#PROPERTIES\" title=\"class or interface in java.awt.image\">PROPERTIES</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#SOMEBITS\" title=\"class or interface in java.awt.image\">SOMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#WIDTH\" title=\"class or interface in java.awt.image\">WIDTH</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBEWindow.html#JBEWindow-stanford.spl.JavaBackEnd-java.lang.String-java.lang.String-int-int-\">JBEWindow</a></span>(<a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd,\n         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString1,\n         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString2,\n         int&nbsp;width,\n         int&nbsp;height)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBEWindow.html#addToRegion-javax.swing.JComponent-java.lang.String-\">addToRegion</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&nbsp;paramJComponent,\n           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBEWindow.html#clear--\">clear</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBEWindow.html#clearCanvas--\">clearCanvas</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBEWindow.html#close--\">close</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"../../stanford/spl/JBECanvas.html\" title=\"class in stanford.spl\">JBECanvas</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBEWindow.html#getCanvas--\">getCanvas</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBEWindow.html#getCanvasSize--\">getCanvasSize</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBEWindow.html#getContentPaneSize--\">getContentPaneSize</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBEWindow.html#getWindowId--\">getWindowId</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBEWindow.html#removeFromRegion-javax.swing.JComponent-java.lang.String-\">removeFromRegion</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&nbsp;paramJComponent,\n                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBEWindow.html#saveCanvasPixels-java.lang.String-\">saveCanvasPixels</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JBEWindow.html#setRegionAlignment-java.lang.String-java.lang.String-\">setRegionAlignment</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString1,\n                  <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString2)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JFrame\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true\" title=\"class or interface in javax.swing\">JFrame</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true#addImpl-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in javax.swing\">addImpl</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true#createRootPane--\" title=\"class or interface in javax.swing\">createRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true#frameInit--\" title=\"class or interface in javax.swing\">frameInit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true#getAccessibleContext--\" title=\"class or interface in javax.swing\">getAccessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true#getContentPane--\" title=\"class or interface in javax.swing\">getContentPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true#getDefaultCloseOperation--\" title=\"class or interface in javax.swing\">getDefaultCloseOperation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true#getGlassPane--\" title=\"class or interface in javax.swing\">getGlassPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true#getGraphics--\" title=\"class or interface in javax.swing\">getGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true#getJMenuBar--\" title=\"class or interface in javax.swing\">getJMenuBar</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true#getLayeredPane--\" title=\"class or interface in javax.swing\">getLayeredPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true#getRootPane--\" title=\"class or interface in javax.swing\">getRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true#getTransferHandler--\" title=\"class or interface in javax.swing\">getTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true#isDefaultLookAndFeelDecorated--\" title=\"class or interface in javax.swing\">isDefaultLookAndFeelDecorated</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true#isRootPaneCheckingEnabled--\" title=\"class or interface in javax.swing\">isRootPaneCheckingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true#paramString--\" title=\"class or interface in javax.swing\">paramString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true#processWindowEvent-java.awt.event.WindowEvent-\" title=\"class or interface in javax.swing\">processWindowEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true#remove-java.awt.Component-\" title=\"class or interface in javax.swing\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true#repaint-long-int-int-int-int-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true#setContentPane-java.awt.Container-\" title=\"class or interface in javax.swing\">setContentPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true#setDefaultCloseOperation-int-\" title=\"class or interface in javax.swing\">setDefaultCloseOperation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true#setDefaultLookAndFeelDecorated-boolean-\" title=\"class or interface in javax.swing\">setDefaultLookAndFeelDecorated</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true#setGlassPane-java.awt.Component-\" title=\"class or interface in javax.swing\">setGlassPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true#setIconImage-java.awt.Image-\" title=\"class or interface in javax.swing\">setIconImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true#setJMenuBar-javax.swing.JMenuBar-\" title=\"class or interface in javax.swing\">setJMenuBar</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true#setLayeredPane-javax.swing.JLayeredPane-\" title=\"class or interface in javax.swing\">setLayeredPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true#setLayout-java.awt.LayoutManager-\" title=\"class or interface in javax.swing\">setLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true#setRootPane-javax.swing.JRootPane-\" title=\"class or interface in javax.swing\">setRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true#setRootPaneCheckingEnabled-boolean-\" title=\"class or interface in javax.swing\">setRootPaneCheckingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true#setTransferHandler-javax.swing.TransferHandler-\" title=\"class or interface in javax.swing\">setTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true#update-java.awt.Graphics-\" title=\"class or interface in javax.swing\">update</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Frame\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true\" title=\"class or interface in java.awt\">Frame</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#addNotify--\" title=\"class or interface in java.awt\">addNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#getCursorType--\" title=\"class or interface in java.awt\">getCursorType</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#getExtendedState--\" title=\"class or interface in java.awt\">getExtendedState</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#getFrames--\" title=\"class or interface in java.awt\">getFrames</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#getIconImage--\" title=\"class or interface in java.awt\">getIconImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#getMaximizedBounds--\" title=\"class or interface in java.awt\">getMaximizedBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#getMenuBar--\" title=\"class or interface in java.awt\">getMenuBar</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#getState--\" title=\"class or interface in java.awt\">getState</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#getTitle--\" title=\"class or interface in java.awt\">getTitle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#isResizable--\" title=\"class or interface in java.awt\">isResizable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#isUndecorated--\" title=\"class or interface in java.awt\">isUndecorated</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#remove-java.awt.MenuComponent-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#removeNotify--\" title=\"class or interface in java.awt\">removeNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#setBackground-java.awt.Color-\" title=\"class or interface in java.awt\">setBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#setCursor-int-\" title=\"class or interface in java.awt\">setCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#setExtendedState-int-\" title=\"class or interface in java.awt\">setExtendedState</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#setMaximizedBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">setMaximizedBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#setMenuBar-java.awt.MenuBar-\" title=\"class or interface in java.awt\">setMenuBar</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#setOpacity-float-\" title=\"class or interface in java.awt\">setOpacity</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#setResizable-boolean-\" title=\"class or interface in java.awt\">setResizable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#setShape-java.awt.Shape-\" title=\"class or interface in java.awt\">setShape</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#setState-int-\" title=\"class or interface in java.awt\">setState</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#setTitle-java.lang.String-\" title=\"class or interface in java.awt\">setTitle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true#setUndecorated-boolean-\" title=\"class or interface in java.awt\">setUndecorated</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Window\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true\" title=\"class or interface in java.awt\">Window</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#addPropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#addPropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#addWindowFocusListener-java.awt.event.WindowFocusListener-\" title=\"class or interface in java.awt\">addWindowFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#addWindowListener-java.awt.event.WindowListener-\" title=\"class or interface in java.awt\">addWindowListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#addWindowStateListener-java.awt.event.WindowStateListener-\" title=\"class or interface in java.awt\">addWindowStateListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#applyResourceBundle-java.util.ResourceBundle-\" title=\"class or interface in java.awt\">applyResourceBundle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#applyResourceBundle-java.lang.String-\" title=\"class or interface in java.awt\">applyResourceBundle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#createBufferStrategy-int-\" title=\"class or interface in java.awt\">createBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#createBufferStrategy-int-java.awt.BufferCapabilities-\" title=\"class or interface in java.awt\">createBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#dispose--\" title=\"class or interface in java.awt\">dispose</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getBackground--\" title=\"class or interface in java.awt\">getBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getBufferStrategy--\" title=\"class or interface in java.awt\">getBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getFocusableWindowState--\" title=\"class or interface in java.awt\">getFocusableWindowState</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getFocusCycleRootAncestor--\" title=\"class or interface in java.awt\">getFocusCycleRootAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getFocusOwner--\" title=\"class or interface in java.awt\">getFocusOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getFocusTraversalKeys-int-\" title=\"class or interface in java.awt\">getFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getIconImages--\" title=\"class or interface in java.awt\">getIconImages</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getInputContext--\" title=\"class or interface in java.awt\">getInputContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getListeners-java.lang.Class-\" title=\"class or interface in java.awt\">getListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getLocale--\" title=\"class or interface in java.awt\">getLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getModalExclusionType--\" title=\"class or interface in java.awt\">getModalExclusionType</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getMostRecentFocusOwner--\" title=\"class or interface in java.awt\">getMostRecentFocusOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getOpacity--\" title=\"class or interface in java.awt\">getOpacity</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getOwnedWindows--\" title=\"class or interface in java.awt\">getOwnedWindows</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getOwner--\" title=\"class or interface in java.awt\">getOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getOwnerlessWindows--\" title=\"class or interface in java.awt\">getOwnerlessWindows</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getShape--\" title=\"class or interface in java.awt\">getShape</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getToolkit--\" title=\"class or interface in java.awt\">getToolkit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getType--\" title=\"class or interface in java.awt\">getType</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getWarningString--\" title=\"class or interface in java.awt\">getWarningString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getWindowFocusListeners--\" title=\"class or interface in java.awt\">getWindowFocusListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getWindowListeners--\" title=\"class or interface in java.awt\">getWindowListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getWindows--\" title=\"class or interface in java.awt\">getWindows</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getWindowStateListeners--\" title=\"class or interface in java.awt\">getWindowStateListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#hide--\" title=\"class or interface in java.awt\">hide</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isActive--\" title=\"class or interface in java.awt\">isActive</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isAlwaysOnTop--\" title=\"class or interface in java.awt\">isAlwaysOnTop</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isAlwaysOnTopSupported--\" title=\"class or interface in java.awt\">isAlwaysOnTopSupported</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isAutoRequestFocus--\" title=\"class or interface in java.awt\">isAutoRequestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isFocusableWindow--\" title=\"class or interface in java.awt\">isFocusableWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isFocusCycleRoot--\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isFocused--\" title=\"class or interface in java.awt\">isFocused</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isLocationByPlatform--\" title=\"class or interface in java.awt\">isLocationByPlatform</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isOpaque--\" title=\"class or interface in java.awt\">isOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isShowing--\" title=\"class or interface in java.awt\">isShowing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isValidateRoot--\" title=\"class or interface in java.awt\">isValidateRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#pack--\" title=\"class or interface in java.awt\">pack</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#paint-java.awt.Graphics-\" title=\"class or interface in java.awt\">paint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#postEvent-java.awt.Event-\" title=\"class or interface in java.awt\">postEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#processEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">processEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#processWindowFocusEvent-java.awt.event.WindowEvent-\" title=\"class or interface in java.awt\">processWindowFocusEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#processWindowStateEvent-java.awt.event.WindowEvent-\" title=\"class or interface in java.awt\">processWindowStateEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#removeWindowFocusListener-java.awt.event.WindowFocusListener-\" title=\"class or interface in java.awt\">removeWindowFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#removeWindowListener-java.awt.event.WindowListener-\" title=\"class or interface in java.awt\">removeWindowListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#removeWindowStateListener-java.awt.event.WindowStateListener-\" title=\"class or interface in java.awt\">removeWindowStateListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#reshape-int-int-int-int-\" title=\"class or interface in java.awt\">reshape</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setAlwaysOnTop-boolean-\" title=\"class or interface in java.awt\">setAlwaysOnTop</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setAutoRequestFocus-boolean-\" title=\"class or interface in java.awt\">setAutoRequestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setBounds-int-int-int-int-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setCursor-java.awt.Cursor-\" title=\"class or interface in java.awt\">setCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setFocusableWindowState-boolean-\" title=\"class or interface in java.awt\">setFocusableWindowState</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setFocusCycleRoot-boolean-\" title=\"class or interface in java.awt\">setFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setIconImages-java.util.List-\" title=\"class or interface in java.awt\">setIconImages</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setLocation-int-int-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setLocation-java.awt.Point-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setLocationByPlatform-boolean-\" title=\"class or interface in java.awt\">setLocationByPlatform</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setLocationRelativeTo-java.awt.Component-\" title=\"class or interface in java.awt\">setLocationRelativeTo</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setMinimumSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setModalExclusionType-java.awt.Dialog.ModalExclusionType-\" title=\"class or interface in java.awt\">setModalExclusionType</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setSize-int-int-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setType-java.awt.Window.Type-\" title=\"class or interface in java.awt\">setType</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setVisible-boolean-\" title=\"class or interface in java.awt\">setVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#show--\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#toBack--\" title=\"class or interface in java.awt\">toBack</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#toFront--\" title=\"class or interface in java.awt\">toFront</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.lang.String-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">addContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#applyComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">applyComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#areFocusTraversalKeysSet-int-\" title=\"class or interface in java.awt\">areFocusTraversalKeysSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#countComponents--\" title=\"class or interface in java.awt\">countComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#deliverEvent-java.awt.Event-\" title=\"class or interface in java.awt\">deliverEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#doLayout--\" title=\"class or interface in java.awt\">doLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-int-int-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getAlignmentX--\" title=\"class or interface in java.awt\">getAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getAlignmentY--\" title=\"class or interface in java.awt\">getAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponent-int-\" title=\"class or interface in java.awt\">getComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-int-int-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentCount--\" title=\"class or interface in java.awt\">getComponentCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponents--\" title=\"class or interface in java.awt\">getComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentZOrder-java.awt.Component-\" title=\"class or interface in java.awt\">getComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getContainerListeners--\" title=\"class or interface in java.awt\">getContainerListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalPolicy--\" title=\"class or interface in java.awt\">getFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getInsets--\" title=\"class or interface in java.awt\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getLayout--\" title=\"class or interface in java.awt\">getLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMaximumSize--\" title=\"class or interface in java.awt\">getMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMinimumSize--\" title=\"class or interface in java.awt\">getMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMousePosition-boolean-\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getPreferredSize--\" title=\"class or interface in java.awt\">getPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#insets--\" title=\"class or interface in java.awt\">insets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#invalidate--\" title=\"class or interface in java.awt\">invalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isAncestorOf-java.awt.Component-\" title=\"class or interface in java.awt\">isAncestorOf</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot-java.awt.Container-\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicyProvider--\" title=\"class or interface in java.awt\">isFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicySet--\" title=\"class or interface in java.awt\">isFocusTraversalPolicySet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#layout--\" title=\"class or interface in java.awt\">layout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintStream-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintWriter-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#locate-int-int-\" title=\"class or interface in java.awt\">locate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#minimumSize--\" title=\"class or interface in java.awt\">minimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paintComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#preferredSize--\" title=\"class or interface in java.awt\">preferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#print-java.awt.Graphics-\" title=\"class or interface in java.awt\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#printComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">printComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processContainerEvent-java.awt.event.ContainerEvent-\" title=\"class or interface in java.awt\">processContainerEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#remove-int-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeAll--\" title=\"class or interface in java.awt\">removeAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">removeContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setComponentZOrder-java.awt.Component-int-\" title=\"class or interface in java.awt\">setComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalKeys-int-java.util.Set-\" title=\"class or interface in java.awt\">setFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicy-java.awt.FocusTraversalPolicy-\" title=\"class or interface in java.awt\">setFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicyProvider-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFont-java.awt.Font-\" title=\"class or interface in java.awt\">setFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#transferFocusDownCycle--\" title=\"class or interface in java.awt\">transferFocusDownCycle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validate--\" title=\"class or interface in java.awt\">validate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validateTree--\" title=\"class or interface in java.awt\">validateTree</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#action-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">action</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#add-java.awt.PopupMenu-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">addComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">addFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">addHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">addHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">addInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">addKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">addMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">addMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">addMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#bounds--\" title=\"class or interface in java.awt\">bounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#coalesceEvents-java.awt.AWTEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">coalesceEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-int-int-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-java.awt.Point-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-java.awt.image.ImageProducer-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-int-int-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-java.awt.ImageCapabilities-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disable--\" title=\"class or interface in java.awt\">disable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disableEvents-long-\" title=\"class or interface in java.awt\">disableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#dispatchEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">dispatchEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable--\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable-boolean-\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableEvents-long-\" title=\"class or interface in java.awt\">enableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableInputMethods-boolean-\" title=\"class or interface in java.awt\">enableInputMethods</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-boolean-boolean-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-byte-byte-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-char-char-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-double-double-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-float-float-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-int-int-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-long-long-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-short-short-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBaseline-int-int-\" title=\"class or interface in java.awt\">getBaseline</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBaselineResizeBehavior--\" title=\"class or interface in java.awt\">getBaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds--\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getColorModel--\" title=\"class or interface in java.awt\">getColorModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentListeners--\" title=\"class or interface in java.awt\">getComponentListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentOrientation--\" title=\"class or interface in java.awt\">getComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getCursor--\" title=\"class or interface in java.awt\">getCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getDropTarget--\" title=\"class or interface in java.awt\">getDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusListeners--\" title=\"class or interface in java.awt\">getFocusListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusTraversalKeysEnabled--\" title=\"class or interface in java.awt\">getFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFont--\" title=\"class or interface in java.awt\">getFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFontMetrics-java.awt.Font-\" title=\"class or interface in java.awt\">getFontMetrics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getForeground--\" title=\"class or interface in java.awt\">getForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getGraphicsConfiguration--\" title=\"class or interface in java.awt\">getGraphicsConfiguration</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHeight--\" title=\"class or interface in java.awt\">getHeight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyBoundsListeners--\" title=\"class or interface in java.awt\">getHierarchyBoundsListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyListeners--\" title=\"class or interface in java.awt\">getHierarchyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getIgnoreRepaint--\" title=\"class or interface in java.awt\">getIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodListeners--\" title=\"class or interface in java.awt\">getInputMethodListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodRequests--\" title=\"class or interface in java.awt\">getInputMethodRequests</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getKeyListeners--\" title=\"class or interface in java.awt\">getKeyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation--\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation-java.awt.Point-\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocationOnScreen--\" title=\"class or interface in java.awt\">getLocationOnScreen</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseListeners--\" title=\"class or interface in java.awt\">getMouseListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseMotionListeners--\" title=\"class or interface in java.awt\">getMouseMotionListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMousePosition--\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseWheelListeners--\" title=\"class or interface in java.awt\">getMouseWheelListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getName--\" title=\"class or interface in java.awt\">getName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getParent--\" title=\"class or interface in java.awt\">getParent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPeer--\" title=\"class or interface in java.awt\">getPeer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners--\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners-java.lang.String-\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize--\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getTreeLock--\" title=\"class or interface in java.awt\">getTreeLock</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getWidth--\" title=\"class or interface in java.awt\">getWidth</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getX--\" title=\"class or interface in java.awt\">getX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getY--\" title=\"class or interface in java.awt\">getY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#gotFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">gotFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#handleEvent-java.awt.Event-\" title=\"class or interface in java.awt\">handleEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hasFocus--\" title=\"class or interface in java.awt\">hasFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#imageUpdate-java.awt.Image-int-int-int-int-int-\" title=\"class or interface in java.awt\">imageUpdate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#inside-int-int-\" title=\"class or interface in java.awt\">inside</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isBackgroundSet--\" title=\"class or interface in java.awt\">isBackgroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isCursorSet--\" title=\"class or interface in java.awt\">isCursorSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDisplayable--\" title=\"class or interface in java.awt\">isDisplayable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDoubleBuffered--\" title=\"class or interface in java.awt\">isDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isEnabled--\" title=\"class or interface in java.awt\">isEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusable--\" title=\"class or interface in java.awt\">isFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusOwner--\" title=\"class or interface in java.awt\">isFocusOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusTraversable--\" title=\"class or interface in java.awt\">isFocusTraversable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFontSet--\" title=\"class or interface in java.awt\">isFontSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isForegroundSet--\" title=\"class or interface in java.awt\">isForegroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isLightweight--\" title=\"class or interface in java.awt\">isLightweight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMaximumSizeSet--\" title=\"class or interface in java.awt\">isMaximumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMinimumSizeSet--\" title=\"class or interface in java.awt\">isMinimumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isPreferredSizeSet--\" title=\"class or interface in java.awt\">isPreferredSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isValid--\" title=\"class or interface in java.awt\">isValid</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isVisible--\" title=\"class or interface in java.awt\">isVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyDown-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyUp-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list--\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintStream-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintWriter-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#location--\" title=\"class or interface in java.awt\">location</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#lostFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">lostFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDown-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDrag-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDrag</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseEnter-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseEnter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseExit-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseExit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseMove-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseMove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseUp-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#move-int-int-\" title=\"class or interface in java.awt\">move</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#nextFocus--\" title=\"class or interface in java.awt\">nextFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#paintAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#printAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">printAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processComponentEvent-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt\">processComponentEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processFocusEvent-java.awt.event.FocusEvent-\" title=\"class or interface in java.awt\">processFocusEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyBoundsEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyBoundsEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processInputMethodEvent-java.awt.event.InputMethodEvent-\" title=\"class or interface in java.awt\">processInputMethodEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in java.awt\">processKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseEvent-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt\">processMouseEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseMotionEvent-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt\">processMouseMotionEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseWheelEvent-java.awt.event.MouseWheelEvent-\" title=\"class or interface in java.awt\">processMouseWheelEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">removeComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">removeFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">removeHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">removeHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">removeInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">removeKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">removeMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">removeMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">removeMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint--\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-int-int-int-int-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-long-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocus--\" title=\"class or interface in java.awt\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocus-boolean-\" title=\"class or interface in java.awt\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocusInWindow--\" title=\"class or interface in java.awt\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocusInWindow-boolean-\" title=\"class or interface in java.awt\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#resize-java.awt.Dimension-\" title=\"class or interface in java.awt\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#resize-int-int-\" title=\"class or interface in java.awt\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#revalidate--\" title=\"class or interface in java.awt\">revalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">setComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setDropTarget-java.awt.dnd.DropTarget-\" title=\"class or interface in java.awt\">setDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setEnabled-boolean-\" title=\"class or interface in java.awt\">setEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusable-boolean-\" title=\"class or interface in java.awt\">setFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusTraversalKeysEnabled-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setForeground-java.awt.Color-\" title=\"class or interface in java.awt\">setForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setIgnoreRepaint-boolean-\" title=\"class or interface in java.awt\">setIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocale-java.util.Locale-\" title=\"class or interface in java.awt\">setLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setMaximumSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setName-java.lang.String-\" title=\"class or interface in java.awt\">setName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setPreferredSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show-boolean-\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#size--\" title=\"class or interface in java.awt\">size</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#toString--\" title=\"class or interface in java.awt\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocus--\" title=\"class or interface in java.awt\">transferFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusBackward--\" title=\"class or interface in java.awt\">transferFocusBackward</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusUpCycle--\" title=\"class or interface in java.awt\">transferFocusUpCycle</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.MenuContainer\">\n<!--   -->\n</a>\n<h3>Methods inherited from interface&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true#getFont--\" title=\"class or interface in java.awt\">getFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true#postEvent-java.awt.Event-\" title=\"class or interface in java.awt\">postEvent</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"JBEWindow-stanford.spl.JavaBackEnd-java.lang.String-java.lang.String-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>JBEWindow</h4>\n<pre>public&nbsp;JBEWindow(<a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd,\n                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString1,\n                 <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString2,\n                 int&nbsp;width,\n                 int&nbsp;height)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"getCanvas--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getCanvas</h4>\n<pre>public&nbsp;<a href=\"../../stanford/spl/JBECanvas.html\" title=\"class in stanford.spl\">JBECanvas</a>&nbsp;getCanvas()</pre>\n</li>\n</ul>\n<a name=\"getCanvasSize--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getCanvasSize</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a>&nbsp;getCanvasSize()</pre>\n</li>\n</ul>\n<a name=\"getContentPaneSize--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getContentPaneSize</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html?is-external=true\" title=\"class or interface in java.awt\">Dimension</a>&nbsp;getContentPaneSize()</pre>\n</li>\n</ul>\n<a name=\"getWindowId--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getWindowId</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getWindowId()</pre>\n</li>\n</ul>\n<a name=\"close--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>close</h4>\n<pre>public&nbsp;void&nbsp;close()</pre>\n</li>\n</ul>\n<a name=\"clear--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clear</h4>\n<pre>public&nbsp;void&nbsp;clear()</pre>\n</li>\n</ul>\n<a name=\"clearCanvas--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clearCanvas</h4>\n<pre>public&nbsp;void&nbsp;clearCanvas()</pre>\n</li>\n</ul>\n<a name=\"addToRegion-javax.swing.JComponent-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addToRegion</h4>\n<pre>public&nbsp;void&nbsp;addToRegion(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&nbsp;paramJComponent,\n                        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</pre>\n</li>\n</ul>\n<a name=\"removeFromRegion-javax.swing.JComponent-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>removeFromRegion</h4>\n<pre>public&nbsp;void&nbsp;removeFromRegion(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&nbsp;paramJComponent,\n                             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</pre>\n</li>\n</ul>\n<a name=\"saveCanvasPixels-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>saveCanvasPixels</h4>\n<pre>public&nbsp;void&nbsp;saveCanvasPixels(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;filename)</pre>\n<dl>\n<dt><span class=\"paramLabel\">Parameters:</span></dt>\n<dd><code>filename</code> - must be an image type like PNG, JPG, or GIF</dd>\n</dl>\n</li>\n</ul>\n<a name=\"setRegionAlignment-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>setRegionAlignment</h4>\n<pre>public&nbsp;void&nbsp;setRegionAlignment(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString1,\n                               <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString2)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/LibraryUpdater.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JBEWindow.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JBEWindow.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JFrame\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#fields.inherited.from.class.javax.swing.JFrame\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/JavaBackEnd.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:34 PDT 2017 -->\n<title>JavaBackEnd</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"JavaBackEnd\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":10,\"i6\":10,\"i7\":10,\"i8\":10,\"i9\":10,\"i10\":10,\"i11\":10,\"i12\":10,\"i13\":10,\"i14\":10,\"i15\":10,\"i16\":10,\"i17\":10,\"i18\":10,\"i19\":10,\"i20\":10,\"i21\":10,\"i22\":10,\"i23\":10,\"i24\":10,\"i25\":10,\"i26\":10,\"i27\":10,\"i28\":10,\"i29\":10,\"i30\":10,\"i31\":10,\"i32\":10,\"i33\":10,\"i34\":10,\"i35\":10,\"i36\":10,\"i37\":10,\"i38\":10,\"i39\":10,\"i40\":10,\"i41\":10,\"i42\":10,\"i43\":9,\"i44\":10,\"i45\":10,\"i46\":10,\"i47\":10,\"i48\":10,\"i49\":10,\"i50\":10,\"i51\":10,\"i52\":10,\"i53\":10,\"i54\":10,\"i55\":10,\"i56\":10,\"i57\":10,\"i58\":10,\"i59\":10,\"i60\":10,\"i61\":10,\"i62\":10,\"i63\":10,\"i64\":10,\"i65\":10,\"i66\":10,\"i67\":10,\"i68\":10,\"i69\":10,\"i70\":10,\"i71\":10,\"i72\":10,\"i73\":10,\"i74\":10,\"i75\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/HttpServer_stop.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JBECanvas.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JavaBackEnd.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JavaBackEnd.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class JavaBackEnd\" class=\"title\">Class JavaBackEnd</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.JavaBackEnd</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/EventListener.html?is-external=true\" title=\"class or interface in java.util\">EventListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observer.html?is-external=true\" title=\"class or interface in java.util\">Observer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeListener</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">JavaBackEnd</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>\nimplements <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observer.html?is-external=true\" title=\"class or interface in java.util\">Observer</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#ACTION_EVENT\">ACTION_EVENT</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#ACTION_PERFORMED\">ACTION_PERFORMED</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#ALT_DOWN\">ALT_DOWN</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#ALT_GRAPH_DOWN\">ALT_GRAPH_DOWN</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#ANY_EVENT\">ANY_EVENT</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#BUTTON1_DOWN\">BUTTON1_DOWN</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#BUTTON2_DOWN\">BUTTON2_DOWN</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#BUTTON3_DOWN\">BUTTON3_DOWN</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#CLICK_EVENT\">CLICK_EVENT</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#CTRL_DOWN\">CTRL_DOWN</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#DEFAULT_CONSOLE_HEIGHT\">DEFAULT_CONSOLE_HEIGHT</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#DEFAULT_CONSOLE_WIDTH\">DEFAULT_CONSOLE_WIDTH</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#DEFAULT_CONSOLE_X\">DEFAULT_CONSOLE_X</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#DEFAULT_CONSOLE_Y\">DEFAULT_CONSOLE_Y</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#DEFAULT_GRAPHICS_X\">DEFAULT_GRAPHICS_X</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#DEFAULT_GRAPHICS_Y\">DEFAULT_GRAPHICS_Y</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#EVENT_SUBTYPE_MASK\">EVENT_SUBTYPE_MASK</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#KEY_EVENT\">KEY_EVENT</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#KEY_PRESSED\">KEY_PRESSED</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#KEY_RELEASED\">KEY_RELEASED</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#KEY_TYPED\">KEY_TYPED</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#META_DOWN\">META_DOWN</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#MOUSE_CLICKED\">MOUSE_CLICKED</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#MOUSE_DRAGGED\">MOUSE_DRAGGED</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#MOUSE_EVENT\">MOUSE_EVENT</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#MOUSE_MOVED\">MOUSE_MOVED</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#MOUSE_PRESSED\">MOUSE_PRESSED</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#MOUSE_RELEASED\">MOUSE_RELEASED</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#SHIFT_DOWN\">SHIFT_DOWN</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#TIMER_EVENT\">TIMER_EVENT</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#TIMER_TICKED\">TIMER_TICKED</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#WINDOW_CLOSED\">WINDOW_CLOSED</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#WINDOW_CLOSING\">WINDOW_CLOSING</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#WINDOW_EVENT\">WINDOW_EVENT</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#WINDOW_RESIZED\">WINDOW_RESIZED</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#JavaBackEnd--\">JavaBackEnd</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#acknowledgeEvent--\">acknowledgeEvent</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#acknowledgeEvent-java.lang.String-\">acknowledgeEvent</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;eventText)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#acknowledgeEvent-java.lang.String-java.lang.Object...-\">acknowledgeEvent</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;eventText,\n                <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>...&nbsp;args)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#actionPerformed-java.awt.event.ActionEvent-\">actionPerformed</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;paramActionEvent)</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#clearConsole--\">clearConsole</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#componentHidden-java.awt.event.ComponentEvent-\">componentHidden</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentEvent</a>&nbsp;paramComponentEvent)</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#componentMoved-java.awt.event.ComponentEvent-\">componentMoved</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentEvent</a>&nbsp;paramComponentEvent)</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#componentResized-java.awt.event.ComponentEvent-\">componentResized</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentEvent</a>&nbsp;componentEvent)</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#componentShown-java.awt.event.ComponentEvent-\">componentShown</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentEvent</a>&nbsp;paramComponentEvent)</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#consoleMinimize--\">consoleMinimize</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#consoleSetTitle-java.lang.String-\">consoleSetTitle</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;title)</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#consoleToFront--\">consoleToFront</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#createSound-java.lang.String-java.lang.String-\">createSound</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString1,\n           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString2)</code>&nbsp;</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#createTimer-java.lang.String-double-\">createTimer</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString,\n           double&nbsp;paramDouble)</code>&nbsp;</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#createWindow-java.lang.String-int-int-stanford.spl.TopCompound-\">createWindow</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString,\n            int&nbsp;paramInt1,\n            int&nbsp;paramInt2,\n            stanford.spl.TopCompound&nbsp;paramTopCompound)</code>&nbsp;</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#createWindow-java.lang.String-int-int-stanford.spl.TopCompound-boolean-\">createWindow</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;windowId,\n            int&nbsp;width,\n            int&nbsp;height,\n            stanford.spl.TopCompound&nbsp;top,\n            boolean&nbsp;visible)</code>&nbsp;</td>\n</tr>\n<tr id=\"i16\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#defineGObject-java.lang.String-acm.graphics.GObject-\">defineGObject</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString,\n             <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;paramGObject)</code>&nbsp;</td>\n</tr>\n<tr id=\"i17\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#defineSource-javax.swing.JComponent-java.lang.String-\">defineSource</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&nbsp;paramJComponent,\n            <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</code>&nbsp;</td>\n</tr>\n<tr id=\"i18\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#deleteGObject-java.lang.String-\">deleteGObject</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</code>&nbsp;</td>\n</tr>\n<tr id=\"i19\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#deleteSound-java.lang.String-\">deleteSound</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</code>&nbsp;</td>\n</tr>\n<tr id=\"i20\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#deleteTimer-java.lang.String-\">deleteTimer</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</code>&nbsp;</td>\n</tr>\n<tr id=\"i21\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#deleteWindow-java.lang.String-\">deleteWindow</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</code>&nbsp;</td>\n</tr>\n<tr id=\"i22\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#endLineConsole--\">endLineConsole</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i23\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#endLineConsole-boolean-\">endLineConsole</a></span>(boolean&nbsp;isStderr)</code>&nbsp;</td>\n</tr>\n<tr id=\"i24\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/sound/sampled/Clip.html?is-external=true\" title=\"class or interface in javax.sound.sampled\">Clip</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#getClip-java.lang.String-\">getClip</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</code>&nbsp;</td>\n</tr>\n<tr id=\"i25\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#getConsole--\">getConsole</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i26\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#getConsoleKeyListener--\">getConsoleKeyListener</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i27\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#getCppVersion--\">getCppVersion</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i28\" class=\"altColor\">\n<td class=\"colFirst\"><code>double</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#getEventTime--\">getEventTime</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i29\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#getGObject-java.lang.String-\">getGObject</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</code>&nbsp;</td>\n</tr>\n<tr id=\"i30\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#getImage-java.lang.String-\">getImage</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</code>&nbsp;</td>\n</tr>\n<tr id=\"i31\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#getInteractor-acm.graphics.GObject-\">getInteractor</a></span>(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;paramGObject)</code>&nbsp;</td>\n</tr>\n<tr id=\"i32\" class=\"altColor\">\n<td class=\"colFirst\"><code>stanford.spl.JBEConsole</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#getJBEConsole--\">getJBEConsole</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i33\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true\" title=\"class or interface in javax.swing\">JFrame</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#getJBEConsoleFrame--\">getJBEConsoleFrame</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i34\" class=\"altColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#getJBEConsoleHeight--\">getJBEConsoleHeight</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i35\" class=\"rowColor\">\n<td class=\"colFirst\"><code>int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#getJBEConsoleWidth--\">getJBEConsoleWidth</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i36\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#getJbeVersion--\">getJbeVersion</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i37\" class=\"rowColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#getNextEvent-int-\">getNextEvent</a></span>(int&nbsp;paramInt)</code>&nbsp;</td>\n</tr>\n<tr id=\"i38\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#getSourceId-javax.swing.JComponent-\">getSourceId</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&nbsp;paramJComponent)</code>&nbsp;</td>\n</tr>\n<tr id=\"i39\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"../../stanford/spl/JBEWindow.html\" title=\"class in stanford.spl\">JBEWindow</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#getWindow-java.lang.String-\">getWindow</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</code>&nbsp;</td>\n</tr>\n<tr id=\"i40\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#keyPressed-java.awt.event.KeyEvent-\">keyPressed</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyEvent</a>&nbsp;paramKeyEvent)</code>&nbsp;</td>\n</tr>\n<tr id=\"i41\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#keyReleased-java.awt.event.KeyEvent-\">keyReleased</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyEvent</a>&nbsp;paramKeyEvent)</code>&nbsp;</td>\n</tr>\n<tr id=\"i42\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#keyTyped-java.awt.event.KeyEvent-\">keyTyped</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyEvent</a>&nbsp;paramKeyEvent)</code>&nbsp;</td>\n</tr>\n<tr id=\"i43\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#main-java.lang.String:A-\">main</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;paramArrayOfString)</code>&nbsp;</td>\n</tr>\n<tr id=\"i44\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#mouseClicked-java.awt.event.MouseEvent-\">mouseClicked</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;paramMouseEvent)</code>&nbsp;</td>\n</tr>\n<tr id=\"i45\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#mouseDragged-java.awt.event.MouseEvent-\">mouseDragged</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;paramMouseEvent)</code>&nbsp;</td>\n</tr>\n<tr id=\"i46\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#mouseEntered-java.awt.event.MouseEvent-\">mouseEntered</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;paramMouseEvent)</code>&nbsp;</td>\n</tr>\n<tr id=\"i47\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#mouseExited-java.awt.event.MouseEvent-\">mouseExited</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;paramMouseEvent)</code>&nbsp;</td>\n</tr>\n<tr id=\"i48\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#mouseMoved-java.awt.event.MouseEvent-\">mouseMoved</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;paramMouseEvent)</code>&nbsp;</td>\n</tr>\n<tr id=\"i49\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#mousePressed-java.awt.event.MouseEvent-\">mousePressed</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;paramMouseEvent)</code>&nbsp;</td>\n</tr>\n<tr id=\"i50\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#mouseReleased-java.awt.event.MouseEvent-\">mouseReleased</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;paramMouseEvent)</code>&nbsp;</td>\n</tr>\n<tr id=\"i51\" class=\"rowColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#openFileDialog-java.lang.String-java.lang.String-java.lang.String-\">openFileDialog</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;title,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;mode,\n              <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;path)</code>&nbsp;</td>\n</tr>\n<tr id=\"i52\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#playSound-java.lang.String-\">playSound</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</code>&nbsp;</td>\n</tr>\n<tr id=\"i53\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#println-java.lang.String-\">println</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</code>&nbsp;</td>\n</tr>\n<tr id=\"i54\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#putConsole-java.lang.String-\">putConsole</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</code>&nbsp;</td>\n</tr>\n<tr id=\"i55\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#putConsole-java.lang.String-boolean-\">putConsole</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString,\n          boolean&nbsp;isStderr)</code>&nbsp;</td>\n</tr>\n<tr id=\"i56\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#run-java.lang.String:A-\">run</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;paramArrayOfString)</code>&nbsp;</td>\n</tr>\n<tr id=\"i57\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#setConsoleCloseOperation-int-\">setConsoleCloseOperation</a></span>(int&nbsp;op)</code>&nbsp;</td>\n</tr>\n<tr id=\"i58\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#setConsoleFont-java.lang.String-\">setConsoleFont</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</code>&nbsp;</td>\n</tr>\n<tr id=\"i59\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#setConsoleLocation-int-int-\">setConsoleLocation</a></span>(int&nbsp;x,\n                  int&nbsp;y)</code>&nbsp;</td>\n</tr>\n<tr id=\"i60\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#setConsoleSize-int-int-\">setConsoleSize</a></span>(int&nbsp;paramInt1,\n              int&nbsp;paramInt2)</code>&nbsp;</td>\n</tr>\n<tr id=\"i61\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#setCppVersion-java.lang.String-\">setCppVersion</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;version)</code>&nbsp;</td>\n</tr>\n<tr id=\"i62\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#setExitOnConsoleClose-boolean-\">setExitOnConsoleClose</a></span>(boolean&nbsp;value)</code>&nbsp;</td>\n</tr>\n<tr id=\"i63\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#shutdownBackEnd-boolean-\">shutdownBackEnd</a></span>(boolean&nbsp;sendEvent)</code>&nbsp;</td>\n</tr>\n<tr id=\"i64\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#startTimer-java.lang.String-\">startTimer</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</code>&nbsp;</td>\n</tr>\n<tr id=\"i65\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#stateChanged-javax.swing.event.ChangeEvent-\">stateChanged</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeEvent</a>&nbsp;paramChangeEvent)</code>&nbsp;</td>\n</tr>\n<tr id=\"i66\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#stopTimer-java.lang.String-\">stopTimer</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</code>&nbsp;</td>\n</tr>\n<tr id=\"i67\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#update-java.util.Observable-java.lang.Object-\">update</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true\" title=\"class or interface in java.util\">Observable</a>&nbsp;obs,\n      <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;arg)</code>&nbsp;</td>\n</tr>\n<tr id=\"i68\" class=\"altColor\">\n<td class=\"colFirst\"><code>protected void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#waitForEvent-int-\">waitForEvent</a></span>(int&nbsp;paramInt)</code>&nbsp;</td>\n</tr>\n<tr id=\"i69\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#windowActivated-java.awt.event.WindowEvent-\">windowActivated</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;paramWindowEvent)</code>&nbsp;</td>\n</tr>\n<tr id=\"i70\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#windowClosed-java.awt.event.WindowEvent-\">windowClosed</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;paramWindowEvent)</code>&nbsp;</td>\n</tr>\n<tr id=\"i71\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#windowClosing-java.awt.event.WindowEvent-\">windowClosing</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;paramWindowEvent)</code>&nbsp;</td>\n</tr>\n<tr id=\"i72\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#windowDeactivated-java.awt.event.WindowEvent-\">windowDeactivated</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;paramWindowEvent)</code>&nbsp;</td>\n</tr>\n<tr id=\"i73\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#windowDeiconified-java.awt.event.WindowEvent-\">windowDeiconified</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;paramWindowEvent)</code>&nbsp;</td>\n</tr>\n<tr id=\"i74\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#windowIconified-java.awt.event.WindowEvent-\">windowIconified</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;paramWindowEvent)</code>&nbsp;</td>\n</tr>\n<tr id=\"i75\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/JavaBackEnd.html#windowOpened-java.awt.event.WindowEvent-\">windowOpened</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;paramWindowEvent)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"DEFAULT_CONSOLE_X\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>DEFAULT_CONSOLE_X</h4>\n<pre>public static final&nbsp;int DEFAULT_CONSOLE_X</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.JavaBackEnd.DEFAULT_CONSOLE_X\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"DEFAULT_CONSOLE_Y\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>DEFAULT_CONSOLE_Y</h4>\n<pre>public static final&nbsp;int DEFAULT_CONSOLE_Y</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.JavaBackEnd.DEFAULT_CONSOLE_Y\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"DEFAULT_CONSOLE_WIDTH\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>DEFAULT_CONSOLE_WIDTH</h4>\n<pre>public static final&nbsp;int DEFAULT_CONSOLE_WIDTH</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.JavaBackEnd.DEFAULT_CONSOLE_WIDTH\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"DEFAULT_CONSOLE_HEIGHT\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>DEFAULT_CONSOLE_HEIGHT</h4>\n<pre>public static final&nbsp;int DEFAULT_CONSOLE_HEIGHT</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.JavaBackEnd.DEFAULT_CONSOLE_HEIGHT\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"DEFAULT_GRAPHICS_X\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>DEFAULT_GRAPHICS_X</h4>\n<pre>public static final&nbsp;int DEFAULT_GRAPHICS_X</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.JavaBackEnd.DEFAULT_GRAPHICS_X\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"DEFAULT_GRAPHICS_Y\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>DEFAULT_GRAPHICS_Y</h4>\n<pre>public static final&nbsp;int DEFAULT_GRAPHICS_Y</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.JavaBackEnd.DEFAULT_GRAPHICS_Y\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"EVENT_SUBTYPE_MASK\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>EVENT_SUBTYPE_MASK</h4>\n<pre>public static final&nbsp;int EVENT_SUBTYPE_MASK</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.JavaBackEnd.EVENT_SUBTYPE_MASK\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"ACTION_EVENT\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>ACTION_EVENT</h4>\n<pre>public static final&nbsp;int ACTION_EVENT</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.JavaBackEnd.ACTION_EVENT\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"KEY_EVENT\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>KEY_EVENT</h4>\n<pre>public static final&nbsp;int KEY_EVENT</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.JavaBackEnd.KEY_EVENT\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"TIMER_EVENT\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>TIMER_EVENT</h4>\n<pre>public static final&nbsp;int TIMER_EVENT</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.JavaBackEnd.TIMER_EVENT\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"WINDOW_EVENT\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>WINDOW_EVENT</h4>\n<pre>public static final&nbsp;int WINDOW_EVENT</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.JavaBackEnd.WINDOW_EVENT\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MOUSE_EVENT\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MOUSE_EVENT</h4>\n<pre>public static final&nbsp;int MOUSE_EVENT</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.JavaBackEnd.MOUSE_EVENT\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"CLICK_EVENT\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>CLICK_EVENT</h4>\n<pre>public static final&nbsp;int CLICK_EVENT</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.JavaBackEnd.CLICK_EVENT\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"ANY_EVENT\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>ANY_EVENT</h4>\n<pre>public static final&nbsp;int ANY_EVENT</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.JavaBackEnd.ANY_EVENT\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"WINDOW_CLOSED\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>WINDOW_CLOSED</h4>\n<pre>public static final&nbsp;int WINDOW_CLOSED</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.JavaBackEnd.WINDOW_CLOSED\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"WINDOW_RESIZED\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>WINDOW_RESIZED</h4>\n<pre>public static final&nbsp;int WINDOW_RESIZED</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.JavaBackEnd.WINDOW_RESIZED\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"WINDOW_CLOSING\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>WINDOW_CLOSING</h4>\n<pre>public static final&nbsp;int WINDOW_CLOSING</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.JavaBackEnd.WINDOW_CLOSING\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"ACTION_PERFORMED\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>ACTION_PERFORMED</h4>\n<pre>public static final&nbsp;int ACTION_PERFORMED</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.JavaBackEnd.ACTION_PERFORMED\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MOUSE_CLICKED\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MOUSE_CLICKED</h4>\n<pre>public static final&nbsp;int MOUSE_CLICKED</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.JavaBackEnd.MOUSE_CLICKED\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MOUSE_PRESSED\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MOUSE_PRESSED</h4>\n<pre>public static final&nbsp;int MOUSE_PRESSED</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.JavaBackEnd.MOUSE_PRESSED\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MOUSE_RELEASED\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MOUSE_RELEASED</h4>\n<pre>public static final&nbsp;int MOUSE_RELEASED</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.JavaBackEnd.MOUSE_RELEASED\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MOUSE_MOVED\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MOUSE_MOVED</h4>\n<pre>public static final&nbsp;int MOUSE_MOVED</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.JavaBackEnd.MOUSE_MOVED\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MOUSE_DRAGGED\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MOUSE_DRAGGED</h4>\n<pre>public static final&nbsp;int MOUSE_DRAGGED</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.JavaBackEnd.MOUSE_DRAGGED\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"KEY_PRESSED\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>KEY_PRESSED</h4>\n<pre>public static final&nbsp;int KEY_PRESSED</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.JavaBackEnd.KEY_PRESSED\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"KEY_RELEASED\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>KEY_RELEASED</h4>\n<pre>public static final&nbsp;int KEY_RELEASED</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.JavaBackEnd.KEY_RELEASED\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"KEY_TYPED\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>KEY_TYPED</h4>\n<pre>public static final&nbsp;int KEY_TYPED</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.JavaBackEnd.KEY_TYPED\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"TIMER_TICKED\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>TIMER_TICKED</h4>\n<pre>public static final&nbsp;int TIMER_TICKED</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.JavaBackEnd.TIMER_TICKED\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"SHIFT_DOWN\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>SHIFT_DOWN</h4>\n<pre>public static final&nbsp;int SHIFT_DOWN</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.JavaBackEnd.SHIFT_DOWN\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"CTRL_DOWN\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>CTRL_DOWN</h4>\n<pre>public static final&nbsp;int CTRL_DOWN</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.JavaBackEnd.CTRL_DOWN\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"META_DOWN\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>META_DOWN</h4>\n<pre>public static final&nbsp;int META_DOWN</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.JavaBackEnd.META_DOWN\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"ALT_DOWN\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>ALT_DOWN</h4>\n<pre>public static final&nbsp;int ALT_DOWN</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.JavaBackEnd.ALT_DOWN\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"ALT_GRAPH_DOWN\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>ALT_GRAPH_DOWN</h4>\n<pre>public static final&nbsp;int ALT_GRAPH_DOWN</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.JavaBackEnd.ALT_GRAPH_DOWN\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"BUTTON1_DOWN\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>BUTTON1_DOWN</h4>\n<pre>public static final&nbsp;int BUTTON1_DOWN</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.JavaBackEnd.BUTTON1_DOWN\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"BUTTON2_DOWN\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>BUTTON2_DOWN</h4>\n<pre>public static final&nbsp;int BUTTON2_DOWN</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.JavaBackEnd.BUTTON2_DOWN\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"BUTTON3_DOWN\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>BUTTON3_DOWN</h4>\n<pre>public static final&nbsp;int BUTTON3_DOWN</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.JavaBackEnd.BUTTON3_DOWN\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"JavaBackEnd--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>JavaBackEnd</h4>\n<pre>public&nbsp;JavaBackEnd()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"main-java.lang.String:A-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>main</h4>\n<pre>public static&nbsp;void&nbsp;main(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;paramArrayOfString)</pre>\n</li>\n</ul>\n<a name=\"update-java.util.Observable-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>update</h4>\n<pre>public&nbsp;void&nbsp;update(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true\" title=\"class or interface in java.util\">Observable</a>&nbsp;obs,\n                   <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;arg)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observer.html?is-external=true#update-java.util.Observable-java.lang.Object-\" title=\"class or interface in java.util\">update</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observer.html?is-external=true\" title=\"class or interface in java.util\">Observer</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"setExitOnConsoleClose-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setExitOnConsoleClose</h4>\n<pre>public&nbsp;void&nbsp;setExitOnConsoleClose(boolean&nbsp;value)</pre>\n</li>\n</ul>\n<a name=\"setCppVersion-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setCppVersion</h4>\n<pre>public&nbsp;void&nbsp;setCppVersion(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;version)</pre>\n</li>\n</ul>\n<a name=\"getCppVersion--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getCppVersion</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getCppVersion()</pre>\n</li>\n</ul>\n<a name=\"getJbeVersion--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getJbeVersion</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getJbeVersion()</pre>\n</li>\n</ul>\n<a name=\"getJBEConsole--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getJBEConsole</h4>\n<pre>public&nbsp;stanford.spl.JBEConsole&nbsp;getJBEConsole()</pre>\n</li>\n</ul>\n<a name=\"getJBEConsoleWidth--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getJBEConsoleWidth</h4>\n<pre>public&nbsp;int&nbsp;getJBEConsoleWidth()</pre>\n</li>\n</ul>\n<a name=\"getJBEConsoleHeight--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getJBEConsoleHeight</h4>\n<pre>public&nbsp;int&nbsp;getJBEConsoleHeight()</pre>\n</li>\n</ul>\n<a name=\"getJBEConsoleFrame--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getJBEConsoleFrame</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true\" title=\"class or interface in javax.swing\">JFrame</a>&nbsp;getJBEConsoleFrame()</pre>\n</li>\n</ul>\n<a name=\"run-java.lang.String:A-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>run</h4>\n<pre>public&nbsp;void&nbsp;run(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;paramArrayOfString)</pre>\n</li>\n</ul>\n<a name=\"createWindow-java.lang.String-int-int-stanford.spl.TopCompound-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createWindow</h4>\n<pre>public&nbsp;void&nbsp;createWindow(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString,\n                         int&nbsp;paramInt1,\n                         int&nbsp;paramInt2,\n                         stanford.spl.TopCompound&nbsp;paramTopCompound)</pre>\n</li>\n</ul>\n<a name=\"createWindow-java.lang.String-int-int-stanford.spl.TopCompound-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createWindow</h4>\n<pre>public&nbsp;void&nbsp;createWindow(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;windowId,\n                         int&nbsp;width,\n                         int&nbsp;height,\n                         stanford.spl.TopCompound&nbsp;top,\n                         boolean&nbsp;visible)</pre>\n</li>\n</ul>\n<a name=\"deleteWindow-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>deleteWindow</h4>\n<pre>public&nbsp;void&nbsp;deleteWindow(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</pre>\n</li>\n</ul>\n<a name=\"defineGObject-java.lang.String-acm.graphics.GObject-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>defineGObject</h4>\n<pre>public&nbsp;void&nbsp;defineGObject(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString,\n                          <a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;paramGObject)</pre>\n</li>\n</ul>\n<a name=\"defineSource-javax.swing.JComponent-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>defineSource</h4>\n<pre>public&nbsp;void&nbsp;defineSource(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&nbsp;paramJComponent,\n                         <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</pre>\n</li>\n</ul>\n<a name=\"deleteGObject-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>deleteGObject</h4>\n<pre>public&nbsp;void&nbsp;deleteGObject(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</pre>\n</li>\n</ul>\n<a name=\"getSourceId-javax.swing.JComponent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getSourceId</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getSourceId(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&nbsp;paramJComponent)</pre>\n</li>\n</ul>\n<a name=\"getGObject-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getGObject</h4>\n<pre>public&nbsp;<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;getGObject(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</pre>\n</li>\n</ul>\n<a name=\"getInteractor-acm.graphics.GObject-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getInteractor</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\">JComponent</a>&nbsp;getInteractor(<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\">GObject</a>&nbsp;paramGObject)</pre>\n</li>\n</ul>\n<a name=\"getWindow-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getWindow</h4>\n<pre>public&nbsp;<a href=\"../../stanford/spl/JBEWindow.html\" title=\"class in stanford.spl\">JBEWindow</a>&nbsp;getWindow(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</pre>\n</li>\n</ul>\n<a name=\"clearConsole--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clearConsole</h4>\n<pre>public&nbsp;void&nbsp;clearConsole()</pre>\n</li>\n</ul>\n<a name=\"setConsoleCloseOperation-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setConsoleCloseOperation</h4>\n<pre>public&nbsp;void&nbsp;setConsoleCloseOperation(int&nbsp;op)</pre>\n</li>\n</ul>\n<a name=\"setConsoleFont-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setConsoleFont</h4>\n<pre>public&nbsp;void&nbsp;setConsoleFont(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</pre>\n</li>\n</ul>\n<a name=\"consoleMinimize--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>consoleMinimize</h4>\n<pre>public&nbsp;void&nbsp;consoleMinimize()</pre>\n</li>\n</ul>\n<a name=\"consoleToFront--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>consoleToFront</h4>\n<pre>public&nbsp;void&nbsp;consoleToFront()</pre>\n</li>\n</ul>\n<a name=\"consoleSetTitle-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>consoleSetTitle</h4>\n<pre>public&nbsp;void&nbsp;consoleSetTitle(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;title)</pre>\n</li>\n</ul>\n<a name=\"setConsoleSize-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setConsoleSize</h4>\n<pre>public&nbsp;void&nbsp;setConsoleSize(int&nbsp;paramInt1,\n                           int&nbsp;paramInt2)</pre>\n</li>\n</ul>\n<a name=\"setConsoleLocation-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setConsoleLocation</h4>\n<pre>public&nbsp;void&nbsp;setConsoleLocation(int&nbsp;x,\n                               int&nbsp;y)</pre>\n</li>\n</ul>\n<a name=\"getConsole--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getConsole</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getConsole()</pre>\n</li>\n</ul>\n<a name=\"putConsole-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>putConsole</h4>\n<pre>protected&nbsp;void&nbsp;putConsole(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</pre>\n</li>\n</ul>\n<a name=\"putConsole-java.lang.String-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>putConsole</h4>\n<pre>public&nbsp;void&nbsp;putConsole(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString,\n                       boolean&nbsp;isStderr)</pre>\n</li>\n</ul>\n<a name=\"endLineConsole--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>endLineConsole</h4>\n<pre>protected&nbsp;void&nbsp;endLineConsole()</pre>\n</li>\n</ul>\n<a name=\"endLineConsole-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>endLineConsole</h4>\n<pre>protected&nbsp;void&nbsp;endLineConsole(boolean&nbsp;isStderr)</pre>\n</li>\n</ul>\n<a name=\"getEventTime--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getEventTime</h4>\n<pre>public&nbsp;double&nbsp;getEventTime()</pre>\n</li>\n</ul>\n<a name=\"println-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public&nbsp;void&nbsp;println(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</pre>\n</li>\n</ul>\n<a name=\"acknowledgeEvent-java.lang.String-java.lang.Object...-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>acknowledgeEvent</h4>\n<pre>public&nbsp;void&nbsp;acknowledgeEvent(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;eventText,\n                             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>...&nbsp;args)</pre>\n</li>\n</ul>\n<a name=\"acknowledgeEvent-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>acknowledgeEvent</h4>\n<pre>public&nbsp;void&nbsp;acknowledgeEvent(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;eventText)</pre>\n</li>\n</ul>\n<a name=\"acknowledgeEvent--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>acknowledgeEvent</h4>\n<pre>public&nbsp;void&nbsp;acknowledgeEvent()</pre>\n</li>\n</ul>\n<a name=\"getNextEvent-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getNextEvent</h4>\n<pre>protected&nbsp;void&nbsp;getNextEvent(int&nbsp;paramInt)</pre>\n</li>\n</ul>\n<a name=\"waitForEvent-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>waitForEvent</h4>\n<pre>protected&nbsp;void&nbsp;waitForEvent(int&nbsp;paramInt)</pre>\n</li>\n</ul>\n<a name=\"createSound-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createSound</h4>\n<pre>protected&nbsp;void&nbsp;createSound(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString1,\n                           <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString2)</pre>\n</li>\n</ul>\n<a name=\"deleteSound-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>deleteSound</h4>\n<pre>protected&nbsp;void&nbsp;deleteSound(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</pre>\n</li>\n</ul>\n<a name=\"playSound-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>playSound</h4>\n<pre>protected&nbsp;void&nbsp;playSound(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</pre>\n</li>\n</ul>\n<a name=\"createTimer-java.lang.String-double-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>createTimer</h4>\n<pre>protected&nbsp;void&nbsp;createTimer(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString,\n                           double&nbsp;paramDouble)</pre>\n</li>\n</ul>\n<a name=\"deleteTimer-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>deleteTimer</h4>\n<pre>protected&nbsp;void&nbsp;deleteTimer(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</pre>\n</li>\n</ul>\n<a name=\"startTimer-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>startTimer</h4>\n<pre>protected&nbsp;void&nbsp;startTimer(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</pre>\n</li>\n</ul>\n<a name=\"stopTimer-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>stopTimer</h4>\n<pre>protected&nbsp;void&nbsp;stopTimer(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</pre>\n</li>\n</ul>\n<a name=\"openFileDialog-java.lang.String-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>openFileDialog</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;openFileDialog(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;title,\n                             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;mode,\n                             <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;path)</pre>\n</li>\n</ul>\n<a name=\"actionPerformed-java.awt.event.ActionEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>actionPerformed</h4>\n<pre>public&nbsp;void&nbsp;actionPerformed(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionEvent</a>&nbsp;paramActionEvent)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true#actionPerformed-java.awt.event.ActionEvent-\" title=\"class or interface in java.awt.event\">actionPerformed</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"keyPressed-java.awt.event.KeyEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>keyPressed</h4>\n<pre>public&nbsp;void&nbsp;keyPressed(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyEvent</a>&nbsp;paramKeyEvent)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true#keyPressed-java.awt.event.KeyEvent-\" title=\"class or interface in java.awt.event\">keyPressed</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"keyReleased-java.awt.event.KeyEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>keyReleased</h4>\n<pre>public&nbsp;void&nbsp;keyReleased(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyEvent</a>&nbsp;paramKeyEvent)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true#keyReleased-java.awt.event.KeyEvent-\" title=\"class or interface in java.awt.event\">keyReleased</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"keyTyped-java.awt.event.KeyEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>keyTyped</h4>\n<pre>public&nbsp;void&nbsp;keyTyped(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyEvent</a>&nbsp;paramKeyEvent)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true#keyTyped-java.awt.event.KeyEvent-\" title=\"class or interface in java.awt.event\">keyTyped</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"mouseClicked-java.awt.event.MouseEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>mouseClicked</h4>\n<pre>public&nbsp;void&nbsp;mouseClicked(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;paramMouseEvent)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true#mouseClicked-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseClicked</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"mouseEntered-java.awt.event.MouseEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>mouseEntered</h4>\n<pre>public&nbsp;void&nbsp;mouseEntered(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;paramMouseEvent)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true#mouseEntered-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseEntered</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"mouseExited-java.awt.event.MouseEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>mouseExited</h4>\n<pre>public&nbsp;void&nbsp;mouseExited(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;paramMouseEvent)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true#mouseExited-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseExited</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"mousePressed-java.awt.event.MouseEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>mousePressed</h4>\n<pre>public&nbsp;void&nbsp;mousePressed(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;paramMouseEvent)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true#mousePressed-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mousePressed</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"mouseReleased-java.awt.event.MouseEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>mouseReleased</h4>\n<pre>public&nbsp;void&nbsp;mouseReleased(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;paramMouseEvent)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true#mouseReleased-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseReleased</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"mouseMoved-java.awt.event.MouseEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>mouseMoved</h4>\n<pre>public&nbsp;void&nbsp;mouseMoved(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;paramMouseEvent)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true#mouseMoved-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseMoved</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"mouseDragged-java.awt.event.MouseEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>mouseDragged</h4>\n<pre>public&nbsp;void&nbsp;mouseDragged(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseEvent</a>&nbsp;paramMouseEvent)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true#mouseDragged-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt.event\">mouseDragged</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"windowActivated-java.awt.event.WindowEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>windowActivated</h4>\n<pre>public&nbsp;void&nbsp;windowActivated(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;paramWindowEvent)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true#windowActivated-java.awt.event.WindowEvent-\" title=\"class or interface in java.awt.event\">windowActivated</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"windowClosed-java.awt.event.WindowEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>windowClosed</h4>\n<pre>public&nbsp;void&nbsp;windowClosed(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;paramWindowEvent)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true#windowClosed-java.awt.event.WindowEvent-\" title=\"class or interface in java.awt.event\">windowClosed</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"shutdownBackEnd-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>shutdownBackEnd</h4>\n<pre>public&nbsp;void&nbsp;shutdownBackEnd(boolean&nbsp;sendEvent)</pre>\n</li>\n</ul>\n<a name=\"windowClosing-java.awt.event.WindowEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>windowClosing</h4>\n<pre>public&nbsp;void&nbsp;windowClosing(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;paramWindowEvent)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true#windowClosing-java.awt.event.WindowEvent-\" title=\"class or interface in java.awt.event\">windowClosing</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"windowDeactivated-java.awt.event.WindowEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>windowDeactivated</h4>\n<pre>public&nbsp;void&nbsp;windowDeactivated(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;paramWindowEvent)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true#windowDeactivated-java.awt.event.WindowEvent-\" title=\"class or interface in java.awt.event\">windowDeactivated</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"windowDeiconified-java.awt.event.WindowEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>windowDeiconified</h4>\n<pre>public&nbsp;void&nbsp;windowDeiconified(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;paramWindowEvent)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true#windowDeiconified-java.awt.event.WindowEvent-\" title=\"class or interface in java.awt.event\">windowDeiconified</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"windowIconified-java.awt.event.WindowEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>windowIconified</h4>\n<pre>public&nbsp;void&nbsp;windowIconified(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;paramWindowEvent)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true#windowIconified-java.awt.event.WindowEvent-\" title=\"class or interface in java.awt.event\">windowIconified</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"windowOpened-java.awt.event.WindowEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>windowOpened</h4>\n<pre>public&nbsp;void&nbsp;windowOpened(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowEvent</a>&nbsp;paramWindowEvent)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true#windowOpened-java.awt.event.WindowEvent-\" title=\"class or interface in java.awt.event\">windowOpened</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"stateChanged-javax.swing.event.ChangeEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>stateChanged</h4>\n<pre>public&nbsp;void&nbsp;stateChanged(<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeEvent.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeEvent</a>&nbsp;paramChangeEvent)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true#stateChanged-javax.swing.event.ChangeEvent-\" title=\"class or interface in javax.swing.event\">stateChanged</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"componentHidden-java.awt.event.ComponentEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>componentHidden</h4>\n<pre>public&nbsp;void&nbsp;componentHidden(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentEvent</a>&nbsp;paramComponentEvent)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true#componentHidden-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt.event\">componentHidden</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"componentMoved-java.awt.event.ComponentEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>componentMoved</h4>\n<pre>public&nbsp;void&nbsp;componentMoved(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentEvent</a>&nbsp;paramComponentEvent)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true#componentMoved-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt.event\">componentMoved</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"componentResized-java.awt.event.ComponentEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>componentResized</h4>\n<pre>public&nbsp;void&nbsp;componentResized(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentEvent</a>&nbsp;componentEvent)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true#componentResized-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt.event\">componentResized</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"componentShown-java.awt.event.ComponentEvent-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>componentShown</h4>\n<pre>public&nbsp;void&nbsp;componentShown(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentEvent.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentEvent</a>&nbsp;paramComponentEvent)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true#componentShown-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt.event\">componentShown</a></code>&nbsp;in interface&nbsp;<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentListener</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"getImage-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getImage</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html?is-external=true\" title=\"class or interface in java.awt\">Image</a>&nbsp;getImage(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</pre>\n</li>\n</ul>\n<a name=\"getClip-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getClip</h4>\n<pre>protected&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/sound/sampled/Clip.html?is-external=true\" title=\"class or interface in javax.sound.sampled\">Clip</a>&nbsp;getClip(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;paramString)</pre>\n</li>\n</ul>\n<a name=\"getConsoleKeyListener--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>getConsoleKeyListener</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>&nbsp;getConsoleKeyListener()</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/HttpServer_stop.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/JBECanvas.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/JavaBackEnd.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"JavaBackEnd.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/LibraryUpdater.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:36 PDT 2017 -->\n<title>LibraryUpdater</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"LibraryUpdater\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JBEWindow.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/Note_play.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/LibraryUpdater.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"LibraryUpdater.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class LibraryUpdater\" class=\"title\">Class LibraryUpdater</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.LibraryUpdater</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">LibraryUpdater</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/LibraryUpdater.html#LibraryUpdater--\">LibraryUpdater</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/LibraryUpdater.html#checkForUpdates--\">checkForUpdates</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/LibraryUpdater.html#checkForUpdates-java.awt.Component-\">checkForUpdates</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;parent)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"LibraryUpdater--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>LibraryUpdater</h4>\n<pre>public&nbsp;LibraryUpdater()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"checkForUpdates--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>checkForUpdates</h4>\n<pre>public&nbsp;boolean&nbsp;checkForUpdates()</pre>\n</li>\n</ul>\n<a name=\"checkForUpdates-java.awt.Component-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>checkForUpdates</h4>\n<pre>public&nbsp;boolean&nbsp;checkForUpdates(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;parent)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/JBEWindow.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/Note_play.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/LibraryUpdater.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"LibraryUpdater.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/Note_play.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:36 PDT 2017 -->\n<title>Note_play</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"Note_play\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/LibraryUpdater.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/Regex_match.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/Note_play.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Note_play.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class Note_play\" class=\"title\">Class Note_play</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.Note_play</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">Note_play</span>\nextends <a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Note_play.html#Note_play--\">Note_play</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Note_play.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"Note_play--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>Note_play</h4>\n<pre>public&nbsp;Note_play()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/LibraryUpdater.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/Regex_match.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/Note_play.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Note_play.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/Regex_match.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:36 PDT 2017 -->\n<title>Regex_match</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"Regex_match\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/Note_play.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/Regex_matchCount.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/Regex_match.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Regex_match.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class Regex_match\" class=\"title\">Class Regex_match</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.Regex_match</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">Regex_match</span>\nextends <a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Regex_match.html#Regex_match--\">Regex_match</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Regex_match.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"Regex_match--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>Regex_match</h4>\n<pre>public&nbsp;Regex_match()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/Note_play.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/Regex_matchCount.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/Regex_match.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Regex_match.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/Regex_matchCount.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:36 PDT 2017 -->\n<title>Regex_matchCount</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"Regex_matchCount\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/Regex_match.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/Regex_matchCountWithLines.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/Regex_matchCount.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Regex_matchCount.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class Regex_matchCount\" class=\"title\">Class Regex_matchCount</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.Regex_matchCount</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">Regex_matchCount</span>\nextends <a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Regex_matchCount.html#Regex_matchCount--\">Regex_matchCount</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Regex_matchCount.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"Regex_matchCount--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>Regex_matchCount</h4>\n<pre>public&nbsp;Regex_matchCount()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/Regex_match.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/Regex_matchCountWithLines.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/Regex_matchCount.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Regex_matchCount.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/Regex_matchCountWithLines.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:36 PDT 2017 -->\n<title>Regex_matchCountWithLines</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"Regex_matchCountWithLines\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/Regex_matchCount.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/Regex_replace.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/Regex_matchCountWithLines.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Regex_matchCountWithLines.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class Regex_matchCountWithLines\" class=\"title\">Class Regex_matchCountWithLines</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.Regex_matchCountWithLines</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">Regex_matchCountWithLines</span>\nextends <a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Regex_matchCountWithLines.html#Regex_matchCountWithLines--\">Regex_matchCountWithLines</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Regex_matchCountWithLines.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"Regex_matchCountWithLines--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>Regex_matchCountWithLines</h4>\n<pre>public&nbsp;Regex_matchCountWithLines()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/Regex_matchCount.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/Regex_replace.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/Regex_matchCountWithLines.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Regex_matchCountWithLines.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/Regex_replace.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:36 PDT 2017 -->\n<title>Regex_replace</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"Regex_replace\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/Regex_matchCountWithLines.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/SplPipeDecoder.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/Regex_replace.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Regex_replace.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class Regex_replace\" class=\"title\">Class Regex_replace</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.Regex_replace</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">Regex_replace</span>\nextends <a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Regex_replace.html#Regex_replace--\">Regex_replace</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Regex_replace.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"Regex_replace--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>Regex_replace</h4>\n<pre>public&nbsp;Regex_replace()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/Regex_matchCountWithLines.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/SplPipeDecoder.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/Regex_replace.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Regex_replace.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/SPLWindowSettings.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:36 PDT 2017 -->\n<title>SPLWindowSettings</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"SPLWindowSettings\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9,\"i2\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/SplPipeDecoder.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/StanfordCppLib_getJbeVersion.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/SPLWindowSettings.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"SPLWindowSettings.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class SPLWindowSettings\" class=\"title\">Class SPLWindowSettings</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.SPLWindowSettings</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">SPLWindowSettings</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/SPLWindowSettings.html#SETTINGS_FILENAME\">SETTINGS_FILENAME</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/SPLWindowSettings.html#SPLWindowSettings--\">SPLWindowSettings</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/SPLWindowSettings.html#forgetWindowLocation-java.awt.Window-\">forgetWindowLocation</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true\" title=\"class or interface in java.awt\">Window</a>&nbsp;window)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/SPLWindowSettings.html#loadWindowLocation-java.awt.Window-\">loadWindowLocation</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true\" title=\"class or interface in java.awt\">Window</a>&nbsp;window)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/SPLWindowSettings.html#saveWindowLocation-java.awt.Window-\">saveWindowLocation</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true\" title=\"class or interface in java.awt\">Window</a>&nbsp;window)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"SETTINGS_FILENAME\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>SETTINGS_FILENAME</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> SETTINGS_FILENAME</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.SPLWindowSettings.SETTINGS_FILENAME\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"SPLWindowSettings--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>SPLWindowSettings</h4>\n<pre>public&nbsp;SPLWindowSettings()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"saveWindowLocation-java.awt.Window-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>saveWindowLocation</h4>\n<pre>public static&nbsp;void&nbsp;saveWindowLocation(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true\" title=\"class or interface in java.awt\">Window</a>&nbsp;window)</pre>\n</li>\n</ul>\n<a name=\"forgetWindowLocation-java.awt.Window-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>forgetWindowLocation</h4>\n<pre>public static&nbsp;void&nbsp;forgetWindowLocation(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true\" title=\"class or interface in java.awt\">Window</a>&nbsp;window)</pre>\n</li>\n</ul>\n<a name=\"loadWindowLocation-java.awt.Window-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>loadWindowLocation</h4>\n<pre>public static&nbsp;void&nbsp;loadWindowLocation(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true\" title=\"class or interface in java.awt\">Window</a>&nbsp;window)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/SplPipeDecoder.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/StanfordCppLib_getJbeVersion.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/SPLWindowSettings.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"SPLWindowSettings.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/SplPipeDecoder.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:36 PDT 2017 -->\n<title>SplPipeDecoder</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"SplPipeDecoder\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9,\"i2\":9,\"i3\":9,\"i4\":9,\"i5\":9,\"i6\":9,\"i7\":9,\"i8\":9,\"i9\":9,\"i10\":9,\"i11\":9,\"i12\":9,\"i13\":9,\"i14\":9,\"i15\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/Regex_replace.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/SPLWindowSettings.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/SplPipeDecoder.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"SplPipeDecoder.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class SplPipeDecoder\" class=\"title\">Class SplPipeDecoder</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.SplPipeDecoder</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">SplPipeDecoder</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/SplPipeDecoder.html#PIPE_MAX_COMMAND_LENGTH\">PIPE_MAX_COMMAND_LENGTH</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/SplPipeDecoder.html#SplPipeDecoder--\">SplPipeDecoder</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/SplPipeDecoder.html#decode-java.lang.String-\">decode</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/SplPipeDecoder.html#encode-java.lang.String-\">encode</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/SplPipeDecoder.html#encodeAndWrite-java.lang.String-\">encodeAndWrite</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/SplPipeDecoder.html#print-java.lang.Object-\">print</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;o)</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/SplPipeDecoder.html#print-java.lang.String-\">print</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/SplPipeDecoder.html#println-java.lang.Object-\">println</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;o)</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/SplPipeDecoder.html#println-java.lang.String-\">println</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/SplPipeDecoder.html#readAndDecode-acm.util.TokenScanner-\">readAndDecode</a></span>(acm.util.TokenScanner&nbsp;scanner)</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/SplPipeDecoder.html#readEncodedString-acm.util.TokenScanner-\">readEncodedString</a></span>(acm.util.TokenScanner&nbsp;scanner)</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/SplPipeDecoder.html#writeAck--\">writeAck</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/SplPipeDecoder.html#writeAck-java.lang.String-\">writeAck</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>&nbsp;</td>\n</tr>\n<tr id=\"i11\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/SplPipeDecoder.html#writeError-java.lang.String-\">writeError</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;msg)</code>&nbsp;</td>\n</tr>\n<tr id=\"i12\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/SplPipeDecoder.html#writeLongResult-java.lang.String-\">writeLongResult</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>&nbsp;</td>\n</tr>\n<tr id=\"i13\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/SplPipeDecoder.html#writeOK--\">writeOK</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i14\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/SplPipeDecoder.html#writeResult-java.lang.Object-\">writeResult</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;o)</code>&nbsp;</td>\n</tr>\n<tr id=\"i15\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/SplPipeDecoder.html#writeResult-java.lang.String-\">writeResult</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"PIPE_MAX_COMMAND_LENGTH\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>PIPE_MAX_COMMAND_LENGTH</h4>\n<pre>public static final&nbsp;int PIPE_MAX_COMMAND_LENGTH</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.SplPipeDecoder.PIPE_MAX_COMMAND_LENGTH\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"SplPipeDecoder--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>SplPipeDecoder</h4>\n<pre>public&nbsp;SplPipeDecoder()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"decode-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>decode</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;decode(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n</li>\n</ul>\n<a name=\"encode-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>encode</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;encode(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n</li>\n</ul>\n<a name=\"encodeAndWrite-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>encodeAndWrite</h4>\n<pre>public static&nbsp;void&nbsp;encodeAndWrite(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n</li>\n</ul>\n<a name=\"readAndDecode-acm.util.TokenScanner-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readAndDecode</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;readAndDecode(acm.util.TokenScanner&nbsp;scanner)</pre>\n</li>\n</ul>\n<a name=\"print-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public static&nbsp;void&nbsp;print(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;o)</pre>\n</li>\n</ul>\n<a name=\"print-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public static&nbsp;void&nbsp;print(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n</li>\n</ul>\n<a name=\"println-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public static&nbsp;void&nbsp;println(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;o)</pre>\n</li>\n</ul>\n<a name=\"println-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public static&nbsp;void&nbsp;println(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n</li>\n</ul>\n<a name=\"readEncodedString-acm.util.TokenScanner-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>readEncodedString</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;readEncodedString(acm.util.TokenScanner&nbsp;scanner)</pre>\n</li>\n</ul>\n<a name=\"writeAck--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>writeAck</h4>\n<pre>public static&nbsp;void&nbsp;writeAck()</pre>\n</li>\n</ul>\n<a name=\"writeAck-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>writeAck</h4>\n<pre>public static&nbsp;void&nbsp;writeAck(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n</li>\n</ul>\n<a name=\"writeError-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>writeError</h4>\n<pre>public static&nbsp;void&nbsp;writeError(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;msg)</pre>\n</li>\n</ul>\n<a name=\"writeOK--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>writeOK</h4>\n<pre>public static&nbsp;void&nbsp;writeOK()</pre>\n</li>\n</ul>\n<a name=\"writeResult-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>writeResult</h4>\n<pre>public static&nbsp;void&nbsp;writeResult(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;o)</pre>\n</li>\n</ul>\n<a name=\"writeResult-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>writeResult</h4>\n<pre>public static&nbsp;void&nbsp;writeResult(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n</li>\n</ul>\n<a name=\"writeLongResult-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>writeLongResult</h4>\n<pre>public static&nbsp;void&nbsp;writeLongResult(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;s)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/Regex_replace.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/SPLWindowSettings.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/SplPipeDecoder.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"SplPipeDecoder.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/StanfordCppLib_getJbeVersion.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:36 PDT 2017 -->\n<title>StanfordCppLib_getJbeVersion</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"StanfordCppLib_getJbeVersion\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/SPLWindowSettings.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/StanfordCppLib_setCppVersion.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/StanfordCppLib_getJbeVersion.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"StanfordCppLib_getJbeVersion.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class StanfordCppLib_getJbeVersion\" class=\"title\">Class StanfordCppLib_getJbeVersion</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.StanfordCppLib_getJbeVersion</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">StanfordCppLib_getJbeVersion</span>\nextends <a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/StanfordCppLib_getJbeVersion.html#StanfordCppLib_getJbeVersion--\">StanfordCppLib_getJbeVersion</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/StanfordCppLib_getJbeVersion.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"StanfordCppLib_getJbeVersion--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>StanfordCppLib_getJbeVersion</h4>\n<pre>public&nbsp;StanfordCppLib_getJbeVersion()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/SPLWindowSettings.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/StanfordCppLib_setCppVersion.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/StanfordCppLib_getJbeVersion.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"StanfordCppLib_getJbeVersion.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/StanfordCppLib_setCppVersion.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:36 PDT 2017 -->\n<title>StanfordCppLib_setCppVersion</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"StanfordCppLib_setCppVersion\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/StanfordCppLib_getJbeVersion.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/TextFileDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/StanfordCppLib_setCppVersion.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"StanfordCppLib_setCppVersion.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class StanfordCppLib_setCppVersion\" class=\"title\">Class StanfordCppLib_setCppVersion</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.StanfordCppLib_setCppVersion</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">StanfordCppLib_setCppVersion</span>\nextends <a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/StanfordCppLib_setCppVersion.html#StanfordCppLib_setCppVersion--\">StanfordCppLib_setCppVersion</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/StanfordCppLib_setCppVersion.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"StanfordCppLib_setCppVersion--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>StanfordCppLib_setCppVersion</h4>\n<pre>public&nbsp;StanfordCppLib_setCppVersion()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/StanfordCppLib_getJbeVersion.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/TextFileDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/StanfordCppLib_setCppVersion.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"StanfordCppLib_setCppVersion.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/TextFileDialog.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:36 PDT 2017 -->\n<title>TextFileDialog</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"TextFileDialog\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":10,\"i3\":10,\"i4\":10,\"i5\":9,\"i6\":9,\"i7\":9,\"i8\":9,\"i9\":9,\"i10\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/StanfordCppLib_setCppVersion.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/URL_download.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/TextFileDialog.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"TextFileDialog.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JDialog\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class TextFileDialog\" class=\"title\">Class TextFileDialog</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Component</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Container</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Window</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true\" title=\"class or interface in java.awt\">java.awt.Dialog</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true\" title=\"class or interface in javax.swing\">javax.swing.JDialog</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.TextFileDialog</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<dl>\n<dt>All Implemented Interfaces:</dt>\n<dd><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/RootPaneContainer.html?is-external=true\" title=\"class or interface in javax.swing\">RootPaneContainer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/WindowConstants.html?is-external=true\" title=\"class or interface in javax.swing\">WindowConstants</a></dd>\n</dl>\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">TextFileDialog</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true\" title=\"class or interface in javax.swing\">JDialog</a></pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../serialized-form.html#stanford.spl.TextFileDialog\">Serialized Form</a></dd>\n</dl>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== NESTED CLASS SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.class.summary\">\n<!--   -->\n</a>\n<h3>Nested Class Summary</h3>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.javax.swing.JDialog\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true\" title=\"class or interface in javax.swing\">JDialog</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.AccessibleJDialog.html?is-external=true\" title=\"class or interface in javax.swing\">JDialog.AccessibleJDialog</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Dialog\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true\" title=\"class or interface in java.awt\">Dialog</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.AccessibleAWTDialog.html?is-external=true\" title=\"class or interface in java.awt\">Dialog.AccessibleAWTDialog</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.ModalExclusionType.html?is-external=true\" title=\"class or interface in java.awt\">Dialog.ModalExclusionType</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.ModalityType.html?is-external=true\" title=\"class or interface in java.awt\">Dialog.ModalityType</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Window\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true\" title=\"class or interface in java.awt\">Window</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.AccessibleAWTWindow.html?is-external=true\" title=\"class or interface in java.awt\">Window.AccessibleAWTWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.Type.html?is-external=true\" title=\"class or interface in java.awt\">Window.Type</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.AccessibleAWTContainer.html?is-external=true\" title=\"class or interface in java.awt\">Container.AccessibleAWTContainer</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"nested.classes.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Nested classes/interfaces inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.AccessibleAWTComponent.html?is-external=true\" title=\"class or interface in java.awt\">Component.AccessibleAWTComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BaselineResizeBehavior.html?is-external=true\" title=\"class or interface in java.awt\">Component.BaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.BltBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.BltBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.FlipBufferStrategy.html?is-external=true\" title=\"class or interface in java.awt\">Component.FlipBufferStrategy</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/TextFileDialog.html#DEFAULT_COLUMNS\">DEFAULT_COLUMNS</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/TextFileDialog.html#DEFAULT_ROWS\">DEFAULT_ROWS</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/TextFileDialog.html#MAX_COLUMNS\">MAX_COLUMNS</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/TextFileDialog.html#MAX_ROWS\">MAX_ROWS</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/TextFileDialog.html#MIN_COLUMNS\">MIN_COLUMNS</a></span></code>&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><code>static int</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/TextFileDialog.html#MIN_ROWS\">MIN_ROWS</a></span></code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.JDialog\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true\" title=\"class or interface in javax.swing\">JDialog</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#accessibleContext\" title=\"class or interface in javax.swing\">accessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#rootPane\" title=\"class or interface in javax.swing\">rootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#rootPaneCheckingEnabled\" title=\"class or interface in javax.swing\">rootPaneCheckingEnabled</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.Dialog\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true\" title=\"class or interface in java.awt\">Dialog</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#DEFAULT_MODALITY_TYPE\" title=\"class or interface in java.awt\">DEFAULT_MODALITY_TYPE</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Fields inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#BOTTOM_ALIGNMENT\" title=\"class or interface in java.awt\">BOTTOM_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#CENTER_ALIGNMENT\" title=\"class or interface in java.awt\">CENTER_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#LEFT_ALIGNMENT\" title=\"class or interface in java.awt\">LEFT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#RIGHT_ALIGNMENT\" title=\"class or interface in java.awt\">RIGHT_ALIGNMENT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#TOP_ALIGNMENT\" title=\"class or interface in java.awt\">TOP_ALIGNMENT</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.javax.swing.WindowConstants\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/WindowConstants.html?is-external=true\" title=\"class or interface in javax.swing\">WindowConstants</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/WindowConstants.html?is-external=true#DISPOSE_ON_CLOSE\" title=\"class or interface in javax.swing\">DISPOSE_ON_CLOSE</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/WindowConstants.html?is-external=true#DO_NOTHING_ON_CLOSE\" title=\"class or interface in javax.swing\">DO_NOTHING_ON_CLOSE</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/WindowConstants.html?is-external=true#EXIT_ON_CLOSE\" title=\"class or interface in javax.swing\">EXIT_ON_CLOSE</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/WindowConstants.html?is-external=true#HIDE_ON_CLOSE\" title=\"class or interface in javax.swing\">HIDE_ON_CLOSE</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"fields.inherited.from.class.java.awt.image.ImageObserver\">\n<!--   -->\n</a>\n<h3>Fields inherited from interface&nbsp;java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ABORT\" title=\"class or interface in java.awt.image\">ABORT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ALLBITS\" title=\"class or interface in java.awt.image\">ALLBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#ERROR\" title=\"class or interface in java.awt.image\">ERROR</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#FRAMEBITS\" title=\"class or interface in java.awt.image\">FRAMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#HEIGHT\" title=\"class or interface in java.awt.image\">HEIGHT</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#PROPERTIES\" title=\"class or interface in java.awt.image\">PROPERTIES</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#SOMEBITS\" title=\"class or interface in java.awt.image\">SOMEBITS</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true#WIDTH\" title=\"class or interface in java.awt.image\">WIDTH</a></code></li>\n</ul>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/TextFileDialog.html#TextFileDialog-java.awt.Window-\">TextFileDialog</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true\" title=\"class or interface in java.awt\">Window</a>&nbsp;parent)</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/TextFileDialog.html#addText-java.lang.String-\">addText</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/TextFileDialog.html#clearText--\">clearText</a></span>()</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/TextFileDialog.html#print-java.lang.String-\">print</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</code>&nbsp;</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/TextFileDialog.html#println-java.lang.Object-\">println</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;o)</code>&nbsp;</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/TextFileDialog.html#println-java.lang.String-\">println</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</code>&nbsp;</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../stanford/spl/TextFileDialog.html\" title=\"class in stanford.spl\">TextFileDialog</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/TextFileDialog.html#showDialog-java.awt.Component-java.lang.String-\">showDialog</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;parent,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;title)</code>&nbsp;</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../stanford/spl/TextFileDialog.html\" title=\"class in stanford.spl\">TextFileDialog</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/TextFileDialog.html#showDialog-java.awt.Component-java.lang.String-boolean-\">showDialog</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;parent,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;title,\n          boolean&nbsp;modal)</code>&nbsp;</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../stanford/spl/TextFileDialog.html\" title=\"class in stanford.spl\">TextFileDialog</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/TextFileDialog.html#showDialog-java.awt.Component-java.lang.String-java.lang.String-\">showDialog</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;parent,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;title,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</code>&nbsp;</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../stanford/spl/TextFileDialog.html\" title=\"class in stanford.spl\">TextFileDialog</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/TextFileDialog.html#showDialog-java.awt.Component-java.lang.String-java.lang.String-boolean-\">showDialog</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;parent,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;title,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n          boolean&nbsp;modal)</code>&nbsp;</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../stanford/spl/TextFileDialog.html\" title=\"class in stanford.spl\">TextFileDialog</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/TextFileDialog.html#showDialog-java.awt.Component-java.lang.String-java.lang.String-int-int-\">showDialog</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;parent,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;title,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n          int&nbsp;rows,\n          int&nbsp;cols)</code>&nbsp;</td>\n</tr>\n<tr id=\"i10\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../stanford/spl/TextFileDialog.html\" title=\"class in stanford.spl\">TextFileDialog</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/TextFileDialog.html#showDialog-java.awt.Component-java.lang.String-java.lang.String-int-int-boolean-\">showDialog</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;parent,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;title,\n          <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n          int&nbsp;rows,\n          int&nbsp;cols,\n          boolean&nbsp;modal)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.javax.swing.JDialog\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true\" title=\"class or interface in javax.swing\">JDialog</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#addImpl-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in javax.swing\">addImpl</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#createRootPane--\" title=\"class or interface in javax.swing\">createRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#dialogInit--\" title=\"class or interface in javax.swing\">dialogInit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#getAccessibleContext--\" title=\"class or interface in javax.swing\">getAccessibleContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#getContentPane--\" title=\"class or interface in javax.swing\">getContentPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#getDefaultCloseOperation--\" title=\"class or interface in javax.swing\">getDefaultCloseOperation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#getGlassPane--\" title=\"class or interface in javax.swing\">getGlassPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#getGraphics--\" title=\"class or interface in javax.swing\">getGraphics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#getJMenuBar--\" title=\"class or interface in javax.swing\">getJMenuBar</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#getLayeredPane--\" title=\"class or interface in javax.swing\">getLayeredPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#getRootPane--\" title=\"class or interface in javax.swing\">getRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#getTransferHandler--\" title=\"class or interface in javax.swing\">getTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#isDefaultLookAndFeelDecorated--\" title=\"class or interface in javax.swing\">isDefaultLookAndFeelDecorated</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#isRootPaneCheckingEnabled--\" title=\"class or interface in javax.swing\">isRootPaneCheckingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#paramString--\" title=\"class or interface in javax.swing\">paramString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#processWindowEvent-java.awt.event.WindowEvent-\" title=\"class or interface in javax.swing\">processWindowEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#remove-java.awt.Component-\" title=\"class or interface in javax.swing\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#repaint-long-int-int-int-int-\" title=\"class or interface in javax.swing\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#setContentPane-java.awt.Container-\" title=\"class or interface in javax.swing\">setContentPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#setDefaultCloseOperation-int-\" title=\"class or interface in javax.swing\">setDefaultCloseOperation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#setDefaultLookAndFeelDecorated-boolean-\" title=\"class or interface in javax.swing\">setDefaultLookAndFeelDecorated</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#setGlassPane-java.awt.Component-\" title=\"class or interface in javax.swing\">setGlassPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#setJMenuBar-javax.swing.JMenuBar-\" title=\"class or interface in javax.swing\">setJMenuBar</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#setLayeredPane-javax.swing.JLayeredPane-\" title=\"class or interface in javax.swing\">setLayeredPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#setLayout-java.awt.LayoutManager-\" title=\"class or interface in javax.swing\">setLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#setRootPane-javax.swing.JRootPane-\" title=\"class or interface in javax.swing\">setRootPane</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#setRootPaneCheckingEnabled-boolean-\" title=\"class or interface in javax.swing\">setRootPaneCheckingEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#setTransferHandler-javax.swing.TransferHandler-\" title=\"class or interface in javax.swing\">setTransferHandler</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true#update-java.awt.Graphics-\" title=\"class or interface in javax.swing\">update</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Dialog\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true\" title=\"class or interface in java.awt\">Dialog</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#addNotify--\" title=\"class or interface in java.awt\">addNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#getModalityType--\" title=\"class or interface in java.awt\">getModalityType</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#getTitle--\" title=\"class or interface in java.awt\">getTitle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#hide--\" title=\"class or interface in java.awt\">hide</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#isModal--\" title=\"class or interface in java.awt\">isModal</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#isResizable--\" title=\"class or interface in java.awt\">isResizable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#isUndecorated--\" title=\"class or interface in java.awt\">isUndecorated</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#setBackground-java.awt.Color-\" title=\"class or interface in java.awt\">setBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#setModal-boolean-\" title=\"class or interface in java.awt\">setModal</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#setModalityType-java.awt.Dialog.ModalityType-\" title=\"class or interface in java.awt\">setModalityType</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#setOpacity-float-\" title=\"class or interface in java.awt\">setOpacity</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#setResizable-boolean-\" title=\"class or interface in java.awt\">setResizable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#setShape-java.awt.Shape-\" title=\"class or interface in java.awt\">setShape</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#setTitle-java.lang.String-\" title=\"class or interface in java.awt\">setTitle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#setUndecorated-boolean-\" title=\"class or interface in java.awt\">setUndecorated</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#setVisible-boolean-\" title=\"class or interface in java.awt\">setVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#show--\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true#toBack--\" title=\"class or interface in java.awt\">toBack</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Window\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true\" title=\"class or interface in java.awt\">Window</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#addPropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#addPropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">addPropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#addWindowFocusListener-java.awt.event.WindowFocusListener-\" title=\"class or interface in java.awt\">addWindowFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#addWindowListener-java.awt.event.WindowListener-\" title=\"class or interface in java.awt\">addWindowListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#addWindowStateListener-java.awt.event.WindowStateListener-\" title=\"class or interface in java.awt\">addWindowStateListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#applyResourceBundle-java.util.ResourceBundle-\" title=\"class or interface in java.awt\">applyResourceBundle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#applyResourceBundle-java.lang.String-\" title=\"class or interface in java.awt\">applyResourceBundle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#createBufferStrategy-int-\" title=\"class or interface in java.awt\">createBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#createBufferStrategy-int-java.awt.BufferCapabilities-\" title=\"class or interface in java.awt\">createBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#dispose--\" title=\"class or interface in java.awt\">dispose</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getBackground--\" title=\"class or interface in java.awt\">getBackground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getBufferStrategy--\" title=\"class or interface in java.awt\">getBufferStrategy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getFocusableWindowState--\" title=\"class or interface in java.awt\">getFocusableWindowState</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getFocusCycleRootAncestor--\" title=\"class or interface in java.awt\">getFocusCycleRootAncestor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getFocusOwner--\" title=\"class or interface in java.awt\">getFocusOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getFocusTraversalKeys-int-\" title=\"class or interface in java.awt\">getFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getIconImages--\" title=\"class or interface in java.awt\">getIconImages</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getInputContext--\" title=\"class or interface in java.awt\">getInputContext</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getListeners-java.lang.Class-\" title=\"class or interface in java.awt\">getListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getLocale--\" title=\"class or interface in java.awt\">getLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getModalExclusionType--\" title=\"class or interface in java.awt\">getModalExclusionType</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getMostRecentFocusOwner--\" title=\"class or interface in java.awt\">getMostRecentFocusOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getOpacity--\" title=\"class or interface in java.awt\">getOpacity</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getOwnedWindows--\" title=\"class or interface in java.awt\">getOwnedWindows</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getOwner--\" title=\"class or interface in java.awt\">getOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getOwnerlessWindows--\" title=\"class or interface in java.awt\">getOwnerlessWindows</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getShape--\" title=\"class or interface in java.awt\">getShape</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getToolkit--\" title=\"class or interface in java.awt\">getToolkit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getType--\" title=\"class or interface in java.awt\">getType</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getWarningString--\" title=\"class or interface in java.awt\">getWarningString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getWindowFocusListeners--\" title=\"class or interface in java.awt\">getWindowFocusListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getWindowListeners--\" title=\"class or interface in java.awt\">getWindowListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getWindows--\" title=\"class or interface in java.awt\">getWindows</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#getWindowStateListeners--\" title=\"class or interface in java.awt\">getWindowStateListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isActive--\" title=\"class or interface in java.awt\">isActive</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isAlwaysOnTop--\" title=\"class or interface in java.awt\">isAlwaysOnTop</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isAlwaysOnTopSupported--\" title=\"class or interface in java.awt\">isAlwaysOnTopSupported</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isAutoRequestFocus--\" title=\"class or interface in java.awt\">isAutoRequestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isFocusableWindow--\" title=\"class or interface in java.awt\">isFocusableWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isFocusCycleRoot--\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isFocused--\" title=\"class or interface in java.awt\">isFocused</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isLocationByPlatform--\" title=\"class or interface in java.awt\">isLocationByPlatform</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isOpaque--\" title=\"class or interface in java.awt\">isOpaque</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isShowing--\" title=\"class or interface in java.awt\">isShowing</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#isValidateRoot--\" title=\"class or interface in java.awt\">isValidateRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#pack--\" title=\"class or interface in java.awt\">pack</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#paint-java.awt.Graphics-\" title=\"class or interface in java.awt\">paint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#postEvent-java.awt.Event-\" title=\"class or interface in java.awt\">postEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#processEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">processEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#processWindowFocusEvent-java.awt.event.WindowEvent-\" title=\"class or interface in java.awt\">processWindowFocusEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#processWindowStateEvent-java.awt.event.WindowEvent-\" title=\"class or interface in java.awt\">processWindowStateEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#removeNotify--\" title=\"class or interface in java.awt\">removeNotify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#removeWindowFocusListener-java.awt.event.WindowFocusListener-\" title=\"class or interface in java.awt\">removeWindowFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#removeWindowListener-java.awt.event.WindowListener-\" title=\"class or interface in java.awt\">removeWindowListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#removeWindowStateListener-java.awt.event.WindowStateListener-\" title=\"class or interface in java.awt\">removeWindowStateListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#reshape-int-int-int-int-\" title=\"class or interface in java.awt\">reshape</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setAlwaysOnTop-boolean-\" title=\"class or interface in java.awt\">setAlwaysOnTop</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setAutoRequestFocus-boolean-\" title=\"class or interface in java.awt\">setAutoRequestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setBounds-int-int-int-int-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">setBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setCursor-java.awt.Cursor-\" title=\"class or interface in java.awt\">setCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setFocusableWindowState-boolean-\" title=\"class or interface in java.awt\">setFocusableWindowState</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setFocusCycleRoot-boolean-\" title=\"class or interface in java.awt\">setFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setIconImage-java.awt.Image-\" title=\"class or interface in java.awt\">setIconImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setIconImages-java.util.List-\" title=\"class or interface in java.awt\">setIconImages</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setLocation-int-int-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setLocation-java.awt.Point-\" title=\"class or interface in java.awt\">setLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setLocationByPlatform-boolean-\" title=\"class or interface in java.awt\">setLocationByPlatform</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setLocationRelativeTo-java.awt.Component-\" title=\"class or interface in java.awt\">setLocationRelativeTo</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setMinimumSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setModalExclusionType-java.awt.Dialog.ModalExclusionType-\" title=\"class or interface in java.awt\">setModalExclusionType</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setSize-int-int-\" title=\"class or interface in java.awt\">setSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#setType-java.awt.Window.Type-\" title=\"class or interface in java.awt\">setType</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true#toFront--\" title=\"class or interface in java.awt\">toFront</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Container\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\">Container</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.awt.Component-java.lang.Object-int-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#add-java.lang.String-java.awt.Component-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#addContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">addContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#applyComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">applyComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#areFocusTraversalKeysSet-int-\" title=\"class or interface in java.awt\">areFocusTraversalKeysSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#countComponents--\" title=\"class or interface in java.awt\">countComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#deliverEvent-java.awt.Event-\" title=\"class or interface in java.awt\">deliverEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#doLayout--\" title=\"class or interface in java.awt\">doLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-int-int-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#findComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">findComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getAlignmentX--\" title=\"class or interface in java.awt\">getAlignmentX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getAlignmentY--\" title=\"class or interface in java.awt\">getAlignmentY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponent-int-\" title=\"class or interface in java.awt\">getComponent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-int-int-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentAt-java.awt.Point-\" title=\"class or interface in java.awt\">getComponentAt</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentCount--\" title=\"class or interface in java.awt\">getComponentCount</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponents--\" title=\"class or interface in java.awt\">getComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getComponentZOrder-java.awt.Component-\" title=\"class or interface in java.awt\">getComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getContainerListeners--\" title=\"class or interface in java.awt\">getContainerListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getFocusTraversalPolicy--\" title=\"class or interface in java.awt\">getFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getInsets--\" title=\"class or interface in java.awt\">getInsets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getLayout--\" title=\"class or interface in java.awt\">getLayout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMaximumSize--\" title=\"class or interface in java.awt\">getMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMinimumSize--\" title=\"class or interface in java.awt\">getMinimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getMousePosition-boolean-\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#getPreferredSize--\" title=\"class or interface in java.awt\">getPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#insets--\" title=\"class or interface in java.awt\">insets</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#invalidate--\" title=\"class or interface in java.awt\">invalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isAncestorOf-java.awt.Component-\" title=\"class or interface in java.awt\">isAncestorOf</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusCycleRoot-java.awt.Container-\" title=\"class or interface in java.awt\">isFocusCycleRoot</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicyProvider--\" title=\"class or interface in java.awt\">isFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#isFocusTraversalPolicySet--\" title=\"class or interface in java.awt\">isFocusTraversalPolicySet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#layout--\" title=\"class or interface in java.awt\">layout</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintStream-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#list-java.io.PrintWriter-int-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#locate-int-int-\" title=\"class or interface in java.awt\">locate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#minimumSize--\" title=\"class or interface in java.awt\">minimumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#paintComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#preferredSize--\" title=\"class or interface in java.awt\">preferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#print-java.awt.Graphics-\" title=\"class or interface in java.awt\">print</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#printComponents-java.awt.Graphics-\" title=\"class or interface in java.awt\">printComponents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#processContainerEvent-java.awt.event.ContainerEvent-\" title=\"class or interface in java.awt\">processContainerEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#remove-int-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeAll--\" title=\"class or interface in java.awt\">removeAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#removeContainerListener-java.awt.event.ContainerListener-\" title=\"class or interface in java.awt\">removeContainerListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setComponentZOrder-java.awt.Component-int-\" title=\"class or interface in java.awt\">setComponentZOrder</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalKeys-int-java.util.Set-\" title=\"class or interface in java.awt\">setFocusTraversalKeys</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicy-java.awt.FocusTraversalPolicy-\" title=\"class or interface in java.awt\">setFocusTraversalPolicy</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFocusTraversalPolicyProvider-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalPolicyProvider</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#setFont-java.awt.Font-\" title=\"class or interface in java.awt\">setFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#transferFocusDownCycle--\" title=\"class or interface in java.awt\">transferFocusDownCycle</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validate--\" title=\"class or interface in java.awt\">validate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true#validateTree--\" title=\"class or interface in java.awt\">validateTree</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.awt.Component\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#action-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">action</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#add-java.awt.PopupMenu-\" title=\"class or interface in java.awt\">add</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">addComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">addFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">addHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">addHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">addInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">addKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">addMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">addMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#addMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">addMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#bounds--\" title=\"class or interface in java.awt\">bounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#checkImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">checkImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#coalesceEvents-java.awt.AWTEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">coalesceEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-int-int-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#contains-java.awt.Point-\" title=\"class or interface in java.awt\">contains</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-java.awt.image.ImageProducer-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createImage-int-int-\" title=\"class or interface in java.awt\">createImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#createVolatileImage-int-int-java.awt.ImageCapabilities-\" title=\"class or interface in java.awt\">createVolatileImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disable--\" title=\"class or interface in java.awt\">disable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#disableEvents-long-\" title=\"class or interface in java.awt\">disableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#dispatchEvent-java.awt.AWTEvent-\" title=\"class or interface in java.awt\">dispatchEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable--\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enable-boolean-\" title=\"class or interface in java.awt\">enable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableEvents-long-\" title=\"class or interface in java.awt\">enableEvents</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#enableInputMethods-boolean-\" title=\"class or interface in java.awt\">enableInputMethods</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-boolean-boolean-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-byte-byte-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-char-char-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-double-double-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-float-float-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-int-int-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-long-long-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-java.lang.Object-java.lang.Object-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#firePropertyChange-java.lang.String-short-short-\" title=\"class or interface in java.awt\">firePropertyChange</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBaseline-int-int-\" title=\"class or interface in java.awt\">getBaseline</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBaselineResizeBehavior--\" title=\"class or interface in java.awt\">getBaselineResizeBehavior</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds--\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getBounds-java.awt.Rectangle-\" title=\"class or interface in java.awt\">getBounds</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getColorModel--\" title=\"class or interface in java.awt\">getColorModel</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentListeners--\" title=\"class or interface in java.awt\">getComponentListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getComponentOrientation--\" title=\"class or interface in java.awt\">getComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getCursor--\" title=\"class or interface in java.awt\">getCursor</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getDropTarget--\" title=\"class or interface in java.awt\">getDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusListeners--\" title=\"class or interface in java.awt\">getFocusListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFocusTraversalKeysEnabled--\" title=\"class or interface in java.awt\">getFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFont--\" title=\"class or interface in java.awt\">getFont</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getFontMetrics-java.awt.Font-\" title=\"class or interface in java.awt\">getFontMetrics</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getForeground--\" title=\"class or interface in java.awt\">getForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getGraphicsConfiguration--\" title=\"class or interface in java.awt\">getGraphicsConfiguration</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHeight--\" title=\"class or interface in java.awt\">getHeight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyBoundsListeners--\" title=\"class or interface in java.awt\">getHierarchyBoundsListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getHierarchyListeners--\" title=\"class or interface in java.awt\">getHierarchyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getIgnoreRepaint--\" title=\"class or interface in java.awt\">getIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodListeners--\" title=\"class or interface in java.awt\">getInputMethodListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getInputMethodRequests--\" title=\"class or interface in java.awt\">getInputMethodRequests</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getKeyListeners--\" title=\"class or interface in java.awt\">getKeyListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation--\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocation-java.awt.Point-\" title=\"class or interface in java.awt\">getLocation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getLocationOnScreen--\" title=\"class or interface in java.awt\">getLocationOnScreen</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseListeners--\" title=\"class or interface in java.awt\">getMouseListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseMotionListeners--\" title=\"class or interface in java.awt\">getMouseMotionListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMousePosition--\" title=\"class or interface in java.awt\">getMousePosition</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getMouseWheelListeners--\" title=\"class or interface in java.awt\">getMouseWheelListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getName--\" title=\"class or interface in java.awt\">getName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getParent--\" title=\"class or interface in java.awt\">getParent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPeer--\" title=\"class or interface in java.awt\">getPeer</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners--\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getPropertyChangeListeners-java.lang.String-\" title=\"class or interface in java.awt\">getPropertyChangeListeners</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize--\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">getSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getTreeLock--\" title=\"class or interface in java.awt\">getTreeLock</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getWidth--\" title=\"class or interface in java.awt\">getWidth</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getX--\" title=\"class or interface in java.awt\">getX</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#getY--\" title=\"class or interface in java.awt\">getY</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#gotFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">gotFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#handleEvent-java.awt.Event-\" title=\"class or interface in java.awt\">handleEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#hasFocus--\" title=\"class or interface in java.awt\">hasFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#imageUpdate-java.awt.Image-int-int-int-int-int-\" title=\"class or interface in java.awt\">imageUpdate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#inside-int-int-\" title=\"class or interface in java.awt\">inside</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isBackgroundSet--\" title=\"class or interface in java.awt\">isBackgroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isCursorSet--\" title=\"class or interface in java.awt\">isCursorSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDisplayable--\" title=\"class or interface in java.awt\">isDisplayable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isDoubleBuffered--\" title=\"class or interface in java.awt\">isDoubleBuffered</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isEnabled--\" title=\"class or interface in java.awt\">isEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusable--\" title=\"class or interface in java.awt\">isFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusOwner--\" title=\"class or interface in java.awt\">isFocusOwner</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFocusTraversable--\" title=\"class or interface in java.awt\">isFocusTraversable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isFontSet--\" title=\"class or interface in java.awt\">isFontSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isForegroundSet--\" title=\"class or interface in java.awt\">isForegroundSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isLightweight--\" title=\"class or interface in java.awt\">isLightweight</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMaximumSizeSet--\" title=\"class or interface in java.awt\">isMaximumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isMinimumSizeSet--\" title=\"class or interface in java.awt\">isMinimumSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isPreferredSizeSet--\" title=\"class or interface in java.awt\">isPreferredSizeSet</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isValid--\" title=\"class or interface in java.awt\">isValid</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#isVisible--\" title=\"class or interface in java.awt\">isVisible</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyDown-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#keyUp-java.awt.Event-int-\" title=\"class or interface in java.awt\">keyUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list--\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintStream-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#list-java.io.PrintWriter-\" title=\"class or interface in java.awt\">list</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#location--\" title=\"class or interface in java.awt\">location</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#lostFocus-java.awt.Event-java.lang.Object-\" title=\"class or interface in java.awt\">lostFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDown-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDown</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseDrag-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseDrag</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseEnter-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseEnter</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseExit-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseExit</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseMove-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseMove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#mouseUp-java.awt.Event-int-int-\" title=\"class or interface in java.awt\">mouseUp</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#move-int-int-\" title=\"class or interface in java.awt\">move</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#nextFocus--\" title=\"class or interface in java.awt\">nextFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#paintAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">paintAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#prepareImage-java.awt.Image-int-int-java.awt.image.ImageObserver-\" title=\"class or interface in java.awt\">prepareImage</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#printAll-java.awt.Graphics-\" title=\"class or interface in java.awt\">printAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processComponentEvent-java.awt.event.ComponentEvent-\" title=\"class or interface in java.awt\">processComponentEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processFocusEvent-java.awt.event.FocusEvent-\" title=\"class or interface in java.awt\">processFocusEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyBoundsEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyBoundsEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processHierarchyEvent-java.awt.event.HierarchyEvent-\" title=\"class or interface in java.awt\">processHierarchyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processInputMethodEvent-java.awt.event.InputMethodEvent-\" title=\"class or interface in java.awt\">processInputMethodEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processKeyEvent-java.awt.event.KeyEvent-\" title=\"class or interface in java.awt\">processKeyEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseEvent-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt\">processMouseEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseMotionEvent-java.awt.event.MouseEvent-\" title=\"class or interface in java.awt\">processMouseMotionEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#processMouseWheelEvent-java.awt.event.MouseWheelEvent-\" title=\"class or interface in java.awt\">processMouseWheelEvent</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#remove-java.awt.MenuComponent-\" title=\"class or interface in java.awt\">remove</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeComponentListener-java.awt.event.ComponentListener-\" title=\"class or interface in java.awt\">removeComponentListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeFocusListener-java.awt.event.FocusListener-\" title=\"class or interface in java.awt\">removeFocusListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyBoundsListener-java.awt.event.HierarchyBoundsListener-\" title=\"class or interface in java.awt\">removeHierarchyBoundsListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeHierarchyListener-java.awt.event.HierarchyListener-\" title=\"class or interface in java.awt\">removeHierarchyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeInputMethodListener-java.awt.event.InputMethodListener-\" title=\"class or interface in java.awt\">removeInputMethodListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeKeyListener-java.awt.event.KeyListener-\" title=\"class or interface in java.awt\">removeKeyListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseListener-java.awt.event.MouseListener-\" title=\"class or interface in java.awt\">removeMouseListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseMotionListener-java.awt.event.MouseMotionListener-\" title=\"class or interface in java.awt\">removeMouseMotionListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removeMouseWheelListener-java.awt.event.MouseWheelListener-\" title=\"class or interface in java.awt\">removeMouseWheelListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#removePropertyChangeListener-java.lang.String-java.beans.PropertyChangeListener-\" title=\"class or interface in java.awt\">removePropertyChangeListener</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint--\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-int-int-int-int-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#repaint-long-\" title=\"class or interface in java.awt\">repaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocus--\" title=\"class or interface in java.awt\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocus-boolean-\" title=\"class or interface in java.awt\">requestFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocusInWindow--\" title=\"class or interface in java.awt\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#requestFocusInWindow-boolean-\" title=\"class or interface in java.awt\">requestFocusInWindow</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#resize-java.awt.Dimension-\" title=\"class or interface in java.awt\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#resize-int-int-\" title=\"class or interface in java.awt\">resize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#revalidate--\" title=\"class or interface in java.awt\">revalidate</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setComponentOrientation-java.awt.ComponentOrientation-\" title=\"class or interface in java.awt\">setComponentOrientation</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setDropTarget-java.awt.dnd.DropTarget-\" title=\"class or interface in java.awt\">setDropTarget</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setEnabled-boolean-\" title=\"class or interface in java.awt\">setEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusable-boolean-\" title=\"class or interface in java.awt\">setFocusable</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setFocusTraversalKeysEnabled-boolean-\" title=\"class or interface in java.awt\">setFocusTraversalKeysEnabled</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setForeground-java.awt.Color-\" title=\"class or interface in java.awt\">setForeground</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setIgnoreRepaint-boolean-\" title=\"class or interface in java.awt\">setIgnoreRepaint</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setLocale-java.util.Locale-\" title=\"class or interface in java.awt\">setLocale</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setMaximumSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setMaximumSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setName-java.lang.String-\" title=\"class or interface in java.awt\">setName</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#setPreferredSize-java.awt.Dimension-\" title=\"class or interface in java.awt\">setPreferredSize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#show-boolean-\" title=\"class or interface in java.awt\">show</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#size--\" title=\"class or interface in java.awt\">size</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#toString--\" title=\"class or interface in java.awt\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocus--\" title=\"class or interface in java.awt\">transferFocus</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusBackward--\" title=\"class or interface in java.awt\">transferFocusBackward</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true#transferFocusUpCycle--\" title=\"class or interface in java.awt\">transferFocusUpCycle</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"DEFAULT_ROWS\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>DEFAULT_ROWS</h4>\n<pre>public static final&nbsp;int DEFAULT_ROWS</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.TextFileDialog.DEFAULT_ROWS\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"DEFAULT_COLUMNS\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>DEFAULT_COLUMNS</h4>\n<pre>public static final&nbsp;int DEFAULT_COLUMNS</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.TextFileDialog.DEFAULT_COLUMNS\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MIN_ROWS\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MIN_ROWS</h4>\n<pre>public static final&nbsp;int MIN_ROWS</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.TextFileDialog.MIN_ROWS\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MIN_COLUMNS\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MIN_COLUMNS</h4>\n<pre>public static final&nbsp;int MIN_COLUMNS</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.TextFileDialog.MIN_COLUMNS\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MAX_ROWS\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>MAX_ROWS</h4>\n<pre>public static final&nbsp;int MAX_ROWS</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.TextFileDialog.MAX_ROWS\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n<a name=\"MAX_COLUMNS\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>MAX_COLUMNS</h4>\n<pre>public static final&nbsp;int MAX_COLUMNS</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.TextFileDialog.MAX_COLUMNS\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"TextFileDialog-java.awt.Window-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>TextFileDialog</h4>\n<pre>public&nbsp;TextFileDialog(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true\" title=\"class or interface in java.awt\">Window</a>&nbsp;parent)</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"addText-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>addText</h4>\n<pre>public&nbsp;void&nbsp;addText(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</pre>\n</li>\n</ul>\n<a name=\"clearText--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>clearText</h4>\n<pre>public&nbsp;void&nbsp;clearText()</pre>\n</li>\n</ul>\n<a name=\"print-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>print</h4>\n<pre>public&nbsp;void&nbsp;print(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</pre>\n</li>\n</ul>\n<a name=\"println-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public&nbsp;void&nbsp;println(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</pre>\n</li>\n</ul>\n<a name=\"println-java.lang.Object-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>println</h4>\n<pre>public&nbsp;void&nbsp;println(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a>&nbsp;o)</pre>\n</li>\n</ul>\n<a name=\"showDialog-java.awt.Component-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>showDialog</h4>\n<pre>public static&nbsp;<a href=\"../../stanford/spl/TextFileDialog.html\" title=\"class in stanford.spl\">TextFileDialog</a>&nbsp;showDialog(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;parent,\n                                        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;title)</pre>\n</li>\n</ul>\n<a name=\"showDialog-java.awt.Component-java.lang.String-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>showDialog</h4>\n<pre>public static&nbsp;<a href=\"../../stanford/spl/TextFileDialog.html\" title=\"class in stanford.spl\">TextFileDialog</a>&nbsp;showDialog(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;parent,\n                                        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;title,\n                                        boolean&nbsp;modal)</pre>\n</li>\n</ul>\n<a name=\"showDialog-java.awt.Component-java.lang.String-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>showDialog</h4>\n<pre>public static&nbsp;<a href=\"../../stanford/spl/TextFileDialog.html\" title=\"class in stanford.spl\">TextFileDialog</a>&nbsp;showDialog(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;parent,\n                                        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;title,\n                                        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text)</pre>\n</li>\n</ul>\n<a name=\"showDialog-java.awt.Component-java.lang.String-java.lang.String-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>showDialog</h4>\n<pre>public static&nbsp;<a href=\"../../stanford/spl/TextFileDialog.html\" title=\"class in stanford.spl\">TextFileDialog</a>&nbsp;showDialog(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;parent,\n                                        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;title,\n                                        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n                                        boolean&nbsp;modal)</pre>\n</li>\n</ul>\n<a name=\"showDialog-java.awt.Component-java.lang.String-java.lang.String-int-int-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>showDialog</h4>\n<pre>public static&nbsp;<a href=\"../../stanford/spl/TextFileDialog.html\" title=\"class in stanford.spl\">TextFileDialog</a>&nbsp;showDialog(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;parent,\n                                        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;title,\n                                        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n                                        int&nbsp;rows,\n                                        int&nbsp;cols)</pre>\n</li>\n</ul>\n<a name=\"showDialog-java.awt.Component-java.lang.String-java.lang.String-int-int-boolean-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>showDialog</h4>\n<pre>public static&nbsp;<a href=\"../../stanford/spl/TextFileDialog.html\" title=\"class in stanford.spl\">TextFileDialog</a>&nbsp;showDialog(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\">Component</a>&nbsp;parent,\n                                        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;title,\n                                        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;text,\n                                        int&nbsp;rows,\n                                        int&nbsp;cols,\n                                        boolean&nbsp;modal)</pre>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/StanfordCppLib_setCppVersion.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/URL_download.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/TextFileDialog.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"TextFileDialog.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li><a href=\"#nested.classes.inherited.from.class.javax.swing.JDialog\">Nested</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/URL_download.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:36 PDT 2017 -->\n<title>URL_download</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"URL_download\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10};\nvar tabs = {65535:[\"t0\",\"All Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/TextFileDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/UrlDownloader.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/URL_download.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"URL_download.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class URL_download\" class=\"title\">Class URL_download</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">stanford.spl.JBECommand</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.URL_download</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">URL_download</span>\nextends <a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/URL_download.html#URL_download--\">URL_download</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/URL_download.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></span>(acm.util.TokenScanner&nbsp;paramTokenScanner,\n       <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.stanford.spl.JBECommand\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></h3>\n<code><a href=\"../../stanford/spl/JBECommand.html#createCommandTable--\">createCommandTable</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBase64-acm.util.TokenScanner-\">nextBase64</a>, <a href=\"../../stanford/spl/JBECommand.html#nextBoolean-acm.util.TokenScanner-\">nextBoolean</a>, <a href=\"../../stanford/spl/JBECommand.html#nextDouble-acm.util.TokenScanner-\">nextDouble</a>, <a href=\"../../stanford/spl/JBECommand.html#nextInt-acm.util.TokenScanner-\">nextInt</a>, <a href=\"../../stanford/spl/JBECommand.html#nextString-acm.util.TokenScanner-\">nextString</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldInvokeAndWait--\">shouldInvokeAndWait</a>, <a href=\"../../stanford/spl/JBECommand.html#shouldRunOnSwingEventThread--\">shouldRunOnSwingEventThread</a></code></li>\n</ul>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"URL_download--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>URL_download</h4>\n<pre>public&nbsp;URL_download()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>execute</h4>\n<pre>public&nbsp;void&nbsp;execute(acm.util.TokenScanner&nbsp;paramTokenScanner,\n                    <a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a>&nbsp;paramJavaBackEnd)</pre>\n<dl>\n<dt><span class=\"overrideSpecifyLabel\">Specified by:</span></dt>\n<dd><code><a href=\"../../stanford/spl/JBECommand.html#execute-acm.util.TokenScanner-stanford.spl.JavaBackEnd-\">execute</a></code>&nbsp;in class&nbsp;<code><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/TextFileDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/UrlDownloader.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/URL_download.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"URL_download.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/UrlDownloader.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:36 PDT 2017 -->\n<title>UrlDownloader</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"UrlDownloader\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":10,\"i1\":10,\"i2\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],2:[\"t2\",\"Instance Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/URL_download.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/Version.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/UrlDownloader.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"UrlDownloader.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class UrlDownloader\" class=\"title\">Class UrlDownloader</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.UrlDownloader</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">UrlDownloader</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/UrlDownloader.html#download-java.lang.String-\">download</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;urlString)</code>&nbsp;</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/UrlDownloader.html#download-java.lang.String-java.io.File-\">download</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;urlString,\n        <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)</code>&nbsp;</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"../../stanford/spl/UrlDownloader.html\" title=\"class in stanford.spl\">UrlDownloader</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/UrlDownloader.html#getInstance--\">getInstance</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"getInstance--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getInstance</h4>\n<pre>public static&nbsp;<a href=\"../../stanford/spl/UrlDownloader.html\" title=\"class in stanford.spl\">UrlDownloader</a>&nbsp;getInstance()</pre>\n</li>\n</ul>\n<a name=\"download-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>download</h4>\n<pre>public&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;download(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;urlString)\n                throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n</dl>\n</li>\n</ul>\n<a name=\"download-java.lang.String-java.io.File-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>download</h4>\n<pre>public&nbsp;void&nbsp;download(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;urlString,\n                     <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\">File</a>&nbsp;file)\n              throws <a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></pre>\n<dl>\n<dt><span class=\"throwsLabel\">Throws:</span></dt>\n<dd><code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true\" title=\"class or interface in java.io\">IOException</a></code></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/URL_download.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li><a href=\"../../stanford/spl/Version.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Next&nbsp;Class</span></a></li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/UrlDownloader.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"UrlDownloader.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li>Field&nbsp;|&nbsp;</li>\n<li>Constr&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/Version.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:36 PDT 2017 -->\n<title>Version</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"Version\";\n        }\n    }\n    catch(err) {\n    }\n//-->\nvar methods = {\"i0\":9,\"i1\":9,\"i2\":9,\"i3\":9,\"i4\":9,\"i5\":9,\"i6\":9,\"i7\":9,\"i8\":9,\"i9\":9};\nvar tabs = {65535:[\"t0\",\"All Methods\"],1:[\"t1\",\"Static Methods\"],8:[\"t4\",\"Concrete Methods\"]};\nvar altColor = \"altColor\";\nvar rowColor = \"rowColor\";\nvar tableTab = \"tableTab\";\nvar activeTableTab = \"activeTableTab\";\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/UrlDownloader.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li>Next&nbsp;Class</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/Version.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Version.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<!-- ======== START OF CLASS DATA ======== -->\n<div class=\"header\">\n<div class=\"subTitle\">stanford.spl</div>\n<h2 title=\"Class Version\" class=\"title\">Class Version</h2>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"inheritance\">\n<li><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">java.lang.Object</a></li>\n<li>\n<ul class=\"inheritance\">\n<li>stanford.spl.Version</li>\n</ul>\n</li>\n</ul>\n<div class=\"description\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<hr>\n<br>\n<pre>public class <span class=\"typeNameLabel\">Version</span>\nextends <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></pre>\n</li>\n</ul>\n</div>\n<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- =========== FIELD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.summary\">\n<!--   -->\n</a>\n<h3>Field Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Field Summary table, listing fields, and an explanation\">\n<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Field and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Version.html#ABOUT_MESSAGE\">ABOUT_MESSAGE</a></span></code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.summary\">\n<!--   -->\n</a>\n<h3>Constructor Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Constructor Summary table, listing constructors, and an explanation\">\n<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colOne\" scope=\"col\">Constructor and Description</th>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colOne\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Version.html#Version--\">Version</a></span>()</code>&nbsp;</td>\n</tr>\n</table>\n</li>\n</ul>\n<!-- ========== METHOD SUMMARY =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.summary\">\n<!--   -->\n</a>\n<h3>Method Summary</h3>\n<table class=\"memberSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Method Summary table, listing methods, and an explanation\">\n<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n<th class=\"colLast\" scope=\"col\">Method and Description</th>\n</tr>\n<tr id=\"i0\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Version.html#getAboutMessage--\">getAboutMessage</a></span>()</code>\n<div class=\"block\">Returns an about message describing the library and its version.</div>\n</td>\n</tr>\n<tr id=\"i1\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Version.html#getCppLibraryVersion--\">getCppLibraryVersion</a></span>()</code>\n<div class=\"block\">Returns the current version of the C++ library as a string such as \"2017/04/26\".</div>\n</td>\n</tr>\n<tr id=\"i2\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Version.html#getJdkVersion--\">getJdkVersion</a></span>()</code>\n<div class=\"block\">Returns the current version of the JDK as a string such as \"1.8.0_74\".</div>\n</td>\n</tr>\n<tr id=\"i3\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Version.html#getLibraryJarPath--\">getLibraryJarPath</a></span>()</code>\n<div class=\"block\">The full file path to spl.jar, or \"\" if unable to determine the path.</div>\n</td>\n</tr>\n<tr id=\"i4\" class=\"altColor\">\n<td class=\"colFirst\"><code>static <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a></code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Version.html#getLibraryVersion--\">getLibraryVersion</a></span>()</code>\n<div class=\"block\">Returns the current version of the Java library as a string such as \"2017/04/26\".</div>\n</td>\n</tr>\n<tr id=\"i5\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Version.html#isCppProject--\">isCppProject</a></span>()</code>\n<div class=\"block\">Returns true if the current app is running as a C++ project using the Java lib\n as its back-end.</div>\n</td>\n</tr>\n<tr id=\"i6\" class=\"altColor\">\n<td class=\"colFirst\"><code>static boolean</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Version.html#isJavaProject--\">isJavaProject</a></span>()</code>\n<div class=\"block\">Returns true if the current app is running as a Java project using the SPL lib.</div>\n</td>\n</tr>\n<tr id=\"i7\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Version.html#main-java.lang.String:A-\">main</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</code>\n<div class=\"block\">Prints the current library version to the console.</div>\n</td>\n</tr>\n<tr id=\"i8\" class=\"altColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Version.html#requireVersion-java.lang.String-\">requireVersion</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;minimumVersion)</code>\n<div class=\"block\">Throws an ErrorException if the library version is not at least as new as the given version.</div>\n</td>\n</tr>\n<tr id=\"i9\" class=\"rowColor\">\n<td class=\"colFirst\"><code>static void</code></td>\n<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"../../stanford/spl/Version.html#setCppLibraryVersion-java.lang.String-\">setCppLibraryVersion</a></span>(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;version)</code>\n<div class=\"block\">Sets the version of the C++ libraries.</div>\n</td>\n</tr>\n</table>\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"methods.inherited.from.class.java.lang.Object\">\n<!--   -->\n</a>\n<h3>Methods inherited from class&nbsp;java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</a></h3>\n<code><a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--\" title=\"class or interface in java.lang\">clone</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-\" title=\"class or interface in java.lang\">equals</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--\" title=\"class or interface in java.lang\">finalize</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--\" title=\"class or interface in java.lang\">getClass</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--\" title=\"class or interface in java.lang\">hashCode</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--\" title=\"class or interface in java.lang\">notify</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--\" title=\"class or interface in java.lang\">notifyAll</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--\" title=\"class or interface in java.lang\">toString</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-\" title=\"class or interface in java.lang\">wait</a>, <a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-\" title=\"class or interface in java.lang\">wait</a></code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<div class=\"details\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<!-- ============ FIELD DETAIL =========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"field.detail\">\n<!--   -->\n</a>\n<h3>Field Detail</h3>\n<a name=\"ABOUT_MESSAGE\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>ABOUT_MESSAGE</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> ABOUT_MESSAGE</pre>\n<dl>\n<dt><span class=\"seeLabel\">See Also:</span></dt>\n<dd><a href=\"../../constant-values.html#stanford.spl.Version.ABOUT_MESSAGE\">Constant Field Values</a></dd>\n</dl>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ========= CONSTRUCTOR DETAIL ======== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"constructor.detail\">\n<!--   -->\n</a>\n<h3>Constructor Detail</h3>\n<a name=\"Version--\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>Version</h4>\n<pre>public&nbsp;Version()</pre>\n</li>\n</ul>\n</li>\n</ul>\n<!-- ============ METHOD DETAIL ========== -->\n<ul class=\"blockList\">\n<li class=\"blockList\"><a name=\"method.detail\">\n<!--   -->\n</a>\n<h3>Method Detail</h3>\n<a name=\"getAboutMessage--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getAboutMessage</h4>\n<pre>public static&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getAboutMessage()</pre>\n<div class=\"block\">Returns an about message describing the library and its version.</div>\n</li>\n</ul>\n<a name=\"getLibraryJarPath--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getLibraryJarPath</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getLibraryJarPath()</pre>\n<div class=\"block\">The full file path to spl.jar, or \"\" if unable to determine the path.\n Might be not found if the lib has been unpacked and repackaged such as is done\n with assignment solution demo JARs.</div>\n</li>\n</ul>\n<a name=\"getJdkVersion--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getJdkVersion</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getJdkVersion()</pre>\n<div class=\"block\">Returns the current version of the JDK as a string such as \"1.8.0_74\".</div>\n</li>\n</ul>\n<a name=\"getLibraryVersion--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getLibraryVersion</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getLibraryVersion()</pre>\n<div class=\"block\">Returns the current version of the Java library as a string such as \"2017/04/26\".</div>\n</li>\n</ul>\n<a name=\"getCppLibraryVersion--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>getCppLibraryVersion</h4>\n<pre>public static final&nbsp;<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;getCppLibraryVersion()</pre>\n<div class=\"block\">Returns the current version of the C++ library as a string such as \"2017/04/26\".</div>\n</li>\n</ul>\n<a name=\"isCppProject--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isCppProject</h4>\n<pre>public static final&nbsp;boolean&nbsp;isCppProject()</pre>\n<div class=\"block\">Returns true if the current app is running as a C++ project using the Java lib\n as its back-end.</div>\n</li>\n</ul>\n<a name=\"isJavaProject--\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>isJavaProject</h4>\n<pre>public static final&nbsp;boolean&nbsp;isJavaProject()</pre>\n<div class=\"block\">Returns true if the current app is running as a Java project using the SPL lib.</div>\n</li>\n</ul>\n<a name=\"requireVersion-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>requireVersion</h4>\n<pre>public static&nbsp;void&nbsp;requireVersion(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;minimumVersion)</pre>\n<div class=\"block\">Throws an ErrorException if the library version is not at least as new as the given version.</div>\n</li>\n</ul>\n<a name=\"setCppLibraryVersion-java.lang.String-\">\n<!--   -->\n</a>\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<h4>setCppLibraryVersion</h4>\n<pre>public static final&nbsp;void&nbsp;setCppLibraryVersion(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>&nbsp;version)</pre>\n<div class=\"block\">Sets the version of the C++ libraries.\n Called from the back-end when C++ project loads up.</div>\n</li>\n</ul>\n<a name=\"main-java.lang.String:A-\">\n<!--   -->\n</a>\n<ul class=\"blockListLast\">\n<li class=\"blockList\">\n<h4>main</h4>\n<pre>public static&nbsp;void&nbsp;main(<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a>[]&nbsp;args)</pre>\n<div class=\"block\">Prints the current library version to the console.</div>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n<!-- ========= END OF CLASS DATA ========= -->\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li class=\"navBarCell1Rev\">Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/spl/UrlDownloader.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Prev&nbsp;Class</span></a></li>\n<li>Next&nbsp;Class</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/Version.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"Version.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<div>\n<ul class=\"subNavList\">\n<li>Summary:&nbsp;</li>\n<li>Nested&nbsp;|&nbsp;</li>\n<li><a href=\"#field.summary\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.summary\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.summary\">Method</a></li>\n</ul>\n<ul class=\"subNavList\">\n<li>Detail:&nbsp;</li>\n<li><a href=\"#field.detail\">Field</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#constructor.detail\">Constr</a>&nbsp;|&nbsp;</li>\n<li><a href=\"#method.detail\">Method</a></li>\n</ul>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/package-frame.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:36 PDT 2017 -->\n<title>stanford.spl</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<h1 class=\"bar\"><a href=\"../../stanford/spl/package-summary.html\" target=\"classFrame\">stanford.spl</a></h1>\n<div class=\"indexContainer\">\n<h2 title=\"Interfaces\">Interfaces</h2>\n<ul title=\"Interfaces\">\n<li><a href=\"GTableListener.html\" title=\"interface in stanford.spl\" target=\"classFrame\"><span class=\"interfaceName\">GTableListener</span></a></li>\n</ul>\n<h2 title=\"Classes\">Classes</h2>\n<ul title=\"Classes\">\n<li><a href=\"AutograderInput.html\" title=\"class in stanford.spl\" target=\"classFrame\">AutograderInput</a></li>\n<li><a href=\"AutograderInput_addButton.html\" title=\"class in stanford.spl\" target=\"classFrame\">AutograderInput_addButton</a></li>\n<li><a href=\"AutograderInput_addCategory.html\" title=\"class in stanford.spl\" target=\"classFrame\">AutograderInput_addCategory</a></li>\n<li><a href=\"AutograderInput_removeButton.html\" title=\"class in stanford.spl\" target=\"classFrame\">AutograderInput_removeButton</a></li>\n<li><a href=\"AutograderInput_removeCategory.html\" title=\"class in stanford.spl\" target=\"classFrame\">AutograderInput_removeCategory</a></li>\n<li><a href=\"AutograderInput_setColumns.html\" title=\"class in stanford.spl\" target=\"classFrame\">AutograderInput_setColumns</a></li>\n<li><a href=\"AutograderInput_setVisible.html\" title=\"class in stanford.spl\" target=\"classFrame\">AutograderInput_setVisible</a></li>\n<li><a href=\"AutograderUnitTest_addTest.html\" title=\"class in stanford.spl\" target=\"classFrame\">AutograderUnitTest_addTest</a></li>\n<li><a href=\"AutograderUnitTest_catchExceptions.html\" title=\"class in stanford.spl\" target=\"classFrame\">AutograderUnitTest_catchExceptions</a></li>\n<li><a href=\"AutograderUnitTest_clearTestResults.html\" title=\"class in stanford.spl\" target=\"classFrame\">AutograderUnitTest_clearTestResults</a></li>\n<li><a href=\"AutograderUnitTest_clearTests.html\" title=\"class in stanford.spl\" target=\"classFrame\">AutograderUnitTest_clearTests</a></li>\n<li><a href=\"AutograderUnitTest_isChecked.html\" title=\"class in stanford.spl\" target=\"classFrame\">AutograderUnitTest_isChecked</a></li>\n<li><a href=\"AutograderUnitTest_setChecked.html\" title=\"class in stanford.spl\" target=\"classFrame\">AutograderUnitTest_setChecked</a></li>\n<li><a href=\"AutograderUnitTest_setTestCounts.html\" title=\"class in stanford.spl\" target=\"classFrame\">AutograderUnitTest_setTestCounts</a></li>\n<li><a href=\"AutograderUnitTest_setTestDetails.html\" title=\"class in stanford.spl\" target=\"classFrame\">AutograderUnitTest_setTestDetails</a></li>\n<li><a href=\"AutograderUnitTest_setTestingCompleted.html\" title=\"class in stanford.spl\" target=\"classFrame\">AutograderUnitTest_setTestingCompleted</a></li>\n<li><a href=\"AutograderUnitTest_setTestResult.html\" title=\"class in stanford.spl\" target=\"classFrame\">AutograderUnitTest_setTestResult</a></li>\n<li><a href=\"AutograderUnitTest_setTestRuntime.html\" title=\"class in stanford.spl\" target=\"classFrame\">AutograderUnitTest_setTestRuntime</a></li>\n<li><a href=\"AutograderUnitTest_setVisible.html\" title=\"class in stanford.spl\" target=\"classFrame\">AutograderUnitTest_setVisible</a></li>\n<li><a href=\"AutograderUnitTest_setWindowDescriptionText.html\" title=\"class in stanford.spl\" target=\"classFrame\">AutograderUnitTest_setWindowDescriptionText</a></li>\n<li><a href=\"AutograderUnitTestGUI.html\" title=\"class in stanford.spl\" target=\"classFrame\">AutograderUnitTestGUI</a></li>\n<li><a href=\"Base64.html\" title=\"class in stanford.spl\" target=\"classFrame\">Base64</a></li>\n<li><a href=\"Base64.InputStream.html\" title=\"class in stanford.spl\" target=\"classFrame\">Base64.InputStream</a></li>\n<li><a href=\"Base64.OutputStream.html\" title=\"class in stanford.spl\" target=\"classFrame\">Base64.OutputStream</a></li>\n<li><a href=\"Clipboard_get.html\" title=\"class in stanford.spl\" target=\"classFrame\">Clipboard_get</a></li>\n<li><a href=\"Clipboard_set.html\" title=\"class in stanford.spl\" target=\"classFrame\">Clipboard_set</a></li>\n<li><a href=\"DiffImage_compareImages.html\" title=\"class in stanford.spl\" target=\"classFrame\">DiffImage_compareImages</a></li>\n<li><a href=\"DiffImage_compareWindowToImage.html\" title=\"class in stanford.spl\" target=\"classFrame\">DiffImage_compareWindowToImage</a></li>\n<li><a href=\"DiffImage_show.html\" title=\"class in stanford.spl\" target=\"classFrame\">DiffImage_show</a></li>\n<li><a href=\"File_getTempDirectory.html\" title=\"class in stanford.spl\" target=\"classFrame\">File_getTempDirectory</a></li>\n<li><a href=\"File_openFileDialog.html\" title=\"class in stanford.spl\" target=\"classFrame\">File_openFileDialog</a></li>\n<li><a href=\"GBufferedImage.html\" title=\"class in stanford.spl\" target=\"classFrame\">GBufferedImage</a></li>\n<li><a href=\"GBufferedImage_create.html\" title=\"class in stanford.spl\" target=\"classFrame\">GBufferedImage_create</a></li>\n<li><a href=\"GBufferedImage_fill.html\" title=\"class in stanford.spl\" target=\"classFrame\">GBufferedImage_fill</a></li>\n<li><a href=\"GBufferedImage_fillRegion.html\" title=\"class in stanford.spl\" target=\"classFrame\">GBufferedImage_fillRegion</a></li>\n<li><a href=\"GBufferedImage_load.html\" title=\"class in stanford.spl\" target=\"classFrame\">GBufferedImage_load</a></li>\n<li><a href=\"GBufferedImage_resize.html\" title=\"class in stanford.spl\" target=\"classFrame\">GBufferedImage_resize</a></li>\n<li><a href=\"GBufferedImage_save.html\" title=\"class in stanford.spl\" target=\"classFrame\">GBufferedImage_save</a></li>\n<li><a href=\"GBufferedImage_setRGB.html\" title=\"class in stanford.spl\" target=\"classFrame\">GBufferedImage_setRGB</a></li>\n<li><a href=\"GBufferedImage_updateAllPixels.html\" title=\"class in stanford.spl\" target=\"classFrame\">GBufferedImage_updateAllPixels</a></li>\n<li><a href=\"GCompound_add.html\" title=\"class in stanford.spl\" target=\"classFrame\">GCompound_add</a></li>\n<li><a href=\"GFileChooser_showOpenDialog.html\" title=\"class in stanford.spl\" target=\"classFrame\">GFileChooser_showOpenDialog</a></li>\n<li><a href=\"GFileChooser_showOpenDialog.GFileChooserFileFilter.html\" title=\"class in stanford.spl\" target=\"classFrame\">GFileChooser_showOpenDialog.GFileChooserFileFilter</a></li>\n<li><a href=\"GFileChooser_showSaveDialog.html\" title=\"class in stanford.spl\" target=\"classFrame\">GFileChooser_showSaveDialog</a></li>\n<li><a href=\"GInteractor.html\" title=\"class in stanford.spl\" target=\"classFrame\">GInteractor</a></li>\n<li><a href=\"GInteractor_addActionListener.html\" title=\"class in stanford.spl\" target=\"classFrame\">GInteractor_addActionListener</a></li>\n<li><a href=\"GInteractor_getAccelerator.html\" title=\"class in stanford.spl\" target=\"classFrame\">GInteractor_getAccelerator</a></li>\n<li><a href=\"GInteractor_getFont.html\" title=\"class in stanford.spl\" target=\"classFrame\">GInteractor_getFont</a></li>\n<li><a href=\"GInteractor_getMnemonic.html\" title=\"class in stanford.spl\" target=\"classFrame\">GInteractor_getMnemonic</a></li>\n<li><a href=\"GInteractor_isEnabled.html\" title=\"class in stanford.spl\" target=\"classFrame\">GInteractor_isEnabled</a></li>\n<li><a href=\"GInteractor_removeActionListener.html\" title=\"class in stanford.spl\" target=\"classFrame\">GInteractor_removeActionListener</a></li>\n<li><a href=\"GInteractor_requestFocus.html\" title=\"class in stanford.spl\" target=\"classFrame\">GInteractor_requestFocus</a></li>\n<li><a href=\"GInteractor_setAccelerator.html\" title=\"class in stanford.spl\" target=\"classFrame\">GInteractor_setAccelerator</a></li>\n<li><a href=\"GInteractor_setBackground.html\" title=\"class in stanford.spl\" target=\"classFrame\">GInteractor_setBackground</a></li>\n<li><a href=\"GInteractor_setEnabled.html\" title=\"class in stanford.spl\" target=\"classFrame\">GInteractor_setEnabled</a></li>\n<li><a href=\"GInteractor_setFont.html\" title=\"class in stanford.spl\" target=\"classFrame\">GInteractor_setFont</a></li>\n<li><a href=\"GInteractor_setIcon.html\" title=\"class in stanford.spl\" target=\"classFrame\">GInteractor_setIcon</a></li>\n<li><a href=\"GInteractor_setMnemonic.html\" title=\"class in stanford.spl\" target=\"classFrame\">GInteractor_setMnemonic</a></li>\n<li><a href=\"GInteractor_setText.html\" title=\"class in stanford.spl\" target=\"classFrame\">GInteractor_setText</a></li>\n<li><a href=\"GInteractor_setTextPosition.html\" title=\"class in stanford.spl\" target=\"classFrame\">GInteractor_setTextPosition</a></li>\n<li><a href=\"GInteractor_setTooltip.html\" title=\"class in stanford.spl\" target=\"classFrame\">GInteractor_setTooltip</a></li>\n<li><a href=\"GObject_remove.html\" title=\"class in stanford.spl\" target=\"classFrame\">GObject_remove</a></li>\n<li><a href=\"GObject_setAntialiasing.html\" title=\"class in stanford.spl\" target=\"classFrame\">GObject_setAntialiasing</a></li>\n<li><a href=\"GOptionPane_showConfirmDialog.html\" title=\"class in stanford.spl\" target=\"classFrame\">GOptionPane_showConfirmDialog</a></li>\n<li><a href=\"GOptionPane_showInputDialog.html\" title=\"class in stanford.spl\" target=\"classFrame\">GOptionPane_showInputDialog</a></li>\n<li><a href=\"GOptionPane_showMessageDialog.html\" title=\"class in stanford.spl\" target=\"classFrame\">GOptionPane_showMessageDialog</a></li>\n<li><a href=\"GOptionPane_showOptionDialog.html\" title=\"class in stanford.spl\" target=\"classFrame\">GOptionPane_showOptionDialog</a></li>\n<li><a href=\"GOptionPane_showTextFileDialog.html\" title=\"class in stanford.spl\" target=\"classFrame\">GOptionPane_showTextFileDialog</a></li>\n<li><a href=\"GRadioButton.html\" title=\"class in stanford.spl\" target=\"classFrame\">GRadioButton</a></li>\n<li><a href=\"GRadioButton_create.html\" title=\"class in stanford.spl\" target=\"classFrame\">GRadioButton_create</a></li>\n<li><a href=\"GRadioButton_isSelected.html\" title=\"class in stanford.spl\" target=\"classFrame\">GRadioButton_isSelected</a></li>\n<li><a href=\"GRadioButton_setSelected.html\" title=\"class in stanford.spl\" target=\"classFrame\">GRadioButton_setSelected</a></li>\n<li><a href=\"GSlider.html\" title=\"class in stanford.spl\" target=\"classFrame\">GSlider</a></li>\n<li><a href=\"GSlider_getMajorTickSpacing.html\" title=\"class in stanford.spl\" target=\"classFrame\">GSlider_getMajorTickSpacing</a></li>\n<li><a href=\"GSlider_getMinorTickSpacing.html\" title=\"class in stanford.spl\" target=\"classFrame\">GSlider_getMinorTickSpacing</a></li>\n<li><a href=\"GSlider_getPaintLabels.html\" title=\"class in stanford.spl\" target=\"classFrame\">GSlider_getPaintLabels</a></li>\n<li><a href=\"GSlider_getPaintTicks.html\" title=\"class in stanford.spl\" target=\"classFrame\">GSlider_getPaintTicks</a></li>\n<li><a href=\"GSlider_getSnapToTicks.html\" title=\"class in stanford.spl\" target=\"classFrame\">GSlider_getSnapToTicks</a></li>\n<li><a href=\"GSlider_setMajorTickSpacing.html\" title=\"class in stanford.spl\" target=\"classFrame\">GSlider_setMajorTickSpacing</a></li>\n<li><a href=\"GSlider_setMinorTickSpacing.html\" title=\"class in stanford.spl\" target=\"classFrame\">GSlider_setMinorTickSpacing</a></li>\n<li><a href=\"GSlider_setPaintLabels.html\" title=\"class in stanford.spl\" target=\"classFrame\">GSlider_setPaintLabels</a></li>\n<li><a href=\"GSlider_setPaintTicks.html\" title=\"class in stanford.spl\" target=\"classFrame\">GSlider_setPaintTicks</a></li>\n<li><a href=\"GSlider_setSnapToTicks.html\" title=\"class in stanford.spl\" target=\"classFrame\">GSlider_setSnapToTicks</a></li>\n<li><a href=\"GTable.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTable</a></li>\n<li><a href=\"GTable_autofitColumnWidths.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTable_autofitColumnWidths</a></li>\n<li><a href=\"GTable_clear.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTable_clear</a></li>\n<li><a href=\"GTable_clearFormatting.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTable_clearFormatting</a></li>\n<li><a href=\"GTable_create.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTable_create</a></li>\n<li><a href=\"GTable_get.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTable_get</a></li>\n<li><a href=\"GTable_getColumnWidth.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTable_getColumnWidth</a></li>\n<li><a href=\"GTable_getSelection.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTable_getSelection</a></li>\n<li><a href=\"GTable_resize.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTable_resize</a></li>\n<li><a href=\"GTable_select.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTable_select</a></li>\n<li><a href=\"GTable_set.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTable_set</a></li>\n<li><a href=\"GTable_setCellAlignment.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTable_setCellAlignment</a></li>\n<li><a href=\"GTable_setCellBackground.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTable_setCellBackground</a></li>\n<li><a href=\"GTable_setCellFont.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTable_setCellFont</a></li>\n<li><a href=\"GTable_setCellForeground.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTable_setCellForeground</a></li>\n<li><a href=\"GTable_setColumnAlignment.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTable_setColumnAlignment</a></li>\n<li><a href=\"GTable_setColumnBackground.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTable_setColumnBackground</a></li>\n<li><a href=\"GTable_setColumnFont.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTable_setColumnFont</a></li>\n<li><a href=\"GTable_setColumnForeground.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTable_setColumnForeground</a></li>\n<li><a href=\"GTable_setColumnHeaderStyle.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTable_setColumnHeaderStyle</a></li>\n<li><a href=\"GTable_setColumnWidth.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTable_setColumnWidth</a></li>\n<li><a href=\"GTable_setEditable.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTable_setEditable</a></li>\n<li><a href=\"GTable_setEditorValue.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTable_setEditorValue</a></li>\n<li><a href=\"GTable_setEventEnabled.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTable_setEventEnabled</a></li>\n<li><a href=\"GTable_setFont.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTable_setFont</a></li>\n<li><a href=\"GTable_setHorizontalAlignment.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTable_setHorizontalAlignment</a></li>\n<li><a href=\"GTable_setRowAlignment.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTable_setRowAlignment</a></li>\n<li><a href=\"GTable_setRowBackground.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTable_setRowBackground</a></li>\n<li><a href=\"GTable_setRowColumnHeadersVisible.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTable_setRowColumnHeadersVisible</a></li>\n<li><a href=\"GTable_setRowFont.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTable_setRowFont</a></li>\n<li><a href=\"GTable_setRowForeground.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTable_setRowForeground</a></li>\n<li><a href=\"GTableAdapter.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTableAdapter</a></li>\n<li><a href=\"GTableEvent.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTableEvent</a></li>\n<li><a href=\"GTextArea.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTextArea</a></li>\n<li><a href=\"GTextArea_create.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTextArea_create</a></li>\n<li><a href=\"GTextArea_getText.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTextArea_getText</a></li>\n<li><a href=\"GTextArea_setEditable.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTextArea_setEditable</a></li>\n<li><a href=\"GTextArea_setFont.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTextArea_setFont</a></li>\n<li><a href=\"GTextArea_setText.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTextArea_setText</a></li>\n<li><a href=\"GTextField.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTextField</a></li>\n<li><a href=\"GTextField_isEditable.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTextField_isEditable</a></li>\n<li><a href=\"GTextField_setEditable.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTextField_setEditable</a></li>\n<li><a href=\"GTextField_setPlaceholder.html\" title=\"class in stanford.spl\" target=\"classFrame\">GTextField_setPlaceholder</a></li>\n<li><a href=\"GWindow_clearCanvas.html\" title=\"class in stanford.spl\" target=\"classFrame\">GWindow_clearCanvas</a></li>\n<li><a href=\"GWindow_close.html\" title=\"class in stanford.spl\" target=\"classFrame\">GWindow_close</a></li>\n<li><a href=\"GWindow_create.html\" title=\"class in stanford.spl\" target=\"classFrame\">GWindow_create</a></li>\n<li><a href=\"GWindow_drawInBackground.html\" title=\"class in stanford.spl\" target=\"classFrame\">GWindow_drawInBackground</a></li>\n<li><a href=\"GWindow_getCanvasSize.html\" title=\"class in stanford.spl\" target=\"classFrame\">GWindow_getCanvasSize</a></li>\n<li><a href=\"GWindow_getContentPaneSize.html\" title=\"class in stanford.spl\" target=\"classFrame\">GWindow_getContentPaneSize</a></li>\n<li><a href=\"GWindow_getLocation.html\" title=\"class in stanford.spl\" target=\"classFrame\">GWindow_getLocation</a></li>\n<li><a href=\"GWindow_getPixel.html\" title=\"class in stanford.spl\" target=\"classFrame\">GWindow_getPixel</a></li>\n<li><a href=\"GWindow_getPixels.html\" title=\"class in stanford.spl\" target=\"classFrame\">GWindow_getPixels</a></li>\n<li><a href=\"GWindow_getRegionSize.html\" title=\"class in stanford.spl\" target=\"classFrame\">GWindow_getRegionSize</a></li>\n<li><a href=\"GWindow_getScreenSize.html\" title=\"class in stanford.spl\" target=\"classFrame\">GWindow_getScreenSize</a></li>\n<li><a href=\"GWindow_getSize.html\" title=\"class in stanford.spl\" target=\"classFrame\">GWindow_getSize</a></li>\n<li><a href=\"GWindow_minimize.html\" title=\"class in stanford.spl\" target=\"classFrame\">GWindow_minimize</a></li>\n<li><a href=\"GWindow_pack.html\" title=\"class in stanford.spl\" target=\"classFrame\">GWindow_pack</a></li>\n<li><a href=\"GWindow_removeFromRegion.html\" title=\"class in stanford.spl\" target=\"classFrame\">GWindow_removeFromRegion</a></li>\n<li><a href=\"GWindow_saveCanvasPixels.html\" title=\"class in stanford.spl\" target=\"classFrame\">GWindow_saveCanvasPixels</a></li>\n<li><a href=\"GWindow_setCanvasSize.html\" title=\"class in stanford.spl\" target=\"classFrame\">GWindow_setCanvasSize</a></li>\n<li><a href=\"GWindow_setCloseOperation.html\" title=\"class in stanford.spl\" target=\"classFrame\">GWindow_setCloseOperation</a></li>\n<li><a href=\"GWindow_setExitOnClose.html\" title=\"class in stanford.spl\" target=\"classFrame\">GWindow_setExitOnClose</a></li>\n<li><a href=\"GWindow_setLocation.html\" title=\"class in stanford.spl\" target=\"classFrame\">GWindow_setLocation</a></li>\n<li><a href=\"GWindow_setLocationSaved.html\" title=\"class in stanford.spl\" target=\"classFrame\">GWindow_setLocationSaved</a></li>\n<li><a href=\"GWindow_setPixel.html\" title=\"class in stanford.spl\" target=\"classFrame\">GWindow_setPixel</a></li>\n<li><a href=\"GWindow_setPixels.html\" title=\"class in stanford.spl\" target=\"classFrame\">GWindow_setPixels</a></li>\n<li><a href=\"GWindow_setRegionSize.html\" title=\"class in stanford.spl\" target=\"classFrame\">GWindow_setRegionSize</a></li>\n<li><a href=\"GWindow_setResizable.html\" title=\"class in stanford.spl\" target=\"classFrame\">GWindow_setResizable</a></li>\n<li><a href=\"GWindow_setSize.html\" title=\"class in stanford.spl\" target=\"classFrame\">GWindow_setSize</a></li>\n<li><a href=\"GWindow_toBack.html\" title=\"class in stanford.spl\" target=\"classFrame\">GWindow_toBack</a></li>\n<li><a href=\"GWindow_toFront.html\" title=\"class in stanford.spl\" target=\"classFrame\">GWindow_toFront</a></li>\n<li><a href=\"HttpServer_sendResponse.html\" title=\"class in stanford.spl\" target=\"classFrame\">HttpServer_sendResponse</a></li>\n<li><a href=\"HttpServer_sendResponseFile.html\" title=\"class in stanford.spl\" target=\"classFrame\">HttpServer_sendResponseFile</a></li>\n<li><a href=\"HttpServer_start.html\" title=\"class in stanford.spl\" target=\"classFrame\">HttpServer_start</a></li>\n<li><a href=\"HttpServer_stop.html\" title=\"class in stanford.spl\" target=\"classFrame\">HttpServer_stop</a></li>\n<li><a href=\"JavaBackEnd.html\" title=\"class in stanford.spl\" target=\"classFrame\">JavaBackEnd</a></li>\n<li><a href=\"JBECanvas.html\" title=\"class in stanford.spl\" target=\"classFrame\">JBECanvas</a></li>\n<li><a href=\"JBECommand.html\" title=\"class in stanford.spl\" target=\"classFrame\">JBECommand</a></li>\n<li><a href=\"JBEConsole_minimize.html\" title=\"class in stanford.spl\" target=\"classFrame\">JBEConsole_minimize</a></li>\n<li><a href=\"JBEConsole_print.html\" title=\"class in stanford.spl\" target=\"classFrame\">JBEConsole_print</a></li>\n<li><a href=\"JBEConsole_setCloseOperation.html\" title=\"class in stanford.spl\" target=\"classFrame\">JBEConsole_setCloseOperation</a></li>\n<li><a href=\"JBEConsole_setErrorColor.html\" title=\"class in stanford.spl\" target=\"classFrame\">JBEConsole_setErrorColor</a></li>\n<li><a href=\"JBEConsole_setExitOnClose.html\" title=\"class in stanford.spl\" target=\"classFrame\">JBEConsole_setExitOnClose</a></li>\n<li><a href=\"JBEConsole_setLocation.html\" title=\"class in stanford.spl\" target=\"classFrame\">JBEConsole_setLocation</a></li>\n<li><a href=\"JBEConsole_setLocationSaved.html\" title=\"class in stanford.spl\" target=\"classFrame\">JBEConsole_setLocationSaved</a></li>\n<li><a href=\"JBEConsole_setOutputColor.html\" title=\"class in stanford.spl\" target=\"classFrame\">JBEConsole_setOutputColor</a></li>\n<li><a href=\"JBEConsole_setTitle.html\" title=\"class in stanford.spl\" target=\"classFrame\">JBEConsole_setTitle</a></li>\n<li><a href=\"JBEConsole_setVisible.html\" title=\"class in stanford.spl\" target=\"classFrame\">JBEConsole_setVisible</a></li>\n<li><a href=\"JBEConsole_toFront.html\" title=\"class in stanford.spl\" target=\"classFrame\">JBEConsole_toFront</a></li>\n<li><a href=\"JBEDummyProgram.html\" title=\"class in stanford.spl\" target=\"classFrame\">JBEDummyProgram</a></li>\n<li><a href=\"JBEFileFilter.html\" title=\"class in stanford.spl\" target=\"classFrame\">JBEFileFilter</a></li>\n<li><a href=\"JBELabel.html\" title=\"class in stanford.spl\" target=\"classFrame\">JBELabel</a></li>\n<li><a href=\"JBEMenuBar.html\" title=\"class in stanford.spl\" target=\"classFrame\">JBEMenuBar</a></li>\n<li><a href=\"JBESwingCommand.html\" title=\"class in stanford.spl\" target=\"classFrame\">JBESwingCommand</a></li>\n<li><a href=\"JBEWindow.html\" title=\"class in stanford.spl\" target=\"classFrame\">JBEWindow</a></li>\n<li><a href=\"LibraryUpdater.html\" title=\"class in stanford.spl\" target=\"classFrame\">LibraryUpdater</a></li>\n<li><a href=\"Note_play.html\" title=\"class in stanford.spl\" target=\"classFrame\">Note_play</a></li>\n<li><a href=\"Regex_match.html\" title=\"class in stanford.spl\" target=\"classFrame\">Regex_match</a></li>\n<li><a href=\"Regex_matchCount.html\" title=\"class in stanford.spl\" target=\"classFrame\">Regex_matchCount</a></li>\n<li><a href=\"Regex_matchCountWithLines.html\" title=\"class in stanford.spl\" target=\"classFrame\">Regex_matchCountWithLines</a></li>\n<li><a href=\"Regex_replace.html\" title=\"class in stanford.spl\" target=\"classFrame\">Regex_replace</a></li>\n<li><a href=\"SplPipeDecoder.html\" title=\"class in stanford.spl\" target=\"classFrame\">SplPipeDecoder</a></li>\n<li><a href=\"SPLWindowSettings.html\" title=\"class in stanford.spl\" target=\"classFrame\">SPLWindowSettings</a></li>\n<li><a href=\"StanfordCppLib_getJbeVersion.html\" title=\"class in stanford.spl\" target=\"classFrame\">StanfordCppLib_getJbeVersion</a></li>\n<li><a href=\"StanfordCppLib_setCppVersion.html\" title=\"class in stanford.spl\" target=\"classFrame\">StanfordCppLib_setCppVersion</a></li>\n<li><a href=\"TextFileDialog.html\" title=\"class in stanford.spl\" target=\"classFrame\">TextFileDialog</a></li>\n<li><a href=\"URL_download.html\" title=\"class in stanford.spl\" target=\"classFrame\">URL_download</a></li>\n<li><a href=\"UrlDownloader.html\" title=\"class in stanford.spl\" target=\"classFrame\">UrlDownloader</a></li>\n<li><a href=\"Version.html\" title=\"class in stanford.spl\" target=\"classFrame\">Version</a></li>\n</ul>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/package-summary.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:36 PDT 2017 -->\n<title>stanford.spl</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"stanford.spl\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li class=\"navBarCell1Rev\">Package</li>\n<li>Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/karel/package-summary.html\">Prev&nbsp;Package</a></li>\n<li>Next&nbsp;Package</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/package-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 title=\"Package\" class=\"title\">Package&nbsp;stanford.spl</h1>\n</div>\n<div class=\"contentContainer\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Interface Summary table, listing interfaces, and an explanation\">\n<caption><span>Interface Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Interface</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTableListener.html\" title=\"interface in stanford.spl\">GTableListener</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n</tbody>\n</table>\n</li>\n<li class=\"blockList\">\n<table class=\"typeSummary\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Class Summary table, listing classes, and an explanation\">\n<caption><span>Class Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n<tr>\n<th class=\"colFirst\" scope=\"col\">Class</th>\n<th class=\"colLast\" scope=\"col\">Description</th>\n</tr>\n<tbody>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/AutograderInput.html\" title=\"class in stanford.spl\">AutograderInput</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/AutograderInput_addButton.html\" title=\"class in stanford.spl\">AutograderInput_addButton</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/AutograderInput_addCategory.html\" title=\"class in stanford.spl\">AutograderInput_addCategory</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/AutograderInput_removeButton.html\" title=\"class in stanford.spl\">AutograderInput_removeButton</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/AutograderInput_removeCategory.html\" title=\"class in stanford.spl\">AutograderInput_removeCategory</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/AutograderInput_setColumns.html\" title=\"class in stanford.spl\">AutograderInput_setColumns</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/AutograderInput_setVisible.html\" title=\"class in stanford.spl\">AutograderInput_setVisible</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/AutograderUnitTest_addTest.html\" title=\"class in stanford.spl\">AutograderUnitTest_addTest</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/AutograderUnitTest_catchExceptions.html\" title=\"class in stanford.spl\">AutograderUnitTest_catchExceptions</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/AutograderUnitTest_clearTestResults.html\" title=\"class in stanford.spl\">AutograderUnitTest_clearTestResults</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/AutograderUnitTest_clearTests.html\" title=\"class in stanford.spl\">AutograderUnitTest_clearTests</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/AutograderUnitTest_isChecked.html\" title=\"class in stanford.spl\">AutograderUnitTest_isChecked</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/AutograderUnitTest_setChecked.html\" title=\"class in stanford.spl\">AutograderUnitTest_setChecked</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/AutograderUnitTest_setTestCounts.html\" title=\"class in stanford.spl\">AutograderUnitTest_setTestCounts</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/AutograderUnitTest_setTestDetails.html\" title=\"class in stanford.spl\">AutograderUnitTest_setTestDetails</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/AutograderUnitTest_setTestingCompleted.html\" title=\"class in stanford.spl\">AutograderUnitTest_setTestingCompleted</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/AutograderUnitTest_setTestResult.html\" title=\"class in stanford.spl\">AutograderUnitTest_setTestResult</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/AutograderUnitTest_setTestRuntime.html\" title=\"class in stanford.spl\">AutograderUnitTest_setTestRuntime</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/AutograderUnitTest_setVisible.html\" title=\"class in stanford.spl\">AutograderUnitTest_setVisible</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/AutograderUnitTest_setWindowDescriptionText.html\" title=\"class in stanford.spl\">AutograderUnitTest_setWindowDescriptionText</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/AutograderUnitTestGUI.html\" title=\"class in stanford.spl\">AutograderUnitTestGUI</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/Base64.html\" title=\"class in stanford.spl\">Base64</a></td>\n<td class=\"colLast\">\n<div class=\"block\">Encodes and decodes to and from Base64 notation.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/Base64.InputStream.html\" title=\"class in stanford.spl\">Base64.InputStream</a></td>\n<td class=\"colLast\">\n<div class=\"block\">A <a href=\"../../stanford/spl/Base64.InputStream.html\" title=\"class in stanford.spl\"><code>Base64.InputStream</code></a> will read data from another\n <tt>java.io.InputStream</tt>, given in the constructor,\n and encode/decode to/from Base64 notation on the fly.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/Base64.OutputStream.html\" title=\"class in stanford.spl\">Base64.OutputStream</a></td>\n<td class=\"colLast\">\n<div class=\"block\">A <a href=\"../../stanford/spl/Base64.OutputStream.html\" title=\"class in stanford.spl\"><code>Base64.OutputStream</code></a> will write data to another\n <tt>java.io.OutputStream</tt>, given in the constructor,\n and encode/decode to/from Base64 notation on the fly.</div>\n</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/Clipboard_get.html\" title=\"class in stanford.spl\">Clipboard_get</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/Clipboard_set.html\" title=\"class in stanford.spl\">Clipboard_set</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/DiffImage_compareImages.html\" title=\"class in stanford.spl\">DiffImage_compareImages</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/DiffImage_compareWindowToImage.html\" title=\"class in stanford.spl\">DiffImage_compareWindowToImage</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/DiffImage_show.html\" title=\"class in stanford.spl\">DiffImage_show</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/File_getTempDirectory.html\" title=\"class in stanford.spl\">File_getTempDirectory</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/File_openFileDialog.html\" title=\"class in stanford.spl\">File_openFileDialog</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GBufferedImage.html\" title=\"class in stanford.spl\">GBufferedImage</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GBufferedImage_create.html\" title=\"class in stanford.spl\">GBufferedImage_create</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GBufferedImage_fill.html\" title=\"class in stanford.spl\">GBufferedImage_fill</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GBufferedImage_fillRegion.html\" title=\"class in stanford.spl\">GBufferedImage_fillRegion</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GBufferedImage_load.html\" title=\"class in stanford.spl\">GBufferedImage_load</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GBufferedImage_resize.html\" title=\"class in stanford.spl\">GBufferedImage_resize</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GBufferedImage_save.html\" title=\"class in stanford.spl\">GBufferedImage_save</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GBufferedImage_setRGB.html\" title=\"class in stanford.spl\">GBufferedImage_setRGB</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GBufferedImage_updateAllPixels.html\" title=\"class in stanford.spl\">GBufferedImage_updateAllPixels</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GCompound_add.html\" title=\"class in stanford.spl\">GCompound_add</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GFileChooser_showOpenDialog.html\" title=\"class in stanford.spl\">GFileChooser_showOpenDialog</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GFileChooser_showOpenDialog.GFileChooserFileFilter.html\" title=\"class in stanford.spl\">GFileChooser_showOpenDialog.GFileChooserFileFilter</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GFileChooser_showSaveDialog.html\" title=\"class in stanford.spl\">GFileChooser_showSaveDialog</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GInteractor.html\" title=\"class in stanford.spl\">GInteractor</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GInteractor_addActionListener.html\" title=\"class in stanford.spl\">GInteractor_addActionListener</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GInteractor_getAccelerator.html\" title=\"class in stanford.spl\">GInteractor_getAccelerator</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GInteractor_getFont.html\" title=\"class in stanford.spl\">GInteractor_getFont</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GInteractor_getMnemonic.html\" title=\"class in stanford.spl\">GInteractor_getMnemonic</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GInteractor_isEnabled.html\" title=\"class in stanford.spl\">GInteractor_isEnabled</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GInteractor_removeActionListener.html\" title=\"class in stanford.spl\">GInteractor_removeActionListener</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GInteractor_requestFocus.html\" title=\"class in stanford.spl\">GInteractor_requestFocus</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GInteractor_setAccelerator.html\" title=\"class in stanford.spl\">GInteractor_setAccelerator</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GInteractor_setBackground.html\" title=\"class in stanford.spl\">GInteractor_setBackground</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GInteractor_setEnabled.html\" title=\"class in stanford.spl\">GInteractor_setEnabled</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GInteractor_setFont.html\" title=\"class in stanford.spl\">GInteractor_setFont</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GInteractor_setIcon.html\" title=\"class in stanford.spl\">GInteractor_setIcon</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GInteractor_setMnemonic.html\" title=\"class in stanford.spl\">GInteractor_setMnemonic</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GInteractor_setText.html\" title=\"class in stanford.spl\">GInteractor_setText</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GInteractor_setTextPosition.html\" title=\"class in stanford.spl\">GInteractor_setTextPosition</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GInteractor_setTooltip.html\" title=\"class in stanford.spl\">GInteractor_setTooltip</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GObject_remove.html\" title=\"class in stanford.spl\">GObject_remove</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GObject_setAntialiasing.html\" title=\"class in stanford.spl\">GObject_setAntialiasing</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GOptionPane_showConfirmDialog.html\" title=\"class in stanford.spl\">GOptionPane_showConfirmDialog</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GOptionPane_showInputDialog.html\" title=\"class in stanford.spl\">GOptionPane_showInputDialog</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GOptionPane_showMessageDialog.html\" title=\"class in stanford.spl\">GOptionPane_showMessageDialog</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GOptionPane_showOptionDialog.html\" title=\"class in stanford.spl\">GOptionPane_showOptionDialog</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GOptionPane_showTextFileDialog.html\" title=\"class in stanford.spl\">GOptionPane_showTextFileDialog</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GRadioButton.html\" title=\"class in stanford.spl\">GRadioButton</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GRadioButton_create.html\" title=\"class in stanford.spl\">GRadioButton_create</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GRadioButton_isSelected.html\" title=\"class in stanford.spl\">GRadioButton_isSelected</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GRadioButton_setSelected.html\" title=\"class in stanford.spl\">GRadioButton_setSelected</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GSlider.html\" title=\"class in stanford.spl\">GSlider</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GSlider_getMajorTickSpacing.html\" title=\"class in stanford.spl\">GSlider_getMajorTickSpacing</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GSlider_getMinorTickSpacing.html\" title=\"class in stanford.spl\">GSlider_getMinorTickSpacing</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GSlider_getPaintLabels.html\" title=\"class in stanford.spl\">GSlider_getPaintLabels</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GSlider_getPaintTicks.html\" title=\"class in stanford.spl\">GSlider_getPaintTicks</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GSlider_getSnapToTicks.html\" title=\"class in stanford.spl\">GSlider_getSnapToTicks</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GSlider_setMajorTickSpacing.html\" title=\"class in stanford.spl\">GSlider_setMajorTickSpacing</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GSlider_setMinorTickSpacing.html\" title=\"class in stanford.spl\">GSlider_setMinorTickSpacing</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GSlider_setPaintLabels.html\" title=\"class in stanford.spl\">GSlider_setPaintLabels</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GSlider_setPaintTicks.html\" title=\"class in stanford.spl\">GSlider_setPaintTicks</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GSlider_setSnapToTicks.html\" title=\"class in stanford.spl\">GSlider_setSnapToTicks</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTable.html\" title=\"class in stanford.spl\">GTable</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTable_autofitColumnWidths.html\" title=\"class in stanford.spl\">GTable_autofitColumnWidths</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTable_clear.html\" title=\"class in stanford.spl\">GTable_clear</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTable_clearFormatting.html\" title=\"class in stanford.spl\">GTable_clearFormatting</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTable_create.html\" title=\"class in stanford.spl\">GTable_create</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTable_get.html\" title=\"class in stanford.spl\">GTable_get</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTable_getColumnWidth.html\" title=\"class in stanford.spl\">GTable_getColumnWidth</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTable_getSelection.html\" title=\"class in stanford.spl\">GTable_getSelection</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTable_resize.html\" title=\"class in stanford.spl\">GTable_resize</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTable_select.html\" title=\"class in stanford.spl\">GTable_select</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTable_set.html\" title=\"class in stanford.spl\">GTable_set</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTable_setCellAlignment.html\" title=\"class in stanford.spl\">GTable_setCellAlignment</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTable_setCellBackground.html\" title=\"class in stanford.spl\">GTable_setCellBackground</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTable_setCellFont.html\" title=\"class in stanford.spl\">GTable_setCellFont</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTable_setCellForeground.html\" title=\"class in stanford.spl\">GTable_setCellForeground</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTable_setColumnAlignment.html\" title=\"class in stanford.spl\">GTable_setColumnAlignment</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTable_setColumnBackground.html\" title=\"class in stanford.spl\">GTable_setColumnBackground</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTable_setColumnFont.html\" title=\"class in stanford.spl\">GTable_setColumnFont</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTable_setColumnForeground.html\" title=\"class in stanford.spl\">GTable_setColumnForeground</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTable_setColumnHeaderStyle.html\" title=\"class in stanford.spl\">GTable_setColumnHeaderStyle</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTable_setColumnWidth.html\" title=\"class in stanford.spl\">GTable_setColumnWidth</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTable_setEditable.html\" title=\"class in stanford.spl\">GTable_setEditable</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTable_setEditorValue.html\" title=\"class in stanford.spl\">GTable_setEditorValue</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTable_setEventEnabled.html\" title=\"class in stanford.spl\">GTable_setEventEnabled</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTable_setFont.html\" title=\"class in stanford.spl\">GTable_setFont</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTable_setHorizontalAlignment.html\" title=\"class in stanford.spl\">GTable_setHorizontalAlignment</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTable_setRowAlignment.html\" title=\"class in stanford.spl\">GTable_setRowAlignment</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTable_setRowBackground.html\" title=\"class in stanford.spl\">GTable_setRowBackground</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTable_setRowColumnHeadersVisible.html\" title=\"class in stanford.spl\">GTable_setRowColumnHeadersVisible</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTable_setRowFont.html\" title=\"class in stanford.spl\">GTable_setRowFont</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTable_setRowForeground.html\" title=\"class in stanford.spl\">GTable_setRowForeground</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTableAdapter.html\" title=\"class in stanford.spl\">GTableAdapter</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTableEvent.html\" title=\"class in stanford.spl\">GTableEvent</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTextArea.html\" title=\"class in stanford.spl\">GTextArea</a></td>\n<td class=\"colLast\">\n<div class=\"block\">The <code>GTextArea</code> class is a graphical object whose appearance\n consists of a rectangular area that can display text.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTextArea_create.html\" title=\"class in stanford.spl\">GTextArea_create</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTextArea_getText.html\" title=\"class in stanford.spl\">GTextArea_getText</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTextArea_setEditable.html\" title=\"class in stanford.spl\">GTextArea_setEditable</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTextArea_setFont.html\" title=\"class in stanford.spl\">GTextArea_setFont</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTextArea_setText.html\" title=\"class in stanford.spl\">GTextArea_setText</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTextField.html\" title=\"class in stanford.spl\">GTextField</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTextField_isEditable.html\" title=\"class in stanford.spl\">GTextField_isEditable</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTextField_setEditable.html\" title=\"class in stanford.spl\">GTextField_setEditable</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GTextField_setPlaceholder.html\" title=\"class in stanford.spl\">GTextField_setPlaceholder</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GWindow_clearCanvas.html\" title=\"class in stanford.spl\">GWindow_clearCanvas</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GWindow_close.html\" title=\"class in stanford.spl\">GWindow_close</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GWindow_create.html\" title=\"class in stanford.spl\">GWindow_create</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GWindow_drawInBackground.html\" title=\"class in stanford.spl\">GWindow_drawInBackground</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GWindow_getCanvasSize.html\" title=\"class in stanford.spl\">GWindow_getCanvasSize</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GWindow_getContentPaneSize.html\" title=\"class in stanford.spl\">GWindow_getContentPaneSize</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GWindow_getLocation.html\" title=\"class in stanford.spl\">GWindow_getLocation</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GWindow_getPixel.html\" title=\"class in stanford.spl\">GWindow_getPixel</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GWindow_getPixels.html\" title=\"class in stanford.spl\">GWindow_getPixels</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GWindow_getRegionSize.html\" title=\"class in stanford.spl\">GWindow_getRegionSize</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GWindow_getScreenSize.html\" title=\"class in stanford.spl\">GWindow_getScreenSize</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GWindow_getSize.html\" title=\"class in stanford.spl\">GWindow_getSize</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GWindow_minimize.html\" title=\"class in stanford.spl\">GWindow_minimize</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GWindow_pack.html\" title=\"class in stanford.spl\">GWindow_pack</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GWindow_removeFromRegion.html\" title=\"class in stanford.spl\">GWindow_removeFromRegion</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GWindow_saveCanvasPixels.html\" title=\"class in stanford.spl\">GWindow_saveCanvasPixels</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GWindow_setCanvasSize.html\" title=\"class in stanford.spl\">GWindow_setCanvasSize</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GWindow_setCloseOperation.html\" title=\"class in stanford.spl\">GWindow_setCloseOperation</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GWindow_setExitOnClose.html\" title=\"class in stanford.spl\">GWindow_setExitOnClose</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GWindow_setLocation.html\" title=\"class in stanford.spl\">GWindow_setLocation</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GWindow_setLocationSaved.html\" title=\"class in stanford.spl\">GWindow_setLocationSaved</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GWindow_setPixel.html\" title=\"class in stanford.spl\">GWindow_setPixel</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GWindow_setPixels.html\" title=\"class in stanford.spl\">GWindow_setPixels</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GWindow_setRegionSize.html\" title=\"class in stanford.spl\">GWindow_setRegionSize</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GWindow_setResizable.html\" title=\"class in stanford.spl\">GWindow_setResizable</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GWindow_setSize.html\" title=\"class in stanford.spl\">GWindow_setSize</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GWindow_toBack.html\" title=\"class in stanford.spl\">GWindow_toBack</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/GWindow_toFront.html\" title=\"class in stanford.spl\">GWindow_toFront</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/HttpServer_sendResponse.html\" title=\"class in stanford.spl\">HttpServer_sendResponse</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/HttpServer_sendResponseFile.html\" title=\"class in stanford.spl\">HttpServer_sendResponseFile</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/HttpServer_start.html\" title=\"class in stanford.spl\">HttpServer_start</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/HttpServer_stop.html\" title=\"class in stanford.spl\">HttpServer_stop</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\">JavaBackEnd</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/JBECanvas.html\" title=\"class in stanford.spl\">JBECanvas</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\">JBECommand</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/JBEConsole_minimize.html\" title=\"class in stanford.spl\">JBEConsole_minimize</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/JBEConsole_print.html\" title=\"class in stanford.spl\">JBEConsole_print</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/JBEConsole_setCloseOperation.html\" title=\"class in stanford.spl\">JBEConsole_setCloseOperation</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/JBEConsole_setErrorColor.html\" title=\"class in stanford.spl\">JBEConsole_setErrorColor</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/JBEConsole_setExitOnClose.html\" title=\"class in stanford.spl\">JBEConsole_setExitOnClose</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/JBEConsole_setLocation.html\" title=\"class in stanford.spl\">JBEConsole_setLocation</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/JBEConsole_setLocationSaved.html\" title=\"class in stanford.spl\">JBEConsole_setLocationSaved</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/JBEConsole_setOutputColor.html\" title=\"class in stanford.spl\">JBEConsole_setOutputColor</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/JBEConsole_setTitle.html\" title=\"class in stanford.spl\">JBEConsole_setTitle</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/JBEConsole_setVisible.html\" title=\"class in stanford.spl\">JBEConsole_setVisible</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/JBEConsole_toFront.html\" title=\"class in stanford.spl\">JBEConsole_toFront</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/JBEDummyProgram.html\" title=\"class in stanford.spl\">JBEDummyProgram</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/JBEFileFilter.html\" title=\"class in stanford.spl\">JBEFileFilter</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/JBELabel.html\" title=\"class in stanford.spl\">JBELabel</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/JBEMenuBar.html\" title=\"class in stanford.spl\">JBEMenuBar</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\">JBESwingCommand</a></td>\n<td class=\"colLast\">\n<div class=\"block\">A JBECommand that should be run on the Swing event thread.</div>\n</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/JBEWindow.html\" title=\"class in stanford.spl\">JBEWindow</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/LibraryUpdater.html\" title=\"class in stanford.spl\">LibraryUpdater</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/Note_play.html\" title=\"class in stanford.spl\">Note_play</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/Regex_match.html\" title=\"class in stanford.spl\">Regex_match</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/Regex_matchCount.html\" title=\"class in stanford.spl\">Regex_matchCount</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/Regex_matchCountWithLines.html\" title=\"class in stanford.spl\">Regex_matchCountWithLines</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/Regex_replace.html\" title=\"class in stanford.spl\">Regex_replace</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/SplPipeDecoder.html\" title=\"class in stanford.spl\">SplPipeDecoder</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/SPLWindowSettings.html\" title=\"class in stanford.spl\">SPLWindowSettings</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/StanfordCppLib_getJbeVersion.html\" title=\"class in stanford.spl\">StanfordCppLib_getJbeVersion</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/StanfordCppLib_setCppVersion.html\" title=\"class in stanford.spl\">StanfordCppLib_setCppVersion</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/TextFileDialog.html\" title=\"class in stanford.spl\">TextFileDialog</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/URL_download.html\" title=\"class in stanford.spl\">URL_download</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"altColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/UrlDownloader.html\" title=\"class in stanford.spl\">UrlDownloader</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n<tr class=\"rowColor\">\n<td class=\"colFirst\"><a href=\"../../stanford/spl/Version.html\" title=\"class in stanford.spl\">Version</a></td>\n<td class=\"colLast\">&nbsp;</td>\n</tr>\n</tbody>\n</table>\n</li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li class=\"navBarCell1Rev\">Package</li>\n<li>Class</li>\n<li><a href=\"package-tree.html\">Tree</a></li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/karel/package-summary.html\">Prev&nbsp;Package</a></li>\n<li>Next&nbsp;Package</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/package-summary.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-summary.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stanford/spl/package-tree.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!-- NewPage -->\n<html lang=\"en\">\n<head>\n<!-- Generated by javadoc (1.8.0_71) on Fri Jun 02 22:31:36 PDT 2017 -->\n<title>stanford.spl Class Hierarchy</title>\n<meta name=\"date\" content=\"2017-06-02\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../stylesheet.css\" title=\"Style\">\n<script type=\"text/javascript\" src=\"../../script.js\"></script>\n</head>\n<body>\n<script type=\"text/javascript\"><!--\n    try {\n        if (location.href.indexOf('is-external=true') == -1) {\n            parent.document.title=\"stanford.spl Class Hierarchy\";\n        }\n    }\n    catch(err) {\n    }\n//-->\n</script>\n<noscript>\n<div>JavaScript is disabled on your browser.</div>\n</noscript>\n<!-- ========= START OF TOP NAVBAR ======= -->\n<div class=\"topNav\"><a name=\"navbar.top\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.top\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.top.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/karel/package-tree.html\">Prev</a></li>\n<li>Next</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/package-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_top\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_top\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.top\">\n<!--   -->\n</a></div>\n<!-- ========= END OF TOP NAVBAR ========= -->\n<div class=\"header\">\n<h1 class=\"title\">Hierarchy For Package stanford.spl</h1>\n<span class=\"packageHierarchyLabel\">Package Hierarchies:</span>\n<ul class=\"horizontal\">\n<li><a href=\"../../overview-tree.html\">All Packages</a></li>\n</ul>\n</div>\n<div class=\"contentContainer\">\n<h2 title=\"Class Hierarchy\">Class Hierarchy</h2>\n<ul>\n<li type=\"circle\">java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\"><span class=\"typeNameLink\">Object</span></a>\n<ul>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/Base64.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Base64</span></a></li>\n<li type=\"circle\">java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html?is-external=true\" title=\"class or interface in java.awt\"><span class=\"typeNameLink\">Component</span></a> (implements java.awt.image.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/image/ImageObserver.html?is-external=true\" title=\"class or interface in java.awt.image\">ImageObserver</a>, java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>, java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Container.html?is-external=true\" title=\"class or interface in java.awt\"><span class=\"typeNameLink\">Container</span></a>\n<ul>\n<li type=\"circle\">javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html?is-external=true\" title=\"class or interface in javax.swing\"><span class=\"typeNameLink\">JComponent</span></a> (implements java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">acm.graphics.<a href=\"../../acm/graphics/GCanvas.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">GCanvas</span></a> (implements acm.graphics.<a href=\"../../acm/graphics/GCanvasInterface.html\" title=\"interface in acm.graphics\">GCanvasInterface</a>, acm.graphics.<a href=\"../../acm/graphics/GContainer.html\" title=\"interface in acm.graphics\">GContainer</a>, java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;T&gt;)\n<ul>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/JBECanvas.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">JBECanvas</span></a></li>\n</ul>\n</li>\n<li type=\"circle\">javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html?is-external=true\" title=\"class or interface in javax.swing\"><span class=\"typeNameLink\">JMenuBar</span></a> (implements javax.accessibility.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/MenuElement.html?is-external=true\" title=\"class or interface in javax.swing\">MenuElement</a>)\n<ul>\n<li type=\"circle\">acm.program.<a href=\"../../acm/program/ProgramMenuBar.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">ProgramMenuBar</span></a> (implements java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true\" title=\"class or interface in java.lang\">Iterable</a>&lt;T&gt;)\n<ul>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/JBEMenuBar.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">JBEMenuBar</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li type=\"circle\">java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Panel.html?is-external=true\" title=\"class or interface in java.awt\"><span class=\"typeNameLink\">Panel</span></a> (implements javax.accessibility.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>)\n<ul>\n<li type=\"circle\">java.applet.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html?is-external=true\" title=\"class or interface in java.applet\"><span class=\"typeNameLink\">Applet</span></a>\n<ul>\n<li type=\"circle\">javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JApplet.html?is-external=true\" title=\"class or interface in javax.swing\"><span class=\"typeNameLink\">JApplet</span></a> (implements javax.accessibility.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/RootPaneContainer.html?is-external=true\" title=\"class or interface in javax.swing\">RootPaneContainer</a>)\n<ul>\n<li type=\"circle\">acm.program.<a href=\"../../acm/program/Program.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">Program</span></a> (implements java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/AdjustmentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">AdjustmentListener</a>, javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ContainerListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ContainerListener</a>, javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/DocumentListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">DocumentListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/FocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">FocusListener</a>, acm.io.IOModel, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ItemListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ItemListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>, javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListDataListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListDataListener</a>, javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ListSelectionListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ListSelectionListener</a>, javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/MouseInputListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">MouseInputListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseWheelListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseWheelListener</a>, javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/PopupMenuListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">PopupMenuListener</a>, acm.program.<a href=\"../../acm/program/ProgramInterface.html\" title=\"interface in acm.program\">ProgramInterface</a>, java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true\" title=\"class or interface in java.lang\">Runnable</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/TextListener.html?is-external=true\" title=\"class or interface in java.awt.event\">TextListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowFocusListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowFocusListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowStateListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowStateListener</a>)\n<ul>\n<li type=\"circle\">acm.program.<a href=\"../../acm/program/AbstractConsoleProgram.html\" title=\"class in acm.program\"><span class=\"typeNameLink\">AbstractConsoleProgram</span></a>\n<ul>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/JBEDummyProgram.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">JBEDummyProgram</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li type=\"circle\">java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html?is-external=true\" title=\"class or interface in java.awt\"><span class=\"typeNameLink\">Window</span></a> (implements javax.accessibility.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>)\n<ul>\n<li type=\"circle\">java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Dialog.html?is-external=true\" title=\"class or interface in java.awt\"><span class=\"typeNameLink\">Dialog</span></a>\n<ul>\n<li type=\"circle\">javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JDialog.html?is-external=true\" title=\"class or interface in javax.swing\"><span class=\"typeNameLink\">JDialog</span></a> (implements javax.accessibility.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/RootPaneContainer.html?is-external=true\" title=\"class or interface in javax.swing\">RootPaneContainer</a>, javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/WindowConstants.html?is-external=true\" title=\"class or interface in javax.swing\">WindowConstants</a>)\n<ul>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/TextFileDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">TextFileDialog</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li type=\"circle\">java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html?is-external=true\" title=\"class or interface in java.awt\"><span class=\"typeNameLink\">Frame</span></a> (implements java.awt.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/MenuContainer.html?is-external=true\" title=\"class or interface in java.awt\">MenuContainer</a>)\n<ul>\n<li type=\"circle\">javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html?is-external=true\" title=\"class or interface in javax.swing\"><span class=\"typeNameLink\">JFrame</span></a> (implements javax.accessibility.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/accessibility/Accessible.html?is-external=true\" title=\"class or interface in javax.accessibility\">Accessible</a>, javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/RootPaneContainer.html?is-external=true\" title=\"class or interface in javax.swing\">RootPaneContainer</a>, javax.swing.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/WindowConstants.html?is-external=true\" title=\"class or interface in javax.swing\">WindowConstants</a>)\n<ul>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/JBEWindow.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">JBEWindow</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li type=\"circle\">javax.swing.filechooser.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/filechooser/FileFilter.html?is-external=true\" title=\"class or interface in javax.swing.filechooser\"><span class=\"typeNameLink\">FileFilter</span></a>\n<ul>\n<li type=\"circle\">acm.util.<a href=\"../../acm/util/FileChooserFilter.html\" title=\"class in acm.util\"><span class=\"typeNameLink\">FileChooserFilter</span></a>\n<ul>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/JBEFileFilter.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">JBEFileFilter</span></a></li>\n</ul>\n</li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GFileChooser_showOpenDialog.GFileChooserFileFilter.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GFileChooser_showOpenDialog.GFileChooserFileFilter</span></a></li>\n</ul>\n</li>\n<li type=\"circle\">acm.graphics.<a href=\"../../acm/graphics/GObject.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">GObject</span></a> (implements java.lang.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true\" title=\"class or interface in java.lang\">Cloneable</a>, acm.graphics.<a href=\"../../acm/graphics/GScalable.html\" title=\"interface in acm.graphics\">GScalable</a>, java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true\" title=\"class or interface in java.io\">Serializable</a>)\n<ul>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GInteractor.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GInteractor</span></a> (implements acm.graphics.<a href=\"../../acm/graphics/GResizable.html\" title=\"interface in acm.graphics\">GResizable</a>)\n<ul>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GBufferedImage.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GBufferedImage</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GRadioButton.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GRadioButton</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GSlider.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GSlider</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTable.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTable</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTextArea.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTextArea</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTextField.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTextField</span></a></li>\n</ul>\n</li>\n<li type=\"circle\">acm.graphics.<a href=\"../../acm/graphics/GLabel.html\" title=\"class in acm.graphics\"><span class=\"typeNameLink\">GLabel</span></a>\n<ul>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/JBELabel.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">JBELabel</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTableAdapter.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTableAdapter</span></a> (implements stanford.spl.<a href=\"../../stanford/spl/GTableListener.html\" title=\"interface in stanford.spl\">GTableListener</a>)</li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTableEvent.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTableEvent</span></a></li>\n<li type=\"circle\">java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true\" title=\"class or interface in java.io\"><span class=\"typeNameLink\">InputStream</span></a> (implements java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true\" title=\"class or interface in java.io\">Closeable</a>)\n<ul>\n<li type=\"circle\">java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FilterInputStream.html?is-external=true\" title=\"class or interface in java.io\"><span class=\"typeNameLink\">FilterInputStream</span></a>\n<ul>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/Base64.InputStream.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Base64.InputStream</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/JavaBackEnd.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">JavaBackEnd</span></a> (implements java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, javax.swing.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html?is-external=true\" title=\"class or interface in javax.swing.event\">ChangeListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ComponentListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ComponentListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html?is-external=true\" title=\"class or interface in java.awt.event\">KeyListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseMotionListener</a>, java.util.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observer.html?is-external=true\" title=\"class or interface in java.util\">Observer</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a>)</li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/JBECommand.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">JBECommand</span></a>\n<ul>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/File_getTempDirectory.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">File_getTempDirectory</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/File_openFileDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">File_openFileDialog</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/HttpServer_sendResponse.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">HttpServer_sendResponse</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/HttpServer_sendResponseFile.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">HttpServer_sendResponseFile</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/HttpServer_start.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">HttpServer_start</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/HttpServer_stop.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">HttpServer_stop</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/JBEConsole_minimize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">JBEConsole_minimize</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/JBEConsole_print.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">JBEConsole_print</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/JBEConsole_setCloseOperation.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">JBEConsole_setCloseOperation</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/JBEConsole_setErrorColor.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">JBEConsole_setErrorColor</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/JBEConsole_setExitOnClose.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">JBEConsole_setExitOnClose</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/JBEConsole_setLocation.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">JBEConsole_setLocation</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/JBEConsole_setLocationSaved.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">JBEConsole_setLocationSaved</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/JBEConsole_setOutputColor.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">JBEConsole_setOutputColor</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/JBEConsole_setTitle.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">JBEConsole_setTitle</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/JBEConsole_setVisible.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">JBEConsole_setVisible</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/JBEConsole_toFront.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">JBEConsole_toFront</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/JBESwingCommand.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">JBESwingCommand</span></a>\n<ul>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/AutograderInput_addButton.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">AutograderInput_addButton</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/AutograderInput_addCategory.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">AutograderInput_addCategory</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/AutograderInput_removeButton.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">AutograderInput_removeButton</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/AutograderInput_removeCategory.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">AutograderInput_removeCategory</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/AutograderInput_setColumns.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">AutograderInput_setColumns</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/AutograderInput_setVisible.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">AutograderInput_setVisible</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/AutograderUnitTest_addTest.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">AutograderUnitTest_addTest</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/AutograderUnitTest_catchExceptions.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">AutograderUnitTest_catchExceptions</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/AutograderUnitTest_clearTestResults.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">AutograderUnitTest_clearTestResults</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/AutograderUnitTest_clearTests.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">AutograderUnitTest_clearTests</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/AutograderUnitTest_isChecked.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">AutograderUnitTest_isChecked</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/AutograderUnitTest_setChecked.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">AutograderUnitTest_setChecked</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/AutograderUnitTest_setTestCounts.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">AutograderUnitTest_setTestCounts</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/AutograderUnitTest_setTestDetails.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">AutograderUnitTest_setTestDetails</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/AutograderUnitTest_setTestingCompleted.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">AutograderUnitTest_setTestingCompleted</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/AutograderUnitTest_setTestResult.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">AutograderUnitTest_setTestResult</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/AutograderUnitTest_setTestRuntime.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">AutograderUnitTest_setTestRuntime</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/AutograderUnitTest_setVisible.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">AutograderUnitTest_setVisible</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/AutograderUnitTest_setWindowDescriptionText.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">AutograderUnitTest_setWindowDescriptionText</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/Clipboard_get.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Clipboard_get</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/Clipboard_set.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Clipboard_set</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/DiffImage_compareImages.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">DiffImage_compareImages</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/DiffImage_compareWindowToImage.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">DiffImage_compareWindowToImage</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/DiffImage_show.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">DiffImage_show</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GBufferedImage_create.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GBufferedImage_create</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GBufferedImage_fill.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GBufferedImage_fill</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GBufferedImage_fillRegion.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GBufferedImage_fillRegion</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GBufferedImage_load.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GBufferedImage_load</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GBufferedImage_resize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GBufferedImage_resize</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GBufferedImage_save.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GBufferedImage_save</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GBufferedImage_setRGB.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GBufferedImage_setRGB</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GBufferedImage_updateAllPixels.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GBufferedImage_updateAllPixels</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GCompound_add.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GCompound_add</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GFileChooser_showOpenDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GFileChooser_showOpenDialog</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GFileChooser_showSaveDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GFileChooser_showSaveDialog</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GInteractor_addActionListener.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GInteractor_addActionListener</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GInteractor_getAccelerator.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GInteractor_getAccelerator</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GInteractor_getFont.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GInteractor_getFont</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GInteractor_getMnemonic.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GInteractor_getMnemonic</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GInteractor_isEnabled.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GInteractor_isEnabled</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GInteractor_removeActionListener.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GInteractor_removeActionListener</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GInteractor_requestFocus.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GInteractor_requestFocus</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GInteractor_setAccelerator.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GInteractor_setAccelerator</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GInteractor_setBackground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GInteractor_setBackground</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GInteractor_setEnabled.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GInteractor_setEnabled</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GInteractor_setFont.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GInteractor_setFont</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GInteractor_setIcon.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GInteractor_setIcon</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GInteractor_setMnemonic.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GInteractor_setMnemonic</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GInteractor_setText.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GInteractor_setText</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GInteractor_setTextPosition.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GInteractor_setTextPosition</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GInteractor_setTooltip.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GInteractor_setTooltip</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GObject_remove.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GObject_remove</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GObject_setAntialiasing.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GObject_setAntialiasing</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GOptionPane_showConfirmDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GOptionPane_showConfirmDialog</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GOptionPane_showInputDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GOptionPane_showInputDialog</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GOptionPane_showMessageDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GOptionPane_showMessageDialog</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GOptionPane_showOptionDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GOptionPane_showOptionDialog</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GOptionPane_showTextFileDialog.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GOptionPane_showTextFileDialog</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GRadioButton_create.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GRadioButton_create</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GRadioButton_isSelected.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GRadioButton_isSelected</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GRadioButton_setSelected.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GRadioButton_setSelected</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GSlider_getMajorTickSpacing.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GSlider_getMajorTickSpacing</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GSlider_getMinorTickSpacing.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GSlider_getMinorTickSpacing</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GSlider_getPaintLabels.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GSlider_getPaintLabels</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GSlider_getPaintTicks.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GSlider_getPaintTicks</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GSlider_getSnapToTicks.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GSlider_getSnapToTicks</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GSlider_setMajorTickSpacing.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GSlider_setMajorTickSpacing</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GSlider_setMinorTickSpacing.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GSlider_setMinorTickSpacing</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GSlider_setPaintLabels.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GSlider_setPaintLabels</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GSlider_setPaintTicks.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GSlider_setPaintTicks</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GSlider_setSnapToTicks.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GSlider_setSnapToTicks</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTable_autofitColumnWidths.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTable_autofitColumnWidths</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTable_clear.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTable_clear</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTable_clearFormatting.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTable_clearFormatting</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTable_create.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTable_create</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTable_get.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTable_get</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTable_getColumnWidth.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTable_getColumnWidth</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTable_getSelection.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTable_getSelection</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTable_resize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTable_resize</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTable_select.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTable_select</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTable_set.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTable_set</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTable_setCellAlignment.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTable_setCellAlignment</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTable_setCellBackground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTable_setCellBackground</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTable_setCellFont.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTable_setCellFont</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTable_setCellForeground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTable_setCellForeground</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTable_setColumnAlignment.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTable_setColumnAlignment</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTable_setColumnBackground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTable_setColumnBackground</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTable_setColumnFont.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTable_setColumnFont</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTable_setColumnForeground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTable_setColumnForeground</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTable_setColumnHeaderStyle.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTable_setColumnHeaderStyle</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTable_setColumnWidth.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTable_setColumnWidth</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTable_setEditable.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTable_setEditable</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTable_setEditorValue.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTable_setEditorValue</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTable_setEventEnabled.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTable_setEventEnabled</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTable_setFont.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTable_setFont</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTable_setHorizontalAlignment.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTable_setHorizontalAlignment</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTable_setRowAlignment.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTable_setRowAlignment</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTable_setRowBackground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTable_setRowBackground</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTable_setRowColumnHeadersVisible.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTable_setRowColumnHeadersVisible</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTable_setRowFont.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTable_setRowFont</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTable_setRowForeground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTable_setRowForeground</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTextArea_create.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTextArea_create</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTextArea_getText.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTextArea_getText</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTextArea_setEditable.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTextArea_setEditable</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTextArea_setFont.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTextArea_setFont</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTextArea_setText.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTextArea_setText</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTextField_isEditable.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTextField_isEditable</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTextField_setEditable.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTextField_setEditable</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTextField_setPlaceholder.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GTextField_setPlaceholder</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GWindow_clearCanvas.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GWindow_clearCanvas</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GWindow_close.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GWindow_close</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GWindow_create.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GWindow_create</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GWindow_drawInBackground.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GWindow_drawInBackground</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GWindow_getCanvasSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GWindow_getCanvasSize</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GWindow_getContentPaneSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GWindow_getContentPaneSize</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GWindow_getLocation.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GWindow_getLocation</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GWindow_getPixel.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GWindow_getPixel</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GWindow_getPixels.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GWindow_getPixels</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GWindow_getRegionSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GWindow_getRegionSize</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GWindow_getScreenSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GWindow_getScreenSize</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GWindow_getSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GWindow_getSize</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GWindow_minimize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GWindow_minimize</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GWindow_pack.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GWindow_pack</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GWindow_removeFromRegion.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GWindow_removeFromRegion</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GWindow_saveCanvasPixels.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GWindow_saveCanvasPixels</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GWindow_setCanvasSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GWindow_setCanvasSize</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GWindow_setCloseOperation.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GWindow_setCloseOperation</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GWindow_setExitOnClose.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GWindow_setExitOnClose</span></a> (implements java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowListener.html?is-external=true\" title=\"class or interface in java.awt.event\">WindowListener</a>)</li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GWindow_setLocation.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GWindow_setLocation</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GWindow_setLocationSaved.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GWindow_setLocationSaved</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GWindow_setPixel.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GWindow_setPixel</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GWindow_setPixels.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GWindow_setPixels</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GWindow_setRegionSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GWindow_setRegionSize</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GWindow_setResizable.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GWindow_setResizable</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GWindow_setSize.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GWindow_setSize</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GWindow_toBack.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GWindow_toBack</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GWindow_toFront.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">GWindow_toFront</span></a></li>\n</ul>\n</li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/Note_play.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Note_play</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/Regex_match.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Regex_match</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/Regex_matchCount.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Regex_matchCount</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/Regex_matchCountWithLines.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Regex_matchCountWithLines</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/Regex_replace.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Regex_replace</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/StanfordCppLib_getJbeVersion.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">StanfordCppLib_getJbeVersion</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/StanfordCppLib_setCppVersion.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">StanfordCppLib_setCppVersion</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/URL_download.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">URL_download</span></a></li>\n</ul>\n</li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/LibraryUpdater.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">LibraryUpdater</span></a></li>\n<li type=\"circle\">java.util.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/util/Observable.html?is-external=true\" title=\"class or interface in java.util\"><span class=\"typeNameLink\">Observable</span></a>\n<ul>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/AutograderInput.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">AutograderInput</span></a> (implements java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>)</li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/AutograderUnitTestGUI.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">AutograderUnitTestGUI</span></a> (implements java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html?is-external=true\" title=\"class or interface in java.awt.event\">ActionListener</a>, stanford.cs106.junit.<a href=\"../../stanford/cs106/junit/JUnitListener.html\" title=\"interface in stanford.cs106.junit\">JUnitListener</a>, java.awt.event.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseListener.html?is-external=true\" title=\"class or interface in java.awt.event\">MouseListener</a>)</li>\n</ul>\n</li>\n<li type=\"circle\">java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true\" title=\"class or interface in java.io\"><span class=\"typeNameLink\">OutputStream</span></a> (implements java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true\" title=\"class or interface in java.io\">Closeable</a>, java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/Flushable.html?is-external=true\" title=\"class or interface in java.io\">Flushable</a>)\n<ul>\n<li type=\"circle\">java.io.<a href=\"https://docs.oracle.com/javase/8/docs/api/java/io/FilterOutputStream.html?is-external=true\" title=\"class or interface in java.io\"><span class=\"typeNameLink\">FilterOutputStream</span></a>\n<ul>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/Base64.OutputStream.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Base64.OutputStream</span></a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/SplPipeDecoder.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">SplPipeDecoder</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/SPLWindowSettings.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">SPLWindowSettings</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/UrlDownloader.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">UrlDownloader</span></a></li>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/Version.html\" title=\"class in stanford.spl\"><span class=\"typeNameLink\">Version</span></a></li>\n</ul>\n</li>\n</ul>\n<h2 title=\"Interface Hierarchy\">Interface Hierarchy</h2>\n<ul>\n<li type=\"circle\">stanford.spl.<a href=\"../../stanford/spl/GTableListener.html\" title=\"interface in stanford.spl\"><span class=\"typeNameLink\">GTableListener</span></a></li>\n</ul>\n</div>\n<!-- ======= START OF BOTTOM NAVBAR ====== -->\n<div class=\"bottomNav\"><a name=\"navbar.bottom\">\n<!--   -->\n</a>\n<div class=\"skipNav\"><a href=\"#skip.navbar.bottom\" title=\"Skip navigation links\">Skip navigation links</a></div>\n<a name=\"navbar.bottom.firstrow\">\n<!--   -->\n</a>\n<ul class=\"navList\" title=\"Navigation\">\n<li><a href=\"../../overview-summary.html\">Overview</a></li>\n<li><a href=\"package-summary.html\">Package</a></li>\n<li>Class</li>\n<li class=\"navBarCell1Rev\">Tree</li>\n<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n<li><a href=\"../../index-all.html\">Index</a></li>\n<li><a href=\"../../help-doc.html\">Help</a></li>\n</ul>\n</div>\n<div class=\"subNav\">\n<ul class=\"navList\">\n<li><a href=\"../../stanford/karel/package-tree.html\">Prev</a></li>\n<li>Next</li>\n</ul>\n<ul class=\"navList\">\n<li><a href=\"../../index.html?stanford/spl/package-tree.html\" target=\"_top\">Frames</a></li>\n<li><a href=\"package-tree.html\" target=\"_top\">No&nbsp;Frames</a></li>\n</ul>\n<ul class=\"navList\" id=\"allclasses_navbar_bottom\">\n<li><a href=\"../../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n</ul>\n<div>\n<script type=\"text/javascript\"><!--\n  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");\n  if(window==top) {\n    allClassesLink.style.display = \"block\";\n  }\n  else {\n    allClassesLink.style.display = \"none\";\n  }\n  //-->\n</script>\n</div>\n<a name=\"skip.navbar.bottom\">\n<!--   -->\n</a></div>\n<!-- ======== END OF BOTTOM NAVBAR ======= -->\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/doc/stylesheet.css",
    "content": "/* Javadoc style sheet */\n/*\nOverall document style\n*/\n\n@import url('resources/fonts/dejavu.css');\n\nbody {\n    background-color:#ffffff;\n    color:#353833;\n    font-family:'DejaVu Sans', Arial, Helvetica, sans-serif;\n    font-size:14px;\n    margin:0;\n}\na:link, a:visited {\n    text-decoration:none;\n    color:#4A6782;\n}\na:hover, a:focus {\n    text-decoration:none;\n    color:#bb7a2a;\n}\na:active {\n    text-decoration:none;\n    color:#4A6782;\n}\na[name] {\n    color:#353833;\n}\na[name]:hover {\n    text-decoration:none;\n    color:#353833;\n}\npre {\n    font-family:'DejaVu Sans Mono', monospace;\n    font-size:14px;\n}\nh1 {\n    font-size:20px;\n}\nh2 {\n    font-size:18px;\n}\nh3 {\n    font-size:16px;\n    font-style:italic;\n}\nh4 {\n    font-size:13px;\n}\nh5 {\n    font-size:12px;\n}\nh6 {\n    font-size:11px;\n}\nul {\n    list-style-type:disc;\n}\ncode, tt {\n    font-family:'DejaVu Sans Mono', monospace;\n    font-size:14px;\n    padding-top:4px;\n    margin-top:8px;\n    line-height:1.4em;\n}\ndt code {\n    font-family:'DejaVu Sans Mono', monospace;\n    font-size:14px;\n    padding-top:4px;\n}\ntable tr td dt code {\n    font-family:'DejaVu Sans Mono', monospace;\n    font-size:14px;\n    vertical-align:top;\n    padding-top:4px;\n}\nsup {\n    font-size:8px;\n}\n/*\nDocument title and Copyright styles\n*/\n.clear {\n    clear:both;\n    height:0px;\n    overflow:hidden;\n}\n.aboutLanguage {\n    float:right;\n    padding:0px 21px;\n    font-size:11px;\n    z-index:200;\n    margin-top:-9px;\n}\n.legalCopy {\n    margin-left:.5em;\n}\n.bar a, .bar a:link, .bar a:visited, .bar a:active {\n    color:#FFFFFF;\n    text-decoration:none;\n}\n.bar a:hover, .bar a:focus {\n    color:#bb7a2a;\n}\n.tab {\n    background-color:#0066FF;\n    color:#ffffff;\n    padding:8px;\n    width:5em;\n    font-weight:bold;\n}\n/*\nNavigation bar styles\n*/\n.bar {\n    background-color:#4D7A97;\n    color:#FFFFFF;\n    padding:.8em .5em .4em .8em;\n    height:auto;/*height:1.8em;*/\n    font-size:11px;\n    margin:0;\n}\n.topNav {\n    background-color:#4D7A97;\n    color:#FFFFFF;\n    float:left;\n    padding:0;\n    width:100%;\n    clear:right;\n    height:2.8em;\n    padding-top:10px;\n    overflow:hidden;\n    font-size:12px; \n}\n.bottomNav {\n    margin-top:10px;\n    background-color:#4D7A97;\n    color:#FFFFFF;\n    float:left;\n    padding:0;\n    width:100%;\n    clear:right;\n    height:2.8em;\n    padding-top:10px;\n    overflow:hidden;\n    font-size:12px;\n}\n.subNav {\n    background-color:#dee3e9;\n    float:left;\n    width:100%;\n    overflow:hidden;\n    font-size:12px;\n}\n.subNav div {\n    clear:left;\n    float:left;\n    padding:0 0 5px 6px;\n    text-transform:uppercase;\n}\nul.navList, ul.subNavList {\n    float:left;\n    margin:0 25px 0 0;\n    padding:0;\n}\nul.navList li{\n    list-style:none;\n    float:left;\n    padding: 5px 6px;\n    text-transform:uppercase;\n}\nul.subNavList li{\n    list-style:none;\n    float:left;\n}\n.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited {\n    color:#FFFFFF;\n    text-decoration:none;\n    text-transform:uppercase;\n}\n.topNav a:hover, .bottomNav a:hover {\n    text-decoration:none;\n    color:#bb7a2a;\n    text-transform:uppercase;\n}\n.navBarCell1Rev {\n    background-color:#F8981D;\n    color:#253441;\n    margin: auto 5px;\n}\n.skipNav {\n    position:absolute;\n    top:auto;\n    left:-9999px;\n    overflow:hidden;\n}\n/*\nPage header and footer styles\n*/\n.header, .footer {\n    clear:both;\n    margin:0 20px;\n    padding:5px 0 0 0;\n}\n.indexHeader {\n    margin:10px;\n    position:relative;\n}\n.indexHeader span{\n    margin-right:15px;\n}\n.indexHeader h1 {\n    font-size:13px;\n}\n.title {\n    color:#2c4557;\n    margin:10px 0;\n}\n.subTitle {\n    margin:5px 0 0 0;\n}\n.header ul {\n    margin:0 0 15px 0;\n    padding:0;\n}\n.footer ul {\n    margin:20px 0 5px 0;\n}\n.header ul li, .footer ul li {\n    list-style:none;\n    font-size:13px;\n}\n/*\nHeading styles\n*/\ndiv.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 {\n    background-color:#dee3e9;\n    border:1px solid #d0d9e0;\n    margin:0 0 6px -8px;\n    padding:7px 5px;\n}\nul.blockList ul.blockList ul.blockList li.blockList h3 {\n    background-color:#dee3e9;\n    border:1px solid #d0d9e0;\n    margin:0 0 6px -8px;\n    padding:7px 5px;\n}\nul.blockList ul.blockList li.blockList h3 {\n    padding:0;\n    margin:15px 0;\n}\nul.blockList li.blockList h2 {\n    padding:0px 0 20px 0;\n}\n/*\nPage layout container styles\n*/\n.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer {\n    clear:both;\n    padding:10px 20px;\n    position:relative;\n}\n.indexContainer {\n    margin:10px;\n    position:relative;\n    font-size:12px;\n}\n.indexContainer h2 {\n    font-size:13px;\n    padding:0 0 3px 0;\n}\n.indexContainer ul {\n    margin:0;\n    padding:0;\n}\n.indexContainer ul li {\n    list-style:none;\n    padding-top:2px;\n}\n.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt {\n    font-size:12px;\n    font-weight:bold;\n    margin:10px 0 0 0;\n    color:#4E4E4E;\n}\n.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd {\n    margin:5px 0 10px 0px;\n    font-size:14px;\n    font-family:'DejaVu Sans Mono',monospace;\n}\n.serializedFormContainer dl.nameValue dt {\n    margin-left:1px;\n    font-size:1.1em;\n    display:inline;\n    font-weight:bold;\n}\n.serializedFormContainer dl.nameValue dd {\n    margin:0 0 0 1px;\n    font-size:1.1em;\n    display:inline;\n}\n/*\nList styles\n*/\nul.horizontal li {\n    display:inline;\n    font-size:0.9em;\n}\nul.inheritance {\n    margin:0;\n    padding:0;\n}\nul.inheritance li {\n    display:inline;\n    list-style:none;\n}\nul.inheritance li ul.inheritance {\n    margin-left:15px;\n    padding-left:15px;\n    padding-top:1px;\n}\nul.blockList, ul.blockListLast {\n    margin:10px 0 10px 0;\n    padding:0;\n}\nul.blockList li.blockList, ul.blockListLast li.blockList {\n    list-style:none;\n    margin-bottom:15px;\n    line-height:1.4;\n}\nul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList {\n    padding:0px 20px 5px 10px;\n    border:1px solid #ededed; \n    background-color:#f8f8f8;\n}\nul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList {\n    padding:0 0 5px 8px;\n    background-color:#ffffff;\n    border:none;\n}\nul.blockList ul.blockList ul.blockList ul.blockList li.blockList {\n    margin-left:0;\n    padding-left:0;\n    padding-bottom:15px;\n    border:none;\n}\nul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast {\n    list-style:none;\n    border-bottom:none;\n    padding-bottom:0;\n}\ntable tr td dl, table tr td dl dt, table tr td dl dd {\n    margin-top:0;\n    margin-bottom:1px;\n}\n/*\nTable styles\n*/\n.overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary {\n    width:100%;\n    border-left:1px solid #EEE; \n    border-right:1px solid #EEE; \n    border-bottom:1px solid #EEE; \n}\n.overviewSummary, .memberSummary  {\n    padding:0px;\n}\n.overviewSummary caption, .memberSummary caption, .typeSummary caption,\n.useSummary caption, .constantsSummary caption, .deprecatedSummary caption {\n    position:relative;\n    text-align:left;\n    background-repeat:no-repeat;\n    color:#253441;\n    font-weight:bold;\n    clear:none;\n    overflow:hidden;\n    padding:0px;\n    padding-top:10px;\n    padding-left:1px;\n    margin:0px;\n    white-space:pre;\n}\n.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link,\n.useSummary caption a:link, .constantsSummary caption a:link, .deprecatedSummary caption a:link,\n.overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover,\n.useSummary caption a:hover, .constantsSummary caption a:hover, .deprecatedSummary caption a:hover,\n.overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active,\n.useSummary caption a:active, .constantsSummary caption a:active, .deprecatedSummary caption a:active,\n.overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited,\n.useSummary caption a:visited, .constantsSummary caption a:visited, .deprecatedSummary caption a:visited {\n    color:#FFFFFF;\n}\n.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span,\n.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span {\n    white-space:nowrap;\n    padding-top:5px;\n    padding-left:12px;\n    padding-right:12px;\n    padding-bottom:7px;\n    display:inline-block;\n    float:left;\n    background-color:#F8981D;\n    border: none;\n    height:16px;\n}\n.memberSummary caption span.activeTableTab span {\n    white-space:nowrap;\n    padding-top:5px;\n    padding-left:12px;\n    padding-right:12px;\n    margin-right:3px;\n    display:inline-block;\n    float:left;\n    background-color:#F8981D;\n    height:16px;\n}\n.memberSummary caption span.tableTab span {\n    white-space:nowrap;\n    padding-top:5px;\n    padding-left:12px;\n    padding-right:12px;\n    margin-right:3px;\n    display:inline-block;\n    float:left;\n    background-color:#4D7A97;\n    height:16px;\n}\n.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab {\n    padding-top:0px;\n    padding-left:0px;\n    padding-right:0px;\n    background-image:none;\n    float:none;\n    display:inline;\n}\n.overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd,\n.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd {\n    display:none;\n    width:5px;\n    position:relative;\n    float:left;\n    background-color:#F8981D;\n}\n.memberSummary .activeTableTab .tabEnd {\n    display:none;\n    width:5px;\n    margin-right:3px;\n    position:relative; \n    float:left;\n    background-color:#F8981D;\n}\n.memberSummary .tableTab .tabEnd {\n    display:none;\n    width:5px;\n    margin-right:3px;\n    position:relative;\n    background-color:#4D7A97;\n    float:left;\n\n}\n.overviewSummary td, .memberSummary td, .typeSummary td,\n.useSummary td, .constantsSummary td, .deprecatedSummary td {\n    text-align:left;\n    padding:0px 0px 12px 10px;\n}\nth.colOne, th.colFirst, th.colLast, .useSummary th, .constantsSummary th,\ntd.colOne, td.colFirst, td.colLast, .useSummary td, .constantsSummary td{\n    vertical-align:top;\n    padding-right:0px;\n    padding-top:8px;\n    padding-bottom:3px;\n}\nth.colFirst, th.colLast, th.colOne, .constantsSummary th {\n    background:#dee3e9;\n    text-align:left;\n    padding:8px 3px 3px 7px;\n}\ntd.colFirst, th.colFirst {\n    white-space:nowrap;\n    font-size:13px;\n}\ntd.colLast, th.colLast {\n    font-size:13px;\n}\ntd.colOne, th.colOne {\n    font-size:13px;\n}\n.overviewSummary td.colFirst, .overviewSummary th.colFirst,\n.useSummary td.colFirst, .useSummary th.colFirst,\n.overviewSummary td.colOne, .overviewSummary th.colOne,\n.memberSummary td.colFirst, .memberSummary th.colFirst,\n.memberSummary td.colOne, .memberSummary th.colOne,\n.typeSummary td.colFirst{\n    width:25%;\n    vertical-align:top;\n}\ntd.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover {\n    font-weight:bold;\n}\n.tableSubHeadingColor {\n    background-color:#EEEEFF;\n}\n.altColor {\n    background-color:#FFFFFF;\n}\n.rowColor {\n    background-color:#EEEEEF;\n}\n/*\nContent styles\n*/\n.description pre {\n    margin-top:0;\n}\n.deprecatedContent {\n    margin:0;\n    padding:10px 0;\n}\n.docSummary {\n    padding:0;\n}\n\nul.blockList ul.blockList ul.blockList li.blockList h3 {\n    font-style:normal;\n}\n\ndiv.block {\n    font-size:14px;\n    font-family:'DejaVu Serif', Georgia, \"Times New Roman\", Times, serif;\n}\n\ntd.colLast div {\n    padding-top:0px;\n}\n\n\ntd.colLast a {\n    padding-bottom:3px;\n}\n/*\nFormatting effect styles\n*/\n.sourceLineNo {\n    color:green;\n    padding:0 30px 0 0;\n}\nh1.hidden {\n    visibility:hidden;\n    overflow:hidden;\n    font-size:10px;\n}\n.block {\n    display:block;\n    margin:3px 10px 2px 0px;\n    color:#474747;\n}\n.deprecatedLabel, .descfrmTypeLabel, .memberNameLabel, .memberNameLink,\n.overrideSpecifyLabel, .packageHierarchyLabel, .paramLabel, .returnLabel,\n.seeLabel, .simpleTagLabel, .throwsLabel, .typeNameLabel, .typeNameLink {\n    font-weight:bold;\n}\n.deprecationComment, .emphasizedPhrase, .interfaceName {\n    font-style:italic;\n}\n\ndiv.block div.block span.deprecationComment, div.block div.block span.emphasizedPhrase,\ndiv.block div.block span.interfaceName {\n    font-style:normal;\n}\n\ndiv.contentContainer ul.blockList li.blockList h2{\n    padding-bottom:0px;\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/files.list",
    "content": "./src/acm/gui/DoubleField.java\n./src/acm/gui/JStringList.java\n./src/acm/gui/JButtonGroup.java\n./src/acm/gui/JPlaceholderTextField.java\n./src/acm/gui/JListOptionPane.java\n./src/acm/gui/JFontChooser.java\n./src/acm/gui/Event.java\n./src/acm/gui/IntField.java\n./src/acm/gui/TableLayout.java\n./src/acm/program/AppletStarter.java\n./src/acm/program/ProgramWindowListener.java\n./src/acm/program/ProgramFrame.java\n./src/acm/program/ConsoleProgram.java\n./src/acm/program/GProgramListener.java\n./src/acm/program/GObjectProgram.java\n./src/acm/program/ProgramStartupFlags.java\n./src/acm/program/DialogProgram.java\n./src/acm/program/GraphicsProgramInterface.java\n./src/acm/program/ProgramAppletStub.java\n./src/acm/program/HeadlessGraphicsProgram.java\n./src/acm/program/ProgramStartupListener.java\n./src/acm/program/ProgramInterface.java\n./src/acm/program/ProgramActionListener.java\n./src/acm/program/GraphicsProgram.java\n./src/acm/program/DefaultActionListener.java\n./src/acm/program/Program.java\n./src/acm/program/ProgramContentPaneLayout.java\n./src/acm/program/CommandLineProgram.java\n./src/acm/program/AbstractConsoleProgram.java\n./src/acm/program/AsciiArtProgram.java\n./src/acm/program/ProgramMenuBar.java\n./src/acm/util/RandomGenerator.java\n./src/acm/util/FileChooserFilter.java\n./src/acm/util/SoundClip.java\n./src/acm/util/ErrorException.java\n./src/acm/util/MediaTools.java\n./src/acm/util/PatchingClassLoader.java\n./src/acm/graphics/GImage.java\n./src/acm/graphics/GCompound.java\n./src/acm/graphics/GLine.java\n./src/acm/graphics/GResizable.java\n./src/acm/graphics/GContainer.java\n./src/acm/graphics/GMath.java\n./src/acm/graphics/GObjectList.java\n./src/acm/graphics/GOval.java\n./src/acm/graphics/GScalable.java\n./src/acm/graphics/GObject.java\n./src/acm/graphics/GIterator.java\n./src/acm/graphics/GLineGroup.java\n./src/acm/graphics/GCanvas.java\n./src/acm/graphics/GCanvasInterface.java\n./src/acm/graphics/GLabel.java\n./src/acm/graphics/GRectangle.java\n./src/acm/graphics/G3DRect.java\n./src/acm/graphics/GPoint.java\n./src/acm/io/IOConsole.java\n./src/acm/io/SimpleScanner.java\n./src/acm/io/StandardConsoleModel.java\n./src/acm/io/SystemConsoleModel.java\n./src/acm/io/ConsoleModel.java\n./src/javazoom/jlgui/basicplayer/BasicPlayerListener.java\n./src/javazoom/jlgui/basicplayer/BasicController.java\n./src/javazoom/jlgui/basicplayer/BasicPlayerEvent.java\n./src/javazoom/jlgui/basicplayer/BasicPlayerException.java\n./src/javazoom/jlgui/basicplayer/BasicPlayer.java\n./src/javazoom/jlgui/basicplayer/BasicPlayerEventLauncher.java\n./src/stanford/cs106/gui/WindowCloseKeyListener.java\n./src/stanford/cs106/gui/ListOptionPane.java\n./src/stanford/cs106/gui/ResizeListener.java\n./src/stanford/cs106/gui/JComboGroupBox.java\n./src/stanford/cs106/gui/ClipboardUtils.java\n./src/stanford/cs106/gui/GuiUtils.java\n./src/stanford/cs106/program/ProgramUtils.java\n./src/stanford/cs106/program/ResizableProgram.java\n./src/stanford/cs106/program/CommandLineProgramMarty.java\n./src/stanford/cs106/program/ConsoleProgramMarty.java\n./src/stanford/cs106/junit/JUnitListener.java\n./src/stanford/cs106/junit/TestCategory.java\n./src/stanford/cs106/junit/ComparisonFailureEnhanced.java\n./src/stanford/cs106/junit/UnitTestType.java\n./src/stanford/cs106/junit/Assert.java\n./src/stanford/cs106/junit/JUnitUtils.java\n./src/stanford/cs106/util/XmlUtils.java\n./src/stanford/cs106/util/StringUtils.java\n./src/stanford/cs106/util/RecursionUtils.java\n./src/stanford/cs106/util/CollectionUtils.java\n./src/stanford/cs106/util/RandomGenerator.java\n./src/stanford/cs106/util/SystemProperties.java\n./src/stanford/cs106/util/OperatingSystem.java\n./src/stanford/cs106/util/ProcessUtils.java\n./src/stanford/cs106/util/Stanford.java\n./src/stanford/cs106/util/ExceptionUtils.java\n./src/stanford/cs106/util/ConstantUtils.java\n./src/stanford/cs106/net/NetworkManager.java\n./src/stanford/cs106/net/BackEndServer.java\n./src/stanford/cs106/net/Request.java\n./src/stanford/cs106/net/SimpleServer.java\n./src/stanford/cs106/net/SimpleServerListener.java\n./src/stanford/cs106/net/Downloader.java\n./src/stanford/cs106/net/SimpleClient.java\n./src/stanford/cs106/autograder/GuidedAutograder.java\n./src/stanford/cs106/collections/Vertex.java\n./src/stanford/cs106/collections/Table.java\n./src/stanford/cs106/collections/HashBasedTable.java\n./src/stanford/cs106/collections/HashMultimap.java\n./src/stanford/cs106/collections/Grid.java\n./src/stanford/cs106/collections/Lexicon.java\n./src/stanford/cs106/collections/BasicGraph.java\n./src/stanford/cs106/collections/GraphColor.java\n./src/stanford/cs106/collections/Edge.java\n./src/stanford/cs106/collections/Multimap.java\n./src/stanford/cs106/collections/TreeBasedTable.java\n./src/stanford/cs106/collections/Graph.java\n./src/stanford/cs106/collections/SearchableGraph.java\n./src/stanford/cs106/collections/AbstractMultimap.java\n./src/stanford/cs106/collections/AbstractTable.java\n./src/stanford/cs106/collections/TreeMultimap.java\n./src/stanford/cs106/diff/DiffGui.java\n./src/stanford/cs106/diff/DiffCollection.java\n./src/stanford/cs106/diff/Diff.java\n./src/stanford/cs106/diff/DiffImage.java\n./src/stanford/cs106/audio/StdAudio.java\n./src/stanford/cs106/audio/Note.java\n./src/stanford/cs106/audio/Accidental.java\n./src/stanford/cs106/audio/SplClip.java\n./src/stanford/cs106/audio/Pitch.java\n./src/stanford/cs106/io/OutputCapturer.java\n./src/stanford/cs106/io/ResourceUtils.java\n./src/stanford/cs106/io/IOUtils.java\n./src/stanford/cs106/io/LimitedPrintStream.java\n./src/stanford/cs106/io/IORuntimeException.java\n./src/stanford/cs106/io/ReaderInputStream.java\n./src/stanford/cs106/io/ExtensionFileFilter.java\n./src/stanford/cs106/reflect/ReflectionRuntimeException.java\n./src/stanford/cs106/reflect/ReflectionUtils.java\n./src/stanford/cs106/reflect/ClassUtils.java\n./src/stanford/cs106/reflect/CompilerErrorException.java\n./src/stanford/spl/AutograderUnitTest_setWindowDescriptionText.java\n./src/stanford/spl/GInteractor_setAccelerator.java\n./src/stanford/spl/GWindow_setSize.java\n./src/stanford/spl/GTable_setHorizontalAlignment.java\n./src/stanford/spl/GTextArea.java\n./src/stanford/spl/HttpServer_sendResponseFile.java\n./src/stanford/spl/JBESwingCommand.java\n./src/stanford/spl/GWindow_close.java\n./src/stanford/spl/AutograderUnitTest_setVisible.java\n./src/stanford/spl/JBELabel.java\n./src/stanford/spl/AutograderUnitTest_addTest.java\n./src/stanford/spl/GTableListener.java\n./src/stanford/spl/GBufferedImage_load.java\n./src/stanford/spl/GWindow_getPixel.java\n./src/stanford/spl/GTable_setRowForeground.java\n./src/stanford/spl/GRadioButton_isSelected.java\n./src/stanford/spl/JBEConsole_toFront.java\n./src/stanford/spl/GBufferedImage_resize.java\n./src/stanford/spl/JBEConsole_setLocationSaved.java\n./src/stanford/spl/GWindow_create.java\n./src/stanford/spl/GTable_setEditable.java\n./src/stanford/spl/AutograderUnitTest_setTestingCompleted.java\n./src/stanford/spl/JBEConsole_setTitle.java\n./src/stanford/spl/AutograderInput_setVisible.java\n./src/stanford/spl/GTable_setCellForeground.java\n./src/stanford/spl/GWindow_getLocation.java\n./src/stanford/spl/GBufferedImage_save.java\n./src/stanford/spl/AutograderUnitTest_setTestCounts.java\n./src/stanford/spl/GTable_setColumnHeaderStyle.java\n./src/stanford/spl/JBEConsole_setVisible.java\n./src/stanford/spl/GWindow_setCanvasSize.java\n./src/stanford/spl/TextFileDialog.java\n./src/stanford/spl/GInteractor_setTooltip.java\n./src/stanford/spl/Note_play.java\n./src/stanford/spl/GBufferedImage_fillRegion.java\n./src/stanford/spl/GTable_create.java\n./src/stanford/spl/AutograderUnitTest_setTestDetails.java\n./src/stanford/spl/GWindow_setRegionSize.java\n./src/stanford/spl/GWindow_setLocation.java\n./src/stanford/spl/GRadioButton.java\n./src/stanford/spl/DiffImage_compareImages.java\n./src/stanford/spl/GTextField.java\n./src/stanford/spl/GOptionPane_showMessageDialog.java\n./src/stanford/spl/GTable_setRowColumnHeadersVisible.java\n./src/stanford/spl/GTable_setCellFont.java\n./src/stanford/spl/GSlider_getPaintTicks.java\n./src/stanford/spl/GOptionPane_showConfirmDialog.java\n./src/stanford/spl/GSlider_getMajorTickSpacing.java\n./src/stanford/spl/AutograderInput_setColumns.java\n./src/stanford/spl/JBEConsole_minimize.java\n./src/stanford/spl/AutograderInput_addCategory.java\n./src/stanford/spl/GInteractor_getAccelerator.java\n./src/stanford/spl/GInteractor_removeActionListener.java\n./src/stanford/spl/JBEConsole_setErrorColor.java\n./src/stanford/spl/AutograderInput_removeCategory.java\n./src/stanford/spl/JBEFileFilter.java\n./src/stanford/spl/GInteractor.java\n./src/stanford/spl/GInteractor_requestFocus.java\n./src/stanford/spl/GOptionPane_showOptionDialog.java\n./src/stanford/spl/JBEWindow.java\n./src/stanford/spl/GTable_clear.java\n./src/stanford/spl/GWindow_getContentPaneSize.java\n./src/stanford/spl/GInteractor_getMnemonic.java\n./src/stanford/spl/GInteractor_setFont.java\n./src/stanford/spl/DiffImage_compareWindowToImage.java\n./src/stanford/spl/Base64.java\n./src/stanford/spl/GTextArea_create.java\n./src/stanford/spl/GInteractor_setIcon.java\n./src/stanford/spl/GWindow_toFront.java\n./src/stanford/spl/JavaBackEnd.java\n./src/stanford/spl/GCompound_add.java\n./src/stanford/spl/GTextField_isEditable.java\n./src/stanford/spl/GWindow_setResizable.java\n./src/stanford/spl/GSlider_getSnapToTicks.java\n./src/stanford/spl/GObject_setAntialiasing.java\n./src/stanford/spl/GTable_setColumnWidth.java\n./src/stanford/spl/GWindow_removeFromRegion.java\n./src/stanford/spl/GInteractor_addActionListener.java\n./src/stanford/spl/GTextField_setPlaceholder.java\n./src/stanford/spl/GSlider_setPaintLabels.java\n./src/stanford/spl/GTextArea_setFont.java\n./src/stanford/spl/GRadioButton_setSelected.java\n./src/stanford/spl/AutograderUnitTest_clearTestResults.java\n./src/stanford/spl/AutograderUnitTest_setTestRuntime.java\n./src/stanford/spl/GTable_get.java\n./src/stanford/spl/GInteractor_getFont.java\n./src/stanford/spl/Regex_match.java\n./src/stanford/spl/AutograderUnitTest_isChecked.java\n./src/stanford/spl/GInteractor_setTextPosition.java\n./src/stanford/spl/File_getTempDirectory.java\n./src/stanford/spl/Regex_replace.java\n./src/stanford/spl/GTableEvent.java\n./src/stanford/spl/GWindow_getSize.java\n./src/stanford/spl/JBECommand.java\n./src/stanford/spl/File_openFileDialog.java\n./src/stanford/spl/GObject_remove.java\n./src/stanford/spl/GWindow_toBack.java\n./src/stanford/spl/GBufferedImage_create.java\n./src/stanford/spl/GTextArea_setEditable.java\n./src/stanford/spl/AutograderUnitTest_clearTests.java\n./src/stanford/spl/GWindow_getCanvasSize.java\n./src/stanford/spl/GSlider_setPaintTicks.java\n./src/stanford/spl/Version.java\n./src/stanford/spl/StanfordCppLib_getJbeVersion.java\n./src/stanford/spl/AutograderUnitTestGUI.java\n./src/stanford/spl/GBufferedImage.java\n./src/stanford/spl/GWindow_setExitOnClose.java\n./src/stanford/spl/GWindow_setPixels.java\n./src/stanford/spl/GInteractor_isEnabled.java\n./src/stanford/spl/AutograderUnitTest_setTestResult.java\n./src/stanford/spl/AutograderInput_addButton.java\n./src/stanford/spl/Regex_matchCountWithLines.java\n./src/stanford/spl/GWindow_setCloseOperation.java\n./src/stanford/spl/JBEMenuBar.java\n./src/stanford/spl/GTable_set.java\n./src/stanford/spl/JBEConsole_print.java\n./src/stanford/spl/GTextArea_setText.java\n./src/stanford/spl/GBufferedImage_fill.java\n./src/stanford/spl/GWindow_saveCanvasPixels.java\n./src/stanford/spl/GSlider_getPaintLabels.java\n./src/stanford/spl/GOptionPane_showInputDialog.java\n./src/stanford/spl/GTable_setRowAlignment.java\n./src/stanford/spl/Clipboard_get.java\n./src/stanford/spl/GTable_setCellAlignment.java\n./src/stanford/spl/URL_download.java\n./src/stanford/spl/AutograderUnitTest_setChecked.java\n./src/stanford/spl/SplPipeDecoder.java\n./src/stanford/spl/GTable_setRowFont.java\n./src/stanford/spl/JBEDummyProgram.java\n./src/stanford/spl/GWindow_setPixel.java\n./src/stanford/spl/GWindow_minimize.java\n./src/stanford/spl/HttpServer_stop.java\n./src/stanford/spl/AutograderInput_removeButton.java\n./src/stanford/spl/GWindow_getPixels.java\n./src/stanford/spl/JBECanvas.java\n./src/stanford/spl/GSlider_setMajorTickSpacing.java\n./src/stanford/spl/GInteractor_setBackground.java\n./src/stanford/spl/GInteractor_setMnemonic.java\n./src/stanford/spl/GWindow_drawInBackground.java\n./src/stanford/spl/GTable_getColumnWidth.java\n./src/stanford/spl/GWindow_getRegionSize.java\n./src/stanford/spl/GTextField_setEditable.java\n./src/stanford/spl/GSlider.java\n./src/stanford/spl/GFileChooser_showSaveDialog.java\n./src/stanford/spl/GWindow_getScreenSize.java\n./src/stanford/spl/GBufferedImage_updateAllPixels.java\n./src/stanford/spl/GWindow_clearCanvas.java\n./src/stanford/spl/GFileChooser_showOpenDialog.java\n./src/stanford/spl/GTable.java\n./src/stanford/spl/GTable_autofitColumnWidths.java\n./src/stanford/spl/Regex_matchCount.java\n./src/stanford/spl/GInteractor_setEnabled.java\n./src/stanford/spl/GTable_setColumnBackground.java\n./src/stanford/spl/GSlider_setSnapToTicks.java\n./src/stanford/spl/GTable_setColumnFont.java\n./src/stanford/spl/DiffImage_show.java\n./src/stanford/spl/GInteractor_setText.java\n./src/stanford/spl/GTable_setFont.java\n./src/stanford/spl/Clipboard_set.java\n./src/stanford/spl/GTable_clearFormatting.java\n./src/stanford/spl/SPLWindowSettings.java\n./src/stanford/spl/JBEConsole_setLocation.java\n./src/stanford/spl/HttpServer_start.java\n./src/stanford/spl/GWindow_pack.java\n./src/stanford/spl/GTable_resize.java\n./src/stanford/spl/JBEConsole_setCloseOperation.java\n./src/stanford/spl/JBEConsole_setOutputColor.java\n./src/stanford/spl/AutograderUnitTest_catchExceptions.java\n./src/stanford/spl/GTable_setEditorValue.java\n./src/stanford/spl/GTable_setEventEnabled.java\n./src/stanford/spl/GTable_getSelection.java\n./src/stanford/spl/GRadioButton_create.java\n./src/stanford/spl/HttpServer_sendResponse.java\n./src/stanford/spl/UrlDownloader.java\n./src/stanford/spl/JBEConsole_setExitOnClose.java\n./src/stanford/spl/GTable_setCellBackground.java\n./src/stanford/spl/LibraryUpdater.java\n./src/stanford/spl/AutograderInput.java\n./src/stanford/spl/GTable_setRowBackground.java\n./src/stanford/spl/GWindow_setLocationSaved.java\n./src/stanford/spl/GTableAdapter.java\n./src/stanford/spl/GTable_select.java\n./src/stanford/spl/GSlider_setMinorTickSpacing.java\n./src/stanford/spl/StanfordCppLib_setCppVersion.java\n./src/stanford/spl/GTextArea_getText.java\n./src/stanford/spl/GSlider_getMinorTickSpacing.java\n./src/stanford/spl/GBufferedImage_setRGB.java\n./src/stanford/spl/GTable_setColumnForeground.java\n./src/stanford/spl/GTable_setColumnAlignment.java\n./src/stanford/spl/GOptionPane_showTextFileDialog.java\n./src/stanford/karel/EmptyCanvas.java\n./src/stanford/karel/ResizeCanvas.java\n./src/stanford/karel/HPanel.java\n./src/stanford/karel/ResizeLayout.java\n./src/stanford/karel/AbstractKarel.java\n./src/stanford/karel/KarelInterface.java\n./src/stanford/karel/NewWorldDialog.java\n./src/stanford/karel/KarelWorld.java\n./src/stanford/karel/KarelErrorDialog.java\n./src/stanford/karel/KarelControlPanel.java\n./src/stanford/karel/SuperKarel.java\n./src/stanford/karel/KarelWorldMonitor.java\n./src/stanford/karel/HeadlessKarel.java\n./src/stanford/karel/LoadWorldDialog.java\n./src/stanford/karel/Karel.java\n./src/stanford/karel/KarelDirection.java\n./src/stanford/karel/KarelResizer.java\n./src/stanford/karel/HVLayout.java\n./src/stanford/karel/KarelBugIcon.java\n./src/stanford/karel/Event.java\n./src/stanford/karel/OptionTable.java\n./src/stanford/karel/KarelWorldEditor.java\n./src/stanford/karel/VPanel.java\n./src/stanford/karel/CardPanel.java\n./src/stanford/karel/KarelProgram.java\n./src/stanford/karel/KarelErrorCanvas.java\n./src/stanford/karel/HeadlessSuperKarel.java\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/make-javadoc.sh",
    "content": "#!/bin/bash\nOUTDIR=doc\necho \"Creating Javadoc documents in $OUTDIR ...\"\n\n#!/bin/bash\n#    -classpath \".:/home/stepp/Android/Sdk/platforms/android-23/android.jar:/home/stepp/Android/Sdk/tools/support/annotations.jar:/home/stepp/Android/Sdk/extras/android/m2repository/com/android/support/support-annotations/23.1.1/support-annotations-23.1.1.jar\" \\\n#    -linkoffline http://developer.android.com/reference/ ~/Android/Sdk/docs/reference/ \\\n#    -sourcepath \"/home/stepp/Downloads/jdk1.8.0_73/src.zip\" \\\n\njavadoc \\\n    -classpath \".:/home/stepp/Downloads/jdk1.8.0_73/lib/tools.jar:obf/spl.jar\" \\\n    -d doc/ \\\n    -link https://docs.oracle.com/javase/8/docs/api \\\n    -tag usage \\\n    -tag inherited \\\n    -tag noshow \\\n    -exclude javazoom.jlgui.basicplayer:stanford.spl:stanford.cs106.autograder \\\n    src/acm/*/*.java \\\n    src/stanford/karel/*.java \\\n    src/stanford/cs106/audio/*.java \\\n    src/stanford/cs106/collections/*.java \\\n    src/stanford/cs106/gui/*.java \\\n    src/stanford/cs106/io/*.java \\\n    src/stanford/cs106/junit/*.java \\\n    src/stanford/cs106/net/*.java \\\n    src/stanford/cs106/reflect/*.java \\\n    src/stanford/cs106/util/*.java \\\n\necho \"Done.\"\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/obf/MANIFEST",
    "content": "Main-Class: stanford.spl.JavaBackEnd\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/obf/META-INF/services/javax.sound.sampled.spi.AudioFileReader",
    "content": "#  for the javalayer mp3 decoder\r\njavazoom.spi.mpeg.sampled.file.MpegAudioFileReader\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/obf/META-INF/services/javax.sound.sampled.spi.AudioFileReader.BACKUP",
    "content": "#  for the javalayer mp3 decoder\r\njavazoom.spi.mpeg.sampled.file.MpegAudioFileReader\r\n# for the vorbis decoder\r\njavazoom.spi.vorbis.sampled.file.VorbisAudioFileReader\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/obf/META-INF/services/javax.sound.sampled.spi.FormatConversionProvider",
    "content": "# for the javalayer mp3 decoder\r\njavazoom.spi.mpeg.sampled.convert.MpegFormatConversionProvider\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/obf/META-INF/services/javax.sound.sampled.spi.FormatConversionProvider.BACKUP",
    "content": "# for the javalayer mp3 decoder\r\njavazoom.spi.mpeg.sampled.convert.MpegFormatConversionProvider\r\n# for the vorbis decoder\r\njavazoom.spi.vorbis.sampled.convert.VorbisFormatConversionProvider\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/obf/compile.sh",
    "content": "#!/bin/bash\n# Make sure to set -source 1.5 -target 1.5 in compiler options\n# so that the class files are compatible with Sandmark/Proguard\n\nOUTFILE=spl.jar\n\necho \"Compiling code ...\"\ncd ..\njavac -g \\\n\t-source 1.5 -target 1.5 \\\n\t-cp lib/acm.jar \\\n\t-s src/ \\\n\t-d obf/temp/ \\\n\tsrc/acm/graphics/*.java \\\n\tsrc/acm/io/*.java \\\n\tsrc/acm/util/*.java \\\n\tsrc/stanford/cs106/diff/*.java \\\n\tsrc/stanford/cs106/gui/*.java \\\n\tsrc/stanford/cs106/io/*.java \\\n\tsrc/stanford/cs106/util/*.java \\\n\tsrc/stanford/spl/*.java \\\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/obf/copyobf.sh",
    "content": "#!/bin/bash\necho \"Copying JAR to 'provided' directory ...\"\ncp -f OBFUSCATED.jar ../../../provided/cs106b-hw2-b-ngrams-sample-solution.jar\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/obf/decompile.sh",
    "content": "#!/bin/sh\nrm -rf decompiled\nmkdir decompiled\njar -xf ../provided/SortDetective.jar\n# wine jad.exe *.class\njad.exe *.class\nmv *.class decompiled\nmv *.jad decompiled\nmv META-INF decompiled\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/obf/jar-do-everything.sh",
    "content": "#!/bin/bash\n# This shell script runs all 3 parts of the JAR-making process:\n# 1) make the JAR (un-obfuscated)\n# 2) obfuscate it\n# 3) copy it to the provided/ dir below\n\n./makejar.sh\n./obfuscate.sh\n./copyobf.sh\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/obf/makeandcopy.sh",
    "content": "#!/bin/bash\n./makejar.sh && yes | cp spl.jar $1\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/obf/makejar.sh",
    "content": "#!/bin/bash\n# Make sure to set -source 1.5 -target 1.5 in compiler options\n# so that the class files are compatible with Sandmark/Proguard\n\nOUTFILE=spl.jar\n\necho \"Compiling code ...\"\nrm -rf temp/*\n# ./compile.sh\n\necho \"Repacking library JARs ...\"\nif [ -e \"spl.jar\" ]; then\n\trm spl.jar 2>&1 > /dev/null\nfi\n\ncd temp\nfor JAR in `ls -1 ../../lib/*.jar`; do\n\tunzip -qo $JAR\ndone\ncp -r ../../res/ .\ncd ..\n\necho \"Creating JAR archive in $OUTFILE ...\"\ncd temp\ncp -r ../../bin/* .\nfind . > files.list\njar -cvmf ../MANIFEST ../$OUTFILE @files.list\n\n# also include source code in JAR\ncd ../../src\njar uvf ../obf/$OUTFILE acm/*/*.java javazoom/*/*/*.java stanford/*/*.java stanford/*/*/*.java\n\n# copy in the META-INF folder so mp3 files can play\ncd ../obf\n# zip -ru $OUTFILE META-INF/\njar -uvf $OUTFILE META-INF/\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/obf/obfuscate.sh",
    "content": "#!/bin/sh\n# Make sure to set -source 1.5 -target 1.5 in compiler options\n# so that the class files are compatible with Sandmark/Proguard\n\nOBFS[0]='Boolean Splitter'\nOBFS[1]=\"Simple Opaque Predicates\"\nOBFS[2]='Transparent Branch Insertion'\nOBFS[3]='Random Dead Code'\nOBFS[4]='Duplicate Registers'\nOBFS[5]='Merge Local Integers'\n#OBFS[6]='Interleave Methods'\n#OBFS[2]='Insert Opaque Predicates'\n#OBFS[5]='Reorder Instructions'\n#OBFS[8]='Buggy Code'         # crashes with exception no matter what\n#OBFS[9]='String Encoder'\n\nif [ ! -e \"in.jar\" ]; then\n\t./makejar.sh\nfi\n\n# phase 1: ProGuard (name obfuscator and other obfuscations, but not as l33t as Sandmark)\necho \"\"\necho \"Running ProGuard name obfuscator ...\"\nrm -rf in/ out/\nmkdir in\nmkdir out\ncp in.jar in/temp.jar\njava -jar jars/proguard.jar @proguard-settings.pro | grep -v \"Note\" | grep -v \"accesses a\" | grep -v \"Maybe this is library\" | grep -v \"Maybe this is program\"\ncp out/temp.jar ./out.jar\n\n# phase 2: Sandmark\necho \"\"\necho \"Running Sandmark code obfuscator ...\"\nlet LAST=\"${#OBFS[@]} - 1\"\nfor i in `seq 0 $LAST`; do\n\tOBF=${OBFS[$i]}\n\techo \"Sandmark obfuscation #$i: $OBF\"\n\tcp out.jar temp.jar\n\tjava -cp jars/sandmark.jar sandmark.smash.SandmarkCLI -O -i temp.jar -o temp2.jar -A \"$OBF\"\n\tif [ -e temp2.jar ]; then rm out.jar; fi\n\tif [ -e temp2.jar ]; then mv temp2.jar out.jar; fi\ndone\n\n# phase 3: clean up and move files\nmv out.jar OBFUSCATED.jar\n#cp OBFUSCATED.jar ../provided/\n#rm temp.jar *.smconfig\n# rm retro_log.txt\necho \"\"\necho \"Done!  Created OBFUSCATED.jar .\"\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/obf/proguard-settings.pro",
    "content": "#\n# This ProGuard configuration file illustrates how to process ProGuard\n# (including its main application, its GUI, its Ant task, and its WTK plugin),\n# and the ReTrace tool, all in one go.\n# Configuration files for typical applications will be very similar.\n# Usage:\n#     java -jar proguard.jar @proguardall.pro\n#\n\n# Specify the input jars, output jars, and library jars.\n# We'll read all jars from the lib directory, process them, and write the\n# processed jars to a new out directory.\n\n-injars  in\n-outjars out\n\n# You may have to adapt the paths below.\n\n#-libraryjars <java.home>/lib/rt.jar\n#-libraryjars /usr/lib/jvm/java-6-sun-1.6.0.24/jre/lib/rt.jar\n#-libraryjars /usr/share/java/ant.jar\n#-libraryjars /usr/local/java/wtk2.5.2/wtklib/kenv.zip\n#-libraryjars /cygdrive/c/Program Files (x86)/Java/jre7/lib/rt.jar\n-libraryjars jars/rt.jar\n\n# Allow methods with the same signature, except for the return type,\n# to get the same obfuscation name.\n\n-overloadaggressively\n\n# Put all obfuscated classes into the nameless root package.\n\n-repackageclasses ''\n\n# Adapt the names and contents of the resource files.\n\n-adaptresourcefilenames    **.properties,**.gif,**.jpg,**.txt\n#-adaptresourcefilecontents proguard/ant/task.properties\n\n# The main entry points.\n\n-keep public class Main {\n    public static void main(java.lang.String[]);\n}\n\n-keep public class CommandLineMain {\n    public static void main(java.lang.String[]);\n}\n\n# -keepclassmembers enum * {}\n\n-keep public enum **\n\n-keepclassmembers public enum ** {\n\tpublic *;\n}\n\n#-keepclasseswithmembers public class * {\n#    public static void main(java.lang.String[]);\n#}\n\n#-keep public class * extends java.applet.Applet\n#-keep public class * extends javax.swing.JApplet\n#-keep public class * implements javax.servlet.Servlet\n\n#-keepnames class * implements java.io.Serializable\n#-keepclassmembers class * implements java.io.Serializable\n\n-target 1.5\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/obf/retro.txt",
    "content": ".class TestRunnerApplet public\n.class RunProgram public \n.class Main public \n.class CommandLineMain public \n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/graphics/G3DRect.java",
    "content": "/*\n * @version 2016/10/12\n * - JL's getBounds fix for paint2d()\n */\n\npackage acm.graphics;\n\n// import java.awt.Graphics;\nimport java.awt.Graphics2D;\n\npublic class G3DRect extends GRect {\n\tstatic final long serialVersionUID = 21L;\n\n\tprivate boolean isRaised;\n\n\tpublic G3DRect(double d, double d1) {\n\t\tthis(0.0D, 0.0D, d, d1, false);\n\t}\n\n\tpublic G3DRect(double d, double d1, double d2, double d3) {\n\t\tthis(d, d1, d2, d3, false);\n\t}\n\n\tpublic G3DRect(double d, double d1, double d2, double d3, boolean flag) {\n\t\tsuper(d, d1, d2, d3);\n\t\tisRaised = flag;\n\t}\n\n//\tpublic void paint(Graphics g) {\n//\t\tif (!isVisible())\n//\t\t\treturn;\n//\t\tGraphics2D graphics2d = createTransformedGraphics(g);\n//\t\tif (isFilled()) {\n//\t\t\tgraphics2d.setColor(getFillColor());\n//\t\t\tgraphics2d.fill3DRect(0, 0, GMath.round(getFrameWidth()), GMath.round(getFrameHeight()), isRaised);\n//\t\t\tgraphics2d.setColor(getColor());\n//\t\t}\n//\t\tgraphics2d.draw3DRect(0, 0, GMath.round(getFrameWidth()), GMath.round(getFrameHeight()), isRaised);\n//\t\tgraphics2d.dispose();\n//\t}\n\n\t/**\n\t * Implements the <code>paint2d</code> operation for this graphical object.\n\t * This method is not called directly by clients.\n\t * @noshow\n\t */\n\tprotected void paint2d(Graphics2D g) {\n\t\tif (isFilled()) {\n\t\t\tg.setColor(getFillColor());\n\t\t\tg.fill3DRect(0, 0, GMath.round(getFrameWidth()), GMath.round(getFrameHeight()), isRaised);\n\t\t\tg.setColor(getColor());\n\t\t} else {\n\t\t\tg.draw3DRect(0, 0, GMath.round(getFrameWidth()), GMath.round(getFrameHeight()), isRaised);\n\t\t}\n\t}\n\n\tpublic void setRaised(boolean flag) {\n\t\tisRaised = flag;\n\t}\n\n\tpublic boolean isRaised() {\n\t\treturn isRaised;\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/graphics/GCanvas.java",
    "content": "/*\n * @version 2018/06/20\n * - made GCanvasListener implement MouseWheelListener to hear mouse wheel events\n * @version 2018/01/26\n * - added setDrawingMode to speed up drawing when pixel-based methods are not used\n * - optimizations to clear / removeAll\n * @version 2017/10/14\n * - small change to use GraphicsUtils for antialiasing\n * @version 2017/10/12\n * - fixed bug with clear() where transparent pixels wouldn't fill the canvas (!)\n * - added (conditional)repaint overloads that take an x,y,w,h\n * - added get/setRGB overloads that accept double x/y coords\n * @version 2017/07/21\n * - added hasElementAt(GPoint)\n * @version 2017/06/10\n * - added setOpaque/isOpaque\n * @version 2017/05/06\n * - showSaveDialog prompt to overwrite if file already exists \n * @version 2017/04/30\n * - made showDiffDialog default to expected-output directory\n * @version 2017/04/26\n * - added getElementAt(double...), hasElementAt\n * - added remove(x, y), removeAll(x, y)\n * - added setShowPixelInfo, setShowPixelGrid\n * @version 2017/04/25\n * - added showSaveDialog to save canvas graphics to an image file\n * @version 2016/10/21\n * - added drawPolarLine\n * @version 2016/10/16\n * - added buffered image to get/set pixels\n * @version 2016/05/05\n * - restored from original eroberts source code\n * - alphabetized methods\n * - implements Iterable of GObject\n */\n\n/*\n * @(#)GCanvas.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Bug fix 27-Jul-06 (ESR, JTFBug 2006-001, reported by Chris Nevison)\n//   1. Fixed implementation of enabledList.\n//\n// Bug fix 26-Apr-07 (ESR, JTFBug 2007-005, reported by Leland Beck)\n//   1. Removed cross-file reference to GMouseEvent.\n//\n// Code cleanup 28-May-07 (ESR)\n//   1. Added generic type tags.\n//   2. Substituted GObjectList for ArrayList.\n//   3. Removed warnings about use of Iterator.\n//\n// Feature enhancement 26-May-08 (ESR)\n//   1. Added support for serialization.\n\npackage acm.graphics;\n\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.awt.geom.*;\nimport java.awt.image.*;\nimport java.io.*;\nimport java.util.*;\nimport javax.swing.*;\nimport acm.util.MediaTools;\nimport stanford.cs106.diff.DiffImage;\nimport stanford.cs106.gui.GuiUtils;\nimport stanford.cs106.io.*;\nimport stanford.spl.GBufferedImage;\n\n/* Class: GCanvas */\n/**\n * The <code>GCanvas</code> class is a lightweight component that also\n * serves as a container for graphical objects.  As such, this class\n * provides the link between graphical objects and the window system.\n * Conceptually, the <code>GCanvas</code> provides a background canvas\n * to which other graphical objects can be added.\n */\npublic class GCanvas extends JComponent\n\t\timplements GCanvasInterface, GContainer, Iterable<GObject> {\n\tprivate static final long serialVersionUID = 0L;\n\tprivate static final Color TRANSPARENT = new Color(0, 0, 0, 0);\n\t\n\t// color and font used to display mouse info\n\tprivate static final Color PIXEL_GRID_COLOR = Color.GRAY;\n\tprivate static final int PIXEL_GRID_INCREMENT = 10;\n\tprivate static final Color MOUSE_INFO_COLOR = Color.DARK_GRAY;\n\tprivate static final Font MOUSE_INFO_FONT = new JLabel(\"^_^\").getFont();\n\t\n\t// drawing modes (should match constants in C++ \n\t// enum DrawingMode { DRAW_PIXEL_BASED = 0, DRAW_OBJECT_ORIENTED = 1 };\n\tpublic static final int DRAW_PIXEL_BASED = 0, DRAW_OBJECT_ORIENTED = 1;\n\n\tprivate GCanvasListener gCanvasListener;\n\tprivate GObject lastObject;\n\tprivate GObject dragObject;\n\tprivate GObjectList contents;\n\tprivate BufferedImage bufferedImage = null;\n\tprivate BufferedImage bufferedImage2 = null;   // used only if showPixelInfo is true\n\tprivate Graphics2D osg = null;                 // graphics context for drawing on buffered image\n\tprivate boolean antialias;\n\tprivate boolean autoRepaint;\n\tprivate boolean nativeArcFlag;\n\tprivate boolean showPixelGrid;\n\tprivate boolean showPixelInfo;\n\tprivate Point lastMousePoint = null;\n\tprivate int drawingMode = DRAW_PIXEL_BASED;\n\t\n\t/**\n\t * Creates a new <code>GCanvas</code> that contains no objects.\n\t *\n\t * @usage GCanvas gc = new GCanvas();\n\t */\n\tpublic GCanvas() {\n\t\tcontents = new GObjectList(this);\n\t\tif (drawingMode == DRAW_PIXEL_BASED) {\n\t\t\tbufferedImage = new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB);   // will be resized\n\t\t\tosg = (Graphics2D) bufferedImage.getGraphics();\n\t\t}\n\t\tsetOpaque(true);\n\t\tsetAntiAliasing(GObject.isAntiAliasing());\n\t\t\n\t\tgCanvasListener = new GCanvasListener();\n\t\t\n\t\tsetBackground(Color.WHITE);\n\t\tsetForeground(Color.BLACK);\n\t\tsetAutoRepaintFlag(true);\n\t\tsetNativeArcFlag(false);\n\t\tsetShowPixelGrid(false);\n\t\tsetShowPixelInfo(false);\n\t\tsetLayout(null);\n\t\t\n\t\taddComponentListener(gCanvasListener);\n\t\taddMouseListener(gCanvasListener);\n\t\taddMouseMotionListener(gCanvasListener);\n\t\taddMouseWheelListener(gCanvasListener);\n\t}\n\t\n\t/**\n\t * Adds the component to this canvas without changing its location.\n\t * If the component has no size, its size is set to its preferred size.\n\t * The return type is <code>Component</code> to match the method in\n\t * the <code>Container</code> class, but the result is typically\n\t * ignored.\n\t *\n\t * @usage gc.add(comp);\n\t * @param comp The component to add\n\t */\n\t@Override\n\tpublic Component add(Component comp) {\n\t\tsuper.add(comp);\n\t\tDimension size = comp.getSize();\n\t\tif (size.width == 0 || size.height == 0) {\n\t\t\tDimension preferredSize = comp.getPreferredSize();\n\t\t\tif (size.width == 0) {\n\t\t\t\tsize.width = preferredSize.width;\n\t\t\t}\n\t\t\tif (size.height == 0) {\n\t\t\t\tsize.height = preferredSize.height;\n\t\t\t}\n\t\t\tcomp.setSize(size);\n\t\t}\n\t\treturn comp;\n\t}\n\n\t/**\n\t * Adds the component to this canvas and sets its location\n\t * to the point (<code>x</code>,&nbsp;<code>y</code>).\n\t *\n\t * @usage gc.add(comp, x, y);\n\t * @param comp The component to add\n\t * @param x The new x-coordinate for the object\n\t * @param y The new y-coordinate for the object\n\t */\n\tpublic final void add(Component comp, double x, double y) {\n\t\tcomp.setLocation(GMath.round(x), GMath.round(y));\n\t\tadd(comp);\n\t}\n\n\t/**\n\t * Adds the component to this canvas and sets its location to the specified point.\n\t *\n\t * @usage gc.add(comp, pt);\n\t * @param comp The component to add\n\t * @param pt A <code>GPoint</code> object giving the coordinates of the point\n\t */\n\tpublic final void add(Component comp, GPoint pt) {\n\t\tadd(comp, pt.getX(), pt.getY());\n\t}\n\n\t/**\n\t * Adds the graphical object to this canvas.\n\t *\n\t * @usage gc.add(gobj);\n\t * @param gobj The graphical object to add\n\t */\n\tpublic void add(GObject gobj) {\n\t\tcontents.add(gobj);\n\t\tconditionalRepaint();\n\t}\n\n\t/**\n\t * Adds the graphical object to this canvas and sets its location\n\t * to the point (<code>x</code>,&nbsp;<code>y</code>).\n\t *\n\t * @usage gc.add(gobj, x, y);\n\t * @param gobj The graphical object to add\n\t * @param x The new x-coordinate for the object\n\t * @param y The new y-coordinate for the object\n\t */\n\tpublic final void add(GObject gobj, double x, double y) {\n\t\tgobj.setLocation(x, y);\n\t\tadd(gobj);\n\t}\n\n\t/**\n\t * Adds the graphical object to this canvas and sets its location to the specified point.\n\t *\n\t * @usage gc.add(gobj, pt);\n\t * @param gobj The graphical object to add\n\t * @param pt A <code>GPoint</code> object giving the coordinates of the point\n\t */\n\tpublic final void add(GObject gobj, GPoint pt) {\n\t\tadd(gobj, pt.getX(), pt.getY());\n\t}\n\t\n\t/**\n\t * Removes all graphical objects from this canvas.\n\t */\n\tpublic void clear() {\n\t\t// also clear out the buffered image\n\t\tif (drawingMode == DRAW_PIXEL_BASED) {\n\t\t\tclear(bufferedImage);\n\t\t\tif (showPixelInfo) {\n\t\t\t\tclear(bufferedImage2);\n\t\t\t}\n\t\t}\n\t\tsetAntiAliasing(isAntiAliasing());\n\t\tremoveAll();   // calls repaint\n\t}\n\t\n\tprivate void clear(BufferedImage img) {\n\t\tif (img != null) {\n\t\t\tint w = img.getWidth();\n\t\t\tint h = img.getHeight();\n\t\t\tGraphics2D g2 = (Graphics2D) img.getGraphics();\n\t\t\tAlphaComposite composite = AlphaComposite.getInstance(AlphaComposite.CLEAR, 0.0f);\n\t\t\tg2.setComposite(composite);\t\n\t\t\tg2.setColor(TRANSPARENT);\n\t\t\tg2.fillRect(0, 0, w, h);\n\t\t\tg2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));\n\t\t\timg.flush();\n\t\t\tg2 = (Graphics2D) img.getGraphics();\n\t\t\tg2.setColor(getForeground());\n\t\t}\n\t}\n\n\t/**\n\t * Repaints the canvas if auto-repaint is in effect.  This method is called only\n\t * by the <a href=\"GObject.html#repaint()\"><code>repaint</code></a> method in\n\t * <code>GObject</code> and is not accessible outside the package.\n\t *\n\t * @usage gc.conditionalRepaint();\n\t * @noshow\n\t */\n\tprotected void conditionalRepaint() {\n\t\tif (autoRepaint) {\n\t\t\tif (bufferedImage != null) {\n\t\t\t\tbufferedImage.flush();\n\t\t\t}\n\t\t\trepaint();\n\t\t}\n\t}\n\t\n\t/**\n\t * Repaints part of the canvas if auto-repaint is in effect.  This method is called only\n\t * by the <a href=\"GObject.html#repaint()\"><code>repaint</code></a> method in\n\t * <code>GObject</code> and is not accessible outside the package.\n\t *\n\t * @usage gc.conditionalRepaint();\n\t * @noshow\n\t */\n\tprotected void conditionalRepaint(int x, int y, int w, int h) {\n\t\tif (autoRepaint) {\n//\t\t\tif (bufferedImage != null) {\n//\t\t\t\tbufferedImage.flush();\n//\t\t\t}\n\t\t\trepaint(x, y, w, h);\n\t\t}\n\t}\n\t\n\t/**\n\t * Compares the pixels of this canvas to the image stored in the given file.\n\t */\n\tpublic void diff(File file) {\n\t\tdiff(file, /* ignoreWindowSize */ false);\n\t}\n\t\n\t/**\n\t * Compares the pixels of this canvas to the image stored in the given file.\n\t * If ignoreWindowSize is true, allows the two windows' sizes to differ as\n\t * long as they don't have any different drawn shapes between them.\n\t */\n\tpublic void diff(File file, boolean ignoreWindowSize) {\n\t\tBufferedImage windowImage = toImage();\n\t\ttry {\n\t\t\tImage fileImage = MediaTools.loadImage(file);\n\t\t\tif (ignoreWindowSize) {\n\t\t\t\t// enlarge both to same (larger) size\n\t\t\t\tint w1 = windowImage.getWidth();\n\t\t\t\tint w2 = fileImage.getWidth(this);\n\t\t\t\tint wmax = Math.max(w1, w2);\n\t\t\t\tint h1 = windowImage.getHeight();\n\t\t\t\tint h2 = fileImage.getHeight(this);\n\t\t\t\tint hmax = Math.max(h1, h2);\n\t\t\t\t\n\t\t\t\tboolean opaque = this.isOpaque();\n\t\t\t\tColor background = this.getBackground();\n\t\t\t\tint backgroundColor = background.getRGB();\n\t\t\t\t\n\t\t\t\tBufferedImage bfileImage = new BufferedImage(wmax, hmax, BufferedImage.TYPE_INT_ARGB);\n\t\t\t\tif (opaque) {\n\t\t\t\t\tbfileImage.getGraphics().setColor(background);\n\t\t\t\t\tbfileImage.getGraphics().fillRect(0, 0, wmax, hmax);\n\t\t\t\t}\n\t\t\t\tbfileImage.getGraphics().drawImage(fileImage, 0, 0, this);\n\t\t\t\t\n\t\t\t\tif (w1 < wmax || h1 < hmax) {\n\t\t\t\t\twindowImage = this.toImage(wmax, hmax);\n\t\t\t\t\t\n\t\t\t\t\tfor (int x = 0; x < wmax; x++) {\n\t\t\t\t\t\tfor (int y = 0; y < hmax; y++) {\n\t\t\t\t\t\t\tif ((x >= w1 || y >= h1) && (x < w2 && y < h2)) {\n\t\t\t\t\t\t\t\tint rgb = bfileImage.getRGB(x, y);\n\t\t\t\t\t\t\t\tif (opaque && (rgb & 0xff000000) == 0) {\n\t\t\t\t\t\t\t\t\trgb = backgroundColor;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindowImage.setRGB(x, y, rgb);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (w2 < wmax || h2 < hmax) {\n\t\t\t\t\tfor (int x = 0; x < wmax; x++) {\n\t\t\t\t\t\tfor (int y = 0; y < hmax; y++) {\n\t\t\t\t\t\t\tif ((x >= w2 || y >= h2) && (x < w1 && y < h1)) {\n\t\t\t\t\t\t\t\tint rgb = windowImage.getRGB(x, y);\n\t\t\t\t\t\t\t\tif (opaque && (rgb & 0xff000000) == 0) {\n\t\t\t\t\t\t\t\t\trgb = backgroundColor;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbfileImage.setRGB(x, y, rgb);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfileImage = bfileImage;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tDiffImage diff = new DiffImage(fileImage, windowImage);\n\t\t\tdiff.setImage1Label(file.getName());\n\t\t\tdiff.setImage2Label(\"window\");\n\t\t\tdiff.setVisible(true);\n\t\t} catch (IORuntimeException ioe) {\n\t\t\tGuiUtils.errorDialog(this, \"Unable to compare images\", ioe);\n\t\t}\n\t}\n\n\t/**\n\t * Compares the pixels of this canvas to the image stored in the given file.\n\t */\n\tpublic void diff(String file) {\n\t\tdiff(new File(file));\n\t}\n\n\t/**\n\t * Compares the pixels of this canvas to the image stored in the given file.\n\t * If ignoreWindowSize is true, allows the two windows' sizes to differ as\n\t * long as they don't have any different drawn shapes between them.\n\t */\n\tpublic void diff(String file, boolean ignoreWindowSize) {\n\t\tdiff(new File(file), ignoreWindowSize);\n\t}\n\n\t/**\n\t * Dispatches this mouse event to the uppermost graphical object for which\n\t * the active point is within the object bounds.\n\t *\n\t * @usage gc.dispatchMouseEvent(MouseEvent e);\n\t * @param e The event that triggered this response\n\t * @noshow\n\t */\n\tprotected void dispatchMouseEvent(MouseEvent e) {\n\t\tGObject gobj = contents.getElementAt(e.getX(), e.getY(), true);\n\t\tMouseEvent newEvent = null;\n\t\tif (gobj != lastObject) {\n\t\t\tif (lastObject != null) {\n\t\t\t\tnewEvent = new GMouseEvent(lastObject, MouseEvent.MOUSE_EXITED, e);\n\t\t\t\tlastObject.fireMouseListeners(newEvent);\n\t\t\t}\n\t\t\tif (gobj != null) {\n\t\t\t\tnewEvent = new GMouseEvent(gobj, MouseEvent.MOUSE_ENTERED, e);\n\t\t\t\tgobj.fireMouseListeners(newEvent);\n\t\t\t}\n\t\t}\n\t\tlastObject = gobj;\n\t\tif (dragObject != null) {\n\t\t\tgobj = dragObject;\n\t\t}\n\t\tif (gobj != null) {\n\t\t\tint id = e.getID();\n\t\t\tif (id != MouseEvent.MOUSE_EXITED && id != MouseEvent.MOUSE_ENTERED) {\n\t\t\t\t// if (id != MouseEvent.MOUSE_DRAGGED || dragObject != null) {\n\t\t\t\tif (id == MouseEvent.MOUSE_PRESSED) {\n\t\t\t\t\tdragObject = gobj;\n\t\t\t\t} else if (id == MouseEvent.MOUSE_RELEASED) {\n\t\t\t\t\tdragObject = null;\n\t\t\t\t}\n\t\t\t\tnewEvent = new GMouseEvent(gobj, id, e);\n\t\t\t\tgobj.fireMouseListeners(newEvent);\n\t\t\t\t// }\n\t\t\t}\n\t\t}\n\t\tif (newEvent != null && newEvent.isConsumed()) {\n\t\t\te.consume();\n\t\t}\n\t}\n\n\t/**\n\t * Draws an outlined version of the given shape.\n\t */\n\tpublic void draw(Shape shape) {\n\t\tif (shape instanceof Arc2D) {\n\t\t\tdrawArc((Arc2D) shape);\n\t\t} else if (shape instanceof Line2D) {\n\t\t\tdrawLine((Line2D) shape);\n\t\t} else if (shape instanceof Ellipse2D) {\n\t\t\tdrawOval((Ellipse2D) shape);\n\t\t} else if (shape instanceof Rectangle2D) {\n\t\t\tdrawRect((Rectangle2D) shape);\n\t\t} else if (hasOSG()) {\n\t\t\tgetOSG().draw(shape);\n\t\t\tconditionalRepaint();\n\t\t}\n\t}\n\n\t/**\n\t * Draws an outlined arc with the given coordinates.\n\t */\n\tpublic void drawArc(Arc2D arc) {\n\t\tif (hasOSG()) {\n\t\t\tgetOSG().draw(arc);\n\t\t} else {\n\t\t\tGArc garc = new GArc(arc.getX(), arc.getY(), arc.getWidth(), arc.getHeight(), arc.getAngleStart(), arc.getAngleExtent());\n\t\t\tgarc.setColor(getForeground());\n\t\t\tadd(garc);\n\t\t}\n\t\tconditionalRepaint();\n\t}\n\n\t/**\n\t * Draws an outlined arc with the given coordinates.\n\t */\n\tpublic void drawArc(double x, double y, double width, double height, double start, double extent) {\n\t\tif (hasOSG()) {\n\t\t\tgetOSG().drawArc((int) x, (int) y, (int) width, (int) height, (int) start, (int) extent);\n\t\t} else {\n\t\t\tGArc arc = new GArc(x, y, width, height, start, extent);\n\t\t\tarc.setColor(getForeground());\n\t\t\tadd(arc);\n\t\t}\n\t\tconditionalRepaint();\n\t}\n\n\t/**\n\t * Draws a line with the given endpoint coordinates.\n\t */\n\tpublic void drawLine(Line2D line) {\n\t\tif (hasOSG()) {\n\t\t\tgetOSG().draw(line);\n\t\t} else {\n\t\t\tGLine gline = new GLine(line);\n\t\t\tgline.setColor(getForeground());\n\t\t\tadd(gline);\n\t\t}\n\t\tconditionalRepaint();\n\t}\n\n\t/**\n\t * Draws a line with the given endpoint coordinates.\n\t */\n\tpublic void drawLine(double x1, double y1, double x2, double y2) {\n\t\tif (hasOSG()) {\n\t\t\tgetOSG().drawLine((int) x1, (int) y1, (int) x2, (int) y2);\n\t\t} else {\n\t\t\tGLine line = new GLine(x1, y1, x2, y2);\n\t\t\tline.setColor(getForeground());\n\t\t\tadd(line);\n\t\t}\n\t\tconditionalRepaint();\n\t}\n\n\t/**\n\t * Draws an outlined oval with the given coordinates.\n\t */\n\tpublic void drawOval(Ellipse2D oval) {\n\t\tif (hasOSG()) {\n\t\t\tgetOSG().draw(oval);\n\t\t} else {\n\t\t\tGOval goval = new GOval(oval);\n\t\t\tgoval.setColor(getForeground());\n\t\t\tadd(goval);\n\t\t}\n\t\tconditionalRepaint();\n\t}\n\n\t/**\n\t * Draws an outlined oval with the given coordinates.\n\t */\n\tpublic void drawOval(double x, double y, double width, double height) {\n\t\tif (hasOSG()) {\n\t\t\tgetOSG().drawOval((int) x, (int) y, (int) width, (int) height);\n\t\t} else {\n\t\t\tGOval oval = new GOval(x, y, width, height);\n\t\t\toval.setColor(getForeground());\n\t\t\tadd(oval);\n\t\t}\n\t\tconditionalRepaint();\n\t}\n\n\t/**\n\t * Draws a line with the given polar coordinates, returning its starting endpoint.\n\t */\n\tpublic GPoint drawPolarLine(double x0, double y0, double r, double theta) {\n\t\ttheta = Math.toRadians(theta);\n\t\tdouble x1 = x0 + r * Math.cos(theta);\n\t\tdouble y1 = y0 - r * Math.sin(theta);\n\t\tdrawLine(x0, y0, x1, y1);   // calls conditionalRepaint\n\t\treturn new GPoint(x1, y1);\n\t}\n\n\t/**\n\t * Draws a line with the given polar coordinates, returning its starting endpoint.\n\t */\n\tpublic GPoint drawPolarLine(GPoint p0, double r, double theta) {\n\t\treturn drawPolarLine(p0.getX(), p0.getY(), r, theta);\n\t}\n\t\n\t/**\n\t * Draws an outlined rectangle with the given coordinates.\n\t */\n\tpublic void drawRect(double x, double y, double width, double height) {\n\t\tif (hasOSG()) {\n\t\t\tgetOSG().drawRect((int) x, (int) y, (int) width, (int) height);\n\t\t} else {\n\t\t\tGRect rect = new GRect(x, y, width, height);\n\t\t\trect.setColor(getForeground());\n\t\t\tadd(rect);\n\t\t}\n\t\tconditionalRepaint();\n\t}\n\n\t/**\n\t * Draws an outlined rectangle with the given coordinates.\n\t */\n\tpublic void drawRect(Rectangle2D rect) {\n\t\tif (hasOSG()) {\n\t\t\tgetOSG().draw(rect);\n\t\t} else {\n\t\t\tGRect grect = new GRect(rect.getX(), rect.getY(), rect.getWidth(), rect.getHeight());\n\t\t\tgrect.setColor(getForeground());\n\t\t\tadd(grect);\n\t\t}\n\t\tconditionalRepaint();\n\t}\n\n\t/**\n\t * Draws a filled version of the given shape.\n\t */\n\tpublic void fill(Shape shape) {\n\t\tif (shape instanceof Arc2D) {\n\t\t\tfillArc((Arc2D) shape);\n\t\t} else if (shape instanceof Line2D) {\n\t\t\tdrawLine((Line2D) shape);\n\t\t} else if (shape instanceof Ellipse2D) {\n\t\t\tfillOval((Ellipse2D) shape);\n\t\t} else if (shape instanceof Rectangle2D) {\n\t\t\tfillRect((Rectangle2D) shape);\n\t\t} else if (hasOSG()) {\n\t\t\tgetOSG().fill(shape);\n\t\t\tconditionalRepaint();\n\t\t}\n\t}\n\n\t/**\n\t * Draws a filled arc with the given coordinates.\n\t */\n\tpublic void fillArc(Arc2D arc) {\n\t\tif (hasOSG()) {\n\t\t\tgetOSG().fill(arc);\n\t\t} else {\n\t\t\tGArc garc = new GArc(arc.getX(), arc.getY(), arc.getWidth(), arc.getHeight(), arc.getAngleStart(), arc.getAngleExtent());\n\t\t\tgarc.setColor(getForeground());\n\t\t\tgarc.setFilled(true);\n\t\t\tgarc.setFillColor(getForeground());\n\t\t\tadd(garc);\n\t\t}\n\t\tconditionalRepaint();\n\t}\n\n\t/**\n\t * Draws a filled arc with the given coordinates.\n\t */\n\tpublic void fillArc(double x, double y, double width, double height, double start, double extent) {\n\t\tif (hasOSG()) {\n\t\t\tgetOSG().fillArc((int) x, (int) y, (int) width, (int) height, (int) start, (int) extent);\n\t\t} else {\n\t\t\tGArc arc = new GArc(x, y, width, height, start, extent);\n\t\t\tarc.setColor(getForeground());\n\t\t\tarc.setFilled(true);\n\t\t\tarc.setFillColor(getForeground());\n\t\t\tadd(arc);\n\t\t}\n\t\tconditionalRepaint();\n\t}\n\n\t/**\n\t * Draws a filled oval with the given coordinates.\n\t */\n\tpublic void fillOval(Ellipse2D oval) {\n\t\tif (hasOSG()) {\n\t\t\tgetOSG().fill(oval);\n\t\t} else {\n\t\t\tGOval goval = new GOval(oval);\n\t\t\tgoval.setColor(getForeground());\n\t\t\tgoval.setFilled(true);\n\t\t\tgoval.setFillColor(getForeground());\n\t\t\tadd(goval);\n\t\t}\n\t\tconditionalRepaint();\n\t}\n\n\t/**\n\t * Draws a filled oval with the given coordinates.\n\t */\n\tpublic void fillOval(double x, double y, double width, double height) {\n\t\tif (hasOSG()) {\n\t\t\tgetOSG().fillOval((int) x, (int) y, (int) width, (int) height);\n\t\t} else {\n\t\t\tGOval goval = new GOval(x, y, width, height);\n\t\t\tgoval.setColor(getForeground());\n\t\t\tgoval.setFilled(true);\n\t\t\tgoval.setFillColor(getForeground());\n\t\t\tadd(goval);\n\t\t}\n\t\tconditionalRepaint();\n\t}\n\n\t/**\n\t * Draws a filled rectangle with the given coordinates.\n\t */\n\tpublic void fillRect(double x, double y, double width, double height) {\n\t\tif (hasOSG()) {\n\t\t\tgetOSG().fillRect((int) x, (int) y, (int) width, (int) height);\n\t\t} else {\n\t\t\tGRect grect = new GRect(x, y, width, height);\n\t\t\tgrect.setColor(getForeground());\n\t\t\tgrect.setFilled(true);\n\t\t\tgrect.setFillColor(getForeground());\n\t\t\tadd(grect);\n\t\t}\n\t\tconditionalRepaint();\n\t}\n\n\t/**\n\t * Draws a filled rectangle with the given coordinates.\n\t */\n\tpublic void fillRect(Rectangle2D rect) {\n\t\tif (hasOSG()) {\n\t\t\tgetOSG().fill(rect);\n\t\t} else {\n\t\t\tGRect grect = new GRect(rect.getX(), rect.getY(), rect.getWidth(), rect.getHeight());\n\t\t\tgrect.setColor(getForeground());\n\t\t\tgrect.setFilled(true);\n\t\t\tgrect.setFillColor(getForeground());\n\t\t\tadd(grect);\n\t\t}\n\t\tconditionalRepaint();\n\t}\n\n\t/**\n\t * Returns the current setting of the auto-repaint flag as described in\n\t * <a href=\"#setAutoRepaintFlag(boolean)\"><code>setAutoRepaintFlag</code></a>.\n\t *\n\t * @usage if (gc.getAutoRepaintFlag()) . . .\n\t * @return <code>true</code> if auto-repaint mode is enabled, and <code>false</code>\n\t *          otherwise\n\t */\n\tpublic boolean getAutoRepaintFlag() {\n\t\treturn autoRepaint;\n\t}\n\n\tpublic int getDrawingMode() {\n\t\treturn drawingMode;\n\t}\n\t\n\t/**\n\t * Returns the graphical object at the specified index, numbering from back\n\t * to front in the the <i>z</i> dimension.\n\t *\n\t * @usage GObject gobj = gc.getElement(index);\n\t * @param index The index of the component to return\n\t * @return The graphical object at the specified index\n\t */\n\t@SuppressWarnings(\"unchecked\")\n\tpublic <T extends GObject> T getElement(int index) {\n\t\treturn (T) contents.getElement(index);\n\t}\n\n\t/**\n\t * Returns the topmost graphical object that contains the point\n\t * (<code>x</code>, <code>y</code>), or <code>null</code> if no such\n\t * object exists.\n\t *\n\t * @usage GObject gobj = gc.getElementAt(x, y);\n\t * @param x The x-coordinate of the point being tested\n\t * @param y The y-coordinate of the point being tested\n\t * @return The graphical object at the specified location, or <code>null</code>\n\t *         if no such object exists\n\t */\n\t@SuppressWarnings(\"unchecked\")\n\tpublic <T extends GObject> T getElementAt(double x, double y) {\n\t\treturn (T) contents.getElementAt(x, y, false);\n\t}\n\n\t/**\n\t * This version of getElementAt accepts a variable number of coordinate\n\t * pairs (in x1, y1, x2, y2, x3, y3, ... order) and will return the\n\t * topmost graphical objectfound at any of these pairs.\n\t * The pairs are checked in the order they are passed.\n\t * If no graphical object is found at any of these coordinate pairs,\n\t * null is returned. \n\t */\n\t@SuppressWarnings(\"unchecked\")\n\tpublic <T extends GObject> T getElementAt(double... coords) {\n\t\tif (coords.length == 0 || coords.length % 2 != 0) {\n\t\t\tthrow new IllegalArgumentException(\n\t\t\t\t\t\"number of coordinates passed must be even (must be a sequence of x/y pairs); you passed \"\n\t\t\t\t\t\t\t+ Arrays.toString(coords));\n\t\t}\n\t\tfor (int i = 0; i < coords.length; i += 2) {\n\t\t\tGObject obj = getElementAt(coords[i], coords[i + 1]);\n\t\t\tif (obj != null) {\n\t\t\t\treturn (T) obj;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\t/**\n\t * Returns the topmost graphical object that contains the specified point,\n\t * or <code>null</code> if no such object exists.\n\t *\n\t * @usage GObject gobj = gc.getElementAt(pt);\n\t * @param pt The coordinates being tested\n\t * @return The graphical object at the specified location, or <code>null</code>\n\t *         if no such object exists\n\t */\n\t@SuppressWarnings(\"unchecked\")\n\tpublic final <T extends GObject> T getElementAt(GPoint pt) {\n\t\treturn (T) getElementAt(pt.getX(), pt.getY());\n\t}\n\n\t/**\n\t * Returns the number of graphical objects stored in this <code>GCanvas</code>.\n\t *\n\t * @usage int n = gc.getElementCount();\n\t * @return The number of graphical objects in this <code>GCanvas</code>\n\t */\n\tpublic int getElementCount() {\n\t\treturn contents.getElementCount();\n\t}\n\t\n//\t@Override\n//\tpublic Graphics2D getGraphics() {\n//\t\treturn (Graphics2D) bufferedImage.getGraphics();\n//\t}\n\n\t/**\n\t * Returns the current setting of the native-arc flag as described in\n\t * <a href=\"#setNativeArcFlag(boolean)\"><code>setNativeArcFlag</code></a>.\n\t *\n\t * @usage if (gc.getNativeArcFlag()) . . .\n\t * @return <code>true</code> if native arcs are enabled, and <code>false</code>\n\t *          otherwise\n\t */\n\tpublic boolean getNativeArcFlag() {\n\t\treturn nativeArcFlag;\n\t}\n\t\n\t/**\n\t * Returns the graphical pen for drawing on this canvas.\n\t */\n\tpublic Graphics2D getOSG() {\n\t\tif (osg == null && bufferedImage != null) {\n\t\t\tosg = (Graphics2D) bufferedImage.getGraphics();\n\t\t\tGraphicsUtils.setAntialiasing(osg, isAntiAliasing());\n\t\t}\n\t\tif (osg != null) {\n\t\t\treturn osg;\n\t\t} else {\n\t\t\treturn (Graphics2D) getGraphics();\n\t\t}\n\t}\n\t\n\t/**\n\t * Returns a Base64-encoded representation of the pixel data of this image.\n\t */\n\tpublic String getPixelsAsString() {\n\t\tif (drawingMode == DRAW_PIXEL_BASED && bufferedImage != null) {\n\t\t\treturn GBufferedImage.toStringBase64(bufferedImage);\n\t\t} else {\n\t\t\treturn \"\";\n\t\t}\n\t}\n\n\t/**\n\t * Returns the RGB color stored at the given (x, y) pixel, or 0 if that pixel falls outside the bounds of this canvas.\n\t */\n\tpublic int getRGB(double x, double y) {\n\t\treturn getRGB((int) x, (int) y);\n\t}\n\t\n\t/**\n\t * Returns the RGB color stored at the given (x, y) pixel, or 0 if that pixel falls outside the bounds of this canvas.\n\t */\n\tpublic int getRGB(int x, int y) {\n\t\tint rgb = 0;\n\t\tif (inBounds(x, y)) {\n\t\t\tif (showPixelInfo && bufferedImage2 != null) {\n\t\t\t\trgb = bufferedImage2.getRGB(x, y);\n\t\t\t} else if (bufferedImage != null) {\n\t\t\t\trgb = bufferedImage.getRGB(x, y);\n\t\t\t}\n\t\t\tif (rgb == 0 && isOpaque()) {\n\t\t\t\treturn getBackground().getRGB();\n\t\t\t}\n\t\t}\n\t\treturn rgb;\n\t}\n\t\n\tprivate void handleResize() {\n\t\tif (drawingMode != DRAW_PIXEL_BASED) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tBufferedImage oldImage = bufferedImage;\n\t\tint w = Math.max(1, getWidth());\n\t\tint h = Math.max(1, getHeight());\n\t\tif (oldImage != null && w == oldImage.getWidth() && h == oldImage.getHeight()) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tbufferedImage = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);\n\t\tif (showPixelInfo) {\n\t\t\tbufferedImage2 = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);\n\t\t}\n\t\tosg = (Graphics2D) bufferedImage.getGraphics();\n\t\tGraphicsUtils.setAntialiasing(osg, isAntiAliasing());\n\n\t\t// draw background\n//\t\tif (isOpaque()) {\n//\t\t\tosg.setColor(getBackground());\n//\t\t\tosg.fillRect(0, 0, w, h);\n//\t\t}\n//\t\tosg.setColor(Color.BLACK);\n\t\t\n\t\t// copy over\n\t\tif (oldImage != null) {\n\t\t\tosg.drawImage(oldImage, 0, 0, this);\n\t\t}\n\t\t\n\t\tif (isShowing()) {\n\t\t\t// gCanvas.repaint();\n\t\t}\n\t}\n\t\n\t/**\n\t * Returns true if a graphical object exists that touches the given\n\t * (x, y) pixel position, or false if no such object exists.\n\t */\n\tpublic boolean hasElementAt(double x, double y) {\n\t\treturn getElementAt(x, y) != null;\n\t}\n\n\t/**\n\t * Returns true if a graphical object exists that touches any of the given\n\t * (x, y) pixel positions, or false if no such object exists.\n\t * This method accepts a variable number of coordinate\n\t * pairs (in x1, y1, x2, y2, x3, y3, ... order).\n\t * The pairs are checked in the order they are passed.\n\t */\n\tpublic boolean hasElementAt(double... coords) {\n\t\treturn getElementAt(coords) != null;\n\t}\n\n\t/**\n\t * Returns true if a graphical object exists that touches the given\n\t * (x, y) pixel position, or false if no such object exists.\n\t */\n\tpublic boolean hasElementAt(GPoint pt) {\n\t\treturn getElementAt(pt) != null;\n\t}\n\t\n\t/**\n\t * Returns true if this canvas has an offscreen graphics pen for drawing.\n\t */\n\tprivate boolean hasOSG() {\n\t\treturn getOSG() != null;\n\t}\n\n\t/**\n\t * Whether the given (x, y) point falls within the bounds of this canvas, from (0, 0) .. (width-1, height-1) inclusive.\n\t */\n\tpublic boolean inBounds(int x, int y) {\n\t\tint w = bufferedImage == null ? this.getWidth() : bufferedImage.getWidth();\n\t\tint h = bufferedImage == null ? this.getHeight() : bufferedImage.getHeight();\n\t\treturn !(x < 0 || y < 0 || x >= w || y >= h);\n\t}\n\t\n\t/**\n\t * Sets whether this canvas uses anti-aliasing, which is smoothing and blending of neighboring pixels.\n\t * Default true.\n\t */\n\tpublic boolean isAntiAliasing() {\n\t\treturn this.antialias;\n\t}\n\t\n\t/**\n\t * Returns an <code>Iterator</code> that cycles through the elements within\n\t * this container in the default direction, which is from back to front.\n\t * You can also run the iterator in the opposite direction by using the\n\t * <a href=\"#iterator(int)\"><code>iterator</code></a><code>(</code><font\n\t * size=-1><i>direction</i></font><code>)</code> form of this method.\n\t *\n\t * @usage Iterator<GObject> i = gc.iterator();\n\t * @return An <code>Iterator</code> ranging over the elements of the\n\t *         container from back to front\n\t */\n\tpublic Iterator<GObject> iterator() {\n\t\treturn new GIterator(this, GContainer.BACK_TO_FRONT);\n\t}\n\n\t/**\n\t * Returns an <code>Iterator</code> that cycles through the elements\n\t * within this container in the specified direction, which must be one\n\t * of the constants <a href=\"GContainer.html#FRONT_TO_BACK\"><code>GContainer.FRONT_TO_BACK</code></a>\n\t * or <a href=\"GContainer.html#BACK_TO_FRONT\"><code>GContainer.BACK_TO_FRONT</code></a>.<p>\n\t *\n\t * <p><pre><code>\n\t * &nbsp;    for (Iterator&lt;GObject&gt; i = gc.iterator(direction); i.hasNext(); )\n\t * </code></pre>\n\t *\n\t * @usage Iterator<GObject> i = gc.iterator(direction);\n\t * @return An <code>Iterator</code> ranging over the elements of the\n\t *         container in the specified direction\n\t */\n\tpublic Iterator<GObject> iterator(int direction) {\n\t\treturn new GIterator(this, direction);\n\t}\n\n\t/**\n\t * Paints the canvas.  This method is not ordinarily called by clients.\n\t *\n\t * @usage gc.paintComponent(g);\n\t * @param g The graphics context into which the canvas is painted\n\t * @noshow\n\t */\n\t@Override\n\tpublic void paintComponent(Graphics g) {\n\t\tsuper.paintComponent(g);\n\t\tGraphicsUtils.setAntialiasing(g, isAntiAliasing());\n\t\t\n\t\tif (showPixelInfo && bufferedImage2 != null) {\n\t\t\t// special drawing if showPixelInfo is on (rare)\n\t\t\t// draw onto a special second buffered image so I can get the pixels\n\t\t\tclear(bufferedImage2);\n\t\t\tGraphics g2 = bufferedImage2.getGraphics();\n\t\t\tif (isOpaque()) {\n\t\t\t\tg2.setColor(getBackground());\n\t\t\t\tg2.fillRect(0, 0, getWidth(), getHeight());\n\t\t\t}\n\t\t\tg2.setColor(getForeground());\n\t\t\tif (bufferedImage != null) {\n\t\t\t\tg2.drawImage(bufferedImage, 0, 0, this);\n\t\t\t}\n\t\t\tGraphicsUtils.setAntialiasing(g2, isAntiAliasing());\n\t\t\tcontents.mapPaint(g2);\n\t\t\tg.drawImage(bufferedImage2, 0, 0, this);\n\t\t\tpaintPixelInfo(g);\n\t\t} else if (bufferedImage != null) {\n\t\t\t// standard drawing (much more common)\n\t\t\tif (isOpaque()) {\n\t\t\t\tg.setColor(getBackground());\n\t\t\t\tg.fillRect(0, 0, getWidth(), getHeight());\n\t\t\t}\n\t\t\tg.drawImage(bufferedImage, 0, 0, this);\n\t\t\tg.setColor(getForeground());\n\t\t\tcontents.mapPaint(g);\n\t\t} else {\n\t\t\t// no buffered image at all; direct draw\n\t\t\tg.setColor(getForeground());\n\t\t\tcontents.mapPaint(g);\n\t\t}\n\t\t\n\t\tif (showPixelGrid) {\n\t\t\tpaintPixelGrid(g);\n\t\t}\n\t}\n\t\n\t// draws a grid of horizontal and vertical lines to help debugging\n\tprivate void paintPixelGrid(Graphics g) {\n\t\tint w = getWidth();\n\t\tint h = getHeight();\n\t\t\n\t\tg.setColor(PIXEL_GRID_COLOR);\n\n\t\t// horizontal lines\n\t\tfor (int y = PIXEL_GRID_INCREMENT; y < h; y += PIXEL_GRID_INCREMENT) {\n\t\t\tg.drawLine(0, y, w, y);\n\t\t}\n\t\t\n\t\t// vertical lines\n\t\tfor (int x = PIXEL_GRID_INCREMENT; x < w; x += PIXEL_GRID_INCREMENT) {\n\t\t\tg.drawLine(x, 0, x, h);\n\t\t}\n\t}\n\t\n\t// draws a label on the canvas showing the current mouse position's\n\t// (x, y) coordinate and current pixel color\n\tprivate void paintPixelInfo(Graphics g) {\n\t\tif (!showPixelInfo || lastMousePoint == null) {\n\t\t\treturn;\n\t\t}\n\t\tint x = lastMousePoint.x;\n\t\tint y = lastMousePoint.y;\n\t\tint w = getWidth();\n\t\tint h = getHeight();\n\t\t\n\t\t// get info about the mouse pixel\n\t\tString pxInfo = \"(x=\" + x + \", y=\" + y + \")\";\n\t\tif (x >= 0 && x < w && y >= 0 && y < h) {\n\t\t\tint rgb = getRGB(x, y);\n\t\t\tpxInfo += \", color=\" + GObject.colorNameFriendly(rgb);\n\t\t}\n\t\t\n\t\t// draw info on canvas in bottom-right (and println to text console)\n\t\tg.setColor(MOUSE_INFO_COLOR);\n\t\tg.setFont(MOUSE_INFO_FONT);\n\t\tFontMetrics met = g.getFontMetrics(MOUSE_INFO_FONT);\n\t\tint sw = met.stringWidth(pxInfo);\n\t\t// int sh = met.getHeight();\n\t\t// System.out.println(pxInfo);\n\t\tg.drawString(pxInfo, w - sw - 5, h - 2);\n\t}\n\n\t/**\n\t * Removes the component from the canvas.\n\t *\n\t * @usage gc.remove(comp);\n\t * @param comp The component to remove\n\t */\n\tpublic void remove(Component comp) {\n\t\tsuper.remove(comp);\n\t\tconditionalRepaint();\n\t}\n\n\t/**\n\t * Removes the top-most graphical object at the given (x, y) position from this container.\n\t * If no graphical object is located at that position, does nothing.\n\t * \n\t * @usage gc.remove(x, y);\n\t */\n\tpublic void remove(double x, double y) {\n\t\tGObject gobj = getElementAt(x, y);\n\t\tif (gobj != null) {\n\t\t\tremove(gobj);\n\t\t}\n\t}\n\n\t/**\n\t * Removes a graphical object from this <code>GCanvas</code>.\n\t *\n\t * @usage gc.remove(gobj);\n\t * @param gobj The graphical object to remove\n\t */\n\tpublic void remove(GObject gobj) {\n\t\tcontents.remove(gobj);\n\t\tconditionalRepaint();\n\t}\n\n\t/**\n\t * Removes the top-most graphical object at the given (x, y) position from this container.\n\t * If no graphical object is located at that position, does nothing.\n\t * \n\t * @usage gc.remove(pt);\n\t */\n\tpublic void remove(GPoint pt) {\n\t\tGObject gobj = getElementAt(pt);\n\t\tif (gobj != null) {\n\t\t\tremove(gobj);\n\t\t}\n\t}\n\n\t/**\n\t * Removes all graphical objects from this <code>GCanvas</code>.\n\t *\n\t * @usage gc.removeAll();\n\t */\n\tpublic void removeAll() {\n\t\tcontents.removeAll();\n\t\tsuper.removeAll();\n\t\trepaint();\n\t}\n\t\n\t/**\n\t * Removes all graphical objects at the given (x, y) position from this container.\n\t * If no graphical objects are located at that position, does nothing.\n\t * \n\t * @usage gc.removeAll(x, y);\n\t */\n\tpublic void removeAll(double x, double y) {\n\t\tGObject gobj = getElementAt(x, y);\n\t\twhile (gobj != null) {\n\t\t\tremove(gobj);\n\t\t\tgobj = getElementAt(x, y);\n\t\t}\n\t}\n\n\t/**\n\t * Removes all graphical objects at the given (x, y) positions from this container.\n\t * If no graphical objects are located at that position, does nothing.\n\t * \n\t * @usage gc.removeAll(x1, y1, x2, y2, ...);\n\t */\n\tpublic void removeAll(double... coords) {\n\t\tif (coords.length == 0 || coords.length % 2 != 0) {\n\t\t\tthrow new IllegalArgumentException(\n\t\t\t\t\t\"number of coordinates passed must be even (must be a sequence of x/y pairs); you passed \"\n\t\t\t\t\t\t\t+ Arrays.toString(coords));\n\t\t}\n\t\tfor (int i = 0; i < coords.length; i += 2) {\n\t\t\tGObject gobj = getElementAt(coords[i], coords[i + 1]);\n\t\t\twhile (gobj != null) {\n\t\t\t\tremove(gobj);\n\t\t\t\tgobj = getElementAt(coords[i], coords[i + 1]);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Removes all graphical objects at the given (x, y) position from this container.\n\t * If no graphical objects are located at that position, does nothing.\n\t * \n\t * @usage gc.removeAll(pt);\n\t */\n\tpublic void removeAll(GPoint pt) {\n\t\tGObject gobj = getElementAt(pt);\n\t\twhile (gobj != null) {\n\t\t\tremove(gobj);\n\t\t\tgobj = getElementAt(pt);\n\t\t}\n\t}\n\n\t/**\n\t * Writes the contents of the canvas to the given file.\n\t */\n\tpublic void save(File file) {\n\t\tBufferedImage img = toImage();\n\t\tMediaTools.saveImage(img, file);\n\t}\n\t\n\t/**\n\t * Writes the contents of the canvas to the given file.\n\t */\n\tpublic void save(String filename) {\n\t\tsave(new File(filename));\n\t}\n\t\n\t/**\n\t * Implements the <code>sendBackward</code> function from the <code>GContainer</code>\n\t * interface.  Clients should not be calling this method, but the semantics of\n\t * interfaces forces it to be exported.\n\t * @noshow\n\t */\n\tprotected void sendBackward(GObject gobj) {\n\t\tcontents.sendBackward(gobj);\n\t\tconditionalRepaint();\n\t}\n\n\t/**\n\t * Implements the <code>sendForward</code> function from the <code>GContainer</code>\n\t * interface.  Clients should not be calling this method, but the semantics of\n\t * interfaces forces it to be exported.\n\t * @noshow\n\t */\n\tprotected void sendForward(GObject gobj) {\n\t\tcontents.sendForward(gobj);\n\t\tconditionalRepaint();\n\t}\n\n\t/**\n\t * Implements the <code>sendToBack</code> function from the <code>GContainer</code>\n\t * interface.  Clients should not be calling this method, but the semantics of\n\t * interfaces forces it to be exported.\n\t * @noshow\n\t */\n\tprotected void sendToBack(GObject gobj) {\n\t\tcontents.sendToBack(gobj);\n\t\tconditionalRepaint();\n\t}\n\n\t/**\n\t * Implements the <code>sendToFront</code> function from the <code>GContainer</code>\n\t * interface.  Clients should not be calling this method, but the semantics of\n\t * interfaces forces it to be exported.\n\t * @noshow\n\t */\n\tprotected void sendToFront(GObject gobj) {\n\t\tcontents.sendToFront(gobj);\n\t\tconditionalRepaint();\n\t}\n\t\n\t/**\n\t * Sets whether this canvas uses anti-aliasing, which is smoothing and blending of neighboring pixels.\n\t * Default true.\n\t */\n\tpublic void setAntiAliasing(boolean antialias) {\n\t\tboolean oldAntialias = this.antialias;\n\t\tthis.antialias = antialias;\n\t\tGraphicsUtils.setAntialiasing(this, antialias);\n\t\tif (drawingMode == DRAW_PIXEL_BASED) {\n\t\t\tGraphicsUtils.setAntialiasing(osg, antialias);\n\t\t\tGraphicsUtils.setAntialiasing(bufferedImage, antialias);\n\t\t\tif (showPixelInfo) {\n\t\t\t\tGraphicsUtils.setAntialiasing(bufferedImage2, antialias);\n\t\t\t}\n\t\t}\n\t\tif (oldAntialias != antialias) {\n\t\t\tconditionalRepaint();\n\t\t}\n\t}\n\n\t/**\n\t * Changes the setting of the auto-repaint flag.  By default, any change to a\n\t * graphical object contained in this canvas automatically triggers a repaint\n\t * of the canvas as a whole.  While this behavior makes it much easier to use\n\t * the package, it has the disadvantage that repaint requests come much more\n\t * frequently than necessary.  You can disable this feature by calling\n\t * <code>setAutoRepaintFlag(false)</code>, but you must then make explicit\n\t * calls to <code>repaint()</code> whenever you want to update the display.\n\t * The advantage of this model is that you can then make many different changes\n\t * and have them all appear at once with a single <code>repaint</code> call.\n\t *\n\t * @usage gc.setAutoRepaintFlag(state);\n\t * @param state <code>true</code> to enable auto-repaint mode, and <code>false</code>\n\t *              to disable it\n\t */\n\tpublic void setAutoRepaintFlag(boolean state) {\n\t\tautoRepaint = state;\n\t}\n\t\n\tpublic void setBackground(Color color) {\n\t\tsuper.setBackground(color);\n\t}\n\t\n\t/**\n\t * Sets this canvas to use a border of the given color, 1px thick.\n\t */\n\tpublic void setBorder(Color color) {\n\t\tsetBorder(BorderFactory.createLineBorder(color));\n\t}\n\t\n\t/**\n\t * Sets this canvas to use a border of the given color and number of pixels thick.\n\t */\n\tpublic void setBorder(Color color, int thickness) {\n\t\tsetBorder(BorderFactory.createLineBorder(color, thickness));\n\t}\n\n\tpublic void setColor(Color color) {\n\t\tsetForeground(color);\n\t}\n\t\n\tpublic void setColor(int rgb) {\n\t\tsetColor(new Color(rgb));\n\t}\n\t\n\tpublic void setDrawingMode(int mode) {\n\t\tif (this.drawingMode != mode) {\n\t\t\tthis.drawingMode = mode;\n\t\t\tif (mode == DRAW_OBJECT_ORIENTED) {\n\t\t\t\t// get rid of BufferedImage background buffer to save memory\n\t\t\t\tbufferedImage = null;\n\t\t\t}\n\t\t\thandleResize();\n\t\t\tconditionalRepaint();\n\t\t}\n\t}\n\t\n\t@Override\n\tpublic void setForeground(Color color) {\n\t\tsuper.setForeground(color);\n\t\tif (hasOSG()) {\n\t\t\tgetOSG().setColor(color);\n\t\t}\n\t}\n\t\n\tpublic void setForeground(int rgb) {\n\t\tsetForeground(new Color(rgb));\n\t}\n\t\n\t/**\n\t * Sets whether the redering code for <code>GArc</code> and <code>GOval</code> should use\n\t * Java arcs.  By default, arcs and ovals are rendered using polygons and polylines\n\t * to ensure that the same set of pixels is covered by the fill and frame.\n\t * If this value is set to <code>true</code>, the renderers will use the native\n\t * arc code, which is more efficient but less accurate.\n\t *\n\t * @usage gc.setNativeArcFlag(state);\n\t * @param state <code>true</code> to enable native arcs, <code>false</code> to use polygons\n\t */\n\tpublic void setNativeArcFlag(boolean state) {\n\t\tnativeArcFlag = state;\n\t}\n\t\n\t/**\n\t * Sets a flag indicating whether this canvas is opaque, which means that it\n\t * obscures anything behind it.  Setting this flag to <code>false</code> makes\n\t * the <code>GCanvas</code> transparent, so that any other lightweight components\n\t * behind it show through.\n\t *\n\t * @usage gc.setOpaque(flag);\n\t * @param flag <code>true</code> to make this canvas opaque, and <code>false</code>\n\t *             to make it transparent\n\t * @noshow\n\t */\n\tpublic void setOpaque(boolean flag) {\n\t\tsuper.setOpaque(flag);\n\t\tconditionalRepaint();\n\t}\n\t\n\tpublic void setPixelsFromString(String base64) {\n\t\tif (drawingMode == DRAW_PIXEL_BASED && bufferedImage != null) {\n\t\t\tGBufferedImage.fromStringBase64(base64, bufferedImage);\n\t\t\tconditionalRepaint();\n\t\t}\n\t}\n\n\tpublic void setRGB(double x, double y, int rgb) {\n\t\t// TODO: what if not in pixel drawing mode?\n\t\tsetRGB((int) x, (int) y, rgb, /* repaint */ false);\n\t}\n\t\n\tpublic void setRGB(double x, double y, int rgb, boolean repaint) {\n\t\t// TODO: what if not in pixel drawing mode?\n\t\tsetRGB((int) x, (int) y, rgb, repaint);\n\t}\n\n\tpublic void setRGB(int x, int y, int rgb) {\n\t\t// TODO: what if not in pixel drawing mode?\n\t\tsetRGB(x, y, rgb, /* repaint */ false);\n\t}\n\t\n\tpublic void setRGB(int x, int y, int rgb, boolean repaint) {\n\t\t// TODO: what if not in pixel drawing mode?\n\t\tif (inBounds(x, y)) {\n\t\t\tif (bufferedImage == null) {\n\t\t\t\tGRect rect = new GRect(x, y, 1, 1);\n\t\t\t\trect.setColor(new Color(rgb));\n\t\t\t\tthis.add(rect);\n\t\t\t} else {\n\t\t\t\tbufferedImage.setRGB(x, y, rgb);\n\t\t\t}\n\t\t\tif (repaint) {\n\t\t\t\trepaint(x, y, /* width */ 1, /* height */ 1);\n\t\t\t} else {\n\t\t\t\tconditionalRepaint(x, y, /* width */ 1, /* height */ 1);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t/**\n\t * Sets whether to display information on this canvas about the current pixel where\n\t * the mouse pointer is resting.\n\t * Displays the current pixel's (x, y) coordinate and color.\n\t */\n\tpublic void setShowPixelGrid(boolean show) {\n\t\tthis.showPixelGrid = show;\n\t\trepaint();\n\t}\n\n\t/**\n\t * Sets whether to display information on this canvas about the current pixel where\n\t * the mouse pointer is resting.\n\t * Displays the current pixel's (x, y) coordinate and color.\n\t */\n\tpublic void setShowPixelInfo(boolean show) {\n\t\tthis.showPixelInfo = show;\n\t\tif (show) {\n\t\t\tif (drawingMode == DRAW_PIXEL_BASED) {\n\t\t\t\tint w = Math.max(1, getWidth());\n\t\t\t\tint h = Math.max(1, getHeight());\n\t\t\t\tbufferedImage2 = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);\n\t\t\t\tGraphicsUtils.setAntialiasing(bufferedImage2, isAntiAliasing());\n\t\t\t\tbufferedImage2.getGraphics().setColor(getForeground());\n\t\t\t}\n\t\t} else {\n\t\t\tbufferedImage2 = null;\n\t\t\tlastMousePoint = null;\n\t\t}\n\t\trepaint();\n\t}\n\n\t/**\n\t * Pops up a dialog box to compare the contents of this canvas to an expected image file.\n\t */\n\tpublic void showDiffDialog() {\n\t\tFile dir = IOUtils.getExpectedOutputDirectory();\n\t\tshowDiffDialog(dir);\n\t}\n\t\n\t/**\n\t * Pops up a dialog box to compare the contents of this canvas to an expected image file.\n\t * Starts the dialog box pointed at the given directory.\n\t */\n\tpublic void showDiffDialog(File directory) {\n\t\tJFileChooser chooser = new JFileChooser(directory);\n\t\tchooser.setFileFilter(GuiUtils.getExtensionFileFilter(\"PNG images (*.png)\", \"png\"));\n\t\tint result = chooser.showSaveDialog(this);\n\t\tif (result == JFileChooser.APPROVE_OPTION) {\n\t\t\tFile file = chooser.getSelectedFile();\n\t\t\ttry {\n\t\t\t\tdiff(file);\n\t\t\t} catch (Exception ex) {\n\t\t\t\tGuiUtils.errorDialog(this, \"Unable to save to \" + file.getName(), ex);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t/**\n\t * Pops up a dialog box to compare the contents of this canvas to an expected image file.\n\t * Starts the dialog box pointed at the given directory.\n\t */\n\tpublic void showDiffDialog(String directory) {\n\t\tshowDiffDialog(new File(directory));\n\t}\n\t\n\t/**\n\t * Pops up a dialog box to save the contents of this canvas to a file.\n\t * Returns the file saved to, or null if none.\n\t */\n\tpublic File showSaveDialog() {\n\t\treturn showSaveDialog(IOUtils.getCurrentDirectory());\n\t}\n\t\n\t/**\n\t * Pops up a dialog box to save the contents of this canvas to a file.\n\t * Starts the dialog box pointed at the given directory.\n\t * Returns the file saved to, or null if none.\n\t */\n\tpublic File showSaveDialog(File directory) {\n\t\tJFileChooser chooser = new JFileChooser(directory);\n\t\tchooser.setFileFilter(GuiUtils.getExtensionFileFilter(\"PNG images (*.png)\", \"png\"));\n\t\tint result = chooser.showSaveDialog(this);\n\t\tif (result == JFileChooser.APPROVE_OPTION) {\n\t\t\tFile file = chooser.getSelectedFile();\n\t\t\t\n\t\t\t// prompt to overwrite if file already exists\n\t\t\tif (file.exists()) {\n\t\t\t\tint confirm = JOptionPane.showConfirmDialog(this,\n\t\t\t\t\t\t\"File already exists. Overwrite?\", \"Overwrite?\", JOptionPane.YES_NO_OPTION);\n\t\t\t\tif (confirm != JOptionPane.YES_OPTION) {\n\t\t\t\t\t// abort without saving\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\ttry {\n\t\t\t\tsave(file);\n\t\t\t\treturn file;\n\t\t\t} catch (Exception ex) {\n\t\t\t\tJOptionPane.showMessageDialog(this, \"Unable to save to \" + file.getName()\n\t\t\t\t\t\t+ \": \" + ex.getMessage(),\n\t\t\t\t\t\t\"I/O Error\", JOptionPane.ERROR_MESSAGE);\n\t\t\t\tex.printStackTrace();\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\t\n\t/**\n\t * Pops up a dialog box to save the contents of this canvas to a file.\n\t * Starts the dialog box pointed at the given directory.\n\t * Returns the file saved to, or null if none.\n\t */\n\tpublic File showSaveDialog(String directory) {\n\t\treturn showSaveDialog(new File(directory));\n\t}\n\t\n\t/**\n\t * Returns the pixel contents of this canvas as a BufferedImage.\n\t */\n\tpublic BufferedImage toImage() {\n\t\tif (drawingMode == DRAW_PIXEL_BASED && bufferedImage != null) {\n\t\t\treturn toImage(bufferedImage.getWidth(), bufferedImage.getHeight());\n\t\t} else {\n\t\t\treturn toImage(getWidth(), getHeight());\n\t\t}\n\t}\n\t\n\t/**\n\t * Returns the pixel contents of this canvas as a BufferedImage of the given size.\n\t */\n\tpublic BufferedImage toImage(int width, int height) {\n\t\t// dump canvas into a BufferedImage\n\t\tBufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);\n\t\tGraphics2D g = (Graphics2D) img.getGraphics();\n\t\tif (isOpaque()) {\n\t\t\tg.setColor(getBackground());\n\t\t\tg.fillRect(0, 0, width, height);\n\t\t}\n\t\tGraphicsUtils.setAntialiasing(g, isAntiAliasing());\n\t\tpaint(g);\n\t\treturn img;\n\t}\n\n\t/**\n\t * Reconstructs the enabledList list in the correct order.\n\t *\n\t * @usage gc.updateEnabledList();\n\t */\n\tprotected void updateEnabledList() {\n\t\tcontents.updateEnabledList();\n\t}\n\n\t/**\n\t * Creates a new <code>GMouseEvent</code> object with <code>gobj</code>\n\t * effective source and <code>eventID</code>; all other fields are\n\t * copied from the event <code>e</code>.  This method must be included\n\t * in this class to avoid cross-file references to GMouseEvent from\n\t * the GCompound class.\n\t */\n\tstatic MouseEvent createMouseEvent(Object gobj, int eventID, MouseEvent e) {\n\t\treturn new GMouseEvent(gobj, eventID, e);\n\t}\n\n\t/**\n\t * This class fields mouse events that occur in the <code>GCanvas</code>.\n\t */\n\tprivate class GCanvasListener implements MouseListener, MouseMotionListener, MouseWheelListener, ComponentListener {\n\t\t/* ComponentListener interface */\n\t\tpublic void componentHidden(ComponentEvent e) {\n\t\t\t// empty\n\t\t}\n\t\t\n\t\tpublic void componentMoved(ComponentEvent e) {\n\t\t\t// empty\n\t\t}\n\n\t\tpublic void componentResized(ComponentEvent e) {\n\t\t\thandleResize();\n\t\t}\n\n\t\tpublic void componentShown(ComponentEvent e) {\n\t\t\t// empty\n\t\t}\n\t\t\n\t\t/* MouseListener/MouseMotionListener interfaces */\n\t\tpublic void mouseClicked(MouseEvent e) {\n\t\t\tGCanvas.this.dispatchMouseEvent(e);\n\t\t}\n\n\t\tpublic void mouseDragged(MouseEvent e) {\n\t\t\tGCanvas.this.dispatchMouseEvent(e);\n\t\t\tif (showPixelInfo) {\n\t\t\t\tlastMousePoint = e.getPoint();\n\t\t\t\trepaint();\n\t\t\t}\n\t\t}\n\n\t\tpublic void mouseEntered(MouseEvent e) {\n\t\t\tGCanvas.this.dispatchMouseEvent(e);\n\t\t}\n\n\t\tpublic void mouseExited(MouseEvent e) {\n\t\t\tGCanvas.this.dispatchMouseEvent(e);\n\t\t}\n\n\t\tpublic void mouseMoved(MouseEvent e) {\n\t\t\tGCanvas.this.dispatchMouseEvent(e);\n\t\t\tif (showPixelInfo) {\n\t\t\t\tlastMousePoint = e.getPoint();\n\t\t\t\trepaint();\n\t\t\t}\n\t\t}\n\n\t\tpublic void mousePressed(MouseEvent e) {\n\t\t\tGCanvas.this.requestFocus();\n\t\t\tGCanvas.this.dispatchMouseEvent(e);\n\t\t}\n\t\t\n\t\tpublic void mouseReleased(MouseEvent e) {\n\t\t\tGCanvas.this.dispatchMouseEvent(e);\n\t\t}\n\t\t\n\t\tpublic void mouseWheelMoved(MouseWheelEvent e) {\n\t\t\tGCanvas.this.dispatchMouseEvent(e);\n\t\t}\n\t}\n\n\tprivate static class GMouseEvent extends MouseEvent {\n\t\t/* Private instance variables */\n\t\tprivate Object effectiveSource;\n\n\t\t/**\n\t\t * Creates a new <code>GMouseEvent</code> object with <code>gobj</code>\n\t\t * effective source and <code>eventID</code>; all other fields are\n\t\t * copied from the event <code>e</code>.\n\t\t */\n\t\t@SuppressWarnings(\"deprecation\")\n\t\tpublic GMouseEvent(Object gobj, int eventID, MouseEvent e) {\n\t\t\tsuper(e.getComponent(), eventID, e.getWhen(), e.getModifiers(),\n\t\t\t\t\te.getX(), e.getY(), e.getClickCount(), e.isPopupTrigger());\n\t\t\teffectiveSource = gobj;\n\t\t}\n\n\t\t/**\n\t\t * Overrides <code>getSource</code> to return the effective source of this event,\n\t\t * which will typically be a <code>GObject</code> rather than the <code>GCanvas</code>\n\t\t * that triggered the event.\n\t\t */\n\t\tpublic Object getSource() {\n\t\t\treturn effectiveSource;\n\t\t}\n\n\t\t/**\n\t\t * Overrides <code>getComponent</code> to return the <code>GCanvas</code>\n\t\t * that triggered the event.\n\t\t */\n\t\tpublic Component getComponent() {\n\t\t\treturn (Component) super.getSource();\n\t\t}\n\n\t\t/**\n\t\t * Overrides <code>toString</code> to display the correct source for this event.\n\t\t */\n\t\tpublic String toString() {\n\t\t\treturn getClass().getName() + \"[\" + paramString() + \"] on \" + getSource();\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/graphics/GCanvasInterface.java",
    "content": "/*\n * @version 2017/06/10\n * - added setOpaque/isOpaque\n */\n\npackage acm.graphics;\n\nimport java.awt.*;\nimport java.awt.image.*;\nimport java.util.*;\n\npublic interface GCanvasInterface {\n\tpublic void add(GObject gobj);\n\tpublic void add(GObject gobj, double x, double y);\n\tpublic void add(GObject gobj, GPoint pt);\n\tpublic void add(Component comp, double x, double y);\n\tpublic void add(Component comp, GPoint pt);\n\tpublic void clear();\n\tpublic Color getBackground();\n\tpublic int getElementCount();\n\tpublic Font getFont();\n\tpublic <T extends GObject> T getElement(int index);\n\tpublic <T extends GObject> T getElementAt(double x, double y);\n\tpublic <T extends GObject> T getElementAt(double... coords);\n\tpublic <T extends GObject> T getElementAt(GPoint pt);\n\tpublic int getHeight();\n\tpublic Dimension getSize();\n\tpublic int getWidth();\n\tpublic boolean hasElementAt(double x, double y);\n\tpublic boolean hasElementAt(double... coords);\n\tpublic boolean hasElementAt(GPoint pt);\n\tpublic boolean isAntiAliasing();\n\tpublic boolean isOpaque();\n\tpublic Iterator<GObject> iterator();\n\tpublic Iterator<GObject> iterator(int direction);\n\tpublic void remove(double x, double y);\n\tpublic void remove(GPoint pt);\n\tpublic void remove(GObject gobj);\n\tpublic void removeAll();\n\tpublic void removeAll(double x, double y);\n\tpublic void removeAll(double... coords);\n\tpublic void removeAll(GPoint pt);\n\tpublic void repaint();\n\tpublic void setAntiAliasing(boolean antialias);\n\tpublic void setBackground(Color bg);\n\tpublic void setFont(Font font);\n\t// public void setHeight(int height);\n\tpublic void setOpaque(boolean opaque);\n\tpublic void setSize(Dimension size);\n\t// public void setWidth(int width);\n\tpublic void setShowPixelInfo(boolean show);\n\tpublic BufferedImage toImage();\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/graphics/GCompound.java",
    "content": "/*\n * @version 2017/09/27\n * - fixed bug with double-offsetting coordinates in inner GObjects\n * @version 2016/05/05\n * - re-synched with eroberts source; sort methods by name\n */\n\n/*\n * @(#)GCompound.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Bug fix 26-Apr-07 (ESR, JTFBug 2007-005, reported by Leland Beck)\n//   1. Removed cross-file reference to GMouseEvent.\n//\n// Code cleanup 28-May-07 (ESR)\n//   1. Added generic type tags.\n//   2. Substituted GObjectList for ArrayList.\n//   3. Removed warnings about use of Iterator.\n//\n// Feature enhancement 26-May-08 (ESR)\n//   1. Added support for serialization.\n\npackage acm.graphics;\n\nimport acm.util.*;\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.util.*;\n\n/**\n * This class defines a graphical object that consists of a collection\n * of other graphical objects.  Once assembled, the internal objects\n * can be manipulated as a unit.\n */\npublic class GCompound extends GObject implements GContainer, GScalable, Iterable<GObject> {\n\t/**\n\t * The serialization code for this class.  This value should be incremented\n\t * whenever you change the structure of this class in an incompatible way,\n\t * typically by adding a new instance variable.\n\t */\n\tstatic final long serialVersionUID = 1L;\n\n\t/* Private instance variables */\n\tprivate boolean complete;\n\tprivate GObjectList contents;\n\tprivate GObject lastObject;\n\tprivate GObject dragObject;\n\n\t/**\n\t * Creates a new <code>GCompound</code> object with no internal components.\n\t *\n\t * @usage GCompound gcomp = new GCompound();\n\t */\n\tpublic GCompound() {\n\t\tcontents = new GObjectList(this);\n\t\tcomplete = false;\n\t}\n\n\t/**\n\t * Adds a new graphical object to this <code>GCompound</code>.\n\t *\n\t * @param gobj The graphical object to add\n\t * @usage gcomp.add(gobj);\n\t */\n\tpublic void add(GObject gobj) {\n\t\tif (complete) {\n\t\t\tthrow new ErrorException(\"You can't add objects to a GCompound that has been \"\n\t\t\t\t\t+ \"marked as complete.\");\n\t\t}\n\t\tcontents.add(gobj);\n\t\trepaint();\n\t}\n\n\t/**\n\t * Adds the graphical object to this canvas and sets its location\n\t * to the point (<code>x</code>,&nbsp;<code>y</code>).\n\t *\n\t * @param gobj The graphical object to add\n\t * @param x    The new x-coordinate for the object\n\t * @param y    The new y-coordinate for the object\n\t * @usage gc.add(gobj, x, y);\n\t */\n\tpublic final void add(GObject gobj, double x, double y) {\n\t\tgobj.setLocation(x, y);\n\t\tadd(gobj);\n\t}\n\n\t/**\n\t * Adds the graphical object to this canvas and sets its location to the specified point.\n\t *\n\t * @param gobj The graphical object to add\n\t * @param pt   A <code>GPoint</code> object giving the coordinates of the point\n\t * @usage gc.add(gobj, pt);\n\t */\n\tpublic final void add(GObject gobj, GPoint pt) {\n\t\tadd(gobj, pt.getX(), pt.getY());\n\t}\n\n\t/**\n\t * Returns <code>true</code> if mouse listeners have ever been assigned to\n\t * this object or to any of the contained objects.\n\t *\n\t * @return <code>true</code> if mouse listeners have been enabled in this object\n\t * @usage if (gcomp.areMouseListenersEnabled()) . . .\n\t * @noshow\n\t */\n\tprotected boolean areMouseListenersEnabled() {\n\t\tif (super.areMouseListenersEnabled()) return true;\n\t\treturn contents.areMouseListenersEnabled();\n\t}\n\n\t/**\n\t * Checks to see whether a point is \"inside\" the compound, which means that it is\n\t * inside one of the components.\n\t *\n\t * @param x The x-coordinate of the point being tested\n\t * @param y The y-coordinate of the point being tested\n\t * @return <code>true</code> if the point (<code>x</code>,&nbsp;<code>y</code>) is inside\n\t * the compound, and <code>false</code> otherwise\n\t * @usage if (gcomp.contains(x, y)) . . .\n\t */\n\tpublic boolean contains(double x, double y) {\n\t\treturn contents.contains(x - getX(), y - getY());\n\t}\n\n\t/**\n\t * Dispatches a mouse event to the topmost child that covers the location\n\t * in the event <code>e</code>.\n\t *\n\t * @noshow\n\t */\n\tprotected void fireMouseListeners(MouseEvent e) {\n\t\tif (super.areMouseListenersEnabled()) {\n\t\t\tsuper.fireMouseListeners(e);\n\t\t\treturn;\n\t\t}\n\t\tGPoint pt = new GPoint(e.getX() - getX(), e.getY() - getY());\n\t\tGObject gobj = getElementAt(pt);\n\t\tMouseEvent newEvent = null;\n\t\tif (gobj != lastObject) {\n\t\t\tif (lastObject != null) {\n\t\t\t\tnewEvent = GCanvas.createMouseEvent(lastObject, MouseEvent.MOUSE_EXITED, e);\n\t\t\t\tlastObject.fireMouseListeners(newEvent);\n\t\t\t}\n\t\t\tif (gobj != null) {\n\t\t\t\tnewEvent = GCanvas.createMouseEvent(gobj, MouseEvent.MOUSE_ENTERED, e);\n\t\t\t\tgobj.fireMouseListeners(newEvent);\n\t\t\t}\n\t\t}\n\t\tlastObject = gobj;\n\t\tif (dragObject != null) {\n\t\t\tgobj = dragObject;\n\t\t}\n\t\tif (gobj != null) {\n\t\t\tint id = e.getID();\n\t\t\tif (id != MouseEvent.MOUSE_EXITED && id != MouseEvent.MOUSE_ENTERED) {\n\t\t\t\tif (id == MouseEvent.MOUSE_PRESSED) {\n\t\t\t\t\tdragObject = gobj;\n\t\t\t\t} else if (id == MouseEvent.MOUSE_RELEASED) {\n\t\t\t\t\tdragObject = null;\n\t\t\t\t}\n\t\t\t\tnewEvent = GCanvas.createMouseEvent(gobj, id, e);\n\t\t\t\tgobj.fireMouseListeners(newEvent);\n\t\t\t}\n\t\t}\n\t\tif (newEvent != null && newEvent.isConsumed()) {\n\t\t\te.consume();\n\t\t}\n\t}\n\n\t/**\n\t * Returns the bounding rectangle for this compound object, which consists of\n\t * the union of the bounding rectangles for each of the components.\n\t *\n\t * @return A <code>GRectangle</code> that bounds the components of this object\n\t * @usage GRectangle bounds = gcomp.getBounds();\n\t */\n\tpublic GRectangle getBounds() {\n\t\tGRectangle bounds = contents.getBounds();\n\t\tbounds.translate(getX(), getY());\n\t\treturn bounds;\n\t}\n\n\t/**\n\t * Converts the location of the specified point in this compound to\n\t * the corresponding point in the enclosing canvas.\n\t *\n\t * @param localPoint The coordinates in the space of the compound\n\t * @return The coordinates in the space of the enclosing <code>GCanvas</code>\n\t * @usage canvasPoint = gcomp.getCanvasPoint(localPoint);\n\t */\n\tpublic final GPoint getCanvasPoint(GPoint localPoint) {\n\t\treturn getCanvasPoint(localPoint.getX(), localPoint.getY());\n\t}\n\n\t/**\n\t * Converts the location of the specified point in this compound to\n\t * the corresponding point in the enclosing canvas.\n\t *\n\t * @param x The x coordinate in the space of the compound\n\t * @param y The y coordinate in the space of the compound\n\t * @return The coordinates in the space of the enclosing <code>GCanvas</code>\n\t * @usage canvasPoint = gcomp.getCanvasPoint(x, y);\n\t */\n\tpublic GPoint getCanvasPoint(double x, double y) {\n\t\tfor (GContainer c = this; c instanceof GCompound; ) {\n\t\t\tGCompound comp = (GCompound) c;\n\t\t\tx += comp.getX();\n\t\t\ty += comp.getY();\n\t\t\tc = comp.getParent();\n\t\t}\n\t\treturn new GPoint(x, y);\n\t}\n\n\t/**\n\t * Returns the graphical object at the specified index, numbering from back\n\t * to front in the the <i>z</i> dimension.\n\t *\n\t * @param index The index of the component to return\n\t * @return The graphical object at the specified index\n\t * @usage GObject gobj = gcomp.getElement(index);\n\t */\n\t@SuppressWarnings(\"unchecked\")\n\tpublic <T extends GObject> T getElement(int index) {\n\t\treturn (T) contents.getElement(index);\n\t}\n\n\t/**\n\t * Returns the topmost graphical object that contains the point\n\t * (<code>x</code>, <code>y</code>), or <code>null</code> if no such\n\t * object exists.  Note that these coordinates are relative to the\n\t * location of the compound object and not to the canvas in which\n\t * it is displayed.\n\t *\n\t * @param x The x-coordinate of the point being tested\n\t * @param y The y-coordinate of the point being tested\n\t * @return The graphical object at the specified location, or <code>null</code>\n\t * if no such object exists\n\t * @usage GObject gobj = gcomp.getElementAt(x, y);\n\t */\n\t@SuppressWarnings(\"unchecked\")\n\tpublic <T extends GObject> T getElementAt(double x, double y) {\n\t\treturn (T) contents.getElementAt(x, y, /* requireEnabled */ false);\n\t}\n\n\t/**\n\t * Returns the topmost graphical object that contains the specified point,\n\t * or <code>null</code> if no such object exists.\n\t *\n\t * @param pt The coordinates being tested\n\t * @return The graphical object at the specified location, or <code>null</code>\n\t * if no such object exists\n\t * @usage GObject gobj = gc.getElementAt(pt);\n\t */\n\t@SuppressWarnings(\"unchecked\")\n\tpublic final <T extends GObject> T getElementAt(GPoint pt) {\n\t\treturn (T) getElementAt(pt.getX(), pt.getY());\n\t}\n\n\t/**\n\t * Returns the number of graphical objects stored in this container.\n\t *\n\t * @return The number of graphical objects in this container\n\t * @usage int n = gcomp.getElementCount();\n\t */\n\tpublic int getElementCount() {\n\t\treturn contents.getElementCount();\n\t}\n\n\t/**\n\t * Converts the specified point on the enclosing canvas to the\n\t * corresponding point in the space of this compound.\n\t *\n\t * @param x The x coordinate in the space of the space of the enclosing <code>GCanvas</code>\n\t * @param y The y coordinate in the space of the space of the enclosing <code>GCanvas</code>\n\t * @return The coordinates in the space of the compound\n\t * @usage localPoint = gcomp.getCanvasPoint(x, y);\n\t */\n\tpublic GPoint getLocalPoint(double x, double y) {\n\t\tfor (GContainer c = this; c instanceof GCompound; ) {\n\t\t\tGCompound comp = (GCompound) c;\n\t\t\tx -= comp.getX();\n\t\t\ty -= comp.getY();\n\t\t\tc = comp.getParent();\n\t\t}\n\t\treturn new GPoint(x, y);\n\t}\n\n\t/**\n\t * Converts the location of the specified point on the enclosing canvas\n\t * to the corresponding point in the space of this compound.\n\t *\n\t * @param canvasPoint The coordinates in the space of the enclosing <code>GCanvas</code>\n\t * @return The coordinates in the space of the compound\n\t * @usage localPoint = gcomp.getLocalPoint(canvasPoint);\n\t */\n\tpublic final GPoint getLocalPoint(GPoint canvasPoint) {\n\t\treturn getLocalPoint(canvasPoint.getX(), canvasPoint.getY());\n\t}\n\n\t/**\n\t * Returns an <code>Iterator</code> that cycles through the elements within\n\t * this container in the default direction, which is from back to front.\n\t * You can also run the iterator in the opposite direction by using the\n\t * <a href=\"#iterator(int)\"><code>iterator</code></a><code>(</code><font\n\t * size=-1><i>direction</i></font><code>)</code> form of this method.\n\t *\n\t * @return An <code>Iterator</code> ranging over the elements of the\n\t * container from back to front\n\t * @usage Iterator<GObject> i = gc.iterator();\n\t */\n\tpublic Iterator<GObject> iterator() {\n\t\treturn new GIterator(this, GContainer.BACK_TO_FRONT);\n\t}\n\n\t/**\n\t * Returns an <code>Iterator</code> that cycles through the elements\n\t * within this container in the specified direction, which must be one\n\t * of the constants <a href=\"GContainer.html#FRONT_TO_BACK\"><code>GContainer.FRONT_TO_BACK</code></a>\n\t * or <a href=\"GContainer.html#BACK_TO_FRONT\"><code>GContainer.BACK_TO_FRONT</code></a>.<p>\n\t * <p>\n\t * <p><pre><code>\n\t * &nbsp;    for (Iterator&lt;GObject&gt; i = gc.iterator(direction); i.hasNext(); )\n\t * </code></pre>\n\t *\n\t * @return An <code>Iterator</code> ranging over the elements of the\n\t * container in the specified direction\n\t * @usage Iterator<GObject> i = gc.iterator(direction);\n\t */\n\tpublic Iterator<GObject> iterator(int direction) {\n\t\treturn new GIterator(this, direction);\n\t}\n\n\t/**\n\t * Calling this method makes it illegal to add or remove elements from the\n\t * compound object.  Subclasses can invoke this method to protect the\n\t * integrity of the structure from changes by the client.\n\t *\n\t * @usage gcomp.markAsComplete();\n\t */\n\tpublic void markAsComplete() {\n\t\tcomplete = true;\n\t}\n\n\t/**\n\t * Implements the <code>paint</code> operation for this graphical object.  This method\n\t * is not called directly by clients.\n\t *\n\t * @noshow\n\t */\n//\tpublic void paint(Graphics g) {\n//\t\tg = g.create();\n//\t\tg.translate(GMath.round(getX()), GMath.round(getY()));\n//\t\tcontents.mapPaint(g);\n//\t}\n\n\t/**\n\t * Implements the <code>paint2d</code> operation for this graphical object.  This method\n\t * is not called directly by clients.\n\t *\n\t * @noshow\n\t */\n\tprotected void paint2d(Graphics2D g) {\n\t\t// BUGBUG: GObject.paint() calls createTransformedGraphics(),\n\t\t// which translates g by x/y already.\n\t\t// So we don't need to also translate g2 here.\n\t\t\n//\t\tGraphics g2 = g.create();\n//\t\tg2.translate(GMath.round(getX()), GMath.round(getY()));\n//\t\tcontents.mapPaint(g2);\n\t\t\n\t\tcontents.mapPaint(g);\n\t}\n\n\t/**\n\t * Removes a graphical object from this <code>GCompound</code>.\n\t *\n\t * @param gobj The graphical object to remove\n\t * @usage gcomp.remove(gobj);\n\t */\n\tpublic void remove(GObject gobj) {\n\t\tif (complete) {\n\t\t\tthrow new ErrorException(\"You can't remove objects from a GCompound that has been \"\n\t\t\t\t\t+ \"marked as complete.\");\n\t\t}\n\t\tcontents.remove(gobj);\n\t\trepaint();\n\t}\n\n\t/**\n\t * Removes all graphical objects from this <code>GCompound</code>.\n\t *\n\t * @usage gcomp.removeAll();\n\t */\n\tpublic void removeAll() {\n\t\tif (complete) {\n\t\t\tthrow new ErrorException(\"You can't remove objects from a GCompound that has been \"\n\t\t\t\t\t+ \"marked as complete.\");\n\t\t}\n\t\tcontents.removeAll();\n\t\trepaint();\n\t}\n\n\t/**\n\t * Scales every object contained in this compound by the scale factors\n\t * <code>sx</code> and <code>sy</code>.  Automatic repaint is turned off\n\t * during the scaling operation so that at most one repaint is performed.\n\t *\n\t * @param sx The factor used to scale all coordinates in the x direction\n\t * @param sy The factor used to scale all coordinates in the y direction\n\t * @usage gcomp.scale(sx, sy);\n\t */\n\tpublic void scale(double sx, double sy) {\n\t\tComponent comp = getComponent();\n\t\tboolean oldAutoRepaint = false;\n\t\tif (comp instanceof GCanvas) {\n\t\t\toldAutoRepaint = ((GCanvas) comp).getAutoRepaintFlag();\n\t\t\t((GCanvas) comp).setAutoRepaintFlag(false);\n\t\t}\n\t\tfor (int i = getElementCount() - 1; i >= 0; i--) {\n\t\t\tGObject gobj = getElement(i);\n\t\t\tgobj.setLocation(sx * gobj.getX(), sy * gobj.getY());\n\t\t\tif (gobj instanceof GScalable) {\n\t\t\t\t((GScalable) gobj).scale(sx, sy);\n\t\t\t}\n\t\t}\n\t\tif (comp instanceof GCanvas) {\n\t\t\t((GCanvas) comp).setAutoRepaintFlag(oldAutoRepaint);\n\t\t}\n\t\trepaint();\n\t}\n\n\t/**\n\t * Implements the <code>sendBackward</code> function from the <code>GContainer</code>\n\t * interface.  Clients should not be calling this method, but the semantics of\n\t * interfaces forces it to be exported.\n\t *\n\t * @noshow\n\t */\n\tprotected void sendBackward(GObject gobj) {\n\t\tcontents.sendBackward(gobj);\n\t\trepaint();\n\t}\n\n\t/**\n\t * Implements the <code>sendForward</code> function from the <code>GContainer</code>\n\t * interface.  Clients should not be calling this method, but the semantics of\n\t * interfaces forces it to be exported.\n\t *\n\t * @noshow\n\t */\n\tprotected void sendForward(GObject gobj) {\n\t\tcontents.sendForward(gobj);\n\t\trepaint();\n\t}\n\n\t/**\n\t * Implements the <code>sendToBack</code> function from the <code>GContainer</code>\n\t * interface.  Clients should not be calling this method, but the semantics of\n\t * interfaces forces it to be exported.\n\t *\n\t * @noshow\n\t */\n\tprotected void sendToBack(GObject gobj) {\n\t\tcontents.sendToBack(gobj);\n\t\trepaint();\n\t}\n\n\t/**\n\t * Implements the <code>sendToFront</code> function from the <code>GContainer</code>\n\t * interface.  Clients should not be calling this method, but the semantics of\n\t * interfaces forces it to be exported.\n\t *\n\t * @noshow\n\t */\n\tprotected void sendToFront(GObject gobj) {\n\t\tcontents.sendToFront(gobj);\n\t\trepaint();\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/graphics/GContainer.java",
    "content": "/*\n * @(#)GContainer.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Code cleanup 28-May-07 (ESR)\n//   1. Factored out common implementation of GObjectList.\n//   2. Moved GIterator code to this module.\n\npackage acm.graphics;\n\n/* Interface: GContainer */\n/**\n * Defines the functionality of an object that can serve as the parent\n * of a <a href=\"GObject.html\"><code>GObject</code></a>.\n */\npublic interface GContainer {\n\n\t/* Constant: BACK_TO_FRONT */\n\t/** Specifies that iterators should run from back to front */\n\tpublic static final int BACK_TO_FRONT = 0;\n\n\t/* Constant: FRONT_TO_BACK */\n\t/** Specifies that iterators should run from front to back */\n\tpublic static final int FRONT_TO_BACK = 1;\n\n\t/* Method: add(gobj) */\n\t/**\n\t * Adds a new graphical object to this container.\n\t *\n\t * @usage gc.add(gobj);\n\t * @param gobj The graphical object to add\n\t */\n\tpublic void add(GObject gobj);\n\n\t/* Method: add(gobj, x, y) */\n\t/**\n\t * Adds the graphical object to this canvas and sets its location\n\t * to the point (<code>x</code>,&nbsp;<code>y</code>).\n\t *\n\t * @usage gc.add(gobj, x, y);\n\t * @param gobj The graphical object to add\n\t * @param x The new x-coordinate for the object\n\t * @param y The new y-coordinate for the object\n\t */\n\tpublic void add(GObject gobj, double x, double y);\n\n\t/* Method: add(gobj, pt) */\n\t/**\n\t * Adds the graphical object to this canvas and sets its location to the specified point.\n\t *\n\t * @usage gc.add(gobj, pt);\n\t * @param gobj The graphical object to add\n\t * @param pt A <code>GPoint</code> object giving the coordinates of the point\n\t */\n\tpublic void add(GObject gobj, GPoint pt);\n\n\t/* Method: remove(gobj) */\n\t/**\n\t * Removes a graphical object from this container.\n\t *\n\t * @usage gc.remove(gobj);\n\t * @param gobj The graphical object to remove\n\t */\n\tpublic void remove(GObject gobj);\n\n\t/* Method: removeAll() */\n\t/**\n\t * Removes all graphical objects from this container.\n\t *\n\t * @usage gc.removeAll();\n\t */\n\tpublic void removeAll();\n\n\t/* Method: getElementCount() */\n\t/**\n\t * Returns the number of graphical objects stored in this <code>GCanvas</code>.\n\t *\n\t * @usage int n = gc.getElementCount();\n\t * @return The number of graphical objects in this <code>GCanvas</code>\n\t */\n\tpublic int getElementCount();\n\n\t/* Method: getElement(index) */\n\t/**\n\t * Returns the graphical object at the specified index, numbering from back\n\t * to front in the the <i>z</i> dimension.\n\t *\n\t * @usage GObject gobj = gc.getElement(index);\n\t * @param index The index of the component to return\n\t * @return The graphical object at the specified index\n\t */\n\tpublic <T extends GObject> T getElement(int index);\n\n\t/* Method: getElementAt(x, y) */\n\t/**\n\t * Returns the topmost graphical object that contains the point\n\t * (<code>x</code>, <code>y</code>), or <code>null</code> if no such\n\t * object exists.\n\t *\n\t * @usage GObject gobj = gc.getElementAt(x, y);\n\t * @param x The x-coordinate of the point being tested\n\t * @param y The y-coordinate of the point being tested\n\t * @return The graphical object at the specified location, or <code>null</code>\n\t *         if no such object exists.\n\t */\n\tpublic <T extends GObject> T getElementAt(double x, double y);\n\n\t/* Method: getElementAt(pt) */\n\t/**\n\t * Returns the topmost graphical object that contains the specified point,\n\t * or <code>null</code> if no such object exists.\n\t *\n\t * @usage GObject gobj = gc.getElementAt(pt);\n\t * @param pt The coordinates being tested\n\t * @return The graphical object at the specified location, or <code>null</code>\n\t *         if no such object exists\n\t */\n\tpublic <T extends GObject> T getElementAt(GPoint pt);\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/graphics/GImage.java",
    "content": "/*\n * @version: 2016/05/05\n * - resynched with eroberts source\n * - sort methods in ABC order\n * @version: 2015/05/18\n * - added inBounds() method\n * @version: 2015/04/23\n * - added fit(w, h) method for scaling while maintaining aspect ratio.\n */\n\n/*\n * @(#)GImage.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Bug fix 21-Dec-06 (ESR, JTFBug 2006-003)\n//   1. Invalidated sizeDetermined in setImage.\n//   2. Added repaint call in setImage.\n//\n// Feature enhancement 11-Jan-07 (ESR)\n//   1. Added constructor that takes a pixel array.\n//   2. Added a method getPixelArray to return the array.\n//   3. Added static methods to extract and combine pixel components.\n//\n// Feature enhancement 26-May-08 (ESR)\n//   1. Added support for serialization.\n//\n// Feature enhancement 25-Nov-08 (ESR)\n//   1. Added support for saving image files.\n\npackage acm.graphics;\n\nimport acm.util.*;\n\nimport java.awt.*;\nimport java.io.File;\n\n/**\n * The <code>GImage</code> class is a graphical object whose appearance is\n * defined by an image.\n */\npublic class GImage extends GObject implements GResizable, GScalable {\n\t/**\n\t * The serialization code for this class.  This value should be incremented\n\t * whenever you change the structure of this class in an incompatible way,\n\t * typically by adding a new instance variable.\n\t */\n\tstatic final long serialVersionUID = 1L;\n\n\t/* Private instance variables */\n\tprivate Image myImage;\n\tprivate double myWidth;\n\tprivate double myHeight;\n\tprivate boolean sizeDetermined;\n\n\t/**\n\t * Creates a new <code>GImage</code> object at the origin that displays\n\t * the specified image.\n\t *\n\t * @param image The image to use as the contents of this <code>GImage</code>\n\t * @usage GImage gimage = new GImage(image);\n\t */\n\tpublic GImage(Image image) {\n\t\tthis(image, 0, 0);\n\t}\n\n\t/**\n\t * Creates a new <code>GImage</code> object by looking for an image with that\n\t * name.  The search for an image by name consists of the following steps:\n\t * <p>\n\t * <p><ol>\n\t * <li>Check to see if an image with that name has already been defined.  If\n\t * so, return that image.<p>\n\t * <p>\n\t * <li>Check to see if there is a resource available with that name whose\n\t * contents can be read as an <code>Image</code>.  If so, read the image\n\t * from the resource file.<p>\n\t * <p>\n\t * <li>Load the image from a file with the specified name, relative to the\n\t * application directory or the applet code base.\n\t * </ol><p>\n\t *\n\t * @param name The name used to search for the contents of this image\n\t * @usage GImage gimage = new GImage(name);\n\t */\n\tpublic GImage(String name) {\n\t\tthis(name, 0, 0);\n\t}\n\n/* Constructor: GImage(array) */\n\n\t/**\n\t * Creates a new <code>GImage</code> object at the origin.  The <code>array</code>\n\t * parameter is a two-dimensional pixel array in which each pixel value consists\n\t * of an integer that is subdivided into four eight-bit bytes, as follows:\n\t * <p>\n\t * <center>\n\t * <i>alpha</i> <code>&lt;&lt;</code> 24  <code>|</code>\n\t * <i>red</i>   <code>&lt;&lt;</code> 16  <code>|</code>\n\t * <i>green</i> <code>&lt;&lt;</code>  8  <code>|</code>\n\t * <i>blue</i>\n\t * </center>\n\t * <p>\n\t * The <i>alpha</i> value indicates the transparency, and the other values\n\t * are the red, green, and blue components of the color.\n\t *\n\t * @param array A two-dimensional pixel array\n\t * @usage GImage gimage = new GImage(array);\n\t */\n\tpublic GImage(int[][] array) {\n\t\tthis(array, 0, 0);\n\t}\n\n/* Constructor: GImage(image, x, y) */\n\n\t/**\n\t * Creates a new <code>GImage</code> object at the specified coordinates.  The\n\t * <code>image</code> parameter is used to initialize the appearance of the image.\n\t *\n\t * @param image The image to use as the contents of this <code>GImage</code>\n\t * @param x     The x-coordinate of the upper left corner of the image\n\t * @param y     The y-coordinate of the upper left corner of the image\n\t * @usage GImage gimage = new GImage(image, x, y);\n\t */\n\tpublic GImage(Image image, double x, double y) {\n\t\tsetImage(image);\n\t\tsetLocation(x, y);\n\t}\n\n/* Constructor: GImage(name, x, y) */\n\n\t/**\n\t * Creates a new <code>GImage</code> object at the specified coordinates.  The\n\t * <code>name</code> parameter is used to identify an image to display, as\n\t * described in the single-argument version of the\n\t * <a href=\"#GImage(String)\"><code>GImage</code></a> constructor.\n\t *\n\t * @param name The name used to search for the contents of this image\n\t * @param x    The x-coordinate of the upper left corner of the image\n\t * @param y    The y-coordinate of the upper left corner of the image\n\t * @usage GImage gimage = new GImage(image, x, y);\n\t */\n\tpublic GImage(String name, double x, double y) {\n\t\tthis(MediaTools.loadImage(name), x, y);\n\t}\n\n\t/**\n\t * Creates a new <code>GImage</code> object at the specified coordinates.\n\t * The <code>array</code> parameter is a two-dimensional pixel array in\n\t * which each pixel value consists of an integer that is subdivided into\n\t * four eight-bit bytes, as follows:\n\t * <p>\n\t * <center>\n\t * <i>alpha</i> <code>&lt;&lt;</code> 24  <code>|</code>\n\t * <i>red</i>   <code>&lt;&lt;</code> 16  <code>|</code>\n\t * <i>green</i> <code>&lt;&lt;</code>  8  <code>|</code>\n\t * <i>blue</i>\n\t * </center>\n\t * <p>\n\t * The <i>alpha</i> value indicates the transparency, and the other values\n\t * are the red, green, and blue components of the color.\n\t *\n\t * @param array A two-dimensional pixel array\n\t * @param x     The x-coordinate of the upper left corner of the image\n\t * @param y     The y-coordinate of the upper left corner of the image\n\t * @usage GImage gimage = new GImage(array, x, y);\n\t */\n\tpublic GImage(int[][] array, double x, double y) {\n\t\tthis(MediaTools.createImage(array), x, y);\n\t}\n\n\t/**\n\t * Creates an opaque pixel value with the color components given by\n\t * <code>red</code>, <code>green</code>, and <code>blue</code>.\n\t *\n\t * @param red   The red component of the pixel (0 to 255)\n\t * @param green The green component of the pixel (0 to 255)\n\t * @param blue  The blue component of the pixel (0 to 255)\n\t * @return An opaque pixel value containing these components\n\t * @usage int pixel = GImage.createRGBPixel(red, green, blue);\n\t */\n\tpublic static int createRGBPixel(int red, int green, int blue) {\n\t\treturn createRGBPixel(red, green, blue, 0xFF);\n\t}\n\n\t/**\n\t * Creates a pixel value with the color components given by\n\t * <code>red</code>, <code>green</code>, and <code>blue</code>\n\t * and the transparency value <code>alpha</code>.\n\t *\n\t * @param red   The red component of the pixel (0 to 255)\n\t * @param green The green component of the pixel (0 to 255)\n\t * @param blue  The blue component of the pixel (0 to 255)\n\t * @param alpha The transparency value of the pixel (0 to 255)\n\t * @return A pixel value containing these components\n\t * @usage int pixel = GImage.createRGBPixel(red, green, blue);\n\t */\n\tpublic static int createRGBPixel(int red, int green, int blue, int alpha) {\n\t\treturn (alpha << 24) | (red << 16) | (green << 8) | blue;\n\t}\n\n\t/**\n\t * Computes the size of the image.\n\t */\n\tprivate void determineSize() {\n\t\tif (sizeDetermined) {\n\t\t\treturn;\n\t\t}\n\t\tComponent component = getComponent();\n\t\tif (component == null) {\n\t\t\tcomponent = MediaTools.getImageObserver();\n\t\t}\n\t\tmyWidth = myImage.getWidth(component);\n\t\tmyHeight = myImage.getHeight(component);\n\t\tsizeDetermined = true;\n\t}\n\n\t/**\n\t * Resizes the image to the largest size that fits within the given width/height\n\t * while maintaining the image's \"aspect ratio\" (not stretching the image's\n\t * relative width/height).\n\t *\n\t * @param width  maximum width, in pixels\n\t * @param height maximum height, in pixels\n\t */\n\tpublic void fit(double width, double height) {\n\t\tdouble aspectRatio = myWidth / myHeight;\n\t\tdouble widthRatio = myWidth / width;\n\t\tdouble heightRatio = myHeight / height;\n\t\tif (widthRatio > heightRatio) {\n\t\t\t// width is the constrained dimension\n\t\t\tmyWidth = width;\n\t\t\tmyHeight = width / aspectRatio;\n\t\t} else {\n\t\t\t// height is the constrained dimension\n\t\t\tmyHeight = height;\n\t\t\tmyWidth = height * aspectRatio;\n\t\t}\n\t}\n\n\t/**\n\t * Returns the alpha component from an RGB value.\n\t *\n\t * @param pixel An <code>int</code> containing a pixel value as alpha/red/green/blue.\n\t * @return The alpha component of the pixel\n\t * @usage int alpha = GImage.getAlpha(pixel);\n\t */\n\tpublic static int getAlpha(int pixel) {\n\t\treturn (pixel >> 24) & 0xFF;\n\t}\n\n\t/**\n\t * Returns an AWT <code>Rectangle</code> that specifies the bounds of this object.\n\t *\n\t * @return A <code>Rectangle</code> that specifies the bounds of this object\n\t * @usage Rectangle r = grect.getAWTBounds();\n\t */\n\tprotected Rectangle getAWTBounds() {\n\t\tdetermineSize();\n\t\treturn new Rectangle(GMath.round(getX()), GMath.round(getY()), GMath.round(myWidth), GMath.round(myHeight));\n\t}\n\n\t/**\n\t * Returns the blue component from an RGB value.\n\t *\n\t * @param pixel An <code>int</code> containing a pixel value as alpha/red/green/blue.\n\t * @return The blue component of the pixel\n\t * @usage int blue = GImage.getBlue(pixel);\n\t */\n\tpublic static int getBlue(int pixel) {\n\t\treturn pixel & 0xFF;\n\t}\n\n\t/**\n\t * Returns the bounding box of this object.\n\t *\n\t * @return The bounding box for this object\n\t * @usage GRectangle bounds = gimage.getBounds();\n\t */\n\tpublic GRectangle getBounds() {\n\t\tdetermineSize();\n\t\treturn new GRectangle(getX(), getY(), myWidth, myHeight);\n\t}\n\n\t/**\n\t * Returns the green component from an RGB value.\n\t *\n\t * @param pixel An <code>int</code> containing a pixel value as alpha/red/green/blue.\n\t * @return The green component of the pixel\n\t * @usage int green = GImage.getGreen(pixel);\n\t */\n\tpublic static int getGreen(int pixel) {\n\t\treturn (pixel >> 8) & 0xFF;\n\t}\n\n\t/**\n\t * Returns the image stored inside this <code>GImage</code>.\n\t *\n\t * @return The <code>Image</code> object stored inside this <code>GImage</code>\n\t * @usage Image image = gimage.getImage();\n\t */\n\tpublic Image getImage() {\n\t\treturn myImage;\n\t}\n\n\t/**\n\t * Returns the red component from an RGB value.\n\t *\n\t * @param pixel An <code>int</code> containing a pixel value as alpha/red/green/blue.\n\t * @return The red component of the pixel\n\t * @usage int red = GImage.getRed(pixel);\n\t */\n\tpublic static int getRed(int pixel) {\n\t\treturn (pixel >> 16) & 0xFF;\n\t}\n\n\t/**\n\t * Returns the size of this object as a <code>GDimension</code>.\n\t *\n\t * @return The size of this object\n\t * @usage GDimension size = gimage.getSize();\n\t */\n\tpublic GDimension getSize() {\n\t\treturn new GDimension(myWidth, myHeight);\n\t}\n\n\t/**\n\t * Returns whether the given x/y pixel position is within the bounds of the image,\n\t * in other words, whether it is between (0, 0) and (w, h).\n\t *\n\t * @param x the pixel's x-coordinate\n\t * @param y the pixel's y-coordinate\n\t * @return true if the given x/y pixel position is between (0, 0) and (w, h)\n\t */\n\tpublic boolean inBounds(double x, double y) {\n\t\tint xx = (int) x;\n\t\tint yy = (int) y;\n\t\treturn xx >= 0 && xx < getWidth()\n\t\t\t\t&& yy >= 0 && yy < getHeight();\n\t}\n\n\t/**\n\t * Implements the <code>paint</code> operation for this graphical object.  This method\n\t * is not called directly by clients.\n\t *\n\t * @noshow\n\t */\n//\tpublic void paint2d(Graphics g) {\n//\t\tComponent imageObserver = getComponent();\n//\t\tif (imageObserver == null) {\n//\t\t\timageObserver = MediaTools.getImageObserver();\n//\t\t}\n//\t\tif (myImage != null && imageObserver != null) {\n//\t\t\tRectangle r = getAWTBounds();\n//\t\t\tColor color = getObjectColor();\n//\t\t\tif (color == null) {\n//\t\t\t\tg.drawImage(myImage, r.x, r.y, r.width, r.height, imageObserver);\n//\t\t\t} else {\n//\t\t\t\tg.drawImage(myImage, r.x, r.y, r.width, r.height, color, imageObserver);\n//\t\t\t}\n//\t\t}\n//\t}\n\n\t/**\n\t * Implements the <code>paint2d</code> operation for this graphical object.  This method\n\t * is not called directly by clients.\n\t *\n\t * @noshow\n\t */\n\tprotected void paint2d(Graphics2D graphics2d) {\n\t\tjava.awt.Component component = getComponent();\n\t\tif (component == null) {\n\t\t\tcomponent = MediaTools.getImageObserver();\n\t\t}\n\t\tif (myImage != null && component != null) {\n\t\t\tdetermineSize();\n\t\t\tjava.awt.Color color = getObjectColor();\n\t\t\tif (color == null) {\n\t\t\t\tgraphics2d.drawImage(myImage, 0, 0, GMath.round(myWidth), GMath.round(myHeight), component);\n\t\t\t} else {\n\t\t\t\tgraphics2d.drawImage(myImage, 0, 0, GMath.round(myWidth), GMath.round(myHeight), color, component);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Saves the image to the specified file.  The data format for the\n\t * image file is determined by the suffix of the filename.  If the\n\t * suffix of the file is not recognized as a supported image type,\n\t * calling this method generates an error.\n\t *\n\t * @param file The <code>File</code> to which the image is saved\n\t * @usage gimage.saveImage(file);\n\t */\n\tpublic void saveImage(File file) {\n\t\tMediaTools.saveImage(myImage, file);\n\t}\n\n\t/**\n\t * Saves the image to a file with the specified filename.  The data format\n\t * for the image file is determined by the suffix of the filename.  If the\n\t * suffix of the file is not recognized as a supported image type, calling\n\t * this method generates an error.\n\t *\n\t * @param filename The name of the file to which the image is saved\n\t * @usage gimage.saveImage(filename);\n\t */\n\tpublic void saveImage(String filename) {\n\t\tMediaTools.saveImage(myImage, filename);\n\t}\n\n\t/**\n\t * Changes the bounds of this object to the specified values.\n\t *\n\t * @param x      The new x-coordinate for the object\n\t * @param y      The new y-coordinate for the object\n\t * @param width  The new width of the object\n\t * @param height The new height of the object\n\t * @usage gimage.setBounds(x, y, width, height);\n\t */\n\tpublic void setBounds(double x, double y, double width, double height) {\n\t\tmyWidth = width;\n\t\tmyHeight = height;\n\t\tsetLocation(x, y);\n\t}\n\n\t/**\n\t * Changes the bounds of this object to the values from the specified\n\t * <code>GRectangle</code>.\n\t *\n\t * @param bounds A <code>GRectangle</code> specifying the new bounds\n\t * @usage gimage.setBounds(bounds);\n\t */\n\tpublic final void setBounds(GRectangle bounds) {\n\t\tsetBounds(bounds.getX(), bounds.getY(), bounds.getWidth(), bounds.getHeight());\n\t}\n\n\t/**\n\t * Resets the image used by this <code>GImage</code> object to the new image\n\t * specified as an argument.  Calling <code>setImage</code> automatically changes\n\t * the size of the image to be equal to that of the image data.\n\t *\n\t * @param image The image to use as the contents of this <code>GImage</code>\n\t * @usage gimage.setImage(image);\n\t */\n\tpublic void setImage(Image image) {\n\t\tmyImage = MediaTools.loadImage(image);\n\t\tsizeDetermined = false;\n\t\tdetermineSize();\n\t\trepaint();\n\t}\n\n\t/**\n\t * Resets the image used by this <code>GImage</code> object to the one identified\n\t * by the argument <code>name</code>, which is processed exactly as described\n\t * in the constructors.  Calling <code>setImage</code> automatically changes\n\t * the size of the image to be equal to that of the image data.\n\t *\n\t * @param name The name used to search for the contents of this image\n\t * @usage gimage.setImage(name);\n\t */\n\tpublic void setImage(String name) {\n\t\tsetImage(MediaTools.loadImage(name));\n\t}\n\n\t/**\n\t * Changes the size of this object to the specified width and height.\n\t *\n\t * @param width  The new width of the object\n\t * @param height The new height of the object\n\t * @usage gimage.setSize(width, height);\n\t */\n\tpublic void setSize(double width, double height) {\n\t\tmyWidth = width;\n\t\tmyHeight = height;\n\t\trepaint();\n\t}\n\n\t/**\n\t * Changes the size of this object to the specified <code>GDimension</code>.\n\t *\n\t * @param size A <code>GDimension</code> object specifying the size\n\t * @usage gimage.setSize(size);\n\t * @noshow\n\t */\n\tpublic final void setSize(GDimension size) {\n\t\tsetSize(size.getWidth(), size.getHeight());\n\t}\n\n\t/**\n\t * Scales the object on the screen by the scale factors <code>sx</code> and <code>sy</code>.\n\t *\n\t * @param sx The factor used to scale all coordinates in the x direction\n\t * @param sy The factor used to scale all coordinates in the y direction\n\t * @usage gobj.scale(sx, sy);\n\t */\n\tpublic void scale(double sx, double sy) {\n\t\tmyWidth *= sx;\n\t\tmyHeight *= sy;\n\t\trepaint();\n\t}\n\n\t/**\n\t * Returns a two-dimensional array of pixel values from the stored image.\n\t *\n\t * @return A two-dimensional array of pixel values from the stored image\n\t * @usage int[][] array = gimage.getPixelArray();\n\t */\n\tpublic int[][] getPixelArray() {\n\t\treturn MediaTools.getPixelArray(myImage);\n\t}\n\n\t/**\n\t * Sets the image to use the given two-dimensional array of pixel values.\n\t *\n\t * @usage gimage.setPixelArray(array);\n\t */\n\tpublic void setPixelArray(int[][] pixels) {\n\t\tsetImage(MediaTools.createImage(pixels));\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/graphics/GIterator.java",
    "content": "/*\n * @version 2017/04/27\n * - moved out from GContainer.java into its own file\n */\n\npackage acm.graphics;\n\nimport java.util.*;\nimport acm.util.*;\n\n/* Package class: GIterator */\n/**\n * Implements an iterator class for any object that implements\n * <code>GContainer</code> (i.e., <a href=\"GCanvas.html\"><code>GCanvas</code></a>\n * and <a href=\"GCompound.html\"><code>GCompound</code></a>).  The usual method\n * for using this class is to write something like</p>\n *\n * <p><pre><code>\n * &nbsp;    for (Iterator&lt;GObject&gt; i = gc.iterator(direction); i.hasNext(); )\n * </code></pre>\n *\n * where <code>gc</code> is the graphic container.  The enumeration supports\n * traversal in two directions.  By default, it starts with the front\n * element and works toward the back (as would be appropriate, for\n * example, when trying to find the topmost component for a mouse click).\n * You can, however, also process the elements of the container from back\n * to front (as would be useful when drawing elements of the container,\n * when the front objects should be drawn last).  To specify the direction\n * of the traversal, specify either <code>GContainer.FRONT_TO_BACK</code> or\n * <code>GContainer.BACK_TO_FRONT</code> in the <code>iterator</code> call.\n */\nclass GIterator implements Iterator<GObject> {\n\t/* Private instance variables */\n\tprivate GContainer cont;\n\tprivate int dir;\n\tprivate int index;\n\tprivate int nElements;\n\n\t/* Constructor: GIterator(container, direction) */\n\t/**\n\t * Creates a new <code>GIterator</code> that runs through the\n\t * container in the specified direction (<code>GContainer.FRONT_TO_BACK</code>\n\t * or <code>GContainer.BACK_TO_FRONT</code>).\n\t *\n\t * @usage Iterator<GObject> i = new GIterator(container, direction);\n\t * @param container The <code>GContainer</code> whose elements the iterator should return\n\t * @param direction The direction in which to process the elements\n\t */\n\tpublic GIterator(GContainer container, int direction) {\n\t\tswitch (direction) {\n\t\tcase GContainer.FRONT_TO_BACK: case GContainer.BACK_TO_FRONT:\n\t\t\tdir = direction;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow new ErrorException(\"Illegal direction for iterator\");\n\t\t}\n\t\tcont = container;\n\t\tindex = 0;\n\t\tnElements = container.getElementCount();\n\t}\n\n\t/* Method: hasNext() */\n\t/**\n\t * Returns <code>true</code> if the iterator has more elements.  Implements\n\t * the <code>hasNext</code> method for the <code>Iterator</code> interface.\n\t *\n\t * @usage while (i.hasNext()) . . .\n\t * @return <code>true</code> if the iterator has more elements, <code>false</code> otherwise\n\t */\n\tpublic boolean hasNext() {\n\t\treturn index < nElements;\n\t}\n\n\t/* Method: next() */\n\t/**\n\t * Returns the next element from the iterator.  Implements the <code>next</code>\n\t * method for the <code>Iterator</code> interface.\n\t *\n\t * @usage Object element = i.next();\n\t * @return The next element from the iterator\n\t */\n\tpublic GObject next() {\n\t\tif (dir == GContainer.FRONT_TO_BACK) {\n\t\t\treturn cont.getElement(nElements - index++ - 1);\n\t\t} else {\n\t\t\treturn cont.getElement(index++);\n\t\t}\n\t}\n\n\t/* Method: nextElement() */\n\t/**\n\t * Returns the next element from the iterator as a <code>GObject</code>.  This\n\t * method is callable only if the iterator is declared as a <code>GIterator</code>.\n\t *\n\t * @usage GObject element = i.nextElement();\n\t * @return The next element from the iterator as a <code>GObject</code>\n\t */\n\tpublic GObject nextElement() {\n\t\treturn next();\n\t}\n\n\t/* Method: remove() */\n\t/**\n\t * Removes the current element from its container.  Implements the <code>remove</code>\n\t * method for the <code>Iterator</code> interface.\n\t *\n\t * @usage i.remove();\n\t */\n\tpublic void remove() {\n\t\tif (dir == GContainer.FRONT_TO_BACK) {\n\t\t\tcont.remove(cont.getElement(nElements - --index - 1));\n\t\t} else {\n\t\t\tcont.remove(cont.getElement(--index));\n\t\t}\n\t\tnElements--;\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/graphics/GLabel.java",
    "content": "/*\n * @version 2016/05/10\n * - fixed bug with drawing at wrong location (paint vs paint2d)\n * @version 2016/05/05\n * - resynched with eroberts source\n * - alphabetized members\n * @version 2015/04/29\n * - added setText method to mimick less-standard setLabel\n */\n\n\n/*\n * @(#)GLabel.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Feature enhancement 26-May-08 (ESR)\n//   1. Added support for serialization.\n\npackage acm.graphics;\n\nimport acm.util.*;\nimport java.awt.*;\nimport java.awt.geom.*;\n\n/**\n * The <code>GLabel</code> class is a graphical object whose appearance\n * consists of a text string.\n */\npublic class GLabel extends GObject {\n\t/**\n\t * The serialization code for this class.  This value should be incremented\n\t * whenever you change the structure of this class in an incompatible way,\n\t * typically by adding a new instance variable.\n\t */\n\tstatic final long serialVersionUID = 1L;\n\t/**\n\t * The default font used to display strings.  You can change the font by invoking\n\t * the <a href=\"#setFont(Font)\"><code>setFont</code></a> method.\n\t */\n\tpublic static final Font DEFAULT_FONT = new Font(\"Default\", Font.PLAIN, 12);\n\n\tprivate static final Component DUMMY_COMPONENT = MediaTools.getImageObserver();\n\n\t/* Private instance variables */\n\tprivate String label;\n\tprivate Font labelFont;\n\n\t/**\n\t * Creates a new <code>GLabel</code> object initialized to contain the specified string.\n\t *\n\t * @param str The initial contents of the <code>GLabel</code>\n\t * @usage GLabel glabel = new GLabel(str);\n\t */\n\tpublic GLabel(String str) {\n\t\tthis(str, 0, 0);\n\t}\n\n\t/**\n\t * Creates a new <code>GLabel</code> object with its baseline origin at the\n\t * specified position.\n\t *\n\t * @param str The initial contents of the <code>GLabel</code>\n\t * @param x   The x-coordinate of the label origin\n\t * @param y   The y-coordinate of the baseline for the label\n\t * @usage GLabel glabel = new GLabel(str, x, y);\n\t */\n\tpublic GLabel(String str, double x, double y) {\n\t\tlabel = str;\n\t\tsetFont(DEFAULT_FONT);\n\t\tsetLocation(x, y);\n\t}\n\n\t/**\n\t * Returns true if this label contains the given x/y point.\n\t *\n\t * @param x the x-coordinate to check\n\t * @param y the y-coordinate to check\n\t * @return true if this label contains the given x/y point\n\t */\n\tpublic boolean contains(double x, double y) {\n\t\tFontMetrics fm = getFontMetrics();\n\t\tObject obj = new java.awt.geom.Rectangle2D.Double(0.0,\n\t\t\t\t-fm.getAscent(), fm.stringWidth(label),\n\t\t\t\tfm.getHeight());\n\t\tAffineTransform affinetransform = getMatrix();\n\t\tif (affinetransform != null) {\n\t\t\tobj = affinetransform.createTransformedShape(((Shape) (obj)));\n\t\t}\n\t\treturn ((Shape) (obj)).contains(x - getX(), y - getY());\n\t}\n\n\t/**\n\t * Returns the distance this string extends above the baseline.\n\t *\n\t * @return The ascent of this string in pixels\n\t * @usage double ascent = glabel.getAscent();\n\t */\n\tpublic double getAscent() {\n\t\treturn getFontMetrics().getAscent();\n\t}\n\n\t/**\n\t * Returns a <code>GRectangle</code> that specifies the bounding box for the string.\n\t *\n\t * @return The bounding box for this object\n\t * @usage GRectangle bounds = glabel.getBounds();\n\t */\n\tpublic GRectangle getBounds() {\n\t\tFontMetrics fm = getFontMetrics();\n\t\tObject obj = new java.awt.geom.Rectangle2D.Double(0.0,\n\t\t\t\t-fm.getAscent(), fm.stringWidth(label),\n\t\t\t\tfm.getHeight());\n\t\tAffineTransform affinetransform = getMatrix();\n\t\tif (affinetransform != null) {\n\t\t\tobj = affinetransform.createTransformedShape(((Shape) (obj)));\n\t\t}\n\t\tjava.awt.Rectangle rectangle = ((Shape) (obj)).getBounds();\n\t\tGRectangle bounds = new GRectangle(getX() + rectangle.getX(), getY()\n\t\t\t\t+ rectangle.getY(), rectangle.getWidth(), rectangle.getHeight());\n\t\treturn bounds;\n\t}\n\n\t/**\n\t * Returns the distance this string descends below the baseline.\n\t *\n\t * @return The descent of this string in pixels\n\t * @usage double descent = glabel.getDescent();\n\t */\n\tpublic double getDescent() {\n\t\treturn getFontMetrics().getDescent();\n\t}\n\n\t/**\n\t * Returns the font in which the <code>GLabel</code> is displayed.\n\t *\n\t * @return The font in use by this object\n\t * @usage Font font = glabel.getFont();\n\t */\n\tpublic Font getFont() {\n\t\treturn labelFont;\n\t}\n\n\t/**\n\t * Returns a <code>FontMetrics</code> object describing the dimensions of this string.\n\t *\n\t * @return A <code>FontMetrics</code> object describing the dimensions of this string\n\t * @usage FontMetrics fm = glabel.getFontMetrics();\n\t * @noshow\n\t */\n\tpublic FontMetrics getFontMetrics() {\n\t\tComponent comp = getComponent();\n\t\tif (comp == null) {\n\t\t\tcomp = DUMMY_COMPONENT;\n\t\t}\n\t\treturn comp.getFontMetrics(labelFont);\n\t}\n\n\t/**\n\t * Returns the height of this string, as it appears on the display.\n\t *\n\t * @return The height of this string\n\t * @usage double height = glabel.getHeight();\n\t */\n\tpublic double getHeight() {\n\t\treturn getFontMetrics().getHeight();\n\t}\n\n\t/**\n\t * Returns the string displayed by this object.\n\t * Equivalent to getText.\n\t *\n\t * @return The string displayed by this object\n\t * @usage String str = glabel.getLabel();\n\t */\n\tpublic String getLabel() {\n\t\treturn label;\n\t}\n\n\t/**\n\t * Returns the string displayed by this object.\n\t * Equivalent to getLabel.\n\t *\n\t * @return The string displayed by this object\n\t * @usage String str = glabel.getLabel();\n\t */\n\tpublic String getText() {\n\t\treturn getLabel();\n\t}\n\n\t/**\n\t * Returns the width of this string, as it appears on the display.\n\t *\n\t * @return The width of this object\n\t * @usage double width = glabel.getWidth();\n\t */\n\tpublic double getWidth() {\n\t\treturn getFontMetrics().stringWidth(label);\n\t}\n\n\t/**\n\t * Implements the <code>paint2d</code> operation for this graphical object.  This method\n\t * is not called directly by clients.\n\t *\n\t * @noshow\n\t */\n\tpublic void paint2d(Graphics2D g) {\n\t\tg.setFont(labelFont);\n\t\tg.drawString(label, 0, 0);\n\t}\n\n\t/**\n\t * Returns a string indicating the parameters of this object.\n\t *\n\t * @noshow\n\t */\n\tpublic String paramString() {\n\t\treturn super.paramString() + \", string=\\\"\" + label + \"\\\"\";\n\t}\n\n\t/**\n\t * Sets the bottom y-coordinate of this object to the given y value.\n\t * Since labels use y-positioning relative to their bottom, not the top,\n\t * this is equivalent to calling setY().\n\t *\n\t * @param bottomY The new bottom y-coordinate for the object\n\t * @usage gobj.setBottomY(y);\n\t */\n\t@Override\n\tpublic void setBottomY(double bottomY) {\n\t\t// we have to override this method because labels use y-positioning\n\t\t// relative to the bottom, not the top\n\t\tsetLocation(getX(), bottomY);\n\t}\n\n\t/**\n\t * Sets the central x/y-coordinates of this object to the given x/y values.\n\t *\n\t * @param centerX The new central x-coordinate for the object\n\t * @param centerY The new central y-coordinate for the object\n\t * @usage gobj.setCenterLocation(x, y);\n\t */\n\t@Override\n\tpublic void setCenterLocation(double centerX, double centerY) {\n\t\t// we have to override this method because labels use y-positioning\n\t\t// relative to the bottom, not the top\n\t\tsetLocation(centerX - getWidth() / 2, centerY + getHeight() / 2);\n\t}\n\n\t/**\n\t * Sets the central y-coordinate of this object to the given y value.\n\t *\n\t * @param centerY The new central y-coordinate for the object\n\t * @usage gobj.setCenterY(y);\n\t */\n\t@Override\n\tpublic void setCenterY(double centerY) {\n\t\t// we have to override this method because labels use y-positioning\n\t\t// relative to the bottom, not the top\n\t\tsetLocation(getX(), centerY + getHeight() / 2);\n\t}\n\n\t/**\n\t * Changes the font used to display the <code>GLabel</code>.  This call will\n\t * usually change the size of the displayed object and will therefore affect\n\t * the result of calls to <a href=\"GObject.html#getSize()\"><code>getSize</code></a>\n\t * and <a href=\"GObject.html#getBounds()\"><code>getBounds</code></a>.\n\t *\n\t * @param font A <code>Font</code> object indicating the new font\n\t * @usage glabel.setFont(font);\n\t */\n\tpublic void setFont(Font font) {\n\t\tlabelFont = JTFTools.getStandardFont(font);\n\t\trepaint();\n\t}\n\n\t/**\n\t * Changes the font used to display the <code>GLabel</code> as specified by\n\t * the string <code>str</code>, which is interpreted in the style of\n\t * <code>Font.decode</code>.  The usual format of the font string is\n\t * <p>\n\t * <p><pre><code>\n\t * &nbsp;    <font face=\"serif;times\"><i>family</i></font>-<font face=\"serif;times\"><i>style</i></font>-<font face=\"serif;times\"><i>size</i></font>\n\t * <p>\n\t * <p>where both <i>style</i> and <i>size</i> are optional.  If any of these\n\t * parts are specified as an asterisk, the existing value is retained.\n\t * <p>\n\t * @usage glabel.setFont(str);\n\t * @param str A <code>String</code> specifying the new font\n\t */\n\tpublic void setFont(String str) {\n\t\tsetFont(JTFTools.decodeFont(str, getFont()));\n\t}\n\n\t/**\n\t * Changes the string stored within the <code>GLabel</code> object, so that\n\t * a new text string appears on the display.\n\t * Equivalent to setText.\n\t *\n\t * @param str The new string to display\n\t * @usage glabel.setLabel(str);\n\t */\n\tpublic void setLabel(String str) {\n\t\tlabel = str;\n\t\trepaint();\n\t}\n\n\t/**\n\t * Changes the string stored within the <code>GLabel</code> object, so that\n\t * a new text string appears on the display.\n\t * Equivalent to setLabel.\n\t *\n\t * @param str The new string to display\n\t * @usage glabel.setText(str);\n\t */\n\tpublic void setText(String str) {\n\t\tsetLabel(str);\n\t}\n\n\t/**\n\t * Sets the top y-coordinate of this object to the given y value.\n\t * Since labels use y-positioning relative to their bottom, not the top, this\n\t * is equivalent to calling setY() and shifting downward by the label's height.\n\t *\n\t * @param bottomY The new top y-coordinate for the object\n\t * @usage gobj.setBottomY(y);\n\t */\n\tpublic void setTopY(double topY) {\n\t\t// we have to override this method because labels use y-positioning\n\t\t// relative to the bottom, not the top\n\t\tsetLocation(getX(), topY + getHeight());\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/graphics/GLine.java",
    "content": "/*\n * @version 2017/10/14\n * - added Point/GPoint/Line2D constructors\n * @version 2016/06/01\n * - added new constructors\n * - added setEndPointPolar\n * - alphabetized methods\n * @version 2016/05/22\n * - bug fix for incorrect positioning in paint2d\n */\n// REVISION HISTORY\n// Code cleanup 30-Sep-06 (ESR)\n//   1. Removed vestigial inherited methods setFilled and isFilled.\n// Feature enhancement 26-May-08 (ESR)\n//   1. Added support for serialization.\n\npackage acm.graphics;\n\nimport java.awt.*;\nimport java.awt.geom.Line2D;\n\n/* Class: GLine */\n/**\n * The <code>GLine</code> class is a graphical object whose appearance consists\n * of a line segment.\n */\npublic class GLine extends GObject implements GScalable {\n\t/* Serial version UID */\n\t/**\n\t * The serialization code for this class. This value should be incremented\n\t * whenever you change the structure of this class in an incompatible way,\n\t * typically by adding a new instance variable.\n\t */\n\tstatic final long serialVersionUID = 1L;\n\n\t/* Field: LINE_TOLERANCE */\n\t/**\n\t * This constant defines how close (measured in pixel units) a point has to\n\t * be to a line before that point is considered to be \"contained\" within the\n\t * line.\n\t */\n\tpublic static final double LINE_TOLERANCE = 1.5;\n\n\t/* Private instance variables */\n\tprivate double dx;\n\tprivate double dy;\n\n\t/* Constructor: GLine() */\n\t/**\n\t * Constructs a line segment of length 0 at position (0, 0).\n\t *\n\t * @usage GLine gline = new GLine();\n\t */\n\tpublic GLine() {\n\t\tthis(0, 0, 0, 0);\n\t}\n\n\t/* Constructor: GLine(x0, y0) */\n\t/**\n\t * Constructs a line segment of length 0 at position (x0, y0).\n\t *\n\t * @usage GLine gline = new GLine(x0, y0);\n\t */\n\tpublic GLine(double x0, double y0) {\n\t\tthis(x0, y0, x0, y0);\n\t}\n\n\t/* Constructor: GLine(x0, y0, x1, y1) */\n\t/**\n\t * Constructs a line segment from its endpoints. The point (<code>x0</code>\n\t * ,&nbsp;<code>y0</code>) defines the start of the line and the point (\n\t * <code>x1</code>,&nbsp;<code>y1</code>) defines the end.\n\t *\n\t * @usage GLine gline = new GLine(x0, y0, x1, y1);\n\t * @param x0\n\t *            The x-coordinate of the start of the line\n\t * @param y0\n\t *            The y-coordinate of the start of the line\n\t * @param x1\n\t *            The x-coordinate of the end of the line\n\t * @param y1\n\t *            The y-coordinate of the end of the line\n\t */\n\tpublic GLine(double x0, double y0, double x1, double y1) {\n\t\tsetLocation(x0, y0);\n\t\tdx = x1 - x0;\n\t\tdy = y1 - y0;\n\t}\n\t\n\t/**\n\t * Constructs a line segment from the given pair of points.\n\t */\n\tpublic GLine(GPoint p1, GPoint p2) {\n\t\tthis(p1.getX(), p1.getY(), p2.getX(), p2.getY());\n\t}\n\t\n\t/**\n\t * Constructs a line segment from the given other line segment.\n\t */\n\tpublic GLine(Line2D line) {\n\t\tthis(line.getX1(), line.getY1(), line.getX2(), line.getY2());\n\t}\n\t\n\t/**\n\t * Constructs a line segment from the given pair of points.\n\t */\n\tpublic GLine(Point p1, Point p2) {\n\t\tthis(p1.getX(), p1.getY(), p2.getX(), p2.getY());\n\t}\n\n\t/* Method: contains(x, y) */\n\t/**\n\t * Checks to see whether a point is inside the object. For the\n\t * <code>GLine</code> class, containment is defined to mean that the point\n\t * is within <a href=\"#LINE_TOLERANCE\"><code>LINE_TOLERANCE</code></a>\n\t * pixels of the line.\n\t *\n\t * @usage if (gline.contains(x, y)) . . .\n\t * @param x\n\t *            The x-coordinate of the point being tested\n\t * @param y\n\t *            The y-coordinate of the point being tested\n\t * @return <code>true</code> if the point (<code>x</code>,&nbsp;\n\t *         <code>y</code>) is inside\n\t */\n\tpublic boolean contains(double x, double y) {\n\t\tdouble x0 = getX();\n\t\tdouble y0 = getY();\n\t\tdouble x1 = x0 + dx;\n\t\tdouble y1 = y0 + dy;\n\t\treturn intersects(x, y, x0, y0, x1, y1, getLineWidth());\n\t}\n\n\t/* Private method: distanceSquared(x0, y0, x1, y1) */\n\t/**\n\t * Returns the square of the distance between (<code>x0</code>,&nbsp;\n\t * <code>y0</code>) and (<code>x1</code>,&nbsp;<code>y1</code>).\n\t */\n\tpublic static double distanceSquared(double x0, double y0, double x1, double y1) {\n\t\treturn (x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0);\n\t}\n\n\t/* Method: getBounds() */\n\t/**\n\t * Returns the bounding box for this object.\n\t *\n\t * @usage GRectangle bounds = gline.getBounds();\n\t * @return The bounding box for this object\n\t */\n\tpublic GRectangle getBounds() {\n\t\tdouble x = Math.min(getX(), getX() + dx);\n\t\tdouble y = Math.min(getY(), getY() + dy);\n\t\treturn new GRectangle(x, y, Math.abs(dx), Math.abs(dy));\n\t}\n\n\t/* Method: getEndPoint() */\n\t/**\n\t * Returns the end point of the line as a <code>GPoint</code> object.\n\t *\n\t * @usage GPoint pt = gline.getEndPoint();\n\t * @return The coordinates of the end point of the line\n\t */\n\tpublic GPoint getEndPoint() {\n\t\treturn new GPoint(getX() + dx, getY() + dy);\n\t}\n\n\t/* Method: getStartPoint() */\n\t/**\n\t * Returns the coordinates of the initial point in the line. This method is\n\t * identical to <a href=\"#getLocation()\"><code>getLocation</code></a> and\n\t * exists only to provide symmetry with <a href=\n\t * \"#setStartPoint(double, double)\"><code>setStartPoint</code></a>.\n\t *\n\t * @usage GPoint pt = gline.getStartPoint();\n\t * @return The coordinates of the origin of the line\n\t */\n\tpublic GPoint getStartPoint() {\n\t\treturn getLocation();\n\t}\n\t\n\t/**\n\t * Returns whether the given x/y point intersects the line from x0,y0 to x1,y1 of the given width.\n\t */\n\tpublic static boolean intersects(double x, double y, double x0, double y0, double x1, double y1, double lineWidth) {\n\t\tdouble tSquared = LINE_TOLERANCE * LINE_TOLERANCE + lineWidth - 1;\n\t\tif (GLine.distanceSquared(x, y, x0, y0) < tSquared)\n\t\t\treturn true;\n\t\tif (GLine.distanceSquared(x, y, x1, y1) < tSquared)\n\t\t\treturn true;\n\t\tif (x < Math.min(x0, x1) - LINE_TOLERANCE + lineWidth - 1)\n\t\t\treturn false;\n\t\tif (x > Math.max(x0, x1) + LINE_TOLERANCE + lineWidth - 1)\n\t\t\treturn false;\n\t\tif (y < Math.min(y0, y1) - LINE_TOLERANCE + lineWidth - 1)\n\t\t\treturn false;\n\t\tif (y > Math.max(y0, y1) + LINE_TOLERANCE + lineWidth - 1)\n\t\t\treturn false;\n\t\tif ((float) x0 - (float) x1 == 0 && (float) y0 - (float) y1 == 0)\n\t\t\treturn false;\n\t\tdouble u = ((x - x0) * (x1 - x0) + (y - y0) * (y1 - y0)) / distanceSquared(x0, y0, x1, y1);\n\t\treturn distanceSquared(x, y, x0 + u * (x1 - x0), y0 + u * (y1 - y0)) < tSquared;\n\t}\n\n\t/* Method: paint2d(g) */\n\t/**\n\t * Implements the <code>paint2d</code> operation for this graphical object.\n\t * This method is not called directly by clients.\n\t * \n\t * @noshow\n\t */\n\tpublic void paint2d(Graphics2D g) {\n\t\t// Line2D.Double line = new Line2D.Double(0.0D, 0.0D, GMath.round(dx), GMath.round(dy));\n\t\t// g.draw(line);\n\t\tg.drawLine(0, 0, (int) dx, (int) dy);\n\t}\n\n\t/* Protected method: paramString() */\n\t/**\n\t * Returns a string indicating the parameters of this object.\n\t * \n\t * @noshow\n\t */\n\tpublic String paramString() {\n\t\tString tail = super.paramString();\n\t\ttail = tail.substring(tail.indexOf(')') + 1);\n\t\tGPoint pt = getStartPoint();\n\t\tString param = \"start=(\" + pt.getX() + \", \" + pt.getY() + \")\";\n\t\tpt = getEndPoint();\n\t\tparam += \", end=(\" + pt.getX() + \", \" + pt.getY() + \")\";\n\t\tparam += \", lineWidth=\" + getLineWidth();\n\t\treturn param + tail;\n\t}\n\n\t/* Method: scale(sx, sy) */\n\t/**\n\t * Scales the line on the screen by the scale factors <code>sx</code> and\n\t * <code>sy</code>. This method changes only the end point of the line,\n\t * leaving the start of the line fixed.\n\t *\n\t * @usage gline.scale(sx, sy);\n\t * @param sx\n\t *            The factor used to scale all coordinates in the x direction\n\t * @param sy\n\t *            The factor used to scale all coordinates in the y direction\n\t */\n\tpublic void scale(double sx, double sy) {\n\t\tdx *= sx;\n\t\tdy *= sy;\n\t\trepaint();\n\t}\n\n\t/* Method: setEndPoint(x, y) */\n\t/**\n\t * Sets the end point of the line to the point (<code>x</code>,&nbsp;\n\t * <code>y</code>). The origin of the line remains unchanged.\n\t *\n\t * @usage gline.setEndPoint(x, y);\n\t * @param x\n\t *            The new x-coordinate of the end point\n\t * @param y\n\t *            The new y-coordinate of the end point\n\t */\n\tpublic void setEndPoint(double x, double y) {\n\t\tdx = x - getX();\n\t\tdy = y - getY();\n\t\trepaint();\n\t}\n\n\t/* Method: setEndPointPolar(r, theta) */\n\t/**\n\t * Sets the end point of the line using polar coordinates.\n\t * The origin of the line remains unchanged.\n\t *\n\t * @usage gline.setEndPointPolar(r, theta);\n\t * @param r The polar radius length from start point\n\t * @param theta The polar angle in degrees\n\t */\n\tpublic void setEndPointPolar(double r, double theta) {\n\t\tdx = r * Math.cos(theta * Math.PI / 180);\n\t\tdy = -r * Math.sin(theta * Math.PI / 180);\n\t\trepaint();\n\t}\n\n\t/* Method: setStartPoint(x, y) */\n\t/**\n\t * Sets the initial point in the line to (<code>x</code>,&nbsp;\n\t * <code>y</code>), leaving the end point unchanged. This method is\n\t * therefore different from <a href=\"#setLocation(double, double)\">\n\t * <code>setLocation</code></a>, which moves both components of the line\n\t * segment.\n\t *\n\t * @usage gline.setStartPoint(x, y);\n\t * @param x\n\t *            The new x-coordinate of the origin\n\t * @param y\n\t *            The new y-coordinate of the origin\n\t */\n\tpublic void setStartPoint(double x, double y) {\n\t\tdx += getX() - x;\n\t\tdy += getY() - y;\n\t\tsetLocation(x, y);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/graphics/GLineGroup.java",
    "content": "/*\n * @version 2017/06/03\n * - added constructors that take point(s)\n * - added addPointPolar\n * - added first, last\n * @version 2016/05/19\n * - initial version\n */\n\npackage acm.graphics;\n\nimport java.awt.*;\nimport java.util.*;\nimport java.util.List;\n\n/**\n * A line group represents a collection of points that form line segments.\n * A line group can be drawn on the screen and looks similar to a collection\n * of GLine objects positioned one after another.\n * \n * @author Marty Stepp\n */\npublic class GLineGroup extends GObject implements Iterable<GPoint> {\n\tprivate List<GPoint> points = new ArrayList<GPoint>();\n\t\n\t/**\n\t * Creates a new line group that does not contain any points.\n\t */\n\tpublic GLineGroup() {\n\t\t// empty\n\t}\n\t\n\t/**\n\t * Creates a new line group that contains the given points, passed\n\t * in x1, y1, x2, y2, ..., xN, yN order.\n\t * @throws IndexOutOfBoundsException if the array is not even in length\n\t */\n\tpublic GLineGroup(double... coords) {\n\t\tif (coords == null || coords.length % 2 != 0) {\n\t\t\tthrow new IndexOutOfBoundsException(\"must pass an even number of coordinates\");\n\t\t}\n\t\tfor (int i = 0; i < coords.length - 1; i += 2) {\n\t\t\tadd(coords[i], coords[i + 1]);\n\t\t}\n\t}\n\t\n\t/**\n\t * Creates a new line group that contains the given points.\n\t */\n\tpublic GLineGroup(GPoint... points) {\n\t\tif (points == null) {\n\t\t\tthrow new NullPointerException();\n\t\t}\n\t\tfor (GPoint point : points) {\n\t\t\tadd(point);\n\t\t}\n\t}\n\t\n\t/**\n\t * Adds a point with the given coordinates to this line group.\n\t */\n\tpublic void add(double x, double y) {\n\t\tadd(new GPoint(x, y));\n\t}\n\t\n\t/**\n\t * Adds a point with the given coordinates to this line group.\n\t */\n\tpublic void addAtOffset(double dx, double dy) {\n\t\tGPoint prev = isEmpty() ? new GPoint(0, 0) : last();\n\t\tadd(prev.getX() + dx, prev.getY() + dy);\n\t}\n\t\n\t/**\n\t * Adds a point with the given polar offsets from the last point of this line group,\n\t * or from (0, 0) if the line group is empty.\n\t * @param r polar radius in pixels\n\t * @param theta polar angle in degrees\n\t */\n\tpublic void addPolar(double r, double theta) {\n\t\tGPoint prev = isEmpty() ? new GPoint(0, 0) : last();\n\t\tdouble newX = prev.getX() + r * Math.cos(theta * Math.PI / 180);\n\t\tdouble newY = prev.getY() - r * Math.sin(theta * Math.PI / 180);\n\t\tadd(newX, newY);\n\t}\n\t\n\t/**\n\t * Adds the given point to this line group.\n\t * @param point the point to add\n\t */\n\tpublic void add(GPoint point) {\n\t\tif (point == null) {\n\t\t\tthrow new NullPointerException();\n\t\t}\n\t\tpoints.add(point);\n\t\trepaint();\n\t}\n\t\n\t/**\n\t * Removes all points from this line group.\n\t */\n\tpublic void clear() {\n\t\tpoints.clear();\n\t\trepaint();\n\t}\n\t\n\t/**\n\t * Returns true if any of the line segments in this line group touch the given point.\n\t */\n\t@Override\n\tpublic boolean contains(double x, double y) {\n\t\tfor (GPoint point : points) {\n\t\t\tif (point.equals(x, y)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\tfor (int i = 0; i < size() - 1; i++) {\n\t\t\tGPoint p1 = points.get(i);\n\t\t\tGPoint p2 = points.get(i + 1);\n\t\t\tif (GLine.intersects(x, y, p1.getX(), p1.getY(), p2.getX(), p2.getY(), getLineWidth())) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\t\n\t/**\n\t * Returns the first point in this line group.\n\t * @throws IllegalStateException if the line group is empty.\n\t */\n\tpublic GPoint first() {\n\t\tif (points.isEmpty()) {\n\t\t\tthrow new IllegalStateException(\"line group is empty\");\n\t\t}\n\t\treturn points.get(0);\n\t}\n\t\n\t/**\n\t * Returns a bounding rectangle that tightly contains this line group.\n\t * The rectangle's min x/y are the minimum x/y values of any point in the line group,\n\t * and the rectangle's max x/y are the maximum x/y values of any point in the line group.\n\t */\n\t@Override\n\tpublic GRectangle getBounds() {\n\t\tif (isEmpty()) {\n\t\t\treturn new GRectangle();\n\t\t} else {\n\t\t\tGPoint p0 = points.get(0);\n\t\t\tdouble minX = p0.getX();\n\t\t\tdouble maxX = minX;\n\t\t\tdouble minY = p0.getY();\n\t\t\tdouble maxY = minY;\n\t\t\tfor (int i = 1; i < size(); i++) {\n\t\t\t\tGPoint p1 = points.get(i);\n\t\t\t\tminX = Math.min(minX, p1.getX());\n\t\t\t\tmaxX = Math.max(maxX, p1.getX());\n\t\t\t\tminY = Math.min(minY, p1.getY());\n\t\t\t\tmaxY = Math.max(maxY, p1.getY());\n\t\t\t}\n\t\t\treturn new GRectangle(minX, maxX, minY, maxY);\n\t\t}\n\t}\n\t\n\t/**\n\t * Returns true if there are no points in this line group.\n\t */\n\tpublic boolean isEmpty() {\n\t\treturn size() == 0;\n\t}\n\t\n\t/**\n\t * Returns an Iterator for examining the points in this line group.\n\t */\n\tpublic Iterator<GPoint> iterator() {\n\t\treturn points.iterator();\n\t}\n\t\n\t/**\n\t * Returns the last point in this line group.\n\t * @throws IllegalStateException if the line group is empty.\n\t */\n\tpublic GPoint last() {\n\t\tif (points.isEmpty()) {\n\t\t\tthrow new IllegalStateException(\"line group is empty\");\n\t\t}\n\t\treturn points.get(points.size() - 1);\n\t}\n\t\n\t/**\n\t * Paints the group of lines on the screen.\n\t */\n\t@Override\n\tprotected void paint2d(Graphics2D g) {\n\t\tdouble x = 0;//getX();\n\t\tdouble y = 0;//getY();\n\t\tfor (int i = 0; i < size() - 1; i++) {\n\t\t\tGPoint p1 = points.get(i);\n\t\t\tGPoint p2 = points.get(i + 1);\n\t\t\tdouble x0 = p1.getX() - x;\n\t\t\tdouble y0 = p1.getY() - y;\n\t\t\tdouble x1 = p2.getX() - x;\n\t\t\tdouble y1 = p2.getY() - y;\n\t\t\tg.drawLine(GMath.round(x0), GMath.round(y0),\n\t\t\t\t\tGMath.round(x1), GMath.round(y1));\n\t\t}\n\t}\n\t\n\t/**\n\t * Returns a string indicating the parameters of this object.\n\t * \n\t * @noshow\n\t */\n\tpublic String paramString() {\n\t\tString tail = super.paramString();\n\t\ttail = tail.substring(tail.indexOf(')') + 1);\n\t\treturn \"points=\" + points + \", lineWidth=\" + getLineWidth() + tail;\n\t}\n\n\t/**\n\t * Removes the given point from this line group, if it is part of the line group.\n\t */\n\tpublic void remove(double x, double y) {\n\t\tremove(new GPoint(x, y));\n\t}\n\t\n\t/**\n\t * Removes the given point from this line group, if it is part of the line group.\n\t */\n\tpublic void remove(GPoint point) {\n\t\tpoints.remove(point);\n\t}\n\t\n\t/**\n\t * Sets the line group's top/left corner to the given x/y pair.\n\t * Initially every line group has a top/left corner at (0, 0), regardless of any points\n\t * that may have been added to it.\n\t */\n\t@Override\n\tpublic void setLocation(double x, double y) {\n\t\tdouble oldX = getX();\n\t\tdouble oldY = getY();\n\t\tdouble dx = x - oldX;\n\t\tdouble dy = y - oldY;\n\t\tfor (GPoint point : this) {\n\t\t\tpoint.translate(dx, dy);\n\t\t}\n\t\trepaint();\n\t}\n\n\t/**\n\t * Returns the number of points that have been added to the line group.\n\t * @return\n\t */\n\tpublic int size() {\n\t\treturn points.size();\n\t}\n\n\t/**\n\t * Shifts every point in this line group by the given amounts.\n\t */\n\tpublic void translate(double dx, double dy) {\n\t\tfor (GPoint point : this) {\n\t\t\tpoint.translate(dx, dy);\n\t\t}\n\t\trepaint();\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/graphics/GMath.java",
    "content": "/*\n * @version 2016/05/19\n * - added round(value, digits)\n */\n\n/*\n * @(#)GMath.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Bug fix 15-Aug-07 (ESR, JTFBug 2007-011, reported by William Slough)\n//   1. Fixed comments that referred to incorrect trigonometric functions.\n\npackage acm.graphics;\n\n/**\n * This class defines a variety of static mathematical methods that are useful\n * for the <code>acm.graphics</code> package.\n */\npublic class GMath {\n\t/**\n\t * Prevents clients from instantiating this class.\n\t */\n\tprivate GMath() {\n\t\t/* Empty */\n\t}\n\t\n\t/**\n\t * Returns true if the given string could be interpreted as a boolean, such as \"true\" or \"false\".\n\t * @param s a string\n\t */\n\tpublic static boolean isBoolean(String s) {\n\t\treturn s != null && (s.equalsIgnoreCase(\"true\") || s.equalsIgnoreCase(\"false\"));\n\t}\n\n\t/**\n\t * Returns true if the given string could be interpreted as a char, such as \"Q\" or \"\\n\".\n\t * @param s a string\n\t */\n\tpublic static boolean isChar(String s) {\n\t\treturn s != null && s.length() == 1;\n\t}\n\n\t/**\n\t * Returns true if the given string could be interpreted as a double, such as \"123.45\".\n\t * @param s a string\n\t */\n\tpublic static boolean isDouble(String s) {\n\t\ttry {\n\t\t\tDouble.parseDouble(s);\n\t\t\treturn true;\n\t\t} catch (NumberFormatException nfe) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\t/**\n\t * Returns true if the given string could be interpreted as an integer, such as \"12345\".\n\t * @param s a string\n\t */\n\tpublic static boolean isInteger(String s) {\n\t\ttry {\n\t\t\tInteger.parseInt(s);\n\t\t\treturn true;\n\t\t} catch (NumberFormatException nfe) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\t/**\n\t * Returns true if the given string could be interpreted as an long, such as \"12345\".\n\t * @param s a string\n\t */\n\tpublic static boolean isLong(String s) {\n\t\ttry {\n\t\t\tLong.parseLong(s);\n\t\t\treturn true;\n\t\t} catch (NumberFormatException nfe) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\t/**\n\t * Rounds a <code>double</code> value to the nearest <code>int</code>.\n\t *\n\t * @usage int n = round(x);\n\t * @param x\n\t *            A <code>double</code> value\n\t * @return The nearest <code>int</code> value\n\t */\n\tpublic static int round(double x) {\n\t\treturn (int) Math.round(x);\n\t}\n\n\t/**\n\t * Rounds a <code>double</code> value to the given number of decimal places.\n\t * For example, round(3.141592, 2) returns 3.14.\n\t *\n\t * @usage double n = round(x, digits);\n\t * @param x\n\t *            A <code>double</code> value\n\t * @param digitsAfterDecimal\n\t *            number of digits after decimal to keep\n\t * @return The nearest <code>int</code> value\n\t */\n\tpublic static double round(double x, int digitsAfterDecimal) {\n\t\tint mult = 1;\n\t\tfor (int i = 0; i < digitsAfterDecimal; i++) {\n\t\t\tmult *= 10;\n\t\t}\n\t\treturn Math.round(x * mult) / mult;\n\t}\n\n\t/**\n\t * Returns the trigonometric sine of its argument where <code>angle</code>\n\t * is expressed in degrees.\n\t *\n\t * @usage double s = sinDegrees(angle);\n\t * @param angle\n\t *            An angle measured in degrees\n\t * @return The trigonometric sine of the angle\n\t */\n\tpublic static double sinDegrees(double angle) {\n\t\treturn Math.sin(toRadians(angle));\n\t}\n\n\t/**\n\t * Returns the trigonometric cosine of its argument where <code>angle</code>\n\t * is expressed in degrees.\n\t *\n\t * @usage double c = cosDegrees(angle);\n\t * @param angle\n\t *            An angle measured in degrees\n\t * @return The trigonometric cosine of the angle\n\t */\n\tpublic static double cosDegrees(double angle) {\n\t\treturn Math.cos(toRadians(angle));\n\t}\n\n\t/**\n\t * Returns the trigonometric tangent of its argument where\n\t * <code>angle</code> is expressed in degrees.\n\t *\n\t * @usage double t = tanDegrees(angle);\n\t * @param angle\n\t *            An angle measured in degrees\n\t * @return The trigonometric tangent of the angle\n\t */\n\tpublic static double tanDegrees(double angle) {\n\t\treturn sinDegrees(angle) / cosDegrees(angle);\n\t}\n\n\t/**\n\t * Converts an angle from radians to degrees. This method is defined in the\n\t * <code>Math</code> class, but was added only in JDK1.2, which is not\n\t * supported in all browsers.\n\t *\n\t * @usage double degrees = toDegrees(radians);\n\t * @param radians\n\t *            An angle measured in radians\n\t * @return The equivalent angle in degrees\n\t */\n\tpublic static double toDegrees(double radians) {\n\t\treturn radians * 180 / Math.PI;\n\t}\n\n\t/**\n\t * Converts an angle from degrees to radians. This method is defined in the\n\t * <code>Math</code> class, but was added only in JDK1.2, which is not\n\t * supported in all browsers.\n\t *\n\t * @usage double radians = toRadians(degrees);\n\t * @param degrees\n\t *            An angle measured in degrees\n\t * @return The equivalent angle in radians\n\t */\n\tpublic static double toRadians(double degrees) {\n\t\treturn degrees * Math.PI / 180;\n\t}\n\n\t/**\n\t * Computes the distance between the origin and the point (<code>x</code>\n\t * ,&nbsp;<code>y</code>).\n\t *\n\t * @usage double d = distance(x, y);\n\t * @param x\n\t *            The x-coordinate of the point\n\t * @param y\n\t *            The y-coordinate of the point\n\t * @return The distance from the origin to the point (<code>x</code>,&nbsp;\n\t *         <code>y</code>)\n\t */\n\tpublic static double distance(double x, double y) {\n\t\treturn Math.sqrt(x * x + y * y);\n\t}\n\n\t/**\n\t * Computes the distance between the points (<code>x0</code>,&nbsp;\n\t * <code>y0</code>) and (<code>x1</code>,&nbsp;<code>y1</code>).\n\t *\n\t * @usage double d = distance(x0, y0, x1, y1);\n\t * @param x0\n\t *            The x-coordinate of one point\n\t * @param y0\n\t *            The y-coordinate of that point\n\t * @param x1\n\t *            The x-coordinate of the other point\n\t * @param y1\n\t *            The y-coordinate of that point\n\t * @return The distance between the points (<code>x0</code>,&nbsp;\n\t *         <code>y0</code>) and (<code>x1</code>,&nbsp;<code>y1</code>)\n\t */\n\tpublic static double distance(double x0, double y0, double x1, double y1) {\n\t\treturn distance(x1 - x0, y1 - y0);\n\t}\n\n\t/**\n\t * Returns the angle in degrees from the origin to the point (<code>x</code>\n\t * ,&nbsp;<code>y</code>). This method is easier to use than\n\t * <code>atan2</code> because it specifies the displacements in the usual\n\t * x/y order and because it takes care of the fact that the Java coordinate\n\t * system is flipped. The point (0, 0) is arbitrarily defined to be at angle\n\t * 0.\n\t *\n\t * @usage double theta = angle(x, y);\n\t * @param x\n\t *            The x-coordinate of the point\n\t * @param y\n\t *            The y-coordinate of the point\n\t * @return The angle from the origin to the point (<code>x</code>,&nbsp;\n\t *         <code>y</code>) measured in degrees counterclockwise from the +x\n\t *         axis\n\t */\n\tpublic static double angle(double x, double y) {\n\t\tif (x == 0 && y == 0)\n\t\t\treturn 0;\n\t\treturn toDegrees(Math.atan2(-y, x));\n\t}\n\n\t/**\n\t * Computes the angle in degrees formed by a line segment from the point (\n\t * <code>x0</code>,&nbsp;<code>y0</code>) and (<code>x1</code>,&nbsp;\n\t * <code>y1</code>).\n\t *\n\t * @usage double theta = angle(x0, y0, x1, y1);\n\t * @param x0\n\t *            The x-coordinate of one point\n\t * @param y0\n\t *            The y-coordinate of that point\n\t * @param x1\n\t *            The x-coordinate of the other point\n\t * @param y1\n\t *            The y-coordinate of that point\n\t * @return The angle formed by the line segment from (<code>x0</code>,&nbsp;\n\t *         <code>y0</code>) to (<code>x1</code>,&nbsp;<code>y1</code>)\n\t */\n\tpublic static double angle(double x0, double y0, double x1, double y1) {\n\t\treturn angle(x1 - x0, y1 - y0);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/graphics/GObject.java",
    "content": "/*\n * @version 2017/10/14\n * - use GraphicsUtils for antialiasing\n * @version 2017/05/06\n * - added get/setCenterX/Y/Location\n * @version 2016/05/05\n * - re-synched with eroberts source\n * - alphabetized method names\n * @version 2016/05/04\n * - fixed bug with contains() always returning false\n */\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Feature extension 26-May-08 (ESR)\n//   1. Added support for serialization.\n\npackage acm.graphics;\n\nimport acm.util.*;\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.awt.geom.*;\nimport java.io.*;\nimport java.lang.reflect.*;\n\n/**\n * This class is the common superclass of all graphical objects that can\n * be displayed on a <a href=\"GCanvas.html\"><code>GCanvas</code></a>.\n * Because it is an abstract class, you are not allowed to construct an\n * object whose class is <code>GObject</code> directly.  What you do\n * instead is construct one of the concrete subclasses like\n * <a href=\"GRect.html\"><code>GRect</code></a> or\n * <a href=\"GLine.html\"><code>GLine</code></a>.\n * The purpose of this class definition is to define methods that apply\n * to all graphical objects regardless of their specific class.\n * <p>\n * <p>The <code>GObject</code> class implements the <code>Serializable</code>\n * interface by saving all of the internal state of the object.  The parent,\n * however, is saved only if the parent is a <code>GCompound</code>.\n */\npublic abstract class GObject implements Cloneable, Serializable, GScalable {\n\tprivate static boolean antialiasing = true;\n\n\tpublic static boolean isAntiAliasing() {\n\t\treturn antialiasing;\n\t}\n\n\tpublic static void setAntiAliasing(boolean value) {\n\t\tantialiasing = value;\n\t}\n\n\tprivate GCompound compoundParent;\n\tprivate AffineTransform matrix = null;\n\tprivate Color objectColor;\n\tprivate double lineWidth = 1.0;\n\tprivate double xc;\n\tprivate double yc;\n\tprivate boolean isVisible = true;\n\tprivate boolean mouseListenersEnabled = false;\n\tprivate transient MouseListener mouseListener;\n\tprivate transient MouseMotionListener mouseMotionListener;\n\tprivate transient ActionListener actionListener;\n\tprivate transient GContainer transientParent;\n\tstatic final long serialVersionUID = 21L;\n\n\t/**\n\t * Constructs a new <code>GObject</code> and initializes its state.  This\n\t * constructor is never called explicitly, but is instead invoked by the\n\t * constructors of its subclasses.\n\t */\n\tprotected GObject() {\n\t\t// empty\n\t}\n\n\t/**\n\t * Adds an action listener to this graphical object.\n\t *\n\t * @param listener Any object that implements the <code>ActionListener</code> interface\n\t * @usage gobj.addActionListener(listener);\n\t */\n\tpublic void addActionListener(ActionListener listener) {\n\t\tactionListener = AWTEventMulticaster.add(actionListener, listener);\n\t}\n\n\t/**\n\t * Adds a mouse listener to this graphical object.\n\t *\n\t * @param listener Any object that implements the <code>MouseListener</code> interface\n\t * @usage gobj.addMouseListener(listener);\n\t */\n\tpublic void addMouseListener(MouseListener listener) {\n\t\tmouseListener = AWTEventMulticaster.add(mouseListener, listener);\n\t\tmouseListenersEnabled = true;\n\t\tupdateEnabledList();\n\t}\n\n\t/**\n\t * Adds a mouse motion listener to this graphical object.\n\t *\n\t * @param listener Any object that implements the <code>MouseMotionListener</code> interface\n\t * @usage gobj.addMouseMotionListener(listener);\n\t */\n\tpublic void addMouseMotionListener(MouseMotionListener listener) {\n\t\tmouseMotionListener = AWTEventMulticaster.add(mouseMotionListener, listener);\n\t\tmouseListenersEnabled = true;\n\t\tupdateEnabledList();\n\t}\n\n\t/**\n\t * Returns <code>true</code> if mouse listeners have ever been assigned to\n\t * this object.\n\t *\n\t * @return <code>true</code> if mouse listeners have been enabled in this object\n\t * @usage if (gobj.areMouseListenersEnabled()) . . .\n\t * @noshow\n\t */\n\tprotected boolean areMouseListenersEnabled() {\n\t\treturn mouseListenersEnabled;\n\t}\n\n\t/**\n\t * Returns a deep copy of this object.\n\t *\n\t * @return deep copy\n\t */\n\tpublic Object clone() {\n\t\ttry {\n\t\t\tGObject copy = (GObject) super.clone();\n\t\t\tcopy.compoundParent = null;\n\t\t\tcopy.transientParent = null;\n\t\t\tcopy.mouseListener = null;\n\t\t\tcopy.mouseMotionListener = null;\n\t\t\tcopy.actionListener = null;\n\t\t\tif (copy.matrix != null) {\n\t\t\t\tcopy.matrix = ((AffineTransform) matrix.clone());\n\t\t\t}\n\t\t\treturn copy;\n\t\t} catch (Exception localException) {\n\t\t\tthrow new ErrorException(\"Impossible exception\");\n\t\t}\n\t}\n\n\t/**\n\t * Translates a color to a string representation.\n\t *\n\t * @noshow\n\t */\n\tpublic static String colorName(Color color) {\n\t\tif (color.equals(Color.BLACK)) {\n\t\t\treturn \"BLACK\";\n\t\t}\n\t\tif (color.equals(Color.BLUE)) {\n\t\t\treturn \"BLUE\";\n\t\t}\n\t\tif (color.equals(Color.CYAN)) {\n\t\t\treturn \"CYAN\";\n\t\t}\n\t\tif (color.equals(Color.DARK_GRAY)) {\n\t\t\treturn \"DARK_GRAY\";\n\t\t}\n\t\tif (color.equals(Color.GRAY)) {\n\t\t\treturn \"GRAY\";\n\t\t}\n\t\tif (color.equals(Color.GREEN)) {\n\t\t\treturn \"GREEN\";\n\t\t}\n\t\tif (color.equals(Color.LIGHT_GRAY)) {\n\t\t\treturn \"LIGHT_GRAY\";\n\t\t}\n\t\tif (color.equals(Color.MAGENTA)) {\n\t\t\treturn \"MAGENTA\";\n\t\t}\n\t\tif (color.equals(Color.ORANGE)) {\n\t\t\treturn \"ORANGE\";\n\t\t}\n\t\tif (color.equals(Color.PINK)) {\n\t\t\treturn \"PINK\";\n\t\t}\n\t\tif (color.equals(Color.RED)) {\n\t\t\treturn \"RED\";\n\t\t}\n\t\tif (color.equals(Color.WHITE)) {\n\t\t\treturn \"WHITE\";\n\t\t}\n\t\tif (color.equals(Color.YELLOW)) {\n\t\t\treturn \"YELLOW\";\n\t\t}\n\t\treturn colorName(color.getRGB());\n\t}\n\t\n\t/**\n\t * Translates a color RGB int to a string representation such as \"0xFF00FF\" or \"YELLOW\".\n\t *\n\t * @noshow\n\t */\n\tpublic static String colorName(int colorRGB) {\n\t\tif (colorRGB == Color.BLACK.getRGB()) {\n\t\t\treturn \"BLACK\";\n\t\t}\n\t\tif (colorRGB == Color.BLUE.getRGB()) {\n\t\t\treturn \"BLUE\";\n\t\t}\n\t\tif (colorRGB == Color.CYAN.getRGB()) {\n\t\t\treturn \"CYAN\";\n\t\t}\n\t\tif (colorRGB == Color.DARK_GRAY.getRGB()) {\n\t\t\treturn \"DARK_GRAY\";\n\t\t}\n\t\tif (colorRGB == Color.GRAY.getRGB()) {\n\t\t\treturn \"GRAY\";\n\t\t}\n\t\tif (colorRGB == Color.GREEN.getRGB()) {\n\t\t\treturn \"GREEN\";\n\t\t}\n\t\tif (colorRGB == Color.LIGHT_GRAY.getRGB()) {\n\t\t\treturn \"LIGHT_GRAY\";\n\t\t}\n\t\tif (colorRGB == Color.MAGENTA.getRGB()) {\n\t\t\treturn \"MAGENTA\";\n\t\t}\n\t\tif (colorRGB == Color.ORANGE.getRGB()) {\n\t\t\treturn \"ORANGE\";\n\t\t}\n\t\tif (colorRGB == Color.PINK.getRGB()) {\n\t\t\treturn \"PINK\";\n\t\t}\n\t\tif (colorRGB == Color.RED.getRGB()) {\n\t\t\treturn \"RED\";\n\t\t}\n\t\tif (colorRGB == Color.WHITE.getRGB()) {\n\t\t\treturn \"WHITE\";\n\t\t}\n\t\tif (colorRGB == Color.YELLOW.getRGB()) {\n\t\t\treturn \"YELLOW\";\n\t\t}\n\t\treturn \"0x\" + String.format(\"%06x\", colorRGB & 0xFFFFFF).toUpperCase();\n\t}\n\t\n\t/**\n\t * Translates a color to a string representation such as \"#ff00ff\" or \"dark gray\".\n\t *\n\t * @noshow\n\t */\n\tpublic static String colorNameFriendly(Color color) {\n\t\treturn colorNameFriendly(color.getRGB());\n\t}\n\n\t/**\n\t * Translates a color RGB int to a string representation such as \"#ff00ff\" or \"dark gray\".\n\t *\n\t * @noshow\n\t */\n\tpublic static String colorNameFriendly(int colorRGB) {\n\t\treturn colorName(colorRGB)\n\t\t\t\t.toLowerCase()\n\t\t\t\t.replace(\"0x\", \"#\")\n\t\t\t\t.replace(\"_\", \" \");\n\t}\n\n\t/**\n\t * Checks to see whether a point is inside the object.  By default, this\n\t * method simply checks to see if the point is inside the bounding box.\n\t * Many subclasses will need to override this to check whether the point\n\t * is contained in the shape.\n\t *\n\t * @param x The x-coordinate of the point being tested\n\t * @param y The y-coordinate of the point being tested\n\t * @return <code>true</code> if the point (<code>x</code>,&nbsp;<code>y</code>) is inside\n\t * the object, and <code>false</code> otherwise\n\t * @usage if (gobj.contains(x, y)) . . .\n\t */\n\tpublic boolean contains(double x, double y) {\n\t\tGRectangle rect = getBounds();\n\t\treturn rect != null && rect.contains(GMath.round(x), GMath.round(y));\n\t}\n\n\t/**\n\t * Checks to see whether a point is inside the object.\n\t *\n\t * @param pt The point being tested\n\t * @return <code>true</code> if the point is inside the object, and <code>false</code> otherwise\n\t * @usage if (gobj.contains(pt)) . . .\n\t */\n\tpublic final boolean contains(GPoint pt) {\n\t\treturn contains(pt.getX(), pt.getY());\n\t}\n\n\t/**\n\t * Creates a new Graphics2D that includes any transformations done to this object,\n\t * such as scaling and rotation.\n\t *\n\t * @param g initial graphics context\n\t * @return tranformed graphics object\n\t */\n\tprotected Graphics2D createTransformedGraphics(Graphics g) {\n\t\tGraphics2D g2 = (Graphics2D) g.create();\n\t\tGraphicsUtils.setAntialiasing(g2, GObject.isAntiAliasing());\n\t\tColor objectColor = getObjectColor();\n\t\tif (objectColor != null) {\n\t\t\tg2.setColor(objectColor);\n\t\t}\n\t\tdouble myX = getX();\n\t\tdouble myY = getY();\n\t\tif (myX != 0.0 || myY != 0.0) {\n\t\t\tg2.translate(getX(), getY());\n\t\t}\n\t\tif (this.lineWidth != 1.0) {\n\t\t\tg2.setStroke(new BasicStroke((float) this.lineWidth));\n\t\t}\n\t\tif (this.matrix != null) {\n\t\t\tg2.transform(this.matrix);\n\t\t}\n\t\treturn g2;\n\t}\n\n\t/**\n\t * Triggers an action event for this graphical object.\n\t *\n\t * @param e The <code>ActionEvent</code> to fire\n\t * @usage gobj.fireActionEvent(e);\n\t */\n\tpublic void fireActionEvent(ActionEvent e) {\n\t\tif (actionListener != null) {\n\t\t\tactionListener.actionPerformed(e);\n\t\t}\n\t}\n\n\t/**\n\t * Triggers an action event for this graphical object with the specified\n\t * action command.\n\t *\n\t * @param actionCommand The action command to include in the event\n\t * @usage gobj.fireActionEvent(actionCommand);\n\t */\n\tpublic void fireActionEvent(String actionCommand) {\n\t\tfireActionEvent(new ActionEvent(this, ActionEvent.ACTION_PERFORMED, actionCommand));\n\t}\n\n\t/**\n\t * Sends the event to the appropriate listener.\n\t *\n\t * @param e The <code>MouseEvent</code> that triggered this response\n\t * @usage gobj.fireMouseListeners(e);\n\t * @noshow\n\t */\n\tprotected void fireMouseListeners(MouseEvent e) {\n\t\tswitch (e.getID()) {\n\t\t\tcase MouseEvent.MOUSE_PRESSED:\n\t\t\t\tif (mouseListener != null) {\n\t\t\t\t\tmouseListener.mousePressed(e);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase MouseEvent.MOUSE_RELEASED:\n\t\t\t\tif (mouseListener != null) {\n\t\t\t\t\tmouseListener.mouseReleased(e);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase MouseEvent.MOUSE_CLICKED:\n\t\t\t\tif (mouseListener != null) {\n\t\t\t\t\tmouseListener.mouseClicked(e);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase MouseEvent.MOUSE_EXITED:\n\t\t\t\tif (mouseListener != null) {\n\t\t\t\t\tmouseListener.mouseExited(e);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase MouseEvent.MOUSE_ENTERED:\n\t\t\t\tif (mouseListener != null) {\n\t\t\t\t\tmouseListener.mouseEntered(e);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase MouseEvent.MOUSE_MOVED:\n\t\t\t\tif (mouseMotionListener != null) {\n\t\t\t\t\tmouseMotionListener.mouseMoved(e);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase MouseEvent.MOUSE_DRAGGED:\n\t\t\t\tif (mouseMotionListener != null) {\n\t\t\t\t\tmouseMotionListener.mouseDragged(e);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t/**\n\t * Returns the bottom y-coordinate of the object.\n\t *\n\t * @return The bottom y-coordinate of the object\n\t * @usage double y = gobj.getBottomY();\n\t */\n\tpublic double getBottomY() {\n\t\treturn getY() + getHeight();\n\t}\n\n\t/**\n\t * Returns the bounding box of this object, which is defined to be the\n\t * smallest rectangle that covers everything drawn by the figure.  The\n\t * coordinates of this rectangle do not necessarily match the location\n\t * returned by <a href=\"#getLocation()\"><code>getLocation</code></a>.\n\t * Given a <a href=\"GLabel.html\"><code>GLabel</code></a> object, for\n\t * example, <a href=\"#getLocation()\"><code>getLocation</code></a>\n\t * returns the coordinates of the point on the baseline at which the\n\t * string begins; <code>getBounds</code>, by contrast, returns a\n\t * rectangle that covers the entire window area occupied by the string.\n\t *\n\t * @return The bounding box for this object\n\t * @usage GRectangle bounds = gobj.getBounds();\n\t */\n\tpublic abstract GRectangle getBounds();\n\n\t/**\n\t * Returns the central x/y-coordinates of this object.\n\t *\n\t * @usage GPoint pt = gobj.getCenterLocation();\n\t */\n\tpublic final GPoint getCenterLocation() {\n\t\treturn new GPoint(getCenterX(), getCenterY());\n\t}\n\n\t/**\n\t * Returns the central x-coordinate of this object.\n\t *\n\t * @usage double centerX = gobj.getCenterX();\n\t */\n\tpublic double getCenterX() {\n\t\treturn getX() + getWidth() / 2;\n\t}\n\n\t/**\n\t * Returns the central y-coordinate of this object.\n\t *\n\t * @usage double centerY = gobj.getCenterY();\n\t */\n\tpublic double getCenterY() {\n\t\treturn getY() + getHeight() / 2;\n\t}\n\n\t/**\n\t * Returns the color used to display this object.\n\t *\n\t * @return The color used to display this object\n\t * @usage Color color = gobj.getColor();\n\t */\n\tpublic Color getColor() {\n\t\tGObject obj = this;\n\t\twhile (obj.objectColor == null) {\n\t\t\tGContainer parent = obj.getParent();\n\t\t\tif (parent instanceof GObject) {\n\t\t\t\tobj = (GObject) parent;\n\t\t\t} else if (parent instanceof Component) {\n\t\t\t\treturn ((Component) parent).getForeground();\n\t\t\t} else {\n\t\t\t\treturn Color.BLACK;\n\t\t\t}\n\t\t}\n\t\treturn obj.objectColor;\n\t}\n\n\t/**\n\t * Returns the component in which this object is installed, or <code>null</code>\n\t * if none exists.\n\t *\n\t * @return The component in which this object is installed, or <code>null</code> if none exists\n\t * @usage Component comp = gobj.getComponent();\n\t * @noshow\n\t */\n\tprotected Component getComponent() {\n\t\tGContainer parent = getParent();\n\t\twhile (parent instanceof GObject) {\n\t\t\tparent = ((GObject) parent).getParent();\n\t\t}\n\t\treturn (parent instanceof Component) ? (Component) parent : null;\n\t}\n\n\t/**\n\t * Returns the height of this object, which is defined to be\n\t * the height of the bounding box.\n\t *\n\t * @return The height of this object on the screen\n\t * @usage double height = gobj.getHeight();\n\t */\n\tpublic double getHeight() {\n\t\treturn getBounds().getHeight();\n\t}\n\n\t/**\n\t * Returns the thickness of lines drawn on this shape.\n\t * This will be 1.0 unless changed by setLineWidth.\n\t */\n\tpublic double getLineWidth() {\n\t\treturn this.lineWidth;\n\t}\n\n\t/**\n\t * Returns the location of this object as a <code>GPoint</code>.\n\t *\n\t * @return The location of this object as a <code>GPoint</code>\n\t * @usage GPoint pt = gobj.getLocation();\n\t */\n\tpublic GPoint getLocation() {\n\t\treturn new GPoint(xc, yc);\n\t}\n\n\t/**\n\t * Returns the transformation matrix for this object, including any scaling and rotation done to it.\n\t *\n\t * @return\n\t */\n\tprotected AffineTransform getMatrix() {\n\t\treturn matrix;\n\t}\n\n\t/**\n\t * This method returns the color set for this specific object, which may\n\t * be <code>null</code>.  It differs from <code>getColor</code> in that\n\t * it does not walk up the containment chain.\n\t *\n\t * @noshow\n\t */\n\tprotected Color getObjectColor() {\n\t\treturn objectColor;\n\t}\n\n\t/**\n\t * Returns the parent of this object, which is the canvas or compound object in\n\t * which it is enclosed.\n\t *\n\t * @return The parent of this object\n\t * @usage GContainer parent = gobj.getParent();\n\t */\n\tpublic GContainer getParent() {\n\t\treturn (compoundParent != null) ? compoundParent : transientParent;\n\t}\n\n\t/**\n\t * Returns the rightmost x-coordinate of the object.\n\t *\n\t * @return The rightmost x-coordinate of the object\n\t * @usage double x = gobj.getRightX();\n\t */\n\tpublic double getRightX() {\n\t\treturn getX() + getWidth();\n\t}\n\n\t/**\n\t * Returns the size of the bounding box for this object.\n\t *\n\t * @return The size of this object\n\t * @usage GDimension size = gobj.getSize();\n\t */\n\tpublic GDimension getSize() {\n\t\tGRectangle bounds = getBounds();\n\t\treturn new GDimension(bounds.getWidth(), bounds.getHeight());\n\t}\n\n\t/**\n\t * Returns the width of this object, which is defined to be\n\t * the width of the bounding box.\n\t *\n\t * @return The width of this object on the screen\n\t * @usage double width = gobj.getWidth();\n\t */\n\tpublic double getWidth() {\n\t\treturn getBounds().getWidth();\n\t}\n\n\t/**\n\t * Returns the leftmost x-coordinate of the object.\n\t *\n\t * @return The x-coordinate of the object\n\t * @usage double x = gobj.getX();\n\t */\n\tpublic double getX() {\n\t\treturn xc;\n\t}\n\n\t/**\n\t * Returns the topmost y-coordinate of the object.\n\t *\n\t * @return The y-coordinate of the object\n\t * @usage double y = gobj.getY();\n\t */\n\tpublic double getY() {\n\t\treturn yc;\n\t}\n\n\t/**\n\t * Returns true if this object touches the given other object.\n\t *\n\t * @param obj the other object to compare against\n\t * @return true if the objects intersect, else false\n\t */\n\tpublic boolean intersects(GObject obj) {\n\t\treturn getBounds().intersects(obj.getBounds());\n\t}\n\n\t/**\n\t * Checks to see whether this object is visible.\n\t *\n\t * @return <code>true</code> if the object is visible, otherwise <code>false</code>\n\t * @usage if (gobj.isVisible()) . . .\n\t */\n\tpublic boolean isVisible() {\n\t\treturn isVisible;\n\t}\n\n\t/**\n\t * Moves the object on the screen using the displacements <code>dx</code> and <code>dy</code>.\n\t *\n\t * @param dx The distance to move the object in the x direction (positive is rightward)\n\t * @param dy The distance to move the object in the y direction (positive is downward)\n\t * @usage gobj.move(dx, dy);\n\t */\n\tpublic void move(double dx, double dy) {\n\t\tsetLocation(xc + dx, yc + dy);\n\t}\n\n\t/**\n\t * Moves the object using displacements given in polar coordinates.  The\n\t * parameter <code>r</code> specifies the distance to move and <code>theta</code>\n\t * specifies the angle in which the motion occurs.  The angle is measured in\n\t * degrees increasing counterclockwise from the +x axis.\n\t *\n\t * @param r     The distance to move\n\t * @param theta The angle in which to move, measured in degrees\n\t *              increasing counterclockwise from the +x axis\n\t * @usage gobj.movePolar(r, theta);\n\t */\n\tpublic final void movePolar(double r, double theta) {\n\t\tdouble radians = theta * Math.PI / 180;\n\t\tmove(r * Math.cos(radians), -r * Math.sin(radians));\n\t}\n\n\t/**\n\t * All subclasses of <code>GObject</code> must define a <code>paint</code>\n\t * method which allows the object to draw itself on the <code>Graphics</code>\n\t * context passed in as the parameter <code>g</code>.\n\t *\n\t * @param g The graphics context into which the painting is done\n\t * @usage gobj.paint(g);\n\t */\n\tpublic final void paint(Graphics g) {\n\t\tif (this.isVisible) {\n\t\t\tGraphics2D g2 = createTransformedGraphics(g);\n\t\t\tpaint2d(g2);\n\t\t\tif (g2 != g) {\n\t\t\t\tg2.dispose();\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * All subclasses of <code>GObject</code> must define a <code>paint2d</code>\n\t * method which allows the object to draw itself on the <code>Graphics</code>\n\t * context passed in as the parameter <code>g</code>.\n\t *\n\t * @param g The graphics context into which the painting is done\n\t * @usage gobj.paint(g);\n\t */\n\tprotected abstract void paint2d(Graphics2D g);\n\n\t/**\n\t * Returns a string indicating the parameters of this object.\n\t *\n\t * @noshow\n\t */\n\tprotected String paramString() {\n\t\tString param = \"\";\n\t\tif (this instanceof GResizable) {\n\t\t\tGRectangle r = getBounds();\n\t\t\tparam += \"bounds=(\" + r.getX() + \", \" + r.getY() + \", \"\n\t\t\t\t\t+ r.getWidth() + \", \" + r.getHeight() + \")\";\n\t\t} else {\n\t\t\tGPoint pt = getLocation();\n\t\t\tparam += \"location=(\" + pt.getX() + \", \" + pt.getY() + \")\";\n\t\t}\n\t\tif (objectColor != null) {\n\t\t\tparam += \", color=\" + colorName(objectColor);\n\t\t}\n\t\tif (this instanceof GFillable) {\n\t\t\tparam += \", filled=\" + ((GFillable) this).isFilled();\n\t\t\tColor fillColor = ((GFillable) this).getFillColor();\n\t\t\tif (fillColor != null && fillColor != objectColor) {\n\t\t\t\tparam += \", fillColor=\" + colorName(fillColor);\n\t\t\t}\n\t\t}\n\t\treturn param;\n\t}\n\n\t/**\n\t * Delays the calling thread for the specified time, which is expressed in\n\t * milliseconds.  Unlike <code>Thread.sleep</code>, this method never throws an\n\t * exception.\n\t *\n\t * @param milliseconds The sleep time in milliseconds\n\t * @usage gobj.pause(milliseconds);\n\t */\n\tpublic void pause(double milliseconds) {\n\t\tJTFTools.pause(milliseconds);\n\t}\n\n\t/**\n\t * Removes an action listener from this graphical object.\n\t *\n\t * @param listener The listener object to remove\n\t * @usage gobj.removeActionListener(listener);\n\t */\n\tpublic void removeActionListener(ActionListener listener) {\n\t\tactionListener = AWTEventMulticaster.remove(actionListener, listener);\n\t}\n\n\t/**\n\t * Removes a mouse listener from this graphical object.\n\t *\n\t * @param listener The listener object to remove\n\t * @usage gobj.removeMouseListener(listener);\n\t */\n\tpublic void removeMouseListener(MouseListener listener) {\n\t\tmouseListener = AWTEventMulticaster.remove(mouseListener, listener);\n\t}\n\n\t/**\n\t * Removes a mouse motion listener from this graphical object.\n\t *\n\t * @param listener The listener object to remove\n\t * @usage gobj.removeMouseMotionListener(listener);\n\t */\n\tpublic void removeMouseMotionListener(MouseMotionListener listener) {\n\t\tmouseMotionListener = AWTEventMulticaster.remove(mouseMotionListener, listener);\n\t}\n\n\t/**\n\t * Signals that the object needs to be repainted.\n\t *\n\t * @noshow\n\t */\n\tprotected void repaint() {\n\t\tGContainer parent = getParent();\n\t\twhile (parent instanceof GObject) {\n\t\t\tparent = ((GObject) parent).getParent();\n\t\t}\n\t\tif (parent instanceof GCanvas) {\n\t\t\t((GCanvas) parent).conditionalRepaint();\n\t\t}\n\t}\n\n\t/**\n\t * Rotates this object by the given degrees counter-clockwise.\n\t *\n\t * @param degrees number of degrees to rotate\n\t */\n\tpublic void rotate(double degrees) {\n\t\tif (this.matrix == null) {\n\t\t\tthis.matrix = new AffineTransform();\n\t\t}\n\t\tthis.matrix.rotate(-GMath.toRadians(degrees));\n\t\trepaint();\n\t}\n\n\t/**\n\t * Scales the size of this object by the given factors in the x and y dimensions.\n\t *\n\t * @param sx factor to scale in x dimension (1.0 = same size)\n\t * @param sy factor to scale in y dimension (1.0 = same size)\n\t */\n\tpublic void scale(double sx, double sy) {\n\t\tif (this.matrix == null) {\n\t\t\tthis.matrix = new AffineTransform();\n\t\t}\n\t\tthis.matrix.scale(sx, sy);\n\t\trepaint();\n\t}\n\n\t/**\n\t * Scales the size of this object by the given factor in the x and y dimensions.\n\t *\n\t * @param sf factor to scale in x and y dimensions (1.0 = same size)\n\t */\n\tpublic final void scale(double sf) {\n\t\tscale(sf, sf);\n\t}\n\n\t/**\n\t * Moves this object one step toward the back in the <i>z</i> dimension.\n\t * If it was already at the back of the stack, nothing happens.\n\t *\n\t * @usage gobj.sendBackward();\n\t */\n\tpublic void sendBackward() {\n\t\tif (compoundParent != null) {\n\t\t\tcompoundParent.sendBackward(this);\n\t\t} else if (transientParent instanceof GCanvas) {\n\t\t\t((GCanvas) transientParent).sendBackward(this);\n\t\t} else if (transientParent != null) {\n\t\t\ttry {\n\t\t\t\tClass<?> parentClass = transientParent.getClass();\n\t\t\t\tClass<?>[] types = {acm.graphics.GObject.class};\n\t\t\t\tObject[] args = {this};\n\t\t\t\tMethod fn = parentClass.getMethod(\"sendBackward\", types);\n\t\t\t\tif (fn != null) {\n\t\t\t\t\tfn.invoke(transientParent, args);\n\t\t\t\t}\n\t\t\t} catch (Exception ex) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t}\n\t\tif (mouseListenersEnabled) {\n\t\t\tupdateEnabledList();\n\t\t}\n\t}\n\n\t/**\n\t * Moves this object one step toward the front in the <i>z</i> dimension.\n\t * If it was already at the front of the stack, nothing happens.\n\t *\n\t * @usage gobj.sendForward();\n\t */\n\tpublic void sendForward() {\n\t\tif (compoundParent != null) {\n\t\t\tcompoundParent.sendForward(this);\n\t\t} else if (transientParent instanceof GCanvas) {\n\t\t\t((GCanvas) transientParent).sendForward(this);\n\t\t} else if (transientParent != null) {\n\t\t\ttry {\n\t\t\t\tClass<?> parentClass = transientParent.getClass();\n\t\t\t\tClass<?>[] types = {acm.graphics.GObject.class};\n\t\t\t\tObject[] args = {this};\n\t\t\t\tMethod fn = parentClass.getMethod(\"sendForward\", types);\n\t\t\t\tif (fn != null) {\n\t\t\t\t\tfn.invoke(transientParent, args);\n\t\t\t\t}\n\t\t\t} catch (Exception ex) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t}\n\t\tif (mouseListenersEnabled) {\n\t\t\tupdateEnabledList();\n\t\t}\n\t}\n\n\t/**\n\t * Moves this object to the back of the display in the <i>z</i> dimension.  By\n\t * moving it to the back, this object will appear to be behind the other graphical\n\t * objects on the display and may be obscured by other objects in front.\n\t *\n\t * @usage gobj.sendToBack();\n\t */\n\tpublic void sendToBack() {\n\t\tif (compoundParent != null) {\n\t\t\tcompoundParent.sendToBack(this);\n\t\t} else if (transientParent instanceof GCanvas) {\n\t\t\t((GCanvas) transientParent).sendToBack(this);\n\t\t} else if (transientParent != null) {\n\t\t\ttry {\n\t\t\t\tClass<?> parentClass = transientParent.getClass();\n\t\t\t\tClass<?>[] types = {acm.graphics.GObject.class};\n\t\t\t\tObject[] args = {this};\n\t\t\t\tMethod fn = parentClass.getMethod(\"sendToBack\", types);\n\t\t\t\tif (fn != null) {\n\t\t\t\t\tfn.invoke(transientParent, args);\n\t\t\t\t}\n\t\t\t} catch (Exception ex) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t}\n\t\tif (mouseListenersEnabled) {\n\t\t\tupdateEnabledList();\n\t\t}\n\t}\n\n\t/**\n\t * Moves this object to the front of the display in the <i>z</i> dimension.  By\n\t * moving it to the front, this object will appear to be on top of the other graphical\n\t * objects on the display and may hide any objects that are further back.\n\t *\n\t * @usage gobj.sendToFront();\n\t */\n\tpublic void sendToFront() {\n\t\tif (compoundParent != null) {\n\t\t\tcompoundParent.sendToFront(this);\n\t\t} else if (transientParent instanceof GCanvas) {\n\t\t\t((GCanvas) transientParent).sendToFront(this);\n\t\t} else if (transientParent != null) {\n\t\t\ttry {\n\t\t\t\tClass<?> parentClass = transientParent.getClass();\n\t\t\t\tClass<?>[] types = {acm.graphics.GObject.class};\n\t\t\t\tObject[] args = {this};\n\t\t\t\tMethod fn = parentClass.getMethod(\"sendToFront\", types);\n\t\t\t\tif (fn != null) {\n\t\t\t\t\tfn.invoke(transientParent, args);\n\t\t\t\t}\n\t\t\t} catch (Exception ex) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t}\n\t\tif (mouseListenersEnabled) {\n\t\t\tupdateEnabledList();\n\t\t}\n\t}\n\n\t/**\n\t * Sets the bottom y-coordinate of this object to the given y value.\n\t *\n\t * @param bottomY The new bottom y-coordinate for the object\n\t * @usage gobj.setBottomY(y);\n\t */\n\tpublic void setBottomY(double bottomY) {\n\t\tsetLocation(getX(), bottomY - getHeight());\n\t}\n\n\t/**\n\t * Sets the central x/y-coordinates of this object to the given x/y values.\n\t *\n\t * @param centerX The new central x-coordinate for the object\n\t * @param centerY The new central y-coordinate for the object\n\t * @usage gobj.setCenterLocation(x, y);\n\t */\n\tpublic void setCenterLocation(double centerX, double centerY) {\n\t\tsetLocation(centerX - getWidth() / 2, centerY - getHeight() / 2);\n\t}\n\n\t/**\n\t * Sets the central x/y-coordinates of this object to the given x/y values.\n\t *\n\t * @param pt The new central x/y-coordinates for the object\n\t * @usage gobj.setCenterLocation(pt);\n\t */\n\tpublic final void setCenterLocation(GPoint pt) {\n\t\tsetCenterLocation(pt.getX(), pt.getY());\n\t}\n\n\t/**\n\t * Sets the central x-coordinate of this object to the given x value.\n\t *\n\t * @param centerX The new central x-coordinate for the object\n\t * @usage gobj.setCenterX(x);\n\t */\n\tpublic void setCenterX(double centerX) {\n\t\tsetLocation(centerX - getWidth() / 2, getY());\n\t}\n\n\t/**\n\t * Sets the central y-coordinate of this object to the given y value.\n\t *\n\t * @param centerY The new central y-coordinate for the object\n\t * @usage gobj.setCenterY(y);\n\t */\n\tpublic void setCenterY(double centerY) {\n\t\tsetLocation(getX(), centerY - getHeight() / 2);\n\t}\n\n\t/**\n\t * Sets the color used to display this object.\n\t *\n\t * @param color The color used to display this object\n\t * @usage gobj.setColor(color);\n\t */\n\tpublic void setColor(Color color) {\n\t\tobjectColor = color;\n\t\trepaint();\n\t}\n\n\t/**\n\t * Sets the thickness of lines drawn on this shape to the given number of pixels.\n\t *\n\t * @param lineWidth line width in pixels\n\t */\n\tpublic void setLineWidth(double lineWidth) {\n\t\tthis.lineWidth = lineWidth;\n\t\trepaint();\n\t}\n\n\t/**\n\t * Sets the location of this object to the point (<code>x</code>, <code>y</code>).\n\t *\n\t * @param x The new x-coordinate for the object\n\t * @param y The new y-coordinate for the object\n\t * @usage gobj.setLocation(x, y);\n\t */\n\tpublic void setLocation(double x, double y) {\n\t\txc = x;\n\t\tyc = y;\n\t\trepaint();\n\t}\n\n\t/**\n\t * Sets the location of this object to the specified point.\n\t *\n\t * @param pt The new location for this object\n\t * @usage gobj.setLocation(pt);\n\t * @noshow\n\t */\n\tpublic final void setLocation(GPoint pt) {\n\t\tsetLocation(pt.getX(), pt.getY());\n\t}\n\n\t/**\n\t * Sets the parent of this object, which should be called only by the\n\t * <code>GContainer</code> in which this is installed.  The\n\t * serialization behavior of the parent data depends on the parent\n\t * type.  Because a <code>GCompound</code> is serializable, it\n\t * needs to be maintained in a nontransient variable; other parent\n\t * classes are transient, so that these parents are not recorded\n\t * in the serial form.\n\t *\n\t * @noshow\n\t */\n\tpublic void setParent(GContainer parent) {\n\t\tif (parent instanceof GCompound) {\n\t\t\tcompoundParent = (GCompound) parent;\n\t\t\ttransientParent = null;   // JL\n\t\t} else {\n\t\t\ttransientParent = parent;\n\t\t\tcompoundParent = null;   // JL\n\t\t}\n\t}\n\n\t/**\n\t * Sets the rightmost x-coordinate of this object to the given x value.\n\t *\n\t * @param rightX The new rightmost x-coordinate for the object\n\t * @usage gobj.setRightX(x);\n\t */\n\tpublic final void setRightX(double rightX) {\n\t\tsetLocation(rightX - getWidth(), getY());\n\t}\n\n\t/**\n\t * Sets whether this object is visible.\n\t *\n\t * @param visible <code>true</code> to make the object visible, <code>false</code> to hide it\n\t * @usage gobj.setVisible(visible);\n\t */\n\tpublic void setVisible(boolean visible) {\n\t\tisVisible = visible;\n\t\trepaint();\n\t}\n\n\t/**\n\t * Sets the leftmost x-coordinate of this object to the given x value.\n\t *\n\t * @param x The new x-coordinate for the object\n\t * @usage gobj.setX(x);\n\t */\n\tpublic final void setX(double x) {\n\t\tsetLocation(x, getY());\n\t}\n\n\t/**\n\t * Sets the topmost y-coordinate of this object to the given y value.\n\t *\n\t * @param y The new y-coordinate for the object\n\t * @usage gobj.setY(y);\n\t */\n\tpublic final void setY(double y) {\n\t\tsetLocation(getX(), y);\n\t}\n\n\t/**\n\t * Starts a <code>GraphicsProgram</code> containing this object.\n\t *\n\t * @usage gobj.start();\n\t * @noshow\n\t */\n\tprotected void start() {\n\t\tstart(null);\n\t}\n\n\t/**\n\t * Starts a <code>GraphicsProgram</code> containing this object, passing\n\t * it the specified arguments.\n\t *\n\t * @param args The array of arguments\n\t * @usage gobj.start();\n\t * @noshow\n\t */\n\tprotected void start(String[] args) {\n\t\ttry {\n\t\t\tClass<?> programClass = acm.program.GraphicsProgram.class;\n\t\t\tClass<?> gObjectClass = acm.graphics.GObject.class;\n\t\t\tClass<?>[] types = {gObjectClass, args.getClass()};\n\t\t\tObject[] params = {this, args};\n\t\t\tMethod startGraphicsProgram = programClass.getMethod(\"startGraphicsProgram\", types);\n\t\t\tstartGraphicsProgram.invoke(null, params);\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n\t/**\n\t * Overrides the <code>toString</code> method in <code>Object</code> to produce\n\t * more readable output.\n\t *\n\t * @noshow\n\t */\n\tpublic String toString() {\n\t\tString name = getClass().getName();\n\t\tif (name.startsWith(\"acm.graphics.\")) {\n\t\t\tname = name.substring(\"acm.graphics.\".length());\n\t\t}\n\t\treturn name + \"[\" + paramString() + \"]\";\n\t}\n\n\t/**\n\t * Tells the parent to update its list of enabled objects.\n\t *\n\t * @noshow\n\t */\n\tprotected void updateEnabledList() {\n\t\tComponent comp = getComponent();\n\t\tif (comp instanceof GCanvas) {\n\t\t\t((GCanvas) comp).updateEnabledList();\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/graphics/GObjectList.java",
    "content": "/*\n * @version 2017/04/27\n * - moved out from GContainer.java into its own file\n */\n\npackage acm.graphics;\n\nimport java.awt.*;\nimport java.io.*;\nimport java.util.*;\n\n/* Package class: GObjectList */\n/**\n * This class implements a synchronized list of <code>GObject</code> values\n * that is shared by both <code>GCompound</code> and <code>GCanvas</code>.\n * The list includes two sets of objects: one for the ordered list in the\n * container and another for objects that are enabled to receive mouse\n * events.\n */\nclass GObjectList implements Serializable {\n\t/* Private instance variables */\n\tprivate GContainer parent;\n\tprivate ArrayList<GObject> contents;\n\tprivate ArrayList<GObject> enabledList;\n\n\t/* Constructor: new GObjectList(container) */\n\t/**\n\t * Creates a new <code>GObjectList</code> with no elements.\n\t *\n\t * @param container The <code>GCanvas</code> or <code>GCompound</code> that owns this list.\n\t */\n\tpublic GObjectList(GContainer container) {\n\t\tparent = container;\n\t\tcontents = new ArrayList<GObject>();\n\t\tif (parent instanceof GCanvas) enabledList = new ArrayList<GObject>();\n\t}\n\n\t/* Method: add(gobj) */\n\t/**\n\t * Adds the specified <code>GObject</code> to the end of the contents list,\n\t * and includes it in the enabled list if mouse events are enabled.\n\t */\n\tpublic synchronized void add(GObject gobj) {\n\t\tif (gobj.getParent() != null) gobj.getParent().remove(gobj);\n\t\tgobj.setParent(parent);\n\t\tcontents.add(gobj);\n\t\tif (enabledList != null && gobj.areMouseListenersEnabled()) {\n\t\t\tenabledList.add(gobj);\n\t\t}\n\t}\n\n\t/* Method: remove(gobj) */\n\t/**\n\t * Removes the specified object from the list.\n\t */\n\tpublic synchronized void remove(GObject gobj) {\n\t\tcontents.remove(gobj);\n\t\tgobj.setParent(null);\n\t\tif (enabledList != null) enabledList.remove(gobj);\n\t}\n\n\t/* Method: removeAll() */\n\t/**\n\t * Removes all objects from the list.\n\t */\n\tpublic synchronized void removeAll() {\n\t\tcontents.clear();\n\t\tif (enabledList != null) enabledList.clear();\n\t}\n\n\t/* Method: getElementCount() */\n\t/**\n\t * Returns the number of elements in the list.\n\t */\n\tpublic int getElementCount() {\n\t\treturn contents.size();\n\t}\n\n\t/* Method: getElement(index) */\n\t/**\n\t * Returns the graphical object at the specified index, numbering from back\n\t * to front in the the <i>z</i> dimension.\n\t */\n\tpublic GObject getElement(int index) {\n\t\treturn contents.get(index);\n\t}\n\n\t/* Method: getElementAt(x, y, requireEnabled) */\n\t/**\n\t * Returns the topmost graphical object that contains the point\n\t * (<code>x</code>, <code>y</code>), or <code>null</code> if no such\n\t * object exists.\n\t */\n\tpublic synchronized GObject getElementAt(double x, double y, boolean requireEnabled) {\n\t\tArrayList<GObject> list = (requireEnabled) ? enabledList : contents;\n\t\tfor (int i = list.size() - 1; i >= 0; i--) {\n\t\t\tGObject gobj = list.get(i);\n\t\t\tif (gobj.contains(x, y)) return gobj;\n\t\t}\n\t\treturn null;\n\t}\n\n\t/* Method: sendToFront(gobj) */\n\t/**\n\t * Implements the <code>sendToFront</code> function from the <code>GContainer</code>\n\t * interface.\n\t */\n\tpublic synchronized void sendToFront(GObject gobj) {\n\t\tint index = contents.indexOf(gobj);\n\t\tif (index >= 0) {\n\t\t\tcontents.remove(index);\n\t\t\tcontents.add(gobj);\n\t\t}\n\t}\n\n\t/* Method: sendToBack(gobj) */\n\t/**\n\t * Implements the <code>sendToBack</code> function from the <code>GContainer</code>\n\t * interface.\n\t */\n\tpublic synchronized void sendToBack(GObject gobj) {\n\t\tint index = contents.indexOf(gobj);\n\t\tif (index >= 0) {\n\t\t\tcontents.remove(index);\n\t\t\tcontents.add(0, gobj);\n\t\t}\n\t}\n\n\t/* Method: sendForward(gobj) */\n\t/**\n\t * Implements the <code>sendForward</code> function from the <code>GContainer</code>\n\t * interface.\n\t */\n\tpublic synchronized void sendForward(GObject gobj) {\n\t\tint index = contents.indexOf(gobj);\n\t\tif (index >= 0) {\n\t\t\tcontents.remove(index);\n\t\t\tcontents.add(Math.min(contents.size(), index + 1), gobj);\n\t\t}\n\t}\n\n\t/* Method: sendBackward(gobj) */\n\t/**\n\t * Implements the <code>sendBackward</code> function from the <code>GContainer</code>\n\t * interface.\n\t */\n\tpublic synchronized void sendBackward(GObject gobj) {\n\t\tint index = contents.indexOf(gobj);\n\t\tif (index >= 0) {\n\t\t\tcontents.remove(index);\n\t\t\tcontents.add(Math.max(0, index - 1), gobj);\n\t\t}\n\t}\n\n\t/* Method: getBounds() */\n\t/**\n\t * Returns the bounding rectangle for the objects in the list.\n\t */\n\tpublic synchronized GRectangle getBounds() {\n\t\tGRectangle bounds = new GRectangle();\n\t\tint nElements = contents.size();\n\t\tfor (int i = 0; i < nElements; i++) {\n\t\t\tif (i == 0) {\n\t\t\t\tbounds = new GRectangle(contents.get(i).getBounds());\n\t\t\t} else {\n\t\t\t\tbounds.add(contents.get(i).getBounds());\n\t\t\t}\n\t\t}\n\t\treturn bounds;\n\t}\n\n\t/* Method: contains(x, y) */\n\t/**\n\t * Checks to see whether a point is \"inside\" one of the objects on the list.\n\t */\n\tpublic synchronized boolean contains(double x, double y) {\n\t\tint nElements = contents.size();\n\t\tfor (int i = 0; i < nElements; i++) {\n\t\t\tif (contents.get(i).contains(x, y)) return true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/* Method: mapPaint(g) */\n\t/**\n\t * Paints all the elements of this container using the graphics context <code>g</code>.\n\t */\n\tpublic synchronized void mapPaint(Graphics g) {\n\t\tint nElements = contents.size();\n\t\tfor (int i = 0; i < nElements; i++) {\n\t\t\tcontents.get(i).paint(g);\n\t\t}\n\t}\n\n\t/* Method: areMouseListenersEnabled() */\n\t/**\n\t * Returns <code>true</code> if mouse listeners have ever been assigned to\n\t * this object or to any of the contained objects.\n\t */\n\tpublic synchronized boolean areMouseListenersEnabled() {\n\t\tint nElements = contents.size();\n\t\tfor (int i = 0; i < nElements; i++) {\n\t\t\tGObject gobj = contents.get(i);\n\t\t\tif (gobj.areMouseListenersEnabled()) return true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/* Method: updateEnabledList() */\n\t/**\n\t * Reconstructs the enabledList list in the correct order.\n\t */\n\tpublic synchronized void updateEnabledList() {\n\t\tenabledList.clear();\n\t\tint nElements = contents.size();\n\t\tfor (int i = 0; i < nElements; i++) {\n\t\t\tGObject gobj = contents.get(i);\n\t\t\tif (gobj.areMouseListenersEnabled()) enabledList.add(gobj);\n\t\t}\n\t}\n}\n\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/graphics/GOval.java",
    "content": "/*\n * @version 2017/10/14\n * - added Ellipse2D constructor, parameterless constructor\n * - rename some method/ctor parameters\n * @version 2016/10/12\n * - JL's getBounds fix for contains()\n */\n\npackage acm.graphics;\n\nimport acm.util.ErrorException;\nimport java.awt.*;\nimport java.awt.geom.*;\n\npublic class GOval extends GObject implements GFillable, GResizable {\n\tstatic final long serialVersionUID = 21L;\n\n\tprivate double frameWidth;\n\tprivate double frameHeight;\n\tprivate boolean isFilled;\n\tprivate Color fillColor;\n\n\tpublic GOval() {\n\t\tthis(0.0, 0.0, 0.0, 0.0);\n\t}\n\n\tpublic GOval(double width, double height) {\n\t\tthis(0.0, 0.0, width, height);\n\t}\n\n\tpublic GOval(double x, double y, double width, double height) {\n\t\tframeWidth = width;\n\t\tframeHeight = height;\n\t\tsetLocation(x, y);\n\t}\n\t\n\tpublic GOval(Ellipse2D oval) {\n\t\tthis(oval.getX(), oval.getY(), oval.getWidth(), oval.getHeight());\n\t}\n\n\tpublic GRectangle getBounds() {\n\t\tObject obj = new java.awt.geom.Ellipse2D.Double(0.0D, 0.0D, frameWidth, frameHeight);\n\t\tAffineTransform affinetransform = getMatrix();\n\t\tif (affinetransform != null) {\n\t\t\tobj = affinetransform.createTransformedShape(((Shape) (obj)));\n\t\t}\n\t\tRectangle2D rectangle = ((Shape) (obj)).getBounds2D();\n\t\treturn new GRectangle(rectangle.getX() + getX(), rectangle.getY() + getY(), rectangle.getWidth(),\n\t\t\t\trectangle.getHeight());\n\t}\n\n\tpublic boolean contains(double x, double y) {\n\t\tObject obj = null;\n\t\tAffineTransform affinetransform = getMatrix();\n\t\tif (affinetransform == null) {\n\t\t\tobj = new java.awt.geom.Ellipse2D.Double(0.0D, 0.0D, frameWidth, frameHeight);\n\t\t} else {\n\t\t\t// JL: remove getBounds() call here\n\t\t\tobj = affinetransform.createTransformedShape(((Shape) (obj)));\n\t\t}\n\t\treturn ((Shape) (obj)).contains(x - getX(), y - getY());\n\t}\n\n\tprotected void paint2d(Graphics2D g2) {\n\t\tjava.awt.geom.Ellipse2D.Double oval = new java.awt.geom.Ellipse2D.Double(0.0D, 0.0D, frameWidth,\n\t\t\t\tframeHeight);\n\t\tif (isFilled()) {\n\t\t\tg2.setColor(getFillColor());\n\t\t\tg2.fill(oval);\n\t\t\tg2.setColor(getColor());\n\t\t}\n\t\tg2.draw(oval);\n\t}\n\n\tpublic void setFilled(boolean flag) {\n\t\tisFilled = flag;\n\t\trepaint();\n\t}\n\n\tpublic boolean isFilled() {\n\t\treturn isFilled;\n\t}\n\n\tpublic void setFillColor(Color color) {\n\t\tfillColor = color;\n\t\tisFilled = fillColor != null;\n\t\trepaint();\n\t}\n\n\tpublic Color getFillColor() {\n\t\treturn fillColor != null ? fillColor : getColor();\n\t}\n\n\tpublic void setSize(double width, double height) {\n\t\tif (getMatrix() != null) {\n\t\t\tthrow new ErrorException(\"setSize: Object has been transformed\");\n\t\t} else {\n\t\t\tframeWidth = width;\n\t\t\tframeHeight = height;\n\t\t\trepaint();\n\t\t\treturn;\n\t\t}\n\t}\n\n\tpublic final void setSize(GDimension gdimension) {\n\t\tsetSize(gdimension.getWidth(), gdimension.getHeight());\n\t}\n\n\tpublic GDimension getSize() {\n\t\treturn new GDimension(frameWidth, frameHeight);\n\t}\n\n\tpublic void setBounds(double x, double y, double width, double height) {\n\t\tif (getMatrix() != null) {\n\t\t\tthrow new ErrorException(\"setBounds: Object has been transformed\");\n\t\t} else {\n\t\t\tframeWidth = width;\n\t\t\tframeHeight = height;\n\t\t\tsetLocation(x, y);\n\t\t\treturn;\n\t\t}\n\t}\n\n\tpublic final void setBounds(GRectangle grectangle) {\n\t\tif (getMatrix() != null) {\n\t\t\tthrow new ErrorException(\"setBounds: Object has been transformed\");\n\t\t} else {\n\t\t\tsetBounds(grectangle.getX(), grectangle.getY(), grectangle.getWidth(), grectangle.getHeight());\n\t\t\treturn;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/graphics/GPoint.java",
    "content": "/*\n * @version 2017/04/05\n * - improved toString omit useless \".0\"\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Performance improvement 23-Jan-07 (ESR)\n//   1. Changed hashCode implementation for better performance.\n//\n// Feature enhancement 26-May-08 (ESR)\n//   1. Added support for serialization.\n\npackage acm.graphics;\n\nimport java.awt.*;\nimport java.io.*;\n\n/* Class: GPoint */\n/**\n * This class is a double-precision version of the <code>Point</code> class in\n * <code>java.awt</code>.\n */\npublic class GPoint implements Serializable {\n\n\t/* Constructor: GPoint() */\n\t/**\n\t * Constructs a new <code>GPoint</code> at the origin (0, 0).\n\t *\n\t * @usage pt = new GPoint();\n\t */\n\tpublic GPoint() {\n\t\tthis(0, 0);\n\t}\n\n\t/* Constructor: GPoint(x, y) */\n\t/**\n\t * Constructs a new <code>GPoint</code> with the specified coordinates.\n\t *\n\t * @usage pt = new GPoint(x, y);\n\t * @param x\n\t *            The x-coordinate of the point\n\t * @param y\n\t *            The y-coordinate of the point\n\t */\n\tpublic GPoint(double x, double y) {\n\t\txc = x;\n\t\tyc = y;\n\t}\n\n\t/* Constructor: GPoint(p) */\n\t/**\n\t * Constructs a new <code>GPoint</code> from an existing one.\n\t *\n\t * @usage pt = new GPoint(p);\n\t * @param p\n\t *            The original point\n\t */\n\tpublic GPoint(GPoint p) {\n\t\tthis(p.xc, p.yc);\n\t}\n\n\t/* Constructor: GPoint(p) */\n\t/**\n\t * Constructs a new <code>GPoint</code> from an existing AWT\n\t * <code>Point</code>.\n\t *\n\t * @usage pt = new GPoint(p);\n\t * @param p\n\t *            An AWT <code>Point</code>\n\t */\n\tpublic GPoint(Point p) {\n\t\tthis(p.x, p.y);\n\t}\n\n\t/* Method: getX() */\n\t/**\n\t * Returns the x coordinate of this <code>GPoint</code>.\n\t *\n\t * @usage x = pt.getX();\n\t * @return The x coordinate of this <code>GPoint</code>\n\t */\n\tpublic double getX() {\n\t\treturn xc;\n\t}\n\n\t/* Method: getY() */\n\t/**\n\t * Returns the y coordinate of this <code>GPoint</code>.\n\t *\n\t * @usage y = pt.getY();\n\t * @return The y coordinate of this <code>GPoint</code>\n\t */\n\tpublic double getY() {\n\t\treturn yc;\n\t}\n\n\t/* Method: setLocation(x, y) */\n\t/**\n\t * Sets the location of the <code>GPoint</code> to the specified\n\t * <code>x</code> and <code>y</code> values.\n\t *\n\t * @usage pt.setLocation(x, y);\n\t * @param x\n\t *            The new x-coordinate for the point\n\t * @param y\n\t *            The new y-coordinate for the point\n\t */\n\tpublic void setLocation(double x, double y) {\n\t\txc = x;\n\t\tyc = y;\n\t}\n\n\t/* Method: setLocation(p) */\n\t/**\n\t * Sets the location of the <code>GPoint</code> to that of an existing one.\n\t *\n\t * @usage pt.setLocation(p);\n\t * @param p\n\t *            An existing <code>GPoint</code> specifying the new location\n\t */\n\tpublic void setLocation(GPoint p) {\n\t\tsetLocation(p.xc, p.yc);\n\t}\n\n\t/* Method: getLocation() */\n\t/**\n\t * Returns a new <code>GPoint</code> whose coordinates are the same as this\n\t * one.\n\t *\n\t * @usage p = pt.getLocation();\n\t * @return A new point with the same coordinates\n\t */\n\tpublic GPoint getLocation() {\n\t\treturn new GPoint(xc, yc);\n\t}\n\n\t/* Method: translate(dx, dy) */\n\t/**\n\t * Adjusts the coordinates of a point by the specified <code>dx</code> and\n\t * <code>dy</code> offsets.\n\t *\n\t * @usage pt.translate(dx, dy);\n\t * @param dx\n\t *            The change in the x direction (positive is rightward)\n\t * @param dy\n\t *            The change in the y direction (positive is downward)\n\t */\n\tpublic void translate(double dx, double dy) {\n\t\txc += dx;\n\t\tyc += dy;\n\t}\n\n\t/* Method: toPoint() */\n\t/**\n\t * Converts this <code>GPoint</code> to the nearest integer-based\n\t * <code>Point</code>.\n\t *\n\t * @usage size = dim.toPoint();\n\t * @return The closest integer-based <code>Point</code>\n\t */\n\tpublic Point toPoint() {\n\t\treturn new Point((int) Math.round(xc), (int) Math.round(yc));\n\t}\n\n\t/* Method: hashCode() */\n\t/**\n\t * Returns an integer hash code for the point. The hash code for a\n\t * <code>GPoint</code> is constructed from the hash codes from the\n\t * <code>float</code> values of the coordinates, which are the ones used in\n\t * the <code>equals</code> method.\n\t *\n\t * @usage hash = pt.hashCode();\n\t * @return The hash code for this pt\n\t * @noshow\n\t */\n\tpublic int hashCode() {\n\t\treturn java.lang.Float.valueOf((float) xc).hashCode()\n\t\t\t\t^ (37 * java.lang.Float.valueOf((float) yc).hashCode());\n\t}\n\n\t/* Method: equals(obj) */\n\t/**\n\t * Tests whether two <code>GPoint</code> objects are equal. Because\n\t * floating-point values are inexact, this method checks for equality by\n\t * comparing the <code>float</code> values (rather than the\n\t * <code>double</code> values) of the coordinates.\n\t *\n\t * @usage if (pt.equals(obj)) . . .\n\t * @param obj\n\t *            Any object\n\t * @return <code>true</code> if the <code>obj</code> is a\n\t *         <code>GPoint</code> equal to this one, and <code>false</code>\n\t *         otherwise\n\t * @noshow\n\t */\n\tpublic boolean equals(Object obj) {\n\t\tif (!(obj instanceof GPoint))\n\t\t\treturn false;\n\t\tGPoint pt = (GPoint) obj;\n\t\treturn ((float) xc == (float) pt.xc) && ((float) yc == (float) pt.yc);\n\t}\n\t\n\t/**\n\t * Returns true if this GPoint's coordinates equal the given coordinates.\n\t */\n\tpublic boolean equals(double x, double y) {\n\t\treturn (float) xc == (float) x && (float) yc == (float) y;\n\t}\n\n\t/* Method: toString() */\n\t/**\n\t * Converts this <code>GPoint</code> to its string representation.\n\t * Decimal point on each coord will be shown if not a whole number.\n\t * Examples: \"(4, -7)\" or \"(-2.4, 3.68)\"\n\t *\n\t * @usage str = rect.toString();\n\t * @return A string representation of this point\n\t * @noshow\n\t */\n\tpublic String toString() {\n\t\tString xs = java.lang.Double.toString(xc);\n\t\tif (xs.endsWith(\".0\")) {\n\t\t\txs = xs.substring(0, xs.length() - 2);\n\t\t}\n\t\tString ys = java.lang.Double.toString(yc);\n\t\tif (ys.endsWith(\".0\")) {\n\t\t\tys = ys.substring(0, ys.length() - 2);\n\t\t}\n\t\treturn \"(\" + xs + \", \" + ys + \")\";\n\t}\n\n\t/* Private instance variables */\n\tprivate double xc;\n\tprivate double yc;\n\n\t/* Serial version UID */\n\t/**\n\t * The serialization code for this class. This value should be incremented\n\t * whenever you change the structure of this class in an incompatible way,\n\t * typically by adding a new instance variable.\n\t */\n\tstatic final long serialVersionUID = 1L;\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/graphics/GRectangle.java",
    "content": "/*\n * @(#)GRectangle.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Performance improvement 23-Jan-07 (ESR)\n//   1. Changed hashCode implementation for better performance.\n//\n// Feature enhancement 26-May-08 (ESR)\n//   1. Added support for serialization.\n\npackage acm.graphics;\n\nimport java.awt.*;\nimport java.io.*;\n\n/* Class: GRectangle */\n/**\n * This class is a double-precision version of the <code>Rectangle</code> class\n * in <code>java.awt</code>.\n */\npublic class GRectangle implements Serializable {\n\n/* Constructor: GRectangle() */\n/**\n * Constructs a new empty <code>GRectangle</code>.\n *\n * @usage rect = new GRectangle();\n */\n\tpublic GRectangle() {\n\t\tthis(0, 0, 0, 0);\n\t}\n\n/* Constructor: GRectangle(x, y, width, height) */\n/**\n * Constructs a new <code>GRectangle</code> with the specified coordinates and size.\n *\n * @usage rect = new GRectangle(x, y, width, height);\n * @param x The x-coordinate of the rectangle\n * @param y The y-coordinate of the rectangle\n * @param width The width of the rectangle\n * @param height The height of the rectangle\n */\n\tpublic GRectangle(double x, double y, double width, double height) {\n\t\txc = x;\n\t\tyc = y;\n\t\tmyWidth = width;\n\t\tmyHeight = height;\n\t}\n\n/* Constructor: GRectangle(width, height) */\n/**\n * Constructs a <code>GRectangle</code> at the origin with the specified width and height.\n *\n * @usage rect = new GRectangle(width, height);\n * @param width The width of the rectangle\n * @param height The height of the rectangle\n */\n\tpublic GRectangle(double width, double height) {\n\t\tthis(0, 0, width, height);\n\t}\n\n/* Constructor: GRectangle(pt, size) */\n/**\n * Constructs a new <code>GRectangle</code> with the specified location and size.\n *\n * @usage rect = new GRectangle(pt, size);\n * @param pt The location of the upper left corner of the rectangle\n * @param size The dimensions of the rectangle\n */\n\tpublic GRectangle(GPoint pt, GDimension size) {\n\t\tthis(pt.getX(), pt.getY(), size.getWidth(), size.getHeight());\n\t}\n\n/* Constructor: GRectangle(pt) */\n/**\n * Constructs a new empty <code>GRectangle</code> at the specified location.\n *\n * @usage rect = new GRectangle(pt);\n * @param pt The location of the upper left corner of the rectangle\n */\n\tpublic GRectangle(GPoint pt) {\n\t\tthis(pt.getX(), pt.getY(), 0, 0);\n\t}\n\n/* Constructor: GRectangle(size) */\n/**\n * Constructs a new <code>GRectangle</code> at the origin with the specified size.\n *\n * @usage rect = new GRectangle(size);\n * @param size The dimensions of the rectangle\n */\n\tpublic GRectangle(GDimension size) {\n\t\tthis(0, 0, size.getWidth(), size.getHeight());\n\t}\n\n/* Constructor: GRectangle(r) */\n/**\n * Constructs a new <code>GRectangle</code> from an existing one.\n *\n * @usage rect = new GRectangle(r);\n * @param r The original rectangle\n */\n\tpublic GRectangle(GRectangle r) {\n\t\tthis(r.xc, r.yc, r.myWidth, r.myHeight);\n\t}\n\n/* Method: getX() */\n/**\n * Returns the x coordinate of this <code>GRectangle</code>.\n *\n * @usage x = rect.getX();\n * @return The x coordinate of this <code>GRectangle</code>\n */\n\tpublic double getX() {\n\t\treturn xc;\n\t}\n\n/* Method: getY() */\n/**\n * Returns the y coordinate of this <code>GRectangle</code>.\n *\n * @usage y = rect.getY();\n * @return The y coordinate of this <code>GRectangle</code>\n */\n\tpublic double getY() {\n\t\treturn yc;\n\t}\n\n/* Method: getWidth() */\n/**\n * Returns the width of this <code>GDimension</code>.\n *\n * @usage width = rect.getWidth();\n * @return The width of this <code>GDimension</code>\n */\n\tpublic double getWidth() {\n\t\treturn myWidth;\n\t}\n\n/* Method: getHeight() */\n/**\n * Returns the height of this <code>GDimension</code>.\n *\n * @usage height = rect.getHeight();\n * @return The height of this <code>GDimension</code>\n */\n\tpublic double getHeight() {\n\t\treturn myHeight;\n\t}\n\n/* Method: setBounds(x, y, width, height) */\n/**\n * Sets the components of a <code>GRectangle</code> from the specified values.\n *\n * @usage rect.setBounds(x, y, width, height);\n * @param x The x-coordinate of the rectangle\n * @param y The y-coordinate of the rectangle\n * @param width The width of the rectangle\n * @param height The height of the rectangle\n */\n\tpublic void setBounds(double x, double y, double width, double height) {\n\t\txc = x;\n\t\tyc = y;\n\t\tmyWidth = width;\n\t\tmyHeight = height;\n\t}\n\n/* Method: setBounds(pt, size) */\n/**\n * Sets the components of a <code>GRectangle</code> from the specified location and size.\n *\n * @usage rect.setBounds(pt, size);\n * @param pt The location of the upper left corner of the rectangle\n * @param size The dimensions of the rectangle\n */\n\tpublic void setBounds(GPoint pt, GDimension size) {\n\t\tsetBounds(pt.getX(), pt.getY(), size.getWidth(), size.getHeight());\n\t}\n\n/* Method: setBounds(bounds) */\n/**\n * Sets the bounds of one <code>GRectangle</code> equal to that of another.\n *\n * @usage rect.setBounds(bounds);\n * @param bounds A <code>GRectangle</code> specifying the new bounds\n */\n\tpublic void setBounds(GRectangle bounds) {\n\t\tsetBounds(bounds.xc, bounds.yc, bounds.myWidth, bounds.myHeight);\n\t}\n\n/* Method: getBounds() */\n/**\n * Returns a new <code>GRectangle</code> whose bounds are the same as this one.\n *\n * @usage r = rect.getBounds();\n * @return A new rectangle with the same bounds\n */\n\tpublic GRectangle getBounds() {\n\t\treturn new GRectangle(this);\n\t}\n\n/* Method: setLocation(x, y) */\n/**\n * Sets the location of the <code>GRectangle</code> to the specified <code>x</code>\n * and <code>y</code> values.\n *\n * @usage rect.setLocation(x, y);\n * @param x The new x-coordinate for the rectangle\n * @param y The new y-coordinate for the rectangle\n */\n\tpublic void setLocation(double x, double y) {\n\t\txc = x;\n\t\tyc = y;\n\t}\n\n/* Method: setLocation(pt) */\n/**\n * Sets the location of the <code>GRectangle</code> to the specified point.\n *\n * @usage rect.setLocation(pt);\n * @param pt The new location for the rectangle\n */\n\tpublic void setLocation(GPoint pt) {\n\t\tsetLocation(pt.getX(), pt.getY());\n\t}\n\n/* Method: getLocation() */\n/**\n * Returns a new <code>GPoint</code> with the location of the rectangle.\n *\n * @usage pt = rect.getLocation();\n * @return The location of the rectangle as a <code>GPoint</code>\n */\n\tpublic GPoint getLocation() {\n\t\treturn new GPoint(xc, yc);\n\t}\n\n/* Method: translate(dx, dy) */\n/**\n * Adjusts the coordinates of a rectangle by the specified <code>dx</code> and\n * <code>dy</code> offsets.\n *\n * @usage rect.translate(dx, dy);\n * @param dx The change in the x direction (positive is rightward)\n * @param dy The change in the y direction (positive is downward)\n */\n\tpublic void translate(double dx, double dy) {\n\t\txc += dx;\n\t\tyc += dy;\n\t}\n\n/* Method: setSize(width, height) */\n/**\n * Sets the size of the <code>GRectangle</code> to the specified values.\n *\n * @usage rect.setSize(width, height);\n * @param width The new width of the rectangle\n * @param height The new height of the rectangle\n */\n\tpublic void setSize(double width, double height) {\n\t\tmyWidth = width;\n\t\tmyHeight = height;\n\t}\n\n/* Method: setSize(size) */\n/**\n * Sets the size of the <code>GRectangle</code> to the specified dimension.\n *\n * @usage rect.setSize(size);\n * @param size The new dimensions of the rectangle\n */\n\tpublic void setSize(GDimension size) {\n\t\tsetSize(size.getWidth(), size.getHeight());\n\t}\n\n/* Method: getSize() */\n/**\n * Returns a new <code>GDimension</code> object with the size of the <code>GRectangle</code>.\n * @usage size = rect.getSize();\n * @return The size of the rectangle as a <code>GDimension</code>\n */\n\tpublic GDimension getSize() {\n\t\treturn new GDimension(myWidth, myHeight);\n\t}\n\n/* Method: grow(dx, dy) */\n/**\n * Adjusts the edges of a rectangle by the specified <code>dx</code> and <code>dy</code>\n * offsets along each of its borders.\n *\n * @usage rect.grow(dx, dy);\n * @param dx The offset to extend each of the left and right borders\n * @param dy The offset to extend each of the top and bottom borders\n */\n\tpublic void grow(double dx, double dy) {\n\t\txc -= dx;\n\t\tyc -= dy;\n\t\tmyWidth += 2 * dx;\n\t\tmyHeight += 2 * dy;\n\t}\n\n/* Method: isEmpty() */\n/**\n * Returns <code>true</code> if the rectangle is empty.\n *\n * @usage if (rect.isEmpty()) . . .\n * @return <code>true</code> if the rectangle is empty, and <code>false</code> otherwise\n */\n\tpublic boolean isEmpty() {\n\t\treturn myWidth <= 0 || myHeight <= 0;\n\t}\n\n/* Method: contains(x, y) */\n/**\n * Returns <code>true</code> if the <code>GRectangle</code> contains the specified point.\n *\n * @usage if (rect.contains(x, y)) . . .\n * @param x The x-coordinate of the point being tested\n * @param y The y-coordinate of the point being tested\n * @return <code>true</code> if the rectangle contains (<code>x</code>,&nbsp;<code>y</code>),\n *         and <code>false</code> otherwise\n */\n\tpublic boolean contains(double x, double y) {\n\t\treturn x >= xc && y >= yc && x < xc + myWidth && y < yc + myHeight;\n\t}\n\n/* Method: contains(pt) */\n/**\n * Returns <code>true</code> if the <code>GRectangle</code> contains the specified point.\n *\n * @usage if (rect.contains(pt)) . . .\n * @param pt The point being tested\n * @return <code>true</code> if the rectangle contains <code>pt</code>,\n *         and <code>false</code> otherwise\n */\n\tpublic boolean contains(GPoint pt) {\n\t\treturn contains(pt.getX(), pt.getY());\n\t}\n\n/* Method: intersects(r2) */\n/**\n * Returns <code>true</code> if <code>r1</code> and <code>r2</code> have a nonempty\n * intersection.\n *\n * @usage if (r1.intersects(r2)) . . .\n * @param r2 A second rectangle\n * @return <code>true</code> if the two rectangles intersect, and <code>false</code> otherwise\n */\n\tpublic boolean intersects(GRectangle r2) {\n\t\tGRectangle r1 = this;\n\t\tif (r1.xc > r2.xc + r2.myWidth) return false;\n\t\tif (r1.yc > r2.yc + r2.myHeight) return false;\n\t\tif (r2.xc > r1.xc + r1.myWidth) return false;\n\t\tif (r2.yc > r1.yc + r1.myHeight) return false;\n\t\treturn true;\n\t}\n\n/* Method: intersection(r2) */\n/**\n * Returns the largest rectangle that is contained in both\n * <code>r1</code> and <code>r2</code>.\n *\n * @usage r3 = r1.intersection(r2);\n * @param r2 A second rectangle\n * @return The intersection of this rectangle and <code>r2</code>\n */\n\tpublic GRectangle intersection(GRectangle r2) {\n\t\tGRectangle r1 = this;\n\t\tdouble x1 = Math.max(r1.xc, r2.xc);\n\t\tdouble y1 = Math.max(r1.yc, r2.yc);\n\t\tdouble x2 = Math.min(r1.xc + r1.myWidth, r2.xc + r2.myWidth);\n\t\tdouble y2 = Math.min(r1.yc + r1.myHeight, r2.yc + r2.myHeight);\n\t\treturn new GRectangle(x1, y1, x2 - x1, y2 - y1);\n\t}\n\n/* Method: union(r) */\n/**\n * Returns the smallest rectangle that contains both\n * <code>r1</code> and <code>r2</code>.\n *\n * @usage r3 = r1.union(r2);\n * @param r2 A second rectangle\n * @return The union of this rectangle and <code>r2</code>\n */\n\tpublic GRectangle union(GRectangle r2) {\n\t\tif (isEmpty()) return new GRectangle(r2);\n\t\tif (r2.isEmpty()) return new GRectangle(this);\n\t\tGRectangle r1 = this;\n\t\tdouble x1 = Math.min(r1.xc, r2.xc);\n\t\tdouble y1 = Math.min(r1.yc, r2.yc);\n\t\tdouble x2 = Math.max(r1.xc + r1.myWidth, r2.xc + r2.myWidth);\n\t\tdouble y2 = Math.max(r1.yc + r1.myHeight, r2.yc + r2.myHeight);\n\t\treturn new GRectangle(x1, y1, x2 - x1, y2 - y1);\n\t}\n\n/* Method: add(r) */\n/**\n * Adjusts the bounds of the current <code>GRectangle</code> so that it contains\n * the rectangle represented by the argument.\n *\n * @usage rect.add(r);\n * @param r A new rectangle to include in this one\n */\n\tpublic void add(GRectangle r) {\n\t\tif (r.isEmpty()) return;\n\t\tif (isEmpty()) {\n\t\t\tsetBounds(r);\n\t\t\treturn;\n\t\t}\n\t\tdouble x2 = Math.max(xc + myWidth, r.xc + r.myWidth);\n\t\tdouble y2 = Math.max(yc + myHeight, r.yc + r.myHeight);\n\t\txc = Math.min(r.xc, xc);\n\t\tyc = Math.min(r.yc, yc);\n\t\tmyWidth = x2 - xc;\n\t\tmyHeight = y2 - yc;\n\t}\n\n/* Method: add(x, y) */\n/**\n * Adds the specified point to the rectangle.\n *\n * @usage rect.add(x, y);\n * @param x The x coordinate of the new point\n * @param y The y coordinate of the new point\n */\n\tpublic void add(double x, double y) {\n\t\tif (isEmpty()) {\n\t\t\tsetBounds(x, y, 0, 0);\n\t\t\treturn;\n\t\t}\n\t\tdouble x2 = Math.max(x + myWidth, x);\n\t\tdouble y2 = Math.max(y + myHeight, y);\n\t\txc = Math.min(x, xc);\n\t\tyc = Math.min(y, yc);\n\t\tmyWidth = x2 - xc;\n\t\tmyHeight = y2 - yc;\n\t}\n\n/* Method: toRectangle() */\n/**\n * Converts this <code>GRectangle</code> to the nearest integer-based <code>Rectangle</code>.\n *\n * @usage size = dim.toRectangle();\n * @return The closest integer-based <code>Rectangle</code>\n */\n\tpublic Rectangle toRectangle() {\n\t\treturn new Rectangle((int) Math.round(xc), (int) Math.round(yc),\n\t\t                     (int) Math.round(myWidth), (int) Math.round(myHeight));\n\t}\n\n/* Method: hashCode() */\n/**\n * Returns an integer hash code for the rectangle.  The hash code for a\n * <code>GRectangle</code> is constructed from the hash codes from the\n * <code>float</code> values of the coordinates, which are the ones used in the\n * <code>equals</code> method.\n *\n * @usage hash = rect.hashCode();\n * @return The hash code for this rectangle\n * @noshow\n */\n\tpublic int hashCode() {\n\t\tint hash = Float.valueOf((float) xc).hashCode();\n\t\thash = (37 * hash) ^ Float.valueOf((float) yc).hashCode();\n\t\thash = (37 * hash) ^ Float.valueOf((float) myWidth).hashCode();\n\t\thash = (37 * hash) ^ Float.valueOf((float) myHeight).hashCode();\n\t\treturn hash;\n\t}\n\n/* Method: equals(obj) */\n/**\n * Tests whether two <code>GRectangle</code> objects are equal.\n * Because floating-point values are inexact, this method checks for\n * equality by comparing the <code>float</code> values (rather than the\n * <code>double</code> values) of the coordinates.\n *\n * @usage if (rect.equals(obj)) . . .\n * @param obj Any object\n * @return <code>true</code> if the <code>obj</code> is a <code>GRectangle</code>\n *         equal to this one, and <code>false</code> otherwise\n * @noshow\n */\n\tpublic boolean equals(Object obj) {\n\t\tif (!(obj instanceof GRectangle)) return false;\n\t\tGRectangle r = (GRectangle) obj;\n\t\tif ((float) xc != (float) r.xc) return false;\n\t\tif ((float) yc != (float) r.yc) return false;\n\t\tif ((float) myWidth != (float) r.myWidth) return false;\n\t\tif ((float) myHeight != (float) r.myHeight) return false;\n\t\treturn true;\n\t}\n\n/* Method: toString() */\n/**\n * Converts this <code>GRectangle</code> to its string representation.\n *\n * @usage str = rect.toString();\n * @return A string representation of this rectangle\n * @noshow\n */\n\tpublic String toString() {\n\t\treturn \"[\" + (float) xc + \", \" + (float) yc + \", \"\n\t\t\t\t\t  + (float) myWidth + \"x\" + (float) myHeight + \"]\";\n\t}\n\n/* Private instance variables */\n\tprivate double xc;\n\tprivate double yc;\n\tprivate double myWidth;\n\tprivate double myHeight;\n\n/* Serial version UID */\n/**\n * The serialization code for this class.  This value should be incremented\n * whenever you change the structure of this class in an incompatible way,\n * typically by adding a new instance variable.\n */\n\tstatic final long serialVersionUID = 1L;\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/graphics/GResizable.java",
    "content": "/*\n * @(#)GResizable.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\npackage acm.graphics;\n\n/* Interface: GResizable */\n/**\n * Specifies the characteristics of a graphical object that supports the\n * <code>setSize</code> and <code>setBounds</code> methods.\n */\npublic interface GResizable {\n\n/* Method: setSize(width, height) */\n/**\n * Changes the size of this object to the specified width and height.\n *\n * @usage gobj.setSize(width, height);\n * @param width The new width of the object\n * @param height The new height of the object\n */\n\tpublic void setSize(double width, double height);\n\n/* Method: setSize(size) */\n/**\n * Changes the size of this object as specified by the <code>GDimension</code>\n * object.\n *\n * @usage gobj.setSize(size);\n * @param size A <code>GDimension</code> object specifying the new size\n */\n\tpublic void setSize(GDimension size);\n\n/* Method: setBounds(x, y, width, height) */\n/**\n * Changes the bounds of this object to the specified values.\n *\n * @usage gobj.setBounds(x, y, width, height);\n * @param x The new x-coordinate for the object\n * @param y The new y-coordinate for the object\n * @param width The new width of the object\n * @param height The new height of the object\n */\n\tpublic void setBounds(double x, double y, double width, double height);\n\n/* Method: setBounds(bounds) */\n/**\n * Changes the bounds of this object to the values from the specified\n * <code>GRectangle</code>.\n *\n * @usage gobj.setBounds(bounds);\n * @param bounds A <code>GRectangle</code> specifying the new bounds\n */\n\tpublic void setBounds(GRectangle bounds);\n\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/graphics/GScalable.java",
    "content": "/*\n * @(#)GScalable.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\npackage acm.graphics;\n\n/* Interface: GScalable */\n/**\n * Specifies the characteristics of a graphical object that supports the\n * <code>scale</code> method.\n */\npublic interface GScalable {\n\n/* Method: scale(sx, sy) */\n/**\n * Scales the object on the screen by the scale factors <code>sx</code> and <code>sy</code>.\n *\n * @usage gobj.scale(sx, sy);\n * @param sx The factor used to scale all coordinates in the x direction\n * @param sy The factor used to scale all coordinates in the y direction\n */\n\tpublic void scale(double sx, double sy);\n\n/* Method: scale(sf) */\n/**\n * Scales the object on the screen by the scale factor <code>sf</code>, which applies\n * in both dimensions.\n *\n * @usage gobj.scale(sf);\n * @param sf The factor used to scale all coordinates in both dimensions\n */\n\tpublic void scale(double sf);\n\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/graphics/GraphicsUtils.java",
    "content": "/*\n * @version 2017/10/14\n * - initial version\n */\n\npackage acm.graphics;\n\nimport java.awt.*;\n\n/**\n * A static class with utility methods related to graphics.\n */\npublic final class GraphicsUtils {\n\tprivate GraphicsUtils() {\n\t\t// empty\n\t}\n\t\n\tpublic static void printGraphicsDebugInfo(Graphics g) {\n\t\tSystem.err.println(\"GraphicsUtils: g =\" + g\n\t\t\t\t+ \"\\nis Graphics2D? \" + (g instanceof Graphics2D)\n\t\t\t\t+ \"\\nantialias = \" + ((Graphics2D) g).getRenderingHint(RenderingHints.KEY_ANTIALIASING));\n\t}\n\t\n\tpublic static void setAntialiasingDefault(Component comp) {\n\t\tif (comp != null) {\n\t\t\tsetAntialiasingDefault(comp.getGraphics());\n\t\t}\n\t}\n\t\n\tpublic static void setAntialiasing(Component comp, boolean antialiasing) {\n\t\tif (comp != null) {\n\t\t\tsetAntialiasing(comp.getGraphics(), antialiasing);\n\t\t}\n\t}\n\t\n\tpublic static void setAntialiasingDefault(Graphics g) {\n\t\tsetAntialiasing(g, GObject.isAntiAliasing());\n\t}\n\t\n\tpublic static void setAntialiasing(Graphics g, boolean antialiasing) {\n\t\tif (!(g instanceof Graphics2D)) {\n\t\t\treturn;\n\t\t}\n\t\tGraphics2D g2 = (Graphics2D) g;\n\t\tif (antialiasing) {\n\t\t\tg2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);\n\t\t} else {\n\t\t\tg2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF);\n\t\t\tg2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);\n\t\t\tg2.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_SPEED);\n\t\t}\n\t}\n\n\tpublic static void setAntialiasingDefault(Image image) {\n\t\tif (image != null) {\n\t\t\tsetAntialiasingDefault(image.getGraphics());\n\t\t}\n\t}\n\t\n\tpublic static void setAntialiasing(Image image, boolean antialiasing) {\n\t\tif (image != null) {\n\t\t\tsetAntialiasing(image.getGraphics(), antialiasing);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/gui/DoubleField.java",
    "content": "/*\n * @(#)DoubleField.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Bug fix 2-Mar-07 (ESR, JTFBug 2007-004)\n//   1. Fixed bug in the formatting code that allowed the display to\n//      extend beyond the boundaries of the component.\n//\n// Bug fix 6-May-07 (ESR, JTFBug 2007-006)\n//   1. Fixed various bugs in the localization of numbers.\n//\n// Feature enhancement 26-May-08 (ESR)\n//   1. Added support for serialization.\n\npackage acm.gui;\n\nimport acm.io.*;\nimport acm.util.*;\nimport java.awt.*;\nimport java.text.*;\nimport java.util.*;\nimport javax.swing.*;\n\n/* Class: DoubleField */\n/**\n * This class implements a simple interactor that accepts a floating-point value.\n */\npublic class DoubleField extends JTextField {\n\n/* Constructor: DoubleField() */\n/**\n * Creates a new field object for entering a <code>double</code> value.\n * The contents of the field are initially blank.\n *\n * @usage DoubleField field = new DoubleField();\n */\n\tpublic DoubleField() {\n\t\tthis(\"\", Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY);\n\t}\n\n/* Constructor: DoubleField(value) */\n/**\n * Creates a new field object for entering a <code>double</code> value.\n * The contents of the field initially contain the specified value.\n *\n * @usage DoubleField field = new DoubleField(value);\n * @param value The value to store in the field\n */\n\tpublic DoubleField(double value) {\n\t\tthis(\"\" + value, Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY);\n\t}\n\n/* Constructor: DoubleField(low, high) */\n/**\n * Creates a new field object for entering a <code>double</code> value,\n * which is constrained to be within the specified range. The contents\n * of the field are initially blank.\n *\n * @usage DoubleField field = new DoubleField(low, high);\n * @param low The lowest value in the permitted range\n * @param high The highest value in the permitted range\n */\n\tpublic DoubleField(double low, double high) {\n\t\tthis(\"\", low, high);\n\t}\n\n/* Constructor: DoubleField(value, low, high) */\n/**\n * Creates a new field object for entering a <code>double</code> value,\n * which is constrained to be within the specified range. The contents\n * of the field initially contain the specified value.\n *\n * @usage DoubleField field = new DoubleField(value, low, high);\n * @param value The value to store in the field\n * @param low The lowest value in the permitted range\n * @param high The highest value in the permitted range\n */\n\tpublic DoubleField(double value, double low, double high) {\n\t\tthis(\"\" + value, low, high);\n\t}\n\n/* Private constructor: DoubleField(str, low, high) */\n/**\n * Creates a new field object for entering a <code>double</code> value,\n * which is constrained to be within the specified range. The contents\n * of the field initially contain the specified string.\n */\n\tprivate DoubleField(String str, double low, double high) {\n\t\tparser = NumberFormat.getNumberInstance(Locale.US);\n\t\tsetBackground(Color.WHITE);\n\t\tsetHorizontalAlignment(RIGHT);\n\t\tminValue = low;\n\t\tmaxValue = high;\n\t\tsetText(str);\n\t\texceptionOnError = false;\n\t}\n\n/* Method: getValue() */\n/**\n * Returns the value of this field as a <code>double</code>.  If this value is either\n * not a legal numeric value or is outside the specified range, this method will\n * either pop up a dialog allowing the user to reenter the value or throw an\n * <code>ErrorException</code> depending on the state of the <code>exceptionOnError</code>\n * flag.\n *\n * @usage double d = field.getValue();\n * @return The value stored in the field as a <code>double</code>\n */\n\tpublic double getValue() {\n\t\tString text = getText().trim();\n\t\tif (text.length() == 0) {\n\t\t\tif (minValue <= 0 && maxValue >= 0) return 0.0;\n\t\t\treturn minValue;\n\t\t}\n\t\tString msg = null;\n\t\tdouble value = 0.0;\n\t\twhile (true) {\n\t\t\ttry {\n\t\t\t\tvalue = parser.parse(text).doubleValue();\n\t\t\t\tif (value >= minValue && value <= maxValue) break;\n\t\t\t\tmsg = \"Value is outside the specified range\";\n\t\t\t} catch (ParseException ex) {\n\t\t\t\tmsg = \"Illegal numeric format\";\n\t\t\t}\n\t\t\tif (exceptionOnError) {\n\t\t\t\tthrow new ErrorException(msg);\n\t\t\t} else {\n\t\t\t\tString prompt = \"Enter a number\";\n\t\t\t\tif (minValue != Double.NEGATIVE_INFINITY) {\n\t\t\t\t\tif (maxValue != Double.POSITIVE_INFINITY) {\n\t\t\t\t\t\tprompt += \" between \" + minValue + \" and \" + maxValue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tprompt += \" greater than \" + minValue;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (maxValue != Double.POSITIVE_INFINITY) {\n\t\t\t\t\t\tprompt += \" less than \" + maxValue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (dialog == null) dialog = new IODialog(this);\n\t\t\t\tvalue = dialog.readDouble(prompt, minValue, maxValue);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tsetValue(value);\n\t\treturn value;\n\t}\n\n/* Method: setValue(d) */\n/**\n * Sets the value of a field.\n *\n * @usage field.setValue(d);\n * @param d The value to be stored in the field\n */\n\tpublic void setValue(double d) {\n\t\tsetText((formatter == null) ? defaultFormat(d) : formatter.format(d));\n\t}\n\n/* Method: getFormat() */\n/**\n * Returns the format currently in use for this field, or\n * <code>null</code> if no format has been set.\n *\n * @usage String format = field.getFormat();\n * @return The format for this field\n */\n\tpublic String getFormat() {\n\t\treturn formatString;\n\t}\n\n/* Method: setFormat(format) */\n/**\n * Sets the format used for the field.  The structure of the\n * format string is described in the comments for the DecimalFormat\n * class.  If a format is set for the field, the format will also be\n * used to read the number to ensure that localization is correctly\n * handled.\n *\n * @usage field.setFormat(format);\n * @param format The format to use for the field\n */\n\tpublic void setFormat(String format) {\n\t\tString contents = getText().trim();\n\t\tdouble value = 0;\n\t\tif (contents.length() != 0) {\n\t\t\ttry {\n\t\t\t\tvalue = parser.parse(contents).doubleValue();\n\t\t\t} catch (ParseException ex) {\n\t\t\t\tthrow new ErrorException(ex);\n\t\t\t}\n\t\t}\n\t\tformatString = format;\n\t\tif (format == null) {\n\t\t\tformatter = null;\n\t\t\tparser = NumberFormat.getNumberInstance(Locale.US);\n\t\t} else {\n\t\t\tformatter = (format.length() == 0) ? new DecimalFormat() : new DecimalFormat(format);\n\t\t\tparser = formatter;\n\t\t}\n\t\tif (contents.length() != 0) {\n\t\t\tsetValue(value);\n\t\t}\n\t}\n\n/* Method: setExceptionOnError(flag) */\n/**\n * Sets the error-handling mode of this interactor as specified by the <code>flag</code>\n * parameter.  If <code>flag</code> is <code>false</code> (which is the default),\n * calling <a href=\"#getValue()\"><code>getValue</code></a> on this interactor displays\n * a dialog that gives the user a chance to retry after erroneous input.  If this\n * value is set to <code>true</code>, illegal input raises an\n * <a href=\"../util/ErrorException.html\"><code>ErrorException</code></a> instead.\n *\n * @usage field.setExceptionOnError(flag);\n * @param flag <code>false</code> to retry on errors; <code>true</code> to raise an exception\n */\n\tpublic void setExceptionOnError(boolean flag) {\n\t\texceptionOnError = flag;\n\t}\n\n/* Method: getExceptionOnError() */\n/**\n * Returns the state of the error-handling flag.\n *\n * @usage boolean flag = console.getExceptionOnError();\n * @return The current setting of the error-handling mode (<code>false</code> to retry\n *         on errors; <code>true</code> to raise an exception)\n */\n\tpublic boolean getExceptionOnError() {\n\t\treturn exceptionOnError;\n\t}\n\n/* Override method: getPreferredSize() */\n/**\n * Overrides the standard definition to impose a target size.\n * @noshow\n */\n\tpublic Dimension getPreferredSize() {\n\t\tDimension size = super.getPreferredSize();\n\t\treturn new Dimension(Math.max(MINIMUM_WIDTH, size.width),\n\t\t                     Math.max(MINIMUM_HEIGHT, size.height));\n\t}\n\n/* Private method: defaultFormat(d) */\n/**\n * This method formats the number if the formatter is <code>null</code>.\n * The code attempts to fit the value into the field.  All the work comes\n * from having to round off the digits that are shifted out of the field.\n */\n\tprivate String defaultFormat(double d) {\n\t\tString str = \"\" + d;\n\t\tint availableSpace = getSize().width - 2 * PIXEL_MARGIN;\n\t\tFontMetrics fm = getFontMetrics(getFont());\n\t\tif (fm.stringWidth(str) <= availableSpace) return str;\n\t\tint eIndex = str.indexOf(\"E\");\n\t\tString suffix = \"\";\n\t\tif (eIndex != -1) {\n\t\t\tsuffix = str.substring(eIndex);\n\t\t\tstr = str.substring(0, eIndex);\n\t\t\ttry {\n\t\t\t\td = parser.parse(str).doubleValue();\n\t\t\t} catch (ParseException ex) {\n\t\t\t\tthrow new ErrorException(ex);\n\t\t\t}\n\t\t}\n\t\tNumberFormat standard = NumberFormat.getNumberInstance(Locale.US);\n\t\tstandard.setGroupingUsed(false);\n\t\tString head = str.substring(0, str.indexOf('.') + 1);\n\t\tint fractionSpace = availableSpace - fm.stringWidth(head + suffix);\n\t\tif (fractionSpace > 0) {\n\t\t\tint fractionDigits = fractionSpace / fm.stringWidth(\"0\");\n\t\t\tstandard.setMaximumFractionDigits(fractionDigits);\n\t\t\treturn standard.format(d) + suffix;\n\t\t}\n\t\tstr = \"\";\n\t\twhile (fm.stringWidth(str + \"#\") <= availableSpace) {\n\t\t\tstr += \"#\";\n\t\t}\n\t\treturn str;\n\t}\n\n/* Private constants */\n\tprivate static final int MINIMUM_WIDTH = 60;\n\tprivate static final int MINIMUM_HEIGHT = 22;\n\tprivate static final int PIXEL_MARGIN = 2;\n\n/* Private instance variables */\n\tprivate boolean exceptionOnError;\n\tprivate double minValue;\n\tprivate double maxValue;\n\tprivate String formatString;\n\tprivate DecimalFormat formatter;\n\tprivate NumberFormat parser;\n\tprivate IODialog dialog;\n\n/* Serial version UID */\n/**\n * The serialization code for this class.  This value should be incremented\n * whenever you change the structure of this class in an incompatible way,\n * typically by adding a new instance variable.\n */\n\tstatic final long serialVersionUID = 1L;\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/gui/Event.java",
    "content": "package acm.gui;\n\nimport java.util.*;\n\n/**\n * A helper class to represent observable events.\n */\n@SuppressWarnings(\"deprecation\")\npublic class Event<T> extends Observable {\n\t/** Convenience method to replace notifyObservers. */\n\tpublic void fire() {\n\t\tnotifyObservers(null);\n\t}\n\n\t/** Convenience method to replace notifyObservers. */\n\tpublic void fire(T arg) {\n\t\tsetChanged();\n\t\tsuper.notifyObservers(arg);\n\t}\n}\n\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/gui/IntField.java",
    "content": "/*\n * @(#)IntField.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Bug fix 2-Mar-07 (ESR, JTFBug 2007-004)\n//   1. Fixed bug in the formatting code that allowed the display to\n//      extend beyond the boundaries of the component.\n//\n// Bug fix 6-May-07 (ESR, JTFBug 2007-006)\n//   1. Fixed various bugs in the localization of numbers.\n//\n// Feature enhancement 26-May-08 (ESR)\n//   1. Added support for serialization.\n\npackage acm.gui;\n\nimport acm.io.*;\nimport acm.util.*;\nimport java.awt.*;\nimport java.text.*;\nimport java.util.*;\nimport javax.swing.*;\n\n/* Class: IntField */\n/**\n * This class implements a simple interactor that accepts an integer value.\n */\npublic class IntField extends JTextField {\n\n/* Constructor: IntField() */\n/**\n * Creates a new field object for entering a <code>int</code> value.\n * The contents of the field are initially blank.\n *\n * @usage IntField field = new IntField();\n */\n\tpublic IntField() {\n\t\tthis(\"\", Integer.MIN_VALUE, Integer.MAX_VALUE);\n\t}\n\n/* Constructor: IntField(value) */\n/**\n * Creates a new field object for entering a <code>int</code> value.\n * The contents of the field initially contain the specified value.\n *\n * @usage IntField field = new IntField(value);\n * @param value The value to store in the field\n */\n\tpublic IntField(int value) {\n\t\tthis(\"\" + value, Integer.MIN_VALUE, Integer.MAX_VALUE);\n\t}\n\n/* Constructor: IntField(low, high) */\n/**\n * Creates a new field object for entering a <code>int</code> value,\n * which is constrained to be within the specified range. The contents\n * of the field are initially blank.\n *\n * @usage IntField field = new IntField(low, high);\n * @param low The lowest value in the permitted range\n * @param high The highest value in the permitted range\n */\n\tpublic IntField(int low, int high) {\n\t\tthis(\"\", low, high);\n\t}\n\n/* Constructor: IntField(value, low, high) */\n/**\n * Creates a new field object for entering a <code>int</code> value,\n * which is constrained to be within the specified range. The contents\n * of the field initially contain the specified value.\n *\n * @usage IntField field = new IntField(value, low, high);\n * @param value The value to store in the field\n * @param low The lowest value in the permitted range\n * @param high The highest value in the permitted range\n */\n\tpublic IntField(int value, int low, int high) {\n\t\tthis(\"\" + value, low, high);\n\t}\n\n/* Private constructor: IntField(str, low, high) */\n/**\n * Creates a new field object for entering a <code>int</code> value,\n * which is constrained to be within the specified range. The contents\n * of the field initially contain the specified string.\n */\n\tprivate IntField(String str, int low, int high) {\n\t\tparser = NumberFormat.getNumberInstance(Locale.US);\n\t\tsetBackground(Color.WHITE);\n\t\tsetHorizontalAlignment(RIGHT);\n\t\tminValue = low;\n\t\tmaxValue = high;\n\t\tsetText(str);\n\t\texceptionOnError = false;\n\t}\n\n/* Method: getValue() */\n/**\n * Returns the value of this field as a <code>int</code>.  If this value is either\n * not a legal numeric value or is outside the specified range, this method will\n * either pop up a dialog allowing the user to reenter the value or throw an\n * <code>ErrorException</code> depending on the state of the <code>exceptionOnError</code>\n * flag.\n *\n * @usage int n = field.getValue();\n * @return The value stored in the field as a <code>int</code>\n */\n\tpublic int getValue() {\n\t\tString text = getText().trim();\n\t\tif (text.length() == 0) {\n\t\t\tif (minValue <= 0 && maxValue >= 0) return 0;\n\t\t\treturn minValue;\n\t\t}\n\t\tString msg = null;\n\t\tint value = 0;\n\t\twhile (true) {\n\t\t\ttry {\n\t\t\t\tvalue = parser.parse(text).intValue();\n\t\t\t\tif (value >= minValue && value <= maxValue) break;\n\t\t\t\tmsg = \"Value is outside the specified range\";\n\t\t\t} catch (ParseException ex) {\n\t\t\t\tmsg = \"Illegal integer format\";\n\t\t\t}\n\t\t\tif (exceptionOnError) {\n\t\t\t\tthrow new ErrorException(msg);\n\t\t\t} else {\n\t\t\t\tString prompt = \"Enter an integer\";\n\t\t\t\tif (minValue != Integer.MIN_VALUE) {\n\t\t\t\t\tif (maxValue != Integer.MAX_VALUE) {\n\t\t\t\t\t\tprompt += \" between \" + minValue + \" and \" + maxValue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tprompt += \" greater than \" + minValue;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (maxValue != Integer.MAX_VALUE) {\n\t\t\t\t\t\tprompt += \" less than \" + maxValue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (dialog == null) dialog = new IODialog(this);\n\t\t\t\tvalue = dialog.readInt(prompt, minValue, maxValue);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tsetValue(value);\n\t\treturn value;\n\t}\n\n/* Method: setValue(n) */\n/**\n * Sets the value of a field.\n *\n * @usage field.setValue(n);\n * @param n The value to be stored in the field\n */\n\tpublic void setValue(int n) {\n\t\tsetText((formatter == null) ? defaultFormat(n) : formatter.format(n));\n\t}\n\n/* Method: getFormat() */\n/**\n * Returns the format currently in use for this field, or\n * <code>null</code> if no format has been set.\n *\n * @usage String format = field.getFormat();\n * @return The format for this field\n */\n\tpublic String getFormat() {\n\t\treturn formatString;\n\t}\n\n/* Method: setFormat(format) */\n/**\n * Sets the format used for the field.  The structure of the\n * format string is described in the comments for the DecimalFormat\n * class.\n *\n * @usage field.setFormat(format);\n * @param format The format to use for the field\n */\n\tpublic void setFormat(String format) {\n\t\tString contents = getText().trim();\n\t\tint value = 0;\n\t\tif (contents.length() != 0) {\n\t\t\ttry {\n\t\t\t\tvalue = parser.parse(contents).intValue();\n\t\t\t} catch (ParseException ex) {\n\t\t\t\tthrow new ErrorException(ex);\n\t\t\t}\n\t\t}\n\t\tformatString = format;\n\t\tif (format == null) {\n\t\t\tformatter = null;\n\t\t\tparser = NumberFormat.getNumberInstance(Locale.US);\n\t\t} else {\n\t\t\tformatter = (format.length() == 0) ? new DecimalFormat() : new DecimalFormat(format);\n\t\t\tparser = formatter;\n\t\t}\n\t\tif (contents.length() != 0) {\n\t\t\tsetValue(value);\n\t\t}\n\t}\n\n/* Method: setExceptionOnError(flag) */\n/**\n * Sets the error-handling mode of this interactor as specified by the <code>flag</code>\n * parameter.  If <code>flag</code> is <code>false</code> (which is the default),\n * calling <a href=\"#getValue()\"><code>getValue</code></a> on this interactor displays\n * a dialog that gives the user a chance to retry after erroneous input.  If this\n * value is set to <code>true</code>, illegal input raises an\n * <a href=\"../util/ErrorException.html\"><code>ErrorException</code></a> instead.\n *\n * @usage field.setExceptionOnError(flag);\n * @param flag <code>false</code> to retry on errors; <code>true</code> to raise an exception\n */\n\tpublic void setExceptionOnError(boolean flag) {\n\t\texceptionOnError = flag;\n\t}\n\n/* Method: getExceptionOnError() */\n/**\n * Returns the state of the error-handling flag.\n *\n * @usage boolean flag = console.getExceptionOnError();\n * @return The current setting of the error-handling mode (<code>false</code> to retry\n *         on errors; <code>true</code> to raise an exception)\n */\n\tpublic boolean getExceptionOnError() {\n\t\treturn exceptionOnError;\n\t}\n\n/* Override method: getPreferredSize() */\n/**\n * Overrides the standard definition to impose a target size.\n * @noshow\n */\n\tpublic Dimension getPreferredSize() {\n\t\tDimension size = super.getPreferredSize();\n\t\treturn new Dimension(Math.max(MINIMUM_WIDTH, size.width),\n\t\t                     Math.max(MINIMUM_HEIGHT, size.height));\n\t}\n\n/* Private method: defaultFormat(n) */\n/**\n * This method formats the number if the formatter is <code>null</code>.\n * The only special case that applies occurs if the output is larger than\n * the field, in which case the entire display is replaced by number signs.\n */\n\tprivate String defaultFormat(int n) {\n\t\tString str = \"\" + n;\n\t\tint availableSpace = getSize().width - 2 * PIXEL_MARGIN;\n\t\tFontMetrics fm = getFontMetrics(getFont());\n\t\tif (fm.stringWidth(str) > availableSpace) {\n\t\t\tstr = \"\";\n\t\t\twhile (fm.stringWidth(str + \"#\") <= availableSpace) {\n\t\t\t\tstr += \"#\";\n\t\t\t}\n\t\t}\n\t\treturn str;\n\t}\n\n/* Private constants */\n\tprivate static final int MINIMUM_WIDTH = 60;\n\tprivate static final int MINIMUM_HEIGHT = 22;\n\tprivate static final int PIXEL_MARGIN = 2;\n\n/* Private instance variables */\n\tprivate boolean exceptionOnError;\n\tprivate int minValue;\n\tprivate int maxValue;\n\tprivate String formatString;\n\tprivate DecimalFormat formatter;\n\tprivate NumberFormat parser;\n\tprivate IODialog dialog;\n\n/* Serial version UID */\n/**\n * The serialization code for this class.  This value should be incremented\n * whenever you change the structure of this class in an incompatible way,\n * typically by adding a new instance variable.\n */\n\tstatic final long serialVersionUID = 1L;\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/gui/JButtonGroup.java",
    "content": "/*\n * @version 2016/05/19\n * - initial version; for 16sp CS 106A\n */\n\npackage acm.gui;\n\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.util.*;\nimport java.util.List;\nimport javax.swing.*;\n\npublic class JButtonGroup extends JPanel implements Iterable<JRadioButton> {\n\tprivate ButtonGroup group;\n\tprivate List<JRadioButton> buttons;\n\tprivate boolean vertical = false;\n\t\n\t// instance initializer\n\t{\n\t\tclear();\n\t}\n\t\n\tpublic JButtonGroup() {\n\t\t// empty\n\t}\n\t\n\tpublic JButtonGroup(String... items) {\n\t\taddAll(/* listener */ null, items);\n\t}\n\t\n\tpublic JButtonGroup(ActionListener listener, String... items) {\n\t\taddAll(listener, items);\n\t}\n\t\n\tpublic void addActionListener(ActionListener listener) {\n\t\tfor (JRadioButton button : this) {\n\t\t\tboolean shouldAdd = true;\n\t\t\tfor (ActionListener listener2 : button.getActionListeners()) {\n\t\t\t\tif (listener2 == listener) {\n\t\t\t\t\tshouldAdd = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (shouldAdd) {\n\t\t\t\tbutton.addActionListener(listener);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tpublic ActionListener[] getActionListeners() {\n\t\tLinkedHashSet<ActionListener> list = new LinkedHashSet<ActionListener>();\n\t\tfor (JRadioButton button : this) {\n\t\t\tfor (ActionListener listener : button.getActionListeners()) {\n\t\t\t\tlist.add(listener);\n\t\t\t}\n\t\t}\n\t\treturn list.toArray(new ActionListener[0]);\n\t}\n\t\n\tpublic void removeActionListener(ActionListener listener) {\n\t\tfor (JRadioButton button : this) {\n\t\t\tbutton.removeActionListener(listener);\n\t\t}\n\t}\n\t\n\tpublic void addAll(ActionListener listener, String... items) {\n\t\tfor (String item : items) {\n\t\t\tAbstractButton jrb = add(item);\n\t\t\tif (listener != null) {\n\t\t\t\tjrb.addActionListener(listener);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t@Override\n\tpublic Component add(Component comp) {\n\t\tif (comp instanceof JRadioButton) {\n\t\t\tadd((JRadioButton) comp);\n\t\t\treturn comp;\n\t\t} else {\n\t\t\treturn super.add(comp);\n\t\t}\n\t}\n\t\n\t@Override\n\tpublic Component add(Component comp, int index) {\n\t\treturn add(comp);\n\t}\n\t\n\t@Override\n\tpublic Component add(String name, Component comp) {\n\t\treturn add(comp);\n\t}\n\t\n\tpublic void add(JRadioButton button) {\n\t\tif (isEmpty()) {\n\t\t\tbutton.setSelected(true);\n\t\t}\n\t\tgroup.add(button);\n\t\tsuper.add(button);\n\t}\n\t\n\tpublic AbstractButton add(String text) {\n\t\tJRadioButton jrb = new JRadioButton(text);\n\t\tadd(jrb);\n\t\treturn jrb;\n\t}\n\t\n\tpublic void clear() {\n\t\tsuper.removeAll();\n\t\tgroup = new ButtonGroup();\n\t\tbuttons = new ArrayList<JRadioButton>();\n\t}\n\t\n\tpublic int getButtonCount() {\n\t\treturn group.getButtonCount();\n\t}\n\t\n\tpublic JRadioButton getSelectedButton() {\n\t\tfor (JRadioButton button : buttons) {\n\t\t\tif (button.isSelected()) {\n\t\t\t\treturn button;\n\t\t\t}\n\t\t}\n\t\treturn null;   // should not be reached\n\t}\n\t\n\tpublic String getSelectedText() {\n\t\tJRadioButton button = getSelectedButton();\n\t\tif (button == null) {\n\t\t\treturn null;\n\t\t} else {\n\t\t\treturn button.getText();\n\t\t}\n\t}\n\t\n\tpublic boolean isEmpty() {\n\t\treturn getButtonCount() == 0;\n\t}\n\t\n\tpublic boolean isSelected(String text) {\n\t\tString selectedText = getSelectedText();\n\t\treturn selectedText != null && selectedText.equals(text);\n\t}\n\t\n\tpublic boolean isVertical() {\n\t\treturn vertical;\n\t}\n\t\n\tpublic Iterator<JRadioButton> iterator() {\n\t\treturn Collections.unmodifiableList(buttons).iterator();\n\t}\n\t\n\t@Override\n\tpublic void remove(Component comp) {\n\t\tif (comp instanceof JRadioButton) {\n\t\t\tremove((JRadioButton) comp);\n\t\t} else {\n\t\t\tsuper.remove(comp);\n\t\t}\n\t}\n\t\n\tpublic void remove(JRadioButton button) {\n\t\tfor (int i = 0; i < buttons.size(); i++) {\n\t\t\tJRadioButton jrb = buttons.get(i);\n\t\t\tif (button == jrb) {\n\t\t\t\tbuttons.remove(i);\n\t\t\t\tgroup.remove(jrb);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\t\n\tpublic void remove(String text) {\n\t\tfor (int i = 0; i < buttons.size(); i++) {\n\t\t\tJRadioButton button = buttons.get(i);\n\t\t\tif (button.getText().equals(text)) {\n\t\t\t\tbuttons.remove(i);\n\t\t\t\tgroup.remove(button);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\t\n\t@Override\n\tpublic void removeAll() {\n\t\tclear();\n\t}\n\t\n\tpublic void setVertical(boolean vertical) {\n\t\tif (this.vertical != vertical) {\n\t\t\tif (vertical) {\n\t\t\t\tsetLayout(new BoxLayout(this, BoxLayout.Y_AXIS));\n\t\t\t} else {\n\t\t\t\tsetLayout(new FlowLayout());\n\t\t\t}\n\t\t}\n\t\tthis.vertical = vertical;\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/gui/JFontChooser.java",
    "content": "/*\n * @version 2016/05/17\n * - initial version for Stanford Java/CPP libs\n */\n\npackage acm.gui;\n\n// This class based on code found at:\n// http://stackoverflow.com/questions/2120228/java-swing-font-chooser\n// That code is copyright 2004-2005,2007-2008 Masahiko SAWAI All Rights Reserved. \n\nimport java.awt.*;\nimport java.awt.event.*;\nimport javax.swing.*;\nimport javax.swing.border.*;\nimport javax.swing.event.*;\nimport javax.swing.text.*;\n\n/**\n * The <code>JFontChooser</code> class is a swing component for font selection.\n * This class has <code>JFileChooser</code> like APIs. The following code pops\n * up a font chooser dialog.\n * \n * <pre>\n * JFontChooser fontChooser = new JFontChooser();\n * int result = fontChooser.showDialog(parent);\n * if (result == JFontChooser.OK_OPTION) {\n *     Font font = fontChooser.getSelectedFont();\n *     System.out.println(\"Selected Font : \" + font);\n * }\n * <pre>\n **/\n@SuppressWarnings(\"rawtypes\")\npublic class JFontChooser extends JComponent {\n\t// class variables\n\t/**\n\t * Return value from <code>showDialog()</code>.\n\t * \n\t * @see #showDialog\n\t **/\n\tpublic static final int OK_OPTION = 0;\n\t/**\n\t * Return value from <code>showDialog()</code>.\n\t * \n\t * @see #showDialog\n\t **/\n\tpublic static final int CANCEL_OPTION = 1;\n\t/**\n\t * Return value from <code>showDialog()</code>.\n\t * \n\t * @see #showDialog\n\t **/\n\tpublic static final int ERROR_OPTION = -1;\n\tprivate static final Font DEFAULT_SELECTED_FONT = new Font(\"Serif\", Font.PLAIN, 12);\n\tprivate static final Font DEFAULT_FONT = new Font(\"Dialog\", Font.PLAIN, new JLabel().getFont().getSize());\n\tprivate static final int[] FONT_STYLE_CODES = { Font.PLAIN, Font.BOLD, Font.ITALIC, Font.BOLD | Font.ITALIC };\n\tprivate static final String[] DEFAULT_FONT_SIZE_STRINGS = { \"8\", \"9\", \"10\", \"11\", \"12\", \"14\", \"16\", \"18\", \"20\",\n\t\t\t\"22\", \"24\", \"26\", \"28\", \"36\", \"48\", \"72\", };\n\tprivate static final int TOP_PANE_PREFERRED_HEIGHT = 160;\n\t\n\t// instance variables\n\tprotected int dialogResultValue = ERROR_OPTION;\n\n\tprivate String[] fontStyleNames = null;\n\tprivate String[] fontFamilyNames = null;\n\tprivate String[] fontSizeStrings = null;\n\tprivate JTextField fontFamilyTextField = null;\n\tprivate JTextField fontStyleTextField = null;\n\tprivate JTextField fontSizeTextField = null;\n\tprivate JList fontNameList = null;\n\tprivate JList fontStyleList = null;\n\tprivate JList fontSizeList = null;\n\tprivate JPanel fontNamePanel = null;\n\tprivate JPanel fontStylePanel = null;\n\tprivate JPanel fontSizePanel = null;\n\tprivate JPanel samplePanel = null;\n\tprivate JTextField sampleText = null;\n\n\t/**\n\t * Constructs a <code>JFontChooser</code> object.\n\t **/\n\tpublic JFontChooser() {\n\t\tinit(DEFAULT_FONT_SIZE_STRINGS);\n\t}\n\n\tpublic JFontChooser(int[] fontSizes) {\n\t\tString[] fontSizeStrings = new String[fontSizes.length];\n\t\tfor (int i = 0; i < fontSizes.length; i++) {\n\t\t\tfontSizeStrings[i] = String.valueOf(fontSizes[i]);\n\t\t}\n\t\tinit(fontSizeStrings);\n\t}\n\t\n\t/**\n\t * Constructs a <code>JFontChooser</code> object using the given font size\n\t * array.\n\t * \n\t * @param fontSizeStrings\n\t *            the array of font size string.\n\t **/\n\tpublic JFontChooser(String[] fontSizeStrings) {\n\t\tinit(fontSizeStrings);\n\t}\n\t\n\tprivate void init(String[] fontSizeStrings) {\n\t\tif (fontSizeStrings == null) {\n\t\t\tfontSizeStrings = DEFAULT_FONT_SIZE_STRINGS;\n\t\t}\n\t\tthis.fontSizeStrings = fontSizeStrings;\n\n\t\tJPanel selectPanel = new JPanel();\n\t\tselectPanel.setLayout(new BoxLayout(selectPanel, BoxLayout.X_AXIS));\n\t\tselectPanel.add(getFontFamilyPanel());\n\t\tselectPanel.add(getFontStylePanel());\n\t\tselectPanel.add(getFontSizePanel());\n\n\t\tJPanel contentsPanel = new JPanel();\n\t\t//contentsPanel.setLayout(new GridLayout(2, 1));\n\t\t//contentsPanel.add(selectPanel, BorderLayout.NORTH);\n\t\t//contentsPanel.add(getSamplePanel(), BorderLayout.CENTER);\n\t\tcontentsPanel.setLayout(new BorderLayout());\n\t\tcontentsPanel.add(selectPanel, BorderLayout.CENTER);\n\t\tcontentsPanel.add(getSamplePanel(), BorderLayout.SOUTH);\n\n\t\tthis.setLayout(new BoxLayout(this, BoxLayout.X_AXIS));\n\t\tthis.add(contentsPanel);\n\t\tthis.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));\n\t\tthis.setSelectedFont(DEFAULT_SELECTED_FONT);\n\t}\n\n\tpublic JTextField getFontFamilyTextField() {\n\t\tif (fontFamilyTextField == null) {\n\t\t\tfontFamilyTextField = new JTextField();\n\t\t\tfontFamilyTextField.addFocusListener(new TextFieldFocusHandlerForTextSelection(fontFamilyTextField));\n\t\t\tfontFamilyTextField.addKeyListener(new TextFieldKeyHandlerForListSelectionUpDown(getFontFamilyList()));\n\t\t\tfontFamilyTextField.getDocument()\n\t\t\t\t\t.addDocumentListener(new ListSearchTextFieldDocumentHandler(getFontFamilyList()));\n\t\t\tfontFamilyTextField.setFont(DEFAULT_FONT);\n\n\t\t}\n\t\treturn fontFamilyTextField;\n\t}\n\n\tpublic JTextField getFontStyleTextField() {\n\t\tif (fontStyleTextField == null) {\n\t\t\tfontStyleTextField = new JTextField();\n\t\t\tfontStyleTextField.addFocusListener(new TextFieldFocusHandlerForTextSelection(fontStyleTextField));\n\t\t\tfontStyleTextField.addKeyListener(new TextFieldKeyHandlerForListSelectionUpDown(getFontStyleList()));\n\t\t\tfontStyleTextField.getDocument()\n\t\t\t\t\t.addDocumentListener(new ListSearchTextFieldDocumentHandler(getFontStyleList()));\n\t\t\tfontStyleTextField.setFont(DEFAULT_FONT);\n\t\t}\n\t\treturn fontStyleTextField;\n\t}\n\n\tpublic JTextField getFontSizeTextField() {\n\t\tif (fontSizeTextField == null) {\n\t\t\tfontSizeTextField = new JTextField();\n\t\t\tfontSizeTextField.addFocusListener(new TextFieldFocusHandlerForTextSelection(fontSizeTextField));\n\t\t\tfontSizeTextField.addKeyListener(new TextFieldKeyHandlerForListSelectionUpDown(getFontSizeList()));\n\t\t\tfontSizeTextField.getDocument()\n\t\t\t\t\t.addDocumentListener(new ListSearchTextFieldDocumentHandler(getFontSizeList()));\n\t\t\tfontSizeTextField.setFont(DEFAULT_FONT);\n\t\t}\n\t\treturn fontSizeTextField;\n\t}\n\n\t@SuppressWarnings(\"unchecked\")\n\tpublic JList getFontFamilyList() {\n\t\tif (fontNameList == null) {\n\t\t\tfontNameList = new JList(getFontFamilies());\n\t\t\tfontNameList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\n\t\t\tfontNameList.addListSelectionListener(new ListSelectionHandler(getFontFamilyTextField()));\n\t\t\tfontNameList.setSelectedIndex(0);\n\t\t\tfontNameList.setFont(DEFAULT_FONT);\n\t\t\tfontNameList.setFocusable(false);\n\t\t}\n\t\treturn fontNameList;\n\t}\n\n\t@SuppressWarnings(\"unchecked\")\n\tpublic JList getFontStyleList() {\n\t\tif (fontStyleList == null) {\n\t\t\tfontStyleList = new JList(getFontStyleNames());\n\t\t\tfontStyleList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\n\t\t\tfontStyleList.addListSelectionListener(new ListSelectionHandler(getFontStyleTextField()));\n\t\t\tfontStyleList.setSelectedIndex(0);\n\t\t\tfontStyleList.setFont(DEFAULT_FONT);\n\t\t\tfontStyleList.setFocusable(false);\n\t\t}\n\t\treturn fontStyleList;\n\t}\n\n\t@SuppressWarnings(\"unchecked\")\n\tpublic JList getFontSizeList() {\n\t\tif (fontSizeList == null) {\n\t\t\tfontSizeList = new JList(this.fontSizeStrings);\n\t\t\tfontSizeList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\n\t\t\tfontSizeList.addListSelectionListener(new ListSelectionHandler(getFontSizeTextField()));\n\t\t\tfontSizeList.setSelectedIndex(0);\n\t\t\tfontSizeList.setFont(DEFAULT_FONT);\n\t\t\tfontSizeList.setFocusable(false);\n\t\t}\n\t\treturn fontSizeList;\n\t}\n\n\t/**\n\t * Get the family name of the selected font.\n\t * \n\t * @return the font family of the selected font.\n\t *\n\t * @see #setSelectedFontFamily\n\t **/\n\tpublic String getSelectedFontFamily() {\n\t\tString fontName = (String) getFontFamilyList().getSelectedValue();\n\t\treturn fontName;\n\t}\n\n\t/**\n\t * Get the style of the selected font.\n\t * \n\t * @return the style of the selected font. <code>Font.PLAIN</code>,\n\t *         <code>Font.BOLD</code>, <code>Font.ITALIC</code>,\n\t *         <code>Font.BOLD|Font.ITALIC</code>\n\t *\n\t * @see java.awt.Font#PLAIN\n\t * @see java.awt.Font#BOLD\n\t * @see java.awt.Font#ITALIC\n\t * @see #setSelectedFontStyle\n\t **/\n\tpublic int getSelectedFontStyle() {\n\t\tint index = getFontStyleList().getSelectedIndex();\n\t\treturn FONT_STYLE_CODES[index];\n\t}\n\n\t/**\n\t * Get the size of the selected font.\n\t * \n\t * @return the size of the selected font\n\t *\n\t * @see #setSelectedFontSize\n\t **/\n\tpublic int getSelectedFontSize() {\n\t\tint fontSize = 1;\n\t\tString fontSizeString = getFontSizeTextField().getText();\n\t\twhile (true) {\n\t\t\ttry {\n\t\t\t\tfontSize = Integer.parseInt(fontSizeString);\n\t\t\t\tbreak;\n\t\t\t} catch (NumberFormatException e) {\n\t\t\t\tfontSizeString = (String) getFontSizeList().getSelectedValue();\n\t\t\t\tgetFontSizeTextField().setText(fontSizeString);\n\t\t\t}\n\t\t}\n\n\t\treturn fontSize;\n\t}\n\n\t/**\n\t * Get the selected font.\n\t * \n\t * @return the selected font\n\t *\n\t * @see #setSelectedFont\n\t * @see java.awt.Font\n\t **/\n\tpublic Font getSelectedFont() {\n\t\tFont font = new Font(getSelectedFontFamily(), getSelectedFontStyle(), getSelectedFontSize());\n\t\treturn font;\n\t}\n\n\t/**\n\t * Set the family name of the selected font.\n\t * \n\t * @param name\n\t *            the family name of the selected font.\n\t *\n\t * @see getSelectedFontFamily\n\t **/\n\tpublic void setSelectedFontFamily(String name) {\n\t\tString[] names = getFontFamilies();\n\t\tfor (int i = 0; i < names.length; i++) {\n\t\t\tif (names[i].toLowerCase().equals(name.toLowerCase())) {\n\t\t\t\tgetFontFamilyList().setSelectedIndex(i);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tupdateSampleFont();\n\t}\n\n\t/**\n\t * Set the style of the selected font.\n\t * \n\t * @param style\n\t *            the size of the selected font. <code>Font.PLAIN</code>,\n\t *            <code>Font.BOLD</code>, <code>Font.ITALIC</code>, or\n\t *            <code>Font.BOLD|Font.ITALIC</code>.\n\t *\n\t * @see java.awt.Font#PLAIN\n\t * @see java.awt.Font#BOLD\n\t * @see java.awt.Font#ITALIC\n\t * @see #getSelectedFontStyle\n\t **/\n\tpublic void setSelectedFontStyle(int style) {\n\t\tfor (int i = 0; i < FONT_STYLE_CODES.length; i++) {\n\t\t\tif (FONT_STYLE_CODES[i] == style) {\n\t\t\t\tgetFontStyleList().setSelectedIndex(i);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tupdateSampleFont();\n\t}\n\n\t/**\n\t * Set the size of the selected font.\n\t * \n\t * @param size\n\t *            the size of the selected font\n\t *\n\t * @see #getSelectedFontSize\n\t **/\n\tpublic void setSelectedFontSize(int size) {\n\t\tString sizeString = String.valueOf(size);\n\t\tfor (int i = 0; i < this.fontSizeStrings.length; i++) {\n\t\t\tif (this.fontSizeStrings[i].equals(sizeString)) {\n\t\t\t\tgetFontSizeList().setSelectedIndex(i);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tgetFontSizeTextField().setText(sizeString);\n\t\tupdateSampleFont();\n\t}\n\n\t/**\n\t * Set the selected font.\n\t * \n\t * @param font\n\t *            the selected font\n\t *\n\t * @see #getSelectedFont\n\t * @see java.awt.Font\n\t **/\n\tpublic void setSelectedFont(Font font) {\n\t\tsetSelectedFontFamily(font.getFamily());\n\t\tsetSelectedFontStyle(font.getStyle());\n\t\tsetSelectedFontSize(font.getSize());\n\t}\n\n\tpublic String getVersionString() {\n\t\treturn (\"Version\");\n\t}\n\n\t/**\n\t * Show font selection dialog.\n\t * \n\t * @param parent\n\t *            Dialog's Parent component.\n\t * @return OK_OPTION, CANCEL_OPTION or ERROR_OPTION\n\t *\n\t * @see #OK_OPTION\n\t * @see #CANCEL_OPTION\n\t * @see #ERROR_OPTION\n\t **/\n\tpublic int showDialog(Component parent) {\n\t\tdialogResultValue = ERROR_OPTION;\n\t\tJDialog dialog = createDialog(parent);\n\t\tdialog.addWindowListener(new WindowAdapter() {\n\t\t\tpublic void windowClosing(WindowEvent e) {\n\t\t\t\tdialogResultValue = CANCEL_OPTION;\n\t\t\t}\n\t\t});\n\n\t\tdialog.setVisible(true);\n\t\tdialog.dispose();\n\t\tdialog = null;\n\n\t\treturn dialogResultValue;\n\t}\n\n\tprotected class ListSelectionHandler implements ListSelectionListener {\n\t\tprivate JTextComponent textComponent;\n\n\t\tListSelectionHandler(JTextComponent textComponent) {\n\t\t\tthis.textComponent = textComponent;\n\t\t}\n\n\t\tpublic void valueChanged(ListSelectionEvent e) {\n\t\t\tif (e.getValueIsAdjusting() == false) {\n\t\t\t\tJList list = (JList) e.getSource();\n\t\t\t\tString selectedValue = (String) list.getSelectedValue();\n\n\t\t\t\tString oldValue = textComponent.getText();\n\t\t\t\ttextComponent.setText(selectedValue);\n\t\t\t\tif (!oldValue.equalsIgnoreCase(selectedValue)) {\n\t\t\t\t\ttextComponent.selectAll();\n\t\t\t\t\ttextComponent.requestFocus();\n\t\t\t\t}\n\n\t\t\t\tupdateSampleFont();\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected class TextFieldFocusHandlerForTextSelection extends FocusAdapter {\n\t\tprivate JTextComponent textComponent;\n\n\t\tpublic TextFieldFocusHandlerForTextSelection(JTextComponent textComponent) {\n\t\t\tthis.textComponent = textComponent;\n\t\t}\n\n\t\tpublic void focusGained(FocusEvent e) {\n\t\t\ttextComponent.selectAll();\n\t\t}\n\n\t\tpublic void focusLost(FocusEvent e) {\n\t\t\ttextComponent.select(0, 0);\n\t\t\tupdateSampleFont();\n\t\t}\n\t}\n\n\tprotected class TextFieldKeyHandlerForListSelectionUpDown extends KeyAdapter {\n\t\tprivate JList targetList;\n\n\t\tpublic TextFieldKeyHandlerForListSelectionUpDown(JList list) {\n\t\t\tthis.targetList = list;\n\t\t}\n\n\t\tpublic void keyPressed(KeyEvent e) {\n\t\t\tint i = targetList.getSelectedIndex();\n\t\t\tswitch (e.getKeyCode()) {\n\t\t\tcase KeyEvent.VK_UP:\n\t\t\t\ti = targetList.getSelectedIndex() - 1;\n\t\t\t\tif (i < 0) {\n\t\t\t\t\ti = 0;\n\t\t\t\t}\n\t\t\t\ttargetList.setSelectedIndex(i);\n\t\t\t\tbreak;\n\t\t\tcase KeyEvent.VK_DOWN:\n\t\t\t\tint listSize = targetList.getModel().getSize();\n\t\t\t\ti = targetList.getSelectedIndex() + 1;\n\t\t\t\tif (i >= listSize) {\n\t\t\t\t\ti = listSize - 1;\n\t\t\t\t}\n\t\t\t\ttargetList.setSelectedIndex(i);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected class ListSearchTextFieldDocumentHandler implements DocumentListener {\n\t\tJList targetList;\n\n\t\tpublic ListSearchTextFieldDocumentHandler(JList targetList) {\n\t\t\tthis.targetList = targetList;\n\t\t}\n\n\t\tpublic void insertUpdate(DocumentEvent e) {\n\t\t\tupdate(e);\n\t\t}\n\n\t\tpublic void removeUpdate(DocumentEvent e) {\n\t\t\tupdate(e);\n\t\t}\n\n\t\tpublic void changedUpdate(DocumentEvent e) {\n\t\t\tupdate(e);\n\t\t}\n\n\t\tprivate void update(DocumentEvent event) {\n\t\t\tString newValue = \"\";\n\t\t\ttry {\n\t\t\t\tDocument doc = event.getDocument();\n\t\t\t\tnewValue = doc.getText(0, doc.getLength());\n\t\t\t} catch (BadLocationException e) {\n\t\t\t\te.printStackTrace();\n\t\t\t}\n\n\t\t\tif (newValue.length() > 0) {\n\t\t\t\tint index = targetList.getNextMatch(newValue, 0, Position.Bias.Forward);\n\t\t\t\tif (index < 0) {\n\t\t\t\t\tindex = 0;\n\t\t\t\t}\n\t\t\t\ttargetList.ensureIndexIsVisible(index);\n\n\t\t\t\tString matchedName = targetList.getModel().getElementAt(index).toString();\n\t\t\t\tif (newValue.equalsIgnoreCase(matchedName)) {\n\t\t\t\t\tif (index != targetList.getSelectedIndex()) {\n\t\t\t\t\t\tSwingUtilities.invokeLater(new ListSelector(index));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic class ListSelector implements Runnable {\n\t\t\tprivate int index;\n\n\t\t\tpublic ListSelector(int index) {\n\t\t\t\tthis.index = index;\n\t\t\t}\n\n\t\t\tpublic void run() {\n\t\t\t\ttargetList.setSelectedIndex(this.index);\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected class DialogOKAction extends AbstractAction {\n\t\tprotected static final String ACTION_NAME = \"OK\";\n\t\tprivate JDialog dialog;\n\n\t\tprotected DialogOKAction(JDialog dialog) {\n\t\t\tthis.dialog = dialog;\n\t\t\tputValue(Action.DEFAULT, ACTION_NAME);\n\t\t\tputValue(Action.ACTION_COMMAND_KEY, ACTION_NAME);\n\t\t\tputValue(Action.NAME, (ACTION_NAME));\n\t\t}\n\n\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\tdialogResultValue = OK_OPTION;\n\t\t\tdialog.setVisible(false);\n\t\t}\n\t}\n\n\tprotected class DialogCancelAction extends AbstractAction {\n\t\tprotected static final String ACTION_NAME = \"Cancel\";\n\t\tprivate JDialog dialog;\n\n\t\tprotected DialogCancelAction(JDialog dialog) {\n\t\t\tthis.dialog = dialog;\n\t\t\tputValue(Action.DEFAULT, ACTION_NAME);\n\t\t\tputValue(Action.ACTION_COMMAND_KEY, ACTION_NAME);\n\t\t\tputValue(Action.NAME, (ACTION_NAME));\n\t\t}\n\n\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\tdialogResultValue = CANCEL_OPTION;\n\t\t\tdialog.setVisible(false);\n\t\t}\n\t}\n\n\tprotected JDialog createDialog(Component parent) {\n\t\tFrame frame = parent instanceof Frame ? (Frame) parent\n\t\t\t\t: (Frame) SwingUtilities.getAncestorOfClass(Frame.class, parent);\n\t\tJDialog dialog = new JDialog(frame, (\"Select Font\"), true);\n\n\t\tAction okAction = new DialogOKAction(dialog);\n\t\tAction cancelAction = new DialogCancelAction(dialog);\n\n\t\tJButton okButton = new JButton(okAction);\n\t\tokButton.setFont(DEFAULT_FONT);\n\t\tJButton cancelButton = new JButton(cancelAction);\n\t\tcancelButton.setFont(DEFAULT_FONT);\n\n\t\tJPanel buttonsPanel = new JPanel();\n\t\tbuttonsPanel.setLayout(new GridLayout(2, 1));\n\t\tbuttonsPanel.add(okButton);\n\t\tbuttonsPanel.add(cancelButton);\n\t\tbuttonsPanel.setBorder(BorderFactory.createEmptyBorder(25, 0, 10, 10));\n\n\t\tActionMap actionMap = buttonsPanel.getActionMap();\n\t\tactionMap.put(cancelAction.getValue(Action.DEFAULT), cancelAction);\n\t\tactionMap.put(okAction.getValue(Action.DEFAULT), okAction);\n\t\tInputMap inputMap = buttonsPanel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);\n\t\tinputMap.put(KeyStroke.getKeyStroke(\"ESCAPE\"), cancelAction.getValue(Action.DEFAULT));\n\t\tinputMap.put(KeyStroke.getKeyStroke(\"ENTER\"), okAction.getValue(Action.DEFAULT));\n\n\t\tJPanel dialogEastPanel = new JPanel();\n\t\tdialogEastPanel.setLayout(new BorderLayout());\n\t\tdialogEastPanel.add(buttonsPanel, BorderLayout.NORTH);\n\n\t\tdialog.getContentPane().add(this, BorderLayout.CENTER);\n\t\tdialog.getContentPane().add(dialogEastPanel, BorderLayout.EAST);\n\t\tdialog.pack();\n\t\tdialog.setLocationRelativeTo(frame);\n\t\treturn dialog;\n\t}\n\n\tprotected void updateSampleFont() {\n\t\tFont font = getSelectedFont();\n\t\tgetSampleTextField().setFont(font);\n\t}\n\n\tprotected JPanel getFontFamilyPanel() {\n\t\tif (fontNamePanel == null) {\n\t\t\tfontNamePanel = new JPanel();\n\t\t\tfontNamePanel.setLayout(new BorderLayout());\n\t\t\tfontNamePanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));\n\t\t\tfontNamePanel.setPreferredSize(new Dimension(180, TOP_PANE_PREFERRED_HEIGHT));\n\n\t\t\tJScrollPane scrollPane = new JScrollPane(getFontFamilyList());\n\t\t\tscrollPane.getVerticalScrollBar().setFocusable(false);\n\t\t\tscrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);\n\n\t\t\tJPanel p = new JPanel();\n\t\t\tp.setLayout(new BorderLayout());\n\t\t\tp.add(getFontFamilyTextField(), BorderLayout.NORTH);\n\t\t\tp.add(scrollPane, BorderLayout.CENTER);\n\n\t\t\tJLabel label = new JLabel((\"Font Name\"));\n\t\t\tlabel.setHorizontalAlignment(JLabel.LEFT);\n\t\t\tlabel.setHorizontalTextPosition(JLabel.LEFT);\n\t\t\tlabel.setLabelFor(getFontFamilyTextField());\n\t\t\tlabel.setDisplayedMnemonic('F');\n\n\t\t\tfontNamePanel.add(label, BorderLayout.NORTH);\n\t\t\tfontNamePanel.add(p, BorderLayout.CENTER);\n\n\t\t}\n\t\treturn fontNamePanel;\n\t}\n\n\tprotected JPanel getFontStylePanel() {\n\t\tif (fontStylePanel == null) {\n\t\t\tfontStylePanel = new JPanel();\n\t\t\tfontStylePanel.setLayout(new BorderLayout());\n\t\t\tfontStylePanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));\n\t\t\tfontStylePanel.setPreferredSize(new Dimension(140, TOP_PANE_PREFERRED_HEIGHT));\n\n\t\t\tJScrollPane scrollPane = new JScrollPane(getFontStyleList());\n\t\t\tscrollPane.getVerticalScrollBar().setFocusable(false);\n\t\t\tscrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);\n\n\t\t\tJPanel p = new JPanel();\n\t\t\tp.setLayout(new BorderLayout());\n\t\t\tp.add(getFontStyleTextField(), BorderLayout.NORTH);\n\t\t\tp.add(scrollPane, BorderLayout.CENTER);\n\n\t\t\tJLabel label = new JLabel((\"Font Style\"));\n\t\t\tlabel.setHorizontalAlignment(JLabel.LEFT);\n\t\t\tlabel.setHorizontalTextPosition(JLabel.LEFT);\n\t\t\tlabel.setLabelFor(getFontStyleTextField());\n\t\t\tlabel.setDisplayedMnemonic('Y');\n\n\t\t\tfontStylePanel.add(label, BorderLayout.NORTH);\n\t\t\tfontStylePanel.add(p, BorderLayout.CENTER);\n\t\t}\n\t\treturn fontStylePanel;\n\t}\n\n\tprotected JPanel getFontSizePanel() {\n\t\tif (fontSizePanel == null) {\n\t\t\tfontSizePanel = new JPanel();\n\t\t\tfontSizePanel.setLayout(new BorderLayout());\n\t\t\tfontSizePanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));\n\n\t\t\tJScrollPane scrollPane = new JScrollPane(getFontSizeList());\n\t\t\tscrollPane.getVerticalScrollBar().setFocusable(false);\n\t\t\tscrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);\n\n\t\t\tJPanel p = new JPanel();\n\t\t\tp.setLayout(new BorderLayout());\n\t\t\tp.add(getFontSizeTextField(), BorderLayout.NORTH);\n\t\t\tp.add(scrollPane, BorderLayout.CENTER);\n\n\t\t\tJLabel label = new JLabel((\"Font Size\"));\n\t\t\tlabel.setHorizontalAlignment(JLabel.LEFT);\n\t\t\tlabel.setHorizontalTextPosition(JLabel.LEFT);\n\t\t\tlabel.setLabelFor(getFontSizeTextField());\n\t\t\tlabel.setDisplayedMnemonic('S');\n\t\t\tfontSizePanel.setPreferredSize(new Dimension(\n\t\t\t\t\tlabel.getPreferredSize().width + 10,\n\t\t\t\t\tTOP_PANE_PREFERRED_HEIGHT));\n\n\t\t\tfontSizePanel.add(label, BorderLayout.NORTH);\n\t\t\tfontSizePanel.add(p, BorderLayout.CENTER);\n\t\t}\n\t\treturn fontSizePanel;\n\t}\n\n\tprotected JPanel getSamplePanel() {\n\t\tif (samplePanel == null) {\n\t\t\tBorder titledBorder = BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), (\"Sample\"));\n\t\t\tBorder empty = BorderFactory.createEmptyBorder(5, 10, 10, 10);\n\t\t\tBorder border = BorderFactory.createCompoundBorder(titledBorder, empty);\n\n\t\t\tsamplePanel = new JPanel();\n\t\t\tsamplePanel.setLayout(new BorderLayout());\n\t\t\tsamplePanel.setBorder(border);\n\n\t\t\tsamplePanel.add(getSampleTextField(), BorderLayout.CENTER);\n\t\t}\n\t\treturn samplePanel;\n\t}\n\n\tprotected JTextField getSampleTextField() {\n\t\tif (sampleText == null) {\n\t\t\tBorder lowered = BorderFactory.createLoweredBevelBorder();\n\n\t\t\tsampleText = new JTextField((\"AaBbYyZz\"));\n\t\t\tsampleText.setBorder(lowered);\n\t\t\tsampleText.setPreferredSize(new Dimension(300, 100));\n\t\t}\n\t\treturn sampleText;\n\t}\n\n\tprotected String[] getFontFamilies() {\n\t\tif (fontFamilyNames == null) {\n\t\t\tGraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();\n\t\t\tfontFamilyNames = env.getAvailableFontFamilyNames();\n\t\t}\n\t\treturn fontFamilyNames;\n\t}\n\n\tprotected String[] getFontStyleNames() {\n\t\tif (fontStyleNames == null) {\n\t\t\tint i = 0;\n\t\t\tfontStyleNames = new String[4];\n\t\t\tfontStyleNames[i++] = (\"Plain\");\n\t\t\tfontStyleNames[i++] = (\"Bold\");\n\t\t\tfontStyleNames[i++] = (\"Italic\");\n\t\t\tfontStyleNames[i++] = (\"BoldItalic\");\n\t\t}\n\t\treturn fontStyleNames;\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/gui/JListOptionPane.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2017/10/22\n * - added String... items overloads\n * - added static method showInputDialog\n * @version 2017/06/07\n * - added version that accepts a title\n * @version 2015/05/09\n * - initial version\n */\n\npackage acm.gui;\n\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.util.*;\nimport java.util.List;\n\nimport javax.swing.*;\nimport javax.swing.event.ListSelectionEvent;\nimport javax.swing.event.ListSelectionListener;\n\nimport stanford.cs106.gui.GuiUtils;\n\n/**\n * A pop-up dialog box of options as a clickable list.\n * A sort of expansion of the JOptionPane functionality provided in Java Swing.\n */\npublic class JListOptionPane extends JDialog implements ActionListener {\n\tprivate static final int HPADDING = 20;\n\tprivate static final int VPADDING = 0;\n\t\n\tpublic static int showInputDialog(Frame frame, String message, String title, String... items) {\n\t\tJListOptionPane dialog = new JListOptionPane(frame, message, title, items);\n\t\tdialog.setMultipleSelection(false);\n\t\tdialog.setVisible(true);\n\t\treturn dialog.getSelectedIndex();\n\t}\n\t\n\tpublic static int showInputDialog(Frame frame, String message, String title, Iterable<String> items) {\n\t\tJListOptionPane dialog = new JListOptionPane(frame, message, title, items);\n\t\tdialog.setMultipleSelection(false);\n\t\tdialog.setVisible(true);\n\t\treturn dialog.getSelectedIndex();\n\t}\n\t\n\tprivate static final long serialVersionUID = 0;\n\n\t@SuppressWarnings(\"rawtypes\")\n\tprivate JList list;\n\n\tprivate JButton ok, cancel;\n\n\tprivate boolean pressedOk = false;\n\n\tpublic JListOptionPane(Frame frame, Iterable<String> items) {\n\t\tthis(frame, /* message */ \"\", /* title */ \"Select an option\", items);\n\t}\n\n\tpublic JListOptionPane(Frame frame, String message, Iterable<String> items) {\n\t\tthis(frame, message, /* title */ \"Select an option\", items);\n\t}\n\n\tpublic JListOptionPane(Frame frame, String message, String title, String... items) {\n\t\tthis(frame, message, title, Arrays.asList(items));\n\t}\n\t\n\t@SuppressWarnings({ \"unchecked\", \"rawtypes\" })\n\tpublic JListOptionPane(Frame frame, String message, String title, Iterable<String> items) {\n\t\tsuper(frame, /* modal */ true);\n\t\t\n\t\tif (title != null && !title.isEmpty()) {\n\t\t\tsetTitle(title);\n\t\t}\n\n\t\tList<String> itemList = new ArrayList<String>();\n\t\tfor (String item : items) {\n\t\t\titemList.add(item);\n\t\t}\n\t\tlist = new JList(itemList.toArray());\n\t\tlist.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);\n\t\tlist.setVisibleRowCount(Math.min(12, itemList.size()));\n\t\tlist.addListSelectionListener(new ListOptionPaneListSelectionListener());\n\n\t\tJPanel south = new JPanel();\n\t\tok = GuiUtils.createButton(\"OK\", null, 'O', this);\n\t\tsouth.add(ok);\n\t\tcancel = GuiUtils.createButton(\"Cancel\", null, 'C', this);\n\t\tsouth.add(cancel);\n\n\t\tif (message != null && !message.isEmpty()) {\n\t\t\tJPanel north = new JPanel(new FlowLayout(FlowLayout.CENTER, 5, 5));\n\t\t\tJLabel label = new JLabel(message);\n\t\t\tlabel.setHorizontalAlignment(SwingConstants.CENTER);\n\t\t\tGuiUtils.pad(label, HPADDING, VPADDING);\n\t\t\tnorth.add(label);\n\t\t\tadd(north, BorderLayout.NORTH);\n\t\t}\n\t\tGuiUtils.pad(list, HPADDING, VPADDING);\n\t\t\n\t\tadd(new JScrollPane(list));\n\t\tadd(south, BorderLayout.SOUTH);\n\t\tpack();\n\t\t\n\t\tif (frame != null) {\n\t\t\t// center with respect to frame\n\t\t\tsetLocation(frame.getX() + (frame.getWidth() - getWidth()) / 2,\n\t\t\t\t\tframe.getY() + (frame.getHeight() - getHeight()) / 2);\n\t\t} else {\n\t\t\tGuiUtils.centerWindow(this);\n\t\t}\n\t\t\n\t\tKeyListener keyListener = new ListOptionPaneKeyListener();\n\t\taddKeyListener(keyListener);\n\t\t\n\t\tok.requestFocus();\n\t\tok.addKeyListener(keyListener);\n\t\tcancel.addKeyListener(keyListener);\n\t}\n\n\tpublic void actionPerformed(ActionEvent e) {\n\t\tObject src = e.getSource();\n\t\tif (src == ok) {\n\t\t\tpressedOk = true;\n\t\t} else if (src == cancel) {\n\t\t\tsetVisible(false);\n\t\t\t// dispose();\n\t\t}\n\t\tsetVisible(false);\n\t}\n\n\tpublic int getSelectedIndex() {\n\t\treturn list.getSelectedIndex();\n\t}\n\n\tpublic Object getSelectedValue() {\n\t\treturn list.getSelectedValue();\n\t}\n\n\t@SuppressWarnings(\"deprecation\")\n\tpublic Object[] getSelectedValues() {\n\t\treturn list.getSelectedValues();\n\t}\n\n\tpublic boolean hasSelectedValue() {\n\t\treturn list.getSelectedIndex() >= 0;\n\t}\n\n\tpublic boolean pressedOk() {\n\t\treturn pressedOk;\n\t}\n\t\n\tpublic void setMultipleSelection(boolean enabled) {\n\t\tif (enabled) {\n\t\t\tlist.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);\n\t\t} else {\n\t\t\tlist.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\n\t\t}\n\t}\n\t\n\tprivate class ListOptionPaneListSelectionListener implements ListSelectionListener {\n\t\tpublic void valueChanged(ListSelectionEvent arg0) {\n\t\t\tif (hasSelectedValue()) {\n\t\t\t\tnew Thread(new Runnable() {\n\t\t\t\t\tpublic void run() {\n\t\t\t\t\t\ttry { Thread.sleep(300); } catch (InterruptedException e) {\n\t\t\t\t\t\t\t// empty\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpressedOk = true;\n\t\t\t\t\t\tsetVisible(false);\n\t\t\t\t\t}\n\t\t\t\t}).start();\n\t\t\t}\n\t\t}\n\t}\n\t\n\tprivate class ListOptionPaneKeyListener extends KeyAdapter {\n\t\tpublic void keyPressed(KeyEvent event) {\n\t\t\tif (event.getKeyCode() == KeyEvent.VK_ESCAPE) {\n\t\t\t\tsetVisible(false);\n\t\t\t}\n\t\t}\n\t}\n}\n\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/gui/JPlaceholderTextField.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2017/10/14\n * - use GraphicsUtils for antialiasing\n * @version 2016/10/21\n * - added getValueAsInt/Double, valueIsInt/Double\n * @version 2016/10/15\n * - initial version\n * \n * Based on source code taken from:\n * http://stackoverflow.com/questions/16213836/java-swing-jtextfield-set-placeholder\n */\n\npackage acm.gui;\n\nimport java.awt.*;\nimport javax.swing.*;\nimport javax.swing.text.Document;\n\nimport acm.graphics.GraphicsUtils;\nimport stanford.cs106.util.StringUtils;\n\npublic class JPlaceholderTextField extends JTextField {\n\tprivate String placeholder;\n\tprivate Color placeholderColor;\n\n\tpublic JPlaceholderTextField() {\n\t\t// empty\n\t}\n\n\tpublic JPlaceholderTextField(final Document pDoc, final String pText, final int pColumns) {\n\t\tsuper(pDoc, pText, pColumns);\n\t}\n\n\tpublic JPlaceholderTextField(final int pColumns) {\n\t\tsuper(pColumns);\n\t}\n\n\tpublic JPlaceholderTextField(final String pText) {\n\t\tsuper(pText);\n\t}\n\n\tpublic JPlaceholderTextField(final String pText, final int pColumns) {\n\t\tsuper(pText, pColumns);\n\t}\n\n\tpublic String getPlaceholder() {\n\t\treturn placeholder;\n\t}\n\t\n\tpublic double getValueAsDouble() {\n\t\treturn Double.parseDouble(getText());\n\t}\n\t\n\tpublic int getValueAsInt() {\n\t\treturn Integer.parseInt(getText());\n\t}\n\t\n\tpublic int getValueAsInteger() {\n\t\treturn Integer.parseInt(getText());\n\t}\n\n\t@Override\n\tprotected void paintComponent(final Graphics g) {\n\t\tsuper.paintComponent(g);\n\n\t\tif (placeholder == null || placeholder.length() == 0 || getText().length() > 0) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif (placeholderColor == null) {\n\t\t\tplaceholderColor = getDisabledTextColor().darker();\n\t\t}\n\n\t\tGraphicsUtils.setAntialiasing(g, true);\n\t\tg.setColor(placeholderColor);\n\t\tg.drawString(placeholder, getInsets().left, g.getFontMetrics().getMaxAscent() + getInsets().top);\n\t}\n\n\tpublic void setPlaceholder(final String s) {\n\t\tplaceholder = s;\n\t}\n\t\n\tpublic void setValue(double value) {\n\t\tsetText(String.valueOf(value));\n\t}\n\t\n\tpublic void setValue(int value) {\n\t\tsetText(String.valueOf(value));\n\t}\n\t\n\tpublic void setValue(long value) {\n\t\tsetText(String.valueOf(value));\n\t}\n\t\n\tpublic boolean valueIsDouble() {\n\t\treturn StringUtils.stringIsDouble(getText());\n\t}\n\t\n\tpublic boolean valueIsInt() {\n\t\treturn StringUtils.stringIsInteger(getText());\n\t}\n\t\n\tpublic boolean valueIsInteger() {\n\t\treturn StringUtils.stringIsInteger(getText());\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/gui/JStringList.java",
    "content": "/*\n * CS 106A\n *\n * This instructor-provided file represents a list of colored strings in a GUI.\n * It is basically a wrapper around the (IMO) poorly designed JList class.\n *\n * Author : Marty Stepp\n * Version: Tue 2015/05/18\n * - added getSelectedValueColor() method\n * Version: Tue 2014/06/05\n * - Added various convenience methods: setItems, setColors, getColor, etc.\n *   to facilitate modification of an existing list's items and colors\n *   for NameSurfer.\n * \n * This file and its contents are copyright (C) Stanford University and Marty Stepp,\n * licensed under Creative Commons Attribution 2.5 License.  All rights reserved.\n */\n\npackage acm.gui;\n\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.util.*;\nimport java.util.List;\nimport javax.swing.*;\nimport javax.swing.event.*;\nimport stanford.cs106.gui.GuiUtils;\n\n/**\n * Represents a list of strings with optional colors.\n */\n@SuppressWarnings(\"rawtypes\")\npublic class JStringList extends JList {\n\tprivate static final long serialVersionUID = 0;\n\tprivate List<Color> colorsList;\n\tprivate Set<ActionListener> listeners;   // listeners to notify\n\tprivate String actionCommand = null;     // current action command\n\t\n\t/**\n\t * Constructs a new empty list of strings.\n\t */\n\t@SuppressWarnings(\"unchecked\")\n\tpublic JStringList() {\n\t\tsuper(new DefaultListModel());\n\t\tcolorsList = new ArrayList<Color>();\n\t\tlisteners = new LinkedHashSet<ActionListener>();\n\t\tsetSelectionMode(ListSelectionModel.SINGLE_SELECTION);\n\t\taddListSelectionListener(new JStringListSelectionListener());\n\t\t// setBackground(new Color(255, 255, 255, 0));   // transparent background\n\t}\n\t\n\t/**\n\t * Attaches the given listener to this list of strings so that it will be\n\t * notified when the user clicks on items in the list.\n\t * @param listener the listener to attach\n\t * @throws NullPointerException if the listener is null.\n\t */\n\tpublic void addActionListener(ActionListener listener) {\n\t\tensureNotNull(listener);\n\t\tsynchronized (listeners) {\n\t\t\tlisteners.add(listener);\n\t\t}\n\t}\n\t\n\t/**\n\t * Appends the given string to the end of this list, using the default black color.\n\t * @param s the string to add\n\t * @throws NullPointerException if s is null.\n\t */\n\tpublic void addItem(String s) {\n\t\taddItem(s, Color.BLACK);\n\t}\n\t\n\t/**\n\t * Appends the given string to the end of this list, using the given color.\n\t * @param s the string to add\n\t * @param color the color in which to display the text\n\t * @throws NullPointerException if s or color are null.\n\t */\n\t@SuppressWarnings(\"unchecked\")\n\tpublic void addItem(String s, Color color) {\n\t\tensureNotNull(s, color);\n\t\tgetModel().addElement(wrapWithColor(s, color));\n\t\tcolorsList.add(color);\n\t}\n\t\n\t/**\n\t * Adds all of the items from the given array to this list, in black.\n\t * @param items The array of items to add.\n\t * @throws NullPointerException if the array or any of its elements is null.\n\t */\n\tpublic void addItems(String[] items) {\n\t\tensureNotNull((Object) items);\n\t\tfor (String item : items) {\n\t\t\taddItem(item);\n\t\t}\n\t}\n\t\n\t/**\n\t * Adds all of the items from the given array to this list, in the given colors.\n\t * They are treated as parallel arrays; item 0 is added with color 0,\n\t * item 1 is added with color 1, and so on. \n\t * If the colors array is shorter, any extra strings are added in black.\n\t * If the colors array is longer, any extra colors in it are ignored.\n\t * @param items The array of items to add.\n\t * @param colors The array of colors to use.\n\t * @throws NullPointerException if either array or any of their elements is null.\n\t */\n\tpublic void addItems(String[] items, Color[] colors) {\n\t\tensureNotNull(items, colors);\n\t\tfor (int i = 0; i < items.length; i++) {\n\t\t\tString item = items[i];\n\t\t\tColor color = i < colors.length ? colors[i] : Color.BLACK;\n\t\t\taddItem(item, color);\n\t\t}\n\t}\n\t\n\t/**\n\t * Removes all strings from this list.\n\t */\n\tpublic void clear() {\n\t\tgetModel().clear();\n\t\tcolorsList.clear();\n\t}\n\t\n\t/**\n\t * Returns the current action command of this list, which is the string that\n\t * will occur when action events are performed on this list.\n\t * Initially, the action command is null.\n\t * @return the action command; initially null\n\t */\n\tpublic String getActionCommand() {\n\t\treturn actionCommand;\n\t}\n\t\n\t/**\n\t * Returns an array of all action listeners currently listening to this list.\n\t * The array returned should not be modified by the caller.\n\t * If there are no listeners on this list, returns an empty array.\n\t * @return the array of action listeners\n\t */\n\tpublic ActionListener[] getActionListeners() {\n\t\treturn listeners.toArray(new ActionListener[0]);\n\t}\n\t\n\t/**\n\t * Returns the color of the item in the list at the given index.\n\t * @param index the 0-based index of the item.\n\t * @return the color at the given index.\n\t * @throws ArrayIndexOutOfBoundsException If the index is outside the range of this list (0 .. size-1).\n\t */\n\tpublic Color getColor(int index) {\n\t\treturn colorsList.get(index);\n\t}\n\t\n\t/**\n\t * Returns the text of the item in the list at the given index.\n\t * @param index the 0-based index of the item.\n\t * @return the item at the given index.\n\t * @throws ArrayIndexOutOfBoundsException If the index is outside the range of this list (0 .. size-1).\n\t */\n\tpublic String getItem(int index) {\n\t\tString item = (String) getModel().get(index);\n\t\titem = stripHTML(item);\n\t\treturn item;\n\t}\n\t\n\t/**\n\t * Returns the number of items in the list.\n\t */\n\tpublic int getItemCount() {\n\t\treturn colorsList.size();\n\t}\n\t\n\t/**\n\t * Returns a reference to the underlying data model of this list.\n\t * To client: Don't modify it.\n\t */\n\tpublic DefaultListModel getModel() {\n\t\treturn (DefaultListModel) super.getModel();\n\t}\n\t\n\t/**\n\t * Returns the string that is currently selected in this list.\n\t * Initially, or if no string is selected, returns null.\n\t */\n\tpublic String getSelectedValue() {\n\t\t// strip out HTML tags/colors\n\t\tString selected = (String) super.getSelectedValue();\n\t\tif (selected != null) {\n\t\t\tselected = stripHTML(selected);\n\t\t}\n\t\treturn selected;\n\t}\n\t\n\t/**\n\t * Returns the color of the string that is currently selected in this list.\n\t * Initially, or if no string is selected, returns null.\n\t */\n\tpublic Color getSelectedValueColor() {\n\t\t// strip out HTML tags/colors\n\t\tint index = super.getSelectedIndex();\n\t\tif (index >= 0 && index < this.getItemCount()) {\n\t\t\treturn getColor(index);\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\t\n\t/**\n\t * Detaches the given listener so that it will not be notified of future\n\t * action events that occur in this list.\n\t * @param listener the listener to detach\n\t * @throws NullPointerException if the listener is null.\n\t */\n\tpublic void removeActionListener(ActionListener listener) {\n\t\tensureNotNull(listener);\n\t\tsynchronized (listeners) {\n\t\t\tlisteners.remove(listener);\n\t\t}\n\t}\n\t\n\t/**\n\t * Removes the element at the given index from this list, shifting others\n\t * down an index if necessary.\n\t * @throws ArrayIndexOutOfBoundsException If the index is outside the range of this list (0 .. size-1).\n\t * @param index the index from which to remove\n\t */\n\tpublic void removeItem(int index) {\n\t\tgetModel().removeElementAt(index);\n\t\tcolorsList.remove(index);\n\t}\n\t\n\t/**\n\t * Removes the first occurrence of the given string element at the given index from this list, shifting others\n\t * down an index if necessary.\n\t * If the given string is not found, the call has no effect.\n\t * @param s the string to remove\n\t * @throws NullPointerException if the listener is null.\n\t */\n\tpublic void removeItem(String s) {\n\t\tensureNotNull(s);\n\t\tfor (int i = 0; i < getModel().getSize(); i++) {\n\t\t\tString item = (String) getModel().get(i);\n\t\t\tif (item.equals(s) || stripHTML(item).equals(s)) {\n\t\t\t\tgetModel().removeElement(item);\n\t\t\t\tcolorsList.remove(i);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\t\n\t/**\n\t * Sets the current action command of this list, which is the string that\n\t * will occur when action events are performed on this list.\n\t * Initially, the action command is null.\n\t * @param actionCommand the new command string to use\n\t */\n\tpublic void setActionCommand(String actionCommand) {\n\t\tthis.actionCommand = actionCommand;\n\t}\n\t\n\t/**\n\t * Sets the color of the item at the given index to the given color.\n\t * The item's text is unchanged.\n\t * @param index The index to modify.\n\t * @param color The color to put there.\n\t * @throws ArrayIndexOutOfBoundsException If the index is outside the range of this list (0 .. size-1).\n\t * @throws NullPointerException if the color is null.\n\t */\n\t@SuppressWarnings(\"unchecked\")\n\tpublic void setColor(int index, Color color) {\n\t\tensureNotNull(color);\n\t\tString text = getItem(index);\n\t\tgetModel().set(index, wrapWithColor(text, color));\n\t}\n\t\n\t/**\n\t * Sets the items of this list to use the colors from the given array.\n\t * List item 0 will use array color 0, and so on.\n\t * If the array is shorter than the length of this list, items after the\n\t * array length are untouched.\n\t * If the array is longer than the length of this list, items in the array\n\t * past the length of the list are ignored.\n\t * @param colors The array of colors to use.\n\t * @throws NullPointerException if the array or any of its elements is null.\n\t */\n\tpublic void setColors(Color[] colors) {\n\t\tensureNotNull((Object) colors);\n\t\tint len = Math.min(getItemCount(), colors.length);\n\t\tfor (int i = 0; i < len; i++) {\n\t\t\tsetColor(i, colors[i]);\n\t\t}\n\t}\n\t\n\t/**\n\t * Sets the item at the given index to store the given text.\n\t * The item's color is unchanged.\n\t * @param index The index to modify.\n\t * @param s The text to put there.\n\t * @throws ArrayIndexOutOfBoundsException If the index is outside the range of this list (0 .. size-1).\n\t * @throws NullPointerException if s is null.\n\t */\n\t@SuppressWarnings(\"unchecked\")\n\tpublic void setItem(int index, String s) {\n\t\tensureNotNull(s);\n\t\tColor color = colorsList.get(index);\n\t\tgetModel().set(index, wrapWithColor(s, color));\n\t}\n\t\n\t/**\n\t * Sets the item at the given index to store the given text in the given color.\n\t * @param index The index to modify.\n\t * @param s The text to put there.\n\t * @throws ArrayIndexOutOfBoundsException If the index is outside the range of this list (0 .. size-1).\n\t * @throws NullPointerException if s or color is null.\n\t */\n\t@SuppressWarnings(\"unchecked\")\n\tpublic void setItem(int index, String s, Color color) {\n\t\tensureNotNull(s, color);\n\t\tcolorsList.set(index, color);\n\t\tgetModel().set(index, wrapWithColor(s, color));\n\t}\n\t\n\t/**\n\t * Sets the list contents to be the given items in the given colors.\n\t * @param items Array of items to add.\n\t * @param colors Array of colors to use for each item.\n\t * @throws NullPointerException if either array or any of their elements is null.\n\t */\n\tpublic void setItems(String[] items, Color[] colors) {\n\t\tensureNotNull(items, colors);\n\t\tclear();\n\t\taddItems(items, colors);\n\t}\n\t\n\t/*\n\t * Helper method to check for null.\n\t */\n\tprivate void ensureNotNull(Object... args) {\n\t\tfor (Object arg : args) {\n\t\t\tif (arg == null) {\n\t\t\t\tthrow new NullPointerException();\n\t\t\t}\n\t\t}\n\t}\n\t\n\t/*\n\t * Causes an action event to occur, notifying all current action listeners.\n\t */\n\tprivate void fireActionPerformed() {\n\t\tActionEvent event = new ActionEvent(this, -1, actionCommand);\n\t\tsynchronized (listeners) {\n\t\t\tfor (ActionListener listener : listeners) {\n\t\t\t\tlistener.actionPerformed(event);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t/*\n\t * Removes any HTML tags from the given string.\n\t * Used to remove coloring.\n\t */\n\tprivate String stripHTML(String s) {\n\t\treturn s.replaceAll(\"<[^>]*>\", \"\");\n\t}\n\t\n\t/*\n\t * Converts the given Color into a RGB hex string like \"#FF00FF\" for purple.\n\t */\n\tprivate String toRgbString(Color color) {\n\t\treturn String.format(\"%02x%02x%02x\", color.getRed(), color.getGreen(), color.getBlue());\n\t}\n\t\n\t/*\n\t * Returns the given string wrapped with HTML tags to give it the given\n\t * color when displayed on the screen.\n\t */\n\tprivate String wrapWithColor(String s, Color c) {\n\t\tString colorString = toRgbString(c);\n\t\treturn GuiUtils.htmlLabelText(s, Collections.singletonMap(\"font-color\", colorString));\n\t}\n\t\n\t/*\n\t * A class for converting list selection events into action events to ease\n\t * usage of this class by introductory students.\n\t */\n\tprivate class JStringListSelectionListener implements ListSelectionListener {\n\t\tpublic void valueChanged(ListSelectionEvent event) {\n\t\t\tif (!event.getValueIsAdjusting()) {\n\t\t\t\tfireActionPerformed();\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/gui/TableLayout.java",
    "content": "/*\n * @(#)TableLayout.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Bug fix 8-Jan-06 (ESR, JTFBug 2008-001)\n//   1. Fixed bug in the layoutContainer failed to consider the gridwidth\n//      and gridheight values in computing the width of a column.\n//\n// Code cleanup 28-May-07 (ESR)\n//   1. Added generic type tags.\n//\n// Feature enhancement 26-May-08 (ESR)\n//   1. Added support for serialization.\n\npackage acm.gui;\n\nimport acm.util.*;\nimport java.awt.*;\nimport java.lang.reflect.*;\nimport java.io.*;\nimport java.util.*;\nimport javax.swing.*;\n\n/* Class: TableLayout */\n/**\n * This class implements a new <code>LayoutManager</code> that arranges\n * components into a two-dimensional grid.  The capabilities are analogous\n * to those provide by the <code>GridBagLayout</code> class, although\n * <code>TableLayout</code> is considerably easier to use.\n *\n * The constructor for the <code>TableLayout</code> class takes the number\n * of rows and columns.  Thus, the constructor call\n *\n * <p><pre><code>\n * &nbsp;    new TableLayout(3, 5)\n * <code></pre>\n *\n * <p>creates a new <code>TableLayout</code> manager with three rows in the\n * vertical dimension and five columns across the page.  Components are added\n * to the grid starting at the upper left, filling each horizontal row and\n * then moving on to the next row down after the current one is filled.\n *\n * <p>The <code>TableLayout</code> manager also supports more fine-grained\n * control over the formatting of tables by allowing you to specify\n * constraints in the following form:\n *\n * <p><pre><code>\n * &nbsp;    </code><i>constraint</i><code>=</code><i>value</i><code>\n * </code></pre>\n *\n * <p>For example, if you want to specify that a component occupies two\n * columns in the grid, you would use the constraint\n *\n * <p><pre><code>\n * &nbsp;    \"gridwidth=2\"\n * </code></pre>\n *\n * <p>Strings used as constraint objects can set several constraints at\n * once by including multiple constraint/value pairs separated by spaces.\n *\n * <p>The <code>TableLayout</code> class accepts all constraints supported\n * by <code>GridBagLayout</code>.  The most common constraints are shown\n * in the following table:\n *\n * <p><table bgcolor=#FFFFFF border=1 cellspacing=0 width=750>\n * <tr><td><table border=0 cellspacing=1 cellpadding=0><tr><td colspan=2><code>gridwidth=</code><font face=times><i>columns</i></font>&nbsp;&nbsp;<i><font size=-1>or</font></i>&nbsp;&nbsp;<code>gridheight=</code><font face=times><i>rows</i></font></td></tr>\n * <tr><td width=25>&nbsp;</td><td width=720>Indicates that this table cell should span the indicated number of columns or rows.</td></tr></table></td></tr>\n * <tr><td><table border=0 cellspacing=1 cellpadding=0><tr><td colspan=2><code>width=</code><font face=times><i>pixels</i></font>&nbsp;&nbsp;<i><font size=-1>or</font></i>&nbsp;&nbsp;<code>height=</code><font face=times><i>pixels</i></font></td></tr>\n * <tr><td width=25>&nbsp;</td><td width=720>The <code>width</code> specification indicates that the width of this column should be the specified number of pixels.  If different widths are specified for cells in the same column, the column width is defined to be the maximum.  In the absence of any <code>width</code> specification, the column width is the largest of the preferred widths.  The <code>height</code> specification is interpreted symmetrically for row heights.</td></tr></table></td></tr>\n * <tr><td><table border=0 cellspacing=1 cellpadding=0><tr><td colspan=2><code>weightx=</code><font face=times><i>weight</i></font>&nbsp;&nbsp;<i><font size=-1>or</font></i>&nbsp;&nbsp;<code>weighty=</code><font face=times><i>weight</i></font></td></tr>\n * <tr><td width=25>&nbsp;</td><td width=720>If the total size of the table is less than the size of its enclosure, <code>TableLayout</code> will ordinarily center the table in the available space.  If any of the cells, however, are given nonzero <code>weightx</code> or <code>weighty</code> values, the extra space is distributed along that axis in proportion to the weights specified.  As in the <code>GridBagLayout</code> model, the weights are floating-point values and may therefore contain a decimal point.</td></tr></table></td></tr>\n * <tr><td><table border=0 cellspacing=1 cellpadding=0><tr><td colspan=2><code>fill=</code><font face=times><i>fill</i></font></td></tr>\n * <tr><td width=25>&nbsp;</td><td width=720>Indicates how the component in this cell should be resized if its preferred size is smaller than the cell size.  The legal values are <code>NONE</code>, <code>HORIZONTAL</code>, <code>VERTICAL</code>, and <code>BOTH</code>, indicating the axes along which stretching should occur.  The default is <code>BOTH</code>.</td></tr></table></td></tr>\n * <tr><td><table border=0 cellspacing=1 cellpadding=0><tr><td colspan=2><code>anchor=</code><font face=times><i>anchor</i></font></td></tr>\n * <tr><td width=25>&nbsp;</td><td width=720>If a component is not being filled along a particular axis, the <code>anchor</code> specification indicates where the component should be placed in its cell.  The default value is <code>CENTER</code>, but any of the standard compass directions (<code>NORTH</code>, <code>SOUTH</code>, <code>EAST</code>, <code>WEST</code>, <code>NORTHEAST</code>, <code>NORTHWEST</code>, <code>SOUTHEAST</code>, or <code>SOUTHWEST</code>) may also be used.</td></tr></table></td></tr>\n * </table>\n */\npublic class TableLayout implements LayoutManager2, Serializable {\n\n/** Do not resize component */\n\tpublic static final int NONE = GridBagConstraints.NONE;\n\n/** Resize component in horizontal direction only */\n\tpublic static final int HORIZONTAL = GridBagConstraints.HORIZONTAL;\n\n/** Resize component in vertical direction only */\n\tpublic static final int VERTICAL = GridBagConstraints.VERTICAL;\n\n/** Resize component in both directions */\n\tpublic static final int BOTH = GridBagConstraints.BOTH;\n\n/** Center table in the container */\n\tpublic static final int CENTER = 10;\n\n/** Align table horizontally at the left of its container */\n\tpublic static final int LEFT = 11;\n\n/** Align table horizontally at the right of its container */\n\tpublic static final int RIGHT = 12;\n\n/** Align table vertically at the top of its container */\n\tpublic static final int TOP = 13;\n\n/** Align table vertically at the bottom of its container */\n\tpublic static final int BOTTOM = 14;\n\n/** Expand table to fill its container */\n\tpublic static final int FILL = BOTH;\n\n/* Constructor: TableLayout() */\n/**\n * Creates a new <code>TableLayout</code> object with no limits\n * on the number of rows and columns.\n *\n * @usage TableLayout layout = new TableLayout();\n */\n\tpublic TableLayout() {\n\t\tthis(0, 0);\n\t}\n\n/* Constructor: TableLayout(rows, columns) */\n/**\n * Creates a new <code>TableLayout</code> object with the specified\n * number of rows and columns.\n *\n * @usage TableLayout layout = new TableLayout(rows, columns);\n * @param rows The number of rows, or 0 for no limit\n * @param columns The number of columns, or 0 for no limit\n */\n\tpublic TableLayout(int rows, int columns) {\n\t\tthis(rows, columns, 0, 0);\n\t}\n\n/* Constructor: TableLayout(rows, columns, hgap, vgap) */\n/**\n * Creates a new <code>TableLayout</code> object with the specified\n * row count, column count, alignment, horizontal gap, and vertical gap.\n *\n * @usage TableLayout layout = new TableLayout(rows, columns, hgap, vgap);\n * @param rows The number of rows, or 0 for no limit\n * @param columns The number of columns, or 0 for no limit\n * @param hgap The horizontal gap between columns\n * @param vgap The vertical gap between rows\n */\n\tpublic TableLayout(int rows, int columns, int hgap, int vgap) {\n\t\tnRows = rows;\n\t\tnColumns = columns;\n\t\thGap = hgap;\n\t\tvGap = vgap;\n\t\thorizontalAlignment = CENTER;\n\t\tverticalAlignment = CENTER;\n\t\tdefaultFill = BOTH;\n\t\tconstraintTable = new HashMap<Component,GridBagConstraints>();\n\t\tpropertyTable = new HashMap<String,Object>();\n\t\tlayoutTable = null;\n\t}\n\n/* Method: setColumnCount(columns) */\n/**\n * Resets the number of columns in the table.\n *\n * @usage layout.setColumnCount(columns);\n * @param columns The new number of columns\n */\n\tpublic void setColumnCount(int columns) {\n\t\tnColumns = columns;\n\t\tif (targetContainer != null) targetContainer.invalidate();\n\t}\n\n/* Method: getColumnCount() */\n/**\n * Returns the number of columns in the table.\n *\n * @usage int columns = layout.getColumnCount();\n * @return The  number of columns\n */\n\tpublic int getColumnCount() {\n\t\treturn nColumns;\n\t}\n\n/* Method: setRowCount(rows) */\n/**\n * Resets the number of rows in the table.\n *\n * @usage layout.setRowCount(rows);\n * @param rows The new number of rows\n */\n\tpublic void setRowCount(int rows) {\n\t\tnRows = rows;\n\t\tif (targetContainer != null) targetContainer.invalidate();\n\t}\n\n/* Method: getRowCount() */\n/**\n * Returns the number of rows in the table.\n *\n * @usage int rows = layout.getRowCount();\n * @return The  number of rows\n */\n\tpublic int getRowCount() {\n\t\treturn nRows;\n\t}\n\n/* Method: setHorizontalAlignment(align) */\n/**\n * Sets the horizontal alignment for the table.  The legal values\n * are <code>CENTER</code>, <code>LEFT</code>, <code>RIGHT</code>, and\n * <code>FILL</code>.\n *\n * @usage layout.setHorizontalAlignment(align);\n * @param align The horizontal alignment for the table\n */\n\tpublic void setHorizontalAlignment(int align) {\n\t\thorizontalAlignment = align;\n\t\tif (targetContainer != null) targetContainer.invalidate();\n\t}\n\n/* Method: getHorizontalAlignment() */\n/**\n * Returns the horizontal alignment for the table.\n *\n * @usage int align = layout.getHorizontalAlignment();\n * @return The horizontal alignment for the table\n */\n\tpublic int getHorizontalAlignment() {\n\t\treturn horizontalAlignment;\n\t}\n\n/* Method: setVerticalAlignment(align) */\n/**\n * Sets the vertical alignment for the table.  The legal values\n * are <code>CENTER</code>, <code>TOP</code>, <code>BOTTOM</code>, and\n * <code>FILL</code>.\n *\n * @usage layout.setVerticalAlignment(align);\n * @param align The vertical alignment for the table\n */\n\tpublic void setVerticalAlignment(int align) {\n\t\tverticalAlignment = align;\n\t\tif (targetContainer != null) targetContainer.invalidate();\n\t}\n\n/* Method: getVerticalAlignment() */\n/**\n * Returns the vertical alignment for the table.\n *\n * @usage int align = layout.getVerticalAlignment();\n * @return The vertical alignment for the table\n */\n\tpublic int getVerticalAlignment() {\n\t\treturn verticalAlignment;\n\t}\n\n/* Method: setDefaultFill(fill) */\n/**\n * Sets the default fill parameter for components in the table.  The legal values\n * are <code>NONE</code>, <code>HORIZONTAL</code>, <code>VERTICAL</code>, and\n * <code>BOTH</code>.\n *\n * @usage layout.setDefaultFill(fill);\n * @param fill The default fill parameter for components in the table\n */\n\tpublic void setDefaultFill(int fill) {\n\t\tdefaultFill = fill;\n\t\tif (targetContainer != null) targetContainer.invalidate();\n\t}\n\n/* Method: getDefaultFill() */\n/**\n * Returns the default fill parameter for components in the table.\n *\n * @usage int fill = layout.getDefaultFill();\n * @return The default fill parameter for components in the table\n */\n\tpublic int getDefaultFill() {\n\t\treturn defaultFill;\n\t}\n\n/* Method: setHgap(pixels) */\n/**\n * Sets the horizontal gap between components.\n *\n * @usage layout.setHgap(pixels);\n * @param pixels The gap between components in pixels\n */\n\tpublic void setHgap(int pixels) {\n\t\thGap = pixels;\n\t\tif (targetContainer != null) targetContainer.invalidate();\n\t}\n\n/* Method: getHgap() */\n/**\n * Returns the horizontal gap between components.\n *\n * @usage int hgap = layout.getHgap();\n * @return The horizontal gap between components\n */\n\tpublic int getHgap() {\n\t\treturn hGap;\n\t}\n\n/* Method: setVgap(pixels) */\n/**\n * Sets the vertical gap between components.\n *\n * @usage layout.setVgap(pixels);\n * @param pixels The gap between components in pixels\n */\n\tpublic void setVgap(int pixels) {\n\t\tvGap = pixels;\n\t\tif (targetContainer != null) targetContainer.invalidate();\n\t}\n\n/* Method: getVgap() */\n/**\n * Returns the vertical gap between components.\n *\n * @usage int vgap = layout.getVgap();\n * @return The vertical gap between components\n */\n\tpublic int getVgap() {\n\t\treturn vGap;\n\t}\n\n/* Method: setStrictGridBagModel(flag) */\n/**\n * Sets a flag indicating whether the layout manager should match the\n * model used in <code>GridBagLayout</code> even when that interpretation\n * seems wrong.  The differences show up in the following areas:\n *\n * <ul>\n * <li><i>Calculation of cell size.</i>  <code>GridBagLayout</code> uses\n * the minimum layout size of the component to determine the size of each\n * cell; <code>TableLayout</code> uses the preferred size.  In practice,\n * these two values are often the same, but it seems that the preferred\n * size makes considerably more sense in terms of how this layout is used.\n *\n * <li><i>Treatment of cells spanning several rows.</i>  In\n * <code>GridBagLayout</code>, each new row begins after the last\n * multirow cell in that row, even if there is  space to its left.\n * By default, <code>TableLayout</code> uses the HTML model in which\n * the cells begin at the left margin unless that column is itself\n * already occupied.\n * </ul>\n *\n * @usage layout.setStrictGridBagModel(flag);\n * @param flag <code>true</code> to use a strict <code>GridBagLayout</code> model\n * @noshow\n */\n\tpublic void setStrictGridBagModel(boolean flag) {\n\t\tuseStrictGridBagModel = flag;\n\t\tif (targetContainer != null) targetContainer.invalidate();\n\t}\n\n/* Method: isStrictGridBagModel() */\n/**\n * Returns <code>true</code> if this layout manager is treating multirow\n * cells exactly as <code>GridBagLayout</code> does.\n *\n * @usage if (layout.isStrictGridBagModel()) . . .\n * @return <code>true</code> if this manager is using the strict <code>GridBagLayout</code> model\n * @noshow\n */\n\tpublic boolean isStrictGridBagModel() {\n\t\treturn useStrictGridBagModel;\n\t}\n\n/* Method: setConstraints(comp, constraints) */\n/**\n * Sets the constraints for the component to a copy of the supplied\n * constraints.\n *\n * @usage layout.setConstraints(comp, constraints);\n * @param comp The component to be constrained\n * @param constraints The constraints object used to specify the layout\n */\n\tpublic void setConstraints(Component comp, GridBagConstraints constraints) {\n\t\tconstraintTable.put(comp, (GridBagConstraints) constraints.clone());\n\t\tif (targetContainer != null) targetContainer.invalidate();\n\t}\n\n/* Method: setConstraints(comp, constraints) */\n/**\n * Sets the constraints for the component to the constraints\n * specified by the string.\n *\n * @usage layout.setConstraints(comp, constraints);\n * @param comp The component to be constrained\n * @param constraints A string specifying the constraints\n */\n\tpublic void setConstraints(Component comp, String constraints) {\n\t\tsetConstraints(comp, new TableConstraints(constraints));\n\t}\n\n/* Method: getConstraints(comp) */\n/**\n * Returns a copy of the constraints requested for the specified component.  The\n * constraints value is always converted to a <code>TableConstraints</code> so that\n * clients can use this class in preference to <code>GridBagConstraints</code>\n * without needing a type cast.\n *\n * @usage TableConstraints tc = layout.getConstraints(comp);\n * @param comp The component whose constraints are requested\n * @return A copy of the constraints object used to specify the layout\n */\n\tpublic TableConstraints getConstraints(Component comp) {\n\t\tGridBagConstraints gbc = lookupConstraints(comp);\n\t\treturn (gbc == null) ? null : new TableConstraints(gbc);\n\t}\n\n/* LayoutManager interface */\n\n/* Method: addLayoutComponent(constraints, comp) */\n/**\n * Adds a component to the layout.  Implements <code>LayoutManager</code>.\n *\n * @param constraints The constraint string\n * @param comp The component to be added\n * @noshow\n */\n\tpublic void addLayoutComponent(String constraints, Component comp) {\n\t\taddLayoutComponent(comp, constraints);\n\t}\n\n/* Method: removeLayoutComponent(comp) */\n/**\n * Removes the specified component from the layout.\n *\n * @param comp The component to be removed\n * @noshow\n */\n\tpublic void removeLayoutComponent(Component comp) {\n\t\tconstraintTable.remove(comp);\n\t\tif (targetContainer != null) targetContainer.invalidate();\n\t}\n\n/* Method: preferredLayoutSize(target) */\n/**\n * Calculates the preferred size for the <code>FrameLayout</code> component\n * when laid out in the <code>target</code> container.\n *\n * @param target The container in which the layout is done\n * @return The preferred dimensions for the layout\n * @noshow\n */\n\tpublic Dimension preferredLayoutSize(Container target) {\n\t\tif (target.getComponentCount() == 0) return new Dimension(0, 0);\n\t\treturn processLayout(target, PREFERRED_LAYOUT_SIZE_MODE);\n\t}\n\n/* Method: minimumLayoutSize(target) */\n/**\n * Calculates the minimum size for the <code>FrameLayout</code> component\n * when laid out in the <code>target</code> container.\n *\n * @param target The container in which the layout is done\n * @return The minimum dimensions for the layout\n * @noshow\n */\n\tpublic Dimension minimumLayoutSize(Container target) {\n\t\tif (target.getComponentCount() == 0) return new Dimension(0, 0);\n\t\treturn processLayout(target, MINIMUM_LAYOUT_SIZE_MODE);\n\t}\n\n/* Method: layoutContainer(target) */\n/**\n * Lays out the components in the target container.\n *\n * @param target The container in which the layout is done\n * @noshow\n */\n\tpublic void layoutContainer(Container target) {\n\t\ttargetContainer = target;\n\t\tprocessLayout(target, LAYOUT_CONTAINER_MODE);\n\t}\n\n/* Method: addLayoutComponent(comp, constraints) */\n/**\n * Adds a component to the layout.  The <code>TableLayout</code>\n * class overrides this method to allow for string constraints.\n *\n * @param comp The component to be added\n * @param constraints The constraint object\n * @noshow\n */\n\tpublic void addLayoutComponent(Component comp, Object constraints) {\n\t\tif (constraints == null) {\n\t\t\tconstraints = new TableConstraints(\"\");\n\t\t\t((TableConstraints) constraints).fill = defaultFill;\n\t\t} else if (constraints instanceof String) {\n\t\t\tOptionTable options = new OptionTable(((String) constraints).toLowerCase(), TableConstraints.LEGAL_KEYS);\n\t\t\tconstraints = new TableConstraints(options.getMap());\n\t\t\tif (!options.isSpecified(\"fill\")) {\n\t\t\t\t((TableConstraints) constraints).fill = (options.isSpecified(\"anchor\")) ? NONE : defaultFill;\n\t\t\t}\n\t\t} else if (!(constraints instanceof GridBagConstraints)) {\n\t\t\tthrow new ErrorException(\"TableLayout: Illegal constraints\");\n\t\t}\n\t\tconstraintTable.put(comp, (GridBagConstraints) constraints);\n\t\tif (targetContainer != null) targetContainer.invalidate();\n\t}\n\n/* Method: maximumLayoutSize(target) */\n/**\n * Calculates the maximum size for the <code>FrameLayout</code> component\n * when laid out in the <code>target</code> container.\n *\n * @param target The container in which the layout is done\n * @return The maximum dimensions for the layout\n * @noshow\n */\n\tpublic Dimension maximumLayoutSize(Container target) {\n\t\treturn new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE);\n\t}\n\n/* Method: getLayoutAlignmentX(target) */\n/**\n * Returns the alignment along the <i>x</i>-axis as described in the\n * <code>LayoutManager2</code> interface.\n *\n * @param target The container in which the layout is done\n * @return A value between 0 and 1 indicating where this component should align\n * @noshow\n */\n\tpublic float getLayoutAlignmentX(Container target) {\n\t\treturn 0.5F;\n\t}\n\n/* Method: getLayoutAlignmentY(target) */\n/**\n * Returns the alignment along the <i>y</i>-axis as described in the\n * <code>LayoutManager2</code> interface.\n *\n * @param target The container in which the layout is done\n * @return A value between 0 and 1 indicating where this component should align\n * @noshow\n */\n\tpublic float getLayoutAlignmentY(Container target) {\n\t\treturn 0.5F;\n\t}\n\n/* Method: invalidateLayout(target) */\n/**\n * Indicates that the layout is no longer valid.\n *\n * @param target The container in which the layout is done\n * @noshow\n */\n\tpublic synchronized void invalidateLayout(Container target) {\n\t\tlayoutTable = null;\n\t\tIterator<String> iterator = propertyTable.keySet().iterator();\n\t\twhile (iterator.hasNext()) {\n\t\t\tString key = iterator.next();\n\t\t\tif (key.startsWith(\"width\") && !key.equals(\"width\")) {\n\t\t\t\tpropertyTable.put(key, Integer.valueOf(0));\n\t\t\t}\n\t\t\tif (key.startsWith(\"height\") && !key.equals(\"height\")) {\n\t\t\t\tpropertyTable.put(key, Integer.valueOf(0));\n\t\t\t}\n\t\t\tif (key.startsWith(\"weightx\") && !key.equals(\"weightx\")) {\n\t\t\t\tpropertyTable.put(key, Double.valueOf(0));\n\t\t\t}\n\t\t\tif (key.startsWith(\"weighty\") && !key.equals(\"weighty\")) {\n\t\t\t\tpropertyTable.put(key, Double.valueOf(0));\n\t\t\t}\n\t\t}\n\t}\n\n/* Override method: toString() */\n/**\n * Creates a printable representation of the layout.\n * @noshow\n */\n\tpublic String toString() {\n\t\tString str = getClass().getName();\n\t\tstr += \"[rows=\" + nRows + \",columns=\" + nColumns;\n\t\tif (hGap != 0) str += \",hgap=\" + hGap;\n\t\tif (vGap != 0) str += \",vgap=\" + vGap;\n\t\tstr += \"]\";\n\t\treturn str;\n\t}\n\n/* Protected method: lookupConstraints(comp) */\n/**\n * Returns the constraints object for the specified component.\n *\n * @usage GridBagConstraints gbc = layout.lookupConstraints(comp);\n * @param comp The component to be constrained\n * @return The constraints object used to specify the layout\n */\n\tprotected GridBagConstraints lookupConstraints(Component comp) {\n\t\treturn constraintTable.get(comp);\n\t}\n\n/* Protected method: lookupConstraints(comp, target) */\n/**\n * Returns the <code>TableConstraints</code> object actually applied to the specified\n * component when it is laid out in the target container.  In the result of this method\n * the values of the <code>gridx</code>, <code>gridx</code>, <code>gridwidth</code>,\n * and <code>gridheight</code> fields are filled in according to the actual position\n * in the grid.\n *\n * @usage TableConstraints tc = layout.lookupConstraints(comp, target);\n * @param comp The component to be constrained\n * @param target The container in which the layout is done\n * @return The constraints object actually applied to the layout\n */\n\tprotected TableConstraints lookupConstraints(Component comp, Container target) {\n\t\tsynchronized (target.getTreeLock()) {\n\t\t\tif (layoutTable == null) computeLayoutTable(target);\n\t\t\treturn layoutTable.get(comp);\n\t\t}\n\t}\n\n/* Protected method: getMinimumComponentSize(comp) */\n/**\n * This method returns the minimum size of the component for this layout.  Subclasses\n * can override this methods to establish specific bounds for certain component\n * classes, such as the code for scrollbars given here.\n *\n * @usage Dimension size = layout.getMinimumComponentSize(comp);\n * @param comp The component whose size is being tested\n * @return The minimum size for that component\n */\n\tprivate Dimension getMinimumComponentSize(Component comp) {\n\t\tif (isScrollbar(comp)) return getMinimumScrollbarSize(comp);\n\t\treturn comp.getMinimumSize();\n\t}\n\n/* Protected method: getPreferredComponentSize(comp) */\n/**\n * This method returns the preferred size of the component for this layout.  Subclasses\n * can override this methods to establish specific bounds for certain component\n * classes, such as the code for scrollbars given here.\n *\n * @usage Dimension size = layout.getPreferredComponentSize(comp);\n * @param comp The component whose size is being tested\n * @return The preferred size for that component\n */\n\tprivate Dimension getPreferredComponentSize(Component comp) {\n\t\tif (isScrollbar(comp)) return getMinimumScrollbarSize(comp);\n\t\treturn comp.getPreferredSize();\n\t}\n\n/* Protected method: isScrollbar(comp) */\n/**\n * Determines whether the component is a scroll bar or slider.\n */\n\tprivate boolean isScrollbar(Component comp) {\n\t\treturn (comp instanceof Scrollbar || comp instanceof JScrollBar || comp instanceof JSlider);\n\t}\n\n/* Protected method: getMinimumScrollbarSize(comp) */\n/**\n * Determines the minimum dimensions for this scrollbar, making sure it has enough\n * space to be displayed with a nonzero slider area.\n */\n\tprivate Dimension getMinimumScrollbarSize(Component comp) {\n\t\tDimension size = comp.getMinimumSize();\n\t\ttry {\n\t\t\tClass<?> scrollbarClass = comp.getClass();\n\t\t\tMethod getOrientation = scrollbarClass.getMethod(\"getOrientation\", new Class[0]);\n\t\t\tint orientation = ((Integer) getOrientation.invoke(comp, new Object[0])).intValue();\n\t\t\tif (orientation == Scrollbar.HORIZONTAL) {\n\t\t\t\tsize.width = Math.max(size.width, MINIMUM_SCROLLBAR_SIZE);\n\t\t\t} else {\n\t\t\t\tsize.height = Math.max(size.height, MINIMUM_SCROLLBAR_SIZE);\n\t\t\t}\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t\treturn size;\n\t}\n\n/* Private method: processLayout(target, caller) */\n/**\n * Common code for the different methods requiring layout synchronization.\n * The <code>caller</code> argument is one of the three constants\n * LAYOUT_CONTAINER_MODE, PREFERRED_LAYOUT_SIZE_MODE, or MINIMUM_LAYOUT_SIZE_MODE,\n * depending on the caller.\n */\n\tprivate Dimension processLayout(Container target, int caller) {\n\t\tsynchronized (target.getTreeLock()) {\n\t\t\treturn lockedProcessLayout(target, caller);\n\t\t}\n\t}\n\n/* Private method: lockedProcessLayout(target, caller) */\n/**\n * Method to do the work of <code>processLayout</code> after synchronization.\n */\n\tprivate synchronized Dimension lockedProcessLayout(Container target, int caller) {\n\t\tDimension result = null;\n\t\tif (layoutTable == null) computeLayoutTable(target);\n\t\tint nr = getIntProperty(\"nRows\");\n\t\tint nc = getIntProperty(\"nColumns\");\n\t\tint[] heights = new int[nr];\n\t\tint[] widths = new int[nc];\n\t\tint nComponents = target.getComponentCount();\n\t\tfor (int i = 0; i < nComponents; i++) {\n\t\t\tComponent comp = target.getComponent(i);\n\t\t\tTableConstraints tc = layoutTable.get(comp);\n\t\t\tint column = tc.gridx;\n\t\t\tint row = tc.gridy;\n\t\t\tint width = getIntProperty(\"width\" + column);\n\t\t\tint height = getIntProperty(\"height\" + row);\n\t\t\tif (width == 0) {\n\t\t\t\tif (caller == MINIMUM_LAYOUT_SIZE_MODE || useStrictGridBagModel) {\n\t\t\t\t\twidth = getMinimumComponentSize(comp).width;\n\t\t\t\t} else {\n\t\t\t\t\twidth = getPreferredComponentSize(comp).width;\n\t\t\t\t}\n\t\t\t\twidth += 2 * tc.ipadx + tc.insets.left + tc.insets.right;\n\t\t\t}\n\t\t\tif (height == 0) {\n\t\t\t\tif (caller == MINIMUM_LAYOUT_SIZE_MODE || useStrictGridBagModel) {\n\t\t\t\t\theight = getMinimumComponentSize(comp).height;\n\t\t\t\t} else {\n\t\t\t\t\theight = getPreferredComponentSize(comp).height;\n\t\t\t\t}\n\t\t\t\theight += 2 * tc.ipady + tc.insets.top + tc.insets.bottom;\n\t\t\t}\n\t\t\tif (tc.gridwidth <= 1) {\n\t\t\t\twidths[column] = Math.max(widths[column], width);\n\t\t\t}\n\t\t\tif (tc.gridheight <= 1) {\n\t\t\t\theights[row] = Math.max(heights[row], height);\n\t\t\t}\n\t\t}\n\t\tint width = hGap;\n\t\tint height = vGap;\n\t\tdouble[] weightX = new double[nc];\n\t\tdouble[] weightY = new double[nr];\n\t\tdouble totalX = 0;\n\t\tdouble totalY = 0;\n\t\tfor (int column = 0; column < nc; column++) {\n\t\t\twidth += widths[column] + hGap;\n\t\t\tweightX[column] = getDoubleProperty(\"weightx\" + column);\n\t\t\ttotalX += weightX[column];\n\t\t}\n\t\tfor (int row = 0; row < nr; row++) {\n\t\t\theight += heights[row] + vGap;\n\t\t\tweightY[row] = getDoubleProperty(\"weighty\" + row);\n\t\t\ttotalY += weightY[row];\n\t\t}\n\t\tif (caller == LAYOUT_CONTAINER_MODE) {\n\t\t\tDimension size = target.getSize();\n\t\t\tInsets insets = target.getInsets();\n\t\t\tsize.width -= insets.left + insets.right;\n\t\t\tsize.height -= insets.top + insets.bottom;\n\t\t\tint extraX = size.width - width;\n\t\t\tint extraY = size.height - height;\n\t\t\tint startX = insets.left;\n\t\t\tint startY = insets.top;\n\t\t\tif (totalX == 0) {\n\t\t\t\tswitch (horizontalAlignment) {\n\t\t\t\t  case LEFT:\n\t\t\t\t\textraX = 0;\n\t\t\t\t\tbreak;\n\t\t\t\t  case CENTER:\n\t\t\t\t\tstartX += extraX / 2;\n\t\t\t\t\textraX = 0;\n\t\t\t\t\tbreak;\n\t\t\t\t  case RIGHT:\n\t\t\t\t\tstartX += extraX;\n\t\t\t\t\textraX = 0;\n\t\t\t\t\tbreak;\n\t\t\t\t  case FILL:\n\t\t\t\t\ttotalX = nc;\n\t\t\t\t\tfor (int column = 0; column < nc; column++) {\n\t\t\t\t\t\tweightX[column] = 1;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (totalY == 0) {\n\t\t\t\tswitch (verticalAlignment) {\n\t\t\t\t  case TOP:\n\t\t\t\t\textraY = 0;\n\t\t\t\t\tbreak;\n\t\t\t\t  case CENTER:\n\t\t\t\t\tstartY += extraY / 2;\n\t\t\t\t\textraY = 0;\n\t\t\t\t\tbreak;\n\t\t\t\t  case BOTTOM:\n\t\t\t\t\tstartY += extraY;\n\t\t\t\t\textraY = 0;\n\t\t\t\t\tbreak;\n\t\t\t\t  case FILL:\n\t\t\t\t\ttotalY = nr;\n\t\t\t\t\tfor (int row = 0; row < nr; row++) {\n\t\t\t\t\t\tweightY[row] = 1;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tint[] xc = new int[nc];\n\t\t\tint x = hGap + startX;\n\t\t\tfor (int column = 0; column < nc; column++) {\n\t\t\t\txc[column] = x;\n\t\t\t\tif (extraX > 0) {\n\t\t\t\t\tint pad = (int) Math.round(extraX * weightX[column] / totalX);\n\t\t\t\t\twidths[column] += pad;\n\t\t\t\t\textraX -= pad;\n\t\t\t\t\ttotalX -= weightX[column];\n\t\t\t\t}\n\t\t\t\tx += widths[column] + hGap;\n\t\t\t}\n\t\t\tint[] yc = new int[nr];\n\t\t\tint y = vGap + startY;\n\t\t\tfor (int row = 0; row < nr; row++) {\n\t\t\t\tyc[row] = y;\n\t\t\t\tif (extraY > 0) {\n\t\t\t\t\tint pad = (int) Math.round(extraY * weightY[row] / totalY);\n\t\t\t\t\theights[row] += pad;\n\t\t\t\t\textraY -= pad;\n\t\t\t\t\ttotalY -= weightY[row];\n\t\t\t\t}\n\t\t\t\ty += heights[row] + vGap;\n\t\t\t}\n\t\t\tfor (int i = 0; i < nComponents; i++) {\n\t\t\t\tComponent comp = target.getComponent(i);\n\t\t\t\tTableConstraints tc = layoutTable.get(comp);\n\t\t\t\tint column = tc.gridx;\n\t\t\t\tint row = tc.gridy;\n\t\t\t\tint bx = xc[column] + tc.insets.left;\n\t\t\t\tint by = yc[row] + tc.insets.top;\n\t\t\t\tint bw = widths[column];\n\t\t\t\tfor (int ix = 1; ix < tc.gridwidth && column + ix < nc; ix++) {\n\t\t\t\t\tbw += widths[column + ix] + hGap;\n\t\t\t\t}\n\t\t\t\tbw -= tc.insets.left + tc.insets.right;\n\t\t\t\tint bh = heights[row];\n\t\t\t\tfor (int iy = 1; iy < tc.gridheight && row + iy < nr; iy++) {\n\t\t\t\t\tbh += heights[row + iy] + vGap;\n\t\t\t\t}\n\t\t\t\tbh -= tc.insets.top + tc.insets.bottom;\n\t\t\t\tDimension pSize = (useStrictGridBagModel) ? getMinimumComponentSize(comp) : getPreferredComponentSize(comp);\n\t\t\t\tRectangle bounds = computeCellBounds(new Rectangle(bx, by, bw, bh), pSize, tc);\n\t\t\t\tcomp.setBounds(bounds.x, bounds.y, bounds.width, bounds.height);\n\t\t\t}\n\t\t} else {\n\t\t\tresult = new Dimension(width, height);\n\t\t}\n\t\treturn result;\n\t}\n\n/* Private method: computeLayoutTable(target) */\n/**\n * Updates the layoutTable constraints for each component in <code>target</code>.\n * All elements whose <code>gridx</code> or <code>gridy</code> constraints\n * are <code>RELATIVE</code> are changed to explicit grid references by\n * interpreting the <code>gridwidth</code> and <code>gridheight</code>\n * constraints.\n *\n * @usage computeLayoutTable(target);\n * @param target The target container\n */\n\tprivate void computeLayoutTable(Container target) {\n\t\tint[] unfinishedSpans = null;\n\t\tint row = 0;\n\t\tint column = 0;\n\t\tint layoutColumns = nColumns;\n\t\tint nComponents = target.getComponentCount();\n\t\tboolean nextEndRow = false;\n\t\tlayoutTable = new HashMap<Component,TableConstraints>();\n\t\tfor (int i = 0; i < nComponents; i++) {\n\t\t\tComponent comp = target.getComponent(i);\n\t\t\tTableConstraints tc = getConstraints(comp);\n\t\t\tif (tc.gridx != GridBagConstraints.RELATIVE) {\n\t\t\t\tcolumn = tc.gridx;\n\t\t\t}\n\t\t\tif (tc.gridy != GridBagConstraints.RELATIVE) {\n\t\t\t\trow = tc.gridy;\n\t\t\t}\n\t\t\tif (nRows > 0 && row >= nRows) {\n\t\t\t\t// try to repair\n\t\t\t\trow = i / nColumns;\n\t\t\t\tcolumn = i % nColumns;\n\t\t\t}\n\t\t\t\n\t\t\tif (nRows > 0 && row >= nRows) {\n\t\t\t\tthrow new ErrorException(\"TableLayout: Too many rows specified \"\n\t\t\t\t\t\t+ \"(created with \" + nRows + \" rows x \" + nColumns + \" cols, but contains \"\n\t\t\t\t\t\t+ nComponents + \" total components; \"\n\t\t\t\t\t\t+ \"component #\" + i + \" = \" + comp);\n\t\t\t}\n\t\t\twhile (unfinishedSpans != null && column < unfinishedSpans.length && unfinishedSpans[column] > 0) {\n\t\t\t\tcolumn++;\n\t\t\t\tif (layoutColumns > 0 && column >= layoutColumns) {\n\t\t\t\t\tfor (int c = 0; c < unfinishedSpans.length; c++) {\n\t\t\t\t\t\tif (unfinishedSpans[c] > 0) unfinishedSpans[c]--;\n\t\t\t\t\t}\n\t\t\t\t\trow++;\n\t\t\t\t\tcolumn = getFirstAvailableColumn(unfinishedSpans);\n\t\t\t\t}\n\t\t\t}\n\t\t\ttc.gridx = column;\n\t\t\ttc.gridy = row;\n\t\t\tboolean endrow = nextEndRow;\n\t\t\tsetMaxProperty(\"width\" + column, tc.width);\n\t\t\tsetMaxProperty(\"height\" + row, tc.height);\n\t\t\tsetMaxProperty(\"weightx\" + column, tc.weightx);\n\t\t\tsetMaxProperty(\"weighty\" + row, tc.weighty);\n\t\t\tint colspan = 1;\n\t\t\tswitch (tc.gridwidth) {\n\t\t\t  case GridBagConstraints.REMAINDER:\n\t\t\t\tendrow = true;\n\t\t\t\tif (layoutColumns > 0) colspan = layoutColumns - column;\n\t\t\t\tbreak;\n\t\t\t  case GridBagConstraints.RELATIVE:\n\t\t\t\tif (layoutColumns <= 0) {\n\t\t\t\t\tthrow new ErrorException(\"TableLayout: Illegal to use gridwidth=RELATIVE in first row\");\n\t\t\t\t}\n\t\t\t\tcolspan = layoutColumns - column - 1;\n\t\t\t\tnextEndRow = true;\n\t\t\t\tbreak;\n\t\t\t  default:\n\t\t\t\tcolspan = tc.gridwidth;\n\t\t\t\tendrow = (nColumns > 0 && column + tc.gridwidth >= nColumns);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (colspan > 1 && unfinishedSpans != null) {\n\t\t\t\tfor (int c = column; c < Math.min(unfinishedSpans.length, column + colspan); c++) {\n\t\t\t\t\tif (unfinishedSpans[c] != 0) {\n\t\t\t\t\t\tthrow new ErrorException(\"TableLayout: Overlapping cells\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tint rowspan = 1;\n\t\t\tswitch (tc.gridheight) {\n\t\t\t  case GridBagConstraints.REMAINDER:\n\t\t\t\trowspan = Integer.MAX_VALUE;\n\t\t\t\tbreak;\n\t\t\t  case GridBagConstraints.RELATIVE:\n\t\t\t\tthrow new ErrorException(\"TableLayout: Illegal to use gridheight=RELATIVE\");\n\t\t\t  default:\n\t\t\t\trowspan = tc.gridheight;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (rowspan > 1) {\n\t\t\t\tif (unfinishedSpans == null) {\n\t\t\t\t\tunfinishedSpans = new int[column + colspan];\n\t\t\t\t} else if (unfinishedSpans.length < column + colspan) {\n\t\t\t\t\tint[] oldSpans = unfinishedSpans;\n\t\t\t\t\tunfinishedSpans = new int[column + colspan];\n\t\t\t\t\tSystem.arraycopy(oldSpans, 0, unfinishedSpans, 0, oldSpans.length);\n\t\t\t\t}\n\t\t\t\tfor (int c = column; c < column + colspan; c++) {\n\t\t\t\t\tunfinishedSpans[c] = rowspan;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttc.gridwidth = colspan;\n\t\t\ttc.gridheight = rowspan;\n\t\t\tlayoutTable.put(comp, tc);\n\t\t\tcolumn += colspan;\n\t\t\twhile (endrow || (layoutColumns > 0 && column >= layoutColumns)) {\n\t\t\t\tif (layoutColumns <= 0) layoutColumns = column;\n\t\t\t\tif (unfinishedSpans != null) {\n\t\t\t\t\tfor (int c = 0; c < unfinishedSpans.length; c++) {\n\t\t\t\t\t\tif (unfinishedSpans[c] > 0) unfinishedSpans[c]--;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trow++;\n\t\t\t\tcolumn = getFirstAvailableColumn(unfinishedSpans);\n\t\t\t\tendrow = false;\n\t\t\t}\n\t\t}\n\t\tif (layoutColumns <= 0) layoutColumns = column;\n\t\tsetIntProperty(\"nColumns\", layoutColumns);\n\t\tsetIntProperty(\"nRows\", row + 1);\n\t}\n\n/* Private method: computeCellBounds(enclosure, psize, tc) */\n/**\n * Computes the bounds for the cell based on the bounds of the enclosure,\n * the preferred size of the object, and the constraints in tc.\n */\n\tprivate Rectangle computeCellBounds(Rectangle enclosure, Dimension psize, TableConstraints tc) {\n\t\tint x = enclosure.x;\n\t\tint y = enclosure.y;\n\t\tint width = enclosure.width;\n\t\tint height = enclosure.height;\n\t\tif (tc.fill == TableConstraints.NONE || tc.fill == TableConstraints.VERTICAL) {\n\t\t\twidth = psize.width;\n\t\t}\n\t\tif (tc.fill == TableConstraints.NONE || tc.fill == TableConstraints.HORIZONTAL) {\n\t\t\theight = psize.height;\n\t\t}\n\t\tif (width != enclosure.width) {\n\t\t\tswitch (tc.anchor) {\n\t\t\t  case TableConstraints.NORTH: case TableConstraints.CENTER: case TableConstraints.SOUTH:\n\t\t\t\tx += (enclosure.width - width) / 2;\n\t\t\t\tbreak;\n\t\t\t  case TableConstraints.NORTHEAST: case TableConstraints.EAST: case TableConstraints.SOUTHEAST:\n\t\t\t\tx += enclosure.width - width;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (height != enclosure.height) {\n\t\t\tswitch (tc.anchor) {\n\t\t\t  case TableConstraints.WEST: case TableConstraints.CENTER: case TableConstraints.EAST:\n\t\t\t\ty += (enclosure.height - height) / 2;\n\t\t\t\tbreak;\n\t\t\t  case TableConstraints.SOUTHWEST: case TableConstraints.SOUTH: case TableConstraints.SOUTHEAST:\n\t\t\t\ty += enclosure.height - height;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn new Rectangle(x, y, width, height);\n\t}\n\n/* Private method: setMaxProperty(key, value) */\n/**\n * Sets the property for the specified key to the maximum of its\n * previous value and the specified new value.\n */\n\tprivate void setMaxProperty(String key, int value) {\n\t\tsetIntProperty(key, Math.max(value, getIntProperty(key)));\n\t}\n\n/* Private method: setMaxProperty(key, value) */\n/**\n * Sets the property for the specified key to the maximum of its\n * previous value and the specified new value.\n */\n\tprivate void setMaxProperty(String key, double value) {\n\t\tsetDoubleProperty(key, Math.max(value, getDoubleProperty(key)));\n\t}\n\n/* Private method: setIntProperty(key, value) */\n/**\n * Sets the property for the specified key to the integer value.\n */\n\tprivate void setIntProperty(String key, int value) {\n\t\tpropertyTable.put(key, Integer.valueOf(value));\n\t}\n\n/* Private method: getIntProperty(key) */\n/**\n * Gets the integer property associated with the specified key.  If no value\n * has been set, the method returns 0.\n */\n\tprivate int getIntProperty(String key) {\n\t\tObject binding = propertyTable.get(key);\n\t\tif (binding == null) return 0;\n\t\treturn ((Integer) binding).intValue();\n\t}\n\n/* Private method: setDoubleProperty(key, value) */\n/**\n * Sets the property for the specified key to the double value.\n */\n\tprivate void setDoubleProperty(String key, double value) {\n\t\tpropertyTable.put(key, Double.valueOf(value));\n\t}\n\n/* Private method: getDoubleProperty(key) */\n/**\n * Gets the double property associated with the specified key.  If no value\n * has been set, the method returns 0.\n */\n\tprivate double getDoubleProperty(String key) {\n\t\tObject binding = propertyTable.get(key);\n\t\tif (binding == null) return 0.0;\n\t\treturn ((Double) binding).doubleValue();\n\t}\n\n/* Private method: getFirstAvailableColumn(unfinishedSpans) */\n/**\n * Gets the first available column in the next row of the table,\n * taking into account whether multirow cells are being handled\n * as in GridBagLayout.\n */\n\tprivate int getFirstAvailableColumn(int[] unfinishedSpans) {\n\t\tif (useStrictGridBagModel && unfinishedSpans != null) {\n\t\t\tfor (int column = unfinishedSpans.length; column > 0; column--) {\n\t\t\t\tif (unfinishedSpans[column - 1] > 0) return column;\n\t\t\t}\n\t\t}\n\t\treturn 0;\n\t}\n\n/* Private constants */\n\tprivate static final int LAYOUT_CONTAINER_MODE = 0;\n\tprivate static final int MINIMUM_LAYOUT_SIZE_MODE = 1;\n\tprivate static final int PREFERRED_LAYOUT_SIZE_MODE = 2;\n\tprivate static final int MINIMUM_SCROLLBAR_SIZE = 100;\n\n/* Private instance variables */\n\tprivate transient Container targetContainer;\n\tprivate HashMap<Component,GridBagConstraints> constraintTable;\n\tprivate HashMap<Component,TableConstraints> layoutTable;\n\tprivate HashMap<String,Object> propertyTable;\n\tprivate boolean useStrictGridBagModel;\n\tprivate int nRows;\n\tprivate int nColumns;\n\tprivate int horizontalAlignment;\n\tprivate int verticalAlignment;\n\tprivate int defaultFill;\n\tprivate int hGap;\n\tprivate int vGap;\n\n/* Serial version UID */\n/**\n * The serialization code for this class.  This value should be incremented\n * whenever you change the structure of this class in an incompatible way,\n * typically by adding a new instance variable.\n */\n\tstatic final long serialVersionUID = 1L;\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/io/ConsoleModel.java",
    "content": "/*\n * Pulled out into its own file so that it can be made public.\n */\n\npackage acm.io;\n\nimport acm.program.ProgramMenuBar;\nimport java.awt.*;\nimport java.io.BufferedReader;\n\npublic interface ConsoleModel {\n\n\tpublic abstract void setConsole(IOConsole ioconsole);\n\n\tpublic abstract IOConsole getConsole();\n\n\tpublic abstract void print(String s, int i);\n\n\tpublic abstract String readLine();\n\n\tpublic abstract void setInputScript(BufferedReader bufferedreader);\n\n\tpublic abstract BufferedReader getInputScript();\n\n\tpublic abstract void clear();\n\n\tpublic abstract String getText();\n\n\tpublic abstract String getText(int i, int j);\n\n\tpublic abstract int getLength();\n\n\tpublic abstract Component getConsolePane();\n\n\tpublic abstract Component getTextPane();\n\n\tpublic abstract void cut();\n\n\tpublic abstract void copy();\n\n\tpublic abstract void paste();\n\n\tpublic abstract void selectAll();\n\n\tpublic abstract boolean isPointSelection();\n\n\tpublic abstract void print(PrintJob printjob);\n\n\tpublic abstract void setInputStyle(int i);\n\n\tpublic abstract void setInputColor(Color color);\n\n\tpublic abstract void setErrorStyle(int i);\n\n\tpublic abstract void setErrorColor(Color color);\n\n\tpublic abstract void requestFocus();\n\n\tpublic abstract void setMenuBar(ProgramMenuBar programmenubar);\n\n\tpublic static final int OUTPUT_STYLE = 0;\n\tpublic static final int INPUT_STYLE = 1;\n\tpublic static final int ERROR_STYLE = 2;\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/io/IOConsole.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2018/01/23\n * - fixed bug in getInteger reprompt message (should be \"Illegal integer format\")\n * @version 2016/10/02\n * - added ability to set reprompt messages for readInt/Double/Boolean\n * @version 2015/05/10\n * - added a space after all readInt/Double/Line prompts\n */\n\npackage acm.io;\n\nimport acm.program.*;\nimport acm.util.*;\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.io.*;\nimport java.util.*;\nimport javax.swing.*;\n\npublic class IOConsole extends Container implements IOModel {\n\tprivate static final long serialVersionUID = 0L;\n\t\n\tpublic static final IOConsole SYSTEM_CONSOLE = new SystemConsole();\n\n\tpublic IOConsole() {\n\t\tthis.consoleModel = createConsoleModel();\n\t\tthis.consoleModel.setConsole(this);\n\t\tsetBackground(Color.WHITE);\n\t\tsetInputColor(Color.BLUE);\n\t\tsetInputStyle(1);\n\t\tsetErrorColor(Color.RED);\n\t\tsetErrorStyle(1);\n\t\tsetFont(JTFTools.getStandardFont(DEFAULT_FONT));\n\t\tComponent localComponent = this.consoleModel.getConsolePane();\n\t\tif (localComponent != null) {\n\t\t\tsetLayout(new BorderLayout());\n\t\t\tadd(localComponent, \"Center\");\n\t\t}\n\t\tthis.reader = null;\n\t\tthis.writer = null;\n\t\tthis.exceptionOnError = false;\n\t}\n\n\tpublic void clear() {\n\t\tthis.consoleModel.clear();\n\t}\n\t\n\tpublic ConsoleModel getConsoleModel() {\n\t\treturn this.consoleModel;\n\t}\n\n\tpublic void print(String paramString) {\n\t\tgetWriter().print(paramString);\n\t\tif (echo) {\n\t\t\tSystem.out.print(paramString);\n\t\t\tSystem.out.flush();\n\t\t}\n\t}\n\n\tpublic final void print(boolean paramBoolean) {\n\t\tprint(\"\" + paramBoolean);\n\t}\n\n\tpublic final void print(char paramChar) {\n\t\tprint(\"\" + paramChar);\n\t}\n\n\tpublic final void print(double paramDouble) {\n\t\tprint(\"\" + paramDouble);\n\t}\n\n\tpublic final void print(float paramFloat) {\n\t\tprint(\"\" + paramFloat);\n\t}\n\n\tpublic final void print(int paramInt) {\n\t\tprint(\"\" + paramInt);\n\t}\n\n\tpublic final void print(long paramLong) {\n\t\tprint(\"\" + paramLong);\n\t}\n\n\tpublic final void print(Object paramObject) {\n\t\tprint(\"\" + paramObject);\n\t}\n\n\tpublic void println() {\n\t\tgetWriter().println();\n\t\tif (echo) {\n\t\t\tSystem.out.println();\n\t\t\tSystem.out.flush();\n\t\t}\n\t}\n\n\tpublic void println(String paramString) {\n\t\tgetWriter().println(paramString);\n\t\tif (echo) {\n\t\t\tSystem.out.println(paramString);\n\t\t\tSystem.out.flush();\n\t\t}\n\t}\n\n\tpublic final void println(boolean paramBoolean) {\n\t\tprintln(\"\" + paramBoolean);\n\t}\n\n\tpublic final void println(char paramChar) {\n\t\tprintln(\"\" + paramChar);\n\t}\n\n\tpublic final void println(double paramDouble) {\n\t\tprintln(\"\" + paramDouble);\n\t}\n\n\tpublic final void println(float paramFloat) {\n\t\tprintln(\"\" + paramFloat);\n\t}\n\n\tpublic final void println(int paramInt) {\n\t\tprintln(\"\" + paramInt);\n\t}\n\n\tpublic final void println(long paramLong) {\n\t\tprintln(\"\" + paramLong);\n\t}\n\n\tpublic final void println(Object paramObject) {\n\t\tprintln(\"\" + paramObject);\n\t}\n\n\tpublic void showErrorMessage(String paramString) {\n\t\tthis.consoleModel.print(paramString, 2);\n\t\tthis.consoleModel.print(\"\\n\", 2);\n\t}\n\n\tpublic final String readLine() {\n\t\treturn readLine(null);\n\t}\n\n\tpublic String readLine(String paramString) {\n\t\tif (paramString != null) {\n\t\t\tparamString = appendSpace(paramString);   // added by Marty 2015/05/10\n\t\t\tprint(paramString);\n\t\t}\n\t\tthis.consoleModel.requestFocus();\n\t\ttry {\n\t\t\tString line = getReader().readLine();\n\t\t\tif (echo) {\n\t\t\t\tSystem.out.println(line);\n\t\t\t\tSystem.out.flush();\n\t\t\t}\n\t\t\treturn line;\n\t\t} catch (IOException localIOException) {\n\t\t\tthrow new ErrorException(localIOException);\n\t\t}\n\t}\n\n\tpublic final int readInt() {\n\t\treturn readInt(null, Integer.MIN_VALUE, Integer.MAX_VALUE);\n\t}\n\n\tpublic final int readInt(int paramInt1, int paramInt2) {\n\t\treturn readInt(null, paramInt1, paramInt2);\n\t}\n\n\tpublic final int readInt(String paramString) {\n\t\treturn readInt(paramString, Integer.MIN_VALUE, Integer.MAX_VALUE);\n\t}\n\n\tpublic int readInt(String paramString, int paramInt1, int paramInt2) {\n\t\tString str1 = null;\n\t\tfor (;;) {\n\t\t\tString str2 = readLine(paramString);\n\t\t\ttry {\n\t\t\t\tint i = Integer.parseInt(str2);\n\t\t\t\tif ((i >= paramInt1) && (i <= paramInt2)) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t\tstr1 = \"Value is outside the range [\" + paramInt1 + \":\"\n\t\t\t\t\t\t+ paramInt2 + \"]\";\n\t\t\t} catch (NumberFormatException localNumberFormatException) {\n\t\t\t\tstr1 = GETINTEGER_REPROMPT_MESSAGE;\n\t\t\t}\n\t\t\tshowErrorMessage(str1);\n\t\t\tif (paramString == null) {\n\t\t\t\tparamString = GETINTEGER_DEFAULT_PROMPT;\n\t\t\t}\n\t\t}\n\t}\n\t\n\tprotected void setReadIntDefaultPrompt(String prompt) {\n\t\tGETINTEGER_DEFAULT_PROMPT = prompt;\n\t}\n\n\tprotected void setReadIntRepromptMessage(String message) {\n\t\tGETINTEGER_REPROMPT_MESSAGE = message;\n\t}\n\n\tpublic final double readDouble() {\n\t\treturn readDouble(null, Double.NEGATIVE_INFINITY,\n\t\t\t\tDouble.POSITIVE_INFINITY);\n\t}\n\n\tpublic final double readDouble(double paramDouble1, double paramDouble2) {\n\t\treturn readDouble(null, paramDouble1, paramDouble2);\n\t}\n\n\tpublic final double readDouble(String paramString) {\n\t\treturn readDouble(paramString, Double.NEGATIVE_INFINITY,\n\t\t\t\tDouble.POSITIVE_INFINITY);\n\t}\n\n\tpublic double readDouble(String paramString, double paramDouble1,\n\t\t\tdouble paramDouble2) {\n\t\tString str1 = null;\n\t\tfor (;;) {\n\t\t\tString str2 = readLine(paramString);\n\t\t\ttry {\n\t\t\t\tdouble d = Double.valueOf(str2).doubleValue();\n\t\t\t\tif ((d >= paramDouble1) && (d <= paramDouble2)) {\n\t\t\t\t\treturn d;\n\t\t\t\t}\n\t\t\t\tstr1 = \"Value is outside the range [\" + paramDouble1 + \":\"\n\t\t\t\t\t\t+ paramDouble2 + \"]\";\n\t\t\t} catch (NumberFormatException localNumberFormatException) {\n\t\t\t\tstr1 = GETREAL_REPROMPT_MESSAGE;\n\t\t\t}\n\t\t\tshowErrorMessage(str1);\n\t\t\tif (paramString == null) {\n\t\t\t\tparamString = GETREAL_DEFAULT_PROMPT;\n\t\t\t}\n\t\t}\n\t}\n\t\n\tpublic void setEcho(boolean echo) {\n\t\tthis.echo = echo;\n\t}\n\n\tprotected void setReadDoubleDefaultPrompt(String prompt) {\n\t\tGETREAL_DEFAULT_PROMPT = prompt;\n\t}\n\n\tprotected void setReadDoubleRepromptMessage(String message) {\n\t\tGETREAL_REPROMPT_MESSAGE = message;\n\t}\n\n\tpublic final boolean readBoolean() {\n\t\treturn readBoolean(null);\n\t}\n\n\tpublic final boolean readBoolean(String paramString) {\n\t\treturn readBoolean(paramString, \"true\", \"false\");\n\t}\n\n\tpublic boolean readBoolean(String paramString1, String paramString2,\n\t\t\tString paramString3) {\n\t\tfor (;;) {\n\t\t\tString str = readLine(paramString1);\n\t\t\tif (str == null) {\n\t\t\t\tthrow new ErrorException(\"End of file encountered\");\n\t\t\t}\n\t\t\tif (str.equalsIgnoreCase(paramString2)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (str.equalsIgnoreCase(paramString3)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (this.exceptionOnError) {\n\t\t\t\tthrow new ErrorException(GETBOOL_REPROMPT_MESSAGE);\n\t\t\t}\n\t\t\tshowErrorMessage(GETBOOL_REPROMPT_MESSAGE);\n\t\t\tif (paramString1 == null) {\n\t\t\t\tparamString1 = \"Retry: \";\n\t\t\t}\n\t\t}\n\t}\n\t\n\tprotected void setReadBooleanRepromptMessage(String message) {\n\t\tGETBOOL_REPROMPT_MESSAGE = message;\n\t}\n\t\n\tprotected String appendSpace(String s) {\n\t\ts = String.valueOf(s);\n\t\tif (!s.endsWith(\" \")) {\n\t\t\ts += \" \";\n\t\t}\n\t\treturn s;\n\t}\n\n\tpublic BufferedReader getReader() {\n\t\tif (this.reader == null) {\n\t\t\tthis.reader = new BufferedReader(new ConsoleReader(\n\t\t\t\t\tthis.consoleModel));\n\t\t}\n\t\treturn this.reader;\n\t}\n\n\tpublic PrintWriter getWriter() {\n\t\tif (this.writer == null) {\n\t\t\tthis.writer = new PrintWriter(new ConsoleWriter(this.consoleModel));\n\t\t}\n\t\treturn this.writer;\n\t}\n\n\tpublic void setExceptionOnError(boolean paramBoolean) {\n\t\tthis.exceptionOnError = paramBoolean;\n\t}\n\n\tpublic boolean getExceptionOnError() {\n\t\treturn this.exceptionOnError;\n\t}\n\n\tpublic void setInputStyle(int paramInt) {\n\t\tthis.inputStyle = paramInt;\n\t\tthis.consoleModel.setInputStyle(paramInt);\n\t}\n\n\tpublic int getInputStyle() {\n\t\treturn this.inputStyle;\n\t}\n\n\tpublic void setInputColor(Color paramColor) {\n\t\tthis.inputColor = paramColor;\n\t\tthis.consoleModel.setInputColor(paramColor);\n\t}\n\n\tpublic Color getInputColor() {\n\t\treturn this.inputColor;\n\t}\n\n\tpublic void setErrorStyle(int paramInt) {\n\t\tthis.errorStyle = paramInt;\n\t\tthis.consoleModel.setErrorStyle(paramInt);\n\t}\n\n\tpublic int getErrorStyle() {\n\t\treturn this.errorStyle;\n\t}\n\n\tpublic void setErrorColor(Color paramColor) {\n\t\tthis.errorColor = paramColor;\n\t\tthis.consoleModel.setErrorColor(paramColor);\n\t}\n\n\tpublic Color getErrorColor() {\n\t\treturn this.errorColor;\n\t}\n\n\tpublic void setFont(String paramString) {\n\t\tsetFont(JTFTools.decodeFont(paramString, getFont()));\n\t}\n\n\tpublic void setInputScript(BufferedReader paramBufferedReader) {\n\t\tthis.consoleModel.setInputScript(paramBufferedReader);\n\t}\n\n\tpublic BufferedReader getInputScript() {\n\t\treturn this.consoleModel.getInputScript();\n\t}\n\n\tpublic void cut() {\n\t\tthis.consoleModel.cut();\n\t}\n\n\tpublic void copy() {\n\t\tthis.consoleModel.copy();\n\t}\n\n\tpublic void paste() {\n\t\tthis.consoleModel.paste();\n\t}\n\n\tpublic void selectAll() {\n\t\tthis.consoleModel.selectAll();\n\t}\n\n\tpublic void save() {\n\t\tFileWriter localFileWriter = null;\n\t\twhile (localFileWriter == null) {\n\t\t\ttry {\n\t\t\t\tif (this.file == null) {\n\t\t\t\t\tFrame localFrame = JTFTools.getEnclosingFrame(this);\n\t\t\t\t\tif (localFrame == null) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tString localObject = System.getProperty(\"user.dir\");\n\t\t\t\t\tFileDialog localFileDialog = new FileDialog(localFrame,\n\t\t\t\t\t\t\t\"Save Console As\", 1);\n\t\t\t\t\tlocalFileDialog.setDirectory(localObject);\n\t\t\t\t\tlocalFileDialog.setVisible(true);\n\t\t\t\t\tString str = localFileDialog.getFile();\n\t\t\t\t\tif (str == null) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tthis.file = new File(localFileDialog.getDirectory(), str);\n\t\t\t\t}\n\t\t\t\tlocalFileWriter = new FileWriter(this.file);\n\t\t\t\tsave(localFileWriter);\n\t\t\t\tlocalFileWriter.close();\n\t\t\t\tPlatform.setFileTypeAndCreator(this.file, \"TEXT\", \"ttxt\");\n\t\t\t} catch (IOException localIOException) {\n\t\t\t\tObject localObject = new IODialog(this);\n\t\t\t\t((IODialog) localObject).showErrorMessage(localIOException\n\t\t\t\t\t\t.getMessage());\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic void saveAs() {\n\t\tthis.file = null;\n\t\tsave();\n\t}\n\n\tpublic void save(Writer paramWriter) {\n\t\ttry {\n\t\t\tparamWriter.write(this.consoleModel.getText());\n\t\t} catch (IOException localIOException) {\n\t\t\tthrow new ErrorException(localIOException);\n\t\t}\n\t}\n\n\tpublic void printConsole() {\n\t\tFrame localFrame = JTFTools.getEnclosingFrame(this);\n\t\tif (localFrame == null) {\n\t\t\treturn;\n\t\t}\n\t\tPrintJob localPrintJob = getToolkit().getPrintJob(localFrame,\n\t\t\t\t\"Console\", null);\n\t\tif (localPrintJob == null) {\n\t\t\treturn;\n\t\t}\n\t\tprintConsole(localPrintJob);\n\t\tlocalPrintJob.end();\n\t}\n\n\tpublic void printConsole(PrintJob paramPrintJob) {\n\t\tthis.consoleModel.print(paramPrintJob);\n\t}\n\n\tpublic void script() {\n\t\tFrame localFrame = JTFTools.getEnclosingFrame(this);\n\t\tFileDialog localFileDialog = new FileDialog(localFrame, \"Input Script\",\n\t\t\t\t0);\n\t\tlocalFileDialog.setDirectory(System.getProperty(\"user.dir\"));\n\t\tlocalFileDialog.setVisible(true);\n\t\tString str1 = localFileDialog.getDirectory();\n\t\tString str2 = localFileDialog.getFile();\n\t\tif (str2 != null) {\n\t\t\ttry {\n\t\t\t\tFileReader localFileReader = new FileReader(new File(new File(\n\t\t\t\t\t\tstr1), str2));\n\t\t\t\tsetInputScript(new BufferedReader(localFileReader));\n\t\t\t} catch (IOException localIOException) {\n\t\t\t\tthrow new ErrorException(localIOException);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic void setMenuBar(ProgramMenuBar paramProgramMenuBar) {\n\t\tthis.menuBar = paramProgramMenuBar;\n\t\tthis.consoleModel.setMenuBar(paramProgramMenuBar);\n\t}\n\n\tpublic ProgramMenuBar getMenuBar() {\n\t\treturn this.menuBar;\n\t}\n\n\tpublic boolean menuAction(ActionEvent paramActionEvent) {\n\t\tString str = paramActionEvent.getActionCommand();\n\t\tif (str.equals(ProgramMenuBar.MENU_ITEM_TEXT_CUT)) {\n\t\t\tcut();\n\t\t\treturn true;\n\t\t}\n\t\tif (str.equals(ProgramMenuBar.MENU_ITEM_TEXT_COPY)) {\n\t\t\tcopy();\n\t\t\treturn true;\n\t\t}\n\t\tif (str.equals(ProgramMenuBar.MENU_ITEM_TEXT_PASTE)) {\n\t\t\tpaste();\n\t\t\treturn true;\n\t\t}\n\t\tif (str.equals(ProgramMenuBar.MENU_ITEM_TEXT_SELECT_ALL)) {\n\t\t\tselectAll();\n\t\t\treturn true;\n\t\t}\n\t\tif (str.equals(ProgramMenuBar.MENU_ITEM_TEXT_SAVE)) {\n\t\t\tsave();\n\t\t\treturn true;\n\t\t}\n\t\tif (str.equals(ProgramMenuBar.MENU_ITEM_TEXT_SAVE_AS)) {\n\t\t\tsaveAs();\n\t\t\treturn true;\n\t\t}\n\t\tif (str.equals(ProgramMenuBar.MENU_ITEM_TEXT_SCRIPT)) {\n\t\t\tscript();\n\t\t\treturn true;\n\t\t}\n\t\tif (str.equals(ProgramMenuBar.MENU_ITEM_TEXT_PRINT_CONSOLE)) {\n\t\t\tprintConsole();\n\t\t\treturn true;\n\t\t}\n\t\tif (str.equals(ProgramMenuBar.MENU_ITEM_TEXT_CLEAR_CONSOLE)) {\n\t\t\tclear();\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic boolean isConsoleMenuItem(JMenuItem paramJMenuItem) {\n\t\tString str = paramJMenuItem.getActionCommand();\n\t\tif (str == null) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (int i = 0; i < CONSOLE_MENU_ACTIONS.length; i++) {\n\t\t\tif (str.equals(CONSOLE_MENU_ACTIONS[i])) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic void updateMenuBar(ProgramMenuBar paramProgramMenuBar) {\n\t\tIterator<JMenuItem> localIterator = paramProgramMenuBar.iterator();\n\t\twhile (localIterator.hasNext()) {\n\t\t\tJMenuItem localJMenuItem = localIterator.next();\n\t\t\tif (isConsoleMenuItem(localJMenuItem)) {\n\t\t\t\tlocalJMenuItem.setEnabled(true);\n\t\t\t} else {\n\t\t\t\tlocalJMenuItem.setEnabled(!paramProgramMenuBar\n\t\t\t\t\t\t.isFocusedItem(localJMenuItem));\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic void setBackground(Color paramColor) {\n\t\tComponent localComponent = this.consoleModel.getTextPane();\n\t\tif (localComponent != null) {\n\t\t\tlocalComponent.setBackground(paramColor);\n\t\t}\n\t\tsuper.setBackground(paramColor);\n\t}\n\n\tpublic void setForeground(Color paramColor) {\n\t\tComponent localComponent = this.consoleModel.getTextPane();\n\t\tif (localComponent != null) {\n\t\t\tlocalComponent.setForeground(paramColor);\n\t\t}\n\t\tsuper.setForeground(paramColor);\n\t}\n\n\tpublic void setFont(Font paramFont) {\n\t\tparamFont = JTFTools.getStandardFont(paramFont);\n\t\tComponent localComponent = this.consoleModel.getTextPane();\n\t\tif (localComponent != null) {\n\t\t\tlocalComponent.setFont(paramFont);\n\t\t}\n\t\tsuper.setFont(paramFont);\n\t}\n\n\tpublic void requestFocus() {\n\t\tthis.consoleModel.requestFocus();\n\t}\n\n\tpublic Dimension getPreferredSize() {\n\t\treturn getMinimumSize();\n\t}\n\n\tpublic Dimension getMinimumSize() {\n\t\treturn new Dimension(50, 40);\n\t}\n\n\tprotected ConsoleModel createConsoleModel() {\n\t\treturn new StandardConsoleModel();\n\t}\n\n\tprotected static final Font DEFAULT_FONT = new Font(\"Monospaced\", 0, 14);\n\tprotected static final String LINE_SEPARATOR = System\n\t\t\t.getProperty(\"line.separator\");\n\tprotected static final int MINIMUM_CONSOLE_WIDTH = 50;\n\tprotected static final int MINIMUM_CONSOLE_HEIGHT = 40;\n\tprivate static final String[] CONSOLE_MENU_ACTIONS = { \"Save\", \"Save As\",\n\t\t\t\"Print Console\", \"Script\", \"Cut\", \"Copy\", \"Paste\", \"Select All\", \"Clear Console\" };\n\tprivate ConsoleModel consoleModel;\n\tprivate boolean exceptionOnError;\n\tprivate boolean echo;\n\tprivate Color inputColor;\n\tprivate int inputStyle;\n\tprivate Color errorColor;\n\tprivate int errorStyle;\n\tprivate BufferedReader reader;\n\tprivate PrintWriter writer;\n\tprivate File file;\n\tprivate ProgramMenuBar menuBar;\n\t\n\tprivate String GETINTEGER_REPROMPT_MESSAGE = \"Illegal integer format\";\n\tprivate String GETINTEGER_DEFAULT_PROMPT = \"Retry: \";\n\tprivate String GETREAL_REPROMPT_MESSAGE = \"Illegal numeric format\";\n\tprivate String GETREAL_DEFAULT_PROMPT = \"Retry: \";\n\tprivate String GETBOOL_REPROMPT_MESSAGE = \"Illegal boolean format\";\n}"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/io/SimpleScanner.java",
    "content": "/*\n * @version 2016/04/24\n * - initial version\n */\n\npackage acm.io;\n\nimport java.io.ByteArrayOutputStream;\nimport java.io.File;\nimport java.io.FileReader;\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.io.InputStreamReader;\nimport java.io.LineNumberReader;\nimport java.io.PrintWriter;\nimport java.io.PushbackReader;\nimport java.io.Reader;\nimport java.io.StringReader;\nimport java.math.BigDecimal;\nimport java.math.BigInteger;\nimport java.util.Locale;\nimport java.util.NoSuchElementException;\nimport java.util.regex.Matcher;\nimport java.util.regex.Pattern;\nimport stanford.cs106.io.IORuntimeException;\n\n/**\n A simple text scanner which can parse primitive types and strings \n using regular expressions.\n\n <p>\n A Scanner breaks its input into tokens using a delimiter pattern,\n which by default matches whitespace. The resulting tokens may then be\n converted into values of different types using the various next methods.\n\n <p>\n This class is based on a subset of the functionality of Sun's\n java.util.Scanner class from J2SE v1.5.0, with some code borrowed \n from the TextReader class written by Stuart Reges of the \n University of Washington.  It should work with 'lazy input' from the\n keyboard as needed.\n\n <p>\n Some notable differences from java.util.Scanner are the following:\n\n <ul><li>\n\n All Java 5-specific features, such as implementing Iterator &lt; String &gt;\n and the public MatchResult match() method, are missing.\n\n </li><li>\n\n The useLocale, findInLine, and findInHorizon methods are not implemented\n and throw an UnsupportedOperationException when called.\n\n </li><li>\n\n This implementation is not guaranteed to exactly match the parsing behavior\n of java.util.Scanner for complex cases.  The java.util.Scanner uses \n sophisticated delimiting between tokens of input; this Scanner simply \n tokenizes on whitespace.  Also, for example, this implementation returns\n true on a call to hasNextFloat() if the upcoming input token is \"2.1F\", \n because this implementation's parsing is based on the primitive wrappers;\n java.util.Scanner would return false in this same case.\n\n </li><li>\n\n The toString text, exception text and exception-throwing behavior \n is not guaranteed to match that of java.util.Scanner.  In particular,\n this implementation includes the offending input line number in its\n NoSuchElementException text to aid debugging.\n\n </li><li>\n\n This implementation is slower than java.util.Scanner, partly because it \n does not directly cache input or regular expression patterns for simplicity.\n Since this class is a holdover implementation until widespread adoption of\n Java 5, this was deemed acceptable.\n\n </li></ul>\n\n <p>\n Recent changes:\n\n <ul><li>\n\n 2011-12-05: Fixed bug with scanner.reuse property and System.setIn.\n </li><li>\n 2008-02-27: Fixed bugs: next() w/ trailing spaces; multiple System.in Scanners\n </li><li>\n 2007-08-13: Fixed hasNextLine bug where last line doesn't have a trailing \\n .\n </li><li>\n 2007-07-27: Added -Dscanner.workingdir=DIR option for Grade-It.\n </li><li>\n 2007-07-18: More hanging input bug fixes for Grade-It system.\n </li><li>\n 2007-07-15: Fixed various input bugs (used to hang after waiting for input).\n\n </li><li>\n\n <ul><li>\n\n 2006-09-18: Added support for multiple Scanners reading the same underlying\n input stream without problems (useful for CSE 14x grading scripts).  Example:\n\n <pre>\n\n % java -Dscanner.reuse=1 MyProgramThatUsesScanner\n\n </pre>\n\n </li><li>\n\n 2005-07-30: Added support for regular expressions, delimiter, hasNext(Pattern),\n next(Pattern), useDelimiter, and skip(Pattern).\n\n </li><li>\n\n 2005-07-12: Added better error messages when wrong token type is read.\n The goal is for CS1 students to be able to more easily find their mistakes.\n\n Added support for command-line flag -Dscanner.echo=1 flag so that the\n Scanner can be made to echo stdin when it is being redirected in from\n a file.  Example:\n\n <pre>\n\n % java -Dscanner.echo=1 MyProgramThatUsesScanner < input.txt\n\n </pre>\n\n </li><li>\n\n 2005-01-22: Fixed a bug where nextLine returned an empty string rather than\n throwing an exception when no more input was available.\n\n </li><li>\n\n 2005-01-01: Renamed all private methods with underscores because students\n were discovering the private hasNextChar method and trying to use it in \n their programs.\n\n </li></ul>\n\n @author Marty Stepp (stepp AT cs washington edu),\n Lecturer, University of Washington CS&E\n\n @version 2011-12-05\n */\n//@SuppressWarnings(\"unused\")\npublic final class SimpleScanner {\n\t// class constants\n\tpublic static final String SCANNER_APPLET_MODE_PROPERTY_NAME = \"scanner.appletmode\";\n\tpublic static final String SCANNER_ECHO_PROPERTY_NAME = \"scanner.echo\";\n\tpublic static final String SCANNER_REUSE_PROPERTY_NAME = \"scanner.reuse\";\n\tpublic static final String SCANNER_WORKING_DIR_PROPERTY_NAME = \"scanner.workingdir\";\n\n\tprivate static final int EOF = -1;           // used to denote end-of-input\n\tprivate static final int PUSHBACK_BUFFER_SIZE = 4096;  // buffer to unread\n\tprivate static final Pattern DEFAULT_DELIMITER = \n\t\t\tPattern.compile(\"\\\\s+\");   // pattern that matches whitespace chars\n\tprivate static final String TRUE = \"true\";\n\tprivate static final String FALSE = \"false\";\n\tprivate static final String REMOVE_EXCEPTION_MESSAGE = \n\t\t\t\"Remove is not supported by this Scanner.\";\n\tprivate static final String NEAR_LINE_MESSAGE = \"  Near input line \";\n\tprivate static final String NO_TOKEN_MESSAGE = \"No tokens remain in input.\";\n\tprivate static boolean DEBUG = false;\n\n\t// static fields set by static 'set' method calls or System properties\n\tprivate static boolean s_appletMode = false;\n\tprivate static boolean s_echo = false;\n\tprivate static boolean s_reuse = false;\n\tprivate static String s_workingDir = null;\n\n\t// shared readers to implement scanner.reuse option\n\tprivate static PushbackReader s_reader = null;\n\tprivate static LineNumberReader s_lnReader = null;\n\tprivate static InputStream s_SystemIn = null;    // added to catch cases where they change System.in on me (used to break scanner.reuse mode)\n\n\tstatic {\n\t\tif (DEBUG) System.out.println(\"Scanner static initializer\");\n\t\ttry {\n\t\t\tString debugProp = System.getProperty(\"scanner.debug\");\n\t\t\tDEBUG = DEBUG || \"true\".equalsIgnoreCase(debugProp) ||\n\t\t\t\t\t\"on\".equalsIgnoreCase(debugProp) ||\n\t\t\t\t\t\"yes\".equalsIgnoreCase(debugProp) ||\n\t\t\t\t\t\"1\".equals(debugProp);\n\t\t} catch (Throwable t) {}\n\t}\n\n\t// Wipes the saved System.in readers that were added to \n\t// (generally doesn't need to be called except by JUnit scripts etc)\n\tpublic static void clearCache() {\n\t\ts_reader = null;\n\t\ts_lnReader = null;\n\t\ts_SystemIn = null;\n\t}\n\n\t// Returns whether to echo every token read from System.in\n\tpublic static boolean getEcho() {\n\t\ttry {\n\t\t\ts_echo = isTruthy(System.getProperty(SCANNER_ECHO_PROPERTY_NAME));\n\t\t} catch (SecurityException e) {}\n\t\treturn s_echo;\n\t}\n\n\t// Returns whether Scanner is running inside an applet\n\t// (if so, converts all File Scanners to read from ClassLoader resources instead)\n\tpublic static boolean getAppletMode() {\n\t\ttry {\n\t\t\ts_appletMode = isTruthy(System.getProperty(SCANNER_APPLET_MODE_PROPERTY_NAME));\n\t\t} catch (SecurityException e) {}\n\t\treturn s_appletMode;\n\t}\n\n\t// Returns whether to reuse the underlying input stream for multiple\n\t// Scanners on the same source\n\tpublic static boolean getReuse() {\n\t\ttry {\n\t\t\ts_reuse = isTruthy(System.getProperty(SCANNER_REUSE_PROPERTY_NAME));\n\t\t} catch (SecurityException e) {}\n\t\treturn s_reuse;\n\t}\n\n\t// Returns whether to use a certain working directory for every file opened\n\t// (used by Grade-it)\n\tpublic static String getWorkingDir() {\n\t\ttry {\n\t\t\ts_workingDir = System.getProperty(SCANNER_WORKING_DIR_PROPERTY_NAME);\n\t\t} catch (SecurityException e) {}\n\t\treturn s_workingDir;\n\t}\n\n\t// Sets whether to echo every token read from System.in\n\tpublic static void setAppletMode(boolean value) {\n\t\ttry {\n\t\t\tSystem.setProperty(SCANNER_APPLET_MODE_PROPERTY_NAME, value ? \"true\" : null);\n\t\t} catch (SecurityException e) {}\n\t\ts_appletMode = value;\n\t}\n\n\t// Sets whether to echo every token read from System.in\n\tpublic static void setEcho(boolean value) {\n\t\ttry {\n\t\t\tSystem.setProperty(SCANNER_ECHO_PROPERTY_NAME, value ? \"true\" : null);\n\t\t} catch (SecurityException e) {}\n\t\ts_echo = value;\n\t}\n\n\t// Sets whether to reuse the underlying input stream for multiple\n\t// Scanners on the same source (helpful for students who construct\n\t// multiple scanners to read from System.in)\n\tpublic static void setReuse(boolean value) {\n\t\ttry {\n\t\t\tSystem.setProperty(SCANNER_REUSE_PROPERTY_NAME, value ? \"true\" : null);\n\t\t} catch (SecurityException e) {}\n\t\ts_reuse = value;\n\t}\n\n\t// Sets whether to use a certain working directory for every file opened\n\t// (used by Grade-it)\n\tpublic static void setWorkingDir(String value) {\n\t\ttry {\n\t\t\tSystem.setProperty(SCANNER_WORKING_DIR_PROPERTY_NAME, value);\n\t\t} catch (SecurityException e) {}\n\t\ts_workingDir = value;\n\t}\n\n\t// Returns the given exception's stack trace as a String.\n\tprivate static String _getStackTraceAsString(Throwable e) {\n\t\tByteArrayOutputStream bytes = new ByteArrayOutputStream();\n\t\tPrintWriter writer = new PrintWriter(bytes, true);\n\t\te.printStackTrace(writer);\n\t\tString str = bytes.toString();\n\n\t\ttry {\n\t\t\twriter.close();\n\t\t\tbytes.close();\n\t\t}\n\t\tcatch (IOException ex) {}\n\n\t\treturn str;\n\t}\n\n\t// Returns true if one of Scanner's \"hasNext\" methods is on the stack.\n\t// Used so that we don't echo certain things when simply testing for hasNext.\n\tprivate static boolean _inHasNextMethod() {\n\t\tString stack = _getStackTraceAsString(new RuntimeException());\n\t\treturn stack.indexOf(\"Scanner.hasNext\") >= 0;\n\t}\n\n\tprivate static boolean isTruthy(String s) {\n\t\treturn s != null && (s.equals(\"1\") || s.equalsIgnoreCase(\"true\") || s.equalsIgnoreCase(\"on\") || s.equalsIgnoreCase(\"enabled\"));\n\t}\n\n\t// fields\n\tprivate Object m_source;                   // place where input came from in ctor\n\tprivate PushbackReader m_reader;           // underlying input source\n\tprivate LineNumberReader m_lnReader;       // keeps track of line numbers\n\tprivate IOException m_ioException = null;  // last IO exception\n\tprivate StringBuffer m_previousNextBuffer = new StringBuffer();  // last token\n\tprivate Pattern m_delimiter = DEFAULT_DELIMITER;  // delimiter between tokens\n\tprivate Locale m_locale = Locale.getDefault();  // Locale (not used)\n\tprivate int m_radix = 10;                  // default integer base\n\tprivate boolean m_closed = false;          // set true on close or exception\n\tprivate boolean m_showLineNumbers = true;  // set to false when reading System.in\n\tprivate boolean m_echoExceptions = true;   // when true, will print any exceptions thrown\n\tprivate boolean m_echoInput = false;       // set to false when reading files\n\n\tprivate java.io.PrintStream m_echoStream = System.out;   // where to print echoed input\n\n\t/**\n\tConstructs a new Scanner that produces values scanned from the specified \n\tfile. Bytes from the file are converted into characters using the \n\tunderlying platform's default charset.\n\t\n\t@param source A file to be scanned\n\t@throws IORuntimeException if source is not found or cannot be read\n\t */\n\tpublic SimpleScanner(File source) {\n\t\tthis(source, false);\n\t}\n\n\t/**\n\tConstructs a new Scanner that produces values scanned from the specified \n\tfile. Bytes from the file are converted into characters using the \n\tunderlying platform's default charset.\n\t\n\t@param source A file to be scanned\n\t@throws IORuntimeException if source is not found or cannot be read\n\t */\n\tprivate SimpleScanner(File source, boolean echo) {\n\t\t// possibly redirect working directories based on VM argument\n\t\tm_source = \"File: \" + source;\n\t\tString workingDir = getWorkingDir();\n\t\tif (workingDir != null) {\n\t\t\tsource = new File(workingDir, source.getName());\n\t\t}\n\n\t\tif (getAppletMode()) {\n\t\t\t// applets can't read files; use ClassLoader instead\n\t\t\tInputStream stream = getClass().getResourceAsStream(source.toString());\n\t\t\tif (stream == null) {\n\t\t\t\tthrow new NullPointerException(\"\\nApplet resource missing: \" + source);\n\t\t\t}\n\t\t\t_init(new InputStreamReader(stream), echo);\n\t\t} else {\n\t\t\ttry {\n\t\t\t\t_init(new FileReader(source), echo);\n\t\t\t} catch (IOException ioe) {\n\t\t\t\tthrow new IORuntimeException(\"unable to read file \" + source, ioe);\n\t\t\t}\n\t\t}\n\t\tm_showLineNumbers = true;\n\t}\n\n\t/**\n     Constructs a new Scanner that produces values scanned from the specified \n     input stream. Bytes from the stream are converted into characters using \n     the underlying platform's default charset.\n\n     @param source An input stream to be scanned\n\t */\n\tpublic SimpleScanner(InputStream source) {\n\t\tthis(source, false);\n\t}\n\n\t/**\n    Constructs a new Scanner that produces values scanned from the specified \n    input stream. Bytes from the stream are converted into characters using \n    the underlying platform's default charset.\n\n    @param source An input stream to be scanned\n    @param echo Whether to echo (repeat) input to System.out as it is read\n\t */\n\tprivate SimpleScanner(InputStream source, boolean echo) {\n\t\t// special case for console input, to accommodate multiple Scanners\n\t\tif (DEBUG) System.out.println(\"    Scanner(InputStream, echo=\" + echo + \")\");\n\n\t\tm_source = \"InputStream: \" + source;\n\n\t\t// don't show line numbers on exceptions unless reading from files\n\t\tm_showLineNumbers = (source != System.in);\n\n\t\tif (source == System.in && getReuse()) {\n\t\t\tif (s_reader == null || s_lnReader == null || s_SystemIn != System.in) {\n\t\t\t\tif (DEBUG) System.out.println(\"    Scanner() System.in starting anew\");\n\t\t\t\t_init(new InputStreamReader(source), echo);\n\t\t\t\ts_reader = m_reader;\n\t\t\t\ts_lnReader = m_lnReader;\n\t\t\t\ts_SystemIn = System.in;\n\t\t\t} else {\n\t\t\t\t// re-use existing readers\n\t\t\t\tm_reader = s_reader;\n\t\t\t\tm_lnReader = s_lnReader;\n\n\t\t\t\t// very special case: If a student makes multiple System.in scanners,\n\t\t\t\t// suddenly the next() / nextLine() pattern works.\n\t\t\t\t// I should match this by chomping the leading \\n if any.\n\t\t\t\tm_echoExceptions = false;\n\t\t\t\ttry {\n\t\t\t\t\tif (hasNextLine()) {\n\t\t\t\t\t\tchar peekChar = (char) _peek();\n\t\t\t\t\t\tif (peekChar == '\\r' || peekChar == '\\n') {\n\t\t\t\t\t\t\tif (DEBUG) System.out.println(\"    Scanner() multiple System.in Scanners; throwing away blank line\");\n\t\t\t\t\t\t\tnextLine();   // throw away blank line\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch (IOException e) {}\n\t\t\t\tm_echoExceptions = true;\n\t\t\t}\n\t\t} else {\n\t\t\t// normal initialization\n\t\t\t_init(new InputStreamReader(source), echo);\n\t\t}\n\n\t\t// only echo from System.in, not from file input\n\t\tm_echoInput = echo || (getEcho() && source == System.in);\n\t}\n\n\t/**\n     Constructs a new Scanner that produces values scanned from the specified\n     source.\n\n     @param source A character source to scan\n\t */\n\tpublic SimpleScanner(Reader source) {\n\t\tthis(source, false);\n\t}\n\n\tprivate SimpleScanner(Reader source, boolean echo) {\n\t\tm_source = \"Reader: \" + source;\n\t\t_init(source, echo);\n\t}\n\n\t/**\n     Constructs a new Scanner that produces values scanned from the specified\n     string.\n\n     @param source A string to scan\n\t */\n\tpublic SimpleScanner(String source) {\n\t\tthis(source, false);\n\t}\n\n\tprivate SimpleScanner(String source, boolean echo) {\n\t\tm_source = \"String: \" + source;\n\t\t_init(new StringReader(source), echo);\n\t}\n\n\t// Does the real work to initialize the Scanner.\n\tprivate void _init(Reader source, boolean echo) {\n\t\tm_lnReader = new LineNumberReader(source);\n\t\tm_lnReader.setLineNumber(1);  // it would be 0-based otherwise\n\t\tm_reader = new PushbackReader(m_lnReader, PUSHBACK_BUFFER_SIZE);\n\t\tm_echoInput = echo;\n\t}\n\n\t/**\n     Closes this scanner.\n\n     <p>\n     If this scanner is already closed then invoking \n     this method will have no effect.\n\t */\n\tpublic void close() {\n\t\ttry {\n\t\t\tm_reader.close();\n\t\t\tm_closed = true;\n\t\t} catch (IOException ioe) {\n\t\t\t_setIoException(ioe);\n\t\t}\n\t}\n\n\t/**\n     Returns the Pattern this Scanner is currently using to match delimiters.\n\n     @return this scanner's delimiting pattern.\n\t */\n\tpublic Pattern delimiter() {\n\t\treturn this.m_delimiter;\n\t}\n\n\t/**\n     Attempts to find the next occurrence of the specified pattern.\n\n     This method searches through the input up to the specified search \n     horizon, ignoring delimiters. If the pattern is found the scanner \n     advances past the input that matched and returns the string that \n     matched the pattern. If no such pattern is detected then the null is\n     returned and the scanner's position remains unchanged. This method may\n     block waiting for input that matches the pattern.\n\n     A scanner will never search more than horizon code points beyond its\n     current position. Note that a match may be clipped by the horizon;\n     that is, an arbitrary match result may have been different if the \n     horizon had been larger. The scanner treats the horizon as a \n     transparent, non-anchoring bound.\n\n     If horizon is 0, then the horizon is ignored and this method continues\n     to search through the input looking for the specified pattern without\n     bound. In this case it may buffer all of the input searching for the \n     pattern.\n\n     If horizon is negative, then an IllegalArgumentException is thrown.\n\n     @param pattern the pattern to scan for \n     @return the text that matched the specified pattern \n     @throws IllegalStateException if this scanner is closed \n     @throws IllegalArgumentException if horizon is negative\n\t */\n\tpublic String findWithinHorizon(Pattern pattern, int horizon) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t/**\n     Attempts to find the next occurrence of a pattern constructed from the \n     specified string, ignoring delimiters.\n\n     An invocation of this method of the form findWithinHorizon(pattern) \n     behaves in exactly the same way as the invocation \n     findWithinHorizon(Pattern.compile(pattern, horizon)).\n\n     @param pattern a string specifying the pattern to search for \n     @return the text that matched the specified pattern \n     @throws IllegalStateException if this scanner is closed \n     @throws IllegalArgumentException if horizon is negative\n\t */\n\tpublic String findWithinHorizon(String pattern, int horizon) {\n\t\treturn findWithinHorizon(Pattern.compile(pattern), horizon);\n\t}\n\n\t/**\n     Attempts to find the next occurrence of the specified pattern ignoring \n     delimiters. If the pattern is found before the next line separator, the\n     scanner advances past the input that matched and returns the string that\n     matched the pattern. If no such pattern is detected in the input up to \n     the next line separator, then null is returned and the scanner's position\n     is unchanged. This method may block waiting for input that matches the \n     pattern.\n\n     Since this method continues to search through the input looking for the \n     specified pattern, it may buffer all of the input searching for the \n     desired token if no line separators are present.\n\n     @param pattern the pattern to scan for \n     @return the text that matched the specified pattern \n     @throws IllegalStateException - if this scanner is closed\n\t */\n\tpublic String findInLine(Pattern pattern) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t/**\n     Attempts to find the next occurrence of a pattern constructed from the \n     specified string, ignoring delimiters.\n\n     An invocation of this method of the form findInLine(pattern) behaves in \n     exactly the same way as the invocation findInLine(Pattern.compile(pattern)).\n\n     @param pattern a string specifying the pattern to search for \n     @return the text that matched the specified pattern \n     @throws IllegalStateException if this scanner is closed\n\t */\n\tpublic String findInLine(String pattern) {\n\t\treturn findInLine(Pattern.compile(pattern));\n\t}\n\n\t/**\n     Returns true if this scanner has another token in its input. This method \n     may block while waiting for input to scan. The scanner does not advance \n     past any input.\n\n     @return true if and only if this scanner has another token\n     @throws IllegalStateException if this scanner is closed\n\t */\n\tpublic boolean hasNext() {\n\t\tif (DEBUG) System.out.println(\"    Scanner.hasNext()\");\n\t\ttry {\n\t\t\tnext();\n\t\t\treturn true;\n\t\t} catch (NoSuchElementException nsee) {\n\t\t\treturn false;\n\t\t} finally {\n\t\t\t_undoNext();\n\t\t}\n\t}\n\n\t/**\n     Returns true if the next complete token matches the specified pattern.\n     A complete token is prefixed and postfixed by input that matches\n     the delimiter pattern. This method may block while waiting for input.\n     The scanner does not advance past any input.\n\n     @param pattern the pattern to scan for\n     @return true if and only if this scanner has another token matching\n             the specified pattern\n     @throws IllegalStateException if this scanner is closed\n\t */\n\tpublic boolean hasNext(Pattern pattern) {\n\t\t// temporarily use this pattern as delimiter, search, then put it back\n\t\tPattern oldDelimiter = this.delimiter();\n\t\tuseDelimiter(pattern);\n\t\tboolean result = hasNext();\n\t\tuseDelimiter(oldDelimiter);\n\t\treturn result;\n\t}\n\n\t/**\n     Returns the next token if it matches the pattern constructed from the \n     specified string.  If the match is successful, the scanner advances \n     past the input that matched the pattern.\n\n     An invocation of this method of the form next(pattern)\n     behaves in exactly the same way as the invocation \n     next(Pattern.compile(pattern)).\n\n     @param pattern a string specifying the pattern to scan\n     @return the next token\n     @throws NoSuchElementException if no such tokens are available\n     @throws IllegalStateException if this scanner is closed\n\t */\n\tpublic boolean hasNext(String pattern) {\n\t\treturn hasNext(Pattern.compile(pattern));\n\t}\n\n\t/**\n     Returns true if the next token in this scanner's input can be interpreted\n     as a BigDecimal using the nextBigDecimal() method. The scanner does not \n     advance past any input.\n\n     @return true if and only if this scanner's next token is a valid BigDecimal\n     @throws IllegalStateException if this scanner is closed\n\t */\n\tpublic boolean hasNextBigDecimal() {\n\t\ttry {\n\t\t\tnextBigDecimal();\n\t\t\treturn true;\n\t\t} catch (NoSuchElementException nsee) {\n\t\t\treturn false;\n\t\t} finally {\n\t\t\t_undoNext();\n\t\t}\n\t}\n\n\t/**\n     Returns true if the next token in this scanner's input can be interpreted\n     as a BigInteger in the default radix using the nextBigInteger() method. \n     The scanner does not advance past any input.\n\n     @return true if and only if this scanner's next token is a valid BigInteger \n     @throws IllegalStateException if this scanner is closed\n\t */\n\tpublic boolean hasNextBigInteger() {\n\t\treturn hasNextBigInteger(m_radix);\n\t}\n\n\t/**\n     Returns true if the next token in this scanner's input can be interpreted as\n     a BigInteger in the specified radix using the nextBigInteger() method. The \n     scanner does not advance past any input.\n\n     @param radix the radix used to interpret the token as an integer \n     @return true if and only if this scanner's next token is a valid BigInteger \n     @throws IllegalStateException if this scanner is closed\n\t */\n\tpublic boolean hasNextBigInteger(int radix) {\n\t\ttry {\n\t\t\tnextBigInteger(radix);\n\t\t\treturn true;\n\t\t} catch (NoSuchElementException nsee) {\n\t\t\treturn false;\n\t\t} finally {\n\t\t\t_undoNext();\n\t\t}\n\t}\n\n\t/**\n     Returns true if the next token in this scanner's input can be interpreted as\n     a boolean value. The scanner does not advance past the input that matched.\n\n     @return true if and only if this scanner's next token is a valid boolean value \n     @throws IllegalStateException if this scanner is closed\n\t */\n\tpublic boolean hasNextBoolean() {\n\t\ttry {\n\t\t\tnextBoolean();\n\t\t\treturn true;\n\t\t} catch (NoSuchElementException nsee) {\n\t\t\treturn false;\n\t\t} finally {\n\t\t\t_undoNext();\n\t\t}\n\t}\n\n\t/**\n     Returns true if the next token in this scanner's input can be interpreted as \n     a byte value in the default radix using the nextByte() method. The scanner \n     does not advance past any input.\n\n     @return true if and only if this scanner's next token is a valid byte value \n     @throws IllegalStateException if this scanner is closed\n\t */\n\tpublic boolean hasNextByte() {\n\t\treturn hasNextByte(m_radix);\n\t}\n\n\t/**\n     Returns true if the next token in this scanner's input can be interpreted as\n     a byte value in the specified radix using the nextByte() method. The scanner \n     does not advance past any input.\n\n     @param radix the radix used to interpret the token as a byte value \n     @return true if and only if this scanner's next token is a valid byte value \n     @throws IllegalStateException if this scanner is closed\n\t */\n\tpublic boolean hasNextByte(int radix) {\n\t\ttry {\n\t\t\tnextByte(radix);\n\t\t\treturn true;\n\t\t} catch (NoSuchElementException nsee) {\n\t\t\treturn false;\n\t\t} finally {\n\t\t\t_undoNext();\n\t\t}\n\t}\n\n\t/**\n     Returns true if the next token in this scanner's input can be interpreted as\n     a double value using the nextDouble() method. The scanner does not advance \n     past any input.\n\n     @return true if and only if this scanner's next token is a valid double value \n     @throws IllegalStateException if this scanner is closed\n\t */\n\tpublic boolean hasNextDouble() {\n\t\tif (DEBUG) System.out.println(\"    Scanner.hasNextDouble()\");\n\t\ttry {\n\t\t\tnextDouble();\n\t\t\treturn true;\n\t\t} catch (NoSuchElementException nsee) {\n\t\t\treturn false;\n\t\t} finally {\n\t\t\t_undoNext();\n\t\t}\n\t}\n\n\t/**\n     Returns true if the next token in this scanner's input can be interpreted as\n     a float value using the nextFloat() method. The scanner does not advance past \n     any input.\n\n     @return true if and only if this scanner's next token is a valid float value \n     @throws IllegalStateException if this scanner is closed\n\t */\n\tpublic boolean hasNextFloat() {\n\t\ttry {\n\t\t\tnextFloat();\n\t\t\treturn true;\n\t\t} catch (NoSuchElementException nsee) {\n\t\t\treturn false;\n\t\t} finally {\n\t\t\t_undoNext();\n\t\t}\n\t}\n\n\t/**\n     Returns true if the next token in this scanner's input can be interpreted as\n     an int value in the default radix using the nextInt() method. The scanner\n     does not advance past any input.\n\n     @return true if and only if this scanner's next token is a valid int value \n     @throws IllegalStateException if this scanner is closed\n\t */\n\tpublic boolean hasNextInt() {\n\t\tif (DEBUG) System.out.println(\"    Scanner.hasNextInt()\");\n\t\treturn hasNextInt(m_radix);\n\t}\n\n\t/**\n     Returns true if the next token in this scanner's input can be interpreted as \n     an int value in the specified radix using the nextInt() method. The scanner \n     does not advance past any input.\n\n     @param radix the radix used to interpret the token as an int value \n     @return true if and only if this scanner's next token is a valid int value \n     @throws IllegalStateException if this scanner is closed\n\t */\n\tpublic boolean hasNextInt(int radix) {\n\t\ttry {\n\t\t\tnextInt(radix);\n\t\t\treturn true;\n\t\t} catch (NoSuchElementException nsee) {\n\t\t\treturn false;\n\t\t} finally {\n\t\t\t_undoNext();\n\t\t}\n\t}\n\n\t/**\n     Returns true if there is another line in the input of this scanner. This\n     method may block while waiting for input. The scanner does not advance past \n     any input.\n\n     @return true if and only if this scanner has another line of input \n     @throws IllegalStateException if this scanner is closed\n\t */\n\tpublic boolean hasNextLine() {\n\t\tif (DEBUG) System.out.println(\"    Scanner.hasNextLine()\");\n\t\treturn _hasNextChar();\n\t}\n\n\t/**\n     Returns true if the next token in this scanner's input can be interpreted as\n     a long value in the default radix using the nextLong() method. The scanner\n     does not advance past any input.\n\n     @return true if and only if this scanner's next token is a valid long value \n     @throws IllegalStateException \u001cif this scanner is closed\n\t */\n\tpublic boolean hasNextLong() {\n\t\treturn hasNextLong(m_radix);\n\t}\n\n\t/**\n     Returns true if the next token in this scanner's input can be interpreted as\n     a long value in the specified radix using the nextLong() method. The scanner\n     does not advance past any input.\n\n     @return true if and only if this scanner's next token is a valid long value \n     @throws IllegalStateException \u001cif this scanner is closed\n\t */\n\tpublic boolean hasNextLong(int radix) {\n\t\ttry {\n\t\t\tnextLong(radix);\n\t\t\treturn true;\n\t\t} catch (NoSuchElementException nsee) {\n\t\t\treturn false;\n\t\t} finally {\n\t\t\t_undoNext();\n\t\t}\n\t}\n\n\t/**\n     Returns true if the next token in this scanner's input can be interpreted as \n     a short value in the default radix using the nextShort() method. The scanner \n     does not advance past any input.\n\n     @return true if and only if this scanner's next token is a valid short value\n     in the default radix \n     @throws IllegalStateException if this scanner is closed\n\t */\n\tpublic boolean hasNextShort() {\n\t\treturn hasNextShort(m_radix);\n\t}\n\n\t/**\n     Returns true if the next token in this scanner's input can be interpreted as\n     a short value in the specified radix using the nextShort() method. The scanner\n     does not advance past any input.\n\n     @param radix the radix used to interpret the token as a short value \n     @return true if and only if this scanner's next token is a valid short value\n     in the specified radix \n     @throws IllegalStateException if this scanner is closed\n\t */\n\tpublic boolean hasNextShort(int radix) {\n\t\ttry {\n\t\t\tnextShort(radix);\n\t\t\treturn true;\n\t\t} catch (NoSuchElementException nsee) {\n\t\t\treturn false;\n\t\t} finally {\n\t\t\t_undoNext();\n\t\t}\n\t}\n\n\t/**\n     Returns the IOException last thrown by this Scanner. This method returns\n     null if no such exception exists.\n\n     @return the last exception thrown by this scanner's readable\n\t */\n\tpublic IOException ioException() {\n\t\treturn m_ioException;\n\t}\n\n\t/**\n     Returns this scanner's locale.\n\n     A scanner's locale affects many elements of its default primitive matching regular expressions.\n\n     @return this scanner's locale\n\t */\n\tpublic Locale locale() {\n\t\treturn this.m_locale;\n\t}\n\n\t/**\n     Returns the match result of the last scanning operation performed by this\n     scanner. This method throws IllegalStateException if no match has been \n     performed, or if the last match was not successful.\n\n     The various next methods of Scanner make a match result available if they\n     complete without throwing an exception. For instance, after an invocation\n     of the nextInt() method that returned an int, this method returns a\n     MatchResult for the search of the Integer regular expression defined\n     above. Similarly the findInLine(java.lang.String),\n     findWithinHorizon(java.lang.String, int), and skip(java.util.regex.Pattern)\n     methods will make a match available if they succeed.\n\n     @return a match result for the last match operation \n     @throws IllegalStateException If no match result is available\n\t */\n\t/*\n     // commented out because MatchResult does not exist in Java 1.4\n     public MatchResult match() {\n         throw new UnsupportedOperationException();\n     }\n\t */\n\n\t/**\n     Finds and returns the next complete token from this scanner. A complete \n     token is preceded and followed by input that matches the delimiter pattern.\n     This method may block while waiting for input to scan, even if a previous \n     invocation of hasNext() returned true.\n\n     @return the next token\n     @throws NoSuchElementException if the input is exhausted \n     @throws IllegalStateException if this scanner is closed\n\t */\n\tpublic String next() {\n\t\tif (DEBUG) System.out.println(\"    Scanner.next()\");\n\n\t\t// wipe buffer of characters read by previous call to next()\n\t\tm_previousNextBuffer.setLength(0);\n\n\t\ttry {\n\t\t\t// we will match either DELIM TOKEN DELIM\n\t\t\t// or                   TOKEN DELIM\n\t\t\tString returnValue = null;\n\t\t\tString peekStr = null;\n\t\t\twhile (true) {\n\t\t\t\tboolean endOfInput = !_hasNextChar();\n\t\t\t\tpeekStr = m_previousNextBuffer.toString();\n\t\t\t\tif (!endOfInput) {\n\t\t\t\t\tpeekStr += (char) _peek();\n\t\t\t\t}\n\n\t\t\t\tMatcher matcher = m_delimiter.matcher(peekStr);\n\t\t\t\tif (matcher.find()) {\n\t\t\t\t\t// determine whether we have a leading delimiter\n\t\t\t\t\tboolean leadingDelim = (matcher.start() == 0);\n\t\t\t\t\tif (leadingDelim) {\n\t\t\t\t\t\t// must also have a trailing delimiter or end-of-input to stop reading\n\t\t\t\t\t\tint leadingEnd = matcher.end();\n\t\t\t\t\t\tif (matcher.find()) {\n\t\t\t\t\t\t\tif (endOfInput || matcher.end() <= peekStr.length()) {\n\t\t\t\t\t\t\t\t// we have a leading AND trailing delimiter; we can stop now\n\t\t\t\t\t\t\t\treturnValue = peekStr.substring(leadingEnd, matcher.start());\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (endOfInput) {\n\t\t\t\t\t\t\t// returnValue = peekStr.substring(leadingEnd);\n\t\t\t\t\t\t\tif (m_delimiter.matcher(peekStr).matches()) {\n\t\t\t\t\t\t\t\t// empty\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturnValue = peekStr.substring(leadingEnd);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// no leading delimiter\n\t\t\t\t\t\tif (endOfInput || matcher.end() <= peekStr.length()) {\n\t\t\t\t\t\t\t// we have no leading delim, but we (greedily) found a trailing one; we can stop\n\t\t\t\t\t\t\treturnValue = peekStr.substring(0, matcher.start());\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (endOfInput && peekStr.length() > 0) {\n\t\t\t\t\t// No delimiter remains, but we've reached the end of the input\n\t\t\t\t\t// and have a token to process.\n\t\t\t\t\treturnValue = peekStr;\n\t\t\t\t}\n\n\t\t\t\tif (endOfInput) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tchar chr = (char) _nextChar();\n\t\t\t\tm_previousNextBuffer.append(chr);\n\t\t\t}\n\n\n\n\t\t\tif (returnValue == null) {\n\t\t\t\tthrow _getNoSuchElementException(NO_TOKEN_MESSAGE);\n\t\t\t}\n\n\t\t\t// possibly echo the value typed by the user;\n\t\t\t// also peeks and pre-echos a trailing space or newline\n\t\t\t// (this doesn't quite work if the user types multiple inputs on one line\n\t\t\t// separated by more than one space, I think... oh well)\n\t\t\tif (m_echoInput && !_inHasNextMethod()) {\n\t\t\t\tString toPrint = returnValue;\n\t\t\t\tchar peek = peekStr.charAt(peekStr.length() - 1);\n\t\t\t\tif (m_delimiter == DEFAULT_DELIMITER && Character.isWhitespace(peek)) {\n\t\t\t\t\ttoPrint += peek;\n\t\t\t\t}\n\t\t\t\tSystem.out.print(toPrint);\n\t\t\t}\n\n\t\t\treturn returnValue;\n\n\t\t} catch (IOException ioe) {\n\t\t\t_setIoException(ioe);\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t/**\n     Returns the next token if it matches the specified pattern. This \n     method may block while waiting for input to scan, even if a previous\n     invocation of hasNext(Pattern) returned true. \n     If the match is successful, the scanner advances past the input that \n     matched the pattern.\n\n     @param pattern the pattern to scan for\n     @return the next token\n     @throws NoSuchElementException if no more tokens are available\n     @throws IllegalStateException if this scanner is closed\n\t */\n\tpublic String next(Pattern pattern) {\n\t\tPattern oldDelimiter = this.delimiter();\n\t\tuseDelimiter(pattern);\n\t\tString token = next();\n\t\tuseDelimiter(oldDelimiter);\n\t\treturn token;\n\t}\n\n\t/**\n     Returns the next token if it matches the pattern constructed from the \n     specified string.  If the match is successful, the scanner advances \n     past the input that matched the pattern.\n\n     An invocation of this method of the form next(pattern)\n     behaves in exactly the same way as the invocation \n     next(Pattern.compile(pattern)).\n\n     @param pattern a string specifying the pattern to scan\n     @return the next token\n     @throws NoSuchElementException if no such tokens are available\n     @throws IllegalStateException if this scanner is closed\n\t */\n\tpublic String next(String pattern) {\n\t\treturn next(Pattern.compile(pattern));\n\t}\n\n\t/**\n     Scans the next token of the input as a BigDecimal.\n\n     @return the BigDecimal scanned from the input\n     @throws NoSuchElementException if the input is exhausted \n     @throws IllegalStateException if this scanner is closed\n\t */\n\tpublic BigDecimal nextBigDecimal() {\n\t\ttry {\n\t\t\treturn new BigDecimal(next());\n\t\t} catch (NumberFormatException nfe) {\n\t\t\tthrow _getNoSuchElementException(BigDecimal.class);\n\t\t}\n\t}\n\n\t/**\n     Scans the next token of the input as a BigInteger.\n\n     @return the BigInteger scanned from the input\n     @throws NoSuchElementException if the input is exhausted \n     @throws IllegalStateException if this scanner is closed\n\t */\n\tpublic BigInteger nextBigInteger() {\n\t\treturn nextBigInteger(m_radix);\n\t}\n\n\t/**\n     Scans the next token of the input as a BigInteger.\n\n     @param radix the radix used to interpret the token\n     @return the BigInteger scanned from the input\n     @throws NoSuchElementException if the input is exhausted \n     @throws IllegalStateException if this scanner is closed\n\t */\n\tpublic BigInteger nextBigInteger(int radix) {\n\t\ttry {\n\t\t\treturn new BigInteger(next(), radix);\n\t\t} catch (NumberFormatException nfe) {\n\t\t\tthrow _getNoSuchElementException(BigInteger.class);\n\t\t}\n\t}\n\n\t/**\n     Scans the next token of the input into a boolean value and returns that\n     value. This method will throw FormatException if the next token cannot \n     be translated into a valid boolean value. If the match is successful, \n     the scanner advances past the input that matched.\n\n     @return the boolean scanned from the input\n     @throws NoSuchElementException if the input is exhausted \n     @throws IllegalStateException if this scanner is closed\n\t */\n\tpublic boolean nextBoolean() {\n\t\t// Boolean.parseBoolean doesn't do what we want here; it assumes all \n\t\t// strings other than \"true\" are false rather than invalid\n\t\tString token = next();\n\t\tif (token.equalsIgnoreCase(TRUE))\n\t\t\treturn true;\n\t\telse if (token.equalsIgnoreCase(FALSE))\n\t\t\treturn false;\n\t\telse\n\t\t\tthrow _getNoSuchElementException(Boolean.TYPE);\n\t}\n\n\t/**\n     Scans the next token of the input as a byte.\n\n     <p>\n     An invocation of this method of the form nextByte() behaves in exactly the\n     same way as the invocation nextByte(radix), where radix is the default radix\n     of this scanner.\n\n     @return the byte scanned from the input \n     @throws NoSuchElementException if input is exhausted \n     @throws IllegalStateException if this scanner is closed\n\t */\n\tpublic byte nextByte() {\n\t\treturn nextByte(m_radix);\n\t}\n\n\t/**\n     Scans the next token of the input as a byte.\n\n     @param radix the radix used to interpret the token as a byte value \n     @return the byte scanned from the input \n     @throws InputMismatchException if the next token does not match the \n     Integer regular expression, or is out of range \n     @throws NoSuchElementException if input is exhausted \n     @throws IllegalStateException if this scanner is closed\n\t */\n\tpublic byte nextByte(int radix) {\n\t\ttry {\n\t\t\treturn Byte.parseByte(next());\n\t\t} catch (NumberFormatException nfe) {\n\t\t\tthrow _getNoSuchElementException(Byte.TYPE);\n\t\t}\n\t}\n\n\t/**\n     Scans the next token of the input as a double. This method will throw\n     NumberFormatException if the next token cannot be translated into a valid\n     double value. If the translation is successful, the scanner advances past\n     the input that matched.\n\n     @return the double scanned from the input\n     @throws NoSuchElementException if the input is exhausted \n     @throws IllegalStateException if this scanner is closed\n\t */\n\tpublic double nextDouble() {\n\t\tif (DEBUG) System.out.println(\"    Scanner.nextDouble()\");\n\t\ttry {\n\t\t\treturn Double.parseDouble(next());\n\t\t} catch (NumberFormatException nfe) {\n\t\t\tthrow _getNoSuchElementException(Double.TYPE);\n\t\t}\n\t}\n\n\t/**\n     Scans the next token of the input as a float. This method will throw\n     NumberFormatException if the next token cannot be translated into a valid\n     float value. If the translation is successful, the scanner advances past\n     the input that matched.\n\n     @return the float scanned from the input\n     @throws NoSuchElementException if the input is exhausted \n     @throws IllegalStateException if this scanner is closed\n\t */\n\tpublic float nextFloat() {\n\t\ttry {\n\t\t\treturn Float.parseFloat(next());\n\t\t} catch (NumberFormatException nfe) {\n\t\t\tthrow _getNoSuchElementException(Float.TYPE);\n\t\t}\n\t}\n\n\t/**\n     Scans the next token of the input as an int. This method will throw\n     NumberFormatException if the next token cannot be translated into a valid\n     int value. If the translation is successful, the scanner advances past the\n     input that matched.\n\n     @return the int scanned from the input\n     @throws NoSuchElementException if the input is exhausted \n     @throws IllegalStateException if this scanner is closed\n\t */\n\tpublic int nextInt() {\n\t\tif (DEBUG) System.out.println(\"    Scanner.nextInt()\");\n\t\treturn nextInt(m_radix);\n\t}\n\n\t/**\n     Scans the next token of the input as an int. This method will throw\n     FormatException if the next token cannot be translated into a valid \n     int value. If the translation is successful, the scanner advances past the\n     input that matched.\n\n     @param radix the radix used to interpret the token as an int value\n     @return the int scanned from the input\n     @throws NoSuchElementException if the input is exhausted \n     @throws IllegalStateException if this scanner is closed\n\t */\n\tpublic int nextInt(int radix) {\n\t\ttry {\n\t\t\treturn Integer.parseInt(next(), radix);\n\t\t} catch (NumberFormatException nfe) {\n\t\t\tthrow _getNoSuchElementException(Integer.TYPE);\n\t\t}\n\t}\n\n\t/**\n     Advances this scanner past the current line and returns the input that was\n     skipped. This method returns the rest of the current line, excluding any\n     line separator at the end. The position is set to the beginning of the \n     next line.\n\n     Since this method continues to search through the input looking for a line\n     separator, it may buffer all of the input searching for the line to skip\n     if no line separators are present. \n\n     @return the line that was skipped\n     @throws NoSuchElementException if the input is exhausted \n     @throws IllegalStateException if this scanner is closed\n\t */\n\tpublic String nextLine() {\n\t\tif (DEBUG) System.out.println(\"    Scanner.nextLine()\");\n\t\tif (!hasNextLine())\n\t\t\tthrow _getNoSuchElementException(NO_TOKEN_MESSAGE);\n\n\t\tStringBuffer result = new StringBuffer();\n\t\twhile (_hasNextChar()) {\n\t\t\tchar next = (char)_nextChar();\n\n\t\t\t// don't put the newline separator into the result\n\t\t\tif (next == '\\n')\n\t\t\t\tbreak;\n\t\t\telse if (next == '\\r')\n\t\t\t\tcontinue;\n\n\t\t\tresult.append(next);\n\t\t}\n\n\t\tString returnValue = result.toString();\n\t\tif (m_echoInput) {\n\t\t\tm_echoStream.println(returnValue);\n\t\t}\n\t\treturn returnValue;\n\t}\n\n\t/**\n     Scans the next token of the input as a long. This method will throw\n     NumberFormatException if the next token cannot be translated into a valid\n     long value. If the translation is successful, the scanner advances past the\n     input that matched.\n\n     @return the long scanned from the input\n     @throws NoSuchElementException if the input is exhausted \n     @throws IllegalStateException if this scanner is closed\n\t */\n\tpublic long nextLong() {\n\t\treturn nextLong(m_radix);\n\t}\n\n\t/**\n     Scans the next token of the input as a long. This method will throw\n     FormatException if the next token cannot be translated into a valid \n     long value. If the translation is successful, the scanner advances past the\n     input that matched.\n\n     @param radix the radix used to interpret the token as a long value\n     @return the long scanned from the input\n     @throws NoSuchElementException if the input is exhausted \n     @throws IllegalStateException if this scanner is closed\n\t */\n\tpublic long nextLong(int radix) {\n\t\ttry {\n\t\t\treturn Long.parseLong(next(), radix);\n\t\t} catch (NumberFormatException nfe) {\n\t\t\tthrow _getNoSuchElementException(Long.TYPE);\n\t\t}\n\t}\n\n\t/**\n     Scans the next token of the input as a short. This method will throw\n     NumberFormatException if the next token cannot be translated into a valid\n     short value. If the translation is successful, the scanner advances past the\n     input that matched.\n\n     @return the short scanned from the input\n     @throws NoSuchElementException if the input is exhausted \n     @throws IllegalStateException if this scanner is closed\n\t */\n\tpublic short nextShort() {\n\t\treturn nextShort(m_radix);\n\t}\n\n\t/**\n     Scans the next token of the input as a short. This method will throw\n     FormatException if the next token cannot be translated into a valid \n     short value. If the translation is successful, the scanner advances past the\n     input that matched.\n\n     @param radix the radix used to interpret the token as a short value\n     @return the long scanned from the input\n     @throws NoSuchElementException if the input is exhausted \n     @throws IllegalStateException if this scanner is closed\n\t */\n\tpublic short nextShort(int radix) {\n\t\ttry {\n\t\t\treturn Short.parseShort(next(), radix);\n\t\t} catch (NumberFormatException nfe) {\n\t\t\tthrow _getNoSuchElementException(Short.TYPE);\n\t\t}\n\t}\n\n\t/**\n     Returns this scanner's default radix.\n\n     <p>\n     A scanner's radix affects elements of its default number matching \n     regular expressions.\n\n     @return the default radix of this scanner\n     @throws NoSuchElementException if the input is exhausted \n     @throws IllegalStateException if this scanner is closed\n\t */\n\tpublic int radix() {\n\t\treturn m_radix;\n\t}\n\n\t/**\n     The remove operation is not supported by this implementation of Iterator.\n\n     @throws UnsupportedOperationException if this method is invoked.\n\t */\n\tpublic void remove() {\n\t\tthrow new UnsupportedOperationException(REMOVE_EXCEPTION_MESSAGE);\n\t}\n\n\tpublic void setEchoForce(boolean value) {\n\t\tm_echoInput = value;\n\t}\n\n\tpublic void setEchoStream(java.io.PrintStream stream) {\n\t\tm_echoStream = stream;\n\t}\n\n\t/**\n     Skips input that matches the specified pattern, ignoring delimiters. This\n     method will skip input if an anchored match of the specified pattern \n     succeeds.\n\n     If a match to the specified pattern is not found at the current position,\n     then no input is skipped and a NoSuchElementException is thrown.\n\n     Since this method seeks to match the specified pattern starting at the\n     scanner's current position, patterns that can match a lot of input (\".*\",\n     for example) may cause the scanner to buffer a large amount of input.\n\n     Note that it is possible to skip something without risking a \n     NoSuchElementException by using a pattern that can match nothing, e.g.,\n     sc.skip(\"[ \\t]*\").\n\n     @param pattern a string specifying the pattern to skip over \n     @return this scanner \n     @throws NoSuchElementException if the specified pattern is not found \n     @throws IllegalStateException if this scanner is closed\n\t */\n\tpublic SimpleScanner skip(Pattern pattern) {\n\t\tm_previousNextBuffer.setLength(0);\n\t\ttry {\n\t\t\twhile (_hasNextChar()) {\n\t\t\t\tString peekStr = m_previousNextBuffer.toString() + (char)_peek();\n\t\t\t\tMatcher matcher = pattern.matcher(peekStr);\n\t\t\t\tif (matcher.find() && matcher.start() == 0 && matcher.end() != peekStr.length()) {\n\t\t\t\t\t// we have seen the end of the pattern; we can stop now\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t\tchar chr = (char)_nextChar();\n\t\t\t\tm_previousNextBuffer.append(chr);\n\t\t\t}\n\n\t\t\tthrow _getNoSuchElementException(NO_TOKEN_MESSAGE);\n\n\t\t} catch (IOException ioe) {\n\t\t\t_setIoException(ioe);\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t/**\n     Skips input that matches a pattern constructed from the specified string.\n\n     An invocation of this method of the form skip(pattern) behaves in exactly\n     the same way as the invocation skip(Pattern.compile(pattern)).\n\n     @param pattern a string specifying the pattern to skip over \n     @return this scanner \n     @throws IllegalStateException if this scanner is closed\n\t */\n\tpublic SimpleScanner skip(String pattern) {\n\t\treturn skip(Pattern.compile(pattern));\n\t}\n\n\t/**\n     Returns the string representation of this Scanner. The string \n     representation of a Scanner contains information that may be useful \n     for debugging. The exact format is unspecified.\n\n     @return The string representation of this scanner\n\t */\n\tpublic String toString() {\n\t\treturn this.getClass().getName();\n\t}\n\n\t/**\n     Sets this scanner's delimiting pattern to the specified pattern.\n\n     @param pattern A delimiting pattern\n     @return this scanner\n\t */\n\tpublic SimpleScanner useDelimiter(Pattern pattern) {\n\t\tif (DEBUG) System.out.println(\"    Scanner.useDelimeter(\" + pattern + \")\");\n\t\tif (pattern == null) {\n\t\t\tthrow new NullPointerException();\n\t\t}\n\n\t\tthis.m_delimiter = pattern;\n\t\treturn this;\n\t}\n\n\t/**\n     Sets this scanner's delimiting pattern to a pattern constructed from the specified String.\n\n     An invocation of this method of the form useDelimiter(pattern) behaves in exactly the same way as the invocation hasDelimiter(Pattern.compile(pattern)). \n\n     @param pattern A string specifying a delimiting pattern\n     @return this scanner\n\t */\n\tpublic SimpleScanner useDelimiter(String pattern) {\n\t\treturn this.useDelimiter(Pattern.compile(pattern));\n\t}\n\n\t/**\n     Sets this scanner's locale to the specified locale.\n\n     A scanner's locale affects many elements of its default primitive matching regular expressions; see localized numbers above.\n\n     @param locale A string specifying the locale to use \n     @return this scanner\n\t */\n\tpublic SimpleScanner useLocale(Locale locale) {\n\t\tthis.m_locale = locale;\n\t\treturn this;\n\t}\n\n\t/**\n     Sets this scanner's default radix to the specified radix.\n\n     <p>\n     A scanner's radix affects elements of its default number matching \n     regular expressions.\n\n     <p>\n     If the radix is less than Character.MIN_RADIX or greater than \n     Character.MAX_RADIX, then an IllegalArgumentException is thrown. \n\n     @throws IllegalArgumentException if radix is out of range\n\t */\n\tpublic SimpleScanner useRadix(int radix) {\n\t\tif (radix < Character.MIN_RADIX || radix > Character.MAX_RADIX)\n\t\t\tthrow new IllegalArgumentException();\n\n\t\tthis.m_radix = radix;\n\t\treturn this;\n\t}\n\n\t// common function to make sure input has not been exhausted\n\tprivate boolean _hasNextChar() {\n\t\ttry {\n\t\t\tint chr = _nextChar();\n\t\t\tif (chr == EOF)\n\t\t\t\treturn false;\n\n\t\t\t_unread(chr);\n\t\t\treturn true;\n\t\t} catch (IOException ioe) {\n\t\t\t_setIoException(ioe);\n\t\t\treturn false;\n\t\t} catch (NoSuchElementException nsee) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t// advances one character in the input\n\tprivate int _nextChar() {\n\t\tif (m_closed)\n\t\t\tthrow new IllegalStateException();\n\n\t\ttry {\n\t\t\treturn m_reader.read();\n\t\t} catch (IOException ioe) {\n\t\t\t_setIoException(ioe);\n\t\t\treturn EOF;\n\t\t}\n\t}\n\n\t// returns next character in the input without advancing the reader\n\tprivate int _peek() throws IOException {\n\t\tint peekChar = _nextChar();\n\t\t_unread(peekChar);\n\t\treturn peekChar;\n\t}\n\n\tprivate NoSuchElementException _getNoSuchElementException(String message) {\n\t\tif (m_showLineNumbers) {\n\t\t\tint lineNum = m_lnReader.getLineNumber();\n\t\t\tmessage += NEAR_LINE_MESSAGE + lineNum;\n\t\t}\n\t\treturn new NoSuchElementException(message);\n\t}\n\n\tprivate NoSuchElementException _getNoSuchElementException(Class<?> clazz) {\n\t\tString message = \"\";\n\t\tif (m_showLineNumbers) {\n\t\t\tint lineNum = m_lnReader.getLineNumber();\n\t\t\tmessage += NEAR_LINE_MESSAGE + lineNum;\n\t\t}\n\n\t\tmessage += \"token '\" + m_previousNextBuffer + \n\t\t\t\t\"' cannot be interpreted as type \" + clazz.getName();\n\t\treturn new NoSuchElementException(message);\n\t}\n\n\t// sets internal io exception\n\tprivate void _setIoException(IOException ioe) {\n\t\tm_ioException = ioe;\n\t\tif (m_echoExceptions) {\n\t\t\tSystem.err.println(\"Exception thrown by Scanner reading from \" + m_source);\n\t\t\tioe.printStackTrace();\n\t\t}\n\n\t\t// BUGFIX: if there's a failure reading from the source, throw out any cached readers\n\t\tclearCache();\n\t}\n\n\t// unreads buffer of characters that were consumed by\n\t// the last call to next()\n\tprivate void _undoNext() {\n\t\tif (m_previousNextBuffer.length() > 0) {\n\t\t\ttry {\n\t\t\t\tm_reader.unread(m_previousNextBuffer.toString().toCharArray());\n\t\t\t} catch (IOException ioe) {\n\t\t\t\t_setIoException(ioe);\n\t\t\t}\n\t\t}\n\t}\n\n\t// put given value back into the input stream\n\tprivate void _unread(int chr) throws IOException {\n\t\tm_reader.unread(chr);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/io/StandardConsoleModel.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2017/09/28\n * - made getText() return all output including past clear()ed output\n * @version 2016/04/15\n * - bugfix: removed debug println on history up/down (oops)\n * @version 2015/06/19\n * - added support for up/down for history\n */\n\npackage acm.io;\n\nimport acm.program.*;\nimport acm.util.*;\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.io.*;\nimport java.util.*;\nimport java.util.List;\nimport javax.swing.*;\nimport javax.swing.text.*;\n\npublic class StandardConsoleModel implements KeyListener, FocusListener, ConsoleModel {\n\t// need to keep in sync with string in C++ lib console.cpp clearConsole() function\n\tprivate static final String CONSOLE_CLEARED_MESSAGE = \"==================== (console cleared) ====================\\n\";\n\t\n\tprivate static final int PRINT_MARGIN = 36;\n\tprivate static final int MAX_PREVIOUS_INPUT_LINES = 100;\n\tprivate ActionListener actionListener;\n\tprivate ConsoleOutputMonitor outputMonitor;\n\tprivate ConsoleInputMonitor inputMonitor;\n\tprivate BufferedReader inputScript;\n\tprivate CharacterQueue buffer;\n\tprivate SimpleAttributeSet outputAttributes;\n\tprivate SimpleAttributeSet inputAttributes;\n\tprivate SimpleAttributeSet errorAttributes;\n\tprivate JScrollPane scrollPane;\n\tprivate JTextPane textPane;\n\tprivate Document document;\n\tprivate String lineSeparator;\n\tprivate int base;\n\tprivate boolean hasFocus;\n\tprivate IOConsole console;\n\tprivate ProgramMenuBar menuBar;\n\tprivate Color outputColor = Color.BLACK;\n\tprivate List<String> previousInputLines;\n\tprivate int previousInputLinesIndex = 0;\n\tprivate StringBuilder allOutput = new StringBuilder();   // history of output, survives clear()\n\n\tpublic StandardConsoleModel() {\n\t\tthis.outputMonitor = new ConsoleOutputMonitor(this);\n\t\tthis.inputMonitor = new ConsoleInputMonitor(this);\n\t\tthis.scrollPane = new JScrollPane(22, 32);\n\t\tthis.textPane = new JTextPane();\n\t\tthis.textPane.addKeyListener(this);\n\t\tthis.textPane.addFocusListener(this);\n\t\tthis.scrollPane.setViewportView(this.textPane);\n\t\tthis.document = this.textPane.getDocument();\n\t\tthis.lineSeparator = System.getProperty(\"line.separator\");\n\t\tthis.outputAttributes = new SimpleAttributeSet();\n\t\tthis.inputAttributes = new SimpleAttributeSet();\n\t\tthis.errorAttributes = new SimpleAttributeSet();\n\t\tthis.buffer = new CharacterQueue();\n\t\tthis.previousInputLines = new ArrayList<String>();\n\t\tthis.base = 0;\n\t}\n\t\n\tpublic JScrollPane getScrollPane() {\n\t\treturn scrollPane;\n\t}\n\n\tpublic void setConsole(IOConsole paramIOConsole) {\n\t\tthis.console = paramIOConsole;\n\t}\n\n\tpublic IOConsole getConsole() {\n\t\treturn this.console;\n\t}\n\n\tpublic void historyDown() {\n\t\tif (previousInputLinesIndex < previousInputLines.size()) {\n\t\t\tpreviousInputLinesIndex++;\n\t\t}\n\t\thistoryUpdate();\n\t}\n\t\n\tpublic void historyUp() {\n\t\tif (previousInputLinesIndex >= 0) {\n\t\t\tpreviousInputLinesIndex--;\n\t\t}\n\t\thistoryUpdate();\n\t}\n\t\n\tprivate void historyUpdate() {\n\t\tString line;\n\t\tif (previousInputLinesIndex >= 0 && previousInputLinesIndex < previousInputLines.size()) {\n\t\t\tline = previousInputLines.get(previousInputLinesIndex);\n\t\t} else {\n\t\t\tline = \"\";\n\t\t}\n\t\t\n\t\t// this.inputMonitor.readLine();\n\t\tthis.delete(this.base, this.getLength());\n\t\tthis.buffer.clear();\n\t\tif (!line.isEmpty()) {\n\t\t\tfor (int i = 0; i < line.length(); i++) {\n\t\t\t\tthis.buffer.enqueue(line.charAt(i));\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic void print(String paramString, int paramInt) {\n\t\tthis.outputMonitor.print(paramString, paramInt);\n\t}\n\t\n\tpublic String readLine() {\n\t\tString line = this.inputMonitor.readLine();\n\t\tif (previousInputLines.size() >= MAX_PREVIOUS_INPUT_LINES) {\n\t\t\tpreviousInputLines.remove(0);\n\t\t}\n\t\tpreviousInputLines.add(line);\n\t\tpreviousInputLinesIndex = previousInputLines.size();\n\t\treturn line;\n\t}\n\n\tpublic void setInputScript(BufferedReader paramBufferedReader) {\n\t\tthis.inputScript = paramBufferedReader;\n\t\tif (this.buffer.isWaiting()) {\n\t\t\ttry {\n\t\t\t\tString str = this.inputScript.readLine();\n\t\t\t\tthis.buffer.enqueue(str + \"\\n\");\n\t\t\t} catch (IOException localIOException) {\n\t\t\t\tthrow new ErrorException(localIOException);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic BufferedReader getInputScript() {\n\t\treturn this.inputScript;\n\t}\n\n\tpublic void clear() {\n\t\t// log the output for possible diffing/comparing later\n\t\tString oldText = this.textPane.getText();\n\t\tthis.allOutput.append(oldText);\n\t\tif (!oldText.endsWith(\"\\n\")) {\n\t\t\tthis.allOutput.append('\\n');\n\t\t}\n\t\tthis.allOutput.append(CONSOLE_CLEARED_MESSAGE);\n\t\t\n\t\tthis.textPane.setText(\"\");\n\t\tthis.base = 0;\n\t\tthis.buffer.clear();\n\t}\n\n\tpublic String getText() {\n\t\treturn allOutput.toString() + this.textPane.getText();\n\t}\n\n\tpublic String getText(int paramInt1, int paramInt2) {\n\t\ttry {\n\t\t\treturn this.document.getText(paramInt1, paramInt2 - paramInt1);\n\t\t} catch (BadLocationException localBadLocationException) {\n\t\t\tthrow new ErrorException(localBadLocationException);\n\t\t}\n\t}\n\n\tpublic int getLength() {\n\t\treturn this.document.getLength();\n\t}\n\n\tpublic JScrollPane getConsolePane() {\n\t\treturn this.scrollPane;\n\t}\n\n\tpublic JTextPane getTextPane() {\n\t\treturn this.textPane;\n\t}\n\n\tpublic void cut() {\n\t\tcopy();\n\t\tdeleteSelection();\n\t}\n\n\tpublic void copy() {\n\t\tthis.textPane.copy();\n\t}\n\n\tpublic void paste() {\n\t\tif (this.textPane.getSelectionEnd() != this.document.getLength()) {\n\t\t\treturn;\n\t\t}\n\t\tint i = deleteSelection();\n\t\tthis.textPane.setSelectionStart(i);\n\t\tthis.textPane.paste();\n\t\tthis.textPane.select(this.document.getLength(),\n\t\t\t\tthis.document.getLength());\n\t\tif ((this.document instanceof DefaultStyledDocument)) {\n\t\t\tDefaultStyledDocument localDefaultStyledDocument = (DefaultStyledDocument) this.document;\n\t\t\tlocalDefaultStyledDocument.setCharacterAttributes(i,\n\t\t\t\t\tthis.textPane.getSelectionEnd() - i, this.inputAttributes,\n\t\t\t\t\ttrue);\n\t\t}\n\t}\n\n\tpublic void selectAll() {\n\t\tthis.textPane.selectAll();\n\t}\n\n\tpublic boolean isPointSelection() {\n\t\treturn this.textPane.getSelectionStart() == this.textPane\n\t\t\t\t.getSelectionEnd();\n\t}\n\n\tpublic void print(PrintJob paramPrintJob) {\n\t\tGraphics localGraphics = paramPrintJob.getGraphics();\n\t\tDimension localDimension = paramPrintJob.getPageDimension();\n\t\tFontMetrics localFontMetrics = this.textPane\n\t\t\t\t.getFontMetrics(this.textPane.getFont());\n\t\tint i = localFontMetrics.getHeight();\n\t\tint j = localFontMetrics.getAscent();\n\t\tint k = PRINT_MARGIN;\n\t\tint m = PRINT_MARGIN + j;\n\t\tint n = (localDimension.height - 72) / i;\n\t\tint i1 = n;\n\t\tElementIterator localElementIterator = new ElementIterator(\n\t\t\t\tthis.document);\n\t\tfor (;;) {\n\t\t\tElement localElement = localElementIterator.next();\n\t\t\tif (localElement == null) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (localElement.isLeaf()) {\n\t\t\t\ttry {\n\t\t\t\t\tint i2 = localElement.getEndOffset()\n\t\t\t\t\t\t\t- localElement.getStartOffset();\n\t\t\t\t\tsetStyleFromAttributes(localGraphics,\n\t\t\t\t\t\t\tlocalElement.getAttributes());\n\t\t\t\t\tlocalFontMetrics = localGraphics.getFontMetrics();\n\t\t\t\t\tString str1 = this.document.getText(\n\t\t\t\t\t\t\tlocalElement.getStartOffset(), i2);\n\t\t\t\t\tint i3 = 0;\n\t\t\t\t\tfor (;;) {\n\t\t\t\t\t\tint i4 = 0;\n\t\t\t\t\t\tint i5 = 1;\n\t\t\t\t\t\tint i6 = str1.indexOf(\"\\n\", i3);\n\t\t\t\t\t\tif (i6 == -1) {\n\t\t\t\t\t\t\ti6 = str1.indexOf(this.lineSeparator, i3);\n\t\t\t\t\t\t\tif (i6 == -1) {\n\t\t\t\t\t\t\t\ti6 = str1.length();\n\t\t\t\t\t\t\t\ti4 = 1;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ti5 = this.lineSeparator.length();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (i3 < i6) {\n\t\t\t\t\t\t\tString str2 = str1.substring(i3, i6);\n\t\t\t\t\t\t\tlocalGraphics.drawString(str2, k, m);\n\t\t\t\t\t\t\tk += localFontMetrics.stringWidth(str2);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (i4 != 0) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ti3 = i6 + i5;\n\t\t\t\t\t\tk = PRINT_MARGIN;\n\t\t\t\t\t\tm += i;\n\t\t\t\t\t\ti1--;\n\t\t\t\t\t\tif (i1 <= 0) {\n\t\t\t\t\t\t\tlocalGraphics.dispose();\n\t\t\t\t\t\t\tlocalGraphics = paramPrintJob.getGraphics();\n\t\t\t\t\t\t\tm = PRINT_MARGIN + j;\n\t\t\t\t\t\t\ti1 = n;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch (BadLocationException localBadLocationException) {\n\t\t\t\t\tthrow new ErrorException(localBadLocationException);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tparamPrintJob.end();\n\t}\n\n\tpublic void setInputStyle(int paramInt) {\n\t\tif (getLength() != 0) {\n\t\t\tthrow new ErrorException(\n\t\t\t\t\t\"Console styles and colors cannot be changed after I/O has started.\");\n\t\t}\n\t\tthis.inputAttributes.addAttribute(StyleConstants.Bold, Boolean.valueOf(\n\t\t\t\t(paramInt & 0x1) != 0));\n\t\tthis.inputAttributes.addAttribute(StyleConstants.Italic, Boolean.valueOf(\n\t\t\t\t(paramInt & 0x2) != 0));\n\t}\n\n\tpublic void setInputColor(Color paramColor) {\n\t\tif (getLength() != 0) {\n\t\t\tthrow new ErrorException(\n\t\t\t\t\t\"Console styles and colors cannot be changed after I/O has started.\");\n\t\t}\n\t\tthis.inputAttributes\n\t\t\t\t.addAttribute(StyleConstants.Foreground, paramColor);\n\t}\n\n\tpublic void setErrorStyle(int paramInt) {\n\t\tif (getLength() != 0) {\n\t\t\tthrow new ErrorException(\n\t\t\t\t\t\"Console styles and colors cannot be changed after I/O has started.\");\n\t\t}\n\t\tthis.errorAttributes.addAttribute(StyleConstants.Bold, Boolean.valueOf(\n\t\t\t\t(paramInt & 0x1) != 0));\n\t\tthis.errorAttributes.addAttribute(StyleConstants.Italic, Boolean.valueOf(\n\t\t\t\t(paramInt & 0x2) != 0));\n\t}\n\n\tpublic void setErrorColor(Color paramColor) {\n\t\tif (getLength() != 0) {\n\t\t\tthrow new ErrorException(\n\t\t\t\t\t\"Console styles and colors cannot be changed after I/O has started.\");\n\t\t}\n\t\tthis.errorAttributes\n\t\t\t\t.addAttribute(StyleConstants.Foreground, paramColor);\n\t}\n\n\tpublic void setOutputStyle(int paramInt) {\n\t\tthis.outputAttributes.addAttribute(StyleConstants.Bold, Boolean.valueOf(\n\t\t\t\t(paramInt & 0x1) != 0));\n\t\tthis.outputAttributes.addAttribute(StyleConstants.Italic, Boolean.valueOf(\n\t\t\t\t(paramInt & 0x2) != 0));\n\t}\n\n\tpublic Color getOutputColor() {\n\t\treturn outputColor;\n\t}\n\t\n\tpublic void setOutputColor(Color paramColor) {\n\t\tif (paramColor == null || paramColor == Color.BLACK) {\n\t\t\tthis.outputAttributes.removeAttribute(StyleConstants.Foreground);\n\t\t\toutputColor = Color.BLACK;\n\t\t} else {\n\t\t\tthis.outputAttributes\n\t\t\t\t\t.addAttribute(StyleConstants.Foreground, paramColor);\n\t\t\toutputColor = paramColor;\n\t\t}\n\t}\n\n\tpublic void requestFocus() {\n\t\tif (this.textPane != null) {\n\t\t\tthis.textPane.requestFocus();\n\t\t}\n\t}\n\n\tpublic void setMenuBar(ProgramMenuBar paramProgramMenuBar) {\n\t\tthis.menuBar = paramProgramMenuBar;\n\t}\n\n\tpublic void focusGained(FocusEvent paramFocusEvent) {\n\t\tthis.hasFocus = true;\n\t\tif (this.menuBar != null) {\n\t\t\tif (this.actionListener == null) {\n\t\t\t\tthis.actionListener = new ConsoleActionListener(this.console);\n\t\t\t}\n\t\t\tthis.menuBar.setFocusedListener(this.actionListener);\n\t\t\tthis.console.updateMenuBar(this.menuBar);\n\t\t}\n\t}\n\n\tpublic void focusLost(FocusEvent paramFocusEvent) {\n\t\tthis.hasFocus = false;\n\t\tif (this.menuBar != null) {\n\t\t\tthis.menuBar.setFocusedListener(null);\n\t\t}\n\t}\n\n\tpublic void keyTyped(KeyEvent paramKeyEvent) {\n\t\tif ((!paramKeyEvent.isMetaDown()) && (!paramKeyEvent.isControlDown())) {\n\t\t\tthis.buffer.enqueue(paramKeyEvent.getKeyChar());\n\t\t\tparamKeyEvent.consume();\n\t\t}\n\t}\n\n\tpublic void keyPressed(KeyEvent paramKeyEvent) {\n\t\tswitch (paramKeyEvent.getKeyCode()) {\n\t\tcase 37:\n\t\t\tthis.buffer.enqueue('\\002');\n\t\t\tbreak;\n\t\tcase 39:\n\t\t\tthis.buffer.enqueue('\\006');\n\t\t}\n\t\tif (this.menuBar != null) {\n\t\t\tthis.menuBar.fireAccelerator(paramKeyEvent);\n\t\t}\n\t\t\n\t\t// 2015/05/10 commented out by Marty because it blocks using Alt to open the menu bar\n\t\tif (!paramKeyEvent.isAltDown()) {\n\t\t\tparamKeyEvent.consume();\n\t\t}\n\t}\n\n\tpublic void keyReleased(KeyEvent paramKeyEvent) {\n\t\tparamKeyEvent.consume();\n\t}\n\n\tprotected void printCallback(String paramString, int paramInt) {\n\t\tinsert(paramString, this.base, paramInt);\n\t\tthis.base += paramString.length();\n\t\t\n\t\t// BUGFIX 2014/11/06: added try/catch because throwing NPE on Mac OS X for some reason\n\t\ttry {\n\t\t\tsetCaretPosition(this.base);\n\t\t} catch (IllegalArgumentException npe) {\n\t\t\tthis.base = this.getLength();\n\t\t} catch (NullPointerException npe) {\n\t\t\t// empty\n\t\t}\n\t}\n\n\tprotected String readLineCallback() {\n\t\tthis.base = getLength();\n\t\tif (this.inputScript != null) {\n\t\t\tString str1 = null;\n\t\t\ttry {\n\t\t\t\tstr1 = this.inputScript.readLine();\n\t\t\t} catch (IOException localIOException1) {\n\t\t\t\tthrow new ErrorException(localIOException1);\n\t\t\t}\n\t\t\tif (str1 != null) {\n\t\t\t\tinsert(str1, this.base, 1);\n\t\t\t\tinsert(\"\\n\", this.base + str1.length(), 0);\n\t\t\t\tthis.base += str1.length() + 1;\n\t\t\t\treturn str1;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tthis.inputScript.close();\n\t\t\t} catch (IOException localIOException2) {\n\t\t\t}\n\t\t\tthis.inputScript = null;\n\t\t}\n\t\tsetCaretPosition(this.base);\n\t\tchar c;\n\t\twhile (((c = this.buffer.dequeue()) != '\\n') && (c != '\\r')) {\n\t\t\tif (getCaretPosition() < this.base) {\n\t\t\t\tsetCaretPosition(getLength());\n\t\t\t}\n\t\t\tint i = getSelectionStart();\n\t\t\tswitch (c) {\n\t\t\tcase '\\b':\n\t\t\tcase '':\n\t\t\t\tif (i == getSelectionEnd()) {\n\t\t\t\t\tif (i > this.base) {\n\t\t\t\t\t\tdelete(i - 1, i);\n\t\t\t\t\t\ti--;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ti = deleteSelection();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase '\\001':\n\t\t\t\tselectAll();\n\t\t\t\ti = -1;\n\t\t\t\tbreak;\n\t\t\tcase '\\002':\n\t\t\t\ti = Math.max(getSelectionStart() - 1, this.base);\n\t\t\t\tbreak;\n\t\t\tcase '\\003':\n\t\t\t\tcopy();\n\t\t\t\ti = -1;\n\t\t\t\tbreak;\n\t\t\tcase '\\006':\n\t\t\t\ti = Math.min(getSelectionEnd() + 1, getLength());\n\t\t\t\tbreak;\n\t\t\tcase '\\020':\n\t\t\t\tthis.console.printConsole();\n\t\t\t\ti = -1;\n\t\t\t\tbreak;\n\t\t\tcase '\\023':\n\t\t\t\tthis.console.save();\n\t\t\t\ti = -1;\n\t\t\t\tbreak;\n\t\t\tcase '\\026':\n\t\t\t\tpaste();\n\t\t\t\ti = -1;\n\t\t\t\tbreak;\n\t\t\tcase '\\030':\n\t\t\t\tcut();\n\t\t\t\ti = -1;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tif (i != getSelectionEnd()) {\n\t\t\t\t\ti = deleteSelection();\n\t\t\t\t}\n\t\t\t\tinsert(\"\" + c, i, 1);\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tif (i != -1) {\n\t\t\t\tselect(i, i);\n\t\t\t\tsetCaretPosition(i);\n\t\t\t}\n\t\t}\n\t\tint j = getLength() - this.base;\n\t\tString str2 = getText(this.base, this.base + j);\n\t\tinsert(\"\\n\", this.base + j, 0);\n\t\tthis.base += j + 1;\n\t\treturn str2;\n\t}\n\n\tpublic boolean isCommandEnabled(String paramString) {\n\t\treturn this.hasFocus;\n\t}\n\n\tprivate void insert(String paramString, int paramInt1, int paramInt2) {\n\t\ttry {\n\t\t\tSimpleAttributeSet localSimpleAttributeSet = this.outputAttributes;\n\t\t\tswitch (paramInt2) {\n\t\t\tcase 1:\n\t\t\t\tlocalSimpleAttributeSet = this.inputAttributes;\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tlocalSimpleAttributeSet = this.errorAttributes;\n\t\t\t}\n\t\t\tthis.document.insertString(paramInt1, paramString,\n\t\t\t\t\tlocalSimpleAttributeSet);\n\t\t} catch (BadLocationException localBadLocationException) {\n\t\t}\n\t}\n\n\tprivate void delete(int paramInt1, int paramInt2) {\n\t\ttry {\n\t\t\tthis.document.remove(paramInt1, paramInt2 - paramInt1);\n\t\t} catch (BadLocationException localBadLocationException) {\n\t\t\tthrow new ErrorException(localBadLocationException);\n\t\t}\n\t}\n\n\tprivate void setCaretPosition(int paramInt) {\n\t\tthis.textPane.setCaretPosition(paramInt);\n\t}\n\n\tprivate int getCaretPosition() {\n\t\treturn this.textPane.getCaretPosition();\n\t}\n\n\tprivate void select(int paramInt1, int paramInt2) {\n\t\tthis.textPane.select(paramInt1, paramInt2);\n\t}\n\n\tprivate int getSelectionStart() {\n\t\treturn this.textPane.getSelectionStart();\n\t}\n\n\tprivate int getSelectionEnd() {\n\t\treturn this.textPane.getSelectionEnd();\n\t}\n\n\tprivate int deleteSelection() {\n\t\tint i = Math.max(this.base, getSelectionStart());\n\t\tint j = getSelectionEnd();\n\t\tif (j <= this.base) {\n\t\t\treturn getLength();\n\t\t}\n\t\tdelete(i, j);\n\t\treturn i;\n\t}\n\n\tprivate void setStyleFromAttributes(Graphics paramGraphics,\n\t\t\tAttributeSet paramAttributeSet) {\n\t\tFont localFont = this.textPane.getFont();\n\t\tint i = 0;\n\t\tif (Boolean.TRUE.equals(paramAttributeSet\n\t\t\t\t.getAttribute(StyleConstants.Bold))) {\n\t\t\ti |= 0x1;\n\t\t}\n\t\tif (Boolean.TRUE.equals(paramAttributeSet\n\t\t\t\t.getAttribute(StyleConstants.Italic))) {\n\t\t\ti |= 0x2;\n\t\t}\n\t\tparamGraphics.setFont(new Font(localFont.getName(), i, localFont\n\t\t\t\t.getSize()));\n\t\tColor localColor = (Color) paramAttributeSet\n\t\t\t\t.getAttribute(StyleConstants.Foreground);\n\t\tif (localColor == null) {\n\t\t\tlocalColor = this.textPane.getForeground();\n\t\t}\n\t\tparamGraphics.setColor(localColor);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/io/SystemConsoleModel.java",
    "content": "package acm.io;\n\nimport acm.program.*;\nimport java.awt.*;\nimport java.io.*;\n\npublic class SystemConsoleModel implements ConsoleModel {\n\tprivate IOConsole console;\n\tprivate BufferedReader inputScript;\n\tprivate String text;\n\n\tpublic SystemConsoleModel() {\n\t\tthis.text = \"\";\n\t}\n\n\tpublic void setConsole(IOConsole paramIOConsole) {\n\t\tthis.console = paramIOConsole;\n\t}\n\n\tpublic IOConsole getConsole() {\n\t\treturn this.console;\n\t}\n\n\tpublic void clear() {\n\t}\n\n\tpublic void print(String paramString, int paramInt) {\n\t\tSystem.out.print(paramString);\n\t\tthis.text += paramString;\n\t}\n\n\tpublic String readLine() {\n\t\tSystem.out.flush();\n\t\tString str = \"\";\n\t\ttry {\n\t\t\tfor (;;) {\n\t\t\t\tint i;\n\t\t\t\tif (this.inputScript == null) {\n\t\t\t\t\ti = System.in.read();\n\t\t\t\t} else {\n\t\t\t\t\ti = this.inputScript.read();\n\t\t\t\t}\n\t\t\t\tif ((i == -1) && (str.length() == 0)) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (this.inputScript != null) {\n\t\t\t\t\t\t\tthis.inputScript.close();\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (IOException localIOException1) {\n\t\t\t\t\t}\n\t\t\t\t\tthis.inputScript = null;\n\t\t\t\t} else {\n\t\t\t\t\tif ((i == -1) || (i == 10)) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tstr = str + (char) i;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (IOException localIOException2) {\n\t\t}\n\t\tif (this.inputScript != null) {\n\t\t\tprint(str + \"\\n\", 1);\n\t\t}\n\t\treturn str;\n\t}\n\n\tpublic String getText() {\n\t\treturn this.text;\n\t}\n\n\tpublic String getText(int paramInt1, int paramInt2) {\n\t\treturn this.text.substring(paramInt1, paramInt2);\n\t}\n\n\tpublic int getLength() {\n\t\treturn this.text.length();\n\t}\n\n\tpublic Component getConsoleModel() {\n\t\treturn null;\n\t}\n\n\tpublic Component getTextPane() {\n\t\treturn null;\n\t}\n\n\tpublic void setFont(Font paramFont) {\n\t}\n\n\tpublic void setInputStyle(int paramInt) {\n\t}\n\n\tpublic void setInputColor(Color paramColor) {\n\t}\n\n\tpublic void setErrorStyle(int paramInt) {\n\t}\n\n\tpublic void setErrorColor(Color paramColor) {\n\t}\n\n\tpublic void cut() {\n\t}\n\n\tpublic void copy() {\n\t}\n\n\tpublic void paste() {\n\t}\n\n\tpublic void selectAll() {\n\t}\n\n\tpublic boolean isPointSelection() {\n\t\treturn true;\n\t}\n\n\tpublic void print(PrintJob paramPrintJob) {\n\t}\n\n\tpublic void setInputScript(BufferedReader paramBufferedReader) {\n\t\tthis.inputScript = paramBufferedReader;\n\t}\n\n\tpublic BufferedReader getInputScript() {\n\t\treturn this.inputScript;\n\t}\n\n\tpublic Component getConsolePane() {\n\t\treturn null;\n\t}\n\n\tpublic void requestFocus() {\n\t}\n\n\tpublic void setMenuBar(ProgramMenuBar paramProgramMenuBar) {\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/program/AbstractConsoleProgram.java",
    "content": "/*\n * @author Marty Stepp (current maintainer)\n * @version 2018/11/12\n * - disabled Ctrl/Command mouse wheel font scaling \n * @version 2017/10/31\n * - added Ctrl-number hotkeys to automatically load input script and compare output\n * @version 2017/06/01\n * - added [completed] when program is done running\n * @version 2016/10/02\n * - added reprompt message options\n * - added getYesOrNo, some other console I/O methods\n * - alphabetized all methods\n * @version 2016/05/17\n * - moved options menu stuff here from ConsoleProgram\n * - added Set Font, Set Back/Foreground Color menu items\n * @version 2016/04/07\n * - added fontEnlarge, fontShrink, fontToggleBold\n * @version 2015/06/19\n * - dummy superclass between Program and ConsoleProgram/JBEDummyProgram\n */\n\npackage acm.program;\n\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.io.*;\nimport java.util.Properties;\nimport javax.swing.*;\nimport acm.gui.JFontChooser;\nimport acm.io.*;\nimport acm.util.JTFTools;\nimport stanford.cs106.diff.DiffGui;\nimport stanford.cs106.gui.GuiUtils;\nimport stanford.cs106.io.*;\nimport stanford.cs106.util.*;\n\npublic abstract class AbstractConsoleProgram extends Program {\n\tprivate static final int DEFAULT_LINE_HEIGHT = 16;\n\tprivate static final int FONT_MAX_SIZE = 255;\n\tprivate static final int FONT_MIN_SIZE = 4;\n\tprivate static final String DEFAULT_REPROMPT_MESSAGE = \"Unable to open that file.  Try again.\";\n\tpublic static final String PROGRAM_COMPLETED_TITLE_SUFFIX = \" [completed]\";\n\t\n\tprivate boolean backgroundHasBeenSet = false;\n\tprivate boolean clearEnabled = true;   // whether clearConsole(); is effectual\n\tprivate boolean fontHasBeenSet = false;\n\tprivate boolean foregroundHasBeenSet = false;\n\tprivate boolean mouseListenersAdded = false;\n\t\n\t/*\n\t * looks for some settings that can be supplied in the project info.\n\t */\n\tprotected void checkCompilerFlags() {\n\t\tsuper.checkCompilerFlags();\n\t\tif (SystemProperties.hasSystemProperty(ProgramStartupFlags.SPL_CONSOLE_FONTSIZE)) {\n\t\t\tint size = SystemProperties.getSystemPropertyInt(ProgramStartupFlags.SPL_CONSOLE_FONTSIZE);\n\t\t\tsetFont(\"Monospaced-Bold-\" + size);\n\t\t}\n\n\t\tif (SystemProperties.hasSystemProperty(ProgramStartupFlags.SPL_CONSOLE_WIDTH)\n\t\t\t\t&& SystemProperties.hasSystemProperty(ProgramStartupFlags.SPL_CONSOLE_HEIGHT)) {\n\t\t\tint w = SystemProperties.getSystemPropertyInt(ProgramStartupFlags.SPL_CONSOLE_WIDTH);\n\t\t\tint h = SystemProperties.getSystemPropertyInt(ProgramStartupFlags.SPL_CONSOLE_HEIGHT);\n\t\t\tsetSize(w, h);\n\t\t}\n\n\t\tif (SystemProperties.hasSystemProperty(ProgramStartupFlags.SPL_CONSOLE_X)\n\t\t\t\t&& SystemProperties.hasSystemProperty(ProgramStartupFlags.SPL_CONSOLE_Y)) {\n\t\t\tint x = SystemProperties.getSystemPropertyInt(ProgramStartupFlags.SPL_CONSOLE_X);\n\t\t\tint y = SystemProperties.getSystemPropertyInt(ProgramStartupFlags.SPL_CONSOLE_Y);\n\t\t\tsetLocation(x, y);\n\t\t}\n\n\t\tif (SystemProperties.hasSystemProperty(ProgramStartupFlags.SPL_CONSOLE_LOCATION_SAVED)) {\n\t\t\tif (SystemProperties.getSystemPropertyBoolean(ProgramStartupFlags.SPL_CONSOLE_LOCATION_SAVED)) {\n\t\t\t\tGuiUtils.rememberWindowLocation(getJFrame());\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Erases any text from the main console.\n\t */\n\tpublic void clearConsole() {\n\t\tif (clearEnabled) {\n\t\t\tgetConsole().clear();\n\t\t}\n\t}\n\t\n\t/**\n\t * Pops up a file chooser to compare output to some expected output.\n\t */\n\tprotected void compareOutput() {\n\t\ttry {\n\t\t\t// pick working dir for loading expected output files\n\t\t\tFile dir = IOUtils.getExpectedOutputDirectory();\n\n\t\t\t// let the user browse for a file for expected output\n\t\t\tJFileChooser chooser = new JFileChooser(dir);\n\t\t\tint result = chooser.showOpenDialog(getJFrame());\n\t\t\tif (result == JFileChooser.CANCEL_OPTION) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tFile selectedFile = chooser.getSelectedFile();\n\t\t\tcompareOutput(selectedFile);\n\t\t} catch (Exception e) {\n\t\t\tJOptionPane.showMessageDialog(getJFrame(), \"Unable to compare output.\\n\" + e, \"Error\",\n\t\t\t\t\tJOptionPane.WARNING_MESSAGE);\n\t\t}\n\t}\n\t\n\t/**\n\t * Compares current console output to contents of the given file.\n\t */\n\tprotected void compareOutput(File file) {\n\t\tif (file == null || !file.isFile()) {\n\t\t\treturn;\n\t\t}\n\t\tString expectedOutput = IOUtils.readEntireFile(file);\n\t\tString studentOutput = getAllOutput();\n\t\tDiffGui diff = new DiffGui(\"expected output\", expectedOutput, \"your output\", studentOutput,\n\t\t\t\t/* checkboxes */ false);\n\t\tdiff.show();\n\t}\n\t\n\t/**\n\t * Tries to find an expected output file ending with the given number and compare it.\n\t * For example, if num is 2, tries to find a file like expected-output-2.txt.\n\t */\n\tprotected boolean compareOutput(int num) {\n\t\ttry {\n\t\t\tFile dir = IOUtils.getExpectedOutputDirectory();\n\t\t\tfor (File file : dir.listFiles()) {\n\t\t\t\tString name = file.getName();\n\t\t\t\tif (name.contains(\"expected-output\") && name.endsWith(\"-\" + num + \".txt\")) {\n\t\t\t\t\tcompareOutput(file);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (Exception e) {\n\t\t\t// empty\n\t\t}\n\t\treturn false;\n\t}\n\t\n\t/**\n\t * Called as the program is shutting down.\n\t * Puts [terminated] on the console window title.\n\t */\n\tprotected void endHook() {\n\t\tsuper.endHook();\n\t\tsetTitle(getTitle() + PROGRAM_COMPLETED_TITLE_SUFFIX);\n\t}\n\n\tprotected void loadInputScript() {\n\t\ttry {\n\t\t\t// pick working dir for loading expected output files\n\t\t\tFile dir = IOUtils.getExpectedInputDirectory();\n\n\t\t\t// let the user browse for a file for expected output\n\t\t\tJFileChooser chooser = new JFileChooser(dir);\n\t\t\tchooser.setFileFilter(new ExtensionFileFilter(\"txt\"));\n\t\t\tint result = chooser.showOpenDialog(getJFrame());\n\t\t\tif (result == JFileChooser.CANCEL_OPTION) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tFile selectedFile = chooser.getSelectedFile();\n\t\t\tif (selectedFile == null || !selectedFile.isFile()) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tString inputScript = IOUtils.readEntireFile(selectedFile);\n\t\t\tthis.getConsole().setInputScript(new BufferedReader(new StringReader(inputScript)));\n\t\t\t\n\t\t} catch (Exception e) {\n\t\t\tJOptionPane.showMessageDialog(getJFrame(), \"Unable to load input script.\\n\" + e, \"Error\",\n\t\t\t\t\tJOptionPane.WARNING_MESSAGE);\n\t\t}\n\t}\n\t\n\tprotected void loadInputScript(File file) {\n\t\tif (file == null || !file.isFile()) {\n\t\t\treturn;\n\t\t}\n\t\tString inputScript = IOUtils.readEntireFile(file);\n\t\tthis.getConsole().setInputScript(new BufferedReader(new StringReader(inputScript)));\n\t}\n\t\n\tprotected boolean loadInputScript(int num) {\n\t\tFile dir = IOUtils.getExpectedOutputDirectory();\n\t\tfor (File file : dir.listFiles()) {\n\t\t\tString name = file.getName();\n\t\t\tif (name.contains(\"input\") && name.endsWith(\"-\" + num + \".txt\")) {\n\t\t\t\tloadInputScript(file);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\t/*\n\t * Changes the console's font toggle by the given amount in pt.\n\t */\n\tprivate void fontChangeSize(int increment) {\n\t\tFont font = fontExtract();\n\t\tif (font != null) {\n\t\t\tfloat newSize = (float) font.getSize() + increment;\n\t\t\tif (newSize >= FONT_MIN_SIZE && font.getSize() <= FONT_MAX_SIZE) {\n\t\t\t\tfont = font.deriveFont(newSize);\n\t\t\t\tthis.setFont(font);\n\t\t\t\tfontHasBeenSet = true;\n\t\t\t\tsaveConfiguration();\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Makes the console's font larger by 2pt.\n\t */\n\tpublic void fontEnlarge() {\n\t\tfontChangeSize(+2);\n\t}\n\n\t/*\n\t * Returns the console's current font.\n\t */\n\tprivate Font fontExtract() {\n\t\tFont font = this.getFont();\n\t\tif (font == null) {\n\t\t\tfont = this.getConsole().getFont();\n\t\t}\n\t\tif (font == null) {\n\t\t\tfont = JTFTools.decodeFont(null);\n\t\t}\n\t\treturn font;\n\t}\n\n\t/**\n\t * Makes the console's font smaller by 2pt.\n\t */\n\tpublic void fontShrink() {\n\t\tfontChangeSize(-2);\n\t}\n\n\t/**\n\t * Makes the console's font toggle between bold and non-bold.\n\t */\n\tpublic void fontToggleBold() {\n\t\tFont font = fontExtract();\n\t\tif (font != null) {\n\t\t\tif ((font.getStyle() & Font.BOLD) != 0) {\n\t\t\t\tfont = font.deriveFont(font.getStyle() & ~Font.BOLD);\n\t\t\t} else {\n\t\t\t\tfont = font.deriveFont(font.getStyle() | Font.BOLD);\n\t\t\t}\n\t\t\tthis.setFont(font);\n\t\t\tfontHasBeenSet = true;\n\t\t\tsaveConfiguration();\n\t\t}\n\t}\n\n\t/**\n\t * Returns all text that has been displayed on this console so far.\n\t */\n\tpublic String getAllOutput() {\n\t\treturn this.getConsole().getConsoleModel().getText();\n\t}\n\n\t/**\n\t * Returns the font currently used in the console.\n\t */\n\tpublic Font getFont() {\n\t\tFont font = super.getFont();\n\t\tif (font == null) {\n\t\t\tfont = this.getConsole().getFont();\n\t\t}\n\t\tif (font == null) {\n\t\t\tfont = JTFTools.decodeFont(null);\n\t\t}\n\t\treturn font;\n\t}\n\n\t/*\n\t * Returns the scroll pane used for scrolling the console's output text.\n\t */\n\tprivate JScrollPane getScrollPane() {\n\t\tIOConsole console = getConsole();\n\t\tif (console != null && console.getConsoleModel() instanceof StandardConsoleModel) {\n\t\t\tStandardConsoleModel model = (StandardConsoleModel) console.getConsoleModel();\n\t\t\treturn model.getScrollPane();\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t/**\n\t * Retrieves the next command in the console input history.\n\t */\n\tpublic void historyDown() {\n\t\tIOConsole console = getConsole();\n\t\tif (console != null && console.getConsoleModel() instanceof StandardConsoleModel) {\n\t\t\tStandardConsoleModel model = (StandardConsoleModel) console.getConsoleModel();\n\t\t\tmodel.historyDown();\n\t\t}\n\t}\n\n\t/**\n\t * Retrieves the previous command in the console input history.\n\t */\n\tpublic void historyUp() {\n\t\tIOConsole console = getConsole();\n\t\tif (console != null && console.getConsoleModel() instanceof StandardConsoleModel) {\n\t\t\tStandardConsoleModel model = (StandardConsoleModel) console.getConsoleModel();\n\t\t\tmodel.historyUp();\n\t\t}\n\t}\n\t\n\t/**\n\t * Reads the console's configuration settings, if present.\n\t */\n\t@Override\n\tprotected void loadConfiguration(Properties props) {\n\t\tif (!mouseListenersAdded) {\n\t\t\tmouseListenersAdded = true;\n\t\t\t\n\t\t\t// try to listen to mouse wheel scroll events\n\t\t\taddMouseWheelListener(this);\n\t\t\tgetConsole().addMouseWheelListener(this);\n\t\t\tIOConsole console = getConsole();\n\t\t\tif (console != null && console.getConsoleModel() instanceof StandardConsoleModel) {\n\t\t\t\tStandardConsoleModel model = (StandardConsoleModel) console.getConsoleModel();\n\t\t\t\tif (model.getTextPane() != null) {\n\t\t\t\t\tmodel.getTextPane().addMouseWheelListener(this);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (props.containsKey(\"background\")) {\n\t\t\tColor background = JTFTools.decodeColor(String.valueOf(props.get(\"background\")));\n\t\t\tsetBackground(background);\n\t\t\tgetConsole().setBackground(background);\n\t\t\tbackgroundHasBeenSet = true;\n\t\t}\n\t\tif (props.containsKey(\"foreground\")) {\n\t\t\tColor foreground = JTFTools.decodeColor(String.valueOf(props.get(\"foreground\")));\n\t\t\tsetForeground(foreground);\n\t\t\tgetConsole().setForeground(foreground);\n\t\t\tforegroundHasBeenSet = true;\n\t\t}\n\t\tif (props.containsKey(\"font\")) {\n\t\t\tFont font = JTFTools.decodeFont(String.valueOf(props.get(\"font\")));\n\t\t\tsetFont(font);\n\t\t\tfontHasBeenSet = true;\n\t\t}\n\t}\n\t\n\t/**\n\t * Responds to menu clicks.\n\t */\n\t@Override\n\tpublic boolean menuAction(ActionEvent event) {\n\t\tString cmd = event.getActionCommand().intern();\n\t\tif (cmd == ProgramMenuBar.MENU_ITEM_TEXT_COMPARE_OUTPUT) {\n\t\t\tcompareOutput();\n\t\t\treturn true;\n\t\t} else if (cmd == ProgramMenuBar.MENU_ITEM_TEXT_LOAD_INPUT_SCRIPT) {\n\t\t\tloadInputScript();\n\t\t\treturn true;\n\t\t} else if (cmd == ProgramMenuBar.MENU_ITEM_TEXT_FONT) {\n\t\t\tsetFontFromChooser();\n\t\t\treturn true;\n\t\t} else if (cmd == ProgramMenuBar.MENU_ITEM_TEXT_BACKGROUND_COLOR) {\n\t\t\tsetColorFromChooser(/* background */ true);\n\t\t\treturn true;\n\t\t} else if (cmd == ProgramMenuBar.MENU_ITEM_TEXT_FOREGROUND_COLOR) {\n\t\t\tsetColorFromChooser(/* background */ false);\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn super.menuAction(event);\n\t\t}\n\t}\n\n\t/**\n\t * Implementation of MouseWheelListener interface.\n\t * When you Ctrl-wheel or Command-wheel, the font will grow or shrink.\n\t */\n\tpublic void mouseWheelMoved(MouseWheelEvent e) {\n\t\t// JOptionPane.showMessageDialog(this, \"mouseWheelMoved(\" + e + \")\");\n\t\tif (e.isControlDown() || e.isAltDown() || e.isMetaDown() || e.isShiftDown()) {\n\t\t\tint notches = e.getWheelRotation();\n\t\t\tif (notches < 0) {\n\t\t\t\t// mouse wheel moved up\n\t\t\t\t// fontEnlarge();\n\t\t\t} else {\n\t\t\t\t// mouse wheel moved down\n\t\t\t\t// fontShrink();\n\t\t\t}\n\t\t} else {\n\t\t\t// re-dispatch the event so we do not block regular scrolling\n\t\t\te.getComponent().getParent().dispatchEvent(e);\n\t\t}\n\t}\n\n\t/**\n\t * Asks the user to type a file name, re-prompting until the user types a\n\t * file that exists in the current directory.\n\t * The message \"Unable to open that file. Try again.\" is shown every time a reprompt is necessary.\n\t * The file's full path is returned as a string.\n\t * @param prompt the text to display to the user\n\t * @param directory the working directory in which to look for files (e.g. \"res/\")\n\t * @return the file name typed by the user, including any directory prefix, such as \"res/input.txt\" or \"foo.dat\"\n\t */\n\tpublic String promptUserForFile(String prompt) {\n\t\treturn promptUserForFile(prompt, /* directory */ \"\");\n\t}\n\t\n\t/**\n\t * Asks the user to type a file name, re-prompting until the user types a\n\t * file that exists in the given directory.\n\t * The message \"Unable to open that file. Try again.\" is shown every time a reprompt is necessary.\n\t * The file's full path is returned as a string.\n\t * @param prompt the text to display to the user\n\t * @param directory the working directory in which to look for files (e.g. \"res/\")\n\t * @return the file name typed by the user, including any directory prefix, such as \"res/input.txt\" or \"foo.dat\"\n\t */\n\tpublic String promptUserForFile(String prompt, String directory) {\n\t\treturn promptUserForFile(prompt, directory, DEFAULT_REPROMPT_MESSAGE);\n\t}\n\t\n\t/**\n\t * Asks the user to type a file name, re-prompting until the user types a\n\t * file that exists in the given directory.\n\t * The given reprompt message is shown every time a reprompt is necessary.\n\t * The file's full path is returned as a string.\n\t * @param prompt the text to display to the user\n\t * @param directory the working directory in which to look for files (e.g. \"res/\")\n\t * @return the file name typed by the user, including any directory prefix, such as \"res/input.txt\" or \"foo.dat\"\n\t */\n\tpublic String promptUserForFile(String prompt, String directory, String reprompt) {\n\t\tString filename = readLine(prompt);\n\t\twhile (filename.isEmpty() || !fileExists(directory, filename)) {\n\t\t\tgetOutputModel().showErrorMessage(reprompt);\n\t\t\tfilename = readLine(prompt).trim();\n\t\t}\n\t\tif (!directory.equals(\"\")) {\n\t\t\t// filename = new File(directory, filename).getAbsolutePath();\n\t\t\tdirectory = directory.replace(\"\\\\\", \"/\");\n\t\t\tif (!directory.endsWith(\"/\")) {\n\t\t\t\tdirectory += \"/\";\n\t\t\t}\n\t\t}\n\t\treturn directory + filename;\n\t}\n\t\n\t/**\n\t * Turns on/off the ability to clear the console using clearConsole(); (default true)\n\t * @param enabled Whether to enable clearConsole();\n\t */\n\tpublic void setClearConsoleEnabled(boolean enabled) {\n\t\tclearEnabled = enabled;\n\t}\n\n\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t/**\n\t * Writes the console's configuration settings to disk.\n\t */\n\t@Override\n\tprotected void saveConfiguration(Properties props) {\n\t\tif (fontHasBeenSet) {\n\t\t\tFont font = getFont();\n\t\t\tString fontString = font.getName();\n\t\t\tif (fontString == null) {\n\t\t\t\tfontString = font.getFamily();\n\t\t\t}\n\t\t\tfontString += \"-\";\n\t\t\tint style = font.getStyle();\n\t\t\tif (style == Font.PLAIN) {\n\t\t\t\tfontString += \"plain\";\n\t\t\t} else if (style == Font.BOLD) {\n\t\t\t\tfontString += \"bold\";\n\t\t\t} else if (style == Font.ITALIC) {\n\t\t\t\tfontString += \"italic\";\n\t\t\t} else if (style == Font.BOLD + Font.ITALIC) {\n\t\t\t\tfontString += \"bolditalic\";\n\t\t\t}\n\t\t\tfontString += \"-\" + font.getSize();\n\t\t\t\n\t\t\tprops.put(\"font\", fontString);\n\t\t}\n\t\t\n\t\tif (backgroundHasBeenSet) {\n\t\t\tString backgroundString = String.format(\"#%06x\",\n\t\t\t\t\tgetBackground().getRGB());\n\t\t\tprops.put(\"background\", backgroundString);\n\t\t}\n\t\t\n\t\tif (foregroundHasBeenSet) {\n\t\t\tString foregroundString = String.format(\"#%06x\",\n\t\t\t\t\tgetForeground().getRGB());\n\t\t\tprops.put(\"foreground\", foregroundString);\n\t\t}\n\t}\n\t\n\t/*\n\t * Tells the console's output area to scroll itself by the given number of vertical px.\n\t * (Negative = up, Positive = down.)\n\t */\n\tprivate void scrollBy(int dy) {\n\t\tJScrollPane scroll = getScrollPane();\n\t\tif (scroll == null) {\n\t\t\treturn;\n\t\t}\n\t\tJScrollBar bar = scroll.getVerticalScrollBar();\n\t\tif (bar == null) {\n\t\t\treturn;\n\t\t}\n\n\t\tint y;\n\t\tint min = scroll.getVerticalScrollBar().getMinimum();\n\t\tint max = scroll.getVerticalScrollBar().getMaximum();\n\t\tif (dy == Integer.MIN_VALUE) {\n\t\t\ty = min;\n\t\t} else if (dy == Integer.MAX_VALUE) {\n\t\t\ty = max;\n\t\t} else {\n\t\t\t// shift y by dy, bounded between [min..max] inclusive\n\t\t\ty = bar.getValue() + dy;\n\t\t\ty = Math.max(min, y);\n\t\t\ty = Math.min(max, y);\n\t\t}\n\t\tbar.setValue(y);\n\t}\n\n\t/*\n\t * Returns the height of a line in the scroll area in px.\n\t */\n\tprivate int scrollLineHeight() {\n\t\tFont programFont = getFont();\n\t\tif (programFont == null) {\n\t\t\treturn DEFAULT_LINE_HEIGHT;\n\t\t} else {\n\t\t\tFontMetrics fm = getFontMetrics(programFont);\n\t\t\treturn fm.getHeight();\n\t\t}\n\t}\n\n\t/**\n\t * Tells the console's output area to scroll itself downward by one line.\n\t */\n\tpublic void scrollLineDown() {\n\t\tscrollBy(scrollLineHeight());\n\t}\n\n\t/**\n\t * Tells the console's output area to scroll itself upward by one line.\n\t */\n\tpublic void scrollLineUp() {\n\t\tscrollBy(-scrollLineHeight());\n\t}\n\n\t/**\n\t * Tells the console's output area to scroll itself downward by one page.\n\t */\n\tpublic void scrollPageDown() {\n\t\tscrollBy(scrollPageHeight());\n\t}\n\n\t/*\n\t * Returns the height in px of the scrollable console output area.\n\t */\n\tprivate int scrollPageHeight() {\n\t\tJScrollPane scroll = getScrollPane();\n\t\tif (scroll != null && scroll.getVerticalScrollBar() != null) {\n\t\t\treturn scroll.getHeight();\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\t/**\n\t * Tells the console's output area to scroll itself upward by one page.\n\t */\n\tpublic void scrollPageUp() {\n\t\tscrollBy(-scrollPageHeight());\n\t}\n\n\t/**\n\t * Tells the console's output area to scroll itself to the top of the output.\n\t */\n\tpublic void scrollToTop() {\n\t\tscrollBy(Integer.MIN_VALUE);\n\t}\n\n\t/**\n\t * Tells the console's output area to scroll itself to the bottom of the output.\n\t */\n\tpublic void scrollToBottom() {\n\t\tscrollBy(Integer.MAX_VALUE);\n\t}\n\n\t/**\n\t * Pops up a JColorChooser to let the user pick a color for the console.\n\t */\n\tprotected void setColorFromChooser(boolean background) {\n\t\tString title = \"Choose \" + (background ? \"background\" : \"foreground\") + \" color\";\n\t\tColor color = JColorChooser.showDialog(getWindow(), title, getBackground());\n\t\tif (color == null) {\n\t\t\treturn;\n\t\t}\n\t\tif (background) {\n\t\t\tsetBackground(color);\n\t\t\tgetConsole().setBackground(color);\n\t\t} else {\n\t\t\tsetForeground(color);\n\t\t\tgetConsole().setForeground(color);\n\t\t}\n\n\t\t// prompt make this the 'default' color for future console windows\n\t\tint result = JOptionPane.showConfirmDialog(getWindow(), \"Make this the default for future console windows?\",\n\t\t\t\t\"Make default?\", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);\n\t\tboolean ok = result == JOptionPane.YES_OPTION;\n\t\tif (background) {\n\t\t\tbackgroundHasBeenSet = ok;\n\t\t} else {\n\t\t\tforegroundHasBeenSet = ok;\n\t\t}\n\t\tif (ok) {\n\t\t\tsaveConfiguration();\n\t\t}\n\t}\n\n\t/**\n\t * Sets the font for the console.\n\t *\n\t * @usage program.setFont(font);\n\t * @param font\n\t *            The new font\n\t */\n\t@Override\n\tpublic void setFont(Font font) {\n\t\tIOConsole console = getConsole();\n\t\tfont = JTFTools.getStandardFont(font);\n\t\tif (console != null)\n\t\t\tconsole.setFont(font);\n\t\tsuper.setFont(font);\n\t}\n\n\t/**\n\t * Sets the font used for the console as specified by the string\n\t * <code>str</code>, which is interpreted in the style of\n\t * <code>Font.decode</code>. The usual format of the font string is\n\t *\n\t * <p>\n\t * <i>family</i><code>-</code><i>style</i><code>-</code><i>size</i>\n\t * <p>\n\t *\n\t * where both <i>style</i> and <i>size</i> are optional. If any of these\n\t * parts are specified as an asterisk, the existing value is retained.\n\t *\n\t * @usage program.setFont(str);\n\t * @param str\n\t *            A <code>String</code> specifying the new font\n\t */\n\tpublic void setFont(String str) {\n\t\tIOConsole console = getConsole();\n\t\tif (console != null) {\n\t\t\tconsole.setFont(str);\n\t\t\tsuper.setFont(console.getFont());\n\t\t}\n\t}\n\n\t/**\n\t * Pops up a JFontChooser to let the user pick a font for the console.\n\t */\n\tprotected void setFontFromChooser() {\n\t\tJFontChooser choose = new JFontChooser();\n\t\tchoose.setSelectedFont(getFont());\n\t\tif (choose.showDialog(getWindow()) == JFontChooser.OK_OPTION) {\n\t\t\tFont font = choose.getSelectedFont();\n\t\t\tsetFont(font);\n\n\t\t\t// prompt make this the 'default' font for future console windows\n\t\t\tint result = JOptionPane.showConfirmDialog(getWindow(), \"Make this the default for future console windows?\",\n\t\t\t\t\t\"Make default?\", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);\n\t\t\tboolean ok = result == JOptionPane.YES_OPTION;\n\t\t\tfontHasBeenSet = ok;\n\t\t\tif (ok) {\n\t\t\t\tsaveConfiguration();\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/program/AccessibleConsoleProgram.java",
    "content": "package acm.program;\n\npublic class AccessibleConsoleProgram extends ConsoleProgram {\n\tpublic AccessibleConsoleProgram() {\n\t\tsuper();\n\t\tsetEcho(true);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/program/AppletStarter.java",
    "content": "/*\n * @author Marty Stepp (current maintainer)\n * @version 2017/04/26\n * - initial version; moved out of Program.java into its own file\n * - alphabetized methods\n */\n\npackage acm.program;\n\nimport java.lang.reflect.*;\nimport acm.util.JTFTools;\n\n/* Package class: AppletStarter */\n/**\n * This class creates a new thread in which to execute the <code>run</code>\n * method in the context of an applet.\n */\n\nclass AppletStarter implements Runnable {\n\t/* Private instance variables */\n\tprivate Program myProgram;\n\tprivate Thread mainThread;\n\tprivate Object executor;\n\n\t/* Constructor: AppletStarter(program) */\n\t/**\n\t * Creates an object responsible for starting the main thread for the program.\n\t */\n\tpublic AppletStarter(Program program) {\n\t\tmyProgram = program;\n\t}\n\n\t/* Private method: forkUsingExecutor */\n\t/**\n\t * The AppletRunner in Java 5.0 does not allow nontrusted packages to fork\n\t * new threads.  This class uses the <code>ScheduledExecutor</code> class in\n\t * <code>java.util.concurrent</code> to do the fork so that it comes from an\n\t * acceptable place.\n\t */\n\tprivate void forkUsingExecutor() {\n\t\ttry {\n\t\t\t// TODO: no such class?\n\t\t\tClass<?> scheduledExecutorClass = Class.forName(\"java.util.concurrent.ScheduledExecutor\");\n\t\t\tClass<?>[] types1 = { Integer.TYPE };\n\t\t\tObject[] args1 = { Integer.valueOf(1) };\n\t\t\tConstructor<?> constructor = scheduledExecutorClass.getConstructor(types1);\n\t\t\texecutor = constructor.newInstance(args1);\n\t\t\tClass<?> timeUnitClass = java.util.concurrent.TimeUnit.class;\n\t\t\tField secondsField = timeUnitClass.getField(\"SECONDS\");\n\t\t\tObject seconds = secondsField.get(null);\n\t\t\tClass<?>[] types2 = { java.lang.Runnable.class,\n\t\t\t\t\tLong.TYPE,\n\t\t\t\t\tjava.util.concurrent.TimeUnit.class };\n\t\t\tObject[] args2 = { this, Long.valueOf(0), seconds };\n\t\t\tMethod schedule = executor.getClass().getMethod(\"schedule\", types2);\n\t\t\tschedule.invoke(executor, args2);\n\t\t} catch (Exception ex) {\n\t\t\tif (JTFTools.testDebugOption(\"startup\")) {\n\t\t\t\tSystem.out.println(\"Executor failed because \" + ex);\n\t\t\t}\n\t\t\texecutor = null;\n\t\t\tmainThread = Thread.currentThread();\n\t\t\ttry {\n\t\t\t\tmyProgram.startRun();\n\t\t\t} catch (Throwable t) {\n\t\t\t\tif (t instanceof Error) {\n\t\t\t\t\tthrow (Error) t;\n\t\t\t\t} else if (t instanceof RuntimeException) {\n\t\t\t\t\tthrow (RuntimeException) t;\n\t\t\t\t} else {\n\t\t\t\t\tThrowable cause = t;\n\t\t\t\t\twhile (cause.getCause() != null) {\n\t\t\t\t\t\tcause = cause.getCause();\n\t\t\t\t\t}\n\t\t\t\t\tthrow new RuntimeException(cause);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/* Method: getMainThread() */\n\t/**\n\t * Returns the thread that is running the main program.\n\t */\n\tpublic Thread getMainThread() {\n\t\treturn mainThread;\n\t}\n\n\t/* Method: run() */\n\t/**\n\t * Starts the program by calling its <code>startRun</code> method, which will\n\t * eventually call <code>run</code> in the program.\n\t */\n\tpublic void run() {\n\t\tmyProgram.startRun();\n\t}\n\n\t/* Method: start() */\n\t/**\n\t * Starts a new thread for the program that will execute\n\t * the <code>run</code> method.\n\t */\n\tpublic void start() {\n\t\ttry {\n\t\t\tmainThread = new Thread(new Runnable() {\n\t\t\t\tpublic void run() {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tAppletStarter.this.run();\n\t\t\t\t\t} catch (Throwable t) {\n\t\t\t\t\t\tif (t instanceof Error) {\n\t\t\t\t\t\t\tthrow (Error) t;\n\t\t\t\t\t\t} else if (t instanceof RuntimeException) {\n\t\t\t\t\t\t\tthrow (RuntimeException) t;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tThrowable cause = t;\n\t\t\t\t\t\t\twhile (cause.getCause() != null) {\n\t\t\t\t\t\t\t\tcause = cause.getCause();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthrow new RuntimeException(cause);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tmainThread.start();\n\t\t\tif (JTFTools.testDebugOption(\"startup\")) {\n\t\t\t\tSystem.out.println(\"Starting main thread using Thread package\");\n\t\t\t}\n\t\t} catch (SecurityException ex) {\n\t\t\tif (JTFTools.testDebugOption(\"startup\")) {\n\t\t\t\tSystem.out.println(\"Starting main thread using Executor because \" + ex);\n\t\t\t}\n\t\t\tforkUsingExecutor();\n\t\t}\n\t}\n\n\t/* Method: stop() */\n\t/**\n\t * Stops the main thread, using whichever strategy is appropriate for\n\t * the implementation.\n\t */\n\tpublic void stop() {\n\t\ttry {\n\t\t\tif (executor == null) {\n\t\t\t\tClass<?> threadClass = java.lang.Thread.class;\n\t\t\t\tMethod stop = threadClass.getMethod(\"stop\", new Class[0]);\n\t\t\t\tstop.invoke(mainThread, new Object[0]);\n\t\t\t} else {\n\t\t\t\tMethod shutdownNow = executor.getClass().getMethod(\"shutdownNow\", new Class[0]);\n\t\t\t\tshutdownNow.invoke(executor, new Object[0]);\n\t\t\t}\n\t\t} catch (Exception ex) {\n\t\t\t/* Empty */\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/program/AsciiArtProgram.java",
    "content": "package acm.program;\n\nimport acm.io.*;\nimport java.awt.Color;\nimport java.util.*;\n\nimport javax.swing.JScrollPane;\n\n/**\n * ...\n */\npublic class AsciiArtProgram extends ConsoleProgram {\n\tprivate String background = \" \";\n\tprivate String fill = \".\";\n\tprivate String paint = \"*\";\n\tprivate Map<String, String> matrix = new TreeMap<String, String>();\n\tprivate int maxX = 0;\n\tprivate int maxY = 0;\n\tprivate boolean redrawAutomatically = true;\n\tprivate StandardConsoleModel sConsole;\n\t\n\tpublic AsciiArtProgram() {\n\t\tsuper();\n\t\t\n\t\tIOConsole console = getConsole();\n\t\tConsoleModel consoleModel = console.getConsoleModel();\n\t\tif (consoleModel instanceof StandardConsoleModel) {\n\t\t\tsConsole = (StandardConsoleModel) consoleModel;\n\n\t\t\t// disable scrollbars\n\t\t\tsConsole.getScrollPane().setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);\n\t\t\tsConsole.getScrollPane().setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);\n\t\t\t\n\t\t\t// hide blinking cursor\n\t\t\tsConsole.getTextPane().setCursor(null);\n\t\t}\n\t}\n\t\n\tprivate void checkBounds(int x, int y) {\n//\t\tif (y < 0 || y >= getRows() || x < 0 || x >= getColumns()) {\n//\t\t\tthrow new IndexOutOfBoundsException(\"Illegal x/y value: (\"\n//\t\t\t\t\t+ x + \", \" + y + \")\");\n//\t\t}\n\t}\n\t\n\tpublic void clear() {\n\t\tmatrix.clear();\n\t\tmaxX = 0;\n\t\tmaxY = 0;\n\t\tconditionalRedraw();\n\t}\n\t\n\tprivate void conditionalRedraw() {\n\t\tif (redrawAutomatically) {\n\t\t\tredraw();\n\t\t}\n\t}\n\t\n\tpublic void drawCharacter(int x, int y) {\n\t\tdrawCharacterHelper(x, y, paint, /* repaint */ true);\n\t}\n\t\n\tpublic void drawCharacter(int x, int y, String character) {\n\t\tif (character == null || character.isEmpty()) {\n\t\t\tcharacter = paint;\n\t\t} else if (character.length() != 1) {\n\t\t\tcharacter = character.substring(0, 1);\n\t\t}\n\t\tdrawCharacterHelper(x, y, character, /* repaint */ true);\n\t}\n\t\n\tprivate void drawCharacterHelper(int x, int y) {\n\t\tdrawCharacterHelper(x, y, paint, /* repaint */ false);\n\t}\n\t\n//\tprivate void drawCharacterHelper(int x, int y, String character) {\n//\t\tdrawCharacterHelper(x, y, character, /* repaint */ false);\n//\t}\n\t\n\tprivate void drawCharacterHelper(int x, int y, String character, boolean repaint) {\n\t\tcheckBounds(x, y);\n\t\tString key = getKey(x, y);\n\t\tmatrix.put(key, character);\n\t\tif (x > maxX) {\n\t\t\tmaxX = x;\n\t\t}\n\t\tif (y > maxY) {\n\t\t\tmaxY = y;\n\t\t}\n\t\tif (repaint) {\n\t\t\tredraw();\n\t\t}\n\t}\n\t\n\tpublic void drawLine(double x1, double y1, double x2, double y2) {\n\t\tdrawLine((int) x1, (int) y1, (int) x2, (int) y2);\n\t}\n\t\n\tpublic void drawLine(int x1, int y1, int x2, int y2) {\n\t\tif (y1 == y2) {\n\t\t\t// horizontal line\n\t\t\tfor (int x = x1; x <= x2; x++) {\n\t\t\t\tdrawCharacterHelper(x, y1);\n\t\t\t}\n\t\t} else if (x1 == x2) {\n\t\t\t// vertical line\n\t\t\tfor (int y = y1; y <= y2; y++) {\n\t\t\t\tdrawCharacterHelper(x1, y);\n\t\t\t}\n\t\t} else {\n\t\t\t// TODO\n\t\t}\n\t\tconditionalRedraw();\n\t}\n\n\tpublic void drawRect(double x, double y, double width, double height) {\n\t\tdrawRect((int) x, (int) y, (int) width, (int) height);\n\t}\n\t\n\tpublic void drawRect(int x, int y, int width, int height) {\n\t\tdrawLine(x, y, x + width, y);   // top\n\t\tdrawLine(x, y, x, y + height);  // left\n\t\tdrawLine(x + width, y, x + width, y + height);  // right\n\t\tdrawLine(x, y + height, x + width, y + height);  // bottom\n\t}\n\t\n\tpublic void fillRect(double x, double y, double width, double height) {\n\t\tfillRect((int) x, (int) y, (int) width, (int) height);\n\t}\n\t\n\tpublic void fillRect(int x, int y, int width, int height) {\n\t\tfor (int yy = y; yy < y + height; yy++) {\n\t\t\tfor (int xx = x; xx < x + width; xx++) {\n\t\t\t\tdrawCharacterHelper(xx, yy);\n\t\t\t}\n\t\t}\n\t\tconditionalRedraw();\n\t}\n\t\n\tpublic String getBackgroundCharacter() {\n\t\treturn background;\n\t}\n\t\n\tpublic Color getBackgroundColor() {\n\t\treturn getBackground();\n\t}\n\t\n\tpublic String getCharacter(double x, double y) {\n\t\treturn getCharacter((int) x, (int) y);\n\t}\n\t\n\tpublic String getCharacter(int x, int y) {\n\t\tString key = getKey(x, y);\n\t\tif (matrix.containsKey(key)) {\n\t\t\treturn matrix.get(key);\n\t\t} else {\n\t\t\treturn background;\n\t\t}\n\t}\n\t\n\tpublic int getColumns() {\n\t\tint width = this.getConsole().getWidth();\n\t\tint charWidth = this.getFontMetrics(this.getFont()).stringWidth(\"M\");\n\t\tint columns = width / charWidth;\n\t\treturn columns;\n\t}\n\t\n\tpublic String getFillCharacter() {\n\t\treturn fill;\n\t}\n\t\n\tpublic String getForegroundCharacter() {\n\t\treturn paint;\n\t}\n\t\n\tpublic Color getForegroundColor() {\n\t\treturn getForeground();\n\t}\n\t\n\tprivate String getKey(int x, int y) {\n\t\treturn x + \",\" + y;\n\t}\n\t\n\tpublic int getRows() {\n\t\tint height = this.getConsole().getHeight();\n\t\tint charHeight = this.getFontMetrics(this.getFont()).getHeight();\n\t\tint rows = height / charHeight;\n\t\treturn rows;\n\t}\n\t\n\tpublic void redraw() {\n\t\tsConsole.clear();\n\t\t// clearConsole();\n\t\tint maxRow = Math.min(maxY, getRows() - 1);\n\t\tint maxCol = Math.min(maxX, getColumns() - 1);\n\t\tStringBuilder sb = new StringBuilder((maxRow + 2) * (maxCol + 2));\n\t\tfor (int r = 0; r <= maxRow; r++) {\n\t\t\tfor (int c = 0; c <= maxCol; c++) {\n\t\t\t\tString ch = getCharacter(c, r);\n\t\t\t\tsb.append(ch);\n\t\t\t}\n\t\t\tif (r != maxRow) {\n\t\t\t\tsb.append('\\n');\n\t\t\t}\n\t\t}\n\t\tString screen = sb.toString();\n\t\t// print(screen);\n\t\tsConsole.getTextPane().setText(screen);\n\t}\n\t\n\tpublic void setBackgroundCharacter(char character) {\n\t\tsetBackgroundCharacter(String.valueOf(character));\n\t}\n\t\n\tpublic void setBackgroundCharacter(String character) {\n\t\tif (character != null && !character.isEmpty()) {\n\t\t\tbackground = character.substring(0, 1);\n\t\t\trepaint();\n\t\t}\n\t}\n\t\n\tpublic void setBackgroundColor(Color color) {\n\t\tsetBackground(color);\n\t\tthis.getConsole().setBackground(color);\n\t}\n\t\n\tpublic void setForegroundCharacter(char character) {\n\t\tsetForegroundCharacter(String.valueOf(character));\n\t}\n\t\n\tpublic void setForegroundCharacter(String character) {\n\t\tif (character != null && !character.isEmpty()) {\n\t\t\tpaint = character.substring(0, 1);\n\t\t}\n\t}\n\n\tpublic void setFillCharacter(char character) {\n\t\tsetFillCharacter(String.valueOf(character));\n\t}\n\t\n\tpublic void setFillCharacter(String character) {\n\t\tif (character != null && !character.isEmpty()) {\n\t\t\tfill = character.substring(0, 1);\n\t\t}\n\t}\n\n\tpublic void setForegroundColor(Color color) {\n\t\tsetForeground(color);\n\t\tthis.getConsole().setForeground(color);\n\t}\n\t\n\tpublic void setRedrawAutomatically(boolean redraw) {\n\t\tthis.redrawAutomatically = redraw;\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/program/CommandLineProgram.java",
    "content": "/*\n * @version 2017/07/21\n * - added add() overloads\n * @version 2017/04/27\n * - added support for HeadlessGraphicsProgram\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// Class introduced in V1.1\n\npackage acm.program;\n\nimport acm.io.*;\nimport acm.util.*;\nimport stanford.cs106.util.ExceptionUtils;\nimport stanford.karel.*;\nimport java.applet.*;\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.io.*;\nimport java.lang.reflect.*;\nimport java.util.*;\nimport javax.swing.*;\n\n/**\n * This class simulates the functionality of a <code>ConsoleProgram</code>\n * in an environment that lacks a graphics context. As of JDK 1.4, it is\n * illegal even to instantiate an applet in a non-graphics environment\n * (called \"headless\" in the Java terminology), which means that the program\n * can no longer extend <code>Applet</code> or <code>JApplet</code>.  This\n * class creates a stripped-down program class that duplicates the operation\n * of a <code>ConsoleProgram</code> using the standard I/O streams.\n */\npublic class CommandLineProgram\n\t\timplements ProgramInterface, IOModel, MouseListener, MouseMotionListener,\n\t\tKeyListener, ActionListener {\n\n\t/* Private instance variables */\n\tprivate HashMap<String,String> parameterTable;\n\tprivate ArrayList<Object> finalizers;\n\t@SuppressWarnings(\"deprecation\")\n\tprivate AppletStub appletStub;\n\tprivate String myTitle;\n\tprivate IOConsole myConsole;\n\n\t/* Default constructor: CommandLineProgram */\n\t/**\n\t * This code initializes the program data structures.\n\t */\n\tprotected CommandLineProgram() {\n\t\tparameterTable = null;\n\t\tfinalizers = new ArrayList<Object>();\n\t\tmyTitle = getClass().getName();\n\t\tmyTitle = myTitle.substring(myTitle.lastIndexOf(\".\") + 1);\n\t\tsetConsole(createConsole());\n\t}\n\n\t/**\n\t * Returns true if the program is running in non-graphical \"headless\" mode.\n\t */\n\tpublic static boolean isHeadless() {\n\t\tif (JTFTools.testDebugOption(\"headless\")) {\n\t\t\treturn true;\n\t\t}\n\n\t\ttry {\n\t\t\tClass<?> gEnvClass = java.awt.GraphicsEnvironment.class;\n\t\t\tMethod isHeadless = gEnvClass.getMethod(\"isHeadless\", new Class[0]);\n\t\t\tif (Boolean.TRUE.equals(isHeadless.invoke(null))) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} catch (Exception ex) {\n\t\t\t// empty\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/* Static method: checkIfHeadless(className) */\n\t/**\n\t * Checks to see if the program is running in a headless environment and, if so,\n\t * runs it in that form.  If the environment is indeed headless, this call never\n\t * returns.\n\t *\n\t * @usage CommandLineProgram.checkIfHeadless(className);\n\t * @param className The name of the main class\n\t */\n\tpublic static void checkIfHeadless(String className) {\n\t\tif (!isHeadless()) {\n\t\t\treturn;\n\t\t}\n\n\t\t// see if this is a ConsoleProgram, CommandLineProgram, Karel, GraphicsProgram, ...\n\t\tboolean isConsole  = false;\n\t\tboolean isGraphics = false;\n\t\tboolean isKarel    = false;\n\n\t\ttry {\n\t\t\tClassLoader loader = ClassLoader.getSystemClassLoader();\n\t\t\tClass<?> mainClass = loader.loadClass(className);\n\t\t\tisConsole = CommandLineProgram.class.isAssignableFrom(mainClass)\n\t\t\t\t\t|| ConsoleProgram.class.isAssignableFrom(mainClass);\n\t\t\tisKarel = KarelInterface.class.isAssignableFrom(mainClass)\n\t\t\t\t\t|| KarelProgram.class.isAssignableFrom(mainClass);\n\t\t\tisGraphics = GraphicsProgramInterface.class.isAssignableFrom(mainClass)\n\t\t\t\t\t|| GraphicsProgram.class.isAssignableFrom(mainClass);\n\t\t\tif (!isConsole && !isKarel && !isGraphics) {\n\t\t\t\treturn;   // not a proper program\n\t\t\t}\n\t\t} catch (Exception ex) {\n\t\t\t// empty\n\t\t}\n\n\t\t// now reload the main class again but using a custom ClassLoader,\n\t\t// which will patch it to be a subclass of CommandLineProgram so that\n\t\t// it will run correctly in a headless mode\n\t\ttry {\n\t\t\tClassLoader loader = null;\n\t\t\tProgramInterface program = null;\n\n\t\t\tif (isConsole) {\n\t\t\t\tloader = new PatchingClassLoader(className,\n\t\t\t\t\t\t/* new superclass */ acm.program.CommandLineProgram.class);\n\t\t\t} else if (isKarel) {\n\t\t\t\tloader = new PatchingClassLoader(className,\n\t\t\t\t\t\t/* new superclass */ stanford.karel.HeadlessSuperKarel.class);\n\t\t\t} else if (isGraphics) {\n\t\t\t\tloader = new PatchingClassLoader(className,\n\t\t\t\t\t\t/* new superclass */ acm.program.HeadlessGraphicsProgram.class);\n\t\t\t}\n\n\t\t\tif (loader == null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tClass<?> mainClass = loader.loadClass(className);\n\t\t\tprogram = (ProgramInterface) mainClass.getDeclaredConstructor().newInstance();\n\t\t\tprogram.init();\n\t\t\tprogram.run();\n\t\t\tprogram.exit();\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(ExceptionUtils.getUnderlyingCause(ex));\n\t\t}\n\t}\n\n\t/* Method: run() */\n\t/**\n\t * Contains the code to be executed for each specific program subclass.  If\n\t * you are defining your own program, you need to override the definition of\n\t * <code>run</code> so that it contains the code for your application.\n\t */\n\tpublic void run() {\n\t\t/* Empty */\n\t}\n\n\t/* Method: init() */\n\t/**\n\t * The init method is called at startup time before the run method is\n\t * called.  Subclasses can override this method to perform any\n\t * initialization code that would ordinarily be included in an applet\n\t * <code>init</code> method.  This method is used only for certain styles\n\t * of application development that have their roots in the applet world;\n\t * other styles will not ordinarily use or override this method.\n\t *\n\t * @usage program.init();\n\t */\n\tpublic void init() {\n\t\t/* Empty */\n\t}\n\n\t/**\n\t * Causes the program to delay for the given number of milliseconds.\n\t */\n\tpublic void pause(double milliseconds) {\n\t\ttry {\n\t\t\tThread.sleep((long) milliseconds);\n\t\t} catch (InterruptedException ie) {\n\t\t\t// empty\n\t\t}\n\t}\n\t\n\t/* Method: print(value) */\n\t/**\n\t * Displays the argument value on the console, leaving the cursor at the end of\n\t * the output.  The <code>print</code> method is overloaded so that\n\t * <code>value</code> can be of any type.\n\t *\n\t * @usage program.print(value);\n\t * @param value The value to be displayed\n\t */\n\tpublic void print(String value) {\n\t\tgetOutputModel().print(value);\n\t}\n\n\t/**\n\t * Makes sure that <code>print</code> can display a <code>boolean</code>.\n\t * @noshow\n\t */\n\tpublic final void print(boolean x) {\n\t\tprint(\"\" + x);\n\t}\n\n\t/**\n\t * Makes sure that <code>print</code> can display a <code>char</code>.\n\t * @noshow\n\t */\n\tpublic final void print(char x) {\n\t\tprint(\"\" + x);\n\t}\n\n\t/**\n\t * Makes sure that <code>print</code> can display a <code>double</code>.\n\t * @noshow\n\t */\n\tpublic final void print(double x) {\n\t\tprint(\"\" + x);\n\t}\n\n\t/**\n\t * Makes sure that <code>print</code> can display a <code>float</code>.\n\t * @noshow\n\t */\n\tpublic final void print(float x) {\n\t\tprint(\"\" + x);\n\t}\n\n\t/**\n\t * Makes sure that <code>print</code> can display an <code>int</code>.\n\t * @noshow\n\t */\n\tpublic final void print(int x) {\n\t\tprint(\"\" + x);\n\t}\n\n\t/**\n\t * Makes sure that <code>print</code> can display a <code>long</code>.\n\t * @noshow\n\t */\n\tpublic final void print(long x) {\n\t\tprint(\"\" + x);\n\t}\n\n\t/**\n\t * Makes sure that <code>print</code> can display an <code>Object</code>.\n\t * @noshow\n\t */\n\tpublic final void print(Object x) {\n\t\tprint(\"\" + x);\n\t}\n\n\t/**\n\t * Writes a formatted string to this output stream using the specified format string and arguments.\n\t * @param format A format string as described in Java's Format string syntax.\n\t * @param args Arguments referenced by the format specifiers in the format string. If there are more arguments than format specifiers, the extra arguments are ignored. The number of arguments is variable and may be zero. The maximum number of arguments is limited by the maximum dimension of a Java array as defined by The Java™ Virtual Machine Specification. The behavior on a null argument depends on the conversion.\n\t * @throws IllegalFormatException If a format string contains an illegal syntax, a format specifier that is incompatible with the given arguments, insufficient arguments given the format string, or other illegal conditions.\n\t * @throws NullPointerException If the format is null\n\t */\n\tpublic void printf(String format, Object... args) {\n\t\tprint(String.format(format, args));\n\t}\n\n\t/* Method: println() */\n\t/**\n\t * Advances the console cursor to the beginning of the next line.\n\t *\n\t * @usage program.println();\n\t */\n\tpublic void println() {\n\t\tgetOutputModel().println();\n\t}\n\n\t/* Method: println(value) */\n\t/**\n\t * Displays the argument value on the console and then advances the cursor\n\t * to the beginning of the next line.  The <code>println</code> method is\n\t * overloaded so that <code>value</code> can be of any type.\n\t *\n\t * @usage program.println(value);\n\t * @param value The value to be displayed\n\t */\n\tpublic void println(String value) {\n\t\tgetOutputModel().println(value);\n\t}\n\n\t/**\n\t * Makes sure that <code>println</code> can display a <code>boolean</code>.\n\t * @noshow\n\t */\n\tpublic final void println(boolean x) {\n\t\tprintln(\"\" + x);\n\t}\n\n\t/**\n\t * Makes sure that <code>println</code> can display a <code>char</code>.\n\t * @noshow\n\t */\n\tpublic final void println(char x) {\n\t\tprintln(\"\" + x);\n\t}\n\n\t/**\n\t * Makes sure that <code>println</code> can display a <code>double</code>.\n\t * @noshow\n\t */\n\tpublic final void println(double x) {\n\t\tprintln(\"\" + x);\n\t}\n\n\t/**\n\t * Makes sure that <code>println</code> can display a <code>float</code>.\n\t * @noshow\n\t */\n\tpublic final void println(float x) {\n\t\tprintln(\"\" + x);\n\t}\n\n\t/**\n\t * Makes sure that <code>println</code> can display an <code>int</code>.\n\t * @noshow\n\t */\n\tpublic final void println(int x) {\n\t\tprintln(\"\" + x);\n\t}\n\n\t/**\n\t * Makes sure that <code>println</code> can display a <code>long</code>.\n\t * @noshow\n\t */\n\tpublic final void println(long x) {\n\t\tprintln(\"\" + x);\n\t}\n\n\t/**\n\t * Makes sure that <code>println</code> can display an <code>Object</code>.\n\t * @noshow\n\t */\n\tpublic final void println(Object x) {\n\t\tprintln(\"\" + x);\n\t}\n\n\t/* Method: showErrorMessage(msg) */\n\t/**\n\t * Displays the error message in the standard output model.\n\t *\n\t * @usage showErrorMessage(msg);\n\t * @param msg The error msg to be displayed\n\t */\n\tpublic void showErrorMessage(String msg) {\n\t\tgetOutputModel().showErrorMessage(msg);\n\t}\n\n\t/* Method: readLine() */\n\t/**\n\t * Reads and returns a line of input from the console.  The end-of-line\n\t * characters that terminate the input are not included in the returned\n\t * string.\n\t *\n\t * @usage String str = program.readLine();\n\t * @return The next line of input as a <code>String</code>\n\t */\n\tpublic final String readLine() {\n\t\treturn readLine(null);\n\t}\n\n\t/* Method: readLine(prompt) */\n\t/**\n\t * Prompts the user for a line of input.  The end-of-line characters\n\t * that terminate the input are not included in the returned string.\n\t *\n\t * @usage String str = program.readLine(prompt);\n\t * @param prompt The prompt string to display to the user\n\t * @return The next line of input as a <code>String</code>\n\t */\n\tpublic String readLine(String prompt) {\n\t\treturn getInputModel().readLine(prompt);\n\t}\n\n\t/* Method: readInt() */\n\t/**\n\t * Reads and returns an integer value from the user.  If the user types\n\t * a value that is not a legal integer, the method ordinarily offers the\n\t * user a chance to reenter the data, although this behavior can be\n\t * changed using the\n\t * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n\t *\n\t * @usage int n = program.readInt();\n\t * @return The value of the input interpreted as a decimal integer\n\t */\n\tpublic final int readInt() {\n\t\treturn readInt(null, Integer.MIN_VALUE, Integer.MAX_VALUE);\n\t}\n\n\t/* Method: readInt(low, high) */\n\t/**\n\t * Reads and returns an integer value from the user, which is constrained to\n\t * be within the specified inclusive range.  If the user types a value\n\t * that is not a legal integer, the method ordinarily offers the user a chance\n\t * to reenter the data, although this behavior can be changed using the\n\t * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n\t *\n\t * @usage int n = program.readInt(low, high);\n\t * @param low The lowest value in the permitted range\n\t * @param high The highest value in the permitted range\n\t * @return The value of the input interpreted as a decimal integer\n\t */\n\tpublic final int readInt(int low, int high) {\n\t\treturn readInt(null, low, high);\n\t}\n\n\t/* Method: readInt(prompt) */\n\t/**\n\t * Prompts the user to enter an integer, which is then returned as the value\n\t * of this method.  If the user types a value that is not a legal integer,\n\t * the method ordinarily offers the user a chance to reenter the data,\n\t * although this behavior can be changed using the\n\t * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n\t *\n\t * @usage int n = program.readInt(prompt);\n\t * @param prompt The prompt string to display to the user\n\t * @return The value of the input interpreted as a decimal integer\n\t */\n\tpublic final int readInt(String prompt) {\n\t\treturn readInt(prompt, Integer.MIN_VALUE, Integer.MAX_VALUE);\n\t}\n\n\t/* Method: readInt(prompt, low, high) */\n\t/**\n\t * Prompts the user to enter an integer, which is then returned as the value\n\t * of this method.  The value must be within the inclusive range between\n\t * <code>low</code> and <code>high</code>.  If the user types a value that\n\t * is not a legal integer or is outside the specified range, the method\n\t * ordinarily offers the user a chance to reenter the data,\n\t * although this behavior can be changed using the\n\t * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n\t *\n\t * @usage int n = console.readInt(prompt, low, high);\n\t * @param prompt The prompt string to display to the user\n\t * @param low The lowest value in the permitted range\n\t * @param high The highest value in the permitted range\n\t * @return The value of the input interpreted as a decimal integer\n\t */\n\tpublic int readInt(String prompt, int low, int high) {\n\t\treturn getInputModel().readInt(prompt, low, high);\n\t}\n\n\t/* Method: readDouble() */\n\t/**\n\t * Reads and returns a double-precision value from the user.  If the user\n\t * types a value that is not a legal number, the method ordinarily offers\n\t * the user a chance to reenter the data, although this behavior can be\n\t * changed using the\n\t * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n\t *\n\t * @usage double d = program.readDouble();\n\t * @return The value of the input interpreted as a <code>double</code>\n\t */\n\tpublic final double readDouble() {\n\t\treturn readDouble(null, Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY);\n\t}\n\n\t/* Method: readDouble(low, high) */\n\t/**\n\t * Reads and returns a double-precision value from the user, which is\n\t * constrained to be within the specified inclusive range.  If the user\n\t * types a value that is not a legal number, the method ordinarily offers\n\t * the user a chance to reenter the data, although this behavior can be\n\t * changed using the\n\t * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n\t *\n\t * @usage double d = program.readDouble(low, high);\n\t * @param low The lowest value in the permitted range\n\t * @param high The highest value in the permitted range\n\t * @return The value of the input interpreted as a <code>double</code>\n\t */\n\tpublic final double readDouble(double low, double high) {\n\t\treturn readDouble(null, low, high);\n\t}\n\n\t/* Method: readDouble(prompt) */\n\t/**\n\t * Prompts the user to enter an double-precision number, which is then\n\t * returned as the value of this method.  If the user types a value that\n\t * is not a legal number, the method ordinarily offers the user a chance to\n\t * reenter the data,  although this behavior can be changed using the\n\t * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n\t *\n\t * @usage double d = program.readDouble(prompt);\n\t * @param prompt The prompt string to display to the user\n\t * @return The value of the input interpreted as a <code>double</code>\n\t */\n\tpublic final double readDouble(String prompt) {\n\t\treturn readDouble(prompt, Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY);\n\t}\n\n\t/* Method: readDouble(prompt, low, high) */\n\t/**\n\t * Prompts the user to enter an double-precision number, which is then returned\n\t * as the value of this method.  The value must be within the inclusive range\n\t * between <code>low</code> and <code>high</code>.  If the user types a value\n\t * that is not a legal number, the method ordinarily offers the user a chance\n\t * to reenter the data,  although this behavior can be changed using the\n\t * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n\t *\n\t * @usage d = program.readDouble(prompt, low, high);\n\t * @param prompt The prompt string to display to the user\n\t * @param low The lowest value in the permitted range\n\t * @param high The highest value in the permitted range\n\t * @return The value of the input interpreted as a <code>double</code>\n\t */\n\tpublic double readDouble(String prompt, double low, double high) {\n\t\treturn getInputModel().readDouble(prompt, low, high);\n\t}\n\n\t/* Method: readBoolean() */\n\t/**\n\t * Reads and returns a boolean value (<code>true</code> or <code>false</code>).\n\t * The input must match one of these strings, ignoring case.  If the user\n\t * types a value that is not one of these possibilities, the method ordinarily\n\t * offers the user a chance to reenter the data, although this behavior\n\t * can be changed using the\n\t * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n\t *\n\t * @usage boolean flag = program.readBoolean();\n\t * @return The value of the input interpreted as a boolean value\n\t */\n\tpublic final boolean readBoolean() {\n\t\treturn readBoolean(null);\n\t}\n\n\t/* Method: readBoolean(prompt) */\n\t/**\n\t * Prompts the user to enter a boolean value, which is returned as\n\t * the value of this method.  If the user types a value that is not a\n\t * legal boolean value, the method ordinarily offers the user a chance\n\t * to reenter the data, although this behavior can be changed using the\n\t * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n\t *\n\t * @usage boolean flag = program.readBoolean(prompt);\n\t * @param prompt The prompt string to display to the user\n\t * @return The value of the input interpreted as a boolean value\n\t */\n\tpublic final boolean readBoolean(String prompt) {\n\t\treturn readBoolean(prompt, \"true\", \"false\");\n\t}\n\n\t/* Method: readBoolean(prompt, trueLabel, falseLabel) */\n\t/**\n\t * Prompts the user to enter a boolean value, which is matched against the\n\t * labels provided.  If the user enters a value that is not one of the two\n\t * choices, <code>readBoolean</code> ordinarily offers the user a chance\n\t * to reenter the data, although this behavior can be changed using the\n\t * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n\t *\n\t * @usage boolean flag = program.readBoolean(prompt);\n\t * @param prompt The prompt string to display to the user\n\t * @param trueLabel The string used to indicate <code>true</code>\n\t * @param falseLabel The string used to indicate <code>false</code>\n\t * @return The value of the input interpreted as a boolean value\n\t */\n\tpublic boolean readBoolean(String prompt, String trueLabel, String falseLabel) {\n\t\treturn getInputModel().readBoolean(prompt, trueLabel, falseLabel);\n\t}\n\n\t/* Method: isAppletMode() */\n\t/**\n\t * Returns <code>true</code> if this program is running as an applet in a browser.\n\t *\n\t * @usage if (isAppletMode()) . . .\n\t * @return <code>true</code> if this program is running as an applet, <code>false</code> otherwise\n\t * @noshow\n\t */\n\tpublic boolean isAppletMode() {\n\t\treturn false;\n\t}\n\n\t/* Method: setConsole(console) */\n\t/**\n\t * Sets the console associated with this program.\n\t *\n\t * @usage program.setConsole(console);\n\t * @param console The <code>IOConsole</code> object used for this program\n\t */\n\tpublic void setConsole(IOConsole console) {\n\t\tmyConsole = console;\n\t}\n\n\t/* Method: getConsole() */\n\t/**\n\t * Returns the console associated with this program.\n\t *\n\t * @usage IOConsole console = program.getConsole();\n\t * @return The <code>IOConsole</code> object used for this program\n\t */\n\tpublic IOConsole getConsole() {\n\t\treturn myConsole;\n\t}\n\n\t/* Method: getDialog() */\n\t/**\n\t * Returns the dialog used for user interaction.\n\t *\n\t * @usage IODialog dialog = program.getDialog();\n\t * @return The <code>IODialog</code> object used for this program\n\t */\n\tpublic IODialog getDialog() {\n\t\treturn null;\n\t}\n\n\t/* Method: getInputModel() */\n\t/**\n\t * Returns the <code>IOModel</code> used for program input, which will\n\t * typically be either the default <code>IOConsole</code> or <code>IODialog</code> object.\n\t *\n\t * @usage IOModel io = program.getInputModel();\n\t * @return The <code>IOModel</code> used for program input\n\t */\n\tpublic IOModel getInputModel() {\n\t\treturn getConsole();\n\t}\n\n\t/* Method: getOutputModel() */\n\t/**\n\t * Returns the <code>IOModel</code> used for program output, which will\n\t * typically be either the default <code>IOConsole</code> or <code>IODialog</code> object.\n\t *\n\t * @usage IOModel io = program.getOutputModel();\n\t * @return The <code>IOModel</code> used for program output\n\t */\n\tpublic IOModel getOutputModel() {\n\t\treturn getConsole();\n\t}\n\n\t/* Method: getReader() */\n\t/**\n\t * Returns a <code>BufferedReader</code> whose input comes from the console.\n\t *\n\t * @usage BufferedReader rd = getReader();\n\t * @return A <code>Reader</code> for use with this console\n\t */\n\tpublic BufferedReader getReader() {\n\t\treturn getConsole().getReader();\n\t}\n\n\t/* Method: getWriter() */\n\t/**\n\t * Returns a <code>PrintWriter</code> whose output is directed to the console.\n\t *\n\t * @usage PrintWriter wr = getWriter();\n\t * @return A <code>PrintWriter</code> for use with this console\n\t */\n\tpublic PrintWriter getWriter() {\n\t\treturn getConsole().getWriter();\n\t}\n\n\t/**\n\t * Throws an ErrorException because a CommandLineProgram has no graphical environment.\n\t */\n\tpublic JPanel getRegionPanel(String region) {\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n\t/**\n\t * Throws an ErrorException because a CommandLineProgram has no graphical environment.\n\t */\n\tpublic Component add(Component comp) {\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n\t/**\n\t * Throws an ErrorException because a CommandLineProgram has no graphical environment.\n\t */\n\tpublic void add(Component comp, Object constraints) {\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\t\n\t/**\n\t * Throws an ErrorException because a CommandLineProgram has no graphical environment.\n\t */\n\tpublic void add(Component comp, String region, Object constraints) {\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n\t/**\n\t * Throws an ErrorException because a CommandLineProgram has no graphical environment.\n\t */\n\tpublic void addActionListeners() {\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n\t/**\n\t * Throws an ErrorException because a CommandLineProgram has no graphical environment.\n\t */\n\tpublic void addActionListeners(ActionListener listener) {\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n\t/**\n\t * Throws an ErrorException because a CommandLineProgram has no graphical environment.\n\t */\n\tpublic void addMouseListeners() {\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n\t/* Method: setTitle(title) */\n\t/**\n\t * Sets the title of this program.  The title appears in the title bar\n\t * when the program is running as an application.\n\t *\n\t * @usage setTitle(title);\n\t * @param title The title for this program\n\t */\n\tpublic void setTitle(String title) {\n\t\tmyTitle = title;\n\t}\n\n\t/* Method: getTitle() */\n\t/**\n\t * Gets the title of this program.\n\t *\n\t * @usage String title = getTitle();\n\t * @return The title in use for this program\n\t */\n\tpublic String getTitle() {\n\t\treturn myTitle;\n\t}\n\n\t/**\n\t * Throws an ErrorException because a CommandLineProgram has no graphical environment.\n\t */\n\tpublic void setFont(Font font) {\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\t\n\t/**\n\t * Throws an ErrorException because a CommandLineProgram has no graphical environment.\n\t */\n\tpublic void setForeground(Color color) {\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\t\n\tpublic void setParameterTable(Map<String, String> table) {\n\t\t// empty\n\t}\n\n\tpublic void setStartupObject(Object obj) {\n\t\t// empty\n\t}\n\n\tpublic void start() {\n\t\tstart(new String[0]);\n\t}\n\n\t/* Method: start(args) */\n\t/**\n\t * Starts the program using the specified argument list.\n\t *\n\t * @usage program.start(args);\n\t * @param args An array of strings passed to the program\n\t */\n\tpublic void start(String[] args) {\n\t\tif (parameterTable == null && args != null) {\n\t\t\tparameterTable = createParameterTable(args);\n\t\t}\n\t\tinit();\n\t\ttry {\n\t\t\trun();\n\t\t} catch (Throwable t) {\n\t\t\tif (t instanceof RuntimeException) {\n\t\t\t\tthrow (RuntimeException) t;\n\t\t\t} else {\n\t\t\t\tthrow new RuntimeException(t);\n\t\t\t}\n\t\t}\n\t}\n\n\t/* Method: exit() */\n\t/**\n\t * Exits from the program.  Subclasses should override this method if they need\n\t * to perform any actions before shutting down the program, such as asking the\n\t * user to save any unsaved files.  Any clients that do override this method\n\t * should call <code>super.exit()</code> at the end of their processing.\n\t *\n\t * @usage program.exit();\n\t */\n\tpublic void exit() {\n\t\tint nFinalizers = finalizers.size();\n\t\tfor (int i = 0; i < nFinalizers; i++) {\n\t\t\tObject obj = finalizers.get(i);\n\t\t\ttry {\n\t\t\t\tClass<?> c = obj.getClass();\n\t\t\t\tMethod exit = c.getMethod(\"exit\", new Class[0]);\n\t\t\t\texit.invoke(obj, new Object[0]);\n\t\t\t} catch (Exception ex) {\n\t\t\t\tthrow new ErrorException(ex);\n\t\t\t}\n\t\t}\n\t}\n\n\t/* Method: addExitHook(obj) */\n\t/**\n\t * Requests that the program call the <code>exit</code> method in the\n\t * specified object before exiting.\n\t *\n\t * @usage program.addExitHook(obj);\n\t */\n\tpublic void addExitHook(Object obj) {\n\t\tfinalizers.add(obj);\n\t}\n\n\t/**********************************************************************/\n\t/* Listener methods                                                   */\n\t/**********************************************************************/\n\n\t/* Method: mouseClicked (implements MouseListener) */\n\t/**\n\t * Called when the mouse is clicked.  A call to <code>mouseClicked</code>\n\t * is always preceded by both a <code>mousePressed</code> and a\n\t * <code>mouseReleased</code> event for the same source.\n\t */\n\tpublic void mouseClicked(MouseEvent e) { }\n\n\t/* Method: mousePressed (implements MouseListener) */\n\t/**\n\t * Called when the mouse button is pressed.\n\t */\n\tpublic void mousePressed(MouseEvent e) { }\n\n\t/* Method: mouseReleased (implements MouseListener) */\n\t/**\n\t * Called when the mouse button is released.\n\t */\n\tpublic void mouseReleased(MouseEvent e) { }\n\n\t/* Method: mouseEntered (implements MouseListener) */\n\t/**\n\t * Called when the mouse enters the source (which may be\n\t * either a component or a <code>GObject</code>).\n\t */\n\tpublic void mouseEntered(MouseEvent e) { }\n\n\t/* Method: mouseExited (implements MouseListener) */\n\t/**\n\t * Called when the mouse exits the source (which may be\n\t * either a component or a <code>GObject</code>).\n\t */\n\tpublic void mouseExited(MouseEvent e) { }\n\n\t/* Method: mouseMoved (implements MouseMotionListener) */\n\t/**\n\t * Called when the mouse is moved.\n\t */\n\tpublic void mouseMoved(MouseEvent e) { }\n\n\t/* Method: mouseDragged (implements MouseMotionListener) */\n\t/**\n\t * Called when the mouse is dragged with the button down.  Java\n\t * makes several guarantees about dragging.  First, a\n\t * <code>mouseDragged</code> call is always preceded by a\n\t * <code>mousePressed</code> call for the same source.  If the\n\t * mouse is pressed elsewhere and then enters a source with\n\t * the button down, no drag event occurs.  Moreover, once the\n\t * mouse button goes down in a particular source, only that\n\t * source will receive mouse events until the button goes up.\n\t * Those events, moreover, are reported even in the mouse\n\t * travels outside the domain of the object.\n\t */\n\tpublic void mouseDragged(MouseEvent e) { }\n\n\t/* Method: keyTyped (implements KeyListener) */\n\t/**\n\t * Called when a key is typed (i.e., pressed and released).\n\t */\n\tpublic void keyTyped(KeyEvent e) { }\n\n\t/* Method: keyPressed (implements KeyListener) */\n\t/**\n\t * Called when a key is pressed.\n\t */\n\tpublic void keyPressed(KeyEvent e) { }\n\n\t/* Method: keyReleased (implements KeyListener) */\n\t/**\n\t * Called when a key is released.\n\t */\n\tpublic void keyReleased(KeyEvent e) { }\n\n\t/* Method: actionPerformed (implements ActionListener) */\n\t/**\n\t * Called when a component (typically a button) is activated.\n\t */\n\tpublic void actionPerformed(ActionEvent e) { }\n\n\t/* Factory method: createConsole() */\n\t/**\n\t * Creates the console used by the <code>ConsoleProgram</code>.  Subclasses can\n\t * override this method to create their own console types.\n\t *\n\t * @usage IOConsole console = program.createConsole();\n\t * @return The console to be used by the program\n\t */\n\tprotected IOConsole createConsole() {\n\t\treturn IOConsole.SYSTEM_CONSOLE;\n\t}\n\n\t/**\n\t * Throws an ErrorException because a CommandLineProgram has no graphical environment.\n\t */\n\tprotected IODialog createDialogIO() {\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n\t/**********************************************************************/\n\t/* Overrides of existing methods                                      */\n\t/**********************************************************************/\n\n\t/* Overridden method: getPreferredSize() */\n\t/**\n\t * Returns the preferred size of the content pane.\n\t *\n\t * @usage Dimension size = getPreferredSize();\n\t * @return The preferred size of the content pane\n\t * @noshow\n\t */\n\tpublic Dimension getPreferredSize() {\n\t\treturn new Dimension(0, 0);\n\t}\n\n\t/* Overridden method: getWidth() */\n\t/**\n\t * Returns the width of the central region.\n\t *\n\t * @usage int width = getWidth();\n\t * @return The width of the central region\n\t * @noshow\n\t */\n\tpublic int getWidth() {\n\t\treturn 0;\n\t}\n\n\t/* Overridden method: getHeight() */\n\t/**\n\t * Returns the height of the central region.\n\t *\n\t * @usage int height = getHeight();\n\t * @return The height of the central region\n\t * @noshow\n\t */\n\tpublic int getHeight() {\n\t\treturn 0;\n\t}\n\n\t/* Overridden method: getParameter(name) */\n\t/**\n\t * Returns the parameter associated with name.\n\t *\n\t * @usage String value = getParameter(name);\n\t * @param name The name of the parameter\n\t * @return The value associated with the parameter, or <code>null</code> if none\n\t * @noshow\n\t */\n\tpublic String getParameter(String name) {\n\t\tString value = null;\n\t\tif (parameterTable != null) {\n\t\t\tvalue = parameterTable.get(name.toLowerCase());\n\t\t}\n\t\treturn value;\n\t}\n\n\t/**\n\t * Throws an ErrorException because a CommandLineProgram has no graphical environment.\n\t */\n\tpublic void setLayout(LayoutManager layout) {\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n\t/**\n\t * Throws an ErrorException because a CommandLineProgram has no graphical environment.\n\t */\n\tpublic LayoutManager getLayout() {\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n\t/**\n\t * Throws an ErrorException because a CommandLineProgram has no graphical environment.\n\t */\n\tpublic void setBackground(Color color) {\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n\t/**\n\t * Throws an ErrorException because a CommandLineProgram has no graphical environment.\n\t */\n\tprotected void addImpl(Component comp, Object constraints, int index) {\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n\t/**\n\t * Throws an ErrorException because a CommandLineProgram has no graphical environment.\n\t */\n\tpublic void remove(int index) {\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n\t/**\n\t * Throws an ErrorException because a CommandLineProgram has no graphical environment.\n\t */\n\tpublic void remove(Component comp) {\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n\t/**\n\t * Throws an ErrorException because a CommandLineProgram has no graphical environment.\n\t */\n\tpublic void removeAll() {\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n\t/**\n\t * Throws an ErrorException because a CommandLineProgram has no graphical environment.\n\t */\n\tpublic void validate() {\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n\t/**\n\t * Throws an ErrorException because a CommandLineProgram has no graphical environment.\n\t */\n\tpublic void repaint() {\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n\t/* Overridden method: destroy() */\n\t/**\n\t * Called when the program has been told to destroy itself.\n\t *\n\t * @usage program.destroy();\n\t * @noshow\n\t */\n\tpublic void destroy() {\n\t\t/* Empty */\n\t}\n\n\t/* Static method: main(args) */\n\t/**\n\t * Every application must either contain a \"Main-Class\" entry in its\n\t * manifest file or include a main method that looks like this, where\n\t * <code>MyClass</code> is the name of the program class:\n\t *\n\t * <p><pre><code>\n\t * &nbsp;    public static void main(String[] args) {\n\t * &nbsp;       new MyClass().start();\n\t * &nbsp;    }\n\t * </code></pre>\n\t *\n\t * <p>If the program needs the command line arguments, the <code>args</code>\n\t * array can be passed to the <code>start</code> method and then retrieved\n\t * using the <code>getArgumentArray</code> method.\n\t *\n\t * @param args An array of string arguments\n\t */\n\tpublic static void main(String[] args) {\n\t\tHashMap<String,String> ht = createParameterTable(args);\n\t\tJTFTools.setDebugOptions(ht.get(\"debug\"));\n\t\tString className = ht.get(\"code\");\n\t\tif (className == null) {\n\t\t\tclassName = JTFTools.getMainClass();\n\t\t}\n\t\tClass<?> mainClass = null;\n\t\tCommandLineProgram program = null;\n\t\tif (className != null) {\n\t\t\tif (className.endsWith(\".class\")) {\n\t\t\t\tclassName = className.substring(0, className.length() - 6);\n\t\t\t}\n\t\t\tclassName = className.replace('/', '.');\n\t\t\ttry {\n\t\t\t\tmainClass = Class.forName(className);\n\t\t\t} catch (ClassNotFoundException ex) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t}\n\t\tif (mainClass != null) {\n\t\t\ttry {\n\t\t\t\tObject obj = mainClass.getDeclaredConstructor().newInstance();\n\t\t\t\tif (obj instanceof CommandLineProgram) {\n\t\t\t\t\tprogram = (CommandLineProgram) obj;\n\t\t\t\t} else {\n\t\t\t\t\tthrow new ErrorException(\"Main class does not specify a program\");\n\t\t\t\t}\n\t\t\t} catch (IllegalAccessException ex) {\n\t\t\t\t/* Empty */\n\t\t\t} catch (InstantiationException ex) {\n\t\t\t\t/* Empty */\n\t\t\t} catch (InvocationTargetException ex) {\n\t\t\t\t/* Empty */\n\t\t\t} catch (NoSuchMethodException ex) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t}\n\t\tif (program == null) throw new ErrorException(\"Cannot determine the main class.\");\n\t\tprogram.setParameterTable(ht);\n\t\tprogram.start(null);\n\t}\n\n\t/**********************************************************************/\n\t/* Menu handling methods                                              */\n\t/**********************************************************************/\n\n\t/**\n\t * Throws an ErrorException because a CommandLineProgram has no graphical environment.\n\t */\n\tpublic void menuAction(String cmd) {\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n\t/**\n\t * Throws an ErrorException because a CommandLineProgram has no graphical environment.\n\t */\n\tprotected void setMacMenuBarFlag(boolean flag) {\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n\t/**\n\t * Throws an ErrorException because a CommandLineProgram has no graphical environment.\n\t */\n\tprotected boolean getMacMenuBarFlag() {\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n\t/**********************************************************************/\n\t/* Protected methods                                                  */\n\t/**********************************************************************/\n\n\t/**\n\t * Throws an ErrorException because a CommandLineProgram has no graphical environment.\n\t */\n\tprotected Component getBorder(String side) {\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n\t/* Protected method: getArgumentArray() */\n\t/**\n\t * Retrieves the array of arguments passed in from the command line, or\n\t * <code>null</code> if no arguments are available.\n\t *\n\t * @usage String[] args = getArgumentArray();\n\t * @return The array of command-line arguments\n\t * @noshow\n\t */\n\tprotected String[] getArgumentArray() {\n\t\tif (parameterTable == null) return null;\n\t\tStringTokenizer tokenizer = new StringTokenizer(parameterTable.get(\"ARGS\"), \"\\t\", false);\n\t\tString[] args = new String[tokenizer.countTokens()];\n\t\tfor (int i = 0; tokenizer.hasMoreTokens(); i++) {\n\t\t\targs[i] = tokenizer.nextToken();\n\t\t}\n\t\treturn args;\n\t}\n\n\t/**\n\t * Throws an ErrorException because a CommandLineProgram has no graphical environment.\n\t */\n\tprotected boolean isStarted() {\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n\t/* Protected method: startHook() */\n\t/**\n\t * Performs class-specific initialization for the program just before\n\t * it starts.\n\t * @noshow\n\t */\n\tprotected void startHook() {\n\t\t/* Empty */\n\t}\n\n\t/* Protected method: endHook() */\n\t/**\n\t * Performs class-specific cleanup for the program just after\n\t * it finishes.\n\t * @noshow\n\t */\n\tprotected void endHook() {\n\t\t/* Empty */\n\t}\n\n\t/* Protected method: setAppletStub(stub) */\n\t/**\n\t * Sets the applet stub for this program in a way that makes it possible for\n\t * clients to retrieve it.\n\t *\n\t * @usage setAppletStub(stub);\n\t * @param stub The applet stub\n\t */\n\t@SuppressWarnings(\"deprecation\")\n\tprotected void setAppletStub(AppletStub stub) {\n\t\tappletStub = stub;\n\t}\n\n\t/* Protected method: getAppletStub() */\n\t/**\n\t * Retrieves the applet stub.\n\t *\n\t * @usage AppletStub stub = getAppletStub();\n\t * @return The applet stub\n\t */\n\t@SuppressWarnings(\"deprecation\")\n\tprotected AppletStub getAppletStub() {\n\t\treturn appletStub;\n\t}\n\n\t/* Protected method: setParameterTable(ht) */\n\t/**\n\t * Sets the parameter table for this program.\n\t *\n\t * @usage setParameterTable(ht);\n\t * @param ht The parameter table\n\t */\n\tprotected void setParameterTable(HashMap<String,String> ht) {\n\t\tparameterTable = ht;\n\t}\n\n\t/* Protected method: getParameterTable() */\n\t/**\n\t * Retrieves the parameter table.\n\t *\n\t * @usage ParameterTable ht = getParameterTable();\n\t * @return The parameter table\n\t */\n\tprotected HashMap<String,String> getParameterTable() {\n\t\treturn parameterTable;\n\t}\n\n\t/* Protected static method: createParameterTable(args) */\n\t/**\n\t * Creates a hash table containing the parameters specified in the\n\t * argument list.  Parameters are taken to be any argument that matches\n\t * the template\n\t *\n\t * <p>   <i>name</i><code>=</code><i>value</i>\n\t *\n\t * All other arguments are collected as a tab-separated string and placed\n\t * in an entry under the key <code>\"ARGS\"</code>.  All named parameters\n\t * are converted to lower case to preserve the case-insensitive semantics\n\t * of <code>getParameter</code>.\n\t *\n\t * @usage HashMap<String,String> ht = createParameterTable(args);\n\t * @param args The array of strings passed to the application\n\t * @return A <code>HashMap</code> containing the parameter bindings\n\t */\n\tprotected static HashMap<String,String> createParameterTable(String[] args) {\n\t\tif (args == null) return null;\n\t\tHashMap<String,String> ht = new HashMap<String,String>();\n\t\tString newArgs = \"\";\n\t\tfor (int i = 0; i < args.length; i++) {\n\t\t\tString arg = args[i];\n\t\t\tint equals = arg.indexOf('=');\n\t\t\tif (equals > 0) {\n\t\t\t\tString name = arg.substring(0, equals).toLowerCase();\n\t\t\t\tString value = arg.substring(equals + 1);\n\t\t\t\tht.put(name, value);\n\t\t\t} else {\n\t\t\t\tif (newArgs.length() > 0) newArgs += '\\t';\n\t\t\t\tnewArgs += arg;\n\t\t\t}\n\t\t}\n\t\tht.put(\"ARGS\", newArgs);\n\t\treturn ht;\n\t}\n}\n\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/program/ConsoleProgram.java",
    "content": "/*\n * @version 2018/10/02\n * - setEcho for accessibility\n * @version 2017/07/14\n * - bug fix for readInt/Double/Boolean/Line with null prompt\n * @version 2017/04/26\n * - bug fix for captured output with printf() method\n * @version 2016/10/02\n * - moved some I/O code to AbstractConsoleProgram superclass\n * @version 2016/05/17\n * - moved some menuAction code to AbstractConsoleProgram superclass\n * - added getFont() method to fix null-font-before-set issue\n * @version 2016/04/18\n * - modified readBoolean, readLine to work with override input feature (e.g. HW2 autograder)\n * @version 2015/05/12\n * - added scroll__() methods for scrolling around in the console\n *   (these are called by ProgramMenuBar but are made public in case clients want them)\n */\n\n/*\n * @(#)ConsoleProgram.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\npackage acm.program;\n\nimport acm.io.*;\nimport java.awt.*;\nimport java.io.*;\nimport java.util.*;\nimport java.util.List;\n\n/* Class: ConsoleProgram() */\n/**\n * This class is a standard subclass of <code><a href=\"Program.html\">Program</a></code>\n * that installs a console in the window.\n */\npublic abstract class ConsoleProgram extends AbstractConsoleProgram {\n/* Constructor: ConsoleProgram() */\n/**\n * Creates a new console program.\n *\n * @usage ConsoleProgram program = new ConsoleProgram();\n */\n\tpublic ConsoleProgram() {\n\t\tadd(getConsole(), CENTER);\n\t\tvalidate();\n\t}\n\t\n/* Method: run() */\n/**\n * Specifies the code to be executed as the program runs.\n * The <code>run</code> method is required for applications that have\n * a thread of control that runs even in the absence of user actions,\n * such as a program that uses console interation or that involves\n * animation.  GUI-based programs that operate by setting up an initial\n * configuration and then wait for user events usually do not specify a\n * <code>run</code> method and supply a new definition for <code>init</code>\n * instead.\n */\n\tpublic void run() {\n\t\t/* Empty */\n\t}\n\n/* Method: init() */\n/**\n * Specifies the code to be executed as startup time before the\n * <code>run</code> method is called.  Subclasses can override this\n * method to perform any initialization code that would ordinarily\n * be included in an applet <code>init</code> method.  In general,\n * subclasses will override <code>init</code> in GUI-based programs\n * where the program simply sets up an initial state and then waits\n * for events from the user.  The <code>run</code> method is required\n * for applications in which there needs to be some control thread\n * while the program runs, as in a typical animation.\n *\n * @usage program.init();\n */\n\tpublic void init() {\n\t\t/* Empty */\n\t}\n\n/* Factory method: createConsole() */\n/**\n * Creates the console used by the <code>ConsoleProgram</code>.\n *\n * @usage IOConsole console = program.createConsole();\n * @return The console to be used by the program\n */\n\tprotected IOConsole createConsole() {\n\t\treturn new IOConsole();\n\t}\n\n\t// METHODS ADDED BY MARTY\n\t\n\n\t// BEGIN SNEAKY AUTOGRADER CODE //\n\t\n\t/* Instance Variables */\n\tprivate InputFileReader inputReader = null;\n\tprivate boolean outputCapture = false;\n\tprivate boolean inputOverride = false;\n\tprivate List<String> echoedComments = null;\n\tprivate StringBuilder capturedOutput = new StringBuilder();\n\t\n\t/* Static Constants */\n\tprivate static final String absolveStudentStr = \"[NOT THE STUDENT'S FAULT!]\"; \n\n\t/* Administrative Methods */\n\tprivate boolean shouldOverrideInput() {\n\t\treturn inputOverride && (inputReader != null && inputReader.peekInputLine() != null);\t\t\t\n\t}\n\n\t/**\n\t * Signals the ConsoleProgram to use the input profile read from the file\n\t * with inputFilename, rather than prompt the user for input.\n\t * @param inputFilename \tFile to draw the input from.\n\t */\n\tpublic void overrideInput(String inputFilename) {\n\t\tif (!inputOverride) {\n\t\t\tinputOverride = true;\n\t\t\tinputReader = new InputFileReader(inputFilename);\n\t\t\techoedComments = new ArrayList<String>();\n\t\t\tString newTitle = getTitle() + \" [Input from \" + inputFilename + \"]\";\n\t\t\tsetTitle(newTitle);\n\t\t}\n\t}\n\t\n\t/**\n\t * Signals the ConsoleProgram to use the input profile read from the given stream,\n\t * rather than prompt the user for input.\n\t * @param inputFilename \tFile to draw the input from.\n\t */\n\tpublic void overrideInput(InputStream stream) {\n\t\tif (!inputOverride) {\n\t\t\tinputOverride = true;\n\t\t\tinputReader = new InputFileReader(stream);\n\t\t\techoedComments = new ArrayList<String>();\n\t\t\tString newTitle = getTitle() + \" [Input from file]\";\n\t\t\tsetTitle(newTitle);\n\t\t}\n\t}\n\t\n\t/**\n\t * Signals the ConsoleProgram to use the input profile read from the given reader,\n\t * rather than prompt the user for input.\n\t * @param inputFilename \tFile to draw the input from.\n\t */\n\tpublic void overrideInput(Reader reader) {\n\t\tif (!inputOverride) {\n\t\t\tinputOverride = true;\n\t\t\tinputReader = new InputFileReader(reader);\n\t\t\techoedComments = new ArrayList<String>();\n\t\t\tString newTitle = getTitle() + \" [Input from file]\";\n\t\t\tsetTitle(newTitle);\n\t\t}\n\t}\n\t\n\tpublic void captureOutput() {\n\t\tcaptureOutput(true);\n\t}\n\t\n\tpublic void captureOutput(boolean capture) {\n\t\toutputCapture = capture;\n\t\tif (capturedOutput == null) {\n\t\t\tcapturedOutput = new StringBuilder();\n\t\t}\n\t\tif (!outputCapture && capturedOutput.length() > 0) {\n\t\t\tcapturedOutput.delete(0, capturedOutput.length());\n\t\t}\n\t}\n\t\n\tpublic String getCapturedOutput() {\n\t\treturn capturedOutput.toString();\n\t}\n\t\n\t/**\n\t * Print all echoed comments from the input override file onscreen.  \n\t */\n\tpublic void echoComments() {\n\t\tprintln(getComments());\n\t}\n\t\n\t/**\n\t * Print all echoed comments from the input override file onscreen.  \n\t */\n\tpublic String getComments() {\n\t\tStringBuilder builder = new StringBuilder();\n\t\tif (inputOverride) {\t\t\n\t\t\tinputReader.flush();\n\t\t\tIterator<String> iter = echoedComments.iterator();\n\t\t\twhile (iter.hasNext()) {\n\t\t\t\tbuilder.append(iter.next().replace(\"#> \", \"\"));\n\t\t\t\tbuilder.append('\\n');\n\t\t\t}\n\t\t}\n\t\treturn builder.toString();\n\t}\n\t\n\t/* Overridden \"Hijacked\" Methods */\n\tpublic void print(String value) {\n\t\t// all other print()s call print(String)\n\t\tif (outputCapture) {\n\t\t\tcapturedOutput.append(value);\n\t\t}\n\t\tsuper.print(value);\n\t}\n\t\n\tpublic void print(String value, Color color) {\n\t\t// all other print()s call print(String)\n\t\tif (outputCapture) {\n\t\t\tcapturedOutput.append(value);\n\t\t}\n\t\tsuper.print(value, color);\n\t}\n\t\n\tpublic void printf(String format, Object... args) {\n\t\t// BUGFIX: used to append captured output here, but implementation\n\t\t// of super.printf() calls super.print(), which made it print twice\n\t\tsuper.printf(format, args);\n\t}\n\t\n\tpublic void println() {\n\t\tif (outputCapture) {\n\t\t\tcapturedOutput.append('\\n');\n\t\t}\n\t\tsuper.println();\n\t}\n\t\n\tpublic void println(String value) {\n\t\t// all other println()s call println(String)\n\t\tif (outputCapture) {\n\t\t\tcapturedOutput.append(value);\n\t\t\tcapturedOutput.append('\\n');\n\t\t}\n\t\tsuper.println(value);\n\t}\n\t\n\tpublic void println(String value, Color color) {\n\t\t// all other println()s call println(String)\n\t\tif (outputCapture) {\n\t\t\tcapturedOutput.append(value);\n\t\t\tcapturedOutput.append('\\n');\n\t\t}\n\t\tsuper.println(value, color);\n\t}\n\t\n\t@Override\n\tpublic int readInt(String prompt, int min, int max) {\t\n\t\tint result;\n\t\t\n\t\tif (shouldOverrideInput()) {\n\t\t\tif (prompt != null && !prompt.endsWith(\" \")) {\n\t\t\t\tprompt += \" \";\n\t\t\t}\n\t\t\tresult = getInputInt();\t\n\t\t\tcheckRange(result, min, max);\n\t\t\t// super.println(prompt + result + \"\\t<readInt>\");\n\t\t\tif (prompt != null) {\n\t\t\t\tprint(prompt);\n\t\t\t}\n\t\t\tprint(result, Color.BLUE);\n\t\t\tprintln(\"\\t<readInt>\");\n\t\t} else {\n\t\t\tresult = super.readInt(prompt, min, max);\n\t\t\tif (outputCapture) {\n\t\t\t\tcapturedOutput.append(result);\n\t\t\t\tcapturedOutput.append(\"\\n\");\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn result; \n\t}\n\n\t@Override\n\tpublic double readDouble(String prompt, double min, double max) {\t\n\t\tdouble result;\n\t\t\n\t\tif (shouldOverrideInput()) {\n\t\t\tif (prompt != null && !prompt.endsWith(\" \")) {\n\t\t\t\tprompt += \" \";\n\t\t\t}\n\t\t\tresult = getInputDouble();\n\t\t\tcheckRange(result, min, max);\n\t\t\t// super.println(prompt + result + \"\\t<readDouble>\");\n\t\t\tif (prompt != null) {\n\t\t\t\tprint(prompt);\n\t\t\t}\n\t\t\tprint(result, Color.BLUE);\n\t\t\tprintln(\"\\t<readDouble>\");\n\t\t} else {\n\t\t\tresult = super.readDouble(prompt, min, max); \n\t\t\tif (outputCapture) {\n\t\t\t\tcapturedOutput.append(result);\n\t\t\t\tcapturedOutput.append(\"\\n\");\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn result; \n\t}\n\n\t@Override\n\tpublic boolean readBoolean(String prompt, String y, String n) {\t\n\t\tBoolean result = false;\n\t\t\n\t\tif (shouldOverrideInput()) {\n\t\t\tif (prompt != null && !prompt.endsWith(\" \")) {\n\t\t\t\tprompt += \" \";\n\t\t\t}\n\t\t\tif (prompt != null) {\n\t\t\t\tprint(prompt);\n\t\t\t}\n\t\t\tresult = getInputBoolean(y, n);\n\t\t\tprintln(\"\\t<readBoolean>\");\n\t\t} else {\n\t\t\tresult = super.readBoolean(prompt, y, n); \n\t\t}\n\t\t\n\t\treturn result == null ? false : (boolean) result; \n\t}\n\n\t@Override\n\tpublic String readLine(String prompt) {\t\n\t\tString line = \"\";\n\t\t\n\t\tif (shouldOverrideInput()) {\n\t\t\tif (prompt != null && !prompt.endsWith(\" \")) {\n\t\t\t\tprompt += \" \";\n\t\t\t}\n\t\t\tif (prompt != null) {\n\t\t\t\tprint(prompt);\n\t\t\t}\n\t\t\tline = inputReader.readInputLine();\n\t\t\tprintln(line + \"\\t<readLine>\");\n\t\t} else {\n\t\t\tline = super.readLine(prompt);\n\t\t}\n\t\t\n\t\treturn line; \n\t}\n\t\n\tpublic void setEcho() {\n\t\tsetEcho(true);\n\t}\n\n\tpublic void setEcho(boolean echo) {\n\t\tif (getOutputModel() instanceof IOConsole) {\n\t\t\t((IOConsole) getOutputModel()).setEcho(echo);\n\t\t}\n\t}\n\n\t/* Support Methods */\n\tprivate int getInputInt() {\n\t\tString line = null;\n\t\ttry {\n\t\t\tline = inputReader.readInputLine();\n\t\t\treturn Integer.parseInt(line);\n\t\t}\n\t\tcatch (NumberFormatException e) {\n\t\t\tthrow new RuntimeException(absolveStudentStr + \" Poorly formatted integer input: \\\"\" + line + \"\\\"\", e);\n\t\t}\t\t\n\t}\n\t\n\tprivate double getInputDouble() {\n\t\tString line = null;\n\t\ttry {\n\t\t\tline = inputReader.readInputLine();\n\t\t\treturn Double.parseDouble(line);\n\t\t}\n\t\tcatch (NumberFormatException e) {\n\t\t\tthrow new RuntimeException(absolveStudentStr + \" Poorly formatted double input: \\\"\" + line + \"\\\"\", e);\n\t\t}\t\t\n\t}\n\t\n\tprivate Boolean getInputBoolean(String t, String f) {\n\t\tString line = null;\n\t\tif (inputReader != null) {\n\t\t\tline = inputReader.readInputLine();\n\t\t}\n\t\tprint(line, Color.BLUE);\n\t\treturn (t != null && t.equalsIgnoreCase(line)) ? Boolean.TRUE\n\t\t\t\t: (f != null && f.equalsIgnoreCase(line)) ? Boolean.FALSE\n\t\t\t\t: null;\n\t}\n\t\n\tprivate static void checkRange(int value, int min, int max) {\n\t\tif ((min > value) || (max < value))\n\t\t\tthrow new RuntimeException(absolveStudentStr + \" Out of range [\"\n\t\t\t\t\t+ min + \", \" +\tmax + \"] integer input: \" + value);\t\t\n\t}\t\n\t\n\tprivate static void checkRange(double value, double min, double max) {\n\t\tif ((min > value) || (max < value))\n\t\t\tthrow new RuntimeException(absolveStudentStr + \" Out of range [\"\n\t\t\t\t\t+ min + \", \" +\tmax + \"] double input: \" + value);\t\t\n\t}\n\t\n\t/* Input File Reader class */\n\tclass InputFileReader {\n\t\t/* Instance Variables */\n\t\tprivate BufferedReader inputReader;\n\t\tprivate String cachedLine;\n\t\t\n\t\t/* Constructor */\n\t\tpublic InputFileReader(String inputFilename) {\n\t\t\ttry {\n\t\t\t\tcachedLine = null;\n\t\t\t\tif (inputFilename != null)\n\t\t\t\t\tinputReader = new BufferedReader(new FileReader(inputFilename));\n\t\t\t}\n\t\t\tcatch (IOException e) {\n\t\t\t\tthrow new RuntimeException(absolveStudentStr + \" Error while opening file: \" + inputFilename, e);\n\t\t\t}\n\t\t}\n\n\t\t/* Constructor */\n\t\tpublic InputFileReader(InputStream stream) {\n\t\t\tcachedLine = null;\n\t\t\tinputReader = new BufferedReader(new InputStreamReader(stream));\n\t\t}\n\n\t\t/* Constructor */\n\t\tpublic InputFileReader(Reader reader) {\n\t\t\tcachedLine = null;\n\t\t\tinputReader = new BufferedReader(reader);\n\t\t}\n\n\t\t/* Input file reading operations */\n\t\tpublic String readInputLine() {\n\t\t\tString result = peekInputLine();\n\t\t\tcachedLine = null;\n\t\t\treturn result;\n\t\t}\n\t\t\n\t\tpublic String peekInputLine() {\n\t\t\tif (cachedLine == null) advanceLine();\n\t\t\treturn cachedLine;\n\t\t}\n\t\t\n\t\t/* Advances lines in the file until end of file, or a non-comment line appears.\n\t\t * Stores said line into the cachedLine instance variable. */\n\t\tprivate void advanceLine() {\n\t\t\tif (inputReader == null) return;\n\t\t\t\n\t\t\ttry {\n\t\t\t\tcachedLine = inputReader.readLine();\t\t\t\t\n\t\t\t\twhile (isComment(cachedLine)) {\n\t\t\t\t\t// should we echo this line?\n\t\t\t\t\tif (cachedLine.startsWith(echoCommentBeginStr))\n\t\t\t\t\t\techoedComments.add(cachedLine);\n\n\t\t\t\t\tcachedLine = inputReader.readLine();\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (cachedLine == null) {\n\t\t\t\t\tprint(\"[INPUT FILE EXHAUSTED!] \");\n\t\t\t\t\tinputReader = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (IOException e) {\n\t\t\t\tthrow new RuntimeException(absolveStudentStr + \" Error while reading file.\", e);\t\t\n\t\t\t}\t\t\n\t\t}\n\t\t\n\t\tprivate void flush() {\n\t\t\tif (inputReader == null) return;\n\t\t\t\n\t\t\ttry {\n\t\t\t\tcachedLine = inputReader.readLine();\t\t\t\t\n\t\t\t\twhile (cachedLine != null) {\n\t\t\t\t\t// should we echo this line?\n\t\t\t\t\tif (cachedLine.startsWith(echoCommentBeginStr))\n\t\t\t\t\t\techoedComments.add(cachedLine);\n\t\t\t\t\tcachedLine = inputReader.readLine();\t\t\t\t\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (IOException e) {\n\t\t\t\tthrow new RuntimeException(absolveStudentStr + \" Error while reading file.\", e);\t\t\n\t\t\t}\t\t\n\t\t}\n\t\t\n\t\t/* A string is a comment iff it is non-null\n\t\t * and has beginning string \"#\" */\n\t\tprivate boolean isComment(String str) {\n\t\t\treturn (str != null) && (str.startsWith(commentBeginStr));\n\t\t}\n\n\t\t/* Static/String Constants */\n\t\tprivate static final String commentBeginStr = \"#\";\n\t\tprivate static final String echoCommentBeginStr = \"#>\";\n\t\t\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/program/DefaultActionListener.java",
    "content": "/*\n * @author Marty Stepp (current maintainer)\n * @version 2017/04/26\n * - initial version; moved out of Program.java into its own file\n */\n\npackage acm.program;\n\nimport java.awt.Button;\nimport java.awt.Component;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.lang.reflect.Method;\n\nimport acm.util.ErrorException;\n\n/* Package class: DefaultActionListener */\n/**\n * This class is the default action listener added to buttons.\n */\nclass DefaultActionListener implements ActionListener {\n\n\tpublic DefaultActionListener() {\n\t\t/* Empty */\n\t}\n\n\tpublic void actionPerformed(ActionEvent e) {\n\t\tComponent comp = (Component) e.getSource();\n\t\tProgram program = findProgram(comp);\n\t\tif (program != null && countActionListeners(comp) > 1) {\n\t\t\ttry {\n\t\t\t\tClass<?>[] types = { java.awt.event.ActionListener.class };\n\t\t\t\tObject[] args = { this };\n\t\t\t\tMethod removeActionListener = comp.getClass().getMethod(\"removeActionListener\", types);\n\t\t\t\tremoveActionListener.invoke(comp, args);\n\t\t\t\treturn;\n\t\t\t} catch (Exception ex) {\n\t\t\t\tthrow new ErrorException(ex);\n\t\t\t}\n\t\t}\n\t\tString message = \"No ActionListener is attached\";\n\t\tif (comp instanceof Button) {\n\t\t\tmessage += \" to button \" + ((Button) comp).getLabel();\n\t\t} else {\n\t\t\ttry {\n\t\t\t\tMethod getText = comp.getClass().getMethod(\"getText\", new Class[0]);\n\t\t\t\tmessage += \" to button \" + (String) getText.invoke(comp, new Object[0]);\n\t\t\t} catch (Exception ex) {\n\t\t\t\tthrow new ErrorException(ex);\n\t\t\t}\n\t\t}\n\t\tif (program == null) {\n\t\t\tthrow new ErrorException(message);\n\t\t} else {\n\t\t\tprogram.getDialog().showErrorMessage(message);\n\t\t}\n\t}\n\n\tprotected static int countActionListeners(Component comp) {\n\t\ttry {\n\t\t\tMethod getActionListeners = comp.getClass().getMethod(\"getActionListeners\", new Class[0]);\n\t\t\tActionListener[] listeners = (ActionListener[]) getActionListeners.invoke(comp, new Object[0]);\n\t\t\treturn listeners.length;\n\t\t} catch (Exception ex) {\n\t\t\treturn -1;\n\t\t}\n\t}\n\n\tprivate Program findProgram(Component comp) {\n\t\tif (comp instanceof Program) {\n\t\t\treturn (Program) comp;\n\t\t} else if (comp != null) {\n\t\t\treturn findProgram(comp.getParent());\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/program/DialogProgram.java",
    "content": "/*\n * @(#)DialogProgram.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Code cleanup 28-May-07 (ESR)\n//   1. Rewrote code to call setInputModel/setOutputModel\n\npackage acm.program;\n\nimport acm.io.*;\n\n/* Class: DialogProgram() */\n/**\n * This class is a standard subclass of <code><a href=\"Program.html\">Program</a></code>\n * that takes its input from a <code>IODialog</code> object.\n */\npublic abstract class DialogProgram extends Program {\n\n/* Constructor: DialogProgram() */\n/**\n * Creates a new dialog program.\n *\n * @usage DialogProgram program = new DialogProgram();\n */\n\tpublic DialogProgram() {\n\t\tIODialog dialog = getDialog();\n\t\tsetInputModel(dialog);\n\t\tsetOutputModel(dialog);\n\t}\n\n/* Method: run() */\n/**\n * Specifies the code to be executed as the program runs.\n * The <code>run</code> method is required for applications that have\n * a thread of control that runs even in the absence of user actions,\n * such as a program that uses console interation or that involves\n * animation.  GUI-based programs that operate by setting up an initial\n * configuration and then wait for user events usually do not specify a\n * <code>run</code> method and supply a new definition for <code>init</code>\n * instead.\n */\n\tpublic void run() {\n\t\t/* Empty */\n\t}\n\n/* Method: init() */\n/**\n * Specifies the code to be executed as startup time before the\n * <code>run</code> method is called.  Subclasses can override this\n * method to perform any initialization code that would ordinarily\n * be included in an applet <code>init</code> method.  In general,\n * subclasses will override <code>init</code> in GUI-based programs\n * where the program simply sets up an initial state and then waits\n * for events from the user.  The <code>run</code> method is required\n * for applications in which there needs to be some control thread\n * while the program runs, as in a typical animation.\n *\n * @usage program.init();\n */\n\tpublic void init() {\n\t\t/* Empty */\n\t}\n\n/* Inherited method: print(value) */\n/**\n * @inherited Program#void print(String value)\n * Displays the argument value, allowing for the possibility of more\n * output in the same dialog.\n */\n\n/* Inherited method: println() */\n/**\n * @inherited Program#void println()\n * Completes the output line and displays the dialog.\n */\n\n/* Inherited method: println(value) */\n/**\n * @inherited Program#void println(String value)\n * Adds the value to the current output line and then displays the dialog.\n */\n\n/* Inherited method: readLine() */\n/**\n * @inherited Program#String readLine()\n * Puts up a dialog box asking the user for a line of text.\n */\n\n/* Inherited method: readLine(prompt) */\n/**\n * @inherited Program#String readLine(String prompt)\n * Puts up a dialog box asking the user for a line of text.\n */\n\n/* Inherited method: readInt() */\n/**\n * @inherited Program#int readInt()\n * Puts up a dialog box asking the user for an integer.\n */\n\n/* Inherited method: readInt(prompt) */\n/**\n * @inherited Program#int readInt(String prompt)\n * Puts up a dialog box asking the user for an integer.\n */\n\n/* Inherited method: readDouble() */\n/**\n * @inherited Program#double readDouble()\n * Puts up a dialog box asking the user for a double-precision number.\n */\n\n/* Inherited method: readDouble(prompt) */\n/**\n * @inherited Program#double readDouble(String prompt)\n * Puts up a dialog box asking the user for a double-precision number.\n */\n\n/* Inherited method: readBoolean() */\n/**\n * @inherited Program#boolean readBoolean()\n * Puts up a dialog box asking the user for a <code>true</code>/<code>false</code> value.\n */\n\n/* Inherited method: readBoolean(prompt) */\n/**\n * @inherited Program#boolean readBoolean(String prompt)\n * Puts up a dialog box asking the user for a <code>true</code>/<code>false</code> value.\n */\n\n/* Inherited method: readBoolean(prompt) */\n/**\n * @inherited Program#boolean readBoolean(String prompt, trueLabel, falseLabel)\n * Puts up a dialog box asking the user for a boolean value chosen from\n * buttons with the specified labels.\n */\n\n/* Inherited method: getConsole() */\n/**\n * @inherited Program#IOConsole getConsole()\n * Returns the console associated with this program.\n */\n\n/* Inherited method: getDialog() */\n/**\n * @inherited Program#IODialog getDialog()\n * Returns the dialog used for user interaction.\n */\n\n/* Inherited method: getReader() */\n/**\n * @inherited Program#BufferedReader getReader()\n * Returns a <code>BufferedReader</code> whose input comes from the console.\n */\n\n/* Inherited method: getWriter() */\n/**\n * @inherited Program#PrintWriter getWriter()\n * Returns a <code>PrintWriter</code> whose output is directed to the console.\n */\n\n/* Inherited method: setTitle(title) */\n/**\n * @inherited Program#void setTitle(String title)\n * Sets the title of this program.\n */\n\n/* Inherited method: getTitle() */\n/**\n * @inherited Program#String getTitle()\n * Gets the title of this program.\n */\n\n/* Inherited method: pause(milliseconds) */\n/**\n * @inherited Program#void pause(double milliseconds)\n * Delays the calling thread for the specified time.\n */\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/program/GObjectProgram.java",
    "content": "/*\n * @author Marty Stepp (current maintainer)\n * @version 2017/04/25\n * - initial version; moved out of GraphicsProgram.java into its own file\n */\n\npackage acm.program;\n\nimport java.lang.reflect.Method;\nimport acm.graphics.*;\nimport acm.util.*;\n\n/* Package class: GObjectProgram */\n/**\n * This class is used to launch a program containing a single\n * <code>GObject</code> instance at its center.\n */\nclass GObjectProgram extends GraphicsProgram {\n\n\t/* Hook method: runHook() */\n\t/**\n\t * Calls the run method in the graphical object.\n\t */\n\tprotected void runHook() {\n\t\tGObject gobj = (GObject) getStartupObject();\n\t\tGDimension size = gobj.getSize();\n\t\tadd(gobj, (getWidth() - size.getWidth()) / 2,\n\t\t\t\t(getHeight() - size.getHeight()) / 2);\n\t\ttry {\n\t\t\tClass<?> gobjClass = gobj.getClass();\n\t\t\tString className = gobjClass.getName();\n\t\t\tclassName = className.substring(className.lastIndexOf(\".\") + 1);\n\t\t\tsetTitle(className);\n\t\t\tMethod run = gobjClass.getMethod(\"run\", new Class[0]);\n\t\t\tif (run == null)\n\t\t\t\tthrow new ErrorException(className + \" has no run method\");\n\t\t\trun.invoke(gobj, new Object[0]);\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/program/GProgramListener.java",
    "content": "/*\n * @author Marty Stepp (current maintainer)\n * @version 2017/04/26\n * - alphabetized methods\n * @version 2017/04/25\n * - initial version; moved out of GraphicsProgram.java into its own file\n */\n\npackage acm.program;\n\nimport java.awt.event.*;\nimport java.lang.reflect.Method;\nimport acm.graphics.*;\nimport acm.util.*;\n\n/* Package class: GProgramListener */\n/**\n * The <code>GProgramListener</code> class implements the waitForClick method\n * and the objectdraw-style listener model.\n */\nclass GProgramListener implements MouseListener, MouseMotionListener {\n\t// private fields\n\tprivate GraphicsProgram myProgram;\n\tprivate Method mousePressedHook;\n\tprivate Method mouseReleasedHook;\n\tprivate Method mouseClickedHook;\n\tprivate Method mouseMovedHook;\n\tprivate Method mouseDraggedHook;\n\tprivate boolean clickFlag;\n\n\t/* Constructor: GProgramListener() */\n\t/**\n\t * Creates the <code>GProgramListener</code>.\n\t */\n\tpublic GProgramListener(GraphicsProgram program) {\n\t\tmyProgram = program;\n\t\ttry {\n\t\t\tClass<?> programClass = program.getClass();\n\t\t\tClass<?>[] types = { acm.graphics.GPoint.class };\n\t\t\ttry {\n\t\t\t\tmousePressedHook = programClass\n\t\t\t\t\t\t.getMethod(\"mousePressed\", types);\n\t\t\t} catch (NoSuchMethodException ex) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tmouseReleasedHook = programClass.getMethod(\"mouseReleased\",\n\t\t\t\t\t\ttypes);\n\t\t\t} catch (NoSuchMethodException ex) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tmouseClickedHook = programClass\n\t\t\t\t\t\t.getMethod(\"mouseClicked\", types);\n\t\t\t} catch (NoSuchMethodException ex) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tmouseMovedHook = programClass.getMethod(\"mouseMoved\", types);\n\t\t\t} catch (NoSuchMethodException ex) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tmouseDraggedHook = programClass\n\t\t\t\t\t\t.getMethod(\"mouseDragged\", types);\n\t\t\t} catch (NoSuchMethodException ex) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n\t/* Method: mouseClicked() */\n\t/**\n\t * Called by the event-handling system when the mouse is clicked in the\n\t * canvas.\n\t */\n\tpublic void mouseClicked(MouseEvent e) {\n\t\tif (mouseClickedHook != null) {\n\t\t\tObject[] args = { new GPoint(e.getX(), e.getY()) };\n\t\t\ttry {\n\t\t\t\tmouseClickedHook.invoke(myProgram, args);\n\t\t\t} catch (Exception ex) {\n\t\t\t\tthrow new ErrorException(ex);\n\t\t\t}\n\t\t}\n\t\tsignalClickOccurred();\n\t}\n\n\t/* Method: mouseDragged() */\n\t/**\n\t * Called by the event-handling system when the mouse is dragged with the\n\t * button down.\n\t */\n\tpublic void mouseDragged(MouseEvent e) {\n\t\tif (mouseDraggedHook != null) {\n\t\t\tObject[] args = { new GPoint(e.getX(), e.getY()) };\n\t\t\ttry {\n\t\t\t\tmouseDraggedHook.invoke(myProgram, args);\n\t\t\t} catch (Exception ex) {\n\t\t\t\tthrow new ErrorException(ex);\n\t\t\t}\n\t\t}\n\t}\n\n\t/* Method: mouseEntered() */\n\t/**\n\t * Called by the event-handling system when the mouse enters the component.\n\t */\n\tpublic void mouseEntered(MouseEvent e) {\n\t\t/* Empty */\n\t}\n\n\t/* Method: mouseExited() */\n\t/**\n\t * Called by the event-handling system when the mouse leaves the component.\n\t */\n\tpublic void mouseExited(MouseEvent e) {\n\t\t/* Empty */\n\t}\n\n\t/* Method: mouseMoved() */\n\t/**\n\t * Called by the event-handling system when the mouse moves.\n\t */\n\tpublic void mouseMoved(MouseEvent e) {\n\t\tif (mouseMovedHook != null) {\n\t\t\tObject[] args = { new GPoint(e.getX(), e.getY()) };\n\t\t\ttry {\n\t\t\t\tmouseMovedHook.invoke(myProgram, args);\n\t\t\t} catch (Exception ex) {\n\t\t\t\tthrow new ErrorException(ex);\n\t\t\t}\n\t\t}\n\t}\n\n\t/* Method: mousePressed() */\n\t/**\n\t * Called by the event-handling system when the mouse button is pressed.\n\t */\n\tpublic void mousePressed(MouseEvent e) {\n\t\tif (mousePressedHook != null) {\n\t\t\tObject[] args = { new GPoint(e.getX(), e.getY()) };\n\t\t\ttry {\n\t\t\t\tmousePressedHook.invoke(myProgram, args);\n\t\t\t} catch (Exception ex) {\n\t\t\t\tthrow new ErrorException(ex);\n\t\t\t}\n\t\t}\n\t}\n\n\t/* Method: mouseReleased() */\n\t/**\n\t * Called by the event-handling system when the mouse button is released.\n\t */\n\tpublic void mouseReleased(MouseEvent e) {\n\t\tif (mouseReleasedHook != null) {\n\t\t\tObject[] args = { new GPoint(e.getX(), e.getY()) };\n\t\t\ttry {\n\t\t\t\tmouseReleasedHook.invoke(myProgram, args);\n\t\t\t} catch (Exception ex) {\n\t\t\t\tthrow new ErrorException(ex);\n\t\t\t}\n\t\t}\n\t}\n\n\t/* Method: needsMouseMotionListeners() */\n\t/**\n\t * Returns true if this listener has to respond to mouse motion events as\n\t * well.\n\t */\n\tpublic boolean needsMouseMotionListeners() {\n\t\treturn mouseMovedHook != null || mouseDraggedHook != null;\n\t}\n\n\t/* Private method: signalClickOccurred() */\n\t/**\n\t * Notifies any waiting objects that a click has occurred.\n\t */\n\tprivate synchronized void signalClickOccurred() {\n\t\tclickFlag = true;\n\t\tnotifyAll();\n\t}\n\t\n\t/* Method: waitForClick() */\n\t/**\n\t * Waits for a mouse click in the window before proceeding.\n\t * \n\t * @usage waitForClick();\n\t */\n\tpublic synchronized void waitForClick() {\n\t\tclickFlag = false;\n\t\twhile (!clickFlag) {\n\t\t\ttry {\n\t\t\t\twait();\n\t\t\t} catch (InterruptedException ex) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/program/GraphicsProgram.java",
    "content": "/*\n * @version 2018/06/20\n * - added mouse wheel events\n * @version 2017/06/10\n * - added setOpaque/isOpaque\n * @version 2017/04/26\n * - added setShowPixelInfo, setShowPixelGrid\n * - added remove(x, y), removeAll(x, y)\n * @version 2017/04/25\n * - added Save / Save As menu actions for saving graphics output to an image\n * - added Compare Output menu action for checking graphics output against an expected image\n * - alphabetized methods\n * - moved GProgramListener, GObjectProgram classes out into their own files\n * @version 2016/10/12\n * - added clear method as alias for removeAll\n * - added getCanvasSize\n * @version 2016/05/05\n * - added get/setCanvasSize,Width,Height methods for better control over central drawing canvas size\n * - modified setSize to call setCanvasSize because that's what students actually want\n * @version 2016/04/26\n * - modified return type of getElementAt to avoid need for type cast\n * - made GraphicsProgram implement Iterable<GObject>\n * @version 2015/05/09\n * - added methods to control pause/tick functionality\n * @version 2015/04/21\n * - incorporated addMouse/KeyListeners automatically so they don't need to be called\n */\n\n/*\n * @(#)GraphicsProgram.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Code cleanup 30-Jan-07 (ESR)\n//   1. Renamed instance variable \"listener\" to \"eventListener\" to avoid\n//      warning messages from some compilers.\n//   2. Removed unnecessary startHook code.\n\npackage acm.program;\n\nimport acm.graphics.*;\nimport acm.util.*;\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.awt.image.*;\nimport java.util.*;\n\n/**\n * This class is a standard subclass of\n * <code><a href=\"Program.html\">Program</a></code> whose principal window is\n * used for drawing graphics.\n */\npublic abstract class GraphicsProgram extends Program\n\t\timplements GraphicsProgramInterface, Iterable<GObject> {\n\t// private fields\n\tprivate GCanvas gc;\n\tprivate GProgramListener eventListener;\n\tprivate boolean listenersAdded = false;\n\n\t/* Constructor: GraphicsProgram() */\n\t/**\n\t * Creates a new graphics program.\n\t * \n\t * @usage GraphicsProgram program = new GraphicsProgram();\n\t */\n\tprotected GraphicsProgram() {\n\t\teventListener = new GProgramListener(this);\n\t\tgc = createGCanvas();\n\t\tgc.addMouseListener(eventListener);\n\t\tif (eventListener.needsMouseMotionListeners()) {\n\t\t\tgc.addMouseMotionListener(eventListener);\n\t\t}\n\t\tadd(gc, CENTER);\n\t\tvalidate();\n\n\t\t// added by Marty Stepp 2015/04/21 - no reason not to hear mouse/key events\n\t\taddMouseListeners();\n\t\taddKeyListeners();\n\t}\n\n\t/* Method: add(gobj) */\n\t/**\n\t * Adds a new graphical object to this container.\n\t * \n\t * @usage add(gobj);\n\t * @param gobj\n\t *            The graphical object to add\n\t */\n\tpublic void add(GObject gobj) {\n\t\tgc.add(gobj);\n\t}\n\n\t/* Method: add(gobj, x, y) */\n\t/**\n\t * Adds the graphical object to the canvas and sets its location to the\n\t * point (<code>x</code>,&nbsp;<code>y</code>).\n\t * \n\t * @usage add(gobj, x, y);\n\t * @param gobj\n\t *            The graphical object to add\n\t * @param x\n\t *            The new x-coordinate for the object\n\t * @param y\n\t *            The new y-coordinate for the object\n\t */\n\tpublic final void add(GObject gobj, double x, double y) {\n\t\tgobj.setLocation(x, y);\n\t\tadd(gobj);\n\t}\n\n\t/* Method: add(gobj, pt) */\n\t/**\n\t * Adds the graphical object to the canvas and sets its location to the\n\t * specified point.\n\t * \t\n\t * @usage add(gobj, pt);\n\t * @param gobj\n\t *            The graphical object to add\n\t * @param pt\n\t *            The new coordinates of the point\n\t */\n\tpublic final void add(GObject gobj, GPoint pt) {\n\t\tgobj.setLocation(pt);\n\t\tadd(gobj);\n\t}\n\n\t/* Method: add(comp, x, y) */\n\t/**\n\t * Adds the component to the canvas and sets its location to the point (\n\t * <code>x</code>,&nbsp;<code>y</code>).\n\t * \n\t * @usage add(comp, x, y);\n\t * @param comp\n\t *            The component to add\n\t * @param x\n\t *            The new x-coordinate for the object\n\t * @param y\n\t *            The new y-coordinate for the object\n\t */\n\tpublic final void add(Component comp, double x, double y) {\n\t\tcomp.setLocation(GMath.round(x), GMath.round(y));\n\t\tgc.add(comp);\n\t}\n\n\t/* Method: add(comp, pt) */\n\t/**\n\t * Adds the component to the canvas and sets its location to the specified\n\t * point.\n\t * \n\t * @usage add(comp, pt);\n\t * @param comp\n\t *            The component to add\n\t * @param pt\n\t *            A <code>GPoint</code> object giving the coordinates of the\n\t *            point\n\t */\n\tpublic final void add(Component comp, GPoint pt) {\n\t\tadd(comp, pt.getX(), pt.getY());\n\t}\n\n\t/* Method: addKeyListeners() */\n\t/**\n\t * Adds the program as a <code>KeyListener</code> to the canvas.\n\t * \n\t * @usage addKeyListeners();\n\t */\n\tpublic void addKeyListeners() {\n\t\tgc.addKeyListener(this);\n\t}\n\n\t/* Method: addKeyListeners(listener) */\n\t/**\n\t * Adds the specified listener as a <code>KeyListener</code> to the canvas.\n\t * \n\t * @usage addKeyListeners(listener);\n\t * @param listener\n\t *            A <code>KeyListener</code> object\n\t */\n\tpublic void addKeyListeners(KeyListener listener) {\n\t\tgc.addKeyListener(listener);\n\t}\n\n\t/* Method: addMouseListeners() */\n\t/**\n\t * Adds the program as both a <code>MouseListener</code> and\n\t * <code>MouseMotionListener</code> to the canvas.\n\t * \n\t * @usage addMouseListeners();\n\t */\n\tpublic void addMouseListeners() {\n\t\tif (!listenersAdded) {\n\t\t\t// avoid attaching same listeners twice\n\t\t\tgc.addMouseListener(this);\n\t\t\tgc.addMouseMotionListener(this);\n\t\t\tgc.addMouseWheelListener(this);\n\t\t\tlistenersAdded = true;\n\t\t}\n\t}\n\n\t/* Method: addMouseListeners(listener) */\n\t/**\n\t * Adds the specified listener as a <code>MouseListener</code> and/or\n\t * <code>MouseMotionListener</code>, as appropriate, to the canvas.\n\t * \n\t * @usage addMouseListeners(listener);\n\t * @param listener\n\t *            A listener object that is either a <code>MouseListener</code>,\n\t *            a <code>MouseMotionListener</code>, or both\n\t */\n\tpublic void addMouseListeners(EventListener listener) {\n\t\tboolean ok = false;\n\t\tif (listener instanceof MouseListener) {\n\t\t\tgc.addMouseListener((MouseListener) listener);\n\t\t\tok = true;\n\t\t}\n\t\tif (listener instanceof MouseMotionListener) {\n\t\t\tgc.addMouseMotionListener((MouseMotionListener) listener);\n\t\t\tok = true;\n\t\t}\n\t\tif (!ok)\n\t\t\tthrow new ErrorException(\"addMouseListeners: Illegal listener\");\n\t}\n\n\t/* Method: clear() */\n\t/**\n\t * Removes all graphical objects from this container.\n\t * Equivalent to removeAll but also clears pixel data.\n\t * \n\t * @usage clear();\n\t */\n\tpublic void clear() {\n\t\tgc.clear();\n\t}\n\n\t/* Method: clearCanvas() */\n\t/**\n\t * Removes all graphical objects from this container.\n\t * Equivalent to removeAll.\n\t * \n\t * @usage clearCanvas();\n\t */\n\tpublic void clearCanvas() {\n\t\tremoveAll();\n\t}\n\n\t/* Factory method: createGCanvas() */\n\t/**\n\t * Creates the <code>GCanvas</code> used by the <code>GraphicsProgram</code>\n\t * . Subclasses can override this method to create their own\n\t * <code>GCanvas</code> types.\n\t * \n\t * @usage GCanvas gc = program.createGCanvas();\n\t * @return The <code>GCanvas</code> to be inserted into the program\n\t * @noshow\n\t */\n\tprotected GCanvas createGCanvas() {\n\t\treturn new GCanvas();\n\t}\n\n\t/* Protected method: endHook() */\n\t/**\n\t * Ensures that the window is repainted at the end of the program.\n\t */\n\tprotected void endHook() {\n\t\tsuper.endHook();\n\t\tgc.repaint();\n\t}\n\n\t/**\n\t * Returns the height of the central canvas area.\n\t * @return the height of the central canvas area\n\t */\n\tpublic double getCanvasHeight() {\n\t\tif (gc != null) {\n\t\t\treturn gc.getHeight();\n\t\t} else {\n\t\t\treturn getHeight();\n\t\t}\n\t}\n\n\t/**\n\t * Returns the size of the central canvas area.\n\t * @return the size of the central canvas area\n\t */\n\tpublic Dimension getCanvasSize() {\n\t\treturn new Dimension((int) getCanvasWidth(), (int) getCanvasHeight());\n\t}\n\n\t/**\n\t * Returns the width of the central canvas area.\n\t * @return the width of the central canvas area\n\t */\n\tpublic double getCanvasWidth() {\n\t\tif (gc != null) {\n\t\t\treturn gc.getWidth();\n\t\t} else {\n\t\t\treturn getWidth();\n\t\t}\n\t}\n\n\t/* Method: getElementCount() */\n\t/**\n\t * Returns the number of graphical objects stored in this\n\t * <code>GCanvas</code>.\n\t * \n\t * @usage int n = getElementCount();\n\t * @return The number of graphical objects in this <code>GCanvas</code>\n\t */\n\tpublic int getElementCount() {\n\t\treturn gc.getElementCount();\n\t}\n\n\t/* Method: getElement(index) */\n\t/**\n\t * Returns the graphical object at the specified index, numbering from back\n\t * to front in the the <i>z</i> dimension.\n\t * \n\t * @usage GObject gobj = getElement(index);\n\t * @param index\n\t *            The index of the component to return\n\t * @return The graphical object at the specified index\n\t */\n\t@SuppressWarnings(\"unchecked\")\n\tpublic <T extends GObject> T getElement(int index) {\n\t\treturn (T) gc.getElement(index);\n\t}\n\n\t/* Method: getElementAt(x, y) */\n\t/**\n\t * Returns the topmost graphical object that contains the point (\n\t * <code>x</code>, <code>y</code>), or <code>null</code> if no such object\n\t * exists.\n\t * \n\t * @usage GObject gobj = program.getElementAt(x, y);\n\t * @param x\n\t *            The x-coordinate of the point being tested\n\t * @param y\n\t *            The y-coordinate of the point being tested\n\t * @return The graphical object at the specified location, or\n\t *         <code>null</code> if no such object exists.\n\t */\n\t@SuppressWarnings(\"unchecked\")\n\tpublic <T extends GObject> T getElementAt(double x, double y) {\n\t\tGObject result = gc.getElementAt(x, y);\n\t\tif (result != null && invisibleObjects.contains(result)) {\n\t\t\treturn null;\n\t\t} else {\n\t\t\treturn (T) result;\n\t\t}\n\t}\n\n\t/**\n\t * This version of getElementAt accepts a variable number of coordinate\n\t * pairs (in x1, y1, x2, y2, x3, y3, ... order) and will return the\n\t * topmost graphical objectfound at any of these pairs.\n\t * The pairs are checked in the order they are passed.\n\t * If no graphical object is found at any of these coordinate pairs,\n\t * null is returned. \n\t */\n\tpublic <T extends GObject> T getElementAt(double... coords) {\n\t\treturn gc.getElementAt(coords);\n\t}\n\n\t/* Method: getElementAt(pt) */\n\t/**\n\t * Returns the topmost graphical object that contains the specified point,\n\t * or <code>null</code> if no such object exists.\n\t * \n\t * @usage GObject gobj = program.getElementAt(pt);\n\t * @param pt\n\t *            The coordinates being tested\n\t * @return The graphical object at the specified location, or\n\t *         <code>null</code> if no such object exists\n\t */\n\tpublic final <T extends GObject> T getElementAt(GPoint pt) {\n\t\treturn getElementAt(pt.getX(), pt.getY());\n\t}\n\n\t/* Method: getGCanvas() */\n\t/**\n\t * Returns the <code>GCanvas</code> object used by this program.\n\t * \n\t * @usage GCanvas gc = getGCanvas();\n\t * @return The <code>GCanvas</code> object used by the program\n\t */\n\tpublic GCanvas getGCanvas() {\n\t\treturn gc;\n\t}\n\n\t/**\n\t * Returns true if a graphical object exists that touches the given\n\t * (x, y) pixel position, or false if no such object exists.\n\t */\n\tpublic boolean hasElementAt(double x, double y) {\n\t\treturn gc.hasElementAt(x, y);\n\t}\n\n\t/**\n\t * Returns true if a graphical object exists that touches any of the given\n\t * (x, y) pixel positions, or false if no such object exists.\n\t * This method accepts a variable number of coordinate\n\t * pairs (in x1, y1, x2, y2, x3, y3, ... order).\n\t * The pairs are checked in the order they are passed.\n\t */\n\tpublic boolean hasElementAt(double... coords) {\n\t\treturn gc.hasElementAt(coords);\n\t}\n\n\t/**\n\t * Returns true if a graphical object exists that touches the given\n\t * (x, y) pixel position, or false if no such object exists.\n\t */\n\tpublic boolean hasElementAt(GPoint point) {\n\t\treturn gc.hasElementAt(point);\n\t}\n\n\t/* Method: init() */\n\t/**\n\t * Specifies the code to be executed as startup time before the\n\t * <code>run</code> method is called. Subclasses can override this method to\n\t * perform any initialization code that would ordinarily be included in an\n\t * applet <code>init</code> method. In general, subclasses will override\n\t * <code>init</code> in GUI-based programs where the program simply sets up\n\t * an initial state and then waits for events from the user. The\n\t * <code>run</code> method is required for applications in which there needs\n\t * to be some control thread while the program runs, as in a typical\n\t * animation.\n\t * \n\t * @usage program.init();\n\t */\n\tpublic void init() {\n\t\t/* Empty */\n\t}\n\n\t/**\n\t * Whether this program's canvas uses anti-aliasing, which is\n\t * smoothing and blending of neighboring pixels.\n\t * Default true.\n\t */\n\tpublic boolean isAntiAliasing() {\n\t\treturn gc.isAntiAliasing();\n\t}\n\t\n\t/**\n\t * Whether this program has an opaque background.\n\t * Default false.\n\t */\n\tpublic boolean isOpaque() {\n\t\treturn gc.isOpaque();\n\t}\n\t\n\t/* Protected method: isStarted() */\n\t/**\n\t * Checks to see whether this program has started, usually by checking to\n\t * see whether some pane exists. Subclasses can override this method to\n\t * ensure that their structures are visible before proceeding.\n\t * \n\t * @noshow\n\t */\n\tprotected boolean isStarted() {\n\t\tif (gc == null || !super.isStarted())\n\t\t\treturn false;\n\t\tDimension size = gc.getSize();\n\t\treturn (size != null) && (size.width != 0) && (size.height != 0);\n\t}\n\n\t/* Method: iterator() */\n\t/**\n\t * Returns an <code>Iterator</code> that cycles through the elements within\n\t * this container in the default direction, which is from back to front. You\n\t * can also run the iterator in the opposite direction by using the <a\n\t * href=\"#iterator(int)\"><code>iterator</code></a><code>(</code><font\n\t * size=-1><i>direction</i></font><code>)</code> form of this method.\n\t * \n\t * <p>\n\t * Applets that want to run in browsers, however, should avoid using this\n\t * method, because <code>Iterator</code> is not supported on 1.1 browsers.\n\t * For maximum portability, you should rely instead on the <a\n\t * href=\"GContainer.html#getElementCount()\"><code>getElementCount</code></a>\n\t * and <a href=\"GContainer.html#getElement(int)\"><code>getElement</code></a>\n\t * methods, which provide the same functionality in a browser-compatible\n\t * way.\n\t * \n\t * @usage Iterator<GObject> i = iterator();\n\t * @return An <code>Iterator</code> ranging over the elements of the\n\t *         container from back to front\n\t */\n\tpublic Iterator<GObject> iterator() {\n\t\treturn gc.iterator();\n\t}\n\n\t/* Method: iterator(direction) */\n\t/**\n\t * Returns an <code>Iterator</code> that cycles through the elements within\n\t * this container in the specified direction, which must be one of the\n\t * constants <a href=\"../graphics/GContainer.html#FRONT_TO_BACK\">\n\t * <code>FRONT_TO_BACK</code></a> or <a\n\t * href=\"GContainer.html#BACK_TO_FRONT\"><code>BACK_TO_FRONT</code></a> from\n\t * the <a href=\"../graphics/GContainer.html\"><code>GContainer</code></a>\n\t * interface.\n\t * <p>\n\t * \n\t * <code>  for (Iterator&lt;GObject&gt; i = iterator(direction); i.hasNext(); )</code>\n\t * \n\t * <p>\n\t * Applets that want to run in browsers, however, should avoid using this\n\t * method, because <code>Iterator</code> is not supported on 1.1 browsers.\n\t * For maximum portability, you should rely instead on the <a\n\t * href=\"GContainer.html#getElementCount()\"><code>getElementCount</code></a>\n\t * and <a href=\"GContainer.html#getElement(int)\"><code>getElement</code></a>\n\t * methods, which provide the same functionality in a browser-compatible\n\t * way.\n\t * \n\t * @usage Iterator<GObject> i = iterator(direction);\n\t * @return An <code>Iterator</code> ranging over the elements of the\n\t *         container in the specified direction\n\t */\n\tpublic Iterator<GObject> iterator(int direction) {\n\t\treturn gc.iterator(direction);\n\t}\n\t\n\t/**\n\t * Removes the top-most graphical object at the given (x, y) position from this container.\n\t * If no graphical object is located at that position, does nothing.\n\t * \n\t * @usage remove(x, y);\n\t */\n\tpublic void remove(double x, double y) {\n\t\tgc.remove(x, y);\n\t}\n\n\t/**\n\t * Removes the top-most graphical object at the given (x, y) position from this container.\n\t * If no graphical object is located at that position, does nothing.\n\t * \n\t * @usage remove(pt);\n\t */\n\tpublic void remove(GPoint pt) {\n\t\tgc.remove(pt);\n\t}\n\n\t/* Method: remove(gobj) */\n\t/**\n\t * Removes a graphical object from this container.\n\t * \n\t * @usage remove(gobj);\n\t * @param gobj\n\t *            The graphical object to remove\n\t */\n\tpublic void remove(GObject gobj) {\n\t\tgc.remove(gobj);\n\t}\n\n\t/* Method: removeAll() */\n\t/**\n\t * Removes all graphical objects from this container. Note that this\n\t * definition overrides the <code>Container</code> version of\n\t * <code>removeAll</code>, which is replaced by <a\n\t * href=\"#removeAllComponents()\"><code>removeAllComponents</code></a>.\n\t * \n\t * @usage removeAll();\n\t */\n\tpublic void removeAll() {\n\t\tgc.removeAll();\n\t}\n\t\n\t/**\n\t * Removes all graphical objects at the given (x, y) position from this container.\n\t * If no graphical objects are located at that position, does nothing.\n\t * \n\t * @usage removeAll(x, y);\n\t */\n\tpublic void removeAll(double x, double y) {\n\t\tgc.removeAll(x, y);\n\t}\n\n\t/**\n\t * Removes all graphical objects at the given (x, y) positions from this container.\n\t * If no graphical objects are located at that position, does nothing.\n\t * \n\t * @usage removeAll(x1, y1, x2, y2, ...);\n\t */\n\tpublic void removeAll(double... coords) {\n\t\tgc.removeAll(coords);\n\t}\n\n\t/**\n\t * Removes all graphical objects at the given (x, y) position from this container.\n\t * If no graphical objects are located at that position, does nothing.\n\t * \n\t * @usage removeAll(pt);\n\t */\n\tpublic void removeAll(GPoint pt) {\n\t\tgc.removeAll(pt);\n\t}\n\n\t/* Method: removeAllComponents() */\n\t/**\n\t * Removes all components from this container.\n\t * \n\t * @usage removeAllComponents();\n\t * @noshow\n\t */\n\tpublic void removeAllComponents() {\n\t\tsuper.removeAll();\n\t}\n\n\t/* Method: repaint() */\n\t/**\n\t * Signals a need to repaint this window.\n\t * \n\t * @noshow\n\t */\n\tpublic void repaint() {\n\t\tgc.repaint();\n\t\tsuper.repaint();\n\t}\n\n\t/* Method: run() */\n\t/**\n\t * Specifies the code to be executed as the program runs. The\n\t * <code>run</code> method is required for applications that have a thread\n\t * of control that runs even in the absence of user actions, such as a\n\t * program that uses console interation or that involves animation.\n\t * GUI-based programs that operate by setting up an initial configuration\n\t * and then wait for user events usually do not specify a <code>run</code>\n\t * method and supply a new definition for <code>init</code> instead.\n\t */\n\tpublic void run() {\n\t\t// empty\n\t}\n\t\n\t/**\n\t * Sets whether this program's canvas uses anti-aliasing, which is\n\t * smoothing and blending of neighboring pixels.\n\t * Default true.\n\t */\n\tpublic void setAntiAliasing(boolean antialias) {\n\t\tgc.setAntiAliasing(antialias);\n\t}\n\n\t/* Override method: setBackground(bg) */\n\t/**\n\t * Sets the background color of the <code>GCanvas</code>.\n\t * \n\t * @usage setBackground(bg);\n\t * @param bg\n\t *            The new background color\n\t * @noshow\n\t */\n\tpublic void setBackground(Color bg) {\n\t\tsuper.setBackground(bg);\n\t\tif (gc != null) {\n\t\t\tgc.setBackground(bg);\n\t\t}\n\t}\n\n\t/**\n\t * Sets this program to be exactly the right size so that its graphical canvas will be\n\t * the given height in pixels.\n\t * This is often preferred over setHeight() because you'll know exactly how many pixels\n\t * are available to you for drawing.\n\t * @param height the desired height of the drawing canvas, in pixels\n\t */\n\tpublic void setCanvasHeight(double height) {\n\t\tsetCanvasSize(getCanvasWidth(), height);\n\t}\n\n\t/**\n\t * Sets this program to be exactly the right size so that its graphical canvas will be\n\t * the given size in pixels.\n\t * This is often preferred over setSize() because you'll know exactly how many pixels\n\t * are available to you for drawing.\n\t * @param width the desired width of the drawing canvas, in pixels\n\t * @param height the desired height of the drawing canvas, in pixels\n\t */\n\tpublic void setCanvasSize(double width, double height) {\n\t\tif (gc != null) {\n\t\t\tDimension dim = new Dimension((int) width, (int) height);\n\t\t\tgc.setSize(dim);\n\t\t\tgc.setPreferredSize(dim);\n\t\t\tWindow window = getWindow();\n\t\t\tif (window != null) {\n\t\t\t\twindow.pack();\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Sets this program to be exactly the right size so that its graphical canvas will be\n\t * the given width in pixels.\n\t * This is often preferred over setWidth() because you'll know exactly how many pixels\n\t * are available to you for drawing.\n\t * @param width the desired width of the drawing canvas, in pixels\n\t */\n\tpublic void setCanvasWidth(double width) {\n\t\tsetCanvasSize(width, getCanvasHeight());\n\t}\n\n\t/**\n\t * Sets whether this program has an opaque background.\n\t * Default false.\n\t */\n\tpublic void setOpaque(boolean opaque) {\n\t\tgc.setOpaque(opaque);\n\t}\n\t\n\t/**\n\t * Sets this program to be exactly the right size so that its graphical canvas will be\n\t * the given size in pixels.\n\t * @param width the desired width of the drawing canvas, in pixels\n\t * @param height the desired height of the drawing canvas, in pixels\n\t */\n\t@Override\n\tpublic void setSize(double width, double height) {\n\t\tString caller = getMyCaller();\n\t\tif (caller.startsWith(\"java.\") || caller.startsWith(\"javax.\")) {\n\t\t\tsuper.setSize(width, height);\n\t\t} else {\n\t\t\tsuper.setSize(width, height);\n\t\t\tsetCanvasSize(width, height);\n\t\t}\n\t}\n\t\n\t/**\n\t * Sets whether to display information on this canvas about the current pixel where\n\t * the mouse pointer is resting in this program's graphical canvas.\n\t * Displays the current pixel's (x, y) coordinate and color.\n\t */\n\tpublic void setShowPixelInfo(boolean show) {\n\t\tgc.setShowPixelInfo(show);\n\t}\n\n\t/**\n\t * Sets this program to be exactly the right size so that its graphical canvas will be\n\t * the given size in pixels.\n\t * @param width the desired width of the drawing canvas, in pixels\n\t * @param height the desired height of the drawing canvas, in pixels\n\t */\n\t@Override\n\tpublic void setSize(int width, int height) {\n\t\tString caller = getMyCaller();\n\t\tif (caller.startsWith(\"java.\") || caller.startsWith(\"javax.\")) {\n\t\t\tsuper.setSize(width, height);\n\t\t} else {\n\t\t\tsuper.setSize(width, height);\n\t\t\tsetCanvasSize(width, height);\n\t\t}\n\t}\n\n\t/**\n\t * Sets this program's window to be the given size in pixels.\n\t * @param width the desired width of the window, in pixels\n\t * @param height the desired height of the window, in pixels\n\t */\n\tpublic void setWindowSize(double width, double height) {\n\t\tsuper.setSize(width, height);\n\t}\n\n\t/* Static method: startGraphicsProgram(gobj, args) */\n\t/**\n\t * Creates a <code>GraphicsProgram</code> containing the specified\n\t * <code>GObject</code> and then starts it. This code is called only by the\n\t * <code>start</code> method in <code>GObject</code>.\n\t * \n\t * @usage startGraphicsProgram(gobj, args);\n\t * @param gobj\n\t *            The object to be inserted into the\n\t *            <code>GraphicsProgram</code>\n\t * @param args\n\t *            The array of arguments\n\t * @noshow\n\t */\n\tpublic static void startGraphicsProgram(GObject gobj, String[] args) throws Throwable {\n\t\tGraphicsProgram program = new GObjectProgram();\n\t\tprogram.setStartupObject(gobj);\n\t\tprogram.start(args);\n\t}\n\n\t/**\n\t * Returns an image representation of the current contents of the screen.\n\t */\n\tpublic BufferedImage toImage() {\n\t\treturn gc.toImage();\n\t}\n\t\n\t/* Method: waitForClick() */\n\t/**\n\t * Waits for a mouse click in the window before proceeding.\n\t * \n\t * @usage waitForClick();\n\t */\n\tpublic void waitForClick() {\n\t\teventListener.waitForClick();\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/program/GraphicsProgramInterface.java",
    "content": "/*\n * @version 2017/07/21\n * - additional methods: hasElementAt(GPoint), etc.\n */\n\npackage acm.program;\n\nimport acm.graphics.*;\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.util.*;\n\npublic interface GraphicsProgramInterface extends ProgramInterface, GCanvasInterface, MouseListener, MouseMotionListener {\n\tpublic void add(GObject gobj);\n\tpublic void add(GObject gobj, double x, double y);\n\tpublic void add(GObject gobj, GPoint pt);\n\tpublic void addKeyListeners();\n\tpublic void addKeyListeners(KeyListener listener);\n\tpublic void addMouseListeners();\n\tpublic void addMouseListeners(EventListener listener);\n\tpublic void clearCanvas();\n\tpublic double getCanvasHeight();\n\tpublic Dimension getCanvasSize();\n\tpublic double getCanvasWidth();\n\tpublic <T extends GObject> T getElementAt(double x, double y);\n\tpublic <T extends GObject> T getElementAt(GPoint pt);\n\tpublic boolean hasElementAt(double x, double y);\n\tpublic boolean hasElementAt(GPoint point);\n\tpublic GCanvas getGCanvas();\n\tpublic void remove(double x, double y);\n\tpublic void remove(GPoint pt);\n\tpublic void removeAll();\n\tpublic void removeAll(double x, double y);\n\tpublic void removeAll(GPoint pt);\n\tpublic void removeAllComponents();\n\tpublic void setCanvasHeight(double height);\n\tpublic void setCanvasSize(double width, double height);\n\tpublic void setCanvasWidth(double width);\n\tpublic void setSize(double width, double height);\n\tpublic void setWindowSize(double width, double height);\n\tpublic void waitForClick();\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/program/HeadlessGraphicsProgram.java",
    "content": "/*\n * @version 2017/07/21\n * - added add() overloads\n * @version 2017/06/10\n * - added setOpaque/isOpaque\n * - set default background color to WHITE\n * @version 2017/05/02\n * - added fakeMousePress/Moved/Dragged\n * @version 2017/04/27\n * - initial version; added to support graphical problems in CodeStepByStep\n */\n\npackage acm.program;\n\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.awt.image.*;\nimport java.util.*;\nimport acm.graphics.*;\nimport acm.util.*;\n\npublic class HeadlessGraphicsProgram implements GraphicsProgramInterface {\n\t// copied from Program.java\n\tprivate static final int DEFAULT_HEIGHT = 492;\n\tprivate static final int DEFAULT_WIDTH = 754;\n\tprivate static final String GRAPHICAL_OUTPUT_SAVE_FILENAME_PROPERTY = \"graphicsprogram.save\";\n\tprivate static boolean antialiasDefault = false;\n\tprivate static boolean exitEnabled = false;\n\tprivate static String saveFile;\n\t\n\tprivate String title = \"GraphicsProgram\";\n\tprivate int windowWidth;\n\tprivate int windowHeight;\n\tprivate GCanvasInterface gc;\n\n\tpublic static String getSaveFile() {\n\t\tif (saveFile == null) {\n\t\t\t// fall back to a default passed through a System property\n\t\t\treturn System.getProperty(GRAPHICAL_OUTPUT_SAVE_FILENAME_PROPERTY);\n\t\t} else {\n\t\t\treturn saveFile;\n\t\t}\n\t}\n\t\n\tpublic static void setAntiAliasDefault(boolean antialias) {\n\t\tantialiasDefault = antialias;\n\t}\n\t\n\tpublic static void setSaveFile(String filename) {\n\t\tsaveFile = filename;\n\t}\n\t\n\t// instance initializer\n\t{\n\t\tgc = new GCanvas();\n\t\tgc.setAntiAliasing(antialiasDefault);\n\t\tgc.setOpaque(true);\n\t\tsetSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);\n\t\tsetTitle(getClass().getName());\n\t\tsetBackground(Color.WHITE);\n\t\tgc.setBackground(Color.WHITE);\n\t}\n\t\n\tpublic final void main(String[] args) {\n\t\tinit();\n\t\trun();\n\n\t\t// who knows why, but I need a short delay here or\n\t\t// else the graphical data will intermittently not save  :-/\n\t\ttry {\n\t\t\tThread.sleep(600);\n\t\t} catch (InterruptedException ie) {\n\t\t\t// empty\n\t\t}\n\n\t\tsave();\n\t\texit();\n\t}\n\n\t// ProgramInterface methods\n\n\tpublic final void exit() {\n\t\tif (exitEnabled) {\n\t\t\ttry {\n\t\t\t\tThread.sleep(50);\n\t\t\t\tSystem.exit(0);\n\t\t\t} catch (Exception e) {\n\t\t\t\t// empty\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic void init() {\n\t\t// empty\n\t}\n\n\tpublic void run() {\n\t\t// empty; override me!\n\t}\n\t\n\tpublic final void save() {\n\t\tString outFileName = getSaveFile();\n\t\tif (outFileName != null) {\n\t\t\tBufferedImage img = toImage();\n\t\t\tMediaTools.saveImage(img, outFileName);\n\t\t}\n\t}\n\n\tpublic void setParameterTable(Map<String, String> table) {\n\t\t// empty\n\t}\n\n\tpublic void setStartupObject(Object obj) {\n\t\t// empty\n\t}\n\n\tpublic void start() {\n\t\t// empty\n\t}\n\n\tpublic void start(String[] args) {\n\t\t// empty\n\t}\n\t\n\tprivate MouseEvent fakeMouseEvent(int x, int y) {\n\t\tComponent component = this.getGCanvas();\n\t\tif (component == null) {\n\t\t\tcomponent = new javax.swing.JPanel();\n\t\t}\n\t\treturn new MouseEvent(\n\t\t\t\t/* source */ component,\n\t\t\t\t/* id */ 0,\n\t\t\t\t/* when */ System.currentTimeMillis(),\n\t\t\t\t/* modifiers */ 0,\n\t\t\t\tx,\n\t\t\t\ty,\n\t\t\t\t/* clickCount */ 1,\n\t\t\t\t/* popupTrigger */ false);\n\t}\n\t\n\tpublic void fakeMouseClicked(int x, int y) {\n\t\tMouseEvent event = fakeMouseEvent(x, y);\n\t\tmousePressed(event);\n\t\tmouseReleased(event);\n\t\tmouseClicked(event);\n\t}\n\t\n\tpublic void fakeMousePressed(int x, int y) {\n\t\tMouseEvent event = fakeMouseEvent(x, y);\n\t\tmousePressed(event);\n\t}\n\t\n\tpublic void fakeMouseReleased(int x, int y) {\n\t\tMouseEvent event = fakeMouseEvent(x, y);\n\t\tmouseReleased(event);\n\t}\n\t\n\tpublic void fakeMouseMoved(int x, int y) {\n\t\tMouseEvent event = fakeMouseEvent(x, y);\n\t\tmouseMoved(event);\n\t}\n\t\n\tpublic void fakeMouseDragged(int x, int y) {\n\t\tMouseEvent event = fakeMouseEvent(x, y);\n\t\tmouseDragged(event);\n\t}\n\t\n\tpublic void fakeMouseDragSequence(int... coords) {\n\t\tif (coords.length == 0 || coords.length % 2 != 0) {\n\t\t\tthrow new IllegalArgumentException(\"must pass an even number of x/y coordinates\");\n\t\t}\n\t\tmousePressed(fakeMouseEvent(coords[0], coords[1]));\n\t\tfor (int i = 0; i < coords.length - 1; i += 2) {\n\t\t\tmouseDragged(fakeMouseEvent(coords[i], coords[i + 1]));\n\t\t}\n\t\tmouseReleased(fakeMouseEvent(coords[coords.length - 2], coords[coords.length - 1]));\n\t}\n\t\n\t// GraphicsProgramInterface methods\n\n\tpublic Component add(Component comp) {\n\t\t// empty\n\t\treturn comp;\n\t}\n\n\tpublic void add(Component comp, Object constraints) {\n\t\t// empty\n\t}\n\t\n\tpublic void add(Component comp, String region, Object constraints) {\n\t\t// empty\n\t}\n\n\tpublic void add(GObject gobj) {\n\t\tgc.add(gobj);\n\t}\n\n\tpublic void add(GObject gobj, double x, double y) {\n\t\tgc.add(gobj, x, y);\n\t}\n\n\tpublic void add(GObject gobj, GPoint pt) {\n\t\tgc.add(gobj, pt);\n\t}\n\n\tpublic void add(Component comp, double x, double y) {\n\t\t// empty\n\t}\n\n\tpublic void add(Component comp, GPoint pt) {\n\t\t// empty\n\t}\n\n\tpublic void addActionListeners() {\n\t\t// empty\n\t}\n\t\n\tpublic void clear() {\n\t\tgc.clear();\n\t}\n\t\n\tpublic Color getBackground() {\n\t\treturn gc.getBackground();\n\t}\n\n\tpublic int getElementCount() {\n\t\treturn gc.getElementCount();\n\t}\n\n\tpublic <T extends GObject> T getElement(int index) {\n\t\treturn gc.getElement(index);\n\t}\n\n\tpublic <T extends GObject> T getElementAt(double x, double y) {\n\t\treturn gc.getElementAt(x, y);\n\t}\n\n\tpublic <T extends GObject> T getElementAt(double... coords) {\n\t\treturn gc.getElementAt(coords);\n\t}\n\n\tpublic <T extends GObject> T getElementAt(GPoint pt) {\n\t\treturn gc.getElementAt(pt);\n\t}\n\t\n\tpublic Font getFont() {\n\t\treturn gc.getFont();\n\t}\n\n\tpublic boolean hasElementAt(double x, double y) {\n\t\treturn gc.hasElementAt(x, y);\n\t}\n\n\tpublic boolean hasElementAt(double... coords) {\n\t\treturn gc.hasElementAt(coords);\n\t}\n\t\n\tpublic boolean isAntiAliasing() {\n\t\treturn gc.isAntiAliasing();\n\t}\n\n\tpublic Iterator<GObject> iterator() {\n\t\treturn gc.iterator();\n\t}\n\n\tpublic Iterator<GObject> iterator(int direction) {\n\t\treturn gc.iterator(direction);\n\t}\n\n\tpublic void mouseClicked(MouseEvent e) {\n\t\t// empty\n\t}\n\n\tpublic void mousePressed(MouseEvent e) {\n\t\t// empty\n\t}\n\n\tpublic void mouseReleased(MouseEvent e) {\n\t\t// empty\n\t}\n\n\tpublic void mouseEntered(MouseEvent e) {\n\t\t// empty\n\t}\n\n\tpublic void mouseExited(MouseEvent e) {\n\t\t// empty\n\t}\n\n\tpublic void mouseDragged(MouseEvent e) {\n\t\t// empty\n\t}\n\n\tpublic void mouseMoved(MouseEvent e) {\n\t\t// empty\n\t}\n\t\n\tpublic void remove(double x, double y) {\n\t\tgc.remove(x, y);\n\t}\n\n\tpublic void remove(GPoint pt) {\n\t\tgc.remove(pt);\n\t}\n\n\tpublic void remove(GObject gobj) {\n\t\tgc.remove(gobj);\n\t}\n\n\tpublic void removeAll() {\n\t\tgc.clear();\n\t}\n\n\tpublic void removeAll(double x, double y) {\n\t\tgc.removeAll(x, y);\n\t}\n\n\tpublic void removeAll(double... coords) {\n\t\tgc.removeAll(coords);\n\t}\n\n\tpublic void removeAll(GPoint pt) {\n\t\tgc.removeAll(pt);\n\t}\n\n\tpublic void repaint() {\n\t\tgc.repaint();\n\t}\n\t\n\tpublic void setAntiAliasing(boolean antialias) {\n\t\tgc.setAntiAliasing(antialias);\n\t}\n\n\tpublic void setBackground(Color bg) {\n\t\tgc.setBackground(bg);\n\t}\n\n\tpublic void setShowPixelInfo(boolean show) {\n\t\t// empty\n\t}\n\n\tpublic BufferedImage toImage() {\n\t\treturn gc.toImage();\n\t}\n\n\tpublic void addKeyListeners() {\n\t\t// empty\n\t}\n\n\tpublic void addKeyListeners(KeyListener listener) {\n\t\t// empty\n\t}\n\n\tpublic void addMouseListeners() {\n\t\t// empty\n\t}\n\n\tpublic void addMouseListeners(EventListener listener) {\n\t\t// empty\n\t}\n\n\tpublic void clearCanvas() {\n\t\tgc.clear();\n\t}\n\n\tpublic int getHeight() {\n\t\tif (gc.getHeight() > 0) {\n\t\t\treturn gc.getHeight();\n\t\t} else {\n\t\t\treturn windowHeight;\n\t\t}\n\t}\n\t\n\tpublic Dimension getSize() {\n\t\tif (gc.getSize().width > 0 && gc.getSize().height > 0) {\n\t\t\treturn gc.getSize();\n\t\t} else {\n\t\t\treturn new Dimension(windowWidth, windowHeight);\n\t\t}\n\t}\n\t\n\tpublic int getWidth() {\n\t\tif (gc.getWidth() > 0) {\n\t\t\treturn gc.getWidth();\n\t\t} else {\n\t\t\treturn windowWidth;\n\t\t}\n\t}\n\n\tpublic double getCanvasHeight() {\n\t\treturn gc.getHeight();\n\t}\n\n\tpublic Dimension getCanvasSize() {\n\t\treturn gc.getSize();\n\t}\n\n\tpublic double getCanvasWidth() {\n\t\treturn gc.getWidth();\n\t}\n\n\tpublic GCanvas getGCanvas() {\n\t\t// gc not guaranteed to be a GCanvas\n\t\tif (gc instanceof GCanvas) {\n\t\t\treturn (GCanvas) gc;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tpublic boolean hasElementAt(GPoint point) {\n\t\treturn gc.hasElementAt(point);\n\t}\n\t\n\tpublic boolean isOpaque() {\n\t\treturn gc.isOpaque();\n\t}\n\t\n\tpublic void pause(double milliseconds) {\n\t\t// don't actually pause! do nothing\n\t}\n\n\tpublic void removeAllComponents() {\n\t\tgc.clear();\n\t}\n\n\tpublic void setCanvasHeight(double height) {\n\t\twindowHeight = (int) height;\n\t\tgc.setSize(new Dimension(gc.getSize().width, (int) height));\n\t}\n\n\tpublic void setCanvasSize(double width, double height) {\n\t\twindowWidth = (int) width;\n\t\twindowHeight = (int) height;\n\t\tgc.setSize(new Dimension((int) width, (int) height));\n\t}\n\n\tpublic void setCanvasWidth(double width) {\n\t\twindowWidth = (int) width;\n\t\tgc.setSize(new Dimension((int) width, gc.getSize().height));\n\t}\n\t\n\tpublic void setFont(Font font) {\n\t\tgc.setFont(font);\n\t}\n\n\tpublic void setForeground(Color color) {\n\t\t// empty\n\t}\n\n\tpublic void setOpaque(boolean opaque) {\n\t\tgc.setOpaque(opaque);\n\t}\n\t\n\tpublic void setSize(Dimension size) {\n\t\twindowWidth = (int) size.width;\n\t\twindowHeight = (int) size.height;\n\t\tgc.setSize(size);\n\t}\n\n\tpublic void setSize(double width, double height) {\n\t\twindowWidth = (int) width;\n\t\twindowHeight = (int) height;\n\t\tgc.setSize(new Dimension((int) width, (int) height));\n\t}\n\n\tpublic void setWindowSize(double width, double height) {\n\t\tsetSize(width, height);\n\t}\n\n\tpublic void waitForClick() {\n\t\t// empty\n\t}\n\n\tpublic String getTitle() {\n\t\treturn title;\n\t}\n\n\tpublic void print(Object value) {\n\t\tSystem.out.print(value);\n\t}\n\n\tpublic void print(String value) {\n\t\tSystem.out.print(value);\n\t}\n\n\tpublic void printf(String format, Object... args) {\n\t\tSystem.out.printf(format, args);\n\t}\n\n\tpublic void println() {\n\t\tSystem.out.println();\n\t}\n\n\tpublic void println(Object value) {\n\t\tSystem.out.println(value);\n\t}\n\n\tpublic void println(String value) {\n\t\tSystem.out.println(value);\n\t}\n\n\tpublic void setTitle(String title) {\n\t\tthis.title = title;\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/program/Program.java",
    "content": "/*\n * @version 2017/10/22\n * - added alertError methods \n * @version 2017/08/04\n * - added system property to disable load/save of configuration \n * @version 2017/07/21\n * - added add() overloads\n * @version 2017/07/14\n * - disabled console error messages when unable to save/load config data\n * @version 2017/05/31\n * - made Program class implement various EventListener sub-interface types\n * @version 2017/05/30\n * - changes to N/S/E/W/C panel opacity and root pane enabled (for setBackground calls)\n * @version 2017/05/22\n * - added JS-style alert, confirm, and prompt methods\n * @version 2017/05/21\n * - added setCenter/Bottom/RightX/Y\n * @version 2017/04/26\n * - added setShowPixelInfo, setShowPixelGrid\n * - alphabetized methods (phew!)\n * - moved other classes out into their own files\n * @version 2017/04/25\n * - added menu bar actions to save/diff/print program's graphical output\n * @version 2016/11/13\n * - added fileSize(directory, filename)\n * @version 2016/11/03\n * - added removeFromRegion\n * @version 2016/10/21\n * - added center, pack, setWidth, setHeight, setLocation, setX, setY\n * - fixed printf bug (was mistakenly inserting \\n line break at end)\n * - fixed bug in fileExistsInJar with paths that end with \"/\"\n * @version 2016/10/02\n * - added getYesOrNo\n * @version 2016/07/14\n * - bug fix for fileExistsInsideJAR, openFileFromJAR on Windows\n * @version 2016/05/22\n * - slight refactor of outermost exception-handling code\n *   (let exceptions bubble out to aid student debugging)\n * @version 2016/04/28\n * - bug fix in openFileFromDisk (was ignoring directory passed)\n * @version 2016/04/16\n * - added some file-reading methods to help with programs packed into JARs/applets\n *   e.g. fileExists, openFileFromJAR\n * @version 2015/10/13\n * - added animation-related methods (animation, setAnimationDelay, startAnimation, etc.)\n * - style fix: moved fields/constants to top of class as the good lord intended\n */\n\n/*\n * @(#)Program.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Bug fix 30-Jan-07 (ESR, JTFBug 2007-002)\n//   1. Change default in getCommandLine to behave as if Linux.\n//   2. If environment is headless, substitute a CommandLineProgram.\n//\n// Feature enhancement 2-Mar-07 (ESR)\n//   1. Added menu option to export the program as an applet.\n//   2. Added menu option to submit the program via email.\n//\n// Bug fix 8-May-07 (ESR, JTFBug 2007-007)\n//   1. Fixed significant bug introduced by JDK 1.6 in which it is no\n//      longer possible to display a JApplet as a component.\n//\n// Code cleanup 28-May-07 (ESR)\n//   1. Added generic type tags.\n//   2. Rewrote code for handling command-line arguments.\n//   3. Repackaged the ButtonLike interface.\n//   4. Added setInputModel, setOutputModel, and setDialog for symmetry\n//\n// Bug fix 10-Sep-07 (ESR, JTFBug 2007-012)\n//   1. Fixed deadlock bug arising from change to thread handling in JDK 1.6.\n//\n// Code cleanup 10-May-08 (ESR)\n//   1. Changed code to account for introduction of CommandLineProgram class.\n//\n// Bug fix 21-May-08 (ESR, JTFBug 2008-002)\n//   1. Fixed the logic for isAppletMode.\n//\n// Code cleanup 21-May-08 (ESR)\n//   1. Changed factory method for the menu bar to pass the program.\n//   2. Redesigned other code features to account for redesign of the\n//      ProgramMenuBar class.\n//\n// Bug fix 10-Jun-08 (ESR, JTFBug 2008-003)\n//   1. Fixed serious bug caused by overriding the definitions of\n//      getWidth and getHeight (which was, in retrospect, a poor design).\n//      To avoid requiring changes to client code, the implementation now\n//      checks to see whether these methods have been called from inside\n//      the java package hierarchy and, if so, maintains their traditional\n//      semantics.\n\npackage acm.program;\n\nimport acm.graphics.*;\nimport acm.gui.*;\nimport acm.io.*;\nimport acm.util.*;\nimport stanford.cs106.gui.*;\nimport stanford.cs106.io.*;\nimport stanford.cs106.util.ExceptionUtils;\nimport stanford.cs106.util.StringUtils;\nimport stanford.spl.*;\nimport java.applet.*;\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.io.*;\nimport java.lang.reflect.*;\nimport java.util.*;\nimport javax.swing.*;\nimport javax.swing.event.*;\n\n/* Class: Program */\n/**\n * This class is the superclass for all executable\n * programs in the <code>acm.program</code> package.  Its principal\n * role is to unify the concepts of applets and applications in a single\n * class, although it also provides applications with many other useful\n * facilities not traditionally available in applications.\n *\n * <p>In many programming environments, objects that are specific instances\n * of a <code>Program</code> subclass will run automatically without any\n * special action on your part.  For maximum portability, you might want\n * to define a static <code>main</code> method as described in the comments\n * for the standard implementation of <a href=\"#main(String[])\"><code>main</code></a>.\n */\n@SuppressWarnings(\"deprecation\")\npublic abstract class Program\n\t\textends JApplet\n\t\timplements ActionListener,\n\t\tAdjustmentListener,\n\t\tChangeListener,\n\t\tComponentListener,\n\t\tContainerListener,\n\t\tDocumentListener,\n\t\tFocusListener,\n\t\tIOModel,\n\t\tItemListener,\n\t\tKeyListener,\n\t\tListDataListener,\n\t\tListSelectionListener,\n\t\tMouseListener,\n\t\tMouseInputListener,\n\t\tMouseMotionListener,\n\t\tMouseWheelListener,\n\t\tPopupMenuListener,\n\t\tProgramInterface,\n\t\tRunnable,\n\t\tTextListener,\n\t\tWindowFocusListener,\n\t\tWindowListener,\n\t\tWindowStateListener {\n\n\t/* Private constants */\n\tprivate static final int DEFAULT_HEIGHT = 492;\n\tprivate static final int DEFAULT_WIDTH = 754;\n\tprivate static final int DEFAULT_X = 16;\n\tprivate static final int DEFAULT_Y = 40;\n\tprivate static final int PRINT_MARGIN = 36;\n\n\t/* file where Stanford lib settings (e.g. window size/font) are saved on disk */\n\tprotected static final String CONFIG_FILE_NAME = \"spl-jar-settings.txt\";\n\t\n\t/* system property to disable/enable saving/loading configuration */\n\tprivate static final String CONFIG_PROPERTY = \"spl.save.settings\";\n\t\n\t// messages to display when re-prompting on bad user input\n\tprivate static final String GETYESORNO_DEFAULT_REPROMPT = \"Please type a word that starts with 'Y' or 'N'.\";\n\n\t/* Private fields */\n\tprivate AppletStarter appletStarter;\n\tprivate AppletStub appletStub;\n\tprivate ArrayList<Object> finalizers;\n\tprivate boolean animatedMode = false;\n\tprivate boolean appletMode;\n\tprivate boolean exitOnClose = true;\n\tprivate boolean initFinished;\n\tprivate boolean kill = false;\n\tprivate boolean pauseTickFlag = false;\n\tprivate boolean runFinished = false;\n\tprivate boolean shown;\n\tprivate boolean started;\n\tprivate Component eastBorder;\n\tprivate Component northBorder;\n\tprivate Component southBorder;\n\tprivate Component westBorder;\n\tprivate double pauseScaleFactor = 1.0;\n\tprivate File lastSaveFile;\n\tprivate int animationDelay = 1000 / 50;   // 50 FPS default\n\tprivate IOConsole myConsole;\n\tprivate IODialog myDialog;\n\tprivate IOModel inputModel;\n\tprivate IOModel outputModel;\n\tprivate javax.swing.Timer animationTimer = null;\n\tprivate JFrame programFrame;\n\tprivate JPanel centerPanel;\n\tprivate JPanel eastPanel;\n\tprivate JPanel northPanel;\n\tprivate JPanel southPanel;\n\tprivate JPanel westPanel;\n\tprivate Map<String, String> parameterTable;\n\tprivate Object startupObject;\n\tprivate ProgramMenuBar myMenuBar;\n\tprivate Rectangle programBounds;\n\tprivate String myTitle;\n\tprotected Set<GObject> invisibleObjects = new HashSet<GObject>();\n\n\t/** Required method of ListDataListener interface. */\n\tpublic void\tcontentsChanged(ListDataEvent e) {\n\t\t// empty\n\t}\n\n\t/** Required method of ListDataListener interface. */\n\tpublic void\tintervalAdded(ListDataEvent e) {\n\t\t// empty\n\t}\n\n\t/** Required method of ListDataListener interface. */\n\tpublic void\tintervalRemoved(ListDataEvent e) {\n\t\t// empty\n\t}\n\t\n\t/** Required method of MenuListener interface. */\n\tpublic void menuCanceled(MenuEvent e) {\n\t\t// empty\n\t}\n\t\n\t/** Required method of MenuListener interface. */\n\tpublic void menuDeselected(MenuEvent e) {\n\t\t// empty\n\t}\n\t\n\t/** Required method of MenuListener interface. */\n\tpublic void menuSelected(MenuEvent e) {\n\t\t// empty\n\t}\n\t\n\t/** Required method of PopupMenuListener interface. */\n\tpublic void popupMenuCanceled(PopupMenuEvent e) {\n\t\t// empty\n\t}\n\t\n\t/** Required method of PopupMenuListener interface. */\n\tpublic void popupMenuWillBecomeInvisible(PopupMenuEvent e) {\n\t\t// empty\n\t}\n\t\n\t/** Required method of PopupMenuListener interface. */\n\tpublic void popupMenuWillBecomeVisible(PopupMenuEvent e) {\n\t\t// empty\n\t}\n\t\n\t/** Required method of ListSelectionListener interface. */\n\tpublic void valueChanged(ListSelectionEvent e) {\n\t\t// empty\n\t}\n\n\n\t\n\t/* Default constructor: Program */\n\t/**\n\t * This code initializes the program data structures.\n\t */\n\tprotected Program() {\n\t\tGuiUtils.setSystemLookAndFeel();\n\t\tJTFTools.registerApplet(this);\n\t\tappletMode = checkForAppletMode();\n\t\tshown = false;\n\t\tparameterTable = null;\n\t\tfinalizers = new ArrayList<Object>();\n\t\tmyTitle = getClass().getName();\n\t\tmyTitle = myTitle.substring(myTitle.lastIndexOf(\".\") + 1);\n\t\tappletStub = new ProgramAppletStub(this);\n\t\tsetAppletStub(appletStub);\n\t\tinitContentPane(getContentPane());\n\t\tsetVisible(false);\n\t\tsetConsole(createConsole());\n\t\tmyDialog = createDialogIO();\n\t\tmyDialog.setAssociatedConsole(myConsole);\n\t\tmyMenuBar = createMenuBar();\n\t\tmyConsole.setMenuBar(myMenuBar);\n\t\taddComponentListener(this);\n\t}\n\n\t/* Method: actionPerformed (implements ActionListener) */\n\t/**\n\t * Called when a component (typically a button) is activated.\n\t */\n\tpublic void actionPerformed(ActionEvent e) {\n\t\t// empty\n\t}\n\n\t/* Method: add(comp, region, constraints) */\n\t/**\n\t * Adds the component to the specified border region with the indicated\n\t * constraints object.\n\t *\n\t * @usage add(comp, region, constraints);\n\t * @param comp The component to be added\n\t * @param region The region of the window (<code>NORTH</code>, <code>SOUTH</code>,\n\t *               <code>EAST</code>, <code>WEST</code>, or <code>CENTER</code>)\n\t * @param constraints The constraints object\n\t * @noshow\n\t * @return the component passed\n\t */\n\tpublic void add(Component comp, String region, Object constraints) {\n\t\tif (region.equalsIgnoreCase(NORTH)) {\n\t\t\tnorthPanel.add(comp, constraints);\n\t\t} else if (region.equalsIgnoreCase(SOUTH)) {\n\t\t\tsouthPanel.add(comp, constraints);\n\t\t} else if (region.equalsIgnoreCase(WEST)) {\n\t\t\twestPanel.add(comp, constraints);\n\t\t} else if (region.equalsIgnoreCase(EAST)) {\n\t\t\teastPanel.add(comp, constraints);\n\t\t} else if (region.equalsIgnoreCase(CENTER)) {\n\t\t\tcenterPanel.add(comp, constraints);\n\t\t} else {\n\t\t\tthrow new ErrorException(\"add: Illegal region \" + region);\n\t\t}\n\t}\n\n\t/**\n\t * Adds the program as an <code>ActionListener</code> to every button in\n\t * the structure that does not have a listener already.\n\t *\n\t * @usage addActionListeners();\n\t */\n\tpublic void addActionListeners() {\n\t\taddActionListeners(this);\n\t}\n\n\t/**\n\t * Adds the specified listener to every button in\n\t * the structure that does not have a listener already.\n\t *\n\t * @usage addActionListeners(listener);\n\t * @param listener The <code>ActionListener</code> to be added\n\t */\n\tpublic void addActionListeners(ActionListener listener) {\n\t\taddActionListeners(getContentPane(), listener, /* buttonsOnly */ true);\n\t}\n\n\t/**\n\t * Recursively adds the specified listener as an <code>ActionListener</code> to\n\t * every button in the hierarchy.  Reflection is used because there are many\n\t * possible classes of button-like objects.\n\t */\n\tprivate void addActionListeners(Component comp, ActionListener listener, boolean buttonsOnly) {\n\t\tif (!buttonsOnly || isButton(comp)) {\n\t\t\tif (!hasActionListener(comp)) {\n\t\t\t\ttry {\n\t\t\t\t\tClass<?>[] types = { java.awt.event.ActionListener.class };\n\t\t\t\t\tObject[] args = { listener };\n\t\t\t\t\tMethod addActionListener = comp.getClass().getMethod(\"addActionListener\", types);\n\t\t\t\t\tif (addActionListener != null) {\n\t\t\t\t\t\taddActionListener.invoke(comp, args);\n\t\t\t\t\t}\n\t\t\t\t} catch (Exception ex) {\n\t\t\t\t\tthrow new ErrorException(ex);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (comp instanceof Container) {\n\t\t\tContainer container = (Container) comp;\n\t\t\tint nComponents = container.getComponentCount();\n\t\t\tfor (int i = 0; i < nComponents; i++) {\n\t\t\t\taddActionListeners(container.getComponent(i), listener, buttonsOnly);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Adds the program as an <code>ActionListener</code> to every button in\n\t * the structure that does not have a listener already.\n\t * Also adds action listeners to other components that have action commands.\n\t *\n\t * @usage addActionListeners();\n\t */\n\tpublic void addActionListenersToButtonsOnly() {\n\t\taddActionListeners(getContentPane(), this, /* buttonsOnly */ true);\n\t}\n\n\t/**\n\t * Adds the program as an <code>ActionListener</code> to every button or component in\n\t * the structure that does not have a listener already.\n\t * Also adds action listeners to other components that have action commands.\n\t *\n\t * @usage addAllActionListeners();\n\t */\n\tpublic void addAllActionListeners() {\n\t\taddActionListeners(getContentPane(), this, /* buttonsOnly */ false);\n\t}\n\n\t/* Method: addExitHook(obj) */\n\t/**\n\t * Requests that the program call the <code>exit</code> method in the\n\t * specified object before exiting.\n\t *\n\t * @usage program.addExitHook(obj);\n\t */\n\tpublic void addExitHook(Object obj) {\n\t\tfinalizers.add(obj);\n\t}\n\n\t/* Overridden method: addImpl(comp, constraints, index) */\n\t/**\n\t * Adds the specified component to the content pane using the specified constraints and index.\n\t */\n\tprotected void addImpl(Component comp, Object constraints, int index) {\n\t\tif (isRootPaneCheckingEnabled()) {\n\t\t\tif (constraints == null) {\n\t\t\t\tcenterPanel.add(comp, index);\n\t\t\t} else if (constraints.equals(NORTH)) {\n\t\t\t\tnorthPanel.add(comp, index);\n\t\t\t} else if (constraints.equals(SOUTH)) {\n\t\t\t\tsouthPanel.add(comp, index);\n\t\t\t} else if (constraints.equals(WEST)) {\n\t\t\t\twestPanel.add(comp, index);\n\t\t\t} else if (constraints.equals(EAST)) {\n\t\t\t\teastPanel.add(comp, index);\n\t\t\t} else if (constraints.equals(CENTER)) {\n\t\t\t\tcenterPanel.add(comp, index);\n\t\t\t} else {\n\t\t\t\tcenterPanel.add(comp, constraints, index);\n\t\t\t}\n\t\t\tif (!shown && programFrame != null) {\n\t\t\t\tprogramFrame.setVisible(true);\n\t\t\t\tshown = true;\n\t\t\t}\n\t\t} else {\n\t\t\tsuper.addImpl(comp, constraints, index);\n\t\t}\n\t}\n\t\n\t/**\n\t * Required empty method of AdjustmentListener interface.\n\t */\n\tpublic void adjustmentValueChanged(AdjustmentEvent e) {\n\t\t// empty\n\t}\n\t\n\t/**\n\t * Pops up a dialog box displaying a string representation of the given message.\n\t * @param value the value to display (its toString() method is implicitly called)\n\t */\n\tpublic void alert(Object value) {\n\t\talert(String.valueOf(value));\n\t}\n\n\t/**\n\t * Pops up a dialog box displaying the given message.\n\t * @param message the message to display\n\t */\n\tpublic void alert(String message) {\n\t\tJOptionPane.showMessageDialog(getWindow(), message);\n\t}\n\n\t/**\n\t * Pops up a dialog box displaying the given error message.\n\t * @param message the error message to display\n\t */\n\tpublic void alertError(String message) {\n\t\tJOptionPane.showMessageDialog(getWindow(), \"Error: \" + message, /* title */ \"Error\", JOptionPane.ERROR_MESSAGE);\n\t}\n\n\t/**\n\t * Pops up a dialog box displaying the given error message.\n\t * @param error the error to display\n\t */\n\tpublic void alertError(Throwable error) {\n\t\talertError(error, \"An error of type \" + error.getClass().getSimpleName() + \" was thrown:\");\n\t}\n\n\t/**\n\t * Pops up a dialog box displaying the given error message.\n\t * @param value the value to display\n\t */\n\tpublic void alertError(Throwable th, String message) {\n\t\tString stackTrace = ExceptionUtils.stackTraceToString(th);\n\t\tstackTrace = StringUtils.fitToHeight(stackTrace, 10);\n\t\tJOptionPane.showMessageDialog(getWindow(),\n\t\t\t\tmessage + \"\\n\"\n\t\t\t\t+ th.getMessage() + \"\\n\\n\" + stackTrace,\n\t\t\t\t/* title */ \"Error\", JOptionPane.ERROR_MESSAGE);\n\t}\n\n\t/**\n\t * Override this method to indicate what to do on every frame advance\n\t * in an animated program after setAnimated(true) is called.\n\t */\n\tpublic void animation() {\n\t\t// empty\n\t}\n\n\t/**\n\t * Moves this program's window to the center of the screen.\n\t */\n\tpublic void center() {\n\t\tGuiUtils.centerWindow(getWindow());\n\t}\n\t\n\t/** Required method of DocumentListener interface. */\n\tpublic void changedUpdate(DocumentEvent e) {\n\t\t// empty\n\t}\n\n\t/*\n\t * Override this method to perform any checking of Java compiler flags\n\t * needed by this program.\n\t */\n\tprotected void checkCompilerFlags() {\n\t\t// empty; override me\n\t}\n\n\t/* Private method: checkForAppletMode() */\n\t/**\n\t * Determines whether this program has been invoked as an applet by scanning\n\t * the execution stack to see if the string <code>\"Applet\"</code> appears\n\t * in any method name up the calling chain.\n\t */\n\tprivate boolean checkForAppletMode() {\n\t\tStackTraceElement[] stack = new Throwable().getStackTrace();\n\t\tfor (int i = 1; i < stack.length; i++) {\n\t\t\tif (stack[i].getMethodName().indexOf(\"Applet\") >= 0) return true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Checks whether the program has been stopped via the killMe method.\n\t * Not to be called by students.\n\t */\n\tpublic void checkKill() {\n\t\tif (kill) {\n\t\t\tthrow new Error(\"exit -1\");\n\t\t}\n\t}\n\n\t/* Private method: circumventFrameSizeBug(frame, size) */\n\t/**\n\t * In some versions of the JDK, calling getInsets on a Frame fails to return\n\t * the insets correctly until the frame is validated.  On those systems, it\n\t * is impossible to compute the correct frame size in advance.  The workaround\n\t * is to check that the size of the content pane is equal to what it was supposed\n\t * to be after installing and validating it.  If it is, do nothing to avoid another\n\t * validation repaint.  If not, adjust the size of the frame by however much the\n\t * content pane is too small.\n\t */\n\tprivate void circumventFrameSizeBug(Frame frame, Dimension size) {\n\t\tContainer contentPane = getContentPane();\n\t\tDimension actualSize = contentPane.getSize();\n\t\tif (size.equals(actualSize) || actualSize.width == 0 || actualSize.height == 0) return;\n\t\tDimension frameSize = frame.getSize();\n\t\tframeSize.width += size.width - actualSize.width;\n\t\tframeSize.height += size.height - actualSize.height;\n\t\tframe.setSize(frameSize.width, frameSize.height);\n\t\tframe.validate();\n\t}\n\n\t/*\n\t * Override this method to perform any checking of Java startup settings\n\t * needed by this program.\n\t */\n\tprotected void checkStartupSettings() {\n\t\t// empty; override me\n\t}\n\n\t/** Required method of ContainerListener interface. Does nothing. */\n\tpublic void componentAdded(ContainerEvent e) {\n\t\t// empty\n\t}\n\n\t/** Required method of ComponentListener interface. Does nothing. */\n\tpublic void componentHidden(ComponentEvent e) {\n\t\t// empty\n\t}\n\n\t/** Required method of ComponentListener interface. Does nothing. */\n\tpublic void componentMoved(ComponentEvent e) {\n\t\t// empty\n\t}\n\n\t/** Required method of ContainerListener interface. Does nothing. */\n\tpublic void componentRemoved(ContainerEvent e) {\n\t\t// empty\n\t}\n\n\t/** Required method of ComponentListener interface. Does nothing. */\n\tpublic void componentResized(ComponentEvent e) {\n\t\t// empty\n\t}\n\n\t/** Required method of ComponentListener interface. Does nothing. */\n\tpublic void componentShown(ComponentEvent e) {\n\t\t// empty\n\t}\n\n\t/* Private method: computeProgramBounds() */\n\t/**\n\t * Sets the bounds for this program as specified in the parameters.\n\t */\n\tprivate Rectangle computeProgramBounds() {\n\t\tDimension size = Toolkit.getDefaultToolkit().getScreenSize();\n\t\tint width = decodeSizeParameter(\"WIDTH\", DEFAULT_WIDTH, size.width);\n\t\tint height = decodeSizeParameter(\"HEIGHT\", DEFAULT_HEIGHT, size.height);\n\t\tint x = decodeSizeParameter(\"X\", (width >= size.width) ? 0 : DEFAULT_X, size.width);\n\t\tint y = decodeSizeParameter(\"Y\", (height >= size.height) ? 0 : DEFAULT_Y, size.height);\n\t\treturn new Rectangle(x, y, width, height);\n\t}\n\n\t/**\n\t * Pops up a dialog box displaying the given message and asking the user to choose Yes or No.\n\t * @param value the value to display\n\t * @return true if user chose Yes, false if they chose No\n\t */\n\tpublic boolean confirm(String question) {\n\t\tint result = JOptionPane.showConfirmDialog(getWindow(), question, \"Confirm\", JOptionPane.YES_NO_OPTION);\n\t\treturn result == JOptionPane.YES_OPTION;\n\t}\n\n\t/* Factory method: createConsole() */\n\t/**\n\t * Creates the console used by the <code>ConsoleProgram</code>.  Subclasses can\n\t * override this method to create their own console types.\n\t *\n\t * @usage IOConsole console = program.createConsole();\n\t * @return The console to be used by the program\n\t */\n\tprotected IOConsole createConsole() {\n\t\treturn IOConsole.SYSTEM_CONSOLE;\n\t}\n\n\t/* Factory method: createDialogIO() */\n\t/**\n\t * Creates the dialog used for interaction (primarily by the <code>DialogProgram</code>\n\t * class).  Subclasses can override this method to create their own dialog types.\n\t *\n\t * @usage IODialog dialog = program.createDialogIO();\n\t * @return The dialog to be used by the program\n\t */\n\tprotected IODialog createDialogIO() {\n\t\treturn new IODialog(getContentPane());\n\t}\n\n\t/* Factory method: createMenuBar() */\n\t/**\n\t * Creates a menu bar for use with the program.\n\t *\n\t * @usage ProgramMenuBar menuBar = createMenuBar();\n\t * @return A menu bar for use with this <code>Program</code>\n\t * @noshow\n\t */\n\tprotected ProgramMenuBar createMenuBar() {\n\t\treturn new ProgramMenuBar(this);\n\t}\n\n\t/* Protected static method: createParameterTable(args) */\n\t/**\n\t * Creates a hash table containing the parameters specified in the\n\t * argument list.  Parameters are taken to be any argument that matches\n\t * the template\n\t *\n\t * <p>   <i>name</i><code>=</code><i>value</i>\n\t *\n\t * All other arguments are collected as a tab-separated string and placed\n\t * in an entry under the key <code>\"ARGS\"</code>.  All named parameters\n\t * are converted to lower case to preserve the case-insensitive semantics\n\t * of <code>getParameter</code>.\n\t *\n\t * @usage HashMap<String,String> ht = createParameterTable(args);\n\t * @param args The array of strings passed to the application\n\t * @return A <code>HashMap</code> containing the parameter bindings\n\t */\n\tprotected static Map<String,String> createParameterTable(String[] args) {\n\t\tif (args == null) return Collections.emptyMap();\n\t\tHashMap<String,String> ht = new HashMap<String,String>();\n\t\tString newArgs = \"\";\n\t\tfor (int i = 0; i < args.length; i++) {\n\t\t\tString arg = args[i];\n\t\t\tint equals = arg.indexOf('=');\n\t\t\tif (equals > 0) {\n\t\t\t\tString name = arg.substring(0, equals).toLowerCase();\n\t\t\t\tString value = arg.substring(equals + 1);\n\t\t\t\tht.put(name, value);\n\t\t\t} else {\n\t\t\t\tif (newArgs.length() > 0) newArgs += '\\t';\n\t\t\t\tnewArgs += arg;\n\t\t\t}\n\t\t}\n\t\tht.put(\"ARGS\", newArgs);\n\t\treturn ht;\n\t}\n\n\t/* Factory method: createProgramFrame() */\n\t/**\n\t * Creates the frame containing the program.\n\t *\n\t * @usage Frame frame = program.createProgramFrame();\n\t * @return The newly allocated <code>Frame</code> object\n\t */\n\tprotected JFrame createProgramFrame() {\n\t\treturn new ProgramFrame(getTitle());\n\t}\n\n\t/* Private method: decodeSizeParameter(name, value, max) */\n\t/**\n\t * Decodes a size parameter.\n\t *\n\t * @usage int size = decodeSizeParameter(name, value, max);\n\t * @param name The name of the parameter\n\t * @param value The default value if the parameter is unspecified\n\t * @param max The maximum value if the parameter is specified as a percentage\n\t * @return The integer denoting the size\n\t */\n\tprivate int decodeSizeParameter(String name, int value, int max) {\n\t\tString str = getParameter(name);\n\t\tif (str == null) {\n\t\t\ttry {\n\t\t\t\tClass<?> mainClass = getClass();\n\t\t\t\tField field = mainClass.getField(\"APPLICATION_\" + name);\n\t\t\t\tObject obj = field.get(null);\n\t\t\t\tif (obj instanceof Integer) return ((Integer) obj).intValue();\n\t\t\t\tif (obj instanceof String) {\n\t\t\t\t\tstr = (String) obj;\n\t\t\t\t} else {\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t} catch (Exception ex) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t\tif (str.equals(\"*\")) str = \"100%\";\n\t\tif (str.endsWith(\"%\")) {\n\t\t\tint percent = Integer.parseInt(str.substring(0, str.length() - 1));\n\t\t\treturn (int) Math.round(percent / 100.0 * max);\n\t\t} else {\n\t\t\treturn Integer.parseInt(str);\n\t\t}\n\t}\n\n\t/* Overridden method: destroy() */\n\t/**\n\t * Called when the program has been told to destroy itself.  The code here\n\t * stops the main thread and any animators that have been initiated by this\n\t * applet.\n\t *\n\t * @usage program.destroy();\n\t * @noshow\n\t */\n\tpublic void destroy() {\n\t\tAnimator.shutdown(this);\n\t\tif (appletStarter != null) appletStarter.stop();\n\t}\n\n\t/* Protected method: endHook() */\n\t/**\n\t * Performs class-specific cleanup for the program just after\n\t * it finishes.\n\t * @noshow\n\t */\n\tprotected void endHook() {\n\t\t// empty\n\t}\n\n\t/**\n\t * Generates an ErrorException with the given exception as its cause.\n\t */\n\tpublic void error(Exception ex) {\n\t\tthrow new ErrorException(ex);\n\t}\n\n\t/**\n\t * Generates an ErrorException with the given exception and text.\n\t */\n\tpublic void error(Exception ex, String text) {\n\t\tthrow new ErrorException(text, ex);\n\t}\n\n\t/**\n\t * Generates an ErrorException with the given text as its error message.\n\t */\n\tpublic void error(String text) {\n\t\tthrow new ErrorException(text);\n\t}\n\n\t/* Method: exit() */\n\t/**\n\t * Exits from the program.  Subclasses should override this method if they need\n\t * to perform any actions before shutting down the program, such as asking the\n\t * user to save any unsaved files.  Any clients that do override this method\n\t * should call <code>super.exit()</code> at the end of their processing.\n\t *\n\t * @usage program.exit();\n\t */\n\tpublic void exit() {\n\t\ttry {\n\t\t\tif (!StringUtils.isFalsey(System.getProperty(CONFIG_PROPERTY))\n\t\t\t\t\t&& !StringUtils.isFalsey(System.getenv(CONFIG_PROPERTY))) {\n\t\t\t\tsaveConfiguration();\n\t\t\t}\n\t\t} catch (SecurityException sex) {\n\t\t\t// empty\n\t\t}\n\t\t\n\t\tif (exitOnClose) {\n\t\t\tint nFinalizers = finalizers.size();\n\t\t\tfor (int i = 0; i < nFinalizers; i++) {\n\t\t\t\tObject obj = finalizers.get(i);\n\t\t\t\ttry {\n\t\t\t\t\tClass<?> c = obj.getClass();\n\t\t\t\t\tMethod exit = c.getMethod(\"exit\", new Class[0]);\n\t\t\t\t\texit.invoke(obj, new Object[0]);\n\t\t\t\t} catch (Exception ex) {\n\t\t\t\t\tthrow new ErrorException(ex);\n\t\t\t\t}\n\t\t\t}\n\t\t\tJTFTools.terminateAppletThreads(this);\n\t\t\tif (!appletMode) {\n\t\t\t\tSystem.exit(0);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Returns true if the given file exists within the current working directory.\n\t * @param filename name of the file.\n\t * @return true if file exists, false if not\n\t */\n\tprotected boolean fileExists(String filename) {\n\t\treturn fileExistsOnDisk(filename) || fileExistsInsideJAR(filename);\n\t}\n\n\t/**\n\t * Returns true if the given file exists within the given directory.\n\t * @param directory directory to search for the file.\n\t * @param filename name of the file.\n\t * @return true if file exists, false if not\n\t */\n\tprotected boolean fileExists(String directory, String filename) {\n\t\treturn fileExistsOnDisk(directory, filename) || fileExistsInsideJAR(directory, filename);\n\t}\n\n\t/**\n\t * Returns true if the given file exists inside the app's JAR archive within the current working directory.\n\t * @param directory directory to search for the file.\n\t * @param filename name of the file.\n\t * @return true if file exists, false if not\n\t */\n\tprotected boolean fileExistsInsideJAR(String filename) {\n\t\treturn fileExistsInsideJAR(/* directory */ \"\", filename);\n\t}\n\n\t/**\n\t * Returns true if the given file exists inside the app's JAR archive within the given directory.\n\t * @param directory directory to search for the file.\n\t * @param filename name of the file.\n\t * @return true if file exists, false if not\n\t */\n\tprotected boolean fileExistsInsideJAR(String directory, String filename) {\n\t\t// fallback to using internal class stream (JAR or applet)\n\t\tString filepath = \"\";\n\t\tif (directory != null && !directory.isEmpty()) {\n\t\t\t// BUGFIX: use \"/\" instead of File.separator because JAR URLs must use / even on Windows\n\t\t\tfilepath += directory;\n\t\t\tif (!filepath.endsWith(\"/\")) {\n\t\t\t\tfilepath += \"/\";\n\t\t\t}\n\t\t}\n\t\tfilepath += filename;\n\t\tInputStream stream = getClass().getResourceAsStream(filepath);\n\t\tif (stream == null) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\ttry {\n\t\t\t\tstream.close();\n\t\t\t} catch (IOException ioe) {\n\t\t\t\t// empty\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n\n\t/**\n\t * Returns true if the given file exists in the current working directory.\n\t * @param filename name of the file.\n\t * @return true if file exists, false if not\n\t */\n\tprotected boolean fileExistsOnDisk(String filename) {\n\t\treturn fileExistsOnDisk(/* directory */ \"\", filename);\n\t}\n\n\t/**\n\t * Returns true if the given file exists in the given directory.\n\t * @param directory directory to search for the file.\n\t * @param filename name of the file.\n\t * @return true if file exists, false if not\n\t */\n\tprotected boolean fileExistsOnDisk(String directory, String filename) {\n\t\tif (isApplet()) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\t// try reading a real file\n\t\t\tFile file = (directory == null || directory.isEmpty()) ? new File(filename) : new File(directory, filename);\n\t\t\ttry {\n\t\t\t\tif (file.exists() && file.isFile()) {\n\t\t\t\t\treturn true;\n\t\t\t\t} else {\n\t\t\t\t\tfile = new File(\"../\" + directory, filename);  // \"../simple.txt\"\n\t\t\t\t\tif (file.exists() && file.isFile()) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (SecurityException sex) {\n\t\t\t\t// running as an applet\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t/**\n\t * Returns the size of the given file in bytes in the current working directory.\n\t * @param filename name of the file.\n\t * @return file size in bytes\n\t * @throws IORuntimeException if file is not found or cannot be read\n\t */\n\tprotected int fileSize(String filename) {\n\t\tif (!isApplet() && fileExistsOnDisk(filename)) {\n\t\t\treturn (int) (new File(filename).length());\n\t\t} else if (fileExistsInsideJAR(filename)) {\n\t\t\tInputStream input = openFileFromJAR(filename);\n\t\t\tint size = 0;\n\t\t\ttry {\n\t\t\t\twhile (input.read() != -1) {\n\t\t\t\t\tsize++;\n\t\t\t\t}\n\t\t\t} catch (IOException ioe) {\n\t\t\t\tthrow new IORuntimeException(ioe);\n\t\t\t}\n\t\t\treturn size;\n\t\t} else {\n\t\t\tthrow new IORuntimeException(\"File not found: \" + filename);\n\t\t}\n\t}\n\n\t/**\n\t * Returns the size of the given file in bytes.\n\t * @param directory directory to search for the file.\n\t * @param filename name of the file.\n\t * @return file size in bytes\n\t * @throws IORuntimeException if file is not found or cannot be read\n\t */\n\tprotected int fileSize(String directory, String filename) {\n\t\tif (!isApplet() && fileExistsOnDisk(directory, filename)) {\n\t\t\treturn (int) (new File(directory, filename).length());\n\t\t} else if (fileExistsInsideJAR(directory, filename)) {\n\t\t\tInputStream input = openFileFromJAR(directory, filename);\n\t\t\tint size = 0;\n\t\t\ttry {\n\t\t\t\twhile (input.read() != -1) {\n\t\t\t\t\tsize++;\n\t\t\t\t}\n\t\t\t} catch (IOException ioe) {\n\t\t\t\tthrow new IORuntimeException(ioe);\n\t\t\t}\n\t\t\treturn size;\n\t\t} else {\n\t\t\tthrow new IORuntimeException(\"File not found: \" + filename);\n\t\t}\n\t}\n\t\n\t/**\n\t * Required empty method of FocusListener interface; does nothing.\n\t * Invoked when a component gains the keyboard focus.\n\t */\n\tpublic void\tfocusGained(FocusEvent e) {\n\t\t// empty; override me\n\t}\n\t\n\t/**\n\t * Required empty method of FocusListener interface; does nothing.\n\t * Invoked when a component loses the keyboard focus.\n\t */\n\tpublic void\tfocusLost(FocusEvent e) {\n\t\t// empty; override me\n\t}\n\n\t/**\n\t * Returns the delay between frames of animation in milliseconds (default 20).\n\t */\n\tpublic int getAnimationDelay() {\n\t\treturn animationDelay;\n\t}\n\n\t/* Protected method: getAppletStub() */\n\t/**\n\t * Retrieves the applet stub.\n\t *\n\t * @usage AppletStub stub = getAppletStub();\n\t * @return The applet stub\n\t */\n\tprotected AppletStub getAppletStub() {\n\t\treturn appletStub;\n\t}\n\n\t/* Protected method: getArgumentArray() */\n\t/**\n\t * Retrieves the array of arguments passed in from the command line, or\n\t * <code>null</code> if no arguments are available.\n\t *\n\t * @usage String[] args = getArgumentArray();\n\t * @return The array of command-line arguments\n\t * @noshow\n\t */\n\tprotected String[] getArgumentArray() {\n\t\tif (parameterTable == null) return null;\n\t\tStringTokenizer tokenizer = new StringTokenizer(parameterTable.get(\"ARGS\"), \"\\t\", false);\n\t\tString[] args = new String[tokenizer.countTokens()];\n\t\tfor (int i = 0; tokenizer.hasMoreTokens(); i++) {\n\t\t\targs[i] = tokenizer.nextToken();\n\t\t}\n\t\treturn args;\n\t}\n\n\t/**\n\t * Reads and returns a boolean value (<code>true</code> or <code>false</code>).\n\t * The input must match one of these strings, ignoring case.  If the user\n\t * types a value that is not one of these possibilities, the method ordinarily\n\t * offers the user a chance to reenter the data, although this behavior\n\t * can be changed using the\n\t * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n\t *\n\t * @usage boolean flag = program.getBoolean();\n\t * @return The value of the input interpreted as a boolean value\n\t */\n\tpublic final boolean getBoolean() {\n\t\treturn readBoolean();\n\t}\n\n\t/**\n\t * Prompts the user to enter a boolean value, which is returned as\n\t * the value of this method.  If the user types a value that is not a\n\t * legal boolean value, the method ordinarily offers the user a chance\n\t * to reenter the data, although this behavior can be changed using the\n\t * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n\t *\n\t * @usage boolean flag = program.readBoolean(prompt);\n\t * @param prompt The prompt string to display to the user\n\t * @return The value of the input interpreted as a boolean value\n\t */\n\tpublic boolean getBoolean(String prompt) {\n\t\treturn readBoolean(prompt);\n\t}\n\n\t/**\n\t * Prompts the user to enter a boolean value, which is matched against the\n\t * labels provided.  If the user enters a value that is not one of the two\n\t * choices, <code>readBoolean</code> ordinarily offers the user a chance\n\t * to reenter the data, although this behavior can be changed using the\n\t * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n\t *\n\t * @usage boolean flag = program.getBoolean(prompt, trueLabel, falseLabel);\n\t * @param prompt The prompt string to display to the user\n\t * @param trueLabel The string used to indicate <code>true</code>\n\t * @param falseLabel The string used to indicate <code>false</code>\n\t * @return The value of the input interpreted as a boolean value\n\t */\n\tpublic boolean getBoolean(String prompt, String trueLabel, String falseLabel) {\n\t\treturn readBoolean(prompt, trueLabel, falseLabel);\n\t}\n\n\t/* Protected method: getBorder(side) */\n\t/**\n\t * Returns the component installed as a border on the specified side, which must\n\t * be one of the constants from <code>BorderLayout</code> (<code>NORTH</code>,\n\t * <code>SOUTH</code>, <code>EAST</code>, <code>WEST</code>).\n\t *\n\t * @usage getBorder(side, comp);\n\t * @param side The side (<code>NORTH</code>, <code>SOUTH</code>, <code>EAST</code>,\n\t *             or <code>WEST</code>)\n\t * @return The component used as a border on the specified side\n\t * @noshow\n\t */\n\tprotected Component getBorder(String side) {\n\t\tif (side.equals(NORTH)) return northBorder;\n\t\tif (side.equals(SOUTH)) return southBorder;\n\t\tif (side.equals(EAST)) return eastBorder;\n\t\tif (side.equals(WEST)) return westBorder;\n\t\tthrow new ErrorException(\"Illegal border specification - \" + side);\n\t}\n\t\n\t/**\n\t * Returns the y-coordinate of the bottom of this program's window.\n\t */\n\tpublic int getBottomY() {\n\t\treturn getY() + getHeight();\n\t}\n\n\t/**\n\t * Returns the x/y-coordinates of the center of this program's window.\n\t */\n\tpublic GDimension getCenterLocation() {\n\t\treturn new GDimension(getCenterX(), getCenterY());\n\t}\n\n\t/**\n\t * Returns the x-coordinate of the center of this program's window.\n\t */\n\tpublic int getCenterX() {\n\t\treturn getX() + getWidth() / 2;\n\t}\n\n\t/**\n\t * Returns the y-coordinate of the center of this program's window.\n\t */\n\tpublic int getCenterY() {\n\t\treturn getY() + getHeight() / 2;\n\t}\n\n\t/* Method: getCentralRegionSize() */\n\t/**\n\t * Returns the size of the central region.  If the content pane has\n\t * not been validated, this method computes its preferred size by\n\t * subtracting the sizes required for the side panels from the size\n\t * of the entire frame.\n\t *\n\t * @return The size of the central region\n\t */\n\tpublic Dimension getCentralRegionSize() {\n\t\tif (centerPanel == null) return super.getSize();\n\t\tif (initFinished) return centerPanel.getSize();\n\t\tDimension size = (programFrame == null) ? super.getSize() : programFrame.getSize();\n\t\tInsets insets = (programFrame == null) ? super.getInsets() : programFrame.getInsets();\n\t\tsize.width -= westPanel.getPreferredSize().width + eastPanel.getPreferredSize().width;\n\t\tsize.width -= insets.left + insets.right;\n\t\tsize.height -= northPanel.getPreferredSize().height + southPanel.getPreferredSize().height;\n\t\tsize.height -= insets.top + insets.bottom;\n\t\treturn size;\n\t}\n\n\t/* Method: getConsole() */\n\t/**\n\t * Returns the console associated with this program.\n\t *\n\t * @usage IOConsole console = program.getConsole();\n\t * @return The <code>IOConsole</code> object used for this program\n\t */\n\tpublic IOConsole getConsole() {\n\t\treturn myConsole;\n\t}\n\n\t/* Method: getDialog() */\n\t/**\n\t * Returns the dialog used for user interaction.\n\t *\n\t * @usage IODialog dialog = program.getDialog();\n\t * @return The <code>IODialog</code> object used for this program\n\t */\n\tpublic IODialog getDialog() {\n\t\treturn myDialog;\n\t}\n\n\t/**\n\t * Reads and returns a double-precision value from the user.  If the user\n\t * types a value that is not a legal number, the method ordinarily offers\n\t * the user a chance to reenter the data, although this behavior can be\n\t * changed using the\n\t * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n\t *\n\t * @usage double d = program.getDouble();\n\t * @return The value of the input interpreted as a <code>double</code>\n\t */\n\tpublic double getDouble() {\n\t\treturn readDouble();\n\t}\n\n\t/**\n\t * Reads and returns a double-precision value from the user, which is\n\t * constrained to be within the specified inclusive range.  If the user\n\t * types a value that is not a legal number, the method ordinarily offers\n\t * the user a chance to reenter the data, although this behavior can be\n\t * changed using the\n\t * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n\t *\n\t * @usage double d = program.getDouble(low, high);\n\t * @param low The lowest value in the permitted range\n\t * @param high The highest value in the permitted range\n\t * @return The value of the input interpreted as a <code>double</code>\n\t */\n\tpublic double getDouble(double low, double high) {\n\t\treturn readDouble(low, high);\n\t}\n\n\t/**\n\t * Prompts the user to enter an double-precision number, which is then\n\t * returned as the value of this method.  If the user types a value that\n\t * is not a legal number, the method ordinarily offers the user a chance to\n\t * reenter the data,  although this behavior can be changed using the\n\t * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n\t *\n\t * @usage double d = program.getDouble(prompt);\n\t * @param prompt The prompt string to display to the user\n\t * @return The value of the input interpreted as a <code>double</code>\n\t */\n\tpublic final double getDouble(String prompt) {\n\t\treturn readDouble(prompt);\n\t}\n\n\t/**\n\t * Prompts the user to enter an double-precision number, which is then returned\n\t * as the value of this method.  The value must be within the inclusive range\n\t * between <code>low</code> and <code>high</code>.  If the user types a value\n\t * that is not a legal number, the method ordinarily offers the user a chance\n\t * to reenter the data,  although this behavior can be changed using the\n\t * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n\t *\n\t * @usage d = program.getDouble(prompt, low, high);\n\t * @param prompt The prompt string to display to the user\n\t * @param low The lowest value in the permitted range\n\t * @param high The highest value in the permitted range\n\t * @return The value of the input interpreted as a <code>double</code>\n\t */\n\tpublic double getDouble(String prompt, double low, double high) {\n\t\treturn readDouble(prompt, low, high);\n\t}\n\n\t/* Overridden method: getHeight() */\n\t/**\n\t * Returns the height of the central region.\n\t *\n\t * @usage int height = getHeight();\n\t * @return The height of the central region\n\t * @noshow\n\t */\n\tpublic int getHeight() {\n\t\tString caller = getMyCaller();\n\t\tif (caller.startsWith(\"java.\") || caller.startsWith(\"javax.\")) {\n\t\t\treturn super.getHeight();\n\t\t} else {\n\t\t\treturn getCentralRegionSize().height;\n\t\t}\n\t}\n\n\t/* Method: getInputModel() */\n\t/**\n\t * Returns the <code>IOModel</code> used for program input, which will\n\t * ordinarily be the console.\n\t *\n\t * @usage IOModel io = program.getInputModel();\n\t * @return The <code>IOModel</code> used for program input\n\t */\n\tpublic IOModel getInputModel() {\n\t\treturn (inputModel == null) ? myConsole : inputModel;\n\t}\n\n\t/**\n\t * Reads and returns an integer value from the user.  If the user types\n\t * a value that is not a legal integer, the method ordinarily offers the\n\t * user a chance to reenter the data, although this behavior can be\n\t * changed using the\n\t * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n\t *\n\t * @usage int n = program.getInteger();\n\t * @return The value of the input interpreted as a decimal integer\n\t */\n\tpublic int getInteger() {\n\t\treturn readInt();\n\t}\n\n\t/**\n\t * Reads and returns an integer value from the user, which is constrained to\n\t * be within the specified inclusive range.  If the user types a value\n\t * that is not a legal integer, the method ordinarily offers the user a chance\n\t * to reenter the data, although this behavior can be changed using the\n\t * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n\t *\n\t * @usage int n = program.getInteger(low, high);\n\t * @param low The lowest value in the permitted range\n\t * @param high The highest value in the permitted range\n\t * @return The value of the input interpreted as a decimal integer\n\t */\n\tpublic int getInteger(int low, int high) {\n\t\treturn readInt(low, high);\n\t}\n\n\t/**\n\t * Prompts the user to enter an integer, which is then returned as the value\n\t * of this method.  If the user types a value that is not a legal integer,\n\t * the method ordinarily offers the user a chance to reenter the data,\n\t * although this behavior can be changed using the\n\t * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n\t *\n\t * @usage int n = program.getInteger(prompt);\n\t * @param prompt The prompt string to display to the user\n\t * @return The value of the input interpreted as a decimal integer\n\t */\n\tpublic final int getInteger(String prompt) {\n\t\treturn readInt(prompt);\n\t}\n\n\t/**\n\t * Prompts the user to enter an integer, which is then returned as the value\n\t * of this method.  The value must be within the inclusive range between\n\t * <code>low</code> and <code>high</code>.  If the user types a value that\n\t * is not a legal integer or is outside the specified range, the method\n\t * ordinarily offers the user a chance to reenter the data,\n\t * although this behavior can be changed using the\n\t * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n\t *\n\t * @usage int n = console.getInteger(prompt, low, high);\n\t * @param prompt The prompt string to display to the user\n\t * @param low The lowest value in the permitted range\n\t * @param high The highest value in the permitted range\n\t * @return The value of the input interpreted as a decimal integer\n\t */\n\tpublic int getInteger(String prompt, int low, int high) {\n\t\treturn readInt(prompt, low, high);\n\t}\n\n\t/**\n\t * Returns the Java Swing window frame that encloses this program.\n\t * Will be null until start() has been called on the program.\n\t * @return the window frame\n\t */\n\tpublic JFrame getJFrame() {\n\t\treturn programFrame;\n\t}\n\n\t/* Overridden method: getLayout() */\n\t/**\n\t * Gets the layout manager for the central region of the content pane.\n\t *\n\t * @usage LayoutManager layout = setLayout();\n\t * @return The active layout manager\n\t * @noshow\n\t */\n\tpublic LayoutManager getLayout() {\n\t\tif (isRootPaneCheckingEnabled()) {\n\t\t\treturn centerPanel.getLayout();\n\t\t} else {\n\t\t\treturn super.getLayout();\n\t\t}\n\t}\n\n\t/**\n\t * Reads and returns a line of input from the console.  The end-of-line\n\t * characters that terminate the input are not included in the returned\n\t * string.\n\t *\n\t * @usage String str = program.getLine();\n\t * @return The next line of input as a <code>String</code>\n\t */\n\tpublic String getLine() {\n\t\treturn readLine();\n\t}\n\n\t/**\n\t * Prompts the user for a line of input.  The end-of-line characters\n\t * that terminate the input are not included in the returned string.\n\t *\n\t * @usage String str = program.getLine(prompt);\n\t * @param prompt The prompt string to display to the user\n\t * @return The next line of input as a <code>String</code>\n\t */\n\tpublic String getLine(String prompt) {\n\t\treturn readLine(prompt);\n\t}\n\n\t/* Method: getMainThread() */\n\t/**\n\t * Returns the thread that is running the main program.\n\t *\n\t * @usage Thread mainThread = getMainThread();\n\t * @return The thread that is running the main program, if any\n\t * @noshow\n\t */\n\tpublic Thread getMainThread() {\n\t\treturn (appletStarter == null) ? null : appletStarter.getMainThread();\n\t}\n\n\t/* Method: getMenuBar() */\n\t/**\n\t * Returns the menu bar associated with this program.  Note that this menu bar\n\t * cannot be set by clients, although it can be changed initially by overriding\n\t * the <code>createMenuBar</code> factory method.\n\t *\n\t * @usage ProgramMenuBar mbar = getMenuBar();\n\t * @return The menu bar in use for this program\n\t */\n\tpublic ProgramMenuBar getMenuBar() {\n\t\treturn myMenuBar;\n\t}\n\n\t/* Private method: getMyCaller() */\n\t/**\n\t * Returns the name of the caller of the method that invoked <code>getMyCaller</code>.\n\t */\n\tString getMyCaller() {\n\t\tStackTraceElement[] stack = new Throwable().getStackTrace();\n\t\treturn stack[2].getClassName() + \".\" + stack[2].getMethodName();\n\t}\n\n\t/**\n\t * Returns the current output color used to display output on the console.\n\t * If it has never been explicitly set, returns a default of Color.BLACK.\n\t */\n\tpublic Color getOutputColor() {\n\t\tIOModel model = getOutputModel();\n\t\tif (model instanceof IOConsole) {\n\t\t\tConsoleModel cmodel = ((IOConsole) model).getConsoleModel();\n\t\t\tif (cmodel instanceof StandardConsoleModel) {\n\t\t\t\tStandardConsoleModel smodel = (StandardConsoleModel) cmodel;\n\t\t\t\treturn smodel.getOutputColor();\n\t\t\t}\n\t\t}\n\t\treturn Color.BLACK;\n\t}\n\n\t/* Method: getOutputModel() */\n\t/**\n\t * Returns the <code>IOModel</code> used for program output, which will\n\t * ordinarily be the console.\n\t *\n\t * @usage IOModel io = program.getOutputModel();\n\t * @return The <code>IOModel</code> used for program output\n\t */\n\tpublic IOModel getOutputModel() {\n\t\treturn (outputModel == null) ? myConsole : outputModel;\n\t}\n\n\t/* Overridden method: getParameter(name) */\n\t/**\n\t * Returns the parameter associated with name.\n\t *\n\t * @usage String value = getParameter(name);\n\t * @param name The name of the parameter\n\t * @return The value associated with the parameter, or <code>null</code> if none\n\t * @noshow\n\t */\n\tpublic String getParameter(String name) {\n\t\tString value = null;\n\t\tif (parameterTable != null) {\n\t\t\tvalue = parameterTable.get(name.toLowerCase());\n\t\t}\n\t\tif (value != null) return value;\n\t\treturn super.getParameter(name);\n\t}\n\n\t/* Protected method: getParameterTable() */\n\t/**\n\t * Retrieves the parameter table.\n\t *\n\t * @usage ParameterTable ht = getParameterTable();\n\t * @return The parameter table\n\t */\n\tprotected Map<String, String> getParameterTable() {\n\t\treturn parameterTable;\n\t}\n\n\t/* Overridden method: getPreferredSize() */\n\t/**\n\t * Returns the preferred size of the content pane.\n\t *\n\t * @usage Dimension size = getPreferredSize();\n\t * @return The preferred size of the content pane\n\t * @noshow\n\t */\n\tpublic Dimension getPreferredSize() {\n\t\treturn computeProgramBounds().getSize();\n\t}\n\n\t/* Method: getReader() */\n\t/**\n\t * Returns a <code>BufferedReader</code> whose input comes from the console.\n\t *\n\t * @usage BufferedReader rd = getReader();\n\t * @return A <code>Reader</code> for use with this console\n\t */\n\tpublic BufferedReader getReader() {\n\t\treturn getConsole().getReader();\n\t}\n\n\t/**\n\t * Reads and returns a double-precision value from the user.  If the user\n\t * types a value that is not a legal number, the method ordinarily offers\n\t * the user a chance to reenter the data, although this behavior can be\n\t * changed using the\n\t * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n\t *\n\t * @usage double d = program.getReal();\n\t * @return The value of the input interpreted as a <code>double</code>\n\t */\n\tpublic double getReal() {\n\t\treturn readDouble();\n\t}\n\n\t/**\n\t * Reads and returns a double-precision value from the user, which is\n\t * constrained to be within the specified inclusive range.  If the user\n\t * types a value that is not a legal number, the method ordinarily offers\n\t * the user a chance to reenter the data, although this behavior can be\n\t * changed using the\n\t * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n\t *\n\t * @usage double d = program.getReal(low, high);\n\t * @param low The lowest value in the permitted range\n\t * @param high The highest value in the permitted range\n\t * @return The value of the input interpreted as a <code>double</code>\n\t */\n\tpublic double getReal(double low, double high) {\n\t\treturn readDouble(low, high);\n\t}\n\n\t/**\n\t * Prompts the user to enter an double-precision number, which is then\n\t * returned as the value of this method.  If the user types a value that\n\t * is not a legal number, the method ordinarily offers the user a chance to\n\t * reenter the data,  although this behavior can be changed using the\n\t * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n\t *\n\t * @usage double d = program.getReal(prompt);\n\t * @param prompt The prompt string to display to the user\n\t * @return The value of the input interpreted as a <code>double</code>\n\t */\n\tpublic final double getReal(String prompt) {\n\t\treturn readDouble(prompt);\n\t}\n\t\n\t/**\n\t * Prompts the user to enter an double-precision number, which is then returned\n\t * as the value of this method.  The value must be within the inclusive range\n\t * between <code>low</code> and <code>high</code>.  If the user types a value\n\t * that is not a legal number, the method ordinarily offers the user a chance\n\t * to reenter the data,  although this behavior can be changed using the\n\t * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n\t *\n\t * @usage d = program.getReal(prompt, low, high);\n\t * @param prompt The prompt string to display to the user\n\t * @param low The lowest value in the permitted range\n\t * @param high The highest value in the permitted range\n\t * @return The value of the input interpreted as a <code>double</code>\n\t */\n\tpublic double getReal(String prompt, double low, double high) {\n\t\treturn readDouble(prompt, low, high);\n\t}\n\n\t/* Method: getRegionPanel(region) */\n\t/**\n\t * Gets the <code>JPanel</code> for the specified region.\n\t *\n\t * @usage JPanel panel = getRegionPanel(region);\n\t * @param region The region of the window (<code>NORTH</code>, <code>SOUTH</code>,\n\t *               <code>EAST</code>, <code>WEST</code>, or <code>CENTER</code>)\n\t * @return The <code>JPanel</code> for that subregion\n\t * @noshow\n\t */\n\tpublic JPanel getRegionPanel(String region) {\n\t\tif (region.equalsIgnoreCase(NORTH)) {\n\t\t\treturn northPanel;\n\t\t} else if (region.equalsIgnoreCase(SOUTH)) {\n\t\t\treturn southPanel;\n\t\t} else if (region.equalsIgnoreCase(WEST)) {\n\t\t\treturn westPanel;\n\t\t} else if (region.equalsIgnoreCase(EAST)) {\n\t\t\treturn eastPanel;\n\t\t} else if (region.equalsIgnoreCase(CENTER)) {\n\t\t\treturn centerPanel;\n\t\t} else {\n\t\t\tthrow new ErrorException(\"getRegionPanel: Illegal region \" + region);\n\t\t}\n\t}\n\t\n\t/**\n\t * Returns the x-coordinate of the right edge of this program's window.\n\t */\n\tpublic int getRightX() {\n\t\treturn getX() + getWidth();\n\t}\n\n\t/**\n\t * Returns the height of the screen in pixels.\n\t */\n\tpublic int getScreenHeight() {\n\t\tDimension size = Toolkit.getDefaultToolkit().getScreenSize();\n\t\treturn size.height;\n\t}\n\t\n\t/**\n\t * Returns the width x height of the screen in pixels.\n\t */\n\tpublic GDimension getScreenSize() {\n\t\tDimension size = Toolkit.getDefaultToolkit().getScreenSize();\n\t\treturn new GDimension(size.width, size.height);\n\t}\n\t\n\t/**\n\t * Returns the width of the screen in pixels.\n\t */\n\tpublic int getScreenWidth() {\n\t\tDimension size = Toolkit.getDefaultToolkit().getScreenSize();\n\t\treturn size.width;\n\t}\n\n\t/* Protected method: getStartupObject() */\n\t/**\n\t * Retrieves the object that was created when this program was started\n\t * if that object is something other than a <code>Program</code>.  In\n\t * the normal case of running a <code>Program</code> object, this method\n\t * will return <code>null</code>.\n\t *\n\t * @usage Object obj = getStartupObject();\n\t * @return The startup object\n\t */\n\tprotected Object getStartupObject() {\n\t\treturn startupObject;\n\t}\n\n\t/* Method: getTitle() */\n\t/**\n\t * Gets the title of this program.\n\t *\n\t * @usage String title = getTitle();\n\t * @return The title in use for this program\n\t */\n\tpublic String getTitle() {\n\t\treturn myTitle;\n\t}\n\n\t/* Overridden method: getWidth() */\n\t/**\n\t * Returns the width of the central region.\n\t *\n\t * @usage int width = getWidth();\n\t * @return The width of the central region\n\t * @noshow\n\t */\n\tpublic int getWidth() {\n\t\tString caller = getMyCaller();\n\t\tif (caller.startsWith(\"java.\") || caller.startsWith(\"javax.\")) {\n\t\t\treturn super.getWidth();\n\t\t} else {\n\t\t\treturn getCentralRegionSize().width;\n\t\t}\n\t}\n\n\t/**\n\t * Returns the Java Swing window that encloses this program.\n\t * @return the window frame\n\t */\n\tpublic Window getWindow() {\n\t\tJFrame frame = getJFrame();\n\t\tif (frame != null) {\n\t\t\treturn frame;\n\t\t} else {\n\t\t\tComponent comp = this;\n\t\t\twhile (comp != null && !(comp instanceof Window)) {\n\t\t\t\tcomp = comp.getParent();\n\t\t\t}\n\t\t\treturn (Window) comp;\n\t\t}\n\t}\n\n\t/* Method: getWriter() */\n\t/**\n\t * Returns a <code>PrintWriter</code> whose output is directed to the console.\n\t *\n\t * @usage PrintWriter wr = getWriter();\n\t * @return A <code>PrintWriter</code> for use with this console\n\t */\n\tpublic PrintWriter getWriter() {\n\t\treturn getConsole().getWriter();\n\t}\n\n\t/**\n\t * Prompts the user to answer a yes/no question and returns true if the user\n\t * typed 'yes' (or anything that starts with a 'y', case-insensitively),\n\t * false if the user types anything that starts with 'n', or re-prompts if\n\t * the user doesn't type a 'y' or 'n' word.\n\t * @return true if user types a 'y' word; false if user types an 'n' word\n\t */\n\tpublic boolean getYesOrNo(String prompt) {\n\t\twhile (true) {\n\t\t\tString answer = getLine(prompt).trim().toLowerCase();\n\t\t\tif (answer.startsWith(\"y\")) {\n\t\t\t\treturn true;\n\t\t\t} else if (answer.startsWith(\"n\")) {\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\tgetOutputModel().showErrorMessage(GETYESORNO_DEFAULT_REPROMPT);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t/**\n\t * Returns true if the component has at least one action listener.  The method\n\t * returns false if the Java runtime is too old to determine the answer.\n\t */\n\tprivate boolean hasActionListener(Component comp) {\n\t\ttry {\n\t\t\tMethod getActionListeners = comp.getClass().getMethod(\"getActionListeners\", new Class[0]);\n\t\t\tActionListener[] listeners = (ActionListener[]) getActionListeners.invoke(comp, new Object[0]);\n\t\t\treturn (listeners.length > 0);\n\t\t} catch (Exception ex) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t/**\n\t * Returns true if this program has any saved configuration stored on disk.\n\t */\n\tpublic final boolean hasConfiguration() {\n\t\ttry {\n\t\t\tString tmpDir = System.getProperty(\"java.io.tmpdir\");\n\t\t\tif (tmpDir != null) {\n\t\t\t\tFile configFile = new File(tmpDir, CONFIG_FILE_NAME);\n\t\t\t\treturn configFile.isFile() && configFile.canRead();\n\t\t\t}\n\t\t} catch (Exception ex) {\n\t\t\t// empty\n\t\t}\n\t\treturn false;\n\t}\n\n\t/* Method: init() */\n\t/**\n\t * Specifies the code to be executed as startup time before the\n\t * <code>run</code> method is called.  Subclasses can override this\n\t * method to perform any initialization code that would ordinarily\n\t * be included in an applet <code>init</code> method.  In general,\n\t * subclasses will override <code>init</code> in GUI-based programs\n\t * where the program simply sets up an initial state and then waits\n\t * for events from the user.  The <code>run</code> method is required\n\t * for applications in which there needs to be some control thread\n\t * while the program runs, as in a typical animation.\n\t *\n\t * @usage program.init();\n\t */\n\tpublic void init() {\n\t\t// empty\n\t}\n\n\t/* Private method: initApplicationFrame() */\n\t/**\n\t * Creates the program frame and puts the program in it.\n\t */\n\tprivate void initApplicationFrame() {\n\t\tprogramFrame = createProgramFrame();\n\t\t((ProgramAppletStub) appletStub).setFrame(programFrame);\n\t\tContainer contents = programFrame.getContentPane();\n\t\tcontents.setLayout(new BorderLayout());\n\t\tcontents.add(getContentPane(), BorderLayout.CENTER);\n\t\tprogramFrame.addWindowListener(new ProgramWindowListener(this));\n\t\tprogramBounds = computeProgramBounds();\n\t\tInsets insets = programFrame.getInsets();\n\t\tint frameWidth = programBounds.width + insets.left + insets.right;\n\t\tint frameHeight = programBounds.height + insets.top + insets.bottom;\n\t\tprogramFrame.setBounds(programBounds.x, programBounds.y, frameWidth, frameHeight);\n\t}\n\n\t/* Private method: initContentPane(contentPane) */\n\t/**\n\t * Initializes the content pane to contain its five regions.\n\t */\n\tprivate void initContentPane(Container contentPane) {\n\t\tcontentPane.setLayout(new ProgramContentPaneLayout(this));\n\t\tnorthPanel = new JPanel();\n\t\tnorthPanel.setOpaque(false);\n\t\tsouthPanel = new JPanel();\n\t\tsouthPanel.setOpaque(false);\n\t\teastPanel = new JPanel();\n\t\teastPanel.setOpaque(false);\n\t\twestPanel = new JPanel();\n\t\twestPanel.setOpaque(false);\n\t\tcenterPanel = new JPanel();\n\t\tcenterPanel.setOpaque(false);\n\t\tnorthPanel.setLayout(new TableLayout(1, 0, 5, 5));\n\t\tsouthPanel.setLayout(new TableLayout(1, 0, 5, 5));\n\t\twestPanel.setLayout(new TableLayout(0, 1, 5, 5));\n\t\teastPanel.setLayout(new TableLayout(0, 1, 5, 5));\n\t\tcenterPanel.setLayout(new GridLayout(1, 0));\n\t\tcontentPane.add(northPanel, NORTH);\n\t\tcontentPane.add(southPanel, SOUTH);\n\t\tcontentPane.add(eastPanel, EAST);\n\t\tcontentPane.add(westPanel, WEST);\n\t\tcontentPane.add(centerPanel, CENTER);\n\t}\n\n\t/** Required method of DocumentListener interface. */\n\tpublic void insertUpdate(DocumentEvent e) {\n\t\t// empty\n\t}\n\n\t/**\n\t * Returns true if the program is currently in animated mode.\n\t */\n\tpublic boolean isAnimated() {\n\t\treturn animatedMode;\n\t}\n\n\t/**\n\t * Returns <code>true</code> if this program is running as an applet in a browser.\n\t */\n\tprotected boolean isApplet() {\n\t\ttry {\n\t\t\tif (java.lang.System.getSecurityManager() != null) {\n\t\t\t\t// applets run with security managers enabled\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\tFile currentDir = new File(java.lang.System.getProperty(\"user.dir\"));\n\t\t\t\tcurrentDir.exists();  // calling this will trigger security exception if applet\n\t\t\t}\n\t\t} catch (SecurityException sex) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/* Method: isAppletMode() */\n\t/**\n\t * Returns <code>true</code> if this program is running as an applet in a browser.\n\t *\n\t * @usage if (isAppletMode()) . . .\n\t * @return <code>true</code> if this program is running as an applet, <code>false</code> otherwise\n\t * @noshow\n\t */\n\tpublic boolean isAppletMode() {\n\t\treturn appletMode;\n\t}\n\n\t/**\n\t * Determines whether the component is a button.\n\t */\n\tprivate boolean isButton(Component comp) {\n\t\treturn (comp instanceof Button || comp instanceof JButton);\n\t}\n\n\t/**\n\t * Returns whether the program will exit when its window is closed (default true).\n\t */\n\tpublic boolean isExitOnClose() {\n\t\treturn this.exitOnClose;\n\t}\n\n\t/**\n\t * Returns true if this program's init() method has been called.\n\t */\n\tpublic boolean isInitialized() {\n\t\treturn initFinished;\n\t}\n\t\n\tpublic boolean isRunning() {\n\t\treturn isStarted() && !runFinished;\n\t}\n\n\t/* Protected method: isStarted() */\n\t/**\n\t * Checks to see whether this program has started, usually by checking to see\n\t * whether some pane exists.  Subclasses can override this method to ensure\n\t * that their structures are visible before proceeding.\n\t * @noshow\n\t */\n\tprotected boolean isStarted() {\n\t\tIOConsole console = getConsole();\n\t\tif (console == null) {\n\t\t\treturn false;\n\t\t}\n\t\tif (console.getParent() == null) {\n\t\t\treturn true;\n\t\t}\n\t\tDimension size = console.getSize();\n\t\treturn (console.isShowing()) && (size.width != 0) && (size.height != 0);\n\t}\n\t\n\t/** Required empty method of ItemListener interface. */\n\tpublic void\titemStateChanged(ItemEvent e) {\n\t\t// empty\n\t}\n\n\t/* Method: keyPressed (implements KeyListener) */\n\t/**\n\t * Called when a key is pressed.\n\t */\n\tpublic void keyPressed(KeyEvent e) {\n\t\t// empty\n\t}\n\n\t/* Method: keyReleased (implements KeyListener) */\n\t/**\n\t * Called when a key is released.\n\t */\n\tpublic void keyReleased(KeyEvent e) {\n\t\t// empty\n\t}\n\n\t/* Method: keyTyped (implements KeyListener) */\n\t/**\n\t * Called when a key is typed (i.e., pressed and released).\n\t */\n\tpublic void keyTyped(KeyEvent e) {\n\t\t// empty\n\t}\n\n\t/**\n\t * Instructs the program to stop/kill itself.\n\t * Not to be called by students.\n\t */\n\tpublic void killMe() {\n\t\tkill = true;\n\t}\n\n\t/**\n\t * Loads any saved configuration of this program from disk.\n\t */\n\tpublic final void loadConfiguration() {\n\t\tFile configFile = null;\n\t\ttry {\n\t\t\tString tmpDir = System.getProperty(\"java.io.tmpdir\");\n\t\t\tif (tmpDir != null) {\n\t\t\t\tconfigFile = new File(tmpDir, CONFIG_FILE_NAME);\n\t\t\t\tif (!configFile.exists()) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tProperties props = new Properties();\n\t\t\t\tFileInputStream input = new FileInputStream(configFile);\n\t\t\t\tprops.load(input);\n\t\t\t\tinput.close();\n\n\t\t\t\tloadConfiguration(props);\n\t\t\t}\n\t\t} catch (Exception ex) {\n\t\t\t// disabling this error message because some students were seeing it and becoming alarmed\n\t\t\t// System.err.println(\"error: Could not load C++ lib configuration from file \\\"\" + configFile + \"\\\": \" + ex.getMessage());\n\t\t}\n\t}\n\n\t/**\n\t * Loads any saved configuration of this program from disk.\n\t * @param props properties to load from\n\t */\n\tprotected void loadConfiguration(Properties props) {\n\t\t// empty; override me\n\t}\n\t\n\t/* Method: menuAction(e) */\n\t/**\n\t * Called whenever a program action is detected in the menu bar.\n\t * Subclasses can override this method to extend the set of menu\n\t * commands recognized even in the absence of a component with\n\t * keyboard focus.\n\t */\n\tpublic boolean menuAction(ActionEvent event) {\n\t\tString cmd = String.valueOf(event.getActionCommand()).intern();\n\t\tif (cmd == ProgramMenuBar.MENU_ITEM_TEXT_QUIT) {\n\t\t\texit();\n\t\t} else if (cmd == ProgramMenuBar.MENU_ITEM_TEXT_SAVE) {\n\t\t\t// try to find a GCanvas in this program; if there is one, save its output\n\t\t\tGCanvas gc = GuiUtils.getDescendent(this, GCanvas.class);\n\t\t\tif (gc == null) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (this.lastSaveFile == null) {\n\t\t\t\tthis.lastSaveFile = gc.showSaveDialog();\n\t\t\t} else {\n\t\t\t\tgc.save(this.lastSaveFile);\n\t\t\t}\n\t\t} else if (cmd == ProgramMenuBar.MENU_ITEM_TEXT_SAVE_AS) {\n\t\t\t// try to find a GCanvas in this program; if there is one, save its output\n\t\t\tGCanvas gc = GuiUtils.getDescendent(this, GCanvas.class);\n\t\t\tif (gc == null) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.lastSaveFile = gc.showSaveDialog();\n\t\t\treturn true;\n\t\t} else if (cmd == ProgramMenuBar.MENU_ITEM_TEXT_COMPARE_OUTPUT) {\n\t\t\t// try to find a GCanvas in this program; if there is one, compare its output\n\t\t\tGCanvas gc = GuiUtils.getDescendent(this, GCanvas.class);\n\t\t\tif (gc == null) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tgc.showDiffDialog();\n\t\t\treturn true;\n\t\t} else if (cmd == ProgramMenuBar.MENU_ITEM_TEXT_PRINT\n\t\t\t\t|| cmd.equals(ProgramMenuBar.MENU_ITEM_TEXT_PRINT + \"...\")) {\n\t\t\tFrame frame = JTFTools.getEnclosingFrame(this);\n\t\t\tif (frame == null) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tPrintJob pj = frame.getToolkit().getPrintJob(frame, myTitle, null);\n\t\t\tif (pj == null) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tGraphics pg = pj.getGraphics();\n\t\t\tpg.translate(PRINT_MARGIN, PRINT_MARGIN);\n\t\t\tframe.printAll(pg);\n\t\t\tpj.end();\n\t\t\treturn true;\n\t\t} else if (cmd == ProgramMenuBar.MENU_ITEM_TEXT_EXPORT_APPLET\n\t\t\t\t|| cmd == ProgramMenuBar.MENU_ITEM_TEXT_SUBMIT_PROJECT) {\n\t\t\tJTFTools.executeExportAction(this, cmd);\n\t\t\treturn true;\n\t\t} else if (ProgramMenuBar.MENU_ITEM_TEXT_ANTI_ALIASING.equals(cmd)) {\n\t\t\tJCheckBoxMenuItem item = (JCheckBoxMenuItem) event.getSource();\n\t\t\tGObject.setAntiAliasing(item.isSelected());\n\t\t\tfor (GCanvas gc : GuiUtils.getDescendents(this, GCanvas.class)) {\n\t\t\t\tgc.setAntiAliasing(item.isSelected());\n\t\t\t}\n\t\t} else if (ProgramMenuBar.MENU_ITEM_TEXT_SHOW_PIXEL_GRID.equals(cmd)) {\n\t\t\tJCheckBoxMenuItem item = (JCheckBoxMenuItem) event.getSource();\n\t\t\tfor (GCanvas gc : GuiUtils.getDescendents(this, GCanvas.class)) {\n\t\t\t\tgc.setShowPixelGrid(item.isSelected());\n\t\t\t}\n\t\t} else if (ProgramMenuBar.MENU_ITEM_TEXT_SHOW_PIXEL_INFO.equals(cmd)) {\n\t\t\tJCheckBoxMenuItem item = (JCheckBoxMenuItem) event.getSource();\n\t\t\tfor (GCanvas gc : GuiUtils.getDescendents(this, GCanvas.class)) {\n\t\t\t\tgc.setShowPixelInfo(item.isSelected());\n\t\t\t}\n\t\t} else if (cmd == ProgramMenuBar.MENU_ITEM_TEXT_ABOUT) {\n\t\t\tJOptionPane.showMessageDialog(\n\t\t\t\t\tgetConsole(),                        // parent component\n\t\t\t\t\tVersion.getAboutMessage(),           // message\n\t\t\t\t\t\"About Stanford Library\",            // title\n\t\t\t\t\tJOptionPane.INFORMATION_MESSAGE      // type\n\t\t\t\t\t);\n\n\t\t} else if (cmd == ProgramMenuBar.MENU_ITEM_TEXT_CHECK_FOR_UPDATES) {\n\t\t\tstanford.spl.LibraryUpdater updater = new stanford.spl.LibraryUpdater();\n\t\t\tupdater.checkForUpdates(getJFrame());\n\t\t}\n\n\t\t// IOConsole handles other menu items like Cut/Copy/Paste, clear, etc.\n\t\treturn getConsole().menuAction(event);\n\t}\n\n\t/* Method: mouseClicked (implements MouseListener) */\n\t/**\n\t * Called when the mouse is clicked.  A call to <code>mouseClicked</code>\n\t * is always preceded by both a <code>mousePressed</code> and a\n\t * <code>mouseReleased</code> event for the same source.\n\t */\n\tpublic void mouseClicked(MouseEvent e) {\n\t\t// empty\n\t}\n\n\t/* Method: mouseDragged (implements MouseMotionListener) */\n\t/**\n\t * Called when the mouse is dragged with the button down.  Java\n\t * makes several guarantees about dragging.  First, a\n\t * <code>mouseDragged</code> call is always preceded by a\n\t * <code>mousePressed</code> call for the same source.  If the\n\t * mouse is pressed elsewhere and then enters a source with\n\t * the button down, no drag event occurs.  Moreover, once the\n\t * mouse button goes down in a particular source, only that\n\t * source will receive mouse events until the button goes up.\n\t * Those events, moreover, are reported even in the mouse\n\t * travels outside the domain of the object.\n\t */\n\tpublic void mouseDragged(MouseEvent e) {\n\t\t// empty\n\t}\n\n\t/* Method: mouseEntered (implements MouseListener) */\n\t/**\n\t * Called when the mouse enters the source (which may be\n\t * either a component or a <code>GObject</code>).\n\t */\n\tpublic void mouseEntered(MouseEvent e) {\n\t\t// empty\n\t}\n\n\t/* Method: mouseExited (implements MouseListener) */\n\t/**\n\t * Called when the mouse exits the source (which may be\n\t * either a component or a <code>GObject</code>).\n\t */\n\tpublic void mouseExited(MouseEvent e) {\n\t\t// empty\n\t}\n\n\t/* Method: mouseMoved (implements MouseMotionListener) */\n\t/**\n\t * Called when the mouse is moved.\n\t */\n\tpublic void mouseMoved(MouseEvent e) {\n\t\t// empty\n\t}\n\n\t/* Method: mousePressed (implements MouseListener) */\n\t/**\n\t * Called when the mouse button is pressed.\n\t */\n\tpublic void mousePressed(MouseEvent e) {\n\t\t// empty\n\t}\n\n\t/* Method: mouseReleased (implements MouseListener) */\n\t/**\n\t * Called when the mouse button is released.\n\t */\n\tpublic void mouseReleased(MouseEvent e) {\n\t\t// empty\n\t}\n\n\t/**\n\t * Implementation of MouseWheelListener interface.\n\t * This method does nothing but can be overridden.\n\t */\n\tpublic void mouseWheelMoved(MouseWheelEvent e) {\n\t\t// empty\n\t}\n\n\t/**\n\t * Opens the given file for reading.\n\t * @param filename name of the file.\n\t * @return stream to read file\n\t * @throws IORuntimeException if file is not found\n\t */\n\tprotected InputStream openFile(String filename) {\n\t\treturn openFile(/* directory */ \"\", filename);\n\t}\n\n\t/**\n\t * Opens the given file from within the given directory.\n\t * @param filename name of the file.\n\t * @return stream to read file\n\t * @throws IORuntimeException if file is not found\n\t */\n\tprotected InputStream openFile(String directory, String filename) {\n\t\tif (fileExistsOnDisk(directory, filename)) {\n\t\t\treturn openFileFromDisk(directory, filename);\n\t\t} else if (fileExistsInsideJAR(directory, filename)) {\n\t\t\treturn openFileFromJAR(directory, filename);\n\t\t} else {\n\t\t\tthrow new IORuntimeException(\"File not found: \" + filename);\n\t\t}\n\t}\n\n\t/**\n\t * Opens the given file from within the current working directory.\n\t * @param filename name of the file.\n\t * @return stream to read file\n\t * @throws IORuntimeException if file is not found\n\t */\n\tprotected InputStream openFileFromDisk(String filename) {\n\t\treturn openFileFromDisk(/* directory */ \"\", filename);\n\t}\n\n\t/**\n\t * Opens the given file from within the given directory.\n\t * @param directory directory to search for the file.\n\t * @param filename name of the file.\n\t * @return stream to read file\n\t * @throws IORuntimeException if file is not found\n\t */\n\tprotected InputStream openFileFromDisk(String directory, String filename) {\n\t\t// try reading a real file first\n\t\tFile file = (directory == null || directory.isEmpty()) ? new File(filename) : new File(directory, filename);\n\t\ttry {\n\t\t\tif (file.exists()) {\n\t\t\t\treturn new BufferedInputStream(new FileInputStream(file));\n\t\t\t} else {\n\t\t\t\tfile = new File(\"../\" + directory, filename);  // \"../simple.txt\"\n\t\t\t\tif (file.exists()) {\n\t\t\t\t\treturn new BufferedInputStream(new FileInputStream(file));\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (SecurityException sex) {\n\t\t\t// running as an applet\n\t\t} catch (IOException sex) {\n\t\t\t// file not found\n\t\t}\n\t\tthrow new IORuntimeException(\"File not found: \" + filename);\n\t}\n\n\t/**\n\t * Opens the given file from inside the app's JAR archive.\n\t * @param filename name of the file.\n\t * @return stream to read file\n\t * @throws IORuntimeException if file is not found\n\t */\n\tprotected InputStream openFileFromJAR(String filename) {\n\t\treturn openFileFromJAR(/* directory */ \"\", filename);\n\t}\n\n\t/**\n\t * Opens the given file from within the app's JAR archive in the given directory.\n\t * @param directory directory to search for the file.\n\t * @param filename name of the file.\n\t * @return stream to read file\n\t * @throws IORuntimeException if file is not found\n\t */\n\tprotected InputStream openFileFromJAR(String directory, String filename) {\n\t\t// fallback to using internal class stream (JAR or applet)\n\t\tString filepath = \"\";\n\t\tif (directory != null && !directory.isEmpty()) {\n\t\t\t// BUGFIX: use \"/\" instead of File.separator because JAR URLs must use / even on Windows\n\t\t\tfilepath += directory;\n\t\t\tif (!filepath.endsWith(\"/\")) {\n\t\t\t\tfilepath += \"/\";\n\t\t\t}\n\t\t}\n\t\tfilepath += filename;\n\t\tInputStream stream = getClass().getResourceAsStream(filepath);\n\t\tif (stream == null) {\n\t\t\tthrow new IORuntimeException(\"File not found: \" + filepath);\n\t\t} else {\n\t\t\treturn new BufferedInputStream(stream);\n\t\t}\n\t}\n\n\t/**\n\t * Resizes this program to exactly fit the preferred size of its contents.\n\t */\n\tpublic void pack() {\n\t\tthis.getWindow().pack();\n\t}\n\n\t/* Method: pause(milliseconds) */\n\t/**\n\t * Delays the calling thread for the specified time, which is expressed in\n\t * milliseconds.  Unlike <code>Thread.sleep</code>, this method never throws an\n\t * exception.\n\t *\n\t * @usage program.pause(milliseconds);\n\t * @param milliseconds The sleep time in milliseconds\n\t */\n\tpublic void pause(double milliseconds) {\n\t\t// JTFTools.pause(milliseconds);\n\n\t\tcheckKill();\n\t\tif (pauseScaleFactor == 0.0) {\n\t\t\t// pause indefinitely\n\t\t\twhile (pauseScaleFactor == 0.0) {\n\t\t\t\t// if tick flag is set, break out;\n\t\t\t\t// but on next pause() call, will pause indefinitely again\n\t\t\t\tif (pauseTickFlag) {\n\t\t\t\t\tpauseTickFlag = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tJTFTools.pause(250);\n\t\t\t}\n\t\t} else {\n\t\t\tJTFTools.pause((int) (milliseconds * pauseScaleFactor));\n\t\t}\n\t}\n\n\t/**\n\t * Sets a 'pause tick' flag.\n\t * Not to be called by students.\n\t */\n\tpublic void pauseTick() {\n\t\tpauseTickFlag = true;\n\t}\n\t\n\t/**\n\t * Makes sure that <code>print</code> can display a <code>boolean</code>.\n\t * @noshow\n\t */\n\tpublic final void print(boolean x) {\n\t\tprint(String.valueOf(x));\n\t}\n\n\t/**\n\t * Prints the given value in the given color.\n\t * @param value The value to print.\n\t * @param color The color in which to draw the value. If null, draws in black.\n\t */\n\tpublic void print(boolean value, Color color) {\n\t\tprint(String.valueOf(value), color);\n\t}\n\n\t/**\n\t * Makes sure that <code>print</code> can display a <code>char</code>.\n\t * @noshow\n\t */\n\tpublic final void print(char x) {\n\t\tprint(String.valueOf(x));\n\t}\n\n\t/**\n\t * Prints the given value in the given color.\n\t * @param value The value to print.\n\t * @param color The color in which to draw the value. If null, draws in black.\n\t */\n\tpublic void print(char value, Color color) {\n\t\tprint(String.valueOf(value), color);\n\t}\n\n\t/**\n\t * Makes sure that <code>print</code> can display a <code>double</code>.\n\t * @noshow\n\t */\n\tpublic final void print(double x) {\n\t\tprint(String.valueOf(x));\n\t}\n\n\t/**\n\t * Prints the given value in the given color.\n\t * @param value The value to print.\n\t * @param color The color in which to draw the value. If null, draws in black.\n\t */\n\tpublic void print(double value, Color color) {\n\t\tprint(String.valueOf(value), color);\n\t}\n\n\t/**\n\t * Makes sure that <code>print</code> can display a <code>float</code>.\n\t * @noshow\n\t */\n\tpublic final void print(float x) {\n\t\tprint(String.valueOf(x));\n\t}\n\n\t/**\n\t * Prints the given value in the given color.\n\t * @param value The value to print.\n\t * @param color The color in which to draw the value. If null, draws in black.\n\t */\n\tpublic void print(float value, Color color) {\n\t\tprint(String.valueOf(value), color);\n\t}\n\n\t/**\n\t * Makes sure that <code>print</code> can display an <code>int</code>.\n\t * @noshow\n\t */\n\tpublic final void print(int x) {\n\t\tprint(String.valueOf(x));\n\t}\n\n\t/**\n\t * Prints the given value in the given color.\n\t * @param value The value to print.\n\t * @param color The color in which to draw the value. If null, draws in black.\n\t */\n\tpublic void print(int value, Color color) {\n\t\tprint(String.valueOf(value), color);\n\t}\n\n\t/**\n\t * Makes sure that <code>print</code> can display a <code>long</code>.\n\t * @noshow\n\t */\n\tpublic final void print(long x) {\n\t\tprint(String.valueOf(x));\n\t}\n\n\t/**\n\t * Prints the given value in the given color.\n\t * @param value The value to print.\n\t * @param color The color in which to draw the value. If null, draws in black.\n\t */\n\tpublic void print(long value, Color color) {\n\t\tprint(String.valueOf(value), color);\n\t}\n\t\n\t/**\n\t * Makes sure that <code>print</code> can display an <code>Object</code>.\n\t * @noshow\n\t */\n\tpublic final void print(Object x) {\n\t\tprint(String.valueOf(x));\n\t}\n\n\t/**\n\t * Prints the given value in the given color.\n\t * @param value The value to print.\n\t * @param color The color in which to draw the value. If null, draws in black.\n\t */\n\tpublic void print(Object value, Color color) {\n\t\tprint(String.valueOf(value), color);\n\t}\n\n\t/* Method: print(value) */\n\t/**\n\t * Displays the argument value on the console, leaving the cursor at the end of\n\t * the output.  The <code>print</code> method is overloaded so that\n\t * <code>value</code> can be of any type.\n\t *\n\t * @usage program.print(value);\n\t * @param value The value to be displayed\n\t */\n\tpublic void print(String value) {\n\t\tgetOutputModel().print(value);\n\t}\n\n\t/**\n\t * Prints the given string in the given color.\n\t * @param value The string to print.\n\t * @param color The color in which to draw the text. If null, draws in black.\n\t */\n\tpublic void print(String value, Color color) {\n\t\tColor old = getOutputColor();\n\t\tsetOutputColor(color);\n\t\tgetOutputModel().print(value);\n\t\tsetOutputColor(old);\n\t}\n\n\t/**\n\t * Writes a formatted string to this output stream using the specified format string and arguments.\n\t * @param format A format string as described in Java's Format string syntax.\n\t * @param args Arguments referenced by the format specifiers in the format string. If there are more arguments than format specifiers, the extra arguments are ignored. The number of arguments is variable and may be zero. The maximum number of arguments is limited by the maximum dimension of a Java array as defined by The Java™ Virtual Machine Specification. The behavior on a null argument depends on the conversion.\n\t * @throws IllegalFormatException If a format string contains an illegal syntax, a format specifier that is incompatible with the given arguments, insufficient arguments given the format string, or other illegal conditions.\n\t * @throws NullPointerException If the format is null\n\t */\n\tpublic void printf(String format, Object... args) {\n\t\tprint(String.format(format, args));\n\t}\n\n\t/**\n\t * Writes a formatted string to this output stream using the specified format string and arguments.\n\t * @param format A format string as described in Java's Format string syntax.\n\t * @param args Arguments referenced by the format specifiers in the format string. If there are more arguments than format specifiers, the extra arguments are ignored. The number of arguments is variable and may be zero. The maximum number of arguments is limited by the maximum dimension of a Java array as defined by The Java™ Virtual Machine Specification. The behavior on a null argument depends on the conversion.\n\t * @throws IllegalFormatException If a format string contains an illegal syntax, a format specifier that is incompatible with the given arguments, insufficient arguments given the format string, or other illegal conditions.\n\t * @throws NullPointerException If the format is null\n\t */\n\t// public void printf(String format, Color color, Object... args) {\n\t// \tprintln(String.format(format, args), color);\n\t// }\n\n\t/* Method: println() */\n\t/**\n\t * Advances the console cursor to the beginning of the next line.\n\t *\n\t * @usage program.println();\n\t */\n\tpublic void println() {\n\t\tgetOutputModel().println();\n\t}\n\n\t/**\n\t * Makes sure that <code>println</code> can display a <code>boolean</code>.\n\t * @noshow\n\t */\n\tpublic final void println(boolean x) {\n\t\tprintln(String.valueOf(x));\n\t}\n\n\t/**\n\t * Prints the given value in the given color and then advances the cursor to the beginning of the next line.\n\t * @param value The value to print.\n\t * @param color The color in which to draw the value. If null, draws in black.\n\t */\n\tpublic void println(boolean value, Color color) {\n\t\tprintln(String.valueOf(value), color);\n\t}\n\n\t/**\n\t * Makes sure that <code>println</code> can display a <code>char</code>.\n\t * @noshow\n\t */\n\tpublic final void println(char x) {\n\t\tprintln(String.valueOf(x));\n\t}\n\n\t/**\n\t * Prints the given value in the given color and then advances the cursor to the beginning of the next line.\n\t * @param value The value to print.\n\t * @param color The color in which to draw the value. If null, draws in black.\n\t */\n\tpublic void println(char value, Color color) {\n\t\tprintln(String.valueOf(value), color);\n\t}\n\n\t/**\n\t * Makes sure that <code>println</code> can display a <code>double</code>.\n\t * @noshow\n\t */\n\tpublic final void println(double x) {\n\t\tprintln(String.valueOf(x));\n\t}\n\n\t/**\n\t * Prints the given value in the given color and then advances the cursor to the beginning of the next line.\n\t * @param value The value to print.\n\t * @param color The color in which to draw the value. If null, draws in black.\n\t */\n\tpublic void println(double value, Color color) {\n\t\tprintln(String.valueOf(value), color);\n\t}\n\n\t/**\n\t * Makes sure that <code>println</code> can display a <code>float</code>.\n\t * @noshow\n\t */\n\tpublic final void println(float x) {\n\t\tprintln(String.valueOf(x));\n\t}\n\n\t/**\n\t * Prints the given value in the given color and then advances the cursor to the beginning of the next line.\n\t * @param value The value to print.\n\t * @param color The color in which to draw the value. If null, draws in black.\n\t */\n\tpublic void println(float value, Color color) {\n\t\tprintln(String.valueOf(value), color);\n\t}\n\n\t/**\n\t * Makes sure that <code>println</code> can display an <code>int</code>.\n\t * @noshow\n\t */\n\tpublic final void println(int x) {\n\t\tprintln(String.valueOf(x));\n\t}\n\n\t/**\n\t * Prints the given value in the given color and then advances the cursor to the beginning of the next line.\n\t * @param value The value to print.\n\t * @param color The color in which to draw the value. If null, draws in black.\n\t */\n\tpublic void println(int value, Color color) {\n\t\tprintln(String.valueOf(value), color);\n\t}\n\n\t/**\n\t * Makes sure that <code>println</code> can display a <code>long</code>.\n\t * @noshow\n\t */\n\tpublic final void println(long x) {\n\t\tprintln(String.valueOf(x));\n\t}\n\n\t/**\n\t * Prints the given value in the given color and then advances the cursor to the beginning of the next line.\n\t * @param value The value to print.\n\t * @param color The color in which to draw the value. If null, draws in black.\n\t */\n\tpublic void println(long value, Color color) {\n\t\tprintln(String.valueOf(value), color);\n\t}\n\n\t/**\n\t * Makes sure that <code>println</code> can display an <code>Object</code>.\n\t * @noshow\n\t */\n\tpublic final void println(Object x) {\n\t\tprintln(String.valueOf(x));\n\t}\n\n\t/**\n\t * Prints the given value in the given color and then advances the cursor to the beginning of the next line.\n\t * @param value The value to print.\n\t * @param color The color in which to draw the value. If null, draws in black.\n\t */\n\tpublic void println(Object value, Color color) {\n\t\tprintln(String.valueOf(value), color);\n\t}\n\n\t/* Method: println(value) */\n\t/**\n\t * Displays the argument value on the console and then advances the cursor\n\t * to the beginning of the next line.  The <code>println</code> method is\n\t * overloaded so that <code>value</code> can be of any type.\n\t *\n\t * @usage program.println(value);\n\t * @param value The value to be displayed\n\t */\n\tpublic void println(String value) {\n\t\tgetOutputModel().println(value);\n\t}\n\n\t/**\n\t * Prints the given string in the given color and then advances the cursor to the beginning of the next line.\n\t * @param value The string to print.\n\t * @param color The color in which to draw the text. If null, draws in black.\n\t */\n\tpublic void println(String value, Color color) {\n\t\tColor old = getOutputColor();\n\t\tsetOutputColor(color);\n\t\tgetOutputModel().println(value);\n\t\tsetOutputColor(old);\n\t}\n\n\t/**\n\t * Pops up a dialog box displaying the given message and asking the user to type a response.\n\t * @param value the value to display\n\t * @return the text that the user typed, or null if the user presses Cancel\n\t */\n\tpublic String prompt(String prompt) {\n\t\tString result = JOptionPane.showInputDialog(getWindow(), prompt);\n\t\treturn result;\n\t}\n\n\t/* Method: readBoolean() */\n\t/**\n\t * Reads and returns a boolean value (<code>true</code> or <code>false</code>).\n\t * The input must match one of these strings, ignoring case.  If the user\n\t * types a value that is not one of these possibilities, the method ordinarily\n\t * offers the user a chance to reenter the data, although this behavior\n\t * can be changed using the\n\t * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n\t *\n\t * @usage boolean flag = program.readBoolean();\n\t * @return The value of the input interpreted as a boolean value\n\t */\n\tpublic final boolean readBoolean() {\n\t\treturn readBoolean(/* prompt */ null);\n\t}\n\n\t/* Method: readBoolean(prompt) */\n\t/**\n\t * Prompts the user to enter a boolean value, which is returned as\n\t * the value of this method.  If the user types a value that is not a\n\t * legal boolean value, the method ordinarily offers the user a chance\n\t * to reenter the data, although this behavior can be changed using the\n\t * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n\t *\n\t * @usage boolean flag = program.readBoolean(prompt);\n\t * @param prompt The prompt string to display to the user\n\t * @return The value of the input interpreted as a boolean value\n\t */\n\tpublic final boolean readBoolean(String prompt) {\n\t\treturn readBoolean(prompt, /* trueLabel */ \"true\", /* falseLabel */ \"false\");\n\t}\n\n\t/* Method: readBoolean(prompt, trueLabel, falseLabel) */\n\t/**\n\t * Prompts the user to enter a boolean value, which is matched against the\n\t * labels provided.  If the user enters a value that is not one of the two\n\t * choices, <code>readBoolean</code> ordinarily offers the user a chance\n\t * to reenter the data, although this behavior can be changed using the\n\t * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n\t *\n\t * @usage boolean flag = program.readBoolean(prompt, trueLabel, falseLabel);\n\t * @param prompt The prompt string to display to the user\n\t * @param trueLabel The string used to indicate <code>true</code>\n\t * @param falseLabel The string used to indicate <code>false</code>\n\t * @return The value of the input interpreted as a boolean value\n\t */\n\tpublic boolean readBoolean(String prompt, String trueLabel, String falseLabel) {\n\t\treturn getInputModel().readBoolean(prompt, trueLabel, falseLabel);\n\t}\n\n\t/* Method: readDouble() */\n\t/**\n\t * Reads and returns a double-precision value from the user.  If the user\n\t * types a value that is not a legal number, the method ordinarily offers\n\t * the user a chance to reenter the data, although this behavior can be\n\t * changed using the\n\t * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n\t *\n\t * @usage double d = program.readDouble();\n\t * @return The value of the input interpreted as a <code>double</code>\n\t */\n\tpublic final double readDouble() {\n\t\treturn readDouble(/* prompt */ null, Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY);\n\t}\n\n\t/* Method: readDouble(low, high) */\n\t/**\n\t * Reads and returns a double-precision value from the user, which is\n\t * constrained to be within the specified inclusive range.  If the user\n\t * types a value that is not a legal number, the method ordinarily offers\n\t * the user a chance to reenter the data, although this behavior can be\n\t * changed using the\n\t * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n\t *\n\t * @usage double d = program.readDouble(low, high);\n\t * @param low The lowest value in the permitted range\n\t * @param high The highest value in the permitted range\n\t * @return The value of the input interpreted as a <code>double</code>\n\t */\n\tpublic final double readDouble(double low, double high) {\n\t\treturn readDouble(/* prompt */ null, low, high);\n\t}\n\n\t/* Method: readDouble(prompt) */\n\t/**\n\t * Prompts the user to enter an double-precision number, which is then\n\t * returned as the value of this method.  If the user types a value that\n\t * is not a legal number, the method ordinarily offers the user a chance to\n\t * reenter the data,  although this behavior can be changed using the\n\t * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n\t *\n\t * @usage double d = program.readDouble(prompt);\n\t * @param prompt The prompt string to display to the user\n\t * @return The value of the input interpreted as a <code>double</code>\n\t */\n\tpublic final double readDouble(String prompt) {\n\t\treturn readDouble(prompt, Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY);\n\t}\n\n\t/* Method: readDouble(prompt, low, high) */\n\t/**\n\t * Prompts the user to enter an double-precision number, which is then returned\n\t * as the value of this method.  The value must be within the inclusive range\n\t * between <code>low</code> and <code>high</code>.  If the user types a value\n\t * that is not a legal number, the method ordinarily offers the user a chance\n\t * to reenter the data,  although this behavior can be changed using the\n\t * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n\t *\n\t * @usage d = program.readDouble(prompt, low, high);\n\t * @param prompt The prompt string to display to the user\n\t * @param low The lowest value in the permitted range\n\t * @param high The highest value in the permitted range\n\t * @return The value of the input interpreted as a <code>double</code>\n\t */\n\tpublic double readDouble(String prompt, double low, double high) {\n\t\treturn getInputModel().readDouble(prompt, low, high);\n\t}\n\n\t/* Method: readInt() */\n\t/**\n\t * Reads and returns an integer value from the user.  If the user types\n\t * a value that is not a legal integer, the method ordinarily offers the\n\t * user a chance to reenter the data, although this behavior can be\n\t * changed using the\n\t * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n\t *\n\t * @usage int n = program.readInt();\n\t * @return The value of the input interpreted as a decimal integer\n\t */\n\tpublic final int readInt() {\n\t\treturn readInt(/* prompt */ null, Integer.MIN_VALUE, Integer.MAX_VALUE);\n\t}\n\n\t/* Method: readInt(low, high) */\n\t/**\n\t * Reads and returns an integer value from the user, which is constrained to\n\t * be within the specified inclusive range.  If the user types a value\n\t * that is not a legal integer, the method ordinarily offers the user a chance\n\t * to reenter the data, although this behavior can be changed using the\n\t * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n\t *\n\t * @usage int n = program.readInt(low, high);\n\t * @param low The lowest value in the permitted range\n\t * @param high The highest value in the permitted range\n\t * @return The value of the input interpreted as a decimal integer\n\t */\n\tpublic final int readInt(int low, int high) {\n\t\treturn readInt(/* prompt */ null, low, high);\n\t}\n\n\t/* Method: readInt(prompt) */\n\t/**\n\t * Prompts the user to enter an integer, which is then returned as the value\n\t * of this method.  If the user types a value that is not a legal integer,\n\t * the method ordinarily offers the user a chance to reenter the data,\n\t * although this behavior can be changed using the\n\t * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n\t *\n\t * @usage int n = program.readInt(prompt);\n\t * @param prompt The prompt string to display to the user\n\t * @return The value of the input interpreted as a decimal integer\n\t */\n\tpublic final int readInt(String prompt) {\n\t\treturn readInt(prompt, Integer.MIN_VALUE, Integer.MAX_VALUE);\n\t}\n\n\t/* Method: readInt(prompt, low, high) */\n\t/**\n\t * Prompts the user to enter an integer, which is then returned as the value\n\t * of this method.  The value must be within the inclusive range between\n\t * <code>low</code> and <code>high</code>.  If the user types a value that\n\t * is not a legal integer or is outside the specified range, the method\n\t * ordinarily offers the user a chance to reenter the data,\n\t * although this behavior can be changed using the\n\t * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n\t *\n\t * @usage int n = console.readInt(prompt, low, high);\n\t * @param prompt The prompt string to display to the user\n\t * @param low The lowest value in the permitted range\n\t * @param high The highest value in the permitted range\n\t * @return The value of the input interpreted as a decimal integer\n\t */\n\tpublic int readInt(String prompt, int low, int high) {\n\t\treturn getInputModel().readInt(prompt, low, high);\n\t}\n\n\t/* Method: readLine() */\n\t/**\n\t * Reads and returns a line of input from the console.  The end-of-line\n\t * characters that terminate the input are not included in the returned\n\t * string.\n\t *\n\t * @usage String str = program.readLine();\n\t * @return The next line of input as a <code>String</code>\n\t */\n\tpublic final String readLine() {\n\t\treturn readLine(/* prompt */ null);\n\t}\n\n\t/* Method: readLine(prompt) */\n\t/**\n\t * Prompts the user for a line of input.  The end-of-line characters\n\t * that terminate the input are not included in the returned string.\n\t *\n\t * @usage String str = program.readLine(prompt);\n\t * @param prompt The prompt string to display to the user\n\t * @return The next line of input as a <code>String</code>\n\t */\n\tpublic String readLine(String prompt) {\n\t\treturn getInputModel().readLine(prompt);\n\t}\n\t\n\t/* Overridden method: remove(index) */\n\t/**\n\t * Removes the component at the specified index from the central region.\n\t *\n\t * @usage remove(index);\n\t * @param index The index position of the component to remove\n\t * @noshow\n\t */\n\tpublic void remove(int index) {\n\t\tif (isRootPaneCheckingEnabled()) {\n\t\t\tcenterPanel.remove(index);\n\t\t} else {\n\t\t\tsuper.remove(index);\n\t\t}\n\t}\n\n\t/* Overridden method: remove(comp) */\n\t/**\n\t * Removes the specified component from the central region.\n\t *\n\t * @usage remove(comp);\n\t * @param comp The component to remove\n\t * @noshow\n\t */\n\tpublic void remove(Component comp) {\n\t\tif (isRootPaneCheckingEnabled()) {\n\t\t\tcenterPanel.remove(comp);\n\t\t} else {\n\t\t\tsuper.remove(comp);\n\t\t}\n\t\t// invisibleObjects.remove(comp);\n\t}\n\n\t/* Overridden method: removeAll() */\n\t/**\n\t * Removes all components from the central region.\n\t *\n\t * @usage removeAll();\n\t * @noshow\n\t */\n\tpublic void removeAll() {\n\t\tif (isRootPaneCheckingEnabled()) {\n\t\t\tcenterPanel.removeAll();\n\t\t} else {\n\t\t\tsuper.removeAll();\n\t\t}\n\t}\n\n\t/**\n\t * Removes the specified component from the specified region of this program window.\n\t */\n\tpublic void removeFromRegion(Component comp, String region) {\n\t\tJPanel panel = null;\n\t\tif (region.equalsIgnoreCase(\"NORTH\")) {\n\t\t\tpanel = this.northPanel;\n\t\t} else if (region.equalsIgnoreCase(\"EAST\")) {\n\t\t\tpanel = this.eastPanel;\n\t\t} else if (region.equalsIgnoreCase(\"SOUTH\")) {\n\t\t\tpanel = this.southPanel;\n\t\t} else if (region.equalsIgnoreCase(\"WEST\")) {\n\t\t\tpanel = this.westPanel;\n\t\t} else if (region.equalsIgnoreCase(\"CENTER\")) {\n\t\t\tpanel = this.centerPanel;\n\t\t}\n\t\tif (panel != null) {\n\t\t\tpanel.remove(comp);\n\t\t\tpanel.validate();\n\t\t\tvalidate();\n\t\t}\n\t}\n\n\t/**\n\t * Removes the JMenuBar at the top of the program window.\n\t */\n\tpublic void removeMenuBar() {\n\t\tgetJFrame().getJMenuBar().setEnabled(false);\n\t\tsetJMenuBar(null);\n\t\tgetJFrame().setJMenuBar(null);\n\t\tgetJFrame().validate();\n\t}\n\n\t/** Required method of DocumentListener interface. */\n\tpublic void removeUpdate(DocumentEvent e) {\n\t\t// empty\n\t}\n\n\t/* Overridden method: repaint() */\n\t/**\n\t * Forwards repaint to the content pane.\n\t *\n\t * @usage repaint();\n\t * @noshow\n\t */\n\tpublic void repaint() {\n\t\tif (isRootPaneCheckingEnabled()) getContentPane().repaint();\n\t\tsuper.repaint();\n\t}\n\n\t/* Method: run() */\n\t/**\n\t * Specifies the code to be executed as the program runs.\n\t * The <code>run</code> method is required for applications that have\n\t * a thread of control that runs even in the absence of user actions,\n\t * such as a program that uses console interation or that involves\n\t * animation.  GUI-based programs that operate by setting up an initial\n\t * configuration and then wait for user events usually do not specify a\n\t * <code>run</code> method and supply a new definition for <code>init</code>\n\t * instead.\n\t */\n\tpublic void run() {\n\t\t// empty; override me\n\t}\n\n\t/* Protected method: runHook() */\n\t/**\n\t * Calls the run method in the program.  Subclasses can override this\n\t * method to transfer control somewhere else.\n\t */\n\tprotected void runHook() {\n\t\trun();\n\t}\n\n\t/**\n\t * Saves configuration of this program to disk.\n\t */\n\tpublic final void saveConfiguration() {\n\t\tFile configFile = null;\n\t\ttry {\n\t\t\tString tmpDir = System.getProperty(\"java.io.tmpdir\");\n\t\t\tif (tmpDir != null) {\n\t\t\t\tconfigFile = new File(tmpDir, CONFIG_FILE_NAME);\n\t\t\t\tProperties props = new Properties();\n\t\t\t\tsaveConfiguration(props);\n\t\t\t\tFileOutputStream out = new FileOutputStream(configFile);\n\t\t\t\tprops.store(out, \"spl.jar configuration file\");\n\t\t\t\tout.close();\n\t\t\t}\n\t\t} catch (Exception ex) {\n\t\t\t// disabling this error message because some students were seeing it and becoming alarmed\n\t\t\t// System.err.println(\"error: Could not save C++ lib configuration to file \\\"\" + configFile + \"\\\": \" + ex.getMessage());\n\t\t}\n\t}\n\n\t/**\n\t * Saves configuration of this program to disk in the given properties collection.\n\t */\n\tprotected void saveConfiguration(Properties props) {\n\t\t// empty; override me\n\t}\n\n\t/**\n\t * Sets the program to be in animated (true) or non-animated (false) mode.\n\t */\n\tpublic synchronized void setAnimated(boolean value) {\n\t\tanimatedMode = value;\n\t\tif (animatedMode) {\n\t\t\t// start timer, if not already started\n\t\t\tif (animationTimer == null) {\n\t\t\t\tanimationTimer = new javax.swing.Timer(animationDelay, new ActionListener() {\n\t\t\t\t\tpublic void actionPerformed(ActionEvent event) {\n\t\t\t\t\t\tanimation();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tanimationTimer.start();\n\t\t\t}\n\t\t} else {\n\t\t\t// stop timer, if already started\n\t\t\tif (animationTimer != null) {\n\t\t\t\tanimationTimer.stop();\n\t\t\t\tanimationTimer = null;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Sets the number of milliseconds to delay between frames of animation.\n\t * If animation is already in progress, the delay change will take effect immediately.\n\t * @param delayMS delay in milliseconds (must be a positive integer)\n\t */\n\tpublic synchronized void setAnimationDelay(int delayMS) {\n\t\tif (delayMS <= 0) {\n\t\t\tthrow new IllegalArgumentException(\"invalid delay of \" + delayMS + \"; must be a positive integer\");\n\t\t}\n\t\tif (delayMS != animationDelay) {\n\t\t\tanimationDelay = delayMS;\n\t\t\tif (animationTimer != null) {\n\t\t\t\tanimationTimer.setDelay(delayMS);\n\t\t\t}\n\t\t}\n\t}\n\n\t/* Protected method: setAppletStub(stub) */\n\t/**\n\t * Sets the applet stub for this program in a way that makes it possible for\n\t * clients to retrieve it.\n\t *\n\t * @usage setAppletStub(stub);\n\t * @param stub The applet stub\n\t */\n\tprotected void setAppletStub(AppletStub stub) {\n\t\tappletStub = stub;\n\t\tsetStub(stub);\n\t}\n\n\t/* Overridden method: setBackground(color) */\n\t/**\n\t * Sets the background for the central region of the content pane.\n\t *\n\t * @usage setBackground(color);\n\t * @param color The new background color\n\t * @noshow\n\t */\n\tpublic void setBackground(Color color) {\n\t\tif (isRootPaneCheckingEnabled()) {\n\t\t\tnorthPanel.setBackground(color);\n\t\t\tsouthPanel.setBackground(color);\n\t\t\twestPanel.setBackground(color);\n\t\t\teastPanel.setBackground(color);\n\t\t\tcenterPanel.setBackground(color);\n\t\t\tgetContentPane().setBackground(color);\n\t\t}\n\t\tsuper.setBackground(color);\n\t}\n\n\t/**\n\t * Sets the y location of the bottom of this program.\n\t * @param y the y location as a pixel offset (will be rounded down to nearest integer)\n\t */\n\tpublic void setBottomY(double y) {\n\t\tsetLocation(getX(), y - getHeight());\n\t}\n\n\t/**\n\t * Sets the x location of the horizontal center of this program.\n\t * @param x the x location as a pixel offset (will be rounded down to nearest integer)\n\t */\n\tpublic void setCenterX(double x) {\n\t\tsetLocation(x - getWidth() / 2, getY());\n\t}\n\n\t/**\n\t * Sets the y location of the vertical center of this program.\n\t * @param y the y location as a pixel offset (will be rounded down to nearest integer)\n\t */\n\tpublic void setCenterY(double y) {\n\t\tsetLocation(getX(), y - getHeight() / 2);\n\t}\n\n\t/**\n\t * Sets the y location of the horizontal and vertical center of this program.\n\t * @param x the x location as a pixel offset (will be rounded down to nearest integer)\n\t * @param y the y location as a pixel offset (will be rounded down to nearest integer)\n\t */\n\tpublic void setCenterLocation(double x, double y) {\n\t\tsetLocation(x - getWidth() / 2, y - getHeight() / 2);\n\t}\n\n\t/* Method: setConsole(console) */\n\t/**\n\t * Sets the console associated with this program.\n\t *\n\t * @usage program.setConsole(console);\n\t * @param console The <code>IOConsole</code> object used for this program\n\t */\n\tpublic void setConsole(IOConsole console) {\n\t\tmyConsole = console;\n\t}\n\n\t/* Method: setDialog(dialog) */\n\t/**\n\t * Sets the dialog associated with this program.\n\t *\n\t * @usage program.setDialog(dialog);\n\t * @param dialog The <code>IODialog</code> object used for this program\n\t */\n\tpublic void setDialog(IODialog dialog) {\n\t\tmyDialog = dialog;\n\t}\n\n\t/**\n\t * Sets whether the program will exit when its window is closed (default true).\n\t */\n\tpublic void setExitOnClose(boolean exitOnClose) {\n\t\tthis.exitOnClose = exitOnClose;\n\t}\n\n\t/**\n\t * Sets the animation delay properly to produce the given number of frames\n\t * per second of animation.\n\t * Equivalent to calling setAnimationDelay(1000 / fps).\n\t * Special case: If 0 fps is passed, stops the animation.\n\t * Note that calling this method does not start the animation running.\n\t * If animation is already in progress, the FPS change will take effect immediately.\n\t * @param fps frames per second (must be a non-negative integer)\n\t */\n\tpublic void setFramesPerSecond(int fps) {\n\t\tif (fps < 0) {\n\t\t\tthrow new IllegalArgumentException(\"invalid FPS of \" + fps + \"; must be non-negative\");\n\t\t} else if (fps == 0) {\n\t\t\tstopAnimation();\n\t\t} else {\n\t\t\tsetAnimationDelay(Math.max(1, 1000 / fps));\n\t\t}\n\t}\n\n\t/**\n\t * Sets the height of this program without changing its width.\n\t * @param height the new height, in pixels (will be rounded down to nearest integer)\n\t */\n\tpublic void setHeight(double height) {\n\t\tsetSize(getWidth(), height);\n\t}\n\n\t/* Method: setInputModel(io) */\n\t/**\n\t * Sets the input model associated with this program.\n\t *\n\t * @usage program.setInputModel(io);\n\t * @param io The input model used for this program\n\t */\n\tpublic void setInputModel(IOModel io) {\n\t\tinputModel = io;\n\t}\n\n\t/**\n\t * Marks the given GObject as being 'invisible'.\n\t * Not to be called by students.\n\t */\n\tpublic void setInvisible(GObject obj, boolean invisible) {\n\t\tif (invisible) {\n\t\t\tinvisibleObjects.add(obj);\n\t\t} else {\n\t\t\tinvisibleObjects.remove(obj);\n\t\t}\n\t}\n\n\t/**\n\t * Sets the Java Swing window frame that encloses this program.\n\t * @param jframe\n\t */\n\tpublic void setJFrame(JFrame jframe) {\n\t\tprogramFrame = jframe;\n\t}\n\n\t/**\n\t * Sets the JMenuBar at the top of the program window to be the given menu bar.\n\t * If the menu bar passed is null, removes the menu bar.\n\t */\n\tpublic void setJMenuBar(JMenuBar bar) {\n\t\tsuper.setJMenuBar(bar);\n\n\t\tWindow window = programFrame == null ? getWindow() : programFrame;\n\t\tif (window != null && window instanceof JFrame) {\n\t\t\t((JFrame) window).setJMenuBar(null);\n\t\t}\n\n\t\tif (myConsole != null && (bar == null || bar instanceof ProgramMenuBar)) {\n\t\t\tmyConsole.setMenuBar((ProgramMenuBar) bar);\n\t\t}\n\t}\n\n\t/* Overridden method: setLayout(layout) */\n\t/**\n\t * Sets the layout manager for the central region of the content pane.\n\t *\n\t * @usage setLayout(layout);\n\t * @param layout The layout manager to use\n\t * @noshow\n\t */\n\tpublic void setLayout(LayoutManager layout) {\n\t\tif (isRootPaneCheckingEnabled()) {\n\t\t\tcenterPanel.setLayout(layout);\n\t\t} else {\n\t\t\tsuper.setLayout(layout);\n\t\t}\n\t}\n\n\t/**\n\t * Sets the (x, y) location of the top-left corner of this program.\n\t * @param x the x location as a pixel offset (will be rounded down to nearest integer)\n\t * @param y the y location as a pixel offset (will be rounded down to nearest integer)\n\t */\n\tpublic void setLocation(double x, double y) {\n\t\tgetWindow().setLocation((int) x, (int) y);\n\t}\n\n\t/**\n\t * Sets the (x, y) location of the top-left corner of this program.\n\t * @param x the x location as a pixel offset (will be rounded down to nearest integer)\n\t * @param y the y location as a pixel offset (will be rounded down to nearest integer)\n\t */\n\tpublic void setLocation(GPoint point) {\n\t\tgetWindow().setLocation((int) point.getX(), (int) point.getY());\n\t}\n\n\t/**\n\t * Sets the current output color used to display output on the console.\n\t * If null is passed, uses a default of Color.BLACK.\n\t */\n\tpublic void setOutputColor(Color color) {\n\t\tIOModel model = getOutputModel();\n\t\tif (model instanceof IOConsole) {\n\t\t\tConsoleModel cmodel = ((IOConsole) model).getConsoleModel();\n\t\t\tif (cmodel instanceof StandardConsoleModel) {\n\t\t\t\tStandardConsoleModel smodel = (StandardConsoleModel) cmodel;\n\t\t\t\tsmodel.setOutputColor(color);\n\t\t\t}\n\t\t}\n\t}\n\n\t/* Method: setOutputModel(io) */\n\t/**\n\t * Sets the output model associated with this program.\n\t *\n\t * @usage program.setOutputModel(io);\n\t * @param io The <code>IOModel</code> object used as the output model\n\t */\n\tpublic void setOutputModel(IOModel io) {\n\t\toutputModel = io;\n\t}\n\n\t/* Method: setParameter(name, value) */\n\t/**\n\t * Sets a new value for the named parameter.\n\t *\n\t * @usage setParameter(name, value);\n\t * @param name The name of the parameter\n\t * @param value The new value\n\t * @noshow\n\t */\n\tpublic void setParameter(String name, String value) {\n\t\tif (parameterTable == null) {\n\t\t\tparameterTable = new HashMap<String,String>();\n\t\t}\n\t\tparameterTable.put(name.toLowerCase(), value);\n\t}\n\n\t/* Protected method: setParameterTable(ht) */\n\t/**\n\t * Sets the parameter table for this program.\n\t *\n\t * @usage setParameterTable(ht);\n\t * @param ht The parameter table\n\t */\n\tpublic void setParameterTable(Map<String, String> ht) {\n\t\tparameterTable = ht;\n\t}\n\n\t/**\n\t * Applies a scaling factor to the duration of pause() calls.\n\t * Not to be called by students.\n\t */\n\tpublic void setPauseScaleFactor(double factor) {\n\t\tdouble oldFactor = pauseScaleFactor;\n\t\tpauseScaleFactor = factor;\n\t\tif (oldFactor == 0.0 && factor != 0.0) {\n\t\t\t// time is going from 'stopped' to 'not stopped' state;\n\t\t\t// wake up the program if needed\n\t\t}\n\t}\n\n\t/**\n\t * Sets the title of this program.  The title appears in the title bar\n\t * when the program is running as an application.\n\t *\n\t * @usage setTitle(title);\n\t * @param title The title for this program\n\t */\n\tpublic void setResizable(boolean resizable) {\n\t\tif (programFrame != null) {\n\t\t\tprogramFrame.setResizable(resizable);\n\t\t}\n\t}\n\n\t/**\n\t * Sets the x location of the right edge of this program.\n\t * @param x the x location as a pixel offset (will be rounded down to nearest integer)\n\t */\n\tpublic void setRightX(double x) {\n\t\tsetLocation(x - getWidth(), getY());\n\t}\n\t\n\t/**\n\t * Sets whether the program is currently running.\n\t * Not to be called by clients.\n\t */\n\tpublic void setRunning(boolean running) {\n\t\tthis.runFinished = !running;\n\t}\n\n\t/**\n\t * Sets whether to display a grid of horizontal and vertical lines on this canvas\n\t * for debugging, if this program contains a graphical canvas.\n\t */\n\tpublic void setShowPixelGrid(boolean show) {\n\t\tfor (GCanvas gc : GuiUtils.getDescendents(this, GCanvas.class)) {\n\t\t\tgc.setShowPixelGrid(show);\n\t\t}\n\t}\n\n\t/**\n\t * Sets whether to display information on this canvas about the current pixel where\n\t * the mouse pointer is resting in this program's graphical canvas, if this program\n\t * contains a graphical canvas.\n\t * Displays the current pixel's (x, y) coordinate and color.\n\t */\n\tpublic void setShowPixelInfo(boolean show) {\n\t\tfor (GCanvas gc : GuiUtils.getDescendents(this, GCanvas.class)) {\n\t\t\tgc.setShowPixelInfo(show);\n\t\t}\n\t}\n\n\t/**\n\t * Sets the width and height of this program.\n\t * @param width the new width, in pixels (will be rounded down to nearest integer)\n\t * @param height the new height, in pixels (will be rounded down to nearest integer)\n\t */\n\tpublic void setSize(double width, double height) {\n\t\tsuper.setSize((int) width, (int) height);\n\t}\n\n\t/* Protected method: setStartupObject(obj) */\n\t/**\n\t * Sets the object that is created when the program is started so that\n\t * it can be retrieved later by <code>getStartupObject</code>.\n\t *\n\t * @usage setStartupObject(obj);\n\t * @param obj The startup object\n\t */\n\tpublic void setStartupObject(Object obj) {\n\t\tstartupObject = obj;\n\t}\n\n\t/* Method: setTitle(title) */\n\t/**\n\t * Sets the title of this program.  The title appears in the title bar\n\t * when the program is running as an application.\n\t *\n\t * @usage setTitle(title);\n\t * @param title The title for this program\n\t */\n\tpublic void setTitle(String title) {\n\t\tmyTitle = title;\n\t\tif (programFrame != null) {\n\t\t\tprogramFrame.setTitle(title);\n\t\t\tif (Platform.isMac()) {\n\t\t\t\t// System.setProperty(\"com.apple.mrj.application.apple.menu.about.name\", title);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Sets the width of this program without changing its height.\n\t * @param width the new width, in pixels (will be rounded down to nearest integer)\n\t */\n\tpublic void setWidth(double width) {\n\t\tsetSize(width, getHeight());\n\t}\n\n\t/**\n\t * Sets the x location of the top-left corner of this program.\n\t * @param x the x location as a pixel offset (will be rounded down to nearest integer)\n\t * @param y the y location as a pixel offset (will be rounded down to nearest integer)\n\t */\n\tpublic void setX(double x) {\n\t\tsetLocation(x, getY());\n\t}\n\n\t/**\n\t * Sets the y location of the top-left corner of this program.\n\t * @param y the y location as a pixel offset (will be rounded down to nearest integer)\n\t */\n\tpublic void setY(double y) {\n\t\tsetLocation(getX(), y);\n\t}\n\n\t/* Method: showErrorMessage(msg) */\n\t/**\n\t * Displays the error message in the standard output model.\n\t *\n\t * @usage showErrorMessage(msg);\n\t * @param msg The error msg to be displayed\n\t */\n\tpublic void showErrorMessage(String msg) {\n\t\tgetOutputModel().showErrorMessage(msg);\n\t}\n\n\t/* Overridden method: start() */\n\t/**\n\t * Starts the program when it is running in application mode.  Note that this\n\t * overloads the <code>start</code> method in <code>Applet</code> and therefore\n\t * will be called as part of applet startup.\n\t *\n\t * @usage program.start();\n\t * @noshow\n\t */\n\tpublic final void start() {\n\t\tappletMode = getParent() != null;\n\t\tif (appletMode) {\n\t\t\tif (!started) {\n\t\t\t\tstarted = true;\n\t\t\t\tvalidate();\n\t\t\t\tsetVisible(true);\n\t\t\t\tappletStarter = new AppletStarter(this);\n\t\t\t\tappletStarter.start();\n\t\t\t}\n\t\t} else {\n\t\t\tstart(null);\n\t\t}\n\t}\n\n\t/* Method: start(args) */\n\t/**\n\t * Starts the program using the specified argument list.\n\t * Note: Java back-end C++ lib programs do not call start(), so any mandatory initialization\n\t * code that affects the back-end and C++ probably should not go here.\n\t * Java back-end C++ programs instead use the JavaBackEnd class's main() / run() methods\n\t * to construct and initialize Program objects.\n\t *\n\t * @usage program.start(args);\n\t * @param args An array of strings passed to the program\n\t */\n\tpublic void start(String[] args) {\n\t\tif (parameterTable == null) {\n\t\t\tparameterTable = createParameterTable(args);\n\t\t}\n\t\tif (getParent() == null) {\n\t\t\tinitApplicationFrame();\n\t\t}\n\t\tvalidate();\n\t\tcheckCompilerFlags();\n\t\tsetVisible(true);\n\t\tif (programFrame != null) {\n\t\t\tprogramFrame.validate();\n\t\t\tint nComponents = centerPanel.getComponentCount();\n\t\t\tnComponents += northPanel.getComponentCount();\n\t\t\tnComponents += southPanel.getComponentCount();\n\t\t\tnComponents += westPanel.getComponentCount();\n\t\t\tnComponents += eastPanel.getComponentCount();\n\t\t\tif (nComponents > 0) {\n\t\t\t\tprogramFrame.setVisible(true);\n\t\t\t\tshown = true;\n\t\t\t}\n\t\t\tcircumventFrameSizeBug(programFrame, programBounds.getSize());\n\t\t}\n\t\tstarted = true;\n\t\tif (!initFinished) {\n\t\t\t// try {\n\t\t\tinit();\n\t\t\t//\t\t\t} catch (Throwable t) {\n\t\t\t//\t\t\t\tif (t instanceof RuntimeException) {\n\t\t\t//\t\t\t\t\tthrow (RuntimeException) t;\n\t\t\t//\t\t\t\t}\n\t\t\t//\t\t\t\tthrow new RuntimeException(t);\n\t\t\t//\t\t\t}\n\t\t}\n\t\tinitFinished = true;\n\t\tif (programFrame != null && myMenuBar != null) {\n\t\t\tmyMenuBar.install(programFrame);\n\t\t}\n\t\tvalidate();\n\t\tif (!isAppletMode()) {\n\t\t\ttry {\n\t\t\t\tif (!StringUtils.isFalsey(System.getProperty(CONFIG_PROPERTY))\n\t\t\t\t\t\t&& !StringUtils.isFalsey(System.getenv(CONFIG_PROPERTY))) {\n\t\t\t\t\tloadConfiguration();\n\t\t\t\t}\n\t\t\t} catch (SecurityException sex) {\n\t\t\t\t// empty\n\t\t\t}\n\t\t}\n\t\tstartRun();\n\t}\n\n\t/**\n\t * Sets the program into animated mode.\n\t * The animation() method will be called repeatedly in the background.\n\t */\n\tpublic void startAnimation() {\n\t\tsetAnimated(true);\n\t}\n\n\t/* Protected method: startHook() */\n\t/**\n\t * Performs class-specific initialization for the program just before\n\t * it starts.\n\t * @noshow\n\t */\n\tprotected void startHook() {\n\t\t// empty\n\t}\n\n\t/* Protected method: startRun() */\n\t/**\n\t * Initializes and runs the run method.\n\t */\n\tprotected void startRun() {\n\t\tProgramStartupListener listener = new ProgramStartupListener();\n\t\tComponent root = getRootPane();\n\t\tif (root.isShowing()) {\n\t\t\troot.addComponentListener(listener);\n\t\t\troot.validate();\n\t\t\tlistener.waitForStartup(this);\n\t\t\troot.update(root.getGraphics());\n\t\t}\n\t\troot.setCursor(Cursor.getDefaultCursor());\n\t\tinitFinished = true;\n\t\trunFinished = false;\n\t\tstartHook();\n\t\trunHook();\n\t\trunFinished = true;\n\t\tendHook();\n\t\tif (!root.isShowing() && !getContentPane().isShowing()) {\n\t\t\texit();\n\t\t}\n\t}\n\t\n\t/**\n\t * Required method of ChangeListener interface.\n\t */\n\tpublic void stateChanged(ChangeEvent event) {\n\t\t// empty\n\t}\n\n\t/**\n\t * Sets the program into non-animated (default) mode.\n\t * The animation() method will no longer be called repeatedly in the background.\n\t */\n\tpublic void stopAnimation() {\n\t\tsetAnimated(false);\n\t}\n\t\n\t/**\n\t * Required method of TextListener interface.\n\t * Invoked when the value of the text has changed.\n\t */\n\tpublic void textValueChanged(TextEvent e) {\n\t\t// empty\n\t}\n\t\n\t/* Overridden method: validate() */\n\t/**\n\t * Forwards validate to the content pane.\n\t *\n\t * @usage validate();\n\t * @noshow\n\t */\n\tpublic void validate() {\n\t\tif (isRootPaneCheckingEnabled()) getContentPane().validate();\n\t\tsuper.validate();\n\t}\n\t\n\t/** Required empty method of WindowListener interface. */\n\tpublic void windowActivated(WindowEvent event) {\n\t\t// empty\n\t}\n\n\t/** Required empty method of WindowListener interface. */\n\tpublic void windowClosed(WindowEvent event) {\n\t\t// empty\n\t}\n\n\t/** Required empty method of WindowListener interface. */\n\tpublic void windowClosing(WindowEvent event) {\n\t\t// empty\n\t}\n\n\t/** Required empty method of WindowListener interface. */\n\tpublic void windowDeactivated(WindowEvent event) {\n\t\t// empty\n\t}\n\n\t/** Required empty method of WindowListener interface. */\n\tpublic void windowDeiconified(WindowEvent event) {\n\t\t// empty\n\t}\n\t\n\t/**\n\t * Required empty method of WindowFocusListener interface.\n\t * Invoked when the Window is set to be the focused Window, which means that the Window, or one of its subcomponents, will receive keyboard events.\n\t */\n\tpublic void\twindowGainedFocus(WindowEvent e) {\n\t\t// empty\n\t}\n\t\n\t/** Required empty method of WindowListener interface. */\n\tpublic void windowIconified(WindowEvent event) {\n\t\t// empty\n\t}\n\n\t/**\n\t * Required empty method of WindowFocusListener interface.\n\t * Invoked when the Window is no longer the focused Window, which means that keyboard events will no longer be delivered to the Window or any of its subcomponents.\n\t */\n\tpublic void windowLostFocus(WindowEvent e) {\n\t\t// empty\n\t}\n\n\t/** Required empty method of WindowListener interface. */\n\tpublic void windowOpened(WindowEvent event) {\n\t\t// empty\n\t}\n\t\n\t/**\n\t * Required empty method of WindowStateListener interface.\n\t * Invoked when window state is changed.\n\t */\n\tpublic void windowStateChanged(WindowEvent e) {\n\t\t// empty\n\t}\n\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////////////////\n\n\t/* Static method: main(args) */\n\t/**\n\t * Every application must either contain a \"Main-Class\" entry in its\n\t * manifest file or include a main method that looks like this, where\n\t * <code>MyClass</code> is the name of the program class:\n\t *\n\t * <p><pre><code>\n\t * &nbsp;    public static void main(String[] args) {\n\t * &nbsp;       new MyClass().start();\n\t * &nbsp;    }\n\t * </code></pre>\n\t *\n\t * <p>If the program needs the command line arguments, the <code>args</code>\n\t * array can be passed to the <code>start</code> method and then retrieved\n\t * using the <code>getArgumentArray</code> method.\n\t *\n\t * @param args An array of string arguments\n\t */\n\tpublic static void main(String[] args) {\n\t\tif (!CommandLineProgram.isHeadless()) {\n\t\t\tGuiUtils.setSystemLookAndFeel();\n\t\t}\n\t\tMap<String,String> ht = createParameterTable(args);\n\t\tJTFTools.setDebugOptions(ht.get(\"debug\"));\n\t\tString className = ht.get(\"code\");\n\t\tif (className == null) {\n\t\t\tclassName = JTFTools.getMainClass();\n\t\t}\n\t\tClass<?> mainClass = null;\n\t\tProgramInterface program = null;\n\t\tif (className != null) {\n\t\t\tif (className.endsWith(\".class\")) {\n\t\t\t\tclassName = className.substring(0, className.length() - 6);\n\t\t\t}\n\t\t\tclassName = className.replace('/', '.');\n\t\t\tCommandLineProgram.checkIfHeadless(className);\n\t\t\ttry {\n\t\t\t\tmainClass = Class.forName(className);\n\t\t\t} catch (ClassNotFoundException ex) {\n\t\t\t\t// empty\n\t\t\t}\n\t\t}\n\n\t\tif (mainClass != null) {\n\t\t\ttry {\n\t\t\t\tObject obj = mainClass.newInstance();\n\t\t\t\tif (obj instanceof ProgramInterface) {\n\t\t\t\t\tprogram = (ProgramInterface) obj;\n\t\t\t\t\tprogram.setStartupObject(null);\n\t\t\t\t} else {\n\t\t\t\t\tclassName = ht.get(\"program\");\n\t\t\t\t\tif (className == null) {\n\t\t\t\t\t\tthrow new ErrorException(\"Main class does not specify a program\");\n\t\t\t\t\t}\n\t\t\t\t\tprogram = (Program) Class.forName(className).newInstance();\n\t\t\t\t\tprogram.setStartupObject(obj);\n\t\t\t\t}\n\t\t\t} catch (IllegalAccessException ex) {\n\t\t\t\t// empty\n\t\t\t} catch (InstantiationException ex) {\n\t\t\t\t// empty\n\t\t\t} catch (ClassNotFoundException ex) {\n\t\t\t\t// empty\n\t\t\t}\n\t\t}\n\t\tif (program == null) {\n\t\t\tthrow new ErrorException(\"Cannot determine the main class.\");\n\t\t}\n\t\tprogram.setParameterTable(ht);\n\t\tprogram.start();\n\t}\n}\n// end class Program\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/program/ProgramActionListener.java",
    "content": "/*\n * @author Marty Stepp (current maintainer)\n * @version 2017/04/26\n * - initial version; moved out of Program.java into its own file\n */\n\npackage acm.program;\n\nimport java.awt.event.*;\n\n/* Package class: ProgramActionListener */\n/**\n * This class listens for global action events in the menu bar.  These events are\n * passed back to the program through the protected <code>globalMenuAction<code>\n * method.\n */\nclass ProgramActionListener implements ActionListener {\n\t/* Private instance variables */\n\tprivate Program program;\n\n\tpublic ProgramActionListener(Program owner) {\n\t\tprogram = owner;\n\t}\n\n\t/* ActionListener interface */\n\tpublic void actionPerformed(ActionEvent e) {\n\t\tprogram.menuAction(e);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/program/ProgramAppletStub.java",
    "content": "/*\n * @author Marty Stepp (current maintainer)\n * @version 2017/04/26\n * - initial version; moved out of Program.java into its own file\n * - alphabetized methods\n */\n\npackage acm.program;\n\nimport java.applet.*;\nimport java.awt.*;\nimport java.awt.image.*;\nimport java.io.*;\nimport java.lang.reflect.Method;\nimport java.net.*;\nimport java.util.*;\n\nimport acm.util.ErrorException;\n\n/* Package class: ProgramAppletStub */\n/**\n * This class implements both the AppletStub and AppletContext interfaces and allows\n * standard applications to run with the same capabilities as an applet.\n */\n@SuppressWarnings(\"deprecation\")\nclass ProgramAppletStub implements AppletContext, AppletStub {\n\t/* Private instance variables */\n\tprivate Applet applet;\n\tprivate Frame enclosure;\n\tprivate boolean recursiveResizeCheck;\n\n\tpublic ProgramAppletStub(Program program) {\n\t\tapplet = program;\n\t}\n\n\tpublic void appletResize(int width, int height) {\n\t\tif (enclosure == null) {\n\t\t\tif (!recursiveResizeCheck) {\n\t\t\t\trecursiveResizeCheck = true;\n\t\t\t\tapplet.resize(width, height);\n\t\t\t\tapplet.validate();\n\t\t\t\trecursiveResizeCheck = false;\n\t\t\t}\n\t\t} else {\n\t\t\tenclosure.setSize(width, height);\n\t\t\tenclosure.validate();\n\t\t}\n\t}\n\n\tpublic Applet getApplet(String name) {\n\t\treturn null;\n\t}\n\n\tpublic AppletContext getAppletContext() {\n\t\treturn this;\n\t}\n\n\tpublic Enumeration<Applet> getApplets() {\n\t\treturn new Vector<Applet>().elements();\n\t}\n\n\tpublic AudioClip getAudioClip(URL url) {\n\t\tAudioClip clip = null;\n\t\tif (clip == null) clip = getNewAudioClip(url);\n\t\treturn clip;\n\t}\n\n\tprivate String getCanonicalPath(String start) {\n\t\tString path = new File(start).getAbsolutePath();\n\t\tint sp;\n\t\twhile ((sp = path.indexOf(' ')) != -1) {\n\t\t\tpath = path.substring(0, sp) + \"%20\" + path.substring(sp + 1);\n\t\t}\n\t\treturn path;\n\t}\n\n\tpublic URL getCodeBase() {\n\t\ttry {\n\t\t\treturn new URL(\"file:\" + getCanonicalPath(\".\"));\n\t\t} catch (MalformedURLException ex) {\n\t\t\tthrow new ErrorException(\"Error: Illegal document base URL\");\n\t\t}\n\t}\n\n\tpublic URL getDocumentBase() {\n\t\treturn getCodeBase();\n\t}\n\n\tpublic Image getImage(URL url) {\n\t\ttry {\n\t\t\tObject content = url.getContent();\n\t\t\tif (content instanceof ImageProducer) {\n\t\t\t\treturn applet.createImage((ImageProducer) content);\n\t\t\t}\n\t\t} catch (IOException ex) {\n\t\t\t/* Ignore the exception and fail */\n\t\t}\n\t\treturn null;\n\t}\n\n\tprivate synchronized AudioClip getNewAudioClip(URL url) {\n\t\ttry {\n\t\t\tClass<?> type = java.applet.Applet.class;\n\t\t\tClass<?>[] types = { java.net.URL.class };\n\t\t\tObject[] args = { url };\n\t\t\tMethod fn = type.getMethod(\"newAudioClip\", types);\n\t\t\treturn (AudioClip) fn.invoke(null, args);\n\t\t} catch (Exception ex) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tpublic String getParameter(String name) {\n\t\treturn null;\n\t}\n\n\tpublic InputStream getStream(String key) {\n\t\tthrow new ErrorException(\"getStream: unimplemented operation\");\n\t}\n\n\tpublic java.util.Iterator<String> getStreamKeys() {\n\t\tthrow new ErrorException(\"getStreamKeys: unimplemented operation\");\n\t}\n\n\tpublic boolean isActive() {\n\t\treturn true;\n\t}\n\n\tpublic void setFrame(Frame frame) {\n\t\tenclosure = frame;\n\t}\n\n\tpublic void setStream(String key, InputStream stream) {\n\t\tthrow new ErrorException(\"setStream: unimplemented operation\");\n\t}\n\n\tpublic void showDocument(URL url) {\n\t\tif (applet != null) applet.getAppletContext().showDocument(url);\n\t}\n\n\tpublic void showDocument(URL url, String target) {\n\t\tif (applet != null) applet.getAppletContext().showDocument(url, target);\n\t}\n\n\tpublic void showStatus(String status) {\n\t\tif (applet == null) {\n\t\t\tSystem.out.println(status);\n\t\t} else {\n\t\t\tapplet.showStatus(status);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/program/ProgramContentPaneLayout.java",
    "content": "/*\n * @author Marty Stepp (current maintainer)\n * @version 2017/04/26\n * - initial version; moved out of Program.java into its own file\n */\n\npackage acm.program;\n\nimport java.awt.*;\nimport java.awt.event.*;\n\n/* Package class: ProgramContentPaneLayout */\n/**\n * This layout manager is identical to the BorderLayout manager except that\n * it also resizes the Program object itself to correspond to the available\n * space.  This class is required for JDK 1.6 systems, when it became\n * necessary to separate the content pane of the JApplet from the program's\n * JApplet itself.\n */\nclass ProgramContentPaneLayout extends BorderLayout {\n\tprivate Program myProgram;\n\n\tpublic ProgramContentPaneLayout(Program program) {\n\t\tmyProgram = program;\n\t}\n\n\tpublic void layoutContainer(Container parent) {\n\t\tsuper.layoutContainer(parent);\n\t\tif (!myProgram.isAncestorOf(parent)) {\n\t\t\tDimension psize = parent.getSize();\n\t\t\tInsets insets = parent.getInsets();\n\t\t\tint x = insets.left;\n\t\t\tint y = insets.top;\n\t\t\tint width = psize.width - insets.left - insets.right;\n\t\t\tint height = psize.height - insets.top - insets.bottom;\n\t\t\tmyProgram.setBounds(x, y, width, height);\n\t\t\tComponentEvent e = new ComponentEvent(myProgram, ComponentEvent.COMPONENT_RESIZED);\n\t\t\tToolkit.getDefaultToolkit().getSystemEventQueue().postEvent(e);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/program/ProgramFrame.java",
    "content": "/*\n * @author Marty Stepp (current maintainer)\n * @version 2017/04/26\n * - initial version; moved out of Program.java into its own file\n */\n\npackage acm.program;\n\nimport java.awt.*;\nimport javax.swing.*;\n\n/* Package class: ProgramFrame */\n/**\n * This frame represents the visible component that encloses the program.\n */\nclass ProgramFrame extends JFrame {\n\tpublic ProgramFrame(String title) {\n\t\tsuper(title);\n\t}\n\n\tpublic void update(Graphics g) {\n\t\tpaint(g);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/program/ProgramInterface.java",
    "content": "/*\n * @version 2017/07/21\n * - added add() overloads\n * @version 2017/04/27\n * - added directional constants e.g. CENTER\n * - added pause()\n * - added print(), printf(), println()\n */\n\npackage acm.program;\n\nimport java.awt.*;\nimport java.util.*;\n\n/**\n * This interface contains all methods that Program classes are required to implement.\n */\npublic interface ProgramInterface {\n\t/** Constant specifying the center of the container */\n\tpublic static final String CENTER = BorderLayout.CENTER;\n\n\t/** Constant specifying the east edge of the container */\n\tpublic static final String EAST = BorderLayout.EAST;\n\n\t/** Constant specifying the north edge of the container */\n\tpublic static final String NORTH = BorderLayout.NORTH;\n\n\t/** Constant specifying the south edge of the container */\n\tpublic static final String SOUTH = BorderLayout.SOUTH;\n\n\t/** Constant specifying the west edge of the container */\n\tpublic static final String WEST = BorderLayout.WEST;\n\n\tpublic Component add(Component comp);\n\tpublic void add(Component comp, Object constraints);\n\tpublic void add(Component comp, String region, Object constraints);\n\tpublic void addActionListeners();\n\tpublic void exit();\n\tpublic String getTitle();\n\tpublic void init();\n\tpublic void pause(double milliseconds);\n\tpublic void print(Object value);\n\tpublic void print(String value);\n\tpublic void printf(String format, Object... args);\n\tpublic void println();\n\tpublic void println(Object value);\n\tpublic void println(String value);\n\tpublic void run();\n\tpublic void setBackground(Color color);\n\tpublic void setFont(Font font);\n\tpublic void setForeground(Color color);\n\tpublic void setParameterTable(Map<String, String> table);\n\tpublic void setStartupObject(Object obj);\n\tpublic void setTitle(String title);\n\tpublic void start();\n\tpublic void start(String[] args);\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/program/ProgramMenuBar.java",
    "content": "/*\n * @author Marty Stepp (current maintainer)\n * @version 2017/10/31\n * - added Ctrl-number hotkeys to automatically load input script and compare output\n * @version 2017/04/25\n * - added Save / Save As options to GraphicsProgram\n * - added Anti-alias checkbox to GraphicsProgram\n * - added Compare Output option to GraphicsProgram\n * - added internal image icons to menu items\n * @version 2016/11/03\n * - added Load Input Script option for console programs\n * @version 2016/06/21\n * - bug fix where Compare Output option wasn't showing in C++ console programs\n * @version 2015/10/13\n * - new menu feature \"Check for Updates...\" => LibraryUpdater.java\n * @version 2015/06/19\n * - fixed bug where some hotkeys (PgUp, PgDown) were not working in SPL C++ JBEDummyProgram\n * @version 2015/05/21\n * - fixed bug where Edit copy/paste options were disabled in SPL C++ JBEDummyProgram\n * @version 2015/05/14\n * - removed save, print options from GraphicsProgram menu bar\n * @version 2015/05/12\n * - added Ctrl-Home, Ctrl-End, PgUp, PgDown hotkeys to scroll around in console\n */\n\n/*\n * @(#)ProgramMenuBar.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Feature enhancement 2-Mar-07 (ESR)\n//   1. Added menu options to implement the \"Export Applet\" and\n//      \"Submit Project\" items.\n//\n// Feature enhancement 21-May-08 (ESR)\n//   1. Significant redesign of package to support easier extensions.\n//   2. Added program argument to the constructor.\n\npackage acm.program;\n\nimport acm.util.*;\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.util.*;\nimport javax.swing.*;\n\nimport stanford.cs106.gui.GuiUtils;\nimport stanford.cs106.io.ResourceUtils;\nimport stanford.karel.*;\n\n/* Class: ProgramMenuBar */\n/**\n * This class standardizes the menu bars used in the ACM program package. The\n * fundamental principles behind the design of this package are:\n *\n * <p>\n * <ol>\n * <li>The most common menu operations (including, for example, the standard\n * editing operations <b>cut</b>, <b>copy</b>, and <b>paste</b>) should always\n * be available and require no action on the part of the programmer.\n * <p>\n * <li>It should be easy to extend the menu bar without interfering with the\n * standard operations.\n * <p>\n * <li>Menu bars should work in a familiar way on each of the major platforms.\n * In particular, Macintosh users expect there to be a single menu bar at the\n * top of the screen rather than a menu bar in each window.\n * </ol>\n *\n * <p>\n * These goals turn out to be difficult to achieve simultaneously. In\n * particular, supporting both Macintosh-style and Windows-style menu bars\n * requires creating a parallel <code>MenuBar</code> structure behind the\n * underlying <code>JMenuBar</code>, which accounts for much of the complexity\n * in this implementation.\n *\n * <p>\n * <b>Using the <code>ProgramMenuBar</code> class</b>\n *\n * The <code>ProgramMenuBar</code> class supports two distinct disciplines for\n * listening for menu actions:\n *\n * <p>\n * <ul>\n * <li><b>Focused items</b> correspond to actions that are relevant only to the\n * component with the keyboard focus (such as <b>Cut</b>, <b>Copy</b>, and\n * <b>Paste</b>). Clients create focused items by calling\n * <a href=\"#createFocusedItem(String)\"><code>createFocusedItem</code></a>.\n * Activating a focused item passes an action event to the listener set by\n * calling <a href=\"#setFocusedListener(ActionListener)\">\n * <code>setFocusedListener</code></a>, which should be called whenever a\n * component interested in responding to menu actions gains the keyboard focus.\n * <p>\n * <li><b>Program items</b> correspond to actions that are relevant throughout\n * the lifetime of the program (such as <b>Quit</b> and <b>Print</b>). Clients\n * create program items by calling <a href=\"#createProgramItem(String)\">\n * <code>createProgramItem</code></a>. Activating a program item passes an\n * action event to the <code>menuAction</code> method in the\n * <code>Program</code> object that created the menu bar.\n * </ul>\n */\npublic class ProgramMenuBar extends JMenuBar implements Iterable<JMenuItem> {\n\n\t// constants for menu bar item text\n\tpublic static final String MENU_ITEM_TEXT_ABOUT = \"About...\";\n\tpublic static final String MENU_ITEM_TEXT_ANTI_ALIASING = \"Anti-aliasing\";\n\tpublic static final String MENU_ITEM_TEXT_BACKGROUND_COLOR = \"Background Color...\";\n\tpublic static final String MENU_ITEM_TEXT_CHECK_FOR_UPDATES = \"Check for Updates\";\n\tpublic static final String MENU_ITEM_TEXT_CLEAR_CONSOLE = \"Clear Console\";\n\tpublic static final String MENU_ITEM_TEXT_COPY = \"Copy\";\n\tpublic static final String MENU_ITEM_TEXT_CUT = \"Cut\";\n\tpublic static final String MENU_ITEM_TEXT_EXPORT_APPLET = \"Export Applet\";\n\tpublic static final String MENU_ITEM_TEXT_FONT = \"Font...\";\n\tpublic static final String MENU_ITEM_TEXT_FOREGROUND_COLOR = \"Text Color...\";\n\tpublic static final String MENU_ITEM_TEXT_PASTE = \"Paste\";\n\tpublic static final String MENU_ITEM_TEXT_PRINT = \"Print\";\n\tpublic static final String MENU_ITEM_TEXT_PRINT_CONSOLE = \"Print Console\";\n\tpublic static final String MENU_ITEM_TEXT_QUIT = \"Quit\";\n\tpublic static final String MENU_ITEM_TEXT_SAVE = \"Save\";\n\tpublic static final String MENU_ITEM_TEXT_SAVE_AS = \"Save As...\";\n\tpublic static final String MENU_ITEM_TEXT_SCRIPT = \"Script\";\n\tpublic static final String MENU_ITEM_TEXT_SELECT_ALL = \"Select All\";\n\tpublic static final String MENU_ITEM_TEXT_SHOW_PIXEL_GRID = \"Show Pixel Grid\";\n\tpublic static final String MENU_ITEM_TEXT_SHOW_PIXEL_INFO = \"Show Pixel Info\";\n\tpublic static final String MENU_ITEM_TEXT_SUBMIT_PROJECT = \"Submit Project\";\n\n\t// constants for menu bar item text (specific to Karel programs)\n\tpublic static final String MENU_ITEM_TEXT_INTERACTIVE = \"Interactive Mode\";\n\tpublic static final String MENU_ITEM_TEXT_MSKAREL = \"Ms. Karel\";\n\n\t// constants for menu bar item text (specific to Console programs)\n\tpublic static final String MENU_ITEM_TEXT_COMPARE_OUTPUT = \"Compare Output...\";\n\tpublic static final String MENU_ITEM_TEXT_LOAD_INPUT_SCRIPT = \"Load Input Script...\";\n\n\t/* Constant: SHIFT */\n\t/**\n\t * Constant indicating that an accelerator key requires the SHIFT modifier.\n\t */\n\tpublic static final int SHIFT = 0x20000;\n\n\t// key commands for navigating around in the console window\n\tprotected KeyStroke ALT_F4;\n\tprotected KeyStroke COMMAND_A;\n\tprotected KeyStroke COMMAND_B;\n\tprotected KeyStroke COMMAND_C;\n\tprotected KeyStroke COMMAND_END;\n\tprotected KeyStroke COMMAND_EQUALS;\n\tprotected KeyStroke COMMAND_HOME;\n\tprotected KeyStroke COMMAND_I;\n\tprotected KeyStroke COMMAND_L;\n\tprotected KeyStroke COMMAND_MINUS;\n\tprotected KeyStroke COMMAND_SHIFT_MINUS;\n\tprotected KeyStroke COMMAND_P;\n\tprotected KeyStroke COMMAND_PLUS;\n\tprotected KeyStroke COMMAND_SHIFT_PLUS;\n\tprotected KeyStroke COMMAND_Q;\n\tprotected KeyStroke COMMAND_S;\n\tprotected KeyStroke COMMAND_V;\n\tprotected KeyStroke COMMAND_W;\n\tprotected KeyStroke COMMAND_X;\n\tprotected KeyStroke CTRL_1;\n\tprotected KeyStroke CTRL_2;\n\tprotected KeyStroke CTRL_3;\n\tprotected KeyStroke CTRL_4;\n\tprotected KeyStroke CTRL_5;\n\tprotected KeyStroke CTRL_6;\n\tprotected KeyStroke CTRL_7;\n\tprotected KeyStroke CTRL_8;\n\tprotected KeyStroke CTRL_9;\n\tprotected KeyStroke CTRL_0;\n\tprotected KeyStroke CTRL_A;\n\tprotected KeyStroke CTRL_B;\n\tprotected KeyStroke CTRL_C;\n\tprotected KeyStroke CTRL_END;\n\tprotected KeyStroke CTRL_EQUALS;\n\tprotected KeyStroke CTRL_HOME;\n\tprotected KeyStroke CTRL_I;\n\tprotected KeyStroke CTRL_L;\n\tprotected KeyStroke CTRL_MINUS;\n\tprotected KeyStroke CTRL_SHIFT_MINUS;\n\tprotected KeyStroke CTRL_P;\n\tprotected KeyStroke CTRL_Q;\n\tprotected KeyStroke CTRL_PLUS;\n\tprotected KeyStroke CTRL_SHIFT_PLUS;\n\tprotected KeyStroke CTRL_S;\n\tprotected KeyStroke CTRL_V;\n\tprotected KeyStroke CTRL_W;\n\tprotected KeyStroke CTRL_X;\n\tprotected KeyStroke DOWN_ARROW;\n\tprotected KeyStroke F1;\n\tprotected KeyStroke PGDN;\n\tprotected KeyStroke PGUP;\n\tprotected KeyStroke UP_ARROW;\n\n\t/* Private fields (instance variables) */\n\tprivate Program program;\n\tprivate /* ActionListener */ ProgramMenuBarListener menuBarListener;\n\tprivate ActionListener focusedListener;\n\tprivate HashMap<KeyStroke, JMenuItem> accelerators;\n\tprivate HashSet<JMenuItem> focusedItems;\n\n\t/* Constructor: ProgramMenuBar(program) */\n\t/**\n\t * Creates an empty <code>ProgramMenuBar</code>.\n\t *\n\t * @usage ProgramMenuBar mbar = new ProgramMenuBar(owner);\n\t * @param owner\n\t *            The <code>Program</code> that owns this menu bar.\n\t */\n\tpublic ProgramMenuBar(Program owner) {\n\t\tprogram = owner;\n\t\tmenuBarListener = new ProgramMenuBarListener(this);\n\t\tfocusedListener = null;\n\t\taccelerators = new HashMap<KeyStroke, JMenuItem>();\n\t\tfocusedItems = new HashSet<JMenuItem>();\n\n\t\tALT_F4 = KeyStroke.getKeyStroke(KeyEvent.VK_F4, KeyEvent.ALT_DOWN_MASK);\n\t\tCTRL_1 = KeyStroke.getKeyStroke(KeyEvent.VK_1, KeyEvent.CTRL_DOWN_MASK);\n\t\tCTRL_2 = KeyStroke.getKeyStroke(KeyEvent.VK_2, KeyEvent.CTRL_DOWN_MASK);\n\t\tCTRL_3 = KeyStroke.getKeyStroke(KeyEvent.VK_3, KeyEvent.CTRL_DOWN_MASK);\n\t\tCTRL_4 = KeyStroke.getKeyStroke(KeyEvent.VK_4, KeyEvent.CTRL_DOWN_MASK);\n\t\tCTRL_5 = KeyStroke.getKeyStroke(KeyEvent.VK_5, KeyEvent.CTRL_DOWN_MASK);\n\t\tCTRL_6 = KeyStroke.getKeyStroke(KeyEvent.VK_6, KeyEvent.CTRL_DOWN_MASK);\n\t\tCTRL_7 = KeyStroke.getKeyStroke(KeyEvent.VK_7, KeyEvent.CTRL_DOWN_MASK);\n\t\tCTRL_8 = KeyStroke.getKeyStroke(KeyEvent.VK_8, KeyEvent.CTRL_DOWN_MASK);\n\t\tCTRL_9 = KeyStroke.getKeyStroke(KeyEvent.VK_9, KeyEvent.CTRL_DOWN_MASK);\n\t\tCTRL_0 = KeyStroke.getKeyStroke(KeyEvent.VK_0, KeyEvent.CTRL_DOWN_MASK);\n\t\tCOMMAND_A = KeyStroke.getKeyStroke(KeyEvent.VK_A, KeyEvent.META_DOWN_MASK);\n\t\tCOMMAND_B = KeyStroke.getKeyStroke(KeyEvent.VK_B, KeyEvent.META_DOWN_MASK);\n\t\tCOMMAND_C = KeyStroke.getKeyStroke(KeyEvent.VK_C, KeyEvent.META_DOWN_MASK);\n\t\tCOMMAND_END = KeyStroke.getKeyStroke(KeyEvent.VK_END, KeyEvent.META_DOWN_MASK);\n\t\tCOMMAND_EQUALS = KeyStroke.getKeyStroke(KeyEvent.VK_EQUALS, KeyEvent.META_DOWN_MASK);\n\t\tCOMMAND_HOME = KeyStroke.getKeyStroke(KeyEvent.VK_HOME, KeyEvent.META_DOWN_MASK);\n\t\tCOMMAND_I = KeyStroke.getKeyStroke(KeyEvent.VK_I, KeyEvent.META_DOWN_MASK);\n\t\tCOMMAND_L = KeyStroke.getKeyStroke(KeyEvent.VK_L, KeyEvent.META_DOWN_MASK);\n\t\tCOMMAND_MINUS = KeyStroke.getKeyStroke(KeyEvent.VK_MINUS, KeyEvent.META_DOWN_MASK);\n\t\tCOMMAND_SHIFT_MINUS = KeyStroke.getKeyStroke(KeyEvent.VK_MINUS, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK);\n\t\tCOMMAND_P = KeyStroke.getKeyStroke(KeyEvent.VK_P, KeyEvent.META_DOWN_MASK);\n\t\tCOMMAND_PLUS = KeyStroke.getKeyStroke(KeyEvent.VK_PLUS, KeyEvent.META_DOWN_MASK);\n\t\tCOMMAND_SHIFT_PLUS = KeyStroke.getKeyStroke(KeyEvent.VK_EQUALS, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK);\n\t\tCOMMAND_Q = KeyStroke.getKeyStroke(KeyEvent.VK_Q, KeyEvent.META_DOWN_MASK);\n\t\tCOMMAND_S = KeyStroke.getKeyStroke(KeyEvent.VK_S, KeyEvent.META_DOWN_MASK);\n\t\tCOMMAND_V = KeyStroke.getKeyStroke(KeyEvent.VK_V, KeyEvent.META_DOWN_MASK);\n\t\tCOMMAND_W = KeyStroke.getKeyStroke(KeyEvent.VK_W, KeyEvent.META_DOWN_MASK);\n\t\tCTRL_A = KeyStroke.getKeyStroke(KeyEvent.VK_A, KeyEvent.CTRL_DOWN_MASK);\n\t\tCTRL_B = KeyStroke.getKeyStroke(KeyEvent.VK_B, KeyEvent.CTRL_DOWN_MASK);\n\t\tCTRL_C = KeyStroke.getKeyStroke(KeyEvent.VK_C, KeyEvent.CTRL_DOWN_MASK);\n\t\tCTRL_END = KeyStroke.getKeyStroke(KeyEvent.VK_END, KeyEvent.CTRL_DOWN_MASK);\n\t\tCTRL_EQUALS = KeyStroke.getKeyStroke(KeyEvent.VK_EQUALS, KeyEvent.CTRL_DOWN_MASK);\n\t\tCTRL_HOME = KeyStroke.getKeyStroke(KeyEvent.VK_HOME, KeyEvent.CTRL_DOWN_MASK);\n\t\tCTRL_I = KeyStroke.getKeyStroke(KeyEvent.VK_I, KeyEvent.CTRL_DOWN_MASK);\n\t\tCTRL_L = KeyStroke.getKeyStroke(KeyEvent.VK_L, KeyEvent.CTRL_DOWN_MASK);\n\t\tCTRL_MINUS = KeyStroke.getKeyStroke(KeyEvent.VK_MINUS, KeyEvent.CTRL_DOWN_MASK);\n\t\tCTRL_SHIFT_MINUS = KeyStroke.getKeyStroke(KeyEvent.VK_MINUS, KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK);\n\t\tCTRL_P = KeyStroke.getKeyStroke(KeyEvent.VK_P, KeyEvent.CTRL_DOWN_MASK);\n\t\tCTRL_PLUS = KeyStroke.getKeyStroke(KeyEvent.VK_PLUS, KeyEvent.CTRL_DOWN_MASK);\n\t\tCTRL_SHIFT_PLUS = KeyStroke.getKeyStroke(KeyEvent.VK_EQUALS, KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK);\n\t\tCTRL_Q = KeyStroke.getKeyStroke(KeyEvent.VK_Q, KeyEvent.CTRL_DOWN_MASK);\n\t\tCTRL_S = KeyStroke.getKeyStroke(KeyEvent.VK_S, KeyEvent.CTRL_DOWN_MASK);\n\t\tCTRL_V = KeyStroke.getKeyStroke(KeyEvent.VK_V, KeyEvent.CTRL_DOWN_MASK);\n\t\tCTRL_W = KeyStroke.getKeyStroke(KeyEvent.VK_W, KeyEvent.CTRL_DOWN_MASK);\n\t\tDOWN_ARROW = KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0);\n\t\tF1 = KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0);\n\t\tPGDN = KeyStroke.getKeyStroke(KeyEvent.VK_PAGE_DOWN, 0);\n\t\tPGUP = KeyStroke.getKeyStroke(KeyEvent.VK_PAGE_UP, 0);\n\t\tUP_ARROW = KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0);\n\n\t\taddMenus();\n\t}\n\n\t/* Method: getProgram() */\n\t/**\n\t * Returns the <code>Program</code> object associated with this menu.\n\t *\n\t * @usage Program program = mbar.getProgram();\n\t * @return The program associated with this menu bar\n\t */\n\tpublic Program getProgram() {\n\t\treturn program;\n\t}\n\n\t/* Method: createStandardItem(action) */\n\t/**\n\t * Creates one of the standard menu items implemented by the\n\t * <code>ProgramMenuBar</code> class. The menu item is identified by its\n\t * action command.\n\t *\n\t * @usage JMenuItem item = mbar.createStandardItem(action);\n\t * @param action\n\t *            The action command identifying the menu item to be created\n\t */\n\tpublic JMenuItem createStandardItem(String action, int mnemonic) {\n\t\treturn createStandardItem(action, mnemonic, /* keystroke */ null);\n\t}\n\n\tpublic JMenuItem createStandardItem(String action, int mnemonic, KeyStroke keystroke) {\n\t\tboolean mac = Platform.isMac();\n\t\taction = action.intern();\n\t\tJMenuItem item = null;\n\t\tif (action.equals(MENU_ITEM_TEXT_QUIT)) {\n\t\t\titem = createProgramItem(action, 'Q', mac ? COMMAND_Q : ALT_F4);\n\t\t\tif (mac) {\n\t\t\t\tsetAccelerator(item, 'Q');\n\t\t\t} else {\n\t\t\t\titem.setName(\"Exit\");\n\t\t\t}\n\t\t} else if (action.equals(MENU_ITEM_TEXT_CUT)) {\n\t\t\titem = createFocusedItem(action, 'X', mac ? COMMAND_X : CTRL_X);\n\t\t\titem.setMnemonic('t');\n\t\t\tif (!mac)\n\t\t\t\titem.setName(\"Cut (x)\");\n\t\t} else if (action.equals(MENU_ITEM_TEXT_COPY)) {\n\t\t\titem = createFocusedItem(action, 'C', mac ? COMMAND_C : CTRL_C);\n\t\t\tif (!mac)\n\t\t\t\titem.setName(\"Copy (c)\");\n\t\t} else if (action.equals(MENU_ITEM_TEXT_PASTE)) {\n\t\t\titem = createFocusedItem(action, 'V', mac ? COMMAND_V : CTRL_V);\n\t\t\titem.setMnemonic('P');\n\t\t\tif (!mac)\n\t\t\t\titem.setName(\"Paste (v)\");\n\t\t} else if (action.equals(MENU_ITEM_TEXT_COMPARE_OUTPUT)) {\n\t\t\titem = createProgramItem(action, 'C');\n\t\t} else if (action.equals(MENU_ITEM_TEXT_CLEAR_CONSOLE)) {\n\t\t\titem = createProgramItem(action, 'L', mac ? COMMAND_L : CTRL_L);\n\t\t} else if (action.equals(MENU_ITEM_TEXT_LOAD_INPUT_SCRIPT)) {\n\t\t\titem = createProgramItem(action, 'I', mac ? COMMAND_I : CTRL_I);\n\t\t} else if (action.equals(MENU_ITEM_TEXT_SELECT_ALL)) {\n\t\t\titem = createFocusedItem(action, 'A', mac ? COMMAND_A : CTRL_A);\n\t\t} else if (action.equals(MENU_ITEM_TEXT_SAVE)) {\n\t\t\titem = createFocusedItem(action, 'S', mac ? COMMAND_S : CTRL_S);\n\t\t} else if (action.equals(MENU_ITEM_TEXT_SAVE_AS)) {\n\t\t\titem = createFocusedItem(action, 'A');\n\t\t} else if (action.equals(MENU_ITEM_TEXT_PRINT)) {\n\t\t\titem = createProgramItem(action, 'P', mac ? COMMAND_P : CTRL_P);\n\t\t\titem.setName(MENU_ITEM_TEXT_PRINT);\n\t\t} else if (action.equals(MENU_ITEM_TEXT_PRINT_CONSOLE)) {\n\t\t\titem = createProgramItem(action);\n\t\t} else if (action.equals(MENU_ITEM_TEXT_SCRIPT)) {\n\t\t\titem = createProgramItem(action);\n\t\t\titem.setName(\"Script...\");\n\t\t} else if (action.equals(MENU_ITEM_TEXT_EXPORT_APPLET)) {\n\t\t\titem = createProgramItem(action);\n\t\t\titem.setName(\"Export Applet...\");\n\t\t} else if (action.equals(MENU_ITEM_TEXT_SUBMIT_PROJECT)) {\n\t\t\titem = createProgramItem(action);\n\t\t\titem.setName(\"Submit Project...\");\n\t\t} else {\n\t\t\tthrow new ErrorException(\"Illegal standard menu item: \" + action);\n\t\t}\n\t\tif (keystroke != null) {\n\t\t\titem.setAccelerator(keystroke);\n\t\t}\n\t\t\n\t\ttryToSetIcon(item);\n\t\treturn item;\n\t}\n\t\n\t/**\n\t * Tries to look up an image icon in the spl.jar and set it on the given menu item.\n\t */\n\tstatic void tryToSetIcon(JMenuItem item) {\n\t\t// try to find an icon for this menu item\n\t\tString filename = \"res/icons/\" + item.getText().toLowerCase()\n\t\t\t\t.replace(\"...\", \"\")\n\t\t\t\t.replaceAll(\"[^a-zA-Z0-9_-]+\", \"_\")\n\t\t\t\t+ \".gif\";\n\t\tif (ResourceUtils.fileExists(filename)) {\n\t\t\tjava.net.URL url = ResourceUtils.filenameToURL(filename);\n\t\t\tImage img = MediaTools.loadImage(url);\n\t\t\tif (img != null) {\n\t\t\t\titem.setIcon(new ImageIcon(img));\n\t\t\t} else {\n\t\t\t\t// fall back to blank 16x16 icon\n\t\t\t\tfilename = \"res/icons/blank.gif\";\n\t\t\t\turl = ResourceUtils.filenameToURL(filename);\n\t\t\t\timg = MediaTools.loadImage(url);\n\t\t\t\tif (img != null) {\n\t\t\t\t\titem.setIcon(new ImageIcon(img));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/* Method: createProgramItem(action) */\n\t/**\n\t * Creates a program menu item with the specified action command. The\n\t * initial item has the same label as the action command, but clients can\n\t * change this name by calling <code>setName</code> on the item.\n\t *\n\t * @usage JMenuItem item = createProgramItem(action);\n\t * @param action\n\t *            The action command generated by this menu item\n\t */\n\tpublic JMenuItem createProgramItem(String action) {\n\t\tJMenuItem item = new JMenuItem(action);\n\t\titem.setActionCommand(action);\n\t\titem.addActionListener(menuBarListener);\n\t\ttryToSetIcon(item);\n\t\treturn item;\n\t}\n\n\t/* Method: createProgramItem(action, key) */\n\t/**\n\t * Creates a program menu item with the specified action command and\n\t * accelerator key.\n\t *\n\t * @usage JMenuItem item = createProgramItem(action, key);\n\t * @param action\n\t *            The action command generated by this menu item\n\t * @param key\n\t *            The integer value of the keystroke accelerator\n\t */\n\tpublic JMenuItem createProgramItem(String action, int key, KeyStroke keystroke) {\n\t\tJMenuItem item = createProgramItem(action, key);\n\t\titem.setAccelerator(keystroke);\n\t\titem.setMnemonic(key);\n\t\ttryToSetIcon(item);\n\t\treturn item;\n\t}\n\n\tpublic JMenuItem createProgramItem(String action, int key) {\n\t\tJMenuItem item = createProgramItem(action);\n\t\tsetAccelerator(item, key);\n\t\titem.setMnemonic(key);\n\t\ttryToSetIcon(item);\n\t\treturn item;\n\t}\n\n\t/* Method: createFocusedItem(action) */\n\t/**\n\t * Creates a focused menu item with the specified action command.\n\t *\n\t * @usage JMenuItem item = createFocusedItem(action);\n\t * @param action\n\t *            The action command generated by this menu item\n\t */\n\tpublic JMenuItem createFocusedItem(String action) {\n\t\tJMenuItem item = createProgramItem(action);\n\t\tfocusedItems.add(item);\n\t\ttryToSetIcon(item);\n\t\treturn item;\n\t}\n\n\t/* Method: createFocusedItem(action, key) */\n\t/**\n\t * Creates a focused menu item with the specified action command and\n\t * accelerator key.\n\t *\n\t * @usage JMenuItem item = createFocusedItem(action, key);\n\t * @param action\n\t *            The action command generated by this menu item\n\t * @param key\n\t *            The integer value of the keystroke accelerator\n\t */\n\tpublic JMenuItem createFocusedItem(String action, int key) {\n\t\treturn createFocusedItem(action, key, /* keystroke */ null, /* shouldSetAccelerator */ false);\n\t}\n\n\tpublic JMenuItem createFocusedItem(String action, int key, KeyStroke keystroke) {\n\t\treturn createFocusedItem(action, key, keystroke, /* shouldSetAccelerator */ true);\n\t}\n\n\tpublic JMenuItem createFocusedItem(String action, int key, KeyStroke keystroke, boolean shouldSetAccelerator) {\n\t\tJMenuItem item = createFocusedItem(action);\n\t\tif (keystroke != null) {\n\t\t\titem.setAccelerator(keystroke);\n\t\t\taccelerators.put(keystroke, item);\n\t\t} else if (shouldSetAccelerator && key != ' ' && key != '\\0') {\n\t\t\tsetAccelerator(item, key);\n\t\t}\n\t\titem.setMnemonic(key);\n\t\ttryToSetIcon(item);\n\t\treturn item;\n\t}\n\n\t@SuppressWarnings(\"unchecked\")\n\tpublic <T extends JMenuItem> T getMenuItem(String text) {\n\t\tfor (int i = 0; i < getMenuCount(); i++) {\n\t\t\tJMenu menu = getMenu(i);\n\t\t\tif (menu == null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tfor (int j = 0; j < menu.getItemCount(); j++) {\n\t\t\t\tJMenuItem item = menu.getItem(j);\n\t\t\t\tString itemText = item.getText();\n\t\t\t\tif (itemText != null && itemText.equals(text)) {\n\t\t\t\t\treturn (T) item;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\t/* Method: isFocusedItem(item) */\n\t/**\n\t * Returns <code>true</code> if the item is a focused item.\n\t *\n\t * @usage if (mbar.isFocusedItem(item)) . . .\n\t * @param item\n\t *            A menu item installed in the menu bar\n\t * @return <code>true</code> if the item is a program item\n\t */\n\tpublic boolean isFocusedItem(JMenuItem item) {\n\t\treturn focusedItems.contains(item);\n\t}\n\n\t/* Method: setAccelerator(item, key) */\n\t/**\n\t * Sets the accelerator for the item as appropriate to the operating system\n\t * conventions.\n\t *\n\t * @usage mbar.setAccelerator(item, key);\n\t * @param item\n\t *            The menu item triggered by this accelerator\n\t * @param key\n\t *            The integer value of the keystroke accelerator\n\t */\n\t@SuppressWarnings(\"deprecation\")\n\tpublic void setAccelerator(JMenuItem item, int key) {\n\t\tint mask = (Platform.isMac()) ? KeyEvent.META_MASK : KeyEvent.CTRL_MASK;\n\t\tif (key > 0x10000) {\n\t\t\tkey -= SHIFT;\n\t\t\tmask |= KeyEvent.SHIFT_MASK;\n\t\t}\n\t\tKeyStroke stroke = KeyStroke.getKeyStroke((char) key, mask);\n\t\taccelerators.put(stroke, item);\n\t\tif (Platform.isMac()) {\n\t\t\titem.setAccelerator(stroke);\n\t\t} else {\n\t\t\titem.setMnemonic(key);\n\t\t}\n\t}\n\n\t/* Method: setEnabled(action, flag) */\n\t/**\n\t * Enables or disables any menu items that generate the specified action\n\t * command.\n\t *\n\t * @usage mbar.setEnabled(action, flag);\n\t * @param action\n\t *            The action command triggered by the menu item\n\t * @param flag\n\t *            <code>true</code> to enable the item, <code>false</code> to\n\t *            disable it\n\t */\n\tpublic void setEnabled(String action, boolean flag) {\n\t\tint nMenus = getMenuCount();\n\t\tfor (int i = 0; i < nMenus; i++) {\n\t\t\tsetEnabled(getMenu(i), action, flag);\n\t\t}\n\t}\n\n\t/* Method: install(comp) */\n\t/**\n\t * Installs the menu bar in the <code>JFrame</code> or <code>Program</code>\n\t * object enclosing the component <code>comp</code>.\n\t *\n\t * @usage mbar.install(comp);\n\t * @param comp\n\t *            A descendant of the frame in which the menu is to be installed\n\t */\n\tpublic void install(Component comp) {\n\t\t@SuppressWarnings(\"deprecation\")\n\t\tComponent contentPane = program.getContentPane();\n\t\twhile (comp != null && !(comp instanceof JFrame)) {\n\t\t\tcomp = comp.getParent();\n\t\t\tif (comp == contentPane && program.isAppletMode()) {\n\t\t\t\tprogram.setJMenuBar(this);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (comp == null)\n\t\t\treturn;\n\t\tJFrame frame = (JFrame) comp;\n\t\tframe.setJMenuBar(this);\n\t\tframe.validate();\n\t}\n\n\t/* Method: fireActionListeners(e) */\n\t/**\n\t * Fires the action listeners responsible for handling the specified event.\n\t * The process of choosing the appropriate handlers takes into account\n\t * whether the action command is designated as program or focused.\n\t */\n\tpublic void fireActionListeners(ActionEvent e) {\n\t\tif (focusedListener != null && focusedItems.contains(e.getSource())) {\n\t\t\tfocusedListener.actionPerformed(e);\n\t\t} else {\n\t\t\tprogram.menuAction(e);\n\t\t}\n\t}\n\n\t/* Method: fireAccelerator(e) */\n\t/**\n\t * Triggers the accelerator associated with the keystroke implied by the key\n\t * event. This method returns <code>true</code> if such an accelerator\n\t * exists.\n\t */\n\tpublic boolean fireAccelerator(KeyEvent e) {\n\t\tKeyStroke stroke = KeyStroke.getKeyStrokeForEvent(e);\n\t\tJMenuItem item = accelerators.get(stroke);\n\t\tif (item != null) {\n\t\t\titem.doClick(0);\n\t\t\treturn true;\n\t\t}\n\n\t\t//////\n\t\tif (getProgram() instanceof AbstractConsoleProgram) {\n\t\t\tfinal AbstractConsoleProgram consoleProgram = (AbstractConsoleProgram) getProgram();\n\t\t\tif (stroke.equals(CTRL_HOME) || stroke.equals(COMMAND_HOME)) {\n\t\t\t\tconsoleProgram.scrollToTop();\n\t\t\t\treturn true;\n\t\t\t} else if (stroke.equals(CTRL_END) || stroke.equals(COMMAND_END)) {\n\t\t\t\tconsoleProgram.scrollToBottom();\n\t\t\t\treturn true;\n\t\t\t} else if (stroke.equals(PGUP)) {\n\t\t\t\tconsoleProgram.scrollPageUp();\n\t\t\t\treturn true;\n\t\t\t} else if (stroke.equals(CTRL_PLUS) || stroke.equals(COMMAND_PLUS) || stroke.equals(CTRL_EQUALS)\n\t\t\t\t\t|| stroke.equals(COMMAND_EQUALS) || stroke.equals(CTRL_SHIFT_PLUS) || stroke.equals(COMMAND_SHIFT_PLUS)) {\n\t\t\t\tconsoleProgram.fontEnlarge();\n\t\t\t\treturn true;\n\t\t\t} else if (stroke.equals(CTRL_MINUS) || stroke.equals(COMMAND_MINUS) || stroke.equals(CTRL_SHIFT_MINUS) || stroke.equals(COMMAND_SHIFT_MINUS)) {\n\t\t\t\tconsoleProgram.fontShrink();\n\t\t\t\treturn true;\n\t\t\t} else if (stroke.equals(CTRL_1)\n\t\t\t\t\t|| stroke.equals(CTRL_2)\n\t\t\t\t\t|| stroke.equals(CTRL_3)\n\t\t\t\t\t|| stroke.equals(CTRL_4)\n\t\t\t\t\t|| stroke.equals(CTRL_5)\n\t\t\t\t\t|| stroke.equals(CTRL_6)\n\t\t\t\t\t|| stroke.equals(CTRL_7)\n\t\t\t\t\t|| stroke.equals(CTRL_8)\n\t\t\t\t\t|| stroke.equals(CTRL_9)\n\t\t\t\t\t|| stroke.equals(CTRL_0)) {\n\t\t\t\t// auto-load input script and compare output\n\t\t\t\tfinal int num = stroke.getKeyCode() - '0';   // 0-9\n\t\t\t\tif (consoleProgram.loadInputScript(num)) {\n\t\t\t\t\tnew Thread(new Runnable() {\n\t\t\t\t\t\tpublic void run() {\n\t\t\t\t\t\t\t// wait up to 30 sec for program to terminate\n\t\t\t\t\t\t\tlong startTime = System.currentTimeMillis();\n\t\t\t\t\t\t\tlong elapsed = 0;\n\t\t\t\t\t\t\tfinal long ELAPSED_MAX = 30000;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\twhile (elapsed < ELAPSED_MAX && consoleProgram.isRunning()) {\n\t\t\t\t\t\t\t\tconsoleProgram.pause(100);\n\t\t\t\t\t\t\t\telapsed = System.currentTimeMillis() - startTime;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif (elapsed < ELAPSED_MAX) {\n\t\t\t\t\t\t\t\tconsoleProgram.compareOutput(num);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}).start();\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t} else if (stroke.equals(CTRL_B) || stroke.equals(COMMAND_B)) {\n\t\t\t\tconsoleProgram.fontToggleBold();\n\t\t\t\treturn true;\n\t\t\t} else if (stroke.equals(UP_ARROW)) {\n\t\t\t\tconsoleProgram.historyUp();\n\t\t\t\treturn true;\n\t\t\t} else if (stroke.equals(DOWN_ARROW)) {\n\t\t\t\tconsoleProgram.historyDown();\n\t\t\t\treturn true;\n\t\t\t} else if (stroke.equals(PGDN)) {\n\t\t\t\tconsoleProgram.scrollPageDown();\n\t\t\t\treturn true;\n\t\t\t} else if (stroke.equals(CTRL_W) || stroke.equals(COMMAND_W)) {\n\t\t\t\tconsoleProgram.exit();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/* Method: setFocusedListener(listener) */\n\t/**\n\t * Registers a listener that responds while the caller holds the keyboard\n\t * focus. The caller should register its listener when it acquires the\n\t * keyboard focus and set it to <code>null</code> when it loses it.\n\t *\n\t * @usage setFocusedListener(listener);\n\t * @param listener\n\t *            An <code>ActionListener</code> that responds to focused items\n\t */\n\tpublic void setFocusedListener(ActionListener listener) {\n\t\tfocusedListener = listener;\n\t}\n\n\t/* Method: iterator() */\n\t/**\n\t * Returns an iterator that enumerates the individual menu items under the\n\t * control of the menu bar.\n\t *\n\t * @usage Iterator<JMenuItem> iterator = mbar.iterator(); return An iterator\n\t *        that enumerates the menu items\n\t */\n\tpublic Iterator<JMenuItem> iterator() {\n\t\tArrayList<JMenuItem> itemList = new ArrayList<JMenuItem>();\n\t\tfor (int i = 0; i < getMenuCount(); i++) {\n\t\t\taddItemToList(itemList, getMenu(i));\n\t\t}\n\t\treturn itemList.iterator();\n\t}\n\n\t/* Protected methods */\n\n\t/* Protected method: addMenus() */\n\t/**\n\t * Adds menus to the menu bar. Subclasses that wish to change the\n\t * composition of the menu bar beyond the default <code>File</code> and\n\t * <code>Edit</code> menus should override this method with one that adds\n\t * the desired menus.\n\t */\n\tprotected void addMenus() {\n\t\taddFileMenu();\n\t\tProgram program = getProgram();\n\t\tif (program instanceof AbstractConsoleProgram) {\n\t\t\taddEditMenu();\n\t\t}\n\t\tif (program instanceof AbstractConsoleProgram) {\n\t\t\taddConsoleOptionsMenu();\n\t\t} else if (program instanceof Karel || program instanceof KarelProgram) {\n\t\t\taddKarelOptionsMenu();\n\t\t} else {\n\t\t\taddGraphicsOptionsMenu();\n\t\t}\n\t\taddHelpMenu();\n\t}\n\n\t/* Protected method: addFileMenu() */\n\t/**\n\t * Installs the <code>File</code> menu.\n\t *\n\t * @usage mbar.addFileMenu();\n\t */\n\tprotected void addFileMenu() {\n\t\tJMenu fileMenu = GuiUtils.createMenu(\"File\", this);\n\t\taddFileMenuItems(fileMenu);\n\t}\n\n\t/* Protected method: addEditMenu() */\n\t/**\n\t * Installs the <code>Edit</code> menu.\n\t *\n\t * @usage mbar.addEditMenu();\n\t */\n\tprotected void addEditMenu() {\n\t\tJMenu editMenu = GuiUtils.createMenu(\"Edit\", this);\n\t\taddEditMenuItems(editMenu);\n\t}\n\n\t/**\n\t * Installs the <code>Options</code> menu for console programs.\n\t *\n\t * @usage mbar.addConsoleOptionsMenu();\n\t */\n\tprotected void addConsoleOptionsMenu() {\n\t\tJMenu optionsMenu = GuiUtils.createMenu(\"Options\", this);\n\t\ttryToSetIcon(GuiUtils.createMenuItem(MENU_ITEM_TEXT_FONT, menuBarListener, optionsMenu));\n\t\ttryToSetIcon(GuiUtils.createMenuItem(MENU_ITEM_TEXT_BACKGROUND_COLOR, menuBarListener, optionsMenu));\n\t\ttryToSetIcon(GuiUtils.createMenuItem(MENU_ITEM_TEXT_FOREGROUND_COLOR, menuBarListener, optionsMenu));\n\t}\n\n\t/**\n\t * Installs the <code>Options</code> menu for graphics programs.\n\t *\n\t * @usage mbar.addGraphicsOptionsMenu();\n\t */\n\tprotected void addGraphicsOptionsMenu() {\n\t\tJMenu optionsMenu = GuiUtils.createMenu(\"Options\", this);\n\t\tJCheckBoxMenuItem antialiasItem = GuiUtils.createCheckBoxMenuItem(MENU_ITEM_TEXT_ANTI_ALIASING, /* checked */ true, menuBarListener, optionsMenu);\n\t\tantialiasItem.setToolTipText(\"Enable / disable smoothing of edges and pixels in drawn shapes.\");\n\t\tJCheckBoxMenuItem showPixelInfoItem = GuiUtils.createCheckBoxMenuItem(MENU_ITEM_TEXT_SHOW_PIXEL_INFO, /* checked */ false, menuBarListener, optionsMenu);\n\t\tshowPixelInfoItem.setToolTipText(\"Enable / disable display of pixel x/y/color info for debugging.\");\n\t\tJCheckBoxMenuItem showPixelGridItem = GuiUtils.createCheckBoxMenuItem(MENU_ITEM_TEXT_SHOW_PIXEL_GRID, /* checked */ false, menuBarListener, optionsMenu);\n\t\tshowPixelGridItem.setToolTipText(\"Enable / disable display of grid lines on canvas for debugging.\");\n\t}\n\n\t/* Protected method: addKarelOptionsMenu() */\n\t/**\n\t * Installs the <code>Options</code> menu for Karel programs.\n\t *\n\t * @usage mbar.addKarelOptionsMenu();\n\t */\n\tprotected void addKarelOptionsMenu() {\n\t\tJMenu optionsMenu = GuiUtils.createMenu(\"Options\", this);\n\t\tGuiUtils.createCheckBoxMenuItem(MENU_ITEM_TEXT_MSKAREL, menuBarListener, optionsMenu);\n\t\tGuiUtils.createCheckBoxMenuItem(MENU_ITEM_TEXT_INTERACTIVE, menuBarListener, optionsMenu);\n\t}\n\n\tprotected void addHelpMenu() {\n\t\tJMenu helpMenu = GuiUtils.createMenu(\"Help\", this);\n\n\t\tJMenuItem aboutItem = GuiUtils.createMenuItem(MENU_ITEM_TEXT_ABOUT, menuBarListener, helpMenu);\n\t\taboutItem.setAccelerator(F1);\n\t\taccelerators.put(F1, aboutItem);\n\t\ttryToSetIcon(aboutItem);\n\n\t\tJMenuItem checkForUpdatesItem = GuiUtils.createMenuItem(MENU_ITEM_TEXT_CHECK_FOR_UPDATES, menuBarListener, helpMenu);\n\t\ttryToSetIcon(checkForUpdatesItem);\n\t}\n\n\t/* Protected method: addFileMenuItems(menu) */\n\t/**\n\t * Adds the standard <code>File</code> items to the specified menu.\n\t * Subclasses can override this method to change the list of items.\n\t *\n\t * @usage mbar.addFileMenuItems(menu);\n\t * @param menu\n\t *            The menu to which the <code>File</code> items are added\n\t */\n\tprotected void addFileMenuItems(JMenu menu) {\n\t\tboolean isConsole = getProgram() instanceof AbstractConsoleProgram;\n\t\t// boolean isGraphics = getProgram() instanceof GraphicsProgram;\n\t\t\n\t\tmenu.add(createStandardItem(MENU_ITEM_TEXT_SAVE, 'S'));\n\t\tmenu.add(createStandardItem(MENU_ITEM_TEXT_SAVE_AS, 'A'));\n\t\tmenu.addSeparator();\n\t\t\n\t\tmenu.add(createStandardItem(MENU_ITEM_TEXT_PRINT, 'P'));\n\t\t// menu.add(createStandardItem(\"Print Console\"));\n\t\t// menu.add(createStandardItem(\"Script\"));\n\t\tmenu.addSeparator();\n\n\t\tif (isConsole) {\n\t\t\ttryToSetIcon(GuiUtils.createMenuItem(MENU_ITEM_TEXT_LOAD_INPUT_SCRIPT, menuBarListener, menu));\n\t\t}\n\n\t\ttryToSetIcon(GuiUtils.createMenuItem(MENU_ITEM_TEXT_COMPARE_OUTPUT, menuBarListener, menu));\n\t\tmenu.addSeparator();\n\n\t\t// BUGBUG: turning off Export and Submit features;\n\t\t// they seem to not always work any more anyway and are rarely used\n\t\t// menu.add(createStandardItem(\"Export Applet\"));\n\t\t// menu.add(createStandardItem(\"Submit Project\"));\n\t\t// menu.addSeparator();\n\t\t\n\t\tmenu.add(createStandardItem(MENU_ITEM_TEXT_QUIT, 'Q'));\n\t}\n\n\t/* Protected method: addEditMenuItems(menu) */\n\t/**\n\t * Adds the standard <code>Edit</code> items to the specified menu.\n\t * Subclasses can override this method to change the list of items.\n\t *\n\t * @usage mbar.addEditMenuItems(menu);\n\t * @param menu\n\t *            The menu to which the <code>Edit</code> items are added\n\t */\n\tprotected void addEditMenuItems(JMenu menu) {\n\t\tmenu.add(createStandardItem(MENU_ITEM_TEXT_CUT, 'C'));\n\t\tmenu.add(createStandardItem(MENU_ITEM_TEXT_COPY, 'o'));\n\t\tmenu.add(createStandardItem(MENU_ITEM_TEXT_PASTE, 'P'));\n\t\tmenu.add(createStandardItem(MENU_ITEM_TEXT_SELECT_ALL, 'A'));\n\t\tmenu.addSeparator();\n\t\tmenu.add(createStandardItem(MENU_ITEM_TEXT_CLEAR_CONSOLE, 'l'));\n\t}\n\n\t/* Private method: addItemToList(itemList, item) */\n\t/**\n\t * Adds the specified menu item to the list. If <code>item</code> is itself\n\t * a menu, this method expands the item recursively.\n\t *\n\t * @usage mbar.addItemToList(itemList, item);\n\t * @param itemList\n\t *            The <code>ArrayList</code> to which items are added\n\t * @param item\n\t *            The item to be added\n\t */\n\tprivate void addItemToList(ArrayList<JMenuItem> itemList, JMenuItem item) {\n\t\tif (item == null)\n\t\t\treturn;\n\t\tif (item instanceof JMenu) {\n\t\t\tJMenu menu = (JMenu) item;\n\t\t\tfor (int i = 0; i < menu.getItemCount(); i++) {\n\t\t\t\taddItemToList(itemList, menu.getItem(i));\n\t\t\t}\n\t\t} else {\n\t\t\titemList.add(item);\n\t\t}\n\t}\n\n\t/* Private method: setEnabled(menu, action, flag) */\n\t/**\n\t * Updates the enabled state of everything in the menu that has the\n\t * specified action.\n\t */\n\tprivate void setEnabled(JMenu item, String action, boolean flag) {\n\t\tJMenu menu = item;\n\t\tint nItems = menu.getItemCount();\n\t\tfor (int i = 0; i < nItems; i++) {\n\t\t\tJMenuItem subItem = menu.getItem(i);\n\t\t\tif (subItem != null)\n\t\t\t\tsetEnabled(subItem, action, flag);\n\t\t}\n\t}\n\n\t/* Private method: setEnabled(item, action, flag) */\n\t/**\n\t * Updates the enabled state of the menu item if it has the specified\n\t * action.\n\t */\n\tprivate void setEnabled(JMenuItem item, String action, boolean flag) {\n\t\tif (action.equals(item.getActionCommand()))\n\t\t\titem.setEnabled(flag);\n\t}\n\n\t/* Package class: ProgramMenuBarListener */\n\t/**\n\t * This class implements the listener for the standard menu items that forwards\n\t * their action back to the program.\n\t */\n\tprivate static class ProgramMenuBarListener implements ActionListener {\n\t\t/* Private instance variables */\n\t\tprivate ProgramMenuBar menuBar;\n\n\t\t/* Constructor: ProgramMenuBarListener(mbar) */\n\t\t/**\n\t\t * Creates a new listener for the standard menu items that will be added to\n\t\t * this menu bar.\n\t\t */\n\t\tpublic ProgramMenuBarListener(ProgramMenuBar mbar) {\n\t\t\tmenuBar = mbar;\n\t\t}\n\n\t\t/* Method: actionPerformed(e) */\n\t\t/**\n\t\t * Responds to an action event in the corresponding menu. The effect of an\n\t\t * action event is to forward the action command back to the program.\n\t\t */\n\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\tmenuBar.fireActionListeners(e);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/program/ProgramStartupFlags.java",
    "content": "package acm.program;\n\npublic interface ProgramStartupFlags {\n\tString SPL_AUTOGRADER_MODE = \"SPL_AUTOGRADER_MODE\";\n\tString SPL_CONSOLE_FONTSIZE = \"SPL_CONSOLE_FONTSIZE\";\n\tString SPL_CONSOLE_WIDTH = \"SPL_CONSOLE_WIDTH\";\n\tString SPL_CONSOLE_HEIGHT = \"SPL_CONSOLE_HEIGHT\";\n\tString SPL_CONSOLE_X = \"SPL_CONSOLE_X\";\n\tString SPL_CONSOLE_Y = \"SPL_CONSOLE_Y\";\n\tString SPL_CONSOLE_ECHO = \"SPL_CONSOLE_ECHO\";\n\tString SPL_CONSOLE_EXIT_ON_CLOSE = \"SPL_CONSOLE_EXIT_ON_CLOSE\";\n\tString SPL_CONSOLE_LOCATION_SAVED = \"SPL_CONSOLE_LOCATION_SAVED\";\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/program/ProgramStartupListener.java",
    "content": "/*\n * @author Marty Stepp (current maintainer)\n * @version 2017/04/26\n * - initial version; moved out of Program.java into its own file\n * - alphabetized methods\n */\n\npackage acm.program;\n\nimport java.awt.event.*;\nimport acm.util.JTFTools;\n\n/* Package class: ProgramStartupListener */\n/**\n * This class implements a component listener that supports the program\n * startup logic.\n */\nclass ProgramStartupListener implements ComponentListener {\n\t/* Private constants */\n\tprivate static final int STARTUP_DELAY = 1000;\n\tprivate static final int STARTUP_CYCLE = 300;\n\n\t/* ComponentListener interface */\n\tpublic void componentHidden(ComponentEvent e) {\n\t\t// empty\n\t}\n\t\n\tpublic void componentMoved(ComponentEvent e) {\n\t\t// empty\n\t}\n\n\tpublic void componentResized(ComponentEvent e) {\n\t\tcomponentShown(e);\n\t}\n\n\tpublic synchronized void componentShown(ComponentEvent e) {\n\t\tnotifyAll();\n\t}\n\n\t/* Method: waitForStartup(program) */\n\t/**\n\t * Waits until the specified program has started.\n\t */\n\tpublic synchronized void waitForStartup(Program program) {\n\t\tJTFTools.pause(STARTUP_DELAY);\n\t\twhile (!program.isStarted()) {\n\t\t\ttry {\n\t\t\t\twait(STARTUP_CYCLE);\n\t\t\t} catch (InterruptedException ex) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/program/ProgramWindowListener.java",
    "content": "/*\n * @author Marty Stepp (current maintainer)\n * @version 2017/04/26\n * - initial version; moved out of Program.java into its own file\n * - alphabetized methods\n */\n\npackage acm.program;\n\nimport java.awt.*;\nimport java.awt.event.*;\n\n/* Package class: ProgramWindowListener */\n/**\n * This class implements a simple window listener for programs whose only\n * function is to exit if the window is closed.\n */\nclass ProgramWindowListener implements WindowListener {\n\t/* Private instance variables */\n\tprivate Program program;\n\n\tpublic ProgramWindowListener(Program owner) {\n\t\tprogram = owner;\n\t}\n\n\t/* WindowListener interface */\n\tpublic void windowClosing(WindowEvent e) {\n\t\t((Component) e.getSource()).setVisible(false);\n\t\tprogram.exit();\n\t}\n\n\tpublic void windowActivated(WindowEvent e) {\n\t\t// empty\n\t}\n\t\n\tpublic void windowClosed(WindowEvent e) {\n\t\t// empty\n\t}\n\t\n\tpublic void windowDeactivated(WindowEvent e) {\n\t\t// empty\n\t}\n\t\n\tpublic void windowDeiconified(WindowEvent e) {\n\t\t// empty\n\t}\n\t\n\tpublic void windowIconified(WindowEvent e) {\n\t\t// empty\n\t}\n\t\n\tpublic void windowOpened(WindowEvent e) {\n\t\t// empty\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/program/package.html",
    "content": "<html>\n<head>\n<title>The acm.program Package</title>\n</head>\n<body>\nThis package provides a set of classes that simplify the creation of programs.\nThe package includes five abstract classes, each of which uses a particular\nparadigm for input and output, as follows:\n\n<p><table border=0>\n<tr><td valign=top><a href=\"Program.html\"><code>Program</code></a>&nbsp;&nbsp;</td>\n<td>This class is the root of the program hierachy and defines a program in which\ninput and output are performed using the system console, which is redirected to\nthe standard Java I/O streams <code>System.in</code> and <code>System.out</code>.</td></tr>\n\n<tr><td valign=top><a href=\"ConsoleProgram.html\"><code>ConsoleProgram</code></a>&nbsp;&nbsp;</td>\n<td>This class is similar to <a href=\"Program.html\"><code>Program</code></a> but\nfills the program frame with an interactive console (as defined in the\n<a href=\"../io/IOConsole.html\"><code>IOConsole</code></a> class in the\n<a href=\"../io/package-summary.html\"><code>acm.io</code></a> package).</td></tr>\n\n<tr><td valign=top><a href=\"DialogProgram.html\"><code>DialogProgram</code></a>&nbsp;&nbsp;</td>\n<td>This class extends the basic functionality of the <a href=\"Program.html\"><code>Program</code></a>\nclass so that input operations are performed using the\n<a href=\"../io/IODialog.html\"><code>IODialog</code></a> class in the\n<a href=\"../io/package-summary.html\"><code>acm.io</code></a> package.</td></tr>\n\n<tr><td valign=top><a href=\"CommandLineProgram.html\"><code>CommandLineProgram</code></a>&nbsp;&nbsp;</td>\n<td>This class is similar to\n<a href=\"ConsoleProgram.html\"><code>ConsoleProgram</code></a>\nbut uses <code>System.in</code> and <code>System.out</code> instead of\nan <code>IOConsole</code>.  This class is typically used only for Java\nprograms that are invoked from a command line and make no use of Java&#146;s\ngraphical capabilities.</td></tr>\n</table>\n\n<p>The principal advantages of using the <code>Program</code> class are:\n\n<ul>\n<li>The conventional pattern of use associated with the <code>acm.program</code> package moves\nstudents away from the imperative style of <code>public&nbsp;static&nbsp;void&nbsp;main</code>\ninto a more pedagogically defensible framework in which students are always working in the\ncontext of an object.\n<li>The <code>Program</code> class allows Java applications to double as applets,\nthereby making it possible for intructors to use either paradigm in a consistent way.\nEven for those instructors that choose to focus on the application paradigm, using\nthe <code>Program</code> class makes it much easier for students to make their code\navailable on the web.  Moreover, because the <code>Program</code> class is defined\nto be a subclass of <code>Applet</code>, applications that run in that domain can\ntake advantage of such applet-based features as loading audio clips and images from\nthe code base.\n<li>The <code>Program</code> class includes several features that make instruction\neasier, such as the definition of standard menu bars that support operations like\nprinting and running programs with a test script.\n<li>The classes in the <code>acm.program</code> package offer a compelling example\nof an inheritance hierarchy that introductory students can understand and appreciate\nright from the beginning of their first course.\n</ul>\n\n<p>In most environments, the only thing students need to do to create a new\nprogram is to define a <code>Program</code> subclass that implements a <code>run</code>\nmethod.  For example, the following class definition creates a traditional,\nstream-oriented program that reads in two integers and computes their sum:\n\n<p><pre><code>\n&nbsp;    public class Add2 extends ConsoleProgram {\n&nbsp;       public void run() {\n&nbsp;          println(\"This program adds two numbers.\");\n&nbsp;          int n1 = readInt(\"Enter n1: \");\n&nbsp;          int n2 = readInt(\"Enter n2: \");\n&nbsp;          int total = n1 + n2;\n&nbsp;          println(\"The total is \" + total + \".\");\n&nbsp;       }\n&nbsp;    }\n</code></pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/util/ErrorException.java",
    "content": "package acm.util;\r\n\r\npublic class ErrorException extends RuntimeException {\r\n\tpublic ErrorException(String message) {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tpublic ErrorException(String message, Throwable cause) {\r\n\t\tsuper(message, cause);\r\n\t}\r\n\r\n\tpublic ErrorException(Exception cause) {\r\n\t\tsuper(cause);\r\n\t}\r\n\r\n\tpublic ErrorException(Throwable cause) {\r\n\t\tsuper(cause);\r\n\t}\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/util/FileChooserFilter.java",
    "content": "package acm.util;\n\nimport java.io.File;\nimport java.util.StringTokenizer;\nimport javax.swing.filechooser.FileFilter;\n\npublic class FileChooserFilter extends FileFilter {\n\tprivate String filenamePattern;\n\tprivate String filenameDescription;\n\tprivate String dir;\n\n\tpublic FileChooserFilter(String path) {\n\t\tthis(path, null);\n\t}\n\n\tpublic FileChooserFilter(String path, String desc) {\n\t\tif (path == null) {\n\t\t\tpath = \"\";\n\t\t}\n\t\tif (desc == null) {\n\t\t\tdesc = \"All files\";\n\t\t}\n\t\tint i = Math.max(path.lastIndexOf(\"/\"), path.lastIndexOf('\\\\'));\n\t\tfilenamePattern = path.substring(i + 1);\n\t\tdir = i != -1 ? path.substring(0, i) : \"\";\n\t\tif (dir.isEmpty()) {\n\t\t\tdir = System.getProperty(\"user.dir\");\n\t\t} else if (!dir.startsWith(\"/\")) {\n\t\t\tdir = System.getProperty(\"user.dir\") + \"/\" + dir;\n\t\t}\n\t\t\n\t\tfilenameDescription = desc;\n\t}\n\n\tpublic String getDirectory() {\n\t\treturn dir;\n\t}\n\n\tpublic String getPattern() {\n\t\treturn filenamePattern;\n\t}\n\n\tpublic String getDescription() {\n\t\treturn filenameDescription;\n\t}\n\n\tpublic boolean accept(File file) {\n\t\tif (file.isDirectory() || filenamePattern.isEmpty())\n\t\t\treturn true;\n\t\tfor (StringTokenizer stringtokenizer = new StringTokenizer(filenamePattern, \";\");\n\t\t\t\tstringtokenizer.hasMoreTokens(); ) {\n\t\t\tString s = stringtokenizer.nextToken();\n\t\t\tif (s.length() > 0 && JTFTools.matchFilenamePattern(file.getName(), s)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/util/MediaTools.java",
    "content": "/*\n * @version: 2017/06/02\n * - fixed bug with image IO saving under JAR obfuscation\n * @version: 2016/09/07\n * - removed file delete() code from saveImage\n * @version: 2015/05/03\n * - support for MP3 and other audio formats via new JavaZoom multimedia library\n * @version: 2015/04/23\n * - fixed minor bugs with image loading\n */\n\n/*\n * @(#)MediaTools.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Bug fix 30-Sep-06 (ESR, JTFBug 2006-002)\n//   1. Fixed bug in which compiled images/clips did not get stored.\n//\n// Feature enhancement 11-Jan-07 (ESR)\n//   1. Added methods to convert back and forth from images to pixel arrays.\n//\n// Feature enhancement 2-Mar-07 (ESR)\n//   1. Added openDataFile methods to support reading files from applets.\n//\n// Code cleanup 28-May-07 (ESR)\n//   1. Added generic type tags.\n//\n// Feature enhancement 12-Jun-08 (ESR)\n//   1. Changed sound methods to use the SoundClip class.\n//   2. Changed the defaults so that caching is ordinarily disabled.\n//\n// Feature enhancement 25-Nov-08 (ESR)\n//   1. Added support for saving image files.\n\npackage acm.util;\n\nimport java.applet.*;\nimport java.awt.*;\nimport java.awt.image.*;\nimport java.io.*;\nimport java.lang.reflect.*;\nimport java.net.*;\nimport java.util.*;\n\nimport javax.imageio.*;\nimport javax.imageio.stream.*;\nimport stanford.cs106.audio.*;\n\n/* Class: MediaTools */\n/**\n * This class implements a standard mechanism for loading images, sounds, and\n * data files from the resources associated with a jar file.\n */\n@SuppressWarnings(\"deprecation\")\npublic class MediaTools {\n\t\n\tprivate static final boolean DEBUG = false;\n\n\t/* Constant: DEFAULT_IMAGE_PATH */\n\t/**\n\t * The list of directories scanned for images, separated by colons.\n\t */\n\tpublic static final String DEFAULT_IMAGE_PATH = \".:images:res:res/images\";\n\n\t/* Constant: DEFAULT_AUDIO_PATH */\n\t/**\n\t * The list of directories scanned for audio clips, separated by colons.\n\t */\n\tpublic static final String DEFAULT_AUDIO_PATH = \".:sounds:res:res/sounds\";\n\n\t/* Constant: DEFAULT_DATAFILE_PATH */\n\t/**\n\t * The list of directories scanned for data files, separated by colons.\n\t */\n\tpublic static final String DEFAULT_DATAFILE_PATH = \".:datafiles:res:res/datafiles:inputs\";\n\n\t/* Private constructor: MediaTools */\n\t/**\n\t * Prevents anyone else from constructing this class.\n\t */\n\tprivate MediaTools() {\n\t\t/* Empty */\n\t}\n\n\t/**\n\t * Searches the default image search path for an image with the specified\n\t * file's name and then loads it to create an <code>Image</code>. The search\n\t * process consists of the following steps:\n\t * \n\t * <p>\n\t * <ol>\n\t * <li>Check to see if an image with that name has already been defined. If\n\t * so, return that image.\n\t * <p>\n\t * \n\t * <li>Check to see if there is a resource available with that name whose\n\t * contents can be read as an <code>Image</code>. If so, read the image from\n\t * the resource file.\n\t * <p>\n\t * \n\t * <li>Load the image from a file with the specified name, relative to the\n\t * application directory or the applet code base.\n\t * </ol>\n\t * <p>\n\t * \n\t * The second and third steps are repeated for each element of the image\n\t * search path, which consists of a list of directories separated by colons.\n\t * \n\t * <p>\n\t * Unlike the <code>getImage</code> method in the <code>Applet</code> class,\n\t * <code>loadImage</code> waits for an image to be fully loaded before\n\t * returning.\n\t * \n\t * @usage Image image = MediaTools.loadImage(name);\n\t * @param file\n\t *            The file of the image\n\t * @return A fully loaded <code>Image</code> object\n\t */\n\tpublic static Image loadImage(File file) {\n\t\treturn loadImage(file.toString());\n\t}\n\n\t/* Static method: loadImage(name) */\n\t/**\n\t * Searches the default image search path for an image with the specified\n\t * name and then loads it to create an <code>Image</code>. The search\n\t * process consists of the following steps:\n\t * \n\t * <p>\n\t * <ol>\n\t * <li>Check to see if an image with that name has already been defined. If\n\t * so, return that image.\n\t * <p>\n\t * \n\t * <li>Check to see if there is a resource available with that name whose\n\t * contents can be read as an <code>Image</code>. If so, read the image from\n\t * the resource file.\n\t * <p>\n\t * \n\t * <li>Load the image from a file with the specified name, relative to the\n\t * application directory or the applet code base.\n\t * </ol>\n\t * <p>\n\t * \n\t * The second and third steps are repeated for each element of the image\n\t * search path, which consists of a list of directories separated by colons.\n\t * \n\t * <p>\n\t * Unlike the <code>getImage</code> method in the <code>Applet</code> class,\n\t * <code>loadImage</code> waits for an image to be fully loaded before\n\t * returning.\n\t * \n\t * @usage Image image = MediaTools.loadImage(name);\n\t * @param name\n\t *            The name of the image\n\t * @return A fully loaded <code>Image</code> object\n\t */\n\tpublic static Image loadImage(String name) {\n\t\treturn loadImage(name, DEFAULT_IMAGE_PATH);\n\t}\n\n\t/* Static method: loadImage(name, path) */\n\t/**\n\t * Searches for an image with the given name and loads it to create an\n\t * <code>Image</code>. Its operation is identical to the single-argument <a\n\t * href=\"#loadImage(String)\"><code>loadImage</code></a> call except in that\n\t * this version allows the client to specify the search path explicitly.\n\t * \n\t * @usage Image image = MediaTools.loadImage(name, path);\n\t * @param name\n\t *            The name of the image\n\t * @param path\n\t *            A string of directories names separated by colons\n\t * @return A fully loaded <code>Image</code> object\n\t * @noshow\n\t */\n\tpublic static Image loadImage(String name, String path) {\n\t\tImage image = imageTable.get(name);\n\t\tif (image != null) {\n\t\t\tif (DEBUG) System.out.println(\"MEDIATOOLS loading from cache: \" + name);\n\t\t\treturn image;\n\t\t}\n\t\tif (name.startsWith(\"http:\")) {\n\t\t\ttry {\n\t\t\t\tif (DEBUG) System.out.println(\"MEDIATOOLS loading from URL 1: \" + (name));\n\t\t\t\timage = loadImage(new URL(name));\n\t\t\t\tif (DEBUG) System.out.println(\"after URL 1 load, image = \" + image);\n\t\t\t\tif (cachingEnabled) {\n\t\t\t\t\timageTable.put(name, image);\n\t\t\t\t}\n\t\t\t\treturn image;\n\t\t\t} catch (MalformedURLException ex) {\n\t\t\t\tthrow new ErrorException(\"loadImage: Malformed URL\");\n\t\t\t}\n\t\t}\n\t\tToolkit toolkit = Toolkit.getDefaultToolkit();\n\t\tStringTokenizer tokenizer = new StringTokenizer(path, \":\");\n\t\twhile (image == null && tokenizer.hasMoreTokens()) {\n\t\t\tString prefix = tokenizer.nextToken();\n\t\t\tprefix = (prefix.equals(\".\")) ? \"\" : prefix + \"/\";\n\t\t\tURL url = null;\n\t\t\ttry {\n\t\t\t\turl = RESOURCE_CLASS.getResource(\"/\" + prefix + name);\n\t\t\t\tif (url != null) {\n\t\t\t\t\tURLConnection connection = url.openConnection();\n\t\t\t\t\tif (connection == null || connection.getContentLength() <= 0) {\n\t\t\t\t\t\turl = null;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (DEBUG) System.out.println(\"MEDIATOOLS loading from URL 2: \" + (url));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (IOException ex) {\n\t\t\t\t/* Empty */\n\t\t\t} catch (SecurityException sex) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t\tif (url == null) {\n\t\t\t\tApplet applet = JTFTools.getApplet();\n\t\t\t\tif (applet != null) {\n\t\t\t\t\tURL codeBase = applet.getCodeBase();\n\t\t\t\t\tif (codeBase != null) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\turl = new URL(codeBase, prefix + name);\n\t\t\t\t\t\t\tif (DEBUG) System.out.println(\"MEDIATOOLS loading from applet: \" + (codeBase + \" \" + prefix + name));\n\t\t\t\t\t\t} catch (MalformedURLException ex) {\n\t\t\t\t\t\t\t/* Empty */\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (url == null) {\n\t\t\t\ttry {\n\t\t\t\t\tif (new File(prefix + name).canRead()) {\n\t\t\t\t\t\tif (DEBUG) System.out.println(\"MEDIATOOLS loading from file: \" + (prefix + name));\n\t\t\t\t\t\timage = toolkit.getImage(prefix + name);\n\t\t\t\t\t\tif (DEBUG) System.out.println(\"after file load, image = \" + image);\n\t\t\t\t\t}\n\t\t\t\t} catch (SecurityException ex) {\n\t\t\t\t\t/* Empty */\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (DEBUG) System.out.println(\"MEDIATOOLS loading from URL 3: \" + (url));\n\t\t\t\timage = loadImage(url, false);\n\t\t\t\tif (DEBUG) System.out.println(\"after URL 3 load, image = \" + image);\n\t\t\t}\n\t\t}\n\t\tif (image == null) {\n\t\t\tthrow new ErrorException(\"Cannot find an image named \" + name);\n\t\t}\n\t\tif (DEBUG) System.out.println(\"MEDIATOOLS going to wait for tracker now: \" + image);\n\t\tloadImage(image);\n\t\tif (DEBUG) System.out.println(\"DONE WAITING: \" + image.getWidth(null) + \"x\" + image.getHeight(null));\n\t\tif (cachingEnabled) {\n\t\t\timageTable.put(name, image);\n\t\t}\n\t\treturn image;\n\t}\n\n\t/* Static method: loadImage(url) */\n\t/**\n\t * Loads an image from the specified URL.\n\t * \n\t * @usage Image image = MediaTools.loadImage(url);\n\t * @param url\n\t *            The url containing the image\n\t * @return A fully loaded <code>Image</code> object\n\t */\n\tpublic static Image loadImage(URL url) {\n\t\treturn loadImage(url, true);\n\t}\n\n\t/* Static method: loadImage(image) */\n\t/**\n\t * Makes sure that the image is fully loaded before returning.\n\t * \n\t * @usage image = MediaTools.loadImage(image);\n\t * @param image\n\t *            The <code>Image</code> which may not yet be loaded\n\t * @return The same <code>Image</code> after ensuring that it is fully\n\t *         loaded\n\t */\n\tpublic static Image loadImage(Image image) {\n\t\tMediaTracker tracker = new MediaTracker(JTFTools.createEmptyContainer());\n\t\ttracker.addImage(image, 0);\n\t\ttry {\n\t\t\ttracker.waitForID(0);\n\t\t} catch (InterruptedException ex) {\n\t\t\tthrow new ErrorException(\"Image loading process interrupted\");\n\t\t}\n\t\treturn image;\n\t}\n\n\t/* Static method: defineImage(name, image) */\n\t/**\n\t * Inserts the given image into the image table under the specified name.\n\t * \n\t * @usage MediaTools.defineImage(name, image);\n\t * @param name\n\t *            The name for the image\n\t * @param image\n\t *            The image to be stored in the table\n\t */\n\tpublic static void defineImage(String name, Image image) {\n\t\timageTable.put(name, image);\n\t}\n\n\t/* Static method: flushImage(name) */\n\t/**\n\t * Removes the image with the given name from the cache, allowing it to be\n\t * freed by the garbage collector.\n\t * \n\t * @usage MediaTools.flushImage(name);\n\t * @param name\n\t *            The name for the image\n\t */\n\tpublic static void flushImage(String name) {\n\t\timageTable.remove(name);\n\t}\n\n\t/* Static method: createImage(array) */\n\t/**\n\t * Generates an image from a two-dimensional array of pixel values. As in\n\t * standard image processing applications, the array is indexed so that the\n\t * first subscript determines the row and the second determines the column.\n\t * \n\t * @usage Image image = MediaTools.createImage(array);\n\t * @param array\n\t *            A two-dimensional array of <code>int</code>s representing the\n\t *            pixels\n\t * @return An <code>Image</code> object\n\t */\n\tpublic static Image createImage(int[][] array) {\n\t\tint height = array.length;\n\t\tint width = array[0].length;\n\t\tint[] pixels = new int[width * height];\n\t\tfor (int i = 0; i < height; i++) {\n\t\t\tSystem.arraycopy(array[i], 0, pixels, i * width, width);\n\t\t}\n\t\treturn createImage(pixels, width, height);\n\t}\n\n\t/* Static method: createImage(pixels, width, height) */\n\t/**\n\t * Generates an image from a single-dimensional array of pixel values. The\n\t * pixel array is stored in row-major order, which means that the pixels for\n\t * the entire first row come before the pixels in the second row, and so on.\n\t * \n\t * @usage Image image = MediaTools.createImage(pixels, width, height);\n\t * @param pixels\n\t *            An array of <code>int</code>s representing the pixels\n\t * @param width\n\t *            The width of the image\n\t * @param height\n\t *            The height of the image\n\t * @return An <code>Image</code> object\n\t */\n\tpublic static Image createImage(int[] pixels, int width, int height) {\n\t\tImage image = Toolkit.getDefaultToolkit().createImage(\n\t\t\t\tnew MemoryImageSource(width, height, pixels, 0, width));\n\t\tloadImage(image);\n\t\treturn image;\n\t}\n\n\t/* Static method: createImage(in) */\n\t/**\n\t * Generates an image from an input stream containing the data bytes for the\n\t * image formatted in image/gif format.\n\t * \n\t * @usage Image image = MediaTools.createImage(in);\n\t * @param in\n\t *            An input stream containing the data\n\t * @return An <code>Image</code> object\n\t */\n\tpublic static Image createImage(InputStream in) {\n\t\ttry {\n\t\t\tByteArrayOutputStream out = new ByteArrayOutputStream();\n\t\t\tfor (int ch = in.read(); ch != -1; ch = in.read()) {\n\t\t\t\tout.write(ch);\n\t\t\t}\n\t\t\tImage image = Toolkit.getDefaultToolkit().createImage(\n\t\t\t\t\tout.toByteArray());\n\t\t\tloadImage(image);\n\t\t\treturn image;\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(\"Exception: \" + ex);\n\t\t}\n\t}\n\n\t/* Static method: createImage(hexData) */\n\t/**\n\t * Generates an image from a string array that provides the pixel values.\n\t * \n\t * @usage Image image = MediaTools.createImage(hexData);\n\t * @param hexData\n\t *            A hex string array representing a .gif value\n\t * @return An <code>Image</code> object\n\t */\n\tpublic static Image createImage(String[] hexData) {\n\t\treturn createImage(new HexInputStream(hexData));\n\t}\n\n\t/* Static method: getPixelArray(image) */\n\t/**\n\t * Returns a two-dimensional array of the pixels in the image. As in\n\t * standard image processing applications, the array is indexed so that the\n\t * first subscript determines the row and the second determines the column.\n\t * \n\t * @param image\n\t *            The image\n\t * @return A two-dimensional array of pixels\n\t */\n\tpublic static int[][] getPixelArray(Image image) {\n\t\tImageObserver observer = getImageObserver();\n\t\tint width = image.getWidth(observer);\n\t\tint height = image.getHeight(observer);\n\t\tint[] pixels = new int[width * height];\n\t\tint[][] array = new int[height][width];\n\t\tPixelGrabber pg = new PixelGrabber(image.getSource(), 0, 0, width,\n\t\t\t\theight, pixels, 0, width);\n\t\ttry {\n\t\t\tpg.grabPixels();\n\t\t} catch (InterruptedException e) {\n\t\t\tthrow new ErrorException(\"Transfer interrupted\");\n\t\t}\n\t\tif ((pg.getStatus() & ImageObserver.ABORT) != 0) {\n\t\t\tthrow new ErrorException(\"Transfer aborted\");\n\t\t}\n\t\tfor (int i = 0; i < height; i++) {\n\t\t\tSystem.arraycopy(pixels, i * width, array[i], 0, width);\n\t\t}\n\t\treturn array;\n\t}\n\n\t/* Static method: saveImage(image, filename) */\n\t/**\n\t * Saves an image to a file with the specified filename. The data format for\n\t * the image file is determined by the suffix of the filename. If the suffix\n\t * of the file is not recognized as a supported image type, calling this\n\t * method generates an error.\n\t * \n\t * @usage MediaTools.saveImage(image, filename);\n\t * @param image\n\t *            The image\n\t * @param filename\n\t *            The name of the file to which the image is saved\n\t */\n\tpublic static void saveImage(Image image, String filename) {\n\t\tsaveImage(image, new File(filename));\n\t}\n\n\t/* Static method: saveImage(image, file) */\n\t/**\n\t * Saves an image to the specified file. The data format for the image file\n\t * is determined by the suffix of the filename. If the suffix of the file is\n\t * not recognized as a supported image type, calling this method generates\n\t * an error.\n\t * \n\t * @usage MediaTools.saveImage(image, file);\n\t * @param image\n\t *            The image\n\t * @param file\n\t *            The <code>File</code> to which the image is saved\n\t */\n\tpublic static void saveImage(Image image, File file) {\n\t\tString filename = file.getName();\n\t\tint dot = filename.lastIndexOf('.');\n\t\tif (dot <= 0) {\n\t\t\tthrow new ErrorException(\"No image suffix in file name\");\n\t\t}\n\t\tString suffix = filename.substring(dot + 1);\n\t\tImageSaver saver = findImageSaver(suffix);\n\t\tif (saver == null) {\n\t\t\tthrow new ErrorException(\"No support for .\" + suffix + \" format\");\n\t\t}\n\t\tif (file.exists()) {\n//\t\t\tif (!file.delete()) {\n//\t\t\t\tthrow new ErrorException(\"saveImage: Cannot replace \"\n//\t\t\t\t\t\t+ filename);\n//\t\t\t}\n\t\t}\n\t\ttry {\n\t\t\tOutputStream out = new BufferedOutputStream(new FileOutputStream(file));\n\t\t\tsaver.setOutputStream(out);\n\t\t\tsaver.saveImage(image);\n\t\t\tsaver.updateFileType(file);\n\t\t\tout.close();\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n\t/* Static method: createPSPreviewImage(image, preview) */\n\t/**\n\t * Creates a new image that combines an existing image with a PostScript\n\t * preview represented as a string array. Clients can retrieve the\n\t * PostScript preview by asking for the <code>\"PSPreview\"</code> property.\n\t * \n\t * @usage MediaTools.createPSPreviewImage(image, preview);\n\t * @param image\n\t *            The original image\n\t * @param preview\n\t *            The corresponding PostScript preview\n\t * @return A new image that includes the preview\n\t * @noshow\n\t */\n\tpublic static Image createPSPreviewImage(Image image, String[] preview) {\n\t\treturn new PSPreviewImage(image, preview);\n\t}\n\n\t/* Static method: loadAudioClip(name) */\n\t/**\n\t * Searches the default audio clip search path for an audio clip with the\n\t * specified name and then loads it to create an <code>AudioClip</code>. The\n\t * search process consists of the following steps:\n\t * \n\t * <p>\n\t * <ol>\n\t * <li>Check to see if an audio clip with that name has already been\n\t * defined. If so, return that audio clip.\n\t * <p>\n\t * \n\t * <li>Check to see if there is a resource available with that name whose\n\t * contents can be read as an <code>AudioClip</code>. If so, read the audio\n\t * clip from the resource file.\n\t * <p>\n\t * \n\t * <li>Load the audio clip from a file with the specified name, relative to\n\t * the application directory or the applet code base.\n\t * </ol>\n\t * <p>\n\t * \n\t * The second and third steps are repeated for each element of the audio\n\t * clip search path, which consists of a list of directories separated by\n\t * colons.\n\t * \n\t * @usage AudioClip clip = MediaTools.loadAudioClip(name);\n\t * @param name\n\t *            The name of the audio clip\n\t * @return A new <code>AudioClip</code> object\n\t */\n\tpublic static AudioClip loadAudioClip(String name) {\n\t\treturn loadAudioClip(name, DEFAULT_AUDIO_PATH);\n\t}\n\n\t/* Static method: loadAudioClip(name, path) */\n\t/**\n\t * Searches for an audio clip with the given name and loads it to create an\n\t * <code>AudioClip</code>. Its operation is identical to the single-argument\n\t * <a href=\"#loadAudioClip(String)\"><code>loadAudioClip</code></a> call\n\t * except in that this version allows the client to specify the search path\n\t * explicitly.\n\t * \n\t * @usage AudioClip clip = MediaTools.loadAudioClip(name, path);\n\t * @param name\n\t *            The name of the audio clip\n\t * @param path\n\t *            A string of directories names separated by colons\n\t * @return A new <code>AudioClip</code> object\n\t * @noshow\n\t */\n\tpublic static AudioClip loadAudioClip(String name, String path) {\n\t\tAudioClip clip = audioClipTable.get(name);\n\t\tif (clip != null)\n\t\t\treturn clip;\n\t\tif (name.startsWith(\"http:\")) {\n\t\t\ttry {\n\t\t\t\tclip = loadAudioClip(new URL(name));\n\t\t\t\tif (clip instanceof SoundClip) {\n\t\t\t\t\t((SoundClip) clip).setName(name);\n\t\t\t\t}\n\t\t\t\tif (cachingEnabled)\n\t\t\t\t\taudioClipTable.put(name, clip);\n\t\t\t\treturn clip;\n\t\t\t} catch (MalformedURLException ex) {\n\t\t\t\tthrow new ErrorException(\"loadAudioClip: Malformed URL\");\n\t\t\t}\n\t\t}\n\t\t\n\t\tStringTokenizer tokenizer = new StringTokenizer(path, \":\");\n\t\twhile (clip == null && tokenizer.hasMoreTokens()) {\n\t\t\tString prefix = tokenizer.nextToken();\n\t\t\tprefix = (prefix.equals(\".\")) ? \"\" : prefix + \"/\";\n\t\t\tURL url = null;\n\t\t\ttry {\n\t\t\t\turl = RESOURCE_CLASS.getResource(\"/\" + prefix + name);\n\t\t\t\tURLConnection connection = url.openConnection();\n\t\t\t\tif (connection == null || connection.getContentLength() <= 0) {\n\t\t\t\t\turl = null;\n\t\t\t\t}\n\t\t\t} catch (Exception ex) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t\tif (url == null) {\n\t\t\t\tApplet applet = JTFTools.getApplet();\n\t\t\t\tif (applet != null) {\n\t\t\t\t\tURL codeBase = applet.getCodeBase();\n\t\t\t\t\tif (codeBase != null) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\turl = new URL(codeBase, prefix + name);\n\t\t\t\t\t\t} catch (MalformedURLException ex) {\n\t\t\t\t\t\t\t/* Empty */\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tFile file = new File(prefix + name);\n\t\t\t\tif (file.canRead()) {\n\t\t\t\t\t// ADDED 2015/05/03:\n\t\t\t\t\t// use the JavaZoom media library to enable playing MP3/WAV/OGG/etc.\n\t\t\t\t\tif (SplClip.supportsFile(name)) {\n\t\t\t\t\t\tclip = new SplClip(name);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclip = createAudioClip(new FileInputStream(file));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (Exception ex) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t\tif (clip == null && url != null) {\n\t\t\t\tclip = loadAudioClip(url, false);\n\t\t\t}\n\t\t}\n\t\tif (clip == null)\n\t\t\tthrow new ErrorException(\"Cannot find an audio clip named \" + name);\n\t\tif (clip instanceof SoundClip) {\n\t\t\t((SoundClip) clip).setName(name);\n\t\t}\n\t\tif (cachingEnabled)\n\t\t\taudioClipTable.put(name, clip);\n\t\treturn clip;\n\t}\n\n\t/* Static method: loadAudioClip(url) */\n\t/**\n\t * Loads an audio clip from the specified URL.\n\t * \n\t * @usage AudioClip clip = MediaTools.loadAudioClip(url);\n\t * @param url\n\t *            The url containing the audio clip\n\t * @return A new <code>AudioClip</code> object\n\t */\n\tpublic static AudioClip loadAudioClip(URL url) {\n\t\treturn loadAudioClip(url, true);\n\t}\n\n\t/* Static method: defineAudioClip(name, clip) */\n\t/**\n\t * Inserts the given clip into the audio clip table under the specified\n\t * name.\n\t * \n\t * @usage MediaTools.defineAudioClip(name, clip);\n\t * @param name\n\t *            The name for the audio clip\n\t * @param clip\n\t *            The audio clip to be stored in the table\n\t */\n\tpublic static void defineAudioClip(String name, AudioClip clip) {\n\t\taudioClipTable.put(name, clip);\n\t}\n\n\t/* Static method: flushAudioClip(name) */\n\t/**\n\t * Removes the audio clip with the given name from the cache, allowing it to\n\t * be freed by the garbage collector.\n\t * \n\t * @usage MediaTools.flushAudioClip(name);\n\t * @param name\n\t *            The name for the audio clip\n\t */\n\tpublic static void flushAudioClip(String name) {\n\t\taudioClipTable.remove(name);\n\t}\n\n\t/* Static method: createAudioClip(in) */\n\t/**\n\t * Generates an audio clip from an input stream containing the data bytes\n\t * for the audio clip. The implementation first tries to create a\n\t * <code>SoundClip</code> object from the data. If that fails, it then backs\n\t * up to the older strategy of using the <code>SunAudioClip</code> class.\n\t * \n\t * @usage AudioClip clip = MediaTools.createAudioClip(in);\n\t * @param in\n\t *            An input stream containing the data\n\t * @return An <code>AudioClip</code> object\n\t */\n\tpublic static AudioClip createAudioClip(InputStream in) {\n\t\ttry {\n\t\t\treturn new SoundClip(in);\n\t\t} catch (Exception ex1) {\n\t\t\ttry {\n\t\t\t\treturn new SunAudioClip(in);\n\t\t\t} catch (Exception ex2) {\n\t\t\t\treturn new NullAudioClip();\n\t\t\t}\n\t\t}\n\t}\n\n\t/* Static method: createAudioClip(hexData) */\n\t/**\n\t * Generates an audio clip from a string array that provides the sound\n\t * values.\n\t * \n\t * @usage AudioClip audio clip = MediaTools.createAudioClip(hexData);\n\t * @param hexData\n\t *            A hex string array representing an audio clip\n\t * @return An <code>AudioClip</code> object\n\t */\n\tpublic static AudioClip createAudioClip(String[] hexData) {\n\t\treturn createAudioClip(new HexInputStream(hexData));\n\t}\n\n\t/* Static method: openDataFile(name) */\n\t/**\n\t * Searches the default datafile search path for a file with the specified\n\t * name and then opens it to create an <code>InputStream</code>. The search\n\t * process consists of the following steps:\n\t * \n\t * <p>\n\t * <ol>\n\t * <li>Check to see if there is a resource available with that name. If so,\n\t * return an <code>InputStream</code> open on that resource.\n\t * <p>\n\t * \n\t * <li>Open the file with the specified name, relative to the application\n\t * directory or the applet code base.\n\t * </ol>\n\t * <p>\n\t * \n\t * These steps are repeated for each element of the datafile search path,\n\t * which consists of a list of directories separated by colons.\n\t * \n\t * @usage InputStream in = MediaTools.openDataFile(name);\n\t * @param name\n\t *            The name of the input file\n\t * @return A new <code>InputStream</code> open on the specified file\n\t */\n\tpublic static InputStream openDataFile(String name) {\n\t\treturn openDataFile(name, DEFAULT_DATAFILE_PATH);\n\t}\n\n\t/* Static method: openDataFile(name, path) */\n\t/**\n\t * Searches for a data file with the given name and opens it to create an\n\t * <code>InputStream</code>. Its operation is identical to the\n\t * single-argument <a href=\"#openDataFile(String)\"><code>openDataFile</code>\n\t * </a> call except in that this version allows the client to specify the\n\t * search path explicitly.\n\t * \n\t * @usage InputStream in = MediaTools.openDataFile(name, path);\n\t * @param name\n\t *            The name of the audio clip\n\t * @param path\n\t *            A string of directories names separated by colons\n\t * @return A new <code>InputStream</code> open on the specified file\n\t */\n\tpublic static InputStream openDataFile(String name, String path) {\n\t\tInputStream in = null;\n\t\tif (name.startsWith(\"http:\")) {\n\t\t\ttry {\n\t\t\t\treturn openDataFile(new URL(name));\n\t\t\t} catch (MalformedURLException ex) {\n\t\t\t\tthrow new ErrorException(\"openDataFile: Malformed URL\");\n\t\t\t}\n\t\t}\n\t\tStringTokenizer tokenizer = new StringTokenizer(path, \":\");\n\t\twhile (in == null && tokenizer.hasMoreTokens()) {\n\t\t\tString prefix = tokenizer.nextToken();\n\t\t\tprefix = (prefix.equals(\".\")) ? \"\" : prefix + \"/\";\n\t\t\tURL url = null;\n\t\t\ttry {\n\t\t\t\turl = RESOURCE_CLASS.getResource(\"/\" + prefix + name);\n\t\t\t\tURLConnection connection = url.openConnection();\n\t\t\t\tif (connection == null || connection.getContentLength() <= 0) {\n\t\t\t\t\turl = null;\n\t\t\t\t}\n\t\t\t} catch (Exception ex) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t\tif (url == null) {\n\t\t\t\tApplet applet = JTFTools.getApplet();\n\t\t\t\tif (applet != null) {\n\t\t\t\t\tURL codeBase = applet.getCodeBase();\n\t\t\t\t\tif (codeBase != null) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\turl = new URL(codeBase, prefix + name);\n\t\t\t\t\t\t} catch (MalformedURLException ex) {\n\t\t\t\t\t\t\t/* Empty */\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (url == null) {\n\t\t\t\ttry {\n\t\t\t\t\tFile file = new File(prefix + name);\n\t\t\t\t\tif (file.canRead()) {\n\t\t\t\t\t\tin = new FileInputStream(file);\n\t\t\t\t\t}\n\t\t\t\t} catch (Exception ex) {\n\t\t\t\t\t/* Empty */\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tin = openDataFile(url, false);\n\t\t\t}\n\t\t}\n\t\tif (in == null)\n\t\t\tthrow new ErrorException(\"Cannot find a file named \" + name);\n\t\treturn in;\n\t}\n\n\t/* Static method: openDataFile(url) */\n\t/**\n\t * Opens the specified URL to create an <code>InputStream</code>.\n\t * \n\t * @usage InputStream in = MediaTools.openDataFile(url);\n\t * @param url\n\t *            The URL of the data file\n\t * @return A new <code>InputStream</code> open on the specified URL\n\t */\n\tpublic static InputStream openDataFile(URL url) {\n\t\treturn openDataFile(url, true);\n\t}\n\n\t/* Static method: createBufferedImage(image, type) */\n\t/**\n\t * Creates a <code>BufferedImage</code> from the specified image. The\n\t * <code>type</code> parameter is used to specify the image type, as\n\t * described in the <code>BufferedImage</code> documentation.\n\t * \n\t * @usage BufferedImage image = MediaTools.createBufferedImage(image, type);\n\t * @param image\n\t *            The original image\n\t * @param type\n\t *            The type code used to describe the image model\n\t * @param A\n\t *            <code>BufferedImage</code> containing the image data\n\t */\n\tpublic static BufferedImage createBufferedImage(Image image, int type) {\n\t\tint width = image.getWidth(null);\n\t\tint height = image.getHeight(null);\n\t\tBufferedImage bimage = new BufferedImage(width, height, type);\n\t\tGraphics g = bimage.createGraphics();\n\t\tg.drawImage(image, 0, 0, null);\n\t\tg.dispose();\n\t\treturn bimage;\n\t}\n\n\t/* Static method: getHexInputStream(hexData) */\n\t/**\n\t * Returns an input stream whose bytes come from the string array\n\t * <code>hex</code>, in which the elements consist of continuous bytes of\n\t * hex data.\n\t * \n\t * @usage InputStream in = MediaTools.getHexInputStream(hexData);\n\t * @param hexData\n\t *            An array of strings specifying a byte stream coded in hex\n\t * @return An input stream for reading the bytes\n\t */\n\tpublic static InputStream getHexInputStream(String[] hexData) {\n\t\treturn new HexInputStream(hexData);\n\t}\n\n\t/* Static method: setCachingEnabled(boolean flag) */\n\t/**\n\t * This method sets an internal flag in the <code>MediaTools</code> package\n\t * to indicate whether images and audio clips are cached internally by name.\n\t * This flag is disabled by default.\n\t * \n\t * @usage MediaTools.setCachingEnabled(flag);\n\t * @param flag\n\t *            <code>true</code> to enable caching by name,\n\t *            <code>false</code> to disable it.\n\t */\n\tpublic static void setCachingEnabled(boolean flag) {\n\t\tcachingEnabled = flag;\n\t}\n\n\t/* Static method: isCachingEnabled() */\n\t/**\n\t * This method returns the status of the flag that determins whether images\n\t * and audio clips are cached internally by name, as described in <a\n\t * href=\"#setCachingEnabled(boolean)\"><code>setCachingEnabled</code></a>.\n\t * \n\t * @usage boolean flag = MediaTools.isCachingEnabled();\n\t * @return <code>true</code> if caching by name is enabled,\n\t *         <code>false</code> otherwise.\n\t */\n\tpublic static boolean isCachingEnabled() {\n\t\treturn cachingEnabled;\n\t}\n\n\t/* Static method: getImageObserver() */\n\t/**\n\t * This method returns a new lightweight component suitable as an\n\t * <code>imageObserver</code>.\n\t * \n\t * @usage Component imageObserver = MediaTools.getImageObserver();\n\t * @return A new lightweight component suitable as an\n\t *         <code>imageObserver</code>.\n\t */\n\tpublic static Component getImageObserver() {\n\t\treturn JTFTools.createEmptyContainer();\n\t}\n\n\t/* Static method: beep() */\n\t/**\n\t * This method sounds the audible alert on the console, which is typically a\n\t * beep sound.\n\t * \n\t * @usage MediaTools.beep();\n\t */\n\tpublic static void beep() {\n\t\tToolkit.getDefaultToolkit().beep();\n\t}\n\n\t/* Private static method: loadImage(url, topLevel) */\n\t/**\n\t * Loads an image from the specified URL. The <code>topLevel</code> flag is\n\t * <code>false</code> if this is invoked internally.\n\t */\n\tpublic static Image loadImage(URL url, boolean topLevel) {\n\t\tImage image = null;\n\t\tToolkit toolkit = Toolkit.getDefaultToolkit();\n\t\ttry {\n\t\t\tURLConnection connection = url.openConnection();\n\t\t\tif (isResource(url) || connection.getContentLength() > 0) {\n\t\t\t\tObject content = connection.getContent();\n\t\t\t\tif (content instanceof ImageProducer) {\n\t\t\t\t\timage = toolkit.createImage((ImageProducer) content);\n\t\t\t\t} else if (content != null) {\n\t\t\t\t\timage = toolkit.getImage(url);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (IOException ex) {\n\t\t\t/* Empty */\n\t\t}\n\t\tif (topLevel) {\n\t\t\tif (image == null) {\n\t\t\t\tthrow new ErrorException(\"Cannot load image from \" + url);\n\t\t\t}\n\t\t\tloadImage(image);\n\t\t}\n\t\treturn image;\n\t}\n\n\t/* Private static method: findImageSaver(suffix) */\n\t/**\n\t * Finds an image saver capable of writing image files with the specified\n\t * subect.\n\t */\n\tprivate static ImageSaver findImageSaver(String suffix) {\n\t\tsuffix = suffix.toUpperCase();\n\t\tsynchronized (suffixTable) {\n\t\t\tImageSaver saver = suffixTable.get(suffix);\n\t\t\tif (saver == null) {\n\t\t\t\ttry {\n\t\t\t\t\t// explicitly writing out some image formats so that this code\n\t\t\t\t\t// will work in the presence of class name obfuscation at the JAR level\n\t\t\t\t\tClass<?> imageSaverClass = null;\n\t\t\t\t\tif (suffix.equals(\"BMP\")) {\n\t\t\t\t\t\timageSaverClass = acm.util.BMPImageSaver.class;\n\t\t\t\t\t} else if (suffix.equals(\"EPS\")) {\n\t\t\t\t\t\timageSaverClass = acm.util.EPSImageSaver.class;\n\t\t\t\t\t} else if (suffix.equals(\"GIF\")) {\n\t\t\t\t\t\timageSaverClass = acm.util.GIFImageSaver.class;\n\t\t\t\t\t} else if (suffix.equals(\"GIF89\")) {\n\t\t\t\t\t\timageSaverClass = acm.util.GIF89ImageSaver.class;\n\t\t\t\t\t} else if (suffix.equals(\"JPEG\")) {\n\t\t\t\t\t\timageSaverClass = acm.util.JPEGImageSaver.class;\n\t\t\t\t\t} else if (suffix.equals(\"JPG\")) {\n\t\t\t\t\t\timageSaverClass = acm.util.JPGImageSaver.class;\n\t\t\t\t\t} else if (suffix.equals(\"PICT\")) {\n\t\t\t\t\t\timageSaverClass = acm.util.PICTImageSaver.class;\n\t\t\t\t\t} else if (suffix.equals(\"PNG\")) {\n\t\t\t\t\t\timageSaverClass = acm.util.PNGImageSaver.class;\n\t\t\t\t\t} else if (suffix.equals(\"RTF\")) {\n\t\t\t\t\t\timageSaverClass = acm.util.RTFImageSaver.class;\n\t\t\t\t\t} else if (suffix.equals(\"TIFF\")) {\n\t\t\t\t\t\timageSaverClass = acm.util.TIFFImageSaver.class;\n\t\t\t\t\t} else {\n\t\t\t\t\t\timageSaverClass = Class.forName(\"acm.util.\" + suffix + \"ImageSaver\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (imageSaverClass != null) {\n\t\t\t\t\t\tsaver = (ImageSaver) imageSaverClass.newInstance();\n\t\t\t\t\t}\n\t\t\t\t} catch (Exception ex) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tsuffixTable.put(suffix, saver);\n\t\t\t}\n\t\t\treturn saver;\n\t\t}\n\t}\n\n\t/* Private static method: loadAudioClip(url, topLevel) */\n\t/**\n\t * Loads an audio clip from the specified URL. The <code>topLevel</code>\n\t * flag is <code>false</code> if this is invoked internally.\n\t */\n\tpublic static AudioClip loadAudioClip(URL url, boolean topLevel) {\n\t\tAudioClip clip = null;\n\t\ttry {\n\t\t\tURLConnection connection = url.openConnection();\n\t\t\tif (isResource(url) || connection.getContentLength() > 0) {\n\t\t\t\tclip = createAudioClip(connection.getInputStream());\n\t\t\t}\n\t\t} catch (IOException ex) {\n\t\t\t/* Empty */\n\t\t}\n\t\tif (topLevel && clip == null) {\n\t\t\tthrow new ErrorException(\"Cannot load audio clip from \" + url);\n\t\t}\n\t\treturn clip;\n\t}\n\n\t/* Private static method: openDataFile(url, topLevel) */\n\t/**\n\t * Opens a data file using the specified URL. The <code>topLevel</code> flag\n\t * is <code>false</code> if this is invoked internally.\n\t */\n\tpublic static InputStream openDataFile(URL url, boolean topLevel) {\n\t\tInputStream in = null;\n\t\ttry {\n\t\t\tURLConnection connection = url.openConnection();\n\t\t\tif (isResource(url) || connection.getContentLength() > 0) {\n\t\t\t\tin = connection.getInputStream();\n\t\t\t}\n\t\t} catch (IOException ex) {\n\t\t\t/* Empty */\n\t\t}\n\t\tif (topLevel && in == null) {\n\t\t\tthrow new ErrorException(\"Cannot read data from \" + url);\n\t\t}\n\t\treturn in;\n\t}\n\n\t/* Private static method: isResource(url) */\n\t/**\n\t * Returns <code>true</code> if the URL corresponds to a file or a resource.\n\t */\n\tprivate static boolean isResource(URL url) {\n\t\tString name = url.toString().toLowerCase();\n\t\treturn name.startsWith(\"jar:\") || name.startsWith(\"file:\");\n\t}\n\n\t/* Private package variables */\n\tprivate static boolean cachingEnabled = false;\n\tprivate static HashMap<String, Image> imageTable = new HashMap<String, Image>();\n\tprivate static HashMap<String, AudioClip> audioClipTable = new HashMap<String, AudioClip>();\n\tprivate static HashMap<String, ImageSaver> suffixTable = new HashMap<String, ImageSaver>();\n\tprivate static final Class<?> RESOURCE_CLASS = MediaTools.class;\n\t\n\t\n}\n\n/* Package class: HexInputStream */\n/**\n * This class defines an <code>InputStream</code> whose bytes come from a string\n * of hexadecimal digits.\n */\nclass HexInputStream extends InputStream {\n\n\t/* Constructor: HexInputStream(hexData) */\n\t/**\n\t * Creates an input stream whose bytes come from the specified string array.\n\t * \n\t * @usage HexInputStream in = new HexInputStream(hexData);\n\t * @param hexData\n\t *            An array of strings containing the input bytes\n\t */\n\tpublic HexInputStream(String[] hexData) {\n\t\thex = hexData;\n\t\tarrayIndex = 0;\n\t\tcharIndex = 0;\n\t}\n\n\t/* Method: read() */\n\t/**\n\t * Reads the next byte of data from the input.\n\t * \n\t * @usage int ch = in.read();\n\t * @return The next byte of data, or -1 at the end of file\n\t */\n\tpublic int read() {\n\t\tif (arrayIndex >= hex.length)\n\t\t\treturn -1;\n\t\tif (charIndex >= hex[arrayIndex].length()) {\n\t\t\tarrayIndex++;\n\t\t\tcharIndex = 0;\n\t\t\treturn read();\n\t\t}\n\t\tint data = Character.digit(hex[arrayIndex].charAt(charIndex++), 16) << 4;\n\t\tdata |= Character.digit(hex[arrayIndex].charAt(charIndex++), 16);\n\t\treturn data;\n\t}\n\n\t/* Private instance variables */\n\tprivate String[] hex;\n\tprivate int arrayIndex;\n\tprivate int charIndex;\n\n}\n\n/* Package class: SunAudioClip */\n/**\n * This class implements the AudioClip interface in terms of the\n * <code>sun.audio</code> package, which appears to be supported in all major\n * browsers. The clip is created through reflection in order to avoid a\n * compile-time dependency on the sources for <code>sun.audio</code>.\n */\n@SuppressWarnings(\"deprecation\")\nclass SunAudioClip implements AudioClip {\n\n\t/* Constructor: SunAudioClip(in) */\n\t/**\n\t * Creates an audio clip from the specified input stream using the\n\t * <code>sun.audio</code> package. The audio clip is fully loaded at the\n\t * point the constructor returns. This class ignores all exceptions, which\n\t * means that sounds will simply not play on systems on which this facility\n\t * is not supported.\n\t */\n\tpublic SunAudioClip(InputStream in) {\n\t\tif (!initialized) {\n\t\t\tinitStaticData();\n\t\t\tinitialized = true;\n\t\t}\n\t\ttry {\n\t\t\tObject[] args = { in };\n\t\t\tObject audioStream = audioDataConstructor.newInstance(args);\n\t\t\taudioData = getData.invoke(audioStream, new Object[0]);\n\t\t\tplayer = audioPlayerClass.getField(\"player\").get(null);\n\t\t\tClass<?>[] inputStreamTypes = { Class\n\t\t\t\t\t.forName(\"java.io.InputStream\") };\n\t\t\taudioPlayerStart = player.getClass().getMethod(\"start\",\n\t\t\t\t\tinputStreamTypes);\n\t\t\taudioPlayerStop = player.getClass().getMethod(\"stop\",\n\t\t\t\t\tinputStreamTypes);\n\t\t} catch (Exception ex) {\n\t\t\t/* Ignore any exceptions */\n\t\t}\n\t}\n\n\tpublic void play() {\n\t\ttry {\n\t\t\tObject[] args = { audioData };\n\t\t\taudioDataStream = audioDataStreamConstructor.newInstance(args);\n\t\t\targs[0] = audioDataStream;\n\t\t\taudioPlayerStart.invoke(player, args);\n\t\t} catch (Exception ex) {\n\t\t\t/* Ignore any exceptions */\n\t\t}\n\t}\n\n\tpublic void loop() {\n\t\ttry {\n\t\t\tObject[] args = { audioData };\n\t\t\tcontinuousAudioDataStream = continuousAudioDataStreamConstructor\n\t\t\t\t\t.newInstance(args);\n\t\t\targs[0] = continuousAudioDataStream;\n\t\t\taudioPlayerStart.invoke(player, args);\n\t\t} catch (Exception ex) {\n\t\t\t/* Ignore any exceptions */\n\t\t}\n\t}\n\n\tpublic void stop() {\n\t\ttry {\n\t\t\tObject[] args = new Object[1];\n\t\t\tif (continuousAudioDataStream != null) {\n\t\t\t\targs[0] = audioDataStream;\n\t\t\t\taudioPlayerStop.invoke(player, args);\n\t\t\t}\n\t\t\tif (audioDataStream != null) {\n\t\t\t\targs[0] = continuousAudioDataStream;\n\t\t\t\taudioPlayerStop.invoke(player, args);\n\t\t\t}\n\t\t} catch (Exception ex) {\n\t\t\t/* Ignore any exceptions */\n\t\t}\n\t}\n\n\tprivate static void initStaticData() {\n\t\ttry {\n\t\t\taudioPlayerClass = Class.forName(\"sun.audio.AudioPlayer\");\n\t\t\taudioStreamClass = Class.forName(\"sun.audio.AudioStream\");\n\t\t\taudioDataClass = Class.forName(\"sun.audio.AudioData\");\n\t\t\taudioDataStreamClass = Class.forName(\"sun.audio.AudioDataStream\");\n\t\t\tcontinuousAudioDataStreamClass = Class\n\t\t\t\t\t.forName(\"sun.audio.ContinuousAudioDataStream\");\n\t\t\tClass<?>[] inputStreamTypes = { Class\n\t\t\t\t\t.forName(\"java.io.InputStream\") };\n\t\t\taudioDataConstructor = audioStreamClass\n\t\t\t\t\t.getConstructor(inputStreamTypes);\n\t\t\tgetData = audioStreamClass.getMethod(\"getData\", new Class[0]);\n\t\t\tClass<?>[] audioDataTypes = { audioDataClass };\n\t\t\taudioDataStreamConstructor = audioDataStreamClass\n\t\t\t\t\t.getConstructor(audioDataTypes);\n\t\t\tcontinuousAudioDataStreamConstructor = continuousAudioDataStreamClass\n\t\t\t\t\t.getConstructor(audioDataTypes);\n\t\t} catch (Exception ex) {\n\t\t\t/* Ignore any exceptions */\n\t\t}\n\t}\n\n\t/* Private instance variables */\n\tprivate static boolean initialized;\n\tprivate static Class<?> audioPlayerClass;\n\tprivate static Class<?> audioStreamClass;\n\tprivate static Class<?> audioDataClass;\n\tprivate static Class<?> audioDataStreamClass;\n\tprivate static Class<?> continuousAudioDataStreamClass;\n\tprivate static Constructor<?> audioDataConstructor;\n\tprivate static Constructor<?> audioDataStreamConstructor;\n\tprivate static Constructor<?> continuousAudioDataStreamConstructor;\n\tprivate static Method getData;\n\n\tprivate Object player;\n\tprivate Object audioData;\n\tprivate Object audioDataStream;\n\tprivate Object continuousAudioDataStream;\n\tprivate Method audioPlayerStart;\n\tprivate Method audioPlayerStop;\n\n}\n\n/* Package class: NullAudioClip */\n/**\n * This class implements the <code>AudioClip</code> interface with a stub that\n * ignores all of the calls.\n */\n@SuppressWarnings(\"deprecation\")\nclass NullAudioClip implements AudioClip {\n\n\tpublic void play() {\n\t\t/* Empty */\n\t}\n\n\tpublic void loop() {\n\t\t/* Empty */\n\t}\n\n\tpublic void stop() {\n\t\t/* Empty */\n\t}\n\n}\n\n/* Package class: PSPreviewImage */\n/**\n * This class creates an <code>Image</code> subclass that encapsulates an\n * existing image and a PostScript preview represented as a string array.\n */\nclass PSPreviewImage extends Image {\n\n\t/* Constructor: PSPreviewImage(image, preview) */\n\t/**\n\t * Creates an <code>Image</code> subclass that encapsulates an existing\n\t * image and a PostScript preview.\n\t * \n\t * @usage Image image = PSPreviewImage(image, preview);\n\t * @param image\n\t *            The original image\n\t * @param preview\n\t *            The corresponding PostScript preview\n\t */\n\tpublic PSPreviewImage(Image image, String[] preview) {\n\t\tbaseImage = image;\n\t\tpsPreview = preview;\n\t}\n\n\tpublic Graphics getGraphics() {\n\t\treturn baseImage.getGraphics();\n\t}\n\n\tpublic int getWidth(ImageObserver observer) {\n\t\treturn baseImage.getWidth(observer);\n\t}\n\n\tpublic int getHeight(ImageObserver observer) {\n\t\treturn baseImage.getHeight(observer);\n\t}\n\n\tpublic Object getProperty(String name, ImageObserver observer) {\n\t\tif (name.equals(\"PSPreview\"))\n\t\t\treturn psPreview;\n\t\treturn baseImage.getProperty(name, observer);\n\t}\n\n\tpublic ImageProducer getSource() {\n\t\treturn baseImage.getSource();\n\t}\n\n\tpublic void flush() {\n\t\tbaseImage.flush();\n\t}\n\n\t/* Private instance variables */\n\tprivate Image baseImage;\n\tprivate String[] psPreview;\n}\n\n/* Package class: ImageSaver */\n/**\n * This class represents the root of a package class hierarchy responsible for\n * saving images. The class names for the subclasses in this hierarchy are of\n * the form <code>XYZImageSaver</code> where <code>XYZ</code> is the extension\n * used for image files in that format. The abstract class encapsulates the code\n * used to write data to the output file, and the specific subclasses determine\n * what data needs to be written.\n */\nclass ImageSaver {\n\n\t/* Constructor: ImageSaver() */\n\t/**\n\t * Creates a new <code>ImageSaver</code> in which the subclass takes\n\t * responsibility for saving the image data. This code is the default\n\t * constructor and is not ordinarily invoked explicitly.\n\t */\n\tpublic ImageSaver() {\n\t\t/* Empty */\n\t}\n\n\t/* Constructor: ImageSaver(format, type) */\n\t/**\n\t * Creates a new <code>ImageSaver</code> in which the subclass uses the\n\t * tools in the <code>javax.imageio</code> to save an image as indicated by\n\t * the format name and image buffer type.\n\t * \n\t * @usage ImageSaver saver = new ImageSaver(format, type);\n\t * @param format\n\t *            The informal name of the image format\n\t * @param type\n\t *            The integer code for the <code>BufferedImage</code> type\n\t */\n\tpublic ImageSaver(String format, int type) {\n\t\tformatName = format;\n\t\tbufferType = type;\n\t}\n\n\t/* Method: setOutputStream(output) */\n\t/**\n\t * Sets the output stream this <code>ImageSaver</code> uses to write data.\n\t * \n\t * @usage saver.setOutputStream(output);\n\t * @param output\n\t *            The output stream used to write data\n\t */\n\tpublic void setOutputStream(OutputStream output) {\n\t\tout = output;\n\t}\n\n\t/* Method: getOutputStream() */\n\t/**\n\t * Returns the output stream used by this <code>ImageSaver</code>.\n\t * \n\t * @usage OutputStream output = saver.getOutputStream();\n\t * @return The output stream used to write data\n\t */\n\tpublic OutputStream getOutputStream() {\n\t\treturn out;\n\t}\n\n\t/* Method: saveImage(image) */\n\t/**\n\t * Saves the image to the output stream established when the client called\n\t * <code>setOutputStream</code>. This implementation uses the facilities\n\t * from the <code>javax.imageio</code> package to write the file. Subclasses\n\t * that do their own data formatting must override this method.\n\t * \n\t * @usage saver.saveImage(image);\n\t * @param image\n\t *            The image to be written\n\t */\n\tpublic void saveImage(Image image) {\n\t\tBufferedImage bi = MediaTools.createBufferedImage(image, bufferType);\n\t\tImageOutputStream ios = new MemoryCacheImageOutputStream(\n\t\t\t\tgetOutputStream());\n\t\ttry {\n\t\t\tif (!ImageIO.write(bi, formatName, ios)) {\n\t\t\t\tthrow new IOException(\"ImageIO.write failed\");\n\t\t\t}\n\t\t\tios.close();\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(\"saveImage: \" + ex.getMessage());\n\t\t}\n\t}\n\n\t/* Method: updateFileType(file) */\n\t/**\n\t * This method updates the file type and creator information so that the\n\t * correct application opens the file. In the standard case, this method\n\t * does nothing. Subclasses that need to update the file type information\n\t * must override this method.\n\t * \n\t * @usage saver.updateFileType(file);\n\t * @param file\n\t *            The file whose information needs to be updated\n\t */\n\tpublic void updateFileType(File file) {\n\t\t/* Empty */\n\t}\n\n\t/* Method: dumpByte(x) */\n\t/**\n\t * Writes the low-order byte of <code>x</code> to the output stream.\n\t * \n\t * @usage saver.dumpByte(x);\n\t * @param x\n\t *            A byte stored in an integer\n\t */\n\tpublic void dumpByte(int x) {\n\t\ttry {\n\t\t\tout.write(x);\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(\"saveImage: \" + ex.getMessage());\n\t\t}\n\t}\n\n\t/* Method: dumpShort(x) */\n\t/**\n\t * Writes the low-order 16 bits of <code>x</code> to the output stream.\n\t * \n\t * @usage saver.dumpShort(x);\n\t * @param x\n\t *            A 16-bit quantity stored in an integer\n\t */\n\tpublic void dumpShort(int x) {\n\t\ttry {\n\t\t\tout.write(x >> 8);\n\t\t\tout.write(x);\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(\"saveImage: \" + ex.getMessage());\n\t\t}\n\t}\n\n\t/* Method: dumpLong(x) */\n\t/**\n\t * Writes the 32-bit word in <code>x</code> to the output stream.\n\t * \n\t * @usage saver.dumpLong(x);\n\t * @param x\n\t *            A 32-bit integer word\n\t */\n\tpublic void dumpLong(int x) {\n\t\ttry {\n\t\t\tout.write(x >> 24);\n\t\t\tout.write(x >> 16);\n\t\t\tout.write(x >> 8);\n\t\t\tout.write(x);\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(\"saveImage: \" + ex.getMessage());\n\t\t}\n\t}\n\n\t/* Method: getPixelComponent(pixel, color) */\n\t/**\n\t * Extracts the specified component of a pixel. Transparency is simulated by\n\t * computing a weighted average between white and the given value.\n\t * \n\t * @usage int component = getPixelComponent(pixel, color);\n\t * @param pixel\n\t *            The 32-bit integer pixel, including the alpha channel\n\t * @param color\n\t *            The character 'R', 'G', or 'B', indicating the component\n\t * @return An eight-bit component value, expanded to an integer\n\t */\n\tpublic int getPixelComponent(int pixel, char color) {\n\t\tint alpha = pixel >> 24 & 0xFF;\n\t\tswitch (color) {\n\t\tcase 'R':\n\t\t\tpixel >>= 16;\n\t\t\tbreak;\n\t\tcase 'G':\n\t\t\tpixel >>= 8;\n\t\t\tbreak;\n\t\tcase 'B':\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow new ErrorException(\"getPixelComponent: Illegal color\");\n\t\t}\n\t\tpixel &= 0xFF;\n\t\treturn (alpha * pixel + (0xFF - alpha) * 0xFF) / 0xFF;\n\t}\n\n\t/* Private instance variables */\n\tprivate OutputStream out;\n\tprivate String formatName;\n\tprivate int bufferType;\n}\n\n/* Package class: PNGImageSaver */\n/**\n * This class saves PNG images.\n */\nclass PNGImageSaver extends ImageSaver {\n\tpublic PNGImageSaver() {\n\t\tsuper(\"PNG\", BufferedImage.TYPE_INT_ARGB);\n\t}\n}\n\n/* Package class: JPEGImageSaver */\n/**\n * This class saves JPEG images.\n */\nclass JPEGImageSaver extends ImageSaver {\n\tpublic JPEGImageSaver() {\n\t\tsuper(\"JPEG\", BufferedImage.TYPE_INT_RGB);\n\t}\n}\n\nclass JPGImageSaver extends JPEGImageSaver {\n\t/* Entirely inherited from JPEGImageSaver */\n}\n\n/* Package class: BMPImageSaver */\n/**\n * This class saves BMP images.\n */\nclass BMPImageSaver extends ImageSaver {\n\tpublic BMPImageSaver() {\n\t\tsuper(\"BMP\", BufferedImage.TYPE_INT_RGB);\n\t}\n}\n\n/* Package class: GIFImageSaver */\n/**\n * This class saves GIF images. This implementation uses one of two strategies\n * to encode the image:\n * \n * <p>\n * <ol>\n * <li>If this version of Java includes a GIF writer, use that one.\n * <li>If not, default to the public-domain GIF89 writer.\n * </ol>\n */\nclass GIFImageSaver extends ImageSaver {\n\n\tpublic GIFImageSaver() {\n\t\tsuper(\"GIF\", BufferedImage.TYPE_INT_ARGB);\n\t\tIterator<ImageWriter> it = ImageIO.getImageWritersBySuffix(\"gif\");\n\t\tif (!it.hasNext()) {\n\t\t\tgif89Saver = new GIF89ImageSaver();\n\t\t}\n\t}\n\n\tpublic void saveImage(Image image) {\n\t\tif (gif89Saver != null) {\n\t\t\tgif89Saver.setOutputStream(getOutputStream());\n\t\t\tgif89Saver.saveImage(image);\n\t\t} else {\n\t\t\tsuper.saveImage(image);\n\t\t}\n\t}\n\n\tpublic void updateFileType(File file) {\n\t\tif (gif89Saver != null) {\n\t\t\tgif89Saver.updateFileType(file);\n\t\t}\n\t}\n\n\t/* Private instance variables */\n\tprivate GIF89ImageSaver gif89Saver;\n}\n\n/* Package class: GIF89ImageSaver */\n/**\n * This class saves GIF89 images using the public-domain GIF package.\n */\nclass GIF89ImageSaver extends ImageSaver {\n\tpublic void saveImage(Image image) {\n\t\ttry {\n\t\t\tGif89Encoder encoder = new Gif89Encoder(image);\n\t\t\tencoder.setTransparentIndex(0);\n\t\t\tencoder.getFrameAt(0).setInterlaced(true);\n\t\t\tencoder.encode(getOutputStream());\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(\"saveImage: \" + ex.getMessage());\n\t\t}\n\t}\n\n\tpublic void updateFileType(File file) {\n\t\tPlatform.setFileTypeAndCreator(file, \"GIFf\", \"prvw\");\n\t}\n}\n\n/* Package class: TIFFImageSaver */\n/**\n * This class saves TIFF images. The TIFF image file format is described in the\n * following document from Adobe Systems:\n * \n * <lit><code>\n * &nbsp;    <a href=\"http://partners.adobe.com/public/developer/en/tiff/TIFF6.pdf\"\n *           >http://partners.adobe.com/public/developer/en/tiff/TIFF6.pdf</a>\n * </code>\n * </lit>\n */\nclass TIFFImageSaver extends ImageSaver {\n\n\t/**\n\t * Saves the image in TIFF format.\n\t */\n\tpublic void saveImage(Image image) {\n\t\tpixels = MediaTools.getPixelArray(image);\n\t\twidth = pixels[0].length;\n\t\theight = pixels.length;\n\t\tcalculateOffsets();\n\t\tdumpHeader(); /* TIFF header */\n\t\tdumpIFD(); /* Main IFD block */\n\t\tdumpNullIFD(); /* End of IFD chain */\n\t\tdumpBitsPerSampleData(); /* Data (int[3]) */\n\t\tdumpResolutionData(); /* Data (rationals) */\n\t\tdumpStripPointers(); /* Scanline offsets */\n\t\tdumpStripByteCounts(); /* Bytes per line */\n\t\tdumpStripData(); /* Image data */\n\t}\n\n\t/**\n\t * Dumps the header of the TIFF file.\n\t */\n\tprivate void dumpHeader() {\n\t\tdumpByte('M'); /* Byte order flag */\n\t\tdumpByte('M'); /* MM = big-endian */\n\t\tdumpShort(42); /* TIFF identifier */\n\t\tdumpLong(HEADER_SIZE); /* Offset of IFD */\n\t}\n\n\t/**\n\t * Dumps the Image File Directory (IFD) to the output file. The IFD block\n\t * consists of a sequence of TIFF entries, each of which contains the\n\t * following information:\n\t * \n\t * <p>\n\t * <ol>\n\t * <li>An operation code (2 bytes)\n\t * <li>Code for type of data (2 bytes)\n\t * <li>The number of data elements in an array (typically 1)\n\t * <li>The data (if there is a room) or the offset for the data\n\t * </ol>\n\t * \n\t * In the code that follows, each IFD entry is written using a separate\n\t * method to improve readability of the code. Note that TIFF format requires\n\t * the entries in the IFD to appear in increasing order by operation code.\n\t */\n\tprivate void dumpIFD() {\n\t\tdumpShort(IFD_OP_COUNT);\n\t\tdumpIFDNewSubFileType();\n\t\tdumpIFDImageWidth();\n\t\tdumpIFDImageHeight();\n\t\tdumpIFDBitsPerSample();\n\t\tdumpIFDCompression();\n\t\tdumpIFDPhotometricInterpration();\n\t\tdumpIFDStripPointers();\n\t\tdumpIFDSamplesPerPixel();\n\t\tdumpIFDRowsPerStrip();\n\t\tdumpIFDStripByteCounts();\n\t\tdumpIFDXResolution();\n\t\tdumpIFDYResolution();\n\t\tdumpIFDResolutionUnit();\n\t}\n\n\tprivate void dumpIFDNewSubFileType() {\n\t\tdumpShort(0xFE);\n\t\tdumpShort(TT_LONG);\n\t\tdumpLong(1);\n\t\tdumpLong(0);\n\t}\n\n\tprivate void dumpIFDImageWidth() {\n\t\tdumpShort(0x100);\n\t\tdumpShort(TT_LONG);\n\t\tdumpLong(1);\n\t\tdumpLong(width);\n\t}\n\n\tprivate void dumpIFDImageHeight() {\n\t\tdumpShort(0x101);\n\t\tdumpShort(TT_LONG);\n\t\tdumpLong(1);\n\t\tdumpLong(height);\n\t}\n\n\tprivate void dumpIFDBitsPerSample() {\n\t\tdumpShort(0x102);\n\t\tdumpShort(TT_LONG);\n\t\tdumpLong(3);\n\t\tdumpLong(offsetBitsPerSample);\n\t}\n\n\tprivate void dumpIFDCompression() {\n\t\tdumpShort(0x103);\n\t\tdumpShort(TT_SHORT);\n\t\tdumpLong(1);\n\t\tdumpShort(1);\n\t\tdumpShort(0);\n\t}\n\n\tprivate void dumpIFDPhotometricInterpration() {\n\t\tdumpShort(0x106);\n\t\tdumpShort(TT_SHORT);\n\t\tdumpLong(1);\n\t\tdumpShort(2);\n\t\tdumpShort(0);\n\t}\n\n\tprivate void dumpIFDStripPointers() {\n\t\tdumpShort(0x111);\n\t\tdumpShort(TT_LONG);\n\t\tdumpLong(height);\n\t\tdumpLong(offsetStripPointers);\n\t}\n\n\tprivate void dumpIFDSamplesPerPixel() {\n\t\tdumpShort(0x115);\n\t\tdumpShort(TT_SHORT);\n\t\tdumpLong(1);\n\t\tdumpShort(3);\n\t\tdumpShort(0);\n\t}\n\n\tprivate void dumpIFDRowsPerStrip() {\n\t\tdumpShort(0x116);\n\t\tdumpShort(TT_LONG);\n\t\tdumpLong(1);\n\t\tdumpLong(1);\n\t}\n\n\tprivate void dumpIFDStripByteCounts() {\n\t\tdumpShort(0x117);\n\t\tdumpShort(TT_LONG);\n\t\tdumpLong(height);\n\t\tdumpLong(offsetStripByteCounts);\n\t}\n\n\tprivate void dumpIFDXResolution() {\n\t\tdumpShort(0x11A);\n\t\tdumpShort(TT_RATIONAL);\n\t\tdumpLong(1);\n\t\tdumpLong(offsetXResolution);\n\t}\n\n\tprivate void dumpIFDYResolution() {\n\t\tdumpShort(0x11B);\n\t\tdumpShort(TT_RATIONAL);\n\t\tdumpLong(1);\n\t\tdumpLong(offsetYResolution);\n\t}\n\n\tprivate void dumpIFDResolutionUnit() {\n\t\tdumpShort(0x128);\n\t\tdumpShort(TT_SHORT);\n\t\tdumpLong(1);\n\t\tdumpShort(1);\n\t\tdumpShort(0);\n\t}\n\n\t/**\n\t * Writes a null pointer to signal the end of he IFD chain.\n\t */\n\tprivate void dumpNullIFD() {\n\t\tdumpLong(0);\n\t}\n\n\t/**\n\t * Writes the data used for the bits/sample IFD entry. This value is an\n\t * array of three components and therefore does not fit in the IFD itself.\n\t */\n\tprivate void dumpBitsPerSampleData() {\n\t\tdumpLong(8);\n\t\tdumpLong(8);\n\t\tdumpLong(8);\n\t}\n\n\t/**\n\t * Writes the data used to specify the image resolution, which is defined\n\t * here to be the 72 pixels per inch. The value for each of the <i>x</i> and\n\t * <i>y</i> resolution components is an 8-byte <code>RATIONAL</code> value,\n\t * consisting of two <code>long</code> words.\n\t */\n\tprivate void dumpResolutionData() {\n\t\tdumpLong(72);\n\t\tdumpLong(1);\n\t\tdumpLong(72);\n\t\tdumpLong(1);\n\t}\n\n\t/**\n\t * Writes the pointers to the data for each scan line in the TIFF image.\n\t */\n\tprivate void dumpStripPointers() {\n\t\tfor (int i = 0; i < height; i++) {\n\t\t\tdumpLong(offsetData + i * stripDelta);\n\t\t}\n\t}\n\n\t/**\n\t * Writes the byte count for each scan line in the TIFF image.\n\t */\n\tprivate void dumpStripByteCounts() {\n\t\tfor (int i = 0; i < height; i++) {\n\t\t\tdumpLong(3 * width);\n\t\t}\n\t}\n\n\t/**\n\t * Writes the actual pixel data at the end of the TIFF file.\n\t */\n\tprivate void dumpStripData() {\n\t\tfor (int i = 0; i < height; i++) {\n\t\t\tfor (int j = 0; j < width; j++) {\n\t\t\t\tint pixel = pixels[i][j];\n\t\t\t\tdumpByte(getPixelComponent(pixel, 'R'));\n\t\t\t\tdumpByte(getPixelComponent(pixel, 'G'));\n\t\t\t\tdumpByte(getPixelComponent(pixel, 'B'));\n\t\t\t}\n\t\t\tfor (int k = 3 * width; k < stripDelta; k++) {\n\t\t\t\tdumpByte(0);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Calculates the offset for every data field in the TIFF file.\n\t */\n\tprivate void calculateOffsets() {\n\t\toffsetIFD = HEADER_SIZE;\n\t\toffsetNullIFD = offsetIFD + IFD_OP_COUNT * 12 + 2;\n\t\toffsetBitsPerSample = offsetNullIFD + 4;\n\t\toffsetXResolution = offsetBitsPerSample + 12;\n\t\toffsetYResolution = offsetXResolution + 8;\n\t\toffsetStripPointers = offsetYResolution + 8;\n\t\toffsetStripByteCounts = offsetStripPointers + 4 * height;\n\t\toffsetData = offsetStripByteCounts + 4 * height;\n\t\tstripDelta = (3 * width + 3) & -4;\n\t}\n\n\t/* Private constants */\n\tprivate static final int HEADER_SIZE = 8;\n\tprivate static final int IFD_OP_COUNT = 13;\n\tpublic static final int TT_BYTE = 1;\n\tpublic static final int TT_ASCII = 2;\n\tpublic static final int TT_SHORT = 3;\n\tpublic static final int TT_LONG = 4;\n\tpublic static final int TT_RATIONAL = 5;\n\n\t/* Private instance variables */\n\tprivate int[][] pixels;\n\tprivate int width;\n\tprivate int height;\n\tprivate int offsetIFD;\n\tprivate int offsetNullIFD;\n\tprivate int offsetBitsPerSample;\n\tprivate int offsetXResolution;\n\tprivate int offsetYResolution;\n\tprivate int offsetStripPointers;\n\tprivate int offsetStripByteCounts;\n\tprivate int offsetData;\n\tprivate int stripDelta;\n}\n\nclass TIFImageSaver extends TIFFImageSaver {\n\t/* Entirely inherited from TIFFImageSaver */\n}\n\n/* Package class: PICTImageSaver */\n/**\n * This class saves PICT images. The PICT image file format is described in the\n * following legacy document from Apple:\n * \n * <lit><code>\n * &nbsp;    <a href=\"http://developer.apple.com/documentation/mac/QuickDraw/QuickDraw-458.html\"\n *           >http://developer.apple.com/documentation/mac/QuickDraw/QuickDraw-458.html</a>\n * </code>\n * </lit>\n */\nclass PICTImageSaver extends ImageSaver {\n\n\t/**\n\t * Saves the image in PICT format.\n\t */\n\tpublic void saveImage(Image image) {\n\t\tpixels = MediaTools.getPixelArray(image);\n\t\tObject property = image.getProperty(\"PSPreview\", null);\n\t\tpsPreview = (property instanceof String[]) ? (String[]) property : null;\n\t\twidth = pixels[0].length;\n\t\theight = pixels.length;\n\t\trowBytes = 4 * width;\n\t\tif (paddingFlag)\n\t\t\tdumpPadding();\n\t\tdumpHeader();\n\t\tdumpDefHilite();\n\t\tdumpClipRegion();\n\t\tdumpBoundsMarkers();\n\t\tif (psPreview != null) {\n\t\t\tdumpShort(OP_SHORT_COMMENT);\n\t\t\tdumpShort(PS_BEGIN);\n\t\t}\n\t\tdumpDirectBitsRect();\n\t\tif (psPreview != null) {\n\t\t\tdumpPSPreview();\n\t\t\tdumpShort(OP_SHORT_COMMENT);\n\t\t\tdumpShort(PS_END);\n\t\t}\n\t\tdumpEndPict();\n\t}\n\n\t/**\n\t * Sets the internal flag used to control whether padding bytes are added at\n\t * the beginning of the file. When a PICT file is stored on disk, these\n\t * bytes must be present; when a PICT file is embedded in some other\n\t * structure (such as an RTF file), these bytes do not appear. Padding is\n\t * enabled by default.\n\t * \n\t * @usage saver.setPaddingFlag(flag)\n\t * @param flag\n\t *            A flag to control padding (<code>true</code> by default)\n\t */\n\tpublic void setPaddingFlag(boolean flag) {\n\t\tpaddingFlag = flag;\n\t}\n\n\t/**\n\t * Writes out the initial padding in a PICT file. Subclasses can suppress\n\t * this padding by calling <code>setPaddingFlag(false)</code>.\n\t */\n\tprivate void dumpPadding() {\n\t\tfor (int i = 0; i < PICT_PADDING; i++) {\n\t\t\tdumpByte(0);\n\t\t}\n\t}\n\n\t/**\n\t * Dumps the header of the PICT file.\n\t */\n\tprivate void dumpHeader() {\n\t\tdumpShort(0); /* Count (ignored) */\n\t\tdumpShort(0); /* Bounds: y */\n\t\tdumpShort(0); /* x */\n\t\tdumpShort(height); /* height */\n\t\tdumpShort(width); /* width */\n\t\tdumpShort(OP_VERSION); /* VERSION opcode */\n\t\tdumpShort(VERSION); /* Version 2 code */\n\t\tdumpShort(OP_HEADER); /* HEADER opcode */\n\t\tdumpShort(0xFFFE); /* Extended V2 */\n\t\tdumpShort(0); /* Reserved */\n\t\tdumpShort(72); /* X resolution */\n\t\tdumpShort(0); /* Fixed (72, 0) */\n\t\tdumpShort(72); /* Y resolution */\n\t\tdumpShort(0); /* Fixed (72, 0) */\n\t\tdumpShort(0); /* Bounds: y */\n\t\tdumpShort(0); /* x */\n\t\tdumpShort(height); /* height */\n\t\tdumpShort(width); /* width */\n\t\tdumpLong(0); /* Reserved */\n\t}\n\n\t/**\n\t * Dumps the <code>DefHighlight</code> operation at the beginning of the\n\t * PICT file.\n\t */\n\tprivate void dumpDefHilite() {\n\t\tdumpShort(OP_DEF_HILITE); /* Opcode */\n\t};\n\n\t/**\n\t * Dumps the rectangle that represents the clipping region.\n\t */\n\tprivate void dumpClipRegion() {\n\t\tdumpShort(OP_CLIP); /* Opcode */\n\t\tdumpShort(10); /* Region size */\n\t\tdumpShort(0); /* Bounds: y */\n\t\tdumpShort(0); /* x */\n\t\tdumpShort(height); /* height */\n\t\tdumpShort(width); /* width */\n\t}\n\n\t/**\n\t * Dumps <code>OP_SHORT_LINE</code> commands at each corner to ensure that\n\t * the bounds are correct.\n\t */\n\tprivate void dumpBoundsMarkers() {\n\t\tdumpShort(OP_SHORT_LINE); /* Opcode */\n\t\tdumpShort(0); /* Origin: y */\n\t\tdumpShort(0); /* x */\n\t\tdumpShort(0); /* delta = (0,0) */\n\t\tdumpShort(OP_SHORT_LINE); /* Opcode */\n\t\tdumpShort(height); /* Origin: y */\n\t\tdumpShort(width); /* x */\n\t\tdumpShort(0); /* delta = (0,0) */\n\t}\n\n\t/**\n\t * Inserts a <code>DirectBitsRect</code> operation along with the associated\n\t * data for the image.\n\t */\n\tprivate void dumpDirectBitsRect() {\n\t\tdumpShort(OP_DIRECT_BITS_RECT); /* Opcode */\n\t\tdumpPixMap(); /* Inline pixmap */\n\t\tdumpShort(0); /* srcRect: y */\n\t\tdumpShort(0); /* x */\n\t\tdumpShort(height); /* height */\n\t\tdumpShort(width); /* width */\n\t\tdumpShort(0); /* dstRect: y */\n\t\tdumpShort(0); /* x */\n\t\tdumpShort(height); /* height */\n\t\tdumpShort(width); /* width */\n\t\tdumpShort(SRC_COPY); /* Transfer mode */\n\t\tdumpPixelData(); /* Inline data */\n\t}\n\n\t/**\n\t * Inserts a <code>PixMap</code> operation structure used to specify the\n\t * properties of the image.\n\t */\n\tprivate void dumpPixMap() {\n\t\tdumpLong(0xFF); /* Inline marker */\n\t\tdumpShort(rowBytes | 0x8000); /* Row bytes + flag */\n\t\tdumpShort(0); /* Bounds: y */\n\t\tdumpShort(0); /* x */\n\t\tdumpShort(height); /* height */\n\t\tdumpShort(width); /* width */\n\t\tdumpShort(0); /* PixMap version */\n\t\tdumpShort(4); /* Packing format */\n\t\tdumpLong(0); /* Packed size */\n\t\tdumpShort(72); /* X resolution */\n\t\tdumpShort(0); /* Fixed (72, 0) */\n\t\tdumpShort(72); /* Y resolution */\n\t\tdumpShort(0); /* Fixed (72, 0) */\n\t\tdumpShort(RGB_DIRECT); /* Pixel type */\n\t\tdumpShort(32); /* Bits per pixel */\n\t\tdumpShort(3); /* Component count */\n\t\tdumpShort(8); /* Component size */\n\t\tdumpLong(0); /* Plane bytes */\n\t\tdumpLong(0); /* No color table */\n\t\tdumpLong(0); /* Reserved */\n\t}\n\n\t/**\n\t * Dumps the <code>EndPict</code> operation at the end of the PICT file.\n\t */\n\tprivate void dumpEndPict() {\n\t\tdumpShort(OP_END_PICT);\n\t};\n\n\t/**\n\t * Dumps the actual pixel data, one scan line at a time.\n\t */\n\tprivate void dumpPixelData() {\n\t\tint byteCount = 0;\n\t\tbyte[] data = new byte[rowBytes];\n\t\tfor (int i = 0; i < height; i++) {\n\t\t\tint nBytes = packScanLine(data, pixels[i]);\n\t\t\tif (rowBytes > 250) {\n\t\t\t\tdumpShort(nBytes);\n\t\t\t\tbyteCount += 2;\n\t\t\t} else {\n\t\t\t\tdumpByte(nBytes);\n\t\t\t\tbyteCount++;\n\t\t\t}\n\t\t\tfor (int j = 0; j < nBytes; j++) {\n\t\t\t\tdumpByte(data[j]);\n\t\t\t}\n\t\t\tbyteCount += nBytes;\n\t\t}\n\t\tif (byteCount % 2 == 1)\n\t\t\tdumpByte(0);\n\t}\n\n\t/**\n\t * Packs the data from the pixel scan line into the data buffer. This\n\t * packing method always uses Macintosh QuickTime (type 4) encoding, because\n\t * that is the only packing type that most applications understand.\n\t * \n\t * <p>\n\t * Each packed scanline uses run-length encoding to compress the data for\n\t * each component of the scan line independently, starting with the red\n\t * values. Each sequence of bytes in the encoding is preceded by a flag byte\n\t * <code>b</code>, which has two interpretations depending on its high-order\n\t * bit:\n\t * \n\t * <p>\n\t * <ul>\n\t * <li>If the high-order bit is 0, the flag byte is followed by\n\t * <code>b + 1</code> data bytes.\n\t * <li>If that bit is 1, the flag byte is followed by (-b)\n\t * <code>-b + 1</code> copies of the next byte.\n\t * </ul>\n\t * \n\t * <p>\n\t * Some PICT readers seem to preallocate space for a scan line based on the\n\t * maximal size of the optimal run-length encoding. Unfortunately, in a scan\n\t * line with short matching sequences alternating with short independent\n\t * sequences, the naive implementation of run-length encoding can exceed\n\t * this limit. To avoid this problem, this implementation encodes a\n\t * component and then tests to see whether it is longer than the same\n\t * encoding assuming all bytes are independent. If so, it replaces the naive\n\t * encoding with the shorter brute-force one.\n\t */\n\tprivate int packScanLine(byte[] data, int[] scanline) {\n\t\tint flagIndex = 0;\n\t\tfor (int rgbIndex = 0; rgbIndex < 3; rgbIndex++) {\n\t\t\tchar rgb = \"RGB\".charAt(rgbIndex);\n\t\t\tint baseIndex = flagIndex;\n\t\t\tint dataIndex = flagIndex + 1;\n\t\t\tint scanIndex = 0;\n\t\t\twhile (scanIndex < width) {\n\t\t\t\tint b0 = getPixelComponent(scanline[scanIndex++], rgb);\n\t\t\t\tdata[dataIndex++] = (byte) b0;\n\t\t\t\tint runLength = 1;\n\t\t\t\tboolean matching = false;\n\t\t\t\tif (scanIndex < width) {\n\t\t\t\t\tint b1 = getPixelComponent(scanline[scanIndex], rgb);\n\t\t\t\t\tmatching = (b0 == b1);\n\t\t\t\t\tif (matching) {\n\t\t\t\t\t\twhile (runLength < 128 && scanIndex < width) {\n\t\t\t\t\t\t\tb1 = getPixelComponent(scanline[scanIndex], rgb);\n\t\t\t\t\t\t\tif (b0 != b1)\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\trunLength++;\n\t\t\t\t\t\t\tscanIndex++;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\twhile (runLength < 128 && scanIndex < width) {\n\t\t\t\t\t\t\tb1 = getPixelComponent(scanline[scanIndex], rgb);\n\t\t\t\t\t\t\tif (b0 == b1) {\n\t\t\t\t\t\t\t\tdataIndex--;\n\t\t\t\t\t\t\t\trunLength--;\n\t\t\t\t\t\t\t\tscanIndex--;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdata[dataIndex++] = (byte) b1;\n\t\t\t\t\t\t\tb0 = b1;\n\t\t\t\t\t\t\trunLength++;\n\t\t\t\t\t\t\tscanIndex++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (matching) {\n\t\t\t\t\tdata[flagIndex] = (byte) (0x80 | (129 - runLength));\n\t\t\t\t} else {\n\t\t\t\t\tdata[flagIndex] = (byte) (runLength - 1);\n\t\t\t\t}\n\t\t\t\tflagIndex = dataIndex++;\n\t\t\t}\n\t\t\tif (flagIndex - baseIndex > width + width / 128) {\n\t\t\t\tint count = width;\n\t\t\t\tflagIndex = baseIndex;\n\t\t\t\tfor (int i = 0; i < width; i++) {\n\t\t\t\t\tif (i % 128 == 0) {\n\t\t\t\t\t\tint nBytes = (count > 128) ? 128 : count;\n\t\t\t\t\t\tdata[flagIndex++] = (byte) (nBytes - 1);\n\t\t\t\t\t\tcount -= nBytes;\n\t\t\t\t\t}\n\t\t\t\t\tdata[flagIndex++] = (byte) getPixelComponent(scanline[i],\n\t\t\t\t\t\t\trgb);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn flagIndex;\n\t}\n\n\t/**\n\t * Writes out the code for the PostScript preview, which is embedded in the\n\t * picture comments.\n\t */\n\tprivate void dumpPSPreview() {\n\t\taddPSComment(\"/dictCount countdictstack def\");\n\t\taddPSComment(\"/opCount count 1 sub def\");\n\t\taddPSComment(PS_DICT_SIZE + \" dict begin\");\n\t\taddPSComment(\"/showpage {} def\");\n\t\taddPSComment(\"0 setgray 0 setlinecap\");\n\t\taddPSComment(\"1 setlinewidth 0 setlinejoin\");\n\t\taddPSComment(\"10 setmiterlimit [] 0 setdash\");\n\t\taddPSComment(\"/languagelevel where {\");\n\t\taddPSComment(\"  pop languagelevel\");\n\t\taddPSComment(\"  1 ne { false setstrokeadjust false setoverprint } if\");\n\t\taddPSComment(\"} if\");\n\t\taddPSComment(\"gsave\");\n\t\taddPSComment(\"clippath pathbbox\");\n\t\taddPSComment(\"pop pop \" + height + \" add translate\");\n\t\taddPSComment(\"1 -1 scale\");\n\t\tfor (int i = 0; i < psPreview.length; i++) {\n\t\t\taddPSComment(psPreview[i]);\n\t\t}\n\t\taddPSComment(\"grestore\");\n\t\taddPSComment(\"end\");\n\t\taddPSComment(\"count opCount sub {pop} repeat\");\n\t\taddPSComment(\"countdictstack dictCount sub {end} repeat\");\n\t}\n\n\t/**\n\t * Adds a PostScript comment line.\n\t */\n\tprivate void addPSComment(String line) {\n\t\tif (line.length() % 2 == 0)\n\t\t\tline += \" \";\n\t\tdumpShort(OP_LONG_COMMENT);\n\t\tdumpShort(PS_HANDLE);\n\t\tdumpShort(line.length() + 1);\n\t\tfor (int i = 0; i < line.length(); i++) {\n\t\t\tdumpByte(line.charAt(i));\n\t\t}\n\t\tdumpByte('\\r');\n\t}\n\n\t/* Private constants */\n\tprivate static final int OP_CLIP = 0x0001;\n\tprivate static final int OP_VERSION = 0x0011;\n\tprivate static final int OP_DEF_HILITE = 0x001E;\n\tprivate static final int OP_SHORT_LINE = 0x0022;\n\tprivate static final int OP_DIRECT_BITS_RECT = 0x009A;\n\tprivate static final int OP_SHORT_COMMENT = 0x00A0;\n\tprivate static final int OP_LONG_COMMENT = 0x00A1;\n\tprivate static final int OP_END_PICT = 0x00FF;\n\tprivate static final int OP_HEADER = 0x0C00;\n\tprivate static final int PS_BEGIN = 190;\n\tprivate static final int PS_END = 191;\n\tprivate static final int PS_HANDLE = 192;\n\tprivate static final int PS_DICT_SIZE = 500;\n\tprivate static final int VERSION = 0x02FF;\n\tprivate static final int PICT_PADDING = 512;\n\tprivate static final int RGB_DIRECT = 16;\n\tprivate static final int SRC_COPY = 0;\n\n\t/* Private instance variables */\n\tprivate int[][] pixels;\n\tprivate String[] psPreview;\n\tprivate int width;\n\tprivate int height;\n\tprivate int rowBytes;\n\tprivate boolean paddingFlag = true;\n\n}\n\nclass PICImageSaver extends PICTImageSaver {\n\t/* Entirely inherited from PICTImageSaver */\n}\n\n/* Package class: EPSImageSaver */\n/**\n * This class saves EPS images.\n */\nclass EPSImageSaver extends ImageSaver {\n\tpublic void saveImage(Image image) {\n\t\tthrow new ErrorException(\"saveImage: Not yet implemented\");\n\t}\n}\n\n/* Package class: RTFImageSaver */\n/**\n * This class saves images as an RTF file that can then be read into a word\n * processor.\n */\nclass RTFImageSaver extends PICTImageSaver {\n\tpublic void saveImage(Image image) {\n\t\tint width = image.getWidth(null);\n\t\tint height = image.getHeight(null);\n\t\tPrintStream out = new PrintStream(new BufferedOutputStream(\n\t\t\t\tgetOutputStream()));\n\t\tsetOutputStream(JTFTools.openHexByteOutputStream(out));\n\t\tfor (int i = 0; i < RTF_HEADER.length; i++) {\n\t\t\tout.println(RTF_HEADER[i]);\n\t\t}\n\t\tout.println(\"{{\\\\pict\\\\macpict\\\\picw\" + width + \"\\\\pich\" + height);\n\t\tsetPaddingFlag(false);\n\t\tsuper.saveImage(image);\n\t\tout.println(\"}}\\\\par\");\n\t\tout.println(\"}\");\n\t\tout.close();\n\t}\n\n\t/**\n\t * On the Macintosh, the default application for RTF files is TextEdit,\n\t * which doesn't display previews. This method ensures that these files open\n\t * using Microsoft Word.\n\t */\n\tpublic void updateFileType(File file) {\n\t\tPlatform.setFileTypeAndCreator(file, \"TEXT\", \"MSWD\");\n\t}\n\n\tprivate static final String[] RTF_HEADER = {\n\t\t\"{\\\\rtf1\\\\mac\\\\deff2\",\n\t\t\"{\\\\fonttbl{\\\\f20\\\\froman Times;} {\\\\f22\\\\fmodern Courier;}}\",\n\t\t\"{\\\\colortbl\\\\red0\\\\green0\\\\blue0;\\\\red0\\\\green0\\\\blue255;\",\n\t\t\"\\\\red0\\\\green255\\\\blue255;\\\\red0\\\\green255\\\\blue0;\",\n\t\t\"\\\\red255\\\\green0\\\\blue255;\\\\red255\\\\green0\\\\blue0;\",\n\t\t\"\\\\red255\\\\green255\\\\blue0;\\\\red255\\\\green255\\\\blue255;}\",\n\t\t\"{\\\\stylesheet{\\\\f20 \\\\sbasedon222\\\\snext0 Normal;}}\",\n\t\t\"\\\\widowctrl\\\\ftnbj \\\\sectd \\\\sbknone\\\\linemod0\\\\linex0\\\\cols1\\\\endnhere\",\n\t\"\\\\pard\\\\plain \\\\s0\\\\qc\\\\f20\" };\n}\n\n/* +--------------------------------------------------------------------+ */\n/* | NOTE: | */\n/* | The remainder of this file consists of the public-domain GIF | */\n/* | encoder released by J. M. G. Elliott (tep@jmge.net), which is | */\n/* | available from http://jmge.net/java/gifenc/. | */\n/* | | */\n/* | The only changes made here are: | */\n/* | 1. Change to comment format (reserving double-slash for | */\n/* | change markers) | */\n/* | 2. Make all classes package private | */\n/* | 3. Fix all warnings generated by Eclipse | */\n/* +--------------------------------------------------------------------+ */\n\n/*----------------------------------------------------------------------*/\n/* DirectGif89Frame */\n/*----------------------------------------------------------------------*/\n\n/**\n * Instances of this Gif89Frame subclass are constructed from RGB image info,\n * either in the form of an Image object or a pixel array.\n * <p>\n * There is an important restriction to note. It is only permissible to add\n * DirectGif89Frame objects to a Gif89Encoder constructed without an explicit\n * color map. The GIF color table will be automatically generated from pixel\n * information.\n * \n * @version 0.90 beta (15-Jul-2000)\n * @author J. M. G. Elliott (tep@jmge.net)\n * @see Gif89Encoder\n * @see Gif89Frame\n * @see IndexGif89Frame\n */\nclass DirectGif89Frame extends Gif89Frame {\n\n\tprivate int[] argbPixels;\n\n\t/**\n\t * Construct an DirectGif89Frame from a Java image.\n\t * \n\t * @param img\n\t *            A java.awt.Image object that supports pixel-grabbing.\n\t * @exception IOException\n\t *                If the image is unencodable due to failure of\n\t *                pixel-grabbing.\n\t */\n\tpublic DirectGif89Frame(Image img) throws IOException {\n\t\tPixelGrabber pg = new PixelGrabber(img, 0, 0, -1, -1, true);\n\n\t\tString errmsg = null;\n\t\ttry {\n\t\t\tif (!pg.grabPixels())\n\t\t\t\terrmsg = \"can't grab pixels from image\";\n\t\t} catch (InterruptedException e) {\n\t\t\terrmsg = \"interrupted grabbing pixels from image\";\n\t\t}\n\n\t\tif (errmsg != null)\n\t\t\tthrow new IOException(errmsg + \" (\" + getClass().getName() + \")\");\n\n\t\ttheWidth = pg.getWidth();\n\t\ttheHeight = pg.getHeight();\n\t\targbPixels = (int[]) pg.getPixels();\n\t\tciPixels = new byte[argbPixels.length];\n\t}\n\n\t/**\n\t * Construct an DirectGif89Frame from ARGB pixel data.\n\t * \n\t * @param width\n\t *            Width of the bitmap.\n\t * @param height\n\t *            Height of the bitmap.\n\t * @param argb_pixels\n\t *            Array containing at least width*height pixels in the format\n\t *            returned by java.awt.Color.getRGB().\n\t */\n\tpublic DirectGif89Frame(int width, int height, int argb_pixels[]) {\n\t\ttheWidth = width;\n\t\ttheHeight = height;\n\t\targbPixels = new int[theWidth * theHeight];\n\t\tSystem.arraycopy(argb_pixels, 0, argbPixels, 0, argbPixels.length);\n\t\tciPixels = new byte[argbPixels.length];\n\t}\n\n\tObject getPixelSource() {\n\t\treturn argbPixels;\n\t}\n}\n\n/*----------------------------------------------------------------------*/\n/* Gif89Encoder */\n/*----------------------------------------------------------------------*/\n\n/**\n * This is the central class of a JDK 1.1 compatible GIF encoder that, AFAIK,\n * supports more features of the extended GIF spec than any other Java open\n * source encoder. Some sections of the source are lifted or adapted from Jef\n * Poskanzer's <cite>Acme GifEncoder</cite> (so please see the <a\n * href=\"../readme.txt\">readme</a> containing his notice), but much of it,\n * including nearly all of the present class, is original code. My main\n * motivation for writing a new encoder was to support animated GIFs, but the\n * package also adds support for embedded textual comments.\n * <p>\n * There are still some limitations. For instance, animations are limited to a\n * single global color table. But that is usually what you want anyway, so as to\n * avoid irregularities on some displays. (So this is not really a limitation,\n * but a \"disciplinary feature\" :) Another rather more serious restriction is\n * that the total number of RGB colors in a given input-batch mustn't exceed\n * 256. Obviously, there is an opening here for someone who would like to add a\n * color-reducing preprocessor.\n * <p>\n * The encoder, though very usable in its present form, is at bottom only a\n * partial implementation skewed toward my own particular needs. Hence a couple\n * of caveats are in order. (1) During development it was in the back of my mind\n * that an encoder object should be reusable - i.e., you should be able to make\n * multiple calls to encode() on the same object, with or without intervening\n * frame additions or changes to options. But I haven't reviewed the code with\n * such usage in mind, much less tested it, so it's likely I overlooked\n * something. (2) The encoder classes aren't thread safe, so use caution in a\n * context where access is shared by multiple threads. (Better yet, finish the\n * library and re-release it :)\n * <p>\n * There follow a couple of simple examples illustrating the most common way to\n * use the encoder, i.e., to encode AWT Image objects created elsewhere in the\n * program. Use of some of the most popular format options is also shown, though\n * you will want to peruse the API for additional features.\n * \n * <p>\n * <strong>Animated GIF Example</strong>\n * \n * <pre>\n *  import net.jmge.gif.Gif89Encoder;\n *  ...\n *  void writeAnimatedGIF(Image[] still_images,\n *                        String annotation,\n *                        boolean looped,\n *                        double frames_per_second,\n *                        OutputStream out) throws IOException\n *  {\n *    Gif89Encoder gifenc = new Gif89Encoder();\n *    for (int i = 0; i < still_images.length; ++i)\n *      gifenc.addFrame(still_images[i]);\n *    gifenc.setComments(annotation);\n *    gifenc.setLoopCount(looped ? 0 : 1);\n *    gifenc.setUniformDelay((int) Math.round(100 / frames_per_second));\n *    gifenc.encode(out);\n *  }\n * </pre>\n * \n * <strong>Static GIF Example</strong>\n * \n * <pre>\n *  import net.jmge.gif.Gif89Encoder;\n *  ...\n *  void writeNormalGIF(Image img,\n *                      String annotation,\n *                      int transparent_index,\n *                      boolean interlaced,\n *                      OutputStream out) throws IOException\n *  {\n *    Gif89Encoder gifenc = new Gif89Encoder(img);\n *    gifenc.setComments(annotation);\n *    gifenc.setTransparentIndex(transparent_index);\n *    gifenc.getFrameAt(0).setInterlaced(interlaced);\n *    gifenc.encode(out);\n *  }\n * </pre>\n * \n * @version 0.90 beta (15-Jul-2000)\n * @author J. M. G. Elliott (tep@jmge.net)\n * @see Gif89Frame\n * @see DirectGif89Frame\n * @see IndexGif89Frame\n */\nclass Gif89Encoder {\n\n\tprivate Dimension dispDim = new Dimension(0, 0);\n\tprivate GifColorTable colorTable;\n\tprivate int bgIndex = 0;\n\tprivate int loopCount = 1;\n\tprivate String theComments;\n\tprivate Vector<Gif89Frame> vFrames = new Vector<Gif89Frame>();\n\n\t/**\n\t * Use this default constructor if you'll be adding multiple frames\n\t * constructed from RGB data (i.e., AWT Image objects or ARGB-pixel arrays).\n\t */\n\tpublic Gif89Encoder() {\n\t\t/* empty color table puts us into \"palette autodetect\" mode */\n\t\tcolorTable = new GifColorTable();\n\t}\n\n\t/**\n\t * Like the default except that it also adds a single frame, for\n\t * conveniently encoding a static GIF from an image.\n\t * \n\t * @param static_image\n\t *            Any Image object that supports pixel-grabbing.\n\t * @exception IOException\n\t *                See the addFrame() methods.\n\t */\n\tpublic Gif89Encoder(Image static_image) throws IOException {\n\t\tthis();\n\t\taddFrame(static_image);\n\t}\n\n\t/**\n\t * This constructor installs a user color table, overriding the detection of\n\t * of a palette from ARBG pixels.\n\t * \n\t * Use of this constructor imposes a couple of restrictions: (1) Frame\n\t * objects can't be of type DirectGif89Frame (2) Transparency, if desired,\n\t * must be set explicitly.\n\t * \n\t * @param colors\n\t *            Array of color values; no more than 256 colors will be read,\n\t *            since that's the limit for a GIF.\n\t */\n\tpublic Gif89Encoder(Color[] colors) {\n\t\tcolorTable = new GifColorTable(colors);\n\t}\n\n\t/**\n\t * Convenience constructor for encoding a static GIF from index-model data.\n\t * Adds a single frame as specified.\n\t * \n\t * @param colors\n\t *            Array of color values; no more than 256 colors will be read,\n\t *            since that's the limit for a GIF.\n\t * @param width\n\t *            Width of the GIF bitmap.\n\t * @param height\n\t *            Height of same.\n\t * @param ci_pixels\n\t *            Array of color-index pixels no less than width * height in\n\t *            length.\n\t * @exception IOException\n\t *                See the addFrame() methods.\n\t */\n\tpublic Gif89Encoder(Color[] colors, int width, int height, byte ci_pixels[])\n\t\t\tthrows IOException {\n\t\tthis(colors);\n\t\taddFrame(width, height, ci_pixels);\n\t}\n\n\t/**\n\t * Get the number of frames that have been added so far.\n\t * \n\t * @return Number of frame items.\n\t */\n\tpublic int getFrameCount() {\n\t\treturn vFrames.size();\n\t}\n\n\t/**\n\t * Get a reference back to a Gif89Frame object by position.\n\t * \n\t * @param index\n\t *            Zero-based index of the frame in the sequence.\n\t * @return Gif89Frame object at the specified position (or null if no such\n\t *         frame).\n\t */\n\tpublic Gif89Frame getFrameAt(int index) {\n\t\treturn isOk(index) ? (Gif89Frame) vFrames.elementAt(index) : null;\n\t}\n\n\t/**\n\t * Add a Gif89Frame frame to the end of the internal sequence. Note that\n\t * there are restrictions on the Gif89Frame type: if the encoder object was\n\t * constructed with an explicit color table, an attempt to add a\n\t * DirectGif89Frame will throw an exception.\n\t * \n\t * @param gf\n\t *            An externally constructed Gif89Frame.\n\t * @exception IOException\n\t *                If Gif89Frame can't be accommodated. This could happen if\n\t *                either (1) the aggregate cross-frame RGB color count\n\t *                exceeds 256, or (2) the Gif89Frame subclass is\n\t *                incompatible with the present encoder object.\n\t */\n\tpublic void addFrame(Gif89Frame gf) throws IOException {\n\t\taccommodateFrame(gf);\n\t\tvFrames.addElement(gf);\n\t}\n\n\t/**\n\t * Convenience version of addFrame() that takes a Java Image, internally\n\t * constructing the requisite DirectGif89Frame.\n\t * \n\t * @param image\n\t *            Any Image object that supports pixel-grabbing.\n\t * @exception IOException\n\t *                If either (1) pixel-grabbing fails, (2) the aggregate\n\t *                cross-frame RGB color count exceeds 256, or (3) this\n\t *                encoder object was constructed with an explicit color\n\t *                table.\n\t */\n\tpublic void addFrame(Image image) throws IOException {\n\t\taddFrame(new DirectGif89Frame(image));\n\t}\n\n\t/**\n\t * The index-model convenience version of addFrame().\n\t * \n\t * @param width\n\t *            Width of the GIF bitmap.\n\t * @param height\n\t *            Height of same.\n\t * @param ci_pixels\n\t *            Array of color-index pixels no less than width * height in\n\t *            length.\n\t * @exception IOException\n\t *                Actually, in the present implementation, there aren't any\n\t *                unchecked exceptions that can be thrown when adding an\n\t *                IndexGif89Frame <i>per se</i>. But I might add some\n\t *                pedantic check later, to justify the generality :)\n\t */\n\tpublic void addFrame(int width, int height, byte ci_pixels[])\n\t\t\tthrows IOException {\n\t\taddFrame(new IndexGif89Frame(width, height, ci_pixels));\n\t}\n\n\t/**\n\t * Like addFrame() except that the frame is inserted at a specific point in\n\t * the sequence rather than appended.\n\t * \n\t * @param index\n\t *            Zero-based index at which to insert frame.\n\t * @param gf\n\t *            An externally constructed Gif89Frame.\n\t * @exception IOException\n\t *                If Gif89Frame can't be accommodated. This could happen if\n\t *                either (1) the aggregate cross-frame RGB color count\n\t *                exceeds 256, or (2) the Gif89Frame subclass is\n\t *                incompatible with the present encoder object.\n\t */\n\tpublic void insertFrame(int index, Gif89Frame gf) throws IOException {\n\t\taccommodateFrame(gf);\n\t\tvFrames.insertElementAt(gf, index);\n\t}\n\n\t/**\n\t * Set the color table index for the transparent color, if any.\n\t * \n\t * @param index\n\t *            Index of the color that should be rendered as transparent, if\n\t *            any. A value of -1 turns off transparency. (Default: -1)\n\t */\n\tpublic void setTransparentIndex(int index) {\n\t\tcolorTable.setTransparent(index);\n\t}\n\n\t/**\n\t * Sets attributes of the multi-image display area, if applicable.\n\t * \n\t * @param dim\n\t *            Width/height of display. (Default: largest detected frame\n\t *            size)\n\t * @param background\n\t *            Color table index of background color. (Default: 0)\n\t * @see Gif89Frame#setPosition\n\t */\n\tpublic void setLogicalDisplay(Dimension dim, int background) {\n\t\tdispDim = new Dimension(dim);\n\t\tbgIndex = background;\n\t}\n\n\t/**\n\t * Set animation looping parameter, if applicable.\n\t * \n\t * @param count\n\t *            Number of times to play sequence. Special value of 0 specifies\n\t *            indefinite looping. (Default: 1)\n\t */\n\tpublic void setLoopCount(int count) {\n\t\tloopCount = count;\n\t}\n\n\t/**\n\t * Specify some textual comments to be embedded in GIF.\n\t * \n\t * @param comments\n\t *            String containing ASCII comments.\n\t */\n\tpublic void setComments(String comments) {\n\t\ttheComments = comments;\n\t}\n\n\t/**\n\t * A convenience method for setting the \"animation speed\". It simply sets\n\t * the delay parameter for each frame in the sequence to the supplied value.\n\t * Since this is actually frame-level rather than animation-level data, take\n\t * care to add your frames before calling this method.\n\t * \n\t * @param interval\n\t *            Interframe interval in centiseconds.\n\t */\n\tpublic void setUniformDelay(int interval) {\n\t\tfor (int i = 0; i < vFrames.size(); ++i)\n\t\t\tvFrames.elementAt(i).setDelay(interval);\n\t}\n\n\t/**\n\t * After adding your frame(s) and setting your options, simply call this\n\t * method to write the GIF to the passed stream. Multiple calls are\n\t * permissible if for some reason that is useful to your application. (The\n\t * method simply encodes the current state of the object with no thought to\n\t * previous calls.)\n\t * \n\t * @param out\n\t *            The stream you want the GIF written to.\n\t * @exception IOException\n\t *                If a write error is encountered.\n\t */\n\tpublic void encode(OutputStream out) throws IOException {\n\t\tint nframes = getFrameCount();\n\t\tboolean is_sequence = nframes > 1;\n\n\t\t/* N.B. must be called before writing screen descriptor */\n\t\tcolorTable.closePixelProcessing();\n\n\t\t/* write GIF HEADER */\n\t\tGif89Put.ascii(\"GIF89a\", out);\n\n\t\t/* write global blocks */\n\t\twriteLogicalScreenDescriptor(out);\n\t\tcolorTable.encode(out);\n\t\tif (is_sequence && loopCount != 1)\n\t\t\twriteNetscapeExtension(out);\n\t\tif (theComments != null && theComments.length() > 0)\n\t\t\twriteCommentExtension(out);\n\n\t\t/* write out the control and rendering data for each frame */\n\t\tfor (int i = 0; i < nframes; ++i)\n\t\t\tvFrames.elementAt(i).encode(out, is_sequence,\n\t\t\t\t\tcolorTable.getDepth(), colorTable.getTransparent());\n\n\t\t/* write GIF TRAILER */\n\t\tout.write(';');\n\n\t\tout.flush();\n\t}\n\n\t/**\n\t * A simple driver to test the installation and to demo usage. Put the JAR\n\t * on your classpath and run ala <blockquote>java net.jmge.gif.Gif89Encoder\n\t * {filename}</blockquote> The filename must be either (1) a JPEG file with\n\t * extension 'jpg', for conversion to a static GIF, or (2) a file containing\n\t * a list of GIFs and/or JPEGs, one per line, to be combined into an\n\t * animated GIF. The output will appear in the current directory as\n\t * 'gif89out.gif'.\n\t * <p>\n\t * (N.B. This test program will abort if the input file(s) exceed(s) 256\n\t * total RGB colors, so in its present form it has no value as a generic\n\t * JPEG to GIF converter. Also, when multiple files are input, you need to\n\t * be wary of the total color count, regardless of file type.)\n\t * \n\t * @param args\n\t *            Command-line arguments, only the first of which is used, as\n\t *            mentioned above.\n\t */\n\tpublic static void main(String[] args) {\n\t\ttry {\n\n\t\t\tToolkit tk = Toolkit.getDefaultToolkit();\n\t\t\tOutputStream out = new BufferedOutputStream(new FileOutputStream(\n\t\t\t\t\t\"gif89out.gif\"));\n\n\t\t\tif (args[0].toUpperCase().endsWith(\".JPG\"))\n\t\t\t\tnew Gif89Encoder(tk.getImage(args[0])).encode(out);\n\t\t\telse {\n\t\t\t\tBufferedReader in = new BufferedReader(new FileReader(args[0]));\n\t\t\t\tGif89Encoder ge = new Gif89Encoder();\n\n\t\t\t\tString line;\n\t\t\t\twhile ((line = in.readLine()) != null)\n\t\t\t\t\tge.addFrame(tk.getImage(line.trim()));\n\t\t\t\tge.setLoopCount(0); /* let's loop indefinitely */\n\t\t\t\tge.encode(out);\n\n\t\t\t\tin.close();\n\t\t\t}\n\t\t\tout.close();\n\n\t\t} catch (Exception e) {\n\t\t\te.printStackTrace();\n\t\t} finally {\n\t\t\tSystem.exit(0);\n\t\t} /* must kill VM explicitly (Toolkit thread?) */\n\t}\n\n\tprivate void accommodateFrame(Gif89Frame gf) throws IOException {\n\t\tdispDim.width = Math.max(dispDim.width, gf.getWidth());\n\t\tdispDim.height = Math.max(dispDim.height, gf.getHeight());\n\t\tcolorTable.processPixels(gf);\n\t}\n\n\tprivate void writeLogicalScreenDescriptor(OutputStream os)\n\t\t\tthrows IOException {\n\t\tGif89Put.leShort(dispDim.width, os);\n\t\tGif89Put.leShort(dispDim.height, os);\n\n\t\t/* write 4 fields, packed into a byte (bitfieldsize:value) */\n\t\t/* global color map present? (1:1) */\n\t\t/* bits per primary color less 1 (3:7) */\n\t\t/* sorted color table? (1:0) */\n\t\t/* bits per pixel less 1 (3:varies) */\n\t\tos.write(0xf0 | colorTable.getDepth() - 1);\n\n\t\t/* write background color index */\n\t\tos.write(bgIndex);\n\n\t\t/*\n\t\t * Jef Poskanzer's notes on the next field, for our possible\n\t\t * edification:\n\t\t */\n\t\t/* Pixel aspect ratio - 1:1. */\n\t\t/* Putbyte( (byte) 49, outs ); */\n\t\t/* Java's GIF reader currently has a bug, if the aspect ratio byte is */\n\t\t/* not zero it throws an ImageFormatException. It doesn't know that */\n\t\t/* 49 means a 1:1 aspect ratio. Well, whatever, zero works with all */\n\t\t/* the other decoders I've tried so it probably doesn't hurt. */\n\n\t\t/* OK, if it's good enough for Jef, it's definitely good enough for us: */\n\t\tos.write(0);\n\t}\n\n\tprivate void writeNetscapeExtension(OutputStream os) throws IOException {\n\t\t/* n.b. most software seems to interpret the count as a repeat count */\n\t\t/* (i.e., interations beyond 1) rather than as an iteration count */\n\t\t/* (thus, to avoid repeating we have to omit the whole extension) */\n\n\t\tos.write('!'); /* GIF Extension Introducer */\n\t\tos.write(0xff); /* Application Extension Label */\n\n\t\tos.write(11); /* application ID block size */\n\t\tGif89Put.ascii(\"NETSCAPE2.0\", os); /* application ID data */\n\n\t\tos.write(3); /* data sub-block size */\n\t\tos.write(1); /* a looping flag? dunno */\n\n\t\t/* we finally write the relevent data */\n\t\tGif89Put.leShort(loopCount > 1 ? loopCount - 1 : 0, os);\n\n\t\tos.write(0); /* block terminator */\n\t}\n\n\tprivate void writeCommentExtension(OutputStream os) throws IOException {\n\t\tos.write('!'); /* GIF Extension Introducer */\n\t\tos.write(0xfe); /* Comment Extension Label */\n\n\t\tint remainder = theComments.length() % 255;\n\t\tint nsubblocks_full = theComments.length() / 255;\n\t\tint nsubblocks = nsubblocks_full + (remainder > 0 ? 1 : 0);\n\t\tint ibyte = 0;\n\t\tfor (int isb = 0; isb < nsubblocks; ++isb) {\n\t\t\tint size = isb < nsubblocks_full ? 255 : remainder;\n\n\t\t\tos.write(size);\n\t\t\tGif89Put.ascii(theComments.substring(ibyte, ibyte + size), os);\n\t\t\tibyte += size;\n\t\t}\n\n\t\tos.write(0); /* block terminator */\n\t}\n\n\tprivate boolean isOk(int frame_index) {\n\t\treturn frame_index >= 0 && frame_index < vFrames.size();\n\t}\n}\n\nclass GifColorTable {\n\n\t/* the palette of ARGB colors, packed as returned by Color.getRGB() */\n\tprivate int[] theColors = new int[256];\n\n\t/* other basic attributes */\n\tprivate int colorDepth;\n\tprivate int transparentIndex = -1;\n\n\t/* these fields track color-index info across frames */\n\tprivate int ciCount = 0; /* count of distinct color indices */\n\tprivate ReverseColorMap ciLookup; /* cumulative rgb-to-ci lookup table */\n\n\tGifColorTable() {\n\t\tciLookup = new ReverseColorMap(); /* puts us into \"auto-detect mode\" */\n\t}\n\n\tGifColorTable(Color[] colors) {\n\t\tint n2copy = Math.min(theColors.length, colors.length);\n\t\tfor (int i = 0; i < n2copy; ++i)\n\t\t\ttheColors[i] = colors[i].getRGB();\n\t}\n\n\tint getDepth() {\n\t\treturn colorDepth;\n\t}\n\n\tint getTransparent() {\n\t\treturn transparentIndex;\n\t}\n\n\t/* default: -1 (no transparency) */\n\tvoid setTransparent(int color_index) {\n\t\ttransparentIndex = color_index;\n\t}\n\n\tvoid processPixels(Gif89Frame gf) throws IOException {\n\t\tif (gf instanceof DirectGif89Frame)\n\t\t\tfilterPixels((DirectGif89Frame) gf);\n\t\telse\n\t\t\ttrackPixelUsage((IndexGif89Frame) gf);\n\t}\n\n\tvoid closePixelProcessing() { /* must be called before encode() */\n\t\tcolorDepth = computeColorDepth(ciCount);\n\t}\n\n\tvoid encode(OutputStream os) throws IOException {\n\t\t/* size of palette written is the smallest power of 2 that can accomdate */\n\t\t/* the number of RGB colors detected (or largest color index, in case of */\n\t\t/* index pixels) */\n\t\tint palette_size = 1 << colorDepth;\n\t\tfor (int i = 0; i < palette_size; ++i) {\n\t\t\tos.write(theColors[i] >> 16 & 0xff);\n\t\t\tos.write(theColors[i] >> 8 & 0xff);\n\t\t\tos.write(theColors[i] & 0xff);\n\t\t}\n\t}\n\n\t/*\n\t * This method accomplishes three things: (1) converts the passed rgb pixels\n\t * to indexes into our rgb lookup table (2) fills the rgb table as new\n\t * colors are encountered (3) looks for transparent pixels so as to set the\n\t * transparent index The information is cumulative across multiple calls.\n\t * \n\t * (Note: some of the logic is borrowed from Jef Poskanzer's code.)\n\t */\n\tprivate void filterPixels(DirectGif89Frame dgf) throws IOException {\n\t\tif (ciLookup == null)\n\t\t\tthrow new IOException(\"RGB frames require palette autodetection\");\n\n\t\tint[] argb_pixels = (int[]) dgf.getPixelSource();\n\t\tbyte[] ci_pixels = dgf.getPixelSink();\n\t\tint npixels = argb_pixels.length;\n\t\tfor (int i = 0; i < npixels; ++i) {\n\t\t\tint argb = argb_pixels[i];\n\n\t\t\t/* handle transparency */\n\t\t\tif ((argb >>> 24) < 0x80) /* transparent pixel? */\n\t\t\t\tif (transparentIndex == -1) /*\n\t\t\t\t * first transparent color\n\t\t\t\t * encountered?\n\t\t\t\t */\n\t\t\t\t\ttransparentIndex = ciCount; /* record its index */\n\t\t\t\telse if (argb != theColors[transparentIndex]) {\n\t\t\t\t\t/* different pixel value? */\n\t\t\t\t\t/* collapse all transparent pixels into one color index */\n\t\t\t\t\tci_pixels[i] = (byte) transparentIndex;\n\t\t\t\t\tcontinue; /* CONTINUE - index already in table */\n\t\t\t\t}\n\n\t\t\t/* try to look up the index in our \"reverse\" color table */\n\t\t\tint color_index = ciLookup.getPaletteIndex(argb & 0xffffff);\n\n\t\t\tif (color_index == -1) {\n\t\t\t\t/* if it isn't in there yet */\n\t\t\t\tif (ciCount == 256)\n\t\t\t\t\tthrow new IOException(\"can't encode as GIF (> 256 colors)\");\n\n\t\t\t\t/* store color in our accumulating palette */\n\t\t\t\ttheColors[ciCount] = argb;\n\n\t\t\t\t/* store index in reverse color table */\n\t\t\t\tciLookup.put(argb & 0xffffff, ciCount);\n\n\t\t\t\t/* send color index to our output array */\n\t\t\t\tci_pixels[i] = (byte) ciCount;\n\n\t\t\t\t/* increment count of distinct color indices */\n\t\t\t\t++ciCount;\n\t\t\t} else\n\t\t\t\t/* we've already snagged color into our palette */\n\t\t\t\tci_pixels[i] = (byte) color_index; /* just send filtered pixel */\n\t\t}\n\t}\n\n\tprivate void trackPixelUsage(IndexGif89Frame igf) {\n\t\tbyte[] ci_pixels = (byte[]) igf.getPixelSource();\n\t\tint npixels = ci_pixels.length;\n\t\tfor (int i = 0; i < npixels; ++i)\n\t\t\tif (ci_pixels[i] >= ciCount)\n\t\t\t\tciCount = ci_pixels[i] + 1;\n\t}\n\n\tprivate int computeColorDepth(int colorcount) {\n\t\t/*\n\t\t * color depth = log-base-2 of maximum number of simultaneous colors,\n\t\t * i.e.\n\t\t */\n\t\t/* bits per color-index pixel */\n\t\tif (colorcount <= 2)\n\t\t\treturn 1;\n\t\tif (colorcount <= 4)\n\t\t\treturn 2;\n\t\tif (colorcount <= 16)\n\t\t\treturn 4;\n\t\treturn 8;\n\t}\n}\n\n/*\n * We're doing a very simple linear hashing thing here, which seems sufficient\n * for our needs. I make no claims for this approach other than that it seems an\n * improvement over doing a brute linear search for each pixel on the one hand,\n * and creating a Java object for each pixel (if we were to use a Java\n * Hashtable) on the other. Doubtless my little hash could be improved by tuning\n * the capacity (at the very least). Suggestions are welcome.\n */\nclass ReverseColorMap {\n\n\tprivate static class ColorRecord {\n\t\tint rgb;\n\t\tint ipalette;\n\n\t\tColorRecord(int rgb, int ipalette) {\n\t\t\tthis.rgb = rgb;\n\t\t\tthis.ipalette = ipalette;\n\t\t}\n\t}\n\n\t/*\n\t * I wouldn't really know what a good hashing capacity is, having missed out\n\t * on data structures and algorithms class :) Alls I know is, we've got a\n\t * lot more space than we have time. So let's try a sparse table with a\n\t * maximum load of about 1/8 capacity.\n\t */\n\tprivate static final int HCAPACITY = 2053; /* a nice prime number */\n\n\t/* our hash table proper */\n\tprivate ColorRecord[] hTable = new ColorRecord[HCAPACITY];\n\n\t/*\n\t * Assert: rgb is not negative (which is the same as saying, be sure the\n\t * alpha transparency byte - i.e., the high byte - has been masked out).\n\t */\n\tint getPaletteIndex(int rgb) {\n\t\tColorRecord rec;\n\n\t\tfor (int itable = rgb % hTable.length; (rec = hTable[itable]) != null\n\t\t\t\t&& rec.rgb != rgb; itable = ++itable % hTable.length)\n\t\t\t;\n\n\t\tif (rec != null)\n\t\t\treturn rec.ipalette;\n\n\t\treturn -1;\n\t}\n\n\t/*\n\t * Assert: (1) same as above; (2) rgb key not already present\n\t */\n\tvoid put(int rgb, int ipalette) {\n\t\tint itable;\n\n\t\tfor (itable = rgb % hTable.length; hTable[itable] != null; itable = ++itable\n\t\t\t\t% hTable.length)\n\t\t\t;\n\n\t\thTable[itable] = new ColorRecord(rgb, ipalette);\n\t}\n}\n\n/*----------------------------------------------------------------------*/\n/* Gif89Frame */\n/*----------------------------------------------------------------------*/\n\n/**\n * First off, just to dispel any doubt, this class and its subclasses have\n * nothing to do with GUI \"frames\" such as java.awt.Frame. We merely use the\n * term in its very common sense of a still picture in an animation sequence.\n * It's hoped that the restricted context will prevent any confusion.\n * <p>\n * An instance of this class is used in conjunction with a Gif89Encoder object\n * to represent and encode a single static image and its associated \"control\"\n * data. A Gif89Frame doesn't know or care whether it is encoding one of the\n * many animation frames in a GIF movie, or the single bitmap in a \"normal\" GIF.\n * (FYI, this design mirrors the encoded GIF structure.)\n * <p>\n * Since Gif89Frame is an abstract class we don't instantiate it directly, but\n * instead create instances of its concrete subclasses, IndexGif89Frame and\n * DirectGif89Frame. From the API standpoint, these subclasses differ only in\n * the sort of data their instances are constructed from. Most folks will\n * probably work with DirectGif89Frame, since it can be constructed from a\n * java.awt.Image object, but the lower-level IndexGif89Frame class offers\n * advantages in specialized circumstances. (Of course, in routine situations\n * you might not explicitly instantiate any frames at all, instead letting\n * Gif89Encoder's convenience methods do the honors.)\n * <p>\n * As far as the public API is concerned, objects in the Gif89Frame hierarchy\n * interact with a Gif89Encoder only via the latter's methods for adding and\n * querying frames. (As a side note, you should know that while Gif89Encoder\n * objects are permanently modified by the addition of Gif89Frames, the reverse\n * is NOT true. That is, even though the ultimate encoding of a Gif89Frame may\n * be affected by the context its parent encoder object provides, it retains its\n * original condition and can be reused in a different context.)\n * <p>\n * The core pixel-encoding code in this class was essentially lifted from Jef\n * Poskanzer's well-known <cite>Acme GifEncoder</cite>, so please see the <a\n * href=\"../readme.txt\">readme</a> containing his notice.\n * \n * @version 0.90 beta (15-Jul-2000)\n * @author J. M. G. Elliott (tep@jmge.net)\n * @see Gif89Encoder\n * @see DirectGif89Frame\n * @see IndexGif89Frame\n */\nabstract class Gif89Frame {\n\n\t/* Public \"Disposal Mode\" constants */\n\n\t/**\n\t * The animated GIF renderer shall decide how to dispose of this\n\t * Gif89Frame's display area.\n\t * \n\t * @see Gif89Frame#setDisposalMode\n\t */\n\tpublic static final int DM_UNDEFINED = 0;\n\n\t/**\n\t * The animated GIF renderer shall take no display-disposal action.\n\t * \n\t * @see Gif89Frame#setDisposalMode\n\t */\n\tpublic static final int DM_LEAVE = 1;\n\n\t/**\n\t * The animated GIF renderer shall replace this Gif89Frame's area with the\n\t * background color.\n\t * \n\t * @see Gif89Frame#setDisposalMode\n\t */\n\tpublic static final int DM_BGCOLOR = 2;\n\n\t/**\n\t * The animated GIF renderer shall replace this Gif89Frame's area with the\n\t * previous frame's bitmap.\n\t * \n\t * @see Gif89Frame#setDisposalMode\n\t */\n\tpublic static final int DM_REVERT = 3;\n\n\t/* Bitmap variables set in package subclass constructors */\n\tint theWidth = -1;\n\tint theHeight = -1;\n\tbyte[] ciPixels;\n\n\t/* GIF graphic frame control options */\n\tprivate Point thePosition = new Point(0, 0);\n\tprivate boolean isInterlaced;\n\tprivate int csecsDelay;\n\tprivate int disposalCode = DM_LEAVE;\n\n\t/**\n\t * Set the position of this frame within a larger animation display space.\n\t * \n\t * @param p\n\t *            Coordinates of the frame's upper left corner in the display\n\t *            space. (Default: The logical display's origin [0, 0])\n\t * @see Gif89Encoder#setLogicalDisplay\n\t */\n\tpublic void setPosition(Point p) {\n\t\tthePosition = new Point(p);\n\t}\n\n\t/**\n\t * Set or clear the interlace flag.\n\t * \n\t * @param b\n\t *            true if you want interlacing. (Default: false)\n\t */\n\tpublic void setInterlaced(boolean b) {\n\t\tisInterlaced = b;\n\t}\n\n\t/**\n\t * Set the between-frame interval.\n\t * \n\t * @param interval\n\t *            Centiseconds to wait before displaying the subsequent frame.\n\t *            (Default: 0)\n\t */\n\tpublic void setDelay(int interval) {\n\t\tcsecsDelay = interval;\n\t}\n\n\t/**\n\t * Setting this option determines (in a cooperative GIF-viewer) what will be\n\t * done with this frame's display area before the subsequent frame is\n\t * displayed. For instance, a setting of DM_BGCOLOR can be used for erasure\n\t * when redrawing with displacement.\n\t * \n\t * @param code\n\t *            One of the four int constants of the Gif89Frame.DM_* series.\n\t *            (Default: DM_LEAVE)\n\t */\n\tpublic void setDisposalMode(int code) {\n\t\tdisposalCode = code;\n\t}\n\n\tGif89Frame() {\n\t} /* package-visible default constructor */\n\n\tabstract Object getPixelSource();\n\n\tint getWidth() {\n\t\treturn theWidth;\n\t}\n\n\tint getHeight() {\n\t\treturn theHeight;\n\t}\n\n\tbyte[] getPixelSink() {\n\t\treturn ciPixels;\n\t}\n\n\tvoid encode(OutputStream os, boolean epluribus, int color_depth,\n\t\t\tint transparent_index) throws IOException {\n\t\twriteGraphicControlExtension(os, epluribus, transparent_index);\n\t\twriteImageDescriptor(os);\n\t\tnew GifPixelsEncoder(theWidth, theHeight, ciPixels, isInterlaced,\n\t\t\t\tcolor_depth).encode(os);\n\t}\n\n\tprivate void writeGraphicControlExtension(OutputStream os,\n\t\t\tboolean epluribus, int itransparent) throws IOException {\n\t\tint transflag = itransparent == -1 ? 0 : 1;\n\t\tif (transflag == 1 || epluribus) { /* using transparency or animating ? */\n\t\t\tos.write('!'); /* GIF Extension Introducer */\n\t\t\tos.write(0xf9); /* Graphic Control Label */\n\t\t\tos.write(4); /* subsequent data block size */\n\t\t\tos.write((disposalCode << 2) | transflag); /*\n\t\t\t * packed fields (1\n\t\t\t * byte)\n\t\t\t */\n\t\t\tGif89Put.leShort(csecsDelay, os); /* delay field (2 bytes) */\n\t\t\tos.write(itransparent); /* transparent index field */\n\t\t\tos.write(0); /* block terminator */\n\t\t}\n\t}\n\n\tprivate void writeImageDescriptor(OutputStream os) throws IOException {\n\t\tos.write(','); /* Image Separator */\n\t\tGif89Put.leShort(thePosition.x, os);\n\t\tGif89Put.leShort(thePosition.y, os);\n\t\tGif89Put.leShort(theWidth, os);\n\t\tGif89Put.leShort(theHeight, os);\n\t\tos.write(isInterlaced ? 0x40 : 0); /* packed fields (1 byte) */\n\t}\n}\n\nclass GifPixelsEncoder {\n\n\tprivate static final int EOF = -1;\n\n\tprivate int imgW, imgH;\n\tprivate byte[] pixAry;\n\tprivate boolean wantInterlaced;\n\tprivate int initCodeSize;\n\n\t/* raster data navigators */\n\tprivate int countDown;\n\tprivate int xCur, yCur;\n\tprivate int curPass;\n\n\tGifPixelsEncoder(int width, int height, byte[] pixels, boolean interlaced,\n\t\t\tint color_depth) {\n\t\timgW = width;\n\t\timgH = height;\n\t\tpixAry = pixels;\n\t\twantInterlaced = interlaced;\n\t\tinitCodeSize = Math.max(2, color_depth);\n\t}\n\n\tvoid encode(OutputStream os) throws IOException {\n\t\tos.write(initCodeSize); /* write \"initial code size\" byte */\n\n\t\tcountDown = imgW * imgH; /* reset navigation variables */\n\t\txCur = yCur = curPass = 0;\n\n\t\tcompress(initCodeSize + 1, os); /* compress and write the pixel data */\n\n\t\tos.write(0); /* write block terminator */\n\t}\n\n\t/*\n\t * (J.E.) The logic of the next two methods is largely intact from Jef\n\t * Poskanzer. Some stylistic changes were made for consistency sake, plus\n\t * the second method accesses the pixel value from a prefiltered linear\n\t * array. That's about it.\n\t */\n\n\t/* Bump the 'xCur' and 'yCur' to point to the next pixel. */\n\tprivate void bumpPosition() {\n\t\t/* Bump the current X position */\n\t\t++xCur;\n\n\t\t/* If we are at the end of a scan line, set xCur back to the beginning */\n\t\t/* If we are interlaced, bump the yCur to the appropriate spot, */\n\t\t/* otherwise, just increment it. */\n\t\tif (xCur == imgW) {\n\t\t\txCur = 0;\n\n\t\t\tif (!wantInterlaced)\n\t\t\t\t++yCur;\n\t\t\telse\n\t\t\t\tswitch (curPass) {\n\t\t\t\tcase 0:\n\t\t\t\t\tyCur += 8;\n\t\t\t\t\tif (yCur >= imgH) {\n\t\t\t\t\t\t++curPass;\n\t\t\t\t\t\tyCur = 4;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\t\tyCur += 8;\n\t\t\t\t\tif (yCur >= imgH) {\n\t\t\t\t\t\t++curPass;\n\t\t\t\t\t\tyCur = 2;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tyCur += 4;\n\t\t\t\t\tif (yCur >= imgH) {\n\t\t\t\t\t\t++curPass;\n\t\t\t\t\t\tyCur = 1;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tyCur += 2;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t}\n\t}\n\n\t/* Return the next pixel from the image */\n\tprivate int nextPixel() {\n\t\tif (countDown == 0)\n\t\t\treturn EOF;\n\n\t\t--countDown;\n\n\t\tbyte pix = pixAry[yCur * imgW + xCur];\n\n\t\tbumpPosition();\n\n\t\treturn pix & 0xff;\n\t}\n\n\t/*\n\t * (J.E.) I didn't touch Jef Poskanzer's code from this point on. (Well, OK,\n\t * I changed the name of the sole outside method it accesses.) I figure if I\n\t * have no idea how something works, I shouldn't play with it :)\n\t * \n\t * Despite its unencapsulated structure, this section is actually highly\n\t * self-contained. The calling code merely calls compress(), and the present\n\t * code calls nextPixel() in the caller. That's the sum total of their\n\t * communication. I could have dumped it in a separate class with a callback\n\t * via an interface, but it didn't seem worth messing with.\n\t */\n\n\t/* GIFCOMPR.C - GIF Image compression routines */\n\n\t/* Lempel-Ziv compression based on 'compress'. GIF modifications by */\n\t/* David Rowley (mgardi@watdcsu.waterloo.edu) */\n\n\t/* General DEFINEs */\n\n\tstatic final int BITS = 12;\n\n\tstatic final int HSIZE = 5003; /* 80% occupancy */\n\n\t/*\n\t * GIF Image compression - modified 'compress'\n\t * \n\t * Based on: compress.c - File compression ala IEEE Computer, June 1984.\n\t * \n\t * By Authors: Spencer W. Thomas (decvax!harpo!utah-cs!utah-gr!thomas) Jim\n\t * McKie (decvax!mcvax!jim) Steve Davies (decvax!vax135!petsd!peora!srd) Ken\n\t * Turkowski (decvax!decwrl!turtlevax!ken) James A. Woods\n\t * (decvax!ihnp4!ames!jaw) Joe Orost (decvax!vax135!petsd!joe)\n\t */\n\n\tint n_bits; /* number of bits/code */\n\tint maxbits = BITS; /* user settable max # bits/code */\n\tint maxcode; /* maximum code, given n_bits */\n\tint maxmaxcode = 1 << BITS; /* should NEVER generate this code */\n\n\tfinal int MAXCODE(int n_bits) {\n\t\treturn (1 << n_bits) - 1;\n\t}\n\n\tint[] htab = new int[HSIZE];\n\tint[] codetab = new int[HSIZE];\n\n\tint hsize = HSIZE; /* for dynamic table sizing */\n\n\tint free_ent = 0; /* first unused entry */\n\n\t/* block compression parameters -- after all codes are used up, */\n\t/* and compression rate changes, start over. */\n\tboolean clear_flg = false;\n\n\t/*\n\t * Algorithm: use open addressing double hashing (no chaining) on the prefix\n\t * code / next character combination. We do a variant of Knuth's algorithm D\n\t * (vol. 3, sec. 6.4) along with G. Knott's relatively-prime secondary\n\t * probe. Here, the modular division first probe is gives way to a faster\n\t * exclusive-or manipulation. Also do block compression with an adaptive\n\t * reset, whereby the code table is cleared when the compression ratio\n\t * decreases, but after the table fills. The variable-length output codes\n\t * are re-sized at this point, and a special CLEAR code is generated for the\n\t * decompressor. Late addition: construct the table according to file size\n\t * for noticeable speed improvement on small files. Please direct questions\n\t * about this implementation to ames!jaw.\n\t */\n\n\tint g_init_bits;\n\n\tint ClearCode;\n\tint EOFCode;\n\n\tvoid compress(int init_bits, OutputStream outs) throws IOException {\n\t\tint fcode;\n\t\tint i /* = 0 */;\n\t\tint c;\n\t\tint ent;\n\t\tint disp;\n\t\tint hsize_reg;\n\t\tint hshift;\n\n\t\t/* Set up the globals: g_init_bits - initial number of bits */\n\t\tg_init_bits = init_bits;\n\n\t\t/* Set up the necessary values */\n\t\tclear_flg = false;\n\t\tn_bits = g_init_bits;\n\t\tmaxcode = MAXCODE(n_bits);\n\n\t\tClearCode = 1 << (init_bits - 1);\n\t\tEOFCode = ClearCode + 1;\n\t\tfree_ent = ClearCode + 2;\n\n\t\tchar_init();\n\n\t\tent = nextPixel();\n\n\t\thshift = 0;\n\t\tfor (fcode = hsize; fcode < 65536; fcode *= 2)\n\t\t\t++hshift;\n\t\thshift = 8 - hshift; /* set hash code range bound */\n\n\t\thsize_reg = hsize;\n\t\tcl_hash(hsize_reg); /* clear hash table */\n\n\t\toutput(ClearCode, outs);\n\n\t\touter_loop: while ((c = nextPixel()) != EOF) {\n\t\t\tfcode = (c << maxbits) + ent;\n\t\t\ti = (c << hshift) ^ ent; /* xor hashing */\n\n\t\t\tif (htab[i] == fcode) {\n\t\t\t\tent = codetab[i];\n\t\t\t\tcontinue;\n\t\t\t} else if (htab[i] >= 0) { /* non-empty slot */\n\t\t\t\tdisp = hsize_reg - i; /* secondary hash (after G. Knott) */\n\t\t\t\tif (i == 0)\n\t\t\t\t\tdisp = 1;\n\t\t\t\tdo {\n\t\t\t\t\tif ((i -= disp) < 0)\n\t\t\t\t\t\ti += hsize_reg;\n\n\t\t\t\t\tif (htab[i] == fcode) {\n\t\t\t\t\t\tent = codetab[i];\n\t\t\t\t\t\tcontinue outer_loop;\n\t\t\t\t\t}\n\t\t\t\t} while (htab[i] >= 0);\n\t\t\t}\n\t\t\toutput(ent, outs);\n\t\t\tent = c;\n\t\t\tif (free_ent < maxmaxcode) {\n\t\t\t\tcodetab[i] = free_ent++; /* code -> hashtable */\n\t\t\t\thtab[i] = fcode;\n\t\t\t} else\n\t\t\t\tcl_block(outs);\n\t\t}\n\t\t/* Put out the final code. */\n\t\toutput(ent, outs);\n\t\toutput(EOFCode, outs);\n\t}\n\n\t/*\n\t * output\n\t * \n\t * Output the given code. Inputs: code: A n_bits-bit integer. If == -1, then\n\t * EOF. This assumes that n_bits =< wordsize - 1. Outputs: Outputs code to\n\t * the file. Assumptions: Chars are 8 bits long. Algorithm: Maintain a BITS\n\t * character long buffer (so that 8 codes will fit in it exactly). Use the\n\t * VAX insv instruction to insert each code in turn. When the buffer fills\n\t * up empty it and start over.\n\t */\n\n\tint cur_accum = 0;\n\tint cur_bits = 0;\n\n\tint masks[] = { 0x0000, 0x0001, 0x0003, 0x0007, 0x000F, 0x001F, 0x003F,\n\t\t\t0x007F, 0x00FF, 0x01FF, 0x03FF, 0x07FF, 0x0FFF, 0x1FFF, 0x3FFF,\n\t\t\t0x7FFF, 0xFFFF };\n\n\tvoid output(int code, OutputStream outs) throws IOException {\n\t\tcur_accum &= masks[cur_bits];\n\n\t\tif (cur_bits > 0)\n\t\t\tcur_accum |= (code << cur_bits);\n\t\telse\n\t\t\tcur_accum = code;\n\n\t\tcur_bits += n_bits;\n\n\t\twhile (cur_bits >= 8) {\n\t\t\tchar_out((byte) (cur_accum & 0xff), outs);\n\t\t\tcur_accum >>= 8;\n\t\t\tcur_bits -= 8;\n\t\t}\n\n\t\t/* If the next entry is going to be too big for the code size, */\n\t\t/* then increase it, if possible. */\n\t\tif (free_ent > maxcode || clear_flg) {\n\t\t\tif (clear_flg) {\n\t\t\t\tmaxcode = MAXCODE(n_bits = g_init_bits);\n\t\t\t\tclear_flg = false;\n\t\t\t} else {\n\t\t\t\t++n_bits;\n\t\t\t\tif (n_bits == maxbits)\n\t\t\t\t\tmaxcode = maxmaxcode;\n\t\t\t\telse\n\t\t\t\t\tmaxcode = MAXCODE(n_bits);\n\t\t\t}\n\t\t}\n\n\t\tif (code == EOFCode) {\n\t\t\t/* At EOF, write the rest of the buffer. */\n\t\t\twhile (cur_bits > 0) {\n\t\t\t\tchar_out((byte) (cur_accum & 0xff), outs);\n\t\t\t\tcur_accum >>= 8;\n\t\tcur_bits -= 8;\n\t\t\t}\n\n\t\t\tflush_char(outs);\n\t\t}\n\t}\n\n\t/* Clear out the hash table */\n\n\t/* table clear for block compress */\n\tvoid cl_block(OutputStream outs) throws IOException {\n\t\tcl_hash(hsize);\n\t\tfree_ent = ClearCode + 2;\n\t\tclear_flg = true;\n\n\t\toutput(ClearCode, outs);\n\t}\n\n\t/* reset code table */\n\tvoid cl_hash(int hsize) {\n\t\tfor (int i = 0; i < hsize; ++i)\n\t\t\thtab[i] = -1;\n\t}\n\n\t/* GIF Specific routines */\n\n\t/* Number of characters so far in this 'packet' */\n\tint a_count;\n\n\t/* Set up the 'byte output' routine */\n\tvoid char_init() {\n\t\ta_count = 0;\n\t}\n\n\t/* Define the storage for the packet accumulator */\n\tbyte[] accum = new byte[256];\n\n\t/* Add a character to the end of the current packet, and if it is 254 */\n\t/* characters, flush the packet to disk. */\n\tvoid char_out(byte c, OutputStream outs) throws IOException {\n\t\taccum[a_count++] = c;\n\t\tif (a_count >= 254)\n\t\t\tflush_char(outs);\n\t}\n\n\t/* Flush the packet to disk, and reset the accumulator */\n\tvoid flush_char(OutputStream outs) throws IOException {\n\t\tif (a_count > 0) {\n\t\t\touts.write(a_count);\n\t\t\touts.write(accum, 0, a_count);\n\t\t\ta_count = 0;\n\t\t}\n\t}\n}\n\n/*----------------------------------------------------------------------*/\n/* IndexGif89Frame */\n/*----------------------------------------------------------------------*/\n\n/**\n * Instances of this Gif89Frame subclass are constructed from bitmaps in the\n * form of color-index pixels, which accords with a GIF's native palettized\n * color model. The class is useful when complete control over a GIF's color\n * palette is desired. It is also much more efficient when one is using an\n * algorithmic frame generator that isn't interested in RGB values (such as a\n * cellular automaton).\n * <p>\n * Objects of this class are normally added to a Gif89Encoder object that has\n * been provided with an explicit color table at construction. While you may\n * also add them to \"auto-map\" encoders without an exception being thrown, there\n * obviously must be at least one DirectGif89Frame object in the sequence so\n * that a color table may be detected.\n * \n * @version 0.90 beta (15-Jul-2000)\n * @author J. M. G. Elliott (tep@jmge.net)\n * @see Gif89Encoder\n * @see Gif89Frame\n * @see DirectGif89Frame\n */\nclass IndexGif89Frame extends Gif89Frame {\n\n\t/**\n\t * Construct a IndexGif89Frame from color-index pixel data.\n\t * \n\t * @param width\n\t *            Width of the bitmap.\n\t * @param height\n\t *            Height of the bitmap.\n\t * @param ci_pixels\n\t *            Array containing at least width*height color-index pixels.\n\t */\n\tpublic IndexGif89Frame(int width, int height, byte ci_pixels[]) {\n\t\ttheWidth = width;\n\t\ttheHeight = height;\n\t\tciPixels = new byte[theWidth * theHeight];\n\t\tSystem.arraycopy(ci_pixels, 0, ciPixels, 0, ciPixels.length);\n\t}\n\n\tObject getPixelSource() {\n\t\treturn ciPixels;\n\t}\n}\n\n/*----------------------------------------------------------------------*/\n/* Gif89Put */\n/*----------------------------------------------------------------------*/\n\n/**\n * Just a couple of trivial output routines used by other classes in the\n * package. Normally this kind of stuff would be in a separate IO package, but I\n * wanted the present package to be self-contained for ease of distribution and\n * use by others.\n */\nfinal class Gif89Put {\n\n\t/**\n\t * Write just the low bytes of a String. (This sucks, but the concept of an\n\t * encoding seems inapplicable to a binary file ID string. I would think\n\t * flexibility is just what we don't want - but then again, maybe I'm slow.)\n\t */\n\tstatic void ascii(String s, OutputStream os) throws IOException {\n\t\tbyte[] bytes = new byte[s.length()];\n\t\tfor (int i = 0; i < bytes.length; ++i)\n\t\t\tbytes[i] = (byte) s.charAt(i); /* discard the high byte */\n\t\tos.write(bytes);\n\t}\n\n\t/**\n\t * Write a 16-bit integer in little endian byte order.\n\t */\n\tstatic void leShort(int i16, OutputStream os) throws IOException {\n\t\tos.write(i16 & 0xff);\n\t\tos.write(i16 >> 8 & 0xff);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/util/PatchingClassLoader.java",
    "content": "package acm.util;\n\nimport java.io.*;\nimport java.lang.reflect.*;\nimport java.util.*;\n\n/**\n * A ClassLoader that allows you to patch what the superclass is for an existing class\n * as it is loaded.  This is primarily used to hot-patch ConsolePrograms to be CommandLinePrograms\n * when run in a non-graphical setting.\n * @author Marty Stepp, based on Eric Roberts code\n *\n */\npublic class PatchingClassLoader extends ClassLoader {\n\tprivate static final int CONSTANT_Utf8 =                1;\n\tprivate static final int CONSTANT_Integer =             3;\n\tprivate static final int CONSTANT_Float =               4;\n\tprivate static final int CONSTANT_Long =                5;\n\tprivate static final int CONSTANT_Double =              6;\n\tprivate static final int CONSTANT_Class =               7;\n\tprivate static final int CONSTANT_String =              8;\n\tprivate static final int CONSTANT_Fieldref =            9;\n\tprivate static final int CONSTANT_Methodref =          10;\n\tprivate static final int CONSTANT_InterfaceMethodref = 11;\n\tprivate static final int CONSTANT_NameAndType =        12;\n\n\tprivate HashMap<Integer,Integer> classTable;\n\tprivate ClassLoader realLoader;\n\tprivate String targetName;\n\tprivate String newSuperClassName;\n\tprivate int superclassOffset;\n\n\tpublic PatchingClassLoader(String targetClassName, Class<?> newSuperClass) {\n\t\tthis(targetClassName, newSuperClass.getName());\n\t}\n\t\n\tpublic PatchingClassLoader(String targetClassName, String newSuperClassName) {\n\t\tthis.targetName = targetClassName;\n\t\tthis.newSuperClassName = newSuperClassName.replace(\".\", \"/\");   // \"acm/program/CommandLineProgram\"\n\t\ttry {\n\t\t\tClass<?> classLoader = java.lang.ClassLoader.class;\n\t\t\tMethod getSystemClassLoader = classLoader.getMethod(\"getSystemClassLoader\", new Class[0]);\n\t\t\trealLoader = (ClassLoader) getSystemClassLoader.invoke(null, new Object[0]);\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n\tpublic Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException {\n\t\tif (name.equals(targetName)) {\n\t\t\tInputStream in = getResourceAsStream(name + \".class\");\n\t\t\tsuperclassOffset = findSuperclassOffset(in);\n\t\t\tin = getResourceAsStream(name + \".class\");\n\t\t\tbyte[] code = patchClassData(in);\n\t\t\treturn defineClass(name, code, 0, code.length);\n\t\t} else {\n\t\t\treturn realLoader.loadClass(name);\n\t\t}\n\t}\n\n\tpublic InputStream getResourceAsStream(String name) {\n\t\treturn realLoader.getResourceAsStream(name);\n\t}\n\n\tpublic java.net.URL getResource(String name) {\n\t\treturn realLoader.getResource(name);\n\t}\n\n\tprivate byte[] patchClassData(InputStream in) {\n\t\ttry {\n\t\t\tByteArrayOutputStream out = new ByteArrayOutputStream();\n\t\t\tJTFTools.copyBytes(in, out, 8);\n\t\t\tint nConstants = in.read() << 8 | in.read();\n\t\t\tout.write(nConstants >> 8);\n\t\t\tout.write(nConstants & 0xFF);\n\t\t\tfor (int index = 1; index < nConstants; index++) {\n\t\t\t\tint type = in.read();\n\t\t\t\tout.write(type);\n\t\t\t\tif (JTFTools.testDebugOption(\"constants\")) {\n\t\t\t\t\tSystem.out.println(index + \": \" + getConstantTypeName(type));\n\t\t\t\t}\n\t\t\t\tswitch (type) {\n\t\t\t\t  case CONSTANT_Integer: JTFTools.copyBytes(in, out, 4); break;\n\t\t\t\t  case CONSTANT_Float: JTFTools.copyBytes(in, out, 4); break;\n\t\t\t\t  case CONSTANT_Long: JTFTools.copyBytes(in, out, 8); index++; break;\n\t\t\t\t  case CONSTANT_Double: JTFTools.copyBytes(in, out, 8); index++; break;\n\t\t\t\t  case CONSTANT_Class: JTFTools.copyBytes(in, out, 2); break;\n\t\t\t\t  case CONSTANT_String: JTFTools.copyBytes(in, out, 2); break;\n\t\t\t\t  case CONSTANT_Fieldref: JTFTools.copyBytes(in, out, 4); break;\n\t\t\t\t  case CONSTANT_Methodref: JTFTools.copyBytes(in, out, 4); break;\n\t\t\t\t  case CONSTANT_InterfaceMethodref: JTFTools.copyBytes(in, out, 4); break;\n\t\t\t\t  case CONSTANT_NameAndType: JTFTools.copyBytes(in, out, 4); break;\n\t\t\t\t  case CONSTANT_Utf8:\n\t\t\t\t\tif (index == superclassOffset) {\n\t\t\t\t\t\tint nChars = in.read() << 8 | in.read();\n\t\t\t\t\t\tin.skip(nChars);\n\t\t\t\t\t\tnChars = newSuperClassName.length();\n\t\t\t\t\t\tout.write(nChars >> 8);\n\t\t\t\t\t\tout.write(nChars & 0xFF);\n\t\t\t\t\t\tfor (int j = 0; j < nChars; j++) {\n\t\t\t\t\t\t\tout.write((byte) newSuperClassName.charAt(j));\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tint nChars = in.read() << 8 | in.read();\n\t\t\t\t\t\tout.write(nChars >> 8);\n\t\t\t\t\t\tout.write(nChars & 0xFF);\n\t\t\t\t\t\tJTFTools.copyBytes(in, out, nChars);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\twhile (true) {\n\t\t\t\tint ch = in.read();\n\t\t\t\tif (ch == -1) break;\n\t\t\t\tout.write(ch);\n\t\t\t}\n\t\t\treturn out.toByteArray();\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n\tprivate int findSuperclassOffset(InputStream in) {\n\t\tclassTable = new HashMap<Integer,Integer>();\n\t\ttry {\n\t\t\tin.skip(8);\n\t\t\tint nConstants = in.read() << 8 | in.read();\n\t\t\tnConstants += 2;\n\t\t\tfor (int i = 1; i < nConstants - 2; i++) {\n\t\t\t\tint type = in.read();\n\t\t\t\tswitch (type) {\n\t\t\t\t  case CONSTANT_Integer: in.skip(4); break;\n\t\t\t\t  case CONSTANT_Float: in.skip(4); break;\n\t\t\t\t  case CONSTANT_Long: in.skip(8); i++; break;\n\t\t\t\t  case CONSTANT_Double: in.skip(8); i++; break;\n\t\t\t\t  case CONSTANT_String: in.skip(2); break;\n\t\t\t\t  case CONSTANT_Fieldref: in.skip(4); break;\n\t\t\t\t  case CONSTANT_Methodref: in.skip(4); break;\n\t\t\t\t  case CONSTANT_InterfaceMethodref: in.skip(4); break;\n\t\t\t\t  case CONSTANT_NameAndType: in.skip(4); break;\n\t\t\t\t  case CONSTANT_Class:\n\t\t\t\t\tint offset = in.read() << 8 | in.read();\n\t\t\t\t\tclassTable.put(Integer.valueOf(i), Integer.valueOf(offset));\n\t\t\t\t\tbreak;\n\t\t\t\t  case CONSTANT_Utf8:\n\t\t\t\t\tint nChars = in.read() << 8 | in.read();\n\t\t\t\t\tin.skip(nChars);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tin.skip(4);\n\t\t\treturn classTable.get(Integer.valueOf(in.read() << 8 | in.read())).intValue();\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n\tprivate static String getConstantTypeName(int id) {\n\t\tswitch (id) {\n\t\t  case CONSTANT_Utf8: return \"Utf8\";\n\t\t  case CONSTANT_Integer: return \"Integer\";\n\t\t  case CONSTANT_Float: return \"Float\";\n\t\t  case CONSTANT_Long: return \"Long\";\n\t\t  case CONSTANT_Double: return \"Double\";\n\t\t  case CONSTANT_Class: return \"Class\";\n\t\t  case CONSTANT_String: return \"String\";\n\t\t  case CONSTANT_Fieldref: return \"Fieldref\";\n\t\t  case CONSTANT_Methodref: return \"Methodref\";\n\t\t  case CONSTANT_InterfaceMethodref: return \"InterfaceMethodref\";\n\t\t  case CONSTANT_NameAndType: return \"NameAndType\";\n\t\t  default: return \"Type[\" + id + \"]\";\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/util/RandomGenerator.java",
    "content": "/*\n * @version 2017/04/14\n * - bug fix for nextInt(int, int) with fixed rigged integers\n * @version 2016/05/19\n * - added choice(T...) method\n * @version 2016/04/18\n * - added code to \"rig\" random generator by feeding it a set of\n *   numbers to always return\n * - added setSharedSeed\n */\n\n/*\n * @(#)RandomGenerator.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Feature enhancement 26-May-08 (ESR)\n//   1. Added support for serialization.\n\npackage acm.util;\n\nimport java.awt.*;\nimport java.util.*;\nimport java.util.List;\n\n/**\n * This class implements a simple random number generator that allows clients to\n * generate pseudorandom integers, doubles, booleans, and colors. To use it, the\n * first step is to declare an instance variable to hold the random generator as\n * follows:\n *\n * <p>\n * \n * <pre>\n * <code>\n * &nbsp;    private RandomGenerator rgen = RandomGenerator.getInstance();\n * </code>\n * </pre>\n *\n * <p>\n * By default, the <code>RandomGenerator</code> object is initialized to begin\n * at an unpredictable point in a pseudorandom sequence. During debugging, it is\n * often useful to set the internal seed for the random generator explicitly so\n * that it always returns the same sequence. To do so, you need to invoke the\n * <a href=\"http://com/j2se/1.4.2/docs/api/java/util/Random.html#setSeed(int)\">\n * <code>setSeed</code></a> method.\n *\n * <p>\n * The <code>RandomGenerator</code> object returned by <code>getInstance</code>\n * is shared across all classes in an application. Using this shared instance of\n * the generator is preferable to allocating new instances of\n * <code>RandomGenerator</code>. If you create several random generators in\n * succession, they will typically generate the same sequence of values.\n */\npublic class RandomGenerator extends Random {\n\t/**\n\t * The serialization code for this class. This value should be incremented\n\t * whenever you change the structure of this class in an incompatible way,\n\t * typically by adding a new instance variable.\n\t */\n\tstatic final long serialVersionUID = 1L;\n\n\tprivate static RandomGenerator standardInstance;\n\n\tprivate static final List<Integer> fixedIntegers = new LinkedList<Integer>();\n\n\t// shared seed for all RandomGenerators to use (default none)\n\tprivate static Long ourSeed = null;\n\n\t/**\n\t * Creates a new random generator. Most clients will not use the constructor\n\t * directly but will instead call <a href=\"#getInstance()\">\n\t * <code>getInstance</code></a> to obtain a <code>RandomGenerator</code>\n\t * object that is shared by all classes in the application.\n\t *\n\t * @usage RandomGenerator rgen = new RandomGenerator();\n\t */\n\tpublic RandomGenerator() {\n\t\tif (ourSeed != null) {\n\t\t\tsetSeed(ourSeed);\n\t\t}\n\t}\n\n\t/**\n\t * Creates a new random generator, using the given seed value to influence\n\t * its random generation of values.\n\t */\n\tpublic RandomGenerator(long seed) {\n\t\tsuper(ourSeed != null ? ourSeed : seed);\n\t}\n\t\n\t/**\n\t * Randomly chooses one of the values passed and returns it.\n\t * @param choices a set of choices\n\t * @return a randomly chosen choice\n\t */\n\tpublic <T> T nextChoice(T... choices) {\n\t\tif (choices.length == 0) {\n\t\t\tthrow new IllegalArgumentException(\"must pass at least one choice\");\n\t\t} else {\n\t\t\tint index = nextInt(choices.length);\n\t\t\treturn choices[index];\n\t\t}\n\t}\n\t\n\t/**\n\t * Randomly chooses one of the values passed and returns it.\n\t * @param choices a set of choices\n\t * @return a randomly chosen choice\n\t */\n\tpublic <T> T nextChoice(List<T> choices) {\n\t\tif (choices.isEmpty()) {\n\t\t\tthrow new IllegalArgumentException(\"must pass at least one choice\");\n\t\t} else {\n\t\t\tint index = nextInt(choices.size());\n\t\t\treturn choices.get(index);\n\t\t}\n\t}\n\t\n\t/**\n\t * Randomly chooses one of the values passed and returns it.\n\t * @param choices a set of choices\n\t * @return a randomly chosen choice\n\t */\n\tpublic <T> T nextChoice(Iterable<T> choices) {\n\t\tList<T> list = new ArrayList<T>();\n\t\tfor (T choice : choices) {\n\t\t\tlist.add(choice);\n\t\t}\n\t\treturn nextChoice(list);\n\t}\n\n\t/**\n\t * Returns the next random integer, which can be any legal integer value.\n\t */\n\tpublic int nextInt() {\n\t\t// return fixed number if one is present\n\t\tif (!fixedIntegers.isEmpty()) {\n\t\t\tsynchronized (fixedIntegers) {\n\t\t\t\tif (!fixedIntegers.isEmpty()) {\n\t\t\t\t\tint fixed = fixedIntegers.remove(0);\n\t\t\t\t\treturn fixed;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn super.nextInt();\n\t}\n\n\t/**\n\t * Returns the next random integer between 0 and <code>n</code>-1,\n\t * inclusive. This method is in modern implementations of the\n\t * <code>Random</code> class, but is missing from JDK 1.1.\n\t * \n\t * @noshow\n\t */\n\tpublic int nextInt(int n) {\n\t\treturn nextInt(0, n - 1);\n\t}\n\n\t/**\n\t * Returns a random <code>boolean</code> value that is <code>true</code> or\n\t * <code>false</code> with equal probability. This method is in modern\n\t * implementations of the <code>Random</code> class, but is missing from JDK\n\t * 1.1.\n\t * \n\t * @noshow\n\t */\n\tpublic boolean nextBoolean() {\n\t\treturn nextBoolean(0.5);\n\t}\n\n\t/**\n\t * Returns the next random integer in the specified range. For example, you\n\t * can generate the roll of a six-sided die by calling\n\t *\n\t * <p>\n\t * \n\t * <pre>\n\t * <code>\n\t * &nbsp;    rgen.nextInt(1, 6);\n\t * </code>\n\t * </pre>\n\t *\n\t * <p>\n\t * or a random decimal digit by calling\n\t *\n\t * <p>\n\t * \n\t * <pre>\n\t * <code>\n\t * &nbsp;    rgen.nextInt(0, 9);\n\t * </code>\n\t * </pre>\n\t *\n\t * @usage int k = rgen.nextInt(low, high)\n\t * @param low\n\t *            The low end of the range\n\t * @param high\n\t *            The high end of the range\n\t * @return The next random <code>int</code> between <code>low</code> and\n\t *         <code>high</code>, inclusive\n\t */\n\tpublic int nextInt(int low, int high) {\n\t\tif (high < low) {\n\t\t\t// swap\n\t\t\tint temp = low;\n\t\t\tlow = high;\n\t\t\thigh = temp;\n\t\t}\n\t\t\n\t\t// return fixed number if one is present\n\t\tif (!fixedIntegers.isEmpty()) {\n\t\t\tsynchronized (fixedIntegers) {\n\t\t\t\tif (!fixedIntegers.isEmpty()) {\n\t\t\t\t\tint fixed = fixedIntegers.remove(0);\n\t\t\t\t\t\n\t\t\t\t\t// shift the fixed number to be inside the range [low .. high]\n\t\t\t\t\tif (fixed < low || fixed > high) {\n\t\t\t\t\t\tint range = high - low + 1;\n\t\t\t\t\t\twhile (fixed < low) {\n\t\t\t\t\t\t\tfixed += range;\n\t\t\t\t\t\t}\n\t\t\t\t\t\twhile (fixed > high) {\n\t\t\t\t\t\t\tfixed -= range;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn fixed;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// fall back to normal random behavior\n\t\treturn low + (int) ((high - low + 1) * nextDouble());\n\t}\n\n\t/**\n\t * Returns the next random real number in the specified range. The resulting\n\t * value is always at least <code>low</code> but always strictly less than\n\t * <code>high</code>. You can use this method to generate continuous random\n\t * values. For example, you can set the variables <code>x</code> and\n\t * <code>y</code> to specify a random point inside the unit square as\n\t * follows:\n\t *\n\t * <p>\n\t * \n\t * <pre>\n\t * <code>\n\t * &nbsp;    double x = rgen.nextDouble(0.0, 1.0);\n\t * &nbsp;    double y = rgen.nextDouble(0.0, 1.0);\n\t * </code>\n\t * </pre>\n\t *\n\t * @usage double d = rgen.nextDouble(low, high)\n\t * @param low\n\t *            The low end of the range\n\t * @param high\n\t *            The high end of the range\n\t * @return A random <code>double</code> value <i>d</i> in the range\n\t *         <code>low</code> &le; <i>d</i> &lt; <code>high</code>\n\t */\n\tpublic double nextDouble(double low, double high) {\n\t\treturn low + (high - low) * nextDouble();\n\t}\n\n\t/**\n\t * Returns a random <code>boolean</code> value with the specified\n\t * probability. You can use this method to simulate an event that occurs\n\t * with a particular probability. For example, you could simulate the result\n\t * of tossing a coin like this:\n\t *\n\t * <p>\n\t * \n\t * <pre>\n\t * <code>\n\t * &nbsp;    String coinFlip = rgen.nextBoolean(0.5) ? \"HEADS\" : \"TAILS\";\n\t * </code>\n\t * </pre>\n\t *\n\t * @usage if (rgen.nextBoolean(p)) . . .\n\t * @param p\n\t *            A value between 0 (impossible) and 1 (certain) indicating the\n\t *            probability\n\t * @return The value <code>true</code> with probability <code>p</code>\n\t */\n\tpublic boolean nextBoolean(double p) {\n\t\treturn nextDouble() < p;\n\t}\n\n\t/**\n\t * Returns a random opaque color whose components are chosen uniformly in\n\t * the 0-255 range.\n\t *\n\t * @usage Color color = rgen.newColor()\n\t * @return A random opaque\n\t *         <a href=\"http://com/j2se/1.4.2/docs/api/java/awt/Color.html\">\n\t *         <code>Color</code></a>\n\t */\n\tpublic Color nextColor() {\n\t\treturn new Color(nextInt(256), nextInt(256), nextInt(256));\n\t}\n\n\t/**\n\t * Returns a <code>RandomGenerator</code> instance that can be shared among\n\t * several classes.\n\t *\n\t * @usage RandomGenerator rgen = RandomGenerator.getInstance();\n\t * @return A shared <code>RandomGenerator</code> object\n\t */\n\tpublic static synchronized RandomGenerator getInstance() {\n\t\tif (standardInstance == null) {\n\t\t\tstandardInstance = new RandomGenerator();\n\t\t}\n\t\treturn standardInstance;\n\t}\n\n\t/**\n\t * Removes any previously added fixed numbers that were passed to\n\t * feedFixedIntegers.\n\t */\n\tpublic static synchronized void clearFixedIntegers() {\n\t\tfixedIntegers.clear();\n\t}\n\n\t/**\n\t * Adds a set of fixed numbers that will be returned by future calls to\n\t * nextInt. This is done to \"rig\" the random generator so it will always\n\t * return the same sequence of integers, to aid in testing of programs.\n\t * Another way to achieve a similar effect is to use the setSeed method.\n\t * \n\t * @param numbers\n\t */\n\tpublic static synchronized void feedFixedIntegers(int... numbers) {\n\t\tfor (int n : numbers) {\n\t\t\tfixedIntegers.add(n);\n\t\t}\n\t}\n\n\t/**\n\t * Adds a set of fixed numbers that will be returned by future calls to\n\t * nextInt. This is done to \"rig\" the random generator so it will always\n\t * return the same sequence of integers, to aid in testing of programs.\n\t * Another way to achieve a similar effect is to use the setSeed method.\n\t * \n\t * @param numbers\n\t */\n\tpublic static synchronized void feedFixedIntegers(Iterable<Integer> numbers) {\n\t\tfor (int n : numbers) {\n\t\t\tfixedIntegers.add(n);\n\t\t}\n\t}\n\n\t/**\n\t * Sets a seed value that will be used by all RandomGenerators when they are\n\t * constructed. Note: This will not change the seed of any previously\n\t * constructed RandomGenerator object. To do that, call\n\t * {@code rg.setSeed(seed);} on that object.\n\t * \n\t * @param seed\n\t */\n\tpublic static void setSharedSeed(long seed) {\n\t\tourSeed = seed;\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/util/SoundClip.java",
    "content": "/*\n * @version 2015/05/11\n * - put try/catch around setLineVolume call to avoid illegal arg exception\n */\n\n/*\n * @(#)SoundClip.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// Class introduced in V1.1\n\npackage acm.util;\n\nimport java.applet.*;\nimport java.io.*;\nimport java.net.*;\nimport java.text.*;\nimport javax.sound.sampled.*;\n\n/* Class: SoundClip */\n/**\n * This class represents a sound, which can be created from a URL, sound file,\n * resource stream, or digital samples.\n */\n\n@SuppressWarnings(\"deprecation\")\npublic class SoundClip implements AudioClip {\n\n/* Constant: MONO */\n/**\n * Number of channels in a mono sound.\n */\n\tpublic static final int MONO = 1;\n\n/* Constant: STEREO */\n/**\n * Number of channels in a stereo sound.\n */\n\tpublic static final int STEREO = 2;\n\n/* Constant: LEFT */\n/**\n * Identifies the left channel in a stereo sound.\n */\n\tpublic static final int LEFT = 0;\n\n/* Constant: RIGHT */\n/**\n * Identifies the right channel in a stereo sound.\n */\n\tpublic static final int RIGHT = 1;\n\n/* Constant: STANDARD_FRAME_RATE */\n/**\n * Specifies the standard frame rate in a sampled sound.\n */\n\tpublic static final double STANDARD_FRAME_RATE = 22050.0;\n\n/* Constant: MAX_SAMPLE */\n/**\n * Specifies the maximum value of a sample in a sound.  Samples are signed integers\n * between <code>-MAX_SAMPLE</code> and <code>MAX_SAMPLE</code>.\n */\n\tpublic static final int MAX_SAMPLE = 32767;\n\n/* Constructor: SoundClip() */\n/**\n * Creates an empty single-channel sound to which samples can be added.\n *\n * @usage SoundClip sound = new SoundClip();\n */\n\tpublic SoundClip() {\n\t\tthis(MONO);\n\t}\n\n/* Constructor: SoundClip(channels) */\n/**\n * Creates an empty sound with the specified number of channels, which\n * must be 1 for mono and 2 for stereo.\n *\n * @usage SoundClip sound = new SoundClip(channels);\n * @param channels The desired number of channels (1 for mono, 2 for stereo)\n */\n\tpublic SoundClip(int channels) {\n\t\tif (channels < 1 || channels > 2) {\n\t\t\tthrow new ErrorException(\"SoundClip: Illegal number of channels\");\n\t\t}\n\t\tnChannels = channels;\n\t\tframeRate = (float) STANDARD_FRAME_RATE;\n\t\tsoundName = \"Untitled\";\n\t\tframeCount = 0;\n\t\tclipVolume = 1.0;\n\t\tdata = new byte[0];\n\t\tformat = new AudioFormat(frameRate, 16, channels, true, true);\n\t}\n\n/* Constructor: SoundClip(name) */\n/**\n * Creates a new sound by reading the data from the specified file.\n *\n * @usage SoundClip sound = new SoundClip(name);\n * @param name The file from which the sound is read\n */\n\tpublic SoundClip(String name) {\n\t\tif (name.startsWith(\"http:\")) {\n\t\t\ttry {\n\t\t\t\tURL url = new URL(name);\n\t\t\t\tsoundName = JTFTools.getURLSuffix(url.getPath());\n\t\t\t\treadSound(convertToPCM(getAudioInputStream(url.openStream())));\n\t\t\t} catch (Exception ex) {\n\t\t\t\tthrow new ErrorException(ex);\n\t\t\t}\n\t\t} else {\n\t\t\tsoundName = name;\n\t\t\treadSound(convertToPCM(getAudioInputStream(new File(name))));\n\t\t}\n\t}\n\n/* Constructor: SoundClip(file) */\n/**\n * Creates a new sound by reading the data from the specified file.\n *\n * @usage SoundClip sound = new SoundClip(file);\n * @param file A <code>File</code> object from which the sound is read\n */\n\tpublic SoundClip(File file) {\n\t\ttry {\n\t\t\tsoundName = file.getName();\n\t\t\treadSound(convertToPCM(getAudioInputStream(file)));\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/* Constructor: SoundClip(url) */\n/**\n * Creates a new sound by reading the data from the specified URL.\n *\n * @usage SoundClip sound = new SoundClip(url);\n * @param url A network URL containing the sound\n */\n\tpublic SoundClip(URL url) {\n\t\ttry {\n\t\t\tsoundName = JTFTools.getURLSuffix(url.getPath());\n\t\t\treadSound(convertToPCM(getAudioInputStream(url.openStream())));\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/* Constructor: SoundClip(in) */\n/**\n * Creates a new sound by reading the data from the specified input stream.\n *\n * @usage SoundClip sound = new SoundClip(in);\n * @param in An <code>InputStream</code> from which the sound is read\n */\n\tpublic SoundClip(InputStream in) {\n\t\tsoundName = \"Untitled\";\n\t\treadSound(convertToPCM(getAudioInputStream(in)));\n\t}\n\n/* Constructor: SoundClip(samples) */\n/**\n * Creates a new mono sound from the sample array.\n *\n * @usage SoundClip sound = new SoundClip(samples);\n * @param samples An array of integers containing the sampled sound\n */\n\tpublic SoundClip(int[] samples) {\n\t\tthis(MONO);\n\t\taddSampleData(samples);\n\t}\n\n/* Constructor: SoundClip(left, right) */\n/**\n * Creates a new stereo sound from the two sample arrays.\n *\n * @usage SoundClip sound = new SoundClip(samples);\n * @param left An array of integers containing the samples for the left channel\n * @param right An array of integers containing the samples for the right channel\n */\n\tpublic SoundClip(int[] left, int[] right) {\n\t\tthis(STEREO);\n\t\taddSampleData(left, right);\n\t}\n\n/* Method: play() */\n/**\n * Plays the sound through the computer's audio system.\n *\n * @usage sound.play();\n */\n\tpublic synchronized void play() {\n\t\tif (player == null) player = new SoundPlayer(this);\n\t\tplayer.play();\n\t}\n\n/* Method: loop() */\n/**\n * Plays the sound in a continuous audio loop.\n *\n * @usage sound.loop();\n */\n\tpublic void loop() {\n\t\tif (player == null) player = new SoundPlayer(this);\n\t\tplayer.loop();\n\t}\n\n/* Method: stop() */\n/**\n * Stops the playback of the sound.  Calling <code>stop</code> saves the\n * current frame index so that calling <code>start</code> will resume from\n * the point at which it stopped.\n *\n * @usage sound.stop();\n */\n\tpublic synchronized void stop() {\n\t\tif (player != null) player.stop();\n\t}\n\n/* Method: save(filename) */\n/**\n * Writes a data file containing the specified sound.  The format of the sound\n * is determined by the file extension, as follows:\n *\n * <center>\n * <table border=1>\n * <tr><td align=center><code>.au</code></td><td>Sun audio file with ALAW encoding</td></tr>\n * <tr><td align=center><code>.wav</code></td><td>Waveform audio format</td></tr>\n * <tr><td align=center><code>.aif</code> or <code>.aiff</code></td><td>Audio Interchange File Format</td></tr>\n * </table>\n * </center>\n *\n * @usage sound.save(filename);\n * @param filename The name of the file\n */\n\tpublic void save(String filename) {\n\t\tsave(new File(System.getProperty(\"user.dir\"), filename));\n\t}\n\n/* Method: save(file) */\n/**\n * Writes the sound to the specified <code>File</code> object.\n *\n * @usage sound.save(file);\n * @param file The <code>File</code> object to which the sound is written\n */\n\tpublic void save(File file) {\n\t\ttry {\n\t\t\tAudioSystem.write(getAudioInputStream(), getFormatForFile(file.getName()), file);\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(\"save: I/O error - \" + ex.getMessage());\n\t\t}\n\t}\n\n/* Method: getName() */\n/**\n * Returns the name of the sound, which is typically the file name from which it\n * was read.\n *\n * @usage String name = sound.getName();\n * @return The name of the sound\n */\n\tpublic String getName() {\n\t\treturn soundName;\n\t}\n\n/* Method: setName(name) */\n/**\n * Sets a name to identify the sound.\n *\n * @usage sound.setName(name);\n * @param name The name to use for the sound\n */\n\tpublic void setName(String name) {\n\t\tsoundName = name;\n\t}\n\n/* Method: getChannelCount() */\n/**\n * Returns the number of channels.\n *\n * @usage int channels = sound.getChannelCount();\n * @return The number of channels (1 for mono, 2 for stereo)\n */\n\tpublic int getChannelCount() {\n\t\treturn nChannels;\n\t}\n\n/* Method: isStereo() */\n/**\n * Returns <code>true</code> if the sound is recorded in stereo.\n *\n * @usage if (sound.isStereo()) . . .\n * @return <code>true</code> if the sound is recorded in stereo\n */\n\tpublic boolean isStereo() {\n\t\treturn nChannels == STEREO;\n\t}\n\n/* Method: getFrameCount() */\n/**\n * Returns the number of frames in a sound.\n *\n * @usage int nFrames = sound.getFrameCount();\n * @return The number of frames in a sound\n */\n\tpublic int getFrameCount() {\n\t\treturn frameCount;\n\t}\n\n/* Method: getFrameRate() */\n/**\n * Returns the frame rate of the sound.\n *\n * @usage double frameRate = sound.getFrameRate();\n * @return The frame rate of the sound (in frames/second)\n */\n\tpublic double getFrameRate() {\n\t\treturn frameRate;\n\t}\n\n/* Method: getDuration() */\n/**\n * Returns the duration of a sound (in seconds).\n *\n * @usage double duration = sound.getDuration();\n * @return The duration of a sound (in seconds)\n */\n\tpublic double getDuration() {\n\t\treturn frameCount / frameRate;\n\t}\n\n/* Method: getFrameIndex() */\n/**\n * Returns the current frame index in the sound.\n *\n * @usage int frameIndex = sound.getFrameIndex();\n * @return The current frame index in the sound\n */\n\tpublic int getFrameIndex() {\n\t\treturn currentFrame;\n\t}\n\n/* Method: setFrameIndex(frame) */\n/**\n * Sets the current frame index.\n *\n * @usage sound.setFrameIndex(frameIndex);\n * @param frameIndex The current frame index in the sound\n */\n\tpublic void setFrameIndex(int frameIndex) {\n\t\tcurrentFrame = frameIndex;\n\t}\n\n/* Method: rewind() */\n/**\n * Rewinds the sound to the beginning.  This method is useful after you have\n * stopped a sound and want to replay it from the beginning.\n *\n * @usage sound.rewind();\n */\n\tpublic void rewind() {\n\t\tsetFrameIndex(0);\n\t}\n\n/* Method: getVolume() */\n/**\n * Returns the overall volume setting for the sound, which is a number\n * between 0 (silent) and 1 (maximum volume).\n *\n * @usage double volume = sound.getVolume();\n * @return The overall volume setting for the sound\n */\n\tpublic double getVolume() {\n\t\treturn clipVolume;\n\t}\n\n/* Method: setVolume(volume) */\n/**\n * Sets the overall volume setting for the sound, which is a number\n * between 0 (silent) and 1 (maximum volume).\n *\n * @usage sound.setVolume(volume);\n * @param volume The new overall volume setting for the sound\n */\n\tpublic void setVolume(double volume) {\n\t\tclipVolume = volume;\n\t}\n\n/* Method: getSampleData() */\n/**\n * Returns an array of integers corresponding to the samples in the primary\n * channel of the sound.  For mono sounds, this channel is the only channel;\n * for stereo sounds, it is defined to be the left channel.\n *\n * @usage int[] samples = sound.getSampleData();\n * @return An array of the samples in the sound\n */\n\tpublic int[] getSampleData() {\n\t\treturn getSampleData(0);\n\t}\n\n/* Method: getSampleData(channel) */\n/**\n * Returns an array of integers corresponding to the samples in the specified\n * channel, which is typically represented by <code>LEFT</code> or <code>RIGHT</code>.\n *\n * @usage int[] samples = sound.getSampleData(channel);\n * @param channel The channel for which samples are requested\n * @return An array of the samples in the sound\n */\n\tpublic int[] getSampleData(int channel) {\n\t\tstandardize();\n\t\tif (channel < 0 || channel >= nChannels) {\n\t\t\tthrow new ErrorException(\"getSamples: Channel number out of range\");\n\t\t}\n\t\tint[] samples = new int[frameCount];\n\t\tint ix = channel * BYTES_PER_SAMPLE;\n\t\tfor (int i = 0; i < frameCount; i++) {\n\t\t\tsamples[i] = data[ix] << 8 | (data[ix + 1] & 0xFF);\n\t\t\tix += nChannels * BYTES_PER_SAMPLE;\n\t\t}\n\t\treturn samples;\n\t}\n\n/* Method: addSampleData(sample) */\n/**\n * Adds a single sound sample to the end of the sound.  If the sound is stereo,\n * the new sample is added to both the left and right channel.\n *\n * @usage sound.addSampleData(sample);\n * @param sample An integers representing a new sound samples\n */\n\tpublic void addSampleData(int sample) {\n\t\tstandardize();\n\t\tif (nChannels == 2) {\n\t\t\taddSampleData(sample, sample);\n\t\t} else {\n\t\t\tint ix = frameCount * BYTES_PER_SAMPLE;\n\t\t\tframeCount++;\n\t\t\tif (ix >= data.length) {\n\t\t\t\tbyte[] newData = new byte[ix + BUFFER_INCREMENT];\n\t\t\t\tif (ix > 0) {\n\t\t\t\t\tSystem.arraycopy(data, 0, newData, 0, ix);\n\t\t\t\t}\n\t\t\t\tdata = newData;\n\t\t\t}\n\t\t\tdata[ix++] = (byte) (sample >> 8);\n\t\t\tdata[ix++] = (byte) (sample & 0xFF);\n\t\t}\n\t}\n\n/* Method: addSampleData(left, right) */\n/**\n * Adds the specified samples to the end of the appropriate channels of\n * the stereo sound.\n *\n * @usage sound.addSampleData(left, right);\n * @param left An integer containing a single sample for the left channel\n * @param right An integer containing a single sample for the right channel\n */\n\tpublic void addSampleData(int left, int right) {\n\t\tstandardize();\n\t\tif (nChannels != 2) {\n\t\t\tthrow new ErrorException(\"addSampleData: Sound is not stereo\");\n\t\t} else {\n\t\t\tint ix = 2 * frameCount * BYTES_PER_SAMPLE;\n\t\t\tframeCount++;\n\t\t\tif (ix >= data.length) {\n\t\t\t\tbyte[] newData = new byte[ix + BUFFER_INCREMENT];\n\t\t\t\tif (ix > 0) {\n\t\t\t\t\tSystem.arraycopy(data, 0, newData, 0, ix);\n\t\t\t\t}\n\t\t\t\tdata = newData;\n\t\t\t}\n\t\t\tdata[ix++] = (byte) (left >> 8);\n\t\t\tdata[ix++] = (byte) (left & 0xFF);\n\t\t\tdata[ix++] = (byte) (right >> 8);\n\t\t\tdata[ix++] = (byte) (right & 0xFF);\n\t\t}\n\t}\n\n/* Method: addSampleData(samples) */\n/**\n * Adds the specified samples to the end of the sound.  If the sound is stereo,\n * the new samples are added to both the left and right channel.\n *\n * @usage sound.addSampleData(samples);\n * @param samples An array of integers containing the new sound samples\n */\n\tpublic void addSampleData(int[] samples) {\n\t\tstandardize();\n\t\tif (nChannels == 2) {\n\t\t\taddSampleData(samples, samples);\n\t\t} else {\n\t\t\tint ix = frameCount * BYTES_PER_SAMPLE;\n\t\t\tframeCount += samples.length;\n\t\t\tbyte[] newData = new byte[frameCount * BYTES_PER_SAMPLE];\n\t\t\tif (ix > 0) {\n\t\t\t\tSystem.arraycopy(data, 0, newData, 0, ix);\n\t\t\t}\n\t\t\tdata = newData;\n\t\t\tfor (int i = 0; i < samples.length; i++) {\n\t\t\t\tdata[ix++] = (byte) (samples[i] >> 8);\n\t\t\t\tdata[ix++] = (byte) (samples[i] & 0xFF);\n\t\t\t}\n\t\t}\n\t}\n\n/* Method: addSampleData(left, right) */\n/**\n * Adds the specified samples to the end of the appropriate channels of\n * the stereo sound.\n *\n * @usage sound.addSampleData(left, right);\n * @param left An array of integers containing the samples for the left channel\n * @param right An array of integers containing the samples for the right channel\n */\n\tpublic void addSampleData(int[] left, int[] right) {\n\t\tstandardize();\n\t\tif (nChannels != 2) {\n\t\t\tthrow new ErrorException(\"addSampleData: Sound is not stereo\");\n\t\t} else if (left.length != right.length) {\n\t\t\tthrow new ErrorException(\"addSampleData: Channels have unequal length\");\n\t\t} else {\n\t\t\tint ix = 2 * frameCount * BYTES_PER_SAMPLE;\n\t\t\tframeCount += left.length;\n\t\t\tbyte[] newData = new byte[2 * frameCount * BYTES_PER_SAMPLE];\n\t\t\tif (ix > 0) {\n\t\t\t\tSystem.arraycopy(data, 0, newData, 0, ix);\n\t\t\t}\n\t\t\tdata = newData;\n\t\t\tfor (int i = 0; i < left.length; i++) {\n\t\t\t\tdata[ix++] = (byte) (left[i] >> 8);\n\t\t\t\tdata[ix++] = (byte) (left[i] & 0xFF);\n\t\t\t\tdata[ix++] = (byte) (right[i] >> 8);\n\t\t\t\tdata[ix++] = (byte) (right[i] & 0xFF);\n\t\t\t}\n\t\t}\n\t}\n\n/* Method: toString() */\n/**\n * Converts a sound to a string.\n *\n * @usage String str = sound.toString();\n * @return A string representation of the sound\n */\n\tpublic String toString() {\n\t\tString str = soundName;\n\t\tstr += \" (\";\n\t\tstr += (nChannels == 1) ? \"mono\" : \"stereo\";\n\t\tstr += \", \";\n\t\tstr += new DecimalFormat(\"#0.00\").format(getDuration());\n\t\tstr += \" sec)\";\n\t\treturn str;\n\t}\n\n/**********************************************************************/\n/* Static methods                                                     */\n/**********************************************************************/\n\n/* Static method: sampleToIntensity(sample) */\n/**\n * Converts an integer sample in the range -32767 and +32767 into a\n * <code>double</code> between -1.0 and +1.0.\n *\n * @usage double intensity = SoundClip.sampleToIntensity(sample)\n * @param sample An integer sample from a digital sound\n * @return The corresponding intensity value between -1.0 and +1.0\n */\n\tpublic static double sampleToIntensity(int sample) {\n\t\treturn Math.max(-1.0, Math.min(+1.0, (double) sample / MAX_SAMPLE));\n\t}\n\n/* Static method: intensityToSample(intensity) */\n/**\n * Converts an intensity value between -1.0 and +1.0 into the corresponding\n * integer sample in the range -32767 and +32767.\n *\n * @usage int sample = SoundClip.intensityToSample(intensity)\n * @param intensity An intensity value between -1.0 and +1.0\n * @return The corresponding integer sample between -32767 and +32767\n */\n\tpublic static int intensityToSample(double intensity) {\n\t\treturn (int) Math.round(Math.max(-1.0, Math.min(+1.0, intensity)) * MAX_SAMPLE);\n\t}\n\n/**********************************************************************/\n/* Protected methods                                                  */\n/**********************************************************************/\n\n/* Protected method: getData() */\n/**\n * Returns the byte array containing the sound data.\n */\n\tprotected byte[] getData() {\n\t\treturn data;\n\t}\n\n/* Protected method: getFormat() */\n/**\n * Returns the format in which the sound is stored.\n */\n\tprotected AudioFormat getFormat() {\n\t\treturn format;\n\t}\n\n/* Protected method: getAudioInputStream() */\n/**\n * Returns an <code>AudioInputStream</code> for the sound.\n */\n\tprotected AudioInputStream getAudioInputStream() {\n\t\treturn new AudioInputStream(new ByteArrayInputStream(data), format, frameCount);\n\t}\n\n/**********************************************************************/\n/* Private methods                                                    */\n/**********************************************************************/\n\n/* Private method: standardize() */\n/**\n * Converts the data for this sound so that it has the standard sampling rate.\n */\n\tprivate void standardize() {\n\t\tif (frameRate == STANDARD_FRAME_RATE) return;\n\t\tdouble sf = STANDARD_FRAME_RATE / frameRate;\n\t\tint newFrameCount = (int) (frameCount * sf);\n\t\tbyte[] newData = new byte[nChannels * newFrameCount * BYTES_PER_SAMPLE];\n\t\tint ix = 0;\n\t\tfor (int i = 0; i < newFrameCount; i++) {\n\t\t\t// Add averaging at some point in the future\n\t\t\tfor (int channel = 0; channel < nChannels; channel++) {\n\t\t\t\tint sx = (int) (i / sf) * BYTES_PER_SAMPLE * nChannels + BYTES_PER_SAMPLE * channel;\n\t\t\t\tint sample = (data[sx] << 8) | (data[sx + 1] & 0xFF);\n\t\t\t\tnewData[ix++] = (byte) (sample >> 8);\n\t\t\t\tnewData[ix++] = (byte) (sample & 0xFF);\n\t\t\t}\n\t\t}\n\t\tdata = newData;\n\t\tframeCount = newFrameCount;\n\t\tformat = new AudioFormat(frameRate, 16, nChannels, true, true);\n\t}\n\n/* Private method: getFormatForFile(name) */\n/**\n * Returns an audio format appropriate to the file name.\n */\n\tprivate AudioFileFormat.Type getFormatForFile(String name) {\n\t\tname = name.toLowerCase();\n\t\tif (name.endsWith(\".wav\")) return AudioFileFormat.Type.WAVE;\n\t\tif (name.endsWith(\".aif\")) return AudioFileFormat.Type.AIFF;\n\t\tif (name.endsWith(\".aiff\")) return AudioFileFormat.Type.AIFF;\n\t\treturn AudioFileFormat.Type.AU;\n\t}\n\n/* Private method: readSound(in) */\n/**\n * Reads in the data for this sound from the specified <code>AudioInputStream</code>.\n */\n\tprivate void readSound(AudioInputStream in) {\n\t\tformat = in.getFormat();\n\t\tnChannels = format.getChannels();\n\t\tframeRate = format.getFrameRate();\n\t\tlong frameLength = in.getFrameLength();\n\t\tif (frameLength > Integer.MAX_VALUE) {\n\t\t\tthrow new ErrorException(\"SoundClip: Sound file is too large\");\n\t\t}\n\t\tframeCount = (int) frameLength;\n\t\tif (frameCount < 0) {\n\t\t\tdata = new byte[BUFFER_INCREMENT];\n\t\t} else {\n\t\t\tdata = new byte[frameCount * nChannels * 2];\n\t\t}\n\t\tint offset = 0;\n\t\tboolean eof = false;\n\t\twhile (!eof) {\n\t\t\tint bytesRemaining = data.length - offset;\n\t\t\twhile (bytesRemaining > 0) {\n\t\t\t\ttry {\n\t\t\t\t\tint nBytes = in.read(data, offset, bytesRemaining);\n\t\t\t\t\tif (nBytes == 0) {\n\t\t\t\t\t\teof = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\toffset += nBytes;\n\t\t\t\t\tbytesRemaining -= nBytes;\n\t\t\t\t} catch (IOException ex) {\n\t\t\t\t\tthrow new ErrorException(ex);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (frameCount >= 0) eof = true;\n\t\t\tif (!eof) {\n\t\t\t\tbyte[] ndata = new byte[2 * data.length];\n\t\t\t\tSystem.arraycopy(data, 0, ndata, 0, data.length);\n\t\t\t\tdata = ndata;\n\t\t\t}\n\t\t}\n\t\tif (offset < data.length && frameCount < 0) {\n\t\t\tbyte[] ndata = new byte[offset];\n\t\t\tSystem.arraycopy(data, 0, ndata, 0, offset);\n\t\t\tdata = ndata;\n\t\t}\n\t\tif (frameCount < 0) frameCount = offset / (2 * nChannels);\n\t}\n\n/* Private method: convertToPCM(in) */\n/**\n * Converts an <code>AudioInputStream</code> to a 16-bit linear PCM format.\n */\n\tprivate AudioInputStream convertToPCM(AudioInputStream in) {\n\t\tAudioFormat newFormat = in.getFormat();\n\t\tnewFormat = new AudioFormat(newFormat.getSampleRate(), 16, newFormat.getChannels(), true, true);\n\t\treturn AudioSystem.getAudioInputStream(newFormat, in);\n\t}\n\n/* Private method: getAudioInputStream(in) */\n/**\n * Creates an <code>AudioInputStream</code> from an input stream.\n */\n\tprivate AudioInputStream getAudioInputStream(InputStream in) {\n\t\ttry {\n\t\t\tif (!(in instanceof BufferedInputStream)) {\n\t\t\t\tin = new BufferedInputStream(in);\n\t\t\t}\n\t\t\treturn AudioSystem.getAudioInputStream(in);\n\t\t} catch (UnsupportedAudioFileException ex) {\n\t\t\tthrow new ErrorException(createUnsupportedFormatMessage());\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/* Private method: getAudioInputStream(file) */\n/**\n * Creates an <code>AudioInputStream</code> from a file.\n */\n\tprivate AudioInputStream getAudioInputStream(File file) {\n\t\ttry {\n\t\t\treturn AudioSystem.getAudioInputStream(file);\n\t\t} catch (UnsupportedAudioFileException ex) {\n\t\t\tthrow new ErrorException(createUnsupportedFormatMessage());\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/* Private method: createUnsupportedFormatMessage() */\n/**\n * Generates a more useful error message.\n */\n\tprivate String createUnsupportedFormatMessage() {\n\t\tint dot = soundName.lastIndexOf('.');\n\t\tif (dot == -1) return \"Unsupported audio file format\";\n\t\treturn \"The \" + soundName.substring(dot + 1) + \" format is not supported by JavaSound\";\n\t}\n\n/* Private constants */\n\tprivate static final int BYTES_PER_SAMPLE = 2;\n\tprivate static final int BUFFER_INCREMENT = 10000;\n\n/* Private instance variables */\n\tprivate AudioFormat format;\n\tprivate SoundPlayer player;\n\tprivate String soundName;\n\tprivate double clipVolume;\n\tprivate float frameRate;\n\tprivate int nChannels;\n\tprivate int frameCount;\n\tprivate int currentFrame;\n\tprivate byte[] data;\n\n}\n\n/* Package class: SoundPlayer */\n/**\n * This class implements the actual playing of a sound.  This implementation\n * uses the <code>SourceDataLine</code> model rather than the <code>Clip</code>\n * model to avoid problems with noise when a sound is stopped.\n */\nclass SoundPlayer implements Runnable {\n\n/* Constructor: SoundPlayer(sound) */\n/**\n * Creates a new player for the specified sound.\n */\n\tpublic SoundPlayer(SoundClip sound) {\n\t\tsoundClip = sound;\n\t\toldVolume = 1.0;\n\t}\n\n/* Method: play() */\n/**\n * Plays the sound once.\n */\n\tpublic void play() {\n\t\tif (thread != null) return;\n\t\tlooping = false;\n\t\tthread = new Thread(this);\n\t\tthread.start();\n\t}\n\n/* Method: loop() */\n/**\n * Plays the sound in a continuous loop.\n */\n\tpublic void loop() {\n\t\tif (thread != null) return;\n\t\tlooping = true;\n\t\tthread = new Thread(this);\n\t\tthread.start();\n\t}\n\n/* Method: stop() */\n/**\n * Stops the sound at the end of the next buffer of data.  This implementation\n * avoid the use of the <code>stop</code> method on the <code>SourceDataLine</code>,\n * which generates unacceptable noise on certain sound engines.\n */\n\tpublic void stop() {\n\t\tif (thread == null) return;\n\t\tlooping = false;\n\t\tthread = null;\n\t}\n\n/* Method: run() */\n/**\n * This method is executed when the <code>SoundPlayer</code> thread is started.\n * It writes data to the <code>SourceDataLine</code> in units of a relatively\n * small buffer, checking between each write to ensure that the thread is not\n * <code>null</code>, which is used as the signal to stop playing.  At the end\n * of the sound, the implementation writes <code>PADDING</code> bytes of zero\n * data to the mixer before stopping.  This strategy eliminates the noise\n * otherwise associated with stopping on certain sound engines.\n */\n\tpublic void run() {\n\t\tbyte[] data = soundClip.getData();\n\t\tint nChannels = soundClip.getChannelCount();\n\t\tint offset = soundClip.getFrameIndex() * nChannels * BYTES_PER_SAMPLE;\n\t\tint length = soundClip.getFrameCount() * nChannels * BYTES_PER_SAMPLE;\n\t\tSourceDataLine line = openSourceDataLine(Math.min(MAX_BUFFER_SIZE, length));\n\t\tline.start();\n\t\twhile (thread != null) {\n\t\t\tint bytesRemaining = length - offset;\n\t\t\twhile (thread != null && bytesRemaining > 0) {\n\t\t\t\ttry {\n\t\t\t\t\tsetLineVolume(line, soundClip.getVolume());\n\t\t\t\t} catch (IllegalArgumentException iae) {\n\t\t\t\t\t// sometimes setting volume fails because of out of range\n\t\t\t\t}\n\t\t\t\tint chunkSize = Math.min(MAX_BUFFER_SIZE, bytesRemaining);\n\t\t\t\tint nBytes = line.write(data, offset, chunkSize);\n\t\t\t\toffset += nBytes;\n\t\t\t\tbytesRemaining -= nBytes;\n\t\t\t}\n\t\t\tif (!looping) break;\n\t\t\toffset = 0;\n\t\t}\n\t\tif (thread == null) {\n\t\t\tsoundClip.setFrameIndex(offset / nChannels / BYTES_PER_SAMPLE);\n\t\t}\n\t\tdata = new byte[PADDING];\n\t\tline.write(data, 0, data.length);\n\t\tline.drain();\n\t\tline.stop();\n\t\tline.close();\n\t\tthread = null;\n\t}\n\n/* Private method: openSourceDataLine(bufferSize) */\n/**\n * Opens a new <code>SourceDataLine</code> for this sound.\n */\n\tprivate SourceDataLine openSourceDataLine(int bufferSize) {\n\t\ttry {\n\t\t\tAudioFormat format = soundClip.getFormat();\n\t\t\tClass<?> sourceDataLineClass = javax.sound.sampled.SourceDataLine.class;\n\t\t\tDataLine.Info info = new DataLine.Info(sourceDataLineClass, format);\n\t\t\tif (!AudioSystem.isLineSupported(info)) {\n\t\t\t\tthrow new ErrorException(\"SoundClip: Unsupported data line format\");\n\t\t\t}\n\t\t\tSourceDataLine line = (SourceDataLine) AudioSystem.getLine(info);\n\t\t\tline.open(format, bufferSize);\n\t\t\treturn line;\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n\tprivate void setLineVolume(SourceDataLine line, double volume) {\n\t\tif (oldVolume == volume) return;\n\t\toldVolume = volume;\n\t\tif (line.isControlSupported(FloatControl.Type.VOLUME)) {\n\t\t\tFloatControl volumeControl = (FloatControl) line.getControl(FloatControl.Type.VOLUME);\n\t\t\tvolumeControl.setValue((float) volume);\n\t\t} else if (line.isControlSupported(FloatControl.Type.MASTER_GAIN)) {\n\t\t\tFloatControl gainControl = (FloatControl) line.getControl(FloatControl.Type.MASTER_GAIN);\n\t\t\tdouble gain = 20 * Math.log(Math.max(volume, EPSILON)) / Math.log(10.0);\n\t\t\tgainControl.setValue((float) gain);\n\t\t}\n\t}\n\n/* Private constants */\n\tprivate static final int PADDING = 400;\n\tprivate static final int BYTES_PER_SAMPLE = 2;\n\tprivate static final int MAX_BUFFER_SIZE = 4096;\n\tprivate static final double EPSILON = 0.000001;\n\n/* Private instance variables */\n\tprivate SoundClip soundClip;\n\tprivate Thread thread;\n\tprivate boolean looping;\n\tprivate double oldVolume;\n\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/util/Timer.java",
    "content": "/*\n * @version 2017/10/22\n * - initial version\n */\n\npackage acm.util;\n\n/**\n * This class exports is useful for measuring the elapsed\n * time of a program in milliseconds over a given interval.\n */\npublic class Timer {\n\t// instance variables\n\tprivate long _startMS;\n\tprivate long _stopMS;\n\tprivate boolean _isStarted;\n\n\t/**\n\t * Constructs a new timer.\n\t * Does not auto-start.\n\t */\n\tpublic Timer() {\n\t\tthis(/* autostart */ false);\n\t}\n\n\t/**\n\t * Constructs a new timer.\n\t * If an optional bool parameter of true is passed, also starts the timer.\n\t */\n\tpublic Timer(boolean autostart) {\n\t\t_startMS = 0;\n\t\t_stopMS = 0;\n\t\t_isStarted = false;\n\t\tif (autostart) {\n\t\t\tstart();\n\t\t}\n\t}\n\n\t/**\n\t * Returns the number of milliseconds that have elapsed since this timer\n\t * was started.\n\t * Returns 0 if the timer was never started.\n\t */\n\tpublic long elapsed() {\n\t\treturn _stopMS - _startMS;\n\t}\n\n\t/**\n\t * Returns true if the timer has been started.\n\t */\n\tpublic boolean isStarted() {\n\t\treturn _isStarted;\n\t}\n\n\t/**\n\t * Starts the timer.\n\t * If the timer was already started, restarts it such that its 'elapsed'\n\t * time will be 0 at the moment of the call.\n\t */\n\tpublic void start() {\n\t\t_startMS = currentTimeMS();\n\t\t_isStarted = true;\n\t}\n\n\t/**\n\t * Stops the timer and returns the number of elapsed milliseconds.\n\t * If the timer was never started, 0 ms will be considered to have elapsed.\n\t */\n\tpublic long stop() {\n\t\t_stopMS = currentTimeMS();\n\t\tif (!_isStarted) {\n\t\t\t_startMS = _stopMS;\n\t\t}\n\t\t_isStarted = false;\n\t\treturn elapsed();\n\t}\n\n\t/**\n\t * A static utility function for getting the current time as a Unix\n\t * timestamp of milliseconds since the epoch.\n\t */\n\tpublic static long currentTimeMS() {\n\t\treturn System.currentTimeMillis();\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/acm/util/TokenScanner.java",
    "content": "package acm.util;\n\nimport java.io.*;\nimport java.util.ArrayList;\nimport java.util.Stack;\n\n// Referenced classes of package acm.util:\n//            ErrorException\n\npublic class TokenScanner\n{\n\n    public TokenScanner()\n    {\n        ignoreWhitespaceFlag = false;\n        ignoreCommentsFlag = false;\n        scanNumbersFlag = false;\n        scanStringsFlag = false;\n        cpos = 0;\n        input = null;\n        wordChars = \"\";\n        savedTokens = new Stack<String>();\n        operators = new ArrayList<String>();\n    }\n\n    public TokenScanner(String s)\n    {\n        this();\n        setInput(s);\n    }\n\n    public TokenScanner(Reader reader)\n    {\n        this();\n        setInput(reader);\n    }\n\n    public void setInput(String s)\n    {\n        setInput(((Reader) (new StringReader(s))));\n    }\n\n    public void setInput(Reader reader)\n    {\n        savedChars = \"\";\n        savedTokens.clear();\n        cpos = 0;\n        input = reader;\n    }\n\n    public boolean hasMoreTokens()\n    {\n        String s = nextToken();\n        saveToken(s);\n        return !s.isEmpty();\n    }\n\n    public String nextToken()\n    {\n        if(!savedTokens.isEmpty())\n            return (String)savedTokens.pop();\n        else\n            return scanToken();\n    }\n\n    public void saveToken(String s)\n    {\n        savedTokens.push(s);\n    }\n\n    public int getPosition()\n    {\n        if(savedTokens.isEmpty())\n            return cpos;\n        else\n            return cpos - ((String)savedTokens.peek()).length();\n    }\n\n    public void ignoreWhitespace()\n    {\n        ignoreWhitespaceFlag = true;\n    }\n\n    public void ignoreComments()\n    {\n        ignoreCommentsFlag = true;\n    }\n\n    public void scanNumbers()\n    {\n        scanNumbersFlag = true;\n    }\n\n    public void scanStrings()\n    {\n        scanStringsFlag = true;\n    }\n\n    public void addWordCharacters(String s)\n    {\n        for (int i = 0; i < s.length(); i++) {\n        \tchar ch = s.charAt(i);\n        \tif (wordChars.indexOf(ch) == -1) {\n        \t\twordChars += ch;\n        \t}\n        }\n    }\n\n    public boolean isWordCharacter(int i)\n    {\n        if(i == -1)\n            return false;\n        else\n            return Character.isLetterOrDigit(i) || wordChars.indexOf((char)i) >= 0;\n    }\n\n    public void addOperator(String s)\n    {\n        operators.add(s);\n    }\n\n    public void verifyToken(String s)\n    {\n        String s1 = nextToken();\n        if(s1.equals(s))\n        {\n            return;\n        } else\n        {\n            String s2 = (new StringBuilder()).append(\"Found \").append(s1).append(\" when expecting \").append(s).toString();\n            throw new ErrorException(s2);\n        }\n    }\n\n    public int getTokenType(String s)\n    {\n        if(s == null || s.length() == 0)\n            return -1;\n        char c = s.charAt(0);\n        if(Character.isWhitespace(c))\n            return 0;\n        if(Character.isDigit(c))\n            return 2;\n        if(c == '\"' || c == '\\'')\n            return 3;\n        return !isWordCharacter(c) ? 4 : 1;\n    }\n\n    /* Reverse-engineered from the following bytecode by Keith (htiek@cs.stanford.edu). Please let me\n     * know if I messed this up!\n     * \n     * public int getChar();\n    Code:\n       0: aload_0\n       1: dup\n       2: getfield      #6                  // Field cpos:I\n       5: iconst_1\n       6: iadd\n       7: putfield      #6                  // Field cpos:I\n      10: aload_0\n      11: getfield      #21                 // Field savedChars:Ljava/lang/String;\n      14: invokevirtual #25                 // Method java/lang/String.isEmpty:()Z\n      17: ifne          43\n      20: aload_0\n      21: getfield      #21                 // Field savedChars:Ljava/lang/String;\n      24: iconst_0\n      25: invokevirtual #33                 // Method java/lang/String.charAt:(I)C\n      28: istore_1\n      29: aload_0\n      30: aload_0\n      31: getfield      #21                 // Field savedChars:Ljava/lang/String;\n      34: iconst_1\n      35: invokevirtual #50                 // Method java/lang/String.substring:(I)Ljava/lang/String;\n      38: putfield      #21                 // Field savedChars:Ljava/lang/String;\n      41: iload_1\n      42: ireturn\n      43: aload_0\n      44: getfield      #7                  // Field input:Ljava/io/Reader;\n      47: invokevirtual #51                 // Method java/io/Reader.read:()I\n      50: ireturn\n      51: astore_1\n      52: new           #45                 // class acm/util/ErrorException\n      55: dup\n      56: aload_1\n      57: invokespecial #53                 // Method acm/util/ErrorException.\"<init>\":(Ljava/lang/Exception;)V\n      60: athrow\n    Exception table:\n       from    to  target type\n           0    42    51   Class java/io/IOException\n          43    50    51   Class java/io/IOException\n     * \n     */\n    public int getChar()\n    {\n    \ttry\n    \t{\n    \t\tcpos++;\n    \t\tif (!savedChars.isEmpty())\n    \t\t{\n    \t\t\tchar result = savedChars.charAt(0);\n    \t\t\tsavedChars = savedChars.substring(1);\n    \t\t\treturn result;\n    \t\t}\n\n    \t\treturn input.read();\n    \t}\n    \tcatch (IOException e)\n    \t{\n    \t\tthrow new ErrorException(e);\n    \t}\n    }  \n\n    public void ungetChar(int i)\n    {\n        cpos--;\n        if(input instanceof PushbackReader)\n            try\n            {\n                ((PushbackReader)input).unread(i);\n                return;\n            }\n            catch(IOException ioexception) { }\n        if(i >= 0)\n            savedChars = (new StringBuilder()).append((char)i).append(savedChars).toString();\n    }\n\n    /* Given a string containing some escape sequences, returns a new string formed by resolving all of\n     * those escape sequences. The understood escapes are\n     * \n     *    \\a  \\b  \\f  \\n   \\r   \\t   \\v   \\\"   \\'   \\\\   \\xHH  \\OOO\n     * \n     * TODO: Given the context in which this is being used, it may make sense\n     * to have this assume the encoding format is UTF-8 and always decode the\n     * string assuming that encoding. Otherwise, we have to postprocess the\n     * string to fix the UTF-8 weirdness.\n     */\n    public String getStringValue(String s)\n    {\n        String result = \"\";\n        boolean isQuoted = false;\n       \n        /* Track where we want to stop. If the string begins with a quote mark of some\n         * sort, the assumption is that it also ends with one, so we'll stop one character\n         * before then.\n         */\n        int payloadEnd = s.length();\n        if(payloadEnd > 1 && (s.charAt(0) == '\"' || s.charAt(0) == '\\''))\n        {\n            isQuoted = true;\n            payloadEnd--;\n        }\n        \n        /* Visit each character in sequence, processing escape sequences. */\n        for(int i = (isQuoted ? 1 : 0); i < payloadEnd; i++)\n        {\n            char c = s.charAt(i);\n            \n            /* Start of an escape sequence. */\n            if(c == '\\\\')\n            {\n            \t/* Look at the next character. In the course of doing so, advance the read pointer\n            \t * forward so that we don't revisit this character later on.\n            \t */\n                c = s.charAt(++i);\n                \n                /* We could be reading an octal (\\OOO) or hexadecimal (\\xHH) literal. If so, we need\n                 * to decode the digits to determine what the intended byte value is.\n                 */\n                if(Character.isDigit(c) || c == 'x')\n                {\n                \tbyte base;\n                \tint  charsInNumber;\n                \t\n                \t/* Hexadecimal. */\n                \tif (c == 'x')\n                \t{\n                \t\tbase = 16;\n                \t\tcharsInNumber = 2;\n                \t\t\n                \t\t/* Skip the 'x' itself. The payload is right after it. */\n                \t\ti++;\n                \t}\n                \t/* Octal. */\n                \telse\n                \t{\n                \t\tbase = 8;\n                \t\tcharsInNumber = 3;\n                \t}\n                \t\n                    \n                    int charValue  = 0;\n                    \n                    /* Scan forward until we hit the end of the payload or have read all the digits we want.\n                     * The \"stop early\" condition is how we handle things like \\0 appearing at the end of a\n                     * number.\n                     */\n                    for(int rangeEnd = Math.min(payloadEnd, i + charsInNumber); i < rangeEnd; i++)\n                    {\n                        c = s.charAt(i);\n                        int thisCharsValue;\n                        \n                        /* Determine the numeric value of this character. */\n                        if(Character.isDigit(c))\n                        {\n                            thisCharsValue = c - '0';\n                        }\n                        else if (base == 16 && c >= 'A' && c <= 'F')\n                        {\n                            thisCharsValue = (c - 'A') + 10;\n                        } \n                        else if (base == 16 && c >= 'a' && c <= 'f')\n                        {\n                        \tthisCharsValue = (c - 'a') + 10;\n                        }\n                        else\n                        {\n                        \tbreak; // No idea how to handle this.\n                        }\n                        \n                        /* Increase our total. */\n                        charValue = base * charValue + thisCharsValue;\n                    }\n\n                    c = (char)charValue;\n                    i--;\n                }\n                else\n                {\n                \tswitch(c)\n                \t{\n\t                \tcase 'a':  c = '\\007'; break;\n\t                \tcase 'b':  c = '\\b';   break;\n\t                \tcase 'f':  c = '\\f';   break;\n\t                \tcase 'n':  c = '\\n';   break;\n\t                \tcase 'r':  c = '\\r';   break;\n\t                \tcase 't':  c = '\\t';   break;\n\t                \tcase 'v':  c = '\\013'; break;\n\t                \tcase '\"':  c = '\"';    break;\n\t                \tcase '\\'': c = '\\'';   break;\n\t                \tcase '\\\\': c = '\\\\';   break;\n\t               \t /* default:   c = c;      break; */\n                \t}\n                }\n            }\n            result += c;\n        }\n\n        return result;\n    }\n\n    private String scanToken()\n    {\n    \t/* Grab the next character. If there isn't one, we're done. */\n        int ch = scanChar();\n        if (ch == -1)\n        {\n            return \"\";\n        }\n        \n        /* If this is a digit and we're supposed to scan numbers as strings, scan a number. */\n        if (scanNumbersFlag && Character.isDigit(ch))\n        {\n            ungetChar(ch);\n            return scanNumber();\n        }\n        \n        /* If this is part of a word, scan a whole word. */\n        if (isWordCharacter(ch))\n        {\n            ungetChar(ch);\n            return scanWord();\n        }\n        \n        /* If we're supposed to scan strings as though they're individual tokens, read\n         * a full string and return it.\n         */\n        if (scanStringsFlag && (ch == '\\'' || ch == '\\\"'))\n        {\n            ungetChar(ch);\n            return scanString();\n        }\n        \n        String s = \"\" + (char)ch;\n        \n        while (true)\n        {\n            if(!isOperatorPrefix(s))\n                break;\n            \n            int j = getChar();\n            if(j == -1)\n                break;\n            \n            s += j;\n        }\n        \n        \n        for(; s.length() > 1 && !isOperator(s); s = s.substring(0, s.length() - 1))\n            ungetChar(s.charAt(s.length() - 1));\n\n        return s;\n    }\n\n    private int scanChar()\n    {\n        int i;\nlabel0:\n        {\n            boolean flag = false;\n            boolean flag1 = false;\n            int k;\n            while (true)\n            {\n                do\n                {\n                    i = getChar();\n                }\n                while (ignoreWhitespaceFlag && Character.isWhitespace(i) && !isOperator(Character.toString((char)i)));\n                if(flag)\n                {\n                    int j = getChar();\n                    if(i == 42 && j == 47)\n                        flag = false;\n                    else\n                        ungetChar(j);\n                    continue;\n                }\n                if(flag1)\n                {\n                    if(i == 10 || i == 13)\n                        flag1 = false;\n                    continue;\n                }\n                if(!ignoreCommentsFlag || i != 47)\n                    break label0;\n                k = getChar();\n                if(k == 42)\n                {\n                    flag = true;\n                    continue;\n                }\n                if(k != 47)\n                    break;\n                flag1 = true;\n            }\n            ungetChar(k);\n        }\n        return i;\n    }\n\n    private String scanWord()\n    {\n        String s = \"\";\n        int i;\n        for(i = getChar(); isWordCharacter(i); i = getChar())\n            s = (new StringBuilder()).append(s).append((char)i).toString();\n\n        ungetChar(i);\n        return s;\n    }\n\n    private String scanNumber()\n    {\n        String result = \"\";\n        int state = INITIAL_STATE;\n        int exponentSign = 'E';\n        \n        while (true)\n        {\n            if(state == FINAL_STATE)\n                break;\n            \n            int nextChar = getChar();\n            switch(state)\n            {\n            case INITIAL_STATE:\n                if(nextChar == '0')\n                {\n                    int possibleHexMarker = getChar();\n                    if(possibleHexMarker == 'x' || possibleHexMarker == 'X')\n                    {\n                        result = \"0x\";\n                        continue;\n                    }\n                    ungetChar(possibleHexMarker);\n                }\n                state = BEFORE_DECIMAL_POINT;\n                break;\n\n            case BEFORE_DECIMAL_POINT:\n                if(nextChar == '.')\n                    state = AFTER_DECIMAL_POINT;\n                else if(nextChar == 'E' || nextChar == 'e')\n                    state = STARTING_EXPONENT;\n                else if(!Character.isDigit(nextChar))\n                    state = FINAL_STATE;\n                break;\n\n            case AFTER_DECIMAL_POINT:\n                if(nextChar == 'E' || nextChar == 'e')\n                {\n                    exponentSign = nextChar;\n                    state = STARTING_EXPONENT;\n                }\n                else if(!Character.isDigit(nextChar))\n                    state = FINAL_STATE;\n                break;\n\n            case STARTING_EXPONENT:\n                if(nextChar == '+' || nextChar == '-')\n                    state = FOUND_EXPONENT_SIGN;\n                else if(Character.isDigit(nextChar))\n                    state = SCANNING_EXPONENT;\n                else\n                    state = FINAL_STATE;\n                break;\n\n            case FOUND_EXPONENT_SIGN:\n                if(Character.isDigit(nextChar))\n                {\n                    state = SCANNING_EXPONENT;\n                }\n                else\n                {\n                    ungetChar(nextChar);\n                    nextChar = exponentSign;\n                    state = FINAL_STATE;\n                }\n                break;\n\n            case SCANNING_EXPONENT:\n                if(!Character.isDigit(nextChar))\n                    state = FINAL_STATE;\n                break;\n            }\n            if(state == FINAL_STATE)\n            {\n                ungetChar(nextChar);\n                break;\n            }\n            result += (char)nextChar;\n        }\n        return result;\n    }\n\n    /* Scans a quoted string and returns it as a unit. */\n    private String scanString()\n    {\n    \t/* The delimiter can be either ' or \", but we won't know which until we scan the first\n    \t * character.\n    \t */\n        char delimiter = (char)getChar();\n        String result = \"\" + delimiter;\n        \n        /* Keep scanning characters until we find a close quote that isn't escaped.\n         * Although normally we don't peek inside of strings, we have to do that here\n         * so that if we have a string that ends with \\\\\", we properly treat that as\n         * an escaped slash followed by a close quote.\n         */\n        while (true)\n        {\n            int ch = getChar();\n            \n            /* If this is an escape sequence start, put it, and whatever it's escaping, into the\n             * resulting string.\n             */\n            if (ch == '\\\\')\n            {\n            \tresult += (char) ch;\n            \t\n            \t/* Add the next character, if one exists. */\n            \tint next = getChar();\n            \tif (next == -1) break;\n            \t\n            \tresult += (char) next;\n            }\n            /* Otherwise, if this isn't an escape sequence and it isn't the delimiter, drop it into the result. */\n            else if (ch != -1 && ch != delimiter)\n            {\n            \tresult += (char) ch;\n            }\n            /* Otherwise, this either is the delimiter or we're out of characters. */\n            else break;\n        }\n        \n        return result + delimiter;\n    }\n\n    private boolean isOperator(String s)\n    {\n        for(int i = 0; i < operators.size(); i++)\n            if(((String)operators.get(i)).equals(s))\n                return true;\n\n        return false;\n    }\n\n    private boolean isOperatorPrefix(String s)\n    {\n        for(int i = 0; i < operators.size(); i++)\n            if(((String)operators.get(i)).startsWith(s))\n                return true;\n\n        return false;\n    }\n\n    public static final int EOF = -1;\n    public static final int SEPARATOR = 0;\n    public static final int WORD = 1;\n    public static final int NUMBER = 2;\n    public static final int STRING = 3;\n    public static final int OPERATOR = 4;\n    private static final int INITIAL_STATE = 0;\n    private static final int BEFORE_DECIMAL_POINT = 1;\n    private static final int AFTER_DECIMAL_POINT = 2;\n    private static final int STARTING_EXPONENT = 3;\n    private static final int FOUND_EXPONENT_SIGN = 4;\n    private static final int SCANNING_EXPONENT = 5;\n    private static final int FINAL_STATE = 6;\n    private Reader input;\n    private String wordChars;\n    private String savedChars;\n    private Stack<String> savedTokens;\n    private ArrayList<String> operators;\n    private int cpos;\n    private boolean ignoreWhitespaceFlag;\n    private boolean ignoreCommentsFlag;\n    private boolean scanNumbersFlag;\n    private boolean scanStringsFlag;\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/javazoom/jlgui/basicplayer/BasicController.java",
    "content": "/*\r\n * BasicController.\r\n * \r\n * JavaZOOM : jlgui@javazoom.net\r\n *            http://www.javazoom.net\r\n *\r\n *-----------------------------------------------------------------------\r\n *   This program is free software; you can redistribute it and/or modify\r\n *   it under the terms of the GNU Library General Public License as published\r\n *   by the Free Software Foundation; either version 2 of the License, or\r\n *   (at your option) any later version.\r\n *\r\n *   This program is distributed in the hope that it will be useful,\r\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n *   GNU Library General Public License for more details.\r\n *\r\n *   You should have received a copy of the GNU Library General Public\r\n *   License along with this program; if not, write to the Free Software\r\n *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\r\n *----------------------------------------------------------------------\r\n */\r\npackage javazoom.jlgui.basicplayer;\r\n\r\nimport java.io.File;\r\nimport java.io.InputStream;\r\nimport java.net.URL;\r\n\r\n/**\r\n * This interface defines player controls available.  \r\n */\r\npublic interface BasicController\r\n{\r\n    /**\r\n     * Open inputstream to play.\r\n     * @param in\r\n     * @throws BasicPlayerException\r\n     */\r\n    public void open(InputStream in) throws BasicPlayerException;\r\n\r\n    /**\r\n     * Open file to play.\r\n     * @param file\r\n     * @throws BasicPlayerException\r\n     */\r\n    public void open(File file) throws BasicPlayerException;\r\n\r\n    /**\r\n     * Open URL to play.\r\n     * @param url\r\n     * @throws BasicPlayerException\r\n     */\r\n    public void open(URL url) throws BasicPlayerException;\r\n\r\n    /**\r\n     * Skip bytes.\r\n     * @param bytes\r\n     * @return bytes skipped according to audio frames constraint.\r\n     * @throws BasicPlayerException\r\n     */\r\n    public long seek(long bytes) throws BasicPlayerException;\r\n\r\n    /**\r\n     * Start playback.\r\n     * @throws BasicPlayerException\r\n     */\r\n    public void play() throws BasicPlayerException;\r\n\r\n    /**\r\n     * Stop playback. \r\n     * @throws BasicPlayerException\r\n     */\r\n    public void stop() throws BasicPlayerException;\r\n\r\n    /**\r\n     * Pause playback. \r\n     * @throws BasicPlayerException\r\n     */\r\n    public void pause() throws BasicPlayerException;\r\n\r\n    /**\r\n     * Resume playback. \r\n     * @throws BasicPlayerException\r\n     */\r\n    public void resume() throws BasicPlayerException;\r\n\r\n    /**\r\n     * Sets Pan (Balance) value.\r\n     * Linear scale : -1.0 <--> +1.0\r\n     * @param pan value from -1.0 to +1.0\r\n     * @throws BasicPlayerException\r\n     */\r\n    public void setPan(double pan) throws BasicPlayerException;\r\n\r\n    /**\r\n     * Sets Gain value.\r\n     * Linear scale 0.0  <-->  1.0\r\n     * @param gain value from 0.0 to 1.0\r\n     * @throws BasicPlayerException\r\n     */\r\n    public void setGain(double gain) throws BasicPlayerException;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/javazoom/jlgui/basicplayer/BasicPlayer.java",
    "content": "/*\r\n * BasicPlayer.\r\n *\r\n * JavaZOOM : jlgui@javazoom.net\r\n *            http://www.javazoom.net\r\n *\r\n *-----------------------------------------------------------------------\r\n *   This program is free software; you can redistribute it and/or modify\r\n *   it under the terms of the GNU Library General Public License as published\r\n *   by the Free Software Foundation; either version 2 of the License, or\r\n *   (at your option) any later version.\r\n *\r\n *   This program is distributed in the hope that it will be useful,\r\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n *   GNU Library General Public License for more details.\r\n *\r\n *   You should have received a copy of the GNU Library General Public\r\n *   License along with this program; if not, write to the Free Software\r\n *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\r\n *----------------------------------------------------------------------\r\n */\r\npackage javazoom.jlgui.basicplayer;\r\n\r\nimport java.io.File;\r\nimport java.io.IOException;\r\nimport java.io.InputStream;\r\nimport java.net.URL;\r\nimport java.util.ArrayList;\r\nimport java.util.Collection;\r\nimport java.util.HashMap;\r\nimport java.util.Iterator;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport javax.sound.sampled.AudioFileFormat;\r\nimport javax.sound.sampled.AudioFormat;\r\nimport javax.sound.sampled.AudioInputStream;\r\nimport javax.sound.sampled.AudioSystem;\r\nimport javax.sound.sampled.Control;\r\nimport javax.sound.sampled.DataLine;\r\nimport javax.sound.sampled.FloatControl;\r\nimport javax.sound.sampled.Line;\r\nimport javax.sound.sampled.LineUnavailableException;\r\nimport javax.sound.sampled.Mixer;\r\nimport javax.sound.sampled.SourceDataLine;\r\nimport javax.sound.sampled.UnsupportedAudioFileException;\r\n//import javazoom.spi.PropertiesContainer;\r\n//import org.tritonus.share.sampled.TAudioFormat;\r\n//import org.tritonus.share.sampled.file.TAudioFileFormat;\r\n\r\n/**\r\n * BasicPlayer is a threaded simple player class based on JavaSound API. It has\r\n * been successfully tested under J2SE 1.3.x, 1.4.x and 1.5.x.\r\n */\r\n@SuppressWarnings({ \"rawtypes\", \"unchecked\" })\r\npublic class BasicPlayer implements BasicController, Runnable {\r\n\tpublic static int EXTERNAL_BUFFER_SIZE = 4000 * 4;\r\n\tpublic static int SKIP_INACCURACY_SIZE = 1200;\r\n\tprotected Thread m_thread = null;\r\n\tprotected Object m_dataSource;\r\n\tprotected AudioInputStream m_encodedaudioInputStream;\r\n\tprotected int encodedLength = -1;\r\n\tprotected AudioInputStream m_audioInputStream;\r\n\tprotected AudioFileFormat m_audioFileFormat;\r\n\tprotected SourceDataLine m_line;\r\n\tprotected FloatControl m_gainControl;\r\n\tprotected FloatControl m_panControl;\r\n\tprotected String m_mixerName = null;\r\n\tprivate int m_lineCurrentBufferSize = -1;\r\n\tprivate int lineBufferSize = -1;\r\n\tprivate long threadSleep = -1;\r\n\t/**\r\n\t * These variables are used to distinguish stopped, paused, playing states.\r\n\t * We need them to control Thread.\r\n\t */\r\n\tpublic static final int UNKNOWN = -1;\r\n\tpublic static final int PLAYING = 0;\r\n\tpublic static final int PAUSED = 1;\r\n\tpublic static final int STOPPED = 2;\r\n\tpublic static final int OPENED = 3;\r\n\tpublic static final int SEEKING = 4;\r\n\tprivate int m_status = UNKNOWN;\r\n\t// Listeners to be notified.\r\n\tprivate Collection m_listeners = null;\r\n\tprivate Map empty_map = new HashMap();\r\n\r\n\t/**\r\n\t * Constructs a Basic Player.\r\n\t */\r\n\tpublic BasicPlayer() {\r\n\t\tm_dataSource = null;\r\n\t\tm_listeners = new ArrayList();\r\n\t\treset();\r\n\t}\r\n\r\n\tprotected void reset() {\r\n\t\tm_status = UNKNOWN;\r\n\t\tif (m_audioInputStream != null) {\r\n\t\t\tsynchronized (m_audioInputStream) {\r\n\t\t\t\tcloseStream();\r\n\t\t\t}\r\n\t\t}\r\n\t\tm_audioInputStream = null;\r\n\t\tm_audioFileFormat = null;\r\n\t\tm_encodedaudioInputStream = null;\r\n\t\tencodedLength = -1;\r\n\t\tif (m_line != null) {\r\n\t\t\tm_line.stop();\r\n\t\t\tm_line.close();\r\n\t\t\tm_line = null;\r\n\t\t}\r\n\t\tm_gainControl = null;\r\n\t\tm_panControl = null;\r\n\t}\r\n\r\n\t/**\r\n\t * Add listener to be notified.\r\n\t * \r\n\t * @param bpl\r\n\t */\r\n\tpublic void addBasicPlayerListener(BasicPlayerListener bpl) {\r\n\t\tm_listeners.add(bpl);\r\n\t}\r\n\r\n\t/**\r\n\t * Return registered listeners.\r\n\t * \r\n\t * @return\r\n\t */\r\n\tpublic Collection getListeners() {\r\n\t\treturn m_listeners;\r\n\t}\r\n\r\n\t/**\r\n\t * Remove registered listener.\r\n\t * \r\n\t * @param bpl\r\n\t */\r\n\tpublic void removeBasicPlayerListener(BasicPlayerListener bpl) {\r\n\t\tif (m_listeners != null) {\r\n\t\t\tm_listeners.remove(bpl);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Set SourceDataLine buffer size. It affects audio latency. (the delay\r\n\t * between line.write(data) and real sound). Minimum value should be over\r\n\t * 10000 bytes.\r\n\t * \r\n\t * @param size\r\n\t *            -1 means maximum buffer size available.\r\n\t */\r\n\tpublic void setLineBufferSize(int size) {\r\n\t\tlineBufferSize = size;\r\n\t}\r\n\r\n\t/**\r\n\t * Return SourceDataLine buffer size.\r\n\t * \r\n\t * @return -1 maximum buffer size.\r\n\t */\r\n\tpublic int getLineBufferSize() {\r\n\t\treturn lineBufferSize;\r\n\t}\r\n\r\n\t/**\r\n\t * Return SourceDataLine current buffer size.\r\n\t * \r\n\t * @return\r\n\t */\r\n\tpublic int getLineCurrentBufferSize() {\r\n\t\treturn m_lineCurrentBufferSize;\r\n\t}\r\n\r\n\t/**\r\n\t * Set thread sleep time. Default is -1 (no sleep time).\r\n\t * \r\n\t * @param time\r\n\t *            in milliseconds.\r\n\t */\r\n\tpublic void setSleepTime(long time) {\r\n\t\tthreadSleep = time;\r\n\t}\r\n\r\n\t/**\r\n\t * Return thread sleep time in milliseconds.\r\n\t * \r\n\t * @return -1 means no sleep time.\r\n\t */\r\n\tpublic long getSleepTime() {\r\n\t\treturn threadSleep;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns BasicPlayer status.\r\n\t * \r\n\t * @return status\r\n\t */\r\n\tpublic int getStatus() {\r\n\t\treturn m_status;\r\n\t}\r\n\r\n\t/**\r\n\t * Open file to play.\r\n\t */\r\n\tpublic void open(File file) throws BasicPlayerException {\r\n\t\tif (file != null) {\r\n\t\t\tm_dataSource = file;\r\n\t\t\tinitAudioInputStream();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Open URL to play.\r\n\t */\r\n\tpublic void open(URL url) throws BasicPlayerException {\r\n\t\tif (url != null) {\r\n\t\t\tm_dataSource = url;\r\n\t\t\tinitAudioInputStream();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Open inputstream to play.\r\n\t */\r\n\tpublic void open(InputStream inputStream) throws BasicPlayerException {\r\n\t\tif (inputStream != null) {\r\n\t\t\tm_dataSource = inputStream;\r\n\t\t\tinitAudioInputStream();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Inits AudioInputStream and AudioFileFormat from the data source.\r\n\t * \r\n\t * @throws BasicPlayerException\r\n\t */\r\n\tprotected void initAudioInputStream() throws BasicPlayerException {\r\n\t\ttry {\r\n\t\t\treset();\r\n\t\t\tnotifyEvent(BasicPlayerEvent.OPENING, getEncodedStreamPosition(),\r\n\t\t\t\t\t-1, m_dataSource);\r\n\t\t\tif (m_dataSource instanceof URL) {\r\n\t\t\t\tinitAudioInputStream((URL) m_dataSource);\r\n\t\t\t} else if (m_dataSource instanceof File) {\r\n\t\t\t\tinitAudioInputStream((File) m_dataSource);\r\n\t\t\t} else if (m_dataSource instanceof InputStream) {\r\n\t\t\t\tinitAudioInputStream((InputStream) m_dataSource);\r\n\t\t\t}\r\n\t\t\tcreateLine();\r\n\t\t\t// Notify listeners with AudioFileFormat properties.\r\n\t\t\tMap properties = null;\r\n\t\t\t// if (m_audioFileFormat instanceof TAudioFileFormat)\r\n\t\t\t// {\r\n\t\t\t// // Tritonus SPI compliant audio file format.\r\n\t\t\t// properties = ((TAudioFileFormat) m_audioFileFormat).properties();\r\n\t\t\t// // Clone the Map because it is not mutable.\r\n\t\t\t// properties = deepCopy(properties);\r\n\t\t\t// }\r\n\t\t\t// else\r\n\t\t\tproperties = new HashMap();\r\n\t\t\t// Add JavaSound properties.\r\n\t\t\tif (m_audioFileFormat.getByteLength() > 0)\r\n\t\t\t\tproperties.put(\"audio.length.bytes\", Integer.valueOf(\r\n\t\t\t\t\t\tm_audioFileFormat.getByteLength()));\r\n\t\t\tif (m_audioFileFormat.getFrameLength() > 0)\r\n\t\t\t\tproperties.put(\"audio.length.frames\", Integer.valueOf(\r\n\t\t\t\t\t\tm_audioFileFormat.getFrameLength()));\r\n\t\t\tif (m_audioFileFormat.getType() != null)\r\n\t\t\t\tproperties.put(\"audio.type\",\r\n\t\t\t\t\t\t(m_audioFileFormat.getType().toString()));\r\n\t\t\t// Audio format.\r\n\t\t\tAudioFormat audioFormat = m_audioFileFormat.getFormat();\r\n\t\t\tif (audioFormat.getFrameRate() > 0)\r\n\t\t\t\tproperties.put(\"audio.framerate.fps\",\r\n\t\t\t\t\t\tFloat.valueOf(audioFormat.getFrameRate()));\r\n\t\t\tif (audioFormat.getFrameSize() > 0)\r\n\t\t\t\tproperties.put(\"audio.framesize.bytes\",\r\n\t\t\t\t\t\tInteger.valueOf(audioFormat.getFrameSize()));\r\n\t\t\tif (audioFormat.getSampleRate() > 0)\r\n\t\t\t\tproperties.put(\"audio.samplerate.hz\",\r\n\t\t\t\t\t\tFloat.valueOf(audioFormat.getSampleRate()));\r\n\t\t\tif (audioFormat.getSampleSizeInBits() > 0)\r\n\t\t\t\tproperties.put(\"audio.samplesize.bits\",\r\n\t\t\t\t\t\tInteger.valueOf(audioFormat.getSampleSizeInBits()));\r\n\t\t\tif (audioFormat.getChannels() > 0)\r\n\t\t\t\tproperties.put(\"audio.channels\",\r\n\t\t\t\t\t\tInteger.valueOf(audioFormat.getChannels()));\r\n\t\t\t// if (audioFormat instanceof TAudioFormat)\r\n\t\t\t// {\r\n\t\t\t// // Tritonus SPI compliant audio format.\r\n\t\t\t// Map addproperties = ((TAudioFormat) audioFormat).properties();\r\n\t\t\t// properties.putAll(addproperties);\r\n\t\t\t// }\r\n\t\t\t// Add SourceDataLine\r\n\t\t\tproperties.put(\"basicplayer.sourcedataline\", m_line);\r\n\t\t\tIterator it = m_listeners.iterator();\r\n\t\t\twhile (it.hasNext()) {\r\n\t\t\t\tBasicPlayerListener bpl = (BasicPlayerListener) it.next();\r\n\t\t\t\tbpl.opened(m_dataSource, properties);\r\n\t\t\t}\r\n\t\t\tm_status = OPENED;\r\n\t\t\tnotifyEvent(BasicPlayerEvent.OPENED, getEncodedStreamPosition(),\r\n\t\t\t\t\t-1, null);\r\n\t\t} catch (LineUnavailableException e) {\r\n\t\t\tthrow new BasicPlayerException(e);\r\n\t\t} catch (UnsupportedAudioFileException e) {\r\n\t\t\tthrow new BasicPlayerException(e);\r\n\t\t} catch (IOException e) {\r\n\t\t\tthrow new BasicPlayerException(e);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Inits Audio ressources from file.\r\n\t */\r\n\tprotected void initAudioInputStream(File file)\r\n\t\t\tthrows UnsupportedAudioFileException, IOException {\r\n\t\tm_audioInputStream = AudioSystem.getAudioInputStream(file);\r\n\t\tm_audioFileFormat = AudioSystem.getAudioFileFormat(file);\r\n\t}\r\n\r\n\t/**\r\n\t * Inits Audio ressources from URL.\r\n\t */\r\n\tprotected void initAudioInputStream(URL url)\r\n\t\t\tthrows UnsupportedAudioFileException, IOException {\r\n\t\tm_audioInputStream = AudioSystem.getAudioInputStream(url);\r\n\t\tm_audioFileFormat = AudioSystem.getAudioFileFormat(url);\r\n\t}\r\n\r\n\t/**\r\n\t * Inits Audio ressources from InputStream.\r\n\t */\r\n\tprotected void initAudioInputStream(InputStream inputStream)\r\n\t\t\tthrows UnsupportedAudioFileException, IOException {\r\n\t\tm_audioInputStream = AudioSystem.getAudioInputStream(inputStream);\r\n\t\tm_audioFileFormat = AudioSystem.getAudioFileFormat(inputStream);\r\n\t}\r\n\r\n\t/**\r\n\t * Inits Audio ressources from AudioSystem.<br>\r\n\t */\r\n\tprotected void initLine() throws LineUnavailableException {\r\n\t\tif (m_line == null)\r\n\t\t\tcreateLine();\r\n\t\tif (!m_line.isOpen()) {\r\n\t\t\topenLine();\r\n\t\t} else {\r\n\t\t\tAudioFormat lineAudioFormat = m_line.getFormat();\r\n\t\t\tAudioFormat audioInputStreamFormat = m_audioInputStream == null ? null\r\n\t\t\t\t\t: m_audioInputStream.getFormat();\r\n\t\t\tif (!lineAudioFormat.equals(audioInputStreamFormat)) {\r\n\t\t\t\tm_line.close();\r\n\t\t\t\topenLine();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Inits a DateLine.<br>\r\n\t * \r\n\t * We check if the line supports Gain and Pan controls.\r\n\t * \r\n\t * From the AudioInputStream, i.e. from the sound file, we fetch information\r\n\t * about the format of the audio data. These information include the\r\n\t * sampling frequency, the number of channels and the size of the samples.\r\n\t * There information are needed to ask JavaSound for a suitable output line\r\n\t * for this audio file. Furthermore, we have to give JavaSound a hint about\r\n\t * how big the internal buffer for the line should be. Here, we say\r\n\t * AudioSystem.NOT_SPECIFIED, signaling that we don't care about the exact\r\n\t * size. JavaSound will use some default value for the buffer size.\r\n\t */\r\n\tprotected void createLine() throws LineUnavailableException {\r\n\t\tif (m_line == null) {\r\n\t\t\tAudioFormat sourceFormat = m_audioInputStream.getFormat();\r\n\t\t\tint nSampleSizeInBits = sourceFormat.getSampleSizeInBits();\r\n\t\t\tif (nSampleSizeInBits <= 0)\r\n\t\t\t\tnSampleSizeInBits = 16;\r\n\t\t\tif ((sourceFormat.getEncoding() == AudioFormat.Encoding.ULAW)\r\n\t\t\t\t\t|| (sourceFormat.getEncoding() == AudioFormat.Encoding.ALAW))\r\n\t\t\t\tnSampleSizeInBits = 16;\r\n\t\t\tif (nSampleSizeInBits != 8)\r\n\t\t\t\tnSampleSizeInBits = 16;\r\n\t\t\tAudioFormat targetFormat = new AudioFormat(\r\n\t\t\t\t\tAudioFormat.Encoding.PCM_SIGNED,\r\n\t\t\t\t\tsourceFormat.getSampleRate(), nSampleSizeInBits,\r\n\t\t\t\t\tsourceFormat.getChannels(), sourceFormat.getChannels()\r\n\t\t\t\t\t\t\t* (nSampleSizeInBits / 8),\r\n\t\t\t\t\tsourceFormat.getSampleRate(), false);\r\n\t\t\t// Keep a reference on encoded stream to progress notification.\r\n\t\t\tm_encodedaudioInputStream = m_audioInputStream;\r\n\t\t\ttry {\r\n\t\t\t\t// Get total length in bytes of the encoded stream.\r\n\t\t\t\tencodedLength = m_encodedaudioInputStream.available();\r\n\t\t\t} catch (IOException e) {\r\n\t\t\t\t// log.error(\"Cannot get m_encodedaudioInputStream.available()\",\r\n\t\t\t\t// e);\r\n\t\t\t}\r\n\t\t\t// Create decoded stream.\r\n\t\t\tm_audioInputStream = AudioSystem.getAudioInputStream(targetFormat,\r\n\t\t\t\t\tm_audioInputStream);\r\n\t\t\tAudioFormat audioFormat = m_audioInputStream.getFormat();\r\n\t\t\tDataLine.Info info = new DataLine.Info(SourceDataLine.class,\r\n\t\t\t\t\taudioFormat, AudioSystem.NOT_SPECIFIED);\r\n\t\t\tMixer mixer = getMixer(m_mixerName);\r\n\t\t\tif (mixer != null) {\r\n\t\t\t\tm_line = (SourceDataLine) mixer.getLine(info);\r\n\t\t\t} else {\r\n\t\t\t\tm_line = (SourceDataLine) AudioSystem.getLine(info);\r\n\t\t\t\tm_mixerName = null;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Opens the line.\r\n\t */\r\n\tprotected void openLine() throws LineUnavailableException {\r\n\t\tif (m_line != null) {\r\n\t\t\tAudioFormat audioFormat = m_audioInputStream.getFormat();\r\n\t\t\tint buffersize = lineBufferSize;\r\n\t\t\tif (buffersize <= 0)\r\n\t\t\t\tbuffersize = m_line.getBufferSize();\r\n\t\t\tm_lineCurrentBufferSize = buffersize;\r\n\t\t\tm_line.open(audioFormat, buffersize);\r\n\t\t\t/*-- Display supported controls --*/\r\n\t\t\tControl[] c = m_line.getControls();\r\n\t\t\tfor (int p = 0; p < c.length; p++) {\r\n\t\t\t}\r\n\t\t\t/*-- Is Gain Control supported ? --*/\r\n\t\t\tif (m_line.isControlSupported(FloatControl.Type.MASTER_GAIN)) {\r\n\t\t\t\tm_gainControl = (FloatControl) m_line\r\n\t\t\t\t\t\t.getControl(FloatControl.Type.MASTER_GAIN);\r\n\t\t\t}\r\n\t\t\t/*-- Is Pan control supported ? --*/\r\n\t\t\tif (m_line.isControlSupported(FloatControl.Type.PAN)) {\r\n\t\t\t\tm_panControl = (FloatControl) m_line\r\n\t\t\t\t\t\t.getControl(FloatControl.Type.PAN);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Stops the playback.<br>\r\n\t * \r\n\t * Player Status = STOPPED.<br>\r\n\t * Thread should free Audio ressources.\r\n\t */\r\n\tprotected void stopPlayback() {\r\n\t\tif ((m_status == PLAYING) || (m_status == PAUSED)) {\r\n\t\t\tif (m_line != null) {\r\n\t\t\t\tm_line.flush();\r\n\t\t\t\tm_line.stop();\r\n\t\t\t}\r\n\t\t\tm_status = STOPPED;\r\n\t\t\tnotifyEvent(BasicPlayerEvent.STOPPED, getEncodedStreamPosition(),\r\n\t\t\t\t\t-1, null);\r\n\t\t\tsynchronized (m_audioInputStream) {\r\n\t\t\t\tcloseStream();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Pauses the playback.<br>\r\n\t * \r\n\t * Player Status = PAUSED.\r\n\t */\r\n\tprotected void pausePlayback() {\r\n\t\tif (m_line != null) {\r\n\t\t\tif (m_status == PLAYING) {\r\n\t\t\t\tm_line.flush();\r\n\t\t\t\tm_line.stop();\r\n\t\t\t\tm_status = PAUSED;\r\n\t\t\t\tnotifyEvent(BasicPlayerEvent.PAUSED,\r\n\t\t\t\t\t\tgetEncodedStreamPosition(), -1, null);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Resumes the playback.<br>\r\n\t * \r\n\t * Player Status = PLAYING.\r\n\t */\r\n\tprotected void resumePlayback() {\r\n\t\tif (m_line != null) {\r\n\t\t\tif (m_status == PAUSED) {\r\n\t\t\t\tm_line.start();\r\n\t\t\t\tm_status = PLAYING;\r\n\t\t\t\tnotifyEvent(BasicPlayerEvent.RESUMED,\r\n\t\t\t\t\t\tgetEncodedStreamPosition(), -1, null);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Starts playback.\r\n\t */\r\n\tprotected void startPlayback() throws BasicPlayerException {\r\n\t\tif (m_status == STOPPED)\r\n\t\t\tinitAudioInputStream();\r\n\t\tif (m_status == OPENED) {\r\n\t\t\tif (!(m_thread == null || !m_thread.isAlive())) {\r\n\t\t\t\tint cnt = 0;\r\n\t\t\t\twhile (m_status != OPENED) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tif (m_thread != null) {\r\n\t\t\t\t\t\t\tcnt++;\r\n\t\t\t\t\t\t\tThread.sleep(1000);\r\n\t\t\t\t\t\t\tif (cnt > 2) {\r\n\t\t\t\t\t\t\t\tm_thread.interrupt();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} catch (InterruptedException e) {\r\n\t\t\t\t\t\tthrow new BasicPlayerException(\r\n\t\t\t\t\t\t\t\tBasicPlayerException.WAITERROR, e);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// Open SourceDataLine.\r\n\t\t\ttry {\r\n\t\t\t\tinitLine();\r\n\t\t\t} catch (LineUnavailableException e) {\r\n\t\t\t\tthrow new BasicPlayerException(\r\n\t\t\t\t\t\tBasicPlayerException.CANNOTINITLINE, e);\r\n\t\t\t}\r\n\t\t\tm_thread = new Thread(this, \"BasicPlayer\");\r\n\t\t\tm_thread.start();\r\n\t\t\tif (m_line != null) {\r\n\t\t\t\tm_line.start();\r\n\t\t\t\tm_status = PLAYING;\r\n\t\t\t\tnotifyEvent(BasicPlayerEvent.PLAYING,\r\n\t\t\t\t\t\tgetEncodedStreamPosition(), -1, null);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Main loop.\r\n\t * \r\n\t * Player Status == STOPPED || SEEKING => End of Thread + Freeing Audio\r\n\t * Ressources.<br>\r\n\t * Player Status == PLAYING => Audio stream data sent to Audio line.<br>\r\n\t * Player Status == PAUSED => Waiting for another status.\r\n\t */\r\n\tpublic void run() {\r\n\t\tint nBytesRead = 1;\r\n\t\tbyte[] abData = new byte[EXTERNAL_BUFFER_SIZE];\r\n\t\t// Lock stream while playing.\r\n\t\tsynchronized (m_audioInputStream) {\r\n\t\t\t// Main play/pause loop.\r\n\t\t\twhile ((nBytesRead != -1) && (m_status != STOPPED)\r\n\t\t\t\t\t&& (m_status != SEEKING) && (m_status != UNKNOWN)) {\r\n\t\t\t\tif (m_status == PLAYING) {\r\n\t\t\t\t\t// Play.\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tnBytesRead = m_audioInputStream.read(abData, 0,\r\n\t\t\t\t\t\t\t\tabData.length);\r\n\t\t\t\t\t\tif (nBytesRead >= 0) {\r\n\t\t\t\t\t\t\tbyte[] pcm = new byte[nBytesRead];\r\n\t\t\t\t\t\t\tSystem.arraycopy(abData, 0, pcm, 0, nBytesRead);\r\n\t\t\t\t\t\t\tm_line.write(abData, 0, nBytesRead);\r\n\t\t\t\t\t\t\t// Compute position in bytes in encoded stream.\r\n\t\t\t\t\t\t\tint nEncodedBytes = getEncodedStreamPosition();\r\n\t\t\t\t\t\t\t// Notify listeners\r\n\t\t\t\t\t\t\tIterator it = m_listeners.iterator();\r\n\t\t\t\t\t\t\twhile (it.hasNext()) {\r\n\t\t\t\t\t\t\t\tBasicPlayerListener bpl = (BasicPlayerListener) it\r\n\t\t\t\t\t\t\t\t\t\t.next();\r\n\t\t\t\t\t\t\t\t// if (m_audioInputStream instanceof\r\n\t\t\t\t\t\t\t\t// PropertiesContainer)\r\n\t\t\t\t\t\t\t\t// {\r\n\t\t\t\t\t\t\t\t// // Pass audio parameters such as instant\r\n\t\t\t\t\t\t\t\t// bitrate, ...\r\n\t\t\t\t\t\t\t\t// Map properties = ((PropertiesContainer)\r\n\t\t\t\t\t\t\t\t// m_audioInputStream).properties();\r\n\t\t\t\t\t\t\t\t// bpl.progress(nEncodedBytes,\r\n\t\t\t\t\t\t\t\t// m_line.getMicrosecondPosition(), pcm,\r\n\t\t\t\t\t\t\t\t// properties);\r\n\t\t\t\t\t\t\t\t// }\r\n\t\t\t\t\t\t\t\t// else\r\n\t\t\t\t\t\t\t\tbpl.progress(nEncodedBytes,\r\n\t\t\t\t\t\t\t\t\t\tm_line.getMicrosecondPosition(), pcm,\r\n\t\t\t\t\t\t\t\t\t\tempty_map);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} catch (IOException e) {\r\n\t\t\t\t\t\tm_status = STOPPED;\r\n\t\t\t\t\t\tnotifyEvent(BasicPlayerEvent.STOPPED,\r\n\t\t\t\t\t\t\t\tgetEncodedStreamPosition(), -1, null);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// Nice CPU usage.\r\n\t\t\t\t\tif (threadSleep > 0) {\r\n\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\tThread.sleep(threadSleep);\r\n\t\t\t\t\t\t} catch (InterruptedException e) {\r\n\t\t\t\t\t\t\t// log.error(\"Thread cannot sleep(\" + threadSleep +\r\n\t\t\t\t\t\t\t// \")\", e);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Pause\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tThread.sleep(1000);\r\n\t\t\t\t\t} catch (InterruptedException e) {\r\n\t\t\t\t\t\t// log.error(\"Thread cannot sleep(1000)\", e);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// Free audio resources.\r\n\t\t\tif (m_line != null) {\r\n\t\t\t\tm_line.drain();\r\n\t\t\t\tm_line.stop();\r\n\t\t\t\tm_line.close();\r\n\t\t\t\tm_line = null;\r\n\t\t\t}\r\n\t\t\t// Notification of \"End Of Media\"\r\n\t\t\tif (nBytesRead == -1) {\r\n\t\t\t\tnotifyEvent(BasicPlayerEvent.EOM, getEncodedStreamPosition(),\r\n\t\t\t\t\t\t-1, null);\r\n\t\t\t}\r\n\t\t\t// Close stream.\r\n\t\t\tcloseStream();\r\n\t\t}\r\n\t\tm_status = STOPPED;\r\n\t\tnotifyEvent(BasicPlayerEvent.STOPPED, getEncodedStreamPosition(), -1,\r\n\t\t\t\tnull);\r\n\t}\r\n\r\n\t/**\r\n\t * Skip bytes in the File inputstream. It will skip N frames matching to\r\n\t * bytes, so it will never skip given bytes length exactly.\r\n\t * \r\n\t * @param bytes\r\n\t * @return value>0 for File and value=0 for URL and InputStream\r\n\t * @throws BasicPlayerException\r\n\t */\r\n\tprotected long skipBytes(long bytes) throws BasicPlayerException {\r\n\t\tlong totalSkipped = 0;\r\n\t\tif (m_dataSource instanceof File) {\r\n\t\t\tint previousStatus = m_status;\r\n\t\t\tm_status = SEEKING;\r\n\t\t\tlong skipped = 0;\r\n\t\t\ttry {\r\n\t\t\t\tsynchronized (m_audioInputStream) {\r\n\t\t\t\t\tnotifyEvent(BasicPlayerEvent.SEEKING,\r\n\t\t\t\t\t\t\tgetEncodedStreamPosition(), -1, null);\r\n\t\t\t\t\tinitAudioInputStream();\r\n\t\t\t\t\tif (m_audioInputStream != null) {\r\n\t\t\t\t\t\t// Loop until bytes are really skipped.\r\n\t\t\t\t\t\twhile (totalSkipped < (bytes - SKIP_INACCURACY_SIZE)) {\r\n\t\t\t\t\t\t\tskipped = m_audioInputStream.skip(bytes\r\n\t\t\t\t\t\t\t\t\t- totalSkipped);\r\n\t\t\t\t\t\t\tif (skipped == 0)\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\ttotalSkipped = totalSkipped + skipped;\r\n\t\t\t\t\t\t\tif (totalSkipped == -1)\r\n\t\t\t\t\t\t\t\tthrow new BasicPlayerException(\r\n\t\t\t\t\t\t\t\t\t\tBasicPlayerException.SKIPNOTSUPPORTED);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tnotifyEvent(BasicPlayerEvent.SEEKED,\r\n\t\t\t\t\t\tgetEncodedStreamPosition(), -1, null);\r\n\t\t\t\tm_status = OPENED;\r\n\t\t\t\tif (previousStatus == PLAYING)\r\n\t\t\t\t\tstartPlayback();\r\n\t\t\t\telse if (previousStatus == PAUSED) {\r\n\t\t\t\t\tstartPlayback();\r\n\t\t\t\t\tpausePlayback();\r\n\t\t\t\t}\r\n\t\t\t} catch (IOException e) {\r\n\t\t\t\tthrow new BasicPlayerException(e);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn totalSkipped;\r\n\t}\r\n\r\n\t/**\r\n\t * Notify listeners about a BasicPlayerEvent.\r\n\t * \r\n\t * @param code\r\n\t *            event code.\r\n\t * @param position\r\n\t *            in the stream when the event occurs.\r\n\t */\r\n\tprotected void notifyEvent(int code, int position, double value,\r\n\t\t\tObject description) {\r\n\t\tBasicPlayerEventLauncher trigger = new BasicPlayerEventLauncher(code,\r\n\t\t\t\tposition, value, description, new ArrayList(m_listeners), this);\r\n\t\ttrigger.start();\r\n\t}\r\n\r\n\tprotected int getEncodedStreamPosition() {\r\n\t\tint nEncodedBytes = -1;\r\n\t\tif (m_dataSource instanceof File) {\r\n\t\t\ttry {\r\n\t\t\t\tif (m_encodedaudioInputStream != null) {\r\n\t\t\t\t\tnEncodedBytes = encodedLength\r\n\t\t\t\t\t\t\t- m_encodedaudioInputStream.available();\r\n\t\t\t\t}\r\n\t\t\t} catch (IOException e) {\r\n\t\t\t\t// log.debug(\"Cannot get m_encodedaudioInputStream.available()\",e);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn nEncodedBytes;\r\n\t}\r\n\r\n\tprotected void closeStream() {\r\n\t\t// Close stream.\r\n\t\ttry {\r\n\t\t\tif (m_audioInputStream != null) {\r\n\t\t\t\tm_audioInputStream.close();\r\n\t\t\t}\r\n\t\t} catch (IOException e) {\r\n\t\t\t// log.info(\"Cannot close stream\", e);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns true if Gain control is supported.\r\n\t */\r\n\tpublic boolean hasGainControl() {\r\n\t\tif (m_gainControl == null) {\r\n\t\t\t// Try to get Gain control again (to support J2SE 1.5)\r\n\t\t\tif ((m_line != null)\r\n\t\t\t\t\t&& (m_line\r\n\t\t\t\t\t\t\t.isControlSupported(FloatControl.Type.MASTER_GAIN)))\r\n\t\t\t\tm_gainControl = (FloatControl) m_line\r\n\t\t\t\t\t\t.getControl(FloatControl.Type.MASTER_GAIN);\r\n\t\t}\r\n\t\treturn m_gainControl != null;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns Gain value.\r\n\t */\r\n\tpublic float getGainValue() {\r\n\t\tif (hasGainControl()) {\r\n\t\t\treturn m_gainControl.getValue();\r\n\t\t} else {\r\n\t\t\treturn 0.0F;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Gets max Gain value.\r\n\t */\r\n\tpublic float getMaximumGain() {\r\n\t\tif (hasGainControl()) {\r\n\t\t\treturn m_gainControl.getMaximum();\r\n\t\t} else {\r\n\t\t\treturn 0.0F;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Gets min Gain value.\r\n\t */\r\n\tpublic float getMinimumGain() {\r\n\t\tif (hasGainControl()) {\r\n\t\t\treturn m_gainControl.getMinimum();\r\n\t\t} else {\r\n\t\t\treturn 0.0F;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns true if Pan control is supported.\r\n\t */\r\n\tpublic boolean hasPanControl() {\r\n\t\tif (m_panControl == null) {\r\n\t\t\t// Try to get Pan control again (to support J2SE 1.5)\r\n\t\t\tif ((m_line != null)\r\n\t\t\t\t\t&& (m_line.isControlSupported(FloatControl.Type.PAN)))\r\n\t\t\t\tm_panControl = (FloatControl) m_line\r\n\t\t\t\t\t\t.getControl(FloatControl.Type.PAN);\r\n\t\t}\r\n\t\treturn m_panControl != null;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns Pan precision.\r\n\t */\r\n\tpublic float getPrecision() {\r\n\t\tif (hasPanControl()) {\r\n\t\t\treturn m_panControl.getPrecision();\r\n\t\t} else {\r\n\t\t\treturn 0.0F;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns Pan value.\r\n\t */\r\n\tpublic float getPan() {\r\n\t\tif (hasPanControl()) {\r\n\t\t\treturn m_panControl.getValue();\r\n\t\t} else {\r\n\t\t\treturn 0.0F;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Deep copy of a Map.\r\n\t * \r\n\t * @param src\r\n\t * @return\r\n\t */\r\n\tprotected Map deepCopy(Map src) {\r\n\t\tHashMap map = new HashMap();\r\n\t\tif (src != null) {\r\n\t\t\tIterator it = src.keySet().iterator();\r\n\t\t\twhile (it.hasNext()) {\r\n\t\t\t\tObject key = it.next();\r\n\t\t\t\tObject value = src.get(key);\r\n\t\t\t\tmap.put(key, value);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn map;\r\n\t}\r\n\r\n\t/**\r\n\t * @see javazoom.jlgui.basicplayer.BasicController#seek(long)\r\n\t */\r\n\tpublic long seek(long bytes) throws BasicPlayerException {\r\n\t\treturn skipBytes(bytes);\r\n\t}\r\n\r\n\t/**\r\n\t * @see javazoom.jlgui.basicplayer.BasicController#play()\r\n\t */\r\n\tpublic void play() throws BasicPlayerException {\r\n\t\tstartPlayback();\r\n\t}\r\n\r\n\t/**\r\n\t * @see javazoom.jlgui.basicplayer.BasicController#stop()\r\n\t */\r\n\tpublic void stop() throws BasicPlayerException {\r\n\t\tstopPlayback();\r\n\t}\r\n\r\n\t/**\r\n\t * @see javazoom.jlgui.basicplayer.BasicController#pause()\r\n\t */\r\n\tpublic void pause() throws BasicPlayerException {\r\n\t\tpausePlayback();\r\n\t}\r\n\r\n\t/**\r\n\t * @see javazoom.jlgui.basicplayer.BasicController#resume()\r\n\t */\r\n\tpublic void resume() throws BasicPlayerException {\r\n\t\tresumePlayback();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets Pan value. Line should be opened before calling this method. Linear\r\n\t * scale : -1.0 <--> +1.0\r\n\t */\r\n\tpublic void setPan(double fPan) throws BasicPlayerException {\r\n\t\tif (hasPanControl()) {\r\n\t\t\tm_panControl.setValue((float) fPan);\r\n\t\t\tnotifyEvent(BasicPlayerEvent.PAN, getEncodedStreamPosition(), fPan,\r\n\t\t\t\t\tnull);\r\n\t\t} else\r\n\t\t\tthrow new BasicPlayerException(\r\n\t\t\t\t\tBasicPlayerException.PANCONTROLNOTSUPPORTED);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets Gain value. Line should be opened before calling this method. Linear\r\n\t * scale 0.0 <--> 1.0 Threshold Coef. : 1/2 to avoid saturation.\r\n\t */\r\n\tpublic void setGain(double fGain) throws BasicPlayerException {\r\n\t\tif (hasGainControl()) {\r\n\t\t\tdouble minGainDB = getMinimumGain();\r\n\t\t\tdouble ampGainDB = ((10.0f / 20.0f) * getMaximumGain())\r\n\t\t\t\t\t- getMinimumGain();\r\n\t\t\tdouble cste = Math.log(10.0) / 20;\r\n\t\t\tdouble valueDB = minGainDB + (1 / cste)\r\n\t\t\t\t\t* Math.log(1 + (Math.exp(cste * ampGainDB) - 1) * fGain);\r\n\t\t\tm_gainControl.setValue((float) valueDB);\r\n\t\t\tnotifyEvent(BasicPlayerEvent.GAIN, getEncodedStreamPosition(),\r\n\t\t\t\t\tfGain, null);\r\n\t\t} else\r\n\t\t\tthrow new BasicPlayerException(\r\n\t\t\t\t\tBasicPlayerException.GAINCONTROLNOTSUPPORTED);\r\n\t}\r\n\r\n\tpublic List getMixers() {\r\n\t\tArrayList mixers = new ArrayList();\r\n\t\tMixer.Info[] mInfos = AudioSystem.getMixerInfo();\r\n\t\tif (mInfos != null) {\r\n\t\t\tfor (int i = 0; i < mInfos.length; i++) {\r\n\t\t\t\tLine.Info lineInfo = new Line.Info(SourceDataLine.class);\r\n\t\t\t\tMixer mixer = AudioSystem.getMixer(mInfos[i]);\r\n\t\t\t\tif (mixer.isLineSupported(lineInfo)) {\r\n\t\t\t\t\tmixers.add(mInfos[i].getName());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn mixers;\r\n\t}\r\n\r\n\tpublic Mixer getMixer(String name) {\r\n\t\tMixer mixer = null;\r\n\t\tif (name != null) {\r\n\t\t\tMixer.Info[] mInfos = AudioSystem.getMixerInfo();\r\n\t\t\tif (mInfos != null) {\r\n\t\t\t\tfor (int i = 0; i < mInfos.length; i++) {\r\n\t\t\t\t\tif (mInfos[i].getName().equals(name)) {\r\n\t\t\t\t\t\tmixer = AudioSystem.getMixer(mInfos[i]);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn mixer;\r\n\t}\r\n\r\n\tpublic String getMixerName() {\r\n\t\treturn m_mixerName;\r\n\t}\r\n\r\n\tpublic void setMixerName(String name) {\r\n\t\tm_mixerName = name;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/javazoom/jlgui/basicplayer/BasicPlayerEvent.java",
    "content": "/*\r\n * BasicPlayerEvent.\r\n * \r\n * JavaZOOM : jlgui@javazoom.net\r\n *            http://www.javazoom.net\r\n *\r\n *-----------------------------------------------------------------------\r\n *   This program is free software; you can redistribute it and/or modify\r\n *   it under the terms of the GNU Library General Public License as published\r\n *   by the Free Software Foundation; either version 2 of the License, or\r\n *   (at your option) any later version.\r\n *\r\n *   This program is distributed in the hope that it will be useful,\r\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n *   GNU Library General Public License for more details.\r\n *\r\n *   You should have received a copy of the GNU Library General Public\r\n *   License along with this program; if not, write to the Free Software\r\n *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\r\n *----------------------------------------------------------------------\r\n */\r\npackage javazoom.jlgui.basicplayer;\r\n\r\n/**\r\n * This class implements player events. \r\n */\r\npublic class BasicPlayerEvent\r\n{\r\n    public static final int UNKNOWN = -1;\r\n    public static final int OPENING = 0;\r\n    public static final int OPENED = 1;\r\n    public static final int PLAYING = 2;\r\n    public static final int STOPPED = 3;\r\n    public static final int PAUSED = 4;\r\n    public static final int RESUMED = 5;\r\n    public static final int SEEKING = 6;\r\n    public static final int SEEKED = 7;\r\n    public static final int EOM = 8;\r\n    public static final int PAN = 9;\r\n    public static final int GAIN = 10;\r\n    private int code = UNKNOWN;\r\n    private int position = -1;\r\n    private double value = -1.0;\r\n    private Object source = null;\r\n    private Object description = null;\r\n\r\n    /**\r\n     * Constructor\r\n     * @param source of the event\r\n     * @param code of the envent\r\n     * @param position optional stream position\r\n     * @param value opitional control value\r\n     * @param desc optional description\r\n     */\r\n    public BasicPlayerEvent(Object source, int code, int position, double value, Object desc)\r\n    {\r\n        this.value = value;\r\n        this.position = position;\r\n        this.source = source;\r\n        this.code = code;\r\n        this.description = desc;\r\n    }\r\n\r\n    /**\r\n     * Return code of the event triggered.\r\n     * @return\r\n     */\r\n    public int getCode()\r\n    {\r\n        return code;\r\n    }\r\n\r\n    /**\r\n     * Return position in the stream when event occured.\r\n     * @return\r\n     */\r\n    public int getPosition()\r\n    {\r\n        return position;\r\n    }\r\n\r\n    /**\r\n     * Return value related to event triggered. \r\n     * @return\r\n     */\r\n    public double getValue()\r\n    {\r\n        return value;\r\n    }\r\n\r\n    /**\r\n     * Return description.\r\n     * @return\r\n     */\r\n    public Object getDescription()\r\n    {\r\n        return description;\r\n    }\r\n\r\n    public Object getSource()\r\n    {\r\n        return source;\r\n    }\r\n\r\n    public String toString()\r\n    {\r\n        if (code == OPENED) return \"OPENED:\" + position;\r\n        else if (code == OPENING) return \"OPENING:\" + position + \":\" + description;\r\n        else if (code == PLAYING) return \"PLAYING:\" + position;\r\n        else if (code == STOPPED) return \"STOPPED:\" + position;\r\n        else if (code == PAUSED) return \"PAUSED:\" + position;\r\n        else if (code == RESUMED) return \"RESUMED:\" + position;\r\n        else if (code == SEEKING) return \"SEEKING:\" + position;\r\n        else if (code == SEEKED) return \"SEEKED:\" + position;\r\n        else if (code == EOM) return \"EOM:\" + position;\r\n        else if (code == PAN) return \"PAN:\" + value;\r\n        else if (code == GAIN) return \"GAIN:\" + value;\r\n        else return \"UNKNOWN:\" + position;\r\n    }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/javazoom/jlgui/basicplayer/BasicPlayerEventLauncher.java",
    "content": "/*\r\n * BasicPlayerEventLauncher.\r\n * \r\n * JavaZOOM : jlgui@javazoom.net\r\n *            http://www.javazoom.net\r\n *\r\n *-----------------------------------------------------------------------\r\n *   This program is free software; you can redistribute it and/or modify\r\n *   it under the terms of the GNU Library General Public License as published\r\n *   by the Free Software Foundation; either version 2 of the License, or\r\n *   (at your option) any later version.\r\n *\r\n *   This program is distributed in the hope that it will be useful,\r\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n *   GNU Library General Public License for more details.\r\n *\r\n *   You should have received a copy of the GNU Library General Public\r\n *   License along with this program; if not, write to the Free Software\r\n *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\r\n *----------------------------------------------------------------------\r\n */\r\npackage javazoom.jlgui.basicplayer;\r\n\r\nimport java.util.Collection;\r\nimport java.util.Iterator;\r\n\r\n/**\r\n * This class implements a threaded events launcher.\r\n */\r\n@SuppressWarnings(\"rawtypes\")\r\npublic class BasicPlayerEventLauncher extends Thread {\r\n\tprivate int code = -1;\r\n\tprivate int position = -1;\r\n\tprivate double value = 0.0;\r\n\tprivate Object description = null;\r\n\tprivate Collection listeners = null;\r\n\tprivate Object source = null;\r\n\r\n\t/**\r\n\t * Contructor.\r\n\t * \r\n\t * @param code\r\n\t * @param position\r\n\t * @param value\r\n\t * @param description\r\n\t * @param listeners\r\n\t * @param source\r\n\t */\r\n\tpublic BasicPlayerEventLauncher(int code, int position, double value,\r\n\t\t\tObject description, Collection listeners, Object source) {\r\n\t\tsuper();\r\n\t\tthis.code = code;\r\n\t\tthis.position = position;\r\n\t\tthis.value = value;\r\n\t\tthis.description = description;\r\n\t\tthis.listeners = listeners;\r\n\t\tthis.source = source;\r\n\t}\r\n\r\n\tpublic void run() {\r\n\t\tif (listeners != null) {\r\n\t\t\tIterator it = listeners.iterator();\r\n\t\t\twhile (it.hasNext()) {\r\n\t\t\t\tBasicPlayerListener bpl = (BasicPlayerListener) it.next();\r\n\t\t\t\tBasicPlayerEvent event = new BasicPlayerEvent(source, code,\r\n\t\t\t\t\t\tposition, value, description);\r\n\t\t\t\tbpl.stateUpdated(event);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/javazoom/jlgui/basicplayer/BasicPlayerException.java",
    "content": "/*\r\n * BasicPlayerException.\r\n * \r\n * JavaZOOM : jlgui@javazoom.net\r\n *            http://www.javazoom.net\r\n *\r\n *-----------------------------------------------------------------------\r\n *   This program is free software; you can redistribute it and/or modify\r\n *   it under the terms of the GNU Library General Public License as published\r\n *   by the Free Software Foundation; either version 2 of the License, or\r\n *   (at your option) any later version.\r\n *\r\n *   This program is distributed in the hope that it will be useful,\r\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n *   GNU Library General Public License for more details.\r\n *\r\n *   You should have received a copy of the GNU Library General Public\r\n *   License along with this program; if not, write to the Free Software\r\n *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\r\n *----------------------------------------------------------------------\r\n */\r\npackage javazoom.jlgui.basicplayer;\r\n\r\nimport java.io.PrintStream;\r\nimport java.io.PrintWriter;\r\n\r\n/**\r\n * This class implements custom exception for basicplayer.\r\n */\r\npublic class BasicPlayerException extends RuntimeException {\r\n    public static final String GAINCONTROLNOTSUPPORTED = \"Gain control not supported\";\r\n    public static final String PANCONTROLNOTSUPPORTED = \"Pan control not supported\";\r\n    public static final String WAITERROR = \"Wait error\";\r\n    public static final String CANNOTINITLINE = \"Cannot init line\";\r\n    public static final String SKIPNOTSUPPORTED = \"Skip not supported\";\r\n    private Throwable cause = null;\r\n\r\n    public BasicPlayerException()\r\n    {\r\n        super();\r\n    }\r\n\r\n    public BasicPlayerException(String msg)\r\n    {\r\n        super(msg);\r\n    }\r\n\r\n    public BasicPlayerException(Throwable cause)\r\n    {\r\n        super();\r\n        this.cause = cause;\r\n    }\r\n\r\n    public BasicPlayerException(String msg, Throwable cause)\r\n    {\r\n        super(msg);\r\n        this.cause = cause;\r\n    }\r\n\r\n    public Throwable getCause()\r\n    {\r\n        return cause;\r\n    }\r\n\r\n    /**\r\n     * Returns the detail message string of this throwable. If it was\r\n     * created with a null message, returns the following:\r\n     * (cause==null ? null : cause.toString()).\r\n     */\r\n    public String getMessage()\r\n    {\r\n        if (super.getMessage() != null)\r\n        {\r\n            return super.getMessage();\r\n        }\r\n        else if (cause != null)\r\n        {\r\n            return cause.toString();\r\n        }\r\n        else\r\n        {\r\n            return null;\r\n        }\r\n    }\r\n\r\n    public void printStackTrace()\r\n    {\r\n        printStackTrace(System.err);\r\n    }\r\n\r\n    public void printStackTrace(PrintStream out)\r\n    {\r\n        synchronized (out)\r\n        {\r\n            PrintWriter pw = new PrintWriter(out, false);\r\n            printStackTrace(pw);\r\n            pw.flush();\r\n        }\r\n    }\r\n\r\n    public void printStackTrace(PrintWriter out)\r\n    {\r\n        if (cause != null) cause.printStackTrace(out);\r\n    }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/javazoom/jlgui/basicplayer/BasicPlayerListener.java",
    "content": "/*\r\n * BasicPlayerListener.\r\n * \r\n * JavaZOOM : jlgui@javazoom.net\r\n *            http://www.javazoom.net\r\n *\r\n *-----------------------------------------------------------------------\r\n *   This program is free software; you can redistribute it and/or modify\r\n *   it under the terms of the GNU Library General Public License as published\r\n *   by the Free Software Foundation; either version 2 of the License, or\r\n *   (at your option) any later version.\r\n *\r\n *   This program is distributed in the hope that it will be useful,\r\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n *   GNU Library General Public License for more details.\r\n *\r\n *   You should have received a copy of the GNU Library General Public\r\n *   License along with this program; if not, write to the Free Software\r\n *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\r\n *----------------------------------------------------------------------\r\n */\r\npackage javazoom.jlgui.basicplayer;\r\n\r\nimport java.util.Map;\r\n\r\n/**\r\n * This interface defines callbacks methods that will be notified for all\r\n * registered BasicPlayerListener of BasicPlayer.\r\n */\r\n@SuppressWarnings(\"rawtypes\")\r\npublic interface BasicPlayerListener {\r\n\t/**\r\n\t * Open callback, stream is ready to play.\r\n\t * \r\n\t * properties map includes audio format dependant features such as bitrate,\r\n\t * duration, frequency, channels, number of frames, vbr flag, id3v2/id3v1\r\n\t * (for MP3 only), comments (for Ogg Vorbis), ...\r\n\t * \r\n\t * @param stream\r\n\t *            could be File, URL or InputStream\r\n\t * @param properties\r\n\t *            audio stream properties.\r\n\t */\r\n\tpublic void opened(Object stream, Map properties);\r\n\r\n\t/**\r\n\t * Progress callback while playing.\r\n\t * \r\n\t * This method is called severals time per seconds while playing. properties\r\n\t * map includes audio format features such as instant bitrate, microseconds\r\n\t * position, current frame number, ...\r\n\t * \r\n\t * @param bytesread\r\n\t *            from encoded stream.\r\n\t * @param microseconds\r\n\t *            elapsed (<b>reseted after a seek !</b>).\r\n\t * @param pcmdata\r\n\t *            PCM samples.\r\n\t * @param properties\r\n\t *            audio stream parameters.\r\n\t */\r\n\tpublic void progress(int bytesread, long microseconds, byte[] pcmdata,\r\n\t\t\tMap properties);\r\n\r\n\t/**\r\n\t * Notification callback for basicplayer events such as opened, eom ...\r\n\t * \r\n\t * @param event\r\n\t */\r\n\tpublic void stateUpdated(BasicPlayerEvent event);\r\n\r\n\t/**\r\n\t * A handle to the BasicPlayer, plugins may control the player through the\r\n\t * controller (play, stop, ...)\r\n\t * \r\n\t * @param controller\r\n\t *            : a handle to the player\r\n\t */\r\n\tpublic void setController(BasicController controller);\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/audio/Accidental.java",
    "content": "/*\n * CS 106A Melody Maker\n *\n * This instructor-provided file represents a musical accidental:\n * sharp, flat, or natural.\n *\n * @author Marty Stepp\n * @version Fri 2015/05/08\n * - version for 15sp; folded into spl.jar\n * @version Tue 2014/05/25\n * - initial version for 14sp\n * \n * Your program should work properly with an UNMODIFIED version of this file.\n * If you want to modify this file for testing or for fun, that is your choice,\n * but when we grade your program we will do so with the original unmodified\n * version of this file, so your code must still work properly with that code.\n *\n * This file and its contents are copyright (C) Stanford University and Marty Stepp,\n * licensed under Creative Commons Attribution 2.5 License.  All rights reserved.\n */\n\npackage stanford.cs106.audio;\n\n/**\n * An Accidental represents a musical accidental: sharp, flat, or natural.\n */\npublic enum Accidental {\t\n\tSHARP, NATURAL, FLAT;\n\n\t/**\n\t * Returns the Accidental that is equivalent to the given string,\n\t * such as Accidental.SHARP for \"SHARP\", or null if the string does not\n\t * match any Accidental value.\n\t */\n\tpublic static Accidental getValueOf(String s) {\n\t\ts = s.intern();\n\t\tif (s == \"SHARP\") {\n\t\t\treturn Accidental.SHARP;\n\t\t}\n\t\tif (s == \"FLAT\") {\n\t\t\treturn Accidental.FLAT;\n\t\t}\n\t\tif (s == \"NATURAL\") {\n\t\t\treturn Accidental.NATURAL;\n\t\t}\n\t\treturn null;\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/audio/Note.java",
    "content": "/**\r\n * CS 106A Melody Maker\r\n *\r\n * This instructor-provided file represents musical notes and is to be used\r\n * by your Melody class.\r\n *\r\n * @author Marty Stepp\r\n * @version Fri 2017/05/08\r\n * - added setPitch/Accidental(String)\r\n * @version Fri 2016/07/27\r\n * - bug fix for locale issues on nextDouble parsing\r\n * @version Fri 2016/05/21\r\n * - new constructors as per conversation with Alisha Adam;\r\n *   can now construct by passing just a String line\r\n * @version Fri 2014/05/23\r\n * - bug fix: Rests were storing octave 0, broke most octave up/down code\r\n * @version Fri 2014/05/08\r\n * - version for 15sp; folded into spl.jar\r\n * @version Tue 2014/05/27\r\n * - fixed minor bugs in setOctave/equals with rests based on autograder feedback\r\n * @version Sun 2014/05/25\r\n * - added stuff to facilitate autograder: equals, setRepeat,\r\n *   and changes to StdAudio interaction for better events\r\n * @version Sun 2014/05/14\r\n * - fixed issue with IllegalArgumentException on creating rests\r\n * \r\n * Your program should work properly with an UNMODIFIED version of this file.\r\n * If you want to modify this file for testing or for fun, that is your choice,\r\n * but when we grade your program we will do so with the original unmodified\r\n * version of this file, so your code must still work properly with that code.\r\n *\r\n * This file and its contents are copyright (C) Stanford University and Marty Stepp,\r\n * licensed under Creative Commons Attribution 2.5 License.  All rights reserved.\r\n */\r\n\r\npackage stanford.cs106.audio;\r\n\r\nimport java.util.Locale;\r\nimport java.util.Scanner;\r\n\r\n/**\r\n * This instructor-provided file represents musical notes and is to be used\r\n * by your Melody class.\r\n *\r\n * Each Note object represents a musical note or rest.\r\n * A Note encapsulates a pitch (A-G), a duration in seconds, an octave,\r\n * an accidental (sharp, flat, or natural), and a flag of whether it is the\r\n * start/end of a repeated section or not.\r\n * A song or melody can be thought of as a list or array of Note objects.\r\n *\r\n * @author Marty Stepp and Allison Obourn\r\n */\r\npublic class Note {\r\n\t/**\r\n\t * Constant for the minimum legal value that an octave can have.\r\n\t */\r\n\tpublic static final int OCTAVE_MIN = 1;\r\n\r\n\t/**\r\n\t * Constant for the maximum legal value that an octave can have.\r\n\t */\r\n\tpublic static final int OCTAVE_MAX = 10;\r\n\t\r\n\t/*\r\n\t * Whether this class should print messages to the console for debugging.\r\n\t */\r\n\tpublic static boolean DEBUG = true;\r\n\t\r\n\t// fields\r\n\tprivate double duration;         // note's duration in seconds\r\n\tprivate Pitch pitch;             // note's pitch from A-G or R for rest\r\n\tprivate int octave;              // note's octave from 1-10\r\n\tprivate Accidental accidental;   // note's accidental: sharp, flat, natural\r\n\tprivate boolean repeat;          // true if this note starts/ends a repeated section\r\n\r\n\t/**\r\n\t * Constructs a Note with the information contained in the given line.\r\n\t * @param line a line of input data such as \"0.2 C 4 NATURAL false\" or \"0.4 R false\" for a rest\r\n\t * @throws NullPointerException if line is null.\r\n\t * @throws IllegalArgumentException if duration is negative or octave is not\r\n\t *                                  between OCTAVE_MIN and OCTAVE_MAX inclusive.\r\n\t */\r\n\tpublic Note(String line) {\r\n\t\t// line = \"0.2 C 4 NATURAL false\"\r\n\t\tScanner input = new Scanner(line);\r\n\t\tinput.useLocale(Locale.US);\r\n\t\tdouble duration = input.nextDouble();\r\n\t\tPitch pitch = Pitch.getValueOf(input.next());\r\n\t\tboolean isRepeat;\r\n\t\tint octave = OCTAVE_MIN + 1;\r\n\t\tAccidental accidental = Accidental.NATURAL;\r\n\t\tif (pitch != Pitch.R) {\r\n\t\t\toctave = input.nextInt();\r\n\t\t\taccidental = Accidental.getValueOf(input.next());\r\n\t\t}\r\n\t\tisRepeat = input.nextBoolean();\r\n\t\tinput.close();\r\n\t\t\r\n\t\tsetPitch(pitch);\r\n\t\tsetAccidental(accidental);\r\n\t\tsetDuration(duration);\r\n\t\tsetOctave(octave);\r\n\t\tsetRepeat(isRepeat);\r\n\t}\r\n\r\n\t/**\r\n\t * Constructs a Note with the given information.\r\n\t * @param duration Note's duration in seconds.\r\n\t * @param pitch Note's pitch from Pitch.A through Pitch.G, or Pitch.R for a rest.\r\n\t * @param octave Note's octave from OCTAVE_MIN through OCTAVE_MAX inclusive.\r\n\t * @param accidental Note's accidental from Accidental.SHARP, FLAT, or NATURAL.\r\n\t * @param repeat true if this note starts/ends a repeated section.\r\n\t * @throws NullPointerException if pitch or accidental is null.\r\n\t * @throws IllegalArgumentException if duration is negative or octave is not\r\n\t *                                  between OCTAVE_MIN and OCTAVE_MAX inclusive.\r\n\t */\r\n\tpublic Note(double duration, Pitch pitch, int octave, Accidental accidental, boolean repeat) {\r\n\t\tsetPitch(pitch);\r\n\t\tsetAccidental(accidental);\r\n\t\tsetDuration(duration);\r\n\t\tsetOctave(octave);\r\n\t\tthis.repeat = repeat;\r\n\t}\r\n\r\n\t/**\r\n\t * Constructs a Note with the given information.\r\n\t * @param duration Note's duration in seconds.\r\n\t * @param pitch Note's pitch from \"A\" through \"G\", or \"R\" for a rest.\r\n\t * @param octave Note's octave from OCTAVE_MIN through OCTAVE_MAX inclusive.\r\n\t * @param accidental Note's accidental from \"SHARP\", \"FLAT\", or \"NATURAL\".\r\n\t * @param repeat true if this note starts/ends a repeated section.\r\n\t * @throws NullPointerException if pitch or accidental is null.\r\n\t * @throws IllegalArgumentException if duration is negative or octave is not\r\n\t *                                  between OCTAVE_MIN and OCTAVE_MAX inclusive.\r\n\t */\r\n\tpublic Note(double duration, String pitch, int octave, String accidental, boolean repeat) {\r\n\t\tsetPitch(Pitch.valueOf(pitch));\r\n\t\tsetAccidental(Accidental.valueOf(accidental));\r\n\t\tsetDuration(duration);\r\n\t\tsetOctave(octave);\r\n\t\tthis.repeat = repeat;\r\n\t}\r\n\r\n\t/**\r\n\t * Constructs a new rest (Pitch.R) of the given duration.\r\n\t * @param duration Note's duration in seconds.\r\n\t * @param repeat true if this rest starts/ends a repeated section.\r\n\t * @throws NullPointerException if accidental is null.\r\n\t * @throws IllegalArgumentException if duration is negative.\r\n\t */\r\n\tpublic Note(double duration, boolean repeat) {\r\n\t\tthis(duration, Pitch.R, OCTAVE_MIN + 1, Accidental.NATURAL, repeat);\r\n\t}\r\n\t\r\n\t/**\r\n\t * Returns true if o refers to a Note object with the same state\r\n\t * as this Note object; otherwise false.\r\n\t * @param o the object to compare against\r\n\t * @return true if o refers to a Note object with the same state\r\n\t * as this Note object; otherwise false.\r\n\t */\r\n\tpublic boolean equals(Object o) {\r\n\t\tif (o instanceof Note) {\r\n\t\t\tNote other = (Note) o;\r\n\t\t\tif (pitch == Pitch.R && other.pitch == Pitch.R) {\r\n\t\t\t\t// compare two rests\r\n\t\t\t\treturn this.duration == other.duration\r\n\t\t\t\t\t\t&& this.pitch == other.pitch\r\n\t\t\t\t\t\t&& this.repeat == other.repeat;\r\n\t\t\t} else {\r\n\t\t\t\t// compare two notes, or a note and a rest\r\n\t\t\t\treturn this.duration == other.duration\r\n\t\t\t\t\t\t&& this.pitch == other.pitch\r\n\t\t\t\t\t\t&& this.octave == other.octave\r\n\t\t\t\t\t\t&& this.accidental == other.accidental\r\n\t\t\t\t\t\t&& this.repeat == other.repeat;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\t/**\r\n\t * Returns this Note's accidental value of SHARP, FLAT, or NATURAL.\r\n\t * The accidental value is meaningless for a rest; this method will\r\n\t * return Accidental.NATURAL by default if called on a rest.\r\n\t * @return this Note's accidental value of SHARP, FLAT, or NATURAL.\r\n\t */\r\n\tpublic Accidental getAccidental() {\r\n\t\treturn accidental;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns this Note's duration in seconds.\r\n\t * @return this Note's duration in seconds.\r\n\t */\r\n\tpublic double getDuration() {\r\n\t\treturn duration;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns this Note's octave.\r\n\t * The octave value is meaningless for a rest; this method will return\r\n\t * OCTAVE_MIN + 1 by default if called on a rest.\r\n\t * @return this Note's octave from OCTAVE_MIN to OCTAVE_MAX.\r\n\t */\r\n\tpublic int getOctave() {\r\n\t\treturn octave;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns this Note's pitch value of A-G or R for a rest.\r\n\t * @return this Note's pitch value of A-G or R for a rest.\r\n\t */\r\n\tpublic Pitch getPitch() {\r\n\t\treturn pitch;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns true if this Note is the start or end of a repeated section.\r\n\t * @return true if this Note is the start or end of a repeated section,\r\n\t *         otherwise false.\r\n\t */\r\n\tpublic boolean isRepeat() {\r\n\t\treturn repeat;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns true if this Note is a rest.  Equivalent to checking whether\r\n\t * this note's pitch is Pitch.R.  Provided for convenience.\r\n\t * @return true if this Note is a rest, otherwise false.\r\n\t */\r\n\tpublic boolean isRest() {\r\n\t\treturn pitch == Pitch.R;\r\n\t}\r\n\r\n\t/**\r\n\t * Plays this note through the underlying audio system.\r\n\t * Also prints a message to the system console for debugging.\r\n\t * If the audio system is muted or paused, the note may not play.\r\n\t */\r\n\tpublic void play() {\r\n\t\tif (DEBUG) {\r\n\t\t\tSystem.out.println(\"  - playing \" + duration + \" \" + pitch\r\n\t\t\t\t\t+ (pitch == Pitch.R ? \"\" : (\" \" + octave + \" \" + accidental)));\r\n\t\t}\r\n\t\tif (pitch == Pitch.R) {\r\n\t\t\t// play no sound (but do delay) if the note is a rest\r\n\t\t\t// StdAudio.play(StdAudio.note(0, duration, 0.5), duration);\r\n\t\t\tStdAudio.play(this, StdAudio.note(0, duration, 0.5), duration);\r\n\t\t} else {\r\n\t\t\tchar note = pitch.toString().charAt(0);\r\n\t\t\tint steps = (note - 'A') * 2;\r\n\r\n\t\t\t// adjust for sharps/flats\r\n\t\t\tif (note == 'C' || note == 'D' || note == 'E') {\r\n\t\t\t\tsteps -= 1;\r\n\t\t\t} else if (note == 'F' || note == 'G') {\r\n\t\t\t\tsteps -= 2;\r\n\t\t\t}\r\n\r\n\t\t\t// adjust pitch for proper octave\r\n\t\t\tif (octave > 4 || (octave == 4 && note <= 'B')) {\r\n\t\t\t\tsteps += (octave - 4) * 12;\r\n\t\t\t} else {\r\n\t\t\t\tsteps -= (4 - octave) * 12;\r\n\t\t\t}\r\n\r\n\t\t\t// octave start at C so A and B are an octave lower\r\n\t\t\tif (note != 'A' && note != 'B') {\r\n\t\t\t\tsteps -= 12;\r\n\t\t\t}\r\n\r\n\t\t\t// adjust for sharps and flats\r\n\t\t\tif (accidental.equals(Accidental.SHARP)) {\r\n\t\t\t\tsteps += 1;\r\n\t\t\t} else if (accidental.equals(Accidental.FLAT)) {\r\n\t\t\t\tsteps -= 1;\r\n\t\t\t}\r\n\r\n\t\t\t// play the note!\r\n\t\t\tdouble hz = 440.0 * Math.pow(2, steps / 12.0);\r\n\t\t\tStdAudio.play(this, StdAudio.note(hz, duration, 0.5), duration);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets this Note's accidental value to be the given value: SHARP, FLAT, or NATURAL.\r\n\t * The accidental value is meaningless for a rest, but the Note object still\r\n\t * maintains an accidental value internally (initially Accidental.NATURAL)\r\n\t * which is ignored.\r\n\t * @param accidental Note's accidental from Accidental.SHARP, FLAT, or NATURAL.\r\n\t * @throws NullPointerException if the accidental is null.\r\n\t */\r\n\tpublic void setAccidental(Accidental accidental) {\r\n\t\tif (accidental == null) {\r\n\t\t\tthrow new NullPointerException();\r\n\t\t}\r\n\t\tif (pitch != Pitch.R) {\r\n\t\t\tthis.accidental = accidental;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets this Note's accidental value to be the given value: \"SHARP\", \"FLAT\", or \"NATURAL\".\r\n\t * The accidental value is meaningless for a rest, but the Note object still\r\n\t * maintains an accidental value internally (initially Accidental.NATURAL)\r\n\t * which is ignored.\r\n\t * @param accidental Note's accidental from \"SHARP\", \"FLAT\", or \"NATURAL\".\r\n\t */\r\n\tpublic void setAccidental(String accidental) {\r\n\t\tif (pitch != Pitch.R) {\r\n\t\t\tthis.accidental = Accidental.valueOf(accidental);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets this Note's duration in seconds to be the given value.\r\n\t * @param duration Note's duration in seconds.\r\n\t * @throws IllegalArgumentException if duration is negative.\r\n\t */\r\n\tpublic void setDuration(double duration) {\r\n\t\tif (duration < 0.0) {\r\n\t\t\tthrow new IllegalArgumentException();\r\n\t\t}\r\n\t\tthis.duration = duration;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets this Note's octave to be the given value.\r\n\t * The octave value is meaningless for a rest, but the Note object still\r\n\t * maintains an octave value internally (initially OCTAVE_MIN + 1)\r\n\t * which is ignored.\r\n\t * @param octave Note's octave from OCTAVE_MIN through OCTAVE_MAX inclusive.\r\n\t * @throws IllegalArgumentException if octave is not between OCTAVE_MIN\r\n\t *                                  and OCTAVE_MAX inclusive.\r\n\t */\r\n\tpublic void setOctave(int octave) {\r\n\t\tif (pitch != Pitch.R) {\r\n\t\t\tif (octave < OCTAVE_MIN || octave > OCTAVE_MAX) {\r\n\t\t\t\tthrow new IllegalArgumentException(\"Illegal octave value: \" + octave);\r\n\t\t\t}\r\n\t\t\tthis.octave = octave;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets this Note's pitch to be the given value.\r\n\t * @param pitch Note's pitch from Pitch.A through Pitch.G, or Pitch.R for a rest.\r\n\t * @throws NullPointerException if pitch is null.\r\n\t */\r\n\tpublic void setPitch(Pitch pitch) {\r\n\t\tif (pitch == null) {\r\n\t\t\tthrow new NullPointerException();\r\n\t\t}\r\n\t\tthis.pitch = pitch;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets this Note's pitch to be the given value.\r\n\t * @param pitch Note's pitch from \"A\" through \"G\", or \"R\" for a rest.\r\n\t * @throws NullPointerException if pitch is null.\r\n\t */\r\n\tpublic void setPitch(String pitch) {\r\n\t\tthis.pitch = Pitch.valueOf(pitch);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets this Note's repeat flag to be the given value.\r\n\t * @param repeat true to indicate that this note is the start/end of a\r\n\t *               repeated section, or false if not.\r\n\t */\r\n\tpublic void setRepeat(boolean repeat) {\r\n\t\tthis.repeat = repeat;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a string representation of this note.\r\n\t * @return A string such as \"0.4 C 5 NATURAL false\".\r\n\t */\r\n\tpublic String toString() {\r\n\t\tif (pitch == Pitch.R) {\r\n\t\t\treturn duration + \" \" + pitch + \" \" + repeat;\r\n\t\t} else {\r\n\t\t\treturn duration + \" \" + pitch + \" \" + octave + \" \" + accidental + \" \" + repeat;\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/audio/Pitch.java",
    "content": "/*\n * CS 106A Melody Maker\n *\n * This instructor-provided file represents a musical pitch from A-G or rest.\n *\n * @author Marty Stepp\n * @version Fri 2015/05/08\n * - version for 15sp; folded into spl.jar\n * @version Tue 2014/05/25\n * - initial version for 14sp\n * \n * Your program should work properly with an UNMODIFIED version of this file.\n * If you want to modify this file for testing or for fun, that is your choice,\n * but when we grade your program we will do so with the original unmodified\n * version of this file, so your code must still work properly with that code.\n *\n * This file and its contents are copyright (C) Stanford University and Marty Stepp,\n * licensed under Creative Commons Attribution 2.5 License.  All rights reserved.\n */\n\npackage stanford.cs106.audio;\n\n/**\n * A Pitch represents a musical pitch. R represents a rest, no pitch.\n */\npublic enum Pitch {\n\tA, B, C, D, E, F, G, R;\n\t\n\t/**\n\t * Returns the Pitch that is equivalent to the given string,\n\t * such as Pitch.D for \"D\", or null if the string does not\n\t * match any Pitch value.\n\t */\n\tpublic static Pitch getValueOf(String s) {\n\t\ts = s.intern();\n\t\tif (s == \"A\") {\n\t\t\treturn Pitch.A;\n\t\t}\n\t\tif (s == \"B\") {\n\t\t\treturn Pitch.B;\n\t\t}\n\t\tif (s == \"C\") {\n\t\t\treturn Pitch.C;\n\t\t}\n\t\tif (s == \"D\") {\n\t\t\treturn Pitch.D;\n\t\t}\n\t\tif (s == \"E\") {\n\t\t\treturn Pitch.E;\n\t\t}\n\t\tif (s == \"F\") {\n\t\t\treturn Pitch.F;\n\t\t}\n\t\tif (s == \"G\") {\n\t\t\treturn Pitch.G;\n\t\t}\n\t\tif (s == \"R\") {\n\t\t\treturn Pitch.R;\n\t\t}\n\t\treturn null;\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/audio/SplClip.java",
    "content": "package stanford.cs106.audio;\n\nimport java.applet.*;\nimport java.io.*;\nimport java.util.*;\n\nimport javax.sound.sampled.*;\n\nimport javazoom.jlgui.basicplayer.*;\n\n@SuppressWarnings(\"deprecation\")\npublic class SplClip implements AudioClip, BasicPlayerListener, Runnable {\n\tprivate static final Set<String> SUPPORTED_EXTENSIONS = new TreeSet<String>(\n\t\t\tArrays.asList(\n\t\t\t// \"aif\", \"aifc\", \"aiff\", \"au\", \"snd\", \n\t\t\t\"mp3\", \"ogg\", \"ogs\",\n\t\t\t// \"wma\", \n\t\t\t\"wav\", \"wave\"));\n\t\n\tpublic static boolean supportsExtension(String extension) {\n\t\textension = String.valueOf(extension).toLowerCase();\n\t\treturn SUPPORTED_EXTENSIONS.contains(extension)\n\t\t\t\t|| SUPPORTED_EXTENSIONS.contains(\".\" + extension);\n\t}\n\t\n\tpublic static boolean supportsFile(String name) {\n\t\treturn supportsExtension(getExtension(name));\n\t}\n\t\n\tpublic static String getExtension(String name) {\n\t\tString extension = (name.lastIndexOf(\".\") >= 0 ? name.substring(name.lastIndexOf(\".\") + 1) : name).toLowerCase();\n\t\treturn extension;\n\t}\n\t\n\tprivate String filename;\n\tprivate BasicController control;\n\tprivate Clip clip;\n\tprivate Thread thread;\n\tprivate boolean loop;\n\t\n\tpublic SplClip(String filename) {\n\t\tthis.filename = filename;\n\t}\n\t\n\tpublic void loop() {\n\t\t// TODO make it support multiple plays (rewind and play again)\n\t\tplay(/* loop */ true);\n\t}\n\n\tpublic void play() {\n\t\tplay(/* loop */ false);\n\t}\n\t\n\tprivate void play(boolean loop) {\n\t\tthis.loop = loop;\n\t\tString extension = getExtension(filename);\n\t\t\tif (extension.equals(\"mp3\")) {\n\t\t\t\t// special case for playing MP3 files\n\t\t\t\tthread = new Thread(this);\n\t\t\t\tthread.start();\n\t\t\t} else {\n\t\t\t\ttry {\n\t\t\t\t\t// play au/wav files using built-in Java audio libraries\n\t\t\t\t\tFile soundFile = new File(filename);\n\t\t\t\t\tAudioInputStream audioInputStream = AudioSystem.getAudioInputStream(soundFile);\n\t\t\t\t\tAudioFormat format = audioInputStream.getFormat();\n\t\t\t\t\tDataLine.Info info = new DataLine.Info(Clip.class, format);\n\t\t\t\t\tclip = (Clip) AudioSystem.getLine(info);\n\t\t\t\t\tclip.open(audioInputStream);\n\t\t\t\t\tif (loop) {\n\t\t\t\t\t\tclip.loop(Clip.LOOP_CONTINUOUSLY);\n\t\t\t\t\t}\n\t\t\t\t\tclip.start();\n\t\t\t\t} catch (IOException ioe) {\n\t\t\t\t\tthrow new IllegalArgumentException(ioe);\n\t\t\t\t} catch (LineUnavailableException lue) {\n\t\t\t\t\tthrow new IllegalArgumentException(lue);\n\t\t\t\t} catch (UnsupportedAudioFileException uafe) {\n\t\t\t\t\tthrow new IllegalArgumentException(uafe);\n\t\t\t\t}\n\t\t\t}\n\t}\n\t\n\tpublic void run() {\n\t\tString extension = getExtension(filename);\n\t\ttry {\n\t\t\tif (extension.equals(\"mp3\")) {\n\t\t\t\tdo {\n\t\t\t\t\t// special case for playing MP3 files\n\t\t\t\t\tAudioInputStream in = AudioSystem.getAudioInputStream(new File(filename));\n\t\t\t\t\tAudioInputStream din = null;\n\t\t\t\t\tAudioFormat baseFormat = in.getFormat();\n\t\t\t\t\tAudioFormat decodedFormat = new AudioFormat(\n\t\t\t\t\t\t\tAudioFormat.Encoding.PCM_SIGNED,\n\t\t\t\t\t\t\tbaseFormat.getSampleRate(), 16, baseFormat.getChannels(),\n\t\t\t\t\t\t\tbaseFormat.getChannels() * 2, baseFormat.getSampleRate(),\n\t\t\t\t\t\t\tfalse);\n\t\t\t\t\tdin = AudioSystem.getAudioInputStream(decodedFormat, in);\n\t\t\t\t\t// Play now.\n\t\t\t\t\trawplay(decodedFormat, din);\n\t\t\t\t\tin.close();\n\t\t\t\t} while (loop);\n\t\t\t} else {\n\t\t\t\t// play au/wav files using built-in Java audio libraries\n\t\t\t\tFile soundFile = new File(filename);\n\t\t\t\tAudioInputStream audioInputStream = AudioSystem.getAudioInputStream(soundFile);\n\t\t\t\tAudioFormat format = audioInputStream.getFormat();\n\t\t\t\tDataLine.Info info = new DataLine.Info(Clip.class, format);\n\t\t\t\tclip = (Clip) AudioSystem.getLine(info);\n\t\t\t\tclip.open(audioInputStream);\n\t\t\t\tif (loop) {\n\t\t\t\t\tclip.loop(Clip.LOOP_CONTINUOUSLY);\n\t\t\t\t}\n\t\t\t\tclip.start();\n\t\t\t}\n\t\t} catch (IOException ioe) {\n\t\t\tthrow new IllegalArgumentException(ioe);\n\t\t} catch (LineUnavailableException lue) {\n\t\t\tthrow new IllegalArgumentException(lue);\n\t\t} catch (UnsupportedAudioFileException uafe) {\n\t\t\tthrow new IllegalArgumentException(uafe);\n\t\t}\n\t}\n\n\tpublic void stop() {\n\t\tif (control != null) {\n\t\t\tcontrol.stop();\n\t\t\tcontrol = null;\n\t\t}\n\t\tif (clip != null) {\n\t\t\tclip.stop();\n\t\t}\n\t\tif (thread != null) {\n\t\t\tthread.stop();\n\t\t\tthread = null;\n\t\t}\n\t}\n\t\n\tpublic void waitUntilDonePlaying() {\n\t\tif (clip != null) {\n\t\t\tif (!clip.isRunning()) {\n\t\t\t\twhile (!clip.isRunning()) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tThread.sleep(50);\n\t\t\t\t\t} catch (InterruptedException ie) {\n\t\t\t\t\t\t// empty\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\twhile (clip.isRunning()) {\n\t\t\t\ttry {\n\t\t\t\t\tThread.sleep(50);\n\t\t\t\t} catch (InterruptedException ie) {\n\t\t\t\t\t// empty\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t@SuppressWarnings(\"rawtypes\")\n\tpublic void opened(Object stream, Map properties) {\n\t\t// TODO Auto-generated method stub\n\t\t\n\t}\n\n\t@SuppressWarnings(\"rawtypes\")\n\tpublic void progress(int bytesread, long microseconds, byte[] pcmdata,\n\t\t\tMap properties) {\n\t\t// TODO Auto-generated method stub\n\t\t\n\t}\n\n\tpublic void stateUpdated(BasicPlayerEvent event) {\n\t\t// TODO Auto-generated method stub\n\t\t\n\t}\n\n\tpublic void setController(BasicController controller) {\n\t\t// TODO Auto-generated method stub\n\t\t\n\t}\n\n\tprivate void rawplay(AudioFormat targetFormat, AudioInputStream din) throws LineUnavailableException, IOException {\n\t\tbyte[] data = new byte[65536];\n\t\tSourceDataLine line = getLine(targetFormat);\n\t\tif (line != null) {\n\t\t\t// Start\n\t\t\tline.start();\n\t\t\tint nBytesRead = 0;\n\t\t\twhile (nBytesRead != -1) {\n\t\t\t\tnBytesRead = din.read(data, 0, data.length);\n\t\t\t\tif (nBytesRead != -1)\n\t\t\t\t\tline.write(data, 0, nBytesRead);\n\t\t\t}\n\t\t\t// Stop\n\t\t\tline.drain();\n\t\t\tline.stop();\n\t\t\tline.close();\n\t\t\tdin.close();\n\t\t}\n\t}\n\n\tprivate SourceDataLine getLine(AudioFormat audioFormat)\n\t\t\tthrows LineUnavailableException {\n\t\tSourceDataLine res = null;\n\t\tDataLine.Info info = new DataLine.Info(SourceDataLine.class,\n\t\t\t\taudioFormat);\n\t\tres = (SourceDataLine) AudioSystem.getLine(info);\n\t\tres.open(audioFormat);\n\t\treturn res;\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/audio/StdAudio.java",
    "content": "/*\n * CS 106A Image Algorithms\n *\n * This instructor-provided file implements the underlying audio system used\n * by your Melody Maker program's Note class.\n *\n * @author see below; modifications made by Marty Stepp\n * @version Tue 2014/05/25\n * - added stuff to facilitate autograders\n * @version Tue 2014/05/11\n * - initial version for 14sp\n *\n * This file and its contents are copyright (C) Stanford University and Marty Stepp,\n * licensed under Creative Commons Attribution 2.5 License.  All rights reserved.\n */\n\npackage stanford.cs106.audio;\n\n/*************************************************************************\n * A simple library for reading, writing, and manipulating .wav files\n * and playing raw audio data.\n *\n * Limitations:\n *   - Does not seem to work properly when reading .wav files from a .jar file.\n *   - Assumes the audio is monaural, with sampling rate of 44,100.\n *************************************************************************/\n\nimport java.applet.*;\nimport java.io.*;\nimport java.net.*;\nimport java.util.*;\nimport javax.sound.sampled.*;\n\n/**\n * <i>Standard audio</i>. This class provides a basic capability for creating,\n * reading, and saving audio.\n * <p>\n * The audio format uses a sampling rate of 44,100 (CD quality audio), 16-bit,\n * monaural.\n * \n * <p>\n * For additional documentation, see <a\n * href=\"http://introcs.cs.princeton.edu/15inout\">Section 1.5</a> of\n * <i>Introduction to Programming in Java: An Interdisciplinary Approach</i> by\n * Robert Sedgewick and Kevin Wayne.\n */\npublic final class StdAudio {\n\t/**\n\t * The sample rate - 44,100 Hz for CD quality audio.\n\t */\n\tpublic static final int SAMPLE_RATE = 44100;\n\n\tprivate static final int BYTES_PER_SAMPLE = 2; // 16-bit audio\n\tprivate static final int BITS_PER_SAMPLE = 16; // 16-bit audio\n\tprivate static final double MAX_16_BIT = Short.MAX_VALUE; // 32,767\n\tprivate static final int SAMPLE_BUFFER_SIZE = 4096;\n\n\tprivate static SourceDataLine line; // to play the sound\n\tprivate static byte[] buffer; // our internal buffer\n\tprivate static int bufferSize = 0; // number of samples currently in\n\t\t\t\t\t\t\t\t\t\t// internal buffer\n\tprivate static boolean muted = false;\n\tprivate static boolean paused = false;\n\tprivate static Set<AudioEventListener> listeners;\n\n\t// static initializer\n\tstatic {\n\t\tinit();\n\t}\n\t\n\tpublic static class AudioEvent {\n\t\tpublic static enum Type { PLAY, LOOP, PAUSE, UNPAUSE, STOP, MUTE, UNMUTE }\n\t\t\n\t\tprivate Type type;\n\t\tprivate Note note;\n\t\tprivate double duration;\n\t\t\n\t\tpublic AudioEvent(Type type) {\n\t\t\tthis(type, 0.0);\n\t\t}\n\t\t\n\t\tpublic AudioEvent(Type type, double duration) {\n\t\t\tthis.type = type;\n\t\t\tthis.duration = duration;\n\t\t}\n\t\t\n\t\tpublic AudioEvent(Type type, Note note, double duration) {\n\t\t\tthis.type = type;\n\t\t\tthis.note = note;\n\t\t\tthis.duration = duration;\n\t\t}\n\t\t\n\t\tpublic double getDuration() {\n\t\t\treturn duration;\n\t\t}\n\t\t\n\t\tpublic Note getNote() {\n\t\t\treturn note;\n\t\t}\n\t\t\n\t\tpublic Type getType() {\n\t\t\treturn type;\n\t\t}\n\t\t\n\t\tpublic String toString() {\n\t\t\treturn \"AudioEvent{Type=\" + type\n\t\t\t\t\t+ (note == null ? \"\" : (\", note=\" + note))\n\t\t\t\t\t+ (duration == 0.0 ? \"\" : (\", duration=\" + duration)) + \"}\";\n\t\t}\n\t}\n\t\n\tpublic static interface AudioEventListener {\n\t\tvoid onAudioEvent(AudioEvent event);\n\t}\n\t\n\tpublic static void addAudioEventListener(AudioEventListener listener) {\n\t\tlisteners.add(listener);\n\t}\n\t\n\t// open up an audio stream\n\tprivate static void init() {\n\t\ttry {\n\t\t\t// 44,100 samples per second, 16-bit audio, mono, signed PCM, little\n\t\t\t// Endian\n\t\t\tAudioFormat format = new AudioFormat((float) SAMPLE_RATE, BITS_PER_SAMPLE, 1, true,\n\t\t\t\t\tfalse);\n\t\t\tDataLine.Info info = new DataLine.Info(SourceDataLine.class, format);\n\n\t\t\tline = (SourceDataLine) AudioSystem.getLine(info);\n\t\t\tline.open(format, SAMPLE_BUFFER_SIZE * BYTES_PER_SAMPLE);\n\n\t\t\t// the internal buffer is a fraction of the actual buffer size, this\n\t\t\t// choice is arbitrary\n\t\t\t// it gets divided because we can't expect the buffered data to line\n\t\t\t// up exactly with when\n\t\t\t// the sound card decides to push out its samples.\n\t\t\tbuffer = new byte[SAMPLE_BUFFER_SIZE * BYTES_PER_SAMPLE / 3];\n\t\t\tlisteners = new HashSet<AudioEventListener>();\n\t\t} catch (Exception e) {\n\t\t\tSystem.err.println(\"Error initializing StdAudio audio system:\");\n\t\t\te.printStackTrace();\n\t\t\tSystem.exit(1);\n\t\t}\n\n\t\t// no sound gets made before this call\n\t\tline.start();\n\t}\n\t\n\t/**\n\t * Removes all audio event listeners from being notified of future\n\t * audio events, if any were present.  If none were present, has no effect.\n\t */\n\tpublic static void clearAudioEventListeners() {\n\t\tlisteners.clear();\n\t}\n\t\n\t/**\n\t * Close standard audio.\n\t */\n\tpublic static void close() {\n\t\tline.drain();\n\t\tline.stop();\n\t}\n\n\t/**\n\t * Returns whether the audio system is currently muted.\n\t */\n\tpublic static boolean isMuted() {\n\t\treturn muted;\n\t}\n\n\t/**\n\t * Returns whether the audio system is currently paused.\n\t */\n\tpublic static boolean isPaused() {\n\t\treturn paused;\n\t}\n\n\t/**\n\t * Loop a sound file (in .wav or .au format) in a background thread.\n\t */\n\t@SuppressWarnings(\"deprecation\")\n\tpublic static void loop(String filename) {\n\t\tif (muted) {\n\t\t\treturn;\n\t\t}\n\t\tURL url = null;\n\t\ttry {\n\t\t\tFile file = new File(filename);\n\t\t\tif (file.canRead())\n\t\t\t\turl = file.toURI().toURL();\n\t\t} catch (MalformedURLException e) {\n\t\t\te.printStackTrace();\n\t\t}\n\t\t// URL url = StdAudio.class.getResource(filename);\n\t\tif (url == null)\n\t\t\tthrow new RuntimeException(\"audio \" + filename + \" not found\");\n\t\tAudioClip clip = Applet.newAudioClip(url);\n\t\tclip.loop();\n\t\tnotifyListeners(new AudioEvent(AudioEvent.Type.LOOP));\n\t}\n\n\t/**\n\t * Create a note (sine wave) of the given frequency (Hz), for the given\n\t * duration (seconds) scaled to the given volume (amplitude).\n\t */\n\tpublic static double[] note(double hz, double duration, double amplitude) {\n\t\tint N = (int) (StdAudio.SAMPLE_RATE * duration);\n\t\tdouble[] a = new double[N + 1];\n\t\tfor (int i = 0; i <= N; i++)\n\t\t\ta[i] = amplitude * Math.sin(2 * Math.PI * i * hz / StdAudio.SAMPLE_RATE);\n\t\treturn a;\n\t}\n\n\t/**\n\t * Write one sample (between -1.0 and +1.0) to standard audio. If the sample\n\t * is outside the range, it will be clipped.\n\t */\n\tpublic static void play(double in) {\n\t\tif (muted) {\n\t\t\treturn;\n\t\t}\n\n\t\t// clip if outside [-1, +1]\n\t\tif (in < -1.0) {\n\t\t\tin = -1.0;\n\t\t}\n\t\tif (in > +1.0) {\n\t\t\tin = +1.0;\n\t\t}\n\n\t\t// convert to bytes\n\t\tshort s = (short) (MAX_16_BIT * in);\n\t\tbuffer[bufferSize++] = (byte) s;\n\t\tbuffer[bufferSize++] = (byte) (s >> 8); // little Endian\n\n\t\t// send to sound card if buffer is full\n\t\tif (bufferSize >= buffer.length) {\n\t\t\tline.write(buffer, 0, buffer.length);\n\t\t\tbufferSize = 0;\n\t\t}\n\t}\n\n\t/**\n\t * Write an array of samples (between -1.0 and +1.0) to standard audio. If a\n\t * sample is outside the range, it will be clipped.\n\t */\n\tpublic static void play(double[] input) {\n\t\tprePlay();\n\t\tfor (int i = 0; i < input.length; i++) {\n\t\t\tplay(input[i]);\n\t\t}\n\t}\n\n\t/**\n\t * Write an array of samples (between -1.0 and +1.0) to standard audio. If a\n\t * sample is outside the range, it will be clipped.\n\t */\n\tpublic static void play(double[] input, double duration) {\n\t\tplay(input);\n\t\tnotifyListeners(new AudioEvent(AudioEvent.Type.PLAY, duration));\n\t}\n\n\t/**\n\t * Write an array of samples (between -1.0 and +1.0) to standard audio. If a\n\t * sample is outside the range, it will be clipped.\n\t */\n\tpublic static void play(Note note, double[] input, double duration) {\n\t\tplay(input);\n\t\tnotifyListeners(new AudioEvent(AudioEvent.Type.PLAY, note, duration));\n\t}\n\n\t/**\n\t * Play a sound file (in .wav or .au format) in a background thread.\n\t */\n\t@SuppressWarnings(\"deprecation\")\n\tpublic static void play(String filename) {\n\t\tprePlay();\n\t\tURL url = null;\n\t\ttry {\n\t\t\tFile file = new File(filename);\n\t\t\tif (file.canRead())\n\t\t\t\turl = file.toURI().toURL();\n\t\t} catch (MalformedURLException e) {\n\t\t\te.printStackTrace();\n\t\t}\n\t\t// URL url = StdAudio.class.getResource(filename);\n\t\tif (url == null)\n\t\t\tthrow new RuntimeException(\"audio \" + filename + \" not found\");\n\t\tAudioClip clip = Applet.newAudioClip(url);\n\t\tclip.play();\n\t}\n\n\t/**\n\t * Read audio samples from a file (in .wav or .au format) and return them as\n\t * a double array with values between -1.0 and +1.0.\n\t */\n\tpublic static double[] read(String filename) {\n\t\tbyte[] data = readByte(filename);\n\t\tint N = data.length;\n\t\tdouble[] d = new double[N / 2];\n\t\tfor (int i = 0; i < N / 2; i++) {\n\t\t\td[i] = ((short) (((data[2 * i + 1] & 0xFF) << 8) + (data[2 * i] & 0xFF)))\n\t\t\t\t\t/ ((double) MAX_16_BIT);\n\t\t}\n\t\treturn d;\n\t}\n\n\t/**\n\t * Removes the given audio event listener from being notified of future\n\t * audio events, if it was present.  If not present, has no effect.\n\t */\n\tpublic static void removeAudioEventListener(AudioEventListener listener) {\n\t\tlisteners.remove(listener);\n\t}\n\t\n\t/**\n\t * Save the double array as a sound file (using .wav or .au format).\n\t */\n\tpublic static void save(String filename, double[] input) {\n\t\t// assumes 44,100 samples per second\n\t\t// use 16-bit audio, mono, signed PCM, little Endian\n\t\tAudioFormat format = new AudioFormat(SAMPLE_RATE, 16, 1, true, false);\n\t\tbyte[] data = new byte[2 * input.length];\n\t\tfor (int i = 0; i < input.length; i++) {\n\t\t\tint temp = (short) (input[i] * MAX_16_BIT);\n\t\t\tdata[2 * i + 0] = (byte) temp;\n\t\t\tdata[2 * i + 1] = (byte) (temp >> 8);\n\t\t}\n\n\t\t// now save the file\n\t\ttry {\n\t\t\tByteArrayInputStream bais = new ByteArrayInputStream(data);\n\t\t\tAudioInputStream ais = new AudioInputStream(bais, format, input.length);\n\t\t\tif (filename.endsWith(\".wav\") || filename.endsWith(\".WAV\")) {\n\t\t\t\tAudioSystem.write(ais, AudioFileFormat.Type.WAVE, new File(filename));\n\t\t\t} else if (filename.endsWith(\".au\") || filename.endsWith(\".AU\")) {\n\t\t\t\tAudioSystem.write(ais, AudioFileFormat.Type.AU, new File(filename));\n\t\t\t} else {\n\t\t\t\tthrow new RuntimeException(\"File format not supported: \" + filename);\n\t\t\t}\n\t\t} catch (Exception e) {\n\t\t\tSystem.out.println(e);\n\t\t\tSystem.exit(1);\n\t\t}\n\t}\n\n\t/**\n\t * Sets whether the audio system is muted.\n\t * If audio is muted, notes do not play and playing methods return immediately.\n\t */\n\tpublic static void setMute(boolean mute) {\n\t\tmuted = mute;\n\t\tnotifyListeners(new AudioEvent(mute ? AudioEvent.Type.MUTE : AudioEvent.Type.UNMUTE));\n\t}\n\n\t/**\n\t * Sets whether the audio system is paused.\n\t * If audio is paused, playing methods \"block\" in an infinite while loop.\n\t */\n\tpublic static void setPaused(boolean pause) {\n\t\tpaused = pause;\n\t\tnotifyListeners(new AudioEvent(pause ? AudioEvent.Type.PAUSE : AudioEvent.Type.UNPAUSE));\n\t}\n\n\t/*\n\t * Informs all added audio event listeners of the given event.\n\t */\n\tprivate static void notifyListeners(AudioEvent event) {\n\t\tfor (AudioEventListener listener : listeners) {\n\t\t\tlistener.onAudioEvent(event);\n\t\t}\n\t}\n\n\t/*\n\t * Maintenance to be done before playing; pause/mute management.\n\t */\n\tprivate static void prePlay() {\n\t\tif (muted) {\n\t\t\treturn;\n\t\t}\n\t\twhile (paused) {\n\t\t\ttry {\n\t\t\t\tThread.sleep(50);\n\t\t\t} catch (InterruptedException ie) {\n\t\t\t\t// empty\n\t\t\t}\n\t\t}\n\t}\n\n\t/*\n\t * Return data as a byte array.\n\t */\n\tprivate static byte[] readByte(String filename) {\n\t\tbyte[] data = null;\n\t\tAudioInputStream ais = null;\n\t\ttry {\n\n\t\t\t// try to read from file\n\t\t\tFile file = new File(filename);\n\t\t\tif (file.exists()) {\n\t\t\t\tais = AudioSystem.getAudioInputStream(file);\n\t\t\t\tdata = new byte[ais.available()];\n\t\t\t\tais.read(data);\n\t\t\t}\n\n\t\t\t// try to read from URL\n\t\t\telse {\n\t\t\t\tURL url = StdAudio.class.getResource(filename);\n\t\t\t\tais = AudioSystem.getAudioInputStream(url);\n\t\t\t\tdata = new byte[ais.available()];\n\t\t\t\tais.read(data);\n\t\t\t}\n\t\t} catch (Exception e) {\n\t\t\tSystem.out.println(e.getMessage());\n\t\t\tthrow new RuntimeException(\"Could not read \" + filename);\n\t\t}\n\n\t\treturn data;\n\t}\n\n\t/**\n\t * Test client - play an A major scale to standard audio.\n\t */\n\tpublic static void main(String[] args) {\n\t\t// 440 Hz for 1 sec\n\t\tdouble freq = 440.0;\n\t\tfor (int i = 0; i <= StdAudio.SAMPLE_RATE; i++) {\n\t\t\tStdAudio.play(0.5 * Math.sin(2 * Math.PI * freq * i / StdAudio.SAMPLE_RATE));\n\t\t}\n\n\t\t// scale increments\n\t\tint[] steps = { 0, 2, 4, 5, 7, 9, 11, 12 };\n\t\tfor (int i = 0; i < steps.length; i++) {\n\t\t\tdouble hz = 440.0 * Math.pow(2, steps[i] / 12.0);\n\t\t\tStdAudio.play(note(hz, 1.0, 0.5));\n\t\t}\n\n\t\t// need to call this in non-interactive stuff so the program doesn't\n\t\t// terminate\n\t\t// until all the sound leaves the speaker.\n\t\tStdAudio.close();\n\n\t\t// need to terminate a Java program with sound\n\t\tSystem.exit(0);\n\t}\n\n\t/*\n\t * This private constructor ensures that StdAudio is non-instantiable.\n\t */\n\tprivate StdAudio() {\n\t\t// empty\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/autograder/GuidedAutograder.java",
    "content": "/*\r\n * @author Marty Stepp\r\n * @version 2017/05/24\r\n * - bug fix for running classes that are not Programs (launch main())\r\n * @version 2017/05/07\r\n * - small bug fix for RandomGenerator label width\r\n * - added constGet\r\n * @version 2016/04/28\r\n * - made static fields/methods show \"static\" in drop-down menu\r\n * @version 2016/04/08\r\n * - fixed bug with user input table layout\r\n * @version 2015/05/28\r\n * - slight improvements in assert* output\r\n * @version 2015/05/19\r\n * - added support for 'main' classes in addition to 'Program' classes\r\n * @version 2015/05/03\r\n * - added JUnit testing functionality\r\n */\r\n\r\npackage stanford.cs106.autograder;\r\n\r\nimport java.awt.*;\r\nimport java.awt.event.*;\r\nimport java.io.*;\r\nimport java.lang.reflect.*;\r\nimport java.util.*;\r\nimport java.util.List;\r\nimport javax.swing.*;\r\nimport javax.swing.event.*;\r\nimport stanford.cs106.diff.*;\r\nimport stanford.cs106.gui.*;\r\nimport stanford.cs106.io.*;\r\nimport stanford.cs106.junit.*;\r\nimport stanford.cs106.program.*;\r\nimport stanford.cs106.reflect.*;\r\nimport stanford.cs106.util.*;\r\nimport stanford.spl.AutograderUnitTestGUI;\r\nimport acm.graphics.*;\r\nimport acm.gui.*;\r\nimport acm.program.*;\r\n\r\npublic abstract class GuidedAutograder implements ActionListener, ChangeListener {\r\n\t// should be set by subclass\r\n\tprotected static Class<? extends Program> STUDENT_CLASS = Program.class;\r\n\tprotected static Class<?>[] REFLECTION_PANEL_CLASSES = new Class<?>[] {STUDENT_CLASS};\r\n\tprotected static Class<?>[] LAUNCH_CLASSES = new Class<?>[] {STUDENT_CLASS};\r\n\tprotected static Class<?>[] JUNIT_CLASSES = new Class<?>[] {};\r\n\tprotected static List<String> USER_INPUTS_ADDITIONAL = new ArrayList<String>();\r\n\r\n\t// autograder version number/date and author's name\r\n\tprotected static String VERSION = \"1.0\";\r\n\tprotected static String AUTHOR = \"Marty Stepp\";\r\n\tprotected static String TITLE = \"\";\r\n\r\n\t// color of onscreen grid lines\r\n\tprotected static Color GRID_LINE_COLOR = new Color(24, 157, 135);\r\n\r\n\tprotected static String INPUTS_DIR = \"inputs/\";\r\n\tprotected static String LATE_DAYS_FILE = \"lateDays.txt\";\r\n\t\r\n\tprotected static String ASSERT_OUTPUT_PREFIX = \"  * \";\r\n\t\r\n\tprotected static boolean SHOW_WINDOW_PANEL = true;\r\n\tprotected static boolean SHOW_FONT_PANEL = true;\r\n\tprotected static boolean SHOW_DELAY_PANEL = true;\r\n\tprotected static boolean SHOW_REFLECTION_PANELS = true;\r\n\tprotected static boolean SHOW_REFLECTION_FIELDS = true;\r\n\tprotected static boolean SHOW_REFLECTION_METHODS = true;\r\n\tprotected static boolean SHOW_MESSAGELOG_PANEL = true;\r\n\tprotected static boolean SHOW_INPUT_INJECT_PANEL = true;\r\n\tprotected static boolean SHOW_USER_INPUT_PANEL = true;\r\n\tprotected static boolean SHOW_RANDOM_PANEL = true;\r\n\tprotected static boolean SHOW_JUNIT_PANEL = false;\r\n\tprotected static boolean SHOW_INIT_RUN_BOXES = true;\r\n\r\n\t// these constants come from acm.program.Program class\r\n\tprivate static final int DEFAULT_WIDTH = 754;\r\n\tprivate static final int DEFAULT_HEIGHT = 492;\r\n\t\r\n\t// dimensions of the message log area; can be changed by subclass\r\n\tprotected static int MESSAGE_LOG_ROWS = 5;\r\n\tprotected static int MESSAGE_LOG_COLS = 40;\r\n\tprotected static Font MESSAGE_LOG_FONT = new Font(\"Monospaced\", Font.PLAIN, 12);\r\n\t\r\n\t// whether to print 'assert' statements that pass in the message log\r\n\tprotected static boolean PRINT_PASSING_ASSERTS = true;\r\n\t\r\n\tprotected static boolean SET_LOOK_AND_FEEL = true;\r\n\t\r\n\t// types of constants/fields that autograder knows how to set/change safely\r\n\tprotected static final Set<Class<?>> SUPPORTED_FIELD_TYPES = new HashSet<Class<?>>();\r\n\tstatic {\r\n\t\tSUPPORTED_FIELD_TYPES.add(Integer.TYPE);\r\n\t\tSUPPORTED_FIELD_TYPES.add(Integer.class);\r\n\t\tSUPPORTED_FIELD_TYPES.add(Double.TYPE);\r\n\t\tSUPPORTED_FIELD_TYPES.add(Double.class);\r\n\t\tSUPPORTED_FIELD_TYPES.add(Boolean.TYPE);\r\n\t\tSUPPORTED_FIELD_TYPES.add(Boolean.class);\r\n\t\tSUPPORTED_FIELD_TYPES.add(Character.TYPE);\r\n\t\tSUPPORTED_FIELD_TYPES.add(Character.class);\r\n\t\tSUPPORTED_FIELD_TYPES.add(Long.TYPE);\r\n\t\tSUPPORTED_FIELD_TYPES.add(Long.class);\r\n\t\tSUPPORTED_FIELD_TYPES.add(Short.TYPE);\r\n\t\tSUPPORTED_FIELD_TYPES.add(Short.class);\r\n\t\tSUPPORTED_FIELD_TYPES.add(Byte.TYPE);\r\n\t\tSUPPORTED_FIELD_TYPES.add(Byte.class);\r\n\t\tSUPPORTED_FIELD_TYPES.add(Float.TYPE);\r\n\t\tSUPPORTED_FIELD_TYPES.add(Float.class);\r\n\t\tSUPPORTED_FIELD_TYPES.add(String.class);\r\n//\t\tSUPPORTED_FIELD_TYPES.add(List.class);\r\n//\t\tSUPPORTED_FIELD_TYPES.add(ArrayList.class);\r\n//\t\tSUPPORTED_FIELD_TYPES.add(Map.class);\r\n//\t\tSUPPORTED_FIELD_TYPES.add(HashMap.class);\r\n\t\tSUPPORTED_FIELD_TYPES.add(new int[0].getClass());\r\n\t\tSUPPORTED_FIELD_TYPES.add(new double[0].getClass());\r\n\t\tSUPPORTED_FIELD_TYPES.add(new char[0].getClass());\r\n\t\tSUPPORTED_FIELD_TYPES.add(new long[0].getClass());\r\n\t\tSUPPORTED_FIELD_TYPES.add(new boolean[0].getClass());\r\n\t\tSUPPORTED_FIELD_TYPES.add(new String[0].getClass());\r\n//\t\tSUPPORTED_FIELD_TYPES.add(GObject.class);\r\n//\t\tSUPPORTED_FIELD_TYPES.add(GLine.class);\r\n//\t\tSUPPORTED_FIELD_TYPES.add(GOval.class);\r\n//\t\tSUPPORTED_FIELD_TYPES.add(GRect.class);\r\n//\t\tSUPPORTED_FIELD_TYPES.add(GLabel.class);\r\n//\t\tSUPPORTED_FIELD_TYPES.add(GPolygon.class);\r\n\t}\r\n\t\r\n\tpublic static Color getGridLineColor() {\r\n\t\treturn GRID_LINE_COLOR;\r\n\t}\r\n\r\n\tpublic static void setGridLineColor(Color color) {\r\n\t\tGRID_LINE_COLOR = color;\r\n\t}\r\n\r\n\t// fields\r\n\tprotected Program studentProgram = null;\r\n\tprotected StudentProgramRunnerThread runnerThread = null;\r\n\tprotected Container overallPanel;\r\n\tprotected JCheckBox initRunBox;\r\n\tprotected JCheckBox restartBox;\r\n\t\r\n\t@SuppressWarnings(\"rawtypes\")\r\n\tprotected JComboBox inputsBox;\r\n\t@SuppressWarnings(\"rawtypes\")\r\n\tprotected JComboBox outputsBox;\r\n\t\r\n\tprotected JFrame autograderFrame;\r\n\tprotected JScrollPane messageLogScrollPane;\r\n\tprotected JSlider timeSlider;\r\n\tprotected IntField randomSeedField;\r\n\tprotected IntField randomIntField;\r\n\tprotected JCheckBox uppercaseBox;\r\n\tprotected JTextArea messageLog;\r\n\tprotected Map<String, Container> panelTable = new HashMap<String, Container>();\r\n\tprotected Map<Class<?>, ReflectionPanel> reflectionPanels = new HashMap<Class<?>, ReflectionPanel>();\r\n\tprotected int labelWidth;\r\n\tprotected int windowWidth = DEFAULT_WIDTH;\r\n\tprotected int windowHeight = DEFAULT_HEIGHT;\r\n\t\r\n\t// assert counts\r\n\tprotected int passCount = 0;\r\n\tprotected int failCount = 0;\r\n\t\r\n\tprotected boolean assertUsingGui = false;\r\n\t\r\n\tprotected LookAndFeel lookAndFeel = UIManager.getLookAndFeel();\r\n\r\n\t// runs the overall autograder program\r\n\tpublic void start() {\r\n\t\t// helps with loading internal resources from a JAR\r\n\t\tResourceUtils.setResourceLoaderClass(getClass());\r\n\r\n\t\tcreateComponents();\r\n\t\tdoLayout();\r\n\t\t\r\n\t\t// show the window!\r\n\t\tautograderFrame.add(overallPanel);\r\n\t\tautograderFrame.pack();\r\n\t\tautograderFrame.setVisible(true);\r\n\t\t\r\n\t\tif (!SET_LOOK_AND_FEEL) {\r\n\t\t\t// put look 'n' feel back\r\n\t\t\ttry {\r\n\t\t\t\tUIManager.setLookAndFeel(lookAndFeel);\r\n\t\t\t} catch (Exception e) {\r\n\t\t\t\t// empty\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\t// make it so that the field value display updates as the game goes on\r\n\t\tif (SHOW_REFLECTION_PANELS) {\r\n\t\t\tnew Thread(new FieldValueUpdateRunnable()).start();\r\n\t\t}\r\n\t}\r\n\r\n\t// constructs all the various components and adds event listeners to them\r\n\t@SuppressWarnings({ \"unchecked\", \"rawtypes\" })\r\n\tprotected void createComponents() {\r\n\t\t//if (SET_LOOK_AND_FEEL) {\r\n\t\t\tGuiUtils.setSystemLookAndFeel();\r\n\t\t//}\r\n\r\n\t\tString title = STUDENT_CLASS.getName();\r\n\t\tif (TITLE != null && !TITLE.isEmpty()) {\r\n\t\t\ttitle = TITLE;\r\n\t\t}\r\n\t\tautograderFrame = new JFrame(title + \" Autograder v\" + VERSION + \" by \" + AUTHOR);\r\n\t\tGuiUtils.rememberWindowLocation(autograderFrame);\r\n\t\tautograderFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\r\n\r\n\t\toverallPanel = Box.createVerticalBox();\r\n\r\n\t\tinitRunBox = new JCheckBox(\"Call init()/run()\", true);\r\n\t\tinitRunBox.setMnemonic('C');\r\n\t\trestartBox = new JCheckBox(\"Restart on constant change\", true);\r\n\t\trestartBox.setMnemonic('R');\r\n\r\n\t\ttimeSlider = new JSlider(1, 7);\r\n\t\ttimeSlider.setValue(4);\r\n\t\ttimeSlider.setMajorTickSpacing(1);\r\n\t\ttimeSlider.setPaintLabels(false);\r\n\t\ttimeSlider.setPaintTicks(true);\r\n\t\ttimeSlider.setSnapToTicks(true);\r\n\t\ttimeSlider.addChangeListener(this);\r\n\t\ttimeSlider.setPreferredSize(new Dimension(100, timeSlider.getPreferredSize().height));\r\n\t\t\r\n\t\trandomSeedField = new IntField();\r\n\t\trandomSeedField.setActionCommand(\"Random seed\");\r\n\t\trandomIntField = new IntField(0);\r\n\t\trandomIntField.setActionCommand(\"Random int\");\r\n\r\n\t\tinputsBox = new JComboBox();\r\n\t\tinputsBox.setEditable(false);\r\n\t\tinputsBox.addItem(\"(select a script)\");\r\n\t\tFile[] files = new File(INPUTS_DIR).listFiles();\r\n\t\tif (files != null && files.length > 0) {\r\n\t\t\tArrays.sort(files);\r\n\t\t\tfor (File file : files) {\r\n\t\t\t\tif (file.getName().startsWith(\"input\")) {\r\n\t\t\t\t\tinputsBox.addItem(file.getName().replace(\"input-\", \"\").replace(\".txt\", \"\"));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\toutputsBox = new JComboBox();\r\n\t\toutputsBox.setEditable(false);\r\n\t\toutputsBox.addItem(\"(select an output)\");\r\n\t\tif (files != null && files.length > 0) {\r\n\t\t\tfor (File file : files) {\r\n\t\t\t\tif (file.getName().startsWith(\"expected\")) {\r\n\t\t\t\t\toutputsBox.addItem(file.getName().replace(\"expected-\", \"\").replace(\".txt\", \"\"));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tuppercaseBox = new JCheckBox(\"Uppercase?\", true);\r\n\t\t\r\n\t\tmessageLog = new JTextArea(MESSAGE_LOG_ROWS, MESSAGE_LOG_COLS);\r\n\t\tmessageLog.setFont(MESSAGE_LOG_FONT);\r\n\t\tmessageLog.setEditable(false);\r\n\t\tmessageLogScrollPane = new JScrollPane(messageLog);\r\n\t\tmessageLogScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);\r\n\t\tmessageLogScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);\r\n\r\n\t\t// just for kicks, put their lateDays.txt into message log\r\n\t\tdisplayLateness();\r\n\t}\r\n\r\n\t// adds all of the various components to the screen layout\r\n\tprotected Container doLayout() {\r\n\t\tfinal int GAP = 15;\r\n\t\t\r\n\t\t// program launcher panel\r\n\t\tList<Component> launchButtons = new ArrayList<Component>();\r\n\t\tfor (Class<?> clazz : LAUNCH_CLASSES) {\r\n\t\t\tJButton launchButton = GuiUtils.createButton(\"Run \" + clazz.getName(), 'B', this);\r\n\t\t\tlaunchButton.setActionCommand(\"Launch \" + clazz.getName());\r\n\t\t\tFont buttonFont = launchButton.getFont();\r\n\t\t\tlaunchButton.setFont(buttonFont.deriveFont(Font.BOLD, buttonFont.getSize() + 2f));\r\n\t\t\tint wider = 10;  // 50\r\n\t\t\tint taller = 16;\r\n\t\t\tDimension launchSize = new Dimension(launchButton.getPreferredSize().width + wider, launchButton.getPreferredSize().height + taller);\r\n\t\t\tlaunchButton.setPreferredSize(launchSize);\r\n\t\t\tlaunchButtons.add(launchButton);\r\n\t\t}\r\n\t\tif (SHOW_INIT_RUN_BOXES) {\r\n\t\t\tlaunchButtons.add(Box.createHorizontalStrut(10));\r\n\t\t\tlaunchButtons.add(initRunBox);\r\n\t\t\tlaunchButtons.add(restartBox);\r\n\t\t\taddPanel(\"Launch\", launchButtons);\r\n\t\t} else {\r\n\t\t\taddPanel(\"Launch\", new FlowLayout(FlowLayout.CENTER), launchButtons);\r\n\t\t}\r\n\r\n\t\tlabelWidth = new JLabel(\"JUnit automated tests: \").getPreferredSize().width;\r\n\t\tif (SHOW_JUNIT_PANEL) {\r\n\t\t\tJPanel junitPanel = new JPanel();\r\n\t\t\tfor (Class<?> clazz : JUNIT_CLASSES) {\r\n\t\t\t\tString className = clazz.getName();\r\n\t\t\t\tJButton junitClassButton = GuiUtils.createButton(className, \"Run JUnit \" + className, ' ', this);\r\n\t\t\t\tjunitClassButton.setFont(junitClassButton.getFont().deriveFont(Font.BOLD));\r\n\t\t\t\tjunitPanel.add(junitClassButton);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\taddPanel(\"JUnit tests\",\r\n\t\t\t\t\tGuiUtils.createLabel(\"JUnit automated tests: \", labelWidth),\r\n\t\t\t\t\tjunitPanel\r\n\t\t\t);\r\n\t\t}\r\n\t\t\r\n\t\t// window settings panel\r\n\t\tif (SHOW_WINDOW_PANEL) {\r\n\t\t\taddPanel(\"Window\",\r\n\t\t\t\t\tGuiUtils.createLabel(\"Window: \", labelWidth),\r\n\t\t\t\t\tGuiUtils.createButton(\"420x600px (Default)\", \"Default window size\", 'D', this),\r\n\t\t\t\t\tGuiUtils.createButton(\"700x500px\", \"Wide window size\", ' ', this),\r\n\t\t\t\t\tGuiUtils.createButton(\"300x700px\", \"Tall window size\", ' ', this));\r\n\t\t}\r\n\t\r\n\t\tif (SHOW_DELAY_PANEL) {\r\n\t\t\t// delay MS panel\r\n\t\t\taddPanel(\"Delay\",\r\n\t\t\t\t\tGuiUtils.createLabel(\"DELAY: \", labelWidth, /* rightAligned */true),\r\n\t\t\t\t\tGuiUtils.createButton(\"Default\", \"Default DELAY\", 'u', this),\r\n\t\t\t\t\tGuiUtils.createButton(\"1ms\", \"1ms DELAY\", ' ', this),\r\n\t\t\t\t\tGuiUtils.createButton(\"5ms\", \"5ms DELAY\", ' ', this),\r\n\t\t\t\t\tGuiUtils.createButton(\"100ms\", \"100ms DELAY\", ' ', this),\r\n\t\t\t\t\tGuiUtils.createButton(\"1s\", \"1000ms DELAY\", ' ', this),\r\n\t\t\t\t\tGuiUtils.createButton(\"1000s\", \"1000000ms DELAY\", ' ', this),\r\n\t\t\t\t\ttimeSlider,\r\n\t\t\t\t\tGuiUtils.createButton(\"Tick\", \"Tick\", 'T', this));\r\n\t\t}\r\n\t\t\r\n\t\tdoExtraLayout();\r\n\r\n\t\tif (SHOW_INPUT_INJECT_PANEL) {\r\n\t\t\taddPanel(\"Inputs\",\r\n\t\t\t\t\tGuiUtils.createLabel(\"Input scripts: \", labelWidth),\r\n\t\t\t\t\tinputsBox,\r\n\t\t\t\t\tGuiUtils.createButton(\"Inject\", \"Inject input\", 'I', this),\r\n\t\t\t\t\tBox.createHorizontalStrut(GAP),\r\n\t\t\t\t\tnew JLabel(\"outputs: \"),\r\n\t\t\t\t\toutputsBox,\r\n\t\t\t\t\tGuiUtils.createButton(\"Diff\", \"Diff output\", 'D', this),\r\n\t\t\t\t\tBox.createHorizontalStrut(GAP),\r\n\t\t\t\t\tGuiUtils.createButton(\"Clear console\", ' ', this));\r\n\t\t}\r\n\t\t\r\n\t\tif (SHOW_USER_INPUT_PANEL) {\r\n\t\t\tString inputs = \"Yes A B C D E F G H I J K L M ? Enter \" +\r\n\t\t                    \"No  N O P Q R S T U V W X Y Z . Space\";\r\n\t\t\tint additionalGridWidth = 2;   // 2 columns per cell for user inputs additional\r\n\t\t\tint cols = 16;\r\n\t\t\tint rows = 2;\r\n\r\n\t\t\t// add another row of inputs for every <= 16 additional inputs you have\r\n\t\t\tif (!USER_INPUTS_ADDITIONAL.isEmpty()) { \r\n\t\t\t\trows += (int) Math.ceil((double) USER_INPUTS_ADDITIONAL.size() / cols / additionalGridWidth);\r\n\t\t\t}\r\n\t\t\tJPanel userInputPanel = new JPanel(new TableLayout(rows, cols));\r\n\t\t\t// add\r\n\t\t\tfor (String input : inputs.split(\"[ \\t]+\")) {\r\n\t\t\t\tJButton inputButton = GuiUtils.createButton(input, \"User input \" + input, ' ', this);\r\n\t\t\t\tDimension size = inputButton.getPreferredSize();\r\n\t\t\t\tif (size.width < size.height) {\r\n\t\t\t\t\tsize.width = size.height;\r\n\t\t\t\t\tinputButton.setPreferredSize(size);\r\n\t\t\t\t}\r\n\t\t\t\tuserInputPanel.add(inputButton);\r\n\t\t\t}\r\n\t\t\tfor (String input : USER_INPUTS_ADDITIONAL) {\r\n\t\t\t\tJButton inputButton = GuiUtils.createButton(input, \"User input \" + input, ' ', this);\r\n\t\t\t\tuserInputPanel.add(inputButton, \"gridwidth=\" + additionalGridWidth);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t// fill rest with empty panels\r\n\t\t\twhile (userInputPanel.getComponentCount() < rows * cols) {\r\n\t\t\t\tuserInputPanel.add(new JPanel());   // empty square\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\taddPanel(\"User input\",\r\n\t\t\t\t\tGuiUtils.createLabel(\"User input: \", labelWidth),\r\n\t\t\t\t\tuserInputPanel,\r\n\t\t\t\t\tuppercaseBox\r\n\t\t\t);\r\n\t\t}\r\n\t\t\r\n\t\tif (SHOW_RANDOM_PANEL) {\r\n\t\t\taddPanel(\"RandomGenerator\",\r\n\t\t\t\t\tGuiUtils.createLabel(\"RandomGenerator: \", labelWidth),\r\n\t\t\t\t\tnew JLabel(\"Seed: \"),\r\n\t\t\t\t\trandomSeedField,\r\n\t\t\t\t\tGuiUtils.createButton(\"Set\", \"Random seed\", 'R', this),\r\n\t\t\t\t\tGuiUtils.createButton(\"Unset\", \"Random seed unset\", 'u', this),\r\n\t\t\t\t\tBox.createHorizontalStrut(GAP),\r\n\t\t\t\t\tnew JLabel(\"Fixed int: \"),\r\n\t\t\t\t\trandomIntField,\r\n\t\t\t\t\tGuiUtils.createButton(\"Set\", \"Random int\", ' ', this),\r\n\t\t\t\t\tGuiUtils.createButton(\"Unset\", \"Random int unset\", 'n', this)\r\n\t\t\t\t\t);\r\n\t\t}\r\n\t\t\r\n\t\tif (SHOW_REFLECTION_PANELS) {\r\n\t\t\tfor (Class<?> clazz : REFLECTION_PANEL_CLASSES) {\r\n\t\t\t\tReflectionPanel panel = new ReflectionPanel(clazz);\r\n\t\t\t\tpanel.doLayout();\r\n\t\t\t\treflectionPanels.put(clazz, panel);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (SHOW_MESSAGELOG_PANEL) {\r\n\t\t\t// message log\r\n\t\t\taddPanel(\"Message Log\",\r\n\t\t\t\t\tnew JLabel(\"Message Log:\"));\r\n\t\t\toverallPanel.add(messageLogScrollPane);\r\n\t\t}\r\n\t\treturn overallPanel;\r\n\t}\r\n\t\r\n\tprotected void doExtraLayout() {\r\n\t\t// does nothing; override me\r\n\t}\r\n\r\n\t// required by ActionListener interface\r\n\t// listens to events on controls in the autograder GUI\r\n\tpublic void actionPerformed(ActionEvent event) {\r\n\t\tString cmd = event.getActionCommand().intern();\r\n\t\tif (cmd.startsWith(\"Launch \")) {\r\n\t\t\tString className = cmd.replace(\"Launch \", \"\");\r\n\t\t\tstudentProgramThreadLaunch(className);\r\n\t\t} else if (cmd.startsWith(\"Run JUnit \")) {\r\n\t\t\tString className = cmd.replace(\"Run JUnit \", \"\");\r\n\t\t\tjunitLaunch(className);\r\n\t\t} else if (cmd == \"Default window size\") {\r\n\t\t\t// empty\r\n\t\t} else if (cmd == \"Wide window size\") {\r\n\t\t\tconstantsSetAllWindow(700, 500);\r\n\t\t} else if (cmd == \"Tall window size\") {\r\n\t\t\tconstantsSetAllWindow(300, 700);\r\n\t\t} else if (cmd == \"Tick\") {\r\n//\t\t\tif (hangman == null) {\r\n//\t\t\t\treturn;\r\n//\t\t\t}\r\n//\t\t\thangman.pauseTick();\r\n\t\t} else if (cmd == \"Inject input\") {\r\n\t\t\tinjectInput();\r\n\t\t} else if (cmd == \"Diff output\") {\r\n\t\t\tdiffOutput();\r\n\t\t} else if (cmd == \"Clear console\") {\r\n\t\t\tif (JOptionPane.showConfirmDialog(autograderFrame, \"Are you sure you want to clear the console?\", \"Are you sure?\", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {\r\n\t\t\t\tif (studentProgram != null) {\r\n\t\t\t\t\t((ConsoleProgram) studentProgram).getConsole().clear();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else if (cmd == \"Random seed\") {\r\n\t\t\tint seed = randomSeedField.getValue();\r\n\t\t\tReflectionUtils.staticMethodInvoke(\"RandomGenerator\", \"setAllSeed\", seed);\r\n\t\t\tprintlnLog(\"set RandomGenerator seed to \" + seed);\r\n\t\t} else if (cmd == \"Random seed unset\") {\r\n\t\t\trandomSeedField.setText(\"\");\r\n\t\t\tReflectionUtils.staticMethodInvoke(\"RandomGenerator\", \"setAllSeed\", new Object[] {null});\r\n\t\t\tprintlnLog(\"unset RandomGenerator seed\");\r\n\t\t} else if (cmd == \"Random int\") {\r\n\t\t\tint rig = randomIntField.getValue();\r\n\t\t\tReflectionUtils.staticMethodInvoke(\"RandomGenerator\", \"rigInt\", rig);\r\n\t\t\tReflectionUtils.staticMethodInvoke(\"RandomGenerator\", \"rigDouble\", (double) rig);\r\n\t\t\tprintlnLog(\"set RandomGenerator so all nextInt/Double calls return \" + rig);\r\n\t\t} else if (cmd == \"Random int unset\") {\r\n\t\t\trandomIntField.setText(\"\");\r\n\t\t\tReflectionUtils.staticMethodInvoke(\"RandomGenerator\", \"rigInt\", new Object[] {null});\r\n\t\t\tReflectionUtils.staticMethodInvoke(\"RandomGenerator\", \"rigDouble\", new Object[] {null});\r\n\t\t\tprintlnLog(\"unset RandomGenerator nextInt/Double fixed value\");\r\n\t\t} else if (cmd.startsWith(\"User input \")) {\r\n\t\t\tuserInput(cmd, event);\r\n\t\t}\r\n\t}\r\n\r\n\t// required by ChangeListener interface\r\n\tpublic void stateChanged(ChangeEvent event) {\r\n\t\t// scaleTimeBySlider(timeSlider.getValue());\r\n\t}\r\n\r\n\t// very limited subset of JUnit-style methods with pass/fail counting and \r\n\t// test result printing to message log\r\n\tprotected void assertTrue(String msg, boolean b) {\r\n\t\tif (b) {\r\n\t\t\tif (PRINT_PASSING_ASSERTS) {\r\n\t\t\t\tprintlnLog(ASSERT_OUTPUT_PREFIX + msg + \": pass\");\r\n\t\t\t}\r\n\t\t\tpassCount++;\r\n\t\t} else {\r\n\t\t\tprintlnLog(ASSERT_OUTPUT_PREFIX + msg + \": FAIL!\");\r\n\t\t\tfailCount++;\r\n\t\t}\r\n\t}\r\n\t\r\n\tprotected void assertFalse(String msg, boolean b) {\r\n\t\tassertTrue(msg, !b);\r\n\t}\r\n\t\r\n\tprotected void assertEquals(String msg, Object expected, Object actual) {\r\n\t\tif (expected == actual || (expected != null && actual != null && expected.equals(actual))) {\r\n\t\t\tif (PRINT_PASSING_ASSERTS) {\r\n\t\t\t\tprintlnLog(ASSERT_OUTPUT_PREFIX + msg + \": pass\");\r\n\t\t\t}\r\n\t\t\tpassCount++;\r\n\t\t} else {\r\n\t\t\tprintlnLog(ASSERT_OUTPUT_PREFIX + msg + \": FAIL! (expected <\" + expected + \">, got <\" + actual + \">)\");\r\n\t\t\tfailCount++;\r\n\t\t}\r\n\t}\r\n\t\r\n\tprotected void assertPrintCounts() {\r\n\t\tassertPrintCounts(true);\r\n\t}\r\n\t\r\n\tprotected void assertPrintCounts(boolean resetAfter) {\r\n\t\tint total = (passCount + failCount);\r\n\t\tprintlnLog(\"Passed \" + passCount + \" out of \" + total + \" tests.\"\r\n\t\t\t\t+ (total == passCount ? \" (all tests passed!)\" : \"\"));\r\n\t\tif (resetAfter) {\r\n\t\t\tassertResetCounts();\r\n\t\t}\r\n\t}\r\n\t\r\n\tprotected void assertResetCounts() {\r\n\t\tpassCount = 0;\r\n\t\tfailCount = 0;\r\n\t}\r\n\t\r\n\t// adds a JPanel to the autograder's layout\r\n\tprotected JPanel addPanel(String name, Collection<Component> components) {\r\n\t\treturn addPanel(name, components.toArray(new Component[0]));\r\n\t}\r\n\t\r\n\tprotected JPanel addPanel(String name, Component... components) {\r\n\t\treturn addPanel(name, new FlowLayout(FlowLayout.LEFT), components);\r\n\t}\r\n\r\n\tprotected JPanel addPanel(String name, LayoutManager layout, Collection<Component> components) {\r\n\t\treturn addPanel(name, layout, components.toArray(new Component[0]));\r\n\t}\r\n\t\r\n\tprotected JPanel addPanel(String name, LayoutManager layout, Component... components) {\r\n\t\tJPanel panel = new JPanel(layout);\r\n\t\tfor (Component comp : components) {\r\n\t\t\tif (comp != null) {\r\n\t\t\t\tpanel.add(comp);\r\n\t\t\t}\r\n\t\t}\r\n\t\tpanelTable.put(name, panel);\r\n\t\toverallPanel.add(panel);\r\n\t\treturn panel;\r\n\t}\r\n\t\r\n\tprotected void diffOutput() {\r\n\t\tif (studentProgram == null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tString selected = String.valueOf(outputsBox.getSelectedItem());\r\n\t\tif (selected == null || selected.isEmpty() || selected.startsWith(\"(\")) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tString expected = IOUtils.readEntireFile(INPUTS_DIR + \"expected-\" + selected + \".txt\");\r\n\t\tString output = ProgramUtils.getConsoleOutput((ConsoleProgram) studentProgram);\r\n\t\tnew DiffGui(\"Expected output\", expected, \"Student output\", output).show();\r\n\t}\r\n\t\r\n\tprotected void injectInput() {\r\n\t\tif (studentProgram == null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tString selected = String.valueOf(inputsBox.getSelectedItem());\r\n\t\tif (selected == null || selected.isEmpty() || selected.startsWith(\"(\")) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\toutputsBox.setSelectedItem(selected);\r\n\t\tString fileText = IOUtils.readEntireFile(INPUTS_DIR + \"input-\" + selected + \".txt\");\r\n\t\tProgramUtils.injectConsoleInput((ConsoleProgram) studentProgram, fileText);\r\n\t\tprintlnLog(\"loaded input script from \" + selected);\r\n\t}\r\n\t\r\n\tprotected void userInput(String cmd, ActionEvent event) {\r\n\t\tString userInput = cmd.replace(\"User input \", \"\").intern();\r\n\t\tif (userInput == \"Enter\") {\r\n\t\t\tuserInput = \"\\n\";\r\n\t\t} else if (userInput == \"Space\") {\r\n\t\t\tuserInput = \" \";\r\n\t\t}\r\n\t\tif ((userInput.length() == 1 && uppercaseBox.isSelected())\r\n\t\t\t\t|| (event.getModifiers() & KeyEvent.SHIFT_DOWN_MASK) != 0) {\r\n\t\t\tuserInput = userInput.toUpperCase();\r\n\t\t} else {\r\n\t\t\tuserInput = userInput.toLowerCase();\r\n\t\t}\r\n\t\tif (!userInput.endsWith(\"\\n\")) {\r\n\t\t\tuserInput += \"\\n\";\r\n\t\t}\r\n\t\tProgramUtils.injectConsoleInput((ConsoleProgram) studentProgram, userInput);\r\n\t}\r\n\t\r\n\t// stops the current student program thread, if any, and closes its JFrame\r\n\tprotected void studentProgramThreadKill() {\r\n\t\tif (runnerThread == null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (runnerThread.started && runnerThread.isAlive()) {\r\n\t\t\trunnerThread.interrupt();\r\n\t\t}\r\n\t\trunnerThread.killMe();\r\n\t\tstudentProgram = null;\r\n\t\trunnerThread = null;\r\n\t}\r\n\r\n\t// (re)starts student program in its own JFrame and Thread,\r\n\t// if the \"restart on constant changed\" box is checked\r\n\tprotected void studentProgramThreadLaunchIfBoxChecked() {\r\n\t\tif (restartBox.isSelected()) {\r\n\t\t\tstudentProgramThreadLaunch();\r\n\t\t}\r\n\t}\r\n\r\n\t// (re)starts program in its own JFrame and Thread\r\n\tprotected void studentProgramThreadLaunch() {\r\n\t\tstudentProgramThreadLaunch(STUDENT_CLASS);\r\n\t}\r\n\t\r\n\t@SuppressWarnings(\"unchecked\")\r\n\tprotected void studentProgramThreadLaunch(String className) {\r\n\t\ttry {\r\n\t\t\tstudentProgramThreadLaunch((Class<? extends Program>) Class.forName(className));\r\n\t\t} catch (ClassNotFoundException e) {\r\n\t\t\tthrow new ReflectionRuntimeException(e);\r\n\t\t}\r\n\t}\r\n\t\r\n\tprotected void junitLaunch(String className) {\r\n\t\ttry {\r\n\t\t\tjunitLaunch(Class.forName(className));\r\n\t\t} catch (ClassNotFoundException e) {\r\n\t\t\tthrow new ReflectionRuntimeException(e);\r\n\t\t}\r\n\t}\r\n\t\r\n\tprotected void junitLaunch(final Class<?> clazz) {\r\n\t\tstudentProgramThreadKill();\r\n\t\tprintlnLog(\"running JUnit tests from \" + clazz.getName());\r\n\t\t\r\n\t\tfinal AutograderUnitTestGUI testGUI = AutograderUnitTestGUI.getInstance(/* JavaBackEnd */ null);\r\n\t\ttestGUI.clearTestResults();\r\n\t\ttestGUI.clearTests();\r\n\t\ttestGUI.setCheckboxesShown(false);\r\n\t\ttestGUI.setDescription(\"Click a test to see error details.\");\r\n\t\t\r\n\t\t// look for JUnit test methods and add them to autograder test runner GUI\r\n\t\tMethod[] methods = clazz.getMethods();\r\n\t\tArrays.sort(methods, new ReflectionUtils.MethodNameComparator());\r\n\t\tfinal List<Method> testMethods = new ArrayList<Method>();\r\n\t\tfor (Method method : methods) {\r\n\t\t\tif (JUnitUtils.isJUnitMethod(clazz, method)) {\r\n\t\t\t\tString categoryName = JUnitUtils.getTestCategory(clazz, method);\r\n\t\t\t\ttestGUI.addTest(method.getName(), categoryName);\r\n\t\t\t\ttestMethods.add(method);\r\n\t\t\t}\r\n\t\t}\r\n\t\ttestGUI.setVisible(true);\r\n\t\t\r\n\t\tRunnable junitRunnable = new Runnable() {\r\n\t\t\tpublic void run() {\r\n\t\t\t\t// look for JUnit test methods and run them\r\n\t\t\t\tfor (Method method : testMethods) {\r\n\t\t\t\t\tJUnitUtils.runJUnitMethod(clazz, method, testGUI);\r\n\t\t\t\t}\r\n\t\t\t\ttestGUI.setTestingCompleted(true);\r\n\t\t\t\tprintlnLog(\"Passed \" + testGUI.getPassedCount() + \" of \"\r\n\t\t\t\t\t\t+ testGUI.getTestCount() + \" tests.\");\r\n\t\t\t}\r\n\t\t};\r\n\t\tThread thread = new Thread(junitRunnable);\r\n\t\tthread.start();\r\n\t}\r\n\r\n\tprotected void studentProgramThreadLaunch(Class<? extends Program> clazz) {\r\n\t\tstudentProgramThreadKill();\r\n\t\t\r\n\t\tprintlnLog(\"launching \" + clazz.getName());\r\n\t\trunnerThread = new StudentProgramRunnerThread(clazz, windowWidth, windowHeight, initRunBox.isSelected());\r\n\t\tstudentProgram = runnerThread.getProgram();\r\n\t\t// scaleTimeBySlider(timeSlider.getValue());\r\n\t\trunnerThread.start();\r\n\t\ttry {\r\n\t\t\trunnerThread.join(50);\r\n\t\t} catch (InterruptedException ie) {\r\n\t\t\t// empty\r\n\t\t}\r\n\t}\r\n\r\n\t// sets all constants related to the game window to the given values\r\n\tprotected void constantsSetAllWindow(int width, int height) {\r\n\t\tprintlnLog(\"setting window size to \" + width + \"x\" + height + \"px (-1 = defaults)\");\r\n\t\tstudentProgramThreadLaunchIfBoxChecked();\r\n\t}\r\n\r\n\t@SuppressWarnings(\"unchecked\")\r\n\tprotected <T> T constGet(String name) {\r\n\t\treturn (T) ReflectionUtils.getConstantValue(STUDENT_CLASS, studentProgram, name);\r\n\t}\r\n\r\n\tprotected int constGetInt(String name) {\r\n\t\treturn ReflectionUtils.getConstantValueInt(STUDENT_CLASS, studentProgram, name);\r\n\t}\r\n\r\n\t// sets the given constant in the student's class\r\n\t// to the given value;\r\n\t// if no such constant is found, prints an error to the message log\r\n\tprotected void constSet(String name, Object value) {\r\n\t\tname = name.intern();\r\n\t\tif (ReflectionUtils.constantExists(STUDENT_CLASS, name)) {\r\n\t\t\tReflectionUtils.setConstantValue(STUDENT_CLASS, studentProgram, name, value);\r\n\t\t} else if (ReflectionUtils.constantExists(GraphicsProgram.class, name)) {\r\n\t\t\tReflectionUtils.setConstantValue(GraphicsProgram.class, studentProgram, name, value);\r\n\t\t} else {\r\n\t\t\tprintlnLog(\"ERROR: No constant named '\" + name\r\n\t\t\t\t\t+ \"' exists in the student's classes.\");\r\n\t\t}\r\n\t}\r\n\r\n\t// sets the given constant in the student's classes\r\n\t// to the given value, if that value is positive, else sets to the given\r\n\t// default value;\r\n\t// if no such constant is found, prints an error to the message log\r\n\tprotected void constSetMaybe(String name, int value, Object defaultValue) {\r\n\t\tif (value >= 0) {\r\n\t\t\tconstSet(name, value);\r\n\t\t} else {\r\n\t\t\tconstSet(name, defaultValue);\r\n\t\t}\r\n\t}\r\n\r\n\t// sets the given constant in the student's classes\r\n\t// to the given value, if that value is positive, else sets to the given\r\n\t// default value;\r\n\t// if no such constant is found, prints an error to the message log\r\n\tprotected void constSetMaybe(String name, double value, Object defaultValue) {\r\n\t\tif (value > 0) {\r\n\t\t\tconstSet(name, value);\r\n\t\t} else {\r\n\t\t\tconstSet(name, defaultValue);\r\n\t\t}\r\n\t}\r\n\t\r\n\tprotected int getWindowWidth() {\r\n\t\treturn windowWidth;\r\n\t}\r\n\r\n\tprotected int getWindowHeight() {\r\n\t\treturn windowHeight;\r\n\t}\r\n\t\r\n\tprotected void setWindowWidth(int width) {\r\n\t\tthis.windowWidth = width;\r\n\t}\r\n\t\r\n\tprotected void setWindowHeight(int height) {\r\n\t\tthis.windowHeight = height;\r\n\t}\r\n\r\n\tprotected void setWindowSize(int width, int height) {\r\n\t\tthis.windowWidth = width;\r\n\t\tthis.windowHeight = height;\r\n\t}\r\n\r\n\t// shows lateDays.txt information in message log\r\n\tprotected void displayLateness() {\r\n\t\tFile lateDaysFile = new File(LATE_DAYS_FILE);\r\n\t\tif (lateDaysFile.exists()) {\r\n\t\t\ttry {\r\n\t\t\t\tScanner input = new Scanner(lateDaysFile);\r\n\t\t\t\tStringBuilder sb = new StringBuilder();\r\n\t\t\t\twhile (input.hasNextLine()) {\r\n\t\t\t\t\tString line = input.nextLine();\r\n\t\t\t\t\tline = line.replace(\"assignment_due_time: \", \"assignment_due_time:     \");\r\n\t\t\t\t\tsb.append(line);\r\n\t\t\t\t\tsb.append('\\n');\r\n\t\t\t\t}\r\n\t\t\t\tinput.close();\r\n\t\t\t\tsb.append(\"=============================================\");\r\n\t\t\t\tprintlnLog(sb.toString());\r\n\t\t\t} catch (FileNotFoundException fnfe) {\r\n\t\t\t\tprintlnLog(\"Unable to read \" + LATE_DAYS_FILE + \": \" + fnfe);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// adds one grid line at the given points\r\n\tprotected void gridLineAdd(GContainer container, double x1, double y1, double x2, double y2) {\r\n\t\tGLine line = new GLine(x1, y1, x2, y2);\r\n\t\tline.setColor(GRID_LINE_COLOR);\r\n\t\tcontainer.add(line);\r\n\t}\r\n\t\r\n\tprotected void gridLineAdd(double x1, double y1, double x2, double y2) {\r\n\t\tGLine line = new GLine(x1, y1, x2, y2);\r\n\t\tline.setColor(GRID_LINE_COLOR);\r\n\t\tif (studentProgram instanceof GraphicsProgram) {\r\n\t\t\tGraphicsProgram graphicsProgram = (GraphicsProgram) studentProgram;\r\n\t\t\tgraphicsProgram.add(line);\r\n\t\t\t// graphicsProgram.setInvisible(line, true); // so getElementAt won't return it\r\n\t\t}\r\n\t}\r\n\r\n\tprotected boolean gridLinesExist(GContainer container) {\r\n\t\tif (container == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfor (int i = 0; i < container.getElementCount(); i++) {\r\n\t\t\tGObject gobj = container.getElement(i);\r\n\t\t\tif (\r\n\t\t\t\t\t// gobj instanceof GLine && \r\n\t\t\t\t\tgobj.getColor().equals(GRID_LINE_COLOR)) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\t\r\n\t// returns true if any grid lines have been previously added and are on\r\n\t// screen\r\n\tprotected boolean gridLinesExist() {\r\n\t\tif (studentProgram == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (studentProgram instanceof GraphicsProgram) {\r\n\t\t\tGraphicsProgram graphicsProgram = (GraphicsProgram) studentProgram;\r\n\t\t\tfor (Iterator<?> itr = graphicsProgram.iterator(); itr.hasNext();) {\r\n\t\t\t\tObject obj = itr.next();\r\n\t\t\t\tif (\r\n\t\t\t\t\t\t// obj instanceof GLine &&\r\n\t\t\t\t\t\tobj instanceof GObject &&\r\n\t\t\t\t\t\tGRID_LINE_COLOR.equals(((GObject) obj).getColor())) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t// gets rid of all grid lines on screen\r\n\tprotected void gridLineRemoveAll(GContainer container) {\r\n\t\tif (container == null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tSet<GObject> toRemove = new HashSet<GObject>();\r\n\t\tfor (int i = 0; i < container.getElementCount(); i++) {\r\n\t\t\tGObject gobj = container.getElement(i);\r\n\t\t\tif (\r\n\t\t\t\t\t// gobj instanceof GLine && \r\n\t\t\t\t\tGRID_LINE_COLOR.equals(gobj.getColor())) {\r\n\t\t\t\ttoRemove.add(gobj);\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor (GObject gobj : toRemove) {\r\n\t\t\tcontainer.remove(gobj);\r\n\t\t}\r\n\t}\r\n\r\n\t// gets rid of all grid lines on screen\r\n\tprotected void gridLineRemoveAll() {\r\n\t\tif (studentProgram == null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tif (studentProgram instanceof GraphicsProgram) {\r\n\t\t\tGraphicsProgram graphicsProgram = (GraphicsProgram) studentProgram;\r\n\t\t\tSet<GObject> toRemove = new HashSet<GObject>();\r\n\t\t\tfor (Iterator<?> itr = graphicsProgram.iterator(); itr.hasNext();) {\r\n\t\t\t\tObject obj = itr.next();\r\n\t\t\t\tif (obj instanceof GObject && ((GObject) obj).getColor().equals(GRID_LINE_COLOR)) {\r\n\t\t\t\t\ttoRemove.add((GObject) obj);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tfor (GObject gobj : toRemove) {\r\n\t\t\t\tgraphicsProgram.remove(gobj);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// adds the given string message to the bottom of the autograder's message\r\n\t// log\r\n\tprotected void printlnLog(String msg) {\r\n\t\tString text = messageLog.getText();\r\n\t\tif (text.length() > 0) {\r\n\t\t\ttext += \"\\n\";\r\n\t\t}\r\n\t\ttext += msg;\r\n\t\tmessageLog.setText(text);\r\n\t\tmessageLog.setCaretPosition(text.length());\r\n\t\tSystem.out.println(msg);\r\n\t}\r\n\r\n\t// tells student's pause() method to scale its actual pause time by\r\n\t// various amounts depending on the slider's current value\r\n//\tprotected void scaleTimeBySlider(int value) {\r\n//\t\tif (studentProgram == null) {\r\n//\t\t\treturn;\r\n//\t\t}\r\n//\t\tif (value == 1) {\r\n//\t\t\thangman.setPauseScaleFactor(0.0); // stop time\r\n//\t\t} else if (value == 2) {\r\n//\t\t\thangman.setPauseScaleFactor(4.0);\r\n//\t\t} else if (value == 3) {\r\n//\t\t\thangman.setPauseScaleFactor(2.0);\r\n//\t\t} else if (value == 4) {\r\n//\t\t\thangman.setPauseScaleFactor(1.0);\r\n//\t\t} else if (value == 5) {\r\n//\t\t\thangman.setPauseScaleFactor(0.5);\r\n//\t\t} else if (value == 6) {\r\n//\t\t\thangman.setPauseScaleFactor(0.25);\r\n//\t\t} else if (value == 7) {\r\n//\t\t\thangman.setPauseScaleFactor(0.05);\r\n//\t\t}\r\n//\t}\r\n\t\r\n\tpublic void setAssertUsingGui(boolean gui) {\r\n\t\tthis.assertUsingGui = gui;\r\n\t}\r\n\t\r\n\tprotected class ReflectionPanel implements ActionListener {\r\n\t\tprotected Class<?> clazz;\r\n\t\tprotected Object object;\r\n\t\t\r\n\t\t@SuppressWarnings(\"rawtypes\")\r\n\t\tprotected JComboBox fieldBox;\r\n\t\t@SuppressWarnings(\"rawtypes\")\r\n\t\tprotected JComboBox constantBox;\r\n\t\t@SuppressWarnings(\"rawtypes\")\r\n\t\tprotected JComboBox methodBox;\r\n\t\t\r\n\t\tprotected JTextField fieldValueFromBox;\r\n\t\tprotected JTextField fieldValueToBox;\r\n\t\tprotected JTextField constantValueFromBox;\r\n\t\tprotected JTextField constantValueToBox;\r\n\t\tprotected Map<String, Field> fieldTable = new TreeMap<String, Field>();\r\n\t\tprotected Map<String, Field> constantTable = new TreeMap<String, Field>();\r\n\t\tprotected Map<String, Method> methodTable = new TreeMap<String, Method>();\r\n\t\t\r\n\t\tpublic ReflectionPanel(Class<?> clazz) {\r\n\t\t\tthis(clazz, null);\r\n\t\t}\r\n\t\t\r\n\t\t@SuppressWarnings({ \"unchecked\", \"rawtypes\" })\r\n\t\tpublic ReflectionPanel(Class<?> clazz, Object object) {\r\n\t\t\tthis.clazz = clazz;\r\n\t\t\tthis.object = object;\r\n\t\t\t\r\n\t\t\tfieldBox = new JComboBox();\r\n\t\t\tfieldBox.setEditable(false);\r\n\t\t\tfieldBox.setActionCommand(clazz.getName() + \" Get field value\");\r\n\t\t\tfieldBox.addActionListener(this);\r\n\t\t\tfieldBox.addItem(\"(select a field)\");\r\n\t\t\tField[] fields = clazz.getDeclaredFields();\r\n\t\t\tArrays.sort(fields, new ReflectionUtils.FieldNameComparator());\r\n\t\t\tfor (Field field : fields) {\r\n\t\t\t\tif (SUPPORTED_FIELD_TYPES.contains(field.getType())) {\r\n\t\t\t\t\tString fieldString = (Modifier.isStatic(field.getModifiers()) ? \"static \" : \"\")\r\n\t\t\t\t\t\t\t+ ReflectionUtils.getClassNameWithoutPackage(field.getType(), field.getGenericType())\r\n\t\t\t\t\t\t\t+ \" \" + field.getName();\r\n\t\t\t\t\tfieldTable.put(fieldString, field);\r\n\t\t\t\t\tfieldBox.addItem(fieldString);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (fieldBox.getItemCount() <= 1) {\r\n\t\t\t\tfieldBox.setEnabled(false);\r\n\t\t\t}\r\n\t\t\tfieldValueFromBox = new JTextField(8);\r\n\t\t\tfieldValueFromBox.setEditable(false);\r\n\t\t\tfieldValueToBox = new JTextField(8);\r\n\t\t\tfieldValueToBox.addActionListener(this);\r\n\t\t\tfieldValueToBox.setActionCommand(clazz.getName() + \" Set field value\");\r\n\r\n\t\t\tconstantBox = new JComboBox();\r\n\t\t\tconstantBox.setEditable(false);\r\n\t\t\tconstantBox.setActionCommand(clazz.getName() + \" Get constant value\");\r\n\t\t\tconstantBox.addActionListener(this);\r\n\t\t\tconstantBox.addItem(\"(select a constant)\");\r\n\t\t\tField[] constants = clazz.getDeclaredFields();\r\n\t\t\tArrays.sort(constants, new ReflectionUtils.FieldNameComparator());\r\n\t\t\tfor (Field constant : constants) {\r\n\t\t\t\tif (Modifier.isStatic(constant.getModifiers()) && SUPPORTED_FIELD_TYPES.contains(constant.getType())) {\r\n\t\t\t\t\tString constantString = (Modifier.isStatic(constant.getModifiers()) ? \"static \" : \"\")\r\n\t\t\t\t\t\t\t+ ReflectionUtils.getClassNameWithoutPackage(constant\r\n\t\t\t\t\t\t\t.getType(), constant.getGenericType()) + \" \" + constant.getName();\r\n\t\t\t\t\tconstantTable.put(constantString, constant);\r\n\t\t\t\t\tconstantBox.addItem(constantString);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (constantBox.getItemCount() <= 1) {\r\n\t\t\t\tconstantBox.setEnabled(false);\r\n\t\t\t}\r\n\t\t\tconstantValueFromBox = new JTextField(8);\r\n\t\t\tconstantValueFromBox.setEditable(false);\r\n\t\t\tconstantValueToBox = new JTextField(8);\r\n\t\t\tconstantValueToBox.addActionListener(this);\r\n\t\t\tconstantValueToBox.setActionCommand(clazz.getName() + \" Set constant value\");\r\n\r\n\t\t\tmethodBox = new JComboBox();\r\n\t\t\tmethodBox.setEditable(false);\r\n\t\t\tmethodBox.setActionCommand(clazz.getName() + \" Get method value\");\r\n\t\t\tmethodBox.addActionListener(this);\r\n\t\t\tmethodBox.addItem(\"(select a method)\");\r\n\t\t\tMethod[] methods = clazz.getDeclaredMethods();\r\n\t\t\tArrays.sort(methods, new ReflectionUtils.MethodNameComparator());\r\n\t\t\tfor (Method method : methods) {\r\n\t\t\t\tString methodString = (Modifier.isStatic(method.getModifiers()) ? \"static \" : \"\")\r\n\t\t\t\t\t\t+ ReflectionUtils.getClassNameWithoutPackage(method.getReturnType())\r\n\t\t\t\t\t\t+ \" \"\r\n\t\t\t\t\t\t+ method.getName()\r\n\t\t\t\t\t\t+ \"()\";\r\n\t\t\t\tmethodTable.put(methodString, method);\r\n\t\t\t\tmethodBox.addItem(methodString);\r\n\t\t\t}\r\n\t\t\t// methodBox.setPreferredSize(new Dimension(400,\r\n\t\t\t// methodBox.getPreferredSize().height));\r\n\r\n\t\t}\r\n\t\t\r\n\t\tpublic void doLayout() {\r\n\t\t\t// field get/set panel\r\n\t\t\tif (SHOW_REFLECTION_FIELDS) {\r\n\t\t\t\taddPanel(clazz.getName() + \" fields\",\r\n\t\t\t\t\t\tGuiUtils.createLabel(clazz.getName() + \" fields: \", labelWidth), fieldBox,\r\n\t\t\t\t\t\tnew JLabel(\" from \"), fieldValueFromBox, new JLabel(\" to \"), fieldValueToBox,\r\n\t\t\t\t\t\tGuiUtils.createButton(\"Set\", clazz.getName() + \" Set field value\", 'S', this));\r\n\t\t\t}\r\n\t\r\n\t\t\t// constant get/set panel\r\n//\t\t\taddPanel(\"Change Constant\",\r\n//\t\t\t\t\tGuiUtils.createLabel(\"change constant: \", labelWidth), constantBox, new JLabel(\r\n//\t\t\t\t\t\" from \"), constantValueFromBox, new JLabel(\" to \"), constantValueToBox,\r\n//\t\t\t\t\tGuiUtils.createButton(\"Set\", \"Set constant value\", ' ', this));\r\n\t\r\n\t\t\t// method call panel\r\n\t\t\tif (SHOW_REFLECTION_METHODS) {\r\n\t\t\t\taddPanel(clazz.getName() + \" methods\",\r\n\t\t\t\t\t\tGuiUtils.createLabel(clazz.getName() + \" methods: \", labelWidth), methodBox,\r\n\t\t\t\t\t\tGuiUtils.createButton(\"Call\", clazz.getName() + \" Call method\", 'C', this));\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tpublic void setObject(Object object) {\r\n\t\t\tthis.object = object;\r\n\t\t}\r\n\t\t\r\n\t\tpublic void actionPerformed(ActionEvent event) {\r\n\t\t\tString cmd = event.getActionCommand().intern();\r\n\t\t\tif (cmd.equals(clazz.getName() + \" Get field value\")) {\r\n\t\t\t\tcurrentFieldValueGet();\r\n\t\t\t} else if (cmd.equals(clazz.getName() + \" Set field value\")) {\r\n\t\t\t\tcurrentFieldValueSet();\r\n\t\t\t} else if (cmd.equals(clazz.getName() + \" Get constant value\")) {\r\n\t\t\t\tcurrentConstantValueGet();\r\n\t\t\t} else if (cmd.equals(clazz.getName() + \" Set constant value\")) {\r\n\t\t\t\tcurrentConstantValueSet();\r\n\t\t\t} else if (cmd.equals(clazz.getName() + \" Call method\")) {\r\n\t\t\t\tcurrentMethodCall();\r\n\t\t\t}\r\n\t\t}\r\n\t\r\n\t\t// updates the constant value field to show the currently selected\r\n\t\t// constant's value\r\n\t\tprotected void currentFieldValueGet() {\r\n\t\t\tString fieldString = String.valueOf(fieldBox.getItemAt(fieldBox.getSelectedIndex()));\r\n\t\t\tif (fieldString == null || fieldString.equals(\"(select a field)\")) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tField field = fieldTable.get(fieldString);\r\n\t\t\tif (object == null && !Modifier.isStatic(field.getModifiers())) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tString fieldValueText = StringUtils.fitToWidth(String.valueOf(ReflectionUtils.getFieldValue(object, field)), 80);\r\n\t\t\tString currentText = fieldValueFromBox.getText();\r\n\t\t\tif (currentText == null || !currentText.equals(fieldValueText)) {\r\n\t\t\t\tfieldValueFromBox.setText(fieldValueText);\r\n\t\t\t\tfieldValueFromBox.setCaretPosition(0);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// sets the currently selected constant's value to match the value typed\r\n\t\t// into the constant value text field\r\n\t\tprotected void currentFieldValueSet() {\r\n\t\t\tString fieldString = roundDouble(String.valueOf(fieldBox.getItemAt(fieldBox\r\n\t\t\t\t\t.getSelectedIndex())));\r\n\t\t\tif (fieldString == null || fieldString.equals(\"(select a field)\")) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tField field = fieldTable.get(fieldString);\r\n\t\t\tif (object == null && !Modifier.isStatic(field.getModifiers())) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tString valueStr = fieldValueToBox.getText();\r\n\t\t\ttry {\r\n\t\t\t\tObject value = ReflectionUtils.parseValue(field.getType(), field.getGenericType(), valueStr);\r\n\t\t\t\tReflectionUtils.setFieldValue(object, field, value);\r\n\t\t\t} catch (NumberFormatException nfe) {\r\n\t\t\t\tJOptionPane.showMessageDialog(autograderFrame, \"Error trying to read value:\\n\\n\" + nfe, \"Parse error\", JOptionPane.ERROR_MESSAGE);\r\n\t\t\t} catch (IllegalArgumentException nfe) {\r\n\t\t\t\tJOptionPane.showMessageDialog(autograderFrame, \"Error trying to read value:\\n\\n\" + nfe, \"Parse error\", JOptionPane.ERROR_MESSAGE);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tprivate String roundDouble(String s) {\r\n\t\t\ttry {\r\n\t\t\t\tdouble d = Double.parseDouble(s);\r\n\t\t\t\td = Math.round(d * 10000.0) / 10000.0;\r\n\t\t\t\treturn String.valueOf(d);\r\n\t\t\t} catch (NumberFormatException e) {\r\n\t\t\t\treturn s;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// updates the constant value field to show the currently selected\r\n\t\t// constant's value\r\n\t\tprotected void currentConstantValueGet() {\r\n\t\t\tString constantString = String\r\n\t\t\t\t\t.valueOf(constantBox.getItemAt(constantBox.getSelectedIndex()));\r\n\t\t\tif (constantString == null || constantString.equals(\"(select a constant)\")) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tField constant = constantTable.get(constantString);\r\n\t\t\tString constantValueText = String.valueOf(ReflectionUtils.getConstantValue(\r\n\t\t\t\t\tSTUDENT_CLASS, constant.getName()));\r\n\t\t\tString currentText = constantValueFromBox.getText();\r\n\t\t\tif (currentText == null || !currentText.equals(constantValueText)) {\r\n\t\t\t\tconstantValueFromBox.setText(constantValueText);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// sets the currently selected constant's value to match the value typed\r\n\t\t// into the constant value text field\r\n\t\tprotected void currentConstantValueSet() {\r\n\t\t\tString constantString = String\r\n\t\t\t\t\t.valueOf(constantBox.getItemAt(constantBox.getSelectedIndex()));\r\n\t\t\tif (constantString == null || constantString.equals(\"(select a constant)\")) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tField constant = constantTable.get(constantString);\r\n\t\t\tString valueStr = constantValueToBox.getText();\r\n\t\t\tObject value = ReflectionUtils.parseValue(constant.getType(), constant.getGenericType(), valueStr);\r\n\t\t\tReflectionUtils.setConstantValue(STUDENT_CLASS, constant.getName(), value);\r\n\t\t}\r\n\r\n\t\tprotected void currentMethodCall() {\r\n\t\t\tString methodString = String.valueOf(methodBox.getItemAt(methodBox.getSelectedIndex()));\r\n\t\t\tif (methodString == null || methodString.equals(\"(select a method)\")) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tMethod method = methodTable.get(methodString);\r\n\t\t\tif (object == null && !Modifier.isStatic(method.getModifiers())) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tObject[] paramValues = ReflectionUtils.getDefaultArgs(method);\r\n\t\t\ttry {\r\n\t\t\t\tmethod.setAccessible(true);\r\n\t\t\t\tmethod.invoke(object, paramValues);\r\n\t\t\t} catch (Throwable t) {\r\n\t\t\t\tprintlnLog(\"Error running method \" + method.getName() + \": \" + t);\r\n\t\t\t\tt.printStackTrace();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tprotected void updateAllReflectionPanels() {\r\n\t\tfor (ReflectionPanel panel : reflectionPanels.values()) {\r\n\t\t\tpanel.currentFieldValueGet();\r\n\t\t\tpanel.currentConstantValueGet();\r\n\t\t}\r\n\t}\r\n\t\r\n\t\r\n\tprivate class FieldValueUpdateRunnable implements Runnable {\r\n\t\tpublic void run() {\r\n\t\t\twhile (true) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tThread.sleep(500);\r\n\t\t\t\t} catch (InterruptedException ie) {\r\n\t\t\t\t\t// empty\r\n\t\t\t\t}\r\n\t\t\t\tupdateAllReflectionPanels();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected class StudentProgramRunnerThread extends Thread {\r\n\t\tprivate boolean callInitAndRun;\r\n\t\tpublic boolean started = false;\r\n\t\tprivate Program program;\r\n\t\tprivate Class<?> programClass;\r\n\r\n\t\tpublic StudentProgramRunnerThread(Class<?> clazz, boolean callInitAndRun) {\r\n\t\t\tthis(clazz, DEFAULT_WIDTH, DEFAULT_HEIGHT, callInitAndRun);\r\n\t\t}\r\n\t\t\r\n\t\tpublic StudentProgramRunnerThread(Class<?> clazz, int width, int height, boolean callInitAndRun) {\r\n\t\t\tthis.setName(getClass().getName() + \"-\" + clazz.getName() + \"@\" + hashCode());\r\n\t\t\tthis.programClass = clazz;\r\n\t\t\t\r\n\t\t\tthis.callInitAndRun = callInitAndRun;\r\n\t\t\ttry {\r\n\t\t\t\tif (Program.class.isAssignableFrom(clazz)) {\r\n\t\t\t\t\tthis.program = (Program) clazz.getDeclaredConstructor().newInstance();\r\n\t\t\t\t\tthis.program.setExitOnClose(false);\r\n\t\t\t\t\tReflectionPanel panel = reflectionPanels.get(STUDENT_CLASS);\r\n\t\t\t\t\tif (panel != null) {\r\n\t\t\t\t\t\tpanel.setObject(this.program);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} catch (InstantiationException ie) {\r\n\t\t\t\tthrow new ReflectionRuntimeException(ie);\r\n\t\t\t} catch (IllegalAccessException iae) {\r\n\t\t\t\tthrow new ReflectionRuntimeException(iae);\r\n\t\t\t} catch (InvocationTargetException ite) {\r\n\t\t\t\tthrow new ReflectionRuntimeException(ExceptionUtils.getUnderlyingCause(ite));\r\n\t\t\t} catch (NoSuchMethodException nsme) {\r\n\t\t\t\tthrow new ReflectionRuntimeException(nsme);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tpublic Program getProgram() {\r\n\t\t\treturn program;\r\n\t\t}\r\n\t\t\r\n\t\tpublic JFrame getFrame() {\r\n\t\t\treturn program.getJFrame();\r\n\t\t}\r\n\r\n\t\t@SuppressWarnings(\"deprecation\")\r\n\t\tpublic void killMe() {\r\n\t\t\tif (program != null) {\r\n\t\t\t\tprogram.stop();\r\n\t\t\t\tif (program.getWindow() != null) {\r\n\t\t\t\t\tprogram.getWindow().setVisible(false);\r\n\t\t\t\t\tprogram.getWindow().dispose();\r\n\t\t\t\t\tprogram.setVisible(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tpublic void run() {\r\n\t\t\tif (callInitAndRun) {\r\n\t\t\t\tif (program != null && Program.class.isAssignableFrom(programClass)) {\r\n\t\t\t\t\t// run as a spl Program\r\n\t\t\t\t\tstarted = true;\r\n\t\t\t\t\tprogram.start();\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// run as a standard Java main method\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tString[] args = new String[0];\r\n\t\t\t\t\t\tMethod mainMethod = programClass.getMethod(\"main\", args.getClass());\r\n\t\t\t\t\t\tif (mainMethod != null) {\r\n\t\t\t\t\t\t\tmainMethod.invoke(null, (Object) args);\r\n\t\t\t\t\t\t\tstarted = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} catch (IllegalAccessException e) {\r\n\t\t\t\t\t\te.printStackTrace();\r\n\t\t\t\t\t} catch (IllegalArgumentException e) {\r\n\t\t\t\t\t\te.printStackTrace();\r\n\t\t\t\t\t} catch (InvocationTargetException e) {\r\n\t\t\t\t\t\tThrowable cause = ExceptionUtils.getUnderlyingCause(e);\r\n\t\t\t\t\t\tthrow new RuntimeException(cause);\r\n\t\t\t\t\t} catch (NoSuchMethodException e) {\r\n\t\t\t\t\t\t// empty\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif (!started) {\r\n\t\t\t\t\tthrow new IllegalStateException(\"class \" + programClass.getName()\r\n\t\t\t\t\t\t\t+ \" does not extend Program and does not seem to have a suitable main() method. Cannot run.\");\r\n\t\t\t\t}\r\n\t\t\t\t// GuiUtils.rememberWindowLocation(program.getWindow());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/collections/AbstractMultimap.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2015/06/06\n */\n\npackage stanford.cs106.collections;\n\nimport java.util.*;\n\npublic abstract class AbstractMultimap<K, V> implements Multimap<K, V> {\n\tprivate Map<K, Collection<V>> map;\n\tprivate boolean isSet;\n\t\n\tpublic AbstractMultimap() {\n\t\tthis(false);\n\t}\n\t\n\tpublic AbstractMultimap(boolean isSet) {\n\t\tthis.map = createMap();\n\t\tthis.isSet = isSet;\n\t}\n\t\t\t\n\t\n\tpublic void clear() {\n\t\tmap.clear();\n\t}\n\n\tprotected abstract Map<K, Collection<V>> createMap();\n\tprotected abstract Collection<V> createSet();\n\t\n\tprotected Collection<V> createList() {\n\t\treturn new ArrayList<V>();\n\t}\n\t\n\tpublic boolean containsEntry(Object key, Object value) {\n\t\treturn containsKey(key) && map.get(key).contains(value);\n\t}\n\n\tpublic boolean containsKey(Object key) {\n\t\treturn map.containsKey(key);\n\t}\n\n\tpublic boolean containsValue(Object value) {\n\t\tfor (Collection<V> collection : map.values()) {\n\t\t\tif (collection.contains(value)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic Collection<V> get(K key) {\n\t\treturn map.get(key);\n\t}\n\n\tpublic boolean isEmpty() {\n\t\treturn map.isEmpty();\n\t}\n\n\tpublic Set<K> keySet() {\n\t\treturn map.keySet();\n\t}\n\n\tpublic boolean put(K key, V value) {\n\t\tCollection<V> coll;\n\t\tif (map.containsKey(key)) {\n\t\t\tcoll = map.get(key);\n\t\t} else {\n\t\t\tcoll = isSet ? createSet() : createList();\n\t\t\tmap.put(key, coll);\n\t\t}\n\t\treturn coll.add(value);\n\t}\n\n\tpublic boolean remove(Object key, Object value) {\n\t\tif (containsKey(key)) {\n\t\t\tCollection<V> coll = map.get(key);\n\t\t\tboolean result = coll.remove(value);\n\t\t\tif (coll.isEmpty()) {\n\t\t\t\tmap.remove(key);\n\t\t\t}\n\t\t\treturn result;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tpublic Collection<V> removeAll(Object key) {\n\t\treturn map.remove(key);\n\t}\n\n\tpublic int size() {\n\t\tint result = 0;\n\t\tfor (Collection<V> coll : map.values()) {\n\t\t\tresult += coll.size();\n\t\t}\n\t\treturn result;\n\t}\n\t\n\tpublic String toString() {\n\t\treturn map.toString();\n\t}\n\t\n\tpublic Collection<V> values() {\n\t\tCollection<V> result = createList();\n\t\tfor (Collection<V> coll : map.values()) {\n\t\t\tresult.addAll(coll);\n\t\t}\n\t\treturn Collections.unmodifiableCollection(result);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/collections/AbstractTable.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2015/06/06\n */\n\npackage stanford.cs106.collections;\n\nimport java.util.*;\n\npublic abstract class AbstractTable<R, C, V> implements Table<R, C, V> {\n\tprivate Map<R, Map<C, V>> map;\n\t\n\tpublic AbstractTable() {\n\t\tthis.map = createTableMap();\n\t}\n\t\n\tprotected abstract Map<R, Map<C, V>> createTableMap();\n\tprotected abstract Map<C, V> createRowMap();\n\tprotected abstract Map<R, V> createColumnMap();\n\t\n\tpublic void clear() {\n\t\tmap.clear();\n\t}\n\t\n\tpublic Map<R, V> column(C columnKey) {\n\t\tMap<R, V> result = createColumnMap();\n\t\tfor (R rowKey : map.keySet()) {\n\t\t\tMap<C, V> row = map.get(rowKey);\n\t\t\tif (row.containsKey(columnKey)) {\n\t\t\t\tresult.put(rowKey, row.get(columnKey));\n\t\t\t}\n\t\t}\n\t\treturn Collections.unmodifiableMap(result);\n\t}\n\n\tpublic boolean contains(Object rowKey, Object columnKey) {\n\t\treturn map.containsKey(rowKey) && map.get(rowKey).containsKey(columnKey);\n\t}\n\n\tpublic boolean containsColumn(Object columnKey) {\n\t\t// TODO\n\t\treturn false;\n\t}\n\n\tpublic boolean containsRow(Object rowKey) {\n\t\treturn map.containsKey(rowKey);\n\t}\n\n\tpublic boolean containsValue(Object value) {\n\t\t// TODO\n\t\treturn false;\n\t}\n\n\tpublic V get(Object rowKey, Object columnKey) {\n\t\tif (contains(rowKey, columnKey)) {\n\t\t\treturn map.get(rowKey).get(columnKey);\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tpublic boolean isEmpty() {\n\t\treturn size() == 0;\n\t}\n\n\tpublic V put(R rowKey, C columnKey, V value) {\n\t\tMap<C, V> row = null;\n\t\tif (containsRow(rowKey)) {\n\t\t\trow = map.get(rowKey);\n\t\t} else {\n\t\t\trow = createRowMap();\n\t\t\tmap.put(rowKey, row);\n\t\t}\n\t\treturn row.put(columnKey, value);\n\t}\n\n\tpublic V remove(Object rowKey, Object columnKey) {\n\t\tif (containsRow(rowKey)) {\n\t\t\tMap<C, V> row = map.get(rowKey);\n\t\t\tV result = row.remove(columnKey);\n\t\t\tif (row.isEmpty()) {\n\t\t\t\tmap.remove(rowKey);\n\t\t\t}\n\t\t\treturn result;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tpublic Map<C, V> row(R rowKey) {\n\t\treturn map.get(rowKey);\n\t}\n\n\tpublic Set<R> rowKeySet() {\n\t\treturn map.keySet();\n\t}\n\n\tpublic Map<R, Map<C, V>> rowMap() {\n\t\treturn map;\n\t}\n\n\tpublic int size() {\n\t\tint result = 0;\n\t\tfor (Map<C, V> row : map.values()) {\n\t\t\tresult += row.size();\n\t\t}\n\t\treturn result;\n\t}\n\t\n\tpublic String toString() {\n\t\treturn map.toString();\n\t}\n\n\tpublic Collection<V> values() {\n\t\t// TODO: this is probably really inefficient\n\t\tCollection<V> result = new ArrayList<V>();\n\t\tfor (Map<C, V> column : map.values()) {\n\t\t\tresult.addAll(column.values());\n\t\t}\n\t\treturn result;\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/collections/BasicGraph.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2016/12/01\n * - fixed bugs with adding edges between null vertexes, asking for null neighbors\n *   (made behavior more closely match C++ version)\n * @version 2015/11/30\n * - fixed bugs related to in/outDegree and neighbors of vertexes that have none\n *   (should have returned 0 or empty set; instead crashed with NPE)\n * @since 2015/06/06\n */\n\npackage stanford.cs106.collections;\n\nimport java.util.*;\n\n/**\n * BasicGraph represents a mostly-complete implementation of the Graph interface.\n * The only functionality missing is the three path-searching algorithms represented\n * by the isReachable, minimumWeightPath, and shortestPath methods.\n */\npublic class BasicGraph<V, E> implements Graph<V, E> {\n\t// data fields\n\tprivate boolean directed;\n\tprivate boolean weighted;\n\tprivate Table<Vertex<V>, Vertex<V>, Edge<V, E>> adjacencyMap;   // [source, destination --> edge info]\n\tprivate Map<String, Vertex<V>> vertexes;               // [vertex] -> [vertex info]\n\t\n\t/**\n\t * Constructs a new empty undirected, unweighted graph.\n\t */\n\tpublic BasicGraph() {\n\t\tthis(false, false);\n\t}\n\t\n\t/**\n\t * Constructs a new empty graph that can be directed or undirected,\n\t * weighted or unweighted.\n\t */\n\tpublic BasicGraph(boolean directed, boolean weighted) {\n\t\tthis.directed = directed;\n\t\tthis.weighted = weighted;\n\t\tadjacencyMap = TreeBasedTable.create();\n\t\tvertexes = new TreeMap<String, Vertex<V>>();\n\t\t// edges = HashMultimap.create();\n\t}\n\n\t/** {@inheritDoc} */\n\tpublic final void addEdge(String v1, String v2) {\n\t\taddEdge(v1, v2, Edge.DEFAULT_WEIGHT);\n\t}\n\n\t/** {@inheritDoc} */\n\tpublic final void addEdge(String v1, String v2, double weight) {\n\t\tif (!containsVertex(v1)) {\n\t\t\taddVertex(v1);\n\t\t}\n\t\tif (!containsVertex(v2)) {\n\t\t\taddVertex(v2);\n\t\t}\n\t\taddEdge(vertex(v1), vertex(v2), weight);\n\t}\n\n\t/** {@inheritDoc} */\n\tpublic final void addEdge(Vertex<V> v1, Vertex<V> v2) {\n\t\taddEdge(v1, v2, Edge.DEFAULT_WEIGHT);\n\t}\n\n\t/** {@inheritDoc} */\n\tpublic final void addEdge(Vertex<V> v1, Vertex<V> v2, double weight) {\n\t\tcheckForNull(v1, v2);\n\t\tcheckForNegative(weight);\n\t\tif (!containsVertex(v1)) {\n\t\t\taddVertex(v1.name());\n\t\t}\n\t\tif (!containsVertex(v2)) {\n\t\t\taddVertex(v2.name());\n\t\t}\n\t\tif (v1.equals(v2)) {\n\t\t\tthrow new IllegalArgumentException(\"Cannot add a loop (an edge from \"\n\t\t\t\t\t+ v1 + \" back to itself)\");\n\t\t}\n\t\tif (!weighted && weight != Edge.DEFAULT_WEIGHT) {\n\t\t\tthrow new IllegalArgumentException(\"Unweighted graph cannot accept edge weight of \"\n\t\t\t\t\t+ weight + \" (must be \" + Edge.DEFAULT_WEIGHT + \")\");\n\t\t}\n\t\t\n\t\tEdge<V, E> edge = null;\n\t\tif (containsEdge(v1, v2)) {\n\t\t\tedge = edge(v1, v2);\n\t\t\tedge.setWeight(weight);\n\t\t} else {\n\t\t\tif (weighted) {\n\t\t\t\tedge = new Edge<V, E>(v1, v2, weight);\n\t\t\t} else {\n\t\t\t\tedge = new Edge<V, E>(v1, v2);\n\t\t\t}\n\t\t\tadjacencyMap.put(v1, v2, edge);\n\t\t\tif (!directed) {\n\t\t\t\tadjacencyMap.put(v2, v1, edge);\n\t\t\t}\n\t\t\t// edges.put(e, edge);\n\t\t}\n\t}\n\t\n\t/** {@inheritDoc} */\n\tpublic final void addVertex(String v) {\n\t\tcheckForNull(v);\n\t\tif (!containsVertex(v)) {\n\t\t\tvertexes.put(v, new Vertex<V>(v));\n\t\t}\n\t}\n\n\t/** {@inheritDoc} */\n\tpublic final void clear() {\n\t\tvertexes.clear();\n\t\tclearEdges();\n\t}\n\n\t/** {@inheritDoc} */\n\tpublic final void clearEdges() {\n\t\tadjacencyMap.clear();\n\t}\n\t\n\tpublic final void clearEdges(String v) {\n\t\tclearEdges(vertex(v));\n\t}\n\t\n\tpublic final void clearEdges(Vertex<V> v) {\n\t\tif (!containsVertex(v)) {\n\t\t\treturn;\n\t\t}\n\t\tSet<Edge<V, E>> toRemove = new HashSet<Edge<V, E>>();\n\t\tfor (Edge<V, E> edge : edges()) {\n\t\t\tif (edge.start().equals(v)) {\n\t\t\t\ttoRemove.add(edge);\n\t\t\t}\n\t\t}\n\t\tfor (Edge<V, E> edge : toRemove) {\n\t\t\tremoveEdge(edge);\n\t\t}\n\t}\n\t\n\t/** {@inheritDoc} */\n\tpublic final boolean containsEdge(String v1, String v2) {\n\t\treturn containsEdge(vertex(v1), vertex(v2));\n\t}\n\t\n\t/** {@inheritDoc} */\n\tpublic final boolean containsEdge(Vertex<V> v1, Vertex<V> v2) {\n\t\treturn adjacencyMap.contains(v1, v2) ||\n\t\t\t\t(!directed && adjacencyMap.contains(v2, v1));\n\t}\n\n\t/** {@inheritDoc} */\n\tpublic final boolean containsPath(List<String> path) {\n\t\tcheckForNull(path);\n\t\t\n\t\t// check edges of each pair of neighbors\n\t\tIterator<String> itr = path.iterator();\n\t\tString prev = null;\n\t\twhile (itr.hasNext()) {\n\t\t\tString next = itr.next();\n\t\t\tif (!containsVertex(next) || \n\t\t\t\t\t(prev != null && !containsEdge(prev, next))) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tprev = next;\n\t\t}\n\t\t\n\t\treturn true;\n\t}\n\n\t/** {@inheritDoc} */\n\tpublic final boolean containsVertex(String v) {\n\t\treturn vertexes.containsKey(v);\n\t}\n\n\t/** {@inheritDoc} */\n\tpublic final boolean containsVertex(Vertex<V> v) {\n\t\treturn v != null && vertexes.containsKey(v.name());\n\t}\n\t\n\t/** {@inheritDoc} */\n\tpublic final double cost(List<String> path) {\n\t\tcheckForNull(path);\n\t\tif (path.isEmpty()) {\n\t\t\treturn 0;\n\t\t}\n\t\t\n\t\tint totalCost = 0;\n\t\tString prev = null;\n\t\tfor (String v : path) {\n\t\t\tcheckForNull(v);\n\t\t\tcheckVertex(v);\n\t\t\tif (prev != null) {\n\t\t\t\tdouble weight = edgeWeight(prev, v);\n\t\t\t\tif (weight < 0) {\n\t\t\t\t\tthrow new IllegalArgumentException(\"no edge between \" + prev + \" and \" + v);\n\t\t\t\t}\n\t\t\t\ttotalCost += weight;\n\t\t\t}\n\t\t\tprev = v;\n\t\t}\n\t\t\n\t\treturn totalCost;\n\t}\n\n\t/** {@inheritDoc} */\n\tpublic final int degree(String v) {\n\t\treturn outDegree(v);\n\t}\n\n\t/** {@inheritDoc} */\n\tpublic final int degree(Vertex<V> v) {\n\t\treturn outDegree(v);\n\t}\n\n\t/** {@inheritDoc} */\n\tpublic final Edge<V, E> edge(String v1, String v2) {\n\t\treturn edge(vertex(v1), vertex(v2));\n\t}\n\n\t/** {@inheritDoc} */\n\tpublic final Edge<V, E> edge(Vertex<V> v1, Vertex<V> v2) {\n\t\tif (adjacencyMap.contains(v1, v2)) {\n\t\t\treturn adjacencyMap.get(v1, v2);\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t/** {@inheritDoc} */\n\tpublic final int edgeCount() {\n\t\treturn edges().size();\n\t}\n\n\t/** {@inheritDoc} */\n\tpublic final Collection<Edge<V, E>> edges() {\n\t\t// return new EdgeCollection();\n\t\treturn adjacencyMap.values();\n\t}\n\n\t/** {@inheritDoc} */\n\tpublic final double edgeWeight(String v1, String v2) {\n\t\treturn edgeWeight(vertex(v1), vertex(v2));\n\t}\n\n\t/** {@inheritDoc} */\n\tpublic final double edgeWeight(Vertex<V> v1, Vertex<V> v2) {\n\t\tif (containsEdge(v1, v2)) {\n\t\t\t// will work for either order in undirected graph\n\t\t\treturn edge(v1, v2).weight();\n\t\t} else {\n\t\t\treturn -1;\n\t\t}\n\t}\n\t\n\t/**\n\t * Returns true if o refers to a graph with the same vertices, edges, and other properties\n\t * (directed vs. undirected, weighted vs. unweighted, etc.) as this graph.\n\t * @param o The object to compare against.\n\t */\n\tpublic boolean equals(Object o) {\n\t\tif (o instanceof BasicGraph) {\n\t\t\t@SuppressWarnings(\"unchecked\")\n\t\t\tBasicGraph<V, E> other = (BasicGraph<V, E>) o;\n\t\t\treturn directed == other.directed &&\n\t\t\t\t\tweighted == other.weighted &&\n\t\t\t\t\tadjacencyMap.equals(other.adjacencyMap) &&\n\t\t\t\t\tvertexes.equals(other.vertexes);\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\t/**\n\t * Returns an integer code for placing this graph into a hash-based collection.\n\t */\n\tpublic int hashCode() {\n\t\treturn 13 * Boolean.valueOf(directed).hashCode() +\n\t\t\t\t37 * Boolean.valueOf(weighted).hashCode() +\n\t\t\t\t51 * adjacencyMap.hashCode() +\n\t\t\t\t117 * vertexes.hashCode();\n\t}\n\n\t/** {@inheritDoc} */\n\tpublic final int inDegree(String v) {\n\t\treturn inDegree(vertex(v));\n\t}\n\n\t/** {@inheritDoc} */\n\tpublic final int inDegree(Vertex<V> v) {\n\t\tcheckVertex(v);\n\t\tif (adjacencyMap.containsColumn(v)) {\n\t\t\treturn adjacencyMap.column(v).size();\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\t\n\tpublic Set<Vertex<V>> inverseNeighbors(String v) {\n\t\treturn inverseNeighbors(vertex(v));\n\t}\n\t\n\tpublic Set<Vertex<V>> inverseNeighbors(Vertex<V> v) {\n\t\tSet<Vertex<V>> result = new TreeSet<Vertex<V>>();\n\t\tif (containsVertex(v)) {\n\t\t\tfor (Edge<V, E> edge : edges()) {\n\t\t\t\tif (edge.finish().equals(v)) {\n\t\t\t\t\tresult.add(edge.start());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\t/** {@inheritDoc} */\n\tpublic final boolean isDirected() {\n\t\treturn directed;\n\t}\n\n\t/** {@inheritDoc} */\n\tpublic final boolean isEmpty() {\n\t\treturn vertexes.isEmpty();\n\t}\n\t\n\t/** {@inheritDoc} */\n\tpublic final boolean isWeighted() {\n\t\treturn weighted;\n\t}\n\n\t/** {@inheritDoc} */\n\tpublic final Set<Vertex<V>> neighbors(String v) {\n\t\treturn neighbors(vertex(v));\n\t}\n\n\t/** {@inheritDoc} */\n\tpublic final Set<Vertex<V>> neighbors(Vertex<V> v) {\n\t\tif (containsVertex(v) && adjacencyMap.containsRow(v)) {\n\t\t\treturn adjacencyMap.row(v).keySet();\n\t\t} else {\n\t\t\treturn Collections.emptySet();\n\t\t}\n\t}\n\n\t/** {@inheritDoc} */\n\tpublic final int outDegree(String v) {\n\t\treturn outDegree(vertex(v));\n\t}\n\n\t/** {@inheritDoc} */\n\tpublic final int outDegree(Vertex<V> v) {\n\t\tif (containsVertex(v)) {\n\t\t\treturn neighbors(v).size();\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\t/** {@inheritDoc} */\n\tpublic final void removeEdge(Edge<V, E> e) {\n\t\tif (e != null && e.start() != null && e.end() != null) {\n\t\t\tremoveEdge(e.start().name(), e.end().name());\n\t\t}\n\t}\n\n\t/** {@inheritDoc} */\n\tpublic final void removeEdge(String v1, String v2) {\n\t\tremoveEdge(vertex(v1), vertex(v2));\n\t}\n\n\t/** {@inheritDoc} */\n\tpublic final void removeEdge(Vertex<V> v1, Vertex<V> v2) {\n\t\tif (containsEdge(v1, v2)) {\n\t\t\tadjacencyMap.remove(v1, v2);\n\t\t\tif (!directed) {\n\t\t\t\tadjacencyMap.remove(v2, v1);\n\t\t\t}\n\t\t}\n\t}\n\n\t/** {@inheritDoc} */\n\tpublic final void removeVertex(String v) {\n\t\tif (containsVertex(v)) {\n\t\t\t// remove any incoming/outgoing edges from this vertex\n\t\t\tremoveVertexHelper(v);\n\t\t\tvertexes.remove(v);\n\t\t}\n\t}\n\n\t/** {@inheritDoc} */\n\tpublic final void removeVertex(Vertex<V> v) {\n\t\tif (containsVertex(v)) {\n\t\t\t// remove any incoming/outgoing edges from this vertex\n\t\t\tremoveVertexHelper(v);\n\t\t\tvertexes.remove(v.name());\n\t\t}\n\t}\n\n\t/** {@inheritDoc} */\n\tpublic final void resetData() {\n\t\tclearVertexInfo();\n\t}\n\t\n\t/** {@inheritDoc} */\n\tpublic final String toString() {\n\t\tStringBuilder sb = new StringBuilder(65536);\n\t\tsb.append(\"{V={\");\n\t\tboolean first = true;\n\t\tfor (Vertex<V> v : vertexes()) {\n\t\t\tif (!first) {\n\t\t\t\tsb.append(\", \");\n\t\t\t}\n\t\t\tfirst = false;\n\t\t\tsb.append(v.name());\n\t\t}\n\t\tsb.append(\"}\");\n\t\t\n\t\tsb.append(\", E={\");\n\t\tfirst = true;\n\t\t\n\t\tfor (Edge<V, E> e : adjacencyMap.values()) {\n\t\t\tif (!first) {\n\t\t\t\tsb.append(\", \");\n\t\t\t}\n\t\t\tfirst = false;\n\t\t\tsb.append(e);\n\t\t}\n\t\tsb.append(\"}\");\n\t\t\n\t\tsb.append(\"}\");\n\t\treturn sb.toString();\n\t}\n\n\t/** {@inheritDoc} */\n\tpublic final String toStringDetailed() {\n\t\tStringBuilder sb = new StringBuilder(65536);\n\t\tsb.append(\"Graph{\\n\").append(\"\\tvertices:\\n\");\n\t\tfor (Vertex<V> v : vertexes()) {\n\t\t\tsb.append(\"\\t\\t\").append(vertexes.get(v.name())).append(\" -> neighbors: \")\n\t\t\t\t\t.append(neighbors(v.name())).append('\\n');\n\t\t}\n\t\tsb.append(\"\\tedges:\\n\");\n\t\tfor (Edge<V, E> edge : adjacencyMap.values()) {\n\t\t\tsb.append(\"\\t\\t\").append(edge).append('\\n');\n\t\t}\n\t\tsb.append('}');\n\t\treturn sb.toString();\n\t}\n\t\n\tpublic Vertex<V> vertex(String name) {\n\t\treturn vertexes.get(name);\n\t}\n\t\n\t/** {@inheritDoc} */\n\tpublic final int vertexCount() {\n\t\treturn vertexes.size();\n\t}\n\t\n\t/** {@inheritDoc} */\n\tpublic final Collection<Vertex<V>> vertexes() {\n\t\t// return new VertexSet();\n\t\treturn vertexes.values();\n\t}\n\t\n\t/** \n\t * Tests the given integer to see whether it is negative.\n\t * @param value The integer to examine.\n\t * @throws IllegalArgumentException If the value is negative.\n\t */\n\tprotected static void checkForNegative(double value) {\n\t\tif (value < 0) {\n\t\t\tthrow new IllegalArgumentException(\"argument cannot be negative: \" + value);\n\t\t}\n\t}\n\t\n\t/** \n\t * Tests the given integer to see whether it is negative.\n\t * @param value The integer to examine.\n\t * @throws IllegalArgumentException If the value is negative.\n\t */\n\tprotected static void checkForNegative(int value) {\n\t\tif (value < 0) {\n\t\t\tthrow new IllegalArgumentException(\"argument cannot be negative: \" + value);\n\t\t}\n\t}\n\t\n\t/** \n\t * Tests the given arguments for null.\n\t * @param args The arguments to examine.\n\t * @throws NullPointerException If any argument is null.\n\t */\n\tprotected static void checkForNull(Object... args) {\n\t\tfor (Object o : args) {\n\t\t\tif (o == null) {\n\t\t\t\tthrow new NullPointerException(\"argument must not be null\");\n\t\t\t}\n\t\t}\n\t}\n\t\n\t/** \n\t * Tests the given vertex for null and for membership in the graph.\n\t * @param vertex The vertex to examine.\n\t * @throws IllegalArgumentException If the vertex is not part of this graph.\n\t * @throws NullPointerException If the vertex is null.\n\t */\n\tprotected final void checkVertex(String vertex) {\n\t\tcheckForNull(vertex);\n\t\tif (!containsVertex(vertex)) {\n\t\t\tthrow new IllegalArgumentException(\"Vertex not found in graph: \" + vertex);\n\t\t}\n\t}\n\t\n\tprotected final void checkVertex(Vertex<V> vertex) {\n\t\tcheckForNull(vertex);\n\t\tif (!containsVertex(vertex.name()) || vertex(vertex.name()) != vertex) {\n\t\t\tthrow new IllegalArgumentException(\"Vertex not found in graph: \" + vertex);\n\t\t}\n\t}\n\t\n\t/** \n\t * Tests the given vertices for null and for membership in the graph.\n\t * @param v1 The first vertex to examine.\n\t * @param v2 The second vertex to examine.\n\t * @throws IllegalArgumentException If any vertex is not part of this graph.\n\t * @throws NullPointerException If any vertex is null.\n\t */\n\tprotected final void checkVertexes(String v1, String v2) {\n\t\tcheckVertex(v1);\n\t\tcheckVertex(v2);\n\t}\n\t\n\t/** \n\t * Tests the given vertices for null and for membership in the graph.\n\t * @param v1 The first vertex to examine.\n\t * @param v2 The second vertex to examine.\n\t * @throws IllegalArgumentException If any vertex is not part of this graph.\n\t * @throws NullPointerException If any vertex is null.\n\t */\n\tprotected final void checkVertexes(Vertex<V> v1, Vertex<V> v2) {\n\t\tcheckVertex(v1);\n\t\tcheckVertex(v2);\n\t}\n\t\n\t/**\n\t * Resets all distance / previous / visited markings from vertex info\n\t * objects in this graph.\n\t */\n\tprotected final void clearVertexInfo() {\n\t\tfor (Vertex<V> vertex : vertexes.values()) {\n\t\t\tvertex.clear();\n\t\t}\n\t}\n\t\n\t/**\n\t * Sets some of the distance / previous / visited markings from vertex info\n\t * objects in this graph to have various random values, to test whether\n\t * a student's code properly clears the info between calls.\n\t */\n\tprotected final void corruptVertexInfo() {\n\t\tRandom rand = new Random(42);\n\t\tList<Vertex<V>> vertexList = new ArrayList<Vertex<V>>(this.vertexes());\n\t\tCollections.shuffle(vertexList, rand);\n\t\tint i = 0;\n\t\tfor (Vertex<V> vertex : this.vertexes.values()) {\n\t\t\tif (i % 2 == 0) {\n\t\t\t\tvertex.setCost(rand.nextInt(1000));\n\t\t\t\tvertex.setNumber(rand.nextInt(1000000));\n\t\t\t\tint randomIndex = rand.nextInt(vertexList.size());\n\t\t\t\tvertex.setPrevious(vertexList.get(randomIndex));\n\t\t\t} else {\n\t\t\t\tvertex.clear();\n\t\t\t}\n\t\t}\n\t}\n\t\n\t/**\n\t * Returns the Vertex object associated with the given vertex.\n\t * @param v The vertex to examine.\n\t * @throws IllegalArgumentException If any vertex is not part of this graph.\n\t * @throws NullPointerException If any vertex is null.\n\t */\n\tprotected final Vertex<V> vertexInfo(String v) {\n\t\tcheckVertex(v);\n\t\treturn vertexes.get(v);\n\t}\n\t\n\t/**\n\t * Returns a read-only view of all internal data about vertex information.\n\t */\n\tprotected final Map<String, Vertex<V>> vertexInfos() {\n\t\treturn Collections.unmodifiableMap(vertexes);\n\t}\n\t\n\t// helper to remove a vertex; used by removeVertex and vertices() iterator remove()\n\tprivate void removeVertexHelper(String v) {\n\t\tVertex<V> vertex = vertex(v);\n\t\tMap<Vertex<V>, Edge<V, E>> row = adjacencyMap.row(vertex);\n//\t\tfor (Edge edge : row.values()) {\n//\t\t\t// edges.remove(edge.edge(), edge);\n//\t\t}\n\t\trow.clear();\n\t\t\n\t\tMap<Vertex<V>, Edge<V, E>> column = adjacencyMap.column(vertex);\n\t\tif (!directed) {\n//\t\t\tfor (Edge edge : column.values()) {\n//\t\t\t\t// edges.remove(edge.edge(), edge);\n//\t\t\t}\n\t\t}\n\t\tcolumn.clear();\n\t\tvertexes.remove(v);\n\t\t\n\t\t// TODO: doesn't remove edges connected to that vertex properly; fix\n\t}\n\t\n\t// helper to remove a vertex; used by removeVertex and vertices() iterator remove()\n\tprivate void removeVertexHelper(Vertex<V> v) {\n\t\tMap<Vertex<V>, Edge<V, E>> row = adjacencyMap.row(v);\n//\t\tfor (Edge edge : row.values()) {\n//\t\t\t// edges.remove(edge.edge(), edge);\n//\t\t}\n\t\trow.clear();\n\t\t\n\t\tMap<Vertex<V>, Edge<V, E>> column = adjacencyMap.column(v);\n\t\tif (!directed) {\n//\t\t\tfor (Edge edge : column.values()) {\n//\t\t\t\t// edges.remove(edge.edge(), edge);\n//\t\t\t}\n\t\t}\n\t\tcolumn.clear();\n\t\tvertexes.remove(v.name());\n\t\t\n\t\t// TODO: doesn't remove edges connected to that vertex properly; fix\n\t}\n\t\n\t\n\t// private class to represent edges() write-through collection view\n\t/*\n\tprivate class EdgeCollection extends AbstractCollection<Edge> {\n\t\t@Override\n\t\tpublic Iterator<Edge> iterator() {\n\t\t\treturn new EdgeIterator();\n\t\t}\n\t\t\n\t\t@Override\n\t\tpublic void clear() {\n\t\t\tBasicGraph.this.clearEdges();\n\t\t}\n\n\t\t@Override\n\t\tpublic int size() {\n\t\t\treturn edgeCount();\n\t\t}\n\t\t\n\t\tprivate class EdgeIterator implements Iterator<Edge> {\n\t\t\tprivate Iterator<Edge> innerItr;\n\t\t\tprivate long itrVersion;\n\t\t\tprivate Edge last;\n\t\t\t\n\t\t\tpublic EdgeIterator() {\n\t\t\t\t// innerItr = edges.values().iterator();\n\t\t\t\titrVersion = version;\n\t\t\t\tlast = null;\n\t\t\t}\n\t\t\t\n\t\t\tpublic boolean hasNext() {\n\t\t\t\tcheckVersion();\n\t\t\t\treturn innerItr.hasNext();\n\t\t\t}\n\n\t\t\tpublic Edge next() {\n\t\t\t\tcheckVersion();\n\t\t\t\tEdge edge = innerItr.next();\n\t\t\t\tlast = edge;\n\t\t\t\treturn edge; // edge.edge();\n\t\t\t}\n\n\t\t\tpublic void remove() {\n\t\t\t\tcheckVersion();\n\t\t\t\tinnerItr.remove();   // removes from graph's edges collection\n\t\t\t\t\n\t\t\t\t// need to also remove that edge from adjacency map\n\t\t\t\t// see removeEdge(V, V); don't want to modify edges or version though\n\t\t\t\tadjacencyMap.remove(last.start(), last.end());\n\t\t\t\tif (!directed) {\n\t\t\t\t\tadjacencyMap.remove(last.end(), last.start());\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tprivate void checkVersion() {\n\t\t\t\tif (version != itrVersion) {\n\t\t\t\t\tthrow new ConcurrentModificationException();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t*/\n\t\n\t// private class to represent vertices() write-through set view\n\t/*\n\tprivate class VertexSet extends AbstractSet<Vertex> {\n\t\t@Override\n\t\tpublic boolean add(Vertex v) {\n\t\t\taddVertex(v);\n\t\t\treturn true;\n\t\t}\n\t\t\n\t\t@Override\n\t\tpublic void clear() {\n\t\t\tBasicGraph.this.clear();\n\t\t}\n\t\t\n\t\t@Override\n\t\tpublic Iterator<Vertex> iterator() {\n\t\t\treturn new VertexIterator();\n\t\t}\n\n\t\t@Override\n\t\tpublic int size() {\n\t\t\treturn vertexCount();\n\t\t}\n\n\t\tprivate class VertexIterator implements Iterator<Vertex> {\n\t\t\tprivate Iterator<Vertex<Vertex>> innerItr;\n\t\t\tprivate long itrVersion;\n\t\t\tprivate Vertex<Vertex> last;\n\t\t\t\n\t\t\tpublic VertexIterator() {\n\t\t\t\tthis.innerItr = vertexes.values().iterator();\n\t\t\t\titrVersion = version;\n\t\t\t\tlast = null;\n\t\t\t}\n\t\t\t\n\t\t\tpublic boolean hasNext() {\n\t\t\t\tcheckVersion();\n\t\t\t\treturn innerItr.hasNext();\n\t\t\t}\n\n\t\t\tpublic Vertex next() {\n\t\t\t\tcheckVersion();\n\t\t\t\tVertex<Vertex> vertex = innerItr.next();\n\t\t\t\tlast = vertex;\n\t\t\t\treturn vertex.vertex();\n\t\t\t}\n\n\t\t\tpublic void remove() {\n\t\t\t\tcheckVersion();\n\t\t\t\tinnerItr.remove();   // removes from graph's vertices collection\n\t\t\t\t\n\t\t\t\t// need to also remove that edge from adjacency map\n\t\t\t\t// see removeVertex(V); don't want to modify version though\n\t\t\t\tremoveVertexHelper(last.vertex());\n\t\t\t\tlast = null;\n\t\t\t}\n\t\t\t\n\t\t\tprivate void checkVersion() {\n\t\t\t\tif (version != itrVersion) {\n\t\t\t\t\tthrow new ConcurrentModificationException();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t*/\n\t\n\t// private class to represent neighbors() write-through set view\n\t/*\n\tprivate class NeighborSet extends AbstractSet<Vertex> {\n\t\tSet<Vertex> row;\n\t\t\n\t\tpublic NeighborSet(Vertex v) {\n\t\t\trow = adjacencyMap.row(v).keySet();\n\t\t}\n\t\t\n\t\t@Override\n\t\tpublic void clear() {\n\t\t\t// row.clear();\n\t\t\tsuper.clear();\n\t\t}\n\n\t\t@Override\n\t\tpublic Iterator<Vertex> iterator() {\n\t\t\treturn new NeighborIterator();\n\t\t}\n\n\t\t@Override\n\t\tpublic int size() {\n\t\t\treturn row.size();\n\t\t}\n\n\t\tprivate class NeighborIterator implements Iterator<Vertex> {\n\t\t\tprivate Iterator<Vertex> innerItr;\n\t\t\tprivate long itrVersion;\n\t\t\tprivate Vertex last;\n\t\t\t\n\t\t\tpublic NeighborIterator() {\n\t\t\t\tthis.innerItr = row.iterator();\n\t\t\t\titrVersion = version;\n\t\t\t\tlast = null;\n\t\t\t}\n\t\t\t\n\t\t\tpublic boolean hasNext() {\n\t\t\t\tcheckVersion();\n\t\t\t\treturn innerItr.hasNext();\n\t\t\t}\n\n\t\t\tpublic Vertex next() {\n\t\t\t\tcheckVersion();\n\t\t\t\tVertex v = innerItr.next();\n\t\t\t\tlast = v;\n\t\t\t\treturn v;\n\t\t\t}\n\n\t\t\tpublic void remove() {\n\t\t\t\tcheckVersion();\n\t\t\t\tinnerItr.remove();   // removes from graph's vertices collection\n\t\t\t\t\n\t\t\t\t// need to also remove that edge from adjacency map\n\t\t\t\t// see removeVertex(V); don't want to modify version though\n\t\t\t\tremoveVertexHelper(last);\n\t\t\t\tlast = null;\n\t\t\t}\n\t\t\t\n\t\t\tprivate void checkVersion() {\n\t\t\t\tif (version != itrVersion) {\n\t\t\t\t\tthrow new ConcurrentModificationException();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t*/\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/collections/Edge.java",
    "content": "/*\r\n * @author Marty Stepp\r\n * @version 2016/11/29\r\n * - added template parameters <V, E>\r\n * @version 2015/06/08\r\n */\r\n\r\npackage stanford.cs106.collections;\r\n\r\n/**\r\n * An Edge object represents information stored in a graph edge,\r\n * including its vertices, weight, and any extra edge info.\r\n */\r\npublic class Edge<V, E> implements Cloneable {\r\n\t/** Default weight of an edge in an undirected graph (1). */\r\n\tpublic static final int DEFAULT_WEIGHT = 1;\r\n\t\r\n\tprivate Vertex<V> start;        // starting vertex for this edge\r\n\tprivate Vertex<V> end;          // ending vertex for this edge\r\n\tprivate double weight;       // The edge's weight; 1 in an unweighted graph\r\n\tprivate boolean weighted;\r\n\tpublic E extraData;     // extra information, if any stored in this edge (null if none)\r\n\t\r\n\t/** \r\n\t * Constructs information about the given edge with the default edge weight.\r\n\t * @param start The starting vertex of the edge.\r\n\t * @param end The ending vertex of the edge.\r\n\t * @param edge The extra information (if any) to store in this edge; null if none.\r\n\t * @throws NullPointerException If the start or end vertex is null.\r\n\t */\r\n\tpublic Edge(Vertex<V> start, Vertex<V> end) {\r\n\t\tthis(start, end, DEFAULT_WEIGHT, false);\r\n\t}\r\n\t\r\n\t/** \r\n\t * Constructs information about the given edge with the default edge weight.\r\n\t * @param start The starting vertex of the edge.\r\n\t * @param end The ending vertex of the edge.\r\n\t * @param edge The extra information (if any) to store in this edge; null if none.\r\n\t * @throws NullPointerException If the start or end vertex is null.\r\n\t */\r\n\tpublic Edge(Vertex<V> start, Vertex<V> end, double weight) {\r\n\t\tthis(start, end, weight, true);\r\n\t}\r\n\t\r\n\t/**\r\n\t * Constructs information about the given edge with the given weight.\r\n\t * @param start The starting vertex of the edge.\r\n\t * @param end The ending vertex of the edge.\r\n\t * @param weight Edge's weight; cannot be negative.  Set to 1 in an unweighted graph.\r\n\t * @param weighted true if this is used in a weighted graph, else false.\r\n\t * @throws IllegalArgumentException If the weight is negative.\r\n\t * @throws NullPointerException If the start or end vertex is null.\r\n\t */\r\n\tprivate Edge(Vertex<V> start, Vertex<V> end, double weight, boolean weighted) {\r\n\t\tif (start == null) {\r\n\t\t\tthrow new NullPointerException(\"null start vertex\");\r\n\t\t}\r\n\t\tif (end == null) {\r\n\t\t\tthrow new NullPointerException(\"null end vertex\");\r\n\t\t}\r\n\r\n\t\tthis.start = start;\r\n\t\tthis.end = end;\r\n\t\tsetWeight(weight);\r\n\t\tthis.weighted = weighted;\r\n\t}\r\n\t\r\n\t/**\r\n\t * Returns a copy of this Edge as per the contract of the Object.clone method.\r\n\t */\r\n\tpublic Edge<V, E> clone() {\r\n\t\ttry {\r\n\t\t\t@SuppressWarnings(\"unchecked\")\r\n\t\t\tEdge<V, E> copy = (Edge<V, E>) super.clone();\r\n\t\t\treturn copy;\r\n\t\t} catch (CloneNotSupportedException e) {\r\n\t\t\treturn null;  // will not happen\r\n\t\t}\r\n\t}\r\n\t\r\n\t/**\r\n\t * Returns true if this edge touches the given vertex, that is,\r\n\t * if it is the start or end of this edge.\r\n\t * @throws NullPointerException If the vertex is null.\r\n\t */\r\n\tpublic boolean contains(Vertex<V> vertex) {\r\n\t\tif (vertex == null) {\r\n\t\t\tthrow new NullPointerException(\"null vertex\");\r\n\t\t}\r\n\t\treturn start.equals(vertex) || end.equals(vertex);\r\n\t}\r\n\t\r\n\t/**\r\n\t * Returns the weight of this edge.\r\n\t */\r\n\tpublic double cost() {\r\n\t\treturn weight();\r\n\t}\r\n\t\r\n\t/**\r\n\t * Returns the ending vertex of this edge.\r\n\t * In undirected graphs, the notion of \"start\" and \"end\" are ambiguous\r\n\t * for an edge; this method always returns the second vertex that was passed\r\n\t * to the edge's constructor.\r\n\t */\r\n\tpublic Vertex<V> end() {\r\n\t\treturn end;\r\n\t}\r\n\t\r\n\t/**\r\n\t * Returns true if o refers to an Edge object with identical state to this Edge object.\r\n\t * @param o the object to examine\r\n\t */\r\n\tpublic boolean equals(Object o) {\r\n\t\tif (o instanceof Edge) {\r\n\t\t\t@SuppressWarnings(\"unchecked\")\r\n\t\t\tEdge<V, E> other = (Edge<V, E>) o;\r\n\t\t\treturn start.equals(other.start) &&\r\n\t\t\t\t\tend.equals(other.end) &&\r\n\t\t\t\t\tweight == other.weight;\r\n\t\t} else {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\t/**\r\n\t * Returns the ending vertex of this edge.\r\n\t * In undirected graphs, the notion of \"start\" and \"end\" are ambiguous\r\n\t * for an edge; this method always returns the second vertex that was passed\r\n\t * to the edge's constructor.\r\n\t */\r\n\tpublic Vertex<V> finish() {\r\n\t\treturn end;\r\n\t}\r\n\t\r\n\t/**\r\n\t * Returns an integer code for placing this edge into a hash-based collection.\r\n\t */\r\n\tpublic int hashCode() {\r\n\t\treturn 13 * start.hashCode() +\r\n\t\t\t\t37 * end.hashCode();\r\n\t\t\t\t// 137 * weight +\r\n\t\t\t\t// (edge == null ? 42 : edge.hashCode());\r\n\t}\r\n\t\r\n\t/**\r\n\t * Modifies this edge's weight to be the given value.\r\n\t * @param weight The new weight to use.\r\n\t * @throws IllegalArgumentException If the weight is negative.\r\n\t */\r\n\tpublic void setWeight(double weight) {\r\n\t\tif (weight < 0) {\r\n\t\t\tthrow new IllegalArgumentException(\"negative edge weight: \" + weight);\r\n\t\t}\r\n\t\tthis.weight = weight;\r\n\t}\r\n\t\r\n\t/**\r\n\t * Returns the starting vertex of this edge.\r\n\t * In undirected graphs, the notion of \"start\" and \"end\" are ambiguous\r\n\t * for an edge; this method always returns the first vertex that was passed\r\n\t * to the edge's constructor.\r\n\t */\r\n\tpublic Vertex<V> start() {\r\n\t\treturn start;\r\n\t}\r\n\t\r\n\t/**\r\n\t * Returns the weight of this edge.\r\n\t */\r\n\tpublic double weight() {\r\n\t\treturn weight;\r\n\t}\r\n\t\r\n\t/** Returns a string representation of the information about this edge. */\r\n\tpublic String toString() {\r\n\t\treturn \"(\" + start.name() + \",\" + end.name()\r\n\t\t\t\t+ (weighted ? \",weight=\" + weight : \"\")\r\n\t\t\t\t+ (extraData != null ? \",extraData=\" + extraData : \"\")\r\n\t\t\t\t+ \")\";\r\n\t}\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/collections/Graph.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2015/06/06\n */\n\npackage stanford.cs106.collections;\n\nimport java.util.*;\n\n/**\n * A Graph is a collection of vertices and edges between vertices.\n * A graph can be directed or undirected (indicating whether edges are one-directional\n * or bidirectional, respectively), and weighted or unweighted (indicating whether\n * edges have different or uniform cost, respectively).\n * \n * <p>\n * A Graph does not allow null vertices, but it does allow null edges,\n * which corresponds to an edge with no extra information stored in it.\n * \n * <p>\n * A Graph can have at most one edge with the same start and end vertex;\n * in other words, it is not permitted to have two edges between the same vertices,\n * except in a directed graph it is allowed to have an edge A,B and an edge B,A.\n * Loops (edges from a vertex directly back to itself) are prohibited; an\n * IllegalArgumentException will be thrown on an attempt to add a loop.\n * \n * <p>\n * Implementations of the Graph interface do not allow edges with negative weights.\n * If a negative edge weight is passed, an IllegalArgumentException is thrown.\n * A weight of 0 is allowed.\n */\npublic interface Graph<V, E> {\n\t/**\n\t * Adds an edge between the given two vertices, if none already exists.\n\t * The edge will be given a default weight of 1.\n\t * No extra information will be stored in the edge.\n\t * If an edge already exists between these vertices, its extra information\n\t * will be cleared and its weight is updated to 1.\n\t * If this graph is undirected, the two vertices can be passed in either order.\n\t * \n\t * @param v1 Starting vertex.\n\t * @param v2 Ending vertex.\n\t * @throws IllegalArgumentException If either vertex is not part of the graph,\n\t *                                  or if v1 and v2 are the same (a loop).\n\t * @throws NullPointerException If any object parameter is null.\n\t */\n\tvoid addEdge(String v1, String v2);\n\n\t/**\n\t * Adds an edge between the given two vertices, if none already exists.\n\t * The edge will be given a default weight of 1.\n\t * No extra information will be stored in the edge.\n\t * If an edge already exists between these vertices, its extra information\n\t * will be cleared and its weight is updated to 1.\n\t * If this graph is undirected, the two vertices can be passed in either order.\n\t * \n\t * @param v1 Starting vertex.\n\t * @param v2 Ending vertex.\n\t * @throws IllegalArgumentException If either vertex is not part of the graph,\n\t *                                  or if v1 and v2 are the same (a loop).\n\t * @throws NullPointerException If any object parameter is null.\n\t */\n\tvoid addEdge(Vertex<V> v1, Vertex<V> v2);\n\t\n\t/**\n\t * Adds an edge between the given two vertices, if none already exists.\n\t * The edge will be given a default weight of 1.\n\t * No extra information will be stored in the edge.\n\t * If an edge already exists between these vertices, its extra information\n\t * will be cleared and its weight is updated to 1.\n\t * If this graph is undirected, the two vertices can be passed in either order.\n\t * \n\t * @param v1 Starting vertex.\n\t * @param v2 Ending vertex.\n\t * @param weight Edge's weight.\n\t * @throws IllegalArgumentException If either vertex is not part of the graph,\n\t *                                  if edge weight is negative,\n\t *                                  if v1 and v2 are the same (a loop),\n\t *                                  or if this is an unweighted graph and an edge\n\t *                                  weight other than 1 is passed.\n\t * @throws NullPointerException If any object parameter is null.\n\t */\n\tvoid addEdge(String v1, String v2, double weight);\n\t\n\t/**\n\t * Adds an edge between the given two vertices, if none already exists.\n\t * The edge will be given a default weight of 1.\n\t * No extra information will be stored in the edge.\n\t * If an edge already exists between these vertices, its extra information\n\t * will be cleared and its weight is updated to 1.\n\t * If this graph is undirected, the two vertices can be passed in either order.\n\t * \n\t * @param v1 Starting vertex.\n\t * @param v2 Ending vertex.\n\t * @param weight Edge's weight.\n\t * @throws IllegalArgumentException If either vertex is not part of the graph,\n\t *                                  if edge weight is negative,\n\t *                                  if v1 and v2 are the same (a loop),\n\t *                                  or if this is an unweighted graph and an edge\n\t *                                  weight other than 1 is passed.\n\t * @throws NullPointerException If any object parameter is null.\n\t */\n\tvoid addEdge(Vertex<V> v1, Vertex<V> v2, double weight);\n\t\n\t/**\n\t * Adds the given element as a vertex in this graph.\n\t * If the given element is already a vertex in this graph, no change is made.\n\t * @param v The vertex to add.\n\t * @throws NullPointerException If the vertex is null.\n\t */\n\tvoid addVertex(String v);\n\t\n\t/**\n\t * Removes all vertices and edges from this graph.\n\t */\n\tvoid clear();\n\t\n\t/**\n\t * Removes all edges from this graph.\n\t */\n\tvoid clearEdges();\n\t\n\t/**\n\t * Returns whether this graph contains an edge between the given vertices.\n\t * If either vertex is not part of this graph, returns false.\n\t */\n\tboolean containsEdge(String v1, String v2);\n\t\n\t/**\n\t * Returns whether this graph contains an edge between the given vertices.\n\t * If either vertex is not part of this graph, returns false.\n\t */\n\tboolean containsEdge(Vertex<V> v1, Vertex<V> v2);\n\t\n\t/**\n\t * Returns true if the given list of vertices represents a path that can\n\t * be formed by walking edges between those vertices in this graph,\n\t * walking from the start to the end of the list.\n\t * If any vertex in the path is not found in this graph, or if there is\n\t * not an edge between any pair of neighboring vertices in the list, returns false.\n\t * Returns true for an empty list, and for a one-element list where the one\n\t * element is a vertex that is found in this graph.\n\t * @param path The list of vertices representing the path to check.\n\t * @throws NullPointerException If the list or any of its elements is null.\n\t */\n\tboolean containsPath(List<String> path);\n\t\n\t/**\n\t * Returns whether this graph contains the given vertex.\n\t * If the vertex passed is null, returns false.\n\t * @param v The vertex.\n\t */\n\tboolean containsVertex(String v);\n\t\n\t/**\n\t * Returns whether this graph contains the given vertex.\n\t * If the vertex passed is null, returns false.\n\t * @param v The vertex.\n\t */\n\tboolean containsVertex(Vertex<V> v);\n\t\n\t/**\n\t * Returns the total cost of following the given path of vertices in this graph,\n\t * which is the sum of the edge weights between the path's vertices from start to end.\n\t * @param path The list of vertices in the path to examine.\n\t * @throws IllegalArgumentException If any vertex in the path is not part of this graph,\n\t *                                  or if there is not an edge between any two neighboring\n\t *                                  vertices in the path.\n\t * @throws NullPointerException If the path or any vertex in it is null.\n\t */\n\tpublic double cost(List<String> path);\n\t\n\t/**\n\t * Returns the number of outgoing edges from the given vertex.\n\t * This method is an alias for outDegree; it is provided because\n\t * undirected graphs generally just think of vertices as having one\n\t * overall degree and not a separate in- and out- degree.\n\t * @param v The vertex.\n\t * @throws IllegalArgumentException If the vertex is not part of the graph.\n\t * @throws NullPointerException If any object parameter is null.\n\t */\n\tint degree(String v);\n\t\n\t/**\n\t * Returns the number of outgoing edges from the given vertex.\n\t * This method is an alias for outDegree; it is provided because\n\t * undirected graphs generally just think of vertices as having one\n\t * overall degree and not a separate in- and out- degree.\n\t * @param v The vertex.\n\t * @throws IllegalArgumentException If the vertex is not part of the graph.\n\t * @throws NullPointerException If any object parameter is null.\n\t */\n\tint degree(Vertex<V> v);\n\t\n\t/**\n\t * Returns the extra information stored in the edge between vertices v1 and v2, if one exists.\n\t * If this graph is undirected, the two vertices can be passed in either order.\n\t * Returns null if there is no edge between the given vertices or if the edge between\n\t * the given vertices contains no extra information.\n\t * @param v1 The starting vertex.\n\t * @param v2 The ending vertex.\n\t * @throws IllegalArgumentException If either vertex is not part of the graph.\n\t * @throws NullPointerException If any object parameter is null.\n\t */\n\tEdge<V, E> edge(String v1, String v2);\n\t\n\t/**\n\t * Returns the extra information stored in the edge between vertices v1 and v2, if one exists.\n\t * If this graph is undirected, the two vertices can be passed in either order.\n\t * Returns null if there is no edge between the given vertices or if the edge between\n\t * the given vertices contains no extra information.\n\t * @param v1 The starting vertex.\n\t * @param v2 The ending vertex.\n\t * @throws IllegalArgumentException If either vertex is not part of the graph.\n\t * @throws NullPointerException If any object parameter is null.\n\t */\n\tEdge<V, E> edge(Vertex<V> v1, Vertex<V> v2);\n\t\n\t/**\n\t * Returns the total number of edges in this graph.\n\t * Note that this does not necessarily equal edges().size() because edges()\n\t * returns a set of unique edge information values stored in each edge,\n\t * excluding nulls (edges without any extra information stored in them),\n\t * while this method returns a count of all edges including ones without\n\t * any information stored in them and ones with information that is a duplicate\n\t * of that stored in some other edge.\n\t */\n\tint edgeCount();\n\t\n\t/**\n\t * Returns a collection of all edges in this graph.\n\t * The collection is a shallow 'view' of the edges.\n\t * Any changes made to it are written back to the graph.\n\t * New edges cannot be added directly to the collection returned by this method,\n\t * because it would not know which vertices to associate the edge with.\n\t * But edges can be removed, cleared, etc.\n\t */\n\tCollection<Edge<V, E>> edges();\n\t\n\t/**\n\t * Returns the weight of the edge between vertices v1 and v2, if one exists.\n\t * If this graph is undirected, the two vertices can be passed in either order.\n\t * Returns -1 if there is no edge between the given vertices.\n\t * @param v1 The starting vertex.\n\t * @param v2 The ending vertex.\n\t * @throws IllegalArgumentException If either vertex is not part of the graph.\n\t * @throws NullPointerException If any object parameter is null.\n\t */\n\tdouble edgeWeight(String v1, String v2);\n\t\n\t/**\n\t * Returns the weight of the edge between vertices v1 and v2, if one exists.\n\t * If this graph is undirected, the two vertices can be passed in either order.\n\t * Returns -1 if there is no edge between the given vertices.\n\t * @param v1 The starting vertex.\n\t * @param v2 The ending vertex.\n\t * @throws IllegalArgumentException If either vertex is not part of the graph.\n\t * @throws NullPointerException If any object parameter is null.\n\t */\n\tdouble edgeWeight(Vertex<V> v1, Vertex<V> v2);\n\t\n\t/**\n\t * Returns the number of incoming edges to the given vertex.\n\t * @param v The vertex to examine.\n\t * @throws IllegalArgumentException If the vertex is not part of the graph.\n\t * @throws NullPointerException If any object parameter is null.\n\t */\n\tint inDegree(String v);\n\t\n\t/**\n\t * Returns the number of incoming edges to the given vertex.\n\t * @param v The vertex to examine.\n\t * @throws IllegalArgumentException If the vertex is not part of the graph.\n\t * @throws NullPointerException If any object parameter is null.\n\t */\n\tint inDegree(Vertex<V> v);\n\t\n\t/**\n\t * Returns true if this is a directed graph, and false if it is undirected.\n\t */\n\tboolean isDirected();\n\t\n\t/**\n\t * Returns true if this graph does not contain any vertices or edges.\n\t */\n\tboolean isEmpty();\n\t\n\t/**\n\t * Returns true if there is any path in this graph that \n\t * leads from the given starting vertex v1 to the given ending vertex v2. \n\t * Uses the Depth-First Search (DFS) algorithm to find the path.\n\t * If there is no path to v2 from v1, the method returns false. \n\t * @param v1 The starting vertex.\n\t * @param v2 The ending vertex.\n\t * @throws IllegalArgumentException If either vertex is not part of the graph.\n\t * @throws NullPointerException If any object parameter is null.\n\t */\n\t// boolean isReachable(V v1, V v2);\n\t\n\t/**\n\t * Returns true if this is a weighted graph and false if it is unweighted.\n\t */\n\tboolean isWeighted();\n\t\n\t/** \n\t * Returns a collection containing all neighbors, that is, all vertices that are\n\t * directly connected to the given vertex by an outgoing edge.\n\t * The collection is a shallow 'view' of the neighboring vertices.\n\t * Any changes made to it are written back to the graph.\n\t * New vertices cannot be added directly to the collection returned by this method.\n\t * But vertices can be removed, cleared, etc.\n\t * @param v The vertex to examine.\n\t * @throws IllegalArgumentException If the vertex is not part of this graph.\n\t * @throws NullPointerException If the vertex is null.\n\t */\n\tSet<Vertex<V>> neighbors(String v);\n\t\n\t/** \n\t * Returns a collection containing all neighbors, that is, all vertices that are\n\t * directly connected to the given vertex by an outgoing edge.\n\t * The collection is a shallow 'view' of the neighboring vertices.\n\t * Any changes made to it are written back to the graph.\n\t * New vertices cannot be added directly to the collection returned by this method.\n\t * But vertices can be removed, cleared, etc.\n\t * @param v The vertex to examine.\n\t * @throws IllegalArgumentException If the vertex is not part of this graph.\n\t * @throws NullPointerException If the vertex is null.\n\t */\n\tSet<Vertex<V>> neighbors(Vertex<V> v);\n\t\n\t/**\n\t * Returns the number of outgoing edges from the given vertex.\n\t * @param v The vertex to examine.\n\t */\n\tint outDegree(String v);\n\t\n\t/**\n\t * Returns the number of outgoing edges from the given vertex.\n\t * @param v The vertex to examine.\n\t */\n\tint outDegree(Vertex<V> v);\n\t\n\t/**\n\t * Removes any edge(s) that exist with the given extra info stored in it/them.\n\t * If multiple edges have the given extra info, all are removed.\n\t * If null is passed, removes any edges that have no extra info stored in them.\n\t * If no edge exists in this graph with the given extra info, has no effect.\n\t * This implementation must examine all edges in the graph to find the\n\t * specified edge, so it is inefficient.\n\t * @param e The edge extra info of the edge to remove.\n\t */\n\tvoid removeEdge(Edge<V, E> e);\n\t\n\t/**\n\t * Removes any edge that exists from vertex v1 to vertex v2.\n\t * If this graph is undirected, the two vertices can be passed in either order.\n\t * If no edge exists in this graph between the two given vertices, has no effect.\n\t * @param v1 The starting vertex of the edge.\n\t * @param v2 The ending vertex of the edge.\n\t * @throws IllegalArgumentException If either vertex is not part of the graph.\n\t * @throws NullPointerException If any object parameter is null.\n\t */\n\tvoid removeEdge(String v1, String v2);\n\t\n\t/**\n\t * Removes any edge that exists from vertex v1 to vertex v2.\n\t * If this graph is undirected, the two vertices can be passed in either order.\n\t * If no edge exists in this graph between the two given vertices, has no effect.\n\t * @param v1 The starting vertex of the edge.\n\t * @param v2 The ending vertex of the edge.\n\t * @throws IllegalArgumentException If either vertex is not part of the graph.\n\t * @throws NullPointerException If any object parameter is null.\n\t */\n\tvoid removeEdge(Vertex<V> v1, Vertex<V> v2);\n\t\n\t/**\n\t * Removes the given vertex from this graph, along with all edges that were\n\t * touching it.\n\t * If the given vertex is not part of this graph, has no effect.\n\t * @param v The vertex to remove.\n\t * @throws NullPointerException If the vertex is null.\n\t */\n\tvoid removeVertex(String v);\n\t\n\t/**\n\t * Removes the given vertex from this graph, along with all edges that were\n\t * touching it.\n\t * If the given vertex is not part of this graph, has no effect.\n\t * @param v The vertex to remove.\n\t * @throws NullPointerException If the vertex is null.\n\t */\n\tvoid removeVertex(Vertex<V> v);\n\t\n\t/**\n\t * Clears out any data stored in each vertex.\n\t */\n\tvoid resetData();\n\t\n\t/** \n\t * Returns a string representation of this graph and its vertices and edges, such as\n\t * \"{V={A, B, C}, E={(A, B), (A, C)}}\".\n\t */\n\tString toString();\n\t\n\t/** \n\t * Returns a detailed multi-line string representation of this graph and its vertices, such as\n\t * \"Graph{\n\t *     vertices:\n\t *         A -> neighbors: [B, C]\n\t *         B -> neighbors: [A]\n\t *         C -> neighbors: [A]\n\t *     edges:\n\t *         (A,B,weight=2)\n\t *         (A,C)\n\t * }\"\n\t */\n\tString toStringDetailed();\n\t\n\t/**\n\t * Returns the structure of information about the vertex with the given name.\n\t */\n\tVertex<V> vertex(String name);\n\t\n\t/**\n\t * Returns the number of vertices in this graph.\n\t */\n\tint vertexCount();\n\n\t/** \n\t * Returns a collection of the vertices in this graph.\n\t * The collection is a shallow 'view' of the vertices.\n\t * Any changes made to it are written back to the graph.\n\t * Vertices can be added, removed, cleared, etc. on this collection.\n\t */\n\tCollection<Vertex<V>> vertexes();\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/collections/GraphColor.java",
    "content": "/*\r\n * @author Marty Stepp\r\n * @version 2015/05/28\r\n */\r\n\r\npackage stanford.cs106.collections;\r\n\r\npublic enum GraphColor {\r\n\tUNCOLORED, WHITE, GRAY, YELLOW, GREEN, RED\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/collections/Grid.java",
    "content": "/*\r\n * A quick reimplementation of Stanford C++ library's Grid collection in Java.\r\n * Basically a thin wrapper around a 2-D array, but useful for porting C++\r\n * programs over to Java with minimal code changes.\r\n * \r\n * @author Marty Stepp\r\n * @version 2017/10/22\r\n * - added zero-arg constructor\r\n * @version 2016/11/03\r\n * - added equals, hashCode\r\n * @version 2015/05/28\r\n * - initial version\r\n */\r\n\r\npackage stanford.cs106.collections;\r\n\r\nimport java.util.Arrays;\r\n\r\npublic class Grid<E> {\r\n\tprivate int rows, cols;\r\n\tprivate E[][] array;\r\n\t\r\n\tpublic Grid() {\r\n\t\tthis(0, 0);\r\n\t}\r\n\t\r\n\tpublic Grid(int rows, int cols) {\r\n\t\tresize(rows, cols);\r\n\t}\r\n\t\r\n\tpublic boolean equals(Object o) {\r\n\t\tif (!(o instanceof Grid)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t@SuppressWarnings(\"unchecked\")\r\n\t\tGrid<E> grid = (Grid<E>) o;\r\n\t\tif (grid.numRows() != numRows() || grid.numCols() != numCols()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t\r\n\t\tfor (int row = 0; row < rows; row++) {\r\n\t\t\tfor (int col = 0; col < cols; col++) {\r\n\t\t\t\tE him = grid.array[row][col];\r\n\t\t\t\tE me = array[row][col];\r\n\t\t\t\tif (him != me) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tif (him != null && me != null && !him.equals(me)) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn true;\r\n\t}\r\n\t\r\n\tpublic void fill(E value) {\r\n\t\tfor (int row = 0; row < rows; row++) {\r\n\t\t\tfor (int col = 0; col < cols; col++) {\r\n\t\t\t\tarray[row][col] = value;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tpublic E get(int row, int col) {\r\n\t\tcheckIndex(row, col);\r\n\t\treturn array[row][col];\r\n\t}\r\n\t\r\n\tpublic int hashCode() {\r\n\t\tint mult = 7;\r\n\t\tint hash = 31;\r\n\t\tfor (int row = 0; row < rows; row++) {\r\n\t\t\tfor (int col = 0; col < cols; col++) {\r\n\t\t\t\thash = hash * mult + (array[row][col] == null ? 0 : array[row][col].hashCode());\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn hash;\r\n\t}\r\n\t\r\n\tpublic int height() {\r\n\t\treturn rows;\r\n\t}\r\n\t\r\n\tpublic boolean inBounds(int row, int col) {\r\n\t\treturn row >= 0 && row < rows && col >= 0 && col < cols;\r\n\t}\r\n\t\r\n\tpublic boolean isEmpty() {\r\n\t\treturn rows == 0 || cols == 0;\r\n\t}\r\n\t\r\n\tpublic int numCols() {\r\n\t\treturn cols;\r\n\t}\r\n\t\r\n\tpublic int numRows() {\r\n\t\treturn rows;\r\n\t}\r\n\t\r\n\t@SuppressWarnings(\"unchecked\")\r\n\tpublic void resize(int rows, int cols) {\r\n\t\tif (rows < 0 || cols < 0) {\r\n\t\t\tthrow new IllegalArgumentException(rows + \",\" + cols);\r\n\t\t}\r\n\t\tthis.rows = rows;\r\n\t\tthis.cols = cols;\r\n\t\tthis.array = (E[][]) new Object[rows][cols];\r\n\t}\r\n\t\r\n\tpublic void set(int row, int col, E value) {\r\n\t\tcheckIndex(row, col);\r\n\t\tarray[row][col] = value;\r\n\t}\r\n\t\r\n\tpublic int size() {\r\n\t\treturn rows * cols;\r\n\t}\r\n\t\r\n\tpublic String toString() {\r\n\t\treturn Arrays.deepToString(array);\r\n\t}\r\n\t\r\n\tpublic String toString2D() {\r\n\t\treturn \"{\" + toString2D(\r\n\t\t\t\t/* rowStart */     \"{\",\r\n\t\t\t\t/* rowEnd */       \"}\",\r\n\t\t\t\t/* colSeparator */ \", \",\r\n\t\t\t\t/* rowSeparator */ \",\\n \")\r\n\t\t\t\t+ \"}\";\r\n\t}\r\n\t\r\n\tpublic String toString2D(String rowStart, String rowEnd, String colSeparator, String rowSeparator) {\r\n\t\tStringBuilder sb = new StringBuilder();\r\n\t\tfor (int row = 0; row < numRows(); row++) {\r\n\t\t\tsb.append(rowStart);\r\n\t\t\tfor (int col = 0; col < numCols(); col++) {\r\n\t\t\t\tif (col > 0) {\r\n\t\t\t\t\tsb.append(colSeparator);\r\n\t\t\t\t}\r\n\t\t\t\tsb.append(get(row, col));\r\n\t\t\t}\r\n\t\t\tsb.append(rowEnd);\r\n\t\t\tsb.append(rowSeparator);\r\n\t\t}\r\n\t\treturn sb.toString();\r\n\t}\r\n\t\r\n\tpublic int width() {\r\n\t\treturn cols;\r\n\t}\r\n\t\r\n\tprivate void checkIndex(int row, int col) {\r\n\t\tif (!inBounds(row, col)) {\r\n\t\t\tthrow new IndexOutOfBoundsException(row + \",\" + col);\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/collections/HashBasedTable.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2015/06/06\n */\n\npackage stanford.cs106.collections;\n\nimport java.util.*;\n\npublic class HashBasedTable<R, C, V> extends AbstractTable<R, C, V> {\n\tpublic static <R, C, V> HashBasedTable<R, C, V> create() {\n\t\treturn new HashBasedTable<R, C, V>();\n\t}\n\t\n\t@Override\n\tprotected Map<R, Map<C, V>> createTableMap() {\n\t\treturn new HashMap<R, Map<C, V>>();\n\t}\n\n\t@Override\n\tprotected Map<R, V> createColumnMap() {\n\t\treturn new HashMap<R, V>();\n\t}\n\n\t@Override\n\tprotected Map<C, V> createRowMap() {\n\t\treturn new HashMap<C, V>();\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/collections/HashMultimap.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2015/06/06\n */\n\npackage stanford.cs106.collections;\n\nimport java.util.*;\n\npublic class HashMultimap<K, V> extends AbstractMultimap<K, V> {\n\tpublic static <K, V> HashMultimap<K, V> create() {\n\t\treturn new HashMultimap<K, V>();\n\t}\n\t\n\tpublic static <K, V> HashMultimap<K, V> create(boolean isSet) {\n\t\treturn new HashMultimap<K, V>(isSet);\n\t}\n\t\n\tpublic HashMultimap() {\n\t\tsuper();\n\t}\n\t\n\tpublic HashMultimap(boolean isSet) {\n\t\tsuper(isSet);\n\t}\n\t\n\t@Override\n\tprotected Map<K, Collection<V>> createMap() {\n\t\treturn new HashMap<K, Collection<V>>();\n\t}\n\n\t@Override\n\tprotected Collection<V> createSet() {\n\t\treturn new HashSet<V>();\n\t}\n\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/collections/Lexicon.java",
    "content": "/*\r\n * @author Marty Stepp\r\n * @version 2016/11/03\r\n * - added isEmpty, toString, equals, hashCode\r\n * @version 2016/07/13\r\n * - added iterator, implementing Iterable<String> for for-each looping\r\n * - added constructors that take an input source\r\n * - added addWordsFrom(...) methods\r\n * \r\n * Implementation notes: doesn't totally work. Has all of A-Z as prefixes,\r\n * regardless of contents, and doesn't support removal.\r\n * Implemented naively using just a set of strings.\r\n */\r\n\r\npackage stanford.cs106.collections;\r\n\r\nimport java.io.*;\r\nimport java.util.*;\r\nimport stanford.cs106.io.IORuntimeException;\r\n\r\npublic class Lexicon implements Iterable<String> {\r\n\tprivate Set<String> words;\r\n\tprivate Set<String> knownPrefixes;\r\n\t\r\n\tpublic Lexicon() {\r\n\t\twords = new HashSet<String>();\r\n\t\tknownPrefixes = new HashSet<String>();\r\n\t\tknownPrefixes.add(\"\");\r\n\t\tfor (char c = 'A'; c <= 'Z'; c++) {\r\n\t\t\tknownPrefixes.add(String.valueOf(c));\r\n\t\t}\r\n\t}\r\n\t\r\n\tpublic Lexicon(String filename) {\r\n\t\taddWordsFromFile(filename);\r\n\t}\r\n\t\r\n\tpublic void add(String word) {\r\n\t\tword = word.toUpperCase();\r\n\t\twords.add(word);\r\n\t\tfor (int i = 2; i <= word.length(); i++) {\r\n\t\t\tknownPrefixes.add(word.substring(0, i));\r\n\t\t}\r\n\t}\r\n\t\r\n\tpublic void addWordsFrom(InputStream input) {\r\n\t\tScanner scan = new Scanner(input);\r\n\t\taddWordsFrom(scan);\r\n\t}\r\n\t\r\n\tpublic void addWordsFrom(Reader reader) {\r\n\t\tScanner scan = new Scanner(reader);\r\n\t\taddWordsFrom(scan);\r\n\t}\r\n\t\r\n\tpublic void addWordsFrom(Scanner input) {\r\n\t\twhile (input.hasNextLine()) {\r\n\t\t\tString line = input.nextLine().trim();\r\n\t\t\tif (!line.isEmpty()) {\r\n\t\t\t\tadd(line);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tpublic void addWordsFromFile(File file) {\r\n\t\ttry {\r\n\t\t\tScanner input = new Scanner(file);\r\n\t\t\taddWordsFrom(input);\r\n\t\t} catch (FileNotFoundException fnfe) {\r\n\t\t\tthrow new IORuntimeException(fnfe);\r\n\t\t}\r\n\t}\r\n\t\r\n\tpublic void addWordsFromFile(String filename) {\r\n\t\taddWordsFromFile(new File(filename));\r\n\t}\r\n\t\r\n\tpublic boolean contains(String word) {\r\n\t\treturn words.contains(word.toUpperCase());\r\n\t}\r\n\t\r\n\tpublic boolean containsPrefix(String prefix) {\r\n\t\treturn knownPrefixes.contains(prefix.toUpperCase());\r\n\t}\r\n\t\r\n\tpublic boolean equals(Object o) {\r\n\t\tif (o instanceof Lexicon) {\r\n\t\t\tLexicon lex = (Lexicon) o;\r\n\t\t\treturn lex.words.equals(this.words);\r\n\t\t} else {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\tpublic int hashCode() {\r\n\t\treturn words.hashCode();\r\n\t}\r\n\r\n\tpublic boolean isEmpty() {\r\n\t\treturn size() == 0;\r\n\t}\r\n\t\r\n\tpublic Iterator<String> iterator() {\r\n\t\treturn Collections.unmodifiableSet(words).iterator();\r\n\t}\r\n\t\r\n\tpublic int prefixCount() {\r\n\t\treturn knownPrefixes.size();\r\n\t}\r\n\t\r\n\tpublic int size() {\r\n\t\treturn words.size();\r\n\t}\r\n\t\r\n\tpublic String toString() {\r\n\t\treturn words.toString();\r\n\t}\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/collections/Multimap.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2015/06/06\n */\n\npackage stanford.cs106.collections;\n\nimport java.util.*;\n\npublic interface Multimap<K, V> {\n\tvoid clear();\n\tboolean\tcontainsEntry(Object key, Object value);\n\tboolean\tcontainsKey(Object key);\n\tboolean\tcontainsValue(Object value);\n\tCollection<V> get(K key);\n\tboolean\tisEmpty();\n\tSet<K> keySet();\n\tboolean\tput(K key, V value);\n\tboolean\tremove(Object key, Object value);\n\tCollection<V> removeAll(Object key);\n\tint\tsize();\n\tCollection<V> values();\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/collections/SearchableGraph.java",
    "content": "///*\r\n// * @author Marty Stepp\r\n// * @version 2015/06/06\r\n// */\r\n//\r\n//package stanford.cs106.collections;\r\n//\r\n//import java.util.*;\r\n//// import com.google.common.collect.*;\r\n//\r\n///**\r\n// * A SearchableGraph implements the Graph interface by writing three path-finding\r\n// * methods: isReachable (DFS), shortestPath (BFS), and minimumWeightPath (Dijkstra's\r\n// * algorithm).  It builds on the partial implementation found in the AbstractGraph class.\r\n// */\r\n//public class SearchableGraph extends AbstractGraph {\r\n//\t/** \r\n//\t * Constructs a new empty undirected, unweighted graph.\r\n//\t */\r\n//\tpublic SearchableGraph() {\r\n//\t\tsuper();\r\n//\t}\r\n//\t\r\n//\t/** \r\n//\t * Constructs a new empty graph that can be directed or undirected,\r\n//\t * weighted or unweighted.\r\n//\t */\r\n//\tpublic SearchableGraph(boolean directed, boolean weighted) {\r\n//\t\tsuper(directed, weighted);\r\n//\t}\r\n//\t\r\n//\t\r\n//\t/**\r\n//\t * Returns true if there is any path in this graph that \r\n//\t * leads from the given starting vertex v1 to the given ending vertex v2. \r\n//\t * Uses the Depth-First Search (DFS) algorithm to find the path.\r\n//\t * If there is no path to v2 from v1, the method returns false. \r\n//\t * @param v1 The starting vertex.\r\n//\t * @param v2 The ending vertex.\r\n//\t * @throws IllegalArgumentException If either vertex is not part of the graph.\r\n//\t * @throws NullPointerException If any object parameter is null.\r\n//\t */\r\n//\tpublic boolean isReachable(V v1, V v2) {\r\n//\t\tcheckVertexes(v1, v2);\r\n//\t\tclearVertexInfo();\r\n//\t\treturn isReachableHelper(v1, v2);\r\n//\t}\r\n//\t\r\n//\t// private recursive DFS helper for isReachable\r\n//\tprivate boolean isReachableHelper(V v1, V v2) {\r\n//\t\tif (v1.equals(v2)) {\r\n//\t\t\treturn true;\r\n//\t\t}\r\n//\t\t\r\n//\t\tvertexInfo(v1).setVisited();\r\n//\t\tfor (V neighbor : neighbors(v1)) {\r\n//\t\t\tif (!vertexInfo(neighbor).visited() && isReachableHelper(neighbor, v2)) {\r\n//\t\t\t\treturn true;\r\n//\t\t\t}\r\n//\t\t}\r\n//\t\t\r\n//\t\treturn false;\r\n//\t}\r\n//\t\r\n//\t/**\r\n//\t * Returns true if there is any path in this graph that \r\n//\t * leads from the given starting vertex v1 to the given ending vertex v2. \r\n//\t * Uses the Depth-First Search (DFS) algorithm to find the path.\r\n//\t * If there is no path to v2 from v1, the method returns false. \r\n//\t * @param v1 The starting vertex.\r\n//\t * @param v2 The ending vertex.\r\n//\t * @throws IllegalArgumentException If either vertex is not part of the graph.\r\n//\t * @throws NullPointerException If any object parameter is null.\r\n//\t */\r\n//\tpublic List<V> dfs(V v1, V v2) {\r\n//\t\tcheckVertexes(v1, v2);\r\n//\t\tclearVertexInfo();\r\n//\t\tList<V> path = new ArrayList<V>();\r\n//\t\tdfsHelper(v1, v2, path);\r\n//\t\treturn path;\r\n//\t}\r\n//\t\r\n//\t// private recursive DFS helper for isReachable\r\n//\tprivate boolean dfsHelper(V v1, V v2, List<V> path) {\r\n//\t\tvertexInfo(v1).setVisited();\r\n//\t\tpath.add(v1);\r\n//\t\tif (v1.equals(v2)) {\r\n//\t\t\treturn true;\r\n//\t\t}\r\n//\t\t\r\n//\t\tfor (V neighbor : neighbors(v1)) {\r\n//\t\t\tif (!vertexInfo(neighbor).visited() && isReachableHelper(neighbor, v2)) {\r\n//\t\t\t\treturn true;\r\n//\t\t\t}\r\n//\t\t}\r\n//\t\t\r\n//\t\t// vertexInfo(v1).setVisited(false);\r\n//\t\tpath.remove(path.size() - 1);\r\n//\t\treturn false;\r\n//\t}\r\n//\t\r\n//\t/**\r\n//\t * Returns a list of vertices representing a minimum-weight path from vertex\r\n//\t * v1 to vertex v2.\r\n//\t * If v2 is not reachable from v1, returns null.\r\n//\t * Uses Dijkstra's Algorithm to find a minimum-weight path.\r\n//\t * @param v1 The starting vertex.\r\n//\t * @param v2 The ending vertex.\r\n//\t * @throws IllegalArgumentException If either vertex is not part of the graph.\r\n//\t * @throws NullPointerException If any object parameter is null.\r\n//\t */\r\n//\tpublic List<V> dijkstrasAlgorithm(V v1, V v2) {\r\n//\t\tcheckVertexes(v1, v2);\r\n//\t\tclearVertexInfo();\r\n//\t\t\r\n//\t\t// optional optimization: if v1 and v2 are same, return path immediately\r\n//\t\tif (v1.equals(v2)) {\r\n//\t\t\tList<V> path = new LinkedList<V>();\r\n//\t\t\tpath.add(v1);\r\n//\t\t\treturn path;\r\n//\t\t}\r\n//\t\t\r\n//\t\tvertexInfo(v1).setCost(0);\r\n//\t\tCollection<V> vertices = this.vertexes();\r\n//\t\tQueue<V> pq = new PriorityQueue<V>(vertices.size() + 10, new VertexCostComparator());\r\n//\t\tpq.addAll(vertices);\r\n//\r\n//\t\twhile (!pq.isEmpty()) {\r\n//\t\t\tV minVertex = pq.remove();\r\n//\t\t\tVertex<V> minVertexInfo = vertexInfo(minVertex);\r\n//\t\t\tminVertexInfo.setVisited();\r\n//\t\t\tif (minVertexInfo.cost() == Vertex.MAX_COST) {\r\n//\t\t\t\t// all remaining vertices have infinite cost; abort\r\n//\t\t\t\tpq.clear();\r\n//\t\t\t\tcontinue;\r\n//\t\t\t}\r\n//\t\t\t\r\n//\t\t\tfor (V neighbor : neighbors(minVertex)) {\r\n//\t\t\t\tVertex<V> neighborInfo = vertexInfo(neighbor);\r\n//\t\t\t\tif (!neighborInfo.visited()) {\r\n//\t\t\t\t\tdouble newCost = minVertexInfo.cost() + edgeWeight(minVertex, neighbor);\r\n//\t\t\t\t\tif (newCost < neighborInfo.cost()) {\r\n//\t\t\t\t\t\tpq.remove(neighbor);\r\n//\t\t\t\t\t\tneighborInfo.setCost(newCost);\r\n//\t\t\t\t\t\tneighborInfo.setPrevious(minVertex);\r\n//\t\t\t\t\t\tpq.add(neighbor);  // have to remove/re-add because ordering changes\r\n//\t\t\t\t\t}\r\n//\t\t\t\t}\r\n//\t\t\t}\r\n//\t\t}\r\n//\t\t\r\n//\t\tif (Math.abs(vertexInfo(v2).cost()) >= Vertex.MAX_COST) {\r\n//\t\t\treturn null;   // no path was found\r\n//\t\t} else {\r\n//\t\t\treturn reconstructPath(v1, v2);\r\n//\t\t}\r\n//\t}\r\n//\r\n//\t/**\r\n//\t * Returns the path in this graph with the least number of vertices that \r\n//\t * leads from the given starting vertex v1 to the given ending vertex v2. \r\n//\t * Uses the Breadth-First Search (BFS) algorithm to find the path.\r\n//\t * If v2 is not reachable from v1, the method returns null. \r\n//\t * @param v1 The starting vertex.\r\n//\t * @param v2 The ending vertex.\r\n//\t * @throws IllegalArgumentException If either vertex is not part of the graph.\r\n//\t * @throws NullPointerException If any object parameter is null.\r\n//\t */\r\n//\tpublic List<V> bfs(V v1, V v2) {\r\n//\t\tcheckVertexes(v1, v2);\r\n//\t\tclearVertexInfo();\r\n//\t\tList<V> path = null;\r\n//\t\t\r\n//\t\tQueue<V> queue = new LinkedList<V>();\r\n//\t\tqueue.add(v1);\r\n//\t\tvertexInfo(v1).setVisited();\r\n//\t\t\r\n//\t\twhile (!queue.isEmpty()) {\r\n//\t\t\tV v = queue.remove();\r\n//\t\t\tif (v.equals(v2)) {\r\n//\t\t\t\tpath = reconstructPath(v1, v);\r\n//\t\t\t\tbreak;\r\n//\t\t\t} else {\r\n//\t\t\t\tfor (V n : neighbors(v)) {\r\n//\t\t\t\t\tVertex<V> vi = vertexInfo(n);\r\n//\t\t\t\t\tif (!vi.visited()) {\r\n//\t\t\t\t\t\tvi.setVisited(true);\r\n//\t\t\t\t\t\tvi.setPrevious(v);\r\n//\t\t\t\t\t\tqueue.add(n);\r\n//\t\t\t\t\t}\r\n//\t\t\t\t}\r\n//\t\t\t}\r\n//\t\t}\r\n//\t\t\r\n//\t\treturn path;\r\n//\t}\r\n//\t\r\n//\tpublic List<V> topologicalSort() {\r\n//\t\tclearVertexInfo();\r\n//\t\tMap<V, Integer> degree = new HashMap<V, Integer>();\r\n//\t\tQueue<V> queue = new LinkedList<V>();\r\n//\t\tfor (V v : vertexes()) {\r\n//\t\t\tint indeg = inDegree(v);\r\n//\t\t\tdegree.put(v, indeg);\r\n//\t\t\tif (indeg == 0) {\r\n//\t\t\t\tqueue.add(v);\r\n//\t\t\t}\r\n//\t\t}\r\n//\t\t\r\n//\t\tList<V> out = new ArrayList<V>();\r\n//\t\twhile (!queue.isEmpty()) {\r\n//\t\t\tV v = queue.remove();\r\n//\t\t\tout.add(v);\r\n//\t\t\tfor (V n : neighbors(v)) {\r\n//\t\t\t\tint nIndeg = degree.get(n);\r\n//\t\t\t\tif (nIndeg == 1) {\r\n//\t\t\t\t\tdegree.remove(n);\r\n//\t\t\t\t\tqueue.add(n);\r\n//\t\t\t\t} else {\r\n//\t\t\t\t\tdegree.put(n, nIndeg - 1);\r\n//\t\t\t\t}\r\n//\t\t\t}\r\n//\t\t}\r\n//\t\t\r\n//\t\tif (out.size() == vertexCount()) {\r\n//\t\t\treturn out;\r\n//\t\t} else {\r\n//\t\t\treturn null;\r\n//\t\t}\r\n//\t}\r\n//\t\r\n////\tpublic void topologicalSortAll() {\r\n////\t\tclearVertexInfo();\r\n////\t\tMultiset<V> degree = HashMultiset.create();\r\n////\t\tfor (V v : vertices()) {\r\n////\t\t\tint indeg = inDegree(v);\r\n////\t\t\tdegree.setCount(v, indeg);\r\n////\t\t}\r\n////\t\tList<V> out = new ArrayList<V>();\r\n////\t\ttopologicalSortAll(degree, out);\r\n////\t}\r\n////\t\r\n////\tprivate void topologicalSortAll(Multiset<V> degree, List<V> out) {\r\n////\t\t// System.out.println(\"  topoAll(\" + out + \", deg=\" + degree + \")\");\r\n////\t\t\r\n////\t\tif (out.size() == vertexCount()) {\r\n////\t\t\tSystem.out.println(out);\r\n////\t\t\treturn;\r\n////\t\t}\r\n////\t\t\r\n////\t\tfor (V v : vertices()) {\r\n////\t\t\tif (!vertexInfo(v).visited() && !degree.contains(v)) {\r\n////\t\t\t\t// choose\r\n////\t\t\t\tvertexInfo(v).setVisited();\r\n////\t\t\t\tout.add(v);\r\n////\t\t\t\tfor (V n : neighbors(v)) {\r\n////\t\t\t\t\tdegree.remove(n);   // decrease count by 1\r\n////\t\t\t\t}\r\n////\t\t\t\t\r\n////\t\t\t\t// explore\r\n////\t\t\t\ttopologicalSortAll(degree, out);\r\n////\r\n////\t\t\t\t// un-choose\r\n////\t\t\t\tfor (V n : neighbors(v)) {\r\n////\t\t\t\t\tdegree.add(n);   // increase count by 1\r\n////\t\t\t\t}\r\n////\t\t\t\tvertexInfo(v).setVisited(false);\r\n////\t\t\t\tout.remove(out.size() - 1);\r\n////\t\t\t}\r\n////\t\t}\r\n////\t}\r\n//\t\r\n//\t// rebuilds path back from v1 to v2 by walking backwards from v2 to v1 through\r\n//\t// the 'previous' markers in each vertex\r\n//\tprivate List<V> reconstructPath(V v1, V v2) {\r\n//\t\tList<V> path = new LinkedList<V>();\r\n//\t\twhile (!v2.equals(v1)) {\r\n//\t\t\tpath.add(0, v2);\r\n//\t\t\tv2 = vertexInfo(v2).previous();\r\n//\t\t}\r\n//\t\tpath.add(0, v1);\r\n//\t\treturn path;\r\n//\t}\r\n//\r\n//\tprivate class VertexCostComparator implements Comparator<V> {\r\n//\t\t/**\r\n//\t\t * Compares vertex 'V' objects based on their related cost to be reached.\r\n//\t\t * Used to order the priority queue in Dijkstra's algorithm.\r\n//\t\t */\r\n//\t\tpublic int compare(V vertex1, V vertex2) {\r\n//\t\t\treturn Double.compare(vertexInfo(vertex1).cost(), vertexInfo(vertex2).cost());\r\n//\t\t}\r\n//\t}\r\n//\t\r\n//\t\r\n//\t////////////// STUDENTS DON'T NEED TO WRITE THE METHODS BELOW //////////////\r\n//\t\r\n//\t/**\r\n//\t * A Guava-like static factory method that returns a new searchable\r\n//\t * undirected, unweighted graph.\r\n//\t */\r\n//\tpublic static <V, E> SearchableGraph<V, E> create() {\r\n//\t\treturn create(false, false);\r\n//\t}\r\n//\t\r\n//\t/**\r\n//\t * A Guava-like static factory method that returns a new empty unweighted \r\n//\t * searchable graph that can be directed or undirected.\r\n//\t */\r\n//\tpublic static <V, E> SearchableGraph<V, E> create(boolean directed) {\r\n//\t\treturn create(directed, false);\r\n//\t}\r\n//\t\r\n//\t/**\r\n//\t * A Guava-like static factory method that returns a new empty searchable graph\r\n//\t * that can be directed or undirected, weighted or unweighted.\r\n//\t */\r\n//\tpublic static <V, E> SearchableGraph<V, E> create(boolean directed, boolean weighted) {\r\n//\t\treturn new SearchableGraph<V, E>(directed, weighted);\r\n//\t}\r\n//}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/collections/Table.java",
    "content": "package stanford.cs106.collections;\n\nimport java.util.*;\n\npublic interface Table<R, C, V> {\n\tvoid clear();\n\tMap<R, V> column(C columnKey);\n\tboolean\tcontains(Object rowKey, Object columnKey);\n\tboolean\tcontainsColumn(Object columnKey);\n\tboolean\tcontainsRow(Object rowKey);\n\tboolean\tcontainsValue(Object value);\n\tV get(Object rowKey, Object columnKey);\n\tboolean\tisEmpty();\n\tV put(R rowKey, C columnKey, V value);\n\tV remove(Object rowKey, Object columnKey);\n\tMap<C, V> row(R rowKey);\n\tSet<R> rowKeySet();\n\tMap<R, Map<C, V>> rowMap();\n\tint\tsize();\n\tCollection<V> values();\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/collections/TreeBasedTable.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2015/06/06\n */\n\npackage stanford.cs106.collections;\n\nimport java.util.*;\n\npublic class TreeBasedTable\n\t<R extends Comparable<? super R>, C extends Comparable<? super C>, V>\n\t\textends AbstractTable<R, C, V> {\n\tpublic static <R extends Comparable<? super R>, C extends Comparable<? super C>, V>\n\t\t\tTreeBasedTable<R, C, V> create() {\n\t\treturn new TreeBasedTable<R, C, V>();\n\t}\n\t\n\t@Override\n\tprotected Map<R, Map<C, V>> createTableMap() {\n\t\treturn new TreeMap<R, Map<C, V>>();\n\t}\n\n\t@Override\n\tprotected Map<R, V> createColumnMap() {\n\t\treturn new TreeMap<R, V>();\n\t}\n\n\t@Override\n\tprotected Map<C, V> createRowMap() {\n\t\treturn new TreeMap<C, V>();\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/collections/TreeMultimap.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2015/06/06\n */\n\npackage stanford.cs106.collections;\n\nimport java.util.*;\n\npublic class TreeMultimap<K extends Comparable<K>, V> extends AbstractMultimap<K, V> {\n\tpublic static <K extends Comparable<K>, V> TreeMultimap<K, V> create() {\n\t\treturn new TreeMultimap<K, V>();\n\t}\n\t\n\tpublic static <K extends Comparable<K>, V> TreeMultimap<K, V> create(boolean isSet) {\n\t\treturn new TreeMultimap<K, V>(isSet);\n\t}\n\t\n\tpublic TreeMultimap() {\n\t\tsuper();\n\t}\n\t\n\tpublic TreeMultimap(boolean isSet) {\n\t\tsuper(isSet);\n\t}\n\t\n\t@Override\n\tprotected Map<K, Collection<V>> createMap() {\n\t\treturn new TreeMap<K, Collection<V>>();\n\t}\n\n\t@Override\n\tprotected Collection<V> createSet() {\n\t\treturn new TreeSet<V>();\n\t}\n\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/collections/Vertex.java",
    "content": "/*\r\n * @author Marty Stepp\r\n * @version 2016/11/29\r\n * - added template parameter <V>\r\n * @version 2015/06/08\r\n */\r\n\r\npackage stanford.cs106.collections;\r\n\r\nimport java.awt.Color;\r\nimport java.util.*;\r\n\r\n/**\r\n * A Vertex object represents extra information associated with each vertex.\r\n * Each Vertex object for some vertex value v is accessed internally in a\r\n * Graph subclass by writing:\r\n * \r\n * <pre>\r\n * {@code\r\n * vertexInfo(v)\r\n * }\r\n * </pre>\r\n */\r\n@SuppressWarnings(\"deprecation\")\r\npublic class Vertex<V> extends Observable implements Comparable<Vertex<V>>, Cloneable {\r\n\t/** Maximum possible cost to reach a vertex from another; treat this as \"infinity\". */\r\n\tpublic static final double MAX_COST = Double.POSITIVE_INFINITY;\r\n\t\r\n\tprivate String name;\r\n\tprivate int number;         // a mark giving a number or index to this vertex (or -1)\r\n\tprivate Color color;        // for some algorithms that like to color vertexes\r\n\tprivate Vertex<V> previous;    // a reference to a 'previous' vertex; useful for path searching\r\n\tprivate boolean visited;    // a mark for whether this vertex has been visited\r\n\tprivate double cost;        // a mark for the minimum cost to reach this vertex\r\n\tpublic V extraData;    // anything else you want to store in here\r\n\t\r\n\t/**\r\n\t * Constructs information for the given vertex.\r\n\t * @param v The vertex this information is about.\r\n\t * @throws NullPointerException If the vertex is null.\r\n\t */\r\n\tpublic Vertex(String name) {\r\n\t\tif (name == null) {\r\n\t\t\tthrow new NullPointerException(\"null name\");\r\n\t\t}\r\n\t\tthis.name = name;\r\n\t\tthis.clear();\r\n\t}\r\n\t\r\n\t/**\r\n\t * Resets the previous, visited, cost, and number data fields to their original values.\r\n\t */\r\n\tpublic void clear() {\r\n\t\tclear(false);\r\n\t}\r\n\t\r\n\t/**\r\n\t * Resets the previous, visited, cost, and number data fields to their original values.\r\n\t */\r\n\tpublic void clear(boolean clearExtraData) {\r\n\t\tthis.previous = null;\r\n\t\tthis.visited = false;\r\n\t\tthis.cost = MAX_COST;\r\n\t\tthis.number = -1;\r\n\t\tthis.color = null;\r\n\t\tif (clearExtraData) {\r\n\t\t\tthis.extraData = null;\r\n\t\t}\r\n\t}\r\n\t\r\n\t/**\r\n\t * Returns a copy of this Vertex as per the contract of the Object.clone method.\r\n\t */\r\n\tpublic Vertex<V> clone() {\r\n\t\ttry {\r\n\t\t\t@SuppressWarnings(\"unchecked\")\r\n\t\t\tVertex<V> copy = (Vertex<V>) super.clone();\r\n\t\t\tcopy.clear();\r\n\t\t\treturn copy;\r\n\t\t} catch (CloneNotSupportedException e) {\r\n\t\t\treturn null;  // will not happen\r\n\t\t}\r\n\t}\r\n\t\r\n\t/**\r\n\t * Returns color of vertex\r\n\t */\r\n\tpublic Color color() {\r\n\t\treturn color;\r\n\t}\r\n\r\n\tpublic int compareTo(Vertex<V> o) {\r\n\t\treturn name.compareTo(o.name);\r\n\t}\r\n\t\r\n\t/**\r\n\t * Returns the value of the internal 'cost' to reach this vertex.\r\n\t * Returns Integer.MAX_VALUE if the cost was not set previously.\r\n\t * Used internally in various path-finding algorithms.\r\n\t */\r\n\tpublic double cost() {\r\n\t\treturn cost;\r\n\t}\r\n\t\r\n\t/**\r\n\t * Returns true if o refers to a Vertex object correspending to the same\r\n\t * underlying 'V' object as this one.\r\n\t */\r\n\tpublic boolean equals(Object o) {\r\n\t\tif (o instanceof Vertex) {\r\n\t\t\t@SuppressWarnings(\"unchecked\")\r\n\t\t\tVertex<V> other = (Vertex<V>) o;\r\n\t\t\treturn name.equals(other.name);\r\n\t\t} else {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\t/**\r\n\t * Returns an integer code for placing this vertex into a hash-based collection.\r\n\t */\r\n\tpublic int hashCode() {\r\n\t\treturn name.hashCode();\r\n\t}\r\n\t\r\n\t/**\r\n\t * Returns the vertex's name.\r\n\t */\r\n\tpublic String name() {\r\n\t\treturn name;\r\n\t}\r\n\t\r\n\tpublic void notifyObservers() {\r\n\t\tsetChanged();\r\n\t\tsuper.notifyObservers();\r\n\t}\r\n\t\r\n\tpublic void notifyObservers(Object arg) {\r\n\t\tsetChanged();\r\n\t\tsuper.notifyObservers(arg);\r\n\t}\r\n\t\r\n\t/**\r\n\t * Returns the value of the internal 'number' vertex marker for this vertex.\r\n\t * Returns -1 if the number was not set previously.\r\n\t * Used internally in various algorithms such as topological sort.\r\n\t */\r\n\tpublic int number() {\r\n\t\treturn number;\r\n\t}\r\n\t\r\n\t/**\r\n\t * Returns the value of the internal 'previous' vertex marker for this vertex.\r\n\t * Used internally in various path-finding algorithms.\r\n\t * If no previous vertex has been set, returns null.\r\n\t */\r\n\tpublic Vertex<V> previous() {\r\n\t\treturn previous;\r\n\t}\r\n\t\r\n\t/**\r\n\t * Sets the vertex's color\r\n\t */\r\n\tpublic void setColor(Color color) {\r\n\t\tthis.color = color;\r\n\t\tnotifyObservers(Event.COLOR_CHANGED);\r\n\t}\r\n\t\r\n\t/**\r\n\t * Sets the value of the internal 'cost' to reach this vertex.\r\n\t * Used internally in various path-finding algorithms.\r\n\t * @param cost the new cost to use\r\n\t */\r\n\tpublic void setCost(double cost) {\r\n\t\tthis.cost = cost;\r\n\t}\r\n\t\r\n\t/**\r\n\t * Sets the value of the internal 'number' vertex marker for this vertex.\r\n\t * Used internally in various algorithms such as topological sort.\r\n\t * @param number the new number to use\r\n\t */\r\n\tpublic void setNumber(int number) {\r\n\t\tthis.number = number;\r\n\t}\r\n\t\r\n\t/**\r\n\t * Sets the value of the internal 'previous' vertex marker for this vertex.\r\n\t * Used internally in various path-finding algorithms.\r\n\t * If null is passed, the previous vertex is cleared.\r\n\t */\r\n\tpublic void setPrevious(Vertex<V> previous) {\r\n\t\tthis.previous = previous;\r\n\t}\r\n\t\r\n\t/**\r\n\t * Sets the value of the internal 'previous' vertex marker to true for this vertex.\r\n\t * Used internally in various path-finding algorithms.\r\n\t */\r\n\tpublic void setVisited() {\r\n\t\tsetVisited(true);\r\n\t}\r\n\t\r\n\t/**\r\n\t * Sets the value of the internal 'previous' vertex marker for this vertex.\r\n\t * Used internally in various path-finding algorithms.\r\n\t */\r\n\tpublic void setVisited(boolean visited) {\r\n\t\tthis.visited = visited;\r\n\t}\r\n\t\r\n\t/**\r\n\t * Returns the value of the internal 'visited' vertex marker for this vertex.\r\n\t * Used internally in various path-finding algorithms.\r\n\t */\r\n\tpublic boolean visited() {\r\n\t\treturn visited;\r\n\t}\r\n\t\r\n\t/**\r\n\t * Returns a string representation of the information about this vertex.\r\n\t */\r\n\tpublic String toString() {\r\n\t\tString result = \"(\" + this.name;\r\n\t\tif (this.number != -1) {\r\n\t\t\tresult += \",#\" + this.number;\r\n\t\t}\r\n\t\tif (this.previous != null) {\r\n\t\t\tresult += \",previous=\" + this.previous.name;\r\n\t\t}\r\n\t\tif (this.cost < MAX_COST) {\r\n\t\t\tresult += \",cost=\" + this.cost;\r\n\t\t}\r\n\t\tif (this.visited) {\r\n\t\t\tresult += \",visited\";\r\n\t\t}\r\n\t\tif (this.extraData != null) {\r\n\t\t\tresult += \",extraData=\" + extraData;\r\n\t\t}\r\n\t\treturn result + \")\";\r\n\t}\r\n\t\r\n\tpublic static enum Event {\r\n\t\tCOLOR_CHANGED\r\n\t}\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/diff/Diff.java",
    "content": "/*\n * @version 2018/07/08\n * - removed IGNORE_PUNCTUATION flag from default set of diff flags\n *   (was making ASCII art programs like Rocket ship accept incorrect output)\n * @version 2016/10/07\n * - oops, actually IGNORE_BLANK_LINES flag was still totally broken; NOW it works!\n * @version 2016/04/28\n * - fixed IGNORE_BLANK_LINES flag to actually work\n */\n\npackage stanford.cs106.diff;\n\nimport java.util.*;\nimport stanford.cs106.util.*;\n\npublic class Diff {\n\tpublic static final String NO_DIFFS_MESSAGE = \"No differences found\";\n\n\tpublic static final int IGNORE_LEADING      = 0x1;\n\tpublic static final int IGNORE_TRAILING     = 0x2;\n\tpublic static final int IGNORE_WHITESPACE   = 0x4;\n\tpublic static final int IGNORE_BLANK_LINES  = 0x8;\n\tpublic static final int IGNORE_CASE         = 0x10;\n\tpublic static final int IGNORE_NUMBERS      = 0x20;\n\tpublic static final int IGNORE_NONNUMBERS   = 0x40;\n\tpublic static final int IGNORE_PUNCTUATION  = 0x80;\n\tpublic static final int IGNORE_AFTERDECIMAL = 0x100;\n\tpublic static final int IGNORE_CHARORDER    = 0x200;\n\tpublic static final int IGNORE_LINEORDER    = 0x400;\n\tpublic static final int IGNORE_EVERYTHING   = 0x100000;\n\t\n\tpublic static final int FLAGS_DEFAULT = 0;\n\tpublic static final int FLAGS_DEFAULT_LENIENT = IGNORE_TRAILING | IGNORE_WHITESPACE | IGNORE_BLANK_LINES | IGNORE_CASE;   // | IGNORE_PUNCTUATION;\n\tpublic static final int FLAGS_DEFAULT_STRICT = IGNORE_TRAILING | IGNORE_BLANK_LINES;\n\t\n\t\n\tpublic static List<Difference> diffAsList(String s1, String s2) {\n\t\treturn diffAsList(s1, s2, FLAGS_DEFAULT);\n\t}\n\n\tpublic static List<Difference> diffAsList(String s1, String s2, int flags) {\n\t\ts1 = String.valueOf(s1);\n\t\ts2 = String.valueOf(s2);\n\t\tString[] lines1 = s1.split(\"\\r?\\n\");\n\t\tString[] lines2 = s2.split(\"\\r?\\n\");\n//\t\tString[] lines1Original = Arrays.copyOf(lines1, lines1.length);\n//\t\tString[] lines2Original = Arrays.copyOf(lines2, lines2.length);\n\n\t\tif ((flags & IGNORE_NUMBERS) != 0) {\n\t\t\ts1 = s1.replaceAll(\"[0-9]+\", \"###\");\n\t\t\ts2 = s2.replaceAll(\"[0-9]+\", \"###\");\n\t\t\tlines1 = s1.split(\"\\r?\\n\");\n\t\t\tlines2 = s2.split(\"\\r?\\n\");\n\t\t}\n\t\tif ((flags & IGNORE_NONNUMBERS) != 0) {\n\t\t\ts1 = s1.replaceAll(\"[^0-9\\n]+\", \" \");\n\t\t\ts2 = s2.replaceAll(\"[^0-9\\n]+\", \" \");\n\t\t\tlines1 = s1.split(\"\\r?\\n\");\n\t\t\tlines2 = s2.split(\"\\r?\\n\");\n\t\t}\n\t\tif ((flags & IGNORE_PUNCTUATION) != 0) {\n\t\t\tString punct = \"[.,?!'\\\"()\\\\/#$%@^&*_\\\\[\\\\]{}|<>:;-]+\";\n\t\t\ts1 = s1.replaceAll(punct, \"\");\n\t\t\ts2 = s2.replaceAll(punct, \"\");\n\t\t\tlines1 = s1.split(\"\\r?\\n\");\n\t\t\tlines2 = s2.split(\"\\r?\\n\");\n\t\t}\n\t\tif ((flags & IGNORE_AFTERDECIMAL) != 0) {\n\t\t\ts1 = s1.replaceAll(\"\\\\.[0-9]+\", \".#\");\n\t\t\ts2 = s2.replaceAll(\"\\\\.[0-9]+\", \".#\");\n\t\t\tlines1 = s1.split(\"\\r?\\n\");\n\t\t\tlines2 = s2.split(\"\\r?\\n\");\n\t\t}\n\t\tif ((flags & IGNORE_CASE) != 0) {\n\t\t\ts1 = s1.toLowerCase();\n\t\t\ts2 = s2.toLowerCase();\n\t\t\tlines1 = s1.split(\"\\r?\\n\");\n\t\t\tlines2 = s2.split(\"\\r?\\n\");\n\t\t}\n\t\tif ((flags & IGNORE_CHARORDER) != 0) {\n\t\t\tArrayList<String> lines1Sorted = new ArrayList<String>();\n\t\t\tfor (String line : lines1) {\n\t\t\t\tline = StringUtils.sortChars(line);\n\t\t\t\tlines1Sorted.add(line);\n\t\t\t}\n\t\t\tlines1 = lines1Sorted.toArray(new String[0]);\n\t\t\ts1 = StringUtils.join(lines1, \"\\n\");\n\n\t\t\tArrayList<String> lines2Sorted = new ArrayList<String>();\n\t\t\tfor (String line : lines2) {\n\t\t\t\tline = StringUtils.sortChars(line);\n\t\t\t\tlines2Sorted.add(line);\n\t\t\t}\n\t\t\tlines2 = lines2Sorted.toArray(new String[0]);\n\t\t\ts2 = StringUtils.join(lines2, \"\\n\");\n\t\t}\n\t\tif ((flags & IGNORE_LINEORDER) != 0) {\n\t\t\tArrays.sort(lines1);\n\t\t\tArrays.sort(lines2);\n\t\t\ts1 = StringUtils.join(lines1, \"\\n\");\n\t\t\ts2 = StringUtils.join(lines2, \"\\n\");\n\t\t}\n\t\tif ((flags & IGNORE_WHITESPACE) != 0) {\n\t\t\tfor (int i = 0; i < lines1.length; i++) {\n\t\t\t\tlines1[i] = StringUtils.removeWhitespace(lines1[i]);\n\t\t\t}\n\t\t\tfor (int i = 0; i < lines2.length; i++) {\n\t\t\t\tlines2[i] = StringUtils.removeWhitespace(lines2[i]);\n\t\t\t}\n\t\t}\n\n\t\tList<Difference> out = new ArrayList<Difference>();\n\t\tif (StringUtils.trimR(s1).equals(StringUtils.trimR(s2))) {\n\t\t\treturn out;\n\t\t}\n\n\t\t// build a reverse-index array using the line as key and line number as value\n\t\t// don't store blank lines, so they won't be targets of the shortest distance\n\t\t// search\n\t\tMap<String, Set<Integer>> reverse1 = new TreeMap<String, Set<Integer>>();\n\t\tMap<String, Set<Integer>> reverse2 = new TreeMap<String, Set<Integer>>();\n\t\tfor (int i = 0; i < lines1.length; i++) {\n\t\t\tString line = lines1[i];\n\t\t\tif (line.length() > 0) {\n\t\t\t\tif (!reverse1.containsKey(line)) {\n\t\t\t\t\treverse1.put(line, new TreeSet<Integer>());\n\t\t\t\t}\n\t\t\t\treverse1.get(line).add(i);\n\t\t\t}\n\t\t}\n\t\tfor (int i = 0; i < lines2.length; i++) {\n\t\t\tString line = lines2[i];\n\t\t\tif (line.length() > 0) {\n\t\t\t\tif (!reverse2.containsKey(line)) {\n\t\t\t\t\treverse2.put(line, new TreeSet<Integer>());\n\t\t\t\t}\n\t\t\t\treverse2.get(line).add(i);\n\t\t\t}\n\t\t}\n\n\t\t// indexes of current lines within each file\n\t\t// (start at beginning of each list)\n\t\tint index1 = 0;\n\t\tint index2 = 0;\n\t\tList<Integer> actions = new ArrayList<Integer>();\n\n\t\t// walk this loop until we reach the end of one of the lists of lines\n\t\twhile (index1 < (int) lines1.length && index2 < (int) lines2.length) {\n\t\t\t// if we have a common line, save it and go to the next\n\t\t\tif (lines1[index1].equals(lines2[index2])) {\n\t\t\t\tactions.add(4);\n\t\t\t\tindex1++;\n\t\t\t\tindex2++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// otherwise, find the shortest move (Manhattan-distance) from the\n\t\t\t// current location\n\t\t\tint best1 = lines1.length;\n\t\t\tint best2 = lines2.length;\n\t\t\tint sub1 = index1;\n\t\t\tint sub2 = index2;\n\t\t\twhile ((sub1 + sub2 - index1 - index2) < (best1 + best2 - index1 - index2)) {\n\t\t\t\tint d = -1;\n\t\t\t\tif (lines2.length > sub2 && reverse1.containsKey(lines2[sub2])) {\n\t\t\t\t\tfor (int lineNumber : reverse1.get(lines2[sub2])) {\n\t\t\t\t\t\tif (lineNumber >= sub1) {\n\t\t\t\t\t\t\td = lineNumber;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (d >= sub1 && (d + sub2 - index1 - index2) < (best1 + best2 - index1 - index2)) {\n\t\t\t\t\tbest1 = d;\n\t\t\t\t\tbest2 = sub2;\n\t\t\t\t}\n\n\t\t\t\td = -1;\n\t\t\t\tif (lines1.length > sub1 && reverse2.containsKey(lines1[sub1])) {\n\t\t\t\t\tfor (int lineNumber : reverse2.get(lines1[sub1])) {\n\t\t\t\t\t\tif (lineNumber >= sub2) {\n\t\t\t\t\t\t\td = lineNumber;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (d >= sub2 && (d + sub1 - index1 - index2) < (best1 + best2 - index1 - index2)) {\n\t\t\t\t\tbest1 = sub1;\n\t\t\t\t\tbest2 = d;\n\t\t\t\t}\n\n\t\t\t\tsub1++;\n\t\t\t\tsub2++;\n\t\t\t}\n\n\t\t\twhile (index1 < best1) {\n\t\t\t\tactions.add(1);\n\t\t\t\tindex1++;\n\t\t\t}  // deleted elements\n\n\t\t\twhile (index2 < best2) {\n\t\t\t\tactions.add(2);\n\t\t\t\tindex2++;\n\t\t\t}  // added elements\n\t\t}\n\n\t\t// we've reached the end of one list, now walk to the end of the other\n\t\twhile (index1 < (int) lines1.length) {\n\t\t\tactions.add(1);\n\t\t\tindex1++;\n\t\t}  // deleted elements\n\n\t\tif ((flags & IGNORE_TRAILING) != 0) {\n\t\t\twhile (index2 < (int) lines2.length) {\n\t\t\t\tactions.add(2);\n\t\t\t\tindex2++;\n\t\t\t}  // added elements\n\t\t}\n\n\t\t// and this marks our ending point\n\t\tactions.add(8);\n\n\t\tint op = 0;\n\t\tint x0 = 0;\n\t\tint x1 = 0;\n\t\tint y0 = 0;\n\t\tint y1 = 0;\n\n\t\tfor (int action : actions) {\n\t\t\tif (action == 1) {\n\t\t\t\top |= action;\n\t\t\t\tx1++;\n\t\t\t\tcontinue;\n\t\t\t} else if (action == 2) {\n\t\t\t\top |= action;\n\t\t\t\ty1++;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (op > 0) {\n//\t\t\t\tboolean multipleLines = (x1 != x0 + 1);\n//\t\t\t\tString xstr = \"\" + (multipleLines ? ((x0 + 1) + \"-\" + x1) : x1);\n//\t\t\t\tString ystr = \"\" + ((y1 != y0 + 1) ? ((y0 + 1) + \"-\" + y1) : y1);\n//\t\t\t\tString linesStr = \"\\nLine\" + (multipleLines ? \"s \" : \" \");\n//\t\t\t\tString doStr = \"do\" + (multipleLines ? \"\" : \"es\");\n\t\t\t\tif (op == 1) {\n\t\t\t\t\tout.add(new Difference(Difference.Type.DELETE, x0, x1-1, y0, y1-1));\n\t\t\t\t} else if (op == 3) {\n\t\t\t\t\tout.add(new Difference(Difference.Type.MODIFY, x0, x1-1, y0, y1-1));\n\t\t\t\t}\n\n\t\t\t\twhile (x0 < x1) {\n\t\t\t\t\tout.add(new Difference(Difference.Type.DELETE, x0, x1-1, y0, y1-1));\n\t\t\t\t\tx0++;\n\t\t\t\t}   // deleted elems\n\n\t\t\t\tif (op == 2) {\n\t\t\t\t\tif ((flags & IGNORE_LEADING) == 0 || x1 > 0) {\n\t\t\t\t\t\tout.add(new Difference(Difference.Type.ADD, x0, x1-1, y0, y1-1));\n\t\t\t\t\t}\n\t\t\t\t} else if (op == 3) {\n\t\t\t\t\t// out += \"---\";\n\t\t\t\t}\n\n\t\t\t\twhile (y0 < y1) {\n\t\t\t\t\tif ((flags & IGNORE_LEADING) == 0 || op != 2 || x1 > 0) {\n\t\t\t\t\t\tout.add(new Difference(Difference.Type.ADD, x0, x1-1, y0, y1-1));\n\t\t\t\t\t}\n\t\t\t\t\ty0++;\n\t\t\t\t}   // added elems\n\t\t\t}\n\t\t\tx1++;\n\t\t\tx0 = x1;\n\t\t\ty1++;\n\t\t\ty0 = y1;\n\t\t\top = 0;\n\t\t}\n\n\t\treturn out;\n\t}\n\t\n\tpublic static class Difference {\n\t\tpublic static enum Type { DELETE, ADD, MODIFY }\n\t\tpublic Type type;\n\t\tpublic int expectedStart;\n\t\tpublic int expectedEnd;\n\t\tpublic int actualStart;\n\t\tpublic int actualEnd;\n\t\t\n\t\tpublic Difference(Type type, int expectedStart, int expectedEnd, int actualStart, int actualEnd) {\n\t\t\tthis.type = type;\n\t\t\tthis.expectedStart = expectedStart;\n\t\t\tthis.expectedEnd = expectedEnd;\n\t\t\tthis.actualStart = actualStart;\n\t\t\tthis.actualEnd = actualEnd;\n\t\t}\n\t\t\n\t\tprivate String rangeHelper(int start, int end) {\n\t\t\tString result = \"\";\n\t\t\tif (start >= 0) {\n\t\t\t\tresult += start;\n\t\t\t}\n\t\t\tif (end > start) {\n\t\t\t\tresult += (result.isEmpty() ? \"\" : \"-\") + end;\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t\t\n\t\tpublic String expectedToString() {\n\t\t\treturn rangeHelper(expectedStart, expectedEnd);\n\t\t}\n\t\t\n\t\tpublic String actualToString() {\n\t\t\treturn rangeHelper(actualStart, actualEnd);\n\t\t}\n\t\t\n\t\tpublic String toString() {\n\t\t\treturn \"type=\" + type + \" exp=\" + expectedToString() + \" act=\" + actualToString();\n\t\t}\n\t}\n\n\t\n\t\n\tpublic static String diff(String s1, String s2) {\n\t\treturn diff(s1, s2, FLAGS_DEFAULT);\n\t}\n\n\tpublic static String diff(String s1, String s2, int flags) {\n\t\ts1 = String.valueOf(s1);\n\t\ts2 = String.valueOf(s2);\n\t\tString[] lines1 = s1.split(\"\\r?\\n\");\n\t\tString[] lines2 = s2.split(\"\\r?\\n\");\n\t\tString[] lines1Original = Arrays.copyOf(lines1, lines1.length);\n\t\tString[] lines2Original = Arrays.copyOf(lines2, lines2.length);\n\n\t\tif ((flags & IGNORE_NUMBERS) != 0) {\n\t\t\ts1 = s1.replaceAll(\"[0-9]+\", \"###\");\n\t\t\ts2 = s2.replaceAll(\"[0-9]+\", \"###\");\n\t\t\tlines1 = s1.split(\"\\r?\\n\");\n\t\t\tlines2 = s2.split(\"\\r?\\n\");\n\t\t}\n\t\tif ((flags & IGNORE_NONNUMBERS) != 0) {\n\t\t\ts1 = s1.replaceAll(\"[^0-9\\n]+\", \" \");\n\t\t\ts2 = s2.replaceAll(\"[^0-9\\n]+\", \" \");\n\t\t\tlines1 = s1.split(\"\\r?\\n\");\n\t\t\tlines2 = s2.split(\"\\r?\\n\");\n\t\t}\n\t\tif ((flags & IGNORE_PUNCTUATION) != 0) {\n\t\t\tString punct = \"[.,?!'\\\"()\\\\/#$%@^&*_\\\\[\\\\]{}|<>:;-]+\";\n\t\t\ts1 = s1.replaceAll(punct, \"\");\n\t\t\ts2 = s2.replaceAll(punct, \"\");\n\t\t\tlines1 = s1.split(\"\\r?\\n\");\n\t\t\tlines2 = s2.split(\"\\r?\\n\");\n\t\t}\n\t\tif ((flags & IGNORE_AFTERDECIMAL) != 0) {\n\t\t\ts1 = s1.replaceAll(\"\\\\.[0-9]+\", \".#\");\n\t\t\ts2 = s2.replaceAll(\"\\\\.[0-9]+\", \".#\");\n\t\t\tlines1 = s1.split(\"\\r?\\n\");\n\t\t\tlines2 = s2.split(\"\\r?\\n\");\n\t\t}\n\t\tif ((flags & IGNORE_CASE) != 0) {\n\t\t\ts1 = s1.toLowerCase();\n\t\t\ts2 = s2.toLowerCase();\n\t\t\tlines1 = s1.split(\"\\r?\\n\");\n\t\t\tlines2 = s2.split(\"\\r?\\n\");\n\t\t}\n//\t\tif ((flags & IGNORE_BLANK_LINES) != 0) {\n//\t\t\twhile (s1.startsWith(\"\\r\") || s1.startsWith(\"\\n\")) {\n//\t\t\t\ts1 = s1.substring(1);\n//\t\t\t}\n//\t\t\twhile (s2.startsWith(\"\\r\") || s2.startsWith(\"\\n\")) {\n//\t\t\t\ts2 = s2.substring(1);\n//\t\t\t}\n//\t\t\twhile (s1.endsWith(\"\\r\") || s1.endsWith(\"\\n\")) {\n//\t\t\t\ts1 = s1.substring(0, s1.length() - 1);\n//\t\t\t}\n//\t\t\twhile (s2.endsWith(\"\\r\") || s2.endsWith(\"\\n\")) {\n//\t\t\t\ts2 = s2.substring(0, s2.length() - 1);\n//\t\t\t}\n//\t\t\ts1 = s1.replaceAll(\"\\r?\\n[ \\t]{0,999}\\r?\\n\", \"\\n\");\n//\t\t\ts2 = s2.replaceAll(\"\\r?\\n[ \\t]{0,999}\\r?\\n\", \"\\n\");\n//\t\t\tlines1 = s1.split(\"\\r?\\n\");\n//\t\t\tlines2 = s2.split(\"\\r?\\n\");\n//\t\t}\n\t\tif ((flags & IGNORE_CHARORDER) != 0) {\n\t\t\tArrayList<String> lines1Sorted = new ArrayList<String>();\n\t\t\tfor (String line : lines1) {\n\t\t\t\tline = StringUtils.sortChars(line);\n\t\t\t\tlines1Sorted.add(line);\n\t\t\t}\n\t\t\tlines1 = lines1Sorted.toArray(new String[0]);\n\t\t\ts1 = StringUtils.join(lines1, \"\\n\");\n\n\t\t\tArrayList<String> lines2Sorted = new ArrayList<String>();\n\t\t\tfor (String line : lines2) {\n\t\t\t\tline = StringUtils.sortChars(line);\n\t\t\t\tlines2Sorted.add(line);\n\t\t\t}\n\t\t\tlines2 = lines2Sorted.toArray(new String[0]);\n\t\t\ts2 = StringUtils.join(lines2, \"\\n\");\n\t\t}\n\t\tif ((flags & IGNORE_LINEORDER) != 0) {\n\t\t\tArrays.sort(lines1);\n\t\t\tArrays.sort(lines2);\n\t\t\ts1 = StringUtils.join(lines1, \"\\n\");\n\t\t\ts2 = StringUtils.join(lines2, \"\\n\");\n\t\t}\n\t\tif ((flags & IGNORE_WHITESPACE) != 0) {\n\t\t\tfor (int i = 0; i < lines1.length; i++) {\n\t\t\t\tlines1[i] = StringUtils.removeWhitespace(lines1[i]);\n\t\t\t}\n\t\t\tfor (int i = 0; i < lines2.length; i++) {\n\t\t\t\tlines2[i] = StringUtils.removeWhitespace(lines2[i]);\n\t\t\t}\n\t\t}\n\n\t\tif (StringUtils.trimR(s1).equals(StringUtils.trimR(s2))) {\n\t\t\treturn NO_DIFFS_MESSAGE;\n\t\t}\n\n\t\t// build a reverse-index array using the line as key and line number as value\n\t\t// don't store blank lines, so they won't be targets of the shortest distance\n\t\t// search\n\t\tMap<String, Set<Integer>> reverse1 = new TreeMap<String, Set<Integer>>();\n\t\tMap<String, Set<Integer>> reverse2 = new TreeMap<String, Set<Integer>>();\n\t\tfor (int i = 0; i < lines1.length; i++) {\n\t\t\tString line = lines1[i];\n\t\t\tif (line.length() > 0) {\n\t\t\t\tif (!reverse1.containsKey(line)) {\n\t\t\t\t\treverse1.put(line, new TreeSet<Integer>());\n\t\t\t\t}\n\t\t\t\treverse1.get(line).add(i);\n\t\t\t}\n\t\t}\n\t\tfor (int i = 0; i < lines2.length; i++) {\n\t\t\tString line = lines2[i];\n\t\t\tif (line.length() > 0) {\n\t\t\t\tif (!reverse2.containsKey(line)) {\n\t\t\t\t\treverse2.put(line, new TreeSet<Integer>());\n\t\t\t\t}\n\t\t\t\treverse2.get(line).add(i);\n\t\t\t}\n\t\t}\n\n\t\t// indexes of current lines within each file\n\t\t// (start at beginning of each list)\n\t\tint index1 = 0;\n\t\tint index2 = 0;\n\t\tList<Integer> actions = new ArrayList<Integer>();\n\n\t\t// walk this loop until we reach the end of one of the lists of lines\n\t\twhile (index1 < (int) lines1.length && index2 < (int) lines2.length) {\n\t\t\t// if we have a common line, save it and go to the next\n\t\t\tif (lines1[index1].equals(lines2[index2])) {\n\t\t\t\tactions.add(4);\n\t\t\t\tindex1++;\n\t\t\t\tindex2++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// otherwise, find the shortest move (Manhattan-distance) from the\n\t\t\t// current location\n\t\t\tint best1 = lines1.length;\n\t\t\tint best2 = lines2.length;\n\t\t\tint sub1 = index1;\n\t\t\tint sub2 = index2;\n\t\t\twhile ((sub1 + sub2 - index1 - index2) < (best1 + best2 - index1 - index2)) {\n\t\t\t\tint d = -1;\n\t\t\t\tif (lines2.length > sub2 && reverse1.containsKey(lines2[sub2])) {\n\t\t\t\t\tfor (int lineNumber : reverse1.get(lines2[sub2])) {\n\t\t\t\t\t\tif (lineNumber >= sub1) {\n\t\t\t\t\t\t\td = lineNumber;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (d >= sub1 && (d + sub2 - index1 - index2) < (best1 + best2 - index1 - index2)) {\n\t\t\t\t\tbest1 = d;\n\t\t\t\t\tbest2 = sub2;\n\t\t\t\t}\n\n\t\t\t\td = -1;\n\t\t\t\tif (lines1.length > sub1 && reverse2.containsKey(lines1[sub1])) {\n\t\t\t\t\tfor (int lineNumber : reverse2.get(lines1[sub1])) {\n\t\t\t\t\t\tif (lineNumber >= sub2) {\n\t\t\t\t\t\t\td = lineNumber;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (d >= sub2 && (d + sub1 - index1 - index2) < (best1 + best2 - index1 - index2)) {\n\t\t\t\t\tbest1 = sub1;\n\t\t\t\t\tbest2 = d;\n\t\t\t\t}\n\n\t\t\t\tsub1++;\n\t\t\t\tsub2++;\n\t\t\t}\n\n\t\t\twhile (index1 < best1) {\n\t\t\t\tactions.add(1);\n\t\t\t\tindex1++;\n\t\t\t}  // deleted elements\n\n\t\t\twhile (index2 < best2) {\n\t\t\t\tactions.add(2);\n\t\t\t\tindex2++;\n\t\t\t}  // added elements\n\t\t}\n\n\t\t// we've reached the end of one list, now walk to the end of the other\n\t\twhile (index1 < (int) lines1.length) {\n\t\t\tactions.add(1);\n\t\t\tindex1++;\n\t\t}  // deleted elements\n\n\t\tif ((flags & IGNORE_TRAILING) != 0) {\n\t\t\twhile (index2 < (int) lines2.length) {\n\t\t\t\tactions.add(2);\n\t\t\t\tindex2++;\n\t\t\t}  // added elements\n\t\t}\n\n\t\t// and this marks our ending point\n\t\tactions.add(8);\n\n\t\tint op = 0;\n\t\tint x0 = 0;\n\t\tint x1 = 0;\n\t\tint y0 = 0;\n\t\tint y1 = 0;\n\t\tList<String> out = new ArrayList<String>();\n\n\t\tfor (int action : actions) {\n\t\t\tif (action == 1) {\n\t\t\t\top |= action;\n\t\t\t\tx1++;\n\t\t\t\tcontinue;\n\t\t\t} else if (action == 2) {\n\t\t\t\top |= action;\n\t\t\t\ty1++;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tList<String> outTemp = new ArrayList<String>();\n\t\t\tList<String> outLinesTemp = new ArrayList<String>();\n\t\t\tif (op > 0) {\n\t\t\t\tboolean multipleLines = (x1 != x0 + 1);\n\t\t\t\tString xstr = \"\" + (multipleLines ? ((x0 + 1) + \"-\" + x1) : x1);\n\t\t\t\tString ystr = \"\" + ((y1 != y0 + 1) ? ((y0 + 1) + \"-\" + y1) : y1);\n\t\t\t\tString linesStr = \"\\nLine\" + (multipleLines ? \"s \" : \" \");\n\t\t\t\tString doStr = \"do\" + (multipleLines ? \"\" : \"es\");\n\t\t\t\tif (op == 1) {\n\t\t\t\t\toutTemp.add(linesStr + xstr + \" deleted near student line \" + y1);\n\t\t\t\t} else if (op == 3) {\n\t\t\t\t\tif (xstr.equals(ystr)) {\n\t\t\t\t\t\toutTemp.add(linesStr + xstr + \" \" + doStr + \" not match\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\toutTemp.add(linesStr + xstr + \" changed to student line \" + ystr);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\twhile (x0 < x1) {\n\t\t\t\t\tif ((flags & IGNORE_BLANK_LINES) == 0 || !lines1Original[x0].trim().isEmpty()) {\n\t\t\t\t\t\toutLinesTemp.add(\"EXPECTED < \" + lines1Original[x0]);\n\t\t\t\t\t}\n\t\t\t\t\tx0++;\n\t\t\t\t}   // deleted elems\n\n\t\t\t\tif (op == 2) {\n\t\t\t\t\tif ((flags & IGNORE_LEADING) == 0 || x1 > 0) {\n\t\t\t\t\t\t// out.add(linesStr + x1 + \" added at student line \" + ystr);\n\t\t\t\t\t\t// Marty 2015/04/21\n\t\t\t\t\t\toutTemp.add(linesStr + \" added near student line \" + ystr);\n\t\t\t\t\t}\n\t\t\t\t} else if (op == 3) {\n\t\t\t\t\t// out += \"---\";\n\t\t\t\t}\n\n\t\t\t\twhile (y0 < y1) {\n\t\t\t\t\tif ((flags & IGNORE_LEADING) == 0 || op != 2 || x1 > 0) {\n\t\t\t\t\t\tif ((flags & IGNORE_BLANK_LINES) == 0 || !lines2Original[y0].trim().isEmpty()) {\n\t\t\t\t\t\t\toutLinesTemp.add(\"STUDENT  > \" + lines2Original[y0]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\ty0++;\n\t\t\t\t}   // added elems\n\t\t\t}\n\t\t\t\n\t\t\t// decide whether we should show this diff, based on flags\n\t\t\t// (Basically, outTemp almost always has stuff in it, but flags might strip outLinesTemp,\n\t\t\t//  and if the lines got stripped, we shouldn't show any of it.)\n\t\t\tif (!outTemp.isEmpty() && !outLinesTemp.isEmpty()) {\n\t\t\t\tout.addAll(outTemp);\n\t\t\t\tout.addAll(outLinesTemp);\n\t\t\t}\n\t\t\t\n\t\t\tx1++;\n\t\t\tx0 = x1;\n\t\t\ty1++;\n\t\t\ty0 = y1;\n\t\t\top = 0;\n\t\t}\n\n\t\tif (out.size() > 0) {\n\t\t\tout.add(\"\");\n\t\t\treturn StringUtils.join(out, \"\\n\").trim();\n\t\t} else {\n\t\t\treturn NO_DIFFS_MESSAGE;\n\t\t}\n\t}\n\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t/**\n\t * Returns a side-by-side comparision using the diff tool.\n\t *\n\t * @param str1 the first string. Output appears on the left.\n\t * @param str2 the string to compare to str2. Output is on the right.\n\t * @param a side-by-side diff of str1 and str2\n\t */\n\tpublic static String diffSideBySide(String str1, String str2) {\n\t\treturn diffSideBySide(str1, str2, StringUtils.getWidth(str1));\n\t}\n\t\n\t/**\n\t * Returns a side-by-side comparision using the diff tool.\n\t *\n\t * @param str1 the first string. Output appears on the left.\n\t * @param str2 the string to compare to str2. Output is on the right.\n\t * @param a side-by-side diff of str1 and str2\n\t */\n\t// MARTY NOTE 2015/04/21: this function seems to not work properly? fix? TODO\n\tpublic static String diffSideBySide(String str1, String str2, int width) {\n\t\tstr1 = String.valueOf(str1);\n\t\tstr2 = String.valueOf(str2);\n\t\tStringBuilder output = new StringBuilder();\n\t\ttry {\n\t\t\tString[] cparts = str1.split(\"\\r?\\n\");\n\t\t\tString[] sparts = str2.split(\"\\r?\\n\");\n\t\t\tDiffCollection differ = new DiffCollection(cparts, sparts);\n\t\t\tfor (DiffCollection.Difference diff : differ.diff()) {\n\t\t\t\tint delStart = diff.getDeletedStart();\n\t\t\t\tint delEnd = diff.getDeletedEnd();\n\t\t\t\tint addStart = diff.getAddedStart();\n\t\t\t\tint addEnd = diff.getAddedEnd();\n\t\t\t\tString from = diff.deletedIndexToString();\n\t\t\t\tString to = diff.addedIndexToString();\n\t\t\t\tString type = delEnd != DiffCollection.Difference.NONE\n\t\t\t\t\t\t&& addEnd != DiffCollection.Difference.NONE ? \" changed \"\n\t\t\t\t\t\t: (delEnd == DiffCollection.Difference.NONE ? \" added \" : \" deleted \");\n\n\t\t\t\toutput.append(from + type + to + '\\n');\n\t\t\t\tint deli = delStart;\n\t\t\t\tint addi = addStart;\n\t\t\t\twhile(deli <= delEnd || addi <= addEnd) {\n\t\t\t\t\toutput.append(String.format(\"%-\" + width + \"s\t|\t%s\\n\",\n\t\t\t\t\t\t\tdeli <= delEnd ? cparts[deli] : \"\",\n\t\t\t\t\t\t\taddi <= addEnd ? sparts[addi] : \"\"));\n\t\t\t\t\tdeli++;\n\t\t\t\t\taddi++;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn output.toString();\n\t\t} catch(Exception e) {\n\t\t\treturn \"Exception thrown: \" + ExceptionUtils.stackTraceToString(e);\n\t\t} catch(Error e2) {\n\t\t\treturn \"Error thrown: \" + e2;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/diff/DiffCollection.java",
    "content": "package stanford.cs106.diff;\n\nimport java.util.*;\n\n/**\n * Compares two collections, returning a list of the additions, changes, and\n * deletions between them. A <code>Comparator</code> may be passed as an\n * argument to the constructor, and will thus be used. If not provided, the\n * initial value in the <code>a</code> (\"from\") collection will be looked at to\n * see if it supports the <code>Comparable</code> interface. If so, its\n * <code>equals</code> and <code>compareTo</code> methods will be invoked on the\n * instances in the \"from\" and \"to\" collections; otherwise, for speed, hash\n * codes from the objects will be used instead for comparison.\n * \n * <p>\n * The file FileDiff.java shows an example usage of this class, in an\n * application similar to the Unix \"diff\" program.\n * </p>\n * \n * <p>\n * Source originally from: http://www.incava.org/projects/java/java-diff/\n * </p>\n */\npublic class DiffCollection {\n\t/**\n\t * The source array, AKA the \"from\" values.\n\t */\n\tprotected Object[] a;\n\n\t/**\n\t * The target array, AKA the \"to\" values.\n\t */\n\tprotected Object[] b;\n\n\t/**\n\t * The list of differences, as <code>Difference</code> instances.\n\t */\n\tprotected List<Difference> diffs = new ArrayList<Difference>();\n\n\t/**\n\t * The pending, uncommitted difference.\n\t */\n\tprivate Difference pending;\n\n\t/**\n\t * The thresholds.\n\t */\n\tprivate TreeMap<Integer, Integer> thresh;\n\n\t/**\n\t * Constructs the Diff object for the two arrays, using the default\n\t * comparison mechanism between the objects, such as <code>equals</code> and\n\t * <code>compareTo</code>.\n\t */\n\tpublic DiffCollection(Object[] a, Object[] b) {\n\t\tthis.a = a;\n\t\tthis.b = b;\n\t\tthis.thresh = null;\n\t}\n\n\t/**\n\t * Runs diff and returns the results.\n\t */\n\tpublic List<Difference> diff() {\n\t\ttraverseSequences();\n\n\t\t// add the last difference, if pending:\n\t\tif (pending != null) {\n\t\t\tdiffs.add(pending);\n\t\t}\n\n\t\treturn diffs;\n\t}\n\n\t/**\n\t * Traverses the sequences, seeking the longest common subsequences,\n\t * invoking the methods <code>finishedA</code>, <code>finishedB</code>,\n\t * <code>onANotB</code>, and <code>onBNotA</code>.\n\t */\n\tprotected void traverseSequences() {\n\t\tInteger[] matches = getLongestCommonSubsequences();\n\n\t\tint lastA = a.length - 1;\n\t\tint lastB = b.length - 1;\n\t\tint bi = 0;\n\t\tint ai;\n\n\t\tint lastMatch = matches.length - 1;\n\n\t\tfor (ai = 0; ai <= lastMatch; ++ai) {\n\t\t\tInteger bLine = matches[ai];\n\n\t\t\tif (bLine == null) {\n\t\t\t\tonANotB(ai, bi);\n\t\t\t} else {\n\t\t\t\twhile (bi < bLine.intValue()) {\n\t\t\t\t\tonBNotA(ai, bi++);\n\t\t\t\t}\n\n\t\t\t\t// onMatch(ai, bi++);\n\t\t\t}\n\t\t}\n\n\t\tboolean calledFinishA = false;\n\t\tboolean calledFinishB = false;\n\n\t\twhile (ai <= lastA || bi <= lastB) {\n\n\t\t\t// last A?\n\t\t\tif (ai == lastA + 1 && bi <= lastB) {\n\t\t\t\tif (!calledFinishA && callFinishedA()) {\n\t\t\t\t\t// finishedA(lastA);\n\t\t\t\t\tcalledFinishA = true;\n\t\t\t\t} else {\n\t\t\t\t\twhile (bi <= lastB) {\n\t\t\t\t\t\tonBNotA(ai, bi++);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// last B?\n\t\t\tif (bi == lastB + 1 && ai <= lastA) {\n\t\t\t\tif (!calledFinishB && callFinishedB()) {\n\t\t\t\t\t// finishedB(lastB);\n\t\t\t\t\tcalledFinishB = true;\n\t\t\t\t} else {\n\t\t\t\t\twhile (ai <= lastA) {\n\t\t\t\t\t\tonANotB(ai++, bi);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (ai <= lastA) {\n\t\t\t\tonANotB(ai++, bi);\n\t\t\t}\n\n\t\t\tif (bi <= lastB) {\n\t\t\t\tonBNotA(ai, bi++);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Override and return true in order to have <code>finishedA</code> invoked\n\t * at the last element in the <code>a</code> array.\n\t */\n\tprotected boolean callFinishedA() {\n\t\treturn false;\n\t}\n\n\t/**\n\t * Override and return true in order to have <code>finishedB</code> invoked\n\t * at the last element in the <code>b</code> array.\n\t */\n\tprotected boolean callFinishedB() {\n\t\treturn false;\n\t}\n\n//\t/**\n//\t * Invoked at the last element in <code>a</code>, if\n//\t * <code>callFinishedA</code> returns true.\n//\t */\n//\tprotected void finishedA(int lastA) {\n//\t}\n//\n//\t/**\n//\t * Invoked at the last element in <code>b</code>, if\n//\t * <code>callFinishedB</code> returns true.\n//\t */\n//\tprotected void finishedB(int lastB) {\n//\t}\n\n\t/**\n\t * Invoked for elements in <code>a</code> and not in <code>b</code>.\n\t */\n\tprotected void onANotB(int ai, int bi) {\n\t\tif (pending == null) {\n\t\t\tpending = new Difference(ai, ai, bi, -1);\n\t\t} else {\n\t\t\tpending.setDeleted(ai);\n\t\t}\n\t}\n\n\t/**\n\t * Invoked for elements in <code>b</code> and not in <code>a</code>.\n\t */\n\tprotected void onBNotA(int ai, int bi) {\n\t\tif (pending == null) {\n\t\t\tpending = new Difference(ai, -1, bi, bi);\n\t\t} else {\n\t\t\tpending.setAdded(bi);\n\t\t}\n\t}\n\n//\t/**\n//\t * Invoked for elements matching in <code>a</code> and <code>b</code>.\n//\t */\n//\tprotected void onMatch(int ai, int bi) {\n//\t\tif (pending == null) {\n//\t\t\t// no current pending\n//\t\t} else {\n//\t\t\tdiffs.add(pending);\n//\t\t\tpending = null;\n//\t\t}\n//\t}\n\n\t/**\n\t * Compares the two objects, using the comparator provided with the\n\t * constructor, if any.\n\t */\n\tprotected boolean equals(Object x, Object y) {\n\t\treturn x.equals(y);\n\t}\n\n\t/**\n\t * Returns an array of the longest common subsequences.\n\t */\n\tpublic Integer[] getLongestCommonSubsequences() {\n\t\tint aStart = 0;\n\t\tint aEnd = a.length - 1;\n\n\t\tint bStart = 0;\n\t\tint bEnd = b.length - 1;\n\n\t\tTreeMap<Integer, Integer> matches = new TreeMap<Integer, Integer>();\n\n\t\twhile (aStart <= aEnd && bStart <= bEnd && equals(a[aStart], b[bStart])) {\n\t\t\tmatches.put(Integer.valueOf(aStart++), Integer.valueOf(bStart++));\n\t\t}\n\n\t\twhile (aStart <= aEnd && bStart <= bEnd && equals(a[aEnd], b[bEnd])) {\n\t\t\tmatches.put(Integer.valueOf(aEnd--), Integer.valueOf(bEnd--));\n\t\t}\n\n\t\tMap<Object, List<Integer>> bMatches = null;\n\t\tif (a.length > 0 && a[0] instanceof Comparable<?>) {\n\t\t\t// this uses the Comparable interface\n\t\t\tbMatches = new TreeMap<Object, List<Integer>>();\n\t\t} else {\n\t\t\t// this just uses hashCode()\n\t\t\tbMatches = new HashMap<Object, List<Integer>>();\n\t\t}\n\n\t\tfor (int bi = bStart; bi <= bEnd; ++bi) {\n\t\t\tObject element = b[bi];\n\t\t\tObject key = element;\n\t\t\tList<Integer> positions = bMatches.get(key);\n\t\t\tif (positions == null) {\n\t\t\t\tpositions = new ArrayList<Integer>();\n\t\t\t\tbMatches.put(key, positions);\n\t\t\t}\n\t\t\tpositions.add(Integer.valueOf(bi));\n\t\t}\n\n\t\tthresh = new TreeMap<Integer, Integer>();\n\t\tMap<Integer, Integer[]> links = new HashMap<Integer, Integer[]>();\n\n\t\tfor (int i = aStart; i <= aEnd; ++i) {\n\t\t\tObject aElement = a[i]; // keygen here.\n\t\t\tList<Integer> positions = bMatches.get(aElement);\n\n\t\t\tif (positions != null) {\n\t\t\t\tInteger k = Integer.valueOf(0);\n\t\t\t\tListIterator<Integer> pit = positions.listIterator(positions.size());\n\t\t\t\twhile (pit.hasPrevious()) {\n\t\t\t\t\tInteger j = pit.previous();\n\n\t\t\t\t\tk = insert(j, k);\n\n\t\t\t\t\tif (k == null) {\n\t\t\t\t\t\t// nothing\n\t\t\t\t\t} else {\n\t\t\t\t\t\tInteger value = k.intValue() - 1;\n\t\t\t\t\t\tlinks.put(k, new Integer[] { value, Integer.valueOf(i), j });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (thresh.size() > 0) {\n\t\t\tInteger ti = thresh.lastKey();\n\t\t\tInteger[] link = links.get(ti);\n\t\t\twhile (link != null) {\n\t\t\t\tInteger x = link[1];\n\t\t\t\tInteger y = link[2];\n\t\t\t\tmatches.put(x, y);\n\t\t\t\tlink = links.get(link[0]);\n\t\t\t}\n\t\t}\n\n\t\treturn toArray(matches);\n\t}\n\n\t/**\n\t * Converts the map (indexed by java.lang.Integers) into an array.\n\t */\n\tprotected static Integer[] toArray(TreeMap<Integer, Integer> map) {\n\t\tint size = map.size() == 0 ? 0 : 1 + (map.lastKey()).intValue();\n\t\tInteger[] ary = new Integer[size];\n\t\tIterator<Integer> it = map.keySet().iterator();\n\n\t\twhile (it.hasNext()) {\n\t\t\tInteger idx = it.next();\n\t\t\tInteger val = map.get(idx);\n\t\t\tary[idx.intValue()] = val;\n\t\t}\n\t\treturn ary;\n\t}\n\n\t/**\n\t * Returns whether the integer is not zero (including if it is not null).\n\t */\n\tprotected static boolean isNonzero(Integer i) {\n\t\treturn i != null && i.intValue() != 0;\n\t}\n\n\t/**\n\t * Returns whether the value in the map for the given index is greater than\n\t * the given value.\n\t */\n\tprotected boolean isGreaterThan(Integer index, Integer val) {\n\t\tInteger lhs = thresh.get(index);\n\t\treturn lhs != null && val != null && lhs.compareTo(val) > 0;\n\t}\n\n\t/**\n\t * Returns whether the value in the map for the given index is less than the\n\t * given value.\n\t */\n\tprotected boolean isLessThan(Integer index, Integer val) {\n\t\tInteger lhs = thresh.get(index);\n\t\treturn lhs != null && (val == null || lhs.compareTo(val) < 0);\n\t}\n\n\t/**\n\t * Returns the value for the greatest key in the map.\n\t */\n\tprotected Integer getLastValue() {\n\t\treturn thresh.get(thresh.lastKey());\n\t}\n\n\t/**\n\t * Adds the given value to the \"end\" of the threshold map, that is, with the\n\t * greatest index/key.\n\t */\n\tprotected void append(Integer value) {\n\t\tInteger addIdx = null;\n\t\tif (thresh.size() == 0) {\n\t\t\taddIdx = Integer.valueOf(0);\n\t\t} else {\n\t\t\tInteger lastKey = thresh.lastKey();\n\t\t\taddIdx = Integer.valueOf(lastKey.intValue() + 1);\n\t\t}\n\t\tthresh.put(addIdx, value);\n\t}\n\n\t/**\n\t * Inserts the given values into the threshold map.\n\t */\n\tprotected Integer insert(Integer j, Integer k) {\n\t\tif (isNonzero(k) && isGreaterThan(k, j) && isLessThan(Integer.valueOf(k.intValue() - 1), j)) {\n\t\t\tthresh.put(k, j);\n\t\t} else {\n\t\t\tint hi = -1;\n\n\t\t\tif (isNonzero(k)) {\n\t\t\t\thi = k.intValue();\n\t\t\t} else if (thresh.size() > 0) {\n\t\t\t\thi = (thresh.lastKey()).intValue();\n\t\t\t}\n\n\t\t\t// off the end?\n\t\t\tif (hi == -1 || j.compareTo(getLastValue()) > 0) {\n\t\t\t\tappend(j);\n\t\t\t\tk = Integer.valueOf(hi + 1);\n\t\t\t} else {\n\t\t\t\t// binary search for insertion point:\n\t\t\t\tint lo = 0;\n\n\t\t\t\twhile (lo <= hi) {\n\t\t\t\t\tint index = (hi + lo) / 2;\n\t\t\t\t\tInteger val = thresh.get(Integer.valueOf(index));\n\t\t\t\t\tint cmp = j.compareTo(val);\n\n\t\t\t\t\tif (cmp == 0) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t} else if (cmp > 0) {\n\t\t\t\t\t\tlo = index + 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\thi = index - 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthresh.put(Integer.valueOf(lo), j);\n\t\t\t\tk = Integer.valueOf(lo);\n\t\t\t}\n\t\t}\n\n\t\treturn k;\n\t}\n\n\t/**\n\t * Represents a difference, as used in <code>Diff</code>. A difference\n\t * consists of two pairs of starting and ending points, each pair\n\t * representing either the \"from\" or the \"to\" collection passed to\n\t * <code>Diff</code>. If an ending point is -1, then the difference was\n\t * either a deletion or an addition. For example, if\n\t * <code>getDeletedEnd()</code> returns -1, then the difference represents\n\t * an addition.\n\t */\n\tpublic static final class Difference {\n\t\tpublic static final int NONE = -1;\n\n\t\t/**\n\t\t * The point at which the deletion starts.\n\t\t */\n\t\tprivate int delStart = NONE;\n\n\t\t/**\n\t\t * The point at which the deletion ends.\n\t\t */\n\t\tprivate int delEnd = NONE;\n\n\t\t/**\n\t\t * The point at which the addition starts.\n\t\t */\n\t\tprivate int addStart = NONE;\n\n\t\t/**\n\t\t * The point at which the addition ends.\n\t\t */\n\t\tprivate int addEnd = NONE;\n\n\t\t/**\n\t\t * Creates the difference for the given start and end points for the\n\t\t * deletion and addition.\n\t\t */\n\t\tpublic Difference(int delStart, int delEnd, int addStart, int addEnd) {\n\t\t\tthis.delStart = delStart;\n\t\t\tthis.delEnd = delEnd;\n\t\t\tthis.addStart = addStart;\n\t\t\tthis.addEnd = addEnd;\n\t\t}\n\n\t\t/**\n\t\t * The point at which the deletion starts, if any. A value equal to\n\t\t * <code>NONE</code> means this is an addition.\n\t\t */\n\t\tpublic int getDeletedStart() {\n\t\t\treturn delStart;\n\t\t}\n\n\t\t/**\n\t\t * The point at which the deletion ends, if any. A value equal to\n\t\t * <code>NONE</code> means this is an addition.\n\t\t */\n\t\tpublic int getDeletedEnd() {\n\t\t\treturn delEnd;\n\t\t}\n\n\t\t/**\n\t\t * The point at which the addition starts, if any. A value equal to\n\t\t * <code>NONE</code> means this must be an addition.\n\t\t */\n\t\tpublic int getAddedStart() {\n\t\t\treturn addStart;\n\t\t}\n\n\t\t/**\n\t\t * The point at which the addition ends, if any. A value equal to\n\t\t * <code>NONE</code> means this must be an addition.\n\t\t */\n\t\tpublic int getAddedEnd() {\n\t\t\treturn addEnd;\n\t\t}\n\n\t\t/**\n\t\t * Sets the point as deleted. The start and end points will be modified\n\t\t * to include the given line.\n\t\t */\n\t\tpublic void setDeleted(int line) {\n\t\t\tdelStart = Math.min(line, delStart);\n\t\t\tdelEnd = Math.max(line, delEnd);\n\t\t}\n\n\t\t/**\n\t\t * Sets the point as added. The start and end points will be modified to\n\t\t * include the given line.\n\t\t */\n\t\tpublic void setAdded(int line) {\n\t\t\taddStart = Math.min(line, addStart);\n\t\t\taddEnd = Math.max(line, addEnd);\n\t\t}\n\n\t\t/**\n\t\t * Compares this object to the other for equality. Both objects must be\n\t\t * of type Difference, with the same starting and ending points.\n\t\t */\n\t\tpublic boolean equals(Object obj) {\n\t\t\tif (obj instanceof Difference) {\n\t\t\t\tDifference other = (Difference) obj;\n\n\t\t\t\treturn (delStart == other.delStart && delEnd == other.delEnd\n\t\t\t\t\t\t&& addStart == other.addStart && addEnd == other.addEnd);\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\t\n\t\tpublic int hashCode() {\n\t\t\treturn delStart << 24 + delEnd << 16 + addStart << 8 + addEnd;\n\t\t}\n\n\t\tpublic String addedIndexToString() {\n\t\t\treturn indexToString(addStart, addEnd);\n\t\t}\n\n\t\tpublic String deletedIndexToString() {\n\t\t\treturn indexToString(delStart, delEnd);\n\t\t}\n\n\t\tpublic String indexToString(int start, int end) {\n\t\t\t// adjusted, because file lines are one-indexed, not zero.\n\n\t\t\tStringBuffer buf = new StringBuffer();\n\n\t\t\t// match the line numbering from diff(1):\n\t\t\tbuf.append(end == Difference.NONE ? start : (1 + start));\n\n\t\t\tif (end != Difference.NONE && start != end) {\n\t\t\t\tbuf.append(\"-\").append(1 + end);\n\t\t\t}\n\t\t\treturn buf.toString();\n\t\t}\n\n\t\t/**\n\t\t * Returns a string representation of this difference.\n\t\t */\n\t\tpublic String toString() {\n\t\t\tStringBuffer buf = new StringBuffer();\n\t\t\tbuf.append(\"del: [\" + delStart + \", \" + delEnd + \"]\");\n\t\t\tbuf.append(\" \");\n\t\t\tbuf.append(\"add: [\" + addStart + \", \" + addEnd + \"]\");\n\t\t\treturn buf.toString();\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/diff/DiffGui.java",
    "content": "/*\n * @version 2018/07/08\n * - bug fix for split pane divider location (wasn't waiting for window to show)\n * @version 2018/01/23\n * - modified diff panes to use same font as JBE console if present\n */\n\npackage stanford.cs106.diff;\n\nimport java.awt.*;\nimport java.awt.event.*;\n\nimport javax.swing.*;\n\nimport stanford.cs106.gui.*;\nimport stanford.cs106.util.*;\nimport stanford.spl.*;\n\npublic class DiffGui implements ActionListener, AdjustmentListener {\n\tpublic static boolean SIDE_BY_SIDE_ENABLED = false;\n\tprivate static final int SPLIT = JSplitPane.VERTICAL_SPLIT;\n\tprivate static final int MAX_WIDTH = 1000;\n\tprivate static final int MAX_HEIGHT = 700;\n\tpublic static final String EXPECTED_COLOR = \"#00aa00\";\n\tpublic static final String STUDENT_COLOR = \"#aa0000\";\n\tpublic static final String LINE_NUMBER_BG_COLOR = \"#ffffff\";\n\tpublic static final String LINE_NUMBER_FG_COLOR = \"#777777\";\n\n//\tpublic static final int IGNORE_LEADING      = 0x1;\n//\tpublic static final int IGNORE_TRAILING     = 0x2;\n//\tpublic static final int IGNORE_WHITESPACE   = 0x4;\n//\tpublic static final int IGNORE_BLANKLINES   = 0x8;\n//\tpublic static final int IGNORE_CASE         = 0x10;\n//\tpublic static final int IGNORE_NUMBERS      = 0x20;\n//\tpublic static final int IGNORE_NONNUMBERS   = 0x40;\n//\tpublic static final int IGNORE_AFTERDECIMAL = 0x80;\n//\tpublic static final int IGNORE_CHARORDER    = 0x100;\n//\tpublic static final int IGNORE_LINEORDER    = 0x200;\n//\tpublic static final int IGNORE_EVERYTHING   = 0x1000;\n\t\n\tprivate String s1;\n\tprivate String s2;\n\tprivate JFrame frame;\n\tprivate JTextPane diffsArea;\n\tprivate JTextPane sbsDiffsArea;\n\tprivate JScrollPane scroll1;\n\tprivate JScrollPane scroll2;\n\tprivate int oldScrollValue1 = 0;\n\tprivate int oldScrollValue2 = 0;\n\tprivate JCheckBox syncBox;\n\tprivate JCheckBox ignoreLeading;\n\tprivate JCheckBox ignoreTrailing;\n\tprivate JCheckBox ignoreWhitespace;\n\tprivate JCheckBox ignoreBlankLines;\n\tprivate JCheckBox ignoreCase;\n\tprivate JCheckBox ignorePunctuation;\n\tprivate JCheckBox ignoreNumbers;\n\tprivate JCheckBox ignoreNonNumbers;\n\t\n\tpublic DiffGui(String s1, String s2) {\n\t\tthis(null, s1, null, s2);\n\t}\n\t\n\tpublic DiffGui(String name1, String s1, String name2, String s2) {\n\t\tthis(name1, s1, name2, s2, Diff.FLAGS_DEFAULT_LENIENT, /* checkboxes */ true);\n\t}\n\t\n\tpublic DiffGui(String name1, String s1, String name2, String s2, boolean checkboxes) {\n\t\tthis(name1, s1, name2, s2, Diff.FLAGS_DEFAULT_LENIENT, checkboxes);\n\t}\n\t\n\tpublic DiffGui(String name1, String s1, String name2, String s2, int flags) {\n\t\tthis(name1, s1, name2, s2, flags, /* checkboxes */ true);\n\t}\n\t\n\tpublic DiffGui(String name1, String s1, String name2, String s2, int flags, boolean checkboxes) {\n\t\tthis.s1 = s1;\n\t\tthis.s2 = s2;\n\t\t\n\t\tJTextPane area1 = makeHtmlPane(colorOutput(StringUtils.numberLines(s1)));\n\t\tJTextPane area2 = makeHtmlPane(colorOutput(StringUtils.numberLines(s2)));\n\t\tdiffsArea = makeHtmlPane(colorDiffs(Diff.diff(s1, s2, flags)));\n\t\tsbsDiffsArea = makeHtmlPane(colorSideBySideDiffs(Diff.diffSideBySide(s1, s2, StringUtils.getWidth(s1))));\n\t\t\n\t\tsyncBox = new JCheckBox(\"Sync scrolling\", true);\n\t\tsyncBox.setHorizontalAlignment(JCheckBox.CENTER);\n\t\tsyncBox.setMnemonic('S');\n\t\t\n\t\tignoreLeading = new JCheckBox(\"Start\", (flags & Diff.IGNORE_LEADING) != 0);\n\t\tignoreTrailing = new JCheckBox(\"End\", (flags & Diff.IGNORE_TRAILING) != 0);\n\t\tignoreWhitespace = new JCheckBox(\"Spaces\", (flags & Diff.IGNORE_WHITESPACE) != 0);\n\t\tignoreBlankLines = new JCheckBox(\"Blank\", (flags & Diff.IGNORE_BLANK_LINES) != 0);\n\t\tignoreCase = new JCheckBox(\"CaSe\", (flags & Diff.IGNORE_CASE) != 0);\n\t\tignorePunctuation = new JCheckBox(\"Punct\", (flags & Diff.IGNORE_PUNCTUATION) != 0);\n\t\tignoreNumbers = new JCheckBox(\"[0-9]\", (flags & Diff.IGNORE_NUMBERS) != 0);\n\t\tignoreNonNumbers = new JCheckBox(\"![0-9]\", (flags & Diff.IGNORE_NONNUMBERS) != 0);\n\t\t\n\t\t// do layout\n\t\tContainer center = new JPanel(new GridLayout(1, 2));\n\t\tscroll1 = new JScrollPane(area1);\n\t\tDimension screen = Toolkit.getDefaultToolkit().getScreenSize();\n\t\tGuiUtils.ensureMinimumPreferredSize(scroll1, (int) (screen.width * .45), (int) (screen.height * .7));\n\t\tscroll1.getVerticalScrollBar().addAdjustmentListener(this);\n\t\tscroll2 = new JScrollPane(area2);\n\t\tscroll2.setPreferredSize(scroll1.getPreferredSize());\n\t\tscroll2.getVerticalScrollBar().addAdjustmentListener(this);\n\t\tcenter.add(scroll1);\n\t\tcenter.add(scroll2);\n\t\t\n\t\tJTabbedPane diffsSouth = new JTabbedPane();\n\t\tString tab1text = \"Diffs\";\n\t\tString tab2text = \"Side-by-side\";\n\t\tif (checkboxes) {\n\t\t\ttab1text += \" (use checkboxes below)\";\n\t\t\ttab2text += \" (checkboxes have no effect)\";\n\t\t}\n\t\tdiffsSouth.addTab(tab1text, new JScrollPane(diffsArea));\n\t\tif (SIDE_BY_SIDE_ENABLED) {\n\t\t\tdiffsSouth.addTab(tab2text, new JScrollPane(sbsDiffsArea));\n\t\t}\n\t\tGuiUtils.setPreferredHeight(diffsSouth, 100);\n\t\t\n\t\tContainer buttonPane = null;\n\t\tif (checkboxes) {\n\t\t\tbuttonPane = GuiUtils.createPanel(\n\t\t\t\t\tnew FlowLayout(FlowLayout.CENTER),\n\t\t\t\t\tnew JLabel(\"Ignore: \"),\n\t\t\t\t\tignoreLeading,\n\t\t\t\t\tignoreTrailing,\n\t\t\t\t\tignoreWhitespace,\n\t\t\t\t\tignoreBlankLines,\n\t\t\t\t\tignoreCase,\n\t\t\t\t\tignorePunctuation,\n\t\t\t\t\tignoreNumbers,\n\t\t\t\t\tignoreNonNumbers,\n\t\t\t\t\tGuiUtils.createButton(\"Update\", 'U', this),\n\t\t\t\t\tBox.createHorizontalStrut(20),\n\t\t\t\t\tGuiUtils.createButton(\"Close\", 'C', this)\n\t\t\t);\n\t\t} else {\n\t\t\tbuttonPane = GuiUtils.createPanel(\n\t\t\t\t\tnew FlowLayout(FlowLayout.CENTER),\n\t\t\t\t\tGuiUtils.createButton(\"Close\", 'C', this)\n\t\t\t);\n\t\t}\n\t\t\n\t\tContainer overall = new JPanel(new BorderLayout());\n\t\tfinal JSplitPane splitPane = new JSplitPane(SPLIT, center, diffsSouth);\n\t\toverall.add(splitPane, BorderLayout.CENTER);\n\t\toverall.add(buttonPane, BorderLayout.SOUTH);\n\t\t\n\t\tContainer north = new JPanel(new GridLayout(1, 3));\n\t\tif (name1 == null) {\n\t\t\tnorth.add(new JLabel());\n\t\t} else {\n\t\t\tString htmlLabelText = GuiUtils.htmlLabelText(name1, CollectionUtils.asMap(\n\t\t\t\t\t\"font-color\", EXPECTED_COLOR\n\t\t\t));\n\t\t\tJLabel label1 = new JLabel(htmlLabelText);\n\t\t\tlabel1.setHorizontalAlignment(JLabel.LEFT);\n\t\t\tnorth.add(label1);\n\t\t}\n\t\tnorth.add(syncBox);\n\t\tif (name2 == null) {\n\t\t\tnorth.add(new JLabel());\n\t\t} else {\n\t\t\tString htmlLabelText = GuiUtils.htmlLabelText(name1, CollectionUtils.asMap(\n\t\t\t\t\t\"font-color\", STUDENT_COLOR\n\t\t\t));\n\t\t\tJLabel label2 = new JLabel(htmlLabelText);\n\t\t\tlabel2.setHorizontalAlignment(JLabel.RIGHT);\n\t\t\tnorth.add(label2);\n\t\t}\n\t\toverall.add(north, BorderLayout.NORTH);\n\t\t\n\t\tframe = new JFrame();\n\t\tframe.setTitle(\"Diff\");\n\t\tframe.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);\n\t\tframe.setContentPane(overall);\n\t\tWindowCloseKeyListener.add(frame);\n\t\tframe.pack();\n\t\tif (frame.getWidth() > MAX_WIDTH) {\n\t\t\tframe.setSize(MAX_WIDTH, frame.getHeight());\n\t\t}\n\t\tif (frame.getHeight() > MAX_HEIGHT) {\n\t\t\tframe.setSize(frame.getWidth(), MAX_HEIGHT);\n\t\t}\n\t\t// splitPane.setDividerLocation(0.6);   // 60/40 split\n\t\tGuiUtils.centerWindow(frame);\n\t\t\n\t\t// set split pane's split divider location;\n\t\t// doesn't really work unless you give a delay after show()\n\t\tnew Thread(new Runnable() {\n\t\t\tpublic void run() {\n\t\t\t\t// wait for up to 5 sec\n\t\t\t\tlong ms = 0;\n\t\t\t\twhile (ms < 5000 && splitPane.getHeight() <= 1) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tThread.sleep(50);\n\t\t\t\t\t\tms += 50;\n\t\t\t\t\t} catch (InterruptedException ie) {\n\t\t\t\t\t\t// empty\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsplitPane.setDividerLocation(0.6);   // 60/40 split top/bottom\n\t\t\t}\n\t\t}).start();\n\t}\n\t\n\tpublic void adjustmentValueChanged(AdjustmentEvent event) {\n\t\tint value = event.getValue();\n\t\tJScrollBar bar1 = scroll1.getVerticalScrollBar();\n\t\tJScrollBar bar2 = scroll2.getVerticalScrollBar();\n\t\tif (syncBox.isSelected()) {\n\t\t\tsynchronized (bar1) {\n\t\t\t\tbar1.removeAdjustmentListener(this);\n\t\t\t\tbar2.removeAdjustmentListener(this);\n\t\t\t\tif (event.getSource() == bar1) {\n\t\t\t\t\tint diff = value - oldScrollValue1;\n\t\t\t\t\tbar2.setValue(bar2.getValue() + diff);\n\t\t\t\t} else {\n\t\t\t\t\t// came from scroll2's scrollbar\n\t\t\t\t\tint diff = value - oldScrollValue2;\n\t\t\t\t\tbar1.setValue(bar1.getValue() + diff);\n\t\t\t\t}\n\t\t\t\tbar1.addAdjustmentListener(this);\n\t\t\t\tbar2.addAdjustmentListener(this);\n\t\t\t}\n\t\t}\n\t\toldScrollValue1 = bar1.getValue();\n\t\toldScrollValue2 = bar2.getValue();\n\t}\n\n\tpublic void actionPerformed(ActionEvent event) {\n\t\tString cmd = event.getActionCommand().intern();\n\t\tif (cmd == \"Update\") {\n\t\t\tint newFlags = 0;\n\t\t\tif (ignoreLeading.isSelected()) {\n\t\t\t\tnewFlags |= Diff.IGNORE_LEADING;\n\t\t\t}\n\t\t\tif (ignoreTrailing.isSelected()) {\n\t\t\t\tnewFlags |= Diff.IGNORE_TRAILING;\n\t\t\t}\n\t\t\tif (ignoreWhitespace.isSelected()) {\n\t\t\t\tnewFlags |= Diff.IGNORE_WHITESPACE;\n\t\t\t}\n\t\t\tif (ignoreBlankLines.isSelected()) {\n\t\t\t\tnewFlags |= Diff.IGNORE_BLANK_LINES;\n\t\t\t}\n\t\t\tif (ignoreCase.isSelected()) {\n\t\t\t\tnewFlags |= Diff.IGNORE_CASE;\n\t\t\t}\n\t\t\tif (ignorePunctuation.isSelected()) {\n\t\t\t\tnewFlags |= Diff.IGNORE_PUNCTUATION;\n\t\t\t}\n\t\t\tif (ignoreNumbers.isSelected()) {\n\t\t\t\tnewFlags |= Diff.IGNORE_NUMBERS;\n\t\t\t}\n\t\t\tif (ignoreNonNumbers.isSelected()) {\n\t\t\t\tnewFlags |= Diff.IGNORE_NONNUMBERS;\n\t\t\t}\n\t\t\tdiffsArea.setText(colorDiffs(Diff.diff(s1, s2, newFlags)));\n\t\t\tdiffsArea.setCaretPosition(0);\n\t\t}\n\t\tif (cmd == \"Close\") {\n\t\t\tframe.setVisible(false);\n\t\t\tframe.dispose();\n\t\t}\n\t}\n\t\n\tpublic void show() {\n\t\tframe.setVisible(true);\n\t}\n\t\n\tprivate String htmlBodyWrap(String text) {\n\t\tFont monospacedFont = JavaBackEnd.getConsoleFont();\n\t\tif (monospacedFont == null) {\n\t\t\tFont defaultLabelFont = new JLabel().getFont();\n\t\t\tmonospacedFont = new Font(\"monospaced\", Font.PLAIN, defaultLabelFont.getSize());\n\t\t}\n\t\treturn GuiUtils.htmlLabelText(text, CollectionUtils.asMap(\n\t\t\t\t\"font\", monospacedFont\n\t\t));\n\t}\n\t\n\tprivate String colorOutput(String output) {\n\t\tString[] lines = output.split(\"\\r?\\n\");\n\t\tfor (int i = 0; i < lines.length; i++) {\n\t\t\tlines[i] = lines[i].replaceAll(\"[&]\", \"&amp;\");\n\t\t\tlines[i] = lines[i].replaceAll(\"[ ]\", \"&nbsp;\");\n\t\t\tlines[i] = lines[i].replaceAll(\"[<]\", \"&lt;\");\n\t\t\tlines[i] = lines[i].replaceAll(\"[>]\", \"&gt;\");\n\t\t\tlines[i] = lines[i].replaceAll(\"^([0-9]{1,4}[|])\", \"<font color='\" + LINE_NUMBER_FG_COLOR + \"' bgcolor='\" + LINE_NUMBER_BG_COLOR + \"'>$1</font>\");\n\t\t}\n\t\treturn htmlBodyWrap(StringUtils.join(lines, \"<br>\"));\n\t}\n\t\n\tprivate String colorDiffs(String diffs) {\n\t\tdiffs = StringUtils.htmlEncode(diffs, /* replaceSpecialChars */ true, /* nbsp */ true);\n\t\tdiffs = diffs.replaceAll(\"(EXPECTED&nbsp;&lt;.{0,999})\", \"<font color='\" + EXPECTED_COLOR + \"'>$1</font>\");\n\t\tdiffs = diffs.replaceAll(\"(STUDENT&nbsp;&nbsp;&gt;.{0,999})\", \"<font color='\" + STUDENT_COLOR + \"'>$1</font>\");\n\t\treturn htmlBodyWrap(diffs);\n\t}\n\t\n\tprivate String colorSideBySideDiffs(String diffs) {\n\t\tdiffs = StringUtils.htmlEncode(diffs, /* replaceSpecialChars */ true, /* nbsp */ true);\n\t\treturn htmlBodyWrap(diffs);\n\t}\n\n\tprivate JTextPane makeHtmlPane(String htmlText) {\n\t\tJTextPane pane = new JTextPane();\n\t\t\n\t\tFont font = pane.getFont();\n\t\tfont = new Font(Font.MONOSPACED, Font.PLAIN, font.getSize());\n\n\t\t// BUGFIX: set diff font size to match console font size\n\t\tFont consoleFont = JavaBackEnd.getConsoleFont();\n\t\tif (consoleFont != null) {\n\t\t\tfont = consoleFont;\n\t\t}\n\t\t\n\t\tpane.setFont(font);\n\t\tpane.setContentType(\"text/html\");\n\t\tpane.setText(htmlText);\n\t\tpane.setCaretPosition(0);\n\t\tpane.setEditable(false);\n\t\treturn pane;\n\t}\n\t\n\tpublic void setDiffCheckboxes(boolean value) {\n\t\t\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/diff/DiffImage.java",
    "content": "package stanford.cs106.diff;\n\nimport acm.graphics.GObject;\nimport acm.util.*;\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.awt.image.*;\nimport java.io.*;\nimport java.net.*;\nimport javax.imageio.*;\nimport javax.swing.*;\nimport javax.swing.event.*;\nimport stanford.cs106.gui.*;\nimport stanford.cs106.io.*;\n\n/**\n * This class views the difference between two images in a graphical window\n * with a slider to switch between the two.\n *\n * @author Marty Stepp\n * @version 2016/10/30\n * - made Escape close the window\n * @version 2016/08/02\n * - added south panel with pixel information\n * - re-enabled JMenuBar options\n * @version 2016/07/30\n * - added setLabel1, setLabel2\n */\npublic class DiffImage extends JPanel {\n\tprivate static final Color DIFF_COLOR = new Color(140, 20, 20);\n\tprivate static final Color NO_DIFF_COLOR = new JLabel(\"hi\").getForeground();\n\t\n\tprivate static final long serialVersionUID = 0;\n\n\tprivate BufferedImage image1;\n\tprivate BufferedImage image2;\n\tprivate String image1name;\n\tprivate int numDiffPixels;\n\tprivate int opacity = 50;\n\tprivate String label1Text = \"Expected\";\n\tprivate String label2Text = \"Actual\";\n\tprivate boolean highlightDiffs = false;\n\n\tprivate Color highlightColor = new Color(224, 0, 224);\n\tprivate JFileChooser chooser;\n\tprivate JLabel image1Label;\n\tprivate JLabel image2Label;\n\tprivate JLabel diffPixelsLabel;\n\tprivate JLabel southPixelLabel;\n\tprivate JSlider slider;\n\tprivate JCheckBox box;\n\tprivate JMenuItem saveAsItem;\n\tprivate JMenuItem setImage1Item;\n\tprivate JMenuItem setImage2Item;\n\tprivate JFrame frame;\n\tprivate JButton colorButton;\n\n\t/*\n\t * ...\n\t */\n\tpublic DiffImage(String imageFile1, String imageFile2) {\n\t\tthis(imageFile1, imageFile2, /* display */ true);\n\t}\n\t\n\tpublic DiffImage(String imageFile1, String imageFile2, boolean display) {\n\t\ttry {\n\t\t\tImage image1 = MediaTools.loadImage(imageFile1);\n\t\t\tImage image2 = MediaTools.loadImage(imageFile2);\n\t\t\tsetImage1(toBufferedImage(image1));\n\t\t\tsetImage2(toBufferedImage(image2));\n\t\t\tif (display) {\n\t\t\t\tdisplay();\n\t\t\t}\n\t\t} catch (ErrorException ex) {\n\t\t\tthrow new IORuntimeException(ex);\n\t\t}\n\t}\n\n\t/*\n\t * ...\n\t */\n\tpublic DiffImage(Image image1, Image image2) {\n\t\tthis(image1, image2, /* display */ true);\n\t}\n\t\n\tpublic DiffImage(Image image1, Image image2, boolean display) {\n\t\tsetImage1(toBufferedImage(image1));\n\t\tsetImage2(toBufferedImage(image2));\n\t\tif (display) {\n\t\t\tdisplay();\n\t\t}\n\t}\n\n\tprivate void checkChooser() {\n\t\tif (chooser == null) {\n\t\t\tchooser = new JFileChooser(System.getProperty(\"user.dir\"));\n\t\t\t// this.chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);\n\t\t\tchooser.setMultiSelectionEnabled(false);\n\t\t}\n\t}\n\n\t// Counts number of pixels that differ between the two images.\n\tpublic void countDiffPixels() {\n\t\tif (image1 == null || image2 == null) {\n\t\t\treturn;\n\t\t}\n\n\t\tint w1 = image1.getWidth();\n\t\tint h1 = image1.getHeight();\n\t\tint w2 = image2.getWidth();\n\t\tint h2 = image2.getHeight();\n\t\tint wmax = Math.max(w1, w2);\n\t\tint hmax = Math.max(h1, h2);\n\n\t\t// check each pair of pixels\n\t\tnumDiffPixels = 0;\n\t\tfor (int y = 0; y < hmax; y++) {\n\t\t\tfor (int x = 0; x < wmax; x++) {\n\t\t\t\tint pixel1 = (x < w1 && y < h1) ? image1.getRGB(x, y) : 0;\n\t\t\t\tint pixel2 = (x < w2 && y < h2) ? image2.getRGB(x, y) : 0;\n\t\t\t\tif (pixel1 != pixel2) {\n\t\t\t\t\tnumDiffPixels++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// initializes diffimage panel\n\tpublic void display() {\n\t\tcountDiffPixels();\n\n\t\tsetupComponents();\n\t\tsetupEvents();\n\t\tsetupLayout();\n\n\t\tframe.pack();\n\t\tGuiUtils.centerWindow(frame);\n\n\t\tframe.setVisible(true);\n\t\tframe.toFront();\n\t}\n\n\t// draws the given image onto the given graphics context\n\tpublic void drawImageFull(Graphics2D g2, BufferedImage image) {\n\t\tint iw = image.getWidth();\n\t\tint ih = image.getHeight();\n\t\tint w = getWidth();\n\t\tint h = getHeight();\n\t\tint dw = w - iw;\n\t\tint dh = h - ih;\n\n\t\tif (dw > 0) {\n\t\t\tg2.fillRect(iw, 0, dw, ih);\n\t\t}\n\t\tif (dh > 0) {\n\t\t\tg2.fillRect(0, ih, iw, dh);\n\t\t}\n\t\tif (dw > 0 && dh > 0) {\n\t\t\tg2.fillRect(iw, ih, dw, dh);\n\t\t}\n\t\tg2.drawImage(image, 0, 0, this);\n\t}\n\t\n\tprivate String getPixelString(BufferedImage image, int x, int y) {\n\t\tif (x >= 0 && x < image.getWidth()\n\t\t\t\t&& y >= 0 && y < image.getHeight()) {\n\t\t\tint rgb = image.getRGB(x, y);\n\t\t\treturn GObject.colorNameFriendly(rgb);\n\t\t} else {\n\t\t\treturn \"(none)\";\n\t\t}\n\t}\n\n\t// paints the DiffImage panel\n\tpublic void paintComponent(Graphics g) {\n\t\tsuper.paintComponent(g);\n\t\tGraphics2D g2 = (Graphics2D) g;\n\n\t\t// draw the expected output (image 1)\n\t\tif (image1 != null) {\n\t\t\tdrawImageFull(g2, image1);\n\t\t}\n\n\t\t// draw the actual output (image 2)\n\t\tif (image2 != null) {\n\t\t\tComposite oldComposite = g2.getComposite();\n\t\t\tg2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, ((float) opacity) / 100));\n\t\t\tdrawImageFull(g2, image2);\n\t\t\tg2.setComposite(oldComposite);\n\t\t}\n\t\tg2.setColor(Color.BLACK);\n\n\t\t// draw the highlighted diffs (if so desired)\n\t\tif (highlightDiffs && image1 != null && image2 != null) {\n\t\t\tint w1 = image1.getWidth();\n\t\t\tint h1 = image1.getHeight();\n\t\t\tint w2 = image2.getWidth();\n\t\t\tint h2 = image2.getHeight();\n\n\t\t\tint wmax = Math.max(w1, w2);\n\t\t\tint hmax = Math.max(h1, h2);\n\n\t\t\t// check each pair of pixels\n\t\t\tg2.setColor(highlightColor);\n\t\t\tfor (int y = 0; y < hmax; y++) {\n\t\t\t\tfor (int x = 0; x < wmax; x++) {\n\t\t\t\t\tint pixel1 = (x < w1 && y < h1) ? image1.getRGB(x, y) : 0;\n\t\t\t\t\tint pixel2 = (x < w2 && y < h2) ? image2.getRGB(x, y) : 0;\n\t\t\t\t\tif (pixel1 != pixel2) {\n\t\t\t\t\t\tg2.fillRect(x, y, 1, 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/*\n\t * ...\n\t */\n\tpublic void save(File file) throws IOException {\n\t\t// String extension = filename.substring(filename.lastIndexOf(\".\") + 1);\n\t\t// ImageIO.write(diffImage, extension, new File(filename));\n\t\tString filename = file.getName();\n\t\tString extension = filename.substring(filename.lastIndexOf(\".\") + 1);\n\t\tBufferedImage img = new BufferedImage(getPreferredSize().width, getPreferredSize().height, BufferedImage.TYPE_INT_ARGB);\n\t\timg.getGraphics().setColor(getBackground());\n\t\timg.getGraphics().fillRect(0, 0, img.getWidth(), img.getHeight());\n\t\tpaintComponent(img.getGraphics());\n\t\tImageIO.write(img, extension, file);\n\t}\n\n\t/*\n\t * ...\n\t */\n\tpublic void save(String filename) throws IOException {\n\t\tsave(new File(filename));\n\t}\n\n\t// Called when \"Save As\" menu item is clicked\n\tpublic void saveAs() {\n\t\tcheckChooser();\n\t\tif (chooser.showSaveDialog(frame) != JFileChooser.APPROVE_OPTION) {\n\t\t\treturn;\n\t\t}\n\n\t\tFile selectedFile = chooser.getSelectedFile();\n\t\ttry {\n\t\t\tsave(selectedFile.toString());\n\t\t} catch (IOException ex) {\n\t\t\tJOptionPane.showMessageDialog(frame, \"Unable to save image:\\n\" + ex);\n\t\t}\n\t}\n\t\n\tprivate void setDiffPixelsText() {\n\t\tdiffPixelsLabel.setText(\"(\" + numDiffPixels + \" pixels differ)\");\n\t\tdiffPixelsLabel.setForeground(numDiffPixels > 0 ? DIFF_COLOR : NO_DIFF_COLOR);\n\t}\n\n\t// called when \"Set Image 1\" menu item is clicked\n\tpublic void setImage1() {\n\t\tcheckChooser();\n\t\tif (chooser.showSaveDialog(frame) != JFileChooser.APPROVE_OPTION) {\n\t\t\treturn;\n\t\t}\n\n\t\tFile selectedFile = chooser.getSelectedFile();\n\t\ttry {\n\t\t\tsetImage1(selectedFile.toString());\n\t\t\tcountDiffPixels();\n\t\t\tsetDiffPixelsText();\n\t\t\timage1Label.setText(selectedFile.getName());\n\t\t\tframe.pack();\n\t\t} catch (IOException ex) {\n\t\t\tJOptionPane.showMessageDialog(frame, \"Unable to set image 1:\\n\" + ex);\n\t\t}\n\t}\n\n\t// sets image 1 to be the given image\n\tpublic void setImage1(BufferedImage image) {\n\t\tif (image == null) {\n\t\t\tthrow new NullPointerException();\n\t\t}\n\n\t\timage1 = image;\n\t\tsetPreferredSize(new Dimension(\n\t\t\t\tMath.max(getPreferredSize().width, image.getWidth()),\n\t\t\t\tMath.max(getPreferredSize().height, image.getHeight()))\n\t\t\t\t);\n\t\tif (frame != null) {\n\t\t\tframe.pack();\n\t\t}\n\t\trepaint();\n\t}\n\n\t// loads image 1 from the given filename or URL\n\tpublic void setImage1(String filename) throws IOException {\n\t\timage1name = new File(filename).getName();\n\t\tif (filename.startsWith(\"http\")) {\n\t\t\tsetImage1(ImageIO.read(new URL(filename)));\n\t\t} else {\n\t\t\tsetImage1(ImageIO.read(new File(filename)));\n\t\t}\n\t}\n\n\t// set text to show next to image 1\n\tpublic void setImage1Label(String text) {\n\t\tthis.label1Text = text;\n\t\timage1Label.setText(text);\n\t\tframe.pack();\n\t}\n\n\t// called when \"Set Image 2\" menu item is clicked\n\tpublic void setImage2() {\n\t\tcheckChooser();\n\t\tif (chooser.showSaveDialog(frame) != JFileChooser.APPROVE_OPTION) {\n\t\t\treturn;\n\t\t}\n\n\t\tFile selectedFile = chooser.getSelectedFile();\n\t\ttry {\n\t\t\tsetImage2(selectedFile.toString());\n\t\t\tcountDiffPixels();\n\t\t\tsetDiffPixelsText();\n\t\t\timage2Label.setText(selectedFile.getName());\n\t\t\tframe.pack();\n\t\t} catch (IOException ex) {\n\t\t\tJOptionPane.showMessageDialog(frame, \"Unable to set image 2:\\n\" + ex);\n\t\t}\n\t}\n\n\t// sets image 2 to be the given image\n\tpublic void setImage2(BufferedImage image) {\n\t\tif (image == null) {\n\t\t\tthrow new NullPointerException();\n\t\t}\n\n\t\timage2 = image;\n\t\tsetPreferredSize(new Dimension(\n\t\t\t\tMath.max(getPreferredSize().width, image.getWidth()),\n\t\t\t\tMath.max(getPreferredSize().height, image.getHeight()))\n\t\t\t\t);\n\t\tif (frame != null) {\n\t\t\tframe.pack();\n\t\t}\n\t\trepaint();\n\t}\n\n\t// loads image 2 from the given filename\n\tpublic void setImage2(String filename) throws IOException {\n\t\tif (filename.startsWith(\"http\")) {\n\t\t\tsetImage2(ImageIO.read(new URL(filename)));\n\t\t} else {\n\t\t\tsetImage2(ImageIO.read(new File(filename)));\n\t\t}\n\t}\n\t\n\t// set text to show next to image 2\n\tpublic void setImage2Label(String text) {\n\t\tthis.label2Text = text;\n\t\timage2Label.setText(text);\n\t\tframe.pack();\n\t}\n\n\tprivate void setupComponents() {\n\t\tString title = \"DiffImage\";\n\t\tif (image1name != null) {\n\t\t\ttitle = \"Compare to \" + image1name;\n\t\t}\n\t\tframe = new JFrame(title);\n\t\tframe.setResizable(false);\n\t\tWindowCloseKeyListener.add(frame);\n\n\t\tslider = new JSlider();\n\t\tslider.setPaintLabels(false);\n\t\tslider.setPaintTicks(true);\n\t\tslider.setSnapToTicks(true);\n\t\tslider.setMajorTickSpacing(25);\n\t\tslider.setMinorTickSpacing(5);\n\n\t\tbox = new JCheckBox(\"Highlight diffs in color: \", highlightDiffs);\n\n\t\tcolorButton = new JButton(\"X\");\n\t\tcolorButton.setBackground(highlightColor);\n\t\tcolorButton.setForeground(highlightColor);\n\t\tcolorButton.setPreferredSize(new Dimension(24, 24));\n\n\t\tdiffPixelsLabel = new JLabel(\"(\" + numDiffPixels + \" pixels differ)\");\n\t\tdiffPixelsLabel.setFont(diffPixelsLabel.getFont().deriveFont(Font.BOLD));\n\t\tsetDiffPixelsText();\n\t\timage1Label = new JLabel(label1Text);\n\t\timage2Label = new JLabel(label2Text);\n\t\tsouthPixelLabel = new JLabel(\"(0, 0)\");\n\n\t\tsetupMenuBar();\n\t}\n\n\t// initializes layout of components\n\tprivate void setupLayout() {\n\t\tJPanel southPanel1 = new JPanel();\n\t\tsouthPanel1.setBorder(BorderFactory.createLineBorder(Color.DARK_GRAY));\n\t\tsouthPanel1.add(image1Label);\n\t\tsouthPanel1.add(slider);\n\t\tsouthPanel1.add(image2Label);\n\t\tsouthPanel1.add(Box.createHorizontalStrut(20));\n\n\t\tJPanel southPanel2 = new JPanel();\n\t\tsouthPanel2.setBorder(BorderFactory.createLineBorder(Color.DARK_GRAY));\n\t\tsouthPanel2.add(diffPixelsLabel);\n\t\tsouthPanel2.add(Box.createHorizontalStrut(20));\n\t\tsouthPanel2.add(box);\n\t\tsouthPanel2.add(colorButton);\n\n\t\tJPanel southPanel3 = new JPanel();\n\t\tsouthPanel3.setBorder(BorderFactory.createLineBorder(Color.DARK_GRAY));\n\t\tsouthPanel3.add(southPixelLabel);\n\t\t\n\t\tContainer southPanel = javax.swing.Box.createVerticalBox();\n\t\tsouthPanel.add(southPanel1);\n\t\tsouthPanel.add(southPanel2);\n\t\tsouthPanel.add(southPanel3);\n\n\t\tframe.add(this, BorderLayout.CENTER);\n\t\tframe.add(southPanel, BorderLayout.SOUTH);\n\t}\n\n\t// initializes main menu bar\n\tprivate void setupMenuBar() {\n\t\tsaveAsItem = new JMenuItem(\"Save As...\", 'A');\n\t\tsaveAsItem.setAccelerator(KeyStroke.getKeyStroke(\"ctrl S\"));\n\t\tsetImage1Item = new JMenuItem(\"Set Image 1...\", '1');\n\t\tsetImage1Item.setAccelerator(KeyStroke.getKeyStroke(\"ctrl 1\"));\n\t\tsetImage2Item = new JMenuItem(\"Set Image 2...\", '2');\n\t\tsetImage2Item.setAccelerator(KeyStroke.getKeyStroke(\"ctrl 2\"));\n\n\t\tJMenu file = new JMenu(\"File\");\n\t\tfile.setMnemonic('F');\n\t\tfile.add(setImage1Item);\n\t\tfile.add(setImage2Item);\n\t\tfile.addSeparator();\n\t\tfile.add(saveAsItem);\n\n\t\tJMenuBar bar = new JMenuBar();\n\t\tbar.add(file);\n\n\t\tframe.setJMenuBar(bar);\n\t}\n\n\tprivate class DiffImageActionListener implements ActionListener {\n\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\tObject source = e.getSource();\n\t\t\tif (source == box) {\n\t\t\t\thighlightDiffs = box.isSelected();\n\t\t\t\tslider.setEnabled(!highlightDiffs);\n\t\t\t\trepaint();\n\t\t\t} else if (source == colorButton) {\n\t\t\t\tColor color = JColorChooser.showDialog(frame,\n\t\t\t\t\t\t\"Choose highlight color\", highlightColor);\n\t\t\t\tif (color != null) {\n\t\t\t\t\thighlightColor = color;\n\t\t\t\t\tcolorButton.setBackground(color);\n\t\t\t\t\tcolorButton.setForeground(color);\n\t\t\t\t\trepaint();\n\t\t\t\t}\n\t\t\t} else if (source == saveAsItem) {\n\t\t\t\tsaveAs();\n\t\t\t} else if (source == setImage1Item) {\n\t\t\t\tsetImage1();\n\t\t\t} else if (source == setImage2Item) {\n\t\t\t\tsetImage2();\n\t\t\t}\n\t\t}\n\t}\n\t\n\tprivate class DiffImageChangeListener implements ChangeListener {\n\t\tpublic void stateChanged(ChangeEvent e) {\n\t\t\topacity = slider.getValue();\n\t\t\trepaint();\n\t\t}\n\t}\n\t\n\tprivate class DiffImageMouseListener extends MouseInputAdapter {\n\t\t@Override\n\t\tpublic void mouseMoved(MouseEvent event) {\n\t\t\tint x = event.getX();\n\t\t\tint y = event.getY();\n\t\t\tsouthPixelLabel.setText(\"(\" + x + \", \" + y + \") expected: \"\n\t\t\t\t\t+ getPixelString(image1, x, y) + \" actual: \"\n\t\t\t\t\t+ getPixelString(image2, x, y));\n\t\t}\n\t}\n\t\n\t// adds event listeners to various components\n\tprivate void setupEvents() {\n\t\tDiffImageActionListener alistener = new DiffImageActionListener();\n\t\tbox.addActionListener(alistener);\n\t\tcolorButton.addActionListener(alistener);\n\t\tsaveAsItem.addActionListener(alistener);\n\t\tsetImage1Item.addActionListener(alistener);\n\t\tsetImage2Item.addActionListener(alistener);\n\n\t\tDiffImageChangeListener clistener = new DiffImageChangeListener();\n\t\tslider.addChangeListener(clistener);\n\t\t\n\t\tDiffImageMouseListener mlistener = new DiffImageMouseListener();\n\t\tthis.addMouseMotionListener(mlistener);\n\t}\n\n\t/*\n\t * ...\n\t */\n\tprivate BufferedImage toBufferedImage(Image img) {\n\t\tBufferedImage bimage = new BufferedImage(img.getWidth(this), img.getHeight(this), BufferedImage.TYPE_INT_RGB);\n\t\tbimage.getGraphics().drawImage(img, 0, 0, this);\n\t\treturn bimage;\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/gui/ClipboardUtils.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2016/11/24\n * - initial version\n */\n\npackage stanford.cs106.gui;\n\nimport java.awt.*;\nimport java.awt.datatransfer.*;\nimport java.io.*;\n\n/**\n * Utility methods to set and get the state of the current OS clipboard.\n */\npublic final class ClipboardUtils {\n\tprivate ClipboardUtils() {\n\t\t// empty\n\t}\n\n\t/**\n\t * Sets the clipboard to store the given text.\n\t * Equivalent to a Ctrl+C \"copy\" operation.\n\t */\n\tpublic static void copy(String text) {\n\t\tif (text == null) {\n\t\t\ttext = \"\";\n\t\t}\n\t\tStringSelection selection = new StringSelection(text);\n\t\tClipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();\n\t\tclipboard.setContents(selection, selection);\n\t}\n\n\t/**\n\t * Returns the current contents of the clipboard.\n\t * If the clipboard contains no contents, returns an empty string.\n\t */\n\tpublic static String get() {\n\t\tClipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();\n\t\tTransferable content = clipboard.getContents(/* requestor; not used */ ClipboardUtils.class);\n\t\tString result = \"\";\n\t\tif (content != null) {\n\t\t\ttry {\n\t\t\t\tresult = content.getTransferData(DataFlavor.stringFlavor).toString();\n\t\t\t\tif (result == null) {\n\t\t\t\t\tresult = \"\";\n\t\t\t\t}\n\t\t\t} catch (UnsupportedFlavorException ufe) {\n\t\t\t\t// empty\n\t\t\t} catch (IOException ioe) {\n\t\t\t\t// empty\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\t\n\t/**\n\t * Returns true if the clipboard currently does not contain any text.\n\t */\n\tpublic static boolean isEmpty() {\n\t\tString clip = get();\n\t\treturn clip == null || clip.isEmpty();\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/gui/GuiUtils.java",
    "content": "/*\n * This class contains utility functions related to GUIs.\n *\n * @author Marty Stepp\n * @version 2018/07/08\n * - added ensureMinimumPreferred*\n * @version 2017/10/12\n * - added createLabel overloads with icon\n * @version 2016/11/26\n * - added getAncestor\n * @version 2016/05/26\n * - added createJComboGroupBox, setPreferred* methods\n * @version 2016/05/01\n * - added create*MenuItem methods\n * @version 2014/05/26\n * - added centerWindowWithin method\n * @version 2014/05/22\n * - added methods for creating radio buttons, sliders, etc.\n * @version 2014/06/05\n * - original version\n * \n * This file and its contents are copyright (C) Stanford University and Marty Stepp,\n * licensed under Creative Commons Attribution 2.5 License.  All rights reserved.\n */\n\n\n// TO DO: This file's documentation is insufficient due to time constraints.\n// Improve documentation in future quarters for better style and maintainability.\n\npackage stanford.cs106.gui;\n\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.io.*;\nimport java.util.*;\nimport javax.swing.*;\nimport javax.swing.event.ChangeListener;\nimport javax.swing.filechooser.FileFilter;\nimport acm.program.Program;\nimport stanford.cs106.io.*;\nimport stanford.spl.*;\n\npublic class GuiUtils {\n\tpublic static final String SETTINGS_FILENAME = \"autograder-window-settings.sav\";\n\tprivate static Properties props = new Properties();\n\tprivate static String tempDir = System.getProperty(\"java.io.tmpdir\");\n\t\n\tpublic static void addKeyListenerRecursive(Component component, KeyListener listener) {\n\t\tif (component.isFocusable() || component instanceof Window) {\n\t\t\tcomponent.addKeyListener(listener);\n\t\t}\n\t\tif (component instanceof Container) {\n\t\t\tContainer container = (Container) component;\n\t\t\tfor (Component subcomponent : container.getComponents()) {\n\t\t\t\taddKeyListenerRecursive(subcomponent, listener);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t/**\n\t * Sets up the given program so that its componentResized method will be\n\t * called whenever the window resizes.\n\t * The given program must implement the ResizeListener interface.\n\t * @param program the program to listen to\n\t * @throws ClassCastException if the given program does not implement the\n\t *                            ResizeListener interface.\n\t */\n\tpublic static void addResizeListener(Program program) {\n\t\tif (!(program instanceof ResizeListener)) {\n\t\t\tthrow new ClassCastException(\"Your program class must implement the ResizeListener interface.\");\n\t\t}\n\t\tfinal ResizeListener listener = (ResizeListener) program;\n\t\tprogram.addComponentListener(new ComponentAdapter() {\n\t\t\tpublic void componentResized(ComponentEvent event) {\n\t\t\t\tlistener.componentResized(event);\n\t\t\t}\n\t\t});\n\t}\n\t\n\tpublic static void centerWindow(Window window) {\n\t\tif (window != null) {\n\t\t\tDimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();\n\t\t\twindow.setLocation(screenSize.width/2 - window.getWidth()/2,\n\t\t\t\t\tscreenSize.height/2 - window.getHeight()/2);\n\t\t}\n\t}\n\n\tpublic static void centerWindowWithin(Window window, Component parent) {\n\t\tif (window != null && parent != null) {\n\t\t\twindow.setLocation(\n\t\t\t\t\tparent.getX() + (parent.getWidth() - window.getWidth()) / 2,\n\t\t\t\t\tparent.getY() + (parent.getHeight() - window.getHeight()) / 2);\n\t\t}\n\t}\n\n\tpublic static JButton createButton(String text, char mnemonic, ActionListener listener) {\n\t\treturn createButton(text, null, null, mnemonic, listener, /* container */ null);\n\t}\n\t\n\tpublic static JButton createButton(String text, char mnemonic, ActionListener listener, Container container) {\n\t\treturn createButton(text, null, null, mnemonic, listener, container);\n\t}\n\t\n\tpublic static JButton createButton(String text, String actionCommand, char mnemonic, ActionListener listener) {\n\t\treturn createButton(text, actionCommand, null, mnemonic, listener, /* container */ null);\n\t}\n\t\n\tpublic static JButton createButton(String text, String actionCommand, char mnemonic, ActionListener listener, Container container) {\n\t\treturn createButton(text, actionCommand, null, mnemonic, listener, container);\n\t}\n\t\n\tpublic static JButton createButton(String text, String actionCommand, String icon, char mnemonic, ActionListener listener) {\n\t\treturn createButton(text, actionCommand, icon, mnemonic, listener, /* container */ null);\n\t}\n\t\t\n\tpublic static JButton createButton(String text, String actionCommand, String icon, char mnemonic, ActionListener listener, Container container) {\n\t\tJButton button = new JButton(text);\n\t\tif (actionCommand == null || actionCommand.isEmpty()) {\n\t\t\tactionCommand = text;\n\t\t}\n\t\tbutton.setActionCommand(actionCommand);\n\t\t\n\t\tif (icon != null && icon.length() > 0) {\n\t\t\ttry {\n\t\t\t\tif (ResourceUtils.fileExists(icon)) {\n\t\t\t\t\tbutton.setIcon(new ImageIcon(ResourceUtils.filenameToURL(icon)));\n\t\t\t\t}\n\t\t\t} catch (Exception e) {\n\t\t\t\ttry {\n\t\t\t\t\tbutton.setIcon(new ImageIcon(ResourceUtils.filenameToURL(icon)));\n\t\t\t\t} catch (IORuntimeException ioe) {\n\t\t\t\t\t// empty\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (mnemonic != '\\0' && mnemonic != ' ') {\n\t\t\tbutton.setMnemonic(mnemonic);\n\t\t}\n\t\t\n\t\tif (listener != null) {\n\t\t\tbutton.addActionListener(listener);\n\t\t}\n\t\t\n\t\tif (container != null) {\n\t\t\tcontainer.add(button);\n\t\t}\n\t\t\n\t\treturn button;\n\t}\n\t\n\tpublic static ButtonGroup createButtonGroup(ActionListener listener, String... items) {\n\t\tButtonGroup group = new ButtonGroup();\n\t\tString selected = null;\n\t\tfor (String item : items) {\n\t\t\tJRadioButton jrb = new JRadioButton(item);\n\t\t\tif (selected == null) {\n\t\t\t\tjrb.setSelected(true);\n\t\t\t\tselected = item;\n\t\t\t}\n\t\t\tif (listener != null) {\n\t\t\t\tjrb.addActionListener(listener);\n\t\t\t}\n\t\t\tgroup.add(jrb);\n\t\t}\n\t\treturn group;\n\t}\n\t\n\tpublic static JCheckBox createCheckBox(String actionCommand, ActionListener listener) {\n\t\treturn createCheckBox(actionCommand, /* checked */ false, listener);\n\t}\n\t\n\tpublic static JCheckBox createCheckBox(String text, String actionCommand, char mnemonic, ActionListener listener) {\n\t\treturn createCheckBox(text, actionCommand, mnemonic, /* checked */ false, listener);\n\t}\n\t\n\tpublic static JCheckBox createCheckBox(String actionCommand, boolean checked, ActionListener listener) {\n\t\tchar mnemonic = (actionCommand != null && !actionCommand.isEmpty() ? actionCommand.charAt(0) : '\\0');\n\t\treturn createCheckBox(actionCommand, mnemonic, checked, listener);\n\t}\n\t\n\tpublic static JCheckBox createCheckBox(String actionCommand, char mnemonic, boolean checked) {\n\t\treturn createCheckBox(actionCommand, mnemonic, checked, /* listener */ null);\n\t}\n\t\n\tpublic static JCheckBox createCheckBox(String actionCommand, char mnemonic, boolean checked, ActionListener listener) {\n\t\treturn createCheckBox(actionCommand, mnemonic, checked, listener, /* container */ null);\n\t}\n\t\n\tpublic static JCheckBox createCheckBox(String text, String actionCommand, char mnemonic, boolean checked, ActionListener listener) {\n\t\treturn createCheckBox(text, actionCommand, mnemonic, checked, listener, /* container */ null);\n\t}\n\t\n\tpublic static JCheckBox createCheckBox(String actionCommand, char mnemonic, ActionListener listener, Container container) {\n\t\treturn createCheckBox(actionCommand, mnemonic, /* checked */ false, listener, container);\n\t}\n\t\n\tpublic static JCheckBox createCheckBox(String actionCommand, char mnemonic, boolean checked, ActionListener listener, Container container) {\n\t\treturn createCheckBox(/* text */ actionCommand, actionCommand, mnemonic, checked, listener, container);\n\t}\n\t\n\tpublic static JCheckBox createCheckBox(String text, String actionCommand, char mnemonic, boolean checked, ActionListener listener, Container container) {\n\t\tJCheckBox box = new JCheckBox(actionCommand);\n\t\tbox.setSelected(checked);\n\t\tif (mnemonic != '\\0' && mnemonic != ' ') {\n\t\t\tbox.setMnemonic(mnemonic);\n\t\t}\n\t\tif (listener != null) {\n\t\t\tbox.addActionListener(listener);\n\t\t}\n\t\tif (container != null) {\n\t\t\tcontainer.add(box);\n\t\t}\n\t\treturn box;\n\t}\n\t\n\t@SuppressWarnings({ \"rawtypes\", \"unchecked\" })\n\tpublic static JComboBox createComboBox(String actionCommand, ActionListener listener, String... items) {\n\t\tJComboBox box = new JComboBox(items);\n\t\tbox.setEditable(false);\n\t\tif (listener != null) {\n\t\t\tbox.addActionListener(listener);\n\t\t\tbox.setActionCommand(actionCommand);\n\t\t}\n\t\treturn box;\n\t}\n\t\n\tpublic static JComboGroupBox createComboGroupBox(String actionCommand, ActionListener listener, String... items) {\n\t\tJComboGroupBox box = new JComboGroupBox();\n\t\tfor (String item : items) {\n\t\t\tif (item.startsWith(\"GROUP: \")) {\n\t\t\t\tbox.addDelimiter(item.substring(7));\n\t\t\t} else if (item.startsWith(\"* \")) {\n\t\t\t\tbox.addDelimiter(item.substring(2));\n\t\t\t} else if (item.startsWith(\"- \")) {\n\t\t\t\tbox.addDelimiter(item.substring(2));\n\t\t\t} else {\n\t\t\t\tbox.addItem(item);\n\t\t\t}\n\t\t}\n\t\tbox.setEditable(false);\n\t\tif (listener != null) {\n\t\t\tbox.addActionListener(listener);\n\t\t\tbox.setActionCommand(actionCommand);\n\t\t}\n\t\treturn box;\n\t}\n\t\n\tpublic static JMenu createMenu(String text, JMenuBar bar) {\n\t\treturn createMenu(text, /* mnemonic */ text.charAt(0), bar);\n\t}\n\t\n\tpublic static JMenu createMenu(String text, char mnemonic, JMenuBar bar) {\n\t\tJMenu menu = new JMenu(text);\n\t\tif (mnemonic != '\\0') {\n\t\t\tmenu.setMnemonic(mnemonic);\n\t\t}\n\t\tif (bar != null) {\n\t\t\tbar.add(menu);\n\t\t}\n\t\treturn menu;\n\t}\n\t\n\tpublic static JMenuItem createMenuItem(String text, ActionListener listener, JMenu menu) {\n\t\treturn createMenuItem(text, /* mnemonic */ text.charAt(0), listener, menu);\n\t}\n\t\n\tpublic static JMenuItem createMenuItem(String text, char mnemonic, ActionListener listener, JMenu menu) {\n\t\tJMenuItem item = new JMenuItem(text);\n\t\tif (mnemonic != '\\0') {\n\t\t\titem.setMnemonic(mnemonic);\n\t\t}\n\t\tif (listener != null) {\n\t\t\titem.addActionListener(listener);\n\t\t}\n\t\tif (menu != null) {\n\t\t\tmenu.add(item);\n\t\t}\n\t\treturn item;\n\t}\n\t\n\tpublic static JCheckBoxMenuItem createCheckBoxMenuItem(String text, ActionListener listener, JMenu menu) {\n\t\treturn createCheckBoxMenuItem(text, /* mnemonic */ text.charAt(0), /* checked */ false, listener, menu);\n\t}\n\t\n\tpublic static JCheckBoxMenuItem createCheckBoxMenuItem(String text, boolean checked, ActionListener listener, JMenu menu) {\n\t\treturn createCheckBoxMenuItem(text, /* mnemonic */ text.charAt(0), checked, listener, menu);\n\t}\n\t\n\tpublic static JCheckBoxMenuItem createCheckBoxMenuItem(String text, char mnemonic, boolean checked, ActionListener listener, JMenu menu) {\n\t\tJCheckBoxMenuItem item = new JCheckBoxMenuItem(text);\n\t\tif (mnemonic != '\\0') {\n\t\t\titem.setMnemonic(mnemonic);\n\t\t}\n\t\titem.setSelected(checked);\n\t\tif (listener != null) {\n\t\t\titem.addActionListener(listener);\n\t\t}\n\t\tif (menu != null) {\n\t\t\tmenu.add(item);\n\t\t}\n\t\treturn item;\n\t}\n\t\n\t/*\n\t * adds a JPanel to the layout\n\t */\n\tpublic static JPanel createPanel(Component... components) {\n\t\treturn createPanel(new FlowLayout(FlowLayout.CENTER), components);\n\t}\n\t\n\t/*\n\t * adds a JPanel to the layout\n\t */\n\tpublic static JPanel createPanel(LayoutManager layout, Component... components) {\n\t\tJPanel panel = new JPanel(layout);\n\t\tfor (Component comp : components) {\n\t\t\tpanel.add(comp);\n\t\t}\n\t\treturn panel;\n\t}\n\t\n\n\t/* Helper method to create a JRadioButton with the given properties. */\n\tpublic static JRadioButton createRadioButton(String text, char mnemonic,\n\t\t\tboolean selected, ButtonGroup group, ActionListener listen,\n\t\t\tContainer panel) {\n\t\tJRadioButton button = new JRadioButton(text, selected);\n\t\tif (mnemonic != '\\0') {\n\t\t\tbutton.setMnemonic(mnemonic);\n\t\t}\n\t\tbutton.addActionListener(listen);\n\t\tif (panel != null) {\n\t\t\tpanel.add(button);\n\t\t}\n\t\tif (group != null) {\n\t\t\tgroup.add(button);\n\t\t}\n\t\treturn button;\n\t}\n\t\n\t/* Helper method to create a JSlider with the given properties. */\n\tpublic static JSlider createSlider(int min, int max, int initial,\n\t\t\tint majorTick, int minorTick, ChangeListener listen, Container panel) {\n\t\tJSlider slider = new JSlider(min, max, initial);\n\t\tslider.setMajorTickSpacing(majorTick);\n\t\tslider.setMinorTickSpacing(minorTick);\n\t\tslider.setSnapToTicks(true);\n\t\tslider.setPaintTicks(true);\n\t\t// slider.setPaintLabels(true);\n\t\tslider.addChangeListener(listen);\n\t\tif (panel != null) {\n\t\t\tpanel.add(slider);\n\t\t}\n\t\treturn slider;\n\t}\n\t\n\tpublic static void ensureMinimumPreferredHeight(JComponent comp, int height) {\n\t\tDimension size = comp.getPreferredSize();\n\t\tsize.height = Math.max(size.height, height);\n\t\tcomp.setPreferredSize(size);\n\t}\n\t\n\tpublic static void ensureMinimumPreferredSize(JComponent comp, int width, int height) {\n\t\tDimension size = comp.getPreferredSize();\n\t\tsize.width  = Math.max(size.width,  width);\n\t\tsize.height = Math.max(size.height, height);\n\t\tcomp.setPreferredSize(size);\n\t}\n\t\n\tpublic static void ensureMinimumPreferredWidth(JComponent comp, int width) {\n\t\tDimension size = comp.getPreferredSize();\n\t\tsize.width = Math.max(size.width, width);\n\t\tcomp.setPreferredSize(size);\n\t}\n\t\n\tpublic static FileFilter getExtensionFileFilter(String description, String... extensions) {\n\t\tExtensionFileFilter filter = new ExtensionFileFilter(extensions);\n\t\tfilter.setDescription(description);\n\t\treturn filter;\n\t}\n\t\n\tpublic static JLabel createLabel(String text, String icon) {\n\t\treturn createLabel(text, icon, /* width */ 0, /* rightAligned */ false);\n\t}\n\t\n\tpublic static JLabel createLabel(String text, int width) {\n\t\treturn createLabel(text, /* icon */ null, width, /* rightAligned */ false);\n\t}\n\t\n\tpublic static JLabel createLabel(String text, int width, boolean rightAligned) {\n\t\treturn createLabel(text, /* icon */ null, width, rightAligned);\n\t}\n\t\n\tpublic static JLabel createLabel(String text, String icon, int width) {\n\t\treturn createLabel(text, icon, width, /* rightAligned */ false);\n\t}\n\t\n\tpublic static JLabel createLabel(String text, String icon, int width, boolean rightAligned) {\n\t\tJLabel label = new JLabel(text);\n\t\tDimension size = label.getPreferredSize();\n\t\tif (width > 0 && size.width < width) {\n\t\t\tsize.width = width;\n\t\t}\n\t\tif (rightAligned) {\n\t\t\tlabel.setHorizontalAlignment(SwingConstants.RIGHT);\n\t\t}\n\t\tif (width > 0) {\n\t\t\tlabel.setPreferredSize(size);\n\t\t}\n\t\tif (icon != null && icon.length() > 0) {\n\t\t\ttry {\n\t\t\t\tif (ResourceUtils.fileExists(icon)) {\n\t\t\t\t\tlabel.setIcon(new ImageIcon(ResourceUtils.filenameToURL(icon)));\n\t\t\t\t}\n\t\t\t} catch (Exception e) {\n\t\t\t\ttry {\n\t\t\t\t\tlabel.setIcon(new ImageIcon(ResourceUtils.filenameToURL(icon)));\n\t\t\t\t} catch (IORuntimeException ioe) {\n\t\t\t\t\t// empty\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn label;\n\t}\n\t\n\t/**\n\t * Looks upward at parent containers of the given component until it finds one of the given type or\n\t * any subclass of the given type, and returns it.  If none found, returns null.\n\t */\n\t@SuppressWarnings(\"unchecked\")\n\tpublic static <C extends Component> C getAncestor(Component comp, Class<C> type) {\n\t\tif (comp == null) {\n\t\t\treturn null;\n\t\t}\n\t\twhile (true) {\n\t\t\tcomp = comp.getParent();\n\t\t\tif (comp == null) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (type.isAssignableFrom(comp.getClass())) {\n\t\t\t\treturn (C) comp;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\t\n\t/**\n\t * Returns first found descendent of given type within the given container; null if not found.\n\t */\n\tpublic static <JC extends JComponent> JC getDescendent(Container container, Class<JC> type) {\n\t\tSet<JC> descendents = getDescendents(container, type);\n\t\tif (descendents.isEmpty()) {\n\t\t\treturn null;\n\t\t} else {\n\t\t\tfor (JC jc : descendents) {\n\t\t\t\treturn jc;\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t}\n\t\n\t@SuppressWarnings(\"unchecked\")\n\tpublic static <JC extends JComponent> Set<JC> getDescendents(Container container, Class<JC> type) {\n\t\tif (container == null) {\n\t\t\treturn null;\n\t\t}\n\t\tSet<JC> results = new LinkedHashSet<JC>();\n\t\tfor (Component component : container.getComponents()) {\n\t\t\tif (component instanceof JComponent) {\n\t\t\t\tif (type == null || type == component.getClass() || type.isAssignableFrom(component.getClass())) {\n\t\t\t\t\tresults.add((JC) component);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (component instanceof Container) {\n\t\t\t\tSet<JC> sub = getDescendents((Container) component, type);\n\t\t\t\tresults.addAll(sub);\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (container instanceof Program && results.isEmpty()) {\n\t\t\tSet<JC> sub = getDescendents(((Program) container).getWindow(), type);\n\t\t\tresults.addAll(sub);\n\t\t}\n\t\treturn results;\n\t}\n\t\n\tpublic static void errorDialog(String text) {\n\t\terrorDialog(/* comp */ null, text);\n\t}\n\t\n\tpublic static void errorDialog(Component comp, String text) {\n\t\tJOptionPane.showMessageDialog(comp, text, \"Error\", JOptionPane.ERROR_MESSAGE);\n\t}\n\t\t\n\tpublic static void errorDialog(Component comp, String text, Throwable th) {\n\t\tJOptionPane.showMessageDialog(comp, text + \": \" + th.getMessage(), \"Error\", JOptionPane.ERROR_MESSAGE);\n\t}\n\t\t\n\tpublic static void errorDialog(Throwable th) {\n\t\terrorDialog(/* comp */ null, th);\n\t}\n\t\n\tpublic static void errorDialog(Component comp, Throwable th) {\n\t\tJOptionPane.showMessageDialog(comp, th.getMessage(), \"Error\", JOptionPane.ERROR_MESSAGE);\n\t}\n\t\t\n\tpublic static Icon extractOptionPaneIcon(String text) {\n\t\tJOptionPane opt = new JOptionPane(\"message\", JOptionPane.INFORMATION_MESSAGE);\n\t\treturn extractHelper(opt, text);\n\t}\n\t\n\tpublic static void forgetWindowLocation(final Frame window) {\n\t\tfor (ComponentListener listener : window.getComponentListeners()) {\n\t\t\tif (listener instanceof WindowSettingsComponentAdapter) {\n\t\t\t\twindow.removeComponentListener(listener);\n\t\t\t\tString title = window.getTitle();\n\t\t\t\tprops.remove(title + \"-x\");\n\t\t\t\tprops.remove(title + \"-y\");\n\t\t\t\tprops.remove(title + \"-w\");\n\t\t\t\tprops.remove(title + \"-h\");\n\t\t\t}\n\t\t}\n\t}\n\t\n\tpublic static void growFont(JComponent button) {\n\t\tgrowFont(button, 1);\n\t}\n\t\n\tpublic static void growFont(JComponent button, int amount) {\n\t\tFont font = button.getFont();\n\t\tfont = font.deriveFont((float) (font.getSize() + amount));\n\t\tbutton.setFont(font);\n\t}\n\t\n\tpublic static String htmlLabelText(String text) {\n\t\treturn htmlLabelText(text, /* props */ Collections.emptyMap());\n\t}\n\t\n\tprivate static String toPxUnit(Object ostr) {\n\t\tString str = String.valueOf(ostr);\n\t\tif (!str.endsWith(\"px\") && !str.endsWith(\"pt\") && !str.endsWith(\"em\")) {\n\t\t\tstr += \"px\";\n\t\t}\n\t\treturn str;\n\t}\n\t\n\tpublic static String htmlLabelText(String text, Map<?, ?> props) {\n\t\tString bodyStyle = \"\";\n\t\tif (props.containsKey(\"width\")) {\n\t\t\tObject width = toPxUnit(props.get(\"width\"));\n\t\t\tbodyStyle += \" width: \" + width + \";\";\n\t\t}\n\t\tif (props.containsKey(\"max-width\")) {\n\t\t\tObject maxWidth = toPxUnit(props.get(\"max-width\"));\n\t\t\tbodyStyle += \" max-width: \" + maxWidth + \";\";\n\t\t}\n\t\tif (props.containsKey(\"height\")) {\n\t\t\tObject height = toPxUnit(props.get(\"height\"));\n\t\t\tbodyStyle += \" height: \" + height + \";\";\n\t\t}\n\t\tif (props.containsKey(\"max-height\")) {\n\t\t\tObject maxHeight = toPxUnit(props.get(\"max-height\"));\n\t\t\tbodyStyle += \" max-height: \" + maxHeight + \";\";\n\t\t}\n\t\tif (props.containsKey(\"monospace\") || props.containsKey(\"monospaced\")) {\n\t\t\tbodyStyle += \" font-family: monospaced;\";\n\t\t} else if (props.containsKey(\"font-family\")) {\n\t\t\tObject fontFamily = props.get(\"font-family\");\n\t\t\tbodyStyle += \" font-family: \\\"\" + fontFamily + \"\\\";\";\n\t\t} else if (props.containsKey(\"font\")) {\n\t\t\tFont font = (Font) props.get(\"font\");\n\t\t\tbodyStyle += \" font-family: \\\"\" + font.getName() + \"\\\";\";\n\t\t\tbodyStyle += \" font-size: \" + font.getSize() + \"pt;\";\n\t\t\tif (font.isBold()) {\n\t\t\t\tbodyStyle += \" font-weight: bold;\";\n\t\t\t}\n\t\t\tif (font.isItalic()) {\n\t\t\t\tbodyStyle += \" font-style: italic;\";\n\t\t\t}\n\t\t}\n\t\tString htmlText = \"<html><body style='\" + bodyStyle.trim() + \"'>\";   // close body tag\n\t\t\n\t\tString before = \"\";\n\t\tString after = \"\";\n\t\tif (props.containsKey(\"font-color\")) {\n\t\t\tObject color = props.get(\"font-color\");\n\t\t\tbefore += \"<font color=\\\"\" + color + \"\\\">\";\n\t\t\tafter = \"</font>\" + after;\n\t\t}\n\t\tif (props.containsKey(\"center\")) {\n\t\t\tbefore += \"<center>\";\n\t\t\tafter = \"</center>\" + after;\n\t\t}\n\t\thtmlText += before + text + after;\n\t\t\n\t\thtmlText += \"</body></html>\";\n\t\treturn htmlText;\n\t}\n\t\n\tpublic static void loadWindowLocation(Frame window) {\n\t\tif (window == null) {\n\t\t\treturn;\n\t\t}\n\t\tsynchronized (props) {\n\t\t\ttry {\n\t\t\t\tString settingsFile = tempDir + \"/\" + SETTINGS_FILENAME;\n\t\t\t\tif (new File(settingsFile).exists()) {\n\t\t\t\t\tInputStream input = new FileInputStream(settingsFile);\n\t\t\t\t\tprops.load(input);\n\t\t\t\t}\n\t\t\t} catch (IOException ioe) {\n\t\t\t\tSystem.err.println(\"I/O error trying to load window settings: \" + ioe);\n\t\t\t} catch (Exception e) {\n\t\t\t\tSystem.err.println(\"Error trying to save window settings: \" + e);\n\t\t\t}\n\t\t}\n\t\tString title = window.getTitle(); \n\t\tif (props.containsKey(title + \"-x\") && props.containsKey(title + \"-y\")) {\n\t\t\tint x = Integer.parseInt(props.getProperty(title + \"-x\"));\n\t\t\tint y = Integer.parseInt(props.getProperty(title + \"-y\"));\n\t\t\twindow.setLocation(x, y);\n\t\t\t// System.out.println(\"Loaded location of window \\\"\" + window.getTitle() + \"\\\".\");\n\t\t}\n\t\tif (props.containsKey(title + \"-w\") && props.containsKey(title + \"-h\")) {\n\t\t\tint w = Integer.parseInt(props.getProperty(title + \"-w\"));\n\t\t\tint h = Integer.parseInt(props.getProperty(title + \"-h\"));\n\t\t\twindow.setSize(w, h);\n\t\t\t// System.out.println(\"Loaded size of window \\\"\" + window.getTitle() + \"\\\".\");\n\t\t}\n\t}\n\t\n\tpublic static void pad(JComponent component, int w, int h) {\n\t\tDimension size = component.getPreferredSize();\n\t\tsize.width += w;\n\t\tsize.height += h;\n\t\tcomponent.setPreferredSize(size);\n\t}\n\t\n\tpublic static void printComponentHierarchy(Component comp) {\n\t\tprintComponentHierarchy(comp, /* indent */ \"\");\n\t}\n\t\n\tprivate static void printComponentHierarchy(Component comp, String indent) {\n\t\tif (comp == null) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tDimension size = comp.getSize();\n\t\tDimension prefSize = comp.getPreferredSize();\n\t\tSystem.out.println(indent\n\t\t\t\t+ comp.getClass().getName()\n\t\t\t\t+ \"@\" + comp.hashCode()\n\t\t\t\t+ \", size=\" + size.width + \"x\" + size.height\n\t\t\t\t+ \", psize=\" + prefSize.width + \"x\" + prefSize.height\n\t\t\t\t+ \", vis?\" + comp.isVisible()\n\t\t\t\t+ \", show?\" + comp.isShowing()\n\t\t);\n\t\tif (comp instanceof Container) {\n\t\t\tContainer cont = (Container) comp;\n\t\t\tfor (int i = 0; i < cont.getComponentCount(); i++) {\n\t\t\t\tprintComponentHierarchy(cont.getComponent(i), indent + \"  \");\n\t\t\t}\n\t\t}\n\t}\n\t\n\tpublic static void rememberWindowLocation(final Frame window) {\n\t\tif (window != null) {\n\t\t\twindow.addComponentListener(new WindowSettingsComponentAdapter());\n\t\t\tloadWindowLocation(window);\n\t\t}\n\t}\n\t\n\tpublic static void setSystemLookAndFeel() {\n\t\ttry {\n\t\t\tString lnf = UIManager.getSystemLookAndFeelClassName();\n\t\t\tif (lnf == null || lnf.contains(\"MetalLookAndFeel\")) {\n\t\t\t\t// workaround because system L&F seems to fail on Linux boxes\n\t\t\t\tUIManager.setLookAndFeel(\"com.sun.java.swing.plaf.gtk.GTKLookAndFeel\");\n\t\t\t} else {\n\t\t\t\tUIManager.setLookAndFeel(lnf);\n\t\t\t}\n\t\t\t\n\t\t\tGSlider.setSystemLookAndFeelProperties();\n\t\t\tGTable.setSystemLookAndFeelProperties();\n\t\t\tSystem.setProperty(\"apple.laf.useScreenMenuBar\", \"true\");\n\t\t} catch (Exception e) {\n\t\t\t// empty\n\t\t}\n\t}\n\t\n\tpublic static void setPreferredWidth(JComponent comp, int width) {\n\t\tDimension size = comp.getPreferredSize();\n\t\tsize.width = width;\n\t\tcomp.setPreferredSize(size);\n\t}\n\t\n\tpublic static void setPreferredHeight(JComponent comp, int height) {\n\t\tDimension size = comp.getPreferredSize();\n\t\tsize.height = height;\n\t\tcomp.setPreferredSize(size);\n\t}\n\t\n\tpublic static void shiftPreferredSize(JComponent comp, int dw, int dh) {\n\t\tDimension size = comp.getPreferredSize();\n\t\tsize.width += dw;\n\t\tsize.height += dh;\n\t\tcomp.setPreferredSize(size);\n\t}\n\t\n\tpublic static void shrinkFont(JComponent button) {\n\t\tshrinkFont(button, 1);\n\t}\n\t\n\tpublic static void shrinkFont(JComponent button, int amount) {\n\t\tFont font = button.getFont();\n\t\tfont = font.deriveFont((float) (font.getSize() - amount));\n\t\tbutton.setFont(font);\n\t}\n\n\tpublic static void heighten(JComponent component, int px) {\n\t\tpad(component, 0, px);\n\t}\n\t\n\tpublic static void widen(JComponent component, int px) {\n\t\tpad(component, px, 0);\n\t}\n\t\n\tprivate GuiUtils() {\n\t\t// empty\n\t}\n\t\n\tprivate static Icon extractHelper(Component comp, String text) {\n\t\tif (comp instanceof JButton) {\n\t\t\tJButton button = (JButton) comp;\n\t\t\tString buttonText = String.valueOf(button.getText());\n\t\t\tif (buttonText.toUpperCase().contains(text.toUpperCase())) {\n\t\t\t\treturn button.getIcon();\n\t\t\t}\n\t\t} else if (comp instanceof JLabel) {\n\t\t\tJLabel label = (JLabel) comp;\n\t\t\tString labelText = String.valueOf(label.getText());\n\t\t\tif (labelText.toUpperCase().contains(text.toUpperCase())) {\n\t\t\t\treturn label.getIcon();\n\t\t\t}\n\t\t} else if (comp instanceof Container) {\n\t\t\tfor (Component subcomp : ((Container) comp).getComponents()) {\n\t\t\t\tIcon icon = extractHelper(subcomp, text);\n\t\t\t\tif (icon != null) {\n\t\t\t\t\treturn icon;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\t\n\tprivate static class WindowSettingsComponentAdapter extends ComponentAdapter {\n\t\tpublic void componentMoved(ComponentEvent event) {\n\t\t\tComponent component = event.getComponent();\n\t\t\tif (!(component instanceof Frame)) return;\n\t\t\tFrame window = (Frame) component; \n\t\t\tint x = window.getX();\n\t\t\tint y = window.getY();\n\t\t\tint w = window.getWidth();\n\t\t\tint h = window.getHeight();\n\t\t\tsynchronized (props) {\n\t\t\t\tprops.setProperty(window.getTitle() + \"-x\", String.valueOf(x));\n\t\t\t\tprops.setProperty(window.getTitle() + \"-y\", String.valueOf(y));\n\t\t\t\tprops.setProperty(window.getTitle() + \"-w\", String.valueOf(w));\n\t\t\t\tprops.setProperty(window.getTitle() + \"-h\", String.valueOf(h));\n\t\t\t\ttry {\n\t\t\t\t\t// String tempDir = System.getProperty(\"user.dir\");\n\t\t\t\t\tString settingsFile = tempDir + \"/\" + SETTINGS_FILENAME;\n\t\t\t\t\tOutputStream out = new FileOutputStream(settingsFile);\n\t\t\t\t\tprops.store(out, \"Stanford Autograder window location settings\");\n\t\t\t\t\tout.close();\n\t\t\t\t\t// System.out.println(\"Saved size/location of window \\\"\" + window.getTitle() + \"\\\".\");\n\t\t\t\t} catch (IOException ioe) {\n\t\t\t\t\tSystem.err.println(\"I/O error trying to save window settings: \" + ioe);\n\t\t\t\t} catch (Exception e) {\n\t\t\t\t\tSystem.err.println(\"Error trying to save window settings: \" + e);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/gui/JComboGroupBox.java",
    "content": "/*\n * @version 2016/05/26\n */\n\npackage stanford.cs106.gui;\n\nimport java.awt.*;\nimport javax.swing.*;\n\n/**\n * A JComboBox that allows group tags, like the HTML optgroup tag.\n */\n@SuppressWarnings({ \"unchecked\", \"rawtypes\" })\npublic class JComboGroupBox extends JComboBox {\n\n\tpublic JComboGroupBox() {\n\t\tsetModel(new ExtendedComboBoxModel());\n\t\tsetRenderer(new ExtendedListCellRenderer());\n\t}\n\n\tpublic void addDelimiter(String text) {\n\t\tthis.addItem(new Delimiter(text));\n\t}\n\t\n\tpublic void addItem(String item) {\n\t\tsuper.addItem(item);\n\t}\n\t\n\tpublic String getItemText(int index) {\n\t\treturn getItemAt(index).toString();\n\t}\n\t\n\tpublic boolean isDelimiter(int index) {\n\t\treturn getItemAt(index) instanceof Delimiter;\n\t}\n\n\tprivate static class ExtendedComboBoxModel extends DefaultComboBoxModel {\n\t\t@Override\n\t\tpublic void setSelectedItem(Object anObject) {\n\t\t\tif (!(anObject instanceof Delimiter)) {\n\t\t\t\tsuper.setSelectedItem(anObject);\n\t\t\t} else {\n\t\t\t\tint index = getIndexOf(anObject);\n\t\t\t\tif (index < getSize()) {\n\t\t\t\t\tsetSelectedItem(getElementAt(index + 1));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tprivate static class ExtendedListCellRenderer extends DefaultListCellRenderer {\n\n\t\t@Override\n\t\tpublic Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected,\n\t\t\t\tboolean cellHasFocus) {\n\t\t\tif (!(value instanceof Delimiter)) {\n\t\t\t\treturn super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);\n\t\t\t} else {\n\t\t\t\tJLabel label = new JLabel(value.toString());\n\t\t\t\tFont f = label.getFont();\n\t\t\t\tlabel.setFont(f.deriveFont(f.getStyle() | Font.BOLD | Font.ITALIC));\n\t\t\t\tDimension size = label.getPreferredSize();\n\t\t\t\tsize.height += 5;\n\t\t\t\tlabel.setPreferredSize(size);\n\t\t\t\treturn label;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static class Delimiter {\n\t\tprivate String text;\n\n\t\tprivate Delimiter(String text) {\n\t\t\tthis.text = text;\n\t\t}\n\n\t\t@Override\n\t\tpublic String toString() {\n\t\t\treturn text.toString();\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/gui/JFileChooserUtils.java",
    "content": "/*\n * @version 2017/09/28\n * - initial version; most of code came from GFileChooser_showOpenDialog.java\n */\n\npackage stanford.cs106.gui;\n\nimport java.awt.*;\nimport java.io.*;\nimport javax.swing.*;\nimport javax.swing.filechooser.FileFilter;\n\npublic final class JFileChooserUtils {\n\tprivate static final int MAX_PREF_WIDTH = 700;\n\t\n\tprivate JFileChooserUtils() {\n\t\t// empty\n\t}\n\t\n\t/**\n\t * Creates a new file chooser pointed to the given current directory,\n\t * set to filter its display to show only the files in the given filter.\n\t * @param currentDir directory to start in\n\t * @param fileFilter e.g. \"*.jpg,*.txt\"\n\t * @return the created file chooser object\n\t */\n\tpublic static JFileChooser createChooser(String currentDir, String fileFilter) {\n\t\tJFileChooser chooser = new JFileChooser(currentDir);\n\t\t\n\t\t// constrain preferred size of chooser\n\t\tDimension prefSize = chooser.getPreferredSize();\n\t\tif (prefSize.width > MAX_PREF_WIDTH) {\n\t\t\tprefSize.width = MAX_PREF_WIDTH;\n\t\t\tchooser.setPreferredSize(prefSize);\n\t\t}\n\t\t\n\t\tif (fileFilter != null && !fileFilter.isEmpty()) {\n\t\t\tchooser.setFileFilter(new GFileChooserFileFilter(fileFilter));\n\t\t}\n\t\t\n\t\treturn chooser;\n\t}\n\n\tpublic static class GFileChooserFileFilter extends FileFilter {\n\t\tprivate String fileFilter;\n\t\t\n\t\tpublic GFileChooserFileFilter(String fileFilter) {\n\t\t\tthis.fileFilter = fileFilter;\n\t\t}\n\t\t\n\t\t@Override\n\t\tpublic boolean accept(File f) {\n\t\t\tString[] filters = fileFilter.split(\"[ ]*,[ ]*\");\n\t\t\tfor (String filter : filters) {\n\t\t\t\tString filterRegex = \".*\" + filter.replace(\".\", \"\\\\.\").replace(\"*\", \".*\") + \".*\";\n\t\t\t\tif (f.isDirectory() || f.getName().matches(filterRegex)) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\t@Override\n\t\tpublic String getDescription() {\n\t\t\treturn fileFilter + \" files\";\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/gui/ListOptionPane.java",
    "content": "package stanford.cs106.gui;\n\nimport javax.swing.JFrame;\n\nimport acm.gui.*;\n\n/**\n * This class is here only for backward compatibility.\n * @author stepp\n *\n */\npublic class ListOptionPane extends JListOptionPane {\n\tpublic ListOptionPane(JFrame frame, Iterable<String> items) {\n\t\tsuper(frame, items);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/gui/ResizeListener.java",
    "content": "/*\n * CS 106A\n *\n * An interface for simpler listening to resize events.\n *\n * Author : Marty Stepp\n * Version: Tue 2014/06/05\n * \n * This file and its contents are copyright (C) Stanford University and Marty Stepp,\n * licensed under Creative Commons Attribution 2.5 License.  All rights reserved.\n */\n\npackage stanford.cs106.gui;\n\nimport java.awt.event.*;\n\npublic interface ResizeListener {\n\tpublic void componentResized(ComponentEvent event);\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/gui/WindowCloseKeyListener.java",
    "content": "package stanford.cs106.gui;\n\nimport java.awt.*;\nimport java.awt.event.*;\n\n/**\n * Makes a given window close itself when you press Escape or Ctrl-W.\n */\npublic class WindowCloseKeyListener implements KeyListener {\n\tpublic static void add(Window window) {\n\t\tnew WindowCloseKeyListener(window);\n\t}\n\t\n\tprivate Window window;\n\t\n\tpublic WindowCloseKeyListener(Window window) {\n\t\tthis.window = window;\n\t\tGuiUtils.addKeyListenerRecursive(window, this);\n\t}\n\t\n\tpublic void keyPressed(KeyEvent e) {\n\t\tboolean ctrl = e.isControlDown() || e.isMetaDown();\n\t\tif (e.getKeyCode() == KeyEvent.VK_ESCAPE || \n\t\t\t\t(ctrl && e.getKeyCode() == KeyEvent.VK_W)) {\n\t\t\twindow.setVisible(false);\n\t\t\t// window.dispose();\n\t\t}\n\t}\n\t\n\tpublic void keyReleased(KeyEvent e) {\n\t\t// empty\n\t}\n\t\n\tpublic void keyTyped(KeyEvent e) {\n\t\t// empty\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/io/ExtensionFileFilter.java",
    "content": "/*\r\n * @version 2017/10/22\r\n * - normalize various formats like \"txt\", \".txt\", \"*.txt\"\r\n * @version 2016/11/03\r\n * - made it work for both java.io.FileFilter and javax.swing.filechooser.FileFilter (stupid)\r\n */\r\n\r\npackage stanford.cs106.io;\r\n\r\nimport java.io.File;\r\n\r\n/*\r\n * ...\r\n */\r\npublic class ExtensionFileFilter\r\n\t\textends javax.swing.filechooser.FileFilter\r\n\t\timplements java.io.FileFilter {\r\n\tprivate String description;\r\n\tprivate String[] extensions;\r\n\t\r\n\t/**\r\n\t * Filters to keep only the given extensions (don't include the dot in front of each).\r\n\t */\r\n\tpublic ExtensionFileFilter(String... extensions) {\r\n\t\tthis.extensions = extensions;\r\n\t\t\r\n\t\t// ensure that extensions are in correct format;\r\n\t\t// should be \"txt\", not \"*.txt\"\r\n\t\tfor (int i = 0; i < this.extensions.length; i++) {\r\n\t\t\tString ext = String.valueOf(this.extensions[i]).trim();\r\n\t\t\tif (ext.startsWith(\"*\")) {\r\n\t\t\t\text = ext.substring(1);\r\n\t\t\t}\r\n\t\t\tif (!ext.startsWith(\".\")) {\r\n\t\t\t\text = \".\" + ext;\r\n\t\t\t}\r\n\t\t\tthis.extensions[i] = ext;\r\n\t\t}\r\n\t\t\r\n\t\tif (extensions == null || extensions.length == 0) {\r\n\t\t\tdescription = \"Files\";\r\n\t\t} else {\r\n\t\t\tdescription = extensions[0] + \" files\";\r\n\t\t}\r\n\t}\r\n\t\r\n\t/*\r\n\t * ...\r\n\t */\r\n\tpublic boolean accept(File file) {\r\n\t\tif (file.isDirectory()) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tString filename = file.getName().toLowerCase();\r\n\t\tfor (String extension : extensions) {\r\n\t\t\tif (filename.endsWith(extension.toLowerCase())) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String getDescription() {\r\n\t\treturn description;\r\n\t}\r\n\r\n\tpublic void setDescription(String description) {\r\n\t\tthis.description = description;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/io/IORuntimeException.java",
    "content": "package stanford.cs106.io;\r\n\r\npublic class IORuntimeException extends RuntimeException {\r\n\tprivate static final long serialVersionUID = 1L;\r\n\tpublic IORuntimeException(String s) {\r\n\t\tsuper(s);\r\n\t}\r\n\tpublic IORuntimeException(String s, Throwable t) {\r\n\t\tsuper(s, t);\r\n\t}\r\n\tpublic IORuntimeException(Throwable t) {\r\n\t\tsuper(t);\r\n\t}\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/io/IOUtils.java",
    "content": "/*\n * @version 2017/05/22\n * - bug fix for readEntireStream (was stopping prematurely)\n * @version 2016/07/13\n * - added readEntireReader, readEntireScanner, readEntireStream\n */\n\npackage stanford.cs106.io;\n\nimport java.io.*;\nimport java.util.*;\n\n/**\n * Utility methods related to file processing and I/O.\n * @author Marty Stepp\n */\npublic class IOUtils {\n\t/** A copy of the original System.in, which Practice-It replaces while student code is running. */\n\tprivate static final InputStream SYSTEM_IN_ORIGINAL = System.in;\n\n\t/** A copy of the original System.out, which Practice-It replaces while student code is running. */\n\tprivate static final PrintStream SYSTEM_OUT_ORIGINAL = System.out;\n\n\t/** A copy of the original System.err, which Practice-It replaces while student code is running. */\n\tprivate static final PrintStream SYSTEM_ERR_ORIGINAL = System.err;\n\n\t/** So that an object of this class cannot be constructed. */\n\tprivate IOUtils() {}\n\n\t/**\n\t * Copies the entire contents of the given in file into the given out file.\n\t */\n\tpublic static void copy(File in, File out) {\n\t\ttry {\n\t\t\tFileInputStream fis  = new FileInputStream(in);\n\t\t\tFileOutputStream fos = new FileOutputStream(out);\n\t\t\tbyte[] buf = new byte[4096];\n\t\t\tint len;\n\t\t\twhile ((len = fis.read(buf)) >= 0) {\n\t\t\t\tfos.write(buf, 0, len);\n\t\t\t}\n\t\t\tfis.close();\n\t\t\tfos.close();\n\t\t} catch (IOException ioe) {\n\t\t\tthrow new IORuntimeException(ioe);\n\t\t}\n\t}\n\t\n\t/**\n\t * The directory in which the current app is running.\n\t */\n\tpublic static String getCurrentDirectory() {\n\t\tString currentDir = \".\";\n\t\ttry {\n\t\t\tcurrentDir = System.getProperty(\"user.dir\");\n\t\t} catch (Exception e) {\n\t\t\t// empty\n\t\t}\n\t\treturn currentDir;\n\t}\n\t\n\t/**\n\t * Returns a directory that is likely to contain expected input files for\n\t * a running Stanford lib project.\n\t * Checks in subfolders of the current directory such as input/, expected-output/, etc.\n\t */\n\tpublic static File getExpectedInputDirectory() {\n\t\tFile dir = new File(System.getProperty(\"user.dir\"));\n\t\tFile[] dirsToTry = {\n\t\t\t\tnew File(dir, \"input\"),\n\t\t\t\tnew File(dir, \"res/input\"),\n\t\t\t\tnew File(dir, \"output\"),\n\t\t\t\tnew File(dir, \"expected-output\"),\n\t\t\t\tnew File(dir, \"res/output\"),\n\t\t\t\tnew File(dir, \"res/expected-output\")\n\t\t};\n\t\tfor (File dirToTry : dirsToTry) {\n\t\t\tif (dirToTry.isDirectory()) {\n\t\t\t\tdir = dirToTry;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn dir;\n\t}\n\t\n\t/**\n\t * Returns a directory that is likely to contain expected output files for\n\t * a running Stanford lib project.\n\t * Checks in subfolders of the current directory such as output/, expected-output/, etc.\n\t */\n\tpublic static File getExpectedOutputDirectory() {\n\t\tFile dir = new File(System.getProperty(\"user.dir\"));\n\t\tFile[] dirsToTry = {\n\t\t\t\tnew File(dir, \"output\"),\n\t\t\t\tnew File(dir, \"expected-output\"),\n\t\t\t\tnew File(dir, \"res/output\"),\n\t\t\t\tnew File(dir, \"res/expected-output\")\n\t\t};\n\t\tfor (File dirToTry : dirsToTry) {\n\t\t\tif (dirToTry.isDirectory()) {\n\t\t\t\tdir = dirToTry;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn dir;\n\t}\n\t\n\t/**\n\t * The file name extension (such as mp3, doc, txt) of the given file's name.\n\t * @return null if the file is null, or \"\" if the file has no extension\n\t */\n\tpublic static String getExtension(File file) {\n\t\tif (file == null) {\n\t\t\treturn null;\n\t\t}\n\t\treturn getExtension(file.getName());\n\t}\n\n\t/**\n\t * The file name extension (such as mp3, doc, txt) of the given file's name.\n\t * @return null if the file is null, or \"\" if the file has no extension\n\t */\n\tpublic static String getExtension(String fileName) {\n\t\tif (fileName == null) {\n\t\t\treturn null;\n\t\t}\n\t\tint dot = fileName.lastIndexOf(\".\");\n\t\tif (dot >= 0) {\n\t\t\treturn fileName.substring(dot + 1);\n\t\t} else {\n\t\t\treturn \"\";\n\t\t}\n\t}\n\t\n\t/**\n\t * Strips folders from file's name.  Like basename in Perl/PHP.\n\t * e.g. \"foo/bar/Baz.java\" returns \"Baz.java\"\n\t */\n\tpublic static String getFileName(String filePath) {\n\t\treturn new File(filePath).getName();\n\t}\n\n\t// \n\t/**\n\t * The folder name of the given file path.\n\t * e.g. \"foo/bar/Baz.java\" returns \"foo/bar/\"\n\t * PRE: no folders in fileName (no \"foo/bar/Baz.java\")\n\t */\n\tpublic static String getFolder(String fileName) {\n\t\tint slash = fileName.lastIndexOf(File.separatorChar);\n\t\tif (slash < 0) {\n\t\t\tslash = fileName.lastIndexOf(\"/\");  // fallback\n\t\t}\n\t\t\n\t\tif (slash >= 0) {\n\t\t\treturn fileName.substring(0, slash + 1);\n\t\t} else {\n\t\t\treturn \"./\";\n\t\t}\n\t}\n\n\t/**\n\t * The full path to the server's temp directory, such as \"/tmp/foobar/\".\n\t */\n\tpublic static String getTempFolder() {\n\t\tString tempFolder = System.getProperty(\"java.io.tmpdir\");\n\t\tif (!tempFolder.endsWith(File.separator)) {\n\t\t\ttempFolder += File.separator;\n\t\t}\n\t\treturn tempFolder;\n\t}\n\n\t/**\n\t * Reads the given file's text fully and returns it as a String.\n\t * @throws FileNotFoundException if file cannot be read\n\t */\n\tpublic static String readEntireFile(File file) {\n\t\ttry {\n\t\t\tFileReader fr = new FileReader(file);\n\t\t\treturn readEntireReader(fr);\n\t\t} catch (IOException ioe) {\n\t\t\tthrow new IORuntimeException(ioe);\n\t\t}\n\t}\n\t\n\t/**\n\t * Reads the given file's text fully and returns it as a String.\n\t * @throws FileNotFoundException if file cannot be read\n\t */\n\tpublic static String readEntireFile(String fileName) {\n\t\treturn readEntireFile(new File(fileName));\n\t}\n\t\n\t/**\n\t * Reads the given reader's text fully and returns it as a String.\n\t * @throws FileNotFoundException if file cannot be read\n\t */\n\tpublic static String readEntireReader(Reader reader) {\n\t\ttry {\n\t\t\tBufferedReader breader = new BufferedReader(reader);\n\t\t\tStringBuilder text = new StringBuilder();\n\t\t\twhile (breader.ready()) {\n\t\t\t\ttext.append((char) breader.read());\n\t\t\t}\n\t\t\tbreader.close();\n\t\t\treader.close();\n\t\t\treturn text.toString();\n\t\t} catch (IOException ioe) {\n\t\t\tthrow new IORuntimeException(ioe);\n\t\t}\n\t}\n\t\n\t/**\n\t * Reads the given scanner's text fully and returns it as a String.\n\t */\n\tpublic static String readEntireScanner(Scanner input) {\n\t\tStringBuilder text = new StringBuilder();\n\t\twhile (input.hasNextLine()) {\n\t\t\ttext.append(input.hasNextLine());\n\t\t\ttext.append('\\n');\n\t\t}\n\t\tinput.close();\n\t\treturn text.toString();\n\t}\n\t\n\t/**\n\t * Reads the given stream's text fully and returns it as a String.\n\t * @throws FileNotFoundException if file cannot be read\n\t */\n\tpublic static String readEntireStream(InputStream stream) {\n\t\ttry {\n\t\t\tBufferedReader breader = new BufferedReader(new InputStreamReader(stream));\n\t\t\tStringBuilder text = new StringBuilder();\n\t\t\twhile (true) {\n\t\t\t\tint b = breader.read();\n\t\t\t\tif (b < 0) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\ttext.append((char) b);\n\t\t\t}\n\t\t\tbreader.close();\n\t\t\tstream.close();\n\t\t\treturn text.toString();\n\t\t} catch (IOException ioe) {\n\t\t\tthrow new IORuntimeException(ioe);\n\t\t}\n\t}\n\t\n\t/**\n\t * Reads the given stream's text fully and returns it as an array of bytes.\n\t * @throws IOException if stream cannot be read\n\t */\n\tpublic static byte[] readEntireStreamBytes(InputStream stream) {\n\t\treturn readEntireReaderBytes(new InputStreamReader(stream));\n\t}\n\n\t/**\n\t * Reads the given reader's text fully and returns it as an array of bytes.\n\t * @throws IOException if stream cannot be read\n\t */\n\tpublic static byte[] readEntireReaderBytes(Reader reader) {\n\t\ttry {\n\t\t\tByteArrayOutputStream out = new ByteArrayOutputStream();\n\t\t\tint count = 0;\n\t\t\twhile (reader.ready()) {\n\t\t\t\tint b = reader.read();\n\t\t\t\tout.write(b);\n\t\t\t\tSystem.out.printf(\"%4d: %3d (%s)\\n\", count, b, (char) b);\n\t\t\t\tcount++;\n\t\t\t}\n\t\t\treturn out.toByteArray();\n\t\t} catch (IOException ioe) {\n\t\t\tthrow new IORuntimeException(ioe);\n\t\t}\n\t}\n\n\t/**\n\t * Reads the full text from the file with the given name,\n\t * and returns it as an array of bytes.\n\t * @throws IOException if stream cannot be read\n\t */\n\tpublic static byte[] readEntireFileBytes(String fileName) {\n\t\treturn readEntireFileBytes(new File(fileName));\n\t}\n\t\n\t/**\n\t * Reads the full text from the given file,\n\t * and returns it as an array of bytes.\n\t * @throws IOException if stream cannot be read\n\t */\n\tpublic static byte[] readEntireFileBytes(File file) {\n\t\ttry {\n\t\t\tInputStream stream = new FileInputStream(file);\n\t\t\tbyte[] bytes = new byte[(int) file.length()];\n\t\t\tint total = 0;\n\t\t\twhile (total < bytes.length) {\n\t\t\t\tint bytesRead = stream.read(bytes, total, bytes.length - total);\n\t\t\t\tif (bytesRead < 0) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tstream.close();\n\t\t\treturn bytes;\n\t\t} catch (IOException ioe) {\n\t\t\tthrow new IORuntimeException(ioe);\n\t\t}\n\t}\n\t\n\t/**\n\t * Creates and returns an input stream to read the characters of the given\n\t * string as bytes, one character at a time.\n\t */\n\tpublic static InputStream toInputStream(String data) {\n\t\tif (data == null) {\n\t\t\tdata = \"\";\n\t\t}\n\t\tByteArrayOutputStream stream = new ByteArrayOutputStream(data.length());\n\t\tPrintStream out = new PrintStream(stream);\n\t\tout.print(data);\n\t\tout.flush();\n\t\tout.close();\n\t\tByteArrayInputStream in = new ByteArrayInputStream(stream.toByteArray());\n\t\treturn in;\n\t}\n\n\t/**\n\t * Redirects System.in to pull input data from the text in the given string.\n\t */\n\tpublic static void redirectInput(String data) {\n\t\tsynchronized (IOUtils.class) {\n\t\t\tSystem.setIn(toInputStream(data));\n\t\t}\n\t}\n\t\n\t/**\n\t * Redirects System.out to a byte array output stream, which is returned.\n\t * Also sets a limit on the amount of output that can be produced before an\n\t * ExcessiveOutputException will occur (so students can't infinitely println).\n\t */\n\tpublic static ByteArrayOutputStream redirectOutput() {\n\t\treturn redirectOutput(true);\n\t}\n\n\t/**\n\t * Redirects System.out to a byte array output stream, which is returned.\n\t * @param limit if true, sets a limit on the amount of output that can be\n\t *              produced before an ExcessiveOutputException will occur\n\t *              (so students can't infinitely println).\n\t */\n\tpublic static ByteArrayOutputStream redirectOutput(boolean limit) {\n\t\tByteArrayOutputStream out = null;\n\t\tSystem.out.flush();\n\t\tSystem.err.flush();\n\t\tout = new ByteArrayOutputStream(2048);\n\t\tPrintStream outErr = null;\n\t\tif (limit) {\n\t\t\toutErr = new LimitedPrintStream(out);\n\t\t} else {\n\t\t\toutErr = new PrintStream(out);\n\t\t}\n\t\tsynchronized (IOUtils.class) {\n\t\t\tSystem.setOut(outErr);\n\t\t\tSystem.setErr(outErr);\n\t\t}\n\t\treturn out;\n\t}\n\n\t/**\n\t * Removes the file's extension; e.g. \"foobar.mp3\" returns \"foobar\"\n\t */\n\tpublic static String removeExtension(String fileName) {\n\t\tint dot = fileName.lastIndexOf(\".\");\n\t\tif (dot >= 0) {\n\t\t\tfileName = fileName.substring(0, dot);\n\t\t}\n\t\treturn fileName;\n\t}\n\n\t/**\n\t * Removes any leading folders from the given file name;\n\t * e.g. \"foo/bar/Baz.java\" returns \"Baz.java\"\n\t */\n\tpublic static String removeFolder(String fileName) {\n\t\tint slash = fileName.lastIndexOf(File.separatorChar);\n\t\tif (slash < 0) {\n\t\t\tslash = fileName.lastIndexOf(\"/\");  // fallback\n\t\t}\n\n\t\tif (slash >= 0) {\n\t\t\tfileName = fileName.substring(slash + 1);\n\t\t}\n\t\treturn fileName;\n\t}\n\n\t/**\n\t * Sets System.in back to its original state.\n\t */\n\tpublic static void stopRedirectingInput() {\n\t\tsynchronized (IOUtils.class) {\n\t\t\tSystem.setIn(SYSTEM_IN_ORIGINAL);\n\t\t}\n\t}\n\n\t/**\n\t * Sets System.out/err back to their original state.\n\t */\n\tpublic static void stopRedirectingOutput() {\n\t\tSystem.out.flush();\n\t\tSystem.err.flush();\n\t\t\n\t\tsynchronized (IOUtils.class) {\n\t\t\tSystem.setOut(SYSTEM_OUT_ORIGINAL);\n\t\t\tSystem.setErr(SYSTEM_ERR_ORIGINAL);\n\t\t}\n\t}\n\t\n\t/**\n\t * Writes the given text into the file with the given name, replacing any existing text.\n\t */\n\tpublic static void writeEntireFile(String text, String fileName) {\n\t\twriteEntireFile(text, new File(fileName));\n\t}\n\t\n\t/**\n\t * Writes the given text into the given file, replacing any existing text.\n\t */\n\tpublic static void writeEntireFile(String text, File file) {\n\t\ttry {\n\t\t\tjava.io.PrintStream output = new java.io.PrintStream(file);\n\t\t\toutput.print(text);\n\t\t\toutput.close();\n\t\t} catch (FileNotFoundException fnfe) {\n\t\t\tfnfe.printStackTrace();  // this will never happen; we're writing the file!\n\t\t}\n\t}\n\n\t/**\n\t * Writes the given bytes into the given file, replacing any existing content.\n\t */\n\tpublic static void writeBytes(byte[] bytes, String fileName) {\n\t\ttry {\n\t\t\tFileOutputStream output = new FileOutputStream(fileName);\n\t\t\toutput.write(bytes);\n\t\t\toutput.close();\n\t\t} catch (IOException ioe) {\n\t\t\tthrow new IORuntimeException(ioe);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/io/LimitedPrintStream.java",
    "content": "package stanford.cs106.io;\r\n\r\nimport java.io.*;\r\n\r\npublic class LimitedPrintStream extends PrintStream {\r\n    public static class ExcessiveOutputException extends RuntimeException {\r\n        private static final long serialVersionUID = 0;\r\n        public ExcessiveOutputException() {\r\n            super();\r\n        }    \r\n        public ExcessiveOutputException(String message) {\r\n            super(message);\r\n        }    \r\n    }\r\n\r\n    private static final int MAX_CALLS = 5000;\r\n    private static final int MAX_CHARS = 50000;\r\n    \r\n    private int calls = 0;\r\n    private int chars = 0;\r\n    private int maxCalls = 0;\r\n    private int maxChars = 0;\r\n    \r\n    public LimitedPrintStream(java.io.OutputStream stream) {\r\n        this(stream, MAX_CALLS, MAX_CHARS);\r\n    }\r\n    \r\n    public LimitedPrintStream(File file) throws java.io.FileNotFoundException {\r\n        this(file, MAX_CALLS, MAX_CHARS);\r\n    }\r\n\r\n    public LimitedPrintStream(String file) throws java.io.FileNotFoundException {\r\n        this(file, MAX_CALLS, MAX_CHARS);\r\n    }\r\n    \r\n    public LimitedPrintStream(java.io.OutputStream stream, int maxCalls, int maxChars) {\r\n        super(stream);\r\n        this.maxCalls = maxCalls;\r\n        this.maxChars = maxChars;\r\n    }\r\n    \r\n    public LimitedPrintStream(File file, int maxCalls, int maxChars) throws java.io.FileNotFoundException {\r\n        super(file);\r\n        this.maxCalls = maxCalls;\r\n        this.maxChars = maxChars;\r\n    }\r\n\r\n    public LimitedPrintStream(String file, int maxCalls, int maxChars) throws java.io.FileNotFoundException {\r\n        super(file);\r\n        this.maxCalls = maxCalls;\r\n        this.maxChars = maxChars;\r\n    }\r\n    \r\n    \r\n    \r\n    // shouldn't close System.out anyway\r\n    public void close() {\r\n    \t// empty\r\n    }\r\n    \r\n    public void print(int x) {\r\n        print(String.valueOf(x));\r\n    }\r\n    \r\n    public void print(double x) {\r\n        print(String.valueOf(x));\r\n    }\r\n    \r\n    public void print(float x) {\r\n        print(String.valueOf(x));\r\n    }\r\n    \r\n    public void print(long x) {\r\n        print(String.valueOf(x));\r\n    }\r\n    \r\n    public void print(short x) {\r\n        print(String.valueOf(x));\r\n    }\r\n    \r\n    public void print(byte x) {\r\n        print(String.valueOf(x));\r\n    }\r\n    \r\n    public void print(boolean x) {\r\n        print(String.valueOf(x));\r\n    }\r\n    \r\n    public void print(char x) {\r\n        print(String.valueOf(x));\r\n    }\r\n    \r\n    public void print(Object x) {\r\n        print(String.valueOf(x));\r\n    }\r\n    \r\n    public void print(String x) {\r\n        calls++;\r\n        chars += (x == null) ? 4 : x.length();\r\n        \r\n        if (calls < maxCalls && chars < maxChars) {\r\n            super.print(x);\r\n        } else {\r\n            throw new ExcessiveOutputException();\r\n        }\r\n    }\r\n    \r\n    public void println(int x) {\r\n        println(String.valueOf(x));\r\n    }\r\n    \r\n    public void println(double x) {\r\n        println(String.valueOf(x));\r\n    }\r\n    \r\n    public void println(float x) {\r\n        println(String.valueOf(x));\r\n    }\r\n    \r\n    public void println(long x) {\r\n        println(String.valueOf(x));\r\n    }\r\n    \r\n    public void println(short x) {\r\n        println(String.valueOf(x));\r\n    }\r\n    \r\n    public void println(byte x) {\r\n        println(String.valueOf(x));\r\n    }\r\n    \r\n    public void println(boolean x) {\r\n        println(String.valueOf(x));\r\n    }\r\n    \r\n    public void println(char x) {\r\n        println(String.valueOf(x));\r\n    }\r\n    \r\n    public void println(Object x) {\r\n        println(String.valueOf(x));\r\n    }\r\n    \r\n    public void println(String x) {\r\n        print(x);\r\n        print(\"\\n\");\r\n    }\r\n    \r\n//    public void write(int b) {\r\n//        print((char) b);\r\n//    }\r\n//    \r\n//    public void write(byte[] buf, int off, int len) {\r\n//        for (int i = off; i < off + len; i++) {\r\n//            write(buf[i]);\r\n//        }\r\n//    }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/io/OutputCapturer.java",
    "content": "package stanford.cs106.io;\r\n\r\nimport java.io.ByteArrayOutputStream;\r\nimport java.io.PrintStream;\r\n\r\n/** for capturing console output (for methods that do printlns) */\r\npublic class OutputCapturer {\r\n    private static final PrintStream SYSTEM_OUT = java.lang.System.out;\r\n    private static final PrintStream SYSTEM_ERR = java.lang.System.err;\r\n    private static ByteArrayOutputStream outputStream = null;\r\n    \r\n    /** Returns true if output is currently being captured. */\r\n    public static boolean isCapturing() {\r\n        return outputStream != null;\r\n    }\r\n\r\n    /** Begins capturing output with no limit as to its length. */\r\n    public static synchronized void start() {\r\n        start(true);\r\n    }\r\n    \r\n    /** \r\n     * Begins capturing output.  Will throw an exception if the student \r\n     * printlns too much.\r\n     */\r\n    public static synchronized void start(boolean limit) {\r\n        if (isCapturing()) {\r\n            stop();\r\n        }\r\n        \r\n        outputStream = new ByteArrayOutputStream(16384);\r\n        PrintStream out;\r\n        if (limit) {\r\n            out = new LimitedPrintStream(outputStream);\r\n        } else {\r\n            out = new PrintStream(outputStream);\r\n        }\r\n        System.setOut(out);\r\n        System.setErr(out);\r\n    }\r\n    \r\n    /** Stops capturing output and returns the string of captured output. */\r\n    public static synchronized String stop() {\r\n        String actualOutput = \"\";\r\n        if (isCapturing()) {\r\n            System.out.flush();\r\n            System.err.flush();\r\n            System.setOut(SYSTEM_OUT);\r\n            System.setErr(SYSTEM_ERR);\r\n            if (isCapturing()) {\r\n                actualOutput = outputStream.toString().replace(\"\\r\", \"\");\r\n            }\r\n            outputStream = null;\r\n        }\r\n        return actualOutput;\r\n    }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/io/ReaderInputStream.java",
    "content": "package stanford.cs106.io;\n\nimport java.io.*;\n\n/**\n *\n * @author Marty Stepp\n */\npublic class ReaderInputStream extends InputStream {\n    private Reader source;\n    \n    public ReaderInputStream(Reader source) {\n        this.source = source;\n    }\n    \n    @Override\n    public void close() throws IOException {\n        source.close();\n    }\n    \n    @Override\n    public void mark(int readAheadLimit) {\n        try {\n            source.mark(readAheadLimit);\n        } catch (IOException ioe) {\n        \t// empty\n        }\n    }\n    \n    @Override\n    public boolean markSupported() {\n        return source.markSupported();\n    }\n    \n    public int read() throws IOException {\n        return source.read();\n    }\n    \n    @Override\n    public int read(byte[] b, int offset, int length) throws IOException {\n        char[] cbuf = new char[b.length];\n        int result = source.read(cbuf, offset, length);\n        for (int i = offset; i < offset + result; i++) {\n            b[i] = (byte) cbuf[i];\n        }\n        return result;\n    }\n    \n    @Override\n    public void reset() throws IOException {\n        source.reset();\n    }\n    \n    @Override\n    public long skip(long n) throws IOException {\n        return source.skip(n);\n    }\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/io/ResourceUtils.java",
    "content": "/*\r\n * CS 106A\r\n *\r\n * This instructor-provided file contains utility functions related to loading\r\n * resource files, especially from within a JAR and/or applet.\r\n *\r\n * @author Marty Stepp\r\n * @version 2017/04/25\r\n * - added logic to load resources from inside spl.jar\r\n * @version 2014/05/11\r\n * \r\n * This file and its contents are copyright (C) Stanford University and Marty Stepp,\r\n * licensed under Creative Commons Attribution 2.5 License.  All rights reserved.\r\n */\r\n\r\n// TO DO: This file's documentation is insufficient due to time constraints.\r\n// Improve documentation in future quarters for better style and maintainability.\r\n\r\npackage stanford.cs106.io;\r\n\r\nimport java.io.*;\r\nimport java.net.*;\r\n\r\nimport stanford.spl.Version;\r\n\r\npublic class ResourceUtils {\r\n\t// set to true to see debugging messages when trying to load resources\r\n\tprivate static final boolean DEBUG = false;\r\n\t\r\n\t// if running as an applet, replace this with the applet's class at runtime\r\n\tprivate static Class<?> resourceLoaderClass = ResourceUtils.class;\r\n\t\r\n\tpublic static void setResourceLoaderClass(Class<?> clazz) {\r\n\t\tif (clazz != null) {\r\n\t\t\tresourceLoaderClass = clazz;\r\n\t\t}\r\n\t}\r\n\t\r\n\tpublic static boolean fileExists(String filename) {\r\n\t\ttry {\r\n\t\t\tURL url = filenameToURL(filename);\r\n\t\t\treturn url != null;\r\n\t\t} catch (IORuntimeException ioe) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\tpublic static URL filenameToURL(String filename) {\r\n\t\tfilename = filename.replace(\"\\\\\", \"/\");\r\n\t\tif (DEBUG) System.out.println(\" - filenameToURL: trying to load \\\"\" + filename + \"\\\"\");\r\n\t\t\r\n\t\tFile file = new File(filename);\r\n\t\tURL result = null;\r\n\t\ttry {\r\n\t\t\tif (file.exists()) {\r\n\t\t\t\tresult = new URL(\"file:\" + filename.replace(\"\\\\\", \"/\"));\r\n\t\t\t\tif (DEBUG) System.out.println(\" - filenameToURL: found in current dir \" + result);\r\n\t\t\t} else {\r\n//\t\t\t\tfile = new File(\"../\" + filename);  // \"../simple.txt\"\r\n//\t\t\t\tif (file.exists()) {\r\n//\t\t\t\t\tresult = new URL(\"file:../\" + filename.replace(\"\\\\\", \"/\"));\r\n//\t\t\t\t\tif (DEBUG) System.out.println(\" - filenameToURL: found in up-level dir \" + result);\r\n//\t\t\t\t}\r\n\t\t\t}\r\n\t\t} catch (MalformedURLException mfurle) {\r\n\t\t\t// running as an applet\r\n\t\t\tthrow new IORuntimeException(mfurle);\r\n\t\t} catch (SecurityException sex) {\r\n\t\t\t// running as an applet\r\n\t\t\t// sex.printStackTrace();\r\n\t\t}\r\n\r\n\t\t// fallback to using internal class URL (app itself is a JAR or applet)\r\n\t\tif (result == null) {\r\n\t\t\tresult = resourceLoaderClass.getResource(\"/\" + filename);\r\n\t\t\tif (DEBUG) System.out.println(\" - filenameToURL: classLoader yields \" + result);\r\n\t\t}\r\n\t\t\r\n\t\t// fallback to using internal class URL from inside spl.jar (extract from spl lib)\r\n\t\tif (result == null) {\r\n\t\t\tString splJarPath = Version.getLibraryJarPath();\r\n\t\t\tif (splJarPath != null && !splJarPath.isEmpty()) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tURL url = new URL(\"file:\" + splJarPath.replace(\"\\\\\", \"/\") + \"!/\" + filename);\r\n\t\t\t\t\tif (DEBUG) System.out.println(\" - filenameToURL: in-JAR is \" + url);\r\n\t\t\t\t\tresult = resourceLoaderClass.getResource(url.toString());\r\n\t\t\t\t\tif (DEBUG) System.out.println(\" - filenameToURL: in-JAR resource is \" + result);\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t} catch (MalformedURLException mfurle) {\r\n\t\t\t\t\t// empty\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif (result == null) {\r\n\t\t\tthrow new IORuntimeException(filename);\r\n\t\t} else {\r\n\t\t\treturn result;\r\n\t\t}\r\n\t}\r\n\t\r\n\tpublic static InputStream openFile(String filename) {\r\n\t\ttry {\r\n\t\t\tInputStream stream = filenameToURL(filename).openStream();\r\n\t\t\tif (stream == null) {\r\n\t\t\t\tthrow new IORuntimeException(filename);\r\n\t\t\t} else {\r\n\t\t\t\treturn stream;\r\n\t\t\t}\r\n\t\t} catch (IOException ioe) {\r\n\t\t\tthrow new IORuntimeException(\"file not found: \" + filename);\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/junit/Assert.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2015/05/28\n * - fixed assertNull, assertNotNull, assertSame, assertNotSame\n */\n\npackage stanford.cs106.junit;\n\nimport stanford.cs106.diff.*;\n\npublic class Assert {\n\tprivate Assert() {\n\t\t// empty\n\t}\n\t\n\tpublic static void assertDiff(String message, String expected, String actual) {\n\t\tassertDiff(message, expected, actual, Diff.FLAGS_DEFAULT_LENIENT);\n\t}\n\t\n\tpublic static void assertDiff(String message, String expected, String actual, int flags) {\n\t\tString diffs = Diff.diff(expected, actual, flags);\n\t\tif (!diffs.equals(Diff.NO_DIFFS_MESSAGE)) {\n\t\t\tComparisonFailureEnhanced failure = new ComparisonFailureEnhanced(\n\t\t\t\t\tUnitTestType.ASSERT_DIFF,\n\t\t\t\t\t\"diff\",\n\t\t\t\t\tmessage,\n\t\t\t\t\texpected,\n\t\t\t\t\tactual\n\t\t\t);\n\t\t\tfailure.setDetails(diffs);\n\t\t\tthrow failure;\n\t\t}\n\t}\n\t\n\tpublic static void assertEquals(String message, String expected, String actual) {\n\t\tif (((expected == null) != (actual == null)) || \n\t\t\t\t(expected != null && actual != null && !expected.equals(actual))) {\n\t\t\tComparisonFailureEnhanced failure = new ComparisonFailureEnhanced(\n\t\t\t\t\tUnitTestType.ASSERT_EQUALS,\n\t\t\t\t\t\"string\",\n\t\t\t\t\tmessage,\n\t\t\t\t\texpected,\n\t\t\t\t\tactual\n\t\t\t);\n\t\t\tthrow failure;\n\t\t}\n\t}\n\t\n\tpublic static void assertEquals(String message, Object expected, Object actual) {\n\t\tif (((expected == null) != (actual == null)) || \n\t\t\t\t(expected != null && actual != null && !expected.equals(actual))) {\n\t\t\tComparisonFailureEnhanced failure = new ComparisonFailureEnhanced(\n\t\t\t\t\tUnitTestType.ASSERT_EQUALS,\n\t\t\t\t\t\"object\",\n\t\t\t\t\tmessage,\n\t\t\t\t\tString.valueOf(expected),\n\t\t\t\t\tString.valueOf(actual)\n\t\t\t);\n\t\t\tthrow failure;\n\t\t}\n\t}\n\t\n\tpublic static void assertEquals(String message, int expected, int actual) {\n\t\tif (expected != actual) {\n\t\t\tComparisonFailureEnhanced failure = new ComparisonFailureEnhanced(\n\t\t\t\t\tUnitTestType.ASSERT_EQUALS,\n\t\t\t\t\t\"int\",\n\t\t\t\t\tmessage,\n\t\t\t\t\tString.valueOf(expected),\n\t\t\t\t\tString.valueOf(actual)\n\t\t\t);\n\t\t\tthrow failure;\n\t\t}\n\t}\n\t\n\tpublic static void assertEquals(String message, boolean expected, boolean actual) {\n\t\tif (expected != actual) {\n\t\t\tComparisonFailureEnhanced failure = new ComparisonFailureEnhanced(\n\t\t\t\t\tUnitTestType.ASSERT_EQUALS,\n\t\t\t\t\t\"boolean\",\n\t\t\t\t\tmessage,\n\t\t\t\t\tString.valueOf(expected),\n\t\t\t\t\tString.valueOf(actual)\n\t\t\t);\n\t\t\tthrow failure;\n\t\t}\n\t}\n\t\n\tpublic static void assertEquals(String message, char expected, char actual) {\n\t\tif (expected != actual) {\n\t\t\tComparisonFailureEnhanced failure = new ComparisonFailureEnhanced(\n\t\t\t\t\tUnitTestType.ASSERT_EQUALS,\n\t\t\t\t\t\"char\",\n\t\t\t\t\tmessage,\n\t\t\t\t\tString.valueOf(expected),\n\t\t\t\t\tString.valueOf(actual)\n\t\t\t);\n\t\t\tthrow failure;\n\t\t}\n\t}\n\t\n\tpublic static void assertEquals(String message, double expected, double actual, double delta) {\n\t\tif (Math.abs(expected - actual) > delta) {\n\t\t\tComparisonFailureEnhanced failure = new ComparisonFailureEnhanced(\n\t\t\t\t\tUnitTestType.ASSERT_EQUALS,\n\t\t\t\t\t\"double\",\n\t\t\t\t\tmessage,\n\t\t\t\t\tString.valueOf(expected),\n\t\t\t\t\tString.valueOf(actual)\n\t\t\t);\n\t\t\tthrow failure;\n\t\t}\n\t}\n\t\n\t// TODO: double with slop range, char, etc., other types\n\t\n\tpublic static void assertTrue(String message, boolean b) {\n\t\tif (!b) {\n\t\t\tComparisonFailureEnhanced failure = new ComparisonFailureEnhanced(\n\t\t\t\t\tUnitTestType.ASSERT_TRUE,\n\t\t\t\t\t\"boolean\",\n\t\t\t\t\tmessage,\n\t\t\t\t\t\"true\",\n\t\t\t\t\t\"false\"\n\t\t\t);\n\t\t\tthrow failure;\n\t\t}\n\t}\n\t\n\tpublic static void assertFalse(String message, boolean b) {\n\t\tif (b) {\n\t\t\tComparisonFailureEnhanced failure = new ComparisonFailureEnhanced(\n\t\t\t\t\tUnitTestType.ASSERT_FALSE,\n\t\t\t\t\t\"boolean\",\n\t\t\t\t\tmessage,\n\t\t\t\t\t\"false\",\n\t\t\t\t\t\"true\"\n\t\t\t);\n\t\t\tthrow failure;\n\t\t}\n\t}\n\t\n\tpublic static void assertNull(String message, Object o) {\n\t\tif (o != null) {\n\t\t\tComparisonFailureEnhanced failure = new ComparisonFailureEnhanced(\n\t\t\t\t\tUnitTestType.ASSERT_NULL,\n\t\t\t\t\t\"Object\",\n\t\t\t\t\tmessage,\n\t\t\t\t\t\"null\",\n\t\t\t\t\to.toString()\n\t\t\t);\n\t\t\tthrow failure;\n\t\t}\n\t}\n\t\n\tpublic static void assertNotNull(String message, Object o) {\n\t\tif (o == null) {\n\t\t\tComparisonFailureEnhanced failure = new ComparisonFailureEnhanced(\n\t\t\t\t\tUnitTestType.ASSERT_NOT_NULL,\n\t\t\t\t\t\"Object\",\n\t\t\t\t\tmessage,\n\t\t\t\t\t\"non-null\",\n\t\t\t\t\t\"null\"\n\t\t\t);\n\t\t\tthrow failure;\n\t\t}\n\t}\n\t\n\tpublic static void assertNotSame(String message, int expected, int actual) {\n\t\tif (expected == actual) {\n\t\t\tComparisonFailureEnhanced failure = new ComparisonFailureEnhanced(\n\t\t\t\t\tUnitTestType.ASSERT_NOT_EQUALS,\n\t\t\t\t\t\"int\",\n\t\t\t\t\tmessage,\n\t\t\t\t\tString.valueOf(expected),\n\t\t\t\t\tString.valueOf(actual)\n\t\t\t);\n\t\t\tthrow failure;\n\t\t}\n\t}\n\t\n\tpublic static void assertNotSame(String message, double expected, double actual) {\n\t\tif (expected == actual) {\n\t\t\tComparisonFailureEnhanced failure = new ComparisonFailureEnhanced(\n\t\t\t\t\tUnitTestType.ASSERT_NOT_EQUALS,\n\t\t\t\t\t\"double\",\n\t\t\t\t\tmessage,\n\t\t\t\t\tString.valueOf(expected),\n\t\t\t\t\tString.valueOf(actual)\n\t\t\t);\n\t\t\tthrow failure;\n\t\t}\n\t}\n\t\n\tpublic static void assertNotSame(String message, double expected, double actual, double delta) {\n\t\tif (Math.abs(expected - actual) <= delta) {\n\t\t\tComparisonFailureEnhanced failure = new ComparisonFailureEnhanced(\n\t\t\t\t\tUnitTestType.ASSERT_NOT_EQUALS,\n\t\t\t\t\t\"double\",\n\t\t\t\t\tmessage,\n\t\t\t\t\tString.valueOf(expected),\n\t\t\t\t\tString.valueOf(actual)\n\t\t\t);\n\t\t\tthrow failure;\n\t\t}\n\t}\n\t\n\tpublic static void assertNotSame(String message, boolean expected, boolean actual) {\n\t\tif (expected == actual) {\n\t\t\tComparisonFailureEnhanced failure = new ComparisonFailureEnhanced(\n\t\t\t\t\tUnitTestType.ASSERT_NOT_EQUALS,\n\t\t\t\t\t\"boolean\",\n\t\t\t\t\tmessage,\n\t\t\t\t\tString.valueOf(expected),\n\t\t\t\t\tString.valueOf(actual)\n\t\t\t);\n\t\t\tthrow failure;\n\t\t}\n\t}\n\t\n\tpublic static void assertNotSame(String message, char expected, char actual) {\n\t\tif (expected == actual) {\n\t\t\tComparisonFailureEnhanced failure = new ComparisonFailureEnhanced(\n\t\t\t\t\tUnitTestType.ASSERT_NOT_EQUALS,\n\t\t\t\t\t\"char\",\n\t\t\t\t\tmessage,\n\t\t\t\t\tString.valueOf(expected),\n\t\t\t\t\tString.valueOf(actual)\n\t\t\t);\n\t\t\tthrow failure;\n\t\t}\n\t}\n\t\n\tpublic static void assertSame(String message, Object expected, Object actual) {\n\t\tif (expected != actual) {\n\t\t\tComparisonFailureEnhanced failure = new ComparisonFailureEnhanced(\n\t\t\t\t\tUnitTestType.ASSERT_NOT_EQUALS,\n\t\t\t\t\t\"object\",\n\t\t\t\t\tmessage,\n\t\t\t\t\tString.valueOf(expected),\n\t\t\t\t\tString.valueOf(actual)\n\t\t\t);\n\t\t\tthrow failure;\n\t\t}\n\t}\n\t\n\tpublic static void assertSame(String message, String expected, String actual) {\n\t\tif (expected != actual) {\n\t\t\tComparisonFailureEnhanced failure = new ComparisonFailureEnhanced(\n\t\t\t\t\tUnitTestType.ASSERT_NOT_EQUALS,\n\t\t\t\t\t\"string\",\n\t\t\t\t\tmessage,\n\t\t\t\t\tString.valueOf(expected),\n\t\t\t\t\tString.valueOf(actual)\n\t\t\t);\n\t\t\tthrow failure;\n\t\t}\n\t}\n\t\n\tpublic static void fail(String message) {\n\t\t// TODO: this may not be the best way to represent a test failure\n\t\tComparisonFailureEnhanced failure = new ComparisonFailureEnhanced(\n\t\t\t\tUnitTestType.FAIL,\n\t\t\t\t\"string\",\n\t\t\t\tmessage,\n\t\t\t\t\"pass\",\n\t\t\t\t\"fail\"\n\t\t);\n\t\tthrow failure;\n\t}\n\t\n\tpublic static void pass(String message) {\n\t\t// TODO: this may not be the best way to represent a test passing\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/junit/ComparisonFailureEnhanced.java",
    "content": "package stanford.cs106.junit;\n\nimport org.junit.*;\n\npublic class ComparisonFailureEnhanced extends ComparisonFailure {\n\tprivate UnitTestType type;\n\tprivate String details = \"\";\n\tprivate String valueType = \"\";\n\tprivate String expected;\n\tprivate String actual;\n\tprivate String message;\n\t\n\tpublic ComparisonFailureEnhanced(UnitTestType type,\n\t\t\tString message, String expected, String actual) {\n\t\tthis(type, /* valueType */ \"\", message, expected, actual);\n\t}\n\t\n\tpublic ComparisonFailureEnhanced(UnitTestType type, String valueType,\n\t\t\tString message, String expected, String actual) {\n\t\tsuper(message, expected, actual);\n\t\tthis.expected = expected;\n\t\tthis.actual = actual;\n\t\tthis.message = message;\n\t\tthis.type = type;\n\t\tthis.valueType = valueType;\n\t}\n\t\n\tpublic String getMessage() {\n\t\treturn message;\n\t}\n\t\n\tpublic String getExpected() {\n\t\treturn expected;\n\t}\n\t\n\tpublic String getActual() {\n\t\treturn actual;\n\t}\n\t\n\tpublic String getStudent() {\n\t\treturn actual;\n\t}\n\t\n\tpublic UnitTestType getType() {\n\t\treturn type;\n\t}\n\t\n\tpublic String getDetails() {\n\t\treturn details;\n\t}\n\t\n\tpublic String getValueType() {\n\t\treturn valueType;\n\t}\n\t\n\tpublic void setDetails(String details) {\n\t\tthis.details = details;\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/junit/JUnitListener.java",
    "content": "/*\n * @version 2017/06/06\n * - added addTest, containsTest\n */\n\npackage stanford.cs106.junit;\n\nimport java.util.Map;\n\npublic interface JUnitListener {\n\tpublic void addTest(String testName);\n\tpublic void addTest(String testName, String categoryName);\n\tpublic boolean containsTest(String testFullName);\n\tpublic void setTestCounts(int passCount, int testCount);\n\tpublic void setTestDetails(String testFullName, Map<String, String> details);\n\tpublic void setTestDetailsMessage(String testFullName, String detailsMessage);\n\tpublic void setTestingCompleted(boolean completed);\n\tpublic boolean setTestResult(String testFullName, String result);\n\tpublic boolean setTestRuntime(String testFullName, int runtimeMS);\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/junit/JUnitUtils.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2015/06/06\n * - bug fixes related to \"full\" test names\n * @version 2015/05/28\n * - fixed assertNull, assertNotNull, assertSame, assertNotSame\n * - added support for stack traces in autograder test GUI\n */\n\npackage stanford.cs106.junit;\n\nimport java.lang.annotation.Annotation;\nimport java.lang.reflect.*;\n\nimport stanford.cs106.reflect.*;\nimport stanford.cs106.util.ExceptionUtils;\nimport stanford.cs106.util.StringUtils;\n\nimport java.util.*;\n\nimport org.junit.ComparisonFailure;\n\npublic class JUnitUtils {\n\tprivate static final int STACK_TRACE_LINES_TO_DISPLAY = 10;\n\t\n\tprivate JUnitUtils() {\n\t\t// empty\n\t}\n\t\n\tpublic static String getTestCategory(Class<?> clazz, Method method) {\n\t\treturn getTestCategory(clazz, method, /* infer */ true);\n\t}\n\t\n\tpublic static String getTestCategory(Class<?> clazz, Method method, boolean infer) {\n\t\tAnnotation anno = method.getAnnotation(TestCategory.class);\n\t\tif (anno == null) {\n\t\t\tif (infer) {\n\t\t\t\t// try to infer category from test method's name\n\t\t\t\t// format: test##_categoryName_testCaseName()\n\t\t\t\t// e.g. \"test26_getAge_bothGenders\" => test category is \"getAge\"\n\t\t\t\tString methodName = method.getName();\n\t\t\t\tif (methodName.matches(\"test[0-9]+_.*_.*\")) {\n\t\t\t\t\tmethodName = methodName.replaceAll(\"test[0-9]+_\", \"\");\n\t\t\t\t\tmethodName = methodName.replaceAll(\"_.*\", \"\");\n\t\t\t\t\treturn methodName;\n\t\t\t\t} else {\n\t\t\t\t\treturn \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tClass<? extends Annotation> annoClass = anno.annotationType();\n\t\t\tMethod valueMethod = ReflectionUtils.getMethod(annoClass, \"value\");\n\t\t\tif (valueMethod != null) {\n\t\t\t\ttry {\n\t\t\t\t\tString categoryName = (String) valueMethod.invoke(anno);\n\t\t\t\t\tif (categoryName != null) {\n\t\t\t\t\t\treturn categoryName;\n\t\t\t\t\t}\n\t\t\t\t} catch (IllegalAccessException e) {\n\t\t\t\t\tthrow new ReflectionRuntimeException(e);\n\t\t\t\t} catch (InvocationTargetException e) {\n\t\t\t\t\tthrow new ReflectionRuntimeException(e);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn \"\";\n\t}\n\t\n\tpublic static String getTestFullName(Class<?> clazz, Method method) {\n\t\tString category = getTestCategory(clazz, method);\n\t\tString methodName = method.getName();\n\t\tif (category == null || category.isEmpty()) {\n\t\t\treturn methodName;\n\t\t} else {\n\t\t\treturn category + \"_\" + methodName;\n\t\t}\n\t}\n\n\tpublic static boolean isJUnitMethod(Class<?> clazz, Method method) {\n\t\treturn method.getAnnotation(org.junit.Test.class) != null;\n\t}\n\n\tpublic static boolean isJUnitMethod(Class<?> clazz, String methodName) {\n\t\treturn isJUnitMethod(clazz, ReflectionUtils.getMethod(clazz, methodName));\n\t}\n\n\t@SuppressWarnings(\"deprecation\")\n\tpublic static void runJUnitMethod(final Class<?> junitClass, final Method method, final JUnitListener listener) {\n\t\tString testFullName = getTestFullName(junitClass, method);   // category + _ + testName\n\t\tif (listener != null && !listener.containsTest(testFullName)) {\n\t\t\tthrow new IllegalArgumentException(\"No test found with full name of \\\"\" + testFullName + \"\\\" in class \" + junitClass.getName());\n\t\t}\n\t\t\n\t\tAnnotation annotation = method.getAnnotation(org.junit.Test.class);\n\t\tClass<? extends Annotation> annoClass = annotation.annotationType();\n\t\t\n\t\t// get timeout, if any\n\t\tlong timeout = Integer.MAX_VALUE;\n\t\tMethod timeoutMethod = ReflectionUtils.getMethod(annoClass, \"timeout\");\n\t\tif (timeoutMethod != null) {\n\t\t\ttry {\n\t\t\t\tLong timeoutInteger = (Long) timeoutMethod.invoke(annotation);\n\t\t\t\tif (timeoutInteger != null) {\n\t\t\t\t\ttimeout = timeoutInteger.longValue();\n\t\t\t\t}\n\t\t\t} catch (IllegalAccessException e) {\n\t\t\t\tthrow new ReflectionRuntimeException(e);\n\t\t\t} catch (InvocationTargetException e) {\n\t\t\t\tthrow new ReflectionRuntimeException(e);\n\t\t\t}\n\t\t}\n\t\t\n\t\t// get expected exception, if any\n\t\tClass<?> expectedExceptionClass = null;\n\t\tMethod expectedMethod = ReflectionUtils.getMethod(annoClass, \"expected\");\n\t\tif (expectedMethod != null) {\n\t\t\ttry {\n\t\t\t\texpectedExceptionClass = (Class<?>) expectedMethod.invoke(annotation);\n\t\t\t\tif (expectedExceptionClass != null && expectedExceptionClass.getName().endsWith(\"None\")) {\n\t\t\t\t\t// special case: JUnit uses internal class \"org.junit.Test$None\" to indicate no exception;\n\t\t\t\t\t// we'll represent that as null instead\n\t\t\t\t\texpectedExceptionClass = null;\n\t\t\t\t}\n\t\t\t} catch (IllegalAccessException e) {\n\t\t\t\tthrow new ReflectionRuntimeException(e);\n\t\t\t} catch (InvocationTargetException e) {\n\t\t\t\tthrow new ReflectionRuntimeException(e);\n\t\t\t}\n\t\t}\n\t\t\n\t\t// create JUnit class instance and initialize it\n\t\t// TODO: support setup/teardown methods\n\t\ttry {\n\t\t\tfinal Object junitObj = junitClass.newInstance();\n\t\t\tJUnitTestRunnable run = new JUnitTestRunnable();\n\t\t\trun.method = method;\n\t\t\trun.object = junitObj;\n\t\t\tThread thread = new Thread(run);\n\t\t\tlong startTime = System.currentTimeMillis();\n\t\t\tthread.start();\n\t\t\tthread.join(timeout);\n\n\t\t\tif (thread.isAlive()) {\n\t\t\t\t// timed out\n\t\t\t\tthread.stop();\n\t\t\t\tif (listener != null) {\n\t\t\t\t\tif (!listener.setTestResult(testFullName, \"fail\")) {\n\t\t\t\t\t\tthrow new IllegalStateException(\"Unable to set test results for \" + testFullName);\n\t\t\t\t\t}\n\t\t\t\t\tlistener.setTestDetailsMessage(testFullName, \"test timed out after \" + timeout + \"ms\");\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (listener != null && run.passed) {\n\t\t\t\t\tif (!listener.setTestResult(testFullName, \"pass\")) {\n\t\t\t\t\t\tthrow new IllegalStateException(\"Unable to set test results for \" + testFullName);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tlong endTime = System.currentTimeMillis();\n\t\t\tlong runtimeMS = endTime - startTime;\n\n\t\t\tif (run.thrown != null) {\n\t\t\t\tif (!listener.setTestResult(testFullName, \"fail\")) {\n\t\t\t\t\tthrow new IllegalStateException(\"Unable to set test results for \" + testFullName);\n\t\t\t\t}\n\t\t\t\tMap<String, String> details = new TreeMap<String, String>();\n\t\t\t\t\n\t\t\t\tif (run.thrown instanceof ComparisonFailure) {\n\t\t\t\t\tComparisonFailure failure = (ComparisonFailure) run.thrown;\n\t\t\t\t\tString expected = failure.getExpected();\n\t\t\t\t\tString actual = failure.getActual();\n\t\t\t\t\tString message = failure.getMessage();\n\t\t\t\t\tString detailsText = \"\";\n\t\t\t\t\tString testType = UnitTestType.ASSERT_EQUALS.toString();\n\t\t\t\t\tString valueType = \"\";\n\t\t\t\t\t\n\t\t\t\t\tif (run.thrown instanceof ComparisonFailureEnhanced) {\n\t\t\t\t\t\tComparisonFailureEnhanced failure2 = (ComparisonFailureEnhanced) run.thrown;\n\t\t\t\t\t\tdetailsText = failure2.getDetails();\n\t\t\t\t\t\ttestType = failure2.getType().toString();\n\t\t\t\t\t\tvalueType = failure2.getValueType();\n\t\t\t\t\t\tif (failure2.getType() == UnitTestType.ASSERT_DIFF) {\n\t\t\t\t\t\t\tmessage = detailsText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// include a stack trace if possible\n\t\t\t\t\t\tString stackTrace = ExceptionUtils.stackTraceToString(run.thrown, STACK_TRACE_LINES_TO_DISPLAY);\n\t\t\t\t\t\t\n\t\t\t\t\t\t// filter out some packages that don't help the viewer\n\t\t\t\t\t\t// (sun internal packages; stanford internal library classes; etc.)\n\t\t\t\t\t\tstackTrace = ExceptionUtils.filterStackTrace(stackTrace,\n\t\t\t\t\t\t\t\t\"sun.\",\n\t\t\t\t\t\t\t\t\"junit.\",\n\t\t\t\t\t\t\t\t\"org.\",\n\t\t\t\t\t\t\t\t\"java.lang.reflect.\",\n\t\t\t\t\t\t\t\t\"java.lang.Thread.\",\n\t\t\t\t\t\t\t\t\"stanford.\");\n\t\t\t\t\t\t\n\t\t\t\t\t\t// remove first line which just restates the heading\n\t\t\t\t\t\tString[] stackTraceLines = stackTrace.split(\"\\r?\\n\");\n\t\t\t\t\t\tstackTrace = StringUtils.join(stackTraceLines, \"\\n\", /* start index */ 1, /* limit */ 0);\n\t\t\t\t\t\t\n\t\t\t\t\t\t// remove class names being shown twice\n\t\t\t\t\t\tstackTrace = stackTrace.replaceAll(\"at [a-zA-Z_0-9]+\\\\.\", \"at \");\n\t\t\t\t\t\tstackTrace = stackTrace.replaceAll(\"\\\\(\", \" (\");\n\t\t\t\t\t\tdetails.put(\"stackTrace\", stackTrace);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tdetails.put(\"testType\", testType);\n\t\t\t\t\tdetails.put(\"expected\", expected);\n\t\t\t\t\tdetails.put(\"student\", actual);\n\t\t\t\t\tdetails.put(\"actual\", actual);\n\t\t\t\t\tdetails.put(\"message\", message);\n\t\t\t\t\tdetails.put(\"valueType\", valueType);\n\t\t\t\t\tdetails.put(\"passed\", \"false\");\n\t\t\t\t} else if (run.thrown instanceof AssertionError) {\n\t\t\t\t\tAssertionError failure = (AssertionError) run.thrown;\n\t\t\t\t\t// System.out.println(\"FAILURE: \" + failure);\n\t\t\t\t\t// System.out.println(\"CAUSE  : \" + failure.getCause());\n\t\t\t\t\tString expected = \"passed assertion\";\n\t\t\t\t\tString actual = \"failed assertion\";\n\t\t\t\t\tString message = failure.getMessage();\n\t\t\t\t\t// String detailsText = \"\";\n\t\t\t\t\tString testType = UnitTestType.ASSERT_TRUE.toString();\n\t\t\t\t\tString valueType = \"\";\n\t\t\t\t\t\n\t\t\t\t\tdetails.put(\"testType\", testType);\n\t\t\t\t\tdetails.put(\"expected\", expected);\n\t\t\t\t\tdetails.put(\"student\", actual);\n\t\t\t\t\tdetails.put(\"actual\", actual);\n\t\t\t\t\tdetails.put(\"message\", message);\n\t\t\t\t\tdetails.put(\"valueType\", valueType);\n\t\t\t\t\tdetails.put(\"passed\", \"false\");\n\t\t\t\t} else {\n\t\t\t\t\t// some other exception\n\t\t\t\t\tdetails.put(\"testType\", UnitTestType.EXCEPTION.toString());\n\t\t\t\t\t// listener.setTestDetailsMessage(testName, \"test threw: \" + run.thrown);\n\t\t\t\t\tdetails.put(\"message\", \"test threw: \" + run.thrown + \"\\n\" + ExceptionUtils.stackTraceToString(run.thrown));\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tlistener.setTestDetails(testFullName, details);\n\t\t\t}\n\t\t\t\n\t\t\tif (listener != null) {\n\t\t\t\tlistener.setTestRuntime(testFullName, (int) runtimeMS);\n\t\t\t}\n\t\t} catch (InstantiationException e) {\n\t\t\tthrow new ReflectionRuntimeException(e);\n\t\t} catch (IllegalAccessException e) {\n\t\t\tthrow new ReflectionRuntimeException(e);\n\t\t} catch (InterruptedException e) {\n\t\t\t// timed out\n\t\t}\n\t}\n\t\n\tprivate static class JUnitTestRunnable implements Runnable {\n\t\tpublic Method method;\n\t\tpublic Object object;\n\t\tpublic Throwable thrown;\n\t\tpublic boolean passed = true;\n\t\t\n\t\tpublic void run() {\n\t\t\ttry {\n\t\t\t\tmethod.invoke(object);\n\t\t\t} catch (Throwable t) {\n\t\t\t\tpassed = false;\n\t\t\t\tthrown = ExceptionUtils.getUnderlyingCause(t);\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/junit/TestCategory.java",
    "content": "package stanford.cs106.junit;\n\nimport java.lang.annotation.*;\n\n@Target(ElementType.METHOD)\n@Retention(RetentionPolicy.RUNTIME)\npublic @interface TestCategory {\n\tString value() default \"\";\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/junit/UnitTestType.java",
    "content": "package stanford.cs106.junit;\n\npublic enum UnitTestType {\n    ASSERT_EQUALS,\n    ASSERT_NOT_EQUALS,\n    ASSERT_NEAR,\n    ASSERT_DIFF,\n    ASSERT_TRUE,\n    ASSERT_FALSE,\n    ASSERT_NULL,\n    ASSERT_NOT_NULL,\n    EXCEPTION,\n    NOT_EXCEPTION,\n    PASS,\n    FAIL\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/net/BackEndServer.java",
    "content": "/*\n * This file used to be SimpleServer.java but has been renamed.\n * Really this should be merged with SimpleServer but I am keeping both of\n * them for now because the C++ lib uses this particular version of\n * the server class.\n * \n * TODO: merge with SimpleServer and remove\n * \n * @author Marty Stepp and Chris Piech\n * @version 2017/05/24\n */\n\npackage stanford.cs106.net;\n\nimport java.io.*;\nimport java.net.*;\nimport java.nio.file.Files;\nimport java.util.*;\nimport java.util.regex.*;\nimport com.sun.net.httpserver.HttpExchange;\nimport com.sun.net.httpserver.HttpHandler;\nimport com.sun.net.httpserver.HttpServer;\nimport stanford.cs106.io.IORuntimeException;\nimport stanford.spl.JavaBackEnd;\nimport stanford.spl.SplPipeDecoder;\n\npublic class BackEndServer {\n\tprivate static final int DEFAULT_PORT = 8080;\n\t\n\tprivate static BackEndServer INSTANCE;\n\t\n\t\n\tpublic static synchronized BackEndServer getInstance() {\n\t\treturn getInstance(DEFAULT_PORT);\n\t}\n\t\n\tpublic static synchronized BackEndServer getInstance(int port) {\n\t\tif (INSTANCE == null) {\n\t\t\tINSTANCE = new BackEndServer(port);\n\t\t}\n\t\treturn INSTANCE;\n\t}\n\t\n\t\n\t// This is the student application that can respond to calls\n\tprivate JavaBackEnd javaBackEnd;\n\tprivate HttpServer server;\n\tprivate int port;\n\tprivate Map<Integer, HttpExchange> requestMap = new HashMap<Integer, HttpExchange>();\n\tprivate int currentRequestID = 0;\n\t\n\t/**\n\t * Method: Constructor\n\t * -------------------\n\t * All this method does is create an object that could be used to handle\n\t * HTTP requests (but at the time of construction does nothing).\n\t */\n\tpublic BackEndServer() {\n\t\tthis(DEFAULT_PORT);\n\t}\n\n\t/**\n\t * Method: Constructor\n\t * -------------------\n\t * All this method does is create an object that could be used to handle\n\t * HTTP requests (but at the time of construction does nothing).\n\t */\n\tpublic BackEndServer(int port) {\n\t\tthis.port = port;\n\t}\n\t\n\tpublic int getPort() {\n\t\treturn port;\n\t}\n\t\n\tpublic boolean isRunning() {\n\t\treturn server != null;\n\t}\n\t\n\tpublic void sendResponse(int requestID, int httpErrorCode, String contentType, String responseText) {\n//\t\tjavax.swing.JOptionPane.showMessageDialog(null, \"BackEndServer.sendResponse(requestID=\" + requestID\n//\t\t\t\t+ \", httpErrorCode=\" + httpErrorCode + \", contentType=\" + contentType + \")\");\n\t\t\n\t\tif (!requestMap.containsKey(requestID)) {\n\t\t\tthrow new IllegalArgumentException(\"Unknown request ID: \" + requestID);\n\t\t}\n\t\tHttpExchange exchange = requestMap.get(requestID);\n\t\ttry {\n\t\t\texchange.sendResponseHeaders(httpErrorCode, responseText.length());\n\t\t\tOutputStream os = exchange.getResponseBody();\n\t\t\tos.write(responseText.getBytes());\n\t\t\tos.close();\n\t\t} catch (IOException ioe) {\n\t\t\tthrow new IORuntimeException(ioe);\n\t\t}\n\t}\n\n\tpublic void sendResponseFile(int requestID, int httpErrorCode, String contentType, String responseFilePath) {\n//\t\tjavax.swing.JOptionPane.showMessageDialog(null, \"BackEndServer.sendResponseFile(requestID=\" + requestID\n//\t\t\t\t+ \", httpErrorCode=\" + httpErrorCode + \", contentType=\" + contentType + \")\");\n\t\t\n\t\tif (!requestMap.containsKey(requestID)) {\n\t\t\tthrow new IllegalArgumentException(\"Unknown request ID: \" + requestID);\n\t\t}\n\t\tHttpExchange exchange = requestMap.get(requestID);\n\t\ttry {\n\t\t\tOutputStream os = exchange.getResponseBody();\n\t\t\tFile file = new File(responseFilePath);\n\t\t\texchange.sendResponseHeaders(httpErrorCode, file.length());\n\t\t\tFiles.copy(file.toPath(), os);\n\t\t\tos.close();\n\t\t} catch (IOException ioe) {\n\t\t\tthrow new IORuntimeException(ioe);\n\t\t}\n\t}\n\t\n\tpublic void setJavaBackEnd(JavaBackEnd javaBackEnd) {\n\t\tthis.javaBackEnd = javaBackEnd;\n\t}\n\n\t/**\n\t * Method: Start\n\t * -------------\n\t * This method starts a server on the given port. It is hard coded to handle\n\t * img requests and resource requests specially by just reading the files and\n\t * returning them. All other requests should be handled by the users code.\n\t */\n\tpublic void start() {\n\t\tif (isRunning()) {\n\t\t\tstop();\n\t\t}\n\t\t\n\t\ttry {\n\t\t\tserver = HttpServer.create(new InetSocketAddress(port), 0);\n\t\t\t// server.createContext(\"/img\", new BottleFileHandler());\n\t\t\t// server.createContext(\"/resources\", new BottleFileHandler());\n\t\t\tserver.createContext(\"/\", new BottleHandler());\n\t\t\tserver.setExecutor(null); // creates a default executor\n\t\t\tserver.start();\n\t\t} catch (IOException e) {\n\t\t\te.printStackTrace();\n\t\t}\n\t}\n\t\n\t/**\n\t * ...\n\t */\n\tpublic void stop() {\n\t\tif (isRunning()) {\n\t\t\tserver.stop(0);\n\t\t\tserver = null;\n\t\t}\n\t}\n\t\n\t/**\n\t * Method: Render Template\n\t * -----------------------\n\t * OPTIONAL: This method takes in a template (currently it takes the path to a template)\n\t * and provides functionality for (a) importing other slivers of HTML and (b) inserting\n\t * values from a map into all places in the template with the sequence {{key}}. See\n\t * resources/index.html for an example.\n\t */\n\tpublic static String renderTemplate(String templatePath, Map<String, String> args) {\n\t\ttry {\n\t\t\t// This handles part (b)\n\t\t\tScanner htmlScanner = new Scanner(new File(templatePath));\n\t\t\tString html = htmlScanner.useDelimiter(\"\\\\Z\").next();\n\t\t\thtmlScanner.close();\n\t\t\tif(args != null) {\n\t\t\t\tfor(String key : args.keySet()) {\n\t\t\t\t\tString value = args.get(key);\n\t\t\t\t\thtml = html.replace(\"{{\" + key + \"}}\" , value);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t// This handles inclues, part (a). Recursively applies render to included string\n\t\t\tString regex=\"\\\\%include\\\\[(.*)]\";\n\t\t\tPattern includePattern = Pattern.compile(regex);\n\t\t\tMatcher m = includePattern.matcher(html);\n\t\t\tString injectedHtml = html;\n\t\t\twhile (m.find()) {\n\t\t\t    String includePath = m.group(1);\n\t\t\t    String injectHtml = renderTemplate(includePath, args);\n\t\t\t    injectedHtml = injectedHtml.replace(\"%include[\" + includePath + \"]\", injectHtml);    \n\t\t\t}\n\t\t\treturn injectedHtml;\n\t\t} catch(FileNotFoundException e) {\n\t\t\tthrow new RuntimeException(e);\n\t\t}\n\t}\n\t\n\t//=--------------- Private -------------=//\n\t\n\t\n\t/**\n\t * Method: Get URI String\n\t * ----------------------\n\t * Gets the part of the http GET request after localhost:8000.\n\t */\n\tprivate static String getUriString(HttpExchange exchange) {\n\t\tURI uri = exchange.getRequestURI();\n\t\tString uriStr = uri.toString();\n\t\t\n\t\t// Chris was removing the leading /, but I think we want it for fidelity - Marty\n\t\t// uriStr = uriStr.substring(1);\n\t\t\n\t\treturn uriStr;\n\t}\n\t\n\t/**\n\t * Class: BottleFileHandler\n\t * ------------------------\n\t * For some files (eg images and resources) you want the server to \n\t * simply return the file. This handler simply returns the file.\n\t */\n//\tprivate class BottleFileHandler implements HttpHandler {\n//\t\tpublic void handle(HttpExchange exchange) throws IOException {\n//\t\t\tString uriStr = getUriString(exchange);\n//\t\t\tFile file = new File(uriStr);\n//\t\t\texchange.sendResponseHeaders(200, file.length());\n//\t\t\tOutputStream outputStream = exchange.getResponseBody();\n//\t\t\tFiles.copy(file.toPath(), outputStream);\n//\t\t\toutputStream.close();\n//\t\t}\n//\t}\n\n\t/**\n\t * Class: BottleHandler\n\t * -----------------------\n\t * This class passes on an HTTP request to the \"webApp\" which the\n\t * user writes.\n\t */\n\tprivate class BottleHandler implements HttpHandler {\n\t\tpublic void handle(HttpExchange exchange) throws IOException {\n\t\t\tString requestUrl = getUriString(exchange);\n\t\t\tint requestID = 0;\n\t\t\tsynchronized (BackEndServer.this) {\n\t\t\t\trequestID = currentRequestID++;\n\t\t\t\trequestMap.put(requestID, exchange);\n\t\t\t}\n\t\t\t\n\t    \t// we will wait for the C++ code to send back a response\n\t\t\tjavaBackEnd.acknowledgeEvent(\"event:serverRequest(%d, %d, \\\"%s\\\")\",\n\t\t\t\t\t(long) javaBackEnd.getEventTime(),\n\t    \t\t\trequestID,\n\t    \t\t\tSplPipeDecoder.encode(requestUrl));\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/net/Downloader.java",
    "content": "package stanford.cs106.net;\n\nimport java.io.BufferedInputStream;\nimport java.io.File;\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.io.OutputStream;\nimport java.io.PrintStream;\nimport java.net.URL;\nimport java.util.Enumeration;\nimport java.util.Map;\nimport java.util.TreeMap;\nimport java.util.zip.ZipEntry;\nimport java.util.zip.ZipFile;\n\npublic class Downloader {\n\tprivate Downloader() {\n\t\t// empty\n\t}\n\t\n\t// Downloads the file at the given URL and saves it to the local disk.\n\t// For example \"www.foo.com/bar/baz/Mumble.txt\" saves to \"Mumble.txt\".\n\t// Returns the file name of the saved local file.\n\tpublic static String downloadFile(URL url) throws IOException {\n\t\tString fileName = new File(url.getFile()).getName();\n\t\t// if (!(new File(fileName).exists())) {\n\t\t\tOutputStream output = new PrintStream(fileName);\n\t\t\tInputStream input = new BufferedInputStream(url.openStream());\n\t\t\tbyte[] buffer = new byte[512000];\n\t\t\tint numRead;\n\t\t\twhile ((numRead = input.read(buffer)) != -1) {\n\t\t\t\toutput.write(buffer, 0, numRead);\n\t\t\t}\n\t\t\toutput.close();\n\t\t// }\n\t\treturn fileName;\n\t}\n\n\t// Downloads the contents of the .zip file at the given URL, and\n\t// returns them as a map from filenames to the bytes of each file.\n\tpublic static Map<String, byte[]> getZipFileContents(URL url)\n\t\t\tthrows IOException {\n\t\tString fileName = downloadFile(url);\n\t\tZipFile zip = new ZipFile(fileName);\n\t\tMap<String, byte[]> zipFilesMap = new TreeMap<String, byte[]>();\n\n\t\t// read each file entry from the zip archive\n\t\tfor (Enumeration<? extends ZipEntry> enu = zip.entries(); enu\n\t\t\t\t.hasMoreElements();) {\n\t\t\tZipEntry ze = enu.nextElement();\n\t\t\tif (ze.isDirectory()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tint size = (int) ze.getSize();\n\t\t\tif (size < 0) {\n\t\t\t\tcontinue; // -1 means unknown size.\n\t\t\t}\n\n\t\t\tInputStream input = zip.getInputStream(ze);\n\t\t\tbyte[] b = new byte[size];\n\t\t\tint offset = 0;\n\t\t\twhile (size - offset > 0) {\n\t\t\t\tint bytesRead = input.read(b, offset, size - offset);\n\t\t\t\tif (bytesRead < 0) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\toffset += bytesRead;\n\t\t\t}\n\n\t\t\tzipFilesMap.put(ze.getName(), b);\n\t\t}\n\t\tzip.close();\n\t\treturn zipFilesMap;\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/net/NetworkManager.java",
    "content": "package stanford.cs106.net;\n\n/*\n * General reusable version of event-driven network manager object.\n *\n * @author Marty Stepp\n * @version 2017/05/26\n * - bug fix for shutdown socket exception\n * @version 2015/05/24\n * - initial version for 15sp\n */\n\nimport java.awt.event.*;\nimport java.io.*;\nimport java.net.*;\nimport java.util.*;\n\nimport acm.gui.Event;\nimport stanford.cs106.io.IORuntimeException;\n\npublic class NetworkManager {\n\t// class constants\n\tprivate static final boolean DEBUG = false;\n\t\n\tprivate static final String IP_SERVICE_URL = \"http://www.martystepp.com/critters/ip.php\";\n\n\tprivate static String hostName = null;\n\tprivate static String ipAddress = null;\n\tprivate static String ipAddresses = \"\";\n\t\n\tprivate static class NetworkRunner implements Runnable {\n\t\tprivate ActionListener listener;\n\t\t\n\t\tpublic NetworkRunner(ActionListener listener) {\n\t\t\tthis.listener = listener;\n\t\t}\n\t\t\n\t\tpublic void run() {\n\t\t\tif (ipAddress == null) {\n\t\t\t\t// use host name to name classes sent over the wire\n\t\t\t\t// also grab IP address(es) of local computer\n\t\t\t\ttry {\n\t\t\t\t\tInetAddress localhost = InetAddress.getLocalHost();\n\t\t\t\t\thostName = localhost.getHostName();\n\t\t\t\t\tipAddress = localhost.getHostAddress();\n\n\t\t\t\t\tfor (InetAddress addr : InetAddress.getAllByName(hostName)) {\n\t\t\t\t\t\tipAddresses += \" \" + addr.getHostAddress();\n\t\t\t\t\t}\n\t\t\t\t\tipAddresses = ipAddresses.trim();\n\t\t\t\t} catch (UnknownHostException e) {\n\t\t\t\t\thostName = \"unknown_host\";\n\t\t\t\t\tipAddress = ipAddresses = \"127.0.0.1\";\n\t\t\t\t} catch (SecurityException e) {\n\t\t\t\t\thostName = \"unknown_host\";\n\t\t\t\t\tipAddress = ipAddresses = \"127.0.0.1\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\t// try to find out my IP address over the network\n\t\t\t\tURL ipServiceURL = new URL(IP_SERVICE_URL);\n\t\t\t\tScanner input = new Scanner(ipServiceURL.openStream());\n\t\t\t\tif (input.hasNextLine()) {\n\t\t\t\t\tipAddress = input.nextLine().trim();\n\t\t\t\t\tipAddresses = ipAddress + \"  (local: \" + ipAddresses + \")\";\n\t\t\t\t}\n\t\t\t\tinput.close();\n\t\t\t} catch (Exception e) {\n\t\t\t\tif (DEBUG) {\n\t\t\t\t\te.printStackTrace();\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tlistener.actionPerformed(null);\n\t\t}\n\t}\n\n\tpublic static void findIPAddress(ActionListener listener) {\n\t\tThread networkThread = new Thread(new NetworkRunner(listener));\n\t\tnetworkThread.start();\n\t}\n\n\t// Returns this computer's host name.\n\tpublic static String getHostName() {\n\t\treturn hostName;\n\t}\n\n\t// Returns this computer's IP address.\n\tpublic static String getIpAddress() {\n\t\treturn ipAddress;\n\t}\n\n\t// Returns this computer's IP address.\n\tpublic static String getIpAddresses() {\n\t\treturn ipAddresses;\n\t}\n\n\t// fields\n\tprivate int port;\n\tprivate boolean shouldContinue;\n\tprivate List<Message> outQueue; // queue of messages to send\n\tprivate Thread sendThread;\n\tprivate Thread receiveThread;\n\tprivate ServerSocket receiveSrvSock;\n\tprivate Event<String[]> receive; // events to represent messages received\n\tprivate Event<Exception> error; // and errors that occur\n\n\t// Constructs a network manager at the given port.\n\tpublic NetworkManager(int port) {\n\t\tthis.port = port;\n\t\tshouldContinue = true;\n\t\toutQueue = Collections.synchronizedList(new LinkedList<Message>());\n\t\treceive = new Event<String[]>();\n\t\terror = new Event<Exception>();\n\t}\n\n\t// Returns this network manager's observable error event object,\n\t// so observers can be notified about errors and respond to them.\n\tpublic Event<? extends Exception> getErrorEvent() {\n\t\treturn error;\n\t}\n\n\t// Returns this network manager's port.\n\tpublic int getPort() {\n\t\treturn port;\n\t}\n\n\t// Returns this network manager's observable receive event object,\n\t// so observers can be notified when messages are received.\n\tpublic Event<String[]> getReceiveEvent() {\n\t\treturn receive;\n\t}\n\n\t// Sends a message to the given host containing the given strings.\n\tpublic void send(String host, String... strings) {\n\t\tsynchronized (outQueue) {\n\t\t\tMessage message = new Message(host, strings);\n\t\t\toutQueue.add(message);\n\t\t}\n\t}\n\t\n\t// Sends a message to the given host as an HTTP POST.\n\t// reference: http://stackoverflow.com/questions/4205980/java-sending-http-parameters-via-post-method-easily\n\tpublic String sendHttp(String url, Map<String, Object> params) {\n        try {\n\t\t\tStringBuilder postData = new StringBuilder();\n\t        for (String key : params.keySet()) {\n\t            if (postData.length() != 0) postData.append('&');\n\t            postData.append(URLEncoder.encode(key, \"UTF-8\"));\n\t            postData.append('=');\n\t            postData.append(URLEncoder.encode(String.valueOf(params.get(key)), \"UTF-8\"));\n\t        }\n\t        byte[] postDataBytes = postData.toString().getBytes(\"UTF-8\");\n\t\t\t\n\t\t\tURL uurl = new URL(url);\n\t\t\tHttpURLConnection conn = (HttpURLConnection) uurl.openConnection();           \n\t\t\tconn.setDoOutput( true );\n\t\t\tconn.setInstanceFollowRedirects(false);\n\t\t\tconn.setRequestMethod(\"POST\");\n\t\t\tconn.setRequestProperty(\"Content-Type\", \"application/x-www-form-urlencoded\"); \n\t\t\tconn.setRequestProperty(\"charset\", \"utf-8\");\n\t\t\tconn.setRequestProperty( \"Content-Length\", Integer.toString(postDataBytes.length));\n\t        conn.setDoOutput(true);\n\t\t\tconn.setUseCaches(false);\n\t        conn.getOutputStream().write(postDataBytes);\n\t        \n\t        StringBuilder out = new StringBuilder();\n\t        Reader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), \"UTF-8\"));\n\t        for (int c = in.read(); c != -1; c = in.read()) {\n\t            out.append((char) c);\n\t        }\n\t        return out.toString();\n        } catch (IOException ioe) {\n        \tthrow new IORuntimeException(ioe);\n        }\n\t}\n\n\t// Notifies this network manager that you want it to shut down\n\t// and stop listening for messages.\n\tpublic void stop() {\n\t\tshouldContinue = false;\n\t\ttry {\n\t\t\tif (receiveSrvSock != null) {\n\t\t\t\treceiveSrvSock.close();\n\t\t\t}\n\t\t} catch (Exception e) {\n\t\t\t// empty\n\t\t}\n\n\t\tif (sendThread != null) {\n\t\t\tsendThread.interrupt();\n\t\t\tsendThread = null;\n\t\t}\n\t\tif (receiveThread != null) {\n\t\t\treceiveThread.interrupt();\n\t\t\treceiveThread = null;\n\t\t}\n\t}\n\n\t// Starts listening for messages on the network.\n\tpublic void start() throws IOException {\n\t\tshouldContinue = true;\n\t\tif (sendThread == null) {\n\t\t\tsendThread = new Thread(new SendRunnable());\n\t\t\treceiveThread = new Thread(new ReceiveRunnable());\n\t\t}\n\n\t\tsendThread.start();\n\t\treceiveThread.start();\n\t}\n\n\t// Listening thread that waits for messages to arrive.\n\tprivate class ReceiveRunnable implements Runnable {\n\t\tpublic ReceiveRunnable() throws IOException {\n\t\t\treceiveSrvSock = new ServerSocket(port);\n\t\t}\n\n\t\t// Runs the listening thread.\n\t\tpublic void run() {\n\t\t\ttry {\n\t\t\t\twhile (shouldContinue && !receiveSrvSock.isClosed()) {\n\t\t\t\t\t// wait for a message to arrive\n\t\t\t\t\tSocket sock = receiveSrvSock.accept();\n\t\t\t\t\tInputStream stream = sock.getInputStream();\n\t\t\t\t\tObjectInputStream ois = new ObjectInputStream(stream);\n\n\t\t\t\t\t// read message\n\t\t\t\t\tString[] strings = (String[]) ois.readObject();\n\t\t\t\t\tif (DEBUG)\n\t\t\t\t\t\tSystem.out.println(\"Received on port \" + port + \":\\n\"\n\t\t\t\t\t\t\t\t+ Arrays.toString(strings));\n\n\t\t\t\t\t// notify observers that message has arrived\n\n\t\t\t\t\treceive.fire(strings);\n\t\t\t\t}\n\t\t\t} catch (SocketException se) {\n\t\t\t\t// don't notify observers on socket exception; this probably means\n\t\t\t\t// the program is shutting down\n\t\t\t\t\n\t\t\t\t// (empty)\n\t\t\t} catch (Exception e) {\n\t\t\t\t// notify observers that an error occurred\n\t\t\t\t// don't notify observers on interrupt exception; this means thread/prog is shutting down\n\t\t\t\tif (!(e instanceof InterruptedException)) {\n\t\t\t\t\terror.fire(e);\n\t\t\t\t}\n//\t\t\t} catch (Throwable t) {\n//\t\t\t\t// don't notify observers on Errors\n//\t\t\t\t// (empty)\n\t\t\t}\n\t\t}\n\t}\n\n\t// Sending thread that outputs messages from the output queue to the\n\t// network.\n\tprivate class SendRunnable implements Runnable {\n\t\tpublic void run() {\n\t\t\ttry {\n\t\t\t\twhile (shouldContinue) {\n\t\t\t\t\t// test-and-test-and-set paradigm\n\t\t\t\t\tif (!outQueue.isEmpty()) {\n\t\t\t\t\t\tsynchronized (outQueue) {\n\t\t\t\t\t\t\tif (!outQueue.isEmpty()) {\n\t\t\t\t\t\t\t\t// grab message from the queue\n\t\t\t\t\t\t\t\tMessage message = outQueue.remove(0);\n\t\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t// send the message\n\t\t\t\t\t\t\t\t\tSocket sock = new Socket(message.host, port);\n\t\t\t\t\t\t\t\t\tOutputStream stream = sock.getOutputStream();\n\t\t\t\t\t\t\t\t\tObjectOutputStream oos = new ObjectOutputStream(\n\t\t\t\t\t\t\t\t\t\t\tstream);\n\t\t\t\t\t\t\t\t\toos.writeObject(message.strings);\n\t\t\t\t\t\t\t\t\tif (DEBUG)\n\t\t\t\t\t\t\t\t\t\tSystem.out.println(\"Sent on port \" + port\n\t\t\t\t\t\t\t\t\t\t\t\t+ \":\\n\" + message);\n\t\t\t\t\t\t\t\t\tsock.close();\n\t\t\t\t\t\t\t\t} catch (IOException e) {\n\t\t\t\t\t\t\t\t\t// notify observers that an error occurred\n\t\t\t\t\t\t\t\t\terror.fire(e);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// wait 1 second between checks for messages so this thread\n\t\t\t\t\t// won't drain 100% of the CPU\n\t\t\t\t\ttry {\n\t\t\t\t\t\tThread.sleep(1000);\n\t\t\t\t\t} catch (InterruptedException e) {\n\t\t\t\t\t\t// empty\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (Exception e) {\n\t\t\t\tif (!(e instanceof InterruptedException)) {\n\t\t\t\t\tthrow new RuntimeException(e);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Convenience class to represent messages about to be sent over the network.\n\tprivate static class Message implements Serializable {\n\t\t// class constants\n\t\tprivate static final long serialVersionUID = 0;\n\n\t\t// fields\n\t\tpublic String host;\n\n\t\tpublic String[] strings;\n\n\t\t// Constructs a message to the given host containing the given strings.\n\t\tpublic Message(String host, String[] strings) {\n\t\t\tthis.host = host;\n\t\t\tthis.strings = strings;\n\t\t}\n\n\t\t// Returns debug text about this message.\n\t\tpublic String toString() {\n\t\t\treturn \"Message{host=\" + host + \", strings=\"\n\t\t\t\t\t+ Arrays.toString(strings) + \"}\";\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/net/Request.java",
    "content": "/*\n * This class was added to support the client/server versions of\n * the FacePamphlet and Mini Twitter assignments.\n * \n * @author Marty Stepp and Chris Piech\n * @version 2017/05/24\n */\n\npackage stanford.cs106.net;\n\nimport java.io.*;\nimport java.net.*;\nimport java.util.*;\n\n/**\n * A Request object encapsulates a basic HTTP request along with its\n * various query parameter key/value pairs.\n */\npublic class Request {\n\t// HTTP command verb; used as \"http://server:port/verb\".\n\tprivate String command;\n\t\n\t// URL query parameters as key/value pairs;\n\t// used in URL as \"http://server:port/verb?param1=value1&param2=value2...&paramN=valueN\".\n\tprivate Map<String, String> params;\n\n\t/**\n\t * URL-decodes the given string.\n\t */\n\tpublic static String decode(String str) {\n\t\ttry {\n\t\t\treturn URLDecoder.decode(str, \"UTF-8\");\n\t\t} catch (UnsupportedEncodingException e) {\n\t\t\tthrow new IllegalArgumentException(e);\n\t\t}\n\t}\n\n\t/**\n\t * URL-encodes the given string.\n\t */\n\tpublic static String encode(String str) {\n\t\ttry {\n\t\t\treturn URLEncoder.encode(str, \"UTF-8\");\n\t\t} catch (UnsupportedEncodingException e) {\n\t\t\tthrow new IllegalArgumentException(e);\n\t\t}\n\t}\n\t\n\t/**\n\t * Converts the given string into a Request object,\n\t * parsing and separating any of its query parameters.\n\t */\n\tpublic static Request fromUrl(String url) {\n\t\tString[] requestParts = url.split(\"\\\\?\");\n\t\tString command = requestParts[0];\n\t\tRequest request = new Request(command);\n\t\tif (requestParts.length == 2) {\n\t\t\tString paramStr = requestParts[1];\n\t\t\tString[] paramParts = paramStr.split(\"&\");\n\t\t\tfor (String paramPart : paramParts) {\n\t\t\t\tString key = paramPart.split(\"=\")[0];\n\t\t\t\tString value = \"\";\n\t\t\t\tif (paramPart.split(\"=\").length == 2) {\n\t\t\t\t\tvalue = paramPart.split(\"=\")[1];\n\t\t\t\t} // else empty value or missing \"=\" (this is allowed)\n\t\t\t\trequest.addRaw(key, value);\n\t\t\t}\n\t\t} \n\t\treturn request;\n\t}\n\t\n\t/**\n\t * Converts the given URL into a Request object,\n\t * parsing and separating any of its query parameters.\n\t */\n\tpublic static Request fromUrl(URL url) {\n\t\treturn fromUrl(url.toString());\n\t}\n\n\t/**\n\t * Constructs a new Request object with the given command verb.\n\t */\n\tpublic Request(String cmd) {\n\t\tif (cmd == null) {\n\t\t\tthrow new NullPointerException(\"null command verb passed\");\n\t\t}\n\t\tcommand = sanitize(cmd)\n\t\t\t\t.replace(\"?\", \"_\")\n\t\t\t\t.replace(\" \", \"_\")\n\t\t\t\t.replace(\"&\", \"_\");\n\t\tparams = new LinkedHashMap<String, String>();\n\t}\n\n\t/**\n\t * Constructs a new Request object with the given command verb\n\t * and the given set of parameter key/value pairs.\n\t */\n\tpublic Request(String cmd, String... parameters) {\n\t\tthis(cmd);\n\t\taddParams(parameters);\n\t}\n\n\t/**\n\t * Adds a new query parameter with the given name and an empty value.\n\t */\n\tpublic void addParam(String key) {\n\t\taddParam(key, /* value */ \"\");\n\t}\n\n\t/**\n\t * Adds a new query parameter with the given name and value.\n\t */\n\tpublic void addParam(String key, String value) {\n\t\tparams.put(sanitize(key), encode(value));\n\t}\n\t\n\t/**\n\t * Adds new query parameters with the given name/value pairs,\n\t * passed as a var-args array in the order K1, V1, K2, V2, etc.\n\t */\n\tpublic void addParams(String... params) {\n\t\tif (params != null) {\n\t\t\tfor (int i = 0; i < params.length - 1; i += 2) {\n\t\t\t\tif (params[i] == null) {\n\t\t\t\t\tthrow new NullPointerException(\"null parameter name #\" + (i / 2 + 1) + \" passed\");\n\t\t\t\t}\n\t\t\t\tString name = String.valueOf(params[i]);\n\t\t\t\tString value = String.valueOf(params[i + 1]);\n\t\t\t\taddParam(name, value);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Adds a new query parameter with the given name and value.\n\t * The value is not URL-encoded before including it.\n\t */\n\tpublic void addRaw(String key, String value) {\n\t\tparams.put(sanitize(key), value);\n\t}\n\n\t/**\n\t * Returns this request's HTTP command verb.\n\t */\n\tpublic String getCommand() {\n\t\treturn command;\n\t}\n\n\t/**\n\t * Returns the value of this request's query parameter with the given name.\n\t * The parameter value is URL-decoded before returning it.\n\t * If the request contains no such parameter, returns null.\n\t */\n\tpublic String getParam(String key) {\n\t\tif (hasParam(key)) {\n\t\t\treturn decode(params.get(sanitize(key)));\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\t\n\t/**\n\t * Returns all of this request's query parameters as a map.\n\t * The map returned is immutable and cannot be directly modified.\n\t * If the request contains no parameters, returns an empty map.\n\t */\n\tpublic Map<String, String> getParams() {\n\t\treturn Collections.unmodifiableMap(params);\n\t}\n\t\n\t/**\n\t * Returns the value of this request's query parameter with the given name.\n\t * The parameter value is *not* URL-decoded before returning it.\n\t * If the request contains no such parameter, returns null.\n\t */\n\tpublic String getRaw(String key) {\n\t\treturn params.get(sanitize(key));\n\t}\n\t\n\t/**\n\t * Returns true if this request contains a query parameter with the given name.\n\t */\n\tpublic boolean hasParam(String key) {\n\t\treturn params.containsKey(sanitize(key));\n\t}\n\t\n\t/**\n\t * Removes the query parameter with the given name from this request.\n\t * If no such query parameter was present, has no effect.\n\t */\n\tpublic void removeParam(String key) {\n\t\tparams.remove(sanitize(key));\n\t}\n\n\t// strips illegal URL chars out of a parameter key name\n\tprivate String sanitize(String key) {\n\t\treturn String.valueOf(key).trim();\n\t}\n\n\t/**\n\t * Converts this request into a URL string that could be used for an\n\t * HTTP GET request, such as\n\t * \"http://server:port/verb?param1=value1&param2=value2...&paramN=valueN\".\n\t */\n\tpublic String toGetRequest() {\n\t\tString getRequest = command;\n\t\tif (!params.isEmpty()) {\n\t\t\tboolean isFirst = true;\n\t\t\tfor (String key : params.keySet()) {\n\t\t\t\tif (isFirst) {\n\t\t\t\t\tgetRequest += \"?\" + key + \"=\" + params.get(key);\n\t\t\t\t\tisFirst = false;\n\t\t\t\t} else {\n\t\t\t\t\tgetRequest += \"&\" + key + \"=\" + params.get(key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn getRequest;\n\t}\n\n\t/**\n\t * Returns a string representation of this request for debugging.\n\t */\n\t@Override\n\tpublic String toString() {\n\t\tString str = command + \" (\";\n\t\tboolean isFirst = true;\n\t\tfor (String p : params.keySet()) {\n\t\t\tif (!isFirst) {\n\t\t\t\tstr += \", \";\n\t\t\t}\n\t\t\tstr += p + \"=\" + getParam(p); \n\t\t\tisFirst = false;\n\t\t}\n\t\tstr += \")\";\n\t\treturn str;\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/net/SimpleClient.java",
    "content": "/*\n * This class was added to support the client/server versions of\n * the FacePamphlet and Mini Twitter assignments.\n * \n * @author Marty Stepp and Chris Piech\n * @version 2017/05/24\n */\n\npackage stanford.cs106.net;\n\nimport java.io.*;\nimport java.net.*;\nimport stanford.cs106.io.*;\n\n/**\n * This class implements a basic synchronous HTTP client.\n * It can connect to an HTTP server on a given port (perhaps a SimpleServer?),\n * send it requests, and receive/return their responses.\n */\npublic class SimpleClient {\n\t// set to true to see debug println messages\n\tprivate static final boolean DEBUG = true;\n\t\n\t/** A special error prefix that will appear at the start of error responses. */\n\tpublic static final String ERROR_KEY = \"Error:\";\n\t\n\t/**\n\t * A special request parameter used to indicate that the server should\n\t * maintain a session with this client.\n\t */\n\tpublic static final String SESSION_KEY_PARAM_NAME = \"SESSION_ID\";\n\t\n\t// server to connect to, e.g. \"http://localhost:8080/\"\n\tprivate String host;\n\t\n\t// a unique key to store session data for this client;\n\t// default null, but set to a hash/time string if session is started\n\tprivate String sessionKey;\n\t\n\t/**\n\t * Initialiazes a new client to connect to the given HTTP server/host.\n\t * @param host e.g. \"http://localhost:8080/\"\n\t */\n\tpublic SimpleClient(String host) {\n\t\tif (!host.endsWith(\"/\")) {\n\t\t\thost = host + \"/\";\n\t\t}\n\t\tthis.host = host;\n\t}\n\n//\tpublic GImage getImage(String fileName) {\n//\t\ttry {\n//\t\t\tURL url = new URL(host + \"images/\" + fileName);\n//\t\t\tImage image = ImageIO.read(url);\n//\t\t\treturn new GImage(image);\n//\t\t} catch(IOException e) {\n//\t\t\tthrow new RuntimeException(e);\n//\t\t}\n//\t}\n\n\t/**\n\t * Initiates a synchronous HTTP request to this client's given server host,\n\t * waiting for the HTTP response to be sent back, and returns the response.\n\t */\n\tpublic String makeRequest(Request request) {\n\t\tif (request == null) {\n\t\t\tthrow new NullPointerException(\"null request passed\");\n\t\t}\n\t\ttry {\n\t\t\tif (sessionIsInProgress()) {\n\t\t\t\trequest.addParam(SESSION_KEY_PARAM_NAME, Request.encode(sessionKey));\n\t\t\t}\n\t\t\tURL destination = new URL(host + request.toGetRequest());\n\t\t\tif (DEBUG) System.out.println(\"SimpleClient: making request: \" + destination.toString());\n\t\t\t\n\t\t\tHttpURLConnection conn = (HttpURLConnection) destination.openConnection();\n\t\t\tconn.setRequestMethod(\"GET\");\n\t\t\tString response = IOUtils.readEntireStream(conn.getInputStream());\n\t\t\tif (DEBUG) System.out.println(\"SimpleClient: received response: \" + response + \" (\" + response.length() + \" chars)\");\n\t\t\t\n\t\t\tif (response.startsWith(ERROR_KEY)) {\n\t\t\t\tString msg = response.substring(ERROR_KEY.length());\n\t\t\t\tthrow new IORuntimeException(msg.trim());\n\t\t\t}\n\t\t\treturn response;\n\t\t} catch (ConnectException e) {\n\t\t\tthrow new IORuntimeException(\"Unable to connect to the server. Did you start it?\");\n\t\t} catch (MalformedURLException e) {\n\t\t\tthrow new IllegalArgumentException(\"Invalid URL: \" + (host + request.toGetRequest()));\n\t\t} catch (IOException e) {\n\t\t\tthrow new IORuntimeException(e);\n\t\t}\n\t}\n\t\n\t/**\n\t * Initiates a synchronous HTTP request to this client's given server host,\n\t * waiting for the HTTP response to be sent back, and returns the response.\n\t */\n\tpublic String makeRequest(String command, String... params) {\n\t\tRequest request = new Request(command, params);\n\t\treturn makeRequest(request);\n\t}\n\t\n//\tpublic String saveImage(String fileName) {\n//\t\ttry {\n//\t\t\tbyte[] bytes = Files.readAllBytes(Paths.get(\"images/\"+fileName));\n//\t\t\tString contents = Base64.getUrlEncoder().encodeToString(bytes);\n//\t\t\tString params = \"newImg\";\n//\t\t\tparams += \"?file=\" + contents;\n//\t\t\tparams += \"&fileName=\" + fileName;\n//\t\t\tif (sessionInProgress()) {\n//\t\t\t\tString key = sessionKey;\n//\t\t\t\ttry {\n//\t\t\t\t\tkey = URLEncoder.encode(sessionKey, \"UTF-8\");\n//\t\t\t\t} catch (UnsupportedEncodingException uee) {\n//\t\t\t\t\t// empty\n//\t\t\t\t}\n//\t\t\t\tparams += \"&SESSION_KEY=\" + key;\n//\t\t\t}\n//\t\t\tURL destination = new URL(host + params);\n//\t\t\tHttpURLConnection conn = (HttpURLConnection) destination.openConnection();\n//\t\t\tconn.setRequestMethod(\"GET\");\n//\t\t\tBufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));\n//\t\t\tString line = null;\n//\t\t\tStringBuilder result = new StringBuilder();\n//\t\t\twhile ((line = rd.readLine()) != null) {\n//\t\t\t\tresult.append(line);\n//\t\t\t}\n//\t\t\tString fromServer = result.toString();\n//\t\t\trd.close();\n//\t\t\treturn fromServer;\n//\t\t} catch (IOException e) {\n//\t\t\tthrow new RuntimeException(e);\n//\t\t}\n//\t}\n\t\n\t/**\n\t * Ends any current session between this client and the server host.\n\t * If no session is in progress, has no effect.\n\t */\n\tpublic void sessionEnd() {\n\t\tsessionKey = null;\n\t}\n\t\n\t/**\n\t * Returns true if a session is currently in progress between this client\n\t * and the server host.\n\t */\n\tpublic boolean sessionIsInProgress() {\n\t\treturn sessionKey != null;\n\t}\n\t\n\t/**\n\t * Begins a session between this client and the server host.\n\t * If a session is already in progress, has no effect.\n\t */\n\tpublic void sessionStart() {\n\t\tif (!sessionIsInProgress()) {\n\t\t\tsessionKey = \"\";\n\t\t\tsessionKey += Integer.toString(hashCode(), /* radix */ 16);\n\t\t\tsessionKey += \"_\";\n\t\t\tsessionKey += Long.toString(System.currentTimeMillis(), /* radix */ 16);\n\t\t}\n\t}\n\t\n\t/**\n\t * Returns a string representation of this client.\n\t */\n\t@Override\n\tpublic String toString() {\n\t\treturn getClass().getSimpleName() + \"{\"\n\t\t\t\t+ \"host=\\\"\" + host + \"\\\"\"\n\t\t\t\t+ (sessionKey == null ? \"\" : (\", sessionKey=\\\"\" + sessionKey + \"\\\"\"))\n\t\t\t\t+ \"}\";\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/net/SimpleServer.java",
    "content": "/*\n * This class was added to support the client/server versions of\n * the FacePamphlet and Mini Twitter assignments.\n * \n * @author Marty Stepp and Chris Piech\n * @version 2017/05/24\n */\n\npackage stanford.cs106.net;\n\nimport java.io.*;\nimport java.net.*;\nimport java.nio.file.*;\nimport java.util.*;\nimport com.sun.net.httpserver.*;\nimport stanford.cs106.io.*;\n\n/**\n * This class implements a simple synchronous HTTP server that can listen on a\n * given port and respond to requests made by clients.\n */\npublic class SimpleServer {\n\t// set to true to see debug println messages\n\tprivate static final boolean DEBUG = true;\n\t\n\t/** Default port to listen for requests. */\n\tpublic static final int DEFAULT_PORT = 8080;\n\t\n\t// actual http server to listen for requests\n\tprivate HttpServer server;\n\t\n\t// student app that can respond to calls\n\tprivate SimpleServerListener webApp;\n\t\n\t// port to listen to\n\tprivate int port;\n\t\n\t// really this should be Map<> not HashMap<> but CS 106A students are not taught about such interfaces\n\tprivate HashMap<String, HashMap<String, String>> sessionDataAll;\n\n\t/**\n\t * Constructs a new server that will listen on the given port.\n\t * The server does not start listening until start() is called.\n\t * @param port   the port to listen on, up to 65535\n\t */\n\tpublic SimpleServer(int port) {\n\t\tthis(/* webApp */ null, port);\n\t}\n\t\n\t/**\n\t * Constructs a new server that will listen on a default port, with the given\n\t * listener to be notified as each request comes in.\n\t * The server does not start listening until start() is called.\n\t * @param webApp listener to notify on each request\n\t */\n\tpublic SimpleServer(SimpleServerListener webApp) {\n\t\tthis(webApp, /* port */ DEFAULT_PORT);\n\t}\n\t\n\t/**\n\t * Constructs a new server that will listen on the given port, with the given\n\t * listener to be notified as each request comes in.\n\t * The server does not start listening until start() is called.\n\t * @param webApp listener to notify on each request\n\t * @param port   the port to listen on, up to 65535\n\t */\n\tpublic SimpleServer(SimpleServerListener webApp, int port) {\n\t\tif (port <= 0 || port > 65535) {\n\t\t\tthrow new IllegalArgumentException(\"Port out of range: \" + port);\n\t\t}\n\t\t\n\t\tthis.webApp = webApp;\n\t\tthis.port = port;\n\t\tthis.sessionDataAll = new LinkedHashMap<String, HashMap<String, String>>();\n\t}\n\t\n\t/**\n\t * Returns the port on which this server will listen.\n\t */\n\tpublic int getPort() {\n\t\treturn port;\n\t}\n\n\t/**\n\t * Gets the part of the http GET request after hostname:port.\n\t */\n\tprivate static String getUriString(HttpExchange exchange) {\n\t\tURI uri = exchange.getRequestURI();\n\t\tString uriStr = uri.toString();\n\t\turiStr = uriStr.substring(1);\n\t\treturn uriStr;\n\t}\n\t\n\t/**\n\t * Returns whether the server is currently active and listening for HTTP requests,\n\t * which will be true after start() is called.\n\t */\n\tpublic boolean isRunning() {\n\t\treturn server != null;\n\t}\n\t\n\t/**\n\t * Returns true if this server's port is available for listening.\n\t */\n\tpublic boolean portIsAvailable() {\n\t\treturn portIsAvailable(this.port);\n\t}\n\n\t/**\n\t * Returns true if the given port is available for listening.\n\t */\n\tpublic static boolean portIsAvailable(int port) {\n\t\tSocket ignored = null;\n\t\ttry {\n\t\t\tignored = new Socket(\"localhost\", port);\n\t\t\treturn false;\n\t\t} catch (IOException ioe) {\n\t\t\treturn true;\n\t\t} finally {\n\t\t\tif (ignored != null) {\n\t\t\t\ttry {\n\t\t\t\t\tignored.close();\n\t\t\t\t} catch (IOException ioe) {\n\t\t\t\t\t// empty\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t/**\n\t * Returns whether the given request contains an active session.\n\t */\n\tpublic boolean sessionIsInProgress(Request request) {\n\t\tif (!request.hasParam(SimpleClient.SESSION_KEY_PARAM_NAME)) {\n\t\t\treturn false;\n\t\t}\n\t\tString sessionKey = request.getParam(SimpleClient.SESSION_KEY_PARAM_NAME);\n\t\treturn sessionDataAll.containsKey(sessionKey);\n\t}\n\t\n\t/**\n\t * Returns all data associated with the given request's session.\n\t * If the given request has no active session, returns null.\n\t */\n\tpublic HashMap<String, String> sessionData(Request request) {\n\t\tif (!sessionIsInProgress(request)) {\n\t\t\treturn null;\n\t\t}\n\t\t\n\t\tString sessionKey = request.getParam(SimpleClient.SESSION_KEY_PARAM_NAME);\n\t\tHashMap<String, String> sessionData = sessionDataAll.get(sessionKey);\n\t\treturn sessionData;\n\t}\n\t\n\t/**\n\t * Ends any active session for the given request, clearing its session data.\n\t * If there was no session for the given request, has no effect.\n\t */\n\tpublic void sessionEnd(Request request) {\n\t\tif (sessionIsInProgress(request)) {\n\t\t\tString sessionKey = request.getParam(SimpleClient.SESSION_KEY_PARAM_NAME);\n\t\t\tsessionDataAll.remove(sessionKey);\n\t\t}\n\t}\n\t\n\t/**\n\t * Begins an active session for the given request, with empty session data.\n\t * The session will use a unique key provided in the request by the client;\n\t * if no such key is present, throws a SimpleServerException.\n\t * If there was already a session for the given request, has no effect.\n\t */\n\tpublic void sessionStart(Request request) {\n\t\tif (!sessionIsInProgress(request)) {\n\t\t\tString sessionKey = request.getParam(SimpleClient.SESSION_KEY_PARAM_NAME);\n\t\t\tif (sessionKey == null) {\n\t\t\t\tthrow new SimpleServerException(\"missing session key for request: \" + request);\n\t\t\t}\n\t\t\tsessionDataAll.put(sessionKey, new LinkedHashMap<String, String>());\n\t\t}\n\t}\n\t\n\t/**\n\t * Starts a server on the given port. It is hard coded to handle\n\t * img requests and resource requests specially by just reading the files and\n\t * returning them. All other requests should be handled by the user's code.\n\t * If the server is already running, this will have no effect.\n\t */\n\tpublic void start() {\n\t\tif (isRunning()) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif (!portIsAvailable(port)) {\n\t\t\t// This error occurs if the server is already running and you try to run it again.\n\t\t\t// If you see this, make sure to close ALL Java console program windows.\n\t\t\t// Then run your project again.\n\t\t\tthrow new SimpleServerException(\n\t\t\t\t\t\"Port \" + port + \" is not available. \" +\n\t\t\t\t\t\"Close all server windows and try again.\");\n\t\t}\n\t\t\n\t\ttry {\n\t\t\tserver = HttpServer.create(new InetSocketAddress(port), 0);\n\t\t\tserver.createContext(\"/img\", new BottleFileHandler());\n\t\t\tserver.createContext(\"/images\", new BottleFileHandler());\n\t\t\tserver.createContext(\"/favicon.ico\", new FaveIconHandler());\n\t\t\tserver.createContext(\"/resources\", new BottleFileHandler());\n\t\t\tserver.createContext(\"/newImg\", new BottleImgReceiver());\n\t\t\tserver.createContext(\"/\", new BottleHandler());\n\t\t\tserver.setExecutor(null);   // creates a default executor\n\t\t\tserver.start();\n\t\t} catch (IOException e) {\n\t\t\tthrow new SimpleServerException(e);\n\t\t}\n\t}\n\t\n\t/**\n\t * Stops the server so that it will no longer listen to HTTP requests.\n\t */\n\tpublic void stop() {\n\t\tserver.stop(/* delayMS */ 0);\n\t\tserver = null;\n\t}\n\n\t/**\n\t * Returns a string representation of this server.\n\t */\n\t@Override\n\tpublic String toString() {\n\t\treturn getClass().getSimpleName() + \"{\"\n\t\t\t\t+ \"port=\" + this.port\n\t\t\t\t+ \", running=\" + isRunning()\n\t\t\t\t+ (webApp == null ? \"\" : (\", webApp=\\\"\" + webApp + \"\\\"\"))\n\t\t\t\t+ (sessionDataAll.isEmpty() ? \"\" : (\", sessionData=\" + sessionDataAll))\n\t\t\t\t+ \"}\";\n\t}\n\n\t/**\n\t * This class passes on an HTTP request to the \"webApp\" which the\n\t * user writes.\n\t */\n\tprivate class BottleHandler implements HttpHandler {\n\t\tpublic void handle(HttpExchange t) throws IOException {\n\t\t\ttry {\n\t\t\t\tString uriStr = getUriString(t);\n\t\t\t\t\n\t\t\t\t// turn the uri into a request\n\t\t\t\tRequest request = Request.fromUrl(uriStr);\n\t\t\t\t\n\t\t\t\t// call the students method\n\t\t\t\tObject response = null;\n\t\t\t\tif (webApp != null) {\n\t\t\t\t\tresponse = webApp.requestMade(request);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t// pass the response back to the caller\n//\t\t\t\tif (response == null) {\n//\t\t\t\t\tthrow new NullPointerException(\"Server request returned null response.\");\n//\t\t\t\t}\n\n\t\t\t\tString responseStr = String.valueOf(response);\n\t\t\t\t\n\t\t\t\tif (DEBUG) System.out.println(\"SimpleServer: sending response: \" + responseStr);\n\t\t\t\t\n\t\t\t\tt.sendResponseHeaders(200, responseStr.length());\n\t\t\t\tOutputStream os = t.getResponseBody();\n\t\t\t\tos.write(responseStr.getBytes());\n\t\t\t\tos.close();\n\t\t\t} catch (IOException e) {\n\t\t\t\te.printStackTrace();\n\t\t\t\tthrow new IORuntimeException(e);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * For some files (eg images and resources) you want the server to \n\t * simply return the file. This handler simply returns the file.\n\t */\n\tprivate class BottleFileHandler implements HttpHandler {\n\t\tpublic void handle(HttpExchange exchange) throws IOException {\n\t\t\ttry {\n\t\t\t\tString uriStr = getUriString(exchange);\n\t\t\t\tif (DEBUG) System.out.println(\"SimpleServer: handling request: \" + uriStr);\n\t\t\t\tFile file = new File(uriStr);\n\t\t\t\texchange.sendResponseHeaders(200, file.length());\n\t\t\t\tOutputStream outputStream=exchange.getResponseBody();\n\t\t\t\tFiles.copy(file.toPath(), outputStream);\n\t\t\t\toutputStream.close();\n\t\t\t} catch (IOException e) {\n\t\t\t\te.printStackTrace();\n\t\t\t\tthrow new IORuntimeException(e);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate class BottleImgReceiver implements HttpHandler {\n\t\tpublic void handle(HttpExchange exchange) throws IOException {\n\t\t\ttry {\n\t\t\t\tString uriStr = getUriString(exchange);\n\t\t\t\tRequest r = Request.fromUrl(uriStr);\n\t\t\t\tString fileStr = r.getRaw(\"file\");\n\t\t\t\tbyte [] bytes = Base64.getUrlDecoder().decode(fileStr);\n\t\t\t\tString fileName = r.getRaw(\"fileName\");\n\t\t\t\t\n\t\t\t\tPath path = Paths.get(\"images\", fileName);\n\t\t\t\tFileOutputStream fos = new FileOutputStream(path.toString());\n\t\t\t\tfos.write(bytes);\n\t\t\t\tfos.close();\n\n\t\t\t\tString response = \"success\";\n\t\t\t\texchange.sendResponseHeaders(200, response.length());\n\t\t\t\tOutputStream os = exchange.getResponseBody();\n\t\t\t\tos.write(response.getBytes());\n\t\t\t\tos.close();\n\t\t\t} catch (IOException e) {\n\t\t\t\te.printStackTrace();\n\t\t\t\tthrow new IORuntimeException(e);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate class FaveIconHandler implements HttpHandler {\n\t\tpublic void handle(HttpExchange exchange) throws IOException {\n\t\t\ttry {\n\t\t\t\tFile file = new File(\"images/faveicon.ico\");\n\t\t\t\tif (file.exists()) {\n\t\t\t\t\texchange.sendResponseHeaders(200, file.length());\n\t\t\t\t\tOutputStream outputStream = exchange.getResponseBody();\n\t\t\t\t\tFiles.copy(file.toPath(), outputStream);\n\t\t\t\t\toutputStream.close();\n\t\t\t\t} else {\n\t\t\t\t\texchange.sendResponseHeaders(0, file.length());\n\t\t\t\t\texchange.getResponseBody().close();\n\t\t\t\t}\n\t\t\t} catch (IOException e) {\n\t\t\t\tthrow new IORuntimeException(e);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * An exception type that represents server-related runtime errors.\n\t */\n\tpublic static class SimpleServerException extends IORuntimeException {\n\t\tpublic SimpleServerException(String message) {\n\t\t\tsuper(message);\n\t\t}\n\n\t\tpublic SimpleServerException(Throwable cause) {\n\t\t\tsuper(cause);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/net/SimpleServerListener.java",
    "content": "/*\n * This class was added to support the client/server versions of\n * the FacePamphlet and Mini Twitter assignments.\n * \n * @author Marty Stepp and Chris Piech\n * @version 2017/05/24\n */\n\npackage stanford.cs106.net;\n\n/**\n * A listener that can respond to requests made to a server.\n */\npublic interface SimpleServerListener {\n\t/**\n\t * Responds to the given request, returning the response to send back.\n\t */\n\tObject requestMade(Request request);\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/program/CommandLineProgramMarty.java",
    "content": "package stanford.cs106.program;\nimport java.io.*;\nimport acm.program.*;\n\npublic class CommandLineProgramMarty extends CommandLineProgram {\n\tprotected Boolean isApplet = null;        // null = unchecked, false = no, true = yes\n\t\n\tprotected boolean isApplet() {\n\t\tif (isApplet == null) {\n\t\t\ttry {\n\t\t\t\tisApplet = false;\n\t\t\t\tif (java.lang.System.getSecurityManager() != null) {\n\t\t\t\t\t// applets run with security managers enabled\n\t\t\t\t\tisApplet = true;\n\t\t\t\t} else {\n\t\t\t\t\tFile currentDir = new File(java.lang.System.getProperty(\"user.dir\"));\n\t\t\t\t\tcurrentDir.exists();  // calling this will trigger security exception if applet\n\t\t\t\t}\n\t\t\t} catch (SecurityException sex) {\n\t\t\t\tisApplet = true;\n\t\t\t}\n\t\t}\n\t\treturn isApplet;\n\t}\n\t\n\tprotected boolean fileExists(String filename) throws IOException {\n\t\treturn fileExistsOnDisk(filename) || fileExistsInsideJAR(filename);\n\t}\n\t\n\tprotected boolean fileExistsInsideJAR(String filename) throws IOException {\n\t\t// fallback to using internal class stream (JAR or applet)\n\t\tInputStream stream = getClass().getResourceAsStream(filename);\n\t\tif (stream == null) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\tstream.close();\n\t\t\treturn true;\n\t\t}\n\t}\n\t\n\tprotected boolean fileExistsOnDisk(String filename) throws IOException {\n\t\tif (isApplet()) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\t// try reading a real file\n\t\t\tFile file = new File(filename);\n\t\t\ttry {\n\t\t\t\tif (file.exists()) {\n\t\t\t\t\treturn true;\n\t\t\t\t} else {\n\t\t\t\t\tfile = new File(\"../\" + filename);  // \"../simple.txt\"\n\t\t\t\t\tif (file.exists()) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (SecurityException sex) {\n\t\t\t\t// running as an applet\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tprotected InputStream openFile(String filename) throws IOException {\n\t\tif (!isApplet() && fileExistsOnDisk(filename)) {\n\t\t\treturn openFileFromDisk(filename);\n\t\t} else if (fileExistsInsideJAR(filename)) {\n\t\t\treturn openFileFromJAR(filename);\n\t\t} else {\n\t\t\tthrow new FileNotFoundException(filename);\n\t\t}\n\t}\n\t\n\tprotected InputStream openFileFromDisk(String filename) throws IOException {\n\t\t// try reading a real file first\n\t\tFile file = new File(filename);\n\t\ttry {\n\t\t\tif (file.exists()) {\n\t\t\t\treturn new BufferedInputStream(new FileInputStream(file));\n\t\t\t} else {\n\t\t\t\tfile = new File(\"../\" + filename);  // \"../simple.txt\"\n\t\t\t\tif (file.exists()) {\n\t\t\t\t\treturn new BufferedInputStream(new FileInputStream(file));\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (SecurityException sex) {\n\t\t\t// running as an applet\n\t\t}\n\t\tthrow new FileNotFoundException(filename);\n\t}\n\t\n\tprotected InputStream openFileFromJAR(String filename) throws IOException {\n\t\t// fallback to using internal class stream (JAR or applet)\n\t\tInputStream stream = getClass().getResourceAsStream(filename);\n\t\tif (stream == null) {\n\t\t\tthrow new FileNotFoundException(filename);\n\t\t} else {\n\t\t\treturn new BufferedInputStream(stream);\n\t\t}\n\t}\n\t\n\tprotected String readEntireFile(String filename) throws IOException {\n\t\treturn readEntireStream(openFile(filename));\n\t}\n\t\n\tprotected String readEntireStream(InputStream stream) throws IOException {\n\t\tStringBuilder sb = new StringBuilder();\n\t\tint ch;\n\t\twhile ((ch = stream.read()) != -1) {\n\t\t\tsb.append((char) ch);\n\t\t}\n\t\treturn sb.toString();\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/program/ConsoleProgramMarty.java",
    "content": "package stanford.cs106.program;\nimport java.io.*;\nimport acm.program.*;\n\npublic class ConsoleProgramMarty extends ConsoleProgram {\n\tprotected Boolean isApplet = null;        // null = unchecked, false = no, true = yes\n\t\n\tprotected boolean isApplet() {\n\t\tif (isApplet == null) {\n\t\t\ttry {\n\t\t\t\tisApplet = false;\n\t\t\t\tif (java.lang.System.getSecurityManager() != null) {\n\t\t\t\t\t// applets run with security managers enabled\n\t\t\t\t\tisApplet = true;\n\t\t\t\t} else {\n\t\t\t\t\tFile currentDir = new File(java.lang.System.getProperty(\"user.dir\"));\n\t\t\t\t\tcurrentDir.exists();  // calling this will trigger security exception if applet\n\t\t\t\t}\n\t\t\t} catch (SecurityException sex) {\n\t\t\t\tisApplet = true;\n\t\t\t}\n\t\t}\n\t\treturn isApplet;\n\t}\n\t\n\tprotected String readEntireFile(String filename) throws IOException {\n\t\treturn readEntireStream(openFile(filename));\n\t}\n\t\n\tprotected String readEntireStream(InputStream stream) throws IOException {\n\t\tStringBuilder sb = new StringBuilder();\n\t\tint ch;\n\t\twhile ((ch = stream.read()) != -1) {\n\t\t\tsb.append((char) ch);\n\t\t}\n\t\treturn sb.toString();\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/program/ProgramUtils.java",
    "content": "package stanford.cs106.program;\r\n\r\nimport java.io.BufferedReader;\r\nimport java.io.StringReader;\r\n\r\nimport javax.swing.text.*;\r\n\r\nimport stanford.cs106.reflect.ReflectionUtils;\r\nimport acm.io.*;\r\nimport acm.program.*;\r\n\r\npublic class ProgramUtils {\r\n\tprivate ProgramUtils() {\r\n\t\t// empty\r\n\t}\r\n\t\r\n\tpublic static void injectConsoleInput(ConsoleProgram program, String input) {\r\n\t\tprogram.getConsole().setInputScript(new BufferedReader(new StringReader(input)));\r\n\t}\r\n\t\r\n\tpublic static String getConsoleOutput(ConsoleProgram program) {\r\n\t\tIOConsole console = program.getConsole();\r\n\t\tObject model = ReflectionUtils.getFieldValue(console, \"consoleModel\");\r\n\t\tDocument document = (Document) ReflectionUtils.getFieldValue(model, \"document\");\r\n\t\ttry {\r\n\t\t\treturn document.getText(0, document.getLength());\r\n\t\t} catch (BadLocationException e) {\r\n\t\t\tthrow new RuntimeException(e);\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/program/ResizableProgram.java",
    "content": "/*\r\n * CS 106A\r\n *\r\n * This instructor-provided file represents a program that generates an event\r\n * when it is resized.\r\n *\r\n * Author : Marty Stepp\r\n * Version: Tue 2014/05/11\r\n * \r\n * This file and its contents are copyright (C) Stanford University and Marty Stepp,\r\n * licensed under Creative Commons Attribution 2.5 License.  All rights reserved.\r\n */\r\n\r\npackage stanford.cs106.program;\r\nimport acm.program.*;\r\nimport java.awt.event.*;\r\n\r\npublic class ResizableProgram extends Program implements ComponentListener {\r\n\t/*\r\n\t * Constructs the program and adds the resizing listener.\r\n\t */\r\n\tpublic ResizableProgram() {\r\n\t\taddComponentListener(this);\r\n\t}\r\n\t\r\n\t/* Required methods of ComponentListener interface. */\r\n\tpublic void componentHidden(ComponentEvent e) {\r\n\t\t// empty\r\n\t}\r\n\r\n\t/* Required methods of ComponentListener interface. */\r\n\tpublic void componentMoved(ComponentEvent e) {\r\n\t\t// empty\r\n\t}\r\n\r\n\t/* Required methods of ComponentListener interface. */\r\n\tpublic void componentResized(ComponentEvent e) {\r\n\t\t// empty\r\n\t}\r\n\r\n\t/* Required methods of ComponentListener interface. */\r\n\tpublic void componentShown(ComponentEvent e) {\r\n\t\t// empty\r\n\t}\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/reflect/ClassUtils.java",
    "content": "package stanford.cs106.reflect;\r\n\r\n// Author: Marty Stepp\r\n// A bunch of methods used to dynamically examine and modify Java classes.\r\n\r\nimport java.io.*;\r\nimport java.lang.reflect.*;\r\nimport java.net.*;\r\nimport java.security.*;\r\nimport java.util.*;\r\n\r\nimport javax.tools.JavaCompiler;\r\nimport javax.tools.ToolProvider;\r\n\r\nimport stanford.cs106.io.*;\r\nimport stanford.cs106.util.*;\r\n\r\npublic final class ClassUtils {\r\n\t// class constants\r\n\tpublic static final String CLASS_EXTENSION = \".class\";\r\n\tpublic static final String JAVA_EXTENSION = \".java\";\r\n\tprivate static final FileFilter CLASS_FILTER = new ExtensionFilter(CLASS_EXTENSION);\r\n\r\n\tpublic static boolean hasMain(Class<?> clazz) {\r\n\t\ttry {\r\n\t\t\tMethod main = clazz.getMethod(\"main\", new String[0].getClass());\r\n\t\t\tint mod = main.getModifiers();\r\n\t\t\treturn Modifier.isStatic(mod) && Modifier.isPublic(mod) && main.getReturnType() == Void.TYPE;\r\n\t\t} catch (NoSuchMethodException e) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\tpublic static void runMain(Class<?> clazz) throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {\r\n\t\trunMain(clazz, null);\r\n\t}\r\n\t\r\n\tpublic static void runMain(Class<?> clazz, String[] args) throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {\r\n\t\tMethod main = clazz.getMethod(\"main\", new String[0].getClass());\r\n\t\tint mod = main.getModifiers();\r\n\t\tif (Modifier.isStatic(mod) && Modifier.isPublic(mod) && main.getReturnType() == Void.TYPE) {\r\n\t\t\tmain.invoke(null, (Object) args);\r\n\t\t}\r\n\t}\r\n\t\r\n\t// Returns a list of all folders in the system Java class path.\r\n\tpublic static List<String> getClassPathFolders() {\r\n\t\ttry {\r\n\t\t\tString classPath = System.getProperty(\"java.class.path\").trim();\r\n\t\t\tif (classPath.length() == 0) {\r\n\t\t\t\tclassPath = \".\";\r\n\t\t\t}\r\n\t\t\tString[] tokens = classPath.split(File.pathSeparator);\r\n\t\t\tSet<String> absPaths = new HashSet<String>();\r\n\t\t\tList<String> pruned = new ArrayList<String>();\r\n\t\t\tfor (String token : tokens) {\r\n\t\t\t\tFile tokenFile = new File(token);\r\n\t\t\t\tif (tokenFile.isDirectory() && !absPaths.contains(tokenFile.getAbsolutePath())) {\r\n\t\t\t\t\tpruned.add(token);\r\n\t\t\t\t\tabsPaths.add(tokenFile.getAbsolutePath());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn pruned;\r\n\t\t} catch (AccessControlException e) {\r\n\t\t\treturn Arrays.asList(\".\");\r\n\t\t}\r\n\t}\r\n\t\r\n\t// Returns all fields in the given class that have the given type.\r\n\t// Assumes the type is not generic such as List<String> or that generics should be ignored.\r\n\tpublic static Set<Field> getFields(Class<?> clazz, Class<?> type) {\r\n\t\treturn getFields(clazz, type, null);\r\n\t}\r\n\r\n\t// Returns all fields in the given class that have the given type and parameterized type.\r\n\t// Works for checking generics such as List<String>.\r\n\tpublic static Set<Field> getFields(Class<?> clazz, Class<?> type, Class<?> parameterizedType) {\r\n\t\treturn getFields(clazz, type, parameterizedType, false);\r\n\t}\r\n\t\r\n\tpublic static Set<Field> getFields(Class<?> clazz, Class<?> type, Class<?> parameterizedType, boolean allowSubtype) {\r\n\t\treturn getFields(clazz, new LinkedHashSet<Class<?>>(CollectionUtils.asSet(type)), parameterizedType, allowSubtype);\r\n\t}\r\n\t\r\n\tpublic static Set<Field> getFields(Class<?> clazz, Set<Class<?>> types, Class<?> parameterizedType, boolean allowSubtype) {\r\n\t\tSet<Field> resultFields = new LinkedHashSet<Field>();\r\n\t\tList<String> fieldNames = new ArrayList<String>(ClassUtils.getFieldNames(clazz));\r\n\t\tList<Class<?>> fieldTypes = new ArrayList<Class<?>>(ClassUtils.getFieldTypes(clazz));\r\n\r\n\t\tfor (int i = 0; i < fieldNames.size(); i++) {\r\n\t\t\tString fieldName = fieldNames.get(i);\r\n\t\t\tClass<?> fieldType = fieldTypes.get(i);\r\n\r\n\t\t\tfor (Class<?> type : types) {\r\n\t\t\t\tif (fieldType == type || (allowSubtype && type.isAssignableFrom(fieldType))) {\r\n\t\t\t\t\tif (parameterizedType == null) {\r\n\t\t\t\t\t\t// not generic; standard type\r\n\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\tresultFields.add(clazz.getDeclaredField(fieldName));\r\n\t\t\t\t\t\t} catch (Exception e) {\r\n\t\t\t\t\t\t\te.printStackTrace();\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// generics; try to match\r\n\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\tField field = clazz.getDeclaredField(fieldName);\r\n\t\t\t\t\t\t\tType genericType = field.getGenericType();\r\n\t\t\t\t\t\t\tif (genericType != null && genericType instanceof ParameterizedType) {\r\n\t\t\t\t\t\t\t\tParameterizedType paramType = (ParameterizedType) genericType;\r\n\t\t\t\t\t\t\t\tType paramRealType = paramType.getActualTypeArguments()[0];\r\n\t\t\t\t\t\t\t\tif (paramRealType == parameterizedType) {\r\n\t\t\t\t\t\t\t\t\tresultFields.add(field);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} catch (Exception e) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn resultFields;\r\n\t}\r\n\t\r\n\t/**\r\n\t * Returns a set of names of all fields in the given class.\r\n\t * If the class is not found, returns an empty set.\r\n\t */\r\n\tpublic static Set<String> getFieldNames(Class<?> clazz) {\r\n\t\tSet<String> fields = new LinkedHashSet<String>();\r\n\t\tfor (Field field : clazz.getDeclaredFields()) {\r\n\t\t\t// add all fields except static final constants\r\n\t\t\tint mod = field.getModifiers();\r\n\t\t\tif (!(Modifier.isStatic(mod) && Modifier.isFinal(mod))) {\r\n\t\t\t\tfields.add(field.getName());\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn fields;\r\n\t}\r\n\t\r\n\t/**\r\n\t * Returns a set of types of all fields in the given class.\r\n\t * If the class is not found, returns an empty set.\r\n\t */\r\n\tpublic static List<Class<?>> getFieldTypes(Class<?> clazz) {\r\n\t\tList<Class<?>> fields = new ArrayList<Class<?>>();\r\n\t\tfor (Field field : clazz.getDeclaredFields()) {\r\n\t\t\t// add all fields except static final constants\r\n\t\t\tint mod = field.getModifiers();\r\n\t\t\tif (!(Modifier.isStatic(mod) && Modifier.isFinal(mod))) {\r\n\t\t\t\tfields.add(field.getType());\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn fields;\r\n\t}\r\n\r\n\t// Returns a list of all folders in the system Java class path.\r\n\tpublic static String getFirstClassPathFolder() {\r\n\t\tList<String> folders = getClassPathFolders();\r\n\t\tif (folders.size() == 0) {\r\n\t\t\treturn \".\";\r\n\t\t}\r\n\t\tString folder = folders.get(0).trim();\r\n\t\tif (folder.length() == 0) {\r\n\t\t\treturn \".\";\r\n\t\t}\r\n\t\treturn folder;\r\n\t}\r\n\t\r\n\t/**\r\n\t * Returns a set of names of all fields in class with the given name that are not private.\r\n\t * If the class name is not found, returns an empty set.\r\n\t * If class name is null, throws a NullPointerException.\r\n\t */\r\n    public static Set<String> getNonPrivateFieldNames(String className) {\r\n        return getNonPrivateFieldNames(className, false);\r\n    }\r\n\r\n\tpublic static Set<String> getNonPrivateFieldNames(String className, boolean allowProtected) {\r\n\t\ttry {\r\n\t\t\treturn getNonPrivateFieldNames(Class.forName(className), allowProtected);\r\n\t\t} catch (ClassNotFoundException e) {\r\n\t\t\treturn Collections.emptySet();\r\n\t\t}\r\n\t}\r\n\t\r\n\t/**\r\n\t * Returns a set of names of all fields in the given class that are not private.\r\n\t * If class is null, throws a NullPointerException.\r\n\t */\r\n    public static Set<String> getNonPrivateFieldNames(Class<?> clazz) {\r\n        return getNonPrivateFieldNames(clazz, false);\r\n    }\r\n\r\n\tpublic static Set<String> getNonPrivateFieldNames(Class<?> clazz, boolean allowProtected) {\r\n\t\tSet<String> fields = new LinkedHashSet<String>();\r\n\t\tfor (Field field : clazz.getDeclaredFields()) {\r\n\t\t\t// the only allowed public fields are ones that are 'static final' constants\r\n\t\t\tint mod = field.getModifiers();\r\n\t\t\tif (!Modifier.isPrivate(mod) && (!allowProtected || !Modifier.isProtected(mod)) \r\n\t\t\t        && !(Modifier.isStatic(mod) && Modifier.isFinal(mod))) {\r\n\t\t\t\tfields.add(field.getName());\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn fields;\r\n\t}\r\n\r\n\tpublic static Set<String> getNonPrivateMethodNames(Class<?> clazz) {\r\n\t    return getNonPrivateMethodNames(clazz, false);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a set of names of all methods in the given class that are not private.\r\n\t * If class is null, throws a NullPointerException.\r\n\t */\r\n\tpublic static Set<String> getNonPrivateMethodNames(Class<?> clazz, boolean allowProtected) {\r\n\t\tSet<String> methods = new LinkedHashSet<String>();\r\n\t\tfor (Method method : clazz.getDeclaredMethods()) {\r\n\t\t\t// the only allowed public fields are ones that are 'static final' constants\r\n\t\t\tint mod = method.getModifiers();\r\n\t\t\tif (!Modifier.isPrivate(mod) && (!allowProtected || !Modifier.isProtected(mod))) {\r\n\t\t\t\tmethods.add(method.getName());\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn methods;\r\n\t}\r\n\t\r\n\t/**\r\n\t * Returns a set of names of all methods in the given class that are not private.\r\n\t * If class is null, throws a NullPointerException.\r\n\t */\r\n\tpublic static Set<Method> getNonPrivateMethods(Class<?> clazz) {\r\n\t\tSet<Method> methods = new LinkedHashSet<Method>();\r\n\t\tfor (Method method : clazz.getDeclaredMethods()) {\r\n\t\t\t// the only allowed public fields are ones that are 'static final' constants\r\n\t\t\tint mod = method.getModifiers();\r\n\t\t\tif (!Modifier.isPrivate(mod)) {\r\n\t\t\t\tmethods.add(method);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn methods;\r\n\t}\r\n\t\r\n\t/**\r\n\t * Returns a set of names of all methods in the given class that are not private.\r\n\t * If class is null, throws a NullPointerException.\r\n\t */\r\n\tpublic static Set<Constructor<?>> getNonPrivateConstructors(Class<?> clazz) {\r\n\t\tSet<Constructor<?>> constructors = new LinkedHashSet<Constructor<?>>();\r\n\t\tfor (Constructor<?> ctor : clazz.getConstructors()) {\r\n\t\t\t// the only allowed public fields are ones that are 'static final' constants\r\n\t\t\tint mod = ctor.getModifiers();\r\n\t\t\tif (!Modifier.isPrivate(mod)) {\r\n\t\t\t\tconstructors.add(ctor);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn constructors;\r\n\t}\r\n\t\r\n\t/**\r\n\t * Returns a set of names of all methods in the given class.\r\n\t * If class is null, throws a NullPointerException.\r\n\t */\r\n\tpublic static Set<String> getMethodNames(Class<?> clazz) {\r\n\t\tSet<String> methods = new LinkedHashSet<String>();\r\n\t\tfor (Method method : clazz.getDeclaredMethods()) {\r\n\t\t\tmethods.add(method.getName());\r\n\t\t}\r\n\t\treturn methods;\r\n\t}\r\n\r\n\t// Returns whether the given name represents an inner class (has a $ sign).\r\n\tpublic static boolean isInnerClass(Class<?> clazz) {\r\n\t\treturn isInnerClass(clazz.getName());\r\n\t}\r\n\r\n\t// Returns whether the given name represents an inner class (has a $ sign).\r\n\tpublic static boolean isInnerClass(String className) {\r\n\t\treturn className.indexOf('$') >= 0;\r\n\t}\r\n\r\n\tpublic static String writeAndCompile(String fileText, String className, boolean useTempFolder)\r\n\t\t\tthrows IOException, ClassNotFoundException, NoSuchMethodException,\r\n\t\t\tIllegalAccessException, InvocationTargetException {\r\n\t\t// write the modified text to a new file (possibly in temp dir)\r\n\t\tString javaFileName = className + JAVA_EXTENSION;\r\n\t\tif (useTempFolder) {\r\n\t\t\tjavaFileName = System.getProperty(\"java.io.tmpdir\")\r\n\t\t\t\t\t+ File.separatorChar + javaFileName;\r\n\t\t}\r\n\t\tIOUtils.writeEntireFile(fileText, javaFileName);\r\n\r\n\t\tString classFileName = compile(javaFileName);\r\n\t\tnew File(javaFileName).delete();\r\n\r\n\t\treturn classFileName;\r\n\t}\r\n\r\n\tpublic static Class<?> writeAndLoadClass(String fileText, String className, boolean useTempFolder)\r\n\t\t\tthrows IOException, ClassNotFoundException, IllegalAccessException,\r\n\t\t\tInvocationTargetException, NoSuchMethodException {\r\n\t\t// write the modified text to a new file (possibly in temp dir)\r\n\t\tString classFileName = writeAndCompile(fileText, className, useTempFolder);\r\n\r\n\t\t// move class to current directory\r\n\t\tnew File(classFileName).renameTo(new File(\".\" + File.separatorChar\r\n\t\t\t\t+ className + CLASS_EXTENSION));\r\n\t\treturn loadClass(classFileName);\r\n\t}\r\n\r\n\t/**\r\n\t * Compiles the .java source file with the given file name,\r\n\t * and returns the file name of the newly compiled .class file.\r\n\t * Throws a CompilerErrorException if the compilation fails.\r\n\t */\r\n\tpublic static String compile(String fileName)\r\n\t\t\tthrows ClassNotFoundException, NoSuchMethodException,\r\n\t\t\tIllegalAccessException, InvocationTargetException {\r\n\t\t\r\n\t\tString folderName = IOUtils.getFolder(fileName);\r\n\t\tString classPath = System.getProperty(\"java.class.path\")\r\n\t\t\t\t+ File.pathSeparator + \".\" + File.pathSeparator + folderName;\r\n\t\tString[] args = { \"-classpath\", classPath, fileName };\r\n\t\t\r\n\t\tByteArrayOutputStream out = new ByteArrayOutputStream();\r\n\t\tJavaCompiler compiler = ToolProvider.getSystemJavaCompiler();\r\n\t\tint result = -1;\r\n\t\tif (compiler == null) {\r\n\t\t\t// fall back to JDK <= 1.6 com.sun.tools.javac.Main method\r\n\t\t\ttry {\r\n\t\t\t\tClass<?> compilerClass = Class.forName(\"com.sun.tools.javac.Main\");\r\n\t\t\t\tMethod compileMethod = compilerClass.getMethod(\"compile\", new String[0]\r\n\t\t\t\t\t\t.getClass());\r\n\t\t\t\tresult = (Integer) compileMethod.invoke(null, (Object) args);\r\n\t\t\t} catch (ClassNotFoundException cnfe) {\r\n\t\t\t\tthrow new CompilerErrorException(\r\n\t\t\t\t\t\t\"ERROR: Cannot dynamically compile code on this version of JDK. \\n\"\r\n\t\t\t\t\t\t+ \"This feature requires JDK 1.7 or later, \\n\"\r\n\t\t\t\t\t\t+ \"and the latest version of your editing environment. \\n\"\r\n\t\t\t\t\t\t+ \"The editor must also be set up to properly use your JDK. \\n\"\r\n\t\t\t\t\t\t+ \"Please update your Java and/or Eclipse installation or settings.\");\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// use good JDK 1.7+ JavaCompiler system\r\n\t\t\tresult = compiler.run(System.in, out, out, args);\r\n\t\t}\r\n\t\t\r\n\t\tif (result != 0) {\r\n\t\t\tthrow new CompilerErrorException(\"Compilation failed with error code \"\r\n\t\t\t\t\t+ result + \":\\n\" + out.toString());\r\n\t\t}\r\n\r\n\t\treturn IOUtils.removeExtension(fileName) + CLASS_EXTENSION;\r\n\t}\r\n\r\n\t// Loads all classes that extend the given class from the given folder.\r\n\t@SuppressWarnings(\"unchecked\")\r\n\tpublic static <T> List<Class<? extends T>> getClasses(Class<T> superClass, String folderName) {\r\n\t    try {\r\n\t\t\tList<Class<? extends T>> list = new ArrayList<Class<? extends T>>();\r\n\t\t\tjava.io.File folder = new java.io.File(folderName);\r\n\t\t\tif (!folder.exists() || !folder.canRead()) {\r\n\t\t\t\treturn list;\r\n\t\t\t}\r\n\r\n\t\t\tfor (java.io.File file : folder.listFiles(CLASS_FILTER)) {\r\n\t\t\t\tString fileName = file.getName();\r\n\t\t\t\tif (file.canRead() && !file.isDirectory() && fileName.endsWith(CLASS_EXTENSION)) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tClass<?> existingClass = Class.forName(IOUtils.removeExtension(fileName));\r\n\t\t\t\t\t\tif (existingClass != null && !existingClass.isInterface()\r\n\t\t\t\t\t\t\t\t&& !Modifier.isAbstract(existingClass.getModifiers())\r\n\t\t\t\t\t\t\t\t&& superClass.isAssignableFrom(existingClass)) {\r\n\t\t\t\t\t\t\t// then this is a concrete class that implements the interface\r\n\t\t\t\t\t\t\tlist.add((Class<? extends T>) existingClass);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} catch (IncompatibleClassChangeError icce) {\r\n\t\t\t\t\t\ticce.printStackTrace();\r\n\t\t\t\t\t} catch (Throwable t) {\r\n\t\t\t\t\t\tt.printStackTrace();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tCollections.sort(list, new ClassComparator());\r\n\t\t\treturn list;\r\n\t\t} catch (SecurityException e) {\r\n\t\t\t// probably running as an applet\r\n            return Collections.emptyList();\r\n\t\t}\r\n\t}\r\n\t\r\n\t// Returns whether the given class implements the given interface.\r\n\tpublic static boolean classImplements(Class<?> clazz, Class<?> interfaceType) {\r\n\t\tfor (Class<?> c : clazz.getInterfaces()) {\r\n\t\t\tif (c == interfaceType) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t// Dynamically loads the compiled .class file with the given file name\r\n\t// into our JVM and returns its Class object.\r\n\t// Throws various reflectiony exceptions if the file is bad.\r\n\tpublic static Class<?> loadClass(String fileName)\r\n\t\t\tthrows ClassNotFoundException {\r\n\t\tString folderName = IOUtils.getFolder(fileName);\r\n\t\tFile folder = new File(folderName);\r\n\t\tClassLoader loader = ClassLoader.getSystemClassLoader();\r\n\r\n\t\tClassLoader urlLoader = loader;\r\n\t\ttry {\r\n\t\t\tURL fileUrl = new URL(\"file:\" + System.getProperty(\"user.dir\")\r\n\t\t\t\t\t+ File.separator + fileName);\r\n\r\n\t\t\tFile currentDir = new File(System.getProperty(\"user.dir\"));\r\n\t\t\turlLoader = URLClassLoader.newInstance(\r\n\t\t\t\t\tnew URL[] { folder.toURI().toURL(),\r\n\t\t\t\t\t\t\tcurrentDir.toURI().toURL(), fileUrl }, loader);\r\n\t\t} catch (MalformedURLException mfurle) {\r\n\t\t\tmfurle.printStackTrace(); // this will never happen\r\n\t\t}\r\n\r\n\t\tString className = IOUtils.removeExtension(IOUtils.removeFolder(fileName));\r\n\t\ttry {\r\n\t\t\tClass<?> clazz = urlLoader.loadClass(className);\r\n\t\t\treturn clazz;\r\n\t\t} catch (IncompatibleClassChangeError icce) {\r\n\t\t\tthrow new RuntimeException(\"Unable to load the class: \" + icce);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static String readAndRename(String oldClassName, String newClassName)\r\n\t\t\tthrows IOException {\r\n\t\tString fileName = oldClassName + JAVA_EXTENSION;\r\n\t\treturn readAndRename(fileName, oldClassName, newClassName);\r\n\t}\r\n\r\n\tpublic static String readAndRename(String fileName, String oldClassName, String newClassName)\r\n\t\t\tthrows IOException {\r\n\t\tString fileText = IOUtils.readEntireFile(fileName);\r\n\r\n\t\t// replace the class name in the code\r\n\t\tfileText = fileText.replaceAll(oldClassName, newClassName);\r\n\t\treturn fileText;\r\n\t}\r\n\r\n\t// Treats fileText as the text of a Java source file, and\r\n\t// replaces occurrences of its class name with the given new class name,\r\n\t// then writes it to a new .java file with that name.\r\n\t// Returns the new file name.\r\n\tpublic static String renameAndWriteJavaFile(String fileText,\r\n\t\t\tString oldClassName, String newClassName, boolean useTempFolder) {\r\n\t\t// replace the class name in the code\r\n\t\tfileText = fileText.replaceAll(oldClassName, newClassName);\r\n\r\n\t\t// write the modified text to a new file\r\n\t\tString newFileName = newClassName + JAVA_EXTENSION;\r\n\t\tif (useTempFolder) {\r\n\t\t\tnewFileName = System.getProperty(\"java.io.tmpdir\") + newFileName;\r\n\t\t}\r\n\t\tIOUtils.writeEntireFile(fileText, newFileName);\r\n\t\treturn newFileName;\r\n\t}\r\n\r\n\t// Removes any characters from given text that wouldn't be acceptable\r\n\t// in a Java class name.\r\n\t// Not perfect (e.g., doesn't prevent names that start with a number).\r\n\tpublic static String sanitizeClassName(String text) {\r\n\t\ttext = text.replaceAll(\"[^A-Za-z0-9_$]+\", \"_\");\r\n\t\treturn text;\r\n\t}\r\n\r\n    // Removes any characters from given text that wouldn't be acceptable\r\n    // in a Java class name.\r\n    // Not perfect (e.g., doesn't prevent names that start with a number).\r\n    public static String stripPackages(Class<?> clazz) {\r\n        return stripPackages(clazz.getName());\r\n    }\r\n\r\n    // Removes any characters from given text that wouldn't be acceptable\r\n    // in a Java class name.\r\n    // Not perfect (e.g., doesn't prevent names that start with a number).\r\n    public static String stripPackages(String className) {\r\n        return className.replaceAll(\".*\\\\.\", \"\");\r\n    }\r\n\r\n\tpublic static boolean reflectionEquals(Object o1, Object o2) {\r\n\t\tif (o1 == null) {\r\n\t\t\treturn o2 == null;\r\n\t\t}\r\n\t\tif (o2 == null) {\r\n\t\t\treturn o1 == null;\r\n\t\t}\r\n\t\tif (o1 == o2) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\t\r\n\t\tClass<?> clazz1 = o1.getClass();\r\n\t\tClass<?> clazz2 = o2.getClass();\r\n\t\tif (clazz1 != clazz2) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t\r\n\t\tfor (Field field : clazz1.getDeclaredFields()) {\r\n\t\t\ttry {\r\n\t\t\t\tfield.setAccessible(true);\r\n\t\t\t\tObject f1 = field.get(o1);\r\n\t\t\t\tObject f2 = field.get(o2);\r\n\t\t\t\tif ((f1 == null && f2 != null) || (f2 == null && f1 != null)) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tif (f1 != null && f2 != null) {\r\n\t\t\t\t\tClass<?> fieldType = field.getType();\r\n\t\t\t\t\tif (fieldType.isArray()) {\r\n//\t\t\t\t\t\tif (!Arrays.deepEquals((Object[]) f1, (Object[]) f2)) {\r\n//\t\t\t\t\t\t\treturn false;\r\n//\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthrow new UnsupportedOperationException(\"array fields not supported right now\");\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif (!f1.equals(f2)) {\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} catch (IllegalAccessException iae) {\r\n\t\t\t\tthrow new RuntimeException(iae);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn true;\r\n\t}\r\n\r\n\t// For sorting class reflection objects by name.\r\n\tpublic static class ClassComparator implements Comparator<Class<?>> {\r\n\t\tpublic int compare(Class<?> c1, Class<?> c2) {\r\n\t\t\treturn c1.getName().compareTo(c2.getName());\r\n\t\t}\r\n\t}\r\n\r\n\t// inner class to filter files by extension\r\n\tpublic static class ExtensionFilter implements FileFilter {\r\n\t\tprivate String extension;\r\n\r\n\t\tpublic ExtensionFilter(String extension) {\r\n\t\t\tthis.extension = extension;\r\n\t\t}\r\n\r\n\t\tpublic boolean accept(java.io.File f) {\r\n\t\t\treturn f != null && f.exists() && f.canRead()\r\n\t\t\t\t\t&& f.getName().endsWith(extension);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Loads classes from files on the server's hard disk.\r\n\t * I shouldn't need to write this class, but Java's built-in class loaders\r\n\t * (particularly URLClassLoader) are actually quite shitty.  You have to pass\r\n\t * them arrays of java.net.URL objects, and they throw a million exceptions, and\r\n\t * they don't really work very well.  So I have to make my own wrapper.  Sigh.\r\n\t * \r\n\t * @author Marty Stepp\r\n\t *\r\n\t */\r\n\tpublic static class BetterClassLoader extends URLClassLoader {\r\n\t\t/**\r\n\t\t * Private internal constructor; clients should use newInstance instead.\r\n\t\t */\r\n\t\tprivate BetterClassLoader(URL[] urls, ClassLoader parent) {\r\n\t\t\tsuper(urls, parent);\r\n\t\t}\r\n\t\t\r\n\t\t/**\r\n\t\t * Creates a new loader that loads classes from the given array of file names.\r\n\t\t * If a class can't be found in any of those files, falls back to the system\r\n\t\t * class loader.\r\n\t\t */\r\n\t\tpublic static ClassLoader newInstance(String... filenames) {\r\n\t\t\treturn newInstance(ClassLoader.getSystemClassLoader(), filenames);\r\n\t\t}\r\n\t\t\r\n\t\t/**\r\n\t\t * Creates a new loader that loads classes from the given array of file names.\r\n\t\t * If a class can't be found in any of those files, falls back to the given\r\n\t\t * \"parent\" class loader.\r\n\t\t */\r\n\t\t@SuppressWarnings(\"deprecation\")\r\n\t\tpublic static ClassLoader newInstance(ClassLoader parent, String... filenames) {\r\n\t\t\ttry {\r\n\t\t\t\tSet<URL> urls = new LinkedHashSet<URL>();\r\n\t\t\t\tfor (String filename : filenames) {\r\n\t\t\t\t\turls.add(new File(filename).toURL());\r\n\t\t\t\t\turls.add(new File(new File(filename).getParent()).toURL());\r\n\t\t\t\t}\r\n\t\t\t\treturn new BetterClassLoader(urls.toArray(new URL[0]), parent);\r\n\t\t\t} catch (MalformedURLException mfurle) {\r\n\t\t\t\tmfurle.printStackTrace();   // this will probably never happen\r\n\t\t\t\tthrow new RuntimeException(mfurle);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\t/**\r\n\t\t * I don't think this method is needed any more; used to help load classes.\r\n\t\t */\r\n\t\t/*\r\n\t\tprotected Class<?> findClass(String name) throws ClassNotFoundException {\r\n\t\t\t/ *\r\n\t\t\tif (name.contains(\"sandbox\")) {\r\n\t\t\t\tString s = \":-(\";\r\n\t\t\t\ttry {\r\n\t\t\t\t\ts = \"\" + super.findClass(name);\r\n\t\t\t\t} catch (Throwable t) {}\r\n\t\t\t\tif (s.equals(\":-(\")) {\r\n\t\t\t\t\ts = \":'( :'(\";\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\ts += \"\" + sandbox.Scanner.class;\r\n\t\t\t\t\t} catch (Throwable t) {\r\n\t\t\t\t\t\ts += \"(couldn't load scanner)\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\ts = \"(load) \" + ClassLoader.getSystemClassLoader().loadClass(name);\r\n\t\t\t\t\t} catch (Throwable t) {}\r\n\t\t\t\t}\r\n\t\t\t\tthrow new RuntimeException(\"findClass: \" + name + \", \" + s);\r\n\t\t\t}\r\n\t\t\t* /\r\n\t\t\treturn super.findClass(name);\r\n\t\t}\r\n\t\t*/\r\n\r\n\t\t/**\r\n\t\t * Tries to load the class from the default system class loader, but if\r\n\t\t * it isn't found, loads from the internal list of URLs.\r\n\t\t * \r\n\t\t * The main exception is that classes from the 'Sandbox' package are\r\n\t\t * forcibly loaded from Practice-It's own notions of the sandbox.* classes.\r\n\t\t * JUnit classes are also treated as a special case.\r\n\t\t * \r\n\t\t * This is to make it so that dynamically loaded DumpingGround classes\r\n\t\t * can see sandbox.* classes that they interact with.\r\n\t\t */\r\n\t\tpublic Class<?> loadClass(String name) throws ClassNotFoundException {\r\n\t\t\ttry {\r\n\t\t\t\tClass<?> clazz = ClassLoader.getSystemClassLoader().loadClass(name);\r\n\t\t\t\tif (clazz != null) {\r\n\t\t\t\t\treturn clazz;\r\n\t\t\t\t}\r\n\t\t\t} catch (ClassNotFoundException e) {\r\n\t\t\t\t// empty\r\n\t\t\t}\r\n\t\t\treturn super.loadClass(name);\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/reflect/CompilerErrorException.java",
    "content": "package stanford.cs106.reflect;\n\npublic class CompilerErrorException extends RuntimeException {\n\tpublic CompilerErrorException(String message) {\n\t\tsuper(message);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/reflect/ReflectionRuntimeException.java",
    "content": "package stanford.cs106.reflect;\r\n\r\npublic class ReflectionRuntimeException extends RuntimeException {\r\n\tprivate static final long serialVersionUID = 1L;\r\n\tpublic ReflectionRuntimeException(String s) {\r\n\t\tsuper(s);\r\n\t}\r\n\tpublic ReflectionRuntimeException(String s, Throwable t) {\r\n\t\tsuper(s, t);\r\n\t}\r\n\tpublic ReflectionRuntimeException(Throwable t) {\r\n\t\tsuper(t);\r\n\t}\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/reflect/ReflectionUtils.java",
    "content": "/*\r\n * Code related to interacting with (getting and setting, invoking, etc.)\r\n * fields, constants, methods, and classes using reflection.\r\n * \r\n * author: Marty Stepp\r\n * version: 2014/05/05\r\n */\r\n\r\npackage stanford.cs106.reflect;\r\n\r\nimport java.lang.reflect.*;\r\nimport java.util.*;\r\n\r\npublic class ReflectionUtils {\r\n\tpublic static class FieldNameComparator implements Comparator<Field> {\r\n\t\tpublic int compare(Field arg0, Field arg1) {\r\n\t\t\treturn arg0.getName().compareTo(arg1.getName());\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static class MethodNameComparator implements Comparator<Method> {\r\n\t\tpublic int compare(Method arg0, Method arg1) {\r\n\t\t\treturn arg0.getName().compareTo(arg1.getName());\r\n\t\t}\r\n\t}\r\n\t\r\n\tpublic static String getClassNameWithoutPackage(String className) {\r\n\t\tint space = className.lastIndexOf('.');\r\n\t\tif (space >= 0) {\r\n\t\t\tclassName = className.substring(space + 1);\r\n\t\t}\r\n\t\treturn className;\r\n\t}\r\n\t\r\n\tpublic static String getClassNameWithoutPackage(Class<?> clazz) {\r\n\t\treturn getClassNameWithoutPackage(clazz, null);\r\n\t}\r\n\t\r\n\tpublic static String getClassNameWithoutPackage(Class<?> clazz, Type genericType) {\r\n\t\tString className = clazz.getName();\r\n\t\tif (clazz.isArray()) {\r\n\t\t\tclassName = clazz.getComponentType().getName() + \"[]\";\r\n\t\t} else if (genericType instanceof ParameterizedType) {\r\n\t\t\tParameterizedType paramGenericType = (ParameterizedType) genericType;\r\n\t\t\tType[] paramArgs = paramGenericType.getActualTypeArguments();\r\n\t\t\tif (paramArgs.length > 0) {\r\n\t\t\t\tclassName += \"<\";\r\n\t\t\t\tfor (int i = 0; i < paramArgs.length; i++) {\r\n\t\t\t\t\tClass<?> paramType = (Class<?>) paramArgs[i];\r\n\t\t\t\t\tif (i > 0) {\r\n\t\t\t\t\t\tclassName += \", \";\r\n\t\t\t\t\t}\r\n\t\t\t\t\tclassName += getClassNameWithoutPackage(paramType);\r\n\t\t\t\t}\r\n\t\t\t\tclassName += \">\";\r\n\t\t\t}\r\n\t\t}\r\n\t\tint space = className.lastIndexOf('.');\r\n\t\tif (space >= 0) {\r\n\t\t\tclassName = className.substring(space + 1);\r\n\t\t}\r\n\t\treturn className;\r\n\t}\r\n\t\r\n\t// Returns true if the given constant exists\r\n\tpublic static boolean constantExists(Class<?> clazz, String constantNameRegex) {\r\n\t\tField constantField = getFieldToMatchRegex(clazz, constantNameRegex);\r\n\t\treturn constantField != null;\r\n\t}\r\n\r\n\t// Returns true if the given constant exists\r\n\tpublic static boolean constantExists(String className, String constantNameRegex) {\r\n\t\tClass<?> clazz = classForName(className);\r\n\t\treturn constantExists(clazz, constantNameRegex);\r\n\t}\r\n\r\n\t// Returns the value of a private static final constant from a given class.\r\n\tpublic static Object getConstantValue(Class<?> clazz, String constantNameRegex) {\r\n\t\treturn getConstantValue(clazz, null, constantNameRegex);\r\n\t}\r\n\t\r\n\tpublic static Object getConstantValue(Class<?> clazz, Object obj, String constantNameRegex) {\r\n\t\ttry {\r\n\t\t\tField constantField = getFieldToMatchRegex(clazz, constantNameRegex);\r\n\t\t\tif (constantField != null) {\r\n\t\t\t\tif (Modifier.isStatic(constantField.getModifiers())) {\r\n\t\t\t\t\treturn constantField.get(null);\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn constantField.get(obj);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} catch (IllegalAccessException iae) {\r\n\t\t\tthrow new ReflectionRuntimeException(iae);\r\n\t\t}\r\n\r\n\t\tthrow new ReflectionRuntimeException(\"Unable to get constant in class \" + clazz.getName()\r\n\t\t\t\t+ \" with approximate name \\\"\" + constantNameRegex\r\n\t\t\t\t+ \"\\\"; no matching constant field found\");\r\n\t}\r\n\r\n\t// Returns the value of a private static final constant from a given class.\r\n\t// Take that, private access!\r\n\tpublic static Object getConstantValue(String className, String constantNameRegex) {\r\n\t\tClass<?> clazz = classForName(className);\r\n\t\treturn getConstantValue(clazz, constantNameRegex);\r\n\t}\r\n\r\n\tpublic static double getConstantValueDouble(Class<?> clazz, Object obj, String constantNameRegex) {\r\n\t\tObject value = getConstantValue(clazz, obj, constantNameRegex);\r\n\t\treturn Double.parseDouble(String.valueOf(value));\r\n\t}\r\n\t\r\n\tpublic static double getConstantValueDouble(Class<?> clazz, String constantNameRegex) {\r\n\t\tObject value = getConstantValue(clazz, constantNameRegex);\r\n\t\treturn Double.parseDouble(String.valueOf(value));\r\n\t}\r\n\r\n\tpublic static double getConstantValueDouble(String className, String constantNameRegex) {\r\n\t\tObject value = getConstantValue(className, constantNameRegex);\r\n\t\treturn Double.parseDouble(String.valueOf(value));\r\n\t}\r\n\r\n\tpublic static int getConstantValueInt(Class<?> clazz, Object obj, String constantNameRegex) {\r\n\t\treturn (int) getConstantValueDouble(clazz, obj, constantNameRegex);\r\n\t}\r\n\r\n\tpublic static int getConstantValueInt(Class<?> clazz, String constantNameRegex) {\r\n\t\treturn (int) getConstantValueDouble(clazz, constantNameRegex);\r\n\t}\r\n\r\n\tpublic static int getConstantValueInt(String className, String constantNameRegex) {\r\n\t\treturn (int) getConstantValueDouble(className, constantNameRegex);\r\n\t}\r\n\r\n\tpublic static boolean getConstantValueBoolean(Class<?> clazz, Object obj, String constantNameRegex) {\r\n\t\tObject value = getConstantValue(clazz, obj, constantNameRegex);\r\n\t\treturn Boolean.parseBoolean(String.valueOf(value));\r\n\t}\r\n\r\n\tpublic static boolean getConstantValueBoolean(Class<?> clazz, String constantNameRegex) {\r\n\t\tObject value = getConstantValue(clazz, constantNameRegex);\r\n\t\treturn Boolean.parseBoolean(String.valueOf(value));\r\n\t}\r\n\r\n\tpublic static boolean getConstantValueBoolean(String className, String constantNameRegex) {\r\n\t\tObject value = getConstantValue(className, constantNameRegex);\r\n\t\treturn Boolean.parseBoolean(String.valueOf(value));\r\n\t}\r\n\t\r\n\tpublic static Field getFieldToMatchRegex(Class<?> clazz, String constantNameRegex) {\r\n\t\treturn getFieldToMatchRegex(clazz, constantNameRegex, true);\r\n\t}\r\n\t\r\n\tpublic static Field getFieldToMatchRegex(Class<?> clazz, String constantNameRegex, boolean includeSuperclasses) {\r\n\t\ttry {\r\n\t\t\twhile (clazz != null) {\r\n\t\t\t\tfor (Field field : clazz.getDeclaredFields()) {\r\n\t\t\t\t\tString constantName = field.getName();\r\n\t\t\t\t\tif (constantNameRegex.isEmpty()\r\n\t\t\t\t\t\t\t|| constantName.equalsIgnoreCase(constantNameRegex)\r\n\t\t\t\t\t\t\t|| constantName.toUpperCase().matches(\r\n\t\t\t\t\t\t\t\t\t\".*\" + constantNameRegex.toUpperCase() + \".*\")) {\r\n\t\t\t\t\t\tfield.setAccessible(true); // lolol not private any\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// more\r\n\t\t\t\t\t\tField modifiersField = getField(Field.class, \"modifiers\");\r\n\t\t\t\t\t\tmodifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL); // lolol not final any more\r\n\t\t\t\t\t\treturn field;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif (includeSuperclasses) {\r\n\t\t\t\t\tclazz = clazz.getSuperclass();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tclazz = null;   // will end loop\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} catch (IllegalAccessException iae) {\r\n\t\t\tthrow new ReflectionRuntimeException(iae);\r\n\t\t}\r\n\t\t\r\n\t\tthrow new IllegalArgumentException(\"No field with approximate name \\\"\" + constantNameRegex + \"\\\"\");\r\n\t}\r\n\t\r\n\t// Sets the value of a private static constant from a given class.\r\n\tpublic static void setConstantValue(Class<?> clazz, String constantNameRegex, Object value) {\r\n\t\tsetConstantValue(clazz, null, constantNameRegex, value);\r\n\t}\r\n\t\r\n\t// Sets the value of a private static constant from a given class.\r\n\tpublic static void setConstantValue(Class<?> clazz, Object obj, String constantNameRegex, Object value) {\r\n\t\tboolean set = false;\r\n\t\ttry {\r\n\t\t\tField constantField = getFieldToMatchRegex(clazz, constantNameRegex);\r\n\t\t\tif (Modifier.isStatic(constantField.getModifiers())) {\r\n\t\t\t\tconstantField.set(null, value);\r\n\t\t\t} else {\r\n\t\t\t\tconstantField.set(obj, value);\r\n\t\t\t}\r\n\r\n\t\t\t// check to make sure the field was set\r\n\t\t\tObject newValue = getConstantValue(clazz, obj, constantField.getName());\r\n\t\t\tif (!newValue.equals(value)) {\r\n\t\t\t\tthrow new ReflectionRuntimeException(\"constant \\\"\" + constantField.getName() + \"\\\" is \"\r\n\t\t\t\t\t\t+ newValue + \", not properly set to \" + value);\r\n\t\t\t}\r\n\r\n\t\t\tset = true;\r\n\t\t} catch (IllegalAccessException iae) {\r\n\t\t\tthrow new ReflectionRuntimeException(iae);\r\n\t\t}\r\n\r\n\t\tif (!set) {\r\n\t\t\tthrow new ReflectionRuntimeException(\"Unable to set constant in class \" + clazz.getName()\r\n\t\t\t\t\t+ \" with approximate name \\\"\" + constantNameRegex\r\n\t\t\t\t\t+ \"\\\"; no matching constant field found\");\r\n\t\t}\r\n\t}\r\n\t\r\n\tpublic static void setConstantValue(String className, String constantNameRegex, Object value) {\r\n\t\tClass<?> clazz = classForName(className);\r\n\t\tsetConstantValue(clazz, null, constantNameRegex, value);\r\n\t}\r\n\t\r\n\tpublic static Object[] getDefaultArgs(Method method) {\r\n\t\tClass<?>[] paramTypes = method.getParameterTypes();\r\n\t\tObject[] paramValues = new Object[paramTypes.length];\r\n\t\tfor (int i = 0; i < paramTypes.length; i++) {\r\n\t\t\tparamValues[i] = getDefaultValue(paramTypes[i]);\r\n\t\t}\r\n\t\treturn paramValues;\r\n\t}\r\n\t\r\n\tpublic static Object getDefaultValue(Class<?> type) {\r\n\t\tif (type == Integer.TYPE || type == Integer.class) {\r\n\t\t\treturn 0;\r\n\t\t} else if (type == Long.TYPE || type == Long.class) {\r\n\t\t\treturn 0L;\r\n\t\t} else if (type == Short.TYPE || type == Short.class) {\r\n\t\t\treturn 0L;\r\n\t\t} else if (type == Byte.TYPE || type == Byte.class) {\r\n\t\t\treturn (byte) 0;\r\n\t\t} else if (type == Double.TYPE || type == Double.class) {\r\n\t\t\treturn 0.0;\r\n\t\t} else if (type == Float.TYPE || type == Float.class) {\r\n\t\t\treturn 0.0f;\r\n\t\t} else if (type == Boolean.TYPE || type == Boolean.class) {\r\n\t\t\treturn false;\r\n\t\t} else if (type == Character.TYPE || type == Character.class) {\r\n\t\t\treturn '\\0';\r\n\t\t} else if (type == String.class) {\r\n\t\t\treturn \"\";\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\t\r\n\tpublic static Object getFirstFieldValueOfType(Class<?> clazz, Object obj, Class<?> fieldType) {\r\n\t\tfor (Field field : clazz.getDeclaredFields()) {\r\n\t\t\tif (fieldType.isAssignableFrom(field.getType())) {\r\n\t\t\t\treturn getFieldValue(obj, field);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\t\r\n\t// Sets the value of a private field from a given class.\r\n\tpublic static Object getFieldValue(Object obj, Field field) {\r\n\t\ttry {\r\n\t\t\tField modifiersField = getField(Field.class, \"modifiers\");\r\n\t\t\tfield.setAccessible(true); // lolol not private\r\n\t\t\tmodifiersField.setInt(field, field.getModifiers()\r\n\t\t\t\t\t& ~Modifier.FINAL); // lolol not final any more\r\n\t\t\treturn field.get(obj);\r\n\t\t} catch (IllegalAccessException iae) {\r\n\t\t\tthrow new ReflectionRuntimeException(iae);\r\n\t\t}\r\n\t}\r\n\r\n\t// Sets the value of a private field from a given class.\r\n\tpublic static Object getFieldValue(Object obj, String name) {\r\n\t\tClass<?> clazz = obj.getClass();\r\n\t\ttry {\r\n\t\t\tField modifiersField = getField(Field.class, \"modifiers\");\r\n\t\t\tmodifiersField.setAccessible(true);\r\n\t\t\tField field = getField(clazz, name);\r\n\t\t\tString fieldName = field.getName();\r\n\t\t\tif (fieldName.equals(name)) {\r\n\t\t\t\tfield.setAccessible(true); // lolol not private\r\n\t\t\t\tmodifiersField.setInt(field, field.getModifiers()\r\n\t\t\t\t\t\t& ~Modifier.FINAL); // lolol not final any more\r\n\t\t\t\treturn field.get(obj);\r\n\t\t\t}\r\n\t\t} catch (IllegalAccessException iae) {\r\n\t\t\tthrow new ReflectionRuntimeException(iae);\r\n\t\t}\r\n\t\tthrow new IllegalArgumentException(\"Fields.get: unable to read field \\\"\" + name + \"\\\" from class \" + clazz.getName());\r\n\t}\r\n\r\n\tpublic static Object parseValue(Class<?> type, String value) {\r\n\t\treturn parseValue(type, null, value);\r\n\t}\r\n\t\r\n\tpublic static Object parseValue(Class<?> type, Type genericType, String value) {\r\n\t\tif (type == Integer.TYPE || type == Integer.class) {\r\n\t\t\treturn Integer.parseInt(value);\r\n\t\t} else if (type == Long.TYPE || type == Long.class) {\r\n\t\t\treturn Long.parseLong(value);\r\n\t\t} else if (type == Short.TYPE || type == Short.class) {\r\n\t\t\treturn Short.parseShort(value);\r\n\t\t} else if (type == Byte.TYPE || type == Byte.class) {\r\n\t\t\treturn Byte.parseByte(value);\r\n\t\t} else if (type == Float.TYPE || type == Float.class) {\r\n\t\t\treturn Float.parseFloat(value);\r\n\t\t} else if (type == Double.TYPE || type == Double.class) {\r\n\t\t\treturn Double.parseDouble(value);\r\n\t\t} else if (type == Boolean.TYPE || type == Boolean.class) {\r\n\t\t\treturn Boolean.parseBoolean(value);\r\n\t\t} else if (type == Character.TYPE || type == Character.class) {\r\n\t\t\tif (value.length() > 2 && value.charAt(0) == '\\'' && value.charAt(value.length() - 1) == '\\'') {\r\n\t\t\t\tvalue = value.substring(1, value.length() - 1);\r\n\t\t\t}\r\n\t\t\treturn value.charAt(0);\r\n\t\t} else if (type == String.class) {\r\n\t\t\tif (value.length() > 2 && value.charAt(0) == '\"' && value.charAt(value.length() - 1) == '\"') {\r\n\t\t\t\tvalue = value.substring(1, value.length() - 1);\r\n\t\t\t}\r\n\t\t\treturn value;\r\n\t\t} else if (type == List.class || type == ArrayList.class || type.isArray()) {\r\n\t\t\tvalue = value.trim();\r\n\t\t\tif (value.startsWith(\"[\") || value.startsWith(\"{\") || value.startsWith(\"(\")) {\r\n\t\t\t\tvalue = value.substring(1);\r\n\t\t\t}\r\n\t\t\tif (value.endsWith(\"]\") || value.endsWith(\"}\") || value.endsWith(\")\")) {\r\n\t\t\t\tvalue = value.substring(0, value.length() - 1);\r\n\t\t\t}\r\n\t\t\tString[] elements = value.split(\"[ \\t]*,[ \\t]*\");\r\n\t\t\tArrayList<Object> list = new ArrayList<Object>();\r\n\t\t\tClass<?> paramType = Object.class;\r\n\t\t\tParameterizedType paramGenericType = (ParameterizedType) genericType;\r\n\t\t\tif (paramGenericType.getActualTypeArguments().length > 0) {\r\n\t\t\t\tparamType = (Class<?>) paramGenericType.getActualTypeArguments()[0];\r\n\t\t\t}\r\n\t\t\tfor (int i = 0; i < elements.length; i++) {\r\n\t\t\t\tif (paramType == null || paramType == Object.class || paramType == String.class) {\r\n\t\t\t\t\tlist.add(elements[i]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlist.add(parseValue(paramType, elements[i]));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif (type.isArray()) {\r\n\t\t\t\t// convert ArrayList into array\r\n\t\t\t\tObject[] array = (Object[]) Array.newInstance(type.getComponentType(), 0);\r\n\t\t\t\treturn list.toArray(array);\r\n\t\t\t} else {\r\n\t\t\t\treturn list;\r\n\t\t\t}\r\n\t\t} else if (type == Map.class || type == HashMap.class) {\r\n\t\t\tvalue = value.trim();\r\n\t\t\tif (value.startsWith(\"[\") || value.startsWith(\"{\") || value.startsWith(\"(\")) {\r\n\t\t\t\tvalue = value.substring(1);\r\n\t\t\t}\r\n\t\t\tif (value.endsWith(\"]\") || value.endsWith(\"}\") || value.endsWith(\")\")) {\r\n\t\t\t\tvalue = value.substring(0, value.length() - 1);\r\n\t\t\t}\r\n\t\t\tString[] elements = value.split(\"[ \\t]*,[ \\t]*\");\r\n\t\t\tMap<Object, Object> map = new HashMap<Object, Object>();\r\n\t\t\tClass<?> keyType = Object.class;\r\n\t\t\tClass<?> valueType = Object.class;\r\n\t\t\tParameterizedType paramGenericType = (ParameterizedType) genericType;\r\n\t\t\tif (paramGenericType.getActualTypeArguments().length >= 2) {\r\n\t\t\t\tkeyType = (Class<?>) paramGenericType.getActualTypeArguments()[0];\r\n\t\t\t\tvalueType = (Class<?>) paramGenericType.getActualTypeArguments()[1];\r\n\t\t\t}\r\n\t\t\tfor (int i = 0; i < elements.length; i++) {\r\n\t\t\t\tString[] keyValue = elements[i].split(\"[ \\t]*=[ \\t]*\");\r\n\t\t\t\tif (keyValue.length < 2) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tObject kv_key = keyValue[0];\r\n\t\t\t\tObject kv_value = keyValue[1];\r\n\t\t\t\t\t\t\r\n\t\t\t\tif (keyType != null && keyType != Object.class && keyType != String.class) {\r\n\t\t\t\t\tkv_key = parseValue(keyType, keyValue[0]);\r\n\t\t\t\t}\r\n\t\t\t\tif (valueType != null && valueType != Object.class && valueType != String.class) {\r\n\t\t\t\t\tkv_value = parseValue(valueType, keyValue[1]);\r\n\t\t\t\t}\r\n\t\t\t\tmap.put(kv_key, kv_value);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\treturn map;\r\n\t\t} else {\r\n\t\t\tthrow new IllegalArgumentException(\"Fields.parseValue: unable to parse value \\\"\" + value + \"\\\" of type \" + type.getName());\r\n\t\t}\r\n\t}\r\n\r\n\t// Sets the value of a private field from a given class.\r\n\tpublic static void setFieldValue(Class<?> clazz, String name, Object value) {\r\n\t\ttry {\r\n\t\t\tField modifiersField = getField(Field.class, \"modifiers\");\r\n\t\t\tField field = getField(clazz, name);\r\n\t\t\tString fieldName = field.getName();\r\n\t\t\tif (fieldName.equals(name)) {\r\n\t\t\t\tmodifiersField.setInt(field, field.getModifiers()\r\n\t\t\t\t\t\t& ~Modifier.FINAL); // lolol not final any more\r\n\t\t\t\tfield.set(null, value);\r\n\t\t\t}\r\n\t\t} catch (IllegalAccessException iae) {\r\n\t\t\tthrow new ReflectionRuntimeException(iae);\r\n\t\t}\r\n\t}\r\n\r\n\t// Sets the value of a private field from a given class.\r\n\tpublic static void setFieldValue(Object obj, Field field, Object value) {\r\n\t\ttry {\r\n\t\t\tField modifiersField = getField(Field.class, \"modifiers\");\r\n\t\t\tfield.setAccessible(true); // lolol not private\r\n\t\t\tmodifiersField.setInt(field, field.getModifiers()\r\n\t\t\t\t\t& ~Modifier.FINAL); // lolol not final any more\r\n\t\t\tfield.set(obj, value);\r\n\t\t} catch (IllegalAccessException iae) {\r\n\t\t\tthrow new ReflectionRuntimeException(iae);\r\n\t\t}\r\n\t}\r\n\t\r\n\tpublic static Class<?> classForName(String className) {\r\n\t\ttry {\r\n\t\t\treturn Class.forName(className);\r\n\t\t} catch (ClassNotFoundException cnfe) {\r\n\t\t\tthrow new ReflectionRuntimeException(cnfe);\r\n\t\t}\r\n\t}\r\n\t\r\n\tpublic static Object staticMethodInvoke(String className, String methodName, Object... params) {\r\n\t\treturn staticMethodInvoke(classForName(className), methodName, params);\r\n\t}\r\n\t\r\n\tpublic static Object staticMethodInvoke(Class<?> clazz, String methodName, Object... params) {\r\n\t\treturn methodInvoke(clazz, null, methodName, params);\r\n\t}\r\n\t\r\n\tpublic static Object methodInvoke(String className, Object obj, String methodName, Object... params) {\r\n\t\treturn methodInvoke(classForName(className), obj, methodName, params);\r\n\t}\r\n\t\r\n\tpublic static Object methodInvoke(Class<?> clazz, Object obj, String methodName, Object... params) {\r\n\t\ttry {\r\n\t\t\tMethod method = getMethod(clazz, methodName);\r\n\t\t\tif (method != null) {\r\n\t\t\t\tif (!Modifier.isPublic(method.getModifiers())) {\r\n\t\t\t\t\tmethod.setAccessible(true);\r\n\t\t\t\t}\r\n\t\t\t\treturn method.invoke(obj, params);\r\n\t\t\t} else {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t} catch (IllegalAccessException ite) {\r\n\t\t\tthrow new ReflectionRuntimeException(ite);\r\n\t\t} catch (InvocationTargetException ite) {\r\n\t\t\tthrow new ReflectionRuntimeException(ite);\r\n\t\t}\r\n\t}\r\n\t\r\n\tpublic static Method getMethod(Class<?> clazz, String methodName) {\r\n\t\tfor (Method method : clazz.getDeclaredMethods()) {\r\n\t\t\tif (method.getName().equals(methodName)) {\r\n\t\t\t\treturn method;\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor (Method method : clazz.getMethods()) {\r\n\t\t\tif (method.getName().equals(methodName)) {\r\n\t\t\t\treturn method;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\t\r\n\tpublic static Field getField(Class<?> clazz, String fieldName) {\r\n\t\treturn getField(clazz, fieldName, true);\r\n\t}\r\n\r\n\tpublic static Field getField(Class<?> clazz, String fieldName, boolean checkSuperclasses) {\r\n\t\tClass<?> currentClazz = clazz;\r\n\t\twhile (currentClazz != null) {\r\n\t\t\tfor (Field field : currentClazz.getDeclaredFields()) {\r\n\t\t\t\tif (field.getName().equals(fieldName)) {\r\n\t\t\t\t\tfield.setAccessible(true);\r\n\t\t\t\t\treturn field;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (checkSuperclasses) {\r\n\t\t\t\tcurrentClazz = currentClazz.getSuperclass();\r\n\t\t\t} else {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthrow new ReflectionRuntimeException(\"no field named \\\"\" + fieldName + \"\\\" found in \" + clazz);\r\n\t}\r\n\t\r\n\tpublic static Class<?> primitiveFor(Class<?> clazz) {\r\n\t\tif (clazz == Integer.class) {\r\n\t\t\treturn Integer.TYPE;\r\n\t\t} else if (clazz == Double.class) {\r\n\t\t\treturn Double.TYPE;\r\n\t\t} else if (clazz == Boolean.class) {\r\n\t\t\treturn Boolean.TYPE;\r\n\t\t} else if (clazz == Long.class) {\r\n\t\t\treturn Long.TYPE;\r\n\t\t} else if (clazz == Short.class) {\r\n\t\t\treturn Short.TYPE;\r\n\t\t} else if (clazz == Byte.class) {\r\n\t\t\treturn Byte.TYPE;\r\n\t\t} else if (clazz == Character.class) {\r\n\t\t\treturn Character.TYPE;\r\n\t\t} else if (clazz == Float.class) {\r\n\t\t\treturn Float.TYPE;\r\n\t\t} else {\r\n\t\t\treturn clazz;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static String toStringViaReflection(Object o) {\r\n\t    if (o == null) {\r\n\t        return \"null\";\r\n\t    }\r\n\t    StringBuilder sb = new StringBuilder();\r\n\t    Class<?> clazz = o.getClass();\r\n\t    sb.append(clazz.getName() + \"{\");\r\n\t    boolean first = true;\r\n\t    for (Field field : clazz.getDeclaredFields()) {\r\n\t        if (!first) {\r\n\t            sb.append(\",\");\r\n\t        }\r\n\t        String fieldName = field.getName();\r\n\t        sb.append(fieldName + \"=\");\r\n\t        try {\r\n\t            sb.append(field.get(o));\r\n\t        } catch (IllegalAccessException e) {\r\n\t            // private field; see if there's an accessor for this field\r\n\t            String capitalized = fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);\r\n                try {\r\n                    Method method = clazz.getMethod(\"get\" + capitalized);\r\n                    sb.append(method.invoke(o));\r\n                } catch (Exception ex) {\r\n                \t// empty\r\n                }\r\n                try {\r\n                    Method method = clazz.getMethod(\"is\" + capitalized);\r\n                    sb.append(method.invoke(o));\r\n                } catch (Exception ex) {\r\n                \t// empty\r\n                }\r\n\t        } catch (Exception e) {\r\n\t            sb.append(e.getClass().getName());\r\n\t        }\r\n\t        first = false;\r\n\t    }\r\n\t    sb.append(\"}\");\r\n\t    return sb.toString();\r\n\t}\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/util/CollectionUtils.java",
    "content": "package stanford.cs106.util;\n\nimport java.util.*;\n\npublic class CollectionUtils {\n\t/** So that an object of this class cannot be constructed. */\n\tprivate CollectionUtils() {}\n\t\n\t/**\n\t * Converts the elements passed into a list.\n\t * Almost the same as Java's Collections.asList, but returns an ArrayList.\n\t */\n\t// @SafeVarargs\n\tpublic static <T> ArrayList<T> asList(T... strings) {\n\t\tArrayList<T> list = new ArrayList<T>(strings.length + 1);\n\t\tfor (T s : strings) {\n\t\t\tlist.add(s);\n\t\t}\n\t\treturn list;\n\t}\n\t\n\t/**\n\t * Converts the elements found in the given Enumeration into a list.\n\t */\n\tpublic static <T> List<T> asList(Enumeration<T> enu) {\n\t\tList<T> list = new ArrayList<T>();\n\t\twhile (enu != null && enu.hasMoreElements()) {\n\t\t\tlist.add(enu.nextElement());\n\t\t}\n\t\treturn list;\n\t}\n\n\t/**\n\t * Converts the elements found in the given Iterator into a list.\n\t */\n\tpublic static <T> List<T> asList(Iterator<T> itr) {\n\t\tList<T> list = new ArrayList<T>();\n\t\twhile (itr != null && itr.hasNext()) {\n\t\t\tlist.add(itr.next());\n\t\t}\n\t\treturn list;\n\t}\n\n\t/**\n\t * Converts the given pair of arrays into a map that maps each keys[i] to\n\t * the corresponding values[i].\n\t * @return the map (empty map if keys == null or values == null)\n\t */\n\tpublic static <K, V> Map<K, V> asMap(K[] keys, V[] values) {\n\t\tMap<K, V> map = new LinkedHashMap<K, V>();\n\t\tif (keys == null || values == null) {\n\t\t\treturn map;\n\t\t}\n\t\t\n\t\tfor (int i = 0, len = Math.min(keys.length, values.length); i < len; i++) {\n\t\t\tmap.put(keys[i], values[i]);\n\t\t}\n\t\treturn map;\n\t}\n\n\t/**\n\t * Converts the given pair of lists into a map that maps each keys[i] to\n\t * the corresponding values[i].\n\t * @return the map (empty map if keys == null or values == null)\n\t */\n\tpublic static <K, V> Map<K, V> asMap(List<K> keys, List<V> values) {\n\t\tMap<K, V> map = new LinkedHashMap<K, V>();\n\t\tif (keys == null || values == null) {\n\t\t\treturn map;\n\t\t}\n\t\t\n\t\tfor (int i = 0, len = Math.min(keys.size(), values.size()); i < len; i++) {\n\t\t\tmap.put(keys.get(i), values.get(i));\n\t\t}\n\t\treturn map;\n\t}\n\n\t/**\n\t * Converts the given array of object pairs into a map with each pair as key, value.\n\t * Must have an even number of items.\n\t * If any key or value is null, that pair is skipped.\n\t * @param pairs\tThe pairs for the map as {..., key, value, ...} \n\t * @return the map\n\t * @throws ClassCastException if an even index element is not a K or an odd element is not a V\n\t */\n\t@SuppressWarnings(\"unchecked\")\n\tpublic static <K, V> Map<K, V> asMap(Object... pairs) {\n\t\tif (pairs.length % 2 != 0) {\n\t\t\tthrow new IllegalArgumentException(\"must pass an even number of parameters\");\n\t\t}\n\n\t\tMap<K, V> map = new LinkedHashMap<K, V>();\n\t\tfor (int i = 0; i < pairs.length - 1; i += 2) {\n\t\t\tif (pairs[i] != null && pairs[i + 1] != null) {\n\t\t\t\tmap.put((K) pairs[i], (V) pairs[i + 1]);\n\t\t\t}\n\t\t}\n\t\treturn map;\n\t}\n\n\t/**\n\t * Converts the given pair of arrays into a sorted map that maps each\n\t * keys[i] to the corresponding values[i].\n\t * @return the map (empty map if keys == null or values == null)\n\t */\n\tpublic static <K extends Comparable<? super K>, V> Map<K, V> asMapSorted(K[] keys, V[] values) {\n\t\tMap<K, V> map = new TreeMap<K, V>();\n\t\tif (keys == null || values == null) {\n\t\t\treturn map;\n\t\t}\n\t\t\n\t\tfor (int i = 0, len = Math.min(keys.length, values.length); i < len; i++) {\n\t\t\tmap.put(keys[i], values[i]);\n\t\t}\n\t\treturn map;\n\t}\n\n\t/**\n\t * Converts the given pair of arrays into a map that maps each keys[i] to\n\t * the corresponding values[i].\n\t * @return the map (empty map if keys == null or values == null)\n\t */\n\tpublic static <K extends Comparable<? super K>, V> Map<K, V> asMapSorted(List<K> keys, List<V> values) {\n\t\tMap<K, V> map = new TreeMap<K, V>();\n\t\tif (keys == null || values == null) {\n\t\t\treturn map;\n\t\t}\n\t\t\n\t\tfor (int i = 0, len = Math.min(keys.size(), values.size()); i < len; i++) {\n\t\t\tmap.put(keys.get(i), values.get(i));\n\t\t}\n\t\treturn map;\n\t}\n\n\t/**\n\t * Converts the given values into a set.\n\t * @return the set, or empty set if values == null\n\t */\n\tpublic static <K> Set<K> asSet(K value) {\n\t\tSet<K> set = new LinkedHashSet<K>();\n\t\tif (value != null) {\n\t\t\tset.add(value);\n\t\t}\n\t\treturn set;\n\t}\n\n\t/**\n\t * Converts the given values into a set.\n\t * @return the set, or empty set if values == null\n\t */\n\t// @SafeVarargs\n\tpublic static <K> Set<K> asSet(K... values) {\n\t\tSet<K> set = new LinkedHashSet<K>();\n\t\tif (values == null) {\n\t\t\treturn set;\n\t\t}\n\t\t\n\t\tfor (K value : values) {\n\t\t\tset.add(value);\n\t\t}\n\t\treturn set;\n\t}\n\n\t/**\n\t * Converts the given values into a sorted set.\n\t * @return the set, or empty set if values == null\n\t */\n\t// @SafeVarargs\n\tpublic static <K extends Comparable<K>> Set<K> asSetSorted(K... values) {\n\t\tSet<K> set = new TreeSet<K>();\n\t\tfor (K value : values) {\n\t\t\tset.add(value);\n\t\t}\n\t\treturn set;\n\t}\n\t\n\t/**\n\t * Returns the index of the given value in the given list,\n\t * using == to compare rather than .equals.\n\t */\n\tpublic static <T> int indexOfSafe(List<T> list, T value) {\n\t\tfor (int i = 0; i < list.size(); i++) {\n\t\t\tif (list.get(i) == value) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t}\n\n\t/**\n\t * Combines the elements of the given collection into a string separated\n\t * by commas.\n\t */\n\tpublic static String join(Collection<?> c) {\n\t\treturn join(c, \", \");\n\t}\n\t\n\t/**\n\t * Combines the elements of the given collection into a string separated\n\t * by the given separator.\n\t */\n\tpublic static String join(Collection<?> c, String separator) {\n\t\tif (c == null) {\n\t\t\treturn null;\n\t\t}\n\t\t\n\t\tStringBuilder result = new StringBuilder();\n\t\tint i = 0;\n\t\tfor (Object o : c) {\n\t\t\tif (i > 0) {\n\t\t\t\tresult.append(separator);\n\t\t\t}\n\t\t\tresult.append(o);\n\t\t\ti++;\n\t\t}\n\t\treturn result.toString();\n\t}\n\t\n\t/**\n\t * Combines the elements of the given map into a string separated\n\t * by an equals sign between keys and their values, and commas between each entry.\n\t */\n\tpublic static String join(Map<?, ?> map) {\n\t\treturn join(map, \"=\", \", \");\n\t}\n\t\n\t/**\n\t * Combines the elements of the given collection into a string separated\n\t * by the given kv separator between keys and their values, and\n\t * the given element separator commas between each entry.\n\t */\n\tpublic static String join(Map<?, ?> map, String kvSeparator, String elementSeparator) {\n\t\tif (map == null) {\n\t\t\treturn null;\n\t\t}\n\t\t\n\t\tStringBuilder result = new StringBuilder();\n\t\tint i = 0;\n\t\tfor (Map.Entry<?, ?> entry : map.entrySet()) {\n\t\t\tif (i > 0) {\n\t\t\t\tresult.append(elementSeparator);\n\t\t\t}\n\t\t\tresult.append(entry.getKey());\n\t\t\tresult.append(kvSeparator);\n\t\t\tresult.append(entry.getValue());\n\t\t\ti++;\n\t\t}\n\t\treturn result.toString();\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/util/ConstantUtils.java",
    "content": "package stanford.cs106.util;\n\npublic class ConstantUtils {\n\tpublic static String makeConstantString(String text) {\n\t\treturn new String(text);\n\t}\n\t\n\t@SuppressWarnings(\"deprecation\")\n\tpublic static Integer makeConstantInteger(Integer value) {\n\t\treturn new Integer(value);\n\t}\n\t\n\t@SuppressWarnings(\"deprecation\")\n\tpublic static Double makeConstantDouble(Double value) {\n\t\treturn new Double(value);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/util/ExceptionUtils.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2015/05/28\n * - added filterStackTrace\n */\n\npackage stanford.cs106.util;\n\nimport java.io.*;\n\nimport java.util.*;\n\n/**\n * This class contains utility code related to exceptions.\n * A lot of the methods are related to examining an exception's stack trace\n * to learn things about what methods/classes are on the call stack.\n * This helps Practice-It figure out what went wrong in a student's code and where.\n * \n * @author Marty Stepp\n */\n\npublic class ExceptionUtils {\n\t/** So that an object of this class cannot be constructed. */\n\tprivate ExceptionUtils() {\n\t\t// empty\n\t}\n\t\n\tpublic static String filterStackTrace(String stackTrace, String... packagesToStrip) {\n\t\tString[] lines = stackTrace.split(\"\\r?\\n\");\n\t\tList<String> outLines = new ArrayList<String>();\n\t\tfor (String line : lines) {\n\t\t\tboolean tainted = false;\n\t\t\tfor (String packageStr : packagesToStrip) {\n\t\t\t\tif (line.contains(\"at \" + packageStr)) {\n\t\t\t\t\ttainted = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!tainted) {\n\t\t\t\toutLines.add(line);\n\t\t\t}\n\t\t}\n\t\treturn StringUtils.join(outLines, \"\\n\");\n\t}\n\t\n\t/**\n\t * The current stack trace as a multi-line String.\n\t */\n\tpublic static String stackTraceToString() {\n\t\treturn stackTraceToString(new RuntimeException());\n\t}\n\t\n\t/**\n\t * The current stack trace as a multi-line String.\n\t */\n\tpublic static String stackTraceToString(int lines) {\n\t\treturn stackTraceToString(new RuntimeException(), lines);\n\t}\n\t\n\t/**\n\t * The stack trace of the given exception as a multi-line String.\n\t */\n\tpublic static String stackTraceToString(Throwable throwable) {\n\t\treturn stackTraceToString(throwable, -1);\n\t}\n\t\n\t/**\n\t * The stack trace of the given exception as a multi-line String.\n\t */\n\tpublic static String stackTraceToString(Throwable throwable, int lines) {\n\t\tByteArrayOutputStream bytes = new ByteArrayOutputStream();\n\t\tthrowable.printStackTrace(new PrintStream(bytes));\n\t\tString result = bytes.toString();\n\t\t\n\t\tThrowable cause = throwable.getCause();\n\t\tif (cause != null) {\n\t\t\tresult += \"\\n\\ncaused by: \" + stackTraceToString(cause);\n\t\t}\n\t\t\n\t\tif (lines >= 0) {\n\t\t\tresult = StringUtils.fitToHeight(result, lines);\n\t\t}\n\t\t\n\t\treturn result;\n\t}\n\t\n\t/**\n\t * The top-level line number within the given class name on which\n\t * this exception occurred.  For example, if you have the exception:\n\t * \n\t * <pre>\n\t * RuntimeException\n\t *     at Foo.java line 42\n\t *     at Bar.java line 18\n\t *     at Bar.java line 29\n\t * </pre>\n\t * \n\t * and you ask for the line number from Bar, returns 18.\n\t * @return -1 if the exception doesn't contain a stack frame for this class\n\t */\n\tpublic static int getLineNumber(Throwable throwable, String className) {\n\t\treturn getLineNumber(throwable, className, null);\n\t}\n\t\n\t/**\n\t * The top-level line number within the given class and method name\n\t * on which this exception occurred in the given method.  For example, if\n\t * you have the exception:\n\t * \n\t * <pre>\n\t * RuntimeException\n\t *     at Foo.java:method0() line 42\n\t *     at Bar.java:method1() line 96\n\t *     at Bar.java:method2() line 18\n\t *     at Bar.java:method2() line 29\n\t * </pre>\n\t * \n\t * and you ask for the line number from Bar, method2, returns 18.\n\t * @return -1 if the exception doesn't contain a stack frame for this class/method\n\t */\n\tpublic static int getLineNumber(Throwable throwable, String className, String methodName) {\n\t\tif (throwable != null) {\n\t\t\tfor (StackTraceElement ste : throwable.getStackTrace()) {\n\t\t\t\tif (className == null || ste.getClassName().contains(className)) {\n\t\t\t\t\tif (methodName == null || ste.getMethodName().equals(methodName)) {\n\t\t\t\t\t\treturn ste.getLineNumber() + 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t}\n\n\t/**\n\t * The current class name on top of the current method call stack,\n\t * ignoring any classes in the given list of classes to skip.\n\t * @return the class name, or null if none can be determined (unlikely)\n\t */\n\tpublic static String getCallingClassName(String... classNamesToSkip) {\n\t\tRuntimeException re = new RuntimeException();\n\t\tfor (StackTraceElement ste : re.getStackTrace()) {\n\t\t\tfor (String classNameToSkip : classNamesToSkip) {\n\t\t\t\tString className = ste.getClassName();\n\t\t\t\tif (className.contains(\"ExceptionUtils\")) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (className.contains(classNameToSkip)) {\n\t\t\t\t\treturn className;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\t/**\n\t * The current method name within the given class name that is\n\t * highest on the current method call stack.\n\t * @return the method name, or empty string if no method from that class is on the stack\n\t */\n\tpublic static String getMethodName(Throwable throwable, String className) {\n\t\tif (throwable != null) {\n\t\t\tfor (StackTraceElement ste : throwable.getStackTrace()) {\n\t\t\t\tif (className == null || ste.getClassName().contains(className)) {\n\t\t\t\t\treturn ste.getMethodName();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn \"\";\n\t}\n\n\t/**\n\t * The true cause of an exception that has occurred.\n\t * Basically calls t.getCause() until it hits the top level.\n\t * If passed null, returns null.\n\t */\n\tpublic static Throwable getUnderlyingCause(Throwable t) {\n\t\twhile (t != null && t.getCause() != null) {\n\t\t\tt = t.getCause();\n\t\t}\n\t\treturn t;\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/util/OperatingSystem.java",
    "content": "package stanford.cs106.util;\n\npublic enum OperatingSystem {\n\tWINDOWS, MAC, LINUX, UNKNOWN;\n\t\n\tpublic static OperatingSystem get() {\n\t\tString osName = String.valueOf(System.getProperty(\"os.name\")).toLowerCase();\n\t\tif (osName.contains(\"win\") || osName.contains(\"surface\") || osName.contains(\"metro\")) {\n\t\t\treturn WINDOWS;\n\t\t} else if (osName.contains(\"mac\") || osName.contains(\"os x\")\n\t\t\t\t|| osName.contains(\"osx\") || osName.contains(\"ios\")) {\n\t\t\treturn MAC;\n\t\t} else if (osName.contains(\"nix\") || osName.contains(\"nux\")\n\t\t\t\t|| osName.contains(\"edora\") || osName.contains(\"buntu\")) {\n\t\t\treturn LINUX;\n\t\t} else {\n\t\t\treturn UNKNOWN;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/util/ProcessUtils.java",
    "content": "package stanford.cs106.util;\n\nimport java.lang.management.*;\n\npublic class ProcessUtils {\n\tprivate ProcessUtils() {\n\t\t// empty\n\t}\n\t\n\tpublic static int getPID() {\n\t\tRuntimeMXBean bean = ManagementFactory.getRuntimeMXBean();\n\t\tif (bean == null) {\n\t\t\treturn -1;\n\t\t}\n\t\tString name = bean.getName();\n\t\tif (name == null || !name.contains(\"@\")) {\n\t\t\treturn -1;\n\t\t}\n\t\tString pidStr = name.substring(0, name.indexOf(\"@\"));\n\t\ttry {\n\t\t\treturn Integer.parseInt(pidStr);\n\t\t} catch (NumberFormatException nfe) {\n\t\t\treturn -1;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/util/RandomGenerator.java",
    "content": "package stanford.cs106.util;\n\npublic class RandomGenerator extends acm.util.RandomGenerator {\n\tprivate static final long serialVersionUID = 0L;\n\tprivate static Long allSeed = null;\n\tprivate static Boolean rigBooleanValue;\n\tprivate static Double rigDoubleValue;\n\tprivate static Integer rigIntValue;\n\t\n\tpublic static void setAllSeed(Long seed) {\n\t\tallSeed = seed;\n\t\tif (seed != null) {\n\t\t\tacm.util.RandomGenerator.getInstance().setSeed(seed);\n\t\t}\n\t}\n\t\n\tprivate static final RandomGenerator instance = new RandomGenerator();\n\t\n\tpublic static RandomGenerator getInstance() {\n\t\treturn instance;\n\t}\n\t\n\tpublic static void rigBoolean(Boolean value) {\n\t\trigBooleanValue = value;\n\t}\n\t\n\tpublic static void rigDouble(Double value) {\n\t\trigDoubleValue = value;\n\t}\n\t\n\tpublic static void rigInt(Integer value) {\n\t\trigIntValue = value;\n\t}\n\t\n\tpublic RandomGenerator() {\n\t\tsuper();\n\t\tif (allSeed != null) {\n\t\t\tsetSeed(allSeed);\n\t\t}\n\t}\n\t\n\tpublic RandomGenerator(long seed) {\n\t\tsuper();\n\t\tsetSeed(seed);\n\t}\n\t\n\t@Override\n\tpublic boolean nextBoolean() {\n\t\tif (rigBooleanValue != null) {\n\t\t\treturn rigBooleanValue;\n\t\t} else {\n\t\t\treturn super.nextBoolean();\n\t\t}\n\t}\n\t\n\t@Override\n\tpublic boolean nextBoolean(double probability) {\n\t\tif (rigBooleanValue != null) {\n\t\t\treturn rigBooleanValue;\n\t\t} else {\n\t\t\treturn super.nextBoolean(probability);\n\t\t}\n\t}\n\t\n\t@Override\n\tpublic double nextDouble() {\n\t\tif (rigDoubleValue != null) {\n\t\t\treturn rigDoubleValue;\n\t\t} else {\n\t\t\treturn super.nextDouble();\n\t\t}\n\t}\n\t\n\t@Override\n\tpublic double nextDouble(double min, double max) {\n\t\tif (rigDoubleValue != null) {\n\t\t\treturn rigDoubleValue;\n\t\t} else {\n\t\t\treturn super.nextDouble(min, max);\n\t\t}\n\t}\n\t\n\t@Override\n\tpublic int nextInt() {\n\t\tif (rigIntValue != null) {\n\t\t\treturn rigIntValue;\n\t\t} else {\n\t\t\treturn super.nextInt();\n\t\t}\n\t}\n\t\n\t@Override\n\tpublic int nextInt(int max) {\n\t\tif (rigIntValue != null) {\n\t\t\treturn rigIntValue;\n\t\t} else {\n\t\t\treturn super.nextInt(max);\n\t\t}\n\t}\n\t\n\t@Override\n\tpublic int nextInt(int min, int max) {\n\t\tif (rigIntValue != null) {\n\t\t\treturn rigIntValue;\n\t\t} else {\n\t\t\treturn super.nextInt(min, max);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/util/RecursionUtils.java",
    "content": "package stanford.cs106.util;\n\n/**\n * A class with a few \"helper\" methods for recursion and backtracking.\n */\npublic class RecursionUtils {\n\tprivate static final String INDENT = \"    \";\n\t\n\t/*\n\t * Private constructor to prevent instantiation.\n\t */\n\tprivate RecursionUtils() {\n\t\t// empty\n\t}\n\t\n\t/**\n\t * Returns the number of recursive calls currently on top of the call stack.\n\t */\n\tpublic static int countCalls() {\n\t\tThrowable t = new RuntimeException();\n\t\tStackTraceElement[] methods = t.getStackTrace();\n\t\t\n\t\t// skip any methods of the Recursion class\n\t\tint startIndex = 1;\n\t\twhile (startIndex < methods.length &&\n\t\t\t\tmethods[startIndex].getClassName().equals(methods[0].getClassName())) {\n\t\t\tstartIndex++;\n\t\t}\n\t\treturn countCalls(startIndex + 1);   // go up 1 because we make a call\n\t}\n\t\n\t/**\n\t * Prints the given value, with each line indented relative to how many\n\t * recursive calls are currently on top of the call stack.\n\t */\n\tpublic static void println(boolean b) {\n\t\tprintln(String.valueOf(b));\n\t}\n\t\n\t/**\n\t * Prints the given value, with each line indented relative to how many\n\t * recursive calls are currently on top of the call stack.\n\t */\n\tpublic static void println(char c) {\n\t\tprintln(String.valueOf(c));\n\t}\n\t\n\t/**\n\t * Prints the given value, with each line indented relative to how many\n\t * recursive calls are currently on top of the call stack.\n\t */\n\tpublic static void println(double d) {\n\t\tprintln(String.valueOf(d));\n\t}\n\t\n\t/**\n\t * Prints the given value, with each line indented relative to how many\n\t * recursive calls are currently on top of the call stack.\n\t */\n\tpublic static void println(int n) {\n\t\tprintln(String.valueOf(n));\n\t}\n\t\n\t/**\n\t * Prints the given value, with each line indented relative to how many\n\t * recursive calls are currently on top of the call stack.\n\t */\n\tpublic static void println(long l) {\n\t\tprintln(String.valueOf(l));\n\t}\n\t\n\t/**\n\t * Prints the given value, with each line indented relative to how many\n\t * recursive calls are currently on top of the call stack.\n\t */\n\tpublic static void println(Object o) {\n\t\tprintln(String.valueOf(o));\n\t}\n\t\n\t/**\n\t * Prints the given string, with each line indented relative to how many\n\t * recursive calls are currently on top of the call stack.\n\t */\n\tpublic static void println(String s) {\n\t\tif (s != null && s.contains(\"\\n\")) {\n\t\t\t// multi-line string; print each line indented\n\t\t\tString[] lines = s.split(\"[\\r]?\\n\");\n\t\t\tfor (String line : lines) {\n\t\t\t\tprintln(line);\n\t\t\t}\n\t\t} else {\n\t\t\t// single line; indent it and print it\n\t\t\tint calls = countCalls();\n\t\t\tfor (int i = 0; i < calls - 1; i++) {\n\t\t\t\tSystem.out.print(INDENT);\n\t\t\t}\n\t\t\tSystem.out.println(s);\n\t\t}\n\t}\n\t\n\t// Returns the number of recursive calls currently on top of the call stack,\n\t// starting from the given index in the call stack.  (Used internally.)\n\tprivate static int countCalls(int startIndex) {\n\t\tThrowable t = new RuntimeException();\n\t\tStackTraceElement[] methods = t.getStackTrace();\n\t\tif (methods.length < startIndex) {\n\t\t\treturn 0;\n\t\t}\n\t\tString className = methods[startIndex].getClassName();\n\t\tString methodName = methods[startIndex].getMethodName();\n\t\tint count = 1;\n\t\tfor (int i = startIndex + 1; i < methods.length; i++) {\n\t\t\tif (methods[i].getClassName().equals(className) &&\n\t\t\t\t\tmethods[i].getMethodName().equals(methodName)) {\n\t\t\t\tcount++;\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn count;\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/util/Stanford.java",
    "content": "package stanford.cs106.util;\n\nimport java.util.*;\n\npublic class Stanford {\n\tprivate Stanford() {\n\t\t// empty\n\t}\n\t\n\t/**\n\t * Returns a quarter string such as \"15sp\" for Spring 2015.\n\t * @return a quarter string such as \"15sp\" for Spring 2015.\n\t */\n\tpublic static String getCurrentQuarter() {\n\t\tCalendar today = GregorianCalendar.getInstance();\n\t\tint year = today.get(Calendar.YEAR) % 100;\n\t\tint month = today.get(Calendar.MONTH) + 1;   // horrible design\n\t\t// int day = today.get(Calendar.DAY_OF_MONTH);\n\t\tString quarter;\n\t\tif (month >= 1 && month <= 3) {\n\t\t\tquarter = \"wi\";\n\t\t} else if (month > 3 && month <= 6) {\n\t\t\tquarter = \"sp\";\n\t\t} else if (month > 6 && month <= 8) {\n\t\t\tquarter = \"su\";\n\t\t} else { // if (month > 8 && month <= 12)\n\t\t\tquarter = \"au\";\n\t\t}\n\t\treturn year + quarter;\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/util/StringUtils.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2016/11/29\n * - added formatDoubleLikeCpp\n * @version 2016/10/21\n * - added stringIsInteger/Double/Real/Boolean\n * @version 2015/05/28\n * - added truncate() with suffix string parameter\n */\n\npackage stanford.cs106.util;\n\nimport java.awt.Point;\nimport java.io.*;\nimport java.net.*;\t// for URLEn/Decoder\nimport java.util.*;\n\n/**\n * This class contains utility code related to Strings and text processing.\n * @author Marty Stepp\n */\npublic class StringUtils {\n\tpublic static final int DEFAULT_TAB_WIDTH = 4;\n\tpublic static final String TAB_STRING = \"\t\";\n\t\n\t/** So that an object of this class cannot be constructed. */\n\tprivate StringUtils() {}\n\t\n\tpublic static String escape(String s) {\n\t\ts = String.valueOf(s);\n\t\ts = s.replace(\"\\\\\", \"\\\\\\\\\");\n\t\ts = s.replace(\"\\\"\", \"\\\\\\\"\");\n\t\ts = s.replace(\"\\n\", \"\\\\n\");\n\t\ts = s.replace(\"\\t\", \"\\\\t\");\n\t\treturn s;\n\t}\n\n\tpublic static String fitToWidth(String value, int width) {\n\t\treturn fitToBox(value, width, (value == null ? 0 : value.length()));\n\t}\n\n\tpublic static String fitToHeight(String value, int height) {\n\t\treturn fitToBox(value, (value == null ? 0 : value.length()), height);\n\t}\n\n\tpublic static String fitToBox(String value, int width, int height) {\n\t\treturn fitToBox(value, width, height, false);\n\t}\n\t\n\tpublic static String fitToBox(String value, int width, int height, boolean html) {\n\t\tif (value == null) {\n\t\t\tvalue = \"null\";\n\t\t}\n\t\tString[] lines = value.split(\"\\n\");\n\t\tfor (int i = 0; i < lines.length; i++) {\n\t\t\tif (lines[i].length() > width) {\n\t\t\t\tlines[i] = lines[i].substring(0, width) + \"...\";\n\t\t\t}\n\t\t}\n\n\t\tif (lines.length > height) {\n\t\t\tlines[height++] = \"...\";\n\t\t}\n\n\t\treturn join(lines, html ? \"<br/>\\n\" : \"\\n\", height);\n\t}\n\t\n\t/**\n\t * Tries to format double the C++ iostream way, with up to 6 digits shown after the decimal point.\n\t */\n\tpublic static String formatDoubleLikeCpp(double value) {\n\t\tfinal int CPP_ROUND_DIGITS = 6;\n\t\t\n\t\tlong mult = 1;\n\t\tif (Math.abs(value) >= 1.0) {\n\t\t\tString integerComponent = String.valueOf((long) Math.abs(value));\n\t\t\tint integerDigits = integerComponent.length();\n\t\t\tfor (int i = 0; i < CPP_ROUND_DIGITS - integerDigits; i++) {\n\t\t\t\tmult *= 10;\n\t\t\t}\n\t\t} else {\n\t\t\t// C++ seems to grab the first six non-zero digits after the decimal point\n\t\t\tString unrounded = String.valueOf(value);\n\t\t\tunrounded = unrounded.replaceAll(\".*\\\\.\", \"\");   // \"0.001234562\" -> \"001234562\"\n\t\t\tint nonZeroDigitCount = 0;\n\t\t\tboolean doneWithZeroes = false;\n\t\t\twhile (!unrounded.isEmpty()) {\n\t\t\t\tmult *= 10;\n\t\t\t\tchar ch = unrounded.charAt(0);\n\t\t\t\tunrounded = unrounded.substring(1);\n\t\t\t\tif (ch != '0') {\n\t\t\t\t\tdoneWithZeroes = true;\n\t\t\t\t}\n\t\t\t\tif (doneWithZeroes) {\n\t\t\t\t\tnonZeroDigitCount++;\n\t\t\t\t\tif (nonZeroDigitCount == CPP_ROUND_DIGITS) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t// do the rounding\n\t\tvalue = value * mult;\n\t\tlong rounded = Math.round(value);\n\t\tvalue = rounded / (double) mult;\n\t\t\n\t\tString result = String.valueOf(value);\n\t\tif (result.endsWith(\".0\")) {\n\t\t\tresult = result.substring(0, result.length() - 2);\n\t\t}\n\t\treturn result;\n\t}\n\n\tpublic static int getWidth(String value) {\n\t\tif (value == null) {\n\t\t\treturn 0;\n\t\t}\n\t\tString[] lines = value.split(\"\\n\");\n\t\tint width = 0;\n\t\tfor (int i = 0; i < lines.length; i++) {\n\t\t\twidth = Math.max(width, untabify(lines[i]).length());\n\t\t}\n\t\treturn width;\n\t}\n\n\tpublic static int getHeight(String value) {\n\t\tif (value == null || value.length() == 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tString[] lines = (value + \" \").split(\"\\n\");\n\t\treturn lines.length;  // - (value.endsWith(\"\\n\") ? 1 : 0);\n\t}\n\n\tpublic static String htmlDecode(String value) {\n\t\treturn htmlDecode(value, false);\n\t}\n\n\tpublic static String htmlDecode(String value, boolean replaceSpecialChars) {\n\t\tif (value == null) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvalue = value.replace(\"&lt;\", \"<\");\n\t\tvalue = value.replace(\"&gt;\", \">\");\n\t\tvalue = value.replace(\"&nbsp;\", \" \");\n\t\tvalue = value.replace(\"\\u00A0\", \" \");   // nbsp (fucking IE)\n\t\tvalue = value.replace(\"&amp;\", \"&\");\n\t\t\n\t\tif (replaceSpecialChars) {\n\t\t\tvalue = value.replace(\"\\\\n\", \"\\n\");\n\t\t\tvalue = value.replace(\"\\\\t\", \"\\t\");\n\t\t\tvalue = value.replace(\"\\\\\\\"\", \"\\\"\");\n\t\t\tvalue = value.replace(\"\\\\\\\\\", \"\\\\\");\n\t\t}\n\t\treturn value;\n\t}\n\n\tpublic static String htmlEncode(String value) {\n\t\treturn htmlEncode(value, false);\n\t}\n\n\tpublic static String htmlEncode(String value, boolean replaceSpecialChars) {\n\t\treturn htmlEncode(value, replaceSpecialChars, false);\n\t}\n\t\n\tpublic static String htmlEncode(String value, boolean replaceSpecialChars, boolean nbsp) {\n\t\tif (value == null) {\n\t\t\treturn \"null\";\n\t\t}\n\t\tvalue = value.replace(\"&\", \"&amp;\");\n\t\tvalue = value.replace(\"<\", \"&lt;\");\n\t\tvalue = value.replace(\">\", \"&gt;\");\n\t\tif (nbsp) {\n\t\t\tvalue = value.replace(\" \", \"&nbsp;\");\n\t\t}\n\t\tvalue = value.replace(\"\\\"\", \"&quot;\");\n\t\t// value = value.replace(\"\\\\\", \"\\\\\\\\\");\n\t\tif (replaceSpecialChars) {\n\t\t\tvalue = value.replace(\"\\n\", \"<br />\\n\");\n\t\t\tvalue = value.replace(\"\\t\", \"\t\t\");  // *** TODO: probably remove this\n\t\t}\n\t\treturn value;\n\t}\n\n\tpublic static String htmlEncode(int value) {\n\t\treturn htmlEncode(String.valueOf(value));\n\t}\n\n\tpublic static String htmlEncode(double value) {\n\t\treturn htmlEncode(String.valueOf(value));\n\t}\n\n\tpublic static String htmlEncode(char value) {\n\t\treturn htmlEncode(String.valueOf(value));\n\t}\n\n\tpublic static String htmlEncode(boolean value) {\n\t\treturn htmlEncode(String.valueOf(value));\n\t}\n\n\tpublic static String htmlEncode(long value) {\n\t\treturn htmlEncode(String.valueOf(value));\n\t}\n\n\tpublic static String htmlEncode(Object value) {\n\t\treturn htmlEncode(String.valueOf(value));\n\t}\n\n\tpublic static boolean isFalsey(String value) {\n\t\tif (value == null) {\n\t\t\treturn false;\n\t\t}\n\t\tvalue = value.trim().toLowerCase().intern();\n\t\treturn value == \"false\" || value == \"0\" || value == \"no\" || value == \"n\" || value == \"off\" || value == \"disabled\";\n\t}\n\n\tpublic static boolean isTruthy(String value) {\n\t\tif (value == null) {\n\t\t\treturn false;\n\t\t}\n\t\tvalue = value.trim().toLowerCase().intern();\n\t\treturn value == \"true\" || value == \"1\" || value == \"yes\" || value == \"y\" || value == \"on\" || value == \"enabled\";\n\t}\n\n\tpublic static String join(String[] tokens, String delimiter) {\n\t\treturn join(tokens, delimiter, (tokens == null ? 0 : tokens.length));\n\t}\n\n\tpublic static String join(String[] tokens, String delimiter, int limit) {\n\t\treturn join(tokens, delimiter, /* startIndex */ 0, limit);\n\t}\n\t\n\tpublic static String join(String[] tokens, String delimiter, int startIndex, int limit) {\n\t\tif (tokens == null || tokens.length == 0\n\t\t\t\t|| startIndex < 0 || startIndex >= tokens.length) {\n\t\t\treturn \"\";\n\t\t}\n\t\tStringBuffer buffer = new StringBuffer();\n\t\tbuffer.append(tokens[startIndex]);\n\t\tif (limit == 0) {\n\t\t\tlimit = tokens.length;\n\t\t} else {\n\t\t\tlimit = Math.min(limit, tokens.length);\n\t\t}\n\t\tfor (int i = startIndex + 1; i < limit; i++) {\n\t\t\tbuffer.append(delimiter);\n\t\t\tbuffer.append(tokens[i]);\n\t\t}\n\t\treturn buffer.toString();\n\t}\n\n\tpublic static String join(Iterable<String> tokens, String delimiter) {\n\t\tif (tokens == null) {\n\t\t\treturn \"\";\n\t\t}\n\t\tStringBuffer buffer = new StringBuffer();\n\t\tIterator<String> itr = tokens.iterator();\n\t\tif (!itr.hasNext()) {\n\t\t\treturn \"\";\n\t\t}\n\t\t\n\t\tbuffer.append(itr.next());\n\t\twhile (itr.hasNext()) {\n\t\t\tbuffer.append(delimiter);\n\t\t\tbuffer.append(itr.next());\n\t\t}\n\t\treturn buffer.toString();\n\t}\n\t\n\t/**\n\t * Returns the Levenshtein edit distance between the two given strings;\n\t * the number of characters that must be added, removed, or modified to\n\t * turn the one string into the other.\n\t * Case-insensitive.\n\t * @see http://en.wikipedia.org/wiki/Levenshtein_distance\n\t */\n\tpublic static int levenshtein(String s1, String s2) {\n\t\ts1 = s1.toUpperCase();\n\t\ts2 = s2.toUpperCase();\n\t\t\n\t\tint[][] matrix = new int[s1.length() + 1][s2.length() + 1];\n\t\t\n\t\tfor (int i = 0; i <= s1.length(); i++) {\n\t\t\tmatrix[i][0] = i;\n\t\t}\n\t\tfor (int j = 0; j <= s2.length(); j++) {\n\t\t\tmatrix[0][j] = j;\n\t\t}\n\t\t\n\t\tfor (int j = 1; j <= s2.length(); j++) {\n\t\t\tfor (int i = 1; i <= s1.length(); i++) {\n\t\t\t\tif (s1.charAt(i - 1) == s2.charAt(j - 1)) {\n\t\t\t\t\tmatrix[i][j] = matrix[i - 1][j - 1]; \n\t\t\t\t} else {\n\t\t\t\t\tmatrix[i][j] = 1 + Math.min(matrix[i - 1][j],\n\t\t\t\t\t\t\tMath.min(matrix[i][j - 1], matrix[i - 1][j - 1]));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn matrix[matrix.length - 1][matrix[0].length - 1];\n\t}\n\n\t/**\n\t * Returns a string that contains s repeated n times.\n\t * @param s string to repeat.  if s is null, returns null.\n\t * @param n number of repetitions.  if <= 0, returns \"\".\n\t * @return the repeated string\n\t */\n\tpublic static String nCopies(String s, int n) {\n\t\tif (s == null) {\n\t\t\treturn null;\n\t\t}\n\t\tStringBuilder sb = new StringBuilder(s.length() * n + 8);\n\t\tfor (int i = 1; i <= n; i++) {\n\t\t\tsb.append(s);\n\t\t}\n\t\treturn sb.toString();\n\t}\n\t\n\tpublic static String numberLines(String s) {\n\t\ts = String.valueOf(s);\n\t\tString[] lines = s.split(\"\\r?\\n\");\n\t\tint digits = String.valueOf(lines.length).length();\n\t\tif (digits == 0) {\n\t\t\treturn \"\";\n\t\t}\n\t\tfor (int i = 0; i < lines.length; i++) {\n\t\t\tlines[i] = String.format(\"%0\" + digits + \"d| %s\", i+1, lines[i]);\n\t\t}\n\t\treturn join(lines, \"\\n\");\n\t}\n\t\n\tpublic static String padL(int s, int width) {\n\t\treturn padL(String.valueOf(s), width);\n\t}\n\n\tpublic static String padL(String s, int width) {\n\t\ts = String.valueOf(s);\n\t\twhile (s.length() < width) {\n\t\t\ts = \" \" + s;\n\t\t}\n\t\treturn s;\n\t}\n\n\tpublic static String padR(int s, int width) {\n\t\treturn padR(String.valueOf(s), width);\n\t}\n\n\tpublic static String padR(String s, int width) {\n\t\ts = String.valueOf(s);\n\t\twhile (s.length() < width) {\n\t\t\ts += \" \";\n\t\t}\n\t\treturn s;\n\t}\n\t\n\tpublic static String padNumber(int n, int length) {\n\t\treturn padNumber(n, length, false);\n\t}\n\n\tpublic static String padNumber(int n, int length, boolean html) {\n\t\tString s = \"\" + n;\n\t\tint len = s.length();\n\t\twhile (len < length) {\n\t\t\tif (html) {\n\t\t\t\ts = \"&nbsp;\" + s;\n\t\t\t} else {\n\t\t\t\ts = \" \" + s;\n\t\t\t}\n\t\t\tlen++;\n\t\t}\n\t\treturn s;\n\t}\n\t\n\t// turns \"{true, false, true}\" into new boolean[] {true, false, true}\n\tpublic static boolean[] parseBooleanArray(String s) {\n\t\ts = String.valueOf(s);\n\t\tString[] tokens = parseStringArray(s);\n\t\tboolean[] result = new boolean[tokens.length];\n\t\tfor (int i = 0; i < tokens.length; i++) {\n\t\t\tresult[i] = Boolean.parseBoolean(tokens[i]);\n\t\t}\n\t\treturn result;\n\t}\n\t\n\t// turns \"{'a', 'b', 'c'}\" into new char[] {'a', 'b', 'c'}\n\tpublic static char[] parseCharArray(String s) {\n\t\ts = String.valueOf(s);\n\t\ts = s.replace(\"'\", \"\");\n\t\tString[] tokens = parseStringArray(s);\n\t\tchar[] result = new char[tokens.length];\n\t\tfor (int i = 0; i < tokens.length; i++) {\n\t\t\tresult[i] = tokens[i].length() > 0 ? tokens[i].charAt(0) : '\\0';\n\t\t}\n\t\treturn result;\n\t}\n\t\n\t// turns \"{1.1, 2.2, 3.3}\" into new double[] {1.1, 2.2, 3.3}\n\tpublic static double[] parseDoubleArray(String s) {\n\t\ts = String.valueOf(s);\n\t\tString[] tokens = parseStringArray(s);\n\t\tdouble[] result = new double[tokens.length];\n\t\tfor (int i = 0; i < tokens.length; i++) {\n\t\t\tresult[i] = Double.parseDouble(tokens[i]);\n\t\t}\n\t\treturn result;\n\t}\n\t\n\t// turns \"{1, 2, 3}\" into new int[] {1, 2, 3}\n\tpublic static int[] parseIntArray(String s) {\n\t\ts = String.valueOf(s);\n\t\tString[] tokens = parseStringArray(s);\n\t\tint[] result = new int[tokens.length];\n\t\tfor (int i = 0; i < tokens.length; i++) {\n\t\t\tresult[i] = Integer.parseInt(tokens[i]);\n\t\t}\n\t\treturn result;\n\t}\n\t\n\t// turns \"{{1, 2, 3}, {4, 4, 4}}\" into new int[][] {{1, 2, 3}, {4, 4, 4}}\n\tpublic static int[][] parseIntArray2D(String s) {\n\t\ts = String.valueOf(s);\n\t\ts = s.trim();\n\t\ts = s.replaceAll(\"^\\\\{+\", \"\").replaceAll(\"\\\\}+$\", \"\");\n\t\tif (s.length() == 0) {\n\t\t\treturn new int[0][0];\n\t\t}\n\t\t\n\t\tString[] rows = s.split(\"\\\\}, \\\\{\");\n\t\tint[][] result = new int[rows.length][];\n\t\tfor (int i = 0; i < rows.length; i++) {\n\t\t\tresult[i] = parseIntArray(rows[i]);\n\t\t}\n\t\treturn result;\n\t}\n\t\n\t// turns \"{1, &quot;hello!&quot;, 3}\" into new String[] {\"1\", \"hello!\", \"3\"}\n\tpublic static String[] parseStringArray(String s) {\n\t\ts = String.valueOf(s);\n\t\ts = htmlDecode(s).trim().replace(\"[\", \"\").replace(\"]\", \"\").replace(\"{\", \"\").replace(\"}\", \"\").replace(\"&quot;\", \"\");\n\t\tif (s.startsWith(\"\\\"\")) {\n\t\t\ts = s.substring(1);\n\t\t}\n\t\tif (s.endsWith(\"\\\"\")) {\n\t\t\ts = s.substring(0, s.length() - 1);\n\t\t}\n\t\tif (s.length() == 0) {\n\t\t\treturn new String[0];\n\t\t}\n\t\ts = s.replace(\"\\\\\\\"\", \"\\\"\");\n\t\treturn s.split(\"[\\\"]?,[ ]*[\\\"]?\");\n\t}\n\t\n\t// value = \"new Point(5, -2)\";   // for example\n\tpublic static Point parsePoint(String value) {\n\t\t// String value2 = value.replaceAll(\"new\\\\s+[a-zA-Z0-9_.]+\", \"\");\n\t\t// strip all but the x/y coords, then split and grab them\n\t\tvalue = String.valueOf(value);\n\t\tString value2 = value.replaceAll(\"[^0-9\\\\-+.,]\", \"\");\n\t\tString[] nums = value2.split(\"\\\\s*,\\\\s*\");\n\t\tif (nums.length < 2) {\n\t\t\tthrow new IllegalArgumentException(\"value=\" + value + \", value2=\" + value2 + \", nums=\" + Arrays.toString(nums));\n\t\t}\n\t\tint x = Integer.parseInt(nums[0]);\n\t\tint y = Integer.parseInt(nums[1]);\n\t\treturn new Point(x, y);\n\t}\n\t\n\tpublic static String plural(int n) {\n\t\treturn (n == 1) ? \"\" : \"s\";\n\t}\n\t\n\tpublic static boolean equalsIgnoreWhitespace(String s1, String s2) {\n\t\treturn equalsIgnoreWhitespace(s1, s2, false);\n\t}\n\n\tpublic static boolean equalsIgnoreWhitespace(String s1, String s2, boolean ignoreCase) {\n\t\tif (s1 == null && s2 == null) {\n\t\t\treturn true;\n\t\t} else if (s1 == null || s2 == null) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\tif (ignoreCase) {\n\t\t\t\treturn removeWhitespace(s1).equalsIgnoreCase(removeWhitespace(s2));\n\t\t\t} else {\n\t\t\t\treturn removeWhitespace(s1).equals(removeWhitespace(s2));\n\t\t\t}\n\t\t}\n\t}\n\t\n\tpublic static String removeWhitespace(String s) {\n\t\tif (s == null) {\n\t\t\treturn s;\n\t\t} else {\n\t\t\ts = s.replaceAll(\"[ \\r\\n\\t\\f]+\", \"\");\n\t\t\treturn s;\n\t\t}\n\t}\n\t\n\tpublic static String sortChars(String s) {\n\t\ts = String.valueOf(s);\n\t\tchar[] a = s.toCharArray();\n\t\tArrays.sort(a);\n\t\treturn new String(a).intern();\n\t}\n\t\n\tpublic static boolean stringIsBoolean(String text) {\n\t\treturn text != null && (text.equals(\"true\") || text.equals(\"false\"));\n\t}\n\t\n\tpublic static boolean stringIsDouble(String text) {\n\t\ttry {\n\t\t\tDouble.parseDouble(text);\n\t\t\treturn true;\n\t\t} catch (NumberFormatException nfe) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tpublic static boolean stringIsInteger(String text) {\n\t\treturn stringIsInteger(text, /* radix */ 10);\n\t}\n\t\n\tpublic static boolean stringIsInteger(String text, int radix) {\n\t\ttry {\n\t\t\tInteger.parseInt(text, radix);\n\t\t\treturn true;\n\t\t} catch (NumberFormatException nfe) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tpublic static boolean stringIsReal(String text) {\n\t\treturn stringIsDouble(text);\n\t}\n\t\n\tpublic static String toAsciiDump(String s) {\n\t\ts = String.valueOf(s);\n\t\tStringBuilder sb = new StringBuilder(s.length() * 30);\n\t\tfor (char c : s.toCharArray()) {\n\t\t\tsb.append(String.format(\"%3s : %3d\\n\", toPrintableChar(c), (int) c));\n\t\t}\n\t\treturn sb.toString();\n\t}\n\t\n\tpublic static String toPrintableChar(char c) {\n\t\tswitch (c) {\n\t\tcase '\\n': return \"\\\\n\";\n\t\tcase '\\r': return \"\\\\r\";\n\t\tcase '\\f': return \"\\\\f\";\n\t\tcase '\\t': return \"\\\\t\";\n\t\tcase '\\\\': return \"\\\\\\\\\";\n\t\tcase '\\0': return \"\\\\0\";\n\t\tcase ' ': return \"' '\";\n\t\tdefault: return String.valueOf(c);\n\t\t}\n\t}\n\t\n\tpublic static String toString(Point p) {\n\t    return \"(\" + p.x + \", \" + p.y + \")\";\n\t}\n\n\t/**\n\t * Removes any blank lines (just \\n or spaces/tabs followed by \\n) from the\n\t * start/end of s.\n\t */\n\tpublic static String trimBlankLines(String s) {\n\t\tif (s == null) {\n\t\t\treturn null;\n\t\t}\n\t\t\n\t\t// break apart into list of lines\n\t\tList<String> lines = new ArrayList<String>(Arrays.asList(s.split(\"[\\r]?\\n\")));   // REGEX OK\n\t\t\n\t\t// remove blank lines from front/end\n\t\twhile (!lines.isEmpty()) {\n\t\t\tif (lines.get(0).trim().isEmpty()) {\n\t\t\t\tlines.remove(0);\n\t\t\t} else if (lines.get(lines.size() - 1).trim().isEmpty()) {\n\t\t\t\tlines.remove(lines.size() - 1);\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn CollectionUtils.join(lines, \"\\n\");\n\t}\n\n\tpublic static String trimEnd(String s) {\n\t\treturn trimR(s);\n\t}\n\t\n\tpublic static String trimR(String s) {\n\t\ts = String.valueOf(s);\n\t\tint end = s.length() - 1;\n\t\twhile (end >= 0 && Character.isWhitespace(s.charAt(end))) {\n\t\t\tend--;\n\t\t}\n\t\treturn s.substring(0, end + 1);\n\t}\n\t\n\t/**\n\t * Trims out any leading/trailing whitespace from all lines of string s.\n\t * @return null if s == null\n\t */\n\tpublic static String trimLines(String s) {\n\t\ts = String.valueOf(s);\n\t\tif (s == null) {\n\t\t\treturn null;\n\t\t} else {\n\t\t\treturn s.replaceAll(\"[ \\t]{0,999}\\r?\\n[ \\t]{0,999}\", \"\\n\").trim();   // REGEX OK\n\t\t}\n\t}\n\t\n\tpublic static String trimEndsOfLines(String s) {\n\t\ts = String.valueOf(s);\n\t\treturn s.replaceAll(\"\\\\s+\\r?\\n\", \"\\n\");\n\t}\n\t\n\t/**\n\t * Trims the given string to be at most the given number of characters in length.\n\t * Similar to fitToWidth, but doesn't put ... at end.\n\t */\n\tpublic static String truncate(String s, int length) {\n\t\treturn truncate(s, length, /* suffix */ \"\");\n\t}\n\t\n\t/**\n\t * Trims the given string to be at most the given number of characters in length.\n\t * Similar to fitToWidth, but doesn't put ... at end.\n\t */\n\tpublic static String truncate(String s, int length, String suffix) {\n\t\tif (s == null || s.length() <= length) {\n\t\t\treturn s;\n\t\t} else {\n\t\t\ts = s.substring(0, length);\n\t\t\tif (suffix != null && !suffix.isEmpty()) {\n\t\t\t\ts += suffix;\n\t\t\t}\n\t\t\treturn s;\n\t\t}\n\t}\n\t\n\t/**\n\t * Looks at all lines of the given string, figuring out how 'indented' each\n\t * line is; then removes the longest common indentation prefix string that\n\t * occurs in all lines.\n\t * For example, if some lines are indented 8 spaces, some 16, and some 12,\n\t * then each line starts with at least 8 spaces; so those 8 are stripped from\n\t * each line to yield a string where some lines are indented 0 spaces,\n\t * some 8, and some 4.\n\t * @return null if s == null\n\t */\n\tpublic static String unindent(String s) {\n\t\ts = String.valueOf(s);\n\t\tString[] lines = s.split(\"[\\r]?\\n\");\n\t\tint minIndent = Integer.MAX_VALUE;\n\t\tfor (String line : lines) {\n\t\t\tif (line.trim().length() == 0) {   // ignore blank lines\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tint indent = 0;\n\t\t\twhile (indent < line.length() && \n\t\t\t\t\t(line.charAt(indent) == ' ' || line.charAt(indent) == '\\t')) {\n\t\t\t\tindent++;\n\t\t\t}\n\t\t\tminIndent = Math.min(minIndent, indent);\n\t\t}\n\t\tminIndent = (minIndent == Integer.MAX_VALUE) ? 0 : minIndent;\n\t\tfor (int i = 0; i < lines.length; i++) {\n\t\t\tlines[i] = lines[i].substring(Math.min(minIndent, lines[i].length()));\n\t\t}\n\t\treturn join(lines, \"\\n\");\n\t}\n\n\t/** Replaces tabs with a string of spaces of a default width. */\n\tpublic static String untabify(String s) {\n\t\treturn untabify(s, DEFAULT_TAB_WIDTH);\n\t}\n\n\t/** Replaces tabs with a string of spaces of the given width. */\n\tpublic static String untabify(String s, int tabWidth) {\n\t\ts = String.valueOf(s);\n\t\tString tab = \"\";\n\t\tfor (int i = 0; i < tabWidth; i++) {\n\t\t\ttab += \" \";\n\t\t}\n\t\treturn s.replaceAll(\"\\t\", tab);\n\t}\n\t\n\tpublic static String urlEncode(String s) {\n\t\ts = String.valueOf(s);\n\t\ttry {\n\t\t\treturn URLEncoder.encode(s, \"UTF-8\");\n\t\t} catch (UnsupportedEncodingException e) {\n\t\t\te.printStackTrace();\n\t\t\treturn s;\n\t\t}\n\t}\n\t\n\tpublic static String urlDecode(String s) {\n\t\ts = String.valueOf(s);\n\t\ttry {\n\t\t\treturn URLDecoder.decode(s, \"UTF-8\");\n\t\t} catch (UnsupportedEncodingException e) {\n\t\t\te.printStackTrace();\n\t\t\treturn s;\n\t\t}\n\t}\n\t\n\tpublic static String wrapLines(String s, int length) {\n\t\tStringBuilder sb = new StringBuilder(s.length() + 256);\n\t\tString[] lines = s.split(\"\\r?\\n\");\n\t\tfor (String line : lines) {\n\t\t\twhile (line.length() > length) {\n\t\t\t\tString sub = line.substring(0, length);\n\t\t\t\tsb.append(sub);\n\t\t\t\tsb.append('\\n');\n\t\t\t\tline = line.substring(length);\n\t\t\t}\n\t\t\tsb.append(line);\n\t\t\tsb.append('\\n');\n\t\t}\n\t\treturn sb.toString();\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/util/SystemProperties.java",
    "content": "package stanford.cs106.util;\n\npublic final class SystemProperties {\n\tprivate SystemProperties() {\n\t\t// empty\n\t}\n\t\n\tpublic static boolean hasSystemProperty(String name) {\n\t\tString prop = getSystemProperty(name);\n\t\treturn prop != null && !prop.isEmpty();\n\t}\n\n\tpublic static String getSystemProperty(String name) {\n\t\ttry {\n\t\t\treturn System.getProperty(name);\n\t\t} catch (SecurityException se) {\n\t\t\treturn \"\";\n\t\t}\n\t}\n\n\tpublic static int getSystemPropertyInt(String name) {\n\t\treturn Integer.parseInt(getSystemProperty(name));\n\t}\n\n\tpublic static int getSystemPropertyInt(String name, int defaultValue) {\n\t\tif (hasSystemProperty(name)) {\n\t\t\treturn getSystemPropertyInt(name);\n\t\t} else {\n\t\t\treturn defaultValue;\n\t\t}\n\t}\n\n\tpublic static double getSystemPropertyDouble(String name) {\n\t\treturn Double.parseDouble(getSystemProperty(name));\n\t}\n\n\tpublic static double getSystemPropertyDouble(String name, double defaultValue) {\n\t\tif (hasSystemProperty(name)) {\n\t\t\treturn getSystemPropertyDouble(name);\n\t\t} else {\n\t\t\treturn defaultValue;\n\t\t}\n\t}\n\n\tpublic static boolean getSystemPropertyBoolean(String name) {\n\t\treturn getSystemPropertyBoolean(name, false);\n\t}\n\n\tpublic static boolean getSystemPropertyBoolean(String name, boolean defaultValue) {\n\t\tif (hasSystemProperty(name)) {\n\t\t\tString prop = String.valueOf(getSystemProperty(name)).toLowerCase().intern();\n\t\t\treturn prop != null && (prop == \"true\" || prop == \"t\" || prop == \"1\"\n\t\t\t\t\t|| prop == \"on\" || prop == \"yes\" || prop == \"y\");\n\t\t} else {\n\t\t\treturn defaultValue;\n\t\t}\n\t}\n\n\tpublic static void setSystemProperty(String name, String value) {\n\t\ttry {\n\t\t\tSystem.setProperty(name, value);\n\t\t} catch (SecurityException se) {\n\t\t\t// empty\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/cs106/util/XmlUtils.java",
    "content": "package stanford.cs106.util;\n\nimport java.io.*;\nimport java.util.*;\nimport javax.xml.*;\nimport javax.xml.parsers.*;\nimport javax.xml.stream.*;\nimport javax.xml.transform.dom.*;\nimport javax.xml.validation.*;\nimport org.w3c.dom.*;\nimport org.xml.sax.*;\n\npublic class XmlUtils {\n    /** Represents exceptions that can occur while processing XML text. */\n    public static class XmlRuntimeException extends RuntimeException {\n        private static final long serialVersionUID = 0;\n        \n        public XmlRuntimeException(String message) {\n            super(message);\n        }\n        \n        public XmlRuntimeException(String message, Throwable cause) {\n            super(message, cause);\n        }\n    }\n    \n    public static final String XML_EXTENSION = \".xml\";\n    \n    public static boolean attributeIsFalsey(Node node, String name) {\n        return hasAttribute(node, name) && StringUtils.isFalsey(getAttribute(node, name));\n    }\n    \n    public static boolean attributeIsTruthy(Node node, String name) {\n        return hasAttribute(node, name) && StringUtils.isTruthy(getAttribute(node, name));\n    }\n    \n    public static void ensureNotNull(Object node, String tag) {\n        if (node == null) {\n            throw new XmlRuntimeException(\"missing required node or attribute: <\" + tag + \">\");\n        }\n    }\n    \n    /**\n     * Returns the value of the attribute of the given node with the given name.\n     * @param node the XML node to examine\n     * @param name the attribute name for which to retrieve the value\n     * @return the attribute value, or null if the attribute does not exist for this node\n     */\n    public static String getAttribute(Node node, String name) {\n        if (node.getAttributes() == null) {\n            return null;\n        }\n        Node attributeNode = node.getAttributes().getNamedItem(name);\n        if (attributeNode == null) {\n            return null;\n        } else {\n            return attributeNode.getNodeValue();\n        }\n    }\n    \n    public static void setAttribute(Node node, String name, String value) {\n        Element element = (Element) node;\n        element.setAttribute(name, value);\n    }\n    \n    public static String getAttribute(Node node, String name, boolean required) {\n        return getAttribute(node, name, required, null);\n    }\n    \n    public static String getAttribute(Node node, String name, boolean required, String defaultValue) {\n        if (required && !hasAttribute(node, name)) {\n            throw new XmlRuntimeException(\"missing required attribute: \" + name);\n        }\n        String attributeValue = getAttribute(node, name);\n        if (attributeValue == null) {\n            attributeValue = defaultValue;\n        }\n        return attributeValue;\n    }\n\n    public static int getAttributeInt(Node node, String name) {\n        return getAttributeInt(node, name, false);\n    }\n    \n    public static int getAttributeInt(Node node, String name, boolean required) {\n        return getAttributeInt(node, name, required, 0);\n    }\n\n    public static int getAttributeInt(Node node, String name, boolean required, int defaultValue) {\n        if (required && !hasAttribute(node, name)) {\n            throw new XmlRuntimeException(\"missing required attribute: \" + name);\n        }\n        String attributeValue = getAttribute(node, name);\n        if (attributeValue != null) {\n            try {\n                return Integer.parseInt(attributeValue);\n            } catch (NumberFormatException nfe) {\n            \t// empty\n            }\n        }\n        return defaultValue;\n    }\n    \n    /**\n     * Returns the value of the first attribute found with any of the given names, else null.\n     * @param node the XML node to examine\n     * @return the attribute value, or null if the attribute does not exist for this node\n     */\n    public static String getAttributeAny(Node node, String... names) {\n        return getAttributeAny(node, false, names);\n    }\n    \n    /**\n     * Returns the value of the first attribute found with any of the given names, else null.\n     * @param node the XML node to examine\n     * @return the attribute value, or null if the attribute does not exist for this node\n     */\n    public static String getAttributeAny(Node node, boolean required, String... names) {\n        if (node.getAttributes() != null) {\n            for (String name : names) {\n                Node attributeNode = node.getAttributes().getNamedItem(name);\n                if (attributeNode != null) {\n                    return attributeNode.getNodeValue();\n                }\n            }\n        }\n        \n        if (required) {\n        \tthrow new XmlRuntimeException(\"missing required attributes (one or more must be present): \" + Arrays.toString(names));\n        } else {\n        \treturn null;\n        }\n    }\n    \n    public static String getAttributeOrChild(Node node, String name) {\n        return getAttributeOrChild(node, name, false);\n    }\n\n        /**\n     * Returns the value of the attribute of the given node with the given name.\n     * @param node the XML node to examine\n     * @param name the attribute name for which to retrieve the value\n     * @return the attribute value, or null if the attribute does not exist for this node\n     */\n    public static String getAttributeOrChild(Node node, String name, boolean required) {\n        if (hasAttribute(node, name)) {\n            return getAttribute(node, name);\n        } else {\n            return getChildValue(node, name, required);\n        }\n    }\n    \n    /**\n     * Returns all attributes of the given XML node as a list of name=value strings.\n     * Mostly just for debugging.\n     * @param node\n     * @return\n     */\n    public static List<String> getAttributes(Node node) {\n        List<String> result = new ArrayList<String>();\n        NamedNodeMap attrs = node.getAttributes();\n        for (int i = 0; i < attrs.getLength(); i++) {\n            Node attrNode = attrs.item(i);\n            result.add(attrNode.getNodeName() + \"=\" + attrNode.getNodeValue());\n        }\n        return result;\n    }\n\n    public static Node getChildNode(Node node, String element) {\n        List<Node> childNodes = getChildNodes(node, element);\n        if (childNodes.isEmpty()) {\n            return null;\n        } else {\n            return childNodes.get(0);\n        }\n    }\n    \n    public static List<Node> getChildNodes(Node node, String... elements) {\n        List<Node> result = new ArrayList<Node>();\n        NodeList childNodes = node.getChildNodes();\n        for (int i = 0; i < childNodes.getLength(); i++) {\n            Node childNode = childNodes.item(i);\n            for (String element : elements) {\n                if (element.equals(childNode.getNodeName())) {\n                    result.add(childNode);\n                }\n            }\n        }\n        return result;\n    }\n    \n    public static String getChildValue(Node node, String element) {\n        return getChildValue(node, element, false);\n    }\n    \n    public static String getChildValue(Node node, String element, boolean required) {\n        String result = null;\n        NodeList childNodes = node.getChildNodes();\n        for (int i = 0; i < childNodes.getLength(); i++) {\n            Node childNode = childNodes.item(i);\n            if (childNode.getNodeName().equals(element)) {\n                result = getTextContent(childNode, true);\n                break;\n            }\n        }\n        \n        if (required) {\n            ensureNotNull(result, element);\n        }\n        \n        return result;\n    }\n    \n    public static Node getChildByTagName(Node node, String element, boolean required) {\n        Node result = getChildByTagName(node, element);\n        if (required) {\n            ensureNotNull(result, element);\n        }\n        return result;\n    }\n\n    public static Node getChildByTagName(Node node, String element) {\n        NodeList childNodes = node.getChildNodes();\n        for (int j = 0; j < childNodes.getLength(); j++) {\n            Node childNode = childNodes.item(j);\n            if (\"*\".equals(element) || element == null || childNode.getNodeName().equals(element)) {\n                return childNode;\n            }\n        }\n        return null;\n    }\n    \n    public static List<Node> getChildrenByTagName(Node node, String element) {\n        List<Node> result = new ArrayList<Node>();\n        NodeList childNodes = node.getChildNodes();\n        for (int j = 0; j < childNodes.getLength(); j++) {\n            Node childNode = childNodes.item(j);\n            if (\"*\".equals(element) || element == null || childNode.getNodeName().equals(element)) {\n                result.add(childNode);\n            }\n        }\n        return result;\n    }\n    \n    public static List<Node> getChildrenByTagNames(Node node, String... elements) {\n        List<Node> result = new ArrayList<Node>();\n        NodeList childNodes = node.getChildNodes();\n        for (int j = 0; j < childNodes.getLength(); j++) {\n            Node childNode = childNodes.item(j);\n            for (String element : elements) {\n                if (\"*\".equals(element) || element == null || childNode.getNodeName().equals(element)) {\n                    result.add(childNode);\n                }\n            }\n        }\n        return result;\n    }\n    \n    public static Element getElementByTagName(Document document, String element) {\n        NodeList nodeList = document.getElementsByTagName(element);\n        if (nodeList.getLength() > 0) {\n            return (Element) nodeList.item(0);\n        } else {\n            return null;\n        }\n    }\n    \n    public static String getTextContent(Node node) {\n        return getTextContent(node, true);\n    }\n    \n    public static String getTextContent(Node node, boolean trim) {\n        if (node == null) {\n            return \"\";\n        }\n        \n        String textContent = \"\";\n        NodeList childNodes = node.getChildNodes();\n        for (int i = 0; i < childNodes.getLength(); i++) {\n            Node childNode = childNodes.item(i);\n            if (childNode.getNodeType() == Node.TEXT_NODE) {\n                textContent += childNode.getNodeValue().trim();\n            }\n        }\n        \n//        String textContent = node.getTextContent();\n//        if (textContent == null) {\n//            return \"\";\n//        }\n        \n        textContent = textContent.replace(\"\\r\", \"\");\n        if (textContent.startsWith(\"\\n\")) {\n            textContent = textContent.substring(1);\n        }\n        \n        if (trim) {\n            textContent = textContent.trim();\n        }\n        \n        return textContent;\n    }\n    \n    /**\n     * Returns whether the given XML DOM node contains the given attribute.\n     * @param node the XML node to examine\n     * @param name an attribute name to check\n     * @return true if the attribute exists, false if not\n     */\n    public static boolean hasAttribute(Node node, String name) {\n        return node.getAttributes().getNamedItem(name) != null;\n    }\n    \n    /**\n     * Returns the value of the first attribute found with any of the given names, else null.\n     * @param node the XML node to examine\n     * @return the attribute value, or null if the attribute does not exist for this node\n     */\n    public static boolean hasAttributeAny(Node node, String... names) {\n        for (String name : names) {\n            if (hasAttribute(node, name)) {\n                return true;\n            }\n        }\n        return false;\n    }\n    \n    /**\n     * Returns whether the given XML DOM node contains all of the given attributes.\n     * @param node the XML node to examine\n     * @param names a variable-length list of attribute names to check\n     * @return true if all attributes exist, false if not\n     */\n    public static boolean hasAttributes(Node node, String... names) {\n        NamedNodeMap attrs = node.getAttributes();\n        for (String name: names) {\n            if (attrs.getNamedItem(name) == null) {\n                return false;\n            }\n        }\n        \n        return true;\n    }\n\n    /**\n     * Ensures that the given XML DOM node contains all of the given attributes.\n     * Throws an exception if any attribute is not found.\n     * @param node the XML node to examine\n     * @param names a variable-length list of attribute names to check\n     * @throws XMLStreamException if any attribute is not found\n     */\n    public static void requireAttributes(Node node, String... names) {\n        NamedNodeMap attrs = node.getAttributes();\n        for (String name: names) {\n            if (attrs.getNamedItem(name) == null) {\n                throw new XmlRuntimeException(\"<\" + node.getNodeName() + \"> element requires \\\"\" + name + \"\\\" attribute\");\n            }\n        }\n    }\n    \n    public static void validate(String xmlFileName, String schemaFileName) throws IOException, ParserConfigurationException, SAXException {\n        SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);\n        Schema schema = schemaFactory.newSchema(new File(schemaFileName));\n        Validator validator = schema.newValidator();\n        \n        DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();\n        builderFactory.setNamespaceAware(true);\n        DocumentBuilder parser =  builderFactory.newDocumentBuilder();\n        Document document = parser.parse(new File(xmlFileName));\n        validator.validate(new DOMSource(document));\n    }\n    \n    public static Node up(Node node, String element) {\n        while (node != null && node.getNodeName() != null && !node.getNodeName().equalsIgnoreCase(element)) {\n            node = node.getParentNode();\n        }\n        return node;\n    }\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/karel/AbstractKarel.java",
    "content": "/*\n * A deep copy of Karel.java.\n * Used for HeadlessKarel.\n */\n\npackage stanford.karel;\n\nimport acm.program.*;\nimport acm.util.*;\nimport stanford.cs106.gui.GuiUtils;\nimport java.awt.*;\nimport java.io.*;\nimport java.util.*;\nimport java.util.zip.*;\n\n/**\n * The <code>Karel</code> class represents the simplest possible Karel the Robot\n * object. Each instance of the <code>Karel</code> class represents an\n * individual robot that can move inside a world laid out as a grid of streets\n * and avenues. The other characteristics of Karel's world include\n * <b><i>walls,</i></b> which separate individual corners, and\n * <b><i>beepers,</i></b> which are described by Karel's creator as\n * \"plastic cones which emit a quiet beeping noise.\" As it is shipped from the\n * factory, Karel can execute only four operations:\n * \n * <dl>\n * <dt><code><a href=\"#move()\">move</a>()</code></dt>\n * <dd>Moves this Karel forward one block. Karel cannot move forward if there is\n * a wall blocking the way.</dd>\n * <p>\n * <dt><code><a href=\"#turnLeft()\">turnLeft</a>()</code></dt>\n * <dd>Rotates this Karel 90 degrees to the left (counterclockwise).</dd>\n * <p>\n * <dt><code><a href=\"#pickBeeper()\">pickBeeper</a>()</code></dt>\n * <dd>Picks up one beeper from the current corner and stores the beeper in this\n * Karel's beeper bag, which can hold an infinite number of beepers. Karel can\n * execute a <code>pickBeeper</code> instruction only if there is a beeper on\n * the current corner.</dd>\n * <p>\n * <dt><code><a href=\"#putBeeper()\">putBeeper</a>()</code></dt>\n * <dd>Takes one beeper from this Karel's beeper bag and deposits it on the\n * current corner. Karel can execute a <code>pickBeeper</code> instruction only\n * if there is a beeper in its bag.</dd>\n * <p>\n * </dl>\n * \n * <p>\n * Karel programs are executed by defining a new subclass that extends\n * <code>Karel</code> and provides it with a <code>run</code> method that\n * defines its operation. For example, the following Karel subclass represents a\n * Karel program that moves forward, picks up a beeper from the square, and then\n * moves forward one more time:\n * \n * <p>\n * <table cellspacing=0 cellpadding=0>\n * <tr>\n * <td width=36>&nbsp;</td>\n * <td>\n * <table cellspacing=0 cellpadding=0>\n * <tr>\n * <td>\n * \n * <pre>\n * <code>\n * public class SimpleKarelExample extends Karel {\n * &nbsp;&nbsp;&nbsp;public void run() {\n * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;move();\n * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;putBeeper();\n * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;move();\n * &nbsp;&nbsp;&nbsp;}\n * }\n * </code>\n * </pre>\n * \n * </td>\n * </tr>\n * </table>\n * </td>\n * </tr>\n * </table>\n */\n\nabstract class AbstractKarel implements KarelInterface, ProgramInterface, Runnable {\n\t/* Private constants */\n\tpublic static final int NORTH = KarelWorld.NORTH;\n\tpublic static final int EAST = KarelWorld.EAST;\n\tpublic static final int SOUTH = KarelWorld.SOUTH;\n\tpublic static final int WEST = KarelWorld.WEST;\n\t// private static final int INFINITE = KarelWorld.INFINITE;\n\n\t/* List of jar files to skip */\n\tprivate static final String[] SKIP_JARS = { \"acm.jar\", \"karel.jar\", };\n\n\t/* Private instance variables */\n\tprivate KarelWorld world;\n\tprivate int x;\n\tprivate int y;\n\tprivate int dir;\n\tprivate int beepers;\n\n\t/* Constructor */\n\tpublic AbstractKarel() {\n\t\tx = 1;\n\t\ty = 1;\n\t\tdir = EAST;\n\t\tworld = null;\n\t}\n\n\tpublic void run() {\n\t\t/* Empty */\n\t}\n\n\tpublic void move() {\n\t\tcheckWorld(\"move\");\n\t\tif (world.checkWall(x, y, dir)) {\n\t\t\tthrow new ErrorException(\"Karel is blocked\");\n\t\t}\n\t\tsetLocation(KarelWorld.adjacentPoint(x, y, dir));\n\t\tworld.trace();\n\t}\n\n\tpublic void turnLeft() {\n\t\tcheckWorld(\"turnLeft\");\n\t\tsetDirection(KarelWorld.leftFrom(dir));\n\t\tworld.trace();\n\t}\n\n\tpublic void pickBeeper() {\n\t\tcheckWorld(\"pickBeeper\");\n\t\tint nb = world.getBeepersOnCorner(x, y);\n\t\tif (nb < 1) {\n\t\t\tthrow new ErrorException(\"pickBeeper: No beepers on this corner (\" + x + \", \" + y + \")\");\n\t\t}\n\t\tworld.setBeepersOnCorner(x, y, KarelWorld.adjustBeepers(nb, -1));\n\t\tsetBeepersInBag(KarelWorld.adjustBeepers(getBeepersInBag(), +1));\n\t\tworld.trace();\n\t}\n\n\tpublic void putBeeper() {\n\t\tcheckWorld(\"putBeeper\");\n\t\tint nBag = getBeepersInBag();\n\t\tif (nBag < 1) {\n\t\t\tthrow new ErrorException(\"putBeeper: No beepers in bag\");\n\t\t}\n\t\tint nCorner = world.getBeepersOnCorner(x, y);\n\t\tworld.setBeepersOnCorner(x, y, KarelWorld.adjustBeepers(nCorner, +1));\n\t\tsetBeepersInBag(KarelWorld.adjustBeepers(nBag, -1));\n\t\tworld.trace();\n\t}\n\n\tpublic boolean frontIsClear() {\n\t\tcheckWorld(\"frontIsClear\");\n\t\treturn !world.checkWall(x, y, dir);\n\t}\n\n\tpublic boolean frontIsBlocked() {\n\t\tcheckWorld(\"frontIsBlocked\");\n\t\treturn world.checkWall(x, y, dir);\n\t}\n\n\tpublic boolean leftIsClear() {\n\t\tcheckWorld(\"leftIsClear\");\n\t\treturn !world.checkWall(x, y, KarelWorld.leftFrom(dir));\n\t}\n\n\tpublic boolean leftIsBlocked() {\n\t\tcheckWorld(\"leftIsBlocked\");\n\t\treturn world.checkWall(x, y, KarelWorld.leftFrom(dir));\n\t}\n\n\tpublic boolean rightIsClear() {\n\t\tcheckWorld(\"rightIsClear\");\n\t\treturn !world.checkWall(x, y, KarelWorld.rightFrom(dir));\n\t}\n\n\tpublic boolean rightIsBlocked() {\n\t\tcheckWorld(\"rightIsBlocked\");\n\t\treturn world.checkWall(x, y, KarelWorld.rightFrom(dir));\n\t}\n\n\tpublic boolean beepersPresent() {\n\t\tcheckWorld(\"beepersPresent\");\n\t\treturn world.getBeepersOnCorner(x, y) > 0;\n\t}\n\n\tpublic boolean noBeepersPresent() {\n\t\tcheckWorld(\"noBeepersPresent\");\n\t\treturn world.getBeepersOnCorner(x, y) == 0;\n\t}\n\n\tpublic boolean beepersInBag() {\n\t\tcheckWorld(\"beepersInBag\");\n\t\treturn getBeepersInBag() > 0;\n\t}\n\n\tpublic boolean noBeepersInBag() {\n\t\tcheckWorld(\"noBeepersInBag\");\n\t\treturn getBeepersInBag() == 0;\n\t}\n\n\tpublic boolean facingNorth() {\n\t\tcheckWorld(\"facingNorth\");\n\t\treturn dir == NORTH;\n\t}\n\n\tpublic boolean facingEast() {\n\t\tcheckWorld(\"facingEast\");\n\t\treturn dir == EAST;\n\t}\n\n\tpublic boolean facingSouth() {\n\t\tcheckWorld(\"facingSouth\");\n\t\treturn dir == SOUTH;\n\t}\n\n\tpublic boolean facingWest() {\n\t\tcheckWorld(\"facingWest\");\n\t\treturn dir == WEST;\n\t}\n\n\tpublic boolean notFacingNorth() {\n\t\tcheckWorld(\"notFacingNorth\");\n\t\treturn dir != NORTH;\n\t}\n\n\tpublic boolean notFacingEast() {\n\t\tcheckWorld(\"notFacingEast\");\n\t\treturn dir != EAST;\n\t}\n\n\tpublic boolean notFacingSouth() {\n\t\tcheckWorld(\"notFacingSouth\");\n\t\treturn dir != SOUTH;\n\t}\n\n\tpublic boolean notFacingWest() {\n\t\tcheckWorld(\"notFacingWest\");\n\t\treturn dir != WEST;\n\t}\n\t\n\tpublic void pause(double ms) {\n\t\tif (!CommandLineProgram.isHeadless()) {\n\t\t\ttry {\n\t\t\t\tThread.sleep((long) ms);\n\t\t\t} catch (InterruptedException ie) {\n\t\t\t\t// empty\n\t\t\t}\n\t\t}\n\t}\n\n\t/* Entry points for program operation */\n\n\tpublic static void main(String[] args) {\n\t\tif (!CommandLineProgram.isHeadless()) {\n\t\t\tGuiUtils.setSystemLookAndFeel();\n\t\t}\n\t\tArrayList<String> argList = new ArrayList<String>();\n\t\tboolean codeFlag = false;\n\t\tfor (int i = 0; i < args.length; i++) {\n\t\t\targList.add(args[i]);\n\t\t\tif (args[i].startsWith(\"code=\"))\n\t\t\t\tcodeFlag = true;\n\t\t}\n\t\tif (!codeFlag) {\n\t\t\tString className = getMainClassName();\n\t\t\tif (className.endsWith(\".class\")) {\n\t\t\t\tclassName = className.substring(0, className.length() - 6);\n\t\t\t}\n\t\t\tclassName = className.replace('/', '.');\n\t\t\targList.add(\"code=\" + className);\n\t\t}\n\t\targList.add(\"program=stanford.karel.KarelProgram\");\n\t\tString[] argArray = new String[argList.size()];\n\t\tfor (int i = 0; i < argArray.length; i++) {\n\t\t\targArray[i] = argList.get(i);\n\t\t}\n\t\tKarelProgram.main(argArray);\n\n\t}\n\t\n\tpublic void setParameterTable(Map<String, String> table) {\n\t\t// empty\n\t}\n\t\n\tpublic void setStartupObject(Object obj) {\n\t\t// empty\n\t}\n\t\n\tpublic void start() {\n\t\tstart(new String[0]);\n\t}\n\t\n\t/* Protected method: start(args) */\n\t/**\n\t * Starts a <code>KarelProgram</code> containing this Karel instance,\n\t * passing it the specified arguments.\n\t */\n\n\tpublic void start(String[] args) {\n\t\tKarelProgram program = new KarelProgram();\n\t\tprogram.setStartupObject(this);\n\t\tprogram.start(args);\n\t}\n\n\t/* Protected methods */\n\n\tpublic Point getLocation() {\n\t\treturn new Point(x, y);\n\t}\n\n\tpublic void setLocation(Point pt) {\n\t\tsetLocation(pt.x, pt.y);\n\t}\n\n\tpublic void setLocation(int x, int y) {\n\t\tif (world != null) {\n\t\t\tif (world.outOfBounds(x, y)) {\n\t\t\t\tthrow new ErrorException(\"setLocation: Out of bounds\");\n\t\t\t}\n\t\t\tObject occupant = world.getKarelOnSquare(x, y);\n\t\t\tif (occupant == this)\n\t\t\t\treturn;\n\t\t\tif (occupant != null) {\n\t\t\t\tthrow new ErrorException(\"setLocation: Square is occupied\");\n\t\t\t}\n\t\t}\n\t\tint x0 = this.x;\n\t\tint y0 = this.y;\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tif (world != null) {\n\t\t\tworld.updateCorner(x, y);\n\t\t\tworld.updateCorner(x0, y0);\n\t\t}\n\t}\n\n\tpublic int getDirection() {\n\t\treturn dir;\n\t}\n\n\tpublic void setDirection(int dir) {\n\t\tthis.dir = dir;\n\t\tif (world != null)\n\t\t\tworld.updateCorner(x, y);\n\t}\n\n\tpublic int getBeepersInBag() {\n\t\treturn (beepers);\n\t}\n\n\tpublic void setBeepersInBag(int nBeepers) {\n\t\tbeepers = nBeepers;\n\t}\n\n\tpublic KarelWorld getWorld() {\n\t\treturn world;\n\t}\n\n\tpublic void setWorld(KarelWorld world) {\n\t\tthis.world = world;\n\t}\n\n\tprotected void checkWorld(String caller) {\n\t\tif (world == null) {\n\t\t\tthrow new ErrorException(caller\n\t\t\t\t\t+ \": Karel is not living in a world\");\n\t\t}\n\t}\n\n\tpublic void setDisplayOneFlag(boolean flag) {\n\t\tworld.setDisplayOneFlag(flag);\n\t}\n\n\t/* Private methods */\n\n\tprivate static String getMainClassName() {\n\t\tString result = null;\n\t\tString classpath = System.getProperty(\"java.class.path\");\n\t\tif (classpath == null)\n\t\t\tclasspath = System.getProperty(\"user.dir\");\n\t\tif (classpath == null)\n\t\t\treturn null;\n\t\tStringTokenizer tokenizer = new StringTokenizer(classpath, \":;\");\n\t\twhile (tokenizer.hasMoreTokens()) {\n\t\t\tString token = tokenizer.nextToken();\n\t\t\tFile file = new File(token);\n\t\t\tString[] candidates = null;\n\t\t\tif (file.isDirectory()) {\n\t\t\t\tcandidates = file.list();\n\t\t\t} else if (token.endsWith(\".jar\") && !nameAppears(token, SKIP_JARS)) {\n\t\t\t\ttry {\n\t\t\t\t\tZipFile zf = new ZipFile(file);\n\t\t\t\t\tArrayList<String> list = new ArrayList<String>();\n\t\t\t\t\tEnumeration<?> entries = zf.entries();\n\t\t\t\t\twhile (entries.hasMoreElements()) {\n\t\t\t\t\t\tlist.add(((ZipEntry) entries.nextElement()).getName());\n\t\t\t\t\t}\n\t\t\t\t\tcandidates = new String[list.size()];\n\t\t\t\t\tfor (int i = 0; i < candidates.length; i++) {\n\t\t\t\t\t\tcandidates[i] = list.get(i);\n\t\t\t\t\t}\n\t\t\t\t\tzf.close();\n\t\t\t\t} catch (IOException ex) {\n\t\t\t\t\tcandidates = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (candidates != null) {\n\t\t\t\tfor (int i = 0; i < candidates.length; i++) {\n\t\t\t\t\tString fileName = candidates[i];\n\t\t\t\t\tif (fileName.endsWith(\".class\")) {\n\t\t\t\t\t\tString className = fileName.substring(0,\n\t\t\t\t\t\t\t\tfileName.lastIndexOf(\".class\"));\n\t\t\t\t\t\tif (className.indexOf(\"/\") == -1\n\t\t\t\t\t\t\t\t&& JTFTools.checkIfLoaded(className)) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tClass<?> karelClass = Class\n\t\t\t\t\t\t\t\t\t\t.forName(\"stanford.karel.Karel\");\n\t\t\t\t\t\t\t\tClass<?> c = Class.forName(className);\n\t\t\t\t\t\t\t\tif (karelClass.isAssignableFrom(c)) {\n\t\t\t\t\t\t\t\t\tresult = className;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} catch (Exception ex) {\n\t\t\t\t\t\t\t\t/* Empty */\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tprivate static boolean nameAppears(String name, String[] array) {\n\t\tfor (int i = 0; i < array.length; i++) {\n\t\t\tif (array[i].equals(name))\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/karel/AccessibleKarel.java",
    "content": "/*\n * An accessible version of Karel that prints status information, making it easier\n * for a screen reader to speak Karel's progress aloud.\n * \n * @version 2018/10/02\n * - initial version\n */\n\npackage stanford.karel;\n\nimport java.awt.Color;\nimport acm.graphics.GObject;\n\npublic class AccessibleKarel extends SuperKarel {\n\tpublic AccessibleKarel() {\n\t\tsuper();\n\t\tsetEcho(true);\n\t}\n\t\n\t/**\n\t * Prints the current state of Karel's world to the console.\n\t */\n\tpublic void echoWorld() {\n\t\tmaybeEcho(\"Current world state:\");\n\t\tKarelWorld world = getWorld();\n\t\tmaybeEcho(\"  World size is \" + world.getColumns() + \" by \" + world.getRows());\n\t\t\n\t\tfor (int x = 1; x <= world.getColumns(); x++) {\n\t\t\tfor (int y = 1; y <= world.getRows(); y++) {\n\t\t\t\tint beepers = world.getBeepersOnCorner(x, y);\n\t\t\t\tif (beepers > 0) {\n\t\t\t\t\tmaybeEcho(\"  Corner \" + x + \", \" + y + \" has \" + beepers + \" beeper\"\n\t\t\t\t\t\t\t+ (beepers > 1 ? \"s\" : \"\"));\n\t\t\t\t}\n\t\t\t\tColor color = world.getCornerColor(x, y);\n\t\t\t\tif (color != null) {\n\t\t\t\t\tmaybeEcho(\"  Corner \" + x + \", \" + y + \" has color \"\n\t\t\t\t\t\t\t+ GObject.colorNameFriendly(color));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t/**\n\t * Prints Karel's current state to the console.\n\t */\n\tpublic void help() {\n\t\tmaybeEchoCurrentState();\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/karel/CardPanel.java",
    "content": "/*\n * This class defines a simple card layout panel that hides\n * the layout manager.\n * - 2015/03/31: Changed to use Swing graphical components.\n */\n\npackage stanford.karel;\n\nimport java.awt.*;\nimport javax.swing.*;\n\nclass CardPanel extends JPanel {\n\tprivate CardLayout layout;\n\tprivate String currentView;\n\n\t/*\n\t * This constructor creates a panel instance with a card layout that can be\n\t * manipulated directly from the panel object by calling setView.\n\t */\n\tpublic CardPanel() {\n\t\tlayout = new CardLayout();\n\t\tsetLayout(layout);\n\t\tsetOpaque(false);\n\t}\n\n\t/*\n\t * These methods allow clients to set and get the name of the currently\n\t * displayed view.\n\t */\n\tpublic void setView(String name) {\n\t\tvalidate();\n\t\tcurrentView = name;\n\t\tlayout.show(this, name);\n\t\trepaint();\n\t}\n\n\tpublic String getView() {\n\t\treturn currentView;\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/karel/EmptyCanvas.java",
    "content": "/*\n * This class is an empty lightweight component.\n * - 2015/03/31: Changed to use Swing graphical components.\n */\n\npackage stanford.karel;\n\nimport javax.swing.*;\n\nclass EmptyCanvas extends JComponent {\n\t/* Empty */\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/karel/Event.java",
    "content": "package stanford.karel;\n\nimport java.util.*;\n\n/**\n * An event is an improved version of a java.util.Observable.\n */\n@SuppressWarnings(\"deprecation\")\npublic class Event<T> extends Observable {\n\tprivate String name = \"Event\";\n\n\tpublic Event() {\n\t}\n\n\tpublic Event(String name) {\n\t\tthis.name = name;\n\t}\n\n\tpublic void add(Observer o) {\n\t\tthis.addObserver(o);\n\t}\n\n\tpublic void remove(Observer o) {\n\t\tthis.deleteObserver(o);\n\t}\n\n\tpublic void fire() {\n\t\tthis.fire(null);\n\t}\n\n\tpublic void fire(T arg) {\n\t\tthis.setChanged();\n\t\tthis.notifyObservers(arg);\n\t}\n\n\tpublic String getName() {\n\t\treturn this.name;\n\t}\n\n\tpublic String toString() {\n\t\treturn this.name;\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/karel/HPanel.java",
    "content": "/*\n * This file implements a CSPanel subclass that is useful for\n * creating a horizontal assembly of components.  The details\n * of its operation are described in the HVLayout manager,\n * which is common to both HPanels and VPanels.\n * - 2015/03/31: Changed to use Swing graphical components.\n */\n\npackage stanford.karel;\n\nimport java.awt.*;\nimport javax.swing.*;\n\nclass HPanel extends JPanel {\n\tpublic HPanel() {\n\t\tsetLayout(new HVLayout(HVLayout.HORIZONTAL));\n\t\tsetOpaque(false);\n\t}\n\n\tpublic Component add(Component comp) {\n\t\treturn add(\"\", comp);\n\t}\n\n\tpublic Component add(String constraint) {\n\t\treturn add(constraint, null);\n\t}\n\n\tpublic Component add(String constraint, Component comp) {\n\t\tif (comp == null)\n\t\t\tcomp = new EmptyCanvas();\n\t\treturn super.add(constraint, comp);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/karel/HVLayout.java",
    "content": "/*\n * This file implements a layout manager that simplifies the\n * task of creating component assemblies.  In general, clients\n * will create HPanels and VPanels, which use an HVLayout\n * of the appropriate direction.\n *\n * To use a stack panel, the first step is to create the\n * appropriate HPanel or VPanel.  For example, you can\n * create a horizontal assemblage like this:\n *\n *      HPanel hbox = new HPanel();\n *\n * From there, you simply add components to the panel in a\n * left-to-right order (top-to-bottom for VPanels).  The\n * call to add a component looks like this:\n *\n *      hbox.add(constraints, component);\n *\n * where constraints is a string consisting of a series of\n * options.  Each option has one of the following two forms:\n *\n *     /option\n *     /option:value\n *\n * The available options and their interpretations are:\n *\n * /stretch:xxx  The /stretch option indicates that this\n *               component should stretch to fill its grid cell\n *               if the enclosing panel stretches.  The available\n *               option values are both, horizontal, vertical,\n *               and none.  If the /stretch option does not\n *               appear (or /stretch:none is used), the component\n *               will maintain its size.  If /stretch appears\n *               without an option value, it is interpreted as\n *               /stretch:both.\n *\n * /fill         The /fill option is very much like stretch, but\n *               causes the component to stretch only in the\n *               panel direction.  Thus, /fill is the same as\n *               /stretch:horizontal for HPanels and the same as\n *               /stretch:vertical for VPanels.\n *\n * /anchor:xxx   The /anchor option applies to components that do\n *               not stretch and specifies how those components\n *               should be oriented with respect to the space\n *               available for that component.  The /anchor option\n *               in the first component determines the anchoring\n *               for the entire panel in the dimension of expansion;\n *               in the opposite dimension, each component is anchored\n *               individually.  The legal option values are the names\n *               of the compass points and center.  If no /anchor\n *               option appears, the component is centered.  If\n *               /anchor appears with no argument, it is taken to\n *               be /anchor:northwest.  The /anchor option values\n *               can also be used as complete options, so that\n *               /south is a shorthand for /anchor:south.\n *\n * /space:n      The /space:n option adds n pixels of space before\n *               the component (i.e., to the left of components in\n *               an HPanel and above components in a VPanel).\n *\n * /top:n        These options add a margin of n pixels in the\n * /bottom:n     indicated direction from the component.  You may\n * /left:n       specify as many of these options as you want; if\n * /right:n      no value appears for a particular direction, no\n *               extra space is allocated.\n *\n * /width:n      These options specify the preferred width and height\n * /height:n     of their component.\n *\n * The option string is case-insensitive.  Numeric values can easily\n * be inserted into the string using Java's concatenation operator.\n * For example, if you want to add myButton to the HPanel hbox and\n * specify that it be BUTTON_WIDTH pixels wide, you could write\n *\n *          hbox.add(\"/width:\" + BUTTON_WIDTH, myButton);\n * - 2015/03/31: Changed to use Swing graphical components.\n */\n\npackage stanford.karel;\n\nimport java.awt.*;\nimport java.util.*;\n\nclass HVLayout implements LayoutManager {\n\t/* Constants */\n\tpublic static final int DEFAULT_SPACE = 5;\n\tpublic static final int HORIZONTAL = GridBagConstraints.HORIZONTAL;\n\tpublic static final int VERTICAL = GridBagConstraints.VERTICAL;\n\n\t/* Private constants */\n\tprivate static final int MINIMUM = 0;\n\tprivate static final int PREFERRED = 1;\n\tprivate static final int CENTER = GridBagConstraints.CENTER;\n\tprivate static final int NORTH = GridBagConstraints.NORTH;\n\tprivate static final int NORTHEAST = GridBagConstraints.NORTHEAST;\n\tprivate static final int EAST = GridBagConstraints.EAST;\n\tprivate static final int SOUTHEAST = GridBagConstraints.SOUTHEAST;\n\tprivate static final int SOUTH = GridBagConstraints.SOUTH;\n\tprivate static final int SOUTHWEST = GridBagConstraints.SOUTHWEST;\n\tprivate static final int WEST = GridBagConstraints.WEST;\n\tprivate static final int NORTHWEST = GridBagConstraints.NORTHWEST;\n\tprivate static final int NONE = GridBagConstraints.NONE;\n\tprivate static final int BOTH = GridBagConstraints.BOTH;\n\n\t/* Private variables */\n\tprivate int orientation;\n\tprivate HashMap<Component, OptionTable> constraintTable;\n\n\t/*\n\t * This method creates a new HVLayout object that grows along the axis\n\t * specified by orientation, which must be HORIZONTAL or VERTICAL.\n\t */\n\tpublic HVLayout(int orientation) {\n\t\tthis.orientation = orientation;\n\t\tconstraintTable = new HashMap<Component, OptionTable>();\n\t}\n\n\t/* LayoutManager interface */\n\t/*\n\t * This method adds the specified component to the layout in the position\n\t * specified by name.\n\t */\n\tpublic void addLayoutComponent(String constraints, Component comp) {\n\t\tsynchronized (comp.getTreeLock()) {\n\t\t\tconstraintTable.put(comp,\n\t\t\t\t\tnew OptionTable(constraints.toLowerCase()));\n\t\t}\n\t}\n\n\t/*\n\t * This method removes the specified component from the layour.\n\t */\n\tpublic void removeLayoutComponent(Component comp) {\n\t\tconstraintTable.remove(comp);\n\t}\n\n\t/*\n\t * This method calculates the preferred layout size for the components\n\t * contained in the parent.\n\t */\n\tpublic Dimension preferredLayoutSize(Container parent) {\n\t\tsynchronized (parent.getTreeLock()) {\n\t\t\treturn getContainerSize(parent, PREFERRED);\n\t\t}\n\t}\n\n\t/*\n\t * This method calculates the minimum layout size for the components\n\t * contained in the parent.\n\t */\n\tpublic Dimension minimumLayoutSize(Container parent) {\n\t\tsynchronized (parent.getTreeLock()) {\n\t\t\treturn getContainerSize(parent, MINIMUM);\n\t\t}\n\t}\n\n\t/*\n\t * This method performs the actual layout operations, resizing and\n\t * repositioning the components in the specified parent.\n\t */\n\tpublic void layoutContainer(Container parent) {\n\t\tsynchronized (parent.getTreeLock()) {\n\t\t\tint nComponents = parent.getComponentCount();\n\t\t\tDimension psize = parent.getSize();\n\t\t\tDimension tsize = preferredLayoutSize(parent);\n\t\t\tint nStretch = getStretchCount(parent);\n\t\t\tint extra = getExtraSpace(psize, tsize, nStretch);\n\t\t\tPoint origin = new Point(0, 0);\n\t\t\tif (nStretch == 0)\n\t\t\t\torigin = getInitialOrigin(parent, psize, tsize);\n\t\t\tfor (int i = 0; i < nComponents; i++) {\n\t\t\t\tComponent comp = parent.getComponent(i);\n\t\t\t\tOptionTable options = constraintTable.get(comp);\n\t\t\t\tDimension csize = getLayoutSize(comp, options, PREFERRED);\n\t\t\t\tDimension lsize = applyStretching(getStretchOption(options),\n\t\t\t\t\t\tcsize, psize, extra);\n\t\t\t\tDimension vsize = applyStretching(BOTH, csize, psize, extra);\n\t\t\t\tRectangle bounds = getLayoutBounds(options, lsize, vsize,\n\t\t\t\t\t\torigin);\n\t\t\t\tcomp.setBounds(bounds);\n\t\t\t\tif (orientation == HORIZONTAL) {\n\t\t\t\t\torigin.x += lsize.width;\n\t\t\t\t} else {\n\t\t\t\t\torigin.y += lsize.height;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/*\n\t * This method unifies the calculation of the minimum and preferred sizes\n\t * for the parent. The type parameter must be one of the constants MINIMUM\n\t * and PREFERRED. This method assumes that the tree lock has been obtained\n\t * by the caller.\n\t */\n\tprivate Dimension getContainerSize(Container parent, int type) {\n\t\tDimension result = new Dimension(0, 0);\n\t\tint nComponents = parent.getComponentCount();\n\t\tfor (int i = 0; i < nComponents; i++) {\n\t\t\tComponent comp = parent.getComponent(i);\n\t\t\tOptionTable options = constraintTable.get(comp);\n\t\t\tDimension size = getLayoutSize(comp, options, type);\n\t\t\tif (orientation == HORIZONTAL) {\n\t\t\t\tresult.width += size.width;\n\t\t\t\tresult.height = Math.max(result.height, size.height);\n\t\t\t} else {\n\t\t\t\tresult.width = Math.max(result.width, size.width);\n\t\t\t\tresult.height += size.height;\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\t/*\n\t * This method computes the minimum or preferred size of the specified\n\t * component according to the constraint specifications for the layout and\n\t * any size information set by the component class. The type parameter must\n\t * be one of the constants MINIMUM and PREFERRED.\n\t */\n\tprivate Dimension getLayoutSize(Component comp, OptionTable options,\n\t\t\tint type) {\n\t\tDimension size = new Dimension(0, 0);\n\t\t;\n\t\tif (type == PREFERRED)\n\t\t\tsize = new Dimension(comp.getPreferredSize());\n\t\tsize.width = options.getIntOption(\"width\", size.width);\n\t\tsize.height = options.getIntOption(\"height\", size.height);\n\t\tsize = limitSize(size, comp);\n\t\tInsets insets = getInsetOption(options);\n\t\tsize.width += insets.left + insets.right;\n\t\tsize.height += insets.top + insets.bottom;\n\t\treturn size;\n\t}\n\n\t/*\n\t * This method returns a new Dimension value that is within the limits set\n\t * by the minimum and maximum sizes for the component.\n\t */\n\tprivate Dimension limitSize(Dimension size, Component comp) {\n\t\tDimension minSize = comp.getMinimumSize();\n\t\tDimension maxSize = comp.getMaximumSize();\n\t\tint width = Math\n\t\t\t\t.max(minSize.width, Math.min(size.width, maxSize.width));\n\t\tint height = Math.max(minSize.height,\n\t\t\t\tMath.min(size.height, maxSize.height));\n\t\treturn new Dimension(width, height);\n\t}\n\n\t/*\n\t * This method returns the Insets object specified by the options table,\n\t * which comes from the /top, /bottom, /left, /right, and /space options.\n\t */\n\tprivate Insets getInsetOption(OptionTable options) {\n\t\tInsets insets = new Insets(0, 0, 0, 0);\n\t\tif (options.isSpecified(\"space\")) {\n\t\t\tswitch (orientation) {\n\t\t\tcase HORIZONTAL:\n\t\t\t\tinsets.left = options.getIntOption(\"space\");\n\t\t\t\tbreak;\n\t\t\tcase VERTICAL:\n\t\t\t\tinsets.top = options.getIntOption(\"space\");\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (options.isSpecified(\"left\")) {\n\t\t\tinsets.left = options.getIntOption(\"left\");\n\t\t}\n\t\tif (options.isSpecified(\"right\")) {\n\t\t\tinsets.right = options.getIntOption(\"right\");\n\t\t}\n\t\tif (options.isSpecified(\"top\")) {\n\t\t\tinsets.top = options.getIntOption(\"top\");\n\t\t}\n\t\tif (options.isSpecified(\"bottom\")) {\n\t\t\tinsets.bottom = options.getIntOption(\"bottom\");\n\t\t}\n\t\treturn insets;\n\t}\n\n\t/*\n\t * This method returns the stretching style specified by the options table,\n\t * which comes from the /stretch and /fill options.\n\t */\n\tprivate int getStretchOption(OptionTable options) {\n\t\tif (options.isSpecified(\"fill\"))\n\t\t\treturn orientation;\n\t\tif (options.isSpecified(\"stretch\")) {\n\t\t\tString value = options.getOption(\"stretch\", \"both\");\n\t\t\tif (value.equals(\"none\"))\n\t\t\t\treturn NONE;\n\t\t\tif (value.equals(\"horizontal\"))\n\t\t\t\treturn HORIZONTAL;\n\t\t\tif (value.equals(\"vertical\"))\n\t\t\t\treturn VERTICAL;\n\t\t\tif (value.equals(\"both\"))\n\t\t\t\treturn BOTH;\n\t\t}\n\t\treturn NONE;\n\t}\n\n\t/*\n\t * This method returns the anchoring style specified by the options table,\n\t * which comes from the /anchor option, if specified, or from any of the\n\t * anchoring constants.\n\t */\n\tprivate int getAnchorOption(OptionTable options) {\n\t\tint anchor = CENTER;\n\t\tif (options.isSpecified(\"anchor\")) {\n\t\t\tString value = options.getOption(\"anchor\", \"northwest\");\n\t\t\tif (value.equals(\"center\")) {\n\t\t\t\tanchor = CENTER;\n\t\t\t} else if (value.equals(\"north\")) {\n\t\t\t\tanchor = NORTH;\n\t\t\t} else if (value.equals(\"northeast\") || value.equals(\"ne\")) {\n\t\t\t\tanchor = NORTHEAST;\n\t\t\t} else if (value.equals(\"east\")) {\n\t\t\t\tanchor = EAST;\n\t\t\t} else if (value.equals(\"southeast\") || value.equals(\"se\")) {\n\t\t\t\tanchor = SOUTHEAST;\n\t\t\t} else if (value.equals(\"south\")) {\n\t\t\t\tanchor = SOUTH;\n\t\t\t} else if (value.equals(\"southwest\") || value.equals(\"sw\")) {\n\t\t\t\tanchor = SOUTHWEST;\n\t\t\t} else if (value.equals(\"west\")) {\n\t\t\t\tanchor = WEST;\n\t\t\t} else if (value.equals(\"northwest\") || value.equals(\"nw\")) {\n\t\t\t\tanchor = NORTHWEST;\n\t\t\t}\n\t\t} else {\n\t\t\tif (options.isSpecified(\"center\")) {\n\t\t\t\tanchor = CENTER;\n\t\t\t} else if (options.isSpecified(\"north\")) {\n\t\t\t\tanchor = NORTH;\n\t\t\t} else if (options.isSpecified(\"northeast\")\n\t\t\t\t\t|| options.isSpecified(\"ne\")) {\n\t\t\t\tanchor = NORTHEAST;\n\t\t\t} else if (options.isSpecified(\"east\")) {\n\t\t\t\tanchor = EAST;\n\t\t\t} else if (options.isSpecified(\"southeast\")\n\t\t\t\t\t|| options.isSpecified(\"se\")) {\n\t\t\t\tanchor = SOUTHEAST;\n\t\t\t} else if (options.isSpecified(\"south\")) {\n\t\t\t\tanchor = SOUTH;\n\t\t\t} else if (options.isSpecified(\"southwest\")\n\t\t\t\t\t|| options.isSpecified(\"sw\")) {\n\t\t\t\tanchor = SOUTHWEST;\n\t\t\t} else if (options.isSpecified(\"west\")) {\n\t\t\t\tanchor = WEST;\n\t\t\t} else if (options.isSpecified(\"northwest\")\n\t\t\t\t\t|| options.isSpecified(\"nw\")) {\n\t\t\t\tanchor = NORTHWEST;\n\t\t\t}\n\t\t}\n\t\treturn anchor;\n\t}\n\n\t/*\n\t * This method counts the number of stretchable components in the parent,\n\t * considering only the axis along which new components are added.\n\t */\n\tprivate int getStretchCount(Container parent) {\n\t\tint nComponents = parent.getComponentCount();\n\t\tint nStretch = 0;\n\t\tfor (int i = 0; i < nComponents; i++) {\n\t\t\tComponent comp = parent.getComponent(i);\n\t\t\tOptionTable options = constraintTable.get(comp);\n\t\t\tint stretch = getStretchOption(options);\n\t\t\tif (orientation == HORIZONTAL) {\n\t\t\t\tif (stretch == HORIZONTAL || stretch == BOTH)\n\t\t\t\t\tnStretch++;\n\t\t\t} else {\n\t\t\t\tif (stretch == VERTICAL || stretch == BOTH)\n\t\t\t\t\tnStretch++;\n\t\t\t}\n\t\t}\n\t\treturn nStretch;\n\t}\n\n\t/*\n\t * This method returns the amount of extra space that must be added to each\n\t * stretchable component along the main axis. The psize parameter gives the\n\t * size of the parent, tsize is the total size of the components, and\n\t * nStretch is the number of components that stretch.\n\t */\n\tprivate int getExtraSpace(Dimension psize, Dimension tsize, int nStretch) {\n\t\tif (nStretch == 0) {\n\t\t\treturn 0;\n\t\t} else {\n\t\t\tif (orientation == HORIZONTAL) {\n\t\t\t\treturn (psize.width - tsize.width) / nStretch;\n\t\t\t} else {\n\t\t\t\treturn (psize.height - tsize.height) / nStretch;\n\t\t\t}\n\t\t}\n\t}\n\n\t/*\n\t * This method computes the dimensions of the layout box to account for the\n\t * stretching of this component to fit into the available space.\n\t */\n\tprivate Dimension applyStretching(int stretch, Dimension csize,\n\t\t\tDimension psize, int extra) {\n\t\tint width = csize.width;\n\t\tint height = csize.height;\n\t\tif (stretch == HORIZONTAL || stretch == BOTH) {\n\t\t\tif (orientation == HORIZONTAL) {\n\t\t\t\twidth += extra;\n\t\t\t} else {\n\t\t\t\twidth = psize.width;\n\t\t\t}\n\t\t}\n\t\tif (stretch == VERTICAL || stretch == BOTH) {\n\t\t\tif (orientation == VERTICAL) {\n\t\t\t\theight += extra;\n\t\t\t} else {\n\t\t\t\theight = psize.height;\n\t\t\t}\n\t\t}\n\t\treturn new Dimension(width, height);\n\t}\n\n\t/*\n\t * This method returns the appropriate bounding box for the component that\n\t * appears in the specified layout area beginning at the specified origin.\n\t */\n\tprivate Rectangle getLayoutBounds(OptionTable options, Dimension lsize,\n\t\t\tDimension vsize, Point origin) {\n\t\tInsets insets = getInsetOption(options);\n\t\tint anchor = getAnchorOption(options);\n\t\tint dx = insets.left;\n\t\tint dy = insets.top;\n\t\tint width = lsize.width - insets.left - insets.right;\n\t\tint height = lsize.height - insets.top - insets.bottom;\n\t\tif (orientation == HORIZONTAL) {\n\t\t\tswitch (anchor) {\n\t\t\tcase NORTH:\n\t\t\tcase NORTHWEST:\n\t\t\tcase NORTHEAST:\n\t\t\t\tdy = insets.top;\n\t\t\t\tbreak;\n\t\t\tcase CENTER:\n\t\t\tcase WEST:\n\t\t\tcase EAST:\n\t\t\t\tdy = insets.top + (vsize.height - lsize.height) / 2;\n\t\t\t\tbreak;\n\t\t\tcase SOUTH:\n\t\t\tcase SOUTHWEST:\n\t\t\tcase SOUTHEAST:\n\t\t\t\tdy = vsize.height - insets.bottom - lsize.height;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} else {\n\t\t\tswitch (anchor) {\n\t\t\tcase WEST:\n\t\t\tcase NORTHWEST:\n\t\t\tcase SOUTHWEST:\n\t\t\t\tdx = insets.left;\n\t\t\t\tbreak;\n\t\t\tcase CENTER:\n\t\t\tcase NORTH:\n\t\t\tcase SOUTH:\n\t\t\t\tdx = insets.left + (vsize.width - lsize.width) / 2;\n\t\t\t\tbreak;\n\t\t\tcase EAST:\n\t\t\tcase NORTHEAST:\n\t\t\tcase SOUTHEAST:\n\t\t\t\tdx = vsize.width - insets.right - lsize.width;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn new Rectangle(origin.x + dx, origin.y + dy, width, height);\n\t}\n\n\t/*\n\t * This method returns the initial origin at which the layout begins and is\n\t * called only if no components are stretchable along the main axis. The\n\t * anchor property of the first component is used to determine the\n\t * alignment.\n\t */\n\tprivate Point getInitialOrigin(Container parent, Dimension psize,\n\t\t\tDimension tsize) {\n\t\tint x = 0;\n\t\tint y = 0;\n\t\tif (parent.getComponentCount() > 0) {\n\t\t\tOptionTable options = constraintTable.get(parent.getComponent(0));\n\t\t\tint anchor = getAnchorOption(options);\n\t\t\tif (orientation == HORIZONTAL) {\n\t\t\t\tswitch (anchor) {\n\t\t\t\tcase WEST:\n\t\t\t\tcase NORTHWEST:\n\t\t\t\tcase SOUTHWEST:\n\t\t\t\t\tx = 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase CENTER:\n\t\t\t\tcase NORTH:\n\t\t\t\tcase SOUTH:\n\t\t\t\t\tx = (psize.width - tsize.width) / 2;\n\t\t\t\t\tbreak;\n\t\t\t\tcase EAST:\n\t\t\t\tcase NORTHEAST:\n\t\t\t\tcase SOUTHEAST:\n\t\t\t\t\tx = psize.width - tsize.width;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tswitch (anchor) {\n\t\t\t\tcase NORTH:\n\t\t\t\tcase NORTHWEST:\n\t\t\t\tcase NORTHEAST:\n\t\t\t\t\ty = 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase CENTER:\n\t\t\t\tcase WEST:\n\t\t\t\tcase EAST:\n\t\t\t\t\ty = (psize.height - tsize.height) / 2;\n\t\t\t\t\tbreak;\n\t\t\t\tcase SOUTH:\n\t\t\t\tcase SOUTHWEST:\n\t\t\t\tcase SOUTHEAST:\n\t\t\t\t\ty = psize.height - tsize.height;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn new Point(x, y);\n\t}\n\n\t/*\n\t * This method returns a readable name for the anchor constant.\n\t */\n\tpublic String anchorName(int anchor) {\n\t\tswitch (anchor) {\n\t\tcase CENTER:\n\t\t\treturn \"CENTER\";\n\t\tcase NORTH:\n\t\t\treturn \"NORTH\";\n\t\tcase NORTHEAST:\n\t\t\treturn \"NORTHEAST\";\n\t\tcase EAST:\n\t\t\treturn \"EAST\";\n\t\tcase SOUTHEAST:\n\t\t\treturn \"SOUTHEAST\";\n\t\tcase SOUTH:\n\t\t\treturn \"SOUTH\";\n\t\tcase SOUTHWEST:\n\t\t\treturn \"SOUTHWEST\";\n\t\tcase WEST:\n\t\t\treturn \"WEST\";\n\t\tcase NORTHWEST:\n\t\t\treturn \"NORTHWEST\";\n\t\tdefault:\n\t\t\treturn \"undefined\";\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/karel/HeadlessKarel.java",
    "content": "/*\n * @version 2017/07/21\n * - added add() overloads\n */\n\npackage stanford.karel;\n\nimport java.awt.Color;\nimport java.awt.Component;\nimport java.awt.Font;\nimport java.awt.Point;\nimport java.io.*;\nimport java.util.*;\nimport acm.util.ErrorException;\nimport stanford.cs106.io.IORuntimeException;\n\n/**\n * A version of a Karel superclass that doesn't crash when run\n * in headless (non-graphical) mode.\n */\npublic class HeadlessKarel extends AbstractKarel {\n\tprivate static final String KAREL_WORLD_FILENAME = \"stanford.karel.world\";\n\tprivate static final String KAREL_WORLD_SAVE_FILENAME = \"stanford.karel.save\";\n\t\n\tprivate static boolean exitEnabled = false;\n\tprivate boolean trackLocationsVisited = false;\n\tprivate Set<Point> locationsVisited = new LinkedHashSet<Point>();\n\t\n\tprivate String saveFile;\n\tprivate String worldFile;\n\n\t/**\n\t * Exits the program.\n\t * Saves to a file first if needed.\n\t */\n\tpublic final void exit() {\n\t\tString outFileName = getSaveFile();\n\t\tif (outFileName != null && getWorld() != null) {\n\t\t\tgetWorld().saveToImage(outFileName);\n\t\t}\n\t\t\n\t\tif (exitEnabled) {\n\t\t\ttry {\n\t\t\t\tSystem.exit(0);\n\t\t\t} catch (Exception e) {\n\t\t\t\t// empty\n\t\t\t}\n\t\t}\n\t}\n\t\n\tpublic final Set<Point> getLocationsVisited() {\n\t\treturn Collections.unmodifiableSet(locationsVisited);\n\t}\n\t\n\tprotected final String getSaveFile() {\n\t\tif (saveFile == null) {\n\t\t\t// fall back to a default passed through a System property\n\t\t\treturn System.getProperty(KAREL_WORLD_SAVE_FILENAME);\n\t\t} else {\n\t\t\treturn saveFile;\n\t\t}\n\t}\n\t\n\tprotected final String getWorldFile() {\n\t\tif (worldFile == null) {\n\t\t\t// fall back to a default (same name as the class), e.g. \"worlds/HelloKarel.w\",\n\t\t\t// or use a file passed through a System property\n\t\t\tString defaultFileName = KarelProgram.WORLDS_DIRECTORY + File.separator\n\t\t\t\t\t+ getClass().getSimpleName() + KarelProgram.WORLD_EXTENSION;\n\t\t\tString filename = System.getProperty(KAREL_WORLD_FILENAME, defaultFileName);\n\t\t\tworldFile = filename;\n\t\t}\n\t\treturn worldFile;\n\t}\n\t\n\tpublic final boolean hasVisited(int x, int y) {\n\t\treturn hasVisited(new Point(x, y));\n\t}\n\t\n\tpublic final boolean hasVisited(Point pt) {\n\t\treturn locationsVisited.contains(pt);\n\t}\n\t\n\t/**\n\t * Initializes Karel.\n\t * You cannot override this method; we need it to be called as-is.\n\t */\n\tpublic final void init() {\n\t\t// load initial world\n\t\tString worldFile = getWorldFile();\n\n\t\tKarelWorld world = new KarelWorld();\n\t\tworld.add(this);\n\t\tsetWorld(world);\n\t\tworld.init(10, 10);   // temporary size\n\t\t\n\t\ttry {\n\t\t\tworld.load(new InputStreamReader(new FileInputStream(worldFile)));\n\t\t\tworld.setToDefaultSize();\n\n\t\t\tif (trackLocationsVisited) {\n\t\t\t\tlocationsVisited.add(getLocation());\n\t\t\t}\n\t\t} catch (IOException ioe) {\n\t\t\tthrow new ErrorException(\"Unable to load Karel world from \" + worldFile, ioe);\n\t\t}\n\t}\n\t\n\tpublic final void move() {\n\t\tsuper.move();\n\t\tif (trackLocationsVisited) {\n\t\t\tlocationsVisited.add(getLocation());\n\t\t}\n\t}\n\t\n\tpublic void run() {\n\t\t// empty\n\t}\n\t\n\tpublic static void setExitEnabled(boolean enabled) {\n\t\texitEnabled = enabled;\n\t}\n\t\n\tpublic final void setSaveFile(String filename) {\n\t\tsaveFile = filename;\n\t}\n\t\n\tpublic final void setTrackLocationsVisited(boolean track) {\n\t\ttrackLocationsVisited = track;\n\t}\n\t\n\tpublic final void setWorldFile(String filename) {\n\t\tif (!new File(filename).exists()) {\n\t\t\tthrow new IORuntimeException(\"Karel world file not found: \" + filename);\n\t\t}\n\t\tworldFile = filename;\n\t}\n\t\n\tpublic final void start() {\n\t\tinit();\n\t\trun();\n\t\texit();\n\t}\n\n\tpublic Component add(Component comp) {\n\t\t// empty\n\t\treturn comp;\n\t}\n\n\tpublic void add(Component comp, Object constraints) {\n\t\t// empty\n\t}\n\t\n\tpublic void add(Component comp, String region, Object constraints) {\n\t\t// empty\n\t}\n\n\tpublic void addActionListeners() {\n\t\t// empty\n\t}\n\n\tpublic void addMouseListeners() {\n\t\t// empty\n\t}\n\n\tpublic String getTitle() {\n\t\treturn \"\";\n\t}\n\n\tpublic void print(Object value) {\n\t\tSystem.out.print(value);\n\t}\n\n\tpublic void print(String value) {\n\t\tSystem.out.print(value);\n\t}\n\n\tpublic void printf(String format, Object... args) {\n\t\tSystem.out.printf(format, args);\n\t}\n\n\tpublic void println() {\n\t\tSystem.out.println();\n\t}\n\n\tpublic void println(Object value) {\n\t\tSystem.out.println(value);\n\t}\n\n\tpublic void println(String value) {\n\t\tSystem.out.println(value);\n\t}\n\n\tpublic void setBackground(Color color) {\n\t\t// empty\n\t}\n\n\tpublic void setFont(Font font) {\n\t\t// empty\n\t}\n\n\tpublic void setForeground(Color color) {\n\t\t// empty\n\t}\n\n\tpublic void setTitle(String title) {\n\t\t// empty\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/karel/HeadlessSuperKarel.java",
    "content": "/*\n * This class implements an extension of the basic Karel class that supports\n * more operations.\n * @version 2017/04/04\n * - made a copy of SuperKarel.java\n */\n\npackage stanford.karel;\n\nimport java.awt.*;\n\n/**\n * Extended Karel class . . .\n */\npublic class HeadlessSuperKarel extends HeadlessKarel {\n\tpublic static final Color BLACK = Color.BLACK;\n\tpublic static final Color BLUE = Color.BLUE;\n\tpublic static final Color CYAN = Color.CYAN;\n\tpublic static final Color DARK_GRAY = Color.DARK_GRAY;\n\tpublic static final Color GRAY = Color.GRAY;\n\tpublic static final Color GREEN = Color.GREEN;\n\tpublic static final Color LIGHT_GRAY = Color.LIGHT_GRAY;\n\tpublic static final Color MAGENTA = Color.MAGENTA;\n\tpublic static final Color ORANGE = Color.ORANGE;\n\tpublic static final Color PINK = Color.PINK;\n\tpublic static final Color RED = Color.RED;\n\tpublic static final Color WHITE = Color.WHITE;\n\tpublic static final Color YELLOW = Color.YELLOW;\n\n\t/* Constructor */\n\n\tpublic HeadlessSuperKarel() {\n\t\t/* Empty */\n\t}\n\n\tpublic void run() {\n\t\t/* Empty */\n\t}\n\n\tpublic void turnRight() {\n\t\tcheckWorld(\"turnRight\");\n\t\tsetDirection(KarelWorld.rightFrom(getDirection()));\n\t\tgetWorld().trace();\n\t}\n\n\tpublic void turnAround() {\n\t\tcheckWorld(\"turnAround\");\n\t\tsetDirection(KarelWorld.oppositeDirection(getDirection()));\n\t\tgetWorld().trace();\n\t}\n\n\tpublic void paintCorner(Color color) {\n\t\tKarelWorld world = getWorld();\n\t\tPoint pt = getLocation();\n\t\tcheckWorld(\"paintCorner\");\n\t\tworld.setCornerColor(pt.x, pt.y, color);\n\t\tworld.trace();\n\t}\n\n\tpublic void paintCorner(int rgb) {\n\t\tpaintCorner(new Color(rgb));\n\t}\n\n\tpublic void paintCorner(double red, double blue, double green) {\n\t\tpaintCorner(new Color((float) red, (float) blue, (float) green));\n\t}\n\n\tpublic Color newColor(int rgb) {\n\t\treturn new Color(rgb);\n\t}\n\n\tpublic boolean random() {\n\t\tcheckWorld(\"random\");\n\t\treturn random(0.5);\n\t}\n\n\tpublic boolean random(double p) {\n\t\tcheckWorld(\"random\");\n\t\treturn Math.random() < p;\n\t}\n\n\tpublic boolean cornerColorIs(Color color) {\n\t\tKarelWorld world = getWorld();\n\t\tPoint pt = getLocation();\n\t\tcheckWorld(\"cornerColorIs\");\n\t\tif (color == null) {\n\t\t\treturn world.getCornerColor(pt.x, pt.y) == null;\n\t\t} else {\n\t\t\treturn (color.equals(world.getCornerColor(pt.x, pt.y)));\n\t\t}\n\t}\n\n\tpublic boolean cornerColorIs(int rgb) {\n\t\treturn cornerColorIs(new Color(rgb));\n\t}\n\n\tpublic boolean cornerColorIs(double red, double blue, double green) {\n\t\tColor color = new Color((float) red, (float) blue, (float) green);\n\t\treturn cornerColorIs(color);\n\t}\n\n\tpublic void pause(double milliseconds) {\n\t\tKarelWorld world = getWorld();\n\t\tboolean repaintFlag = true;\n\t\tKarelWorldMonitor monitor = world.getMonitor();\n\t\tif (monitor != null && monitor.getSpeed() > 0.98) {\n\t\t\trepaintFlag = false;\n\t\t}\n\t\tworld.setRepaintFlag(true);\n\t\tworld.repaint();\n\t\tworld.setRepaintFlag(repaintFlag);\n\t\ttry {\n\t\t\tint millis = (int) milliseconds;\n\t\t\tint nanos = (int) Math.round((milliseconds - millis) * 1000000);\n\t\t\tThread.sleep(millis, nanos);\n\t\t} catch (InterruptedException ex) {\n\t\t\t/* Empty */\n\t\t}\n\t}\n\t\n\t/**\n\t * Causes Karel to pop up a speech bubble with the given text in it.\n\t */\n\tpublic void say(String text) {\n\t\t// TODO\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/karel/Karel.java",
    "content": "/*\n * This class implements the basic Karel-the-Robot object.\n * \n * @version 2018/10/02\n * - added echo functionality for screen readers\n * - alphabetized methods\n * @version 2015/03/31\n * - fixed warning by closing resources\n * - commented out unused constant INFINITE\n * - changed to OS system look and feel\n */\n\npackage stanford.karel;\n\nimport acm.graphics.GObject;\nimport acm.program.*;\nimport acm.util.*;\nimport stanford.cs106.gui.GuiUtils;\nimport stanford.cs106.reflect.ClassUtils;\n\nimport java.awt.*;\nimport java.awt.event.ActionEvent;\nimport java.io.*;\nimport java.util.*;\nimport java.util.zip.*;\n\n/**\n * The <code>Karel</code> class represents the simplest possible Karel the Robot\n * object. Each instance of the <code>Karel</code> class represents an\n * individual robot that can move inside a world laid out as a grid of streets\n * and avenues. The other characteristics of Karel's world include\n * <b><i>walls,</i></b> which separate individual corners, and\n * <b><i>beepers,</i></b> which are described by Karel's creator as\n * \"plastic cones which emit a quiet beeping noise.\" As it is shipped from the\n * factory, Karel can execute only four operations:\n * \n * <dl>\n * <dt><code><a href=\"#move()\">move</a>()</code></dt>\n * <dd>Moves this Karel forward one block. Karel cannot move forward if there is\n * a wall blocking the way.</dd>\n * <p>\n * <dt><code><a href=\"#turnLeft()\">turnLeft</a>()</code></dt>\n * <dd>Rotates this Karel 90 degrees to the left (counterclockwise).</dd>\n * <p>\n * <dt><code><a href=\"#pickBeeper()\">pickBeeper</a>()</code></dt>\n * <dd>Picks up one beeper from the current corner and stores the beeper in this\n * Karel's beeper bag, which can hold an infinite number of beepers. Karel can\n * execute a <code>pickBeeper</code> instruction only if there is a beeper on\n * the current corner.</dd>\n * <p>\n * <dt><code><a href=\"#putBeeper()\">putBeeper</a>()</code></dt>\n * <dd>Takes one beeper from this Karel's beeper bag and deposits it on the\n * current corner. Karel can execute a <code>pickBeeper</code> instruction only\n * if there is a beeper in its bag.</dd>\n * <p>\n * </dl>\n * \n * <p>\n * Karel programs are executed by defining a new subclass that extends\n * <code>Karel</code> and provides it with a <code>run</code> method that\n * defines its operation. For example, the following Karel subclass represents a\n * Karel program that moves forward, picks up a beeper from the square, and then\n * moves forward one more time:\n * \n * <p>\n * <table cellspacing=0 cellpadding=0>\n * <tr>\n * <td width=36>&nbsp;</td>\n * <td>\n * <table cellspacing=0 cellpadding=0>\n * <tr>\n * <td>\n * \n * <pre>\n * <code>\n * public class SimpleKarelExample extends Karel {\n * &nbsp;&nbsp;&nbsp;public void run() {\n * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;move();\n * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;putBeeper();\n * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;move();\n * &nbsp;&nbsp;&nbsp;}\n * }\n * </code>\n * </pre>\n * \n * </td>\n * </tr>\n * </table>\n * </td>\n * </tr>\n * </table>\n */\npublic class Karel extends Program implements KarelInterface, Runnable {\n\t/* Private constants */\n\tprivate static final int NORTH = KarelWorld.NORTH;\n\tprivate static final int EAST = KarelWorld.EAST;\n\tprivate static final int SOUTH = KarelWorld.SOUTH;\n\tprivate static final int WEST = KarelWorld.WEST;\n\t// private static final int INFINITE = KarelWorld.INFINITE;\n\n\t/* List of jar files to skip */\n\tprivate static final String[] SKIP_JARS = { \"acm.jar\", \"karel.jar\", };\n\n\t/* Private instance variables */\n\tprivate KarelWorld world;\n\tprivate int x;\n\tprivate int y;\n\tprivate int dir;\n\tprivate int beepers;\n\tprivate boolean echo;   // for blind accessibility\n\n\t/* Constructor */\n\tpublic Karel() {\n\t\tx = 1;\n\t\ty = 1;\n\t\tdir = EAST;\n\t\tworld = null;\n\t\techo = false;\n\t}\n\n\tpublic boolean beepersInBag() {\n\t\tcheckWorld(\"beepersInBag\");\n\t\treturn getBeepersInBag() > 0;\n\t}\n\n\tpublic boolean beepersPresent() {\n\t\tcheckWorld(\"beepersPresent\");\n\t\treturn world.getBeepersOnCorner(x, y) > 0;\n\t}\n\n\tprotected void checkWorld(String caller) {\n\t\tif (world == null) {\n\t\t\tthrowErrorException(caller\n\t\t\t\t\t+ \": Karel is not living in a world\");\n\t\t}\n\t}\n\n\tpublic boolean facingEast() {\n\t\tcheckWorld(\"facingEast\");\n\t\treturn dir == EAST;\n\t}\n\n\tpublic boolean facingNorth() {\n\t\tcheckWorld(\"facingNorth\");\n\t\treturn dir == NORTH;\n\t}\n\n\tpublic boolean facingSouth() {\n\t\tcheckWorld(\"facingSouth\");\n\t\treturn dir == SOUTH;\n\t}\n\n\tpublic boolean facingWest() {\n\t\tcheckWorld(\"facingWest\");\n\t\treturn dir == WEST;\n\t}\n\n\tpublic boolean frontIsBlocked() {\n\t\tcheckWorld(\"frontIsBlocked\");\n\t\treturn world.checkWall(x, y, dir);\n\t}\n\n\tpublic boolean frontIsClear() {\n\t\tcheckWorld(\"frontIsClear\");\n\t\treturn !world.checkWall(x, y, dir);\n\t}\n\n\tpublic int getBeepersInBag() {\n\t\treturn (beepers);\n\t}\n\n\tpublic int getDirection() {\n\t\treturn dir;\n\t}\n\n\tpublic Point getLocation() {\n\t\treturn new Point(x, y);\n\t}\n\n\tpublic KarelWorld getWorld() {\n\t\treturn world;\n\t}\n\n\tpublic boolean leftIsBlocked() {\n\t\tcheckWorld(\"leftIsBlocked\");\n\t\treturn world.checkWall(x, y, KarelWorld.leftFrom(dir));\n\t}\n\n\tpublic boolean leftIsClear() {\n\t\tcheckWorld(\"leftIsClear\");\n\t\treturn !world.checkWall(x, y, KarelWorld.leftFrom(dir));\n\t}\n\n\tprotected void maybeEcho(String text) {\n\t\tif (echo) {\n\t\t\tSystem.err.flush();\n\t\t\tpause(10);\n\t\t\tSystem.out.println(text);\n\t\t\tSystem.out.flush();\n\t\t}\n\t}\n\t\n\tprotected void maybeEchoError(String text) {\n\t\tif (echo) {\n\t\t\tSystem.out.println();\n\t\t\tSystem.out.flush();\n\t\t\tpause(10);\n\t\t\tSystem.err.println(text);\n\t\t\tSystem.err.flush();\n\t\t}\n\t}\n\t\n\tpublic void maybeEchoCurrentState() {\n\t\tPoint loc = getLocation();\n\t\tint nCorner = world.getBeepersOnCorner(loc);\n\t\tColor color = world.getCornerColor(loc);\n\t\tmaybeEcho(\"  Karel is at \" + loc.x + \", \" + loc.y\n\t\t\t\t+ (nCorner > 0 ? \", \" + nCorner + \" beeper\" + (nCorner == 1 ? \"\" : \"s\") : \"\")\n\t\t\t\t+ (color != null ? \", color \" + GObject.colorNameFriendly(color) : \"\"));\n\t}\n\t\n\tpublic void maybeEchoFinalState() {\n\t\t// world size\n\t\tmaybeEcho(\"Final state:\");\n\n\t\tPoint loc = getLocation();\n\t\tint nCorner = world.getBeepersOnCorner(loc);\n\t\tColor color = world.getCornerColor(loc);\n\t\tmaybeEcho(\"  Karel ends at location \" + loc.x + \", \" + loc.y\n\t\t\t\t+ (nCorner > 0 ? \", which contains \" + nCorner + \" beeper\" + (nCorner == 1 ? \"\" : \"s\") : \"\")\n\t\t\t\t+ (color != null ? \", color \" + GObject.colorNameFriendly(color) : \"\"));\n\t\t\n\t\tint nBag = getBeepersInBag();\n\t\tif (nBag != KarelWorld.INFINITE) {\n\t\t\tmaybeEcho(\"  Beepers in bag:    \" + nBag);\n\t\t}\n\t}\n\t\n\tpublic void maybeEchoInitialState() {\n\t\t// world size\n\t\tmaybeEcho(\"Karel is ready! Initial state:\");\n\t\tmaybeEcho(\"  Karel is in a world of size \"\n\t\t\t\t+ world.getColumns() + \" by \" + world.getRows()); \n\n\t\tPoint loc = getLocation();\n\t\tint nCorner = world.getBeepersOnCorner(loc);\n\t\tColor color = world.getCornerColor(loc);\n\t\tmaybeEcho(\"  Karel begins at location \" + loc.x + \", \" + loc.y\n\t\t\t\t+ (nCorner > 0 ? \", which contains \" + nCorner + \" beeper\" + (nCorner == 1 ? \"\" : \"s\") : \"\")\n\t\t\t\t+ (color != null ? \", color \" + GObject.colorNameFriendly(color) : \"\"));\n\t\t\n\t\tint nBag = getBeepersInBag();\n\t\tmaybeEcho(\"  Beepers in bag: \" + (nBag == KarelWorld.INFINITE ? \"infinite\" : String.valueOf(nBag)));\n\t\tmaybeEcho(\"Press Enter to run.\");\n\t}\n\t\n\t@Override\n\tpublic boolean menuAction(ActionEvent event) {\n\t\treturn super.menuAction(event);\n\t}\n\n\tpublic void move() {\n\t\tmaybeEcho(\"move\");\n\t\tcheckWorld(\"move\");\n\t\tif (world.checkWall(x, y, dir)) {\n\t\t\tthrowErrorException(\"Karel is blocked\");\n\t\t}\n\t\tPoint loc = KarelWorld.adjacentPoint(x, y, dir);\n\t\tsetLocation(loc);\n\t\tworld.trace();\n\t\tmaybeEchoCurrentState();\n\t}\n\n\tpublic boolean noBeepersPresent() {\n\t\tcheckWorld(\"noBeepersPresent\");\n\t\treturn world.getBeepersOnCorner(x, y) == 0;\n\t}\n\n\tpublic boolean noBeepersInBag() {\n\t\tcheckWorld(\"noBeepersInBag\");\n\t\treturn getBeepersInBag() == 0;\n\t}\n\n\tpublic boolean notFacingEast() {\n\t\tcheckWorld(\"notFacingEast\");\n\t\treturn dir != EAST;\n\t}\n\n\tpublic boolean notFacingNorth() {\n\t\tcheckWorld(\"notFacingNorth\");\n\t\treturn dir != NORTH;\n\t}\n\n\tpublic boolean notFacingSouth() {\n\t\tcheckWorld(\"notFacingSouth\");\n\t\treturn dir != SOUTH;\n\t}\n\n\tpublic boolean notFacingWest() {\n\t\tcheckWorld(\"notFacingWest\");\n\t\treturn dir != WEST;\n\t}\n\n\tpublic void pickBeeper() {\n\t\tmaybeEcho(\"pick beeper\");\n\t\tcheckWorld(\"pickBeeper\");\n\t\tint nCorner = world.getBeepersOnCorner(x, y);\n\t\tif (nCorner < 1) {\n\t\t\tthrowErrorException(\"pickBeeper: No beepers on this corner\");\n\t\t}\n\t\tnCorner = KarelWorld.adjustBeepers(nCorner, -1);\n\t\tworld.setBeepersOnCorner(x, y, nCorner);\n\t\t\n\t\tint nBag = getBeepersInBag();\n\t\tnBag = KarelWorld.adjustBeepers(nBag, +1);\n\t\tsetBeepersInBag(nBag);\n\t\tworld.trace();\n\t\t\n\t\tif (nCorner > 0) {\n\t\t\tmaybeEcho(\"  Beepers still on corner: \" + nCorner);\n\t\t}\n\t\tif (nBag != KarelWorld.INFINITE) {\n\t\t\tmaybeEcho(\"  Beepers in bag: \" + nBag);\n\t\t}\n\t}\n\n\tpublic void putBeeper() {\n\t\tmaybeEcho(\"put beeper\");\n\t\tcheckWorld(\"putBeeper\");\n\t\tint nBag = getBeepersInBag();\n\t\tif (nBag < 1) {\n\t\t\tthrowErrorException(\"putBeeper: No beepers in bag\");\n\t\t}\n\t\tnBag = KarelWorld.adjustBeepers(nBag, -1);\n\t\tsetBeepersInBag(nBag);\n\t\t\n\t\tint nCorner = world.getBeepersOnCorner(x, y);\n\t\tnCorner = KarelWorld.adjustBeepers(nCorner, +1);\n\t\tworld.setBeepersOnCorner(x, y, nCorner);\n\t\tworld.trace();\n\t\t\n\t\tmaybeEcho(\"  Beepers on corner: \" + nCorner);\n\t\tif (nBag != KarelWorld.INFINITE) {\n\t\t\tmaybeEcho(\"  Beepers in bag:    \" + nBag);\n\t\t}\n\t}\n\n\tpublic boolean rightIsBlocked() {\n\t\tcheckWorld(\"rightIsBlocked\");\n\t\treturn world.checkWall(x, y, KarelWorld.rightFrom(dir));\n\t}\n\n\tpublic boolean rightIsClear() {\n\t\tcheckWorld(\"rightIsClear\");\n\t\treturn !world.checkWall(x, y, KarelWorld.rightFrom(dir));\n\t}\n\n\tpublic void run() {\n\t\t/* Empty */\n\t}\n\t\n\tpublic void setEcho() {\n\t\tsetEcho(true);\n\t}\n\t\n\tpublic void setEcho(boolean echo) {\n\t\tthis.echo = echo;\n\t}\n\t\n\tpublic void setLocation(int x, int y) {\n\t\tif (world != null) {\n\t\t\tif (world.outOfBounds(x, y)) {\n\t\t\t\tthrowErrorException(\"setLocation: Out of bounds\");\n\t\t\t}\n\t\t\tKarel occupant = world.getKarelOnSquare(x, y);\n\t\t\tif (occupant == this)\n\t\t\t\treturn;\n\t\t\tif (occupant != null) {\n\t\t\t\tthrowErrorException(\"setLocation: Square is occupied\");\n\t\t\t}\n\t\t}\n\t\tint x0 = this.x;\n\t\tint y0 = this.y;\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tif (world != null) {\n\t\t\tworld.updateCorner(x, y);\n\t\t\tworld.updateCorner(x0, y0);\n\t\t}\n\t}\n\n\tpublic void setLocation(Point pt) {\n\t\tsetLocation(pt.x, pt.y);\n\t}\n\n\tpublic void setDirection(int dir) {\n\t\tthis.dir = dir;\n\t\tif (world != null)\n\t\t\tworld.updateCorner(x, y);\n\t}\n\n\tpublic void setBeepersInBag(int nBeepers) {\n\t\tbeepers = nBeepers;\n\t}\n\n\tpublic void setWorld(KarelWorld world) {\n\t\tthis.world = world;\n\t}\n\n\tpublic void setDisplayOneFlag(boolean flag) {\n\t\tworld.setDisplayOneFlag(flag);\n\t}\n\n\t/**\n\t * Starts a <code>KarelProgram</code> containing this Karel instance,\n\t * passing it the specified arguments.\n\t */\n\tpublic void start(String[] args) {\n\t\tKarelProgram program = new KarelProgram();\n\t\tprogram.setStartupObject(this);\n\t\tprogram.start(args);\n\t}\n\t\n\tprotected void throwErrorException(String message) {\n\t\tErrorException ex = new ErrorException(message);\n\t\tif (echo) {\n\t\t\tString errorEchoText = \"Error: \" + message + \"\\n\";\n\t\t\tfor (StackTraceElement stack : ex.getStackTrace()) {\n\t\t\t\tString clazz = stack.getClassName();\n\t\t\t\tif (clazz.startsWith(\"acm.\")\n\t\t\t\t\t\t|| clazz.startsWith(\"stanford.\")\n\t\t\t\t\t\t|| clazz.startsWith(\"java.\")\n\t\t\t\t\t\t|| clazz.startsWith(\"javax.\")\n\t\t\t\t\t\t|| clazz.startsWith(\"javazoom.\")\n\t\t\t\t\t\t|| clazz.startsWith(\"com.\")\n\t\t\t\t\t\t|| clazz.startsWith(\"sun.\")) {\n\t\t\t\t\t// don't print library classes\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\terrorEchoText += \"  \" + stack.getFileName() + \", line \" + stack.getLineNumber()\n\t\t\t\t\t\t+ \", \" + ClassUtils.stripPackages(stack.getClassName()) + \".\" + stack.getMethodName() + \"\\n\";\n\t\t\t}\n\t\t\tmaybeEchoError(errorEchoText);\n\t\t}\n\t\tthrow ex;\n\t}\n\n\tpublic void turnLeft() {\n\t\tmaybeEcho(\"turn left\");\n\t\tcheckWorld(\"turnLeft\");\n\t\tint newdir = KarelWorld.leftFrom(dir);\n\t\tsetDirection(newdir);\n\t\tworld.trace();\n\t\tmaybeEcho(\"  Karel is facing \" + KarelWorld.directionName(newdir).toLowerCase());\n\t}\n\n\n\tprivate static String getMainClassName() {\n\t\tString result = null;\n\t\tString classpath = System.getProperty(\"java.class.path\");\n\t\tif (classpath == null)\n\t\t\tclasspath = System.getProperty(\"user.dir\");\n\t\tif (classpath == null)\n\t\t\treturn null;\n\t\tStringTokenizer tokenizer = new StringTokenizer(classpath, \":;\");\n\t\twhile (tokenizer.hasMoreTokens()) {\n\t\t\tString token = tokenizer.nextToken();\n\t\t\tFile file = new File(token);\n\t\t\tString[] candidates = null;\n\t\t\tif (file.isDirectory()) {\n\t\t\t\tcandidates = file.list();\n\t\t\t} else if (token.endsWith(\".jar\") && !nameAppears(token, SKIP_JARS)) {\n\t\t\t\ttry {\n\t\t\t\t\tZipFile zf = new ZipFile(file);\n\t\t\t\t\tArrayList<String> list = new ArrayList<String>();\n\t\t\t\t\tEnumeration<?> entries = zf.entries();\n\t\t\t\t\twhile (entries.hasMoreElements()) {\n\t\t\t\t\t\tlist.add(((ZipEntry) entries.nextElement()).getName());\n\t\t\t\t\t}\n\t\t\t\t\tcandidates = new String[list.size()];\n\t\t\t\t\tfor (int i = 0; i < candidates.length; i++) {\n\t\t\t\t\t\tcandidates[i] = list.get(i);\n\t\t\t\t\t}\n\t\t\t\t\tzf.close();\n\t\t\t\t} catch (IOException ex) {\n\t\t\t\t\tcandidates = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (candidates != null) {\n\t\t\t\tfor (int i = 0; i < candidates.length; i++) {\n\t\t\t\t\tString fileName = candidates[i];\n\t\t\t\t\tif (fileName.endsWith(\".class\")) {\n\t\t\t\t\t\tString className = fileName.substring(0,\n\t\t\t\t\t\t\t\tfileName.lastIndexOf(\".class\"));\n\t\t\t\t\t\tif (className.indexOf(\"/\") == -1\n\t\t\t\t\t\t\t\t&& JTFTools.checkIfLoaded(className)) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tClass<?> karelClass = Class\n\t\t\t\t\t\t\t\t\t\t.forName(\"stanford.karel.Karel\");\n\t\t\t\t\t\t\t\tClass<?> c = Class.forName(className);\n\t\t\t\t\t\t\t\tif (karelClass.isAssignableFrom(c)) {\n\t\t\t\t\t\t\t\t\tresult = className;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} catch (Exception ex) {\n\t\t\t\t\t\t\t\t/* Empty */\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tpublic static void main(String[] args) {\n\t\tGuiUtils.setSystemLookAndFeel();\n\t\tArrayList<String> argList = new ArrayList<String>();\n\t\tboolean codeFlag = false;\n\t\tfor (int i = 0; i < args.length; i++) {\n\t\t\targList.add(args[i]);\n\t\t\tif (args[i].startsWith(\"code=\"))\n\t\t\t\tcodeFlag = true;\n\t\t}\n\t\tif (!codeFlag) {\n\t\t\tString className = getMainClassName();\n\t\t\tif (className.endsWith(\".class\")) {\n\t\t\t\tclassName = className.substring(0, className.length() - 6);\n\t\t\t}\n\t\t\tclassName = className.replace('/', '.');\n\t\t\targList.add(\"code=\" + className);\n\t\t}\n\t\targList.add(\"program=stanford.karel.KarelProgram\");\n\t\tString[] argArray = new String[argList.size()];\n\t\tfor (int i = 0; i < argArray.length; i++) {\n\t\t\targArray[i] = argList.get(i);\n\t\t}\n\t\tKarelProgram.main(argArray);\n\t}\n\t\n\tprivate static boolean nameAppears(String name, String[] array) {\n\t\tfor (int i = 0; i < array.length; i++) {\n\t\t\tif (array[i].equals(name))\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/karel/KarelBugIcon.java",
    "content": "package stanford.karel;\n\nimport java.awt.Graphics;\nimport java.awt.Image;\n\nimport javax.swing.JComponent;\n\nimport acm.util.MediaTools;\n\nclass KarelBugIcon extends JComponent {\n\tpublic KarelBugIcon() {\n\t\timage = MediaTools.createImage(KAREL_BUG_IMAGE);\n\t\timage = MediaTools.loadImage(image);\n\t\tsetOpaque(false);\n\t}\n\n\tpublic void paintComponent(Graphics g) {\n\t\tsuper.paintComponent(g);\n\t\tg.drawImage(image, 0, 0, this);\n\t}\n\n\tprivate String[] KAREL_BUG_IMAGE = {\n\t\t\t\"47494638396146005400910000FFFFFFFFCBFF77777700000021F90401000001\",\n\t\t\t\"002C00000000460054004102FF8C8F19C3ED0FA374AADA3B80DE5BF82F70E238\",\n\t\t\t\"8220305CEA9195E62782C8DB76E198AE4ACD79839778093DB61B6993D32178C5\",\n\t\t\t\"A19308781D4549A5A106D3540DCEE8B07522552790690FDA0C6BBA6BE838B233\",\n\t\t\t\"4F6F1010230B3369AD15A6FC0F88C337B82241788868416698D817F808B8D5E8\",\n\t\t\t\"67E302A422544975888527C0259546D366244848E975E2F904846A3AE8C7CA4A\",\n\t\t\t\"9A97257668CB41F671F7F5C386B4B4D810588A1663B4EA89220C1107F9578A5C\",\n\t\t\t\"14DCC8028D7D24696D35ECCCBD942DCE0C7E3D7EBE7D3A67FCC1A7A749CEB9FE\",\n\t\t\t\"4E6A31045F0D4BED951A9A0A6AA293B47C7C6285F8055096AD5FC75E153CE224\",\n\t\t\t\"80427A72D2A9A03451E18240FF163140CCA8A65FAE5BEACEF850304BE1948E8A\",\n\t\t\t\"526D4249EF1EC39004BD35FC085254A63D2CBCB93A63925D4652F116C049F0B3\",\n\t\t\t\"075012B6D07479F32DDC39A254F1A181FAC0D154683759EA48BAD58CD772488F\",\n\t\t\t\"923DDBC72CDAB5577C36606BCDEDDBB360C3F2A46BF7D1D86E7921ED2D6486A2\",\n\t\t\t\"383D7F5B7EECC54BEECC778591AE43766985BF5C8DAFCC53D3CEDE4E7E2FF531\",\n\t\t\t\"DDDC0FE6CE9145F91255594FE2A87D9D1FD26AA3DA9FC8D52E497AD67409E428\",\n\t\t\t\"D2BAE44D43981075BF8ABE21BF08CE86B743D3963281AC5B5A09C677BA3F6D8C\",\n\t\t\t\"543C68F5D91CB36BCF49EBE672E99FAB8798B5D2BB09D1F7D2E06BCD7CB8A427\",\n\t\t\t\"E17D88D4E69B7285D1E0E14B8F279D4E185D00D35B4F8B28579E3298D157934F\",\n\t\t\t\"80C4D41E836160B5C883C7C8321B757434334C31262588213F14CE2555344B59\",\n\t\t\t\"4295730771488163D888D7063CED8DC8C0336135E5143B0D4665CE39170EC459\",\n\t\t\t\"8C7719C5A3657D05C65A74F11DE9826D8840C7E49089407964658A2886252370\",\n\t\t\t\"61A0D6966469E9E5975D86C90D96649EA2D899B0A4A966376CAA50000021FF0B\",\n\t\t\t\"4D414347436F6E2004031039000000015772697474656E20627920474946436F\",\n\t\t\t\"6E76657274657220322E342E33206F66204D6F6E6461792C204D61792032352C\",\n\t\t\t\"2031393938003B\" };\n\n\tprivate Image image;\n\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/karel/KarelControlPanel.java",
    "content": "/*\n * This class implements Karel's control panel.\n * \n * @author Marty Stepp (based on Eric Roberts version)\n * @version 2018/10/02\n * - added focusStartButton method so you can press Enter to run\n * @version 2015/06/20\n * - fixed bugs in Reset button\n * @version 2015/04/02\n * - enables/disables buttons when program is running\n * @version 2015/03/31\n * - commented out unused constants\n * - changed to use Swing graphical components\n * - changed speed bar to allow for slower speeds (500ms and 1000ms delay)\n * - added mnemonics on main control panel buttons\n */\n\npackage stanford.karel;\n\nimport java.awt.Component;\nimport java.awt.Dimension;\nimport java.awt.FileDialog;\nimport java.awt.Label;\nimport java.awt.Point;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.awt.event.AdjustmentEvent;\nimport java.awt.event.AdjustmentListener;\nimport java.util.*;\nimport javax.swing.JButton;\nimport javax.swing.JComponent;\nimport javax.swing.JSlider;\nimport javax.swing.event.ChangeEvent;\nimport javax.swing.event.ChangeListener;\nimport acm.util.JTFTools;\n\n@SuppressWarnings(\"deprecation\")\npublic class KarelControlPanel extends CardPanel implements KarelWorldMonitor,\n\t\tActionListener, AdjustmentListener, ChangeListener, Observer {\n\n\t/* Private state */\n\tprivate static final double SPEED_SCALE_FACTOR = 100.0;\n\tprivate static final int BUTTON_WIDTH = 100;\n\tprivate static final int BUTTON_HEIGHT = 18;\n\tprivate static final int BUTTON_SEP = 8;\n\tprivate static final int SMALL_BUTTON_WIDTH = 60;\n\tprivate static final int GAP = 5;\n\tprivate static final double SLOW_DELAY = 200.0;\n\tprivate static final double FAST_DELAY = 0.0;\n\n\tprivate KarelProgram program;\n\tprivate KarelWorld world;\n\tprivate KarelWorldEditor editor;\n\tprivate KarelResizer resizer;\n\tprivate JComponent buttonPanel;\n\tprivate JComponent editorPanel;\n\tprivate JComponent resizePanel;\n\tprivate JButton startButton;\n\tprivate JButton resetButton;\n\tprivate JButton loadWorldButton;\n\tprivate JButton newWorldButton;\n\tprivate JButton editWorldButton;\n\tprivate JButton saveWorldButton;\n\tprivate JButton dontSaveButton;\n\tprivate JButton okButton;\n\tprivate JButton cancelButton;\n\tprivate JSlider speedBar;\n\tprivate double speed;\n\n\tpublic KarelControlPanel(KarelProgram program) {\n\t\tthis.program = program;\n\t\tprogram.StateEvent.add(this);\n\t\tworld = program.getWorld();\n\t\teditor = createEditor();\n\t\tresizer = createResizer();\n\t\teditorPanel = createEditorPanel();\n\t\tadd(\"editor\", editorPanel);\n\t\tresizePanel = createResizePanel();\n\t\tadd(\"resize\", resizePanel);\n\t\tbuttonPanel = createButtonPanel();\n\t\tadd(\"buttons\", buttonPanel);\n\t\tsetView(\"buttons\");\n\t\tsetSpeed(0);\n\t}\n\n\tpublic KarelWorld getWorld() {\n\t\treturn world;\n\t}\n\n\tpublic KarelProgram getProgram() {\n\t\treturn program;\n\t}\n\n\tpublic KarelWorldEditor getEditor() {\n\t\treturn editor;\n\t}\n\n\tpublic KarelResizer getResizer() {\n\t\treturn resizer;\n\t}\n\n\tpublic Dimension getPreferredSize() {\n\t\treturn new Dimension(250, 1);\n\t}\n\n\t/*\n\t * This action is invoked at the beginning of an editing session.\n\t */\n\tpublic void startWorldEdit() {\n\t}\n\n\t/**\n\t * This action is invoked at the end of an editing session.\n\t */\n\tpublic void endWorldEdit() {\n\t}\n\n\t/**\n\t * This action is invoked when the mouse is clicked on a wall, which is the\n\t * wall in the indicated direction from the Karel coordinates given by pt.\n\t */\n\tpublic void wallAction(Point pt, int dir) {\n\t\teditor.wallAction(pt, dir);\n\t}\n\n\t/**\n\t * This action is invoked when the mouse is clicked on a corner, which is\n\t * the wall in the indicated direction from the given point.\n\t */\n\tpublic void cornerAction(Point pt) {\n\t\teditor.cornerAction(pt);\n\t}\n\n\t/**\n\t * This action is invoked when karel executes an instruction\n\t */\n\tpublic void trace() {\n\t\tdouble delay;\n\t\tif (speed == -2.0) {\n\t\t\tdelay = 1000;\n\t\t} else if (speed == -1.0) {\n\t\t\tdelay = 500;\n\t\t} else {\n\t\t\tdelay = SLOW_DELAY + Math.sqrt(speed) * (FAST_DELAY - SLOW_DELAY);\n\t\t}\n\t\tif (speed < 0.98)\n\t\t\tJTFTools.pause(delay);\n\t}\n\n\t/**\n\t * This method is invoked when a world map file needs to set the simulation\n\t * speed (between 0 and 100).\n\t */\n\tpublic void setSpeed(double speed) {\n\t\tthis.speed = speed;\n\t\t// 0-100 range (=> 200-0ms delay)\n\t\tint value = (int) Math.round(SPEED_SCALE_FACTOR * speed);\n\t\tspeedBar.setValue(value + 20);\n\t}\n\n\t/**\n\t * This method is invoked when the KarelWorld class needs to get the\n\t * simulation speed.\n\t */\n\tpublic double getSpeed() {\n\t\treturn speed;\n\t}\n\n\tprotected KarelWorldEditor createEditor() {\n\t\treturn new KarelWorldEditor(getWorld());\n\t}\n\n\tprotected JComponent createEditorPanel() {\n\t\tVPanel vbox = new VPanel();\n\t\tvbox.add(\"\", editor);\n\t\tsaveWorldButton = new JButton(\"Save World\");\n\t\tsaveWorldButton.setMnemonic('S');\n\t\tsaveWorldButton.addActionListener(this);\n\t\tvbox.add(\"/width:\" + BUTTON_WIDTH + \"/height:\" + BUTTON_HEIGHT\n\t\t\t\t+ \"/top:\" + BUTTON_SEP, saveWorldButton);\n\t\tdontSaveButton = new JButton(\"Don't Save\");\n\t\tdontSaveButton.setMnemonic('D');\n\t\tdontSaveButton.addActionListener(this);\n\t\tvbox.add(\"/width:\" + BUTTON_WIDTH + \"/height:\" + BUTTON_HEIGHT\n\t\t\t\t+ \"/top:\" + BUTTON_SEP, dontSaveButton);\n\t\treturn vbox;\n\t}\n\n\tprotected JComponent createButtonPanel() {\n\t\tVPanel vPanel = new VPanel();\n\t\tstartButton = new JButton(\"Start Program\");\n\t\tstartButton.setMnemonic('S');\n\t\tstartButton.addActionListener(this);\n\t\tresetButton = new JButton(\"Reset Program\");\n\t\tresetButton.setMnemonic('R');\n\t\tresetButton.addActionListener(this);\n\t\tloadWorldButton = new JButton(\"Load World\");\n\t\tloadWorldButton.setMnemonic('L');\n\t\tloadWorldButton.addActionListener(this);\n\t\tnewWorldButton = new JButton(\"New World\");\n\t\tnewWorldButton.setMnemonic('N');\n\t\tnewWorldButton.addActionListener(this);\n\t\teditWorldButton = new JButton(\"Edit World\");\n\t\teditWorldButton.setMnemonic('E');\n\t\teditWorldButton.addActionListener(this);\n\n\t\tJButton[] buttons = { startButton, /* resetButton, */ loadWorldButton,\n\t\t\t\tnewWorldButton, editWorldButton };\n\t\tint maxWidth = 0;\n\t\tfor (JButton button : buttons) {\n\t\t\tmaxWidth = Math.max(maxWidth, button.getPreferredSize().width);\n\t\t}\n\t\tfor (JButton button : buttons) {\n\t\t\tbutton.setPreferredSize(new Dimension(maxWidth, button\n\t\t\t\t\t.getPreferredSize().height));\n\t\t\tbutton.setMinimumSize(new Dimension(maxWidth, button\n\t\t\t\t\t.getPreferredSize().height));\n\t\t}\n\t\tvPanel.add(\"/center/width:100/height:18\", startButton);\n\t\tvPanel.add(\"/center/width:100/height:18/top:8\", resetButton);\n\t\tvPanel.add(\"/center/width:100/height:18/top:8\", loadWorldButton);\n\t\tvPanel.add(\"/center/width:100/height:18/top:8\", newWorldButton);\n\t\tvPanel.add(\"/center/width:100/height:18/top:8\", editWorldButton);\n\n\t\tHPanel hPanel = new HPanel();\n\t\tspeedBar = new JSlider(JSlider.HORIZONTAL);\n\t\tspeedBar.addChangeListener(this);\n\t\tspeedBar.setMaximum(0);\n\t\tspeedBar.setMaximum(120);\n\t\tspeedBar.setValue(20);\n\t\tspeedBar.setMajorTickSpacing(60);\n\t\tspeedBar.setMinorTickSpacing(10);\n\t\tspeedBar.setSnapToTicks(true);\n\t\tspeedBar.setPaintTicks(true);\n\t\tspeedBar.setPaintTrack(true);\n\n\t\thPanel.add(\"/center\", new Label(\"Slow \"));\n\t\thPanel.add(\"/center/width:100\", speedBar);\n\t\thPanel.add(\"/center\", new Label(\" Fast\"));\n\t\tvPanel.add(\"/center/top:8\", hPanel);\n\t\t\n\t\treturn vPanel;\n\t}\n\t\n\tpublic void focusStartButton() {\n\t\tstartButton.requestFocus();\n\t}\n\n\tprotected JComponent createResizePanel() {\n\t\tVPanel vbox = new VPanel();\n\t\tcancelButton = new JButton(\"Cancel\");\n\t\tcancelButton.addActionListener(this);\n\t\tokButton = new JButton(\"OK\");\n\t\tokButton.addActionListener(this);\n\t\tvbox.add(\"\", getResizer());\n\t\tvbox.add(\"/center/width:\" + SMALL_BUTTON_WIDTH + \"/space:\" + GAP,\n\t\t\t\tokButton);\n\t\tvbox.add(\"/center/width:\" + SMALL_BUTTON_WIDTH + \"/space:\" + GAP,\n\t\t\t\tcancelButton);\n\t\treturn vbox;\n\t}\n\n\tprotected KarelResizer createResizer() {\n\t\treturn new KarelResizer();\n\t}\n\n\t/* ActionListener interface */\n\tpublic void actionPerformed(ActionEvent e) {\n\t\tComponent source = (Component) e.getSource();\n\t\tif (source == startButton) {\n\t\t\tprogram.setStatus(\"Running ...\");\n\t\t\tprogram.signalStarted();\n\t\t} else if (source == resetButton) {\n\t\t\tString filePath = world.getPathName();\n\t\t\tif (filePath == null) {\n\t\t\t\tprogram.loadInitialWorld();\n\t\t\t} else {\n\t\t\t\tworld.load(filePath);\n\t\t\t}\n\t\t\tprogram.setStatus(\"Reset to initial state.\");\n\t\t} else if (source == loadWorldButton) {\n\t\t\tFileDialog dialog = new LoadWorldDialog(world);\n\t\t\tdialog.setVisible(true);\n\t\t\tString fileName = dialog.getFile();\n\t\t\tif (fileName != null) {\n\t\t\t\tworld.load(dialog.getDirectory() + \"/\" + fileName);\n\t\t\t\tprogram.setStatus(\"Loaded world from \" + fileName + \".\");\n\t\t\t}\n\t\t} else if (source == newWorldButton) {\n\t\t\tsetView(\"resize\");\n\t\t} else if (source == editWorldButton) {\n\t\t\tworld.setEditMode(true);\n\t\t\teditor.initEditorCanvas();\n\t\t\tsetView(\"editor\");\n\t\t} else if (source == saveWorldButton) {\n\t\t\tif (world.getPathname() == null) {\n\t\t\t\tFileDialog dialog = new NewWorldDialog(world);\n\t\t\t\tdialog.setVisible(true);\n\t\t\t\tString fileName = dialog.getFile();\n\t\t\t\tif (fileName != null) {\n\t\t\t\t\tworld.setPathName(dialog.getDirectory() + \"/\" + fileName);\n\t\t\t\t\tprogram.setStatus(\"Saved world to \" + fileName + \".\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tworld.save();\n\t\t\tworld.setEditMode(false);\n\t\t\tsetView(\"buttons\");\n\t\t} else if (source == dontSaveButton) {\n\t\t\tworld.setEditMode(false);\n\t\t\tsetView(\"buttons\");\n\t\t} else if (source == cancelButton) {\n\t\t\tsetView(\"buttons\");\n\t\t} else if (source == okButton) {\n\t\t\tFileDialog dialog = new NewWorldDialog(world);\n\t\t\tdialog.setVisible(true);\n\t\t\tString fileName = dialog.getFile();\n\t\t\tif (fileName == null) {\n\t\t\t\tsetView(\"buttons\");\n\t\t\t} else {\n\t\t\t\tworld.init(resizer.getColumns(), resizer.getRows());\n\t\t\t\tworld.setPathName(dialog.getDirectory() + \"/\" + fileName);\n\t\t\t\tworld.setEditMode(true);\n\t\t\t\tif (world.getKarelCount() == 1) {\n\t\t\t\t\tKarel karel = world.getKarel();\n\t\t\t\t\tkarel.setLocation(1, 1);\n\t\t\t\t\tkarel.setDirection(KarelWorld.EAST);\n\t\t\t\t\tkarel.setBeepersInBag(KarelWorld.INFINITE);\n\t\t\t\t\tworld.repaint();\n\t\t\t\t}\n\t\t\t\teditor.initEditorCanvas();\n\t\t\t\tsetView(\"editor\");\n\t\t\t}\n\t\t}\n\t\tdoEnabling();\n\t}\n\n\tprivate void doEnabling() {\n\t}\n\n\t/* AdjustmentListener interface */\n\tpublic void adjustmentValueChanged(AdjustmentEvent e) {\n\t\tComponent source = (Component) e.getSource();\n\t\tif (source == speedBar) {\n\t\t\tupdateSpeed();\n\t\t}\n\t}\n\n\tpublic void stateChanged(ChangeEvent e) {\n\t\tComponent source = (Component) e.getSource();\n\t\tif (source == speedBar) {\n\t\t\tupdateSpeed();\n\t\t}\n\t}\n\n\tpublic void update(Observable obs, Object arg) {\n\t\tboolean running = arg == KarelProgram.State.RUNNING;\n\t\tstartButton.setEnabled(!running);\n\t\tresetButton.setEnabled(!running);\n\t\tloadWorldButton.setEnabled(!running);\n\t\tnewWorldButton.setEnabled(!running);\n\t\teditWorldButton.setEnabled(!running);\n\t}\n\n\tprivate void updateSpeed() {\n\t\tint value = speedBar.getValue();\n\t\tif (value == 0) {\n\t\t\tspeed = -2.0;\n\t\t} else if (value == 10) {\n\t\t\tspeed = -1.0;\n\t\t} else {\n\t\t\t// from 0-100, div by 100; means 0-1\n\t\t\tspeed = (value - 20) / SPEED_SCALE_FACTOR;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/karel/KarelDirection.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2017/04/05\n * - initial version\n */\n\npackage stanford.karel;\n\n/**\n * An enum internally used to keep track of Karel directions.\n */\npublic enum KarelDirection {\n\tNORTH, EAST, SOUTH, WEST;\n\t\n\t/**\n\t * Converts an int like KarelWorld.NORTH into a KarelDirection.\n\t */\n\tpublic static KarelDirection valueOf(int dir) {\n\t\treturn KarelDirection.valueOf(KarelWorld.directionName(dir));\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/karel/KarelErrorCanvas.java",
    "content": "package stanford.karel;\n\nimport java.awt.BorderLayout;\nimport java.awt.Dimension;\nimport java.awt.Font;\n\nimport javax.swing.BorderFactory;\nimport javax.swing.JLabel;\nimport javax.swing.JPanel;\nimport javax.swing.JScrollPane;\nimport javax.swing.JTextArea;\n\nclass KarelErrorCanvas extends JPanel {\n\n\tprivate JLabel errorLabel;\n\tprivate JTextArea stackTraceArea;\n\t\n\tpublic KarelErrorCanvas(KarelErrorDialog dialog) {\n\t\tsetLayout(new BorderLayout(10, 10));\n\t\tsetBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));\n\t\tsetOpaque(false);\n\t\t\n\t\terrorLabel = new JLabel(\"\");\n\t\tFont oldFont = errorLabel.getFont();\n\t\terrorLabel.setFont(oldFont.deriveFont(Font.BOLD, oldFont.getSize() + 2));\n\t\terrorLabel.addKeyListener(dialog);\n\t\t\n\t\tstackTraceArea = new JTextArea(8, 50);\n\t\tstackTraceArea.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 13));\n\t\tstackTraceArea.setBorder(null);\n\t\tstackTraceArea.setEditable(false);\n\t\t// stackTraceArea.setFocusable(false);\n\t\tstackTraceArea.setBackground(KarelErrorDialog.DIALOG_BGCOLOR);\n\t\tstackTraceArea.addKeyListener(dialog);\n\t\t\n\t\t// layout\n\t\tadd(errorLabel, BorderLayout.NORTH);\n\t\tJScrollPane scroll = new JScrollPane(stackTraceArea);\n\t\tscroll.setBorder(null);\n\t\tscroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);\n\t\tscroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);\n\t\tadd(scroll, BorderLayout.CENTER);\n\t\tsetPreferredSize(new Dimension(getPreferredSize().width + 5, getPreferredSize().height + 20));\n\t}\n\n\tpublic void setText(String msg) {\n\t\terrorLabel.setText(\"Error: \" + msg);\n\t}\n\t\n\tpublic void setStackTrace(String stackTrace) {\n\t\tString[] lines = stackTrace.split(\"\\n\");\n\t\tString stackTraceOut = \"\";\n\t\tfor (String line : lines) {\n\t\t\t// skip some lines\n\t\t\tif (line.contains(\"at stanford.\")) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (line.contains(\"at acm.\")) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tline = line.replaceAll(\"\\\\([A-Za-z0-9_$]+.java:([0-9]+)\\\\)\", \"(), line $1\");\n\t\t\tline = line.replaceAll(\"[ \\t]+at \", \"\");\n\t\t\tif (line.contains(\"Exception: \")) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tstackTraceOut += line + \"\\n\";\n\t\t}\n\t\t\n\t\tif (!stackTraceOut.isEmpty()) {\n\t\t\tstackTraceOut = stackTraceOut.trim();\n\t\t}\n\t\tstackTraceArea.setText(stackTraceOut);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/karel/KarelErrorDialog.java",
    "content": "package stanford.karel;\n\nimport java.awt.BorderLayout;\nimport java.awt.Color;\nimport java.awt.Component;\nimport java.awt.Font;\nimport java.awt.Frame;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.awt.event.KeyEvent;\nimport java.awt.event.KeyListener;\nimport java.awt.event.WindowEvent;\nimport java.awt.event.WindowListener;\nimport java.io.ByteArrayOutputStream;\nimport java.io.PrintStream;\n\nimport javax.swing.JButton;\nimport javax.swing.JDialog;\n\nimport acm.util.JTFTools;\n\n/* Private class: KarelErrorDialog */\n/**\n * The <code>KarelErrorDialog</code> class is used to display error messages in\n * Karel's world.\n */\nclass KarelErrorDialog extends JDialog implements WindowListener,\n\t\tActionListener, KeyListener {\n\n\tprivate Frame parent;\n\n\tpublic KarelErrorDialog(KarelProgram program) {\n\t\tsuper(JTFTools.getEnclosingFrame(program.getWorld()), true);\n\t\tparent = JTFTools.getEnclosingFrame(program.getWorld());\n\t\tsetLayout(new BorderLayout(10, 10));\n\t\tinit();\n\t}\n\n\tpublic KarelErrorDialog(KarelWorld world) {\n\t\tsuper(JTFTools.getEnclosingFrame(world), true);\n\t\tparent = JTFTools.getEnclosingFrame(world);\n\t\tsetLayout(new BorderLayout(10, 10));\n\t\tinit();\n\t}\n\n\tprivate void init() {\n\t\tsetSize(DIALOG_WIDTH, DIALOG_HEIGHT);\n\t\tsetFont(DIALOG_FONT);\n\t\tsetBackground(DIALOG_BGCOLOR);\n\t\tsetResizable(false);\n\t\taddWindowListener(this);\n\t\tsetLayout(new BorderLayout());\n\t\tHPanel hbox = new HPanel();\n\t\thbox.setBackground(DIALOG_BGCOLOR);\n\t\tVPanel vbox = new VPanel();\n\t\tvbox.setBackground(DIALOG_BGCOLOR);\n\t\tbugIcon = new KarelBugIcon();\n\t\tokButton = new JButton(\"OK\");\n\t\tokButton.addActionListener(this);\n\t\tokButton.setMnemonic('O');\n\t\terrorDisplay = new KarelErrorCanvas(this);\n\t\terrorDisplay.setFont(DIALOG_FONT);\n\t\thbox.add(\"/width:\" + LOGO_WIDTH + \"/height:\" + LOGO_HEIGHT, bugIcon);\n\t\thbox.add(\"/stretch:both\", errorDisplay);\n\t\tvbox.add(\"/stretch:both\", hbox);\n\t\tvbox.add(\"/top:3/bottom:3/width:\" + BUTTON_WIDTH + \"/center\", okButton);\n\t\tadd(BorderLayout.CENTER, vbox);\n\t\t\n\t\tokButton.addKeyListener(this);\n\t\terrorDisplay.addKeyListener(this);\n\t\taddKeyListener(this);\n\t\t\n\t\tvalidate();\n\t\tpack();\n\t\t\n\t\t// center with respect to parent\n\t\tint centerX = (int) ((parent.getX() + parent.getWidth()  / 2) - DIALOG_WIDTH  / 2);\n\t\tint centerY = (int) ((parent.getY() + parent.getHeight() / 2) - DIALOG_HEIGHT / 2);\n\t\tsetLocation(centerX, centerY);\n\t\t\n\t\tokButton.requestFocus();\n\t}\n\n\tpublic void error(String msg) {\n\t\terror(msg, \"\");\n\t}\n\t\n\tpublic void error(String msg, String stackTrace) {\n\t\terrorDisplay.setText(msg);\n\t\terrorDisplay.setStackTrace(stackTrace);\n\t\tsetVisible(true);\n\t}\n\t\n\tpublic void error(Throwable throwable) {\n\t\tString errorMessage = throwable.getMessage();\n\t\tif (errorMessage == null || errorMessage.isEmpty()) {\n\t\t\terrorMessage = \"\";\n\t\t\tif (throwable instanceof StackOverflowError) {\n\t\t\t\terrorMessage = \"Infinite method calls.\";\n\t\t\t}\n\t\t}\n\t\twhile (!errorMessage.endsWith(\"\\n\\n\")) {\n\t\t\terrorMessage += \"\\n\";\n\t\t}\n\t\tByteArrayOutputStream bytes = new ByteArrayOutputStream();\n\t\tPrintStream out = new PrintStream(bytes);\n\t\tthrowable.printStackTrace(out);\n\t\tString stackTrace = bytes.toString();\n\t\terror(errorMessage, stackTrace);\n\t}\n\n\t/* WindowListener interface */\n\n\tpublic void windowClosing(WindowEvent e) {\n\t\tsetVisible(false);\n\t}\n\n\tpublic void windowOpened(WindowEvent e) {\n\t\t// empty\n\t}\n\n\tpublic void windowClosed(WindowEvent e) {\n\t\t// empty\n\t}\n\n\tpublic void windowIconified(WindowEvent e) {\n\t\t// empty\n\t}\n\n\tpublic void windowDeiconified(WindowEvent e) {\n\t\t// empty\n\t}\n\n\tpublic void windowActivated(WindowEvent e) {\n\t\t// empty\n\t}\n\n\tpublic void windowDeactivated(WindowEvent e) {\n\t\t// empty\n\t}\n\n\t/* ActionListener interface */\n\n\tpublic void actionPerformed(ActionEvent e) {\n\t\tComponent source = (Component) e.getSource();\n\t\tif (source == okButton) {\n\t\t\twindowClosing(null);\n\t\t}\n\t}\n\n\t/* Private constants */\n\n\tprivate static final int DIALOG_WIDTH = 630;\n\tprivate static final int DIALOG_HEIGHT = 370;\n\tprivate static final int LOGO_WIDTH = 100;\n\tprivate static final int LOGO_HEIGHT = 100;\n\tprivate static final int BUTTON_WIDTH = 60;\n\tprivate static final Font DIALOG_FONT = new Font(\"SansSerif\", Font.PLAIN, 12);\n\tpublic static final Color DIALOG_BGCOLOR = new Color(255, 128, 128);   // Color.RED;\n\n\t/* Private state */\n\n\tprivate KarelBugIcon bugIcon;\n\tprivate JButton okButton;\n\tprivate KarelErrorCanvas errorDisplay;\n\n\t/* KeyListener interface */\n\t\n\tpublic void keyPressed(KeyEvent event) {\n\t\tint code = event.getKeyCode();\n\t\tif (code == KeyEvent.VK_ESCAPE || code == KeyEvent.VK_ENTER || code == KeyEvent.VK_SPACE) {\n\t\t\tokButton.doClick();\n\t\t}\n\t}\n\n\tpublic void keyReleased(KeyEvent event) {\n\t\t// empty\n\t}\n\n\tpublic void keyTyped(KeyEvent event) {\n\t\t// empty\n\t}\n\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/karel/KarelInterface.java",
    "content": "package stanford.karel;\n\nimport java.awt.*;\n\n/**\n * An interface to represent Karel objects.\n * Used to present a common supertype between Karel and HeadlessKarel.\n */\npublic interface KarelInterface {\n\tpublic int getDirection();\n\tpublic int getBeepersInBag();\n\tpublic KarelWorld getWorld();\n\tpublic Point getLocation();\n\tpublic void pause(double ms);\n\tpublic void setBeepersInBag(int beepers);\n\tpublic void setDirection(int dir);\n\tpublic void setLocation(int x, int y);\n\tpublic void setLocation(Point pt);\n\tpublic void setWorld(KarelWorld world);\n\n\tpublic void run();\n\n\tpublic void move();\n\tpublic void turnLeft();\n\tpublic void pickBeeper();\n\tpublic void putBeeper();\n\tpublic boolean frontIsClear();\n\tpublic boolean frontIsBlocked();\n\tpublic boolean leftIsClear();\n\tpublic boolean leftIsBlocked();\n\tpublic boolean rightIsClear();\n\tpublic boolean rightIsBlocked();\n\tpublic boolean beepersPresent();\n\tpublic boolean noBeepersPresent();\n\tpublic boolean beepersInBag();\n\tpublic boolean noBeepersInBag();\n\tpublic boolean facingNorth();\n\tpublic boolean facingEast();\n\tpublic boolean facingSouth();\n\tpublic boolean facingWest();\n\tpublic boolean notFacingNorth();\n\tpublic boolean notFacingEast();\n\tpublic boolean notFacingSouth();\n\tpublic boolean notFacingWest();\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/karel/KarelProgram.java",
    "content": "/*\n * This file implements the KarelProgram class.\n * \n * @author Marty Stepp (based on Eric Roberts version)\n * @version 2018/10/02\n * - focus Start button so you can press Enter to run\n * @version 2016/06/01\n * - refactored augmentMenuBar logic into ProgramMenuBar class and menuAction method\n * - new \"Interactive Mode\" checkbox for keyboard Karel controls\n * @version 2015/04/05\n * - added \"Options\" menu bar for Ms. Karel mode\n * @version 2015/04/01\n * - improved scrollbar appearance in error dialogs\n * - added \"About\" menu bar\n * @version 2015/03/31\n * - commented out unused field 'program'\n * - changed to use Swing graphical components\n * - improved error dialog to display program stack trace\n * - added setStatus method to display program state\n */\n\npackage stanford.karel;\n\nimport acm.program.*;\nimport stanford.cs106.util.ExceptionUtils;\n\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.io.*;\nimport java.net.*;\nimport java.util.*;\nimport javax.swing.*;\n\n/**\n * This class is a subclass of <code><a href=\"Program.html\">Program</a></code>\n * that runs a Karel program.\n */\npublic class KarelProgram extends Program {\n\t/** Directory where *.w Karel world files are found. */\n\tpublic static final String WORLDS_DIRECTORY = \"worlds\";\n\t\n\t/** File extension for Karel worlds. */\n\tpublic static final String WORLD_EXTENSION = \".w\";\n\t\n\tpublic static final int NORTH = KarelWorld.NORTH;\n\tpublic static final int EAST = KarelWorld.EAST;\n\tpublic static final int SOUTH = KarelWorld.SOUTH;\n\tpublic static final int WEST = KarelWorld.WEST;\n\n\tpublic static final int INFINITE = KarelWorld.INFINITE;\n\n\tpublic static final int SIMPLE = KarelWorld.SIMPLE;\n\tpublic static final int FANCY = KarelWorld.FANCY;\n\n\tpublic static final Color BLACK = Color.BLACK;\n\tpublic static final Color BLUE = Color.BLUE;\n\tpublic static final Color CYAN = Color.CYAN;\n\tpublic static final Color DARK_GRAY = Color.DARK_GRAY;\n\tpublic static final Color GRAY = Color.GRAY;\n\tpublic static final Color GREEN = Color.GREEN;\n\tprivate static final Color DARK_YELLOW = Color.YELLOW.darker().darker().darker();\n\tprivate static final Color DARK_GREEN = Color.GREEN.darker().darker();\n\tprivate static final Color DARK_RED = Color.RED.darker();\n\t// private static final Color DARK_BLUE = Color.BLUE.darker();\n\tpublic static final Color LIGHT_GRAY = Color.LIGHT_GRAY;\n\tpublic static final Color MAGENTA = Color.MAGENTA;\n\tpublic static final Color ORANGE = Color.ORANGE;\n\tpublic static final Color PINK = Color.PINK;\n\tpublic static final Color RED = Color.RED;\n\tpublic static final Color WHITE = Color.WHITE;\n\tpublic static final Color YELLOW = Color.YELLOW;\n\t\n\t/* Private state */\n\tprivate KarelWorld world;\n\tprivate KarelControlPanel controlPanel;\n\tprivate KarelErrorDialog errorDialog;\n\tprivate JLabel statusLabel;\n\tprivate boolean started;\n\t\n\tpublic static enum State { RUNNING, STOPPED, ERROR };\n\tpublic Event<State> StateEvent = new Event<State>(\"StateEvent\");\n\n\t/**\n\t * Creates a new Karel program.\n\t */\n\tpublic KarelProgram() {\n\t\tworld = createWorld();\n\t\tworld.setRepaintFlag(false);\n\t\tworld.setDisplayFlag(false);\n\t\tworld.init(10, 10);\n\t\tJPanel panel = new JPanel();\n\t\tpanel.setLayout(new BorderLayout());\n\t\tpanel.add(BorderLayout.CENTER, world);\n\t\tcontrolPanel = new KarelControlPanel(this);\n\t\tworld.setMonitor(controlPanel);\n\t\tpanel.add(BorderLayout.WEST, controlPanel);\n\t\tadd(panel);\n\t\t\n\t\t// set up status label\n\t\tstatusLabel = new JLabel(\"Welcome to Karel!\");\n\t\tstatusLabel.setFont(statusLabel.getFont().deriveFont(Font.BOLD));\n\t\tadd(statusLabel, BorderLayout.SOUTH);\n\t\t\n\t\tvalidate();\n\t\t\n\t\tcontrolPanel.focusStartButton();\n\t}\n\n\t/**\n\t * Contains the code to be executed for each specific program subclass. If\n\t * you are defining your own <code>KarelProgram</code> class, you need to\n\t * override the definition of <code>main</code> so that it contains the code\n\t * for your application.\n\t */\n\n\tpublic void main() {\n\t\t/* Empty */\n\t}\n\t\n\tpublic void setStatus(String status) {\n\t\tif (status.contains(\"Running\")) {\n\t\t\tstatusLabel.setForeground(DARK_YELLOW);\n\t\t} else if (status.contains(\"due to an error\")) {\n\t\t\tstatusLabel.setForeground(DARK_RED);\n\t\t} else if (status.contains(\"Finished\")) {\n\t\t\tstatusLabel.setForeground(DARK_GREEN);\n\t\t} else {\n\t\t\t// put back to default label color\n\t\t\tstatusLabel.setForeground(new JLabel().getForeground());\n\t\t}\n\t\tstatusLabel.setText(status);\n\t}\n\n\t/**\n\t * Returns the <code>KarelWorld</code> object in which Karel lives.\n\t * \n\t * @return The <code>KarelWorld</code> object in which Karel lives\n\t */\n\tpublic KarelWorld getWorld() {\n\t\tif (world == null) {\n\t\t\tif (getStartupObject() instanceof Karel) {\n\t\t\t\tKarel karel = (Karel) getStartupObject();\n\t\t\t\tworld = karel.getWorld();\n\t\t\t}\n\t\t}\n\t\treturn world;\n\t}\n\t\n\tprotected void setWorld(KarelWorld world) {\n\t\tthis.world = world;\n\t}\n\n\t/**\n\t * Returns the default directory in which Karel's worlds live.\n\t * \n\t * @return The directory in which Karel's worlds lives\n\t */\n\tpublic static String getWorldDirectory() {\n\t\tString dir = System.getProperty(\"user.dir\");\n\t\tif (new File(dir, WORLDS_DIRECTORY).isDirectory()) {\n\t\t\tdir += File.separator + WORLDS_DIRECTORY;\n\t\t}\n\t\treturn dir;\n\t}\n\n\t/**\n\t * Creates the <code>KarelWorld</code> in which Karel lives. Subclasses can\n\t * override this method to create their own <code>KarelWorld</code> types.\n\t * \n\t * @return The <code>World</code> object in which Karel lives\n\t * @noshow student\n\t */\n\tprotected KarelWorld createWorld() {\n\t\treturn new KarelWorld();\n\t}\n\n\t/**\n\t * Checks to see whether this program has started.\n\t * \n\t * @noshow student\n\t */\n\tprotected boolean isStarted() {\n\t\tif (world == null || !super.isStarted())\n\t\t\treturn false;\n\t\tDimension size = world.getSize();\n\t\treturn (size != null) && (size.width != 0) && (size.height != 0);\n\t}\n\n\tprotected Karel getKarel() {\n\t\treturn getWorld().getKarel();\n\t}\n\n\tpublic void add(Karel karel) {\n\t\tadd(karel, 1, 1, KarelWorld.EAST, KarelWorld.INFINITE);\n\t}\n\n\tpublic void add(KarelInterface karel, int x, int y, int dir, int nBeepers) {\n\t\tkarel.setLocation(x, y);\n\t\tkarel.setDirection(dir);\n\t\tkarel.setBeepersInBag(nBeepers);\n\t\tworld.add(karel);\n\t}\n\n\t@SuppressWarnings(\"deprecation\")\n\t@Override\n\tpublic boolean menuAction(ActionEvent event) {\n\t\tString cmd = event.getActionCommand().intern();\n\t\tif (cmd == ProgramMenuBar.MENU_ITEM_TEXT_QUIT) {\n\t\t\tstop();\n\t\t\tdestroy();\n\t\t\tsetVisible(false);\n\t\t\tif (KarelProgram.this.isExitOnClose()) {\n\t\t\t\ttry {\n\t\t\t\t\tSystem.exit(0);\n\t\t\t\t} catch (Exception ex) {\n\t\t\t\t\t// empty\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} else if (cmd == ProgramMenuBar.MENU_ITEM_TEXT_MSKAREL) {\n\t\t\tJCheckBoxMenuItem item = (JCheckBoxMenuItem) event.getSource();\n\t\t\tgetWorld().setMsKarel(item.isSelected());\n\t\t\tsaveConfiguration();\n\t\t\treturn true;\n\t\t} else if (cmd == ProgramMenuBar.MENU_ITEM_TEXT_INTERACTIVE) {\n\t\t\tJCheckBoxMenuItem item = (JCheckBoxMenuItem) event.getSource();\n\t\t\tgetWorld().setInteractiveMode(item.isSelected());\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn super.menuAction(event);\n\t\t}\n\t}\n\t\n\t@Override\n\tprotected void loadConfiguration(Properties props) {\n\t\tif (props.containsKey(\"mskarel\")) {\n\t\t\tboolean msKarel = Boolean.parseBoolean(String.valueOf(props.get(\"mskarel\")));\n\t\t\tJCheckBoxMenuItem msKarelItem = getMenuBar().getMenuItem(\"Ms. Karel\");\n\t\t\tmsKarelItem.setSelected(msKarel);\n\t\t\tworld.setMsKarel(msKarel);\n\t\t}\n\t}\n\t\n\t@Override\n\tprotected void saveConfiguration(Properties props) {\n\t\tJCheckBoxMenuItem msKarelItem = getMenuBar().getMenuItem(ProgramMenuBar.MENU_ITEM_TEXT_MSKAREL);\n\t\tprops.put(\"mskarel\", String.valueOf(msKarelItem.isSelected()));\n\t}\n\t\n\tpublic void loadInitialWorld() {\n\t\tString karelClass = getParameter(\"karel\");\n\t\tif (karelClass == null) {\n\t\t\tKarel karel = (Karel) getStartupObject();\n\t\t\tkarelClass = karel.getClass().getName();\n\t\t\tkarelClass = karelClass.substring(karelClass.lastIndexOf(\".\") + 1);\n\t\t}\n\n\t\tString worldName = getParameter(\"world\");\n\t\tif (worldName == null)\n\t\t\tworldName = karelClass;\n\t\ttry {\n\t\t\t@SuppressWarnings(\"deprecation\")\n\t\t\tURL url = new URL(getCodeBase(), WORLDS_DIRECTORY + File.separator + worldName + WORLD_EXTENSION);\n\t\t\tURLConnection connection = url.openConnection();\n\t\t\tworld.load(new InputStreamReader(connection.getInputStream()));\n\t\t} catch (Exception ex) {\n\t\t\t/* Ignore this error */\n\t\t}\n\t}\n\n\t@SuppressWarnings(\"deprecation\")\n\tprotected void startRun() {\n\t\tif (!isAppletMode()) {\n\t\t\tloadConfiguration();\n\t\t}\n\t\t\n\t\tworld.requestFocus();\n\t\t\n\t\tKarelInterface karel = null;\n\t\tString karelClass = getParameter(\"karel\");\n\t\tif (karelClass == null) {\n\t\t\tkarel = (KarelInterface) getStartupObject();\n\t\t\tkarelClass = karel.getClass().getName();\n\t\t\tkarelClass = karelClass.substring(karelClass.lastIndexOf(\".\") + 1);\n\t\t} else {\n\t\t\ttry {\n\t\t\t\tkarel = (KarelInterface) Class.forName(karelClass).getDeclaredConstructor().newInstance();\n\t\t\t} catch (Exception ex) {\n\t\t\t\tSystem.out.println(\"Exception: \" + ExceptionUtils.getUnderlyingCause(ex));\n\t\t\t}\n\t\t}\n\t\tif (karel != null) {\n\t\t\tif (karel instanceof Karel) {\n\t\t\t\t((Karel) karel).setJMenuBar(getJMenuBar());\n\t\t\t}\n\t\t\tworld.add(karel);\n\t\t\tsetTitle(karelClass);\n\t\t\tloadInitialWorld();\n\t\t}\n\t\tworld.setRepaintFlag(true);\n\t\tworld.setDisplayFlag(true);\n\t\tworld.repaint();\n\t\twhile (true) {\n\t\t\tstarted = false;\n\t\t\t\n\t\t\tif (karel instanceof Karel) {\n\t\t\t\t((Karel) karel).maybeEchoInitialState();\n\t\t\t\tcontrolPanel.focusStartButton();\n\t\t\t}\n\t\t\t\n\t\t\tsynchronized (this) {\n\t\t\t\twhile (!started) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\twait();\n\t\t\t\t\t} catch (InterruptedException ex) {\n\t\t\t\t\t\t/* Empty */\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tThrowable throwable = null;\n\t\t\ttry {\n\t\t\t\tif (karel == null) {\n\t\t\t\t\tmain();\n\t\t\t\t} else {\n\t\t\t\t\t// run the student's Karel program now!\n\t\t\t\t\tkarel.run();\n\t\t\t\t\t\n\t\t\t\t\tif (karel instanceof Karel) {\n\t\t\t\t\t\t((Karel) karel).maybeEchoFinalState();\n\t\t\t\t\t}\n\t\t\t\t\tsetStatus(\"Finished running.\");\n\t\t\t\t}\n\t\t\t\tworld.setRepaintFlag(true);\n\t\t\t\tworld.repaint();\n\t\t\t} catch (Exception ex) {\n\t\t\t\tthrowable = ex;\n\t\t\t} catch (StackOverflowError err) {\n\t\t\t\tthrowable = err;\n\t\t\t}\n\t\t\t\n\t\t\tif (throwable == null) {\n\t\t\t\tStateEvent.fire(State.STOPPED);\n\t\t\t} else {\n\t\t\t\tsetStatus(\"Halted due to an error.\");\n\t\t\t\tStateEvent.fire(State.ERROR);\n\t\t\t\tif (errorDialog == null) {\n\t\t\t\t\terrorDialog = new KarelErrorDialog(this);\n\t\t\t\t}\n\t\t\t\terrorDialog.error(throwable);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tvoid signalStarted() {\n\t\tsynchronized (this) {\n\t\t\tStateEvent.fire(State.RUNNING);\n\t\t\tstarted = true;\n\t\t\tnotifyAll();\n\t\t}\n\t}\n\t\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/karel/KarelResizer.java",
    "content": "package stanford.karel;\n\nimport java.awt.Panel;\nimport java.awt.Scrollbar;\nimport java.awt.event.AdjustmentEvent;\nimport java.awt.event.AdjustmentListener;\n\nclass KarelResizer extends Panel implements AdjustmentListener {\n\tprivate static final int MAX_WIDTH = 50;\n\tprivate static final int MAX_HEIGHT = 50;\n\n\tprivate ResizeCanvas resizeCanvas;\n\tprivate Scrollbar widthScrollbar;\n\tprivate Scrollbar heightScrollbar;\n\n\tpublic KarelResizer() {\n\t\tresizeCanvas = new ResizeCanvas();\n\t\tresizeCanvas.setDimension(10, 10);\n\t\twidthScrollbar = new Scrollbar(Scrollbar.HORIZONTAL);\n\t\twidthScrollbar.setValues(10 - 1, 1, 0, MAX_WIDTH);\n\t\twidthScrollbar.addAdjustmentListener(this);\n\t\theightScrollbar = new Scrollbar(Scrollbar.VERTICAL);\n\t\theightScrollbar.setValues(MAX_HEIGHT - 10, 1, 0, MAX_HEIGHT);\n\t\theightScrollbar.addAdjustmentListener(this);\n\t\tsetLayout(new ResizeLayout());\n\t\tadd(\"canvas\", resizeCanvas);\n\t\tadd(\"hbar\", widthScrollbar);\n\t\tadd(\"vbar\", heightScrollbar);\n\t}\n\n\t/* AdjustmentListener interface */\n\tpublic void adjustmentValueChanged(AdjustmentEvent event) {\n\t\tresizeCanvas.setDimension(getColumns(), getRows());\n\t\tresizeCanvas.repaint();\n\t}\n\n\tpublic int getColumns() {\n\t\treturn widthScrollbar.getValue() + 1;\n\t}\n\n\tpublic int getRows() {\n\t\treturn MAX_HEIGHT - heightScrollbar.getValue();\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/karel/KarelWorld.java",
    "content": "/*\n * This class implements Karel's world.\n * \n * @author Marty Stepp (based on Eric Roberts version)\n * @version 2017/04/04\n * - added toImage, saveToImage methods\n * @version 2016/04/16\n * - added interactive keyboard-controlled mode\n * @version 2015/04/05\n * - added Ms. Karel mode\n * @version 2015/03/31\n * - commented out unused method updateCorner\n * - commented out unused fields and local variables\n * - changed to use Swing graphical components\n */\n\npackage stanford.karel;\n\nimport acm.graphics.GraphicsUtils;\nimport acm.program.CommandLineProgram;\nimport acm.util.*;\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.awt.image.*;\nimport java.io.*;\nimport java.text.*;\nimport java.util.*;\nimport javax.swing.*;\n\npublic class KarelWorld extends JComponent {\n\t// see also: KarelDirection enum\n\tpublic static final int NORTH = 0;\n\tpublic static final int EAST = 1;\n\tpublic static final int SOUTH = 2;\n\tpublic static final int WEST = 3;\n\tpublic static final int NORTHEAST = 10;\n\tpublic static final int NORTHWEST = 11;\n\tpublic static final int SOUTHEAST = 12;\n\tpublic static final int SOUTHWEST = 13;\n\tpublic static final int CENTER = 14;\n\n\tpublic static final int INFINITE = 99999999;\n\tpublic static final int PLUS1 = -1;\n\tpublic static final int MINUS1 = -2;\n\tpublic static final int BLANKB = -3;\n\n\tpublic static final int SIMPLE = 0;\n\tpublic static final int FANCY = 1;\n\n\tpublic static final int LEFT_NUMBER_MARGIN = 16;\n\tpublic static final int BOTTOM_NUMBER_MARGIN = 15;\n\tpublic static final int DOUBLE_WALL_THRESHOLD = 24;\n\tpublic static final int CROSS_THRESHOLD = 11;\n\tpublic static final int NUMBER_THRESHOLD = 15;\n\tpublic static final Font NUMBER_FONT = new Font(\"SansSerif\", Font.PLAIN, 13);\n\tpublic static final Font BEEPER_NUMBER_FONT = new Font(\"SansSerif\",\n\t\t\tFont.PLAIN, 11);\n\tpublic static final double WALL_FRACTION = 0.30;\n\tpublic static final double WALL_TOLERANCE = 0.15;\n\n\tpublic static final int MAX_WIDTH = 50;\n\tpublic static final int MAX_HEIGHT = 50;\n\n\tpublic static final int MAX_DISPLAY_WIDTH = (6 * MAX_WIDTH)\n\t\t\t+ LEFT_NUMBER_MARGIN;\n\tpublic static final int MAX_DISPLAY_HEIGHT = (6 * MAX_HEIGHT)\n\t\t\t+ BOTTOM_NUMBER_MARGIN;\n\n\tpublic static final boolean TOKEN_TRACE = false;\n\n\tpublic static final Color BEEPER_COLOR = Color.LIGHT_GRAY;\n\tpublic static final Color MARKED_COLOR = Color.DARK_GRAY;\n\tpublic static final int BEEPER_BORDER = 1;\n\tpublic static final String BEEPER_FONT_FAMILY = \"SansSerif\";\n\tpublic static final int MIN_FANCY = 20;\n\tpublic static final int MIN_BEEPER = 4;\n\tpublic static final int MIN_LABEL = 15;\n\tpublic static final double BEEPER_FRACTION = 0.70;\n\tpublic static final double SIMPLE_FRACTION = 0.70;\n\n\t/* Private constants */\n\tprivate static final String INFINITY[] = {\n\t\t\t\"47494638396109000600F70000FFFFFF98009833999998980011111122222200\",\n\t\t\t\"0054CBFFCB0032980033660033CC0033FE003232663300666600006598009898\",\n\t\t\t\"00CC9900FE99329800659800CC0099FE0098659898999999CC9900FE98009800\",\n\t\t\t\"329800659900CC9800FE3399CB3399FF99993398986598320098650099339998\",\n\t\t\t\"659833CB9833FF9999CC0099FE00336699656698CC9898FF9999323200336600\",\n\t\t\t\"32003233006632009833339965009866339900663300983200666600986500CC\",\n\t\t\t\"3300FE3200CC6600FE65CCCC98CCFF99FFCC99FFFF993300CC3200FE6600CC65\",\n\t\t\t\"00FECC0033CC0066FE0032FE0065339933339966669933669865CC00CCCB00FE\",\n\t\t\t\"FE00CBFE00FE6699CC6598FF9898CC9999FFCB9833CC9966FF9933FF98653333\",\n\t\t\t\"33326532323265326565660033653232660066653265CC3300CC6600FE3200FE\",\n\t\t\t\"65000066CC0099CC0066FE0098FE00CCCC00FECB00CCFE00FEFE33CC0033FE00\",\n\t\t\t\"66CC0066FE00CB3398CC6699FF3399FF659866CC9965FF9898CC9899FF99CCCC\",\n\t\t\t\"00CCFE00FECB00FEFE009933339966339933669865659833CB9966CC9933FF98\",\n\t\t\t\"65FF33CBCB33FFCC33CCFF33FFFF99CB3399FF3399CC6698FF65CC98CCCCCCCC\",\n\t\t\t\"CC99FFCBCBFFFF99CCFFCBCBFF99FFFFCBFF3333CB3366CB3333FF3366FF6533\",\n\t\t\t\"CB6666CC6633FF6565FFCB3333CB6533CB3365CC6666FF3333FF6633FF3366FF\",\n\t\t\t\"656533CB3333FF3333CB6633FF6666CB3366FF3366CC6665FF65CB33CBCC66CC\",\n\t\t\t\"CC33FFCC65FFFF33CCFF65CCFF33FFFF65FF66CCCC65FFCC65CCFF65FFFF98CC\",\n\t\t\t\"CC99FFCC99CCFF99FFFFCBCB33CCFF33CCCC66CCFF65FFCC33FFFF33FFCC65FF\",\n\t\t\t\"FF65444444656532DDDDDDCBFFFFFFFFCBEEEEEE100000980000001000660000\",\n\t\t\t\"000098000066777777888888AAAAAABBBBBB5555556666660000100000224400\",\n\t\t\t\"005400000000CC0000DC0000EE0000FE00003200004400880000980000AA0000\",\n\t\t\t\"BA0000CC0000DC0000EE0000FE00CC0000DC0000EE0000FE0000004400005400\",\n\t\t\t\"006600007600220000320000AA0000BA00000022000032007600008800000000\",\n\t\t\t\"AA0000BA00007600008800000021F90401000090002C0000000009000600C7FF\",\n\t\t\t\"FFFF980098339999989800111111222222000054CBFFCB0032980033660033CC\",\n\t\t\t\"0033FE00323266330066660000659800989800CC9900FE99329800659800CC00\",\n\t\t\t\"99FE0098659898999999CC9900FE98009800329800659900CC9800FE3399CB33\",\n\t\t\t\"99FF99993398986598320098650099339998659833CB9833FF9999CC0099FE00\",\n\t\t\t\"336699656698CC9898FF99993232003366003200323300663200983333996500\",\n\t\t\t\"9866339900663300983200666600986500CC3300FE3200CC6600FE65CCCC98CC\",\n\t\t\t\"FF99FFCC99FFFF993300CC3200FE6600CC6500FECC0033CC0066FE0032FE0065\",\n\t\t\t\"339933339966669933669865CC00CCCB00FEFE00CBFE00FE6699CC6598FF9898\",\n\t\t\t\"CC9999FFCB9833CC9966FF9933FF986533333332653232326532656566003365\",\n\t\t\t\"3232660066653265CC3300CC6600FE3200FE65000066CC0099CC0066FE0098FE\",\n\t\t\t\"00CCCC00FECB00CCFE00FEFE33CC0033FE0066CC0066FE00CB3398CC6699FF33\",\n\t\t\t\"99FF659866CC9965FF9898CC9899FF99CCCC00CCFE00FECB00FEFE0099333399\",\n\t\t\t\"66339933669865659833CB9966CC9933FF9865FF33CBCB33FFCC33CCFF33FFFF\",\n\t\t\t\"99CB3399FF3399CC6698FF65CC98CCCCCCCCCC99FFCBCBFFFF99CCFFCBCBFF99\",\n\t\t\t\"FFFFCBFF3333CB3366CB3333FF3366FF6533CB6666CC6633FF6565FFCB3333CB\",\n\t\t\t\"6533CB3365CC6666FF3333FF6633FF3366FF656533CB3333FF3333CB6633FF66\",\n\t\t\t\"66CB3366FF3366CC6665FF65CB33CBCC66CCCC33FFCC65FFFF33CCFF65CCFF33\",\n\t\t\t\"FFFF65FF66CCCC65FFCC65CCFF65FFFF98CCCC99FFCC99CCFF99FFFFCBCB33CC\",\n\t\t\t\"FF33CCCC66CCFF65FFCC33FFFF33FFCC65FFFF65444444656532DDDDDDCBFFFF\",\n\t\t\t\"FFFFCBEEEEEE100000980000001000660000000098000066777777888888AAAA\",\n\t\t\t\"AABBBBBB5555556666660000100000224400005400000000CC0000DC0000EE00\",\n\t\t\t\"00FE00003200004400880000980000AA0000BA0000CC0000DC0000EE0000FE00\",\n\t\t\t\"CC0000DC0000EE0000FE0000004400005400006600007600220000320000AA00\",\n\t\t\t\"00BA00000022000032007600008800000000AA0000BA00007600008800000008\",\n\t\t\t\"190021091C4810D2BF7F06110A54C870E0C1840E174A2C4830200021FF0B4D41\",\n\t\t\t\"4347436F6E2004031039000000015772697474656E20627920474946436F6E76\",\n\t\t\t\"657274657220322E342E33206F66204D6F6E6461792C204D61792032352C2031\",\n\t\t\t\"393938003B\" };\n\n\tprivate static final int KAREL_INSET = 6;             // px to shrink Karel size relative to his corner size \n\tprivate static final double BODY_OFFSET_X = -0.20;\n\tprivate static final double BODY_OFFSET_Y = -0.33;\n\tprivate static final double BODY_WIDTH = 0.60;        // fraction of corner width occupied by Karel's body outline\n\tprivate static final double BODY_HEIGHT = 0.80;       // fraction of corner height occupied by Karel's body outline\n\tprivate static final double UPPER_NOTCH = 0.15;       // what fraction of Karel's body is beveled on U/R edge?\n\tprivate static final double LOWER_NOTCH = 0.10;       // what fraction of Karel's body is beveled on B/L edge?\n\tprivate static final double SCREEN_OFFSET_X = -0.07;\n\tprivate static final double SCREEN_OFFSET_Y = -0.05;\n\tprivate static final double SCREEN_WIDTH = 0.30;\n\tprivate static final double SCREEN_HEIGHT = 0.40;\n\tprivate static final double SLOT_WIDTH = 0.15;        // fraction of body width used by Karel's \"disk\" slot line\n\tprivate static final double FOOT_WIDTH = 0.08;        // size of Karel's feet relative to body \n\tprivate static final double FOOT_LENGTH = 0.20;\n\tprivate static final double UPPER_ANKLE = 0.08;\n\tprivate static final double LOWER_ANKLE = 0.08;\n\n\tprivate static Image infinityImage;\n\n\tprivate StreamTokenizer tokenizer;\n\tprivate KarelWorldMonitor monitor;\n\tprivate KarelInterface activeKarel;\n\tprivate KarelInterface lastKarel;\n\tprivate boolean repaintFlag;\n\tprivate boolean displayFlag;\n\tprivate boolean editMode;\n\tprivate boolean numberSquaresFlag;\n\tprivate boolean displayOneFlag;\n\tprivate boolean msKarel;            // default false\n\tprivate boolean interactiveMode;    // default false\n\tprivate int cols;\n\tprivate int rows;\n\tprivate int sqSize;\n\tprivate int forcedSize;\n\tprivate int alignment;\n\tprivate int width;\n\tprivate int height;\n\tprivate int widthPx;\n\tprivate int heightPx;\n\tprivate int leftMargin;\n\tprivate int bottomMargin;\n\tprivate String lastClick;\n\tprivate String pathname;\n\tprivate String title;\n\tprivate Corner[][] map;\n\tprivate int look;\n\tprivate int lastBeeperCount;\n\tprivate NumberFormat speedFormat;\n\tprivate ArrayList<KarelInterface> karels;\n\tprivate Object sizeLock;\n\tprivate Image offscreen;\n\n\t/* Constructor */\n\tpublic KarelWorld() {\n\t\tsizeLock = new Object();\n\t\tsetTitle(\"Karel World\");\n\t\tsetBackground(Color.WHITE);\n\t\tKarelWorldListener listener = new KarelWorldListener();\n\t\taddMouseListener(listener);\n\t\taddMouseMotionListener(listener);\n\t\taddComponentListener(listener);\n\t\taddKeyListener(listener);\n\t\tsetFocusable(true);\n\t\tspeedFormat = NumberFormat.getInstance();\n\t\tspeedFormat.setMinimumIntegerDigits(1);\n\t\tspeedFormat.setMaximumIntegerDigits(1);\n\t\tspeedFormat.setMinimumFractionDigits(2);\n\t\tspeedFormat.setMaximumFractionDigits(2);\n\t\tforcedSize = 0;\n\t\tnumberSquaresFlag = true;\n\t\tdisplayOneFlag = false;\n\t\tmsKarel = false;\n\t\tlook = FANCY;\n\t\talignment = CENTER;\n\t\tkarels = new ArrayList<KarelInterface>();\n\t\tsetDisplayFlag(true);\n\t\tsetRepaintFlag(true);\n\t}\n\n\t@Override\n\tpublic Image createImage(int width, int height) {\n\t\tif (CommandLineProgram.isHeadless()) {\n\t\t\tBufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);\n\t\t\treturn img;\n\t\t} else {\n\t\t\treturn super.createImage(width, height);\n\t\t}\n\t}\n\n\tpublic void init(int cols, int rows) {\n\t\tsynchronized (sizeLock) {\n\t\t\tthis.cols = cols;\n\t\t\tthis.rows = rows;\n\t\t\tsetDisplayParameters(cols, rows);\n\t\t\teditMode = false;\n\t\t\tmap = new Corner[cols + 2][rows + 2];\n\t\t\tfor (int x = 1; x <= cols + 1; x++) {\n\t\t\t\tfor (int y = 1; y <= rows + 1; y++) {\n\t\t\t\t\tmap[x][y] = new Corner();\n\t\t\t\t\tmap[x][y].wallSouth = (y == 1) || (y == rows + 1);\n\t\t\t\t\tmap[x][y].wallWest = (x == 1) || (x == cols + 1);\n\t\t\t\t\tmap[x][y].color = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\trepaint();\n\t\t}\n\t}\n\n\tpublic void add(KarelInterface karel) {\n\t\tif (karels.indexOf(karel) == -1) {\n\t\t\tkarel.setWorld(this);\n\t\t\tkarels.add(karel);\n\t\t}\n\t\trepaint();\n\t}\n\n\tpublic void remove(KarelInterface karel) {\n\t\tkarels.remove(karel);\n\t\tkarel.setWorld(null);\n\t\trepaint();\n\t}\n\n\t@SuppressWarnings(\"unchecked\")\n\tpublic <K extends KarelInterface> K getKarel() {\n\t\treturn (K) getKarel(0);\n\t}\n\n\t@SuppressWarnings(\"unchecked\")\n\tpublic <K extends KarelInterface> K getKarel(int k) {\n\t\tif (k < 0 || k >= karels.size()) {\n\t\t\tthrow new ErrorException(\"Illegal Karel index\");\n\t\t}\n\t\treturn (K) karels.get(k);\n\t}\n\n\tpublic int getKarelCount() {\n\t\treturn karels.size();\n\t}\n\n\t@SuppressWarnings(\"unchecked\")\n\tpublic <K extends KarelInterface> K getKarelOnSquare(int x, int y) {\n\t\tIterator<KarelInterface> iterator = karels.iterator();\n\t\twhile (iterator.hasNext()) {\n\t\t\tKarelInterface karel = iterator.next();\n\t\t\tPoint pt = karel.getLocation();\n\t\t\tif (pt.x == x && pt.y == y)\n\t\t\t\treturn (K) karel;\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic void setTitle(String title) {\n\t\tthis.title = title;\n\t}\n\n\tpublic String getTitle() {\n\t\treturn title;\n\t}\n\n\tpublic void setPathname(String pathname) {\n\t\tthis.pathname = pathname;\n\t}\n\n\tpublic String getPathname() {\n\t\treturn pathname;\n\t}\n\n\tpublic void setDisplayFlag(boolean flag) {\n\t\tdisplayFlag = flag;\n\t}\n\n\tpublic void setRepaintFlag(boolean flag) {\n\t\trepaintFlag = flag;\n\t}\n\n\tpublic boolean getRepaintFlag() {\n\t\treturn repaintFlag;\n\t}\n\n\tpublic boolean getNumberSquaresFlag() {\n\t\treturn numberSquaresFlag;\n\t}\n\n\tpublic void setNumberSquaresFlag(boolean flag) {\n\t\tnumberSquaresFlag = flag;\n\t}\n\n\tpublic int getAlignment() {\n\t\treturn alignment;\n\t}\n\n\tpublic void setAlignment(int alignment) {\n\t\tthis.alignment = alignment;\n\t}\n\n\tpublic int getLook() {\n\t\treturn look;\n\t}\n\n\tpublic void setLook(int look) {\n\t\tthis.look = look;\n\t}\n\n\tpublic void setDisplayOneFlag(boolean flag) {\n\t\tdisplayOneFlag = flag;\n\t}\n\n\tpublic String getPathName() {\n\t\treturn pathname;\n\t}\n\n\tpublic void setPathName(String pathname) {\n\t\tthis.pathname = pathname;\n\t}\n\n\tpublic boolean getEditMode() {\n\t\treturn editMode;\n\t}\n\n\tpublic void setEditMode(boolean flag) {\n\t\teditMode = flag;\n\t}\n\n\tpublic void updateEditMode(boolean flag) {\n\t\tif (monitor == null)\n\t\t\tthrow new ErrorException(\"No map editor defined\");\n\t\tsetEditMode(flag);\n\t\trepaint();\n\t}\n\n\tpublic void forceSquareSize(int size) {\n\t\tforcedSize = size;\n\t}\n\n\tpublic void reset() {\n\t\t/* Empty */\n\t}\n\n\tpublic int getSquareSize() {\n\t\treturn sqSize;\n\t}\n\n\tpublic int getColumns() {\n\t\treturn (cols);\n\t}\n\n\tpublic int getRows() {\n\t\treturn (rows);\n\t}\n\n\tpublic boolean outOfBounds(Point pt) {\n\t\treturn outOfBounds(pt.x, pt.y);\n\t}\n\n\tpublic boolean outOfBounds(int x, int y) {\n\t\treturn (x < 1 || x > cols || y < 1 || y > rows);\n\t}\n\n\tpublic int getBeepersOnCorner(Point pt) {\n\t\treturn getBeepersOnCorner(pt.x, pt.y);\n\t}\n\n\tpublic int getBeepersOnCorner(int x, int y) {\n\t\treturn ((map[x][y]).nBeepers);\n\t}\n\n\tpublic void setBeepersOnCorner(Point pt, int nBeepers) {\n\t\tmap[pt.x][pt.y].nBeepers = nBeepers;\n\t\tupdateCorner(pt);\n\t}\n\n\tpublic void setBeepersOnCorner(int x, int y, int nBeepers) {\n\t\tsetBeepersOnCorner(new Point(x, y), nBeepers);\n\t}\n\n\tpublic static int adjustBeepers(int nBeepers, int delta) {\n\t\tif (nBeepers == INFINITE)\n\t\t\treturn INFINITE;\n\t\treturn nBeepers + delta;\n\t}\n\n\tpublic static int setBeepers(int nBeepers, int delta) {\n\t\tif (delta == INFINITE)\n\t\t\treturn INFINITE;\n\t\tif (delta == PLUS1) {\n\t\t\treturn (nBeepers == INFINITE) ? INFINITE : nBeepers + 1;\n\t\t}\n\t\tif (delta == MINUS1) {\n\t\t\treturn (nBeepers == INFINITE) ? INFINITE : Math\n\t\t\t\t\t.max(0, nBeepers - 1);\n\t\t}\n\t\treturn delta;\n\t}\n\n\tpublic Color getCornerColor(Point pt) {\n\t\treturn getCornerColor(pt.x, pt.y);\n\t}\n\n\tpublic Color getCornerColor(int x, int y) {\n\t\treturn (map[x][y].color);\n\t}\n\n\tpublic void setCornerColor(Point pt, Color color) {\n\t\tmap[pt.x][pt.y].color = color;\n\t\tupdateCorner(pt);\n\t}\n\n\tpublic void setCornerColor(int x, int y, Color color) {\n\t\tsetCornerColor(new Point(x, y), color);\n\t}\n\n\tpublic boolean checkWall(Point pt, int dir) {\n\t\treturn checkWall(pt.x, pt.y, dir);\n\t}\n\n\tpublic boolean checkWall(int x, int y, int dir) {\n\t\tswitch (dir) {\n\t\tcase SOUTH:\n\t\t\treturn (map[x][y].wallSouth);\n\t\tcase WEST:\n\t\t\treturn (map[x][y].wallWest);\n\t\tcase NORTH:\n\t\t\treturn (map[x][y + 1].wallSouth);\n\t\tcase EAST:\n\t\t\treturn (map[x + 1][y].wallWest);\n\t\t}\n\t\treturn (false);\n\t}\n\n\tpublic void setWall(Point pt, int dir) {\n\t\tswitch (dir) {\n\t\tcase SOUTH:\n\t\t\tmap[pt.x][pt.y].wallSouth = true;\n\t\t\tbreak;\n\t\tcase WEST:\n\t\t\tmap[pt.x][pt.y].wallWest = true;\n\t\t\tbreak;\n\t\tcase NORTH:\n\t\t\tmap[pt.x][pt.y + 1].wallSouth = true;\n\t\t\tbreak;\n\t\tcase EAST:\n\t\t\tmap[pt.x + 1][pt.y].wallWest = true;\n\t\t\tbreak;\n\t\t}\n\t\tupdateCorner(pt);\n\t}\n\n\tpublic void setWall(int x, int y, int dir) {\n\t\tsetWall(new Point(x, y), dir);\n\t}\n\n\tpublic void clearWall(Point pt, int dir) {\n\t\tswitch (dir) {\n\t\tcase SOUTH:\n\t\t\tmap[pt.x][pt.y].wallSouth = false;\n\t\t\tbreak;\n\t\tcase WEST:\n\t\t\tmap[pt.x][pt.y].wallWest = false;\n\t\t\tbreak;\n\t\tcase NORTH:\n\t\t\tmap[pt.x][pt.y + 1].wallSouth = false;\n\t\t\tbreak;\n\t\tcase EAST:\n\t\t\tmap[pt.x + 1][pt.y].wallWest = false;\n\t\t\tbreak;\n\t\t}\n\t\tupdateCorner(pt);\n\t\tif (sqSize >= DOUBLE_WALL_THRESHOLD) {\n\t\t\tPoint left = adjacentPoint(pt, leftFrom(dir));\n\t\t\tPoint right = adjacentPoint(pt, rightFrom(dir));\n\t\t\tupdateCorner(left);\n\t\t\tupdateCorner(right);\n\t\t\tupdateCorner(adjacentPoint(left, dir));\n\t\t\tupdateCorner(adjacentPoint(pt, dir));\n\t\t\tupdateCorner(adjacentPoint(right, dir));\n\t\t}\n\t}\n\n\tpublic void clearWall(int x, int y, int dir) {\n\t\tclearWall(new Point(x, y), dir);\n\t}\n\n\tpublic void updateCorner(int x, int y) {\n\t\tupdateCorner(new Point(x, y));\n\t}\n\n\tpublic void updateCorner(Point pt) {\n\t\tRectangle r = getCornerRect(pt);\n\t\tif (repaintFlag)\n\t\t\trepaint(r.x, r.y, r.width, r.height);\n\t}\n\n\tpublic static String directionName(int dir) {\n\t\tswitch (dir) {\n\t\tcase SOUTH:\n\t\t\treturn \"SOUTH\";\n\t\tcase WEST:\n\t\t\treturn \"WEST\";\n\t\tcase NORTH:\n\t\t\treturn \"NORTH\";\n\t\tcase EAST:\n\t\t\treturn \"EAST\";\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic static int leftFrom(int dir) {\n\t\tswitch (dir) {\n\t\tcase SOUTH:\n\t\t\treturn EAST;\n\t\tcase WEST:\n\t\t\treturn SOUTH;\n\t\tcase NORTH:\n\t\t\treturn WEST;\n\t\tcase EAST:\n\t\t\treturn NORTH;\n\t\t}\n\t\treturn -1;\n\t}\n\n\tpublic static int rightFrom(int dir) {\n\t\tswitch (dir) {\n\t\tcase SOUTH:\n\t\t\treturn WEST;\n\t\tcase WEST:\n\t\t\treturn NORTH;\n\t\tcase NORTH:\n\t\t\treturn EAST;\n\t\tcase EAST:\n\t\t\treturn SOUTH;\n\t\t}\n\t\treturn -1;\n\t}\n\n\tpublic static int oppositeDirection(int dir) {\n\t\tswitch (dir) {\n\t\tcase SOUTH:\n\t\t\treturn NORTH;\n\t\tcase WEST:\n\t\t\treturn EAST;\n\t\tcase NORTH:\n\t\t\treturn SOUTH;\n\t\tcase EAST:\n\t\t\treturn WEST;\n\t\t}\n\t\treturn -1;\n\t}\n\n\tpublic static Point adjacentPoint(Point pt, int dir) {\n\t\treturn adjacentPoint(pt.x, pt.y, dir);\n\t}\n\n\tpublic static Point adjacentPoint(int x, int y, int dir) {\n\t\tswitch (dir) {\n\t\tcase SOUTH:\n\t\t\treturn new Point(x, y - 1);\n\t\tcase WEST:\n\t\t\treturn new Point(x - 1, y);\n\t\tcase NORTH:\n\t\t\treturn new Point(x, y + 1);\n\t\tcase EAST:\n\t\t\treturn new Point(x + 1, y);\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic void repaint() {\n\t\tif (repaintFlag)\n\t\t\tsuper.repaint();\n\t}\n\t\n\t/**\n\t * Saves an image of this Karel world to the given image file.\n\t */\n\tpublic void saveToImage(File file) {\n\t\tBufferedImage img = toImage();\n\t\tMediaTools.saveImage(img, file);\n\t}\n\t\n\t/**\n\t * Saves an image of this Karel world to the given image file.\n\t */\n\tpublic void saveToImage(String filename) {\n\t\tsaveToImage(new File(filename));\n\t}\n\t\n\t@Override\n\tpublic Dimension getSize() {\n\t\tif (CommandLineProgram.isHeadless()) {\n\t\t\treturn new Dimension(widthPx, heightPx);\n\t\t} else {\n\t\t\treturn super.getSize();\n\t\t}\n\t}\n\t\n\t@Override\n\tpublic int getWidth() {\n\t\tif (CommandLineProgram.isHeadless()) {\n\t\t\treturn widthPx;\n\t\t} else {\n\t\t\treturn super.getWidth();\n\t\t}\n\t}\n\t\n\t@Override\n\tpublic int getHeight() {\n\t\tif (CommandLineProgram.isHeadless()) {\n\t\t\treturn heightPx;\n\t\t} else {\n\t\t\treturn super.getHeight();\n\t\t}\n\t}\n\t\n\t@Override\n\tpublic void setSize(int width, int height) {\n\t\tif (CommandLineProgram.isHeadless()) {\n\t\t\twidthPx = width;\n\t\t\theightPx = height;\n\t\t\tsetDisplayParameters(this.cols, this.rows);\n\t\t} else {\n\t\t\tsuper.setSize(width, height);\n\t\t}\n\t}\n\t\n\tpublic void setToDefaultSize() {\n\t\tsetSize(MAX_WIDTH * this.cols + LEFT_NUMBER_MARGIN*2,\n\t\t\t\tMAX_HEIGHT * this.rows + BOTTOM_NUMBER_MARGIN*2);\n\t}\n\t\n\t/**\n\t * Converts this Karel world into an image that is returned.\n\t */\n\tpublic BufferedImage toImage() {\n\t\tint width = this.getWidth();\n\t\tint height = this.getHeight();\n\t\t\n\t\t// make an all-white image\n\t\tBufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);\n\t\tGraphics g = img.getGraphics();\n\t\tg.setColor(Color.WHITE);\n\t\tg.fillRect(0, 0, width, height);\n\t\t\n\t\t// draw Karel world onto the image\n\t\tthis.paintComponent(g);\n\t\tg.dispose();\n\t\t\n\t\treturn img;\n\t}\n\n\tpublic void update(Graphics g) {\n\t\tpaintComponent(g);\n\t}\n\n\tpublic void paintComponent(Graphics g) {\n\t\tsuper.paintComponent(g);\n\t\tif (map == null || !displayFlag)\n\t\t\treturn;\n\t\tGraphicsUtils.setAntialiasing(g, true);\n\t\tsynchronized (sizeLock) {\n\t\t\tif (offscreen == null) {\n\t\t\t\tDimension size = getSize();\n\t\t\t\toffscreen = createImage(size.width, size.height);\n\t\t\t}\n\t\t\tGraphics osg = offscreen.getGraphics();\n\t\t\tGraphicsUtils.setAntialiasing(osg, true);\n\t\t\tdrawEmptyWorld(osg);\n\t\t\tfor (int pass = 0; pass < 2; pass++) {\n\t\t\t\tfor (int x = 1; x <= cols + 1; x++) {\n\t\t\t\t\tfor (int y = 1; y <= rows + 1; y++) {\n\t\t\t\t\t\tboolean mustPaint = false;\n\t\t\t\t\t\tif (getKarelOnSquare(x, y) != null) {\n\t\t\t\t\t\t\tmustPaint = true;\n\t\t\t\t\t\t} else if (map[x][y].color != null) {\n\t\t\t\t\t\t\tmustPaint = true;\n\t\t\t\t\t\t} else if (map[x][y].nBeepers != 0) {\n\t\t\t\t\t\t\tmustPaint = true;\n\t\t\t\t\t\t} else if (x > 1 && map[x][y].wallWest) {\n\t\t\t\t\t\t\tmustPaint = true;\n\t\t\t\t\t\t} else if (y > 1 && map[x][y].wallSouth) {\n\t\t\t\t\t\t\tmustPaint = true;\n\t\t\t\t\t\t} else if (x < cols && map[x + 1][y].wallWest) {\n\t\t\t\t\t\t\tmustPaint = true;\n\t\t\t\t\t\t} else if (y < rows && map[x][y + 1].wallSouth) {\n\t\t\t\t\t\t\tmustPaint = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (mustPaint) {\n\t\t\t\t\t\t\tif (pass == 0) {\n\t\t\t\t\t\t\t\tupdateContents(osg, new Point(x, y));\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tupdateWalls(osg, new Point(x, y));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tdrawWorldFrame(osg);\n\t\t}\n\t\tg.drawImage(offscreen, 0, 0, this);\n\t}\n\n\tpublic void trace() {\n\t\tif (monitor != null)\n\t\t\tmonitor.trace();\n\t}\n\n\tprotected void setMonitor(KarelWorldMonitor monitor) {\n\t\tthis.monitor = monitor;\n\t}\n\n\tprotected KarelWorldMonitor getMonitor() {\n\t\treturn monitor;\n\t}\n\n\t/* Protected hooks */\n\n\tprotected void componentResizedHook() {\n\t\tsetDisplayParameters(cols, rows);\n\t\trepaint();\n\t}\n\n\tprotected void mousePressedHook(MouseEvent e) {\n\t\tif (editMode) {\n\t\t\tlastClick = \"\";\n\t\t\tPoint pt = getClickCorner(e.getX(), e.getY());\n\t\t\tif (pt == null) {\n\t\t\t\tactiveKarel = null;\n\t\t\t\tcheckForWallClick(e.getX(), e.getY());\n\t\t\t} else {\n\t\t\t\tactiveKarel = getKarelOnSquare(pt.x, pt.y);\n\t\t\t\tif (activeKarel == null) {\n\t\t\t\t\tcheckForCornerClick(pt);\n\t\t\t\t} else {\n\t\t\t\t\t// added by Marty to enable placing beepers on Karel's location\n\t\t\t\t\tcheckForCornerClick(pt);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected void mouseDraggedHook(MouseEvent e) {\n\t\tif (!editMode)\n\t\t\treturn;\n\t\tif (activeKarel != null) {\n\t\t\tPoint pt = getClickCorner(e.getX(), e.getY());\n\t\t\tif (pt != null && !pt.equals(activeKarel.getLocation())) {\n\t\t\t\tactiveKarel.setLocation(pt);\n\t\t\t\trepaint();\n\t\t\t}\n\t\t} else {\n\t\t\tif (!checkForWallClick(e.getX(), e.getY())) {\n\t\t\t\tcheckForCornerClick(e.getX(), e.getY());\n\t\t\t}\n\t\t}\n\t}\n\n\t/* Click handling methods */\n\n\tprivate boolean checkForWallClick(int mx, int my) {\n\t\tdouble sx = (double) (mx - leftMargin + sqSize / 2) / sqSize;\n\t\tdouble sy = (double) (getSize().height - my - bottomMargin - 1 + sqSize / 2)\n\t\t\t\t/ sqSize;\n\t\tint tx = (int) (sx + 0.5);\n\t\tint ty = (int) (sy + 0.5);\n\t\tint dir;\n\t\tif (Math.abs(Math.abs(sx - tx) - 0.5) <= WALL_TOLERANCE\n\t\t\t\t&& Math.abs(sy - ty) < WALL_FRACTION) {\n\t\t\tif (tx > sx)\n\t\t\t\ttx--;\n\t\t\tif (tx < 0 || tx > cols || ty < 1 || ty > rows)\n\t\t\t\treturn false;\n\t\t\tdir = EAST;\n\t\t} else if (Math.abs(Math.abs(sy - ty) - 0.5) <= WALL_TOLERANCE\n\t\t\t\t&& Math.abs(sx - tx) < WALL_FRACTION) {\n\t\t\tif (ty > sy)\n\t\t\t\tty--;\n\t\t\tif (tx < 1 || tx > cols || ty < 0 || ty > rows)\n\t\t\t\treturn false;\n\t\t\tdir = NORTH;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t\tString click = tx + \"/\" + ty + \"/\" + dir;\n\t\tif (!click.equals(lastClick)) {\n\t\t\tif (monitor != null)\n\t\t\t\tmonitor.wallAction(new Point(tx, ty), dir);\n\t\t\tlastClick = click;\n\t\t}\n\t\treturn true;\n\t}\n\n\tprivate boolean checkForCornerClick(int mx, int my) {\n\t\treturn checkForCornerClick(getClickCorner(mx, my));\n\t}\n\n\tprivate boolean checkForCornerClick(Point pt) {\n\t\tif (pt == null)\n\t\t\treturn false;\n\t\tString click = pt.x + \"/\" + pt.y;\n\t\tif (!click.equals(lastClick)) {\n\t\t\tif (monitor != null)\n\t\t\t\tmonitor.cornerAction(pt);\n\t\t\tlastClick = click;\n\t\t}\n\t\treturn true;\n\t}\n\n\tprivate Point getClickCorner(int mx, int my) {\n\t\tdouble sx = (double) (mx - leftMargin + sqSize / 2) / sqSize;\n\t\tdouble sy = (double) (getSize().height - my - bottomMargin - 1 + sqSize / 2)\n\t\t\t\t/ sqSize;\n\t\tint tx = (int) (sx + 0.5);\n\t\tint ty = (int) (sy + 0.5);\n\t\tif (tx < 1 || tx > cols || ty < 1 || ty > rows)\n\t\t\treturn null;\n\t\tif (Math.abs(Math.abs(sx - tx) - 0.5) * sqSize <= 1)\n\t\t\treturn null;\n\t\tif (Math.abs(Math.abs(sy - ty) - 0.5) * sqSize <= 1)\n\t\t\treturn null;\n\t\treturn new Point(tx, ty);\n\t}\n\n\tprivate static String encodeColor(Color color) {\n\t\tif (color.equals(Color.BLACK))\n\t\t\treturn \"BLACK\";\n\t\tif (color.equals(Color.BLUE))\n\t\t\treturn \"BLUE\";\n\t\tif (color.equals(Color.CYAN))\n\t\t\treturn \"CYAN\";\n\t\tif (color.equals(Color.DARK_GRAY))\n\t\t\treturn \"DARK_GRAY\";\n\t\tif (color.equals(Color.GRAY))\n\t\t\treturn \"GRAY\";\n\t\tif (color.equals(Color.GREEN))\n\t\t\treturn \"GREEN\";\n\t\tif (color.equals(Color.LIGHT_GRAY))\n\t\t\treturn \"LIGHT_GRAY\";\n\t\tif (color.equals(Color.MAGENTA))\n\t\t\treturn \"MAGENTA\";\n\t\tif (color.equals(Color.ORANGE))\n\t\t\treturn \"ORANGE\";\n\t\tif (color.equals(Color.PINK))\n\t\t\treturn \"PINK\";\n\t\tif (color.equals(Color.RED))\n\t\t\treturn \"RED\";\n\t\tif (color.equals(Color.WHITE))\n\t\t\treturn \"WHITE\";\n\t\tif (color.equals(Color.YELLOW))\n\t\t\treturn \"YELLOW\";\n\t\treturn \"0x\" + Integer.toString(color.getRGB() & 0xFFFFFF).toUpperCase();\n\t}\n\n\tprivate static Color decodeColor(String name) {\n\t\tif (name.equalsIgnoreCase(\"black\"))\n\t\t\treturn Color.BLACK;\n\t\tif (name.equalsIgnoreCase(\"blue\"))\n\t\t\treturn Color.BLUE;\n\t\tif (name.equalsIgnoreCase(\"cyan\"))\n\t\t\treturn Color.CYAN;\n\t\tif (name.equalsIgnoreCase(\"darkgray\"))\n\t\t\treturn Color.DARK_GRAY;\n\t\tif (name.equalsIgnoreCase(\"dark_gray\"))\n\t\t\treturn Color.DARK_GRAY;\n\t\tif (name.equalsIgnoreCase(\"gray\"))\n\t\t\treturn Color.GRAY;\n\t\tif (name.equalsIgnoreCase(\"green\"))\n\t\t\treturn Color.GREEN;\n\t\tif (name.equalsIgnoreCase(\"lightgray\"))\n\t\t\treturn Color.LIGHT_GRAY;\n\t\tif (name.equalsIgnoreCase(\"light_gray\"))\n\t\t\treturn Color.LIGHT_GRAY;\n\t\tif (name.equalsIgnoreCase(\"magenta\"))\n\t\t\treturn Color.MAGENTA;\n\t\tif (name.equalsIgnoreCase(\"orange\"))\n\t\t\treturn Color.ORANGE;\n\t\tif (name.equalsIgnoreCase(\"pink\"))\n\t\t\treturn Color.PINK;\n\t\tif (name.equalsIgnoreCase(\"red\"))\n\t\t\treturn Color.RED;\n\t\tif (name.equalsIgnoreCase(\"white\"))\n\t\t\treturn Color.WHITE;\n\t\tif (name.equalsIgnoreCase(\"yellow\"))\n\t\t\treturn Color.YELLOW;\n\t\treturn Color.decode(name);\n\t}\n\n\tprivate void setDisplayParameters(int cols, int rows) {\n\t\toffscreen = null;\n\t\tint usableWidth = getSize().width\n\t\t\t\t- ((numberSquaresFlag) ? LEFT_NUMBER_MARGIN : 2);\n\t\tint usableHeight = getSize().height\n\t\t\t\t- ((numberSquaresFlag) ? BOTTOM_NUMBER_MARGIN : 0) - 2;\n\t\tthis.width = cols;\n\t\tthis.height = rows;\n\t\tif (forcedSize == 0) {\n\t\t\tsqSize = Math.min((int) (usableWidth / cols),\n\t\t\t\t\t(int) (usableHeight / rows));\n\t\t} else {\n\t\t\tsqSize = forcedSize;\n\t\t}\n\t\twidth = cols * sqSize;\n\t\theight = rows * sqSize;\n\t\tswitch (alignment) {\n\t\tcase NORTHWEST:\n\t\tcase WEST:\n\t\tcase SOUTHWEST:\n\t\t\tleftMargin = (numberSquaresFlag) ? LEFT_NUMBER_MARGIN : 2;\n\t\t\tbreak;\n\t\tcase NORTH:\n\t\tcase CENTER:\n\t\tcase SOUTH:\n\t\t\tleftMargin = ((numberSquaresFlag) ? LEFT_NUMBER_MARGIN : 2)\n\t\t\t\t\t+ (usableWidth - width) / 2;\n\t\t\tbreak;\n\t\tcase NORTHEAST:\n\t\tcase EAST:\n\t\tcase SOUTHEAST:\n\t\t\tleftMargin = getSize().width - width - 1;\n\t\t\tbreak;\n\t\t}\n\t\tswitch (alignment) {\n\t\tcase NORTHWEST:\n\t\tcase NORTH:\n\t\tcase NORTHEAST:\n\t\t\tbottomMargin = getSize().height - height - 2;\n\t\t\tbreak;\n\t\tcase WEST:\n\t\tcase CENTER:\n\t\tcase EAST:\n\t\t\tbottomMargin = ((numberSquaresFlag) ? BOTTOM_NUMBER_MARGIN : 0)\n\t\t\t\t\t+ (usableHeight - height) / 2;\n\t\t\tbreak;\n\t\tcase SOUTHWEST:\n\t\tcase SOUTH:\n\t\tcase SOUTHEAST:\n\t\t\tbottomMargin = (numberSquaresFlag) ? BOTTOM_NUMBER_MARGIN : 0;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tprivate void drawEmptyWorld(Graphics g) {\n\t\tif (g == null)\n\t\t\treturn;\n\t\tDimension size = getSize();\n\t\tg.setColor(Color.WHITE);\n\t\tg.fillRect(0, 0, size.width, size.height);\n\t\tg.setColor(Color.BLACK);\n\t\tint x = leftMargin + sqSize / 2;\n\t\tfor (int ix = 1; ix <= cols; ix++) {\n\t\t\tint y = getSize().height - bottomMargin - (sqSize + 1) / 2 - 1;\n\t\t\tfor (int iy = 1; iy <= rows; iy++) {\n\t\t\t\tdrawCornerMarker(g, x, y);\n\t\t\t\ty -= sqSize;\n\t\t\t}\n\t\t\tx += sqSize;\n\t\t}\n\t}\n\n\tprivate void drawWorldFrame(Graphics g) {\n\t\tif (g == null)\n\t\t\treturn;\n\t\tg.setColor(Color.BLACK);\n\t\tint x = leftMargin;\n\t\tint y = getSize().height - bottomMargin - 1 - height;\n\t\tif (sqSize >= DOUBLE_WALL_THRESHOLD) {\n\t\t\tg.drawRect(x, y, width - 1, height - 1);\n\t\t\tg.drawRect(x - 1, y - 1, width + 1, height + 1);\n\t\t} else {\n\t\t\tg.drawRect(x - 1, y - 1, width, height);\n\t\t}\n\t\tif (sqSize > NUMBER_THRESHOLD && numberSquaresFlag) {\n\t\t\tg.setFont(BEEPER_NUMBER_FONT);\n\t\t\tFontMetrics fm = g.getFontMetrics();\n\t\t\tx = leftMargin + sqSize / 2;\n\t\t\ty = getSize().height - bottomMargin + 10;\n\t\t\tfor (int ix = 1; ix <= cols; ix++) {\n\t\t\t\tString label = \"\" + ix;\n\t\t\t\tg.drawString(label, x - fm.stringWidth(label) / 2, y);\n\t\t\t\tx += sqSize;\n\t\t\t}\n\t\t\tx = leftMargin - 3;\n\t\t\ty = getSize().height - bottomMargin - sqSize / 2 + 2;\n\t\t\tfor (int iy = 1; iy <= rows; iy++) {\n\t\t\t\tg.drawString(\"\" + iy, x - fm.stringWidth(\"\" + iy), y);\n\t\t\t\ty -= sqSize;\n\t\t\t}\n\t\t}\n\t}\n\n\t// private void updateCorner(Graphics g, Point pt) {\n\t// updateContents(g, pt);\n\t// updateWalls(g, pt);\n\t// }\n\n\tpublic void updateContents(Graphics g, Point pt) {\n\t\tif (g == null)\n\t\t\treturn;\n\t\tif (outOfBounds(pt))\n\t\t\treturn;\n\t\tint x = leftMargin + (pt.x - 1) * sqSize;\n\t\tint y = getSize().height - bottomMargin - 1 - pt.y * sqSize;\n\t\tdrawCorner(g, x, y, pt);\n\t}\n\n\tpublic void drawCorner(Graphics g, int x, int y, Point pt) {\n\t\tif (g == null)\n\t\t\treturn;\n\t\tint sqSize = getSquareSize();\n\t\tColor color = getCornerColor(pt);\n\t\tg.setColor((color == null) ? Color.WHITE : color);\n\t\tg.fillRect(x, y, sqSize, sqSize);\n\t\tint cx = x + sqSize / 2;\n\t\tint cy = y + sqSize / 2;\n\t\tint nBeepers = getBeepersOnCorner(pt);\n\t\tif (nBeepers > 0) {\n\t\t\tif (nBeepers == 1 && !displayOneFlag)\n\t\t\t\tnBeepers = BLANKB;\n\t\t\tdrawBeeperForStyle(g, cx, cy, sqSize, nBeepers, 1);\n\t\t}\n\t\tKarelInterface karel = getKarelOnSquare(pt.x, pt.y);\n\t\tif (karel != null) {\n\t\t\tdrawKarel(g, cx, cy, karel.getDirection(), sqSize);\n\t\t} else {\n\t\t\tif (color == null && nBeepers == 0)\n\t\t\t\tdrawCornerMarker(g, cx, cy);\n\t\t}\n\t}\n\n\tpublic static void drawMarkedCorner(Graphics g, int x, int y, int size) {\n\t\tif (g == null)\n\t\t\treturn;\n\t\tint inset = Math.max(2, size / 5);\n\t\tg.setColor(Color.WHITE);\n\t\tg.fillRect(x, y, size, size);\n\t\tg.setColor(MARKED_COLOR);\n\t\tg.fillRect(x + inset, y + inset, size - 2 * inset, size - 2 * inset);\n\t}\n\n\tpublic void drawKarel(Graphics g, int x, int y, int dir, int size) {\n\t\tif (g == null)\n\t\t\treturn;\n\t\tif (size < MIN_FANCY || getLook() == SIMPLE) {\n\t\t\tdrawSimpleKarel(g, x, y, dir, size);\n\t\t} else {\n\t\t\tdrawFancyKarel(g, x, y, dir, size, msKarel);\n\t\t}\n\t}\n\n\tpublic void drawSimpleKarel(Graphics g, int x, int y, int dir, int size) {\n\t\tif (g == null)\n\t\t\treturn;\n\t\tsize = (int) Math.round(size * SIMPLE_FRACTION);\n\t\tif (size % 2 == 0)\n\t\t\tsize--;\n\t\tint half = (size + 1) / 2;\n\t\tfor (int pass = 1; pass <= 2; pass++) {\n\t\t\tKarelRegion r = new KarelRegion();\n\t\t\tr.setOrigin(x, y, -half, -half, dir);\n\t\t\tr.addVector(half, 0, dir);\n\t\t\tr.addVector(half, half, dir);\n\t\t\tr.addVector(-half, half, dir);\n\t\t\tr.addVector(-half, 0, dir);\n\t\t\tr.addVector(0, -size, dir);\n\t\t\tif (pass == 1) {\n\t\t\t\tg.setColor(Color.WHITE);\n\t\t\t\tg.fillPolygon(r.getPolygon());\n\t\t\t} else {\n\t\t\t\tg.setColor(Color.BLACK);\n\t\t\t\tg.drawPolygon(r.getPolygon());\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic void drawFancyKarel(Graphics g, int x, int y, int dir, int size) {\n\t\tdrawFancyKarel(g, x, y, dir, size - KAREL_INSET, Color.WHITE);\n\t}\n\n\tpublic void drawFancyKarel(Graphics g, int x, int y, int dir, int size, boolean msKarel) {\n\t\tdrawFancyKarel(g, x, y, dir, size - KAREL_INSET, Color.WHITE, msKarel);\n\t}\n\n\tpublic static void drawFancyKarel(Graphics g, int x, int y, int dir,\n\t\t\tint size, Color color) {\n\t\tdrawFancyKarel(g, x, y, dir, size, color, /* msKarel */ false);\n\t}\n\t\n\tpublic static void drawFancyKarel(Graphics g, int x, int y, int dir,\n\t\t\tint size, Color color, boolean msKarel) {\n\t\tif (g == null) {\n\t\t\treturn;\n\t\t}\n\t\tfor (int pass = 1; pass <= 2; pass++) {\n\t\t\tKarelRegion r = new KarelRegion();\n\t\t\tr.setOrigin(x, y, BODY_OFFSET_X * size, BODY_OFFSET_Y * size\n\t\t\t\t\t+ LOWER_NOTCH * size, dir);\n\t\t\tint sx = r.getCurrentX();\n\t\t\tint sy = r.getCurrentY();\n\t\t\t\n\t\t\t// Karel's body outline\n\t\t\tColor bodyColor = (pass == 1) ? color : Color.BLACK;\n\t\t\tg.setColor(bodyColor);\n\t\t\tr.addVector(0, BODY_HEIGHT * size - LOWER_NOTCH * size, dir);\n\t\t\tr.addVector(BODY_WIDTH * size - UPPER_NOTCH * size, 0, dir);\n\t\t\tr.addVector(UPPER_NOTCH * size, -UPPER_NOTCH * size, dir);\n\t\t\tr.addVector(0, -(BODY_HEIGHT * size - UPPER_NOTCH * size), dir);\n\t\t\tr.addVector(-(BODY_WIDTH * size - LOWER_NOTCH * size), 0, dir);\n\t\t\tr.addVector(-LOWER_NOTCH * size, LOWER_NOTCH * size, dir);\n\t\t\tif (pass == 1) {\n\t\t\t\tr.getPolygon().addPoint(sx, sy);\n\t\t\t\tr.addVector((SCREEN_OFFSET_X - BODY_OFFSET_X) * size,\n\t\t\t\t\t\t(SCREEN_OFFSET_Y - BODY_OFFSET_Y - LOWER_NOTCH) * size,\n\t\t\t\t\t\tdir);\n\t\t\t} else {\n\t\t\t\tg.drawPolygon(r.getPolygon());\n\t\t\t\tr = new KarelRegion();\n\t\t\t\tr.setOrigin(sx, sy, (SCREEN_OFFSET_X - BODY_OFFSET_X) * size,\n\t\t\t\t\t\t(SCREEN_OFFSET_Y - BODY_OFFSET_Y - LOWER_NOTCH) * size,\n\t\t\t\t\t\tdir);\n\t\t\t}\n\t\t\t\n\t\t\t// monitor outline\n\t\t\tr.addVector(SCREEN_WIDTH * size, 0, dir);\n\t\t\tr.addVector(0, SCREEN_HEIGHT * size, dir);\n\t\t\tr.addVector(-SCREEN_WIDTH * size, 0, dir);\n\t\t\tr.addVector(0, -SCREEN_HEIGHT * size, dir);\n\t\t\tif (pass == 1) {\n\t\t\t\tr.getPolygon().addPoint(sx, sy);\n\t\t\t\tg.fillPolygon(r.getPolygon());\n\t\t\t\tr = new KarelRegion();\n\t\t\t\tr.setOrigin(sx, sy, (SCREEN_OFFSET_X - BODY_OFFSET_X) * size\n\t\t\t\t\t\t- 1, (SCREEN_OFFSET_Y - BODY_OFFSET_Y - LOWER_NOTCH)\n\t\t\t\t\t\t* size - 1, dir);\n\t\t\t\tr.addVector(SCREEN_WIDTH * size + 2, 0, dir);\n\t\t\t\tr.addVector(0, SCREEN_HEIGHT * size + 2, dir);\n\t\t\t\tr.addVector(-(SCREEN_WIDTH * size + 2), 0, dir);\n\t\t\t\tr.addVector(0, -(SCREEN_HEIGHT * size + 2), dir);\n\t\t\t\tg.drawPolygon(r.getPolygon());\n\t\t\t} else {\n\t\t\t\tg.drawPolygon(r.getPolygon());\n\t\t\t}\n\t\t\t\n\t\t\tif (msKarel && pass == 2) {\n\t\t\t\tKarelRegion bow = new KarelRegion(Color.BLACK, Color.RED);\n\t\t\t\tint bowWidth = (int) (BODY_WIDTH * size / 4);\n\t\t\t\tint bowHeight = (int) (BODY_WIDTH * size / 4);\n\t\t\t\tdouble bowX = SCREEN_OFFSET_X * size + SCREEN_WIDTH/2 * size - bowWidth/2;\n\t\t\t\tdouble bowY = (SCREEN_OFFSET_Y - BODY_OFFSET_Y) * size;\n\t\t\t\tint triangleSize = bowWidth;\n\t\t\t\t\n\t\t\t\tbow.setOrigin(x, y, bowX, bowY, dir);\n\t\t\t\tbow.addVector(bowWidth, 0, dir);\n\t\t\t\tbow.addVector(0, bowHeight, dir);\n\t\t\t\tbow.addVector(-bowWidth, 0, dir);\n\t\t\t\tbow.addVector(0, -bowHeight, dir);\n\t\t\t\t\n\t\t\t\tKarelRegion triangle1 = new KarelRegion(Color.BLACK, Color.RED);\n\t\t\t\ttriangle1.setOrigin(x, y, bowX, bowY + bowHeight/2, dir);\n\t\t\t\ttriangle1.addVector(-triangleSize, -triangleSize/2, dir);\n\t\t\t\ttriangle1.addVector(0, triangleSize, dir);\n\t\t\t\ttriangle1.addVector(triangleSize, -triangleSize/2, dir);\n\n\t\t\t\tKarelRegion triangle2 = new KarelRegion(Color.BLACK, Color.RED);\n\t\t\t\ttriangle2.setOrigin(x, y, bowX + bowWidth, bowY + bowHeight/2, dir);\n\t\t\t\ttriangle2.addVector(triangleSize, triangleSize/2, dir);\n\t\t\t\ttriangle2.addVector(0, -triangleSize, dir);\n\t\t\t\ttriangle2.addVector(-triangleSize, triangleSize/2, dir);\n\n\t\t\t\ttriangle1.draw(g);\n\t\t\t\ttriangle2.draw(g);\n\t\t\t\tbow.draw(g);\n\t\t\t}\n\t\t}\n\t\t\n\t\t// little line slot for disk\n\t\tdouble SLOT_REAL_WIDTH = SLOT_WIDTH;\n\t\tif (msKarel) {\n\t\t\t// \"lipstick\"\n\t\t\tdouble LIP_HEIGHT = 0.07;\n\t\t\tSLOT_REAL_WIDTH *= 1.8;       // widen lips\n\t\t\t\n\t\t\tKarelRegion lips = new KarelRegion(Color.BLACK, Color.RED);\n\t\t\tlips.setOrigin(x, y, SCREEN_OFFSET_X * size + SCREEN_WIDTH * size,\n\t\t\t\t\t(SCREEN_OFFSET_Y * size + BODY_OFFSET_Y * size) / 2, dir);\n\t\t\tlips.addVector(-SLOT_REAL_WIDTH * size/2, -LIP_HEIGHT * size, dir);\n\t\t\tlips.addVector(-SLOT_REAL_WIDTH * size/2, LIP_HEIGHT * size, dir);\n\t\t\tlips.addVector(SLOT_REAL_WIDTH * size/2, LIP_HEIGHT * size, dir);\n\t\t\tlips.addVector(SLOT_REAL_WIDTH * size/2, -LIP_HEIGHT * size, dir);\n\t\t\tlips.draw(g);\n\t\t}\n\t\t\n\t\tKarelRegion r = new KarelRegion();\n\t\tr.setOrigin(x, y, SCREEN_OFFSET_X * size + SCREEN_WIDTH * size,\n\t\t\t\t(SCREEN_OFFSET_Y * size + BODY_OFFSET_Y * size) / 2, dir);\n\t\tr.addVector(-SLOT_REAL_WIDTH * size, 0, dir);\n\t\tg.setColor(Color.BLACK);\n\t\tg.drawPolygon(r.getPolygon());\n\t\t\n\t\tr = new KarelRegion();\n\t\tr.setOrigin(x, y, BODY_OFFSET_X * size, SCREEN_OFFSET_Y * size, dir);\n\t\t\n\t\t// Karel's feet\n\t\tr.addVector(-(UPPER_ANKLE * size + FOOT_WIDTH * size), 0, dir);\n\t\tr.addVector(0, -FOOT_LENGTH * size, dir);\n\t\tr.addVector(FOOT_WIDTH * size, 0, dir);\n\t\tr.addVector(0, FOOT_LENGTH * size - FOOT_WIDTH * size, dir);\n\t\tr.addVector(UPPER_ANKLE * size, 0, dir);\n\t\tr.addVector(0, FOOT_WIDTH * size, dir);\n\t\tg.fillPolygon(r.getPolygon());\n\t\tg.drawPolygon(r.getPolygon());\n\t\tr = new KarelRegion();\n\t\tr.setOrigin(x, y, SCREEN_OFFSET_X * size + SCREEN_WIDTH * size\n\t\t\t\t- SLOT_WIDTH * size, BODY_OFFSET_Y * size, dir);\n\t\tr.addVector(0, -(LOWER_ANKLE * size + FOOT_WIDTH * size), dir);\n\t\tr.addVector(FOOT_LENGTH * size, 0, dir);\n\t\tr.addVector(0, FOOT_WIDTH * size, dir);\n\t\tr.addVector(-(FOOT_LENGTH * size - FOOT_WIDTH * size), 0, dir);\n\t\tr.addVector(0, LOWER_ANKLE * size, dir);\n\t\tr.addVector(-FOOT_WIDTH * size, 0, dir);\n\t\tg.fillPolygon(r.getPolygon());\n\t\tg.drawPolygon(r.getPolygon());\n\t}\n\n\tpublic void drawBeeperForStyle(Graphics g, int x, int y, int size, int n,\n\t\t\tint border) {\n\t\tString label = \"\";\n\t\tif (size > MIN_LABEL && (displayOneFlag || n != 1)) {\n\t\t\tlabel = beeperLabel(n);\n\t\t}\n\t\tdrawBeeper(g, x, y, size, label, border, this);\n\t}\n\n\tpublic static void drawBeeper(Graphics g, int x, int y, int size, int n,\n\t\t\tint border, Component comp) {\n\t\tif (g == null)\n\t\t\treturn;\n\t\tint beeperSize = (int) Math.round(size * BEEPER_FRACTION);\n\t\tif (beeperSize % 2 == 0)\n\t\t\tbeeperSize--;\n\t\tint half = (beeperSize + 1) / 2;\n\t\tKarelRegion r = new KarelRegion();\n\t\tr.setOrigin(x, y, 0, -half, EAST);\n\t\tr.addVector(half, half, EAST);\n\t\tr.addVector(-half, half, EAST);\n\t\tr.addVector(-half, -half, EAST);\n\t\tr.addVector(half, -half, EAST);\n\t\tg.setColor(BEEPER_COLOR);\n\t\tg.fillPolygon(r.getPolygon());\n\t\tg.drawPolygon(r.getPolygon());\n\t\tg.setColor(Color.BLACK);\n\t\tfor (int i = 0; i < border; i++) {\n\t\t\tint delta = half + i;\n\t\t\tg.drawLine(x - delta, y, x, y + delta);\n\t\t\tg.drawLine(x, y + delta, x + delta, y);\n\t\t\tg.drawLine(x + delta, y, x, y - delta);\n\t\t\tg.drawLine(x, y - delta, x - delta, y);\n\t\t}\n\t\tif (size > MIN_LABEL && n != 1) {\n\t\t\tlabelBeeper(g, x, y, size, beeperLabel(n), comp);\n\t\t}\n\t}\n\n\tpublic static void drawBeeper(Graphics g, int x, int y, int size,\n\t\t\tString label, int border, Component comp) {\n\t\tif (g == null)\n\t\t\treturn;\n\t\tint beeperSize = (int) Math.round(size * BEEPER_FRACTION);\n\t\tif (beeperSize % 2 == 0)\n\t\t\tbeeperSize--;\n\t\tint half = (beeperSize + 1) / 2;\n\t\tKarelRegion r = new KarelRegion();\n\t\tr.setOrigin(x, y, 0, -half, EAST);\n\t\tr.addVector(half, half, EAST);\n\t\tr.addVector(-half, half, EAST);\n\t\tr.addVector(-half, -half, EAST);\n\t\tr.addVector(half, -half, EAST);\n\t\tg.setColor(BEEPER_COLOR);\n\t\tg.fillPolygon(r.getPolygon());\n\t\tg.drawPolygon(r.getPolygon());\n\t\tg.setColor(Color.BLACK);\n\t\tfor (int i = 0; i < border; i++) {\n\t\t\tint delta = half + i;\n\t\t\tg.drawLine(x - delta, y, x, y + delta);\n\t\t\tg.drawLine(x, y + delta, x + delta, y);\n\t\t\tg.drawLine(x + delta, y, x, y - delta);\n\t\t\tg.drawLine(x, y - delta, x - delta, y);\n\t\t}\n\t\tlabelBeeper(g, x, y, size, label, comp);\n\t}\n\n\tpublic static void labelBeeper(Graphics g, int x, int y, int size,\n\t\t\tString label, Component comp) {\n\t\tif (label.equals(\"�\")) {\n\t\t\tif (infinityImage == null) {\n\t\t\t\tinfinityImage = MediaTools.createImage(INFINITY);\n\t\t\t}\n\t\t\tg.drawImage(infinityImage, x - 4, y - 2, comp);\n\t\t} else {\n\t\t\tint psz = 7;\n\t\t\tswitch (label.length()) {\n\t\t\tcase 1:\n\t\t\tcase 2:\n\t\t\t\tpsz = BEEPER_NUMBER_FONT.getSize();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tpsz = 8;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tFont font = new Font(BEEPER_FONT_FAMILY, Font.PLAIN, psz);\n\t\t\tg.setFont(font);\n\t\t\tFontMetrics fm = g.getFontMetrics();\n\t\t\tg.drawString(label, x - fm.stringWidth(label) / 2,\n\t\t\t\t\ty + fm.getAscent() / 2);\n\t\t}\n\t}\n\n\tpublic static String beeperLabel(int n) {\n\t\tswitch (n) {\n\t\tcase INFINITE:\n\t\t\treturn \"�\";\n\t\tcase PLUS1:\n\t\t\treturn \"+1\";\n\t\tcase MINUS1:\n\t\t\treturn \"-1\";\n\t\tcase BLANKB:\n\t\t\treturn \"\";\n\t\tdefault:\n\t\t\treturn \"\" + n;\n\t\t}\n\t}\n\n\tpublic void updateWalls(Graphics g, Point pt) {\n\t\tif (g == null)\n\t\t\treturn;\n\t\tif (outOfBounds(pt))\n\t\t\treturn;\n\t\tint x = leftMargin + (pt.x - 1) * sqSize;\n\t\tint y = getSize().height - bottomMargin - 1 - pt.y * sqSize;\n\t\tg.setColor(Color.BLACK);\n\t\tfor (int dir = NORTH; dir <= WEST; dir++) {\n\t\t\tif (checkWall(pt, dir))\n\t\t\t\tdrawWall(g, x, y, dir);\n\t\t\tif (sqSize < DOUBLE_WALL_THRESHOLD)\n\t\t\t\tfixCornerPoint(g, pt, dir);\n\t\t}\n\t}\n\n\tprivate void drawWall(Graphics g, int x, int y, int dir) {\n\t\tif (g == null)\n\t\t\treturn;\n\t\tint x0, y0, x1, y1;\n\t\tswitch (dir) {\n\t\tcase NORTH:\n\t\t\tx0 = x;\n\t\t\ty0 = y;\n\t\t\tx1 = x0 + sqSize;\n\t\t\ty1 = y0;\n\t\t\tbreak;\n\t\tcase EAST:\n\t\t\tx0 = x + sqSize;\n\t\t\ty0 = y;\n\t\t\tx1 = x0;\n\t\t\ty1 = y0 + sqSize;\n\t\t\tbreak;\n\t\tcase SOUTH:\n\t\t\tx0 = x;\n\t\t\ty0 = y + sqSize;\n\t\t\tx1 = x0 + sqSize;\n\t\t\ty1 = y0;\n\t\t\tbreak;\n\t\tcase WEST:\n\t\t\tx0 = x;\n\t\t\ty0 = y;\n\t\t\tx1 = x0;\n\t\t\ty1 = y0 + sqSize;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tx0 = y0 = x1 = y1 = 0;\n\t\t\tbreak;\n\t\t}\n\t\tif (sqSize < DOUBLE_WALL_THRESHOLD) {\n\t\t\tg.drawLine(x0 - 1, y0 - 1, x1 - 1, y1 - 1);\n\t\t} else {\n\t\t\tif (x0 == x1) {\n\t\t\t\tg.drawLine(x0 - 1, y0 - 1, x1 - 1, y1);\n\t\t\t\tg.drawLine(x0, y0 - 1, x1, y1);\n\t\t\t} else {\n\t\t\t\tg.drawLine(x0 - 1, y0 - 1, x1, y1 - 1);\n\t\t\t\tg.drawLine(x0 - 1, y0, x1, y1);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic void drawCornerMarker(Graphics g, int x, int y) {\n\t\tif (g == null)\n\t\t\treturn;\n\t\tg.setColor(Color.BLACK);\n\t\tif (sqSize < CROSS_THRESHOLD) {\n\t\t\tg.drawLine(x, y, x, y);\n\t\t} else {\n\t\t\tg.drawLine(x - 1, y, x + 1, y);\n\t\t\tg.drawLine(x, y - 1, x, y + 1);\n\t\t}\n\t}\n\n\tprivate void fixCornerPoint(Graphics g, Point pt, int dir) {\n\t\tint left = leftFrom(dir);\n\t\tPoint pUp = adjacentPoint(pt, dir);\n\t\tPoint pLeft = adjacentPoint(pt, left);\n\t\tif (!outOfBounds(pUp) && checkWall(pUp, left)) {\n\t\t\tint x = leftMargin + (pUp.x - 1) * sqSize;\n\t\t\tint y = getSize().height - bottomMargin - 1 - pUp.y * sqSize;\n\t\t\tdrawWall(g, x, y, left);\n\t\t} else if (!outOfBounds(pLeft) && checkWall(pLeft, dir)) {\n\t\t\tint x = leftMargin + (pLeft.x - 1) * sqSize;\n\t\t\tint y = getSize().height - bottomMargin - 1 - pLeft.y * sqSize;\n\t\t\tdrawWall(g, x, y, dir);\n\t\t}\n\t}\n\n\tprivate Rectangle getCornerRect(Point pt) {\n\t\tint x = leftMargin + (pt.x - 1) * sqSize;\n\t\tint y = getSize().height - bottomMargin - 1 - pt.y * sqSize;\n\t\treturn new Rectangle(x - 1, y - 1, sqSize + 2, sqSize + 2);\n\t}\n\n\t/* File saving */\n\n\tpublic void save() {\n\t\tif (pathname == null)\n\t\t\treturn;\n\t\tPoint pt = new Point(0, 0);\n\t\ttry {\n\t\t\tPrintWriter wr = new PrintWriter(new FileWriter(pathname));\n\t\t\twr.println(\"Dimension: (\" + cols + \", \" + rows + \")\");\n\t\t\tfor (pt.x = 1; pt.x <= cols; pt.x++) {\n\t\t\t\tfor (pt.y = 1; pt.y <= rows; pt.y++) {\n\t\t\t\t\tif (pt.x > 1 && checkWall(pt, WEST)) {\n\t\t\t\t\t\twr.println(\"Wall: (\" + pt.x + \", \" + pt.y + \") west\");\n\t\t\t\t\t}\n\t\t\t\t\tif (pt.y > 1 && checkWall(pt, SOUTH)) {\n\t\t\t\t\t\twr.println(\"Wall: (\" + pt.x + \", \" + pt.y + \") south\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (pt.x = 1; pt.x <= cols; pt.x++) {\n\t\t\t\tfor (pt.y = 1; pt.y <= rows; pt.y++) {\n\t\t\t\t\tColor color = getCornerColor(pt);\n\t\t\t\t\tif (color != null) {\n\t\t\t\t\t\twr.println(\"Color: (\" + pt.x + \", \" + pt.y + \") \"\n\t\t\t\t\t\t\t\t+ encodeColor(color));\n\t\t\t\t\t}\n\t\t\t\t\tint nBeepers = getBeepersOnCorner(pt);\n\t\t\t\t\tif (nBeepers != 0) {\n\t\t\t\t\t\tString str = (nBeepers == INFINITE) ? \"INFINITE\" : \"\"\n\t\t\t\t\t\t\t\t+ nBeepers;\n\t\t\t\t\t\twr.println(\"Beeper: (\" + pt.x + \", \" + pt.y + \") \"\n\t\t\t\t\t\t\t\t+ str);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tIterator<KarelInterface> iterator = karels.iterator();\n\t\t\twhile (iterator.hasNext()) {\n\t\t\t\tKarelInterface karel = iterator.next();\n\t\t\t\tString dirName = \"Error\";\n\t\t\t\tswitch (karel.getDirection()) {\n\t\t\t\tcase NORTH:\n\t\t\t\t\tdirName = \"north\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase EAST:\n\t\t\t\t\tdirName = \"east\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase SOUTH:\n\t\t\t\t\tdirName = \"south\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase WEST:\n\t\t\t\t\tdirName = \"west\";\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tPoint loc = karel.getLocation();\n\t\t\t\twr.println(\"Karel: (\" + loc.x + \", \" + loc.y + \") \" + dirName);\n\t\t\t\tint nBeepers = karel.getBeepersInBag();\n\t\t\t\tString str = (nBeepers == INFINITE) ? \"INFINITE\" : \"\"\n\t\t\t\t\t\t+ nBeepers;\n\t\t\t\tif (getKarelCount() == 1) {\n\t\t\t\t\twr.println();\n\t\t\t\t\twr.println(\"BeeperBag: \" + str);\n\t\t\t\t} else {\n\t\t\t\t\twr.println(\" \" + str);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (monitor != null) {\n\t\t\t\twr.println(\"Speed: \" + speedFormat.format(monitor.getSpeed()));\n\t\t\t}\n\t\t\twr.close();\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(\"\" + ex);\n\t\t}\n\t\tPlatform.setFileTypeAndCreator(pathname, \"TEXT\", \"CWIE\");\n\t}\n\n\t/* File loading */\n\n\tpublic void load(String lines[]) {\n\t\tString program = \"\";\n\t\tfor (int i = 0; i < lines.length; i++) {\n\t\t\tprogram += lines[i] + '\\n';\n\t\t}\n\t\tload(new StringReader(program));\n\t}\n\n\tpublic void load(File file) {\n\t\ttry {\n\t\t\tpathname = file.getPath();\n\t\t\tReader rd = new FileReader(file);\n\t\t\tload(rd);\n\t\t\trd.close();\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(\"I/O error reading map file\");\n\t\t}\n\t}\n\n\tpublic void load(String pathname) {\n\t\ttry {\n\t\t\tthis.pathname = pathname;\n\t\t\tReader rd = new FileReader(pathname);\n\t\t\tload(rd);\n\t\t\trd.close();\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(\"I/O error reading map file\");\n\t\t}\n\t}\n\n\tpublic void load(Reader rd) {\n\t\ttry {\n\t\t\tsetRepaintFlag(false);\n\t\t\tlastBeeperCount = INFINITE;\n\t\t\ttokenizer = new StreamTokenizer(rd);\n\t\t\ttokenizer.eolIsSignificant(true);\n\t\t\ttokenizer.lowerCaseMode(true);\n\t\t\ttokenizer.resetSyntax();\n\t\t\ttokenizer.wordChars('A', 'Z');\n\t\t\ttokenizer.wordChars('a', 'z');\n\t\t\ttokenizer.wordChars('0', '9');\n\t\t\ttokenizer.wordChars('.', '.');\n\t\t\ttokenizer.wordChars('_', '_');\n\t\t\ttokenizer.whitespaceChars(' ', ' ');\n\t\t\ttokenizer.whitespaceChars('\\t', '\\t');\n\t\t\ttokenizer.whitespaceChars('\\r', '\\r');\n\t\t\twhile (readMapLine()) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t\trd.close();\n\t\t\tsetRepaintFlag(true);\n\t\t\trepaint();\n\t\t} catch (IOException ex) {\n\t\t\tsetRepaintFlag(true);\n\t\t\tthrow new ErrorException(\"I/O error reading map file\");\n\t\t}\n\t}\n\t\n\tpublic void setMsKarel(boolean value) {\n\t\tthis.msKarel = value;\n\t\trepaint();\n\t}\n\n\tpublic void setInteractiveMode(boolean value) {\n\t\tthis.interactiveMode = value;\n\t\tif (value) {\n\t\t\tString message = \"\";\n\t\t\tmessage += \"Karel interactive mode keys:\\n\";\n\t\t\tmessage += \"----------------------------\\n\";\n\t\t\tmessage += \"Up Arrow = move\\n\";\n\t\t\tmessage += \"Left Arrow = turnLeft\\n\";\n\t\t\tmessage += \"Right Arrow = turnRight (SuperKarel only)\\n\";\n\t\t\tmessage += \"Down Arrow = turnAround (SuperKarel only)\\n\";\n\t\t\tmessage += \"PgUp = pickBeeper\\n\";\n\t\t\tmessage += \"PgDown = putBeeper\\n\";\n\t\t\tJOptionPane.showMessageDialog(this, message);\n\t\t}\n\t}\n\n\tprivate boolean readMapLine() {\n\t\tint token = nextToken();\n\t\tswitch (token) {\n\t\tcase StreamTokenizer.TT_EOF:\n\t\t\treturn false;\n\t\tcase StreamTokenizer.TT_EOL:\n\t\t\treturn true;\n\t\tcase StreamTokenizer.TT_WORD:\n\t\t\tString cmd = tokenizer.sval;\n\t\t\tif (nextToken() != ':') {\n\t\t\t\tthrow new ErrorException(\"Missing colon after \" + cmd);\n\t\t\t}\n\t\t\tif (cmd.equals(\"dimension\")) {\n\t\t\t\tdimensionCommand();\n\t\t\t} else if (cmd.equals(\"karel\") || cmd.equals(\"turtle\")) {\n\t\t\t\tkarelCommand();\n\t\t\t} else if (cmd.equals(\"wall\")) {\n\t\t\t\twallCommand();\n\t\t\t} else if (cmd.equals(\"mark\") || cmd.equals(\"color\")) {\n\t\t\t\tsetColorCommand();\n\t\t\t} else if (cmd.equals(\"speed\")) {\n\t\t\t\tspeedCommand();\n\t\t\t} else if (cmd.equals(\"beeper\")) {\n\t\t\t\tbeeperCommand();\n\t\t\t} else if (cmd.equals(\"beeperbag\")) {\n\t\t\t\tbeeperBagCommand();\n\t\t\t} else {\n\t\t\t\tthrow new ErrorException(\"Illegal command: \" + cmd);\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow new ErrorException(\"Illegal character '\" + (char) token + \"'\");\n\t\t}\n\t\treturn (true);\n\t}\n\n\tprivate void dimensionCommand() {\n\t\tverifyToken('(');\n\t\tint cols = scanInt();\n\t\tverifyToken(',');\n\t\tint rows = scanInt();\n\t\tverifyToken(')');\n\t\tverifyToken(StreamTokenizer.TT_EOL);\n\t\tinit(cols, rows);\n\t}\n\n\tprivate void karelCommand() {\n\t\tPoint pt = new Point(0, 0);\n\t\tint dir = EAST;\n\t\tint nBeepers = lastBeeperCount;\n\t\tverifyToken('(');\n\t\tpt.x = scanInt();\n\t\tverifyToken(',');\n\t\tpt.y = scanInt();\n\t\tverifyToken(')');\n\t\tif (nextToken() != StreamTokenizer.TT_WORD) {\n\t\t\tthrow new ErrorException(\"Illegal direction\");\n\t\t}\n\t\tif (\"north\".startsWith(tokenizer.sval)) {\n\t\t\tdir = NORTH;\n\t\t} else if (\"east\".startsWith(tokenizer.sval)) {\n\t\t\tdir = EAST;\n\t\t} else if (\"south\".startsWith(tokenizer.sval)) {\n\t\t\tdir = SOUTH;\n\t\t} else if (\"west\".startsWith(tokenizer.sval)) {\n\t\t\tdir = WEST;\n\t\t} else {\n\t\t\tthrow new ErrorException(\"Illegal direction \" + tokenizer.sval);\n\t\t}\n\t\tint token = nextToken();\n\t\tif (token == StreamTokenizer.TT_WORD) {\n\t\t\tif (\"infinite\".startsWith(tokenizer.sval)\n\t\t\t\t\t|| \"infinity\".startsWith(tokenizer.sval)) {\n\t\t\t\tnBeepers = INFINITE;\n\t\t\t} else {\n\t\t\t\ttry {\n\t\t\t\t\tnBeepers = Integer.parseInt(tokenizer.sval);\n\t\t\t\t} catch (NumberFormatException ex) {\n\t\t\t\t\tthrow new ErrorException(\"Illegal beeper bag value\");\n\t\t\t\t}\n\t\t\t}\n\t\t\ttoken = nextToken();\n\t\t}\n\t\tif (token != StreamTokenizer.TT_EOL) {\n\t\t\tthrow new ErrorException(\"Unexpected tokens at end of line\");\n\t\t}\n\t\tlastKarel = getKarel();\n\t\tif (lastKarel != null) {\n\t\t\tlastKarel.setLocation(pt.x, pt.y);\n\t\t\tlastKarel.setDirection(dir);\n\t\t\tlastKarel.setBeepersInBag(nBeepers);\n\t\t}\n\t}\n\n\tprivate void wallCommand() {\n\t\tPoint pt = new Point(0, 0);\n\t\tint dir = EAST;\n\t\tverifyToken('(');\n\t\tpt.x = scanInt();\n\t\tverifyToken(',');\n\t\tpt.y = scanInt();\n\t\tverifyToken(')');\n\t\tif (nextToken() != StreamTokenizer.TT_WORD) {\n\t\t\tthrow new ErrorException(\"Illegal direction\");\n\t\t}\n\t\tif (\"north\".startsWith(tokenizer.sval)) {\n\t\t\tdir = NORTH;\n\t\t} else if (\"east\".startsWith(tokenizer.sval)) {\n\t\t\tdir = EAST;\n\t\t} else if (\"south\".startsWith(tokenizer.sval)) {\n\t\t\tdir = SOUTH;\n\t\t} else if (\"west\".startsWith(tokenizer.sval)) {\n\t\t\tdir = WEST;\n\t\t} else {\n\t\t\tthrow new ErrorException(\"Illegal direction \" + tokenizer.sval);\n\t\t}\n\t\tverifyToken(StreamTokenizer.TT_EOL);\n\t\tsetWall(pt, dir);\n\t}\n\n\tprivate void setColorCommand() {\n\t\tPoint pt = new Point(0, 0);\n\t\tString colorName = null;\n\t\tverifyToken('(');\n\t\tpt.x = scanInt();\n\t\tverifyToken(',');\n\t\tpt.y = scanInt();\n\t\tverifyToken(')');\n\t\tint tt = nextToken();\n\t\tif (tt != StreamTokenizer.TT_EOL) {\n\t\t\tif (tt != StreamTokenizer.TT_WORD) {\n\t\t\t\tthrow new ErrorException(\"Missing color name\");\n\t\t\t}\n\t\t\tcolorName = tokenizer.sval.toLowerCase();\n\t\t\tverifyToken(StreamTokenizer.TT_EOL);\n\t\t}\n\t\tsetCornerColor(pt, decodeColor(colorName));\n\t}\n\n\tprivate void speedCommand() {\n\t\tif (nextToken() != StreamTokenizer.TT_WORD) {\n\t\t\tthrow new ErrorException(\"I expected a number\");\n\t\t}\n\t\tdouble speed = Double.valueOf(tokenizer.sval).doubleValue();\n\t\tverifyToken(StreamTokenizer.TT_EOL);\n\t\tif (monitor != null)\n\t\t\tmonitor.setSpeed(speed);\n\t}\n\n\tprotected void beeperBagCommand() {\n\t\tif (nextToken() != StreamTokenizer.TT_WORD) {\n\t\t\tthrow new ErrorException(\"Illegal beeper count\");\n\t\t}\n\t\tint nBeepers = 0;\n\t\tif (\"infinite\".startsWith(tokenizer.sval)\n\t\t\t\t|| \"infinity\".startsWith(tokenizer.sval)) {\n\t\t\tnBeepers = INFINITE;\n\t\t} else {\n\t\t\ttokenizer.pushBack();\n\t\t\tnBeepers = scanInt();\n\t\t}\n\t\tverifyToken(StreamTokenizer.TT_EOL);\n\t\tif (lastKarel == null) {\n\t\t\tlastBeeperCount = nBeepers;\n\t\t} else {\n\t\t\tlastKarel.setBeepersInBag(nBeepers);\n\t\t}\n\t}\n\n\tprotected void beeperCommand() {\n\t\tPoint pt = new Point(0, 0);\n\t\t// int dir = EAST;\n\t\tverifyToken('(');\n\t\tpt.x = scanInt();\n\t\tverifyToken(',');\n\t\tpt.y = scanInt();\n\t\tverifyToken(')');\n\t\tint nBeepers = 1;\n\t\tint token = nextToken();\n\t\tif (token != StreamTokenizer.TT_EOL) {\n\t\t\tif (token != StreamTokenizer.TT_WORD) {\n\t\t\t\tthrow new ErrorException(\"Illegal beeper count\");\n\t\t\t}\n\t\t\tif (\"infinite\".startsWith(tokenizer.sval)\n\t\t\t\t\t|| \"infinity\".startsWith(tokenizer.sval)) {\n\t\t\t\tnBeepers = INFINITE;\n\t\t\t} else {\n\t\t\t\ttokenizer.pushBack();\n\t\t\t\tnBeepers = scanInt();\n\t\t\t}\n\t\t\tverifyToken(StreamTokenizer.TT_EOL);\n\t\t}\n\t\tsetBeepersOnCorner(pt, nBeepers);\n\t}\n\n\tprotected void ignoreCommand() {\n\t\twhile (nextToken() != StreamTokenizer.TT_EOL) {\n\t\t\t/* Empty */\n\t\t}\n\t}\n\n\tprivate void verifyToken(int token) {\n\t\tif (nextToken() != token) {\n\t\t\tif (token == StreamTokenizer.TT_EOL) {\n\t\t\t\tthrow new ErrorException(\"Unexpected tokens at end of line\");\n\t\t\t}\n\t\t\tthrow new ErrorException(\"I expected a '\" + (char) token + \"'\");\n\t\t}\n\t}\n\n\tprivate int scanInt() {\n\t\tif (nextToken() != StreamTokenizer.TT_WORD) {\n\t\t\tthrow new ErrorException(\"I expected an integer\");\n\t\t}\n\t\ttry {\n\t\t\treturn Integer.parseInt(tokenizer.sval);\n\t\t} catch (NumberFormatException ex) {\n\t\t\tthrow new ErrorException(\"Illegal integer\");\n\t\t}\n\t}\n\n\tprivate int nextToken() {\n\t\tint token = 0;\n\t\ttry {\n\t\t\ttoken = tokenizer.nextToken();\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(\"Exception: \" + ex);\n\t\t}\n\t\tif (TOKEN_TRACE) {\n\t\t\tswitch (token) {\n\t\t\tcase StreamTokenizer.TT_EOF:\n\t\t\t\tSystem.out.println(\"<EOF>\");\n\t\t\t\tbreak;\n\t\t\tcase StreamTokenizer.TT_EOL:\n\t\t\t\tSystem.out.println();\n\t\t\t\tbreak;\n\t\t\tcase StreamTokenizer.TT_WORD:\n\t\t\t\tSystem.out.print(tokenizer.sval + \" \");\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tSystem.out.print((char) token + \" \");\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn ((token == '\\n') ? StreamTokenizer.TT_EOL : token);\n\t}\n\n\tprivate static class Corner {\n\t\tpublic Color color;\n\t\tpublic boolean wallSouth;\n\t\tpublic boolean wallWest;\n\t\tpublic int nBeepers;\n\t}\n\n\tprivate static class KarelRegion {\n\t\tpublic static final double EPSILON = 0.00000000001;\n\n\t\t/* Private state */\n\t\tprivate Polygon p;\n\t\tprivate Color outline;\n\t\tprivate Color fill;\n\t\tprivate double x;\n\t\tprivate double y;\n\n\t\tpublic KarelRegion() {\n\t\t\tp = new Polygon();\n\t\t\tx = y = 0;\n\t\t}\n\n\t\tpublic KarelRegion(Color outline, Color fill) {\n\t\t\tthis();\n\t\t\tthis.outline = outline;\n\t\t\tthis.fill = fill;\n\t\t}\n\n\t\tpublic void draw(Graphics g) {\n\t\t\tColor old = g.getColor();\n\t\t\tif (fill != null) {\n\t\t\t\tg.setColor(fill);\n\t\t\t\tg.fillPolygon(p);\n\t\t\t}\n\t\t\tif (outline != null) {\n\t\t\t\tg.setColor(outline);\n\t\t\t}\n\t\t\tg.drawPolygon(p);\n\t\t\tg.setColor(old);\n\t\t}\n\t\t\n\t\tpublic Polygon getPolygon() {\n\t\t\treturn p;\n\t\t}\n\n\t\tpublic void setOrigin(int x, int y) {\n\t\t\tif (p.npoints != 0) {\n\t\t\t\tthrow new ErrorException(\"setOrigin called on nonempty region\");\n\t\t\t}\n\t\t\tthis.x = x;\n\t\t\tthis.y = y;\n\t\t}\n\n\t\tpublic void setOrigin(int x, int y, double dx, double dy, int dir) {\n\t\t\tsetOrigin(x, y);\n\t\t\taddVector(dx, dy, dir);\n\t\t}\n\n\t\tpublic void addVector(double dx, double dy, int dir) {\n\t\t\tx = getRotatedX(x, y, dx, dy, dir);\n\t\t\ty = getRotatedY(x, y, dx, dy, dir);\n\t\t\tp.addPoint((int) Math.round(x + EPSILON), (int) Math.round(y + EPSILON));\n\t\t}\n\t\t\n\t\tpublic static double getRotatedX(double originX, double originY, double dx, double dy, int dir) {\n\t\t\tswitch (dir) {\n\t\t\tcase KarelWorld.EAST:\n\t\t\t\treturn originX + dx;\n\t\t\tcase KarelWorld.NORTH:\n\t\t\t\treturn originX - dy;\n\t\t\tcase KarelWorld.WEST:\n\t\t\t\treturn originX - dx;\n\t\t\tcase KarelWorld.SOUTH:\n\t\t\t\treturn originX + dy;\n\t\t\tdefault:\n\t\t\t\treturn originX + dx;\n\t\t\t}\n\t\t}\n\n\t\tpublic static double getRotatedY(double originX, double originY, double dx, double dy, int dir) {\n\t\t\tswitch (dir) {\n\t\t\tcase KarelWorld.EAST:\n\t\t\t\treturn originY - dy;\n\t\t\tcase KarelWorld.NORTH:\n\t\t\t\treturn originY - dx;\n\t\t\tcase KarelWorld.WEST:\n\t\t\t\treturn originY + dy;\n\t\t\tcase KarelWorld.SOUTH:\n\t\t\t\treturn originY + dx;\n\t\t\tdefault:\n\t\t\t\treturn originY - dy;\n\t\t\t}\n\t\t}\n\n//\t\tpublic static void rotatePoint(Point origin, Point delta, int dir) {\n//\t\t\tint newX = (int) getRotatedX(origin.x, origin.y, delta.x, delta.y, dir);\n//\t\t\tint newY = (int) getRotatedY(origin.x, origin.y, delta.x, delta.y, dir);\n//\t\t\tdelta.x = newX;\n//\t\t\tdelta.y = newY;\n//\t\t}\n\n\t\tpublic int getCurrentX() {\n\t\t\treturn p.xpoints[p.npoints - 1];\n\t\t}\n\n\t\tpublic int getCurrentY() {\n\t\t\treturn p.ypoints[p.npoints - 1];\n\t\t}\n\t}\n\n\tprivate class KarelWorldListener implements MouseListener,\n\t\t\tMouseMotionListener, ComponentListener, KeyListener {\n\n\t\tpublic void mousePressed(MouseEvent e) {\n\t\t\trequestFocus();\n\t\t\tmousePressedHook(e);\n\t\t}\n\n\t\tpublic void mouseClicked(MouseEvent e) {\n\t\t}\n\n\t\tpublic void mouseReleased(MouseEvent e) {\n\t\t}\n\n\t\tpublic void mouseEntered(MouseEvent e) {\n\t\t\trequestFocus();\n\t\t}\n\n\t\tpublic void mouseExited(MouseEvent e) {\n\t\t}\n\n\t\tpublic void mouseDragged(MouseEvent e) {\n\t\t\trequestFocus();\n\t\t\tmouseDraggedHook(e);\n\t\t}\n\n\t\tpublic void mouseMoved(MouseEvent e) {\n\t\t\trequestFocus();\n\t\t}\n\n\t\tpublic void componentResized(ComponentEvent e) {\n\t\t\tcomponentResizedHook();\n\t\t}\n\n\t\tpublic void componentMoved(ComponentEvent e) {\n\t\t}\n\n\t\tpublic void componentShown(ComponentEvent e) {\n\t\t}\n\n\t\tpublic void componentHidden(ComponentEvent e) {\n\t\t}\n\t\t\n\t\tpublic void keyPressed(KeyEvent e) {\n\t\t\t// don't handle key presses unless we are in interactive mode\n\t\t\t// and Karel world is not being edited\n\t\t\tKarelInterface karel = activeKarel != null ? activeKarel : lastKarel;\n\t\t\tif (!interactiveMode || editMode || karel == null) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\ttry {\n\t\t\t\tint key = e.getKeyCode();\n\t\t\t\tif (key == KeyEvent.VK_LEFT) {\n\t\t\t\t\tkarel.turnLeft();\n\t\t\t\t\tSystem.out.println(\"turnLeft();\");\n\t\t\t\t\trepaint();\n\t\t\t\t} else if (key == KeyEvent.VK_RIGHT && karel instanceof SuperKarel) {\n\t\t\t\t\t((SuperKarel) karel).turnRight();\n\t\t\t\t\tSystem.out.println(\"turnRight();\");\n\t\t\t\t\trepaint();\n\t\t\t\t} else if (key == KeyEvent.VK_DOWN && karel instanceof SuperKarel) {\n\t\t\t\t\t((SuperKarel) karel).turnAround();\n\t\t\t\t\tSystem.out.println(\"turnAround();\");\n\t\t\t\t\trepaint();\n\t\t\t\t} else if (key == KeyEvent.VK_UP) {\n\t\t\t\t\tkarel.move();\n\t\t\t\t\tSystem.out.println(\"move();\");\n\t\t\t\t\trepaint();\n\t\t\t\t} else if (key == KeyEvent.VK_PAGE_UP) {\n\t\t\t\t\tkarel.pickBeeper();\n\t\t\t\t\tSystem.out.println(\"pickBeeper();\");\n\t\t\t\t\trepaint();\n\t\t\t\t} else if (key == KeyEvent.VK_PAGE_DOWN) {\n\t\t\t\t\tkarel.putBeeper();\n\t\t\t\t\tSystem.out.println(\"putBeeper();\");\n\t\t\t\t\trepaint();\n\t\t\t\t}\n\t\t\t} catch (ErrorException ex) {\n\t\t\t\tKarelErrorDialog errorDialog = new KarelErrorDialog(KarelWorld.this);\n\t\t\t\terrorDialog.error(ex.getMessage());\n\t\t\t}\n\t\t}\n\t\t\n\t\tpublic void keyReleased(KeyEvent e) {\n\t\t\t\n\t\t}\n\t\t\n\t\tpublic void keyTyped(KeyEvent e) {\n\t\t\t\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/karel/KarelWorldEditor.java",
    "content": "/*\n * This file contains classes that implement the world editor.\n * - 2015/03/31: Changed to use Swing graphical components.\n */\n\npackage stanford.karel;\n\nimport acm.graphics.GraphicsUtils;\nimport acm.util.*;\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.util.*;\nimport javax.swing.*;\n\nclass KarelWorldEditor extends JComponent implements MouseListener {\n\t/* Private constants */\n\tprivate static String[] BEEPER_BAG = {\n\t\t\t\"47494638396123002F00D52000CBFFCB66330066660099999999993397976498\",\n\t\t\t\"3200986500CC9898323200CCCC98FFCC99CB9833CC9966333333643131643164\",\n\t\t\t\"CC660098CC98993333996633976464CCCCCCFFCBCBCB6533CC6666CCCC664444\",\n\t\t\t\"44646431DDDDDDCBFFFFFFFFCBEEEEEE777777888888AAAAAABBBBBB55555566\",\n\t\t\t\"6666440000320000910000910000910000910000910000910000910000910000\",\n\t\t\t\"9100009100009100009100009100009100009100009100009100009100009100\",\n\t\t\t\"0091000091000091000091000021F9040100001E002C0000000023002F004506\",\n\t\t\t\"FF408F70482C1A8FC8A4E7A3785428D007E7615228AF9F69E5C0E5620E182834\",\n\t\t\t\"C40929411C28664D6178BF847537CCA08429A147D1F1B4830F19737E5D6F6C62\",\n\t\t\t\"13254668057D62057F5E908415010A1F4A1F210E0E0F0E1B09280F2328091B0F\",\n\t\t\t\"A79B24574A080F1413141C014E96AB450A288C0C61111107BE847762091C4705\",\n\t\t\t\"097D727273070D6F0775116A150F0D441F01504F18056276616B5FE26C770561\",\n\t\t\t\"B61622260E010207D40F090D15B6469A9B2256460A229B0E66F5865CE0402AC0\",\n\t\t\t\"8904A71E0400C5E142402421BC75A300E221920F0A097561648082AA87253854\",\n\t\t\t\"A8D04B1AB077E00C256095A68FC93F6E0865F8468100850A280014F9D0C0891A\",\n\t\t\t\"FF68C19E11EA45E1801D07FA9630F2168E99A43FE40854C0A0F0929058DFA42E\",\n\t\t\t\"53F32D523843154C402862210D856E66ED74FBA2319C9D2805AE2028F5202897\",\n\t\t\t\"9169E23520D1C1A2DF800A4A7C4C42A244525B1D4A6C4A90C001070B23868070\",\n\t\t\t\"C0785389BE8039209C95D0714262871F7E3041CC5582130B1398B0FA57C88527\",\n\t\t\t\"136F3EE8E0B035916C8DF0D8BE75EA40802EB23820C0EC57C180BA810241ADF9\",\n\t\t\t\"00C500D14DB670E915CC8E9BB08393609432154A0492D5C1BDD3A3448314EF50\",\n\t\t\t\"BA482F0AC69BD107082A1A21512183390AD435561713A68283EC427400853985\",\n\t\t\t\"1C500001EFF8C15618ED3DF14076596C33C824FA8DB3C613D4D023C40710A401\",\n\t\t\t\"7F4E4D6C01156224604803450652B0868209DEE9E7A2206FD9F1C4064364E1CA\",\n\t\t\t\"3723EE32E15D776C034E08AC51900D1436C978873031A9275101E4090182905C\",\n\t\t\t\"39C2143336D55107060D04C0DA864E60F08459D22913941C0E2E90041E6671E0\",\n\t\t\t\"CE8B771D80480900D93240028F04C0C12415A481406DB675308004769A105010\",\n\t\t\t\"0021FF0B4D414347436F6E2004031039000000015772697474656E2062792047\",\n\t\t\t\"4946436F6E76657274657220322E342E33206F66204D6F6E6461792C204D6179\",\n\t\t\t\"2032352C2031393938003B\" };\n\tprivate static final int NORTH = KarelWorld.NORTH;\n\tprivate static final int EAST = KarelWorld.EAST;\n\tprivate static final int SOUTH = KarelWorld.SOUTH;\n\tprivate static final int WEST = KarelWorld.WEST;\n\tprivate static final int INFINITE = KarelWorld.INFINITE;\n\tprivate static final int PLUS1 = KarelWorld.PLUS1;\n\tprivate static final int MINUS1 = KarelWorld.MINUS1;\n\tprivate static final int WALL_TOOL = 1;\n\tprivate static final int COLOR_TOOL = 2;\n\tprivate static final int ROBOT_TOOL = 3;\n\tprivate static final int BEEPER_TOOL = 4;\n\tprivate static final int BEEPER_BAG_TOOL = 5;\n\tprivate static final int BIG_TOOL_SIZE = 20;\n\tprivate static final int COLOR_TOOL_SIZE = 12;\n\tprivate static final int KAREL_TOOL_SIZE = 28;\n\tprivate static final int BEEPER_TOOL_SIZE = 28;\n\tprivate static final int TOOL_SEP = 6;\n\tprivate static final int TOOL_Y_DELTA = 8;\n\t// private static final int TOOL_MARGIN = 20;\n\tprivate static final int TOOL_X = 8;\n\tprivate static final int TOOL_Y = 3;\n\t// private static final int LABEL_SEP = 5;\n\t// private static final int ROBOT_DELTA = 300;\n\t// private static final int ROBOT_SIZE = 22;\n\t// private static final int ROBOT_SEP = 15;\n\tprivate static final int SELECTED_PIXELS = 3;\n\tprivate static final int WALL_LENGTH = 12;\n\tprivate static final int BEEPER_BAG_WIDTH = 35;\n\tprivate static final int BEEPER_BAG_HEIGHT = 47;\n\tprivate static final int BAG_LABEL_DELTA_Y = 28;\n\tprivate static final int WIDTH = 7 * BIG_TOOL_SIZE + 10 * TOOL_SEP;\n\tprivate static final int HEIGHT = 3\n\t\t\t* (TOOL_Y + BIG_TOOL_SIZE + TOOL_Y_DELTA) + 3 * COLOR_TOOL_SIZE\n\t\t\t+ TOOL_Y_DELTA;\n\tprivate static final Color COLORS[] = { null, Color.BLACK, Color.DARK_GRAY,\n\t\t\tColor.GRAY, Color.LIGHT_GRAY, Color.WHITE, Color.RED, Color.PINK,\n\t\t\tColor.ORANGE, Color.YELLOW, Color.GREEN, Color.CYAN, Color.BLUE,\n\t\t\tColor.MAGENTA };\n\tprivate static final int NCOLORS = COLORS.length;\n\n\t/* Private state */\n\tprivate ArrayList<MapTool> tools;\n\tprivate KarelWorld world;\n\tprivate MapTool selectedTool;\n\tprivate MapTool oldTool;\n\tprivate MapTool beeperBagTool;\n\tprivate Image beeperBagImage;\n\n\tpublic KarelWorldEditor(KarelWorld world) {\n\t\tthis.world = world;\n\t\tinitEditorCanvas();\n\t\taddMouseListener(this);\n\t}\n\n\tpublic void initEditorCanvas() {\n\t\ttools = new ArrayList<MapTool>();\n\t\tint x = TOOL_X;\n\t\tint y = TOOL_Y;\n\t\tcreateWallTool(x, y, \"Draw Wall\");\n\t\tcreateWallTool(x += BIG_TOOL_SIZE + TOOL_SEP, y, \"Erase Wall\");\n\t\tcreateBeeperTool(x += BIG_TOOL_SIZE + 2 * TOOL_SEP, y, \"Single Beeper\",\n\t\t\t\t1);\n\t\tcreateBeeperTool(x += BIG_TOOL_SIZE + TOOL_SEP, y, \"Add Beeper\", PLUS1);\n\t\tcreateBeeperTool(x += BIG_TOOL_SIZE + TOOL_SEP, y, \"Subtract Beeper\",\n\t\t\t\tMINUS1);\n\t\tcreateBeeperTool(x += BIG_TOOL_SIZE + TOOL_SEP, y, \"Clear Beepers\", 0);\n\t\tcreateBeeperTool(x += BIG_TOOL_SIZE + TOOL_SEP, y, \"Infinite Beepers\",\n\t\t\t\tINFINITE);\n\t\tif (world.getKarelCount() == 1) {\n\t\t\tKarel karel = world.getKarel();\n\t\t\tx = TOOL_X;\n\t\t\ty += BIG_TOOL_SIZE + TOOL_Y_DELTA;\n\t\t\tcreateBeeperBagTool(x + 2 * KAREL_TOOL_SIZE + TOOL_SEP + 2\n\t\t\t\t\t* BIG_TOOL_SIZE, y);\n\t\t\tcreateKarelTool(x, y, \"East\", EAST);\n\t\t\tcreateKarelTool(x += KAREL_TOOL_SIZE, y, \"North\", NORTH);\n\t\t\tx = TOOL_X;\n\t\t\tcreateKarelTool(x, y + KAREL_TOOL_SIZE, \"West\", WEST);\n\t\t\tcreateKarelTool(x += KAREL_TOOL_SIZE, y + KAREL_TOOL_SIZE, \"South\",\n\t\t\t\t\tSOUTH);\n\t\t\tif (karel instanceof SuperKarel) {\n\t\t\t\tint x0 = TOOL_X + 2 * BIG_TOOL_SIZE + 2 * TOOL_SEP\n\t\t\t\t\t\t- COLOR_TOOL_SIZE;\n\t\t\t\tx = x0;\n\t\t\t\ty += Math.max(2 * KAREL_TOOL_SIZE, BEEPER_BAG_HEIGHT)\n\t\t\t\t\t\t+ TOOL_Y_DELTA;\n\t\t\t\tfor (int i = 0; i < NCOLORS; i++) {\n\t\t\t\t\tcreateColorTool(x += COLOR_TOOL_SIZE + TOOL_SEP, y,\n\t\t\t\t\t\t\tCOLOR_TOOL_SIZE, COLORS[i]);\n\t\t\t\t\tif (COLORS[i] == Color.RED) {\n\t\t\t\t\t\tx = x0;\n\t\t\t\t\t\ty += BIG_TOOL_SIZE;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tselectedTool = tools.get(0);\n\t}\n\n\tpublic Dimension getPreferredSize() {\n\t\treturn new Dimension(WIDTH, HEIGHT);\n\t}\n\n\tpublic MapTool getSelectedTool() {\n\t\treturn selectedTool;\n\t}\n\n\tpublic KarelWorld getWorld() {\n\t\treturn world;\n\t}\n\n\tpublic void drawTools(Graphics g) {\n\t\tIterator<MapTool> iterator = tools.iterator();\n\t\twhile (iterator.hasNext()) {\n\t\t\tdrawTool(g, (MapTool) iterator.next());\n\t\t}\n\t\tif (beeperBagTool != null)\n\t\t\tdrawBeeperBag(g);\n\t}\n\n\tpublic void drawKarelTool(Graphics g, MapTool tool) {\n\t\tworld.drawFancyKarel(g, tool.x + tool.size / 2, tool.y + tool.size / 2,\n\t\t\t\ttool.dir, tool.size);\n\t}\n\n\tpublic void drawBeeperTool(Graphics g, MapTool tool) {\n\t\tint border = (tool == getSelectedTool()) ? SELECTED_PIXELS : 1;\n\t\tKarelWorld.drawBeeper(g, tool.x + tool.size / 2,\n\t\t\t\ttool.y + tool.size / 2, BEEPER_TOOL_SIZE, tool.beeperDelta,\n\t\t\t\tborder, this);\n\t}\n\n\tpublic void drawBeeperBag(Graphics g) {\n\t\tint x = beeperBagTool.x;\n\t\tint y = beeperBagTool.y;\n\t\tif (beeperBagImage == null) {\n\t\t\tbeeperBagImage = MediaTools.createImage(BEEPER_BAG);\n\t\t}\n\t\tg.drawImage(beeperBagImage, beeperBagTool.x, beeperBagTool.y, this);\n\t\tx += BEEPER_BAG_WIDTH / 2;\n\t\ty += BAG_LABEL_DELTA_Y;\n\t\tKarel karel = world.getKarel();\n\t\tint nBeepers = (karel == null) ? 0 : karel.getBeepersInBag();\n\t\tKarelWorld.drawBeeper(g, x, y, BEEPER_TOOL_SIZE, nBeepers, 1, this);\n\t}\n\n\tpublic void defineTool(MapTool tool) {\n\t\ttools.add(tool);\n\t}\n\n\tpublic MapTool createWallTool(int x, int y, String label) {\n\t\tMapTool tool = new MapTool(WALL_TOOL, x, y, BIG_TOOL_SIZE);\n\t\ttool.label = label;\n\t\tdefineTool(tool);\n\t\treturn tool;\n\t}\n\n\tpublic MapTool createColorTool(int x, int y, int size, Color color) {\n\t\tMapTool tool = new MapTool(COLOR_TOOL, x, y, size);\n\t\ttool.color = color;\n\t\tdefineTool(tool);\n\t\treturn tool;\n\t}\n\n\tpublic MapTool createKarelTool(int x, int y, String label, int dir) {\n\t\tMapTool tool = new MapTool(ROBOT_TOOL, x, y, KAREL_TOOL_SIZE);\n\t\ttool.label = label;\n\t\ttool.dir = dir;\n\t\tdefineTool(tool);\n\t\treturn tool;\n\t}\n\n\tpublic MapTool createBeeperTool(int x, int y, String label, int beeperDelta) {\n\t\tMapTool tool = new MapTool(BEEPER_TOOL, x, y, BIG_TOOL_SIZE);\n\t\ttool.label = label;\n\t\ttool.beeperDelta = beeperDelta;\n\t\tdefineTool(tool);\n\t\treturn tool;\n\t}\n\n\tpublic MapTool createBeeperBagTool(int x, int y) {\n\t\tbeeperBagTool = new MapTool(BEEPER_BAG_TOOL, x, y, 0);\n\t\treturn beeperBagTool;\n\t}\n\n\tpublic void drawTool(Graphics g, MapTool tool) {\n\t\tg.setColor(getBackground());\n\t\tint span = tool.size + 2 * (SELECTED_PIXELS - 1) + 1;\n\t\tg.fillRect(tool.x - (SELECTED_PIXELS - 1), tool.y\n\t\t\t\t- (SELECTED_PIXELS - 1), span, span);\n\t\tg.setColor(Color.BLACK);\n\t\tswitch (tool.toolClass) {\n\t\tcase WALL_TOOL:\n\t\t\tdrawWallTool(g, tool);\n\t\t\tbreak;\n\t\tcase COLOR_TOOL:\n\t\t\tdrawColorTool(g, tool);\n\t\t\tbreak;\n\t\tcase ROBOT_TOOL:\n\t\t\tdrawKarelTool(g, tool);\n\t\t\tbreak;\n\t\tcase BEEPER_TOOL:\n\t\t\tdrawBeeperTool(g, tool);\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tpublic void drawWallTool(Graphics g, MapTool tool) {\n\t\tint border = (tool == selectedTool) ? SELECTED_PIXELS : 1;\n\t\tdrawSquare(g, tool.x, tool.y, tool.size, border, null);\n\t\tint x = tool.x + (tool.size - WALL_LENGTH + 1) / 2;\n\t\tint y = tool.y + (tool.size + 1) / 2;\n\t\tif (tool.label.equals(\"Erase Wall\")) {\n\t\t\tg.setColor(Color.GRAY);\n\t\t\tg.drawRect(x, y - 1, WALL_LENGTH, 2);\n\t\t\tg.setColor(Color.BLACK);\n\t\t} else {\n\t\t\tg.fillRect(x, y - 1, WALL_LENGTH, 2);\n\t\t}\n\t}\n\n\tpublic void drawColorTool(Graphics g, MapTool tool) {\n\t\tint border = (tool == selectedTool) ? SELECTED_PIXELS : 1;\n\t\tColor color = null;\n\t\tif (tool.color == null) {\n\t\t\tcolor = null;\n\t\t\tint x = tool.x + tool.size / 2;\n\t\t\tint y = tool.y + tool.size / 2;\n\t\t\tg.setColor(Color.WHITE);\n\t\t\tg.fillRect(tool.x, tool.y, tool.size, tool.size);\n\t\t\tg.setColor(Color.BLACK);\n\t\t\tg.drawLine(x - 1, y, x + 1, y);\n\t\t\tg.drawLine(x, y - 1, x, y + 1);\n\t\t} else {\n\t\t\tcolor = tool.color;\n\t\t}\n\t\tdrawSquare(g, tool.x, tool.y, tool.size, border, color);\n\t}\n\n\tpublic boolean inBeeperBag(Point pt) {\n\t\tif (beeperBagTool == null)\n\t\t\treturn false;\n\t\tint x = beeperBagTool.x;\n\t\tint y = beeperBagTool.y;\n\t\treturn (pt.x > x && pt.x < x + BEEPER_BAG_WIDTH && pt.y > y && pt.y < y\n\t\t\t\t+ BEEPER_BAG_HEIGHT);\n\t}\n\n\t/* Action callbacks */\n\n\tpublic void wallAction(Point pt, int dir) {\n\t\tMapTool tool = getSelectedTool();\n\t\tif (tool.toolClass != WALL_TOOL)\n\t\t\treturn;\n\t\tif (tool.label.equals(\"Draw Wall\")) {\n\t\t\tworld.setWall(pt, dir);\n\t\t\tworld.repaint();\n\t\t} else if (tool.label.equals(\"Erase Wall\")) {\n\t\t\tworld.clearWall(pt, dir);\n\t\t\tworld.repaint();\n\t\t}\n\t}\n\n\tpublic void cornerAction(Point pt) {\n\t\tMapTool tool = getSelectedTool();\n\t\tif (tool.toolClass == COLOR_TOOL) {\n\t\t\tworld.setCornerColor(pt, tool.color);\n\t\t\tworld.repaint();\n\t\t} else if (tool.toolClass == BEEPER_TOOL) {\n\t\t\tint nBeepers = world.getBeepersOnCorner(pt);\n\t\t\tnBeepers = KarelWorld.setBeepers(nBeepers, tool.beeperDelta);\n\t\t\tworld.setBeepersOnCorner(pt, nBeepers);\n\t\t\tworld.repaint();\n\t\t}\n\t}\n\n\tpublic void toolAction(Point pt) {\n\t\tif (inBeeperBag(pt)) {\n\t\t\tMapTool tool = getSelectedTool();\n\t\t\tif (tool == null)\n\t\t\t\treturn;\n\t\t\tif (tool.toolClass == BEEPER_TOOL) {\n\t\t\t\tKarel karel = world.getKarel();\n\t\t\t\tif (karel != null) {\n\t\t\t\t\tint nBeepers = karel.getBeepersInBag();\n\t\t\t\t\tnBeepers = KarelWorld\n\t\t\t\t\t\t\t.setBeepers(nBeepers, tool.beeperDelta);\n\t\t\t\t\tkarel.setBeepersInBag(nBeepers);\n\t\t\t\t\tdrawBeeperBag(getGraphics());\n\t\t\t\t\trepaint();\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tMapTool tool = findTool(pt);\n\t\t\tif (tool == null)\n\t\t\t\treturn;\n\t\t\tif (tool.toolClass == ROBOT_TOOL) {\n\t\t\t\tKarel karel = world.getKarel();\n\t\t\t\tif (karel != null) {\n\t\t\t\t\tkarel.setDirection(tool.dir);\n\t\t\t\t}\n\t\t\t\tworld.repaint();\n\t\t\t} else {\n\t\t\t\toldTool = selectedTool;\n\t\t\t\tselectedTool = tool;\n\t\t\t\tdrawTool(getGraphics(), tool);\n\t\t\t\tdrawTool(getGraphics(), oldTool);\n\t\t\t\trepaint();\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic void paintComponent(Graphics g) {\n\t\tsuper.paintComponent(g);\n\t\tGraphicsUtils.setAntialiasing(g, true);\n\t\tdrawTools(g);\n\t}\n\n\t/* MouseListener interface */\n\n\tpublic void mousePressed(MouseEvent e) {\n\t\ttoolAction(e.getPoint());\n\t}\n\n\tpublic void mouseClicked(MouseEvent e) {\n\t}\n\n\tpublic void mouseReleased(MouseEvent e) {\n\t}\n\n\tpublic void mouseEntered(MouseEvent e) {\n\t}\n\n\tpublic void mouseExited(MouseEvent e) {\n\t}\n\n\t/* Private methods */\n\n\tprivate void drawSquare(Graphics g, int x, int y, int size, int border,\n\t\t\tColor color) {\n\t\tif (color != null) {\n\t\t\tg.setColor(color);\n\t\t\tg.fillRect(x, y, size, size);\n\t\t}\n\t\tg.setColor(Color.BLACK);\n\t\tfor (int i = 0; i < border; i++) {\n\t\t\tg.drawRect(x - i, y - i, size + 2 * i, size + 2 * i);\n\t\t}\n\t}\n\n\tprivate MapTool findTool(Point pt) {\n\t\tIterator<MapTool> iterator = tools.iterator();\n\t\twhile (iterator.hasNext()) {\n\t\t\tMapTool tool = iterator.next();\n\t\t\tif (tool.contains(pt))\n\t\t\t\treturn tool;\n\t\t}\n\t\treturn null;\n\t}\n\n\tprivate static class MapTool {\n\t\tpublic MapTool(int toolClass, int x, int y, int size) {\n\t\t\tthis.toolClass = toolClass;\n\t\t\tthis.x = x;\n\t\t\tthis.y = y;\n\t\t\tthis.size = size;\n\t\t}\n\n\t\tpublic boolean contains(Point pt) {\n\t\t\treturn (pt.x >= x && pt.x < x + size && pt.y >= y && pt.y < y + size);\n\t\t}\n\n\t\tpublic int toolClass;\n\t\tpublic int x, y, dir, size, beeperDelta;\n\t\tpublic String label;\n\t\tpublic Color color;\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/karel/KarelWorldMonitor.java",
    "content": "package stanford.karel;\n\nimport java.awt.Point;\n\ninterface KarelWorldMonitor {\n\t/**\n\t * This action is invoked at the beginning of an editing session.\n\t */\n\tpublic void startWorldEdit();\n\n\t/**\n\t * This action is invoked at the end of an editing session.\n\t */\n\tpublic void endWorldEdit();\n\n\t/**\n\t * This action is invoked when the mouse is clicked on a wall, which is the\n\t * wall in the indicated direction from the Karel coordinates given by pt.\n\t */\n\tpublic void wallAction(Point pt, int dir);\n\n\t/**\n\t * This action is invoked when the mouse is clicked on a corner, which is\n\t * the wall in the indicated direction from the given point.\n\t */\n\tpublic void cornerAction(Point pt);\n\n\t/**\n\t * This action is invoked when karel executes an instruction.\n\t */\n\tpublic void trace();\n\n\t/**\n\t * This method is invoked when a world map file needs to set the simulation\n\t * speed.\n\t */\n\tpublic void setSpeed(double speed);\n\n\t/**\n\t * This method is invoked when the KarelWorld class needs to get the\n\t * simulation speed.\n\t */\n\tpublic double getSpeed();\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/karel/LoadWorldDialog.java",
    "content": "package stanford.karel;\n\nimport java.awt.FileDialog;\nimport java.io.File;\nimport java.io.FilenameFilter;\nimport acm.util.JTFTools;\n\nclass LoadWorldDialog extends FileDialog implements FilenameFilter {\n\n\tpublic LoadWorldDialog(KarelWorld world) {\n\t\tsuper(JTFTools.getEnclosingFrame(world), \"Load World\");\n\t\tsetDirectory(KarelProgram.getWorldDirectory());\n\t\tsetFilenameFilter(this);\n\t}\n\n\tpublic boolean accept(File dir, String name) {\n\t\treturn (name.endsWith(KarelProgram.WORLD_EXTENSION));\n\t}\n}\n\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/karel/NewWorldDialog.java",
    "content": "package stanford.karel;\n\nimport java.awt.FileDialog;\n\nimport acm.util.JTFTools;\n\nclass NewWorldDialog extends FileDialog {\n\tpublic NewWorldDialog(KarelWorld world) {\n\t\tsuper(JTFTools.getEnclosingFrame(world), \"New World\", FileDialog.SAVE);\n\t\tsetDirectory(KarelProgram.getWorldDirectory());\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/karel/OptionTable.java",
    "content": "package stanford.karel;\n\nimport java.util.HashMap;\nimport java.util.StringTokenizer;\n\nclass OptionTable {\n\t/* Constants used in the parseOptions finite-state machine */\n\tprivate static final int INITIAL_STATE = 0;\n\tprivate static final int KEY_SEEN = 1;\n\tprivate static final int COLON_SEEN = 2;\n\tprivate static final int VALUE_SEEN = 3;\n\n\tprivate HashMap<String, String> table;\n\n\t/*\n\t * This method creates an empty option table and initializes it from the\n\t * specified string, if any.\n\t */\n\tpublic OptionTable() {\n\t\ttable = new HashMap<String, String>();\n\t}\n\n\tpublic OptionTable(String options) {\n\t\tthis();\n\t\tparseOptions(options);\n\t}\n\n\t/*\n\t * This method parses a string consisting of option specifications in one of\n\t * the two following forms:\n\t * \n\t * /key /key:value\n\t */\n\tpublic void parseOptions(String options) {\n\t\tparseOptions(options, table);\n\t}\n\n\t/*\n\t * This method returns true if the key has been specified in the option\n\t * table.\n\t */\n\tpublic boolean isSpecified(String key) {\n\t\treturn table.containsKey(key);\n\t}\n\n\t/*\n\t * This method looks up an option key and returns the corresponding value.\n\t * If the key is not defined, getOption returns null unless a defValue\n\t * parameter is used to specify a different default.\n\t */\n\tpublic String getOption(String key) {\n\t\treturn getOption(key, null);\n\t}\n\n\tpublic String getOption(String key, String defValue) {\n\t\tString value = table.get(key.toLowerCase());\n\t\treturn (value == null || value.equals(\"\")) ? defValue : value;\n\t}\n\n\t/*\n\t * This method looks up an option key and returns the corresponding value,\n\t * parsed as an integer. If the key is not defined, the getIntOption method\n\t * returns 0 unless a defValue parameter is used to specify a different\n\t * default.\n\t */\n\tpublic int getIntOption(String key) {\n\t\treturn getIntOption(key, 0);\n\t}\n\n\tpublic int getIntOption(String key, int defValue) {\n\t\tString value = getOption(key, null);\n\t\tif (value == null || value.equals(\"\"))\n\t\t\treturn defValue;\n\t\treturn (Integer.decode(value).intValue());\n\t}\n\n\t/*\n\t * This method looks up an option key and returns the corresponding value,\n\t * parsed as a double. If the key is not defined, the getDoubleOption method\n\t * returns 0.0 unless a defValue parameter is used to specify a different\n\t * default.\n\t */\n\tpublic double getDoubleOption(String key) {\n\t\treturn getDoubleOption(key, 0.0);\n\t}\n\n\tpublic double getDoubleOption(String key, double defValue) {\n\t\tString value = getOption(key, null);\n\t\tif (value == null || value.equals(\"\"))\n\t\t\treturn defValue;\n\t\treturn (Double.valueOf(value).doubleValue());\n\t}\n\n\t/*\n\t * This method looks up an option key and returns a boolean whose value is\n\t * true if the option maps to \"true\", \"t\", or \"on\" and false if it maps to\n\t * \"false\", \"f\", or \"off\". A missing option defaults to false unless the\n\t * option is specified and empty, in which case it defaults to true.\n\t */\n\tpublic boolean getFlagOption(String key) {\n\t\treturn getFlagOption(key, false);\n\t}\n\n\tpublic boolean getFlagOption(String key, boolean def) {\n\t\tString value = table.get(key.toLowerCase());\n\t\tif (value == null)\n\t\t\treturn def;\n\t\tvalue = value.toLowerCase();\n\t\tif (value.equals(\"\"))\n\t\t\treturn true;\n\t\tif (value.equals(\"true\"))\n\t\t\treturn true;\n\t\tif (value.equals(\"false\"))\n\t\t\treturn false;\n\t\tif (value.equals(\"t\"))\n\t\t\treturn true;\n\t\tif (value.equals(\"f\"))\n\t\t\treturn false;\n\t\tif (value.equals(\"on\"))\n\t\t\treturn true;\n\t\tif (value.equals(\"off\"))\n\t\t\treturn false;\n\t\tthrow new IllegalArgumentException(\"parseOptions: Illegal flag value\");\n\t}\n\n\t/* Private methods */\n\n\t/*\n\t * This method parses a string consisting of option specifications in one of\n\t * the two following forms:\n\t * \n\t * /key /key:value\n\t */\n\tprivate static void parseOptions(String options, HashMap<String, String> map) {\n\t\tStringTokenizer scanner = new StringTokenizer(options + \"/\", \"/:\", true);\n\t\tString key = null;\n\t\tString value = null;\n\t\tint state = INITIAL_STATE;\n\t\twhile (scanner.hasMoreTokens()) {\n\t\t\tString token = scanner.nextToken();\n\t\t\tswitch (state) {\n\t\t\tcase INITIAL_STATE:\n\t\t\t\tif (!token.equals(\"/\")) {\n\t\t\t\t\tkey = token.toLowerCase();\n\t\t\t\t\tvalue = \"\";\n\t\t\t\t\tstate = KEY_SEEN;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase KEY_SEEN:\n\t\t\t\tif (token.equals(\"/\")) {\n\t\t\t\t\tmap.put(key, value);\n\t\t\t\t\tstate = INITIAL_STATE;\n\t\t\t\t} else if (token.equals(\":\")) {\n\t\t\t\t\tstate = COLON_SEEN;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase COLON_SEEN:\n\t\t\t\tvalue = token;\n\t\t\t\tstate = VALUE_SEEN;\n\t\t\t\tbreak;\n\t\t\tcase VALUE_SEEN:\n\t\t\t\tif (token.equals(\"/\")) {\n\t\t\t\t\tmap.put(key, value);\n\t\t\t\t\tstate = INITIAL_STATE;\n\t\t\t\t} else {\n\t\t\t\t\tString msg = \"parseOptions: Illegal option string\";\n\t\t\t\t\tthrow new IllegalArgumentException(msg);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/karel/ResizeCanvas.java",
    "content": "package stanford.karel;\n\nimport java.awt.*;\nimport javax.swing.*;\n\nclass ResizeCanvas extends JPanel {\n\tprivate static final int SIZE = 102;\n\tprivate static final Font FONT = new Font(\"Helvetica\", Font.PLAIN, 12);\n\n\tprivate int rows;\n\tprivate int cols;\n\tprivate int sqSize;\n\n\tpublic void setDimension(int width, int height) {\n\t\tthis.cols = width;\n\t\tthis.rows = height;\n\t}\n\n\tpublic Dimension getPreferredSize() {\n\t\treturn new Dimension(SIZE, SIZE);\n\t}\n\n\tpublic void paintComponent(Graphics g) {\n\t\tsuper.paintComponent(g);\n\t\tg.setColor(Color.BLACK);\n\t\tg.drawRect(0, 0, SIZE - 1, SIZE - 1);\n\t\tint sqSize = (SIZE - 2) / Math.max(rows, cols);\n\t\tint x = (SIZE - sqSize * (cols - 1)) / 2;\n\t\tfor (int ix = 1; ix <= cols; ix++) {\n\t\t\tint y = (SIZE + sqSize * (rows - 1)) / 2;\n\t\t\tfor (int iy = 1; iy <= rows; iy++) {\n\t\t\t\tdrawCornerMarker(g, x, y);\n\t\t\t\ty -= sqSize;\n\t\t\t}\n\t\t\tx += sqSize;\n\t\t}\n\t\tString str = cols + \"x\" + rows;\n\t\tg.setFont(FONT);\n\t\tFontMetrics fm = g.getFontMetrics();\n\t\tint width = fm.stringWidth(str) + 6;\n\t\tint height = fm.getHeight() + 2;\n\t\tg.setColor(Color.WHITE);\n\t\tg.fillRect((SIZE - width) / 2, (SIZE - height) / 2, width, height);\n\t\tg.setColor(Color.BLACK);\n\t\tg.drawString(str, (SIZE - fm.stringWidth(str)) / 2,\n\t\t\t\t(SIZE + fm.getAscent()) / 2);\n\t}\n\n\tprivate void drawCornerMarker(Graphics g, int x, int y) {\n\t\tif (sqSize < KarelWorld.CROSS_THRESHOLD) {\n\t\t\tg.drawLine(x, y, x, y);\n\t\t} else {\n\t\t\tg.drawLine(x - 1, y, x + 1, y);\n\t\t\tg.drawLine(x, y - 1, x, y + 1);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/karel/ResizeLayout.java",
    "content": "package stanford.karel;\n\nimport java.awt.Component;\nimport java.awt.Container;\nimport java.awt.Dimension;\nimport java.awt.Insets;\nimport java.awt.LayoutManager;\n\nclass ResizeLayout implements LayoutManager {\n\tprivate Component canvas;\n\tprivate Component hbar;\n\tprivate Component vbar;\n\n\tpublic void addLayoutComponent(String constraints, Component comp) {\n\t\tif (constraints.equals(\"canvas\"))\n\t\t\tcanvas = comp;\n\t\tif (constraints.equals(\"hbar\"))\n\t\t\thbar = comp;\n\t\tif (constraints.equals(\"vbar\"))\n\t\t\tvbar = comp;\n\t}\n\n\tpublic void removeLayoutComponent(Component comp) {\n\t\t/* Empty */\n\t}\n\n\tpublic Dimension preferredLayoutSize(Container parent) {\n\t\treturn minimumLayoutSize(parent);\n\t}\n\n\tpublic Dimension minimumLayoutSize(Container parent) {\n\t\tsynchronized (parent.getTreeLock()) {\n\t\t\tDimension csize = canvas.getPreferredSize();\n\t\t\tint hsize = hbar.getPreferredSize().height;\n\t\t\tint vsize = vbar.getPreferredSize().width;\n\t\t\treturn new Dimension(csize.width + vsize + 1, csize.height + hsize\n\t\t\t\t\t+ 1);\n\t\t}\n\t}\n\n\tpublic void layoutContainer(Container parent) {\n\t\tsynchronized (parent.getTreeLock()) {\n\t\t\tDimension psize = parent.getSize();\n\t\t\tInsets insets = parent.getInsets();\n\t\t\tint x = insets.left;\n\t\t\tint y = insets.top;\n\t\t\tint width = psize.width - insets.left - insets.right;\n\t\t\tint height = psize.height - insets.top - insets.bottom;\n\t\t\tint hsize = hbar.getPreferredSize().height;\n\t\t\tint vsize = vbar.getPreferredSize().width;\n\t\t\tcanvas.setBounds(x, y, width - vsize - 1, height - hsize - 1);\n\t\t\thbar.setBounds(x, y + height - vsize, width - vsize - 1, hsize);\n\t\t\tvbar.setBounds(x + width - hsize, y, vsize, height - hsize - 1);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/karel/SuperKarel.java",
    "content": "/*\n * This class implements an extension of the basic Karel class that supports\n * more operations.\n * - 2015/03/31: Changed to use Swing graphical components.\n */\n\npackage stanford.karel;\n\nimport java.awt.*;\n\nimport acm.graphics.GObject;\n\n/**\n * Extended Karel class . . .\n */\npublic class SuperKarel extends Karel {\n\tpublic static final Color BLACK = Color.BLACK;\n\tpublic static final Color BLUE = Color.BLUE;\n\tpublic static final Color CYAN = Color.CYAN;\n\tpublic static final Color DARK_GRAY = Color.DARK_GRAY;\n\tpublic static final Color GRAY = Color.GRAY;\n\tpublic static final Color GREEN = Color.GREEN;\n\tpublic static final Color LIGHT_GRAY = Color.LIGHT_GRAY;\n\tpublic static final Color MAGENTA = Color.MAGENTA;\n\tpublic static final Color ORANGE = Color.ORANGE;\n\tpublic static final Color PINK = Color.PINK;\n\tpublic static final Color RED = Color.RED;\n\tpublic static final Color WHITE = Color.WHITE;\n\tpublic static final Color YELLOW = Color.YELLOW;\n\n\t/* Constructor */\n\n\tpublic SuperKarel() {\n\t\t/* Empty */\n\t}\n\n\tpublic void run() {\n\t\t/* Empty */\n\t}\n\n\tpublic void turnRight() {\n\t\tmaybeEcho(\"turn right\");\n\t\tcheckWorld(\"turnRight\");\n\t\tint newdir = KarelWorld.rightFrom(getDirection());\n\t\tsetDirection(newdir);\n\t\tgetWorld().trace();\n\t\tmaybeEcho(\"  Karel is facing \" + KarelWorld.directionName(newdir).toLowerCase());\n\t}\n\n\tpublic void turnAround() {\n\t\tmaybeEcho(\"turn around\");\n\t\tcheckWorld(\"turnAround\");\n\t\tint newdir = KarelWorld.oppositeDirection(getDirection());\n\t\tsetDirection(newdir);\n\t\tgetWorld().trace();\n\t\tmaybeEcho(\"  Karel is facing \" + KarelWorld.directionName(newdir).toLowerCase());\n\t}\n\n\tpublic void paintCorner(Color color) {\n\t\tmaybeEcho(\"paint corner \" + GObject.colorNameFriendly(color.getRGB()));\n\t\tKarelWorld world = getWorld();\n\t\tPoint pt = getLocation();\n\t\tcheckWorld(\"paintCorner\");\n\t\tworld.setCornerColor(pt.x, pt.y, color);\n\t\tworld.trace();\n\t}\n\n\tpublic void paintCorner(int rgb) {\n\t\tpaintCorner(new Color(rgb));\n\t}\n\n\tpublic void paintCorner(double red, double blue, double green) {\n\t\tpaintCorner(new Color((float) red, (float) blue, (float) green));\n\t}\n\n\tpublic Color newColor(int rgb) {\n\t\treturn new Color(rgb);\n\t}\n\n\tpublic boolean random() {\n\t\tcheckWorld(\"random\");\n\t\treturn random(0.5);\n\t}\n\n\tpublic boolean random(double p) {\n\t\tcheckWorld(\"random\");\n\t\treturn Math.random() < p;\n\t}\n\n\tpublic boolean cornerColorIs(Color color) {\n\t\tKarelWorld world = getWorld();\n\t\tPoint pt = getLocation();\n\t\tcheckWorld(\"cornerColorIs\");\n\t\tif (color == null) {\n\t\t\treturn world.getCornerColor(pt.x, pt.y) == null;\n\t\t} else {\n\t\t\treturn (color.equals(world.getCornerColor(pt.x, pt.y)));\n\t\t}\n\t}\n\n\tpublic boolean cornerColorIs(int rgb) {\n\t\treturn cornerColorIs(new Color(rgb));\n\t}\n\n\tpublic boolean cornerColorIs(double red, double blue, double green) {\n\t\tColor color = new Color((float) red, (float) blue, (float) green);\n\t\treturn cornerColorIs(color);\n\t}\n\n\tpublic void pause(double milliseconds) {\n\t\tKarelWorld world = getWorld();\n\t\tboolean repaintFlag = true;\n\t\tKarelWorldMonitor monitor = world.getMonitor();\n\t\tif (monitor != null && monitor.getSpeed() > 0.98) {\n\t\t\trepaintFlag = false;\n\t\t}\n\t\tworld.setRepaintFlag(true);\n\t\tworld.repaint();\n\t\tworld.setRepaintFlag(repaintFlag);\n\t\ttry {\n\t\t\tint millis = (int) milliseconds;\n\t\t\tint nanos = (int) Math.round((milliseconds - millis) * 1000000);\n\t\t\tThread.sleep(millis, nanos);\n\t\t} catch (InterruptedException ex) {\n\t\t\t/* Empty */\n\t\t}\n\t}\n\t\n\t/**\n\t * Causes Karel to pop up a speech bubble with the given text in it.\n\t */\n\tpublic void say(String text) {\n\t\t// TODO\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/karel/VPanel.java",
    "content": "/*\n * This file implements a Panel subclass that is useful for\n * creating a vertical assembly of components.  The details\n * of its operation are described in the HVLayout manager,\n * which is common to both HPanels and VPanels.\n * - 2015/03/31: Changed to use Swing graphical components.\n */\n\npackage stanford.karel;\n\nimport java.awt.*;\nimport javax.swing.*;\n\nclass VPanel extends JPanel {\n\tpublic VPanel() {\n\t\tsetLayout(new HVLayout(HVLayout.VERTICAL));\n\t\tsetOpaque(false);\n\t}\n\n\tpublic Component add(String constraint) {\n\t\treturn add(constraint, null);\n\t}\n\n\tpublic Component add(Component comp) {\n\t\treturn add(\"\", comp);\n\t}\n\n\tpublic Component add(String constraint, Component comp) {\n\t\tif (comp == null)\n\t\t\tcomp = new EmptyCanvas();\n\t\treturn super.add(constraint, comp);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/AutograderInput.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2015/08/01\n * - support for headless mode for use on server\n * @version 2014/11/15\n * - key listener to forward to JBE Console\n */\n\npackage stanford.spl;\n\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.util.*;\nimport javax.swing.*;\nimport stanford.cs106.gui.GuiUtils;\nimport stanford.cs106.util.OperatingSystem;\n\n@SuppressWarnings(\"deprecation\")\npublic class AutograderInput\n\t\textends Observable\n\t\timplements ActionListener {\n\tprivate static final int MIN_WIDTH = 75;\n\tprivate static AutograderInput instance;   // singleton\n\t\n\tpublic static synchronized AutograderInput getInstance(JavaBackEnd javaBackEnd) {\n\t\tif (instance == null) {\n\t\t\tinstance = new AutograderInput(javaBackEnd);\n\t\t}\n\t\treturn instance;\n\t}\n\t\n\tprivate JFrame frame;\n\t// private GridLayout layout;\n\tprivate JPanel currentCategory;\n\tprivate Map<String, JComponent> components;\n\tprivate Set<JLabel> allLabels = new LinkedHashSet<JLabel>();\n\tprivate KeyListener keyListener;\n\t\n\tpublic AutograderInput(JavaBackEnd javaBackEnd) {\n\t\tframe = new JFrame();\n\t\tframe.setTitle(\"Autograder Input Panel\");\n\t\tframe.setVisible(false);\n\t\t// keyListener = new AutograderInputKeyListener();\n\t\tkeyListener = javaBackEnd.getConsoleKeyListener();\n\t\tframe.addKeyListener(keyListener);\n\t\t\n\t\tBox box = Box.createVerticalBox();\n\t\tframe.setContentPane(box);\n\t\t// layout = new GridLayout(0, 1, 5, 5);\n\t\t// frame.setLayout(layout);\n\t\tcomponents = new HashMap<String, JComponent>();\n\t\tSPLWindowSettings.loadWindowLocation(frame);\n\t\tSPLWindowSettings.saveWindowLocation(frame);\n\t}\n\t\n\tpublic void addBlank() {\n\t\taddButton(\"\");\n\t}\n\t\n\tpublic void addButton(String text) {\n\t\taddButton(text, text);\n\t}\n\t\n\tpublic void addButton(String text, String input) {\n\t\tif (currentCategory == null) {\n\t\t\tFlowLayout layout = new FlowLayout(FlowLayout.LEFT, /* hgap */ 0, /* vgap */ 2);\n\t\t\tcurrentCategory = new JPanel(layout);\n\t\t\t// frame.add(Box.createVerticalGlue());\n\t\t\tframe.add(currentCategory);\n\t\t}\n\t\t\n\t\tif (text.length() == 0) {\n\t\t\tcurrentCategory.add(new JPanel());   // blank slot\n\t\t} else {\n\t\t\tif (!input.endsWith(\"\\n\")) {\n\t\t\t\tinput += \"\\n\";\n\t\t\t}\n\t\t\tJButton button = new JButton(text);\n\t\t\tbutton.addKeyListener(keyListener);\n\t\t\tif (OperatingSystem.get() == OperatingSystem.MAC) {\n\t\t\t\t// disable rounded button corners on Mac that make the buttons huge\n\t\t\t\tbutton.setBorder(BorderFactory.createLineBorder(Color.GRAY));\n\t\t\t\t// GuiUtils.shrinkFont(button);\n\t\t\t\tGuiUtils.pad(button, 20, 10);\n\t\t\t}\n\t\t\t\n\t\t\t// shrink font so more stuff can fit\n\t\t\tGuiUtils.shrinkFont(button);\n\t\t\t\n\t\t\tbutton.setActionCommand(input);\n\t\t\tbutton.addActionListener(this);\n\t\t\tcurrentCategory.add(button);\n\t\t\tcomponents.put(text, button);\n\t\t}\n\t\tcheckVisibility();\n\t}\n\t\n\tpublic void addCategory(String name) {\n\t\tcurrentCategory = new JPanel(new FlowLayout(FlowLayout.LEFT));\n\t\t// TitledBorder border = BorderFactory.createTitledBorder(name);\n\t\t// currentCategory.setBorder(border);\n\t\t\n\t\tJLabel label = new JLabel(name + (name != null && !name.isEmpty() ? \": \" : \"\"));\n\t\tlabel.setFont(label.getFont().deriveFont(Font.BOLD));\n\t\tlabel.setHorizontalAlignment(JLabel.RIGHT);\n\t\tGuiUtils.shrinkFont(label);\n\t\tallLabels.add(label);\n\t\tcurrentCategory.add(label);\n\t\t\n\t\tframe.add(currentCategory);\n\t\tcomponents.put(name, currentCategory);\n\t\tcheckVisibility();\n\t}\n\t\n\tpublic void actionPerformed(ActionEvent event) {\n\t\tsetChanged();\n\t\tnotifyObservers(event.getActionCommand());\n\t}\n\t\n\tpublic boolean isEmpty() {\n\t\treturn buttonCount() == 0;\n\t}\n\t\n\tpublic int buttonCount() {\n\t\treturn frame.getComponentCount();\n\t}\n\t\n\tpublic int getColumns() {\n\t\t// return layout.getColumns();\n\t\treturn 1;\n\t}\n\t\n\tpublic void removeButton(String text) {\n//\t\tfor (Component comp : frame.getComponents()) {\n//\t\t\tif (!(comp instanceof JButton)) continue;\n//\t\t\tJButton button = (JButton) comp;\n//\t\t\tif (button.getText().equals(text)) {\n//\t\t\t\tframe.remove(button);\n//\t\t\t\tbreak;\n//\t\t\t}\n//\t\t}\n\t\tJComponent button = components.get(text);\n\t\tif (button != null) {\n\t\t\tcomponents.remove(text);\n\t\t\tframe.remove(button);\n\t\t\tcheckVisibility();\n\t\t}\n\t}\n\t\n\tpublic void removeCategory(String name) {\n\t\tJComponent category = components.get(name);\n\t\tif (category != null) {\n\t\t\tcomponents.remove(name);\n\t\t\tframe.remove(category);\n\t\t\tcheckVisibility();\n\t\t}\n\t}\n\t\n\tpublic void setColumns(int columns) {\n\t\t// layout.setColumns(columns);\n\t\tcheckVisibility();\n\t}\n\t\n\tpublic void setVisible(boolean value) {\n\t\tframe.setVisible(value);\n\t}\n\t\n\tprivate void checkVisibility() {\n\t\tframe.validate();\n\t\tframe.pack();\n\t\t\n\t\t// normalize size of all left-side labels\n\t\tint maxLabelWidth = 0;\n\t\tfor (JLabel label : allLabels) {\n\t\t\tmaxLabelWidth = Math.max(maxLabelWidth, label.getPreferredSize().width);\n\t\t}\n\t\tfor (JLabel label : allLabels) {\n\t\t\tDimension size = label.getPreferredSize();\n\t\t\tlabel.setPreferredSize(new Dimension(maxLabelWidth, size.height));\n\t\t}\n\t\tframe.validate();\n\t\tframe.pack();\n\t\t\n\t\tif (frame.getWidth() < MIN_WIDTH) {\n\t\t\tframe.setSize(MIN_WIDTH, frame.getHeight());\n\t\t}\n\t\tframe.setVisible(!isEmpty());\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/AutograderInput_addButton.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class AutograderInput_addButton extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString text = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString input = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tAutograderInput autograderInput = AutograderInput.getInstance(paramJavaBackEnd);\n\t\tautograderInput.addButton(text, input);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/AutograderInput_addCategory.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class AutograderInput_addCategory extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString name = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tAutograderInput autograderInput = AutograderInput.getInstance(paramJavaBackEnd);\n\t\tautograderInput.addCategory(name);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/AutograderInput_removeButton.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class AutograderInput_removeButton extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString text = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tAutograderInput autograderInput = AutograderInput.getInstance(paramJavaBackEnd);\n\t\tautograderInput.removeButton(text);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/AutograderInput_removeCategory.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class AutograderInput_removeCategory extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString name = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tAutograderInput autograderInput = AutograderInput.getInstance(paramJavaBackEnd);\n\t\tautograderInput.removeCategory(name);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/AutograderInput_setColumns.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class AutograderInput_setColumns extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tint columns = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tAutograderInput autograderInput = AutograderInput.getInstance(paramJavaBackEnd);\n\t\tautograderInput.setColumns(columns);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/AutograderInput_setVisible.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class AutograderInput_setVisible extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tboolean value = nextBoolean(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tAutograderInput autograderInput = AutograderInput.getInstance(paramJavaBackEnd);\n\t\tautograderInput.setVisible(value);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/AutograderUnitTestGUI.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2018/01/23\n * - added Run tests in separate threads checkbox\n * - bug fix for bad unit test details on Windows (\"expected true, found false\" etc. on diffs)\n * @version 2017/10/21\n * - made it expand/collapse test categories on double-click of All/None buttons\n * @version 2017/06/06\n * - added addTest(String), containsTest\n * - increased max auto window size\n * @version 2017/05/02\n * - fixed minor bugs with test output html/coloring, diff flags missing\n * @version 2016/12/01\n * - fixed bugs with badly displayed / wrong test results\n * - clarified assertion output for ASSERT_TRUE and _FALSE\n * - checkbox to catch exceptions in tests\n * @version 2016/10/30\n * - made window close when you press Escape\n * - added ignore-punctuation diff flag\n * @version 2016/10/22\n * - added support for diff flags\n * @version 2016/10/12\n * - fixed bug with double-HTML-encoding diff expected/actual output\n * @version 2016/09/22\n * - fixed bugs with forgetting to HTML-encode test results message/expected/actual\n * @version 2016/04/28\n * - max window size so a program with many tests doesn't fall off screen\n * @version 2015/05/28\n * - slight tweaks for ASSERT_NULL and ASSERT_NOT_NULL test failure display\n * @version 2015/05/02\n * - added JUnitListener functionality; use internal image icons from JAR\n * @version 2015/04/21\n * - made it work even if Java back-end is null\n * @version 2014/11/15\n * - spinner GIF while tests are in progress\n * - shut down JBE if window closed while tests are in progress\n */\n\npackage stanford.spl;\n\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.util.*;\nimport javax.swing.*;\nimport javax.swing.border.*;\nimport acm.graphics.GImage;\nimport stanford.cs106.diff.*;\nimport stanford.cs106.gui.*;\nimport stanford.cs106.io.*;\nimport stanford.cs106.junit.*;\nimport stanford.cs106.util.*;\n\n@SuppressWarnings(\"deprecation\")\npublic class AutograderUnitTestGUI extends Observable\n\t\timplements ActionListener, JUnitListener, MouseListener {\n\tprivate static final int DIALOG_WIDTH = 500;   // px\n\tprivate static final Color ZEBRA_STRIPE_COLOR_1 = new Color(250, 250, 250);\n\tprivate static final Color ZEBRA_STRIPE_COLOR_2 = new Color(235, 235, 235);\n\t\n\t// should possibly keep in sync with colors in DiffGui.java\n\tprivate static final Color PASS_COLOR = new Color(0, 96, 0);\n\tprivate static final String PASS_COLOR_HEX = GImage.colorName(PASS_COLOR.getRGB());\n\tprivate static final Color FAIL_COLOR = new Color(96, 0, 0);\n\tprivate static final String FAIL_COLOR_HEX = GImage.colorName(FAIL_COLOR.getRGB());\n\tprivate static final Color WARN_COLOR = new Color(112, 112, 0);\n\tprivate static final int MAX_VALUE_DISPLAY_LENGTH = 120;\n\tprivate static final int MAX_WINDOW_WIDTH = 1200;   // px\n\tprivate static final int MAX_WINDOW_HEIGHT = 900;   // px\n\tprivate static Color NORMAL_COLOR = null;\n\t\n\t//private static final int MIN_WIDTH = 75;\n\tprivate static AutograderUnitTestGUI instance;             // singleton\n\tprivate static AutograderUnitTestGUI styleCheckInstance;   // singleton\n\t\n\tprivate static final String TESTS_TITLE = \"Autograder Tests\";\n\tprivate static final String STYLE_CHECK_TITLE = \"Style Checker\";\n\tprivate static final String ICONS_FOLDER = \"res/icons/\";\n\t\n\tpublic static synchronized AutograderUnitTestGUI getInstance(JavaBackEnd javaBackEnd) {\n\t\tif (instance == null) {\n\t\t\tinstance = new AutograderUnitTestGUI(javaBackEnd, TESTS_TITLE);\n\t\t}\n\t\treturn instance;\n\t}\n\t\n\tpublic static synchronized AutograderUnitTestGUI getInstance(JavaBackEnd javaBackEnd, boolean isStyleCheck) {\n\t\tif (isStyleCheck) {\n\t\t\treturn getStyleCheckInstance(javaBackEnd);\n\t\t} else {\n\t\t\treturn getInstance(javaBackEnd);\n\t\t}\n\t}\n\t\n\tpublic static synchronized AutograderUnitTestGUI getStyleCheckInstance(JavaBackEnd javaBackEnd) {\n\t\tif (styleCheckInstance == null) {\n\t\t\tstyleCheckInstance = new AutograderUnitTestGUI(javaBackEnd, STYLE_CHECK_TITLE);\n\t\t}\n\t\treturn styleCheckInstance;\n\t}\n\t\n\tprivate class TestInfo {\n\t\tprivate String name;\n\t\tprivate String category;\n\t\tprivate JCheckBox checked;\n\t\tprivate JLabel description;\n\t\tprivate JLabel result;\n\t\tprivate Map<String, String> details = new LinkedHashMap<String, String>();\n\t\t\n\t\tpublic String fullName() {\n\t\t\treturn (category == null || category.isEmpty()) ? name : (category + \"_\" + name);\n\t\t}\n\t}\n\t\n\tprivate JavaBackEnd javaBackEnd;\n\tprivate JFrame frame = null;\n\tprivate JScrollPane scroll = null;\n\tprivate JCheckBox catchErrorsBox = null;\n\tprivate JCheckBox runTestsInThreadsBox = null;\n\tprivate Box contentPaneBox = null;\n\tprivate JLabel descriptionLabel = null;\n\tprivate JLabel southLabel = null;\n\tprivate AutograderUnitTestGUIMouseAdapter mouseListener;\n\t\n\tprivate Map<String, Container> allCategories = new LinkedHashMap<String, Container>();\n\tprivate Container currentCategory = null;\n\tprivate Map<Object, TestInfo> allTests = new LinkedHashMap<Object, TestInfo>();\n\t\n\tprivate int passCount = 0;\n\tprivate int testCount = 0;\n\tprivate boolean testingIsInProgress = false;\n\tprivate int testPanelHeight = -1;\n\tprivate boolean allCategoriesHidden = false;\n\tprivate boolean checkboxesShown = true;\n\t\n\tpublic AutograderUnitTestGUI(JavaBackEnd javaBackEnd, String title) {\n\t\tthis.javaBackEnd = javaBackEnd;\n\t\tframe = new JFrame();\n\t\tframe.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);\n\t\tframe.setTitle(title);\n\t\tframe.setVisible(false);\n\t\tframe.addWindowListener(new AutograderUnitTestGUIWindowAdapter());\n\t\tWindowCloseKeyListener.add(frame);\n\t\t\n\t\tdescriptionLabel = new JLabel(TESTS_TITLE);\n\t\tif (NORMAL_COLOR == null) {\n\t\t\tNORMAL_COLOR = descriptionLabel.getForeground();\n\t\t}\n\t\tdescriptionLabel.setHorizontalAlignment(JLabel.CENTER);\n\t\tdescriptionLabel.setAlignmentX(0.5f);\n\t\tGuiUtils.shrinkFont(descriptionLabel);\n\t\t\n\t\tBox north = Box.createVerticalBox();\n\t\tnorth.setAlignmentX(0.0f);\n\t\tnorth.setBorder(BorderFactory.createEmptyBorder(/* TLBR */ 2, 5, 2, 2));\n\t\t// north.add(descriptionLabel);\n\t\tcatchErrorsBox = new JCheckBox(\"Catch exceptions in tests\", /* selected */ true);\n\t\tcatchErrorsBox.setMnemonic('C');\n\t\tnorth.add(catchErrorsBox);\n\t\trunTestsInThreadsBox = new JCheckBox(\"Run tests in separate threads\", /* selected */ true);\n\t\trunTestsInThreadsBox.setMnemonic('t');\n\t\tnorth.add(runTestsInThreadsBox);\n\t\tframe.add(north, BorderLayout.NORTH);\n\t\t\n\t\tcontentPaneBox = Box.createVerticalBox();\n\t\tscroll = new JScrollPane(contentPaneBox);\n\t\tscroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);\n\t\tscroll.getVerticalScrollBar().setUnitIncrement(32);\n\t\tcontentPaneBox.add(Box.createGlue());   // to eat up excess vertical space\n\t\tframe.add(scroll, BorderLayout.CENTER);\n\t\t\n\t\tsouthLabel = new JLabel(\" \");\n\t\tsouthLabel.setIcon(new ImageIcon(ResourceUtils.filenameToURL(ICONS_FOLDER + \"progress.gif\")));\n\t\tsouthLabel.setHorizontalTextPosition(SwingConstants.LEFT);\n\t\tsouthLabel.setHorizontalAlignment(JLabel.CENTER);\n\t\tsouthLabel.setAlignmentX(0.5f);\n\t\tframe.add(southLabel, BorderLayout.SOUTH);\n\t\tupdateSouthText();\n\t\t\n\t\tnew WindowCloseKeyListener(frame);\n\t\tmouseListener = new AutograderUnitTestGUIMouseAdapter();\n\t\t\n\t\tSPLWindowSettings.loadWindowLocation(frame);\n\t\tSPLWindowSettings.saveWindowLocation(frame);\n\t}\n\t\n\tpublic void actionPerformed(ActionEvent event) {\n\t\tshowTestDetails(event.getActionCommand());\n\t}\n\t\n\tpublic Container addCategory(String name) {\n\t\tif (!allCategories.containsKey(name)) {\n\t\t\tfinal Container category = Box.createVerticalBox();\n\t\t\tcurrentCategory = category;\n\t\t\tcategory.setName(\"category\");\n\t\t\tallCategories.put(name, currentCategory);\n\t\t\tif (!name.isEmpty()) {\n\t\t\t\tif (isStyleCheck()) {\n\t\t\t\t\tTitledBorder border = BorderFactory.createTitledBorder(name);\n\t\t\t\t\tborder.setTitleJustification(SwingConstants.CENTER);\n\t\t\t\t\t((Box) currentCategory).setBorder(border);\n\t\t\t\t} else {\n\t\t\t\t\tBorder border = BorderFactory.createLineBorder(Color.DARK_GRAY);\n\t\t\t\t\t((Box) currentCategory).setBorder(border);\n\t\t\t\t}\n\t\t\t\tcurrentCategory.setBackground(ZEBRA_STRIPE_COLOR_2);\n\t\t\t}\n\t\t\t\n\t\t\tif (!isStyleCheck()) {\n\t\t\t\t// top row of 'select/deselect all' buttons\n\t\t\t\tJPanel top = new JPanel(new FlowLayout(FlowLayout.LEFT));\n\t\t\t\tJButton selectAll = new JButton(\"All\");\n\t\t\t\tselectAll.setIcon(new ImageIcon(ResourceUtils.filenameToURL(ICONS_FOLDER + \"checkbox-checked.gif\")));\n\t\t\t\tGuiUtils.shrinkFont(selectAll, 2);\n\t\t\t\tselectAll.addActionListener(new ActionListener() {\n\t\t\t\t\tpublic void actionPerformed(ActionEvent event) {\n\t\t\t\t\t\tselectAll(category, true);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tselectAll.addMouseListener(mouseListener);\n\t\t\t\tselectAll.setToolTipText(\"Double-click to select all tests from all categories.\");\n\t\t\t\t\n\t\t\t\tJButton deselectAll = new JButton(\"None\");\n\t\t\t\tdeselectAll.setIcon(new ImageIcon(ResourceUtils.filenameToURL(ICONS_FOLDER + \"checkbox-unchecked.gif\")));\n\t\t\t\tGuiUtils.shrinkFont(deselectAll, 2);\n\t\t\t\tdeselectAll.addActionListener(new ActionListener() {\n\t\t\t\t\tpublic void actionPerformed(ActionEvent event) {\n\t\t\t\t\t\tselectAll(category, false);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tdeselectAll.addMouseListener(mouseListener);\n\t\t\t\tdeselectAll.setToolTipText(\"Double-click to deselect all tests from all categories.\");\n\t\t\t\t\n\t\t\t\tJButton minimize = new JButton(\"Hide\");\n\t\t\t\t// minimize.setIcon(new ImageIcon(ResourceUtils.filenameToURL(ICONS_FOLDER + \"minus.gif\"));\n\t\t\t\tGuiUtils.shrinkFont(minimize, 2);\n\t\t\t\tminimize.addActionListener(new ActionListener() {\n\t\t\t\t\tpublic void actionPerformed(ActionEvent event) {\n\t\t\t\t\t\tminimize(category);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tminimize.addMouseListener(mouseListener);\n\t\t\t\tminimize.setToolTipText(\"Double-click to minimize all categories.\");\n\t\t\t\t\n\t\t\t\tif (checkboxesShown) {\n\t\t\t\t\ttop.add(selectAll);\n\t\t\t\t\ttop.add(deselectAll);\n\t\t\t\t}\n\t\t\t\ttop.add(minimize);\n\t\t\t\t\n\t\t\t\tif (!name.isEmpty()) {\n\t\t\t\t\tJLabel nameLabel = new JLabel(name);\n\t\t\t\t\tGuiUtils.shrinkFont(nameLabel, 1);\n\t\t\t\t\ttop.add(nameLabel);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcategory.add(top);\n\t\t\t}\n\t\t\t\n\t\t\t// add just before last index; last index is occupied by invisible 'glue' component\n\t\t\t// that stretches to eat up excess vertical space\n\t\t\t// (without this glue, the panels awkwardly vertically stretch)\n\t\t\tcontentPaneBox.add(currentCategory, contentPaneBox.getComponentCount() - 1);\n\t\t\t\n\t\t\tcheckVisibility();\n\t\t}\n\t\treturn allCategories.get(name);\n\t}\n\t\n\tpublic void addTest(String testName) {\n\t\taddTest(testName, /* categoryName */ \"\");\n\t}\n\t\n\tpublic void addTest(String testName, String categoryName) {\n\t\ttestCount++;\n\t\tcurrentCategory = addCategory(categoryName);\n\t\t\n\t\t// add a panel about this test\n\t\tJPanel testPanel = new JPanel(new BorderLayout());\n\t\ttestPanel.setName(\"testPanel\");\n\t\tJPanel testWestPanel = new JPanel();\n\t\tColor bgColor = (testCount % 2 == 0) ? ZEBRA_STRIPE_COLOR_1 : ZEBRA_STRIPE_COLOR_2;\n\t\ttestPanel.setBackground(bgColor);\n\t\ttestWestPanel.setBackground(bgColor);\n\t\t\n\t\tTestInfo testInfo = new TestInfo();\n\t\ttestInfo.name = testName;\n\t\ttestInfo.category = categoryName;\n\t\tallTests.put(testInfo.fullName(), testInfo);\n\t\t\n\t\ttestInfo.checked = new JCheckBox();\n\t\t\n\t\t// testInfo.checked.setBorder(BorderFactory.createLineBorder(Color.DARK_GRAY, 1));\n\t\t// testInfo.checked.setPreferredSize(new Dimension(10, 10));\n\t\t\n\t\ttestInfo.checked.setSelected(true);\n\t\tif (!isStyleCheck() && checkboxesShown) {\n\t\t\ttestWestPanel.add(testInfo.checked);\n\t\t}\n\t\t\n\t\tJLabel testCountLabel = new JLabel(String.format(\"%3d. \", testCount));\n\t\tallTests.put(testCountLabel, testInfo);\n\t\ttestCountLabel.setHorizontalAlignment(SwingConstants.RIGHT);\n\t\ttestCountLabel.setAlignmentX(Component.RIGHT_ALIGNMENT);\n\t\tFont oldFont = testCountLabel.getFont();\n\t\ttestCountLabel.setFont(new Font(\"Monospaced\", Font.BOLD, oldFont.getSize()));\n\t\t// boldFont(testCountLabel);\n\t\ttestWestPanel.add(testCountLabel);\n\t\ttestPanel.add(testWestPanel, BorderLayout.WEST);\n\t\t\n\t\tString testNameShort = testName.replaceAll(\"Test_[0-9]{1,5}_\", \"\");\n\t\ttestNameShort = testNameShort.replaceAll(\"^Test_\", \"\");\n\t\ttestInfo.description = new JLabel(testNameShort);\n\t\ttestInfo.description.setToolTipText(\"Click to see detailed results from this test.\");\n\t\tGuiUtils.shrinkFont(testInfo.description);\n\t\ttestInfo.description.setFont(testInfo.description.getFont().deriveFont(Font.BOLD));\n\t\ttestPanel.add(testInfo.description, BorderLayout.CENTER);\n\t\ttestInfo.description.addMouseListener(this);\n\t\tallTests.put(testInfo.description, testInfo);\n\t\t\n\t\ttestInfo.result = new JLabel(new ImageIcon(ResourceUtils.filenameToURL(ICONS_FOLDER + \"running.gif\")));\n\t\ttestInfo.result.setText(\"        \");\n\t\tGuiUtils.shrinkFont(testInfo.result, 2);\n\t\ttestInfo.result.setHorizontalTextPosition(SwingConstants.LEFT);\n\t\ttestInfo.result.setToolTipText(\"Click to see detailed results from this test.\");\n\t\ttestInfo.result.addMouseListener(this);\n\t\ttestPanel.add(testInfo.result, BorderLayout.EAST);\n\t\tallTests.put(testInfo.result, testInfo);\n\t\t\n\t\tcurrentCategory.add(testPanel);\n\n\t\t// BUGFIX: bounding the max height prevents vertical stretching on window resize\n\t\tDimension prefSize = currentCategory.getPreferredSize();\n\t\tprefSize.width = Integer.MAX_VALUE;\n\t\tcurrentCategory.setMaximumSize(prefSize);\n\t\t\n\t\tcheckVisibility();\n\t}\n\t\n\tpublic boolean catchExceptions() {\n\t\treturn catchErrorsBox.isSelected();\n\t}\n\t\n\tpublic void clearTests() {\n\t\tcurrentCategory = null;\n\t\tallCategories.clear();\n\t\tallTests.clear();\n\t\tpassCount = 0;\n\t\ttestCount = 0;\n\t\ttestingIsInProgress = true;\n\t\tcontentPaneBox.removeAll();\n\t\tcontentPaneBox.add(Box.createGlue());   // to eat up excess vertical space\n\t\tcontentPaneBox.validate();\n\t\tscroll.validate();\n\t\tupdateSouthText();\n\t\tcheckVisibility();\n\t}\n\t\n\tpublic void clearTestResults() {\n\t\tpassCount = 0;\n\t\tfor (TestInfo testInfo : allTests.values()) {\n\t\t\ttestInfo.details.clear();\n\t\t\ttestInfo.description.setForeground(NORMAL_COLOR);\n\t\t\ttestInfo.result.setIcon(new ImageIcon(ResourceUtils.filenameToURL(ICONS_FOLDER + \"running.gif\")));\n\t\t\ttestInfo.result.setText(\"\");\n\t\t}\n\t\tupdateSouthText();\n\t}\n\t\n\tpublic boolean containsTest(String testFullName) {\n\t\treturn allTests.containsKey(testFullName);\n\t}\n\t\n\tprivate String getTestResult(String testFullName) {\n\t\tTestInfo testInfo = allTests.get(testFullName);\n\t\tif (testInfo == null) {\n\t\t\treturn \"no such test\";\n\t\t} else if (testInfo.description.getForeground().equals(FAIL_COLOR)) {\n\t\t\treturn \"fail\";\n\t\t} else if (testInfo.description.getForeground().equals(WARN_COLOR)) {\n\t\t\treturn \"warn\";\n\t\t} else if (testInfo.description.getForeground().equals(PASS_COLOR)) {\n\t\t\treturn \"pass\";\n\t\t} else {\n\t\t\tif (testInfo.details.containsKey(\"passed\")) {\n\t\t\t\tString passed = testInfo.details.get(\"passed\");\n\t\t\t\treturn passed.equalsIgnoreCase(\"true\") ? \"pass\" : \"fail\";\n\t\t\t} else {\n\t\t\t\treturn \"unknown\";\n\t\t\t}\n\t\t}\n\t}\n\t\n\tpublic int getFailedCount() {\n\t\treturn getTestCount() - getPassedCount();\n\t}\n\t\n\tpublic int getPassedCount() {\n\t\treturn passCount;\n\t}\n\t\n\tpublic int getTestCount() {\n\t\treturn getCheckedTestCount();\n\t}\n\t\n\tpublic boolean isChecked(String testFullName) {\n\t\tTestInfo testInfo = allTests.get(testFullName);\n\t\tif (testInfo == null) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\treturn testInfo.checked.isSelected();\n\t\t}\n\t}\n\t\n\tpublic boolean isEmpty() {\n\t\treturn allCategories.isEmpty();\n\t}\n\t\n\tpublic boolean isStyleCheck() {\n\t\treturn this == styleCheckInstance || frame.getTitle().equals(STYLE_CHECK_TITLE);\n\t}\n\t\n\tpublic boolean isVisible() {\n\t\treturn frame != null && frame.isVisible();\n\t}\n\t\n\tpublic void mouseClicked(MouseEvent event) {\n\t\tJLabel label = (JLabel) event.getSource();\n\t\tTestInfo testInfo = allTests.get(label);\n\t\tif (testInfo == null) {\n\t\t\treturn;\n\t\t}\n\t\tString testName = testInfo.fullName();\n\t\tif (testName == null) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tshowTestDetails(testName);\n\t}\n\t\n\tpublic void mouseEntered(MouseEvent event) {\n\t\t// empty\n\t}\n\t\n\tpublic void mouseExited(MouseEvent event) {\n\t\t// empty\n\t}\n\t\n\tpublic void mousePressed(MouseEvent event) {\n\t\t// empty\n\t}\n\t\n\tpublic void mouseReleased(MouseEvent event) {\n\t\t// empty\n\t}\n\t\n\tpublic boolean runTestsInSeparateThreads() {\n\t\treturn runTestsInThreadsBox.isSelected();\n\t}\n\t\n\tpublic void setChecked(String testFullName, boolean checked) {\n\t\tTestInfo testInfo = allTests.get(testFullName);\n\t\tif (testInfo != null) {\n\t\t\ttestInfo.checked.setSelected(checked);\n\t\t}\n\t}\n\t\n\tpublic void setDescription(String text) {\n\t\ttext = text.replaceAll(\"[ \\t\\r\\n\\f]+\", \" \");\n\t\ttext = text.replaceAll(\"Note:\", \"<b>Note:</b>\");\n\t\ttext = text.replaceAll(\"Warning:\", \"<b>Warning:</b>\");\n\t\ttext = text.replaceAll(\"Error:\", \"<b>Error:</b>\");\n\t\tString htmlLabel = GuiUtils.htmlLabelText(text, CollectionUtils.asMap(\n\t\t\t\t\"width\", DIALOG_WIDTH,\n\t\t\t\t\"center\", true\n\t\t));\n\t\tdescriptionLabel.setText(htmlLabel);\n\t\tdescriptionLabel.validate();\n\t\tcheckVisibility();\n\t}\n\t\n\tpublic void setTestCounts(int passCount, int testCount) {\n\t\tthis.passCount = passCount;\n\t\tthis.testCount = testCount;\n\t\tupdateSouthText();\n\t}\n\t\n\t// looking for a map with these keys:\n\t// testType, message, ...\n\tpublic void setTestDetails(String testFullName, Map<String, String> details) {\n\t\tTestInfo testInfo = allTests.get(testFullName);\n\t\tif (testInfo == null) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\t// BUGFIX: don't replace test details if a test already failed here\n\t\tString existingResult = getTestResult(testFullName).intern();\n\t\tif (existingResult == \"fail\" || existingResult == \"warn\") {\n\t\t\tif (!testInfo.details.isEmpty() && StringUtils.isTruthy(testInfo.details.get(\"overwrite\"))) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t\n\t\ttestInfo.details = details;\n\t}\n\t\n\tpublic void setTestDetailsMessage(String testName, String detailsMessage) {\n\t\tMap<String, String> details = new TreeMap<String, String>();\n\t\tdetails.put(\"testType\", \"MANUAL\");\n\t\tdetails.put(\"message\", detailsMessage);\n\t\tsetTestDetails(testName, details);\n\t}\n\t\n\tpublic void setTestingCompleted(boolean completed) {\n\t\ttestingIsInProgress = !completed;\n\t\tupdateSouthText();\n\t}\n\t\n\tpublic boolean setTestResult(String testFullName, String result) {\n\t\tresult = result.toLowerCase().intern();\n\t\tif (result == \"error\") {\n\t\t\tresult = \"fail\";  // synonyms\n\t\t}\n\t\t\n\t\tTestInfo testInfo = allTests.get(testFullName);\n\t\tif (testInfo == null) {\n\t\t\t// test case not found!\n\t\t\treturn false;\n\t\t}\n\t\t\n\t\t// BUGFIX: if test already failed previously, don't set back to passed\n\t\tString existingResult = getTestResult(testFullName).intern();\n\t\tif ((existingResult == \"fail\" || existingResult == \"warn\") && result != \"fail\") {\n\t\t\treturn true;\n\t\t}\n\t\t\n\t\tString iconFile = ICONS_FOLDER + result + \".gif\";\n\t\ttestInfo.result.setIcon(new ImageIcon(ResourceUtils.filenameToURL(iconFile)));   // pass, fail, running, warn\n\t\tif (result == \"pass\") {\n\t\t\tpassCount++;\n\t\t\ttestInfo.description.setForeground(PASS_COLOR);\n\t\t} else if (result == \"fail\") {\n\t\t\ttestInfo.description.setForeground(FAIL_COLOR);\n\t\t} else if (result == \"warn\") {\n\t\t\ttestInfo.description.setForeground(WARN_COLOR);\n\t\t} else if (result == \"warn\") {\n\t\t\ttestInfo.description.setForeground(NORMAL_COLOR);\n\t\t}\n\t\tupdateSouthText();\n\t\treturn true;\n\t}\n\t\n\tpublic boolean setTestRuntime(String testFullName, int runtimeMS) {\n\t\tTestInfo testInfo = allTests.get(testFullName);\n\t\tif (testInfo == null) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\tString text = \" (\" + runtimeMS + \"ms)\";\n\t\t\ttestInfo.result.setText(text);\n\t\t\treturn true;\n\t\t}\n\t}\n\t\n\tpublic void setCheckboxesShown(boolean shown) {\n\t\tcheckboxesShown = shown;\n\t}\n\t\n\tpublic void setVisible(boolean visible) {\n\t\tframe.setVisible(visible);\n\t}\n\t\n\tprivate void checkVisibility() {\n\t\tcontentPaneBox.revalidate();\n\t\tscroll.revalidate();\n\t\t// frame.revalidate();\n\t\tframe.validate();\n\t\tframe.pack();\n\t\tint width = Math.min(MAX_WINDOW_WIDTH, frame.getWidth() + 32);\n\t\tint height = Math.min(MAX_WINDOW_HEIGHT, frame.getHeight() + 10);\n\t\tframe.setSize(width, height);  // a bit of buffer for scrollbar\n\t\t\n//\t\tif (frame.isVisible() != !isEmpty()) {\n//\t\t\tframe.setVisible(!isEmpty());\n//\t\t}\n\t\t\n\t\t// scroll to bottom as new tests appear\n\t\t// scroll.getVerticalScrollBar().setValue(scroll.getVerticalScrollBar().getMaximum());\n\t}\n\t\n\t/*\n\t * toggles minimized state\n\t */\n\tprivate void minimize(Container category) {\n\t\tminimize(category, !category.getName().contains(\"hidden\"));\n\t}\n\t\n\tprivate void minimize(Container category, boolean minimized) {\n\t\tif (minimized) {\n\t\t\tcategory.setName(\"category_hidden\");\n\t\t} else {\n\t\t\tcategory.setName(\"category\");\n\t\t}\n\t\tfor (Component comp : category.getComponents()) {\n\t\t\tif (comp instanceof JPanel) {\n\t\t\t\tJPanel panel = (JPanel) comp;\n\t\t\t\tString name = panel.getName();\n\t\t\t\tif (name == null || !name.equals(\"testPanel\")) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tDimension size = panel.getPreferredSize();\n\t\t\t\tif (testPanelHeight < 0) {\n\t\t\t\t\ttestPanelHeight = size.height;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tsize.height = minimized ? 0 : testPanelHeight;\n\t\t\t\tpanel.setPreferredSize(size);\n\t\t\t\tif (minimized) {\n\t\t\t\t\tpanel.setMaximumSize(size);\n\t\t\t\t} else {\n\t\t\t\t\tpanel.setMaximumSize(null);\n\t\t\t\t}\n\t\t\t\tpanel.invalidate();\n\t\t\t\tcategory.invalidate();\n\t\t\t}\n\t\t}\n\t\tcategory.validate();\n\t\tcontentPaneBox.validate();\n\t\tscroll.validate();\n\t\tframe.validate();\n\t}\n\t\n\tprivate void selectAll(Container category, boolean selected) {\n\t\tfor (Component comp : category.getComponents()) {\n\t\t\tif (comp instanceof JCheckBox) {\n\t\t\t\tJCheckBox checkBox = (JCheckBox) comp;\n\t\t\t\tcheckBox.setSelected(selected);\n\t\t\t} else if (comp instanceof Container) {\n\t\t\t\tContainer container = (Container) comp;\n\t\t\t\tselectAll(container, selected);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t/*\n\t\tenum UnitTestType {\n\t\t    ASSERT_EQUALS = 0,\n\t\t    ASSERT_NOT_EQUALS,\n\t\t    ASSERT_NEAR,\n\t\t    ASSERT_DIFF,\n\t\t    ASSERT_TRUE,\n\t\t    ASSERT_FALSE,\n\t\t    ASSERT_NOT_NULL,\n\t\t    ASSERT_NULL,\n\t\t    EXCEPTION,\n\t\t    NOT_EXCEPTION,\n\t\t    PASS,\n\t\t    FAIL,\n\t\t};\n\t */\n\tprivate void showTestDetails(String testFullName) {\n\t\t// {testType=TEST_ASSERT_EQUALS,\n\t\t//  message=\"......\",\n\t\t//  expected=foobarbaz,\n\t\t//  student=foobarbaz,\n\t\t//  valueType=string,\n\t\t//  passed=true}\n\t\tTestInfo testInfo = allTests.get(testFullName);\n\t\tif (testInfo == null) {\n\t\t\treturn;\n\t\t}\n\t\tMap<String, String> deets = testInfo.details;\n\t\tif (deets.isEmpty()) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tboolean passed = deets.containsKey(\"passed\") && deets.get(\"passed\").equalsIgnoreCase(\"true\");\n\t\tString type = deets.containsKey(\"testType\") ? deets.get(\"testType\").toUpperCase().intern() : \"\";\n\t\tString message = StringUtils.htmlEncode(deets.get(\"message\"));\n\t\tif (type == \"ASSERT_EQUALS\") {\n\t\t\tmessage += \" (must be equal)\";\n\t\t} else if (type == \"ASSERT_NOT_EQUALS\") {\n\t\t\tmessage += \" (must be non-equal)\";\n\t\t} else if (type == \"ASSERT_NEAR\") {\n\t\t\tmessage += \" (must be nearly equal)\";\n\t\t} else if (type == \"ASSERT_DIFF\") {\n\t\t\tmessage += \" (program output must match)\";\n//\t\t} else if (type == \"ASSERT_TRUE\") {\n//\t\t\tmessage += \" (must be true)\";\n//\t\t} else if (type == \"ASSERT_FALSE\") {\n//\t\t\tmessage += \" (must be false)\";\n//\t\t} else if (type == \"ASSERT_NULL\") {\n//\t\t\tmessage += \" (must be null)\";\n//\t\t} else if (type == \"ASSERT_NOT_NULL\") {\n//\t\t\tmessage += \" (must not be null)\";\n\t\t} else if (type == \"EXCEPTION\") {\n\t\t\t// message += \" (threw exception)\";\n\t\t} else if (type == \"NOT_EXCEPTION\") {\n\t\t\tmessage += \" (didn't throw expected exception)\";\n\t\t} else if (type == \"PASS\") {\n\t\t\tmessage += \" (passed)\";\n\t\t} else if (type == \"FAIL\") {\n\t\t\tmessage += \" (failed)\";\n\t\t} else if (type == \"STYLE_CHECK\") {\n\t\t\t// message += \" (style checker warning)\";\n\t\t}\n\t\t\n\t\t// simple expected/actual tests (show both as bullets)\n\t\tString expected = String.valueOf(deets.get(\"expected\"));\n\t\tString student  = String.valueOf(deets.get(\"student\"));\n\t\tif (type != \"ASSERT_DIFF\") {\n\t\t\t// BUGFIX: don't HTML-encode Diff outputs here; they are encoded by DiffGui, so don't double-HTML-encode\n\t\t\texpected = StringUtils.htmlEncode(expected);\n\t\t\tstudent  = StringUtils.htmlEncode(student);\n\t\t}\n\t\t\n\t\tString valueType = deets.containsKey(\"valueType\") ? deets.get(\"valueType\").toLowerCase().intern() : \"\";\n\t\tif (valueType == \"string\") {\n\t\t\texpected = \"\\\"\" + expected + \"\\\"\";\n\t\t\tstudent  = \"\\\"\" + student  + \"\\\"\";\n\t\t} else if (valueType == \"char\") {\n\t\t\texpected = \"'\" + expected + \"'\";\n\t\t\tstudent  = \"'\" + student  + \"'\";\n\t\t}\n\t\t\n\t\tString stack = \"\";\n\t\tif (deets.containsKey(\"stackTrace\")) {\n\t\t\tstack = StringUtils.htmlEncode(deets.get(\"stackTrace\")).replace(\"\\n\", \"<br>\").replace(\"\\t\", \"  \");\n\t\t}\n\t\t\n\t\tboolean shouldShowJOptionPane = true;\n\t\tif (type == \"ASSERT_EQUALS\" || type == \"ASSERT_NOT_EQUALS\"\n\t\t\t\t|| type == \"ASSERT_NEAR\" || type == \"STYLE_CHECK\"\n\t\t\t\t|| type == \"ASSERT_NULL\" || type == \"ASSERT_NOT_NULL\"\n\t\t\t\t|| type == \"ASSERT_TRUE\" || type == \"ASSERT_FALSE\") {\n\t\t\tString htmlMessage = \"\";\n\t\t\tString expectedTruncated = StringUtils.truncate(expected, MAX_VALUE_DISPLAY_LENGTH, \" ...\");\n\t\t\tString studentTruncated  = StringUtils.truncate(student, MAX_VALUE_DISPLAY_LENGTH, \" ...\");\n\t\t\thtmlMessage += \"<p>\" + message + \"</p>\";\n\t\t\thtmlMessage += \"<ul>\";\n\t\t\thtmlMessage += \"<li><font style='font-family: monospaced' color='\" + DiffGui.EXPECTED_COLOR + \"'>expected:</font> <font style='font-family: monospaced'>\" + expectedTruncated + \"</font></li>\";\n\t\t\thtmlMessage += \"<li><font style='font-family: monospaced' color='\" + DiffGui.STUDENT_COLOR  + \"'>student :</font> <font style='font-family: monospaced'>\" + studentTruncated  + \"</font></li>\";\n\t\t\thtmlMessage += \"</ul>\";\n\t\t\t\n\t\t\thtmlMessage += \"<p>result: \"\n\t\t\t\t\t+ \"<font color='\" + (passed ? PASS_COLOR_HEX : FAIL_COLOR_HEX).replace(\"0x\", \"#\") + \"'><b>\"\n\t\t\t\t\t+ (passed ? \"PASS\" : \"FAIL\")\n\t\t\t\t\t+ \"</b></font></p>\";\n\t\t\t\n\t\t\tif (!stack.isEmpty()) {\n\t\t\t\thtmlMessage += \"<div style='margin-top: 5px;'><b>Stack trace:</b></div><pre>\" + stack + \"</pre>\";\n\t\t\t}\n\t\t\t\n\t\t\t// wrap in <html><body> ... </body></html> tags\n\t\t\thtmlMessage = GuiUtils.htmlLabelText(htmlMessage, CollectionUtils.asMap(\n\t\t\t\t\t\"max-width\", DIALOG_WIDTH\n\t\t\t));\n\t\t\t\n\t\t\thtmlMessage = htmlMessage.replace(\"\\n\", \"\\\\n\");\n\t\t\thtmlMessage = htmlMessage.replace(\"\\r\", \"\\\\r\");\n\t\t\thtmlMessage = htmlMessage.replace(\"\\t\", \"\\\\t\");\n\t\t\tmessage = htmlMessage;\n\t\t} else if (type == \"ASSERT_DIFF\") {\n\t\t\tshouldShowJOptionPane = false;\n\t\t\tint flags = Diff.FLAGS_DEFAULT_LENIENT;\n\t\t\tif (deets.containsKey(\"diffFlags\")) {\n\t\t\t\tflags = Integer.parseInt(deets.get(\"diffFlags\"));\n\t\t\t}\n\t\t\tnew DiffGui(\"expected output\", expected, \"student output\", student, flags).show();\n\t\t} else if (type == \"ASSERT_DIFF_IMAGE\") {\n\t\t\tshouldShowJOptionPane = false;\n\t\t\tDiffImage diff = new DiffImage(expected, student);\n\t\t\tdiff.setVisible(true);\n\t\t} else if (type == \"MANUAL\") {\n\t\t\tshouldShowJOptionPane = true;\n\t\t\tString htmlMessage = \"\";\n\t\t\thtmlMessage += \"<pre>\" + message + \"</pre>\";\n\n\t\t\t// wrap in <html><body> ... </body></html> tags\n\t\t\thtmlMessage = GuiUtils.htmlLabelText(htmlMessage, CollectionUtils.asMap(\n\t\t\t\t\t\"max-width\", DIALOG_WIDTH\n\t\t\t));\n\n\t\t\thtmlMessage = htmlMessage.replace(\"\\n\", \"<br>\");\n\t\t\thtmlMessage = htmlMessage.replace(\"\\r\", \"\");\n\t\t\thtmlMessage = htmlMessage.replace(\"\\t\", \"    \");\n\t\t\tmessage = htmlMessage;\n\t\t}\n\t\t\n\t\tif (shouldShowJOptionPane) {\n\t\t\tJOptionPane.showMessageDialog(\n\t\t\t\t\t/* parent */ frame,\n\t\t\t\t\tmessage,\n\t\t\t\t\t/* title */ testFullName,\n\t\t\t\t\t/* type */ passed ? JOptionPane.INFORMATION_MESSAGE : JOptionPane.ERROR_MESSAGE);\n\t\t}\n\t\t\n\t\tsetChanged();\n\t\tnotifyObservers(testFullName);\n\t}\n\t\n\tprivate int getCheckedTestCount() {\n\t\tint count = 0;\n\t\tSet<TestInfo> tests = new HashSet<TestInfo>(allTests.values());\n\t\tfor (TestInfo info : tests) {\n\t\t\tif (isChecked(info.fullName())) {\n\t\t\t\tcount++;\n\t\t\t}\n\t\t}\n\t\treturn count;\n\t}\n\t\n\tprivate void updateSouthText() {\n\t\tString text = \"passed \" + passCount + \" / \" + getCheckedTestCount() + \" tests\";\n\t\tif (testingIsInProgress) {\n\t\t\ttext += \" (running ...)\";\n\t\t\tif (southLabel.getIcon() == null) {\n\t\t\t\tsouthLabel.setIcon(new ImageIcon(ResourceUtils.filenameToURL(ICONS_FOLDER + \"progress.gif\")));\n\t\t\t}\n\t\t} else {\n\t\t\ttext += \" (complete)\";\n\t\t\tsouthLabel.setIcon(null);\n\t\t}\n\t\tsouthLabel.setText(text);\n\t}\n\t\n\tprivate class AutograderUnitTestGUIWindowAdapter extends WindowAdapter {\n\t\tpublic void windowClosing(WindowEvent event) {\n\t\t\tif (testingIsInProgress) {\n\t\t\t\t// probably a hung student test case; kill back-end\n\t\t\t\tif (javaBackEnd != null) {\n\t\t\t\t\tjavaBackEnd.shutdownBackEnd(/* sendEvent */ true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t/**\n\t * Select/Deselect all on double-click.\n\t */\n\tprivate class AutograderUnitTestGUIMouseAdapter extends MouseAdapter {\n\t\tpublic void mouseClicked(MouseEvent event) {\n\t\t\tif (event.getClickCount() == 2) {\n\t\t\t\tJButton button = (JButton) event.getSource();\n\t\t\t\tif (button.getText().contains(\"All\")) {\n\t\t\t\t\tselectAll(contentPaneBox, true);\n\t\t\t\t\tallCategoriesHidden = false;\n\t\t\t\t} else if (button.getText().contains(\"None\")) {\n\t\t\t\t\tselectAll(contentPaneBox, false);\n\t\t\t\t\tallCategoriesHidden = true;\n\t\t\t\t} else if (button.getText().contains(\"Hide\")) {\n\t\t\t\t\tallCategoriesHidden = !allCategoriesHidden;\n\t\t\t\t}\n\t\t\t\tfor (Container category : allCategories.values()) {\n\t\t\t\t\tminimize(category, allCategoriesHidden);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/AutograderUnitTest_addTest.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class AutograderUnitTest_addTest extends JBESwingCommand {\n\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString testName = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString categoryName = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tboolean isStyleCheck = nextBoolean(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tAutograderUnitTestGUI gui = AutograderUnitTestGUI.getInstance(paramJavaBackEnd, isStyleCheck);\n\t\tgui.addTest(testName, categoryName);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/AutograderUnitTest_catchExceptions.java",
    "content": "/*\n * @version 2016/12/01\n * - initial version\n */\n\npackage stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class AutograderUnitTest_catchExceptions extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tscanner.verifyToken(\")\");\n\t\tAutograderUnitTestGUI gui = AutograderUnitTestGUI.getInstance(jbe, /* isStyleCheck */ false);\n\t\tboolean catching = gui.catchExceptions();\n\t\tSplPipeDecoder.writeResult(catching);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/AutograderUnitTest_clearTestResults.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class AutograderUnitTest_clearTestResults extends JBESwingCommand {\n\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tboolean isStyleCheck = nextBoolean(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tAutograderUnitTestGUI gui = AutograderUnitTestGUI.getInstance(paramJavaBackEnd, isStyleCheck);\n\t\tgui.clearTestResults();\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/AutograderUnitTest_clearTests.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class AutograderUnitTest_clearTests extends JBESwingCommand {\n\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tboolean isStyleCheck = nextBoolean(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tAutograderUnitTestGUI gui = AutograderUnitTestGUI.getInstance(paramJavaBackEnd, isStyleCheck);\n\t\tgui.clearTests();\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/AutograderUnitTest_isChecked.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class AutograderUnitTest_isChecked extends JBESwingCommand {\n\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString testName = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tAutograderUnitTestGUI gui = AutograderUnitTestGUI.getInstance(paramJavaBackEnd);\n\t\tboolean checked = gui.isChecked(testName);\n\t\tSplPipeDecoder.writeResult(checked);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/AutograderUnitTest_runTestsInSeparateThreads.java",
    "content": "/*\n * @version 2018/01/23\n * - initial version\n */\n\npackage stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class AutograderUnitTest_runTestsInSeparateThreads extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tscanner.verifyToken(\")\");\n\t\tAutograderUnitTestGUI gui = AutograderUnitTestGUI.getInstance(jbe, /* isStyleCheck */ false);\n\t\tboolean runInThreads = gui.runTestsInSeparateThreads();\n\t\tSplPipeDecoder.writeResult(runInThreads);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/AutograderUnitTest_setChecked.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class AutograderUnitTest_setChecked extends JBESwingCommand {\n\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString testName = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tboolean checked = nextBoolean(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tAutograderUnitTestGUI gui = AutograderUnitTestGUI.getInstance(paramJavaBackEnd);\n\t\tgui.setChecked(testName, checked);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/AutograderUnitTest_setTestCounts.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class AutograderUnitTest_setTestCounts extends JBESwingCommand {\n\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tint passCount = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint testCount = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tboolean isStyleCheck = nextBoolean(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tAutograderUnitTestGUI gui = AutograderUnitTestGUI.getInstance(paramJavaBackEnd, isStyleCheck);\n\t\tgui.setTestCounts(passCount, testCount);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/AutograderUnitTest_setTestDetails.java",
    "content": "package stanford.spl;\n\nimport java.util.*;\n\nimport acm.util.TokenScanner;\n\n// AutograderUnitTest.setTestDetails(\n//   \"Test19_caseSensitivity\",\n//   \"UnitTestDetails{\n//        testType=TEST_ASSERT_EQUALS,\n//        expected=No+word+ladder+found+from+DATa+back+to+CoDe.,\n//        student=No+word+ladder+found+from+DATa+back+to+CoDe.,\n//        valueType=string,\n//        passed=false}\")\npublic class AutograderUnitTest_setTestDetails extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString testName = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString details = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tboolean isStyleCheck = nextBoolean(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\t// parse the deets\n\t\t// \"UnitTestDetails{testType=TEST_ASSERT_EQUALS,\n\t\t//                  expected=No+word+ladder+found+from+DATa+back+to+CoDe.,\n\t\t//                  student=No+word+ladder+found+from+DATa+back+to+CoDe.,\n\t\t//                  valueType=string,passed=false}\"\n\t\tdetails = details.replace(\"UnitTestDetails{\", \"\").replace(\"}\", \"\");\n\t\tString[] deetTokens = details.split(\",[ \\t\\r\\n]{0,99}\");\n\t\tMap<String, String> deetMap = new LinkedHashMap<String, String>();\n\t\tfor (String token : deetTokens) {\n\t\t\tString[] parts = token.split(\"=\");\n\t\t\tif (parts.length < 2) continue;\n\t\t\tdeetMap.put(parts[0], SplPipeDecoder.decode(parts[1]));\n\t\t}\n\t\t\n\t\tAutograderUnitTestGUI gui = AutograderUnitTestGUI.getInstance(paramJavaBackEnd, isStyleCheck);\n\t\tgui.setTestDetails(testName, deetMap);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/AutograderUnitTest_setTestResult.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class AutograderUnitTest_setTestResult extends JBESwingCommand {\n\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString testName = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString result = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tboolean isStyleCheck = nextBoolean(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tAutograderUnitTestGUI gui = AutograderUnitTestGUI.getInstance(paramJavaBackEnd, isStyleCheck);\n\t\tgui.setTestResult(testName, result);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/AutograderUnitTest_setTestRuntime.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class AutograderUnitTest_setTestRuntime extends JBESwingCommand {\n\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString testName = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint runtime = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tAutograderUnitTestGUI gui = AutograderUnitTestGUI.getInstance(paramJavaBackEnd);\n\t\tgui.setTestRuntime(testName, runtime);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/AutograderUnitTest_setTestingCompleted.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class AutograderUnitTest_setTestingCompleted extends JBESwingCommand {\n\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tboolean completed = nextBoolean(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tboolean isStyleCheck = nextBoolean(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tAutograderUnitTestGUI gui = AutograderUnitTestGUI.getInstance(paramJavaBackEnd, isStyleCheck);\n\t\tgui.setTestingCompleted(completed);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/AutograderUnitTest_setVisible.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class AutograderUnitTest_setVisible extends JBESwingCommand {\n\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tboolean visible = nextBoolean(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tboolean isStyleCheck = nextBoolean(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tAutograderUnitTestGUI gui = AutograderUnitTestGUI.getInstance(paramJavaBackEnd, isStyleCheck);\n\t\tgui.setVisible(visible);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/AutograderUnitTest_setWindowDescriptionText.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class AutograderUnitTest_setWindowDescriptionText extends JBESwingCommand {\n\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString description = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tboolean isStyleCheck = nextBoolean(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tAutograderUnitTestGUI gui = AutograderUnitTestGUI.getInstance(paramJavaBackEnd, isStyleCheck);\n\t\tgui.setDescription(description);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/Base64.java",
    "content": "package stanford.spl;\n\n/**\n * <p>Encodes and decodes to and from Base64 notation.</p>\n * <p>Homepage: <a href=\"http://iharder.net/base64\">http://iharder.net/base64</a>.</p>\n * \n * <p>Example:</p>\n * \n * <code>String encoded = Base64.encode( myByteArray );</code>\n * <br />\n * <code>byte[] myByteArray = Base64.decode( encoded );</code>\n *\n * <p>The <tt>options</tt> parameter, which appears in a few places, is used to pass \n * several pieces of information to the encoder. In the \"higher level\" methods such as \n * encodeBytes( bytes, options ) the options parameter can be used to indicate such \n * things as first gzipping the bytes before encoding them, not inserting linefeeds,\n * and encoding using the URL-safe and Ordered dialects.</p>\n *\n * <p>Note, according to <a href=\"http://www.faqs.org/rfcs/rfc3548.html\">RFC3548</a>,\n * Section 2.1, implementations should not add line feeds unless explicitly told\n * to do so. I've got Base64 set to this behavior now, although earlier versions\n * broke lines by default.</p>\n *\n * <p>The constants defined in Base64 can be OR-ed together to combine options, so you \n * might make a call like this:</p>\n *\n * <code>String encoded = Base64.encodeBytes( mybytes, Base64.GZIP | Base64.DO_BREAK_LINES );</code>\n * <p>to compress the data before encoding it and then making the output have newline characters.</p>\n * <p>Also...</p>\n * <code>String encoded = Base64.encodeBytes( crazyString.getBytes() );</code>\n *\n *\n *\n * <p>\n * Change Log:\n * </p>\n * <ul>\n *  <li>v2.3.7 - Fixed subtle bug when base 64 input stream contained the\n *   value 01111111, which is an invalid base 64 character but should not\n *   throw an ArrayIndexOutOfBoundsException either. Led to discovery of\n *   mishandling (or potential for better handling) of other bad input\n *   characters. You should now get an IOException if you try decoding\n *   something that has bad characters in it.</li>\n *  <li>v2.3.6 - Fixed bug when breaking lines and the final byte of the encoded\n *   string ended in the last column; the buffer was not properly shrunk and\n *   contained an extra (null) byte that made it into the string.</li>\n *  <li>v2.3.5 - Fixed bug in {@link #encodeFromFile} where estimated buffer size\n *   was wrong for files of size 31, 34, and 37 bytes.</li>\n *  <li>v2.3.4 - Fixed bug when working with gzipped streams whereby flushing\n *   the Base64.OutputStream closed the Base64 encoding (by padding with equals\n *   signs) too soon. Also added an option to suppress the automatic decoding\n *   of gzipped streams. Also added experimental support for specifying a\n *   class loader when using the\n *   {@link #decodeToObject(java.lang.String, int, java.lang.ClassLoader)}\n *   method.</li>\n *  <li>v2.3.3 - Changed default char encoding to US-ASCII which reduces the internal Java\n *   footprint with its CharEncoders and so forth. Fixed some javadocs that were\n *   inconsistent. Removed imports and specified things like java.io.IOException\n *   explicitly inline.</li>\n *  <li>v2.3.2 - Reduced memory footprint! Finally refined the \"guessing\" of how big the\n *   final encoded data will be so that the code doesn't have to create two output\n *   arrays: an oversized initial one and then a final, exact-sized one. Big win\n *   when using the {@link #encodeBytesToBytes(byte[])} family of methods (and not\n *   using the gzip options which uses a different mechanism with streams and stuff).</li>\n *  <li>v2.3.1 - Added {@link #encodeBytesToBytes(byte[], int, int, int)} and some\n *   similar helper methods to be more efficient with memory by not returning a\n *   String but just a byte array.</li>\n *  <li>v2.3 - <strong>This is not a drop-in replacement!</strong> This is two years of comments\n *   and bug fixes queued up and finally executed. Thanks to everyone who sent\n *   me stuff, and I'm sorry I wasn't able to distribute your fixes to everyone else.\n *   Much bad coding was cleaned up including throwing exceptions where necessary \n *   instead of returning null values or something similar. Here are some changes\n *   that may affect you:\n *   <ul>\n *    <li><em>Does not break lines, by default.</em> This is to keep in compliance with\n *      <a href=\"http://www.faqs.org/rfcs/rfc3548.html\">RFC3548</a>.</li>\n *    <li><em>Throws exceptions instead of returning null values.</em> Because some operations\n *      (especially those that may permit the GZIP option) use IO streams, there\n *      is a possiblity of an java.io.IOException being thrown. After some discussion and\n *      thought, I've changed the behavior of the methods to throw java.io.IOExceptions\n *      rather than return null if ever there's an error. I think this is more\n *      appropriate, though it will require some changes to your code. Sorry,\n *      it should have been done this way to begin with.</li>\n *    <li><em>Removed all references to System.out, System.err, and the like.</em>\n *      Shame on me. All I can say is sorry they were ever there.</li>\n *    <li><em>Throws NullPointerExceptions and IllegalArgumentExceptions</em> as needed\n *      such as when passed arrays are null or offsets are invalid.</li>\n *    <li>Cleaned up as much javadoc as I could to avoid any javadoc warnings.\n *      This was especially annoying before for people who were thorough in their\n *      own projects and then had gobs of javadoc warnings on this file.</li>\n *   </ul>\n *  <li>v2.2.1 - Fixed bug using URL_SAFE and ORDERED encodings. Fixed bug\n *   when using very small files (~&lt; 40 bytes).</li>\n *  <li>v2.2 - Added some helper methods for encoding/decoding directly from\n *   one file to the next. Also added a main() method to support command line\n *   encoding/decoding from one file to the next. Also added these Base64 dialects:\n *   <ol>\n *   <li>The default is RFC3548 format.</li>\n *   <li>Calling Base64.setFormat(Base64.BASE64_FORMAT.URLSAFE_FORMAT) generates\n *   URL and file name friendly format as described in Section 4 of RFC3548.\n *   http://www.faqs.org/rfcs/rfc3548.html</li>\n *   <li>Calling Base64.setFormat(Base64.BASE64_FORMAT.ORDERED_FORMAT) generates\n *   URL and file name friendly format that preserves lexical ordering as described\n *   in http://www.faqs.org/qa/rfcc-1940.html</li>\n *   </ol>\n *   Special thanks to Jim Kellerman at <a href=\"http://www.powerset.com/\">http://www.powerset.com/</a>\n *   for contributing the new Base64 dialects.\n *  </li>\n * \n *  <li>v2.1 - Cleaned up javadoc comments and unused variables and methods. Added\n *   some convenience methods for reading and writing to and from files.</li>\n *  <li>v2.0.2 - Now specifies UTF-8 encoding in places where the code fails on systems\n *   with other encodings (like EBCDIC).</li>\n *  <li>v2.0.1 - Fixed an error when decoding a single byte, that is, when the\n *   encoded data was a single byte.</li>\n *  <li>v2.0 - I got rid of methods that used booleans to set options. \n *   Now everything is more consolidated and cleaner. The code now detects\n *   when data that's being decoded is gzip-compressed and will decompress it\n *   automatically. Generally things are cleaner. You'll probably have to\n *   change some method calls that you were making to support the new\n *   options format (<tt>int</tt>s that you \"OR\" together).</li>\n *  <li>v1.5.1 - Fixed bug when decompressing and decoding to a             \n *   byte[] using <tt>decode( String s, boolean gzipCompressed )</tt>.      \n *   Added the ability to \"suspend\" encoding in the Output Stream so        \n *   you can turn on and off the encoding if you need to embed base64       \n *   data in an otherwise \"normal\" stream (like an XML file).</li>  \n *  <li>v1.5 - Output stream pases on flush() command but doesn't do anything itself.\n *      This helps when using GZIP streams.\n *      Added the ability to GZip-compress objects before encoding them.</li>\n *  <li>v1.4 - Added helper methods to read/write files.</li>\n *  <li>v1.3.6 - Fixed OutputStream.flush() so that 'position' is reset.</li>\n *  <li>v1.3.5 - Added flag to turn on and off line breaks. Fixed bug in input stream\n *      where last buffer being read, if not completely full, was not returned.</li>\n *  <li>v1.3.4 - Fixed when \"improperly padded stream\" error was thrown at the wrong time.</li>\n *  <li>v1.3.3 - Fixed I/O streams which were totally messed up.</li>\n * </ul>\n *\n * <p>\n * I am placing this code in the Public Domain. Do with it as you will.\n * This software comes with no guarantees or warranties but with\n * plenty of well-wishing instead!\n * Please visit <a href=\"http://iharder.net/base64\">http://iharder.net/base64</a>\n * periodically to check for updates or to contribute improvements.\n * </p>\n *\n * @author Robert Harder\n * @author rob@iharder.net\n * @version 2.3.7\n */\npublic class Base64\n{\n    \n/* ********  P U B L I C   F I E L D S  ******** */   \n    \n    \n    /** No options specified. Value is zero. */\n    public final static int NO_OPTIONS = 0;\n    \n    /** Specify encoding in first bit. Value is one. */\n    public final static int ENCODE = 1;\n    \n    \n    /** Specify decoding in first bit. Value is zero. */\n    public final static int DECODE = 0;\n    \n\n    /** Specify that data should be gzip-compressed in second bit. Value is two. */\n    public final static int GZIP = 2;\n\n    /** Specify that gzipped data should <em>not</em> be automatically gunzipped. */\n    public final static int DONT_GUNZIP = 4;\n    \n    \n    /** Do break lines when encoding. Value is 8. */\n    public final static int DO_BREAK_LINES = 8;\n\t\n    /** \n     * Encode using Base64-like encoding that is URL- and Filename-safe as described\n     * in Section 4 of RFC3548: \n     * <a href=\"http://www.faqs.org/rfcs/rfc3548.html\">http://www.faqs.org/rfcs/rfc3548.html</a>.\n     * It is important to note that data encoded this way is <em>not</em> officially valid Base64, \n     * or at the very least should not be called Base64 without also specifying that is\n     * was encoded using the URL- and Filename-safe dialect.\n     */\n     public final static int URL_SAFE = 16;\n\n\n     /**\n      * Encode using the special \"ordered\" dialect of Base64 described here:\n      * <a href=\"http://www.faqs.org/qa/rfcc-1940.html\">http://www.faqs.org/qa/rfcc-1940.html</a>.\n      */\n     public final static int ORDERED = 32;\n    \n    \n/* ********  P R I V A T E   F I E L D S  ******** */  \n    \n    \n    /** Maximum line length (76) of Base64 output. */\n    private final static int MAX_LINE_LENGTH = 76;\n    \n    \n    /** The equals sign (=) as a byte. */\n    private final static byte EQUALS_SIGN = (byte)'=';\n    \n    \n    /** The new line character (\\n) as a byte. */\n    private final static byte NEW_LINE = (byte)'\\n';\n    \n    \n    /** Preferred encoding. */\n    private final static String PREFERRED_ENCODING = \"US-ASCII\";\n    \n\t\n    private final static byte WHITE_SPACE_ENC = -5; // Indicates white space in encoding\n    private final static byte EQUALS_SIGN_ENC = -1; // Indicates equals sign in encoding\n\t\n\t\n/* ********  S T A N D A R D   B A S E 6 4   A L P H A B E T  ******** */\t\n    \n    /** The 64 valid Base64 values. */\n    /* Host platform me be something funny like EBCDIC, so we hardcode these values. */\n    private final static byte[] _STANDARD_ALPHABET = {\n        (byte)'A', (byte)'B', (byte)'C', (byte)'D', (byte)'E', (byte)'F', (byte)'G',\n        (byte)'H', (byte)'I', (byte)'J', (byte)'K', (byte)'L', (byte)'M', (byte)'N',\n        (byte)'O', (byte)'P', (byte)'Q', (byte)'R', (byte)'S', (byte)'T', (byte)'U', \n        (byte)'V', (byte)'W', (byte)'X', (byte)'Y', (byte)'Z',\n        (byte)'a', (byte)'b', (byte)'c', (byte)'d', (byte)'e', (byte)'f', (byte)'g',\n        (byte)'h', (byte)'i', (byte)'j', (byte)'k', (byte)'l', (byte)'m', (byte)'n',\n        (byte)'o', (byte)'p', (byte)'q', (byte)'r', (byte)'s', (byte)'t', (byte)'u', \n        (byte)'v', (byte)'w', (byte)'x', (byte)'y', (byte)'z',\n        (byte)'0', (byte)'1', (byte)'2', (byte)'3', (byte)'4', (byte)'5', \n        (byte)'6', (byte)'7', (byte)'8', (byte)'9', (byte)'+', (byte)'/'\n    };\n\t\n    \n    /** \n     * Translates a Base64 value to either its 6-bit reconstruction value\n     * or a negative number indicating some other meaning.\n     **/\n    private final static byte[] _STANDARD_DECODABET = {\n        -9,-9,-9,-9,-9,-9,-9,-9,-9,                 // Decimal  0 -  8\n        -5,-5,                                      // Whitespace: Tab and Linefeed\n        -9,-9,                                      // Decimal 11 - 12\n        -5,                                         // Whitespace: Carriage Return\n        -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 14 - 26\n        -9,-9,-9,-9,-9,                             // Decimal 27 - 31\n        -5,                                         // Whitespace: Space\n        -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,              // Decimal 33 - 42\n        62,                                         // Plus sign at decimal 43\n        -9,-9,-9,                                   // Decimal 44 - 46\n        63,                                         // Slash at decimal 47\n        52,53,54,55,56,57,58,59,60,61,              // Numbers zero through nine\n        -9,-9,-9,                                   // Decimal 58 - 60\n        -1,                                         // Equals sign at decimal 61\n        -9,-9,-9,                                      // Decimal 62 - 64\n        0,1,2,3,4,5,6,7,8,9,10,11,12,13,            // Letters 'A' through 'N'\n        14,15,16,17,18,19,20,21,22,23,24,25,        // Letters 'O' through 'Z'\n        -9,-9,-9,-9,-9,-9,                          // Decimal 91 - 96\n        26,27,28,29,30,31,32,33,34,35,36,37,38,     // Letters 'a' through 'm'\n        39,40,41,42,43,44,45,46,47,48,49,50,51,     // Letters 'n' through 'z'\n        -9,-9,-9,-9,-9                              // Decimal 123 - 127\n        ,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,       // Decimal 128 - 139\n        -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 140 - 152\n        -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 153 - 165\n        -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 166 - 178\n        -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 179 - 191\n        -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 192 - 204\n        -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 205 - 217\n        -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 218 - 230\n        -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 231 - 243\n        -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9         // Decimal 244 - 255 \n    };\n\t\n\t\n/* ********  U R L   S A F E   B A S E 6 4   A L P H A B E T  ******** */\n\t\n    /**\n     * Used in the URL- and Filename-safe dialect described in Section 4 of RFC3548: \n     * <a href=\"http://www.faqs.org/rfcs/rfc3548.html\">http://www.faqs.org/rfcs/rfc3548.html</a>.\n     * Notice that the last two bytes become \"hyphen\" and \"underscore\" instead of \"plus\" and \"slash.\"\n     */\n    private final static byte[] _URL_SAFE_ALPHABET = {\n      (byte)'A', (byte)'B', (byte)'C', (byte)'D', (byte)'E', (byte)'F', (byte)'G',\n      (byte)'H', (byte)'I', (byte)'J', (byte)'K', (byte)'L', (byte)'M', (byte)'N',\n      (byte)'O', (byte)'P', (byte)'Q', (byte)'R', (byte)'S', (byte)'T', (byte)'U', \n      (byte)'V', (byte)'W', (byte)'X', (byte)'Y', (byte)'Z',\n      (byte)'a', (byte)'b', (byte)'c', (byte)'d', (byte)'e', (byte)'f', (byte)'g',\n      (byte)'h', (byte)'i', (byte)'j', (byte)'k', (byte)'l', (byte)'m', (byte)'n',\n      (byte)'o', (byte)'p', (byte)'q', (byte)'r', (byte)'s', (byte)'t', (byte)'u', \n      (byte)'v', (byte)'w', (byte)'x', (byte)'y', (byte)'z',\n      (byte)'0', (byte)'1', (byte)'2', (byte)'3', (byte)'4', (byte)'5', \n      (byte)'6', (byte)'7', (byte)'8', (byte)'9', (byte)'-', (byte)'_'\n    };\n\t\n    /**\n     * Used in decoding URL- and Filename-safe dialects of Base64.\n     */\n    private final static byte[] _URL_SAFE_DECODABET = {\n      -9,-9,-9,-9,-9,-9,-9,-9,-9,                 // Decimal  0 -  8\n      -5,-5,                                      // Whitespace: Tab and Linefeed\n      -9,-9,                                      // Decimal 11 - 12\n      -5,                                         // Whitespace: Carriage Return\n      -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 14 - 26\n      -9,-9,-9,-9,-9,                             // Decimal 27 - 31\n      -5,                                         // Whitespace: Space\n      -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,              // Decimal 33 - 42\n      -9,                                         // Plus sign at decimal 43\n      -9,                                         // Decimal 44\n      62,                                         // Minus sign at decimal 45\n      -9,                                         // Decimal 46\n      -9,                                         // Slash at decimal 47\n      52,53,54,55,56,57,58,59,60,61,              // Numbers zero through nine\n      -9,-9,-9,                                   // Decimal 58 - 60\n      -1,                                         // Equals sign at decimal 61\n      -9,-9,-9,                                   // Decimal 62 - 64\n      0,1,2,3,4,5,6,7,8,9,10,11,12,13,            // Letters 'A' through 'N'\n      14,15,16,17,18,19,20,21,22,23,24,25,        // Letters 'O' through 'Z'\n      -9,-9,-9,-9,                                // Decimal 91 - 94\n      63,                                         // Underscore at decimal 95\n      -9,                                         // Decimal 96\n      26,27,28,29,30,31,32,33,34,35,36,37,38,     // Letters 'a' through 'm'\n      39,40,41,42,43,44,45,46,47,48,49,50,51,     // Letters 'n' through 'z'\n      -9,-9,-9,-9,-9                              // Decimal 123 - 127\n      ,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 128 - 139\n      -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 140 - 152\n      -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 153 - 165\n      -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 166 - 178\n      -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 179 - 191\n      -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 192 - 204\n      -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 205 - 217\n      -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 218 - 230\n      -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 231 - 243\n      -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9         // Decimal 244 - 255 \n    };\n\n\n\n/* ********  O R D E R E D   B A S E 6 4   A L P H A B E T  ******** */\n\n    /**\n     * I don't get the point of this technique, but someone requested it,\n     * and it is described here:\n     * <a href=\"http://www.faqs.org/qa/rfcc-1940.html\">http://www.faqs.org/qa/rfcc-1940.html</a>.\n     */\n    private final static byte[] _ORDERED_ALPHABET = {\n      (byte)'-',\n      (byte)'0', (byte)'1', (byte)'2', (byte)'3', (byte)'4',\n      (byte)'5', (byte)'6', (byte)'7', (byte)'8', (byte)'9',\n      (byte)'A', (byte)'B', (byte)'C', (byte)'D', (byte)'E', (byte)'F', (byte)'G',\n      (byte)'H', (byte)'I', (byte)'J', (byte)'K', (byte)'L', (byte)'M', (byte)'N',\n      (byte)'O', (byte)'P', (byte)'Q', (byte)'R', (byte)'S', (byte)'T', (byte)'U',\n      (byte)'V', (byte)'W', (byte)'X', (byte)'Y', (byte)'Z',\n      (byte)'_',\n      (byte)'a', (byte)'b', (byte)'c', (byte)'d', (byte)'e', (byte)'f', (byte)'g',\n      (byte)'h', (byte)'i', (byte)'j', (byte)'k', (byte)'l', (byte)'m', (byte)'n',\n      (byte)'o', (byte)'p', (byte)'q', (byte)'r', (byte)'s', (byte)'t', (byte)'u',\n      (byte)'v', (byte)'w', (byte)'x', (byte)'y', (byte)'z'\n    };\n\t\n    /**\n     * Used in decoding the \"ordered\" dialect of Base64.\n     */\n    private final static byte[] _ORDERED_DECODABET = {\n      -9,-9,-9,-9,-9,-9,-9,-9,-9,                 // Decimal  0 -  8\n      -5,-5,                                      // Whitespace: Tab and Linefeed\n      -9,-9,                                      // Decimal 11 - 12\n      -5,                                         // Whitespace: Carriage Return\n      -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 14 - 26\n      -9,-9,-9,-9,-9,                             // Decimal 27 - 31\n      -5,                                         // Whitespace: Space\n      -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,              // Decimal 33 - 42\n      -9,                                         // Plus sign at decimal 43\n      -9,                                         // Decimal 44\n      0,                                          // Minus sign at decimal 45\n      -9,                                         // Decimal 46\n      -9,                                         // Slash at decimal 47\n      1,2,3,4,5,6,7,8,9,10,                       // Numbers zero through nine\n      -9,-9,-9,                                   // Decimal 58 - 60\n      -1,                                         // Equals sign at decimal 61\n      -9,-9,-9,                                   // Decimal 62 - 64\n      11,12,13,14,15,16,17,18,19,20,21,22,23,     // Letters 'A' through 'M'\n      24,25,26,27,28,29,30,31,32,33,34,35,36,     // Letters 'N' through 'Z'\n      -9,-9,-9,-9,                                // Decimal 91 - 94\n      37,                                         // Underscore at decimal 95\n      -9,                                         // Decimal 96\n      38,39,40,41,42,43,44,45,46,47,48,49,50,     // Letters 'a' through 'm'\n      51,52,53,54,55,56,57,58,59,60,61,62,63,     // Letters 'n' through 'z'\n      -9,-9,-9,-9,-9                                 // Decimal 123 - 127\n       ,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 128 - 139\n        -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 140 - 152\n        -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 153 - 165\n        -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 166 - 178\n        -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 179 - 191\n        -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 192 - 204\n        -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 205 - 217\n        -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 218 - 230\n        -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 231 - 243\n        -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9         // Decimal 244 - 255 \n    };\n\n\t\n/* ********  D E T E R M I N E   W H I C H   A L H A B E T  ******** */\n\n\n    /**\n     * Returns one of the _SOMETHING_ALPHABET byte arrays depending on\n     * the options specified.\n     * It's possible, though silly, to specify ORDERED <b>and</b> URLSAFE\n     * in which case one of them will be picked, though there is\n     * no guarantee as to which one will be picked.\n     */\n    private final static byte[] getAlphabet( int options ) {\n        if ((options & URL_SAFE) == URL_SAFE) {\n            return _URL_SAFE_ALPHABET;\n        } else if ((options & ORDERED) == ORDERED) {\n            return _ORDERED_ALPHABET;\n        } else {\n            return _STANDARD_ALPHABET;\n        }\n    }\t// end getAlphabet\n\n\n    /**\n     * Returns one of the _SOMETHING_DECODABET byte arrays depending on\n     * the options specified.\n     * It's possible, though silly, to specify ORDERED and URL_SAFE\n     * in which case one of them will be picked, though there is\n     * no guarantee as to which one will be picked.\n     */\n    private final static byte[] getDecodabet( int options ) {\n        if( (options & URL_SAFE) == URL_SAFE) {\n            return _URL_SAFE_DECODABET;\n        } else if ((options & ORDERED) == ORDERED) {\n            return _ORDERED_DECODABET;\n        } else {\n            return _STANDARD_DECODABET;\n        }\n    }\t// end getAlphabet\n\n\n    \n    /** Defeats instantiation. */\n    private Base64(){}\n    \n\n    \n    \n/* ********  E N C O D I N G   M E T H O D S  ******** */    \n    \n    \n    /**\n     * Encodes up to the first three bytes of array <var>threeBytes</var>\n     * and returns a four-byte array in Base64 notation.\n     * The actual number of significant bytes in your array is\n     * given by <var>numSigBytes</var>.\n     * The array <var>threeBytes</var> needs only be as big as\n     * <var>numSigBytes</var>.\n     * Code can reuse a byte array by passing a four-byte array as <var>b4</var>.\n     *\n     * @param b4 A reusable byte array to reduce array instantiation\n     * @param threeBytes the array to convert\n     * @param numSigBytes the number of significant bytes in your array\n     * @return four byte array in Base64 notation.\n     * @since 1.5.1\n     */\n    private static byte[] encode3to4( byte[] b4, byte[] threeBytes, int numSigBytes, int options ) {\n        encode3to4( threeBytes, 0, numSigBytes, b4, 0, options );\n        return b4;\n    }   // end encode3to4\n\n    \n    /**\n     * <p>Encodes up to three bytes of the array <var>source</var>\n     * and writes the resulting four Base64 bytes to <var>destination</var>.\n     * The source and destination arrays can be manipulated\n     * anywhere along their length by specifying \n     * <var>srcOffset</var> and <var>destOffset</var>.\n     * This method does not check to make sure your arrays\n     * are large enough to accomodate <var>srcOffset</var> + 3 for\n     * the <var>source</var> array or <var>destOffset</var> + 4 for\n     * the <var>destination</var> array.\n     * The actual number of significant bytes in your array is\n     * given by <var>numSigBytes</var>.</p>\n\t * <p>This is the lowest level of the encoding methods with\n\t * all possible parameters.</p>\n     *\n     * @param source the array to convert\n     * @param srcOffset the index where conversion begins\n     * @param numSigBytes the number of significant bytes in your array\n     * @param destination the array to hold the conversion\n     * @param destOffset the index where output will be put\n     * @return the <var>destination</var> array\n     * @since 1.3\n     */\n    private static byte[] encode3to4( \n    byte[] source, int srcOffset, int numSigBytes,\n    byte[] destination, int destOffset, int options ) {\n        \n\tbyte[] ALPHABET = getAlphabet( options ); \n\t\n        //           1         2         3  \n        // 01234567890123456789012345678901 Bit position\n        // --------000000001111111122222222 Array position from threeBytes\n        // --------|    ||    ||    ||    | Six bit groups to index ALPHABET\n        //          >>18  >>12  >> 6  >> 0  Right shift necessary\n        //                0x3f  0x3f  0x3f  Additional AND\n        \n        // Create buffer with zero-padding if there are only one or two\n        // significant bytes passed in the array.\n        // We have to shift left 24 in order to flush out the 1's that appear\n        // when Java treats a value as negative that is cast from a byte to an int.\n        int inBuff =   ( numSigBytes > 0 ? ((source[ srcOffset     ] << 24) >>>  8) : 0 )\n                     | ( numSigBytes > 1 ? ((source[ srcOffset + 1 ] << 24) >>> 16) : 0 )\n                     | ( numSigBytes > 2 ? ((source[ srcOffset + 2 ] << 24) >>> 24) : 0 );\n\n        switch( numSigBytes )\n        {\n            case 3:\n                destination[ destOffset     ] = ALPHABET[ (inBuff >>> 18)        ];\n                destination[ destOffset + 1 ] = ALPHABET[ (inBuff >>> 12) & 0x3f ];\n                destination[ destOffset + 2 ] = ALPHABET[ (inBuff >>>  6) & 0x3f ];\n                destination[ destOffset + 3 ] = ALPHABET[ (inBuff       ) & 0x3f ];\n                return destination;\n                \n            case 2:\n                destination[ destOffset     ] = ALPHABET[ (inBuff >>> 18)        ];\n                destination[ destOffset + 1 ] = ALPHABET[ (inBuff >>> 12) & 0x3f ];\n                destination[ destOffset + 2 ] = ALPHABET[ (inBuff >>>  6) & 0x3f ];\n                destination[ destOffset + 3 ] = EQUALS_SIGN;\n                return destination;\n                \n            case 1:\n                destination[ destOffset     ] = ALPHABET[ (inBuff >>> 18)        ];\n                destination[ destOffset + 1 ] = ALPHABET[ (inBuff >>> 12) & 0x3f ];\n                destination[ destOffset + 2 ] = EQUALS_SIGN;\n                destination[ destOffset + 3 ] = EQUALS_SIGN;\n                return destination;\n                \n            default:\n                return destination;\n        }   // end switch\n    }   // end encode3to4\n\n\n\n    /**\n     * Performs Base64 encoding on the <code>raw</code> ByteBuffer,\n     * writing it to the <code>encoded</code> ByteBuffer.\n     * This is an experimental feature. Currently it does not\n     * pass along any options (such as {@link #DO_BREAK_LINES}\n     * or {@link #GZIP}.\n     *\n     * @param raw input buffer\n     * @param encoded output buffer\n     * @since 2.3\n     */\n    public static void encode( java.nio.ByteBuffer raw, java.nio.ByteBuffer encoded ){\n        byte[] raw3 = new byte[3];\n        byte[] enc4 = new byte[4];\n\n        while( raw.hasRemaining() ){\n            int rem = Math.min(3,raw.remaining());\n            raw.get(raw3,0,rem);\n            Base64.encode3to4(enc4, raw3, rem, Base64.NO_OPTIONS );\n            encoded.put(enc4);\n        }   // end input remaining\n    }\n\n\n    /**\n     * Performs Base64 encoding on the <code>raw</code> ByteBuffer,\n     * writing it to the <code>encoded</code> CharBuffer.\n     * This is an experimental feature. Currently it does not\n     * pass along any options (such as {@link #DO_BREAK_LINES}\n     * or {@link #GZIP}.\n     *\n     * @param raw input buffer\n     * @param encoded output buffer\n     * @since 2.3\n     */\n    public static void encode( java.nio.ByteBuffer raw, java.nio.CharBuffer encoded ){\n        byte[] raw3 = new byte[3];\n        byte[] enc4 = new byte[4];\n\n        while( raw.hasRemaining() ){\n            int rem = Math.min(3,raw.remaining());\n            raw.get(raw3,0,rem);\n            Base64.encode3to4(enc4, raw3, rem, Base64.NO_OPTIONS );\n            for( int i = 0; i < 4; i++ ){\n                encoded.put( (char)(enc4[i] & 0xFF) );\n            }\n        }   // end input remaining\n    }\n\n\n    \n    \n    /**\n     * Serializes an object and returns the Base64-encoded\n     * version of that serialized object.  \n     *  \n     * <p>As of v 2.3, if the object\n     * cannot be serialized or there is another error,\n     * the method will throw an java.io.IOException. <b>This is new to v2.3!</b>\n     * In earlier versions, it just returned a null value, but\n     * in retrospect that's a pretty poor way to handle it.</p>\n     * \n     * The object is not GZip-compressed before being encoded.\n     *\n     * @param serializableObject The object to encode\n     * @return The Base64-encoded object\n     * @throws java.io.IOException if there is an error\n     * @throws NullPointerException if serializedObject is null\n     * @since 1.4\n     */\n    public static String encodeObject( java.io.Serializable serializableObject )\n    throws java.io.IOException {\n        return encodeObject( serializableObject, NO_OPTIONS );\n    }   // end encodeObject\n    \n\n\n    /**\n     * Serializes an object and returns the Base64-encoded\n     * version of that serialized object.\n     *  \n     * <p>As of v 2.3, if the object\n     * cannot be serialized or there is another error,\n     * the method will throw an java.io.IOException. <b>This is new to v2.3!</b>\n     * In earlier versions, it just returned a null value, but\n     * in retrospect that's a pretty poor way to handle it.</p>\n     * \n     * The object is not GZip-compressed before being encoded.\n     * <p>\n     * Example options:<pre>\n     *   GZIP: gzip-compresses object before encoding it.\n     *   DO_BREAK_LINES: break lines at 76 characters\n     * </pre>\n     * <p>\n     * Example: <code>encodeObject( myObj, Base64.GZIP )</code> or\n     * <p>\n     * Example: <code>encodeObject( myObj, Base64.GZIP | Base64.DO_BREAK_LINES )</code>\n     *\n     * @param serializableObject The object to encode\n     * @param options Specified options\n     * @return The Base64-encoded object\n     * @see Base64#GZIP\n     * @see Base64#DO_BREAK_LINES\n     * @throws java.io.IOException if there is an error\n     * @since 2.0\n     */\n    public static String encodeObject( java.io.Serializable serializableObject, int options )\n    throws java.io.IOException {\n\n        if( serializableObject == null ){\n            throw new NullPointerException( \"Cannot serialize a null object.\" );\n        }   // end if: null\n        \n        // Streams\n        java.io.ByteArrayOutputStream  baos  = null; \n        java.io.OutputStream           b64os = null;\n        java.util.zip.GZIPOutputStream gzos  = null;\n        java.io.ObjectOutputStream     oos   = null;\n        \n        \n        try {\n            // ObjectOutputStream -> (GZIP) -> Base64 -> ByteArrayOutputStream\n            baos  = new java.io.ByteArrayOutputStream();\n            b64os = new Base64.OutputStream( baos, ENCODE | options );\n            if( (options & GZIP) != 0 ){\n                // Gzip\n                gzos = new java.util.zip.GZIPOutputStream(b64os);\n                oos = new java.io.ObjectOutputStream( gzos );\n            } else {\n                // Not gzipped\n                oos = new java.io.ObjectOutputStream( b64os );\n            }\n            oos.writeObject( serializableObject );\n        }   // end try\n        catch( java.io.IOException e ) {\n            // Catch it and then throw it immediately so that\n            // the finally{} block is called for cleanup.\n            throw e;\n        }   // end catch\n        finally {\n            try{ oos.close();   } catch( Exception e ){}\n            try{ gzos.close();  } catch( Exception e ){}\n            try{ b64os.close(); } catch( Exception e ){}\n            try{ baos.close();  } catch( Exception e ){}\n        }   // end finally\n        \n        // Return value according to relevant encoding.\n        try {\n            return new String( baos.toByteArray(), PREFERRED_ENCODING );\n        }   // end try\n        catch (java.io.UnsupportedEncodingException uue){\n            // Fall back to some Java default\n            return new String( baos.toByteArray() );\n        }   // end catch\n        \n    }   // end encode\n    \n    \n\n    /**\n     * Encodes a byte array into Base64 notation.\n     * Does not GZip-compress data.\n     *  \n     * @param source The data to convert\n     * @return The data in Base64-encoded form\n     * @throws NullPointerException if source array is null\n     * @since 1.4\n     */\n    public static String encodeBytes( byte[] source ) {\n        // Since we're not going to have the GZIP encoding turned on,\n        // we're not going to have an java.io.IOException thrown, so\n        // we should not force the user to have to catch it.\n        String encoded = null;\n        try {\n            encoded = encodeBytes(source, 0, source.length, NO_OPTIONS);\n        } catch (java.io.IOException ex) {\n            assert false : ex.getMessage();\n        }   // end catch\n        assert encoded != null;\n        return encoded;\n    }   // end encodeBytes\n    \n\n\n    /**\n     * Encodes a byte array into Base64 notation.\n     * <p>\n     * Example options:<pre>\n     *   GZIP: gzip-compresses object before encoding it.\n     *   DO_BREAK_LINES: break lines at 76 characters\n     *     <i>Note: Technically, this makes your encoding non-compliant.</i>\n     * </pre>\n     * <p>\n     * Example: <code>encodeBytes( myData, Base64.GZIP )</code> or\n     * <p>\n     * Example: <code>encodeBytes( myData, Base64.GZIP | Base64.DO_BREAK_LINES )</code>\n     *\n     *  \n     * <p>As of v 2.3, if there is an error with the GZIP stream,\n     * the method will throw an java.io.IOException. <b>This is new to v2.3!</b>\n     * In earlier versions, it just returned a null value, but\n     * in retrospect that's a pretty poor way to handle it.</p>\n     * \n     *\n     * @param source The data to convert\n     * @param options Specified options\n     * @return The Base64-encoded data as a String\n     * @see Base64#GZIP\n     * @see Base64#DO_BREAK_LINES\n     * @throws java.io.IOException if there is an error\n     * @throws NullPointerException if source array is null\n     * @since 2.0\n     */\n    public static String encodeBytes( byte[] source, int options ) throws java.io.IOException {\n        return encodeBytes( source, 0, source.length, options );\n    }   // end encodeBytes\n    \n    \n    /**\n     * Encodes a byte array into Base64 notation.\n     * Does not GZip-compress data.\n     *  \n     * <p>As of v 2.3, if there is an error,\n     * the method will throw an java.io.IOException. <b>This is new to v2.3!</b>\n     * In earlier versions, it just returned a null value, but\n     * in retrospect that's a pretty poor way to handle it.</p>\n     * \n     *\n     * @param source The data to convert\n     * @param off Offset in array where conversion should begin\n     * @param len Length of data to convert\n     * @return The Base64-encoded data as a String\n     * @throws NullPointerException if source array is null\n     * @throws IllegalArgumentException if source array, offset, or length are invalid\n     * @since 1.4\n     */\n    public static String encodeBytes( byte[] source, int off, int len ) {\n        // Since we're not going to have the GZIP encoding turned on,\n        // we're not going to have an java.io.IOException thrown, so\n        // we should not force the user to have to catch it.\n        String encoded = null;\n        try {\n            encoded = encodeBytes( source, off, len, NO_OPTIONS );\n        } catch (java.io.IOException ex) {\n            assert false : ex.getMessage();\n        }   // end catch\n        assert encoded != null;\n        return encoded;\n    }   // end encodeBytes\n    \n    \n\n    /**\n     * Encodes a byte array into Base64 notation.\n     * <p>\n     * Example options:<pre>\n     *   GZIP: gzip-compresses object before encoding it.\n     *   DO_BREAK_LINES: break lines at 76 characters\n     *     <i>Note: Technically, this makes your encoding non-compliant.</i>\n     * </pre>\n     * <p>\n     * Example: <code>encodeBytes( myData, Base64.GZIP )</code> or\n     * <p>\n     * Example: <code>encodeBytes( myData, Base64.GZIP | Base64.DO_BREAK_LINES )</code>\n     *\n     *  \n     * <p>As of v 2.3, if there is an error with the GZIP stream,\n     * the method will throw an java.io.IOException. <b>This is new to v2.3!</b>\n     * In earlier versions, it just returned a null value, but\n     * in retrospect that's a pretty poor way to handle it.</p>\n     * \n     *\n     * @param source The data to convert\n     * @param off Offset in array where conversion should begin\n     * @param len Length of data to convert\n     * @param options Specified options\n     * @return The Base64-encoded data as a String\n     * @see Base64#GZIP\n     * @see Base64#DO_BREAK_LINES\n     * @throws java.io.IOException if there is an error\n     * @throws NullPointerException if source array is null\n     * @throws IllegalArgumentException if source array, offset, or length are invalid\n     * @since 2.0\n     */\n    public static String encodeBytes( byte[] source, int off, int len, int options ) throws java.io.IOException {\n        byte[] encoded = encodeBytesToBytes( source, off, len, options );\n\n        // Return value according to relevant encoding.\n        try {\n            return new String( encoded, PREFERRED_ENCODING );\n        }   // end try\n        catch (java.io.UnsupportedEncodingException uue) {\n            return new String( encoded );\n        }   // end catch\n        \n    }   // end encodeBytes\n\n\n\n\n    /**\n     * Similar to {@link #encodeBytes(byte[])} but returns\n     * a byte array instead of instantiating a String. This is more efficient\n     * if you're working with I/O streams and have large data sets to encode.\n     *\n     *\n     * @param source The data to convert\n     * @return The Base64-encoded data as a byte[] (of ASCII characters)\n     * @throws NullPointerException if source array is null\n     * @since 2.3.1\n     */\n    public static byte[] encodeBytesToBytes( byte[] source ) {\n        byte[] encoded = null;\n        try {\n            encoded = encodeBytesToBytes( source, 0, source.length, Base64.NO_OPTIONS );\n        } catch( java.io.IOException ex ) {\n            assert false : \"IOExceptions only come from GZipping, which is turned off: \" + ex.getMessage();\n        }\n        return encoded;\n    }\n\n\n    /**\n     * Similar to {@link #encodeBytes(byte[], int, int, int)} but returns\n     * a byte array instead of instantiating a String. This is more efficient\n     * if you're working with I/O streams and have large data sets to encode.\n     *\n     *\n     * @param source The data to convert\n     * @param off Offset in array where conversion should begin\n     * @param len Length of data to convert\n     * @param options Specified options\n     * @return The Base64-encoded data as a String\n     * @see Base64#GZIP\n     * @see Base64#DO_BREAK_LINES\n     * @throws java.io.IOException if there is an error\n     * @throws NullPointerException if source array is null\n     * @throws IllegalArgumentException if source array, offset, or length are invalid\n     * @since 2.3.1\n     */\n    public static byte[] encodeBytesToBytes( byte[] source, int off, int len, int options ) throws java.io.IOException {\n\n        if( source == null ){\n            throw new NullPointerException( \"Cannot serialize a null array.\" );\n        }   // end if: null\n\n        if( off < 0 ){\n            throw new IllegalArgumentException( \"Cannot have negative offset: \" + off );\n        }   // end if: off < 0\n\n        if( len < 0 ){\n            throw new IllegalArgumentException( \"Cannot have length offset: \" + len );\n        }   // end if: len < 0\n\n        if( off + len > source.length  ){\n            throw new IllegalArgumentException(\n            String.format( \"Cannot have offset of %d and length of %d with array of length %d\", off,len,source.length));\n        }   // end if: off < 0\n\n\n\n        // Compress?\n        if( (options & GZIP) != 0 ) {\n            java.io.ByteArrayOutputStream  baos  = null;\n            java.util.zip.GZIPOutputStream gzos  = null;\n            Base64.OutputStream            b64os = null;\n\n            try {\n                // GZip -> Base64 -> ByteArray\n                baos = new java.io.ByteArrayOutputStream();\n                b64os = new Base64.OutputStream( baos, ENCODE | options );\n                gzos  = new java.util.zip.GZIPOutputStream( b64os );\n\n                gzos.write( source, off, len );\n                gzos.close();\n            }   // end try\n            catch( java.io.IOException e ) {\n                // Catch it and then throw it immediately so that\n                // the finally{} block is called for cleanup.\n                throw e;\n            }   // end catch\n            finally {\n                try{ gzos.close();  } catch( Exception e ){}\n                try{ b64os.close(); } catch( Exception e ){}\n                try{ baos.close();  } catch( Exception e ){}\n            }   // end finally\n\n            return baos.toByteArray();\n        }   // end if: compress\n\n        // Else, don't compress. Better not to use streams at all then.\n        else {\n            boolean breakLines = (options & DO_BREAK_LINES) != 0;\n\n            //int    len43   = len * 4 / 3;\n            //byte[] outBuff = new byte[   ( len43 )                      // Main 4:3\n            //                           + ( (len % 3) > 0 ? 4 : 0 )      // Account for padding\n            //                           + (breakLines ? ( len43 / MAX_LINE_LENGTH ) : 0) ]; // New lines\n            // Try to determine more precisely how big the array needs to be.\n            // If we get it right, we don't have to do an array copy, and\n            // we save a bunch of memory.\n            int encLen = ( len / 3 ) * 4 + ( len % 3 > 0 ? 4 : 0 ); // Bytes needed for actual encoding\n            if( breakLines ){\n                encLen += encLen / MAX_LINE_LENGTH; // Plus extra newline characters\n            }\n            byte[] outBuff = new byte[ encLen ];\n\n\n            int d = 0;\n            int e = 0;\n            int len2 = len - 2;\n            int lineLength = 0;\n            for( ; d < len2; d+=3, e+=4 ) {\n                encode3to4( source, d+off, 3, outBuff, e, options );\n\n                lineLength += 4;\n                if( breakLines && lineLength >= MAX_LINE_LENGTH )\n                {\n                    outBuff[e+4] = NEW_LINE;\n                    e++;\n                    lineLength = 0;\n                }   // end if: end of line\n            }   // en dfor: each piece of array\n\n            if( d < len ) {\n                encode3to4( source, d+off, len - d, outBuff, e, options );\n                e += 4;\n            }   // end if: some padding needed\n\n\n            // Only resize array if we didn't guess it right.\n            if( e <= outBuff.length - 1 ){\n                // If breaking lines and the last byte falls right at\n                // the line length (76 bytes per line), there will be\n                // one extra byte, and the array will need to be resized.\n                // Not too bad of an estimate on array size, I'd say.\n                byte[] finalOut = new byte[e];\n                System.arraycopy(outBuff,0, finalOut,0,e);\n                //System.err.println(\"Having to resize array from \" + outBuff.length + \" to \" + e );\n                return finalOut;\n            } else {\n                //System.err.println(\"No need to resize array.\");\n                return outBuff;\n            }\n        \n        }   // end else: don't compress\n\n    }   // end encodeBytesToBytes\n    \n\n    \n    \n    \n/* ********  D E C O D I N G   M E T H O D S  ******** */\n    \n    \n    /**\n     * Decodes four bytes from array <var>source</var>\n     * and writes the resulting bytes (up to three of them)\n     * to <var>destination</var>.\n     * The source and destination arrays can be manipulated\n     * anywhere along their length by specifying \n     * <var>srcOffset</var> and <var>destOffset</var>.\n     * This method does not check to make sure your arrays\n     * are large enough to accomodate <var>srcOffset</var> + 4 for\n     * the <var>source</var> array or <var>destOffset</var> + 3 for\n     * the <var>destination</var> array.\n     * This method returns the actual number of bytes that \n     * were converted from the Base64 encoding.\n\t * <p>This is the lowest level of the decoding methods with\n\t * all possible parameters.</p>\n     * \n     *\n     * @param source the array to convert\n     * @param srcOffset the index where conversion begins\n     * @param destination the array to hold the conversion\n     * @param destOffset the index where output will be put\n\t * @param options alphabet type is pulled from this (standard, url-safe, ordered)\n     * @return the number of decoded bytes converted\n     * @throws NullPointerException if source or destination arrays are null\n     * @throws IllegalArgumentException if srcOffset or destOffset are invalid\n     *         or there is not enough room in the array.\n     * @since 1.3\n     */\n    private static int decode4to3( \n    byte[] source, int srcOffset, \n    byte[] destination, int destOffset, int options ) {\n        \n        // Lots of error checking and exception throwing\n        if( source == null ){\n            throw new NullPointerException( \"Source array was null.\" );\n        }   // end if\n        if( destination == null ){\n            throw new NullPointerException( \"Destination array was null.\" );\n        }   // end if\n        if( srcOffset < 0 || srcOffset + 3 >= source.length ){\n            throw new IllegalArgumentException( String.format(\n            \"Source array with length %d cannot have offset of %d and still process four bytes.\", source.length, srcOffset ) );\n        }   // end if\n        if( destOffset < 0 || destOffset +2 >= destination.length ){\n            throw new IllegalArgumentException( String.format(\n            \"Destination array with length %d cannot have offset of %d and still store three bytes.\", destination.length, destOffset ) );\n        }   // end if\n        \n        \n        byte[] DECODABET = getDecodabet( options ); \n\t\n        // Example: Dk==\n        if( source[ srcOffset + 2] == EQUALS_SIGN ) {\n            // Two ways to do the same thing. Don't know which way I like best.\n          //int outBuff =   ( ( DECODABET[ source[ srcOffset    ] ] << 24 ) >>>  6 )\n          //              | ( ( DECODABET[ source[ srcOffset + 1] ] << 24 ) >>> 12 );\n            int outBuff =   ( ( DECODABET[ source[ srcOffset    ] ] & 0xFF ) << 18 )\n                          | ( ( DECODABET[ source[ srcOffset + 1] ] & 0xFF ) << 12 );\n            \n            destination[ destOffset ] = (byte)( outBuff >>> 16 );\n            return 1;\n        }\n        \n        // Example: DkL=\n        else if( source[ srcOffset + 3 ] == EQUALS_SIGN ) {\n            // Two ways to do the same thing. Don't know which way I like best.\n          //int outBuff =   ( ( DECODABET[ source[ srcOffset     ] ] << 24 ) >>>  6 )\n          //              | ( ( DECODABET[ source[ srcOffset + 1 ] ] << 24 ) >>> 12 )\n          //              | ( ( DECODABET[ source[ srcOffset + 2 ] ] << 24 ) >>> 18 );\n            int outBuff =   ( ( DECODABET[ source[ srcOffset     ] ] & 0xFF ) << 18 )\n                          | ( ( DECODABET[ source[ srcOffset + 1 ] ] & 0xFF ) << 12 )\n                          | ( ( DECODABET[ source[ srcOffset + 2 ] ] & 0xFF ) <<  6 );\n            \n            destination[ destOffset     ] = (byte)( outBuff >>> 16 );\n            destination[ destOffset + 1 ] = (byte)( outBuff >>>  8 );\n            return 2;\n        }\n        \n        // Example: DkLE\n        else {\n            // Two ways to do the same thing. Don't know which way I like best.\n          //int outBuff =   ( ( DECODABET[ source[ srcOffset     ] ] << 24 ) >>>  6 )\n          //              | ( ( DECODABET[ source[ srcOffset + 1 ] ] << 24 ) >>> 12 )\n          //              | ( ( DECODABET[ source[ srcOffset + 2 ] ] << 24 ) >>> 18 )\n          //              | ( ( DECODABET[ source[ srcOffset + 3 ] ] << 24 ) >>> 24 );\n            int outBuff =   ( ( DECODABET[ source[ srcOffset     ] ] & 0xFF ) << 18 )\n                          | ( ( DECODABET[ source[ srcOffset + 1 ] ] & 0xFF ) << 12 )\n                          | ( ( DECODABET[ source[ srcOffset + 2 ] ] & 0xFF ) <<  6)\n                          | ( ( DECODABET[ source[ srcOffset + 3 ] ] & 0xFF )      );\n\n            \n            destination[ destOffset     ] = (byte)( outBuff >> 16 );\n            destination[ destOffset + 1 ] = (byte)( outBuff >>  8 );\n            destination[ destOffset + 2 ] = (byte)( outBuff       );\n\n            return 3;\n        }\n    }   // end decodeToBytes\n    \n\n\n\n\n    /**\n     * Low-level access to decoding ASCII characters in\n     * the form of a byte array. <strong>Ignores GUNZIP option, if\n     * it's set.</strong> This is not generally a recommended method,\n     * although it is used internally as part of the decoding process.\n     * Special case: if len = 0, an empty array is returned. Still,\n     * if you need more speed and reduced memory footprint (and aren't\n     * gzipping), consider this method.\n     *\n     * @param source The Base64 encoded data\n     * @return decoded data\n     * @since 2.3.1\n     */\n    public static byte[] decode( byte[] source )\n    throws java.io.IOException {\n        byte[] decoded = null;\n//        try {\n            decoded = decode( source, 0, source.length, Base64.NO_OPTIONS );\n//        } catch( java.io.IOException ex ) {\n//            assert false : \"IOExceptions only come from GZipping, which is turned off: \" + ex.getMessage();\n//        }\n        return decoded;\n    }\n\n    \n    \n    /**\n     * Low-level access to decoding ASCII characters in\n     * the form of a byte array. <strong>Ignores GUNZIP option, if\n     * it's set.</strong> This is not generally a recommended method,\n     * although it is used internally as part of the decoding process.\n     * Special case: if len = 0, an empty array is returned. Still,\n     * if you need more speed and reduced memory footprint (and aren't\n     * gzipping), consider this method.\n     *\n     * @param source The Base64 encoded data\n     * @param off    The offset of where to begin decoding\n     * @param len    The length of characters to decode\n     * @param options Can specify options such as alphabet type to use\n     * @return decoded data\n     * @throws java.io.IOException If bogus characters exist in source data\n     * @since 1.3\n     */\n    public static byte[] decode( byte[] source, int off, int len, int options )\n    throws java.io.IOException {\n        \n        // Lots of error checking and exception throwing\n        if( source == null ){\n            throw new NullPointerException( \"Cannot decode null source array.\" );\n        }   // end if\n        if( off < 0 || off + len > source.length ){\n            throw new IllegalArgumentException( String.format(\n            \"Source array with length %d cannot have offset of %d and process %d bytes.\", source.length, off, len ) );\n        }   // end if\n        \n        if( len == 0 ){\n            return new byte[0];\n        }else if( len < 4 ){\n            throw new IllegalArgumentException( \n            \"Base64-encoded string must have at least four characters, but length specified was \" + len );\n        }   // end if\n        \n        byte[] DECODABET = getDecodabet( options );\n\t\n        int    len34   = len * 3 / 4;       // Estimate on array size\n        byte[] outBuff = new byte[ len34 ]; // Upper limit on size of output\n        int    outBuffPosn = 0;             // Keep track of where we're writing\n        \n        byte[] b4        = new byte[4];     // Four byte buffer from source, eliminating white space\n        int    b4Posn    = 0;               // Keep track of four byte input buffer\n        int    i         = 0;               // Source array counter\n        byte   sbiDecode = 0;               // Special value from DECODABET\n        \n        for( i = off; i < off+len; i++ ) {  // Loop through source\n            \n            sbiDecode = DECODABET[ source[i]&0xFF ];\n            \n            // White space, Equals sign, or legit Base64 character\n            // Note the values such as -5 and -9 in the\n            // DECODABETs at the top of the file.\n            if( sbiDecode >= WHITE_SPACE_ENC )  {\n                if( sbiDecode >= EQUALS_SIGN_ENC ) {\n                    b4[ b4Posn++ ] = source[i];         // Save non-whitespace\n                    if( b4Posn > 3 ) {                  // Time to decode?\n                        outBuffPosn += decode4to3( b4, 0, outBuff, outBuffPosn, options );\n                        b4Posn = 0;\n                        \n                        // If that was the equals sign, break out of 'for' loop\n                        if( source[i] == EQUALS_SIGN ) {\n                            break;\n                        }   // end if: equals sign\n                    }   // end if: quartet built\n                }   // end if: equals sign or better\n            }   // end if: white space, equals sign or better\n            else {\n                // There's a bad input character in the Base64 stream.\n                throw new java.io.IOException( String.format(\n                \"Bad Base64 input character decimal %d in array position %d\", ((int)source[i])&0xFF, i ) );\n            }   // end else: \n        }   // each input character\n                                   \n        byte[] out = new byte[ outBuffPosn ];\n        System.arraycopy( outBuff, 0, out, 0, outBuffPosn ); \n        return out;\n    }   // end decode\n    \n    \n\t\n\t\n    /**\n     * Decodes data from Base64 notation, automatically\n     * detecting gzip-compressed data and decompressing it.\n     *\n     * @param s the string to decode\n     * @return the decoded data\n     * @throws java.io.IOException If there is a problem\n     * @since 1.4\n     */\n    public static byte[] decode( String s ) throws java.io.IOException {\n        return decode( s, NO_OPTIONS );\n    }\n\n    \n    \n    /**\n     * Decodes data from Base64 notation, automatically\n     * detecting gzip-compressed data and decompressing it.\n     *\n     * @param s the string to decode\n     * @param options encode options such as URL_SAFE\n     * @return the decoded data\n     * @throws java.io.IOException if there is an error\n     * @throws NullPointerException if <tt>s</tt> is null\n     * @since 1.4\n     */\n    public static byte[] decode( String s, int options ) throws java.io.IOException {\n        \n        if( s == null ){\n            throw new NullPointerException( \"Input string was null.\" );\n        }   // end if\n        \n        byte[] bytes;\n        try {\n            bytes = s.getBytes( PREFERRED_ENCODING );\n        }   // end try\n        catch( java.io.UnsupportedEncodingException uee ) {\n            bytes = s.getBytes();\n        }   // end catch\n\t\t//</change>\n        \n        // Decode\n        bytes = decode( bytes, 0, bytes.length, options );\n        \n        // Check to see if it's gzip-compressed\n        // GZIP Magic Two-Byte Number: 0x8b1f (35615)\n        boolean dontGunzip = (options & DONT_GUNZIP) != 0;\n        if( (bytes != null) && (bytes.length >= 4) && (!dontGunzip) ) {\n            \n            int head = ((int)bytes[0] & 0xff) | ((bytes[1] << 8) & 0xff00);\n            if( java.util.zip.GZIPInputStream.GZIP_MAGIC == head )  {\n                java.io.ByteArrayInputStream  bais = null;\n                java.util.zip.GZIPInputStream gzis = null;\n                java.io.ByteArrayOutputStream baos = null;\n                byte[] buffer = new byte[2048];\n                int    length = 0;\n\n                try {\n                    baos = new java.io.ByteArrayOutputStream();\n                    bais = new java.io.ByteArrayInputStream( bytes );\n                    gzis = new java.util.zip.GZIPInputStream( bais );\n\n                    while( ( length = gzis.read( buffer ) ) >= 0 ) {\n                        baos.write(buffer,0,length);\n                    }   // end while: reading input\n\n                    // No error? Get new bytes.\n                    bytes = baos.toByteArray();\n\n                }   // end try\n                catch( java.io.IOException e ) {\n                    e.printStackTrace();\n                    // Just return originally-decoded bytes\n                }   // end catch\n                finally {\n                    try{ baos.close(); } catch( Exception e ){}\n                    try{ gzis.close(); } catch( Exception e ){}\n                    try{ bais.close(); } catch( Exception e ){}\n                }   // end finally\n\n            }   // end if: gzipped\n        }   // end if: bytes.length >= 2\n        \n        return bytes;\n    }   // end decode\n\n\n\n    /**\n     * Attempts to decode Base64 data and deserialize a Java\n     * Object within. Returns <tt>null</tt> if there was an error.\n     *\n     * @param encodedObject The Base64 data to decode\n     * @return The decoded and deserialized object\n     * @throws NullPointerException if encodedObject is null\n     * @throws java.io.IOException if there is a general error\n     * @throws ClassNotFoundException if the decoded object is of a\n     *         class that cannot be found by the JVM\n     * @since 1.5\n     */\n    public static Object decodeToObject( String encodedObject )\n    throws java.io.IOException, java.lang.ClassNotFoundException {\n        return decodeToObject(encodedObject,NO_OPTIONS,null);\n    }\n    \n\n    /**\n     * Attempts to decode Base64 data and deserialize a Java\n     * Object within. Returns <tt>null</tt> if there was an error.\n     * If <tt>loader</tt> is not null, it will be the class loader\n     * used when deserializing.\n     *\n     * @param encodedObject The Base64 data to decode\n     * @param options Various parameters related to decoding\n     * @param loader Optional class loader to use in deserializing classes.\n     * @return The decoded and deserialized object\n     * @throws NullPointerException if encodedObject is null\n     * @throws java.io.IOException if there is a general error\n     * @throws ClassNotFoundException if the decoded object is of a \n     *         class that cannot be found by the JVM\n     * @since 2.3.4\n     */\n    public static Object decodeToObject( \n    String encodedObject, int options, final ClassLoader loader )\n    throws java.io.IOException, java.lang.ClassNotFoundException {\n        \n        // Decode and gunzip if necessary\n        byte[] objBytes = decode( encodedObject, options );\n        \n        java.io.ByteArrayInputStream  bais = null;\n        java.io.ObjectInputStream     ois  = null;\n        Object obj = null;\n        \n        try {\n            bais = new java.io.ByteArrayInputStream( objBytes );\n\n            // If no custom class loader is provided, use Java's builtin OIS.\n            if( loader == null ){\n                ois  = new java.io.ObjectInputStream( bais );\n            }   // end if: no loader provided\n\n            // Else make a customized object input stream that uses\n            // the provided class loader.\n            else {\n                ois = new java.io.ObjectInputStream(bais){\n                    @Override\n                    public Class<?> resolveClass(java.io.ObjectStreamClass streamClass)\n                    throws java.io.IOException, ClassNotFoundException {\n                        Class<?> c = Class.forName(streamClass.getName(), false, loader);\n                        if( c == null ){\n                            return super.resolveClass(streamClass);\n                        } else {\n                            return c;   // Class loader knows of this class.\n                        }   // end else: not null\n                    }   // end resolveClass\n                };  // end ois\n            }   // end else: no custom class loader\n        \n            obj = ois.readObject();\n        }   // end try\n        catch( java.io.IOException e ) {\n            throw e;    // Catch and throw in order to execute finally{}\n        }   // end catch\n        catch( java.lang.ClassNotFoundException e ) {\n            throw e;    // Catch and throw in order to execute finally{}\n        }   // end catch\n        finally {\n            try{ bais.close(); } catch( Exception e ){}\n            try{ ois.close();  } catch( Exception e ){}\n        }   // end finally\n        \n        return obj;\n    }   // end decodeObject\n    \n    \n    \n    /**\n     * Convenience method for encoding data to a file.\n     *\n     * <p>As of v 2.3, if there is a error,\n     * the method will throw an java.io.IOException. <b>This is new to v2.3!</b>\n     * In earlier versions, it just returned false, but\n     * in retrospect that's a pretty poor way to handle it.</p>\n     * \n     * @param dataToEncode byte array of data to encode in base64 form\n     * @param filename Filename for saving encoded data\n     * @throws java.io.IOException if there is an error\n     * @throws NullPointerException if dataToEncode is null\n     * @since 2.1\n     */\n    public static void encodeToFile( byte[] dataToEncode, String filename )\n    throws java.io.IOException {\n        \n        if( dataToEncode == null ){\n            throw new NullPointerException( \"Data to encode was null.\" );\n        }   // end iff\n        \n        Base64.OutputStream bos = null;\n        try {\n            bos = new Base64.OutputStream( \n                  new java.io.FileOutputStream( filename ), Base64.ENCODE );\n            bos.write( dataToEncode );\n        }   // end try\n        catch( java.io.IOException e ) {\n            throw e; // Catch and throw to execute finally{} block\n        }   // end catch: java.io.IOException\n        finally {\n            try{ bos.close(); } catch( Exception e ){}\n        }   // end finally\n        \n    }   // end encodeToFile\n    \n    \n    /**\n     * Convenience method for decoding data to a file.\n     *\n     * <p>As of v 2.3, if there is a error,\n     * the method will throw an java.io.IOException. <b>This is new to v2.3!</b>\n     * In earlier versions, it just returned false, but\n     * in retrospect that's a pretty poor way to handle it.</p>\n     * \n     * @param dataToDecode Base64-encoded data as a string\n     * @param filename Filename for saving decoded data\n     * @throws java.io.IOException if there is an error\n     * @since 2.1\n     */\n    public static void decodeToFile( String dataToDecode, String filename )\n    throws java.io.IOException {\n        \n        Base64.OutputStream bos = null;\n        try{\n            bos = new Base64.OutputStream( \n                      new java.io.FileOutputStream( filename ), Base64.DECODE );\n            bos.write( dataToDecode.getBytes( PREFERRED_ENCODING ) );\n        }   // end try\n        catch( java.io.IOException e ) {\n            throw e; // Catch and throw to execute finally{} block\n        }   // end catch: java.io.IOException\n        finally {\n                try{ bos.close(); } catch( Exception e ){}\n        }   // end finally\n        \n    }   // end decodeToFile\n    \n    \n    \n    \n    /**\n     * Convenience method for reading a base64-encoded\n     * file and decoding it.\n     *\n     * <p>As of v 2.3, if there is a error,\n     * the method will throw an java.io.IOException. <b>This is new to v2.3!</b>\n     * In earlier versions, it just returned false, but\n     * in retrospect that's a pretty poor way to handle it.</p>\n     * \n     * @param filename Filename for reading encoded data\n     * @return decoded byte array\n     * @throws java.io.IOException if there is an error\n     * @since 2.1\n     */\n    public static byte[] decodeFromFile( String filename )\n    throws java.io.IOException {\n        \n        byte[] decodedData = null;\n        Base64.InputStream bis = null;\n        try\n        {\n            // Set up some useful variables\n            java.io.File file = new java.io.File( filename );\n            byte[] buffer = null;\n            int length   = 0;\n            int numBytes = 0;\n            \n            // Check for size of file\n            if( file.length() > Integer.MAX_VALUE )\n            {\n                throw new java.io.IOException( \"File is too big for this convenience method (\" + file.length() + \" bytes).\" );\n            }   // end if: file too big for int index\n            buffer = new byte[ (int)file.length() ];\n            \n            // Open a stream\n            bis = new Base64.InputStream( \n                      new java.io.BufferedInputStream( \n                      new java.io.FileInputStream( file ) ), Base64.DECODE );\n            \n            // Read until done\n            while( ( numBytes = bis.read( buffer, length, 4096 ) ) >= 0 ) {\n                length += numBytes;\n            }   // end while\n            \n            // Save in a variable to return\n            decodedData = new byte[ length ];\n            System.arraycopy( buffer, 0, decodedData, 0, length );\n            \n        }   // end try\n        catch( java.io.IOException e ) {\n            throw e; // Catch and release to execute finally{}\n        }   // end catch: java.io.IOException\n        finally {\n            try{ bis.close(); } catch( Exception e) {}\n        }   // end finally\n        \n        return decodedData;\n    }   // end decodeFromFile\n    \n    \n    \n    /**\n     * Convenience method for reading a binary file\n     * and base64-encoding it.\n     *\n     * <p>As of v 2.3, if there is a error,\n     * the method will throw an java.io.IOException. <b>This is new to v2.3!</b>\n     * In earlier versions, it just returned false, but\n     * in retrospect that's a pretty poor way to handle it.</p>\n     * \n     * @param filename Filename for reading binary data\n     * @return base64-encoded string\n     * @throws java.io.IOException if there is an error\n     * @since 2.1\n     */\n    public static String encodeFromFile( String filename )\n    throws java.io.IOException {\n        \n        String encodedData = null;\n        Base64.InputStream bis = null;\n        try\n        {\n            // Set up some useful variables\n            java.io.File file = new java.io.File( filename );\n            byte[] buffer = new byte[ Math.max((int)(file.length() * 1.4+1),40) ]; // Need max() for math on small files (v2.2.1); Need +1 for a few corner cases (v2.3.5)\n            int length   = 0;\n            int numBytes = 0;\n            \n            // Open a stream\n            bis = new Base64.InputStream( \n                      new java.io.BufferedInputStream( \n                      new java.io.FileInputStream( file ) ), Base64.ENCODE );\n            \n            // Read until done\n            while( ( numBytes = bis.read( buffer, length, 4096 ) ) >= 0 ) {\n                length += numBytes;\n            }   // end while\n            \n            // Save in a variable to return\n            encodedData = new String( buffer, 0, length, Base64.PREFERRED_ENCODING );\n                \n        }   // end try\n        catch( java.io.IOException e ) {\n            throw e; // Catch and release to execute finally{}\n        }   // end catch: java.io.IOException\n        finally {\n            try{ bis.close(); } catch( Exception e) {}\n        }   // end finally\n        \n        return encodedData;\n        }   // end encodeFromFile\n    \n    /**\n     * Reads <tt>infile</tt> and encodes it to <tt>outfile</tt>.\n     *\n     * @param infile Input file\n     * @param outfile Output file\n     * @throws java.io.IOException if there is an error\n     * @since 2.2\n     */\n    public static void encodeFileToFile( String infile, String outfile )\n    throws java.io.IOException {\n        \n        String encoded = Base64.encodeFromFile( infile );\n        java.io.OutputStream out = null;\n        try{\n            out = new java.io.BufferedOutputStream(\n                  new java.io.FileOutputStream( outfile ) );\n            out.write( encoded.getBytes(\"US-ASCII\") ); // Strict, 7-bit output.\n        }   // end try\n        catch( java.io.IOException e ) {\n            throw e; // Catch and release to execute finally{}\n        }   // end catch\n        finally {\n            try { out.close(); }\n            catch( Exception ex ){}\n        }   // end finally    \n    }   // end encodeFileToFile\n\n\n    /**\n     * Reads <tt>infile</tt> and decodes it to <tt>outfile</tt>.\n     *\n     * @param infile Input file\n     * @param outfile Output file\n     * @throws java.io.IOException if there is an error\n     * @since 2.2\n     */\n    public static void decodeFileToFile( String infile, String outfile )\n    throws java.io.IOException {\n        \n        byte[] decoded = Base64.decodeFromFile( infile );\n        java.io.OutputStream out = null;\n        try{\n            out = new java.io.BufferedOutputStream(\n                  new java.io.FileOutputStream( outfile ) );\n            out.write( decoded );\n        }   // end try\n        catch( java.io.IOException e ) {\n            throw e; // Catch and release to execute finally{}\n        }   // end catch\n        finally {\n            try { out.close(); }\n            catch( Exception ex ){}\n        }   // end finally    \n    }   // end decodeFileToFile\n    \n    \n    /* ********  I N N E R   C L A S S   I N P U T S T R E A M  ******** */\n    \n    \n    \n    /**\n     * A {@link Base64.InputStream} will read data from another\n     * <tt>java.io.InputStream</tt>, given in the constructor,\n     * and encode/decode to/from Base64 notation on the fly.\n     *\n     * @see Base64\n     * @since 1.3\n     */\n    public static class InputStream extends java.io.FilterInputStream {\n        \n        private boolean encode;         // Encoding or decoding\n        private int     position;       // Current position in the buffer\n        private byte[]  buffer;         // Small buffer holding converted data\n        private int     bufferLength;   // Length of buffer (3 or 4)\n        private int     numSigBytes;    // Number of meaningful bytes in the buffer\n        private int     lineLength;\n        private boolean breakLines;     // Break lines at less than 80 characters\n        private int     options;        // Record options used to create the stream.\n        private byte[]  decodabet;      // Local copies to avoid extra method calls\n        \n        \n        /**\n         * Constructs a {@link Base64.InputStream} in DECODE mode.\n         *\n         * @param in the <tt>java.io.InputStream</tt> from which to read data.\n         * @since 1.3\n         */\n        public InputStream( java.io.InputStream in ) {\n            this( in, DECODE );\n        }   // end constructor\n        \n        \n        /**\n         * Constructs a {@link Base64.InputStream} in\n         * either ENCODE or DECODE mode.\n         * <p>\n         * Valid options:<pre>\n         *   ENCODE or DECODE: Encode or Decode as data is read.\n         *   DO_BREAK_LINES: break lines at 76 characters\n         *     (only meaningful when encoding)</i>\n         * </pre>\n         * <p>\n         * Example: <code>new Base64.InputStream( in, Base64.DECODE )</code>\n         *\n         *\n         * @param in the <tt>java.io.InputStream</tt> from which to read data.\n         * @param options Specified options\n         * @see Base64#ENCODE\n         * @see Base64#DECODE\n         * @see Base64#DO_BREAK_LINES\n         * @since 2.0\n         */\n        public InputStream( java.io.InputStream in, int options ) {\n            \n            super( in );\n            this.options      = options; // Record for later\n            this.breakLines   = (options & DO_BREAK_LINES) > 0;\n            this.encode       = (options & ENCODE) > 0;\n            this.bufferLength = encode ? 4 : 3;\n            this.buffer       = new byte[ bufferLength ];\n            this.position     = -1;\n            this.lineLength   = 0;\n            this.decodabet    = getDecodabet(options);\n        }   // end constructor\n        \n        /**\n         * Reads enough of the input stream to convert\n         * to/from Base64 and returns the next byte.\n         *\n         * @return next byte\n         * @since 1.3\n         */\n        @Override\n        public int read() throws java.io.IOException  {\n            \n            // Do we need to get data?\n            if( position < 0 ) {\n                if( encode ) {\n                    byte[] b3 = new byte[3];\n                    int numBinaryBytes = 0;\n                    for( int i = 0; i < 3; i++ ) {\n                        int b = in.read();\n\n                        // If end of stream, b is -1.\n                        if( b >= 0 ) {\n                            b3[i] = (byte)b;\n                            numBinaryBytes++;\n                        } else {\n                            break; // out of for loop\n                        }   // end else: end of stream\n                            \n                    }   // end for: each needed input byte\n                    \n                    if( numBinaryBytes > 0 ) {\n                        encode3to4( b3, 0, numBinaryBytes, buffer, 0, options );\n                        position = 0;\n                        numSigBytes = 4;\n                    }   // end if: got data\n                    else {\n                        return -1;  // Must be end of stream\n                    }   // end else\n                }   // end if: encoding\n                \n                // Else decoding\n                else {\n                    byte[] b4 = new byte[4];\n                    int i = 0;\n                    for( i = 0; i < 4; i++ ) {\n                        // Read four \"meaningful\" bytes:\n                        int b = 0;\n                        do{ b = in.read(); }\n                        while( b >= 0 && decodabet[ b & 0x7f ] <= WHITE_SPACE_ENC );\n                        \n                        if( b < 0 ) {\n                            break; // Reads a -1 if end of stream\n                        }   // end if: end of stream\n                        \n                        b4[i] = (byte)b;\n                    }   // end for: each needed input byte\n                    \n                    if( i == 4 ) {\n                        numSigBytes = decode4to3( b4, 0, buffer, 0, options );\n                        position = 0;\n                    }   // end if: got four characters\n                    else if( i == 0 ){\n                        return -1;\n                    }   // end else if: also padded correctly\n                    else {\n                        // Must have broken out from above.\n                        throw new java.io.IOException( \"Improperly padded Base64 input.\" );\n                    }   // end \n                    \n                }   // end else: decode\n            }   // end else: get data\n            \n            // Got data?\n            if( position >= 0 ) {\n                // End of relevant data?\n                if( /*!encode &&*/ position >= numSigBytes ){\n                    return -1;\n                }   // end if: got data\n                \n                if( encode && breakLines && lineLength >= MAX_LINE_LENGTH ) {\n                    lineLength = 0;\n                    return '\\n';\n                }   // end if\n                else {\n                    lineLength++;   // This isn't important when decoding\n                                    // but throwing an extra \"if\" seems\n                                    // just as wasteful.\n                    \n                    int b = buffer[ position++ ];\n\n                    if( position >= bufferLength ) {\n                        position = -1;\n                    }   // end if: end\n\n                    return b & 0xFF; // This is how you \"cast\" a byte that's\n                                     // intended to be unsigned.\n                }   // end else\n            }   // end if: position >= 0\n            \n            // Else error\n            else {\n                throw new java.io.IOException( \"Error in Base64 code reading stream.\" );\n            }   // end else\n        }   // end read\n        \n        \n        /**\n         * Calls {@link #read()} repeatedly until the end of stream\n         * is reached or <var>len</var> bytes are read.\n         * Returns number of bytes read into array or -1 if\n         * end of stream is encountered.\n         *\n         * @param dest array to hold values\n         * @param off offset for array\n         * @param len max number of bytes to read into array\n         * @return bytes read into array or -1 if end of stream is encountered.\n         * @since 1.3\n         */\n        @Override\n        public int read( byte[] dest, int off, int len ) \n        throws java.io.IOException {\n            int i;\n            int b;\n            for( i = 0; i < len; i++ ) {\n                b = read();\n                \n                if( b >= 0 ) {\n                    dest[off + i] = (byte) b;\n                }\n                else if( i == 0 ) {\n                    return -1;\n                }\n                else {\n                    break; // Out of 'for' loop\n                } // Out of 'for' loop\n            }   // end for: each byte read\n            return i;\n        }   // end read\n        \n    }   // end inner class InputStream\n    \n    \n    \n    \n    \n    \n    /* ********  I N N E R   C L A S S   O U T P U T S T R E A M  ******** */\n    \n    \n    \n    /**\n     * A {@link Base64.OutputStream} will write data to another\n     * <tt>java.io.OutputStream</tt>, given in the constructor,\n     * and encode/decode to/from Base64 notation on the fly.\n     *\n     * @see Base64\n     * @since 1.3\n     */\n    public static class OutputStream extends java.io.FilterOutputStream {\n        \n        private boolean encode;\n        private int     position;\n        private byte[]  buffer;\n        private int     bufferLength;\n        private int     lineLength;\n        private boolean breakLines;\n        private byte[]  b4;         // Scratch used in a few places\n        private boolean suspendEncoding;\n        private int     options;    // Record for later\n        private byte[]  decodabet;  // Local copies to avoid extra method calls\n        \n        /**\n         * Constructs a {@link Base64.OutputStream} in ENCODE mode.\n         *\n         * @param out the <tt>java.io.OutputStream</tt> to which data will be written.\n         * @since 1.3\n         */\n        public OutputStream( java.io.OutputStream out ) {\n            this( out, ENCODE );\n        }   // end constructor\n        \n        \n        /**\n         * Constructs a {@link Base64.OutputStream} in\n         * either ENCODE or DECODE mode.\n         * <p>\n         * Valid options:<pre>\n         *   ENCODE or DECODE: Encode or Decode as data is read.\n         *   DO_BREAK_LINES: don't break lines at 76 characters\n         *     (only meaningful when encoding)</i>\n         * </pre>\n         * <p>\n         * Example: <code>new Base64.OutputStream( out, Base64.ENCODE )</code>\n         *\n         * @param out the <tt>java.io.OutputStream</tt> to which data will be written.\n         * @param options Specified options.\n         * @see Base64#ENCODE\n         * @see Base64#DECODE\n         * @see Base64#DO_BREAK_LINES\n         * @since 1.3\n         */\n        public OutputStream( java.io.OutputStream out, int options ) {\n            super( out );\n            this.breakLines   = (options & DO_BREAK_LINES) != 0;\n            this.encode       = (options & ENCODE) != 0;\n            this.bufferLength = encode ? 3 : 4;\n            this.buffer       = new byte[ bufferLength ];\n            this.position     = 0;\n            this.lineLength   = 0;\n            this.suspendEncoding = false;\n            this.b4           = new byte[4];\n            this.options      = options;\n            this.decodabet    = getDecodabet(options);\n        }   // end constructor\n        \n        \n        /**\n         * Writes the byte to the output stream after\n         * converting to/from Base64 notation.\n         * When encoding, bytes are buffered three\n         * at a time before the output stream actually\n         * gets a write() call.\n         * When decoding, bytes are buffered four\n         * at a time.\n         *\n         * @param theByte the byte to write\n         * @since 1.3\n         */\n        @Override\n        public void write(int theByte) \n        throws java.io.IOException {\n            // Encoding suspended?\n            if( suspendEncoding ) {\n                this.out.write( theByte );\n                return;\n            }   // end if: supsended\n            \n            // Encode?\n            if( encode ) {\n                buffer[ position++ ] = (byte)theByte;\n                if( position >= bufferLength ) { // Enough to encode.\n                \n                    this.out.write( encode3to4( b4, buffer, bufferLength, options ) );\n\n                    lineLength += 4;\n                    if( breakLines && lineLength >= MAX_LINE_LENGTH ) {\n                        this.out.write( NEW_LINE );\n                        lineLength = 0;\n                    }   // end if: end of line\n\n                    position = 0;\n                }   // end if: enough to output\n            }   // end if: encoding\n\n            // Else, Decoding\n            else {\n                // Meaningful Base64 character?\n                if( decodabet[ theByte & 0x7f ] > WHITE_SPACE_ENC ) {\n                    buffer[ position++ ] = (byte)theByte;\n                    if( position >= bufferLength ) { // Enough to output.\n                    \n                        int len = Base64.decode4to3( buffer, 0, b4, 0, options );\n                        out.write( b4, 0, len );\n                        position = 0;\n                    }   // end if: enough to output\n                }   // end if: meaningful base64 character\n                else if( decodabet[ theByte & 0x7f ] != WHITE_SPACE_ENC ) {\n                    throw new java.io.IOException( \"Invalid character in Base64 data.\" );\n                }   // end else: not white space either\n            }   // end else: decoding\n        }   // end write\n        \n        \n        \n        /**\n         * Calls {@link #write(int)} repeatedly until <var>len</var> \n         * bytes are written.\n         *\n         * @param theBytes array from which to read bytes\n         * @param off offset for array\n         * @param len max number of bytes to read into array\n         * @since 1.3\n         */\n        @Override\n        public void write( byte[] theBytes, int off, int len ) \n        throws java.io.IOException {\n            // Encoding suspended?\n            if( suspendEncoding ) {\n                this.out.write( theBytes, off, len );\n                return;\n            }   // end if: supsended\n            \n            for( int i = 0; i < len; i++ ) {\n                write( theBytes[ off + i ] );\n            }   // end for: each byte written\n            \n        }   // end write\n        \n        \n        \n        /**\n         * Method added by PHIL. [Thanks, PHIL. -Rob]\n         * This pads the buffer without closing the stream.\n         * @throws java.io.IOException  if there's an error.\n         */\n        public void flushBase64() throws java.io.IOException  {\n            if( position > 0 ) {\n                if( encode ) {\n                    out.write( encode3to4( b4, buffer, position, options ) );\n                    position = 0;\n                }   // end if: encoding\n                else {\n                    throw new java.io.IOException( \"Base64 input not properly padded.\" );\n                }   // end else: decoding\n            }   // end if: buffer partially full\n\n        }   // end flush\n\n        \n        /** \n         * Flushes and closes (I think, in the superclass) the stream. \n         *\n         * @since 1.3\n         */\n        @Override\n        public void close() throws java.io.IOException {\n            // 1. Ensure that pending characters are written\n            flushBase64();\n\n            // 2. Actually close the stream\n            // Base class both flushes and closes.\n            super.close();\n            \n            buffer = null;\n            out    = null;\n        }   // end close\n        \n        \n        \n        /**\n         * Suspends encoding of the stream.\n         * May be helpful if you need to embed a piece of\n         * base64-encoded data in a stream.\n         *\n         * @throws java.io.IOException  if there's an error flushing\n         * @since 1.5.1\n         */\n        public void suspendEncoding() throws java.io.IOException  {\n            flushBase64();\n            this.suspendEncoding = true;\n        }   // end suspendEncoding\n        \n        \n        /**\n         * Resumes encoding of the stream.\n         * May be helpful if you need to embed a piece of\n         * base64-encoded data in a stream.\n         *\n         * @since 1.5.1\n         */\n        public void resumeEncoding() {\n            this.suspendEncoding = false;\n        }   // end resumeEncoding\n        \n        \n        \n    }   // end inner class OutputStream\n    \n    \n}   // end class Base64\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/Clipboard_get.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2016/11/24\n * - initial version\n */\n\npackage stanford.spl;\n\nimport acm.util.TokenScanner;\nimport stanford.cs106.gui.ClipboardUtils;\n\npublic class Clipboard_get extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tString text = ClipboardUtils.get();\n\t\tSplPipeDecoder.writeResult(text);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/Clipboard_set.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2016/11/24\n * - initial version\n */\n\npackage stanford.spl;\n\nimport acm.util.TokenScanner;\nimport stanford.cs106.gui.ClipboardUtils;\n\npublic class Clipboard_set extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString text = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tif (text != null) {\n\t\t\tClipboardUtils.copy(text);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/DiffImage_compareImages.java",
    "content": "/*\n * Given three image file names, diffs the first two and writes the diff pixel output\n * into the third. \n * @version 2016/07/30\n * - initial version\n */\n\npackage stanford.spl;\n\nimport acm.util.*;\nimport java.io.IOException;\nimport stanford.cs106.diff.DiffImage;\nimport stanford.cs106.io.IORuntimeException;\n\npublic class DiffImage_compareImages extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString filename1 = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString filename2 = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString outfile = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\ttry {\n\t\t\tDiffImage diff = new DiffImage(filename1, filename2, /* display */ false);\n\t\t\tdiff.save(outfile);\n\t\t} catch (IOException ioe) {\n\t\t\tSplPipeDecoder.writeError(ioe);\n\t\t} catch (IORuntimeException iore) {\n\t\t\tSplPipeDecoder.writeError(iore);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/DiffImage_compareWindowToImage.java",
    "content": "/*\n * Given a graphical window and an image file name, pops up a DiffImage window to compare the\n * window (actual output) to the image (expected output) for differences.\n * @author Marty Stepp\n * @version 2017/04/25\n * - moved guts of diffing logic to GCanvas, where it arguably should have always been\n * @version 2016/10/16\n * - added ignoreWindowSize option\n * @version 2016/07/30\n * - added descriptive text labels to the two sides of the diff\n * @version 2016/07/06\n * - initial version\n */\n\npackage stanford.spl;\n\nimport acm.util.*;\nimport stanford.cs106.io.IORuntimeException;\n\npublic class DiffImage_compareWindowToImage extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString windowID = nextString(paramTokenScanner);\n\t\tJBEWindowInterface window = paramJavaBackEnd.getWindowInterface(windowID);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString filename = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tboolean ignoreWindowSize = nextBoolean(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tif (window != null) {\n\t\t\t// convert the window canvas contents into an Image\n\t\t\tJBECanvas canvas = window.getCanvas();\n\t\t\ttry {\n\t\t\t\tcanvas.diff(filename, ignoreWindowSize);\n\t\t\t\t\n\t\t\t\t// useless \"ok\" result for C++ lib to throw away, to make dialog modal\n\t\t\t\tSplPipeDecoder.writeOK();\n\t\t\t} catch (IORuntimeException ioe) {\n\t\t\t\tSplPipeDecoder.writeError(ioe.getMessage());\n\t\t\t}\n\t\t}\n\t\t\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/DiffImage_show.java",
    "content": "/*\n * Given two file names, pops up a DiffImage window to compare them for differences.\n * @version 2016/07/30\n * - added descriptive text labels to the two images\n * @version 2016/07/06\n * - initial version\n */\n\npackage stanford.spl;\n\nimport acm.util.*;\nimport stanford.cs106.diff.DiffImage;\nimport stanford.cs106.io.IORuntimeException;\n\nimport java.awt.*;\nimport java.io.*;\n\npublic class DiffImage_show extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString filename1 = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString filename2 = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tImage image1 = MediaTools.loadImage(filename1);\n\t\tImage image2 = MediaTools.loadImage(filename2);\n\t\tFile file1 = new File(filename1);\n\t\tFile file2 = new File(filename2);\n\t\ttry {\n\t\t\tDiffImage diff = new DiffImage(image1, image2);\n\t\t\tdiff.setImage1Label(file1.getName());\n\t\t\tdiff.setImage2Label(file2.getName());\n\t\t\tdiff.setVisible(true);\n\t\t\t\n\t\t\t// useless \"ok\" result for C++ lib to throw away, to make dialog modal\n\t\t\tSplPipeDecoder.writeResult(\"ok\");\n\t\t} catch (IORuntimeException ioe) {\n\t\t\tSplPipeDecoder.writeError(ioe);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/File_getTempDirectory.java",
    "content": "package stanford.spl;\n\nimport acm.util.*;\n\n/**\n * \n * @author Marty Stepp\n * @version 2014/08/05\n */\npublic class File_getTempDirectory extends JBECommand {\n\t// gbufferedimage = new GBufferedImage(x, y, width, height);\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tString tempDir = System.getProperty(\"java.io.tmpdir\");\n\t\tSplPipeDecoder.encodeAndWrite(tempDir);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/File_openFileDialog.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class File_openFileDialog extends JBECommand {\n\tpublic void execute(TokenScanner paramTokenScanner,\n\t\t\tJavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString title = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString mode = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString path = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tString result = paramJavaBackEnd.openFileDialog(title, mode, path);\n\t\tSplPipeDecoder.writeResult(result);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GBufferedImage.java",
    "content": "package stanford.spl;\n\nimport java.awt.*;\nimport java.awt.image.*;\nimport java.io.*;\nimport javax.imageio.*;\nimport javax.swing.*;\nimport acm.graphics.*;\nimport stanford.cs106.io.IORuntimeException;\n\n/**\n * \n * @author Marty Stepp\n * @version 2017/10/14\n * - small change to use GraphicsUtils for antialiasing\n * @version 2017/09/28\n * - bug fixes in error handling in load/save\n * @version 2015/10/08\n * - bug fixes in to/fromGrid support\n * @version 2015/08/12\n * - added to/fromGrid support, much faster per-pixel operations\n */\npublic class GBufferedImage extends GInteractor {\n\tprivate static final long serialVersionUID = 1L;\n\t\n\tprivate BufferedImage bufferedImage;\n\tprivate int imageWidth;\n\tprivate int imageHeight;\n\tprivate int backgroundColor;\n\tprivate JLabel label;\n\t\n\tpublic GBufferedImage(int width, int height) {\n\t\tthis(width, height, 0);   // black\n\t}\n\t\n\tpublic GBufferedImage(int width, int height, int backgroundColor) {\n\t\tsuper(new JLabel(\"HOORAY\"));\n\t\tthis.imageWidth = width;\n\t\tthis.imageHeight = height;\n\t\tthis.backgroundColor = backgroundColor;\n\t\tbufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);\n\t\tGraphicsUtils.setAntialiasingDefault(bufferedImage);\n\t\t\n\t\tlabel = (JLabel) this.getInteractor();\n\t\tif (backgroundColor != 0) {\n\t\t\tfill(backgroundColor);\n\t\t}\n\t\trepaintImage();\n\t}\n\t\n\tpublic void clear() {\n\t\tfill(backgroundColor);\n\t}\n\t\n\tpublic void fill(int rgb) {\n\t\tfor (int y = 0; y < imageHeight; y++) {\n\t\t\tfor (int x = 0; x < imageWidth; x++) {\n\t\t\t\tbufferedImage.setRGB(x, y, rgb);\n\t\t\t}\n\t\t}\n\t\trepaintImage();\n\t}\n\t\n\tpublic void fillRegion(int x, int y, int width, int height, int rgb) {\n\t\tfor (int yy = y; yy < y + height; yy++) {\n\t\t\tfor (int xx = x; xx < x + width; xx++) {\n\t\t\t\tbufferedImage.setRGB(xx, yy, rgb);\n\t\t\t}\n\t\t}\n\t\trepaintImage();\n\t}\n\t\n\tpublic BufferedImage getBufferedImage() {\n\t\treturn bufferedImage;\n\t}\n\t\n\tpublic Graphics getGraphics() {\n\t\treturn bufferedImage.getGraphics();\n\t}\n\t\n\tpublic int getImageHeight() {\n\t\treturn imageHeight;\n\t}\n\t\n\tpublic int getImageWidth() {\n\t\treturn imageWidth;\n\t}\n\t\n\tpublic void load(String filename) {\n\t\tBufferedImage bufferedImage = null;\n\t\tFile file = new File(filename);\n\t\ttry {\n\t\t\tbufferedImage = ImageIO.read(file);\n\t\t} catch (IOException ioe) {\n\t\t\tthrow new IORuntimeException(\"unable to load image from \" + file.getName(), ioe);\n\t\t}\n\t\tif (bufferedImage == null) {\n\t\t\tthrow new IORuntimeException(\"unable to load image from \" + file.getName());\n\t\t}\n\n\t\tthis.bufferedImage = bufferedImage;\n\t\timageWidth = bufferedImage.getWidth();\n\t\timageHeight = bufferedImage.getHeight();\n\t\trepaintImage();\n\t}\n\t\n\tpublic void resize(int w, int h, boolean retain) {\n\t\tif (retain && w == imageWidth && h == imageHeight) {\n\t\t\t// no-op\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tBufferedImage oldImage = bufferedImage;\n\t\tbufferedImage = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);\n\t\timageWidth = w;\n\t\timageHeight = h;\n\t\tfill(backgroundColor);\n\t\tif (retain) {\n\t\t\tGraphics g = bufferedImage.getGraphics();\n\t\t\tg.drawImage(oldImage, 0, 0, label);\n\t\t}\n\t\trepaintImage();\n\t}\n\t\n\tpublic void save(String filename) {\n\t\tString extension = \"png\";\n\t\tint dot = filename.lastIndexOf('.');\n\t\tif (dot >= 0) {\n\t\t\textension = filename.substring(dot + 1).toLowerCase();\n\t\t}\n\t\tFile file = new File(filename);\n\t\ttry {\n\t\t\tImageIO.write(bufferedImage, extension, file);\n\t\t} catch (IOException ioe) {\n\t\t\tthrow new IORuntimeException(\"unable to save image to \" + file.getName(), ioe);\n\t\t}\n\t}\n\t\n\tpublic void setRGB(int x, int y, int rgb) {\n\t\tbufferedImage.setRGB(x, y, rgb);\n\t\trepaintImage();\n\t}\n\t\n\tpublic String toStringBase64() {\n\t\treturn toStringBase64(bufferedImage, imageWidth, imageHeight);\n\t}\n\t\n\tpublic static String toStringBase64(BufferedImage bufferedImage) {\n\t\treturn toStringBase64(bufferedImage, bufferedImage.getWidth(), bufferedImage.getHeight());\n\t}\n\t\n\tpublic static String toStringBase64(BufferedImage bufferedImage, int imageWidth, int imageHeight) {\n\t\tByteArrayOutputStream out = new ByteArrayOutputStream(imageWidth * imageHeight * 3 + 512);\n\t\t\n\t\t// width and height each as 2-byte integers (0-65535)\n\t\tout.write(((imageWidth & 0x0000ff00) >> 8) & 0x000000ff);\n\t\tout.write(imageWidth & 0x000000ff);\n\t\tout.write(((imageHeight & 0x0000ff00) >> 8) & 0x000000ff);\n\t\tout.write(imageHeight & 0x000000ff);\n\t\t\n\t\t// each byte of image as a 3-byte integer (rgb)\n\t\tfor (int y = 0; y < imageHeight; y++) {\n\t\t\tfor (int x = 0; x < imageWidth; x++) {\n\t\t\t\tint px = bufferedImage.getRGB(x, y);\n\t\t\t\tint red = ((px & 0x00ff0000) >> 16) & 0x000000ff;\n\t\t\t\tint green = ((px & 0x0000ff00) >> 8) & 0x000000ff;\n\t\t\t\tint blue = px & 0x000000ff;\n\t\t\t\tout.write(red);\n\t\t\t\tout.write(green);\n\t\t\t\tout.write(blue);\n\t\t\t}\n\t\t}\n\t\tbyte[] bytes = out.toByteArray();\n\t\tString base64raw = Base64.encodeBytes(bytes);\n\t\tString base64 = base64raw.replace(\"\\r\", \"\");\n\t\tbase64 = base64raw.replace(\"\\n\", \"\");\n\t\treturn base64;\n\t}\n\t\n\tpublic void fromStringBase64(String base64) throws IOException {\n\t\tbyte[] bytes = Base64.decode(base64);\n\t\tint w = (((bytes[0] & 0x000000ff) << 8) & 0x0000ff00) | (bytes[1] & 0x000000ff);\n\t\tint h = (((bytes[2] & 0x000000ff) << 8) & 0x0000ff00) | (bytes[3] & 0x000000ff);\n\t\tif (w != imageWidth || h != imageHeight) {\n\t\t\tthis.resize(w, h, /* retain */ false);\n\t\t}\n\t\t\n\t\tint[] pixelArray = new int[imageWidth * imageHeight];\n\t\tint byteIndex = 4;\n\t\tint index = 0;\n\t\tfor (int y = 0; y < imageHeight; y++) {\n\t\t\tfor (int x = 0; x < imageWidth; x++) {\n\t\t\t\t// OOB shouldn't happen, but let's just make sure not to walk past end of array\n\t\t\t\tif (byteIndex + 2 < bytes.length && index < pixelArray.length) {\n\t\t\t\t\tint rgb =\n\t\t\t\t\t\t\t0xff000000   // alpha\n\t\t\t\t\t\t\t| (((bytes[byteIndex] & 0x000000ff) << 16) & 0x00ff0000)\n\t\t\t\t\t\t\t| (((bytes[byteIndex + 1] & 0x000000ff) << 8) & 0x0000ff00)\n\t\t\t\t\t\t\t| ((bytes[byteIndex + 2]) & 0x000000ff);\n\t\t\t\t\tpixelArray[index] = rgb;\n\t\t\t\t\tindex++;\n\t\t\t\t\tbyteIndex += 3;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tbufferedImage.setRGB(0, 0, imageWidth, imageHeight, pixelArray, 0, imageWidth);\n\t\tbufferedImage.flush();\n\t\trepaintImage();\n\t}\n\t\n\tpublic static void fromStringBase64(String base64, BufferedImage bufferedImage) {\n\t\tbyte[] bytes = null;\n\t\ttry {\n\t\t\tbytes = Base64.decode(base64);\n\t\t} catch (IOException ioe) {\n\t\t\tthrow new IORuntimeException(ioe);\n\t\t}\n\t\tint w = (((bytes[0] & 0x000000ff) << 8) & 0x0000ff00) | (bytes[1] & 0x000000ff);\n\t\tint h = (((bytes[2] & 0x000000ff) << 8) & 0x0000ff00) | (bytes[3] & 0x000000ff);\n\t\tint imageWidth = bufferedImage.getWidth();\n\t\tint imageHeight = bufferedImage.getHeight();\n\t\tif (w != imageWidth || h != imageHeight) {\n\t\t\t// TODO?\n\t\t}\n\t\t\n\t\tint[] pixelArray = new int[imageWidth * imageHeight];\n\t\tint byteIndex = 4;\n\t\tint index = 0;\n\t\tfor (int y = 0; y < imageHeight; y++) {\n\t\t\tfor (int x = 0; x < imageWidth; x++) {\n\t\t\t\t// OOB shouldn't happen, but let's just make sure not to walk past end of array\n\t\t\t\tif (byteIndex + 2 < bytes.length && index < pixelArray.length) {\n\t\t\t\t\tint rgb =\n\t\t\t\t\t\t\t0xff000000   // alpha\n\t\t\t\t\t\t\t| (((bytes[byteIndex] & 0x000000ff) << 16) & 0x00ff0000)\n\t\t\t\t\t\t\t| (((bytes[byteIndex + 1] & 0x000000ff) << 8) & 0x0000ff00)\n\t\t\t\t\t\t\t| ((bytes[byteIndex + 2]) & 0x000000ff);\n\t\t\t\t\tpixelArray[index] = rgb;\n\t\t\t\t\tindex++;\n\t\t\t\t\tbyteIndex += 3;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tbufferedImage.setRGB(0, 0, imageWidth, imageHeight, pixelArray, 0, imageWidth);\n\t\tbufferedImage.flush();\n\t}\n\t\n\t// JL: SwingUtilities.invokeLater\n\tprivate void repaintImage() {\n\t\tDimension oldSize = label.getPreferredSize();\n\t\tlabel.setIcon(new ImageIcon(bufferedImage));\n\t\tDimension size = new Dimension(imageWidth, imageHeight);\n\t\tif (!size.equals(oldSize)) {\n\t\t\tlabel.setPreferredSize(size);\n\t\t\tlabel.setSize(size);\n\t\t}\n\t\t// label.repaint();\n\t\t// label.paintImmediately(0, 0, imageWidth, imageHeight);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GBufferedImage_create.java",
    "content": "package stanford.spl;\n\nimport acm.util.*;\n\n/**\n * \n * @author Marty Stepp\n * @version 2014/08/05\n */\npublic class GBufferedImage_create extends JBESwingCommand {\n\t// gbufferedimage = new GBufferedImage(x, y, width, height);\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString id = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint x = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint y = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint w = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint h = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint rgb = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tGBufferedImage img = new GBufferedImage(w, h, rgb);\n\t\timg.setLocation(x, y);\n\t\tparamJavaBackEnd.defineGObject(id, img);\n\t\tparamJavaBackEnd.defineSource(img.getInteractor(), id);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GBufferedImage_fill.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.*;\nimport acm.util.*;\n\n/**\n * \n * @author Marty Stepp\n * @version 2014/08/05\n */\npublic class GBufferedImage_fill extends JBESwingCommand {\n\t// gbufferedimage.setRGB(x, y, rgb);\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString id = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint rgb = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tGObject gobj = paramJavaBackEnd.getGObject(id);\n\t\tif (gobj != null && gobj instanceof GBufferedImage) {\n\t\t\tGBufferedImage img = (GBufferedImage) gobj;\n\t\t\timg.fill(rgb);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GBufferedImage_fillRegion.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.*;\nimport acm.util.*;\n\n/**\n * \n * @author Marty Stepp\n * @version 2014/08/05\n */\npublic class GBufferedImage_fillRegion extends JBESwingCommand {\n\t// gbufferedimage.setRGB(x, y, rgb);\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString id = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint x = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint y = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint w = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint h = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint rgb = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tGObject gobj = paramJavaBackEnd.getGObject(id);\n\t\tif (gobj != null && gobj instanceof GBufferedImage) {\n\t\t\tGBufferedImage img = (GBufferedImage) gobj;\n\t\t\timg.fillRegion(x, y, w, h, rgb);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GBufferedImage_load.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.*;\nimport acm.util.*;\n\n/**\n * \n * @author Marty Stepp\n * @version 2017/09/27\n * - bug fix for loading from bogus files (e.g. *.o); was causing NullPointerException\n */\npublic class GBufferedImage_load extends JBESwingCommand {\n\t// gbufferedimage.load(\"foobar.png\");\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString id = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString filename = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tGObject gobj = paramJavaBackEnd.getGObject(id);\n\t\tif (gobj != null && gobj instanceof GBufferedImage) {\n\t\t\tGBufferedImage img = (GBufferedImage) gobj;\n\t\t\ttry {\n\t\t\t\timg.load(filename);\n\t\t\t\tString b64 = img.toStringBase64();\n\t\t\t\tSplPipeDecoder.writeResult(b64);   // this is a LONG string\n\t\t\t} catch (Exception ex) {\n\t\t\t\tSplPipeDecoder.writeError(ex);\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GBufferedImage_resize.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.*;\nimport acm.util.*;\n\n/**\n * \n * @author Marty Stepp\n * @version 2014/10/08\n */\npublic class GBufferedImage_resize extends JBESwingCommand {\n\t// gbufferedimage.setRGB(x, y, rgb);\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString id = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint w = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint h = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString retain = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tGObject gobj = paramJavaBackEnd.getGObject(id);\n\t\tif (gobj != null && gobj instanceof GBufferedImage) {\n\t\t\tGBufferedImage img = (GBufferedImage) gobj;\n\t\t\timg.resize(w, h, retain.equals(\"true\"));\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GBufferedImage_save.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.*;\nimport acm.util.*;\n\n/**\n * \n * @author Marty Stepp\n * @version 2015/10/08\n */\npublic class GBufferedImage_save extends JBESwingCommand {\n\t// gbufferedimage.save(\"foobar.png\");\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString id = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString filename = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tGObject gobj = paramJavaBackEnd.getGObject(id);\n\t\tif (gobj != null && gobj instanceof GBufferedImage) {\n\t\t\tGBufferedImage img = (GBufferedImage) gobj;\n\t\t\ttry {\n\t\t\t\timg.save(filename);\n\t\t\t\tSplPipeDecoder.writeResult(\"ok\");\n\t\t\t} catch (Exception ex) {\n\t\t\t\tSplPipeDecoder.writeError(ex);\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GBufferedImage_setRGB.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.*;\nimport acm.util.*;\n\n/**\n * \n * @author Marty Stepp\n * @version 2014/08/05\n */\npublic class GBufferedImage_setRGB extends JBESwingCommand {\n\t// gbufferedimage.setRGB(x, y, rgb);\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString id = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint x = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint y = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint rgb = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tGObject gobj = paramJavaBackEnd.getGObject(id);\n\t\tif (gobj != null && gobj instanceof GBufferedImage) {\n\t\t\tGBufferedImage img = (GBufferedImage) gobj;\n\t\t\timg.setRGB(x, y, rgb);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GBufferedImage_updateAllPixels.java",
    "content": "package stanford.spl;\n\nimport java.io.*;\nimport java.lang.reflect.*;\nimport acm.graphics.*;\nimport acm.util.*;\n\n/**\n * \n * @author Marty Stepp\n * @version 2015/08/11\n */\npublic class GBufferedImage_updateAllPixels extends JBESwingCommand {\n\t// gbufferedimage.load(\"foobar.png\");\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString id = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\t// String base64 = nextString(paramTokenScanner);\n\t\tString base64 = \"\";\n\t\ttry {\n\t\t\tBufferedReader reader = new BufferedReader(getTokenScannerReader(paramTokenScanner));\n\t\t\t// throw away \", \\\"\" char\n\t\t\twhile (reader.read() != '\"') {\n\t\t\t\t// empty\n\t\t\t}\n\t\t\tbase64 = reader.readLine();\n\t\t\t\n\t\t\t// trim off \"\" from start/end and ) from end\n\t\t\tif (base64.endsWith(\"\\\")\")) {\n\t\t\t\tbase64 = base64.substring(0, base64.length() - 2);\n\t\t\t}\n\t\t} catch (Exception e) {\n\t\t\te.printStackTrace();\n\t\t}\n\t\t\n\t\tGObject gobj = paramJavaBackEnd.getGObject(id);\n\t\tif (gobj != null && gobj instanceof GBufferedImage) {\n\t\t\tGBufferedImage img = (GBufferedImage) gobj;\n\t\t\ttry {\n\t\t\t\timg.fromStringBase64(base64);\n\t\t\t} catch (java.io.IOException ioe) {\n\t\t\t\tioe.printStackTrace();\n\t\t\t}\n\t\t}\n\t}\n\t\n\tprivate Reader getTokenScannerReader(TokenScanner scanner) {\n\t\ttry {\n\t\t\tField inputField = TokenScanner.class.getDeclaredField(\"input\");\n\t\t\tinputField.setAccessible(true);\n\t\t\treturn (Reader) inputField.get(scanner);\n\t\t} catch (Exception e) {\n\t\t\tSystem.err.println(e);\n\t\t\treturn null;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GCompound_add.java",
    "content": "package stanford.spl;\n\nimport stanford.spl.TopCompound;\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GCompound_add extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString str = nextString(scanner);\n\t\tGObject localGObject1 = jbe.getGObject(str);\n\t\tscanner.verifyToken(\",\");\n\t\tstr = nextString(scanner);\n\t\tGObject localGObject2 = jbe.getGObject(str);\n\t\tscanner.verifyToken(\")\");\n\t\tif ((localGObject1 != null) && (localGObject2 != null)) {\n\t\t\t((TopCompound) localGObject1).add(localGObject2);\n\t\t\tSplPipeDecoder.writeOK();\n\t\t} else {\n\t\t\tSplPipeDecoder.writeError(\"GCompound_add: an object was null\");\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GFileChooser_showOpenDialog.java",
    "content": "/*\n * @version 2017/09/28\n * - made file filter work with comma-separated lists of filters\n * - moved heavy lifting code out to JFileChooserUtils\n */\n\npackage stanford.spl;\n\nimport acm.util.TokenScanner;\nimport java.io.*;\nimport javax.swing.*;\nimport stanford.cs106.gui.*;\n\npublic class GFileChooser_showOpenDialog extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString currentDir = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString fileFilter = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tif (currentDir.isEmpty()) {\n\t\t\ttry {\n\t\t\t\tcurrentDir = System.getProperty(\"user.dir\");\n\t\t\t} catch (Exception e) {}\n\t\t}\n\t\t\n\t\tJFileChooser chooser = JFileChooserUtils.createChooser(currentDir, fileFilter);\n\t\tint result = chooser.showOpenDialog(paramJavaBackEnd.getJBEConsoleFrame());\n\t\tString filename = \"\";\n\t\tif (result == JFileChooser.APPROVE_OPTION) {\n\t\t\tFile file = chooser.getSelectedFile();\n\t\t\tif (file != null) {\n\t\t\t\tfilename = file.getAbsolutePath();\n\t\t\t}\n\t\t}\n\t\tSplPipeDecoder.writeResult(filename);\n\t}\n\t\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GFileChooser_showSaveDialog.java",
    "content": "/*\n * @version 2017/09/28\n * - made file filter work with comma-separated lists of filters\n * - moved heavy lifting code out to JFileChooserUtils\n */\n\npackage stanford.spl;\n\nimport acm.util.TokenScanner;\nimport java.io.*;\nimport javax.swing.*;\nimport stanford.cs106.gui.JFileChooserUtils;\n\npublic class GFileChooser_showSaveDialog extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString currentDir = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString fileFilter = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tif (currentDir.isEmpty()) {\n\t\t\ttry {\n\t\t\t\tcurrentDir = System.getProperty(\"user.dir\");\n\t\t\t} catch (Exception e) {}\n\t\t}\n\t\tJFileChooser chooser = JFileChooserUtils.createChooser(currentDir, fileFilter);\n\t\tint result = chooser.showSaveDialog(paramJavaBackEnd.getJBEConsoleFrame());\n\t\tString filename = \"\";\n\t\tif (result == JFileChooser.APPROVE_OPTION) {\n\t\t\tFile file = chooser.getSelectedFile();\n\t\t\tif (file != null) {\n\t\t\t\tfilename = file.getAbsolutePath();\n\t\t\t}\n\t\t}\n\t\tSplPipeDecoder.writeResult(filename);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GFormattedPane.java",
    "content": "/*\n * @version 2018/06/24\n * - added get/setContentType, get/setFont\n * @version 2018/06/23\n * - initial version\n */\n\npackage stanford.spl;\n\nimport java.awt.*;\nimport java.io.*;\nimport java.util.*;\nimport java.util.List;\nimport javax.swing.*;\nimport javax.swing.event.*;\nimport javax.swing.text.*;\n\nimport acm.util.JTFTools;\n\npublic class GFormattedPane extends GInteractor {\n\tprivate JEditorPane editorPane;\n\tprivate JScrollPane scrollPane;\n\tprivate List<DocumentListener> documentListeners;\n\t\n\tpublic GFormattedPane() {\n\t\tsuper(new JScrollPane());\n\t\teditorPane = new JEditorPane();\n\t\teditorPane.setEditorKit(JEditorPane.createEditorKitForContentType(\"text/html\"));\n\t\teditorPane.setEditable(false);\n\t\tscrollPane = (JScrollPane) getInteractor();\n\t\tscrollPane.setViewportView(editorPane);\n\t}\n\t\n\tpublic void addDocumentListener(DocumentListener listener) {\n\t\teditorPane.getDocument().addDocumentListener(listener);\n\t\tif (documentListeners == null) {\n\t\t\tdocumentListeners = new ArrayList<DocumentListener>();\n\t\t}\n\t\tdocumentListeners.add(listener);\n\t}\n\t\n\tpublic boolean hasDocumentListener() {\n\t\treturn documentListeners != null && !documentListeners.isEmpty();\n\t}\n\t\n\tpublic void removeDocumentListener(DocumentListener listener) {\n\t\teditorPane.getDocument().removeDocumentListener(listener);\n\t\tif (documentListeners != null) {\n\t\t\tdocumentListeners.remove(listener);\n\t\t}\n\t}\n\n\tpublic void removeDocumentListeners() {\n\t\tif (documentListeners != null) {\n\t\t\tfor (DocumentListener listener : documentListeners) {\n\t\t\t\teditorPane.getDocument().removeDocumentListener(listener);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tpublic void addHyperlinkListener(HyperlinkListener listener) {\n\t\teditorPane.addHyperlinkListener(listener);\n\t}\n\t\n\tpublic String getContentType() {\n\t\treturn editorPane.getContentType();\n\t}\n\t\n\t@Override\n\tpublic Font getFont() {\n\t\treturn editorPane.getFont();\n\t}\n\n\tpublic String getPage() {\n\t\treturn editorPane.getPage().toString();\n\t}\n\t\n\tpublic String getText() {\n\t\treturn editorPane.getText();\n\t}\n\t\n\tpublic void setContentType(String contentType) {\n\t\teditorPane.setContentType(contentType);\n\t}\n\t\n\t@Override\n\tpublic void setFont(Font font) {\n\t\tsuper.setFont(font);\n\t\teditorPane.setFont(font);\n\t}\n\t\n\t@Override\n\tpublic void setFont(String font) {\n\t\tsuper.setFont(font);\n\t\teditorPane.setFont(JTFTools.decodeFont(font));\n\t}\n\t\n\tpublic void setPage(String url) throws IOException {\n\t\tDocument oldDocument = editorPane.getDocument();\n\t\teditorPane.setPage(url);\n\t\tDocument newDocument = editorPane.getDocument();\n\t\t\n\t\t// reattach listeners if document changed\n\t\tif (newDocument != oldDocument && documentListeners != null) {\n\t\t\tfor (DocumentListener listener : documentListeners) {\n\t\t\t\teditorPane.getDocument().addDocumentListener(listener);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tpublic void setText(String text) {\n\t\teditorPane.setText(text);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GFormattedPane_create.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class GFormattedPane_create extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString id = nextString(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\t\n\t\tGFormattedPane pane = new GFormattedPane();\n\t\tjbe.defineGObject(id, pane);\n\t\tpane.addHyperlinkListener(jbe.createHyperlinkListener(pane));\n\t\t\n\t\t// TODO: getInteractor here returns the JScrollPane; should it be instead linked to the JEditorPane?\n\t\tjbe.defineSource(pane.getInteractor(), id);\n\t}\n}"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GFormattedPane_getContentType.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GFormattedPane_getContentType extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString id = nextString(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\t\n\t\tGObject gobj = jbe.getGObject(id);\n\t\tif (gobj != null && gobj instanceof GFormattedPane) {\n\t\t\tGFormattedPane pane = (GFormattedPane) gobj;\n\t\t\tString contentType = pane.getContentType();\n\t\t\tSplPipeDecoder.encodeAndWrite(contentType);\n\t\t} else {\n\t\t\tSplPipeDecoder.writeError(\"Not a formatted pane: \" + id);\n\t\t}\n\t}\n}"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GFormattedPane_getPage.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GFormattedPane_getPage extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString id = nextString(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\t\n\t\tGObject gobj = jbe.getGObject(id);\n\t\tif (gobj != null && gobj instanceof GFormattedPane) {\n\t\t\tGFormattedPane pane = (GFormattedPane) gobj;\n\t\t\tString page = pane.getPage();\n\t\t\tSplPipeDecoder.encodeAndWrite(page);\n\t\t} else {\n\t\t\tSplPipeDecoder.writeError(\"Not a formatted pane: \" + id);\n\t\t}\n\t}\n}"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GFormattedPane_getText.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GFormattedPane_getText extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString id = nextString(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\t\n\t\tGObject gobj = jbe.getGObject(id);\n\t\tif (gobj != null && gobj instanceof GFormattedPane) {\n\t\t\tGFormattedPane pane = (GFormattedPane) gobj;\n\t\t\tString text = pane.getText();\n\t\t\tSplPipeDecoder.encodeAndWrite(text);\n\t\t} else {\n\t\t\tSplPipeDecoder.writeError(\"Not a formatted pane: \" + id);\n\t\t}\n\t}\n}"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GFormattedPane_setContentType.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GFormattedPane_setContentType extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString id = nextString(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tString contentType = SplPipeDecoder.readAndDecode(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\t\n\t\tGObject gobj = jbe.getGObject(id);\n\t\tif (gobj != null && gobj instanceof GFormattedPane) {\n\t\t\tGFormattedPane pane = (GFormattedPane) gobj;\n\t\t\tpane.setContentType(contentType);\n\t\t\tSplPipeDecoder.writeOK();\n\t\t} else {\n\t\t\tSplPipeDecoder.writeError(\"Not a formatted pane: \" + id);\n\t\t}\n\t}\n}"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GFormattedPane_setPage.java",
    "content": "package stanford.spl;\n\nimport java.io.IOException;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GFormattedPane_setPage extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString id = nextString(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tString url = SplPipeDecoder.readAndDecode(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\t\n\t\tGObject gobj = jbe.getGObject(id);\n\t\tif (gobj != null && gobj instanceof GFormattedPane) {\n\t\t\tGFormattedPane pane = (GFormattedPane) gobj;\n\t\t\ttry {\n\t\t\t\tpane.setPage(url);\n\t\t\t\tSplPipeDecoder.writeOK();\n\t\t\t} catch (IOException ioe) {\n\t\t\t\tSplPipeDecoder.writeError(ioe);\n\t\t\t}\n\t\t} else {\n\t\t\tSplPipeDecoder.writeError(\"Not a formatted pane: \" + id);\n\t\t}\n\t}\n}"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GFormattedPane_setText.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GFormattedPane_setText extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString id = nextString(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tString text = SplPipeDecoder.readAndDecode(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\t\n\t\tGObject gobj = jbe.getGObject(id);\n\t\tif (gobj != null && gobj instanceof GFormattedPane) {\n\t\t\tGFormattedPane pane = (GFormattedPane) gobj;\n\t\t\tpane.setText(text);\n\t\t\tSplPipeDecoder.writeOK();\n\t\t} else {\n\t\t\tSplPipeDecoder.writeError(\"Not a formatted pane: \" + id);\n\t\t}\n\t}\n}"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GInteractor.java",
    "content": "/*\n * @version 2016/10/23\n * - added requestFocus\n * @version 2016/10/16\n * - added get/setIcon\n * @version 2015/12/01\n * - added setBackground, setColor\n */\n\npackage stanford.spl;\n\nimport acm.graphics.*;\nimport acm.util.JTFTools;\n\nimport java.awt.*;\nimport java.awt.event.*;\nimport javax.swing.*;\n\npublic abstract class GInteractor extends GObject implements GResizable {\n\tprivate static final long serialVersionUID = 1L;\n\t\n\tprivate JComponent interactor;\n\tprivate String actionCommand;\n\tprivate String accelerator = \"\";\n\n\tpublic GInteractor(JComponent paramJComponent) {\n\t\tthis.interactor = paramJComponent;\n\t\tthis.actionCommand = \"\";\n\t\tDimension localDimension = paramJComponent.getPreferredSize();\n\t\tparamJComponent.setSize(localDimension.width, localDimension.height);\n\t}\n\t\n\tpublic boolean setAccelerator(String accelerator) {\n\t\tfinal JComponent interactor = getInteractor();\n\t\tif (interactor == null) {\n\t\t\treturn false;\n\t\t}\n\t\t\n\t\tif (accelerator.isEmpty()) {\n\t\t\t// remove accelerator\n\t\t\tinteractor.getActionMap().remove(\"hotkey\");\n\t\t\treturn true;\n\t\t}\n\t\t\n\t\t// do a tiny bit of preprocessing on the accelerator\n\t\t// e.g. \"Ctrl-x\" => \"control x\"\n\t\taccelerator = accelerator.toUpperCase();\n\t\taccelerator = accelerator.replace(\"ALTGRAPH\", \"altGraph\");\n\t\taccelerator = accelerator.replace(\"ALT\", \"alt\");\n\t\taccelerator = accelerator.replace(\"CTRL\", \"control\");\n\t\taccelerator = accelerator.replace(\"CONTROL\", \"control\");\n\t\taccelerator = accelerator.replace(\"META\", \"meta\");\n\t\taccelerator = accelerator.replace(\"SHIFT\", \"shift\");\n\t\taccelerator = accelerator.replace(\"PRESSED\", \"pressed\");\n\t\taccelerator = accelerator.replace(\"RELEASED\", \"released\");\n\t\taccelerator = accelerator.replace(\"TYPED\", \"typed\");\n\t\taccelerator = accelerator.replace(\"-\", \" \");\n\t\t\n\t\tif (!accelerator.contains(\" \")) {\n\t\t\t// \"y\" -> \"typed y\"\n\t\t\taccelerator = \"pressed \" + accelerator;\n\t\t}\n\t\t\n\t\t// see also:\n\t\t// https://docs.oracle.com/javase/7/docs/api/javax/swing/KeyStroke.html#getKeyStroke(java.lang.String)\n\t\t\n\t\tKeyStroke keystroke = KeyStroke.getKeyStroke(accelerator);\n\t\tif (keystroke == null) {\n\t\t\treturn false;\n\t\t}\n\t\t\n\t\tthis.accelerator = accelerator;\n\t\t// interactor.getInputMap().put(keystroke, \"hotkey\");\n\t\tinteractor.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(keystroke, \"hotkey\");\n\t\t\n\t\tinteractor.getActionMap().put(\"hotkey\", new AbstractAction() {\n\t\t\tpublic void actionPerformed(ActionEvent event) {\n\t\t\t\tif (interactor instanceof AbstractButton) {\n\t\t\t\t\t// delegate to existing action listener (likely the JavaBackEnd)\n\t\t\t\t\tAbstractButton button = (AbstractButton) interactor;\n\t\t\t\t\tfor (ActionListener listener : button.getActionListeners()) {\n\t\t\t\t\t\tlistener.actionPerformed(event);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn true;\n\t}\n\t\n\tpublic String getAccelerator() {\n\t\treturn accelerator;\n\t}\n\t\n\tpublic void setBackground(Color color) {\n\t\tif (getInteractor() != null) {\n\t\t\tgetInteractor().setBackground(color);\n\t\t\tif (getInteractor() instanceof JButton) {\n\t\t\t\t// workaround for buttons not showing background on some platforms\n\t\t\t\tgetInteractor().setOpaque(true);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t// JL: SwingUtilities.invokeLater\n\t@Override\n\tpublic void setColor(Color color) {\n\t\tsuper.setColor(color);\n\t\tsetForeground(color);\n\t}\n\t\n\tpublic void setFont(Font font) {\n\t\t\n\t}\n\t\n\t// e.g. \"Arial-Bold-16\"\n\tpublic void setFont(String fontString) {\n\t\tFont font = null;\n\t\tJComponent interactor = getInteractor();\n\t\tif (interactor == null) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tFont oldFont = interactor.getFont();\n\t\t// font = JTFTools.decodeFont(fontString, oldFont);\n\t\tfont = JTFTools.decodeFont(fontString);\n\t\tif (font == null) {\n\t\t\tfont = JTFTools.decodeFont(fontString, oldFont);\n\t\t}\n\t\tif (font != null) {\n\t\t\tinteractor.setFont(font);\n\t\t}\n\t}\n\t\n\tpublic Font getFont() {\n\t\tFont font = null;\n\t\tJComponent interactor = getInteractor();\n\t\tif (interactor != null) {\n\t\t\tfont = interactor.getFont();\n\t\t}\n\t\treturn font;\n\t}\n\t\n\tpublic String getFontString() {\n\t\tFont font = getFont();\n\t\tif (font == null) {\n\t\t\treturn \"\";\n\t\t} else {\n\t\t\tint style = font.getStyle();\n\t\t\tString fontString = font.getFamily() + \"-\";\n\t\t\tif (style == Font.PLAIN) {\n\t\t\t\tfontString += \"plain\";\n\t\t\t} else {\n\t\t\t\tif ((style & Font.BOLD) != 0) {\n\t\t\t\t\tfontString += \"bold\";\n\t\t\t\t}\n\t\t\t\tif ((style & Font.ITALIC) != 0) {\n\t\t\t\t\tfontString += \"italic\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tfontString += \"-\" + font.getSize();\n\t\t\treturn fontString;\n\t\t}\n\t}\n\t\n\tpublic void setForeground(Color color) {\n\t\tif (hasInteractor()) {\n\t\t\tgetInteractor().setForeground(color);\n\t\t}\n\t}\n\t\n\tpublic void setEnabled(boolean value) {\n\t\tif (hasInteractor()) {\n\t\t\tgetInteractor().setEnabled(value);\n\t\t}\n\t}\n\t\n\tpublic boolean hasInteractor() {\n\t\treturn getInteractor() != null;\n\t}\n\n\tpublic boolean isEnabled() {\n\t\treturn hasInteractor() && getInteractor().isEnabled();\n\t}\n\n\tpublic JComponent getInteractor() {\n\t\treturn this.interactor;\n\t}\n\n\tpublic GRectangle getBounds() {\n\t\tif (hasInteractor()) {\n\t\t\tPoint localPoint = getInteractor().getLocation();\n\t\t\tDimension localDimension = getInteractor().getPreferredSize();\n\t\t\treturn new GRectangle(localPoint.x, localPoint.y, localDimension.width,\n\t\t\t\t\tlocalDimension.height);\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\t\n\tpublic Icon getIcon() {\n\t\tJComponent interactor = getInteractor();\n\t\tif (interactor == null) {\n\t\t\treturn null;\n\t\t} else if (interactor instanceof JButton) {\n\t\t\treturn ((JButton) interactor).getIcon();\n\t\t} else if (interactor instanceof JCheckBox) {\n\t\t\treturn ((JCheckBox) interactor).getIcon();\n\t\t} else if (interactor instanceof JLabel) {\n\t\t\treturn ((JLabel) interactor).getIcon();\n\t\t} else if (interactor instanceof JRadioButton) {\n\t\t\treturn ((JRadioButton) interactor).getIcon();\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\t\n\tpublic void setIcon(Icon icon) {\n\t\tJComponent interactor = getInteractor();\n\t\tif (interactor == null) {\n\t\t\treturn;\n\t\t} else if (interactor instanceof JButton) {\n\t\t\t((JButton) interactor).setIcon(icon);\n\t\t} else if (interactor instanceof JCheckBox) {\n\t\t\t((JCheckBox) interactor).setIcon(icon);\n\t\t} else if (interactor instanceof JLabel) {\n\t\t\t((JLabel) interactor).setIcon(icon);\n\t\t} else if (interactor instanceof JRadioButton) {\n\t\t\t((JRadioButton) interactor).setIcon(icon);\n\t\t} else {\n\t\t\tthrow new IllegalArgumentException(\"interactor type does not support setIcon: \" + getClass().getSimpleName());\n\t\t}\n\t}\n\t\n\tpublic void setIcon(String iconFileName) {\n\t\tsetIcon(new ImageIcon(iconFileName));\n\t}\n\n\tpublic void setLocation(double paramDouble1, double paramDouble2) {\n\t\tsuper.setLocation(paramDouble1, paramDouble2);\n\t\tif (hasInteractor()) {\n\t\t\tgetInteractor().setLocation(GMath.round(paramDouble1), GMath.round(paramDouble2));\n\t\t\tgetInteractor().repaint();\n\t\t}\n\t}\n\t\n\tpublic boolean setMnemonic(char mnemonic) {\n\t\treturn setMnemonic((int) mnemonic);\n\t}\n\t\n\tpublic boolean setMnemonic(int mnemonic) {\n\t\tJComponent interactor = getInteractor();\n\t\tif (interactor == null) {\n\t\t\treturn false;\n\t\t}\n\t\tif (interactor instanceof AbstractButton) {\n\t\t\t((AbstractButton) interactor).setMnemonic(mnemonic);\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tpublic char getMnemonic() {\n\t\tJComponent interactor = getInteractor();\n\t\tif (interactor == null) {\n\t\t\treturn '\\0';\n\t\t}\n\t\tif (interactor instanceof AbstractButton) {\n\t\t\treturn (char) ((AbstractButton) interactor).getMnemonic();\n\t\t} else {\n\t\t\treturn '\\0';\n\t\t}\n\t}\n\n\tpublic void setVisible(boolean paramBoolean) {\n\t\tsuper.setVisible(paramBoolean);\n\t\tif (hasInteractor()) {\n\t\t\tgetInteractor().setVisible(paramBoolean);\n\t\t\tgetInteractor().repaint();\n\t\t}\n\t}\n\n\tpublic void setParent(GContainer paramGContainer) {\n\t\tif (paramGContainer == null) {\n\t\t\tif (hasInteractor()) {\n\t\t\t\tjava.awt.Container parent = getInteractor().getParent();\n\t\t\t\tif (parent != null) {\n\t\t\t\t\tparent.remove(getInteractor());\n\t\t\t\t\tparent.validate();\n\t\t\t\t}\n\t\t\t}\n\t\t} else if ((paramGContainer instanceof TopCompound)) {\n\t\t\tTopCompound localTopCompound = (TopCompound) paramGContainer;\n\t\t\tJBECanvas localJBECanvas = localTopCompound.getCanvas();\n\t\t\tif (localJBECanvas != null) {\n\t\t\t\tlocalJBECanvas.add(getInteractor());\n\t\t\t\tlocalJBECanvas.validate();\n\t\t\t}\n\t\t}\n\t}\n\n\t// JL: SwingUtilities.invokeLater\n\tpublic void setSize(double paramDouble1, double paramDouble2) {\n\t\tint i = GMath.round(paramDouble1);\n\t\tint j = GMath.round(paramDouble2);\n\t\tif (getInteractor() != null) {\n\t\t\tgetInteractor().setPreferredSize(new Dimension(i, j));\n\t\t\tgetInteractor().setSize(i, j);\n\t\t\tgetInteractor().repaint();\n\t\t}\n\t}\n\n\tpublic void setSize(GDimension paramGDimension) {\n\t\tsetSize(paramGDimension.getWidth(), paramGDimension.getHeight());\n\t}\n\n\tpublic void setBounds(double paramDouble1, double paramDouble2, double paramDouble3,\n\t\t\tdouble paramDouble4) {\n\t\tsetLocation(paramDouble1, paramDouble2);\n\t\tsetSize(paramDouble3, paramDouble4);\n\t}\n\n\tpublic void setBounds(GRectangle paramGRectangle) {\n\t\tsetBounds(paramGRectangle.getX(), paramGRectangle.getY(), paramGRectangle.getWidth(),\n\t\t\t\tparamGRectangle.getHeight());\n\t}\n\n\tpublic void setActionCommand(String paramString) {\n\t\tthis.actionCommand = paramString;\n\t}\n\n\tpublic String getActionCommand() {\n\t\treturn this.actionCommand;\n\t}\n\t\n\tpublic void setTooltip(String tooltipText) {\n\t\tif (hasInteractor()) {\n\t\t\tgetInteractor().setToolTipText(tooltipText);\n\t\t}\n\t}\n\n\tpublic void repaint() {\n\t\tif (hasInteractor()) {\n\t\t\tgetInteractor().repaint();\n\t\t}\n\t}\n\n\tpublic void paint2d(Graphics2D paramGraphics2D) {\n\t}\n\n\tprotected void paintObject(Graphics paramGraphics) {\n\t}\n\t\n\tpublic void requestFocus() {\n\t\tif (hasInteractor()) {\n\t\t\tgetInteractor().requestFocus();\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GInteractor_addActionListener.java",
    "content": "/*\n * @version 2018/06/23\n * - initial version\n */\n\npackage stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GInteractor_addActionListener extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GInteractor) {\n\t\t\tGInteractor interactor = (GInteractor) localGObject;\n\t\t\tif (interactor instanceof GButton) {\n\t\t\t\treturn;   // disallow add/remove of action listeners on buttons (always on)\n\t\t\t}\n\t\t\tinteractor.addActionListener(paramJavaBackEnd);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GInteractor_addChangeListener.java",
    "content": "/*\n * @version 2018/06/23\n * - initial version\n */\n\npackage stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GInteractor_addChangeListener extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GInteractor) {\n\t\t\tGInteractor interactor = (GInteractor) localGObject;\n\t\t\tif (interactor instanceof GTextField) {\n\t\t\t\tGTextField textField = ((GTextField) interactor);\n\t\t\t\tif (!textField.hasDocumentListener()) {\n\t\t\t\t\ttextField.addDocumentListener(paramJavaBackEnd.createDocumentListener(interactor));\n\t\t\t\t}\n\t\t\t} else if (interactor instanceof GTextArea) {\n\t\t\t\tGTextArea textArea = ((GTextArea) interactor);\n\t\t\t\tif (!textArea.hasDocumentListener()) {\n\t\t\t\t\ttextArea.addDocumentListener(paramJavaBackEnd.createDocumentListener(interactor));\n\t\t\t\t}\n\t\t\t} else if (interactor instanceof GSlider) {\n\t\t\t\tGSlider slider = ((GSlider) interactor);\n\t\t\t\tif (!slider.hasChangeListener()) {\n\t\t\t\t\tslider.addChangeListener(paramJavaBackEnd);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// allow change listeners only on text-editing components\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GInteractor_getAccelerator.java",
    "content": "/*\n * @version 2016/10/25\n * - initial version\n */\n\npackage stanford.spl;\n\nimport acm.graphics.*;\nimport acm.util.TokenScanner;\n\npublic class GInteractor_getAccelerator extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject instanceof GInteractor) {\n\t\t\tString accelerator = ((GInteractor) localGObject).getAccelerator();\n\t\t\tSplPipeDecoder.writeResult(accelerator);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GInteractor_getFont.java",
    "content": "/*\n * @version 2016/10/25\n * - initial version\n */\n\npackage stanford.spl;\n\nimport acm.graphics.*;\nimport acm.util.TokenScanner;\n\npublic class GInteractor_getFont extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject instanceof GInteractor) {\n\t\t\tString fontString = ((GInteractor) localGObject).getFontString();\n\t\t\tSplPipeDecoder.writeResult(fontString);\n\t\t} else {\n\t\t\tSplPipeDecoder.writeError(\"interactor not found or invalid: \" + interactorID);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GInteractor_getMnemonic.java",
    "content": "/*\n * @version 2016/10/25\n * - initial version\n */\n\npackage stanford.spl;\n\nimport acm.graphics.*;\nimport acm.util.TokenScanner;\n\npublic class GInteractor_getMnemonic extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject instanceof GInteractor) {\n\t\t\tchar mnemonic = ((GInteractor) localGObject).getMnemonic();\n\t\t\tSplPipeDecoder.writeResult(mnemonic);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GInteractor_isEnabled.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GInteractor_isEnabled extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tboolean result = false;\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GInteractor) {\n\t\t\tresult = ((GInteractor) localGObject).isEnabled();\n\t\t}\n\t\tSplPipeDecoder.writeResult(result);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GInteractor_removeActionListener.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GInteractor_removeActionListener extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GInteractor) {\n\t\t\tGInteractor interactor = (GInteractor) localGObject;\n\t\t\tif (interactor instanceof GButton) {\n\t\t\t\treturn;   // disallow add/remove of action listeners on buttons (always on)\n\t\t\t}\n\t\t\tinteractor.removeActionListener(paramJavaBackEnd);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GInteractor_removeChangeListener.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GInteractor_removeChangeListener extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GInteractor) {\n\t\t\tGInteractor interactor = (GInteractor) localGObject;\n\t\t\tif (interactor instanceof GTextField) {\n\t\t\t\t((GTextField) interactor).removeDocumentListeners();\n\t\t\t} else if (interactor instanceof GTextArea) {\n\t\t\t\t((GTextArea) interactor).removeDocumentListeners();\n\t\t\t} else if (interactor instanceof GSlider) {\n\t\t\t\t((GSlider) interactor).removeChangeListeners();\n\t\t\t}\n\t\t\t// allow change listeners only on text-editing components\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GInteractor_requestFocus.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GInteractor_requestFocus extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GInteractor) {\n\t\t\tGInteractor interactor = (GInteractor) localGObject;\n\t\t\tinteractor.requestFocus();\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GInteractor_setAccelerator.java",
    "content": "/*\n * @version 2016/10/25\n * - initial version\n */\n\npackage stanford.spl;\n\nimport acm.graphics.*;\nimport acm.util.TokenScanner;\n\npublic class GInteractor_setAccelerator extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString accelerator = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tboolean success = false;\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject instanceof GInteractor) {\n\t\t\tsuccess = ((GInteractor) localGObject).setAccelerator(accelerator);\n\t\t}\n\t\t\n\t\tif (!success) {\n\t\t\tSplPipeDecoder.writeError(\"unable to set accelerator for interactor: \" + interactorID);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GInteractor_setBackground.java",
    "content": "package stanford.spl;\n\nimport java.awt.Color;\n\nimport acm.graphics.GObject;\nimport acm.util.JTFTools;\nimport acm.util.TokenScanner;\n\npublic class GInteractor_setBackground extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString colorStr = nextString(paramTokenScanner);\n\t\tColor color = JTFTools.decodeColor(colorStr);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GInteractor) {\n\t\t\t((GInteractor) localGObject).setBackground(color);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GInteractor_setEnabled.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GInteractor_setEnabled extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString bool = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t// GObject.setAntiAliasing(bool.equals(\"true\"));\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GInteractor) {\n\t\t\t((GInteractor) localGObject).setEnabled(bool.equals(\"true\"));\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GInteractor_setFont.java",
    "content": "/*\n * @version 2016/10/25\n * - initial version\n */\n\npackage stanford.spl;\n\nimport acm.graphics.*;\nimport acm.util.TokenScanner;\n\npublic class GInteractor_setFont extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString font = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject instanceof GInteractor) {\n\t\t\t((GInteractor) localGObject).setFont(font);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GInteractor_setIcon.java",
    "content": "/*\n * @version 2016/10/16\n * - moved most of logic into GInteractor class\n * - support for GRadioButton and GLabel icons\n */\n\npackage stanford.spl;\n\nimport acm.graphics.*;\nimport acm.util.TokenScanner;\n\npublic class GInteractor_setIcon extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString filename = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject instanceof GInteractor) {\n\t\t\t((GInteractor) localGObject).setIcon(filename);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GInteractor_setMnemonic.java",
    "content": "/*\n * @version 2016/10/25\n * - initial version\n */\n\npackage stanford.spl;\n\nimport acm.graphics.*;\nimport acm.util.TokenScanner;\n\npublic class GInteractor_setMnemonic extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint mnemonic = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tboolean success = false;\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject instanceof GInteractor) {\n\t\t\tsuccess = ((GInteractor) localGObject).setMnemonic(mnemonic);\n\t\t}\n\t\t\n\t\tif (!success) {\n\t\t\tSplPipeDecoder.writeError(\"unable to set mnemonic for interactor: \" + interactorID);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GInteractor_setText.java",
    "content": "/*\n * @version 2017/10/19\n * - added support for GTextLabel\n */\n\npackage stanford.spl;\n\nimport javax.swing.*;\nimport acm.graphics.*;\nimport acm.util.TokenScanner;\n\npublic class GInteractor_setText extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString text = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject == null) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif (localGObject instanceof GButton) {\n\t\t\tJButton component = (JButton) ((GButton) localGObject).getInteractor();\n\t\t\tcomponent.setText(text);\n\t\t} else if (localGObject instanceof GCheckBox) {\n\t\t\tJCheckBox component = (JCheckBox) ((GCheckBox) localGObject).getInteractor();\n\t\t\tcomponent.setText(text);\n\t\t} else if (localGObject instanceof GRadioButton) {\n\t\t\tJRadioButton component = (JRadioButton) ((GRadioButton) localGObject).getInteractor();\n\t\t\tcomponent.setText(text);\n\t\t} else if (localGObject instanceof GTextLabel) {\n\t\t\tJLabel component = (JLabel) ((GTextLabel) localGObject).getInteractor();\n\t\t\tcomponent.setText(text);\n\t\t} else {\n\t\t\t// unsupported; do nothing\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GInteractor_setTextPosition.java",
    "content": "package stanford.spl;\n\nimport javax.swing.*;\n\nimport stanford.spl.GButton;\nimport stanford.spl.GCheckBox;\nimport acm.graphics.*;\nimport acm.util.TokenScanner;\n\npublic class GInteractor_setTextPosition extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint horizontal = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint vertical = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GButton) {\n\t\t\tJButton component = (JButton) ((GButton) localGObject).getInteractor();\n\t\t\tcomponent.setHorizontalTextPosition(horizontal);\n\t\t\tcomponent.setVerticalTextPosition(vertical);\n\t\t} else if (localGObject != null && localGObject instanceof GCheckBox) {\n\t\t\tJCheckBox component = (JCheckBox) ((GCheckBox) localGObject).getInteractor();\n\t\t\tcomponent.setHorizontalTextPosition(horizontal);\n\t\t\tcomponent.setVerticalTextPosition(vertical);\n\t\t} else if (localGObject != null && localGObject instanceof GRadioButton) {\n\t\t\tJRadioButton component = (JRadioButton) ((GRadioButton) localGObject).getInteractor();\n\t\t\tcomponent.setHorizontalTextPosition(horizontal);\n\t\t\tcomponent.setVerticalTextPosition(vertical);\n\t\t} else {\n\t\t\t// unsupported; do nothing\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GInteractor_setTooltip.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.*;\nimport acm.util.TokenScanner;\n\npublic class GInteractor_setTooltip extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString tooltipText = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GInteractor) {\n\t\t\tGInteractor ginteractor = (GInteractor) localGObject;\n\t\t\tginteractor.setTooltip(tooltipText);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GObject_remove.java",
    "content": "/*\n * Had to pull out of acm.jar to fix bug with not revalidating compound after removal\n * @version 2011/11/18\n */\n\npackage stanford.spl;\n\nimport acm.graphics.GCompound;\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GObject_remove extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner,\n\t\t\tJavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString str = nextString(paramTokenScanner);\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(str);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tif (localGObject != null) {\n\t\t\tGCompound localGCompound = (GCompound) localGObject.getParent();\n\t\t\tif (localGCompound != null) {\n\t\t\t\tlocalGCompound.remove(localGObject);\n\t\t\t}\n\t\t\t\n\t\t\tif (localGObject instanceof GInteractor) {\n\t\t\t\t// also remove interactor from screen, if it's there\n\t\t\t\tGInteractor ginter = (GInteractor) localGObject;\n\t\t\t\tginter.setParent(null);\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GObject_setAntialiasing.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GObject_setAntialiasing extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString bool = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tGObject.setAntiAliasing(bool.equals(\"true\"));\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GOptionPane_showConfirmDialog.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\nimport javax.swing.*;\n\npublic class GOptionPane_showConfirmDialog extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString message = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString title = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tif (title.isEmpty()) {\n\t\t\ttitle = null;\n\t\t}\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tparamTokenScanner.scanNumbers();\n\t\tint type = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tint choice = JOptionPane.showConfirmDialog(paramJavaBackEnd.getJBEConsoleFrame(), message, title, type);\n\t\tSplPipeDecoder.writeResult(choice);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GOptionPane_showInputDialog.java",
    "content": "/*\n * @version 2017/10/12\n * - modified to accept optional initial value\n */\n\npackage stanford.spl;\n\nimport acm.util.TokenScanner;\n\nimport javax.swing.*;\n\npublic class GOptionPane_showInputDialog extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString message = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString title = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tif (title.isEmpty()) {\n\t\t\ttitle = null;\n\t\t}\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString initialValue = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tif (initialValue.isEmpty()) {\n\t\t\tinitialValue = null;\n\t\t}\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tObject input;\n\t\tif (initialValue != null && !initialValue.isEmpty()) {\n\t\t\tinput = JOptionPane.showInputDialog(paramJavaBackEnd.getJBEConsoleFrame(),\n\t\t\t\tmessage, title,\n\t\t\t\tJOptionPane.DEFAULT_OPTION,\n\t\t\t\t/* icon */ null,\n\t\t\t\t/* selection values */ null,\n\t\t\t\t/* initially selected */ initialValue);\n\t\t} else {\n\t\t\tinput = JOptionPane.showInputDialog(paramJavaBackEnd.getJBEConsoleFrame(),\n\t\t\t\t\tmessage, title,\n\t\t\t\t\tJOptionPane.DEFAULT_OPTION);\n\t\t}\n\t\t\n\t\tString inputStr; \n\t\tif (input == null) {\n\t\t\tinputStr = \"\";\n\t\t} else {\n\t\t\tinputStr = String.valueOf(input);\n\t\t}\n\t\tSplPipeDecoder.encodeAndWrite(inputStr);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GOptionPane_showMessageDialog.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\nimport javax.swing.*;\n\npublic class GOptionPane_showMessageDialog extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString message = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString title = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tif (title.isEmpty()) {\n\t\t\ttitle = null;\n\t\t}\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tparamTokenScanner.scanNumbers();\n\t\tint type = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tJOptionPane.showMessageDialog(paramJavaBackEnd.getJBEConsoleFrame(), message, title, type);\n\t\t\n\t\t// useless \"ok\" result for C++ lib to throw away, to make dialog modal\n\t\tSplPipeDecoder.writeResult(\"ok\");\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GOptionPane_showOptionDialog.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\nimport java.util.*;\n\nimport javax.swing.*;\n\npublic class GOptionPane_showOptionDialog extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString message = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString title = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tif (title.isEmpty()) {\n\t\t\ttitle = null;\n\t\t}\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tparamTokenScanner.verifyToken(\"{\");\n\t\t\n\t\tList<String> options = new ArrayList<String>();\n\t\twhile (paramTokenScanner.hasMoreTokens()) {\n\t\t\tString token = nextString(paramTokenScanner);\n\t\t\tif (token.equals(\"}\")) {\n\t\t\t\tbreak;\n\t\t\t} else if (token.equals(\",\")) {\n\t\t\t\tcontinue;\n\t\t\t} else {\n\t\t\t\toptions.add(SplPipeDecoder.decode(token));\n\t\t\t}\n\t\t}\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString initiallySelected = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tif (initiallySelected.isEmpty()) {\n\t\t\tinitiallySelected = null;   // tells JOptionPane not to select anything\n\t\t}\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tint result = JOptionPane.showOptionDialog(\n\t\t\t\t/* parent */ paramJavaBackEnd.getJBEConsoleFrame(),\n\t\t\t\tmessage,\n\t\t\t\ttitle,\n\t\t\t\t/* optionType */ JOptionPane.DEFAULT_OPTION,\n\t\t\t\t/* messageType */ JOptionPane.QUESTION_MESSAGE,\n\t\t\t\t/* icon */ null,\n\t\t\t\t/* Object[] options */ options.toArray(),\n\t\t\t\tinitiallySelected);\n\t\t\n\t\tSplPipeDecoder.writeResult(result);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GOptionPane_showTextFileDialog.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class GOptionPane_showTextFileDialog extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString text = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString title = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint rows = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint cols = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tTextFileDialog.showDialog(paramJavaBackEnd.getJBEConsoleFrame(), title, text, rows, cols);\n\t\t\n\t\t// useless \"ok\" result for C++ lib to throw away, to make dialog modal\n\t\tSplPipeDecoder.writeResult(\"ok\");\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GRadioButton.java",
    "content": "/**\n * @author Marty Stepp\n * @version 2015/06/20\n */\n\npackage stanford.spl;\n\nimport java.util.*;\nimport javax.swing.*;\n\npublic class GRadioButton extends GInteractor {\n\tprivate static final long serialVersionUID = 1L;\n\t\n\tprivate static final Map<String, ButtonGroup> buttonGroups = new TreeMap<String, ButtonGroup>();\n\t\n\tpublic GRadioButton(String label, String group) {\n\t\tsuper(new JRadioButton(label));\n\t\tif (!buttonGroups.containsKey(group)) {\n\t\t\tbuttonGroups.put(group, new ButtonGroup());\n\t\t}\n\t\tButtonGroup bgroup = buttonGroups.get(group);\n\t\tbgroup.add((JRadioButton) this.getInteractor());\n\t}\n\t\n\tpublic boolean isSelected() {\n\t\treturn ((JRadioButton) this.getInteractor()).isSelected();\n\t}\n\t\n\tpublic void setSelected(boolean selected) {\n\t\t((JRadioButton) this.getInteractor()).setSelected(selected);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GRadioButton_create.java",
    "content": "/*\n * \n * @author Marty Stepp\n * @version 2015/06/20\n */\n\npackage stanford.spl;\n\nimport acm.util.*;\n\npublic class GRadioButton_create extends JBESwingCommand {\n\t// grb = new GRadioButton(label, group);\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString id = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString label = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString group = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tGRadioButton grb = new GRadioButton(label, group);\n\t\tparamJavaBackEnd.defineGObject(id, grb);\n\t\tparamJavaBackEnd.defineSource(grb.getInteractor(), id);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GRadioButton_isSelected.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GRadioButton_isSelected extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tboolean result = false;\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GRadioButton) {\n\t\t\tresult = ((GRadioButton) localGObject).isSelected();\n\t\t}\n\t\tSplPipeDecoder.writeResult(result);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GRadioButton_setSelected.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GRadioButton_setSelected extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tboolean selected = nextBoolean(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GRadioButton) {\n\t\t\t((GRadioButton) localGObject).setSelected(selected);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GScrollBar.java",
    "content": "/*\n * @version 2018/07/16\n * - initial version\n */\n\npackage stanford.spl;\n\nimport java.awt.Dimension;\nimport java.awt.event.*;\nimport javax.swing.*;\nimport stanford.cs106.gui.GuiUtils;\n\npublic class GScrollBar extends GInteractor {\n\tpublic GScrollBar() {\n\t\tsuper(new JScrollBar());\n\t}\n\t\n\tpublic GScrollBar(int orientation) {\n\t\tsuper(new JScrollBar(orientation));\n\t}\n\t\n\tpublic GScrollBar(int orientation, int value, int extent, int min, int max) {\n\t\tsuper(makeScrollBar(orientation, value, extent, min, max));\n\t\tupdatePreferredSize(getInteractor());\n\t\tDimension prefSize = getInteractor().getPreferredSize();\n\t\tsetSize(prefSize.width, prefSize.height);\n\t}\n\t\n\tpublic void addAdjustmentListener(AdjustmentListener listener) {\n\t\tgetInteractor().addAdjustmentListener(listener);\n\t}\n\t\n\tpublic JScrollBar getInteractor() {\n\t\treturn (JScrollBar) super.getInteractor();\n\t}\n\t\n\tpublic int getValue() {\n\t\treturn getInteractor().getValue();\n\t}\n\t\n\tpublic void setValues(int value, int extent, int min, int max) {\n\t\tgetInteractor().setValues(value, extent, min, max);\n\t\tupdatePreferredSize(getInteractor());\n\t}\n\t\n\tprivate static JScrollBar makeScrollBar(int orientation, int value, int extent, int min, int max) {\n\t\tfinal JScrollBar scrollBar = new JScrollBar(orientation, value, extent, min, max) {\n\t\t\t@Override\n\t\t\tpublic Dimension getPreferredSize() {\n\t\t\t\tint range = getMaximum() - getMinimum() + 1;\n\t\t\t\tif (getOrientation() == JScrollBar.HORIZONTAL) {\n\t\t\t\t\treturn new Dimension(range, super.getPreferredSize().height);\n\t\t\t\t} else {\n\t\t\t\t\t// vertical\n\t\t\t\t\treturn new Dimension(super.getPreferredSize().width, range);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t@Override\n\t\t\tpublic Dimension getMinimumSize() {\n\t\t\t\treturn getPreferredSize();\n\t\t\t}\n//\t\t\t\n//\t\t\t@Override\n//\t\t\tpublic void setSize(int width, int height) {\n//\t\t\t\tJOptionPane.showMessageDialog(null, \"setSize(\" + width + \"x\" + height + \"):\\n\" + ExceptionUtils.stackTraceToString());\n//\t\t\t}\n//\t\t\t\n//\t\t\t@Override\n//\t\t\tpublic void setSize(Dimension size) {\n//\t\t\t\tJOptionPane.showMessageDialog(null, \"setSize(\" + size + \"):\\n\" + ExceptionUtils.stackTraceToString());\n//\t\t\t}\n\t\t};\n\t\tscrollBar.setBackground(java.awt.Color.RED);\n\t\tscrollBar.addMouseWheelListener(new MouseWheelListener() {\n\t\t\tpublic void mouseWheelMoved(MouseWheelEvent event) {\n\t\t\t\tint rotation = event.getWheelRotation();\n\t\t\t\tif (rotation > 0) {\n\t\t\t\t\t// scroll down\n\t\t\t\t\tscrollBar.setValue(scrollBar.getValue() + event.getScrollAmount());\n\t\t\t\t} else if (rotation < 0) {\n\t\t\t\t\tscrollBar.setValue(scrollBar.getValue() - event.getScrollAmount());\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tupdatePreferredSize(scrollBar);\n\t\treturn scrollBar;\n\t}\n\t\n\tprivate static void updatePreferredSize(JScrollBar scrollBar) {\n\t\tint range = scrollBar.getMaximum() - scrollBar.getMinimum() + 1;\n\t\tif (scrollBar.getOrientation() == JScrollBar.HORIZONTAL) {\n\t\t\tGuiUtils.setPreferredWidth(scrollBar, range);\n\t\t} else {\n\t\t\t// vertical\n\t\t\tGuiUtils.setPreferredHeight(scrollBar, range);\n\t\t}\n\t\tscrollBar.setMinimumSize(scrollBar.getPreferredSize());\n\t\tscrollBar.setSize(scrollBar.getPreferredSize());\n\t\tscrollBar.updateUI();\n\t\tscrollBar.validate();\n\t\tscrollBar.revalidate();\n\t\tscrollBar.repaint();\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GScrollBar_create.java",
    "content": "/*\n * @version 2018/07/16\n * - initial version\n */\n\npackage stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class GScrollBar_create extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString id = nextString(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tint orientation = nextInt(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tint value = nextInt(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tint extent = nextInt(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tint min = nextInt(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tint max = nextInt(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\t\n\t\tGScrollBar scrollBar = new GScrollBar(orientation, value, extent, min, max);\n\t\tjbe.defineGObject(id, scrollBar);\n\t\tscrollBar.addAdjustmentListener(jbe.createAdjustmentListener(scrollBar));\n\t\t\n\t\t// TODO: getInteractor here returns the JScrollPane; should it be instead linked to the JEditorPane?\n\t\tjbe.defineSource(scrollBar.getInteractor(), id);\n\t}\n}"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GScrollBar_getValue.java",
    "content": "/*\n * @version 2018/07/16\n * - initial version\n */\n\npackage stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GScrollBar_getValue extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString id = nextString(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\t\n\t\tGObject gobj = jbe.getGObject(id);\n\t\tif (gobj != null && gobj instanceof GScrollBar) {\n\t\t\tGScrollBar scrollBar = (GScrollBar) gobj;\n\t\t\tint value = scrollBar.getValue();\n\t\t\tSplPipeDecoder.writeResult(value);\n\t\t} else {\n\t\t\tSplPipeDecoder.writeError(\"Not a scroll bar: \" + id);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GScrollBar_setValues.java",
    "content": "/*\n * @version 2018/07/16\n * - initial version\n */\n\npackage stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GScrollBar_setValues extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString id = nextString(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tint value = nextInt(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tint extent = nextInt(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tint min = nextInt(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tint max = nextInt(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\t\n\t\tGObject gobj = jbe.getGObject(id);\n\t\tif (gobj != null && gobj instanceof GScrollBar) {\n\t\t\tGScrollBar scrollBar = (GScrollBar) gobj;\n\t\t\tscrollBar.setValues(value, extent, min, max);\n\t\t\tSplPipeDecoder.writeOK();\n\t\t} else {\n\t\t\tSplPipeDecoder.writeError(\"Not a scroll bar: \" + id);\n\t\t}\n\t}\n}"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GSlider.java",
    "content": "/*\n * @version 2018/06/23\n * - added change listener functionality\n */\n\npackage stanford.spl;\n\nimport javax.swing.JSlider;\nimport javax.swing.UIManager;\nimport javax.swing.event.ChangeListener;\n\npublic class GSlider extends GInteractor {\n\tprivate static final long serialVersionUID = 1L;\n\t\n\t/**\n\t * Settings for Java look-and-feel related to tables.\n\t */\n\tpublic static void setSystemLookAndFeelProperties() {\n\t\tUIManager.getLookAndFeelDefaults().put(\"Slider.paintValue\", false);\n\t\tUIManager.put(\"Slider.paintValue\", false);\n\t}\n\t\n\tpublic GSlider(int paramInt1, int paramInt2, int paramInt3, ChangeListener paramChangeListener) {\n\t\tsuper(new JSlider(paramInt1, paramInt2, paramInt3));\n\t\tJSlider localJSlider = getJSlider();\n\t\tif (paramChangeListener != null) {\n\t\t\tlocalJSlider.addChangeListener(paramChangeListener);\n\t\t\tlocalJSlider.setLabelTable(null);\n\t\t}\n\t}\n\t\n\tpublic void addChangeListener(ChangeListener listener) {\n\t\tJSlider slider = getJSlider();\n\t\tif (slider != null) {\n\t\t\tslider.addChangeListener(listener);\n\t\t}\n\t}\n\t\n\tpublic boolean getPaintLabels() {\n\t\treturn getJSlider().getPaintLabels();\n\t}\n\t\n\tpublic boolean getPaintTicks() {\n\t\treturn getJSlider().getPaintTicks();\n\t}\n\t\n\tpublic boolean getSnapToTicks() {\n\t\treturn getJSlider().getSnapToTicks();\n\t}\n\t\n\tpublic int getMajorTickSpacing() {\n\t\treturn getJSlider().getMajorTickSpacing();\n\t}\n\t\n\tpublic int getMinorTickSpacing() {\n\t\treturn getJSlider().getMinorTickSpacing();\n\t}\n\t\n\tpublic boolean hasChangeListener() {\n\t\tJSlider slider = getJSlider();\n\t\treturn slider != null && slider.getChangeListeners().length > 0;\n\t}\n\t\n\tpublic void removeChangeListener(ChangeListener listener) {\n\t\tJSlider slider = getJSlider();\n\t\tif (slider != null) {\n\t\t\tslider.removeChangeListener(listener);\n\t\t}\n\t}\n\t\n\tpublic void removeChangeListeners() {\n\t\tJSlider slider = getJSlider();\n\t\tif (slider != null) {\n\t\t\tfor (ChangeListener listener : slider.getChangeListeners()) {\n\t\t\t\tslider.removeChangeListener(listener);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tpublic void setPaintLabels(boolean value) {\n\t\tgetJSlider().setPaintLabels(value);\n\t}\n\t\n\tpublic void setPaintTicks(boolean value) {\n\t\tgetJSlider().setPaintTicks(value);\n\t}\n\t\n\tpublic void setSnapToTicks(boolean value) {\n\t\tgetJSlider().setSnapToTicks(value);\n\t}\n\t\n\tpublic void setMajorTickSpacing(int value) {\n\t\tgetJSlider().setMajorTickSpacing(value);\n\t}\n\t\n\tpublic void setMinorTickSpacing(int value) {\n\t\tgetJSlider().setMinorTickSpacing(value);\n\t}\n\t\n\tprivate JSlider getJSlider() {\n\t\treturn (JSlider) getInteractor();\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GSlider_getMajorTickSpacing.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GSlider_getMajorTickSpacing extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tint result = -1;\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GSlider) {\n\t\t\tresult = ((GSlider) localGObject).getMajorTickSpacing();\n\t\t}\n\t\tSplPipeDecoder.writeResult(result);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GSlider_getMinorTickSpacing.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GSlider_getMinorTickSpacing extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tint result = -1;\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GSlider) {\n\t\t\tresult = ((GSlider) localGObject).getMinorTickSpacing();\n\t\t}\n\t\tSplPipeDecoder.writeResult(result);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GSlider_getPaintLabels.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GSlider_getPaintLabels extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tboolean result = false;\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GSlider) {\n\t\t\tresult = ((GSlider) localGObject).getPaintLabels();\n\t\t}\n\t\tSplPipeDecoder.writeResult(result);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GSlider_getPaintTicks.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GSlider_getPaintTicks extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tboolean result = false;\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GSlider) {\n\t\t\tresult = ((GSlider) localGObject).getPaintTicks();\n\t\t}\n\t\tSplPipeDecoder.writeResult(result);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GSlider_getSnapToTicks.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GSlider_getSnapToTicks extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tboolean result = false;\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GSlider) {\n\t\t\tresult = ((GSlider) localGObject).getSnapToTicks();\n\t\t}\n\t\tSplPipeDecoder.writeResult(result);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GSlider_setMajorTickSpacing.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GSlider_setMajorTickSpacing extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint value = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GSlider) {\n\t\t\t((GSlider) localGObject).setMajorTickSpacing(value);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GSlider_setMinorTickSpacing.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GSlider_setMinorTickSpacing extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint value = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GSlider) {\n\t\t\t((GSlider) localGObject).setMinorTickSpacing(value);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GSlider_setPaintLabels.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GSlider_setPaintLabels extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tboolean value = nextBoolean(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GSlider) {\n\t\t\t((GSlider) localGObject).setPaintLabels(value);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GSlider_setPaintTicks.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GSlider_setPaintTicks extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tboolean value = nextBoolean(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GSlider) {\n\t\t\t((GSlider) localGObject).setPaintTicks(value);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GSlider_setSnapToTicks.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GSlider_setSnapToTicks extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tboolean value = nextBoolean(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GSlider) {\n\t\t\t((GSlider) localGObject).setSnapToTicks(value);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTable.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2016/11/29\n * - changed arrow key behavior when editing a cell (won't exit)\n * @version 2016/11/26\n * - added autofitColumnWidths\n * - added per-cell formatting: set Cell/Column/Row Alignment/Background/Font/Foreground\n * - added GTableListener support\n * @version 2016/11/24\n * - added cut/copy/paste functionality\n * @version 2016/11/20\n * - added row and column header cells in numeric and Excel styles\n * @version 2016/11/16\n * - added table cell edit begin event\n * @version 2015/12/01\n * - added setEventEnabled / isEventEnabled / ListSelectionListener\n * - added isEditable, setEditable, JTableModel\n * @version 2015/11/11\n * - added select, getSelectedRow/Column, inBounds\n * @since 2015/11/07\n */\n\npackage stanford.spl;\n\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.util.*;\nimport javax.swing.*;\nimport javax.swing.border.Border;\nimport javax.swing.event.*;\nimport javax.swing.plaf.UIResource;\nimport javax.swing.table.*;\nimport stanford.cs106.gui.*;\n\npublic class GTable extends GInteractor {\n\tprivate static final long serialVersionUID = 1L;\n\t\n\t// default width of a column in pixels\n\tprivate static final int COLUMN_WIDTH_DEFAULT = 90;\n\t\n\t// max/min widths during column autofit process\n\tprivate static final int COLUMN_WIDTH_MIN = 30;\n\tprivate static final int COLUMN_WIDTH_MAX = 500;\n\tprivate static final int COLUMN_WIDTH_PADDING = 5;\n\t\n\t// these MUST match the constants in C++ lib gevents.h\n\t// NOTE: if you add event types, you may want to enable them below in the eventTypesEnabled set\n\tpublic static final int TABLE_EVENT\t= 0x400;\n\tpublic static final int TABLE_UPDATED  = TABLE_EVENT + 1;\n\tpublic static final int TABLE_SELECTED = TABLE_EVENT + 2;\n\tpublic static final int TABLE_EDIT_BEGIN = TABLE_EVENT + 3;\n\tpublic static final int TABLE_REPLACE_BEGIN = TABLE_EVENT + 4;\n\tpublic static final int TABLE_CUT = TABLE_EVENT + 5;\n\tpublic static final int TABLE_COPY = TABLE_EVENT + 6;\n\tpublic static final int TABLE_PASTE = TABLE_EVENT + 7;\n\t\n\t// these MUST match the enum constants in C++ lib gtable.h\n\tpublic static final int COLUMN_HEADER_NONE = 0;\n\tpublic static final int COLUMN_HEADER_EXCEL = 1;\n\tpublic static final int COLUMN_HEADER_NUMERIC = 2;\n\t\n\t// set true to exit cell editor when L/R arrow key pressed (default false)\n\tprivate static /* final */ boolean EXIT_CELL_EDITOR_ON_ARROW_KEY = false;\n\t\n\t/**\n\t * Settings for Java look-and-feel related to tables.\n\t */\n\tpublic static void setSystemLookAndFeelProperties() {\n\t\tUIManager.put(\"Table.disabled\", false);\n\t\tUIManager.put(\"Table.gridColor\", new Color(204, 207, 213));\n\t\tUIManager.put(\"Table.intercellSpacing\", new Dimension(1, 1));\n\t\tUIManager.put(\"Table.showGrid\", true);\n\t}\n\t\n\t// private JScrollPane scrollPane;\n\tprivate JTable table;\n\tprivate GTableModel model;\n\tprivate JavaBackEnd jbe;\n\tprivate Set<Integer> eventTypesEnabled = new HashSet<Integer>(Arrays.asList(\n\t\t\tTABLE_COPY,\n\t\t\tTABLE_CUT,\n\t\t\tTABLE_EDIT_BEGIN,\n\t\t\tTABLE_PASTE,\n\t\t\tTABLE_REPLACE_BEGIN,\n\t\t\tTABLE_SELECTED,\n\t\t\tTABLE_UPDATED\n\t));\n\tprivate GTableCellEditor cellEditor;\n\tprivate boolean eventsEnabled = true;\n\tprivate boolean editable = true;\n\tprivate boolean rowColumnHeadersVisible = false;\n\tprivate int columnHeaderStyle = COLUMN_HEADER_NONE;\n\tprivate int previouslySelectedRow = -1;\n\tprivate int previouslySelectedColumn = -1;\n\tprivate Font tableFont;\n\tprivate int horizontalAlignment = SwingConstants.LEFT;\n\tprivate CellFormattingInfo[][] cellFormats;\n\tprivate CellFormattingInfo[] rowFormats;\n\tprivate CellFormattingInfo[] colFormats;\n\t\n\t// default formatting properties on a table cell\n\tprivate CellFormattingInfo DEFAULT_CELL_FORMAT;\n\t\n\tprivate Set<GTableListener> listeners = new LinkedHashSet<GTableListener>();\n\t\n\t// TODO: row/col header formats\n\n\tpublic GTable() {\n\t\tthis(0, 0);\n\t}\n\t\n\tpublic GTable(int numRows, int numCols) {\n\t\tsuper(new JScrollPane(new JTable(numRows, numCols)));\n\t\tJScrollPane scrollPane = (JScrollPane) super.getInteractor();\n\t\ttable = GuiUtils.getDescendent(scrollPane, JTable.class);\n\t\t\n\t\tcheckDimensions(\"constructor\", numRows, numCols);\n\t\tmodel = new GTableModel(numRows, numCols);\n\t\ttable.setModel(model);\n\t\ttable.setBorder(BorderFactory.createLineBorder(Color.GRAY, /* thickness */ 1));\n\t\t// table.setFillsViewportHeight(true);\n\t\ttable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\n\t\ttable.setRowSelectionAllowed(false);\n\t\ttable.setColumnSelectionAllowed(false);\n\t\ttable.setCellSelectionEnabled(true);\n\t\ttable.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);\n\t\t// table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);\n\t\t\n\t\tGTableCellRenderer tableCellRenderer = new GTableCellRenderer();\n\t\ttable.setDefaultRenderer(Character.class, tableCellRenderer);\n\t\ttable.setDefaultRenderer(Character.TYPE, tableCellRenderer);\n\t\ttable.setDefaultRenderer(Double.class, tableCellRenderer);\n\t\ttable.setDefaultRenderer(Double.TYPE, tableCellRenderer);\n\t\ttable.setDefaultRenderer(Integer.class, tableCellRenderer);\n\t\ttable.setDefaultRenderer(Integer.TYPE, tableCellRenderer);\n\t\ttable.setDefaultRenderer(Number.class, tableCellRenderer);\n\t\ttable.setDefaultRenderer(Object.class, tableCellRenderer);\n\t\ttable.setDefaultRenderer(String.class, tableCellRenderer);\n\t\ttableFont = table.getFont();\n\t\t\n\t\tcellFormats = new CellFormattingInfo[numRows][numCols];\n\t\trowFormats = new CellFormattingInfo[numRows];\n\t\tcolFormats = new CellFormattingInfo[numCols];\n\t\t\n\t\tTableModelListener tmListener = new GTableModelListener();\n\t\tmodel = (GTableModel) table.getModel();\n\t\tmodel.addTableModelListener(tmListener);\n\t\t\n\t\tListSelectionListener lslListener = new GTableListSelectionListener();\n\t\ttable.getSelectionModel().addListSelectionListener(lslListener);\n\t\ttable.getColumnModel().getSelectionModel().addListSelectionListener(lslListener);\n\t\t\n\t\ttable.addKeyListener(new GTableKeyListener());\n\t\t\n\t\t// make cut/copy/paste work (whyyyy do I have to write this myself?!)\n\t\tActionListener alistener = new GTableActionListener();\n\t\ttable.registerKeyboardAction(alistener, \"Copy\", KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK, /* onRelease */ false), JComponent.WHEN_FOCUSED);\n\t\ttable.registerKeyboardAction(alistener, \"Copy\", KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.META_MASK, /* onRelease */ false), JComponent.WHEN_FOCUSED);\n\t\ttable.registerKeyboardAction(alistener, \"Copy\", KeyStroke.getKeyStroke(KeyEvent.VK_INSERT, ActionEvent.CTRL_MASK, /* onRelease */ false), JComponent.WHEN_FOCUSED);\n\t\ttable.registerKeyboardAction(alistener, \"Cut\", KeyStroke.getKeyStroke(KeyEvent.VK_X, ActionEvent.CTRL_MASK, /* onRelease */ false), JComponent.WHEN_FOCUSED);\n\t\ttable.registerKeyboardAction(alistener, \"Cut\", KeyStroke.getKeyStroke(KeyEvent.VK_X, ActionEvent.META_MASK, /* onRelease */ false), JComponent.WHEN_FOCUSED);\n\t\ttable.registerKeyboardAction(alistener, \"Cut\", KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, ActionEvent.SHIFT_MASK, /* onRelease */ false), JComponent.WHEN_FOCUSED);\n\t\ttable.registerKeyboardAction(alistener, \"Paste\", KeyStroke.getKeyStroke(KeyEvent.VK_V, ActionEvent.CTRL_MASK, /* onRelease */ false), JComponent.WHEN_FOCUSED);\n\t\ttable.registerKeyboardAction(alistener, \"Paste\", KeyStroke.getKeyStroke(KeyEvent.VK_V, ActionEvent.META_MASK, /* onRelease */ false), JComponent.WHEN_FOCUSED);\n\t\ttable.registerKeyboardAction(alistener, \"Paste\", KeyStroke.getKeyStroke(KeyEvent.VK_INSERT, ActionEvent.SHIFT_MASK, /* onRelease */ false), JComponent.WHEN_FOCUSED);\n\t\t\n\t\tsetDefaultColumnWidth(COLUMN_WIDTH_DEFAULT);\n\t\t\n\t\tcellEditor = new GTableCellEditor();\n\t\t// table.setDefaultEditor(Boolean.TYPE, cellEditor);\n\t\t// table.setDefaultEditor(Boolean.class, cellEditor);\n\t\ttable.setDefaultEditor(Character.TYPE, cellEditor);\n\t\ttable.setDefaultEditor(Character.class, cellEditor);\n\t\ttable.setDefaultEditor(Double.TYPE, cellEditor);\n\t\ttable.setDefaultEditor(Double.class, cellEditor);\n\t\ttable.setDefaultEditor(Integer.TYPE, cellEditor);\n\t\ttable.setDefaultEditor(Integer.class, cellEditor);\n\t\ttable.setDefaultEditor(Number.class, cellEditor);\n\t\ttable.setDefaultEditor(Object.class, cellEditor);\n\t\ttable.setDefaultEditor(String.class, cellEditor);\n\t\t\n\t\tCellEditorListener ceListener = new GTableCellEditorListener();\n\t\ttable.getCellEditor(0, 0).addCellEditorListener(ceListener);\n\t}\n\t\n\tpublic void addGTableListener(GTableListener listener) {\n\t\tthis.listeners.add(listener);\n\t}\n\t\n\tpublic synchronized void autofitColumnWidths() {\n\t\ttable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);\n\t\tint numRows = table.getRowCount();\n\t\tint numCols = table.getColumnCount();\n\t\tfor (int col = 0; col < numCols; col++) {\n\t\t\tTableColumn tableColumn = table.getColumnModel().getColumn(col);\n\t\t\tint preferredWidth = Math.max(COLUMN_WIDTH_MIN, tableColumn.getMinWidth());\n\t\t\tint maxWidth = Math.min(COLUMN_WIDTH_MAX, tableColumn.getMaxWidth());\n\t\t\tfor (int row = 0; row < numRows; row++) {\n\t\t\t\tTableCellRenderer cellRenderer = table.getCellRenderer(row, col);\n\t\t\t\tComponent comp = table.prepareRenderer(cellRenderer, row, col);\n\t\t\t\tint width = comp.getPreferredSize().width + COLUMN_WIDTH_PADDING + table.getIntercellSpacing().width;\n\t\t\t\tpreferredWidth = Math.max(preferredWidth, width);\n\t\t\t\tif (preferredWidth >= maxWidth) {\n\t\t\t\t\t// we've exceeded the maximum width, no need to check other rows\n\t\t\t\t\tpreferredWidth = maxWidth;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttableColumn.setPreferredWidth(preferredWidth);\n\t\t}\n\t\ttable.repaint();\n\t}\n\t\n\tpublic synchronized void clear() {\n\t\teventsEnabled = false;\n\t\tfor (int row = 0; row < table.getRowCount(); row++) {\n\t\t\tfor (int col = 0; col < table.getColumnCount(); col++) {\n\t\t\t\ttable.setValueAt(\"\", row, col);\n\t\t\t}\n\t\t}\n\t\tpreviouslySelectedRow = -1;\n\t\tpreviouslySelectedColumn = -1;\n\t\tclearFormatting();\n\t\teventsEnabled = true;\n\t}\n\t\n\tpublic synchronized void clearFormatting() {\n\t\tfor (int row = 0; row < table.getRowCount(); row++) {\n\t\t\tfor (int col = 0; col < table.getColumnCount(); col++) {\n\t\t\t\tcellFormats[row][col] = null;\n\t\t\t}\n\t\t}\n\t\tfor (int row = 0; row < table.getRowCount(); row++) {\n\t\t\trowFormats[row] = null;\n\t\t}\n\t\tfor (int col = 0; col < table.getColumnCount(); col++) {\n\t\t\tcolFormats[col] = null;\n\t\t}\n\t\ttable.repaint();\n\t}\n\t\n\tpublic void clearGTableListeners() {\n\t\tthis.listeners.clear();\n\t}\n\t\n\tpublic synchronized String get(int row, int column) {\n\t\tcheckIndex(\"get\", row, column);\n\t\tObject value = table.getValueAt(row, column);\n\t\tif (value == null) {\n\t\t\tvalue = \"\";\n\t\t}\n\t\treturn String.valueOf(value);\n\t}\n\t\n\tpublic int getColumnHeaderStyle() {\n\t\treturn columnHeaderStyle;\n\t}\n\t\n\tpublic synchronized int getColumnWidth(int col) {\n\t\tcheckIndex(\"getColumnWidth\", /* row (hack) */ 0, col);\n\t\tTableColumn column = table.getColumnModel().getColumn(col);\n\t\treturn column.getWidth();\n\t}\n\t\n\tpublic synchronized Font getFont() {\n\t\treturn table.getFont();\n\t}\n\t\n//\t@Override\n//\tpublic JTable getInteractor() {\n//\t\treturn table;\n//\t}\n\t\n\tpublic synchronized int getSelectedColumn() {\n\t\treturn table.getSelectedColumn();\n\t}\n\t\n\tpublic synchronized int getSelectedRow() {\n\t\treturn table.getSelectedRow();\n\t}\n\t\n\tpublic boolean inBounds(int row, int column) {\n\t\treturn row >= 0 && row < numRows() && column >= 0 && column < numCols();\n\t}\n\t\n\tpublic synchronized boolean isEventEnabled(int type) {\n\t\treturn eventTypesEnabled.contains(type);\n\t}\n\n\tprivate void notifyBackEndOfEvent(int eventType) {\n\t\tint row = table.getSelectedRow();\n\t\tint col = table.getSelectedColumn();\n\t\tif (inBounds(row, col)) {\n\t\t\tnotifyBackEndOfEvent(eventType, row, col);\n\t\t}\n\t}\n\t\n\tprivate void notifyBackEndOfEvent(int eventType, int row, int col) {\n\t\tString eventStr = \n\t\t\t\t  eventType == TABLE_COPY ? \"tableCopy\"\n\t\t\t\t: eventType == TABLE_CUT ? \"tableCut\"\n\t\t\t\t: eventType == TABLE_EDIT_BEGIN ? \"tableEditBegin\"\n\t\t\t\t: eventType == TABLE_PASTE ? \"tablePaste\"\n\t\t\t\t: eventType == TABLE_REPLACE_BEGIN ? \"tableReplaceBegin\"\n\t\t\t\t: eventType == TABLE_SELECTED ? \"tableSelected\"\n\t\t\t\t: eventType == TABLE_UPDATED ? \"tableUpdated\"\n\t\t\t\t: \"unknown\";\n\t\tString value = inBounds(row, col) ? get(row, col) : \"\";\n\t\t\n\t\t// notify all GTableListeners about this event\n\t\tfor (GTableListener listener : this.listeners) {\n\t\t\tGTableEvent event = new GTableEvent(this, row, col, value);\n\t\t\tif (eventType == TABLE_COPY) {\n\t\t\t\tlistener.tableCopy(event);\n\t\t\t} else if (eventType == TABLE_CUT) {\n\t\t\t\tlistener.tableCut(event);\n\t\t\t} else if (eventType == TABLE_EDIT_BEGIN) {\n\t\t\t\tlistener.tableEditBegin(event);\n\t\t\t} else if (eventType == TABLE_PASTE) {\n\t\t\t\tlistener.tablePaste(event);\n\t\t\t} else if (eventType == TABLE_REPLACE_BEGIN) {\n\t\t\t\tlistener.tableReplaceBegin(event);\n\t\t\t} else if (eventType == TABLE_SELECTED) {\n\t\t\t\tlistener.tableSelected(event);\n\t\t\t} else if (eventType == TABLE_UPDATED) {\n\t\t\t\tlistener.tableUpdated(event);\n\t\t\t}\n\t\t}\n\t\t\n\t\t// notify C++ program (if any) about this event\n\t\tif (jbe != null && eventsEnabled && eventTypesEnabled.contains(eventType)) {\n\t\t\tsynchronized (this) {\n\t\t\t\tif (eventType == TABLE_UPDATED) {\n\t\t\t\t\tjbe.acknowledgeEvent(\"event:%s(\\\"%s\\\", %d, %d, %d, \\\"%s\\\")\",\n\t\t\t\t\t\t\teventStr,\n\t\t\t\t\t\t\tjbe.getSourceId(getInteractor()),\n\t\t\t\t\t\t\t(long) jbe.getEventTime(),\n\t\t\t\t\t\t\trow, col,\n\t\t\t\t\t\t\tSplPipeDecoder.encode(value));\n\t\t\t\t} else {\n\t\t\t\t\tjbe.acknowledgeEvent(\"event:%s(\\\"%s\\\", %d, %d, %d)\",\n\t\t\t\t\t\t\teventStr,\n\t\t\t\t\t\t\tjbe.getSourceId(getInteractor()),\n\t\t\t\t\t\t\t(long) jbe.getEventTime(),\n\t\t\t\t\t\t\trow, col);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic int numCols() {\n\t\treturn table.getColumnCount();\n\t}\n\t\n\tpublic int numRows() {\n\t\treturn table.getRowCount();\n\t}\n\t\n\tpublic void removeGTableListener(GTableListener listener) {\n\t\tthis.listeners.remove(listener);\n\t}\n\t\n\t@Override\n\tpublic void requestFocus() {\n\t\tsuper.requestFocus();\n\t\ttable.requestFocus();\n\t}\n\t\n\tpublic synchronized void resize(int numRows, int numCols) {\n\t\tcheckDimensions(\"resize\", numRows, numCols);\n\t\teventsEnabled = false;\n\t\t\n\t\t// copy over cell formatting information\n\t\tCellFormattingInfo[][] cellFormats2 = new CellFormattingInfo[numRows][numCols];\n\t\tfor (int row = 0, maxRow = Math.min(numRows, model.getRowCount()); row < maxRow; row++) {\n\t\t\tfor (int col = 0, maxCol = Math.min(numCols, model.getColumnCount()); col < maxCol; col++) {\n\t\t\t\tcellFormats2[row][col] = cellFormats[row][col];\n\t\t\t}\n\t\t}\n\t\tCellFormattingInfo[] rowFormats2 = new CellFormattingInfo[numRows];\n\t\tfor (int row = 0, maxRow = Math.min(numRows, model.getRowCount()); row < maxRow; row++) {\n\t\t\trowFormats2[row] = rowFormats[row];\n\t\t}\n\t\tCellFormattingInfo[] colFormats2 = new CellFormattingInfo[numCols];\n\t\tfor (int col = 0, maxCol = Math.min(numCols, model.getColumnCount()); col < maxCol; col++) {\n\t\t\tcolFormats2[col] = colFormats[col];\n\t\t}\n\t\tcellFormats = cellFormats2;\n\t\trowFormats = rowFormats2;\n\t\tcolFormats = colFormats2;\n\t\t\n\t\t// resize actual table model\n\t\tmodel.setRowCount(numRows);\n\t\tmodel.setColumnCount(numCols);\n\t\teventsEnabled = true;\n\t\t\n\t\tpreviouslySelectedRow = -1;\n\t\tpreviouslySelectedColumn = -1;\n\t}\n\t\n\tpublic boolean rowColumnHeadersVisible() {\n\t\treturn rowColumnHeadersVisible;\n\t}\n\t\n\tpublic synchronized void select(int row, int column) {\n\t\tif (inBounds(row, column)) {\n\t\t\t// previouslySelectedRow = getSelectedRow();\n\t\t\t// previouslySelectedColumn = getSelectedColumn();\n\t\t\ttable.setRowSelectionInterval(row, row);\n\t\t\ttable.setColumnSelectionInterval(column, column);\n\t\t} else {\n\t\t\tpreviouslySelectedRow = -1;\n\t\t\tpreviouslySelectedColumn = -1;\n\t\t\ttable.clearSelection();\n\t\t}\n\t}\n\t\n\tpublic synchronized void set(int row, int column, String value) {\n\t\tset(row, column, value, /* notifyBackEnd */ true);\n\t}\n\t\n\tpublic synchronized void set(int row, int column, String value, boolean notifyBackEnd) {\n\t\tcheckIndex(\"set\", row, column);\n\t\tif (value == null) {\n\t\t\tvalue = \"\";\n\t\t}\n\t\teventsEnabled = false;\n\t\ttable.setValueAt(value, row, column);\n\t\teventsEnabled = true;\n\t\tif (notifyBackEnd) {\n\t\t\tnotifyBackEndOfEvent(TABLE_UPDATED, row, column);\n\t\t}\n\t}\n\t\n\tpublic synchronized void setBackground(Color color) {\n\t\ttable.setBackground(color);\n\t\tif (DEFAULT_CELL_FORMAT != null) {\n\t\t\tDEFAULT_CELL_FORMAT.backgroundColor = color;\n\t\t}\n\t\ttable.repaint();\n\t}\n\t\n\tpublic synchronized void setCellAlignment(int row, int column, int alignment) {\n\t\tif (!inBounds(row, column)) {\n\t\t\treturn;\n\t\t}\n\t\tif (cellFormats[row][column] == null) {\n\t\t\tcellFormats[row][column] = new CellFormattingInfo();\n\t\t}\n\t\tcellFormats[row][column].alignment = alignment;\n\t\ttable.repaint();\n\t}\n\t\n\tpublic synchronized void setCellBackground(int row, int column, Color color) {\n\t\tif (!inBounds(row, column)) {\n\t\t\treturn;\n\t\t}\n\t\tif (cellFormats[row][column] == null) {\n\t\t\tcellFormats[row][column] = new CellFormattingInfo();\n\t\t}\n\t\tcellFormats[row][column].backgroundColor = color;\n\t\ttable.repaint();\n\t}\n\t\n\tpublic synchronized void setCellColor(int row, int column, Color color) {\n\t\tif (!inBounds(row, column)) {\n\t\t\treturn;\n\t\t}\n\t\tif (cellFormats[row][column] == null) {\n\t\t\tcellFormats[row][column] = new CellFormattingInfo();\n\t\t}\n\t\tcellFormats[row][column].foregroundColor = color;\n\t\ttable.repaint();\n\t}\n\t\n\tpublic synchronized void setCellFont(int row, int column, Font font) {\n\t\tif (!inBounds(row, column)) {\n\t\t\treturn;\n\t\t}\n\t\tif (cellFormats[row][column] == null) {\n\t\t\tcellFormats[row][column] = new CellFormattingInfo();\n\t\t}\n\t\tcellFormats[row][column].font = font;\n\t\ttable.repaint();\n\t}\n\t\n\tpublic synchronized void setCellForeground(int row, int column, Color color) {\n\t\tsetCellColor(row, column, color);\n\t}\n\t\n\tpublic synchronized void setColor(Color color) {\n\t\ttable.setForeground(color);\n\t\ttable.repaint();\n\t}\n\t\n\tpublic synchronized void setColumnAlignment(int column, int alignment) {\n\t\tif (!inBounds(/* row */ 0, column)) {\n\t\t\treturn;\n\t\t}\n\t\tif (colFormats[column] == null) {\n\t\t\tcolFormats[column] = new CellFormattingInfo();\n\t\t}\n\t\tcolFormats[column].alignment = alignment;\n\t\ttable.repaint();\n\t}\n\t\n\tpublic synchronized void setColumnBackground(int column, Color color) {\n\t\tif (!inBounds(/* row */ 0, column)) {\n\t\t\treturn;\n\t\t}\n\t\tif (colFormats[column] == null) {\n\t\t\tcolFormats[column] = new CellFormattingInfo();\n\t\t}\n\t\tcolFormats[column].backgroundColor = color;\n\t\ttable.repaint();\n\t}\n\t\n\tpublic synchronized void setColumnColor(int column, Color color) {\n\t\tsetColumnForeground(column, color);\n\t}\n\t\n\tpublic synchronized void setColumnFont(int column, Font font) {\n\t\tif (!inBounds(/* row */ 0, column)) {\n\t\t\treturn;\n\t\t}\n\t\tif (colFormats[column] == null) {\n\t\t\tcolFormats[column] = new CellFormattingInfo();\n\t\t}\n\t\tcolFormats[column].font = font;\n\t\ttable.repaint();\n\t}\n\t\n\tpublic synchronized void setColumnForeground(int column, Color color) {\n\t\tif (!inBounds(/* row */ 0, column)) {\n\t\t\treturn;\n\t\t}\n\t\tif (colFormats[column] == null) {\n\t\t\tcolFormats[column] = new CellFormattingInfo();\n\t\t}\n\t\tcolFormats[column].foregroundColor = color;\n\t\ttable.repaint();\n\t}\n\t\n\tpublic synchronized void setColumnHeaderStyle(int style) {\n\t\tcolumnHeaderStyle = style;\n\t\tif (rowColumnHeadersVisible) {\n\t\t\tif (style == COLUMN_HEADER_NONE) {\n\t\t\t\tsetColumnHeadersVisible(false);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tpublic synchronized void setColumnHeadersVisible(boolean visible) {\n\t\tint numCols = numCols();\n\t\tif (visible) {\n\t\t\tif (columnHeaderStyle == COLUMN_HEADER_NONE) {\n\t\t\t\tcolumnHeaderStyle = COLUMN_HEADER_NUMERIC;\n\t\t\t}\n\t\t\t\n\t\t\tObject[] columnHeaders = new Object[numCols];\n\t\t\tfor (int i = 0; i < numCols; i++) {\n\t\t\t\tcolumnHeaders[i] = columnHeaderStyle == COLUMN_HEADER_NUMERIC\n\t\t\t\t\t\t? String.valueOf(i + 1) : toExcelStyleColumnName(i);\n\t\t\t}\n\t\t\tmodel.setColumnIdentifiers(columnHeaders);\n\t\t\t\n\t\t\tFont font = table.getTableHeader().getFont();\n\t\t\ttable.getTableHeader().setFont(font.deriveFont(Font.BOLD));\n\t\t} else {\n\t\t\tObject[] columnHeaders = new Object[numCols];\n\t\t\tfor (int i = 0; i < numCols; i++) {\n\t\t\t\tcolumnHeaders[i] = \"\";\n\t\t\t}\n\t\t\tmodel.setColumnIdentifiers(columnHeaders);\n\t\t}\n\t}\n\t\n\tpublic synchronized void setColumnWidth(int col, int width) {\n\t\tcheckIndex(\"setColumnWidth\", /* row (hack) */ 0, col);\n\t\tif (width < 0) {\n\t\t\tthrow new IllegalArgumentException(\"GTable.setColumnWidth: width cannot be negative\");\n\t\t}\n\t\tTableColumn column = table.getColumnModel().getColumn(col);\n\t\tcolumn.setPreferredWidth(width);\n\t\tcolumn.setWidth(width);\n\t\ttable.validate();\n\t\ttable.repaint();\n\t}\n\t\n\tpublic synchronized void setDefaultColumnWidth(int width) {\n\t\tif (width < 0) {\n\t\t\tthrow new IllegalArgumentException(\"GTable.setDefaultColumnWidth: width cannot be negative\");\n\t\t}\n\t\tint numCols = table.getColumnCount();\n\t\tfor (int col = 0; col < numCols; col++) {\n\t\t\tTableColumn column = table.getColumnModel().getColumn(col);\n\t\t\tif (column != null) {\n\t\t\t\tcolumn.setPreferredWidth(width);\n\t\t\t\tcolumn.setWidth(width);\n\t\t\t}\n\t\t}\n\t\ttable.validate();\n\t\ttable.repaint();\n\t}\n\t\n\tpublic synchronized void setEditable(boolean editable) {\n\t\tthis.editable = editable;\n\t}\n\t\n\tpublic synchronized void setEditable(int row, int column, boolean editable) {\n\t\tcheckIndex(\"setEditable\", row, column);\n\t\tthis.editable = editable;\n\t}\n\t\n\tpublic synchronized void setEditorValue(int row, int column, String value) {\n\t\tcheckIndex(\"setEditorValue\", row, column);\n\t\tif (cellEditor == null || !cellEditor.isEditing()) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif (value == null) {\n\t\t\tvalue = \"\";\n\t\t}\n\t\teventsEnabled = false;\n\t\tcellEditor.setEditorValue(value);\n\t\teventsEnabled = true;\n\t}\n\t\n\tpublic synchronized void setEventEnabled(int eventType, boolean enabled) {\n\t\tif (eventType != TABLE_COPY\n\t\t\t\t&& eventType != TABLE_CUT\n\t\t\t\t&& eventType != TABLE_PASTE\n\t\t\t\t&& eventType != TABLE_EDIT_BEGIN\n\t\t\t\t&& eventType != TABLE_REPLACE_BEGIN\n\t\t\t\t&& eventType != TABLE_SELECTED\n\t\t\t\t&& eventType != TABLE_UPDATED) {\n\t\t\tthrow new IllegalArgumentException(\"GTable.setEventEnabled: bad event type: 0x\" + Integer.toHexString(eventType));\n\t\t}\n\t\tif (enabled) {\n\t\t\teventTypesEnabled.add(eventType);\n\t\t} else {\n\t\t\teventTypesEnabled.remove(eventType);\n\t\t}\n\t}\n\t\n\tpublic synchronized void setFont(Font font) {\n\t\ttable.setFont(font);\n\t\tif (DEFAULT_CELL_FORMAT != null) {\n\t\t\tDEFAULT_CELL_FORMAT.font = font;\n\t\t}\n\t}\n\t\n\tpublic synchronized void setForeground(Color color) {\n\t\ttable.setForeground(color);\n\t\tif (DEFAULT_CELL_FORMAT != null) {\n\t\t\tDEFAULT_CELL_FORMAT.foregroundColor = color;\n\t\t}\n\t\ttable.repaint();\n\t}\n\t\n\tpublic synchronized void setHorizontalAlignment(int alignment) {\n\t\tthis.horizontalAlignment = alignment;\n\t\tfor (int row = 0; row < numRows(); row++) {\n\t\t\tfor (int col = 0; col < numCols(); col++) {\n\t\t\t\tDefaultTableCellRenderer renderer = (DefaultTableCellRenderer) table.getCellRenderer(row, col);\n\t\t\t\trenderer.setHorizontalAlignment(alignment);\n\t\t\t}\n\t\t}\n//\t\tDefaultTableCellRenderer renderer = (DefaultTableCellRenderer) table.getCellRenderer(0, 0);\n//\t\trenderer.setHorizontalAlignment(alignment);\n//\t\ttable.validate();\n\t\tif (DEFAULT_CELL_FORMAT != null) {\n\t\t\tDEFAULT_CELL_FORMAT.alignment = alignment;\n\t\t}\n\t\ttable.repaint();\n\t}\n\t\n\tpublic synchronized void setJavaBackEnd(JavaBackEnd jbe) {\n\t\tthis.jbe = jbe;\n\t}\n\t\n\tpublic synchronized void setRowAlignment(int row, int alignment) {\n\t\tif (!inBounds(row, /* column */ 0)) {\n\t\t\treturn;\n\t\t}\n\t\tif (rowFormats[row] == null) {\n\t\t\trowFormats[row] = new CellFormattingInfo();\n\t\t}\n\t\trowFormats[row].alignment = alignment;\n\t\ttable.repaint();\n\t}\n\t\n\tpublic synchronized void setRowBackground(int row, Color color) {\n\t\tif (!inBounds(row, /* column */ 0)) {\n\t\t\treturn;\n\t\t}\n\t\tif (rowFormats[row] == null) {\n\t\t\trowFormats[row] = new CellFormattingInfo();\n\t\t}\n\t\trowFormats[row].backgroundColor = color;\n\t\ttable.repaint();\n\t}\n\t\n\tpublic synchronized void setRowColor(int row, Color color) {\n\t\tsetRowForeground(row, color);\n\t}\n\t\n\tpublic synchronized void setRowColumnHeadersVisible(boolean visible) {\n\t\tthis.rowColumnHeadersVisible = visible;\n\t\tsetColumnHeadersVisible(visible);\n\t\tsetRowHeadersVisible(visible);\n\t}\n\t\n\tpublic synchronized void setRowFont(int row, Font font) {\n\t\tif (!inBounds(row, /* column */ 0)) {\n\t\t\treturn;\n\t\t}\n\t\tif (rowFormats[row] == null) {\n\t\t\trowFormats[row] = new CellFormattingInfo();\n\t\t}\n\t\trowFormats[row].font = font;\n\t\ttable.repaint();\n\t}\n\t\n\tpublic synchronized void setRowForeground(int row, Color color) {\n\t\tif (!inBounds(row, /* column */ 0)) {\n\t\t\treturn;\n\t\t}\n\t\tif (rowFormats[row] == null) {\n\t\t\trowFormats[row] = new CellFormattingInfo();\n\t\t}\n\t\trowFormats[row].foregroundColor = color;\n\t\ttable.repaint();\n\t}\n\t\n\tpublic synchronized void setRowHeadersVisible(boolean visible) {\n\t\tif (visible) {\n\t\t\tGTableRowUtilities.addNumberColumn(table, /* startingNumber */ 1, /* isRowSelectable */ false);\n\t\t} else {\n\t\t\t// TODO\n\t\t}\n\t}\n\t\n\t/**\n\t * Returns an Excel-style column name, such as \"A\" for 0, \"B\" for 1, ..., \"Z\", \"AA\", \"AB\", etc.\n\t * @param columnNumber 0-based column number\n\t */\n\tpublic static String toExcelStyleColumnName(int columnNumber) {\n\t\tcolumnNumber++;   // 1-based\n\t\tString result = \"\";\n\t\twhile (columnNumber > 0) {\n\t\t\tint lastDigit = (columnNumber - 1) % 26;\n\t\t\tcolumnNumber = (columnNumber - lastDigit) / 26;\n\t\t\tresult = (char) ('A' + lastDigit) + result;\n\t\t}\n\t\treturn result;\n\t}\n\t\n\tprivate void checkDimensions(String member, int numRows, int numCols) {\n\t\tif (numRows < 0 || numCols < 0) {\n\t\t\tthrow new IllegalArgumentException(\"GTable.\" + member + \": dimensions \" + numRows + \"x\" + numCols\n\t\t\t\t\t+ \" cannot be negative\");\n\t\t}\n\t}\n\t\n\tprivate void checkIndex(String member, int row, int column) {\n\t\tif (!inBounds(row, column)) {\n\t\t\tthrow new IndexOutOfBoundsException(\"GTable.\" + member + \": index R\" + row + \"C\" + column\n\t\t\t\t\t+ \" is out of bounds of 0,0 - \" + (numRows() - 1) + \",\" + (numCols() - 1));\n\t\t}\n\t}\n\t\n\tprivate void clipboardCopy() {\n\t\tint row = table.getSelectedRow();\n\t\tint col = table.getSelectedColumn();\n\t\tif (!inBounds(row, col)) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tString value = get(row, col);\n\t\tif (!value.isEmpty()) {\n\t\t\tClipboardUtils.copy(value);\n\t\t\tnotifyBackEndOfEvent(TABLE_COPY, row, col);\n\t\t}\n\t}\n\t\n\tprivate void clipboardCut() {\n\t\tint row = table.getSelectedRow();\n\t\tint col = table.getSelectedColumn();\n\t\tif (!inBounds(row, col)) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tString value = get(row, col);\n\t\tif (!value.isEmpty()) {\n\t\t\tClipboardUtils.copy(value);\n\t\t\tset(row, col, \"\");   // only change from clipboardCopy(); notifies back-end\n\t\t\tnotifyBackEndOfEvent(TABLE_CUT, row, col);\n\t\t}\n\t}\n\t\n\tprivate void clipboardPaste() {\n\t\tint row = table.getSelectedRow();\n\t\tint col = table.getSelectedColumn();\n\t\tif (!inBounds(row, col)) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif (!ClipboardUtils.isEmpty()) {\n\t\t\tString clip = ClipboardUtils.get();\n\t\t\tset(row, col, clip);   // notifies back-end\n\t\t\tnotifyBackEndOfEvent(TABLE_PASTE, row, col);\n\t\t}\n\t}\n\t\n//\tprivate class ActionEditReplace extends AbstractAction {\n//\t\tpublic void actionPerformed(ActionEvent event) {\n//\t\t\tint row = table.getSelectedRow();\n//\t\t\tint col = table.getSelectedColumn();\n//\t\t\tif (inBounds(row, col)) {\n//\t\t\t\ttable.editCellAt(row, col);\n//\t\t\t\ttable.getCellEditor(row, col);\n//\t\t\t}\n//\t\t}\n//\t}\n\t\n\t/* Represents all of the various formats that can be set on a cell (colors, fonts, alignment). */\n\tprivate class CellFormattingInfo {\n\t\tprivate int alignment = -1;\n\t\tprivate Font font;\n\t\tprivate Color foregroundColor;\n\t\tprivate Color backgroundColor;\n\t\t\n\t\tpublic void apply(DefaultTableCellRenderer renderer, Component comp) {\n\t\t\tif (comp == null) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (alignment >= 0) {\n\t\t\t\tif (comp instanceof JComponent) {\n\t\t\t\t\tJComponent jcomp = (JComponent) comp;\n\t\t\t\t\tif (alignment == SwingConstants.LEFT) {\n\t\t\t\t\t\tjcomp.setAlignmentX(0.0f);\n\t\t\t\t\t} else if (alignment == SwingConstants.CENTER) {\n\t\t\t\t\t\tjcomp.setAlignmentX(0.5f);\n\t\t\t\t\t} else if (alignment == SwingConstants.RIGHT) {\n\t\t\t\t\t\tjcomp.setAlignmentX(1.0f);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (renderer != null) {\n\t\t\t\t\trenderer.setHorizontalAlignment(alignment);\n\t\t\t\t\trenderer.setVerticalAlignment(SwingConstants.TOP);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (font != null) {\n\t\t\t\tcomp.setFont(font);\n\t\t\t}\n\t\t\tif (foregroundColor != null) {\n\t\t\t\tcomp.setForeground(foregroundColor);\n\t\t\t}\n\t\t\tif (backgroundColor != null) {\n\t\t\t\tcomp.setBackground(backgroundColor);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tprivate class GTableActionListener implements ActionListener {\n\t\tpublic void actionPerformed(ActionEvent event) {\n\t\t\tString cmd = event.getActionCommand().intern();\n\t\t\tif (cmd == \"Copy\") {\n\t\t\t\tclipboardCopy();\n\t\t\t} else if (cmd == \"Cut\") {\n\t\t\t\tclipboardCut();\n\t\t\t} else if (cmd == \"Paste\") {\n\t\t\t\tclipboardPaste();\n\t\t\t}\n\t\t}\n\t}\n\t\n\tprivate class GTableCellEditor extends DefaultCellEditor\n\t\t\timplements DocumentListener, FocusListener, KeyListener {\n\t\tprivate JTextField field;\n\t\tprivate boolean isEditing = false;\n\t\tprivate boolean isReplacing = false;\n\t\tprivate int lastKeyCode = 0;\n\t\tprivate String lastValue = \"\";\n\n\t\tpublic GTableCellEditor() {\n\t\t\tsuper(new JTextField());\n\t\t\tgetComponent().setName(\"Table.editor\");\n\t\t\tfield = (JTextField) getComponent();\n\t\t\tfield.setBorder(BorderFactory.createEmptyBorder(/* TLBR */ 1, 3, 1, 3));\n\t\t\tfield.setFont(tableFont);\n\t\t\tif (DEFAULT_CELL_FORMAT != null) {\n\t\t\t\tDEFAULT_CELL_FORMAT.apply(/* renderer */ null, field);\n\t\t\t}\n\t\t\tfield.addFocusListener(this);\n\t\t\tfield.getDocument().addDocumentListener(this);\n\t\t\tfield.addKeyListener(this);\n\t\t}\n\n\t\t@Override\n\t\tpublic boolean isCellEditable(EventObject e) {\n\t\t\tif (e instanceof KeyEvent) {\n\t\t\t\treturn startWithKeyEvent((KeyEvent) e);\n\t\t\t}\n\t\t\treturn super.isCellEditable(e);\n\t\t}\n\n\t\tprivate boolean startWithKeyEvent(KeyEvent e) {\n\t\t\tint row = getSelectedRow();\n\t\t\tint col = getSelectedColumn();\n\t\t\tString cellValue = inBounds(row, col) ? get(row, col) : \"\";\n\t\t\t\n\t\t\tif (e.isControlDown() || e.isMetaDown() || e.isAltDown()) {\n\t\t\t\t// don't swallow control keys for editing table contents\n\t\t\t\treturn false;\n\t\t\t} else if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {\n\t\t\t\treturn false;\n\t\t\t} else if (e.getKeyCode() == KeyEvent.VK_DELETE || e.getKeyCode() == KeyEvent.VK_BACK_SPACE) {\n\t\t\t\t// empty out contents of currently selected cell; don't begin edit mode\n\t\t\t\tlastValue = \"\";\n\t\t\t\tset(row, col, \"\");   // notifies C++ backend that the cell's value changed\n\t\t\t\treturn false;\n\t\t\t} else if (e.getKeyCode() == KeyEvent.VK_F2) {\n\t\t\t\t// standard key for editing an existing value\n\t\t\t\tisEditing = true;\n\t\t\t\tisReplacing = false;\n\t\t\t\tlastValue = cellValue;\n\t\t\t\treturn true;\n\t\t\t} else if (!isEditing) {\n\t\t\t\t// typing a new value; overwrite old one\n\t\t\t\tlastValue = cellValue;\n\t\t\t\tset(row, col, \"\", /* notifyBackEnd */ false);\n\t\t\t\tisEditing = true;\n\t\t\t\tisReplacing = true;\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tpublic void focusGained(FocusEvent e) {\n\t\t\tif (DEFAULT_CELL_FORMAT != null) {\n\t\t\t\tDEFAULT_CELL_FORMAT.apply(/* renderer */ null, field);\n\t\t\t}\n\t\t\tisEditing = true;\n\t\t\t\n\t\t\t// make sure we aren't selecting any characters and that the cursor is placed\n\t\t\t// at the end of the text so we can append (dumb Mac bug)\n\t\t\tfield.setSelectionStart(field.getText().length());\n\t\t\t\n\t\t\tint eventType = isReplacing ? TABLE_REPLACE_BEGIN : TABLE_EDIT_BEGIN;\n\t\t\tnotifyBackEndOfEvent(eventType);\n\t\t}\n\n\t\tpublic void focusLost(FocusEvent e) {\n\t\t\tstopCellEditing();\n\t\t\tif (isReplacing && lastKeyCode == KeyEvent.VK_ESCAPE) {\n\t\t\t\tint row = table.getSelectedRow();\n\t\t\t\tint col = table.getSelectedColumn();\n\t\t\t\tif (inBounds(row, col)) {\n\t\t\t\t\tset(row, col, lastValue, /* notifyBackEnd */ false);\n\t\t\t\t}\n\t\t\t}\n\t\t\tisEditing = false;\n\t\t\tisReplacing = false;\n\t\t\tlastKeyCode = '\\0';\n\t\t}\n\n\t\tpublic boolean isEditing() {\n\t\t\treturn isEditing;\n\t\t}\n\n\t\tpublic void setEditorValue(String value) {\n\t\t\tlastValue = value;\n\t\t\tfield.setText(value);\n\t\t}\n\n\t\tpublic void insertUpdate(DocumentEvent e) {\n\t\t\tif (!field.hasFocus()) {\n\t\t\t\tfield.requestFocus();\n\t\t\t}\n\t\t}\n\n\t\tpublic void removeUpdate(DocumentEvent e) {\n\t\t\tif (!field.hasFocus()) {\n\t\t\t\tfield.requestFocus();\n\t\t\t}\n\t\t}\n\n\t\tpublic void changedUpdate(DocumentEvent e) {\n\t\t\tif (!field.hasFocus()) {\n\t\t\t\tfield.requestFocus();\n\t\t\t}\n\t\t}\n\n\t\tpublic void keyTyped(KeyEvent e) {\n\t\t\tif (lastKeyCode == KeyEvent.VK_ESCAPE) {\n\t\t\t\te.consume();\n\t\t\t}\n\t\t}\n\n\t\tpublic void keyPressed(KeyEvent e) {\n\t\t\tif (!e.isShiftDown()) {\n\t\t\t\tlastKeyCode = e.getKeyCode();\n\t\t\t}\n\t\t\tif (lastKeyCode == KeyEvent.VK_ESCAPE) {\n\t\t\t\te.consume();\n\t\t\t\t// stopCellEditing();\n\t\t\t\tcancelCellEditing();\n\t\t\t} else if (lastKeyCode == KeyEvent.VK_DOWN) {\n\t\t\t\tif (EXIT_CELL_EDITOR_ON_ARROW_KEY) {\n\t\t\t\t\t// move down when down arrow pressed during edit\n\t\t\t\t\tint row = table.getSelectedRow();\n\t\t\t\t\tint col = table.getSelectedColumn();\n\t\t\t\t\tif (inBounds(row + 1, col)) {\n\t\t\t\t\t\te.consume();\n\t\t\t\t\t\tstopCellEditing();\n\t\t\t\t\t\tselect(row + 1, col);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\te.consume();\n\t\t\t\t}\n\t\t\t} else if (lastKeyCode == KeyEvent.VK_ENTER) {\n\t\t\t\t// move down and/or stop editing when Enter pressed during edit\n\t\t\t\te.consume();\n\t\t\t\tstopCellEditing();\n\t\t\t\tint row = table.getSelectedRow();\n\t\t\t\tint col = table.getSelectedColumn();\n\t\t\t\tif (inBounds(row + 1, col)) {\n\t\t\t\t\tselect(row + 1, col);\n\t\t\t\t}\n\t\t\t} else if (EXIT_CELL_EDITOR_ON_ARROW_KEY && lastKeyCode == KeyEvent.VK_LEFT) {\n\t\t\t\t// move to left when left arrow pressed during edit at start of text\n\t\t\t\tif (field.getSelectionStart() <= 0) {\n\t\t\t\t\tint row = table.getSelectedRow();\n\t\t\t\t\tint col = table.getSelectedColumn();\n\t\t\t\t\tif (inBounds(row, col - 1)) {\n\t\t\t\t\t\te.consume();\n\t\t\t\t\t\tstopCellEditing();\n\t\t\t\t\t\tselect(row, col - 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (EXIT_CELL_EDITOR_ON_ARROW_KEY && lastKeyCode == KeyEvent.VK_RIGHT) {\n\t\t\t\t// move to right when right arrow pressed during edit at end of text\n\t\t\t\tif (field.getSelectionStart() >= field.getText().length()) {\n\t\t\t\t\tint row = table.getSelectedRow();\n\t\t\t\t\tint col = table.getSelectedColumn();\n\t\t\t\t\tif (inBounds(row, col + 1)) {\n\t\t\t\t\t\te.consume();\n\t\t\t\t\t\tstopCellEditing();\n\t\t\t\t\t\tselect(row, col + 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (lastKeyCode == KeyEvent.VK_UP) {\n\t\t\t\tif (EXIT_CELL_EDITOR_ON_ARROW_KEY) {\n\t\t\t\t\t// move up when up arrow pressed during edit\n\t\t\t\t\tint row = table.getSelectedRow();\n\t\t\t\t\tint col = table.getSelectedColumn();\n\t\t\t\t\tif (inBounds(row - 1, col)) {\n\t\t\t\t\t\te.consume();\n\t\t\t\t\t\tstopCellEditing();\n\t\t\t\t\t\tselect(row - 1, col);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\te.consume();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void keyReleased(KeyEvent e) {\n\t\t\tif (lastKeyCode == KeyEvent.VK_ESCAPE) {\n\t\t\t\te.consume();\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate class GTableCellEditorListener implements CellEditorListener {\n\t\tpublic void editingStopped(ChangeEvent e) {\n\t\t\t// empty\n\t\t}\n\n\t\tpublic void editingCanceled(ChangeEvent e) {\n\t\t\t// empty\n\t\t}\n\t}\n\t\n\tprivate class GTableCellRenderer extends DefaultTableCellRenderer {\n\t\tprivate Color selectedCellBackground;\n\t\t\n\t\t@Override\n\t\tpublic Component getTableCellRendererComponent(JTable table, Object value,\n\t\t\t\tboolean isSelected, boolean hasFocus, int row, int column) {\n\t\t\tComponent comp = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);\n\t\t\tif (!inBounds(row, column)) {\n\t\t\t\treturn comp;\n\t\t\t}\n\t\t\t\n\t\t\tif (selectedCellBackground == null) {\n\t\t\t\tselectedCellBackground = table.getSelectionBackground();\n\t\t\t\tif (selectedCellBackground == null || Color.WHITE.equals(selectedCellBackground)) {\n\t\t\t\t\tselectedCellBackground = Color.CYAN.brighter().brighter();\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t// apply any formatting that has been set on the row or column or cell\n\t\t\tif (DEFAULT_CELL_FORMAT == null) {\n\t\t\t\tDEFAULT_CELL_FORMAT = new CellFormattingInfo();\n\t\t\t\tDEFAULT_CELL_FORMAT.alignment = GTable.this.horizontalAlignment;\n\t\t\t\tDEFAULT_CELL_FORMAT.backgroundColor = table.getBackground();\n\t\t\t\tDEFAULT_CELL_FORMAT.font = table.getFont();\n\t\t\t\tDEFAULT_CELL_FORMAT.foregroundColor = table.getForeground();\n\t\t\t} else {\n\t\t\t\tDEFAULT_CELL_FORMAT.apply(this, comp);\n\t\t\t}\n\t\t\t\n\t\t\tif (rowFormats[row] != null) {\n\t\t\t\trowFormats[row].apply(this, comp);\n\t\t\t}\n\t\t\tif (colFormats[column] != null) {\n\t\t\t\tcolFormats[column].apply(this, comp);\n\t\t\t}\n\t\t\tif (cellFormats[row][column] != null) {\n\t\t\t\tcellFormats[row][column].apply(this, comp);\n\t\t\t}\n\t\t\t\n\t\t\t// BUGFIX: make selected cell use selection background color (even if not in focus)\n\t\t\tint selectedRow = getSelectedRow();\n\t\t\tint selectedCol = getSelectedColumn();\n\t\t\tif (selectedRow == row && selectedCol == column) {\n\t\t\t\tColor bg = selectedCellBackground;\n\t\t\t\tif (!table.hasFocus()) {\n\t\t\t\t\tbg = bg.brighter();\n\t\t\t\t\tbg = new Color(bg.getRed(), bg.getGreen(), bg.getBlue(), /* alpha */ 200);\n\t\t\t\t}\n\t\t\t\tcomp.setBackground(bg);\n\t\t\t}\n\t\t\t\n\t\t\treturn comp;\n\t\t}\n\t}\n\n\tprivate class GTableKeyListener implements KeyListener {\n\t\tpublic void keyPressed(KeyEvent e) {\n\t\t\tif (jbe != null) {\n\t\t\t\tjbe.keyPressed(e);\n\t\t\t}\n\t\t}\n\n\t\tpublic void keyReleased(KeyEvent e) {\n\t\t\tif (jbe != null) {\n\t\t\t\tjbe.keyReleased(e);\n\t\t\t}\n\t\t}\n\t\t\n\t\tpublic void keyTyped(KeyEvent e) {\n\t\t\tif (jbe != null) {\n\t\t\t\tjbe.keyTyped(e);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tprivate class GTableListSelectionListener implements ListSelectionListener {\n\t\t// Required method of ListSelectionListener interface.\n\t\t// Notifies when selected cell changes.\n\t\tpublic void valueChanged(ListSelectionEvent e) {\n\t\t\tif (!e.getValueIsAdjusting()) {\n\t\t\t\tint row = table.getSelectedRow();\n\t\t\t\tint col = table.getSelectedColumn();\n\t\t\t\tif (eventsEnabled && (row != previouslySelectedRow || col != previouslySelectedColumn)) {\n\t\t\t\t\tif (inBounds(row, col)) {\n\t\t\t\t\t\tnotifyBackEndOfEvent(TABLE_SELECTED, row, col);\n\t\t\t\t\t}\n\t\t\t\t\tpreviouslySelectedRow = row;\n\t\t\t\t\tpreviouslySelectedColumn = col;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t/**\n\t * Small class to represent the data model of a JTable.\n\t * Basically only needed for setEditable / isEditable.\n\t */\n\tprivate class GTableModel extends DefaultTableModel {\n\t\tpublic GTableModel(int rows, int cols) {\n\t\t\tsuper(rows, cols);\n\t\t}\n\t\t\n\t\tpublic boolean isCellEditable(int row, int col) {\n\t\t\treturn editable;\n\t\t}\n\t}\n\t\n\tprivate class GTableModelListener implements TableModelListener {\n\t\t// Required method of TableModelListener interface.\n\t\t// Notifies when data in a cell changes.\n\t\tpublic void tableChanged(TableModelEvent e) {\n\t\t\tif (eventsEnabled) {\n\t\t\t\tint row = e.getFirstRow();\n\t\t\t\tint col = e.getColumn();\n\t\t\t\tif (inBounds(row, col)) {\n\t\t\t\t\tnotifyBackEndOfEvent(TABLE_UPDATED, row, col);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t/**\n\t * GTableRowUtilities. Utility for adding a row column to a JTable\n\t * @author Oliver Watkins, modified by Marty Stepp\n\t */\n\tprivate static class GTableRowUtilities {\n\n\t\t/**\n\t\t * Adds a number column in the row header of the scrollpane, to match rows\n\t\t * in the table. Assumes that table has already been added to a scollpane.\n\t\t * If the table is not in a scrollpane nothing will happen.\n\t\t * \n\t\t * @param userTable - Table to have column added to (if it is in a scrollpane)\n\t\t * @param startingNumber - Number to start number column with, typically 0 or 1.\n\t\t */\n\t\tpublic static void addNumberColumn(final JTable userTable, int startingNumber, boolean isRowSelectable) {\n\t\t\tContainer parentContainer = userTable.getParent();\n\t\t\tJViewport viewport = null;\n\t\t\tJScrollPane scrollPane = null;\n\t\t\tif (parentContainer instanceof JViewport) {\n\t\t\t\tviewport = (JViewport) parentContainer;\n\t\t\t\t\n\t\t\t\tContainer parentParentContainer = parentContainer.getParent();\n\t\t\t\tif (parentParentContainer instanceof JScrollPane) {\n\t\t\t\t\tscrollPane = (JScrollPane) parentParentContainer;\n\t\t\t\t\t\n\t\t\t\t\t// Make certain we are the viewPort's view and not, for\n\t\t\t\t\t// example, the rowHeaderView of the scrollPane -\n\t\t\t\t\t// an implementor of fixed columns might do this.\n\t\t\t\t\tviewport = scrollPane.getViewport();\n\t\t\t\t\tif (viewport == null || viewport.getView() != userTable) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tJTableHeader tableHeader = (JTableHeader) userTable.getTableHeader();\n\t\t\tif (scrollPane != null) {\n\t\t\t\tscrollPane.setColumnHeaderView(tableHeader);\n\t\t\t}\n\t\t\tfinal JTable rowHeadersTable = new JTable(new GTableRowUtilities().new RowHeadersTableModel(userTable.getModel().getRowCount(), startingNumber));\n\t\t\tFont font = rowHeadersTable.getTableHeader().getFont();\n\t\t\trowHeadersTable.getTableHeader().setFont(font.deriveFont(Font.BOLD));\n\t\t\t\n\t\t\t// rowHeadersTable.getModel().addTableModelListener()\n\t\t\tuserTable.getModel().addTableModelListener(new TableModelListener() {\n\n\t\t\t\tpublic void tableChanged(TableModelEvent e) {\n\t\t\t\t\tRowHeadersTableModel m = (RowHeadersTableModel) rowHeadersTable.getModel();\n\n\t\t\t\t\tif (userTable.getRowCount() != m.getRowCount()) {\n\t\t\t\t\t\tif (userTable.getRowCount() > m.getRowCount()) {\n\n\t\t\t\t\t\t\tint rowDiff = userTable.getRowCount() - m.getRowCount();\n\n\t\t\t\t\t\t\tfor (int i = 0; i < rowDiff; i++) {\n\t\t\t\t\t\t\t\tm.addNumber();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (userTable.getRowCount() < m.getRowCount()) {\n\n\t\t\t\t\t\t\tint rowDiff = m.getRowCount() - userTable.getRowCount();\n\n\t\t\t\t\t\t\tfor (int i = 0; i < rowDiff; i++) {\n\t\t\t\t\t\t\t\tm.removeNumber();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tm.fireTableDataChanged();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// label used for rendering and for\n\t\t\tfinal JLabel label = new JLabel();\n\n\t\t\tif (scrollPane != null) {\n\t\t\t\tscrollPane.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener() {\n\t\t\t\t\tpublic void adjustmentValueChanged(AdjustmentEvent e) {\n\t\t\t\t\t\tint scrollBarValue = e.getValue();\n\t\n\t\t\t\t\t\tadjustColumnWidth(rowHeadersTable, label, scrollBarValue);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// this is where you set the width of the row headers\n\t\t\trowHeadersTable.createDefaultColumnsFromModel();\n\n\t\t\t// make the rows look like headers\n\t\t\trowHeadersTable.setBackground(rowHeadersTable.getTableHeader().getBackground());\n\t\t\trowHeadersTable.setForeground(rowHeadersTable.getTableHeader().getForeground());\n\t\t\trowHeadersTable.setFont(font.deriveFont(Font.BOLD));\n\n\t\t\trowHeadersTable.setRowHeight(userTable.getRowHeight());\n\n\t\t\trowHeadersTable.getTableHeader().setReorderingAllowed(false);\n\t\t\t/**\n\t\t\t * If selectable then change the colouring in the renderer\n\t\t\t */\n\t\t\tif (isRowSelectable) {\n\t\t\t\t// adding a renderer\n\t\t\t\trowHeadersTable.getColumnModel().getColumn(0).setCellRenderer(new TableCellRenderer() {\n\t\t\t\t\tpublic Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,\n\t\t\t\t\t\t\tboolean hasFocus, int row, int column) {\n\t\t\t\t\t\tlabel.setText(\"\" + value);\n\n\t\t\t\t\t\tif (isSelected) {\n\t\t\t\t\t\t\tlabel.setForeground(rowHeadersTable.getSelectionForeground());\n\t\t\t\t\t\t\tlabel.setBackground(rowHeadersTable.getSelectionBackground());\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tlabel.setBackground(rowHeadersTable.getBackground());\n\t\t\t\t\t\t\tlabel.setForeground(rowHeadersTable.getForeground());\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn label;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\trowHeadersTable.setRowSelectionAllowed(isRowSelectable);\n\t\t\trowHeadersTable.setCellSelectionEnabled(isRowSelectable);\n\t\t\trowHeadersTable.setFocusable(isRowSelectable);\n\t\t\t// rowHeadersTable.setDragEnabled(isRowSelectable);   // TODO: re-enable?\n\t\t\t\n\t\t\tif (scrollPane != null) {\n\t\t\t\tscrollPane.setRowHeaderView(rowHeadersTable);\n\t\n\t\t\t\t// set the row header name into the top left corner\n\t\t\t\tscrollPane.setCorner(JScrollPane.UPPER_LEFT_CORNER, rowHeadersTable.getTableHeader());\n\t\n\t\t\t\tBorder border = scrollPane.getBorder();\n\t\t\t\tif (border == null || border instanceof UIResource) {\n\t\t\t\t\tscrollPane.setBorder(UIManager.getBorder(\"Table.scrollPaneBorder\"));\n\t\t\t\t}\n\t\n\t\t\t\tfinal JScrollPane theScrollPane = scrollPane;   // Java is dumb about closures\n\t\t\t\tscrollPane.addComponentListener(new ComponentAdapter() {\n\t\t\t\t\t/**\n\t\t\t\t\t * Whenever the component is resized need to re-adjust the\n\t\t\t\t\t * column width if necessary. This method is also called\n\t\t\t\t\t * when the screen is first layed out.\n\t\t\t\t\t */\n\t\t\t\t\tpublic void componentResized(ComponentEvent e) {\n\t\t\t\t\t\tadjustColumnWidth(rowHeadersTable, label, theScrollPane.getVerticalScrollBar().getValue());\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\trowHeadersTable.setSelectionMode(userTable.getSelectionModel().getSelectionMode());\n\n\t\t\tnew GTableRowUtilities().new TableListener(rowHeadersTable, userTable);\n\t\t}\n\n\t\t/**\n\t\t * Table Model for the row number column. It just has one column (the numbers)\n\t\t * \n\t\t * @author Oliver Watkins \n\t\t */\n\t\tprivate class RowHeadersTableModel extends AbstractTableModel {\n\t\t\tprivate ArrayList<Integer> numbersList = new ArrayList<Integer>();\n\t\t\tprivate int startNumber;\n\t\t\t\n\t\t\t/**\n\t\t\t * Initalise model\n\t\t\t * \n\t\t\t * @param maxNumber determined by JTable row size\n\t\t\t * @param startingNumber usually zero or 1\n\t\t\t */\n\t\t\tpublic RowHeadersTableModel(int maxNumber, int startingNumber) {\n\t\t\t\t// start at starting number and then go to row count (plus starting\n\t\t\t\t// number amount)\n\t\t\t\tthis.startNumber = startingNumber;\n\t\t\t\tint j = 0;\n\t\t\t\tfor (int i = startingNumber; i < maxNumber + startNumber; i++) {\n\t\t\t\t\tnumbersList.add(Integer.valueOf(j + startNumber));\n\t\t\t\t\tj++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tpublic int getRowCount() {\n\t\t\t\tif (numbersList != null)\n\t\t\t\t\treturn numbersList.size();\n\t\t\t\telse\n\t\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\tpublic int getMaxIntValue() {\n\t\t\t\tif (numbersList != null && numbersList.size() != 0) {\n\t\t\t\t\tInteger integer = (Integer) getValueAt(numbersList.size() - 1, 0);\n\t\t\t\t\treturn integer.intValue();\n\t\t\t\t} else\n\t\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\tpublic int getColumnCount() {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tpublic String getColumnName(int columnIndex) {\n\t\t\t\treturn \"\";\n\t\t\t}\n\n\t\t\tpublic Class<?> getColumnClass(int columnIndex) {\n\t\t\t\treturn Integer.class;\n\t\t\t}\n\n\t\t\tpublic boolean isCellEditable(int rowIndex, int columnIndex) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tpublic Object getValueAt(int rowIndex, int columnIndex) {\n\t\t\t\treturn numbersList.get(rowIndex);\n\t\t\t}\n\n\t\t\tpublic void addNumber() {\n\t\t\t\tif (numbersList.size() != 0) {\n\t\t\t\t\tInteger maxNum = (Integer) numbersList.get(numbersList.size() - 1);\n\n\t\t\t\t\tnumbersList.add(numbersList.size(), Integer.valueOf(maxNum.intValue() + 1));\n\t\t\t\t} else {\n\t\t\t\t\tnumbersList.add(numbersList.size(), Integer.valueOf(startNumber));\n\t\t\t\t}\n\t\t\t\tthis.fireTableDataChanged();\n\t\t\t}\n\n\t\t\tpublic void removeNumber() {\n\t\t\t\tnumbersList.remove(numbersList.size() - 1);\n\t\t\t}\n\n\t\t\tpublic void setValueAt(Object aValue, int rowIndex, int columnIndex) {\n\t\t\t}\n\n\t\t\tpublic void addTableModelListener(TableModelListener l) {\n\t\t\t\tsuper.addTableModelListener(l);\n\t\t\t}\n\n\t\t\tpublic void removeTableModelListener(TableModelListener l) {\n\t\t\t\tsuper.removeTableModelListener(l);\n\t\t\t}\n\n\t\t};\n\n\t\t/**\n\t\t * Adjusts the column width of the row headers table containg the number\n\t\t * column. The font metrics are extracted from the label of the row at the\n\t\t * bottom of the viewport and used to determing the appropriate width.\n\t\t * \n\t\t * The reason why this method is important, is that when the row number increases by an extra digit\n\t\t * the column needs to get wider. It also needs to shrink when scrolling to smaller digit numbers.\n\t\t * \n\t\t * @param rowHeadersTable - single column table in the row header\n\t\t * @param label - label used to get font metrics\n\t\t * @param scrollBarValue - int value for determing point of lowest row\n\t\t */\n\t\tprivate static void adjustColumnWidth(final JTable rowHeadersTable, final JLabel label, int scrollBarValue) {\n\t\t\tlabel.setFont(rowHeadersTable.getFont());\n\t\t\tlabel.setOpaque(true);\n\t\t\tlabel.setHorizontalAlignment(JLabel.CENTER);\n\n\t\t\tint v = rowHeadersTable.getVisibleRect().height;\n\n\t\t\tint row = rowHeadersTable.rowAtPoint(new Point(0, v + scrollBarValue));\n\n\t\t\tInteger modelValue = null;\n\t\t\tif (row != -1) {\n\t\t\t\tmodelValue = (Integer) rowHeadersTable.getModel().getValueAt(row, 0);\n\t\t\t} else {\n\t\t\t\tRowHeadersTableModel tm = (RowHeadersTableModel) rowHeadersTable.getModel();\n\t\t\t\tmodelValue = Integer.valueOf(tm.getMaxIntValue());\n\t\t\t}\n\n\t\t\tlabel.setText(\"\" + modelValue);\n\t\t\tFontMetrics fontMetrics = label.getFontMetrics(label.getFont());\n\n\t\t\tint widthFactor = 0;\n\n\t\t\tif (fontMetrics != null && label.getText() != null) {\n\t\t\t\twidthFactor = fontMetrics.stringWidth(label.getText());\n\t\t\t\trowHeadersTable.setPreferredScrollableViewportSize(new Dimension(widthFactor + 8, 100));   // height is ignored\n\t\t\t\trowHeadersTable.repaint();\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Listener that joins the two tables; the main table, and the single column row number table. When either\n\t\t * are moved or selected, then the affect is passed on to the other table.\n\t\t * \n\t\t * @author Oliver Watkins\n\t\t */\n\t\tprivate class TableListener implements ListSelectionListener {\n\t\t\tprivate JTable rowHeadersTable;\n\t\t\tprivate JTable userTable;\n\t\t\tprivate JViewport userTableViewPort;\n\t\t\tprivate JViewport rowHeadersViewPort;\n\n\t\t\tpublic TableListener(JTable rowHeadersTable, JTable userTable) {\n\t\t\t\tthis.userTable = userTable;\n\t\t\t\tthis.rowHeadersTable = rowHeadersTable;\n\n\t\t\t\tContainer p = userTable.getParent();\n\t\t\t\tuserTableViewPort = (JViewport) p;\n\n\t\t\t\tContainer p2 = rowHeadersTable.getParent();\n\t\t\t\trowHeadersViewPort = (JViewport) p2;\n\n\t\t\t\tPoint newPosition = userTableViewPort.getViewPosition();\n\t\t\t\trowHeadersViewPort.setViewPosition(newPosition);\n\n\t\t\t\t// userTableViewPort.setViewPosition(newPosition);\n\n\t\t\t\trowHeadersTable.getSelectionModel().addListSelectionListener(this);\n\t\t\t\tuserTable.getSelectionModel().addListSelectionListener(this);\n\n\t\t\t}\n\n\t\t\tpublic void valueChanged(ListSelectionEvent e) {\n\t\t\t\tif (e.getSource() == userTable.getSelectionModel()) {\n\t\t\t\t\trowHeadersTable.getSelectionModel().removeListSelectionListener(this);\n\t\t\t\t\trowHeadersTable.getSelectionModel().clearSelection();\n\n\t\t\t\t\tint[] rows = userTable.getSelectedRows();\n\n\t\t\t\t\tfor (int i = 0; i < rows.length; i++) {\n\t\t\t\t\t\trowHeadersTable.getSelectionModel().addSelectionInterval(rows[i], rows[i]);\n\n\t\t\t\t\t}\n\t\t\t\t\t/* int[] iarr = */ rowHeadersTable.getSelectedRows();\n\n\t\t\t\t\trowHeadersTable.getSelectionModel().addListSelectionListener(this);\n\t\t\t\t} else if (e.getSource() == rowHeadersTable.getSelectionModel()) {\n\t\t\t\t\tboolean isColumnSelectionAllowed = userTable.getColumnSelectionAllowed();\n\t\t\t\t\tboolean isRowSelectionAllowed = userTable.getRowSelectionAllowed();\n\t\t\t\t\tboolean isCellSelectionAllowed = userTable.getCellSelectionEnabled();\n\n\t\t\t\t\tuserTable.getSelectionModel().removeListSelectionListener(this);\n\t\t\t\t\tuserTable.getSelectionModel().clearSelection();\n\n\t\t\t\t\tint[] rows = rowHeadersTable.getSelectedRows();\n\n\t\t\t\t\tif (isRowSelectionAllowed && !isCellSelectionAllowed && !isColumnSelectionAllowed) {\n\t\t\t\t\t\tfor (int i = 0; i < rows.length; i++) {\n\t\t\t\t\t\t\tuserTable.addRowSelectionInterval(rows[i], rows[i]);\n\t\t\t\t\t\t\tuserTableViewPort.setViewPosition(rowHeadersViewPort.getViewPosition());\n\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// looks cleaner\n\t\t\t\t\t\tuserTableViewPort.setScrollMode(JViewport.BACKINGSTORE_SCROLL_MODE);\n\n\t\t\t\t\t\tfor (int i = 0; i < rows.length; i++) {\n\t\t\t\t\t\t\tif (i == 0) {\n\t\t\t\t\t\t\t\t// need to create row first with change selection\n\t\t\t\t\t\t\t\tuserTable.changeSelection(rows[i], 0, false, false);\n\t\t\t\t\t\t\t\tuserTable.changeSelection(rows[i], userTable.getColumnCount(), false, true);\n\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tuserTable.addRowSelectionInterval(rows[i], rows[i]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// re-adding the listener to the user table\n\t\t\t\t\tuserTable.getSelectionModel().addListSelectionListener(this);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\n\t// small internal test driver for GTable class\n\tpublic static void main(String[] args) {\n\t\tGuiUtils.setSystemLookAndFeel();\n\t\t\n\t\tJFrame frame = new JFrame();\n\t\tframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\n\t\tGTable table = new GTable(5, 3);\n\t\ttable.setEditable(true);\n\t\ttable.setEventEnabled(TABLE_EDIT_BEGIN, true);\n\t\t// table.setColumnHeadersVisible(true);\n//\t\tframe.add(new JScrollPane(table.getInteractor()));\n\t\ttable.setColumnHeaderStyle(COLUMN_HEADER_EXCEL);\n\t\ttable.setColumnHeadersVisible(true);\n\t\ttable.setRowHeadersVisible(true);\n\t\tframe.add(table.getInteractor());\n\t\tframe.pack();\n\t\tframe.setVisible(true);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTableAdapter.java",
    "content": "package stanford.spl;\n\npublic class GTableAdapter implements GTableListener {\n\tpublic void tableCopy(GTableEvent event) {\n\t\t// empty\n\t}\n\t\n\tpublic void tableCut(GTableEvent event) {\n\t\t// empty\n\t}\n\t\n\tpublic void tableEditBegin(GTableEvent event) {\n\t\t// empty\n\t}\n\t\n\tpublic void tablePaste(GTableEvent event) {\n\t\t// empty\n\t}\n\t\n\tpublic void tableReplaceBegin(GTableEvent event) {\n\t\t// empty\n\t}\n\t\n\tpublic void tableSelected(GTableEvent event) {\n\t\t// empty\n\t}\n\t\n\tpublic void tableUpdated(GTableEvent event) {\n\t\t// empty\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTableEvent.java",
    "content": "package stanford.spl;\n\npublic class GTableEvent {\n\tprivate GTable table;\n\tprivate int row;\n\tprivate int col;\n\tprivate String value;\n\t\n\tpublic GTableEvent(GTable table) {\n\t\tthis(table, -1, -1, \"\");\n\t}\n\t\n\tpublic GTableEvent(GTable table, int row, int col) {\n\t\tthis(table, row, col, \"\");\n\t}\n\t\n\tpublic GTableEvent(GTable table, int row, int col, String value) {\n\t\tthis.table = table;\n\t\tthis.row = row;\n\t\tthis.col = col;\n\t\tthis.value = value;\n\t}\n\t\n\tpublic int getColumn() {\n\t\treturn col;\n\t}\n\t\n\tpublic int getRow() {\n\t\treturn row;\n\t}\n\n\tpublic GTable getSource() {\n\t\treturn table;\n\t}\n\t\n\tpublic String getValue() {\n\t\treturn value;\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTableListener.java",
    "content": "package stanford.spl;\n\npublic interface GTableListener {\n\tpublic void tableCopy(GTableEvent event);\n\tpublic void tableCut(GTableEvent event);\n\tpublic void tableEditBegin(GTableEvent event);\n\tpublic void tablePaste(GTableEvent event);\n\tpublic void tableReplaceBegin(GTableEvent event);\n\tpublic void tableSelected(GTableEvent event);\n\tpublic void tableUpdated(GTableEvent event);\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTable_autofitColumnWidths.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2016/11/26\n * - initial version\n */\n\npackage stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GTable_autofitColumnWidths extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GTable) {\n\t\t\tGTable table = (GTable) localGObject;\n\t\t\ttable.autofitColumnWidths();\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTable_clear.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GTable_clear extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GTable) {\n\t\t\tGTable table = (GTable) localGObject;\n\t\t\ttable.clear();\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTable_clearFormatting.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2016/11/26\n * - initial version\n */\n\npackage stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GTable_clearFormatting extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GTable) {\n\t\t\tGTable table = (GTable) localGObject;\n\t\t\ttable.clearFormatting();\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTable_create.java",
    "content": "package stanford.spl;\n\nimport java.awt.*;\nimport acm.util.TokenScanner;\n\npublic class GTable_create extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString id = nextString(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tint numRows = nextInt(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tint numCols = nextInt(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tdouble x = nextDouble(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tdouble y = nextDouble(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tdouble w = nextDouble(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tdouble h = nextDouble(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\t\n\t\tGTable table = new GTable(numRows, numCols);\n\t\ttable.setJavaBackEnd(jbe);\n\t\ttable.setLocation(x, y);\n\t\tif (w > 0 && h > 0) {\n\t\t\ttable.getInteractor().setPreferredSize(new Dimension((int) w, (int) h));\n\t\t}\n\t\tjbe.defineGObject(id, table);\n\t\tjbe.defineSource(table.getInteractor(), id);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTable_get.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GTable_get extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint row = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint col = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GTable) {\n\t\t\tGTable table = (GTable) localGObject;\n\t\t\tString value = table.get(row, col);\n\t\t\tSplPipeDecoder.encodeAndWrite(value);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTable_getColumnWidth.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GTable_getColumnWidth extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint column = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GTable) {\n\t\t\tGTable table = (GTable) localGObject;\n\t\t\tint width = table.getColumnWidth(column);\n\t\t\tSplPipeDecoder.writeResult(String.valueOf(width));\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTable_getSelection.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GTable_getSelection extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GTable) {\n\t\t\tGTable table = (GTable) localGObject;\n\t\t\tint row = table.getSelectedRow();\n\t\t\tint column = table.getSelectedColumn();\n\t\t\tSplPipeDecoder.writeResult(row);\n\t\t\tSplPipeDecoder.writeResult(column);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTable_resize.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GTable_resize extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint numRows = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint numCols = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GTable) {\n\t\t\tGTable table = (GTable) localGObject;\n\t\t\ttable.resize(numRows, numCols);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTable_select.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GTable_select extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint row = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint col = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GTable) {\n\t\t\tGTable table = (GTable) localGObject;\n\t\t\ttable.select(row, col);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTable_set.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2016/11/24\n * - initial version\n */\n\npackage stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GTable_set extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint row = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint col = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString value = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GTable) {\n\t\t\tGTable table = (GTable) localGObject;\n\t\t\t\n\t\t\t// We pass 'false' as notifyBackEnd because this event came *from* the back-end;\n\t\t\t// only need to tell back-end when the user initiates setting a cell from front-end in Java.\n\t\t\ttable.set(row, col, value, /* notifyBackEnd */ false);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTable_setCellAlignment.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2016/11/26\n * - initial version\n */\n\npackage stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.*;\n\npublic class GTable_setCellAlignment extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tint row = nextInt(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tint col = nextInt(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tint alignment = nextInt(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\t\n\t\tGObject gobj = jbe.getGObject(interactorID);\n\t\tif (gobj != null && gobj instanceof GTable) {\n\t\t\tGTable table = (GTable) gobj;\n\t\t\ttable.setCellAlignment(row, col, alignment);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTable_setCellBackground.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2016/11/26\n * - initial version\n */\n\npackage stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.*;\nimport java.awt.*;\n\npublic class GTable_setCellBackground extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tint row = nextInt(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tint col = nextInt(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tString colorStr = nextString(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\t\n\t\tGObject gobj = jbe.getGObject(interactorID);\n\t\tif (gobj != null && gobj instanceof GTable) {\n\t\t\tGTable table = (GTable) gobj;\n\t\t\tColor color = JTFTools.decodeColor(colorStr);\n\t\t\ttable.setCellBackground(row, col, color);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTable_setCellFont.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2016/11/26\n * - initial version\n */\n\npackage stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.JTFTools;\nimport acm.util.TokenScanner;\nimport java.awt.Font;\n\npublic class GTable_setCellFont extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tint row = nextInt(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tint col = nextInt(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tString fontStr = nextString(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\t\n\t\tGObject gobj = jbe.getGObject(interactorID);\n\t\tif (gobj != null && gobj instanceof GTable) {\n\t\t\tGTable table = (GTable) gobj;\n\t\t\tFont font = JTFTools.decodeFont(fontStr);\n\t\t\ttable.setCellFont(row, col, font);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTable_setCellForeground.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2016/11/26\n * - initial version\n */\n\npackage stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.*;\nimport java.awt.*;\n\npublic class GTable_setCellForeground extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tint row = nextInt(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tint col = nextInt(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tString colorStr = nextString(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\t\n\t\tGObject gobj = jbe.getGObject(interactorID);\n\t\tif (gobj != null && gobj instanceof GTable) {\n\t\t\tGTable table = (GTable) gobj;\n\t\t\tColor color = JTFTools.decodeColor(colorStr);\n\t\t\ttable.setCellForeground(row, col, color);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTable_setColumnAlignment.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2016/11/26\n * - initial version\n */\n\npackage stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.*;\n\npublic class GTable_setColumnAlignment extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tint col = nextInt(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tint alignment = nextInt(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\t\n\t\tGObject gobj = jbe.getGObject(interactorID);\n\t\tif (gobj != null && gobj instanceof GTable) {\n\t\t\tGTable table = (GTable) gobj;\n\t\t\ttable.setColumnAlignment(col, alignment);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTable_setColumnBackground.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2016/11/26\n * - initial version\n */\n\npackage stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.*;\nimport java.awt.*;\n\npublic class GTable_setColumnBackground extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tint col = nextInt(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tString colorStr = nextString(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\t\n\t\tGObject gobj = jbe.getGObject(interactorID);\n\t\tif (gobj != null && gobj instanceof GTable) {\n\t\t\tGTable table = (GTable) gobj;\n\t\t\tColor color = JTFTools.decodeColor(colorStr);\n\t\t\ttable.setColumnBackground(col, color);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTable_setColumnFont.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2016/11/26\n * - initial version\n */\n\npackage stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.JTFTools;\nimport acm.util.TokenScanner;\nimport java.awt.Font;\n\npublic class GTable_setColumnFont extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tint col = nextInt(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tString fontStr = nextString(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\t\n\t\tGObject gobj = jbe.getGObject(interactorID);\n\t\tif (gobj != null && gobj instanceof GTable) {\n\t\t\tGTable table = (GTable) gobj;\n\t\t\tFont font = JTFTools.decodeFont(fontStr);\n\t\t\ttable.setColumnFont(col, font);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTable_setColumnForeground.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2016/11/26\n * - initial version\n */\n\npackage stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.*;\nimport java.awt.*;\n\npublic class GTable_setColumnForeground extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tint col = nextInt(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tString colorStr = nextString(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\t\n\t\tGObject gobj = jbe.getGObject(interactorID);\n\t\tif (gobj != null && gobj instanceof GTable) {\n\t\t\tGTable table = (GTable) gobj;\n\t\t\tColor color = JTFTools.decodeColor(colorStr);\n\t\t\ttable.setColumnForeground(col, color);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTable_setColumnHeaderStyle.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GTable_setColumnHeaderStyle extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint style = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GTable) {\n\t\t\tGTable table = (GTable) localGObject;\n\t\t\ttable.setColumnHeaderStyle(style);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTable_setColumnWidth.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GTable_setColumnWidth extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint column = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint width = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GTable) {\n\t\t\tGTable table = (GTable) localGObject;\n\t\t\ttable.setColumnWidth(column, width);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTable_setEditable.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GTable_setEditable extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tboolean editable = nextBoolean(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GTable) {\n\t\t\tGTable table = (GTable) localGObject;\n\t\t\ttable.setEditable(editable);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTable_setEditorValue.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GTable_setEditorValue extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint row = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint col = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString value = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GTable) {\n\t\t\tGTable table = (GTable) localGObject;\n\t\t\ttable.setEditorValue(row, col, value);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTable_setEventEnabled.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GTable_setEventEnabled extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint eventType = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tboolean enabled = nextBoolean(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GTable) {\n\t\t\tGTable table = (GTable) localGObject;\n\t\t\ttable.setEventEnabled(eventType, enabled);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTable_setFont.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2016/11/26\n * - initial version\n */\n\npackage stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.JTFTools;\nimport acm.util.TokenScanner;\nimport java.awt.Font;\n\npublic class GTable_setFont extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString fontStr = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GTable) {\n\t\t\tGTable table = (GTable) localGObject;\n\t\t\tFont font = JTFTools.decodeFont(fontStr);\n\t\t\ttable.setFont(font);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTable_setHorizontalAlignment.java",
    "content": "package stanford.spl;\n\nimport javax.swing.JLabel;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GTable_setHorizontalAlignment extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString alignment = nextString(paramTokenScanner).toUpperCase();\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GTable) {\n\t\t\tGTable table = (GTable) localGObject;\n\t\t\tif (alignment.equals(\"LEFT\")) {\n\t\t\t\ttable.setHorizontalAlignment(JLabel.LEFT);\n\t\t\t} else if (alignment.equals(\"CENTER\")) {\n\t\t\t\ttable.setHorizontalAlignment(JLabel.CENTER);\n\t\t\t} else if (alignment.equals(\"RIGHT\")) {\n\t\t\t\ttable.setHorizontalAlignment(JLabel.RIGHT);\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTable_setRowAlignment.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2016/11/26\n * - initial version\n */\n\npackage stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.*;\n\npublic class GTable_setRowAlignment extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tint row = nextInt(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tint alignment = nextInt(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\t\n\t\tGObject gobj = jbe.getGObject(interactorID);\n\t\tif (gobj != null && gobj instanceof GTable) {\n\t\t\tGTable table = (GTable) gobj;\n\t\t\ttable.setRowAlignment(row, alignment);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTable_setRowBackground.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2016/11/26\n * - initial version\n */\n\npackage stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.*;\nimport java.awt.*;\n\npublic class GTable_setRowBackground extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tint row = nextInt(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tString colorStr = nextString(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\t\n\t\tGObject gobj = jbe.getGObject(interactorID);\n\t\tif (gobj != null && gobj instanceof GTable) {\n\t\t\tGTable table = (GTable) gobj;\n\t\t\tColor color = JTFTools.decodeColor(colorStr);\n\t\t\ttable.setRowBackground(row, color);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTable_setRowColumnHeadersVisible.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GTable_setRowColumnHeadersVisible extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tboolean visible = nextBoolean(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GTable) {\n\t\t\tGTable table = (GTable) localGObject;\n\t\t\ttable.setRowColumnHeadersVisible(visible);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTable_setRowFont.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2016/11/26\n * - initial version\n */\n\npackage stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.JTFTools;\nimport acm.util.TokenScanner;\nimport java.awt.Font;\n\npublic class GTable_setRowFont extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tint row = nextInt(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tString fontStr = nextString(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\t\n\t\tGObject gobj = jbe.getGObject(interactorID);\n\t\tif (gobj != null && gobj instanceof GTable) {\n\t\t\tGTable table = (GTable) gobj;\n\t\t\tFont font = JTFTools.decodeFont(fontStr);\n\t\t\ttable.setRowFont(row, font);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTable_setRowForeground.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2016/11/26\n * - initial version\n */\n\npackage stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.*;\nimport java.awt.*;\n\npublic class GTable_setRowForeground extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tint row = nextInt(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tString colorStr = nextString(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\t\n\t\tGObject gobj = jbe.getGObject(interactorID);\n\t\tif (gobj != null && gobj instanceof GTable) {\n\t\t\tGTable table = (GTable) gobj;\n\t\t\tColor color = JTFTools.decodeColor(colorStr);\n\t\t\ttable.setRowForeground(row, color);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTextArea.java",
    "content": "/*\n * GTextArea.java\n * \n * @author Jeff Lutgen and Marty Stepp\n * @version 2018/06/23\n * - added document listener functionality\n */\n\n/*************************************************************************/\n/* Stanford Portable Library (adapted from the ACM graphics library)     */\n/* Copyright (C) 2014 by Eric Roberts <eroberts@cs.stanford.edu>         */\n/*                                                                       */\n/* This program is free software: you can redistribute it and/or modify  */\n/* it under the terms of the GNU General Public License as published by  */\n/* the Free Software Foundation, either version 3 of the License, or     */\n/* (at your option) any later version.                                   */\n/*                                                                       */\n/* This program is distributed in the hope that it will be useful,       */\n/* but WITHOUT ANY WARRANTY; without even the implied warranty of        */\n/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         */\n/* GNU General Public License for more details.                          */\n/*                                                                       */\n/* You should have received a copy of the GNU General Public License     */\n/* along with this program.  If not, see <http://www.gnu.org/licenses/>. */\n/*************************************************************************/\n\npackage stanford.spl;\n\nimport java.awt.*;\nimport java.util.*;\nimport java.util.List;\nimport javax.swing.*;\nimport javax.swing.event.*;\n\n/**\n * The <code>GTextArea</code> class is a graphical object whose appearance\n * consists of a rectangular area that can display text.\n */\n\npublic class GTextArea extends GInteractor {\n\t/**\n\t * The default font used to display text.  You can change the font by\n\t * invoking the <a href=\"#setFont(Font)\"><code>setFont</code></a> method.\n\t */\n\tpublic static final Font DEFAULT_FONT = new Font(\"Monospaced\", Font.PLAIN, 11);\n\t\n\tpublic static final Color DEFAULT_BG_COLOR = new Color(240, 240, 240); \n\n\t/* Serial version UID */\n\t/**\n\t * The serialization code for this class.  This value should be incremented\n\t * whenever you change the structure of this class in an incompatible way,\n\t * typically by adding a new instance variable.\n\t */\n\n\tstatic final long serialVersionUID = 21L;\n\n\t/* Private instance variables */\n\t\n\tprivate JTextArea textArea;\n\tprivate JScrollPane scrollPane;\n\tprivate List<DocumentListener> documentListeners;\n\n\t/**\n\t * Creates a new <code>GTextArea</code> object with its anchor point at the\n\t * specified position.\n\t *\n\t * @param width The width of this <code>GTextArea</code> in pixels\n\t * @param height The height of this <code>GTextArea</code> in pixels\n\t */\n\n\tpublic GTextArea(double width, double height) {\n\t\tsuper(new JScrollPane());\n\t\ttextArea = new JTextArea();\n\t\tscrollPane = (JScrollPane) getInteractor();\n\t\tscrollPane.setViewportView(textArea);\n\t\tsetFont(DEFAULT_FONT);\n\t\tsetSize(width, height); \n\t}\n\t\n\tpublic void addDocumentListener(DocumentListener listener) {\n\t\ttextArea.getDocument().addDocumentListener(listener);\n\t\tif (documentListeners == null) {\n\t\t\tdocumentListeners = new ArrayList<DocumentListener>();\n\t\t}\n\t\tdocumentListeners.add(listener);\n\t}\n\t\n\tpublic boolean hasDocumentListener() {\n\t\treturn documentListeners != null && !documentListeners.isEmpty();\n\t}\n\t\n\tpublic void removeDocumentListener(DocumentListener listener) {\n\t\ttextArea.getDocument().removeDocumentListener(listener);\n\t\tif (documentListeners != null) {\n\t\t\tdocumentListeners.remove(listener);\n\t\t}\n\t}\n\n\tpublic void removeDocumentListeners() {\n\t\tif (documentListeners != null) {\n\t\t\tfor (DocumentListener listener : documentListeners) {\n\t\t\t\ttextArea.getDocument().removeDocumentListener(listener);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Sets the background color of this text area.\n\t *\n\t * @param color The background color to be used for this text area\n\t */\n\n\tpublic void setBackgroundColor(Color color) {\n\t\ttextArea.setBackground(color);\n\t}\n\t   \n\t/**\n\t * Changes the font used in the <code>GTextArea</code>.\n\t *\n\t * @param font A <code>Font</code> object indicating the new font\n\t */\n\n\tpublic void setFont(Font font) {\n\t\ttextArea.setFont(font);\n\t}\n\n\t/**\n\t * Changes the font used to display the <code>GTextArea</code> as specified by\n\t * the string <code>str</code>, which is interpreted in the style of\n\t * <code>Font.decode</code>.  The usual format of the font string is\n\t *\n\t *<pre>\n\t *    family-style-size\n\t *</pre>\n\t *\n\t * where both <code>style</code> and <code>size</code> are optional.\n\t * If any of these parts are specified as an asterisk, the existing\n\t * value is retained.\n\t *\n\t * @param str A <code>String</code> specifying the new font\n\t */\n\n\tpublic void setFont(String str) {\n\t\ttextArea.setFont(Font.decode(str));\n\t}\n\n\t/**\n\t * Returns the font used by this <code>GTextArea</code>.\n\t *\n\t * @return The font in use by this object\n\t */\n\n\tpublic Font getFont() {\n\t\treturn textArea.getFont();\n\t}\n\n\t/**\n\t * Changes the text displayed by this <code>GTextArea</code> object.\n\t *\n\t * @param str The new string to display\n\t */\n\n\tpublic void setText(String str) {\n\t\ttextArea.setText(str);\n\t}\n\n\t/**\n\t * Returns the text displayed by this object, encoded in Base64.\n\t *\n\t * @return The text displayed by this object\n\t */\n\n\tpublic String getText() {\n\t\treturn Base64.encodeBytes(textArea.getText().getBytes());\n\t}\n\n\t/**\n\t * Sets whether this text area is editable.\n\t *\n\t * @param flag true for editable\n\t */\n\n\tpublic void setEditable(boolean flag) {\n\t\ttextArea.setEditable(flag);\n\t}\n\t\n\t/**\n\t * Checks to see whether a point is inside the object.\n\t *\n\t * @param x The x-coordinate of the point being tested\n\t * @param y The y-coordinate of the point being tested\n\t * @return <code>true</code> if the point (<code>x</code>,&nbsp;<code>y</code>)\n\t *         is inside the object, and <code>false</code> otherwise\n\t */\n\n\t@Override\n\tpublic boolean contains(double x, double y) {\n\t\treturn textArea.contains((int) (x - getX()), (int) (y - getY()));\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTextArea_create.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class GTextArea_create extends JBESwingCommand {\n\t// gTextArea = new GTextArea(width, height);\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd jbe) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString id = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint width = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint height = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tGTextArea area = new GTextArea(width, height);\n\t\tjbe.defineGObject(id, area);\n\t\t\n\t\t// TODO: getInteractor here returns the JScrollPane; should it be instead linked to the JTextArea?\n\t\tjbe.defineSource(area.getInteractor(), id);\n\t}\n}"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTextArea_getText.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class GTextArea_getText extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tfinal String id = nextString(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\tfinal GTextArea area = (GTextArea) jbe.getGObject(id);\n\t\tif (area != null) {\n\t\t\tString text = area.getText();\n\t\t\tSplPipeDecoder.writeResult(text);\n\t\t} else {\n\t\t\tSplPipeDecoder.writeError(\"GTextArea_getText: null text area\");\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTextArea_setEditable.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class GTextArea_setEditable extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tfinal String id = nextString(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tfinal boolean flag = nextBoolean(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\tGTextArea area = (GTextArea) jbe.getGObject(id);\n\t\tif (area != null) { \n\t\t\tarea.setEditable(flag);\n\t\t} else {\n\t\t\tSplPipeDecoder.writeError(\"GTextArea_setEditable: null text area\");\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTextArea_setFont.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class GTextArea_setFont extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tfinal String id = nextString(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tfinal String font = nextString(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\tGTextArea area = (GTextArea) jbe.getGObject(id);\n\t\tif (area != null) {\n\t\t\tarea.setFont(font);\n\t\t} else {\n\t\t\tSplPipeDecoder.writeError(\"GTextArea_setFont: null text area\");\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTextArea_setText.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class GTextArea_setText extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tfinal String id = nextString(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tfinal String text = nextString(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\tGTextArea area = (GTextArea) jbe.getGObject(id);\n\t\tif (area != null) { \n\t\t\tarea.setText(text);\n\t\t} else {\n\t\t\tSplPipeDecoder.writeError(\"GTextArea_setText: null text area\");\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTextField.java",
    "content": "/*\n * @version 2018/06/23\n * - added document listener functionality\n */\n\npackage stanford.spl;\n\nimport java.awt.event.ActionListener;\nimport java.util.*;\nimport javax.swing.event.*;\nimport acm.gui.JPlaceholderTextField;\n\npublic class GTextField extends GInteractor {\n\tprivate List<DocumentListener> documentListeners;\n\t\n\tpublic GTextField(int paramInt, ActionListener paramActionListener) {\n\t\tsuper(new JPlaceholderTextField(paramInt));\n\t\tJPlaceholderTextField localJTextField = (JPlaceholderTextField) getInteractor();\n\t\tif (paramActionListener != null) {\n\t\t\tlocalJTextField.addActionListener(paramActionListener);\n\t\t}\n\t}\n\t\n\tpublic void addDocumentListener(DocumentListener listener) {\n\t\tJPlaceholderTextField textField = (JPlaceholderTextField) getInteractor();\n\t\ttextField.getDocument().addDocumentListener(listener);\n\t\tif (documentListeners == null) {\n\t\t\tdocumentListeners = new ArrayList<DocumentListener>();\n\t\t}\n\t\tdocumentListeners.add(listener);\n\t}\n\t\n\tpublic boolean hasDocumentListener() {\n\t\treturn documentListeners != null && !documentListeners.isEmpty();\n\t}\n\t\n\tpublic void removeDocumentListener(DocumentListener listener) {\n\t\tJPlaceholderTextField textField = (JPlaceholderTextField) getInteractor();\n\t\ttextField.getDocument().removeDocumentListener(listener);\n\t\tif (documentListeners != null) {\n\t\t\tdocumentListeners.remove(listener);\n\t\t}\n\t}\n\t\n\tpublic void removeDocumentListeners() {\n\t\tJPlaceholderTextField textField = (JPlaceholderTextField) getInteractor();\n\t\tif (documentListeners != null) {\n\t\t\tfor (DocumentListener listener : documentListeners) {\n\t\t\t\ttextField.getDocument().removeDocumentListener(listener);\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTextField_isEditable.java",
    "content": "package stanford.spl;\n\nimport javax.swing.JTextField;\n\nimport stanford.spl.GTextField;\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GTextField_isEditable extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tboolean result = false;\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GTextField) {\n\t\t\tJTextField interactor = (JTextField) ((GTextField) localGObject).getInteractor();\n\t\t\tresult = interactor.isEditable();\n\t\t}\n\t\tSplPipeDecoder.writeResult(result);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTextField_setEditable.java",
    "content": "package stanford.spl;\n\nimport javax.swing.JTextField;\n\nimport stanford.spl.GTextField;\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GTextField_setEditable extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tboolean editable = nextBoolean(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GTextField) {\n\t\t\tJTextField interactor = (JTextField) ((GTextField) localGObject).getInteractor();\n\t\t\tinteractor.setEditable(editable);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTextField_setPlaceholder.java",
    "content": "package stanford.spl;\n\nimport stanford.spl.GTextField;\nimport acm.graphics.GObject;\nimport acm.gui.*;\nimport acm.util.TokenScanner;\n\npublic class GTextField_setPlaceholder extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString interactorID = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString placeholder = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tGObject localGObject = paramJavaBackEnd.getGObject(interactorID);\n\t\tif (localGObject != null && localGObject instanceof GTextField) {\n\t\t\tJPlaceholderTextField interactor = (JPlaceholderTextField) ((GTextField) localGObject).getInteractor();\n\t\t\tinteractor.setPlaceholder(placeholder);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTextLabel.java",
    "content": "/*\n * @version 2017/10/12\n * - initial version\n */\n\npackage stanford.spl;\n\nimport javax.swing.JLabel;\n\npublic class GTextLabel extends GInteractor {\n\tpublic GTextLabel(String text) {\n\t\tsuper(new JLabel(text));\n\t}\n\t\n\t@Override\n\tpublic JLabel getInteractor() {\n\t\treturn (JLabel) super.getInteractor();\n\t}\n\t\n\tpublic String getText() {\n\t\treturn getInteractor().getText();\n\t}\n\t\n\tpublic void setText(String text) {\n\t\tgetInteractor().setText(text);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTextLabel_create.java",
    "content": "/*\n * @version 2017/10/12\n * - initial version\n */\n\npackage stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class GTextLabel_create extends JBESwingCommand {\n\t// gTextArea = new GTextArea(width, height);\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd jbe) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString id = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString text = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tGTextLabel label = new GTextLabel(text);\n\t\tjbe.defineGObject(id, label);\t       \n\t}\n}"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTimer.java",
    "content": "package stanford.spl;\r\n\r\nimport javax.swing.Timer;\r\n\r\npublic class GTimer extends Timer {\r\n\tprivate String id;\r\n\r\n\tpublic GTimer(String addr, double ms) {\r\n\t\tsuper((int) Math.round(ms), /* action listener */ null);\r\n\t\tthis.id = addr;\r\n\t}\r\n\r\n\tpublic String getId() {\r\n\t\treturn this.id;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GTimer_create.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\npublic class GTimer_create extends JBECommand {\r\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\r\n\t\tscanner.verifyToken(\"(\");\r\n\t\tString id = nextString(scanner);\r\n\t\tscanner.verifyToken(\",\");\r\n\t\tdouble ms = nextDouble(scanner);\r\n\t\tscanner.verifyToken(\")\");\r\n\t\tjbe.createTimer(id, ms);\r\n\t}\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_addToRegion.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GObject;\r\nimport acm.util.TokenScanner;\r\n\r\npublic class GWindow_addToRegion extends JBESwingCommand {\r\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\r\n\t\tscanner.verifyToken(\"(\");\r\n\t\tString windowId = nextString(scanner);\r\n\t\tscanner.verifyToken(\",\");\r\n\t\tString str2 = nextString(scanner);\r\n\t\tscanner.verifyToken(\",\");\r\n\t\tString str3 = nextString(scanner);\r\n\t\tscanner.verifyToken(\")\");\r\n\t\tJBEWindowInterface window = jbe.getWindowInterface(windowId);\r\n\t\tGObject obj = jbe.getGObject(str2);\r\n\t\tif ((window != null) && (obj != null)) {\r\n\t\t\twindow.addToRegion(jbe.getInteractor(obj), str3);\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_clear.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\npublic class GWindow_clear extends JBESwingCommand {\r\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\r\n\t\tscanner.verifyToken(\"(\");\r\n\t\tString windowId = nextString(scanner);\r\n\t\tJBEWindowInterface window = jbe.getWindowInterface(windowId);\r\n\t\tscanner.verifyToken(\")\");\r\n\t\tif (window != null) {\r\n\t\t\twindow.clear();\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_clearCanvas.java",
    "content": "/*\n * @version 2011/11/20\n */\n\npackage stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class GWindow_clearCanvas extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString windowId = nextString(scanner);\n\t\tJBEWindowInterface window = jbe.getWindowInterface(windowId);\n\t\tscanner.verifyToken(\")\");\n\t\tif (window != null) {\n\t\t\twindow.clearCanvas();\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_close.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class GWindow_close extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString windowId = nextString(scanner);\n\t\tJBEWindowInterface window = jbe.getWindowInterface(windowId);\n\t\tscanner.verifyToken(\")\");\n\t\tif (window != null) {\n\t\t\twindow.removeWindowListener(jbe);\n\t\t\tjbe.deleteWindow(windowId);\n\t\t\twindow.close();\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_create.java",
    "content": "package stanford.spl;\n\nimport stanford.spl.TopCompound;\nimport acm.util.TokenScanner;\n\npublic class GWindow_create extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString windowId = nextString(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tint width = nextInt(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tint height = nextInt(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tString str2 = nextString(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tboolean visible = nextBoolean(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\t\n\t\t// creates an object of type JBEWindow\n\t\tjbe.createWindow(windowId, width, height, (TopCompound) jbe.getGObject(str2), visible);\n\t\tSplPipeDecoder.writeOK();\n\t}\n}"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_delete.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\npublic class GWindow_delete extends JBESwingCommand {\r\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\r\n\t\tscanner.verifyToken(\"(\");\r\n\t\tString windowId = nextString(scanner);\r\n\t\tscanner.verifyToken(\")\");\r\n\t\tjbe.deleteWindow(windowId);\r\n\t}\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_draw.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GObject;\r\nimport acm.util.TokenScanner;\r\nimport java.awt.Graphics2D;\r\n\r\npublic class GWindow_draw extends JBESwingCommand {\r\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\r\n\t\tscanner.verifyToken(\"(\");\r\n\t\tString windowId = nextString(scanner);\r\n\t\tJBEWindowInterface window = jbe.getWindowInterface(windowId);\r\n\t\tscanner.verifyToken(\",\");\r\n\t\twindowId = nextString(scanner);\r\n\t\tGObject obj = jbe.getGObject(windowId);\r\n\t\tscanner.verifyToken(\")\");\r\n\t\tif ((window != null) && (obj != null) && (obj.isVisible())) {\r\n\t\t\tJBECanvas canvas = window.getCanvas();\r\n\t\t\tGraphics2D g = canvas.getOSG();\r\n\t\t\tg.setColor(obj.getColor());\r\n\t\t\tobj.paint(g);\r\n\t\t\tcanvas.repaint();\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_drawInBackground.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\nimport java.awt.Graphics2D;\n\n/*\n * same as GWindow_draw but doesn't repaint for speed\n */\npublic class GWindow_drawInBackground extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString windowId = nextString(scanner);\n\t\tJBEWindowInterface window = jbe.getWindowInterface(windowId);\n\t\tscanner.verifyToken(\",\");\n\t\tString objectId = nextString(scanner);\n\t\tGObject obj = jbe.getGObject(objectId);\n\t\tscanner.verifyToken(\")\");\n\t\tif ((window != null) && (obj != null) && (obj.isVisible())) {\n\t\t\tJBECanvas canvas = window.getCanvas();\n\t\t\tcanvas.setAutoRepaintFlag(false);\n\t\t\tGraphics2D g = canvas.getOSG();\n\t\t\tg.setColor(obj.getColor());\n\t\t\tobj.paint(g);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_exitGraphics.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\npublic class GWindow_exitGraphics extends JBESwingCommand {\r\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\r\n\t\tscanner.verifyToken(\"(\");\r\n\t\tscanner.verifyToken(\")\");\r\n\t\tSystem.exit(0);\r\n\t}\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_getCanvasSize.java",
    "content": "package stanford.spl;\n\nimport java.awt.Dimension;\n\nimport acm.util.TokenScanner;\n\npublic class GWindow_getCanvasSize extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString windowId = nextString(scanner);\n\t\tJBEWindowInterface window = jbe.getWindowInterface(windowId);\n\t\tscanner.verifyToken(\")\");\n\t\tDimension dim = new Dimension(0, 0);\n\t\tif (window != null) {\n\t\t\tdim = window.getCanvasSize();\n\t\t}\n\t\tSplPipeDecoder.writeResult(\"GDimension(\" + dim.width + \", \" + dim.height + \")\");\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_getContentPaneSize.java",
    "content": "package stanford.spl;\n\nimport java.awt.Dimension;\n\nimport acm.util.TokenScanner;\n\npublic class GWindow_getContentPaneSize extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString windowId = nextString(scanner);\n\t\tJBEWindowInterface window = jbe.getWindowInterface(windowId);\n\t\tscanner.verifyToken(\")\");\n\t\tDimension dim = new Dimension(0, 0);\n\t\tif (window != null) {\n\t\t\tdim = window.getContentPaneSize();\n\t\t}\n\t\tSplPipeDecoder.writeResult(\"GDimension(\" + dim.width + \", \" + dim.height + \")\");\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_getLocation.java",
    "content": "package stanford.spl;\n\nimport java.awt.Point;\n\nimport acm.util.TokenScanner;\n\npublic class GWindow_getLocation extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString windowId = nextString(scanner);\n\t\tJBEWindowInterface window = jbe.getWindowInterface(windowId);\n\t\tscanner.verifyToken(\")\");\n\t\tPoint p = new Point(0, 0);\n\t\tif (window != null) {\n\t\t\tp = window.getLocation();\n\t\t}\n\t\tSplPipeDecoder.writeResult(\"Point(\" + p.x + \", \" + p.y + \")\");\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_getPixel.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class GWindow_getPixel extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString windowId = nextString(scanner);\n\t\tJBEWindowInterface window = jbe.getWindowInterface(windowId);\n\t\tscanner.verifyToken(\",\");\n\t\tint x = nextInt(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tint y = nextInt(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\t\n\t\tint rgb = window.getCanvas().getRGB(x, y);\n\t\tSplPipeDecoder.writeResult(rgb);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_getPixels.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class GWindow_getPixels extends JBESwingCommand {\n\t// gbufferedimage.load(\"foobar.png\");\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString windowId = nextString(scanner);\n\t\tJBEWindowInterface window = jbe.getWindowInterface(windowId);\n\t\tscanner.verifyToken(\")\");\n\t\tif (window == null) {\n\t\t\treturn;\n\t\t}\n\t\tString base64px = window.getCanvas().getPixelsAsString();\n\t\tSplPipeDecoder.writeResult(base64px);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_getRegionSize.java",
    "content": "package stanford.spl;\n\nimport java.awt.*;\n\nimport acm.util.TokenScanner;\n\npublic class GWindow_getRegionSize extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString id = nextString(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tString region = nextString(scanner);\n\t\tif (!region.isEmpty()) {\n\t\t\t// BorderLayout requires regions in title case, e.g. \"North\"\n\t\t\tregion = region.substring(0, 1).toUpperCase() + region.substring(1).toLowerCase();\n\t\t}\n\t\tscanner.verifyToken(\")\");\n\t\t\n\t\tDimension dim = new Dimension(0, 0);\n\t\tJBEWindowInterface window = jbe.getWindowInterface(id);\n\t\tif (window != null) {\n\t\t\tContainer pane = window.getContentPane();\n\t\t\tLayoutManager layout = pane.getLayout();\n\t\t\tif (layout instanceof BorderLayout) {\n\t\t\t\tBorderLayout border = (BorderLayout) layout;\n\t\t\t\tComponent comp = border.getLayoutComponent(region);\n\t\t\t\tif (comp != null) {\n\t\t\t\t\tdim = comp.isShowing() ? comp.getSize() : comp.getPreferredSize();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tSplPipeDecoder.writeResult(\"GDimension(\" + dim.width + \", \" + dim.height + \")\");\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_getScreenHeight.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\nimport java.awt.Dimension;\r\nimport java.awt.Toolkit;\r\n\r\npublic class GWindow_getScreenHeight extends JBESwingCommand {\r\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\r\n\t\tscanner.verifyToken(\"(\");\r\n\t\tscanner.verifyToken(\")\");\r\n\t\tDimension size = Toolkit.getDefaultToolkit().getScreenSize();\r\n\t\tSplPipeDecoder.writeResult(size.height);\r\n\t}\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_getScreenSize.java",
    "content": "package stanford.spl;\n\nimport java.awt.*;\n\nimport acm.util.TokenScanner;\n\npublic class GWindow_getScreenSize extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tscanner.verifyToken(\")\");\n\t\tDimension size = Toolkit.getDefaultToolkit().getScreenSize();\n\t\tSplPipeDecoder.writeResult(\"GDimension(\" + size.width + \", \" + size.height + \")\");\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_getScreenWidth.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\nimport java.awt.Dimension;\r\nimport java.awt.Toolkit;\r\n\r\npublic class GWindow_getScreenWidth extends JBESwingCommand {\r\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\r\n\t\tscanner.verifyToken(\"(\");\r\n\t\tscanner.verifyToken(\")\");\r\n\t\tDimension size = Toolkit.getDefaultToolkit().getScreenSize();\r\n\t\tSplPipeDecoder.writeResult(size.width);\r\n\t}\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_getSize.java",
    "content": "package stanford.spl;\n\nimport java.awt.Dimension;\n\nimport acm.util.TokenScanner;\n\npublic class GWindow_getSize extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString windowId = nextString(scanner);\n\t\tJBEWindowInterface window = jbe.getWindowInterface(windowId);\n\t\tscanner.verifyToken(\")\");\n\t\tDimension size = new Dimension(0, 0);\n\t\tif (window != null) {\n\t\t\tsize = window.getSize();\n\t\t}\n\t\tSplPipeDecoder.writeResult(\"GDimension(\" + size.width + \", \" + size.height + \")\");\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_minimize.java",
    "content": "package stanford.spl;\n\nimport java.awt.Frame;\n\nimport acm.util.TokenScanner;\n\npublic class GWindow_minimize extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString windowId = nextString(scanner);\n\t\tJBEWindowInterface window = jbe.getWindowInterface(windowId);\n\t\tscanner.verifyToken(\")\");\n\t\tif (window != null) {\n\t\t\twindow.setState(Frame.ICONIFIED);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_pack.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class GWindow_pack extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString windowId = nextString(scanner);\n\t\tJBEWindowInterface window = jbe.getWindowInterface(windowId);\n\t\tscanner.verifyToken(\")\");\n\t\tif (window != null) {\n\t\t\t// BUGFIX: some kind of race condition on packing windows; slight delay helps\n\t\t\ttry {\n\t\t\t\tThread.sleep(50);\n\t\t\t} catch (InterruptedException ie) {\n\t\t\t\t// empty\n\t\t\t}\n\t\t\twindow.pack();\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_rememberPosition.java",
    "content": "/*\n * @version 2017/10/05\n * - initial version\n */\n\npackage stanford.spl;\n\nimport java.awt.*;\nimport acm.util.TokenScanner;\n\npublic class GWindow_rememberPosition extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString windowId = nextString(scanner);\n\t\tJBEWindowInterface window = jbe.getWindowInterface(windowId);\n\t\tscanner.verifyToken(\")\");\n\t\tif (window != null && window instanceof Window) {\n\t\t\tSPLWindowSettings.loadWindowLocation((Window) window);\n\t\t\tSPLWindowSettings.saveWindowLocation((Window) window);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_removeFromRegion.java",
    "content": "package stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.util.TokenScanner;\n\npublic class GWindow_removeFromRegion extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString windowId = nextString(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tString str2 = nextString(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tString str3 = nextString(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\tJBEWindowInterface window = jbe.getWindowInterface(windowId);\n\t\tGObject localGObject = jbe.getGObject(str2);\n\t\tif ((window != null) && (localGObject != null)) {\n\t\t\twindow.removeFromRegion(\n\t\t\t\t\tjbe.getInteractor(localGObject), str3);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_repaint.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\npublic class GWindow_repaint extends JBESwingCommand {\r\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\r\n\t\tscanner.verifyToken(\"(\");\r\n\t\tString windowId = nextString(scanner);\r\n\t\tJBEWindowInterface window = jbe.getWindowInterface(windowId);\r\n\t\tscanner.verifyToken(\")\");\r\n\t\tif (window != null) {\r\n\t\t\twindow.getCanvas().repaint();\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_requestFocus.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\npublic class GWindow_requestFocus extends JBESwingCommand {\r\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\r\n\t\tscanner.verifyToken(\"(\");\r\n\t\tString windowId = nextString(scanner);\r\n\t\tJBEWindowInterface window = jbe.getWindowInterface(windowId);\r\n\t\tscanner.verifyToken(\")\");\r\n\t\tif (window != null) {\r\n\t\t\twindow.toFront();\r\n\t\t\twindow.getCanvas().requestFocus();\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_saveCanvasPixels.java",
    "content": "/*\n * Given a window and a file name, dumps the pixels of that window's canvas to that image file.\n * @version 2016/10/09\n * - now writes ack of \"ok\" on finish\n * @version 2016/07/30\n * - initial version\n */\n\npackage stanford.spl;\n\nimport acm.util.*;\nimport stanford.cs106.io.IORuntimeException;\n\npublic class GWindow_saveCanvasPixels extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd jbe) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString windowID = nextString(paramTokenScanner);\n\t\tJBEWindowInterface window = jbe.getWindowInterface(windowID);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString filename = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tif (window == null) {\n\t\t\tSplPipeDecoder.writeError(\"window not found\");\n\t\t} else {\n\t\t\ttry {\n\t\t\t\twindow.saveCanvasPixels(filename);\n\t\t\t\tSplPipeDecoder.writeOK();\n\t\t\t} catch (IORuntimeException ioe) {\n\t\t\t\tSplPipeDecoder.writeError(ioe);\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_setCanvasDrawingMode.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class GWindow_setCanvasDrawingMode extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString windowId = nextString(scanner);\n\t\tJBEWindowInterface window = jbe.getWindowInterface(windowId);\n\t\tscanner.verifyToken(\",\");\n\t\tint mode = nextInt(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\tif (window != null) {\n\t\t\tJBECanvas canvas = window.getCanvas();\n\t\t\tcanvas.setDrawingMode(mode);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_setCanvasSize.java",
    "content": "package stanford.spl;\n\nimport java.awt.Dimension;\n\nimport acm.util.TokenScanner;\n\npublic class GWindow_setCanvasSize extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString windowId = nextString(scanner);\n\t\tJBEWindowInterface window = jbe.getWindowInterface(windowId);\n\t\tscanner.verifyToken(\",\");\n\t\tint w = nextInt(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tint h = nextInt(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\tif (window != null) {\n\t\t\twindow.getCanvas().setPreferredSize(new Dimension(w, h));\n\t\t\twindow.getCanvas().validate();\n\t\t\twindow.getCanvas().setSize(new Dimension(w, h));\n\t\t\twindow.getContentPane().validate();\n\t\t\twindow.validate();\n\t\t\tif (window.isVisible()) {\n\t\t\t\twindow.pack();\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_setCloseOperation.java",
    "content": "/*\n * @version 2016/11/24\n * - initial version\n */\n\npackage stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class GWindow_setCloseOperation extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString windowId = nextString(scanner);\n\t\tJBEWindowInterface window = jbe.getWindowInterface(windowId);\n\t\tscanner.verifyToken(\",\");\n\t\tint op = nextInt(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\tif (window != null) {\n\t\t\twindow.setDefaultCloseOperation(op);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_setExitOnClose.java",
    "content": "package stanford.spl;\n\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.awt.event.WindowEvent;\nimport java.awt.event.WindowListener;\nimport java.util.HashSet;\nimport java.util.Set;\n\nimport javax.swing.Timer;\n\nimport acm.util.TokenScanner;\n\npublic class GWindow_setExitOnClose extends JBESwingCommand implements ActionListener, WindowListener {\n\tprivate Set<String> windowsToMonitor = new HashSet<String>();\n\t\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString windowId = nextString(scanner);\n\t\tJBEWindowInterface window = jbe.getWindowInterface(windowId);\n\t\tscanner.verifyToken(\",\");\n\t\tString bool = nextString(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\tif (bool.equals(\"true\")) {\n\t\t\twindowsToMonitor.add(windowId);\n\t\t} else {\n\t\t\twindowsToMonitor.remove(windowId);\n\t\t}\n\t\t\n\t\tif (window != null) {\n\t\t\t// won't turn off if you re-call it and set it to false; oh well\n\t\t\twindow.addWindowListener(this);\n\t\t}\n\t}\n\n\tpublic void windowClosing(WindowEvent e) {\n\t\tif (!(e.getSource() instanceof JBEWindow)) { return; }\n\t\tJBEWindow window = (JBEWindow) e.getSource();\n\t\tString id = window.getWindowId();\n\t\tif (windowsToMonitor.contains(id)) {\n\t\t\t// shut down after a delay to let any messages print out\n\t\t\tTimer tim = new Timer(500, this);\n\t\t\ttim.start();\n\t\t}\n\t}\n\t\n\tpublic void actionPerformed(ActionEvent e) {\n\t\tSystem.exit(0);\n\t}\n\t\n\tpublic void windowActivated(WindowEvent arg0) {}\n\tpublic void windowClosed(WindowEvent e) {}\n\tpublic void windowDeactivated(WindowEvent e) {}\n\tpublic void windowDeiconified(WindowEvent e) {}\n\tpublic void windowIconified(WindowEvent e) {}\n\tpublic void windowOpened(WindowEvent e) {}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_setLocation.java",
    "content": "package stanford.spl;\n\nimport java.awt.Dimension;\nimport java.awt.Point;\nimport java.awt.Toolkit;\nimport java.awt.Window;\n\n//import javax.swing.JOptionPane;\n\nimport acm.util.TokenScanner;\n\npublic class GWindow_setLocation extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString windowId = nextString(scanner);\n\t\tJBEWindowInterface window = jbe.getWindowInterface(windowId);\n\t\tscanner.verifyToken(\",\");\n\t\tint x = nextInt(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tint y = nextInt(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\tif (window != null) {\n\t\t\t// BUGBUG: It appears that TokenScanner can't handle negative numbers\n\t\t\t//         and doesn't think they are int tokens.  Ugh.\n\t\t\tif ((x == -1 && y == -1) || (x == 999999 && y == 999999)) {\n\t\t\t\tPoint center = getCenter(window);\n\t\t\t\tx = center.x;\n\t\t\t\ty = center.y;\n\t\t\t}\n\t\t\twindow.setLocation(x, y);\n\t\t}\n\t}\n\t\n\tpublic static Point getCenter(JBEWindowInterface window) {\n\t\treturn getCenter(window.getWidth(), window.getHeight());\n\t}\n\t\n\tpublic static Point getCenter(Window window) {\n\t\treturn getCenter(window.getWidth(), window.getHeight());\n\t}\n\t\n\tpublic static Point getCenter(Dimension windowDimensions) {\n\t\treturn getCenter(windowDimensions.width, windowDimensions.height);\n\t}\n\t\n\tpublic static Point getCenter(int windowWidth, int windowHeight) {\n\t\tDimension screen = Toolkit.getDefaultToolkit().getScreenSize();\n\t\tint centerX = Math.max(0, (screen.width - windowWidth) / 2);\n\t\tint centerY = Math.max(0, (screen.height - windowHeight) / 2);\n\t\treturn new Point(centerX, centerY);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_setLocationSaved.java",
    "content": "package stanford.spl;\n\nimport java.awt.*;\nimport acm.util.TokenScanner;\n\npublic class GWindow_setLocationSaved extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString windowId = nextString(scanner);\n\t\tJBEWindowInterface window = jbe.getWindowInterface(windowId);\n\t\tscanner.verifyToken(\",\");\n\t\tboolean value = nextBoolean(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\tif (window != null && window instanceof Window) {\n\t\t\tif (value) {\n\t\t\t\tSPLWindowSettings.loadWindowLocation((Window) window);\n\t\t\t\tSPLWindowSettings.saveWindowLocation((Window) window);\n\t\t\t} else {\n\t\t\t\tSPLWindowSettings.forgetWindowLocation((Window) window);\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_setPixel.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class GWindow_setPixel extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString windowId = nextString(scanner);\n\t\tJBEWindowInterface window = jbe.getWindowInterface(windowId);\n\t\tscanner.verifyToken(\",\");\n\t\tint x = nextInt(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tint y = nextInt(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tint rgb = nextInt(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tboolean repaint = nextBoolean(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\t\n\t\twindow.getCanvas().setRGB(x, y, rgb, repaint);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_setPixels.java",
    "content": "package stanford.spl;\n\nimport acm.util.*;\nimport stanford.cs106.io.IORuntimeException;\n\npublic class GWindow_setPixels extends JBESwingCommand {\n\t// gbufferedimage.load(\"foobar.png\");\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString windowId = nextString(scanner);\n\t\tJBEWindowInterface window = jbe.getWindowInterface(windowId);\n\t\tscanner.verifyToken(\",\");\n\t\tString base64 = nextBase64(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\tif (window == null) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\ttry {\n\t\t\twindow.getCanvas().setPixelsFromString(base64);\n\t\t} catch (IORuntimeException ioe) {\n\t\t\tSplPipeDecoder.writeError(ioe);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_setRegionAlignment.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\npublic class GWindow_setRegionAlignment extends JBESwingCommand {\r\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\r\n\t\tscanner.verifyToken(\"(\");\r\n\t\tString windowId = nextString(scanner);\r\n\t\tscanner.verifyToken(\",\");\r\n\t\tString str2 = nextString(scanner);\r\n\t\tscanner.verifyToken(\",\");\r\n\t\tString str3 = nextString(scanner);\r\n\t\tscanner.verifyToken(\")\");\r\n\t\tJBEWindowInterface window = jbe.getWindowInterface(windowId);\r\n\t\tif (window != null) {\r\n\t\t\twindow.setRegionAlignment(str2, str3);\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_setRegionSize.java",
    "content": "package stanford.spl;\n\nimport java.awt.*;\n\nimport acm.util.TokenScanner;\n\npublic class GWindow_setRegionSize extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString id = nextString(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tString region = nextString(scanner);\n\t\tif (!region.isEmpty()) {\n\t\t\t// BorderLayout requires regions in title case, e.g. \"North\"\n\t\t\tregion = region.substring(0, 1).toUpperCase() + region.substring(1).toLowerCase();\n\t\t}\n\t\tscanner.verifyToken(\",\");\n\t\tint width = (int) nextDouble(scanner); \n\t\tscanner.verifyToken(\",\");\n\t\tint height = (int) nextDouble(scanner); \n\t\tscanner.verifyToken(\")\");\n\t\t\n\t\tDimension dim = new Dimension(width, height);\n\t\tJBEWindowInterface window = jbe.getWindowInterface(id);\n\t\tif (window != null) {\n\t\t\tContainer pane = window.getContentPane();\n\t\t\tLayoutManager layout = pane.getLayout();\n\t\t\tif (layout instanceof BorderLayout) {\n\t\t\t\tBorderLayout border = (BorderLayout) layout;\n\t\t\t\tComponent comp = border.getLayoutComponent(region);\n\t\t\t\tif (comp != null) {\n\t\t\t\t\tif (comp.isShowing()) {\n\t\t\t\t\t\tcomp.setSize(dim);\n\t\t\t\t\t\twindow.validate();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcomp.setPreferredSize(dim);\n\t\t\t\t\t}\n\t\t\t\t} else if (region.equalsIgnoreCase(\"Center\")) {\n\t\t\t\t\t// resize the window until the central area is the given size\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tSplPipeDecoder.writeResult(\"GDimension(\" + dim.width + \", \" + dim.height + \")\");\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_setRepaintImmediately.java",
    "content": "/*\n * @version 2017/10/12\n * - initial version\n */\n\npackage stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class GWindow_setRepaintImmediately extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString windowId = nextString(scanner);\n\t\tJBEWindowInterface window = jbe.getWindowInterface(windowId);\n\t\tscanner.verifyToken(\",\");\n\t\tboolean value = nextBoolean(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\tif (window != null) {\n\t\t\twindow.setRepaintImmediately(value);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_setResizable.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class GWindow_setResizable extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString windowId = nextString(scanner);\n\t\tJBEWindowInterface window = jbe.getWindowInterface(windowId);\n\t\tscanner.verifyToken(\",\");\n\t\tboolean value = nextBoolean(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\tif (window != null) {\n\t\t\twindow.setResizable(value);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_setSize.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class GWindow_setSize extends JBESwingCommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tString windowId = nextString(scanner);\n\t\tJBEWindowInterface window = jbe.getWindowInterface(windowId);\n\t\tscanner.verifyToken(\",\");\n\t\tint w = nextInt(scanner);\n\t\tscanner.verifyToken(\",\");\n\t\tint h = nextInt(scanner);\n\t\tscanner.verifyToken(\")\");\n\t\tif (window != null) {\n\t\t\twindow.setSize(w, h);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_setTitle.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\npublic class GWindow_setTitle extends JBESwingCommand {\r\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\r\n\t\tscanner.verifyToken(\"(\");\r\n\t\tString windowId = nextString(scanner);\r\n\t\tJBEWindowInterface window = jbe.getWindowInterface(windowId);\r\n\t\tscanner.verifyToken(\",\");\r\n\t\tString str2 = nextString(scanner);\r\n\t\tscanner.verifyToken(\")\");\r\n\t\tif (window != null) {\r\n\t\t\twindow.setTitle(str2);\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_setVisible.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\npublic class GWindow_setVisible extends JBESwingCommand {\r\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\r\n\t\tscanner.verifyToken(\"(\");\r\n\t\tString windowId = nextString(scanner);\r\n\t\tJBEWindowInterface window = jbe.getWindowInterface(windowId);\r\n\t\tscanner.verifyToken(\",\");\r\n\t\tboolean bool = scanner.nextToken().equals(\"true\");\r\n\t\tscanner.verifyToken(\")\");\r\n\t\tif (window != null) {\r\n\t\t\twindow.setVisible(bool);\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_toBack.java",
    "content": "/*\n * @version 2016/10/08\n * - initial version\n */\n\npackage stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class GWindow_toBack extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString str1 = nextString(paramTokenScanner);\n\t\tJBEWindowInterface localJBEWindow = paramJavaBackEnd.getWindowInterface(str1);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tif (localJBEWindow != null) {\n\t\t\tlocalJBEWindow.toBack();\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/GWindow_toFront.java",
    "content": "package stanford.spl;\n\nimport java.awt.Frame;\n\nimport acm.util.TokenScanner;\n\npublic class GWindow_toFront extends JBESwingCommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString str1 = nextString(paramTokenScanner);\n\t\tJBEWindowInterface localJBEWindow = paramJavaBackEnd.getWindowInterface(str1);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tif (localJBEWindow != null) {\n\t\t\tlocalJBEWindow.setState(Frame.NORMAL);\n\t\t\tlocalJBEWindow.toFront();\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/HTTPDownloadException.java",
    "content": "package stanford.spl;\n\n/* Exception type thrown when something goes wrong with an HTTP download. */\npublic class HTTPDownloadException extends Exception {\n\tfinal int statusCode;\n\t\n\tpublic HTTPDownloadException(int statusCode) {\n\t\tthis.statusCode = statusCode;\n\t}\n\t\n\tpublic int getStatusCode() {\n\t\treturn statusCode;\n\t}\n\n\t@Override public String getMessage() {\n\t\treturn \"HTTP Error: \" + statusCode;\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/HttpServer_sendResponse.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\nimport stanford.cs106.net.BackEndServer;\n\npublic class HttpServer_sendResponse extends JBECommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tint requestID = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint httpErrorCode = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString contentType = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString responseText = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tBackEndServer server = BackEndServer.getInstance();\n\t\tserver.sendResponse(requestID, httpErrorCode, contentType, responseText);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/HttpServer_sendResponseFile.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\nimport stanford.cs106.net.BackEndServer;\n\npublic class HttpServer_sendResponseFile extends JBECommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tint requestID = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint httpErrorCode = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString contentType = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString responseFilePath = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tBackEndServer server = BackEndServer.getInstance();\n\t\tserver.sendResponseFile(requestID, httpErrorCode, contentType, responseFilePath);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/HttpServer_start.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\nimport stanford.cs106.net.BackEndServer;\n\npublic class HttpServer_start extends JBECommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tint port = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tBackEndServer server = BackEndServer.getInstance(port);\n\t\tserver.setJavaBackEnd(paramJavaBackEnd);\n\t\tserver.start();\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/HttpServer_stop.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\nimport stanford.cs106.net.BackEndServer;\n\npublic class HttpServer_stop extends JBECommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tBackEndServer server = BackEndServer.getInstance();\n\t\tserver.stop();\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/JBECanvas.java",
    "content": "/*\n * @version 2016/10/25\n * - bug fix for paint() -> paintComponent() (prevents overdraw on shapes)\n * @version 2016/08/01\n * - added toImage method (to facilitate image diffing and autograders)\n * @version 2016/07/20\n * - bug fix with clear()  (wasn't working)\n * @version ...\n * - I brought this in so I could overwrite/fix setPreferredSize\n */\n\npackage stanford.spl;\n\nimport acm.graphics.*;\nimport java.awt.*;\n\npublic class JBECanvas extends GCanvas {\n\tprivate static final long serialVersionUID = 1L;\n\tprivate String windowId;\n\tprivate TopCompound topCompound;\n\tprivate int preferredWidth;\n\tprivate int preferredHeight;\n\n\tpublic JBECanvas(String windowId, int width, int height) {\n\t\tthis.windowId = windowId;\n\t\tthis.preferredWidth = width;\n\t\tthis.preferredHeight = height;\n\t}\n\n\tprotected void setTopCompound(TopCompound top) {\n\t\tthis.topCompound = top;\n\t\ttop.setCanvas(this);\n\t\ttop.setParent(this);\n\t}\n\n\tprotected TopCompound getTopCompound() {\n\t\treturn this.topCompound;\n\t}\n\n\tpublic String getWindowId() {\n\t\treturn this.windowId;\n\t}\n\n\tpublic Dimension getPreferredSize() {\n\t\treturn new Dimension(this.preferredWidth, this.preferredHeight);\n\t}\n\t\n\tpublic void setPreferredSize(Dimension d) {\n\t\tthis.preferredWidth = d.width;\n\t\tthis.preferredHeight = d.height;\n\t}\n\n\t@Override\n\tpublic void clear() {\n\t\tif (topCompound != null) {\n\t\t\ttopCompound.removeAll();\n\t\t}\n\t\tsuper.clear();\n\t\tconditionalRepaint();\n\t}\n\n//\tpublic void paint(Graphics paramGraphics) {\n//\t\tsuper.paint(paramGraphics);\n//\t\tthis.topCompound.paint(paramGraphics);\n//\t}\n\n\tpublic void paintComponent(Graphics g) {\n\t\tsuper.paintComponent(g);\n\t\tGraphicsUtils.setAntialiasing(g, isAntiAliasing());\n\t\tthis.topCompound.paint(g);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/JBECommand.java",
    "content": "/*\n * @version 2018/07/16\n * - added GScrollBar_*\n * @version 2018/06/24\n * - added GFormattedPane_get/setContentType\n * @version 2018/06/23\n * - added GFormattedPane_*\n * @version 2018/06/20\n * - added URL_downloadWithHeaders\n * - added GInteractor_add/removeDocumentListener\n * @version 2018/01/26\n * - added GWindow_setCanvasDrawingMode\n * @version 2017/10/12\n * - added GTextLabel_create\n * - added GWindow_setRepaintImmediately\n * @version 2017/10/05\n * - added GWindow_rememberPosition\n * @version 2017/09/24\n * - added JBEConsole_getTitle\n * @version 2016/12/01\n * - added AutograderUnitTest_catchExceptions\n * @version 2016/11/26\n * - added Clipboard_get/set\n * - added GTable_set Cell/Column/Row Background, Font, Foreground\n * - added GWindow_setCloseOperation\n * @version 2016/11/18\n * - added GTable_setEditorValue, _setRowColumnHeadersVisible, etc.\n * @version 2016/10/25\n * - added GInteractor_set/getFont, Mnemonic, Accelerator\n * @version 2016/10/23\n * - added GInteractor_add/removeActionListener\n * @version 2016/10/16\n * - added GWindow pixel methods; added GInteractor_setTooltip\n * @version 2016/10/12\n * - added shouldRunOnSwingEventThread\n * @version 2016/10/08\n * - added GWindow_toBack\n * @version 2016/09/26\n * - added Note_play\n * @version 2016/07/06\n * - added DiffImage_show\n */\n\npackage stanford.spl;\n\nimport acm.util.TokenScanner;\nimport stanford.cs106.reflect.ReflectionRuntimeException;\nimport stanford.cs106.util.ExceptionUtils;\nimport java.io.BufferedReader;\nimport java.io.Reader;\nimport java.lang.reflect.Field;\nimport java.lang.reflect.InvocationTargetException;\nimport java.nio.charset.Charset;\nimport java.util.*;\n\npublic abstract class JBECommand {\n\t@SuppressWarnings(\"unchecked\")\n\tprivate static final Set<Class<? extends JBECommand>> KNOWN_COMMANDS = new LinkedHashSet<Class<? extends JBECommand>>(Arrays.asList(\n\t\t\tAutograderInput_addButton.class,\n\t\t\tAutograderInput_addCategory.class,\n\t\t\tAutograderInput_removeButton.class,\n\t\t\tAutograderInput_removeCategory.class,\n\t\t\tAutograderInput_setColumns.class,\n\t\t\tAutograderInput_setVisible.class,\n\t\t\tAutograderUnitTest_addTest.class,\n\t\t\tAutograderUnitTest_catchExceptions.class,\n\t\t\tAutograderUnitTest_clearTests.class,\n\t\t\tAutograderUnitTest_clearTestResults.class,\n\t\t\tAutograderUnitTest_isChecked.class,\n\t\t\tAutograderUnitTest_runTestsInSeparateThreads.class,\n\t\t\tAutograderUnitTest_setChecked.class,\n\t\t\tAutograderUnitTest_setTestCounts.class,\n\t\t\tAutograderUnitTest_setTestDetails.class,\n\t\t\tAutograderUnitTest_setTestingCompleted.class,\n\t\t\tAutograderUnitTest_setTestResult.class,\n\t\t\tAutograderUnitTest_setTestRuntime.class,\n\t\t\tAutograderUnitTest_setVisible.class,\n\t\t\tAutograderUnitTest_setWindowDescriptionText.class,\n\t\t\tClipboard_get.class,\n\t\t\tClipboard_set.class,\n\t\t\tDiffImage_compareWindowToImage.class,\n\t\t\tDiffImage_show.class,\n\t\t\tDiffImage_compareImages.class,\n\t\t\tFile_openFileDialog.class,\n\t\t\tFile_getTempDirectory.class,\n\t\t\tG3DRect_create.class,\n\t\t\tG3DRect_setRaised.class,\n\t\t\tGArc_create.class,\n\t\t\tGArc_setFrameRectangle.class,\n\t\t\tGArc_setStartAngle.class,\n\t\t\tGArc_setSweepAngle.class,\n\t\t\tGBufferedImage_create.class,\n\t\t\tGBufferedImage_fill.class,\n\t\t\tGBufferedImage_fillRegion.class,\n\t\t\tGBufferedImage_load.class,\n\t\t\tGBufferedImage_resize.class,\n\t\t\tGBufferedImage_save.class,\n\t\t\tGBufferedImage_setRGB.class,\n\t\t\tGBufferedImage_updateAllPixels.class,\n\t\t\tGButton_create.class,\n\t\t\tGCheckBox_create.class,\n\t\t\tGCheckBox_isSelected.class,\n\t\t\tGCheckBox_setSelected.class,\n\t\t\tGChooser_addItem.class,\n\t\t\tGChooser_create.class,\n\t\t\tGChooser_getSelectedItem.class,\n\t\t\tGChooser_setSelectedItem.class,\n\t\t\tGCompound_add.class,\n\t\t\tGCompound_create.class,\n\t\t\tGEvent_getNextEvent.class,\n\t\t\tGEvent_waitForEvent.class,\n\t\t\tGFileChooser_showOpenDialog.class,\n\t\t\tGFileChooser_showSaveDialog.class,\n\t\t\tGFormattedPane_create.class,\n\t\t\tGFormattedPane_getContentType.class,\n\t\t\tGFormattedPane_getPage.class,\n\t\t\tGFormattedPane_getText.class,\n\t\t\tGFormattedPane_setContentType.class,\n\t\t\tGFormattedPane_setPage.class,\n\t\t\tGFormattedPane_setText.class,\n\t\t\tGImage_create.class,\n\t\t\tGInteractor_addActionListener.class,\n\t\t\tGInteractor_addChangeListener.class,\n\t\t\tGInteractor_getAccelerator.class,\n\t\t\tGInteractor_getFont.class,\n\t\t\tGInteractor_getMnemonic.class,\n\t\t\tGInteractor_getSize.class,\n\t\t\tGInteractor_isEnabled.class,\n\t\t\tGInteractor_removeActionListener.class,\n\t\t\tGInteractor_removeChangeListener.class,\n\t\t\tGInteractor_requestFocus.class,\n\t\t\tGInteractor_setAccelerator.class,\n\t\t\tGInteractor_setActionCommand.class,\n\t\t\tGInteractor_setBackground.class,\n\t\t\tGInteractor_setEnabled.class,\n\t\t\tGInteractor_setFont.class,\n\t\t\tGInteractor_setIcon.class,\n\t\t\tGInteractor_setMnemonic.class,\n\t\t\tGInteractor_setText.class,\n\t\t\tGInteractor_setTextPosition.class,\n\t\t\tGInteractor_setTooltip.class,\n\t\t\tGLabel_create.class,\n\t\t\tGLabel_getFontAscent.class,\n\t\t\tGLabel_getFontDescent.class,\n\t\t\tGLabel_getGLabelSize.class,\n\t\t\tGLabel_setFont.class,\n\t\t\tGLabel_setLabel.class,\n\t\t\tGLine_create.class,\n\t\t\tGLine_setEndPoint.class,\n\t\t\tGLine_setStartPoint.class,\n\t\t\tGObject_contains.class,\n\t\t\tGObject_delete.class,\n\t\t\tGObject_getBounds.class,\n\t\t\tGObject_remove.class,\n\t\t\tGObject_rotate.class,\n\t\t\tGObject_scale.class,\n\t\t\tGObject_sendBackward.class,\n\t\t\tGObject_sendForward.class,\n\t\t\tGObject_sendToBack.class,\n\t\t\tGObject_sendToFront.class,\n\t\t\tGObject_setAntialiasing.class,\n\t\t\tGObject_setColor.class,\n\t\t\tGObject_setFillColor.class,\n\t\t\tGObject_setFilled.class,\n\t\t\tGObject_setLineWidth.class,\n\t\t\tGObject_setLocation.class,\n\t\t\tGObject_setSize.class,\n\t\t\tGObject_setVisible.class,\n\t\t\tGOptionPane_showConfirmDialog.class,\n\t\t\tGOptionPane_showInputDialog.class,\n\t\t\tGOptionPane_showMessageDialog.class,\n\t\t\tGOptionPane_showOptionDialog.class,\n\t\t\tGOptionPane_showTextFileDialog.class,\n\t\t\tGOval_create.class,\n\t\t\tGPolygon_addVertex.class,\n\t\t\tGPolygon_create.class,\n\t\t\tGRadioButton_create.class,\n\t\t\tGRadioButton_isSelected.class,\n\t\t\tGRadioButton_setSelected.class,\n\t\t\tGRect_create.class,\n\t\t\tGRoundRect_create.class,\n\t\t\tGScrollBar_create.class,\n\t\t\tGScrollBar_getValue.class,\n\t\t\tGScrollBar_setValues.class,\n\t\t\tGSlider_create.class,\n\t\t\tGSlider_getMajorTickSpacing.class,\n\t\t\tGSlider_getMinorTickSpacing.class,\n\t\t\tGSlider_getPaintLabels.class,\n\t\t\tGSlider_getPaintTicks.class,\n\t\t\tGSlider_getSnapToTicks.class,\n\t\t\tGSlider_getValue.class,\n\t\t\tGSlider_setMajorTickSpacing.class,\n\t\t\tGSlider_setMinorTickSpacing.class,\n\t\t\tGSlider_setPaintLabels.class,\n\t\t\tGSlider_setPaintTicks.class,\n\t\t\tGSlider_setSnapToTicks.class,\n\t\t\tGSlider_setValue.class,\n\t\t\tGTable_autofitColumnWidths.class,\n\t\t\tGTable_clear.class,\n\t\t\tGTable_clearFormatting.class,\n\t\t\tGTable_create.class,\n\t\t\tGTable_get.class,\n\t\t\tGTable_getColumnWidth.class,\n\t\t\tGTable_getSelection.class,\n\t\t\tGTable_resize.class,\n\t\t\tGTable_select.class,\n\t\t\tGTable_set.class,\n\t\t\tGTable_setCellAlignment.class,\n\t\t\tGTable_setCellBackground.class,\n\t\t\tGTable_setCellFont.class,\n\t\t\tGTable_setCellForeground.class,\n\t\t\tGTable_setColumnAlignment.class,\n\t\t\tGTable_setColumnBackground.class,\n\t\t\tGTable_setColumnFont.class,\n\t\t\tGTable_setColumnForeground.class,\n\t\t\tGTable_setColumnHeaderStyle.class,\n\t\t\tGTable_setColumnWidth.class,\n\t\t\tGTable_setEditable.class,\n\t\t\tGTable_setEditorValue.class,\n\t\t\tGTable_setEventEnabled.class,\n\t\t\tGTable_setFont.class,\n\t\t\tGTable_setHorizontalAlignment.class,\n\t\t\tGTable_setRowAlignment.class,\n\t\t\tGTable_setRowBackground.class,\n\t\t\tGTable_setRowColumnHeadersVisible.class,\n\t\t\tGTable_setRowFont.class,\n\t\t\tGTable_setRowForeground.class,\n\t\t\tGTextArea_create.class,\n\t\t\tGTextArea_getText.class,\n\t\t\tGTextArea_setEditable.class,\n\t\t\tGTextArea_setFont.class,\n\t\t\tGTextArea_setText.class,\n\t\t\tGTextField_create.class,\n\t\t\tGTextField_getText.class,\n\t\t\tGTextField_isEditable.class,\n\t\t\tGTextField_setEditable.class,\n\t\t\tGTextField_setPlaceholder.class,\n\t\t\tGTextField_setText.class,\n\t\t\tGTextLabel_create.class,\n\t\t\tGTimer_create.class,\n\t\t\tGTimer_deleteTimer.class,\n\t\t\tGTimer_pause.class,\n\t\t\tGTimer_startTimer.class,\n\t\t\tGTimer_stopTimer.class,\n\t\t\tGWindow_addToRegion.class,\n\t\t\tGWindow_clear.class,\n\t\t\tGWindow_clearCanvas.class,\n\t\t\tGWindow_close.class,\n\t\t\tGWindow_create.class,\n\t\t\tGWindow_delete.class,\n\t\t\tGWindow_drawInBackground.class,\n\t\t\tGWindow_draw.class,\n\t\t\tGWindow_exitGraphics.class,\n\t\t\tGWindow_getCanvasSize.class,\n\t\t\tGWindow_getContentPaneSize.class,\n\t\t\tGWindow_getLocation.class,\n\t\t\tGWindow_getPixel.class,\n\t\t\tGWindow_getPixels.class,\n\t\t\tGWindow_getRegionSize.class,\n\t\t\tGWindow_getScreenHeight.class,\n\t\t\tGWindow_getScreenSize.class,\n\t\t\tGWindow_getScreenWidth.class,\n\t\t\tGWindow_getSize.class,\n\t\t\tGWindow_minimize.class,\n\t\t\tGWindow_pack.class,\n\t\t\tGWindow_rememberPosition.class,\n\t\t\tGWindow_removeFromRegion.class,\n\t\t\tGWindow_repaint.class,\n\t\t\tGWindow_requestFocus.class,\n\t\t\tGWindow_saveCanvasPixels.class,\n\t\t\tGWindow_setCanvasDrawingMode.class,\n\t\t\tGWindow_setCanvasSize.class,\n\t\t\tGWindow_setCloseOperation.class,\n\t\t\tGWindow_setExitOnClose.class,\n\t\t\tGWindow_setLocation.class,\n\t\t\tGWindow_setLocationSaved.class,\n\t\t\tGWindow_setPixel.class,\n\t\t\tGWindow_setPixels.class,\n\t\t\tGWindow_setRegionAlignment.class,\n\t\t\tGWindow_setRegionSize.class,\n\t\t\tGWindow_setRepaintImmediately.class,\n\t\t\tGWindow_setResizable.class,\n\t\t\tGWindow_setSize.class,\n\t\t\tGWindow_setTitle.class,\n\t\t\tGWindow_setVisible.class,\n\t\t\tGWindow_toBack.class,\n\t\t\tGWindow_toFront.class,\n\t\t\tHttpServer_start.class,\n\t\t\tHttpServer_stop.class,\n\t\t\tHttpServer_sendResponse.class,\n\t\t\tHttpServer_sendResponseFile.class,\n\t\t\tJBEConsole_clear.class,\n\t\t\tJBEConsole_getLine.class,\n\t\t\tJBEConsole_getTitle.class,\n\t\t\tJBEConsole_minimize.class,\n\t\t\tJBEConsole_println.class,\n\t\t\tJBEConsole_print.class,\n\t\t\tJBEConsole_setCloseOperation.class,\n\t\t\tJBEConsole_setErrorColor.class,\n\t\t\tJBEConsole_setExitOnClose.class,\n\t\t\tJBEConsole_setFont.class,\n\t\t\tJBEConsole_setLocation.class,\n\t\t\tJBEConsole_setLocationSaved.class,\n\t\t\tJBEConsole_setOutputColor.class,\n\t\t\tJBEConsole_setSize.class,\n\t\t\tJBEConsole_setTitle.class,\n\t\t\tJBEConsole_setVisible.class,\n\t\t\tJBEConsole_toFront.class,\n\t\t\tNote_play.class,\n\t\t\tRegex_matchCount.class,\n\t\t\tRegex_matchCountWithLines.class,\n\t\t\tRegex_match.class,\n\t\t\tRegex_replace.class,\n\t\t\tSound_create.class,\n\t\t\tSound_delete.class,\n\t\t\tSound_play.class,\n\t\t\tStanfordCppLib_getJbeVersion.class,\n\t\t\tStanfordCppLib_setCppVersion.class,\n\t\t\tTopCompound_create.class,\n\t\t\tURL_download.class,\n\t\t\tURL_downloadWithHeaders.class\n\t));\n\t\n\tpublic abstract void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd);\n\t\n\tpublic static HashMap<String, JBECommand> createCommandTable() {\n\t\tHashMap<String, JBECommand> commandMap = new HashMap<String, JBECommand>();\n\t\tfor (Class<? extends JBECommand> commandClass : KNOWN_COMMANDS) {\n\t\t\taddCommand(commandMap, commandClass);\n\t\t}\n\t\treturn commandMap;\n\t}\n\t\n\tprivate static void addCommand(HashMap<String, JBECommand> commandMap, Class<? extends JBECommand> commandClass) {\n\t\tString className = commandClass.getSimpleName();\n\t\tclassName = className.replace(\"_\", \".\");\n\t\ttry {\n\t\t\tJBECommand command = commandClass.getDeclaredConstructor().newInstance();\n\t\t\tcommandMap.put(className, command);\n\t\t} catch (IllegalAccessException iae) {\n\t\t\tthrow new ReflectionRuntimeException(iae);\n\t\t} catch (InstantiationException ie) {\n\t\t\tthrow new ReflectionRuntimeException(ie);\n\t\t} catch (InvocationTargetException ite) {\n\t\t\tthrow new ReflectionRuntimeException(ExceptionUtils.getUnderlyingCause(ite));\n\t\t} catch (NoSuchMethodException nsme) {\n\t\t\tthrow new ReflectionRuntimeException(nsme);\n\t\t}\n\t}\n\n\tpublic int nextInt(TokenScanner scanner) {\n\t\tString token = scanner.nextToken();\n\t\tif (token.equals(\"-\")) {\n\t\t\t// BUGBUG: argh geez, doesn't handle negative numbers? really? cmon\n\t\t\ttoken += scanner.nextToken();\n\t\t}\n\t\treturn Integer.parseInt(token);\n\t}\n\n\tpublic double nextDouble(TokenScanner scanner) {\n\t\tString str = scanner.nextToken();\n\t\tif (str.equals(\"-\")) {\n\t\t\t// BUGBUG: argh geez, doesn't handle negative numbers? really? cmon\n\t\t\tstr += scanner.nextToken();\n\t\t}\n\t\treturn Double.parseDouble(str);\n\t}\n\t\n\t/* Cache the UTF-8 charset decoder for efficiency. */\n\tprivate static final Charset UTF_8;\n\tstatic {\n\t\ttry {\n\t\t\tUTF_8 = Charset.forName(\"UTF-8\");\n\t\t} catch (Exception e) {\n\t\t\tthrow new RuntimeException(\"Can't get the UTF_8 charset; this should not be possible as the spec guarantees it will be available.\");\t\t\t\n\t\t}\n\t}\n\n\tpublic String nextString(TokenScanner scanner) {\n\t\t/* The string that we're getting over the pipe is essentially ASCII-encoded UTF-8. Specifically, the\n\t\t * string is formatted as a Java String where each value is an ASCII character, with special characters\n\t\t * formatted using escape sequences so that the decoder functions properly (e.g. tabs are \\t, newlines\n\t\t * are \\n, quotes are \\\", etc.)\n\t\t * \n\t\t * The first step in decoding this is to process all the escape sequences using the TokenScanner.\n\t\t */\n\t\tString initial = scanner.getStringValue(scanner.nextToken());\n\t\t\n\t\t/* We now have a string consisting of a bunch of characters that comprise a UTF-8 encoding of the\n\t\t * actual string we want. Each character is in the range [0, 256), so to finish processing the\n\t\t * string we need to map it back to an array of bytes and decode those bytes as intended.\n\t\t * \n\t\t * TODO: We would probably be much better off bypassing the .getStringValue() method referenced above\n\t\t * to more directly do the string conversion. This current system isn't efficient.\n\t\t */\n\t\tbyte[] bytes = new byte[initial.length()];\n\t\tfor (int i = 0; i < initial.length(); i++) {\n\t\t\tchar ch = initial.charAt(i);\n\t\t\tif (ch >= 256) throw new RuntimeException(\"Assumption violated: each character should be one byte long.\");\n\t\t\t\n\t\t\tbytes[i] = (byte)ch;\n\t\t}\n\t\t\n\t\treturn new String(bytes, UTF_8);\t\t\n\t}\n\t\n\tpublic String nextBase64(TokenScanner scanner) {\n\t\tString base64 = \"\";\n\t\ttry {\n\t\t\tBufferedReader reader = new BufferedReader(getTokenScannerReader(scanner));\n\t\t\t// throw away \", \\\"\" char\n\t\t\twhile (reader.read() != '\"') {\n\t\t\t\t// empty\n\t\t\t}\n\t\t\tbase64 = reader.readLine();\n\t\t\t\n\t\t\t// trim off \"\" from start/end and ) from end\n\t\t\tif (base64.endsWith(\"\\\")\")) {\n\t\t\t\tbase64 = base64.substring(0, base64.length() - 2);\n\t\t\t\t\n\t\t\t\t// put ) char back into token scanner to read \n\t\t\t\tscanner.ungetChar(')');\n\t\t\t}\n\t\t} catch (Exception e) {\n\t\t\te.printStackTrace();\n\t\t}\n\t\treturn base64;\n\t}\n\n\tpublic boolean nextBoolean(TokenScanner scanner) {\n\t\treturn scanner.nextToken().startsWith(\"t\");\n\t}\n\n\t/**\n\t * Returns whether this command should wait for itself to finish running on the Swing GUI event thread.\n\t * This is true only for graphical/GUI related commands that return important results that must be\n\t * processed in an exact order.\n\t */\n\tpublic boolean shouldInvokeAndWait() {\n\t\t// TODO: implement\n\t\treturn true;\n\t}\n\n\t/**\n\t * Returns whether this command should run on the Swing GUI event thread.\n\t * This is typically true for graphical/GUI related commands.\n\t */\n\tpublic boolean shouldRunOnSwingEventThread() {\n\t\tString className = getClass().getSimpleName();\n\t\treturn className.startsWith(\"G\")\n\t\t\t\t// || className.startsWith(\"JBEConsole\")\n\t\t\t\t|| className.startsWith(\"TopCompound\");\n\t}\n\n\tprivate Reader getTokenScannerReader(TokenScanner scanner) {\n\t\ttry {\n\t\t\tField inputField = TokenScanner.class.getDeclaredField(\"input\");\n\t\t\tinputField.setAccessible(true);\n\t\t\treturn (Reader) inputField.get(scanner);\n\t\t} catch (Exception e) {\n\t\t\tSystem.err.println(e);\n\t\t\treturn null;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/JBEConsole_getLine.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class JBEConsole_getLine extends JBECommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd jbe) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tSplPipeDecoder.writeResult(jbe.getConsole());\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/JBEConsole_getTitle.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\nimport javax.swing.*;\n\npublic class JBEConsole_getTitle extends JBECommand {\n\tpublic void execute(TokenScanner scanner, JavaBackEnd jbe) {\n\t\tscanner.verifyToken(\"(\");\n\t\tscanner.verifyToken(\")\");\n\t\tJFrame frame = jbe.getJBEConsoleFrame();\n\t\tString title = frame == null ? \"null\" : frame.getTitle();\n\t\tSplPipeDecoder.writeResult(title);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/JBEConsole_minimize.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class JBEConsole_minimize extends JBECommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd jbe) {\n\t\tparamTokenScanner.scanNumbers();\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tjbe.consoleMinimize();\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/JBEConsole_print.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class JBEConsole_print extends JBECommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString str = nextString(paramTokenScanner);\n\t\tString token = paramTokenScanner.nextToken();\n\t\tboolean isStderr = false;\n\t\tif (token.equals(\",\")) {\n\t\t\tisStderr = nextBoolean(paramTokenScanner);\n\t\t}\n\t\tparamJavaBackEnd.putConsole(str, isStderr);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/JBEConsole_setCloseOperation.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class JBEConsole_setCloseOperation extends JBECommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tint op = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tparamJavaBackEnd.setConsoleCloseOperation(op);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/JBEConsole_setErrorColor.java",
    "content": "package stanford.spl;\n\nimport java.awt.Color;\n\nimport stanford.spl.JBEConsole;\nimport acm.io.ConsoleModel;\nimport acm.io.StandardConsoleModel;\nimport acm.util.JTFTools;\nimport acm.util.TokenScanner;\n\npublic class JBEConsole_setErrorColor extends JBECommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd jbe) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString colorHex = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tColor color = JTFTools.decodeColor(colorHex);\n\t\t\n\t\tJBEConsole console = jbe.getJBEConsole();\n\t\tConsoleModel model = console.getConsoleModel();\n\t\tif (model instanceof StandardConsoleModel) {\n\t\t\tStandardConsoleModel smodel = (StandardConsoleModel) model;\n\t\t\tsmodel.setOutputColor(color);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/JBEConsole_setExitOnClose.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class JBEConsole_setExitOnClose extends JBECommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tboolean bool = nextBoolean(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tparamJavaBackEnd.setExitOnConsoleClose(bool);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/JBEConsole_setLocation.java",
    "content": "package stanford.spl;\n\nimport java.awt.Point;\n\nimport acm.util.TokenScanner;\n\npublic class JBEConsole_setLocation extends JBECommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd jbe) {\n\t\tparamTokenScanner.scanNumbers();\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tint x = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tint y = nextInt(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\t// BUGBUG: It appears that TokenScanner can't handle negative numbers\n\t\t//         and doesn't think they are int tokens.  Ugh.\n\t\tif ((x == -1 && y == -1) || (x == 999999 && y == 999999)) {\n\t\t\tPoint center = GWindow_setLocation.getCenter(\n\t\t\t\t\tjbe.getJBEConsoleWidth(), jbe.getJBEConsoleHeight());\n\t\t\tx = center.x;\n\t\t\ty = center.y;\n\t\t}\n\t\tjbe.setConsoleLocation(x, y);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/JBEConsole_setLocationSaved.java",
    "content": "package stanford.spl;\n\nimport java.awt.Frame;\n\nimport acm.util.TokenScanner;\n\npublic class JBEConsole_setLocationSaved extends JBECommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd jbe) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tboolean value = nextBoolean(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tFrame consoleFrame = jbe.getJBEConsoleFrame();\n\t\tif (consoleFrame != null) {\n\t\t\tif (value) {\n\t\t\t\tSPLWindowSettings.loadWindowLocation(consoleFrame);\n\t\t\t\tSPLWindowSettings.saveWindowLocation(consoleFrame);\n\t\t\t} else {\n\t\t\t\tSPLWindowSettings.forgetWindowLocation(consoleFrame);\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/JBEConsole_setOutputColor.java",
    "content": "package stanford.spl;\n\nimport java.awt.Color;\n\nimport stanford.spl.JBEConsole;\nimport acm.io.ConsoleModel;\nimport acm.io.StandardConsoleModel;\nimport acm.util.JTFTools;\nimport acm.util.TokenScanner;\n\npublic class JBEConsole_setOutputColor extends JBECommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd jbe) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString colorHex = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tColor color = JTFTools.decodeColor(colorHex);\n\t\t\n\t\tJBEConsole console = jbe.getJBEConsole();\n\t\tConsoleModel model = console.getConsoleModel();\n\t\tif (model instanceof StandardConsoleModel) {\n\t\t\tStandardConsoleModel smodel = (StandardConsoleModel) model;\n\t\t\tsmodel.setOutputColor(color);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/JBEConsole_setTitle.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class JBEConsole_setTitle extends JBECommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd jbe) {\n\t\tparamTokenScanner.scanNumbers();\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString title = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tjbe.consoleSetTitle(title);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/JBEConsole_setVisible.java",
    "content": "package stanford.spl;\n\nimport java.awt.Frame;\n\nimport acm.util.TokenScanner;\n\npublic class JBEConsole_setVisible extends JBECommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd jbe) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tboolean value = nextBoolean(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tFrame consoleFrame = jbe.getJBEConsoleFrame();\n\t\tif (consoleFrame != null) {\n\t\t\tconsoleFrame.setVisible(value);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/JBEConsole_toFront.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class JBEConsole_toFront extends JBECommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd jbe) {\n\t\tparamTokenScanner.scanNumbers();\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tjbe.consoleToFront();\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/JBEDummyProgram.java",
    "content": "package stanford.spl;\n\nimport java.awt.event.*;\nimport acm.program.*;\n\npublic class JBEDummyProgram extends AbstractConsoleProgram {\n\tprivate static final long serialVersionUID = 1L;\n\n\tprivate JavaBackEnd jbe;\n\n\tpublic JBEDummyProgram(JavaBackEnd paramJavaBackEnd) {\n\t\tthis.jbe = paramJavaBackEnd;\n\t}\n\n\t@Override\n\tpublic boolean menuAction(ActionEvent event) {\n\t\tString s = event.getActionCommand();\n\t\tif (s.equals(\"Quit\") || s.equals(\"Exit\")) {\n\t\t\t// notify the C++ library that the JBE was shut down\n\t\t\tSplPipeDecoder.writeEvent(\"consoleWindowClosed()\");\n\t\t\tjbe.acknowledgeEvent();\n\t\t\t// give it a little time to make sure the message goes through\n\t\t\ttry {\n\t\t\t\tThread.sleep(100);\n\t\t\t} catch (InterruptedException ie) {\n\t\t\t\t// empty\n\t\t\t}\n\t\t\tSystem.exit(0);\n\t\t}\n\t\treturn super.menuAction(event);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/JBEFileFilter.java",
    "content": "package stanford.spl;\n\nimport acm.util.FileChooserFilter;\n\npublic class JBEFileFilter extends FileChooserFilter {\n\tprivate String dir;\n\n\tpublic JBEFileFilter(String path) {\n\t\tsuper(getPattern(path));\n\t\tint i = Math.max(path.lastIndexOf(\"/\"),\n\t\t\t\tpath.lastIndexOf('\\\\'));\n\t\tthis.dir = (i == -1 ? \"\" : path.substring(0, i));\n\t\tString str = path.substring(i + 1);\n\t\tif (!isPattern(str)) {\n\t\t\tif (dir.isEmpty() && str.isEmpty()) {\n\t\t\t\tdir += \"/\";\n\t\t\t}\n\t\t\tthis.dir += str;\n\t\t}\n\t\tif (this.dir.isEmpty()) {\n\t\t\tthis.dir = System.getProperty(\"user.dir\");\n\t\t} else if (!this.dir.startsWith(\"/\")) {\n\t\t\tthis.dir = (System.getProperty(\"user.dir\") + \"/\" + this.dir);\n\t\t}\n\t}\n\n\tpublic String getDirectory() {\n\t\treturn this.dir;\n\t}\n\n\t// JL: getPatternPart?\n\t\n\tprivate static String getPattern(String paramString) {\n\t\tint i = Math.max(paramString.lastIndexOf(\"/\"),\n\t\t\t\tparamString.lastIndexOf('\\\\'));\n\t\tString str = paramString.substring(i + 1);\n\t\treturn isPattern(str) ? str : \"\";   // JL BUGFIX: null -> \"\"\n\t}\n\n\tprivate static boolean isPattern(String paramString) {\n\t\tfor (int i = 0; i < paramString.length(); i++) {\n\t\t\tswitch (paramString.charAt(i)) {\n\t\t\tcase '*':\n\t\t\tcase ';':\n\t\t\tcase '?':\n\t\t\tcase '[':\n\t\t\tcase ']':\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/JBEHeadlessWindow.java",
    "content": "/*\n * @version 2017/12/18\n * - initial version\n */\n\npackage stanford.spl;\n\nimport java.awt.*;\nimport java.awt.event.WindowListener;\nimport java.awt.image.BufferedImage;\nimport java.io.File;\nimport java.io.IOException;\n\nimport javax.imageio.ImageIO;\nimport javax.swing.*;\n\nimport stanford.cs106.io.IORuntimeException;\nimport stanford.cs106.io.IOUtils;\n\n/**\n * A version of JBEWindow that can run in a 'headless' graphical environment such as a server.\n * It will not display on screen, but its pixels can be saved into an offscreen image.\n */\npublic class JBEHeadlessWindow implements JBEWindowInterface {\n\tprivate JavaBackEnd jbe;\n\tprivate String title;\n\tprivate String windowId;\n\tprivate JBECanvas canvas;\n\tprivate int x = 0;\n\tprivate int y = 0;\n\tprivate int width;\n\tprivate int height;\n\tprivate boolean open = true;\n\t\n\tpublic JBEHeadlessWindow(JavaBackEnd jbe, String windowId, String title, int width, int height) {\n\t\tthis.jbe = jbe;\n\t\tthis.windowId = windowId;\n\t\tthis.title = title;\n\t\tthis.canvas = new JBECanvas(windowId, width, height);\n\t\tsetSize(width, height);\n\t}\n\n\tpublic void addToRegion(JComponent comp, String region) {\n\t\t// empty\n\t}\n\t\n\tpublic void addWindowListener(WindowListener listener) {\n\t\t// empty\n\t}\n\n\tpublic void clear() {\n\t\tcanvas.clear();\n\t}\n\n\tpublic void clearCanvas() {\n\t\tcanvas.clear();\n\t}\n\n\tpublic void close() {\n\t\tif (open) {\n\t\t\topen = false;\n\t\t\tjbe.notifyOfWindowClosed(this);\n\t\t}\n\t}\n\n\tpublic JBECanvas getCanvas() {\n\t\treturn canvas;\n\t}\n\n\tpublic Dimension getCanvasSize() {\n\t\treturn canvas.getSize();\n\t}\n\t\n\tpublic Container getContentPane() {\n\t\t// this is not quite right but oh well\n\t\treturn canvas;\n\t}\n\n\tpublic Dimension getContentPaneSize() {\n\t\treturn canvas.getSize();\n\t}\n\t\n\tpublic int getHeight() {\n\t\treturn height;\n\t}\n\n\tpublic Point getLocation() {\n\t\treturn new Point(x, y);\n\t}\n\t\n\tpublic Dimension getPreferredSize() {\n\t\treturn getSize();\n\t}\n\n\tpublic Dimension getSize() {\n\t\treturn new Dimension(width, height);\n\t}\n\t\n\tpublic String getTitle() {\n\t\treturn title;\n\t}\n\n\tpublic int getWidth() {\n\t\treturn width;\n\t}\n\n\tpublic String getWindowId() {\n\t\treturn windowId;\n\t}\n\n\tpublic int getX() {\n\t\treturn x;\n\t}\n\t\n\tpublic int getY() {\n\t\treturn y;\n\t}\n\t\n\tpublic boolean isRepaintImmediately() {\n\t\treturn canvas.getAutoRepaintFlag();\n\t}\n\t\n\tpublic boolean isResizable() {\n\t\treturn false;\n\t}\n\t\n\tpublic boolean isVisible() {\n\t\treturn true;\n\t}\n\t\n\tpublic void pack() {\n\t\t// empty\n\t}\n\n\tpublic void removeFromRegion(JComponent comp, String region) {\n\t\t// empty\n\t}\n\t\n\tpublic void removeWindowListener(WindowListener listener) {\n\t\t// empty\n\t}\n\t\n\tpublic void repaint() {\n\t\tcanvas.repaint();\n\t}\n\t\n\tpublic void revalidate() {\n\t\t// empty\n\t}\n\n\tpublic void saveCanvasPixels(String filename) {\n\t\t// this seems to to not work in headless setting; hmm\n\t\t// canvas.save(filename);\n\n\t\t// dump canvas into a BufferedImage\n\t\tBufferedImage img = canvas.toImage();\n\t\t\n\t\t// save it\n\t\tFile file = new File(filename);\n\t\ttry {\n\t\t\tString extension = IOUtils.getExtension(file).toLowerCase();\n\t\t\tif (!IMAGE_FILE_TYPES.contains(extension)) {\n\t\t\t\textension = \"png\";   // default\n\t\t\t}\n\t\t\tImageIO.write(img, extension, file);\n\t\t} catch (IOException ioe) {\n\t\t\tthrow new IORuntimeException(ioe);\n\t\t}\n\t}\n\t\n\tpublic void setDefaultCloseOperation(int operation) {\n\t\t// empty\n\t}\n\n\tpublic void setLocation(int x, int y) {\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t}\n\t\n\tpublic void setLocation(Point location) {\n\t\tif (location != null) {\n\t\t\tx = location.x;\n\t\t\ty = location.y;\n\t\t}\n\t}\n\t\n\tpublic void setRegionAlignment(String region, String alignment) {\n\t\t// empty\n\t}\n\n\tpublic void setRepaintImmediately(boolean value) {\n\t\tcanvas.setAutoRepaintFlag(value);\n\t}\n\n\tpublic void setResizable(boolean value) {\n\t\t// empty\n\t}\n\t\n\tpublic void setSize(Dimension size) {\n\t\tif (size != null) {\n\t\t\tsetSize(size.width, size.height);\n\t\t}\n\t}\n\t\n\tpublic void setSize(int width, int height) {\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\tcanvas.setSize(width, height);\n\t}\n\t\n\tpublic void setState(int state) {\n\t\t// empty\n\t}\n\t\n\tpublic void setTitle(String title) {\n\t\tthis.title = title;\n\t}\n\t\n\tpublic void setVisible(boolean visible) {\n\t\t// empty\n\t}\n\t\n\tpublic void toBack() {\n\t\t// empty\n\t}\n\t\n\tpublic void toFront() {\n\t\t// empty\n\t}\n\t\n\tpublic void validate() {\n\t\t// empty\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/JBELabel.java",
    "content": "/*\n * @version 2016/10/07\n * - added setLabel, setText overrides to fix broken C++ GLabel behavior\n */\n\npackage stanford.spl;\n\nimport acm.graphics.GLabel;\nimport java.awt.Color;\nimport java.awt.Font;\nimport javax.swing.JComponent;\nimport javax.swing.JLabel;\n\npublic class JBELabel extends GLabel {\n\tprivate JLabel jlabel;\n\n\tpublic JBELabel(String paramString) {\n\t\tsuper(paramString);\n\t\tthis.jlabel = null;\n\t}\n\n\tpublic JComponent getInteractor() {\n\t\tif (this.jlabel == null) {\n\t\t\tthis.jlabel = new JLabel(getLabel());\n\t\t\tthis.jlabel.setFont(getFont());\n\t\t\tthis.jlabel.setForeground(getColor());\n\t\t}\n\t\treturn this.jlabel;\n\t}\n\n\t// JL: SwingUtilities.invokeLater\n\tpublic void setFont(Font paramFont) {\n\t\tsuper.setFont(paramFont);\n\t\tgetInteractor();\n\t\tif (this.jlabel != null) {\n\t\t\tthis.jlabel.setFont(paramFont);\n\t\t}\n\t}\n\n\t// JL: SwingUtilities.invokeLater\n\tpublic void setColor(Color paramColor) {\n\t\tsuper.setColor(paramColor);\n\t\tgetInteractor();\n\t\tif (this.jlabel != null) {\n\t\t\tthis.jlabel.setForeground(paramColor);\n\t\t}\n\t}\n\t\n\t// JL: SwingUtilities.invokeLater\n\tpublic void setLabel(String label) {\n\t\tsuper.setLabel(label);\n\t\tgetInteractor();\n\t\tif (this.jlabel != null) {\n\t\t\tthis.jlabel.setText(label);\n\t\t}\n\t}\n\t\n\tpublic void setText(String label) {\n\t\tsetLabel(label);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/JBEMenuBar.java",
    "content": "/*\n * @version 2016/05/01\n * - moved \"version\" logic to centralized Version.java\n * @version 2015/10/15\n * - tiny edit: added a colon after 'version' in Help About message\n * @version 2014/10/22\n * - added Ctrl-Home, Ctrl-End, PgUp, PgDown hotkeys to scroll around in console\n */\n\npackage stanford.spl;\n\nimport acm.io.*;\nimport acm.program.*;\n\npublic class JBEMenuBar extends ProgramMenuBar {\n\tprivate static final long serialVersionUID = 1L;\n\t\n\tpublic JBEMenuBar(JavaBackEnd paramJavaBackEnd, IOConsole paramIOConsole) {\n\t\tsuper(new JBEDummyProgram(paramJavaBackEnd));\n\t\tgetProgram().setConsole(paramIOConsole);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/JBESwingCommand.java",
    "content": "/*\n * @version 2016/10/12\n * - initial version\n */\n\npackage stanford.spl;\n\n/**\n * A JBECommand that should be run on the Swing event thread.\n */\npublic abstract class JBESwingCommand extends JBECommand {\n\t@Override\n\tpublic boolean shouldRunOnSwingEventThread() {\n\t\treturn true;\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/JBEWindow.java",
    "content": "/*\n * This is the class that represents the C++ lib GWindow class.\n * \n * @version 2018/06/20\n * - added mouse wheel event support\n * @version 2017/12/18\n * - modified to implement JBEWindowInterface interface to allow for headless windows\n * @version 2017/10/12\n * - added is/setRepaintImmediately\n * - alphabetized methods\n * @version 2016/10/12\n * - added getContentPaneSize method\n * @version 2016/10/07\n * - added getCanvasSize method (fix GWindow_getCanvasSize JBE command)\n * @version 2016/07/30\n * - fixed constructor with false visibility (don't pop up window)\n * - added saveCanvasPixels method for saving graphical output to a file\n */\n\npackage stanford.spl;\n\nimport acm.gui.TableLayout;\nimport stanford.cs106.io.*;\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.awt.image.*;\nimport java.io.*;\nimport javax.imageio.*;\nimport javax.swing.*;\n\npublic class JBEWindow extends JFrame implements JBEWindowInterface {\n\tprivate static final long serialVersionUID = 0L;\n\t\n\tprivate JavaBackEnd jbe;\n\tprivate JBECanvas canvas;\n\tprivate String windowId;\n\tprivate JPanel northPanel;\n\tprivate JPanel eastPanel;\n\tprivate JPanel southPanel;\n\tprivate JPanel westPanel;\n\tprivate boolean repaintImmediately = true;\n\n\tpublic JBEWindow(JavaBackEnd paramJavaBackEnd, String paramString1,\n\t\t\tString paramString2, int width, int height) {\n\t\tsuper(paramString2);\n\t\tthis.jbe = paramJavaBackEnd;\n\t\tthis.windowId = paramString1;\n\t\tsetLayout(new BorderLayout());\n\t\tthis.canvas = new JBECanvas(paramString1, width, height);\n\t\taddWindowListener(this.jbe);\n\t\tthis.canvas.addComponentListener(this.jbe);\n\t\tthis.canvas.addMouseListener(this.jbe);\n\t\tthis.canvas.addMouseMotionListener(this.jbe);\n\t\tthis.canvas.addMouseWheelListener(this.jbe);\n\t\tthis.canvas.addKeyListener(this.jbe);\n\t\tadd(this.canvas, \"Center\");\n\t\t\n\t\t// create side panels\n\t\tthis.northPanel = new JPanel();\n\t\tthis.southPanel = new JPanel();\n\t\tthis.eastPanel = new JPanel();\n\t\tthis.westPanel = new JPanel();\n\t\tthis.northPanel.setLayout(new TableLayout(1, 0, 5, 5));\n\t\tthis.southPanel.setLayout(new TableLayout(1, 0, 5, 5));\n\t\tthis.westPanel.setLayout(new TableLayout(0, 1, 5, 5));\n\t\tthis.eastPanel.setLayout(new TableLayout(0, 1, 5, 5));\n\t\tadd(this.northPanel, \"North\");\n\t\tadd(this.southPanel, \"South\");\n\t\tadd(this.eastPanel, \"East\");\n\t\tadd(this.westPanel, \"West\");\n\t}\n\n\t// JL: SwingUtilities.invokeLater\n\tpublic void addToRegion(JComponent paramJComponent, String paramString) {\n\t\tContainer localJPanel = null;\n\t\tif (paramString.equalsIgnoreCase(\"NORTH\")) {\n\t\t\tlocalJPanel = this.northPanel;\n\t\t} else if (paramString.equalsIgnoreCase(\"EAST\")) {\n\t\t\tlocalJPanel = this.eastPanel;\n\t\t} else if (paramString.equalsIgnoreCase(\"SOUTH\")) {\n\t\t\tlocalJPanel = this.southPanel;\n\t\t} else if (paramString.equalsIgnoreCase(\"WEST\")) {\n\t\t\tlocalJPanel = this.westPanel;\n\t\t} else if (paramString.equalsIgnoreCase(\"CENTER\")) {\n\t\t\tremove(this.canvas);\n\t\t\tlocalJPanel = this.getContentPane();\n\t\t}\n\t\t\n\t\tif (localJPanel != null) {\n\t\t\tlocalJPanel.add(paramJComponent);\n\t\t\tvalidate();\n\t\t}\n\t}\n\n\t// JL: SwingUtilities.invokeLater\n\tpublic void clear() {\n\t\tthis.canvas.clear();\n\t\tint i = 0;\n\t\tif (this.northPanel != null) {\n\t\t\tthis.northPanel.removeAll();\n\t\t\ti = 1;\n\t\t}\n\t\tif (this.eastPanel != null) {\n\t\t\tthis.eastPanel.removeAll();\n\t\t\ti = 1;\n\t\t}\n\t\tif (this.southPanel != null) {\n\t\t\tthis.southPanel.removeAll();\n\t\t\ti = 1;\n\t\t}\n\t\tif (this.westPanel != null) {\n\t\t\tthis.westPanel.removeAll();\n\t\t\ti = 1;\n\t\t}\n\t\tif (i != 0) {\n\t\t\tvalidate();\n\t\t}\n\t\trepaint();\n\t}\n\n\tpublic void clearCanvas() {\n\t\tthis.canvas.clear();\n\t\tif (repaintImmediately) {\n\t\t\trepaint();\n\t\t}\n\t}\n\t\n\t// JL: SwingUtilities.invokeLater\n\tpublic void close() {\n\t\tWindowEvent localWindowEvent = new WindowEvent(this, 201);\n\t\tprocessWindowEvent(localWindowEvent);\n\t}\n\n\tpublic JBECanvas getCanvas() {\n\t\treturn this.canvas;\n\t}\n\t\n\tpublic Dimension getCanvasSize() {\n\t\tif (canvas == null) {\n\t\t\treturn new Dimension(0, 0);\n\t\t}\n\t\t\n\t\tDimension pref = canvas.getPreferredSize();\n\t\tDimension actual = canvas.getSize();\n\t\tif (actual == null) {\n\t\t\treturn pref;\n\t\t} else if (pref == null) {\n\t\t\treturn actual;\n\t\t} else {\n\t\t\tif (actual.width <= 0 && actual.height <= 0) {\n\t\t\t\treturn pref;\n\t\t\t} else { //if (pref.width <= 0 && pref.height <= 0) {\n\t\t\t\treturn actual;\n\t\t\t}\n//\t\t\telse {\n//\t\t\t\tif (actual.width < pref.width || actual.height < pref.height) {\n//\t\t\t\t\treturn actual;\n//\t\t\t\t} else {\n//\t\t\t\t\t\n//\t\t\t\t}\n//\t\t\t}\n\t\t}\n\t}\n\n\tpublic Dimension getContentPaneSize() {\n\t\tif (getContentPane() == null) {\n\t\t\treturn new Dimension(0, 0);\n\t\t}\n\t\t\n\t\tDimension pref = getContentPane().getPreferredSize();\n\t\tDimension actual = getContentPane().getSize();\n\t\tif (actual == null) {\n\t\t\treturn pref;\n\t\t} else if (pref == null) {\n\t\t\treturn actual;\n\t\t} else {\n\t\t\tif (actual.width <= 0 && actual.height <= 0) {\n\t\t\t\treturn pref;\n\t\t\t} else { //if (pref.width <= 0 && pref.height <= 0) {\n\t\t\t\treturn actual;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic String getWindowId() {\n\t\treturn this.windowId;\n\t}\n\t\n\tpublic boolean isRepaintImmediately() {\n\t\treturn repaintImmediately;\n\t}\n\n\t// JL: SwingUtilities.invokeLater\n\tpublic void removeFromRegion(JComponent paramJComponent, String paramString) {\n\t\tJPanel localJPanel = null;\n\t\tif (paramString.equalsIgnoreCase(\"NORTH\")) {\n\t\t\tlocalJPanel = this.northPanel;\n\t\t} else if (paramString.equalsIgnoreCase(\"EAST\")) {\n\t\t\tlocalJPanel = this.eastPanel;\n\t\t} else if (paramString.equalsIgnoreCase(\"SOUTH\")) {\n\t\t\tlocalJPanel = this.southPanel;\n\t\t} else if (paramString.equalsIgnoreCase(\"WEST\")) {\n\t\t\tlocalJPanel = this.westPanel;\n\t\t} else if (paramString.equalsIgnoreCase(\"CENTER\")) {\n\t\t\tremove(paramJComponent);\n\t\t\tadd(this.canvas);\n\t\t\tvalidate();\n\t\t\trepaint();\n\t\t\treturn;\n\t\t}\n\t\tif (localJPanel != null) {\n\t\t\tlocalJPanel.remove(paramJComponent);\n\t\t\tlocalJPanel.validate();\n\t\t\tvalidate();\n\t\t\trepaint();\n\t\t}\n\t}\n\t\n\t/**\n\t * \n\t * @param filename must be an image type like PNG, JPG, or GIF \n\t */\n\tpublic void saveCanvasPixels(String filename) {\n\t\t// dump canvas into a BufferedImage\n\t\tBufferedImage img = canvas.toImage();\n\t\t\n\t\t// save it\n\t\tFile file = new File(filename);\n\t\ttry {\n\t\t\tString extension = IOUtils.getExtension(file).toLowerCase();\n\t\t\tif (!IMAGE_FILE_TYPES.contains(extension)) {\n\t\t\t\textension = \"png\";   // default\n\t\t\t}\n\t\t\tImageIO.write(img, extension, file);\n\t\t} catch (IOException ioe) {\n\t\t\tthrow new IORuntimeException(ioe);\n\t\t}\n\t}\n\n\t// JL: SwingUtilities.invokeLater\n\tpublic void setRegionAlignment(String paramString1, String paramString2) {\n\t\tJPanel localJPanel = null;\n\t\tif (paramString1.equalsIgnoreCase(\"NORTH\")) {\n\t\t\tlocalJPanel = this.northPanel;\n\t\t} else if (paramString1.equalsIgnoreCase(\"EAST\")) {\n\t\t\tlocalJPanel = this.eastPanel;\n\t\t} else if (paramString1.equalsIgnoreCase(\"SOUTH\")) {\n\t\t\tlocalJPanel = this.southPanel;\n\t\t} else if (paramString1.equalsIgnoreCase(\"WEST\")) {\n\t\t\tlocalJPanel = this.westPanel;\n\t\t}\n\t\tint i = 10;\n\t\tif (paramString2.equalsIgnoreCase(\"LEFT\")) {\n\t\t\ti = 11;\n\t\t} else if (paramString2.equalsIgnoreCase(\"RIGHT\")) {\n\t\t\ti = 12;\n\t\t}\n\t\tif (localJPanel != null) {\n\t\t\t((TableLayout) localJPanel.getLayout()).setHorizontalAlignment(i);\n\t\t}\n\t}\n\t\n\tpublic void setRepaintImmediately(boolean value) {\n\t\trepaintImmediately = value;\n\t\tthis.canvas.setAutoRepaintFlag(repaintImmediately);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/JBEWindowInterface.java",
    "content": "/*\n * @version 2017/12/18\n * - initial version\n */\n\npackage stanford.spl;\n\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.util.*;\nimport javax.swing.*;\nimport stanford.cs106.util.*;\n\n/**\n * Common parent of JBEWindow and JBEHeadlessWindow.\n */\npublic interface JBEWindowInterface {\n\tpublic static final Set<String> IMAGE_FILE_TYPES = CollectionUtils.asSet(\n\t\t\t\"gif\", \"jpg\", \"jpeg\", \"png\"\n\t);\n\t\n\tpublic void addToRegion(JComponent comp, String region);\n\tpublic void addWindowListener(WindowListener listener);\n\tpublic void clear();\n\tpublic void clearCanvas();\n\tpublic void close();\n\tpublic JBECanvas getCanvas();\n\tpublic Dimension getCanvasSize();\n\tpublic Container getContentPane();\n\tpublic Dimension getContentPaneSize();\n\tpublic int getHeight();\n\tpublic Point getLocation();\n\tpublic Dimension getPreferredSize();\n\tpublic Dimension getSize();\n\tpublic String getTitle();\n\tpublic int getWidth();\n\tpublic String getWindowId();\n\tpublic int getX();\n\tpublic int getY();\n\tpublic boolean isRepaintImmediately();\n\tpublic boolean isResizable();\n\tpublic boolean isVisible();\n\tpublic void pack();\n\tpublic void removeFromRegion(JComponent comp, String region);\n\tpublic void removeWindowListener(WindowListener listener);\n\tpublic void repaint();\n\tpublic void revalidate();\n\tpublic void saveCanvasPixels(String filename);\n\tpublic void setDefaultCloseOperation(int operation);\n\tpublic void setLocation(int x, int y);\n\tpublic void setLocation(Point location);\n\tpublic void setRegionAlignment(String region, String alignment);\n\tpublic void setRepaintImmediately(boolean value);\n\tpublic void setResizable(boolean value);\n\tpublic void setState(int state);\n\tpublic void setSize(Dimension size);\n\tpublic void setSize(int width, int height);\n\tpublic void setTitle(String title);\n\tpublic void setVisible(boolean visible);\n\tpublic void toBack();\n\tpublic void toFront();\n\tpublic void validate();\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/JavaBackEnd.java",
    "content": "/*\n * @version 2018/07/16\n * - adjustment listener for GScrollBar\n * @version 2018/07/08\n * - cleanup parameter/variable names\n * @version 2018/06/20\n * - added mouseEntered, mouseExited, and mouseWheelMoved events\n * @version 2018/06/20\n * - added mouseEntered, mouseExited, and mouseWheelMoved events\n * @version 2016/11/24\n * - separated windowClosing / windowClosed operations to enable C++ to stop windows from closing\n * @version 2016/10/22\n * - bug fix for shutting down console repeatedly (don't shut down back-end)\n */\n\npackage stanford.spl;\n\nimport acm.graphics.GObject;\nimport acm.io.*;\nimport acm.program.*;\nimport acm.util.*;\nimport stanford.cs106.gui.GuiUtils;\nimport stanford.cs106.util.ExceptionUtils;\nimport stanford.cs106.util.StringUtils;\n\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.io.*;\nimport java.lang.reflect.*;\nimport java.net.*;\nimport java.util.*;\nimport javax.sound.sampled.*;\nimport javax.swing.*;\nimport javax.swing.event.*;\n\n@SuppressWarnings(\"deprecation\")\npublic class JavaBackEnd implements\n\t\tActionListener,\n\t\tChangeListener,\n\t\tComponentListener,\n\t\tKeyListener,\n\t\tMouseListener,\n\t\tMouseMotionListener,\n\t\tMouseWheelListener,\n\t\tObserver,\n\t\tWindowListener {\n\t\n\t// default window geometry\n\tpublic static final int DEFAULT_CONSOLE_X      = 10;\n\tpublic static final int DEFAULT_CONSOLE_Y      = 40;\n\tpublic static final int DEFAULT_CONSOLE_WIDTH  = 500;\n\tpublic static final int DEFAULT_CONSOLE_HEIGHT = 250;\n\tpublic static final int DEFAULT_GRAPHICS_X     = 10;\n\tpublic static final int DEFAULT_GRAPHICS_Y     = 10;\n\t\n\t// event classes; these should be kept in sync with C++ constants in gevents.h\n\tpublic static final int EVENT_SUBTYPE_MASK = 15;\n\tpublic static final int ACTION_EVENT       = 0x0010;\n\tpublic static final int KEY_EVENT          = 0x0020;\n\tpublic static final int TIMER_EVENT        = 0x0040;\n\tpublic static final int WINDOW_EVENT       = 0x0080;\n\tpublic static final int MOUSE_EVENT        = 0x0100;\n\tpublic static final int CLICK_EVENT        = 0x0200;\n\t// public static final int TABLE_EVENT\t= 0x0400;   // see GTable.java\n\t// public static final int SERVER_EVENT\t= 0x0800;\n\tpublic static final int CHANGE_EVENT       = 0x1000;\n\tpublic static final int ANY_EVENT          = 0x03F0;\n\t\n\t// event subtypes\n\tpublic static final int ACTION_PERFORMED = ACTION_EVENT + 1;\n\tpublic static final int WINDOW_CLOSED    = WINDOW_EVENT + 1;\n\tpublic static final int WINDOW_RESIZED   = WINDOW_EVENT + 2;\n\tpublic static final int WINDOW_CLOSING   = WINDOW_EVENT + 4;\n\tpublic static final int MOUSE_CLICKED    = MOUSE_EVENT + 1;\n\tpublic static final int MOUSE_PRESSED    = MOUSE_EVENT + 2;\n\tpublic static final int MOUSE_RELEASED   = MOUSE_EVENT + 3;\n\tpublic static final int MOUSE_MOVED      = MOUSE_EVENT + 4;\n\tpublic static final int MOUSE_DRAGGED    = MOUSE_EVENT + 5;\n\tpublic static final int MOUSE_ENTERED    = MOUSE_EVENT + 6;\n\tpublic static final int MOUSE_EXITED     = MOUSE_EVENT + 7;\n\tpublic static final int MOUSE_WHEEL_DOWN = MOUSE_EVENT + 8;\n\tpublic static final int MOUSE_WHEEL_UP   = MOUSE_EVENT + 9;\n\tpublic static final int KEY_PRESSED      = KEY_EVENT + 1;\n\tpublic static final int KEY_RELEASED     = KEY_EVENT + 2;\n\tpublic static final int KEY_TYPED        = KEY_EVENT + 3;\n\tpublic static final int TIMER_TICKED     = TIMER_EVENT + 1;\n\t// see GTable.java for TABLE_* types\n\t// public static final int SERVER_REQUEST   = SERVER_EVENT + 1;\n\tpublic static final int STATE_CHANGED    = CHANGE_EVENT + 1;\n\t\n\t// modifier flags (these must match the C++ ModifierCodes type in gevent.h)\n\tpublic static final int SHIFT_DOWN     = 0x1;\n\tpublic static final int CTRL_DOWN      = 0x2;\n\tpublic static final int META_DOWN      = 0x4;\n\tpublic static final int ALT_DOWN       = 0x8;\n\tpublic static final int ALT_GRAPH_DOWN = 0x10;\n\tpublic static final int BUTTON1_DOWN   = 0x20;\n\tpublic static final int BUTTON2_DOWN   = 0x40;\n\tpublic static final int BUTTON3_DOWN   = 0x80;\n\t\n\tprivate static final String DEFAULT_APP_NAME = \"JBE\";\n\tprivate static final String DEBUG_PROPERTY = \"stanfordspl.debug\";\n\tprivate static final String DEBUG_LOG_FILE = \"stanfordspldebug.txt\";\n\tprivate static boolean DEBUG = false;\n\tprivate static final Color ERROR_COLOR = new Color(192, 0, 0);   // slightly dark red\n\tprivate static final int ERROR_STYLE = Font.BOLD;\n\tprivate static Font ourConsoleFont = null;\n\t\n\tpublic static Font getConsoleFont() {\n\t\treturn ourConsoleFont;\n\t}\n\n\tpublic static void main(String[] args) {\n\t\ttry {\n\t\t\tString prop = System.getProperty(DEBUG_PROPERTY);\n\t\t\tDEBUG = prop != null && (prop.startsWith(\"t\") || prop.startsWith(\"1\"));\n\t\t} catch (Exception e) {\n\t\t\t// empty\n\t\t}\n\t\t\n\t\tnew JavaBackEnd().run(args);\n\t}\n\t\n\tprivate String appName;\n\tprivate String exec;\n\tprivate String consoleWindowTitle = \"Console\";\n\tprivate JBEMenuBar menuBar;\n\tprivate Program program;\n\tprivate JBEConsole console;\n\tprivate JFrame consoleFrame;\n\tprivate int consoleCloseOperation = JFrame.HIDE_ON_CLOSE;\n\n\tprivate int consoleX = 10;\n\tprivate int consoleY = 40;\n\tprivate int consoleWidth = 500;\n\tprivate int consoleHeight = 250;\n\tprivate HashMap<String, JBECommand> cmdTable;\n\tprivate HashMap<String, JBEWindowInterface> windowTable;\n\tprivate HashMap<String, GObject> gobjTable;\n\tprivate HashMap<String, GTimer> timerTable;\n\tprivate HashMap<String, Image> imageTable;\n\tprivate HashMap<String, Clip> clipTable;\n\tprivate HashMap<String, Clip> clipIdTable;\n\tprivate HashMap<JComponent, String> sourceTable;\n\tprivate Container empty = JTFTools.createEmptyContainer();\n\tprivate int activeWindowCount;\n\tprivate int eventMask;\n\tprivate Object eventLock = new Object();\n\tprivate boolean eventAcknowledged;\n\tprivate boolean eventPending;\n\n\t// called by AutograderInput; represents input the user wants to insert\n\tpublic void update(Observable obs, Object arg) {\n\t\tString input = (String) arg;\n\t\tconsole.setInputScript(new BufferedReader(new StringReader(input)));\n\t\t// console.println(text);   // WRONG WRONG WRONG *** TODO WRONG WRONG *** TODO\n\t}\n\t\n\tpublic void setExitOnConsoleClose(boolean value) {\n\t\tif (value) {\n\t\t\tsetConsoleCloseOperation(JFrame.EXIT_ON_CLOSE);\n\t\t} else {\n\t\t\tsetConsoleCloseOperation(JFrame.HIDE_ON_CLOSE);\n\t\t}\n\t}\n\t\n\tpublic void setCppVersion(String version) {\n\t\tVersion.setCppLibraryVersion(version);\n\t}\n\t\n\tpublic String getCppVersion() {\n\t\treturn Version.getCppLibraryVersion();\n\t}\n\n\tpublic String getJbeVersion() {\n\t\treturn Version.getLibraryVersion();\n\t}\n\t\n\tpublic JBEConsole getJBEConsole() {\n\t\treturn console;\n\t}\n\t\n\tpublic int getJBEConsoleWidth() {\n\t\treturn consoleWidth;\n\t}\n\t\n\tpublic int getJBEConsoleHeight() {\n\t\treturn consoleHeight;\n\t}\n\t\n\tpublic JFrame getJBEConsoleFrame() {\n\t\treturn consoleFrame;\n\t}\n\n\tpublic void run(String[] args) {\n\t\tprocessArguments(args);\n\t\tinitSystemProperties();\n\t\tthis.cmdTable = JBECommand.createCommandTable();\n\t\tthis.imageTable = new HashMap<String, Image>();\n\t\tthis.windowTable = new HashMap<String, JBEWindowInterface>();\n\t\tthis.gobjTable = new HashMap<String, GObject>();\n\t\tthis.timerTable = new HashMap<String, GTimer>();\n\t\tthis.clipTable = new HashMap<String, Clip>();\n\t\tthis.clipIdTable = new HashMap<String, Clip>();\n\t\tthis.sourceTable = new HashMap<JComponent, String>();\n\t\tthis.eventMask = 0;\n\t\tthis.eventAcknowledged = false;\n\t\tthis.eventPending = false;\n\t\tthis.activeWindowCount = 0;\n\t\tthis.console = new JBEConsole();\n\t\tthis.console.setErrorColor(ERROR_COLOR);\n\t\tthis.console.setErrorStyle(ERROR_STYLE);\n\t\t\n\t\tif (!GraphicsEnvironment.isHeadless()) {\n\t\t\tAutograderInput autograderInput = AutograderInput.getInstance(this);\n\t\t\tautograderInput.addObserver(this);\n\t\t\tthis.menuBar = new JBEMenuBar(this, this.console);\n\t\t\tthis.program = menuBar.getProgram();\n\t\t\tthis.console.setMenuBar(this.menuBar);\n\t\t\tprogram.loadConfiguration();\n\t\t\tnew Thread(new Runnable() {\n\t\t\t\tpublic void run() {\n\t\t\t\t\ttry { Thread.sleep(1000); } catch (Exception e) {}\n\t\t\t\t\tWindow window = program.getWindow();\n\t\t\t\t\tif (window != null) {\n\t\t\t\t\t\twindow.toFront();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}).start();\n\t\t}\n\t\t\n\t\tourConsoleFont = this.console.getFont();\n\t\t\n\t\tif (this.exec != null) {\n\t\t\ttry {\n\t\t\t\tProcess localProcess = Runtime.getRuntime().exec(this.exec);\n\t\t\t\tSystem.setIn(localProcess.getInputStream());\n\t\t\t\tSystem.setOut(new PrintStream(localProcess.getOutputStream(), /* autoflush */ true));\n\t\t\t} catch (IOException localIOException) {\n\t\t\t\tSystem.err.println(\"Can't exec process: \" + localIOException.getMessage());\n\t\t\t}\n\t\t}\n\t\tcommandLoop();\n\t}\n\n\tpublic void createWindow(String windowId, int width, int height,\n\t\t\tTopCompound topCompound) {\n\t\tcreateWindow(windowId, width, height, topCompound, true);\n\t}\n\t\n\t// JL: SwingUtilities.invokeLater\n\tpublic void createWindow(String windowId, int width, int height,\n\t\t\tTopCompound top, boolean visible) {\n\t\tif (GraphicsEnvironment.isHeadless()) {\n\t\t\tJBEHeadlessWindow headlessWindow = new JBEHeadlessWindow(this, windowId, this.appName, width, height);\n\t\t\tthis.windowTable.put(windowId, headlessWindow);\n\t\t\t// headlessWindow.setLocation(10, 10);\n\t\t\t// headlessWindow.setResizable(false);\n\t\t\theadlessWindow.getCanvas().setTopCompound(top);\n\t\t\tthis.activeWindowCount += 1;\n\t\t} else {\n\t\t\tJBEWindow jbeWindow = new JBEWindow(this, windowId, this.appName, width, height);\n\t\t\tthis.windowTable.put(windowId, jbeWindow);\n\t\t\t\n\t\t\t// commented out by Marty 2014/03/05;\n\t\t\t// This code used to set console's size to the size of the last created window\n\t\t\t// for some reason.  Why??  No.  Bad.  Turning this off.\n\t\t\t// this.consoleWidth = width;\n\t\t\t// this.consoleY = (50 + height);\n\t\t\tjbeWindow.pack();\n\t\t\tjbeWindow.setLocation(10, 10);\n//\t\t\tjbeWindow.getCanvas().initOffscreenImage();\n\t\t\tjbeWindow.getCanvas().setTopCompound(top);\n\t\t\tjbeWindow.setResizable(false);\n\t\t\tthis.activeWindowCount += 1;\n\t\t\tif (visible) {\n\t\t\t\tjbeWindow.setVisible(true);\n\t\t\t\twaitForWindowActive(jbeWindow);\n\t\t\t} else {\n\t\t\t\tjbeWindow.setVisible(false);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic void deleteWindow(String windowId) {\n\t\tthis.windowTable.remove(windowId);\n\t}\n\n\tpublic void defineGObject(String id, GObject gobj) {\n\t\tthis.gobjTable.put(id, gobj);\n\t}\n\n\tpublic void defineSource(JComponent comp, String id) {\n\t\tthis.sourceTable.put(comp, id);\n\t}\n\n\tpublic void deleteGObject(String id) {\n\t\tthis.gobjTable.remove(id);\n\t}\n\n\tprotected String getSourceId(JComponent comp) {\n\t\treturn (String) this.sourceTable.get(comp);\n\t}\n\n\tpublic GObject getGObject(String id) {\n\t\treturn (GObject) this.gobjTable.get(id);\n\t}\n\n\tpublic JComponent getInteractor(GObject gobj) {\n\t\tif ((gobj instanceof GInteractor)) {\n\t\t\treturn ((GInteractor) gobj).getInteractor();\n\t\t}\n\t\tif ((gobj instanceof JBELabel)) {\n\t\t\treturn ((JBELabel) gobj).getInteractor();\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic JBEWindow getWindow(String windowId) {\n\t\tif (this.windowTable.get(windowId) instanceof JBEWindow) {\n\t\t\treturn (JBEWindow) this.windowTable.get(windowId);\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t/*\n\t * version that works in headless mode\n\t */\n\tpublic JBEWindowInterface getWindowInterface(String windowId) {\n\t\treturn this.windowTable.get(windowId);\n\t}\n\n\tpublic void clearConsole() {\n\t\tthis.console.clear();\n\t}\n\t\n\tpublic void setConsoleCloseOperation(int op) {\n\t\tthis.consoleCloseOperation = op;\n\t}\n\n\tpublic void setConsoleFont(String fontString) {\n\t\tFont font = JTFTools.decodeFont(fontString);\n\t\tourConsoleFont = font;\n\t\tthis.console.setFont(font);\n\t}\n\n\tpublic void consoleMinimize() {\n\t\tif (this.consoleFrame != null) {\n\t\t\tthis.consoleFrame.setState(JFrame.ICONIFIED);\n\t\t}\n\t}\n\n\tpublic void consoleToFront() {\n\t\tif (this.consoleFrame != null) {\n\t\t\tthis.consoleFrame.setState(JFrame.NORMAL);\n\t\t\tthis.consoleFrame.toFront();\n\t\t}\n\t}\n\n\tpublic void consoleSetTitle(String title) {\n\t\tthis.consoleWindowTitle = title;\n\t\tif (this.consoleFrame != null) {\n\t\t\tthis.consoleFrame.setTitle(title);\n\t\t}\n\t\t\n\t\t// mild hack: if C++ code tells me that program is \"[completed]\",\n\t\t// tell Program object that it is no longer running\n\t\t// (this is helpful for me for various hooks that wait for run() to be done)\n\t\tif (title.endsWith(AbstractConsoleProgram.PROGRAM_COMPLETED_TITLE_SUFFIX)) {\n\t\t\tthis.program.setRunning(false);\n\t\t}\n\t}\n\n\t// JL: SwingUtilities.invokeLater\n\tpublic void setConsoleSize(int width, int height) {\n\t\tthis.consoleWidth = width;\n\t\tthis.consoleHeight = height;\n//\t\tif (this.console != null) {\n//\t\t\tthis.console.setPreferredSize(this.consoleWidth, this.consoleHeight);\n//\t\t\tif (this.consoleFrame != null) {\n//\t\t\t\tthis.consoleFrame.pack();\n//\t\t\t}\n//\t\t}\n\t}\n\n\t// JL: SwingUtilities.invokeLater\n\tpublic void setConsoleLocation(int x, int y) {\n\t\tthis.consoleX = x;\n\t\tthis.consoleY = y;\n\t\tif (this.consoleFrame != null) {\n\t\t\tthis.consoleFrame.setLocation(this.consoleX, this.consoleY);\n\t\t}\n\t}\n\n\tpublic String getConsole() {\n\t\tif (this.consoleFrame == null) {\n\t\t\tshowConsole();\n\t\t}\n\t\treturn this.console.readLine();\n\t}\n\n\tprotected void putConsole(String text) {\n\t\tputConsole(text, false);\n\t}\n\t\n\tpublic void putConsole(String text, boolean isStderr) {\n\t\tif (this.consoleFrame == null) {\n\t\t\tshowConsole();\n\t\t}\n\t\tif (isStderr) {\n\t\t\tConsoleModel model = this.console.getConsoleModel();\n\t\t\tmodel.print(text, ConsoleModel.ERROR_STYLE);\n\t\t} else {\n\t\t\tthis.console.print(text);\n\t\t}\n\t}\n\n\tprotected void endLineConsole() {\n\t\tendLineConsole(false);\n\t}\n\t\n\tprotected void endLineConsole(boolean isStderr) {\n\t\tif (this.consoleFrame == null) {\n\t\t\tshowConsole();\n\t\t}\n\t\tthis.console.println();\n\t}\n\n\tpublic double getEventTime() {\n\t\treturn new Date().getTime();\n\t}\n\n\tpublic void println(String text) {\n\t\tsynchronized (this.eventLock) {\n\t\t\tSplPipeDecoder.println(text);\n\t\t}\n\t}\n\n\tpublic void acknowledgeEvent(String eventText, Object... args) {\n\t\tacknowledgeEvent(String.format(Locale.US, eventText, args));\n\t}\n\t\n\tpublic void acknowledgeEvent(String eventText) {\n\t\tsynchronized (this.eventLock) {\n\t\t\tSplPipeDecoder.println(eventText);\n\t\t\tif (!this.eventAcknowledged) {\n\t\t\t\t// strip (), \"\" stuff from event to shorten it / ease encoding/decoding\n\t\t\t\teventText = eventText.replaceAll(\"\\\\(.{0,99999}\", \"\");\n\t\t\t\teventText = eventText.replaceAll(\"\\\".{0,99999}\", \"\");\n\t\t\t\tSplPipeDecoder.writeAck(eventText);\n\t\t\t\tthis.eventAcknowledged = true;\n\t\t\t\tthis.eventPending = false;\n\t\t\t} else {\n\t\t\t\tthis.eventPending = true;\n\t\t\t}\n\t\t}\n\t}\n\t\n\tpublic void acknowledgeEvent() {\n\t\tsynchronized (this.eventLock) {\n\t\t\tif (!this.eventAcknowledged) {\n\t\t\t\tSplPipeDecoder.writeAck();\n\t\t\t\tthis.eventAcknowledged = true;\n\t\t\t\tthis.eventPending = false;\n\t\t\t} else {\n\t\t\t\tthis.eventPending = true;\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected void getNextEvent(int eventMask) {\n\t\tsynchronized (this.eventLock) {\n\t\t\tthis.eventAcknowledged = false;\n\t\t\tthis.eventPending = false;\n\t\t\tacknowledgeEvent();\n\t\t\tthis.eventMask = eventMask;\n\t\t}\n\t}\n\n\tprotected void waitForEvent(int eventMask) {\n\t\tsynchronized (this.eventLock) {\n\t\t\tthis.eventAcknowledged = false;\n\t\t\tif (this.eventPending) {\n\t\t\t\tacknowledgeEvent();\n\t\t\t}\n\t\t\tthis.eventMask = eventMask;\n\t\t}\n\t}\n\n\t// JL: SwingUtilities.invokeLater\n\tprivate void showConsole() {\n\t\tthis.console.setPreferredSize(this.consoleWidth, this.consoleHeight);\n\t\tthis.consoleFrame = new JFrame(this.consoleWindowTitle);\n\t\tthis.consoleFrame.setDefaultCloseOperation(consoleCloseOperation);\n\t\tthis.consoleFrame.setLayout(new BorderLayout());\n\t\tthis.consoleFrame.add(this.console);\n\t\tthis.consoleFrame.pack();\n\t\tthis.consoleFrame.setLocation(this.consoleX, this.consoleY);\n\t\tthis.consoleFrame.addWindowListener(this);\n\t\tif (Platform.isMac()) {\n\t\t\tthis.menuBar.install(this.consoleFrame);\n\t\t} else {\n\t\t\tthis.consoleFrame.setJMenuBar(this.menuBar);\n\t\t}\n\t\tthis.consoleFrame.setVisible(true);\n\t\twaitForWindowActive(this.consoleFrame);\n\t\tthis.activeWindowCount += 1;\n\t}\n\n\tprotected void createSound(String id, String filename) {\n\t\tClip clip = getClip(filename);\n\t\tthis.clipIdTable.put(id, clip);\n\t}\n\n\tprotected void deleteSound(String id) {\n\t\tthis.clipIdTable.remove(id);\n\t}\n\n\tprotected void playSound(String id) {\n\t\tClip clip = (Clip) this.clipIdTable.get(id);\n\t\tif (clip != null) {\n\t\t\tclip.stop();\n\t\t\tclip.setFramePosition(0);\n\t\t\tclip.start();\n\t\t}\n\t}\n\n\tprotected void createTimer(String id, double ms) {\n\t\tGTimer timer = new GTimer(id, ms);\n\t\ttimer.addActionListener(this);\n\t\tthis.timerTable.put(id, timer);\n\t}\n\n\tprotected void deleteTimer(String id) {\n\t\tGTimer timer = this.timerTable.get(id);\n\t\tif (timer != null) {\n\t\t\ttimer.stop();\n\t\t}\n\t\tthis.timerTable.remove(id);\n\t}\n\n\tprotected void startTimer(String id) {\n\t\tGTimer timer = this.timerTable.get(id);\n\t\tif (timer != null) {\n\t\t\ttimer.start();\n\t\t}\n\t}\n\n\tprotected void stopTimer(String id) {\n\t\tGTimer timer = this.timerTable.get(id);\n\t\tif (timer != null) {\n\t\t\ttimer.stop();\n\t\t}\n\t}\n\n\t// https://docs.oracle.com/javase/7/docs/api/constant-values.html#java.awt.event.InputEvent.BUTTON1_DOWN_MASK\n\tprivate int convertModifiers(int modifiers) {\n\t\tint converted = 0;\n\t\tif ((modifiers & 0x40) != 0) {\n\t\t\tconverted |= SHIFT_DOWN;\n\t\t}\n\t\tif ((modifiers & 0x80) != 0) {\n\t\t\tconverted |= CTRL_DOWN;\n\t\t}\n\t\tif ((modifiers & 0x100) != 0) {\n\t\t\tconverted |= META_DOWN;\n\t\t}\n\t\tif ((modifiers & 0x200) != 0) {\n\t\t\tconverted |= ALT_DOWN;\n\t\t}\n\t\tif ((modifiers & 0x2000) != 0) {\n\t\t\tconverted |= ALT_GRAPH_DOWN;\n\t\t}\n\t\tif ((modifiers & 0x400) != 0) {\n\t\t\tconverted |= BUTTON1_DOWN;\n\t\t}\n\t\tif ((modifiers & 0x800) != 0) {\n\t\t\tconverted |= BUTTON2_DOWN;\n\t\t}\n\t\tif ((modifiers & 0x1000) != 0) {\n\t\t\tconverted |= BUTTON3_DOWN;\n\t\t}\n\t\treturn converted;\n\t}\n\n\tpublic String openFileDialog(String title, String mode, String path) {\n\t\t// BUGFIX: (2014/10/09) was crashing when null/default current dir was passed by C++ lib\n\t\tif (path == null) {\n\t\t\tpath = \"\";\n\t\t}\n\t\tJBEFileFilter fileFilter = new JBEFileFilter(path);\n\t\tJFileChooser fileChooser = new JFileChooser(fileFilter.getDirectory());\n\t\tfileChooser.setFileFilter(fileFilter);\n\t\tfileChooser.setDialogTitle(title);\n\t\tint result = 0;\n\t\tComponent parent = null;\n\t\tif (console != null) {\n\t\t\tparent = console;\n\t\t}\n\t\tif (mode.equalsIgnoreCase(\"load\")) {\n\t\t\tresult = fileChooser.showOpenDialog(parent);\n\t\t} else if (mode.equalsIgnoreCase(\"save\")) {\n\t\t\tresult = fileChooser.showSaveDialog(parent);\n\t\t} else {\n\t\t\treturn \"\";\n\t\t}\n\t\t\n\t\tif (result == JFileChooser.APPROVE_OPTION) {\n\t\t\treturn fileChooser.getSelectedFile().getAbsolutePath();\n\t\t} else {\n\t\t\treturn \"\";\n\t\t}\n\t}\n\n\tpublic void actionPerformed(ActionEvent event) {\n\t\tObject source = event.getSource();\n\t\tObject sourceId;\n\t\tif ((source instanceof GTimer)) {\n\t\t\tif (listeningForEvent(TIMER_EVENT)) {\n\t\t\t\tsourceId = (GTimer) event.getSource();\n\t\t\t\tacknowledgeEvent(\"event:timerTicked(\\\"%s\\\", %d)\",\n\t\t\t\t\t\t((GTimer) sourceId).getId(), (long) getEventTime());\n\t\t\t}\n\t\t} else if (listeningForEvent(ACTION_EVENT)) {\n\t\t\tsourceId = getSourceId((JComponent) source);\n\t\t\tGInteractor localGInteractor = (GInteractor) getGObject((String) sourceId);\n\t\t\tString str = localGInteractor.getActionCommand();\n\t\t\t// if (str != null && !str.isEmpty()) {\n\t\t\t\tacknowledgeEvent(\"event:actionPerformed(\\\"%s\\\", \\\"%s\\\", %d, %d)\",\n\t\t\t\t\t\t(String) sourceId, str,\n\t\t\t\t\t\t(long) getEventTime(),\n\t\t\t\t\t\tevent.getModifiers());\n\t\t\t// }\n\t\t}\n\t}\n\n\tpublic void keyPressed(KeyEvent event) {\n\t\tif (listeningForEvent(KEY_EVENT)) {\n\t\t\tprintEvent(\"keyPressed\", event);\n\t\t}\n\t}\n\n\tpublic void keyReleased(KeyEvent event) {\n\t\tif (listeningForEvent(KEY_EVENT)) {\n\t\t\tprintEvent(\"keyReleased\", event);\n\t\t}\n\t}\n\n\tpublic void keyTyped(KeyEvent event) {\n\t\tif (listeningForEvent(KEY_EVENT)) {\n\t\t\tprintEvent(\"keyTyped\", event);\n\t\t}\n\t}\n\n\tprivate void printEvent(String type, KeyEvent keyEvent) {\n\t\tString windowId = getWindowId(keyEvent);\n\t\tint keyCode = keyEvent.getKeyCode();\n\t\tacknowledgeEvent(\"event:%s(\\\"%s\\\", %d, %d, %d, %d)\",\n\t\t\t\ttype, windowId, (long) getEventTime(),\n\t\t\t\tconvertModifiers(keyEvent.getModifiersEx()),\n\t\t\t\t(int) keyEvent.getKeyChar(),\n\t\t\t\tkeyCode);\n\t}\n\t\n\tprivate void printEvent(String type, String sourceId, AdjustmentEvent docEvent) {\n\t\tacknowledgeEvent(\"event:%s(\\\"%s\\\", %d)\",\n\t\t\t\ttype, sourceId, (long) getEventTime());\n\t}\n\t\n\tprivate void printEvent(String type, String sourceId, DocumentEvent docEvent) {\n\t\tacknowledgeEvent(\"event:%s(\\\"%s\\\", %d)\",\n\t\t\t\ttype, sourceId, (long) getEventTime());\n\t}\n\t\n\tprivate void printEvent(String type, String sourceId, HyperlinkEvent linkEvent) {\n\t\t/* The underlying URL may be null if the link can't be interpreted as a URL.\n\t\t * To fix this, we'll fall back on the link description, which the JavaDoc\n\t\t * describes as being the proper way to handle a malformed URL.\n\t\t */\n\t\tString url = (linkEvent.getURL() != null? linkEvent.getURL().toString() : linkEvent.getDescription());\n\t\turl = StringUtils.urlEncode(url);\n\t\tacknowledgeEvent(\"event:%s(\\\"%s\\\", \\\"%s\\\", %d)\",\n\t\t\t\ttype, sourceId, url, (long) getEventTime());\n\t}\n\t\n//\tprivate void printEvent(String type, String sourceId, AWTEvent event) {\n//\t\tacknowledgeEvent(\"event:%s(\\\"%s\\\", %d, %d)\",\n//\t\t\t\ttype, sourceId, (long) getEventTime());\n//\t}\n\t\n\tprivate String getWindowId(EventObject event) {\n\t\tObject src = event.getSource();\n\t\tif (src instanceof JBECanvas) {\n\t\t\tJBECanvas canvas = (JBECanvas) src;\n\t\t\treturn canvas.getWindowId();\n\t\t} else if (src instanceof JBEWindow) {\n\t\t\tJBEWindow window = (JBEWindow) src;\n\t\t\treturn window.getWindowId();\n\t\t} else if (src instanceof Component) {\n\t\t\tComponent comp = (Component) src;\n\t\t\tJBEWindow window = GuiUtils.getAncestor(comp, JBEWindow.class);\n\t\t\tif (window != null) {\n\t\t\t\treturn window.getWindowId();\n\t\t\t}\n\t\t}\n\t\treturn \"???\";\n\t}\n\t\n\t/**\n\t * Returns a DocumentListener that listens for events on the given interactor.\n\t * This method is needed for DocumentListener unlike other listeners because DocumentEvent\n\t * does not have a getSource method, so we need a reference to the back-end and interactor\n\t * to determine the event source.\n\t */\n\tpublic DocumentListener createDocumentListener(final GInteractor interactor) {\n\t\treturn new DocumentListener() {\n\t\t\t// required method of DocumentListener interface\n\t\t\tpublic void changedUpdate(DocumentEvent event) {\n\t\t\t\tfireEvent(event);\n\t\t\t}\n\t\t\t\n\t\t\t// required method of DocumentListener interface\n\t\t\tpublic void removeUpdate(DocumentEvent event) {\n\t\t\t\tfireEvent(event);\n\t\t\t}\n\t\t\t\n\t\t\t// required method of DocumentListener interface\n\t\t\tpublic void insertUpdate(DocumentEvent event) {\n\t\t\t\tfireEvent(event);\n\t\t\t}\n\t\t\t\n\t\t\t// common code to actually send the event through the pipe\n\t\t\tprivate void fireEvent(DocumentEvent event) {\n\t\t\t\tString sourceId = sourceTable.get(interactor.getInteractor());\n\t\t\t\tprintEvent(\"stateChanged\", sourceId, event);\n\t\t\t}\n\t\t};\n\t};\n\n\t/**\n\t * Returns an AdjustmentListener that listens for scrolling on the given scroll bar.\n\t */\n\tpublic AdjustmentListener createAdjustmentListener(final GScrollBar scrollBar) {\n\t\treturn new AdjustmentListener() {\n\t\t\t// required method of AdjustmentListener interface\n\t\t\tpublic void adjustmentValueChanged(AdjustmentEvent event) {\n\t\t\t\tString sourceId = sourceTable.get(scrollBar.getInteractor());\n\t\t\t\tprintEvent(\"scrollPerformed\", sourceId, event);\n\t\t\t}\n\t\t};\n\t}\n\n\t/**\n\t * Returns a HyperlinkListener that listens for hyperlink events on the given interactor.\n\t */\n\tpublic HyperlinkListener createHyperlinkListener(final GInteractor interactor) {\n\t\treturn new HyperlinkListener() {\n\t\t\t// required method of DocumentListener interface\n\t\t\tpublic void hyperlinkUpdate(HyperlinkEvent event) {\n\t\t\t\tif (event.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {\n\t\t\t\t\tString sourceId = sourceTable.get(interactor.getInteractor());\n\t\t\t\t\tprintEvent(\"hyperlinkClicked\", sourceId, event);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic void mouseClicked(MouseEvent event) {\n\t\t((Component) event.getSource()).requestFocus();\n\t\tif (listeningForEvent(MOUSE_EVENT | CLICK_EVENT)) {\n\t\t\tprintEvent(\"mouseClicked\", event);\n\t\t}\n\t}\n\n\tpublic void mouseEntered(MouseEvent event) {\n\t\tif (listeningForEvent(MOUSE_EVENT)) {\n\t\t\tprintEvent(\"mouseEntered\", event);\n\t\t}\n\t}\n\n\tpublic void mouseExited(MouseEvent event) {\n\t\tif (listeningForEvent(MOUSE_EVENT)) {\n\t\t\tprintEvent(\"mouseExited\", event);\n\t\t}\n\t}\n\n\tpublic void mousePressed(MouseEvent event) {\n\t\tif (listeningForEvent(MOUSE_EVENT)) {\n\t\t\tprintEvent(\"mousePressed\", event);\n\t\t}\n\t}\n\n\tpublic void mouseReleased(MouseEvent event) {\n\t\tif (listeningForEvent(MOUSE_EVENT)) {\n\t\t\tprintEvent(\"mouseReleased\", event);\n\t\t}\n\t}\n\n\tpublic void mouseMoved(MouseEvent event) {\n\t\tif (listeningForEvent(MOUSE_EVENT)) {\n\t\t\tprintEvent(\"mouseMoved\", event);\n\t\t}\n\t}\n\n\tpublic void mouseDragged(MouseEvent event) {\n\t\tif (listeningForEvent(MOUSE_EVENT)) {\n\t\t\tprintEvent(\"mouseDragged\", event);\n\t\t}\n\t}\n\n\tpublic void mouseWheelMoved(MouseWheelEvent event) {\n\t\tif (listeningForEvent(MOUSE_EVENT)) {\n\t\t\tint rotation = event.getWheelRotation();\n\t\t\tif (rotation > 0) {\n\t\t\t\tprintEvent(\"mouseWheelDown\", event);\n\t\t\t} else if (rotation < 0) {\n\t\t\t\tprintEvent(\"mouseWheelUp\", event);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void printEvent(String type, MouseEvent mouseEvent) {\n\t\tString windowId = getWindowId(mouseEvent);\n\t\tacknowledgeEvent(\"event:%s(\\\"%s\\\", %d, %d, %d, %d)\",\n\t\t\t\ttype, windowId, (long) getEventTime(),\n\t\t\t\tconvertModifiers(mouseEvent.getModifiersEx()),\n\t\t\t\tmouseEvent.getX(), mouseEvent.getY());\n\t}\n\n\tpublic void windowActivated(WindowEvent event) {\n\t\t// empty\n\t}\n\n\tpublic void windowClosed(WindowEvent event) {\n\t\tif (event.getSource() == this.consoleFrame) {\n\t\t\tif (consoleCloseOperation == JFrame.DO_NOTHING_ON_CLOSE) {\n\t\t\t\treturn;\n\t\t\t} else if (consoleCloseOperation == JFrame.EXIT_ON_CLOSE) {\n\t\t\t\tshutdownBackEnd(/* sendEvent */ false);\n\t\t\t} else if (consoleCloseOperation == JFrame.HIDE_ON_CLOSE) {\n\t\t\t\tconsoleFrame.setVisible(false);\n\t\t\t}\n\t\t\t\n\t\t\tacknowledgeEvent(\"event:consoleWindowClosed()\");\n\t\t} else {\n\t\t\tJBEWindow window = (JBEWindow) event.getSource();\n\t\t\tif (this.windowTable.containsKey(window.getWindowId())) {\n\t\t\t\tacknowledgeEvent(\"event:windowClosed(\\\"%s\\\", %d)\", window.getWindowId(), (long) getEventTime());\n\t\t\t\tthis.windowTable.remove(window.getWindowId());\n\t\t\t}\n\n\t\t\tthis.activeWindowCount -= 1;\n\t\t\tif (this.activeWindowCount == 0) {\n\t\t\t\tacknowledgeEvent(\"event:lastWindowGWindow_closed()\");\n\t\t\t\tshutdownBackEnd(false);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t// notify the back end that a window has been closed;\n\t// this is used with headless windows only\n\tpublic void notifyOfWindowClosed(JBEWindowInterface window) {\n\t\tString windowId = window.getWindowId();\n\t\tif (this.windowTable.containsKey(windowId)) {\n\t\t\tacknowledgeEvent(\"event:windowClosed(\\\"%s\\\", %d)\", windowId, (long) getEventTime());\n\t\t\tthis.windowTable.remove(windowId);\n\t\t}\n\n\t\tthis.activeWindowCount -= 1;\n\t\tif (this.activeWindowCount == 0) {\n\t\t\tacknowledgeEvent(\"event:lastWindowGWindow_closed()\");\n\t\t\tshutdownBackEnd(false);\n\t\t}\n\t\t\n\t}\n\n\tpublic void shutdownBackEnd(boolean sendEvent) {\n\t\tnew Thread(new Runnable() {\n\t\t\tpublic void run() {\n\t\t\t\ttry {\n\t\t\t\t\tThread.sleep(200);\n\t\t\t\t} catch (InterruptedException ie) {}\n\t\t\t\ttry {\n\t\t\t\t\tSystem.out.close();\n\t\t\t\t} catch (Exception e) {\n\t\t\t\t\t// empty\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tSystem.in.close();\n\t\t\t\t} catch (Exception e) {\n\t\t\t\t\t// empty\n\t\t\t\t}\n\t\t\t\tSystem.exit(0);\n\t\t\t}\n\t\t}).start();\n\t\t\n\t\tif (sendEvent) {\n\t\t\tif (consoleFrame != null) {\n\t\t\t\tconsoleFrame.setVisible(false);\n\t\t\t\tacknowledgeEvent(\"event:consoleWindowClosed()\");\n\t\t\t}\n\t\t\tacknowledgeEvent(\"event:lastWindowGWindow_closed()\");\n\t\t}\n\t}\n\t\n\tpublic void windowClosing(WindowEvent event) {\n\t\tif (event.getSource() == this.consoleFrame) {\n\t\t\tif (consoleCloseOperation == JFrame.DO_NOTHING_ON_CLOSE) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else {\n\t\t\tJBEWindow window = (JBEWindow) event.getSource();\n\t\t\tif (this.windowTable.containsKey(window.getWindowId())) {\n\t\t\t\tacknowledgeEvent(\"event:windowClosing(\\\"%s\\\", %d)\", window.getWindowId(), (long) getEventTime());\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic void windowDeactivated(WindowEvent event) {\n\t\t// empty\n\t}\n\n\tpublic void windowDeiconified(WindowEvent event) {\n\t\t// empty\n\t}\n\n\tpublic void windowIconified(WindowEvent event) {\n\t\t// empty\n\t}\n\n\tpublic void windowOpened(WindowEvent event) {\n\t\tJFrame frame = (JFrame) event.getSource();\n\t\tsynchronized (frame) {\n\t\t\tframe.notifyAll();\n\t\t}\n\t}\n\n\tprivate void waitForWindowActive(JFrame frame) {\n\t\tsynchronized (frame) {\n\t\t\twhile (!frame.isShowing()) {\n\t\t\t\ttry {\n\t\t\t\t\tframe.wait();\n\t\t\t\t\tThread.sleep(100);\n\t\t\t\t} catch (InterruptedException ie) {\n\t\t\t\t\t// empty\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// required method of ChangeListener interface\n\tpublic void stateChanged(ChangeEvent event) {\n\t\tObject source = event.getSource();\n\t\tif (listeningForEvent(CHANGE_EVENT)) {\n\t\t\tString sourceId = getSourceId((JComponent) source);\n\t\t\tacknowledgeEvent(\"event:stateChanged(\\\"%s\\\", %d)\", sourceId, (long) getEventTime());\n\t\t} else if (listeningForEvent(ACTION_EVENT)) {\n\t\t\tString sourceId = getSourceId((JComponent) source);\n\t\t\tGInteractor interactor = (GInteractor) getGObject(sourceId);\n\t\t\tString actionCommand = interactor.getActionCommand();\n\t\t\tif (!actionCommand.isEmpty()) {\n\t\t\t\tacknowledgeEvent(\"event:actionPerformed(\\\"%s\\\", \\\"%s\\\", %d)\", sourceId, actionCommand, (long) getEventTime());\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic void componentHidden(ComponentEvent event) {\n\t\t// empty\n\t}\n\n\tpublic void componentMoved(ComponentEvent event) {\n\t\t// empty\n\t}\n\n\tpublic void componentResized(ComponentEvent event) {\n\t\tif (listeningForEvent(WINDOW_EVENT)) {\n\t\t\tString windowId = getWindowId(event);\n\t\t\tacknowledgeEvent(\"event:windowResized(\\\"%s\\\", %d)\", windowId, (long) getEventTime());\n\t\t}\n\t}\n\n\tpublic void componentShown(ComponentEvent event) {\n\t\t// empty\n\t}\n\t\n\t// returns true if the given event type (such as MOUSE_EVENT) is currently part\n\t// of JBE's event mask, meaning that we are listening for that type of event\n\tprivate boolean listeningForEvent(int type) {\n\t\treturn (this.eventMask & type) != 0;\n\t}\n\t\n\tprivate void printLog(String text) {\n\t\ttry {\n\t\t\tPrintStream out = new PrintStream(new FileOutputStream(DEBUG_LOG_FILE, /* append */ true));\n\t\t\tout.println(text);\n\t\t\tout.flush();\n\t\t\tout.close();\n\t\t} catch (IOException ioe) {\n\t\t\tioe.printStackTrace();\n\t\t}\n\t}\n\n\tprivate void commandLoop() {\n\t\tBufferedReader reader = new BufferedReader(new InputStreamReader(System.in));\n\t\tfinal TokenScanner scanner = new TokenScanner();\n\t\tscanner.ignoreWhitespace();\n\t\tscanner.scanNumbers();\n\t\tscanner.scanStrings();\n\t\tscanner.addWordCharacters(\".\");\n\t\ttry {\n\t\t\tfor (;;) {\n\t\t\t\tString command = reader.readLine();\n\t\t\t\tif (command == null) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (DEBUG) {\n\t\t\t\t\tprintLog(command);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (command.equals(\"LongCommand.begin()\")) {\n\t\t\t\t\tcommand = readLongCommand(reader);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tscanner.setInput(command);\n\t\t\t\tString commandName = scanner.nextToken();\n\t\t\t\tfinal JBECommand jbeCommand = this.cmdTable.get(commandName);\n\t\t\t\tif (jbeCommand == null) {\n\t\t\t\t\tSystem.err.println(\"Unexpected error: unknown command \\\"\" + commandName + \"\\\"\");\n\t\t\t\t} else {\n\t\t\t\t\t// execute JBE command; some commands must be run on Swing event thread\n\t\t\t\t\tif (jbeCommand.shouldRunOnSwingEventThread()) {\n\t\t\t\t\t\tRunnable run = new Runnable() {\n\t\t\t\t\t\t\tpublic void run() {\n\t\t\t\t\t\t\t\tjbeCommand.execute(scanner, JavaBackEnd.this);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (jbeCommand.shouldInvokeAndWait()) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tSwingUtilities.invokeAndWait(run);\n\t\t\t\t\t\t\t} catch (InvocationTargetException ite) {\n\t\t\t\t\t\t\t\t// TODO: is this the right way to handle such an error?  :-/ not sure\n\t\t\t\t\t\t\t\t// println(\"error:\" + ite.getMessage());\n\t\t\t\t\t\t\t\tThrowable cause = ExceptionUtils.getUnderlyingCause(ite);\n\t\t\t\t\t\t\t\tSystem.err.println(\"Unexpected error: \" + cause.getMessage());\n\t\t\t\t\t\t\t\tcause.printStackTrace(System.err);\n\t\t\t\t\t\t\t} catch (InterruptedException ie) {\n\t\t\t\t\t\t\t\t// okay; do nothing\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tSwingUtilities.invokeLater(run);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// don't run on Swing event thread; just run on this current thread\n\t\t\t\t\t\tjbeCommand.execute(scanner, this);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (Exception ex) {\n\t\t\tSystem.err.println(\"Unexpected error: \" + ex.getMessage());\n\t\t\tex.printStackTrace(System.err);\n\t\t\tif (DEBUG) {\n\t\t\t\tprintLog(\"Unexpected error: \" + ex.getMessage());\n\t\t\t}\n\t\t}\n\t}\n\t\n\t/*\n\t * Handle very long command strings in special way.\n\t */\n\tprivate String readLongCommand(BufferedReader systemInReader) throws IOException {\n\t\t// repeatedly read lines from System.in until long command is done\n\t\tStringBuilder sb = new StringBuilder(256000);\n\t\twhile (true) {\n\t\t\tString line = systemInReader.readLine();\n\t\t\tif (DEBUG) {\n\t\t\t\tprintLog(line);\n\t\t\t}\n\t\t\tif (line == null || line.equals(\"LongCommand.end()\")) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tsb.append(line);\n\t\t}\n\t\t\n\t\tString cmd = sb.toString();\n\t\treturn cmd;\n\t}\n\n\tprivate void processArguments(String[] args) {\n\t\tthis.appName = DEFAULT_APP_NAME;\n\t\tthis.exec = null;\n\t\tfor (int i = 0; i < args.length; i++) {\n\t\t\tString str = args[i];\n\t\t\tif (str.startsWith(\"-\")) {\n\t\t\t\tif (str.equals(\"-exec\")) {\n\t\t\t\t\tthis.exec = args[(++i)];\n\t\t\t\t} else {\n\t\t\t\t\tSystem.err.println(\"Error: Unrecognized option \" + str);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.appName = str;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void initSystemProperties() {\n\t\tif (!GraphicsEnvironment.isHeadless()) {\n\t\t\tSystem.setProperty(\"com.apple.mrj.application.apple.menu.about.name\", this.appName);\n\t\t\tGuiUtils.setSystemLookAndFeel();\n\t\t}\n\t}\n\n\tprotected Image getImage(String filename) {\n\t\tImage image = this.imageTable.get(filename);\n\t\tif (image != null) {\n\t\t\treturn image;\n\t\t}\n\t\tToolkit tk = Toolkit.getDefaultToolkit();\n\t\tif (filename.startsWith(\"http:\")) {\n\t\t\ttry {\n\t\t\t\timage = tk.getImage(new URL(filename));\n\t\t\t} catch (MalformedURLException localMalformedURLException) {\n\t\t\t\tthrow new ErrorException(\"loadImage: Malformed URL\");\n\t\t\t}\n\t\t} else {\n\t\t\tFile file = new File(filename);\n\t\t\tif (!file.exists() && !filename.startsWith(\"/\")\n\t\t\t\t\t&& !filename.startsWith(\".\")) {\n\t\t\t\tfile = new File(\"images/\" + filename);\n\t\t\t}\n\t\t\tif (!file.exists()) {\n\t\t\t\tthrow new ErrorException(\"loadImage: File not found\");\n\t\t\t}\n\t\t\timage = tk.getImage(file.getAbsolutePath());\n\t\t}\n\t\tif (image == null) {\n\t\t\tthrow new ErrorException(\"loadImage: File not found\");\n\t\t}\n\t\tMediaTracker mt = new MediaTracker(this.empty);\n\t\tmt.addImage(image, 0);\n\t\ttry {\n\t\t\tmt.waitForID(0);\n\t\t} catch (InterruptedException ie) {\n\t\t\tthrow new ErrorException(\"loadImage: Loading interrupted\");\n\t\t}\n\t\tthis.imageTable.put(filename, image);\n\t\treturn image;\n\t}\n\n\tprotected Clip getClip(String filename) {\n\t\tClip clip = (Clip) this.clipTable.get(filename);\n\t\tif (clip != null) {\n\t\t\treturn clip;\n\t\t}\n\t\ttry {\n\t\t\tclip = AudioSystem.getClip();\n\t\t\tFile file = new File(filename);\n\t\t\tif (!file.exists() && (!filename.startsWith(\"/\"))\n\t\t\t\t\t&& (!filename.startsWith(\".\"))) {\n\t\t\t\tfile = new File(\"sounds/\" + filename);\n\t\t\t}\n\t\t\tif (!file.exists()) {\n\t\t\t\tthrow new ErrorException(\"createClip: File not found\");\n\t\t\t}\n\t\t\tInputStream in = new BufferedInputStream(new FileInputStream(file));\n\t\t\tAudioInputStream audioStream = AudioSystem\n\t\t\t\t\t.getAudioInputStream(in);\n\t\t\tclip.open(audioStream);\n\t\t} catch (IOException ioe) {\n\t\t\tthrow new ErrorException(\"getClip: I/O error (\" + new File(filename).getAbsolutePath() + \")\");\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(\"getClip: \" + ex);\n\t\t}\n\t\tthis.clipTable.put(filename, clip);\n\t\treturn clip;\n\t}\n\t\n\tpublic KeyListener getConsoleKeyListener() {\n\t\tConsoleModel consoleModel = this.console.getConsoleModel();\n\t\tif (consoleModel != null) {\n\t\t\treturn (KeyListener) consoleModel;   // StandardConsoleModel implements KeyListener\n\t\t}\n\t\treturn null;\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/LibraryUpdater.java",
    "content": "/*\n * Class that can automatically check for updates to the Stanford libraries\n * and download them and update them in place as needed.\n */\n\npackage stanford.spl;\n\nimport java.awt.*;\nimport java.io.*;\nimport javax.swing.*;\n\npublic class LibraryUpdater {\n\tprivate static final boolean AUTO_DOWNLOAD = false;\n\tprivate static final String LIBRARY_FOLDER_URL = \"http://stanford.edu/~stepp/cppdoc/\";\n\tprivate static final String SPL_JAR_VERSION_URL = LIBRARY_FOLDER_URL + \"CURRENTVERSION_SPLJAR.txt\";\n\tprivate static final String CPP_ZIP_VERSION_URL = LIBRARY_FOLDER_URL + \"CURRENTVERSION_CPPLIB.txt\";\n\tprivate static final String CPP_ZIP_FILENAME = \"StanfordCPPLib.zip\";\n\tprivate static final String CPP_ZIP_URL = LIBRARY_FOLDER_URL + CPP_ZIP_FILENAME;\n\tprivate static final String SPL_JAR_FILENAME = \"spl.jar\";\n\tprivate static final String SPL_JAR_URL = LIBRARY_FOLDER_URL + SPL_JAR_FILENAME;\n\t\n\tpublic boolean checkForUpdates() {\n\t\treturn checkForUpdates(/* parent */ null);\n\t}\n\t\n\tpublic boolean checkForUpdates(final Component parent) {\n\t\tString currentVersion = Version.isJavaProject() ? Version.getLibraryVersion() : Version.getCppLibraryVersion();\n\t\t\n\t\tfinal String latestVersionUrl = Version.isJavaProject() ? SPL_JAR_VERSION_URL : CPP_ZIP_VERSION_URL;\n\t\t\n\t\tfinal UrlDownloader downloader = UrlDownloader.getInstance();\n\t\tString latestVersion = \"\";\n\t\ttry {\n\t\t\tlatestVersion = downloader.download(latestVersionUrl);\n\t\t} catch (HTTPDownloadException he) {\n\t\t\tJOptionPane.showMessageDialog(parent,\n\t\t\t\t\t\"Unable to look up latest version from web: \" + he.toString());\n\t\t\treturn false;\n\t\t} catch (IOException ioe) {\n\t\t\tJOptionPane.showMessageDialog(parent,\n\t\t\t\t\t\"Unable to look up latest version from web: \" + ioe.toString());\n\t\t\treturn false;\n\t\t}\n\t\t\n\t\tcurrentVersion = currentVersion.trim().replace(\"-\", \"/\");\n\t\tlatestVersion = latestVersion.trim().replace(\"-\", \"/\");\n\t\tboolean outOfDate = currentVersion.compareTo(latestVersion) < 0;\n\t\tif (!outOfDate) {\n\t\t\tJOptionPane.showMessageDialog(parent,\n\t\t\t\t\t\"This project already has the latest version \\nof the Stanford libraries (\" + currentVersion + \").\");\n\t\t\treturn false;\n\t\t}\n\t\t\n\t\tString outOfDateMessage = \"There is an updated version of the Stanford libraries available.\\n\\n\"\n\t\t\t\t+ \"This project's library version: \" + currentVersion + \"\\n\"\n\t\t\t\t+ \"Current newest library version: \" + latestVersion + \"\\n\";\n\n\t\tif (AUTO_DOWNLOAD) {\n\t\t\toutOfDateMessage += \"Do you want to update your project now?\";\n\t\t\tint confirmResult = JOptionPane.showConfirmDialog(parent,\n\t\t\t\t\t/* message */ outOfDateMessage,\t\t\t\t\t\n\t\t\t\t\t/* title */ \"Update library?\",\n\t\t\t\t\t/* type */ JOptionPane.YES_NO_OPTION);\n\t\t\tif (confirmResult != JOptionPane.YES_OPTION) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else {\n\t\t\t// don't download; just tell user about new version and stop\n\t\t\toutOfDateMessage += \"Go to \" + LIBRARY_FOLDER_URL + \" to get the new version.\";\n\t\t\tJOptionPane.showMessageDialog(parent, outOfDateMessage);\n\t\t\treturn false;\n\t\t}\n\t\t\n\t\tfinal String libUrl;\n\t\tfinal String libFileName;\n\t\tfinal File libOutputFile;\n\t\t\n\t\tif (Version.isJavaProject()) {\n\t\t\tlibUrl = SPL_JAR_URL;\n\t\t\tlibFileName = SPL_JAR_FILENAME;\n\t\t\t\n\t\t\t// figure out where to save to\n\t\t\t// (some projects put in lib/ dir, others in root)\n\t\t\tFile libDir = new File(\"lib\");\n\t\t\tif (libDir.isDirectory() && new File(libDir, libFileName).exists()) {\n\t\t\t\t// put in lib/ dir (Marty Stepp-style project structure)\n\t\t\t\tlibOutputFile = new File(libDir, libFileName);\n\t\t\t} else if (new File(libFileName).exists()) {\n\t\t\t\t// fallback to current dir\n\t\t\t\tlibOutputFile = new File(libFileName);\n\t\t\t} else {\n\t\t\t\t// dunno where spl.jar is; set null and prompt for it later\n\t\t\t\tlibOutputFile = chooseLibFile(parent, libFileName, /* dirOnly */ false);\n\t\t\t}\n\t\t} else {\n\t\t\tlibUrl = CPP_ZIP_URL;\n\t\t\tlibFileName = CPP_ZIP_FILENAME;\n\t\t\t\n\t\t\t// figure out where to save to\n\t\t\t// (TODO: look around .. for build folder, project folder(s), etc.?)\n\t\t\t// - what if they put multiple projects in same place?\n\t\t\t// - pop up JFileChooser to select destination directory?\n\t\t\t\n\t\t\t// libOutputFile = new File(CPP_ZIP_FILENAME);\n\t\t\tlibOutputFile = chooseLibFile(parent, libFileName, /* dirOnly */ true);\n\t\t}\n\t\t\n\t\tif (libOutputFile == null) {\n\t\t\treturn false;\n\t\t}\n\t\t\n\t\t// okay, update the library!\n\t\tfinal TextFileDialog dialog = TextFileDialog.showDialog(\n\t\t\t\t/* parent */ parent,\n\t\t\t\t/* title */ \"Updating Stanford libraries\",\n\t\t\t\t/* text */ \"\",\n\t\t\t\t/* rows */ 20,\n\t\t\t\t/* cols */ 70,\n\t\t\t\t/* modal */ false);\n\t\tdialog.setSize(500, 300);\n\t\t\n\t\tdialog.println(\"Downloading library from:\\n\" + libUrl + \"\\n\");\n\t\t\n\t\tRunnable runnable = new Runnable() {\n\t\t\tpublic void run() {\n\t\t\t\ttry {\n\t\t\t\t\tdownloader.download(libUrl, libOutputFile);\n\t\t\t\t\tdialog.println(\"Downloaded successfully: \" + libOutputFile.getName() + \"\\n\");\n\t\t\t\t\tif (Version.isJavaProject()) {\n\t\t\t\t\t\tdialog.println(\"Refresh your project and re-run it\");\n\t\t\t\t\t\tdialog.println(\"to begin using the new library.\");\n\t\t\t\t\t\tdialog.println(\"(Right-click your project name in the left\");\n\t\t\t\t\t\tdialog.println(\"Package Explorer and choose Refresh.)\");\n\t\t\t\t\t} else {\n//\t\t\t\t\t\tdialog.println(\"You will need to un-zip the new version\\ninto your project's library folder as appropriate.\");\n//\t\t\t\t\t\tdialog.println(\"If you are not sure how to do this,\");\n//\t\t\t\t\t\tdialog.println(\"please seek assistance from your instructor or TA.\");\n\t\t\t\t\t}\n\t\t\t\t} catch (IOException ioe) {\n\t\t\t\t\tdialog.println(\"Unable to download library: \\n\" + ioe.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tThread thread = new Thread(runnable);\n\t\tthread.start();\n\t\t\n\t\t// wait for download to finish\n\t\twhile (thread.isAlive()) {\n\t\t\ttry {\n\t\t\t\tThread.sleep(20);\n\t\t\t} catch (InterruptedException ie) {\n\t\t\t\t// empty\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn outOfDate;\n\t}\n\t\n\tprivate File chooseLibFile(Component parent, String libFileName, boolean dirOnly) {\n\t\tJFileChooser fileChooser = new JFileChooser(System.getProperty(\"user.dir\"));\n\t\tif (dirOnly) {\n\t\t\tfileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);\n\t\t} else {\n\t\t\tfileChooser.setFileFilter(new javax.swing.filechooser.FileFilter() {\n\t\t\t\tpublic boolean accept(File f) {\n\t\t\t\t\treturn f != null && f.getName().endsWith(\".jar\");\n\t\t\t\t}\n\t\t\t\tpublic String getDescription() {\n\t\t\t\t\treturn \"Java Archives (*.jar)\";\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tint result = fileChooser.showSaveDialog(parent);\n\t\tif (result != JFileChooser.APPROVE_OPTION) {\n\t\t\treturn null;\n\t\t}\n\t\tFile selectedDir = fileChooser.getSelectedFile();\n\t\tif (selectedDir == null || !selectedDir.exists() || !selectedDir.isDirectory()) {\n\t\t\treturn null;\n\t\t}\n\t\tFile libOutputFileToUse = new File(selectedDir, libFileName);\n\t\treturn libOutputFileToUse;\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/Note_play.java",
    "content": "/*\n * @version 2017/04/25\n * - changed from writeAck to writeOK\n */\n\npackage stanford.spl;\n\nimport acm.util.TokenScanner;\nimport stanford.cs106.audio.*;\n\npublic class Note_play extends JBECommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString noteStr = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\tNote note = new Note(noteStr);\n\t\tnote.play();\n\t\tSplPipeDecoder.writeOK();   // tell C++ that note is done playing\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/Regex_match.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class Regex_match extends JBECommand {\n\t// \"Regex.match(\\\"hello abcd hi abcccd how abccd are abd you? abccccccd ^_^\\\", \\\"ab[c]+d\\\")\")\"\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString s = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString regexp = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tboolean result = s.matches(regexp);\n\t\tSplPipeDecoder.writeResult(result);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/Regex_matchCount.java",
    "content": "package stanford.spl;\n\nimport java.util.regex.Matcher;\nimport java.util.regex.Pattern;\n\nimport acm.util.TokenScanner;\n\npublic class Regex_matchCount extends JBECommand {\n\t// \"Regex.matchCount(\\\"hello abcd hi abcccd how abccd are abd you? abccccccd ^_^\\\", \\\"ab[c]+d\\\")\")\"\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString s = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString regexp = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tPattern pattern = Pattern.compile(regexp);\n\t\tMatcher matcher = pattern.matcher(s);\n\t\tint count = 0;\n\t\twhile (matcher.find()) {\n\t\t\tcount++;\n\t\t}\n\n\t\tSplPipeDecoder.writeResult(count);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/Regex_matchCountWithLines.java",
    "content": "package stanford.spl;\n\nimport java.util.*;\nimport java.util.regex.*;\n\nimport acm.util.TokenScanner;\n\npublic class Regex_matchCountWithLines extends JBECommand {\n\tprivate static final boolean DEBUG = false;\n\t\n\tprivate Map<Integer, Integer> getLineNumberMap(String s) {\n\t\tMap<Integer, Integer> map = new HashMap<Integer, Integer>();\n\t\tint linenum = 1;\n\t\tfor (int i = 0, len = s.length(); i < len; i++) {\n\t\t\tchar ch = s.charAt(i);\n\t\t\tmap.put(i, linenum);\n\t\t\tif (ch == '\\n') {\n\t\t\t\tlinenum++;\n\t\t\t}\n\t\t}\n\t\treturn map;\n\t}\n\t\n\t// \"Regex.matchCountWithLines(\\\"hello abcd hi abcccd how abccd are abd you? abccccccd ^_^\\\", \\\"ab[c]+d\\\")\")\"\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\t// String s = nextString(paramTokenScanner);\n\t\tString s = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tif (DEBUG) System.err.println(\"s after pipeDecode: \\\"\" + s + \"\\\"\");\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString regexp = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tPattern pattern = Pattern.compile(regexp);\n\t\tMatcher matcher = pattern.matcher(s);\n\n\t\tMap<Integer, Integer> lineNumberMap = getLineNumberMap(s);\n\t\tif (DEBUG) System.err.println(\"line number map: \" + lineNumberMap);\n\t\tStringBuilder linesStr = new StringBuilder();\n\t\tint count = 0;\n\t\twhile (matcher.find()) {\n\t\t\tcount++;\n\t\t\tint startIndex = matcher.start();\n\t\t\tif (DEBUG) System.err.println(\"matcher start: \" + startIndex);\n\t\t\tif (lineNumberMap.containsKey(startIndex)) {\n\t\t\t\tint lineNum = lineNumberMap.get(startIndex);\n\t\t\t\tif (linesStr.length() > 0) {\n\t\t\t\t\tlinesStr.append(\",\");\n\t\t\t\t}\n\t\t\t\tlinesStr.append(lineNum);\n\t\t\t}\n\t\t}\n\n\t\tSplPipeDecoder.writeResult(count + \":\" + linesStr);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/Regex_replace.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class Regex_replace extends JBECommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString s = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString regexp = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString replacement = SplPipeDecoder.readAndDecode(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tString result = s.replaceAll(regexp, replacement);\n\t\tSplPipeDecoder.encodeAndWrite(result);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/SPLWindowSettings.java",
    "content": "/*\n * @version 2017/08/04\n * - changed unknown window title from \"???\" to \"unknown-window\" to avoid invalid filename issues\n */\n\npackage stanford.spl;\n\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.io.*;\nimport java.util.*;\n\npublic class SPLWindowSettings {\n\tpublic static final String SETTINGS_FILENAME = \"spl-window-settings.sav\";\n\tprivate static Properties props = new Properties();\n\t\n\tpublic static void saveWindowLocation(final Window window) {\n\t\twindow.addComponentListener(new SPLComponentAdapter());\n\t}\n\t\n\tpublic static void forgetWindowLocation(final Window window) {\n\t\tfor (ComponentListener listener : window.getComponentListeners()) {\n\t\t\tif (listener instanceof SPLComponentAdapter) {\n\t\t\t\twindow.removeComponentListener(listener);\n\t\t\t\tString title = getTitle(window);\n\t\t\t\tprops.remove(title + \"-x\");\n\t\t\t\tprops.remove(title + \"-y\");\n\t\t\t\tprops.remove(title + \"-w\");\n\t\t\t\tprops.remove(title + \"-h\");\n\t\t\t}\n\t\t}\n\t}\n\t\n\tpublic static void loadWindowLocation(Window window) {\n\t\tsynchronized (props) {\n\t\t\ttry {\n\t\t\t\t// String tempDir = System.getProperty(\"java.io.tmpdir\");\n\t\t\t\tString tempDir = System.getProperty(\"user.dir\");\n\t\t\t\tString settingsFile = tempDir + \"/\" + SETTINGS_FILENAME;\n\t\t\t\tInputStream input = new FileInputStream(settingsFile);\n\t\t\t\tprops.load(input);\n\t\t\t}\n\t\t\tcatch (IOException ioe) {\n\t\t\t\t// empty\n\t\t\t}\n\t\t\tcatch (Exception e) {\n\t\t\t\t// empty\n\t\t\t}\n\t\t}\n\t\tString title = getTitle(window); \n\t\tif (props.containsKey(title + \"-x\") && props.containsKey(title + \"-y\")) {\n\t\t\tint x = Integer.parseInt(props.getProperty(title + \"-x\"));\n\t\t\tint y = Integer.parseInt(props.getProperty(title + \"-y\"));\n\t\t\twindow.setLocation(x, y);\n\t\t}\n\t\tif (props.containsKey(title + \"-w\") && props.containsKey(title + \"-h\")) {\n\t\t\tint w = Integer.parseInt(props.getProperty(title + \"-w\"));\n\t\t\tint h = Integer.parseInt(props.getProperty(title + \"-h\"));\n\t\t\twindow.setSize(w, h);\n\t\t}\n\t}\n\t\n\tprivate static String getTitle(Window window) {\n\t\tif (window instanceof Frame) {\n\t\t\treturn ((Frame) window).getTitle();\n\t\t} else if (window instanceof Dialog) {\n\t\t\treturn ((Dialog) window).getTitle();\n\t\t} else {\n\t\t\treturn \"unknown-window\";\n\t\t}\n\t}\n\t\n\tprivate static class SPLComponentAdapter extends ComponentAdapter {\n\t\tpublic void componentMoved(ComponentEvent event) {\n\t\t\tComponent component = event.getComponent();\n\t\t\tif (!(component instanceof Frame)) return;\n\t\t\tFrame window = (Frame) component; \n\t\t\tint x = window.getX();\n\t\t\tint y = window.getY();\n\t\t\tint w = window.getWidth();\n\t\t\tint h = window.getHeight();\n\t\t\tsynchronized (props) {\n\t\t\t\tprops.setProperty(window.getTitle() + \"-x\", String.valueOf(x));\n\t\t\t\tprops.setProperty(window.getTitle() + \"-y\", String.valueOf(y));\n\t\t\t\tprops.setProperty(window.getTitle() + \"-w\", String.valueOf(w));\n\t\t\t\tprops.setProperty(window.getTitle() + \"-h\", String.valueOf(h));\n\t\t\t\ttry {\n\t\t\t\t\t// String tempDir = System.getProperty(\"java.io.tmpdir\");\n\t\t\t\t\tString tempDir = System.getProperty(\"user.dir\");\n\t\t\t\t\tString settingsFile = tempDir + \"/\" + SETTINGS_FILENAME;\n\t\t\t\t\tOutputStream out = new FileOutputStream(settingsFile);\n\t\t\t\t\tprops.store(out, \"Stanford C++ library window location settings\");\n\t\t\t\t\tout.close();\n\t\t\t\t}\n\t\t\t\tcatch (IOException ioe) {}\n\t\t\t\tcatch (Exception e) {}\n\t\t\t}\n\t\t}\n\t}\n}"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/SplPipeDecoder.java",
    "content": "/*\n * @version 2018/06/20\n * - added readEncodedMap\n * @version 2017/09/28\n * - fixed writeError to take Throwable and print correct text\n * @version 2015/10/08\n * - initial version\n */\n\npackage stanford.spl;\n\nimport java.io.UnsupportedEncodingException;\nimport java.net.URLDecoder;\nimport java.net.URLEncoder;\nimport java.util.*;\nimport acm.util.ErrorException;\nimport acm.util.TokenScanner;\n\npublic class SplPipeDecoder {\n\t// related: similar constant in C++ lib platform.cpp\n\tpublic static final int PIPE_MAX_COMMAND_LENGTH = 2048;\n\t\n\tpublic static String decode(String s) {\n\t\ttry {\n\t\t\ts = URLDecoder.decode(s, \"UTF-8\");\n\t\t} catch (UnsupportedEncodingException uee) {\n\t\t\tSystem.err.println(uee);\n\t\t}\n\t\treturn s;\n\t}\n\n\tpublic static String encode(String s) {\n\t\ttry {\n\t\t\ts = URLEncoder.encode(s, \"UTF-8\");\n\t\t} catch (UnsupportedEncodingException uee) {\n\t\t\tSystem.err.println(uee);\n\t\t}\n\t\treturn s;\n\t}\n\t\n\tpublic static void encodeAndWrite(String s) {\n\t\twriteResult(encode(s));\n\t}\n\n\tpublic static String readAndDecode(TokenScanner scanner) {\n\t\treturn decode(readEncodedString(scanner));\n\t}\n\t\n\tprivate static void eatSpaces(TokenScanner scanner) {\n\t\tint ch = scanner.getChar();\n\t\twhile (ch >= 0 && Character.isWhitespace(ch)) {\n\t\t\tch = scanner.getChar();\n\t\t}\n\t\tif (ch >= 0) {\n\t\t\tscanner.ungetChar(ch);\n\t\t}\n\t}\n\t\n\tpublic static synchronized void print(Object o) {\n\t\tprint(String.valueOf(o));\n\t}\n\t\n\tpublic static synchronized void print(String s) {\n\t\tSystem.out.print(s);\n\t\tSystem.out.flush();\n\t}\n\t\n\tpublic static synchronized void println(Object o) {\n\t\tprintln(String.valueOf(o));\n\t}\n\t\n\tpublic static synchronized void println(String s) {\n\t\tSystem.out.println(s);\n\t\tSystem.out.flush();\n\t}\n\t\n\t// TODO: readEncodedList\n\t\n\tpublic static Map<String, String> readEncodedMap(TokenScanner scanner) {\n\t\teatSpaces(scanner);\n\t\tint ch = scanner.getChar();\n\t\tif (ch != '{') {\n\t\t\tthrow new ErrorException(\"quoted map must start with { character, but saw '\" + (char)ch + \"' (\" + (int)ch + \")\");\n\t\t}\n\t\t\n\t\tMap<String, String> map = new LinkedHashMap<String, String>();\n\t\twhile (true) {\n\t\t\tString key = readAndDecode(scanner);\n\t\t\tif (\"}\".equals(key)) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\tString sep = scanner.nextToken();\n\t\t\tif (!\":\".equals(sep) && !\"=\".equals(sep)) {\n\t\t\t\tthrow new ErrorException(\"quoted map missing colon or equals sign between key/value pairs\");\n\t\t\t}\n\t\t\teatSpaces(scanner);\n\t\t\t\n\t\t\tString value = readAndDecode(scanner);\n\t\t\tmap.put(key, value);\n\t\t\t\n\t\t\t// check next token for comma vs }\n\t\t\tString next = scanner.nextToken();\n\t\t\tif (\",\".equals(next)) {\n\t\t\t\teatSpaces(scanner);\n\t\t\t} else if (\"}\".equals(next)) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn map;\n\t}\n\t\n\tpublic static String readEncodedString(TokenScanner scanner) {\n\t\tString s = \"\";\n\t\teatSpaces(scanner);\n\t\tint ch = scanner.getChar();\n\t\tif (ch != '\"') {\n\t\t\tthrow new ErrorException(\"quoted string must start with \\\" character, but saw '\" + (char)ch + \"' (\" + (int)ch + \")\");\n\t\t}\n\t\twhile (true) {\n\t\t\tch = scanner.getChar();\n\t\t\tif (ch == '\"' || ch < 0) {\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\ts += (char) ch;\n\t\t\t}\n\t\t}\n\t\tif (ch != '\"') {\n\t\t\tthrow new ErrorException(\"quoted string must end with \\\" character, but saw '\" + (char)ch + \"' (\" + (int)ch + \")\");\n\t\t}\n\t\treturn s;\n\t}\n\t\n\tpublic static synchronized void writeAck() {\n\t\twriteAck(\"\");\n\t}\n\t\n\tpublic static synchronized void writeAck(String s) {\n\t\twriteResult(\"___jbe___ack___ \" + s);\n\t}\n\t\n\tpublic static synchronized void writeError(String msg) {\n\t\twriteResult(\"error:\" + msg);\n\t}\n\t\n\tpublic static synchronized void writeError(Throwable t) {\n\t\tString text = \"\";\n\t\tif (t != null) {\n\t\t\ttext += t.getClass().getName();\n\t\t\tString msg = t.getMessage();\n\t\t\tif (msg != null) {\n\t\t\t\tmsg = msg.replaceAll(\"\\r?\\n\", \" \");\n\t\t\t\ttext += \":\" + msg.trim();\n\t\t\t}\n\t\t}\n\t\tprintln(\"error:\" + text);\n\t}\n\t\n\tpublic static synchronized void writeEvent(String s) {\n\t\tprintln(\"event:\" + s);\n\t}\n\t\n\tpublic static synchronized void writeOK() {\n\t\twriteResult(\"ok\");\n\t}\n\t\n\tpublic static synchronized void writeResult(Object o) {\n\t\twriteResult(String.valueOf(o));\n\t}\n\t\n\tpublic static synchronized void writeResult(String s) {\n\t\tif (s.length() > PIPE_MAX_COMMAND_LENGTH - 7) {\n\t\t\twriteLongResult(s);\n\t\t} else {\n\t\t\tprintln(\"result:\" + s);\n\t\t}\n\t}\n\t\n\tpublic static synchronized void writeLongResult(String s) {\n\t\tprintln(\"result_long:begin\");\n\t\tfor (int i = 0, len = s.length();\n\t\t\t\ti < len;\n\t\t\t\ti += PIPE_MAX_COMMAND_LENGTH) {\n\t\t\tString chunk = s.substring(i, Math.min(i + PIPE_MAX_COMMAND_LENGTH, len));\n\t\t\tprintln(chunk);\n\t\t}\n\t\tprintln(\"result_long:end\");\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/StanfordCppLib_getJbeVersion.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class StanfordCppLib_getJbeVersion extends JBECommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tSplPipeDecoder.writeResult(paramJavaBackEnd.getJbeVersion());\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/StanfordCppLib_setCppVersion.java",
    "content": "package stanford.spl;\n\nimport acm.util.TokenScanner;\n\npublic class StanfordCppLib_setCppVersion extends JBECommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString version = nextString(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\tparamJavaBackEnd.setCppVersion(version);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/TextFileDialog.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2014/11/04\n * \n * icons for buttons to match JOptionPane:\n * http://www.java2s.com/Tutorial/Java/0240__Swing/CustomizingaJOptionPaneLookandFeel.htm\n * http://docs.oracle.com/javase/7/docs/api/javax/swing/plaf/synth/doc-files/componentProperties.html\n */\n\npackage stanford.spl;\n\nimport java.awt.*;\nimport java.awt.event.*;\n\nimport javax.swing.*;\n\nimport stanford.cs106.gui.GuiUtils;\nimport stanford.cs106.gui.WindowCloseKeyListener;\nimport stanford.cs106.util.StringUtils;\n\npublic class TextFileDialog extends JDialog {\n\tpublic static final int DEFAULT_ROWS    = 20;\n\tpublic static final int DEFAULT_COLUMNS = 80;\n\t\n\tpublic static final int MIN_ROWS    = 5;\n\tpublic static final int MIN_COLUMNS = 40;\n\t\n\tpublic static final int MAX_ROWS    = 50;\n\tpublic static final int MAX_COLUMNS = 100;\n\t\n\tprivate JTextArea textarea;\n\tprivate JScrollPane scrollPane;\n\t\n\tpublic TextFileDialog(Window parent) {\n\t\tsuper(parent);\n\t}\n\t\n\tpublic void addText(String text) {\n\t\ttextarea.setText(textarea.getText() + text);\n\t\tJScrollBar vertical = scrollPane.getVerticalScrollBar();\n\t\tvertical.setValue(vertical.getMaximum());\n\t}\n\t\n\tpublic void clearText() {\n\t\ttextarea.setText(\"\");\n\t}\n\t\n\tpublic void print(String text) {\n\t\taddText(text);\n\t}\n\t\n\tpublic void println(String text) {\n\t\taddText(text + \"\\n\");\n\t}\n\t\n\tpublic void println(Object o) {\n\t\tprintln(String.valueOf(o));\n\t}\n\t\n\tpublic static TextFileDialog showDialog(Component parent, String title) {\n\t\treturn showDialog(parent, title, /* text */ \"\");\n\t}\n\t\n\tpublic static TextFileDialog showDialog(Component parent, String title, boolean modal) {\n\t\treturn showDialog(parent, title, /* text */ \"\", DEFAULT_ROWS, DEFAULT_COLUMNS, modal);\n\t}\n\t\n\tpublic static TextFileDialog showDialog(Component parent, String title, String text) {\n\t\treturn showDialog(parent, title, text, DEFAULT_ROWS, DEFAULT_COLUMNS, /* modal */ true);\n\t}\n\t\n\tpublic static TextFileDialog showDialog(Component parent, String title, String text, boolean modal) {\n\t\treturn showDialog(parent, title, text, DEFAULT_ROWS, DEFAULT_COLUMNS, modal);\n\t}\n\t\n\tpublic static TextFileDialog showDialog(Component parent, String title, String text, int rows, int cols) {\n\t\treturn showDialog(parent, title, text, rows, cols, /* modal */ true);\n\t}\n\t\n\tpublic static TextFileDialog showDialog(Component parent, String title, String text, int rows, int cols, boolean modal) {\n\t\tif (rows <= 0) {\n\t\t\trows = DEFAULT_ROWS;\n\t\t}\n\t\tif (cols <= 0) {\n\t\t\tcols = DEFAULT_COLUMNS;\n\t\t}\n\t\t\n\t\tint height = StringUtils.getHeight(text);\n\t\tint width = StringUtils.getWidth(text);\n\t\t\n\t\theight = Math.max(MIN_ROWS, Math.min(MAX_ROWS, height));\n\t\twidth  = Math.max(MIN_COLUMNS, Math.min(MAX_COLUMNS, width));\n\t\t\n\t\tfinal TextFileDialog dialog = new TextFileDialog((parent instanceof Window) ? (Window) parent : null);\n\t\tdialog.setTitle(title);\n\t\tdialog.setModal(modal);\n\t\tdialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);\n\t\t\n\t\tdialog.textarea = new JTextArea(text, height, width);\n\t\tdialog.textarea.setEditable(false);\n\t\tFont oldFont = dialog.textarea.getFont();\n\t\tdialog.textarea.setFont(new Font(\"Monospaced\", Font.PLAIN, oldFont.getSize()));\n\t\t\n\t\tdialog.scrollPane = new JScrollPane(dialog.textarea);\n\t\tdialog.add(dialog.scrollPane, BorderLayout.CENTER);\n\t\t\n\t\tJPanel south = new JPanel();\n\t\tJButton ok = new JButton(\"OK\");\n\t\tok.setIcon(GuiUtils.extractOptionPaneIcon(\"OK\"));\n\t\tok.setMnemonic('O');\n\t\t// GuiUtils.growFont(ok, 2);\n\t\t// GuiUtils.widen(ok, 50);\n\t\t\n\t\tok.addActionListener(new ActionListener() {\n\t\t\tpublic void actionPerformed(ActionEvent event) {\n\t\t\t\tdialog.setVisible(false);\n\t\t\t\tdialog.dispose();\n\t\t\t}\n\t\t});\n\t\t\n\t\tsouth.add(ok);\n\t\tdialog.add(south, BorderLayout.SOUTH);\n\t\t\n\t\tnew WindowCloseKeyListener(dialog);\n\t\tdialog.pack();\n\t\t\n\t\tSPLWindowSettings.loadWindowLocation(dialog);\n\t\tSPLWindowSettings.saveWindowLocation(dialog);\n\t\t\n\t\tok.requestFocus();\n\t\tdialog.setVisible(true);\n\t\t\n\t\treturn dialog;\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/URL_download.java",
    "content": "package stanford.spl;\n\nimport java.io.*;\nimport java.net.*;\n\nimport acm.util.*;\n\npublic class URL_download extends JBECommand {\n\t// URL.download(\"http%3A%2F%2Fmartystepp.com%2F\", \"temp.foo\")\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString urlString = SplPipeDecoder.readEncodedString(paramTokenScanner);\n\t\turlString = SplPipeDecoder.decode(urlString);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString tempfilename = SplPipeDecoder.readEncodedString(paramTokenScanner);\n\t\ttempfilename = SplPipeDecoder.decode(tempfilename);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\t// download from the given URL to a temp file\n\t\tFile tmpDir = new File(System.getProperty(\"java.io.tmpdir\"));\n\t\tFile tmpFile = new File(tmpDir, tempfilename);\n\t\t\n\t\tint result = 0;\n\t\ttry {\n\t\t\tresult = UrlDownloader.getInstance().download(urlString, tmpFile);\n\t\t} catch (MalformedURLException mfurle) {\n\t\t\tresult = UrlDownloader.ERR_MALFORMED_URL;\n\t\t} catch (IOException ioe) {\n\t\t\tresult = UrlDownloader.ERR_IO_EXCEPTION;\n\t\t}\n\t\t\n\t\tSplPipeDecoder.writeResult(result);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/URL_downloadWithHeaders.java",
    "content": "/*\n * @version 2018/06/20\n * - initial version\n */\n\npackage stanford.spl;\n\nimport java.io.*;\nimport java.net.*;\nimport java.util.*;\n\nimport acm.util.*;\n\npublic class URL_downloadWithHeaders extends JBECommand {\n\tpublic void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd) {\n\t\tparamTokenScanner.verifyToken(\"(\");\n\t\tString urlString = SplPipeDecoder.readEncodedString(paramTokenScanner);\n\t\turlString = SplPipeDecoder.decode(urlString);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tString tempfilename = SplPipeDecoder.readEncodedString(paramTokenScanner);\n\t\ttempfilename = SplPipeDecoder.decode(tempfilename);\n\t\tparamTokenScanner.verifyToken(\",\");\n\t\tMap<String, String> headers = SplPipeDecoder.readEncodedMap(paramTokenScanner);\n\t\tparamTokenScanner.verifyToken(\")\");\n\t\t\n\t\t// download from the given URL to a temp file\n\t\tFile tmpDir = new File(System.getProperty(\"java.io.tmpdir\"));\n\t\tFile tmpFile = new File(tmpDir, tempfilename);\n\t\t\n\t\tint result = 0;\n\t\ttry {\n\t\t\tresult = UrlDownloader.getInstance().downloadWithHeaders(urlString, tmpFile, headers);\n\t\t} catch (MalformedURLException mfurle) {\n\t\t\tresult = UrlDownloader.ERR_MALFORMED_URL;\n\t\t} catch (IOException ioe) {\n\t\t\tresult = UrlDownloader.ERR_IO_EXCEPTION;\n\t\t}\n\t\t\n\t\tSplPipeDecoder.writeResult(result);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/UrlDownloader.java",
    "content": "/*\n * A new utility class to make it easy to download the entire contents\n * of some web URL into either a string or an output file.\n * \n * \n * @version 2018/06/20\n * - added downloadWithHeaders\n * - added public constants for error codes\n * @version 2015/10/13\n * - initial version\n */\n\npackage stanford.spl;\n\nimport java.io.*;\nimport java.net.*;\nimport java.nio.channels.*;\nimport java.util.*;\n\npublic class UrlDownloader {\n\t/**\n\t * constants to represent URL errors;\n\t * these should match constants declared in C++ lib's urlstream.h\n\t */\n\tpublic static final int ERR_MALFORMED_URL = -42;\n\tpublic static final int ERR_IO_EXCEPTION = -43;\n\t\n\t// singleton\n\tprivate static final UrlDownloader instance = new UrlDownloader();\n\t\n\tprivate UrlDownloader() {\n\t\t// empty\n\t}\n\t\n\tpublic static UrlDownloader getInstance() {\n\t\treturn instance;\n\t}\n\t\n\tpublic String download(String urlString) throws IOException, HTTPDownloadException {\n\t\tURL url = new URL(urlString);\n\t\tHttpURLConnection connection = (HttpURLConnection) url.openConnection();\n\t\tint result = connection.getResponseCode();\n\t\tif (result == 200) {\n\t\t\tInputStream stream = url.openStream();\n\t\t\tBufferedReader reader = new BufferedReader(new InputStreamReader(stream));\n\t\t\tStringBuilder sb = new StringBuilder(65536);\n\t\t\twhile (reader.ready()) {\n\t\t\t\tsb.append((char) reader.read());\n\t\t\t}\n\t\t\treader.close();\n\t\t\treturn sb.toString();\n\t\t} else {\n\t\t\tthrow new HTTPDownloadException(result);\n\t\t}\n\t}\n\t\n\tpublic int download(String urlString, File file) throws IOException {\n\t\tMap<String, String> headers = Collections.emptyMap();\n\t\treturn downloadWithHeaders(urlString, file, /* headers */ headers);\n\t}\n\t\n\tpublic int downloadWithHeaders(String urlString, File file, Map<String, String> headers) throws IOException {\n\t\tURL url = new URL(urlString);\n\t\tHttpURLConnection connection = (HttpURLConnection) url.openConnection();\n\t\t\n\t\t// set HTTP headers\n\t\tif (headers != null) {\n\t\t\tfor (String name : headers.keySet()) {\n\t\t\t\tString value = headers.get(name);\n\t\t\t\tconnection.setRequestProperty(name, value);\n\t\t\t}\n\t\t}\n\t\t\n\t\t// any 2xx result code indicates success\n\t\tint result = connection.getResponseCode();\n\t\tif (result >= 200 && result < 300) {\n\t\t\tInputStream stream = url.openStream();\n\t\t\t\n\t\t\t// http://stackoverflow.com/questions/921262/how-to-download-and-save-a-file-from-internet-using-java\n\t\t\tReadableByteChannel rbc = Channels.newChannel(stream);\n\t\t\tFileOutputStream fos = new FileOutputStream(file);\n\t\t\tfos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);\n\t\t\tfos.close();\n\t\t}\n\t\t\n\t\treturn result;\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/eclipseproject/src/stanford/spl/Version.java",
    "content": "/*\n * @author Marty Stepp\n * @version 2018/11/12\n * - If you update this file, make sure to update the @version tag above\n *   AND the String constant below! Both are needed and must be in sync. \n * - see also: stanford/spl/LibraryUpdater.java \n */\n\npackage stanford.spl;\n\npublic class Version {\n\tprivate static final String LIBRARY_DOCS_URL = \"http://stanford.edu/~stepp/cppdoc/\";\n\tprivate static final String JAVA_BACK_END_FILENAME = \"spl.jar\";\n\tprivate static final String JAVA_BACK_END_VERSION = \"2018/11/12\";\n\tprivate static final String CPP_LIB_VERSION_UNKNOWN = \"(unknown)\";\n\tprivate static String CPP_LIB_VERSION = CPP_LIB_VERSION_UNKNOWN;\n\tpublic static final String ABOUT_MESSAGE = \"\";\n\n\t/**\n\t * Returns an about message describing the library and its version.\n\t */\n\tpublic static String getAboutMessage() {\n\t\tString about = \"Stanford Java Library (\" + JAVA_BACK_END_FILENAME + \") version: \" + getLibraryVersion() + \"\\n\"\n\t\t\t\t+ (CPP_LIB_VERSION == CPP_LIB_VERSION_UNKNOWN ? \"\" : (\"Stanford C++ Library version: \" + getCppLibraryVersion() + \"\\n\"))\n\t\t\t\t+ \"\\n\"\n\t\t\t\t+ \"Java JDK/JRE version: \" + getJdkVersion() + \"\\n\\n\"\n\t\t\t\t+ \"Libraries originally written by Eric Roberts,\\n\"\n\t\t\t\t+ \"with assistance from Julie Zelenski, Keith Schwarz, et al.\\n\"\n\t\t\t\t+ \"This version of the library is unofficially maintained by Marty Stepp.\\n\"\n\t\t\t\t+ \"\\n\"\n\t\t\t\t+ \"See \" + LIBRARY_DOCS_URL + \" for more information.\";\n\t\treturn about;\n\t}\n\t\n\t/**\n\t * The full file path to spl.jar, or \"\" if unable to determine the path.\n\t * Might be not found if the lib has been unpacked and repackaged such as is done\n\t * with assignment solution demo JARs.\n\t */\n\tpublic static final String getLibraryJarPath() {\n\t\tString sep = System.getProperty(\"path.separator\");   // \":\" or \";\"\n\t\tString classpath = System.getProperty(\"java.class.path\");\n\t\tfor (String entry : classpath.split(sep)) {\n\t\t\tif (entry.endsWith(JAVA_BACK_END_FILENAME)) {\n\t\t\t\treturn entry;\n\t\t\t}\n\t\t}\n\t\treturn \"\";\n\t}\n\t\n\t/**\n\t * Returns the current version of the JDK as a string such as \"1.8.0_74\".\n\t */\n\tpublic static final String getJdkVersion() {\n\t\tString[] propNames = {\"java.version\", \"java.runtime.version\"};\n\t\tfor (String propName : propNames) {\n\t\t\tString propValue = System.getProperty(propName);\n\t\t\tif (propValue != null && !propValue.isEmpty()) {\n\t\t\t\treturn propValue;\n\t\t\t}\n\t\t}\n\t\treturn \"unknown\";\n\t}\n\t\n\t/**\n\t * Returns the current version of the Java library as a string such as \"2017/04/26\".\n\t */\n\tpublic static final String getLibraryVersion() {\n\t\treturn JAVA_BACK_END_VERSION;\n\t}\n\t\n\t/**\n\t * Returns the current version of the C++ library as a string such as \"2017/04/26\".\n\t */\n\tpublic static final String getCppLibraryVersion() {\n\t\treturn CPP_LIB_VERSION;\n\t}\n\t\n\t/**\n\t * Returns true if the current app is running as a C++ project using the Java lib\n\t * as its back-end.\n\t */\n\tpublic static final boolean isCppProject() {\n\t\treturn !isJavaProject();\n\t}\n\t\n\t/**\n\t * Returns true if the current app is running as a Java project using the SPL lib.\n\t */\n\tpublic static final boolean isJavaProject() {\n\t\treturn CPP_LIB_VERSION_UNKNOWN == CPP_LIB_VERSION;\n\t}\n\t\n\t/**\n\t * Throws an ErrorException if the library version is not at least as new as the given version.\n\t */\n\tpublic static void requireVersion(String minimumVersion) {\n\t\tString version = getLibraryVersion();\n\t\tif (version.compareTo(minimumVersion) < 0) {\n\t\t\tthrow new acm.util.ErrorException(\"Stanford Java Library version \" + minimumVersion\n\t\t\t\t\t+ \" required, but found version \" + version);\n\t\t}\n\t}\n\t\n\t/**\n\t * Sets the version of the C++ libraries.\n\t * Called from the back-end when C++ project loads up.\n\t */\n\tpublic static final void setCppLibraryVersion(String version) {\n\t\tCPP_LIB_VERSION = version;\n\t}\n\t\n\t/**\n\t * Prints the current library version to the console.\n\t */\n\tpublic static void main(String[] args) {\n\t\tSystem.out.println(getLibraryVersion());\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/META-INF/MANIFEST.MF",
    "content": "Manifest-Version: 1.0\r\nCreated-By: 1.6.0_51 (Apple Inc.)\r\nMain-Class: stanford.spl.JavaBackEnd\r\n\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/graphics/DrawLineElement.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   GPen.java\r\n\r\npackage acm.graphics;\r\n\r\nimport java.awt.Graphics2D;\r\nimport java.awt.Polygon;\r\n\r\n// Referenced classes of package acm.graphics:\r\n//            PathElement, PathState, GMath, GRectangle\r\n\r\nclass DrawLineElement extends PathElement\r\n{\r\n\r\n    public DrawLineElement(double d, double d1)\r\n    {\r\n        deltaX = d;\r\n        deltaY = d1;\r\n    }\r\n\r\n    public void paint(Graphics2D graphics2d, PathState pathstate)\r\n    {\r\n        int i = GMath.round(pathstate.sx * pathstate.cx);\r\n        int j = GMath.round(pathstate.sy * pathstate.cy);\r\n        pathstate.cx += deltaX;\r\n        pathstate.cy += deltaY;\r\n        int k = GMath.round(pathstate.sx * pathstate.cx);\r\n        int l = GMath.round(pathstate.sy * pathstate.cy);\r\n        if(pathstate.region == null)\r\n            graphics2d.drawLine(i, j, k, l);\r\n        else\r\n            pathstate.region.addPoint(k, l);\r\n    }\r\n\r\n    public void updateBounds(GRectangle grectangle, PathState pathstate)\r\n    {\r\n        if(grectangle.getWidth() < 0.0D)\r\n            grectangle.setBounds(pathstate.sx * pathstate.cx, pathstate.sy * pathstate.cy, 0.0D, 0.0D);\r\n        else\r\n            grectangle.add(pathstate.sx * pathstate.cx, pathstate.sy * pathstate.cy);\r\n        pathstate.cx += deltaX;\r\n        pathstate.cy += deltaY;\r\n        grectangle.add(pathstate.sx * pathstate.cx, pathstate.sy * pathstate.cy);\r\n    }\r\n\r\n    private double deltaX;\r\n    private double deltaY;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/graphics/EndRegionElement.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   GPen.java\r\n\r\npackage acm.graphics;\r\n\r\nimport java.awt.Graphics2D;\r\nimport java.awt.Polygon;\r\n\r\n// Referenced classes of package acm.graphics:\r\n//            PathElement, PathState\r\n\r\nclass EndRegionElement extends PathElement\r\n{\r\n\r\n    public EndRegionElement()\r\n    {\r\n    }\r\n\r\n    public void paint(Graphics2D graphics2d, PathState pathstate)\r\n    {\r\n        java.awt.Color color = graphics2d.getColor();\r\n        graphics2d.setColor(pathstate.fillColor);\r\n        graphics2d.fillPolygon(pathstate.region.xpoints, pathstate.region.ypoints, pathstate.region.npoints);\r\n        graphics2d.setColor(color);\r\n        graphics2d.drawPolygon(pathstate.region.xpoints, pathstate.region.ypoints, pathstate.region.npoints);\r\n        pathstate.region = null;\r\n    }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/graphics/FinalPathElement.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   GPen.java\r\n\r\npackage acm.graphics;\r\n\r\nimport java.awt.Graphics2D;\r\nimport java.awt.Polygon;\r\n\r\n// Referenced classes of package acm.graphics:\r\n//            PathElement, PathState\r\n\r\nclass FinalPathElement extends PathElement\r\n{\r\n\r\n    public FinalPathElement()\r\n    {\r\n    }\r\n\r\n    public void paint(Graphics2D graphics2d, PathState pathstate)\r\n    {\r\n        if(pathstate.region != null)\r\n            graphics2d.drawPolyline(pathstate.region.xpoints, pathstate.region.ypoints, pathstate.region.npoints);\r\n    }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/graphics/G3DRect.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   G3DRect.java\r\n\r\npackage acm.graphics;\r\n\r\nimport java.awt.Graphics;\r\nimport java.awt.Graphics2D;\r\n\r\n// Referenced classes of package acm.graphics:\r\n//            GRect, GMath\r\n\r\npublic class G3DRect extends GRect\r\n{\r\n\r\n    public G3DRect(double d, double d1)\r\n    {\r\n        this(0.0D, 0.0D, d, d1, false);\r\n    }\r\n\r\n    public G3DRect(double d, double d1, double d2, double d3)\r\n    {\r\n        this(d, d1, d2, d3, false);\r\n    }\r\n\r\n    public G3DRect(double d, double d1, double d2, double d3, boolean flag)\r\n    {\r\n        super(d, d1, d2, d3);\r\n        isRaised = flag;\r\n    }\r\n\r\n    public void paint(Graphics g)\r\n    {\r\n        if(!isVisible())\r\n            return;\r\n        Graphics2D graphics2d = createTransformedGraphics(g);\r\n        if(isFilled())\r\n        {\r\n            graphics2d.setColor(getFillColor());\r\n            graphics2d.fill3DRect(0, 0, GMath.round(getFrameWidth()), GMath.round(getFrameHeight()), isRaised);\r\n            graphics2d.setColor(getColor());\r\n        }\r\n        graphics2d.draw3DRect(0, 0, GMath.round(getFrameWidth()), GMath.round(getFrameHeight()), isRaised);\r\n        graphics2d.dispose();\r\n    }\r\n\r\n    public void setRaised(boolean flag)\r\n    {\r\n        isRaised = flag;\r\n    }\r\n\r\n    public boolean isRaised()\r\n    {\r\n        return isRaised;\r\n    }\r\n\r\n    private boolean isRaised;\r\n    static final long serialVersionUID = 21L;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/graphics/GArc.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   GArc.java\r\n\r\npackage acm.graphics;\r\n\r\nimport java.awt.Color;\r\nimport java.awt.Graphics2D;\r\nimport java.awt.geom.Arc2D;\r\n\r\n// Referenced classes of package acm.graphics:\r\n//            GObject, GRectangle, GPoint, GFillable, \r\n//            GMath\r\n\r\npublic class GArc extends GObject\r\n    implements GFillable\r\n{\r\n\r\n    public GArc(double d, double d1, double d2, double d3)\r\n    {\r\n        this(0.0D, 0.0D, d, d1, d2, d3);\r\n    }\r\n\r\n    public GArc(double d, double d1, double d2, double d3, double d4, double d5)\r\n    {\r\n        frameWidth = d2;\r\n        frameHeight = d3;\r\n        arcStart = d4;\r\n        arcSweep = d5;\r\n        setLocation(d, d1);\r\n    }\r\n\r\n    public void setStartAngle(double d)\r\n    {\r\n        arcStart = d;\r\n        repaint();\r\n    }\r\n\r\n    public double getStartAngle()\r\n    {\r\n        return arcStart;\r\n    }\r\n\r\n    public void setSweepAngle(double d)\r\n    {\r\n        arcSweep = d;\r\n        repaint();\r\n    }\r\n\r\n    public double getSweepAngle()\r\n    {\r\n        return arcSweep;\r\n    }\r\n\r\n    public GPoint getStartPoint()\r\n    {\r\n        return getArcPoint(arcStart);\r\n    }\r\n\r\n    public GPoint getEndPoint()\r\n    {\r\n        return getArcPoint(arcStart + arcSweep);\r\n    }\r\n\r\n    protected void paint2d(Graphics2D graphics2d)\r\n    {\r\n        java.awt.geom.Arc2D.Double double1 = new java.awt.geom.Arc2D.Double(0.0D, 0.0D, frameWidth, frameHeight, arcStart, arcSweep, isFilled() ? 2 : 0);\r\n        if(isFilled())\r\n        {\r\n            graphics2d.setColor(getFillColor());\r\n            graphics2d.fill(double1);\r\n            graphics2d.setColor(getColor());\r\n        }\r\n        graphics2d.draw(double1);\r\n    }\r\n\r\n    public GRectangle getBounds()\r\n    {\r\n        double d = frameWidth / 2D;\r\n        double d1 = frameHeight / 2D;\r\n        double d2 = getX() + d;\r\n        double d3 = getY() + d1;\r\n        double d4 = d2 + GMath.cosDegrees(arcStart) * d;\r\n        double d5 = d3 - GMath.sinDegrees(arcStart) * d1;\r\n        double d6 = d2 + GMath.cosDegrees(arcStart + arcSweep) * d;\r\n        double d7 = d3 - GMath.sinDegrees(arcStart + arcSweep) * d1;\r\n        double d8 = Math.min(d4, d6);\r\n        double d9 = Math.max(d4, d6);\r\n        double d10 = Math.min(d5, d7);\r\n        double d11 = Math.max(d5, d7);\r\n        if(containsAngle(0.0D))\r\n            d9 = d2 + d;\r\n        if(containsAngle(90D))\r\n            d10 = d3 - d1;\r\n        if(containsAngle(180D))\r\n            d8 = d2 - d;\r\n        if(containsAngle(270D))\r\n            d11 = d3 + d1;\r\n        if(isFilled())\r\n        {\r\n            d8 = Math.min(d8, d2);\r\n            d10 = Math.min(d10, d3);\r\n            d9 = Math.max(d9, d2);\r\n            d11 = Math.max(d11, d3);\r\n        }\r\n        return new GRectangle(d8, d10, d9 - d8, d11 - d10);\r\n    }\r\n\r\n    public boolean contains(double d, double d1)\r\n    {\r\n        double d2 = frameWidth / 2D;\r\n        double d3 = frameHeight / 2D;\r\n        if(d2 == 0.0D || d3 == 0.0D)\r\n            return false;\r\n        double d4 = d - (getX() + d2);\r\n        double d5 = d1 - (getY() + d3);\r\n        double d6 = (d4 * d4) / (d2 * d2) + (d5 * d5) / (d3 * d3);\r\n        if(isFilled())\r\n        {\r\n            if(d6 > 1.0D)\r\n                return false;\r\n        } else\r\n        {\r\n            double d7 = 2.5D / ((d2 + d3) / 2D);\r\n            if(Math.abs(1.0D - d6) > d7)\r\n                return false;\r\n        }\r\n        return containsAngle(GMath.toDegrees(Math.atan2(-d5, d4)));\r\n    }\r\n\r\n    public void setFrameRectangle(double d, double d1, double d2, double d3)\r\n    {\r\n        frameWidth = d2;\r\n        frameHeight = d3;\r\n        setLocation(d, d1);\r\n    }\r\n\r\n    public final void setFrameRectangle(GRectangle grectangle)\r\n    {\r\n        setFrameRectangle(grectangle.getX(), grectangle.getY(), grectangle.getWidth(), grectangle.getHeight());\r\n    }\r\n\r\n    public GRectangle getFrameRectangle()\r\n    {\r\n        return new GRectangle(getX(), getY(), frameWidth, frameHeight);\r\n    }\r\n\r\n    public void setFilled(boolean flag)\r\n    {\r\n        isFilled = flag;\r\n        repaint();\r\n    }\r\n\r\n    public boolean isFilled()\r\n    {\r\n        return isFilled;\r\n    }\r\n\r\n    public void setFillColor(Color color)\r\n    {\r\n        fillColor = color;\r\n        repaint();\r\n    }\r\n\r\n    public Color getFillColor()\r\n    {\r\n        return fillColor != null ? fillColor : getColor();\r\n    }\r\n\r\n    public String paramString()\r\n    {\r\n        String s = super.paramString();\r\n        s = s.substring(s.indexOf(')') + 1);\r\n        GRectangle grectangle = getFrameRectangle();\r\n        String s1 = (new StringBuilder()).append(\"frame=(\").append(grectangle.getX()).append(\", \").append(grectangle.getY()).append(\", \").append(grectangle.getWidth()).append(\", \").append(grectangle.getHeight()).append(\")\").toString();\r\n        s1 = (new StringBuilder()).append(s1).append(\", start=\").append(arcStart).append(\", sweep=\").append(arcSweep).toString();\r\n        return (new StringBuilder()).append(s1).append(s).toString();\r\n    }\r\n\r\n    private GPoint getArcPoint(double d)\r\n    {\r\n        double d1 = frameWidth / 2D;\r\n        double d2 = frameHeight / 2D;\r\n        double d3 = getX() + d1;\r\n        double d4 = getY() + d2;\r\n        return new GPoint(d3 + d1 * GMath.cosDegrees(d), d4 - d2 * GMath.sinDegrees(d));\r\n    }\r\n\r\n    private boolean containsAngle(double d)\r\n    {\r\n        double d1 = Math.min(getStartAngle(), getStartAngle() + getSweepAngle());\r\n        double d2 = Math.abs(getSweepAngle());\r\n        if(d2 >= 360D)\r\n            return true;\r\n        d = d >= 0.0D ? d % 360D : 360D - -d % 360D;\r\n        d1 = d1 >= 0.0D ? d1 % 360D : 360D - -d1 % 360D;\r\n        if(d1 + d2 > 360D)\r\n            return d >= d1 || d <= (d1 + d2) - 360D;\r\n        else\r\n            return d >= d1 && d <= d1 + d2;\r\n    }\r\n\r\n    public static final double ARC_TOLERANCE = 2.5D;\r\n    private double frameWidth;\r\n    private double frameHeight;\r\n    private double arcStart;\r\n    private double arcSweep;\r\n    private Color fillColor;\r\n    private boolean isFilled;\r\n    static final long serialVersionUID = 21L;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/graphics/GCanvas.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   GCanvas.java\r\n\r\npackage acm.graphics;\r\n\r\nimport java.awt.*;\r\nimport java.awt.event.MouseEvent;\r\nimport java.util.Iterator;\r\nimport javax.swing.JComponent;\r\n\r\n// Referenced classes of package acm.graphics:\r\n//            GObjectList, GCanvasListener, GIterator, GMouseEvent, \r\n//            GContainer, GObject, GPoint, GMath\r\n\r\npublic class GCanvas extends JComponent\r\n    implements GContainer\r\n{\r\n\r\n    public GCanvas()\r\n    {\r\n        contents = new GObjectList(this);\r\n        setBackground(Color.WHITE);\r\n        setForeground(Color.BLACK);\r\n        setOpaque(true);\r\n        setAutoRepaintFlag(true);\r\n        setNativeArcFlag(false);\r\n        setLayout(null);\r\n        gCanvasListener = new GCanvasListener(this);\r\n        addMouseListener(gCanvasListener);\r\n        addMouseMotionListener(gCanvasListener);\r\n    }\r\n\r\n    public void add(GObject gobject)\r\n    {\r\n        contents.add(gobject);\r\n        conditionalRepaint();\r\n    }\r\n\r\n    public final void add(GObject gobject, double d, double d1)\r\n    {\r\n        gobject.setLocation(d, d1);\r\n        add(gobject);\r\n    }\r\n\r\n    public final void add(GObject gobject, GPoint gpoint)\r\n    {\r\n        add(gobject, gpoint.getX(), gpoint.getY());\r\n    }\r\n\r\n    public void remove(GObject gobject)\r\n    {\r\n        contents.remove(gobject);\r\n        conditionalRepaint();\r\n    }\r\n\r\n    public void removeAll()\r\n    {\r\n        contents.removeAll();\r\n        super.removeAll();\r\n        repaint();\r\n    }\r\n\r\n    public Component add(Component component)\r\n    {\r\n        super.add(component);\r\n        Dimension dimension = component.getSize();\r\n        if(dimension.width == 0 || dimension.height == 0)\r\n        {\r\n            Dimension dimension1 = component.getPreferredSize();\r\n            if(dimension.width == 0)\r\n                dimension.width = dimension1.width;\r\n            if(dimension.height == 0)\r\n                dimension.height = dimension1.height;\r\n            component.setSize(dimension);\r\n        }\r\n        return component;\r\n    }\r\n\r\n    public final void add(Component component, double d, double d1)\r\n    {\r\n        component.setLocation(GMath.round(d), GMath.round(d1));\r\n        add(component);\r\n    }\r\n\r\n    public final void add(Component component, GPoint gpoint)\r\n    {\r\n        add(component, gpoint.getX(), gpoint.getY());\r\n    }\r\n\r\n    public void remove(Component component)\r\n    {\r\n        super.remove(component);\r\n        conditionalRepaint();\r\n    }\r\n\r\n    public int getElementCount()\r\n    {\r\n        return contents.getElementCount();\r\n    }\r\n\r\n    public GObject getElement(int i)\r\n    {\r\n        return contents.getElement(i);\r\n    }\r\n\r\n    public GObject getElementAt(double d, double d1)\r\n    {\r\n        return contents.getElementAt(d, d1, false);\r\n    }\r\n\r\n    public final GObject getElementAt(GPoint gpoint)\r\n    {\r\n        return getElementAt(gpoint.getX(), gpoint.getY());\r\n    }\r\n\r\n    public Iterator iterator()\r\n    {\r\n        return new GIterator(this, 0);\r\n    }\r\n\r\n    public Iterator iterator(int i)\r\n    {\r\n        return new GIterator(this, i);\r\n    }\r\n\r\n    public void paint(Graphics g)\r\n    {\r\n        if(isOpaque())\r\n        {\r\n            g.setColor(getBackground());\r\n            g.fillRect(0, 0, getWidth(), getHeight());\r\n            g.setColor(getForeground());\r\n        }\r\n        super.paint(g);\r\n    }\r\n\r\n    public void paintComponent(Graphics g)\r\n    {\r\n        contents.mapPaint(g);\r\n        super.paintComponent(g);\r\n    }\r\n\r\n    public void setAutoRepaintFlag(boolean flag)\r\n    {\r\n        autoRepaint = flag;\r\n    }\r\n\r\n    public boolean getAutoRepaintFlag()\r\n    {\r\n        return autoRepaint;\r\n    }\r\n\r\n    public void setNativeArcFlag(boolean flag)\r\n    {\r\n        nativeArcFlag = flag;\r\n    }\r\n\r\n    public boolean getNativeArcFlag()\r\n    {\r\n        return nativeArcFlag;\r\n    }\r\n\r\n    protected void sendToFront(GObject gobject)\r\n    {\r\n        contents.sendToFront(gobject);\r\n        conditionalRepaint();\r\n    }\r\n\r\n    protected void sendToBack(GObject gobject)\r\n    {\r\n        contents.sendToBack(gobject);\r\n        conditionalRepaint();\r\n    }\r\n\r\n    protected void sendForward(GObject gobject)\r\n    {\r\n        contents.sendForward(gobject);\r\n        conditionalRepaint();\r\n    }\r\n\r\n    protected void sendBackward(GObject gobject)\r\n    {\r\n        contents.sendBackward(gobject);\r\n        conditionalRepaint();\r\n    }\r\n\r\n    protected void dispatchMouseEvent(MouseEvent mouseevent)\r\n    {\r\n        GObject gobject = contents.getElementAt(mouseevent.getX(), mouseevent.getY(), true);\r\n        GMouseEvent gmouseevent = null;\r\n        if(gobject != lastObject)\r\n        {\r\n            if(lastObject != null)\r\n            {\r\n                gmouseevent = new GMouseEvent(lastObject, 505, mouseevent);\r\n                lastObject.fireMouseListeners(gmouseevent);\r\n            }\r\n            if(gobject != null)\r\n            {\r\n                gmouseevent = new GMouseEvent(gobject, 504, mouseevent);\r\n                gobject.fireMouseListeners(gmouseevent);\r\n            }\r\n        }\r\n        lastObject = gobject;\r\n        if(dragObject != null)\r\n            gobject = dragObject;\r\n        if(gobject != null)\r\n        {\r\n            int i = mouseevent.getID();\r\n            if(i != 505 && i != 504 && (i != 506 || dragObject != null))\r\n            {\r\n                if(i == 501)\r\n                    dragObject = gobject;\r\n                else\r\n                if(i == 502)\r\n                    dragObject = null;\r\n                gmouseevent = new GMouseEvent(gobject, i, mouseevent);\r\n                gobject.fireMouseListeners(gmouseevent);\r\n            }\r\n        }\r\n        if(gmouseevent != null && gmouseevent.isConsumed())\r\n            mouseevent.consume();\r\n    }\r\n\r\n    protected void conditionalRepaint()\r\n    {\r\n        if(autoRepaint)\r\n            repaint();\r\n    }\r\n\r\n    protected void updateEnabledList()\r\n    {\r\n        contents.updateEnabledList();\r\n    }\r\n\r\n    static MouseEvent createMouseEvent(Object obj, int i, MouseEvent mouseevent)\r\n    {\r\n        return new GMouseEvent(obj, i, mouseevent);\r\n    }\r\n\r\n    private GCanvasListener gCanvasListener;\r\n    private GObject lastObject;\r\n    private GObject dragObject;\r\n    private GObjectList contents;\r\n    private boolean autoRepaint;\r\n    private boolean nativeArcFlag;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/graphics/GCanvasListener.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   GCanvas.java\r\n\r\npackage acm.graphics;\r\n\r\nimport java.awt.event.*;\r\n\r\n// Referenced classes of package acm.graphics:\r\n//            GCanvas\r\n\r\nclass GCanvasListener\r\n    implements MouseListener, MouseMotionListener\r\n{\r\n\r\n    public GCanvasListener(GCanvas gcanvas)\r\n    {\r\n        gCanvas = gcanvas;\r\n    }\r\n\r\n    public void mouseClicked(MouseEvent mouseevent)\r\n    {\r\n        gCanvas.dispatchMouseEvent(mouseevent);\r\n    }\r\n\r\n    public void mousePressed(MouseEvent mouseevent)\r\n    {\r\n        gCanvas.requestFocus();\r\n        gCanvas.dispatchMouseEvent(mouseevent);\r\n    }\r\n\r\n    public void mouseReleased(MouseEvent mouseevent)\r\n    {\r\n        gCanvas.dispatchMouseEvent(mouseevent);\r\n    }\r\n\r\n    public void mouseEntered(MouseEvent mouseevent)\r\n    {\r\n        gCanvas.dispatchMouseEvent(mouseevent);\r\n    }\r\n\r\n    public void mouseExited(MouseEvent mouseevent)\r\n    {\r\n        gCanvas.dispatchMouseEvent(mouseevent);\r\n    }\r\n\r\n    public void mouseDragged(MouseEvent mouseevent)\r\n    {\r\n        gCanvas.dispatchMouseEvent(mouseevent);\r\n    }\r\n\r\n    public void mouseMoved(MouseEvent mouseevent)\r\n    {\r\n        gCanvas.dispatchMouseEvent(mouseevent);\r\n    }\r\n\r\n    private GCanvas gCanvas;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/graphics/GCompound.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   GCompound.java\r\n\r\npackage acm.graphics;\r\n\r\nimport acm.util.ErrorException;\r\nimport java.awt.Graphics2D;\r\nimport java.awt.Shape;\r\nimport java.awt.event.MouseEvent;\r\nimport java.awt.geom.*;\r\nimport java.io.PrintStream;\r\nimport java.util.Iterator;\r\n\r\n// Referenced classes of package acm.graphics:\r\n//            GObject, GObjectList, GIterator, GRectangle, \r\n//            GPoint, GContainer, GCanvas\r\n\r\npublic class GCompound extends GObject\r\n    implements GContainer\r\n{\r\n\r\n    public GCompound()\r\n    {\r\n        contents = new GObjectList(this);\r\n        complete = false;\r\n    }\r\n\r\n    public void add(GObject gobject)\r\n    {\r\n        if(complete)\r\n        {\r\n            throw new ErrorException(\"You can't add objects to a GCompound that has been marked as complete.\");\r\n        } else\r\n        {\r\n            contents.add(gobject);\r\n            repaint();\r\n            return;\r\n        }\r\n    }\r\n\r\n    public final void add(GObject gobject, double d, double d1)\r\n    {\r\n        gobject.setLocation(d, d1);\r\n        add(gobject);\r\n    }\r\n\r\n    public final void add(GObject gobject, GPoint gpoint)\r\n    {\r\n        add(gobject, gpoint.getX(), gpoint.getY());\r\n    }\r\n\r\n    public void remove(GObject gobject)\r\n    {\r\n        if(complete)\r\n        {\r\n            throw new ErrorException(\"You can't remove objects from a GCompound that has been marked as complete.\");\r\n        } else\r\n        {\r\n            contents.remove(gobject);\r\n            repaint();\r\n            return;\r\n        }\r\n    }\r\n\r\n    public void removeAll()\r\n    {\r\n        if(complete)\r\n        {\r\n            throw new ErrorException(\"You can't remove objects from a GCompound that has been marked as complete.\");\r\n        } else\r\n        {\r\n            contents.removeAll();\r\n            repaint();\r\n            return;\r\n        }\r\n    }\r\n\r\n    public int getElementCount()\r\n    {\r\n        return contents.getElementCount();\r\n    }\r\n\r\n    public GObject getElement(int i)\r\n    {\r\n        return contents.getElement(i);\r\n    }\r\n\r\n    public GObject getElementAt(double d, double d1)\r\n    {\r\n        return contents.getElementAt(d, d1, false);\r\n    }\r\n\r\n    public final GObject getElementAt(GPoint gpoint)\r\n    {\r\n        return getElementAt(gpoint.getX(), gpoint.getY());\r\n    }\r\n\r\n    public Iterator iterator()\r\n    {\r\n        return new GIterator(this, 0);\r\n    }\r\n\r\n    public Iterator iterator(int i)\r\n    {\r\n        return new GIterator(this, i);\r\n    }\r\n\r\n    public Object clone()\r\n    {\r\n        GCompound gcompound;\r\n        gcompound = (GCompound)super.clone();\r\n        gcompound.contents = new GObjectList(gcompound, contents);\r\n        for(int i = 0; i < contents.getElementCount(); i++)\r\n        {\r\n            System.err.println((new StringBuilder()).append(\"original = \").append(contents.getElement(i).hashCode()).toString());\r\n            System.err.println((new StringBuilder()).append(\"clone    = \").append(gcompound.contents.getElement(i).hashCode()).toString());\r\n        }\r\n\r\n        return gcompound;\r\n        Exception exception;\r\n        exception;\r\n        throw new ErrorException(\"Impossible exception\");\r\n    }\r\n\r\n    protected void paint2d(Graphics2D graphics2d)\r\n    {\r\n        contents.mapPaint(graphics2d);\r\n    }\r\n\r\n    public GRectangle getBounds()\r\n    {\r\n        GRectangle grectangle = contents.getBounds();\r\n        Object obj = new java.awt.geom.Rectangle2D.Double(grectangle.getX(), grectangle.getY(), grectangle.getWidth(), grectangle.getHeight());\r\n        AffineTransform affinetransform = getMatrix();\r\n        if(affinetransform != null)\r\n            obj = affinetransform.createTransformedShape(((Shape) (obj)));\r\n        java.awt.Rectangle rectangle = ((Shape) (obj)).getBounds();\r\n        return new GRectangle(getX() + rectangle.getX(), getY() + rectangle.getY(), rectangle.getWidth(), rectangle.getHeight());\r\n    }\r\n\r\n    public boolean contains(double d, double d1)\r\n    {\r\n        d -= getX();\r\n        d1 -= getY();\r\n        AffineTransform affinetransform = getMatrix();\r\n        if(affinetransform != null)\r\n            try\r\n            {\r\n                affinetransform = affinetransform.createInverse();\r\n                java.awt.geom.Point2D.Double double1 = new java.awt.geom.Point2D.Double(d, d1);\r\n                affinetransform.transform(double1, double1);\r\n                d = double1.getX();\r\n                d1 = double1.getY();\r\n            }\r\n            catch(NoninvertibleTransformException noninvertibletransformexception)\r\n            {\r\n                throw new ErrorException(noninvertibletransformexception);\r\n            }\r\n        return contents.contains(d, d1);\r\n    }\r\n\r\n    public final GPoint getCanvasPoint(GPoint gpoint)\r\n    {\r\n        return getCanvasPoint(gpoint.getX(), gpoint.getY());\r\n    }\r\n\r\n    public GPoint getCanvasPoint(double d, double d1)\r\n    {\r\n        GCompound gcompound;\r\n        for(Object obj = this; obj instanceof GCompound; obj = gcompound.getParent())\r\n        {\r\n            gcompound = (GCompound)obj;\r\n            d += gcompound.getX();\r\n            d1 += gcompound.getY();\r\n        }\r\n\r\n        return new GPoint(d, d1);\r\n    }\r\n\r\n    public final GPoint getLocalPoint(GPoint gpoint)\r\n    {\r\n        return getLocalPoint(gpoint.getX(), gpoint.getY());\r\n    }\r\n\r\n    public GPoint getLocalPoint(double d, double d1)\r\n    {\r\n        GCompound gcompound;\r\n        for(Object obj = this; obj instanceof GCompound; obj = gcompound.getParent())\r\n        {\r\n            gcompound = (GCompound)obj;\r\n            d -= gcompound.getX();\r\n            d1 -= gcompound.getY();\r\n        }\r\n\r\n        return new GPoint(d, d1);\r\n    }\r\n\r\n    public void markAsComplete()\r\n    {\r\n        complete = true;\r\n    }\r\n\r\n    protected void sendToFront(GObject gobject)\r\n    {\r\n        contents.sendToFront(gobject);\r\n        repaint();\r\n    }\r\n\r\n    protected void sendToBack(GObject gobject)\r\n    {\r\n        contents.sendToBack(gobject);\r\n        repaint();\r\n    }\r\n\r\n    protected void sendForward(GObject gobject)\r\n    {\r\n        contents.sendForward(gobject);\r\n        repaint();\r\n    }\r\n\r\n    protected void sendBackward(GObject gobject)\r\n    {\r\n        contents.sendBackward(gobject);\r\n        repaint();\r\n    }\r\n\r\n    protected void fireMouseListeners(MouseEvent mouseevent)\r\n    {\r\n        if(super.areMouseListenersEnabled())\r\n        {\r\n            super.fireMouseListeners(mouseevent);\r\n            return;\r\n        }\r\n        GPoint gpoint = new GPoint((double)mouseevent.getX() - getX(), (double)mouseevent.getY() - getY());\r\n        GObject gobject = getElementAt(gpoint);\r\n        MouseEvent mouseevent1 = null;\r\n        if(gobject != lastObject)\r\n        {\r\n            if(lastObject != null)\r\n            {\r\n                mouseevent1 = GCanvas.createMouseEvent(lastObject, 505, mouseevent);\r\n                lastObject.fireMouseListeners(mouseevent1);\r\n            }\r\n            if(gobject != null)\r\n            {\r\n                mouseevent1 = GCanvas.createMouseEvent(gobject, 504, mouseevent);\r\n                gobject.fireMouseListeners(mouseevent1);\r\n            }\r\n        }\r\n        lastObject = gobject;\r\n        if(dragObject != null)\r\n            gobject = dragObject;\r\n        if(gobject != null)\r\n        {\r\n            int i = mouseevent.getID();\r\n            if(i != 505 && i != 504)\r\n            {\r\n                if(i == 501)\r\n                    dragObject = gobject;\r\n                else\r\n                if(i == 502)\r\n                    dragObject = null;\r\n                mouseevent1 = GCanvas.createMouseEvent(gobject, i, mouseevent);\r\n                gobject.fireMouseListeners(mouseevent1);\r\n            }\r\n        }\r\n        if(mouseevent1 != null && mouseevent1.isConsumed())\r\n            mouseevent.consume();\r\n    }\r\n\r\n    protected boolean areMouseListenersEnabled()\r\n    {\r\n        if(super.areMouseListenersEnabled())\r\n            return true;\r\n        else\r\n            return contents.areMouseListenersEnabled();\r\n    }\r\n\r\n    private boolean complete;\r\n    private GObjectList contents;\r\n    private transient GObject lastObject;\r\n    private transient GObject dragObject;\r\n    static final long serialVersionUID = 21L;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/graphics/GContainer.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   GContainer.java\r\n\r\npackage acm.graphics;\r\n\r\n\r\n// Referenced classes of package acm.graphics:\r\n//            GObject, GPoint\r\n\r\npublic interface GContainer\r\n{\r\n\r\n    public abstract void add(GObject gobject);\r\n\r\n    public abstract void add(GObject gobject, double d, double d1);\r\n\r\n    public abstract void add(GObject gobject, GPoint gpoint);\r\n\r\n    public abstract void remove(GObject gobject);\r\n\r\n    public abstract void removeAll();\r\n\r\n    public abstract int getElementCount();\r\n\r\n    public abstract GObject getElement(int i);\r\n\r\n    public abstract GObject getElementAt(double d, double d1);\r\n\r\n    public abstract GObject getElementAt(GPoint gpoint);\r\n\r\n    public static final int BACK_TO_FRONT = 0;\r\n    public static final int FRONT_TO_BACK = 1;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/graphics/GDimension.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   GDimension.java\r\n\r\npackage acm.graphics;\r\n\r\nimport java.awt.Dimension;\r\nimport java.io.Serializable;\r\n\r\npublic class GDimension\r\n    implements Serializable\r\n{\r\n\r\n    public GDimension()\r\n    {\r\n        this(0.0D, 0.0D);\r\n    }\r\n\r\n    public GDimension(double d, double d1)\r\n    {\r\n        width = d;\r\n        height = d1;\r\n    }\r\n\r\n    public GDimension(GDimension gdimension)\r\n    {\r\n        this(gdimension.width, gdimension.height);\r\n    }\r\n\r\n    public GDimension(Dimension dimension)\r\n    {\r\n        this(dimension.width, dimension.height);\r\n    }\r\n\r\n    public double getWidth()\r\n    {\r\n        return width;\r\n    }\r\n\r\n    public double getHeight()\r\n    {\r\n        return height;\r\n    }\r\n\r\n    public void setSize(double d, double d1)\r\n    {\r\n        width = d;\r\n        height = d1;\r\n    }\r\n\r\n    public void setSize(GDimension gdimension)\r\n    {\r\n        setSize(gdimension.width, gdimension.height);\r\n    }\r\n\r\n    public GDimension getSize()\r\n    {\r\n        return new GDimension(width, height);\r\n    }\r\n\r\n    public Dimension toDimension()\r\n    {\r\n        return new Dimension((int)Math.round(width), (int)Math.round(height));\r\n    }\r\n\r\n    public int hashCode()\r\n    {\r\n        return (new Float((float)width)).hashCode() ^ 37 * (new Float((float)height)).hashCode();\r\n    }\r\n\r\n    public boolean equals(Object obj)\r\n    {\r\n        if(!(obj instanceof GDimension))\r\n        {\r\n            return false;\r\n        } else\r\n        {\r\n            GDimension gdimension = (GDimension)obj;\r\n            return (float)width == (float)gdimension.width && (float)height == (float)gdimension.height;\r\n        }\r\n    }\r\n\r\n    public String toString()\r\n    {\r\n        return (new StringBuilder()).append(\"(\").append((float)width).append(\"x\").append((float)height).append(\")\").toString();\r\n    }\r\n\r\n    private double width;\r\n    private double height;\r\n    static final long serialVersionUID = 21L;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/graphics/GFillable.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   GFillable.java\r\n\r\npackage acm.graphics;\r\n\r\nimport java.awt.Color;\r\n\r\npublic interface GFillable\r\n{\r\n\r\n    public abstract void setFilled(boolean flag);\r\n\r\n    public abstract boolean isFilled();\r\n\r\n    public abstract void setFillColor(Color color);\r\n\r\n    public abstract Color getFillColor();\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/graphics/GImage.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   GImage.java\r\n\r\npackage acm.graphics;\r\n\r\nimport acm.util.ErrorException;\r\nimport acm.util.MediaTools;\r\nimport java.awt.*;\r\nimport java.awt.geom.AffineTransform;\r\nimport java.awt.geom.Rectangle2D;\r\nimport java.io.File;\r\n\r\n// Referenced classes of package acm.graphics:\r\n//            GObject, GDimension, GRectangle, GResizable, \r\n//            GMath\r\n\r\npublic class GImage extends GObject\r\n    implements GResizable\r\n{\r\n\r\n    public GImage(Image image1)\r\n    {\r\n        this(image1, 0.0D, 0.0D);\r\n    }\r\n\r\n    public GImage(String s)\r\n    {\r\n        this(s, 0.0D, 0.0D);\r\n    }\r\n\r\n    public GImage(int ai[][])\r\n    {\r\n        this(ai, 0.0D, 0.0D);\r\n    }\r\n\r\n    public GImage(Image image1, double d, double d1)\r\n    {\r\n        setImage(image1);\r\n        setLocation(d, d1);\r\n    }\r\n\r\n    public GImage(String s, double d, double d1)\r\n    {\r\n        this(MediaTools.loadImage(s), d, d1);\r\n    }\r\n\r\n    public GImage(int ai[][], double d, double d1)\r\n    {\r\n        this(MediaTools.createImage(ai), d, d1);\r\n    }\r\n\r\n    public void setImage(Image image1)\r\n    {\r\n        image = MediaTools.loadImage(image1);\r\n        sizeDetermined = false;\r\n        determineSize();\r\n        repaint();\r\n    }\r\n\r\n    public void setImage(String s)\r\n    {\r\n        setImage(MediaTools.loadImage(s));\r\n    }\r\n\r\n    public Image getImage()\r\n    {\r\n        return image;\r\n    }\r\n\r\n    public void saveImage(String s)\r\n    {\r\n        MediaTools.saveImage(image, s);\r\n    }\r\n\r\n    public void saveImage(File file)\r\n    {\r\n        MediaTools.saveImage(image, file);\r\n    }\r\n\r\n    protected void paint2d(Graphics2D graphics2d)\r\n    {\r\n        java.awt.Component component = getComponent();\r\n        if(component == null)\r\n            component = MediaTools.getImageObserver();\r\n        if(image != null && component != null)\r\n        {\r\n            determineSize();\r\n            java.awt.Color color = getObjectColor();\r\n            if(color == null)\r\n                graphics2d.drawImage(image, 0, 0, GMath.round(width), GMath.round(height), component);\r\n            else\r\n                graphics2d.drawImage(image, 0, 0, GMath.round(width), GMath.round(height), color, component);\r\n        }\r\n    }\r\n\r\n    public void setSize(double d, double d1)\r\n    {\r\n        if(getMatrix() != null)\r\n        {\r\n            throw new ErrorException(\"setSize: Object has been transformed\");\r\n        } else\r\n        {\r\n            width = d;\r\n            height = d1;\r\n            repaint();\r\n            return;\r\n        }\r\n    }\r\n\r\n    public final void setSize(GDimension gdimension)\r\n    {\r\n        setSize(gdimension.getWidth(), gdimension.getHeight());\r\n    }\r\n\r\n    public GDimension getSize()\r\n    {\r\n        return new GDimension(width, height);\r\n    }\r\n\r\n    public void setBounds(double d, double d1, double d2, double d3)\r\n    {\r\n        if(getMatrix() != null)\r\n        {\r\n            throw new ErrorException(\"setBounds: Object has been transformed\");\r\n        } else\r\n        {\r\n            width = d2;\r\n            height = d3;\r\n            setLocation(d, d1);\r\n            return;\r\n        }\r\n    }\r\n\r\n    public final void setBounds(GRectangle grectangle)\r\n    {\r\n        if(getMatrix() != null)\r\n        {\r\n            throw new ErrorException(\"setBounds: Object has been transformed\");\r\n        } else\r\n        {\r\n            setBounds(grectangle.getX(), grectangle.getY(), grectangle.getWidth(), grectangle.getHeight());\r\n            return;\r\n        }\r\n    }\r\n\r\n    public GRectangle getBounds()\r\n    {\r\n        determineSize();\r\n        Object obj = new java.awt.geom.Rectangle2D.Double(0.0D, 0.0D, width, height);\r\n        AffineTransform affinetransform = getMatrix();\r\n        if(affinetransform != null)\r\n            obj = affinetransform.createTransformedShape(((Shape) (obj)));\r\n        java.awt.Rectangle rectangle = ((Shape) (obj)).getBounds();\r\n        return new GRectangle(getX() + rectangle.getX(), getY() + rectangle.getY(), rectangle.getWidth(), rectangle.getHeight());\r\n    }\r\n\r\n    public boolean contains(double d, double d1)\r\n    {\r\n        determineSize();\r\n        Object obj = new java.awt.geom.Rectangle2D.Double(0.0D, 0.0D, width, height);\r\n        AffineTransform affinetransform = getMatrix();\r\n        if(affinetransform != null)\r\n            obj = affinetransform.createTransformedShape(((Shape) (obj)));\r\n        return ((Shape) (obj)).contains(d - getX(), d1 - getY());\r\n    }\r\n\r\n    public int[][] getPixelArray()\r\n    {\r\n        return MediaTools.getPixelArray(image);\r\n    }\r\n\r\n    public static int getAlpha(int i)\r\n    {\r\n        return i >> 24 & 0xff;\r\n    }\r\n\r\n    public static int getRed(int i)\r\n    {\r\n        return i >> 16 & 0xff;\r\n    }\r\n\r\n    public static int getGreen(int i)\r\n    {\r\n        return i >> 8 & 0xff;\r\n    }\r\n\r\n    public static int getBlue(int i)\r\n    {\r\n        return i & 0xff;\r\n    }\r\n\r\n    public static int createRGBPixel(int i, int j, int k)\r\n    {\r\n        return createRGBPixel(i, j, k, 255);\r\n    }\r\n\r\n    public static int createRGBPixel(int i, int j, int k, int l)\r\n    {\r\n        return l << 24 | i << 16 | j << 8 | k;\r\n    }\r\n\r\n    private void determineSize()\r\n    {\r\n        if(sizeDetermined)\r\n            return;\r\n        java.awt.Component component = getComponent();\r\n        if(component == null)\r\n            component = MediaTools.getImageObserver();\r\n        width = image.getWidth(component);\r\n        height = image.getHeight(component);\r\n        sizeDetermined = true;\r\n    }\r\n\r\n    private Image image;\r\n    private double width;\r\n    private double height;\r\n    private boolean sizeDetermined;\r\n    static final long serialVersionUID = 21L;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/graphics/GIterator.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   GContainer.java\r\n\r\npackage acm.graphics;\r\n\r\nimport acm.util.ErrorException;\r\nimport java.util.Iterator;\r\n\r\n// Referenced classes of package acm.graphics:\r\n//            GContainer, GObject\r\n\r\nclass GIterator\r\n    implements Iterator\r\n{\r\n\r\n    public GIterator(GContainer gcontainer, int i)\r\n    {\r\n        switch(i)\r\n        {\r\n        case 0: // '\\0'\r\n        case 1: // '\\001'\r\n            dir = i;\r\n            break;\r\n\r\n        default:\r\n            throw new ErrorException(\"Illegal direction for iterator\");\r\n        }\r\n        cont = gcontainer;\r\n        index = 0;\r\n        nElements = gcontainer.getElementCount();\r\n    }\r\n\r\n    public boolean hasNext()\r\n    {\r\n        return index < nElements;\r\n    }\r\n\r\n    public GObject next()\r\n    {\r\n        if(dir == 1)\r\n            return cont.getElement(nElements - index++ - 1);\r\n        else\r\n            return cont.getElement(index++);\r\n    }\r\n\r\n    public GObject nextElement()\r\n    {\r\n        return next();\r\n    }\r\n\r\n    public void remove()\r\n    {\r\n        if(dir == 1)\r\n            cont.remove(cont.getElement(nElements - --index - 1));\r\n        else\r\n            cont.remove(cont.getElement(--index));\r\n        nElements--;\r\n    }\r\n\r\n    public volatile Object next()\r\n    {\r\n        return next();\r\n    }\r\n\r\n    private GContainer cont;\r\n    private int dir;\r\n    private int index;\r\n    private int nElements;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/graphics/GLabel.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   GLabel.java\r\n\r\npackage acm.graphics;\r\n\r\nimport acm.util.JTFTools;\r\nimport acm.util.MediaTools;\r\nimport java.awt.*;\r\nimport java.awt.geom.AffineTransform;\r\nimport java.awt.geom.Rectangle2D;\r\n\r\n// Referenced classes of package acm.graphics:\r\n//            GObject, GRectangle\r\n\r\npublic class GLabel extends GObject\r\n{\r\n\r\n    public GLabel(String s)\r\n    {\r\n        this(s, 0.0D, 0.0D);\r\n    }\r\n\r\n    public GLabel(String s, double d, double d1)\r\n    {\r\n        label = s;\r\n        setFont(DEFAULT_FONT);\r\n        setLocation(d, d1);\r\n    }\r\n\r\n    public void setFont(Font font)\r\n    {\r\n        labelFont = JTFTools.getStandardFont(font);\r\n        repaint();\r\n    }\r\n\r\n    public void setFont(String s)\r\n    {\r\n        setFont(JTFTools.decodeFont(s, getFont()));\r\n    }\r\n\r\n    public Font getFont()\r\n    {\r\n        return labelFont;\r\n    }\r\n\r\n    public void setLabel(String s)\r\n    {\r\n        label = s;\r\n        repaint();\r\n    }\r\n\r\n    public String getLabel()\r\n    {\r\n        return label;\r\n    }\r\n\r\n    protected void paint2d(Graphics2D graphics2d)\r\n    {\r\n        graphics2d.setFont(labelFont);\r\n        graphics2d.drawString(label, 0, 0);\r\n    }\r\n\r\n    public double getAscent()\r\n    {\r\n        return (double)getFontMetrics().getAscent();\r\n    }\r\n\r\n    public double getDescent()\r\n    {\r\n        return (double)getFontMetrics().getDescent();\r\n    }\r\n\r\n    public FontMetrics getFontMetrics()\r\n    {\r\n        Component component = getComponent();\r\n        if(component == null)\r\n            component = DUMMY_COMPONENT;\r\n        return component.getFontMetrics(labelFont);\r\n    }\r\n\r\n    public GRectangle getBounds()\r\n    {\r\n        FontMetrics fontmetrics = getFontMetrics();\r\n        Object obj = new java.awt.geom.Rectangle2D.Double(0.0D, -fontmetrics.getAscent(), fontmetrics.stringWidth(label), fontmetrics.getHeight());\r\n        AffineTransform affinetransform = getMatrix();\r\n        if(affinetransform != null)\r\n            obj = affinetransform.createTransformedShape(((Shape) (obj)));\r\n        java.awt.Rectangle rectangle = ((Shape) (obj)).getBounds();\r\n        return new GRectangle(getX() + rectangle.getX(), getY() + rectangle.getY(), rectangle.getWidth(), rectangle.getHeight());\r\n    }\r\n\r\n    public boolean contains(double d, double d1)\r\n    {\r\n        FontMetrics fontmetrics = getFontMetrics();\r\n        Object obj = new java.awt.geom.Rectangle2D.Double(0.0D, -fontmetrics.getAscent(), fontmetrics.stringWidth(label), fontmetrics.getHeight());\r\n        AffineTransform affinetransform = getMatrix();\r\n        if(affinetransform != null)\r\n            obj = affinetransform.createTransformedShape(((Shape) (obj)));\r\n        return ((Shape) (obj)).contains(d - getX(), d1 - getY());\r\n    }\r\n\r\n    public String paramString()\r\n    {\r\n        return (new StringBuilder()).append(super.paramString()).append(\", string=\\\"\").append(label).append(\"\\\"\").toString();\r\n    }\r\n\r\n    public static final Font DEFAULT_FONT = new Font(\"Default\", 0, 12);\r\n    private String label;\r\n    private Font labelFont;\r\n    private static final Component DUMMY_COMPONENT = MediaTools.getImageObserver();\r\n    static final long serialVersionUID = 21L;\r\n\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/graphics/GLine.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   GLine.java\r\n\r\npackage acm.graphics;\r\n\r\nimport java.awt.Graphics2D;\r\nimport java.awt.geom.*;\r\n\r\n// Referenced classes of package acm.graphics:\r\n//            GObject, GRectangle, GPoint, GMath\r\n\r\npublic class GLine extends GObject\r\n{\r\n\r\n    public GLine(double d, double d1, double d2, double d3)\r\n    {\r\n        setLocation(d, d1);\r\n        dx = d2 - d;\r\n        dy = d3 - d1;\r\n    }\r\n\r\n    protected void paint2d(Graphics2D graphics2d)\r\n    {\r\n        java.awt.geom.Line2D.Double double1 = new java.awt.geom.Line2D.Double(0.0D, 0.0D, GMath.round(dx), GMath.round(dy));\r\n        graphics2d.draw(double1);\r\n    }\r\n\r\n    public GRectangle getBounds()\r\n    {\r\n        double d = getX();\r\n        double d1 = getY();\r\n        double d2 = d + dx;\r\n        double d3 = d1 + dy;\r\n        AffineTransform affinetransform = getMatrix();\r\n        if(affinetransform != null)\r\n        {\r\n            java.awt.geom.Point2D.Double double1 = new java.awt.geom.Point2D.Double(d, d1);\r\n            affinetransform.transform(double1, double1);\r\n            d = double1.getX();\r\n            d1 = double1.getY();\r\n            double1 = new java.awt.geom.Point2D.Double(d2, d3);\r\n            affinetransform.transform(double1, double1);\r\n            d2 = double1.getX();\r\n            d3 = double1.getY();\r\n        }\r\n        double d4 = Math.min(d, d2);\r\n        double d5 = Math.min(d1, d3);\r\n        return new GRectangle(d4, d5, Math.abs(d2 - d) + 1.0D, Math.abs(d3 - d1) + 1.0D);\r\n    }\r\n\r\n    public void setStartPoint(double d, double d1)\r\n    {\r\n        dx += getX() - d;\r\n        dy += getY() - d1;\r\n        setLocation(d, d1);\r\n    }\r\n\r\n    public GPoint getStartPoint()\r\n    {\r\n        return getLocation();\r\n    }\r\n\r\n    public void setEndPoint(double d, double d1)\r\n    {\r\n        dx = d - getX();\r\n        dy = d1 - getY();\r\n        repaint();\r\n    }\r\n\r\n    public GPoint getEndPoint()\r\n    {\r\n        return new GPoint(getX() + dx, getY() + dy);\r\n    }\r\n\r\n    public boolean contains(double d, double d1)\r\n    {\r\n        double d2 = getX();\r\n        double d3 = getY();\r\n        double d4 = d2 + dx;\r\n        double d5 = d3 + dy;\r\n        AffineTransform affinetransform = getMatrix();\r\n        if(affinetransform != null)\r\n        {\r\n            java.awt.geom.Point2D.Double double1 = new java.awt.geom.Point2D.Double(d2, d3);\r\n            affinetransform.transform(double1, double1);\r\n            d2 = double1.getX();\r\n            d3 = double1.getY();\r\n            double1 = new java.awt.geom.Point2D.Double(d4, d5);\r\n            affinetransform.transform(double1, double1);\r\n            d4 = double1.getX();\r\n            d5 = double1.getY();\r\n        }\r\n        double d6 = 2.25D;\r\n        if(distanceSquared(d, d1, d2, d3) < d6)\r\n            return true;\r\n        if(distanceSquared(d, d1, d4, d5) < d6)\r\n            return true;\r\n        if(d < Math.min(d2, d4) - 1.5D)\r\n            return false;\r\n        if(d > Math.max(d2, d4) + 1.5D)\r\n            return false;\r\n        if(d1 < Math.min(d3, d5) - 1.5D)\r\n            return false;\r\n        if(d1 > Math.max(d3, d5) + 1.5D)\r\n            return false;\r\n        if((float)d2 - (float)d4 == 0.0F && (float)d3 - (float)d5 == 0.0F)\r\n        {\r\n            return false;\r\n        } else\r\n        {\r\n            double d7 = ((d - d2) * (d4 - d2) + (d1 - d3) * (d5 - d3)) / distanceSquared(d2, d3, d4, d5);\r\n            return distanceSquared(d, d1, d2 + d7 * (d4 - d2), d3 + d7 * (d5 - d3)) < d6;\r\n        }\r\n    }\r\n\r\n    public String paramString()\r\n    {\r\n        String s = super.paramString();\r\n        s = s.substring(s.indexOf(')') + 1);\r\n        GPoint gpoint = getStartPoint();\r\n        String s1 = (new StringBuilder()).append(\"start=(\").append(gpoint.getX()).append(\", \").append(gpoint.getY()).append(\")\").toString();\r\n        gpoint = getEndPoint();\r\n        s1 = (new StringBuilder()).append(s1).append(\", end=(\").append(gpoint.getX()).append(\", \").append(gpoint.getY()).append(\")\").toString();\r\n        return (new StringBuilder()).append(s1).append(s).toString();\r\n    }\r\n\r\n    private double distanceSquared(double d, double d1, double d2, double d3)\r\n    {\r\n        return (d2 - d) * (d2 - d) + (d3 - d1) * (d3 - d1);\r\n    }\r\n\r\n    public static final double LINE_TOLERANCE = 1.5D;\r\n    private double dx;\r\n    private double dy;\r\n    static final long serialVersionUID = 21L;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/graphics/GMath.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   GMath.java\r\n\r\npackage acm.graphics;\r\n\r\n\r\npublic class GMath\r\n{\r\n\r\n    private GMath()\r\n    {\r\n    }\r\n\r\n    public static int round(double d)\r\n    {\r\n        return (int)Math.round(d);\r\n    }\r\n\r\n    public static double sinDegrees(double d)\r\n    {\r\n        return Math.sin(toRadians(d));\r\n    }\r\n\r\n    public static double cosDegrees(double d)\r\n    {\r\n        return Math.cos(toRadians(d));\r\n    }\r\n\r\n    public static double tanDegrees(double d)\r\n    {\r\n        return sinDegrees(d) / cosDegrees(d);\r\n    }\r\n\r\n    public static double toDegrees(double d)\r\n    {\r\n        return (d * 180D) / 3.1415926535897931D;\r\n    }\r\n\r\n    public static double toRadians(double d)\r\n    {\r\n        return (d * 3.1415926535897931D) / 180D;\r\n    }\r\n\r\n    public static double distance(double d, double d1)\r\n    {\r\n        return Math.sqrt(d * d + d1 * d1);\r\n    }\r\n\r\n    public static double distance(double d, double d1, double d2, double d3)\r\n    {\r\n        return distance(d2 - d, d3 - d1);\r\n    }\r\n\r\n    public static double angle(double d, double d1)\r\n    {\r\n        if(d == 0.0D && d1 == 0.0D)\r\n            return 0.0D;\r\n        else\r\n            return toDegrees(Math.atan2(-d1, d));\r\n    }\r\n\r\n    public static double angle(double d, double d1, double d2, double d3)\r\n    {\r\n        return angle(d2 - d, d3 - d1);\r\n    }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/graphics/GMouseEvent.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   GCanvas.java\r\n\r\npackage acm.graphics;\r\n\r\nimport java.awt.Component;\r\nimport java.awt.event.MouseEvent;\r\n\r\nclass GMouseEvent extends MouseEvent\r\n{\r\n\r\n    public GMouseEvent(Object obj, int i, MouseEvent mouseevent)\r\n    {\r\n        super(mouseevent.getComponent(), i, mouseevent.getWhen(), mouseevent.getModifiers(), mouseevent.getX(), mouseevent.getY(), mouseevent.getClickCount(), mouseevent.isPopupTrigger());\r\n        effectiveSource = obj;\r\n    }\r\n\r\n    public Object getSource()\r\n    {\r\n        return effectiveSource;\r\n    }\r\n\r\n    public Component getComponent()\r\n    {\r\n        return (Component)super.getSource();\r\n    }\r\n\r\n    public String toString()\r\n    {\r\n        return (new StringBuilder()).append(getClass().getName()).append(\"[\").append(paramString()).append(\"] on \").append(getSource()).toString();\r\n    }\r\n\r\n    private Object effectiveSource;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/graphics/GObject.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   GObject.java\r\n\r\npackage acm.graphics;\r\n\r\nimport acm.util.ErrorException;\r\nimport acm.util.JTFTools;\r\nimport java.awt.*;\r\nimport java.awt.event.*;\r\nimport java.awt.geom.AffineTransform;\r\nimport java.io.Serializable;\r\nimport java.lang.reflect.Method;\r\n\r\n// Referenced classes of package acm.graphics:\r\n//            GPoint, GDimension, GCanvas, GCompound, \r\n//            GResizable, GFillable, GScalable, GRectangle, \r\n//            GMath, GContainer\r\n\r\npublic abstract class GObject\r\n    implements Cloneable, Serializable, GScalable\r\n{\r\n\r\n    protected GObject()\r\n    {\r\n        matrix = null;\r\n        lineWidth = 1.0D;\r\n        isVisible = true;\r\n        mouseListenersEnabled = false;\r\n    }\r\n\r\n    public void paint(Graphics g)\r\n    {\r\n        if(isVisible)\r\n        {\r\n            Graphics2D graphics2d = createTransformedGraphics(g);\r\n            paint2d(graphics2d);\r\n            graphics2d.dispose();\r\n        }\r\n    }\r\n\r\n    protected abstract void paint2d(Graphics2D graphics2d);\r\n\r\n    public abstract GRectangle getBounds();\r\n\r\n    public void setLocation(double d, double d1)\r\n    {\r\n        xc = d;\r\n        yc = d1;\r\n        repaint();\r\n    }\r\n\r\n    public final void setLocation(GPoint gpoint)\r\n    {\r\n        setLocation(gpoint.getX(), gpoint.getY());\r\n    }\r\n\r\n    public GPoint getLocation()\r\n    {\r\n        return new GPoint(xc, yc);\r\n    }\r\n\r\n    public double getX()\r\n    {\r\n        return xc;\r\n    }\r\n\r\n    public double getY()\r\n    {\r\n        return yc;\r\n    }\r\n\r\n    public void move(double d, double d1)\r\n    {\r\n        setLocation(xc + d, yc + d1);\r\n    }\r\n\r\n    public final void movePolar(double d, double d1)\r\n    {\r\n        double d2 = (d1 * 3.1415926535897931D) / 180D;\r\n        move(d * Math.cos(d2), -d * Math.sin(d2));\r\n    }\r\n\r\n    public GDimension getSize()\r\n    {\r\n        GRectangle grectangle = getBounds();\r\n        return new GDimension(grectangle.getWidth(), grectangle.getHeight());\r\n    }\r\n\r\n    public double getWidth()\r\n    {\r\n        return getBounds().getWidth();\r\n    }\r\n\r\n    public double getHeight()\r\n    {\r\n        return getBounds().getHeight();\r\n    }\r\n\r\n    public boolean contains(double d, double d1)\r\n    {\r\n        return false;\r\n    }\r\n\r\n    public final boolean contains(GPoint gpoint)\r\n    {\r\n        return contains(gpoint.getX(), gpoint.getY());\r\n    }\r\n\r\n    public void sendToFront()\r\n    {\r\n        if(compoundParent != null)\r\n            compoundParent.sendToFront(this);\r\n        else\r\n        if(transientParent instanceof GCanvas)\r\n            ((GCanvas)transientParent).sendToFront(this);\r\n        else\r\n        if(transientParent != null)\r\n            try\r\n            {\r\n                Class class1 = transientParent.getClass();\r\n                Class aclass[] = {\r\n                    Class.forName(\"acm.graphics.GObject\")\r\n                };\r\n                Object aobj[] = {\r\n                    this\r\n                };\r\n                Method method = class1.getMethod(\"sendToFront\", aclass);\r\n                if(method != null)\r\n                    method.invoke(transientParent, aobj);\r\n            }\r\n            catch(Exception exception) { }\r\n        if(mouseListenersEnabled)\r\n            updateEnabledList();\r\n    }\r\n\r\n    public void sendToBack()\r\n    {\r\n        if(compoundParent != null)\r\n            compoundParent.sendToBack(this);\r\n        else\r\n        if(transientParent instanceof GCanvas)\r\n            ((GCanvas)transientParent).sendToBack(this);\r\n        else\r\n        if(transientParent != null)\r\n            try\r\n            {\r\n                Class class1 = transientParent.getClass();\r\n                Class aclass[] = {\r\n                    Class.forName(\"acm.graphics.GObject\")\r\n                };\r\n                Object aobj[] = {\r\n                    this\r\n                };\r\n                Method method = class1.getMethod(\"sendToBack\", aclass);\r\n                if(method != null)\r\n                    method.invoke(transientParent, aobj);\r\n            }\r\n            catch(Exception exception) { }\r\n        if(mouseListenersEnabled)\r\n            updateEnabledList();\r\n    }\r\n\r\n    public void sendForward()\r\n    {\r\n        if(compoundParent != null)\r\n            compoundParent.sendForward(this);\r\n        else\r\n        if(transientParent instanceof GCanvas)\r\n            ((GCanvas)transientParent).sendForward(this);\r\n        else\r\n        if(transientParent != null)\r\n            try\r\n            {\r\n                Class class1 = transientParent.getClass();\r\n                Class aclass[] = {\r\n                    Class.forName(\"acm.graphics.GObject\")\r\n                };\r\n                Object aobj[] = {\r\n                    this\r\n                };\r\n                Method method = class1.getMethod(\"sendForward\", aclass);\r\n                if(method != null)\r\n                    method.invoke(transientParent, aobj);\r\n            }\r\n            catch(Exception exception) { }\r\n        if(mouseListenersEnabled)\r\n            updateEnabledList();\r\n    }\r\n\r\n    public void sendBackward()\r\n    {\r\n        if(compoundParent != null)\r\n            compoundParent.sendBackward(this);\r\n        else\r\n        if(transientParent instanceof GCanvas)\r\n            ((GCanvas)transientParent).sendBackward(this);\r\n        else\r\n        if(transientParent != null)\r\n            try\r\n            {\r\n                Class class1 = transientParent.getClass();\r\n                Class aclass[] = {\r\n                    Class.forName(\"acm.graphics.GObject\")\r\n                };\r\n                Object aobj[] = {\r\n                    this\r\n                };\r\n                Method method = class1.getMethod(\"sendBackward\", aclass);\r\n                if(method != null)\r\n                    method.invoke(transientParent, aobj);\r\n            }\r\n            catch(Exception exception) { }\r\n        if(mouseListenersEnabled)\r\n            updateEnabledList();\r\n    }\r\n\r\n    public void setColor(Color color)\r\n    {\r\n        objectColor = color;\r\n        repaint();\r\n    }\r\n\r\n    public Color getColor()\r\n    {\r\n        GObject gobject;\r\n        for(gobject = this; gobject.objectColor == null;)\r\n        {\r\n            GContainer gcontainer = gobject.getParent();\r\n            if(gcontainer instanceof GObject)\r\n                gobject = (GObject)gcontainer;\r\n            else\r\n            if(gcontainer instanceof Component)\r\n                return ((Component)gcontainer).getForeground();\r\n            else\r\n                return Color.BLACK;\r\n        }\r\n\r\n        return gobject.objectColor;\r\n    }\r\n\r\n    public void setLineWidth(double d)\r\n    {\r\n        lineWidth = d;\r\n        repaint();\r\n    }\r\n\r\n    public double getLineWidth()\r\n    {\r\n        return lineWidth;\r\n    }\r\n\r\n    public void rotate(double d)\r\n    {\r\n        if(matrix == null)\r\n            matrix = new AffineTransform();\r\n        matrix.rotate(-GMath.toRadians(d));\r\n        repaint();\r\n    }\r\n\r\n    public void scale(double d, double d1)\r\n    {\r\n        if(matrix == null)\r\n            matrix = new AffineTransform();\r\n        matrix.scale(d, d1);\r\n        repaint();\r\n    }\r\n\r\n    public final void scale(double d)\r\n    {\r\n        scale(d, d);\r\n    }\r\n\r\n    public void setVisible(boolean flag)\r\n    {\r\n        isVisible = flag;\r\n        repaint();\r\n    }\r\n\r\n    public boolean isVisible()\r\n    {\r\n        return isVisible;\r\n    }\r\n\r\n    public String toString()\r\n    {\r\n        String s = getClass().getName();\r\n        if(s.startsWith(\"acm.graphics.\"))\r\n            s = s.substring(\"acm.graphics.\".length());\r\n        return (new StringBuilder()).append(s).append(\"[\").append(paramString()).append(\"]\").toString();\r\n    }\r\n\r\n    public GContainer getParent()\r\n    {\r\n        return ((GContainer) (compoundParent == null ? transientParent : compoundParent));\r\n    }\r\n\r\n    public void pause(double d)\r\n    {\r\n        JTFTools.pause(d);\r\n    }\r\n\r\n    public void addMouseListener(MouseListener mouselistener)\r\n    {\r\n        mouseListener = AWTEventMulticaster.add(mouseListener, mouselistener);\r\n        mouseListenersEnabled = true;\r\n        updateEnabledList();\r\n    }\r\n\r\n    public void removeMouseListener(MouseListener mouselistener)\r\n    {\r\n        mouseListener = AWTEventMulticaster.remove(mouseListener, mouselistener);\r\n    }\r\n\r\n    public void addMouseMotionListener(MouseMotionListener mousemotionlistener)\r\n    {\r\n        mouseMotionListener = AWTEventMulticaster.add(mouseMotionListener, mousemotionlistener);\r\n        mouseListenersEnabled = true;\r\n        updateEnabledList();\r\n    }\r\n\r\n    public void removeMouseMotionListener(MouseMotionListener mousemotionlistener)\r\n    {\r\n        mouseMotionListener = AWTEventMulticaster.remove(mouseMotionListener, mousemotionlistener);\r\n    }\r\n\r\n    public void addActionListener(ActionListener actionlistener)\r\n    {\r\n        actionListener = AWTEventMulticaster.add(actionListener, actionlistener);\r\n    }\r\n\r\n    public void removeActionListener(ActionListener actionlistener)\r\n    {\r\n        actionListener = AWTEventMulticaster.remove(actionListener, actionlistener);\r\n    }\r\n\r\n    public void fireActionEvent(String s)\r\n    {\r\n        fireActionEvent(new ActionEvent(this, 1001, s));\r\n    }\r\n\r\n    public void fireActionEvent(ActionEvent actionevent)\r\n    {\r\n        if(actionListener != null)\r\n            actionListener.actionPerformed(actionevent);\r\n    }\r\n\r\n    public Object clone()\r\n    {\r\n        GObject gobject;\r\n        gobject = (GObject)super.clone();\r\n        gobject.compoundParent = null;\r\n        gobject.transientParent = null;\r\n        gobject.mouseListener = null;\r\n        gobject.mouseMotionListener = null;\r\n        gobject.actionListener = null;\r\n        if(gobject.matrix != null)\r\n            gobject.matrix = (AffineTransform)matrix.clone();\r\n        return gobject;\r\n        Exception exception;\r\n        exception;\r\n        throw new ErrorException(\"Impossible exception\");\r\n    }\r\n\r\n    public void setParent(GContainer gcontainer)\r\n    {\r\n        if(gcontainer instanceof GCompound)\r\n            compoundParent = (GCompound)gcontainer;\r\n        else\r\n            transientParent = gcontainer;\r\n    }\r\n\r\n    protected void fireMouseListeners(MouseEvent mouseevent)\r\n    {\r\n        switch(mouseevent.getID())\r\n        {\r\n        default:\r\n            break;\r\n\r\n        case 501: \r\n            if(mouseListener != null)\r\n                mouseListener.mousePressed(mouseevent);\r\n            break;\r\n\r\n        case 502: \r\n            if(mouseListener != null)\r\n                mouseListener.mouseReleased(mouseevent);\r\n            break;\r\n\r\n        case 500: \r\n            if(mouseListener != null)\r\n                mouseListener.mouseClicked(mouseevent);\r\n            break;\r\n\r\n        case 505: \r\n            if(mouseListener != null)\r\n                mouseListener.mouseExited(mouseevent);\r\n            break;\r\n\r\n        case 504: \r\n            if(mouseListener != null)\r\n                mouseListener.mouseEntered(mouseevent);\r\n            break;\r\n\r\n        case 503: \r\n            if(mouseMotionListener != null)\r\n                mouseMotionListener.mouseMoved(mouseevent);\r\n            break;\r\n\r\n        case 506: \r\n            if(mouseMotionListener != null)\r\n                mouseMotionListener.mouseDragged(mouseevent);\r\n            break;\r\n        }\r\n    }\r\n\r\n    protected boolean areMouseListenersEnabled()\r\n    {\r\n        return mouseListenersEnabled;\r\n    }\r\n\r\n    protected void start()\r\n    {\r\n        start(null);\r\n    }\r\n\r\n    protected void start(String as[])\r\n    {\r\n        try\r\n        {\r\n            Class class1 = Class.forName(\"acm.program.GraphicsProgram\");\r\n            Class class2 = Class.forName(\"acm.graphics.GObject\");\r\n            Class aclass[] = {\r\n                class2, as.getClass()\r\n            };\r\n            Object aobj[] = {\r\n                this, as\r\n            };\r\n            Method method = class1.getMethod(\"startGraphicsProgram\", aclass);\r\n            method.invoke(null, aobj);\r\n        }\r\n        catch(Exception exception)\r\n        {\r\n            throw new ErrorException(exception);\r\n        }\r\n    }\r\n\r\n    protected Color getObjectColor()\r\n    {\r\n        return objectColor;\r\n    }\r\n\r\n    protected AffineTransform getMatrix()\r\n    {\r\n        return matrix;\r\n    }\r\n\r\n    protected Graphics2D createTransformedGraphics(Graphics g)\r\n    {\r\n        Graphics2D graphics2d = (Graphics2D)g.create();\r\n        Color color = getObjectColor();\r\n        if(color != null)\r\n            graphics2d.setColor(color);\r\n        graphics2d.translate(getX(), getY());\r\n        graphics2d.setStroke(new BasicStroke((float)lineWidth));\r\n        if(matrix != null)\r\n            graphics2d.transform(matrix);\r\n        graphics2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);\r\n        return graphics2d;\r\n    }\r\n\r\n    protected String paramString()\r\n    {\r\n        String s = \"\";\r\n        if(this instanceof GResizable)\r\n        {\r\n            GRectangle grectangle = getBounds();\r\n            s = (new StringBuilder()).append(s).append(\"bounds=(\").append(grectangle.getX()).append(\", \").append(grectangle.getY()).append(\", \").append(grectangle.getWidth()).append(\", \").append(grectangle.getHeight()).append(\")\").toString();\r\n        } else\r\n        {\r\n            GPoint gpoint = getLocation();\r\n            s = (new StringBuilder()).append(s).append(\"location=(\").append(gpoint.getX()).append(\", \").append(gpoint.getY()).append(\")\").toString();\r\n        }\r\n        if(objectColor != null)\r\n            s = (new StringBuilder()).append(s).append(\", color=\").append(colorName(objectColor)).toString();\r\n        if(this instanceof GFillable)\r\n        {\r\n            s = (new StringBuilder()).append(s).append(\", filled=\").append(((GFillable)this).isFilled()).toString();\r\n            Color color = ((GFillable)this).getFillColor();\r\n            if(color != null && color != objectColor)\r\n                s = (new StringBuilder()).append(s).append(\", fillColor=\").append(colorName(color)).toString();\r\n        }\r\n        return s;\r\n    }\r\n\r\n    protected static String colorName(Color color)\r\n    {\r\n        if(color.equals(Color.BLACK))\r\n            return \"BLACK\";\r\n        if(color.equals(Color.BLUE))\r\n            return \"BLUE\";\r\n        if(color.equals(Color.CYAN))\r\n            return \"CYAN\";\r\n        if(color.equals(Color.DARK_GRAY))\r\n            return \"DARK_GRAY\";\r\n        if(color.equals(Color.GRAY))\r\n            return \"GRAY\";\r\n        if(color.equals(Color.GREEN))\r\n            return \"GREEN\";\r\n        if(color.equals(Color.LIGHT_GRAY))\r\n            return \"LIGHT_GRAY\";\r\n        if(color.equals(Color.MAGENTA))\r\n            return \"MAGENTA\";\r\n        if(color.equals(Color.ORANGE))\r\n            return \"ORANGE\";\r\n        if(color.equals(Color.PINK))\r\n            return \"PINK\";\r\n        if(color.equals(Color.RED))\r\n            return \"RED\";\r\n        if(color.equals(Color.WHITE))\r\n            return \"WHITE\";\r\n        if(color.equals(Color.YELLOW))\r\n        {\r\n            return \"YELLOW\";\r\n        } else\r\n        {\r\n            int i = color.getRGB() & 0xffffff;\r\n            return (new StringBuilder()).append(\"0x\").append(Integer.toString(i, 16).toUpperCase()).toString();\r\n        }\r\n    }\r\n\r\n    protected Component getComponent()\r\n    {\r\n        GContainer gcontainer;\r\n        for(gcontainer = getParent(); gcontainer instanceof GObject; gcontainer = ((GObject)gcontainer).getParent());\r\n        return (gcontainer instanceof Component) ? (Component)gcontainer : null;\r\n    }\r\n\r\n    protected void updateEnabledList()\r\n    {\r\n        Component component = getComponent();\r\n        if(component instanceof GCanvas)\r\n            ((GCanvas)component).updateEnabledList();\r\n    }\r\n\r\n    protected void repaint()\r\n    {\r\n        GContainer gcontainer;\r\n        for(gcontainer = getParent(); gcontainer instanceof GObject; gcontainer = ((GObject)gcontainer).getParent());\r\n        if(gcontainer instanceof GCanvas)\r\n            ((GCanvas)gcontainer).conditionalRepaint();\r\n    }\r\n\r\n    private GCompound compoundParent;\r\n    private AffineTransform matrix;\r\n    private Color objectColor;\r\n    private double lineWidth;\r\n    private double xc;\r\n    private double yc;\r\n    private boolean isVisible;\r\n    private boolean mouseListenersEnabled;\r\n    private transient MouseListener mouseListener;\r\n    private transient MouseMotionListener mouseMotionListener;\r\n    private transient ActionListener actionListener;\r\n    private transient GContainer transientParent;\r\n    static final long serialVersionUID = 21L;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/graphics/GObjectList.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   GContainer.java\r\n\r\npackage acm.graphics;\r\n\r\nimport java.awt.Graphics;\r\nimport java.io.Serializable;\r\nimport java.util.ArrayList;\r\n\r\n// Referenced classes of package acm.graphics:\r\n//            GCanvas, GObject, GRectangle, GContainer\r\n\r\nclass GObjectList\r\n    implements Serializable\r\n{\r\n\r\n    public GObjectList(GContainer gcontainer)\r\n    {\r\n        parent = gcontainer;\r\n        contents = new ArrayList();\r\n        if(parent instanceof GCanvas)\r\n            enabledList = new ArrayList();\r\n    }\r\n\r\n    public GObjectList(GContainer gcontainer, GObjectList gobjectlist)\r\n    {\r\n        parent = gcontainer;\r\n        contents = new ArrayList();\r\n        enabledList = new ArrayList();\r\n        int i = gobjectlist.contents.size();\r\n        for(int j = 0; j < i; j++)\r\n            contents.add((GObject)((GObject)gobjectlist.contents.get(j)).clone());\r\n\r\n    }\r\n\r\n    public synchronized void add(GObject gobject)\r\n    {\r\n        if(gobject.getParent() != null)\r\n            gobject.getParent().remove(gobject);\r\n        gobject.setParent(parent);\r\n        contents.add(gobject);\r\n        if(enabledList != null && gobject.areMouseListenersEnabled())\r\n            enabledList.add(gobject);\r\n    }\r\n\r\n    public synchronized void remove(GObject gobject)\r\n    {\r\n        contents.remove(gobject);\r\n        gobject.setParent(null);\r\n        if(enabledList != null)\r\n            enabledList.remove(gobject);\r\n    }\r\n\r\n    public synchronized void removeAll()\r\n    {\r\n        contents.clear();\r\n        if(enabledList != null)\r\n            enabledList.clear();\r\n    }\r\n\r\n    public int getElementCount()\r\n    {\r\n        return contents.size();\r\n    }\r\n\r\n    public GObject getElement(int i)\r\n    {\r\n        return (GObject)contents.get(i);\r\n    }\r\n\r\n    public synchronized GObject getElementAt(double d, double d1, boolean flag)\r\n    {\r\n        ArrayList arraylist = flag ? enabledList : contents;\r\n        for(int i = arraylist.size() - 1; i >= 0; i--)\r\n        {\r\n            GObject gobject = (GObject)arraylist.get(i);\r\n            if(gobject.contains(d, d1))\r\n                return gobject;\r\n        }\r\n\r\n        return null;\r\n    }\r\n\r\n    public synchronized void sendToFront(GObject gobject)\r\n    {\r\n        int i = contents.indexOf(gobject);\r\n        if(i >= 0)\r\n        {\r\n            contents.remove(i);\r\n            contents.add(gobject);\r\n        }\r\n    }\r\n\r\n    public synchronized void sendToBack(GObject gobject)\r\n    {\r\n        int i = contents.indexOf(gobject);\r\n        if(i >= 0)\r\n        {\r\n            contents.remove(i);\r\n            contents.add(0, gobject);\r\n        }\r\n    }\r\n\r\n    public synchronized void sendForward(GObject gobject)\r\n    {\r\n        int i = contents.indexOf(gobject);\r\n        if(i >= 0)\r\n        {\r\n            contents.remove(i);\r\n            contents.add(Math.min(contents.size(), i + 1), gobject);\r\n        }\r\n    }\r\n\r\n    public synchronized void sendBackward(GObject gobject)\r\n    {\r\n        int i = contents.indexOf(gobject);\r\n        if(i >= 0)\r\n        {\r\n            contents.remove(i);\r\n            contents.add(Math.max(0, i - 1), gobject);\r\n        }\r\n    }\r\n\r\n    public synchronized GRectangle getBounds()\r\n    {\r\n        GRectangle grectangle = new GRectangle();\r\n        int i = contents.size();\r\n        for(int j = 0; j < i; j++)\r\n            if(j == 0)\r\n                grectangle = new GRectangle(((GObject)contents.get(j)).getBounds());\r\n            else\r\n                grectangle.add(((GObject)contents.get(j)).getBounds());\r\n\r\n        return grectangle;\r\n    }\r\n\r\n    public synchronized boolean contains(double d, double d1)\r\n    {\r\n        int i = contents.size();\r\n        for(int j = 0; j < i; j++)\r\n            if(((GObject)contents.get(j)).contains(d, d1))\r\n                return true;\r\n\r\n        return false;\r\n    }\r\n\r\n    public synchronized void mapPaint(Graphics g)\r\n    {\r\n        int i = contents.size();\r\n        for(int j = 0; j < i; j++)\r\n            ((GObject)contents.get(j)).paint(g);\r\n\r\n    }\r\n\r\n    public synchronized boolean areMouseListenersEnabled()\r\n    {\r\n        int i = contents.size();\r\n        for(int j = 0; j < i; j++)\r\n        {\r\n            GObject gobject = (GObject)contents.get(j);\r\n            if(gobject.areMouseListenersEnabled())\r\n                return true;\r\n        }\r\n\r\n        return false;\r\n    }\r\n\r\n    public synchronized void updateEnabledList()\r\n    {\r\n        enabledList.clear();\r\n        int i = contents.size();\r\n        for(int j = 0; j < i; j++)\r\n        {\r\n            GObject gobject = (GObject)contents.get(j);\r\n            if(gobject.areMouseListenersEnabled())\r\n                enabledList.add(gobject);\r\n        }\r\n\r\n    }\r\n\r\n    private transient GContainer parent;\r\n    private ArrayList contents;\r\n    private ArrayList enabledList;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/graphics/GOval.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   GOval.java\r\n\r\npackage acm.graphics;\r\n\r\nimport acm.util.ErrorException;\r\nimport java.awt.*;\r\nimport java.awt.geom.*;\r\n\r\n// Referenced classes of package acm.graphics:\r\n//            GObject, GRectangle, GDimension, GFillable, \r\n//            GResizable\r\n\r\npublic class GOval extends GObject\r\n    implements GFillable, GResizable\r\n{\r\n\r\n    public GOval(double d, double d1)\r\n    {\r\n        this(0.0D, 0.0D, d, d1);\r\n    }\r\n\r\n    public GOval(double d, double d1, double d2, double d3)\r\n    {\r\n        frameWidth = d2;\r\n        frameHeight = d3;\r\n        setLocation(d, d1);\r\n    }\r\n\r\n    public GRectangle getBounds()\r\n    {\r\n        Object obj = new java.awt.geom.Ellipse2D.Double(0.0D, 0.0D, frameWidth, frameHeight);\r\n        AffineTransform affinetransform = getMatrix();\r\n        if(affinetransform != null)\r\n            obj = affinetransform.createTransformedShape(((Shape) (obj)));\r\n        java.awt.Rectangle rectangle = ((Shape) (obj)).getBounds();\r\n        return new GRectangle(rectangle.getX() + getX(), rectangle.getY() + getY(), rectangle.getWidth(), rectangle.getHeight());\r\n    }\r\n\r\n    public boolean contains(double d, double d1)\r\n    {\r\n        Object obj = new java.awt.geom.Ellipse2D.Double(0.0D, 0.0D, frameWidth, frameHeight);\r\n        AffineTransform affinetransform = getMatrix();\r\n        if(affinetransform != null)\r\n            obj = affinetransform.createTransformedShape(((Shape) (obj)));\r\n        return ((Shape) (obj)).contains(d - getX(), d1 - getY());\r\n    }\r\n\r\n    protected void paint2d(Graphics2D graphics2d)\r\n    {\r\n        java.awt.geom.Ellipse2D.Double double1 = new java.awt.geom.Ellipse2D.Double(0.0D, 0.0D, frameWidth, frameHeight);\r\n        if(isFilled())\r\n        {\r\n            graphics2d.setColor(getFillColor());\r\n            graphics2d.fill(double1);\r\n            graphics2d.setColor(getColor());\r\n        }\r\n        graphics2d.draw(double1);\r\n    }\r\n\r\n    public void setFilled(boolean flag)\r\n    {\r\n        isFilled = flag;\r\n        repaint();\r\n    }\r\n\r\n    public boolean isFilled()\r\n    {\r\n        return isFilled;\r\n    }\r\n\r\n    public void setFillColor(Color color)\r\n    {\r\n        fillColor = color;\r\n        repaint();\r\n    }\r\n\r\n    public Color getFillColor()\r\n    {\r\n        return fillColor != null ? fillColor : getColor();\r\n    }\r\n\r\n    public void setSize(double d, double d1)\r\n    {\r\n        if(getMatrix() != null)\r\n        {\r\n            throw new ErrorException(\"setSize: Object has been transformed\");\r\n        } else\r\n        {\r\n            frameWidth = d;\r\n            frameHeight = d1;\r\n            repaint();\r\n            return;\r\n        }\r\n    }\r\n\r\n    public final void setSize(GDimension gdimension)\r\n    {\r\n        setSize(gdimension.getWidth(), gdimension.getHeight());\r\n    }\r\n\r\n    public GDimension getSize()\r\n    {\r\n        return new GDimension(frameWidth, frameHeight);\r\n    }\r\n\r\n    public void setBounds(double d, double d1, double d2, double d3)\r\n    {\r\n        if(getMatrix() != null)\r\n        {\r\n            throw new ErrorException(\"setBounds: Object has been transformed\");\r\n        } else\r\n        {\r\n            frameWidth = d2;\r\n            frameHeight = d3;\r\n            setLocation(d, d1);\r\n            return;\r\n        }\r\n    }\r\n\r\n    public final void setBounds(GRectangle grectangle)\r\n    {\r\n        if(getMatrix() != null)\r\n        {\r\n            throw new ErrorException(\"setBounds: Object has been transformed\");\r\n        } else\r\n        {\r\n            setBounds(grectangle.getX(), grectangle.getY(), grectangle.getWidth(), grectangle.getHeight());\r\n            return;\r\n        }\r\n    }\r\n\r\n    private double frameWidth;\r\n    private double frameHeight;\r\n    private boolean isFilled;\r\n    private Color fillColor;\r\n    static final long serialVersionUID = 21L;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/graphics/GPen.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   GPen.java\r\n\r\npackage acm.graphics;\r\n\r\nimport acm.util.*;\r\nimport java.awt.*;\r\n\r\n// Referenced classes of package acm.graphics:\r\n//            GObject, PathList, DrawLineElement, SetLocationElement, \r\n//            SetColorElement, StartRegionElement, EndRegionElement, PathState, \r\n//            PenImage, GRectangle\r\n\r\npublic class GPen extends GObject\r\n{\r\n\r\n    public GPen()\r\n    {\r\n        penVisible = false;\r\n        path = new PathList();\r\n        animator = new Animator();\r\n        setSpeed(1.0D);\r\n        erasePath();\r\n    }\r\n\r\n    public GPen(double d, double d1)\r\n    {\r\n        this();\r\n        setLocation(d, d1);\r\n    }\r\n\r\n    public void erasePath()\r\n    {\r\n        path.clear();\r\n        regionOpen = false;\r\n        regionStarted = false;\r\n        repaint();\r\n    }\r\n\r\n    public void setLocation(double d, double d1)\r\n    {\r\n        if(regionStarted)\r\n        {\r\n            throw new ErrorException(\"It is illegal to move the pen while you are defining a filled region.\");\r\n        } else\r\n        {\r\n            super.setLocation(d, d1);\r\n            animator.delay();\r\n            return;\r\n        }\r\n    }\r\n\r\n    public void drawLine(double d, double d1)\r\n    {\r\n        double d2 = getX();\r\n        double d3 = getY();\r\n        if(regionStarted)\r\n        {\r\n            path.add(new DrawLineElement(d, d1));\r\n        } else\r\n        {\r\n            path.add(new SetLocationElement(d2, d3), new DrawLineElement(d, d1));\r\n            regionStarted = regionOpen;\r\n        }\r\n        super.setLocation(d2 + d, d3 + d1);\r\n        animator.delay();\r\n    }\r\n\r\n    public final void drawPolarLine(double d, double d1)\r\n    {\r\n        double d2 = (d1 * 3.1415926535897931D) / 180D;\r\n        drawLine(d * Math.cos(d2), -d * Math.sin(d2));\r\n    }\r\n\r\n    public void setColor(Color color)\r\n    {\r\n        if(regionStarted)\r\n        {\r\n            throw new ErrorException(\"It is illegal to change the color while you are defining a filled region.\");\r\n        } else\r\n        {\r\n            path.add(new SetColorElement(color));\r\n            super.setColor(color);\r\n            return;\r\n        }\r\n    }\r\n\r\n    public void setFillColor(Color color)\r\n    {\r\n        if(regionStarted)\r\n        {\r\n            throw new ErrorException(\"It is illegal to change the fill color while you are defining a filled region.\");\r\n        } else\r\n        {\r\n            fillColor = color;\r\n            return;\r\n        }\r\n    }\r\n\r\n    public Color getFillColor()\r\n    {\r\n        return fillColor != null ? fillColor : getColor();\r\n    }\r\n\r\n    public void startFilledRegion()\r\n    {\r\n        if(regionOpen)\r\n        {\r\n            throw new ErrorException(\"You are already filling a region.\");\r\n        } else\r\n        {\r\n            regionOpen = true;\r\n            regionStarted = false;\r\n            path.add(new StartRegionElement(fillColor));\r\n            return;\r\n        }\r\n    }\r\n\r\n    public void endFilledRegion()\r\n    {\r\n        if(!regionOpen)\r\n        {\r\n            throw new ErrorException(\"You need to call startFilledRegion before you call endFilledRegion.\");\r\n        } else\r\n        {\r\n            regionOpen = false;\r\n            regionStarted = false;\r\n            path.add(new EndRegionElement());\r\n            repaint();\r\n            return;\r\n        }\r\n    }\r\n\r\n    public void showPen()\r\n    {\r\n        penVisible = true;\r\n        repaint();\r\n        animator.delay();\r\n    }\r\n\r\n    public void hidePen()\r\n    {\r\n        penVisible = false;\r\n        repaint();\r\n        animator.delay();\r\n    }\r\n\r\n    public boolean isPenVisible()\r\n    {\r\n        return penVisible;\r\n    }\r\n\r\n    public void setSpeed(double d)\r\n    {\r\n        animator.setSpeed(d);\r\n    }\r\n\r\n    public double getSpeed()\r\n    {\r\n        return animator.getSpeed();\r\n    }\r\n\r\n    protected void paint2d(Graphics2D graphics2d)\r\n    {\r\n        graphics2d = (Graphics2D)graphics2d.create();\r\n        Color color = getObjectColor();\r\n        if(color != null)\r\n            graphics2d.setColor(color);\r\n        PathState pathstate = new PathState();\r\n        path.mapPaint(graphics2d, pathstate);\r\n        if(penVisible)\r\n            drawPen(graphics2d);\r\n    }\r\n\r\n    public GRectangle getBounds()\r\n    {\r\n        PathState pathstate = new PathState();\r\n        return path.getBounds(pathstate);\r\n    }\r\n\r\n    public boolean contains(double d, double d1)\r\n    {\r\n        return false;\r\n    }\r\n\r\n    public void setPenImage(Image image)\r\n    {\r\n        penImage = MediaTools.loadImage(image);\r\n    }\r\n\r\n    public Image getPenImage()\r\n    {\r\n        if(penImage == null)\r\n            penImage = PenImage.getImage();\r\n        return penImage;\r\n    }\r\n\r\n    protected void drawPen(Graphics g)\r\n    {\r\n        java.awt.Component component = getComponent();\r\n        if(component == null)\r\n            return;\r\n        if(penImage == null)\r\n            penImage = PenImage.getImage();\r\n        int i = penImage.getWidth(component);\r\n        int j = penImage.getHeight(component);\r\n        int k = (int)Math.round(getX());\r\n        int l = (int)Math.round(getY());\r\n        g.drawImage(penImage, k - i / 2, l - j / 2, component);\r\n    }\r\n\r\n    protected Rectangle getPenBounds()\r\n    {\r\n        java.awt.Component component = getComponent();\r\n        if(component == null)\r\n            return new Rectangle();\r\n        if(penImage == null)\r\n            penImage = PenImage.getImage();\r\n        int i = penImage.getWidth(component);\r\n        int j = penImage.getHeight(component);\r\n        int k = (int)Math.round(getX());\r\n        int l = (int)Math.round(getY());\r\n        return new Rectangle(k - i / 2, l - j / 2, i, j);\r\n    }\r\n\r\n    private Animator animator;\r\n    private boolean regionOpen;\r\n    private boolean regionStarted;\r\n    private boolean penVisible;\r\n    private PathList path;\r\n    private Image penImage;\r\n    private Color fillColor;\r\n    static final long serialVersionUID = 21L;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/graphics/GPoint.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   GPoint.java\r\n\r\npackage acm.graphics;\r\n\r\nimport java.awt.Point;\r\nimport java.io.Serializable;\r\n\r\npublic class GPoint\r\n    implements Serializable\r\n{\r\n\r\n    public GPoint()\r\n    {\r\n        this(0.0D, 0.0D);\r\n    }\r\n\r\n    public GPoint(double d, double d1)\r\n    {\r\n        xc = d;\r\n        yc = d1;\r\n    }\r\n\r\n    public GPoint(GPoint gpoint)\r\n    {\r\n        this(gpoint.xc, gpoint.yc);\r\n    }\r\n\r\n    public GPoint(Point point)\r\n    {\r\n        this(point.x, point.y);\r\n    }\r\n\r\n    public double getX()\r\n    {\r\n        return xc;\r\n    }\r\n\r\n    public double getY()\r\n    {\r\n        return yc;\r\n    }\r\n\r\n    public void setLocation(double d, double d1)\r\n    {\r\n        xc = d;\r\n        yc = d1;\r\n    }\r\n\r\n    public void setLocation(GPoint gpoint)\r\n    {\r\n        setLocation(gpoint.xc, gpoint.yc);\r\n    }\r\n\r\n    public GPoint getLocation()\r\n    {\r\n        return new GPoint(xc, yc);\r\n    }\r\n\r\n    public void translate(double d, double d1)\r\n    {\r\n        xc += d;\r\n        yc += d1;\r\n    }\r\n\r\n    public Point toPoint()\r\n    {\r\n        return new Point((int)Math.round(xc), (int)Math.round(yc));\r\n    }\r\n\r\n    public int hashCode()\r\n    {\r\n        return (new Float((float)xc)).hashCode() ^ 37 * (new Float((float)yc)).hashCode();\r\n    }\r\n\r\n    public boolean equals(Object obj)\r\n    {\r\n        if(!(obj instanceof GPoint))\r\n        {\r\n            return false;\r\n        } else\r\n        {\r\n            GPoint gpoint = (GPoint)obj;\r\n            return (float)xc == (float)gpoint.xc && (float)yc == (float)gpoint.yc;\r\n        }\r\n    }\r\n\r\n    public String toString()\r\n    {\r\n        return (new StringBuilder()).append(\"(\").append((float)xc).append(\", \").append((float)yc).append(\")\").toString();\r\n    }\r\n\r\n    private double xc;\r\n    private double yc;\r\n    static final long serialVersionUID = 21L;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/graphics/GPolygon.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   GPolygon.java\r\n\r\npackage acm.graphics;\r\n\r\nimport acm.util.ErrorException;\r\nimport java.awt.Color;\r\nimport java.awt.Graphics2D;\r\nimport java.awt.geom.Path2D;\r\n\r\n// Referenced classes of package acm.graphics:\r\n//            GObject, VertexList, GRectangle, GFillable, \r\n//            GMath, GPoint\r\n\r\npublic class GPolygon extends GObject\r\n    implements GFillable\r\n{\r\n\r\n    public GPolygon()\r\n    {\r\n        vertices = new VertexList();\r\n        clear();\r\n    }\r\n\r\n    public GPolygon(double d, double d1)\r\n    {\r\n        this();\r\n        setLocation(d, d1);\r\n    }\r\n\r\n    public GPolygon(GPoint agpoint[])\r\n    {\r\n        this();\r\n        vertices.add(agpoint);\r\n        markAsComplete();\r\n    }\r\n\r\n    public void addVertex(double d, double d1)\r\n    {\r\n        if(complete)\r\n        {\r\n            throw new ErrorException(\"You can't add vertices to a GPolygon that has been marked as complete.\");\r\n        } else\r\n        {\r\n            vertices.addVertex(d, d1);\r\n            return;\r\n        }\r\n    }\r\n\r\n    public void addEdge(double d, double d1)\r\n    {\r\n        if(complete)\r\n        {\r\n            throw new ErrorException(\"You can't add edges to a GPolygon that has been marked as complete.\");\r\n        } else\r\n        {\r\n            vertices.addEdge(d, d1);\r\n            return;\r\n        }\r\n    }\r\n\r\n    public final void addPolarEdge(double d, double d1)\r\n    {\r\n        if(complete)\r\n        {\r\n            throw new ErrorException(\"You can't add edges to a GPolygon that has been marked as complete.\");\r\n        } else\r\n        {\r\n            vertices.addEdge(d * GMath.cosDegrees(d1), -d * GMath.sinDegrees(d1));\r\n            return;\r\n        }\r\n    }\r\n\r\n    public void addArc(double d, double d1, double d2, double d3)\r\n    {\r\n        if(complete)\r\n        {\r\n            throw new ErrorException(\"You can't add edges to a GPolygon that has been marked as complete.\");\r\n        } else\r\n        {\r\n            vertices.addArc(d, d1, d2, d3);\r\n            return;\r\n        }\r\n    }\r\n\r\n    public GPoint getCurrentPoint()\r\n    {\r\n        return vertices.getCurrentPoint();\r\n    }\r\n\r\n    public void setFilled(boolean flag)\r\n    {\r\n        isFilled = flag;\r\n        repaint();\r\n    }\r\n\r\n    public boolean isFilled()\r\n    {\r\n        return isFilled;\r\n    }\r\n\r\n    public void setFillColor(Color color)\r\n    {\r\n        fillColor = color;\r\n        repaint();\r\n    }\r\n\r\n    public Color getFillColor()\r\n    {\r\n        return fillColor != null ? fillColor : getColor();\r\n    }\r\n\r\n    public GRectangle getBounds()\r\n    {\r\n        GRectangle grectangle = vertices.getBounds(getMatrix());\r\n        return new GRectangle(grectangle.getX() + getX(), grectangle.getY() + getY(), grectangle.getWidth(), grectangle.getHeight());\r\n    }\r\n\r\n    public boolean contains(double d, double d1)\r\n    {\r\n        return vertices.contains(d - getX(), d1 - getY(), getMatrix());\r\n    }\r\n\r\n    protected void paint2d(Graphics2D graphics2d)\r\n    {\r\n        int i = vertices.size();\r\n        java.awt.geom.Path2D.Double double1 = new java.awt.geom.Path2D.Double(0);\r\n        double1.moveTo(vertices.get(0).getX(), vertices.get(0).getY());\r\n        for(int j = 0; j < i; j++)\r\n            double1.lineTo(vertices.get(j).getX(), vertices.get(j).getY());\r\n\r\n        double1.lineTo(vertices.get(0).getX(), vertices.get(0).getY());\r\n        if(isFilled())\r\n        {\r\n            graphics2d.setColor(getFillColor());\r\n            graphics2d.fill(double1);\r\n            graphics2d.setColor(getColor());\r\n        }\r\n        graphics2d.draw(double1);\r\n    }\r\n\r\n    public void recenter()\r\n    {\r\n        vertices.recenter();\r\n    }\r\n\r\n    public Object clone()\r\n    {\r\n        GPolygon gpolygon;\r\n        gpolygon = (GPolygon)super.clone();\r\n        gpolygon.vertices = new VertexList(gpolygon.vertices);\r\n        return gpolygon;\r\n        Exception exception;\r\n        exception;\r\n        throw new ErrorException(\"Impossible exception\");\r\n    }\r\n\r\n    protected void markAsComplete()\r\n    {\r\n        complete = true;\r\n    }\r\n\r\n    protected void clear()\r\n    {\r\n        if(complete)\r\n        {\r\n            throw new ErrorException(\"You can't clear a GPolygon that has been marked as complete.\");\r\n        } else\r\n        {\r\n            vertices.clear();\r\n            return;\r\n        }\r\n    }\r\n\r\n    private VertexList vertices;\r\n    private boolean complete;\r\n    private boolean isFilled;\r\n    private Color fillColor;\r\n    static final long serialVersionUID = 21L;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/graphics/GRect.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   GRect.java\r\n\r\npackage acm.graphics;\r\n\r\nimport acm.util.ErrorException;\r\nimport java.awt.*;\r\nimport java.awt.geom.AffineTransform;\r\nimport java.awt.geom.Rectangle2D;\r\n\r\n// Referenced classes of package acm.graphics:\r\n//            GObject, GDimension, GRectangle, GFillable, \r\n//            GResizable\r\n\r\npublic class GRect extends GObject\r\n    implements GFillable, GResizable\r\n{\r\n\r\n    public GRect(double d, double d1)\r\n    {\r\n        this(0.0D, 0.0D, d, d1);\r\n    }\r\n\r\n    public GRect(double d, double d1, double d2, double d3)\r\n    {\r\n        frameWidth = d2;\r\n        frameHeight = d3;\r\n        setLocation(d, d1);\r\n    }\r\n\r\n    protected void paint2d(Graphics2D graphics2d)\r\n    {\r\n        java.awt.geom.Rectangle2D.Double double1 = new java.awt.geom.Rectangle2D.Double(0.0D, 0.0D, frameWidth, frameHeight);\r\n        if(isFilled())\r\n        {\r\n            graphics2d.setColor(getFillColor());\r\n            graphics2d.fill(double1);\r\n            graphics2d.setColor(getColor());\r\n        }\r\n        graphics2d.draw(double1);\r\n    }\r\n\r\n    public void setFilled(boolean flag)\r\n    {\r\n        isFilled = flag;\r\n        repaint();\r\n    }\r\n\r\n    public boolean isFilled()\r\n    {\r\n        return isFilled;\r\n    }\r\n\r\n    public void setFillColor(Color color)\r\n    {\r\n        fillColor = color;\r\n        repaint();\r\n    }\r\n\r\n    public Color getFillColor()\r\n    {\r\n        return fillColor != null ? fillColor : getColor();\r\n    }\r\n\r\n    public void setSize(double d, double d1)\r\n    {\r\n        if(getMatrix() != null)\r\n        {\r\n            throw new ErrorException(\"setSize: Object has been transformed\");\r\n        } else\r\n        {\r\n            frameWidth = d;\r\n            frameHeight = d1;\r\n            repaint();\r\n            return;\r\n        }\r\n    }\r\n\r\n    public final void setSize(GDimension gdimension)\r\n    {\r\n        setSize(gdimension.getWidth(), gdimension.getHeight());\r\n    }\r\n\r\n    public GDimension getSize()\r\n    {\r\n        return new GDimension(frameWidth, frameHeight);\r\n    }\r\n\r\n    public void setBounds(double d, double d1, double d2, double d3)\r\n    {\r\n        if(getMatrix() != null)\r\n        {\r\n            throw new ErrorException(\"setBounds: Object has been transformed\");\r\n        } else\r\n        {\r\n            frameWidth = d2;\r\n            frameHeight = d3;\r\n            setLocation(d, d1);\r\n            return;\r\n        }\r\n    }\r\n\r\n    public final void setBounds(GRectangle grectangle)\r\n    {\r\n        if(getMatrix() != null)\r\n        {\r\n            throw new ErrorException(\"setBounds: Object has been transformed\");\r\n        } else\r\n        {\r\n            setBounds(grectangle.getX(), grectangle.getY(), grectangle.getWidth(), grectangle.getHeight());\r\n            return;\r\n        }\r\n    }\r\n\r\n    public GRectangle getBounds()\r\n    {\r\n        Object obj = new java.awt.geom.Rectangle2D.Double(0.0D, 0.0D, frameWidth, frameHeight);\r\n        AffineTransform affinetransform = getMatrix();\r\n        if(affinetransform != null)\r\n            obj = affinetransform.createTransformedShape(((Shape) (obj))).getBounds();\r\n        Rectangle2D rectangle2d = (Rectangle2D)obj;\r\n        return new GRectangle(rectangle2d.getX() + getX(), rectangle2d.getY() + getY(), rectangle2d.getWidth(), rectangle2d.getHeight());\r\n    }\r\n\r\n    public boolean contains(double d, double d1)\r\n    {\r\n        Object obj = new java.awt.geom.Rectangle2D.Double(0.0D, 0.0D, frameWidth, frameHeight);\r\n        AffineTransform affinetransform = getMatrix();\r\n        if(affinetransform != null)\r\n            obj = affinetransform.createTransformedShape(((Shape) (obj)));\r\n        return ((Shape) (obj)).contains(d - getX(), d1 - getY());\r\n    }\r\n\r\n    protected double getFrameWidth()\r\n    {\r\n        return frameWidth;\r\n    }\r\n\r\n    protected double getFrameHeight()\r\n    {\r\n        return frameHeight;\r\n    }\r\n\r\n    private double frameWidth;\r\n    private double frameHeight;\r\n    private boolean isFilled;\r\n    private Color fillColor;\r\n    static final long serialVersionUID = 21L;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/graphics/GRectangle.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   GRectangle.java\r\n\r\npackage acm.graphics;\r\n\r\nimport java.awt.Rectangle;\r\nimport java.io.Serializable;\r\n\r\n// Referenced classes of package acm.graphics:\r\n//            GPoint, GDimension, GMath\r\n\r\npublic class GRectangle\r\n    implements Serializable\r\n{\r\n\r\n    public GRectangle()\r\n    {\r\n        this(0.0D, 0.0D, 0.0D, 0.0D);\r\n    }\r\n\r\n    public GRectangle(double d, double d1, double d2, double d3)\r\n    {\r\n        xc = d;\r\n        yc = d1;\r\n        width = d2;\r\n        height = d3;\r\n    }\r\n\r\n    public GRectangle(double d, double d1)\r\n    {\r\n        this(0.0D, 0.0D, d, d1);\r\n    }\r\n\r\n    public GRectangle(GPoint gpoint, GDimension gdimension)\r\n    {\r\n        this(gpoint.getX(), gpoint.getY(), gdimension.getWidth(), gdimension.getHeight());\r\n    }\r\n\r\n    public GRectangle(GPoint gpoint)\r\n    {\r\n        this(gpoint.getX(), gpoint.getY(), 0.0D, 0.0D);\r\n    }\r\n\r\n    public GRectangle(GDimension gdimension)\r\n    {\r\n        this(0.0D, 0.0D, gdimension.getWidth(), gdimension.getHeight());\r\n    }\r\n\r\n    public GRectangle(GRectangle grectangle)\r\n    {\r\n        this(grectangle.xc, grectangle.yc, grectangle.width, grectangle.height);\r\n    }\r\n\r\n    public double getX()\r\n    {\r\n        return xc;\r\n    }\r\n\r\n    public double getY()\r\n    {\r\n        return yc;\r\n    }\r\n\r\n    public double getWidth()\r\n    {\r\n        return width;\r\n    }\r\n\r\n    public double getHeight()\r\n    {\r\n        return height;\r\n    }\r\n\r\n    public void setBounds(double d, double d1, double d2, double d3)\r\n    {\r\n        xc = d;\r\n        yc = d1;\r\n        width = d2;\r\n        height = d3;\r\n    }\r\n\r\n    public void setBounds(GPoint gpoint, GDimension gdimension)\r\n    {\r\n        setBounds(gpoint.getX(), gpoint.getY(), gdimension.getWidth(), gdimension.getHeight());\r\n    }\r\n\r\n    public void setBounds(GRectangle grectangle)\r\n    {\r\n        setBounds(grectangle.xc, grectangle.yc, grectangle.width, grectangle.height);\r\n    }\r\n\r\n    public GRectangle getBounds()\r\n    {\r\n        return new GRectangle(this);\r\n    }\r\n\r\n    public void setLocation(double d, double d1)\r\n    {\r\n        xc = d;\r\n        yc = d1;\r\n    }\r\n\r\n    public void setLocation(GPoint gpoint)\r\n    {\r\n        setLocation(gpoint.getX(), gpoint.getY());\r\n    }\r\n\r\n    public GPoint getLocation()\r\n    {\r\n        return new GPoint(xc, yc);\r\n    }\r\n\r\n    public void translate(double d, double d1)\r\n    {\r\n        xc += d;\r\n        yc += d1;\r\n    }\r\n\r\n    public void setSize(double d, double d1)\r\n    {\r\n        width = d;\r\n        height = d1;\r\n    }\r\n\r\n    public void setSize(GDimension gdimension)\r\n    {\r\n        setSize(gdimension.getWidth(), gdimension.getHeight());\r\n    }\r\n\r\n    public GDimension getSize()\r\n    {\r\n        return new GDimension(width, height);\r\n    }\r\n\r\n    public void grow(double d, double d1)\r\n    {\r\n        xc -= d;\r\n        yc -= d1;\r\n        width += 2D * d;\r\n        height += 2D * d1;\r\n    }\r\n\r\n    public boolean isEmpty()\r\n    {\r\n        return width <= 0.0D || height <= 0.0D;\r\n    }\r\n\r\n    public boolean contains(double d, double d1)\r\n    {\r\n        return d >= xc && d1 >= yc && d < xc + width && d1 < yc + height;\r\n    }\r\n\r\n    public boolean contains(GPoint gpoint)\r\n    {\r\n        return contains(gpoint.getX(), gpoint.getY());\r\n    }\r\n\r\n    public boolean intersects(GRectangle grectangle)\r\n    {\r\n        GRectangle grectangle1 = this;\r\n        if(grectangle1.xc > grectangle.xc + grectangle.width)\r\n            return false;\r\n        if(grectangle1.yc > grectangle.yc + grectangle.height)\r\n            return false;\r\n        if(grectangle.xc > grectangle1.xc + grectangle1.width)\r\n            return false;\r\n        return grectangle.yc <= grectangle1.yc + grectangle1.height;\r\n    }\r\n\r\n    public GRectangle intersection(GRectangle grectangle)\r\n    {\r\n        GRectangle grectangle1 = this;\r\n        double d = Math.max(grectangle1.xc, grectangle.xc);\r\n        double d1 = Math.max(grectangle1.yc, grectangle.yc);\r\n        double d2 = Math.min(grectangle1.xc + grectangle1.width, grectangle.xc + grectangle.width);\r\n        double d3 = Math.min(grectangle1.yc + grectangle1.height, grectangle.yc + grectangle.height);\r\n        return new GRectangle(d, d1, d2 - d, d3 - d1);\r\n    }\r\n\r\n    public GRectangle union(GRectangle grectangle)\r\n    {\r\n        if(isEmpty())\r\n            return new GRectangle(grectangle);\r\n        if(grectangle.isEmpty())\r\n        {\r\n            return new GRectangle(this);\r\n        } else\r\n        {\r\n            GRectangle grectangle1 = this;\r\n            double d = Math.min(grectangle1.xc, grectangle.xc);\r\n            double d1 = Math.min(grectangle1.yc, grectangle.yc);\r\n            double d2 = Math.max(grectangle1.xc + grectangle1.width, grectangle.xc + grectangle.width);\r\n            double d3 = Math.max(grectangle1.yc + grectangle1.height, grectangle.yc + grectangle.height);\r\n            return new GRectangle(d, d1, d2 - d, d3 - d1);\r\n        }\r\n    }\r\n\r\n    public void add(GRectangle grectangle)\r\n    {\r\n        if(grectangle.isEmpty())\r\n            return;\r\n        if(isEmpty())\r\n        {\r\n            setBounds(grectangle);\r\n            return;\r\n        } else\r\n        {\r\n            double d = Math.max(xc + width, grectangle.xc + grectangle.width);\r\n            double d1 = Math.max(yc + height, grectangle.yc + grectangle.height);\r\n            xc = Math.min(grectangle.xc, xc);\r\n            yc = Math.min(grectangle.yc, yc);\r\n            width = d - xc;\r\n            height = d1 - yc;\r\n            return;\r\n        }\r\n    }\r\n\r\n    public void add(double d, double d1)\r\n    {\r\n        if(isEmpty())\r\n        {\r\n            setBounds(d, d1, 0.0D, 0.0D);\r\n            return;\r\n        } else\r\n        {\r\n            double d2 = Math.max(d + width, d);\r\n            double d3 = Math.max(d1 + height, d1);\r\n            xc = Math.min(d, xc);\r\n            yc = Math.min(d1, yc);\r\n            width = d2 - xc;\r\n            height = d3 - yc;\r\n            return;\r\n        }\r\n    }\r\n\r\n    public Rectangle toRectangle()\r\n    {\r\n        return new Rectangle(GMath.round(xc), GMath.round(yc), GMath.round(width), GMath.round(height));\r\n    }\r\n\r\n    public int hashCode()\r\n    {\r\n        int i = (new Float((float)xc)).hashCode();\r\n        i = 37 * i ^ (new Float((float)yc)).hashCode();\r\n        i = 37 * i ^ (new Float((float)width)).hashCode();\r\n        i = 37 * i ^ (new Float((float)height)).hashCode();\r\n        return i;\r\n    }\r\n\r\n    public boolean equals(Object obj)\r\n    {\r\n        if(!(obj instanceof GRectangle))\r\n            return false;\r\n        GRectangle grectangle = (GRectangle)obj;\r\n        if((float)xc != (float)grectangle.xc)\r\n            return false;\r\n        if((float)yc != (float)grectangle.yc)\r\n            return false;\r\n        if((float)width != (float)grectangle.width)\r\n            return false;\r\n        return (float)height == (float)grectangle.height;\r\n    }\r\n\r\n    public String toString()\r\n    {\r\n        return (new StringBuilder()).append(\"[\").append((float)xc).append(\", \").append((float)yc).append(\", \").append((float)width).append(\"x\").append((float)height).append(\"]\").toString();\r\n    }\r\n\r\n    private double xc;\r\n    private double yc;\r\n    private double width;\r\n    private double height;\r\n    static final long serialVersionUID = 21L;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/graphics/GResizable.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   GResizable.java\r\n\r\npackage acm.graphics;\r\n\r\n\r\n// Referenced classes of package acm.graphics:\r\n//            GDimension, GRectangle\r\n\r\npublic interface GResizable\r\n{\r\n\r\n    public abstract void setSize(double d, double d1);\r\n\r\n    public abstract void setSize(GDimension gdimension);\r\n\r\n    public abstract void setBounds(double d, double d1, double d2, double d3);\r\n\r\n    public abstract void setBounds(GRectangle grectangle);\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/graphics/GRoundRect.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   GRoundRect.java\r\n\r\npackage acm.graphics;\r\n\r\nimport java.awt.Graphics2D;\r\nimport java.awt.geom.RoundRectangle2D;\r\n\r\n// Referenced classes of package acm.graphics:\r\n//            GRect\r\n\r\npublic class GRoundRect extends GRect\r\n{\r\n\r\n    public GRoundRect(double d, double d1)\r\n    {\r\n        this(0.0D, 0.0D, d, d1, 10D);\r\n    }\r\n\r\n    public GRoundRect(double d, double d1, double d2, double d3)\r\n    {\r\n        this(d, d1, d2, d3, 10D);\r\n    }\r\n\r\n    public GRoundRect(double d, double d1, double d2, double d3, double d4)\r\n    {\r\n        this(d, d1, d2, d3, d4, d4);\r\n    }\r\n\r\n    public GRoundRect(double d, double d1, double d2, double d3, double d4, double d5)\r\n    {\r\n        super(d, d1, d2, d3);\r\n        aWidth = d4;\r\n        aHeight = d5;\r\n    }\r\n\r\n    public double getArcWidth()\r\n    {\r\n        return aWidth;\r\n    }\r\n\r\n    public double getArcHeight()\r\n    {\r\n        return aHeight;\r\n    }\r\n\r\n    protected void paint2d(Graphics2D graphics2d)\r\n    {\r\n        java.awt.geom.RoundRectangle2D.Double double1 = new java.awt.geom.RoundRectangle2D.Double(0.0D, 0.0D, getFrameWidth(), getFrameHeight(), aWidth, aHeight);\r\n        if(isFilled())\r\n        {\r\n            graphics2d.setColor(getFillColor());\r\n            graphics2d.fill(double1);\r\n            graphics2d.setColor(getColor());\r\n        }\r\n        graphics2d.draw(double1);\r\n    }\r\n\r\n    public static final double DEFAULT_ARC = 10D;\r\n    private double aWidth;\r\n    private double aHeight;\r\n    static final long serialVersionUID = 21L;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/graphics/GScalable.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   GScalable.java\r\n\r\npackage acm.graphics;\r\n\r\n\r\npublic interface GScalable\r\n{\r\n\r\n    public abstract void scale(double d, double d1);\r\n\r\n    public abstract void scale(double d);\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/graphics/GTurtle.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   GTurtle.java\r\n\r\npackage acm.graphics;\r\n\r\nimport acm.program.GraphicsProgram;\r\nimport acm.program.Program;\r\nimport acm.util.MediaTools;\r\nimport java.awt.*;\r\n\r\n// Referenced classes of package acm.graphics:\r\n//            GObject, GPen, GMath, GRectangle\r\n\r\npublic class GTurtle extends GObject\r\n{\r\n\r\n    public GTurtle()\r\n    {\r\n        setTurtleSize(68);\r\n        pen = new GPen();\r\n        turtleVisible = true;\r\n        penDown = false;\r\n        direction = 0.0D;\r\n        pen.setSpeed(0.5D);\r\n        erasePath();\r\n    }\r\n\r\n    public GTurtle(double d, double d1)\r\n    {\r\n        this();\r\n        setLocation(d, d1);\r\n    }\r\n\r\n    public void erasePath()\r\n    {\r\n        pen.erasePath();\r\n        repaint();\r\n    }\r\n\r\n    public void setLocation(double d, double d1)\r\n    {\r\n        super.setLocation(d, d1);\r\n        pen.setLocation(d, d1);\r\n    }\r\n\r\n    public void move(double d, double d1)\r\n    {\r\n        if(penDown)\r\n            pen.drawLine(d, d1);\r\n        else\r\n            pen.move(d, d1);\r\n        super.move(d, d1);\r\n    }\r\n\r\n    public void forward(double d)\r\n    {\r\n        double d1 = d * GMath.cosDegrees(direction);\r\n        double d2 = -d * GMath.sinDegrees(direction);\r\n        move(d1, d2);\r\n    }\r\n\r\n    public void forward()\r\n    {\r\n        forward(getTurtleSize());\r\n    }\r\n\r\n    public void setDirection(double d)\r\n    {\r\n        direction = d;\r\n    }\r\n\r\n    public double getDirection()\r\n    {\r\n        return direction;\r\n    }\r\n\r\n    public void left(double d)\r\n    {\r\n        turn(d);\r\n    }\r\n\r\n    public void right(double d)\r\n    {\r\n        turn(-d);\r\n    }\r\n\r\n    public boolean isPenDown()\r\n    {\r\n        return penDown;\r\n    }\r\n\r\n    public void penDown()\r\n    {\r\n        penDown = true;\r\n    }\r\n\r\n    public void penUp()\r\n    {\r\n        penDown = false;\r\n    }\r\n\r\n    public void setColor(Color color)\r\n    {\r\n        pen.setColor(color);\r\n        super.setColor(color);\r\n    }\r\n\r\n    public boolean isTurtleVisible()\r\n    {\r\n        return turtleVisible;\r\n    }\r\n\r\n    public void showTurtle()\r\n    {\r\n        setTurtleVisible(true);\r\n    }\r\n\r\n    public void hideTurtle()\r\n    {\r\n        setTurtleVisible(false);\r\n    }\r\n\r\n    public void setSpeed(double d)\r\n    {\r\n        pen.setSpeed(d);\r\n    }\r\n\r\n    public double getSpeed()\r\n    {\r\n        return pen.getSpeed();\r\n    }\r\n\r\n    public void setTurtleSize(int i)\r\n    {\r\n        turtleSize = i;\r\n    }\r\n\r\n    public int getTurtleSize()\r\n    {\r\n        return turtleSize;\r\n    }\r\n\r\n    protected void paint2d(Graphics2D graphics2d)\r\n    {\r\n        pen.paint2d(graphics2d);\r\n        if(turtleVisible)\r\n            drawTurtle(graphics2d);\r\n    }\r\n\r\n    public GRectangle getBounds()\r\n    {\r\n        return pen.getBounds();\r\n    }\r\n\r\n    public boolean contains(double d, double d1)\r\n    {\r\n        return false;\r\n    }\r\n\r\n    public static void main(String args[])\r\n    {\r\n        String args1[] = new String[args.length + 1];\r\n        for(int i = 0; i < args.length; i++)\r\n            args1[i] = args[i];\r\n\r\n        args1[args.length] = \"program=acm.program.GObjectProgram\";\r\n        Program.main(args1);\r\n    }\r\n\r\n    protected void start()\r\n    {\r\n        start(null);\r\n    }\r\n\r\n    protected void start(String as[])\r\n    {\r\n        GraphicsProgram.startGraphicsProgram(this, as);\r\n    }\r\n\r\n    protected void drawTurtle(Graphics g)\r\n    {\r\n        java.awt.Component component = getComponent();\r\n        if(component == null)\r\n            return;\r\n        Image image = createTurtleImage(direction);\r\n        int i = image.getWidth(component);\r\n        int j = GMath.round(getX());\r\n        int k = GMath.round(getY());\r\n        if(i == turtleSize)\r\n            g.drawImage(image, j - i / 2, k - i / 2, component);\r\n        else\r\n            g.drawImage(image, j - turtleSize / 2, k - turtleSize / 2, turtleSize, turtleSize, component);\r\n    }\r\n\r\n    protected Rectangle getTurtleBounds()\r\n    {\r\n        java.awt.Component component = getComponent();\r\n        if(component == null)\r\n        {\r\n            return new Rectangle();\r\n        } else\r\n        {\r\n            Image image = createTurtleImage(direction);\r\n            int i = image.getWidth(component);\r\n            int j = image.getHeight(component);\r\n            int k = GMath.round(getX());\r\n            int l = GMath.round(getY());\r\n            return new Rectangle(k - i / 2, l - j / 2, i, j);\r\n        }\r\n    }\r\n\r\n    protected Image createTurtleImage(double d)\r\n    {\r\n        int i = GMath.round(d / 10D);\r\n        if(i < 0)\r\n            i = 36 - -i % 36;\r\n        i %= 36;\r\n        if(turtleImage[i] == null)\r\n            turtleImage[i] = MediaTools.createImage(TURTLE_IMAGE[i]);\r\n        return turtleImage[i];\r\n    }\r\n\r\n    private void turn(double d)\r\n    {\r\n        direction += d;\r\n        repaint();\r\n    }\r\n\r\n    private void setTurtleVisible(boolean flag)\r\n    {\r\n        turtleVisible = flag;\r\n        repaint();\r\n    }\r\n\r\n    private static final double DEFAULT_SPEED = 0.5D;\r\n    private GPen pen;\r\n    private double direction;\r\n    private boolean penDown;\r\n    private boolean turtleVisible;\r\n    private int turtleSize;\r\n    private static final int TURTLE_IMAGE_SIZE = 68;\r\n    private static Image turtleImage[] = new Image[36];\r\n    private static final String TURTLE_00[] = {\r\n        \"47494638396144004400D50000FFFFFF9898001111112222\", \"2200323266660065980063969699999999993396966399CC\", \"00636496323200336600CCCC98FFFF996699336496639898\", \"CC33333330633030306330636398CC98CCCC0099CB3399CC\", \"66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\", \"44636330DDDDDDFFFFCB100000001000777777888888AAAA\", \"AABBBBBB555555666666000010000022000032000044EE00\", \"00002200003200000000C30000C30000C30000C30000C300\", \"00C30000C30000C30000C3000021F9040100001D002C0000\", \"0000440044004506FFC08E70482C1A8FC8A472C96C3A9F50\", \r\n        \"26C5A548143E9F42A311DD4AAA8D07686B8B3A6DB66D438B\", \"22A9B7A40269FE5E6F296A371A6D2EDA1008247B69361478\", \"6B0956050101200958201F22108F8C8C1F018A115A700D36\", \"04147D46680D878805090D018B979699AB8C19AC8B725B31\", \"14853624098D201B05654B6120060FB978B8C877CA9ECD84\", \"0D28692428052E9E36167CA2DBDC42368B0FE1DADDE4E5E6\", \"E7E84B85B8DB36E20D35E94286355B2EB8681687EBEB1424\", \"86A5F00822344EDE214369E4CC51B0A68001588958F16AE0\", \"2001094673FA15E4D62086344F78221628902141B84C1052\", \"524A04E20104478C12A9C9B58684015E1F1E2850106C490D\", \r\n        \"FF2D5340D6C933D2D2485546676542B18C10471B1830F44C\", \"32C8068CAB5607791C54C3860B182E48B46C29559ED9B368\", \"D3AA5D6B161781B4261AEC04616DEA93060850396A26CFAB\", \"1B031515180051B530D73D734884F574164D0D17D86C7834\", \"B46F269966FBD294BA865617B26761B514CD34D2CA2A1215\", \"B658D4437963943D44345B7BA3C5C1482C3131BD5AC50A16\", \"273203B9E90204D9CDA1A2A978997C90008402959112B914\", \"016251751723073598C392611F819A6B6E19193DC0071029\", \"41C03409E1BCDEDF7812EACD0941DCEB349FE1A4DAEEDB34\", \"AAFF123D74071A75D9D5852373DC4306324C0D751453BF35\", \r\n        \"68077EF8B0C31102835D634807F818A6FF86294C31151E41\", \"5EE9734E2E691532472F2D3D00035B30C628E38C34D668E3\", \"8D38E6A8E38E333650C103A1A8E589020800294A03205464\", \"9F596834A241001A7C104F172EB8D05C010A2C898E5C0A6C\", \"9080061BE464A0120D545926960C7565D66617B810432983\", \"E0A26140FC1416DF98E614E2020393DD22E77682DCD10C6D\", \"025DE31A3AB98477591A12DAF19B509AB9C15963F85936DE\", \"8A015CC44B6905540021196820C405A203D5818A0271ACE1\", \"DB68A824609B2597C16901A27436B80B43B06492812BB9FA\", \"C68802BFC1260A369095B187862389561A7A38A987852CE6\", \r\n        \"F1028B1D9759D887570848A0182983A2E2062BE831128E4B\", \"ED3DF21C0801409BFFE982C7C2E3C99467F858AC036AC881\", \"8AAA01A4B4AB4B26982042262DF9AB1BBA6FE0A300060AA8\", \"97C04E7852A5992947D99B6F161F34A712C0CFFDCBD25196\", \"25ACF0C23BC1EBC49D85A896CA6D582C0249CA9754CC2B27\", \"68C06041048AF082AA20F7691629091100ABCA22CA25421A\", \"D0406FA7051A196555D813921D24CD9FF55EA41B2D9B3202\", \"34697A90722814362C4C4795485B0AA80374AC1101CFDF72\", \"9775850D338DAE1536B4592C62F8E4F18C40920E182A3FE4\", \"D4C05C230D1050419555C627AA9C07C9F90F19B6226DAD70\", \r\n        \"558C21AC1F7BE0D3952E9EA5562C059707A5183C0F1FE94E\", \"DBDDE82917CD1180DACE8B29E2358B533C9209C320B1D76E\", \"07FBEDB8E77E56100021FF0B4D414347436F6E2004031039\", \"000000015772697474656E20627920474946436F6E766572\", \"74657220322E342E33206F66204D6F6E6461792C204D6179\", \"2032352C2031393938003B\"\r\n    };\r\n    private static final String TURTLE_01[] = {\r\n        \"47494638396144004400D50000FFFFFF9898001111112222\", \"2200323266660065980063969699999999993396966399CC\", \"00636496323200336600CCCC98FFFF996699336496639898\", \"CC33333330633030306330636398CC98CCCC0099CB3399CC\", \"66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\", \"44636330DDDDDDFFFFCB100000001000777777888888AAAA\", \"AABBBBBB555555666666000010000022000032000044EE00\", \"000022000032000000007800007800007800007800007800\", \"0078000078000078000078000021F9040100001D002C0000\", \"0000440044004506FFC08E70482C1A8FC8A472C96C3A871C\", \r\n        \"15EAF2AC1639A39142451A55152357C35548911A366B95C2\", \"1EC16C9498804D69A0EDF6023EEFA0D11A7A0D27730D0336\", \"31136A4A08761402367F80760E05092220011F1F20222209\", \"1F01190A1020A0052005628D36362412060999200A0A354D\", \"2C2A1C0D31368D78056780059A1F05A1190101B105C609CD\", \"CC76AC272736298A45287A1467238F03767E76277B82D3D3\", \"7B2728E3D4362314232D0D3524F4696A2A0D121815D6D7FE\", \"FF00030A1C48B0A0120505227C2A7082820A831D5C685190\", \"4083860F1A22A460C5D186804674F6D43933084D35884258\", \"6C1C5747D01812818CC964962C19CD9B7B7A391A8180C390\", \r\n        \"FF142C9AD8B090C2A4B471BD00296B402219080821323C85\", \"402AC127109C3E58D59AF3458C91B11290A87042D1461BEB\", \"C6D98109A829A800D09219D0034C924E01020C0954400284\", \"81072708D47041D85147568620BD786183718AC748588C68\", \"60A692581227516ADECCB9B3E7CF4CCC48E8650B7494A05F\", \"C29070062281A07E10539CD210404381D247549E3D2CCD24\", \"6C8329B651A8500186510B2D1B7C2C24A857D28677989A7C\", \"94ABE046140304A825B776E64CB8F428D5AC57E7913D8276\", \"96E3A1879066820CC86ADACC549319343BD959ADB57AF97C\", \"1216A875C0025ACAC1218C33C604F094535491A2D5070F98\", \r\n        \"20C25B5691338D65C46075C66F46A4D0FF420B292010DC76\", \"79C0649F8222C0B509555825A8492C7081374D3D3630C0E1\", \"352D21660782269E58DF8934D5D44721780D4041411C0CD2\", \"0B09149058A2036CA12009776B8D308D23372AC2C507F4B8\", \"D3820B144863647A8524B58794358CC18A0028D850830D2D\", \"BCA380421AD0F30005013A51C3031114B366960202155003\", \"44097A0D0770F807DAA28C36EAE8A390462AE9A49406A400\", \"057756EA440311607567759A1EC1174556817027A004A520\", \"400B233C54C5191220448202F21CB9D9A820C886C2131234\", \"D40A9393D990A741ED28A3093023A0A65B986B7AE4C8206A\", \r\n        \"A1C511AA008D4A4204942450810368E035CD0086D4F10D77\", \"FA3530996F103540FF410D7580E9D123E84443A52F78AC69\", \"18B56AD860E405792D96D676CCD0639F7D15E4816039EA86\", \"6B1D81F3E691205C411AD3800362258350BD98290A50511F\", \"852948257CE961408CF225F8B07D545223000935D4700209\", \"29F864C53B576AD79658347D101F313ACB07DF7C0104D391\", \"2B0A6095C02C0A68AC440A2C9D9B8730CAB4A689A7543DF8\", \"0004131A83091EBE327555A9A6C29C042B1404D7C1516302\", \"2296520A3E70F4532648F8E0531326A35520E29C50C1C015\", \"454099123688181C092ED8BC074E4E3D00CA8A55478DF55B\", \r\n        \"F5D9F195472F18F5D8B091B1DA40051E37E7705BC36815CA\", \"07971C9B60060932A5072B62C0319047F2E2516190762763\", \"BE954D3E422CCE23D3E05B850AE71C4E4F0474DD943BC410\", \"AF9E68A20BEB5426393EC6140109DC4AC935D9FA1A82B922\", \"71D4116C72B11F9E37390CD7FBCE000808A1820208A4AF06\", \"0BABD1D3451DD44CD3CB08D951498121CC99D9261C85A387\", \"A9EA94B17B9000140968081BD4B5403818821A76A8817630\", \"430201B88C17D510942346123AB1F4CE0A7B8A0508D2C186\", \"0E944D836CE8080518C08027E06232C0A04709ADC0050570\", \"0966BEA354141A72A9503D61283E0CA2108748C421060100\", \r\n        \"21FF0B4D414347436F6E2004031039000000015772697474\", \"656E20627920474946436F6E76657274657220322E342E33\", \"206F66204D6F6E6461792C204D61792032352C2031393938\", \"003B\"\r\n    };\r\n    private static final String TURTLE_02[] = {\r\n        \"47494638396144004400D50000FFFFFF9898001111112222\", \"2200323266660065980063969699999999993396966399CC\", \"00636496323200336600CCCC98FFFF996699336496639898\", \"CC33333330633030306330636398CC98CCCC0099CB3399CC\", \"66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\", \"44636330DDDDDDFFFFCB100000001000777777888888AAAA\", \"AABBBBBB555555666666000010000022000032000044EE00\", \"00002200003200000000DEAB00DE0000DE0000DE0000DE00\", \"00DE0000DE0000DE0000DE000021F9040100001D002C0000\", \"0000440044004506FFC08E70482C1A8FC8A472C96C365D92\", \r\n        \"1449E2AC5A9D0AD7A841228D6CB6D4D58A6829129A482441\", \"72D85E8286DC3697DB1B854285D648140272277127843614\", \"452C122C63422914740D71725D2479011901010920202220\", \"1FA01F0F10221F990909770D821411240901240D614B292F\", \"0323278F02607779957979A07E011F98A7C17FB09A36BA60\", \"032D8B8C49BD140D1427AAAA2474DD762703602860128623\", \"5DCB090F2487571C29201A1A09348608D3F8F9FAFBFCFDFE\", \"FF5D0A7C28A04056BB7F45B8814821471A111629C0F0A260\", \"CD4EB86C5C66D9E0D5C0213F041406506000231C0C6D052A\", \"650A106C65A63F2C8345283087970D121836C042A5008402\", \r\n        \"FF1B64E450B4930CA628109B4641800042D30710104CADCC\", \"A3D1C5AC7D143878693607639F02AE68B27C19CC40970628\", \"2C9E6047670405170A2ADC2C97C263951A29BD6C69106E23\", \"5F8A60BAA17841B82EC226B32A3CB061F7B0E3C790F57188\", \"7CD8C6064E0AB029A0AC8F4405096CCE1E8CCC424548154D\", \"1C8DEB05E644E0308DFB358D37905B0747AF05885C556756\", \"C54060863E7AE1CF86D50A2E44BE19A0DB4E5A2E9560FDC9\", \"E3A700B1587720B9E6C325C107050ABE5479848263F67334\", \"F118B0B43241863F984CBDCF242B50B8060A407D422A4B4C\", \"1586AC4D4215759F18F380529F780755299A6C925E03B76C\", \r\n        \"F48205B159D11A384469824726103C80FFCA53A47C02D325\", \"CAA4E79A4D8C3142810A2DA490820A297C818203B3C84195\", \"8D236A32D67431E54553338F3C02D43FD61812881DF51525\", \"0B0DDCD9D18C0D286403460B149110C1066A90F0C04FD368\", \"75CD2CBC1894D62E77FCB6D60035D860817F882CC2100C86\", \"31C242034DF921000AB8B8909C214106C7266748D4904204\", \"2074F127A0FA94A626A28C36EAE8A390462AE93E201130D9\", \"A45668B5C14D4362CA84561FB29199A74B8C90022A9B3880\", \"C2A1A40EC141031590E042015274D4280B152251CF93521A\", \"02280B24ACA080004AB0206438CD7D33C01C86B0CA8F560A\", \r\n        \"C8F38103241011915F148DB0D71DAE4D328B48BC8C70293F\", \"360CC0522820B8B2FFD120155504094A19757B0D18B99241\", \"8202331950035FCF2C7B245138B25181030EC094D2837484\", \"7300050828B02F25CE22C18E4521C52000057140A25251A7\", \"00E2404C2C692324749C6C02DE674E94FB56B2DAE0C1A326\", \"3CB287CC1FB2D024081D60698014548576CA040BBD7C59E3\", \"2BC02813DF25C6ACD489297F98F24D8DC92848C209574094\", \"0B515D28E0F253A684B25454A83C6002830D22FCC62373C4\", \"79850D5B846443932E67B2F426509900B6C9108430D05472\", \"0C208BAFFB40F2C8B2D46DA8C952987CBDD432A08C058841\", \r\n        \"ACD1320644B842C495942E5BB761069C64F294278DCBACC9\", \"7A1619E2B3852E20C08EAC71D078871F9917980926A8BC6C\", \"C230208484A4DB6855A790CD0815A08D121B6235B063327C\", \"9B5D08C66C16E4023E1059E3DABB94D094924B38B69C9D0D\", \"2D8C306B4F05E912716A8109F52ED604A7E78DD072EC8A02\", \"05DAE26740824FD6BB04365CA9829157BC5D7342935F3084\", \"34AC061DEBB0657C4A28D735BAE782674CCF0E71C0861CC2\", \"151804126133F960C1192831800B740F63454291006C42A1\", \"48D9A0291B20C1C52A9082150C406DB721150714E31D8DA4\", \"A8554850C12B362001DEE1F0085AC198002CF8C3221AF188\", \r\n        \"FE08020021FF0B4D414347436F6E20040310390000000157\", \"72697474656E20627920474946436F6E7665727465722032\", \"2E342E33206F66204D6F6E6461792C204D61792032352C20\", \"31393938003B\"\r\n    };\r\n    private static final String TURTLE_03[] = {\r\n        \"47494638396144004400D50000FFFFFF9898001111112222\", \"2200323266660065980063969699999999993396966399CC\", \"00636496323200336600CCCC98FFFF996699336496639898\", \"CC33333330633030306330636398CC98CCCC0099CB3399CC\", \"66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\", \"44636330DDDDDDFFFFCB100000001000777777888888AAAA\", \"AABBBBBB555555666666000010000022000032000044EE00\", \"0000220000320000000022AB002200002200002200002200\", \"0022000022000022000022000021F9040100001D002C0000\", \"0000440044004506FFC08E70482C1A8FC8A472C96C223995\", \r\n        \"548396E238AF5827A7E52291280D9B384B162A6CA054A140\", \"1AA6C4B6810D7CB235EE8D4285960FF84905780D27246176\", \"120A1F011F0A200F24364D1C14940C313103772877236B81\", \"06011901091F20221FA809090F262209A3A46B7703853629\", \"65462D279C717705AA7D09A6AFA88AA301BFC80501240986\", \"620314912C738F622C572C292C1C2A149961777682788578\", \"76D19B603616D8B8D9CD5E0D0328142D2DD1EEEFFB4C1C1C\", \"2323D8F11B48B0A0412C1CD47C280082048D480709BE1120\", \"E0049875BB1A90A84369C08017108D48E086250505051A12\", \"188840428E8D18784E6C5A4342D9323FCA7026B81948DC20\", \r\n        \"FF3BBF9641BA45C664343C6CE43958564A110810104C4038\", \"F56A518635C802DCD925604EC82CD4BA8A1110D05C0301BE\", \"CCCACAAA2C4F843BB5EAA0B0215700178D581F9CA1C06FC4\", \"80AE720AC90147178E8D17ED225E69A02081864214F4299E\", \"4CB9F21515562C47B4B12102880223CE681ED8C045E3040A\", \"068DDEC7A282981375A0897BDD66320B172D462038C2425A\", \"344A787C0B3217675D401B2A5C74D10842817312159C3C60\", \"A8C1294BD98332E6F1B52CE9D29C9E7A1A66FEF4832A6792\", \"91A44E017D0405BF31E66867D3DD4FD5AA37458030A64AD6\", \"BCC32F7C145919D4D8501139BBFC024801C590F2D4035329\", \r\n        \"228C0211FAD1DD33BBF045DA1DD26CB2FF9D277E4025C228\", \"A544A8085638D9379747D17CD5C16E6548534738793443D3\", \"2FA8D86753556669E2402D68790142029E81B04E7A45B0F0\", \"020229A8200102B98D0386203BB1546377C49DC549187574\", \"750B366F2840412144F1238D1D1765A4269AC111224699AB\", \"A500D37B0035701C6186D9B2DA1227BCF25803F5C0B8272E\", \"5E908081688326AAE8A28C36EAE8A346FC43810B4842AA84\", \"028890F0801D955A4A040743AAF2DC089D7ADA01095D2440\", \"02085394EA29077079A18B0DAE5ADA808C623C3307057042\", \"DA1B1CE4D8F9538B36B430016508B858C444BB0A92494670\", \r\n        \"A075AB189410A100215ED8B042ADCBA6B002244648831625\", \"D00AC287AAC89030FFC239D0DAD14C797A89D96B122928B0\", \"41001ADCC14281684E394E4F4955B0544D1692439118CE19\", \"20CC2A10A83BEF111478A2C1060A1810C6511B9553537F59\", \"81689350FEC98197274F85C1EDA40ABC55004CD41E350E20\", \"F685871583A48812A256E4B05381467364F15E03359C6520\", \"0CDA7137738AA888920185229CE2C7423D35F002051CBD83\", \"0F250109B24BBD0B22FD41D3119202210427E267880B613C\", \"9C4D8119FE2BCF1AC2EC9781235199605EDC0F9857F06C5D\", \"35A0B6CF59C386541E37399240061F40A0380443A6B8934A\", \r\n        \"0538C0E1582A0CC482B4DF70074C320140F0C0D3A68090C1\", \"2BE15918089A714C3D446ABC726BC4382778A479E9398602\", \"CC4B77B89B655118235860C1080E34E285022E68B804981D\", \"BCC6613951A3D831EE069020391F39DB8575C5FB25A56C11\", \"14C4D0027B15A07AA0E48204A56A2005646073B0456B6243\", \"051408100D096A144089EB29A480807630D06567AEC3411F\", \"4DB6C325916DA2055E1A0D0206A09DBF8C235810FCDF8006\", \"552008AAE328223384EA1885B616D8492CB9FAC699BC422B\", \"478121292E18016E6EE50239F02A32C67BD49840308AD811\", \"200AFE30156F5052C337E9100912A800F626F84324B0A00E\", \r\n        \"0378C3DF8A48842532D15241000021FF0B4D414347436F6E\", \"2004031039000000015772697474656E2062792047494643\", \"6F6E76657274657220322E342E33206F66204D6F6E646179\", \"2C204D61792032352C2031393938003B\"\r\n    };\r\n    private static final String TURTLE_04[] = {\r\n        \"47494638396144004400D50000FFFFFF9898001111112222\", \"2200323266660065980063969699999999993396966399CC\", \"00636496323200336600CCCC98FFFF996699336496639898\", \"CC33333330633030306330636398CC98CCCC0099CB3399CC\", \"66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\", \"44636330DDDDDDFFFFCB100000001000777777888888AAAA\", \"AABBBBBB555555666666000010000022000032000044EE00\", \"0000220000320000000018AB001800001800001800001800\", \"0018000018000018000018000021F9040100001D002C0000\", \"0000440044004506FFC08E70482C1A8FC8A472C96C125D14\", \r\n        \"4583C6E238AFD82BA7511991280D9B9842A6A814CB6A164B\", \"B10DC88D70BCE0A8340A8580BE70E7C76D6D270D2478790D\", \"146C0D098B0E0D03636F71837801947A1F1F099909200F10\", \"10987B950D026E026F6B472C2D24823628927D797A0F201F\", \"0198B78B099501B1BF80508384015F884D29362D62232EA5\", \"36248EB10524D592D1BF92A52CA9DD43168723642D2D6F2E\", \"80DEE94E242924180F64EAF2F3F4F5471C0ABB8B35C7F6F6\", \"6D6EFED89074C28D200A05473C42018B04275C0A6AB1BBC2\", \"62848214091C90E8C0C28680820304C521C46B56C9000932\", \"6408B01253023F61DE88E1966AC4A11A0C46BCC8E6504121\", \r\n        \"FF10223E64F8A00082894F1078E959CAB4C1090A8F1E8DE8\", \"20A18102290AA064011367C0A33E0EE714CA336B541CAE60\", \"9E51A0E9AF0807310329608B83E284CD678F6CA4689B4551\", \"A60705E0F21D4CB8B05BC36D2382006195840DB688536D71\", \"F15241B47E915349816BA320578F50C5BCD84B84C5201057\", \"2D57E0DB51001C495CA945B326091A4012963FD8BAB5A100\", \"66261C28A4180099054001AEE7CCA9948084835985F4CC15\", \"69C302F2C7A95228D0902B4204375C1BC032894729CB5920\", \"2004D5F37054E765E8B204BF48A202390A02628C148BC7C0\", \"524C9DA8A7CB620F64924749B5C1C5D61623B00059120085\", \r\n        \"F715352F3D97876E20B4B41804B69414FF5D317C0012C608\", \"AC9000C2222014A300764DAC721618B12DC2C72CB9B0F712\", \"25CE0D12464153A0F0580A66D8C0410A1C58919D18228131\", \"C01C0E15D0DC486411F207057571519D3FCAA4D04E0A71C0\", \"3090535FF2F8476D8E7C69C30B16648644326DE01590479C\", \"3DA866690E58160D332D0060E49C5A90F08026099C20279F\", \"585831240BA411AAE8A28C36EA68072310C0D1A3575453CD\", \"8A0D0C4A29113678879A14536D9A043B95DD292A125B48E0\", \"5335339D6A04072D8C30028F487226860A0C20C1950BE720\", \"56019224D8B41F6887E4158F0B080C82226A20C4D3967162\", \r\n        \"BCC18748C00830A64056E9D3C965FEB4F6542C82D0708752\", \"61C502A718052860FF202787689AC45B7B12D146195F4A82\", \"47050E3870A321B2E1E1541B714460CD6F4EE825C56A4274\", \"74C2094B3A75821FBD9065094A78DCF24B411EBDE0EE1283\", \"DC424D14D10E22EC30638952C02DBA8582D24BB17811DF1A\", \"2638A9C906CD891143BD2389629E501968929E0927BEE461\", \"189D0D9428162D6817816F6FC0508A1CD3F8A7A1089F04E5\", \"735199ECE1C74051B57018130A0CD0C25930BCB093784EB9\", \"60D91DB864A29B2746D9F29F4A07B20CDA297A256CD5232F\", \"30010505FCE0CCA47315039532DC1C82309625D4105D4A19\", \r\n        \"1438F0A789771EAD0AB4624C834D749CA88752CAB7885249\", \"E38788EC9123B845A00B3C042B311020AFF4B14834BCF40C\", \"C24A25BA1CA887C0B0C441434105A1E01A05B2525080C66B\", \"94731672FCED7B72E8A3FBEBEF5C7130CC623D1D75462D7F\", \"D334C0D24AD80CC4A3B80DC4D0BA3C6BC13E17CE2F85450D\", \"358DC81149056D582E4F0A68AA9042D20838136667D908E0\", \"21424301E4B1661CCBC08783C080B3AF38E510C9094918D0\", \"D4A8EC894958000C8D8228158D1650606C445B1220D6B2B1\", \"39E16718501007390450C245B180049B981501C8102F5771\", \"840229AA44AB6C58840AE08613A8E0A11158B0B0111A5088\", \r\n        \"8E0A020021FF0B4D414347436F6E20040310390000000157\", \"72697474656E20627920474946436F6E7665727465722032\", \"2E342E33206F66204D6F6E6461792C204D61792032352C20\", \"31393938003B\"\r\n    };\r\n    private static final String TURTLE_05[] = {\r\n        \"47494638396144004400D50000FFFFFF9898001111112222\", \"2200323266660065980063969699999999993396966399CC\", \"00636496323200336600CCCC98FFFF996699336496639898\", \"CC33333330633030306330636398CC98CCCC0099CB3399CC\", \"66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\", \"44636330DDDDDDFFFFCB100000001000777777888888AAAA\", \"AABBBBBB555555666666000010000022000032000044EE00\", \"00002200003200000000B70000B70000B70000B70000B700\", \"00B70000B70000B70000B7000021F9040100001D002C0000\", \"0000440044004506FFC08E70482C1A8FC8A472C96C762E1C\", \r\n        \"96734AAD0A152D498A446AD8BE6030652025561A89CF0704\", \"7A90525627C546A134EE785AA3400AF80B05115C7877272F\", \"5F7071422E0A2909050D297336772494807E7E097E6A6A09\", \"096D20101F9B019B053427021402032F70151420240A0A5E\", \"65470A7403352E2394840D248F7B99A20F9B6A9A01057E11\", \"78C00D0336B88A4873787627767705095C5DC17776362F16\", \"D6E8442A0D14232DEC03032DD4E9F54A0DB506201275F6FE\", \"FF00ADA4D8100104A85B01137640F1E5CE08425F4ED81870\", \"C7C6094B5F48145040AA19090A015980894708932966DE02\", \"8050666A25332F0DD92932D1AC8006071507AC3AD10D50B3\", \r\n        \"FF00A4D43C8000C10451833E7D06E05280120989ED620853\", \"A1114635272C469C18806D0FA647495132CB54B1228D3136\", \"14B26A41224B8A163180456397E7A2B430571536A9306C98\", \"0D02040624D24BB8B0E1C38A5C5852F0B11F62744CBFD93A\", \"9177090570B62A18B6E5A28144895C61D6616751950D86B4\", \"3EA521A5E1046191132940C2C307D0A060BB8009B254D9DE\", \"9CD1C1F84428E02093B7660635E27931E2293D6B2E5A9021\", \"42E1C4369E9592D61CABF2810911204CFD9C4DE7CB2A225C\", \"BEBCE8DD81032D0D1F348030508E62759E1A7F66000A2204\", \"510822A8564A069B9C62897594B46081621180A292022021\", \r\n        \"A102235D3CD40A30A9A0C11833A07C10FFA01FE01D655C4D\", \"849C21910D34D8A0C208834DC1011802C4149C721AEDD789\", \"26C74102884376FC122140226543474F6075B3873080E054\", \"8044D03CF75A0A0208601D0D5DF044913839B173E239868D\", \"3142752D7040C43C1611424E455FB0D0E2634958C00E1703\", \"8C30800B2520C0A6152C70115E005EFC78A722F781C1DE9F\", \"84166AE8A18826AA440B9779C185A24D34B0011BF85802E9\", \"122A80E00D09202044050B2C3422C9616F38B2D12FD44801\", \"2A07628A69849EB5D46229611C34504173E49409DA34608C\", \"DA99300699F20063AE1536428C4C5682911D7594E9994524\", \r\n        \"6C60C01AA474EA67422CA478A58C783C44C889653EF24901\", \"D786141B3457A6A4FF89573A7A41910D028CF0C27A85CD31\", \"4095D8155041050EE4A8D44B784C531D1DAF51A24D49803C\", \"C2DD1F9A1083C7092E40954E0AAE0E015B2B9E1D790AC33F\", \"7D00E0879FFC71D744515E4B01A84C8C30C2030DD050C61C\", \"3C69D5537E0AA7B1DF270F0C25024B3B8EF3C53489A86C0B\", \"634E1A610347CCC83A51305C300CD41A00BA040A1B1F64D0\", \"8C6A4D91F6C2182914800C7CF8107C0407058000DF06107E\", \"310676841890894A6D14350A296FFF64CAB3303DD49C0263\", \"255074116328B081BE318C119730F8D9028887CA7C30D47F\", \r\n        \"2BA9F6071F776C1BDB68291C5D3112BE6C718705305044DE\", \"1E5DF4DB8CE30F7CF0B44BE26542821E65A1C0D0A04B7050\", \"C90705354C53394FB585E5471B1D01851220CF08F33022FE\", \"A420527514E9EED5375DF8B4DA58244273070A9E71195236\", \"BFA4EB136D3BBEAD114FDBF84C3B3A2F5ACF36E98F442088\", \"57E10473EC9A7A4D12CDFAB38963254F34A0A0FD6B9378C3\", \"2F8EE799CF988924F04A936132670104A4400529E0910B02\", \"D5A380ED22460A7C0CFDA8639E8984811C28BBD410D8D182\", \"2FB5805113DCA0A228F0023E0C221E14B093088D7099F0A0\", \"0D26E753D40ABE968006E45051796A810224400B1BFC6F86\", \r\n        \"465000070010428504010021FF0B4D414347436F6E200403\", \"1039000000015772697474656E20627920474946436F6E76\", \"657274657220322E342E33206F66204D6F6E6461792C204D\", \"61792032352C2031393938003B\"\r\n    };\r\n    private static final String TURTLE_06[] = {\r\n        \"47494638396144004400D50000FFFFFF9898001111112222\", \"2200323266660065980063969699999999993396966399CC\", \"00636496323200336600CCCC98FFFF996699336496639898\", \"CC33333330633030306330636398CC98CCCC0099CB3399CC\", \"66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\", \"44636330DDDDDDFFFFCB100000001000777777888888AAAA\", \"AABBBBBB555555666666000010000022000032000044EE00\", \"000022000032000000004FAB004F00004F00004F00004F00\", \"004F00004F00004F00004F000021F9040100001D002C0000\", \"0000440044004506FFC08E70482C1A8FC8A472C96C3A9FD0\", \r\n        \"E8B0A14A90488A91CD46A16CBF602EC1868D68409F04A8C1\", \"9246B78D7843D0A0350AF840411FD017E47103240D36276D\", \"45081D876E1D5E360372577E097D1F9696091F209B1F197B\", \"0978245B5A5C23312357820A4C0A7B05110E0D1430312771\", \"362D090A2478941F0F1010A01F01197E7F117F711571308B\", \"8C482C2971142D02039077770524A0DD807236843629D04F\", \"14312D2A29230D1C442C5ED703140D23032D5DE6FB4E2C0A\", \"2011126050D0E519BF8308131EA1206A17961352182A98A8\", \"E00109830A8534B076A2103838E2006DA120A010850A365E\", \"6434C2824BBD90DB0A50EA1540844D62A0F40C6A60ABE400\", \r\n        \"FF2E1D38D40098C00A41251452A4F846E6911C5B78F2500A\", \"A0099889606870BAFA38871C341227BAD47031828EAC7A80\", \"64EE8CEA6A4FB100BC60CEB1B01289BC1327ECF00C89CD56\", \"839FB67E72C158D789B82B7109A0F05AB8B1E3C790997020\", \"C0A182BF77D0A4D920ACD09F830F3213D0B001A506894B09\", \"20EC32D498430B0988C7C5E9484F16DE708F42F7DA0C99C3\", \"62BF70E2844A20FC8FB2D96020B7AC2D074F05120EDCF631\", \"D627D3D62FD806949B42F00A6329291E318F13602A5BAA20\", \"80411041ACBC013C8428FCECC29044C0F224283069816F11\", \"C9385A6CD3875B9AD8148C0899F471CC567FE9F5C50814B0\", \r\n        \"C0D9115750A2411A5BD033805FE77D20FF4C796920080108\", \"D5B915811C28DCC21B23D54CD4C0050DC0900D20DD189747\", \"25ECB5C7C71F8BDDF217690921100636B2C8C556730D0C12\", \"D54EB2CCF1025D9009D9911C2F8123D26C1BDA50D276CAB1\", \"D011092A54E008720052E3942C911DC125122ED823CB0502\", \"B4B0669A51308486011FF034219D4F88224E5273F229E8A0\", \"84166AE8A1883606210962BA24050BCCC41661632448B089\", \"1A75ECC952036980F00F08A234E64F511FEC62CF22D25CD1\", \"420B6DB4D1669220909A46044016A6800B297833CE16B4C9\", \"3726051D89B34BACBDE8E718078C26C96B58836879C28C7F\", \r\n        \"7E215C048318FB18415B0C721B8DC709C7132427C05092B5\", \"8FA5301A05DDCAA4FF6000714410C0ABE1C4D02CB985A520\", \"005A68D571474E6C69028A48E2E0B5A2100A08E6CC3E5EB8\", \"1949850D28980131ED91EA8717039434AE101215F0C048D0\", \"D4530F54022AE8566AEB81F0F08071349B9D055CE41A2B31\", \"0F4CEA4686B61C768CC3E565921E081080B687019410F2AC\", \"386DBA50211E072F2161112D7DEB1709E5AD4B954D68E43C\", \"95D4A0D832EF08100AA2E9101C8CF0405EABB464164F345C\", \"E18A316AFC0281092688D0335B472619C7682828021E0920\", \"6850C03FB4CE67E51E1990AA8B7AEBE998470329A2E05749\", \r\n        \"5F2960890656CC77362A4A16A0898726537549D43F0F0296\", \"C7F79AC34203096C5040051096040E37D0DD9880080F104B\", \"CC5551F005C2570DF44A11B6A9358CC03270C2ADB56F019E\", \"5862CC8D3B75F4F1098132C2427E15D340474827A4B80D25\", \"A0D01D8A1EB1FCE1D709027CED461B2900C0D35973145723\", \"EAAFECC464BE3524ED987C4FCD38E31D4C86036EB082F2C2\", \"946281966CC8C56E8E000A9F944201B204273E650AC7AEA2\", \"E7181BA02205EB6046845C5012713C220C5E305F4696438F\", \"141046051BC907D71AE082DE256A082C80C41508310031BD\", \"3009D3284A004005C01B4663102F238ECC7C780405986617\", \r\n        \"B0A1C00B4488280E38712541000021FF0B4D414347436F6E\", \"2004031039000000015772697474656E2062792047494643\", \"6F6E76657274657220322E342E33206F66204D6F6E646179\", \"2C204D61792032352C2031393938003B\"\r\n    };\r\n    private static final String TURTLE_07[] = {\r\n        \"47494638396144004400D50000FFFFFF9898001111112222\", \"2200323266660065980063969699999999993396966399CC\", \"00636496323200336600CCCC98FFFF996699336496639898\", \"CC33333330633030306330636398CC98CCCC0099CB3399CC\", \"66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\", \"44636330DDDDDDFFFFCB100000001000777777888888AAAA\", \"AABBBBBB555555666666000010000022000032000044EE00\", \"00002200003200000000EEAB00EE0000EE0000EE0000EE00\", \"00EE0000EE0000EE0000EE000021F9040100001D002C0000\", \"0000440044004506FFC08E70482C1A8FC8A472C96C3A8D9C\", \r\n        \"94AB814AB19ED861E35100750B34D59095B299CFA7C1C9DC\", \"2025120512C996AD0F3923DBA941D9531A09010582058501\", \"201F8585246B3614660336291D12242009890F747642297E\", \"0D0D05808A01011FA71F6F9881A58624A0A08D149C1D2D29\", \"2970230A0936318EB071A1050920200F0F228982A98A0D34\", \"28B10D79B4441CA014140323356A366A14027BC06E717072\", \"B00D2702DD029BD459650229081502B30867EB1423232D0D\", \"2A08DE0974C2818402040924381A7165A0C3870E397460C1\", \"42818A864F5800021120C183001B1A608478A7810B122705\", \"34B0D1660E1A74A15682F2D66D921117652CD87CE7E80F4B\", \r\n        \"FF6124042D0B00418408441F4A9532508865BE06305A8C68\", \"6085E71A99A15A15C860CA1884AF5F41707D3328429B9923\", \"5E8CB4D32051020730B08583B5875C4C45A4400D2AE000D6\", \"1F1A2F18904492E2D1D59FA022ED39910DD64F496B071F61\", \"412132111871DCBC5AB353B2E7CFA0437F4E615081E90773\", \"3EAB209142D7163E4FFE1834508C6C67C9C212B076C9A627\", \"9F743FDBB5636961C00BD15A5CE811878E441C05A1221498\", \"0213548B136B660D3128C7A5652C2CD8F0D953A181830206\", \"9406E05AEA4DA9577E0708284EE164044203BEC71EF087F9\", \"A056429D62CC034511D2CA2B2C3172C608B7D112DE2FA0C8\", \r\n        \"0187521F800016040924A3082BE85CD5FF0E4F380DF1C800\", \"3039D7407A199C624A85A724D31121D2A153430D0DC23302\", \"080B9CA240248F9CD5866EE6FD1748862A1A22C866B04C33\", \"1005DC55808D2FD7A804CC308114A25701D0F9180B768E78\", \"46191964F8F5488F0D9058DD96AF3C021972458427C0708E\", \"A5F3879A666453A368E15980400A2B4566CD542E10608393\", \"62B0C9891C88AC32476586BEC3820A0A342AE9A494566AA9\", \"1D145D9A85040D98A6C0032269CAC48F151663D69D031140\", \"410D8FCC81AA110828304C2A2A82E0CE601C549082022098\", \"56030A6B6994420B311466C30828D8400206964C18EA6824\", \r\n        \"44F086692B49A2A63DFC4502DF197A4550CFAB0E1DE48239\", \"7DE83193378C75A8FF477F2FBC301C72AF94572D3A3F9908\", \"0C4CBD2078C25A0A38498102660844829A08D6FB9F2059E1\", \"E5D819FC3134840D20340082411480DB440DDE8802531C7B\", \"25C01E261C59C9639D2FD880804198A4C29A40E0FC018C03\", \"152490D57A482565882871249BCDB15275774E03029591EE\", \"94FF0969A1094531F322C23499D1820B2344F2504FFE09A5\", \"D458C41483087B0796E9580D994EDD8E1A27DC3C4C291542\", \"90A87A785939D34C16C3E38D94331B9DB60948AB9D0A1C83\", \"C047C3625D42145E5D2740E31C7A5757A840586A7774B6C6\", \r\n        \"7282721C357BF25903090FBA8CDD94A660980A57A8B067A5\", \"C666D0F0887E4EFCAB800654D26003B6E27067E02161A5A2\", \"DBD45EB17893CE0B712F81E829310A10C30B54A453CE95EA\", \"1D92D450CD006E41B8C34807B50D16D0A5975EBAE1DCB630\", \"90C342030C0F0DABC02B353CDD073AD0DC55081CA1241081\", \"59F4F2E18D0DA863AA429967B4EA0889105617CCDB7F8884\", \"197A3710E6A4E31A58E98F78A8B08E3A518A32672041FA56\", \"62265820C827970A0F6B5C50329534620DEDE0437D1845A9\", \"8A3188342490C818F824150A5C601F2950E1A452F0827DD8\", \"0209FE1881890640800F890A092C80C62E02A081889DE087\", \r\n        \"4BA8880D786580046CE0011478C1F3908884F19D80112BA3\", \"A2A182000021FF0B4D414347436F6E200403103900000001\", \"5772697474656E20627920474946436F6E76657274657220\", \"322E342E33206F66204D6F6E6461792C204D61792032352C\", \"2031393938003B\"\r\n    };\r\n    private static final String TURTLE_08[] = {\r\n        \"47494638396144004400D50000FFFFFF9898001111112222\", \"2200323266660065980063969699999999993396966399CC\", \"00636496323200336600CCCC98FFFF996699336496639898\", \"CC33333330633030306330636398CC98CCCC0099CB3399CC\", \"66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\", \"44636330DDDDDDFFFFCB100000001000777777888888AAAA\", \"AABBBBBB555555666666000010000022000032000044EE00\", \"0000220000320000000083AB008300008300008300008300\", \"0083000083000083000083000021F9040100001D002C0000\", \"0000440044004506FFC08E70482C1A8FC8A472C96C3A5929\", \r\n        \"9242015234482CA796C821202A14CAA39132A61AB6B4AD41\", \"41A74F8D8645F02A1F392ACAEB65CB6E8D56231427706871\", \"0505018A8888010909201F01887168140236242E6C23240D\", \"7F4B36022368050D8D8A01191FAC8E098B8DA6340D84B436\", \"76A04A296B9587A6891F221F100F1092938B8A2405368536\", \"30B948241F0509062414312F9503BDA7A705CB88099E9585\", \"0D9814D1EB442C99292E3136080814690D23821728602DEC\", \"FFB958283803B0A0C183EC385C01010944810F3610DE2111\", \"01520305244EDC8B6363C0466FDE0650187142C0283B1248\", \"6CD0F0218102750059A0E0D5A681830A09C04982C05384B0\", \r\n        \"FF04A8AA151050298D1F84BB885622914A112B103CA30A83\", \"152082A942F60A525831E243830706D284B9726244382B8C\", \"80324AF48B529C01846E21E490118EC734291078EBC8C61C\", \"2F7CF8ECD9181151A2160A035CB868818B480A1A245E1970\", \"E449EC51C39833237457834263CDFF1AB06AF9C0E265D05B\", \"B21C4071A522504F9F25D64BA1E0110812344664D925AA26\", \"DC5A6906744343548D91AF5F6D3C289C8B6E0ADA24481437\", \"1727FAA90893187D2B6943B0F08E9D1E515251D04DDF36B3\", \"AA350DD092EA5A531D3D0A403C22F6BF14F369C1599B6CD5\", \"07100046924C00E534C05A5686A570C258E064F70A7B5199\", \r\n        \"005524AF34120159A4A0915933021422FF8E220F4A224924\", \"AC64004B0334A070423727BCC0404136B89082041C74608F\", \"70C355074E22A940526253A6784383050645C1D2071A1430\", \"80003028B59427D5440654250958D54B771AA521D12D1835\", \"50830B8419B2E01A6B60B51756CDA0611F6A2CA880891A71\", \"9CA31F2DDDE4535F8DA8E97202095190704475CBD8508396\", \"79EAC24414CA559180041EE956E8A390462AE9A494562A04\", \"07514CA1E0699626916980205CB866A744D4008923233247\", \"EA117A352041042C3102136A129C41A811355AE0991AF784\", \"B38C74A376C0E91F5174121D6E141C05851A97F0828D286A\", \r\n        \"C4F026120D54700246DD45D3C0061150534565BC76071248\", \"7450408247645C76FF02080E38B4DC3A7D8A076E4DF714E8\", \"2B48599A64925C18AD240919098DE0420595C9790588BFB0\", \"D7522C1CB1619248161C4B0202367080273B24B480499CBC\", \"B0C5882A4D55A85D33DF89D2C200237824D14C14C0E7A54D\", \"0EF0F89F08218CD6E32286CC3BEC7D7C558208538B98A8C0\", \"032644F5410689BC52201A836E3898373CF2086202AC3C98\", \"9D5BFA6934EB9661FC75B553C3801002D54039D2C8D20B7A\", \"869982C27578C5C7EC81204231454320203204C649023FAA\", \"222496CF5499F81F8076CB6D6276BD9CC01AC086B9430809\", \r\n        \"36B026CE64190898C0E182AB15242D3A060B6FCFB5EC58CD\", \"533C3D603322262E43121BCF1844810227C007820DD2DA53\", \"C29D4B36A1D2D4BF6B79A391E74EA430426D4EF1268F81B5\", \"44F68BCFCB5B7125471EED0C4ABF2C19D0D92506337FF515\", \"AF2DDDC69B7DFF6345021B3470811C1B17B5B82FDF8C4B03\", \"C97849C4828CC20FD0190D1E95D51D052E60D9303A685852\", \"51DA103EC3E021057E60410BCC113A07C44929237143775C\", \"20005289057C1C7BC348EC94828B55CA1E13AB40034E0398\", \"FE51800098B0540A3C9382169C20360CB842745C5280B258\", \"2A38C18A42435AA2810D3C003FC02355B54810A65519F188\", \r\n        \"4808020021FF0B4D414347436F6E20040310390000000157\", \"72697474656E20627920474946436F6E7665727465722032\", \"2E342E33206F66204D6F6E6461792C204D61792032352C20\", \"31393938003B\"\r\n    };\r\n    private static final String TURTLE_09[] = {\r\n        \"47494638396144004400D50000FFFFFF9898001111112222\", \"2200323266660065980063969699999999993396966399CC\", \"00636496323200336600CCCC98FFFF996699336496639898\", \"CC33333330633030306330636398CC98CCCC0099CB3399CC\", \"66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\", \"44636330DDDDDDFFFFCB100000001000777777888888AAAA\", \"AABBBBBB555555666666000010000022000032000044EE00\", \"000022000032000000001EAB001E00001E00001E00001E00\", \"001E00001E00001E00001E000021F9040100001D002C0000\", \"0000440044004506FFC08E70482C1A8FC8A472C96C2A6B0A\", \r\n        \"C54301516C6CCEAC1669B179290DAFD8061B638B36500414\", \"789CB7C37421912890C0B686BE410AF8FD05057F7401050D\", \"850961362E245E3570593614787A828001191F9A01099C82\", \"7582117C362428156F904B5F797C248106011F1009100FB5\", \"1F091F8505BA0E7B7A5EA94714082E1ABC0A14363131BF0D\", \"86CF8176A0CFCECAC0C2D9688B2E2E31A81D0D1424AE79C1\", \"DAE8E9EAEBECED427C0A06207509E04664E79004600F0DFD\", \"356FC44C12E70CDA2F815F2C50B040C2059F06EC1AB8F042\", \"100C8A060E1C7C0A000182898E103E64E8E487C41E73F6D6\", \"4902F3AC4FA04E1F407CB0D51144484F851AA0F832CA5D1C\", \r\n        \"FF4904F5908882511A28578614389334A6DDA1041B1A5C68\", \"C06062186593268261A90CE8D63C0E5DF8DCB2A858CA3861\", \"1E3C40A020CFD8B770E1D888F2A051DC740D12B0C9A5F7EC\", \"5D2704F2282830380299240D30F8B3E1069DA22302BBA20C\", \"236E59C3AB5DDFA9D9051112850A0FF41698D28822B03CAE\", \"9E4528E44950A09393C47453B64EA28451A428CE09E0EA4F\", \"00999DD8F8E934A700858B3600BE05B8351A099296708198\", \"0EDDB5CEEB8B62BCF562D286A1D67E6475FC0841A6A74E11\", \"8C7B4161772CD33D7D766508FF9BD3265C96CAE55106633B\", \"EA3D8648B31B2704CA64083976EC81955F7229534318207C\", \r\n        \"0146232DD591D77316E6658749949994FF193B7369F08106\", \"0EC43091057A0C64C3452CA5E8E24A7C7435917B2E28E0C2\", \"24927540CA49615078124F375E604305B4FD9584171220D0\", \"59113110D6092CD361F04091460A2146955866A9E5965CAA\", \"935C3E5D3AD14014529413661369F0F5C06F0C9E29440D7A\", \"E90582206D9E39210624CC99407BC378D10F987799C14A03\", \"0A013A843F0DCCD9185C8A7017238C5775F7D8103584265C\", \"7FC200C45818DB0CD46225CE34DAD5A88C28400202751EE9\", \"46680A80701A45AB0C6A8743D524784D6CA43804C38DA92A\", \"E18F037A8DE9D017E4B0325480BFCD335D497CEC4459ACB5\", \r\n        \"15636369CEC4B74B02195852C7700674D21D34863A2691A3\", \"FB5542522C208820FF42BAF86DC46129958DA5080586E451\", \"41058914A28B146A49A1CB2EAF5136A94FA6ED010A749CD0\", \"41C8B5CC7A888D7B030168897DB4A45B312E04F2664DAF90\", \"AC34E8C17EA46B0B79E51118A08261604AB038D790736E2E\", \"204C618B5EFF52B394CAEEF054896F9DE4C2C97CAEF9C69B\", \"AD0DD480733BE63472516A82C4349D2DB66CF24782950D9C\", \"738BAC24B88B6FD9069213D5405DE99E0D5D5C23D19E4A05\", \"1C8D1E09449008CA1FAA43413F1FF863C02AD8B5F20C21C5\", \"61C8A11E3BC5ED65ABB16C90486CD50C5ACDDA4B0DEAB13B\", \r\n        \"63EA698043DF287ECD7B020FDADD1737FA64C25CA616ED42\", \"0D5D51C8122B0E9844214A6151D0F9589408CE94A0128A21\", \"31D1B81404C6F176A756B0E410133EF780AB8D1E6D242908\", \"F049447272CED32D06E1066A01AA623EE8969BD867AF7D2A\", \"41000021FF0B4D414347436F6E2004031039000000015772\", \"697474656E20627920474946436F6E76657274657220322E\", \"342E33206F66204D6F6E6461792C204D61792032352C2031\", \"393938003B\"\r\n    };\r\n    private static final String TURTLE_10[] = {\r\n        \"47494638396144004400D50000FFFFFF9898001111112222\", \"2200323266660065980063969699999999993396966399CC\", \"00636496323200336600CCCC98FFFF996699336496639898\", \"CC33333330633030306330636398CC98CCCC0099CB3399CC\", \"66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\", \"44636330DDDDDDFFFFCB100000001000777777888888AAAA\", \"AABBBBBB555555666666000010000022000032000044EE00\", \"0000220000320000000067AB006700006700006700006700\", \"0067000067000067000067000021F9040100001D002C0000\", \"0000440044004506FFC08E70482C1A8FC8A472C96C165929\", \r\n        \"12680AD290524C28D6C965DA04279BD8763ABD28A4467940\", \"11A7102D92E23AEA1A2F94C6A3004A341A637F80270D7205\", \"8787018A098A018C01878284025B764D0A6102820D88058D\", \"011FA11F091F20A3908A11056A03802F965D3680829E8D09\", \"197D100FBA22A190052491926EB04D508002797F659C7F9D\", \"AB9B276C0D0362142E14C54C29230A731414D5292C421408\", \"E3622E29150D463105A4A509110A12271CDAF9FAFBC52995\", \"FC0091D490636014B006FF88CC21412241822B018FA4F832\", \"6D93454E6904D9001766E346802938CD51E082841893B238\", \"C16B9401020413104040F8A008510314164F248CF8254F4A\", \r\n        \"FF4F89404D7119D354869ABF36D5A0912D229189842C023B\", \"E400511A61C032DAA0D1A08D0DA71D042800014A4301182E\", \"6C0C88FA87828011025A5DECA8A9C108700450D8D8095609\", \"0B0AFE5A90EB4BB8B0531BDE1EA43931D8B0BE1309C892F2\", \"F4150902310F4E90A0D0D8F110049A1806ABE076A33F2335\", \"1E4C5EE598438A1827FF5453134D8C00011429DC4DA6BBB3\", \"36151C9B0A19932C0C2D540E1F052BE000908DC5627CC302\", \"2EA14F0260DC066DAA155494A8EBB502646426C6A982110D\", \"D2CACA9387EBD55A19BC33EA14C040F34D940A7FF9F3333C\", \"28112EC1E4926449A1C08C1A2F3040580AC9D0120C4BA0D0\", \r\n        \"04C25140FD42D37DB39447581B0380F1FF4730CE38F24823\", \"CF58D44A35C2F5D5535751B9F0901F0DBCF84B43D7E57482\", \"5B7CFD36C272246850811831BCA0911A5C29C3DF915D75A5\", \"0936D8E4A8CD8ED64540DA0817AC9552546564691B052AF8\", \"C341570C25F00008C054A0401B11B9A0809343B401D8082A\", \"20C1820A2A2850430D74E2E3191263ECE9E79F80062A284F\", \"032134A8251CC831160852B279E853348E324A029525B151\", \"1829FE594364917D004FA54620209A688E829568031248E0\", \"D02A0922A1428F1A8C428205818E30862C65C036C68D5F0D\", \"D600A307F939815779E0060E7F3190E042266A7538C08EE8\", \r\n        \"3510A7632A88D1A118170D43061BB8DD38820B2D08205D31\", \"1C7499D0440D2629FF88B2CE3490540334C862037A62D410\", \"500D149CF0400335D8A085BC5F68068D2753C403894A07B3\", \"85020AA53281C203369812D91CCEBD95517841D53222899B\", \"E0F4913E1CCC114104AB16902F5B9C30F26000B888E0B2CB\", \"1F64009E30F2BA10434473B820412129ADC7950355811280\", \"020F8C39454DDC6D32C09D0D7731C75D642CD38003159040\", \"E222C9FD829478CBD8808249844910F57657CB1C93083299\", \"E24824AB949107D8846D64A44ADD89B08B80108870D4BBB4\", \"352040AB7D4D144E54F445488529310BDD08881A811A110B\", \r\n        \"EBCDF6E0217BD394400896D394C841B2A9E56FDC71D18288\", \"01FF1D3E852FAB0873C26DD68CCB0F54483A83C82790F0A8\", \"BECA26E8B95918E475F5ADE87BB2FF715D467FC4DBCAE7FA\", \"D960C1A50E2EB7D254D0F087A5DC4D3B31E70828D4304204\", \"0E7CE161B6E0B742481A64E4E182531CB4D0A559A3744581\", \"90EEFB2D6F1BCB78459B1877B54001BEF981D44DAC1AA05A\", \"0360701B35DCE6467938506DC8B023128C404B576803AD40\", \"A6004F7C035F14D08B3FECA206E280033645789BD548170A\", \"0CA02920F3DA4C57F662291220A0017A2242064755B4344C\", \"6B502149410B04F3A82E40CE02E7E8A1108748C441050100\", \r\n        \"21FF0B4D414347436F6E2004031039000000015772697474\", \"656E20627920474946436F6E76657274657220322E342E33\", \"206F66204D6F6E6461792C204D61792032352C2031393938\", \"003B\"\r\n    };\r\n    private static final String TURTLE_11[] = {\r\n        \"47494638396144004400D50000FFFFFF9898001111112222\", \"2200323266660065980063969699999999993396966399CC\", \"00636496323200336600CCCC98FFFF996699336496639898\", \"CC33333330633030306330636398CC98CCCC0099CB3399CC\", \"66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\", \"44636330DDDDDDFFFFCB100000001000777777888888AAAA\", \"AABBBBBB555555666666000010000022000032000044EE00\", \"00002200003200000000FF0000FF0000FF0000FF0000FF00\", \"00FF0000FF0000FF0000FF000021F9040100001D002C0000\", \"0000440044004506FFC08E70482C1A8FC8A472C96C0A498A\", \r\n        \"2824016AB0922EDBE9617B50AECE30F3602B9B4FB601C9D5\", \"300B2894512B4E4989EFC3547940D1161A0D050501840109\", \"8385090124800D270D03231678481C36242429128C8F900D\", \"140D15158A0182011FA81F2010201F86A57F348D0D022F93\", \"944D146FB32483828AA8220F10ACAABEB39F9F6FB861BA02\", \"03030280368098817F828D688014686C17287D36762C29B7\", \"CC2C2C360A20051A05159F1428E3E53608427A242A231CCC\", \"FF00030A1C48504C0D12201268F85080D1392315146C3090\", \"2053C1242C469441432D10B26CD338326A63030C400E9814\", \"246087C9CC8059BE107D1001C1040476AE4C111A09880689\", \r\n        \"FF921789D09B0648905142AD1E801886AA50A1020E1AF511\", \"6023E8107536FA9C40E1F19A51907F1A24A8880C8D001703\", \"2EB25021CD01421203D2740405884FB7470EB89E8063A703\", \"234C8434248890E0525004F898A418E0428549AB902353B2\", \"1191535F8C7AB25E965C64D387B1093E07A88A44019408AE\", \"12C0E07C04410312180A28280087AA191B73C6B970F1D70A\", \"6B22EA5EEA3A417C961979DDCCA090F0BB831E691F018F05\", \"41289001427F5E722D53F0848206E1CAF569D41151810419\", \"4EA10AE12ABD51F0DC00D5D84C8982840D093FF722B16D1B\", \"2007500D92DE679F29320829011810563223BC70112359A4\", \r\n        \"01D321D885B64A4DC44020427AB02CD2FF1079E358A5471C\", \"6D00720822867C90C1582BA658482F7F9C20806D144446CD\", \"4B8D7C3588684E65534004D60032541B8F5DA48771D55434\", \"5B200692708836709014C90829205064413FA5011D32B2BC\", \"D491366750D0C208FB25F09A040F08A0024014AC90C2421F\", \"445003343050D58646E49935421C45DA50C377E35450C39A\", \"057100C20051B800475648B0704226273437107D92566AE9\", \"A598664A84045A50AAC49592A630023B20B4B4440A1428F0\", \"286995B200454220B4621112246CE264459E4AC68258D4C5\", \"7A9E6F48D8004204D4FDA180A5DF91B0016A3FDAF0428D29\", \r\n        \"5C61D26C11984602A614C8C2532D1D9541013436BCB1E708\", \"E4822A9956653C33FFCD0B71851B57BB6DE466AE551CBCA0\", \"0579C848F50871C4816286A46DC0D149BEA67CF86B1BFBD2\", \"100E6B2CE812E59611105220826395C2133565E44A89027C\", \"1171DBBD98E858484E288244CD23ACFEC329059844451235\", \"983CFA944C22D44C8C2BA5C0926F5CFF7040801EAD9C97C9\", \"088E0C7CDE794E2DA5542BD81D35D2466868DC0402BC6D70\", \"C858BC9581704F003690F329A0A548B2513468DDC60BF38A\", \"81D208A268F425350D211D4006197CC04A86225077E2825A\", \"8042CF451C2850F696453935374D19B2D2CA8AE6B9EC082D\", \r\n        \"3506F52D5D8DC0024C52B1BE629E2F3CBD2C3533658CD0C9\", \"51A57088CA2A4A355514DF9F7067953A708C474221D76510\", \"D86B2B8A64F05E2FDAD4C5286429CCC80BEF5FCD9CCD7EB3\", \"4CF5EDE7FF6C447090D98CF5559EAFC545810B2B48166EBE\", \"6486EC1548F9D2424D0B0354D007F0CE464339DCE197E82D\", \"C60D901B8D0065933055CAE8FC148103CEC6004323D2D09A\", \"84FE639CAC7C021309D8C04240B001F3A58D092C40540318\", \"F2197940034C514299E788C081019CE7760F480123FC0110\", \"152044030B898001D8C0001750A50EF17BD9595250816B1D\", \"211D1DE00009B1343B4344A02E710155C36018B94CE1E627\", \r\n        \"24484CA346808016304F53466081BD8A08C52A5AF18AAC09\", \"020021FF0B4D414347436F6E200403103900000001577269\", \"7474656E20627920474946436F6E76657274657220322E34\", \"2E33206F66204D6F6E6461792C204D61792032352C203139\", \"3938003B\"\r\n    };\r\n    private static final String TURTLE_12[] = {\r\n        \"47494638396144004400D50000FFFFFF9898001111112222\", \"2200323266660065980063969699999999993396966399CC\", \"00636496323200336600CCCC98FFFF996699336496639898\", \"CC33333330633030306330636398CC98CCCC0099CB3399CC\", \"66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\", \"44636330DDDDDDFFFFCB100000001000777777888888AAAA\", \"AABBBBBB555555666666000010000022000032000044EE00\", \"00002200003200000000F80000F80000F80000F80000F800\", \"00F80000F80000F80000F8000021F9040100001D002C0000\", \"0000440044004506FFC08E70482C1A8FC8A472C95CAE488A\", \r\n        \"0729D148291B52D027506834BFE08EABD150906DB61785E4\", \"B20904B6011A2D4055C2F8E329DEA0901B05010120090109\", \"815C88055D3464232814365679452C340F050A20200A2D67\", \"0D27277F0E0E8B8B011FA91F2210222086A601245D673691\", \"944D1402147E366482850519A89B9BB08B0D0911247F0D72\", \"032E031CB85F68CDD705CC80D77D23A068DE6B24821A090A\", \"2427D3D442082D2B29A81A0605DE0CBA92422C432936242A\", \"27FAD6091C48B0A01116916C190C238184B14D8B48505032\", \"8244381B0BBF446A40020E36640D1C502183A24149340117\", \"A614E22B942F45813280106102822641A602198840E6C480\", \r\n        \"FF6F16D671E0A0C00688142EC6B4F145C60F20415C04CD04\", \"F1404B21A83867F5FC1969524621FC1A3025436256CE525D\", \"12A80529F6A733010D5CA02080C2168B395E07B260862606\", \"8C3F4E79F5DC2360040C155FC13CE0358682BA240857269E\", \"4C9909BF142C241BE1A7604DE7CA4838407910250108894A\", \"6C2848302FC544D046CC98330062510539D6FAEC5263A14F\", \"0B01B091A898C3C7592D1BA27CD96276A26EF0212D5ECCF9\", \"436BD1165306B8680325B6850DCD19230DB8372227A20F09\", \"567D18165596833F364EBE165A86040D1A7BD00CF0465616\", \"D442ABA1A7567A6BB125167C1851A2020529281001810994\", \r\n        \"851C1903FC54415938A1F20104109850FFD326EB5D35CC76\", \"DF7C67D0500D5430E181801C524021E9AD6788080F88904A\", \"22DC8C27167803A5B04B2F1C29921D7AFF9942865A678842\", \"82352DA480405E05DD654B28A2909149845AB948CB277FC0\", \"35C218274CE11006FB2DA45F0C3A96F447736D5DE3130244\", \"C4C0113A2C3420C14208D8D00527CC8C60430C2DEDD7932D\", \"6E908040033C52C60267B569B04C1F7280C782002D3CF9DC\", \"A59866AAE9A60225CAE912778DB1A4A78A56B08637092281\", \"8038B52D066570AA69028169A91ED1190811D4964DA67B29\", \"904A7A819888040B0EF00985A6615A551B156AA4E01A3FC3\", \r\n        \"45628144D1BC1A5C59129CC38C052F54995F1C158E40E92E\", \"A44EB6D41CC9BD80FF9B2F148CC7145E9A6ED48047637153\", \"1772EFF92280B5934D004E28565A794A000D44F5227CA008\", \"10146C4BEA48DD2C8608F81F54DAD43BDF64FC08E6162088\", \"6085DE8B89D082CE1F7E56969035187251C82AAC40F0C075\", \"2F06A28D003A92F042B94CDCE5A73E5292D50F54E7B1F240\", \"55AF60758C584C4572F33AFC8C70CEA0B91D69DE1619A815\", \"B116C31CC2053748F3BB0407A212924D8409B178DF851D67\", \"C0724D1CDA98E1D64DAD7B3118235420C10687405116C040\", \"6673CA8B2C3FC02104AAE0244C44629D3C771E4369D34242\", \r\n        \"4E51178B86C5B01723C11C03E68C4219DDB50B75C90C0C4C\", \"2A8243F08A8B65D1D21C53E37D2525050067334EC71F6881\", \"D3553602738306052D3C66E67891E7C4B179996B45C6E7E0\", \"3C6EAAB0292C2C902EE3895292296551B756F5D7F432C2F6\", \"1572478102298C5090BC7C399282EC9977590BD203B450D1\", \"141A0420CF92BE0BC48F8EB00FB60D8572F8F11E8514D0C7\", \"185E44080528E042380B83940855A503ED613F7BE0487EE6\", \"E61A845486191130C0336806987A81C3059EA81F686C5091\", \"02C46F031188812E6230823D08865243B081DDAA902917A4\", \"00041BD0C0C12A50035E08CB08927012A7C0B70803868F77\", \r\n        \"89FAD30BBC7629D728E053508CA214A7688420000021FF0B\", \"4D414347436F6E2004031039000000015772697474656E20\", \"627920474946436F6E76657274657220322E342E33206F66\", \"204D6F6E6461792C204D61792032352C2031393938003B\"\r\n    };\r\n    private static final String TURTLE_13[] = {\r\n        \"47494638396144004400D50000FFFFFF9898001111112222\", \"2200323266660065980063969699999999993396966399CC\", \"00636496323200336600CCCC98FFFF996699336496639898\", \"CC33333330633030306330636398CC98CCCC0099CB3399CC\", \"66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\", \"44636330DDDDDDFFFFCB100000001000777777888888AAAA\", \"AABBBBBB555555666666000010000022000032000044EE00\", \"000022000032000000001700001700001700001700001700\", \"0017000017000017000017000021F9040100001D002C0000\", \"0000440044004506FFC08E70482C1A8FC8A472C94C525214\", \r\n        \"0A4BC9692812894FE1D9EC7A3B0D1296A420352C360AA975\", \"1A0CD2034163D438A16CD3AFDEC878D9FE0D812424011F58\", \"05010105888B05618F36288114167B4979422C36278F6109\", \"059F881F01581F1F2010A9A6A4881901660D69026F14961D\", \"2E643665810D2DB136038136BCA18AAE1F222086898B8187\", \"B1C1B1BD2336047F6D0F5CB645149B36B0BC9C0DCD0D14B3\", \"BC7F78DBB61CC19F1F1B0E142D140C3569483616F4EBFDFE\", \"FFFE58BC7061250AC03D2E148050B8AC0126222C528C5033\", \"204AAD837AEEFCA17042DCB8668B5E390AC4498E8D141891\", \"748B72E2DB2745090A8930014121B344CFD09513A6CE120B\", \r\n        \"FF1A0AAC245050A69B0D6A27283470D028512264201E2818\", \"55C8941672B1EC001BE0420087941D3409B028AE00094768\", \"1D3005158AD7AF5FC3D48839F560D043809AD20988E1B6CE\", \"309E4753A4B001B60B8B06291CA550306044E1C74552DC85\", \"FC6F443010A448BCF84AF9C8371020486C28B74482838524\", \"A87536721844CC04AECD0AF0D3AD819BAD14468C453179B5\", \"100482BCF9FD256098B7BF9C5A5EF42D84423012C3468654\", \"C4D629B87234CAF57CAC60A3D2402111E1B4EA2ABC4861C1\", \"DEBC4009D628A00637036438057A19EC51A1100DE275FB4F\", \"EF2655985103607FB9E5C0598964904102A9404093325A38\", \r\n        \"F50A38B9FDB25C171C10500608116031FFD408488DE35623\", \"A03C65CA7CA83C10533309ECE7D61B03B4404F4F14ACB7CD\", \"4ADF8D3388530618405D23E31C32122F464541D0080F14D2\", \"E209FF68624E1D0D4802DE156280D7575F3D5920C0810E71\", \"9692581501138894C6A5A154473608409002CC1941020511\", \"9050518D7EC4D2820D320ED18D602DB42904074F4CA50116\", \"719613C57F1DB0E727158B36EAE8A39D1509A91E9A944142\", \"36884E4A441544918099225EFA59811AE35C78C4612AC639\", \"42A8CC25A4C0034982409A127295A3C2A29C2A93C522D0B1\", \"30C513F3A4334F035D29DAA61AB065A145040214A7D71FCE\", \r\n        \"A6E35FA38791A1C0487F34D6D25F63A561C6093454D4A80B\", \"1A6D74E5B94AD160FF5C0C951C1B57717D2922EF8AE01458\", \"C176940D46C75F2361E19A844E398202382754305B672A00\", \"E39159558D874579E245E04039492965C30BED8295703472\", \"F0B2C87CA7A4F2C0284D3123CD24BF646A4B37CD3E474848\", \"19A002C103A031F3DA8F220AD3C61F29D5062521F292F214\", \"168540501F292F2932313AD3DAA2C9446908EBF1226A9138\", \"9F0833A5521F550564C06B20729863AA179552E922277FD1\", \"504105AF89F2C1CC222F5388225686230EBE5D84015A7E24\", \"B444F074002B237806C940608A23625C67610B00B08AE844\", \r\n        \"977698820B1254400D303906C24C89E3258319C41FC1320C\", \"35BDE466140B16A9FC67071CB4CE8102F7A6E1F147C514A2\", \"CC8C53098868964E6608404F37272C021B0636B0AA873949\", \"0DC309D024362F8659437A94540B230C42F450299C603CA5\", \"9877CC8B196695D12F9030A2F9470AB04C95801A15606494\", \"1B74B8858B59E00BB3132C14842A85EAEB70E451378A4381\", \"2466B1BC34C1807F60C9CB0062E0B34044230A3CA1800B80\", \"B33DE62820027F80C16CD0018B8A4444132D5803B52A7020\", \"43D8A60530984837A6709716A8000A8B3A89025250954F54\", \"A0013558211252E007046284034721031666E80B1768AA0B\", \r\n        \"269847FE8EC8C4263A913941000021FF0B4D414347436F6E\", \"2004031039000000015772697474656E2062792047494643\", \"6F6E76657274657220322E342E33206F66204D6F6E646179\", \"2C204D61792032352C2031393938003B\"\r\n    };\r\n    private static final String TURTLE_14[] = {\r\n        \"47494638396144004400D50000FFFFFF9898001111112222\", \"2200323266660065980063969699999999993396966399CC\", \"00636496323200336600CCCC98FFFF996699336496639898\", \"CC33333330633030306330636398CC98CCCC0099CB3399CC\", \"66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\", \"44636330DDDDDDFFFFCB100000001000777777888888AAAA\", \"AABBBBBB555555666666000010000022000032000044EE00\", \"000022000032000000007EAB007E00007E00007E00007E00\", \"007E00007E00007E00007E000021F9040100001D002C0000\", \"0000440044004506FFC08E70482C1A8FC8A472C96C1E4923\", \r\n        \"50221150A59C58A782A4F80412D204E965B39D4E8D419942\", \"41931A27949A92AD27298206095D68E8C109050101058182\", \"83110D7D707E0D34652C764C2C65958A8387545F091F2210\", \"9F10205E8483248B7E27360D142D140846169149366F62A6\", \"247B688A8D7E82058719019D2083016FBFBF7E037E66AA6C\", \"2460242B0DB2924714650214236FBA67AACC362314CC0229\", \"290D1CD6EB422C34BF1A1B0E15230D35D857ECFAFBFCFD1D\", \"2F6F1428B051CD1F960AB8486858A524058501161A8CB361\", \"B04E053DB85229E3D52B909846CE50B0B191AF62116C6C1A\", \"21FBD5C913082984A85041668C63834A05ADB1D85969192F\", \r\n        \"FF1A15224CF9C5094408100FBC7C7890D45081086F18316B\", \"D062C400027EC04838A10E490B170D52A8C0A58083827636\", \"0650E8A6B280A95DC756728CEAC224166C36C80C8801EEE6\", \"897A36BA7660856084DD26235CD0FA35C0C588B387F9EDA4\", \"13B922A5065D3041AEDCAF82DB37DB381F492110E9879904\", \"DBB1112060C08017372BA5163D84C55A400614246820E0C5\", \"B65465E0944935A082AABFA972567681A212365EC50A4DC1\", \"E448CF54892F2C54A6F4AD178900C48A7D188F29107554DE\", \"789729C98F435A72E2A01112040202D3301F5E869F8F296A\", \"DA3490F47399757FFCE2C07C0564D009281088E005271F20\", \r\n        \"838B4DEFB9F0900D14D83690724390B0FF5623F53032822A\", \"CBD0C41F79E389F000311924D3802152DD340237D06CF085\", \"02AD24C10109368010C12F294850810B0294E1932EDE1563\", \"008212CEB70A1CA9A44299052F5490A141B661F8904D8A40\", \"F359236A35924A0C86D1460477488609E6467EB091820D2D\", \"A8708299A32960003978C060559148A044E71029B4F0400A\", \"1F68A041011BE0C286607F36EAE8A39046DA01256B702829\", \"129408D4801430307A699F5C2804825B147DCAC4380F44B0\", \"455890927406654BA4E0580C14A8E028390A3CA01B081E2A\", \"37926F553D4483A591A5C08514E315328643C1156983B3CD\", \r\n        \"D8D01C7B9CB140822853241BC1882790A098967968C44B19\", \"DA99F906171B2CD2FF0C6CFF39E2D62E36A9416C457E19E9\", \"532FC97C514A547ED443C34D0294CB59B47DB154CCC11282\", \"F4E44D28C4522C1A489A32C5C4A765108C2F88F4A18A33B1\", \"CDE60F076A04D74B040783E152794CE2AB0C5E1EB717DC96\", \"F852D18909F7513C8847C538808A6B0314396F1D94A8D586\", \"1E988817C6171F80A2D44C4EB6E92133D4AE43F025F2FD62\", \"34042698104AB2E7714443C88D9580400AB2E0F5F399667C\", \"A8481F0E583DC8789F3C60DFCDE379D107541CA1D4826B04\", \"0427018F0028C1327022F785D021468BF285DCC4B8580833\", \r\n        \"DBA4D1CA323628108006B99DB099111E2AF092401E8A7C53\", \"5B4469823479087629E693DAB4901078BA92A0040B98BD34\", \"BE710A80BD874A238690F2B6797D78B99BC2C0A9E01D2E4D\", \"5CB0D6061BF01A68BF283C92924AA65067B5CE6E39056523\", \"AC1001AB3F948639802E5F16007A206BA342CEBF18D2F95C\", \"5ADD21A91248C19931420B0D344A29926D74FB2F23420B87\", \"0048208140392A4B69514B91E095065D948A12247048A4D6\", \"D213D7386727056141C0061035DAD0CE73BB8941032CE082\", \"1AB4AC081D140DC85E248C422D422DA53215111C2310CF05\", \"40206FF2940C8BC0010E98A05675D9A1108748C475040100\", \r\n        \"21FF0B4D414347436F6E2004031039000000015772697474\", \"656E20627920474946436F6E76657274657220322E342E33\", \"206F66204D6F6E6461792C204D61792032352C2031393938\", \"003B\"\r\n    };\r\n    private static final String TURTLE_15[] = {\r\n        \"47494638396144004400D50000FFFFFF9898001111112222\", \"2200323266660065980063969699999999993396966399CC\", \"00636496323200336600CCCC98FFFF996699336496639898\", \"CC33333330633030306330636398CC98CCCC0099CB3399CC\", \"66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\", \"44636330DDDDDDFFFFCB100000001000777777888888AAAA\", \"AABBBBBB555555666666000010000022000032000044EE00\", \"0000220000320000000057AB005700005700005700005700\", \"0057000057000057000057000021F9040100001D002C0000\", \"0000440044004506FFC08E70482C1A8FC8A472C96C761003\", \r\n        \"852292A892482CA7D6C96A3C408A042861A30C29A7D3C066\", \"1BB847A486BC6113C0CCDBFC91CE2E9FE60D051F01840505\", \"0186880106110D28747336277D297A4B246D0D6B05098887\", \"1901091FA21F22261010A482198657098072360D23176C24\", \"1F1F110A361C4D2C36237D7F930D02812486098901190919\", \"B8CA050D249E056B14732E96431C23145859492C14B26E6F\", \"737F91D88036422927242A03DBF4432C34CA1A1A11D20D14\", \"1408EA091C4870DB2F1B0AFE852BC850C9BF59C11A6E6910\", \"669486310528C0B011634D99698738C14A27ABC18917302A\", \"492C52B2E4A1008360828000620CA298CA943133048844BA\", \r\n        \"FF7F78548EA3A0528BA47472A23968500866A90F63C44010\", \"B1B35F1C58C5E690487085CB37651FB6C611D0879D5664C8\", \"8E29103B47801B3A274654A8D06BA52F727D6CC0705B876C\", \"51BBF43810BDA2605C5DC088136BF945E2412765241433A4\", \"50832B096F78241B61F16BD2C2222C52B0B1802D2F9BCF8A\", \"539090A2AA0026369106F061A3260E5237272CA06E386EDA\", \"6A05D24ACE69D5C080814E8860C9163E9BC26E8268FCD9E0\", \"C9A90A295C9E3A19DA7E05901B0AD79E77E09CA7056D5886\", \"408980F065D4079A22407C78A6286D2C4D7C64B7A8804252\", \"030C1234701813A2B94156209E34754829A8B0F71808227C\", \r\n        \"B01D716D8C30821B2DF826930235E841FF8E3F80D0404305\", \"C81062E228A19042C82BC9F4C3C72478FCF217138229D000\", \"576BBD168734EBCCB16221132E15888BFE3840031B9959C2\", \"0126203890800A2EB41087021C88E616883D3640C31C2364\", \"38477F1464D8C7372A8C30636AB0A923005274C8964292BF\", \"C4D08E6648D830461C23CCE20259E2D179040B033C90C218\", \"832420C5097DFAA9E8A28C364AE79BCE396A090C98344602\", \"0C0A486A14059C0C624DA29A0E612309354570C500A086CA\", \"8D6A2EC46061AA89A5FA4F192ECC8AC299927D7345239112\", \"F1CB006E7954120D0290D5AB6236AC36D32822BD809724C0\", \r\n        \"BA85862C5B96844D0D36E0CA100BCA8E8251041590758530\", \"5AB988020A145420FFC709C5EA661789B88060EA2B691023\", \"473F9C8424CD2371C8B28E00D866BB120B354CA3491DB2F9\", \"989D89DB05606A70C3ACC36E192BB940405E8008A21322A0\", \"4C4848C63CAEDB8744BF64D9800B0580606206EBA9AC4828\", \"0912E2C055FE4142B11114BCA02D1207215540048A94B2DE\", \"179DE01213CC2FB9C64E1B36B4E0C29BA751B056924C98F7\", \"102041B78C6202EBA172B42758C9418E856E11F08715BC68\", \"81C93F7F5C61E28FA140058109A744D8A9A70D988A4E2C40\", \"0502C2712074B5986908E65BCD332288F0C0030ACCC79E84\", \r\n        \"3C55D14FC26DB400C7562034C042A6797C785520726CA59D\", \"893561E7603543CA21DBB350267CEC1607F967EF314923B7\", \"D1224D40DEA8F4DEC5C09A041A22CE120B9B1927B84C35C9\", \"4483950DBE23B10BA986A2E59324264BE336D8D6DB37393A\", \"1FD5339702F25591820415B440010A47FE93E71F2EA5E51A\", \"6444AE6992002EA89082E6DB10F08D045250C4C1801D104D\", \"19C0338CA344021027E85B028992AD37D1691CE4125BC2E6\", \"808D01FC61000111020BBA34809D01861CC5320705E46492\", \"5800E039AF5B14B722D0867FC0C002233892AA9C47915138\", \"A00217A8410DD6304323B4001E1A8049013630B5C8F4D057\", \r\n        \"9653CD6AA46139231EF189508CA2141B12040021FF0B4D41\", \"4347436F6E2004031039000000015772697474656E206279\", \"20474946436F6E76657274657220322E342E33206F66204D\", \"6F6E6461792C204D61792032352C2031393938003B\"\r\n    };\r\n    private static final String TURTLE_16[] = {\r\n        \"47494638396144004400D50000FFFFFF9898001111112222\", \"2200323266660065980063969699999999993396966399CC\", \"00636496323200336600CCCC98FFFF996699336496639898\", \"CC33333330633030306330636398CC98CCCC0099CB3399CC\", \"66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\", \"44636330DDDDDDFFFFCB100000001000777777888888AAAA\", \"AABBBBBB555555666666000010000022000032000044EE00\", \"000022000032000000005F00005F00005F00005F00005F00\", \"005F00005F00005F00005F000021F9040100001D002C0000\", \"0000440044004506FFC08E70482C1A8FC8A472C954DA2824\", \r\n        \"D0E75320A59AD8AC7648190D28029B6D406A9C1AE651A326\", \"BE6EB59C8622213590120DDB19DD2814027F80807F7E807C\", \"24057C360268038D14081C2A3657360F36245B29627B7D7D\", \"090120105209091F10261010530553207E05097E66671427\", \"8C6889242C6F5C360D6568140D150E85B00182C97E0EB989\", \"68BFC0362E15BBBD422C140A2020B22E2E68241C1DD9625F\", \"7960C0C28E7CD094D7F058290D091A0B54090A0A0DBCF1FE\", \"FF009BB07013B0601309245C9080E1C2463F8358503C7800\", \"22192812025EE869D042CC2F147E48040B07AD013B342706\", \"8421581001051462C23C6B052AC00711A340B5CA902C804E\", \r\n        \"FF58ED0EFD1A718100300D741464D2828EC2805F84481820\", \"94CCD507293629EAFC84A7111F04FF52BCA4010C8C9E32CF\", \"A2F5A91212ADC8670D5008387782020B1636462018F1F08D\", \"8A71D7CA25A0E1A80B8516239E405CCCB8B1E3379B6C2878\", \"40C2D1E380D4B6758B40C20BCBCBF1360D6811C6A318BBA0\", \"87DC8D46A96F8A13294F0F3387B25603B22712BF80813A20\", \"0B17FABA5D9515C1C28B0131F2EC2960A0A72112113CA180\", \"CDA7EE098F9F89B07831A2C9BC3E22F308A010CD4FB73FA0\", \"78FA294528D0A07627609E6E30A2028133A5129050A1654C\", \"50F7368960825601E0A48A0854F4D487029C4153D8786A88\", \r\n        \"44870D8069D11105189E508002CAD8D4FFD329AA40A0C007\", \"19E0F413490DD8E288180FF5059969BFDCD180033539E753\", \"55A32C038C2C7029428141A6417346279FDC68882E7774E5\", \"CE198B58314F7658A840C203DB28550038306238CC907CA0\", \"604650B79811CD8FBEBCE0621614A490026572548844647A\", \"A444410CE3D169C1134F41991A139D9912813115A4D8C09E\", \"6F509282022394A1409A6E12EAE8A390462AE9A4589CD61A\", \"A55958A01422B2F08329136295614A0065D8F0E9124A61B2\", \"29627C9DCA844B6A7454439AAE1E81D70B1624B6D12F61BC\", \"F0420A673A062C12789137C653278991C71A5D686401038C\", \r\n        \"CD03DD06AFE45109274FCCA6161FB82987120D346017EC16\", \"2CC8B1CD031FC842FF42052A9191877F880C82485025D525\", \"A647BD2161C1B8431C3AA24FDC74AA51348894616421CB44\", \"5000599EF031C017E21AA1A59E432094A4021894FA9F7308\", \"C7120B8FB014D00C4A503082A10B2A8815C609246C20C109\", \"0A08B48F699DF8916E2B377DB00C28A50CE2611542FAD802\", \"798ED481C009FC1E31C21E675C59404536894291CE577143\", \"A2CE7FD0DB8E182350E0422C362915B316B690A096C20564\", \"90C14DA374538A2A52E86C0AD6057056EA30798C3642A262\", \"F712837FED20C39329A688924A8E5789F05E2C60B6C1410B\", \r\n        \"30A0008F68628AB4CCE5695F35CAD4093C00C132212B82AD\", \"6F8B180B4C7B7D7478D5D574F4744C194FF121804178A1D8\", \"D44E3581801D004F6B83FC315CC3C0F482008D86B65149CE\", \"1C13B2015365EDC92C18BE2B400A0898FD0F0B93EC2A8CA0\", \"FF91003A3073BC8592A0A64D9F420B81FD52C3862984775D\", \"4AF08DAF352D7C449F473F6A5A80612F0AFCA2C0C7FAA980\", \"0BBAC086F1D40543ECD8C89048E02541B9EB049F1948606A\", \"3082FF290C01C0388258F41086D841833C2F605A5D92D60B\", \"0E10605D0DA098ADE0543EF2C4C0056C20E1A4583087FF31\", \"84023578980C25B53E9C25C06E14E04FAD88E0023569860A\", \r\n        \"2468C1A0865804040CAD7D4C8CA214A748457804010021FF\", \"0B4D414347436F6E2004031039000000015772697474656E\", \"20627920474946436F6E76657274657220322E342E33206F\", \"66204D6F6E6461792C204D61792032352C2031393938003B\"\r\n    };\r\n    private static final String TURTLE_17[] = {\r\n        \"47494638396144004400D50000FFFFFF9898001111112222\", \"2200323266660065980063969699999999993396966399CC\", \"00636496323200336600CCCC98FFFF996699336496639898\", \"CC33333330633030306330636398CC98CCCC0099CB3399CC\", \"66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\", \"44636330DDDDDDFFFFCB100000001000777777888888AAAA\", \"AABBBBBB555555666666000010000022000032000044EE00\", \"000022000032000000003700003700003700003700003700\", \"0037000037000037000037000021F9040100001D002C0000\", \"0000440044004506FFC08E70482C1A8FC8A472C934DA6C8F\", \r\n        \"87A2D15035AFD8EC3165A3909E545BE374A2342AE65703C6\", \"4EA55857D67B494929408940A1402209FE1403640D7B0579\", \"7A0588887B018B546334661436232317368606200F0D5A08\", \"0762248F248D891F22100F1F79212626101020011F0FB27B\", \"54058F830D085A4A5C024F362784B96724898B7A0106850D\", \"0A09A28F2E634F2C1427292E0329BE426234240A0A7C2414\", \"C1282836C1021481ED02C40D03ED3130022F0223343670DE\", \"FF595C2858A1A08FB80EFE002A5CC8B0A1C3862A2AD4DAB0\", \"215AA511091F6A14F3A7CB305C8FA8481B4346DE80311D85\", \"09E0C0A1C593110D364810F34BDC07102022442870C2C649\", \r\n        \"FF5C05F014F8F0215629A21F3264F8D02800210511A4F96C\", \"6046CC231ADDFE4D12F0B301893CC90A05587A1329D2525E\", \"115131D3C0868B0A24B2361466559E1962B98CF1094992CA\", \"4F982D32329400176A54121CBC41F9A0C18001AF234E689C\", \"4CB9B2E5CB987DBD50508B6801046D333F94A06084A81693\", \"84D5912B3ACE08AE7F0674ED6BBA018A47774F0C78524789\", \"0D2E4C5848EDE2868BCF11C2702DD3E3356A8406348A3DE2\", \"4D7212854A1508D43094A0A0822436C6E149006295288ECA\", \"9717C850EA5053B1B7F83E1A70DDEBD7684DE434A8313D39\", \"AE558D9C12CB2A45C1521E7B48DD9240027CF56443432CD4\", \r\n        \"F5485E013682202C0F0C9840866825B0FFD724FD09061018\", \"6D51D19E030D94D2948563ADE28C335409D2451F29B4D002\", \"43115A259F74619552C857C684E10E15021091C2240BB100\", \"1331C1D8C5177A618C51A27CBF514615907868E31512C5D1\", \"E5257D66D450C300564C4680390D24F68F0443CDA281216E\", \"90D0DA42ACCD69E79D78E6A9E79E7CE6790D6F29A8A0669F\", \"4CBCF085217A3C48E812D710E380061A444302378B26C101\", \"152718648E6C148858A9110358E0424A35A496DA6F0CD4A9\", \"2717B23D318034281043CC6D637C61033F743171CE080CA5\", \"D0513BBBADA30B4964CC560D5DAA0E01C549C1CDE1C430ED\", \r\n        \"84B187A4D04D685B5B30E1E6171523B8E0C639C39010E908\", \"C90A91023111E0F4FF412EF884B215508D80954C23A38C14\", \"929795A030C903B3805081A742D470C726371562410C36A8\", \"0114230C17E27022ECC5C717720D8C40810B7D040082A249\", \"0877075309447A1E5F6D26920051CBB8170058CC1122CD09\", \"FA44764225F6C5C504072990609E04E77135E18201A282C7\", \"CA388920025343B1E794875261FA8410A97A73A93A1E89D4\", \"E6CA21406042790B82602053B3206D3591C296E150175212\", \"B2D37A1A43A000815E1B38162CF23A2C5F2F0D1927CFC201\", \"2A4D140422E0D488512B37E0A1C40EF41443270C5980765B\", \r\n        \"192FC3C88A613702C2D18B7888E9DE02A4800009D9287469\", \"1781849248010EB0AC877B87EC8162906D3DE1E01371794B\", \"BA278921D15083030F33CC5C2E05F541853A6C717CE46EBD\", \"8A517CD52467CC8731244416524F549439598E62D8650C31\", \"120E9F3609B486710202002B746438061DEBEA75160782A9\", \"3460AEC3BD4F1C3F0405093819AE400523B4D0891CC61986\", \"8306211B84AD83023110D524CA0590237DC53C2918C177F2\", \"F32D1018200505A801092E308F34510601E4DA405C069585\", \"4BA5882809D88002CE55199CE1AD81330BD9063ED0161790\", \"F053CA7207B92688C31EFAF087400C626B82000021FF0B4D\", \r\n        \"414347436F6E2004031039000000015772697474656E2062\", \"7920474946436F6E76657274657220322E342E33206F6620\", \"4D6F6E6461792C204D61792032352C2031393938003B\"\r\n    };\r\n    private static final String TURTLE_18[] = {\r\n        \"47494638396144004400D50000FFFFFF9898001111112222\", \"2200323266660065980063969699999999993396966399CC\", \"00636496323200336600CCCC98FFFF996699336496639898\", \"CC33333330633030306330636398CC98CCCC0099CB3399CC\", \"66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\", \"44636330DDDDDDFFFFCB100000001000777777888888AAAA\", \"AABBBBBB555555666666000010000022000032000044EE00\", \"000022000032000000008400008400008400008400008400\", \"0084000084000084000084000021F9040100001D002C0000\", \"0000440044004506FFC08E70482C1A8FC8A472C96C3A9FD0\", \r\n        \"26A5D1B0D51A2E129662B3726DAE468542B295ADDD6FF7D8\", \"B5354009852D5AEC56EDA44222B02F04027E097E7E011F01\", \"795489366455530D1431734D360A0A0920200A18728B890D\", \"01207F1F22260F7001A426100F011910107F050D8288540E\", \"5D2E15557446169D55547F800E0982B10583800D052496B2\", \"9E5D65BC4E766A6D8B5C14535F8DD753312E178F0DD34C14\", \"0FBAE5EAEBECEDEEEFEC6E36840508BBF0463092EDD88B6D\", \"8E54486899224F0B953467DAB808376F0F887D49CC34E383\", \"2C41040BFADC2C13F627C10743803E82F818F223B25909A8\", \"A879F4AE93C6659F0879049441E4483E10E02093B5935B9B\", \r\n        \"FF0EB87CC5D368D00D174F3C3DA100F6F2A03F7C426C3C78\", \"A0A0009C85E4A2D4F8A0218086506BA08A1D4BB6ACD9B2D7\", \"60643DBBCE4E830816156C81884FAA1B778BCE1844A19111\", \"36958D1A1DA5B0706105026FF83CA8D1F60B37120904CA22\", \"1181F233810E042A4A7406AB404B74235EEB9251A01D66B3\", \"00F5D1C3A7181F40019629A85CD469E825352A59BA84496E\", \"536470F68880A0E0D4AB9C1E0B7C80C58CE7B3717778D570\", \"73E58EBF80B1328022FEC1E3ABA9AC02E48CD500F2338DB8\", \"484840E0E2F69336890A2888059B3EC70C7B6037B0B4F7AF\", \"FB7282C107130A15E881CC6B24FC21D966808545D635E53D\", \r\n        \"F2DC41D04974903631701103032E7021FF9615FB55150656\", \"5048F5C1061A24B041256BC123D503093800428B509C8380\", \"1C34B2A5E38E3CF6E8E38F400629E4904416894417E001F2\", \"9F911DC0301526A108E4E18353F2620306A69842820B30B4\", \"37DD3591B4A10F0C648EC6C49518DCC50E0516B467C74B6E\", \"2CB51460B68DB64807DAD8018201F60CE58B1B2E14808216\", \"362C250F538069936827D9486500080FE418853FFEC144C5\", \"9C032E336122286CD3571690CDD8966097F6710C479A0A83\", \"8C419EA804E8140530A68E1D6E3A128001F95564A06AC918\", \"14D985E338F85E011B60C24719D9C410503234D1979F28AA\", \r\n        \"C62688208910B4241B53ADF2814EB218159F4E23ADB2076F\", \"AFDCE411082795F7FF9C192C9558C9038624600022D751E1\", \"1A1F20AC125C02C741B0C7540964B053318FB841A8B251EC\", \"179C66D720136828560D07E3B9C7159700C07CA496EE1465\", \"B8800002D2F042010106C71741458570D41D04226CFBD125\", \"C714F34C9ED699F1F1B5A29581547D80C8244A7E2615E080\", \"A58984714F54C24E8A0D17022918E327B9BAE68701272920\", \"10BD8AB6DBD2D2064346450579F0CA5ACFCB6CC9D43621D7\", \"051FAB8E6C7A356A9E90B0D4BA3897538D530D02A3B7DEDA\", \"6868832F2E7CF9E09BEC2AAA0D097DF7A3D29F8B185D8336\", \r\n        \"63190C6A425FDA69F99E9638604079ED41A511A4B3282001\", \"15092F63521C1D4205CC2582F44907A099C865025957BC58\", \"13F79179EA4832054CF6EEFBEFC0072FFC1141000021FF0B\", \"4D414347436F6E2004031039000000015772697474656E20\", \"627920474946436F6E76657274657220322E342E33206F66\", \"204D6F6E6461792C204D61792032352C2031393938003B\"\r\n    };\r\n    private static final String TURTLE_19[] = {\r\n        \"47494638396144004400D50000FFFFFF9898001111112222\", \"2200323266660065980063969699999999993396966399CC\", \"00636496323200336600CCCC98FFFF996699336496639898\", \"CC33333330633030306330636398CC98CCCC0099CB3399CC\", \"66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\", \"44636330DDDDDDFFFFCB100000001000777777888888AAAA\", \"AABBBBBB555555666666000010000022000032000044EE00\", \"00002200003200000000A50000A50000A50000A50000A500\", \"00A50000A50000A50000A5000021F9040100001D002C0000\", \"0000440044004506FFC08E70482C1A8FC8A472C96C3A9F1D\", \r\n        \"8B0D5A4C9D4EA4C4E753203528024A87954AD96CB1534D40\", \"B2914E825AA3613BD90614DB9742D9534E09011F242A5447\", \"367988670D058D018E01918D8E938C11242405739B578554\", \"290D111A09930515579B8C5A911F2210201F5A222626AF20\", \"090F20920D599A5F0357671D1429898643676D9B050A9159\", \"0E0D8F92908FBEA9D77629C74F6667767370706036026788\", \"652C422C23995B812353DB4A1C2A14B920110DF2FBFCFDFE\", \"FF00030AEC5006D30705848E2140A0C013820123F260D393\", \"0A15A36B74AE491CF12586187E125D2CEA12ED5186695B40\", \"88F870520B974C8C7CD59983A84283112DD22DB1A140C12D\", \r\n        \"FF1020144868636E0E094991329C8C1420C3962D493F54CB\", \"0253DC958802CD842947714E1F8C34C1A522578E828B2F35\", \"FA0C1442410E426612785151815380B6B578F3EADDCBB72F\", \"5E0A0AFEA8E060880F26982354E86CC28041A2337CC49029\", \"368C028A13BA70D530948C84865C9804B8488462939E0174\", \"F0801500914EB0135FD8614A4062B13C167706289AB9A9B4\", \"0312117C1598668D26EA3E67EEFAB3624700EC984C4B454A\", \"104810D36A0DA88F9D53CED0E4A22FCAC69833FC7AAB5781\", \"3E40580F4B50AE488CB057144D82580A04F18EA420718F3A\", \"2CDA74FCB14900BA1470DE03B1A807C13DEEDC825D711135\", \r\n        \"7082724F70B09F1A359050CE73D74C12FF1D52D70D670023\", \"2428400A6C883420400314FA93876AA83442CA1C1594D208\", \"268D7082CA092FBC3080001750A0DB40DDCCC1111D5DA572\", \"5C6E5708504E030E54408A039720A4005EB8DD440126889C\", \"20C113281490425025E6554C2ED42560A55F203D00189B70\", \"C629E79C74D669E79D78E649852284E9D9440A1560109727\", \"544C66813EFC90611B1129706560040F6C068519B3914202\", \"28232C3A441966BC60438F349CA19B396784E1C2A9351070\", \"C20306805026142CD883C928112810510B36D460030A5C9D\", \"254769D7DCA1A257C040E6420B14C83608A150B881891C2D\", \r\n        \"4404CF4C275C56D115167132070D34CCA19B001CD5C7080A\", \"FF34FAC709EC8045FF5E03A575F15B71E06C4987737D0274\", \"8793C85D04530106C0078954FB7A010E6C76D8D022483FB2\", \"D6000D0E84389C74D1959249010978BBC8170099110C4532\", \"3E128823D529F5C85339F262CD576834408FA64EA4C04067\", \"5764224D002E4902147B5C0420428193C054113108A4D042\", \"0B071B71420559D0EC050531789A8A16D4B502542C0980B0\", \"DE2B1984F08A33D93D12D6C68BA4204512A09030B53B2772\", \"380775ACCC82A01656B317C9D6D590A2491E2BDAB1180B2C\", \"1351434FED2560C050906DE24201200CF781D50A9C148B08\", \r\n        \"3B43A5D294EB2E4CCE5708EC592980482A4C9E87ACCC7C9D\", \"521F378290C09BAC88A877CA7180C0086164B44C35B447FC\", \"BAB0D7249EF55C1FD9F4BD4DA95F381BDD6F32534209EA18\", \"C131000A060334410CC282F19C26DC3A006F711445268047\", \"36C010111F01D143CE2202EB21604633A136AC57522C0243\", \"05156C490C918B38C7CB17A944F61557A4A620CA071A1845\", \"4F46E002BC14A960A432073A925083026820001A485CD1EC\", \"C58B1414E02C2E18C1959EC00E15D86A04F522126CAA4631\", \"126470834F60C160FA528F13182801C141A19F8E20071B0C\", \"6582331CC20550B0C21CFAF087400C225F82000021FF0B4D\", \r\n        \"414347436F6E2004031039000000015772697474656E2062\", \"7920474946436F6E76657274657220322E342E33206F6620\", \"4D6F6E6461792C204D61792032352C2031393938003B\"\r\n    };\r\n    private static final String TURTLE_20[] = {\r\n        \"47494638396144004400D50000FFFFFF9898001111112222\", \"2200323266660065980063969699999999993396966399CC\", \"00636496323200336600CCCC98FFFF996699336496639898\", \"CC33333330633030306330636398CC98CCCC0099CB3399CC\", \"66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\", \"44636330DDDDDDFFFFCB100000001000777777888888AAAA\", \"AABBBBBB555555666666000010000022000032000044EE00\", \"00002200003200000000B90000B90000B90000B90000B900\", \"00B90000B90000B90000B9000021F9040100001D002C0000\", \"0000440044004506FFC08E70482C1A8FC8A472C96C3A9914\", \r\n        \"C92641523D930A67CAC61DD9048DC689D20087B9A701D735\", \"6A91D5D7A28B9415A60414DBE9C40D370A7F018205848401\", \"05010D89052409807E7E3614152362292C7143790D240361\", \"88831F21100A2009091F10261020A61F2220838F61343603\", \"645E5712150AA509AD24240D5C649081860E8A09B28587C2\", \"C365140231B79E611424994C297936610327900302B6C498\", \"49020A2B24E7DA4F140A8D1FA7241CEEF7F8F9FAFBFCFDDA\", \"294458A418B022450569243604006123130B3D36508130A0\", \"A0C18811145070A101A998376F7F1C3820312B92472E00FD\", \"49B2E5A7808165820E21FAF00104AC0F825A6538D4C01121\", \r\n        \"FF68E1F85C6221B05D92132440CC2B04C85BB8300170CE84\", \"1533C3879D38332C2BD44818C89346F53D9474269CB09290\", \"BE5E0B27801C89084A692282E3AF080B4E290ACCA9D0C05E\", \"DDBF1C085040F0B7B0E1C3FCEEE0A98798DF586FF31E54F0\", \"DBD8080B0B5CDA72F9E24D1A85361706046BA4206C932DD8\", \"1C05B37849088B6E95688D09F394B66D637CC6E0E386B494\", \"02BD6DFA1833F653514C927F4647D2D380426B7E14C6DDDA\", \"A30894F543A702EC8C5AB3D09F04C6920998830D818B8699\", \"B67C242B6C1077410920C897AF5D3E4C403E1BA8F1E84E20\", \"48492F08F71D4CAF98F0C029A9C847134E357DF0533CC8D1\", \r\n        \"36C2734E2005022BBF68104153028403FF080932C124CB21\", \"D8B957DC70FA8D171D7A5A28578302085070004B2025679D\", \"481534525C49B50DA0064B3518504004F110B60F075EE0A1\", \"0627650D771105649063434A4290E0C0071A68100F658675\", \"23064436D0700551950D91020A0E98724A0A2394A98F0D24\", \"D8B001636ED669E79D78E6A9E79EF860A682697C32F19064\", \"DE04FA440AC18010410A3518BA448C612690250829708927\", \"37C44892C7002EB031000A0214B00C080D007A98402FA4AA\", \"D130C444570617D65C144C018DF697020C0D0044A6112960\", \"568368B51513063964A040469CE434C789A5EF9070207CC1\", \r\n        \"606483045C68644B6D1F0DF30C8A6290410617F8D8A0C003\", \"6F45B041042440D9FF421F2768C487313470441253616CFB\", \"D42614DCE39F0471F2E2C267C36093861F2870428290CD90\", \"98DC86E0D106121F23D4936F3E9952F02E23F322A2318922\", \"CAD4D223DE38A0D1842AA490420B2A4C1C070B2DFC687144\", \"F0C94488885661271753F3A6C599C5230CF002954F3C46CE\", \"53A21EB2DD213589C0CA3C093C00C1203DF1F4CD1EE0EEE3\", \"CD79DE1812532A4A8D3ADF03A680F0004E329F08651846F6\", \"67C10BE4F8DC929A5129DD754DF23DF0805535E547C833EB\", \"E51AC7169C04404504D2D4164676714330F68236B502D34E\", \r\n        \"7BAF36EC19CE5D910227BF34F84145D7FA01A2D151696774\", \"C78408F909095E18F385462A2F212E080A6497C00618C4C9\", \"CCD9271B260C4A4C093B83560330D8020303D10DE6840D23\", \"F432CF33B53C5563E0D8CD6C0822AA3D53F03702F82C09A7\", \"7C9DB7B20461E5B1075B4F61D7000D159C18C9197E0810E0\", \"4809441081060928D042DAF904E86D37866F028D18CD19C7\", \"662401103815004BB100415DEEC2196F3C830FD6B8461EA4\", \"44A121DC25570CC98661FCB3193EACC706C6025A1254708B\", \"3F95493D1113C6085C5007471DE158C148C02E34E842231C\", \"EB370E0A460D91A080319402041B60D10E8FC0AF1448C005\", \r\n        \"436402B392C8C4263AD10941000021FF0B4D414347436F6E\", \"2004031039000000015772697474656E2062792047494643\", \"6F6E76657274657220322E342E33206F66204D6F6E646179\", \"2C204D61792032352C2031393938003B\"\r\n    };\r\n    private static final String TURTLE_21[] = {\r\n        \"47494638396144004400D50000FFFFFF9898001111112222\", \"2200323266660065980063969699999999993396966399CC\", \"00636496323200336600CCCC98FFFF996699336496639898\", \"CC33333330633030306330636398CC98CCCC0099CB3399CC\", \"66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\", \"44636330DDDDDDFFFFCB100000001000777777888888AAAA\", \"AABBBBBB555555666666000010000022000032000044EE00\", \"00002200003200000000D30000D30000D30000D30000D300\", \"00D30000D30000D30000D3000021F9040100001D002C0000\", \"0000440044004506FFC08E70482C1A8FC8A472C96C3A8B29\", \r\n        \"9BED94086814ACA7964979491B0DDBA04119501A28B01A2C\", \"CD6E893612A9F0011914230AA525B0ADC1340D0E24060505\", \"018688018B866A05246A670D27521D291D6E6F4229617D7E\", \"608701091F0F202009A3262610A51975A78D72056C679436\", \"2C994C2C7EA686869062A08F88BE8C898705A801726A2790\", \"657E771B1ABE149A49132D52D0270D237F61DBB9D7E4492C\", \"23240A0AA809201CE5F0F1F2F3E451290353E3F49A142C14\", \"2914C4B838D3C2C50817B2C8EC3B1245400B3461065002D5\", \"604EA3477FA47CA304A31982149774016CA06048177C67FC\", \"2422962841061022407C58F400C2A204B350356A60068C00\", \r\n        \"FF7D6F029EE8E288CEA20F22444050902180AB998B14F99A\", \"B5E6048C3E021AD4F0668D0940750F5E2500F66922187487\", \"48246810484D593D0DFA7485436205C885E6A6B49003A9C1\", \"3BBC78590C1CF117B06125210F1BF667474105098AE171E0\", \"90A2020189554090981BF9C82E1B01B7F5942245C0B7872E\", \"3A13F167E31BB8D76C048C017362008272FE28184AB17980\", \"000A156CA4F9D3EDCFA20C19663DC289F38F834902105620\", \"91A2450CCE4728B8502007840207232C5818E18742F18AC7\", \"90296B1AE0C3CCA938A90E90C8669E0A4F921C1430C03CAA\", \"2810100408C1071924508A310D50354937AD61774D140DB8\", \r\n        \"F0452838B5176058A32895947BFEFDA2FF0027E785914719\", \"2D041547031558F0C91A018010952BA3203355328CF4559E\", \"195FC4304B040A0CE4153AACB493C01D0A9496D51AA12C53\", \"8003D3CD41511860C0451A2E606810C0061F3EC1C20A71C8\", \"714249268526892765F1B4861E36F491D81136DC161940A1\", \"7D21052567A8460E0B816836164276DE19C603E94800669F\", \"84166AE8A188D2A3E208841596E813362880015F8F6A7906\", \"091A24A04003953281000569602ACA099D7A46620BA08E21\", \"C75840111A05695FF0A491378C9E11C39A7DB2608117A499\", \"858FAA62A439C00887BE4AC250918451DCB267A4049A9DBA\", \r\n        \"9687461950AAD117389F7C62860A1CB09042AB8855444191\", \"9764D1D0147EB896FFD5277320E224091124F38724ADB580\", \"80042AA480C00BE00A1190020F1003890B7CA080AEC113F5\", \"156F82A11CC2B0B5541D59516B64F6D1EF2E649812413BCC\", \"F4519103C3597B533155B4F7014E168D45951FE83AB8C467\", \"243C105016A0E1435A03631123CA2125BB37530231559153\", \"73B2BA7642896FB83944CDF30957728787B8A7944C554C6D\", \"8C7260182C09A7F18096E624604855802B372105C12AA6B4\", \"271322CFF1A56019FFC453CBCDC81CA59402A7B4A7542954\", \"FBFC4B732142D7463D7E90309B21275701B4090FA0E2734C\", \r\n        \"273B1580010C17E0DA7003C41003037A50E0A813FEBC30C0\", \"0B5E1C9E4CCF303172D3EA5239495B40310C4BC108D37132\", \"D5E812519080487353549B20234FAF74B592B3A0705E0C52\", \"0C002F7F57C4FD32CE8E9BA25938B14EA5F392B210F3E482\", \"60D80CAF8B1F680042010F341147290ACCF4810212845351\", \"88C330C256050A2A4B46B0522466510A2044FAC474EAC01B\", \"2448E00217A840233762D71A5012093DA0042808184141FA\", \"95846E41864DA2338350FA3291669D40006AEAD4B16E26AB\", \"39D9A202147CD4CD282007827DAE5445E8C63A34E502AEC1\", \"904D3420C1F83E508014BCF0864288D4080A0082086CC006\", \r\n        \"40AC600A0251991F2691081C50C113A748C52A3E21080021\", \"FF0B4D414347436F6E200403103900000001577269747465\", \"6E20627920474946436F6E76657274657220322E342E3320\", \"6F66204D6F6E6461792C204D61792032352C203139393800\", \"3B\"\r\n    };\r\n    private static final String TURTLE_22[] = {\r\n        \"47494638396144004400D50000FFFFFF9898001111112222\", \"2200323266660065980063969699999999993396966399CC\", \"00636496323200336600CCCC98FFFF996699336496639898\", \"CC33333330633030306330636398CC98CCCC0099CB3399CC\", \"66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\", \"44636330DDDDDDFFFFCB100000001000777777888888AAAA\", \"AABBBBBB555555666666000010000022000032000044EE00\", \"00002200003200000000E80000E80000E80000E80000E800\", \"00E80000E80000E80000E8000021F9040100001D002C0000\", \"0000440044004506FFC08E70482C1A8FC8A472C96C3A3914\", \r\n        \"0AE1344A243E249673CBB5BC6C8DD3A0411150C28D866D9C\", \"5693592C05C7D66A45B55C246B7D6AA7490D050581820501\", \"871F1F8505098569026669032D795F030A0D78146B660260\", \"8C09010519191F87011F202610100F201F57A683240A2E7D\", \"28692F2F30670D2D031C79422C2F9E367D7EA882A18785A2\", \"CF690527C803D336781D150D0A29365C51200A2020568008\", \"2E1D51366B6765608069232427EB15C2F7F84223DBE21111\", \"DEF9020A1C4850188501E41490B05790201C750D06AC4B63\", \"A74503120DB774A3A0EDA09B060E481410D92081C8047EC0\", \"FCB1B18905856F141E84FA1041E1184FF2C8FC11D4EC54A2\", \r\n        \"FF57A1444020274AD0CE94EB28C00998420DBD4F861A5951\", \"35141629538742190A00AF8D8D18EB4824D800AB9109272E\", \"1B9063F441418175363CF9294922EB201A68DA5038E1095B\", \"C6807B6C9010A9404283607F130FEB406084E2C7C35EA89B\", \"E617F2C0C05B4150406C191F0B0175288CA0E0627003339D\", \"99045E37E00CBD78698EADAB9C3AF2A6D6BDE6EA0E732CB6\", \"00170852B448A1C24B8A861462A4C1DB5B655D520102F971\", \"E4C7DAB57BC40A881E5D06C5B16978D3A0201121EB3365A8\", \"2024C81000A5D84683BC6F52A3F11D08B10F1C445167ECE2\", \"D645828CC34A2BA97C20C22B828444D25C2CD510053A4F14\", \r\n        \"F1CB1A1FF1D4DE071088038B81AC1C68FF0A7B060C92921A\", \"02F0D25A01350987CF2624ECD30628881488DE7F8598160F\", \"2012D9A0000522A1028841179117DB5E840C3648518C38E0\", \"400546A5B41F4B47CCC199136790E08A15561836516C8FA8\", \"34571FDAE5A8146436B8E0421A2F1DC1800A70C1F5945323\", \"8CD0C294B509F38E5B09A480519DF9B0A0864283EDC9E7A0\", \"84165A5B0A2CA4100C9D865219130624E8D9A8302C9C7045\", \"020F90C0E8A448C055804CB034C0E9121C00D0C208130DA6\", \"8003B48D9A4E99078526DA1916B8DAC16A718121518E9E6C\", \"72DCA8DDACB18E000D8C70022E6D9070065C9BD6E6854A14\", \r\n        \"7A292D32BDA901431A7AA6201C407FED41EC6E17256BA41F\", \"639030AC0BA8D261FFC3AF0D59608336C7CE17488F23CD2B\", \"D58263F4F214BB0DB934AC4E0007728A2100A66192516BB0\", \"41063E1C70A0A80D2A5080A80D2830F71A20212169458C58\", \"0D028A88EDF4D242AB494451D748809026EF6ECF60894A22\", \"A880F0C0C04D8A07C609248C8C968E759193C07D39A34AC6\", \"27752119552A43BD124006E3C85280038C9044219A493141\", \"1A260A60224107A8EE4AE429609F92C080AB28F041290716\", \"A28049BABD3002030E16BB041CFB7086EB8BED8972852B44\", \"71E80ACC8784481D3C319851470591EED8AC1207092011B1\", \r\n        \"04C7C8CA9597025E54515D1DB4C91A4F63B9B041EBB4F05A\", \"66CC70084233ECD9C548330D204B8644FE24F28106DC7896\", \"C494442FC6B2F4D219689577CBF5A621C6317D7540820379\", \"2A3002C973C72580BBC227DB8C854F8B4570346842523511\", \"2C0C90C266402209083D2B1BB555510D54003597641C0425\", \"72056CF0F22BB498CB92B97E98366EC0ED17FF979E32335B\", \"00C8010814786700A83A816B24820C35A8444C96415CD6C4\", \"0188CAA4E00BEC90CBD09E321105F08903CC13820222F6A4\", \"89F06804DA589CADD271113C9D4985B6A2400DB0640539AC\", \"500F82C1C4381EE0C11B26018478D911847C482A221AF188\", \r\n        \"48DC4210000021FF0B4D414347436F6E2004031039000000\", \"015772697474656E20627920474946436F6E766572746572\", \"20322E342E33206F66204D6F6E6461792C204D6179203235\", \"2C2031393938003B\"\r\n    };\r\n    private static final String TURTLE_23[] = {\r\n        \"47494638396144004400D50000FFFFFF9898001111112222\", \"2200323266660065980063969699999999993396966399CC\", \"00636496323200336600CCCC98FFFF996699336496639898\", \"CC33333330633030306330636398CC98CCCC0099CB3399CC\", \"66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\", \"44636330DDDDDDFFFFCB100000001000777777888888AAAA\", \"AABBBBBB555555666666000010000022000032000044EE00\", \"000022000032000000008400008400008400008400008400\", \"0084000084000084000084000021F9040100001D002C0000\", \"0000440044004506FFC08E70482C1A8F45160BC051209FD0\", \r\n        \"A8748AA00C060D92B6F0A24CBFE0A4CD26B035AE9486BA71\", \"B29D4E0DF7DA364A91C61456186C81A3D4666B050183831F\", \"1F09058A592489058058032714362C295F2C360984010A24\", \"230D236371709B019CA70109871026100F2020A901066B6B\", \"2703943614091B1F1A20051C7B4394272E708209A683A985\", \"8E8FB70D6995C4516920AB201F061B246DC96D1469BA5A73\", \"6D0223D6EBEC1D36240A0DB11B0DEDF6F7F8F9490D091A09\", \"0F2BF409546246D7980164F040B924B0488A74B6D6905844\", \"224284020926DA821328CE307D9950FCE948838433531FB6\", \"7D08F0E1C183958A1C647914E8D1001816D4904831C20592\", \r\n        \"FF4CF01A2818A1AE430A1B0877096A7648C4AB07CB026440\", \"44C8D1C46827408913C28246830744D9B178F16244993366\", \"1E297A644A5534846BAC546B28E49D82BB0A406839328C03\", \"07251D08D2518031851DBA8813D3B560C39304052D48E851\", \"9C2F9319051B02E8F542995D0A0A2E28B468416104E97A9D\", \"C15826930BE91A50C6268506D520858A140818334C6C0185\", \"575C6C220ADA384721E54C69A6C13951C064AA066B972E42\", \"3B227983C9FA8ECAD1A9E6E25A96555BCA3AB55691C64990\", \"6A8CA3F0314A131B29A68D4BAA06CBCC66CBB441D8FF6A65\", \"D30F8B78C2060971C4904B0C1514B08102B92041493CBFFC\", \r\n        \"53400AB9BCA0940D184555C054B164C3FF12084EA944DE29\", \"E6D882103C84B1A4800D5228C159310208901416F86D9280\", \"084EADC449338324005D70039431D7101CECC68E3194D8A7\", \"068FE525E2400509AAF1461608BD4817051962C4C618DBBD\", \"26DC2868D1801D6227C003952A7A35E0824F1468771042CB\", \"8D42C1271534D09E626DA6A000606164224F230580A0426A\", \"F868610609A211AAE8A28C12BADA1B5636BAC738128060C0\", \"5DA8493AA919A7E82599A660504800019A34424205A05251\", \"820B038C3080166958902A1499B48046032D54D7C0A0B33A\", \"B41A20D36C34460B4470D0C224AE469AD86AAE7DE3951AD6\", \r\n        \"C501480C2DA42041642D08A0EC6263A0079770F50547020D\", \"6FC498C2988A5960FF61B0E06A01685C7058B74B6A969DF3\", \"8803E6FD188D228E40AB1420E8EA83140534041288338414\", \"D264C2D1EC22C90801DF43096CB42DC22F46A71CB25206CD\", \"41A7D197098D71A7359928D9510423A2B4D23F108C470874\", \"197DD9530DAD3911EA082AD850B01C750A92702A20EC07E2\", \"2937A6944800F0F878C2B34809104A160AB8C0EB4F3034A7\", \"02813154E70681186AC1F05A0904DDCA7E2F21A263795252\", \"2063200E685088094F50909766094440820B16B4404A1B13\", \"A9A24A0644E7E7D47E216C2315791D437A86850680A0C12F\", \r\n        \"9E8C3C849F7791000205A852F042906A2FDD23D11FB40CCB\", \"321AEBD856C2711018C72EF1151635AD16BE4302116AE351\", \"CC13799B8068022C232ABC96EA6C500029112C0CD0824F47\", \"02328A211EB294925B9FA3BEC6155C467C4F26658EF08220\", \"8DC882513301E06B7734B68C33AF62DABD908C441529928A\", \"46CF964FC9B620C91E01249408B74573E44327D790889953\", \"78087387317C23107002931A6833061474E604FE38447E3C\", \"61031490E10D4A315F41120807170885327680854A7C842A\", \"E2B5864B283CD44EAE6533C5D4C913B0DA030BE0E08944EC\", \"A55751F053364010810D1809870E1A073CDE813C204E8105\", \r\n        \"1CB8801197C8C4263A313541000021FF0B4D414347436F6E\", \"2004031039000000015772697474656E2062792047494643\", \"6F6E76657274657220322E342E33206F66204D6F6E646179\", \"2C204D61792032352C2031393938003B\"\r\n    };\r\n    private static final String TURTLE_24[] = {\r\n        \"47494638396144004400D50000FFFFFF9898001111112222\", \"2200323266660065980063969699999999993396966399CC\", \"00636496323200336600CCCC98FFFF996699336496639898\", \"CC33333330633030306330636398CC98CCCC0099CB3399CC\", \"66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\", \"44636330DDDDDDFFFFCB100000001000777777888888AAAA\", \"AABBBBBB555555666666000010000022000032000044EE00\", \"000022000032000000008C00008C00008C00008C00008C00\", \"008C00008C00008C00008C000021F9040100001D002C0000\", \"0000440044004506FFC08E70482C1A8F428E12C96C3A9FD0\", \r\n        \"0EA532B03548A4C68015ED7A8D149B98726D98CD56AD99EC\", \"68D84E36CA772E4C9D4E8D30FE1A08140A01191F1F051905\", \"09050D89578B6970162335570A231C735C28363466598A7F\", \"9F7F1F10222626100F1F200981800558347B0D02365C0AB0\", \"0F954D61360F050A24725236B30255147F011F09ABC9C919\", \"7D010D09589D66236EC174516424118D636E670327B35714\", \"776259152496DA502CDC580D155C5F146153C023EEFCFDFE\", \"FFF0A4290371A5DEBF834358C411C3B08A9B612E025648A1\", \"22058911361032610143D29A339DBA1D5234ED8F190179C8\", \"E00190A283C17F14049039978584013F01560D1A14080484\", \r\n        \"FF54841261B97632CC001209340CFAE584E39F69245C3490\", \"6A639C959C37434100F10084B255CFFA7C0A90C5CA892A19\", \"3512097325469A332E024430032DE7223305C2D068A9B688\", \"8D0809062D03D1C9854B972D5A60496190C535120ABE2A78\", \"D9B7B2652F2C5E5020210132891A0A2E6B14738204889C09\", \"1AF015ED8E82D4112328246EA0E2088B14140654A1CC3A05\", \"C3706788B2456363840B0A2956B316421A8FC3339CEEAA31\", \"334E5C36CB2C04ECC193C8012012A040AD42B408C51E2B02\", \"6814DBCC9B0E851A03D0C4C77B28B09F045C4530FBE3008B\", \"7437328D5041011BA4D65E14C39871020A0D30E807207D7C\", \r\n        \"200204143EA04060CB3CF35F1E55FD05FF82020568409872\", \"4DB040C20014C0C65616271C521734CBE8048208227CF0E2\", \"2A9D9C85072D45B0706042143C900C7E09E0668305BA39D4\", \"09841F64302385FBD565522278CCC40F47620C105A426FEC\", \"F816495E81725F229B7C948700245A1686003038C71D748A\", \"54A3201E248CB1A5681490871F640F9D40C618285601C76F\", \"E015E9C29D95D960DA87AA7CD0C08FB66DA20A082074B6DC\", \"A59866AAE9A67424F7A7A29C5E728F02182410C18790868A\", \"040B787C60402AC0A81A856F281060832BF2A425AB1329B4\", \"20C005645C63581369667A4F0B035C93DB00B350F012070D\", \r\n        \"8C40510B315C8729195AC4610D1AE7C551810A759EE063A6\", \"F064D9001CF39D35FFDF1B66C0424E1C9BFA368B8E68C009\", \"9D15D8BA01070298FA66C59767945452228BE826400BD832\", \"C69A052FA0942F782665711728F792A11B4362F0AB910528\", \"9D712B098188D5CA279C2002E73D271957C33DA5FD531570\", \"3630D80A3483D4080DC987C8491D0C0D5CD080020A207C25\", \"CFF39C51C05C633D43480215DA481E6409B4E0480C30B0E1\", \"8D1F887EA1501A0C9A118158CCF894807ECAE4F4D383269D\", \"1BA8188169901316DAC80B9CD1F725930A85A67465634E68\", \"53298EA2564CE369173EA6F85B0334CC373232118E4D218D\", \r\n        \"5E8925B21B44C99410B22D40F1CB5117C5109B181829FA94\", \"1F8250EA55603BED4D1E59D5A0656D179B8D170116F718C5\", \"E2D61F0630236185918BC93774CBDA502C1414FCB2CCA935\", \"586254827B8057B78434DA05087977E11B46AAC42A0A8C02\", \"0D10914292BFB552761F6189D5DF80D2E5C6A33F5C684C04\", \"AB569C0827E33393BC49C7C4618A712C8A7862C6C01E7344\", \"CCDAB19C17D8A002E718C62EE0F42F80C1811C2DE81E6B14\", \"A22744A0E50C779889A08873052C48A00504AC0C0B1AD028\", \"10682002BFB001017681318CDD0374BF408A0A2428C2D228\", \"0002A8FBC067BCA0896514E0030E98CC654C6421A0FDE275\", \r\n        \"4F38410C15A028246A44210A7307072653010E102084BBCA\", \"A216B7C8C52E7AF10941000021FF0B4D414347436F6E2004\", \"031039000000015772697474656E20627920474946436F6E\", \"76657274657220322E342E33206F66204D6F6E6461792C20\", \"4D61792032352C2031393938003B\"\r\n    };\r\n    private static final String TURTLE_25[] = {\r\n        \"47494638396144004400D50000FFFFFF9898001111112222\", \"2200323266660065980063969699999999993396966399CC\", \"00636496323200336600CCCC98FFFF996699336496639898\", \"CC33333330633030306330636398CC98CCCC0099CB3399CC\", \"66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\", \"44636330DDDDDDFFFFCB100000001000777777888888AAAA\", \"AABBBBBB555555666666000010000022000032000044EE00\", \"000022000032000000006B00006B00006B00006B00006B00\", \"006B00006B00006B00006B000021F9040100001D002C0000\", \"0000440044004506FFC08E70482C1A8FC8A472C96C766C02\", \r\n        \"C2A051208D1A2D64AA35A2BC52CE309362B30D04A886BA7C\", \"6A50D66E755BDD3889EF448BADDD2EF8031F050180208386\", \"7E6A0924056D692F310254111F1F2024247844647C346A24\", \"017E09099510102626102095098382A0740203366099429E\", \"9797235C6664288B54A082949519AD0D09150E05746E0214\", \"B57865022F2F6D14277BCCD7B236727B148B092E080AD04D\", \"290D1120EB1F8A0DE6F0F1F2F34A162F140F1B0906200A36\", \"0A2CE8091CC282820B0A6FA0EC61D340808D172E5290B011\", \"70E01216666C2464962E428265053E225AD6200D9D13065B\", \"D4684042410B5AE63052A051460D4857198605C8302A0184\", \r\n        \"FF0FC14ECE214391C4CA1429106462C1A2463735531619DA\", \"59691D08513BA70A225907A10D732928282001A20188AF42\", \"5874E156D3A69FADC05A9158D36DA2464C168DB068002A81\", \"250C13518CD09822C6CB061509A2A8A14041BF141538E42D\", \"C274B2E521124F90D05CEEB2C03620340448A0A06462CF99\", \"38A4E8728182AE06294E73B884744458D448BA9161C95116\", \"1D5F65349EC69D22F8948D9EB872DC3D80CC44A2661AA818\", \"1E0F46278E6FA9BC1D49E2A34D3974F48C7051C06381CEF0\", \"52546B206BCE5643A340942A142C40CBB9759A3BA421AA80\", \"86C6CF98F3821AD7D021C847ACC8271F048E7D50CC2006F8\", \r\n        \"31170A9AD5419140C5C1E1D67653C597FF0A50A3FDE1C709\", \"27C8E2D03C668CD7421903F8E60A2B217D208229A9B0024A\", \"2B88D071CD2CE9754709692420F01051644CF1872A36F2B4\", \"D52FD8C952833C6528805005E8A5850D4B313C6520335568\", \"48971A15B0449C0015444052709EF0A25F191414D74D63A2\", \"4440024C79D950C88FED9CA79413C53D570305045CB6D703\", \"8D9526016E8826AAE8A24828301DA34B7561830409904382\", \"64908651900D3EC67749A66114D746779714008312055197\", \"A80A14546003012E347005A64460041B027AA88A1B022A60\", \"31C25A0E95A114056422908243742E9A4273C169E4461B5A\", \r\n        \"4AE390AEA8B19061035A36C747747474B3509B895ACB264B\", \"2472C4CC14D89281FF101DB1C54601B5F12854A20073DC12\", \"52384CCAE14C897B0C50C308CDBDD100ADF16C522E1DF829\", \"90E31FFD29E7CC1A314C795F80F130F042270237A0CC2B7C\", \"6D371215EED47B823314C0E0C0471FBC03E515E049551F25\", \"22B06263010EB0E40E6F1A99A100250B80605BBC57CC8142\", \"276F8DB2958C0F3CB08E482C71454696A48D101252598055\", \"C34A069A7920202250A20A509414630015F8D1210BC529B8\", \"8016342CBC309827E9F4C54A060B960281D24065F007C7DE\", \"62631114D8D6CB57887EC8E893DDAA1CA248D944C19B0951\", \r\n        \"827FB2F768ED88320C88455341601DC98235181B73D5E5CA\", \"1F3326FDF58DAE705C871BCDC963ADAC2DC0D0109A36F861\", \"E0C0545E8B302320EF2D72A61B64C4C3C2007FC879D00016\", \"C492314B836035C88310D2DC409828D1E57813363C50403B\", \"961C5A1C3790FB5E78211C1E1847F5D88C40F05265E03296\", \"267B9CD082B96A906766036375C9118936C42A4F0A7A48DB\", \"1144D5A2A7744339160ACE25B0D51012B8C08103C3CD0B90\", \"872D8544227071F04A05DB2711A6A18653E170071B06808D\", \"66CD22312AA0410140B0C2023C406593494148FC0202038C\", \"C50D6178C30B15601B12A860327BD940001E90A00420E60E\", \r\n        \"2C50014002B2BE81708A50859A13A89C60AD3444A48953CC\", \"A216B7C8C52EE221080021FF0B4D414347436F6E20040310\", \"39000000015772697474656E20627920474946436F6E7665\", \"7274657220322E342E33206F66204D6F6E6461792C204D61\", \"792032352C2031393938003B\"\r\n    };\r\n    private static final String TURTLE_26[] = {\r\n        \"47494638396144004400D50000FFFFFF9898001111112222\", \"2200323266660065980063969699999999993396966399CC\", \"00636496323200336600CCCC98FFFF996699336496639898\", \"CC33333330633030306330636398CC98CCCC0099CB3399CC\", \"66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\", \"44636330DDDDDDFFFFCB100000001000777777888888AAAA\", \"AABBBBBB555555666666000010000022000032000044EE00\", \"000022000032000000003000003000003000003000003000\", \"0030000030000030000030000021F9040100001D002C0000\", \"0000440044004506FFC08E70482C1A8FC8A472C9548E4E05\", \r\n        \"4582446D308CA9532B95A2A49AE0F0D0D6A0901B0DC1802C\", \"409F4F6617C5FCB40D6894DA60C475B1C44B293627688505\", \"87050D011F018D8E870E0D52246E14023136206405270A14\", \"804836152824840D248D058D1F20101026100F22208C0188\", \"94276A03275FA04A2C6664949B8D098E1FC821B3B5050E91\", \"350D9B6628BE47360F05200E2027442C29D10324142F6D85\", \"E7E7C136EBC20A20051F111B0DD561998BC6200935F5FDFE\", \"FF0093441B41A202BD800893704831A2E1080A27D8996227\", \"2058423114CB9CA352604A0344B612A143936B4E0D031F34\", \"6C20A10020384A0D4C7D3C9480518646198CB1BA69E01025\", \r\n        \"FF14364A45FC73D1CC89A38640164396C0D8A354E846AC03\", \"C841850D0454A858A0304040C5686854D14466EBA3539885\", \"229EAAE0620487804491A41040A200C768EC6C74B1D0E1AD\", \"353229245C44C2829702052452F81DCCB831C2B9291E6CD0\", \"501384BEC44A52ACB1E198890D0104E234187170088B0615\", \"B0DAF8D499890039EC46534023C054A49848D1B420FA4DC5\", \"62C682EC44A43132ECCC7340CF7DB6D0E042830D09242164\", \"61E7CC99420A3E1E37DE11D70914D130E9AD9540011F8030\", \"56C71C61374086438B903D7045EB4302442273AFE975115C\", \"031432CD84D32CAD58468B7B2141858645837501D1462119\", \r\n        \"D3917D21B4425648AA14B29A198DD950FFC375A704206106\", \"1FB8F2CA030AB8A74A23758984C67E09D931C2002D08B0CE\", \"00BB6C029253386128961B1309D00209FF80B3884A2C7520\", \"88575EAD13201A774189D782EB9CD2D114985563064B2718\", \"14CA67E27DB61A4C9FA993425CC0D090150904F1C7180588\", \"A41481046820D05A3DE04460200888B979E79F80062AE8A0\", \"013590820271111A060B520D204179203C10949F4750FA27\", \"305592608C0122924083A529B4E0820B03B0A6E83A1FDA05\", \"D31154A4508AA581B640C1281750D0105E142080800D31B8\", \"E0AA0D892ABA90430DEC82DB391351A442B080DA20D56AA4\", \r\n        \"91066421B3AD810E02C1D9811B09BF3D464644B3C504A246\", \"3181B51A216438EBFF02342C09329819E6945B88A6B71CA2\", \"DD390314F2420C149060C07D1F10899044669C534004D185\", \"D514BDA7A0451B0C6A14A001321A6459E42027E41B96BD62\", \"E1779FBD8815F0042573AC63C0030D7C30C20AA6FA030371\", \"E8AC881332FA3882E129F8E2B85A5F12A4E00267E8BD6143\", \"7BB6A4B24A2C107C20022389D88B8E5E8C31F00221BBA040\", \"1C7CEE21C3CA225C8B988A5D24D506F460EA957B70828B88\", \"60227D173AE2B08DB0FE73C6C80D449060651080008B2BE4\", \"C1E7F41CBC0037C8B15763588C4EC8DCF448D3648C606387\", \r\n        \"B38107A5D18BEC9978D13E1E6B49DCFD50779D001DAD3896\", \"086ABBB288BD0954705BB836A0C0AC3F0C956AA3CE338184\", \"C6754D368B980871B3CD566542A73CD4800B2494791D7CAC\", \"E08EDFE26E900407692DF5A3C24C0BCF68C766F012D23448\", \"11245285BC60D1D5AEABDD8A41811429AD2498928ED7F690\", \"C6C569589DFC27B0D4803E11705BCD35D73480B211B1B1D1\", \"8B36839B8C2DC8465063949AF4519E2ED80914D479C10B28\", \"E01BB9948339E2AA92EF624329703C600EA92140F912F292\", \"2BE5EF3F07E8C0EB1455041B7C201BFA00012546C842239C\", \"461F0FA809324A53C35F50C21D8749CC0A7B88853C008B88\", \r\n        \"484CA2129518040021FF0B4D414347436F6E200403103900\", \"0000015772697474656E20627920474946436F6E76657274\", \"657220322E342E33206F66204D6F6E6461792C204D617920\", \"32352C2031393938003B\"\r\n    };\r\n    private static final String TURTLE_27[] = {\r\n        \"47494638396144004400D50000FFFFFF9898001111112222\", \"2200323266660065980063969699999999993396966399CC\", \"00636496323200336600CCCC98FFFF996699336496639898\", \"CC33333330633030306330636398CC98CCCC0099CB3399CC\", \"66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\", \"44636330DDDDDDFFFFCB100000001000777777888888AAAA\", \"AABBBBBB555555666666000010000022000032000044EE00\", \"00002200003200000000CAAB00CA0000CA0000CA0000CA00\", \"00CA0000CA0000CA0000CA000021F9040100001D002C0000\", \"0000440044004506FFC08E70482C1A8FC8A472C92CDA6C98\", \r\n        \"842101AA266AB6A38D8420659BE07091E2A23C6D0D52638D\", \"6EB46D663765CDB6C51AAE6901A4688899670D7169050D05\", \"01058919018C8887846C74667F623068736B858709012010\", \"9F26100F22208C0989097470939460700D286A69019CA81F\", \"A422A41F8DA76B73685E362E6BAD5A5D0A24654F66708174\", \"99CF8282CC4E0D0F4F35C5943688562057DAE1E2E3E4E5E6\", \"7F4F0466C3C36714CC67F1AC42CB6E82E74ECD28CF240909\", \"24054ED1EA45420D9A7DCD6C1878D0E083350AE660D49006\", \"90442346870E65E0F48113A746857C3DC147A4CD1C351669\", \"2532E5CF1F2253A8A28D24D961D9137B3662CDEAF4AD0A22\", \r\n        \"FF43C8D8146486A7CF37070CB5D978B0C79A1F2D702CA88A\", \"F785A6381B05483C50C0F5A9D5AF60C5D89BE80A8185AA61\", \"8958BAD900C4837F6A20166950A10BDAB449C890C17313CD\", \"96340E2249DBB2AC868B8924B8DA304173551B378FE92482\", \"A6CA909C390936ECE273F7EA2B4C6B124448652864E906C8\", \"120C9363E36C67737D3101BCF8E18328515540ECD2A40605\", \"61375F2D452BFDF1C337510A1EE8FE48ABE065E0565FF133\", \"45CB388404A4AE7704697ADAEB726CDB245A19E0C3D607E8\", \"15947F94A042057B058846170F8CD6148C1F0B6C241F40D6\", \"D4640AB8808057E1C0E1020C7804F38E1C9084E402405311\", \r\n        \"15CF1A7C2470CD35C5C0C0C8370F6433FF445F690CF20E1C\", \"284D18D64DD7C091C416A78040020671E1A554296F7504C2\", \"773286810D8E39F6E8E38F400689CE4C3FBAA10002E8F9A5\", \"843008B8C06374143C80814F06D0A24001311CD100021210\", \"19645F599130871331B860A69740C251810D17EC05CF33BF\", \"3DE6454DCBBCE342804F86C30E83733083499FC28C188730\", \"0C347041031B7042206C4E92E89D3490FA02CB25989CE542\", \"0C0E68F081060AE4B90D1BA041830A40E35146470C31C0A1\", \"C007056820A05CE0BD62D01A050594893FFD18F24F217F8D\", \"68C38D0D6031CF38F244865A69A49E9248605CF907A8A7C5\", \r\n        \"34035A456A14601C2DD8AA54AA690641DB0A5B7438B0DE21\", \"1D99775B0210EC62FF4022CEB1E62D2596FC82554A01ED52\", \"1B27A5EC124006E4F9D7CC57BD3EB14F461C41E0C9270F18\", \"B78BB2FD853422C024F806470111A8C4D1C1A17CA22F2A01\", \"18020C9AE7D850412C7F55CC7140D8D6F6C122876014C9C3\", \"569579102C8638624A6E096C6C0AA9D298E161637ED19112\", \"2D19D806CA27D816E04060FBF409D9308D61010B05016DD2\", \"48293997029245BD3C118C1A12407D0E165B34DA804035BB\", \"8451CB8DF8670F0500F9B3C7BB2B92D1A863926584F22111\", \"F006D9545B24B7878515C0DA4A1A095A4081E236812B5934\", \r\n        \"7DC2F3E1440C31440101C594164004203C55271A0FA6FACB\", \"DFEE486EC44DC43ED009E79D51B5D684F05880D7524B3580\", \"34C1A26AD9D0F7957DD880F98F4F58B2840DA75061405042\", \"BAF2CD76DFE09EBC161B280041725CFDFCFC925A2976FDF6\", \"DC779F63100021FF0B4D414347436F6E2004031039000000\", \"015772697474656E20627920474946436F6E766572746572\", \"20322E342E33206F66204D6F6E6461792C204D6179203235\", \"2C2031393938003B\"\r\n    };\r\n    private static final String TURTLE_28[] = {\r\n        \"47494638396144004400D50000FFFFFF9898001111112222\", \"2200323266660065980063969699999999993396966399CC\", \"00636496323200336600CCCC98FFFF996699336496639898\", \"CC33333330633030306330636398CC98CCCC0099CB3399CC\", \"66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\", \"44636330DDDDDDFFFFCB100000001000777777888888AAAA\", \"AABBBBBB555555666666000010000022000032000044EE00\", \"000022000032000000003C00003C00003C00003C00003C00\", \"003C00003C00003C00003C000021F9040100001D002C0000\", \"0000440044004506FFC08E70482C1A8FC8A472C9342A384B\", \r\n        \"566A7A4A35AFD8624A40E98E1A23DBA9D1A0881BE386AD21\", \"68A0D6ED827AD0567C0A0992AA05CD2E6D36146564640524\", \"0D05890119018D018989880D346B032736567E580C2F6984\", \"888A1F2210A426A4221F8D90726865669A593114636BA08D\", \"0919A2222022A88C8F0501879F64232424097711122E7DB0\", \"4214035D145F36020274809EC49780028024CF5829C7C75D\", \"2E49368F202009ED0DE2F1F2F3F44D53F57E2C022418EC01\", \"1AC28615B1F1E21B20408446B4A020A046973224002648E1\", \"0C5F0A6967C86C5B1520811C3C240A085233CB8C0D7C4658\", \"D8B0C4854CC80C8A1C2D4A1020D52245C75A75C184722009\", \r\n        \"FF1A9E481800F6E85682A3AA2091A8D04AA3B5162414F4EC\", \"90C2060A426382456AC42E19CD08ACD098BCC402DAD50780\", \"2AC853802840041035884C39684D0631AB07A6A24CD12082\", \"02100A4850D44BB8F0541B085A08286B1809071223143C00\", \"4CE2C34F0B4E2A2020C1F30820411414B838598FC1142956\", \"DB8C583D4B1B313463BA08F004E8C5080A0E347C580022CC\", \"54176C10561B548855584234805EB371EC84601553559E18\", \"60F553C86161133968109855AD06D4194FAD0A884E9A480D\", \"6A7E0041EA012A54010C280ACB85B45E842E0DA94AF6A13F\", \"7B1093F5C7C82A1A81D7D97D648C044A2234AD074102BBF8\", \r\n        \"52D423091023000A125464110DAF6915FF0A600F3C000108\", \"1D01B3DD206B8033023308C0838F196E1012934C34C9144C\", \"47898C318C36C7B493C00355A0400F0D06A9A106870B4AD2\", \"4048AF95C1857842B000E55AC54066D035D435E0020931D4\", \"C21042664CA121611654F68106794077C416211D258104DC\", \"358604793050B0040547B5B35E6012C8390F793564E2E7A0\", \"84166AE8A1F5D8D025A2CFA440410A2DB43025A11C9C7042\", \"0DCF55D1C1A47BA850810D9312818002A0852A4E18122430\", \"946E092850400C5A08D0820BA361B25359E449034654C68C\", \"098B35240C40461E869020880A55B574091919A131007581\", \r\n        \"B8D04505F225A001647BD9400301D2AC868618698C045A8A\", \"0A9261810D230890FFC006BB29406A4FB46A49D227B5B4D1\", \"64530DC010C30B36E446C276E90A4A8F0BB7AD348CBD3286\", \"04894B05924107BF761696C2182720ECD251A01CC52477C8\", \"0C431C758D59B3A4914B4650E1821E41120028AF592A704F\", \"66606329310CD2D8DF073029F50975118FE71A210A3BD29F\", \"08223E707389377ADC867D87ADE189038B385200230DBAF3\", \"418D45A1278D002FE3C3000A48AEA1722319B0C31E29ECD8\", \"C4E0713B11C6092180A0A07283A34060CA88574BCD4A1A80\", \"1406C3094406A25F893479A55E2A370273DC3755F82ACF16\", \r\n        \"C4383014511DA5DDCE800538B0DD55B32C09C808157C8192\", \"4A238C71D5552AE7428ADDBDFC228C21729CF179C7200D36\", \"D00F42DF9180743036E5ADB82A9F5C72C208292870D47A29\", \"4830C29F60031E4730064C5EA2DE88E4845F376B60FA4003\", \"DB2390973C2CBCE1DC68963A704848C078A43021B3ED1408\", \"112C84718254890A10C66774CC712F315B0362AA45F6BBCD\", \"6D64630D8358026E3C3BC4FD0630A811A8202A0918011402\", \"710D9209805F74A14BA104108C76800005A1AACA0B2850AC\", \"080C0301862287C68E413F234CCC23C9780B09E272A84070\", \"0F132844820DAE96B7FE30AD50FFD34244D8E12E123C8051\", \r\n        \"5860015B8CA800E221F189508CE21383000021FF0B4D4143\", \"47436F6E2004031039000000015772697474656E20627920\", \"474946436F6E76657274657220322E342E33206F66204D6F\", \"6E6461792C204D61792032352C2031393938003B\"\r\n    };\r\n    private static final String TURTLE_29[] = {\r\n        \"47494638396144004400D50000FFFFFF9898001111112222\", \"2200323266660065980063969699999999993396966399CC\", \"00636496323200336600CCCC98FFFF996699336496639898\", \"CC33333330633030306330636398CC98CCCC0099CB3399CC\", \"66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\", \"44636330DDDDDDFFFFCB100000001000777777888888AAAA\", \"AABBBBBB555555666666000010000022000032000044EE00\", \"00002200003200000000C2AB00C20000C20000C20000C200\", \"00C20000C20000C20000C2000021F9040100001D002C0000\", \"0000440044004506FFC08E70482C1A8FC8A472C96C0E6D29\", \r\n        \"922D991A51062345CA66723653140988441A17488D56C3C6\", \"3E35DE701B45D040B9DDEF9340606B90585E814329783674\", \"6F64116F0505018E8E098E050D67937927271482815B7894\", \"67928E1F22221026261010201F918F09706F7C58240A9B4C\", \"57350370349F8D191F2022ABAB018C8F937D6F6C14232835\", \"B43680B64815286C369903BA86C9790D7A23DF50D2D3811C\", \"2F8E201120231C482C36C5AC01C00D29E5F8F9FAFBFCFD1C\", \"0A7E5464AAA0A98880112EE6B08135A28F9C180DC279F890\", \"218102172EFA7500D382428B866EAE786A90804481040926\", \"91A185664D9C681A8D5C1B90EC8CC946AC3EE88C44F151B1\", \r\n        \"FF93DE48F0894984C58B3714F034F2690C65CE00191A1570\", \"000BDB1A1B2649A02CA040C20015FAE0394473F2A4814927\", \"41A0FC69A901853734EF112D9202CB08122D06506043F32A\", \"5F0A9524A04130F7169B172FC82179CB75CC8AC290234F1B\", \"60E185DC251CDC495EA28204180AD238C8DD62436F0D3F1A\", \"12805030659F14051154B34AD98070070E08689EC0BA3B13\", \"85B7B01A0898434101089234460850BC0906857B7B5110C0\", \"E27199DB64BAE030A284663789130332F1B93C97828B85DE\", \"28955C64899103B46DFB646213796F7038248A454AF0E1C1\", \"03100006108954DDB9350779FD9026077E057C50CC23AC80\", \r\n        \"F0DF03C01C93922585B446140C346407FF4B53F48000C128\", \"3A39B894801554209C5BDF9C4042052E44E1D93E0CD061D5\", \"1B11E8D714800FA002420692E4D7521E7CD1A256020FB875\", \"803E2F9CE7D222C748D28A24EC7D33001F50D045540A28F0\", \"A28C556431D21625447253DC6642D4E5C20877094093216E\", \"92A09C7CD7B031029A453C5740041A9020411247A504426A\", \"0938500B9E8390D1800214104405091F28F080710021AA0F\", \"829666AAE9A69C6E4A5AA7B6A410E308CC1921907905711A\", \"450A15647944696FD1A2404A29685658A942BC8880145094\", \"86147123A87181019168A000090360BA09079990306919AF\", \r\n        \"C440D7352E85B446526B08F0C26F277D508006233C30803E\", \"27549080060110BBFF921FA4C142552CE1D9D1802E93C010\", \"C342118C50430AB80A62C35DF27D135138E294B65037F705\", \"77C5BD1AC6044FA302B860208BF789B91D1967C0E1214D91\", \"B130024D0709D78D9891603C95AC6312A92C3FBFCD31921F\", \"406D67B1C5DCC1211E4C8561836D4DEB8909244FC4186080\", \"2493F8B64661A4BD750899C68C928A2A3B41C54849267D73\", \"901C7389D5477626FD146588ABE824A031948474E05C72EC\", \"E6E152276590815A4F3F408A83C7A46C030D2AD8CA0F3C28\", \"B885097C27D1534A2A26949200905289191C1B128F50ABDE\", \r\n        \"E530F0021EBBA1001F4F250AB8D68324D5E1B732EC1EFB2D\", \"1A99E1F35B1E748032F552C000A8964F29556D333351A004\", \"DC607128E4B3E01B04272ECAD31088D0D383C5E0B7177A2C\", \"FDF6673E5CC2D1370DC6102D762852AD770D260501921456\", \"095AE549D7539E64FB070628128B81F46D26070D27784949\", \"F1F9B105B3C2BAE129968B2D38D477C271D86C430C134014\", \"0B8853A72B1D0F1B7A400A96AEA2A97FC5A0656EBA121FDC\", \"20941778EF1B28B08DA538709763DD69231D60410A3E6383\", \"A344A00063D8001AFA05190E748D15ACA1827A00A49A5768\", \"EA05B3FAC04A0E75040A384527ABF9430315708207604D09\", \r\n        \"36D880A414A000C7714A842C2C0A0B3E62830AAC0C5458CC\", \"A2168912040021FF0B4D414347436F6E2004031039000000\", \"015772697474656E20627920474946436F6E766572746572\", \"20322E342E33206F66204D6F6E6461792C204D6179203235\", \"2C2031393938003B\"\r\n    };\r\n    private static final String TURTLE_30[] = {\r\n        \"47494638396144004400D50000FFFFFF9898001111112222\", \"2200323266660065980063969699999999993396966399CC\", \"00636496323200336600CCCC98FFFF996699336496639898\", \"CC33333330633030306330636398CC98CCCC0099CB3399CC\", \"66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\", \"44636330DDDDDDFFFFCB100000001000777777888888AAAA\", \"AABBBBBB555555666666000010000022000032000044EE00\", \"000022000032000000003200003200003200003200003200\", \"0032000032000032000032000021F9040100001D002C0000\", \"0000440044004506FFC08E70482C1A8FC8A472C95CB25C88\", \r\n        \"160599B20D060DD2269100915CD3A6B8536950B28E8685E8\", \"1234DE6F8AC0D640C11B343BC56AB385C780292E2A237B02\", \"240D36270D055C6F059001925C1906060592888B667B2C80\", \"807B74676F0E0119921F191F2020102610102209A78D0524\", \"1565A3892724245CBF140F281C9F457B287D702492019801\", \"1F222120091F0519908C052356723629C5E02C36346F247B\", \"890D27739B67577D7D9EE0F243142A01115E7F47365CAC0A\", \"0F0ABECD1B48B0A0C183088F28188180449F73E91CA6B311\", \"C34F960F240A2422567044850D5EBC3418D1A24503378B4E\", \"D07904A911A35E0932C23931C29D8D8446AA9C18B589E507\", \r\n        \"FF68201E8448F0ECE787000922694497080505120A708AD3\", \"7362113946CD906AA5B64A81D666CB10BD1991A8CF0972E6\", \"48204C31601BD32C982E41FA692BCB9D772F26E074D29642\", \"A10102AE0CA8FA6E40462E111424A8C171EF121B0F462870\", \"182F090B1629285476CCB973932A4C14D8F832E04163CF54\", \"2820D85639DE9E1A144CBA30E0219586142B289C46DD4145\", \"8C6D741651181E074E8C8AFCA22654D02085E2A331C5865A\", \"A90BCE52B17778FA3958C54F770202FC9EE4B90952D298D9\", \"1CB47C89FD64A2CD08A574AB4E2242C648CF58B13A9A35E9\", \"52E17B0894100B7B9CE1C623CB3033C92A41EDA7A0244B69\", \r\n        \"27400B5FA4808873BB8D210E16E5D9D2FF8C3301B0020108\", \"461195950328CEF4C6262E28304D2F24D440100C2B1D5840\", \"0410B684142B2698200208394AF2C64A6678268700348C62\", \"0788CE9897DF3D691437875ABC755747035830925436D8DC\", \"655822FAF036440D73BC63C31C03584142212F2852CE1B08\", \"8869840D6409F20D7C438CD6C834F93580A7671C08808A7D\", \"9329414104F60134C29F62FAE18D9C90462AE9A494428A80\", \"0B0256DA410A2FBC1026114F98E19C4C246428A7002A4881\", \"C41E23D460860144690082022DC419E953120CE7C913830D\", \"A7D20831500058041B14A0412F1464CA9B02150852E64C07\", \r\n        \"BE71C51C14188088049D71A0996645BCB3621F2DA8B4221C\", \"670ED0E64D38A590FF05402432A7DBA64462278A75BB9015\", \"581C36300A0E09032826C916BD14A2121DC960C94836EC25\", \"E0C28A8B48F468412C08F040192A2549406C02F464061C49\", \"05E08B4669F4D2654A86281B0E0CF154111B050BBB095116\", \"882CD5D2CC5C46385C788E71E0429A592AD365460A3A08A1\", \"C7325901A66316F581C22630CE15222C10FCA4604B091C8C\", \"2FBA3815AC8BCCCF5083CA070F084DF31D69D2F98685A67E\", \"D2870081D1017456CDFCD40A2C0F88C01F26340BB74B160A\", \"2870E306E6A800CE3BF792C28C33D0403DA2DDA740984005\", \r\n        \"3490539543A335CD8AB02EA4BDC41E1A5BD70C513FD94D14\", \"17A87CB81EB96E664442640FCB63C10B760CB964232632C3\", \"DFCA030F8CD878936F827959667E683E0603A39971429638\", \"D68209D8B188C078C7E8A9F3CEA70845DC9E583A4E02E4D4\", \"5DC2216CBE9E89236D1EE57CC50C35A4F7427628CAA10603\", \"4AB1D712E487F4A633E408C2E3242C0D7414900C91771852\", \"2250023E4985A22A581ACEF71491A64598C90628B095A436\", \"348243786A0E7320170CCEE0370C20A27DB7F2CB08CCE1A8\", \"00E58B02AFF34517BA508D114C0A11F501410394A0AEB871\", \"A55092C20A08F0D100CDB1A001D38040DF0A31290BB80048\", \r\n        \"3294C000246804F191203315D0976732730617604D5380B8\", \"0C16B7C845D404010021FF0B4D414347436F6E2004031039\", \"000000015772697474656E20627920474946436F6E766572\", \"74657220322E342E33206F66204D6F6E6461792C204D6179\", \"2032352C2031393938003B\"\r\n    };\r\n    private static final String TURTLE_31[] = {\r\n        \"47494638396144004400D50000FFFFFF9898001111112222\", \"2200323266660065980063969699999999993396966399CC\", \"00636496323200336600CCCC98FFFF996699336496639898\", \"CC33333330633030306330636398CC98CCCC0099CB3399CC\", \"66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\", \"44636330DDDDDDFFFFCB100000001000777777888888AAAA\", \"AABBBBBB555555666666000010000022000032000044EE00\", \"000022000032000000003000003000003000003000003000\", \"0030000030000030000030000021F9040100001D002C0000\", \"0000440044004506FFC08E70482C1A8FC8A472C94C52584E\", \r\n        \"1BA5314D043E0B904AE56A7ABF8DD1C8663B9D062D1BEAD4\", \"6037688DC1A011977E9BA441E2B327D15B2E0336746D8405\", \"877E8701017B010601050124938454143629775F97025484\", \"938B918B7C101026A5221F1990010D05958464656F342414\", \"249A47162F830D9DAEA0A1A31FAA8BC606AF84149723B9CE\", \"4264036E0D83BDB236BCD483937E1CCFDF422C0D93112035\", \"504A141109240F1234E8E0F2F3F4DF1C1C99F5DF2C022963\", \"E82DE65063636380000A0206382031C29B3E220A3AF821E1\", \"6000820E2C7AF92964E85501760A481C6A8082D0894E36E2\", \"7DB36061480A2E2A28089A52894404578A4094B2428C58A8\", \r\n        \"FF432395B53941A285823D09D82D73A8E99A1C3A0544024D\", \"7AE503A30420403C806095D5226DB2543E0C7782028D0114\", \"4AD221714C11A46474A4D8C234F60B0A29026CA14D486659\", \"0A18234466BDAA2062DD250C063CC0AAE0840DA687234B96\", \"ACC00689C28846B0103B99C88814CB8E5CAAD1C202951A11\", \"367C2CF0B8B3111614103094158B0E85642F2E85758DD108\", \"19656505BA82456DDC08C774EB897900C22AB711602FD58C\", \"34E99003A0C082B25966071CA6CA640810B0D1A2CD20416C\", \"48B0C3B9684F56110156BD8D54BB8E0D310D5CA450EFC745\", \"0B4D2A1CA4DB5D9528424C021F25A0C0030F88D09C318854\", \r\n        \"505F4124A4B060486348E04C0AB23C35FF8E03108E224229\", \"CD1D380A2B6C6DB45177FA64D44B716FD0D19E159128880A\", \"7C19D07888635408225946D410380E548AB8F5111F08BA10\", \"0B72CDF0C60C1DD34C8220541B4169902C17F0F69A2CC825\", \"248834748C815682111C358E964464D4420C45FD978F1153\", \"F091556115A239C42D0580C058034B40C1C29B761271CB14\", \"2F7016E8A18826AAE8A24388D3423F0ADCC3E8122D2C73D9\", \"06018010521E906949012F867640460B35544082011A58A5\", \"4103A0851A193F0884D628461C4A018300E5A9A74003E71C\", \"2A8E0A15A4049B1B675462430CB224E0AA6B0854E04F1983\", \r\n        \"C834054D505E22880036244A1B1D820CA2D6407151EB1805\", \"9251C0614B43B840FF93035042B59648EBD52607B6CB6A52\", \"410547E9B9910AD7CC32C75409AC354E2294282353B6F2E4\", \"A1C03A06B0C310742FC6011582EB0165B12892404914B6E4\", \"7E930706019F40435ACB8C30C708344595885B8B34976391\", \"905432850DB5A4D0406191F6A6848B4F64344005958E41ED\", \"5A232982D5563E1983602470D926CB2D12A4504004A96D40\", \"810A77A4E082001CD7044A4F59811DB6313FBDF2A26381BD\", \"A2A7562454908B743255898828561153CADDA9289D400415\", \"A8757618523D70CB37057147B457AA7C00C1882426CDF475\", \r\n        \"511162725F9B8106E8DBBF55729D305664955552492940B6\", \"5B24649E5C3D3E47399CC58CB072F456791BED8714DDD6EB\", \"CACC2570D41741D991280E41894C373D85207C4666412F14\", \"F038F04F085ED17AA6A1C4826D0C9D8EC5020C9F58F606CB\", \"6413938C766D74EC5A5AC67EF2112452354D0DB62C6A6901\", \"B6249114B149DCC645866316059A110D6AB950C653D76288\", \"005ED009916060126E3B540AEE72BF8244035A64E84404F2\", \"9494E6342081685213054660816E5D62332E6900820EF481\", \"4DE94F00D09944F58A700B3E3C804EB6ABCB1602508ECAAC\", \"B0511A4909A25CD1B29BB9A00B935AC2321E600305A82B88\", \r\n        \"5E90820E91C8C426DE21080021FF0B4D414347436F6E2004\", \"031039000000015772697474656E20627920474946436F6E\", \"76657274657220322E342E33206F66204D6F6E6461792C20\", \"4D61792032352C2031393938003B\"\r\n    };\r\n    private static final String TURTLE_32[] = {\r\n        \"47494638396144004400D50000FFFFFF9898001111112222\", \"2200323266660065980063969699999999993396966399CC\", \"00636496323200336600CCCC98FFFF996699336496639898\", \"CC33333330633030306330636398CC98CCCC0099CB3399CC\", \"66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\", \"44636330DDDDDDFFFFCB100000001000777777888888AAAA\", \"AABBBBBB555555666666000010000022000032000044EE00\", \"000022000032000000004D00004D00004D00004D00004D00\", \"004D00004D00004D00004D000021F9040100001D002C0000\", \"0000440044004506FFC08E70482C1A8FC8A472C96C0E5914\", \r\n        \"4AA35148683E8114A935727A9B5A49C5469E46A5035B8336\", \"1D48A7A7938DF5FD726C24C7C0D5A190E527530D24240109\", \"540589018B01890989540D6A0D146936020D120A09091F09\", \"240D2A492969747E142A2D7E6A6F825305011FB01F1F1010\", \"26B620B28A05068584939229754CA781539328BD8B558A19\", \"9D9E8BB2A0700D2373C4D9422C3623030D272828926A9364\", \"2324D76E05B40620EF99DAF21D2C03E89C35C3F3FBFCFDFE\", \"471CF4FD934721C60B0A47FC9C10F0E2451A01343E081CE8\", \"85C20B320E90BD9A4228818202915C9D39C58F9002030140\", \"28B036C2851B4ADF1A7002992843CA072062D1C2D28859A2\", \r\n        \"FF0A70D41C3BC6C6C6C43ADC5E9621B1AC11276920121802\", \"F10057CE4789124D92D38062110B0246700D44828DA24506\", \"A83402896C15990108BC3A614143809F11950608B04181CE\", \"131B09723E78A0400142B94B56764AA9C028E2C790FB4929\", \"0C4B813D0A7C2267B381C285140A0E3AADACE15773111B2A\", \"489CD00705946A57300E0AB074D8741112155CEC95934CD0\", \"318D6D07A439FA98432B57541EB982C48B1A384AAB141022\", \"91A201824F0A2A50E89284458D4D9E088DC0FB5B50569A8C\", \"DEE5B489152B72295CA7135E59FB48260C876CD02060A345\", \"0B1B27383748044CB1038208BAC4A2004E22D0D253004C21\", \r\n        \"478924F535C1C01123D8D5C000E511B2FF562C19D4624B83\", \"862CC6C8896DCCE6D83F29903189148914C8CC8929810081\", \"2EBB64E54A1A037020173734A080067205C2F2E022204012\", \"94147CD9E6C7004001370809CA552389460548074A05B60D\", \"E1470DE350B31719BBB9F8023AEC78F20161A2742944146E\", \"9040818F4BC02856855DB290023B0944F0400524B8290F37\", \"869D6081A08826AAE8A28C76908E5DD4055A5AA347ACE482\", \"021B707285020870416911490D50C305BD5CC18E03DC21BA\", \"A2112DD6D0420C27B8604D9F36D089A80B29E04A440AFFFD\", \"77E50B02C0E062938952D0428B29B0C00D32ACB472C22995\", \r\n        \"F035A969512090C2355C5D2340792320778D8BD34646825E\", \"27742B5C30831440FF82AC8204F32C49A6A9A0461EC841E2\", \"D174541002521C1BC2894D113EB2C001029935A1AC0D87BE\", \"C9D1376A643553010E9C672484D404E3E2002D542001AE09\", \"38A0920204D80A90BCF7B65B461A8270A29C9181F1040B2F\", \"F56AD411539C18C625122C349002081A18F00928DF4A49CD\", \"59814585C5538FF4A49C50C8B8712953857595C408157442\", \"E52504747BF224452A4295089DB49C13338F2450010D34F8\", \"C12C1951244B5C111490D0D8B715B440095F44CA3D8B27B3\", \"3C608B2D1FD8C44C0311ABCB1132E12A6151697418E7591A\", \r\n        \"28701549212FD728C22D0846130B234616C01BDBFEAC8209\", \"05C730C5797AEF40A072027E07FEA1740046416CE897E02D\", \"D548211F4A95748D7E2368939266449BF83C2E4ADEAD2B8B\", \"CC240D04244A23155BE47423578B9CB9D2B0873E3D9FBCCA\", \"D6ECDBC6BF3F0A3B09CACE9D65C859C0476FC301D49E7938\", \"1B1CD14C93E1666C58C6142243B6EC95C7B452CE980310DF\", \"20B013154AD8060A65084401AE51090ACC6628368052048A\", \"168B9FB9C92DC33A17E99EA5AC1615A2131F330CA25AE482\", \"11A8822F6FA3071E36209D07C443502910807FD2913F2450\", \"2005385454CE083141100CE2534BC8192C40801B09080088\", \r\n        \"4A60800D1400822546018941E48B0DA048C52A1E21080021\", \"FF0B4D414347436F6E200403103900000001577269747465\", \"6E20627920474946436F6E76657274657220322E342E3320\", \"6F66204D6F6E6461792C204D61792032352C203139393800\", \"3B\"\r\n    };\r\n    private static final String TURTLE_33[] = {\r\n        \"47494638396144004400D50000FFFFFF9898001111112222\", \"2200323266660065980063969699999999993396966399CC\", \"00636496323200336600CCCC98FFFF996699336496639898\", \"CC33333330633030306330636398CC98CCCC0099CB3399CC\", \"66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\", \"44636330DDDDDDFFFFCB100000001000777777888888AAAA\", \"AABBBBBB555555666666000010000022000032000044EE00\", \"000022000032000000003B00003B00003B00003B00003B00\", \"003B00003B00003B00003B000021F9040100001D002C0000\", \"0000440044004506FFC08E70482C1A8FC8A472C96C922829\", \r\n        \"C5A6F0592448A35673CBEDB00696119133209D288D7421DD\", \"A0A0D3B6B88DD2AD2353B60689AD4E240A050E8001060601\", \"0587886B7C6C7114237B35340D364C0A14201F0620055923\", \"2E0270277A24110D881FA9542210262610221F0901011FB4\", \"888769036E3624764B72796C806B6BB3C48819B387092009\", \"7C360271041CBFBF2C1436030DA127A30D27362703E4E494\", \"712F2F247FCD0F200A97D6F2422965EBEF7AD5F3FBFCFDFE\", \"FF008D50A041C1C20B176E1A685010B00E8B060852B81097\", \"07CDB76224F630A204AE0C2F1A15468C68E0C2851F3F7B24\", \"704951A1410C042CE29C3911EA143244CD20D44A65EB1633\", \r\n        \"FF8D8BF450A2D36504050936F0CC9138229A0D1434BE91C0\", \"8593164F1001DA4180650B5084A07258341492CD468D6D6D\", \"38EE99842BAB01621AF3843B454281B36735C62AC1F67480\", \"00A3D288266141586F973DCD9E287861B8B1E32D08781550\", \"80A50505158F7FB9A9D1E08201071B3EACA9901949612479\", \"E20CB011235B8C17614B1369918244D214D9DA240497E69B\", \"37381D29ACA620D6080705B83352B830AFC1889ABAD4A449\", \"40D9E6A00019370A9749C2458175F09AEAB386166D9AA97F\", \"4ED102112B4086AC7F140162F33B58712E1C54D870965164\", \"368BA31470854D593D0041061F80E08E08B1BC778B03CBEC\", \r\n        \"118C0DF759A247336B1080C2002DB430FFC746C3F8C4DE56\", \"EDF9A16026872492861BD960B6D20B820DC1411CBC35B0DA\", \"796D0DE2478A011818CB329C68C4C66A15FA539630948C82\", \"025D11D0C2E32DB8F021C06A48FA621803307CB3E41E287C\", \"435750D2F4428100025800488209204859690CC421000D79\", \"98E1666049558807091B4440021EB21561C308307497429F\", \"FC401200081AE85109A1F2E0910DA390462AE9A48EA56002\", \"07F9753028A54B34004F02096E00820A0A08B029A763A4D5\", \"40041AA462C0073414892A1E0318A5DB3D368C87EA108EBA\", \"E6D784A7124A018C7652E00D92944C0923388EC8DAD80008\", \r\n        \"7858DC1B73190B0D1B24EC324738C126A1800BDD76519B04\", \"158443A3702820CBFFC8246CB0F82B711D1CB747461F9000\", \"424608C8A34203293495875FD065041E46F3D1479F1C68D4\", \"652F4A50CC93020C713860911A41DDE4242220A6D1D40919\", \"C173EF031430244F648D507C0532B56405A580F3AD91DA48\", \"DECC35C7695C60334436E60EC34E03CB24284B563D514542\", \"0592BCD1C670D628C07223BFF1B10820EF89E0CE7A3EFB11\", \"A503823CC3488C5B54008F2CD979F88DB55315B34A26CA80\", \"B015571910730B09B4244B66525D24D5E4070A5072011AEA\", \"5E083715B620A8762BB1C8D213940150F6CD8D5D9C20C106\", \r\n        \"721210521BD1188C6D8A1F20C80A2B402B088B7B050FB99A\", \"055D3CD2300B2954D3AFADBD384D458A3BA69C955D10A0E8\", \"DCE45BC0B561470ACE6AEA481B027859F62038E1E2F3CF56\", \"8FE0321ABB3474A4397A8CC2964FC4B7255A5036CA8102D7\", \"FD28258EAA15A5E1C01E6D256080758C08A380042438C06F\", \"432C184463034B7A791EDC87C4250EC42F0C20E05DB2408E\", \"AE00F2B0B4D0601B63E3CDF7A4C1A164F5021099680665C2\", \"15106C082037BC79C219A8D40D7861E314580181821AA092\", \"D264034E72F086055633020A762037366841EF1C1393478C\", \"6085BB62821B2031951ACC30872CE018DC12108107E42D5F\", \r\n        \"3934020BA662954BC02B89476813091E10071742710834BB\", \"A2167715040021FF0B4D414347436F6E2004031039000000\", \"015772697474656E20627920474946436F6E766572746572\", \"20322E342E33206F66204D6F6E6461792C204D6179203235\", \"2C2031393938003B\"\r\n    };\r\n    private static final String TURTLE_34[] = {\r\n        \"47494638396144004400D50000FFFFFF9898001111112222\", \"2200323266660065980063969699999999993396966399CC\", \"00636496323200336600CCCC98FFFF996699336496639898\", \"CC33333330633030306330636398CC98CCCC0099CB3399CC\", \"66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\", \"44636330DDDDDDFFFFCB100000001000777777888888AAAA\", \"AABBBBBB555555666666000010000022000032000044EE00\", \"000022000032000000002700002700002700002700002700\", \"0027000027000027000027000021F9040100001D002C0000\", \"0000440044004506FFC08E70482C1A8FC8A472C9545246A3\", \r\n        \"00480352A55288A676DB4CD91ADFC1EB35107C1B8D93CD66\", \"B6A58E9C5523957024488D0AB7C89A235C6B0D0314030D05\", \"680578058B0601058E8B918B0D1460686D2C7B463616596B\", \"67688609888F1020095210AA22201F09A801198E8EA18202\", \"2F2D5C0A361B206036832D2E14C4270378A1240E8F920109\", \"91B18F01D301B5C63627091824AF78999A4C2C0C2F361424\", \"143469960D0E140202039F836F462C57E0F849290D24DC1F\", \"11FD6CE41B48B0A0C183088DA8185023CF087E0A34084CA8\", \"89530B0A43529C405328D49787B5426DDC18CADD9A1323FA\", \"29E8C76FE24015B5BE242A304ADA879B1F32DCA4268DDD22\", \r\n        \"FF5A6A80ADD1A4F243807E2D46B4C0167292216A1974B63A\", \"2505C4031146A77D4884E6041E1B2AF6D8B3A084C5276024\", \"BF7CA9544BD2333C14D6041C446251820F204028D845319C\", \"171A035C34B040E15BDFC319CBC5C588B8B1E3260ACC22E0\", \"F078204A12113468306AA0809ECAE0E2D670114340DCB36B\", \"0A736101332E017C2C0C0FA190024AC8745F46861A440CDE\", \"9A0A0D5CB420A1E05537949435B1A04DA2DCA7E00D50A0E9\", \"C7ADAE21692C4386CCBD865E4112656CA46BFB2AD25DA351\", \"9D3D9B96A842BA43D6181F14F02B94249B101EDC7D004204\", \"849DD0CC72D43A6684A549031FACF4C408279C50C9001BD5\", \r\n        \"5553003BE98417045839631586394102FF1F18CDC9C6840A\", \"C4A1028283288CE08219229194084FD3A082CA2319F477D3\", \"2BAE58F3C9460A6CF1046D4678911A050E6A874804D408C8\", \"DE75C860F30509AD68308D5E2A88884F0AA7D950037D97E8\", \"4692216904424898E5301057030980B0413FAA3D86250C66\", \"0840C348D80C60C150A00DC48200175587820D3DE6391005\", \"8FBCA5800BDE09AAE8A28C36EAE8A39056C60173FD8CA040\", \"0A83449A04897BE118800605B8A469111C50828601066C76\", \"47A0A316014C520D8CC0961D40E683809506A5609A003194\", \"16433C160CE2A41BB816B117091B5C914542F63015D220D3\", \r\n        \"0D324021E1D5BA521E2E70739755285CB9866C9588F9A548\", \"D185429F0DB29AF4FF09142E1CC29F020FD890DC1E142000\", \"93405EA041080A5F16908222FD70F5E1B82D9593520334A0\", \"D02638369020C1390234184832772882087B90C404069DDD\", \"1DA4820B1530D824296838B04C92CC40B3880382D4126EA2\", \"050582CC75024B03020431CA92A43311A0314A1A41D9502C\", \"388269F7CC8469FE27552B3BCDF20809D370D49BBCF918E6\", \"059D95D44CD3CD216490F403A664E535C6771450645C1380\", \"C302326CD117AECFCF8892D7331FF867820958BD92578693\", \"7CF8C9D049F4710A4B234C4B49C4D345F00C8D8F7CA08A2A\", \r\n        \"A7E0F500DE204833604CF26951C3031F18E0CB09045462CC\", \"CCF641FD133538157AB308B09407A6503610E0C216FD24A0\", \"D8011E2884FE503CCFD9773AC6854AA3D38C37F97D1A3F78\", \"D450E5120A9C208104B4C59505316C7134B12133A70C8980\", \"D2C027FA0933A5D98A020D306146E0591EDE15D0D847000D\", \"2A8DB428000C2FC440E8D67A2B68D01AF184742EF2E34153\", \"5D1C809B3508660D2F18C1D1A4F0800790E0330669D6181A\", \"7602E998AA41875343034CC306B5C84648C03901CC288225\", \"36C4AA2316FC0A30E221801142AA5936F853079F601AC0B5\", \"8A18B222810B22D3AA2594A3010A88405EAEB5AC1E92EA5F\", \r\n        \"14D2CB08DC604438A0015E5F69E212EC6143295AF18AA30A\", \"020021FF0B4D414347436F6E200403103900000001577269\", \"7474656E20627920474946436F6E76657274657220322E34\", \"2E33206F66204D6F6E6461792C204D61792032352C203139\", \"3938003B\"\r\n    };\r\n    private static final String TURTLE_35[] = {\r\n        \"47494638396144004400D50000FFFFFF9898001111112222\", \"2200323266660065980063969699999999993396966399CC\", \"00636496323200336600CCCC98FFFF996699336496639898\", \"CC33333330633030306330636398CC98CCCC0099CB3399CC\", \"66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\", \"44636330DDDDDDFFFFCB100000001000777777888888AAAA\", \"AABBBBBB555555666666000010000022000032000044EE00\", \"0000220000320000000079AB007900007900007900007900\", \"0079000079000079000079000021F9040100001D002C0000\", \"0000440044004506FFC08E70482C1A8FC8A472C9542A522A\", \r\n        \"0A45C06A5AAF4D964DE062C0A4B6F040D0B095B7A7B02DC5\", \"EE345CA38A24D14824480A520A4BA4C4A4551D29270D5336\", \"8405248A24050D0D0501010593948C15288E8E240D69367C\", \"4C038EA18E949319011010A720A910201F1F7620221F9194\", \"9984027B9F2924B18A23236599C48F90B59294099401CB91\", \"0D929B0D2F36301694AF20DA200D124A2C022F4C146A3628\", \"28669934349936EC24E43631036B9FF6F7471424CD8D2714\", \"BBF8020A1C48B0A0401523146CD090E08306470AF0D97820\", \"019E412283CC507084421AC7629C0811DB18320CC0802C5A\", \"8C40908282C834A4EC3063952000AC48CE20E98CA4281DB9\", \r\n        \"FF01015330E0D081DC89502710319A14A956810FB3B4D54A\", \"A08D16CE3B23C390A8682741858849580C5060E70C851129\", \"5D6C24538864031266CC3472C42ED19D46EC1A08485AAF08\", \"8B14812EF26121C1460B182E16A54320B8B1E3C790234B66\", \"8240808D0020347C7051462007152A1C176A70C1458D4406\", \"3EB0016C85438AC405A82AF8D7388500CB0206A411204513\", \"A70603A4E80353AEC10812891BA013ACC251184784CC70D6\", \"B42F91C7762E7D96A14070009B727C6DB86DE48069B348FC\", \"20E12C503EC0A634C1F782154802C6A1624CCD7FB00A352A\", \"B20CB1D82209316A1494C221BB9122CD24FB7DF0D42CA974\", \r\n        \"05C20326D0020908054C275E18983086FF050B1438B00905\", \"9C99014F3A24D0E18824E7A157937A3735A5222E27C49680\", \"01016400421E271951C3031F180082782804430F87203520\", \"6226EAD9D2A40173E146C20861BCB0A2361B1440A5131454\", \"D4E3102D81E7084964C4D5000D2265E74F3CE44CB6040B0C\", \"1C18069B358471DB08160C109A9B03A5745C040968E00027\", \"3604C6A73D0A30104F5F8736EAE8A390462AE9A493B16028\", \"A5DF98F0D6082020F00077982281801ECB68160043150454\", \"0809043806CF260E1810810620E8F109072C142068AD24D4\", \"D0186F358C095C3996CDD9C611795490182C76B8341F4120\", \r\n        \"A220C50B02C0F0C718D8DDD6D61696D5C9DB1B05289047B0\", \"9E08A64592474127FF92BA2341B70549B6D666DC462E3957\", \"0C23A43C92A4BB260DD4126B423437265B31E16BDE3E2F1A\", \"838B6F695CFAC91A2974160621D36592E2529340A9537E05\", \"54404A3F6A58062A3E67A950910B08F6A6702931E6889E7A\", \"4A46A0DE5C48317A0F0BCD55502F31932C68132C404BF541\", \"06CC241380027315124641CF39B7912274A83761360FB462\", \"5524199C32093122154A100724A5B3F23EA83CD04C2A2654\", \"D8CC07555FCD533127AC4454504D33B9CC230DD502202BA9\", \"88D0CC84AE20034200EDA82152B05D5E81099969A21801D2\", \r\n        \"4D020860CB1F40408B1DB1243D468D11CCB14D1E4CE47187\", \"3423689B64222CEE54D33290102DE080BF1D62E32BB22930\", \"C9C29743E0B17A23049C852D743CCFCC0CC7384189EF2160\", \"3C3D494D3B0EA9440308A4460701030443CE5A4A8BBD755D\", \"8AC84C3CC836D4BC5A3C0D54102F120A9C50C10670853102\", \"071CB430F1BBE9B06566288AE4A52F5FE4DC1686C358380B\", \"05002884BFD829297023C4087443880AB0831ED7BBCDC882\", \"C2002BFC25051680010C6EE30F8F018710088449E90618AA\", \"22C4494EE6E0C25B5AA0000910B0844290420B1A302B6D3C\", \"00030280E11106A1089BD890363A3C82261EF080A5059109\", \r\n        \"2F3CA21297C8C42606010021FF0B4D414347436F6E200403\", \"1039000000015772697474656E20627920474946436F6E76\", \"657274657220322E342E33206F66204D6F6E6461792C204D\", \"61792032352C2031393938003B\"\r\n    };\r\n    private static final String TURTLE_IMAGE[][] = {\r\n        TURTLE_00, TURTLE_01, TURTLE_02, TURTLE_03, TURTLE_04, TURTLE_05, TURTLE_06, TURTLE_07, TURTLE_08, TURTLE_09, \r\n        TURTLE_10, TURTLE_11, TURTLE_12, TURTLE_13, TURTLE_14, TURTLE_15, TURTLE_16, TURTLE_17, TURTLE_18, TURTLE_19, \r\n        TURTLE_20, TURTLE_21, TURTLE_22, TURTLE_23, TURTLE_24, TURTLE_25, TURTLE_26, TURTLE_27, TURTLE_28, TURTLE_29, \r\n        TURTLE_30, TURTLE_31, TURTLE_32, TURTLE_33, TURTLE_34, TURTLE_35\r\n    };\r\n    static final long serialVersionUID = 21L;\r\n\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/graphics/PathElement.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   GPen.java\r\n\r\npackage acm.graphics;\r\n\r\nimport java.awt.Graphics2D;\r\nimport java.io.Serializable;\r\n\r\n// Referenced classes of package acm.graphics:\r\n//            PathState, GRectangle\r\n\r\nabstract class PathElement\r\n    implements Serializable\r\n{\r\n\r\n    public PathElement()\r\n    {\r\n    }\r\n\r\n    public void paint(Graphics2D graphics2d, PathState pathstate)\r\n    {\r\n    }\r\n\r\n    public void updateBounds(GRectangle grectangle, PathState pathstate)\r\n    {\r\n    }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/graphics/PathList.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   GPen.java\r\n\r\npackage acm.graphics;\r\n\r\nimport java.awt.Graphics2D;\r\nimport java.io.Serializable;\r\nimport java.util.ArrayList;\r\n\r\n// Referenced classes of package acm.graphics:\r\n//            PathElement, GRectangle, FinalPathElement, PathState\r\n\r\nclass PathList\r\n    implements Serializable\r\n{\r\n\r\n    public PathList()\r\n    {\r\n        path = new ArrayList();\r\n    }\r\n\r\n    public synchronized void add(PathElement pathelement)\r\n    {\r\n        path.add(pathelement);\r\n    }\r\n\r\n    public synchronized void add(PathElement pathelement, PathElement pathelement1)\r\n    {\r\n        path.add(pathelement);\r\n        path.add(pathelement1);\r\n    }\r\n\r\n    public synchronized void remove(PathElement pathelement)\r\n    {\r\n        path.remove(pathelement);\r\n    }\r\n\r\n    public synchronized void clear()\r\n    {\r\n        path.clear();\r\n    }\r\n\r\n    public int getElementCount()\r\n    {\r\n        return path.size();\r\n    }\r\n\r\n    public PathElement getElement(int i)\r\n    {\r\n        return (PathElement)path.get(i);\r\n    }\r\n\r\n    public synchronized GRectangle getBounds(PathState pathstate)\r\n    {\r\n        GRectangle grectangle = new GRectangle(-1D, -1D, -1D, -1D);\r\n        int i = path.size();\r\n        for(int j = 0; j < i; j++)\r\n        {\r\n            PathElement pathelement = (PathElement)path.get(j);\r\n            pathelement.updateBounds(grectangle, pathstate);\r\n        }\r\n\r\n        return grectangle;\r\n    }\r\n\r\n    public synchronized void mapPaint(Graphics2D graphics2d, PathState pathstate)\r\n    {\r\n        int i = path.size();\r\n        for(int j = 0; j < i; j++)\r\n        {\r\n            PathElement pathelement = (PathElement)path.get(j);\r\n            pathelement.paint(graphics2d, pathstate);\r\n        }\r\n\r\n        FINAL_PATH_ELEMENT.paint(graphics2d, pathstate);\r\n    }\r\n\r\n    private static final PathElement FINAL_PATH_ELEMENT = new FinalPathElement();\r\n    private ArrayList path;\r\n\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/graphics/PathState.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   GPen.java\r\n\r\npackage acm.graphics;\r\n\r\nimport java.awt.Color;\r\nimport java.awt.Polygon;\r\nimport java.io.Serializable;\r\n\r\nclass PathState\r\n    implements Serializable\r\n{\r\n\r\n    PathState()\r\n    {\r\n    }\r\n\r\n    double cx;\r\n    double cy;\r\n    double sx;\r\n    double sy;\r\n    Polygon region;\r\n    Color fillColor;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/graphics/PenImage.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   GPen.java\r\n\r\npackage acm.graphics;\r\n\r\nimport acm.util.MediaTools;\r\nimport java.awt.Image;\r\n\r\nclass PenImage\r\n{\r\n\r\n    PenImage()\r\n    {\r\n    }\r\n\r\n    public static Image getImage()\r\n    {\r\n        return MediaTools.createImage(HEX_DATA);\r\n    }\r\n\r\n    private static final String HEX_DATA[] = {\r\n        \"4749463839614F006500F70000FFFFFF9800983399999898\", \"00111111222222000054CBFFCB0032980033660033CC0033\", \"FE00323266330066660000659800989800CC9900FE993298\", \"00659800CC0099FE0098659898999999CC9900FE98009800\", \"329800659900CC9800FE3399CB3399FF9999339898659832\", \"0098650099339998659833CB9833FF9999CC0099FE003366\", \"99656698CC9898FF99993232003366003200323300663200\", \"9833339965009866339900663300983200666600986500CC\", \"3300FE3200CC6600FE65CCCC98CCFF99FFCC99FFFF993300\", \"CC3200FE6600CC6500FECC0033CC0066FE0032FE00653399\", \r\n        \"33339966669933669865CC00CCCB00FEFE00CBFE00FE6699\", \"CC6598FF9898CC9999FFCB9833CC9966FF9933FF98653333\", \"33326532323265326565660033653232660066653265CC33\", \"00CC6600FE3200FE65000066CC0099CC0066FE0098FE00CC\", \"CC00FECB00CCFE00FEFE33CC0033FE0066CC0066FE00CB33\", \"98CC6699FF3399FF659866CC9965FF9898CC9899FF99CCCC\", \"00CCFE00FECB00FEFE009933339966339933669865659833\", \"CB9966CC9933FF9865FF33CBCB33FFCC33CCFF33FFFF99CB\", \"3399FF3399CC6698FF65CC98CCCCCCCCCC99FFCBCBFFFF99\", \"CCFFCBCBFF99FFFFCBFF3333CB3366CB3333FF3366FF6533\", \r\n        \"CB6666CC6633FF6565FFCB3333CB6533CB3365CC6666FF33\", \"33FF6633FF3366FF656533CB3333FF3333CB6633FF6666CB\", \"3366FF3366CC6665FF65CB33CBCC66CCCC33FFCC65FFFF33\", \"CCFF65CCFF33FFFF65FF66CCCC65FFCC65CCFF65FFFF98CC\", \"CC99FFCC99CCFF99FFFFCBCB33CCFF33CCCC66CCFF65FFCC\", \"33FFFF33FFCC65FFFF65444444656532DDDDDDCBFFFFFFFF\", \"CBEEEEEE1000009800000010006600000000980000667777\", \"77888888AAAAAABBBBBB5555556666660000100000224400\", \"005400000000CC0000DC0000EE0000FE0000320000440088\", \"0000980000AA0000BA0000CC0000DC0000EE0000FE00CC00\", \r\n        \"00DC0000EE0000FE00000044000054000066000076002200\", \"00320000AA0000BA00000022000032007600008800000000\", \"AA0000BA00007600008800000021F90401000000002C0000\", \"00004F006500C7FFFFFF9800983399999898001111112222\", \"22000054CBFFCB0032980033660033CC0033FE0032326633\", \"0066660000659800989800CC9900FE99329800659800CC00\", \"99FE0098659898999999CC9900FE98009800329800659900\", \"CC9800FE3399CB3399FF9999339898659832009865009933\", \"9998659833CB9833FF9999CC0099FE00336699656698CC98\", \"98FF99993232003366003200323300663200983333996500\", \r\n        \"9866339900663300983200666600986500CC3300FE3200CC\", \"6600FE65CCCC98CCFF99FFCC99FFFF993300CC3200FE6600\", \"CC6500FECC0033CC0066FE0032FE00653399333399666699\", \"33669865CC00CCCB00FEFE00CBFE00FE6699CC6598FF9898\", \"CC9999FFCB9833CC9966FF9933FF98653333333265323232\", \"65326565660033653232660066653265CC3300CC6600FE32\", \"00FE65000066CC0099CC0066FE0098FE00CCCC00FECB00CC\", \"FE00FEFE33CC0033FE0066CC0066FE00CB3398CC6699FF33\", \"99FF659866CC9965FF9898CC9899FF99CCCC00CCFE00FECB\", \"00FEFE009933339966339933669865659833CB9966CC9933\", \r\n        \"FF9865FF33CBCB33FFCC33CCFF33FFFF99CB3399FF3399CC\", \"6698FF65CC98CCCCCCCCCC99FFCBCBFFFF99CCFFCBCBFF99\", \"FFFFCBFF3333CB3366CB3333FF3366FF6533CB6666CC6633\", \"FF6565FFCB3333CB6533CB3365CC6666FF3333FF6633FF33\", \"66FF656533CB3333FF3333CB6633FF6666CB3366FF3366CC\", \"6665FF65CB33CBCC66CCCC33FFCC65FFFF33CCFF65CCFF33\", \"FFFF65FF66CCCC65FFCC65CCFF65FFFF98CCCC99FFCC99CC\", \"FF99FFFFCBCB33CCFF33CCCC66CCFF65FFCC33FFFF33FFCC\", \"65FFFF65444444656532DDDDDDCBFFFFFFFFCBEEEEEE1000\", \"00980000001000660000000098000066777777888888AAAA\", \r\n        \"AABBBBBB5555556666660000100000224400005400000000\", \"CC0000DC0000EE0000FE00003200004400880000980000AA\", \"0000BA0000CC0000DC0000EE0000FE00CC0000DC0000EE00\", \"00FE0000004400005400006600007600220000320000AA00\", \"00BA00000022000032007600008800000000AA0000BA0000\", \"7600008800000008FF0001081C48B0A0C18308132A5CA810\", \"12248610234A640809DBBF2DD830E431D1451B8689204326\", \"84C4022306483F5AB0E882ADE5968F226386C40026E38F47\", \"9030E8C45072CB0F9940252EEB226265476D0CFE29C5F630\", \"A8538818B6B4C00869D9D3AB22B7FC636115ABD7AF60C38A\", \r\n        \"1D4BB6ACD9B368D3AA5DCB166B450334E23280D916E48F2D\", \"1E7F406AA11792096D2CEA4A848491C58FBE3FF23CFA81C1\", \"0B5DC10A317089CAC221DF9C5E5E428EF8A30B06315D0C30\", \"D0267573C8652CA23E36CDBAB5EBD7B063CB9E4DBBB6EDC1\", \"D80C6CD9D2F4B6418E09BAD0B04143B3EF81183A62435CA5\", \"4B8CC0C73B6364BCF3824E9FBE519BD49B27A76516CB6F57\", \"FFC4963AE70A315EC0E0DD52597C4B9D7A5B3844597235ED\", \"962CE2D2E8D245065E6C941C0700249E61D3C50CA46504C9\", \"01020A74D7671D79D15B830E7A661C850661808D18D860E8\", \"E187208628E288249668E28928A6A8E28A6C2D13156F2326\", \r\n        \"275C0C4C819887180CE8C7D28402A2C6400C5BD8E0455C5D\", \"74D5E00F167551194A5EF0C7608384BD601824BBC8971C76\", \"024615C305F275F74877D878F1D37184B177521E3AB16002\", \"0BE859729C760A22F6C32E4876C1236D5191E7D04D7BE6D4\", \"451E6416261F75D571E8E66DA8BDA7174F8CB2B09591B60D\", \"95D1231718888D132C8077E16D26607381097ACD199F81F6\", \"D1462084CFB17041A65B7431269960685728DC51EBDD699B\", \"8618C4B5C58F5B00D95E83B8CEFADF931882975C71A086F8\", \"1E035B98606B83828057638C196D11E088E3C148A2815892\", \"F8CFB42C862BEEB8E4966BEEB9E8A6ABEEBAECB6EBEEBBF0\", \r\n        \"C62BEFBCF4CA1B100021FF0B4D414347436F6E2004031039\", \"000000015772697474656E20627920474946436F6E766572\", \"74657220322E342E33206F66204D6F6E6461792C204D6179\", \"2032352C2031393938003B\"\r\n    };\r\n\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/graphics/SetColorElement.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   GPen.java\r\n\r\npackage acm.graphics;\r\n\r\nimport java.awt.Color;\r\nimport java.awt.Graphics2D;\r\n\r\n// Referenced classes of package acm.graphics:\r\n//            PathElement, PathState\r\n\r\nclass SetColorElement extends PathElement\r\n{\r\n\r\n    public SetColorElement(Color color1)\r\n    {\r\n        color = color1;\r\n    }\r\n\r\n    public void paint(Graphics2D graphics2d, PathState pathstate)\r\n    {\r\n        graphics2d.setColor(color);\r\n    }\r\n\r\n    private Color color;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/graphics/SetLocationElement.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   GPen.java\r\n\r\npackage acm.graphics;\r\n\r\nimport java.awt.Graphics2D;\r\nimport java.awt.Polygon;\r\n\r\n// Referenced classes of package acm.graphics:\r\n//            PathElement, PathState, GMath, GRectangle\r\n\r\nclass SetLocationElement extends PathElement\r\n{\r\n\r\n    public SetLocationElement(double d, double d1)\r\n    {\r\n        cx = d;\r\n        cy = d1;\r\n    }\r\n\r\n    public void paint(Graphics2D graphics2d, PathState pathstate)\r\n    {\r\n        pathstate.cx = cx;\r\n        pathstate.cy = cy;\r\n        if(pathstate.region != null)\r\n            pathstate.region.addPoint(GMath.round(pathstate.sx * cx), GMath.round(pathstate.sy * cy));\r\n    }\r\n\r\n    public void updateBounds(GRectangle grectangle, PathState pathstate)\r\n    {\r\n        pathstate.cx = cx;\r\n        pathstate.cy = cy;\r\n    }\r\n\r\n    private double cx;\r\n    private double cy;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/graphics/StartRegionElement.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   GPen.java\r\n\r\npackage acm.graphics;\r\n\r\nimport java.awt.*;\r\n\r\n// Referenced classes of package acm.graphics:\r\n//            PathElement, PathState\r\n\r\nclass StartRegionElement extends PathElement\r\n{\r\n\r\n    public StartRegionElement(Color color1)\r\n    {\r\n        color = color1;\r\n    }\r\n\r\n    public void paint(Graphics2D graphics2d, PathState pathstate)\r\n    {\r\n        pathstate.region = new Polygon();\r\n        pathstate.fillColor = color;\r\n    }\r\n\r\n    private Color color;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/graphics/VertexList.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   GPolygon.java\r\n\r\npackage acm.graphics;\r\n\r\nimport java.awt.geom.AffineTransform;\r\nimport java.awt.geom.Point2D;\r\nimport java.io.Serializable;\r\nimport java.util.ArrayList;\r\n\r\n// Referenced classes of package acm.graphics:\r\n//            GPoint, GRectangle, GMath\r\n\r\nclass VertexList\r\n    implements Serializable\r\n{\r\n\r\n    public VertexList()\r\n    {\r\n        vertices = new ArrayList();\r\n        cx = 0.0D;\r\n        cy = 0.0D;\r\n    }\r\n\r\n    public VertexList(VertexList vertexlist)\r\n    {\r\n        this();\r\n        for(int i = 0; i < vertexlist.vertices.size(); i++)\r\n            vertices.add(vertexlist.vertices.get(i));\r\n\r\n    }\r\n\r\n    public synchronized void addVertex(double d, double d1)\r\n    {\r\n        cx = d;\r\n        cy = d1;\r\n        vertices.add(new GPoint(cx, cy));\r\n    }\r\n\r\n    public synchronized void addEdge(double d, double d1)\r\n    {\r\n        cx += d;\r\n        cy += d1;\r\n        vertices.add(new GPoint(cx, cy));\r\n    }\r\n\r\n    public void addArc(double d, double d1, double d2, double d3)\r\n    {\r\n        double d4 = d1 / d;\r\n        double d5 = d / 2D;\r\n        double d6 = d1 / 2D;\r\n        double d7 = cx - d5 * GMath.cosDegrees(d2);\r\n        double d8 = cy + d6 * GMath.sinDegrees(d2);\r\n        if(d3 > 359.99000000000001D)\r\n            d3 = 360D;\r\n        if(d3 < -359.99000000000001D)\r\n            d3 = -360D;\r\n        double d9 = Math.atan2(1.0D, Math.max(d, d1));\r\n        int i = (int)(GMath.toRadians(Math.abs(d3)) / d9);\r\n        d9 = GMath.toRadians(d3) / (double)i;\r\n        double d10 = GMath.toRadians(d2);\r\n        for(int j = 0; j < i; j++)\r\n        {\r\n            d10 += d9;\r\n            double d11 = d7 + d5 * Math.cos(d10);\r\n            double d12 = d8 - d5 * Math.sin(d10) * d4;\r\n            addVertex(d11, d12);\r\n        }\r\n\r\n    }\r\n\r\n    public synchronized void add(GPoint agpoint[])\r\n    {\r\n        for(int i = 0; i < agpoint.length; i++)\r\n            vertices.add(new GPoint(agpoint[i].getX(), agpoint[i].getY()));\r\n\r\n    }\r\n\r\n    public synchronized void remove(GPoint gpoint)\r\n    {\r\n        vertices.remove(gpoint);\r\n    }\r\n\r\n    public synchronized void clear()\r\n    {\r\n        vertices.clear();\r\n    }\r\n\r\n    public int size()\r\n    {\r\n        return vertices.size();\r\n    }\r\n\r\n    GPoint get(int i)\r\n    {\r\n        return (GPoint)vertices.get(i);\r\n    }\r\n\r\n    public GPoint getCurrentPoint()\r\n    {\r\n        return vertices.size() != 0 ? new GPoint(cx, cy) : null;\r\n    }\r\n\r\n    public synchronized GRectangle getBounds(AffineTransform affinetransform)\r\n    {\r\n        int i = vertices.size();\r\n        if(i == 0)\r\n            return new GRectangle();\r\n        double d = 0.0D;\r\n        double d1 = 0.0D;\r\n        double d2 = 0.0D;\r\n        double d3 = 0.0D;\r\n        boolean flag = true;\r\n        for(int j = 0; j < vertices.size(); j++)\r\n        {\r\n            GPoint gpoint = (GPoint)vertices.get(j);\r\n            java.awt.geom.Point2D.Double double1 = new java.awt.geom.Point2D.Double(gpoint.getX(), gpoint.getY());\r\n            if(affinetransform != null)\r\n                affinetransform.transform(double1, double1);\r\n            double d4 = double1.getX();\r\n            double d5 = double1.getY();\r\n            if(flag)\r\n            {\r\n                d = d4;\r\n                d1 = d4;\r\n                d2 = d5;\r\n                d3 = d5;\r\n                flag = false;\r\n            } else\r\n            {\r\n                d = Math.min(d, d4);\r\n                d1 = Math.max(d1, d4);\r\n                d2 = Math.min(d2, d5);\r\n                d3 = Math.max(d3, d5);\r\n            }\r\n        }\r\n\r\n        return new GRectangle(d, d2, d1 - d, d3 - d2);\r\n    }\r\n\r\n    public synchronized boolean contains(double d, double d1, AffineTransform affinetransform)\r\n    {\r\n        int i = vertices.size();\r\n        boolean flag = false;\r\n        for(int j = 0; j < i; j++)\r\n        {\r\n            GPoint gpoint = (GPoint)vertices.get(j);\r\n            java.awt.geom.Point2D.Double double1 = new java.awt.geom.Point2D.Double(gpoint.getX(), gpoint.getY());\r\n            if(affinetransform != null)\r\n                affinetransform.transform(double1, double1);\r\n            gpoint = (GPoint)vertices.get((j + 1) % i);\r\n            java.awt.geom.Point2D.Double double2 = new java.awt.geom.Point2D.Double(gpoint.getX(), gpoint.getY());\r\n            if(affinetransform != null)\r\n                affinetransform.transform(double2, double2);\r\n            if((double1.getY() < d1 && double2.getY() >= d1 || double2.getY() < d1 && double1.getY() >= d1) && double1.getX() + ((d1 - double1.getY()) / (double2.getY() - double1.getY())) * (double2.getX() - double1.getX()) < d)\r\n                flag = !flag;\r\n        }\r\n\r\n        return flag;\r\n    }\r\n\r\n    public void recenter()\r\n    {\r\n        double d = 0.0D;\r\n        double d1 = 0.0D;\r\n        double d2 = 0.0D;\r\n        double d3 = 0.0D;\r\n        boolean flag = true;\r\n        for(int i = 0; i < vertices.size(); i++)\r\n        {\r\n            GPoint gpoint = (GPoint)vertices.get(i);\r\n            if(flag)\r\n            {\r\n                d = gpoint.getX();\r\n                d1 = gpoint.getX();\r\n                d2 = gpoint.getY();\r\n                d3 = gpoint.getY();\r\n                flag = false;\r\n            } else\r\n            {\r\n                d = Math.min(d, gpoint.getX());\r\n                d1 = Math.max(d1, gpoint.getX());\r\n                d2 = Math.min(d2, gpoint.getY());\r\n                d3 = Math.max(d3, gpoint.getY());\r\n            }\r\n        }\r\n\r\n        double d4 = (d + d1) / 2D;\r\n        double d5 = (d2 + d3) / 2D;\r\n        for(int j = 0; j < vertices.size(); j++)\r\n        {\r\n            GPoint gpoint1 = (GPoint)vertices.get(j);\r\n            gpoint1.translate(-d4, -d5);\r\n        }\r\n\r\n    }\r\n\r\n    private ArrayList vertices;\r\n    private double cx;\r\n    private double cy;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/gui/DoubleField.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   DoubleField.java\r\n\r\npackage acm.gui;\r\n\r\nimport acm.io.IODialog;\r\nimport acm.util.ErrorException;\r\nimport java.awt.*;\r\nimport java.text.*;\r\nimport java.util.Locale;\r\nimport javax.swing.JTextField;\r\n\r\npublic class DoubleField extends JTextField\r\n{\r\n\r\n    public DoubleField()\r\n    {\r\n        this(\"\", (-1.0D / 0.0D), (1.0D / 0.0D));\r\n    }\r\n\r\n    public DoubleField(double d)\r\n    {\r\n        this((new StringBuilder()).append(\"\").append(d).toString(), (-1.0D / 0.0D), (1.0D / 0.0D));\r\n    }\r\n\r\n    public DoubleField(double d, double d1)\r\n    {\r\n        this(\"\", d, d1);\r\n    }\r\n\r\n    public DoubleField(double d, double d1, double d2)\r\n    {\r\n        this((new StringBuilder()).append(\"\").append(d).toString(), d1, d2);\r\n    }\r\n\r\n    private DoubleField(String s, double d, double d1)\r\n    {\r\n        parser = NumberFormat.getNumberInstance(Locale.US);\r\n        setBackground(Color.WHITE);\r\n        setHorizontalAlignment(4);\r\n        minValue = d;\r\n        maxValue = d1;\r\n        setText(s);\r\n        exceptionOnError = false;\r\n    }\r\n\r\n    public double getValue()\r\n    {\r\n        String s;\r\n        s = getText().trim();\r\n        if(s.length() == 0)\r\n            if(minValue <= 0.0D && maxValue >= 0.0D)\r\n                return 0.0D;\r\n            else\r\n                return minValue;\r\n        Object obj = null;\r\n        double d = 0.0D;\r\n        double d1 = parser.parse(s).doubleValue();\r\n        if(d1 < minValue || d1 > maxValue)\r\n        {\r\n            String s1;\r\n            try\r\n            {\r\n                s1 = \"Value is outside the specified range\";\r\n            }\r\n            catch(ParseException parseexception)\r\n            {\r\n                s1 = \"Illegal numeric format\";\r\n            }\r\n            if(exceptionOnError)\r\n                throw new ErrorException(s1);\r\n            String s2 = \"Enter a number\";\r\n            if(minValue != (-1.0D / 0.0D))\r\n            {\r\n                if(maxValue != (1.0D / 0.0D))\r\n                    s2 = (new StringBuilder()).append(s2).append(\" between \").append(minValue).append(\" and \").append(maxValue).toString();\r\n                else\r\n                    s2 = (new StringBuilder()).append(s2).append(\" greater than \").append(minValue).toString();\r\n            } else\r\n            if(maxValue != (1.0D / 0.0D))\r\n                s2 = (new StringBuilder()).append(s2).append(\" less than \").append(maxValue).toString();\r\n            if(dialog == null)\r\n                dialog = new IODialog(this);\r\n            d1 = dialog.readDouble(s2, minValue, maxValue);\r\n        }\r\n        setValue(d1);\r\n        return d1;\r\n    }\r\n\r\n    public void setValue(double d)\r\n    {\r\n        setText(formatter != null ? formatter.format(d) : defaultFormat(d));\r\n    }\r\n\r\n    public String getFormat()\r\n    {\r\n        return formatString;\r\n    }\r\n\r\n    public void setFormat(String s)\r\n    {\r\n        String s1 = getText().trim();\r\n        double d = 0.0D;\r\n        if(s1.length() != 0)\r\n            try\r\n            {\r\n                d = parser.parse(s1).doubleValue();\r\n            }\r\n            catch(ParseException parseexception)\r\n            {\r\n                throw new ErrorException(parseexception);\r\n            }\r\n        formatString = s;\r\n        if(s == null)\r\n        {\r\n            formatter = null;\r\n            parser = NumberFormat.getNumberInstance(Locale.US);\r\n        } else\r\n        {\r\n            formatter = s.length() != 0 ? new DecimalFormat(s) : new DecimalFormat();\r\n            parser = formatter;\r\n        }\r\n        if(s1.length() != 0)\r\n            setValue(d);\r\n    }\r\n\r\n    public void setExceptionOnError(boolean flag)\r\n    {\r\n        exceptionOnError = flag;\r\n    }\r\n\r\n    public boolean getExceptionOnError()\r\n    {\r\n        return exceptionOnError;\r\n    }\r\n\r\n    public Dimension getPreferredSize()\r\n    {\r\n        Dimension dimension = super.getPreferredSize();\r\n        return new Dimension(Math.max(60, dimension.width), Math.max(22, dimension.height));\r\n    }\r\n\r\n    private String defaultFormat(double d)\r\n    {\r\n        String s = (new StringBuilder()).append(\"\").append(d).toString();\r\n        int i = getSize().width - 4;\r\n        FontMetrics fontmetrics = getFontMetrics(getFont());\r\n        if(fontmetrics.stringWidth(s) <= i)\r\n            return s;\r\n        int j = s.indexOf(\"E\");\r\n        String s1 = \"\";\r\n        if(j != -1)\r\n        {\r\n            s1 = s.substring(j);\r\n            s = s.substring(0, j);\r\n            try\r\n            {\r\n                d = parser.parse(s).doubleValue();\r\n            }\r\n            catch(ParseException parseexception)\r\n            {\r\n                throw new ErrorException(parseexception);\r\n            }\r\n        }\r\n        NumberFormat numberformat = NumberFormat.getNumberInstance(Locale.US);\r\n        numberformat.setGroupingUsed(false);\r\n        String s2 = s.substring(0, s.indexOf('.') + 1);\r\n        int k = i - fontmetrics.stringWidth((new StringBuilder()).append(s2).append(s1).toString());\r\n        if(k > 0)\r\n        {\r\n            int l = k / fontmetrics.stringWidth(\"0\");\r\n            numberformat.setMaximumFractionDigits(l);\r\n            return (new StringBuilder()).append(numberformat.format(d)).append(s1).toString();\r\n        }\r\n        for(s = \"\"; fontmetrics.stringWidth((new StringBuilder()).append(s).append(\"#\").toString()) <= i; s = (new StringBuilder()).append(s).append(\"#\").toString());\r\n        return s;\r\n    }\r\n\r\n    private static final int MINIMUM_WIDTH = 60;\r\n    private static final int MINIMUM_HEIGHT = 22;\r\n    private static final int PIXEL_MARGIN = 2;\r\n    private boolean exceptionOnError;\r\n    private double minValue;\r\n    private double maxValue;\r\n    private String formatString;\r\n    private DecimalFormat formatter;\r\n    private NumberFormat parser;\r\n    private IODialog dialog;\r\n    static final long serialVersionUID = 1L;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/gui/HPanel.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   HPanel.java\r\n\r\npackage acm.gui;\r\n\r\n\r\n// Referenced classes of package acm.gui:\r\n//            TablePanel, TableLayout\r\n\r\npublic class HPanel extends TablePanel\r\n{\r\n\r\n    public HPanel()\r\n    {\r\n        this(0, 0);\r\n    }\r\n\r\n    public HPanel(int i, int j)\r\n    {\r\n        TableLayout tablelayout = new TableLayout(1, 0, i, j);\r\n        tablelayout.setHorizontalAlignment(1);\r\n        tablelayout.setVerticalAlignment(1);\r\n        setLayout(tablelayout);\r\n    }\r\n\r\n    static final long serialVersionUID = 1L;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/gui/IntField.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   IntField.java\r\n\r\npackage acm.gui;\r\n\r\nimport acm.io.IODialog;\r\nimport acm.util.ErrorException;\r\nimport java.awt.*;\r\nimport java.text.*;\r\nimport java.util.Locale;\r\nimport javax.swing.JTextField;\r\n\r\npublic class IntField extends JTextField\r\n{\r\n\r\n    public IntField()\r\n    {\r\n        this(\"\", 0x80000000, 0x7fffffff);\r\n    }\r\n\r\n    public IntField(int i)\r\n    {\r\n        this((new StringBuilder()).append(\"\").append(i).toString(), 0x80000000, 0x7fffffff);\r\n    }\r\n\r\n    public IntField(int i, int j)\r\n    {\r\n        this(\"\", i, j);\r\n    }\r\n\r\n    public IntField(int i, int j, int k)\r\n    {\r\n        this((new StringBuilder()).append(\"\").append(i).toString(), j, k);\r\n    }\r\n\r\n    private IntField(String s, int i, int j)\r\n    {\r\n        parser = NumberFormat.getNumberInstance(Locale.US);\r\n        setBackground(Color.WHITE);\r\n        setHorizontalAlignment(4);\r\n        minValue = i;\r\n        maxValue = j;\r\n        setText(s);\r\n        exceptionOnError = false;\r\n    }\r\n\r\n    public int getValue()\r\n    {\r\n        String s;\r\n        s = getText().trim();\r\n        if(s.length() == 0)\r\n            if(minValue <= 0 && maxValue >= 0)\r\n                return 0;\r\n            else\r\n                return minValue;\r\n        Object obj = null;\r\n        boolean flag = false;\r\n        int i = parser.parse(s).intValue();\r\n        if(i < minValue || i > maxValue)\r\n        {\r\n            String s1;\r\n            try\r\n            {\r\n                s1 = \"Value is outside the specified range\";\r\n            }\r\n            catch(ParseException parseexception)\r\n            {\r\n                s1 = \"Illegal integer format\";\r\n            }\r\n            if(exceptionOnError)\r\n                throw new ErrorException(s1);\r\n            String s2 = \"Enter an integer\";\r\n            if(minValue != 0x80000000)\r\n            {\r\n                if(maxValue != 0x7fffffff)\r\n                    s2 = (new StringBuilder()).append(s2).append(\" between \").append(minValue).append(\" and \").append(maxValue).toString();\r\n                else\r\n                    s2 = (new StringBuilder()).append(s2).append(\" greater than \").append(minValue).toString();\r\n            } else\r\n            if(maxValue != 0x7fffffff)\r\n                s2 = (new StringBuilder()).append(s2).append(\" less than \").append(maxValue).toString();\r\n            if(dialog == null)\r\n                dialog = new IODialog(this);\r\n            i = dialog.readInt(s2, minValue, maxValue);\r\n        }\r\n        setValue(i);\r\n        return i;\r\n    }\r\n\r\n    public void setValue(int i)\r\n    {\r\n        setText(formatter != null ? formatter.format(i) : defaultFormat(i));\r\n    }\r\n\r\n    public String getFormat()\r\n    {\r\n        return formatString;\r\n    }\r\n\r\n    public void setFormat(String s)\r\n    {\r\n        String s1 = getText().trim();\r\n        int i = 0;\r\n        if(s1.length() != 0)\r\n            try\r\n            {\r\n                i = parser.parse(s1).intValue();\r\n            }\r\n            catch(ParseException parseexception)\r\n            {\r\n                throw new ErrorException(parseexception);\r\n            }\r\n        formatString = s;\r\n        if(s == null)\r\n        {\r\n            formatter = null;\r\n            parser = NumberFormat.getNumberInstance(Locale.US);\r\n        } else\r\n        {\r\n            formatter = s.length() != 0 ? new DecimalFormat(s) : new DecimalFormat();\r\n            parser = formatter;\r\n        }\r\n        if(s1.length() != 0)\r\n            setValue(i);\r\n    }\r\n\r\n    public void setExceptionOnError(boolean flag)\r\n    {\r\n        exceptionOnError = flag;\r\n    }\r\n\r\n    public boolean getExceptionOnError()\r\n    {\r\n        return exceptionOnError;\r\n    }\r\n\r\n    public Dimension getPreferredSize()\r\n    {\r\n        Dimension dimension = super.getPreferredSize();\r\n        return new Dimension(Math.max(60, dimension.width), Math.max(22, dimension.height));\r\n    }\r\n\r\n    private String defaultFormat(int i)\r\n    {\r\n        String s = (new StringBuilder()).append(\"\").append(i).toString();\r\n        int j = getSize().width - 4;\r\n        FontMetrics fontmetrics = getFontMetrics(getFont());\r\n        if(fontmetrics.stringWidth(s) > j)\r\n            for(s = \"\"; fontmetrics.stringWidth((new StringBuilder()).append(s).append(\"#\").toString()) <= j; s = (new StringBuilder()).append(s).append(\"#\").toString());\r\n        return s;\r\n    }\r\n\r\n    private static final int MINIMUM_WIDTH = 60;\r\n    private static final int MINIMUM_HEIGHT = 22;\r\n    private static final int PIXEL_MARGIN = 2;\r\n    private boolean exceptionOnError;\r\n    private int minValue;\r\n    private int maxValue;\r\n    private String formatString;\r\n    private DecimalFormat formatter;\r\n    private NumberFormat parser;\r\n    private IODialog dialog;\r\n    static final long serialVersionUID = 1L;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/gui/TableConstraints.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   TableConstraints.java\r\n\r\npackage acm.gui;\r\n\r\nimport acm.util.ErrorException;\r\nimport acm.util.OptionTable;\r\nimport java.awt.GridBagConstraints;\r\nimport java.awt.Insets;\r\nimport java.util.Map;\r\n\r\npublic class TableConstraints extends GridBagConstraints\r\n{\r\n\r\n    public TableConstraints()\r\n    {\r\n        this(\"\");\r\n    }\r\n\r\n    public TableConstraints(String s)\r\n    {\r\n        this(((Map) ((new OptionTable(s.toLowerCase(), LEGAL_KEYS)).getMap())));\r\n    }\r\n\r\n    public TableConstraints(Map map)\r\n    {\r\n        OptionTable optiontable = new OptionTable(map);\r\n        gridx = parseXYConstraint(optiontable.getOption(\"gridx\"));\r\n        gridy = parseXYConstraint(optiontable.getOption(\"gridy\"));\r\n        String s = optiontable.getOption(\"gridwidth\");\r\n        if(s == null)\r\n            s = optiontable.getOption(\"rowspan\");\r\n        String s1 = optiontable.getOption(\"gridheight\");\r\n        if(s1 == null)\r\n            s1 = optiontable.getOption(\"colspan\");\r\n        gridwidth = parseSpanConstraint(s);\r\n        gridheight = parseSpanConstraint(s1);\r\n        fill = parseFillConstraint(optiontable.getOption(\"fill\"));\r\n        anchor = parseAnchorConstraint(optiontable.getOption(\"anchor\"));\r\n        ipadx = optiontable.getIntOption(\"ipadx\", 0);\r\n        ipady = optiontable.getIntOption(\"ipady\", 0);\r\n        weightx = optiontable.getDoubleOption(\"weightx\", 0.0D);\r\n        weighty = optiontable.getDoubleOption(\"weighty\", 0.0D);\r\n        insets.left = optiontable.getIntOption(\"left\", 0);\r\n        insets.right = optiontable.getIntOption(\"right\", 0);\r\n        insets.top = optiontable.getIntOption(\"top\", 0);\r\n        insets.bottom = optiontable.getIntOption(\"bottom\", 0);\r\n        width = optiontable.getIntOption(\"width\", -1);\r\n        if(width == -1)\r\n            width = 0;\r\n        else\r\n            width += insets.left + insets.right;\r\n        height = optiontable.getIntOption(\"height\", -1);\r\n        if(height == -1)\r\n            height = 0;\r\n        else\r\n            height += insets.top + insets.bottom;\r\n        if(gridwidth != 1 && width != 0)\r\n            throw new ErrorException(\"TableConstraints: Cannot specify both width and gridwidth\");\r\n        if(gridheight != 1 && height != 0)\r\n            throw new ErrorException(\"TableConstraints: Cannot specify both height and gridheight\");\r\n        else\r\n            return;\r\n    }\r\n\r\n    public TableConstraints(GridBagConstraints gridbagconstraints)\r\n    {\r\n        gridx = gridbagconstraints.gridx;\r\n        gridy = gridbagconstraints.gridy;\r\n        gridwidth = gridbagconstraints.gridwidth;\r\n        gridheight = gridbagconstraints.gridheight;\r\n        fill = gridbagconstraints.fill;\r\n        anchor = gridbagconstraints.anchor;\r\n        ipadx = gridbagconstraints.ipadx;\r\n        ipady = gridbagconstraints.ipady;\r\n        weightx = gridbagconstraints.weightx;\r\n        weighty = gridbagconstraints.weighty;\r\n        insets.left = gridbagconstraints.insets.left;\r\n        insets.right = gridbagconstraints.insets.right;\r\n        insets.top = gridbagconstraints.insets.top;\r\n        insets.bottom = gridbagconstraints.insets.bottom;\r\n        if(gridbagconstraints instanceof TableConstraints)\r\n        {\r\n            TableConstraints tableconstraints = (TableConstraints)gridbagconstraints;\r\n            width = tableconstraints.width;\r\n            height = tableconstraints.height;\r\n        }\r\n    }\r\n\r\n    public int getAnchor()\r\n    {\r\n        return anchor;\r\n    }\r\n\r\n    public int getFill()\r\n    {\r\n        return fill;\r\n    }\r\n\r\n    public int getGridX()\r\n    {\r\n        return gridx;\r\n    }\r\n\r\n    public int getGridY()\r\n    {\r\n        return gridy;\r\n    }\r\n\r\n    public int getGridWidth()\r\n    {\r\n        return gridwidth;\r\n    }\r\n\r\n    public int getGridHeight()\r\n    {\r\n        return gridheight;\r\n    }\r\n\r\n    public int getIPadX()\r\n    {\r\n        return ipadx;\r\n    }\r\n\r\n    public int getIPadY()\r\n    {\r\n        return ipady;\r\n    }\r\n\r\n    public Insets getInsets()\r\n    {\r\n        return insets;\r\n    }\r\n\r\n    public double getWeightX()\r\n    {\r\n        return weightx;\r\n    }\r\n\r\n    public double getWeightY()\r\n    {\r\n        return weighty;\r\n    }\r\n\r\n    public int getWidth()\r\n    {\r\n        return width;\r\n    }\r\n\r\n    public int getHeight()\r\n    {\r\n        return height;\r\n    }\r\n\r\n    public String toString()\r\n    {\r\n        String s = getClass().getName();\r\n        s = (new StringBuilder()).append(s).append(\"[gridx=\").append(gridx).append(\",gridy=\").append(gridy).toString();\r\n        switch(fill)\r\n        {\r\n        case 3: // '\\003'\r\n            s = (new StringBuilder()).append(s).append(\",fill=VERTICAL\").toString();\r\n            break;\r\n\r\n        case 2: // '\\002'\r\n            s = (new StringBuilder()).append(s).append(\",fill=HORIZONTAL\").toString();\r\n            break;\r\n\r\n        case 1: // '\\001'\r\n            s = (new StringBuilder()).append(s).append(\",fill=BOTH\").toString();\r\n            break;\r\n        }\r\n        switch(anchor)\r\n        {\r\n        case 11: // '\\013'\r\n            s = (new StringBuilder()).append(s).append(\",anchor=NORTH\").toString();\r\n            break;\r\n\r\n        case 15: // '\\017'\r\n            s = (new StringBuilder()).append(s).append(\",anchor=SOUTH\").toString();\r\n            break;\r\n\r\n        case 13: // '\\r'\r\n            s = (new StringBuilder()).append(s).append(\",anchor=EAST\").toString();\r\n            break;\r\n\r\n        case 17: // '\\021'\r\n            s = (new StringBuilder()).append(s).append(\",anchor=WEST\").toString();\r\n            break;\r\n\r\n        case 12: // '\\f'\r\n            s = (new StringBuilder()).append(s).append(\",anchor=NORTHEAST\").toString();\r\n            break;\r\n\r\n        case 18: // '\\022'\r\n            s = (new StringBuilder()).append(s).append(\",anchor=NORTHWEST\").toString();\r\n            break;\r\n\r\n        case 14: // '\\016'\r\n            s = (new StringBuilder()).append(s).append(\",anchor=SOUTHEAST\").toString();\r\n            break;\r\n\r\n        case 16: // '\\020'\r\n            s = (new StringBuilder()).append(s).append(\",anchor=SOUTHWEST\").toString();\r\n            break;\r\n\r\n        case 19: // '\\023'\r\n            s = (new StringBuilder()).append(s).append(\",anchor=PAGE_START\").toString();\r\n            break;\r\n\r\n        case 20: // '\\024'\r\n            s = (new StringBuilder()).append(s).append(\",anchor=PAGE_END\").toString();\r\n            break;\r\n\r\n        case 21: // '\\025'\r\n            s = (new StringBuilder()).append(s).append(\",anchor=LINE_START\").toString();\r\n            break;\r\n\r\n        case 22: // '\\026'\r\n            s = (new StringBuilder()).append(s).append(\",anchor=LINE_END\").toString();\r\n            break;\r\n\r\n        case 23: // '\\027'\r\n            s = (new StringBuilder()).append(s).append(\",anchor=FIRST_LINE_START\").toString();\r\n            break;\r\n\r\n        case 24: // '\\030'\r\n            s = (new StringBuilder()).append(s).append(\",anchor=FIRST_LINE_END\").toString();\r\n            break;\r\n\r\n        case 25: // '\\031'\r\n            s = (new StringBuilder()).append(s).append(\",anchor=LAST_LINE_START\").toString();\r\n            break;\r\n\r\n        case 26: // '\\032'\r\n            s = (new StringBuilder()).append(s).append(\",anchor=LAST_LINE_END\").toString();\r\n            break;\r\n        }\r\n        if(gridwidth != 1)\r\n            s = (new StringBuilder()).append(s).append(\",gridwidth=\").append(gridwidth).toString();\r\n        if(gridheight != 1)\r\n            s = (new StringBuilder()).append(s).append(\",gridheight=\").append(gridheight).toString();\r\n        if(ipadx != 0)\r\n            s = (new StringBuilder()).append(s).append(\",ipadx=\").append(ipadx).toString();\r\n        if(ipady != 0)\r\n            s = (new StringBuilder()).append(s).append(\",ipady=\").append(ipady).toString();\r\n        if(insets.left != 0)\r\n            s = (new StringBuilder()).append(s).append(\",left=\").append(insets.left).toString();\r\n        if(insets.right != 0)\r\n            s = (new StringBuilder()).append(s).append(\",right=\").append(insets.right).toString();\r\n        if(insets.top != 0)\r\n            s = (new StringBuilder()).append(s).append(\",top=\").append(insets.top).toString();\r\n        if(insets.bottom != 0)\r\n            s = (new StringBuilder()).append(s).append(\",bottom=\").append(insets.bottom).toString();\r\n        if(width != 0)\r\n            s = (new StringBuilder()).append(s).append(\",width=\").append(width).toString();\r\n        if(height != 0)\r\n            s = (new StringBuilder()).append(s).append(\",height=\").append(height).toString();\r\n        s = (new StringBuilder()).append(s).append(\"]\").toString();\r\n        return s;\r\n    }\r\n\r\n    private int parseXYConstraint(String s)\r\n    {\r\n        if(s == null)\r\n            return -1;\r\n        if(s.equals(\"relative\"))\r\n            return -1;\r\n        return Integer.decode(s).intValue();\r\n        NumberFormatException numberformatexception;\r\n        numberformatexception;\r\n        throw new ErrorException(\"TableConstraints: Illegal grid coordinate\");\r\n    }\r\n\r\n    private int parseSpanConstraint(String s)\r\n    {\r\n        if(s == null)\r\n            return 1;\r\n        if(s.equals(\"relative\"))\r\n            return -1;\r\n        if(s.equals(\"remainder\"))\r\n            return 0;\r\n        return Integer.decode(s).intValue();\r\n        NumberFormatException numberformatexception;\r\n        numberformatexception;\r\n        throw new ErrorException(\"TableConstraints: Illegal span constraint\");\r\n    }\r\n\r\n    private int parseAnchorConstraint(String s)\r\n    {\r\n        if(s == null)\r\n            return 10;\r\n        if(s.equals(\"center\"))\r\n            return 10;\r\n        if(s.equals(\"north\"))\r\n            return 11;\r\n        if(s.equals(\"south\"))\r\n            return 15;\r\n        if(s.equals(\"east\"))\r\n            return 13;\r\n        if(s.equals(\"west\"))\r\n            return 17;\r\n        if(s.equals(\"northeast\") || s.equals(\"ne\"))\r\n            return 12;\r\n        if(s.equals(\"northwest\") || s.equals(\"nw\"))\r\n            return 18;\r\n        if(s.equals(\"southeast\") || s.equals(\"se\"))\r\n            return 14;\r\n        if(s.equals(\"southwest\") || s.equals(\"sw\"))\r\n            return 16;\r\n        if(s.equals(\"page_start\"))\r\n            return 19;\r\n        if(s.equals(\"page_end\"))\r\n            return 20;\r\n        if(s.equals(\"line_start\"))\r\n            return 21;\r\n        if(s.equals(\"line_end\"))\r\n            return 22;\r\n        if(s.equals(\"first_line_start\"))\r\n            return 23;\r\n        if(s.equals(\"first_line_end\"))\r\n            return 24;\r\n        if(s.equals(\"last_line_start\"))\r\n            return 25;\r\n        if(s.equals(\"last_line_end\"))\r\n            return 26;\r\n        else\r\n            throw new ErrorException(\"TableConstraints: Illegal anchor specification\");\r\n    }\r\n\r\n    private int parseFillConstraint(String s)\r\n    {\r\n        if(s == null || s.equals(\"none\"))\r\n            return 0;\r\n        if(s.equals(\"horizontal\"))\r\n            return 2;\r\n        if(s.equals(\"vertical\"))\r\n            return 3;\r\n        if(s.equals(\"both\"))\r\n            return 1;\r\n        else\r\n            throw new ErrorException(\"TableConstraints: Illegal fill specification\");\r\n    }\r\n\r\n    public int width;\r\n    public int height;\r\n    private static final int MY_PAGE_START = 19;\r\n    private static final int MY_PAGE_END = 20;\r\n    private static final int MY_LINE_START = 21;\r\n    private static final int MY_LINE_END = 22;\r\n    private static final int MY_FIRST_LINE_START = 23;\r\n    private static final int MY_FIRST_LINE_END = 24;\r\n    private static final int MY_LAST_LINE_START = 25;\r\n    private static final int MY_LAST_LINE_END = 26;\r\n    protected static final String LEGAL_KEYS[] = {\r\n        \"anchor\", \"bottom\", \"colspan\", \"fill\", \"gridwidth\", \"gridheight\", \"gridx\", \"gridy\", \"height\", \"ipadx\", \r\n        \"ipady\", \"left\", \"right\", \"rowspan\", \"top\", \"weightx\", \"weighty\", \"width\"\r\n    };\r\n    static final long serialVersionUID = 1L;\r\n\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/gui/TableLayout.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   TableLayout.java\r\n\r\npackage acm.gui;\r\n\r\nimport acm.util.ErrorException;\r\nimport acm.util.OptionTable;\r\nimport java.awt.*;\r\nimport java.io.Serializable;\r\nimport java.lang.reflect.Method;\r\nimport java.util.*;\r\nimport javax.swing.JScrollBar;\r\nimport javax.swing.JSlider;\r\n\r\n// Referenced classes of package acm.gui:\r\n//            TableConstraints\r\n\r\npublic class TableLayout\r\n    implements LayoutManager2, Serializable\r\n{\r\n\r\n    public TableLayout()\r\n    {\r\n        this(0, 0);\r\n    }\r\n\r\n    public TableLayout(int i, int j)\r\n    {\r\n        this(i, j, 0, 0);\r\n    }\r\n\r\n    public TableLayout(int i, int j, int k, int l)\r\n    {\r\n        nRows = i;\r\n        nColumns = j;\r\n        hGap = k;\r\n        vGap = l;\r\n        horizontalAlignment = 10;\r\n        verticalAlignment = 10;\r\n        defaultFill = 1;\r\n        constraintTable = new HashMap();\r\n        propertyTable = new HashMap();\r\n        layoutTable = null;\r\n    }\r\n\r\n    public void setColumnCount(int i)\r\n    {\r\n        nColumns = i;\r\n        if(targetContainer != null)\r\n            targetContainer.invalidate();\r\n    }\r\n\r\n    public int getColumnCount()\r\n    {\r\n        return nColumns;\r\n    }\r\n\r\n    public void setRowCount(int i)\r\n    {\r\n        nRows = i;\r\n        if(targetContainer != null)\r\n            targetContainer.invalidate();\r\n    }\r\n\r\n    public int getRowCount()\r\n    {\r\n        return nRows;\r\n    }\r\n\r\n    public void setHorizontalAlignment(int i)\r\n    {\r\n        horizontalAlignment = i;\r\n        if(targetContainer != null)\r\n            targetContainer.invalidate();\r\n    }\r\n\r\n    public int getHorizontalAlignment()\r\n    {\r\n        return horizontalAlignment;\r\n    }\r\n\r\n    public void setVerticalAlignment(int i)\r\n    {\r\n        verticalAlignment = i;\r\n        if(targetContainer != null)\r\n            targetContainer.invalidate();\r\n    }\r\n\r\n    public int getVerticalAlignment()\r\n    {\r\n        return verticalAlignment;\r\n    }\r\n\r\n    public void setDefaultFill(int i)\r\n    {\r\n        defaultFill = i;\r\n        if(targetContainer != null)\r\n            targetContainer.invalidate();\r\n    }\r\n\r\n    public int getDefaultFill()\r\n    {\r\n        return defaultFill;\r\n    }\r\n\r\n    public void setHgap(int i)\r\n    {\r\n        hGap = i;\r\n        if(targetContainer != null)\r\n            targetContainer.invalidate();\r\n    }\r\n\r\n    public int getHgap()\r\n    {\r\n        return hGap;\r\n    }\r\n\r\n    public void setVgap(int i)\r\n    {\r\n        vGap = i;\r\n        if(targetContainer != null)\r\n            targetContainer.invalidate();\r\n    }\r\n\r\n    public int getVgap()\r\n    {\r\n        return vGap;\r\n    }\r\n\r\n    public void setStrictGridBagModel(boolean flag)\r\n    {\r\n        useStrictGridBagModel = flag;\r\n        if(targetContainer != null)\r\n            targetContainer.invalidate();\r\n    }\r\n\r\n    public boolean isStrictGridBagModel()\r\n    {\r\n        return useStrictGridBagModel;\r\n    }\r\n\r\n    public void setConstraints(Component component, GridBagConstraints gridbagconstraints)\r\n    {\r\n        constraintTable.put(component, (GridBagConstraints)gridbagconstraints.clone());\r\n        if(targetContainer != null)\r\n            targetContainer.invalidate();\r\n    }\r\n\r\n    public void setConstraints(Component component, String s)\r\n    {\r\n        setConstraints(component, ((GridBagConstraints) (new TableConstraints(s))));\r\n    }\r\n\r\n    public TableConstraints getConstraints(Component component)\r\n    {\r\n        GridBagConstraints gridbagconstraints = lookupConstraints(component);\r\n        return gridbagconstraints != null ? new TableConstraints(gridbagconstraints) : null;\r\n    }\r\n\r\n    public void addLayoutComponent(String s, Component component)\r\n    {\r\n        addLayoutComponent(component, s);\r\n    }\r\n\r\n    public void removeLayoutComponent(Component component)\r\n    {\r\n        constraintTable.remove(component);\r\n        if(targetContainer != null)\r\n            targetContainer.invalidate();\r\n    }\r\n\r\n    public Dimension preferredLayoutSize(Container container)\r\n    {\r\n        if(container.getComponentCount() == 0)\r\n            return new Dimension(0, 0);\r\n        else\r\n            return processLayout(container, 2);\r\n    }\r\n\r\n    public Dimension minimumLayoutSize(Container container)\r\n    {\r\n        if(container.getComponentCount() == 0)\r\n            return new Dimension(0, 0);\r\n        else\r\n            return processLayout(container, 1);\r\n    }\r\n\r\n    public void layoutContainer(Container container)\r\n    {\r\n        targetContainer = container;\r\n        processLayout(container, 0);\r\n    }\r\n\r\n    public void addLayoutComponent(Component component, Object obj)\r\n    {\r\n        if(obj == null)\r\n        {\r\n            obj = new TableConstraints(\"\");\r\n            ((TableConstraints)obj).fill = defaultFill;\r\n        } else\r\n        if(obj instanceof String)\r\n        {\r\n            OptionTable optiontable = new OptionTable(((String)obj).toLowerCase(), TableConstraints.LEGAL_KEYS);\r\n            obj = new TableConstraints(optiontable.getMap());\r\n            if(!optiontable.isSpecified(\"fill\"))\r\n                ((TableConstraints)obj).fill = optiontable.isSpecified(\"anchor\") ? 0 : defaultFill;\r\n        } else\r\n        if(!(obj instanceof GridBagConstraints))\r\n            throw new ErrorException(\"TableLayout: Illegal constraints\");\r\n        constraintTable.put(component, (GridBagConstraints)obj);\r\n        if(targetContainer != null)\r\n            targetContainer.invalidate();\r\n    }\r\n\r\n    public Dimension maximumLayoutSize(Container container)\r\n    {\r\n        return new Dimension(0x7fffffff, 0x7fffffff);\r\n    }\r\n\r\n    public float getLayoutAlignmentX(Container container)\r\n    {\r\n        return 0.5F;\r\n    }\r\n\r\n    public float getLayoutAlignmentY(Container container)\r\n    {\r\n        return 0.5F;\r\n    }\r\n\r\n    public synchronized void invalidateLayout(Container container)\r\n    {\r\n        layoutTable = null;\r\n        Iterator iterator = propertyTable.keySet().iterator();\r\n        do\r\n        {\r\n            if(!iterator.hasNext())\r\n                break;\r\n            String s = (String)iterator.next();\r\n            if(s.startsWith(\"width\") && !s.equals(\"width\"))\r\n                propertyTable.put(s, new Integer(0));\r\n            if(s.startsWith(\"height\") && !s.equals(\"height\"))\r\n                propertyTable.put(s, new Integer(0));\r\n            if(s.startsWith(\"weightx\") && !s.equals(\"weightx\"))\r\n                propertyTable.put(s, new Double(0.0D));\r\n            if(s.startsWith(\"weighty\") && !s.equals(\"weighty\"))\r\n                propertyTable.put(s, new Double(0.0D));\r\n        } while(true);\r\n    }\r\n\r\n    public String toString()\r\n    {\r\n        String s = getClass().getName();\r\n        s = (new StringBuilder()).append(s).append(\"[rows=\").append(nRows).append(\",columns=\").append(nColumns).toString();\r\n        if(hGap != 0)\r\n            s = (new StringBuilder()).append(s).append(\",hgap=\").append(hGap).toString();\r\n        if(vGap != 0)\r\n            s = (new StringBuilder()).append(s).append(\",vgap=\").append(vGap).toString();\r\n        s = (new StringBuilder()).append(s).append(\"]\").toString();\r\n        return s;\r\n    }\r\n\r\n    protected GridBagConstraints lookupConstraints(Component component)\r\n    {\r\n        return (GridBagConstraints)constraintTable.get(component);\r\n    }\r\n\r\n    protected TableConstraints lookupConstraints(Component component, Container container)\r\n    {\r\n        Object obj = container.getTreeLock();\r\n        JVM INSTR monitorenter ;\r\n        if(layoutTable == null)\r\n            computeLayoutTable(container);\r\n        return (TableConstraints)layoutTable.get(component);\r\n        Exception exception;\r\n        exception;\r\n        throw exception;\r\n    }\r\n\r\n    private Dimension getMinimumComponentSize(Component component)\r\n    {\r\n        if(isScrollbar(component))\r\n            return getMinimumScrollbarSize(component);\r\n        else\r\n            return component.getMinimumSize();\r\n    }\r\n\r\n    private Dimension getPreferredComponentSize(Component component)\r\n    {\r\n        if(isScrollbar(component))\r\n            return getMinimumScrollbarSize(component);\r\n        else\r\n            return component.getPreferredSize();\r\n    }\r\n\r\n    private boolean isScrollbar(Component component)\r\n    {\r\n        return (component instanceof Scrollbar) || (component instanceof JScrollBar) || (component instanceof JSlider);\r\n    }\r\n\r\n    private Dimension getMinimumScrollbarSize(Component component)\r\n    {\r\n        Dimension dimension = component.getMinimumSize();\r\n        try\r\n        {\r\n            Class class1 = component.getClass();\r\n            Method method = class1.getMethod(\"getOrientation\", new Class[0]);\r\n            int i = ((Integer)method.invoke(component, new Object[0])).intValue();\r\n            if(i == 0)\r\n                dimension.width = Math.max(dimension.width, 100);\r\n            else\r\n                dimension.height = Math.max(dimension.height, 100);\r\n        }\r\n        catch(Exception exception)\r\n        {\r\n            throw new ErrorException(exception);\r\n        }\r\n        return dimension;\r\n    }\r\n\r\n    private Dimension processLayout(Container container, int i)\r\n    {\r\n        Object obj = container.getTreeLock();\r\n        JVM INSTR monitorenter ;\r\n        return lockedProcessLayout(container, i);\r\n        Exception exception;\r\n        exception;\r\n        throw exception;\r\n    }\r\n\r\n    private synchronized Dimension lockedProcessLayout(Container container, int i)\r\n    {\r\n        Dimension dimension = null;\r\n        if(layoutTable == null)\r\n            computeLayoutTable(container);\r\n        int j = getIntProperty(\"nRows\");\r\n        int k = getIntProperty(\"nColumns\");\r\n        int ai[] = new int[j];\r\n        int ai1[] = new int[k];\r\n        int l = container.getComponentCount();\r\n        for(int i1 = 0; i1 < l; i1++)\r\n        {\r\n            Component component = container.getComponent(i1);\r\n            TableConstraints tableconstraints = (TableConstraints)layoutTable.get(component);\r\n            int l1 = tableconstraints.gridx;\r\n            int i2 = tableconstraints.gridy;\r\n            int j2 = getIntProperty((new StringBuilder()).append(\"width\").append(l1).toString());\r\n            int k2 = getIntProperty((new StringBuilder()).append(\"height\").append(i2).toString());\r\n            if(j2 == 0)\r\n            {\r\n                if(i == 1 || useStrictGridBagModel)\r\n                    j2 = getMinimumComponentSize(component).width;\r\n                else\r\n                    j2 = getPreferredComponentSize(component).width;\r\n                j2 += 2 * tableconstraints.ipadx + tableconstraints.insets.left + tableconstraints.insets.right;\r\n            }\r\n            if(k2 == 0)\r\n            {\r\n                if(i == 1 || useStrictGridBagModel)\r\n                    k2 = getMinimumComponentSize(component).height;\r\n                else\r\n                    k2 = getPreferredComponentSize(component).height;\r\n                k2 += 2 * tableconstraints.ipady + tableconstraints.insets.top + tableconstraints.insets.bottom;\r\n            }\r\n            if(tableconstraints.gridwidth <= 1)\r\n                ai1[l1] = Math.max(ai1[l1], j2);\r\n            if(tableconstraints.gridheight <= 1)\r\n                ai[i2] = Math.max(ai[i2], k2);\r\n        }\r\n\r\n        int j1 = hGap;\r\n        int k1 = vGap;\r\n        double ad[] = new double[k];\r\n        double ad1[] = new double[j];\r\n        double d = 0.0D;\r\n        double d1 = 0.0D;\r\n        for(int l2 = 0; l2 < k; l2++)\r\n        {\r\n            j1 += ai1[l2] + hGap;\r\n            ad[l2] = getDoubleProperty((new StringBuilder()).append(\"weightx\").append(l2).toString());\r\n            d += ad[l2];\r\n        }\r\n\r\n        for(int i3 = 0; i3 < j; i3++)\r\n        {\r\n            k1 += ai[i3] + vGap;\r\n            ad1[i3] = getDoubleProperty((new StringBuilder()).append(\"weighty\").append(i3).toString());\r\n            d1 += ad1[i3];\r\n        }\r\n\r\n        if(i == 0)\r\n        {\r\n            Dimension dimension1 = container.getSize();\r\n            Insets insets = container.getInsets();\r\n            dimension1.width -= insets.left + insets.right;\r\n            dimension1.height -= insets.top + insets.bottom;\r\n            int j3 = dimension1.width - j1;\r\n            int k3 = dimension1.height - k1;\r\n            int l3 = insets.left;\r\n            int i4 = insets.top;\r\n            if(d == 0.0D)\r\n                switch(horizontalAlignment)\r\n                {\r\n                default:\r\n                    break;\r\n\r\n                case 11: // '\\013'\r\n                    j3 = 0;\r\n                    break;\r\n\r\n                case 10: // '\\n'\r\n                    l3 += j3 / 2;\r\n                    j3 = 0;\r\n                    break;\r\n\r\n                case 12: // '\\f'\r\n                    l3 += j3;\r\n                    j3 = 0;\r\n                    break;\r\n\r\n                case 1: // '\\001'\r\n                    d = k;\r\n                    for(int j4 = 0; j4 < k; j4++)\r\n                        ad[j4] = 1.0D;\r\n\r\n                    break;\r\n                }\r\n            if(d1 == 0.0D)\r\n                switch(verticalAlignment)\r\n                {\r\n                default:\r\n                    break;\r\n\r\n                case 13: // '\\r'\r\n                    k3 = 0;\r\n                    break;\r\n\r\n                case 10: // '\\n'\r\n                    i4 += k3 / 2;\r\n                    k3 = 0;\r\n                    break;\r\n\r\n                case 14: // '\\016'\r\n                    i4 += k3;\r\n                    k3 = 0;\r\n                    break;\r\n\r\n                case 1: // '\\001'\r\n                    d1 = j;\r\n                    for(int k4 = 0; k4 < j; k4++)\r\n                        ad1[k4] = 1.0D;\r\n\r\n                    break;\r\n                }\r\n            int ai2[] = new int[k];\r\n            int l4 = hGap + l3;\r\n            for(int i5 = 0; i5 < k; i5++)\r\n            {\r\n                ai2[i5] = l4;\r\n                if(j3 > 0)\r\n                {\r\n                    int j5 = (int)Math.round(((double)j3 * ad[i5]) / d);\r\n                    ai1[i5] += j5;\r\n                    j3 -= j5;\r\n                    d -= ad[i5];\r\n                }\r\n                l4 += ai1[i5] + hGap;\r\n            }\r\n\r\n            int ai3[] = new int[j];\r\n            int k5 = vGap + i4;\r\n            for(int l5 = 0; l5 < j; l5++)\r\n            {\r\n                ai3[l5] = k5;\r\n                if(k3 > 0)\r\n                {\r\n                    int j6 = (int)Math.round(((double)k3 * ad1[l5]) / d1);\r\n                    ai[l5] += j6;\r\n                    k3 -= j6;\r\n                    d1 -= ad1[l5];\r\n                }\r\n                k5 += ai[l5] + vGap;\r\n            }\r\n\r\n            for(int i6 = 0; i6 < l; i6++)\r\n            {\r\n                Component component1 = container.getComponent(i6);\r\n                TableConstraints tableconstraints1 = (TableConstraints)layoutTable.get(component1);\r\n                int k6 = tableconstraints1.gridx;\r\n                int l6 = tableconstraints1.gridy;\r\n                int i7 = ai2[k6] + tableconstraints1.insets.left;\r\n                int j7 = ai3[l6] + tableconstraints1.insets.top;\r\n                int k7 = ai1[k6];\r\n                for(int l7 = 1; l7 < tableconstraints1.gridwidth && k6 + l7 < k; l7++)\r\n                    k7 += ai1[k6 + l7] + hGap;\r\n\r\n                k7 -= tableconstraints1.insets.left + tableconstraints1.insets.right;\r\n                int i8 = ai[l6];\r\n                for(int j8 = 1; j8 < tableconstraints1.gridheight && l6 + j8 < j; j8++)\r\n                    i8 += ai[l6 + j8] + vGap;\r\n\r\n                i8 -= tableconstraints1.insets.top + tableconstraints1.insets.bottom;\r\n                Dimension dimension2 = useStrictGridBagModel ? getMinimumComponentSize(component1) : getPreferredComponentSize(component1);\r\n                Rectangle rectangle = computeCellBounds(new Rectangle(i7, j7, k7, i8), dimension2, tableconstraints1);\r\n                component1.setBounds(rectangle.x, rectangle.y, rectangle.width, rectangle.height);\r\n            }\r\n\r\n        } else\r\n        {\r\n            dimension = new Dimension(j1, k1);\r\n        }\r\n        return dimension;\r\n    }\r\n\r\n    private void computeLayoutTable(Container container)\r\n    {\r\n        int ai[] = null;\r\n        int i = 0;\r\n        int j = 0;\r\n        int k = nColumns;\r\n        int l = container.getComponentCount();\r\n        boolean flag = false;\r\n        layoutTable = new HashMap();\r\n        for(int i1 = 0; i1 < l; i1++)\r\n        {\r\n            Component component = container.getComponent(i1);\r\n            TableConstraints tableconstraints = getConstraints(component);\r\n            if(tableconstraints.gridx != -1)\r\n                j = tableconstraints.gridx;\r\n            if(tableconstraints.gridy != -1)\r\n                i = tableconstraints.gridy;\r\n            if(nRows > 0 && i >= nRows)\r\n                throw new ErrorException(\"TableLayout: Too many rows specified\");\r\n            do\r\n            {\r\n                if(ai == null || j >= ai.length || ai[j] <= 0)\r\n                    break;\r\n                j++;\r\n                if(k > 0 && j >= k)\r\n                {\r\n                    for(int j1 = 0; j1 < ai.length; j1++)\r\n                        if(ai[j1] > 0)\r\n                            ai[j1]--;\r\n\r\n                    i++;\r\n                    j = getFirstAvailableColumn(ai);\r\n                }\r\n            } while(true);\r\n            tableconstraints.gridx = j;\r\n            tableconstraints.gridy = i;\r\n            boolean flag1 = flag;\r\n            setMaxProperty((new StringBuilder()).append(\"width\").append(j).toString(), tableconstraints.width);\r\n            setMaxProperty((new StringBuilder()).append(\"height\").append(i).toString(), tableconstraints.height);\r\n            setMaxProperty((new StringBuilder()).append(\"weightx\").append(j).toString(), tableconstraints.weightx);\r\n            setMaxProperty((new StringBuilder()).append(\"weighty\").append(i).toString(), tableconstraints.weighty);\r\n            int k1 = 1;\r\n            switch(tableconstraints.gridwidth)\r\n            {\r\n            case 0: // '\\0'\r\n                flag1 = true;\r\n                if(k > 0)\r\n                    k1 = k - j;\r\n                break;\r\n\r\n            case -1: \r\n                if(k <= 0)\r\n                    throw new ErrorException(\"TableLayout: Illegal to use gridwidth=RELATIVE in first row\");\r\n                k1 = k - j - 1;\r\n                flag = true;\r\n                break;\r\n\r\n            default:\r\n                k1 = tableconstraints.gridwidth;\r\n                flag1 = nColumns > 0 && j + tableconstraints.gridwidth >= nColumns;\r\n                break;\r\n            }\r\n            if(k1 > 1 && ai != null)\r\n            {\r\n                for(int l1 = j; l1 < Math.min(ai.length, j + k1); l1++)\r\n                    if(ai[l1] != 0)\r\n                        throw new ErrorException(\"TableLayout: Overlapping cells\");\r\n\r\n            }\r\n            int i2 = 1;\r\n            switch(tableconstraints.gridheight)\r\n            {\r\n            case 0: // '\\0'\r\n                i2 = 0x7fffffff;\r\n                break;\r\n\r\n            case -1: \r\n                throw new ErrorException(\"TableLayout: Illegal to use gridheight=RELATIVE\");\r\n\r\n            default:\r\n                i2 = tableconstraints.gridheight;\r\n                break;\r\n            }\r\n            if(i2 > 1)\r\n            {\r\n                if(ai == null)\r\n                    ai = new int[j + k1];\r\n                else\r\n                if(ai.length < j + k1)\r\n                {\r\n                    int ai1[] = ai;\r\n                    ai = new int[j + k1];\r\n                    System.arraycopy(ai1, 0, ai, 0, ai1.length);\r\n                }\r\n                for(int j2 = j; j2 < j + k1; j2++)\r\n                    ai[j2] = i2;\r\n\r\n            }\r\n            tableconstraints.gridwidth = k1;\r\n            tableconstraints.gridheight = i2;\r\n            layoutTable.put(component, tableconstraints);\r\n            for(j += k1; flag1 || k > 0 && j >= k; flag1 = false)\r\n            {\r\n                if(k <= 0)\r\n                    k = j;\r\n                if(ai != null)\r\n                {\r\n                    for(int k2 = 0; k2 < ai.length; k2++)\r\n                        if(ai[k2] > 0)\r\n                            ai[k2]--;\r\n\r\n                }\r\n                i++;\r\n                j = getFirstAvailableColumn(ai);\r\n            }\r\n\r\n        }\r\n\r\n        if(k <= 0)\r\n            k = j;\r\n        setIntProperty(\"nColumns\", k);\r\n        setIntProperty(\"nRows\", i + 1);\r\n    }\r\n\r\n    private Rectangle computeCellBounds(Rectangle rectangle, Dimension dimension, TableConstraints tableconstraints)\r\n    {\r\n        int i = rectangle.x;\r\n        int j = rectangle.y;\r\n        int k = rectangle.width;\r\n        int l = rectangle.height;\r\n        if(tableconstraints.fill == 0 || tableconstraints.fill == 3)\r\n            k = dimension.width;\r\n        if(tableconstraints.fill == 0 || tableconstraints.fill == 2)\r\n            l = dimension.height;\r\n        if(k != rectangle.width)\r\n            switch(tableconstraints.anchor)\r\n            {\r\n            case 10: // '\\n'\r\n            case 11: // '\\013'\r\n            case 15: // '\\017'\r\n                i += (rectangle.width - k) / 2;\r\n                break;\r\n\r\n            case 12: // '\\f'\r\n            case 13: // '\\r'\r\n            case 14: // '\\016'\r\n                i += rectangle.width - k;\r\n                break;\r\n            }\r\n        if(l != rectangle.height)\r\n            switch(tableconstraints.anchor)\r\n            {\r\n            case 10: // '\\n'\r\n            case 13: // '\\r'\r\n            case 17: // '\\021'\r\n                j += (rectangle.height - l) / 2;\r\n                break;\r\n\r\n            case 14: // '\\016'\r\n            case 15: // '\\017'\r\n            case 16: // '\\020'\r\n                j += rectangle.height - l;\r\n                break;\r\n            }\r\n        return new Rectangle(i, j, k, l);\r\n    }\r\n\r\n    private void setMaxProperty(String s, int i)\r\n    {\r\n        setIntProperty(s, Math.max(i, getIntProperty(s)));\r\n    }\r\n\r\n    private void setMaxProperty(String s, double d)\r\n    {\r\n        setDoubleProperty(s, Math.max(d, getDoubleProperty(s)));\r\n    }\r\n\r\n    private void setIntProperty(String s, int i)\r\n    {\r\n        propertyTable.put(s, new Integer(i));\r\n    }\r\n\r\n    private int getIntProperty(String s)\r\n    {\r\n        Object obj = propertyTable.get(s);\r\n        if(obj == null)\r\n            return 0;\r\n        else\r\n            return ((Integer)obj).intValue();\r\n    }\r\n\r\n    private void setDoubleProperty(String s, double d)\r\n    {\r\n        propertyTable.put(s, new Double(d));\r\n    }\r\n\r\n    private double getDoubleProperty(String s)\r\n    {\r\n        Object obj = propertyTable.get(s);\r\n        if(obj == null)\r\n            return 0.0D;\r\n        else\r\n            return ((Double)obj).doubleValue();\r\n    }\r\n\r\n    private int getFirstAvailableColumn(int ai[])\r\n    {\r\n        if(useStrictGridBagModel && ai != null)\r\n        {\r\n            for(int i = ai.length; i > 0; i--)\r\n                if(ai[i - 1] > 0)\r\n                    return i;\r\n\r\n        }\r\n        return 0;\r\n    }\r\n\r\n    public static final int NONE = 0;\r\n    public static final int HORIZONTAL = 2;\r\n    public static final int VERTICAL = 3;\r\n    public static final int BOTH = 1;\r\n    public static final int CENTER = 10;\r\n    public static final int LEFT = 11;\r\n    public static final int RIGHT = 12;\r\n    public static final int TOP = 13;\r\n    public static final int BOTTOM = 14;\r\n    public static final int FILL = 1;\r\n    private static final int LAYOUT_CONTAINER_MODE = 0;\r\n    private static final int MINIMUM_LAYOUT_SIZE_MODE = 1;\r\n    private static final int PREFERRED_LAYOUT_SIZE_MODE = 2;\r\n    private static final int MINIMUM_SCROLLBAR_SIZE = 100;\r\n    private transient Container targetContainer;\r\n    private HashMap constraintTable;\r\n    private HashMap layoutTable;\r\n    private HashMap propertyTable;\r\n    private boolean useStrictGridBagModel;\r\n    private int nRows;\r\n    private int nColumns;\r\n    private int horizontalAlignment;\r\n    private int verticalAlignment;\r\n    private int defaultFill;\r\n    private int hGap;\r\n    private int vGap;\r\n    static final long serialVersionUID = 1L;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/gui/TablePanel.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   TablePanel.java\r\n\r\npackage acm.gui;\r\n\r\nimport javax.swing.JPanel;\r\n\r\n// Referenced classes of package acm.gui:\r\n//            TableLayout\r\n\r\npublic class TablePanel extends JPanel\r\n{\r\n\r\n    TablePanel()\r\n    {\r\n    }\r\n\r\n    public TablePanel(int i, int j)\r\n    {\r\n        this(i, j, 0, 0);\r\n    }\r\n\r\n    public TablePanel(int i, int j, int k, int l)\r\n    {\r\n        setLayout(new TableLayout(i, j, k, l));\r\n    }\r\n\r\n    public void setHorizontalAlignment(int i)\r\n    {\r\n        ((TableLayout)getLayout()).setHorizontalAlignment(i);\r\n    }\r\n\r\n    public int getHorizontalAlignment()\r\n    {\r\n        return ((TableLayout)getLayout()).getHorizontalAlignment();\r\n    }\r\n\r\n    public void setVerticalAlignment(int i)\r\n    {\r\n        ((TableLayout)getLayout()).setVerticalAlignment(i);\r\n    }\r\n\r\n    public int getVerticalAlignment()\r\n    {\r\n        return ((TableLayout)getLayout()).getVerticalAlignment();\r\n    }\r\n\r\n    public void setDefaultFill(int i)\r\n    {\r\n        ((TableLayout)getLayout()).setDefaultFill(i);\r\n    }\r\n\r\n    public int getDefaultFill()\r\n    {\r\n        return ((TableLayout)getLayout()).getDefaultFill();\r\n    }\r\n\r\n    public void setHgap(int i)\r\n    {\r\n        ((TableLayout)getLayout()).setHgap(i);\r\n    }\r\n\r\n    public int getHgap()\r\n    {\r\n        return ((TableLayout)getLayout()).getHgap();\r\n    }\r\n\r\n    public void setVgap(int i)\r\n    {\r\n        ((TableLayout)getLayout()).setVgap(i);\r\n    }\r\n\r\n    public int getVgap()\r\n    {\r\n        return ((TableLayout)getLayout()).getVgap();\r\n    }\r\n\r\n    public static final int NONE = 0;\r\n    public static final int HORIZONTAL = 2;\r\n    public static final int VERTICAL = 3;\r\n    public static final int BOTH = 1;\r\n    public static final int CENTER = 10;\r\n    public static final int LEFT = 11;\r\n    public static final int RIGHT = 12;\r\n    public static final int TOP = 13;\r\n    public static final int BOTTOM = 14;\r\n    public static final int FILL = 1;\r\n    static final long serialVersionUID = 1L;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/gui/VPanel.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   VPanel.java\r\n\r\npackage acm.gui;\r\n\r\n\r\n// Referenced classes of package acm.gui:\r\n//            TablePanel, TableLayout\r\n\r\npublic class VPanel extends TablePanel\r\n{\r\n\r\n    public VPanel()\r\n    {\r\n        this(0, 0);\r\n    }\r\n\r\n    public VPanel(int i, int j)\r\n    {\r\n        TableLayout tablelayout = new TableLayout(0, 1, i, j);\r\n        tablelayout.setHorizontalAlignment(1);\r\n        tablelayout.setVerticalAlignment(1);\r\n        setLayout(tablelayout);\r\n    }\r\n\r\n    static final long serialVersionUID = 1L;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/io/AWTBooleanInputDialog.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   IODialog.java\r\n\r\npackage acm.io;\r\n\r\nimport java.awt.*;\r\nimport java.awt.event.ActionEvent;\r\n\r\n// Referenced classes of package acm.io:\r\n//            AWTDialog\r\n\r\nclass AWTBooleanInputDialog extends AWTDialog\r\n{\r\n\r\n    public AWTBooleanInputDialog(Frame frame, String s, Image image, String s1, String s2, boolean flag)\r\n    {\r\n        super(frame, \"Input\", image, flag);\r\n        setMessage(s);\r\n        trueButton.setLabel(s1);\r\n        falseButton.setLabel(s2);\r\n    }\r\n\r\n    public Boolean getInput()\r\n    {\r\n        return input;\r\n    }\r\n\r\n    public void initButtonPanel(Panel panel, boolean flag)\r\n    {\r\n        trueButton = new Button(\"True\");\r\n        trueButton.addActionListener(this);\r\n        panel.add(trueButton);\r\n        falseButton = new Button(\"False\");\r\n        falseButton.addActionListener(this);\r\n        panel.add(falseButton);\r\n        if(flag)\r\n        {\r\n            cancelButton = new Button(\"Cancel\");\r\n            cancelButton.addActionListener(this);\r\n            panel.add(cancelButton);\r\n        }\r\n    }\r\n\r\n    public void initDataPanel(Panel panel)\r\n    {\r\n    }\r\n\r\n    public void actionPerformed(ActionEvent actionevent)\r\n    {\r\n        Component component = (Component)actionevent.getSource();\r\n        if(component == trueButton)\r\n        {\r\n            input = Boolean.TRUE;\r\n            setVisible(false);\r\n        } else\r\n        if(component == falseButton)\r\n        {\r\n            input = Boolean.FALSE;\r\n            setVisible(false);\r\n        } else\r\n        if(component == cancelButton)\r\n        {\r\n            input = null;\r\n            setVisible(false);\r\n        }\r\n    }\r\n\r\n    private Button trueButton;\r\n    private Button falseButton;\r\n    private Button cancelButton;\r\n    private Boolean input;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/io/AWTDialog.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   IODialog.java\r\n\r\npackage acm.io;\r\n\r\nimport java.awt.*;\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\n\r\n// Referenced classes of package acm.io:\r\n//            AWTMessageCanvas, AWTIconCanvas\r\n\r\nabstract class AWTDialog extends Dialog\r\n    implements ActionListener\r\n{\r\n\r\n    public AWTDialog(Frame frame, String s, Image image, boolean flag)\r\n    {\r\n        super(frame, s, true);\r\n        setLayout(new BorderLayout());\r\n        Panel panel = new Panel();\r\n        Panel panel1 = new Panel();\r\n        Panel panel2 = new Panel();\r\n        Panel panel3 = new Panel();\r\n        panel.setLayout(new BorderLayout());\r\n        panel1.setLayout(new FlowLayout());\r\n        panel2.setLayout(new BorderLayout());\r\n        panel3.setLayout(new BorderLayout());\r\n        panel3.add(new Label(\" \"));\r\n        messageArea = new AWTMessageCanvas();\r\n        panel2.add(messageArea, \"Center\");\r\n        initButtonPanel(panel1, flag);\r\n        initDataPanel(panel2);\r\n        panel.add(new AWTIconCanvas(image), \"West\");\r\n        panel.add(panel2, \"Center\");\r\n        add(panel, \"Center\");\r\n        add(panel1, \"South\");\r\n        add(panel3, \"East\");\r\n        Rectangle rectangle = frame.getBounds();\r\n        int i = rectangle.x + rectangle.width / 2;\r\n        int j = rectangle.y + rectangle.height / 2;\r\n        setBounds(i - 130, j - 57, 260, 115);\r\n        validate();\r\n    }\r\n\r\n    public abstract void initButtonPanel(Panel panel, boolean flag);\r\n\r\n    public abstract void initDataPanel(Panel panel);\r\n\r\n    public abstract void actionPerformed(ActionEvent actionevent);\r\n\r\n    public void setMessage(String s)\r\n    {\r\n        messageArea.setMessage(s);\r\n    }\r\n\r\n    public static final int WIDTH = 260;\r\n    public static final int HEIGHT = 115;\r\n    private AWTMessageCanvas messageArea;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/io/AWTDialogModel.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   IODialog.java\r\n\r\npackage acm.io;\r\n\r\nimport acm.util.JTFTools;\r\nimport acm.util.MediaTools;\r\nimport java.awt.Component;\r\nimport java.awt.Image;\r\n\r\n// Referenced classes of package acm.io:\r\n//            AWTMessageDialog, AWTLineInputDialog, AWTBooleanInputDialog, DialogModel\r\n\r\nclass AWTDialogModel\r\n    implements DialogModel\r\n{\r\n\r\n    public AWTDialogModel(Component component)\r\n    {\r\n        myComponent = component;\r\n        imagesReady = false;\r\n    }\r\n\r\n    public void popupMessage(String s)\r\n    {\r\n        if(!imagesReady)\r\n            createImages();\r\n        java.awt.Frame frame = JTFTools.getEnclosingFrame(myComponent);\r\n        (new AWTMessageDialog(frame, \"Message\", informImage, s)).setVisible(true);\r\n    }\r\n\r\n    public void popupErrorMessage(String s)\r\n    {\r\n        if(!imagesReady)\r\n            createImages();\r\n        java.awt.Frame frame = JTFTools.getEnclosingFrame(myComponent);\r\n        (new AWTMessageDialog(frame, \"Error\", errorImage, s)).setVisible(true);\r\n    }\r\n\r\n    public String popupLineInputDialog(String s, boolean flag)\r\n    {\r\n        if(!imagesReady)\r\n            createImages();\r\n        java.awt.Frame frame = JTFTools.getEnclosingFrame(myComponent);\r\n        AWTLineInputDialog awtlineinputdialog = new AWTLineInputDialog(frame, s, questionImage, flag);\r\n        awtlineinputdialog.setVisible(true);\r\n        return awtlineinputdialog.getInput();\r\n    }\r\n\r\n    public Boolean popupBooleanInputDialog(String s, String s1, String s2, boolean flag)\r\n    {\r\n        if(!imagesReady)\r\n            createImages();\r\n        java.awt.Frame frame = JTFTools.getEnclosingFrame(myComponent);\r\n        AWTBooleanInputDialog awtbooleaninputdialog = new AWTBooleanInputDialog(frame, s, questionImage, s1, s2, flag);\r\n        awtbooleaninputdialog.setVisible(true);\r\n        return awtbooleaninputdialog.getInput();\r\n    }\r\n\r\n    private void createImages()\r\n    {\r\n        errorImage = MediaTools.createImage(ERROR_IMAGE);\r\n        informImage = MediaTools.createImage(INFORM_IMAGE);\r\n        questionImage = MediaTools.createImage(QUESTION_IMAGE);\r\n        imagesReady = true;\r\n    }\r\n\r\n    private Image errorImage;\r\n    private Image informImage;\r\n    private Image questionImage;\r\n    private Component myComponent;\r\n    private boolean imagesReady;\r\n    private static final String ERROR_IMAGE[] = {\r\n        \"47494638396120002000F70000FFFFFF980098339999989800111111222222000054CBFFCB003298\", \"0033660033CC0033FE00323266330066660000659800989800CC9900FE99329800659800CC0099FE\", \"0098659898999999CC9900FE98009800329800659900CC9800FE3399CB3399FF9999339898659832\", \"0098650099339998659833CB9833FF9999CC0099FE00336699656698CC9898FF9999323200336600\", \"32003233006632009833339965009866339900663300983200666600986500CC3300FE3200CC6600\", \"FE65CCCC98CCFF99FFCC99FFFF993300CC3200FE6600CC6500FECC0033CC0066FE0032FE00653399\", \"33339966669933669865CC00CCCB00FEFE00CBFE00FE6699CC6598FF9898CC9999FFCB9833CC9966\", \"FF9933FF9865333333326532323265326565660033653232660066653265CC3300CC6600FE3200FE\", \"65000066CC0099CC0066FE0098FE00CCCC00FECB00CCFE00FEFE33CC0033FE0066CC0066FE00CB33\", \"98CC6699FF3399FF659866CC9965FF9898CC9899FF99CCCC00CCFE00FECB00FEFE00993333996633\", \r\n        \"9933669865659833CB9966CC9933FF9865FF33CBCB33FFCC33CCFF33FFFF99CB3399FF3399CC6698\", \"FF65CC98CCCCCCCCCC99FFCBCBFFFF99CCFFCBCBFF99FFFFCBFF3333CB3366CB3333FF3366FF6533\", \"CB6666CC6633FF6565FFCB3333CB6533CB3365CC6666FF3333FF6633FF3366FF656533CB3333FF33\", \"33CB6633FF6666CB3366FF3366CC6665FF65CB33CBCC66CCCC33FFCC65FFFF33CCFF65CCFF33FFFF\", \"65FF66CCCC65FFCC65CCFF65FFFF98CCCC99FFCC99CCFF99FFFFCBCB33CCFF33CCCC66CCFF65FFCC\", \"33FFFF33FFCC65FFFF65444444656532DDDDDDCBFFFFFFFFCBEEEEEE100000980000001000660000\", \"000098000066777777888888AAAAAABBBBBB5555556666660000100000224400005400000000CC00\", \"00DC0000EE0000FE00003200004400880000980000AA0000BA0000CC0000DC0000EE0000FE00CC00\", \"00DC0000EE0000FE0000004400005400006600007600220000320000AA0000BA0000002200003200\", \"7600008800000000AA0000BA00007600008800000021F90401000096002C0000000020002000C7FF\", \r\n        \"FFFF980098339999989800111111222222000054CBFFCB0032980033660033CC0033FE0032326633\", \"0066660000659800989800CC9900FE99329800659800CC0099FE0098659898999999CC9900FE9800\", \"9800329800659900CC9800FE3399CB3399FF99993398986598320098650099339998659833CB9833\", \"FF9999CC0099FE00336699656698CC9898FF99993232003366003200323300663200983333996500\", \"9866339900663300983200666600986500CC3300FE3200CC6600FE65CCCC98CCFF99FFCC99FFFF99\", \"3300CC3200FE6600CC6500FECC0033CC0066FE0032FE0065339933339966669933669865CC00CCCB\", \"00FEFE00CBFE00FE6699CC6598FF9898CC9999FFCB9833CC9966FF9933FF98653333333265323232\", \"65326565660033653232660066653265CC3300CC6600FE3200FE65000066CC0099CC0066FE0098FE\", \"00CCCC00FECB00CCFE00FEFE33CC0033FE0066CC0066FE00CB3398CC6699FF3399FF659866CC9965\", \"FF9898CC9899FF99CCCC00CCFE00FECB00FEFE009933339966339933669865659833CB9966CC9933\", \r\n        \"FF9865FF33CBCB33FFCC33CCFF33FFFF99CB3399FF3399CC6698FF65CC98CCCCCCCCCC99FFCBCBFF\", \"FF99CCFFCBCBFF99FFFFCBFF3333CB3366CB3333FF3366FF6533CB6666CC6633FF6565FFCB3333CB\", \"6533CB3365CC6666FF3333FF6633FF3366FF656533CB3333FF3333CB6633FF6666CB3366FF3366CC\", \"6665FF65CB33CBCC66CCCC33FFCC65FFFF33CCFF65CCFF33FFFF65FF66CCCC65FFCC65CCFF65FFFF\", \"98CCCC99FFCC99CCFF99FFFFCBCB33CCFF33CCCC66CCFF65FFCC33FFFF33FFCC65FFFF6544444465\", \"6532DDDDDDCBFFFFFFFFCBEEEEEE100000980000001000660000000098000066777777888888AAAA\", \"AABBBBBB5555556666660000100000224400005400000000CC0000DC0000EE0000FE000032000044\", \"00880000980000AA0000BA0000CC0000DC0000EE0000FE00CC0000DC0000EE0000FE000000440000\", \"5400006600007600220000320000AA0000BA00000022000032007600008800000000AA0000BA0000\", \"7600008800000008E5002D091C28909DC1830813B22348D0202D85D5AA294C185121872EEC1E4E44\", \r\n        \"18B1E34676EBD85DB48430E4C793074736CC88F22387861A377A3438F3A04991186352AC08916742\", \"950339B404F9B30BC3A30E87A63C5A90A55297057572F43955A2C59C2D3B529D78D1A94C9F350DDE\", \"EC2A95A6D58F5B71067DBA112853A11CE2CA9D4BD72853A41969E9DDCB77AFC8BB2BCBB67CC93429\", \"DB9F810F43F55A156D5AB236779E353B1921E4931EC35E657C53F260AC982B6A2ECAB2F341CDA30D\", \"5EF6FCB5324EC68A23ABB5243476D1A3B5893E5DE716B76CB16DED020EDAA5B8F1E3C8EF06040021\", \"FF0B4D414347436F6E2004031039000000015772697474656E20627920474946436F6E7665727465\", \"7220322E342E33206F66204D6F6E6461792C204D61792032352C2031393938003B\"\r\n    };\r\n    private static final String INFORM_IMAGE[] = {\r\n        \"47494638396120002000F70000FFFFFF980098339999989800111111222222000054CBFFCB003298\", \"0033660033CC0033FE00323266330066660000659800989800CC9900FE99329800659800CC0099FE\", \"0098659898999999CC9900FE98009800329800659900CC9800FE3399CB3399FF9999339898659832\", \"0098650099339998659833CB9833FF9999CC0099FE00336699656698CC9898FF9999323200336600\", \"32003233006632009833339965009866339900663300983200666600986500CC3300FE3200CC6600\", \"FE65CCCC98CCFF99FFCC99FFFF993300CC3200FE6600CC6500FECC0033CC0066FE0032FE00653399\", \"33339966669933669865CC00CCCB00FEFE00CBFE00FE6699CC6598FF9898CC9999FFCB9833CC9966\", \"FF9933FF9865333333326532323265326565660033653232660066653265CC3300CC6600FE3200FE\", \"65000066CC0099CC0066FE0098FE00CCCC00FECB00CCFE00FEFE33CC0033FE0066CC0066FE00CB33\", \"98CC6699FF3399FF659866CC9965FF9898CC9899FF99CCCC00CCFE00FECB00FEFE00993333996633\", \r\n        \"9933669865659833CB9966CC9933FF9865FF33CBCB33FFCC33CCFF33FFFF99CB3399FF3399CC6698\", \"FF65CC98CCCCCCCCCC99FFCBCBFFFF99CCFFCBCBFF99FFFFCBFF3333CB3366CB3333FF3366FF6533\", \"CB6666CC6633FF6565FFCB3333CB6533CB3365CC6666FF3333FF6633FF3366FF656533CB3333FF33\", \"33CB6633FF6666CB3366FF3366CC6665FF65CB33CBCC66CCCC33FFCC65FFFF33CCFF65CCFF33FFFF\", \"65FF66CCCC65FFCC65CCFF65FFFF98CCCC99FFCC99CCFF99FFFFCBCB33CCFF33CCCC66CCFF65FFCC\", \"33FFFF33FFCC65FFFF65444444656532DDDDDDCBFFFFFFFFCBEEEEEE100000980000001000660000\", \"000098000066777777888888AAAAAABBBBBB5555556666660000100000224400005400000000CC00\", \"00DC0000EE0000FE00003200004400880000980000AA0000BA0000CC0000DC0000EE0000FE00CC00\", \"00DC0000EE0000FE0000004400005400006600007600220000320000AA0000BA0000002200003200\", \"7600008800000000AA0000BA00007600008800000021F90401000096002C0000000020002000C7FF\", \r\n        \"FFFF980098339999989800111111222222000054CBFFCB0032980033660033CC0033FE0032326633\", \"0066660000659800989800CC9900FE99329800659800CC0099FE0098659898999999CC9900FE9800\", \"9800329800659900CC9800FE3399CB3399FF99993398986598320098650099339998659833CB9833\", \"FF9999CC0099FE00336699656698CC9898FF99993232003366003200323300663200983333996500\", \"9866339900663300983200666600986500CC3300FE3200CC6600FE65CCCC98CCFF99FFCC99FFFF99\", \"3300CC3200FE6600CC6500FECC0033CC0066FE0032FE0065339933339966669933669865CC00CCCB\", \"00FEFE00CBFE00FE6699CC6598FF9898CC9999FFCB9833CC9966FF9933FF98653333333265323232\", \"65326565660033653232660066653265CC3300CC6600FE3200FE65000066CC0099CC0066FE0098FE\", \"00CCCC00FECB00CCFE00FEFE33CC0033FE0066CC0066FE00CB3398CC6699FF3399FF659866CC9965\", \"FF9898CC9899FF99CCCC00CCFE00FECB00FEFE009933339966339933669865659833CB9966CC9933\", \r\n        \"FF9865FF33CBCB33FFCC33CCFF33FFFF99CB3399FF3399CC6698FF65CC98CCCCCCCCCC99FFCBCBFF\", \"FF99CCFFCBCBFF99FFFFCBFF3333CB3366CB3333FF3366FF6533CB6666CC6633FF6565FFCB3333CB\", \"6533CB3365CC6666FF3333FF6633FF3366FF656533CB3333FF3333CB6633FF6666CB3366FF3366CC\", \"6665FF65CB33CBCC66CCCC33FFCC65FFFF33CCFF65CCFF33FFFF65FF66CCCC65FFCC65CCFF65FFFF\", \"98CCCC99FFCC99CCFF99FFFFCBCB33CCFF33CCCC66CCFF65FFCC33FFFF33FFCC65FFFF6544444465\", \"6532DDDDDDCBFFFFFFFFCBEEEEEE100000980000001000660000000098000066777777888888AAAA\", \"AABBBBBB5555556666660000100000224400005400000000CC0000DC0000EE0000FE000032000044\", \"00880000980000AA0000BA0000CC0000DC0000EE0000FE00CC0000DC0000EE0000FE000000440000\", \"5400006600007600220000320000AA0000BA00000022000032007600008800000000AA0000BA0000\", \"7600008800000008A0002D091C48B0A0C1830809F659B8F09F43870C17268C4891E2C38A18FB4C8C\", \r\n        \"F81062C484200536F418D260C691FF4E6A44A8F2E2C9920531C29CC9706648861D534AB46909634E\", \"992C55F671A932A650A22F830AADC8B3274A8F2B9B9ADC291564D4AA072962353A14EA568E1D3FF2\", \"ACF8536BC98C65992A450B3523D7966D933A3D1AD7AD42B83AE54EF559B7E659B27D9B8245FA15A5\", \"DFAD22C5228EC933200021FF0B4D414347436F6E2004031039000000015772697474656E20627920\", \"474946436F6E76657274657220322E342E33206F66204D6F6E6461792C204D61792032352C203139\", \"3938003B\"\r\n    };\r\n    private static final String QUESTION_IMAGE[] = {\r\n        \"47494638396120002000F70000FFFFFF980098339999989800111111222222000054CBFFCB003298\", \"0033660033CC0033FE00323266330066660000659800989800CC9900FE99329800659800CC0099FE\", \"0098659898999999CC9900FE98009800329800659900CC9800FE3399CB3399FF9999339898659832\", \"0098650099339998659833CB9833FF9999CC0099FE00336699656698CC9898FF9999323200336600\", \"32003233006632009833339965009866339900663300983200666600986500CC3300FE3200CC6600\", \"FE65CCCC98CCFF99FFCC99FFFF993300CC3200FE6600CC6500FECC0033CC0066FE0032FE00653399\", \"33339966669933669865CC00CCCB00FEFE00CBFE00FE6699CC6598FF9898CC9999FFCB9833CC9966\", \"FF9933FF9865333333326532323265326565660033653232660066653265CC3300CC6600FE3200FE\", \"65000066CC0099CC0066FE0098FE00CCCC00FECB00CCFE00FEFE33CC0033FE0066CC0066FE00CB33\", \"98CC6699FF3399FF659866CC9965FF9898CC9899FF99CCCC00CCFE00FECB00FEFE00993333996633\", \r\n        \"9933669865659833CB9966CC9933FF9865FF33CBCB33FFCC33CCFF33FFFF99CB3399FF3399CC6698\", \"FF65CC98CCCCCCCCCC99FFCBCBFFFF99CCFFCBCBFF99FFFFCBFF3333CB3366CB3333FF3366FF6533\", \"CB6666CC6633FF6565FFCB3333CB6533CB3365CC6666FF3333FF6633FF3366FF656533CB3333FF33\", \"33CB6633FF6666CB3366FF3366CC6665FF65CB33CBCC66CCCC33FFCC65FFFF33CCFF65CCFF33FFFF\", \"65FF66CCCC65FFCC65CCFF65FFFF98CCCC99FFCC99CCFF99FFFFCBCB33CCFF33CCCC66CCFF65FFCC\", \"33FFFF33FFCC65FFFF65444444656532DDDDDDCBFFFFFFFFCBEEEEEE100000980000001000660000\", \"000098000066777777888888AAAAAABBBBBB5555556666660000100000224400005400000000CC00\", \"00DC0000EE0000FE00003200004400880000980000AA0000BA0000CC0000DC0000EE0000FE00CC00\", \"00DC0000EE0000FE0000004400005400006600007600220000320000AA0000BA0000002200003200\", \"7600008800000000AA0000BA00007600008800000021F90401000096002C0000000020002000C7FF\", \r\n        \"FFFF980098339999989800111111222222000054CBFFCB0032980033660033CC0033FE0032326633\", \"0066660000659800989800CC9900FE99329800659800CC0099FE0098659898999999CC9900FE9800\", \"9800329800659900CC9800FE3399CB3399FF99993398986598320098650099339998659833CB9833\", \"FF9999CC0099FE00336699656698CC9898FF99993232003366003200323300663200983333996500\", \"9866339900663300983200666600986500CC3300FE3200CC6600FE65CCCC98CCFF99FFCC99FFFF99\", \"3300CC3200FE6600CC6500FECC0033CC0066FE0032FE0065339933339966669933669865CC00CCCB\", \"00FEFE00CBFE00FE6699CC6598FF9898CC9999FFCB9833CC9966FF9933FF98653333333265323232\", \"65326565660033653232660066653265CC3300CC6600FE3200FE65000066CC0099CC0066FE0098FE\", \"00CCCC00FECB00CCFE00FEFE33CC0033FE0066CC0066FE00CB3398CC6699FF3399FF659866CC9965\", \"FF9898CC9899FF99CCCC00CCFE00FECB00FEFE009933339966339933669865659833CB9966CC9933\", \r\n        \"FF9865FF33CBCB33FFCC33CCFF33FFFF99CB3399FF3399CC6698FF65CC98CCCCCCCCCC99FFCBCBFF\", \"FF99CCFFCBCBFF99FFFFCBFF3333CB3366CB3333FF3366FF6533CB6666CC6633FF6565FFCB3333CB\", \"6533CB3365CC6666FF3333FF6633FF3366FF656533CB3333FF3333CB6633FF6666CB3366FF3366CC\", \"6665FF65CB33CBCC66CCCC33FFCC65FFFF33CCFF65CCFF33FFFF65FF66CCCC65FFCC65CCFF65FFFF\", \"98CCCC99FFCC99CCFF99FFFFCBCB33CCFF33CCCC66CCFF65FFCC33FFFF33FFCC65FFFF6544444465\", \"6532DDDDDDCBFFFFFFFFCBEEEEEE100000980000001000660000000098000066777777888888AAAA\", \"AABBBBBB5555556666660000100000224400005400000000CC0000DC0000EE0000FE000032000044\", \"00880000980000AA0000BA0000CC0000DC0000EE0000FE00CC0000DC0000EE0000FE000000440000\", \"5400006600007600220000320000AA0000BA00000022000032007600008800000000AA0000BA0000\", \"7600008800000008A9002D091C485060AE83080F165C383021C27F1021268C28D1612E831633E6A2\", \r\n        \"A8D121C68E1B2B82BCB8502345911E0982E478F024484B235BA27C593263C48E0C6BC64C98F3E3C4\", \"934033AAB4E952E64DA13B1FB24CDAF1E84E98319D8E2CD874A9D09E0D9F62659874EB50A608B112\", \"053A5321558B568B5ACC8A56ADDA9426DD5AE50936A4D4BA3FEFE2555A762F5FA65047EAD5C8D66F\", \"CAC26D07F3E43AB6AF59B175BD325EBB35200021FF0B4D414347436F6E2004031039000000015772\", \"697474656E20627920474946436F6E76657274657220322E342E33206F66204D6F6E6461792C204D\", \"61792032352C2031393938003B\"\r\n    };\r\n\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/io/AWTIconCanvas.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   IODialog.java\r\n\r\npackage acm.io;\r\n\r\nimport java.awt.*;\r\n\r\nclass AWTIconCanvas extends Canvas\r\n{\r\n\r\n    public AWTIconCanvas(Image image)\r\n    {\r\n        myIcon = image;\r\n    }\r\n\r\n    public Dimension getMinimumSize()\r\n    {\r\n        return new Dimension(48, 48);\r\n    }\r\n\r\n    public Dimension getPreferredSize()\r\n    {\r\n        return getMinimumSize();\r\n    }\r\n\r\n    public void paint(Graphics g)\r\n    {\r\n        g.drawImage(myIcon, 8, 8, this);\r\n    }\r\n\r\n    private Image myIcon;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/io/AWTLineInputDialog.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   IODialog.java\r\n\r\npackage acm.io;\r\n\r\nimport java.awt.*;\r\nimport java.awt.event.ActionEvent;\r\n\r\n// Referenced classes of package acm.io:\r\n//            AWTDialog\r\n\r\nclass AWTLineInputDialog extends AWTDialog\r\n{\r\n\r\n    public AWTLineInputDialog(Frame frame, String s, Image image, boolean flag)\r\n    {\r\n        super(frame, \"Input\", image, flag);\r\n        setMessage(s);\r\n    }\r\n\r\n    public String getInput()\r\n    {\r\n        return input;\r\n    }\r\n\r\n    public void setVisible(boolean flag)\r\n    {\r\n        super.setVisible(flag);\r\n        if(flag)\r\n            textLine.requestFocus();\r\n    }\r\n\r\n    public void initButtonPanel(Panel panel, boolean flag)\r\n    {\r\n        okButton = new Button(\"OK\");\r\n        okButton.addActionListener(this);\r\n        panel.add(okButton);\r\n        if(flag)\r\n        {\r\n            cancelButton = new Button(\"Cancel\");\r\n            cancelButton.addActionListener(this);\r\n            panel.add(cancelButton);\r\n        }\r\n    }\r\n\r\n    public void initDataPanel(Panel panel)\r\n    {\r\n        textLine = new TextField();\r\n        textLine.addActionListener(this);\r\n        panel.add(textLine, \"South\");\r\n    }\r\n\r\n    public void actionPerformed(ActionEvent actionevent)\r\n    {\r\n        Component component = (Component)actionevent.getSource();\r\n        if(component == okButton || component == textLine)\r\n        {\r\n            input = textLine.getText();\r\n            setVisible(false);\r\n        } else\r\n        if(component == cancelButton)\r\n        {\r\n            input = null;\r\n            setVisible(false);\r\n        }\r\n    }\r\n\r\n    private Button cancelButton;\r\n    private Button okButton;\r\n    private TextField textLine;\r\n    private String input;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/io/AWTMessageCanvas.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   IODialog.java\r\n\r\npackage acm.io;\r\n\r\nimport java.awt.*;\r\nimport java.util.StringTokenizer;\r\n\r\nclass AWTMessageCanvas extends Canvas\r\n{\r\n\r\n    public AWTMessageCanvas()\r\n    {\r\n        setFont(MESSAGE_FONT);\r\n    }\r\n\r\n    public void setMessage(String s)\r\n    {\r\n        message = s;\r\n    }\r\n\r\n    public void paint(Graphics g)\r\n    {\r\n        FontMetrics fontmetrics = g.getFontMetrics();\r\n        int i = 8;\r\n        int j = 8 + fontmetrics.getAscent();\r\n        int k = getSize().width - 8;\r\n        StringTokenizer stringtokenizer = new StringTokenizer(message, \" \", true);\r\n        do\r\n        {\r\n            if(!stringtokenizer.hasMoreTokens())\r\n                break;\r\n            String s = stringtokenizer.nextToken();\r\n            int l = fontmetrics.stringWidth(s);\r\n            if(i + l > k)\r\n            {\r\n                i = 8;\r\n                j += fontmetrics.getHeight();\r\n                if(s.equals(\" \"))\r\n                    continue;\r\n            }\r\n            g.drawString(s, i, j);\r\n            i += l;\r\n        } while(true);\r\n    }\r\n\r\n    public static final int MARGIN = 8;\r\n    public static final Font MESSAGE_FONT = new Font(\"Dialog\", 0, 12);\r\n    private String message;\r\n\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/io/AWTMessageDialog.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   IODialog.java\r\n\r\npackage acm.io;\r\n\r\nimport java.awt.*;\r\nimport java.awt.event.ActionEvent;\r\n\r\n// Referenced classes of package acm.io:\r\n//            AWTDialog\r\n\r\nclass AWTMessageDialog extends AWTDialog\r\n{\r\n\r\n    public AWTMessageDialog(Frame frame, String s, Image image, String s1)\r\n    {\r\n        super(frame, s, image, false);\r\n        setMessage(s1);\r\n    }\r\n\r\n    public void initButtonPanel(Panel panel, boolean flag)\r\n    {\r\n        okButton = new Button(\"OK\");\r\n        okButton.addActionListener(this);\r\n        panel.add(okButton);\r\n    }\r\n\r\n    public void initDataPanel(Panel panel)\r\n    {\r\n    }\r\n\r\n    public void actionPerformed(ActionEvent actionevent)\r\n    {\r\n        if(actionevent.getSource() == okButton)\r\n            setVisible(false);\r\n    }\r\n\r\n    private Button okButton;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/io/CharacterQueue.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   IOConsole.java\r\n\r\npackage acm.io;\r\n\r\n\r\nclass CharacterQueue\r\n{\r\n\r\n    public CharacterQueue()\r\n    {\r\n        buffer = \"\";\r\n    }\r\n\r\n    public synchronized void enqueue(char c)\r\n    {\r\n        new StringBuilder();\r\n        this;\r\n        JVM INSTR dup_x1 ;\r\n        buffer;\r\n        append();\r\n        c;\r\n        append();\r\n        toString();\r\n        buffer;\r\n        notifyAll();\r\n        return;\r\n    }\r\n\r\n    public synchronized void enqueue(String s)\r\n    {\r\n        new StringBuilder();\r\n        this;\r\n        JVM INSTR dup_x1 ;\r\n        buffer;\r\n        append();\r\n        s;\r\n        append();\r\n        toString();\r\n        buffer;\r\n        notifyAll();\r\n        return;\r\n    }\r\n\r\n    public synchronized char dequeue()\r\n    {\r\n        while(buffer.length() == 0) \r\n            try\r\n            {\r\n                isWaiting = true;\r\n                wait();\r\n                isWaiting = false;\r\n            }\r\n            catch(InterruptedException interruptedexception) { }\r\n        char c = buffer.charAt(0);\r\n        buffer = buffer.substring(1);\r\n        return c;\r\n    }\r\n\r\n    public synchronized void clear()\r\n    {\r\n        buffer = \"\";\r\n        notifyAll();\r\n    }\r\n\r\n    public boolean isWaiting()\r\n    {\r\n        return isWaiting;\r\n    }\r\n\r\n    private String buffer;\r\n    private boolean isWaiting;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/io/ConsoleActionListener.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   IOConsole.java\r\n\r\npackage acm.io;\r\n\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\n\r\n// Referenced classes of package acm.io:\r\n//            IOConsole\r\n\r\nclass ConsoleActionListener\r\n    implements ActionListener\r\n{\r\n\r\n    public ConsoleActionListener(IOConsole ioconsole)\r\n    {\r\n        console = ioconsole;\r\n    }\r\n\r\n    public void actionPerformed(ActionEvent actionevent)\r\n    {\r\n        console.menuAction(actionevent);\r\n    }\r\n\r\n    private IOConsole console;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/io/ConsoleInputMonitor.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   IOConsole.java\r\n\r\npackage acm.io;\r\n\r\n\r\n// Referenced classes of package acm.io:\r\n//            StandardConsoleModel\r\n\r\nclass ConsoleInputMonitor\r\n{\r\n\r\n    public ConsoleInputMonitor(StandardConsoleModel standardconsolemodel)\r\n    {\r\n        consoleModel = standardconsolemodel;\r\n    }\r\n\r\n    public synchronized String readLine()\r\n    {\r\n        return consoleModel.readLineCallback();\r\n    }\r\n\r\n    private StandardConsoleModel consoleModel;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/io/ConsoleModel.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   IOConsole.java\r\n\r\npackage acm.io;\r\n\r\nimport acm.program.ProgramMenuBar;\r\nimport java.awt.*;\r\nimport java.io.BufferedReader;\r\n\r\n// Referenced classes of package acm.io:\r\n//            IOConsole\r\n\r\ninterface ConsoleModel\r\n{\r\n\r\n    public abstract void setConsole(IOConsole ioconsole);\r\n\r\n    public abstract IOConsole getConsole();\r\n\r\n    public abstract void print(String s, int i);\r\n\r\n    public abstract String readLine();\r\n\r\n    public abstract void setInputScript(BufferedReader bufferedreader);\r\n\r\n    public abstract BufferedReader getInputScript();\r\n\r\n    public abstract void clear();\r\n\r\n    public abstract String getText();\r\n\r\n    public abstract String getText(int i, int j);\r\n\r\n    public abstract int getLength();\r\n\r\n    public abstract Component getConsolePane();\r\n\r\n    public abstract Component getTextPane();\r\n\r\n    public abstract void cut();\r\n\r\n    public abstract void copy();\r\n\r\n    public abstract void paste();\r\n\r\n    public abstract void selectAll();\r\n\r\n    public abstract boolean isPointSelection();\r\n\r\n    public abstract void print(PrintJob printjob);\r\n\r\n    public abstract void setInputStyle(int i);\r\n\r\n    public abstract void setInputColor(Color color);\r\n\r\n    public abstract void setErrorStyle(int i);\r\n\r\n    public abstract void setErrorColor(Color color);\r\n\r\n    public abstract void requestFocus();\r\n\r\n    public abstract void setMenuBar(ProgramMenuBar programmenubar);\r\n\r\n    public static final int OUTPUT_STYLE = 0;\r\n    public static final int INPUT_STYLE = 1;\r\n    public static final int ERROR_STYLE = 2;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/io/ConsoleOutputMonitor.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   IOConsole.java\r\n\r\npackage acm.io;\r\n\r\n\r\n// Referenced classes of package acm.io:\r\n//            StandardConsoleModel\r\n\r\nclass ConsoleOutputMonitor\r\n{\r\n\r\n    public ConsoleOutputMonitor(StandardConsoleModel standardconsolemodel)\r\n    {\r\n        consoleModel = standardconsolemodel;\r\n    }\r\n\r\n    public synchronized void print(String s, int i)\r\n    {\r\n        consoleModel.printCallback(s, i);\r\n    }\r\n\r\n    private StandardConsoleModel consoleModel;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/io/ConsoleReader.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   IOConsole.java\r\n\r\npackage acm.io;\r\n\r\nimport java.io.Reader;\r\n\r\n// Referenced classes of package acm.io:\r\n//            ConsoleModel\r\n\r\nclass ConsoleReader extends Reader\r\n{\r\n\r\n    public ConsoleReader(ConsoleModel consolemodel)\r\n    {\r\n        consoleModel = consolemodel;\r\n        buffer = null;\r\n    }\r\n\r\n    public void close()\r\n    {\r\n    }\r\n\r\n    public int read(char ac[], int i, int j)\r\n    {\r\n        if(j == 0)\r\n            return 0;\r\n        if(buffer != null) goto _L2; else goto _L1\r\n_L1:\r\n        buffer = consoleModel.readLine();\r\n        if(buffer == null)\r\n            return -1;\r\n        new StringBuilder();\r\n        this;\r\n        JVM INSTR dup_x1 ;\r\n        buffer;\r\n        append();\r\n        \"\\n\";\r\n        append();\r\n        toString();\r\n        buffer;\r\n_L2:\r\n        if(j < buffer.length())\r\n        {\r\n            buffer.getChars(0, j, ac, i);\r\n            buffer = buffer.substring(j);\r\n        } else\r\n        {\r\n            j = buffer.length();\r\n            buffer.getChars(0, j, ac, i);\r\n            buffer = null;\r\n        }\r\n        return j;\r\n    }\r\n\r\n    private ConsoleModel consoleModel;\r\n    private String buffer;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/io/ConsoleWriter.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   IOConsole.java\r\n\r\npackage acm.io;\r\n\r\nimport java.io.Writer;\r\n\r\n// Referenced classes of package acm.io:\r\n//            IOConsole, ConsoleModel\r\n\r\nclass ConsoleWriter extends Writer\r\n{\r\n\r\n    public ConsoleWriter(ConsoleModel consolemodel)\r\n    {\r\n        consoleModel = consolemodel;\r\n    }\r\n\r\n    public void close()\r\n    {\r\n    }\r\n\r\n    public void flush()\r\n    {\r\n    }\r\n\r\n    public void write(char ac[], int i, int j)\r\n    {\r\n        String s = new String(ac, i, j);\r\n        int k;\r\n        int l;\r\n        for(k = 0; (l = s.indexOf(IOConsole.LINE_SEPARATOR, k)) != -1; k = l + IOConsole.LINE_SEPARATOR.length())\r\n        {\r\n            consoleModel.print(s.substring(k, l), 0);\r\n            consoleModel.print(\"\\n\", 0);\r\n        }\r\n\r\n        consoleModel.print(s.substring(k), 0);\r\n    }\r\n\r\n    private ConsoleModel consoleModel;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/io/DialogModel.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   IODialog.java\r\n\r\npackage acm.io;\r\n\r\n\r\ninterface DialogModel\r\n{\r\n\r\n    public abstract void popupMessage(String s);\r\n\r\n    public abstract void popupErrorMessage(String s);\r\n\r\n    public abstract String popupLineInputDialog(String s, boolean flag);\r\n\r\n    public abstract Boolean popupBooleanInputDialog(String s, String s1, String s2, boolean flag);\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/io/IOConsole.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   IOConsole.java\r\n\r\npackage acm.io;\r\n\r\nimport acm.program.ProgramMenuBar;\r\nimport acm.util.*;\r\nimport java.awt.*;\r\nimport java.awt.event.ActionEvent;\r\nimport java.io.*;\r\nimport java.util.Iterator;\r\nimport javax.swing.JMenuItem;\r\n\r\n// Referenced classes of package acm.io:\r\n//            ConsoleReader, ConsoleWriter, IODialog, StandardConsoleModel, \r\n//            SystemConsole, IOModel, ConsoleModel\r\n\r\npublic class IOConsole extends Container\r\n    implements IOModel\r\n{\r\n\r\n    public IOConsole()\r\n    {\r\n        consoleModel = createConsoleModel();\r\n        consoleModel.setConsole(this);\r\n        setBackground(Color.WHITE);\r\n        setInputColor(Color.BLUE);\r\n        setInputStyle(1);\r\n        setErrorColor(Color.RED);\r\n        setErrorStyle(1);\r\n        setFont(JTFTools.getStandardFont(DEFAULT_FONT));\r\n        Component component = consoleModel.getConsolePane();\r\n        if(component != null)\r\n        {\r\n            setLayout(new BorderLayout());\r\n            add(component, \"Center\");\r\n        }\r\n        reader = null;\r\n        writer = null;\r\n        exceptionOnError = false;\r\n    }\r\n\r\n    public void clear()\r\n    {\r\n        consoleModel.clear();\r\n    }\r\n\r\n    public void print(String s)\r\n    {\r\n        getWriter().print(s);\r\n    }\r\n\r\n    public final void print(boolean flag)\r\n    {\r\n        print((new StringBuilder()).append(\"\").append(flag).toString());\r\n    }\r\n\r\n    public final void print(char c)\r\n    {\r\n        print((new StringBuilder()).append(\"\").append(c).toString());\r\n    }\r\n\r\n    public final void print(double d)\r\n    {\r\n        print((new StringBuilder()).append(\"\").append(d).toString());\r\n    }\r\n\r\n    public final void print(float f)\r\n    {\r\n        print((new StringBuilder()).append(\"\").append(f).toString());\r\n    }\r\n\r\n    public final void print(int i)\r\n    {\r\n        print((new StringBuilder()).append(\"\").append(i).toString());\r\n    }\r\n\r\n    public final void print(long l)\r\n    {\r\n        print((new StringBuilder()).append(\"\").append(l).toString());\r\n    }\r\n\r\n    public final void print(Object obj)\r\n    {\r\n        print((new StringBuilder()).append(\"\").append(obj).toString());\r\n    }\r\n\r\n    public void println()\r\n    {\r\n        getWriter().println();\r\n    }\r\n\r\n    public void println(String s)\r\n    {\r\n        getWriter().println(s);\r\n    }\r\n\r\n    public final void println(boolean flag)\r\n    {\r\n        println((new StringBuilder()).append(\"\").append(flag).toString());\r\n    }\r\n\r\n    public final void println(char c)\r\n    {\r\n        println((new StringBuilder()).append(\"\").append(c).toString());\r\n    }\r\n\r\n    public final void println(double d)\r\n    {\r\n        println((new StringBuilder()).append(\"\").append(d).toString());\r\n    }\r\n\r\n    public final void println(float f)\r\n    {\r\n        println((new StringBuilder()).append(\"\").append(f).toString());\r\n    }\r\n\r\n    public final void println(int i)\r\n    {\r\n        println((new StringBuilder()).append(\"\").append(i).toString());\r\n    }\r\n\r\n    public final void println(long l)\r\n    {\r\n        println((new StringBuilder()).append(\"\").append(l).toString());\r\n    }\r\n\r\n    public final void println(Object obj)\r\n    {\r\n        println((new StringBuilder()).append(\"\").append(obj).toString());\r\n    }\r\n\r\n    public void showErrorMessage(String s)\r\n    {\r\n        consoleModel.print(s, 2);\r\n        consoleModel.print(\"\\n\", 2);\r\n    }\r\n\r\n    public final String readLine()\r\n    {\r\n        return readLine(null);\r\n    }\r\n\r\n    public String readLine(String s)\r\n    {\r\n        if(s != null)\r\n            print(s);\r\n        consoleModel.requestFocus();\r\n        String s1 = getReader().readLine();\r\n        return s1;\r\n        IOException ioexception;\r\n        ioexception;\r\n        throw new ErrorException(ioexception);\r\n    }\r\n\r\n    public final int readInt()\r\n    {\r\n        return readInt(null, 0x80000000, 0x7fffffff);\r\n    }\r\n\r\n    public final int readInt(int i, int j)\r\n    {\r\n        return readInt(null, i, j);\r\n    }\r\n\r\n    public final int readInt(String s)\r\n    {\r\n        return readInt(s, 0x80000000, 0x7fffffff);\r\n    }\r\n\r\n    public int readInt(String s, int i, int j)\r\n    {\r\n        Object obj = null;\r\n_L2:\r\n        String s2 = readLine(s);\r\n        int k = Integer.parseInt(s2);\r\n        if(k >= i && k <= j)\r\n            return k;\r\n        String s1;\r\n        try\r\n        {\r\n            s1 = (new StringBuilder()).append(\"Value is outside the range [\").append(i).append(\":\").append(j).append(\"]\").toString();\r\n        }\r\n        catch(NumberFormatException numberformatexception)\r\n        {\r\n            s1 = \"Illegal numeric format\";\r\n        }\r\n        showErrorMessage(s1);\r\n        if(s == null)\r\n            s = \"Retry: \";\r\n        if(true) goto _L2; else goto _L1\r\n_L1:\r\n    }\r\n\r\n    public final double readDouble()\r\n    {\r\n        return readDouble(null, (-1.0D / 0.0D), (1.0D / 0.0D));\r\n    }\r\n\r\n    public final double readDouble(double d, double d1)\r\n    {\r\n        return readDouble(null, d, d1);\r\n    }\r\n\r\n    public final double readDouble(String s)\r\n    {\r\n        return readDouble(s, (-1.0D / 0.0D), (1.0D / 0.0D));\r\n    }\r\n\r\n    public double readDouble(String s, double d, double d1)\r\n    {\r\n        Object obj = null;\r\n_L2:\r\n        String s2 = readLine(s);\r\n        double d2 = Double.valueOf(s2).doubleValue();\r\n        if(d2 >= d && d2 <= d1)\r\n            return d2;\r\n        String s1;\r\n        try\r\n        {\r\n            s1 = (new StringBuilder()).append(\"Value is outside the range [\").append(d).append(\":\").append(d1).append(\"]\").toString();\r\n        }\r\n        catch(NumberFormatException numberformatexception)\r\n        {\r\n            s1 = \"Illegal numeric format\";\r\n        }\r\n        showErrorMessage(s1);\r\n        if(s == null)\r\n            s = \"Retry: \";\r\n        if(true) goto _L2; else goto _L1\r\n_L1:\r\n    }\r\n\r\n    public final boolean readBoolean()\r\n    {\r\n        return readBoolean(null);\r\n    }\r\n\r\n    public final boolean readBoolean(String s)\r\n    {\r\n        return readBoolean(s, \"true\", \"false\");\r\n    }\r\n\r\n    public boolean readBoolean(String s, String s1, String s2)\r\n    {\r\n        do\r\n        {\r\n            do\r\n            {\r\n                String s3 = readLine(s);\r\n                if(s3 == null)\r\n                    throw new ErrorException(\"End of file encountered\");\r\n                if(s3.equalsIgnoreCase(s1))\r\n                    return true;\r\n                if(s3.equalsIgnoreCase(s2))\r\n                    return false;\r\n                if(exceptionOnError)\r\n                    throw new ErrorException(\"Illegal boolean format\");\r\n                showErrorMessage(\"Illegal boolean format\");\r\n            } while(s != null);\r\n            s = \"Retry: \";\r\n        } while(true);\r\n    }\r\n\r\n    public BufferedReader getReader()\r\n    {\r\n        if(reader == null)\r\n            reader = new BufferedReader(new ConsoleReader(consoleModel));\r\n        return reader;\r\n    }\r\n\r\n    public PrintWriter getWriter()\r\n    {\r\n        if(writer == null)\r\n            writer = new PrintWriter(new ConsoleWriter(consoleModel));\r\n        return writer;\r\n    }\r\n\r\n    public void setExceptionOnError(boolean flag)\r\n    {\r\n        exceptionOnError = flag;\r\n    }\r\n\r\n    public boolean getExceptionOnError()\r\n    {\r\n        return exceptionOnError;\r\n    }\r\n\r\n    public void setInputStyle(int i)\r\n    {\r\n        inputStyle = i;\r\n        consoleModel.setInputStyle(i);\r\n    }\r\n\r\n    public int getInputStyle()\r\n    {\r\n        return inputStyle;\r\n    }\r\n\r\n    public void setInputColor(Color color)\r\n    {\r\n        inputColor = color;\r\n        consoleModel.setInputColor(color);\r\n    }\r\n\r\n    public Color getInputColor()\r\n    {\r\n        return inputColor;\r\n    }\r\n\r\n    public void setErrorStyle(int i)\r\n    {\r\n        errorStyle = i;\r\n        consoleModel.setErrorStyle(i);\r\n    }\r\n\r\n    public int getErrorStyle()\r\n    {\r\n        return errorStyle;\r\n    }\r\n\r\n    public void setErrorColor(Color color)\r\n    {\r\n        errorColor = color;\r\n        consoleModel.setErrorColor(color);\r\n    }\r\n\r\n    public Color getErrorColor()\r\n    {\r\n        return errorColor;\r\n    }\r\n\r\n    public void setFont(String s)\r\n    {\r\n        setFont(JTFTools.decodeFont(s, getFont()));\r\n    }\r\n\r\n    public void setInputScript(BufferedReader bufferedreader)\r\n    {\r\n        consoleModel.setInputScript(bufferedreader);\r\n    }\r\n\r\n    public BufferedReader getInputScript()\r\n    {\r\n        return consoleModel.getInputScript();\r\n    }\r\n\r\n    public void cut()\r\n    {\r\n        consoleModel.cut();\r\n    }\r\n\r\n    public void copy()\r\n    {\r\n        consoleModel.copy();\r\n    }\r\n\r\n    public void paste()\r\n    {\r\n        consoleModel.paste();\r\n    }\r\n\r\n    public void selectAll()\r\n    {\r\n        consoleModel.selectAll();\r\n    }\r\n\r\n    public void save()\r\n    {\r\n        FileWriter filewriter = null;\r\n_L2:\r\n        if(filewriter != null)\r\n            break; /* Loop/switch isn't completed */\r\n        java.awt.Frame frame;\r\n        if(file != null)\r\n            break MISSING_BLOCK_LABEL_85;\r\n        frame = JTFTools.getEnclosingFrame(this);\r\n        if(frame == null)\r\n            return;\r\n        FileDialog filedialog;\r\n        String s1;\r\n        String s = System.getProperty(\"user.dir\");\r\n        filedialog = new FileDialog(frame, \"Save Console As\", 1);\r\n        filedialog.setDirectory(s);\r\n        filedialog.setVisible(true);\r\n        s1 = filedialog.getFile();\r\n        if(s1 == null)\r\n            return;\r\n        file = new File(filedialog.getDirectory(), s1);\r\n        filewriter = new FileWriter(file);\r\n        save(((Writer) (filewriter)));\r\n        filewriter.close();\r\n        Platform.setFileTypeAndCreator(file, \"TEXT\", \"ttxt\");\r\n        continue; /* Loop/switch isn't completed */\r\n        IOException ioexception;\r\n        ioexception;\r\n        IODialog iodialog = new IODialog(this);\r\n        iodialog.showErrorMessage(ioexception.getMessage());\r\n        if(true) goto _L2; else goto _L1\r\n_L1:\r\n    }\r\n\r\n    public void saveAs()\r\n    {\r\n        file = null;\r\n        save();\r\n    }\r\n\r\n    public void save(Writer writer1)\r\n    {\r\n        try\r\n        {\r\n            writer1.write(consoleModel.getText());\r\n        }\r\n        catch(IOException ioexception)\r\n        {\r\n            throw new ErrorException(ioexception);\r\n        }\r\n    }\r\n\r\n    public void printConsole()\r\n    {\r\n        java.awt.Frame frame = JTFTools.getEnclosingFrame(this);\r\n        if(frame == null)\r\n            return;\r\n        PrintJob printjob = getToolkit().getPrintJob(frame, \"Console\", null);\r\n        if(printjob == null)\r\n        {\r\n            return;\r\n        } else\r\n        {\r\n            printConsole(printjob);\r\n            printjob.end();\r\n            return;\r\n        }\r\n    }\r\n\r\n    public void printConsole(PrintJob printjob)\r\n    {\r\n        consoleModel.print(printjob);\r\n    }\r\n\r\n    public void script()\r\n    {\r\n        java.awt.Frame frame = JTFTools.getEnclosingFrame(this);\r\n        FileDialog filedialog = new FileDialog(frame, \"Input Script\", 0);\r\n        filedialog.setDirectory(System.getProperty(\"user.dir\"));\r\n        filedialog.setVisible(true);\r\n        String s = filedialog.getDirectory();\r\n        String s1 = filedialog.getFile();\r\n        if(s1 != null)\r\n            try\r\n            {\r\n                FileReader filereader = new FileReader(new File(new File(s), s1));\r\n                setInputScript(new BufferedReader(filereader));\r\n            }\r\n            catch(IOException ioexception)\r\n            {\r\n                throw new ErrorException(ioexception);\r\n            }\r\n    }\r\n\r\n    public void setMenuBar(ProgramMenuBar programmenubar)\r\n    {\r\n        menuBar = programmenubar;\r\n        consoleModel.setMenuBar(programmenubar);\r\n    }\r\n\r\n    public ProgramMenuBar getMenuBar()\r\n    {\r\n        return menuBar;\r\n    }\r\n\r\n    public boolean menuAction(ActionEvent actionevent)\r\n    {\r\n        String s = actionevent.getActionCommand();\r\n        if(s.equals(\"Cut\"))\r\n        {\r\n            cut();\r\n            return true;\r\n        }\r\n        if(s.equals(\"Copy\"))\r\n        {\r\n            copy();\r\n            return true;\r\n        }\r\n        if(s.equals(\"Paste\"))\r\n        {\r\n            paste();\r\n            return true;\r\n        }\r\n        if(s.equals(\"Select All\"))\r\n        {\r\n            selectAll();\r\n            return true;\r\n        }\r\n        if(s.equals(\"Save\"))\r\n        {\r\n            save();\r\n            return true;\r\n        }\r\n        if(s.equals(\"Save As\"))\r\n        {\r\n            saveAs();\r\n            return true;\r\n        }\r\n        if(s.equals(\"Script\"))\r\n        {\r\n            script();\r\n            return true;\r\n        }\r\n        if(s.equals(\"Print Console\"))\r\n        {\r\n            printConsole();\r\n            return true;\r\n        } else\r\n        {\r\n            return false;\r\n        }\r\n    }\r\n\r\n    public boolean isConsoleMenuItem(JMenuItem jmenuitem)\r\n    {\r\n        String s = jmenuitem.getActionCommand();\r\n        if(s == null)\r\n            return false;\r\n        for(int i = 0; i < CONSOLE_MENU_ACTIONS.length; i++)\r\n            if(s.equals(CONSOLE_MENU_ACTIONS[i]))\r\n                return true;\r\n\r\n        return false;\r\n    }\r\n\r\n    public void updateMenuBar(ProgramMenuBar programmenubar)\r\n    {\r\n        for(Iterator iterator = programmenubar.iterator(); iterator.hasNext();)\r\n        {\r\n            JMenuItem jmenuitem = (JMenuItem)iterator.next();\r\n            if(isConsoleMenuItem(jmenuitem))\r\n                jmenuitem.setEnabled(true);\r\n            else\r\n                jmenuitem.setEnabled(!programmenubar.isFocusedItem(jmenuitem));\r\n        }\r\n\r\n    }\r\n\r\n    public void setBackground(Color color)\r\n    {\r\n        Component component = consoleModel.getTextPane();\r\n        if(component != null)\r\n            component.setBackground(color);\r\n        super.setBackground(color);\r\n    }\r\n\r\n    public void setForeground(Color color)\r\n    {\r\n        Component component = consoleModel.getTextPane();\r\n        if(component != null)\r\n            component.setForeground(color);\r\n        super.setForeground(color);\r\n    }\r\n\r\n    public void setFont(Font font)\r\n    {\r\n        font = JTFTools.getStandardFont(font);\r\n        Component component = consoleModel.getTextPane();\r\n        if(component != null)\r\n            component.setFont(font);\r\n        super.setFont(font);\r\n    }\r\n\r\n    public void requestFocus()\r\n    {\r\n        consoleModel.requestFocus();\r\n    }\r\n\r\n    public Dimension getPreferredSize()\r\n    {\r\n        return getMinimumSize();\r\n    }\r\n\r\n    public Dimension getMinimumSize()\r\n    {\r\n        return new Dimension(50, 40);\r\n    }\r\n\r\n    protected ConsoleModel createConsoleModel()\r\n    {\r\n        return new StandardConsoleModel();\r\n    }\r\n\r\n    public static final IOConsole SYSTEM_CONSOLE = new SystemConsole();\r\n    protected static final Font DEFAULT_FONT = new Font(\"Monospaced\", 0, 12);\r\n    protected static final String LINE_SEPARATOR = System.getProperty(\"line.separator\");\r\n    protected static final int MINIMUM_CONSOLE_WIDTH = 50;\r\n    protected static final int MINIMUM_CONSOLE_HEIGHT = 40;\r\n    private static final String CONSOLE_MENU_ACTIONS[] = {\r\n        \"Save\", \"Save As\", \"Print Console\", \"Script\", \"Cut\", \"Copy\", \"Paste\", \"Select All\"\r\n    };\r\n    private ConsoleModel consoleModel;\r\n    private boolean exceptionOnError;\r\n    private Color inputColor;\r\n    private int inputStyle;\r\n    private Color errorColor;\r\n    private int errorStyle;\r\n    private BufferedReader reader;\r\n    private PrintWriter writer;\r\n    private File file;\r\n    private ProgramMenuBar menuBar;\r\n\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/io/IODialog.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   IODialog.java\r\n\r\npackage acm.io;\r\n\r\nimport acm.util.*;\r\nimport java.awt.Component;\r\nimport java.lang.reflect.Constructor;\r\nimport javax.swing.JPanel;\r\n\r\n// Referenced classes of package acm.io:\r\n//            DialogModel, AWTDialogModel, IOModel, IOConsole\r\n\r\npublic class IODialog\r\n    implements IOModel\r\n{\r\n\r\n    public IODialog()\r\n    {\r\n        this(null);\r\n    }\r\n\r\n    public IODialog(Component component)\r\n    {\r\n        myComponent = component;\r\n        model = createModel();\r\n        outputLine = \"\";\r\n        exceptionOnError = false;\r\n        allowCancel = false;\r\n    }\r\n\r\n    public void print(String s)\r\n    {\r\n        new StringBuilder();\r\n        this;\r\n        JVM INSTR dup_x1 ;\r\n        outputLine;\r\n        append();\r\n        s;\r\n        append();\r\n        toString();\r\n        outputLine;\r\n    }\r\n\r\n    public final void print(boolean flag)\r\n    {\r\n        print((new StringBuilder()).append(\"\").append(flag).toString());\r\n    }\r\n\r\n    public final void print(char c)\r\n    {\r\n        print((new StringBuilder()).append(\"\").append(c).toString());\r\n    }\r\n\r\n    public final void print(double d)\r\n    {\r\n        print((new StringBuilder()).append(\"\").append(d).toString());\r\n    }\r\n\r\n    public final void print(float f)\r\n    {\r\n        print((new StringBuilder()).append(\"\").append(f).toString());\r\n    }\r\n\r\n    public final void print(int i)\r\n    {\r\n        print((new StringBuilder()).append(\"\").append(i).toString());\r\n    }\r\n\r\n    public final void print(long l)\r\n    {\r\n        print((new StringBuilder()).append(\"\").append(l).toString());\r\n    }\r\n\r\n    public final void print(Object obj)\r\n    {\r\n        print((new StringBuilder()).append(\"\").append(obj).toString());\r\n    }\r\n\r\n    public void println()\r\n    {\r\n        model.popupMessage(outputLine);\r\n        outputLine = \"\";\r\n    }\r\n\r\n    public void println(String s)\r\n    {\r\n        print(s);\r\n        println();\r\n    }\r\n\r\n    public final void println(boolean flag)\r\n    {\r\n        println((new StringBuilder()).append(\"\").append(flag).toString());\r\n    }\r\n\r\n    public final void println(char c)\r\n    {\r\n        println((new StringBuilder()).append(\"\").append(c).toString());\r\n    }\r\n\r\n    public final void println(double d)\r\n    {\r\n        println((new StringBuilder()).append(\"\").append(d).toString());\r\n    }\r\n\r\n    public final void println(float f)\r\n    {\r\n        println((new StringBuilder()).append(\"\").append(f).toString());\r\n    }\r\n\r\n    public final void println(int i)\r\n    {\r\n        println((new StringBuilder()).append(\"\").append(i).toString());\r\n    }\r\n\r\n    public final void println(long l)\r\n    {\r\n        println((new StringBuilder()).append(\"\").append(l).toString());\r\n    }\r\n\r\n    public final void println(Object obj)\r\n    {\r\n        println((new StringBuilder()).append(\"\").append(obj).toString());\r\n    }\r\n\r\n    public void showErrorMessage(String s)\r\n    {\r\n        model.popupErrorMessage(s);\r\n    }\r\n\r\n    public final String readLine()\r\n    {\r\n        return readLine(null);\r\n    }\r\n\r\n    public String readLine(String s)\r\n    {\r\n        if(myConsole != null && myConsole.getInputScript() != null)\r\n            return myConsole.readLine(s);\r\n        s = s != null ? (new StringBuilder()).append(outputLine).append(s).toString() : outputLine;\r\n        outputLine = \"\";\r\n        String s1;\r\n        while((s1 = model.popupLineInputDialog(s, allowCancel)) == null) \r\n            if(allowCancel)\r\n                throw new CancelledException();\r\n        return s1;\r\n    }\r\n\r\n    public final int readInt()\r\n    {\r\n        return readInt(null, 0x80000000, 0x7fffffff);\r\n    }\r\n\r\n    public final int readInt(int i, int j)\r\n    {\r\n        return readInt(null, i, j);\r\n    }\r\n\r\n    public final int readInt(String s)\r\n    {\r\n        return readInt(s, 0x80000000, 0x7fffffff);\r\n    }\r\n\r\n    public int readInt(String s, int i, int j)\r\n    {\r\n_L2:\r\n        String s1 = readLine(s);\r\n        int k;\r\n        k = Integer.parseInt(s1);\r\n        if(k < i || k > j)\r\n            signalError((new StringBuilder()).append(\"Value is outside the range [\").append(i).append(\":\").append(j).append(\"]\").toString());\r\n        return k;\r\n        NumberFormatException numberformatexception;\r\n        numberformatexception;\r\n        signalError(\"Illegal integer format\");\r\n        if(true) goto _L2; else goto _L1\r\n_L1:\r\n    }\r\n\r\n    public final double readDouble()\r\n    {\r\n        return readDouble(null, (-1.0D / 0.0D), (1.0D / 0.0D));\r\n    }\r\n\r\n    public final double readDouble(double d, double d1)\r\n    {\r\n        return readDouble(null, d, d1);\r\n    }\r\n\r\n    public final double readDouble(String s)\r\n    {\r\n        return readDouble(s, (-1.0D / 0.0D), (1.0D / 0.0D));\r\n    }\r\n\r\n    public double readDouble(String s, double d, double d1)\r\n    {\r\n_L2:\r\n        String s1 = readLine(s);\r\n        double d2;\r\n        d2 = Double.valueOf(s1).doubleValue();\r\n        if(d2 < d || d2 > d1)\r\n            signalError((new StringBuilder()).append(\"Value is outside the range [\").append(d).append(\":\").append(d1).append(\"]\").toString());\r\n        return d2;\r\n        NumberFormatException numberformatexception;\r\n        numberformatexception;\r\n        signalError(\"Illegal numeric format\");\r\n        if(true) goto _L2; else goto _L1\r\n_L1:\r\n    }\r\n\r\n    public final boolean readBoolean()\r\n    {\r\n        return readBoolean(null);\r\n    }\r\n\r\n    public final boolean readBoolean(String s)\r\n    {\r\n        return readBoolean(s, \"true\", \"false\");\r\n    }\r\n\r\n    public boolean readBoolean(String s, String s1, String s2)\r\n    {\r\n        if(myConsole != null && myConsole.getInputScript() != null)\r\n            return myConsole.readBoolean(s, s1, s2);\r\n        s = s != null ? (new StringBuilder()).append(outputLine).append(s).toString() : outputLine;\r\n        outputLine = \"\";\r\n        Boolean boolean1;\r\n        while((boolean1 = model.popupBooleanInputDialog(s, s1, s2, allowCancel)) == null) \r\n            if(allowCancel)\r\n                throw new CancelledException();\r\n        return boolean1.booleanValue();\r\n    }\r\n\r\n    public void setExceptionOnError(boolean flag)\r\n    {\r\n        exceptionOnError = flag;\r\n    }\r\n\r\n    public boolean getExceptionOnError()\r\n    {\r\n        return exceptionOnError;\r\n    }\r\n\r\n    public void setAllowCancel(boolean flag)\r\n    {\r\n        allowCancel = flag;\r\n    }\r\n\r\n    public boolean getAllowCancel()\r\n    {\r\n        return allowCancel;\r\n    }\r\n\r\n    public void setAssociatedConsole(IOConsole ioconsole)\r\n    {\r\n        myConsole = ioconsole;\r\n    }\r\n\r\n    public IOConsole getAssociatedConsole()\r\n    {\r\n        return myConsole;\r\n    }\r\n\r\n    protected DialogModel createModel()\r\n    {\r\n        String s = (new JPanel()).getClass().getName();\r\n        if(!s.startsWith(\"javax.swing.\") || !Platform.isSwingAvailable())\r\n            break MISSING_BLOCK_LABEL_92;\r\n        Object aobj[];\r\n        Constructor constructor;\r\n        Class class1 = Class.forName(\"acm.io.SwingDialogModel\");\r\n        Class aclass[] = {\r\n            Class.forName(\"java.awt.Component\")\r\n        };\r\n        aobj = (new Object[] {\r\n            myComponent\r\n        });\r\n        constructor = class1.getConstructor(aclass);\r\n        return (DialogModel)constructor.newInstance(aobj);\r\n        Exception exception;\r\n        exception;\r\n        return new AWTDialogModel(myComponent);\r\n        return new AWTDialogModel(myComponent);\r\n    }\r\n\r\n    private void signalError(String s)\r\n    {\r\n        if(exceptionOnError)\r\n        {\r\n            throw new ErrorException(s);\r\n        } else\r\n        {\r\n            model.popupErrorMessage(s);\r\n            return;\r\n        }\r\n    }\r\n\r\n    private boolean exceptionOnError;\r\n    private boolean allowCancel;\r\n    private DialogModel model;\r\n    private Component myComponent;\r\n    private IOConsole myConsole;\r\n    private String outputLine;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/io/IOModel.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   IOModel.java\r\n\r\npackage acm.io;\r\n\r\n\r\npublic interface IOModel\r\n{\r\n\r\n    public abstract void print(String s);\r\n\r\n    public abstract void print(boolean flag);\r\n\r\n    public abstract void print(char c);\r\n\r\n    public abstract void print(double d);\r\n\r\n    public abstract void print(float f);\r\n\r\n    public abstract void print(int i);\r\n\r\n    public abstract void print(long l);\r\n\r\n    public abstract void print(Object obj);\r\n\r\n    public abstract void println();\r\n\r\n    public abstract void println(String s);\r\n\r\n    public abstract void println(boolean flag);\r\n\r\n    public abstract void println(char c);\r\n\r\n    public abstract void println(double d);\r\n\r\n    public abstract void println(float f);\r\n\r\n    public abstract void println(int i);\r\n\r\n    public abstract void println(long l);\r\n\r\n    public abstract void println(Object obj);\r\n\r\n    public abstract void showErrorMessage(String s);\r\n\r\n    public abstract String readLine();\r\n\r\n    public abstract String readLine(String s);\r\n\r\n    public abstract int readInt();\r\n\r\n    public abstract int readInt(int i, int j);\r\n\r\n    public abstract int readInt(String s);\r\n\r\n    public abstract int readInt(String s, int i, int j);\r\n\r\n    public abstract double readDouble();\r\n\r\n    public abstract double readDouble(double d, double d1);\r\n\r\n    public abstract double readDouble(String s);\r\n\r\n    public abstract double readDouble(String s, double d, double d1);\r\n\r\n    public abstract boolean readBoolean();\r\n\r\n    public abstract boolean readBoolean(String s);\r\n\r\n    public abstract boolean readBoolean(String s, String s1, String s2);\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/io/StandardConsoleModel.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   IOConsole.java\r\n\r\npackage acm.io;\r\n\r\nimport acm.program.ProgramMenuBar;\r\nimport acm.util.ErrorException;\r\nimport java.awt.*;\r\nimport java.awt.event.*;\r\nimport java.io.BufferedReader;\r\nimport java.io.IOException;\r\nimport javax.swing.JScrollPane;\r\nimport javax.swing.JTextPane;\r\nimport javax.swing.text.*;\r\n\r\n// Referenced classes of package acm.io:\r\n//            ConsoleOutputMonitor, ConsoleInputMonitor, CharacterQueue, ConsoleActionListener, \r\n//            ConsoleModel, IOConsole\r\n\r\nclass StandardConsoleModel\r\n    implements KeyListener, FocusListener, ConsoleModel\r\n{\r\n\r\n    public StandardConsoleModel()\r\n    {\r\n        outputMonitor = new ConsoleOutputMonitor(this);\r\n        inputMonitor = new ConsoleInputMonitor(this);\r\n        scrollPane = new JScrollPane(22, 32);\r\n        textPane = new JTextPane();\r\n        textPane.addKeyListener(this);\r\n        textPane.addFocusListener(this);\r\n        scrollPane.setViewportView(textPane);\r\n        document = textPane.getDocument();\r\n        lineSeparator = System.getProperty(\"line.separator\");\r\n        outputAttributes = new SimpleAttributeSet();\r\n        inputAttributes = new SimpleAttributeSet();\r\n        errorAttributes = new SimpleAttributeSet();\r\n        buffer = new CharacterQueue();\r\n        base = 0;\r\n    }\r\n\r\n    public void setConsole(IOConsole ioconsole)\r\n    {\r\n        console = ioconsole;\r\n    }\r\n\r\n    public IOConsole getConsole()\r\n    {\r\n        return console;\r\n    }\r\n\r\n    public void print(String s, int i)\r\n    {\r\n        outputMonitor.print(s, i);\r\n    }\r\n\r\n    public String readLine()\r\n    {\r\n        return inputMonitor.readLine();\r\n    }\r\n\r\n    public void setInputScript(BufferedReader bufferedreader)\r\n    {\r\n        inputScript = bufferedreader;\r\n        if(buffer.isWaiting())\r\n            try\r\n            {\r\n                String s = inputScript.readLine();\r\n                buffer.enqueue((new StringBuilder()).append(s).append(\"\\n\").toString());\r\n            }\r\n            catch(IOException ioexception)\r\n            {\r\n                throw new ErrorException(ioexception);\r\n            }\r\n    }\r\n\r\n    public BufferedReader getInputScript()\r\n    {\r\n        return inputScript;\r\n    }\r\n\r\n    public void clear()\r\n    {\r\n        textPane.setText(\"\");\r\n        base = 0;\r\n        buffer.clear();\r\n    }\r\n\r\n    public String getText()\r\n    {\r\n        return textPane.getText();\r\n    }\r\n\r\n    public String getText(int i, int j)\r\n    {\r\n        return document.getText(i, j - i);\r\n        BadLocationException badlocationexception;\r\n        badlocationexception;\r\n        throw new ErrorException(badlocationexception);\r\n    }\r\n\r\n    public int getLength()\r\n    {\r\n        return document.getLength();\r\n    }\r\n\r\n    public Component getConsolePane()\r\n    {\r\n        return scrollPane;\r\n    }\r\n\r\n    public Component getTextPane()\r\n    {\r\n        return textPane;\r\n    }\r\n\r\n    public void cut()\r\n    {\r\n        copy();\r\n        deleteSelection();\r\n    }\r\n\r\n    public void copy()\r\n    {\r\n        textPane.copy();\r\n    }\r\n\r\n    public void paste()\r\n    {\r\n        if(textPane.getSelectionEnd() != document.getLength())\r\n            return;\r\n        int i = deleteSelection();\r\n        textPane.setSelectionStart(i);\r\n        textPane.paste();\r\n        textPane.select(document.getLength(), document.getLength());\r\n        if(document instanceof DefaultStyledDocument)\r\n        {\r\n            DefaultStyledDocument defaultstyleddocument = (DefaultStyledDocument)document;\r\n            defaultstyleddocument.setCharacterAttributes(i, textPane.getSelectionEnd() - i, inputAttributes, true);\r\n        }\r\n    }\r\n\r\n    public void selectAll()\r\n    {\r\n        textPane.selectAll();\r\n    }\r\n\r\n    public boolean isPointSelection()\r\n    {\r\n        return textPane.getSelectionStart() == textPane.getSelectionEnd();\r\n    }\r\n\r\n    public void print(PrintJob printjob)\r\n    {\r\n        Graphics g = printjob.getGraphics();\r\n        Dimension dimension = printjob.getPageDimension();\r\n        FontMetrics fontmetrics = textPane.getFontMetrics(textPane.getFont());\r\n        int i = fontmetrics.getHeight();\r\n        int j = fontmetrics.getAscent();\r\n        int k = 36;\r\n        int l = 36 + j;\r\n        int i1 = (dimension.height - 72) / i;\r\n        int j1 = i1;\r\n        ElementIterator elementiterator = new ElementIterator(document);\r\n        do\r\n        {\r\nlabel0:\r\n            {\r\n                Element element;\r\n                do\r\n                {\r\n                    element = elementiterator.next();\r\n                    if(element == null)\r\n                        break label0;\r\n                } while(!element.isLeaf());\r\n                try\r\n                {\r\n                    int k1 = element.getEndOffset() - element.getStartOffset();\r\n                    setStyleFromAttributes(g, element.getAttributes());\r\n                    FontMetrics fontmetrics1 = g.getFontMetrics();\r\n                    String s = document.getText(element.getStartOffset(), k1);\r\n                    int l1 = 0;\r\n                    do\r\n                    {\r\n                        boolean flag = false;\r\n                        int i2 = 1;\r\n                        int j2 = s.indexOf(\"\\n\", l1);\r\n                        if(j2 == -1)\r\n                        {\r\n                            j2 = s.indexOf(lineSeparator, l1);\r\n                            if(j2 == -1)\r\n                            {\r\n                                j2 = s.length();\r\n                                flag = true;\r\n                            } else\r\n                            {\r\n                                i2 = lineSeparator.length();\r\n                            }\r\n                        }\r\n                        if(l1 < j2)\r\n                        {\r\n                            String s1 = s.substring(l1, j2);\r\n                            g.drawString(s1, k, l);\r\n                            k += fontmetrics1.stringWidth(s1);\r\n                        }\r\n                        if(flag)\r\n                            break;\r\n                        l1 = j2 + i2;\r\n                        k = 36;\r\n                        l += i;\r\n                        if(--j1 <= 0)\r\n                        {\r\n                            g.dispose();\r\n                            g = printjob.getGraphics();\r\n                            l = 36 + j;\r\n                            j1 = i1;\r\n                        }\r\n                    } while(true);\r\n                }\r\n                catch(BadLocationException badlocationexception)\r\n                {\r\n                    throw new ErrorException(badlocationexception);\r\n                }\r\n            }\r\n        } while(true);\r\n        printjob.end();\r\n        return;\r\n    }\r\n\r\n    public void setInputStyle(int i)\r\n    {\r\n        if(getLength() != 0)\r\n        {\r\n            throw new ErrorException(\"Console styles and colors cannot be changed after I/O has started.\");\r\n        } else\r\n        {\r\n            inputAttributes.addAttribute(StyleConstants.Bold, new Boolean((i & 1) != 0));\r\n            inputAttributes.addAttribute(StyleConstants.Italic, new Boolean((i & 2) != 0));\r\n            return;\r\n        }\r\n    }\r\n\r\n    public void setInputColor(Color color)\r\n    {\r\n        if(getLength() != 0)\r\n        {\r\n            throw new ErrorException(\"Console styles and colors cannot be changed after I/O has started.\");\r\n        } else\r\n        {\r\n            inputAttributes.addAttribute(StyleConstants.Foreground, color);\r\n            return;\r\n        }\r\n    }\r\n\r\n    public void setErrorStyle(int i)\r\n    {\r\n        if(getLength() != 0)\r\n        {\r\n            throw new ErrorException(\"Console styles and colors cannot be changed after I/O has started.\");\r\n        } else\r\n        {\r\n            errorAttributes.addAttribute(StyleConstants.Bold, new Boolean((i & 1) != 0));\r\n            errorAttributes.addAttribute(StyleConstants.Italic, new Boolean((i & 2) != 0));\r\n            return;\r\n        }\r\n    }\r\n\r\n    public void setErrorColor(Color color)\r\n    {\r\n        if(getLength() != 0)\r\n        {\r\n            throw new ErrorException(\"Console styles and colors cannot be changed after I/O has started.\");\r\n        } else\r\n        {\r\n            errorAttributes.addAttribute(StyleConstants.Foreground, color);\r\n            return;\r\n        }\r\n    }\r\n\r\n    public void requestFocus()\r\n    {\r\n        if(textPane != null)\r\n            textPane.requestFocus();\r\n    }\r\n\r\n    public void setMenuBar(ProgramMenuBar programmenubar)\r\n    {\r\n        menuBar = programmenubar;\r\n    }\r\n\r\n    public void focusGained(FocusEvent focusevent)\r\n    {\r\n        hasFocus = true;\r\n        if(menuBar != null)\r\n        {\r\n            if(actionListener == null)\r\n                actionListener = new ConsoleActionListener(console);\r\n            menuBar.setFocusedListener(actionListener);\r\n            console.updateMenuBar(menuBar);\r\n        }\r\n    }\r\n\r\n    public void focusLost(FocusEvent focusevent)\r\n    {\r\n        hasFocus = false;\r\n        if(menuBar != null)\r\n            menuBar.setFocusedListener(null);\r\n    }\r\n\r\n    public void keyTyped(KeyEvent keyevent)\r\n    {\r\n        if(!keyevent.isMetaDown() && !keyevent.isControlDown())\r\n        {\r\n            buffer.enqueue(keyevent.getKeyChar());\r\n            keyevent.consume();\r\n        }\r\n    }\r\n\r\n    public void keyPressed(KeyEvent keyevent)\r\n    {\r\n        switch(keyevent.getKeyCode())\r\n        {\r\n        case 37: // '%'\r\n            buffer.enqueue('\\002');\r\n            break;\r\n\r\n        case 39: // '\\''\r\n            buffer.enqueue('\\006');\r\n            break;\r\n        }\r\n        if(menuBar != null)\r\n            menuBar.fireAccelerator(keyevent);\r\n        keyevent.consume();\r\n    }\r\n\r\n    public void keyReleased(KeyEvent keyevent)\r\n    {\r\n        keyevent.consume();\r\n    }\r\n\r\n    protected void printCallback(String s, int i)\r\n    {\r\n        insert(s, base, i);\r\n        base += s.length();\r\n        setCaretPosition(base);\r\n    }\r\n\r\n    protected String readLineCallback()\r\n    {\r\n        base = getLength();\r\n        if(inputScript != null)\r\n        {\r\n            String s = null;\r\n            try\r\n            {\r\n                s = inputScript.readLine();\r\n            }\r\n            catch(IOException ioexception)\r\n            {\r\n                throw new ErrorException(ioexception);\r\n            }\r\n            if(s != null)\r\n            {\r\n                insert(s, base, 1);\r\n                insert(\"\\n\", base + s.length(), 0);\r\n                base += s.length() + 1;\r\n                return s;\r\n            }\r\n            try\r\n            {\r\n                inputScript.close();\r\n            }\r\n            catch(IOException ioexception1) { }\r\n            inputScript = null;\r\n        }\r\n        setCaretPosition(base);\r\n        do\r\n        {\r\n            char c;\r\n            if((c = buffer.dequeue()) == '\\n' || c == '\\r')\r\n                break;\r\n            if(getCaretPosition() < base)\r\n                setCaretPosition(getLength());\r\n            int i = getSelectionStart();\r\n            switch(c)\r\n            {\r\n            case 8: // '\\b'\r\n            case 127: // '\\177'\r\n                if(i == getSelectionEnd())\r\n                {\r\n                    if(i > base)\r\n                    {\r\n                        delete(i - 1, i);\r\n                        i--;\r\n                    }\r\n                } else\r\n                {\r\n                    i = deleteSelection();\r\n                }\r\n                break;\r\n\r\n            case 1: // '\\001'\r\n                selectAll();\r\n                i = -1;\r\n                break;\r\n\r\n            case 2: // '\\002'\r\n                i = Math.max(getSelectionStart() - 1, base);\r\n                break;\r\n\r\n            case 3: // '\\003'\r\n                copy();\r\n                i = -1;\r\n                break;\r\n\r\n            case 6: // '\\006'\r\n                i = Math.min(getSelectionEnd() + 1, getLength());\r\n                break;\r\n\r\n            case 16: // '\\020'\r\n                console.printConsole();\r\n                i = -1;\r\n                break;\r\n\r\n            case 19: // '\\023'\r\n                console.save();\r\n                i = -1;\r\n                break;\r\n\r\n            case 22: // '\\026'\r\n                paste();\r\n                i = -1;\r\n                break;\r\n\r\n            case 24: // '\\030'\r\n                cut();\r\n                i = -1;\r\n                break;\r\n\r\n            default:\r\n                if(i != getSelectionEnd())\r\n                    i = deleteSelection();\r\n                insert((new StringBuilder()).append(\"\").append(c).toString(), i, 1);\r\n                i++;\r\n                break;\r\n            }\r\n            if(i != -1)\r\n            {\r\n                select(i, i);\r\n                setCaretPosition(i);\r\n            }\r\n        } while(true);\r\n        int j = getLength() - base;\r\n        String s1 = getText(base, base + j);\r\n        insert(\"\\n\", base + j, 0);\r\n        base += j + 1;\r\n        return s1;\r\n    }\r\n\r\n    public boolean isCommandEnabled(String s)\r\n    {\r\n        return hasFocus;\r\n    }\r\n\r\n    private void insert(String s, int i, int j)\r\n    {\r\n        try\r\n        {\r\n            SimpleAttributeSet simpleattributeset = outputAttributes;\r\n            switch(j)\r\n            {\r\n            case 1: // '\\001'\r\n                simpleattributeset = inputAttributes;\r\n                break;\r\n\r\n            case 2: // '\\002'\r\n                simpleattributeset = errorAttributes;\r\n                break;\r\n            }\r\n            document.insertString(i, s, simpleattributeset);\r\n        }\r\n        catch(BadLocationException badlocationexception) { }\r\n    }\r\n\r\n    private void delete(int i, int j)\r\n    {\r\n        try\r\n        {\r\n            document.remove(i, j - i);\r\n        }\r\n        catch(BadLocationException badlocationexception)\r\n        {\r\n            throw new ErrorException(badlocationexception);\r\n        }\r\n    }\r\n\r\n    private void setCaretPosition(int i)\r\n    {\r\n        textPane.setCaretPosition(i);\r\n    }\r\n\r\n    private int getCaretPosition()\r\n    {\r\n        return textPane.getCaretPosition();\r\n    }\r\n\r\n    private void select(int i, int j)\r\n    {\r\n        textPane.select(i, j);\r\n    }\r\n\r\n    private int getSelectionStart()\r\n    {\r\n        return textPane.getSelectionStart();\r\n    }\r\n\r\n    private int getSelectionEnd()\r\n    {\r\n        return textPane.getSelectionEnd();\r\n    }\r\n\r\n    private int deleteSelection()\r\n    {\r\n        int i = Math.max(base, getSelectionStart());\r\n        int j = getSelectionEnd();\r\n        if(j <= base)\r\n        {\r\n            return getLength();\r\n        } else\r\n        {\r\n            delete(i, j);\r\n            return i;\r\n        }\r\n    }\r\n\r\n    private void setStyleFromAttributes(Graphics g, AttributeSet attributeset)\r\n    {\r\n        Font font = textPane.getFont();\r\n        int i = 0;\r\n        if(Boolean.TRUE.equals(attributeset.getAttribute(StyleConstants.Bold)))\r\n            i |= 1;\r\n        if(Boolean.TRUE.equals(attributeset.getAttribute(StyleConstants.Italic)))\r\n            i |= 2;\r\n        g.setFont(new Font(font.getName(), i, font.getSize()));\r\n        Color color = (Color)attributeset.getAttribute(StyleConstants.Foreground);\r\n        if(color == null)\r\n            color = textPane.getForeground();\r\n        g.setColor(color);\r\n    }\r\n\r\n    private static final int PRINT_MARGIN = 36;\r\n    private ActionListener actionListener;\r\n    private ConsoleOutputMonitor outputMonitor;\r\n    private ConsoleInputMonitor inputMonitor;\r\n    private BufferedReader inputScript;\r\n    private CharacterQueue buffer;\r\n    private SimpleAttributeSet outputAttributes;\r\n    private SimpleAttributeSet inputAttributes;\r\n    private SimpleAttributeSet errorAttributes;\r\n    private JScrollPane scrollPane;\r\n    private JTextPane textPane;\r\n    private Document document;\r\n    private String lineSeparator;\r\n    private int base;\r\n    private boolean hasFocus;\r\n    private IOConsole console;\r\n    private ProgramMenuBar menuBar;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/io/SwingDialogModel.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   IODialog.java\r\n\r\npackage acm.io;\r\n\r\nimport acm.util.MediaTools;\r\nimport java.awt.Component;\r\nimport javax.swing.*;\r\n\r\n// Referenced classes of package acm.io:\r\n//            DialogModel\r\n\r\nclass SwingDialogModel\r\n    implements DialogModel\r\n{\r\n\r\n    public SwingDialogModel(Component component)\r\n    {\r\n        myComponent = component;\r\n        if(!iconTested)\r\n        {\r\n            String s = UIManager.getLookAndFeel().toString();\r\n            if(s.indexOf(\"AquaLookAndFeel\") == -1)\r\n                inputIcon = null;\r\n            else\r\n                inputIcon = new ImageIcon(MediaTools.createImage(AQUA_QUESTION_IMAGE));\r\n            iconTested = true;\r\n        }\r\n    }\r\n\r\n    public void popupMessage(String s)\r\n    {\r\n        JOptionPane.showMessageDialog(myComponent, s);\r\n    }\r\n\r\n    public void popupErrorMessage(String s)\r\n    {\r\n        JOptionPane.showMessageDialog(myComponent, s, \"Error\", 0);\r\n    }\r\n\r\n    public String popupLineInputDialog(String s, boolean flag)\r\n    {\r\n        JOptionPane joptionpane;\r\n        if(flag)\r\n        {\r\n            joptionpane = new JOptionPane(s, 3, 2, inputIcon);\r\n            joptionpane.setWantsInput(true);\r\n        } else\r\n        {\r\n            Object aobj[] = {\r\n                \"OK\"\r\n            };\r\n            joptionpane = new JOptionPane(s, 3, 2, inputIcon, aobj, aobj[0]);\r\n            joptionpane.setWantsInput(true);\r\n            joptionpane.setInputValue(\"\");\r\n        }\r\n        JDialog jdialog = joptionpane.createDialog(myComponent, \"Input\");\r\n        jdialog.setVisible(true);\r\n        Object obj = joptionpane.getInputValue();\r\n        if(obj == JOptionPane.UNINITIALIZED_VALUE)\r\n            return null;\r\n        else\r\n            return (String)obj;\r\n    }\r\n\r\n    public Boolean popupBooleanInputDialog(String s, String s1, String s2, boolean flag)\r\n    {\r\n        Object aobj[];\r\n        if(flag)\r\n        {\r\n            aobj = new Object[3];\r\n            aobj[2] = \"Cancel\";\r\n        } else\r\n        {\r\n            aobj = new Object[2];\r\n        }\r\n        aobj[0] = s1;\r\n        aobj[1] = s2;\r\n        String s3 = (new StringBuilder()).append(s1).append(\"/\").append(s2).append(\" question\").toString();\r\n        int i = JOptionPane.showOptionDialog(myComponent, s, s3, -1, 3, inputIcon, aobj, aobj[0]);\r\n        switch(i)\r\n        {\r\n        case 0: // '\\0'\r\n            return Boolean.TRUE;\r\n\r\n        case 1: // '\\001'\r\n            return Boolean.FALSE;\r\n        }\r\n        return null;\r\n    }\r\n\r\n    private static final String AQUA_QUESTION_IMAGE[] = {\r\n        \"4749463839613D003D00E60000FFFFFFE5E5E5FFCBFF8C8C8CA7A7A7ADADAD8D8D8D929292818181\", \"8585856F6F6F7373738888888B8B8B9A9A9A9D9D9D616161646464757575787878C2C2C295959597\", \"97976666666868687E7E7E808080565656575757E6E6E6E7E7E79F9F9FA0A0A05E5E5E5F5F5F6B6B\", \"6B6C6C6C6D6D6D6E6E6E7979797A7A7A7C7C7C7D7D7D5A5A5A5B5B5B5C5C5C5D5D5DE1E1E1E2E2E2\", \"E3E3E3E4E4E4AEAEAEAFAFAFB0B0B0B1B1B1E8E8E8E9E9E9EAEAEAEBEBEBECECECEDEDEDEEEEEEEF\", \"EFEFB2B2B2B3B3B3B4B4B4B5B5B5B6B6B6B7B7B7B8B8B8B9B9B9BABABABBBBBBBCBCBCBDBDBDBEBE\", \"BEBFBFBFC0C0C0C1C1C1F0F0F0F1F1F1F2F2F2F3F3F3F4F4F4F5F5F5F6F6F6F7F7F7F8F8F8F9F9F9\", \"FAFAFAFBFBFBFCFCFCFDFDFDFEFEFED1D1D1D2D2D2D3D3D3D4D4D4D5D5D5D6D6D6D7D7D7D8D8D8D9\", \"D9D9DADADADBDBDBDCDCDCDDDDDDDEDEDEDFDFDFE0E0E0C9C9C9CACACACBCBCBCCCCCCCDCDCDCECE\", \"CECFCFCFD0D0D0C5C5C5C6C6C6C7C7C7C8C8C8C3C3C3C4C4C4000000ED0000ED0000ED000021F904\", \r\n        \"01000002002C000000003D003D004607FF800282838485868788898A8B863E1D6B53009293949596\", \"97925C1E6B8C853A3098A10825A1672DA72D6EA195566A863C655BB2B3B4B5B6B7B235A7273CB8BE\", \"B23B6D833D676256C7C8C9CACBC91A171ACCD1D25176378D1D5F446852DCDDDEDFDD0D21E3E303E0\", \"E7DE3D4B7B6B3B9D853C376D60784C4334457166393EFDFEFF007DBCA120E78C0C1D3EDE295C08CF\", \"8399396474309C28286180356B3AE0E011E50A972E5AA83CD18103869A36387A5044A4234D965597\", \"A2E80171E0C003253C6056D2C146118F345D820A1D4A746804542DD4142582CA41D1A742A3701A94\", \"234C96AB58B36ADDAAD5CB29025CC38AED41266145187AD85059CBB6ADDBB754FFF628E060620FDC\", \"BB709B8C91A828D89C2442D640194CB8B0E1C3880BEFB803C40E190F665726F2D183C70E1D9873E4\", \"B8C1A64E131B667888268343B2E9D3A853ABEEA4E3469A363E74AECAE2010D8C1CA86FA0A122BBF7\", \"2A193DDFE93073C537003C103298A1E466042A03BE63C448D40106D4EB68901A783A031583EB45B1\", \r\n        \"94F154A6CAAF5F2F947CB97523C4A906E76FADB126E891D8FB628F9C4A3005FF7D2C60F0E5C11D57\", \"1468E081082688A0062D68A0E083105E71061A7CE910C31E6D54A1E1861C76E8E1872086E8A11365\", \"9446480E6CEC81C7142CB6E8E28B2F1A20C28C330E00E38D30DE3004181D28E21A1E407C11C59044\", \"1669E4901494B001FF094E1CE92491391881041831F0F50E0E318C71871133EC11C313608629E698\", \"6486D9C31840D4D0C41C6B7860256A385487461872DC410113491C7184117C1651001C3D042AA818\", \"55AE865A0E01988147113FB431460086462A000EB8496AE9A589E890830731BCC0C6A76CB4014300\", \"37BC8929213D04A0860C4F70E1DB1528B25169A439ACF14271C6ADB2031A32A0D6031B38E49AEB15\", \"6D52D4411A5808ABAC2439A8616A223BB864DC0D158880810A291C750A0A4DF896C30B8BE8B0466C\", \"BE7911820597DC60022A09F886067D8DA47105784551E182016028F5940AA87C40EF503298588819\", \"56FC4B540748B570465148B06BB0506DC05BDF0D5C546CF1FFC5185F0C042A1564CCC501A8D4E1F1\", \r\n        \"C8158F37880E61C4A7B22D069CB280142BD312000C83ECA0861638E7ACF3CE3CF7AC4510A7480085\", \"CF44E73CC519837460867F4C5FE5850B2D80D0B458557CC1570E7360A1F5D65C77ED75D7206BF0F5\", \"D8646321C31966DD00870711B67D20830EBAEDB61B6DF0E5035AD2E4BD0C011710A0F7DFADD4F1A6\", \"07615020E2E18827CE610C4ED45D480E621CD1038E94B738060B34B63046E59517FE426484783086\", \"1160708EE304E48C7382E930F64004DDCF0EC2430C720C71C693B8CBC102392B7881BB933C30D1C4\", \"3EA023A25B1E41D8C1D1EFCC371F451B362CF145A10BC1F005053FE8D14199DC773FE6183F1CF1C6\", \"82BBC52BA443076AD4A14711F880814340F0C3FF850D3628E1C61830087C9A0FF1BC30861C7B6082\", \"118050001A0C01097BB0031EF6D0384139F00B6638884A3045120FC8A00D6A288318C0E0853A7810\", \"804220420744239A479D8A213C08C018ECD0981CEC8034279C486BD4400726FC600E908A21457C90\", \"0318C880073A0C222102010021FF0B4D414347436F6E2004031039000000015772697474656E2062\", \r\n        \"7920474946436F6E76657274657220322E342E33206F66204D6F6E6461792C204D61792032352C20\", \"31393938003B\"\r\n    };\r\n    private static boolean iconTested;\r\n    private static Icon inputIcon;\r\n    private Component myComponent;\r\n\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/io/SystemConsole.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   IOConsole.java\r\n\r\npackage acm.io;\r\n\r\n\r\n// Referenced classes of package acm.io:\r\n//            IOConsole, SystemConsoleModel, ConsoleModel\r\n\r\nclass SystemConsole extends IOConsole\r\n{\r\n\r\n    SystemConsole()\r\n    {\r\n    }\r\n\r\n    protected ConsoleModel createConsoleModel()\r\n    {\r\n        return new SystemConsoleModel();\r\n    }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/io/SystemConsoleModel.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   IOConsole.java\r\n\r\npackage acm.io;\r\n\r\nimport acm.program.ProgramMenuBar;\r\nimport java.awt.*;\r\nimport java.io.*;\r\n\r\n// Referenced classes of package acm.io:\r\n//            ConsoleModel, IOConsole\r\n\r\nclass SystemConsoleModel\r\n    implements ConsoleModel\r\n{\r\n\r\n    public SystemConsoleModel()\r\n    {\r\n        text = \"\";\r\n    }\r\n\r\n    public void setConsole(IOConsole ioconsole)\r\n    {\r\n        console = ioconsole;\r\n    }\r\n\r\n    public IOConsole getConsole()\r\n    {\r\n        return console;\r\n    }\r\n\r\n    public void clear()\r\n    {\r\n    }\r\n\r\n    public void print(String s, int i)\r\n    {\r\n        System.out.print(s);\r\n        new StringBuilder();\r\n        this;\r\n        JVM INSTR dup_x1 ;\r\n        text;\r\n        append();\r\n        s;\r\n        append();\r\n        toString();\r\n        text;\r\n    }\r\n\r\n    public String readLine()\r\n    {\r\n        System.out.flush();\r\n        String s = \"\";\r\n        do\r\n        {\r\n            try\r\n            {\r\n                int i;\r\n                if(inputScript == null)\r\n                    i = System.in.read();\r\n                else\r\n                    i = inputScript.read();\r\n                if(i == -1 && s.length() == 0)\r\n                {\r\n                    try\r\n                    {\r\n                        if(inputScript != null)\r\n                            inputScript.close();\r\n                    }\r\n                    catch(IOException ioexception) { }\r\n                    inputScript = null;\r\n                    continue;\r\n                }\r\n                if(i == -1 || i == 10)\r\n                    break;\r\n                s = (new StringBuilder()).append(s).append((char)i).toString();\r\n                continue;\r\n            }\r\n            catch(IOException ioexception1) { }\r\n            break;\r\n        } while(true);\r\n        if(inputScript != null)\r\n            print((new StringBuilder()).append(s).append(\"\\n\").toString(), 1);\r\n        return s;\r\n    }\r\n\r\n    public String getText()\r\n    {\r\n        return text;\r\n    }\r\n\r\n    public String getText(int i, int j)\r\n    {\r\n        return text.substring(i, j);\r\n    }\r\n\r\n    public int getLength()\r\n    {\r\n        return text.length();\r\n    }\r\n\r\n    public Component getConsoleModel()\r\n    {\r\n        return null;\r\n    }\r\n\r\n    public Component getTextPane()\r\n    {\r\n        return null;\r\n    }\r\n\r\n    public void setFont(Font font)\r\n    {\r\n    }\r\n\r\n    public void setInputStyle(int i)\r\n    {\r\n    }\r\n\r\n    public void setInputColor(Color color)\r\n    {\r\n    }\r\n\r\n    public void setErrorStyle(int i)\r\n    {\r\n    }\r\n\r\n    public void setErrorColor(Color color)\r\n    {\r\n    }\r\n\r\n    public void cut()\r\n    {\r\n    }\r\n\r\n    public void copy()\r\n    {\r\n    }\r\n\r\n    public void paste()\r\n    {\r\n    }\r\n\r\n    public void selectAll()\r\n    {\r\n    }\r\n\r\n    public boolean isPointSelection()\r\n    {\r\n        return true;\r\n    }\r\n\r\n    public void print(PrintJob printjob)\r\n    {\r\n    }\r\n\r\n    public void setInputScript(BufferedReader bufferedreader)\r\n    {\r\n        inputScript = bufferedreader;\r\n    }\r\n\r\n    public BufferedReader getInputScript()\r\n    {\r\n        return inputScript;\r\n    }\r\n\r\n    public Component getConsolePane()\r\n    {\r\n        return null;\r\n    }\r\n\r\n    public void requestFocus()\r\n    {\r\n    }\r\n\r\n    public void setMenuBar(ProgramMenuBar programmenubar)\r\n    {\r\n    }\r\n\r\n    private IOConsole console;\r\n    private BufferedReader inputScript;\r\n    private String text;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/program/AppletStarter.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   Program.java\r\n\r\npackage acm.program;\r\n\r\nimport acm.util.JTFTools;\r\nimport java.io.PrintStream;\r\nimport java.lang.reflect.*;\r\n\r\n// Referenced classes of package acm.program:\r\n//            Program\r\n\r\nclass AppletStarter\r\n    implements Runnable\r\n{\r\n\r\n    public AppletStarter(Program program)\r\n    {\r\n        myProgram = program;\r\n    }\r\n\r\n    public void start()\r\n    {\r\n        try\r\n        {\r\n            mainThread = new Thread(this);\r\n            mainThread.start();\r\n            if(JTFTools.testDebugOption(\"startup\"))\r\n                System.out.println(\"Starting main thread using Thread package\");\r\n        }\r\n        catch(SecurityException securityexception)\r\n        {\r\n            if(JTFTools.testDebugOption(\"startup\"))\r\n                System.out.println((new StringBuilder()).append(\"Starting main thread using Executor because \").append(securityexception).toString());\r\n            forkUsingExecutor();\r\n        }\r\n    }\r\n\r\n    public void stop()\r\n    {\r\n        try\r\n        {\r\n            if(executor == null)\r\n            {\r\n                Class class1 = Class.forName(\"java.lang.Thread\");\r\n                Method method1 = class1.getMethod(\"stop\", new Class[0]);\r\n                method1.invoke(mainThread, new Object[0]);\r\n            } else\r\n            {\r\n                Method method = executor.getClass().getMethod(\"shutdownNow\", new Class[0]);\r\n                method.invoke(executor, new Object[0]);\r\n            }\r\n        }\r\n        catch(Exception exception) { }\r\n    }\r\n\r\n    public void run()\r\n    {\r\n        myProgram.startRun();\r\n    }\r\n\r\n    public Thread getMainThread()\r\n    {\r\n        return mainThread;\r\n    }\r\n\r\n    private void forkUsingExecutor()\r\n    {\r\n        try\r\n        {\r\n            Class class1 = Class.forName(\"java.util.concurrent.ScheduledExecutor\");\r\n            Class aclass[] = {\r\n                Integer.TYPE\r\n            };\r\n            Object aobj[] = {\r\n                new Integer(1)\r\n            };\r\n            Constructor constructor = class1.getConstructor(aclass);\r\n            executor = constructor.newInstance(aobj);\r\n            Class class2 = Class.forName(\"java.util.concurrent.TimeUnit\");\r\n            Field field = class2.getField(\"SECONDS\");\r\n            Object obj = field.get(null);\r\n            Class aclass1[] = {\r\n                Class.forName(\"java.lang.Runnable\"), Long.TYPE, Class.forName(\"java.util.concurrent.TimeUnit\")\r\n            };\r\n            Object aobj1[] = {\r\n                this, new Long(0L), obj\r\n            };\r\n            Method method = executor.getClass().getMethod(\"schedule\", aclass1);\r\n            method.invoke(executor, aobj1);\r\n        }\r\n        catch(Exception exception)\r\n        {\r\n            if(JTFTools.testDebugOption(\"startup\"))\r\n                System.out.println((new StringBuilder()).append(\"Executor failed because \").append(exception).toString());\r\n            executor = null;\r\n            mainThread = Thread.currentThread();\r\n            myProgram.startRun();\r\n        }\r\n    }\r\n\r\n    private Program myProgram;\r\n    private Thread mainThread;\r\n    private Object executor;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/program/CommandLineProgram.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   CommandLineProgram.java\r\n\r\npackage acm.program;\r\n\r\nimport acm.io.*;\r\nimport acm.util.ErrorException;\r\nimport acm.util.JTFTools;\r\nimport java.applet.AppletStub;\r\nimport java.awt.*;\r\nimport java.awt.event.*;\r\nimport java.io.BufferedReader;\r\nimport java.io.PrintWriter;\r\nimport java.lang.reflect.Method;\r\nimport java.util.*;\r\nimport javax.swing.JPanel;\r\n\r\n// Referenced classes of package acm.program:\r\n//            CommandLineProgramLoader\r\n\r\npublic class CommandLineProgram\r\n    implements IOModel, Runnable, MouseListener, MouseMotionListener, KeyListener, ActionListener\r\n{\r\n\r\n    protected CommandLineProgram()\r\n    {\r\n        parameterTable = null;\r\n        finalizers = new ArrayList();\r\n        myTitle = getClass().getName();\r\n        myTitle = myTitle.substring(myTitle.lastIndexOf(\".\") + 1);\r\n        setConsole(createConsole());\r\n    }\r\n\r\n    public static void checkIfHeadless(String s)\r\n    {\r\n        if(!JTFTools.testDebugOption(\"headless\"))\r\n            try\r\n            {\r\n                Class class1 = Class.forName(\"java.awt.GraphicsEnvironment\");\r\n                Method method = class1.getMethod(\"isHeadless\", new Class[0]);\r\n                if(!Boolean.TRUE.equals(method.invoke(null, new Object[0])))\r\n                    return;\r\n            }\r\n            catch(Exception exception)\r\n            {\r\n                return;\r\n            }\r\n        try\r\n        {\r\n            CommandLineProgramLoader commandlineprogramloader = new CommandLineProgramLoader(s);\r\n            Class class2 = commandlineprogramloader.loadClass(s);\r\n            CommandLineProgram commandlineprogram = (CommandLineProgram)class2.newInstance();\r\n            commandlineprogram.init();\r\n            commandlineprogram.run();\r\n            commandlineprogram.exit();\r\n        }\r\n        catch(Exception exception1)\r\n        {\r\n            throw new ErrorException(exception1);\r\n        }\r\n    }\r\n\r\n    public void run()\r\n    {\r\n    }\r\n\r\n    public void init()\r\n    {\r\n    }\r\n\r\n    public void print(String s)\r\n    {\r\n        getOutputModel().print(s);\r\n    }\r\n\r\n    public final void print(boolean flag)\r\n    {\r\n        print((new StringBuilder()).append(\"\").append(flag).toString());\r\n    }\r\n\r\n    public final void print(char c)\r\n    {\r\n        print((new StringBuilder()).append(\"\").append(c).toString());\r\n    }\r\n\r\n    public final void print(double d)\r\n    {\r\n        print((new StringBuilder()).append(\"\").append(d).toString());\r\n    }\r\n\r\n    public final void print(float f)\r\n    {\r\n        print((new StringBuilder()).append(\"\").append(f).toString());\r\n    }\r\n\r\n    public final void print(int i)\r\n    {\r\n        print((new StringBuilder()).append(\"\").append(i).toString());\r\n    }\r\n\r\n    public final void print(long l)\r\n    {\r\n        print((new StringBuilder()).append(\"\").append(l).toString());\r\n    }\r\n\r\n    public final void print(Object obj)\r\n    {\r\n        print((new StringBuilder()).append(\"\").append(obj).toString());\r\n    }\r\n\r\n    public void println()\r\n    {\r\n        getOutputModel().println();\r\n    }\r\n\r\n    public void println(String s)\r\n    {\r\n        getOutputModel().println(s);\r\n    }\r\n\r\n    public final void println(boolean flag)\r\n    {\r\n        println((new StringBuilder()).append(\"\").append(flag).toString());\r\n    }\r\n\r\n    public final void println(char c)\r\n    {\r\n        println((new StringBuilder()).append(\"\").append(c).toString());\r\n    }\r\n\r\n    public final void println(double d)\r\n    {\r\n        println((new StringBuilder()).append(\"\").append(d).toString());\r\n    }\r\n\r\n    public final void println(float f)\r\n    {\r\n        println((new StringBuilder()).append(\"\").append(f).toString());\r\n    }\r\n\r\n    public final void println(int i)\r\n    {\r\n        println((new StringBuilder()).append(\"\").append(i).toString());\r\n    }\r\n\r\n    public final void println(long l)\r\n    {\r\n        println((new StringBuilder()).append(\"\").append(l).toString());\r\n    }\r\n\r\n    public final void println(Object obj)\r\n    {\r\n        println((new StringBuilder()).append(\"\").append(obj).toString());\r\n    }\r\n\r\n    public void showErrorMessage(String s)\r\n    {\r\n        getOutputModel().showErrorMessage(s);\r\n    }\r\n\r\n    public final String readLine()\r\n    {\r\n        return readLine(null);\r\n    }\r\n\r\n    public String readLine(String s)\r\n    {\r\n        return getInputModel().readLine(s);\r\n    }\r\n\r\n    public final int readInt()\r\n    {\r\n        return readInt(null, 0x80000000, 0x7fffffff);\r\n    }\r\n\r\n    public final int readInt(int i, int j)\r\n    {\r\n        return readInt(null, i, j);\r\n    }\r\n\r\n    public final int readInt(String s)\r\n    {\r\n        return readInt(s, 0x80000000, 0x7fffffff);\r\n    }\r\n\r\n    public int readInt(String s, int i, int j)\r\n    {\r\n        return getInputModel().readInt(s, i, j);\r\n    }\r\n\r\n    public final double readDouble()\r\n    {\r\n        return readDouble(null, (-1.0D / 0.0D), (1.0D / 0.0D));\r\n    }\r\n\r\n    public final double readDouble(double d, double d1)\r\n    {\r\n        return readDouble(null, d, d1);\r\n    }\r\n\r\n    public final double readDouble(String s)\r\n    {\r\n        return readDouble(s, (-1.0D / 0.0D), (1.0D / 0.0D));\r\n    }\r\n\r\n    public double readDouble(String s, double d, double d1)\r\n    {\r\n        return getInputModel().readDouble(s, d, d1);\r\n    }\r\n\r\n    public final boolean readBoolean()\r\n    {\r\n        return readBoolean(null);\r\n    }\r\n\r\n    public final boolean readBoolean(String s)\r\n    {\r\n        return readBoolean(s, \"true\", \"false\");\r\n    }\r\n\r\n    public boolean readBoolean(String s, String s1, String s2)\r\n    {\r\n        return getInputModel().readBoolean(s, s1, s2);\r\n    }\r\n\r\n    public boolean isAppletMode()\r\n    {\r\n        return false;\r\n    }\r\n\r\n    public void setConsole(IOConsole ioconsole)\r\n    {\r\n        myConsole = ioconsole;\r\n    }\r\n\r\n    public IOConsole getConsole()\r\n    {\r\n        return myConsole;\r\n    }\r\n\r\n    public IODialog getDialog()\r\n    {\r\n        return null;\r\n    }\r\n\r\n    public IOModel getInputModel()\r\n    {\r\n        return getConsole();\r\n    }\r\n\r\n    public IOModel getOutputModel()\r\n    {\r\n        return getConsole();\r\n    }\r\n\r\n    public BufferedReader getReader()\r\n    {\r\n        return getConsole().getReader();\r\n    }\r\n\r\n    public PrintWriter getWriter()\r\n    {\r\n        return getConsole().getWriter();\r\n    }\r\n\r\n    public JPanel getRegionPanel(String s)\r\n    {\r\n        throw new ErrorException(\"No graphics environment\");\r\n    }\r\n\r\n    public void add(Component component, String s, Object obj)\r\n    {\r\n        throw new ErrorException(\"No graphics environment\");\r\n    }\r\n\r\n    public void addActionListeners()\r\n    {\r\n        throw new ErrorException(\"No graphics environment\");\r\n    }\r\n\r\n    public void addActionListeners(ActionListener actionlistener)\r\n    {\r\n        throw new ErrorException(\"No graphics environment\");\r\n    }\r\n\r\n    public void setTitle(String s)\r\n    {\r\n        myTitle = s;\r\n    }\r\n\r\n    public String getTitle()\r\n    {\r\n        return myTitle;\r\n    }\r\n\r\n    public void start(String as[])\r\n    {\r\n        if(parameterTable == null && as != null)\r\n            parameterTable = createParameterTable(as);\r\n        init();\r\n        run();\r\n    }\r\n\r\n    public void exit()\r\n    {\r\n        int i = finalizers.size();\r\n        for(int j = 0; j < i; j++)\r\n        {\r\n            Object obj = finalizers.get(j);\r\n            try\r\n            {\r\n                Class class1 = obj.getClass();\r\n                Method method = class1.getMethod(\"exit\", new Class[0]);\r\n                method.invoke(obj, new Object[0]);\r\n            }\r\n            catch(Exception exception)\r\n            {\r\n                throw new ErrorException(exception);\r\n            }\r\n        }\r\n\r\n    }\r\n\r\n    public void addExitHook(Object obj)\r\n    {\r\n        finalizers.add(obj);\r\n    }\r\n\r\n    public void mouseClicked(MouseEvent mouseevent)\r\n    {\r\n    }\r\n\r\n    public void mousePressed(MouseEvent mouseevent)\r\n    {\r\n    }\r\n\r\n    public void mouseReleased(MouseEvent mouseevent)\r\n    {\r\n    }\r\n\r\n    public void mouseEntered(MouseEvent mouseevent)\r\n    {\r\n    }\r\n\r\n    public void mouseExited(MouseEvent mouseevent)\r\n    {\r\n    }\r\n\r\n    public void mouseMoved(MouseEvent mouseevent)\r\n    {\r\n    }\r\n\r\n    public void mouseDragged(MouseEvent mouseevent)\r\n    {\r\n    }\r\n\r\n    public void keyTyped(KeyEvent keyevent)\r\n    {\r\n    }\r\n\r\n    public void keyPressed(KeyEvent keyevent)\r\n    {\r\n    }\r\n\r\n    public void keyReleased(KeyEvent keyevent)\r\n    {\r\n    }\r\n\r\n    public void actionPerformed(ActionEvent actionevent)\r\n    {\r\n    }\r\n\r\n    protected IOConsole createConsole()\r\n    {\r\n        return IOConsole.SYSTEM_CONSOLE;\r\n    }\r\n\r\n    protected IODialog createDialogIO()\r\n    {\r\n        throw new ErrorException(\"No graphics environment\");\r\n    }\r\n\r\n    public Dimension getPreferredSize()\r\n    {\r\n        return new Dimension(0, 0);\r\n    }\r\n\r\n    public int getWidth()\r\n    {\r\n        return 0;\r\n    }\r\n\r\n    public int getHeight()\r\n    {\r\n        return 0;\r\n    }\r\n\r\n    public String getParameter(String s)\r\n    {\r\n        String s1 = null;\r\n        if(parameterTable != null)\r\n            s1 = (String)parameterTable.get(s.toLowerCase());\r\n        return s1;\r\n    }\r\n\r\n    public void setLayout(LayoutManager layoutmanager)\r\n    {\r\n        throw new ErrorException(\"No graphics environment\");\r\n    }\r\n\r\n    public LayoutManager getLayout()\r\n    {\r\n        throw new ErrorException(\"No graphics environment\");\r\n    }\r\n\r\n    public void setBackground(Color color)\r\n    {\r\n        throw new ErrorException(\"No graphics environment\");\r\n    }\r\n\r\n    protected void addImpl(Component component, Object obj, int i)\r\n    {\r\n        throw new ErrorException(\"No graphics environment\");\r\n    }\r\n\r\n    public void remove(int i)\r\n    {\r\n        throw new ErrorException(\"No graphics environment\");\r\n    }\r\n\r\n    public void remove(Component component)\r\n    {\r\n        throw new ErrorException(\"No graphics environment\");\r\n    }\r\n\r\n    public void removeAll()\r\n    {\r\n        throw new ErrorException(\"No graphics environment\");\r\n    }\r\n\r\n    public void validate()\r\n    {\r\n        throw new ErrorException(\"No graphics environment\");\r\n    }\r\n\r\n    public void repaint()\r\n    {\r\n        throw new ErrorException(\"No graphics environment\");\r\n    }\r\n\r\n    public void destroy()\r\n    {\r\n    }\r\n\r\n    public static void main(String args[])\r\n    {\r\n        HashMap hashmap = createParameterTable(args);\r\n        JTFTools.setDebugOptions((String)hashmap.get(\"debug\"));\r\n        String s = (String)hashmap.get(\"code\");\r\n        if(s == null)\r\n            s = JTFTools.getMainClass();\r\n        Class class1 = null;\r\n        CommandLineProgram commandlineprogram = null;\r\n        if(s != null)\r\n        {\r\n            if(s.endsWith(\".class\"))\r\n                s = s.substring(0, s.length() - 6);\r\n            s = s.replace('/', '.');\r\n            try\r\n            {\r\n                class1 = Class.forName(s);\r\n            }\r\n            catch(ClassNotFoundException classnotfoundexception) { }\r\n        }\r\n        if(class1 != null)\r\n            try\r\n            {\r\n                Object obj = class1.newInstance();\r\n                if(obj instanceof CommandLineProgram)\r\n                    commandlineprogram = (CommandLineProgram)obj;\r\n                else\r\n                    throw new ErrorException(\"Main class does not specify a program\");\r\n            }\r\n            catch(IllegalAccessException illegalaccessexception) { }\r\n            catch(InstantiationException instantiationexception) { }\r\n        if(commandlineprogram == null)\r\n        {\r\n            throw new ErrorException(\"Cannot determine the main class.\");\r\n        } else\r\n        {\r\n            commandlineprogram.setParameterTable(hashmap);\r\n            commandlineprogram.start(null);\r\n            return;\r\n        }\r\n    }\r\n\r\n    public void menuAction(String s)\r\n    {\r\n        throw new ErrorException(\"No graphics environment\");\r\n    }\r\n\r\n    protected void setMacMenuBarFlag(boolean flag)\r\n    {\r\n        throw new ErrorException(\"No graphics environment\");\r\n    }\r\n\r\n    protected boolean getMacMenuBarFlag()\r\n    {\r\n        throw new ErrorException(\"No graphics environment\");\r\n    }\r\n\r\n    protected Component getBorder(String s)\r\n    {\r\n        throw new ErrorException(\"No graphics environment\");\r\n    }\r\n\r\n    protected String[] getArgumentArray()\r\n    {\r\n        if(parameterTable == null)\r\n            return null;\r\n        StringTokenizer stringtokenizer = new StringTokenizer((String)parameterTable.get(\"ARGS\"), \"\\t\", false);\r\n        String as[] = new String[stringtokenizer.countTokens()];\r\n        for(int i = 0; stringtokenizer.hasMoreTokens(); i++)\r\n            as[i] = stringtokenizer.nextToken();\r\n\r\n        return as;\r\n    }\r\n\r\n    protected boolean isStarted()\r\n    {\r\n        throw new ErrorException(\"No graphics environment\");\r\n    }\r\n\r\n    protected void startHook()\r\n    {\r\n    }\r\n\r\n    protected void endHook()\r\n    {\r\n    }\r\n\r\n    protected void setAppletStub(AppletStub appletstub)\r\n    {\r\n        appletStub = appletstub;\r\n    }\r\n\r\n    protected AppletStub getAppletStub()\r\n    {\r\n        return appletStub;\r\n    }\r\n\r\n    protected void setParameterTable(HashMap hashmap)\r\n    {\r\n        parameterTable = hashmap;\r\n    }\r\n\r\n    protected HashMap getParameterTable()\r\n    {\r\n        return parameterTable;\r\n    }\r\n\r\n    protected static HashMap createParameterTable(String as[])\r\n    {\r\n        if(as == null)\r\n            return null;\r\n        HashMap hashmap = new HashMap();\r\n        String s = \"\";\r\n        for(int i = 0; i < as.length; i++)\r\n        {\r\n            String s1 = as[i];\r\n            int j = s1.indexOf('=');\r\n            if(j > 0)\r\n            {\r\n                String s2 = s1.substring(0, j).toLowerCase();\r\n                String s3 = s1.substring(j + 1);\r\n                hashmap.put(s2, s3);\r\n                continue;\r\n            }\r\n            if(s.length() > 0)\r\n                s = (new StringBuilder()).append(s).append('\\t').toString();\r\n            s = (new StringBuilder()).append(s).append(s1).toString();\r\n        }\r\n\r\n        hashmap.put(\"ARGS\", s);\r\n        return hashmap;\r\n    }\r\n\r\n    public static final String NORTH = \"North\";\r\n    public static final String SOUTH = \"South\";\r\n    public static final String EAST = \"East\";\r\n    public static final String WEST = \"West\";\r\n    public static final String CENTER = \"Center\";\r\n    private HashMap parameterTable;\r\n    private ArrayList finalizers;\r\n    private AppletStub appletStub;\r\n    private String myTitle;\r\n    private IOConsole myConsole;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/program/CommandLineProgramLoader.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   CommandLineProgram.java\r\n\r\npackage acm.program;\r\n\r\nimport acm.util.ErrorException;\r\nimport acm.util.JTFTools;\r\nimport java.io.*;\r\nimport java.lang.reflect.Method;\r\nimport java.net.URL;\r\nimport java.util.HashMap;\r\n\r\nclass CommandLineProgramLoader extends ClassLoader\r\n{\r\n\r\n    public CommandLineProgramLoader(String s)\r\n    {\r\n        targetName = s;\r\n        try\r\n        {\r\n            Class class1 = Class.forName(\"java.lang.ClassLoader\");\r\n            Method method = class1.getMethod(\"getSystemClassLoader\", new Class[0]);\r\n            realLoader = (ClassLoader)method.invoke(null, new Object[0]);\r\n        }\r\n        catch(Exception exception)\r\n        {\r\n            throw new ErrorException(exception);\r\n        }\r\n    }\r\n\r\n    public Class loadClass(String s, boolean flag)\r\n        throws ClassNotFoundException\r\n    {\r\n        if(s.equals(targetName))\r\n        {\r\n            InputStream inputstream = getResourceAsStream((new StringBuilder()).append(s).append(\".class\").toString());\r\n            superclassOffset = findSuperclassOffset(inputstream);\r\n            inputstream = getResourceAsStream((new StringBuilder()).append(s).append(\".class\").toString());\r\n            byte abyte0[] = patchClassData(inputstream);\r\n            return defineClass(s, abyte0, 0, abyte0.length);\r\n        } else\r\n        {\r\n            return realLoader.loadClass(s);\r\n        }\r\n    }\r\n\r\n    public InputStream getResourceAsStream(String s)\r\n    {\r\n        return realLoader.getResourceAsStream(s);\r\n    }\r\n\r\n    public URL getResource(String s)\r\n    {\r\n        return realLoader.getResource(s);\r\n    }\r\n\r\n    private byte[] patchClassData(InputStream inputstream)\r\n    {\r\n        ByteArrayOutputStream bytearrayoutputstream;\r\n        bytearrayoutputstream = new ByteArrayOutputStream();\r\n        JTFTools.copyBytes(inputstream, bytearrayoutputstream, 8L);\r\n        int i = inputstream.read() << 8 | inputstream.read();\r\n        bytearrayoutputstream.write(i >> 8);\r\n        bytearrayoutputstream.write(i & 0xff);\r\n        for(int j = 1; j < i; j++)\r\n        {\r\n            int l = inputstream.read();\r\n            bytearrayoutputstream.write(l);\r\n            if(JTFTools.testDebugOption(\"constants\"))\r\n                System.out.println((new StringBuilder()).append(j).append(\": \").append(getConstantTypeName(l)).toString());\r\n            switch(l)\r\n            {\r\n            case 2: // '\\002'\r\n            default:\r\n                break;\r\n\r\n            case 3: // '\\003'\r\n                JTFTools.copyBytes(inputstream, bytearrayoutputstream, 4L);\r\n                break;\r\n\r\n            case 4: // '\\004'\r\n                JTFTools.copyBytes(inputstream, bytearrayoutputstream, 4L);\r\n                break;\r\n\r\n            case 5: // '\\005'\r\n                JTFTools.copyBytes(inputstream, bytearrayoutputstream, 8L);\r\n                j++;\r\n                break;\r\n\r\n            case 6: // '\\006'\r\n                JTFTools.copyBytes(inputstream, bytearrayoutputstream, 8L);\r\n                j++;\r\n                break;\r\n\r\n            case 7: // '\\007'\r\n                JTFTools.copyBytes(inputstream, bytearrayoutputstream, 2L);\r\n                break;\r\n\r\n            case 8: // '\\b'\r\n                JTFTools.copyBytes(inputstream, bytearrayoutputstream, 2L);\r\n                break;\r\n\r\n            case 9: // '\\t'\r\n                JTFTools.copyBytes(inputstream, bytearrayoutputstream, 4L);\r\n                break;\r\n\r\n            case 10: // '\\n'\r\n                JTFTools.copyBytes(inputstream, bytearrayoutputstream, 4L);\r\n                break;\r\n\r\n            case 11: // '\\013'\r\n                JTFTools.copyBytes(inputstream, bytearrayoutputstream, 4L);\r\n                break;\r\n\r\n            case 12: // '\\f'\r\n                JTFTools.copyBytes(inputstream, bytearrayoutputstream, 4L);\r\n                break;\r\n\r\n            case 1: // '\\001'\r\n                if(j == superclassOffset)\r\n                {\r\n                    int i1 = inputstream.read() << 8 | inputstream.read();\r\n                    inputstream.skip(i1);\r\n                    String s = \"acm/program/CommandLineProgram\";\r\n                    i1 = s.length();\r\n                    bytearrayoutputstream.write(i1 >> 8);\r\n                    bytearrayoutputstream.write(i1 & 0xff);\r\n                    for(int k1 = 0; k1 < i1; k1++)\r\n                        bytearrayoutputstream.write((byte)s.charAt(k1));\r\n\r\n                } else\r\n                {\r\n                    int j1 = inputstream.read() << 8 | inputstream.read();\r\n                    bytearrayoutputstream.write(j1 >> 8);\r\n                    bytearrayoutputstream.write(j1 & 0xff);\r\n                    JTFTools.copyBytes(inputstream, bytearrayoutputstream, j1);\r\n                }\r\n                break;\r\n            }\r\n        }\r\n\r\n        do\r\n        {\r\n            int k = inputstream.read();\r\n            if(k == -1)\r\n                break;\r\n            bytearrayoutputstream.write(k);\r\n        } while(true);\r\n        return bytearrayoutputstream.toByteArray();\r\n        IOException ioexception;\r\n        ioexception;\r\n        throw new ErrorException(ioexception);\r\n    }\r\n\r\n    private int findSuperclassOffset(InputStream inputstream)\r\n    {\r\n        classTable = new HashMap();\r\n        inputstream.skip(8L);\r\n        int i = inputstream.read() << 8 | inputstream.read();\r\n        i += 2;\r\n        for(int j = 1; j < i - 2; j++)\r\n        {\r\n            int k = inputstream.read();\r\n            switch(k)\r\n            {\r\n            case 3: // '\\003'\r\n                inputstream.skip(4L);\r\n                break;\r\n\r\n            case 4: // '\\004'\r\n                inputstream.skip(4L);\r\n                break;\r\n\r\n            case 5: // '\\005'\r\n                inputstream.skip(8L);\r\n                j++;\r\n                break;\r\n\r\n            case 6: // '\\006'\r\n                inputstream.skip(8L);\r\n                j++;\r\n                break;\r\n\r\n            case 8: // '\\b'\r\n                inputstream.skip(2L);\r\n                break;\r\n\r\n            case 9: // '\\t'\r\n                inputstream.skip(4L);\r\n                break;\r\n\r\n            case 10: // '\\n'\r\n                inputstream.skip(4L);\r\n                break;\r\n\r\n            case 11: // '\\013'\r\n                inputstream.skip(4L);\r\n                break;\r\n\r\n            case 12: // '\\f'\r\n                inputstream.skip(4L);\r\n                break;\r\n\r\n            case 7: // '\\007'\r\n                int l = inputstream.read() << 8 | inputstream.read();\r\n                classTable.put(new Integer(j), new Integer(l));\r\n                break;\r\n\r\n            case 1: // '\\001'\r\n                int i1 = inputstream.read() << 8 | inputstream.read();\r\n                inputstream.skip(i1);\r\n                break;\r\n            }\r\n        }\r\n\r\n        inputstream.skip(4L);\r\n        return ((Integer)classTable.get(new Integer(inputstream.read() << 8 | inputstream.read()))).intValue();\r\n        IOException ioexception;\r\n        ioexception;\r\n        throw new ErrorException(ioexception);\r\n    }\r\n\r\n    private static String getConstantTypeName(int i)\r\n    {\r\n        switch(i)\r\n        {\r\n        case 1: // '\\001'\r\n            return \"Utf8\";\r\n\r\n        case 3: // '\\003'\r\n            return \"Integer\";\r\n\r\n        case 4: // '\\004'\r\n            return \"Float\";\r\n\r\n        case 5: // '\\005'\r\n            return \"Long\";\r\n\r\n        case 6: // '\\006'\r\n            return \"Double\";\r\n\r\n        case 7: // '\\007'\r\n            return \"Class\";\r\n\r\n        case 8: // '\\b'\r\n            return \"String\";\r\n\r\n        case 9: // '\\t'\r\n            return \"Fieldref\";\r\n\r\n        case 10: // '\\n'\r\n            return \"Methodref\";\r\n\r\n        case 11: // '\\013'\r\n            return \"InterfaceMethodref\";\r\n\r\n        case 12: // '\\f'\r\n            return \"NameAndType\";\r\n\r\n        case 2: // '\\002'\r\n        default:\r\n            return (new StringBuilder()).append(\"Type[\").append(i).append(\"]\").toString();\r\n        }\r\n    }\r\n\r\n    private static final int CONSTANT_Utf8 = 1;\r\n    private static final int CONSTANT_Integer = 3;\r\n    private static final int CONSTANT_Float = 4;\r\n    private static final int CONSTANT_Long = 5;\r\n    private static final int CONSTANT_Double = 6;\r\n    private static final int CONSTANT_Class = 7;\r\n    private static final int CONSTANT_String = 8;\r\n    private static final int CONSTANT_Fieldref = 9;\r\n    private static final int CONSTANT_Methodref = 10;\r\n    private static final int CONSTANT_InterfaceMethodref = 11;\r\n    private static final int CONSTANT_NameAndType = 12;\r\n    private HashMap classTable;\r\n    private ClassLoader realLoader;\r\n    private String targetName;\r\n    private int superclassOffset;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/program/ConsoleProgram.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   ConsoleProgram.java\r\n\r\npackage acm.program;\r\n\r\nimport acm.io.IOConsole;\r\nimport acm.util.JTFTools;\r\nimport java.awt.Font;\r\n\r\n// Referenced classes of package acm.program:\r\n//            Program\r\n\r\npublic abstract class ConsoleProgram extends Program\r\n{\r\n\r\n    public ConsoleProgram()\r\n    {\r\n        add(getConsole(), \"Center\");\r\n        validate();\r\n    }\r\n\r\n    public void run()\r\n    {\r\n    }\r\n\r\n    public void init()\r\n    {\r\n    }\r\n\r\n    public void setFont(String s)\r\n    {\r\n        IOConsole ioconsole = getConsole();\r\n        if(ioconsole != null)\r\n        {\r\n            ioconsole.setFont(s);\r\n            super.setFont(ioconsole.getFont());\r\n        }\r\n    }\r\n\r\n    public void setFont(Font font)\r\n    {\r\n        IOConsole ioconsole = getConsole();\r\n        font = JTFTools.getStandardFont(font);\r\n        if(ioconsole != null)\r\n            ioconsole.setFont(font);\r\n        super.setFont(font);\r\n    }\r\n\r\n    protected IOConsole createConsole()\r\n    {\r\n        return new IOConsole();\r\n    }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/program/DefaultActionListener.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   Program.java\r\n\r\npackage acm.program;\r\n\r\nimport acm.io.IODialog;\r\nimport acm.util.ErrorException;\r\nimport java.awt.Button;\r\nimport java.awt.Component;\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.lang.reflect.Method;\r\n\r\n// Referenced classes of package acm.program:\r\n//            Program\r\n\r\nclass DefaultActionListener\r\n    implements ActionListener\r\n{\r\n\r\n    public DefaultActionListener()\r\n    {\r\n    }\r\n\r\n    public void actionPerformed(ActionEvent actionevent)\r\n    {\r\n        Component component = (Component)actionevent.getSource();\r\n        Program program = findProgram(component);\r\n        if(program != null && countActionListeners(component) > 1)\r\n            try\r\n            {\r\n                Class aclass[] = {\r\n                    Class.forName(\"java.awt.event.ActionListener\")\r\n                };\r\n                Object aobj[] = {\r\n                    this\r\n                };\r\n                Method method1 = component.getClass().getMethod(\"removeActionListener\", aclass);\r\n                method1.invoke(component, aobj);\r\n                return;\r\n            }\r\n            catch(Exception exception)\r\n            {\r\n                throw new ErrorException(exception);\r\n            }\r\n        String s = \"No ActionListener is attached\";\r\n        if(component instanceof Button)\r\n            s = (new StringBuilder()).append(s).append(\" to button \").append(((Button)component).getLabel()).toString();\r\n        else\r\n            try\r\n            {\r\n                Method method = component.getClass().getMethod(\"getText\", new Class[0]);\r\n                s = (new StringBuilder()).append(s).append(\" to button \").append((String)method.invoke(component, new Object[0])).toString();\r\n            }\r\n            catch(Exception exception1)\r\n            {\r\n                throw new ErrorException(exception1);\r\n            }\r\n        if(program == null)\r\n        {\r\n            throw new ErrorException(s);\r\n        } else\r\n        {\r\n            program.getDialog().showErrorMessage(s);\r\n            return;\r\n        }\r\n    }\r\n\r\n    protected static int countActionListeners(Component component)\r\n    {\r\n        ActionListener aactionlistener[];\r\n        Method method = component.getClass().getMethod(\"getActionListeners\", new Class[0]);\r\n        aactionlistener = (ActionListener[])(ActionListener[])method.invoke(component, new Object[0]);\r\n        return aactionlistener.length;\r\n        Exception exception;\r\n        exception;\r\n        return -1;\r\n    }\r\n\r\n    private Program findProgram(Component component)\r\n    {\r\n        if(component instanceof Program)\r\n            return (Program)component;\r\n        if(component != null)\r\n            return findProgram(((Component) (component.getParent())));\r\n        else\r\n            return null;\r\n    }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/program/DialogProgram.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   DialogProgram.java\r\n\r\npackage acm.program;\r\n\r\n\r\n// Referenced classes of package acm.program:\r\n//            Program\r\n\r\npublic abstract class DialogProgram extends Program\r\n{\r\n\r\n    public DialogProgram()\r\n    {\r\n        acm.io.IODialog iodialog = getDialog();\r\n        setInputModel(iodialog);\r\n        setOutputModel(iodialog);\r\n    }\r\n\r\n    public void run()\r\n    {\r\n    }\r\n\r\n    public void init()\r\n    {\r\n    }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/program/GObjectProgram.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   GraphicsProgram.java\r\n\r\npackage acm.program;\r\n\r\nimport acm.graphics.GDimension;\r\nimport acm.graphics.GObject;\r\nimport acm.util.ErrorException;\r\nimport java.lang.reflect.Method;\r\n\r\n// Referenced classes of package acm.program:\r\n//            GraphicsProgram\r\n\r\nclass GObjectProgram extends GraphicsProgram\r\n{\r\n\r\n    GObjectProgram()\r\n    {\r\n    }\r\n\r\n    protected void runHook()\r\n    {\r\n        GObject gobject = (GObject)getStartupObject();\r\n        GDimension gdimension = gobject.getSize();\r\n        add(gobject, ((double)getWidth() - gdimension.getWidth()) / 2D, ((double)getHeight() - gdimension.getHeight()) / 2D);\r\n        try\r\n        {\r\n            Class class1 = gobject.getClass();\r\n            String s = class1.getName();\r\n            s = s.substring(s.lastIndexOf(\".\") + 1);\r\n            setTitle(s);\r\n            Method method = class1.getMethod(\"run\", new Class[0]);\r\n            if(method == null)\r\n                throw new ErrorException((new StringBuilder()).append(s).append(\" has no run method\").toString());\r\n            method.invoke(gobject, new Object[0]);\r\n        }\r\n        catch(Exception exception)\r\n        {\r\n            throw new ErrorException(exception);\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/program/GProgramListener.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   GraphicsProgram.java\r\n\r\npackage acm.program;\r\n\r\nimport acm.graphics.GPoint;\r\nimport acm.util.ErrorException;\r\nimport java.awt.event.*;\r\nimport java.lang.reflect.Method;\r\n\r\n// Referenced classes of package acm.program:\r\n//            GraphicsProgram\r\n\r\nclass GProgramListener\r\n    implements MouseListener, MouseMotionListener\r\n{\r\n\r\n    public GProgramListener(GraphicsProgram graphicsprogram)\r\n    {\r\n        myProgram = graphicsprogram;\r\n        try\r\n        {\r\n            Class class1 = graphicsprogram.getClass();\r\n            Class aclass[] = {\r\n                Class.forName(\"acm.graphics.GPoint\")\r\n            };\r\n            try\r\n            {\r\n                mousePressedHook = class1.getMethod(\"mousePressed\", aclass);\r\n            }\r\n            catch(NoSuchMethodException nosuchmethodexception) { }\r\n            try\r\n            {\r\n                mouseReleasedHook = class1.getMethod(\"mouseReleased\", aclass);\r\n            }\r\n            catch(NoSuchMethodException nosuchmethodexception1) { }\r\n            try\r\n            {\r\n                mouseClickedHook = class1.getMethod(\"mouseClicked\", aclass);\r\n            }\r\n            catch(NoSuchMethodException nosuchmethodexception2) { }\r\n            try\r\n            {\r\n                mouseMovedHook = class1.getMethod(\"mouseMoved\", aclass);\r\n            }\r\n            catch(NoSuchMethodException nosuchmethodexception3) { }\r\n            try\r\n            {\r\n                mouseDraggedHook = class1.getMethod(\"mouseDragged\", aclass);\r\n            }\r\n            catch(NoSuchMethodException nosuchmethodexception4) { }\r\n        }\r\n        catch(Exception exception)\r\n        {\r\n            throw new ErrorException(exception);\r\n        }\r\n    }\r\n\r\n    public boolean needsMouseMotionListeners()\r\n    {\r\n        return mouseMovedHook != null || mouseDraggedHook != null;\r\n    }\r\n\r\n    public void mouseClicked(MouseEvent mouseevent)\r\n    {\r\n        if(mouseClickedHook != null)\r\n        {\r\n            Object aobj[] = {\r\n                new GPoint(mouseevent.getX(), mouseevent.getY())\r\n            };\r\n            try\r\n            {\r\n                mouseClickedHook.invoke(myProgram, aobj);\r\n            }\r\n            catch(Exception exception)\r\n            {\r\n                throw new ErrorException(exception);\r\n            }\r\n        }\r\n        signalClickOccurred();\r\n    }\r\n\r\n    public void mousePressed(MouseEvent mouseevent)\r\n    {\r\n        if(mousePressedHook != null)\r\n        {\r\n            Object aobj[] = {\r\n                new GPoint(mouseevent.getX(), mouseevent.getY())\r\n            };\r\n            try\r\n            {\r\n                mousePressedHook.invoke(myProgram, aobj);\r\n            }\r\n            catch(Exception exception)\r\n            {\r\n                throw new ErrorException(exception);\r\n            }\r\n        }\r\n    }\r\n\r\n    public void mouseReleased(MouseEvent mouseevent)\r\n    {\r\n        if(mouseReleasedHook != null)\r\n        {\r\n            Object aobj[] = {\r\n                new GPoint(mouseevent.getX(), mouseevent.getY())\r\n            };\r\n            try\r\n            {\r\n                mouseReleasedHook.invoke(myProgram, aobj);\r\n            }\r\n            catch(Exception exception)\r\n            {\r\n                throw new ErrorException(exception);\r\n            }\r\n        }\r\n    }\r\n\r\n    public void mouseEntered(MouseEvent mouseevent)\r\n    {\r\n    }\r\n\r\n    public void mouseExited(MouseEvent mouseevent)\r\n    {\r\n    }\r\n\r\n    public void mouseMoved(MouseEvent mouseevent)\r\n    {\r\n        if(mouseMovedHook != null)\r\n        {\r\n            Object aobj[] = {\r\n                new GPoint(mouseevent.getX(), mouseevent.getY())\r\n            };\r\n            try\r\n            {\r\n                mouseMovedHook.invoke(myProgram, aobj);\r\n            }\r\n            catch(Exception exception)\r\n            {\r\n                throw new ErrorException(exception);\r\n            }\r\n        }\r\n    }\r\n\r\n    public void mouseDragged(MouseEvent mouseevent)\r\n    {\r\n        if(mouseDraggedHook != null)\r\n        {\r\n            Object aobj[] = {\r\n                new GPoint(mouseevent.getX(), mouseevent.getY())\r\n            };\r\n            try\r\n            {\r\n                mouseDraggedHook.invoke(myProgram, aobj);\r\n            }\r\n            catch(Exception exception)\r\n            {\r\n                throw new ErrorException(exception);\r\n            }\r\n        }\r\n    }\r\n\r\n    public synchronized void waitForClick()\r\n    {\r\n        clickFlag = false;\r\n        while(!clickFlag) \r\n            try\r\n            {\r\n                wait();\r\n            }\r\n            catch(InterruptedException interruptedexception) { }\r\n    }\r\n\r\n    private synchronized void signalClickOccurred()\r\n    {\r\n        clickFlag = true;\r\n        notifyAll();\r\n    }\r\n\r\n    private GraphicsProgram myProgram;\r\n    private Method mousePressedHook;\r\n    private Method mouseReleasedHook;\r\n    private Method mouseClickedHook;\r\n    private Method mouseMovedHook;\r\n    private Method mouseDraggedHook;\r\n    private boolean clickFlag;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/program/GraphicsProgram.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   GraphicsProgram.java\r\n\r\npackage acm.program;\r\n\r\nimport acm.graphics.*;\r\nimport acm.util.ErrorException;\r\nimport java.awt.*;\r\nimport java.awt.event.*;\r\nimport java.util.EventListener;\r\nimport java.util.Iterator;\r\n\r\n// Referenced classes of package acm.program:\r\n//            Program, GProgramListener, GObjectProgram\r\n\r\npublic abstract class GraphicsProgram extends Program\r\n{\r\n\r\n    protected GraphicsProgram()\r\n    {\r\n        eventListener = new GProgramListener(this);\r\n        setGCanvas(createGCanvas());\r\n        add(gc, \"Center\");\r\n        validate();\r\n    }\r\n\r\n    public void run()\r\n    {\r\n    }\r\n\r\n    public void init()\r\n    {\r\n    }\r\n\r\n    public GCanvas getGCanvas()\r\n    {\r\n        return gc;\r\n    }\r\n\r\n    public void add(GObject gobject)\r\n    {\r\n        gc.add(gobject);\r\n    }\r\n\r\n    public final void add(GObject gobject, double d, double d1)\r\n    {\r\n        gobject.setLocation(d, d1);\r\n        add(gobject);\r\n    }\r\n\r\n    public final void add(GObject gobject, GPoint gpoint)\r\n    {\r\n        gobject.setLocation(gpoint);\r\n        add(gobject);\r\n    }\r\n\r\n    public final void add(Component component, double d, double d1)\r\n    {\r\n        component.setLocation(GMath.round(d), GMath.round(d1));\r\n        gc.add(component);\r\n    }\r\n\r\n    public final void add(Component component, GPoint gpoint)\r\n    {\r\n        add(component, gpoint.getX(), gpoint.getY());\r\n    }\r\n\r\n    public void remove(GObject gobject)\r\n    {\r\n        gc.remove(gobject);\r\n    }\r\n\r\n    public void removeAll()\r\n    {\r\n        gc.removeAll();\r\n    }\r\n\r\n    public int getElementCount()\r\n    {\r\n        return gc.getElementCount();\r\n    }\r\n\r\n    public GObject getElement(int i)\r\n    {\r\n        return gc.getElement(i);\r\n    }\r\n\r\n    public GObject getElementAt(double d, double d1)\r\n    {\r\n        return gc.getElementAt(d, d1);\r\n    }\r\n\r\n    public final GObject getElementAt(GPoint gpoint)\r\n    {\r\n        return getElementAt(gpoint.getX(), gpoint.getY());\r\n    }\r\n\r\n    public void setGCanvas(GCanvas gcanvas)\r\n    {\r\n        gc = gcanvas;\r\n        gcanvas.addMouseListener(eventListener);\r\n        if(eventListener.needsMouseMotionListeners())\r\n            gcanvas.addMouseMotionListener(eventListener);\r\n    }\r\n\r\n    public Iterator iterator()\r\n    {\r\n        return gc.iterator();\r\n    }\r\n\r\n    public Iterator iterator(int i)\r\n    {\r\n        return gc.iterator(i);\r\n    }\r\n\r\n    public void addMouseListeners()\r\n    {\r\n        gc.addMouseListener(this);\r\n        gc.addMouseMotionListener(this);\r\n    }\r\n\r\n    public void addMouseListeners(EventListener eventlistener)\r\n    {\r\n        boolean flag = false;\r\n        if(eventlistener instanceof MouseListener)\r\n        {\r\n            gc.addMouseListener((MouseListener)eventlistener);\r\n            flag = true;\r\n        }\r\n        if(eventlistener instanceof MouseMotionListener)\r\n        {\r\n            gc.addMouseMotionListener((MouseMotionListener)eventlistener);\r\n            flag = true;\r\n        }\r\n        if(!flag)\r\n            throw new ErrorException(\"addMouseListeners: Illegal listener\");\r\n        else\r\n            return;\r\n    }\r\n\r\n    public void addKeyListeners()\r\n    {\r\n        gc.addKeyListener(this);\r\n    }\r\n\r\n    public void addKeyListeners(KeyListener keylistener)\r\n    {\r\n        gc.addKeyListener(keylistener);\r\n    }\r\n\r\n    public void waitForClick()\r\n    {\r\n        eventListener.waitForClick();\r\n    }\r\n\r\n    public void repaint()\r\n    {\r\n        gc.repaint();\r\n        super.repaint();\r\n    }\r\n\r\n    public void removeAllComponents()\r\n    {\r\n        super.removeAll();\r\n    }\r\n\r\n    public Dimension getCentralRegionSize()\r\n    {\r\n        if(gc.isShowing())\r\n            return gc.getSize();\r\n        else\r\n            return super.getCentralRegionSize();\r\n    }\r\n\r\n    public void setBackground(Color color)\r\n    {\r\n        super.setBackground(color);\r\n        if(gc != null)\r\n            gc.setBackground(color);\r\n    }\r\n\r\n    public static void startGraphicsProgram(GObject gobject, String as[])\r\n    {\r\n        GObjectProgram gobjectprogram = new GObjectProgram();\r\n        gobjectprogram.setStartupObject(gobject);\r\n        gobjectprogram.start(as);\r\n    }\r\n\r\n    protected GCanvas createGCanvas()\r\n    {\r\n        return new GCanvas();\r\n    }\r\n\r\n    protected void endHook()\r\n    {\r\n        gc.repaint();\r\n    }\r\n\r\n    protected boolean isStarted()\r\n    {\r\n        if(gc == null || !super.isStarted())\r\n        {\r\n            return false;\r\n        } else\r\n        {\r\n            Dimension dimension = gc.getSize();\r\n            return dimension != null && dimension.width != 0 && dimension.height != 0;\r\n        }\r\n    }\r\n\r\n    private GCanvas gc;\r\n    private GProgramListener eventListener;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/program/OldStyleCheckBoxMenuItem.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   ProgramMenuBar.java\r\n\r\npackage acm.program;\r\n\r\nimport java.awt.CheckboxMenuItem;\r\nimport java.awt.MenuShortcut;\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport javax.swing.JCheckBoxMenuItem;\r\nimport javax.swing.KeyStroke;\r\nimport javax.swing.event.ChangeEvent;\r\nimport javax.swing.event.ChangeListener;\r\n\r\nclass OldStyleCheckBoxMenuItem extends CheckboxMenuItem\r\n    implements ActionListener, ChangeListener\r\n{\r\n\r\n    public OldStyleCheckBoxMenuItem(JCheckBoxMenuItem jcheckboxmenuitem)\r\n    {\r\n        super(jcheckboxmenuitem.getText());\r\n        twin = jcheckboxmenuitem;\r\n        addActionListener(this);\r\n        twin.addChangeListener(this);\r\n        setState(twin.getState());\r\n        setEnabled(twin.isEnabled());\r\n        KeyStroke keystroke = twin.getAccelerator();\r\n        if(keystroke != null)\r\n            setShortcut(createShortcut(keystroke));\r\n    }\r\n\r\n    public void actionPerformed(ActionEvent actionevent)\r\n    {\r\n        twin.doClick(0);\r\n    }\r\n\r\n    public void stateChanged(ChangeEvent changeevent)\r\n    {\r\n        setState(twin.getState());\r\n        setEnabled(twin.isEnabled());\r\n    }\r\n\r\n    private MenuShortcut createShortcut(KeyStroke keystroke)\r\n    {\r\n        boolean flag = (keystroke.getModifiers() & 1) != 0;\r\n        return new MenuShortcut(keystroke.getKeyCode(), flag);\r\n    }\r\n\r\n    private JCheckBoxMenuItem twin;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/program/OldStyleMenuItem.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   ProgramMenuBar.java\r\n\r\npackage acm.program;\r\n\r\nimport java.awt.MenuItem;\r\nimport java.awt.MenuShortcut;\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport javax.swing.JMenuItem;\r\nimport javax.swing.KeyStroke;\r\nimport javax.swing.event.ChangeEvent;\r\nimport javax.swing.event.ChangeListener;\r\n\r\nclass OldStyleMenuItem extends MenuItem\r\n    implements ActionListener, ChangeListener\r\n{\r\n\r\n    public OldStyleMenuItem(JMenuItem jmenuitem)\r\n    {\r\n        super(jmenuitem.getText());\r\n        twin = jmenuitem;\r\n        addActionListener(this);\r\n        twin.addChangeListener(this);\r\n        setEnabled(twin.isEnabled());\r\n        KeyStroke keystroke = twin.getAccelerator();\r\n        if(keystroke != null)\r\n            setShortcut(createShortcut(keystroke));\r\n    }\r\n\r\n    public void actionPerformed(ActionEvent actionevent)\r\n    {\r\n        twin.doClick(0);\r\n    }\r\n\r\n    public void stateChanged(ChangeEvent changeevent)\r\n    {\r\n        setEnabled(twin.isEnabled());\r\n    }\r\n\r\n    private MenuShortcut createShortcut(KeyStroke keystroke)\r\n    {\r\n        boolean flag = (keystroke.getModifiers() & 1) != 0;\r\n        return new MenuShortcut(keystroke.getKeyCode(), flag);\r\n    }\r\n\r\n    private JMenuItem twin;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/program/Program.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   Program.java\r\n\r\npackage acm.program;\r\n\r\nimport acm.gui.TableLayout;\r\nimport acm.io.*;\r\nimport acm.util.*;\r\nimport java.applet.AppletStub;\r\nimport java.awt.*;\r\nimport java.awt.event.*;\r\nimport java.io.BufferedReader;\r\nimport java.io.PrintWriter;\r\nimport java.lang.reflect.Field;\r\nimport java.lang.reflect.Method;\r\nimport java.util.*;\r\nimport javax.swing.*;\r\n\r\n// Referenced classes of package acm.program:\r\n//            ProgramAppletStub, ProgramFrame, ProgramMenuBar, AppletStarter, \r\n//            ProgramStartupListener, ProgramContentPaneLayout, ProgramWindowListener, CommandLineProgram\r\n\r\npublic abstract class Program extends JApplet\r\n    implements IOModel, Runnable, MouseListener, MouseMotionListener, KeyListener, ActionListener\r\n{\r\n\r\n    protected Program()\r\n    {\r\n        JTFTools.registerApplet(this);\r\n        appletMode = checkForAppletMode();\r\n        shown = false;\r\n        parameterTable = null;\r\n        finalizers = new ArrayList();\r\n        myTitle = getClass().getName();\r\n        myTitle = myTitle.substring(myTitle.lastIndexOf(\".\") + 1);\r\n        appletStub = new ProgramAppletStub(this);\r\n        setAppletStub(appletStub);\r\n        initContentPane(getContentPane());\r\n        setVisible(false);\r\n        setConsole(createConsole());\r\n        myDialog = createDialogIO();\r\n        myDialog.setAssociatedConsole(myConsole);\r\n        myMenuBar = createMenuBar();\r\n        myConsole.setMenuBar(myMenuBar);\r\n    }\r\n\r\n    public void run()\r\n    {\r\n    }\r\n\r\n    public void init()\r\n    {\r\n    }\r\n\r\n    public void print(String s)\r\n    {\r\n        getOutputModel().print(s);\r\n    }\r\n\r\n    public final void print(boolean flag)\r\n    {\r\n        print((new StringBuilder()).append(\"\").append(flag).toString());\r\n    }\r\n\r\n    public final void print(char c)\r\n    {\r\n        print((new StringBuilder()).append(\"\").append(c).toString());\r\n    }\r\n\r\n    public final void print(double d)\r\n    {\r\n        print((new StringBuilder()).append(\"\").append(d).toString());\r\n    }\r\n\r\n    public final void print(float f)\r\n    {\r\n        print((new StringBuilder()).append(\"\").append(f).toString());\r\n    }\r\n\r\n    public final void print(int i)\r\n    {\r\n        print((new StringBuilder()).append(\"\").append(i).toString());\r\n    }\r\n\r\n    public final void print(long l)\r\n    {\r\n        print((new StringBuilder()).append(\"\").append(l).toString());\r\n    }\r\n\r\n    public final void print(Object obj)\r\n    {\r\n        print((new StringBuilder()).append(\"\").append(obj).toString());\r\n    }\r\n\r\n    public void println()\r\n    {\r\n        getOutputModel().println();\r\n    }\r\n\r\n    public void println(String s)\r\n    {\r\n        getOutputModel().println(s);\r\n    }\r\n\r\n    public final void println(boolean flag)\r\n    {\r\n        println((new StringBuilder()).append(\"\").append(flag).toString());\r\n    }\r\n\r\n    public final void println(char c)\r\n    {\r\n        println((new StringBuilder()).append(\"\").append(c).toString());\r\n    }\r\n\r\n    public final void println(double d)\r\n    {\r\n        println((new StringBuilder()).append(\"\").append(d).toString());\r\n    }\r\n\r\n    public final void println(float f)\r\n    {\r\n        println((new StringBuilder()).append(\"\").append(f).toString());\r\n    }\r\n\r\n    public final void println(int i)\r\n    {\r\n        println((new StringBuilder()).append(\"\").append(i).toString());\r\n    }\r\n\r\n    public final void println(long l)\r\n    {\r\n        println((new StringBuilder()).append(\"\").append(l).toString());\r\n    }\r\n\r\n    public final void println(Object obj)\r\n    {\r\n        println((new StringBuilder()).append(\"\").append(obj).toString());\r\n    }\r\n\r\n    public void showErrorMessage(String s)\r\n    {\r\n        getOutputModel().showErrorMessage(s);\r\n    }\r\n\r\n    public final String readLine()\r\n    {\r\n        return readLine(null);\r\n    }\r\n\r\n    public String readLine(String s)\r\n    {\r\n        return getInputModel().readLine(s);\r\n    }\r\n\r\n    public final int readInt()\r\n    {\r\n        return readInt(null, 0x80000000, 0x7fffffff);\r\n    }\r\n\r\n    public final int readInt(int i, int j)\r\n    {\r\n        return readInt(null, i, j);\r\n    }\r\n\r\n    public final int readInt(String s)\r\n    {\r\n        return readInt(s, 0x80000000, 0x7fffffff);\r\n    }\r\n\r\n    public int readInt(String s, int i, int j)\r\n    {\r\n        return getInputModel().readInt(s, i, j);\r\n    }\r\n\r\n    public final double readDouble()\r\n    {\r\n        return readDouble(null, (-1.0D / 0.0D), (1.0D / 0.0D));\r\n    }\r\n\r\n    public final double readDouble(double d, double d1)\r\n    {\r\n        return readDouble(null, d, d1);\r\n    }\r\n\r\n    public final double readDouble(String s)\r\n    {\r\n        return readDouble(s, (-1.0D / 0.0D), (1.0D / 0.0D));\r\n    }\r\n\r\n    public double readDouble(String s, double d, double d1)\r\n    {\r\n        return getInputModel().readDouble(s, d, d1);\r\n    }\r\n\r\n    public final boolean readBoolean()\r\n    {\r\n        return readBoolean(null);\r\n    }\r\n\r\n    public final boolean readBoolean(String s)\r\n    {\r\n        return readBoolean(s, \"true\", \"false\");\r\n    }\r\n\r\n    public boolean readBoolean(String s, String s1, String s2)\r\n    {\r\n        return getInputModel().readBoolean(s, s1, s2);\r\n    }\r\n\r\n    public boolean isAppletMode()\r\n    {\r\n        return appletMode;\r\n    }\r\n\r\n    public void setConsole(IOConsole ioconsole)\r\n    {\r\n        myConsole = ioconsole;\r\n    }\r\n\r\n    public IOConsole getConsole()\r\n    {\r\n        return myConsole;\r\n    }\r\n\r\n    public void setDialog(IODialog iodialog)\r\n    {\r\n        myDialog = iodialog;\r\n    }\r\n\r\n    public IODialog getDialog()\r\n    {\r\n        return myDialog;\r\n    }\r\n\r\n    public void setInputModel(IOModel iomodel)\r\n    {\r\n        inputModel = iomodel;\r\n    }\r\n\r\n    public void setOutputModel(IOModel iomodel)\r\n    {\r\n        outputModel = iomodel;\r\n    }\r\n\r\n    public IOModel getInputModel()\r\n    {\r\n        return ((IOModel) (inputModel != null ? inputModel : myConsole));\r\n    }\r\n\r\n    public IOModel getOutputModel()\r\n    {\r\n        return ((IOModel) (outputModel != null ? outputModel : myConsole));\r\n    }\r\n\r\n    public BufferedReader getReader()\r\n    {\r\n        return getConsole().getReader();\r\n    }\r\n\r\n    public PrintWriter getWriter()\r\n    {\r\n        return getConsole().getWriter();\r\n    }\r\n\r\n    public JPanel getRegionPanel(String s)\r\n    {\r\n        if(s.equals(\"North\"))\r\n            return northPanel;\r\n        if(s.equals(\"South\"))\r\n            return southPanel;\r\n        if(s.equals(\"West\"))\r\n            return westPanel;\r\n        if(s.equals(\"East\"))\r\n            return eastPanel;\r\n        if(s.equals(\"Center\"))\r\n            return centerPanel;\r\n        else\r\n            throw new ErrorException((new StringBuilder()).append(\"getRegionPanel: Illegal region \").append(s).toString());\r\n    }\r\n\r\n    public void add(Component component, String s, Object obj)\r\n    {\r\n        if(s.equals(\"North\"))\r\n            northPanel.add(component, obj);\r\n        else\r\n        if(s.equals(\"South\"))\r\n            southPanel.add(component, obj);\r\n        else\r\n        if(s.equals(\"West\"))\r\n            westPanel.add(component, obj);\r\n        else\r\n        if(s.equals(\"East\"))\r\n            eastPanel.add(component, obj);\r\n        else\r\n        if(s.equals(\"Center\"))\r\n            centerPanel.add(component, obj);\r\n        else\r\n            throw new ErrorException((new StringBuilder()).append(\"add: Illegal region \").append(s).toString());\r\n    }\r\n\r\n    public void addActionListeners()\r\n    {\r\n        addActionListeners(((ActionListener) (this)));\r\n    }\r\n\r\n    public void addActionListeners(ActionListener actionlistener)\r\n    {\r\n        addActionListeners(((Component) (getContentPane())), actionlistener);\r\n    }\r\n\r\n    public void setTitle(String s)\r\n    {\r\n        myTitle = s;\r\n        if(programFrame != null)\r\n            programFrame.setTitle(s);\r\n    }\r\n\r\n    public String getTitle()\r\n    {\r\n        return myTitle;\r\n    }\r\n\r\n    public ProgramMenuBar getMenuBar()\r\n    {\r\n        return myMenuBar;\r\n    }\r\n\r\n    public void start(String as[])\r\n    {\r\n        if(parameterTable == null)\r\n            parameterTable = createParameterTable(as);\r\n        if(getParent() == null)\r\n            initApplicationFrame();\r\n        validate();\r\n        setVisible(true);\r\n        if(programFrame != null)\r\n        {\r\n            programFrame.validate();\r\n            int i = centerPanel.getComponentCount();\r\n            i += northPanel.getComponentCount();\r\n            i += southPanel.getComponentCount();\r\n            i += westPanel.getComponentCount();\r\n            i += eastPanel.getComponentCount();\r\n            if(i > 0)\r\n            {\r\n                programFrame.setVisible(true);\r\n                shown = true;\r\n            }\r\n        }\r\n        started = true;\r\n        init();\r\n        if(programFrame != null && myMenuBar != null)\r\n        {\r\n            myMenuBar.install(programFrame);\r\n            circumventFrameSizeBug(programFrame, programBounds.getSize());\r\n        }\r\n        validate();\r\n        startRun();\r\n    }\r\n\r\n    public void exit()\r\n    {\r\n        int i = finalizers.size();\r\n        for(int j = 0; j < i; j++)\r\n        {\r\n            Object obj = finalizers.get(j);\r\n            try\r\n            {\r\n                Class class1 = obj.getClass();\r\n                Method method = class1.getMethod(\"exit\", new Class[0]);\r\n                method.invoke(obj, new Object[0]);\r\n            }\r\n            catch(Exception exception)\r\n            {\r\n                throw new ErrorException(exception);\r\n            }\r\n        }\r\n\r\n        JTFTools.terminateAppletThreads(this);\r\n        if(!appletMode)\r\n            System.exit(0);\r\n    }\r\n\r\n    public void addExitHook(Object obj)\r\n    {\r\n        finalizers.add(obj);\r\n    }\r\n\r\n    public void setParameter(String s, String s1)\r\n    {\r\n        if(parameterTable == null)\r\n            parameterTable = new HashMap();\r\n        parameterTable.put(s.toLowerCase(), s1);\r\n    }\r\n\r\n    public Thread getMainThread()\r\n    {\r\n        return appletStarter != null ? appletStarter.getMainThread() : null;\r\n    }\r\n\r\n    public void pause(double d)\r\n    {\r\n        JTFTools.pause(d);\r\n    }\r\n\r\n    public Dimension getCentralRegionSize()\r\n    {\r\n        if(centerPanel == null)\r\n            return super.getSize();\r\n        if(initFinished)\r\n        {\r\n            return centerPanel.getSize();\r\n        } else\r\n        {\r\n            Dimension dimension = programFrame != null ? programFrame.getSize() : super.getSize();\r\n            Insets insets = programFrame != null ? programFrame.getInsets() : super.getInsets();\r\n            dimension.width -= westPanel.getPreferredSize().width + eastPanel.getPreferredSize().width;\r\n            dimension.width -= insets.left + insets.right;\r\n            dimension.height -= northPanel.getPreferredSize().height + southPanel.getPreferredSize().height;\r\n            dimension.height -= insets.top + insets.bottom;\r\n            return dimension;\r\n        }\r\n    }\r\n\r\n    public void mouseClicked(MouseEvent mouseevent)\r\n    {\r\n    }\r\n\r\n    public void mousePressed(MouseEvent mouseevent)\r\n    {\r\n    }\r\n\r\n    public void mouseReleased(MouseEvent mouseevent)\r\n    {\r\n    }\r\n\r\n    public void mouseEntered(MouseEvent mouseevent)\r\n    {\r\n    }\r\n\r\n    public void mouseExited(MouseEvent mouseevent)\r\n    {\r\n    }\r\n\r\n    public void mouseMoved(MouseEvent mouseevent)\r\n    {\r\n    }\r\n\r\n    public void mouseDragged(MouseEvent mouseevent)\r\n    {\r\n    }\r\n\r\n    public void keyTyped(KeyEvent keyevent)\r\n    {\r\n    }\r\n\r\n    public void keyPressed(KeyEvent keyevent)\r\n    {\r\n    }\r\n\r\n    public void keyReleased(KeyEvent keyevent)\r\n    {\r\n    }\r\n\r\n    public void actionPerformed(ActionEvent actionevent)\r\n    {\r\n    }\r\n\r\n    protected JFrame createProgramFrame()\r\n    {\r\n        return new ProgramFrame(getTitle());\r\n    }\r\n\r\n    protected IOConsole createConsole()\r\n    {\r\n        return IOConsole.SYSTEM_CONSOLE;\r\n    }\r\n\r\n    protected IODialog createDialogIO()\r\n    {\r\n        return new IODialog(getContentPane());\r\n    }\r\n\r\n    protected ProgramMenuBar createMenuBar()\r\n    {\r\n        return new ProgramMenuBar(this);\r\n    }\r\n\r\n    public Dimension getPreferredSize()\r\n    {\r\n        return computeProgramBounds().getSize();\r\n    }\r\n\r\n    public int getWidth()\r\n    {\r\n        String s = getMyCaller();\r\n        if(s.startsWith(\"java.\") || s.startsWith(\"javax.\"))\r\n            return super.getWidth();\r\n        else\r\n            return getCentralRegionSize().width;\r\n    }\r\n\r\n    public int getHeight()\r\n    {\r\n        String s = getMyCaller();\r\n        if(s.startsWith(\"java.\") || s.startsWith(\"javax.\"))\r\n            return super.getHeight();\r\n        else\r\n            return getCentralRegionSize().height;\r\n    }\r\n\r\n    public String getParameter(String s)\r\n    {\r\n        String s1 = null;\r\n        if(parameterTable != null)\r\n            s1 = (String)parameterTable.get(s.toLowerCase());\r\n        if(s1 != null)\r\n            return s1;\r\n        else\r\n            return super.getParameter(s);\r\n    }\r\n\r\n    public void setLayout(LayoutManager layoutmanager)\r\n    {\r\n        if(isRootPaneCheckingEnabled())\r\n            centerPanel.setLayout(layoutmanager);\r\n        else\r\n            super.setLayout(layoutmanager);\r\n    }\r\n\r\n    public LayoutManager getLayout()\r\n    {\r\n        if(isRootPaneCheckingEnabled())\r\n            return centerPanel.getLayout();\r\n        else\r\n            return super.getLayout();\r\n    }\r\n\r\n    public void setBackground(Color color)\r\n    {\r\n        if(isRootPaneCheckingEnabled())\r\n            centerPanel.setBackground(color);\r\n        super.setBackground(color);\r\n    }\r\n\r\n    protected void addImpl(Component component, Object obj, int i)\r\n    {\r\n        if(isRootPaneCheckingEnabled())\r\n        {\r\n            if(obj == null)\r\n                centerPanel.add(component, i);\r\n            else\r\n            if(obj.equals(\"North\"))\r\n                northPanel.add(component, i);\r\n            else\r\n            if(obj.equals(\"South\"))\r\n                southPanel.add(component, i);\r\n            else\r\n            if(obj.equals(\"West\"))\r\n                westPanel.add(component, i);\r\n            else\r\n            if(obj.equals(\"East\"))\r\n                eastPanel.add(component, i);\r\n            else\r\n            if(obj.equals(\"Center\"))\r\n                centerPanel.add(component, i);\r\n            else\r\n                centerPanel.add(component, obj, i);\r\n            if(!shown && programFrame != null)\r\n            {\r\n                programFrame.setVisible(true);\r\n                shown = true;\r\n            }\r\n        } else\r\n        {\r\n            super.addImpl(component, obj, i);\r\n        }\r\n    }\r\n\r\n    public void remove(int i)\r\n    {\r\n        if(isRootPaneCheckingEnabled())\r\n            centerPanel.remove(i);\r\n        else\r\n            super.remove(i);\r\n    }\r\n\r\n    public void remove(Component component)\r\n    {\r\n        if(isRootPaneCheckingEnabled())\r\n            centerPanel.remove(component);\r\n        else\r\n            super.remove(component);\r\n    }\r\n\r\n    public void removeAll()\r\n    {\r\n        if(isRootPaneCheckingEnabled())\r\n            centerPanel.removeAll();\r\n        else\r\n            super.removeAll();\r\n    }\r\n\r\n    public void validate()\r\n    {\r\n        if(isRootPaneCheckingEnabled())\r\n            getContentPane().validate();\r\n        super.validate();\r\n    }\r\n\r\n    public void repaint()\r\n    {\r\n        if(isRootPaneCheckingEnabled())\r\n            getContentPane().repaint();\r\n        super.repaint();\r\n    }\r\n\r\n    public final void start()\r\n    {\r\n        appletMode = getParent() != null;\r\n        if(appletMode)\r\n        {\r\n            if(!started)\r\n            {\r\n                started = true;\r\n                validate();\r\n                setVisible(true);\r\n                appletStarter = new AppletStarter(this);\r\n                appletStarter.start();\r\n            }\r\n        } else\r\n        {\r\n            start(null);\r\n        }\r\n    }\r\n\r\n    public void destroy()\r\n    {\r\n        Animator.shutdown(this);\r\n        if(appletStarter != null)\r\n            appletStarter.stop();\r\n    }\r\n\r\n    public static void main(String args[])\r\n    {\r\n        HashMap hashmap = createParameterTable(args);\r\n        JTFTools.setDebugOptions((String)hashmap.get(\"debug\"));\r\n        String s = (String)hashmap.get(\"code\");\r\n        if(s == null)\r\n            s = JTFTools.getMainClass();\r\n        Class class1 = null;\r\n        Program program = null;\r\n        if(s != null)\r\n        {\r\n            if(s.endsWith(\".class\"))\r\n                s = s.substring(0, s.length() - 6);\r\n            s = s.replace('/', '.');\r\n            CommandLineProgram.checkIfHeadless(s);\r\n            try\r\n            {\r\n                class1 = Class.forName(s);\r\n            }\r\n            catch(ClassNotFoundException classnotfoundexception) { }\r\n        }\r\n        if(class1 != null)\r\n            try\r\n            {\r\n                Object obj = class1.newInstance();\r\n                if(obj instanceof Program)\r\n                {\r\n                    program = (Program)obj;\r\n                    program.setStartupObject(null);\r\n                } else\r\n                {\r\n                    String s1 = (String)hashmap.get(\"program\");\r\n                    if(s1 == null)\r\n                        throw new ErrorException(\"Main class does not specify a program\");\r\n                    program = (Program)Class.forName(s1).newInstance();\r\n                    program.setStartupObject(obj);\r\n                }\r\n            }\r\n            catch(IllegalAccessException illegalaccessexception) { }\r\n            catch(InstantiationException instantiationexception) { }\r\n            catch(ClassNotFoundException classnotfoundexception1) { }\r\n        if(program == null)\r\n        {\r\n            throw new ErrorException(\"Cannot determine the main class.\");\r\n        } else\r\n        {\r\n            program.setParameterTable(hashmap);\r\n            program.start();\r\n            return;\r\n        }\r\n    }\r\n\r\n    public boolean menuAction(ActionEvent actionevent)\r\n    {\r\n        String s = actionevent.getActionCommand();\r\n        if(s.equals(\"Quit\"))\r\n        {\r\n            exit();\r\n        } else\r\n        {\r\n            if(s.equals(\"Print\"))\r\n            {\r\n                Frame frame = JTFTools.getEnclosingFrame(this);\r\n                if(frame == null)\r\n                    return true;\r\n                PrintJob printjob = frame.getToolkit().getPrintJob(frame, myTitle, null);\r\n                if(printjob == null)\r\n                {\r\n                    return true;\r\n                } else\r\n                {\r\n                    Graphics g = printjob.getGraphics();\r\n                    g.translate(36, 36);\r\n                    frame.printAll(g);\r\n                    printjob.end();\r\n                    return true;\r\n                }\r\n            }\r\n            if(s.equals(\"Export Applet\") || s.equals(\"Submit Project\"))\r\n            {\r\n                JTFTools.executeExportAction(this, s);\r\n                return true;\r\n            }\r\n        }\r\n        return getConsole().menuAction(actionevent);\r\n    }\r\n\r\n    protected Component getBorder(String s)\r\n    {\r\n        if(s.equals(\"North\"))\r\n            return northBorder;\r\n        if(s.equals(\"South\"))\r\n            return southBorder;\r\n        if(s.equals(\"East\"))\r\n            return eastBorder;\r\n        if(s.equals(\"West\"))\r\n            return westBorder;\r\n        else\r\n            throw new ErrorException((new StringBuilder()).append(\"Illegal border specification - \").append(s).toString());\r\n    }\r\n\r\n    protected String[] getArgumentArray()\r\n    {\r\n        if(parameterTable == null)\r\n            return null;\r\n        StringTokenizer stringtokenizer = new StringTokenizer((String)parameterTable.get(\"ARGS\"), \"\\t\", false);\r\n        String as[] = new String[stringtokenizer.countTokens()];\r\n        for(int i = 0; stringtokenizer.hasMoreTokens(); i++)\r\n            as[i] = stringtokenizer.nextToken();\r\n\r\n        return as;\r\n    }\r\n\r\n    protected boolean isStarted()\r\n    {\r\n        IOConsole ioconsole = getConsole();\r\n        if(ioconsole == null)\r\n            return false;\r\n        if(ioconsole.getParent() == null)\r\n        {\r\n            return true;\r\n        } else\r\n        {\r\n            Dimension dimension = ioconsole.getSize();\r\n            return ioconsole.isShowing() && dimension.width != 0 && dimension.height != 0;\r\n        }\r\n    }\r\n\r\n    protected void startHook()\r\n    {\r\n    }\r\n\r\n    protected void endHook()\r\n    {\r\n    }\r\n\r\n    protected void setAppletStub(AppletStub appletstub)\r\n    {\r\n        appletStub = appletstub;\r\n        setStub(appletstub);\r\n    }\r\n\r\n    protected AppletStub getAppletStub()\r\n    {\r\n        return appletStub;\r\n    }\r\n\r\n    protected void setParameterTable(HashMap hashmap)\r\n    {\r\n        parameterTable = hashmap;\r\n    }\r\n\r\n    protected HashMap getParameterTable()\r\n    {\r\n        return parameterTable;\r\n    }\r\n\r\n    protected void setStartupObject(Object obj)\r\n    {\r\n        startupObject = obj;\r\n    }\r\n\r\n    protected Object getStartupObject()\r\n    {\r\n        return startupObject;\r\n    }\r\n\r\n    protected void startRun()\r\n    {\r\n        ProgramStartupListener programstartuplistener = new ProgramStartupListener();\r\n        javax.swing.JRootPane jrootpane = getRootPane();\r\n        if(jrootpane.isShowing())\r\n        {\r\n            jrootpane.addComponentListener(programstartuplistener);\r\n            jrootpane.validate();\r\n            programstartuplistener.waitForStartup(this);\r\n            jrootpane.update(jrootpane.getGraphics());\r\n        }\r\n        jrootpane.setCursor(Cursor.getDefaultCursor());\r\n        initFinished = true;\r\n        startHook();\r\n        runHook();\r\n        endHook();\r\n        if(!jrootpane.isShowing() && !getContentPane().isShowing())\r\n            exit();\r\n    }\r\n\r\n    protected void runHook()\r\n    {\r\n        run();\r\n    }\r\n\r\n    protected String getMyCaller()\r\n    {\r\n        StackTraceElement astacktraceelement[] = (new Throwable()).getStackTrace();\r\n        return (new StringBuilder()).append(astacktraceelement[2].getClassName()).append(\".\").append(astacktraceelement[2].getMethodName()).toString();\r\n    }\r\n\r\n    protected static HashMap createParameterTable(String as[])\r\n    {\r\n        if(as == null)\r\n            return null;\r\n        HashMap hashmap = new HashMap();\r\n        String s = \"\";\r\n        for(int i = 0; i < as.length; i++)\r\n        {\r\n            String s1 = as[i];\r\n            int j = s1.indexOf('=');\r\n            if(j > 0)\r\n            {\r\n                String s2 = s1.substring(0, j).toLowerCase();\r\n                String s3 = s1.substring(j + 1);\r\n                hashmap.put(s2, s3);\r\n                continue;\r\n            }\r\n            if(s.length() > 0)\r\n                s = (new StringBuilder()).append(s).append('\\t').toString();\r\n            s = (new StringBuilder()).append(s).append(s1).toString();\r\n        }\r\n\r\n        hashmap.put(\"ARGS\", s);\r\n        return hashmap;\r\n    }\r\n\r\n    private void initContentPane(Container container)\r\n    {\r\n        container.setLayout(new ProgramContentPaneLayout(this));\r\n        northPanel = new JPanel();\r\n        southPanel = new JPanel();\r\n        eastPanel = new JPanel();\r\n        westPanel = new JPanel();\r\n        centerPanel = new JPanel();\r\n        northPanel.setLayout(new TableLayout(1, 0, 5, 5));\r\n        southPanel.setLayout(new TableLayout(1, 0, 5, 5));\r\n        westPanel.setLayout(new TableLayout(0, 1, 5, 5));\r\n        eastPanel.setLayout(new TableLayout(0, 1, 5, 5));\r\n        centerPanel.setLayout(new GridLayout(1, 0));\r\n        container.add(northPanel, \"North\");\r\n        container.add(southPanel, \"South\");\r\n        container.add(eastPanel, \"East\");\r\n        container.add(westPanel, \"West\");\r\n        container.add(centerPanel, \"Center\");\r\n    }\r\n\r\n    private void addActionListeners(Component component, ActionListener actionlistener)\r\n    {\r\n        if(isButton(component))\r\n        {\r\n            if(!hasActionListener(component))\r\n                try\r\n                {\r\n                    Class aclass[] = {\r\n                        Class.forName(\"java.awt.event.ActionListener\")\r\n                    };\r\n                    Object aobj[] = {\r\n                        actionlistener\r\n                    };\r\n                    Method method = component.getClass().getMethod(\"addActionListener\", aclass);\r\n                    method.invoke(component, aobj);\r\n                }\r\n                catch(Exception exception)\r\n                {\r\n                    throw new ErrorException(exception);\r\n                }\r\n        } else\r\n        if(component instanceof Container)\r\n        {\r\n            Container container = (Container)component;\r\n            int i = container.getComponentCount();\r\n            for(int j = 0; j < i; j++)\r\n                addActionListeners(container.getComponent(j), actionlistener);\r\n\r\n        }\r\n    }\r\n\r\n    private boolean isButton(Component component)\r\n    {\r\n        return (component instanceof Button) || (component instanceof JButton);\r\n    }\r\n\r\n    private boolean hasActionListener(Component component)\r\n    {\r\n        ActionListener aactionlistener[];\r\n        Method method = component.getClass().getMethod(\"getActionListeners\", new Class[0]);\r\n        aactionlistener = (ActionListener[])(ActionListener[])method.invoke(component, new Object[0]);\r\n        return aactionlistener.length > 0;\r\n        Exception exception;\r\n        exception;\r\n        return false;\r\n    }\r\n\r\n    private void initApplicationFrame()\r\n    {\r\n        programFrame = createProgramFrame();\r\n        ((ProgramAppletStub)appletStub).setFrame(programFrame);\r\n        Container container = programFrame.getContentPane();\r\n        container.setLayout(new BorderLayout());\r\n        container.add(getContentPane(), \"Center\");\r\n        programFrame.addWindowListener(new ProgramWindowListener(this));\r\n        programBounds = computeProgramBounds();\r\n        Insets insets = programFrame.getInsets();\r\n        int i = programBounds.width + insets.left + insets.right;\r\n        int j = programBounds.height + insets.top + insets.bottom;\r\n        programFrame.setBounds(programBounds.x, programBounds.y, i, j);\r\n    }\r\n\r\n    private int decodeSizeParameter(String s, int i, int j)\r\n    {\r\n        String s1;\r\n        s1 = getParameter(s);\r\n        if(s1 != null)\r\n            break MISSING_BLOCK_LABEL_97;\r\n        Object obj;\r\n        Class class1 = getClass();\r\n        Field field = class1.getField((new StringBuilder()).append(\"APPLICATION_\").append(s).toString());\r\n        obj = field.get(null);\r\n        if(obj instanceof Integer)\r\n            return ((Integer)obj).intValue();\r\n        if(obj instanceof String)\r\n        {\r\n            s1 = (String)obj;\r\n            break MISSING_BLOCK_LABEL_97;\r\n        }\r\n        return i;\r\n        Exception exception;\r\n        exception;\r\n        return i;\r\n        if(s1.equals(\"*\"))\r\n            s1 = \"100%\";\r\n        if(s1.endsWith(\"%\"))\r\n        {\r\n            int k = Integer.parseInt(s1.substring(0, s1.length() - 1));\r\n            return (int)Math.round(((double)k / 100D) * (double)j);\r\n        } else\r\n        {\r\n            return Integer.parseInt(s1);\r\n        }\r\n    }\r\n\r\n    private Rectangle computeProgramBounds()\r\n    {\r\n        Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();\r\n        int i = decodeSizeParameter(\"WIDTH\", 754, dimension.width);\r\n        int j = decodeSizeParameter(\"HEIGHT\", 492, dimension.height);\r\n        int k = decodeSizeParameter(\"X\", i < dimension.width ? 16 : 0, dimension.width);\r\n        int l = decodeSizeParameter(\"Y\", j < dimension.height ? 40 : 0, dimension.height);\r\n        return new Rectangle(k, l, i, j);\r\n    }\r\n\r\n    private boolean checkForAppletMode()\r\n    {\r\n        StackTraceElement astacktraceelement[] = (new Throwable()).getStackTrace();\r\n        for(int i = 1; i < astacktraceelement.length; i++)\r\n            if(astacktraceelement[i].getMethodName().indexOf(\"Applet\") >= 0)\r\n                return true;\r\n\r\n        return false;\r\n    }\r\n\r\n    private void circumventFrameSizeBug(Frame frame, Dimension dimension)\r\n    {\r\n        Container container = getContentPane();\r\n        Dimension dimension1 = container.getSize();\r\n        if(dimension.equals(dimension1) || dimension1.width == 0 || dimension1.height == 0)\r\n        {\r\n            return;\r\n        } else\r\n        {\r\n            Dimension dimension2 = frame.getSize();\r\n            dimension2.width += dimension.width - dimension1.width;\r\n            dimension2.height += dimension.height - dimension1.height;\r\n            frame.setSize(dimension2.width, dimension2.height);\r\n            frame.validate();\r\n            return;\r\n        }\r\n    }\r\n\r\n    public static final String NORTH = \"North\";\r\n    public static final String SOUTH = \"South\";\r\n    public static final String EAST = \"East\";\r\n    public static final String WEST = \"West\";\r\n    public static final String CENTER = \"Center\";\r\n    private static final int DEFAULT_X = 16;\r\n    private static final int DEFAULT_Y = 40;\r\n    private static final int DEFAULT_WIDTH = 754;\r\n    private static final int DEFAULT_HEIGHT = 492;\r\n    private static final int PRINT_MARGIN = 36;\r\n    private ArrayList finalizers;\r\n    private HashMap parameterTable;\r\n    private JFrame programFrame;\r\n    private AppletStub appletStub;\r\n    private String myTitle;\r\n    private ProgramMenuBar myMenuBar;\r\n    private Component northBorder;\r\n    private Component southBorder;\r\n    private Component eastBorder;\r\n    private Component westBorder;\r\n    private JPanel northPanel;\r\n    private JPanel southPanel;\r\n    private JPanel eastPanel;\r\n    private JPanel westPanel;\r\n    private JPanel centerPanel;\r\n    private IOConsole myConsole;\r\n    private IODialog myDialog;\r\n    private IOModel inputModel;\r\n    private IOModel outputModel;\r\n    private Object startupObject;\r\n    private AppletStarter appletStarter;\r\n    private Rectangle programBounds;\r\n    private boolean started;\r\n    private boolean shown;\r\n    private boolean initFinished;\r\n    private boolean appletMode;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/program/ProgramActionListener.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   Program.java\r\n\r\npackage acm.program;\r\n\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\n\r\n// Referenced classes of package acm.program:\r\n//            Program\r\n\r\nclass ProgramActionListener\r\n    implements ActionListener\r\n{\r\n\r\n    public ProgramActionListener(Program program1)\r\n    {\r\n        program = program1;\r\n    }\r\n\r\n    public void actionPerformed(ActionEvent actionevent)\r\n    {\r\n        program.menuAction(actionevent);\r\n    }\r\n\r\n    private Program program;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/program/ProgramAppletStub.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   Program.java\r\n\r\npackage acm.program;\r\n\r\nimport acm.util.ErrorException;\r\nimport java.applet.*;\r\nimport java.awt.Frame;\r\nimport java.awt.Image;\r\nimport java.awt.image.ImageProducer;\r\nimport java.io.*;\r\nimport java.lang.reflect.Method;\r\nimport java.net.MalformedURLException;\r\nimport java.net.URL;\r\nimport java.util.*;\r\n\r\n// Referenced classes of package acm.program:\r\n//            Program\r\n\r\nclass ProgramAppletStub\r\n    implements AppletContext, AppletStub\r\n{\r\n\r\n    public ProgramAppletStub(Program program)\r\n    {\r\n        applet = program;\r\n    }\r\n\r\n    public void setFrame(Frame frame)\r\n    {\r\n        enclosure = frame;\r\n    }\r\n\r\n    public boolean isActive()\r\n    {\r\n        return true;\r\n    }\r\n\r\n    public URL getDocumentBase()\r\n    {\r\n        return getCodeBase();\r\n    }\r\n\r\n    public URL getCodeBase()\r\n    {\r\n        return new URL((new StringBuilder()).append(\"file:\").append(getCanonicalPath(\".\")).toString());\r\n        MalformedURLException malformedurlexception;\r\n        malformedurlexception;\r\n        throw new ErrorException(\"Error: Illegal document base URL\");\r\n    }\r\n\r\n    public String getParameter(String s)\r\n    {\r\n        return null;\r\n    }\r\n\r\n    public AppletContext getAppletContext()\r\n    {\r\n        return this;\r\n    }\r\n\r\n    public void appletResize(int i, int j)\r\n    {\r\n        if(enclosure == null)\r\n        {\r\n            if(!recursiveResizeCheck)\r\n            {\r\n                recursiveResizeCheck = true;\r\n                applet.resize(i, j);\r\n                applet.validate();\r\n                recursiveResizeCheck = false;\r\n            }\r\n        } else\r\n        {\r\n            enclosure.setSize(i, j);\r\n            enclosure.validate();\r\n        }\r\n    }\r\n\r\n    public AudioClip getAudioClip(URL url)\r\n    {\r\n        AudioClip audioclip = null;\r\n        if(audioclip == null)\r\n            audioclip = getNewAudioClip(url);\r\n        return audioclip;\r\n    }\r\n\r\n    public Image getImage(URL url)\r\n    {\r\n        Object obj = url.getContent();\r\n        if(obj instanceof ImageProducer)\r\n            return applet.createImage((ImageProducer)obj);\r\n        break MISSING_BLOCK_LABEL_28;\r\n        IOException ioexception;\r\n        ioexception;\r\n        return null;\r\n    }\r\n\r\n    public Applet getApplet(String s)\r\n    {\r\n        return null;\r\n    }\r\n\r\n    public Enumeration getApplets()\r\n    {\r\n        return (new Vector()).elements();\r\n    }\r\n\r\n    public void showDocument(URL url)\r\n    {\r\n        if(applet != null)\r\n            applet.getAppletContext().showDocument(url);\r\n    }\r\n\r\n    public void showDocument(URL url, String s)\r\n    {\r\n        if(applet != null)\r\n            applet.getAppletContext().showDocument(url, s);\r\n    }\r\n\r\n    public void showStatus(String s)\r\n    {\r\n        if(applet == null)\r\n            System.out.println(s);\r\n        else\r\n            applet.showStatus(s);\r\n    }\r\n\r\n    public void setStream(String s, InputStream inputstream)\r\n    {\r\n        throw new ErrorException(\"setStream: unimplemented operation\");\r\n    }\r\n\r\n    public InputStream getStream(String s)\r\n    {\r\n        throw new ErrorException(\"getStream: unimplemented operation\");\r\n    }\r\n\r\n    public Iterator getStreamKeys()\r\n    {\r\n        throw new ErrorException(\"getStreamKeys: unimplemented operation\");\r\n    }\r\n\r\n    private String getCanonicalPath(String s)\r\n    {\r\n        String s1;\r\n        int i;\r\n        for(s1 = (new File(s)).getAbsolutePath(); (i = s1.indexOf(' ')) != -1; s1 = (new StringBuilder()).append(s1.substring(0, i)).append(\"%20\").append(s1.substring(i + 1)).toString());\r\n        return s1;\r\n    }\r\n\r\n    private synchronized AudioClip getNewAudioClip(URL url)\r\n    {\r\n        Object aobj[];\r\n        Method method;\r\n        Class class1 = Class.forName(\"java.applet.Applet\");\r\n        Class aclass[] = {\r\n            Class.forName(\"java.net.URL\")\r\n        };\r\n        aobj = (new Object[] {\r\n            url\r\n        });\r\n        method = class1.getMethod(\"newAudioClip\", aclass);\r\n        return (AudioClip)method.invoke(null, aobj);\r\n        Exception exception;\r\n        exception;\r\n        return null;\r\n    }\r\n\r\n    private Applet applet;\r\n    private Frame enclosure;\r\n    private boolean recursiveResizeCheck;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/program/ProgramContentPaneLayout.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   Program.java\r\n\r\npackage acm.program;\r\n\r\nimport java.awt.*;\r\nimport java.awt.event.ComponentEvent;\r\n\r\n// Referenced classes of package acm.program:\r\n//            Program\r\n\r\nclass ProgramContentPaneLayout extends BorderLayout\r\n{\r\n\r\n    public ProgramContentPaneLayout(Program program)\r\n    {\r\n        myProgram = program;\r\n    }\r\n\r\n    public void layoutContainer(Container container)\r\n    {\r\n        super.layoutContainer(container);\r\n        if(!myProgram.isAncestorOf(container))\r\n        {\r\n            Dimension dimension = container.getSize();\r\n            Insets insets = container.getInsets();\r\n            int i = insets.left;\r\n            int j = insets.top;\r\n            int k = dimension.width - insets.left - insets.right;\r\n            int l = dimension.height - insets.top - insets.bottom;\r\n            myProgram.setBounds(i, j, k, l);\r\n            ComponentEvent componentevent = new ComponentEvent(myProgram, 101);\r\n            Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(componentevent);\r\n        }\r\n    }\r\n\r\n    private Program myProgram;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/program/ProgramFrame.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   Program.java\r\n\r\npackage acm.program;\r\n\r\nimport java.awt.Graphics;\r\nimport javax.swing.JFrame;\r\n\r\nclass ProgramFrame extends JFrame\r\n{\r\n\r\n    public ProgramFrame(String s)\r\n    {\r\n        super(s);\r\n    }\r\n\r\n    public void update(Graphics g)\r\n    {\r\n        paint(g);\r\n    }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/program/ProgramMenuBar.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   ProgramMenuBar.java\r\n\r\npackage acm.program;\r\n\r\nimport acm.util.ErrorException;\r\nimport acm.util.Platform;\r\nimport java.awt.*;\r\nimport java.awt.event.*;\r\nimport java.util.*;\r\nimport javax.swing.*;\r\n\r\n// Referenced classes of package acm.program:\r\n//            ProgramMenuBarListener, OldStyleCheckBoxMenuItem, OldStyleMenuItem, Program\r\n\r\npublic class ProgramMenuBar extends JMenuBar\r\n    implements Iterable\r\n{\r\n\r\n    public ProgramMenuBar(Program program1)\r\n    {\r\n        program = program1;\r\n        menuBarListener = new ProgramMenuBarListener(this);\r\n        focusedListener = null;\r\n        accelerators = new HashMap();\r\n        focusedItems = new HashSet();\r\n        macMenuBarFlag = true;\r\n        addMenus();\r\n    }\r\n\r\n    public Program getProgram()\r\n    {\r\n        return program;\r\n    }\r\n\r\n    public JMenuItem createStandardItem(String s)\r\n    {\r\n        JMenuItem jmenuitem = null;\r\n        if(s.equals(\"Quit\"))\r\n        {\r\n            jmenuitem = createProgramItem(s);\r\n            if(Platform.isMac())\r\n                setAccelerator(jmenuitem, 81);\r\n            else\r\n                jmenuitem.setName(\"Exit\");\r\n        } else\r\n        if(s.equals(\"Cut\"))\r\n        {\r\n            jmenuitem = createFocusedItem(s, 88);\r\n            if(!Platform.isMac())\r\n                jmenuitem.setName(\"Cut (x)\");\r\n        } else\r\n        if(s.equals(\"Copy\"))\r\n        {\r\n            jmenuitem = createFocusedItem(s, 67);\r\n            if(!Platform.isMac())\r\n                jmenuitem.setName(\"Copy (c)\");\r\n        } else\r\n        if(s.equals(\"Paste\"))\r\n        {\r\n            jmenuitem = createFocusedItem(s, 86);\r\n            if(!Platform.isMac())\r\n                jmenuitem.setName(\"Paste (v)\");\r\n        } else\r\n        if(s.equals(\"Select All\"))\r\n            jmenuitem = createFocusedItem(s, 65);\r\n        else\r\n        if(s.equals(\"Save\"))\r\n            jmenuitem = createFocusedItem(s, 83);\r\n        else\r\n        if(s.equals(\"Save As\"))\r\n            jmenuitem = createFocusedItem(s);\r\n        else\r\n        if(s.equals(\"Print\"))\r\n        {\r\n            jmenuitem = createProgramItem(s, 80);\r\n            jmenuitem.setName(\"Print...\");\r\n        } else\r\n        if(s.equals(\"Print Console\"))\r\n            jmenuitem = createProgramItem(s);\r\n        else\r\n        if(s.equals(\"Script\"))\r\n        {\r\n            jmenuitem = createProgramItem(s);\r\n            jmenuitem.setName(\"Script...\");\r\n        } else\r\n        if(s.equals(\"Export Applet\"))\r\n        {\r\n            jmenuitem = createProgramItem(s);\r\n            jmenuitem.setName(\"Export Applet...\");\r\n        } else\r\n        if(s.equals(\"Submit Project\"))\r\n        {\r\n            jmenuitem = createProgramItem(s);\r\n            jmenuitem.setName(\"Submit Project...\");\r\n        } else\r\n        {\r\n            throw new ErrorException((new StringBuilder()).append(\"Illegal standard menu item: \").append(s).toString());\r\n        }\r\n        return jmenuitem;\r\n    }\r\n\r\n    public JMenuItem createProgramItem(String s)\r\n    {\r\n        JMenuItem jmenuitem = new JMenuItem(s);\r\n        jmenuitem.setActionCommand(s);\r\n        jmenuitem.addActionListener(menuBarListener);\r\n        return jmenuitem;\r\n    }\r\n\r\n    public JMenuItem createProgramItem(String s, int i)\r\n    {\r\n        JMenuItem jmenuitem = createProgramItem(s);\r\n        setAccelerator(jmenuitem, i);\r\n        return jmenuitem;\r\n    }\r\n\r\n    public JMenuItem createFocusedItem(String s)\r\n    {\r\n        JMenuItem jmenuitem = createProgramItem(s);\r\n        focusedItems.add(jmenuitem);\r\n        return jmenuitem;\r\n    }\r\n\r\n    public JMenuItem createFocusedItem(String s, int i)\r\n    {\r\n        JMenuItem jmenuitem = createFocusedItem(s);\r\n        setAccelerator(jmenuitem, i);\r\n        return jmenuitem;\r\n    }\r\n\r\n    public boolean isFocusedItem(JMenuItem jmenuitem)\r\n    {\r\n        return focusedItems.contains(jmenuitem);\r\n    }\r\n\r\n    public void setAccelerator(JMenuItem jmenuitem, int i)\r\n    {\r\n        int j = Platform.isMac() ? 4 : 2;\r\n        if(i > 0x10000)\r\n        {\r\n            i -= 0x20000;\r\n            j |= 1;\r\n        }\r\n        KeyStroke keystroke = KeyStroke.getKeyStroke((char)i, j);\r\n        accelerators.put(keystroke, jmenuitem);\r\n        if(Platform.isMac())\r\n            jmenuitem.setAccelerator(keystroke);\r\n        else\r\n            jmenuitem.setMnemonic(i);\r\n    }\r\n\r\n    public void setEnabled(String s, boolean flag)\r\n    {\r\n        int i = getMenuCount();\r\n        for(int j = 0; j < i; j++)\r\n            setEnabled(getMenu(j), s, flag);\r\n\r\n    }\r\n\r\n    public void install(Component component)\r\n    {\r\n        java.awt.Container container = program.getContentPane();\r\n        while(component != null && !(component instanceof JFrame)) \r\n        {\r\n            component = component.getParent();\r\n            if(component == container && program.isAppletMode())\r\n            {\r\n                if(!Platform.isMac() || !macMenuBarFlag)\r\n                    program.setJMenuBar(this);\r\n                return;\r\n            }\r\n        }\r\n        if(component == null)\r\n            return;\r\n        JFrame jframe = (JFrame)component;\r\n        if(Platform.isMac() && macMenuBarFlag)\r\n        {\r\n            if(oldStyleMenuBar == null)\r\n                oldStyleMenuBar = createOldStyleMenuBar();\r\n            jframe.setMenuBar(oldStyleMenuBar);\r\n        } else\r\n        {\r\n            jframe.setJMenuBar(this);\r\n            jframe.validate();\r\n        }\r\n    }\r\n\r\n    public void setMacMenuBarFlag(boolean flag)\r\n    {\r\n        macMenuBarFlag = flag;\r\n    }\r\n\r\n    public boolean getMacMenuBarFlag()\r\n    {\r\n        return macMenuBarFlag;\r\n    }\r\n\r\n    public void fireActionListeners(ActionEvent actionevent)\r\n    {\r\n        if(focusedListener != null && focusedItems.contains(actionevent.getSource()))\r\n            focusedListener.actionPerformed(actionevent);\r\n        else\r\n            program.menuAction(actionevent);\r\n    }\r\n\r\n    public boolean fireAccelerator(KeyEvent keyevent)\r\n    {\r\n        KeyStroke keystroke = KeyStroke.getKeyStrokeForEvent(keyevent);\r\n        JMenuItem jmenuitem = (JMenuItem)accelerators.get(keystroke);\r\n        if(jmenuitem != null)\r\n        {\r\n            jmenuitem.doClick(0);\r\n            return true;\r\n        } else\r\n        {\r\n            return false;\r\n        }\r\n    }\r\n\r\n    public void setFocusedListener(ActionListener actionlistener)\r\n    {\r\n        focusedListener = actionlistener;\r\n    }\r\n\r\n    public Iterator iterator()\r\n    {\r\n        ArrayList arraylist = new ArrayList();\r\n        for(int i = 0; i < getMenuCount(); i++)\r\n            addItemToList(arraylist, getMenu(i));\r\n\r\n        return arraylist.iterator();\r\n    }\r\n\r\n    protected void addMenus()\r\n    {\r\n        addFileMenu();\r\n        addEditMenu();\r\n    }\r\n\r\n    protected void addFileMenu()\r\n    {\r\n        JMenu jmenu = new JMenu(\"File\");\r\n        jmenu.setMnemonic('F');\r\n        addFileMenuItems(jmenu);\r\n        add(jmenu);\r\n    }\r\n\r\n    protected void addEditMenu()\r\n    {\r\n        JMenu jmenu = new JMenu(\"Edit\");\r\n        jmenu.setMnemonic('E');\r\n        addEditMenuItems(jmenu);\r\n        add(jmenu);\r\n    }\r\n\r\n    protected void addFileMenuItems(JMenu jmenu)\r\n    {\r\n        jmenu.add(createStandardItem(\"Save\"));\r\n        jmenu.add(createStandardItem(\"Save As\"));\r\n        jmenu.addSeparator();\r\n        jmenu.add(createStandardItem(\"Print\"));\r\n        jmenu.add(createStandardItem(\"Print Console\"));\r\n        jmenu.add(createStandardItem(\"Script\"));\r\n        jmenu.addSeparator();\r\n        jmenu.add(createStandardItem(\"Export Applet\"));\r\n        jmenu.add(createStandardItem(\"Submit Project\"));\r\n        jmenu.addSeparator();\r\n        jmenu.add(createStandardItem(\"Quit\"));\r\n    }\r\n\r\n    protected void addEditMenuItems(JMenu jmenu)\r\n    {\r\n        jmenu.add(createStandardItem(\"Cut\"));\r\n        jmenu.add(createStandardItem(\"Copy\"));\r\n        jmenu.add(createStandardItem(\"Paste\"));\r\n        jmenu.add(createStandardItem(\"Select All\"));\r\n    }\r\n\r\n    private void addItemToList(ArrayList arraylist, JMenuItem jmenuitem)\r\n    {\r\n        if(jmenuitem == null)\r\n            return;\r\n        if(jmenuitem instanceof JMenu)\r\n        {\r\n            JMenu jmenu = (JMenu)jmenuitem;\r\n            for(int i = 0; i < jmenu.getItemCount(); i++)\r\n                addItemToList(arraylist, jmenu.getItem(i));\r\n\r\n        } else\r\n        {\r\n            arraylist.add(jmenuitem);\r\n        }\r\n    }\r\n\r\n    private MenuBar createOldStyleMenuBar()\r\n    {\r\n        MenuBar menubar = new MenuBar();\r\n        int i = getMenuCount();\r\n        for(int j = 0; j < i; j++)\r\n            menubar.add(createOldStyleMenu(getMenu(j)));\r\n\r\n        return menubar;\r\n    }\r\n\r\n    private Menu createOldStyleMenu(JMenu jmenu)\r\n    {\r\n        Menu menu = new Menu(jmenu.getText());\r\n        int i = jmenu.getItemCount();\r\n        for(int j = 0; j < i; j++)\r\n            menu.add(createOldStyleMenuItem(jmenu.getItem(j)));\r\n\r\n        return menu;\r\n    }\r\n\r\n    private MenuItem createOldStyleMenuItem(Object obj)\r\n    {\r\n        if(obj == null)\r\n            return new MenuItem(\"-\");\r\n        if(obj instanceof JMenu)\r\n            return createOldStyleMenu((JMenu)obj);\r\n        if(obj instanceof JCheckBoxMenuItem)\r\n            return new OldStyleCheckBoxMenuItem((JCheckBoxMenuItem)obj);\r\n        if(obj instanceof JMenuItem)\r\n            return new OldStyleMenuItem((JMenuItem)obj);\r\n        else\r\n            throw new ErrorException(\"Unsupported menu item type\");\r\n    }\r\n\r\n    private void setEnabled(JMenu jmenu, String s, boolean flag)\r\n    {\r\n        JMenu jmenu1 = jmenu;\r\n        int i = jmenu1.getItemCount();\r\n        for(int j = 0; j < i; j++)\r\n        {\r\n            JMenuItem jmenuitem = jmenu1.getItem(j);\r\n            if(jmenuitem != null)\r\n                setEnabled(jmenuitem, s, flag);\r\n        }\r\n\r\n    }\r\n\r\n    private void setEnabled(JMenuItem jmenuitem, String s, boolean flag)\r\n    {\r\n        if(s.equals(jmenuitem.getActionCommand()))\r\n            jmenuitem.setEnabled(flag);\r\n    }\r\n\r\n    public static final int SHIFT = 0x20000;\r\n    private Program program;\r\n    private ActionListener menuBarListener;\r\n    private ActionListener focusedListener;\r\n    private HashMap accelerators;\r\n    private HashSet focusedItems;\r\n    private MenuBar oldStyleMenuBar;\r\n    private boolean macMenuBarFlag;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/program/ProgramMenuBarListener.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   ProgramMenuBar.java\r\n\r\npackage acm.program;\r\n\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\n\r\n// Referenced classes of package acm.program:\r\n//            ProgramMenuBar\r\n\r\nclass ProgramMenuBarListener\r\n    implements ActionListener\r\n{\r\n\r\n    public ProgramMenuBarListener(ProgramMenuBar programmenubar)\r\n    {\r\n        menuBar = programmenubar;\r\n    }\r\n\r\n    public void actionPerformed(ActionEvent actionevent)\r\n    {\r\n        menuBar.fireActionListeners(actionevent);\r\n    }\r\n\r\n    private ProgramMenuBar menuBar;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/program/ProgramStartupListener.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   Program.java\r\n\r\npackage acm.program;\r\n\r\nimport acm.util.JTFTools;\r\nimport java.awt.event.ComponentEvent;\r\nimport java.awt.event.ComponentListener;\r\n\r\n// Referenced classes of package acm.program:\r\n//            Program\r\n\r\nclass ProgramStartupListener\r\n    implements ComponentListener\r\n{\r\n\r\n    ProgramStartupListener()\r\n    {\r\n    }\r\n\r\n    public synchronized void waitForStartup(Program program)\r\n    {\r\n        JTFTools.pause(1000D);\r\n        while(!program.isStarted()) \r\n            try\r\n            {\r\n                wait(300L);\r\n            }\r\n            catch(InterruptedException interruptedexception) { }\r\n    }\r\n\r\n    public void componentHidden(ComponentEvent componentevent)\r\n    {\r\n    }\r\n\r\n    public void componentMoved(ComponentEvent componentevent)\r\n    {\r\n    }\r\n\r\n    public void componentResized(ComponentEvent componentevent)\r\n    {\r\n        componentShown(componentevent);\r\n    }\r\n\r\n    public synchronized void componentShown(ComponentEvent componentevent)\r\n    {\r\n        notifyAll();\r\n    }\r\n\r\n    private static final int STARTUP_DELAY = 1000;\r\n    private static final int STARTUP_CYCLE = 300;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/program/ProgramWindowListener.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   Program.java\r\n\r\npackage acm.program;\r\n\r\nimport java.awt.Component;\r\nimport java.awt.event.WindowEvent;\r\nimport java.awt.event.WindowListener;\r\n\r\n// Referenced classes of package acm.program:\r\n//            Program\r\n\r\nclass ProgramWindowListener\r\n    implements WindowListener\r\n{\r\n\r\n    public ProgramWindowListener(Program program1)\r\n    {\r\n        program = program1;\r\n    }\r\n\r\n    public void windowClosing(WindowEvent windowevent)\r\n    {\r\n        ((Component)windowevent.getSource()).setVisible(false);\r\n        program.exit();\r\n    }\r\n\r\n    public void windowOpened(WindowEvent windowevent)\r\n    {\r\n    }\r\n\r\n    public void windowClosed(WindowEvent windowevent)\r\n    {\r\n    }\r\n\r\n    public void windowIconified(WindowEvent windowevent)\r\n    {\r\n    }\r\n\r\n    public void windowDeiconified(WindowEvent windowevent)\r\n    {\r\n    }\r\n\r\n    public void windowActivated(WindowEvent windowevent)\r\n    {\r\n    }\r\n\r\n    public void windowDeactivated(WindowEvent windowevent)\r\n    {\r\n    }\r\n\r\n    private Program program;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/Animator.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   Animator.java\r\n\r\npackage acm.util;\r\n\r\nimport java.applet.Applet;\r\nimport java.awt.Component;\r\nimport java.lang.reflect.Method;\r\nimport java.util.ArrayList;\r\nimport java.util.HashMap;\r\nimport javax.swing.JScrollBar;\r\nimport javax.swing.JSlider;\r\n\r\n// Referenced classes of package acm.util:\r\n//            ErrorException, JTFTools, SpeedBarListener\r\n\r\npublic class Animator extends Thread\r\n{\r\n\r\n    public Animator()\r\n    {\r\n        animatorState = 0;\r\n        currentDepth = 0;\r\n        callDepth = 0;\r\n        delayCount = 0;\r\n        animatorSpeed = 0.5D;\r\n        initAnimator();\r\n    }\r\n\r\n    public Animator(ThreadGroup threadgroup)\r\n    {\r\n        super(threadgroup, (Runnable)null);\r\n        animatorState = 0;\r\n        currentDepth = 0;\r\n        callDepth = 0;\r\n        delayCount = 0;\r\n        animatorSpeed = 0.5D;\r\n        initAnimator();\r\n    }\r\n\r\n    public Animator(Runnable runnable)\r\n    {\r\n        super(runnable);\r\n        animatorState = 0;\r\n        currentDepth = 0;\r\n        callDepth = 0;\r\n        delayCount = 0;\r\n        animatorSpeed = 0.5D;\r\n        initAnimator();\r\n    }\r\n\r\n    public Animator(ThreadGroup threadgroup, Runnable runnable)\r\n    {\r\n        super(threadgroup, runnable);\r\n        animatorState = 0;\r\n        currentDepth = 0;\r\n        callDepth = 0;\r\n        delayCount = 0;\r\n        animatorSpeed = 0.5D;\r\n        initAnimator();\r\n    }\r\n\r\n    public int getAnimatorState()\r\n    {\r\n        return animatorState;\r\n    }\r\n\r\n    public void pause(double d)\r\n    {\r\n        if(animatorState == 7)\r\n            terminate();\r\n        JTFTools.pause(d);\r\n    }\r\n\r\n    public void startAction()\r\n    {\r\n        start(1);\r\n    }\r\n\r\n    public void stopAction()\r\n    {\r\n        switch(animatorState)\r\n        {\r\n        case 1: // '\\001'\r\n        case 2: // '\\002'\r\n        case 3: // '\\003'\r\n            animatorState = 4;\r\n            break;\r\n        }\r\n    }\r\n\r\n    public void stepAction()\r\n    {\r\n        start(2);\r\n    }\r\n\r\n    public void callAction()\r\n    {\r\n        callDepth = currentDepth;\r\n        start(3);\r\n    }\r\n\r\n    public boolean buttonAction(String s)\r\n    {\r\n        if(s.equals(\"Start\"))\r\n            startAction();\r\n        else\r\n        if(s.equals(\"Stop\"))\r\n            stopAction();\r\n        else\r\n        if(s.equals(\"Step\"))\r\n            stepAction();\r\n        else\r\n        if(s.equals(\"Call\"))\r\n            callAction();\r\n        else\r\n            return false;\r\n        return true;\r\n    }\r\n\r\n    public void setSpeed(double d)\r\n    {\r\n        animatorSpeed = d;\r\n        if(speedBar instanceof JSlider)\r\n        {\r\n            JSlider jslider = (JSlider)speedBar;\r\n            int i = jslider.getMinimum();\r\n            int k = jslider.getMaximum();\r\n            jslider.setValue((int)Math.round((double)i + d * (double)(k - i)));\r\n        } else\r\n        if(speedBar instanceof JScrollBar)\r\n        {\r\n            JScrollBar jscrollbar = (JScrollBar)speedBar;\r\n            int j = jscrollbar.getMinimum();\r\n            int l = jscrollbar.getMaximum();\r\n            jscrollbar.setValue((int)Math.round((double)j + d * (double)(l - j)));\r\n        }\r\n    }\r\n\r\n    public double getSpeed()\r\n    {\r\n        return animatorSpeed;\r\n    }\r\n\r\n    public void trace()\r\n    {\r\n        trace(0);\r\n    }\r\n\r\n    public void trace(int i)\r\n    {\r\n        if(Thread.currentThread() != this)\r\n            throw new ErrorException(\"trace() can be called only by the animator thread itself\");\r\n        currentDepth = i;\r\n        switch(animatorState)\r\n        {\r\n        case 5: // '\\005'\r\n        case 6: // '\\006'\r\n        default:\r\n            break;\r\n\r\n        case 1: // '\\001'\r\n            delay();\r\n            break;\r\n\r\n        case 2: // '\\002'\r\n        case 4: // '\\004'\r\n            breakpoint();\r\n            break;\r\n\r\n        case 3: // '\\003'\r\n            if(callDepth < currentDepth)\r\n                delay();\r\n            else\r\n                breakpoint();\r\n            break;\r\n\r\n        case 7: // '\\007'\r\n            terminate();\r\n            break;\r\n        }\r\n    }\r\n\r\n    public void breakpoint()\r\n    {\r\n        if(Thread.currentThread() != this)\r\n        {\r\n            throw new ErrorException(\"breakpoint() can be called only by the animator thread itself\");\r\n        } else\r\n        {\r\n            animatorState = 5;\r\n            breakHook();\r\n            suspendAnimator();\r\n            return;\r\n        }\r\n    }\r\n\r\n    public void delay()\r\n    {\r\n        boolean flag = true;\r\n        double d = 0.0D;\r\n        if(animatorSpeed < 0.25D)\r\n            d = 1000D + (animatorSpeed / 0.25D) * -800D;\r\n        else\r\n        if(animatorSpeed < 0.90000000000000002D)\r\n        {\r\n            d = 200D + Math.sqrt((animatorSpeed - 0.25D) / 0.65000000000000002D) * -200D;\r\n        } else\r\n        {\r\n            switch((int)(animatorSpeed * 99.989999999999995D - 90D))\r\n            {\r\n            case 0: // '\\0'\r\n                flag = true;\r\n                break;\r\n\r\n            case 1: // '\\001'\r\n                flag = delayCount % 10 != 0;\r\n                break;\r\n\r\n            case 2: // '\\002'\r\n                flag = delayCount % 7 != 0;\r\n                break;\r\n\r\n            case 3: // '\\003'\r\n                flag = delayCount % 5 != 0;\r\n                break;\r\n\r\n            case 4: // '\\004'\r\n                flag = delayCount % 3 != 0;\r\n                break;\r\n\r\n            case 5: // '\\005'\r\n                flag = delayCount % 2 == 0;\r\n                break;\r\n\r\n            case 6: // '\\006'\r\n                flag = delayCount % 3 == 0;\r\n                break;\r\n\r\n            case 7: // '\\007'\r\n                flag = delayCount % 4 == 0;\r\n                break;\r\n\r\n            case 8: // '\\b'\r\n                flag = delayCount % 6 == 0;\r\n                break;\r\n\r\n            case 9: // '\\t'\r\n                flag = false;\r\n                break;\r\n            }\r\n            delayCount = (delayCount + 1) % 420;\r\n        }\r\n        if(flag)\r\n        {\r\n            delayHook();\r\n            JTFTools.pause(d);\r\n        }\r\n    }\r\n\r\n    public void registerSpeedBar(JSlider jslider)\r\n    {\r\n        SpeedBarListener.register(this, jslider);\r\n        speedBar = jslider;\r\n    }\r\n\r\n    public void registerSpeedBar(JScrollBar jscrollbar)\r\n    {\r\n        SpeedBarListener.register(this, jscrollbar);\r\n        speedBar = jscrollbar;\r\n    }\r\n\r\n    public Component getSpeedBar()\r\n    {\r\n        return speedBar;\r\n    }\r\n\r\n    public void requestTermination()\r\n    {\r\n        animatorState = 7;\r\n    }\r\n\r\n    public void checkForTermination()\r\n    {\r\n        if(animatorState == 7)\r\n            terminate();\r\n        else\r\n            yield();\r\n    }\r\n\r\n    public static void shutdown(Applet applet)\r\n    {\r\n        try\r\n        {\r\n            Class class1 = Class.forName(\"java.lang.Thread\");\r\n            Method method = class1.getMethod(\"stop\", new Class[0]);\r\n            Object aobj[] = new Object[0];\r\n            ArrayList arraylist = (ArrayList)animatorTable.get(applet);\r\n            if(arraylist != null)\r\n            {\r\n                animatorTable.remove(applet);\r\n                int i = arraylist.size();\r\n                for(int j = 0; j < i; j++)\r\n                {\r\n                    Thread thread = (Thread)arraylist.get(j);\r\n                    method.invoke(thread, aobj);\r\n                }\r\n\r\n            }\r\n        }\r\n        catch(Exception exception) { }\r\n    }\r\n\r\n    protected void delayHook()\r\n    {\r\n    }\r\n\r\n    protected void breakHook()\r\n    {\r\n    }\r\n\r\n    protected void resumeHook()\r\n    {\r\n    }\r\n\r\n    protected void controllerHook()\r\n    {\r\n    }\r\n\r\n    public void start()\r\n    {\r\n        start(1);\r\n    }\r\n\r\n    private void initAnimator()\r\n    {\r\n        Applet applet = JTFTools.getApplet();\r\n        if(applet != null)\r\n        {\r\n            JTFTools.registerApplet(applet, this);\r\n            ArrayList arraylist = (ArrayList)animatorTable.get(applet);\r\n            if(arraylist == null)\r\n            {\r\n                arraylist = new ArrayList();\r\n                animatorTable.put(applet, arraylist);\r\n            }\r\n            arraylist.add(this);\r\n        }\r\n    }\r\n\r\n    private void start(int i)\r\n    {\r\n        switch(animatorState)\r\n        {\r\n        case 0: // '\\0'\r\n        case 6: // '\\006'\r\n            animatorState = i;\r\n            resumeHook();\r\n            controllerHook();\r\n            super.start();\r\n            break;\r\n\r\n        case 5: // '\\005'\r\n            animatorState = i;\r\n            resumeHook();\r\n            controllerHook();\r\n            resumeAnimator();\r\n            break;\r\n        }\r\n    }\r\n\r\n    private synchronized void suspendAnimator()\r\n    {\r\n        resumed = false;\r\n        while(!resumed) \r\n            try\r\n            {\r\n                wait();\r\n            }\r\n            catch(InterruptedException interruptedexception) { }\r\n    }\r\n\r\n    private synchronized void resumeAnimator()\r\n    {\r\n        resumed = true;\r\n        notifyAll();\r\n    }\r\n\r\n    private void terminate()\r\n    {\r\n        animatorState = 6;\r\n        if(Thread.currentThread() == this)\r\n            throw new ThreadDeath();\r\n        else\r\n            throw new ErrorException(\"Illegal call to terminate\");\r\n    }\r\n\r\n    public static final int INITIAL = 0;\r\n    public static final int RUNNING = 1;\r\n    public static final int STEPPING = 2;\r\n    public static final int CALLING = 3;\r\n    public static final int STOPPING = 4;\r\n    public static final int STOPPED = 5;\r\n    public static final int FINISHED = 6;\r\n    public static final int TERMINATING = 7;\r\n    private static final double SLOW_DELAY = 1000D;\r\n    private static final double CLIP_DELAY = 200D;\r\n    private static final double FAST_DELAY = 0D;\r\n    private static HashMap animatorTable = new HashMap();\r\n    private int animatorState;\r\n    private int currentDepth;\r\n    private int callDepth;\r\n    private int delayCount;\r\n    private double animatorSpeed;\r\n    private Component speedBar;\r\n    private boolean resumed;\r\n\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/BMPImageSaver.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   MediaTools.java\r\n\r\npackage acm.util;\r\n\r\n\r\n// Referenced classes of package acm.util:\r\n//            ImageSaver\r\n\r\nclass BMPImageSaver extends ImageSaver\r\n{\r\n\r\n    public BMPImageSaver()\r\n    {\r\n        super(\"BMP\", 1);\r\n    }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/Base64OutputStream.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   JTFTools.java\r\n\r\npackage acm.util;\r\n\r\nimport java.io.*;\r\n\r\nclass Base64OutputStream extends OutputStream\r\n{\r\n\r\n    public Base64OutputStream(PrintStream printstream)\r\n    {\r\n        out = printstream;\r\n        out.flush();\r\n        byteCount = 0;\r\n        columnCount = 0;\r\n        buffer = 0;\r\n    }\r\n\r\n    public void write(int i)\r\n        throws IOException\r\n    {\r\n        buffer = buffer << 8 | i & 0xff;\r\n        byteCount++;\r\n        if(byteCount == 3)\r\n        {\r\n            out.write(BASE64[buffer >> 18 & 0x3f]);\r\n            out.write(BASE64[buffer >> 12 & 0x3f]);\r\n            out.write(BASE64[buffer >> 6 & 0x3f]);\r\n            out.write(BASE64[buffer & 0x3f]);\r\n            columnCount += 4;\r\n            if(columnCount >= 76)\r\n            {\r\n                columnCount = 0;\r\n                out.println();\r\n            }\r\n            byteCount = 0;\r\n            buffer = 0;\r\n        }\r\n    }\r\n\r\n    public void flush()\r\n    {\r\n        out.flush();\r\n    }\r\n\r\n    public void close()\r\n    {\r\n        pad();\r\n        out.close();\r\n    }\r\n\r\n    public void pad()\r\n    {\r\n        switch(byteCount)\r\n        {\r\n        case 1: // '\\001'\r\n            out.write(BASE64[buffer >> 2 & 0x3f]);\r\n            out.write(BASE64[buffer << 4 & 0x3f]);\r\n            out.write(61);\r\n            out.write(61);\r\n            break;\r\n\r\n        case 2: // '\\002'\r\n            out.write(BASE64[buffer >> 10 & 0x3f]);\r\n            out.write(BASE64[buffer >> 4 & 0x3f]);\r\n            out.write(BASE64[buffer << 2 & 0x3f]);\r\n            out.write(61);\r\n            break;\r\n        }\r\n        out.println();\r\n        out.println();\r\n    }\r\n\r\n    private static final int COLUMNS = 76;\r\n    private static final char BASE64[] = {\r\n        'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', \r\n        'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', \r\n        'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', \r\n        'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', \r\n        'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', \r\n        'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', \r\n        '8', '9', '+', '/'\r\n    };\r\n    private int buffer;\r\n    private int columnCount;\r\n    private int byteCount;\r\n    private PrintStream out;\r\n\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/CancelledException.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   CancelledException.java\r\n\r\npackage acm.util;\r\n\r\n\r\npublic class CancelledException extends RuntimeException\r\n{\r\n\r\n    public CancelledException()\r\n    {\r\n    }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/DOSCommandLine.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   JTFTools.java\r\n\r\npackage acm.util;\r\n\r\nimport java.io.FileOutputStream;\r\nimport java.util.zip.ZipInputStream;\r\n\r\n// Referenced classes of package acm.util:\r\n//            ErrorException, MediaTools\r\n\r\nclass DOSCommandLine\r\n{\r\n\r\n    DOSCommandLine()\r\n    {\r\n    }\r\n\r\n    public static String getCommandLine()\r\n    {\r\n        try\r\n        {\r\n            System.loadLibrary(\"GCMDLN.DLL\");\r\n        }\r\n        catch(UnsatisfiedLinkError unsatisfiedlinkerror)\r\n        {\r\n            try\r\n            {\r\n                String s = System.getProperty(\"user.home\");\r\n                java.io.InputStream inputstream = MediaTools.getHexInputStream(hexjar);\r\n                ZipInputStream zipinputstream = new ZipInputStream(inputstream);\r\n                zipinputstream.getNextEntry();\r\n                String s1 = (new StringBuilder()).append(s).append(\"\\\\GCMDLN.DLL\").toString();\r\n                FileOutputStream fileoutputstream = new FileOutputStream(s1);\r\n                for(int i = 0; i < 40960; i++)\r\n                    fileoutputstream.write(zipinputstream.read());\r\n\r\n                fileoutputstream.close();\r\n                System.load(s1);\r\n            }\r\n            catch(Exception exception)\r\n            {\r\n                throw new ErrorException(exception);\r\n            }\r\n        }\r\n        return getLine();\r\n    }\r\n\r\n    private static native String getLine();\r\n\r\n    private static final String hexjar[] = {\r\n        \"504B0304140008000800079966360000000000000000000000000A0000004743\", \"4D444C4E2E444C4CEDBD0B605355B6307CD2A4252D2909D042C50201AAE28098\", \"366993347DA4D0948A14022929155AA83498D6D2D6F49C429562EB69B5E9218A\", \"8E33E39DAB73EDA05E67F48EDC511966E46A4AB1056490878F2A8C96B1EAC120\", \"14A9A540ECF9D6DAE7A40F1F33DEFFCE7FFFC770CACA7EADBDF6DA7BAFBDF65A\", \"FBEC84BC3B7650728AA214008240517B28F1B1527FFFE10126CCFCD304EA95C8\", \"3FCFDA235BFAE759F9EEB21A6DB5A7EA2E4FC926ED8692CACA2A5A7BA74BEB61\", \"2AB56595DAECE50EEDA6AA52D782E8E8A80489C685E7A3C25F3D58EA0C414ABB\", \"D9B99BC45DCEAF20DCF5E6DDCE36125A9C1748A820E5BBDE34395F2161060957\", \"966D7063FD1FE2D56EA3A8A53205F5ABC77F9E15CAEBA126CC1A2F1B1745D911\", \r\n        \"41CC6B9F081F1A80F524A921718D383E14351252BB243C78C2245431AD19CE27\", \"646A296A1384A67B286AEEDF1ACCA70127E26F8F373E47AB292A7774C67A711E\", \"7EE85940BBB6D0103E9E2731641FE13BF46881CA024F69095D42517F9E22D2C4\", \"4C690C861F2BFC5B20A25169384E0D12AD86EFE0F917785C15551BA05D95D837\", \"82B7E33B780BFF06EBD79E6BCFB5E7DA73EDB9F65C7BAE3DD79E6BCFB5E7DA73\", \"EDF9073EABB8B3422C387A1A3B97A7E427404ED13E257578F881F215DEBC2067\", \"5302427005B72AC885093B9E049797FBB4689F02EB7336153B2873AA9B7BA0F6\", \"9EC7E1839F02DE1ED7EFEC8AC09410AB04FACD7E75934106D9CB34DEE8382FA5\", \"E172143B1330742ABDB1733152AB6AFC4CB89FA2D8CB61DEE478C8A1558D47D0\", \"B91453ED3D4AF9BE72D94E2DC4F9D3C06AB3BF50DD848DF2EF86638A89E2AF57\", \r\n        \"53D4993F63D68C09D832F66CA7E151A870161CD19D0AACDA310E91B72EE08D2A\", \"12D1F2572349646A39540B237499F1423805C8671E435A8F40397F879CA202BF\", \"8256E69B49D1B632211A4373783E7C32E1FC2C40E04B11F5568CED0006024E76\", \"308CC9766F072AE532FE6170F0B9BEE681C2427ABE53483634501A21B6D48B83\", \"E3A463F858A85628C42A8067769942F04604A6F25F40CF0AF5FE80861D94334A\", \"60F03505C9B0FA5CC1E2A27D2AAA5CE5E6A1027F170C39647B6DBD1CA3D20B96\", \"4B8CCA9C8EFCA99B5E86D6BDF5414B1F1DCE0E8531896D2618104B17AD12188D\", \"536094C251A865AEEF553735E3748999FCEC2141807CC0F370451A07C9BB02C3\", \"0B79EC908C9960E962A21C05983BF88D00ED21713973B388F82964C150C9BDF5\", \"48989E1C6A32CA31DC209B1714385B6F601A673BCB29B948FB0ABE01C8171676\", \r\n        \"702E1E0BF57EFECF90017D6C53413F40C6E868A039814DD7405206239E3909D8\", \"A51314FC1BD079B740644D07830A34DC8A121CDC182279F414773F8AB810AB11\", \"D311584B384A3E63559077B85CC9D74F86D63B20F2C6248C38B9BEC0782E02B0\", \"C384A36CA7C24227283DE78B3BDA748F121AE3441A85CE823FAAA0CD37E2E043\", \"EFB7BCCD5DA8990A6C6672139A0F42D56358F592E74B141C77E64C98A91B6328\", \"EA75106B0DD7F986B20187A5B0463DBAA14B9E0B7AFFBA6260C5AD815EF0DB41\", \"9280ADBF205B7A0166523F90634E5E8D52A7C1D18C8D173B1707813719A5B1D5\", \"A6F9B51D65B35EC518CDE97381637A665B02042C0FAB0EE7221C333D511C05B3\", \"F2A9703470DAAD055EF6C4C3072F1304A1D03D17D30998BE00A2508853C2C7C1\", \"189BEB35CC2C2F691FA7FA3128D40BC852BD8656029F0D1371F8F889C0754739\", \r\n        \"883D8C938AD7014976BFAAA35C0659143F4B4A0AB15A601AF4481B2E067650A0\", \"274047DC38DDD164799CF90BAA92EC044597357F3D647459634089501D2047B1\", \"73A1AAB88AB86E21763DAA10585CCC6DA1E536533EBCDC6EF9D672A3E3BB7244\", \"7A3984DE9855A72CD7F05E10E04287109BB01EE7A9784D47B9C6ADC5C9104069\", \"708C125798BA49850A2D270186709C9DCF04D551C8E5CC17538962CA20A6E688\", \"A93431152BA6B2C5D43831952BA62ECB482A3F1DB9C30C1E33CAA3F98F60200A\", \"61F2B99CF5E2B29C2C2819B525FC804FC4F3231E992416BBAFE2FF032B74D982\", \"D83F2EA7D46BEB814A7982D2BC653E1DCEE5CE1722CD5B0C1833604C87311DC6\", \"AC18B30A915CEE52C1FB0A54B684071F803626A53F8FC178B38981E63C1343CD\", \"6901C5C96761F37C3C8C0ECCA65E8021029E195CD01D1857F165629C4C2B7B59\", \r\n        \"A0E7E0ACC2AA18B7429C3B3BFF2F2049E5D4E889EAE07F46F43C88D9499810BD\", \"BFC359E02E1D5ED9DC60B340DFCD25E3AA76AF86EC02E13DF7520C77AE45E97C\", \"CF6D2589F562C24412A524C1A66326B513458D99DB66C07D0273DA7418439CB6\", \"F910EB0A4742F7C7401E62BA6F8EC5B6D7127524EC4446E92CBD40046E7101FF\", \"3B6A58E0E67D5BE0A64902E7DD16335AD8B8AEC0385E0862DF70C5ABDC5B50C8\", \"7E194584AC79805ECDA62B76501A39632D57F02727E098BB8230DC67A6A034D8\", \"7A8172A4D3CE874F45CD49A6633C30C1D6F752CC74589D8128A8763E9AE8331C\", \"5A6A07B264C20DE39E285C9F1A770B3678B3D8A0FA2546E5657A6011C97250D3\", \"80A6EFD9EC0AB1B098ED54B39FF579191557D46399FE0A08DE663DD0CF46B666\", \"D5071D7CD20C912BC2C8121C8DFA5E98A24902D3534E15F0B7CE02D6F6AB9A05\", \r\n        \"26D559AE0C719326CD24738339BD9783119DEEE43F05A12A0493A1B916144560\", \"026C69D0CE4DA41F5C17BF1B36D90EF66CAEE3B506D80D1D7CDD6C71D356B207\", \"40618020EED4EEC0B953C2274AA7AF05F1023358A5C0AE57529D560540781417\", \"8D68AC3FA1B11DCB2DED9E8F56390B7CD90931A0839602571BD9AD093994BAE9\", \"0C4574502EDA307FC1B8C9E756F814B77AB313347B2825541DDC1AC60D9AD3B1\", \"C1FA65AF2740E0E03F9945B8A24DACC8883742E263CAB7F998003CC8DF82F63F\", \"03F52F52D9FA4620822331FDC966615B3934AFE1285490F9AD79D440BB8C5E3A\", \"D0AE64C603A7B9E29E96C6BDC575B03D337D0A7FFBE5704EE5C3CEF90C8D624D\", \"6F44AB8D6AC951F87254EEA76125DAF9495AC25E21BD40C851B280A45864B37C\", \"BCF5E7FA93E2B8F81427A1369B213055CD273B73148D4C54F9C0EA801AC63850\", \r\n        \"C775E45EEABEDECFFABF0606B2C904B2824067160CB363B801F763307FBC194C\", \"44C33285351089268C02A2CA11267C3325267E034C04A2081EA2342C62AFCAD5\", \"DB3D30FB42B2928889753DEEAFEB8A8BD6B0FB73410FBC8E4C7219205E89BE87\", \"C8B84E63EF575274946FB10A98B22353116C57423899DB41CF5F8514FE495868\", \"EC8DB0863A158D435AD800B7BE0EABCEA13F699E3E1F52CE02302A6E0633804B\", \"464B1174FC4566524097964ECB163BF94498CF421F1D216B8D48ED60BEF029FE\", \"0B5F06D9F9ABD0076ED072B5D09B6E2296208ED06A91C4AAC04F9CFC208C34C7\", \"DB1A32D20BE9EB56F16F01BEA5A3D03B8E36C2CA3D3993ACDC2E85FC6BD30CE6\", \"B840AAF117AF82F1351DA3DE995DE1C8296A71BDBFB0681DEC45423236C41F21\", \"4818C5167BD1547770452AFD71F32A6581770A77B94B8EB5E84830ED599B52E1\", \r\n        \"353798663313F4079B8FAB1F6FB772C7FE7376E01621024630BC55D9A25EDCAA\", \"54EFFEC03AC09E8685AD00EB502C896B99B9D8DA741008D349CDC799BD0D97B5\", \"7478C3E548E6F750ACE85C2C50A8911A4CB04EDE83D65A95C30811D6C085DCC0\", \"6952F41AD14ACAD1CC0872FDC945FAE38130EBC206D35AFA323277E3C03E1933\", \"93AD0F52B4CA972B6B30CF66145C7B204C7F527FD09C1704B6C11939F645F371\", \"3005B1F5716B170B114B988BADCAA683742ED663A2B0FD74689F36359FA41700\", \"DA75EADDC7061E107B1501FDB40A11A4BF01B57AF7C18146B1400EB94284F58C\", \"1B244E244D0169E8F519B455C0FF019996B35A4A90AF5B73B003C77A85C359A0\", \"17CCE92839203717D00655C080BF5EED4551EA0CA75B61871162F34112DB0CC4\", \"FEF526E7A25B330E8684EB66C2B88F7CB6A0BDC0C70CEA0F721DBC05F63F8E01\", \r\n        \"5F6BB0FDB33079A79D6F9B8E92256A4C22553720BE4F958155A0421456B00573\", \"0B77CE07B2207F3AAFB84680C3152BDAB640FB0ED0685CBA1BD7CE49FD80A5A3\", \"3CAC88B945789FEBB35CA4555DE18882321298219A53ECE01626927B7327E607\", \"C20905B0BB997A58084AA956DD46F30CAE939E207F73A3398EB92C065F71E9A5\", \"50DDE170CCEB741C1BB4DA9D0E07684703D4E12D013A6915FF6EBC28F5A068E8\", \"390EC72A3B9885098025BC8F363D2434FCD020D85CDEB5A0AE00C0BE5B8F4BB8\", \"2360B7BC492B2D1DB402DCA06CD87C311719E933CDA0A3ACA638E62A7E0CCCEB\", \"B472FC2A7E53BCB41A19855E088C87EEF3CA1964DB018AABB16E17EA10701160\", \"B37D02F7BE5BC04CECB2F5CEBF87D234D693A066368A3438271C28277A3C58C7\", \"E3C0B50AF925ACAD571178974F94E3FEA9723F8F34CE84111A069186E1C7D2F8\", \r\n        \"320C37B2747487C39868361DFDE1708F0211CBE5AB3BF47E33D848E594FA71BF\", \"1B5FA0825AAB26DA7527EE9CF44FF87634A307E53B717F6666B807D1EF7C48F4\", \"8C1975687FAD208AB303898676F232A2F25E04C15FC5DD82D6C0369B934BDE05\", \"6910161AE5A053E5C6F7B36E7C712BA408EFBBD10F2F2751A156316C4ABCCB76\", \"C62CB2104A5B8FAC2B16088D91D2A235A399E8387CF8703AF6A366C2A56EF97E\", \"D6AF68A61EE7287BC70ADFD20465E3192CBA053F9A6522DAD97907B8FDCD32EE\", \"34F88756859DAC3A5874BC7011E4BE5EC9F571CEFCB65EB4FF0F99CD74B42FDE\", \"CAB6AB7CF1BFB4BCE539EF53587D8A072C076A145014063AEFA0BA69129AEB85\", \"CAE693DE22A5BA09D72A7B359C51B1254A749DCF0451475D95A99B3E2516F36A\", \"AF0DD6A2CA9BB39ACB52B0834A75F31B981FDB0D0DB69D820FF93ECBD1FA9B7C\", \r\n        \"8A95ED3D61DCB67CB6D4A4A4B8742CE6A663F942F9C7AC5F6539B1F5AF5C1138\", \"B88D971FA6283FB76D2D13D995B3168DF44069E3E51D9047321A31C3D178F9D1\", \"504613662C6CBCFCD350067AE781C4C6CBBE50C60398A16DBCFC4828E341CC50\", \"375E7E0C33C641462BFA36B56BC1D83A51E8DDB636300EFB6A174E80D628848E\", \"A14E8914189510BB05E687E88D3D1B6A36F5A0D831D1B0289576FE2174FE0A3B\", \"44090267FCF06177CB6C4A53DA86C74776B42EBC15091A1FC0BC1E981CD05E5E\", \"176F8706C0F5C0EDDB6B1BF4D9FA4A77227A0797D757EA8DC66821B6B6A2C3B9\", \"2849B77A914E0753CB9E5542FD5541D0B9A06E2F5915781D42DDFC029E5ED806\", \"399B06E6C307D41705B91A15779FD2C1179185AD18EFA7EF638704BADEA7AAE5\", \"B21FC174A17395EF6E547907F5C7F5037A41385A540C74A124734B2EA9AB9F4E\", \r\n        \"EA0296D3C1BB494209F5CB654041C90750F32A1EF12E526172341DA88CCD181E\", \"096C277765027380593657A1DC43F4682CB65B2E38F858916411C9C65D9BFBB4\", \"080418049DBB99CB8AB773597176BE2F5E44C28334DF8B09340C57E359742ADB\", \"ACCD20453E3C3E7338BDCD2DB8F91F2FD0FB2DAA3779743A22ACECE064CF05AE\", \"AFFD33B9E561CC5237C7623DE9A444DDF4313A6EFB50A990D31275D311C868BC\", \"8C32AE6EFA8292F62A9FADC1BEB2E5674DC405CE27BA85D140A6FB19177A6419\", \"C4ADF0D537705DE0D182F30FCDA615D6CEC6E4EC3854B480CBF29672B97CD0FD\", \"345429E00333B14B1009837261F759E29DF35F03215FB63CBE90F5CB0BD99E20\", \"DF0FB60B77CADDE4424BF97D70660A1C7C0F04EE0692F3EE945065077F10B335\", \"5A19E55E4DCA7690599F1F98BBD2D78C0364F7114430EF1E4176ED424A79BF68\", \r\n        \"9482BEDC0A81EF591C58CE87A3C83F0DC618CC46E39BE8B31DEC1873B4F493D0\", \"D1D22C378E13EF06D16FDBDA8AA352888733E488895F890B020C50FDC01B0DB8\", \"3FA67DDDD4889566F8145F3740CC6B22C6ADA063BBE2F8176324035795C30E25\", \"6C3D0E6B082C4E36816082D6095C7070D3D15675BE8E3905C4A09DCC6E530047\", \"05C28902FECC8590C9AA6C1C7A1A1CF0ADA708E63A72621489988C1C56F448F9\", \"676021926359A56078135185D80668A008CF93FC30827C5A10ED0CA5CF409880\", \"9D6006E3298FE3F5B178F2005B2713CDB7C02C765178772790591EC5DF890BD6\", \"5B14044CB17305FC093C2D03178D9953C0DB80477ED57095720116BC9D9F3C8D\", \"6CBBD0C7A9DE8CC0B8027EC685D03152243166ADFC9720051D403F0F0F9C24A6\", \"9D3E916B36836226DBF9C5688FA16F573E91EF0F001A6C41B14DD09FE2A20EF0\", \r\n        \"B1F1148BDF81DE22178DE75A5C5F1B6671C7E61D65F7292C5FD52CFB2371D02E\", \"D4847147E44756D8F9DD33C41961A6B29D9A1085B6506658718748685E3416EC\", \"C48FF6CB613E558B97647BCD6C38860AAEABB8C3DD80F2707532A94B50194579\", \"DCEA0E30130917E4A40D142758094771E03BAEC0383D069D20A641BD92B710FD\", \"D83B3C26602EF01F005207CF00568778B60938E86B5DEA2E04B787039DCCE5A4\", \"81E169095FBD1D34C1064B17BD8ECB996F3631ABC5E3A67888C659C29FC67321\", \"58C3CF9F0702B569FC51745F0AB91CDD08CA33124AB384B28CA008B5F3F91A29\", \"E7EEF3A8FCB91CAB25FC49449E0195A741E52976DE0E455C4EF62D43C4095A28\", \"21DA2DE1F9C8563C20C699F7E0F111032D94CEC47DC8CE5F4FD09CFC640C6121\", \"3879FD5920D3C72D2BB544E32993BAE959A2EB2C87E85BB9ACF942A4651FAC3C\", \r\n        \"259765084574A1883514592AB4603B6D58DF9B534A42414C9AEDF3E928CE3A7F\", \"3869C0A46138A9C3A46E3869C5A4554A72D6A5420339FF3A444F364F64605F25\", \"0760E356F00CAA002EA7949CD8ACBF0BA69607DBB55CC59BF1D81067979FFD3D\", \"538B062ED4E08B8328EEB73C03E61A3D9BE515F454968FA655B9B41C84658F02\", \"DCCA8E3D93C8A742899F13315E506E05FFEF8D1E98868B2FFC56EFDFD9FB3048\", \"D86148EEDC0F1F6FF441F285175E5887CBA8F16C5CB8B489C0A6E9F4D978BB90\", \"8CF842EC0E62E5CB5EA764B8B946CB7021B63485F3D023ABA5D3D3DF6A3BD7E4\", \"EF6CC6B4964E71F8569D2F50EF8E52EFF65BDA374F9F77208BFBA0FD4C986F2F\", \"A9B0470BCFC517B8B7D8D3F28BBF5DD81AB6B0C9CF1C5BB7060D40E4C9D7CC5F\", \"41071E5BB63B7D84A8BD5CC6BF318BD892241F7261CC9CC3C54EB12AFFC99C31\", \r\n        \"38C1D1386EBC7229E1BD3607B5CC5ABD7F23B7DD86CDE1D9C8948616F4EA34AD\", \"DBC3917A4B0BF508F833F103ED61B4462CD26211100D7CD2D9808514767E6F20\", \"5BEF6707B33CD7B183776C8E091139D0D0AE9548CC64074B3C93D9C17B374F08\", \"D139D070461BE81945E5752E2F58CC9BA6E1F642CC9A7832110E271E1B9FB45C\", \"8419295037E5E3C8C37660DE656D02A172B17EDDC2F43E1014CF97385DCEE199\", \"5237CF02549C7CB69E970D0B80978C8C773A0E82FAC1B350B1A1FE1C6CED7FC2\", \"F3AEBCF3AD139B8EAB9BFE0377FBDD59827AF7F1338F52229510059F6A65FB69\", \"85B7A8F7B7BE7FB1030BAD72EE62E0E656A7ACE9387D23CCB77AF7154BD7E618\", \"6E556FEB63262857EEC0FE5A2D5DB55FE7E4B446C04C9F1040BE3B946C7DAFC2\", \"D30E9A9B486457388A241A3DFCF530F43E6F36D4E52E10F17CF65922AACF06D6\", \r\n        \"8983A780255CDB9F95D55027802CDE06A2A23F98C5B58B854A6B3A6EB760E474\", \"F2C760A648556F34520F4478A763A8F787A43E106D9E7E0ACF0E27F0EF002E3F\", \"484E5403723070613660BFE79F8FC3F9288F7157E372357F0D4A38AF47288FE6\", \"1FBC0C8B91BC56F1A6230934E7068798495DE198125F0E6C87A908CC6307BF19\", \"9BDD82D931EC6090518F64B73DB11D579DD2128EC3219E7C70C9784AEF654E59\", \"2ED10A7306AD716B4182F9763CD0E4FAC4FCFBF165CA61D41FE4A49EA9F266B4\", \"9129CE51B46167BD39CA36320439B0A5A266190CAFD76CE454361C828DDEA539\", \"1A6B802725E932E0A33EBAB50527BA65A92EDE1A382316E0A2AFD7B412596ED9\", \"AE9B0E496BE0332FE18EADEF1198180B89D32A275F7D065809C8BDF53DA37458\", \"0F9FDA8F3A2C9AFFE525D4612C39FDA09849E5DFF04FA352EC0A9F3F7C58D5E1\", \r\n        \"B6CAC4453C72D00BBE2BBA888CAC034C61057BC3F390A0D81BD081A476EE2173\", \"EA8DC693E5AEF0BDB8F88090B5A30D8B7DAA86B65D246C094CE2F21314F3ECAA\", \"C62BE89F7A22597F8CA5DDF3053449169C86CB836D41030B4E55C00DCDAB53B1\", \"9DC1F6F36AEEEDB2830A1877DF76593630E6CDEBE326DC06EAC29B175437BF0F\", \"050E5F7C2237D9BBAA9F7306BDAB06B955FD03FB64DE221543B75F512C61AF64\", \"D6CACB33EFE06E57586E57320BD92B5A9CDB869AEBB8432702BEA5618A4B2766\", \"ADDD933D14C9CC0106665D1788F72DE9192E7972CF7EC086C2082C2C54A09BE3\", \"50726B1420A0F2BC7EEF1D0A6E958A83CF954AAF4389EFDC8F8D69B56890FD04\", \"98E9573783BB47CD630621A7FDAAA23CD3CBA86E2FB67C541BC67D24CF1B146B\", \"59DE030290F39EE543BA98CB5371F7282CF728190B7B55FB3AE1792AF7D68973\", \r\n        \"97DE9B4503BF4BE50A661632951898E6BBBD87E4BF22728B4584DF7B14848A92\", \"BB4DE15D26C615DC6D4AEF32250C72400E0E2E5BDF4F314ACB87EA26B48AC0D1\", \"F3A98E718580ADF4162BBC80BD0C3E95F06959A664D6B7C2A0B4E4A987DA6114\", \"5B205E734343BD9A62267087C8989E0840A391D7913819DDEC3DD99171819B09\", \"920686751456A102D27F22E92F7C4D84EF4858C5416F84375B071E7C9F00AEFB\", \"255C99286C78867F0A198CF6438A4BC6D30E72D4D17E5A2DCF55BD86E71C8E15\", \"C27B6239A922D18EB42B4992B36AC442F699166C8C0AE50EE52E12A3B99A86BA\", \"451413C9AE570C911C768B5260CA1CB014AA55C27B244BA8D68C7D2143849C8B\", \"2522AE68C02385030471DE01DFD2896757F87263C078F5E1513228A8FD2A211A\", \"F12DE18852AB60372963C8EA206B087531E67BD391CD35EB8A0F8A4B888BC635\", \r\n        \"85B6633B63F0657BEDD08A5D3CB32908B1F2C47A3CA864147AFFBA0E565C8364\", \"C54A0430EA74EFCFC237D2621560D667681457B7A5CB9BA3C1BA8145E50A377E\", \"87801C201508B18F4BA52A6692503BD21A763C70945DA614BC19DE6D0A219CB4\", \"92A3619502D759BC4E3C6725AB5909FBE73DC0FBC980FC58CFA2667FFD65AEA3\", \"CC4F9673930E97332C04DBE01D5EABD26B55B07EE512A6BF5CC15D25E766ED9F\", \"ABE5752A728425B182AF14F165D153B85BFE82AA0623EF8A775570F322EED0BC\", \"B7DBCFA87C8B35596CEEA0C0B69C4557CEB72388371F341082E1DA650DF661D2\", \"AEE86AE0218289706CE736E62DBC20631B0C1F44DF7AB9CA9BABF066297D4B20\", \"A2F46629D8D25F65537A61B177EFAF50705A7316B51E186A6FF2C37CB52C5BC4\", \"C823B72888ACC1DAFCE2D2F1597625D741CE64885253894A0DCD087013EB55DC\", \r\n        \"FBF35680629BDAFE859A3BF42DC5D6CF2D0FB29FF5DD66B9E0DB6A0E7233BD79\", \"1AF0DED40FAF82D2810E30296C10917F60B9A87EC482676279C1F6CB8ADBD8CB\", \"99DEBCC1DA88F2CC4208B9750ACB3A25B388BD2CA9B969B8DC067D4B6544CFED\", \"403D77A3A8E766B2ED3DA30B9FDCF12D55B75C09D4BC185170F72BBD754A2E4F\", \"33EF882C2F8827F6EA879F256F0A83A055DA05C57256C8F42D4D0CA2D65BC715\", \"F5FBE2AF7A8B34A027B17E91C65BA8F4DEAE40C572BB123E2D854AA6A075E938\", \"502693419908A04CC6296AE21BEA27A332797BB432F165EFC8E6DE0E684999C6\", \"B7FC5B3AA489300DD9A1E5AE417D9C17F4652705BD4AEF525910D4DC2A952F47\", \"E65D18F466270D9E4923C6F319135AD2BE5B711C8B543703E56532EFED41DF5A\", \"7D1066AA7D48B18C1DCA844D04F2B04BC503B6204C00D1914C502A2605303896\", \r\n        \"E5B8AF0C0DEF2B4740F3D111A1F19E30B2AF2C23FB4AC4F70E36EC2B30DE9B89\", \"CEDDAC04AAA876198D9C097A87F9111BCCEBF7A92E70753894DEFBC8F8DE0E9F\", \"4A698383618D9074F4100C6B041956A2A38FBC4186E83C8E9C990CEB111C56A2\", \"9A97F58C2AAC1B1ED665A386D5A6F1CABDD9714172161212EF18C01FA502D9F6\", \"A9ECE93E07ECD120994ED03105209E5A5FDA0360A7D58F678F0827CEB1798342\", \"201A440F16B27EE0040FCBBF8D68BF6E2FD36FF9381003FDE02C73F206E70C8D\", \"7F9B19CF76C4588A82DE22A5E773089904EEC3C0C431185188D18D08BCA55BDD\", \"84474BDEE984E0220DA761AF08A020E8186E3BE910B7754776A8620A47B2E6AC\", \"1A44CFCF979BCD25CE61FAC7BFC731FDCC54EED126B14CB005D9760567862AEF\", \"D367504F7C77D52EDD91AD17E61C613649AD400BE5DA758162F63E25457A00DC\", \r\n        \"01F39EF3D8831BA10791A46484F33E4B37338157831BC47593636E3ACEC1FFE1\", \"0A7AABB76BBC32E8096B12D4CD09686AFBCFDC0BCD1E3BBDB8F9202853683DFF\", \"B2828B9A0756D18590D4E60D6E4341C1AB2E6853724B1496254A662D2C3322A1\", \"F537726FE3FA09FAB69A4014BD4567E7AC6DC9F6020CA9193D977716CC8259E3\", \"03F361518968DBC9862962CFBA6E480D3598F178389E7776D6ED0AC98C188476\", \"94DCBD0A6F9D021AE4EE457DA16EF211A32224B04B945E40588108DE154A89AF\", \"625160C70F0B6CFD9C86FAF13070442261319D8FB48C92DD60E4D6966C342900\", \"257A446E23EF438BCCB7B745925B622F9D38176904FDD67C901EEF8DF22E9D88\", \"BA005424D3273F86CB1DB29260B5F7E39D2F5F9DCC9BC14CB34CC71D989904B4\", \"2CC45A60C649D62EE47895BE850A22FB6D3D1C795DAE166F93E1412379FD03A6\", \r\n        \"2CB97F0986AE0A2DE5E6E3F472BDBF353B4159C05D66AF283C89973E00AF9B56\", \"CD3BD6328EED92B16764CC007700EF48B663A081E010FB573938EB74C4C517A0\", \"7A9488F705E20199751D78FFA643BC02F724794564DDA7A4CA35EEE7D1418AE3\", \"05A18D27BC3146F10D958C4E1875F706788E756FBD6BF856DD4E09396A0F952A\", \"A57035E0CB05F1C25F4F20016FFA511CDE20945E8535D6F74EC557154A3026C8\", \"552B7072D1D978F7737250E2DE83ACF83E27C795A177570B2CC9E4E6C98DE50A\", \"FE50403A6E71F27FB84A3C27F1C0452F1EB8E0E924B9CB22D695D111E20D16E7\", \"589F84DF88CDE12D2505DFF105716BB626287A36CF26E76F8C740039C50CA346\", \"6B485ECE9098F7114C93908C9756F05D09FFA6405E951C1EF514705B1394814A\", \"DF33E40BAF9C80735970A91DBF724B4F6E95B1EDB2263F9D2E6630E7A15CF627\", \r\n        \"6168689BFC28DB27E8F781C2F80D259335D23C971504C4394DBDF4B4DF804142\", \"D1137E832E281D16F8B3AF0ED4A0AF6E28A0F4D57D1390FBEA82D0884A6A637A\", \"EB446CE338BDB1652A4CBFD4D01781702F2415A42D4E26B5C64D1C6EEF34D430\", \"340DD0375DDA475A9B842169AECB3B55149F8D62A4737118359C58D7D12285A1\", \"FE637F25561242DD5D16EA6E388E893434A111FA9BFD4F82FE2788FD9F3CD2FF\", \"2C32AAF3DA3B7C5943C3B16F8663412916BACF5C807E211820F806B19D3B26EF\", \"B40CD52A2D83EA07B6828ABBD445588B817503AB87BDACF4DC7CF15921E16769\", \"19F8E6F84F58C89E5178546C8F5C7E404868B6A7C3DC27F89642F10E088F4272\", \"C77AF8D80EB00B60CEB1D6889671AD39B296C5B2D69C3020DBB2388CED94B35D\", \"84F8E161E2BEDBA8615C8225633BC3D8AE30C47A6E186B8788C376220E2E6728\", \r\n        \"6D194D430F8116200E4003A004A0000681973E002EFBE15E6FF623BD10F210F2\", \"109E85F02C847D10F641D80F613F8483100E4208C6CE23419F02153025EF930F\", \"864643C04EE703AC07A03388DB51BCEE60C70EE470745CECBD94033C8E191118\", \"8E10AE8F4E0CA2BD2ACD41C2C81C447F73F1D920B4DB9D89ED5EFA0046BA2593\", \"F437342797C539998773722A83CC0922EF388BE3001113406B8E7CCEB196C572\", \"F61C19BDF364F47E3F8A34F226E18CCCD539C024B3D0320A73C7283C401A99B3\", \"7372F63CB2AC7EC009CA602CEDED103C0EF024C033002F02BC02B017E0ED4C32\", \"37F130D6F110C6411807610C8431106A20C47215842A0895102A215440A8183B\", \"37E218F1F0D9978927929426C63A6A6E72E4C0F5A8B920E9B1F3303A6FCCDC89\", \"EB075FD2E2255E77AE55BC019C337DE40D2759EF59E4D52D79F349AB511FC02E\", \r\n        \"A6F186EDC199EAC077C4D9091A7BF990DB0E044A4113C353EABD812CFFEC042D\", \"B75AC955ABF085EE020B9D9040CFF5196A39D5CBDEA5094A6FAE8ADDFAB28262\", \"26B9893D92FDB292B7A21EC87F5919E8287D842814708EF19294DE5FCA9137CD\", \"8D750A6C88D1702B54DC4A9579859209DF235E225EF19AAE191CD02829022628\", \"9AC28B14DEBB55856BC46F37B067B5E4E4962B560E74C899EB4BDBF00EB4D7A6\", \"8431E17295960FBC79418FCAB25A51330E2CAA3EA05BC06D53B1020C0CDE29F8\", \"881CF37A57812BC729F1DAABD27248CDA2FBC56E5150B45CB02917E22581F76B\", \"7BC8F5A8182E67D0620BAA1F980D2816D8ADA6E15BDD3E3C97BCDAF839D50776\", \"DB40B37FDB2473DAAB831C1E2FE2EB971C4BDFD673E5F13E5B8FDD21C43E2F7D\", \"DB623DD46C046B8AA2C0DF70A0E767EB3F4C3BB9BCDE8D8DE6BC3BD4CD993884\", \r\n        \"5969F2F64613FE3C82BA7901646C6CDC12371E2A60FBF33ED8C86E89A0D47FC8\", \"8D01CF2E4EFD6034A9A1B2747BD4DC0AA5FCA8E5C39A8881AC9B1A98CDE532B7\", \"693B6EA8CF88AD370B7837291A196F3EC81DDB361984B41F126613AD5CC2F260\", \"CFDCDFDF7C9CB9A55CBDC6F2D6FD61DC07FAE3CD27B74EF2297E86DDE2740B2D\", \"27BC266E68DB39F6B2A67E5C96975002991B69E4CC5343E48CF7FEE601F5C38F\", \"626BD3313BC4C80964E25EC896468A5E4046D1572D340F6CD58432E5CBEAFA9B\", \"07EA35ECA0A63EC2BA53C20884D171FA838007FCF8083F9A2CCB11E0E7CAB673\", \"211E4E9C990EC4C1F518716134E4564DDA76729170937BAE1B597D915C8EB45C\", \"5537FD941C0493BBCAF16E7257B9D9BF13B1E9AD6E9598E11EBC0BAF285BB78B\", \"5794C9BDA09DD9DBC9E59E537785EA2CC53AD1EEFD62C6CE5C48B6E1075E0245\", \r\n        \"13929EEECB0BAE2857F9F2FA5694CBF02EAB581831601B9431D789D78C149EA8\", \"86BC49DAC0CD3084C910530466B65945BC29C251F41EE8096DD96246B8037304\", \"FCB6015A732063C836E9389A1A0578B706BF28E374701F707442CCA54E397191\", \"1234CC78D08BEA667273E5A65630BF64216B959E07FBF9AD2226F32979ABC494\", \"B09FC8C12A1A46030C231B90315FA2C25853BCAE43DC19E8292122EAA627A8E1\", \"3DFB0B91082D1642B58135C5A231426C1D6CF3DF4483272264F04C613B2503E3\", \"14183CF3C1E09921193C2AD1E061F67BA706E21AFF8A3F8D02B10910A3484C01\", \"8B1AA982C10A74F1447E9CD80633009D50376FC61B0712D7E54AB709E697DF7F\", \"4A7CF38B5F8AE037E2EDFCC23197C2CAE5D297512CD1F8C28891759CC10B5EBC\", \"E66DA8E757E2CB8B5CA4B3F514B9FEA43F69B9CA4C8029E1EBBE06BBF34C132E\", \r\n        \"4E4665B9C8A80AF8DF1FC3AC2AD433A2DD2CAE6E6F115EE9563F74015F0629F8\", \"D61E349A8B8205FCBFF0D28B870E75D333F8CE5334B2973A0BEC7CFD97E4CB1A\", \"2808DEFADE80C9C92FE9138D6D4B07FD136E7130D76B3B65E9F484719DF60281\", \"E9E57F312008057C0E8F6F407B80C05D3C12883317F532B7037B11FA811C2FA3\", \"1ABE4DEE748CB6C645B273BE87AC15C90A4C0F3F95D08B21A6FE7260D65CD4C3\", \"CC06C272203C42B5C031FA4C13BF18859499F5E6E9E496F96A277FFF57D00DD4\", \"139FC2520ED8F427D130AC473760EF47E806C0E40EF56C9E2251FE164120152B\", \"918A76F20691147358EFE7A79E44EF45E35E8D93F5F687C0ABE4BAA402E5A91F\", \"4B2E0BEC294E7EF6E7E2B0E31541AE36C89E8BF432BDE05B32A21F8326315BDF\", \"43319305FCF257A8F95DE40A24D7C9FFC787C471E905BA518463723F00146253\", \r\n        \"A30C5FB82BF8DFBE8D2FF295FCAF49A8E27F49420DFF180963F85612C6F10F60\", \"98C2DF47925ABE868409FCDD249CCB6F20E17C7E0D0975BC838406FE7612C6F3\", \"8B4868E22D6F8BF706F428B2FBAD42AD959F4BB2B2792D0973F938122E25528D\", \"57029424CCE72912AEE6078F60B896EF23E17A9E276129DF434237DF4DC20AFE\", \"2809ABF90324A4793F09B7F07B48B895DF75446461371EB5F1BFC6DCDD7814C3\", \"FF8244C965A0ED248A3781F84612C55FA8E16B49947C91F16E124525C3AF27D1\", \"2731BA8A449FC6E81212C515C36792E8F3183590B6E71787E683CEE722B8E817\", \"1F02A991D16A4BF8D687C4EFECA88E907B040AA92C4B81850D52E1F93F6361AD\", \"B28D94552BA12CB9899439F91358563C32DD8750DFE6A842745448A745A2F3EF\", \"844E8E2654A8C1C2ED5261AB5818132A8CC1C21D52E126B1302E541887858F4B\", \r\n        \"8576B1303E54188F854F48857AB1501B2AD462E19352E114B1630952C712B063\", \"4F4B1DBB7298746CF4F74F9D7ABF5D7AF0FC156CD6B028BCF9B44FA67E419110\", \"B88067030705C807EFB235821475CAD43B150935E7B87676BFB6F8E0288F1C5F\", \"1CE225BC4BFBC89E91C685A5CA980550E9C6D412197343542F3DBD9DD7A46685\", \"31D741E6C4D41239A3012F94DDA788EA658E73F815A41DD7FB8FF5B07E59C7A5\", \"7DC4C28D6B0D035E80CCE7C000543A75691FFE2214FDCC460E0A90FE11C8ED44\", \"FA6F02FDFF62DBC3022DC3FC6427A0625D827C8161FC156E9AE3DF07B78736FD\", \"86509FD83A2155CDAC862EE1AEC6CBC0A39FD03AD5748CB1B52E93B516C82066\", \"4137119C453E8CF9645D710777001C213CF79977F1DFE99BB86541AE2008581A\", \"D3D78CAAFD8CA6FD0B0DA4C24C5F93EB8BD7FBD7B1DD427107F0B09F9BC2A94D\", \r\n        \"87A01BD04ABCE91CF3114626379EC60DB1F1AFF86939C61C844CFCA652BCFB89\", \"4A506F7DEFA2456A4E7E1A8D94649FADD7AE171617B81FAF44DB24D62F1E1429\", \"BDE9581E881DB9641ED5158E5938506D186107C3C46B8960F336FD15D51EDE7C\", \"209B2D73CACBF49899384629BD5A8F733A455B44EF37335AF5CFFC3EC59B3856\", \"7681891362F71283CB5BDFDD2CA89BF0F08E1CCAC667721DAC5F8E570FEB4EC0\", \"BEE4E2B97E2FF38EA39C72F24F9C25FB1B6ADC40ACB41FF3255160B80F902FA9\", \"02A901666A417918FFE743E496531FACE8BBBA6C3DD86881C44BB96CB875E8F1\", \"448189B193AFBA9231808D0CD5380AF8754882B39D0A547245F1968F98086E7A\", \"0BF48AAB8F6B1620918E5D74F0CBC6E337BD0605F22E0DBF2738033D2E5F9E66\", \"0534652FE0EF198F7E4E1CE1E42F5EB4CA62469B677BC4AF540D6083CF1FC406\", \r\n        \"BB7CAE03FCB67760BB383CE621E7210E2E4FF3C94D60BBD52BB94B7AFF57BFBB\", \"F481FC2D6E0876C38BCFB5E608FA83A98B85CDE174387B26ECD231AE7D8DE40B\", \"FEF8F5C9096461AA420BF3822F47105766B9C9FD3CCAD1F33029683D1F403932\", \"391CB8DF122972E39D05E8D2819028251FF8AE281D9044C95C14B3ED7A2E2F86\", \"B3696E33C5D14AABE52DB0C70EA2993EAF5D668B693B1012B553E85E81ADF38E\", \"4C12B52174D4046FFD3BDEA203DEA2C3E622EDB0BC691D0E717C41DE8A12C6C8\", \"9B56923730388E5A2EAA9BD0AF94BE72E953A44802A73C260ADC7EE97832707D\", \"48C882E3A0D193689411397B87638EA291140F75EDFCCE40C8C8127DB92EDB01\", \"A40B52D52BB28322A70D899CBAE933287438C46272E84AC60C97C23BE87E7451\", \"E801462BE85BCC45F1C029AEB5FA78F5232F113B371EA4F7DB55CFE01608BD09\", \r\n        \"23BDC9947A937A74B8373D637BB340EA4DCFE8DEF4307150D7CEBFFB45C8C0A4\", \"AD5DB6C364E9802DF7ED36618A67391CC021A370380211226388E8207D2D253D\", \"32171DA623D1103CDC0944CD450730D5CBBFDE4924FDCC1A62E876C36C16ED37\", \"1729611E5BC42B396326154F2E3E1F47BEAFE8C79586EE3BDEB4B2D8B4EAA673\", \"642C7D7931B0DE3438CFBC308EAC38AFAD1B7AF00E91087B88F1FD92089C4211\", \"F835EAACA2A0345AAAB7C5D10A7AEBF73A1D05FC7C62BAAA029AD0A05D0EC741\", \"D30B386660CFCF119853FC6FF0EA0D3A8D742224A1D6C0E7A456976D3FB978C4\", \"9C2A2012D03D9A0134963B405F0C046E1447CD673B85763374D4CF678D93F4C5\", \"A58FAE1FB8F4115A987BCC45FBE939057CCB9B78CF679A5867B41E09F5CB5CD4\", \"8DE3DBCD172326D7E973BDC81B8E4A9AE4FFEA79EA76C7F79FA73EBD929CDD3D\", \r\n        \"E910CF53B518EE82BC530094E3479EA722F1BF7F9E8A583F7C9E2AD16021A806\", \"7003AC07580D6007C805B03AFE51E7A9643404ECF43300BB00F63BFE37CE53E7\", \"AE1A3E4FEDCEFFC1F3D4F9F9644E1079471AC4D703B4E4FF9DF354C4FE71E7A9\", \"84EE7FEB3C55A27D0A78E805380BD00F10045040910A60E6AA7FD479AA384626\", \"F8B402D8014A57FD83CE53C55323723B147F50227DD967D6D798654E9F6DD02E\", \"C476E3E263827A6650887D075F8DF589DF1BC7F02809F196BD107B18F16CFD7A\", \"5B9FBECF9B4C0E0E6047C410C9C116EB8E8375E8AEAE865D762158D7D2ADE0DE\", \"B6C3A007F5072DEDF44C2FE81EE93D9DF825F2334A72B58168A8C039E036979E\", \"F2C652A0D0D5DC0DAEF2135594E6F577F04C27E68D2D55A1DC6ED8AD5FFF23E4\", \"B6E4F5885F2E693E85B775570C7FB36432F95A8994CD9FEE4563CAF714A6B80E\", \r\n        \"3B7FEC53F48CFDE3D9C1B4DA1B30C3FF29BEC616D1593E51DE5D2E275F3271F0\", \"0F921309883C85757CD93A95A46E9F3A28D976054EBE11E8BF815F27817833C4\", \"DD878141277F2F441D4EBE060228A880407815D977F2EB1169F88B264EFE2662\", \"17A695CBF9E4FF128431F6123927D8257002583549E4C0AAF526501FA6FDF4B9\", \"F95969D3A61D6C38AD0D6B57643DD8332669EAA18F4CF3C70BEAD7FD6B860560\", \"A9C35950AE58CD9F3E00DDEDC763DC6EBCFE2B1EE3D29BB9A2533EDB2B30D13D\", \"38D1797BDAF054D057275C7A7FCED0BCCB5CDF3254E9EC6717D8CE89EA972EC8\", \"2F5A86BC79831E2B7EA7652DEC43AFE1C52491A8C00487C96A395BAFCC166C2E\", \"E2E9BF0ED8BE0489ECF6DA8274384C3AD89B83356877A6593A6BE45E2658AE80\", \"DD6E90D4C6BB538401BC181A24DF01BF01BF64ECCBEB5F61B587B04EE1976E5C\", \r\n        \"CF93034267016FDF0B1DDB526A49273F23318E3F009B073708AEAB8ABD7FAE4C\", \"BD3B62DB84722518B5AE3072781F88E296E7AA772BB2D81EF2A5DB9C40B77AF7\", \"841CF6F22DDC31B0412FCF631498D6FBD9CBBAAD51EC65F3FD6098EA0272B4F3\", \"2E0BB40A2FA429B21025F017F6CA2DEB8A99B04BDDD21D2A22FCE511E49B64FD\", \"76B74283BBA9B2D3768512625F1185947CD1360A8B792BBECFE5F282FCDD2009\", \"C456F5E32A0A1E18594568321E86BD9DB3C57071DE22BFB77E3F2C178B4DA56E\", \"AA21E37274859D4BC6ABDC78744B6BD9FAA332669ACF7694180F98154DB2C649\", \"7BBBB97E3F3D8DBD2AD00AEE62007FA087FFD35F9189BE1C2F7300B7ED0380C1\", \"4C2B28704806A072C4023D60B944AF866919B13C1FEE1497C3296FD11EB4290B\", \"1CFC0B1F8F383B53434608FD0DF90D9793C470033A1F33339CE0EE7CF45FC4DD\", \r\n        \"E986345A47AF1073702F3142A179FF580ED00465490FE2686D41816452E22F04\", \"A944BB0DFABA91B381057538508C9D985200CF6804AE0F3AB0C8592EE35DA461\", \"C004CF270990ECA3D12C5D78EA79987F7B2F5A94F587031AB6DE2FD05160F77B\", \"657887648FB97E2F3DCEC1FF6E2F71B50E83C1C2E5F5F2CF8105CADFD705860B\", \"DE2AE46CF805F3C6CB14B9FFA6DC1CC9DD96ABFE83222B90EFE48EB65F511670\", \"7520845F0D646F9635AC2BA6D5E5612DB66F5A56053B6D43D4EA40548B2DA8F7\", \"77DABEA1AC3004F7C408F7287C791356D8F1FBD9C0FF477D38C8F1204D61073B\", \"D47FB04D9863D3882E13791BB6147CFC037872CE44E2258C4BA7F7816D73E934\", \"D78DA5974A1362E462ECB4FCC41A28FA5E7F6DFC413A0F3DAB7AD51FB25EBE63\", \"B716F79E1BA37A5BC7D137814E9A239E1798829E08D3A9CD61619F990621D60D\", \r\n        \"B14ED37E663C9E531FD31F047515F947FC8EA627ECD20763FDBAD0E3044662C6\", \"FB99B9C8341E56E88F5FBA20317A81EBE33A805D0D7780EBC4507E2CB018E2F8\", \"0D6EBCB60238C7CE1C3B79EC8B63DDE30F32FD972E82F9099D038CEC04CDA5CF\", \"E4C73C132C80B759E9515B00B73672D93C28B83E3F21467F12624A88A92E7D78\", \"A99BFD90E20E7127C03F85768AC70E886FA1B0A6237485A0348112EFC838B8EE\", \"F61E7CEB289DF3D0B1AD51E08F9A3EA0DF6E3A48AF900E7F02E3BB0BB88EF64F\", \"34CEF1DD5CD41BE4D5403B38C06FC1CE7F99BD20E03B82B7F59DEC3E45E3697C\", \"49C0C4DF40DE159CC040C6281BD1E36A60F617AF5BA3F777700B83A66E3AA5C9\", \"4F9F379DA26F6AEAA53F6FE73590150B59A7202B02B2DE09FCBC789DC8F3C221\", \"A807C1376210C440B8E1E9F5DFFE75EE6BCFB5E7FFBE27D74351770054033400\", \r\n        \"3C0CF034C02B0007004E01F0008300CA1A8A9A04A0055800900A9003B01AC00D\", \"500BD002F034C06E80A3003C40184D5171004900568065006B01F087E99B009E\", \"047805E075804300EF017C06D00FA061282A1E20096021C04A8062806A800700\", \"9E00F82DC09F000E01F402F40344D5525402404AADD84FD472EC244AF338C0A2\", \"2A8F6D4B196DF7546D70D5007F9B6A3654795CAE05A51515040FF17362C47518\", \"4A3BA7C00E2EC54B219E535193037528081D2EDA5952C190F8E251F1AC0AF20B\", \"F81475B7CB53E9AAD0279106A8117E303C3D756C3BCFC58DA4E7CEA434F3678E\", \"A42B205E0DE0612AE9B24D2EADCBE3A9F268292A3A8AA2F2972E7738C41C4C52\", \"8EDB962D1E95A4B297E765DDB66C2467658A2EC91C1D758B96FC970D25D5D515\", \"651B4AE8B2AACAD07FDB80FF670353535679979676BBB4251BE8B25A97B6D6E5\", \r\n        \"A9419CAA8D2437AF6C83A7AAA66A23AD5DB0CC96AF5D29F21565AF7095D4B8B4\", \"1BAA2A69A827D61F69E0A61A6D0D535D5DE5811257C926ED46E8C326187F6D59\", \"254437119C058469E4D1843C3295257756B8B47415E094D165251565F7BAB46E\", \"5749B5D837C433221EF2EDAAAC62EE726B6BAA4B36B808ED8AAACD65A32A12FA\", \"23F5527EB05E0D5DFA37EA2563BD6A06D8AE2DF3D04C4985762353B9411AC08A\", \"8A61FE0D3F487F5D55A50BA4F0D6121A032D8D5D1CA69F681EDBEFAA6A57250E\", \"684D15A44B5DB5651B46E14A63E4DA52EDDA40BB4AC9C88C9E7BC4317E0B6713\", \"534197D16E8FABA4144668C3DDDFC6FFE171912AE1FF0301E8D151DF11207749\", \"8DD6E3BA8771D5604338FB92606047689767535925F4590B7D2EABD496809455\", \"323538809B4BEA16FC23654767FEC13EB82A61D6AA2A37B92A69C0465CD30FE2\", \r\n        \"9678EE6210B166986E12E26EACA882E6607954579555D2A42AE494BA4AC5311C\", \"591ACE32D2BB45F3E60D8FC3D2B23B3D259E3AC48BC2B52865DB700A664545D9\", \"C5FF4025159636B560C1022A2DF43FAA5496001653797765D5E6CA8CB17A84BD\", \"71AC1EF9C54D625AFBAD3F373557FAFB76C9F7FDE592FF00E587FF9ABEE76F2C\", \"46A36CE4EFC73EA3EB3F201BF90BFB917FA1BA387EB230B9223C629C32326ABC\", \"2A7A825A3371D2E498D82953E3AE9B767DFCF41933B5B366CF49B8E1C69BE6DE\", \"FC9379F36F5970AB2E31496F484E319ACCA996B4F48C4C6BD6C245D9B69CC5B9\", \"B72DB97D69DEB2E5F6152B1DF9AB9C05AB0BEF58B3B6A878DDFA923B3794BA36\", \"DEE52E2BBFBB62536555F53D9E1A9AA9DDBCA5EEDEFBB6D66FBB7F783E3C378F\", \"9D9F940594E6B66165B6C80331D01B0E1751215995A58EEAB2CA45552018A3F6\", \r\n        \"8B4DA994E6BED4B174A22C9406361D692F2B28AB2CADDAECA0C942A0207F558D\", \"CBB3FCCE72207BDBC80AC9827A50B6B4A486CE227ADD5E55CD54933C312D92A1\", \"F28062C95DAE85555BB22806088DDEC1B0FD461B3875B6B1FCA8168F4D77403A\", \"373775D3A654DC6961EF8467BE360F1E2D46EAE0A1F2F26E2D2DBDB58EAC077B\", \"1E45650164BB36B836DDE9F260DEB2AADAE1F8F20D7415461DAE6A3A9499C5DC\", \"C5D4C0402D612A088D25A0E730CCAAF69421BB79259E0D6EDCD35D777A1869DD\", \"2D29A924516807E9235DA489B4900ED2807A754803EB635DAC43394A68C6535A\", \"4268E478CA482CDFCD786AA4BC025769A54B4AE433622CAFAA92643818292CA1\", \"B12ED6437CC4431C2CA7FED99FEFEAA0B9FFDB1A6BD49FEC47FE8DD158A3FEC2\", \"7EE4DF688DF5CFFE7C774EFFB9F6ACFFE9DFDFEB3FFEC550316352A3CB7E7497\", \r\n        \"A57E8F4DFFD8FE8EF4FBDB3978B15BDC3F26E6519AD8BC91FDA46E05A5A95F21\", \"FA61B5CB29CDBDCBC578B61DF61880D1765396F64E66E34697470B7B87077D19\", \"B44AEF7481155DEAA2451378B3BB6C839BE483FBE761AA43D6AA646DDD541305\", \"861DB86E60BCD5C08EEA5AA00567C9F5EDFFDEAEA664A3ABA28E18AC65950C38\", \"655B5C1B1862079754A2995D434781B986FF0BDEB0E95BBA200A7CD931DC8598\", \"9A155A0559DA1AA00366419DE4E681CB25597ED032ECC67FAB43513FD021ED8F\", \"EF50D4DFE890F6FB3A04CF2A89BF61CE37969455A08B34AA77385FD73B29CD4C\", \"00D8EF60DB83DD0F3641D80B614BC49D91ECCDB0DDC2AE0B9B2FECC1B015C38E\", \"0C1B33ECCFB04DC36E8D9BB6F420BDA1424A137687282763FE6FBCFFE68347FA\", \"DA7BC49B24A1A76536D824D6EFE2AEBF67249E83670CEBBF9FE63FCBF98A5206\", \r\n        \"D6E3A2AA4D9B4048969655BAB2A80C92C3783CE03BE5139FF1B6528AFA18739D\", \"E231820DECCA97A8D147314FC8245B36ABB4D443CE6636634E5E552953E1CA05\", \"D21540985A2ECF0F49DEF0194EEAA8D64299F9F2FCE15398EBE50ED1E2254E16\", \"4595C9168F49AF425C72A25380B1E1331D27A6864F755461B9E05B13342A82C4\", \"45F25391BAC89F64B4FF27D277D0A562268C29A673CA2A5CF975D52EEA25B1B4\", \"C44333D568986751F782255A01CBE45B9E00C58CF41F6B2F030F1046E04B0A79\", \"B08D78B10EDA03BE684D169587F8DF2DA0CEFD408D02EA21794159A96B91BBC4\", \"935F9587A7020BEB6817B5FCFBE914C0CC937E678377EFA9AAA39424B508A617\", \"2A51B572A7781A428668BD7C55A59BF4BFD4B6650318ECD021E8048D46FBE3F2\", \"02E829E913B5386CA9ABA4F63B5DA71EA16CA8AFBE93FF35F15416D9F1DB8210\", \r\n        \"5B6ECBC378107317D97138A99A101FD2EC6B08972B5D62F2BAB01FF4BCA84361\", \"2BE98A55959BC103A266021EB48FC723A407D097BB5CD47D21DA2B1817FA12B9\", \"614BC1EF975C7A989B49A42D07D0A6A80A22655540DF254E33F57B71E6713051\", \"1220E7EEB0E151CFAF0A4D05F5EA583C18F7D4B0A58BF28030C9837A96D16928\", \"FF451861C8EEF21047AF7283288A30D8EF22ADFCB20D774BB269F9EE5A81A5E9\", \"272DD6D5805B955F06525643A41562545DA8C7808C8A9CA25E1BC125E37DBB6D\", \"E532DBD2B1279C234FE8FF5C7D0C74056EEE216881F476801DA843407BFF9AE8\", \"92514A84905BB7A4A4B6645DC9864DEB6017AA5897BDDC310A63DD5D2E1A7230\", \"6A35FDF7B4FDB5E7DA73EDB9F65C7BAE3DD79E6BCF3FEF53BF8A1ABE73927E13\", \"A5C95C40FDE01D947531E2990B3E0D517F9B2E1209A728FF78293D1DE20A29FE\", \r\n        \"F35171FC3D7BA5147F7854FC9151F11DA3E28F8E8A3F362AFED35171BCE0330E\", \"600B00B2893EBDCE4569B05C0121FE9C657729A5C1326BA9F843933110E27F6B\", \"DFBB81D24C82D00FE164081F8710BFF4BF16C2EB203440380DC2E09D94E67A08\", \"F743180FE19310421FA9C1124A83EDF210E27B806E08EF85F00084F8BBE2FBF1\", \"4774207CA5441C6799C47328A4BE95FE7BF93F54FEDFC5FFA1F2FF279F4552F8\", \"63780AF915A31FFCA6E5E8F48E724AB3E741310F7FCDF9C7D25EF4F751FE579E\", \"FFB7F0210B5390A586BF61BDFE81BA07420797CF7D2C866DCF8A61E3BFF5A0C8\", \"53D66D0D247C1EF0DB777EB853FB03741B87C4D02A85AFFE48FC2C29DC0DF86F\", \"FFBAF7D7D3A84F7FCDFF7ACD0FD3DFD646622B4041ADF8B0F8432DB5EEC3F20F\", \"93BE8B7FA2FBA39ECB1495B84DACA90DFFE975A3CBF18E3D862843532851CF20\", \r\n        \"C8A510751CEA0EFC6512FC3512FC6114D43DA89BF0B7F295521829855152D9F8\", \"516553A4BA18AA25BA1A290FF5D52409307F96949F2CA5B3A4F422296D97EAAC\", \"94F21D525820D12F94DAAE90F237619F01AA0150C779245E2324FC0689E74629\", \"7C402A67A5F226890EFEFAF4CD00BF92D26D123FCF48EDFDBB94FF0789BF2352\", \"F9FB5279DC38712C426B777B19A5690168026800D80AB0058006A8002805580B\", \"6007C8064803D001CC07980B9000A005880788038801D000A80094000A000A60\", \"D04D69CE02F4029C728BF8EF407818603FC01E805D00CF003C01F038C00E8026\", \"806A80528048C5888E41FDF35805A55900F12DA09BECDBFF3EDC2F3DA8CBBE4F\", \"772FA046E837548BF1BE0BE2FB77BB239FFA9F3CF6ECFF59FD1EE059DB327277\", \"0E9F6FC767406801B88312F7EB5F00BC0A80DF30B90830113AA4035806B04936\", \r\n        \"52279512E5753345EC090AEFA79F00F80A00070A7F92334F86A770FFA32E5C7B\", \"AE3DD79E6BCFB5E7DAF3FFBF07ACA952D81FC3752E5DAD6E9BEE21DDBFE8FE5D\", \"F7B2EE635DAFEE9CEEFAC494C48CC4ECC4AD890F24FE34717FE247895F27BA93\", \"9E4B7A35E958D207491F27F149E793E47ABDDEA65FA2AFD46FD1DFAFFF37FD9F\", \"F46FEA0FEB8FEB3FD47FAA3FABEFD75FD18F37680CD71BB4865443A3C16BF899\", \"E15F0D2F1AF61AF6190E1902860B86A02132599B3C3FF997C9FB926F4CB925C5\", \"93F260CAE329BF4C7939E58F296FA61C4A399ED29DF271CAA7296753BE4AB992\", \"4219C71955C689C629C6EB8DB38C37187F62BCD5986C4C37AE35DE69DC64AC35\", \"3E6ADC693C6FFCDA1866BAD16431D59B58D323A6F74D7F310D99AE332F33AF32\", \"6F343F6EFE95B9C37CD23C25353B7565EA33A9BF4D7D2DF583D4ABA9919638CB\", \r\n        \"32CB1ACB6396A72CCF5AFE60D9678949FB224D9EBE283D3F7D6DFA8674777A75\", \"7A57FA91F453E99FA50BE9E333A666CCC85892F164C6EF33CE650C6544654ECC\", \"5C98B92C73556673E6C399BB32FF90D999F997CC4F32FB3283996840E38F84CB\", \"752ADD645DAA2E4767D7ADD6DDA973EBF6E9F489A6C49589AB139549C9494FE8\", \"7F0F637754FF895E658833DC6E586FB8DFF0A8E129C37F183A0D1F187A0CB264\", \"4DF2ECE48C645BF2F2E4BAE4E6642EF977C9AF261F49EE49FE2CF97CF250F2CF\", \"5376A7F8530EA79C480933C6C2F8688DF38D06E3EDC64263B1D16DDC6BFCD0F8\", \"8DF127268769BBE9B0E91DD349D317A6CB26A579AA79817991F93FCDAF99FDE6\", \"37CD87CC7F3107CC17CC85A9AED4FAD4C753DB52F7C2E87C9EDA9FAAB0CCB0FC\", \"C492665962D968612DFF6AF9BDE5354BBBA5DF12917663DAFCB4BC3447DA9D69\", \r\n        \"6569D56975693F4F7B21ED3FD3FE98E64F7B2BEDABB409E9F1E937A6EBD3D3D3\", \"97A43B6024DDE9BF4A7F2EFD77E91DE97F491F488FC898949195B13263634645\", \"464D4643C64319BE8C9F65FC6BC67319BFCBA07414C583887EA9BBAA93255E9F\", \"A84DBC1546CB96684FBC3391496C487C30914B7C34F15789AF25B6271E4E3C96\", \"F841E2C7896712CF272A92C6274D4C9A997443D24F92744919494B92DC497549\", \"F727ED48BA98F430C8D6DB295AE31A90844A73A339227572EAF4D49B526F4D4D\", \"4ECD48B5A52E4975A4AE4EE5527F95FA62EAABA97CEA9554CA926D999B6E4D5F\", \"9CBE1C246135F4A039FD85F483E947D3DF49EF0669E849EF4DE7D3CFA6A764A4\", \"655833B2337281F33F66BC937132A327A33783CF88CCD467BA322B32AB33E9CC\", \"2D995B331B329B325B328F6776679ECAECC9ECCD840E5A29AA1782345DBDEE33\", \r\n        \"1D951899F81CF4E944E2ED492B92D62555243D96F49BA45D49BB93FE9CF44ED2\", \"A7496793AE244DD0CFD61BF42BF56BF425FA7BF4B5FA06FD43FA47F43FD33FA5\", \"DFA9FFADFE15FD6BFA0EFD01587F5FEBA30D330C46C35DC93B927F91FC52726F\", \"F2B494969487C97AFA3A45674C315A61E5DC657CC9F8AAB1C25C6B6E31FFD4FC\", \"8CF925F351581F5F9A07CD51A9B1303649B05296A796A4568044B4A45AD272D3\", \"0AD28AD3DC30D7F7A535A5FD2EED789A3DFDCEF4A6F447D3DF4B673376643C95\", \"F19B8C97335ECBE8CC389F3103564507AC04743CF107B5E374DB752F412F2FEA\", \"6C899D89D393B6C0ACFC22E9DF929E497A3EE9C5A47793AE265DA7D7EA13F473\", \"F5F3F53AE8A3499FA67F50BF5DBF43FFB8FE09FD903ED290609867D0190C0693\", \"A1D0C01A5E054DE237EC371C301C361C35BC63E836CC4E9E0BDA44976C486E02\", \r\n        \"9DF21CAC91DDA0598E2677279F49BE987C35795E4A724A56CAED291B53AA5276\", \"A5F4805E9962FCA5F105E3CBC60BC65B4D06D32AD326539F69BCF956B3196464\", \"BF3927F52EE8F54BA93BD2F18E4F36F4E1ACAE4F17973837D10032B823F1C9C4\", \"A7135F4CDC9578005A701BB7185F34EE32FA8D6926ABC96E5A6F7A32E3E98C17\", \"337665ECC9D89BB13FE340063AD2314083D66DD1EDD71DD0A9123589E844A3EF\", \"A2D06974313A9DEEACAE5F17D4291255893189F1890989F3A1A534D0C24B13F3\", \"13D72696265624D2A0917B92FA92FA938249BB52F6A4EC8575BF3FE500ACFDA3\", \"29EF80BE3C05FDEA4DE1A16F7D29FD29832941D09B0AA31234A7C618638C33C6\", \"836E4830CE05FDA0030D6132A6811C641B738D4B8D7663BE7135C8C47A63B591\", \"366E3536189B8C2DC6EDC61DC6C78D4F189F343E0DFD5B6F2ABDF6AEFDDA73ED\", \r\n        \"B9F65C7BAE3DD79E6BCFB5E7FFA3CFFF01504B070808DCFA2BA944000000A000\", \"00504B010214001400080008000799663608DCFA2BA944000000A000000A0000\", \"00000000000000000000000000000047434D444C4E2E444C4C504B0506000000\", \"000100010038000000E14400000000\"\r\n    };\r\n    private static final int UNCOMPRESSED_SIZE = 40960;\r\n\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/DirectGif89Frame.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   MediaTools.java\r\n\r\npackage acm.util;\r\n\r\nimport java.awt.Image;\r\nimport java.awt.image.PixelGrabber;\r\nimport java.io.IOException;\r\n\r\n// Referenced classes of package acm.util:\r\n//            Gif89Frame\r\n\r\nclass DirectGif89Frame extends Gif89Frame\r\n{\r\n\r\n    public DirectGif89Frame(Image image)\r\n        throws IOException\r\n    {\r\n        PixelGrabber pixelgrabber = new PixelGrabber(image, 0, 0, -1, -1, true);\r\n        String s = null;\r\n        try\r\n        {\r\n            if(!pixelgrabber.grabPixels())\r\n                s = \"can't grab pixels from image\";\r\n        }\r\n        catch(InterruptedException interruptedexception)\r\n        {\r\n            s = \"interrupted grabbing pixels from image\";\r\n        }\r\n        if(s != null)\r\n        {\r\n            throw new IOException((new StringBuilder()).append(s).append(\" (\").append(getClass().getName()).append(\")\").toString());\r\n        } else\r\n        {\r\n            theWidth = pixelgrabber.getWidth();\r\n            theHeight = pixelgrabber.getHeight();\r\n            argbPixels = (int[])(int[])pixelgrabber.getPixels();\r\n            ciPixels = new byte[argbPixels.length];\r\n            return;\r\n        }\r\n    }\r\n\r\n    public DirectGif89Frame(int i, int j, int ai[])\r\n    {\r\n        theWidth = i;\r\n        theHeight = j;\r\n        argbPixels = new int[theWidth * theHeight];\r\n        System.arraycopy(ai, 0, argbPixels, 0, argbPixels.length);\r\n        ciPixels = new byte[argbPixels.length];\r\n    }\r\n\r\n    Object getPixelSource()\r\n    {\r\n        return argbPixels;\r\n    }\r\n\r\n    private int argbPixels[];\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/EPSImageSaver.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   MediaTools.java\r\n\r\npackage acm.util;\r\n\r\nimport java.awt.Image;\r\n\r\n// Referenced classes of package acm.util:\r\n//            ImageSaver, ErrorException\r\n\r\nclass EPSImageSaver extends ImageSaver\r\n{\r\n\r\n    EPSImageSaver()\r\n    {\r\n    }\r\n\r\n    public void saveImage(Image image)\r\n    {\r\n        throw new ErrorException(\"saveImage: Not yet implemented\");\r\n    }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/EmptyContainer.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   JTFTools.java\r\n\r\npackage acm.util;\r\n\r\nimport java.awt.Container;\r\nimport java.awt.Graphics;\r\n\r\nclass EmptyContainer extends Container\r\n{\r\n\r\n    EmptyContainer()\r\n    {\r\n    }\r\n\r\n    public void update(Graphics g)\r\n    {\r\n        paint(g);\r\n    }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/ErrorException.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   ErrorException.java\r\n\r\npackage acm.util;\r\n\r\n\r\npublic class ErrorException extends RuntimeException\r\n{\r\n\r\n    public ErrorException(String s)\r\n    {\r\n        super(s);\r\n    }\r\n\r\n    public ErrorException(Exception exception)\r\n    {\r\n        super((new StringBuilder()).append(exception.getClass().getName()).append(\": \").append(exception.getMessage()).toString());\r\n    }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/ExportAppletDialog.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   JTFTools.java\r\n\r\npackage acm.util;\r\n\r\nimport acm.program.Program;\r\nimport java.awt.*;\r\nimport java.io.File;\r\nimport javax.swing.*;\r\n\r\nclass ExportAppletDialog extends JFileChooser\r\n{\r\n\r\n    public ExportAppletDialog(File file, Program program)\r\n    {\r\n        super(file);\r\n        setFileSelectionMode(1);\r\n        setDialogTitle(\"Export Applet\");\r\n        String s = program.getClass().getName();\r\n        String s1 = s.substring(s.lastIndexOf('.') + 1);\r\n        setSelectedFile(new File(file, s1));\r\n        exportFilesCheckBox = new JCheckBox(\"Export resource files\");\r\n        exportFilesCheckBox.setSelected(true);\r\n        target = program;\r\n    }\r\n\r\n    protected JDialog createDialog(Component component)\r\n    {\r\n        JDialog jdialog = super.createDialog(component);\r\n        JPanel jpanel = new JPanel();\r\n        jpanel.setLayout(new FlowLayout(0));\r\n        jpanel.add(exportFilesCheckBox);\r\n        jdialog.getContentPane().add(jpanel, \"South\");\r\n        jdialog.validate();\r\n        return jdialog;\r\n    }\r\n\r\n    public File chooseOutputDirectory()\r\n    {\r\n        int i = showSaveDialog(target);\r\n        if(i == 1)\r\n            return null;\r\n        else\r\n            return getSelectedFile();\r\n    }\r\n\r\n    public boolean exportFiles()\r\n    {\r\n        return exportFilesCheckBox.isSelected();\r\n    }\r\n\r\n    private JCheckBox exportFilesCheckBox;\r\n    private Component target;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/FileChooserFilter.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   FileChooserFilter.java\r\n\r\npackage acm.util;\r\n\r\nimport java.io.File;\r\nimport java.util.StringTokenizer;\r\nimport javax.swing.filechooser.FileFilter;\r\n\r\n// Referenced classes of package acm.util:\r\n//            JTFTools\r\n\r\npublic class FileChooserFilter extends FileFilter\r\n{\r\n\r\n    public FileChooserFilter(String s)\r\n    {\r\n        this(s, (new StringBuilder()).append(s.isEmpty() ? \"All\" : s).append(\" files\").toString());\r\n    }\r\n\r\n    public FileChooserFilter(String s, String s1)\r\n    {\r\n        filenameDescription = s1;\r\n        int i = Math.max(s.lastIndexOf(\"/\"), s.lastIndexOf('\\\\'));\r\n        filenamePattern = s.substring(i + 1);\r\n        dir = i != -1 ? s.substring(0, i) : \"\";\r\n        if(dir.isEmpty())\r\n            dir = System.getProperty(\"user.dir\");\r\n        else\r\n        if(!dir.startsWith(\"/\"))\r\n            dir = (new StringBuilder()).append(System.getProperty(\"user.dir\")).append(\"/\").append(dir).toString();\r\n    }\r\n\r\n    public String getDirectory()\r\n    {\r\n        return dir;\r\n    }\r\n\r\n    public String getPattern()\r\n    {\r\n        return filenamePattern;\r\n    }\r\n\r\n    public String getDescription()\r\n    {\r\n        return filenameDescription;\r\n    }\r\n\r\n    public boolean accept(File file)\r\n    {\r\n        if(file.isDirectory() || filenamePattern.isEmpty())\r\n            return true;\r\n        for(StringTokenizer stringtokenizer = new StringTokenizer(filenamePattern, \";\"); stringtokenizer.hasMoreTokens();)\r\n        {\r\n            String s = stringtokenizer.nextToken();\r\n            if(s.length() > 0 && JTFTools.matchFilenamePattern(file.getName(), s))\r\n                return true;\r\n        }\r\n\r\n        return false;\r\n    }\r\n\r\n    private String filenamePattern;\r\n    private String filenameDescription;\r\n    private String dir;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/GIF89ImageSaver.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   MediaTools.java\r\n\r\npackage acm.util;\r\n\r\nimport java.awt.Image;\r\nimport java.io.File;\r\nimport java.io.IOException;\r\n\r\n// Referenced classes of package acm.util:\r\n//            ImageSaver, Gif89Encoder, ErrorException, Gif89Frame, \r\n//            Platform\r\n\r\nclass GIF89ImageSaver extends ImageSaver\r\n{\r\n\r\n    GIF89ImageSaver()\r\n    {\r\n    }\r\n\r\n    public void saveImage(Image image)\r\n    {\r\n        try\r\n        {\r\n            Gif89Encoder gif89encoder = new Gif89Encoder(image);\r\n            gif89encoder.setTransparentIndex(0);\r\n            gif89encoder.getFrameAt(0).setInterlaced(true);\r\n            gif89encoder.encode(getOutputStream());\r\n        }\r\n        catch(IOException ioexception)\r\n        {\r\n            throw new ErrorException((new StringBuilder()).append(\"saveImage: \").append(ioexception.getMessage()).toString());\r\n        }\r\n    }\r\n\r\n    public void updateFileType(File file)\r\n    {\r\n        Platform.setFileTypeAndCreator(file, \"GIFf\", \"prvw\");\r\n    }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/GIFImageSaver.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   MediaTools.java\r\n\r\npackage acm.util;\r\n\r\nimport java.awt.Image;\r\nimport java.io.File;\r\nimport java.util.Iterator;\r\nimport javax.imageio.ImageIO;\r\n\r\n// Referenced classes of package acm.util:\r\n//            ImageSaver, GIF89ImageSaver\r\n\r\nclass GIFImageSaver extends ImageSaver\r\n{\r\n\r\n    public GIFImageSaver()\r\n    {\r\n        super(\"GIF\", 2);\r\n        if(!ImageIO.getImageWritersBySuffix(\"gif\").hasNext())\r\n            gif89Saver = new GIF89ImageSaver();\r\n    }\r\n\r\n    public void saveImage(Image image)\r\n    {\r\n        if(gif89Saver != null)\r\n        {\r\n            gif89Saver.setOutputStream(getOutputStream());\r\n            gif89Saver.saveImage(image);\r\n        } else\r\n        {\r\n            super.saveImage(image);\r\n        }\r\n    }\r\n\r\n    public void updateFileType(File file)\r\n    {\r\n        if(gif89Saver != null)\r\n            gif89Saver.updateFileType(file);\r\n    }\r\n\r\n    private GIF89ImageSaver gif89Saver;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/Gif89Encoder.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   MediaTools.java\r\n\r\npackage acm.util;\r\n\r\nimport java.awt.*;\r\nimport java.io.*;\r\nimport java.util.Vector;\r\n\r\n// Referenced classes of package acm.util:\r\n//            GifColorTable, Gif89Frame, DirectGif89Frame, IndexGif89Frame, \r\n//            Gif89Put\r\n\r\nclass Gif89Encoder\r\n{\r\n\r\n    public Gif89Encoder()\r\n    {\r\n        dispDim = new Dimension(0, 0);\r\n        bgIndex = 0;\r\n        loopCount = 1;\r\n        vFrames = new Vector();\r\n        colorTable = new GifColorTable();\r\n    }\r\n\r\n    public Gif89Encoder(Image image)\r\n        throws IOException\r\n    {\r\n        this();\r\n        addFrame(image);\r\n    }\r\n\r\n    public Gif89Encoder(Color acolor[])\r\n    {\r\n        dispDim = new Dimension(0, 0);\r\n        bgIndex = 0;\r\n        loopCount = 1;\r\n        vFrames = new Vector();\r\n        colorTable = new GifColorTable(acolor);\r\n    }\r\n\r\n    public Gif89Encoder(Color acolor[], int i, int j, byte abyte0[])\r\n        throws IOException\r\n    {\r\n        this(acolor);\r\n        addFrame(i, j, abyte0);\r\n    }\r\n\r\n    public int getFrameCount()\r\n    {\r\n        return vFrames.size();\r\n    }\r\n\r\n    public Gif89Frame getFrameAt(int i)\r\n    {\r\n        return isOk(i) ? (Gif89Frame)vFrames.elementAt(i) : null;\r\n    }\r\n\r\n    public void addFrame(Gif89Frame gif89frame)\r\n        throws IOException\r\n    {\r\n        accommodateFrame(gif89frame);\r\n        vFrames.addElement(gif89frame);\r\n    }\r\n\r\n    public void addFrame(Image image)\r\n        throws IOException\r\n    {\r\n        addFrame(((Gif89Frame) (new DirectGif89Frame(image))));\r\n    }\r\n\r\n    public void addFrame(int i, int j, byte abyte0[])\r\n        throws IOException\r\n    {\r\n        addFrame(((Gif89Frame) (new IndexGif89Frame(i, j, abyte0))));\r\n    }\r\n\r\n    public void insertFrame(int i, Gif89Frame gif89frame)\r\n        throws IOException\r\n    {\r\n        accommodateFrame(gif89frame);\r\n        vFrames.insertElementAt(gif89frame, i);\r\n    }\r\n\r\n    public void setTransparentIndex(int i)\r\n    {\r\n        colorTable.setTransparent(i);\r\n    }\r\n\r\n    public void setLogicalDisplay(Dimension dimension, int i)\r\n    {\r\n        dispDim = new Dimension(dimension);\r\n        bgIndex = i;\r\n    }\r\n\r\n    public void setLoopCount(int i)\r\n    {\r\n        loopCount = i;\r\n    }\r\n\r\n    public void setComments(String s)\r\n    {\r\n        theComments = s;\r\n    }\r\n\r\n    public void setUniformDelay(int i)\r\n    {\r\n        for(int j = 0; j < vFrames.size(); j++)\r\n            ((Gif89Frame)vFrames.elementAt(j)).setDelay(i);\r\n\r\n    }\r\n\r\n    public void encode(OutputStream outputstream)\r\n        throws IOException\r\n    {\r\n        int i = getFrameCount();\r\n        boolean flag = i > 1;\r\n        colorTable.closePixelProcessing();\r\n        Gif89Put.ascii(\"GIF89a\", outputstream);\r\n        writeLogicalScreenDescriptor(outputstream);\r\n        colorTable.encode(outputstream);\r\n        if(flag && loopCount != 1)\r\n            writeNetscapeExtension(outputstream);\r\n        if(theComments != null && theComments.length() > 0)\r\n            writeCommentExtension(outputstream);\r\n        for(int j = 0; j < i; j++)\r\n            ((Gif89Frame)vFrames.elementAt(j)).encode(outputstream, flag, colorTable.getDepth(), colorTable.getTransparent());\r\n\r\n        outputstream.write(59);\r\n        outputstream.flush();\r\n    }\r\n\r\n    public static void main(String args[])\r\n    {\r\n        Toolkit toolkit = Toolkit.getDefaultToolkit();\r\n        BufferedOutputStream bufferedoutputstream = new BufferedOutputStream(new FileOutputStream(\"gif89out.gif\"));\r\n        if(args[0].toUpperCase().endsWith(\".JPG\"))\r\n        {\r\n            (new Gif89Encoder(toolkit.getImage(args[0]))).encode(bufferedoutputstream);\r\n        } else\r\n        {\r\n            BufferedReader bufferedreader = new BufferedReader(new FileReader(args[0]));\r\n            Gif89Encoder gif89encoder = new Gif89Encoder();\r\n            String s;\r\n            while((s = bufferedreader.readLine()) != null) \r\n                gif89encoder.addFrame(toolkit.getImage(s.trim()));\r\n            gif89encoder.setLoopCount(0);\r\n            gif89encoder.encode(bufferedoutputstream);\r\n            bufferedreader.close();\r\n        }\r\n        bufferedoutputstream.close();\r\n        System.exit(0);\r\n        break MISSING_BLOCK_LABEL_158;\r\n        Exception exception;\r\n        exception;\r\n        exception.printStackTrace();\r\n        System.exit(0);\r\n        break MISSING_BLOCK_LABEL_158;\r\n        Exception exception1;\r\n        exception1;\r\n        System.exit(0);\r\n        throw exception1;\r\n    }\r\n\r\n    private void accommodateFrame(Gif89Frame gif89frame)\r\n        throws IOException\r\n    {\r\n        dispDim.width = Math.max(dispDim.width, gif89frame.getWidth());\r\n        dispDim.height = Math.max(dispDim.height, gif89frame.getHeight());\r\n        colorTable.processPixels(gif89frame);\r\n    }\r\n\r\n    private void writeLogicalScreenDescriptor(OutputStream outputstream)\r\n        throws IOException\r\n    {\r\n        Gif89Put.leShort(dispDim.width, outputstream);\r\n        Gif89Put.leShort(dispDim.height, outputstream);\r\n        outputstream.write(0xf0 | colorTable.getDepth() - 1);\r\n        outputstream.write(bgIndex);\r\n        outputstream.write(0);\r\n    }\r\n\r\n    private void writeNetscapeExtension(OutputStream outputstream)\r\n        throws IOException\r\n    {\r\n        outputstream.write(33);\r\n        outputstream.write(255);\r\n        outputstream.write(11);\r\n        Gif89Put.ascii(\"NETSCAPE2.0\", outputstream);\r\n        outputstream.write(3);\r\n        outputstream.write(1);\r\n        Gif89Put.leShort(loopCount <= 1 ? 0 : loopCount - 1, outputstream);\r\n        outputstream.write(0);\r\n    }\r\n\r\n    private void writeCommentExtension(OutputStream outputstream)\r\n        throws IOException\r\n    {\r\n        outputstream.write(33);\r\n        outputstream.write(254);\r\n        int i = theComments.length() % 255;\r\n        int j = theComments.length() / 255;\r\n        int k = j + (i <= 0 ? 0 : 1);\r\n        int l = 0;\r\n        for(int i1 = 0; i1 < k; i1++)\r\n        {\r\n            int j1 = i1 >= j ? i : 255;\r\n            outputstream.write(j1);\r\n            Gif89Put.ascii(theComments.substring(l, l + j1), outputstream);\r\n            l += j1;\r\n        }\r\n\r\n        outputstream.write(0);\r\n    }\r\n\r\n    private boolean isOk(int i)\r\n    {\r\n        return i >= 0 && i < vFrames.size();\r\n    }\r\n\r\n    private Dimension dispDim;\r\n    private GifColorTable colorTable;\r\n    private int bgIndex;\r\n    private int loopCount;\r\n    private String theComments;\r\n    private Vector vFrames;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/Gif89Frame.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   MediaTools.java\r\n\r\npackage acm.util;\r\n\r\nimport java.awt.Point;\r\nimport java.io.IOException;\r\nimport java.io.OutputStream;\r\n\r\n// Referenced classes of package acm.util:\r\n//            GifPixelsEncoder, Gif89Put\r\n\r\nabstract class Gif89Frame\r\n{\r\n\r\n    public void setPosition(Point point)\r\n    {\r\n        thePosition = new Point(point);\r\n    }\r\n\r\n    public void setInterlaced(boolean flag)\r\n    {\r\n        isInterlaced = flag;\r\n    }\r\n\r\n    public void setDelay(int i)\r\n    {\r\n        csecsDelay = i;\r\n    }\r\n\r\n    public void setDisposalMode(int i)\r\n    {\r\n        disposalCode = i;\r\n    }\r\n\r\n    Gif89Frame()\r\n    {\r\n        theWidth = -1;\r\n        theHeight = -1;\r\n        thePosition = new Point(0, 0);\r\n        disposalCode = 1;\r\n    }\r\n\r\n    abstract Object getPixelSource();\r\n\r\n    int getWidth()\r\n    {\r\n        return theWidth;\r\n    }\r\n\r\n    int getHeight()\r\n    {\r\n        return theHeight;\r\n    }\r\n\r\n    byte[] getPixelSink()\r\n    {\r\n        return ciPixels;\r\n    }\r\n\r\n    void encode(OutputStream outputstream, boolean flag, int i, int j)\r\n        throws IOException\r\n    {\r\n        writeGraphicControlExtension(outputstream, flag, j);\r\n        writeImageDescriptor(outputstream);\r\n        (new GifPixelsEncoder(theWidth, theHeight, ciPixels, isInterlaced, i)).encode(outputstream);\r\n    }\r\n\r\n    private void writeGraphicControlExtension(OutputStream outputstream, boolean flag, int i)\r\n        throws IOException\r\n    {\r\n        boolean flag1 = i != -1;\r\n        if(flag1 || flag)\r\n        {\r\n            outputstream.write(33);\r\n            outputstream.write(249);\r\n            outputstream.write(4);\r\n            outputstream.write(disposalCode << 2 | flag1);\r\n            Gif89Put.leShort(csecsDelay, outputstream);\r\n            outputstream.write(i);\r\n            outputstream.write(0);\r\n        }\r\n    }\r\n\r\n    private void writeImageDescriptor(OutputStream outputstream)\r\n        throws IOException\r\n    {\r\n        outputstream.write(44);\r\n        Gif89Put.leShort(thePosition.x, outputstream);\r\n        Gif89Put.leShort(thePosition.y, outputstream);\r\n        Gif89Put.leShort(theWidth, outputstream);\r\n        Gif89Put.leShort(theHeight, outputstream);\r\n        outputstream.write(isInterlaced ? 64 : 0);\r\n    }\r\n\r\n    public static final int DM_UNDEFINED = 0;\r\n    public static final int DM_LEAVE = 1;\r\n    public static final int DM_BGCOLOR = 2;\r\n    public static final int DM_REVERT = 3;\r\n    int theWidth;\r\n    int theHeight;\r\n    byte ciPixels[];\r\n    private Point thePosition;\r\n    private boolean isInterlaced;\r\n    private int csecsDelay;\r\n    private int disposalCode;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/Gif89Put.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   MediaTools.java\r\n\r\npackage acm.util;\r\n\r\nimport java.io.IOException;\r\nimport java.io.OutputStream;\r\n\r\nfinal class Gif89Put\r\n{\r\n\r\n    Gif89Put()\r\n    {\r\n    }\r\n\r\n    static void ascii(String s, OutputStream outputstream)\r\n        throws IOException\r\n    {\r\n        byte abyte0[] = new byte[s.length()];\r\n        for(int i = 0; i < abyte0.length; i++)\r\n            abyte0[i] = (byte)s.charAt(i);\r\n\r\n        outputstream.write(abyte0);\r\n    }\r\n\r\n    static void leShort(int i, OutputStream outputstream)\r\n        throws IOException\r\n    {\r\n        outputstream.write(i & 0xff);\r\n        outputstream.write(i >> 8 & 0xff);\r\n    }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/GifColorTable.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   MediaTools.java\r\n\r\npackage acm.util;\r\n\r\nimport java.awt.Color;\r\nimport java.io.IOException;\r\nimport java.io.OutputStream;\r\n\r\n// Referenced classes of package acm.util:\r\n//            ReverseColorMap, DirectGif89Frame, IndexGif89Frame, Gif89Frame\r\n\r\nclass GifColorTable\r\n{\r\n\r\n    GifColorTable()\r\n    {\r\n        theColors = new int[256];\r\n        transparentIndex = -1;\r\n        ciCount = 0;\r\n        ciLookup = new ReverseColorMap();\r\n    }\r\n\r\n    GifColorTable(Color acolor[])\r\n    {\r\n        theColors = new int[256];\r\n        transparentIndex = -1;\r\n        ciCount = 0;\r\n        int i = Math.min(theColors.length, acolor.length);\r\n        for(int j = 0; j < i; j++)\r\n            theColors[j] = acolor[j].getRGB();\r\n\r\n    }\r\n\r\n    int getDepth()\r\n    {\r\n        return colorDepth;\r\n    }\r\n\r\n    int getTransparent()\r\n    {\r\n        return transparentIndex;\r\n    }\r\n\r\n    void setTransparent(int i)\r\n    {\r\n        transparentIndex = i;\r\n    }\r\n\r\n    void processPixels(Gif89Frame gif89frame)\r\n        throws IOException\r\n    {\r\n        if(gif89frame instanceof DirectGif89Frame)\r\n            filterPixels((DirectGif89Frame)gif89frame);\r\n        else\r\n            trackPixelUsage((IndexGif89Frame)gif89frame);\r\n    }\r\n\r\n    void closePixelProcessing()\r\n    {\r\n        colorDepth = computeColorDepth(ciCount);\r\n    }\r\n\r\n    void encode(OutputStream outputstream)\r\n        throws IOException\r\n    {\r\n        int i = 1 << colorDepth;\r\n        for(int j = 0; j < i; j++)\r\n        {\r\n            outputstream.write(theColors[j] >> 16 & 0xff);\r\n            outputstream.write(theColors[j] >> 8 & 0xff);\r\n            outputstream.write(theColors[j] & 0xff);\r\n        }\r\n\r\n    }\r\n\r\n    private void filterPixels(DirectGif89Frame directgif89frame)\r\n        throws IOException\r\n    {\r\n        if(ciLookup == null)\r\n            throw new IOException(\"RGB frames require palette autodetection\");\r\n        int ai[] = (int[])(int[])directgif89frame.getPixelSource();\r\n        byte abyte0[] = directgif89frame.getPixelSink();\r\n        int i = ai.length;\r\n        for(int j = 0; j < i; j++)\r\n        {\r\n            int k = ai[j];\r\n            if(k >>> 24 < 128)\r\n                if(transparentIndex == -1)\r\n                    transparentIndex = ciCount;\r\n                else\r\n                if(k != theColors[transparentIndex])\r\n                {\r\n                    abyte0[j] = (byte)transparentIndex;\r\n                    continue;\r\n                }\r\n            int l = ciLookup.getPaletteIndex(k & 0xffffff);\r\n            if(l == -1)\r\n            {\r\n                if(ciCount == 256)\r\n                    throw new IOException(\"can't encode as GIF (> 256 colors)\");\r\n                theColors[ciCount] = k;\r\n                ciLookup.put(k & 0xffffff, ciCount);\r\n                abyte0[j] = (byte)ciCount;\r\n                ciCount++;\r\n            } else\r\n            {\r\n                abyte0[j] = (byte)l;\r\n            }\r\n        }\r\n\r\n    }\r\n\r\n    private void trackPixelUsage(IndexGif89Frame indexgif89frame)\r\n    {\r\n        byte abyte0[] = (byte[])(byte[])indexgif89frame.getPixelSource();\r\n        int i = abyte0.length;\r\n        for(int j = 0; j < i; j++)\r\n            if(abyte0[j] >= ciCount)\r\n                ciCount = abyte0[j] + 1;\r\n\r\n    }\r\n\r\n    private int computeColorDepth(int i)\r\n    {\r\n        if(i <= 2)\r\n            return 1;\r\n        if(i <= 4)\r\n            return 2;\r\n        return i > 16 ? 8 : 4;\r\n    }\r\n\r\n    private int theColors[];\r\n    private int colorDepth;\r\n    private int transparentIndex;\r\n    private int ciCount;\r\n    private ReverseColorMap ciLookup;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/GifPixelsEncoder.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   MediaTools.java\r\n\r\npackage acm.util;\r\n\r\nimport java.io.IOException;\r\nimport java.io.OutputStream;\r\n\r\nclass GifPixelsEncoder\r\n{\r\n\r\n    GifPixelsEncoder(int i, int j, byte abyte0[], boolean flag, int k)\r\n    {\r\n        maxbits = 12;\r\n        maxmaxcode = 4096;\r\n        htab = new int[5003];\r\n        codetab = new int[5003];\r\n        hsize = 5003;\r\n        free_ent = 0;\r\n        clear_flg = false;\r\n        cur_accum = 0;\r\n        cur_bits = 0;\r\n        accum = new byte[256];\r\n        imgW = i;\r\n        imgH = j;\r\n        pixAry = abyte0;\r\n        wantInterlaced = flag;\r\n        initCodeSize = Math.max(2, k);\r\n    }\r\n\r\n    void encode(OutputStream outputstream)\r\n        throws IOException\r\n    {\r\n        outputstream.write(initCodeSize);\r\n        countDown = imgW * imgH;\r\n        xCur = yCur = curPass = 0;\r\n        compress(initCodeSize + 1, outputstream);\r\n        outputstream.write(0);\r\n    }\r\n\r\n    private void bumpPosition()\r\n    {\r\n        xCur++;\r\n        if(xCur == imgW)\r\n        {\r\n            xCur = 0;\r\n            if(!wantInterlaced)\r\n                yCur++;\r\n            else\r\n                switch(curPass)\r\n                {\r\n                default:\r\n                    break;\r\n\r\n                case 0: // '\\0'\r\n                    yCur += 8;\r\n                    if(yCur >= imgH)\r\n                    {\r\n                        curPass++;\r\n                        yCur = 4;\r\n                    }\r\n                    break;\r\n\r\n                case 1: // '\\001'\r\n                    yCur += 8;\r\n                    if(yCur >= imgH)\r\n                    {\r\n                        curPass++;\r\n                        yCur = 2;\r\n                    }\r\n                    break;\r\n\r\n                case 2: // '\\002'\r\n                    yCur += 4;\r\n                    if(yCur >= imgH)\r\n                    {\r\n                        curPass++;\r\n                        yCur = 1;\r\n                    }\r\n                    break;\r\n\r\n                case 3: // '\\003'\r\n                    yCur += 2;\r\n                    break;\r\n                }\r\n        }\r\n    }\r\n\r\n    private int nextPixel()\r\n    {\r\n        if(countDown == 0)\r\n        {\r\n            return -1;\r\n        } else\r\n        {\r\n            countDown--;\r\n            byte byte0 = pixAry[yCur * imgW + xCur];\r\n            bumpPosition();\r\n            return byte0 & 0xff;\r\n        }\r\n    }\r\n\r\n    final int MAXCODE(int i)\r\n    {\r\n        return (1 << i) - 1;\r\n    }\r\n\r\n    void compress(int i, OutputStream outputstream)\r\n        throws IOException\r\n    {\r\n        g_init_bits = i;\r\n        clear_flg = false;\r\n        n_bits = g_init_bits;\r\n        maxcode = MAXCODE(n_bits);\r\n        ClearCode = 1 << i - 1;\r\n        EOFCode = ClearCode + 1;\r\n        free_ent = ClearCode + 2;\r\n        char_init();\r\n        int j1 = nextPixel();\r\n        int i2 = 0;\r\n        for(int j = hsize; j < 0x10000; j *= 2)\r\n            i2++;\r\n\r\n        i2 = 8 - i2;\r\n        int l1 = hsize;\r\n        cl_hash(l1);\r\n        output(ClearCode, outputstream);\r\nlabel0:\r\n        do\r\n        {\r\n            int i1;\r\n            if((i1 = nextPixel()) == -1)\r\n                break;\r\n            int k = (i1 << maxbits) + j1;\r\n            int l = i1 << i2 ^ j1;\r\n            if(htab[l] == k)\r\n            {\r\n                j1 = codetab[l];\r\n                continue;\r\n            }\r\n            if(htab[l] >= 0)\r\n            {\r\n                int k1 = l1 - l;\r\n                if(l == 0)\r\n                    k1 = 1;\r\n                do\r\n                {\r\n                    if((l -= k1) < 0)\r\n                        l += l1;\r\n                    if(htab[l] != k)\r\n                        continue;\r\n                    j1 = codetab[l];\r\n                    continue label0;\r\n                } while(htab[l] >= 0);\r\n            }\r\n            output(j1, outputstream);\r\n            j1 = i1;\r\n            if(free_ent < maxmaxcode)\r\n            {\r\n                codetab[l] = free_ent++;\r\n                htab[l] = k;\r\n            } else\r\n            {\r\n                cl_block(outputstream);\r\n            }\r\n        } while(true);\r\n        output(j1, outputstream);\r\n        output(EOFCode, outputstream);\r\n    }\r\n\r\n    void output(int i, OutputStream outputstream)\r\n        throws IOException\r\n    {\r\n        cur_accum &= masks[cur_bits];\r\n        if(cur_bits > 0)\r\n            cur_accum |= i << cur_bits;\r\n        else\r\n            cur_accum = i;\r\n        for(cur_bits += n_bits; cur_bits >= 8; cur_bits -= 8)\r\n        {\r\n            char_out((byte)(cur_accum & 0xff), outputstream);\r\n            cur_accum >>= 8;\r\n        }\r\n\r\n        if(free_ent > maxcode || clear_flg)\r\n            if(clear_flg)\r\n            {\r\n                maxcode = MAXCODE(n_bits = g_init_bits);\r\n                clear_flg = false;\r\n            } else\r\n            {\r\n                n_bits++;\r\n                if(n_bits == maxbits)\r\n                    maxcode = maxmaxcode;\r\n                else\r\n                    maxcode = MAXCODE(n_bits);\r\n            }\r\n        if(i == EOFCode)\r\n        {\r\n            for(; cur_bits > 0; cur_bits -= 8)\r\n            {\r\n                char_out((byte)(cur_accum & 0xff), outputstream);\r\n                cur_accum >>= 8;\r\n            }\r\n\r\n            flush_char(outputstream);\r\n        }\r\n    }\r\n\r\n    void cl_block(OutputStream outputstream)\r\n        throws IOException\r\n    {\r\n        cl_hash(hsize);\r\n        free_ent = ClearCode + 2;\r\n        clear_flg = true;\r\n        output(ClearCode, outputstream);\r\n    }\r\n\r\n    void cl_hash(int i)\r\n    {\r\n        for(int j = 0; j < i; j++)\r\n            htab[j] = -1;\r\n\r\n    }\r\n\r\n    void char_init()\r\n    {\r\n        a_count = 0;\r\n    }\r\n\r\n    void char_out(byte byte0, OutputStream outputstream)\r\n        throws IOException\r\n    {\r\n        accum[a_count++] = byte0;\r\n        if(a_count >= 254)\r\n            flush_char(outputstream);\r\n    }\r\n\r\n    void flush_char(OutputStream outputstream)\r\n        throws IOException\r\n    {\r\n        if(a_count > 0)\r\n        {\r\n            outputstream.write(a_count);\r\n            outputstream.write(accum, 0, a_count);\r\n            a_count = 0;\r\n        }\r\n    }\r\n\r\n    private static final int EOF = -1;\r\n    private int imgW;\r\n    private int imgH;\r\n    private byte pixAry[];\r\n    private boolean wantInterlaced;\r\n    private int initCodeSize;\r\n    private int countDown;\r\n    private int xCur;\r\n    private int yCur;\r\n    private int curPass;\r\n    static final int BITS = 12;\r\n    static final int HSIZE = 5003;\r\n    int n_bits;\r\n    int maxbits;\r\n    int maxcode;\r\n    int maxmaxcode;\r\n    int htab[];\r\n    int codetab[];\r\n    int hsize;\r\n    int free_ent;\r\n    boolean clear_flg;\r\n    int g_init_bits;\r\n    int ClearCode;\r\n    int EOFCode;\r\n    int cur_accum;\r\n    int cur_bits;\r\n    int masks[] = {\r\n        0, 1, 3, 7, 15, 31, 63, 127, 255, 511, \r\n        1023, 2047, 4095, 8191, 16383, 32767, 65535\r\n    };\r\n    int a_count;\r\n    byte accum[];\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/HexByteOutputStream.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   JTFTools.java\r\n\r\npackage acm.util;\r\n\r\nimport java.io.*;\r\n\r\nclass HexByteOutputStream extends OutputStream\r\n{\r\n\r\n    public HexByteOutputStream(PrintStream printstream)\r\n    {\r\n        out = printstream;\r\n        out.flush();\r\n        columnCount = 0;\r\n    }\r\n\r\n    public void write(int i)\r\n        throws IOException\r\n    {\r\n        String s = Integer.toHexString(256 + (i & 0xff)).toUpperCase();\r\n        out.write(s.charAt(1));\r\n        out.write(s.charAt(2));\r\n        columnCount += 2;\r\n        if(columnCount >= 76)\r\n        {\r\n            columnCount = 0;\r\n            out.println();\r\n        }\r\n    }\r\n\r\n    public void flush()\r\n    {\r\n        out.flush();\r\n    }\r\n\r\n    public void close()\r\n    {\r\n        out.close();\r\n    }\r\n\r\n    private static final int COLUMNS = 76;\r\n    private int columnCount;\r\n    private PrintStream out;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/HexInputStream.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   MediaTools.java\r\n\r\npackage acm.util;\r\n\r\nimport java.io.InputStream;\r\n\r\nclass HexInputStream extends InputStream\r\n{\r\n\r\n    public HexInputStream(String as[])\r\n    {\r\n        hex = as;\r\n        arrayIndex = 0;\r\n        charIndex = 0;\r\n    }\r\n\r\n    public int read()\r\n    {\r\n        if(arrayIndex >= hex.length)\r\n            return -1;\r\n        if(charIndex >= hex[arrayIndex].length())\r\n        {\r\n            arrayIndex++;\r\n            charIndex = 0;\r\n            return read();\r\n        } else\r\n        {\r\n            int i = Character.digit(hex[arrayIndex].charAt(charIndex++), 16) << 4;\r\n            i |= Character.digit(hex[arrayIndex].charAt(charIndex++), 16);\r\n            return i;\r\n        }\r\n    }\r\n\r\n    private String hex[];\r\n    private int arrayIndex;\r\n    private int charIndex;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/ImageSaver.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   MediaTools.java\r\n\r\npackage acm.util;\r\n\r\nimport java.awt.Image;\r\nimport java.io.*;\r\nimport javax.imageio.ImageIO;\r\nimport javax.imageio.stream.ImageOutputStream;\r\nimport javax.imageio.stream.MemoryCacheImageOutputStream;\r\n\r\n// Referenced classes of package acm.util:\r\n//            ErrorException, MediaTools\r\n\r\nclass ImageSaver\r\n{\r\n\r\n    public ImageSaver()\r\n    {\r\n    }\r\n\r\n    public ImageSaver(String s, int i)\r\n    {\r\n        formatName = s;\r\n        bufferType = i;\r\n    }\r\n\r\n    public void setOutputStream(OutputStream outputstream)\r\n    {\r\n        out = outputstream;\r\n    }\r\n\r\n    public OutputStream getOutputStream()\r\n    {\r\n        return out;\r\n    }\r\n\r\n    public void saveImage(Image image)\r\n    {\r\n        java.awt.image.BufferedImage bufferedimage = MediaTools.createBufferedImage(image, bufferType);\r\n        MemoryCacheImageOutputStream memorycacheimageoutputstream = new MemoryCacheImageOutputStream(getOutputStream());\r\n        try\r\n        {\r\n            if(!ImageIO.write(bufferedimage, formatName, memorycacheimageoutputstream))\r\n                throw new IOException(\"ImageIO.write failed\");\r\n            memorycacheimageoutputstream.close();\r\n        }\r\n        catch(IOException ioexception)\r\n        {\r\n            throw new ErrorException((new StringBuilder()).append(\"saveImage: \").append(ioexception.getMessage()).toString());\r\n        }\r\n    }\r\n\r\n    public void updateFileType(File file)\r\n    {\r\n    }\r\n\r\n    public void dumpByte(int i)\r\n    {\r\n        try\r\n        {\r\n            out.write(i);\r\n        }\r\n        catch(IOException ioexception)\r\n        {\r\n            throw new ErrorException((new StringBuilder()).append(\"saveImage: \").append(ioexception.getMessage()).toString());\r\n        }\r\n    }\r\n\r\n    public void dumpShort(int i)\r\n    {\r\n        try\r\n        {\r\n            out.write(i >> 8);\r\n            out.write(i);\r\n        }\r\n        catch(IOException ioexception)\r\n        {\r\n            throw new ErrorException((new StringBuilder()).append(\"saveImage: \").append(ioexception.getMessage()).toString());\r\n        }\r\n    }\r\n\r\n    public void dumpLong(int i)\r\n    {\r\n        try\r\n        {\r\n            out.write(i >> 24);\r\n            out.write(i >> 16);\r\n            out.write(i >> 8);\r\n            out.write(i);\r\n        }\r\n        catch(IOException ioexception)\r\n        {\r\n            throw new ErrorException((new StringBuilder()).append(\"saveImage: \").append(ioexception.getMessage()).toString());\r\n        }\r\n    }\r\n\r\n    public int getPixelComponent(int i, char c)\r\n    {\r\n        int j = i >> 24 & 0xff;\r\n        switch(c)\r\n        {\r\n        case 82: // 'R'\r\n            i >>= 16;\r\n            break;\r\n\r\n        case 71: // 'G'\r\n            i >>= 8;\r\n            break;\r\n\r\n        default:\r\n            throw new ErrorException(\"getPixelComponent: Illegal color\");\r\n\r\n        case 66: // 'B'\r\n            break;\r\n        }\r\n        i &= 0xff;\r\n        return (j * i + (255 - j) * 255) / 255;\r\n    }\r\n\r\n    private OutputStream out;\r\n    private String formatName;\r\n    private int bufferType;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/IndexGif89Frame.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   MediaTools.java\r\n\r\npackage acm.util;\r\n\r\n\r\n// Referenced classes of package acm.util:\r\n//            Gif89Frame\r\n\r\nclass IndexGif89Frame extends Gif89Frame\r\n{\r\n\r\n    public IndexGif89Frame(int i, int j, byte abyte0[])\r\n    {\r\n        theWidth = i;\r\n        theHeight = j;\r\n        ciPixels = new byte[theWidth * theHeight];\r\n        System.arraycopy(abyte0, 0, ciPixels, 0, ciPixels.length);\r\n    }\r\n\r\n    Object getPixelSource()\r\n    {\r\n        return ciPixels;\r\n    }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/JPEGImageSaver.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   MediaTools.java\r\n\r\npackage acm.util;\r\n\r\n\r\n// Referenced classes of package acm.util:\r\n//            ImageSaver\r\n\r\nclass JPEGImageSaver extends ImageSaver\r\n{\r\n\r\n    public JPEGImageSaver()\r\n    {\r\n        super(\"JPEG\", 1);\r\n    }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/JPGImageSaver.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   MediaTools.java\r\n\r\npackage acm.util;\r\n\r\n\r\n// Referenced classes of package acm.util:\r\n//            JPEGImageSaver\r\n\r\nclass JPGImageSaver extends JPEGImageSaver\r\n{\r\n\r\n    JPGImageSaver()\r\n    {\r\n    }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/JTFTools.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   JTFTools.java\r\n\r\npackage acm.util;\r\n\r\nimport acm.program.Program;\r\nimport java.applet.Applet;\r\nimport java.awt.*;\r\nimport java.io.*;\r\nimport java.lang.reflect.Method;\r\nimport java.net.InetAddress;\r\nimport java.util.*;\r\nimport java.util.zip.*;\r\nimport javax.swing.JFileChooser;\r\nimport javax.swing.JProgressBar;\r\n\r\n// Referenced classes of package acm.util:\r\n//            EmptyContainer, ErrorException, FileChooserFilter, MailStream, \r\n//            HexByteOutputStream, Base64OutputStream, ThreadedMenuAction, ExportAppletDialog, \r\n//            NullOutputStream, SubmitOptions, Platform, DOSCommandLine, \r\n//            ProgressBarDialog\r\n\r\npublic class JTFTools\r\n{\r\n\r\n    private JTFTools()\r\n    {\r\n    }\r\n\r\n    public static void pause(double d)\r\n    {\r\n        Applet applet = (Applet)appletTable.get(Thread.currentThread());\r\n        if(applet == null)\r\n        {\r\n            Applet applet1 = mostRecentApplet;\r\n            appletTable.put(Thread.currentThread(), applet1);\r\n        }\r\n        try\r\n        {\r\n            int i = (int)d;\r\n            int j = (int)Math.round((d - (double)i) * 1000000D);\r\n            Thread.sleep(i, j);\r\n        }\r\n        catch(InterruptedException interruptedexception) { }\r\n    }\r\n\r\n    public static String toHexString(int i)\r\n    {\r\n        return Integer.toHexString(i).toUpperCase();\r\n    }\r\n\r\n    public static String toHexString(int i, int j)\r\n    {\r\n        String s;\r\n        for(s = toHexString(i); s.length() < j; s = (new StringBuilder()).append(\"0\").append(s).toString());\r\n        return s;\r\n    }\r\n\r\n    public static Container createEmptyContainer()\r\n    {\r\n        return new EmptyContainer();\r\n    }\r\n\r\n    public static Frame getEnclosingFrame(Component component)\r\n    {\r\n        if(component instanceof Program)\r\n            component = ((Program)component).getContentPane();\r\n        for(; component != null && !(component instanceof Frame); component = component.getParent());\r\n        return (Frame)component;\r\n    }\r\n\r\n    public static Font getStandardFont(Font font)\r\n    {\r\n        if(!fontFamilyTableInitialized)\r\n            initFontFamilyTable();\r\n        if(font == null || fontFamilyTable == null)\r\n            return font;\r\n        String s = font.getFamily();\r\n        if(fontFamilyTable.get(trimFamilyName(s)) != null)\r\n            return font;\r\n        if(s.equals(\"Serif\") || s.equals(\"Times\"))\r\n            s = getFirstAvailableFontSubstitution(SERIF_SUBSTITUTIONS);\r\n        else\r\n        if(s.equals(\"SansSerif\"))\r\n            s = getFirstAvailableFontSubstitution(SANSSERIF_SUBSTITUTIONS);\r\n        else\r\n        if(s.equals(\"Monospaced\"))\r\n            s = getFirstAvailableFontSubstitution(MONOSPACED_SUBSTITUTIONS);\r\n        else\r\n            return font;\r\n        if(s == null)\r\n            return font;\r\n        else\r\n            return new Font(s, font.getStyle(), font.getSize());\r\n    }\r\n\r\n    public static String[] getFontList()\r\n    {\r\n        if(!fontFamilyTableInitialized)\r\n            initFontFamilyTable();\r\n        return fontFamilyArray;\r\n    }\r\n\r\n    public static String findFontFamily(String s)\r\n    {\r\n        if(!fontFamilyTableInitialized)\r\n            initFontFamilyTable();\r\n        for(StringTokenizer stringtokenizer = new StringTokenizer(s, \";\", false); stringtokenizer.hasMoreTokens();)\r\n        {\r\n            String s1 = (String)fontFamilyTable.get(trimFamilyName(stringtokenizer.nextToken()));\r\n            if(s1 != null)\r\n                return s1;\r\n        }\r\n\r\n        return null;\r\n    }\r\n\r\n    public static Font decodeFont(String s)\r\n    {\r\n        return decodeFont(s, null);\r\n    }\r\n\r\n    public static Font decodeFont(String s, Font font)\r\n    {\r\n        String s1 = s;\r\n        int i = font != null ? font.getStyle() : 0;\r\n        int j = font != null ? font.getSize() : 12;\r\n        int k = s.indexOf('-');\r\n        if(k >= 0)\r\n        {\r\n            s1 = s.substring(0, k);\r\n            s = s.substring(k + 1).toLowerCase();\r\n            String s2 = s;\r\n            k = s.indexOf('-');\r\n            if(k >= 0)\r\n            {\r\n                s2 = s.substring(0, k);\r\n                s = s.substring(k + 1);\r\n            } else\r\n            {\r\n                s = \"*\";\r\n            }\r\n            if(Character.isDigit(s2.charAt(0)))\r\n            {\r\n                String s3 = s2;\r\n                s2 = s;\r\n                s = s3;\r\n            }\r\n            if(s2.equals(\"plain\"))\r\n                i = 0;\r\n            else\r\n            if(s2.equals(\"bold\"))\r\n                i = 1;\r\n            else\r\n            if(s2.equals(\"italic\"))\r\n                i = 2;\r\n            else\r\n            if(s2.equals(\"bolditalic\"))\r\n                i = 3;\r\n            else\r\n            if(!s2.equals(\"*\"))\r\n                throw new ErrorException(\"Illegal font style\");\r\n            if(!s.equals(\"*\"))\r\n                try\r\n                {\r\n                    j = Integer.valueOf(s).intValue();\r\n                }\r\n                catch(NumberFormatException numberformatexception)\r\n                {\r\n                    throw new ErrorException(\"Illegal font size\");\r\n                }\r\n        }\r\n        if(s1.equals(\"*\"))\r\n        {\r\n            s1 = font != null ? font.getName() : \"Default\";\r\n        } else\r\n        {\r\n            if(!fontFamilyTableInitialized)\r\n                initFontFamilyTable();\r\n            if(fontFamilyTable != null)\r\n            {\r\n                s1 = (String)fontFamilyTable.get(trimFamilyName(s1));\r\n                if(s1 == null)\r\n                    s1 = \"Default\";\r\n            }\r\n        }\r\n        return getStandardFont(new Font(s1, i, j));\r\n    }\r\n\r\n    public static Color decodeColor(String s)\r\n    {\r\n        if(s.equalsIgnoreCase(\"desktop\"))\r\n            return SystemColor.desktop;\r\n        if(s.equalsIgnoreCase(\"activeCaption\"))\r\n            return SystemColor.activeCaption;\r\n        if(s.equalsIgnoreCase(\"activeCaptionText\"))\r\n            return SystemColor.activeCaptionText;\r\n        if(s.equalsIgnoreCase(\"activeCaptionBorder\"))\r\n            return SystemColor.activeCaptionBorder;\r\n        if(s.equalsIgnoreCase(\"inactiveCaption\"))\r\n            return SystemColor.inactiveCaption;\r\n        if(s.equalsIgnoreCase(\"inactiveCaptionText\"))\r\n            return SystemColor.inactiveCaptionText;\r\n        if(s.equalsIgnoreCase(\"inactiveCaptionBorder\"))\r\n            return SystemColor.inactiveCaptionBorder;\r\n        if(s.equalsIgnoreCase(\"window\"))\r\n            return SystemColor.window;\r\n        if(s.equalsIgnoreCase(\"windowBorder\"))\r\n            return SystemColor.windowBorder;\r\n        if(s.equalsIgnoreCase(\"windowText\"))\r\n            return SystemColor.windowText;\r\n        if(s.equalsIgnoreCase(\"menu\"))\r\n            return SystemColor.menu;\r\n        if(s.equalsIgnoreCase(\"menuText\"))\r\n            return SystemColor.menuText;\r\n        if(s.equalsIgnoreCase(\"text\"))\r\n            return SystemColor.text;\r\n        if(s.equalsIgnoreCase(\"textText\"))\r\n            return SystemColor.textText;\r\n        if(s.equalsIgnoreCase(\"textHighlight\"))\r\n            return SystemColor.textHighlight;\r\n        if(s.equalsIgnoreCase(\"textHighlightText\"))\r\n            return SystemColor.textHighlightText;\r\n        if(s.equalsIgnoreCase(\"textInactiveText\"))\r\n            return SystemColor.textInactiveText;\r\n        if(s.equalsIgnoreCase(\"control\"))\r\n            return SystemColor.control;\r\n        if(s.equalsIgnoreCase(\"controlText\"))\r\n            return SystemColor.controlText;\r\n        if(s.equalsIgnoreCase(\"controlHighlight\"))\r\n            return SystemColor.controlHighlight;\r\n        if(s.equalsIgnoreCase(\"controlLtHighlight\"))\r\n            return SystemColor.controlLtHighlight;\r\n        if(s.equalsIgnoreCase(\"controlShadow\"))\r\n            return SystemColor.controlShadow;\r\n        if(s.equalsIgnoreCase(\"controlDkShadow\"))\r\n            return SystemColor.controlDkShadow;\r\n        if(s.equalsIgnoreCase(\"scrollbar\"))\r\n            return SystemColor.scrollbar;\r\n        if(s.equalsIgnoreCase(\"info\"))\r\n            return SystemColor.info;\r\n        if(s.equalsIgnoreCase(\"infoText\"))\r\n            return SystemColor.infoText;\r\n        if(s.equalsIgnoreCase(\"black\"))\r\n            return Color.BLACK;\r\n        if(s.equalsIgnoreCase(\"blue\"))\r\n            return Color.BLUE;\r\n        if(s.equalsIgnoreCase(\"cyan\"))\r\n            return Color.CYAN;\r\n        if(s.equalsIgnoreCase(\"darkGray\"))\r\n            return Color.DARK_GRAY;\r\n        if(s.equalsIgnoreCase(\"DARK_GRAY\"))\r\n            return Color.DARK_GRAY;\r\n        if(s.equalsIgnoreCase(\"gray\"))\r\n            return Color.GRAY;\r\n        if(s.equalsIgnoreCase(\"green\"))\r\n            return Color.GREEN;\r\n        if(s.equalsIgnoreCase(\"lightGray\"))\r\n            return Color.LIGHT_GRAY;\r\n        if(s.equalsIgnoreCase(\"LIGHT_GRAY\"))\r\n            return Color.LIGHT_GRAY;\r\n        if(s.equalsIgnoreCase(\"magenta\"))\r\n            return Color.MAGENTA;\r\n        if(s.equalsIgnoreCase(\"orange\"))\r\n            return Color.ORANGE;\r\n        if(s.equalsIgnoreCase(\"pink\"))\r\n            return Color.PINK;\r\n        if(s.equalsIgnoreCase(\"red\"))\r\n            return Color.RED;\r\n        if(s.equalsIgnoreCase(\"white\"))\r\n            return Color.WHITE;\r\n        if(s.equalsIgnoreCase(\"yellow\"))\r\n            return Color.YELLOW;\r\n        int j;\r\n        if(s.startsWith(\"0x\"))\r\n            s = s.substring(2);\r\n        else\r\n        if(s.startsWith(\"#\"))\r\n            s = s.substring(1);\r\n        int i = s.length();\r\n        j = 255;\r\n        if(i == 8)\r\n        {\r\n            j = Integer.parseInt(s.substring(0, 2), 16);\r\n            s = s.substring(2);\r\n        } else\r\n        if(i != 6)\r\n            throw new ErrorException(\"decodeColor: Colors must have 6 or 8 hexadecimal digits\");\r\n        return new Color(Integer.parseInt(s, 16) | j << 24, true);\r\n        NumberFormatException numberformatexception;\r\n        numberformatexception;\r\n        throw new ErrorException(\"decodeColor: Illegal color value\");\r\n    }\r\n\r\n    public static String showOpenDialog(String s, String s1)\r\n    {\r\n        FileChooserFilter filechooserfilter = new FileChooserFilter(s1);\r\n        JFileChooser jfilechooser = new JFileChooser(filechooserfilter.getDirectory());\r\n        jfilechooser.setFileFilter(filechooserfilter);\r\n        jfilechooser.setDialogTitle(s);\r\n        if(jfilechooser.showOpenDialog(null) == 0)\r\n            return jfilechooser.getSelectedFile().getAbsolutePath();\r\n        else\r\n            return \"\";\r\n    }\r\n\r\n    public static String showSaveDialog(String s, String s1)\r\n    {\r\n        FileChooserFilter filechooserfilter = new FileChooserFilter(s1);\r\n        String s2 = filechooserfilter.getDirectory();\r\n        JFileChooser jfilechooser = new JFileChooser(s2);\r\n        jfilechooser.setSelectedFile(new File(s2, filechooserfilter.getPattern()));\r\n        jfilechooser.setDialogTitle(s);\r\n        if(jfilechooser.showSaveDialog(null) == 0)\r\n            return jfilechooser.getSelectedFile().getAbsolutePath();\r\n        else\r\n            return \"\";\r\n    }\r\n\r\n    public static boolean matchFilenamePattern(String s, String s1)\r\n    {\r\n        return recursiveMatch(s, 0, s1, 0);\r\n    }\r\n\r\n    public static void registerApplet(Applet applet)\r\n    {\r\n        registerApplet(applet, Thread.currentThread());\r\n        mostRecentApplet = applet;\r\n    }\r\n\r\n    public static void registerApplet(Applet applet, Thread thread)\r\n    {\r\n        appletTable.put(thread, applet);\r\n    }\r\n\r\n    public static Applet getApplet()\r\n    {\r\n        Applet applet = (Applet)appletTable.get(Thread.currentThread());\r\n        if(applet == null)\r\n            applet = mostRecentApplet;\r\n        return applet;\r\n    }\r\n\r\n    public static void setDebugOptions(String s)\r\n    {\r\n        debugOptions = s != null ? (new StringBuilder()).append(\"+\").append(s.toLowerCase()).append(\"+\").toString() : null;\r\n    }\r\n\r\n    public static boolean testDebugOption(String s)\r\n    {\r\n        if(debugOptions == null)\r\n            return false;\r\n        else\r\n            return debugOptions.indexOf((new StringBuilder()).append(\"+\").append(s.toLowerCase()).append(\"+\").toString()) >= 0;\r\n    }\r\n\r\n    public static String getCommandLine()\r\n    {\r\n        switch(Platform.getPlatform())\r\n        {\r\n        case 1: // '\\001'\r\n        case 2: // '\\002'\r\n            return getShellCommandLine();\r\n\r\n        case 3: // '\\003'\r\n            return DOSCommandLine.getCommandLine();\r\n        }\r\n        return getShellCommandLine();\r\n    }\r\n\r\n    public static String getMainClass()\r\n    {\r\n        String s = null;\r\n        try\r\n        {\r\n            s = System.getProperty(\"java.main\");\r\n        }\r\n        catch(Exception exception) { }\r\n        if(s == null)\r\n            s = readMainClassFromClassPath();\r\n        if(s == null)\r\n        {\r\n            String s1 = getCommandLine();\r\n            s = readMainClassFromCommandLine(s1);\r\n        }\r\n        return s;\r\n    }\r\n\r\n    public static boolean checkIfLoaded(String s)\r\n    {\r\n        boolean flag;\r\n        if(Platform.compareVersion(\"1.2\") < 0)\r\n            return false;\r\n        flag = false;\r\n        if(System.getSecurityManager() != null)\r\n            return false;\r\n        if(managerThatFails == null)\r\n            try\r\n            {\r\n                Class class1 = Class.forName(\"acm.util.SecurityManagerThatFails\");\r\n                managerThatFails = (SecurityManager)class1.newInstance();\r\n            }\r\n            catch(Exception exception)\r\n            {\r\n                return false;\r\n            }\r\n        System.setSecurityManager(managerThatFails);\r\n        flag = Class.forName(s) != null;\r\n        System.setSecurityManager(null);\r\n        break MISSING_BLOCK_LABEL_103;\r\n        Object obj;\r\n        obj;\r\n        flag = true;\r\n        System.setSecurityManager(null);\r\n        break MISSING_BLOCK_LABEL_103;\r\n        obj;\r\n        System.setSecurityManager(null);\r\n        break MISSING_BLOCK_LABEL_103;\r\n        Exception exception1;\r\n        exception1;\r\n        System.setSecurityManager(null);\r\n        throw exception1;\r\n        obj;\r\n        return flag;\r\n    }\r\n\r\n    public static void terminateAppletThreads(Applet applet)\r\n    {\r\n        try\r\n        {\r\n            Thread thread = Thread.currentThread();\r\n            Class class1 = Class.forName(\"java.lang.Thread\");\r\n            Method method = class1.getMethod(\"stop\", new Class[0]);\r\n            Iterator iterator = appletTable.keySet().iterator();\r\n            do\r\n            {\r\n                if(!iterator.hasNext())\r\n                    break;\r\n                Thread thread1 = (Thread)iterator.next();\r\n                if(thread1 != thread && thread1.isAlive() && isAnonymous(thread1) && applet == appletTable.get(thread1))\r\n                    method.invoke(thread1, new Object[0]);\r\n            } while(true);\r\n        }\r\n        catch(Exception exception) { }\r\n    }\r\n\r\n    public static boolean isAnonymous(Thread thread)\r\n    {\r\n        String s = thread.getName();\r\n        if(!s.startsWith(\"Thread-\"))\r\n            return false;\r\n        for(int i = 7; i < s.length(); i++)\r\n            if(!Character.isDigit(s.charAt(i)))\r\n                return false;\r\n\r\n        return true;\r\n    }\r\n\r\n    public static PrintStream openMailStream(String s, String s1, String s2)\r\n    {\r\n        return new MailStream(s, s1, s2);\r\n    }\r\n\r\n    public static void cancelMail(PrintStream printstream)\r\n    {\r\n        ((MailStream)printstream).cancel();\r\n    }\r\n\r\n    public static void sendStandardHeaders(PrintStream printstream, String s, String s1)\r\n    {\r\n        ((MailStream)printstream).sendStandardHeaders(s, s1);\r\n    }\r\n\r\n    public static OutputStream openHexByteOutputStream(PrintStream printstream)\r\n    {\r\n        return new HexByteOutputStream(printstream);\r\n    }\r\n\r\n    public static OutputStream openBase64OutputStream(PrintStream printstream)\r\n    {\r\n        return new Base64OutputStream(printstream);\r\n    }\r\n\r\n    public static void padBase64OutputStream(OutputStream outputstream)\r\n    {\r\n        ((Base64OutputStream)outputstream).pad();\r\n    }\r\n\r\n    public static void exportJar(File file, File file1, String s, Object obj)\r\n    {\r\n        try\r\n        {\r\n            ZipOutputStream zipoutputstream = new ZipOutputStream(new FileOutputStream(file));\r\n            dumpJarAndResources(\"\", file1, zipoutputstream, null, s, null, false, obj);\r\n            zipoutputstream.close();\r\n        }\r\n        catch(IOException ioexception)\r\n        {\r\n            throw new ErrorException(ioexception);\r\n        }\r\n    }\r\n\r\n    public static boolean executeExportAction(Program program, String s)\r\n    {\r\n        if(s.equals(\"Export Applet\") || s.equals(\"Submit Project\"))\r\n        {\r\n            (new Thread(new ThreadedMenuAction(program, s))).start();\r\n            return true;\r\n        } else\r\n        {\r\n            return false;\r\n        }\r\n    }\r\n\r\n    public static String getLocalHostName()\r\n    {\r\n        InetAddress inetaddress;\r\n        Method method;\r\n        inetaddress = InetAddress.getLocalHost();\r\n        Class class1 = inetaddress.getClass();\r\n        method = class1.getMethod(\"getCanonicalHostName\", new Class[0]);\r\n        return (String)method.invoke(inetaddress, new Object[0]);\r\n        Exception exception;\r\n        exception;\r\n        return null;\r\n    }\r\n\r\n    public static void copyFile(File file, File file1)\r\n    {\r\n        try\r\n        {\r\n            BufferedInputStream bufferedinputstream = new BufferedInputStream(new FileInputStream(file));\r\n            BufferedOutputStream bufferedoutputstream = new BufferedOutputStream(new FileOutputStream(file1));\r\n            copyBytes(bufferedinputstream, bufferedoutputstream, file.length());\r\n            bufferedinputstream.close();\r\n            bufferedoutputstream.close();\r\n            Platform.copyFileTypeAndCreator(file, file1);\r\n        }\r\n        catch(IOException ioexception)\r\n        {\r\n            throw new ErrorException(ioexception);\r\n        }\r\n    }\r\n\r\n    public static void copyBytes(InputStream inputstream, OutputStream outputstream, long l)\r\n        throws IOException\r\n    {\r\n        byte abyte0[] = new byte[4096];\r\n        int i;\r\n        for(; l > 0L; l -= i)\r\n        {\r\n            i = (int)Math.min(4096L, l);\r\n            i = inputstream.read(abyte0, 0, i);\r\n            if(i == -1)\r\n                return;\r\n            outputstream.write(abyte0, 0, i);\r\n        }\r\n\r\n    }\r\n\r\n    static String getURLSuffix(String s)\r\n    {\r\n        return s.substring(s.lastIndexOf('/') + 1);\r\n    }\r\n\r\n    static void exportApplet(Program program, JProgressBar jprogressbar)\r\n    {\r\n        String s;\r\n        String s1;\r\n        File file;\r\n        ExportAppletDialog exportappletdialog;\r\n        File file2;\r\n        File file3;\r\n        try\r\n        {\r\n            s = program.getClass().getName();\r\n            s1 = s.substring(s.lastIndexOf(\".\") + 1);\r\n            file = new File(System.getProperty(\"user.dir\"));\r\n            File file1 = new File(System.getProperty(\"user.home\"));\r\n            exportappletdialog = new ExportAppletDialog(file1, program);\r\n            file2 = exportappletdialog.chooseOutputDirectory();\r\n            if(file2 == null)\r\n                return;\r\n        }\r\n        catch(IOException ioexception)\r\n        {\r\n            throw new ErrorException(ioexception);\r\n        }\r\n        if(file2.exists())\r\n        {\r\n            if(!file2.isDirectory())\r\n                file2 = new File(file2.getParent());\r\n        } else\r\n        {\r\n            file2.mkdir();\r\n        }\r\n        if(jprogressbar != null)\r\n        {\r\n            jprogressbar.setMaximum(countResources(file, RESOURCE_EXTENSIONS, \"acm.jar\") + 1);\r\n            ProgressBarDialog.popup(jprogressbar);\r\n        }\r\n        file3 = new File(file, \"index.html\");\r\n        if(file3.canRead())\r\n            copyFile(file3, new File(file2, \"index.html\"));\r\n        else\r\n            dumpHTMLIndex(file2, program, s, s1);\r\n        if(jprogressbar == null)\r\n            break MISSING_BLOCK_LABEL_213;\r\n        if(ProgressBarDialog.hasBeenCancelled(jprogressbar))\r\n            return;\r\n        jprogressbar.setValue(jprogressbar.getValue() + 1);\r\n        dumpJarAndResources(file, file2, (new StringBuilder()).append(s1).append(\".jar\").toString(), \"acm.jar\", jprogressbar, exportappletdialog.exportFiles(), null);\r\n        if(jprogressbar != null)\r\n            ProgressBarDialog.dismiss(jprogressbar);\r\n    }\r\n\r\n    private static void initFontFamilyTable()\r\n    {\r\n        fontFamilyTableInitialized = true;\r\n        for(int i = 1; fontFamilyArray == null && i <= 2; i++)\r\n            try\r\n            {\r\n                if(i == 1)\r\n                {\r\n                    Class class1 = Class.forName(\"java.awt.GraphicsEnvironment\");\r\n                    Method method = class1.getMethod(\"getLocalGraphicsEnvironment\", new Class[0]);\r\n                    Method method2 = class1.getMethod(\"getAvailableFontFamilyNames\", new Class[0]);\r\n                    Object obj = method.invoke(null, new Object[0]);\r\n                    fontFamilyArray = (String[])(String[])method2.invoke(obj, new Object[0]);\r\n                } else\r\n                {\r\n                    Class class2 = Class.forName(\"java.awt.Toolkit\");\r\n                    Method method1 = class2.getMethod(\"getFontList\", new Class[0]);\r\n                    fontFamilyArray = (String[])(String[])method1.invoke(Toolkit.getDefaultToolkit(), new Object[0]);\r\n                }\r\n            }\r\n            catch(Exception exception) { }\r\n\r\n        fontFamilyTable = new HashMap();\r\n        for(int j = 0; j < fontFamilyArray.length; j++)\r\n            fontFamilyTable.put(trimFamilyName(fontFamilyArray[j]), fontFamilyArray[j]);\r\n\r\n        fontFamilyTable.put(\"serif\", getFirstAvailableFontSubstitution(SERIF_SUBSTITUTIONS));\r\n        fontFamilyTable.put(\"sansserif\", getFirstAvailableFontSubstitution(SANSSERIF_SUBSTITUTIONS));\r\n        fontFamilyTable.put(\"monospaced\", getFirstAvailableFontSubstitution(MONOSPACED_SUBSTITUTIONS));\r\n    }\r\n\r\n    private static String getFirstAvailableFontSubstitution(String as[])\r\n    {\r\n        for(int i = 0; i < as.length; i++)\r\n            if(fontFamilyTable.get(trimFamilyName(as[i])) != null)\r\n                return as[i];\r\n\r\n        return null;\r\n    }\r\n\r\n    private static String trimFamilyName(String s)\r\n    {\r\n        String s1 = \"\";\r\n        for(int i = 0; i < s.length(); i++)\r\n        {\r\n            char c = s.charAt(i);\r\n            if(c != ' ' && c != '-')\r\n                s1 = (new StringBuilder()).append(s1).append(Character.toLowerCase(c)).toString();\r\n        }\r\n\r\n        return s1;\r\n    }\r\n\r\n    private static boolean recursiveMatch(String s, int i, String s1, int j)\r\n    {\r\n        int k = s.length();\r\n        int l = s1.length();\r\n        if(j == l)\r\n            return i == k;\r\n        char c = s1.charAt(j);\r\n        if(c == '*')\r\n        {\r\n            for(int i1 = i; i1 <= k; i1++)\r\n                if(recursiveMatch(s, i1, s1, j + 1))\r\n                    return true;\r\n\r\n            return false;\r\n        }\r\n        if(i == k)\r\n            return false;\r\n        char c1 = s.charAt(i);\r\n        if(c == '[')\r\n        {\r\n            boolean flag = false;\r\n            boolean flag1 = false;\r\n            if(++j == l)\r\n                throw new ErrorException(\"matchFilenamePattern: missing ]\");\r\n            if(s1.charAt(j) == '^')\r\n            {\r\n                j++;\r\n                flag1 = true;\r\n            }\r\n            while(j < l && s1.charAt(j) != ']') \r\n                if(j + 2 < l && s1.charAt(j + 1) == '-')\r\n                {\r\n                    flag |= c1 >= s1.charAt(j) && c1 <= s1.charAt(j + 2);\r\n                    j += 3;\r\n                } else\r\n                {\r\n                    flag |= c1 == s1.charAt(j);\r\n                    j++;\r\n                }\r\n            if(j == l)\r\n                throw new ErrorException(\"matchFilenamePattern: missing ]\");\r\n            if(flag == flag1)\r\n                return false;\r\n        } else\r\n        if(c != '?' && c != c1)\r\n            return false;\r\n        return recursiveMatch(s, i + 1, s1, j + 1);\r\n    }\r\n\r\n    private static String getShellCommandLine()\r\n    {\r\n        Process process;\r\n        String s = Platform.isMac() ? \"command\" : \"args\";\r\n        String as[] = {\r\n            \"bash\", \"-c\", (new StringBuilder()).append(\"ps -p $PPID -o \").append(s).toString()\r\n        };\r\n        process = Runtime.getRuntime().exec(as);\r\n        process.waitFor();\r\n        if(process.getErrorStream().read() != -1)\r\n            return null;\r\n        BufferedReader bufferedreader;\r\n        bufferedreader = new BufferedReader(new InputStreamReader(process.getInputStream()));\r\n        bufferedreader.readLine();\r\n        return bufferedreader.readLine();\r\n        Exception exception;\r\n        exception;\r\n        return null;\r\n    }\r\n\r\n    private static String readMainClassFromManifest(String s)\r\n    {\r\n        ZipFile zipfile;\r\n        ZipEntry zipentry;\r\n        if(testDebugOption(\"main\"))\r\n            System.out.println((new StringBuilder()).append(\"Read class from JAR manifest in \").append(s).toString());\r\n        zipfile = new ZipFile(s);\r\n        zipentry = zipfile.getEntry(\"META-INF/MANIFEST.MF\");\r\n        if(zipentry == null)\r\n            return null;\r\n        BufferedReader bufferedreader;\r\n        String s1;\r\n        bufferedreader = new BufferedReader(new InputStreamReader(zipfile.getInputStream(zipentry)));\r\n        s1 = bufferedreader.readLine();\r\n_L1:\r\n        String s2;\r\n        if(s1 == null)\r\n            break MISSING_BLOCK_LABEL_164;\r\n        if(!s1.startsWith(\"Main-Class:\"))\r\n            break MISSING_BLOCK_LABEL_155;\r\n        s2 = s1.substring(\"Main-Class:\".length()).trim();\r\n        if(testDebugOption(\"main\"))\r\n            System.out.println((new StringBuilder()).append(\"Main class = \").append(s2).toString());\r\n        return s2;\r\n        s1 = bufferedreader.readLine();\r\n          goto _L1\r\n        return null;\r\n        IOException ioexception;\r\n        ioexception;\r\n        return null;\r\n    }\r\n\r\n    private static String readMainClassFromCommandLine(String s)\r\n    {\r\n        boolean flag;\r\n        if(testDebugOption(\"main\"))\r\n            System.out.println((new StringBuilder()).append(\"Read class from command line: \").append(s).toString());\r\n        if(s == null)\r\n            return null;\r\n        flag = false;\r\n        StreamTokenizer streamtokenizer;\r\n        boolean flag1;\r\n        streamtokenizer = new StreamTokenizer(new StringReader(s));\r\n        streamtokenizer.resetSyntax();\r\n        streamtokenizer.wordChars(33, 255);\r\n        streamtokenizer.quoteChar(34);\r\n        streamtokenizer.quoteChar(39);\r\n        streamtokenizer.whitespaceChars(32, 32);\r\n        streamtokenizer.whitespaceChars(9, 9);\r\n        flag1 = false;\r\n_L8:\r\n        int i;\r\n        String s1;\r\n        i = streamtokenizer.nextToken();\r\n        s1 = streamtokenizer.sval;\r\n        i;\r\n        JVM INSTR lookupswitch 4: default 165\r\n    //                   -3: 162\r\n    //                   -1: 160\r\n    //                   34: 162\r\n    //                   39: 162;\r\n           goto _L1 _L2 _L3 _L2 _L2\r\n_L3:\r\n        return null;\r\n_L1:\r\n        return null;\r\n_L2:\r\n        if(!flag1) goto _L5; else goto _L4\r\n_L4:\r\n        if(!s1.startsWith(\"-\")) goto _L7; else goto _L6\r\n_L6:\r\n        if(s1.equals(\"-jar\"))\r\n            flag = true;\r\n        else\r\n        if(s1.equals(\"-cp\") || s1.equals(\"-classpath\"))\r\n            streamtokenizer.nextToken();\r\n          goto _L8\r\n_L7:\r\n        if(flag)\r\n            return readMainClassFromManifest(s1);\r\n        if(testDebugOption(\"main\"))\r\n            System.out.println((new StringBuilder()).append(\"Main class = \").append(s1).toString());\r\n        return s1;\r\n_L5:\r\n        try\r\n        {\r\n            flag1 = true;\r\n        }\r\n        catch(IOException ioexception)\r\n        {\r\n            return null;\r\n        }\r\n          goto _L8\r\n    }\r\n\r\n    private static String readMainClassFromClassPath()\r\n    {\r\n        String s;\r\n        StringTokenizer stringtokenizer;\r\n        s = null;\r\n        String s1 = System.getProperty(\"java.class.path\");\r\n        if(s1 == null)\r\n            s1 = System.getProperty(\"user.dir\");\r\n        if(s1 == null)\r\n            return null;\r\n        if(testDebugOption(\"main\"))\r\n            System.out.println((new StringBuilder()).append(\"Read class from class path: \").append(s1).toString());\r\n        stringtokenizer = new StringTokenizer(s1, \":;\");\r\n_L4:\r\n        String as[];\r\n        int i;\r\n        do\r\n        {\r\n            if(!stringtokenizer.hasMoreTokens())\r\n                break MISSING_BLOCK_LABEL_408;\r\n            String s2 = stringtokenizer.nextToken();\r\n            File file = new File(s2);\r\n            as = null;\r\n            if(file.isDirectory())\r\n                as = file.list();\r\n            else\r\n            if(s2.endsWith(\".jar\") && !nameAppears(s2, SKIP_JARS))\r\n                try\r\n                {\r\n                    ZipFile zipfile = new ZipFile(file);\r\n                    ArrayList arraylist = new ArrayList();\r\n                    for(Enumeration enumeration = zipfile.entries(); enumeration.hasMoreElements(); arraylist.add(((ZipEntry)enumeration.nextElement()).getName()));\r\n                    as = new String[arraylist.size()];\r\n                    for(int j = 0; j < as.length; j++)\r\n                        as[j] = (String)arraylist.get(j);\r\n\r\n                }\r\n                catch(IOException ioexception)\r\n                {\r\n                    as = null;\r\n                }\r\n        } while(as == null);\r\n        i = 0;\r\n_L2:\r\n        String s4;\r\n        if(i >= as.length)\r\n            break; /* Loop/switch isn't completed */\r\n        String s3 = as[i];\r\n        if(!s3.endsWith(\".class\"))\r\n            break MISSING_BLOCK_LABEL_399;\r\n        s4 = s3.substring(0, s3.lastIndexOf(\".class\"));\r\n        if(s4.indexOf(\"/\") != -1 || !checkIfLoaded(s4))\r\n            break MISSING_BLOCK_LABEL_399;\r\n        Class class1 = Class.forName(s4);\r\n        Class aclass[] = {\r\n            as.getClass()\r\n        };\r\n        if(class1.getMethod(\"main\", aclass) == null)\r\n            break MISSING_BLOCK_LABEL_399;\r\n        if(testDebugOption(\"main\"))\r\n            System.out.println((new StringBuilder()).append(\"Main class = \").append(s4).toString());\r\n        if(s != null)\r\n            return null;\r\n        try\r\n        {\r\n            s = s4;\r\n        }\r\n        catch(Exception exception) { }\r\n        i++;\r\n        if(true) goto _L2; else goto _L1\r\n_L1:\r\n        if(true) goto _L4; else goto _L3\r\n_L3:\r\n        return s;\r\n    }\r\n\r\n    protected static void submitProject(Program program, JProgressBar jprogressbar)\r\n    {\r\n        SubmitOptions submitoptions = getOptions(program);\r\n        if(submitoptions.popup() && submitoptions.isComplete())\r\n        {\r\n            String s = program.getClass().getName();\r\n            String s1 = s.substring(s.lastIndexOf(\".\") + 1);\r\n            String s2 = (new StringBuilder()).append(\"==\").append(System.currentTimeMillis()).append(\"==\").toString();\r\n            String s3 = submitoptions.getSMTPServer();\r\n            String s4 = submitoptions.getAuthorName();\r\n            String s5 = submitoptions.getAuthorEMail();\r\n            String s6 = submitoptions.getSubmissionEMail();\r\n            String s7 = s5;\r\n            int i = s5.indexOf(\"@\");\r\n            if(i != -1)\r\n                s7 = s7.substring(0, i);\r\n            String s8 = (new StringBuilder()).append(s1).append(\"_\").append(s7).toString();\r\n            File file = new File(System.getProperty(\"user.dir\"));\r\n            if(jprogressbar != null)\r\n            {\r\n                jprogressbar.setMaximum(countResources(file, SUBMIT_EXTENSIONS, null));\r\n                ProgressBarDialog.popup(jprogressbar);\r\n            }\r\n            PrintStream printstream = openMailStream(s3, s5, s6);\r\n            sendStandardHeaders(printstream, s4, s1);\r\n            printstream.println(\"Mime-Version: 1.0\");\r\n            printstream.println((new StringBuilder()).append(\"Content-Type: multipart/mixed; boundary=\\\"\").append(s2).append('\"').toString());\r\n            printstream.println();\r\n            printstream.println((new StringBuilder()).append(\"--\").append(s2).toString());\r\n            printstream.println(\"Content-Transfer-Encoding: base64\");\r\n            printstream.println((new StringBuilder()).append(\"Content-Type: application/zip; name=\").append(s8).append(\".zip\").toString());\r\n            printstream.println((new StringBuilder()).append(\"Content-Disposition: attachment; filename=\").append(s8).append(\".zip\").toString());\r\n            submitDirectory(printstream, s8, jprogressbar);\r\n            if(ProgressBarDialog.hasBeenCancelled(jprogressbar))\r\n                cancelMail(printstream);\r\n            printstream.println((new StringBuilder()).append(\"--\").append(s2).append(\"--\").toString());\r\n            printstream.close();\r\n            if(jprogressbar != null)\r\n                ProgressBarDialog.dismiss(jprogressbar);\r\n        }\r\n    }\r\n\r\n    private static void dumpHTMLIndex(File file, Program program, String s, String s1)\r\n        throws IOException\r\n    {\r\n        File file1 = new File(file, \"index.html\");\r\n        PrintWriter printwriter = new PrintWriter(new FileWriter(file1));\r\n        Dimension dimension = program.getSize();\r\n        printwriter.println(\"<html>\");\r\n        printwriter.println(\"<head>\");\r\n        printwriter.println(\"<meta name=\\\"generator\\\" content=\\\"ACM Java Libraries V1.1\\\">\");\r\n        printwriter.println((new StringBuilder()).append(\"<title>\").append(s1).append(\"</title>\").toString());\r\n        printwriter.println(\"</head>\");\r\n        printwriter.println(\"<body>\");\r\n        printwriter.println(\"<center>\");\r\n        printwriter.println(\"<table border=2 cellpadding=0 cellspacing=0>\");\r\n        printwriter.println(\"<tr><td>\");\r\n        printwriter.println((new StringBuilder()).append(\"<applet archive=\\\"\").append(s1).append(\".jar\\\"\").toString());\r\n        printwriter.println((new StringBuilder()).append(\"        code=\\\"\").append(s.replace('.', '/')).append(\".class\\\"\").toString());\r\n        printwriter.println((new StringBuilder()).append(\"        width=\").append(dimension.width).append(\" height=\").append(dimension.height).append(\">\").toString());\r\n        printwriter.println(\"</applet>\");\r\n        printwriter.println(\"</td></tr>\");\r\n        printwriter.println(\"</table>\");\r\n        printwriter.println(\"</center>\");\r\n        printwriter.println(\"</body>\");\r\n        printwriter.println(\"</html>\");\r\n        printwriter.close();\r\n    }\r\n\r\n    private static void dumpJarAndResources(File file, File file1, String s, String s1, JProgressBar jprogressbar, boolean flag, Object obj)\r\n        throws IOException\r\n    {\r\n        File file2 = new File(file1, s);\r\n        ZipOutputStream zipoutputstream = new ZipOutputStream(new FileOutputStream(file2));\r\n        dumpJarAndResources(\"\", file, zipoutputstream, file1, s1, jprogressbar, flag, obj);\r\n        zipoutputstream.close();\r\n    }\r\n\r\n    private static void dumpJarAndResources(String s, File file, ZipOutputStream zipoutputstream, File file1, String s1, JProgressBar jprogressbar, boolean flag, Object obj)\r\n        throws IOException\r\n    {\r\n        if(ProgressBarDialog.hasBeenCancelled(jprogressbar))\r\n            return;\r\n        dumpTree(s, file, zipoutputstream, file1, jprogressbar, 0, flag, obj);\r\n        for(StringTokenizer stringtokenizer = new StringTokenizer(s1, \";\"); stringtokenizer.hasMoreTokens();)\r\n        {\r\n            String s2 = stringtokenizer.nextToken().trim();\r\n            File file2 = getLibrary(s2);\r\n            if(file2 != null)\r\n            {\r\n                ZipFile zipfile = new ZipFile(file2);\r\n                Enumeration enumeration = zipfile.entries();\r\n                while(enumeration.hasMoreElements()) \r\n                {\r\n                    ZipEntry zipentry = (ZipEntry)enumeration.nextElement();\r\n                    String s3 = zipentry.getName();\r\n                    if(!nameAppears(s3, SKIP_FILES))\r\n                    {\r\n                        BufferedInputStream bufferedinputstream = new BufferedInputStream(zipfile.getInputStream(zipentry));\r\n                        if(obj != null && s3.endsWith(\".class\"))\r\n                        {\r\n                            zipentry = new ZipEntry(s3);\r\n                            zipoutputstream.putNextEntry(zipentry);\r\n                            transformClass(obj, bufferedinputstream, zipoutputstream);\r\n                        } else\r\n                        {\r\n                            zipoutputstream.putNextEntry(zipentry);\r\n                            copyBytes(bufferedinputstream, zipoutputstream, zipentry.getSize());\r\n                        }\r\n                        do\r\n                        {\r\n                            int i = bufferedinputstream.read();\r\n                            if(i == -1)\r\n                                break;\r\n                            zipoutputstream.write(i);\r\n                        } while(true);\r\n                        zipoutputstream.closeEntry();\r\n                        bufferedinputstream.close();\r\n                    }\r\n                    if(jprogressbar != null)\r\n                        jprogressbar.setValue(jprogressbar.getValue() + 1);\r\n                }\r\n            }\r\n        }\r\n\r\n    }\r\n\r\n    private static void dumpTree(String s, File file, ZipOutputStream zipoutputstream, File file1, JProgressBar jprogressbar, int i, boolean flag, Object obj)\r\n        throws IOException\r\n    {\r\n        if(ProgressBarDialog.hasBeenCancelled(jprogressbar))\r\n            return;\r\n        String s1 = file.getName();\r\n        if(file.isDirectory())\r\n        {\r\n            String as[] = file.list();\r\n            if(i > 0)\r\n                s = (new StringBuilder()).append(s).append(s1).append(\"/\").toString();\r\n            for(int j = 0; j < as.length; j++)\r\n                dumpTree(s, new File(file, as[j]), zipoutputstream, file1, jprogressbar, i + 1, flag, obj);\r\n\r\n        } else\r\n        if(isResourceComponent(s1))\r\n        {\r\n            String s2 = (new StringBuilder()).append(s).append(s1).toString();\r\n            if(s2.startsWith(\"Java Classes/\"))\r\n                s2 = s2.substring(s2.indexOf('/') + 1);\r\n            ZipEntry zipentry = new ZipEntry(s2);\r\n            BufferedInputStream bufferedinputstream = new BufferedInputStream(new FileInputStream(file));\r\n            zipoutputstream.putNextEntry(zipentry);\r\n            if(obj != null && s1.endsWith(\".class\"))\r\n                transformClass(obj, bufferedinputstream, zipoutputstream);\r\n            else\r\n                copyBytes(bufferedinputstream, zipoutputstream, file.length());\r\n            bufferedinputstream.close();\r\n            if(flag && file1 != null && !s1.endsWith(\".class\"))\r\n            {\r\n                BufferedInputStream bufferedinputstream1 = new BufferedInputStream(new FileInputStream(file));\r\n                file1 = new File(file1, s);\r\n                File file2 = new File(file1, s1);\r\n                file1.mkdirs();\r\n                BufferedOutputStream bufferedoutputstream = new BufferedOutputStream(new FileOutputStream(file2));\r\n                copyBytes(bufferedinputstream1, bufferedoutputstream, file.length());\r\n                bufferedinputstream1.close();\r\n                bufferedoutputstream.close();\r\n            }\r\n            if(jprogressbar != null)\r\n                jprogressbar.setValue(jprogressbar.getValue() + 1);\r\n        }\r\n    }\r\n\r\n    private static void transformClass(Object obj, InputStream inputstream, OutputStream outputstream)\r\n    {\r\n        Method method = null;\r\n        try\r\n        {\r\n            Class aclass[] = {\r\n                Class.forName(\"java.io.InputStream\"), Class.forName(\"java.io.OutputStream\")\r\n            };\r\n            method = obj.getClass().getMethod(\"transform\", aclass);\r\n        }\r\n        catch(Exception exception)\r\n        {\r\n            throw new ErrorException(\"exportJar: Illegal class transformer object\");\r\n        }\r\n        try\r\n        {\r\n            Object aobj[] = {\r\n                inputstream, outputstream\r\n            };\r\n            method.invoke(obj, aobj);\r\n        }\r\n        catch(Exception exception1)\r\n        {\r\n            throw new ErrorException(exception1);\r\n        }\r\n    }\r\n\r\n    private static int countResources(File file, String as[], String s)\r\n    {\r\n        String s1 = file.getName();\r\n        int i = 0;\r\n        if(file.isDirectory())\r\n        {\r\n            String as1[] = file.list();\r\n            for(int k = 0; k < as1.length; k++)\r\n                i += countResources(new File(file, as1[k]), as, null);\r\n\r\n        } else\r\n        {\r\n            for(int j = 0; j < as.length && i == 0; j++)\r\n                if(s1.endsWith(as[j]))\r\n                    i = 1;\r\n\r\n        }\r\n        if(s != null)\r\n        {\r\n            File file1 = getLibrary(s);\r\n            if(file1 != null)\r\n                try\r\n                {\r\n                    ZipFile zipfile = new ZipFile(file1);\r\n                    for(Enumeration enumeration = zipfile.entries(); enumeration.hasMoreElements(); enumeration.nextElement())\r\n                        i++;\r\n\r\n                }\r\n                catch(IOException ioexception) { }\r\n        }\r\n        return i;\r\n    }\r\n\r\n    private static File getLibrary(String s)\r\n    {\r\n        if(s == null)\r\n            return null;\r\n        File file = new File(s);\r\n        if(s.startsWith(\".\") || file.isAbsolute())\r\n            return file;\r\n        String s1 = System.getProperty(\"java.class.path\");\r\n        if(s1 == null)\r\n            s1 = \"\";\r\n        for(StringTokenizer stringtokenizer = new StringTokenizer(s1, \":\"); stringtokenizer.hasMoreTokens();)\r\n        {\r\n            String s2 = stringtokenizer.nextToken();\r\n            if(s2.equals(s) || s2.endsWith((new StringBuilder()).append(\"/\").append(s).toString()))\r\n                return new File(s2);\r\n        }\r\n\r\n        File file1 = new File(System.getProperty(\"user.dir\"));\r\n        file = new File(file1, s);\r\n        return file.exists() ? file : null;\r\n    }\r\n\r\n    private static boolean isResourceComponent(String s)\r\n    {\r\n        for(int i = 0; i < RESOURCE_EXTENSIONS.length; i++)\r\n            if(s.endsWith(RESOURCE_EXTENSIONS[i]))\r\n                return true;\r\n\r\n        return false;\r\n    }\r\n\r\n    private static void submitDirectory(PrintStream printstream, String s, JProgressBar jprogressbar)\r\n    {\r\n        try\r\n        {\r\n            OutputStream outputstream = openBase64OutputStream(printstream);\r\n            ZipOutputStream zipoutputstream = new ZipOutputStream(new BufferedOutputStream(outputstream));\r\n            ZipOutputStream zipoutputstream1 = new ZipOutputStream(new NullOutputStream());\r\n            File file = new File(System.getProperty(\"user.dir\"));\r\n            dumpZip((new StringBuilder()).append(s).append(\"/\").toString(), file, zipoutputstream, zipoutputstream1, true, jprogressbar);\r\n            zipoutputstream1.close();\r\n            zipoutputstream.finish();\r\n            zipoutputstream.flush();\r\n            padBase64OutputStream(outputstream);\r\n        }\r\n        catch(IOException ioexception)\r\n        {\r\n            throw new ErrorException(ioexception);\r\n        }\r\n    }\r\n\r\n    private static void dumpZip(String s, File file, ZipOutputStream zipoutputstream, ZipOutputStream zipoutputstream1, boolean flag, JProgressBar jprogressbar)\r\n        throws IOException\r\n    {\r\n        if(ProgressBarDialog.hasBeenCancelled(jprogressbar))\r\n            return;\r\n        String s1 = file.getName();\r\n        if(file.isDirectory())\r\n        {\r\n            String as[] = file.list();\r\n            if(!flag)\r\n                s = (new StringBuilder()).append(s).append(s1).append(\"/\").toString();\r\n            for(int i = 0; i < as.length; i++)\r\n                dumpZip(s, new File(file, as[i]), zipoutputstream, zipoutputstream1, false, jprogressbar);\r\n\r\n        } else\r\n        if(isSubmitComponent(s1))\r\n        {\r\n            String s2 = (new StringBuilder()).append(s).append(s1).toString();\r\n            ZipEntry zipentry = new ZipEntry(s2);\r\n            BufferedInputStream bufferedinputstream = new BufferedInputStream(new FileInputStream(file));\r\n            if(zipoutputstream1 != null)\r\n            {\r\n                zipoutputstream1.putNextEntry(zipentry);\r\n                copyBytes(bufferedinputstream, zipoutputstream1, file.length());\r\n                zipoutputstream1.closeEntry();\r\n                bufferedinputstream.close();\r\n                bufferedinputstream = new BufferedInputStream(new FileInputStream(file));\r\n            }\r\n            zipoutputstream.putNextEntry(zipentry);\r\n            copyBytes(bufferedinputstream, zipoutputstream, file.length());\r\n            zipoutputstream.closeEntry();\r\n            bufferedinputstream.close();\r\n            if(jprogressbar != null)\r\n                jprogressbar.setValue(jprogressbar.getValue() + 1);\r\n        }\r\n    }\r\n\r\n    private static boolean isSubmitComponent(String s)\r\n    {\r\n        for(int i = 0; i < SUBMIT_EXTENSIONS.length; i++)\r\n            if(s.endsWith(SUBMIT_EXTENSIONS[i]))\r\n                return true;\r\n\r\n        return false;\r\n    }\r\n\r\n    private static SubmitOptions getOptions(Program program)\r\n    {\r\n        SubmitOptions submitoptions = (SubmitOptions)optionsTable.get(program);\r\n        if(submitoptions == null)\r\n        {\r\n            submitoptions = new SubmitOptions(program);\r\n            optionsTable.put(program, submitoptions);\r\n        }\r\n        return submitoptions;\r\n    }\r\n\r\n    private static boolean nameAppears(String s, String as[])\r\n    {\r\n        for(int i = 0; i < as.length; i++)\r\n            if(as[i].equals(s))\r\n                return true;\r\n\r\n        return false;\r\n    }\r\n\r\n    private static final String SKIP_FILES[] = {\r\n        \".DS_Store\", \"FINDER.DAT\", \"RESOURCE.FRK\"\r\n    };\r\n    private static final String RESOURCE_EXTENSIONS[] = {\r\n        \".txt\", \".dat\", \".gif\", \".jpg\", \".jpeg\", \".png\", \".au\", \".wav\", \".class\"\r\n    };\r\n    private static final String SUBMIT_EXTENSIONS[] = {\r\n        \".java\", \".html\", \".txt\", \".dat\", \".gif\", \".jpg\", \".jpeg\", \".png\", \".au\", \".wav\"\r\n    };\r\n    private static HashMap optionsTable = new HashMap();\r\n    private static final int BUFFER_SIZE = 4096;\r\n    private static final String SERIF_SUBSTITUTIONS[] = {\r\n        \"Serif\", \"Times\", \"TimesRoman\", \"Times-Roman\"\r\n    };\r\n    private static final String SANSSERIF_SUBSTITUTIONS[] = {\r\n        \"SansSerif\", \"Helvetica\", \"Arial\"\r\n    };\r\n    private static final String MONOSPACED_SUBSTITUTIONS[] = {\r\n        \"Monospaced\", \"Courier\", \"Monaco\"\r\n    };\r\n    private static final String SKIP_JARS[] = {\r\n        \"acm.jar\", \"acm11.jar\", \"swingall.jar\", \"patchJTF.jar\"\r\n    };\r\n    private static boolean fontFamilyTableInitialized = false;\r\n    private static String fontFamilyArray[] = null;\r\n    private static HashMap fontFamilyTable = null;\r\n    private static HashMap appletTable = new HashMap();\r\n    private static Applet mostRecentApplet = null;\r\n    private static SecurityManager managerThatFails = null;\r\n    private static String debugOptions = null;\r\n\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/MailStream.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   JTFTools.java\r\n\r\npackage acm.util;\r\n\r\nimport java.io.*;\r\nimport java.net.InetAddress;\r\nimport java.net.Socket;\r\nimport java.text.SimpleDateFormat;\r\nimport java.util.*;\r\n\r\n// Referenced classes of package acm.util:\r\n//            NullOutputStream, ErrorException\r\n\r\nclass MailStream extends PrintStream\r\n{\r\n\r\n    public MailStream(String s, String s1, String s2)\r\n    {\r\n        super(new NullOutputStream());\r\n        try\r\n        {\r\n            sender = s1;\r\n            recipient = s2;\r\n            socket = new Socket(s, 25);\r\n            out = new BufferedOutputStream(socket.getOutputStream());\r\n            in = new BufferedInputStream(socket.getInputStream());\r\n            verify(\"220\");\r\n            println((new StringBuilder()).append(\"HELO \").append(InetAddress.getLocalHost().getHostName()).toString());\r\n            verify(\"250\");\r\n            println((new StringBuilder()).append(\"MAIL FROM: \").append(sender).toString());\r\n            verify(\"250\");\r\n            for(StringTokenizer stringtokenizer = new StringTokenizer(s2, \" ,\"); stringtokenizer.hasMoreTokens(); verify(\"250\"))\r\n                println((new StringBuilder()).append(\"RCPT TO: \").append(stringtokenizer.nextToken()).toString());\r\n\r\n            println(\"DATA\");\r\n            verify(\"354\");\r\n        }\r\n        catch(IOException ioexception)\r\n        {\r\n            throw new ErrorException(ioexception);\r\n        }\r\n    }\r\n\r\n    public void print(boolean flag)\r\n    {\r\n        print((new StringBuilder()).append(\"\").append(flag).toString());\r\n    }\r\n\r\n    public void print(char c)\r\n    {\r\n        print((new StringBuilder()).append(\"\").append(c).toString());\r\n    }\r\n\r\n    public void print(int i)\r\n    {\r\n        print((new StringBuilder()).append(\"\").append(i).toString());\r\n    }\r\n\r\n    public void print(long l)\r\n    {\r\n        print((new StringBuilder()).append(\"\").append(l).toString());\r\n    }\r\n\r\n    public void print(float f)\r\n    {\r\n        print((new StringBuilder()).append(\"\").append(f).toString());\r\n    }\r\n\r\n    public void print(double d)\r\n    {\r\n        print((new StringBuilder()).append(\"\").append(d).toString());\r\n    }\r\n\r\n    public void print(char ac[])\r\n    {\r\n        print(new String(ac));\r\n    }\r\n\r\n    public void print(String s)\r\n    {\r\n        write(s);\r\n    }\r\n\r\n    public void print(Object obj)\r\n    {\r\n        print((new StringBuilder()).append(\"\").append(obj).toString());\r\n    }\r\n\r\n    public void println()\r\n    {\r\n        try\r\n        {\r\n            out.write(10);\r\n            out.flush();\r\n        }\r\n        catch(IOException ioexception)\r\n        {\r\n            throw new ErrorException(ioexception);\r\n        }\r\n    }\r\n\r\n    public void println(boolean flag)\r\n    {\r\n        print(flag);\r\n        println();\r\n    }\r\n\r\n    public void println(char c)\r\n    {\r\n        print(c);\r\n        println();\r\n    }\r\n\r\n    public void println(int i)\r\n    {\r\n        print(i);\r\n        println();\r\n    }\r\n\r\n    public void println(long l)\r\n    {\r\n        print(l);\r\n        println();\r\n    }\r\n\r\n    public void println(float f)\r\n    {\r\n        print(f);\r\n        println();\r\n    }\r\n\r\n    public void println(double d)\r\n    {\r\n        print(d);\r\n        println();\r\n    }\r\n\r\n    public void println(char ac[])\r\n    {\r\n        print(ac);\r\n        println();\r\n    }\r\n\r\n    public void println(String s)\r\n    {\r\n        print(s);\r\n        println();\r\n    }\r\n\r\n    public void println(Object obj)\r\n    {\r\n        print(obj);\r\n        println();\r\n    }\r\n\r\n    public void write(int i)\r\n    {\r\n        try\r\n        {\r\n            if(i > 255)\r\n                throw new ErrorException(\"Illegal character in mail stream\");\r\n            out.write(i);\r\n        }\r\n        catch(IOException ioexception)\r\n        {\r\n            throw new ErrorException(ioexception);\r\n        }\r\n    }\r\n\r\n    public void write(char ac[], int i, int j)\r\n    {\r\n        try\r\n        {\r\n            for(int k = 0; k < j; k++)\r\n            {\r\n                char c = ac[i + k];\r\n                if(c > '\\377')\r\n                    throw new ErrorException(\"Illegal character in mail stream\");\r\n                out.write(c);\r\n            }\r\n\r\n        }\r\n        catch(IOException ioexception)\r\n        {\r\n            throw new ErrorException(ioexception);\r\n        }\r\n    }\r\n\r\n    public void write(char ac[])\r\n    {\r\n        write(ac, 0, ac.length);\r\n    }\r\n\r\n    public void write(String s)\r\n    {\r\n        try\r\n        {\r\n            for(int i = 0; i < s.length(); i++)\r\n            {\r\n                char c = s.charAt(i);\r\n                if(c > '\\377')\r\n                    throw new ErrorException(\"Illegal character in mail stream\");\r\n                out.write(c);\r\n            }\r\n\r\n        }\r\n        catch(IOException ioexception)\r\n        {\r\n            throw new ErrorException(ioexception);\r\n        }\r\n    }\r\n\r\n    public boolean checkError()\r\n    {\r\n        return false;\r\n    }\r\n\r\n    public void flush()\r\n    {\r\n        try\r\n        {\r\n            out.flush();\r\n        }\r\n        catch(IOException ioexception)\r\n        {\r\n            throw new ErrorException(ioexception);\r\n        }\r\n    }\r\n\r\n    public void close()\r\n    {\r\n        try\r\n        {\r\n            println(\".\");\r\n            verify(\"250\");\r\n            out.close();\r\n            socket.close();\r\n        }\r\n        catch(IOException ioexception)\r\n        {\r\n            throw new ErrorException(ioexception);\r\n        }\r\n    }\r\n\r\n    public void cancel()\r\n    {\r\n        try\r\n        {\r\n            socket.close();\r\n            out.close();\r\n        }\r\n        catch(IOException ioexception)\r\n        {\r\n            throw new ErrorException(ioexception);\r\n        }\r\n    }\r\n\r\n    public void sendStandardHeaders(String s, String s1)\r\n    {\r\n        println((new StringBuilder()).append(\"To: \").append(recipient).toString());\r\n        if(s != null && s.length() != 0)\r\n        {\r\n            boolean flag = false;\r\n            int i = 0;\r\n            do\r\n            {\r\n                if(i >= s.length())\r\n                    break;\r\n                char c = s.charAt(i);\r\n                if(c != ' ' && c != '-' && !Character.isJavaIdentifierPart(c))\r\n                {\r\n                    flag = true;\r\n                    break;\r\n                }\r\n                i++;\r\n            } while(true);\r\n            if(flag)\r\n                sender = (new StringBuilder()).append('\"').append(s).append('\"').append(\" <\").append(sender).append(\">\").toString();\r\n            else\r\n                sender = (new StringBuilder()).append(s).append(\" <\").append(sender).append(\">\").toString();\r\n        }\r\n        println((new StringBuilder()).append(\"From: \").append(sender).toString());\r\n        if(s1 != null && s1.length() != 0)\r\n            println((new StringBuilder()).append(\"Subject: \").append(s1).toString());\r\n        println((new StringBuilder()).append(\"Date: \").append(RFC2822_DATE_FORMAT.format(new Date())).toString());\r\n    }\r\n\r\n    private void verify(String s)\r\n    {\r\n        try\r\n        {\r\n            String s1 = \"\";\r\n            do\r\n            {\r\n                int i = in.read();\r\n                if(i == -1 || i == 10)\r\n                    break;\r\n                s1 = (new StringBuilder()).append(s1).append((char)i).toString();\r\n            } while(true);\r\n            if(s != null && !s1.startsWith(s))\r\n                throw new ErrorException((new StringBuilder()).append(\"Unexpected SMTP response: \").append(s1).toString());\r\n        }\r\n        catch(IOException ioexception)\r\n        {\r\n            throw new ErrorException(ioexception);\r\n        }\r\n    }\r\n\r\n    private static final int SMTP_PORT = 25;\r\n    private static SimpleDateFormat RFC2822_DATE_FORMAT;\r\n    private Socket socket;\r\n    private InputStream in;\r\n    private OutputStream out;\r\n    private String sender;\r\n    private String recipient;\r\n\r\n    static \r\n    {\r\n        RFC2822_DATE_FORMAT = new SimpleDateFormat(\"EEE, dd MMM yyyy HH:mm:ss z\", Locale.US);\r\n    }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/MediaTools.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   MediaTools.java\r\n\r\npackage acm.util;\r\n\r\nimport java.applet.Applet;\r\nimport java.applet.AudioClip;\r\nimport java.awt.*;\r\nimport java.awt.image.*;\r\nimport java.io.*;\r\nimport java.net.*;\r\nimport java.util.HashMap;\r\nimport java.util.StringTokenizer;\r\n\r\n// Referenced classes of package acm.util:\r\n//            ErrorException, HexInputStream, SoundClip, SunAudioClip, \r\n//            NullAudioClip, ImageSaver, JTFTools\r\n\r\npublic class MediaTools\r\n{\r\n\r\n    private MediaTools()\r\n    {\r\n    }\r\n\r\n    public static Image loadImage(String s)\r\n    {\r\n        return loadImage(s, \".:images\");\r\n    }\r\n\r\n    public static Image loadImage(String s, String s1)\r\n    {\r\n        Image image;\r\n        image = (Image)imageTable.get(s);\r\n        if(image != null)\r\n            return image;\r\n        if(!s.startsWith(\"http:\"))\r\n            break MISSING_BLOCK_LABEL_66;\r\n        image = loadImage(new URL(s));\r\n        if(cachingEnabled)\r\n            imageTable.put(s, image);\r\n        return image;\r\n        MalformedURLException malformedurlexception;\r\n        malformedurlexception;\r\n        throw new ErrorException(\"loadImage: Malformed URL\");\r\n        Toolkit toolkit = Toolkit.getDefaultToolkit();\r\n        StringTokenizer stringtokenizer = new StringTokenizer(s1, \":\");\r\n        do\r\n        {\r\n            if(image != null || !stringtokenizer.hasMoreTokens())\r\n                break;\r\n            String s2 = stringtokenizer.nextToken();\r\n            s2 = s2.equals(\".\") ? \"\" : (new StringBuilder()).append(s2).append(\"/\").toString();\r\n            URL url = null;\r\n            try\r\n            {\r\n                url = RESOURCE_CLASS.getResource((new StringBuilder()).append(\"/\").append(s2).append(s).toString());\r\n                URLConnection urlconnection = url.openConnection();\r\n                if(urlconnection == null || urlconnection.getContentLength() <= 0)\r\n                    url = null;\r\n            }\r\n            catch(Exception exception) { }\r\n            if(url == null)\r\n            {\r\n                Applet applet = JTFTools.getApplet();\r\n                if(applet != null)\r\n                {\r\n                    URL url1 = applet.getCodeBase();\r\n                    if(url1 != null)\r\n                        try\r\n                        {\r\n                            url = new URL(url1, (new StringBuilder()).append(s2).append(s).toString());\r\n                        }\r\n                        catch(MalformedURLException malformedurlexception1) { }\r\n                }\r\n            }\r\n            if(url == null)\r\n                try\r\n                {\r\n                    if((new File((new StringBuilder()).append(s2).append(s).toString())).canRead())\r\n                        image = toolkit.getImage((new StringBuilder()).append(s2).append(s).toString());\r\n                }\r\n                catch(SecurityException securityexception) { }\r\n            else\r\n                image = loadImage(url, false);\r\n        } while(true);\r\n        if(image == null)\r\n            throw new ErrorException((new StringBuilder()).append(\"Cannot find an image named \").append(s).toString());\r\n        loadImage(image);\r\n        if(cachingEnabled)\r\n            imageTable.put(s, image);\r\n        return image;\r\n    }\r\n\r\n    public static Image loadImage(URL url)\r\n    {\r\n        return loadImage(url, true);\r\n    }\r\n\r\n    public static Image loadImage(Image image)\r\n    {\r\n        MediaTracker mediatracker = new MediaTracker(JTFTools.createEmptyContainer());\r\n        mediatracker.addImage(image, 0);\r\n        try\r\n        {\r\n            mediatracker.waitForID(0);\r\n        }\r\n        catch(InterruptedException interruptedexception)\r\n        {\r\n            throw new ErrorException(\"Image loading process interrupted\");\r\n        }\r\n        return image;\r\n    }\r\n\r\n    public static void defineImage(String s, Image image)\r\n    {\r\n        imageTable.put(s, image);\r\n    }\r\n\r\n    public static void flushImage(String s)\r\n    {\r\n        imageTable.remove(s);\r\n    }\r\n\r\n    public static Image createImage(int ai[][])\r\n    {\r\n        int i = ai.length;\r\n        int j = ai[0].length;\r\n        int ai1[] = new int[j * i];\r\n        for(int k = 0; k < i; k++)\r\n            System.arraycopy(ai[k], 0, ai1, k * j, j);\r\n\r\n        return createImage(ai1, j, i);\r\n    }\r\n\r\n    public static Image createImage(int ai[], int i, int j)\r\n    {\r\n        Image image = Toolkit.getDefaultToolkit().createImage(new MemoryImageSource(i, j, ai, 0, i));\r\n        loadImage(image);\r\n        return image;\r\n    }\r\n\r\n    public static Image createImage(InputStream inputstream)\r\n    {\r\n        Image image;\r\n        ByteArrayOutputStream bytearrayoutputstream = new ByteArrayOutputStream();\r\n        for(int i = inputstream.read(); i != -1; i = inputstream.read())\r\n            bytearrayoutputstream.write(i);\r\n\r\n        image = Toolkit.getDefaultToolkit().createImage(bytearrayoutputstream.toByteArray());\r\n        loadImage(image);\r\n        return image;\r\n        Exception exception;\r\n        exception;\r\n        throw new ErrorException((new StringBuilder()).append(\"Exception: \").append(exception).toString());\r\n    }\r\n\r\n    public static Image createImage(String as[])\r\n    {\r\n        return createImage(((InputStream) (new HexInputStream(as))));\r\n    }\r\n\r\n    public static int[][] getPixelArray(Image image)\r\n    {\r\n        Component component = getImageObserver();\r\n        int i = image.getWidth(component);\r\n        int j = image.getHeight(component);\r\n        int ai[] = new int[i * j];\r\n        int ai1[][] = new int[j][i];\r\n        PixelGrabber pixelgrabber = new PixelGrabber(image.getSource(), 0, 0, i, j, ai, 0, i);\r\n        try\r\n        {\r\n            pixelgrabber.grabPixels();\r\n        }\r\n        catch(InterruptedException interruptedexception)\r\n        {\r\n            throw new ErrorException(\"Transfer interrupted\");\r\n        }\r\n        if((pixelgrabber.getStatus() & 0x80) != 0)\r\n            throw new ErrorException(\"Transfer aborted\");\r\n        for(int k = 0; k < j; k++)\r\n            System.arraycopy(ai, k * i, ai1[k], 0, i);\r\n\r\n        return ai1;\r\n    }\r\n\r\n    public static void saveImage(Image image, String s)\r\n    {\r\n        saveImage(image, new File(s));\r\n    }\r\n\r\n    public static void saveImage(Image image, File file)\r\n    {\r\n        String s = file.getName();\r\n        int i = s.lastIndexOf('.');\r\n        if(i <= 0)\r\n            throw new ErrorException(\"saveImage: No image suffix in file name\");\r\n        String s1 = s.substring(i + 1);\r\n        ImageSaver imagesaver = findImageSaver(s1);\r\n        if(imagesaver == null)\r\n            throw new ErrorException((new StringBuilder()).append(\"saveImage: No support for .\").append(s1).append(\" format\").toString());\r\n        if(file.exists() && !file.delete())\r\n            throw new ErrorException((new StringBuilder()).append(\"saveImage: Cannot replace \").append(s).toString());\r\n        try\r\n        {\r\n            BufferedOutputStream bufferedoutputstream = new BufferedOutputStream(new FileOutputStream(file));\r\n            imagesaver.setOutputStream(bufferedoutputstream);\r\n            imagesaver.saveImage(image);\r\n            imagesaver.updateFileType(file);\r\n            bufferedoutputstream.close();\r\n        }\r\n        catch(IOException ioexception)\r\n        {\r\n            throw new ErrorException((new StringBuilder()).append(\"saveImage: \").append(ioexception.getMessage()).toString());\r\n        }\r\n    }\r\n\r\n    public static AudioClip loadAudioClip(String s)\r\n    {\r\n        return loadAudioClip(s, \".:sounds\");\r\n    }\r\n\r\n    public static AudioClip loadAudioClip(String s, String s1)\r\n    {\r\n        AudioClip audioclip;\r\n        audioclip = (AudioClip)audioClipTable.get(s);\r\n        if(audioclip != null)\r\n            return audioclip;\r\n        if(!s.startsWith(\"http:\"))\r\n            break MISSING_BLOCK_LABEL_81;\r\n        audioclip = loadAudioClip(new URL(s));\r\n        if(audioclip instanceof SoundClip)\r\n            ((SoundClip)audioclip).setName(s);\r\n        if(cachingEnabled)\r\n            audioClipTable.put(s, audioclip);\r\n        return audioclip;\r\n        MalformedURLException malformedurlexception;\r\n        malformedurlexception;\r\n        throw new ErrorException(\"loadAudioClip: Malformed URL\");\r\n        StringTokenizer stringtokenizer = new StringTokenizer(s1, \":\");\r\n        do\r\n        {\r\n            if(audioclip != null || !stringtokenizer.hasMoreTokens())\r\n                break;\r\n            String s2 = stringtokenizer.nextToken();\r\n            s2 = s2.equals(\".\") ? \"\" : (new StringBuilder()).append(s2).append(\"/\").toString();\r\n            URL url = null;\r\n            try\r\n            {\r\n                url = RESOURCE_CLASS.getResource((new StringBuilder()).append(\"/\").append(s2).append(s).toString());\r\n                URLConnection urlconnection = url.openConnection();\r\n                if(urlconnection == null || urlconnection.getContentLength() <= 0)\r\n                    url = null;\r\n            }\r\n            catch(Exception exception) { }\r\n            if(url == null)\r\n            {\r\n                Applet applet = JTFTools.getApplet();\r\n                if(applet != null)\r\n                {\r\n                    URL url1 = applet.getCodeBase();\r\n                    if(url1 != null)\r\n                        try\r\n                        {\r\n                            url = new URL(url1, (new StringBuilder()).append(s2).append(s).toString());\r\n                        }\r\n                        catch(MalformedURLException malformedurlexception1) { }\r\n                }\r\n            }\r\n            if(url == null)\r\n                try\r\n                {\r\n                    File file = new File((new StringBuilder()).append(s2).append(s).toString());\r\n                    if(file.canRead())\r\n                        audioclip = createAudioClip(new FileInputStream(file));\r\n                }\r\n                catch(Exception exception1) { }\r\n            else\r\n                audioclip = loadAudioClip(url, false);\r\n        } while(true);\r\n        if(audioclip == null)\r\n            throw new ErrorException((new StringBuilder()).append(\"Cannot find an audio clip named \").append(s).toString());\r\n        if(audioclip instanceof SoundClip)\r\n            ((SoundClip)audioclip).setName(s);\r\n        if(cachingEnabled)\r\n            audioClipTable.put(s, audioclip);\r\n        return audioclip;\r\n    }\r\n\r\n    public static AudioClip loadAudioClip(URL url)\r\n    {\r\n        return loadAudioClip(url, true);\r\n    }\r\n\r\n    public static void defineAudioClip(String s, AudioClip audioclip)\r\n    {\r\n        audioClipTable.put(s, audioclip);\r\n    }\r\n\r\n    public static void flushAudioClip(String s)\r\n    {\r\n        audioClipTable.remove(s);\r\n    }\r\n\r\n    public static AudioClip createAudioClip(InputStream inputstream)\r\n    {\r\n        return new SunAudioClip(inputstream);\r\n        Exception exception;\r\n        exception;\r\n        return new NullAudioClip();\r\n    }\r\n\r\n    public static AudioClip createAudioClip(String as[])\r\n    {\r\n        return createAudioClip(((InputStream) (new HexInputStream(as))));\r\n    }\r\n\r\n    public static InputStream openDataFile(String s)\r\n    {\r\n        return openDataFile(s, \".:datafiles\");\r\n    }\r\n\r\n    public static InputStream openDataFile(String s, String s1)\r\n    {\r\n        Object obj;\r\n        obj = null;\r\n        if(!s.startsWith(\"http:\"))\r\n            break MISSING_BLOCK_LABEL_34;\r\n        return openDataFile(new URL(s));\r\n        MalformedURLException malformedurlexception;\r\n        malformedurlexception;\r\n        throw new ErrorException(\"openDataFile: Malformed URL\");\r\n        StringTokenizer stringtokenizer = new StringTokenizer(s1, \":\");\r\n        do\r\n        {\r\n            if(obj != null || !stringtokenizer.hasMoreTokens())\r\n                break;\r\n            String s2 = stringtokenizer.nextToken();\r\n            s2 = s2.equals(\".\") ? \"\" : (new StringBuilder()).append(s2).append(\"/\").toString();\r\n            URL url = null;\r\n            try\r\n            {\r\n                url = RESOURCE_CLASS.getResource((new StringBuilder()).append(\"/\").append(s2).append(s).toString());\r\n                URLConnection urlconnection = url.openConnection();\r\n                if(urlconnection == null || urlconnection.getContentLength() <= 0)\r\n                    url = null;\r\n            }\r\n            catch(Exception exception) { }\r\n            if(url == null)\r\n            {\r\n                Applet applet = JTFTools.getApplet();\r\n                if(applet != null)\r\n                {\r\n                    URL url1 = applet.getCodeBase();\r\n                    if(url1 != null)\r\n                        try\r\n                        {\r\n                            url = new URL(url1, (new StringBuilder()).append(s2).append(s).toString());\r\n                        }\r\n                        catch(MalformedURLException malformedurlexception1) { }\r\n                }\r\n            }\r\n            if(url == null)\r\n                try\r\n                {\r\n                    File file = new File((new StringBuilder()).append(s2).append(s).toString());\r\n                    if(file.canRead())\r\n                        obj = new FileInputStream(file);\r\n                }\r\n                catch(Exception exception1) { }\r\n            else\r\n                obj = openDataFile(url, false);\r\n        } while(true);\r\n        if(obj == null)\r\n            throw new ErrorException((new StringBuilder()).append(\"Cannot find a file named \").append(s).toString());\r\n        else\r\n            return ((InputStream) (obj));\r\n    }\r\n\r\n    public static InputStream openDataFile(URL url)\r\n    {\r\n        return openDataFile(url, true);\r\n    }\r\n\r\n    public static BufferedImage createBufferedImage(Image image, int i)\r\n    {\r\n        int j = image.getWidth(null);\r\n        int k = image.getHeight(null);\r\n        BufferedImage bufferedimage = new BufferedImage(j, k, i);\r\n        Graphics2D graphics2d = bufferedimage.createGraphics();\r\n        switch(i)\r\n        {\r\n        case 2: // '\\002'\r\n        case 3: // '\\003'\r\n        case 6: // '\\006'\r\n        case 7: // '\\007'\r\n            graphics2d.setComposite(AlphaComposite.Src);\r\n            // fall through\r\n\r\n        case 4: // '\\004'\r\n        case 5: // '\\005'\r\n        default:\r\n            graphics2d.drawImage(image, 0, 0, null);\r\n            break;\r\n        }\r\n        graphics2d.dispose();\r\n        return bufferedimage;\r\n    }\r\n\r\n    public static InputStream getHexInputStream(String as[])\r\n    {\r\n        return new HexInputStream(as);\r\n    }\r\n\r\n    public static void setCachingEnabled(boolean flag)\r\n    {\r\n        cachingEnabled = flag;\r\n    }\r\n\r\n    public static boolean isCachingEnabled()\r\n    {\r\n        return cachingEnabled;\r\n    }\r\n\r\n    public static Component getImageObserver()\r\n    {\r\n        return JTFTools.createEmptyContainer();\r\n    }\r\n\r\n    public static void beep()\r\n    {\r\n        Toolkit.getDefaultToolkit().beep();\r\n    }\r\n\r\n    public static Image loadImage(URL url, boolean flag)\r\n    {\r\n        Image image = null;\r\n        Toolkit toolkit = Toolkit.getDefaultToolkit();\r\n        try\r\n        {\r\n            URLConnection urlconnection = url.openConnection();\r\n            if(isResource(url) || urlconnection.getContentLength() > 0)\r\n            {\r\n                Object obj = urlconnection.getContent();\r\n                if(obj instanceof ImageProducer)\r\n                    image = toolkit.createImage((ImageProducer)obj);\r\n                else\r\n                if(obj != null)\r\n                    image = toolkit.getImage(url);\r\n            }\r\n        }\r\n        catch(IOException ioexception) { }\r\n        if(flag)\r\n        {\r\n            if(image == null)\r\n                throw new ErrorException((new StringBuilder()).append(\"Cannot load image from \").append(url).toString());\r\n            loadImage(image);\r\n        }\r\n        return image;\r\n    }\r\n\r\n    private static ImageSaver findImageSaver(String s)\r\n    {\r\n        s = s.toUpperCase();\r\n        HashMap hashmap = suffixTable;\r\n        JVM INSTR monitorenter ;\r\n        ImageSaver imagesaver;\r\n        imagesaver = (ImageSaver)suffixTable.get(s);\r\n        if(imagesaver != null)\r\n            break MISSING_BLOCK_LABEL_79;\r\n        try\r\n        {\r\n            Class class1 = Class.forName((new StringBuilder()).append(\"acm.util.\").append(s).append(\"ImageSaver\").toString());\r\n            imagesaver = (ImageSaver)class1.newInstance();\r\n        }\r\n        catch(Exception exception)\r\n        {\r\n            return null;\r\n        }\r\n        suffixTable.put(s, imagesaver);\r\n        imagesaver;\r\n        hashmap;\r\n        JVM INSTR monitorexit ;\r\n        return;\r\n        Exception exception1;\r\n        exception1;\r\n        throw exception1;\r\n    }\r\n\r\n    public static AudioClip loadAudioClip(URL url, boolean flag)\r\n    {\r\n        AudioClip audioclip = null;\r\n        try\r\n        {\r\n            URLConnection urlconnection = url.openConnection();\r\n            if(isResource(url) || urlconnection.getContentLength() > 0)\r\n                audioclip = createAudioClip(urlconnection.getInputStream());\r\n        }\r\n        catch(IOException ioexception) { }\r\n        if(flag && audioclip == null)\r\n            throw new ErrorException((new StringBuilder()).append(\"Cannot load audio clip from \").append(url).toString());\r\n        else\r\n            return audioclip;\r\n    }\r\n\r\n    public static InputStream openDataFile(URL url, boolean flag)\r\n    {\r\n        InputStream inputstream = null;\r\n        try\r\n        {\r\n            URLConnection urlconnection = url.openConnection();\r\n            if(isResource(url) || urlconnection.getContentLength() > 0)\r\n                inputstream = urlconnection.getInputStream();\r\n        }\r\n        catch(IOException ioexception) { }\r\n        if(flag && inputstream == null)\r\n            throw new ErrorException((new StringBuilder()).append(\"Cannot read data from \").append(url).toString());\r\n        else\r\n            return inputstream;\r\n    }\r\n\r\n    private static boolean isResource(URL url)\r\n    {\r\n        String s = url.toString().toLowerCase();\r\n        return s.startsWith(\"jar:\") || s.startsWith(\"file:\");\r\n    }\r\n\r\n    public static final String DEFAULT_IMAGE_PATH = \".:images\";\r\n    public static final String DEFAULT_AUDIO_PATH = \".:sounds\";\r\n    public static final String DEFAULT_DATAFILE_PATH = \".:datafiles\";\r\n    private static boolean cachingEnabled = false;\r\n    private static HashMap imageTable = new HashMap();\r\n    private static HashMap audioClipTable = new HashMap();\r\n    private static HashMap suffixTable = new HashMap();\r\n    private static final Class RESOURCE_CLASS = (new MediaTools()).getClass();\r\n\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/NullAudioClip.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   MediaTools.java\r\n\r\npackage acm.util;\r\n\r\nimport java.applet.AudioClip;\r\n\r\nclass NullAudioClip\r\n    implements AudioClip\r\n{\r\n\r\n    NullAudioClip()\r\n    {\r\n    }\r\n\r\n    public void play()\r\n    {\r\n    }\r\n\r\n    public void loop()\r\n    {\r\n    }\r\n\r\n    public void stop()\r\n    {\r\n    }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/NullOutputStream.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   JTFTools.java\r\n\r\npackage acm.util;\r\n\r\nimport java.io.OutputStream;\r\n\r\nclass NullOutputStream extends OutputStream\r\n{\r\n\r\n    NullOutputStream()\r\n    {\r\n    }\r\n\r\n    public void write(int i)\r\n    {\r\n    }\r\n\r\n    public void write(byte abyte0[])\r\n    {\r\n    }\r\n\r\n    public void write(byte abyte0[], int i, int j)\r\n    {\r\n    }\r\n\r\n    public void flush()\r\n    {\r\n    }\r\n\r\n    public void close()\r\n    {\r\n    }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/OptionTable.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   OptionTable.java\r\n\r\npackage acm.util;\r\n\r\nimport java.io.*;\r\nimport java.util.*;\r\n\r\n// Referenced classes of package acm.util:\r\n//            ErrorException\r\n\r\npublic class OptionTable\r\n{\r\n\r\n    public OptionTable(String s)\r\n    {\r\n        this(s, null);\r\n    }\r\n\r\n    public OptionTable(String s, String as[])\r\n    {\r\n        optionTable = new HashMap();\r\n        try\r\n        {\r\n            StreamTokenizer streamtokenizer = createTokenizer(s);\r\n            for(int i = streamtokenizer.nextToken(); i != -1;)\r\n            {\r\n                if(i != -3)\r\n                    throw new ErrorException((new StringBuilder()).append(\"Illegal option string: \").append(s).toString());\r\n                String s1 = streamtokenizer.sval;\r\n                if(as != null && !keyExists(s1, as))\r\n                    throw new ErrorException((new StringBuilder()).append(\"Unrecognized option: \").append(s1).toString());\r\n                i = streamtokenizer.nextToken();\r\n                if(i == 61)\r\n                {\r\n                    i = streamtokenizer.nextToken();\r\n                    if(i != -3 && i != 34 && i != 39)\r\n                        throw new ErrorException((new StringBuilder()).append(\"Illegal option string: \").append(s).toString());\r\n                    optionTable.put(s1, streamtokenizer.sval);\r\n                    i = streamtokenizer.nextToken();\r\n                } else\r\n                {\r\n                    optionTable.put(s1, \"\");\r\n                }\r\n            }\r\n\r\n        }\r\n        catch(IOException ioexception)\r\n        {\r\n            throw new ErrorException((new StringBuilder()).append(\"Illegal option string: \").append(s).toString());\r\n        }\r\n    }\r\n\r\n    public OptionTable(Map map)\r\n    {\r\n        optionTable = new HashMap();\r\n        String s;\r\n        String s1;\r\n        for(Iterator iterator = map.keySet().iterator(); iterator.hasNext(); optionTable.put(s, s1))\r\n        {\r\n            s = (String)iterator.next();\r\n            s1 = (String)map.get(s);\r\n        }\r\n\r\n    }\r\n\r\n    public boolean isSpecified(String s)\r\n    {\r\n        return optionTable.containsKey(s);\r\n    }\r\n\r\n    public String getOption(String s)\r\n    {\r\n        return getOption(s, null);\r\n    }\r\n\r\n    public String getOption(String s, String s1)\r\n    {\r\n        String s2 = (String)optionTable.get(s);\r\n        return s2 != null && !s2.equals(\"\") ? s2 : s1;\r\n    }\r\n\r\n    public int getIntOption(String s)\r\n    {\r\n        return getIntOption(s, 0);\r\n    }\r\n\r\n    public int getIntOption(String s, int i)\r\n    {\r\n        String s1 = getOption(s, null);\r\n        if(s1 == null || s1.equals(\"\"))\r\n            return i;\r\n        else\r\n            return Integer.decode(s1).intValue();\r\n    }\r\n\r\n    public double getDoubleOption(String s)\r\n    {\r\n        return getDoubleOption(s, 0.0D);\r\n    }\r\n\r\n    public double getDoubleOption(String s, double d)\r\n    {\r\n        String s1 = getOption(s, null);\r\n        if(s1 == null || s1.equals(\"\"))\r\n            return d;\r\n        else\r\n            return Double.valueOf(s1).doubleValue();\r\n    }\r\n\r\n    public HashMap getMap()\r\n    {\r\n        return optionTable;\r\n    }\r\n\r\n    private StreamTokenizer createTokenizer(String s)\r\n    {\r\n        StreamTokenizer streamtokenizer = new StreamTokenizer(new StringReader(s));\r\n        streamtokenizer.resetSyntax();\r\n        streamtokenizer.wordChars(33, 60);\r\n        streamtokenizer.wordChars(62, 126);\r\n        streamtokenizer.quoteChar(34);\r\n        streamtokenizer.quoteChar(39);\r\n        streamtokenizer.whitespaceChars(32, 32);\r\n        streamtokenizer.whitespaceChars(9, 9);\r\n        return streamtokenizer;\r\n    }\r\n\r\n    private boolean keyExists(String s, String as[])\r\n    {\r\n        for(int i = 0; i < as.length; i++)\r\n            if(s.equals(as[i]))\r\n                return true;\r\n\r\n        return false;\r\n    }\r\n\r\n    private HashMap optionTable;\r\n    static final long serialVersionUID = 1L;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/PICImageSaver.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   MediaTools.java\r\n\r\npackage acm.util;\r\n\r\n\r\n// Referenced classes of package acm.util:\r\n//            PICTImageSaver\r\n\r\nclass PICImageSaver extends PICTImageSaver\r\n{\r\n\r\n    PICImageSaver()\r\n    {\r\n    }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/PICTImageSaver.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   MediaTools.java\r\n\r\npackage acm.util;\r\n\r\nimport java.awt.Image;\r\n\r\n// Referenced classes of package acm.util:\r\n//            ImageSaver, MediaTools\r\n\r\nclass PICTImageSaver extends ImageSaver\r\n{\r\n\r\n    PICTImageSaver()\r\n    {\r\n        paddingFlag = true;\r\n    }\r\n\r\n    public void saveImage(Image image)\r\n    {\r\n        pixels = MediaTools.getPixelArray(image);\r\n        Object obj = image.getProperty(\"PSPreview\", null);\r\n        psPreview = (obj instanceof String[]) ? (String[])(String[])obj : null;\r\n        width = pixels[0].length;\r\n        height = pixels.length;\r\n        rowBytes = 4 * width;\r\n        if(paddingFlag)\r\n            dumpPadding();\r\n        dumpHeader();\r\n        dumpDefHilite();\r\n        dumpClipRegion();\r\n        dumpBoundsMarkers();\r\n        if(psPreview != null)\r\n        {\r\n            dumpShort(160);\r\n            dumpShort(190);\r\n        }\r\n        dumpDirectBitsRect();\r\n        if(psPreview != null)\r\n        {\r\n            dumpPSPreview();\r\n            dumpShort(160);\r\n            dumpShort(191);\r\n        }\r\n        dumpEndPict();\r\n    }\r\n\r\n    public void setPaddingFlag(boolean flag)\r\n    {\r\n        paddingFlag = flag;\r\n    }\r\n\r\n    private void dumpPadding()\r\n    {\r\n        for(int i = 0; i < 512; i++)\r\n            dumpByte(0);\r\n\r\n    }\r\n\r\n    private void dumpHeader()\r\n    {\r\n        dumpShort(0);\r\n        dumpShort(0);\r\n        dumpShort(0);\r\n        dumpShort(height);\r\n        dumpShort(width);\r\n        dumpShort(17);\r\n        dumpShort(767);\r\n        dumpShort(3072);\r\n        dumpShort(65534);\r\n        dumpShort(0);\r\n        dumpShort(72);\r\n        dumpShort(0);\r\n        dumpShort(72);\r\n        dumpShort(0);\r\n        dumpShort(0);\r\n        dumpShort(0);\r\n        dumpShort(height);\r\n        dumpShort(width);\r\n        dumpLong(0);\r\n    }\r\n\r\n    private void dumpDefHilite()\r\n    {\r\n        dumpShort(30);\r\n    }\r\n\r\n    private void dumpClipRegion()\r\n    {\r\n        dumpShort(1);\r\n        dumpShort(10);\r\n        dumpShort(0);\r\n        dumpShort(0);\r\n        dumpShort(height);\r\n        dumpShort(width);\r\n    }\r\n\r\n    private void dumpBoundsMarkers()\r\n    {\r\n        dumpShort(34);\r\n        dumpShort(0);\r\n        dumpShort(0);\r\n        dumpShort(0);\r\n        dumpShort(34);\r\n        dumpShort(height);\r\n        dumpShort(width);\r\n        dumpShort(0);\r\n    }\r\n\r\n    private void dumpDirectBitsRect()\r\n    {\r\n        dumpShort(154);\r\n        dumpPixMap();\r\n        dumpShort(0);\r\n        dumpShort(0);\r\n        dumpShort(height);\r\n        dumpShort(width);\r\n        dumpShort(0);\r\n        dumpShort(0);\r\n        dumpShort(height);\r\n        dumpShort(width);\r\n        dumpShort(0);\r\n        dumpPixelData();\r\n    }\r\n\r\n    private void dumpPixMap()\r\n    {\r\n        dumpLong(255);\r\n        dumpShort(rowBytes | 0x8000);\r\n        dumpShort(0);\r\n        dumpShort(0);\r\n        dumpShort(height);\r\n        dumpShort(width);\r\n        dumpShort(0);\r\n        dumpShort(4);\r\n        dumpLong(0);\r\n        dumpShort(72);\r\n        dumpShort(0);\r\n        dumpShort(72);\r\n        dumpShort(0);\r\n        dumpShort(16);\r\n        dumpShort(32);\r\n        dumpShort(3);\r\n        dumpShort(8);\r\n        dumpLong(0);\r\n        dumpLong(0);\r\n        dumpLong(0);\r\n    }\r\n\r\n    private void dumpEndPict()\r\n    {\r\n        dumpShort(255);\r\n    }\r\n\r\n    private void dumpPixelData()\r\n    {\r\n        int i = 0;\r\n        byte abyte0[] = new byte[rowBytes];\r\n        for(int j = 0; j < height; j++)\r\n        {\r\n            int k = packScanLine(abyte0, pixels[j]);\r\n            if(rowBytes > 250)\r\n            {\r\n                dumpShort(k);\r\n                i += 2;\r\n            } else\r\n            {\r\n                dumpByte(k);\r\n                i++;\r\n            }\r\n            for(int l = 0; l < k; l++)\r\n                dumpByte(abyte0[l]);\r\n\r\n            i += k;\r\n        }\r\n\r\n        if(i % 2 == 1)\r\n            dumpByte(0);\r\n    }\r\n\r\n    private int packScanLine(byte abyte0[], int ai[])\r\n    {\r\n        int i = 0;\r\nlabel0:\r\n        for(int j = 0; j < 3; j++)\r\n        {\r\n            char c = \"RGB\".charAt(j);\r\n            int k = i;\r\n            int l = i + 1;\r\n            for(int i1 = 0; i1 < width;)\r\n            {\r\n                int j1 = getPixelComponent(ai[i1++], c);\r\n                abyte0[l++] = (byte)j1;\r\n                int l1 = 1;\r\n                boolean flag = false;\r\n                if(i1 < width)\r\n                {\r\n                    int k2 = getPixelComponent(ai[i1], c);\r\n                    flag = j1 == k2;\r\n                    if(flag)\r\n                        do\r\n                        {\r\n                            if(l1 >= 128 || i1 >= width)\r\n                                break;\r\n                            int l2 = getPixelComponent(ai[i1], c);\r\n                            if(j1 != l2)\r\n                                break;\r\n                            l1++;\r\n                            i1++;\r\n                        } while(true);\r\n                    else\r\n                        do\r\n                        {\r\n                            if(l1 >= 128 || i1 >= width)\r\n                                break;\r\n                            int i3 = getPixelComponent(ai[i1], c);\r\n                            if(j1 == i3)\r\n                            {\r\n                                l--;\r\n                                l1--;\r\n                                i1--;\r\n                                break;\r\n                            }\r\n                            abyte0[l++] = (byte)i3;\r\n                            j1 = i3;\r\n                            l1++;\r\n                            i1++;\r\n                        } while(true);\r\n                }\r\n                if(flag)\r\n                    abyte0[i] = (byte)(0x80 | 129 - l1);\r\n                else\r\n                    abyte0[i] = (byte)(l1 - 1);\r\n                i = l++;\r\n            }\r\n\r\n            if(i - k <= width + width / 128)\r\n                continue;\r\n            int k1 = width;\r\n            i = k;\r\n            int i2 = 0;\r\n            do\r\n            {\r\n                if(i2 >= width)\r\n                    continue label0;\r\n                if(i2 % 128 == 0)\r\n                {\r\n                    int j2 = k1 <= 128 ? k1 : 128;\r\n                    abyte0[i++] = (byte)(j2 - 1);\r\n                    k1 -= j2;\r\n                }\r\n                abyte0[i++] = (byte)getPixelComponent(ai[i2], c);\r\n                i2++;\r\n            } while(true);\r\n        }\r\n\r\n        return i;\r\n    }\r\n\r\n    private void dumpPSPreview()\r\n    {\r\n        addPSComment(\"/dictCount countdictstack def\");\r\n        addPSComment(\"/opCount count 1 sub def\");\r\n        addPSComment(\"500 dict begin\");\r\n        addPSComment(\"/showpage {} def\");\r\n        addPSComment(\"0 setgray 0 setlinecap\");\r\n        addPSComment(\"1 setlinewidth 0 setlinejoin\");\r\n        addPSComment(\"10 setmiterlimit [] 0 setdash\");\r\n        addPSComment(\"/languagelevel where {\");\r\n        addPSComment(\"  pop languagelevel\");\r\n        addPSComment(\"  1 ne { false setstrokeadjust false setoverprint } if\");\r\n        addPSComment(\"} if\");\r\n        addPSComment(\"gsave\");\r\n        addPSComment(\"clippath pathbbox\");\r\n        addPSComment((new StringBuilder()).append(\"pop pop \").append(height).append(\" add translate\").toString());\r\n        addPSComment(\"1 -1 scale\");\r\n        for(int i = 0; i < psPreview.length; i++)\r\n            addPSComment(psPreview[i]);\r\n\r\n        addPSComment(\"grestore\");\r\n        addPSComment(\"end\");\r\n        addPSComment(\"count opCount sub {pop} repeat\");\r\n        addPSComment(\"countdictstack dictCount sub {end} repeat\");\r\n    }\r\n\r\n    private void addPSComment(String s)\r\n    {\r\n        if(s.length() % 2 == 0)\r\n            s = (new StringBuilder()).append(s).append(\" \").toString();\r\n        dumpShort(161);\r\n        dumpShort(192);\r\n        dumpShort(s.length() + 1);\r\n        for(int i = 0; i < s.length(); i++)\r\n            dumpByte(s.charAt(i));\r\n\r\n        dumpByte(13);\r\n    }\r\n\r\n    private static final int OP_CLIP = 1;\r\n    private static final int OP_VERSION = 17;\r\n    private static final int OP_DEF_HILITE = 30;\r\n    private static final int OP_SHORT_LINE = 34;\r\n    private static final int OP_DIRECT_BITS_RECT = 154;\r\n    private static final int OP_SHORT_COMMENT = 160;\r\n    private static final int OP_LONG_COMMENT = 161;\r\n    private static final int OP_END_PICT = 255;\r\n    private static final int OP_HEADER = 3072;\r\n    private static final int PS_BEGIN = 190;\r\n    private static final int PS_END = 191;\r\n    private static final int PS_HANDLE = 192;\r\n    private static final int PS_DICT_SIZE = 500;\r\n    private static final int VERSION = 767;\r\n    private static final int PICT_PADDING = 512;\r\n    private static final int RGB_DIRECT = 16;\r\n    private static final int SRC_COPY = 0;\r\n    private int pixels[][];\r\n    private String psPreview[];\r\n    private int width;\r\n    private int height;\r\n    private int rowBytes;\r\n    private boolean paddingFlag;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/PNGImageSaver.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   MediaTools.java\r\n\r\npackage acm.util;\r\n\r\n\r\n// Referenced classes of package acm.util:\r\n//            ImageSaver\r\n\r\nclass PNGImageSaver extends ImageSaver\r\n{\r\n\r\n    public PNGImageSaver()\r\n    {\r\n        super(\"PNG\", 2);\r\n    }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/Platform.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   Platform.java\r\n\r\npackage acm.util;\r\n\r\nimport java.awt.Toolkit;\r\nimport java.io.File;\r\nimport java.lang.reflect.Constructor;\r\nimport java.lang.reflect.Method;\r\nimport java.util.StringTokenizer;\r\n\r\npublic class Platform\r\n{\r\n\r\n    private Platform()\r\n    {\r\n    }\r\n\r\n    public static int getPlatform()\r\n    {\r\n        if(platform != -1)\r\n            return platform;\r\n        String s = System.getProperty(\"os.name\", \"\").toLowerCase();\r\n        if(s.startsWith(\"mac\"))\r\n            return platform = 1;\r\n        if(s.startsWith(\"windows\"))\r\n            return platform = 3;\r\n        if(s.startsWith(\"microsoft\"))\r\n            return platform = 3;\r\n        if(s.startsWith(\"ms\"))\r\n            return platform = 3;\r\n        if(s.startsWith(\"unix\"))\r\n            return platform = 2;\r\n        if(s.startsWith(\"linux\"))\r\n            return platform = 2;\r\n        else\r\n            return platform = 0;\r\n    }\r\n\r\n    public static boolean isMac()\r\n    {\r\n        return getPlatform() == 1;\r\n    }\r\n\r\n    public static boolean isWindows()\r\n    {\r\n        return getPlatform() == 3;\r\n    }\r\n\r\n    public static boolean isUnix()\r\n    {\r\n        return getPlatform() == 2;\r\n    }\r\n\r\n    public static void setFileTypeAndCreator(String s, String s1, String s2)\r\n    {\r\n        if(!isMac())\r\n            return;\r\n        try\r\n        {\r\n            setFileTypeAndCreator(new File(s), s1, s2);\r\n        }\r\n        catch(Exception exception) { }\r\n    }\r\n\r\n    public static void setFileTypeAndCreator(File file, String s, String s1)\r\n    {\r\n        if(!isMac())\r\n            return;\r\n        try\r\n        {\r\n            Class class1 = Class.forName(\"com.apple.mrj.MRJOSType\");\r\n            Class class2 = Class.forName(\"com.apple.mrj.MRJFileUtils\");\r\n            Class aclass[] = {\r\n                Class.forName(\"java.lang.String\")\r\n            };\r\n            Constructor constructor = class1.getConstructor(aclass);\r\n            Class aclass1[] = {\r\n                Class.forName(\"java.io.File\"), class1, class1\r\n            };\r\n            Method method = class2.getMethod(\"setFileTypeAndCreator\", aclass1);\r\n            Object aobj[] = {\r\n                (new StringBuilder()).append(s).append(\"    \").toString().substring(0, 4)\r\n            };\r\n            Object obj = constructor.newInstance(aobj);\r\n            Object aobj1[] = {\r\n                (new StringBuilder()).append(s1).append(\"    \").toString().substring(0, 4)\r\n            };\r\n            Object obj1 = constructor.newInstance(aobj1);\r\n            Object aobj2[] = {\r\n                file, obj, obj1\r\n            };\r\n            method.invoke(null, aobj2);\r\n        }\r\n        catch(Exception exception) { }\r\n    }\r\n\r\n    public static void copyFileTypeAndCreator(File file, File file1)\r\n    {\r\n        if(!isMac())\r\n            return;\r\n        try\r\n        {\r\n            Class class1 = Class.forName(\"com.apple.mrj.MRJOSType\");\r\n            Class class2 = Class.forName(\"com.apple.mrj.MRJFileUtils\");\r\n            Class aclass[] = {\r\n                Class.forName(\"java.io.File\")\r\n            };\r\n            Method method = class2.getMethod(\"getFileType\", aclass);\r\n            Method method1 = class2.getMethod(\"getFileCreator\", aclass);\r\n            Class aclass1[] = {\r\n                Class.forName(\"java.io.File\"), class1, class1\r\n            };\r\n            Method method2 = class2.getMethod(\"setFileTypeAndCreator\", aclass1);\r\n            Object aobj[] = {\r\n                file\r\n            };\r\n            Object obj = method.invoke(null, aobj);\r\n            Object obj1 = method1.invoke(null, aobj);\r\n            Object aobj1[] = {\r\n                file1, obj, obj1\r\n            };\r\n            method2.invoke(null, aobj1);\r\n        }\r\n        catch(Exception exception) { }\r\n    }\r\n\r\n    public static String getJTFVersion()\r\n    {\r\n        return \"1.99.1\";\r\n    }\r\n\r\n    public static int compareVersion(String s)\r\n    {\r\n        return compareVersion(System.getProperty(\"java.version\"), s);\r\n    }\r\n\r\n    public static int compareVersion(String s, String s1)\r\n    {\r\n        StringTokenizer stringtokenizer = new StringTokenizer(s, \".\");\r\n        StringTokenizer stringtokenizer1;\r\n        for(stringtokenizer1 = new StringTokenizer(s1, \".\"); stringtokenizer.hasMoreTokens() && stringtokenizer1.hasMoreTokens();)\r\n        {\r\n            int i = Integer.parseInt(stringtokenizer.nextToken());\r\n            int j = Integer.parseInt(stringtokenizer1.nextToken());\r\n            if(i != j)\r\n                return i >= j ? 1 : -1;\r\n        }\r\n\r\n        if(stringtokenizer.hasMoreTokens())\r\n            return 1;\r\n        return !stringtokenizer1.hasMoreTokens() ? 0 : -1;\r\n    }\r\n\r\n    public static boolean isSwingAvailable()\r\n    {\r\n        if(!swingChecked)\r\n        {\r\n            swingChecked = true;\r\n            isSwingAvailable = false;\r\n            if(compareVersion(\"1.2\") >= 0)\r\n                try\r\n                {\r\n                    isSwingAvailable = Class.forName(\"javax.swing.JComponent\") != null;\r\n                }\r\n                catch(Exception exception) { }\r\n        }\r\n        return isSwingAvailable;\r\n    }\r\n\r\n    public static boolean isSunAudioAvailable()\r\n    {\r\n        if(!sunAudioChecked)\r\n        {\r\n            sunAudioChecked = true;\r\n            try\r\n            {\r\n                isSunAudioAvailable = Class.forName(\"sun.audio.AudioPlayer\") != null;\r\n            }\r\n            catch(Exception exception)\r\n            {\r\n                isSunAudioAvailable = false;\r\n            }\r\n        }\r\n        return isSunAudioAvailable;\r\n    }\r\n\r\n    public static boolean isJMFAvailable()\r\n    {\r\n        if(!jmfChecked)\r\n        {\r\n            jmfChecked = true;\r\n            try\r\n            {\r\n                isJMFAvailable = Class.forName(\"javax.media.Player\") != null;\r\n            }\r\n            catch(Exception exception)\r\n            {\r\n                isJMFAvailable = false;\r\n            }\r\n        }\r\n        return isJMFAvailable;\r\n    }\r\n\r\n    public static boolean areCollectionsAvailable()\r\n    {\r\n        if(!collectionsChecked)\r\n        {\r\n            collectionsChecked = true;\r\n            try\r\n            {\r\n                areCollectionsAvailable = Class.forName(\"java.util.ArrayList\") != null;\r\n            }\r\n            catch(Exception exception)\r\n            {\r\n                areCollectionsAvailable = false;\r\n            }\r\n        }\r\n        return areCollectionsAvailable;\r\n    }\r\n\r\n    public static boolean areStandardFontFamiliesAvailable()\r\n    {\r\n        if(!fontsChecked)\r\n        {\r\n            fontsChecked = true;\r\n            try\r\n            {\r\n                Class class1 = Class.forName(\"java.awt.Toolkit\");\r\n                Method method = class1.getMethod(\"getFontList\", new Class[0]);\r\n                String as[] = (String[])(String[])method.invoke(Toolkit.getDefaultToolkit(), new Object[0]);\r\n                int i = 0;\r\n                for(int j = 0; j < as.length; j++)\r\n                    if(as[j].equals(\"Serif\") || as[j].equals(\"SansSerif\") || as[j].equals(\"Monospaced\"))\r\n                        i++;\r\n\r\n                areStandardFontFamiliesAvailable = i == 3;\r\n            }\r\n            catch(Exception exception)\r\n            {\r\n                areStandardFontFamiliesAvailable = false;\r\n            }\r\n        }\r\n        return areStandardFontFamiliesAvailable;\r\n    }\r\n\r\n    public static final int UNKNOWN = 0;\r\n    public static final int MAC = 1;\r\n    public static final int UNIX = 2;\r\n    public static final int WINDOWS = 3;\r\n    private static final String JTF_VERSION = \"1.99.1\";\r\n    private static int platform = -1;\r\n    private static boolean areStandardFontFamiliesAvailable;\r\n    private static boolean fontsChecked;\r\n    private static boolean isSwingAvailable;\r\n    private static boolean swingChecked;\r\n    private static boolean areCollectionsAvailable;\r\n    private static boolean collectionsChecked;\r\n    private static boolean isSunAudioAvailable;\r\n    private static boolean sunAudioChecked;\r\n    private static boolean isJMFAvailable;\r\n    private static boolean jmfChecked;\r\n\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/ProgressBarDialog.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   JTFTools.java\r\n\r\npackage acm.util;\r\n\r\nimport acm.gui.TableLayout;\r\nimport acm.program.Program;\r\nimport java.awt.*;\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport javax.swing.*;\r\n\r\n// Referenced classes of package acm.util:\r\n//            JTFTools\r\n\r\nclass ProgressBarDialog extends JDialog\r\n    implements ActionListener\r\n{\r\n\r\n    public ProgressBarDialog(Program program)\r\n    {\r\n        super(JTFTools.getEnclosingFrame(program), \"Progress\", false);\r\n        Container container = getContentPane();\r\n        container.setLayout(new TableLayout(2, 1));\r\n        progressBar = new JProgressBar();\r\n        container.add(progressBar, \"weightx=1 left=5 right=5 height=25\");\r\n        JButton jbutton = new JButton(\"Cancel\");\r\n        jbutton.addActionListener(this);\r\n        container.add(jbutton, \"top=10 fill=NONE\");\r\n        Rectangle rectangle = program.getBounds();\r\n        int i = rectangle.x + (rectangle.width - 250) / 2;\r\n        int j = rectangle.y + (rectangle.height - 90) / 2;\r\n        setBounds(i, j, 250, 90);\r\n    }\r\n\r\n    public JProgressBar getProgressBar()\r\n    {\r\n        return progressBar;\r\n    }\r\n\r\n    public void actionPerformed(ActionEvent actionevent)\r\n    {\r\n        progressBar.setString(\"Cancel\");\r\n        setVisible(false);\r\n    }\r\n\r\n    public static boolean hasBeenCancelled(JProgressBar jprogressbar)\r\n    {\r\n        if(jprogressbar == null)\r\n        {\r\n            return false;\r\n        } else\r\n        {\r\n            String s = jprogressbar.getString();\r\n            return s != null && s.equals(\"Cancel\");\r\n        }\r\n    }\r\n\r\n    public static void popup(JProgressBar jprogressbar)\r\n    {\r\n        for(Object obj = jprogressbar; obj != null; obj = ((Component) (obj)).getParent())\r\n            if(obj instanceof ProgressBarDialog)\r\n            {\r\n                ((Component) (obj)).setVisible(true);\r\n                ((Component) (obj)).repaint();\r\n                return;\r\n            }\r\n\r\n    }\r\n\r\n    public static void dismiss(JProgressBar jprogressbar)\r\n    {\r\n        for(Object obj = jprogressbar; obj != null; obj = ((Component) (obj)).getParent())\r\n            if(obj instanceof ProgressBarDialog)\r\n            {\r\n                ((Component) (obj)).setVisible(false);\r\n                return;\r\n            }\r\n\r\n    }\r\n\r\n    private static final int DIALOG_WIDTH = 250;\r\n    private static final int DIALOG_HEIGHT = 90;\r\n    private static final int PROGRESS_BAR_HEIGHT = 25;\r\n    private JProgressBar progressBar;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/RTFImageSaver.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   MediaTools.java\r\n\r\npackage acm.util;\r\n\r\nimport java.awt.Image;\r\nimport java.io.*;\r\n\r\n// Referenced classes of package acm.util:\r\n//            PICTImageSaver, JTFTools, Platform\r\n\r\nclass RTFImageSaver extends PICTImageSaver\r\n{\r\n\r\n    RTFImageSaver()\r\n    {\r\n    }\r\n\r\n    public void saveImage(Image image)\r\n    {\r\n        int i = image.getWidth(null);\r\n        int j = image.getHeight(null);\r\n        PrintStream printstream = new PrintStream(new BufferedOutputStream(getOutputStream()));\r\n        setOutputStream(JTFTools.openHexByteOutputStream(printstream));\r\n        for(int k = 0; k < RTF_HEADER.length; k++)\r\n            printstream.println(RTF_HEADER[k]);\r\n\r\n        printstream.println((new StringBuilder()).append(\"{{\\\\pict\\\\macpict\\\\picw\").append(i).append(\"\\\\pich\").append(j).toString());\r\n        setPaddingFlag(false);\r\n        super.saveImage(image);\r\n        printstream.println(\"}}\\\\par\");\r\n        printstream.println(\"}\");\r\n        printstream.close();\r\n    }\r\n\r\n    public void updateFileType(File file)\r\n    {\r\n        Platform.setFileTypeAndCreator(file, \"TEXT\", \"MSWD\");\r\n    }\r\n\r\n    private static final String RTF_HEADER[] = {\r\n        \"{\\\\rtf1\\\\mac\\\\deff2\", \"{\\\\fonttbl{\\\\f20\\\\froman Times;} {\\\\f22\\\\fmodern Courier;}}\", \"{\\\\colortbl\\\\red0\\\\green0\\\\blue0;\\\\red0\\\\green0\\\\blue255;\", \"\\\\red0\\\\green255\\\\blue255;\\\\red0\\\\green255\\\\blue0;\", \"\\\\red255\\\\green0\\\\blue255;\\\\red255\\\\green0\\\\blue0;\", \"\\\\red255\\\\green255\\\\blue0;\\\\red255\\\\green255\\\\blue255;}\", \"{\\\\stylesheet{\\\\f20 \\\\sbasedon222\\\\snext0 Normal;}}\", \"\\\\widowctrl\\\\ftnbj \\\\sectd \\\\sbknone\\\\linemod0\\\\linex0\\\\cols1\\\\endnhere\", \"\\\\pard\\\\plain \\\\s0\\\\qc\\\\f20\"\r\n    };\r\n\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/RandomGenerator.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   RandomGenerator.java\r\n\r\npackage acm.util;\r\n\r\nimport java.awt.Color;\r\nimport java.util.Random;\r\n\r\npublic class RandomGenerator extends Random\r\n{\r\n\r\n    public RandomGenerator()\r\n    {\r\n    }\r\n\r\n    public int nextInt(int i)\r\n    {\r\n        return nextInt(0, i - 1);\r\n    }\r\n\r\n    public boolean nextBoolean()\r\n    {\r\n        return nextBoolean(0.5D);\r\n    }\r\n\r\n    public int nextInt(int i, int j)\r\n    {\r\n        return i + (int)((double)((j - i) + 1) * nextDouble());\r\n    }\r\n\r\n    public double nextDouble(double d, double d1)\r\n    {\r\n        return d + (d1 - d) * nextDouble();\r\n    }\r\n\r\n    public boolean nextBoolean(double d)\r\n    {\r\n        return nextDouble() < d;\r\n    }\r\n\r\n    public Color nextColor()\r\n    {\r\n        return new Color(nextInt(256), nextInt(256), nextInt(256));\r\n    }\r\n\r\n    public static RandomGenerator getInstance()\r\n    {\r\n        if(standardInstance == null)\r\n            standardInstance = new RandomGenerator();\r\n        return standardInstance;\r\n    }\r\n\r\n    private static RandomGenerator standardInstance;\r\n    static final long serialVersionUID = 1L;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/ReverseColorMap.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   MediaTools.java\r\n\r\npackage acm.util;\r\n\r\n\r\nclass ReverseColorMap\r\n{\r\n    private static class ColorRecord\r\n    {\r\n\r\n        int rgb;\r\n        int ipalette;\r\n\r\n        ColorRecord(int i, int j)\r\n        {\r\n            rgb = i;\r\n            ipalette = j;\r\n        }\r\n    }\r\n\r\n\r\n    ReverseColorMap()\r\n    {\r\n        hTable = new ColorRecord[2053];\r\n    }\r\n\r\n    int getPaletteIndex(int i)\r\n    {\r\n        ColorRecord colorrecord;\r\n        for(int j = i % hTable.length; (colorrecord = hTable[j]) != null && colorrecord.rgb != i; j = ++j % hTable.length);\r\n        if(colorrecord != null)\r\n            return colorrecord.ipalette;\r\n        else\r\n            return -1;\r\n    }\r\n\r\n    void put(int i, int j)\r\n    {\r\n        int k;\r\n        for(k = i % hTable.length; hTable[k] != null; k = ++k % hTable.length);\r\n        hTable[k] = new ColorRecord(i, j);\r\n    }\r\n\r\n    private static final int HCAPACITY = 2053;\r\n    private ColorRecord hTable[];\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/SecurityManagerThatFails.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   JTFTools.java\r\n\r\npackage acm.util;\r\n\r\nimport java.security.Permission;\r\n\r\nclass SecurityManagerThatFails extends SecurityManager\r\n{\r\n\r\n    SecurityManagerThatFails()\r\n    {\r\n    }\r\n\r\n    public void checkRead(String s)\r\n    {\r\n        throw new SecurityException(\"always fail\");\r\n    }\r\n\r\n    public void checkPermission(Permission permission)\r\n    {\r\n    }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/SoundClip.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   SoundClip.java\r\n\r\npackage acm.util;\r\n\r\nimport java.applet.AudioClip;\r\nimport java.io.*;\r\nimport java.net.URL;\r\nimport java.text.DecimalFormat;\r\nimport javax.sound.sampled.*;\r\n\r\n// Referenced classes of package acm.util:\r\n//            ErrorException, SoundPlayer, JTFTools\r\n\r\npublic class SoundClip\r\n    implements AudioClip\r\n{\r\n\r\n    public SoundClip()\r\n    {\r\n        this(1);\r\n    }\r\n\r\n    public SoundClip(int i)\r\n    {\r\n        if(i < 1 || i > 2)\r\n        {\r\n            throw new ErrorException(\"SoundClip: Illegal number of channels\");\r\n        } else\r\n        {\r\n            nChannels = i;\r\n            frameRate = 22050F;\r\n            soundName = \"Untitled\";\r\n            frameCount = 0;\r\n            clipVolume = 1.0D;\r\n            data = new byte[0];\r\n            format = new AudioFormat(frameRate, 16, i, true, true);\r\n            return;\r\n        }\r\n    }\r\n\r\n    public SoundClip(String s)\r\n    {\r\n        if(s.startsWith(\"http:\"))\r\n        {\r\n            try\r\n            {\r\n                URL url = new URL(s);\r\n                soundName = JTFTools.getURLSuffix(url.getPath());\r\n                readSound(convertToPCM(getAudioInputStream(url.openStream())));\r\n            }\r\n            catch(Exception exception)\r\n            {\r\n                throw new ErrorException(exception);\r\n            }\r\n        } else\r\n        {\r\n            soundName = s;\r\n            readSound(convertToPCM(getAudioInputStream(new File(s))));\r\n        }\r\n    }\r\n\r\n    public SoundClip(File file)\r\n    {\r\n        try\r\n        {\r\n            soundName = file.getName();\r\n            readSound(convertToPCM(getAudioInputStream(file)));\r\n        }\r\n        catch(Exception exception)\r\n        {\r\n            throw new ErrorException(exception);\r\n        }\r\n    }\r\n\r\n    public SoundClip(URL url)\r\n    {\r\n        try\r\n        {\r\n            soundName = JTFTools.getURLSuffix(url.getPath());\r\n            readSound(convertToPCM(getAudioInputStream(url.openStream())));\r\n        }\r\n        catch(Exception exception)\r\n        {\r\n            throw new ErrorException(exception);\r\n        }\r\n    }\r\n\r\n    public SoundClip(InputStream inputstream)\r\n    {\r\n        soundName = \"Untitled\";\r\n        readSound(convertToPCM(getAudioInputStream(inputstream)));\r\n    }\r\n\r\n    public SoundClip(int ai[])\r\n    {\r\n        this(1);\r\n        addSampleData(ai);\r\n    }\r\n\r\n    public SoundClip(int ai[], int ai1[])\r\n    {\r\n        this(2);\r\n        addSampleData(ai, ai1);\r\n    }\r\n\r\n    public synchronized void play()\r\n    {\r\n        if(player == null)\r\n            player = new SoundPlayer(this);\r\n        player.play();\r\n    }\r\n\r\n    public void loop()\r\n    {\r\n        if(player == null)\r\n            player = new SoundPlayer(this);\r\n        player.loop();\r\n    }\r\n\r\n    public synchronized void stop()\r\n    {\r\n        if(player != null)\r\n            player.stop();\r\n    }\r\n\r\n    public void save(String s)\r\n    {\r\n        save(new File(System.getProperty(\"user.dir\"), s));\r\n    }\r\n\r\n    public void save(File file)\r\n    {\r\n        try\r\n        {\r\n            AudioSystem.write(getAudioInputStream(), getFormatForFile(file.getName()), file);\r\n        }\r\n        catch(IOException ioexception)\r\n        {\r\n            throw new ErrorException((new StringBuilder()).append(\"save: I/O error - \").append(ioexception.getMessage()).toString());\r\n        }\r\n    }\r\n\r\n    public String getName()\r\n    {\r\n        return soundName;\r\n    }\r\n\r\n    public void setName(String s)\r\n    {\r\n        soundName = s;\r\n    }\r\n\r\n    public int getChannelCount()\r\n    {\r\n        return nChannels;\r\n    }\r\n\r\n    public boolean isStereo()\r\n    {\r\n        return nChannels == 2;\r\n    }\r\n\r\n    public int getFrameCount()\r\n    {\r\n        return frameCount;\r\n    }\r\n\r\n    public double getFrameRate()\r\n    {\r\n        return (double)frameRate;\r\n    }\r\n\r\n    public double getDuration()\r\n    {\r\n        return (double)((float)frameCount / frameRate);\r\n    }\r\n\r\n    public int getFrameIndex()\r\n    {\r\n        return currentFrame;\r\n    }\r\n\r\n    public void setFrameIndex(int i)\r\n    {\r\n        currentFrame = i;\r\n    }\r\n\r\n    public void rewind()\r\n    {\r\n        setFrameIndex(0);\r\n    }\r\n\r\n    public double getVolume()\r\n    {\r\n        return clipVolume;\r\n    }\r\n\r\n    public void setVolume(double d)\r\n    {\r\n        clipVolume = d;\r\n    }\r\n\r\n    public int[] getSampleData()\r\n    {\r\n        return getSampleData(0);\r\n    }\r\n\r\n    public int[] getSampleData(int i)\r\n    {\r\n        standardize();\r\n        if(i < 0 || i >= nChannels)\r\n            throw new ErrorException(\"getSamples: Channel number out of range\");\r\n        int ai[] = new int[frameCount];\r\n        int j = i * 2;\r\n        for(int k = 0; k < frameCount; k++)\r\n        {\r\n            ai[k] = data[j] << 8 | data[j + 1] & 0xff;\r\n            j += nChannels * 2;\r\n        }\r\n\r\n        return ai;\r\n    }\r\n\r\n    public void addSampleData(int i)\r\n    {\r\n        standardize();\r\n        if(nChannels == 2)\r\n        {\r\n            addSampleData(i, i);\r\n        } else\r\n        {\r\n            int j = frameCount * 2;\r\n            frameCount++;\r\n            if(j >= data.length)\r\n            {\r\n                byte abyte0[] = new byte[j + 10000];\r\n                if(j > 0)\r\n                    System.arraycopy(data, 0, abyte0, 0, j);\r\n                data = abyte0;\r\n            }\r\n            data[j++] = (byte)(i >> 8);\r\n            data[j++] = (byte)(i & 0xff);\r\n        }\r\n    }\r\n\r\n    public void addSampleData(int i, int j)\r\n    {\r\n        standardize();\r\n        if(nChannels != 2)\r\n            throw new ErrorException(\"addSampleData: Sound is not stereo\");\r\n        int k = 2 * frameCount * 2;\r\n        frameCount++;\r\n        if(k >= data.length)\r\n        {\r\n            byte abyte0[] = new byte[k + 10000];\r\n            if(k > 0)\r\n                System.arraycopy(data, 0, abyte0, 0, k);\r\n            data = abyte0;\r\n        }\r\n        data[k++] = (byte)(i >> 8);\r\n        data[k++] = (byte)(i & 0xff);\r\n        data[k++] = (byte)(j >> 8);\r\n        data[k++] = (byte)(j & 0xff);\r\n    }\r\n\r\n    public void addSampleData(int ai[])\r\n    {\r\n        standardize();\r\n        if(nChannels == 2)\r\n        {\r\n            addSampleData(ai, ai);\r\n        } else\r\n        {\r\n            int i = frameCount * 2;\r\n            frameCount += ai.length;\r\n            byte abyte0[] = new byte[frameCount * 2];\r\n            if(i > 0)\r\n                System.arraycopy(data, 0, abyte0, 0, i);\r\n            data = abyte0;\r\n            for(int j = 0; j < ai.length; j++)\r\n            {\r\n                data[i++] = (byte)(ai[j] >> 8);\r\n                data[i++] = (byte)(ai[j] & 0xff);\r\n            }\r\n\r\n        }\r\n    }\r\n\r\n    public void addSampleData(int ai[], int ai1[])\r\n    {\r\n        standardize();\r\n        if(nChannels != 2)\r\n            throw new ErrorException(\"addSampleData: Sound is not stereo\");\r\n        if(ai.length != ai1.length)\r\n            throw new ErrorException(\"addSampleData: Channels have unequal length\");\r\n        int i = 2 * frameCount * 2;\r\n        frameCount += ai.length;\r\n        byte abyte0[] = new byte[2 * frameCount * 2];\r\n        if(i > 0)\r\n            System.arraycopy(data, 0, abyte0, 0, i);\r\n        data = abyte0;\r\n        for(int j = 0; j < ai.length; j++)\r\n        {\r\n            data[i++] = (byte)(ai[j] >> 8);\r\n            data[i++] = (byte)(ai[j] & 0xff);\r\n            data[i++] = (byte)(ai1[j] >> 8);\r\n            data[i++] = (byte)(ai1[j] & 0xff);\r\n        }\r\n\r\n    }\r\n\r\n    public String toString()\r\n    {\r\n        String s = soundName;\r\n        s = (new StringBuilder()).append(s).append(\" (\").toString();\r\n        s = (new StringBuilder()).append(s).append(nChannels != 1 ? \"stereo\" : \"mono\").toString();\r\n        s = (new StringBuilder()).append(s).append(\", \").toString();\r\n        s = (new StringBuilder()).append(s).append((new DecimalFormat(\"#0.00\")).format(getDuration())).toString();\r\n        s = (new StringBuilder()).append(s).append(\" sec)\").toString();\r\n        return s;\r\n    }\r\n\r\n    public static double sampleToIntensity(int i)\r\n    {\r\n        return Math.max(-1D, Math.min(1.0D, (double)i / 32767D));\r\n    }\r\n\r\n    public static int intensityToSample(double d)\r\n    {\r\n        return (int)Math.round(Math.max(-1D, Math.min(1.0D, d)) * 32767D);\r\n    }\r\n\r\n    protected byte[] getData()\r\n    {\r\n        return data;\r\n    }\r\n\r\n    protected AudioFormat getFormat()\r\n    {\r\n        return format;\r\n    }\r\n\r\n    protected AudioInputStream getAudioInputStream()\r\n    {\r\n        return new AudioInputStream(new ByteArrayInputStream(data), format, frameCount);\r\n    }\r\n\r\n    private void standardize()\r\n    {\r\n        if((double)frameRate == 22050D)\r\n            return;\r\n        double d = 22050D / (double)frameRate;\r\n        int i = (int)((double)frameCount * d);\r\n        byte abyte0[] = new byte[nChannels * i * 2];\r\n        int j = 0;\r\n        for(int k = 0; k < i; k++)\r\n        {\r\n            for(int l = 0; l < nChannels; l++)\r\n            {\r\n                int i1 = (int)((double)k / d) * 2 * nChannels + 2 * l;\r\n                int j1 = data[i1] << 8 | data[i1 + 1] & 0xff;\r\n                abyte0[j++] = (byte)(j1 >> 8);\r\n                abyte0[j++] = (byte)(j1 & 0xff);\r\n            }\r\n\r\n        }\r\n\r\n        data = abyte0;\r\n        frameCount = i;\r\n        format = new AudioFormat(frameRate, 16, nChannels, true, true);\r\n    }\r\n\r\n    private javax.sound.sampled.AudioFileFormat.Type getFormatForFile(String s)\r\n    {\r\n        s = s.toLowerCase();\r\n        if(s.endsWith(\".wav\"))\r\n            return javax.sound.sampled.AudioFileFormat.Type.WAVE;\r\n        if(s.endsWith(\".aif\"))\r\n            return javax.sound.sampled.AudioFileFormat.Type.AIFF;\r\n        if(s.endsWith(\".aiff\"))\r\n            return javax.sound.sampled.AudioFileFormat.Type.AIFF;\r\n        else\r\n            return javax.sound.sampled.AudioFileFormat.Type.AU;\r\n    }\r\n\r\n    private void readSound(AudioInputStream audioinputstream)\r\n    {\r\n        int i;\r\n        boolean flag;\r\n        format = audioinputstream.getFormat();\r\n        nChannels = format.getChannels();\r\n        frameRate = format.getFrameRate();\r\n        long l = audioinputstream.getFrameLength();\r\n        if(l > 0x7fffffffL)\r\n            throw new ErrorException(\"SoundClip: Sound file is too large\");\r\n        frameCount = (int)l;\r\n        if(frameCount < 0)\r\n            data = new byte[10000];\r\n        else\r\n            data = new byte[frameCount * nChannels * 2];\r\n        i = 0;\r\n        flag = false;\r\n_L4:\r\n        int j;\r\n        if(flag)\r\n            break; /* Loop/switch isn't completed */\r\n        j = data.length - i;\r\n_L2:\r\n        if(j <= 0)\r\n            break; /* Loop/switch isn't completed */\r\n        int k = audioinputstream.read(data, i, j);\r\n        if(k == 0)\r\n        {\r\n            flag = true;\r\n            break; /* Loop/switch isn't completed */\r\n        }\r\n        try\r\n        {\r\n            i += k;\r\n            j -= k;\r\n        }\r\n        catch(IOException ioexception)\r\n        {\r\n            throw new ErrorException(ioexception);\r\n        }\r\n        if(true) goto _L2; else goto _L1\r\n_L1:\r\n        if(frameCount >= 0)\r\n            flag = true;\r\n        if(!flag)\r\n        {\r\n            byte abyte1[] = new byte[2 * data.length];\r\n            System.arraycopy(data, 0, abyte1, 0, data.length);\r\n            data = abyte1;\r\n        }\r\n        if(true) goto _L4; else goto _L3\r\n_L3:\r\n        if(i < data.length && frameCount < 0)\r\n        {\r\n            byte abyte0[] = new byte[i];\r\n            System.arraycopy(data, 0, abyte0, 0, i);\r\n            data = abyte0;\r\n        }\r\n        if(frameCount < 0)\r\n            frameCount = i / (2 * nChannels);\r\n        return;\r\n    }\r\n\r\n    private AudioInputStream convertToPCM(AudioInputStream audioinputstream)\r\n    {\r\n        AudioFormat audioformat = audioinputstream.getFormat();\r\n        audioformat = new AudioFormat(audioformat.getSampleRate(), 16, audioformat.getChannels(), true, true);\r\n        return AudioSystem.getAudioInputStream(audioformat, audioinputstream);\r\n    }\r\n\r\n    private AudioInputStream getAudioInputStream(InputStream inputstream)\r\n    {\r\n        if(!(inputstream instanceof BufferedInputStream))\r\n            inputstream = new BufferedInputStream(inputstream);\r\n        return AudioSystem.getAudioInputStream(inputstream);\r\n        Object obj;\r\n        obj;\r\n        throw new ErrorException(createUnsupportedFormatMessage());\r\n        obj;\r\n        throw new ErrorException(((Exception) (obj)));\r\n    }\r\n\r\n    private AudioInputStream getAudioInputStream(File file)\r\n    {\r\n        return AudioSystem.getAudioInputStream(file);\r\n        Object obj;\r\n        obj;\r\n        throw new ErrorException(createUnsupportedFormatMessage());\r\n        obj;\r\n        throw new ErrorException(((Exception) (obj)));\r\n    }\r\n\r\n    private String createUnsupportedFormatMessage()\r\n    {\r\n        int i = soundName.lastIndexOf('.');\r\n        if(i == -1)\r\n            return \"Unsupported audio file format\";\r\n        else\r\n            return (new StringBuilder()).append(\"The \").append(soundName.substring(i + 1)).append(\" format is not supported by JavaSound\").toString();\r\n    }\r\n\r\n    public static final int MONO = 1;\r\n    public static final int STEREO = 2;\r\n    public static final int LEFT = 0;\r\n    public static final int RIGHT = 1;\r\n    public static final double STANDARD_FRAME_RATE = 22050D;\r\n    public static final int MAX_SAMPLE = 32767;\r\n    private static final int BYTES_PER_SAMPLE = 2;\r\n    private static final int BUFFER_INCREMENT = 10000;\r\n    private AudioFormat format;\r\n    private SoundPlayer player;\r\n    private String soundName;\r\n    private double clipVolume;\r\n    private float frameRate;\r\n    private int nChannels;\r\n    private int frameCount;\r\n    private int currentFrame;\r\n    private byte data[];\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/SoundPlayer.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   SoundClip.java\r\n\r\npackage acm.util;\r\n\r\nimport javax.sound.sampled.*;\r\n\r\n// Referenced classes of package acm.util:\r\n//            ErrorException, SoundClip\r\n\r\nclass SoundPlayer\r\n    implements Runnable\r\n{\r\n\r\n    public SoundPlayer(SoundClip soundclip)\r\n    {\r\n        soundClip = soundclip;\r\n        oldVolume = 1.0D;\r\n    }\r\n\r\n    public void play()\r\n    {\r\n        if(thread != null)\r\n        {\r\n            return;\r\n        } else\r\n        {\r\n            looping = false;\r\n            thread = new Thread(this);\r\n            thread.start();\r\n            return;\r\n        }\r\n    }\r\n\r\n    public void loop()\r\n    {\r\n        if(thread != null)\r\n        {\r\n            return;\r\n        } else\r\n        {\r\n            looping = true;\r\n            thread = new Thread(this);\r\n            thread.start();\r\n            return;\r\n        }\r\n    }\r\n\r\n    public void stop()\r\n    {\r\n        if(thread == null)\r\n        {\r\n            return;\r\n        } else\r\n        {\r\n            looping = false;\r\n            thread = null;\r\n            return;\r\n        }\r\n    }\r\n\r\n    public void run()\r\n    {\r\n        byte abyte0[] = soundClip.getData();\r\n        int i = soundClip.getChannelCount();\r\n        int j = soundClip.getFrameIndex() * i * 2;\r\n        int k = soundClip.getFrameCount() * i * 2;\r\n        SourceDataLine sourcedataline = openSourceDataLine(Math.min(4096, k));\r\n        sourcedataline.start();\r\n        do\r\n        {\r\n            if(thread == null)\r\n                break;\r\n            int j1;\r\n            for(int l = k - j; thread != null && l > 0; l -= j1)\r\n            {\r\n                setLineVolume(sourcedataline, soundClip.getVolume());\r\n                int i1 = Math.min(4096, l);\r\n                j1 = sourcedataline.write(abyte0, j, i1);\r\n                j += j1;\r\n            }\r\n\r\n            if(!looping)\r\n                break;\r\n            j = 0;\r\n        } while(true);\r\n        if(thread == null)\r\n            soundClip.setFrameIndex(j / i / 2);\r\n        abyte0 = new byte[400];\r\n        sourcedataline.write(abyte0, 0, abyte0.length);\r\n        sourcedataline.drain();\r\n        sourcedataline.stop();\r\n        sourcedataline.close();\r\n        thread = null;\r\n    }\r\n\r\n    private SourceDataLine openSourceDataLine(int i)\r\n    {\r\n        SourceDataLine sourcedataline;\r\n        javax.sound.sampled.AudioFormat audioformat = soundClip.getFormat();\r\n        Class class1 = Class.forName(\"javax.sound.sampled.SourceDataLine\");\r\n        javax.sound.sampled.DataLine.Info info = new javax.sound.sampled.DataLine.Info(class1, audioformat);\r\n        if(!AudioSystem.isLineSupported(info))\r\n            throw new ErrorException(\"SoundClip: Unsupported data line format\");\r\n        sourcedataline = (SourceDataLine)AudioSystem.getLine(info);\r\n        sourcedataline.open(audioformat, i);\r\n        return sourcedataline;\r\n        Exception exception;\r\n        exception;\r\n        throw new ErrorException(exception);\r\n    }\r\n\r\n    private void setLineVolume(SourceDataLine sourcedataline, double d)\r\n    {\r\n        if(oldVolume == d)\r\n            return;\r\n        oldVolume = d;\r\n        if(sourcedataline.isControlSupported(javax.sound.sampled.FloatControl.Type.VOLUME))\r\n        {\r\n            FloatControl floatcontrol = (FloatControl)sourcedataline.getControl(javax.sound.sampled.FloatControl.Type.VOLUME);\r\n            floatcontrol.setValue((float)d);\r\n        } else\r\n        if(sourcedataline.isControlSupported(javax.sound.sampled.FloatControl.Type.MASTER_GAIN))\r\n        {\r\n            FloatControl floatcontrol1 = (FloatControl)sourcedataline.getControl(javax.sound.sampled.FloatControl.Type.MASTER_GAIN);\r\n            double d1 = (20D * Math.log(Math.max(d, 9.9999999999999995E-007D))) / Math.log(10D);\r\n            floatcontrol1.setValue((float)d1);\r\n        }\r\n    }\r\n\r\n    private static final int PADDING = 400;\r\n    private static final int BYTES_PER_SAMPLE = 2;\r\n    private static final int MAX_BUFFER_SIZE = 4096;\r\n    private static final double EPSILON = 9.9999999999999995E-007D;\r\n    private SoundClip soundClip;\r\n    private Thread thread;\r\n    private boolean looping;\r\n    private double oldVolume;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/SpeedBarListener.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   Animator.java\r\n\r\npackage acm.util;\r\n\r\nimport java.awt.event.AdjustmentEvent;\r\nimport java.awt.event.AdjustmentListener;\r\nimport java.lang.reflect.Method;\r\nimport javax.swing.event.ChangeEvent;\r\nimport javax.swing.event.ChangeListener;\r\n\r\n// Referenced classes of package acm.util:\r\n//            ErrorException, Animator\r\n\r\nclass SpeedBarListener\r\n    implements AdjustmentListener, ChangeListener\r\n{\r\n\r\n    SpeedBarListener()\r\n    {\r\n    }\r\n\r\n    public static void register(Animator animator1, Object obj)\r\n    {\r\n        SpeedBarListener speedbarlistener = new SpeedBarListener();\r\n        speedbarlistener.animator = animator1;\r\n        speedbarlistener.speedBar = obj;\r\n        Class class1 = obj.getClass();\r\n        Method method = lookForMethod(class1, \"addAdjustmentListener\");\r\n        if(method == null)\r\n            method = lookForMethod(class1, \"addChangeListener\");\r\n        if(method == null)\r\n            method = lookForMethod(class1, \"addChangeListener\");\r\n        try\r\n        {\r\n            speedbarlistener.getValue = class1.getMethod(\"getValue\", new Class[0]);\r\n            speedbarlistener.getMinimum = class1.getMethod(\"getMinimum\", new Class[0]);\r\n            speedbarlistener.getMaximum = class1.getMethod(\"getMaximum\", new Class[0]);\r\n            Object aobj[] = {\r\n                speedbarlistener\r\n            };\r\n            method.invoke(obj, aobj);\r\n        }\r\n        catch(Exception exception)\r\n        {\r\n            throw new ErrorException(\"Illegal speed bar object\");\r\n        }\r\n        speedbarlistener.setSpeed();\r\n    }\r\n\r\n    public void adjustmentValueChanged(AdjustmentEvent adjustmentevent)\r\n    {\r\n        setSpeed();\r\n    }\r\n\r\n    public void stateChanged(ChangeEvent changeevent)\r\n    {\r\n        setSpeed();\r\n    }\r\n\r\n    public void setSpeed()\r\n    {\r\n        try\r\n        {\r\n            int i = ((Integer)getMinimum.invoke(speedBar, new Object[0])).intValue();\r\n            int j = ((Integer)getMaximum.invoke(speedBar, new Object[0])).intValue();\r\n            int k = ((Integer)getValue.invoke(speedBar, new Object[0])).intValue();\r\n            double d = (double)(k - i) / (double)(j - i);\r\n            animator.setSpeed(d);\r\n        }\r\n        catch(Exception exception)\r\n        {\r\n            throw new ErrorException(exception);\r\n        }\r\n    }\r\n\r\n    private static Method lookForMethod(Class class1, String s)\r\n    {\r\n        Method amethod[] = class1.getMethods();\r\n        for(int i = 0; i < amethod.length; i++)\r\n            if(s.equals(amethod[i].getName()))\r\n                return amethod[i];\r\n\r\n        return null;\r\n    }\r\n\r\n    private Animator animator;\r\n    private Object speedBar;\r\n    private Method getValue;\r\n    private Method getMinimum;\r\n    private Method getMaximum;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/SubmitOptions.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   JTFTools.java\r\n\r\npackage acm.util;\r\n\r\nimport acm.gui.TableLayout;\r\nimport acm.program.Program;\r\nimport java.awt.*;\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.lang.reflect.Field;\r\nimport java.net.Socket;\r\nimport javax.swing.*;\r\nimport javax.swing.event.DocumentEvent;\r\nimport javax.swing.event.DocumentListener;\r\nimport javax.swing.text.Document;\r\n\r\n// Referenced classes of package acm.util:\r\n//            JTFTools\r\n\r\nclass SubmitOptions\r\n    implements ActionListener, DocumentListener\r\n{\r\n\r\n    public SubmitOptions(Program program)\r\n    {\r\n        parent = program;\r\n        authorNameField = new JTextField();\r\n        authorEMailField = new JTextField();\r\n        instructorEMailField = new JTextField();\r\n        smtpServerField = new JTextField();\r\n        cancelButton = new JButton(\"Cancel\");\r\n        submitButton = new JButton(\"Submit\");\r\n        authorEMailField.getDocument().addDocumentListener(this);\r\n        instructorEMailField.getDocument().addDocumentListener(this);\r\n        smtpServerField.getDocument().addDocumentListener(this);\r\n        cancelButton.addActionListener(this);\r\n        submitButton.addActionListener(this);\r\n        initPreferences(program);\r\n    }\r\n\r\n    public String getAuthorName()\r\n    {\r\n        return authorNameField.getText().trim();\r\n    }\r\n\r\n    public String getAuthorEMail()\r\n    {\r\n        return authorEMailField.getText().trim();\r\n    }\r\n\r\n    public String getSubmissionEMail()\r\n    {\r\n        return instructorEMailField.getText().trim();\r\n    }\r\n\r\n    public String getSMTPServer()\r\n    {\r\n        return smtpServerField.getText().trim();\r\n    }\r\n\r\n    public boolean isComplete()\r\n    {\r\n        if(getAuthorEMail().indexOf('@') == -1)\r\n            return false;\r\n        if(getSubmissionEMail().indexOf('@') == -1)\r\n            return false;\r\n        return getSMTPServer().length() != 0;\r\n    }\r\n\r\n    public boolean popup()\r\n    {\r\n        java.awt.Frame frame = JTFTools.getEnclosingFrame(parent);\r\n        if(frame == null)\r\n        {\r\n            return false;\r\n        } else\r\n        {\r\n            dialog = new JDialog(frame, \"Submit Project Options\", true);\r\n            Container container = dialog.getContentPane();\r\n            container.setLayout(new TableLayout(6, 2, 0, 4));\r\n            container.add(new JLabel(\"Instructor email \", 4));\r\n            container.add(instructorEMailField, \"width=300\");\r\n            container.add(new JLabel(\"Author name \", 4));\r\n            container.add(authorNameField, \"width=300\");\r\n            container.add(new JLabel(\"Author email \", 4));\r\n            container.add(authorEMailField, \"width=300\");\r\n            container.add(new JLabel(\"SMTP server \", 4));\r\n            container.add(smtpServerField, \"width=300\");\r\n            JPanel jpanel = new JPanel();\r\n            jpanel.setLayout(new FlowLayout());\r\n            jpanel.add(cancelButton);\r\n            jpanel.add(submitButton);\r\n            container.add(new JLabel(\"\"));\r\n            container.add(jpanel, \"top=10\");\r\n            dialog.setSize(500, 230);\r\n            submitFlag = false;\r\n            submitButton.setEnabled(isComplete());\r\n            dialog.setVisible(true);\r\n            return submitFlag;\r\n        }\r\n    }\r\n\r\n    public void actionPerformed(ActionEvent actionevent)\r\n    {\r\n        submitFlag = actionevent.getSource() == submitButton;\r\n        dialog.setVisible(false);\r\n    }\r\n\r\n    public void changedUpdate(DocumentEvent documentevent)\r\n    {\r\n        submitButton.setEnabled(isComplete());\r\n    }\r\n\r\n    public void removeUpdate(DocumentEvent documentevent)\r\n    {\r\n        submitButton.setEnabled(isComplete());\r\n    }\r\n\r\n    public void insertUpdate(DocumentEvent documentevent)\r\n    {\r\n        submitButton.setEnabled(isComplete());\r\n    }\r\n\r\n    private void initPreferences(Program program)\r\n    {\r\n        instructorEMailField.setText(getDefaultField(\"INSTRUCTOR_EMAIL\", program));\r\n        authorNameField.setText(getDefaultField(\"AUTHOR_NAME\", program));\r\n        String s = getDefaultField(\"AUTHOR_EMAIL\", program);\r\n        if(s.length() == 0)\r\n        {\r\n            s = System.getProperty(\"user.name\");\r\n            if(s == null)\r\n            {\r\n                s = \"\";\r\n            } else\r\n            {\r\n                String s1 = JTFTools.getLocalHostName();\r\n                if(s1 != null)\r\n                    s = (new StringBuilder()).append(s).append(\"@\").append(s1).toString();\r\n            }\r\n        }\r\n        authorEMailField.setText(s);\r\n        String s2 = getDefaultField(\"SMTP_SERVER\", program);\r\n        if(s2.length() == 0)\r\n        {\r\n            s2 = System.getProperty(\"mail.smtp.host\");\r\n            if(s2 == null)\r\n            {\r\n                String s3 = JTFTools.getLocalHostName();\r\n                if(s3 == null)\r\n                {\r\n                    s2 = \"\";\r\n                } else\r\n                {\r\n                    s2 = (new StringBuilder()).append(\"smtp.\").append(s3.substring(s3.indexOf('.') + 1)).toString();\r\n                    try\r\n                    {\r\n                        (new Socket(s2, 25)).close();\r\n                    }\r\n                    catch(Exception exception)\r\n                    {\r\n                        s2 = \"\";\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        smtpServerField.setText(s2);\r\n    }\r\n\r\n    private String getDefaultField(String s, Program program)\r\n    {\r\n        String s1;\r\n        Field field = program.getClass().getField(s);\r\n        s1 = (String)field.get(program);\r\n        if(s1 != null && s1.trim().length() != 0)\r\n            return s1;\r\n        break MISSING_BLOCK_LABEL_42;\r\n        Exception exception;\r\n        exception;\r\n        return \"\";\r\n    }\r\n\r\n    private static final int FIELD_WIDTH = 300;\r\n    private static final int DIALOG_WIDTH = 500;\r\n    private static final int DIALOG_HEIGHT = 230;\r\n    private static final int SMTP_PORT = 25;\r\n    private Component parent;\r\n    private JDialog dialog;\r\n    private JTextField authorNameField;\r\n    private JTextField authorEMailField;\r\n    private JTextField instructorEMailField;\r\n    private JTextField smtpServerField;\r\n    private JButton cancelButton;\r\n    private JButton submitButton;\r\n    private boolean submitFlag;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/SunAudioClip.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   MediaTools.java\r\n\r\npackage acm.util;\r\n\r\nimport java.applet.AudioClip;\r\nimport java.io.InputStream;\r\nimport java.lang.reflect.*;\r\n\r\nclass SunAudioClip\r\n    implements AudioClip\r\n{\r\n\r\n    public SunAudioClip(InputStream inputstream)\r\n    {\r\n        if(!initialized)\r\n        {\r\n            initStaticData();\r\n            initialized = true;\r\n        }\r\n        try\r\n        {\r\n            Object aobj[] = {\r\n                inputstream\r\n            };\r\n            Object obj = audioDataConstructor.newInstance(aobj);\r\n            audioData = getData.invoke(obj, new Object[0]);\r\n            player = audioPlayerClass.getField(\"player\").get(null);\r\n            Class aclass[] = {\r\n                Class.forName(\"java.io.InputStream\")\r\n            };\r\n            audioPlayerStart = player.getClass().getMethod(\"start\", aclass);\r\n            audioPlayerStop = player.getClass().getMethod(\"stop\", aclass);\r\n        }\r\n        catch(Exception exception) { }\r\n    }\r\n\r\n    public void play()\r\n    {\r\n        try\r\n        {\r\n            Object aobj[] = {\r\n                audioData\r\n            };\r\n            audioDataStream = audioDataStreamConstructor.newInstance(aobj);\r\n            aobj[0] = audioDataStream;\r\n            audioPlayerStart.invoke(player, aobj);\r\n        }\r\n        catch(Exception exception) { }\r\n    }\r\n\r\n    public void loop()\r\n    {\r\n        try\r\n        {\r\n            Object aobj[] = {\r\n                audioData\r\n            };\r\n            continuousAudioDataStream = continuousAudioDataStreamConstructor.newInstance(aobj);\r\n            aobj[0] = continuousAudioDataStream;\r\n            audioPlayerStart.invoke(player, aobj);\r\n        }\r\n        catch(Exception exception) { }\r\n    }\r\n\r\n    public void stop()\r\n    {\r\n        try\r\n        {\r\n            Object aobj[] = new Object[1];\r\n            if(continuousAudioDataStream != null)\r\n            {\r\n                aobj[0] = audioDataStream;\r\n                audioPlayerStop.invoke(player, aobj);\r\n            }\r\n            if(audioDataStream != null)\r\n            {\r\n                aobj[0] = continuousAudioDataStream;\r\n                audioPlayerStop.invoke(player, aobj);\r\n            }\r\n        }\r\n        catch(Exception exception) { }\r\n    }\r\n\r\n    private static void initStaticData()\r\n    {\r\n        try\r\n        {\r\n            audioPlayerClass = Class.forName(\"sun.audio.AudioPlayer\");\r\n            audioStreamClass = Class.forName(\"sun.audio.AudioStream\");\r\n            audioDataClass = Class.forName(\"sun.audio.AudioData\");\r\n            audioDataStreamClass = Class.forName(\"sun.audio.AudioDataStream\");\r\n            continuousAudioDataStreamClass = Class.forName(\"sun.audio.ContinuousAudioDataStream\");\r\n            Class aclass[] = {\r\n                Class.forName(\"java.io.InputStream\")\r\n            };\r\n            audioDataConstructor = audioStreamClass.getConstructor(aclass);\r\n            getData = audioStreamClass.getMethod(\"getData\", new Class[0]);\r\n            Class aclass1[] = {\r\n                audioDataClass\r\n            };\r\n            audioDataStreamConstructor = audioDataStreamClass.getConstructor(aclass1);\r\n            continuousAudioDataStreamConstructor = continuousAudioDataStreamClass.getConstructor(aclass1);\r\n        }\r\n        catch(Exception exception) { }\r\n    }\r\n\r\n    private static boolean initialized;\r\n    private static Class audioPlayerClass;\r\n    private static Class audioStreamClass;\r\n    private static Class audioDataClass;\r\n    private static Class audioDataStreamClass;\r\n    private static Class continuousAudioDataStreamClass;\r\n    private static Constructor audioDataConstructor;\r\n    private static Constructor audioDataStreamConstructor;\r\n    private static Constructor continuousAudioDataStreamConstructor;\r\n    private static Method getData;\r\n    private Object player;\r\n    private Object audioData;\r\n    private Object audioDataStream;\r\n    private Object continuousAudioDataStream;\r\n    private Method audioPlayerStart;\r\n    private Method audioPlayerStop;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/SwingTimer.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   SwingTimer.java\r\n\r\npackage acm.util;\r\n\r\nimport java.awt.event.ActionListener;\r\nimport javax.swing.Timer;\r\n\r\npublic class SwingTimer extends Timer\r\n{\r\n\r\n    public SwingTimer(int i, ActionListener actionlistener)\r\n    {\r\n        super(i, actionlistener);\r\n    }\r\n\r\n    static final long serialVersionUID = 1L;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/TIFFImageSaver.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   MediaTools.java\r\n\r\npackage acm.util;\r\n\r\nimport java.awt.Image;\r\n\r\n// Referenced classes of package acm.util:\r\n//            ImageSaver, MediaTools\r\n\r\nclass TIFFImageSaver extends ImageSaver\r\n{\r\n\r\n    TIFFImageSaver()\r\n    {\r\n    }\r\n\r\n    public void saveImage(Image image)\r\n    {\r\n        pixels = MediaTools.getPixelArray(image);\r\n        width = pixels[0].length;\r\n        height = pixels.length;\r\n        calculateOffsets();\r\n        dumpHeader();\r\n        dumpIFD();\r\n        dumpNullIFD();\r\n        dumpBitsPerSampleData();\r\n        dumpResolutionData();\r\n        dumpStripPointers();\r\n        dumpStripByteCounts();\r\n        dumpStripData();\r\n    }\r\n\r\n    private void dumpHeader()\r\n    {\r\n        dumpByte(77);\r\n        dumpByte(77);\r\n        dumpShort(42);\r\n        dumpLong(8);\r\n    }\r\n\r\n    private void dumpIFD()\r\n    {\r\n        dumpShort(13);\r\n        dumpIFDNewSubFileType();\r\n        dumpIFDImageWidth();\r\n        dumpIFDImageHeight();\r\n        dumpIFDBitsPerSample();\r\n        dumpIFDCompression();\r\n        dumpIFDPhotometricInterpration();\r\n        dumpIFDStripPointers();\r\n        dumpIFDSamplesPerPixel();\r\n        dumpIFDRowsPerStrip();\r\n        dumpIFDStripByteCounts();\r\n        dumpIFDXResolution();\r\n        dumpIFDYResolution();\r\n        dumpIFDResolutionUnit();\r\n    }\r\n\r\n    private void dumpIFDNewSubFileType()\r\n    {\r\n        dumpShort(254);\r\n        dumpShort(4);\r\n        dumpLong(1);\r\n        dumpLong(0);\r\n    }\r\n\r\n    private void dumpIFDImageWidth()\r\n    {\r\n        dumpShort(256);\r\n        dumpShort(4);\r\n        dumpLong(1);\r\n        dumpLong(width);\r\n    }\r\n\r\n    private void dumpIFDImageHeight()\r\n    {\r\n        dumpShort(257);\r\n        dumpShort(4);\r\n        dumpLong(1);\r\n        dumpLong(height);\r\n    }\r\n\r\n    private void dumpIFDBitsPerSample()\r\n    {\r\n        dumpShort(258);\r\n        dumpShort(4);\r\n        dumpLong(3);\r\n        dumpLong(offsetBitsPerSample);\r\n    }\r\n\r\n    private void dumpIFDCompression()\r\n    {\r\n        dumpShort(259);\r\n        dumpShort(3);\r\n        dumpLong(1);\r\n        dumpShort(1);\r\n        dumpShort(0);\r\n    }\r\n\r\n    private void dumpIFDPhotometricInterpration()\r\n    {\r\n        dumpShort(262);\r\n        dumpShort(3);\r\n        dumpLong(1);\r\n        dumpShort(2);\r\n        dumpShort(0);\r\n    }\r\n\r\n    private void dumpIFDStripPointers()\r\n    {\r\n        dumpShort(273);\r\n        dumpShort(4);\r\n        dumpLong(height);\r\n        dumpLong(offsetStripPointers);\r\n    }\r\n\r\n    private void dumpIFDSamplesPerPixel()\r\n    {\r\n        dumpShort(277);\r\n        dumpShort(3);\r\n        dumpLong(1);\r\n        dumpShort(3);\r\n        dumpShort(0);\r\n    }\r\n\r\n    private void dumpIFDRowsPerStrip()\r\n    {\r\n        dumpShort(278);\r\n        dumpShort(4);\r\n        dumpLong(1);\r\n        dumpLong(1);\r\n    }\r\n\r\n    private void dumpIFDStripByteCounts()\r\n    {\r\n        dumpShort(279);\r\n        dumpShort(4);\r\n        dumpLong(height);\r\n        dumpLong(offsetStripByteCounts);\r\n    }\r\n\r\n    private void dumpIFDXResolution()\r\n    {\r\n        dumpShort(282);\r\n        dumpShort(5);\r\n        dumpLong(1);\r\n        dumpLong(offsetXResolution);\r\n    }\r\n\r\n    private void dumpIFDYResolution()\r\n    {\r\n        dumpShort(283);\r\n        dumpShort(5);\r\n        dumpLong(1);\r\n        dumpLong(offsetYResolution);\r\n    }\r\n\r\n    private void dumpIFDResolutionUnit()\r\n    {\r\n        dumpShort(296);\r\n        dumpShort(3);\r\n        dumpLong(1);\r\n        dumpShort(1);\r\n        dumpShort(0);\r\n    }\r\n\r\n    private void dumpNullIFD()\r\n    {\r\n        dumpLong(0);\r\n    }\r\n\r\n    private void dumpBitsPerSampleData()\r\n    {\r\n        dumpLong(8);\r\n        dumpLong(8);\r\n        dumpLong(8);\r\n    }\r\n\r\n    private void dumpResolutionData()\r\n    {\r\n        dumpLong(72);\r\n        dumpLong(1);\r\n        dumpLong(72);\r\n        dumpLong(1);\r\n    }\r\n\r\n    private void dumpStripPointers()\r\n    {\r\n        for(int i = 0; i < height; i++)\r\n            dumpLong(offsetData + i * stripDelta);\r\n\r\n    }\r\n\r\n    private void dumpStripByteCounts()\r\n    {\r\n        for(int i = 0; i < height; i++)\r\n            dumpLong(3 * width);\r\n\r\n    }\r\n\r\n    private void dumpStripData()\r\n    {\r\n        for(int i = 0; i < height; i++)\r\n        {\r\n            for(int j = 0; j < width; j++)\r\n            {\r\n                int l = pixels[i][j];\r\n                dumpByte(getPixelComponent(l, 'R'));\r\n                dumpByte(getPixelComponent(l, 'G'));\r\n                dumpByte(getPixelComponent(l, 'B'));\r\n            }\r\n\r\n            for(int k = 3 * width; k < stripDelta; k++)\r\n                dumpByte(0);\r\n\r\n        }\r\n\r\n    }\r\n\r\n    private void calculateOffsets()\r\n    {\r\n        offsetIFD = 8;\r\n        offsetNullIFD = offsetIFD + 156 + 2;\r\n        offsetBitsPerSample = offsetNullIFD + 4;\r\n        offsetXResolution = offsetBitsPerSample + 12;\r\n        offsetYResolution = offsetXResolution + 8;\r\n        offsetStripPointers = offsetYResolution + 8;\r\n        offsetStripByteCounts = offsetStripPointers + 4 * height;\r\n        offsetData = offsetStripByteCounts + 4 * height;\r\n        stripDelta = 3 * width + 3 & -4;\r\n    }\r\n\r\n    private static final int HEADER_SIZE = 8;\r\n    private static final int IFD_OP_COUNT = 13;\r\n    public static final int TT_BYTE = 1;\r\n    public static final int TT_ASCII = 2;\r\n    public static final int TT_SHORT = 3;\r\n    public static final int TT_LONG = 4;\r\n    public static final int TT_RATIONAL = 5;\r\n    private int pixels[][];\r\n    private int width;\r\n    private int height;\r\n    private int offsetIFD;\r\n    private int offsetNullIFD;\r\n    private int offsetBitsPerSample;\r\n    private int offsetXResolution;\r\n    private int offsetYResolution;\r\n    private int offsetStripPointers;\r\n    private int offsetStripByteCounts;\r\n    private int offsetData;\r\n    private int stripDelta;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/TIFImageSaver.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   MediaTools.java\r\n\r\npackage acm.util;\r\n\r\n\r\n// Referenced classes of package acm.util:\r\n//            TIFFImageSaver\r\n\r\nclass TIFImageSaver extends TIFFImageSaver\r\n{\r\n\r\n    TIFImageSaver()\r\n    {\r\n    }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/ThreadedMenuAction.java",
    "content": "// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.\r\n// Jad home page: http://www.kpdus.com/jad.html\r\n// Decompiler options: packimports(3) \r\n// Source File Name:   JTFTools.java\r\n\r\npackage acm.util;\r\n\r\nimport acm.io.IOConsole;\r\nimport acm.io.IOModel;\r\nimport acm.program.Program;\r\nimport java.io.*;\r\n\r\n// Referenced classes of package acm.util:\r\n//            ProgressBarDialog, ErrorException, JTFTools\r\n\r\nclass ThreadedMenuAction\r\n    implements Runnable\r\n{\r\n\r\n    public ThreadedMenuAction(Program program, String s)\r\n    {\r\n        targetProgram = program;\r\n        actionCommand = s;\r\n    }\r\n\r\n    public void run()\r\n    {\r\n        ProgressBarDialog progressbardialog = new ProgressBarDialog(targetProgram);\r\n        try\r\n        {\r\n            if(actionCommand.equals(\"Export Applet\"))\r\n                JTFTools.exportApplet(targetProgram, progressbardialog.getProgressBar());\r\n            else\r\n            if(actionCommand.equals(\"Submit Project\"))\r\n                JTFTools.submitProject(targetProgram, progressbardialog.getProgressBar());\r\n        }\r\n        catch(Exception exception)\r\n        {\r\n            progressbardialog.setVisible(false);\r\n            Object obj = targetProgram.getDialog();\r\n            if(obj == null)\r\n                obj = targetProgram.getConsole();\r\n            if(obj == null)\r\n                obj = IOConsole.SYSTEM_CONSOLE;\r\n            String s = exception.getMessage();\r\n            if(!(exception instanceof ErrorException))\r\n            {\r\n                s = (new StringBuilder()).append(\"\").append(exception).toString();\r\n                StringWriter stringwriter = new StringWriter();\r\n                PrintWriter printwriter = new PrintWriter(stringwriter);\r\n                exception.printStackTrace(printwriter);\r\n                printwriter.close();\r\n                try\r\n                {\r\n                    BufferedReader bufferedreader = new BufferedReader(new StringReader(stringwriter.toString()));\r\n                    bufferedreader.readLine();\r\n                    s = (new StringBuilder()).append(s).append(bufferedreader.readLine()).toString();\r\n                }\r\n                catch(IOException ioexception) { }\r\n            }\r\n            ((IOModel) (obj)).showErrorMessage(s);\r\n        }\r\n    }\r\n\r\n    private Program targetProgram;\r\n    private String actionCommand;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/acm/util/TokenScanner.java",
    "content": "package acm.util;\r\n\r\nimport java.io.*;\r\nimport java.util.ArrayList;\r\nimport java.util.Stack;\r\n\r\n// Referenced classes of package acm.util:\r\n//            ErrorException\r\n\r\npublic class TokenScanner\r\n{\r\n\r\n    public TokenScanner()\r\n    {\r\n        ignoreWhitespaceFlag = false;\r\n        ignoreCommentsFlag = false;\r\n        scanNumbersFlag = false;\r\n        scanStringsFlag = false;\r\n        cpos = 0;\r\n        input = null;\r\n        wordChars = \"\";\r\n        savedTokens = new Stack();\r\n        operators = new ArrayList();\r\n    }\r\n\r\n    public TokenScanner(String s)\r\n    {\r\n        this();\r\n        setInput(s);\r\n    }\r\n\r\n    public TokenScanner(Reader reader)\r\n    {\r\n        this();\r\n        setInput(reader);\r\n    }\r\n\r\n    public void setInput(String s)\r\n    {\r\n        setInput(((Reader) (new StringReader(s))));\r\n    }\r\n\r\n    public void setInput(Reader reader)\r\n    {\r\n        savedChars = \"\";\r\n        savedTokens.clear();\r\n        cpos = 0;\r\n        input = reader;\r\n    }\r\n\r\n    public boolean hasMoreTokens()\r\n    {\r\n        String s = nextToken();\r\n        saveToken(s);\r\n        return !s.isEmpty();\r\n    }\r\n\r\n    public String nextToken()\r\n    {\r\n        if(!savedTokens.isEmpty())\r\n            return (String)savedTokens.pop();\r\n        else\r\n            return scanToken();\r\n    }\r\n\r\n    public void saveToken(String s)\r\n    {\r\n        savedTokens.push(s);\r\n    }\r\n\r\n    public int getPosition()\r\n    {\r\n        if(savedTokens.isEmpty())\r\n            return cpos;\r\n        else\r\n            return cpos - ((String)savedTokens.peek()).length();\r\n    }\r\n\r\n    public void ignoreWhitespace()\r\n    {\r\n        ignoreWhitespaceFlag = true;\r\n    }\r\n\r\n    public void ignoreComments()\r\n    {\r\n        ignoreCommentsFlag = true;\r\n    }\r\n\r\n    public void scanNumbers()\r\n    {\r\n        scanNumbersFlag = true;\r\n    }\r\n\r\n    public void scanStrings()\r\n    {\r\n        scanStringsFlag = true;\r\n    }\r\n\r\n    public void addWordCharacters(String s)\r\n    {\r\n        int i = 0;\r\n_L3:\r\n        if(i >= s.length()) goto _L2; else goto _L1\r\n_L1:\r\n        char c;\r\n        c = s.charAt(i);\r\n        if(wordChars.indexOf(c) != -1)\r\n            continue; /* Loop/switch isn't completed */\r\n        new StringBuilder();\r\n        this;\r\n        JVM INSTR dup_x1 ;\r\n        wordChars;\r\n        append();\r\n        c;\r\n        append();\r\n        toString();\r\n        wordChars;\r\n        i++;\r\n          goto _L3\r\n_L2:\r\n    }\r\n\r\n    public boolean isWordCharacter(int i)\r\n    {\r\n        if(i == -1)\r\n            return false;\r\n        else\r\n            return Character.isLetterOrDigit(i) || wordChars.indexOf((char)i) >= 0;\r\n    }\r\n\r\n    public void addOperator(String s)\r\n    {\r\n        operators.add(s);\r\n    }\r\n\r\n    public void verifyToken(String s)\r\n    {\r\n        String s1 = nextToken();\r\n        if(s1.equals(s))\r\n        {\r\n            return;\r\n        } else\r\n        {\r\n            String s2 = (new StringBuilder()).append(\"Found \").append(s1).append(\" when expecting \").append(s).toString();\r\n            throw new ErrorException(s2);\r\n        }\r\n    }\r\n\r\n    public int getTokenType(String s)\r\n    {\r\n        if(s == null || s.length() == 0)\r\n            return -1;\r\n        char c = s.charAt(0);\r\n        if(Character.isWhitespace(c))\r\n            return 0;\r\n        if(Character.isDigit(c))\r\n            return 2;\r\n        if(c == '\"' || c == '\\'')\r\n            return 3;\r\n        return !isWordCharacter(c) ? 4 : 1;\r\n    }\r\n\r\n    public int getChar()\r\n    {\r\n        char c;\r\n        cpos++;\r\n        if(savedChars.isEmpty())\r\n            break MISSING_BLOCK_LABEL_43;\r\n        c = savedChars.charAt(0);\r\n        savedChars = savedChars.substring(1);\r\n        return c;\r\n        return input.read();\r\n        IOException ioexception;\r\n        ioexception;\r\n        throw new ErrorException(ioexception);\r\n    }\r\n\r\n    public void ungetChar(int i)\r\n    {\r\n        cpos--;\r\n        if(input instanceof PushbackReader)\r\n            try\r\n            {\r\n                ((PushbackReader)input).unread(i);\r\n                return;\r\n            }\r\n            catch(IOException ioexception) { }\r\n        if(i >= 0)\r\n            savedChars = (new StringBuilder()).append((char)i).append(savedChars).toString();\r\n    }\r\n\r\n    public String getStringValue(String s)\r\n    {\r\n        String s1 = \"\";\r\n        boolean flag = false;\r\n        int i = s.length();\r\n        if(i > 1 && (s.charAt(0) == '\"' || s.charAt(0) == '\\''))\r\n        {\r\n            flag = true;\r\n            i--;\r\n        }\r\n        for(int j = ((flag) ? 1 : 0); j < i; j++)\r\n        {\r\n            char c = s.charAt(j);\r\n            if(c == '\\\\')\r\n            {\r\n                c = s.charAt(++j);\r\n                if(Character.isDigit(c) || c == 'x')\r\n                {\r\n                    byte byte0 = 8;\r\n                    byte byte1 = 3;\r\n                    if(c == 'x')\r\n                    {\r\n                        byte0 = 16;\r\n                        byte1 = 2;\r\n                        j++;\r\n                    }\r\n                    int k = 0;\r\n                    boolean flag1 = false;\r\n                    for(int i1 = Math.min(i, j + byte1); j < i1; j++)\r\n                    {\r\n                        c = s.charAt(j);\r\n                        int l;\r\n                        if(Character.isDigit(c))\r\n                            l = c - 48;\r\n                        else\r\n                        if(byte0 == 16 && c >= 'A' && c <= 'F')\r\n                        {\r\n                            l = (c - 65) + 10;\r\n                        } else\r\n                        {\r\n                            if(byte0 != 16 || c < 'a' || c > 'f')\r\n                                break;\r\n                            l = (c - 97) + 10;\r\n                        }\r\n                        k = byte0 * k + l;\r\n                    }\r\n\r\n                    c = (char)k;\r\n                    j--;\r\n                } else\r\n                {\r\n                    switch(c)\r\n                    {\r\n                    case 97: // 'a'\r\n                        c = '\\007';\r\n                        break;\r\n\r\n                    case 98: // 'b'\r\n                        c = '\\b';\r\n                        break;\r\n\r\n                    case 102: // 'f'\r\n                        c = '\\f';\r\n                        break;\r\n\r\n                    case 110: // 'n'\r\n                        c = '\\n';\r\n                        break;\r\n\r\n                    case 114: // 'r'\r\n                        c = '\\r';\r\n                        break;\r\n\r\n                    case 116: // 't'\r\n                        c = '\\t';\r\n                        break;\r\n\r\n                    case 118: // 'v'\r\n                        c = '\\013';\r\n                        break;\r\n\r\n                    case 34: // '\"'\r\n                        c = '\"';\r\n                        break;\r\n\r\n                    case 39: // '\\''\r\n                        c = '\\'';\r\n                        break;\r\n\r\n                    case 92: // '\\\\'\r\n                        c = '\\\\';\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n            s1 = (new StringBuilder()).append(s1).append(c).toString();\r\n        }\r\n\r\n        return s1;\r\n    }\r\n\r\n    private String scanToken()\r\n    {\r\n        int i = scanChar();\r\n        if(i == -1)\r\n            return \"\";\r\n        if(scanNumbersFlag && Character.isDigit(i))\r\n        {\r\n            ungetChar(i);\r\n            return scanNumber();\r\n        }\r\n        if(isWordCharacter(i))\r\n        {\r\n            ungetChar(i);\r\n            return scanWord();\r\n        }\r\n        if(scanStringsFlag && (i == 34 || i == 39))\r\n        {\r\n            ungetChar(i);\r\n            return scanString();\r\n        }\r\n        String s = (new StringBuilder()).append(\"\").append((char)i).toString();\r\n        do\r\n        {\r\n            if(!isOperatorPrefix(s))\r\n                break;\r\n            int j = getChar();\r\n            if(j == -1)\r\n                break;\r\n            s = (new StringBuilder()).append(s).append((char)j).toString();\r\n        } while(true);\r\n        for(; s.length() > 1 && !isOperator(s); s = s.substring(0, s.length() - 1))\r\n            ungetChar(s.charAt(s.length() - 1));\r\n\r\n        return s;\r\n    }\r\n\r\n    private int scanChar()\r\n    {\r\n        int i;\r\nlabel0:\r\n        {\r\n            boolean flag = false;\r\n            boolean flag1 = false;\r\n            int k;\r\n            do\r\n            {\r\n                do\r\n                    i = getChar();\r\n                while(ignoreWhitespaceFlag && Character.isWhitespace(i) && !isOperator(Character.toString((char)i)));\r\n                if(flag)\r\n                {\r\n                    int j = getChar();\r\n                    if(i == 42 && j == 47)\r\n                        flag = false;\r\n                    else\r\n                        ungetChar(j);\r\n                    continue;\r\n                }\r\n                if(flag1)\r\n                {\r\n                    if(i == 10 || i == 13)\r\n                        flag1 = false;\r\n                    continue;\r\n                }\r\n                if(!ignoreCommentsFlag || i != 47)\r\n                    break label0;\r\n                k = getChar();\r\n                if(k == 42)\r\n                {\r\n                    flag = true;\r\n                    continue;\r\n                }\r\n                if(k != 47)\r\n                    break;\r\n                flag1 = true;\r\n            } while(true);\r\n            ungetChar(k);\r\n        }\r\n        return i;\r\n    }\r\n\r\n    private String scanWord()\r\n    {\r\n        String s = \"\";\r\n        int i;\r\n        for(i = getChar(); isWordCharacter(i); i = getChar())\r\n            s = (new StringBuilder()).append(s).append((char)i).toString();\r\n\r\n        ungetChar(i);\r\n        return s;\r\n    }\r\n\r\n    private String scanNumber()\r\n    {\r\n        String s = \"\";\r\n        int i = 0;\r\n        int j = 69;\r\n        do\r\n        {\r\n            if(i == 6)\r\n                break;\r\n            int k = getChar();\r\n            switch(i)\r\n            {\r\n            case 0: // '\\0'\r\n                if(k == 48)\r\n                {\r\n                    int l = getChar();\r\n                    if(l == 120 || l == 88)\r\n                    {\r\n                        s = \"0x\";\r\n                        continue;\r\n                    }\r\n                    ungetChar(l);\r\n                }\r\n                i = 1;\r\n                break;\r\n\r\n            case 1: // '\\001'\r\n                if(k == 46)\r\n                    i = 2;\r\n                else\r\n                if(k == 69 || k == 101)\r\n                    i = 3;\r\n                else\r\n                if(!Character.isDigit(k))\r\n                    i = 6;\r\n                break;\r\n\r\n            case 2: // '\\002'\r\n                if(k == 69 || k == 101)\r\n                {\r\n                    j = k;\r\n                    i = 3;\r\n                } else\r\n                if(!Character.isDigit(k))\r\n                    i = 6;\r\n                break;\r\n\r\n            case 3: // '\\003'\r\n                if(k == 43 || k == 45)\r\n                    i = 4;\r\n                else\r\n                if(Character.isDigit(k))\r\n                    i = 5;\r\n                else\r\n                    i = 6;\r\n                break;\r\n\r\n            case 4: // '\\004'\r\n                if(Character.isDigit(k))\r\n                {\r\n                    i = 5;\r\n                } else\r\n                {\r\n                    ungetChar(k);\r\n                    k = j;\r\n                    i = 6;\r\n                }\r\n                break;\r\n\r\n            case 5: // '\\005'\r\n                if(!Character.isDigit(k))\r\n                    i = 6;\r\n                break;\r\n            }\r\n            if(i == 6)\r\n            {\r\n                ungetChar(k);\r\n                break;\r\n            }\r\n            s = (new StringBuilder()).append(s).append((char)k).toString();\r\n        } while(true);\r\n        return s;\r\n    }\r\n\r\n    private String scanString()\r\n    {\r\n        char c = (char)getChar();\r\n        String s = (new StringBuilder()).append(\"\").append(c).toString();\r\n        int i = 0;\r\n        do\r\n        {\r\n            int j = getChar();\r\n            if(j != -1 && (j != c || i == 92))\r\n            {\r\n                s = (new StringBuilder()).append(s).append((char)j).toString();\r\n                i = j;\r\n            } else\r\n            {\r\n                return (new StringBuilder()).append(s).append(c).toString();\r\n            }\r\n        } while(true);\r\n    }\r\n\r\n    private boolean isOperator(String s)\r\n    {\r\n        for(int i = 0; i < operators.size(); i++)\r\n            if(((String)operators.get(i)).equals(s))\r\n                return true;\r\n\r\n        return false;\r\n    }\r\n\r\n    private boolean isOperatorPrefix(String s)\r\n    {\r\n        for(int i = 0; i < operators.size(); i++)\r\n            if(((String)operators.get(i)).startsWith(s))\r\n                return true;\r\n\r\n        return false;\r\n    }\r\n\r\n    public static final int EOF = -1;\r\n    public static final int SEPARATOR = 0;\r\n    public static final int WORD = 1;\r\n    public static final int NUMBER = 2;\r\n    public static final int STRING = 3;\r\n    public static final int OPERATOR = 4;\r\n    private static final int INITIAL_STATE = 0;\r\n    private static final int BEFORE_DECIMAL_POINT = 1;\r\n    private static final int AFTER_DECIMAL_POINT = 2;\r\n    private static final int STARTING_EXPONENT = 3;\r\n    private static final int FOUND_EXPONENT_SIGN = 4;\r\n    private static final int SCANNING_EXPONENT = 5;\r\n    private static final int FINAL_STATE = 6;\r\n    private Reader input;\r\n    private String wordChars;\r\n    private String savedChars;\r\n    private Stack savedTokens;\r\n    private ArrayList operators;\r\n    private int cpos;\r\n    private boolean ignoreWhitespaceFlag;\r\n    private boolean ignoreCommentsFlag;\r\n    private boolean scanNumbersFlag;\r\n    private boolean scanStringsFlag;\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/File_openFileDialog.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\nimport java.io.PrintStream;\r\n\r\nclass File_openFileDialog\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str1 = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    String str2 = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    String str3 = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    System.out.println(\"result:\" + paramJavaBackEnd.openFileDialog(str1, str2, str3));\r\n    System.out.flush();\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/G3DRect_create.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.G3DRect;\r\nimport acm.util.TokenScanner;\r\n\r\nclass G3DRect_create\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d1 = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d2 = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    boolean bool = paramTokenScanner.nextToken().equals(\"true\");\r\n    paramTokenScanner.verifyToken(\")\");\r\n    G3DRect localG3DRect = new G3DRect(0.0D, 0.0D, d1, d2, bool);\r\n    paramJavaBackEnd.defineGObject(str, localG3DRect);\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/G3DRect_setRaised.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.G3DRect;\r\nimport acm.graphics.GObject;\r\nimport acm.util.TokenScanner;\r\n\r\nclass G3DRect_setRaised\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    boolean bool = nextBoolean(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GObject localGObject = paramJavaBackEnd.getGObject(str);\r\n    if (localGObject != null) {\r\n      ((G3DRect)localGObject).setRaised(bool);\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GArc_create.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GArc;\r\nimport acm.util.TokenScanner;\r\n\r\nclass GArc_create\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d1 = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d2 = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d3 = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d4 = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GArc localGArc = new GArc(d1, d2, d3, d4);\r\n    paramJavaBackEnd.defineGObject(str, localGArc);\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GArc_setFrameRectangle.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GArc;\r\nimport acm.graphics.GObject;\r\nimport acm.util.TokenScanner;\r\n\r\nclass GArc_setFrameRectangle\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d1 = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d2 = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d3 = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d4 = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GObject localGObject = paramJavaBackEnd.getGObject(str);\r\n    if (localGObject != null) {\r\n      ((GArc)localGObject).setFrameRectangle(d1, d2, d3, d4);\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GArc_setStartAngle.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GArc;\r\nimport acm.graphics.GObject;\r\nimport acm.util.TokenScanner;\r\n\r\nclass GArc_setStartAngle\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GObject localGObject = paramJavaBackEnd.getGObject(str);\r\n    if (localGObject != null) {\r\n      ((GArc)localGObject).setStartAngle(d);\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GArc_setSweepAngle.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GArc;\r\nimport acm.graphics.GObject;\r\nimport acm.util.TokenScanner;\r\n\r\nclass GArc_setSweepAngle\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GObject localGObject = paramJavaBackEnd.getGObject(str);\r\n    if (localGObject != null) {\r\n      ((GArc)localGObject).setSweepAngle(d);\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GButton.java",
    "content": "package stanford.spl;\r\n\r\nimport java.awt.event.ActionListener;\r\nimport javax.swing.JButton;\r\n\r\npublic class GButton\r\n  extends GInteractor\r\n{\r\n  public GButton(String paramString, ActionListener paramActionListener)\r\n  {\r\n    super(new JButton(paramString));\r\n    JButton localJButton = (JButton)getInteractor();\r\n    if (paramActionListener != null) {\r\n      localJButton.addActionListener(paramActionListener);\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GButton_create.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\nclass GButton_create\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str1 = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    String str2 = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GButton localGButton = new GButton(str2, paramJavaBackEnd);\r\n    localGButton.setActionCommand(str2);\r\n    paramJavaBackEnd.defineGObject(str1, localGButton);\r\n    paramJavaBackEnd.defineSource(localGButton.getInteractor(), str1);\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GCheckBox.java",
    "content": "package stanford.spl;\r\n\r\nimport java.awt.event.ActionListener;\r\nimport javax.swing.JCheckBox;\r\n\r\npublic class GCheckBox\r\n  extends GInteractor\r\n{\r\n  public GCheckBox(String paramString, ActionListener paramActionListener)\r\n  {\r\n    super(new JCheckBox(paramString));\r\n    JCheckBox localJCheckBox = (JCheckBox)getInteractor();\r\n    if (paramActionListener != null) {\r\n      localJCheckBox.addActionListener(paramActionListener);\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GCheckBox_create.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\nclass GCheckBox_create\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str1 = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    String str2 = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GCheckBox localGCheckBox = new GCheckBox(str2, paramJavaBackEnd);\r\n    paramJavaBackEnd.defineGObject(str1, localGCheckBox);\r\n    paramJavaBackEnd.defineSource(localGCheckBox.getInteractor(), str1);\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GCheckBox_isSelected.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GObject;\r\nimport acm.util.TokenScanner;\r\nimport java.io.PrintStream;\r\nimport javax.swing.JCheckBox;\r\n\r\nclass GCheckBox_isSelected\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GObject localGObject = paramJavaBackEnd.getGObject(str);\r\n    if (localGObject != null)\r\n    {\r\n      JCheckBox localJCheckBox = (JCheckBox)((GCheckBox)localGObject).getInteractor();\r\n      System.out.println(\"result:\" + localJCheckBox.isSelected());\r\n      System.out.flush();\r\n    }\r\n    else\r\n    {\r\n      System.out.println(\"result:false\");\r\n      System.out.flush();\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GCheckBox_setSelected.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GObject;\r\nimport acm.util.TokenScanner;\r\nimport javax.swing.JCheckBox;\r\n\r\nclass GCheckBox_setSelected\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    boolean bool = nextBoolean(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GObject localGObject = paramJavaBackEnd.getGObject(str);\r\n    if (localGObject != null)\r\n    {\r\n      JCheckBox localJCheckBox = (JCheckBox)((GCheckBox)localGObject).getInteractor();\r\n      localJCheckBox.setSelected(bool);\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GChooser.java",
    "content": "package stanford.spl;\r\n\r\nimport java.awt.event.ActionListener;\r\nimport javax.swing.JComboBox;\r\n\r\npublic class GChooser\r\n  extends GInteractor\r\n{\r\n  public GChooser(ActionListener paramActionListener)\r\n  {\r\n    super(new JComboBox());\r\n    JComboBox localJComboBox = (JComboBox)getInteractor();\r\n    if (paramActionListener != null)\r\n    {\r\n      localJComboBox.setEditable(false);\r\n      localJComboBox.addActionListener(paramActionListener);\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GChooser_addItem.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GObject;\r\nimport acm.util.TokenScanner;\r\nimport java.io.PrintStream;\r\nimport java.lang.reflect.Method;\r\nimport javax.swing.JComboBox;\r\n\r\nclass GChooser_addItem\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str1 = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    String str2 = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GObject localGObject = paramJavaBackEnd.getGObject(str1);\r\n    if (localGObject != null)\r\n    {\r\n      JComboBox localJComboBox = (JComboBox)((GChooser)localGObject).getInteractor();\r\n      Class localClass = localJComboBox.getClass();\r\n      Class[] arrayOfClass = { Object.class };\r\n      Object[] arrayOfObject = { str2 };\r\n      try\r\n      {\r\n        Method localMethod = localClass.getMethod(\"addItem\", arrayOfClass);\r\n        localMethod.invoke(localJComboBox, arrayOfObject);\r\n      }\r\n      catch (Exception localException)\r\n      {\r\n        System.out.println(\"error: \" + localException);\r\n      }\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GChooser_create.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\nclass GChooser_create\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GChooser localGChooser = new GChooser(paramJavaBackEnd);\r\n    paramJavaBackEnd.defineGObject(str, localGChooser);\r\n    paramJavaBackEnd.defineSource(localGChooser.getInteractor(), str);\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GChooser_getSelectedItem.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GObject;\r\nimport acm.util.TokenScanner;\r\nimport java.io.PrintStream;\r\nimport javax.swing.JComboBox;\r\n\r\nclass GChooser_getSelectedItem\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GObject localGObject = paramJavaBackEnd.getGObject(str);\r\n    if (localGObject != null)\r\n    {\r\n      JComboBox localJComboBox = (JComboBox)((GChooser)localGObject).getInteractor();\r\n      System.out.println(\"result:\" + localJComboBox.getSelectedItem());\r\n      System.out.flush();\r\n    }\r\n    else\r\n    {\r\n      System.out.println(\"result:\");\r\n      System.out.flush();\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GChooser_setSelectedItem.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GObject;\r\nimport acm.util.TokenScanner;\r\nimport javax.swing.JComboBox;\r\n\r\nclass GChooser_setSelectedItem\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str1 = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    String str2 = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GObject localGObject = paramJavaBackEnd.getGObject(str1);\r\n    if (localGObject != null)\r\n    {\r\n      JComboBox localJComboBox = (JComboBox)((GChooser)localGObject).getInteractor();\r\n      localJComboBox.setSelectedItem(str2);\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GCompound_add.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GObject;\r\nimport acm.util.TokenScanner;\r\n\r\nclass GCompound_add\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    GObject localGObject1 = paramJavaBackEnd.getGObject(str);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    str = nextString(paramTokenScanner);\r\n    GObject localGObject2 = paramJavaBackEnd.getGObject(str);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    if ((localGObject1 != null) && (localGObject2 != null)) {\r\n      ((TopCompound)localGObject1).add(localGObject2);\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GCompound_create.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\nclass GCompound_create\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    TopCompound localTopCompound = new TopCompound();\r\n    paramJavaBackEnd.defineGObject(str, localTopCompound);\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GEvent_getNextEvent.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\nclass GEvent_getNextEvent\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    int i = nextInt(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    paramJavaBackEnd.getNextEvent(i);\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GEvent_waitForEvent.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\nclass GEvent_waitForEvent\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    int i = nextInt(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    paramJavaBackEnd.waitForEvent(i);\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GImage_create.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GImage;\r\nimport acm.util.TokenScanner;\r\nimport java.io.PrintStream;\r\n\r\nclass GImage_create\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str1 = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    String str2 = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    try\r\n    {\r\n      GImage localGImage = new GImage(str2);\r\n      paramJavaBackEnd.defineGObject(str1, localGImage);\r\n      System.out.println(\"result:GDimension(\" + localGImage.getWidth() + \", \" + localGImage.getHeight() + \")\");\r\n      \r\n      System.out.flush();\r\n    }\r\n    catch (Exception localException)\r\n    {\r\n      System.out.println(\"result:\" + localException.getMessage());\r\n      System.out.flush();\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GInteractor.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GContainer;\r\nimport acm.graphics.GDimension;\r\nimport acm.graphics.GMath;\r\nimport acm.graphics.GObject;\r\nimport acm.graphics.GRectangle;\r\nimport acm.graphics.GResizable;\r\nimport java.awt.Container;\r\nimport java.awt.Dimension;\r\nimport java.awt.Graphics;\r\nimport java.awt.Graphics2D;\r\nimport java.awt.Point;\r\nimport javax.swing.JComponent;\r\n\r\npublic abstract class GInteractor\r\n  extends GObject\r\n  implements GResizable\r\n{\r\n  private JComponent interactor;\r\n  private String actionCommand;\r\n  \r\n  public GInteractor(JComponent paramJComponent)\r\n  {\r\n    this.interactor = paramJComponent;\r\n    this.actionCommand = \"\";\r\n    Dimension localDimension = paramJComponent.getPreferredSize();\r\n    paramJComponent.setSize(localDimension.width, localDimension.height);\r\n  }\r\n  \r\n  public JComponent getInteractor()\r\n  {\r\n    return this.interactor;\r\n  }\r\n  \r\n  public GRectangle getBounds()\r\n  {\r\n    Point localPoint = this.interactor.getLocation();\r\n    Dimension localDimension = this.interactor.getPreferredSize();\r\n    return new GRectangle(localPoint.x, localPoint.y, localDimension.width, localDimension.height);\r\n  }\r\n  \r\n  public void setLocation(double paramDouble1, double paramDouble2)\r\n  {\r\n    super.setLocation(paramDouble1, paramDouble2);\r\n    this.interactor.setLocation(GMath.round(paramDouble1), GMath.round(paramDouble2));\r\n    this.interactor.repaint();\r\n  }\r\n  \r\n  public void setVisible(boolean paramBoolean)\r\n  {\r\n    super.setVisible(paramBoolean);\r\n    this.interactor.setVisible(paramBoolean);\r\n    this.interactor.repaint();\r\n  }\r\n  \r\n  public void setParent(GContainer paramGContainer)\r\n  {\r\n    if (paramGContainer == null)\r\n    {\r\n      this.interactor.getParent().remove(this.interactor);\r\n    }\r\n    else if ((paramGContainer instanceof TopCompound))\r\n    {\r\n      TopCompound localTopCompound = (TopCompound)paramGContainer;\r\n      JBECanvas localJBECanvas = localTopCompound.getCanvas();\r\n      if (localJBECanvas != null)\r\n      {\r\n        localJBECanvas.add(this.interactor);\r\n        localJBECanvas.validate();\r\n      }\r\n    }\r\n  }\r\n  \r\n  public void setSize(double paramDouble1, double paramDouble2)\r\n  {\r\n    int i = GMath.round(paramDouble1);\r\n    int j = GMath.round(paramDouble2);\r\n    this.interactor.setPreferredSize(new Dimension(i, j));\r\n    this.interactor.setSize(i, j);\r\n    this.interactor.repaint();\r\n  }\r\n  \r\n  public void setSize(GDimension paramGDimension)\r\n  {\r\n    setSize(paramGDimension.getWidth(), paramGDimension.getHeight());\r\n  }\r\n  \r\n  public void setBounds(double paramDouble1, double paramDouble2, double paramDouble3, double paramDouble4)\r\n  {\r\n    setLocation(paramDouble1, paramDouble2);\r\n    setSize(paramDouble3, paramDouble4);\r\n  }\r\n  \r\n  public void setBounds(GRectangle paramGRectangle)\r\n  {\r\n    setBounds(paramGRectangle.getX(), paramGRectangle.getY(), paramGRectangle.getWidth(), paramGRectangle.getHeight());\r\n  }\r\n  \r\n  public void setActionCommand(String paramString)\r\n  {\r\n    this.actionCommand = paramString;\r\n  }\r\n  \r\n  public String getActionCommand()\r\n  {\r\n    return this.actionCommand;\r\n  }\r\n  \r\n  public void repaint() {}\r\n  \r\n  public void paint2d(Graphics2D paramGraphics2D) {}\r\n  \r\n  protected void paintObject(Graphics paramGraphics) {}\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GInteractor_getSize.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GObject;\r\nimport acm.util.TokenScanner;\r\nimport java.awt.Dimension;\r\nimport java.io.PrintStream;\r\nimport javax.swing.JComponent;\r\n\r\nclass GInteractor_getSize\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GObject localGObject = paramJavaBackEnd.getGObject(str);\r\n    if (localGObject != null)\r\n    {\r\n      JComponent localJComponent = ((GInteractor)localGObject).getInteractor();\r\n      Dimension localDimension = localJComponent.isShowing() ? localJComponent.getSize() : localJComponent.getPreferredSize();\r\n      \r\n      System.out.println(\"result:GDimension(\" + localDimension.width + \", \" + localDimension.height + \")\");\r\n      \r\n      System.out.flush();\r\n    }\r\n    else\r\n    {\r\n      System.out.println(\"result:GDimension(0, 0)\");\r\n      System.out.flush();\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GInteractor_setActionCommand.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GObject;\r\nimport acm.util.TokenScanner;\r\n\r\nclass GInteractor_setActionCommand\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str1 = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    String str2 = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GObject localGObject = paramJavaBackEnd.getGObject(str1);\r\n    if (localGObject != null) {\r\n      ((GInteractor)localGObject).setActionCommand(str2);\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GLabel_create.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\nclass GLabel_create\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str1 = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    String str2 = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    JBELabel localJBELabel = new JBELabel(str2);\r\n    paramJavaBackEnd.defineGObject(str1, localJBELabel);\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GLabel_getFontAscent.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GLabel;\r\nimport acm.util.TokenScanner;\r\nimport java.io.PrintStream;\r\n\r\nclass GLabel_getFontAscent\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GLabel localGLabel = (GLabel)paramJavaBackEnd.getGObject(str);\r\n    System.out.println(\"result:\" + localGLabel.getAscent());\r\n    System.out.flush();\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GLabel_getFontDescent.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GLabel;\r\nimport acm.util.TokenScanner;\r\nimport java.io.PrintStream;\r\n\r\nclass GLabel_getFontDescent\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GLabel localGLabel = (GLabel)paramJavaBackEnd.getGObject(str);\r\n    System.out.println(\"result:\" + localGLabel.getDescent());\r\n    System.out.flush();\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GLabel_getGLabelSize.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GDimension;\r\nimport acm.graphics.GLabel;\r\nimport acm.util.TokenScanner;\r\nimport java.io.PrintStream;\r\n\r\nclass GLabel_getGLabelSize\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GLabel localGLabel = (GLabel)paramJavaBackEnd.getGObject(str);\r\n    GDimension localGDimension = localGLabel.getSize();\r\n    System.out.println(\"result:GDimension(\" + localGDimension.getWidth() + \", \" + localGDimension.getHeight() + \")\");\r\n    \r\n    System.out.flush();\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GLabel_setFont.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GLabel;\r\nimport acm.util.TokenScanner;\r\n\r\nclass GLabel_setFont\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str1 = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    String str2 = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GLabel localGLabel = (GLabel)paramJavaBackEnd.getGObject(str1);\r\n    if (localGLabel != null) {\r\n      localGLabel.setFont(str2);\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GLabel_setLabel.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GLabel;\r\nimport acm.util.TokenScanner;\r\n\r\nclass GLabel_setLabel\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str1 = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    String str2 = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GLabel localGLabel = (GLabel)paramJavaBackEnd.getGObject(str1);\r\n    if (localGLabel != null) {\r\n      localGLabel.setLabel(str2);\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GLine_create.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GLine;\r\nimport acm.util.TokenScanner;\r\n\r\nclass GLine_create\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d1 = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d2 = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d3 = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d4 = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GLine localGLine = new GLine(d1, d2, d3, d4);\r\n    paramJavaBackEnd.defineGObject(str, localGLine);\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GLine_setEndPoint.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GLine;\r\nimport acm.graphics.GObject;\r\nimport acm.util.TokenScanner;\r\n\r\nclass GLine_setEndPoint\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d1 = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d2 = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GObject localGObject = paramJavaBackEnd.getGObject(str);\r\n    if (localGObject != null) {\r\n      ((GLine)localGObject).setEndPoint(d1, d2);\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GLine_setStartPoint.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GLine;\r\nimport acm.graphics.GObject;\r\nimport acm.util.TokenScanner;\r\n\r\nclass GLine_setStartPoint\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d1 = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d2 = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GObject localGObject = paramJavaBackEnd.getGObject(str);\r\n    if (localGObject != null) {\r\n      ((GLine)localGObject).setStartPoint(d1, d2);\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GObject_contains.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GObject;\r\nimport acm.util.TokenScanner;\r\nimport java.io.PrintStream;\r\n\r\nclass GObject_contains\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d1 = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d2 = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GObject localGObject = paramJavaBackEnd.getGObject(str);\r\n    System.out.println(\"result:\" + ((localGObject != null) && (localGObject.contains(d1, d2))));\r\n    System.out.flush();\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GObject_delete.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\nclass GObject_delete\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    paramJavaBackEnd.deleteGObject(str);\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GObject_getBounds.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GObject;\r\nimport acm.graphics.GRectangle;\r\nimport acm.util.TokenScanner;\r\nimport java.io.PrintStream;\r\n\r\nclass GObject_getBounds\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GObject localGObject = paramJavaBackEnd.getGObject(str);\r\n    if (localGObject == null)\r\n    {\r\n      System.out.println(\"error: NULL object\");\r\n    }\r\n    else\r\n    {\r\n      GRectangle localGRectangle = localGObject.getBounds();\r\n      System.out.println(\"result:GRectangle(\" + localGRectangle.getX() + \", \" + localGRectangle.getY() + \", \" + localGRectangle.getWidth() + \", \" + localGRectangle.getHeight() + \")\");\r\n    }\r\n    System.out.flush();\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GObject_remove.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GCompound;\r\nimport acm.graphics.GObject;\r\nimport acm.util.TokenScanner;\r\n\r\nclass GObject_remove\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    GObject localGObject = paramJavaBackEnd.getGObject(str);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    if (localGObject != null)\r\n    {\r\n      GCompound localGCompound = (GCompound)localGObject.getParent();\r\n      if (localGCompound != null) {\r\n        localGCompound.remove(localGObject);\r\n      }\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GObject_rotate.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GObject;\r\nimport acm.util.TokenScanner;\r\n\r\nclass GObject_rotate\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    GObject localGObject = paramJavaBackEnd.getGObject(str);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    if (localGObject != null) {\r\n      localGObject.rotate(d);\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GObject_scale.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GObject;\r\nimport acm.util.TokenScanner;\r\n\r\nclass GObject_scale\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    GObject localGObject = paramJavaBackEnd.getGObject(str);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d1 = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d2 = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    if (localGObject != null) {\r\n      localGObject.scale(d1, d2);\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GObject_sendBackward.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GObject;\r\nimport acm.util.TokenScanner;\r\n\r\nclass GObject_sendBackward\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    GObject localGObject = paramJavaBackEnd.getGObject(str);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    if (localGObject != null) {\r\n      localGObject.sendBackward();\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GObject_sendForward.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GObject;\r\nimport acm.util.TokenScanner;\r\n\r\nclass GObject_sendForward\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    GObject localGObject = paramJavaBackEnd.getGObject(str);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    if (localGObject != null) {\r\n      localGObject.sendForward();\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GObject_sendToBack.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GObject;\r\nimport acm.util.TokenScanner;\r\n\r\nclass GObject_sendToBack\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    GObject localGObject = paramJavaBackEnd.getGObject(str);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    if (localGObject != null) {\r\n      localGObject.sendToBack();\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GObject_sendToFront.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GObject;\r\nimport acm.util.TokenScanner;\r\n\r\nclass GObject_sendToFront\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    GObject localGObject = paramJavaBackEnd.getGObject(str);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    if (localGObject != null) {\r\n      localGObject.sendToFront();\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GObject_setColor.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GObject;\r\nimport acm.util.JTFTools;\r\nimport acm.util.TokenScanner;\r\n\r\nclass GObject_setColor\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str1 = nextString(paramTokenScanner);\r\n    GObject localGObject = paramJavaBackEnd.getGObject(str1);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    String str2 = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    if (localGObject != null) {\r\n      localGObject.setColor(str2.equals(\"\") ? null : JTFTools.decodeColor(str2));\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GObject_setFillColor.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GFillable;\r\nimport acm.graphics.GObject;\r\nimport acm.util.JTFTools;\r\nimport acm.util.TokenScanner;\r\nimport java.awt.Color;\r\n\r\nclass GObject_setFillColor\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str1 = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    String str2 = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GObject localGObject = paramJavaBackEnd.getGObject(str1);\r\n    if (localGObject != null)\r\n    {\r\n      Color localColor = str2.equals(\"\") ? null : JTFTools.decodeColor(str2);\r\n      ((GFillable)localGObject).setFillColor(localColor);\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GObject_setFilled.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GFillable;\r\nimport acm.graphics.GObject;\r\nimport acm.util.TokenScanner;\r\n\r\nclass GObject_setFilled\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    boolean bool = paramTokenScanner.nextToken().equals(\"true\");\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GObject localGObject = paramJavaBackEnd.getGObject(str);\r\n    if (localGObject != null) {\r\n      ((GFillable)localGObject).setFilled(bool);\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GObject_setLineWidth.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GObject;\r\nimport acm.util.TokenScanner;\r\n\r\nclass GObject_setLineWidth\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    GObject localGObject = paramJavaBackEnd.getGObject(str);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    if (localGObject != null) {\r\n      localGObject.setLineWidth(d);\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GObject_setLocation.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GObject;\r\nimport acm.util.TokenScanner;\r\n\r\nclass GObject_setLocation\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d1 = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d2 = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GObject localGObject = paramJavaBackEnd.getGObject(str);\r\n    if (localGObject != null) {\r\n      localGObject.setLocation(d1, d2);\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GObject_setSize.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GObject;\r\nimport acm.graphics.GResizable;\r\nimport acm.util.TokenScanner;\r\n\r\nclass GObject_setSize\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d1 = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d2 = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GObject localGObject = paramJavaBackEnd.getGObject(str);\r\n    if (localGObject != null) {\r\n      ((GResizable)localGObject).setSize(d1, d2);\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GObject_setVisible.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GObject;\r\nimport acm.util.TokenScanner;\r\n\r\nclass GObject_setVisible\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    GObject localGObject = paramJavaBackEnd.getGObject(str);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    boolean bool = nextBoolean(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    if (localGObject != null) {\r\n      localGObject.setVisible(bool);\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GOval_create.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GOval;\r\nimport acm.util.TokenScanner;\r\n\r\nclass GOval_create\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d1 = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d2 = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GOval localGOval = new GOval(d1, d2);\r\n    paramJavaBackEnd.defineGObject(str, localGOval);\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GPolygon_addVertex.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GObject;\r\nimport acm.graphics.GPolygon;\r\nimport acm.util.TokenScanner;\r\n\r\nclass GPolygon_addVertex\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d1 = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d2 = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GObject localGObject = paramJavaBackEnd.getGObject(str);\r\n    if (localGObject != null) {\r\n      ((GPolygon)localGObject).addVertex(d1, d2);\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GPolygon_create.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GPolygon;\r\nimport acm.util.TokenScanner;\r\n\r\nclass GPolygon_create\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GPolygon localGPolygon = new GPolygon();\r\n    paramJavaBackEnd.defineGObject(str, localGPolygon);\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GRect_create.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GRect;\r\nimport acm.util.TokenScanner;\r\n\r\nclass GRect_create\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d1 = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d2 = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GRect localGRect = new GRect(d1, d2);\r\n    paramJavaBackEnd.defineGObject(str, localGRect);\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GRoundRect_create.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GRoundRect;\r\nimport acm.util.TokenScanner;\r\n\r\nclass GRoundRect_create\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d1 = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d2 = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d3 = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GRoundRect localGRoundRect = new GRoundRect(0.0D, 0.0D, d1, d2, d3);\r\n    paramJavaBackEnd.defineGObject(str, localGRoundRect);\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GSlider.java",
    "content": "package stanford.spl;\r\n\r\nimport javax.swing.JSlider;\r\nimport javax.swing.event.ChangeListener;\r\n\r\npublic class GSlider\r\n  extends GInteractor\r\n{\r\n  public GSlider(int paramInt1, int paramInt2, int paramInt3, ChangeListener paramChangeListener)\r\n  {\r\n    super(new JSlider(paramInt1, paramInt2, paramInt3));\r\n    JSlider localJSlider = (JSlider)getInteractor();\r\n    if (paramChangeListener != null) {\r\n      localJSlider.addChangeListener(paramChangeListener);\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GSlider_create.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\nclass GSlider_create\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    int i = nextInt(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    int j = nextInt(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    int k = nextInt(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GSlider localGSlider = new GSlider(i, j, k, paramJavaBackEnd);\r\n    paramJavaBackEnd.defineGObject(str, localGSlider);\r\n    paramJavaBackEnd.defineSource(localGSlider.getInteractor(), str);\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GSlider_getValue.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GObject;\r\nimport acm.util.TokenScanner;\r\nimport java.io.PrintStream;\r\nimport javax.swing.JSlider;\r\n\r\nclass GSlider_getValue\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GObject localGObject = paramJavaBackEnd.getGObject(str);\r\n    if (localGObject != null)\r\n    {\r\n      JSlider localJSlider = (JSlider)((GSlider)localGObject).getInteractor();\r\n      System.out.println(\"result:\" + localJSlider.getValue());\r\n      System.out.flush();\r\n    }\r\n    else\r\n    {\r\n      System.out.println(\"result:0\");\r\n      System.out.flush();\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GSlider_setValue.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GObject;\r\nimport acm.util.TokenScanner;\r\nimport javax.swing.JSlider;\r\n\r\nclass GSlider_setValue\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    int i = nextInt(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GObject localGObject = paramJavaBackEnd.getGObject(str);\r\n    if (localGObject != null)\r\n    {\r\n      JSlider localJSlider = (JSlider)((GSlider)localGObject).getInteractor();\r\n      localJSlider.setValue(i);\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GTextField.java",
    "content": "package stanford.spl;\r\n\r\nimport java.awt.event.ActionListener;\r\nimport javax.swing.JTextField;\r\n\r\npublic class GTextField\r\n  extends GInteractor\r\n{\r\n  public GTextField(int paramInt, ActionListener paramActionListener)\r\n  {\r\n    super(new JTextField(paramInt));\r\n    JTextField localJTextField = (JTextField)getInteractor();\r\n    if (paramActionListener != null) {\r\n      localJTextField.addActionListener(paramActionListener);\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GTextField_create.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\nclass GTextField_create\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    int i = nextInt(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GTextField localGTextField = new GTextField(i, paramJavaBackEnd);\r\n    paramJavaBackEnd.defineGObject(str, localGTextField);\r\n    paramJavaBackEnd.defineSource(localGTextField.getInteractor(), str);\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GTextField_getText.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GObject;\r\nimport acm.util.TokenScanner;\r\nimport java.io.PrintStream;\r\nimport javax.swing.JTextField;\r\n\r\nclass GTextField_getText\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GObject localGObject = paramJavaBackEnd.getGObject(str);\r\n    if (localGObject != null)\r\n    {\r\n      JTextField localJTextField = (JTextField)((GTextField)localGObject).getInteractor();\r\n      System.out.println(\"result:\" + localJTextField.getText());\r\n      System.out.flush();\r\n    }\r\n    else\r\n    {\r\n      System.out.println(\"result:\");\r\n      System.out.flush();\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GTextField_setText.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GObject;\r\nimport acm.util.TokenScanner;\r\nimport javax.swing.JTextField;\r\n\r\nclass GTextField_setText\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str1 = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    String str2 = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    GObject localGObject = paramJavaBackEnd.getGObject(str1);\r\n    if (localGObject != null)\r\n    {\r\n      JTextField localJTextField = (JTextField)((GTextField)localGObject).getInteractor();\r\n      localJTextField.setText(str2);\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GTimer.java",
    "content": "package stanford.spl;\r\n\r\nimport javax.swing.Timer;\r\n\r\nclass GTimer\r\n  extends Timer\r\n{\r\n  private String id;\r\n  \r\n  public GTimer(String paramString, double paramDouble)\r\n  {\r\n    super((int)Math.round(paramDouble), null);\r\n    this.id = paramString;\r\n  }\r\n  \r\n  public String getId()\r\n  {\r\n    return this.id;\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GTimer_create.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\nclass GTimer_create\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    double d = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    paramJavaBackEnd.createTimer(str, d);\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GTimer_deleteTimer.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\nclass GTimer_deleteTimer\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    paramJavaBackEnd.deleteTimer(str);\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GTimer_pause.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\nclass GTimer_pause\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    double d = nextDouble(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    try\r\n    {\r\n      Thread.sleep((int)Math.round(d));\r\n    }\r\n    catch (Exception localException) {}\r\n    paramJavaBackEnd.println(\"result:ok\");\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GTimer_startTimer.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\nclass GTimer_startTimer\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    paramJavaBackEnd.startTimer(str);\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GTimer_stopTimer.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\nclass GTimer_stopTimer\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    paramJavaBackEnd.stopTimer(str);\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GWindow_addToRegion.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GObject;\r\nimport acm.util.TokenScanner;\r\n\r\nclass GWindow_addToRegion\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str1 = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    String str2 = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    String str3 = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    JBEWindow localJBEWindow = paramJavaBackEnd.getWindow(str1);\r\n    GObject localGObject = paramJavaBackEnd.getGObject(str2);\r\n    if ((localJBEWindow != null) && (localGObject != null)) {\r\n      localJBEWindow.addToRegion(paramJavaBackEnd.getInteractor(localGObject), str3);\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GWindow_clear.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\nclass GWindow_clear\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    JBEWindow localJBEWindow = paramJavaBackEnd.getWindow(str);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    if (localJBEWindow != null) {\r\n      localJBEWindow.clear();\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GWindow_close.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\nclass GWindow_close\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    JBEWindow localJBEWindow = paramJavaBackEnd.getWindow(str);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    if (localJBEWindow != null) {\r\n      localJBEWindow.close();\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GWindow_create.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\nclass GWindow_create\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str1 = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    int i = nextInt(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    int j = nextInt(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    String str2 = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    paramJavaBackEnd.createWindow(str1, i, j, (TopCompound)paramJavaBackEnd.getGObject(str2));\r\n    paramJavaBackEnd.println(\"result:ok\");\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GWindow_delete.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\nclass GWindow_delete\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    paramJavaBackEnd.deleteWindow(str);\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GWindow_draw.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GObject;\r\nimport acm.util.TokenScanner;\r\nimport java.awt.Graphics2D;\r\n\r\nclass GWindow_draw\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    JBEWindow localJBEWindow = paramJavaBackEnd.getWindow(str);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    str = nextString(paramTokenScanner);\r\n    GObject localGObject = paramJavaBackEnd.getGObject(str);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    if ((localJBEWindow != null) && (localGObject != null) && (localGObject.isVisible()))\r\n    {\r\n      JBECanvas localJBECanvas = localJBEWindow.getCanvas();\r\n      Graphics2D localGraphics2D = localJBECanvas.getOSG();\r\n      localGraphics2D.setColor(localGObject.getColor());\r\n      localGObject.paint(localGraphics2D);\r\n      localJBECanvas.repaint();\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GWindow_exitGraphics.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\nclass GWindow_exitGraphics\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    paramTokenScanner.verifyToken(\")\");\r\n    System.exit(0);\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GWindow_getScreenHeight.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\nimport java.awt.Dimension;\r\nimport java.awt.Toolkit;\r\n\r\nclass GWindow_getScreenHeight\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    paramTokenScanner.verifyToken(\")\");\r\n    Dimension localDimension = Toolkit.getDefaultToolkit().getScreenSize();\r\n    paramJavaBackEnd.println(\"result:\" + localDimension.height);\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GWindow_getScreenWidth.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\nimport java.awt.Dimension;\r\nimport java.awt.Toolkit;\r\n\r\nclass GWindow_getScreenWidth\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    paramTokenScanner.verifyToken(\")\");\r\n    Dimension localDimension = Toolkit.getDefaultToolkit().getScreenSize();\r\n    paramJavaBackEnd.println(\"result:\" + localDimension.width);\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GWindow_repaint.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\nclass GWindow_repaint\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    JBEWindow localJBEWindow = paramJavaBackEnd.getWindow(str);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    if (localJBEWindow != null) {\r\n      localJBEWindow.getCanvas().repaint();\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GWindow_requestFocus.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\nclass GWindow_requestFocus\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    JBEWindow localJBEWindow = paramJavaBackEnd.getWindow(str);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    if (localJBEWindow != null)\r\n    {\r\n      localJBEWindow.toFront();\r\n      localJBEWindow.getCanvas().requestFocus();\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GWindow_setRegionAlignment.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\nclass GWindow_setRegionAlignment\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str1 = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    String str2 = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    String str3 = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    JBEWindow localJBEWindow = paramJavaBackEnd.getWindow(str1);\r\n    if (localJBEWindow != null) {\r\n      localJBEWindow.setRegionAlignment(str2, str3);\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GWindow_setResizable.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\nclass GWindow_setResizable\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    JBEWindow localJBEWindow = paramJavaBackEnd.getWindow(str);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    boolean bool = paramTokenScanner.nextToken().equals(\"true\");\r\n    paramTokenScanner.verifyToken(\")\");\r\n    if (localJBEWindow != null) {\r\n      localJBEWindow.setResizable(bool);\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GWindow_setTitle.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\nclass GWindow_setTitle\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str1 = nextString(paramTokenScanner);\r\n    JBEWindow localJBEWindow = paramJavaBackEnd.getWindow(str1);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    String str2 = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    if (localJBEWindow != null) {\r\n      localJBEWindow.setTitle(str2);\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/GWindow_setVisible.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\nclass GWindow_setVisible\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    JBEWindow localJBEWindow = paramJavaBackEnd.getWindow(str);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    boolean bool = paramTokenScanner.nextToken().equals(\"true\");\r\n    paramTokenScanner.verifyToken(\")\");\r\n    if (localJBEWindow != null) {\r\n      localJBEWindow.setVisible(bool);\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/JBECanvas.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GCanvas;\r\nimport java.awt.Color;\r\nimport java.awt.Dimension;\r\nimport java.awt.Graphics;\r\nimport java.awt.Graphics2D;\r\nimport java.awt.Image;\r\nimport java.awt.Shape;\r\nimport java.awt.Toolkit;\r\nimport java.awt.geom.Arc2D.Double;\r\nimport java.awt.geom.Ellipse2D.Double;\r\nimport java.awt.geom.Line2D.Double;\r\nimport java.awt.geom.Rectangle2D.Double;\r\n\r\npublic class JBECanvas\r\n  extends GCanvas\r\n{\r\n  private String windowId;\r\n  private TopCompound topCompound;\r\n  private Graphics2D osg;\r\n  private Image offscreenImage;\r\n  private int preferredWidth;\r\n  private int preferredHeight;\r\n  \r\n  public JBECanvas(String paramString, int paramInt1, int paramInt2)\r\n  {\r\n    this.windowId = paramString;\r\n    setBackground(Color.WHITE);\r\n    setForeground(Color.BLACK);\r\n    setOpaque(false);\r\n    setLayout(null);\r\n    this.preferredWidth = paramInt1;\r\n    this.preferredHeight = paramInt2;\r\n  }\r\n  \r\n  protected Graphics2D getOSG()\r\n  {\r\n    return this.osg;\r\n  }\r\n  \r\n  protected void setTopCompound(TopCompound paramTopCompound)\r\n  {\r\n    this.topCompound = paramTopCompound;\r\n    paramTopCompound.setCanvas(this);\r\n    paramTopCompound.setParent(this);\r\n  }\r\n  \r\n  protected TopCompound getTopCompound()\r\n  {\r\n    return this.topCompound;\r\n  }\r\n  \r\n  protected void initOffscreenImage()\r\n  {\r\n    Dimension localDimension = Toolkit.getDefaultToolkit().getScreenSize();\r\n    this.offscreenImage = createImage(localDimension.width, localDimension.height);\r\n    this.osg = ((Graphics2D)this.offscreenImage.getGraphics());\r\n    this.osg.setColor(getBackground());\r\n    this.osg.fillRect(0, 0, localDimension.width, localDimension.height);\r\n    this.osg.setColor(getForeground());\r\n  }\r\n  \r\n  public String getWindowId()\r\n  {\r\n    return this.windowId;\r\n  }\r\n  \r\n  public Dimension getPreferredSize()\r\n  {\r\n    return new Dimension(this.preferredWidth, this.preferredHeight);\r\n  }\r\n  \r\n  public void clear()\r\n  {\r\n    Dimension localDimension = Toolkit.getDefaultToolkit().getScreenSize();\r\n    this.osg.setColor(Color.WHITE);\r\n    this.osg.fillRect(0, 0, localDimension.width, localDimension.height);\r\n    this.osg.setColor(Color.BLACK);\r\n    repaint();\r\n  }\r\n  \r\n  public void draw(Shape paramShape)\r\n  {\r\n    this.osg.draw(paramShape);\r\n    repaint();\r\n  }\r\n  \r\n  public void fill(Shape paramShape)\r\n  {\r\n    this.osg.fill(paramShape);\r\n    repaint();\r\n  }\r\n  \r\n  public void drawRect(double paramDouble1, double paramDouble2, double paramDouble3, double paramDouble4)\r\n  {\r\n    Rectangle2D.Double localDouble = new Rectangle2D.Double(paramDouble1, paramDouble2, paramDouble3, paramDouble4);\r\n    this.osg.draw(localDouble);\r\n    repaint();\r\n  }\r\n  \r\n  public void fillRect(double paramDouble1, double paramDouble2, double paramDouble3, double paramDouble4)\r\n  {\r\n    Rectangle2D.Double localDouble = new Rectangle2D.Double(paramDouble1, paramDouble2, paramDouble3, paramDouble4);\r\n    this.osg.fill(localDouble);\r\n    this.osg.draw(localDouble);\r\n    repaint();\r\n  }\r\n  \r\n  public void drawOval(double paramDouble1, double paramDouble2, double paramDouble3, double paramDouble4)\r\n  {\r\n    Ellipse2D.Double localDouble = new Ellipse2D.Double(paramDouble1, paramDouble2, paramDouble3, paramDouble4);\r\n    this.osg.draw(localDouble);\r\n    repaint();\r\n  }\r\n  \r\n  public void fillOval(double paramDouble1, double paramDouble2, double paramDouble3, double paramDouble4)\r\n  {\r\n    Ellipse2D.Double localDouble = new Ellipse2D.Double(paramDouble1, paramDouble2, paramDouble3, paramDouble4);\r\n    this.osg.fill(localDouble);\r\n    this.osg.draw(localDouble);\r\n    repaint();\r\n  }\r\n  \r\n  public void drawArc(double paramDouble1, double paramDouble2, double paramDouble3, double paramDouble4, double paramDouble5, double paramDouble6)\r\n  {\r\n    Arc2D.Double localDouble = new Arc2D.Double(paramDouble1, paramDouble2, paramDouble3, paramDouble4, paramDouble5, paramDouble6, 0);\r\n    \r\n    this.osg.draw(localDouble);\r\n    repaint();\r\n  }\r\n  \r\n  public void fillArc(double paramDouble1, double paramDouble2, double paramDouble3, double paramDouble4, double paramDouble5, double paramDouble6)\r\n  {\r\n    Arc2D.Double localDouble = new Arc2D.Double(paramDouble1, paramDouble2, paramDouble3, paramDouble4, paramDouble5, paramDouble6, 2);\r\n    \r\n    this.osg.fill(localDouble);\r\n    this.osg.draw(localDouble);\r\n    repaint();\r\n  }\r\n  \r\n  public void drawLine(double paramDouble1, double paramDouble2, double paramDouble3, double paramDouble4)\r\n  {\r\n    Line2D.Double localDouble = new Line2D.Double(paramDouble1, paramDouble2, paramDouble3, paramDouble4);\r\n    this.osg.draw(localDouble);\r\n    repaint();\r\n  }\r\n  \r\n  public void setColor(int paramInt)\r\n  {\r\n    this.osg.setColor(new Color(paramInt));\r\n  }\r\n  \r\n  public void paint(Graphics paramGraphics)\r\n  {\r\n    paramGraphics.drawImage(this.offscreenImage, 0, 0, this);\r\n    this.topCompound.paint(paramGraphics);\r\n    super.paint(paramGraphics);\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/JBEConsole.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.io.IOConsole;\r\nimport java.awt.Dimension;\r\n\r\npublic class JBEConsole\r\n  extends IOConsole\r\n{\r\n  private int preferredWidth;\r\n  private int preferredHeight;\r\n  \r\n  public void setPreferredSize(int paramInt1, int paramInt2)\r\n  {\r\n    this.preferredWidth = paramInt1;\r\n    this.preferredHeight = paramInt2;\r\n  }\r\n  \r\n  public Dimension getPreferredSize()\r\n  {\r\n    return new Dimension(this.preferredWidth, this.preferredHeight);\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/JBEConsole_clear.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\nclass JBEConsole_clear\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    paramTokenScanner.verifyToken(\")\");\r\n    paramJavaBackEnd.clearConsole();\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/JBEConsole_getLine.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\nclass JBEConsole_getLine\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    paramTokenScanner.verifyToken(\")\");\r\n    paramJavaBackEnd.println(\"result:\" + paramJavaBackEnd.getConsole());\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/JBEConsole_print.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\nclass JBEConsole_print\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    paramJavaBackEnd.putConsole(str);\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/JBEConsole_println.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\nclass JBEConsole_println\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    paramTokenScanner.verifyToken(\")\");\r\n    paramJavaBackEnd.endLineConsole();\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/JBEConsole_setFont.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\nclass JBEConsole_setFont\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    paramJavaBackEnd.setConsoleFont(str);\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/JBEConsole_setSize.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\nclass JBEConsole_setSize\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    int i = nextInt(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    int j = nextInt(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    paramJavaBackEnd.setConsoleSize(i, j);\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/JBEDummyProgram.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.program.Program;\r\n\r\nclass JBEDummyProgram\r\n  extends Program\r\n{\r\n  private JavaBackEnd jbe;\r\n  \r\n  public JBEDummyProgram(JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    this.jbe = paramJavaBackEnd;\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/JBEFileFilter.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.FileChooserFilter;\r\n\r\npublic class JBEFileFilter\r\n  extends FileChooserFilter\r\n{\r\n  private String dir;\r\n  \r\n  public JBEFileFilter(String paramString)\r\n  {\r\n    super(getPattern(paramString));\r\n    int i = Math.max(paramString.lastIndexOf(\"/\"), paramString.lastIndexOf('\\\\'));\r\n    this.dir = (i == -1 ? \"\" : paramString.substring(0, i));\r\n    String str = paramString.substring(i + 1);\r\n    if (!isPattern(str))\r\n    {\r\n      if (this.dir.isEmpty()) {\r\n        this.dir += \"/\";\r\n      }\r\n      this.dir += str;\r\n    }\r\n    if (this.dir.isEmpty()) {\r\n      this.dir = System.getProperty(\"user.dir\");\r\n    } else if (!this.dir.startsWith(\"/\")) {\r\n      this.dir = (System.getProperty(\"user.dir\") + \"/\" + this.dir);\r\n    }\r\n  }\r\n  \r\n  public String getDirectory()\r\n  {\r\n    return this.dir;\r\n  }\r\n  \r\n  private static String getPattern(String paramString)\r\n  {\r\n    int i = Math.max(paramString.lastIndexOf(\"/\"), paramString.lastIndexOf('\\\\'));\r\n    String str = paramString.substring(i + 1);\r\n    return isPattern(str) ? str : null;\r\n  }\r\n  \r\n  private static boolean isPattern(String paramString)\r\n  {\r\n    for (int i = 0; i < paramString.length(); i++) {\r\n      switch (paramString.charAt(i))\r\n      {\r\n      case '*': \r\n      case ';': \r\n      case '?': \r\n      case '[': \r\n      case ']': \r\n        return true;\r\n      }\r\n    }\r\n    return false;\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/JBELabel.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GLabel;\r\nimport java.awt.Color;\r\nimport java.awt.Font;\r\nimport javax.swing.JComponent;\r\nimport javax.swing.JLabel;\r\n\r\npublic class JBELabel\r\n  extends GLabel\r\n{\r\n  private JLabel jlabel;\r\n  \r\n  public JBELabel(String paramString)\r\n  {\r\n    super(paramString);\r\n    this.jlabel = null;\r\n  }\r\n  \r\n  public JComponent getInteractor()\r\n  {\r\n    if (this.jlabel == null)\r\n    {\r\n      this.jlabel = new JLabel(getLabel());\r\n      this.jlabel.setFont(getFont());\r\n      this.jlabel.setForeground(getColor());\r\n    }\r\n    return this.jlabel;\r\n  }\r\n  \r\n  public void setFont(Font paramFont)\r\n  {\r\n    super.setFont(paramFont);\r\n    if (this.jlabel != null) {\r\n      this.jlabel.setFont(paramFont);\r\n    }\r\n  }\r\n  \r\n  public void setColor(Color paramColor)\r\n  {\r\n    super.setColor(paramColor);\r\n    if (this.jlabel != null) {\r\n      this.jlabel.setForeground(paramColor);\r\n    }\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/JBEMenuBar.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.io.IOConsole;\r\nimport acm.program.Program;\r\nimport acm.program.ProgramMenuBar;\r\nimport javax.swing.JMenu;\r\n\r\npublic class JBEMenuBar\r\n  extends ProgramMenuBar\r\n{\r\n  public JBEMenuBar(JavaBackEnd paramJavaBackEnd, IOConsole paramIOConsole)\r\n  {\r\n    super(new JBEDummyProgram(paramJavaBackEnd));\r\n    getProgram().setConsole(paramIOConsole);\r\n  }\r\n  \r\n  protected void addFileMenuItems(JMenu paramJMenu)\r\n  {\r\n    paramJMenu.add(createStandardItem(\"Save As\"));\r\n    paramJMenu.add(createStandardItem(\"Quit\"));\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/JBEWindow.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.gui.TableLayout;\r\nimport java.awt.BorderLayout;\r\nimport java.awt.event.WindowEvent;\r\nimport javax.swing.JComponent;\r\nimport javax.swing.JFrame;\r\nimport javax.swing.JPanel;\r\n\r\npublic class JBEWindow\r\n  extends JFrame\r\n{\r\n  private JavaBackEnd jbe;\r\n  private JBECanvas canvas;\r\n  private String windowId;\r\n  private JPanel northPanel;\r\n  private JPanel eastPanel;\r\n  private JPanel southPanel;\r\n  private JPanel westPanel;\r\n  \r\n  public JBEWindow(JavaBackEnd paramJavaBackEnd, String paramString1, String paramString2, int paramInt1, int paramInt2)\r\n  {\r\n    super(paramString2);\r\n    this.jbe = paramJavaBackEnd;\r\n    this.windowId = paramString1;\r\n    setLayout(new BorderLayout());\r\n    this.canvas = new JBECanvas(paramString1, paramInt1, paramInt2);\r\n    addWindowListener(this.jbe);\r\n    this.canvas.addComponentListener(this.jbe);\r\n    this.canvas.addMouseListener(this.jbe);\r\n    this.canvas.addMouseMotionListener(this.jbe);\r\n    this.canvas.addKeyListener(this.jbe);\r\n    add(this.canvas, \"Center\");\r\n    createSidePanels();\r\n  }\r\n  \r\n  public JBECanvas getCanvas()\r\n  {\r\n    return this.canvas;\r\n  }\r\n  \r\n  public String getWindowId()\r\n  {\r\n    return this.windowId;\r\n  }\r\n  \r\n  public void close()\r\n  {\r\n    WindowEvent localWindowEvent = new WindowEvent(this, 201);\r\n    processWindowEvent(localWindowEvent);\r\n  }\r\n  \r\n  public void clear()\r\n  {\r\n    this.canvas.clear();\r\n    int i = 0;\r\n    if (this.northPanel != null)\r\n    {\r\n      this.northPanel.removeAll();\r\n      i = 1;\r\n    }\r\n    if (this.eastPanel != null)\r\n    {\r\n      this.eastPanel.removeAll();\r\n      i = 1;\r\n    }\r\n    if (this.southPanel != null)\r\n    {\r\n      this.southPanel.removeAll();\r\n      i = 1;\r\n    }\r\n    if (this.westPanel != null)\r\n    {\r\n      this.westPanel.removeAll();\r\n      i = 1;\r\n    }\r\n    if (i != 0) {\r\n      validate();\r\n    }\r\n  }\r\n  \r\n  public void addToRegion(JComponent paramJComponent, String paramString)\r\n  {\r\n    JPanel localJPanel = null;\r\n    if (paramString.equalsIgnoreCase(\"NORTH\")) {\r\n      localJPanel = this.northPanel;\r\n    } else if (paramString.equalsIgnoreCase(\"EAST\")) {\r\n      localJPanel = this.eastPanel;\r\n    } else if (paramString.equalsIgnoreCase(\"SOUTH\")) {\r\n      localJPanel = this.southPanel;\r\n    } else if (paramString.equalsIgnoreCase(\"WEST\")) {\r\n      localJPanel = this.westPanel;\r\n    }\r\n    if (localJPanel != null)\r\n    {\r\n      localJPanel.add(paramJComponent);\r\n      validate();\r\n    }\r\n  }\r\n  \r\n  public void setRegionAlignment(String paramString1, String paramString2)\r\n  {\r\n    JPanel localJPanel = null;\r\n    if (paramString1.equalsIgnoreCase(\"NORTH\")) {\r\n      localJPanel = this.northPanel;\r\n    } else if (paramString1.equalsIgnoreCase(\"EAST\")) {\r\n      localJPanel = this.eastPanel;\r\n    } else if (paramString1.equalsIgnoreCase(\"SOUTH\")) {\r\n      localJPanel = this.southPanel;\r\n    } else if (paramString1.equalsIgnoreCase(\"WEST\")) {\r\n      localJPanel = this.westPanel;\r\n    }\r\n    int i = 10;\r\n    if (paramString2.equalsIgnoreCase(\"LEFT\")) {\r\n      i = 11;\r\n    } else if (paramString2.equalsIgnoreCase(\"RIGHT\")) {\r\n      i = 12;\r\n    }\r\n    if (localJPanel != null) {\r\n      ((TableLayout)localJPanel.getLayout()).setHorizontalAlignment(i);\r\n    }\r\n  }\r\n  \r\n  private void createSidePanels()\r\n  {\r\n    this.northPanel = new JPanel();\r\n    this.southPanel = new JPanel();\r\n    this.eastPanel = new JPanel();\r\n    this.westPanel = new JPanel();\r\n    this.northPanel.setLayout(new TableLayout(1, 0, 5, 5));\r\n    this.southPanel.setLayout(new TableLayout(1, 0, 5, 5));\r\n    this.westPanel.setLayout(new TableLayout(0, 1, 5, 5));\r\n    this.eastPanel.setLayout(new TableLayout(0, 1, 5, 5));\r\n    add(this.northPanel, \"North\");\r\n    add(this.southPanel, \"South\");\r\n    add(this.eastPanel, \"East\");\r\n    add(this.westPanel, \"West\");\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/Sound_create.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\nclass Sound_create\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str1 = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\",\");\r\n    String str2 = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    String str3 = \"ok\";\r\n    try\r\n    {\r\n      paramJavaBackEnd.createSound(str1, str2);\r\n    }\r\n    catch (Exception localException)\r\n    {\r\n      str3 = localException.getMessage();\r\n    }\r\n    paramJavaBackEnd.println(\"result:\" + str3);\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/Sound_delete.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\nclass Sound_delete\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    paramJavaBackEnd.deleteSound(str);\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/Sound_play.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\nclass Sound_play\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    paramJavaBackEnd.playSound(str);\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/TopCompound.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.graphics.GCompound;\r\n\r\npublic class TopCompound\r\n  extends GCompound\r\n{\r\n  private JBECanvas owner;\r\n  \r\n  public void setCanvas(JBECanvas paramJBECanvas)\r\n  {\r\n    this.owner = paramJBECanvas;\r\n  }\r\n  \r\n  public JBECanvas getCanvas()\r\n  {\r\n    return this.owner;\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaBackEnd/latest-version-decompiled/stanford/spl/TopCompound_create.java",
    "content": "package stanford.spl;\r\n\r\nimport acm.util.TokenScanner;\r\n\r\nclass TopCompound_create\r\n  extends JBECommand\r\n{\r\n  public void execute(TokenScanner paramTokenScanner, JavaBackEnd paramJavaBackEnd)\r\n  {\r\n    paramTokenScanner.verifyToken(\"(\");\r\n    String str = nextString(paramTokenScanner);\r\n    paramTokenScanner.verifyToken(\")\");\r\n    TopCompound localTopCompound = new TopCompound();\r\n    paramJavaBackEnd.defineGObject(str, localTopCompound);\r\n  }\r\n}\r\n"
  },
  {
    "path": "Archived/JavaTaskForce/Makefile",
    "content": "# Makefile for the ACM Java Task Force acm.jar\n# Last modified on Thu Aug  8 08:53:58 2013 by eroberts\n#****************************************************************\n\nJAR = acm.jar\nCP = \".\"\n\nCLASSES = \\\n    stanford/spl/JavaBackEnd.class\n\n# ***************************************************************\n# Entry to bring the package up to date\n#    The \"make all\" entry should be the first real entry\n\nall: $(JAR)\n\nacm.jar: classes/acm/program/Program.class\n\t@(cd classes; jar cf ../acm.jar `find acm -name '*.class'`; cd ..; cp -f acm.jar ../JavaBackEnd)\n\t\nclasses/acm/program/Program.class: src/acm/*/*.java\n\tjavac -d classes -classpath $(CP) -sourcepath src \\\n              src/acm/*/*.java\n\n# ***************************************************************\n# Standard entries to remove files from the directories\n#    tidy    -- eliminate unwanted files\n#    scratch -- delete derived files in preparation for rebuild\n\ntidy:\n\t@rm -f `find . -name ',*' -o -name '.,*' -o -name '*~'`\n\t@rm -f `find . -name '*.tmp' -o -name '*.err'`\n\t@rm -f `find . -name core -o -name a.out`\n\nscratch clean: tidy $(DERIVED)\n\t@rm -fr *.o *.a classes $(JAR)\n\t@mkdir classes"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/graphics/G3DRect.java",
    "content": "/*\n * @(#)G3DRect.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Feature enhancement 26-May-08 (ESR)\n//   1. Added support for serialization.\n//   2. Revised bounding box calculation to conform to Java standard.\n\npackage acm.graphics;\n\nimport java.awt.*;\n\n/* Class: G3DRect */\n/**\n * The <code>G3DRect</code> class is used to represent a rectangle whose\n * borders are drawn to create a three-dimensional effect.  The\n * <code>G3DRect</code> class is a subclass of\n * <a href=\"GRect.html\"><code>GRect</code></a>, and therefore\n * implements all the methods defined for that class.  In addition, the\n * <code>G3DRect</code> class supports the following methods:\n *\n * <p><table cellpadding=0 cellspacing=0 border=0><tr>\n * <td width=20>&nbsp;</td>\n * <td><table cellpadding=2 cellspacing=0 border=1>\n * <tr><td><code>void setRaised(boolean raised)</code><br>\n * <code>&nbsp;&nbsp;&nbsp;</code>Sets the <code>G3DRect</code> to appear\n * raised or lowered as specified by the parameter</td></tr>\n * <tr><td><code>boolean isRaised()</code><br>\n * <code>&nbsp;&nbsp;&nbsp;</code>Returns <code>true</code> if this\n * <code>G3DRect</code> is raised.</td></tr>\n * </table></td></tr></table>\n * <p>The appearance of a <code>G3DRect</code> object depends on the system on\n * which it is displayed and is typically more effective if the\n * <code>G3DRect</code> is filled.\n */\npublic class G3DRect extends GRect {\n\n/* Constructor: G3DRect(width, height) */\n/**\n * Constructs a new 3D rectangle with the specified width and height,\n * positioned at the origin.\n *\n * @usage G3DRect grect = new G3DRect(width, height);\n * @param width The width of the rectangle in pixels\n * @param height The height of the rectangle in pixels\n */\n\tpublic G3DRect(double width, double height) {\n\t\tthis(0, 0, width, height, false);\n\t}\n\n/* Constructor: G3DRect(x, y, width, height) */\n/**\n * Constructs a new 3D rectangle with the specified bounds.\n *\n * @usage G3DRect grect = new G3DRect(x, y, width, height);\n * @param x The x-coordinate of the upper left corner\n * @param y The y-coordinate of the upper left corner\n * @param width The width of the rectangle in pixels\n * @param height The height of the rectangle in pixels\n */\n\tpublic G3DRect(double x, double y, double width, double height) {\n\t\tthis(x, y, width, height, false);\n\t}\n\n/* Constructor: G3DRect(x, y, width, height, raised) */\n/**\n * Constructs a new 3D rectangle with the specified bounds which is\n * raised if the final parameter is <code>true</code>.\n *\n * @usage G3DRect grect = new G3DRect(x, y, width, height, raised);\n * @param x The x-coordinate of the upper left corner\n * @param y The y-coordinate of the upper left corner\n * @param width The width of the rectangle in pixels\n * @param height The height of the rectangle in pixels\n * @param raised <code>true</code> if this rectangle should appear raised\n */\n\tpublic G3DRect(double x, double y, double width, double height, boolean raised) {\n\t\tsuper(x, y, width, height);\n\t\tisRaised = raised;\n\t}\n\n/* Method: paint(g) */\n/**\n * Implements the <code>paint</code> operation for this graphical object.  This method\n * is not called directly by clients.\n * @noshow\n */\n\tpublic void paint(Graphics g) {\n\t\tRectangle r = getAWTBounds();\n\t\tif (isFilled()) {\n\t\t\tg.setColor(getFillColor());\n\t\t\tg.fill3DRect(r.x, r.y, r.width, r.height, isRaised);\n\t\t\tg.setColor(getColor());\n\t\t}\n\t\tg.draw3DRect(r.x, r.y, r.width, r.height, isRaised);\n\t}\n\n/* Inherited method: setLocation(x, y) */\n/**\n * @inherited GObject#void setLocation(double x, double y)\n * Sets the location of this object to the point (<code>x</code>, <code>y</code>).\n */\n\n/* Inherited method: setLocation(pt) */\n/**\n * @inherited GObject#void setLocation(GPoint pt)\n * Sets the location of this object to the specified point.\n */\n\n/* Inherited method: getLocation() */\n/**\n * @inherited GObject#GPoint getLocation()\n * Returns the location of this object as a <code>GPoint</code>.\n */\n\n/* Inherited method: getX() */\n/**\n * @inherited GObject#double getX()\n * Returns the x-coordinate of the object.\n */\n\n/* Inherited method: getY() */\n/**\n * @inherited GObject#double getY()\n * Returns the y-coordinate of the object.\n */\n\n/* Inherited method: move(dx, dy) */\n/**\n * @inherited GObject#void move(double dx, double dy)\n * Moves the object on the screen using the displacements <code>dx</code> and <code>dy</code>.\n */\n\n/* Inherited method: movePolar(r, theta) */\n/**\n * @inherited GObject#void movePolar(double r, double theta)\n * Moves the object using displacements given in polar coordinates.\n */\n\n/* Inherited method: scale(sx, sy) */\n/**\n * @inherited GObject#void scale(double sx, double sy)\n * Scales the object on the screen by the scale factors <code>sx</code> and <code>sy</code>.\n */\n\n/* Inherited method: scale(sf) */\n/**\n * @inherited GObject#void scale(double sf)\n * Scales the object on the screen by the scale factor <code>sf</code>, which applies\n * in both dimensions.\n */\n\n/* Inherited method: setSize(width, height) */\n/**\n * @inherited GObject#void setSize(double width, double height)\n * Changes the size of this object to the specified width and height.\n */\n\n/* Inherited method: setBounds(size) */\n/**\n * @inherited GRect#void setBounds(GDimension size)\n * Changes the size of this object as specified.\n */\n\n/* Inherited method: getSize() */\n/**\n * @inherited GObject#GDimension getSize()\n * Returns the size of the bounding box for this object.\n */\n\n/* Inherited method: getWidth() */\n/**\n * @inherited GObject#double getWidth()\n * Returns the width of this object, which is defined to be\n * the width of the bounding box.\n */\n\n/* Inherited method: getHeight() */\n/**\n * @inherited GObject#double getHeight()\n * Returns the height of this object, which is defined to be\n * the height of the bounding box.\n */\n\n/* Inherited method: setBounds(x, y, width, height) */\n/**\n * @inherited GRect#void setBounds(double x, double y, double width, double height)\n * Changes the bounds of this object to the specified parameters.\n */\n\n/* Inherited method: setBounds(bounds) */\n/**\n * @inherited GRect#void setBounds(GRectangle bounds)\n * Changes the bounds of this object as specified.\n */\n\n/* Inherited method: getBounds() */\n/**\n * @inherited GObject#GRectangle getBounds()\n * Returns the bounding box for this object.\n */\n\n/* Inherited method: contains(x, y) */\n/**\n * @inherited GObject#boolean contains(double x, double y)\n * Checks to see whether a point is inside the object.\n */\n\n/* Inherited method: contains(pt) */\n/**\n * @inherited GObject#boolean contains(GPoint pt)\n * Checks to see whether a point is inside the object.\n */\n\n/* Inherited method: sendToFront() */\n/**\n * @inherited GObject#void sendToFront()\n * Moves this object to the front of the display in the <i>z</i> dimension.\n */\n\n/* Inherited method: sendToBack() */\n/**\n * @inherited GObject#void sendToBack()\n * Moves this object to the back of the display in the <i>z</i> dimension.\n */\n\n/* Inherited method: sendForward() */\n/**\n * @inherited GObject#void sendForward()\n * Moves this object one step toward the front in the <i>z</i> dimension.\n */\n\n/* Inherited method: sendBackward() */\n/**\n * @inherited GObject#void sendBackward()\n * Moves this object one step toward the back in the <i>z</i> dimension.\n */\n\n/* Inherited method: setColor(color) */\n/**\n * @inherited GObject#void setColor(Color color)\n * Sets the color used to display this object.\n */\n\n/* Inherited method: getColor() */\n/**\n * @inherited GObject#Color getColor()\n * Returns the color used to display this object.\n */\n\n/* Inherited method: setFillColor(color) */\n/**\n * @inherited GObject#void setFillColor(Color color)\n * Sets the color used to display the filled region of this object.\n */\n\n/* Inherited method: getFillColor() */\n/**\n * @inherited GObject#Color getFillColor()\n * Returns the color used to display the filled region of this object.\n */\n\n/* Inherited method: setFilled(fill) */\n/**\n * @inherited GObject#void setFilled(boolean fill)\n * Sets whether this object is filled.\n */\n\n/* Inherited method: isFilled() */\n/**\n * @inherited GObject#boolean isFilled()\n * Returns whether this object is filled.\n */\n\n/* Inherited method: setVisible(visible) */\n/**\n * @inherited GObject#void setVisible(boolean visible)\n * Sets whether this object is visible.\n */\n\n/* Inherited method: isVisible() */\n/**\n * @inherited GObject#boolean isVisible()\n * Checks to see whether this object is visible.\n */\n\n/* Inherited method: addMouseListener(listener) */\n/**\n * @inherited GObject#void addMouseListener(MouseListener listener)\n * Adds a mouse listener to this graphical object.\n */\n\n/* Inherited method: removeMouseListener(listener) */\n/**\n * @inherited GObject#void removeMouseListener(MouseListener listener)\n * Removes a mouse listener from this graphical object.\n */\n\n/* Inherited method: addMouseMotionListener(listener) */\n/**\n * @inherited GObject#void addMouseMotionListener(MouseMotionListener listener)\n * Adds a mouse motion listener to this graphical object.\n */\n\n/* Inherited method: removeMouseMotionListener(listener) */\n/**\n * @inherited GObject#void removeMouseMotionListener(MouseMotionListener listener)\n * Removes a mouse motion listener from this graphical object.\n */\n\n/* Method: setRaised(raised) */\n/**\n * Sets whether this object appears raised.\n *\n * @usage grect.setRaised(raised);\n * @param raised <code>true</code> if the object appears raised, <code>false</code> otherwise\n */\n\tpublic void setRaised(boolean raised) {\n\t\tisRaised = raised;\n\t}\n\n/* Method: isRaised() */\n/**\n * Tests whether this object appears raised.\n *\n * @usage if (grect.isRaised()) . . .\n * @return <code>true</code> if the object appears raised, <code>false</code> otherwise\n */\n\tpublic boolean isRaised() {\n\t\treturn isRaised;\n\t}\n\n/* Private instance variables */\n\tprivate boolean isRaised;\n\n/* Serial version UID */\n/**\n * The serialization code for this class.  This value should be incremented\n * whenever you change the structure of this class in an incompatible way,\n * typically by adding a new instance variable.\n */\n\tstatic final long serialVersionUID = 1L;\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/graphics/GArc.java",
    "content": "/*\n * @(#)GArc.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Bug fix 26-Apr-07 (ESR, JTFBug 2007-005, reported by Leland Beck)\n//   1. Fixed problems with cross-file references to ArcRenderer.\n//\n// Bug fix 28-May-07 (ESR, JTFBug 2007-009)\n//   1. Fixed synchronization problem in ArcRenderer.\n//\n// Code cleanup 28-May-07 (ESR)\n//   1. Added generic type tags.\n//\n// Feature enhancement 26-May-08 (ESR)\n//   1. Added support for serialization.\n//   2. Revised bounding box calculation to conform to Java standard.\n\npackage acm.graphics;\n\nimport java.awt.*;\nimport java.io.*;\n\n/* Class: GArc */\n/**\n * The <code>GArc</code> class is a graphical object whose appearance consists\n * of an arc.  If unfilled, the arc is simply a portion of the circumference of\n * an ellipse; if filled, the arc is a pie-shaped wedge connected to the center\n * of the figure.\n */\npublic class GArc extends GObject implements GFillable, GScalable {\n\n/* Field: ARC_TOLERANCE */\n/**\n * This constant defines how close (measured in pixel units) a point has\n * to be to an arc before that point is considered to be \"contained\" within\n * the arc.\n */\n\tpublic static final double ARC_TOLERANCE = 2.5;\n\t// BUG?: THIS SEEMS TO REQUIRE HITTING THE ARC EXACTLY EVEN WITH 2.5\n\n/* Constructor: GArc(width, height, start, sweep) */\n/**\n * Creates a new <code>GArc</code> object consisting of an elliptical arc\n * located at the point (0,&nbsp;0).  For complete descriptions of the\n * other parameters, see the entry for the\n * <a href=\"#GArc(double, double, double, double, double, double)\"><code>GArc</code></a>\n * constructor that includes explicit <code>x</code> and <code>y</code>\n * parameters.\n *\n * @usage GArc garc = new GArc(width, height, start, sweep);\n * @param width The width of the rectangle in which the arc is inscribed\n * @param height The height of the rectangle in which the arc is inscribed\n * @param start The angle at which the arc begins measured in degrees counterclockwise\n *              from the +x axis\n * @param sweep The extent of the arc, measured in degrees counterclockwise\n */\n\tpublic GArc(double width, double height, double start, double sweep) {\n\t\tthis(0, 0, width, height, start, sweep);\n\t}\n\n/* Constructor: GArc(x, y, width, height, start, sweep) */\n/**\n * Creates a new <code>GArc</code> object consisting of an elliptical arc\n * inscribed in a rectangle located at the point (<code>x</code>,&nbsp;<code>y</code>)\n * with the specified width and height.  The <code>start</code> parameter indicates\n * the angle at which the arc begins and is measured in degrees counterclockwise\n * from the +x axis.  Thus, a <code>start</code> angle of 0 indicates an arc\n * that begins along the line running eastward from the center (the 3:00\n * o&#146;clock position), a <code>start</code> angle of 135\n * begins along the line running northwest, and a <code>start</code>\n * angle of -90 begins along the line running south (the 6:00\n * o&#146;clock position).  The <code>sweep</code> parameter indicates\n * the extent of the arc and is also measured in degrees counterclockwise.\n * A <code>sweep</code> angle of 90 defines a quarter circle extending\n * counterclockwise from the <code>start</code> angle, and a\n * <code>sweep</code> angle of -180 defines a semicircle extending\n * clockwise.\n *\n * @usage GArc garc = new GArc(x, y, width, height, start, sweep);\n * @param x The x-coordinate for the rectangle in which the arc is inscribed\n * @param y The y-coordinate for the rectangle in which the arc is inscribed\n * @param width The width of the rectangle in which the arc is inscribed\n * @param height The height of the rectangle in which the arc is inscribed\n * @param start The angle at which the arc begins measured in degrees counterclockwise\n *              from the +x axis\n * @param sweep The extent of the arc, measured in degrees counterclockwise\n */\n\tpublic GArc(double x, double y, double width, double height, double start, double sweep) {\n\t\tframeWidth = width;\n\t\tframeHeight = height;\n\t\tarcStart = start;\n\t\tarcSweep = sweep;\n\t\tsetLocation(x, y);\n\t\trenderer = new ArcRenderer(this);\n\t}\n\n/* Method: setStartAngle(start) */\n/**\n * Sets the starting angle for this <code>GArc</code> object.\n *\n * @usage garc.setStartAngle(start);\n * @param start The new starting angle\n */\n\tpublic void setStartAngle(double start) {\n\t\tarcStart = start;\n\t\trepaint();\n\t}\n\n/* Method: getStartAngle() */\n/**\n * Returns the starting angle for this <code>GArc</code> object.\n *\n * @usage double start = garc.getStartAngle();\n * @return The starting angle for this arc\n */\n\tpublic double getStartAngle() {\n\t\treturn arcStart;\n\t}\n\n/* Method: setSweepAngle(sweep) */\n/**\n * Sets the sweep angle for this <code>GArc</code> object.\n *\n * @usage garc.setSweepAngle(sweep);\n * @param sweep The new sweep angle\n */\n\tpublic void setSweepAngle(double sweep) {\n\t\tarcSweep = sweep;\n\t\trepaint();\n\t}\n\n/* Method: getSweepAngle() */\n/**\n * Returns the sweep angle for this <code>GArc</code> object.\n *\n * @usage double sweep = garc.getSweepAngle();\n * @return The sweep angle for this arc\n */\n\tpublic double getSweepAngle() {\n\t\treturn arcSweep;\n\t}\n\n/* Method: getStartPoint() */\n/**\n * Returns the point at which the arc starts.\n *\n * @usage GPoint pt = garc.getStartPoint();\n * @return The point at which the arc starts\n */\n\tpublic GPoint getStartPoint() {\n\t\treturn getArcPoint(arcStart);\n\t}\n\n/* Method: getEndPoint() */\n/**\n * Returns the point at which the arc ends.\n *\n * @usage GPoint pt = garc.getEndPoint();\n * @return The point at which the arc ends\n */\n\tpublic GPoint getEndPoint() {\n\t\treturn getArcPoint(arcStart + arcSweep);\n\t}\n\n/* Method: paint(g) */\n/**\n * Implements the <code>paint</code> operation for this graphical object.  This method\n * is not called directly by clients.\n * @noshow\n */\n\tpublic void paint(Graphics g) {\n\t\tComponent comp = getComponent();\n\t\tif (isRenderer || ((comp instanceof GCanvas) && !((GCanvas) comp).getNativeArcFlag())) {\n\t\t\trenderer.draw(g);\n\t\t} else {\n\t\t\tRectangle r = getAWTBounds();\n\t\t\tint cx = GMath.round(getX() + frameWidth / 2);\n\t\t\tint cy = GMath.round(getY() + frameHeight / 2);\n\t\t\tint iStart = GMath.round(arcStart);\n\t\t\tint iSweep = GMath.round(arcSweep);\n\t\t\tif (isFilled()) {\n\t\t\t\tg.setColor(getFillColor());\n\t\t\t\tg.fillArc(r.x, r.y, r.width, r.height, iStart, iSweep);\n\t\t\t\tg.setColor(getColor());\n\t\t\t\tg.drawArc(r.x, r.y, r.width, r.height, iStart, iSweep);\n\t\t\t\tPoint start = getArcPoint(iStart).toPoint();\n\t\t\t\tg.drawLine(cx, cy, start.x, start.y);\n\t\t\t\tPoint end = getArcPoint(iStart + iSweep).toPoint();\n\t\t\t\tg.drawLine(cx, cy, end.x, end.y);\n\t\t\t} else {\n\t\t\t\tg.drawArc(r.x, r.y, r.width, r.height, iStart, iSweep);\n\t\t\t}\n\t\t}\n\t}\n\n/* Method: getBounds() */\n/**\n * Returns the bounding box of the arc.  Note that this method returns the\n * bounds of the visible portion of the arc and will therefore not contain\n * the same values as specified in\n * <a href=\"#setFrameRectangle(double, double, double, double)\"><code>setFrameRectangle</code></a>.\n * To obtain the bounds used to describe the Java arc, use\n * <a href=\"#getFrameRectangle()\"><code>getFrameRectangle</code></a>.\n *\n * @usage GRectangle bounds = garc.getBounds();\n * @return The bounding box of this object\n */\n\tpublic GRectangle getBounds() {\n\t\tdouble rx = frameWidth / 2;\n\t\tdouble ry = frameHeight / 2;\n\t\tdouble cx = getX() + rx;\n\t\tdouble cy = getY() + ry;\n\t\tdouble p1x = cx + GMath.cosDegrees(arcStart) * rx;\n\t\tdouble p1y = cy - GMath.sinDegrees(arcStart) * ry;\n\t\tdouble p2x = cx + GMath.cosDegrees(arcStart + arcSweep) * rx;\n\t\tdouble p2y = cy - GMath.sinDegrees(arcStart + arcSweep) * ry;\n\t\tdouble xMin = Math.min(p1x, p2x);\n\t\tdouble xMax = Math.max(p1x, p2x);\n\t\tdouble yMin = Math.min(p1y, p2y);\n\t\tdouble yMax = Math.max(p1y, p2y);\n\t\tif (containsAngle(0)) xMax = cx + rx;\n\t\tif (containsAngle(90)) yMin = cy - ry;\n\t\tif (containsAngle(180)) xMin = cx - rx;\n\t\tif (containsAngle(270)) yMax = cy + ry;\n\t\tif (isFilled()) {\n\t\t\txMin = Math.min(xMin, cx);\n\t\t\tyMin = Math.min(yMin, cy);\n\t\t\txMax = Math.max(xMax, cx);\n\t\t\tyMax = Math.max(yMax, cy);\n\t\t}\n\t\treturn new GRectangle(xMin, yMin, xMax - xMin, yMax - yMin);\n\t}\n\n/* Method: contains(x, y) */\n/**\n * Checks to see whether a point is inside the object.  For the <code>GArc</code>\n * class, containment depends on whether the arc is filled.  Filled arcs are a\n * wedge in which containment can be defined in a natural way; unfilled arcs are\n * essentially lines, which means that containment is defined to mean that the\n * point is within <a href=\"#ARC_TOLERANCE\"><code>ARC_TOLERANCE</code></a> pixels\n * of the arc.\n *\n * @usage if (garc.contains(x, y)) . . .\n * @param x The x-coordinate of the point being tested\n * @param y The y-coordinate of the point being tested\n * @return <code>true</code> if the point (<code>x</code>,&nbsp;<code>y</code>) is inside\n */\n\tpublic boolean contains(double x, double y) {\n\t\tdouble rx = frameWidth / 2;\n\t\tdouble ry = frameHeight / 2;\n\t\tif (rx == 0 || ry == 0) return false;\n\t\tdouble dx = x - (getX() + rx);\n\t\tdouble dy = y - (getY() + ry);\n\t\tdouble r = (dx * dx) / (rx * rx) + (dy * dy) / (ry * ry);\n\t\tif (isFilled()) {\n\t\t\tif (r > 1.0) return false;\n\t\t} else {\n\t\t\tdouble t = ARC_TOLERANCE / ((rx + ry) / 2);\n\t\t\tif (Math.abs(1.0 - r) > t) return false;\n\t\t}\n\t\treturn containsAngle(GMath.toDegrees(Math.atan2(-dy, dx)));\n\t}\n\n/* Method: setFrameRectangle(x, y, width, height) */\n/**\n * Changes the arc bounds to the specified values.\n *\n * @usage garc.setBounds(x, y, width, height);\n * @param x The x-coordinate for the rectangle in which the arc is inscribed\n * @param y The y-coordinate for the rectangle in which the arc is inscribed\n * @param width The width of the rectangle in which the arc is inscribed\n * @param height The height of the rectangle in which the arc is inscribed\n */\n\tpublic void setFrameRectangle(double x, double y, double width, double height) {\n\t\tframeWidth = width;\n\t\tframeHeight = height;\n\t\tsetLocation(x, y);\n\t}\n\n/* Method: setFrameRectangle(bounds) */\n/**\n * Changes the arc bounds to the values from the specified <code>GRectangle</code>.\n *\n * @usage garc.setFrameRectangle(bounds);\n * @param bounds A <code>GRectangle</code> specifying the new arc bounds\n */\n\tpublic final void setFrameRectangle(GRectangle bounds) {\n\t\tsetFrameRectangle(bounds.getX(), bounds.getY(), bounds.getWidth(), bounds.getHeight());\n\t}\n\n/* Method: getFrameRectangle() */\n/**\n * Returns the bounds of the <code>GRectangle</code> in which this arc is inscribed.\n * Note that this is usually different from the bounding box returned by\n * <a href=\"#getBounds()\"><code>getBounds</code></a>, which returns the bounding\n * box in which the displayed portion of the arc is contained.\n *\n * @usage GRectangle bounds = garc.getFrameRectangle();\n * @return The <code>GRectangle</code> in which this arc is inscribed\n */\n\tpublic GRectangle getFrameRectangle() {\n\t\treturn new GRectangle(getX(), getY(), frameWidth, frameHeight);\n\t}\n\n/* Method: scale(sx, sy) */\n/**\n * Scales the object on the screen by the scale factors <code>sx</code> and <code>sy</code>.\n *\n * @usage gobj.scale(sx, sy);\n * @param sx The factor used to scale all coordinates in the x direction\n * @param sy The factor used to scale all coordinates in the y direction\n */\n\tpublic void scale(double sx, double sy) {\n\t\tframeWidth *= sx;\n\t\tframeHeight *= sy;\n\t\trepaint();\n\t}\n\n/* Method: scale(sf) */\n/**\n * Scales the object on the screen by the scale factor <code>sf</code>, which applies\n * in both dimensions.\n *\n * @usage gobj.scale(sf);\n * @param sf The factor used to scale all coordinates in both dimensions\n */\n\tpublic final void scale(double sf) {\n\t\tscale(sf, sf);\n\t}\n\n/* Method: setFilled(fill) */\n/**\n * Sets whether this object is filled.\n *\n * @usage garc.setFilled(fill);\n * @param fill <code>true</code> if the object should be filled, <code>false</code> for an outline\n */\n\tpublic void setFilled(boolean fill) {\n\t\tisFilled = fill;\n\t\trepaint();\n\t}\n\n/* Method: isFilled() */\n/**\n * Returns whether this object is filled.\n *\n * @usage if (garc.isFilled()) . . .\n * @return The color used to display the object\n */\n\tpublic boolean isFilled() {\n\t\treturn isFilled;\n\t}\n\n/* Method: setFillColor(color) */\n/**\n * Sets the color used to display the filled region of this object.\n *\n * @usage garc.setFillColor(color);\n * @param color The color used to display the filled region of this object\n */\n\tpublic void setFillColor(Color color) {\n\t\tfillColor = color;\n\t\trepaint();\n\t}\n\n/* Method: getFillColor() */\n/**\n * Returns the color used to display the filled region of this object.  If\n * none has been set, <code>getFillColor</code> returns the color of the\n * object.\n *\n * @usage Color color = garc.getFillColor();\n * @return The color used to display the filled region of this object\n */\n\tpublic Color getFillColor() {\n\t\treturn (fillColor == null) ? getColor() : fillColor;\n\t}\n\n/* Inherited method: setLocation(x, y) */\n/**\n * @inherited GObject#void setLocation(double x, double y)\n * Sets the location of this object to the point (<code>x</code>, <code>y</code>).\n */\n\n/* Inherited method: setLocation(pt) */\n/**\n * @inherited GObject#void setLocation(GPoint pt)\n * Sets the location of this object to the specified point.\n */\n\n/* Inherited method: getLocation() */\n/**\n * @inherited GObject#GPoint getLocation()\n * Returns the location of this object as a <code>GPoint</code>.\n */\n\n/* Inherited method: getX() */\n/**\n * @inherited GObject#double getX()\n * Returns the x-coordinate of the object.\n */\n\n/* Inherited method: getY() */\n/**\n * @inherited GObject#double getY()\n * Returns the y-coordinate of the object.\n */\n\n/* Inherited method: move(dx, dy) */\n/**\n * @inherited GObject#void move(double dx, double dy)\n * Moves the object on the screen using the displacements <code>dx</code> and <code>dy</code>.\n */\n\n/* Inherited method: movePolar(r, theta) */\n/**\n * @inherited GObject#void movePolar(double r, double theta)\n * Moves the object using displacements given in polar coordinates.\n */\n\n/* Inherited method: getSize() */\n/**\n * @inherited GObject#GDimension getSize()\n * Returns the size of the bounding box for this object.\n */\n\n/* Inherited method: getWidth() */\n/**\n * @inherited GObject#double getWidth()\n * Returns the width of this object, which is defined to be\n * the width of the bounding box.\n */\n\n/* Inherited method: getHeight() */\n/**\n * @inherited GObject#double getHeight()\n * Returns the height of this object, which is defined to be\n * the height of the bounding box.\n */\n\n/* Inherited method: contains(pt) */\n/**\n * @inherited GObject#boolean contains(GPoint pt)\n * Checks to see whether a point is inside the object.\n */\n\n/* Inherited method: sendToFront() */\n/**\n * @inherited GObject#void sendToFront()\n * Moves this object to the front of the display in the <i>z</i> dimension.\n */\n\n/* Inherited method: sendToBack() */\n/**\n * @inherited GObject#void sendToBack()\n * Moves this object to the back of the display in the <i>z</i> dimension.\n */\n\n/* Inherited method: sendForward() */\n/**\n * @inherited GObject#void sendForward()\n * Moves this object one step toward the front in the <i>z</i> dimension.\n */\n\n/* Inherited method: sendBackward() */\n/**\n * @inherited GObject#void sendBackward()\n * Moves this object one step toward the back in the <i>z</i> dimension.\n */\n\n/* Inherited method: setColor(color) */\n/**\n * @inherited GObject#void setColor(Color color)\n * Sets the color used to display this object.\n */\n\n/* Inherited method: getColor() */\n/**\n * @inherited GObject#Color getColor()\n * Returns the color used to display this object.\n */\n\n/* Inherited method: setVisible(visible) */\n/**\n * @inherited GObject#void setVisible(boolean visible)\n * Sets whether this object is visible.\n */\n\n/* Inherited method: isVisible() */\n/**\n * @inherited GObject#boolean isVisible()\n * Checks to see whether this object is visible.\n */\n\n/* Inherited method: addMouseListener(listener) */\n/**\n * @inherited GObject#void addMouseListener(MouseListener listener)\n * Adds a mouse listener to this graphical object.\n */\n\n/* Inherited method: removeMouseListener(listener) */\n/**\n * @inherited GObject#void removeMouseListener(MouseListener listener)\n * Removes a mouse listener from this graphical object.\n */\n\n/* Inherited method: addMouseMotionListener(listener) */\n/**\n * @inherited GObject#void addMouseMotionListener(MouseMotionListener listener)\n * Adds a mouse motion listener to this graphical object.\n */\n\n/* Inherited method: removeMouseMotionListener(listener) */\n/**\n * @inherited GObject#void removeMouseMotionListener(MouseMotionListener listener)\n * Removes a mouse motion listener from this graphical object.\n */\n\n/* Protected method: getAWTBounds() */\n/**\n * Returns an AWT <code>Rectangle</code> that specifies the bounds of this object.\n *\n * @usage Rectangle r = garc.getAWTBounds();\n * @return A <code>Rectangle</code> that specifies the bounds of this object\n */\n\tprotected Rectangle getAWTBounds() {\n\t\treturn new Rectangle(GMath.round(getX()), GMath.round(getY()), GMath.round(frameWidth), GMath.round(frameHeight));\n\t}\n\n/* Protected method: paramString() */\n/**\n * Returns a string indicating the parameters of this object.\n * @noshow\n */\n\tpublic String paramString() {\n\t\tString tail = super.paramString();\n\t\ttail = tail.substring(tail.indexOf(')') + 1);\n\t\tGRectangle r = getFrameRectangle();\n\t\tString param = \"frame=(\" + r.getX() + \", \" + r.getY() + \", \"\n\t\t               + r.getWidth() + \", \" + r.getHeight() + \")\";\n\t\tparam += \", start=\" + arcStart + \", sweep=\" + arcSweep;\n\t\treturn param + tail;\n\t}\n\n/** Private method: getArcPoint(angle) */\n/**\n * Returns the point on the ellipse for the arc at the specified angle.\n */\n\tprivate GPoint getArcPoint(double angle) {\n\t\tdouble rx = frameWidth / 2;\n\t\tdouble ry = frameHeight / 2;\n\t\tdouble cx = getX() + rx;\n\t\tdouble cy = getY() + ry;\n\t\treturn new GPoint(cx + rx * GMath.cosDegrees(angle), cy - ry * GMath.sinDegrees(angle));\n\t}\n\n/* Private method: containsAngle(theta) */\n/**\n * Returns <code>true</code> if the arc contains the specified angle.\n */\n\tprivate boolean containsAngle(double theta) {\n\t\tdouble start = Math.min(getStartAngle(), getStartAngle() + getSweepAngle());\n\t\tdouble sweep = Math.abs(getSweepAngle());\n\t\tif (sweep >= 360) return true;\n\t\ttheta = (theta < 0) ? 360 - (-theta % 360) : theta % 360;\n\t\tstart = (start < 0) ? 360 - (-start % 360) : start % 360;\n\t\tif (start + sweep > 360) {\n\t\t\treturn theta >= start || theta <= start + sweep - 360;\n\t\t} else {\n\t\t\treturn theta >= start && theta <= start + sweep;\n\t\t}\n\t}\n\n/* Package-private constructor: GArc(gobj) */\n/**\n * This constructor creates a <code>GArc</code> that exists only\n * to render the arcs on behalf some other object.\n */\n\tGArc(GObject gobj) {\n\t\tisRenderer = true;\n\t\trenderer = new ArcRenderer(gobj);\n\t}\n\n/* Private instance variables */\n\tprivate double frameWidth;\n\tprivate double frameHeight;\n\tprivate double arcStart;\n\tprivate double arcSweep;\n\tprivate Color fillColor;\n\tprivate boolean isFilled;\n\tprivate boolean isRenderer;\n\tprivate ArcRenderer renderer;\n\n/* Serial version UID */\n/**\n * The serialization code for this class.  This value should be incremented\n * whenever you change the structure of this class in an incompatible way,\n * typically by adding a new instance variable.\n */\n\tstatic final long serialVersionUID = 1L;\n}\n\n/* Package class: ArcRenderer */\n/**\n * This class supports the implementation of rendered arcs, which are\n * used by default for arcs and ovals.  The class maintains an internal\n * polygon that stores the approximate points.  The methods that draw\n * the object automatically update the cached version if any of the\n * parameters have changed.\n */\nclass ArcRenderer implements Serializable {\n\n/* Constructor: ArcRenderer(gobj) */\n/**\n * Creates a new renderer object to draw the parent object.\n */\n\tpublic ArcRenderer(GObject gobj) {\n\t\ttarget = gobj;\n\t\tpoly = new Polygon();\n\t\tcacheValid = false;\n\t}\n\n/* Method: draw(g) */\n/**\n * Draws the object given the specified graphics context, filling\n * it if appropriate.\n */\n\tpublic synchronized void draw(Graphics g) {\n\t\tvalidateCache();\n\t\tif (((GFillable) target).isFilled()) {\n\t\t\tg.setColor(((GFillable) target).getFillColor());\n\t\t\tg.fillPolygon(poly.xpoints, poly.ypoints, poly.npoints);\n\t\t\tg.setColor(target.getColor());\n\t\t\tg.drawPolygon(poly.xpoints, poly.ypoints, poly.npoints);\n\t\t} else if (target instanceof GArc) {\n\t\t\tg.drawPolyline(poly.xpoints, poly.ypoints, poly.npoints - 1);\n\t\t} else {\n\t\t\tg.drawPolygon(poly.xpoints, poly.ypoints, poly.npoints);\n\t\t}\n\t}\n\n/* Private method: validateCache() */\n/**\n * Makes sure that the internal polygon is up to date.\n */\n\tprivate void validateCache() {\n\t\tGRectangle bounds = null;\n\t\tdouble start = 0;\n\t\tdouble sweep = 360;\n\t\tif (target instanceof GOval || target instanceof GRoundRect) {\n\t\t\tbounds = target.getBounds();\n\t\t} else {\n\t\t\tGArc arc = (GArc) target;\n\t\t\tbounds = arc.getFrameRectangle();\n\t\t\tstart = arc.getStartAngle();\n\t\t\tsweep = arc.getSweepAngle();\n\t\t\tif (start != oldStart || sweep != oldSweep) cacheValid = false;\n\t\t}\n\t\tif (bounds == null) return;\n\t\tdouble x = bounds.getX();\n\t\tdouble y = bounds.getY();\n\t\tdouble width = bounds.getWidth();\n\t\tdouble height = bounds.getHeight();\n\t\tif (width <= 0 || height <= 0) return;\n\t\tif (!cacheValid || width != oldBounds.getWidth() || height != oldBounds.getHeight()) {\n\t\t\tpoly.npoints = 0;\n\t\t\tif (target instanceof GRoundRect) {\n\t\t\t\tGRoundRect rr = (GRoundRect) target;\n\t\t\t\tdouble arcWidth = GMath.round(rr.getArcWidth());\n\t\t\t\tdouble arcHeight = GMath.round(rr.getArcHeight());\n\t\t\t\tpoly.addPoint(GMath.round(x + arcWidth / 2 + EPSILON), GMath.round(y + EPSILON));\n\t\t\t\taddArc(x, y, arcWidth, arcHeight, 90, 90);\n\t\t\t\taddArc(x, y + height - arcHeight, arcWidth, arcHeight, 180, 90);\n\t\t\t\taddArc(x + width - arcWidth, y + height - arcHeight, arcWidth, arcHeight, 270, 90);\n\t\t\t\taddArc(x + width - arcWidth, y, arcWidth, arcHeight, 0, 90);\n\t\t\t} else {\n\t\t\t\taddArc(x, y, width, height, start, sweep);\n\t\t\t\tif (target instanceof GArc) {\n\t\t\t\t\tpoly.addPoint(GMath.round(x + width / 2 + EPSILON), GMath.round(y + height / 2 + EPSILON));\n\t\t\t\t\toldStart = start;\n\t\t\t\t\toldSweep = sweep;\n\t\t\t\t}\n\t\t\t}\n\t\t\tx0 = GMath.round(poly.xpoints[0] - x);\n\t\t\ty0 = GMath.round(poly.ypoints[0] - y);\n\t\t\toldBounds = bounds;\n\t\t}\n\t\tif (x != oldBounds.getX() || y != oldBounds.getY()) {\n\t\t\tmovePoly(GMath.round(x + EPSILON), GMath.round(y + EPSILON));\n\t\t\toldBounds = bounds;\n\t\t}\n\t\tcacheValid = true;\n\t}\n\n/* Private method: addArc(x, y, width, height, start, sweep) */\n/**\n * Adds the points for an elliptical arc as specified by the parameters, which\n * have the same interpretation as in the <code>GArc</code> class.\n */\n\tprivate synchronized void addArc(double x, double y, double width, double height, double start, double sweep) {\n\t\tdouble aspectRatio = height / width;\n\t\tdouble rx = width / 2.0;\n\t\tdouble ry = height / 2.0;\n\t\tdouble xc = x + rx;\n\t\tdouble yc = y + ry;\n\t\tif (sweep < 0) {\n\t\t\tstart += sweep;\n\t\t\tsweep = -sweep;\n\t\t}\n\t\tif (sweep > 359.99) sweep = 360;\n\t\tdouble dt = Math.atan2(1, Math.max(width, height));\n\t\tint nSteps = (int) (GMath.toRadians(sweep) / dt);\n\t\tdt = GMath.toRadians(sweep) / nSteps;\n\t\tdouble theta = GMath.toRadians(start);\n\t\tfor (int i = 0; i <= nSteps; i++) {\n\t\t\tdouble px = xc + rx * Math.cos(theta);\n\t\t\tdouble py = yc - rx * Math.sin(theta) * aspectRatio;\n\t\t\tpoly.addPoint(GMath.round(px + EPSILON), GMath.round(py + EPSILON));\n\t\t\ttheta += dt;\n\t\t}\n\t}\n\n/* Private method: movePoly(x, y) */\n/**\n * Shifts the polygon so that its origin is now at (x, y).\n */\n\tprivate synchronized void movePoly(int x, int y) {\n\t\tint dx = x - (poly.xpoints[0] - x0);\n\t\tint dy = y - (poly.ypoints[0] - y0);\n\t\tfor (int i = 0; i < poly.npoints; i++) {\n\t\t\tpoly.xpoints[i] += dx;\n\t\t\tpoly.ypoints[i] += dy;\n\t\t}\n\t}\n\n/* Private constants */\n\tprivate static final double EPSILON = 0.00001;\n\n/* Private instance variables */\n\tprivate GObject target;\n\tprivate Polygon poly;\n\tprivate int x0;\n\tprivate int y0;\n\tprivate GRectangle oldBounds;\n\tprivate double oldStart;\n\tprivate double oldSweep;\n\tprivate boolean cacheValid;\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/graphics/GCanvas.java",
    "content": "/*\n * @(#)GCanvas.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Bug fix 27-Jul-06 (ESR, JTFBug 2006-001, reported by Chris Nevison)\n//   1. Fixed implementation of enabledList.\n//\n// Bug fix 26-Apr-07 (ESR, JTFBug 2007-005, reported by Leland Beck)\n//   1. Removed cross-file reference to GMouseEvent.\n//\n// Code cleanup 28-May-07 (ESR)\n//   1. Added generic type tags.\n//   2. Substituted GObjectList for ArrayList.\n//   3. Removed warnings about use of Iterator.\n//\n// Feature enhancement 26-May-08 (ESR)\n//   1. Added support for serialization.\n\npackage acm.graphics;\n\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.util.*;\n\n/* Class: GCanvas */\n/**\n * The <code>GCanvas</code> class is a lightweight component that also\n * serves as a container for graphical objects.  As such, this class\n * provides the link between graphical objects and the window system.\n * Conceptually, the <code>GCanvas</code> provides a background canvas\n * to which other graphical objects can be added.\n */\npublic class GCanvas extends Container implements GContainer {\n\n/* Constructor: GCanvas() */\n/**\n * Creates a new <code>GCanvas</code> that contains no objects.\n *\n * @usage GCanvas gc = new GCanvas();\n */\n\tpublic GCanvas() {\n\t\tcontents = new GObjectList(this);\n\t\tsetBackground(Color.WHITE);\n\t\tsetForeground(Color.BLACK);\n\t\tsetOpaque(true);\n\t\tsetAutoRepaintFlag(true);\n\t\tsetNativeArcFlag(false);\n\t\tsetLayout(null);\n\t\tgCanvasListener = new GCanvasListener(this);\n\t\taddComponentListener(gCanvasListener);\n\t\taddMouseListener(gCanvasListener);\n\t\taddMouseMotionListener(gCanvasListener);\n\t}\n\n/* Method: add(gobj) */\n/**\n * Adds the graphical object to this canvas.\n *\n * @usage gc.add(gobj);\n * @param gobj The graphical object to add\n */\n\tpublic void add(GObject gobj) {\n\t\tcontents.add(gobj);\n\t\tconditionalRepaint();\n\t}\n\n/* Method: add(gobj, x, y) */\n/**\n * Adds the graphical object to this canvas and sets its location\n * to the point (<code>x</code>,&nbsp;<code>y</code>).\n *\n * @usage gc.add(gobj, x, y);\n * @param gobj The graphical object to add\n * @param x The new x-coordinate for the object\n * @param y The new y-coordinate for the object\n */\n\tpublic final void add(GObject gobj, double x, double y) {\n\t\tgobj.setLocation(x, y);\n\t\tadd(gobj);\n\t}\n\n/* Method: add(gobj, pt) */\n/**\n * Adds the graphical object to this canvas and sets its location to the specified point.\n *\n * @usage gc.add(gobj, pt);\n * @param gobj The graphical object to add\n * @param pt A <code>GPoint</code> object giving the coordinates of the point\n */\n\tpublic final void add(GObject gobj, GPoint pt) {\n\t\tadd(gobj, pt.getX(), pt.getY());\n\t}\n\n/* Method: remove(gobj) */\n/**\n * Removes a graphical object from this <code>GCanvas</code>.\n *\n * @usage gc.remove(gobj);\n * @param gobj The graphical object to remove\n */\n\tpublic void remove(GObject gobj) {\n\t\tcontents.remove(gobj);\n\t\tconditionalRepaint();\n\t}\n\n/* Method: removeAll() */\n/**\n * Removes all graphical objects from this <code>GCanvas</code>.\n *\n * @usage gc.removeAll();\n */\n\tpublic void removeAll() {\n\t\tcontents.removeAll();\n\t\tsuper.removeAll();\n\t\trepaint();\n\t}\n\n/* Method: add(comp) */\n/**\n * Adds the component to this canvas without changing its location.\n * If the component has no size, its size is set to its preferred size.\n * The return type is <code>Component</code> to match the method in\n * the <code>Container</code> class, but the result is typically\n * ignored.\n *\n * @usage gc.add(comp);\n * @param comp The component to add\n */\n\tpublic Component add(Component comp) {\n\t\tsuper.add(comp);\n\t\tDimension size = comp.getSize();\n\t\tif (size.width == 0 || size.height == 0) {\n\t\t\tDimension preferredSize = comp.getPreferredSize();\n\t\t\tif (size.width == 0) size.width = preferredSize.width;\n\t\t\tif (size.height == 0) size.height = preferredSize.height;\n\t\t\tcomp.setSize(size);\n\t\t}\n\t\treturn comp;\n\t}\n\n/* Method: add(comp, x, y) */\n/**\n * Adds the component to this canvas and sets its location\n * to the point (<code>x</code>,&nbsp;<code>y</code>).\n *\n * @usage gc.add(comp, x, y);\n * @param comp The component to add\n * @param x The new x-coordinate for the object\n * @param y The new y-coordinate for the object\n */\n\tpublic final void add(Component comp, double x, double y) {\n\t\tcomp.setLocation(GMath.round(x), GMath.round(y));\n\t\tadd(comp);\n\t}\n\n/* Method: add(comp, pt) */\n/**\n * Adds the component to this canvas and sets its location to the specified point.\n *\n * @usage gc.add(comp, pt);\n * @param comp The component to add\n * @param pt A <code>GPoint</code> object giving the coordinates of the point\n */\n\tpublic final void add(Component comp, GPoint pt) {\n\t\tadd(comp, pt.getX(), pt.getY());\n\t}\n\n/* Method: remove(comp) */\n/**\n * Removes the component from the canvas.\n *\n * @usage gc.remove(comp);\n * @param comp The component to remove\n */\n\tpublic void remove(Component comp) {\n\t\tsuper.remove(comp);\n\t\tconditionalRepaint();\n\t}\n\n/* Method: getElementCount() */\n/**\n * Returns the number of graphical objects stored in this <code>GCanvas</code>.\n *\n * @usage int n = gc.getElementCount();\n * @return The number of graphical objects in this <code>GCanvas</code>\n */\n\tpublic int getElementCount() {\n\t\treturn contents.getElementCount();\n\t}\n\n/* Method: getElement(index) */\n/**\n * Returns the graphical object at the specified index, numbering from back\n * to front in the the <i>z</i> dimension.\n *\n * @usage GObject gobj = gc.getElement(index);\n * @param index The index of the component to return\n * @return The graphical object at the specified index\n */\n\tpublic GObject getElement(int index) {\n\t\treturn contents.getElement(index);\n\t}\n\n/* Method: getElementAt(x, y) */\n/**\n * Returns the topmost graphical object that contains the point\n * (<code>x</code>, <code>y</code>), or <code>null</code> if no such\n * object exists.\n *\n * @usage GObject gobj = gc.getElementAt(x, y);\n * @param x The x-coordinate of the point being tested\n * @param y The y-coordinate of the point being tested\n * @return The graphical object at the specified location, or <code>null</code>\n *         if no such object exists\n */\n\tpublic GObject getElementAt(double x, double y) {\n\t\treturn contents.getElementAt(x, y, false);\n\t}\n\n/* Method: getElementAt(pt) */\n/**\n * Returns the topmost graphical object that contains the specified point,\n * or <code>null</code> if no such object exists.\n *\n * @usage GObject gobj = gc.getElementAt(pt);\n * @param pt The coordinates being tested\n * @return The graphical object at the specified location, or <code>null</code>\n *         if no such object exists\n */\n\tpublic final GObject getElementAt(GPoint pt) {\n\t\treturn getElementAt(pt.getX(), pt.getY());\n\t}\n\n/* Method: iterator() */\n/**\n * Returns an <code>Iterator</code> that cycles through the elements within\n * this container in the default direction, which is from back to front.\n * You can also run the iterator in the opposite direction by using the\n * <a href=\"#iterator(int)\"><code>iterator</code></a><code>(</code><font\n * size=-1><i>direction</i></font><code>)</code> form of this method.\n *\n * @usage Iterator<GObject> i = gc.iterator();\n * @return An <code>Iterator</code> ranging over the elements of the\n *         container from back to front\n */\n\tpublic Iterator<GObject> iterator() {\n\t\treturn new GIterator(this, GContainer.BACK_TO_FRONT);\n\t}\n\n/* Method: iterator(direction) */\n/**\n * Returns an <code>Iterator</code> that cycles through the elements\n * within this container in the specified direction, which must be one\n * of the constants <a href=\"GContainer.html#FRONT_TO_BACK\"><code>GContainer.FRONT_TO_BACK</code></a>\n * or <a href=\"GContainer.html#BACK_TO_FRONT\"><code>GContainer.BACK_TO_FRONT</code></a>.<p>\n *\n * <p><pre><code>\n * &nbsp;    for (Iterator&lt;GObject&gt; i = gc.iterator(direction); i.hasNext(); )\n * </code></pre>\n *\n * @usage Iterator<GObject> i = gc.iterator(direction);\n * @return An <code>Iterator</code> ranging over the elements of the\n *         container in the specified direction\n */\n\tpublic Iterator<GObject> iterator(int direction) {\n\t\treturn new GIterator(this, direction);\n\t}\n\n/* Method: setOpaque(flag) */\n/**\n * Sets a flag indicating whether this canvas is opaque, which means that it\n * obscures anything behind it.  Setting this flag to <code>false</code> makes\n * the <code>GCanvas</code> transparent, so that any other lightweight components\n * behind it show through.\n *\n * @usage gc.setOpaque(flag);\n * @param flag <code>true</code> to make this canvas opaque, and <code>false</code>\n *             to make it transparent\n * @noshow\n */\n\tpublic void setOpaque(boolean flag) {\n\t\topaque = flag;\n\t\tconditionalRepaint();\n\t}\n\n/* Method: isOpaque() */\n/**\n * Returns a boolean value indicating whether this canvas is opaque.\n *\n * @usage if (gc.isOpaque(flag)) . . .\n * @return <code>true</code> if this canvas is opaque, and <code>false</code>\n *          if it is transparent\n * @noshow\n */\n\tpublic boolean isOpaque() {\n\t\treturn opaque;\n\t}\n\n/* Method: getWidth() */\n/**\n * Returns the width of this canvas in pixels.  This method is defined in JDK 1.2\n * components, but not in earlier ones.  Defining this method here makes this entry\n * available in all browsers.\n *\n * @usage int width = gc.getWidth();\n * @return The width of this canvas\n */\n\tpublic int getWidth() {\n\t\treturn getSize().width;\n\t}\n\n/* Method: getHeight() */\n/**\n * Returns the height of this canvas in pixels.  This method is defined in JDK 1.2\n * components, but not in earlier ones.  Defining this method here makes this entry\n * available in all browsers.\n *\n * @usage int height = gc.getHeight();\n * @return The height of this canvas in pixels\n */\n\tpublic int getHeight() {\n\t\treturn getSize().height;\n\t}\n\n/* Method: paint(g) */\n/**\n * Paints the canvas.  This method is not ordinarily called by clients.\n *\n * @usage gc.paint(g);\n * @param g The graphics context into which the canvas is painted\n * @noshow\n */\n\tpublic void paint(Graphics g) {\n\t\tGraphics g0 = g;\n\t\tif (isOpaque()) {\n\t\t\tif (offscreenImage == null) initOffscreenImage();\n\t\t\tif (offscreenImage != null) g = offscreenImage.getGraphics();\n\t\t\tDimension size = getSize();\n\t\t\tg.setColor(getBackground());\n\t\t\tg.fillRect(0, 0, size.width, size.height);\n\t\t\tg.setColor(getForeground());\n\t\t}\n\t\tcontents.mapPaint(g);\n\t\tif (isOpaque() && offscreenImage != null) {\n\t\t\tg0.drawImage(offscreenImage, 0, 0, this);\n\t\t}\n\t\tsuper.paint(g0);\n\t}\n\n/* Method: update(g) */\n/**\n * Updates the canvas.  This method is overridden here to support transparency\n * in the Swing style.\n *\n * @usage gc.update(g);\n * @param g The graphics context into which the canvas is painted\n * @noshow\n */\n\tpublic void update(Graphics g) {\n\t\tpaint(g);\n\t}\n\n/* Method: setAutoRepaintFlag(state) */\n/**\n * Changes the setting of the auto-repaint flag.  By default, any change to a\n * graphical object contained in this canvas automatically triggers a repaint\n * of the canvas as a whole.  While this behavior makes it much easier to use\n * the package, it has the disadvantage that repaint requests come much more\n * frequently than necessary.  You can disable this feature by calling\n * <code>setAutoRepaintFlag(false)</code>, but you must then make explicit\n * calls to <code>repaint()</code> whenever you want to update the display.\n * The advantage of this model is that you can then make many different changes\n * and have them all appear at once with a single <code>repaint</code> call.\n *\n * @usage gc.setAutoRepaintFlag(state);\n * @param state <code>true</code> to enable auto-repaint mode, and <code>false</code>\n *              to disable it\n */\n\tpublic void setAutoRepaintFlag(boolean state) {\n\t\tautoRepaint = state;\n\t}\n\n/* Method: getAutoRepaintFlag() */\n/**\n * Returns the current setting of the auto-repaint flag as described in\n * <a href=\"#setAutoRepaintFlag(boolean)\"><code>setAutoRepaintFlag</code></a>.\n *\n * @usage if (gc.getAutoRepaintFlag()) . . .\n * @return <code>true</code> if auto-repaint mode is enabled, and <code>false</code>\n *          otherwise\n */\n\tpublic boolean getAutoRepaintFlag() {\n\t\treturn autoRepaint;\n\t}\n\n/* Method: setNativeArcFlag(state) */\n/**\n * Sets whether the redering code for <code>GArc</code> and <code>GOval</code> should use\n * Java arcs.  By default, arcs and ovals are rendered using polygons and polylines\n * to ensure that the same set of pixels is covered by the fill and frame.\n * If this value is set to <code>true</code>, the renderers will use the native\n * arc code, which is more efficient but less accurate.\n *\n * @usage gc.setNativeArcFlag(state);\n * @param state <code>true</code> to enable native arcs, <code>false</code> to use polygons\n */\n\tpublic void setNativeArcFlag(boolean state) {\n\t\tnativeArcFlag = state;\n\t}\n\n/* Method: getNativeArcFlag() */\n/**\n * Returns the current setting of the native-arc flag as described in\n * <a href=\"#setNativeArcFlag(boolean)\"><code>setNativeArcFlag</code></a>.\n *\n * @usage if (gc.getNativeArcFlag()) . . .\n * @return <code>true</code> if native arcs are enabled, and <code>false</code>\n *          otherwise\n */\n\tpublic boolean getNativeArcFlag() {\n\t\treturn nativeArcFlag;\n\t}\n\n/* Protected method: sendToFront(gobj) */\n/**\n * Implements the <code>sendToFront</code> function from the <code>GContainer</code>\n * interface.  Clients should not be calling this method, but the semantics of\n * interfaces forces it to be exported.\n * @noshow\n */\n\tprotected void sendToFront(GObject gobj) {\n\t\tcontents.sendToFront(gobj);\n\t\tconditionalRepaint();\n\t}\n\n/* Protected method: sendToBack(gobj) */\n/**\n * Implements the <code>sendToBack</code> function from the <code>GContainer</code>\n * interface.  Clients should not be calling this method, but the semantics of\n * interfaces forces it to be exported.\n * @noshow\n */\n\tprotected void sendToBack(GObject gobj) {\n\t\tcontents.sendToBack(gobj);\n\t\tconditionalRepaint();\n\t}\n\n/* Protected method: sendForward(gobj) */\n/**\n * Implements the <code>sendForward</code> function from the <code>GContainer</code>\n * interface.  Clients should not be calling this method, but the semantics of\n * interfaces forces it to be exported.\n * @noshow\n */\n\tprotected void sendForward(GObject gobj) {\n\t\tcontents.sendForward(gobj);\n\t\tconditionalRepaint();\n\t}\n\n/* Protected method: sendBackward(gobj) */\n/**\n * Implements the <code>sendBackward</code> function from the <code>GContainer</code>\n * interface.  Clients should not be calling this method, but the semantics of\n * interfaces forces it to be exported.\n * @noshow\n */\n\tprotected void sendBackward(GObject gobj) {\n\t\tcontents.sendBackward(gobj);\n\t\tconditionalRepaint();\n\t}\n\n/* Protected method: dispatchMouseEvent(e) */\n/**\n * Dispatches this mouse event to the uppermost graphical object for which\n * the active point is within the object bounds.\n *\n * @usage gc.dispatchMouseEvent(MouseEvent e);\n * @param e The event that triggered this response\n * @noshow\n */\n\tprotected void dispatchMouseEvent(MouseEvent e) {\n\t\tGObject gobj = contents.getElementAt(e.getX(), e.getY(), true);\n\t\tMouseEvent newEvent = null;\n\t\tif (gobj != lastObject) {\n\t\t\tif (lastObject != null) {\n\t\t\t\tnewEvent = new GMouseEvent(lastObject, MouseEvent.MOUSE_EXITED, e);\n\t\t\t\tlastObject.fireMouseListeners(newEvent);\n\t\t\t}\n\t\t\tif (gobj != null) {\n\t\t\t\tnewEvent = new GMouseEvent(gobj, MouseEvent.MOUSE_ENTERED, e);\n\t\t\t\tgobj.fireMouseListeners(newEvent);\n\t\t\t}\n\t\t}\n\t\tlastObject = gobj;\n\t\tif (dragObject != null) gobj = dragObject;\n\t\tif (gobj != null) {\n\t\t\tint id = e.getID();\n\t\t\tif (id != MouseEvent.MOUSE_EXITED && id != MouseEvent.MOUSE_ENTERED) {\n\t\t\t\tif (id != MouseEvent.MOUSE_DRAGGED || dragObject != null) {\n\t\t\t\t\tif (id == MouseEvent.MOUSE_PRESSED) {\n\t\t\t\t\t\tdragObject = gobj;\n\t\t\t\t\t} else if (id == MouseEvent.MOUSE_RELEASED) {\n\t\t\t\t\t\tdragObject = null;\n\t\t\t\t\t}\n\t\t\t\t\tnewEvent = new GMouseEvent(gobj, id, e);\n\t\t\t\t\tgobj.fireMouseListeners(newEvent);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (newEvent != null && newEvent.isConsumed()) e.consume();\n\t}\n\n/* Protected method: initOffscreenImage() */\n/**\n * Initializes the offscreen memory image used for double buffering.\n *\n * @usage gc.initOffscreenImage();\n * @noshow\n */\n\tprotected void initOffscreenImage() {\n\t\tDimension size = getSize();\n\t\tif (size.width <= 0 || size.height <= 0) return;\n\t\toffscreenImage = createImage(size.width, size.height);\n\t}\n\n/* Protected method: conditionalRepaint() */\n/**\n * Repaints the canvas if auto-repaint is in effect.  This method is called only\n * by the <a href=\"GObject.html#repaint()\"><code>repaint</code></a> method in\n * <code>GObject</code> and is not accessible outside the package.\n *\n * @usage gc.conditionalRepaint();\n * @noshow\n */\n\tprotected void conditionalRepaint() {\n\t\tif (autoRepaint) repaint();\n\t}\n\n/* Protected method: updateEnabledList() */\n/**\n * Reconstructs the enabledList list in the correct order.\n *\n * @usage gc.updateEnabledList();\n */\n\tprotected void updateEnabledList() {\n\t\tcontents.updateEnabledList();\n\t}\n\n/* Package-private static method: createMouseEvent(gobj, eventID, e) */\n/**\n * Creates a new <code>GMouseEvent</code> object with <code>gobj</code>\n * effective source and <code>eventID</code>; all other fields are\n * copied from the event <code>e</code>.  This method must be included\n * in this class to avoid cross-file references to GMouseEvent from\n * the GCompound class.\n */\n\tstatic MouseEvent createMouseEvent(Object gobj, int eventID, MouseEvent e) {\n\t\treturn new GMouseEvent(gobj, eventID, e);\n\t}\n\n/* Private instance variables */\n\tprivate GCanvasListener gCanvasListener;\n\tprivate GObject lastObject;\n\tprivate GObject dragObject;\n\tprivate GObjectList contents;\n\tprivate Image offscreenImage;\n\tprivate boolean autoRepaint;\n\tprivate boolean nativeArcFlag;\n\tprivate boolean opaque;\n}\n\n/* Package class: GCanvasListener */\n/**\n * This class fields mouse events that occur in the <code>GCanvas</code>.\n */\nclass GCanvasListener\n  implements MouseListener, MouseMotionListener, ComponentListener {\n\n/* Constructor: GCanvasListener(gc) */\n/**\n * Creates a new listener object that watches for mouse events in the\n * <code>GCanvas</code>.\n *\n * @usage GCanvasListener listener = new GCanvasListener(gc);\n * @param gc The <code>GCanvas</code> object to which this listens\n */\n\tpublic GCanvasListener(GCanvas gc) {\n\t\tgCanvas = gc;\n\t}\n\n/* MouseListener interface */\n\tpublic void mouseClicked(MouseEvent e) { gCanvas.dispatchMouseEvent(e); }\n\tpublic void mousePressed(MouseEvent e) { gCanvas.requestFocus(); gCanvas.dispatchMouseEvent(e); }\n\tpublic void mouseReleased(MouseEvent e) { gCanvas.dispatchMouseEvent(e); }\n\tpublic void mouseEntered(MouseEvent e) { gCanvas.dispatchMouseEvent(e); }\n\tpublic void mouseExited(MouseEvent e) { gCanvas.dispatchMouseEvent(e); }\n\n/* MouseMotionListener interface */\n\tpublic void mouseDragged(MouseEvent e) { gCanvas.dispatchMouseEvent(e); }\n\tpublic void mouseMoved(MouseEvent e) { gCanvas.dispatchMouseEvent(e); }\n\n/* ComponentListener interface */\n\tpublic void componentResized(ComponentEvent e) {\n\t\tgCanvas.initOffscreenImage();\n\t\tif (gCanvas.isShowing()) gCanvas.repaint();\n\t}\n\n\tpublic void componentHidden(ComponentEvent e) { }\n\tpublic void componentMoved(ComponentEvent e) { }\n\tpublic void componentShown(ComponentEvent e) { }\n\n/* Private instance variables */\n\tprivate GCanvas gCanvas;\n}\n\nclass GMouseEvent extends MouseEvent {\n\n/* Constructor: GMouseEvent(gobj, eventID, e) */\n/**\n * Creates a new <code>GMouseEvent</code> object with <code>gobj</code>\n * effective source and <code>eventID</code>; all other fields are\n * copied from the event <code>e</code>.\n */\n\tpublic GMouseEvent(Object gobj, int eventID, MouseEvent e) {\n\t\tsuper(e.getComponent(), eventID, e.getWhen(), e.getModifiers(),\n\t\t\t  e.getX(), e.getY(), e.getClickCount(), e.isPopupTrigger());\n\t\teffectiveSource = gobj;\n\t}\n\n/* Method: getSource() */\n/**\n * Overrides <code>getSource</code> to return the effective source of this event,\n * which will typically be a <code>GObject</code> rather than the <code>GCanvas</code>\n * that triggered the event.\n */\n\tpublic Object getSource() {\n\t\treturn effectiveSource;\n\t}\n\n/* Method: getComponent() */\n/**\n * Overrides <code>getComponent</code> to return the <code>GCanvas</code>\n * that triggered the event.\n */\n\tpublic Component getComponent() {\n\t\treturn (Component) super.getSource();\n\t}\n\n/* Method: toString() */\n/**\n * Overrides <code>toString</code> to display the correct source for this event.\n */\n\tpublic String toString() {\n\t\treturn getClass().getName() + \"[\" + paramString() + \"] on \" + getSource();\n\t}\n\n/* Private instance variables */\n\tprivate Object effectiveSource;\n\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/graphics/GCompound.java",
    "content": "/*\n * @(#)GCompound.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Bug fix 26-Apr-07 (ESR, JTFBug 2007-005, reported by Leland Beck)\n//   1. Removed cross-file reference to GMouseEvent.\n//\n// Code cleanup 28-May-07 (ESR)\n//   1. Added generic type tags.\n//   2. Substituted GObjectList for ArrayList.\n//   3. Removed warnings about use of Iterator.\n//\n// Feature enhancement 26-May-08 (ESR)\n//   1. Added support for serialization.\n\npackage acm.graphics;\n\nimport acm.util.*;\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.util.*;\n\n/* Class: GCompound */\n/**\n * This class defines a graphical object that consists of a collection\n * of other graphical objects.  Once assembled, the internal objects\n * can be manipulated as a unit.\n */\npublic class GCompound extends GObject implements GContainer, GScalable {\n\n/* Constructor: GCompound() */\n/**\n * Creates a new <code>GCompound</code> object with no internal components.\n *\n * @usage GCompound gcomp = new GCompound();\n */\n\tpublic GCompound() {\n\t\tcontents = new GObjectList(this);\n\t\tcomplete = false;\n\t}\n\n/* Method: add(gobj) */\n/**\n * Adds a new graphical object to this <code>GCompound</code>.\n *\n * @usage gcomp.add(gobj);\n * @param gobj The graphical object to add\n */\n\tpublic void add(GObject gobj) {\n\t\tif (complete) {\n\t\t\tthrow new ErrorException(\"You can't add objects to a GCompound that has been \"\n\t\t\t                         + \"marked as complete.\");\n\t\t}\n\t\tcontents.add(gobj);\n\t\trepaint();\n\t}\n\n/* Method: add(gobj, x, y) */\n/**\n * Adds the graphical object to this canvas and sets its location\n * to the point (<code>x</code>,&nbsp;<code>y</code>).\n *\n * @usage gc.add(gobj, x, y);\n * @param gobj The graphical object to add\n * @param x The new x-coordinate for the object\n * @param y The new y-coordinate for the object\n */\n\tpublic final void add(GObject gobj, double x, double y) {\n\t\tgobj.setLocation(x, y);\n\t\tadd(gobj);\n\t}\n\n/* Method: add(gobj, pt) */\n/**\n * Adds the graphical object to this canvas and sets its location to the specified point.\n *\n * @usage gc.add(gobj, pt);\n * @param gobj The graphical object to add\n * @param pt A <code>GPoint</code> object giving the coordinates of the point\n */\n\tpublic final void add(GObject gobj, GPoint pt) {\n\t\tadd(gobj, pt.getX(), pt.getY());\n\t}\n\n/* Method: remove(gobj) */\n/**\n * Removes a graphical object from this <code>GCompound</code>.\n *\n * @usage gcomp.remove(gobj);\n * @param gobj The graphical object to remove\n */\n\tpublic void remove(GObject gobj) {\n\t\tif (complete) {\n\t\t\tthrow new ErrorException(\"You can't remove objects from a GCompound that has been \"\n\t\t\t                         + \"marked as complete.\");\n\t\t}\n\t\tcontents.remove(gobj);\n\t\trepaint();\n\t}\n\n/* Method: removeAll() */\n/**\n * Removes all graphical objects from this <code>GCompound</code>.\n *\n * @usage gcomp.removeAll();\n */\n\tpublic void removeAll() {\n\t\tif (complete) {\n\t\t\tthrow new ErrorException(\"You can't remove objects from a GCompound that has been \"\n\t\t\t                         + \"marked as complete.\");\n\t\t}\n\t\tcontents.removeAll();\n\t\trepaint();\n\t}\n\n/* Method: getElementCount() */\n/**\n * Returns the number of graphical objects stored in this container.\n *\n * @usage int n = gcomp.getElementCount();\n * @return The number of graphical objects in this container\n */\n\tpublic int getElementCount() {\n\t\treturn contents.getElementCount();\n\t}\n\n/* Method: getElement(index) */\n/**\n * Returns the graphical object at the specified index, numbering from back\n * to front in the the <i>z</i> dimension.\n *\n * @usage GObject gobj = gcomp.getElement(index);\n * @param index The index of the component to return\n * @return The graphical object at the specified index\n */\n\tpublic GObject getElement(int index) {\n\t\treturn contents.getElement(index);\n\t}\n\n/* Method: getElementAt(x, y) */\n/**\n * Returns the topmost graphical object that contains the point\n * (<code>x</code>, <code>y</code>), or <code>null</code> if no such\n * object exists.  Note that these coordinates are relative to the\n * location of the compound object and not to the canvas in which\n * it is displayed.\n *\n * @usage GObject gobj = gcomp.getElementAt(x, y);\n * @param x The x-coordinate of the point being tested\n * @param y The y-coordinate of the point being tested\n * @return The graphical object at the specified location, or <code>null</code>\n *         if no such object exists\n */\n\tpublic GObject getElementAt(double x, double y) {\n\t\treturn contents.getElementAt(x, y, false);\n\t}\n\n/* Method: getElementAt(pt) */\n/**\n * Returns the topmost graphical object that contains the specified point,\n * or <code>null</code> if no such object exists.\n *\n * @usage GObject gobj = gc.getElementAt(pt);\n * @param pt The coordinates being tested\n * @return The graphical object at the specified location, or <code>null</code>\n *         if no such object exists\n */\n\tpublic final GObject getElementAt(GPoint pt) {\n\t\treturn getElementAt(pt.getX(), pt.getY());\n\t}\n\n/* Method: iterator() */\n/**\n * Returns an <code>Iterator</code> that cycles through the elements within\n * this container in the default direction, which is from back to front.\n * You can also run the iterator in the opposite direction by using the\n * <a href=\"#iterator(int)\"><code>iterator</code></a><code>(</code><font\n * size=-1><i>direction</i></font><code>)</code> form of this method.\n *\n * @usage Iterator<GObject> i = gc.iterator();\n * @return An <code>Iterator</code> ranging over the elements of the\n *         container from back to front\n */\n\tpublic Iterator<GObject> iterator() {\n\t\treturn new GIterator(this, GContainer.BACK_TO_FRONT);\n\t}\n\n/* Method: iterator(direction) */\n/**\n * Returns an <code>Iterator</code> that cycles through the elements\n * within this container in the specified direction, which must be one\n * of the constants <a href=\"GContainer.html#FRONT_TO_BACK\"><code>GContainer.FRONT_TO_BACK</code></a>\n * or <a href=\"GContainer.html#BACK_TO_FRONT\"><code>GContainer.BACK_TO_FRONT</code></a>.<p>\n *\n * <p><pre><code>\n * &nbsp;    for (Iterator&lt;GObject&gt; i = gc.iterator(direction); i.hasNext(); )\n * </code></pre>\n *\n * @usage Iterator<GObject> i = gc.iterator(direction);\n * @return An <code>Iterator</code> ranging over the elements of the\n *         container in the specified direction\n */\n\tpublic Iterator<GObject> iterator(int direction) {\n\t\treturn new GIterator(this, direction);\n\t}\n\n/* Method: paint(g) */\n/**\n * Implements the <code>paint</code> operation for this graphical object.  This method\n * is not called directly by clients.\n * @noshow\n */\n\tpublic void paint(Graphics g) {\n\t\tg = g.create();\n\t\tg.translate(GMath.round(getX()), GMath.round(getY()));\n\t\tcontents.mapPaint(g);\n\t}\n\n/* Method: scale(sx, sy) */\n/**\n * Scales every object contained in this compound by the scale factors\n * <code>sx</code> and <code>sy</code>.  Automatic repaint is turned off\n * during the scaling operation so that at most one repaint is performed.\n *\n * @usage gcomp.scale(sx, sy);\n * @param sx The factor used to scale all coordinates in the x direction\n * @param sy The factor used to scale all coordinates in the y direction\n */\n\tpublic void scale(double sx, double sy) {\n\t\tComponent comp = getComponent();\n\t\tboolean oldAutoRepaint = false;\n\t\tif (comp instanceof GCanvas) {\n\t\t\toldAutoRepaint = ((GCanvas) comp).getAutoRepaintFlag();\n\t\t\t((GCanvas) comp).setAutoRepaintFlag(false);\n\t\t}\n\t\tfor (int i = getElementCount() - 1; i >= 0; i--) {\n\t\t\tGObject gobj = getElement(i);\n\t\t\tgobj.setLocation(sx * gobj.getX(), sy * gobj.getY());\n\t\t\tif (gobj instanceof GScalable) {\n\t\t\t\t((GScalable) gobj).scale(sx, sy);\n\t\t\t}\n\t\t}\n\t\tif (comp instanceof GCanvas) {\n\t\t\t((GCanvas) comp).setAutoRepaintFlag(oldAutoRepaint);\n\t\t}\n\t\trepaint();\n\t}\n\n/* Method: scale(sf) */\n/**\n * Scales the object on the screen by the scale factor <code>sf</code>, which applies\n * in both dimensions.\n *\n * @usage gcomp.scale(sf);\n * @param sf The factor used to scale all coordinates in both dimensions\n */\n\tpublic final void scale(double sf) {\n\t\tscale(sf, sf);\n\t}\n\n/* Method: getBounds() */\n/**\n * Returns the bounding rectangle for this compound object, which consists of\n * the union of the bounding rectangles for each of the components.\n *\n * @usage GRectangle bounds = gcomp.getBounds();\n * @return A <code>GRectangle</code> that bounds the components of this object\n */\n\tpublic GRectangle getBounds() {\n\t\tGRectangle bounds = contents.getBounds();\n\t\tbounds.translate(getX(), getY());\n\t\treturn bounds;\n\t}\n\n/* Method: contains(x, y) */\n/**\n * Checks to see whether a point is \"inside\" the compound, which means that it is\n * inside one of the components.\n *\n * @usage if (gcomp.contains(x, y)) . . .\n * @param x The x-coordinate of the point being tested\n * @param y The y-coordinate of the point being tested\n * @return <code>true</code> if the point (<code>x</code>,&nbsp;<code>y</code>) is inside\n *         the compound, and <code>false</code> otherwise\n */\n\tpublic boolean contains(double x, double y) {\n\t\treturn contents.contains(x - getX(), y - getY());\n\t}\n\n/* Method: getCanvasPoint(localPoint) */\n/**\n * Converts the location of the specified point in this compound to\n * the corresponding point in the enclosing canvas.\n *\n * @usage canvasPoint = gcomp.getCanvasPoint(localPoint);\n * @param localPoint The coordinates in the space of the compound\n * @return The coordinates in the space of the enclosing <code>GCanvas</code>\n */\n\tpublic final GPoint getCanvasPoint(GPoint localPoint) {\n\t\treturn getCanvasPoint(localPoint.getX(), localPoint.getY());\n\t}\n\n/* Method: getCanvasPoint(x, y) */\n/**\n * Converts the location of the specified point in this compound to\n * the corresponding point in the enclosing canvas.\n *\n * @usage canvasPoint = gcomp.getCanvasPoint(x, y);\n * @param x The x coordinate in the space of the compound\n * @param y The y coordinate in the space of the compound\n * @return The coordinates in the space of the enclosing <code>GCanvas</code>\n */\n\tpublic GPoint getCanvasPoint(double x, double y) {\n\t\tfor (GContainer c = this; c instanceof GCompound; ) {\n\t\t\tGCompound comp = (GCompound) c;\n\t\t\tx += comp.getX();\n\t\t\ty += comp.getY();\n\t\t\tc = comp.getParent();\n\t\t}\n\t\treturn new GPoint(x, y);\n\t}\n\n/* Method: getLocalPoint(canvasPoint) */\n/**\n * Converts the location of the specified point on the enclosing canvas\n * to the corresponding point in the space of this compound.\n *\n * @usage localPoint = gcomp.getLocalPoint(canvasPoint);\n * @param canvasPoint The coordinates in the space of the enclosing <code>GCanvas</code>\n * @return The coordinates in the space of the compound\n */\n\tpublic final GPoint getLocalPoint(GPoint canvasPoint) {\n\t\treturn getLocalPoint(canvasPoint.getX(), canvasPoint.getY());\n\t}\n\n/* Method: getLocalPoint(x, y) */\n/**\n * Converts the specified point on the enclosing canvas to the\n * corresponding point in the space of this compound.\n *\n * @usage localPoint = gcomp.getCanvasPoint(x, y);\n * @param x The x coordinate in the space of the space of the enclosing <code>GCanvas</code>\n * @param y The y coordinate in the space of the space of the enclosing <code>GCanvas</code>\n * @return The coordinates in the space of the compound\n */\n\tpublic GPoint getLocalPoint(double x, double y) {\n\t\tfor (GContainer c = this; c instanceof GCompound; ) {\n\t\t\tGCompound comp = (GCompound) c;\n\t\t\tx -= comp.getX();\n\t\t\ty -= comp.getY();\n\t\t\tc = comp.getParent();\n\t\t}\n\t\treturn new GPoint(x, y);\n\t}\n\n/* Protected method: markAsComplete() */\n/**\n * Calling this method makes it illegal to add or remove elements from the\n * compound object.  Subclasses can invoke this method to protect the\n * integrity of the structure from changes by the client.\n *\n * @usage gcomp.markAsComplete();\n */\n\tpublic void markAsComplete() {\n\t\tcomplete = true;\n\t}\n\n/* Inherited method: getSize() */\n/**\n * @inherited GObject#GDimension getSize()\n * Returns the size of the bounding box for this object.\n */\n\n/* Inherited method: getWidth() */\n/**\n * @inherited GObject#double getWidth()\n * Returns the width of this object, which is defined to be\n * the width of the bounding box.\n */\n\n/* Inherited method: getHeight() */\n/**\n * @inherited GObject#double getHeight()\n * Returns the height of this object, which is defined to be\n * the height of the bounding box.\n */\n\n/* Inherited method: setLocation(x, y) */\n/**\n * @inherited GObject#void setLocation(double x, double y)\n * Sets the location of the <code>GCompound</code> to the point (<code>x</code>, <code>y</code>).\n */\n\n/* Inherited method: setLocation(pt) */\n/**\n * @inherited GObject#void setLocation(GPoint pt)\n * Sets the location of this object to the specified point.\n */\n\n/* Inherited method: getLocation() */\n/**\n * @inherited GObject#GPoint getLocation()\n * Returns the location of this object as a <code>GPoint</code>.\n */\n\n/* Inherited method: getX() */\n/**\n * @inherited GObject#double getX()\n * Returns the x-coordinate of the object.\n */\n\n/* Inherited method: getY() */\n/**\n * @inherited GObject#double getY()\n * Returns the y-coordinate of the object.\n */\n\n/* Inherited method: move(dx, dy) */\n/**\n * @inherited GObject#void move(double dx, double dy)\n * Moves the object on the screen using the displacements <code>dx</code> and <code>dy</code>.\n */\n\n/* Inherited method: movePolar(r, theta) */\n/**\n * @inherited GObject#void movePolar(double r, double theta)\n * Moves the object using displacements given in polar coordinates.\n */\n\n/* Inherited method: contains(pt) */\n/**\n * @inherited GObject#boolean contains(GPoint pt)\n * Checks to see whether a point is inside the object.\n */\n\n/* Inherited method: sendToFront() */\n/**\n * @inherited GObject#void sendToFront()\n * Moves this object to the front of the display in the <i>z</i> dimension.\n */\n\n/* Inherited method: sendToBack() */\n/**\n * @inherited GObject#void sendToBack()\n * Moves this object to the back of the display in the <i>z</i> dimension.\n */\n\n/* Inherited method: sendForward() */\n/**\n * @inherited GObject#void sendForward()\n * Moves this object one step toward the front in the <i>z</i> dimension.\n */\n\n/* Inherited method: sendBackward() */\n/**\n * @inherited GObject#void sendBackward()\n * Moves this object one step toward the back in the <i>z</i> dimension.\n */\n\n/* Inherited method: setVisible(visible) */\n/**\n * @inherited GObject#void setVisible(boolean visible)\n * Sets the visibility status of the <code>GCompound</code>.\n */\n\n/* Inherited method: isVisible() */\n/**\n * @inherited GObject#boolean isVisible()\n * Checks to see whether the object is visible.\n */\n\n/* Inherited method: addMouseListener(listener) */\n/**\n * @inherited GObject#void addMouseListener(MouseListener listener)\n * Adds a mouse listener to this graphical object.\n */\n\n/* Inherited method: removeMouseListener(listener) */\n/**\n * @inherited GObject#void removeMouseListener(MouseListener listener)\n * Removes a mouse listener from this graphical object.\n */\n\n/* Inherited method: addMouseMotionListener(listener) */\n/**\n * @inherited GObject#void addMouseMotionListener(MouseMotionListener listener)\n * Adds a mouse motion listener to this graphical object.\n */\n\n/* Inherited method: removeMouseMotionListener(listener) */\n/**\n * @inherited GObject#void removeMouseMotionListener(MouseMotionListener listener)\n * Removes a mouse motion listener from this graphical object.\n */\n\n/* Protected method: sendToFront(gobj) */\n/**\n * Implements the <code>sendToFront</code> function from the <code>GContainer</code>\n * interface.  Clients should not be calling this method, but the semantics of\n * interfaces forces it to be exported.\n * @noshow\n */\n\tprotected void sendToFront(GObject gobj) {\n\t\tcontents.sendToFront(gobj);\n\t\trepaint();\n\t}\n\n/* Protected method: sendToBack(gobj) */\n/**\n * Implements the <code>sendToBack</code> function from the <code>GContainer</code>\n * interface.  Clients should not be calling this method, but the semantics of\n * interfaces forces it to be exported.\n * @noshow\n */\n\tprotected void sendToBack(GObject gobj) {\n\t\tcontents.sendToBack(gobj);\n\t\trepaint();\n\t}\n\n/* Protected method: sendForward(gobj) */\n/**\n * Implements the <code>sendForward</code> function from the <code>GContainer</code>\n * interface.  Clients should not be calling this method, but the semantics of\n * interfaces forces it to be exported.\n * @noshow\n */\n\tprotected void sendForward(GObject gobj) {\n\t\tcontents.sendForward(gobj);\n\t\trepaint();\n\t}\n\n/* Protected method: sendBackward(gobj) */\n/**\n * Implements the <code>sendBackward</code> function from the <code>GContainer</code>\n * interface.  Clients should not be calling this method, but the semantics of\n * interfaces forces it to be exported.\n * @noshow\n */\n\tprotected void sendBackward(GObject gobj) {\n\t\tcontents.sendBackward(gobj);\n\t\trepaint();\n\t}\n\n/* Protected method: fireMouseListeners(e) */\n/**\n * Dispatches a mouse event to the topmost child that covers the location\n * in the event <code>e</code>.\n * @noshow\n */\n\tprotected void fireMouseListeners(MouseEvent e) {\n\t\tif (super.areMouseListenersEnabled()) {\n\t\t\tsuper.fireMouseListeners(e);\n\t\t\treturn;\n\t\t}\n\t\tGPoint pt = new GPoint(e.getX() - getX(), e.getY() - getY());\n\t\tGObject gobj = getElementAt(pt);\n\t\tMouseEvent newEvent = null;\n\t\tif (gobj != lastObject) {\n\t\t\tif (lastObject != null) {\n\t\t\t\tnewEvent = GCanvas.createMouseEvent(lastObject, MouseEvent.MOUSE_EXITED, e);\n\t\t\t\tlastObject.fireMouseListeners(newEvent);\n\t\t\t}\n\t\t\tif (gobj != null) {\n\t\t\t\tnewEvent = GCanvas.createMouseEvent(gobj, MouseEvent.MOUSE_ENTERED, e);\n\t\t\t\tgobj.fireMouseListeners(newEvent);\n\t\t\t}\n\t\t}\n\t\tlastObject = gobj;\n\t\tif (dragObject != null) gobj = dragObject;\n\t\tif (gobj != null) {\n\t\t\tint id = e.getID();\n\t\t\tif (id != MouseEvent.MOUSE_EXITED && id != MouseEvent.MOUSE_ENTERED) {\n\t\t\t\tif (id == MouseEvent.MOUSE_PRESSED) {\n\t\t\t\t\tdragObject = gobj;\n\t\t\t\t} else if (id == MouseEvent.MOUSE_RELEASED) {\n\t\t\t\t\tdragObject = null;\n\t\t\t\t}\n\t\t\t\tnewEvent = GCanvas.createMouseEvent(gobj, id, e);\n\t\t\t\tgobj.fireMouseListeners(newEvent);\n\t\t\t}\n\t\t}\n\t\tif (newEvent != null && newEvent.isConsumed()) e.consume();\n\t}\n\n/* Protected method: areMouseListenersEnabled() */\n/**\n * Returns <code>true</code> if mouse listeners have ever been assigned to\n * this object or to any of the contained objects.\n *\n * @usage if (gcomp.areMouseListenersEnabled()) . . .\n * @return <code>true</code> if mouse listeners have been enabled in this object\n * @noshow\n */\n\tprotected boolean areMouseListenersEnabled() {\n\t\tif (super.areMouseListenersEnabled()) return true;\n\t\treturn contents.areMouseListenersEnabled();\n\t}\n\n/* Private instance variables */\n\tprivate boolean complete;\n\tprivate GObjectList contents;\n\tprivate GObject lastObject;\n\tprivate GObject dragObject;\n\n/* Serial version UID */\n/**\n * The serialization code for this class.  This value should be incremented\n * whenever you change the structure of this class in an incompatible way,\n * typically by adding a new instance variable.\n */\n\tstatic final long serialVersionUID = 1L;\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/graphics/GContainer.java",
    "content": "/*\n * @(#)GContainer.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Code cleanup 28-May-07 (ESR)\n//   1. Factored out common implementation of GObjectList.\n//   2. Moved GIterator code to this module.\n\npackage acm.graphics;\n\nimport acm.util.*;\nimport java.awt.*;\nimport java.io.*;\nimport java.util.*;\n\n/* Interface: GContainer */\n/**\n * Defines the functionality of an object that can serve as the parent\n * of a <a href=\"GObject.html\"><code>GObject</code></a>.\n */\npublic interface GContainer {\n\n/* Constant: BACK_TO_FRONT */\n/** Specifies that iterators should run from back to front */\n\tpublic static final int BACK_TO_FRONT = 0;\n\n/* Constant: FRONT_TO_BACK */\n/** Specifies that iterators should run from front to back */\n\tpublic static final int FRONT_TO_BACK = 1;\n\n/* Method: add(gobj) */\n/**\n * Adds a new graphical object to this container.\n *\n * @usage gc.add(gobj);\n * @param gobj The graphical object to add\n */\n\tpublic void add(GObject gobj);\n\n/* Method: add(gobj, x, y) */\n/**\n * Adds the graphical object to this canvas and sets its location\n * to the point (<code>x</code>,&nbsp;<code>y</code>).\n *\n * @usage gc.add(gobj, x, y);\n * @param gobj The graphical object to add\n * @param x The new x-coordinate for the object\n * @param y The new y-coordinate for the object\n */\n\tpublic void add(GObject gobj, double x, double y);\n\n/* Method: add(gobj, pt) */\n/**\n * Adds the graphical object to this canvas and sets its location to the specified point.\n *\n * @usage gc.add(gobj, pt);\n * @param gobj The graphical object to add\n * @param pt A <code>GPoint</code> object giving the coordinates of the point\n */\n\tpublic void add(GObject gobj, GPoint pt);\n\n/* Method: remove(gobj) */\n/**\n * Removes a graphical object from this container.\n *\n * @usage gc.remove(gobj);\n * @param gobj The graphical object to remove\n */\n\tpublic void remove(GObject gobj);\n\n/* Method: removeAll() */\n/**\n * Removes all graphical objects from this container.\n *\n * @usage gc.removeAll();\n */\n\tpublic void removeAll();\n\n/* Method: getElementCount() */\n/**\n * Returns the number of graphical objects stored in this <code>GCanvas</code>.\n *\n * @usage int n = gc.getElementCount();\n * @return The number of graphical objects in this <code>GCanvas</code>\n */\n\tpublic int getElementCount();\n\n/* Method: getElement(index) */\n/**\n * Returns the graphical object at the specified index, numbering from back\n * to front in the the <i>z</i> dimension.\n *\n * @usage GObject gobj = gc.getElement(index);\n * @param index The index of the component to return\n * @return The graphical object at the specified index\n */\n\tpublic GObject getElement(int index);\n\n/* Method: getElementAt(x, y) */\n/**\n * Returns the topmost graphical object that contains the point\n * (<code>x</code>, <code>y</code>), or <code>null</code> if no such\n * object exists.\n *\n * @usage GObject gobj = gc.getElementAt(x, y);\n * @param x The x-coordinate of the point being tested\n * @param y The y-coordinate of the point being tested\n * @return The graphical object at the specified location, or <code>null</code>\n *         if no such object exists.\n */\n\tpublic GObject getElementAt(double x, double y);\n\n/* Method: getElementAt(pt) */\n/**\n * Returns the topmost graphical object that contains the specified point,\n * or <code>null</code> if no such object exists.\n *\n * @usage GObject gobj = gc.getElementAt(pt);\n * @param pt The coordinates being tested\n * @return The graphical object at the specified location, or <code>null</code>\n *         if no such object exists\n */\n\tpublic GObject getElementAt(GPoint pt);\n}\n\n/* Package class: GObjectList */\n/**\n * This class implements a synchronized list of <code>GObject</code> values\n * that is shared by both <code>GCompound</code> and <code>GCanvas</code>.\n * The list includes two sets of objects: one for the ordered list in the\n * container and another for objects that are enabled to receive mouse\n * events.\n */\nclass GObjectList implements Serializable {\n\n/* Constructor: new GObjectList(container) */\n/**\n * Creates a new <code>GObjectList</code> with no elements.\n *\n * @param container The <code>GCanvas</code> or <code>GCompound</code> that owns this list.\n */\n\tpublic GObjectList(GContainer container) {\n\t\tparent = container;\n\t\tcontents = new ArrayList<GObject>();\n\t\tif (parent instanceof GCanvas) enabledList = new ArrayList<GObject>();\n\t}\n\n/* Method: add(gobj) */\n/**\n * Adds the specified <code>GObject</code> to the end of the contents list,\n * and includes it in the enabled list if mouse events are enabled.\n */\n\tpublic synchronized void add(GObject gobj) {\n\t\tif (gobj.getParent() != null) gobj.getParent().remove(gobj);\n\t\tgobj.setParent(parent);\n\t\tcontents.add(gobj);\n\t\tif (enabledList != null && gobj.areMouseListenersEnabled()) {\n\t\t\tenabledList.add(gobj);\n\t\t}\n\t}\n\n/* Method: remove(gobj) */\n/**\n * Removes the specified object from the list.\n */\n\tpublic synchronized void remove(GObject gobj) {\n\t\tcontents.remove(gobj);\n\t\tgobj.setParent(null);\n\t\tif (enabledList != null) enabledList.remove(gobj);\n\t}\n\n/* Method: removeAll() */\n/**\n * Removes all objects from the list.\n */\n\tpublic synchronized void removeAll() {\n\t\tcontents.clear();\n\t\tif (enabledList != null) enabledList.clear();\n\t}\n\n/* Method: getElementCount() */\n/**\n * Returns the number of elements in the list.\n */\n\tpublic int getElementCount() {\n\t\treturn contents.size();\n\t}\n\n/* Method: getElement(index) */\n/**\n * Returns the graphical object at the specified index, numbering from back\n * to front in the the <i>z</i> dimension.\n */\n\tpublic GObject getElement(int index) {\n\t\treturn contents.get(index);\n\t}\n\n/* Method: getElementAt(x, y, requireEnabled) */\n/**\n * Returns the topmost graphical object that contains the point\n * (<code>x</code>, <code>y</code>), or <code>null</code> if no such\n * object exists.\n */\n\tpublic synchronized GObject getElementAt(double x, double y, boolean requireEnabled) {\n\t\tArrayList<GObject> list = (requireEnabled) ? enabledList : contents;\n\t\tfor (int i = list.size() - 1; i >= 0; i--) {\n\t\t\tGObject gobj = list.get(i);\n\t\t\tif (gobj.contains(x, y)) return gobj;\n\t\t}\n\t\treturn null;\n\t}\n\n/* Method: sendToFront(gobj) */\n/**\n * Implements the <code>sendToFront</code> function from the <code>GContainer</code>\n * interface.\n */\n\tpublic synchronized void sendToFront(GObject gobj) {\n\t\tint index = contents.indexOf(gobj);\n\t\tif (index >= 0) {\n\t\t\tcontents.remove(index);\n\t\t\tcontents.add(gobj);\n\t\t}\n\t}\n\n/* Method: sendToBack(gobj) */\n/**\n * Implements the <code>sendToBack</code> function from the <code>GContainer</code>\n * interface.\n */\n\tpublic synchronized void sendToBack(GObject gobj) {\n\t\tint index = contents.indexOf(gobj);\n\t\tif (index >= 0) {\n\t\t\tcontents.remove(index);\n\t\t\tcontents.add(0, gobj);\n\t\t}\n\t}\n\n/* Method: sendForward(gobj) */\n/**\n * Implements the <code>sendForward</code> function from the <code>GContainer</code>\n * interface.\n */\n\tpublic synchronized void sendForward(GObject gobj) {\n\t\tint index = contents.indexOf(gobj);\n\t\tif (index >= 0) {\n\t\t\tcontents.remove(index);\n\t\t\tcontents.add(Math.min(contents.size(), index + 1), gobj);\n\t\t}\n\t}\n\n/* Method: sendBackward(gobj) */\n/**\n * Implements the <code>sendBackward</code> function from the <code>GContainer</code>\n * interface.\n */\n\tpublic synchronized void sendBackward(GObject gobj) {\n\t\tint index = contents.indexOf(gobj);\n\t\tif (index >= 0) {\n\t\t\tcontents.remove(index);\n\t\t\tcontents.add(Math.max(0, index - 1), gobj);\n\t\t}\n\t}\n\n/* Method: getBounds() */\n/**\n * Returns the bounding rectangle for the objects in the list.\n */\n\tpublic synchronized GRectangle getBounds() {\n\t\tGRectangle bounds = new GRectangle();\n\t\tint nElements = contents.size();\n\t\tfor (int i = 0; i < nElements; i++) {\n\t\t\tif (i == 0) {\n\t\t\t\tbounds = new GRectangle(contents.get(i).getBounds());\n\t\t\t} else {\n\t\t\t\tbounds.add(contents.get(i).getBounds());\n\t\t\t}\n\t\t}\n\t\treturn bounds;\n\t}\n\n/* Method: contains(x, y) */\n/**\n * Checks to see whether a point is \"inside\" one of the objects on the list.\n */\n\tpublic synchronized boolean contains(double x, double y) {\n\t\tint nElements = contents.size();\n\t\tfor (int i = 0; i < nElements; i++) {\n\t\t\tif (contents.get(i).contains(x, y)) return true;\n\t\t}\n\t\treturn false;\n\t}\n\n/* Method: mapPaint(g) */\n/**\n * Paints all the elements of this container using the graphics context <code>g</code>.\n */\n\tpublic synchronized void mapPaint(Graphics g) {\n\t\tint nElements = contents.size();\n\t\tfor (int i = 0; i < nElements; i++) {\n\t\t\tcontents.get(i).paintObject(g);\n\t\t}\n\t}\n\n/* Method: areMouseListenersEnabled() */\n/**\n * Returns <code>true</code> if mouse listeners have ever been assigned to\n * this object or to any of the contained objects.\n */\n\tpublic synchronized boolean areMouseListenersEnabled() {\n\t\tint nElements = contents.size();\n\t\tfor (int i = 0; i < nElements; i++) {\n\t\t\tGObject gobj = contents.get(i);\n\t\t\tif (gobj.areMouseListenersEnabled()) return true;\n\t\t}\n\t\treturn false;\n\t}\n\n/* Method: updateEnabledList() */\n/**\n * Reconstructs the enabledList list in the correct order.\n */\n\tpublic synchronized void updateEnabledList() {\n\t\tenabledList.clear();\n\t\tint nElements = contents.size();\n\t\tfor (int i = 0; i < nElements; i++) {\n\t\t\tGObject gobj = contents.get(i);\n\t\t\tif (gobj.areMouseListenersEnabled()) enabledList.add(gobj);\n\t\t}\n\t}\n\n/* Private instance variables */\n\tprivate GContainer parent;\n\tprivate ArrayList<GObject> contents;\n\tprivate ArrayList<GObject> enabledList;\n}\n\n/* Package class: GIterator */\n/**\n * Implements an iterator class for any object that implements\n * <code>GContainer</code> (i.e., <a href=\"GCanvas.html\"><code>GCanvas</code></a>\n * and <a href=\"GCompound.html\"><code>GCompound</code></a>).  The usual method\n * for using this class is to write something like</p>\n *\n * <p><pre><code>\n * &nbsp;    for (Iterator&lt;GObject&gt; i = gc.iterator(direction); i.hasNext(); )\n * </code></pre>\n *\n * where <code>gc</code> is the graphic container.  The enumeration supports\n * traversal in two directions.  By default, it starts with the front\n * element and works toward the back (as would be appropriate, for\n * example, when trying to find the topmost component for a mouse click).\n * You can, however, also process the elements of the container from back\n * to front (as would be useful when drawing elements of the container,\n * when the front objects should be drawn last).  To specify the direction\n * of the traversal, specify either <code>GContainer.FRONT_TO_BACK</code> or\n * <code>GContainer.BACK_TO_FRONT</code> in the <code>iterator</code> call.\n */\nclass GIterator implements Iterator<GObject> {\n\n/* Constructor: GIterator(container, direction) */\n/**\n * Creates a new <code>GIterator</code> that runs through the\n * container in the specified direction (<code>GContainer.FRONT_TO_BACK</code>\n * or <code>GContainer.BACK_TO_FRONT</code>).\n *\n * @usage Iterator<GObject> i = new GIterator(container, direction);\n * @param container The <code>GContainer</code> whose elements the iterator should return\n * @param direction The direction in which to process the elements\n */\n\tpublic GIterator(GContainer container, int direction) {\n\t\tswitch (direction) {\n\t\t  case GContainer.FRONT_TO_BACK: case GContainer.BACK_TO_FRONT:\n\t\t\tdir = direction;\n\t\t\tbreak;\n\t\t  default:\n\t\t\tthrow new ErrorException(\"Illegal direction for iterator\");\n\t\t}\n\t\tcont = container;\n\t\tindex = 0;\n\t\tnElements = container.getElementCount();\n\t}\n\n/* Method: hasNext() */\n/**\n * Returns <code>true</code> if the iterator has more elements.  Implements\n * the <code>hasNext</code> method for the <code>Iterator</code> interface.\n *\n * @usage while (i.hasNext()) . . .\n * @return <code>true</code> if the iterator has more elements, <code>false</code> otherwise\n */\n\tpublic boolean hasNext() {\n\t\treturn index < nElements;\n\t}\n\n/* Method: next() */\n/**\n * Returns the next element from the iterator.  Implements the <code>next</code>\n * method for the <code>Iterator</code> interface.\n *\n * @usage Object element = i.next();\n * @return The next element from the iterator\n */\n\tpublic GObject next() {\n\t\tif (dir == GContainer.FRONT_TO_BACK) {\n\t\t\treturn cont.getElement(nElements - index++ - 1);\n\t\t} else {\n\t\t\treturn cont.getElement(index++);\n\t\t}\n\t}\n\n/* Method: nextElement() */\n/**\n * Returns the next element from the iterator as a <code>GObject</code>.  This\n * method is callable only if the iterator is declared as a <code>GIterator</code>.\n *\n * @usage GObject element = i.nextElement();\n * @return The next element from the iterator as a <code>GObject</code>\n */\n\tpublic GObject nextElement() {\n\t\treturn next();\n\t}\n\n/* Method: remove() */\n/**\n * Removes the current element from its container.  Implements the <code>remove</code>\n * method for the <code>Iterator</code> interface.\n *\n * @usage i.remove();\n */\n\tpublic void remove() {\n\t\tif (dir == GContainer.FRONT_TO_BACK) {\n\t\t\tcont.remove(cont.getElement(nElements - --index - 1));\n\t\t} else {\n\t\t\tcont.remove(cont.getElement(--index));\n\t\t}\n\t\tnElements--;\n\t}\n\n/* Private instance variables */\n\tprivate GContainer cont;\n\tprivate int dir;\n\tprivate int index;\n\tprivate int nElements;\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/graphics/GDimension.java",
    "content": "/*\n * @(#)GDimension.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Performance improvement 23-Jan-07 (ESR)\n//   1. Changed hashCode implementation for better performance.\n//\n// Feature enhancement 26-May-08 (ESR)\n//   1. Added support for serialization.\n\npackage acm.graphics;\n\nimport java.awt.*;\nimport java.io.*;\n\n/* Class: GDimension */\n/**\n * This class is a double-precision version of the <code>Dimension</code> class\n * in <code>java.awt</code>.\n */\npublic class GDimension implements Serializable {\n\n/* Constructor: GDimension() */\n/**\n * Constructs a new dimension object with zero values for width and height.\n *\n * @usage dim = new GDimension();\n */\n\tpublic GDimension() {\n\t\tthis(0, 0);\n\t}\n\n/* Constructor: GDimension(width, height) */\n/**\n * Constructs a new dimension object with the specified components.\n *\n * @usage dim = new GDimension(width, height);\n * @param width The width of the dimension object\n * @param height The height of the dimension object\n */\n\tpublic GDimension(double width, double height) {\n\t\tmyWidth = width;\n\t\tmyHeight = height;\n\t}\n\n/* Constructor: GDimension(size) */\n/**\n * Constructs a new <code>GDimension</code> object from an existing one.\n *\n * @usage dim = new GDimension(size);\n * @param size An existing <code>GDimension</code> object specifying the size\n */\n\tpublic GDimension(GDimension size) {\n\t\tthis(size.myWidth, size.myHeight);\n\t}\n\n/* Constructor: GDimension(size) */\n/**\n * Constructs a new <code>GDimension</code> object from an AWT <code>Dimension</code>.\n *\n * @usage dim = new GDimension(size);\n * @param size An AWT <code>Dimension</code> object specifying the size\n */\n\tpublic GDimension(Dimension size) {\n\t\tthis(size.width, size.height);\n\t}\n\n/* Method: getWidth() */\n/**\n * Returns the width of this <code>GDimension</code>.\n *\n * @usage width = dim.getWidth();\n * @return The width of this <code>GDimension</code>\n */\n\tpublic double getWidth() {\n\t\treturn myWidth;\n\t}\n\n/* Method: getHeight() */\n/**\n * Returns the height of this <code>GDimension</code>.\n *\n * @usage height = dim.getHeight();\n * @return The height of this <code>GDimension</code>\n */\n\tpublic double getHeight() {\n\t\treturn myHeight;\n\t}\n\n/* Method: setSize(width, height) */\n/**\n * Sets the components of the dimension object from the specified parameters.\n *\n * @usage dim.setSize(width, height);\n * @param width The new width of the dimension object\n * @param height The new height of the dimension object\n */\n\tpublic void setSize(double width, double height) {\n\t\tmyWidth = width;\n\t\tmyHeight = height;\n\t}\n\n/* Method: setSize(size) */\n/**\n * Sets the width and height of one <code>GDimension</code> object equal to that of another.\n *\n * @usage dim.setSize(size);\n * @param size A <code>GDimension</code> object specifying the new size\n */\n\tpublic void setSize(GDimension size) {\n\t\tsetSize(size.myWidth, size.myHeight);\n\t}\n\n/* Method: getSize() */\n/**\n * Returns a new <code>GDimension</code> object equal to this one.\n *\n * @usage size = dim.getSize();\n * @return A new <code>GDimension</code> object with the same size\n */\n\tpublic GDimension getSize() {\n\t\treturn new GDimension(myWidth, myHeight);\n\t}\n\n/* Method: toDimension() */\n/**\n * Converts this <code>GDimension</code> to the nearest integer-based\n * <code>Dimension</code>.\n *\n * @usage size = dim.toDimension();\n * @return The closest integer-based <code>Dimension</code> object\n */\n\tpublic Dimension toDimension() {\n\t\treturn new Dimension((int) Math.round(myWidth), (int) Math.round(myHeight));\n\t}\n\n/* Method: hashCode() */\n/**\n * Returns an integer hash code for the dimension object.  The hash code for a\n * <code>GDimension</code> is constructed from the hash codes from the\n * <code>float</code> values of the width and height, which are the ones used in the\n * <code>equals</code> method.\n *\n * @usage hash = dim.hashCode();\n * @return The hash code for this dimension object\n * @noshow\n */\n\tpublic int hashCode() {\n\t\treturn new Float((float) myWidth).hashCode() ^ (37 * new Float((float) myHeight).hashCode());\n\t}\n\n/* Method: equals(obj) */\n/**\n * Tests whether two <code>GDimension</code> objects are equal.\n * Because floating-point values are inexact, this method checks for\n * equality by comparing the <code>float</code> values (rather than the\n * <code>double</code> values) of the coordinates.\n *\n * @usage if (dim.equals(obj)) . . .\n * @param obj Any object\n * @return <code>true</code> if the <code>obj</code> is a <code>GDimension</code>\n *         equal to this one, and <code>false</code> otherwise\n * @noshow\n */\n\tpublic boolean equals(Object obj) {\n\t\tif (!(obj instanceof GDimension)) return false;\n\t\tGDimension dim = (GDimension) obj;\n\t\treturn ((float) myWidth == (float) dim.myWidth) && ((float) myHeight == (float) dim.myHeight);\n\t}\n\n/* Method: toString() */\n/**\n * Converts this <code>GDimension</code> to its string representation.\n *\n * @usage str = dim.toString();\n * @return A string representation of this dimension object\n * @noshow\n */\n\tpublic String toString() {\n\t\treturn \"(\" + (float) myWidth + \"x\" + (float) myHeight + \")\";\n\t}\n\n/* Private instance variables */\n\tprivate double myWidth;\n\tprivate double myHeight;\n\n/* Serial version UID */\n/**\n * The serialization code for this class.  This value should be incremented\n * whenever you change the structure of this class in an incompatible way,\n * typically by adding a new instance variable.\n */\n\tstatic final long serialVersionUID = 1L;\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/graphics/GFillable.java",
    "content": "/*\n * @(#)GFillable.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\npackage acm.graphics;\n\nimport java.awt.*;\n\n/* Interface: GFillable */\n/**\n * Specifies the characteristics of a graphical object that supports filling.\n */\npublic interface GFillable {\n\n/* Method: setFilled(fill) */\n/**\n * Sets whether this object is filled.\n *\n * @usage gobj.setFilled(fill);\n * @param fill <code>true</code> if the object should be filled, <code>false</code> for an outline\n */\n\tpublic void setFilled(boolean fill);\n\n/* Method: isFilled() */\n/**\n * Returns whether this object is filled.\n *\n * @usage if (gobj.isFilled()) . . .\n * @return The color used to display the object\n */\n\tpublic boolean isFilled();\n\n/* Method: setFillColor(color) */\n/**\n * Sets the color used to display the filled region of this object.\n *\n * @usage gobj.setFillColor(color);\n * @param color The color used to display the filled region of this object\n */\n\tpublic void setFillColor(Color color);\n\n/* Method: getFillColor() */\n/**\n * Returns the color used to display the filled region of this object.  If\n * none has been set, <code>getFillColor</code> returns the color of the\n * object.\n *\n * @usage Color color = gobj.getFillColor();\n * @return The color used to display the filled region of this object\n */\n\tpublic Color getFillColor();\n\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/graphics/GImage.java",
    "content": "/*\n * @(#)GImage.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Bug fix 21-Dec-06 (ESR, JTFBug 2006-003)\n//   1. Invalidated sizeDetermined in setImage.\n//   2. Added repaint call in setImage.\n//\n// Feature enhancement 11-Jan-07 (ESR)\n//   1. Added constructor that takes a pixel array.\n//   2. Added a method getPixelArray to return the array.\n//   3. Added static methods to extract and combine pixel components.\n//\n// Feature enhancement 26-May-08 (ESR)\n//   1. Added support for serialization.\n//\n// Feature enhancement 25-Nov-08 (ESR)\n//   1. Added support for saving image files.\n\npackage acm.graphics;\n\nimport acm.util.*;\nimport java.awt.*;\nimport java.io.File;\n\n/* Class: GImage */\n/**\n * The <code>GImage</code> class is a graphical object whose appearance is\n * defined by an image.\n */\npublic class GImage extends GObject implements GResizable, GScalable {\n\n/* Constructor: GImage(image) */\n/**\n * Creates a new <code>GImage</code> object at the origin that displays\n * the specified image.\n *\n * @usage GImage gimage = new GImage(image);\n * @param image The image to use as the contents of this <code>GImage</code>\n */\n\tpublic GImage(Image image) {\n\t\tthis(image, 0, 0);\n\t}\n\n/* Constructor: GImage(name) */\n/**\n * Creates a new <code>GImage</code> object by looking for an image with that\n * name.  The search for an image by name consists of the following steps:\n *\n * <p><ol>\n * <li>Check to see if an image with that name has already been defined.  If\n *     so, return that image.<p>\n *\n * <li>Check to see if there is a resource available with that name whose\n *     contents can be read as an <code>Image</code>.  If so, read the image\n *     from the resource file.<p>\n *\n * <li>Load the image from a file with the specified name, relative to the\n *     application directory or the applet code base.\n * </ol><p>\n *\n * @usage GImage gimage = new GImage(name);\n * @param name The name used to search for the contents of this image\n */\n\tpublic GImage(String name) {\n\t\tthis(name, 0, 0);\n\t}\n\n/* Constructor: GImage(array) */\n/**\n * Creates a new <code>GImage</code> object at the origin.  The <code>array</code>\n * parameter is a two-dimensional pixel array in which each pixel value consists\n * of an integer that is subdivided into four eight-bit bytes, as follows:\n *\n * <center>\n *    <i>alpha</i> <code>&lt;&lt;</code> 24  <code>|</code>\n *    <i>red</i>   <code>&lt;&lt;</code> 16  <code>|</code>\n *    <i>green</i> <code>&lt;&lt;</code>  8  <code>|</code>\n *    <i>blue</i>\n * </center>\n *\n * The <i>alpha</i> value indicates the transparency, and the other values\n * are the red, green, and blue components of the color.\n *\n * @usage GImage gimage = new GImage(array);\n * @param array A two-dimensional pixel array\n */\n\tpublic GImage(int[][] array) {\n\t\tthis(array, 0, 0);\n\t}\n\n/* Constructor: GImage(image, x, y) */\n/**\n * Creates a new <code>GImage</code> object at the specified coordinates.  The\n * <code>image</code> parameter is used to initialize the appearance of the image.\n *\n * @usage GImage gimage = new GImage(image, x, y);\n * @param image The image to use as the contents of this <code>GImage</code>\n * @param x The x-coordinate of the upper left corner of the image\n * @param y The y-coordinate of the upper left corner of the image\n */\n\tpublic GImage(Image image, double x, double y) {\n\t\tsetImage(image);\n\t\tsetLocation(x, y);\n\t}\n\n/* Constructor: GImage(name, x, y) */\n/**\n * Creates a new <code>GImage</code> object at the specified coordinates.  The\n * <code>name</code> parameter is used to identify an image to display, as\n * described in the single-argument version of the\n * <a href=\"#GImage(String)\"><code>GImage</code></a> constructor.\n *\n * @usage GImage gimage = new GImage(image, x, y);\n * @param name The name used to search for the contents of this image\n * @param x The x-coordinate of the upper left corner of the image\n * @param y The y-coordinate of the upper left corner of the image\n */\n\tpublic GImage(String name, double x, double y) {\n\t\tthis(MediaTools.loadImage(name), x, y);\n\t}\n\n/* Constructor: GImage(array, x, y) */\n/**\n * Creates a new <code>GImage</code> object at the specified coordinates.\n * The <code>array</code> parameter is a two-dimensional pixel array in\n * which each pixel value consists of an integer that is subdivided into\n * four eight-bit bytes, as follows:\n *\n * <center>\n *    <i>alpha</i> <code>&lt;&lt;</code> 24  <code>|</code>\n *    <i>red</i>   <code>&lt;&lt;</code> 16  <code>|</code>\n *    <i>green</i> <code>&lt;&lt;</code>  8  <code>|</code>\n *    <i>blue</i>\n * </center>\n *\n * The <i>alpha</i> value indicates the transparency, and the other values\n * are the red, green, and blue components of the color.\n *\n * @usage GImage gimage = new GImage(array, x, y);\n * @param array A two-dimensional pixel array\n * @param x The x-coordinate of the upper left corner of the image\n * @param y The y-coordinate of the upper left corner of the image\n */\n\tpublic GImage(int[][] array, double x, double y) {\n\t\tthis(MediaTools.createImage(array), x, y);\n\t}\n\n/* Method: setImage(image) */\n/**\n * Resets the image used by this <code>GImage</code> object to the new image\n * specified as an argument.  Calling <code>setImage</code> automatically changes\n * the size of the image to be equal to that of the image data.\n *\n * @usage gimage.setImage(image);\n * @param image The image to use as the contents of this <code>GImage</code>\n */\n\tpublic void setImage(Image image) {\n\t\tmyImage = MediaTools.loadImage(image);\n\t\tsizeDetermined = false;\n\t\tdetermineSize();\n\t\trepaint();\n\t}\n\n/* Method: setImage(name) */\n/**\n * Resets the image used by this <code>GImage</code> object to the one identified\n * by the argument <code>name</code>, which is processed exactly as described\n * in the constructors.  Calling <code>setImage</code> automatically changes\n * the size of the image to be equal to that of the image data.\n *\n * @usage gimage.setImage(name);\n * @param name The name used to search for the contents of this image\n */\n\tpublic void setImage(String name) {\n\t\tsetImage(MediaTools.loadImage(name));\n\t}\n\n/* Method: getImage() */\n/**\n * Returns the image stored inside this <code>GImage</code>.\n *\n * @usage Image image = gimage.getImage();\n * @return The <code>Image</code> object stored inside this <code>GImage</code>\n */\n\tpublic Image getImage() {\n\t\treturn myImage;\n\t}\n\n/* Method: saveImage(filename) */\n/**\n * Saves the image to a file with the specified filename.  The data format\n * for the image file is determined by the suffix of the filename.  If the\n * suffix of the file is not recognized as a supported image type, calling\n * this method generates an error.\n *\n * @usage gimage.saveImage(filename);\n * @param filename The name of the file to which the image is saved\n */\n\tpublic void saveImage(String filename) {\n\t\tMediaTools.saveImage(myImage, filename);\n\t}\n\n/* Method: saveImage(file) */\n/**\n * Saves the image to the specified file.  The data format for the\n * image file is determined by the suffix of the filename.  If the\n * suffix of the file is not recognized as a supported image type,\n * calling this method generates an error.\n *\n * @usage gimage.saveImage(file);\n * @param file The <code>File</code> to which the image is saved\n */\n\tpublic void saveImage(File file) {\n\t\tMediaTools.saveImage(myImage, file);\n\t}\n\n/* Method: paint(g) */\n/**\n * Implements the <code>paint</code> operation for this graphical object.  This method\n * is not called directly by clients.\n * @noshow\n */\n\tpublic void paint(Graphics g) {\n\t\tComponent imageObserver = getComponent();\n\t\tif (imageObserver == null) imageObserver = MediaTools.getImageObserver();\n\t\tif (myImage != null && imageObserver != null) {\n\t\t\tRectangle r = getAWTBounds();\n\t\t\tColor color = getObjectColor();\n\t\t\tif (color == null) {\n\t\t\t\tg.drawImage(myImage, r.x, r.y, r.width, r.height, imageObserver);\n\t\t\t} else {\n\t\t\t\tg.drawImage(myImage, r.x, r.y, r.width, r.height, color, imageObserver);\n\t\t\t}\n\t\t}\n\t}\n\n/* Method: setSize(width, height) */\n/**\n * Changes the size of this object to the specified width and height.\n *\n * @usage gimage.setSize(width, height);\n * @param width The new width of the object\n * @param height The new height of the object\n */\n\tpublic void setSize(double width, double height) {\n\t\tmyWidth = width;\n\t\tmyHeight = height;\n\t\trepaint();\n\t}\n\n/* Method: setSize(size) */\n/**\n * Changes the size of this object to the specified <code>GDimension</code>.\n *\n * @usage gimage.setSize(size);\n * @param size A <code>GDimension</code> object specifying the size\n * @noshow\n */\n\tpublic final void setSize(GDimension size) {\n\t\tsetSize(size.getWidth(), size.getHeight());\n\t}\n\n/* Method: getSize() */\n/**\n * Returns the size of this object as a <code>GDimension</code>.\n *\n * @usage GDimension size = gimage.getSize();\n * @return The size of this object\n */\n\tpublic GDimension getSize() {\n\t\treturn new GDimension(myWidth, myHeight);\n\t}\n\n/* Method: setBounds(x, y, width, height) */\n/**\n * Changes the bounds of this object to the specified values.\n *\n * @usage gimage.setBounds(x, y, width, height);\n * @param x The new x-coordinate for the object\n * @param y The new y-coordinate for the object\n * @param width The new width of the object\n * @param height The new height of the object\n */\n\tpublic void setBounds(double x, double y, double width, double height) {\n\t\tmyWidth = width;\n\t\tmyHeight = height;\n\t\tsetLocation(x, y);\n\t}\n\n/* Method: setBounds(bounds) */\n/**\n * Changes the bounds of this object to the values from the specified\n * <code>GRectangle</code>.\n *\n * @usage gimage.setBounds(bounds);\n * @param bounds A <code>GRectangle</code> specifying the new bounds\n */\n\tpublic final void setBounds(GRectangle bounds) {\n\t\tsetBounds(bounds.getX(), bounds.getY(), bounds.getWidth(), bounds.getHeight());\n\t}\n\n/* Method: getBounds() */\n/**\n * Returns the bounding box of this object.\n *\n * @usage GRectangle bounds = gimage.getBounds();\n * @return The bounding box for this object\n */\n\tpublic GRectangle getBounds() {\n\t\tdetermineSize();\n\t\treturn new GRectangle(getX(), getY(), myWidth, myHeight);\n\t}\n\n/* Method: scale(sx, sy) */\n/**\n * Scales the object on the screen by the scale factors <code>sx</code> and <code>sy</code>.\n *\n * @usage gobj.scale(sx, sy);\n * @param sx The factor used to scale all coordinates in the x direction\n * @param sy The factor used to scale all coordinates in the y direction\n */\n\tpublic void scale(double sx, double sy) {\n\t\tmyWidth *= sx;\n\t\tmyHeight *= sy;\n\t\trepaint();\n\t}\n\n/* Method: scale(sf) */\n/**\n * Scales the object on the screen by the scale factor <code>sf</code>, which applies\n * in both dimensions.\n *\n * @usage gobj.scale(sf);\n * @param sf The factor used to scale all coordinates in both dimensions\n */\n\tpublic final void scale(double sf) {\n\t\tscale(sf, sf);\n\t}\n\n/* Method: getPixelArray() */\n/**\n * Returns a two-dimensional array of pixel values from the stored image.\n *\n * @usage int[][] array = gimage.getPixelArray();\n * @return A two-dimensional array of pixel values from the stored image\n */\n\tpublic int[][] getPixelArray() {\n\t\treturn MediaTools.getPixelArray(myImage);\n\t}\n\n/* Static method: getAlpha(pixel) */\n/**\n * Returns the alpha component from an RGB value.\n *\n * @usage int alpha = GImage.getAlpha(pixel);\n * @param pixel An <code>int</code> containing a pixel value as alpha/red/green/blue.\n * @return The alpha component of the pixel\n */\n\tpublic static int getAlpha(int pixel) {\n\t\treturn (pixel >> 24) & 0xFF;\n\t}\n\n/* Static method: getRed(pixel) */\n/**\n * Returns the red component from an RGB value.\n *\n * @usage int red = GImage.getRed(pixel);\n * @param pixel An <code>int</code> containing a pixel value as alpha/red/green/blue.\n * @return The red component of the pixel\n */\n\tpublic static int getRed(int pixel) {\n\t\treturn (pixel >> 16) & 0xFF;\n\t}\n\n/* Static method: getGreen(pixel) */\n/**\n * Returns the green component from an RGB value.\n *\n * @usage int green = GImage.getGreen(pixel);\n * @param pixel An <code>int</code> containing a pixel value as alpha/red/green/blue.\n * @return The green component of the pixel\n */\n\tpublic static int getGreen(int pixel) {\n\t\treturn (pixel >> 8) & 0xFF;\n\t}\n\n/* Static method: getBlue(pixel) */\n/**\n * Returns the blue component from an RGB value.\n *\n * @usage int blue = GImage.getBlue(pixel);\n * @param pixel An <code>int</code> containing a pixel value as alpha/red/green/blue.\n * @return The blue component of the pixel\n */\n\tpublic static int getBlue(int pixel) {\n\t\treturn pixel & 0xFF;\n\t}\n\n/* Static method: createRGBPixel(red, green, blue) */\n/**\n * Creates an opaque pixel value with the color components given by\n * <code>red</code>, <code>green</code>, and <code>blue</code>.\n *\n * @usage int pixel = GImage.createRGBPixel(red, green, blue);\n * @param red The red component of the pixel (0 to 255)\n * @param green The green component of the pixel (0 to 255)\n * @param blue The blue component of the pixel (0 to 255)\n * @return An opaque pixel value containing these components\n */\n\tpublic static int createRGBPixel(int red, int green, int blue) {\n\t\treturn createRGBPixel(red, green, blue, 0xFF);\n\t}\n\n/* Static method: createRGBPixel(red, green, blue, alpha) */\n/**\n * Creates a pixel value with the color components given by\n * <code>red</code>, <code>green</code>, and <code>blue</code>\n * and the transparency value <code>alpha</code>.\n *\n * @usage int pixel = GImage.createRGBPixel(red, green, blue);\n * @param red The red component of the pixel (0 to 255)\n * @param green The green component of the pixel (0 to 255)\n * @param blue The blue component of the pixel (0 to 255)\n * @param alpha The transparency value of the pixel (0 to 255)\n * @return A pixel value containing these components\n */\n\tpublic static int createRGBPixel(int red, int green, int blue, int alpha) {\n\t\treturn (alpha << 24) | (red << 16) | (green << 8) | blue;\n\t}\n\n/* Inherited method: setLocation(x, y) */\n/**\n * @inherited GObject#void setLocation(double x, double y)\n * Sets the location of this object to the point (<code>x</code>, <code>y</code>).\n */\n\n/* Inherited method: setLocation(pt) */\n/**\n * @inherited GObject#void setLocation(GPoint pt)\n * Sets the location of this object to the specified point.\n */\n\n/* Inherited method: getLocation() */\n/**\n * @inherited GObject#GPoint getLocation()\n * Returns the location of this object as a <code>GPoint</code>.\n */\n\n/* Inherited method: getX() */\n/**\n * @inherited GObject#double getX()\n * Returns the x-coordinate of the object.\n */\n\n/* Inherited method: getY() */\n/**\n * @inherited GObject#double getY()\n * Returns the y-coordinate of the object.\n */\n\n/* Inherited method: getWidth() */\n/**\n * @inherited GObject#double getWidth()\n * Returns the width of this object as a double-precision value, which\n * is defined to be the width of the bounding box.\n */\n\n/* Inherited method: getHeight() */\n/**\n * @inherited GObject#double getHeight()\n * Returns the height of this object as a double-precision value, which\n * is defined to be the height of the bounding box.\n */\n\n/* Inherited method: move(dx, dy) */\n/**\n * @inherited GObject#void move(double dx, double dy)\n * Moves the object on the screen using the displacements <code>dx</code> and <code>dy</code>.\n */\n\n/* Inherited method: movePolar(r, theta) */\n/**\n * @inherited GObject#void movePolar(double r, double theta)\n * Moves the object using displacements given in polar coordinates.\n */\n\n/* Inherited method: contains(x, y) */\n/**\n * @inherited GObject#boolean contains(double x, double y)\n * Checks to see whether a point is inside the object.\n */\n\n/* Inherited method: contains(pt) */\n/**\n * @inherited GObject#boolean contains(GPoint pt)\n * Checks to see whether a point is inside the object.\n */\n\n/* Inherited method: sendToFront() */\n/**\n * @inherited GObject#void sendToFront()\n * Moves this object to the front of the display in the <i>z</i> dimension.\n */\n\n/* Inherited method: sendToBack() */\n/**\n * @inherited GObject#void sendToBack()\n * Moves this object to the back of the display in the <i>z</i> dimension.\n */\n\n/* Inherited method: sendForward() */\n/**\n * @inherited GObject#void sendForward()\n * Moves this object one step toward the front in the <i>z</i> dimension.\n */\n\n/* Inherited method: sendBackward() */\n/**\n * @inherited GObject#void sendBackward()\n * Moves this object one step toward the back in the <i>z</i> dimension.\n */\n\n/* Inherited method: setVisible(visible) */\n/**\n * @inherited GObject#void setVisible(boolean visible)\n * Sets whether this object is visible.\n */\n\n/* Inherited method: isVisible() */\n/**\n * @inherited GObject#boolean isVisible()\n * Checks to see whether this object is visible.\n */\n\n/* Inherited method: addMouseListener(listener) */\n/**\n * @inherited GObject#void addMouseListener(MouseListener listener)\n * Adds a mouse listener to this graphical object.\n */\n\n/* Inherited method: removeMouseListener(listener) */\n/**\n * @inherited GObject#void removeMouseListener(MouseListener listener)\n * Removes a mouse listener from this graphical object.\n */\n\n/* Inherited method: addMouseMotionListener(listener) */\n/**\n * @inherited GObject#void addMouseMotionListener(MouseMotionListener listener)\n * Adds a mouse motion listener to this graphical object.\n */\n\n/* Inherited method: removeMouseMotionListener(listener) */\n/**\n * @inherited GObject#void removeMouseMotionListener(MouseMotionListener listener)\n * Removes a mouse motion listener from this graphical object.\n */\n\n/* Protected method: getAWTBounds() */\n/**\n * Returns an AWT <code>Rectangle</code> that specifies the bounds of this object.\n *\n * @usage Rectangle r = grect.getAWTBounds();\n * @return A <code>Rectangle</code> that specifies the bounds of this object\n */\n\tprotected Rectangle getAWTBounds() {\n\t\tdetermineSize();\n\t\treturn new Rectangle(GMath.round(getX()), GMath.round(getY()), GMath.round(myWidth), GMath.round(myHeight));\n\t}\n\n/* Private method: determineSize() */\n/**\n * Computes the size of the image.\n */\n\tprivate void determineSize() {\n\t\tif (sizeDetermined) return;\n\t\tComponent component = getComponent();\n\t\tif (component == null) component = MediaTools.getImageObserver();\n\t\tmyWidth = myImage.getWidth(component);\n\t\tmyHeight = myImage.getHeight(component);\n\t\tsizeDetermined = true;\n\t}\n\n/* Private instance variables */\n\tprivate Image myImage;\n\tprivate double myWidth;\n\tprivate double myHeight;\n\tprivate boolean sizeDetermined;\n\n/* Serial version UID */\n/**\n * The serialization code for this class.  This value should be incremented\n * whenever you change the structure of this class in an incompatible way,\n * typically by adding a new instance variable.\n */\n\tstatic final long serialVersionUID = 1L;\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/graphics/GLabel.java",
    "content": "/*\n * @(#)GLabel.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Feature enhancement 26-May-08 (ESR)\n//   1. Added support for serialization.\n\npackage acm.graphics;\n\nimport acm.util.*;\nimport java.awt.*;\n\n/* Class: GLabel */\n/**\n * The <code>GLabel</code> class is a graphical object whose appearance\n * consists of a text string.\n */\npublic class GLabel extends GObject {\n\n/* Constant: DEFAULT_FONT */\n/**\n * The default font used to display strings.  You can change the font by invoking\n * the <a href=\"#setFont(Font)\"><code>setFont</code></a> method.\n */\n\tpublic static final Font DEFAULT_FONT = new Font(\"Default\", Font.PLAIN, 12);\n\n/* Constructor: GLabel(str, x, y) */\n/**\n * Creates a new <code>GLabel</code> object initialized to contain the specified string.\n *\n * @usage GLabel glabel = new GLabel(str);\n * @param str The initial contents of the <code>GLabel</code>\n */\n\tpublic GLabel(String str) {\n\t\tthis(str, 0, 0);\n\t}\n\n/* Constructor: GLabel(str, x, y) */\n/**\n * Creates a new <code>GLabel</code> object with its baseline origin at the\n * specified position.\n *\n * @usage GLabel glabel = new GLabel(str, x, y);\n * @param str The initial contents of the <code>GLabel</code>\n * @param x The x-coordinate of the label origin\n * @param y The y-coordinate of the baseline for the label\n */\n\tpublic GLabel(String str, double x, double y) {\n\t\tlabel = str;\n\t\tsetFont(DEFAULT_FONT);\n\t\tsetLocation(x, y);\n\t}\n\n/* Method: setFont(font) */\n/**\n * Changes the font used to display the <code>GLabel</code>.  This call will\n * usually change the size of the displayed object and will therefore affect\n * the result of calls to <a href=\"GObject.html#getSize()\"><code>getSize</code></a>\n * and <a href=\"GObject.html#getBounds()\"><code>getBounds</code></a>.\n *\n * @usage glabel.setFont(font);\n * @param font A <code>Font</code> object indicating the new font\n */\n\tpublic void setFont(Font font) {\n\t\tlabelFont = JTFTools.getStandardFont(font);\n\t\trepaint();\n\t}\n\n/* Method: setFont(str) */\n/**\n * Changes the font used to display the <code>GLabel</code> as specified by\n * the string <code>str</code>, which is interpreted in the style of\n * <code>Font.decode</code>.  The usual format of the font string is\n *\n * <p><pre><code>\n * &nbsp;    <font face=\"serif;times\"><i>family</i></font>-<font face=\"serif;times\"><i>style</i></font>-<font face=\"serif;times\"><i>size</i></font>\n *\n * <p>where both <i>style</i> and <i>size</i> are optional.  If any of these\n * parts are specified as an asterisk, the existing value is retained.\n *\n * @usage glabel.setFont(str);\n * @param str A <code>String</code> specifying the new font\n */\n\tpublic void setFont(String str) {\n\t\tsetFont(JTFTools.decodeFont(str, getFont()));\n\t}\n\n/* Method: getFont() */\n/**\n * Returns the font in which the <code>GLabel</code> is displayed.\n *\n * @usage Font font = glabel.getFont();\n * @return The font in use by this object\n */\n\tpublic Font getFont() {\n\t\treturn labelFont;\n\t}\n\n/* Method: setLabel(str) */\n/**\n * Changes the string stored within the <code>GLabel</code> object, so that\n * a new text string appears on the display.\n *\n * @usage glabel.setLabel(str);\n * @param str The new string to display\n */\n\tpublic void setLabel(String str) {\n\t\tlabel = str;\n\t\trepaint();\n\t}\n\n/* Method: getLabel() */\n/**\n * Returns the string displayed by this object.\n *\n * @usage String str = glabel.getLabel();\n * @return The string displayed by this object\n */\n\tpublic String getLabel() {\n\t\treturn label;\n\t}\n\n/* Method: paint(g) */\n/**\n * Implements the <code>paint</code> operation for this graphical object.  This method\n * is not called directly by clients.\n * @noshow\n */\n\tpublic void paint(Graphics g) {\n\t\tg.setFont(labelFont);\n\t\tg.drawString(label, GMath.round(getX()), GMath.round(getY()));\n\t}\n\n/* Method: getWidth() */\n/**\n * Returns the width of this string, as it appears on the display.\n *\n * @usage double width = glabel.getWidth();\n * @return The width of this object\n */\n\tpublic double getWidth() {\n\t\treturn getFontMetrics().stringWidth(label);\n\t}\n\n/* Method: getHeight() */\n/**\n * Returns the height of this string, as it appears on the display.\n *\n * @usage double height = glabel.getHeight();\n * @return The height of this string\n */\n\tpublic double getHeight() {\n\t\treturn getFontMetrics().getHeight();\n\t}\n\n/* Method: getAscent() */\n/**\n * Returns the distance this string extends above the baseline.\n *\n * @usage double ascent = glabel.getAscent();\n * @return The ascent of this string in pixels\n */\n\tpublic double getAscent() {\n\t\treturn getFontMetrics().getAscent();\n\t}\n\n/* Method: getDescent() */\n/**\n * Returns the distance this string descends below the baseline.\n *\n * @usage double descent = glabel.getDescent();\n * @return The descent of this string in pixels\n */\n\tpublic double getDescent() {\n\t\treturn getFontMetrics().getDescent();\n\t}\n\n/* Method: getFontMetrics() */\n/**\n * Returns a <code>FontMetrics</code> object describing the dimensions of this string.\n *\n * @usage FontMetrics fm = glabel.getFontMetrics();\n * @return A <code>FontMetrics</code> object describing the dimensions of this string\n * @noshow\n */\n\tpublic FontMetrics getFontMetrics() {\n\t\tComponent comp = getComponent();\n\t\tif (comp == null) comp = DUMMY_COMPONENT;\n\t\treturn comp.getFontMetrics(labelFont);\n\t}\n\n/* Method: getBounds() */\n/**\n * Returns a <code>GRectangle</code> that specifies the bounding box for the string.\n *\n * @usage GRectangle bounds = glabel.getBounds();\n * @return The bounding box for this object\n */\n\tpublic GRectangle getBounds() {\n\t\treturn new GRectangle(getX(), getY() - getAscent(), getWidth(), getHeight());\n\t}\n\n/* Inherited method: getSize() */\n/**\n * @inherited GObject#GDimension getSize()\n * Returns the size of the bounding box for this object.\n */\n\n/* Inherited method: contains(x, y) */\n/**\n * @inherited GObject#boolean contains(double x, double y)\n * Checks to see whether a point is \"inside\" the string, which is defined to be\n * inside the bounding rectangle.\n */\n\n/* Inherited method: contains(pt) */\n/**\n * @inherited GObject#boolean contains(GPoint pt)\n * Checks to see whether a point is inside the object.\n */\n\n/* Inherited method: setLocation(x, y) */\n/**\n * @inherited GObject#void setLocation(double x, double y)\n * Sets the location of the <code>GLabel</code> to the point (<code>x</code>, <code>y</code>).\n * For a <code>GLabel</code>, the location is the point on the text baseline at which the\n * text starts.\n */\n\n/* Inherited method: setLocation(pt) */\n/**\n * @inherited GObject#void setLocation(GPoint pt)\n * Sets the location of this object to the specified point.\n */\n\n/* Inherited method: getLocation() */\n/**\n * @inherited GObject#GPoint getLocation()\n * Returns the location of the <code>GLabel</code> as a <code>GPoint</code> object.\n */\n\n/* Inherited method: getX() */\n/**\n * @inherited GObject#double getX()\n * Returns the x-coordinate of the object.\n */\n\n/* Inherited method: getY() */\n/**\n * @inherited GObject#double getY()\n * Returns the y-coordinate of the object.\n */\n\n/* Inherited method: move(dx, dy) */\n/**\n * @inherited GObject#void move(double dx, double dy)\n * Moves the object on the screen using the displacements <code>dx</code> and <code>dy</code>.\n */\n\n/* Inherited method: movePolar(r, theta) */\n/**\n * @inherited GObject#void movePolar(double r, double theta)\n * Moves the object using displacements given in polar coordinates.\n */\n\n/* Inherited method: sendToFront() */\n/**\n * @inherited GObject#void sendToFront()\n * Moves this object to the front of the display in the <i>z</i> dimension.\n */\n\n/* Inherited method: sendToBack() */\n/**\n * @inherited GObject#void sendToBack()\n * Moves this object to the back of the display in the <i>z</i> dimension.\n */\n\n/* Inherited method: sendForward() */\n/**\n * @inherited GObject#void sendForward()\n * Moves this object one step toward the front in the <i>z</i> dimension.\n */\n\n/* Inherited method: sendBackward() */\n/**\n * @inherited GObject#void sendBackward()\n * Moves this object one step toward the back in the <i>z</i> dimension.\n */\n\n/* Inherited method: setColor(color) */\n/**\n * @inherited GObject#void setColor(Color color)\n * Sets the color used to display the text of the <code>GLabel</code>.\n */\n\n/* Inherited method: getColor() */\n/**\n * @inherited GObject#Color getColor()\n * Returns the color used to display the text of the <code>GLabel</code>.\n */\n\n/* Inherited method: setVisible(visible) */\n/**\n * @inherited GObject#void setVisible(boolean visible)\n * Sets the visibility status of the <code>GLabel</code>.\n */\n\n/* Inherited method: isVisible() */\n/**\n * @inherited GObject#boolean isVisible()\n * Checks to see whether the <code>GLabel</code> is visible.\n */\n\n/* Inherited method: addMouseListener(listener) */\n/**\n * @inherited GObject#void addMouseListener(MouseListener listener)\n * Adds a mouse listener to this graphical object.\n */\n\n/* Inherited method: removeMouseListener(listener) */\n/**\n * @inherited GObject#void removeMouseListener(MouseListener listener)\n * Removes a mouse listener from this graphical object.\n */\n\n/* Inherited method: addMouseMotionListener(listener) */\n/**\n * @inherited GObject#void addMouseMotionListener(MouseMotionListener listener)\n * Adds a mouse motion listener to this graphical object.\n */\n\n/* Inherited method: removeMouseMotionListener(listener) */\n/**\n * @inherited GObject#void removeMouseMotionListener(MouseMotionListener listener)\n * Removes a mouse motion listener from this graphical object.\n */\n\n/* Protected method: paramString() */\n/**\n * Returns a string indicating the parameters of this object.\n * @noshow\n */\n\tpublic String paramString() {\n\t\treturn super.paramString() + \", string=\\\"\" + label + \"\\\"\";\n\t}\n\n/* Private instance variables */\n\tprivate String label;\n\tprivate Font labelFont;\n\n\tprivate static final Component DUMMY_COMPONENT = MediaTools.getImageObserver();\n\n/* Serial version UID */\n/**\n * The serialization code for this class.  This value should be incremented\n * whenever you change the structure of this class in an incompatible way,\n * typically by adding a new instance variable.\n */\n\tstatic final long serialVersionUID = 1L;\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/graphics/GLine.java",
    "content": "/*\n * @(#)GLine.java   1.1 1 08/08/01\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Code cleanup 30-Sep-06 (ESR)\n//   1. Removed vestigial inherited methods setFilled and isFilled.\n//\n// Feature enhancement 26-May-08 (ESR)\n//   1. Added support for serialization.\n\npackage acm.graphics;\n\nimport java.awt.*;\n\n/* Class: GLine */\n/**\n * The <code>GLine</code> class is a graphical object whose appearance consists\n * of a line segment.\n */\npublic class GLine extends GObject implements GScalable {\n\n/* Field: LINE_TOLERANCE */\n/**\n * This constant defines how close (measured in pixel units) a point has\n * to be to a line before that point is considered to be \"contained\" within\n * the line.\n */\n\tpublic static final double LINE_TOLERANCE = 1.5;\n\n/* Constructor: GLine(x0, y0, x1, y1) */\n/**\n * Constructs a line segment from its endpoints.  The point\n * (<code>x0</code>,&nbsp;<code>y0</code>) defines the start of the\n * line and the point (<code>x1</code>,&nbsp;<code>y1</code>) defines\n * the end.\n *\n * @usage GLine gline = new GLine(x0, y0, x1, y1);\n * @param x0 The x-coordinate of the start of the line\n * @param y0 The y-coordinate of the start of the line\n * @param x1 The x-coordinate of the end of the line\n * @param y1 The y-coordinate of the end of the line\n */\n\tpublic GLine(double x0, double y0, double x1, double y1) {\n\t\tsetLocation(x0, y0);\n\t\tdx = x1 - x0;\n\t\tdy = y1 - y0;\n\t}\n\n/* Method: paint(g) */\n/**\n * Implements the <code>paint</code> operation for this graphical object.  This method\n * is not called directly by clients.\n * @noshow\n */\n\tpublic void paint(Graphics g) {\n\t\tdouble x = getX();\n\t\tdouble y = getY();\n\t\tg.drawLine(GMath.round(x), GMath.round(y), GMath.round(x + dx), GMath.round(y + dy));\n\t}\n\n/* Method: getBounds() */\n/**\n * Returns the bounding box for this object.\n *\n * @usage GRectangle bounds = gline.getBounds();\n * @return The bounding box for this object\n */\n\tpublic GRectangle getBounds() {\n\t\tdouble x = Math.min(getX(), getX() + dx);\n\t\tdouble y = Math.min(getY(), getY() + dy);\n\t\treturn new GRectangle(x, y, Math.abs(dx), Math.abs(dy));\n\t}\n\n/* Method: setStartPoint(x, y) */\n/**\n * Sets the initial point in the line to (<code>x</code>,&nbsp;<code>y</code>),\n * leaving the end point unchanged.  This method is therefore different from\n * <a href=\"#setLocation(double, double)\"><code>setLocation</code></a>, which\n * moves both components of the line segment.\n *\n * @usage gline.setStartPoint(x, y);\n * @param x The new x-coordinate of the origin\n * @param y The new y-coordinate of the origin\n */\n\tpublic void setStartPoint(double x, double y) {\n\t\tdx += getX() - x;\n\t\tdy += getY() - y;\n\t\tsetLocation(x, y);\n\t}\n\n/* Method: getStartPoint() */\n/**\n * Returns the coordinates of the initial point in the line.  This method is\n * identical to <a href=\"#getLocation()\"><code>getLocation</code></a> and exists only to\n * provide symmetry with <a href=\"#setStartPoint(double, double)\"><code>setStartPoint</code></a>.\n *\n * @usage GPoint pt = gline.getStartPoint();\n * @return The coordinates of the origin of the line\n */\n\tpublic GPoint getStartPoint() {\n\t\treturn getLocation();\n\t}\n\n/* Method: setEndPoint(x, y) */\n/**\n * Sets the end point of the line to the point (<code>x</code>,&nbsp;<code>y</code>).\n * The origin of the line remains unchanged.\n *\n * @usage gline.setEndPoint(x, y);\n * @param x The new x-coordinate of the end point\n * @param y The new y-coordinate of the end point\n */\n\tpublic void setEndPoint(double x, double y) {\n\t\tdx = x - getX();\n\t\tdy = y - getY();\n\t\trepaint();\n\t}\n\n/* Method: getEndPoint() */\n/**\n * Returns the end point of the line as a <code>GPoint</code> object.\n *\n * @usage GPoint pt = gline.getEndPoint();\n * @return The coordinates of the end point of the line\n */\n\tpublic GPoint getEndPoint() {\n\t\treturn new GPoint(getX() + dx, getY() + dy);\n\t}\n\n/* Method: scale(sx, sy) */\n/**\n * Scales the line on the screen by the scale factors <code>sx</code> and <code>sy</code>.\n * This method changes only the end point of the line, leaving the start of the line fixed.\n *\n * @usage gline.scale(sx, sy);\n * @param sx The factor used to scale all coordinates in the x direction\n * @param sy The factor used to scale all coordinates in the y direction\n */\n\tpublic void scale(double sx, double sy) {\n\t\tdx *= sx;\n\t\tdy *= sy;\n\t\trepaint();\n\t}\n\n/* Method: scale(sf) */\n/**\n * Scales the object on the screen by the scale factor <code>sf</code>, which applies\n * in both dimensions.\n *\n * @usage gobj.scale(sf);\n * @param sf The factor used to scale all coordinates in both dimensions\n */\n\tpublic final void scale(double sf) {\n\t\tscale(sf, sf);\n\t}\n\n/* Method: contains(x, y) */\n/**\n * Checks to see whether a point is inside the object.  For the <code>GLine</code>\n * class, containment is defined to mean that the point is within\n * <a href=\"#LINE_TOLERANCE\"><code>LINE_TOLERANCE</code></a> pixels of the\n * line.\n *\n * @usage if (gline.contains(x, y)) . . .\n * @param x The x-coordinate of the point being tested\n * @param y The y-coordinate of the point being tested\n * @return <code>true</code> if the point (<code>x</code>,&nbsp;<code>y</code>) is inside\n */\n\tpublic boolean contains(double x, double y) {\n\t\tdouble x0 = getX();\n\t\tdouble y0 = getY();\n\t\tdouble x1 = x0 + dx;\n\t\tdouble y1 = y0 + dy;\n\t\tdouble tSquared = LINE_TOLERANCE * LINE_TOLERANCE;\n\t\tif (distanceSquared(x, y, x0, y0) < tSquared) return true;\n\t\tif (distanceSquared(x, y, x1, y1) < tSquared) return true;\n\t\tif (x < Math.min(x0, x1) - LINE_TOLERANCE) return false;\n\t\tif (x > Math.max(x0, x1) + LINE_TOLERANCE) return false;\n\t\tif (y < Math.min(y0, y1) - LINE_TOLERANCE) return false;\n\t\tif (y > Math.max(y0, y1) + LINE_TOLERANCE) return false;\n\t\tif ((float) x0 - (float) x1 == 0 && (float) y0 - (float) y1 == 0) return false;\n\t\tdouble u = ((x - x0) * (x1 - x0) + (y - y0) * (y1 - y0)) / distanceSquared(x0, y0, x1, y1);\n\t\treturn distanceSquared(x, y, x0 + u * (x1 - x0), y0 + u * (y1 - y0)) < tSquared;\n\t}\n\n/* Inherited method: contains(pt) */\n/**\n * @inherited GObject#boolean contains(GPoint pt)\n * Checks to see whether a point is inside the object.\n */\n\n/* Inherited method: sendToFront() */\n/**\n * @inherited GObject#void sendToFront()\n * Moves this object to the front of the display in the <i>z</i> dimension.\n */\n\n/* Inherited method: sendToBack() */\n/**\n * @inherited GObject#void sendToBack()\n * Moves this object to the back of the display in the <i>z</i> dimension.\n */\n\n/* Inherited method: sendForward() */\n/**\n * @inherited GObject#void sendForward()\n * Moves this object one step toward the front in the <i>z</i> dimension.\n */\n\n/* Inherited method: sendBackward() */\n/**\n * @inherited GObject#void sendBackward()\n * Moves this object one step toward the back in the <i>z</i> dimension.\n */\n\n/* Inherited method: setColor(color) */\n/**\n * @inherited GObject#void setColor(Color color)\n * Sets the color used to display this object.\n */\n\n/* Inherited method: getColor() */\n/**\n * @inherited GObject#Color getColor()\n * Returns the color used to display this object.\n */\n\n/* Inherited method: setVisible(visible) */\n/**\n * @inherited GObject#void setVisible(boolean visible)\n * Sets whether this object is visible.\n */\n\n/* Inherited method: isVisible() */\n/**\n * @inherited GObject#boolean isVisible()\n * Checks to see whether this object is visible.\n */\n\n/* Inherited method: addMouseListener(listener) */\n/**\n * @inherited GObject#void addMouseListener(MouseListener listener)\n * Adds a mouse listener to this graphical object.\n */\n\n/* Inherited method: removeMouseListener(listener) */\n/**\n * @inherited GObject#void removeMouseListener(MouseListener listener)\n * Removes a mouse listener from this graphical object.\n */\n\n/* Inherited method: addMouseMotionListener(listener) */\n/**\n * @inherited GObject#void addMouseMotionListener(MouseMotionListener listener)\n * Adds a mouse motion listener to this graphical object.\n */\n\n/* Inherited method: removeMouseMotionListener(listener) */\n/**\n * @inherited GObject#void removeMouseMotionListener(MouseMotionListener listener)\n * Removes a mouse motion listener from this graphical object.\n */\n\n/* Protected method: paramString() */\n/**\n * Returns a string indicating the parameters of this object.\n * @noshow\n */\n\tpublic String paramString() {\n\t\tString tail = super.paramString();\n\t\ttail = tail.substring(tail.indexOf(')') + 1);\n\t\tGPoint pt = getStartPoint();\n\t\tString param = \"start=(\" + pt.getX() + \", \" + pt.getY() + \")\";\n\t\tpt = getEndPoint();\n\t\tparam += \", end=(\" + pt.getX() + \", \" + pt.getY() + \")\";\n\t\treturn param + tail;\n\t}\n\n/* Private method: distanceSquared(x0, y0, x1, y1) */\n/**\n * Returns the square of the distance between (<code>x0</code>,&nbsp;<code>y0</code>)\n * and (<code>x1</code>,&nbsp;<code>y1</code>).\n */\n\tprivate double distanceSquared(double x0, double y0, double x1, double y1) {\n\t\treturn (x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0);\n\t}\n\n/* Private instance variables */\n\tprivate double dx, dy;\n\n/* Serial version UID */\n/**\n * The serialization code for this class.  This value should be incremented\n * whenever you change the structure of this class in an incompatible way,\n * typically by adding a new instance variable.\n */\n\tstatic final long serialVersionUID = 1L;\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/graphics/GMath.java",
    "content": "/*\n * @(#)GMath.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Bug fix 15-Aug-07 (ESR, JTFBug 2007-011, reported by William Slough)\n//   1. Fixed comments that referred to incorrect trigonometric functions.\n\npackage acm.graphics;\n\n/* Class: GMath */\n/**\n * This class defines a variety of static mathematical methods\n * that are useful for the <code>acm.graphics</code> package.\n */\npublic class GMath {\n\n/* Private constructor: GMath() */\n/**\n * Prevents clients from instantiating this class.\n */\n\tprivate GMath() {\n\t\t/* Empty */\n\t}\n\n/* Static method: round(x) */\n/**\n * Rounds a <code>double</code> value to the nearest <code>int</code>.\n *\n * @usage int n = round(x);\n * @param x A <code>double</code> value\n * @return The nearest <code>int</code> value\n */\n\tpublic static int round(double x) {\n\t\treturn (int) Math.round(x);\n\t}\n\n/* Static method: sinDegrees(angle) */\n/**\n * Returns the trigonometric sine of its argument where <code>angle</code>\n * is expressed in degrees.\n *\n * @usage double s = sinDegrees(angle);\n * @param angle An angle measured in degrees\n * @return The trigonometric sine of the angle\n */\n\tpublic static double sinDegrees(double angle) {\n\t\treturn Math.sin(toRadians(angle));\n\t}\n\n/* Static method: cosDegrees(angle) */\n/**\n * Returns the trigonometric cosine of its argument where <code>angle</code>\n * is expressed in degrees.\n *\n * @usage double c = cosDegrees(angle);\n * @param angle An angle measured in degrees\n * @return The trigonometric cosine of the angle\n */\n\tpublic static double cosDegrees(double angle) {\n\t\treturn Math.cos(toRadians(angle));\n\t}\n\n/* Static method: tanDegrees(angle) */\n/**\n * Returns the trigonometric tangent of its argument where <code>angle</code>\n * is expressed in degrees.\n *\n * @usage double t = tanDegrees(angle);\n * @param angle An angle measured in degrees\n * @return The trigonometric tangent of the angle\n */\n\tpublic static double tanDegrees(double angle) {\n\t\treturn sinDegrees(angle) / cosDegrees(angle);\n\t}\n\n/* Static method: toDegrees(radians) */\n/**\n * Converts an angle from radians to degrees.  This method is defined in\n * the <code>Math</code> class, but was added only in JDK1.2, which is not\n * supported in all browsers.\n *\n * @usage double degrees = toDegrees(radians);\n * @param radians An angle measured in radians\n * @return The equivalent angle in degrees\n */\n\tpublic static double toDegrees(double radians) {\n\t\treturn radians * 180 / Math.PI;\n\t}\n\n/* Static method: toRadians(degrees) */\n/**\n * Converts an angle from degrees to radians.  This method is defined in\n * the <code>Math</code> class, but was added only in JDK1.2, which is not\n * supported in all browsers.\n *\n * @usage double radians = toRadians(degrees);\n * @param degrees An angle measured in degrees\n * @return The equivalent angle in radians\n */\n\tpublic static double toRadians(double degrees) {\n\t\treturn degrees * Math.PI / 180;\n\t}\n\n/* Static method: distance(x, y) */\n/**\n * Computes the distance between the origin and the point\n * (<code>x</code>,&nbsp;<code>y</code>).\n *\n * @usage double d = distance(x, y);\n * @param x The x-coordinate of the point\n * @param y The y-coordinate of the point\n * @return The distance from the origin to the point (<code>x</code>,&nbsp;<code>y</code>)\n */\n\tpublic static double distance(double x, double y) {\n\t\treturn Math.sqrt(x * x + y * y);\n\t}\n\n/* Static method: distance(x0, y0, x1, y1) */\n/**\n * Computes the distance between the points (<code>x0</code>,&nbsp;<code>y0</code>)\n * and (<code>x1</code>,&nbsp;<code>y1</code>).\n *\n * @usage double d = distance(x0, y0, x1, y1);\n * @param x0 The x-coordinate of one point\n * @param y0 The y-coordinate of that point\n * @param x1 The x-coordinate of the other point\n * @param y1 The y-coordinate of that point\n * @return The distance between the points (<code>x0</code>,&nbsp;<code>y0</code>) and\n *         (<code>x1</code>,&nbsp;<code>y1</code>)\n */\n\tpublic static double distance(double x0, double y0, double x1, double y1) {\n\t\treturn distance(x1 - x0, y1 - y0);\n\t}\n\n/* Static method: angle(x, y) */\n/**\n * Returns the angle in degrees from the origin to the point\n * (<code>x</code>,&nbsp;<code>y</code>).  This method is easier to use than\n * <code>atan2</code> because it specifies the displacements in the usual\n * x/y order and because it takes care of the fact that the Java coordinate\n * system is flipped.  The point (0, 0) is arbitrarily defined to be at\n * angle 0.\n *\n * @usage double theta = angle(x, y);\n * @param x The x-coordinate of the point\n * @param y The y-coordinate of the point\n * @return The angle from the origin to the point (<code>x</code>,&nbsp;<code>y</code>)\n *         measured in degrees counterclockwise from the +x axis\n */\n\tpublic static double angle(double x, double y) {\n\t\tif (x == 0 && y == 0) return 0;\n\t\treturn toDegrees(Math.atan2(-y, x));\n\t}\n\n/* Static method: angle(x0, y0, x1, y1) */\n/**\n * Computes the angle in degrees formed by a line segment from the\n * point (<code>x0</code>,&nbsp;<code>y0</code>) and\n * (<code>x1</code>,&nbsp;<code>y1</code>).\n *\n * @usage double theta = angle(x0, y0, x1, y1);\n * @param x0 The x-coordinate of one point\n * @param y0 The y-coordinate of that point\n * @param x1 The x-coordinate of the other point\n * @param y1 The y-coordinate of that point\n * @return The angle formed by the line segment from\n *         (<code>x0</code>,&nbsp;<code>y0</code>) to\n *         (<code>x1</code>,&nbsp;<code>y1</code>)\n */\n\tpublic static double angle(double x0, double y0, double x1, double y1) {\n\t\treturn angle(x1 - x0, y1 - y0);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/graphics/GObject.java",
    "content": "/*\n * @(#)GObject.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Feature extension 26-May-08 (ESR)\n//   1. Added support for serialization.\n\npackage acm.graphics;\n\nimport acm.util.*;\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.lang.reflect.*;\nimport java.io.*;\n\n/* Abstract class: GObject */\n/**\n * This class is the common superclass of all graphical objects that can\n * be displayed on a <a href=\"GCanvas.html\"><code>GCanvas</code></a>.\n * Because it is an abstract class, you are not allowed to construct an\n * object whose class is <code>GObject</code> directly.  What you do\n * instead is construct one of the concrete subclasses like\n * <a href=\"GRect.html\"><code>GRect</code></a> or\n * <a href=\"GLine.html\"><code>GLine</code></a>.\n * The purpose of this class definition is to define methods that apply\n * to all graphical objects regardless of their specific class.\n *\n * <p>The <code>GObject</code> class implements the <code>Serializable</code>\n * interface by saving all of the internal state of the object.  The parent,\n * however, is saved only if the parent is a <code>GCompound</code>.\n */\npublic abstract class GObject implements Cloneable, Serializable {\n\n/* Protected constructor: GObject() */\n/**\n * Constructs a new <code>GObject</code> and initializes its state.  This\n * constructor is never called explicitly, but is instead invoked by the\n * constructors of its subclasses.\n */\n\tprotected GObject() {\n\t\tisVisible = true;\n\t\tmouseListenersEnabled = false;\n\t}\n\n/* Abstract method: paint(g) */\n/**\n * All subclasses of <code>GObject</code> must define a <code>paint</code>\n * method which allows the object to draw itself on the <code>Graphics</code>\n * context passed in as the parameter <code>g</code>.\n *\n * @usage gobj.paint(g);\n * @param g The graphics context into which the painting is done\n */\n\tpublic abstract void paint(Graphics g);\n\n/* Abstract method: getBounds() */\n/**\n * Returns the bounding box of this object, which is defined to be the\n * smallest rectangle that covers everything drawn by the figure.  The\n * coordinates of this rectangle do not necessarily match the location\n * returned by <a href=\"#getLocation()\"><code>getLocation</code></a>.\n * Given a <a href=\"GLabel.html\"><code>GLabel</code></a> object, for\n * example, <a href=\"#getLocation()\"><code>getLocation</code></a>\n * returns the coordinates of the point on the baseline at which the\n * string begins; <code>getBounds</code>, by contrast, returns a\n * rectangle that covers the entire window area occupied by the string.\n *\n * @usage GRectangle bounds = gobj.getBounds();\n * @return The bounding box for this object\n */\n\tpublic abstract GRectangle getBounds();\n\n/* Method: setLocation(x, y) */\n/**\n * Sets the location of this object to the point (<code>x</code>, <code>y</code>).\n *\n * @usage gobj.setLocation(x, y);\n * @param x The new x-coordinate for the object\n * @param y The new y-coordinate for the object\n */\n\tpublic void setLocation(double x, double y) {\n\t\txc = x;\n\t\tyc = y;\n\t\trepaint();\n\t}\n\n/* Method: setLocation(pt) */\n/**\n * Sets the location of this object to the specified point.\n *\n * @usage gobj.setLocation(pt);\n * @param pt The new location for this object\n * @noshow\n */\n\tpublic final void setLocation(GPoint pt) {\n\t\tsetLocation(pt.getX(), pt.getY());\n\t}\n\n/* Method: getLocation() */\n/**\n * Returns the location of this object as a <code>GPoint</code>.\n *\n * @usage GPoint pt = gobj.getLocation();\n * @return The location of this object as a <code>GPoint</code>\n */\n\tpublic GPoint getLocation() {\n\t\treturn new GPoint(xc, yc);\n\t}\n\n/* Method: getX() */\n/**\n * Returns the x-coordinate of the object.\n *\n * @usage double x = gobj.getX();\n * @return The x-coordinate of the object\n */\n\tpublic double getX() {\n\t\treturn xc;\n\t}\n\n/* Method: getY() */\n/**\n * Returns the y-coordinate of the object.\n *\n * @usage double y = gobj.getY();\n * @return The y-coordinate of the object\n */\n\tpublic double getY() {\n\t\treturn yc;\n\t}\n\n/* Method: move(dx, dy) */\n/**\n * Moves the object on the screen using the displacements <code>dx</code> and <code>dy</code>.\n *\n * @usage gobj.move(dx, dy);\n * @param dx The distance to move the object in the x direction (positive is rightward)\n * @param dy The distance to move the object in the y direction (positive is downward)\n */\n\tpublic void move(double dx, double dy) {\n\t\tsetLocation(xc + dx, yc + dy);\n\t}\n\n/* Method: movePolar(r, theta) */\n/**\n * Moves the object using displacements given in polar coordinates.  The\n * parameter <code>r</code> specifies the distance to move and <code>theta</code>\n * specifies the angle in which the motion occurs.  The angle is measured in\n * degrees increasing counterclockwise from the +x axis.\n *\n * @usage gobj.movePolar(r, theta);\n * @param r The distance to move\n * @param theta The angle in which to move, measured in degrees\n *              increasing counterclockwise from the +x axis\n */\n\tpublic final void movePolar(double r, double theta) {\n\t\tdouble radians = theta * Math.PI / 180;\n\t\tmove(r * Math.cos(radians), -r * Math.sin(radians));\n\t}\n\n/* Method: getSize() */\n/**\n * Returns the size of the bounding box for this object.\n *\n * @usage GDimension size = gobj.getSize();\n * @return The size of this object\n */\n\tpublic GDimension getSize() {\n\t\tGRectangle bounds = getBounds();\n\t\treturn new GDimension(bounds.getWidth(), bounds.getHeight());\n\t}\n\n/* Method: getWidth() */\n/**\n * Returns the width of this object, which is defined to be\n * the width of the bounding box.\n *\n * @usage double width = gobj.getWidth();\n * @return The width of this object on the screen\n */\n\tpublic double getWidth() {\n\t\treturn getBounds().getWidth();\n\t}\n\n/* Method: getHeight() */\n/**\n * Returns the height of this object, which is defined to be\n * the height of the bounding box.\n *\n * @usage double height = gobj.getHeight();\n * @return The height of this object on the screen\n */\n\tpublic double getHeight() {\n\t\treturn getBounds().getHeight();\n\t}\n\n/* Method: contains(x, y) */\n/**\n * Checks to see whether a point is inside the object.  By default, this\n * method simply checks to see if the point is inside the bounding box.\n * Many subclasses will need to override this to check whether the point\n * is contained in the shape.\n *\n * @usage if (gobj.contains(x, y)) . . .\n * @param x The x-coordinate of the point being tested\n * @param y The y-coordinate of the point being tested\n * @return <code>true</code> if the point (<code>x</code>,&nbsp;<code>y</code>) is inside\n *         the object, and <code>false</code> otherwise\n */\n\tpublic boolean contains(double x, double y) {\n\t\treturn getBounds().contains(GMath.round(x), GMath.round(y));\n\t}\n\n/* Method: contains(pt) */\n/**\n * Checks to see whether a point is inside the object.\n *\n * @usage if (gobj.contains(pt)) . . .\n * @param pt The point being tested\n * @return <code>true</code> if the point is inside the object, and <code>false</code> otherwise\n */\n\tpublic final boolean contains(GPoint pt) {\n\t\treturn contains(pt.getX(), pt.getY());\n\t}\n\n/* Method: sendToFront() */\n/**\n * Moves this object to the front of the display in the <i>z</i> dimension.  By\n * moving it to the front, this object will appear to be on top of the other graphical\n * objects on the display and may hide any objects that are further back.\n *\n * @usage gobj.sendToFront();\n */\n\tpublic void sendToFront() {\n\t\tif (compoundParent != null) {\n\t\t\tcompoundParent.sendToFront(this);\n\t\t} else if (transientParent instanceof GCanvas) {\n\t\t\t((GCanvas) transientParent).sendToFront(this);\n\t\t} else if (transientParent != null) {\n\t\t\ttry {\n\t\t\t\tClass<?> parentClass = transientParent.getClass();\n\t\t\t\tClass[] types = { Class.forName(\"acm.graphics.GObject\") };\n\t\t\t\tObject[] args = { this };\n\t\t\t\tMethod fn = parentClass.getMethod(\"sendToFront\", types);\n\t\t\t\tif (fn != null) fn.invoke(transientParent, args);\n\t\t\t} catch (Exception ex) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t}\n\t\tif (mouseListenersEnabled) updateEnabledList();\n\t}\n\n/* Method: sendToBack() */\n/**\n * Moves this object to the back of the display in the <i>z</i> dimension.  By\n * moving it to the back, this object will appear to be behind the other graphical\n * objects on the display and may be obscured by other objects in front.\n *\n * @usage gobj.sendToBack();\n */\n\tpublic void sendToBack() {\n\t\tif (compoundParent != null) {\n\t\t\tcompoundParent.sendToBack(this);\n\t\t} else if (transientParent instanceof GCanvas) {\n\t\t\t((GCanvas) transientParent).sendToBack(this);\n\t\t} else if (transientParent != null) {\n\t\t\ttry {\n\t\t\t\tClass<?> parentClass = transientParent.getClass();\n\t\t\t\tClass[] types = { Class.forName(\"acm.graphics.GObject\") };\n\t\t\t\tObject[] args = { this };\n\t\t\t\tMethod fn = parentClass.getMethod(\"sendToBack\", types);\n\t\t\t\tif (fn != null) fn.invoke(transientParent, args);\n\t\t\t} catch (Exception ex) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t}\n\t\tif (mouseListenersEnabled) updateEnabledList();\n\t}\n\n/* Method: sendForward() */\n/**\n * Moves this object one step toward the front in the <i>z</i> dimension.\n * If it was already at the front of the stack, nothing happens.\n *\n * @usage gobj.sendForward();\n */\n\tpublic void sendForward() {\n\t\tif (compoundParent != null) {\n\t\t\tcompoundParent.sendForward(this);\n\t\t} else if (transientParent instanceof GCanvas) {\n\t\t\t((GCanvas) transientParent).sendForward(this);\n\t\t} else if (transientParent != null) {\n\t\t\ttry {\n\t\t\t\tClass<?> parentClass = transientParent.getClass();\n\t\t\t\tClass[] types = { Class.forName(\"acm.graphics.GObject\") };\n\t\t\t\tObject[] args = { this };\n\t\t\t\tMethod fn = parentClass.getMethod(\"sendForward\", types);\n\t\t\t\tif (fn != null) fn.invoke(transientParent, args);\n\t\t\t} catch (Exception ex) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t}\n\t\tif (mouseListenersEnabled) updateEnabledList();\n\t}\n\n/* Method: sendBackward() */\n/**\n * Moves this object one step toward the back in the <i>z</i> dimension.\n * If it was already at the back of the stack, nothing happens.\n *\n * @usage gobj.sendBackward();\n */\n\tpublic void sendBackward() {\n\t\tif (compoundParent != null) {\n\t\t\tcompoundParent.sendBackward(this);\n\t\t} else if (transientParent instanceof GCanvas) {\n\t\t\t((GCanvas) transientParent).sendBackward(this);\n\t\t} else if (transientParent != null) {\n\t\t\ttry {\n\t\t\t\tClass<?> parentClass = transientParent.getClass();\n\t\t\t\tClass[] types = { Class.forName(\"acm.graphics.GObject\") };\n\t\t\t\tObject[] args = { this };\n\t\t\t\tMethod fn = parentClass.getMethod(\"sendBackward\", types);\n\t\t\t\tif (fn != null) fn.invoke(transientParent, args);\n\t\t\t} catch (Exception ex) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t}\n\t\tif (mouseListenersEnabled) updateEnabledList();\n\t}\n\n/* Method: setColor(color) */\n/**\n * Sets the color used to display this object.\n *\n * @usage gobj.setColor(color);\n * @param color The color used to display this object\n */\n\tpublic void setColor(Color color) {\n\t\tobjectColor = color;\n\t\trepaint();\n\t}\n\n/* Method: getColor() */\n/**\n * Returns the color used to display this object.\n *\n * @usage Color color = gobj.getColor();\n * @return The color used to display this object\n */\n\tpublic Color getColor() {\n\t\tGObject obj = this;\n\t\twhile (obj.objectColor == null) {\n\t\t\tGContainer parent = obj.getParent();\n\t\t\tif (parent instanceof GObject) {\n\t\t\t\tobj = (GObject) parent;\n\t\t\t} else if (parent instanceof Component) {\n\t\t\t\treturn ((Component) parent).getForeground();\n\t\t\t} else {\n\t\t\t\treturn Color.BLACK;\n\t\t\t}\n\t\t}\n\t\treturn obj.objectColor;\n\t}\n\n/* Method: setVisible(visible) */\n/**\n * Sets whether this object is visible.\n *\n * @usage gobj.setVisible(visible);\n * @param visible <code>true</code> to make the object visible, <code>false</code> to hide it\n */\n\tpublic void setVisible(boolean visible) {\n\t\tisVisible = visible;\n\t\trepaint();\n\t}\n\n/* Method: isVisible() */\n/**\n * Checks to see whether this object is visible.\n *\n * @usage if (gobj.isVisible()) . . .\n * @return <code>true</code> if the object is visible, otherwise <code>false</code>\n */\n\tpublic boolean isVisible() {\n\t\treturn isVisible;\n\t}\n\n/* Method: toString() */\n/**\n * Overrides the <code>toString</code> method in <code>Object</code> to produce\n * more readable output.\n * @noshow\n */\n\tpublic String toString() {\n\t\tString name = getClass().getName();\n\t\tif (name.startsWith(\"acm.graphics.\")) {\n\t\t\tname = name.substring(\"acm.graphics.\".length());\n\t\t}\n\t\treturn name + \"[\" + paramString() + \"]\";\n\t}\n\n/* Method: getParent() */\n/**\n * Returns the parent of this object, which is the canvas or compound object in\n * which it is enclosed.\n *\n * @usage GContainer parent = gobj.getParent();\n * @return The parent of this object\n */\n\tpublic GContainer getParent() {\n\t\treturn (compoundParent != null) ? compoundParent : transientParent;\n\t}\n\n/* Method: pause(milliseconds) */\n/**\n * Delays the calling thread for the specified time, which is expressed in\n * milliseconds.  Unlike <code>Thread.sleep</code>, this method never throws an\n * exception.\n *\n * @usage gobj.pause(milliseconds);\n * @param milliseconds The sleep time in milliseconds\n */\n\tpublic void pause(double milliseconds) {\n\t\tJTFTools.pause(milliseconds);\n\t}\n\n/* Method: addMouseListener(listener) */\n/**\n * Adds a mouse listener to this graphical object.\n *\n * @usage gobj.addMouseListener(listener);\n * @param listener Any object that implements the <code>MouseListener</code> interface\n */\n\tpublic void addMouseListener(MouseListener listener) {\n\t\tmouseListener = AWTEventMulticaster.add(mouseListener, listener);\n\t\tmouseListenersEnabled = true;\n\t\tupdateEnabledList();\n\t}\n\n/* Method: removeMouseListener(listener) */\n/**\n * Removes a mouse listener from this graphical object.\n *\n * @usage gobj.removeMouseListener(listener);\n * @param listener The listener object to remove\n */\n\tpublic void removeMouseListener(MouseListener listener) {\n\t\tmouseListener = AWTEventMulticaster.remove(mouseListener, listener);\n\t}\n\n/* Method: addMouseMotionListener(listener) */\n/**\n * Adds a mouse motion listener to this graphical object.\n *\n * @usage gobj.addMouseMotionListener(listener);\n * @param listener Any object that implements the <code>MouseMotionListener</code> interface\n */\n\tpublic void addMouseMotionListener(MouseMotionListener listener) {\n\t\tmouseMotionListener = AWTEventMulticaster.add(mouseMotionListener, listener);\n\t\tmouseListenersEnabled = true;\n\t\tupdateEnabledList();\n\t}\n\n/* Method: removeMouseMotionListener(listener) */\n/**\n * Removes a mouse motion listener from this graphical object.\n *\n * @usage gobj.removeMouseMotionListener(listener);\n * @param listener The listener object to remove\n */\n\tpublic void removeMouseMotionListener(MouseMotionListener listener) {\n\t\tmouseMotionListener = AWTEventMulticaster.remove(mouseMotionListener, listener);\n\t}\n\n/* Method: addActionListener(listener) */\n/**\n * Adds an action listener to this graphical object.\n *\n * @usage gobj.addActionListener(listener);\n * @param listener Any object that implements the <code>ActionListener</code> interface\n */\n\tpublic void addActionListener(ActionListener listener) {\n\t\tactionListener = AWTEventMulticaster.add(actionListener, listener);\n\t}\n\n/* Method: removeActionListener(listener) */\n/**\n * Removes an action listener from this graphical object.\n *\n * @usage gobj.removeActionListener(listener);\n * @param listener The listener object to remove\n */\n\tpublic void removeActionListener(ActionListener listener) {\n\t\tactionListener = AWTEventMulticaster.remove(actionListener, listener);\n\t}\n\n/* Method: fireActionEvent(actionCommand) */\n/**\n * Triggers an action event for this graphical object with the specified\n * action command.\n *\n * @usage gobj.fireActionEvent(actionCommand);\n * @param actionCommand The action command to include in the event\n */\n\tpublic void fireActionEvent(String actionCommand) {\n\t\tfireActionEvent(new ActionEvent(this, ActionEvent.ACTION_PERFORMED, actionCommand));\n\t}\n\n/* Method: fireActionEvent(e) */\n/**\n * Triggers an action event for this graphical object.\n *\n * @usage gobj.fireActionEvent(e);\n * @param e The <code>ActionEvent</code> to fire\n */\n\tpublic void fireActionEvent(ActionEvent e) {\n\t\tif (actionListener != null) actionListener.actionPerformed(e);\n\t}\n\n/* Unadvertised method: setParent(parent) */\n/**\n * Sets the parent of this object, which should be called only by the\n * <code>GContainer</code> in which this is installed.  The\n * serialization behavior of the parent data depends on the parent\n * type.  Because a <code>GCompound</code> is serializable, it\n * needs to be maintained in a nontransient variable; other parent\n * classes are transient, so that these parents are not recorded\n * in the serial form.\n * @noshow\n */\n\tpublic void setParent(GContainer parent) {\n\t\tif (parent instanceof GCompound) {\n\t\t\tcompoundParent = (GCompound) parent;\n\t\t} else {\n\t\t\ttransientParent = parent;\n\t\t}\n\t}\n\n/* Protected method: fireMouseListeners(e) */\n/**\n * Sends the event to the appropriate listener.\n *\n * @usage gobj.fireMouseListeners(e);\n * @param e The <code>MouseEvent</code> that triggered this response\n * @noshow\n */\n\tprotected void fireMouseListeners(MouseEvent e) {\n\t\tswitch (e.getID()) {\n\t\t  case MouseEvent.MOUSE_PRESSED:\n\t\t\tif (mouseListener != null) mouseListener.mousePressed(e);\n\t\t\tbreak;\n\t\t  case MouseEvent.MOUSE_RELEASED:\n\t\t\tif (mouseListener != null) mouseListener.mouseReleased(e);\n\t\t\tbreak;\n\t\t  case MouseEvent.MOUSE_CLICKED:\n\t\t\tif (mouseListener != null) mouseListener.mouseClicked(e);\n\t\t\tbreak;\n\t\t  case MouseEvent.MOUSE_EXITED:\n\t\t\tif (mouseListener != null) mouseListener.mouseExited(e);\n\t\t\tbreak;\n\t\t  case MouseEvent.MOUSE_ENTERED:\n\t\t\tif (mouseListener != null) mouseListener.mouseEntered(e);\n\t\t\tbreak;\n\t\t  case MouseEvent.MOUSE_MOVED:\n\t\t\tif (mouseMotionListener != null) mouseMotionListener.mouseMoved(e);\n\t\t\tbreak;\n\t\t  case MouseEvent.MOUSE_DRAGGED:\n\t\t\tif (mouseMotionListener != null) mouseMotionListener.mouseDragged(e);\n\t\t\tbreak;\n\t\t}\n\t}\n\n/* Protected method: areMouseListenersEnabled() */\n/**\n * Returns <code>true</code> if mouse listeners have ever been assigned to\n * this object.\n *\n * @usage if (gobj.areMouseListenersEnabled()) . . .\n * @return <code>true</code> if mouse listeners have been enabled in this object\n * @noshow\n */\n\tprotected boolean areMouseListenersEnabled() {\n\t\treturn mouseListenersEnabled;\n\t}\n\n/* Protected method: start() */\n/**\n * Starts a <code>GraphicsProgram</code> containing this object.\n *\n * @usage gobj.start();\n * @noshow\n */\n\tprotected void start() {\n\t\tstart(null);\n\t}\n\n/* Protected method: start(args) */\n/**\n * Starts a <code>GraphicsProgram</code> containing this object, passing\n * it the specified arguments.\n *\n * @usage gobj.start();\n * @param args The array of arguments\n * @noshow\n */\n\tprotected void start(String[] args) {\n\t\ttry {\n\t\t\tClass<?> programClass = Class.forName(\"acm.program.GraphicsProgram\");\n\t\t\tClass<?> gObjectClass = Class.forName(\"acm.graphics.GObject\");\n\t\t\tClass[] types = { gObjectClass, args.getClass() };\n\t\t\tObject[] params = { this, args };\n\t\t\tMethod startGraphicsProgram = programClass.getMethod(\"startGraphicsProgram\", types);\n\t\t\tstartGraphicsProgram.invoke(null, params);\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/* Protected method: getObjectColor() */\n/**\n * This method returns the color set for this specific object, which may\n * be <code>null</code>.  It differs from <code>getColor</code> in that\n * it does not walk up the containment chain.\n * @noshow\n */\n\tprotected Color getObjectColor() {\n\t\treturn objectColor;\n\t}\n\n/* Protected method: paramString() */\n/**\n * Returns a string indicating the parameters of this object.\n * @noshow\n */\n\tprotected String paramString() {\n\t\tString param = \"\";\n\t\tif (this instanceof GResizable) {\n\t\t\tGRectangle r = getBounds();\n\t\t\tparam += \"bounds=(\" + r.getX() + \", \" + r.getY() + \", \"\n\t\t\t         + r.getWidth() + \", \" + r.getHeight() + \")\";\n\t\t} else {\n\t\t\tGPoint pt = getLocation();\n\t\t\tparam += \"location=(\" + pt.getX() + \", \" + pt.getY() + \")\";\n\t\t}\n\t\tif (objectColor != null) {\n\t\t\tparam += \", color=\" + colorName(objectColor);\n\t\t}\n\t\tif (this instanceof GFillable) {\n\t\t\tparam += \", filled=\" + ((GFillable) this).isFilled();\n\t\t\tColor fillColor = ((GFillable) this).getFillColor();\n\t\t\tif (fillColor != null && fillColor != objectColor) {\n\t\t\t\tparam += \", fillColor=\" + colorName(fillColor);\n\t\t\t}\n\t\t}\n\t\treturn param;\n\t}\n\n/* Protected static method: colorName(color) */\n/**\n * Translates a color to a string representation.\n * @noshow\n */\n\tprotected static String colorName(Color color) {\n\t\tif (color.equals(Color.BLACK)) return \"BLACK\";\n\t\tif (color.equals(Color.BLUE)) return \"BLUE\";\n\t\tif (color.equals(Color.CYAN)) return \"CYAN\";\n\t\tif (color.equals(Color.DARK_GRAY)) return \"DARK_GRAY\";\n\t\tif (color.equals(Color.GRAY)) return \"GRAY\";\n\t\tif (color.equals(Color.GREEN)) return \"GREEN\";\n\t\tif (color.equals(Color.LIGHT_GRAY)) return \"LIGHT_GRAY\";\n\t\tif (color.equals(Color.MAGENTA)) return \"MAGENTA\";\n\t\tif (color.equals(Color.ORANGE)) return \"ORANGE\";\n\t\tif (color.equals(Color.PINK)) return \"PINK\";\n\t\tif (color.equals(Color.RED)) return \"RED\";\n\t\tif (color.equals(Color.WHITE)) return \"WHITE\";\n\t\tif (color.equals(Color.YELLOW)) return \"YELLOW\";\n\t\treturn \"0x\" + Integer.toString(color.getRGB() & 0xFFFFFF, 16).toUpperCase();\n\t}\n\n/* Protected method: paintObject(g) */\n/**\n * Paints the object by setting up the necessary parameters and then\n * dispatching to the <code>paint</code> procedure for this object.\n * @noshow\n */\n\tprotected void paintObject(Graphics g) {\n\t\tif (!isVisible()) return;\n\t\tColor oldColor = g.getColor();\n\t\tif (objectColor != null) g.setColor(objectColor);\n\t\tpaint(g);\n\t\tif (objectColor != null) g.setColor(oldColor);\n\t}\n\n/* Protected method: getComponent() */\n/**\n * Returns the component in which this object is installed, or <code>null</code>\n * if none exists.\n *\n * @usage Component comp = gobj.getComponent();\n * @return The component in which this object is installed, or <code>null</code> if none exists\n * @noshow\n */\n\tprotected Component getComponent() {\n\t\tGContainer parent = getParent();\n\t\twhile (parent instanceof GObject) {\n\t\t\tparent = ((GObject) parent).getParent();\n\t\t}\n\t\treturn (parent instanceof Component) ? (Component) parent : null;\n\t}\n\n/* Protected method: updateEnabledList() */\n/**\n * Tells the parent to update its list of enabled objects.\n * @noshow\n */\n\tprotected void updateEnabledList() {\n\t\tComponent comp = getComponent();\n\t\tif (comp instanceof GCanvas) {\n\t\t\t((GCanvas) comp).updateEnabledList();\n\t\t}\n\t}\n\n/* Protected method: repaint() */\n/**\n * Signals that the object needs to be repainted.\n * @noshow\n */\n\tprotected void repaint() {\n\t\tGContainer parent = getParent();\n\t\twhile (parent instanceof GObject) {\n\t\t\tparent = ((GObject) parent).getParent();\n\t\t}\n\t\tif (parent instanceof GCanvas) {\n\t\t\t((GCanvas) parent).conditionalRepaint();\n\t\t}\n\t}\n\n/* Private instance variables */\n\tprivate GCompound compoundParent;\n\tprivate Color objectColor;\n\tprivate double xc, yc;\n\tprivate boolean isVisible;\n\tprivate boolean mouseListenersEnabled;\n\n\tprivate transient MouseListener mouseListener;\n\tprivate transient MouseMotionListener mouseMotionListener;\n\tprivate transient ActionListener actionListener;\n\tprivate transient GContainer transientParent;\n\n/* Serial version UID */\n/**\n * The serialization code for this class.  This value should be incremented\n * whenever you change the structure of this class in an incompatible way,\n * typically by adding a new instance variable.\n */\n\tstatic final long serialVersionUID = 1L;\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/graphics/GOval.java",
    "content": "/*\n * @(#)GOval.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// -- V2.0 --\n// Bug fix 26-Apr-07 (ESR, JTFBug 2007-005, reported by Leland Beck)\n//   1. Fixed problems with cross-file references to ArcRenderer.\n//\n// Feature enhancement 26-May-08 (ESR)\n//   1. Added support for serialization.\n//   2. Revised bounding box calculation to conform to Java standard.\n\npackage acm.graphics;\n\nimport acm.util.*;\nimport java.awt.*;\n\n/* Class: GOval */\n/**\n * The <code>GOval</code> class is a graphical object whose appearance consists\n * of an oval.\n */\npublic class GOval extends GObject\n  implements GFillable, GResizable, GScalable {\n\n/* Constructor: GOval(width, height) */\n/**\n * Constructs a new oval with the specified width and height,\n * positioned at the origin.\n *\n * @usage GOval goval = new GOval(width, height);\n * @param width The width of the oval in pixels\n * @param height The height of the oval in pixels\n */\n\tpublic GOval(double width, double height) {\n\t\tthis(0, 0, width, height);\n\t}\n\n/* Constructor: GOval(x, y, width, height) */\n/**\n * Constructs a new oval with the specified bounds.\n *\n * @usage GOval goval = new GOval(x, y, width, height);\n * @param x The x-coordinate of the upper left corner\n * @param y The y-coordinate of the upper left corner\n * @param width The width of the oval in pixels\n * @param height The height of the oval in pixels\n */\n\tpublic GOval(double x, double y, double width, double height) {\n\t\tuseArcs = checkForArcRendering();\n\t\tframeWidth = width;\n\t\tframeHeight = height;\n\t\tsetLocation(x, y);\n\t\trenderer = new GArc(this);\n\t}\n\n/* Method: contains(x, y) */\n/**\n * Checks to see whether a point is inside the object.\n *\n * @usage if (goval.contains(x, y)) . . .\n * @param x The x-coordinate of the point being tested\n * @param y The y-coordinate of the point being tested\n * @return <code>true</code> if the point (<code>x</code>,&nbsp;<code>y</code>) is inside\n *         the object, and <code>false</code> otherwise\n */\n\tpublic boolean contains(double x, double y) {\n\t\tdouble rx = frameWidth / 2;\n\t\tdouble ry = frameHeight / 2;\n\t\tif (rx == 0 || ry == 0) return false;\n\t\tdouble dx = x - (getX() + rx);\n\t\tdouble dy = y - (getY() + ry);\n\t\treturn (dx * dx) / (rx * rx) + (dy * dy) / (ry * ry) <= 1.0;\n\t}\n\n/* Method: paint(g) */\n/**\n * Implements the <code>paint</code> operation for this graphical object.  This method\n * is not called directly by clients.\n * @noshow\n */\n\tpublic void paint(Graphics g) {\n\t\tComponent comp = getComponent();\n\t\tif ((comp instanceof GCanvas) && !((GCanvas) comp).getNativeArcFlag()) {\n\t\t\trenderer.paint(g);\n\t\t} else {\n\t\t\tRectangle r = getAWTBounds();\n\t\t\tif (useArcs) {\n\t\t\t\tif (isFilled()) {\n\t\t\t\t\tg.setColor(getFillColor());\n\t\t\t\t\tg.fillArc(r.x, r.y, r.width, r.height, 0, 360);\n\t\t\t\t\tg.setColor(getColor());\n\t\t\t\t}\n\t\t\t\tg.drawArc(r.x, r.y, r.width, r.height, 0, 360);\n\t\t\t} else {\n\t\t\t\tif (isFilled()) {\n\t\t\t\t\tg.setColor(getFillColor());\n\t\t\t\t\tg.fillOval(r.x, r.y, r.width, r.height);\n\t\t\t\t\tg.setColor(getColor());\n\t\t\t\t}\n\t\t\t\tg.drawOval(r.x, r.y, r.width, r.height);\n\t\t\t}\n\t\t}\n\t}\n\n/* Method: setFilled(fill) */\n/**\n * Sets whether this object is filled.\n *\n * @usage gobj.setFilled(fill);\n * @param fill <code>true</code> if the object should be filled, <code>false</code> for an outline\n */\n\tpublic void setFilled(boolean fill) {\n\t\tisFilled = fill;\n\t\trepaint();\n\t}\n\n/* Method: isFilled() */\n/**\n * Returns whether this object is filled.\n *\n * @usage if (gobj.isFilled()) . . .\n * @return The color used to display the object\n */\n\tpublic boolean isFilled() {\n\t\treturn isFilled;\n\t}\n\n/* Method: setFillColor(color) */\n/**\n * Sets the color used to display the filled region of this object.\n *\n * @usage gobj.setFillColor(color);\n * @param color The color used to display the filled region of this object\n */\n\tpublic void setFillColor(Color color) {\n\t\tfillColor = color;\n\t\trepaint();\n\t}\n\n/* Method: getFillColor() */\n/**\n * Returns the color used to display the filled region of this object.  If\n * none has been set, <code>getFillColor</code> returns the color of the\n * object.\n *\n * @usage Color color = gobj.getFillColor();\n * @return The color used to display the filled region of this object\n */\n\tpublic Color getFillColor() {\n\t\treturn (fillColor == null) ? getColor() : fillColor;\n\t}\n\n/* Method: setSize(width, height) */\n/**\n * Changes the size of this object to the specified width and height.\n *\n * @usage gobj.setSize(width, height);\n * @param width The new width of the object\n * @param height The new height of the object\n */\n\tpublic void setSize(double width, double height) {\n\t\tframeWidth = width;\n\t\tframeHeight = height;\n\t\trepaint();\n\t}\n\n/* Method: setSize(size) */\n/**\n * Changes the size of this object to the specified <code>GDimension</code>.\n *\n * @usage gobj.setSize(size);\n * @param size A <code>GDimension</code> object specifying the size\n * @noshow\n */\n\tpublic final void setSize(GDimension size) {\n\t\tsetSize(size.getWidth(), size.getHeight());\n\t}\n\n/* Method: getSize() */\n/**\n * Returns the size of this object as a <code>GDimension</code>.\n *\n * @usage GDimension size = gobj.getSize();\n * @return The size of this object\n */\n\tpublic GDimension getSize() {\n\t\treturn new GDimension(frameWidth, frameHeight);\n\t}\n\n/* Method: setBounds(x, y, width, height) */\n/**\n * Changes the bounds of this object to the specified values.\n *\n * @usage gobj.setBounds(x, y, width, height);\n * @param x The new x-coordinate for the object\n * @param y The new y-coordinate for the object\n * @param width The new width of the object\n * @param height The new height of the object\n */\n\tpublic void setBounds(double x, double y, double width, double height) {\n\t\tframeWidth = width;\n\t\tframeHeight = height;\n\t\tsetLocation(x, y);\n\t}\n\n/* Method: setBounds(bounds) */\n/**\n * Changes the bounds of this object to the values from the specified\n * <code>Rectangle</code>.\n *\n * @usage gobj.setBounds(bounds);\n * @param bounds A <code>GRectangle</code> specifying the new bounds\n */\n\tpublic final void setBounds(GRectangle bounds) {\n\t\tsetBounds(bounds.getX(), bounds.getY(), bounds.getWidth(), bounds.getHeight());\n\t}\n\n/* Method: getBounds() */\n/**\n * Returns the bounding box of this object.\n *\n * @usage GRectangle bounds = gobj.getBounds();\n * @return The bounding box for this object\n */\n\tpublic GRectangle getBounds() {\n\t\treturn new GRectangle(getX(), getY(), frameWidth, frameHeight);\n\t}\n\n/* Method: getWidth() */\n/**\n * Returns the width of this object as a double-precision value, which\n * is defined to be the width of the bounding box.\n *\n * @usage double width = gobj.getWidth();\n * @return The width of this object on the screen\n */\n\tpublic double getWidth() {\n\t\treturn frameWidth;\n\t}\n\n/* Method: getHeight() */\n/**\n * Returns the height of this object as a double-precision value, which\n * is defined to be the height of the bounding box.\n *\n * @usage double height = gobj.getHeight();\n * @return The height of this object on the screen\n */\n\tpublic double getHeight() {\n\t\treturn frameHeight;\n\t}\n\n/* Method: scale(sx, sy) */\n/**\n * Scales the object on the screen by the scale factors <code>sx</code> and <code>sy</code>.\n *\n * @usage gobj.scale(sx, sy);\n * @param sx The factor used to scale all coordinates in the x direction\n * @param sy The factor used to scale all coordinates in the y direction\n */\n\tpublic void scale(double sx, double sy) {\n\t\tframeWidth *= sx;\n\t\tframeHeight *= sy;\n\t\trepaint();\n\t}\n\n/* Method: scale(sf) */\n/**\n * Scales the object on the screen by the scale factor <code>sf</code>, which applies\n * in both dimensions.\n *\n * @usage gobj.scale(sf);\n * @param sf The factor used to scale all coordinates in both dimensions\n */\n\tpublic final void scale(double sf) {\n\t\tscale(sf, sf);\n\t}\n\n/* Inherited method: setLocation(x, y) */\n/**\n * @inherited GObject#void setLocation(double x, double y)\n * Sets the location of this object to the point (<code>x</code>, <code>y</code>).\n */\n\n/* Inherited method: setLocation(pt) */\n/**\n * @inherited GObject#void setLocation(GPoint pt)\n * Sets the location of this object to the specified point.\n */\n\n/* Inherited method: getLocation() */\n/**\n * @inherited GObject#GPoint getLocation()\n * Returns the location of this object as a <code>GPoint</code>.\n */\n\n/* Inherited method: getX() */\n/**\n * @inherited GObject#double getX()\n * Returns the x-coordinate of the object.\n */\n\n/* Inherited method: getY() */\n/**\n * @inherited GObject#double getY()\n * Returns the y-coordinate of the object.\n */\n\n/* Inherited method: move(dx, dy) */\n/**\n * @inherited GObject#void move(double dx, double dy)\n * Moves the object on the screen using the displacements <code>dx</code> and <code>dy</code>.\n */\n\n/* Inherited method: movePolar(r, theta) */\n/**\n * @inherited GObject#void movePolar(double r, double theta)\n * Moves the object using displacements given in polar coordinates.\n */\n\n/* Inherited method: contains(pt) */\n/**\n * @inherited GObject#boolean contains(GPoint pt)\n * Checks to see whether a point is inside the object.\n */\n\n/* Inherited method: sendToFront() */\n/**\n * @inherited GObject#void sendToFront()\n * Moves this object to the front of the display in the <i>z</i> dimension.\n */\n\n/* Inherited method: sendToBack() */\n/**\n * @inherited GObject#void sendToBack()\n * Moves this object to the back of the display in the <i>z</i> dimension.\n */\n\n/* Inherited method: sendForward() */\n/**\n * @inherited GObject#void sendForward()\n * Moves this object one step toward the front in the <i>z</i> dimension.\n */\n\n/* Inherited method: sendBackward() */\n/**\n * @inherited GObject#void sendBackward()\n * Moves this object one step toward the back in the <i>z</i> dimension.\n */\n\n/* Inherited method: setColor(color) */\n/**\n * @inherited GObject#void setColor(Color color)\n * Sets the color used to display this object.\n */\n\n/* Inherited method: getColor() */\n/**\n * @inherited GObject#Color getColor()\n * Returns the color used to display this object.\n */\n\n/* Inherited method: setFillColor(color) */\n/**\n * @inherited GObject#void setFillColor(Color color)\n * Sets the color used to display the filled region of this object.\n */\n\n/* Inherited method: getFillColor() */\n/**\n * @inherited GObject#Color getFillColor()\n * Returns the color used to display the filled region of this object.\n */\n\n/* Inherited method: setFilled(fill) */\n/**\n * @inherited GObject#void setFilled(boolean fill)\n * Sets whether this object is filled.\n */\n\n/* Inherited method: isFilled() */\n/**\n * @inherited GObject#boolean isFilled()\n * Returns whether this object is filled.\n */\n\n/* Inherited method: setVisible(visible) */\n/**\n * @inherited GObject#void setVisible(boolean visible)\n * Sets whether this object is visible.\n */\n\n/* Inherited method: isVisible() */\n/**\n * @inherited GObject#boolean isVisible()\n * Checks to see whether this object is visible.\n */\n\n/* Inherited method: addMouseListener(listener) */\n/**\n * @inherited GObject#void addMouseListener(MouseListener listener)\n * Adds a mouse listener to this graphical object.\n */\n\n/* Inherited method: removeMouseListener(listener) */\n/**\n * @inherited GObject#void removeMouseListener(MouseListener listener)\n * Removes a mouse listener from this graphical object.\n */\n\n/* Inherited method: addMouseMotionListener(listener) */\n/**\n * @inherited GObject#void addMouseMotionListener(MouseMotionListener listener)\n * Adds a mouse motion listener to this graphical object.\n */\n\n/* Inherited method: removeMouseMotionListener(listener) */\n/**\n * @inherited GObject#void removeMouseMotionListener(MouseMotionListener listener)\n * Removes a mouse motion listener from this graphical object.\n */\n\n/* Protected method: getAWTBounds() */\n/**\n * Returns an AWT <code>Rectangle</code> that specifies the bounds of this object.\n *\n * @usage Rectangle r = grect.getAWTBounds();\n * @return A <code>Rectangle</code> that specifies the bounds of this object\n */\n\tprotected Rectangle getAWTBounds() {\n\t\treturn new Rectangle(GMath.round(getX()), GMath.round(getY()), GMath.round(frameWidth), GMath.round(frameHeight));\n\t}\n\n/* Private method: checkForArcRendering */\n/**\n * This method checks to see whether the package should render ovals using 360-degree\n * arcs.  The reason for this check is that some implementations of Graphics (the\n * ones running on Mac OS 9, for example) render ovals in such a way that the interior\n * of the frame is not entirely filled by fillOval.  Arcs, however, work fine.\n */\n\tprivate boolean checkForArcRendering() {\n\t\treturn Platform.isMac() && Platform.compareVersion(System.getProperty(\"os.version\"), \"10.1\") < 0;\n\t}\n\n/* Private instance variables */\n\tprivate boolean useArcs;\n\tprivate double frameWidth;\n\tprivate double frameHeight;\n\tprivate boolean isFilled;\n\tprivate Color fillColor;\n\tprivate GArc renderer;\n\n/* Serial version UID */\n/**\n * The serialization code for this class.  This value should be incremented\n * whenever you change the structure of this class in an incompatible way,\n * typically by adding a new instance variable.\n */\n\tstatic final long serialVersionUID = 1L;\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/graphics/GPen.java",
    "content": "/*\n * @(#)GPen.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Documentation fix 26-Apr-07 (ESR)\n//   1. Removed inherited method description for setLocation.\n//\n// Code cleanup 28-May-07 (ESR)\n//   1. Added generic type tags.\n//\n// Feature enhancement 26-May-08 (ESR)\n//   1. Added support for serialization.\n\npackage acm.graphics;\n\nimport acm.util.*;\nimport java.awt.*;\nimport java.io.*;\nimport java.util.*;\n\n/* Class: GPen */\n/**\n * The <code>GPen</code> class simulates a pen drawing on a canvas.\n * As with the other graphical objects in the\n * <a href=\"index.html\"><code>acm.graphics</code></a>\n * package, you use this class by constructing a new <code>GPen</code>\n * object and adding that object to a <a href=\"GCanvas.html\"><code>GCanvas</code></a>.\n * You can move the pen on the canvas by using the methods\n * <a href=\"#setLocation(double, double)\"<code>setLocation</code></a> and\n * <a href=\"#move(double, double)\"<code>move</code></a> and then\n * draw lines using  <a href=\"#drawLine(double, double)\"<code>drawLine</code></a>.\n * The <code>GPen</code> object remembers the series of lines\n * and can therefore repaint the screen image when necessary.\n */\npublic class GPen extends GObject {\n\n/* Constructor: GPen() */\n/**\n * Creates a new <code>GPen</code> object with an empty path.\n *\n * @usage GPen gpen = new GPen();\n */\n\tpublic GPen() {\n\t\tpenVisible = false;\n\t\tpath = new PathList();\n\t\tanimator = new Animator();\n\t\tsetSpeed(1.0);\n\t\terasePath();\n\t}\n\n/* Constructor: GPen(x, y) */\n/**\n * Creates a new <code>GPen</code> object with an empty path, initially\n * positioned at the point (<code>x</code>, <code>y</code>).\n *\n * @usage GPen gpen = new GPen(x, y);\n * @param x The initial x coordinate of the pen\n * @param y The initial y coordinate of the pen\n */\n\tpublic GPen(double x, double y) {\n\t\tthis();\n\t\tsetLocation(x, y);\n\t}\n\n/* Method: erasePath() */\n/**\n * Erases the entire path drawn by the pen but does not change its position.\n *\n * @usage gpen.erasePath();\n */\n\tpublic void erasePath() {\n\t\tpath.clear();\n\t\txScale = 1.0;\n\t\tyScale = 1.0;\n\t\tregionOpen = false;\n\t\tregionStarted = false;\n\t\trepaint();\n\t}\n\n/* Method: setLocation(x, y) */\n/**\n * Moves the pen to the point (<code>x</code>, <code>y</code>) without drawing a line.\n *\n * @usage gpen.setLocation(x, y);\n * @param x The x-coordinate of the new position\n * @param y The y-coordinate of the new position\n */\n\tpublic void setLocation(double x, double y) {\n\t\tif (regionStarted) {\n\t\t\tthrow new ErrorException(\"It is illegal to move the pen while you are \" +\n\t\t\t                         \"defining a filled region.\");\n\t\t}\n\t\tsuper.setLocation(x, y);\n\t\tanimator.delay();\n\t}\n\n/* Method: drawLine(dx, dy) */\n/**\n * Draws a line segment with displacements <code>dx</code> and <code>dy</code>.\n * Drawing a line leaves the pen positioned at the end of the line segment, so\n * that the next call to <code>drawLine</code> will continue from where this\n * one finished.\n *\n * @usage drawLine(dx, dy);\n * @param dx The extent of the line in the x direction\n * @param dy The extent of the line in the y direction\n */\n\tpublic void drawLine(double dx, double dy) {\n\t\tdouble x = getX();\n\t\tdouble y = getY();\n\t\tif (regionStarted) {\n\t\t\tpath.add(new DrawLineElement(dx, dy));\n\t\t} else {\n\t\t\tpath.add(new SetLocationElement(x, y), new DrawLineElement(dx, dy));\n\t\t\tregionStarted = regionOpen;\n\t\t}\n\t\tsuper.setLocation(x + dx, y + dy);\n\t\tanimator.delay();\n\t}\n\n/* Method: drawPolarLine(r, theta) */\n/**\n * Draws a line segment using displacements given in polar coordinates.\n * The parameter <code>r</code> specifies the length of the line segment, and\n * <code>theta</code> specifies the angle at which the line is drawn.  The\n * angle is measured in degrees increasing counterclockwise from the +x axis.\n * Thus, the call\n *\n * <p><pre><code>\n * &nbsp;    drawPolarLine(1.0, 0);\n * </code></pre>\n *\n * <p>draws a line extending rightward one inch from the current point.\n * Similarly\n *\n * <p><pre><code>\n * &nbsp;    drawPolarLine(2.0, 135);\n * </code></pre>\n *\n * <p>draws a two-inch line extending to the northwest from the current point.\n *\n * @usage drawPolarLine(r, theta);\n * @param r The length of the line segment\n * @param theta The angle at which to draw the line, measured in degrees\n *              increasing counterclockwise from the +x axis\n */\n\tpublic final void drawPolarLine(double r, double theta) {\n\t\tdouble radians = theta * Math.PI / 180;\n\t\tdrawLine(r * Math.cos(radians), -r * Math.sin(radians));\n\t}\n\n/* Method: setColor(color) */\n/**\n * Sets the color of the pen.\n *\n * @usage gpen.setColor(color);\n * @param color The new color for the pen\n */\n\tpublic void setColor(Color color) {\n\t\tif (regionStarted) {\n\t\t\tthrow new ErrorException(\"It is illegal to change the color while you are \" +\n\t\t\t                         \"defining a filled region.\");\n\t\t}\n\t\tpath.add(new SetColorElement(color));\n\t\tsuper.setColor(color);\n\t}\n\n/* Method: setFillColor(color) */\n/**\n * Sets the color used to fill a region.\n *\n * @usage gpen.setFillColor(color);\n * @param color The new color used to fill a region\n */\n\tpublic void setFillColor(Color color) {\n\t\tif (regionStarted) {\n\t\t\tthrow new ErrorException(\"It is illegal to change the fill color while you are \" +\n\t\t\t                         \"defining a filled region.\");\n\t\t}\n\t\tfillColor = color;\n\t}\n\n/* Method: getFillColor() */\n/**\n * Returns the color used to display the filled region of this object.  If\n * none has been set, <code>getFillColor</code> returns the color of the\n * object.\n *\n * @usage Color color = gpen.getFillColor();\n * @return The color used to display the filled region of this object\n */\n\tpublic Color getFillColor() {\n\t\treturn (fillColor == null) ? getColor() : fillColor;\n\t}\n\n/* Method: startFilledRegion() */\n/**\n * Starts defining a region that will be filled with the current color.\n * Any line segments drawn between now and the matching call to\n * <code>endFilledRegion</code> will be used to create a polygon that\n * is then filled.\n *\n * @usage gpen.startFilledRegion();\n */\n\tpublic void startFilledRegion() {\n\t\tif (regionOpen) {\n\t\t\tthrow new ErrorException(\"You are already filling a region.\");\n\t\t}\n\t\tregionOpen = true;\n\t\tregionStarted = false;\n\t\tpath.add(new StartRegionElement(fillColor));\n\t}\n\n/* Method: endFilledRegion() */\n/**\n * Ends the definition of a region and fills it with the current color.\n *\n * @usage gpen.endFilledRegion();\n */\n\tpublic void endFilledRegion() {\n\t\tif (!regionOpen) {\n\t\t\tthrow new ErrorException(\"You need to call startFilledRegion \" +\n\t\t\t                         \"before you call endFilledRegion.\");\n\t\t}\n\t\tregionOpen = false;\n\t\tregionStarted = false;\n\t\tpath.add(new EndRegionElement());\n\t\trepaint();\n\t}\n\n/* Method: showPen() */\n/**\n * Makes the pen itself visible.  If the pen is visible, the <code>drawPen</code>\n * method will be called at the end of painting the path to show the current location.\n *\n * @usage gpen.showPen();\n */\n\tpublic void showPen() {\n\t\tpenVisible = true;\n\t\trepaint();\n\t\tanimator.delay();\n\t}\n\n/* Method: hidePen() */\n/**\n * Makes the pen itself invisible.\n *\n * @usage gpen.showPen();\n */\n\tpublic void hidePen() {\n\t\tpenVisible = false;\n\t\trepaint();\n\t\tanimator.delay();\n\t}\n\n/* Method: isPenVisible() */\n/**\n * Returns whether the pen is visible.\n *\n * @usage if (isPenVisible(visible)) . . .\n * @return <code>true</code> if the pen is visible, otherwise <code>false</code>\n */\n\tpublic boolean isPenVisible() {\n\t\treturn penVisible;\n\t}\n\n/* Method: setSpeed(speed) */\n/**\n * Sets the speed of the pen, which must be a number between 0 (slowest)\n * and 1 (fastest).  Setting speed to a value less than one makes the pen\n * move slowly, thereby making it easy to see exactly how a figure is being drawn.\n *\n * @usage setSpeed(speed);\n * @param speed The speed of the pen (0 is slowest, 1 is fastest)\n */\n\tpublic void setSpeed(double speed) {\n\t\tanimator.setSpeed(speed);\n\t}\n\n/* Method: getSpeed() */\n/**\n * Returns the current speed of the pen.\n *\n * @usage double speed = getSpeed();\n * @return The current speed of the pen (0 is slowest, 1 is fastest)\n */\n\tpublic double getSpeed() {\n\t\treturn animator.getSpeed();\n\t}\n\n/* Method: scale(sx, sy) */\n/**\n * Sets the scale factors <code>sx</code> and <code>sy</code>.  Scaling a <code>GPen</code>\n * object changes the location of points as well the size of line segments.  This\n * behavior seems counterintuitive for a pen installed directly in a <code>GCanvas</code>,\n * but is quite useful when a <code>GPen</code> is embedded in a compound object.\n *\n * @usage gpen.scale(sx, sy);\n * @param sx The factor used to scale all coordinates in the x direction\n * @param sy The factor used to scale all coordinates in the y direction\n */\n\tpublic void scale(double sx, double sy) {\n\t\txScale = sx;\n\t\tyScale = sy;\n\t\trepaint();\n\t}\n\n/* Method: paint(g) */\n/**\n * Implements the <code>paint</code> operation for this graphical object.  This method\n * is not called directly by clients.\n * @noshow\n */\n\tpublic void paint(Graphics g) {\n\t\tPathState state = new PathState();\n\t\tstate.sx = xScale;\n\t\tstate.sy = yScale;\n\t\tpath.mapPaint(g, state);\n\t\tif (penVisible) drawPen(g);\n\t}\n\n/* Method: getBounds() */\n/**\n * Returns the bounding box for the entire figure traced by the pen.\n *\n * @usage bounds = getBounds();\n * @return A <code>GRectangle</code> representing the bounding box\n */\n\tpublic GRectangle getBounds() {\n\t\tPathState state = new PathState();\n\t\tstate.sx = xScale;\n\t\tstate.sy = yScale;\n\t\treturn path.getBounds(state);\n\t}\n\n/* Method: contains(x, y) */\n/**\n * Contains is defined to be false for the <code>GPen</code> object to avoid having the\n * trace intercept mouse clicks.\n *\n * @noshow\n */\n\tpublic boolean contains(double x, double y) {\n\t\treturn false;\n\t}\n\n/* Method: setPenImage(image) */\n/**\n * Sets the image of the pen to be the specified image.  This image is drawn with\n * its center at the pen position.\n *\n * @usage pen.setPenImage(image);\n * @param image The new image to use for the pen\n */\n\tpublic void setPenImage(Image image) {\n\t\tpenImage = MediaTools.loadImage(image);\n\t}\n\n/* Method: getPenImage() */\n/**\n * Returns the image used to draw the pen when <code>setPenVisible</code> has been\n * called.\n */\n\tpublic Image getPenImage() {\n\t\tif (penImage == null) penImage = PenImage.getImage();\n\t\treturn penImage;\n\t}\n\n/* Inherited method: getLocation() */\n/**\n * @inherited GObject#GPoint getLocation()\n * Returns the location of this object as a <code>GPoint</code>.\n */\n\n/* Inherited method: getX() */\n/**\n * @inherited GObject#double getX()\n * Returns the x-coordinate of the object.\n */\n\n/* Inherited method: getY() */\n/**\n * @inherited GObject#double getY()\n * Returns the y-coordinate of the object.\n */\n\n/* Inherited method: getSize() */\n/**\n * @inherited GObject#GDimension getSize()\n * Returns the size of the bounding box for this object.\n */\n\n/* Inherited method: getWidth() */\n/**\n * @inherited GObject#double getWidth()\n * Returns the width of this object as a double-precision value, which\n * is defined to be the width of the bounding box.\n */\n\n/* Inherited method: getHeight() */\n/**\n * @inherited GObject#double getHeight()\n * Returns the height of this object as a double-precision value, which\n * is defined to be the height of the bounding box.\n */\n\n/* Inherited method: move(dx, dy) */\n/**\n * @inherited GObject#void move(double dx, double dy)\n * Moves the pen on the screen by the specified displacements without drawing a line.\n */\n\n/* Inherited method: movePolar(r, theta) */\n/**\n * @inherited GObject#void movePolar(double r, double theta)\n * Moves the pen using displacements given in polar coordinates without drawing\n * a line.\n */\n\n/* Inherited method: sendToFront() */\n/**\n * @inherited GObject#void sendToFront()\n * Moves this object to the front of the display in the <i>z</i> dimension.\n */\n\n/* Inherited method: sendToBack() */\n/**\n * @inherited GObject#void sendToBack()\n * Moves this object to the back of the display in the <i>z</i> dimension.\n */\n\n/* Inherited method: sendForward() */\n/**\n * @inherited GObject#void sendForward()\n * Moves this object one step toward the front in the <i>z</i> dimension.\n */\n\n/* Inherited method: sendBackward() */\n/**\n * @inherited GObject#void sendBackward()\n * Moves this object one step toward the back in the <i>z</i> dimension.\n */\n\n/* Inherited method: getColor() */\n/**\n * @inherited GObject#Color getColor()\n * Returns the color used to display this object.\n */\n\n/* Inherited method: setVisible(visible) */\n/**\n * @inherited GObject#void setVisible(boolean visible)\n * Sets whether the trace of the pen is visible.\n */\n\n/* Inherited method: isVisible() */\n/**\n * @inherited GObject#boolean isVisible()\n * Checks to see whether the trace of the pen is visible.\n */\n\n/* Protected method: drawPen(g) */\n/**\n * This method draws a representation of the pen at the current location.\n * Subclasses can override this method to draw fancier pens.\n *\n * @usage drawPen(g);\n * @param g The graphics context in which to draw the pen\n */\n\tprotected void drawPen(Graphics g) {\n\t\tComponent comp = getComponent();\n\t\tif (comp == null) return;\n\t\tif (penImage == null) penImage = PenImage.getImage();\n\t\tint width = penImage.getWidth(comp);\n\t\tint height = penImage.getHeight(comp);\n\t\tint x = (int) Math.round(getX());\n\t\tint y = (int) Math.round(getY());\n\t\tg.drawImage(penImage, x - width / 2, y - height / 2, comp);\n\t}\n\n/* Protected method: getPenBounds() */\n/**\n * This method returns the bounds that the pen occupies.\n *\n * @usage Rectangle r = getPenBounds();\n */\n\tprotected Rectangle getPenBounds() {\n\t\tComponent comp = getComponent();\n\t\tif (comp == null) return new Rectangle();\n\t\tif (penImage == null) penImage = PenImage.getImage();\n\t\tint width = penImage.getWidth(comp);\n\t\tint height = penImage.getHeight(comp);\n\t\tint x = (int) Math.round(getX());\n\t\tint y = (int) Math.round(getY());\n\t\treturn new Rectangle(x - width / 2, y - height / 2, width, height);\n\t}\n\n/* Private instance variables */\n\tprivate Animator animator;\n\tprivate double xScale, yScale;\n\tprivate boolean regionOpen;\n\tprivate boolean regionStarted;\n\tprivate boolean penVisible;\n\tprivate PathList path;\n\tprivate Image penImage;\n\tprivate Color fillColor;\n\n/* Serial version UID */\n/**\n * The serialization code for this class.  This value should be incremented\n * whenever you change the structure of this class in an incompatible way,\n * typically by adding a new instance variable.\n */\n\tstatic final long serialVersionUID = 1L;\n}\n\n/* Package class: PathList */\n/**\n * The <code>PathList<code> class represents a list of path elements.\n */\nclass PathList implements Serializable {\n\n/* Constructor: new PathList() */\n/**\n * Creates a new <code>PathList</code> with no elements.\n */\n\tpublic PathList() {\n\t\tpath = new ArrayList<PathElement>();\n\t}\n\n/* Method: add(element) */\n/**\n * Adds the specified path element to the end of the contents list.\n */\n\tpublic synchronized void add(PathElement element) {\n\t\tpath.add(element);\n\t}\n\n/* Method: add(e1, e2) */\n/**\n * Adds two path elements under a single synchronization lock.\n */\n\tpublic synchronized void add(PathElement e1, PathElement e2) {\n\t\tpath.add(e1);\n\t\tpath.add(e2);\n\t}\n\n/* Method: remove(element) */\n/**\n * Removes the specified element from the list.\n */\n\tpublic synchronized void remove(PathElement element) {\n\t\tpath.remove(element);\n\t}\n\n/* Method: clear() */\n/**\n * Removes all path elements from the list.\n */\n\tpublic synchronized void clear() {\n\t\tpath.clear();\n\t}\n\n/* Method: getElementCount() */\n/**\n * Returns the number of path elements in the list.\n */\n\tpublic int getElementCount() {\n\t\treturn path.size();\n\t}\n\n/* Method: getElement(index) */\n/**\n * Returns the path element at the specified index.\n */\n\tpublic PathElement getElement(int index) {\n\t\treturn path.get(index);\n\t}\n\n/* Method: getBounds() */\n/**\n * Returns the bounding rectangle for the objects in the list.\n */\n\tpublic synchronized GRectangle getBounds(PathState state) {\n\t\tGRectangle bounds = new GRectangle(-1, -1, -1, -1);\n\t\tint nElements = path.size();\n\t\tfor (int i = 0; i < nElements; i++) {\n\t\t\tPathElement element = path.get(i);\n\t\t\telement.updateBounds(bounds, state);\n\t\t}\n\t\treturn bounds;\n\t}\n\n/* Method: mapPaint(g, state) */\n/**\n * Paints all the elements of the path using the graphics context <code>g</code>.\n */\n\tpublic synchronized void mapPaint(Graphics g, PathState state) {\n\t\tint nElements = path.size();\n\t\tfor (int i = 0; i < nElements; i++) {\n\t\t\tPathElement element = path.get(i);\n\t\t\telement.paint(g, state);\n\t\t}\n\t\tFINAL_PATH_ELEMENT.paint(g, state);\n\t}\n\n/* Private constants */\n\tprivate static final PathElement FINAL_PATH_ELEMENT = new FinalPathElement();\n\n/* Private instance variables */\n\tprivate ArrayList<PathElement> path;\n};\n\n/* Package class: PathState */\n/**\n * The <code>PathState<code> class maintains the information necessary to\n * render the path.  It is a structure in which the elements are read directly\n * by the PathElement subclasses.\n */\nclass PathState implements Serializable {\n\tdouble cx, cy;\t\t/* The current pen position, before scaling */\n\tdouble sx, sy;\t\t/* The current scale factors, applied before rendering */\n\tPolygon region;\t\t/* The current region, or null if no region is in effect */\n\tColor fillColor;\t/* The color used to fill the region */\n};\n\n/* Package abstract class: PathElement */\n/**\n * The <code>PathElement<code> class is used to elements of the path being constructed.\n * <code>PathElement</code> is the abstract class; the actual code to render and\n * compute the bounds of the path element is provided by the concrete classes.\n */\nabstract class PathElement implements Serializable {\n\n/* Constructor: PathElement() */\n/**\n * The default constructor for this class.\n */\n\tpublic PathElement() {\n\t\t/* Empty */\n\t}\n\n/* Method: paint(g, state); */\n/**\n * Performs whatever functions are necessary when this path element is\n * encountered during a painting traversal.\n */\n\tpublic void paint(Graphics g, PathState state) {\n\t\tif (g == g) /* Avoid unused parameter warning */;\n\t\tif (state == state) /* Avoid unused parameter warning */;\n\t}\n\n/* Method: updateBounds(bounds, state); */\n/**\n * Updates the bounds of the rectangle as it would if this operation were\n * performed.\n */\n\tpublic void updateBounds(GRectangle bounds, PathState state) {\n\t\tif (bounds == bounds) /* Avoid unused parameter warning */;\n\t\tif (state == state) /* Avoid unused parameter warning */;\n\t}\n}\n\n/* Package class: SetLocationElement */\n/**\n * The <code>SetLocationElement<code> class is used to represent a change in\n * position.\n */\nclass SetLocationElement extends PathElement {\n\n\tpublic SetLocationElement(double x, double y) {\n\t\tcx = x;\n\t\tcy = y;\n\t}\n\n\tpublic void paint(Graphics g, PathState state) {\n\t\tstate.cx = cx;\n\t\tstate.cy = cy;\n\t\tif (state.region != null) {\n\t\t\tstate.region.addPoint(GMath.round(state.sx * cx), GMath.round(state.sy * cy));\n\t\t}\n\t}\n\n\tpublic void updateBounds(GRectangle bounds, PathState state) {\n\t\tstate.cx = cx;\n\t\tstate.cy = cy;\n\t}\n\n\tprivate double cx, cy;\n}\n\n/* Package class: DrawLineElement */\n/**\n * The <code>DrawLineElement<code> class is used to represent a\n * line.\n */\nclass DrawLineElement extends PathElement {\n\n\tpublic DrawLineElement(double dx, double dy) {\n\t\tdeltaX = dx;\n\t\tdeltaY = dy;\n\t}\n\n\tpublic void paint(Graphics g, PathState state) {\n\t\tint x0 = GMath.round(state.sx * state.cx);\n\t\tint y0 = GMath.round(state.sy * state.cy);\n\t\tstate.cx += deltaX;\n\t\tstate.cy += deltaY;\n\t\tint x1 = GMath.round(state.sx * state.cx);\n\t\tint y1 = GMath.round(state.sy * state.cy);\n\t\tif (state.region == null) {\n\t\t\tg.drawLine(x0, y0, x1, y1);\n\t\t} else {\n\t\t\tstate.region.addPoint(x1, y1);\n\t\t}\n\t}\n\n\tpublic void updateBounds(GRectangle bounds, PathState state) {\n\t\tif (bounds.getWidth() < 0) {\n\t\t\tbounds.setBounds(state.sx * state.cx, state.sy * state.cy, 0, 0);\n\t\t} else {\n\t\t\tbounds.add(state.sx * state.cx, state.sy * state.cy);\n\t\t}\n\t\tstate.cx += deltaX;\n\t\tstate.cy += deltaY;\n\t\tbounds.add(state.sx * state.cx, state.sy * state.cy);\n\t}\n\n\tprivate double deltaX, deltaY;\n}\n\n/* Package class: SetColorElement */\n/**\n * The <code>SetColorElement<code> class is used to represent a\n * change of color.\n */\nclass SetColorElement extends PathElement {\n\tpublic SetColorElement(Color color) {\n\t\tmyColor = color;\n\t}\n\n\tpublic void paint(Graphics g, PathState state) {\n\t\tg.setColor(myColor);\n\t}\n\n\tprivate Color myColor;\n}\n\n/* Package class: StartRegionElement */\n/**\n * The <code>StartRegionElement<code> class marks the beginning of a region.\n */\nclass StartRegionElement extends PathElement {\n\tpublic StartRegionElement(Color color) {\n\t\tmyColor = color;\n\t}\n\n\tpublic void paint(Graphics g, PathState state) {\n\t\tstate.region = new Polygon();\n\t\tstate.fillColor = myColor;\n\t}\n\n\tprivate Color myColor;\n}\n\n/* Package class: EndRegionElement */\n/**\n * The <code>EndRegionElement<code> class marks the end of a region.\n */\nclass EndRegionElement extends PathElement {\n\tpublic EndRegionElement() {\n\t\t/* Empty */\n\t}\n\n\tpublic void paint(Graphics g, PathState state) {\n\t\tColor oldColor = g.getColor();\n\t\tg.setColor(state.fillColor);\n\t\tg.fillPolygon(state.region.xpoints, state.region.ypoints, state.region.npoints);\n\t\tg.setColor(oldColor);\n\t\tg.drawPolygon(state.region.xpoints, state.region.ypoints, state.region.npoints);\n\t\tstate.region = null;\n\t}\n}\n\n/* Package class: FinalPathElement */\n/**\n * The <code>FinalPathElement<code> class is invoked at the end of the path\n * and has the effect of drawing an incomplete region.\n */\nclass FinalPathElement extends PathElement {\n\tpublic FinalPathElement() {\n\t\t/* Empty */\n\t}\n\n\tpublic void paint(Graphics g, PathState state) {\n\t\tif (state.region != null) {\n\t\t\tg.drawPolyline(state.region.xpoints, state.region.ypoints, state.region.npoints);\n\t\t}\n\t}\n}\n\n/* Package class: PenImage */\n/**\n * This class encapsulates the image used to display the pen.\n */\nclass PenImage {\n\n\tpublic static Image getImage() {\n\t\treturn MediaTools.createImage(HEX_DATA);\n\t}\n\n\tprivate static final String[] HEX_DATA = {\n\t\t\"4749463839614F006500F70000FFFFFF980098339999989800111111222222000054CBFFCB003298\",\n\t\t\"0033660033CC0033FE00323266330066660000659800989800CC9900FE99329800659800CC0099FE\",\n\t\t\"0098659898999999CC9900FE98009800329800659900CC9800FE3399CB3399FF9999339898659832\",\n\t\t\"0098650099339998659833CB9833FF9999CC0099FE00336699656698CC9898FF9999323200336600\",\n\t\t\"32003233006632009833339965009866339900663300983200666600986500CC3300FE3200CC6600\",\n\t\t\"FE65CCCC98CCFF99FFCC99FFFF993300CC3200FE6600CC6500FECC0033CC0066FE0032FE00653399\",\n\t\t\"33339966669933669865CC00CCCB00FEFE00CBFE00FE6699CC6598FF9898CC9999FFCB9833CC9966\",\n\t\t\"FF9933FF9865333333326532323265326565660033653232660066653265CC3300CC6600FE3200FE\",\n\t\t\"65000066CC0099CC0066FE0098FE00CCCC00FECB00CCFE00FEFE33CC0033FE0066CC0066FE00CB33\",\n\t\t\"98CC6699FF3399FF659866CC9965FF9898CC9899FF99CCCC00CCFE00FECB00FEFE00993333996633\",\n\t\t\"9933669865659833CB9966CC9933FF9865FF33CBCB33FFCC33CCFF33FFFF99CB3399FF3399CC6698\",\n\t\t\"FF65CC98CCCCCCCCCC99FFCBCBFFFF99CCFFCBCBFF99FFFFCBFF3333CB3366CB3333FF3366FF6533\",\n\t\t\"CB6666CC6633FF6565FFCB3333CB6533CB3365CC6666FF3333FF6633FF3366FF656533CB3333FF33\",\n\t\t\"33CB6633FF6666CB3366FF3366CC6665FF65CB33CBCC66CCCC33FFCC65FFFF33CCFF65CCFF33FFFF\",\n\t\t\"65FF66CCCC65FFCC65CCFF65FFFF98CCCC99FFCC99CCFF99FFFFCBCB33CCFF33CCCC66CCFF65FFCC\",\n\t\t\"33FFFF33FFCC65FFFF65444444656532DDDDDDCBFFFFFFFFCBEEEEEE100000980000001000660000\",\n\t\t\"000098000066777777888888AAAAAABBBBBB5555556666660000100000224400005400000000CC00\",\n\t\t\"00DC0000EE0000FE00003200004400880000980000AA0000BA0000CC0000DC0000EE0000FE00CC00\",\n\t\t\"00DC0000EE0000FE0000004400005400006600007600220000320000AA0000BA0000002200003200\",\n\t\t\"7600008800000000AA0000BA00007600008800000021F90401000000002C000000004F006500C7FF\",\n\t\t\"FFFF980098339999989800111111222222000054CBFFCB0032980033660033CC0033FE0032326633\",\n\t\t\"0066660000659800989800CC9900FE99329800659800CC0099FE0098659898999999CC9900FE9800\",\n\t\t\"9800329800659900CC9800FE3399CB3399FF99993398986598320098650099339998659833CB9833\",\n\t\t\"FF9999CC0099FE00336699656698CC9898FF99993232003366003200323300663200983333996500\",\n\t\t\"9866339900663300983200666600986500CC3300FE3200CC6600FE65CCCC98CCFF99FFCC99FFFF99\",\n\t\t\"3300CC3200FE6600CC6500FECC0033CC0066FE0032FE0065339933339966669933669865CC00CCCB\",\n\t\t\"00FEFE00CBFE00FE6699CC6598FF9898CC9999FFCB9833CC9966FF9933FF98653333333265323232\",\n\t\t\"65326565660033653232660066653265CC3300CC6600FE3200FE65000066CC0099CC0066FE0098FE\",\n\t\t\"00CCCC00FECB00CCFE00FEFE33CC0033FE0066CC0066FE00CB3398CC6699FF3399FF659866CC9965\",\n\t\t\"FF9898CC9899FF99CCCC00CCFE00FECB00FEFE009933339966339933669865659833CB9966CC9933\",\n\t\t\"FF9865FF33CBCB33FFCC33CCFF33FFFF99CB3399FF3399CC6698FF65CC98CCCCCCCCCC99FFCBCBFF\",\n\t\t\"FF99CCFFCBCBFF99FFFFCBFF3333CB3366CB3333FF3366FF6533CB6666CC6633FF6565FFCB3333CB\",\n\t\t\"6533CB3365CC6666FF3333FF6633FF3366FF656533CB3333FF3333CB6633FF6666CB3366FF3366CC\",\n\t\t\"6665FF65CB33CBCC66CCCC33FFCC65FFFF33CCFF65CCFF33FFFF65FF66CCCC65FFCC65CCFF65FFFF\",\n\t\t\"98CCCC99FFCC99CCFF99FFFFCBCB33CCFF33CCCC66CCFF65FFCC33FFFF33FFCC65FFFF6544444465\",\n\t\t\"6532DDDDDDCBFFFFFFFFCBEEEEEE100000980000001000660000000098000066777777888888AAAA\",\n\t\t\"AABBBBBB5555556666660000100000224400005400000000CC0000DC0000EE0000FE000032000044\",\n\t\t\"00880000980000AA0000BA0000CC0000DC0000EE0000FE00CC0000DC0000EE0000FE000000440000\",\n\t\t\"5400006600007600220000320000AA0000BA00000022000032007600008800000000AA0000BA0000\",\n\t\t\"7600008800000008FF0001081C48B0A0C18308132A5CA81012248610234A640809DBBF2DD830E431\",\n\t\t\"D1451B868920432684C4022306483F5AB0E882ADE5968F226386C40026E38F479030E8C45072CB0F\",\n\t\t\"9940252EEB226265476D0CFE29C5F630A8538818B6B4C00869D9D3AB22B7FC636115ABD7AF60C38A\",\n\t\t\"1D4BB6ACD9B368D3AA5DCB166B450334E23280D916E48F2D1E7F406AA11792096D2CEA4A848491C5\",\n\t\t\"8FBE3FF23CFA81C10B5DC10A317089CAC221DF9C5E5E428EF8A30B06315D0C30D0267573C8652CA2\",\n\t\t\"3E36CDBAB5EBD7B063CB9E4DBBB6EDC1D80C6CD9D2F4B6418E09BAD0B04143B3EF81183A62435CA5\",\n\t\t\"4B8CC0C73B6364BCF3824E9FBE519BD49B27A76516CB6F57FFC4963AE70A315EC0E0DD52597C4B9D\",\n\t\t\"7A5B3844597235ED962CE2D2E8D245065E6C941C0700249E61D3C50CA46504C901020A74D7671D79\",\n\t\t\"D15B830E7A661C850661808D18D860E8E187208628E288249668E28928A6A8E28A6C2D13156F2326\",\n\t\t\"275C0C4C819887180CE8C7D28402A2C6400C5BD8E0455C5D74D5E00F167551194A5EF0C7608384BD\",\n\t\t\"601824BBC8971C76024615C305F275F74877D878F1D37184B177521E3AB160020BE859729C760A22\",\n\t\t\"F6C32E4876C1236D5191E7D04D7BE6D4451E6416261F75D571E8E66DA8BDA7174F8CB2B09591B60D\",\n\t\t\"95D1231718888D132C8077E16D26607381097ACD199F81F6D1462084CFB17041A65B743126996068\",\n\t\t\"5728DC51EBDD699B8618C4B5C58F5B00D95E83B8CEFADF931882975C71A086F81E035B98606B8382\",\n\t\t\"8057638C196D11E088E3C148A2815892F8CFB42C862BEEB8E4966BEEB9E8A6ABEEBAECB6EBEEBBF0\",\n\t\t\"C62BEFBCF4CA1B100021FF0B4D414347436F6E2004031039000000015772697474656E2062792047\",\n\t\t\"4946436F6E76657274657220322E342E33206F66204D6F6E6461792C204D61792032352C20313939\",\n\t\t\"38003B\"\n\t};\n\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/graphics/GPoint.java",
    "content": "/*\n * @(#)GPoint.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Performance improvement 23-Jan-07 (ESR)\n//   1. Changed hashCode implementation for better performance.\n//\n// Feature enhancement 26-May-08 (ESR)\n//   1. Added support for serialization.\n\npackage acm.graphics;\n\nimport java.awt.*;\nimport java.io.*;\n\n/* Class: GPoint */\n/**\n * This class is a double-precision version of the <code>Point</code> class\n * in <code>java.awt</code>.\n */\npublic class GPoint implements Serializable {\n\n/* Constructor: GPoint() */\n/**\n * Constructs a new <code>GPoint</code> at the origin (0, 0).\n *\n * @usage pt = new GPoint();\n */\n\tpublic GPoint() {\n\t\tthis(0, 0);\n\t}\n\n/* Constructor: GPoint(x, y) */\n/**\n * Constructs a new <code>GPoint</code> with the specified coordinates.\n *\n * @usage pt = new GPoint(x, y);\n * @param x The x-coordinate of the point\n * @param y The y-coordinate of the point\n */\n\tpublic GPoint(double x, double y) {\n\t\txc = x;\n\t\tyc = y;\n\t}\n\n/* Constructor: GPoint(p) */\n/**\n * Constructs a new <code>GPoint</code> from an existing one.\n *\n * @usage pt = new GPoint(p);\n * @param p The original point\n */\n\tpublic GPoint(GPoint p) {\n\t\tthis(p.xc, p.yc);\n\t}\n\n/* Constructor: GPoint(p) */\n/**\n * Constructs a new <code>GPoint</code> from an existing AWT <code>Point</code>.\n *\n * @usage pt = new GPoint(p);\n * @param p An AWT <code>Point</code>\n */\n\tpublic GPoint(Point p) {\n\t\tthis(p.x, p.y);\n\t}\n\n/* Method: getX() */\n/**\n * Returns the x coordinate of this <code>GPoint</code>.\n *\n * @usage x = pt.getX();\n * @return The x coordinate of this <code>GPoint</code>\n */\n\tpublic double getX() {\n\t\treturn xc;\n\t}\n\n/* Method: getY() */\n/**\n * Returns the y coordinate of this <code>GPoint</code>.\n *\n * @usage y = pt.getY();\n * @return The y coordinate of this <code>GPoint</code>\n */\n\tpublic double getY() {\n\t\treturn yc;\n\t}\n\n/* Method: setLocation(x, y) */\n/**\n * Sets the location of the <code>GPoint</code> to the specified <code>x</code>\n * and <code>y</code> values.\n *\n * @usage pt.setLocation(x, y);\n * @param x The new x-coordinate for the point\n * @param y The new y-coordinate for the point\n */\n\tpublic void setLocation(double x, double y) {\n\t\txc = x;\n\t\tyc = y;\n\t}\n\n/* Method: setLocation(p) */\n/**\n * Sets the location of the <code>GPoint</code> to that of an existing one.\n *\n * @usage pt.setLocation(p);\n * @param p An existing <code>GPoint</code> specifying the new location\n */\n\tpublic void setLocation(GPoint p) {\n\t\tsetLocation(p.xc, p.yc);\n\t}\n\n/* Method: getLocation() */\n/**\n * Returns a new <code>GPoint</code> whose coordinates are the same as this one.\n *\n * @usage p = pt.getLocation();\n * @return A new point with the same coordinates\n */\n\tpublic GPoint getLocation() {\n\t\treturn new GPoint(xc, yc);\n\t}\n\n/* Method: translate(dx, dy) */\n/**\n * Adjusts the coordinates of a point by the specified <code>dx</code> and\n * <code>dy</code> offsets.\n *\n * @usage pt.translate(dx, dy);\n * @param dx The change in the x direction (positive is rightward)\n * @param dy The change in the y direction (positive is downward)\n */\n\tpublic void translate(double dx, double dy) {\n\t\txc += dx;\n\t\tyc += dy;\n\t}\n\n/* Method: toPoint() */\n/**\n * Converts this <code>GPoint</code> to the nearest integer-based <code>Point</code>.\n *\n * @usage size = dim.toPoint();\n * @return The closest integer-based <code>Point</code>\n */\n\tpublic Point toPoint() {\n\t\treturn new Point((int) Math.round(xc), (int) Math.round(yc));\n\t}\n\n/* Method: hashCode() */\n/**\n * Returns an integer hash code for the point.  The hash code for a\n * <code>GPoint</code> is constructed from the hash codes from the\n * <code>float</code> values of the coordinates, which are the ones used in the\n * <code>equals</code> method.\n *\n * @usage hash = pt.hashCode();\n * @return The hash code for this pt\n * @noshow\n */\n\tpublic int hashCode() {\n\t\treturn new Float((float) xc).hashCode() ^ (37 * new Float((float) yc).hashCode());\n\t}\n\n/* Method: equals(obj) */\n/**\n * Tests whether two <code>GPoint</code> objects are equal.\n * Because floating-point values are inexact, this method checks for\n * equality by comparing the <code>float</code> values (rather than the\n * <code>double</code> values) of the coordinates.\n *\n * @usage if (pt.equals(obj)) . . .\n * @param obj Any object\n * @return <code>true</code> if the <code>obj</code> is a <code>GPoint</code>\n *         equal to this one, and <code>false</code> otherwise\n * @noshow\n */\n\tpublic boolean equals(Object obj) {\n\t\tif (!(obj instanceof GPoint)) return false;\n\t\tGPoint pt = (GPoint) obj;\n\t\treturn ((float) xc == (float) pt.xc) && ((float) yc == (float) pt.yc);\n\t}\n\n/* Method: toString() */\n/**\n * Converts this <code>GPoint</code> to its string representation.\n *\n * @usage str = rect.toString();\n * @return A string representation of this point\n * @noshow\n */\n\tpublic String toString() {\n\t\treturn \"(\" + (float) xc + \", \" + (float) yc + \")\";\n\t}\n\n/* Private instance variables */\n\tprivate double xc;\n\tprivate double yc;\n\n/* Serial version UID */\n/**\n * The serialization code for this class.  This value should be incremented\n * whenever you change the structure of this class in an incompatible way,\n * typically by adding a new instance variable.\n */\n\tstatic final long serialVersionUID = 1L;\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/graphics/GPolygon.java",
    "content": "/*\n * @(#)GPolygon.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Code cleanup 28-May-07 (ESR)\n//   1. Added generic type tags.\n//\n// Bug fix 6-Jul-07 (ESR, JTFBug 2007-010, reported by Steve Wolfman)\n//   1. Fixed bug in recenter code.\n//\n// Feature enhancement 26-May-08 (ESR)\n//   1. Added support for serialization.\n\npackage acm.graphics;\n\nimport acm.util.*;\nimport java.awt.*;\nimport java.io.*;\nimport java.util.*;\n\n/* Class: GPolygon */\n/**\n * The <code>GPolygon</code> class is a graphical object whose appearance consists\n * of a polygon.\n */\npublic class GPolygon extends GObject implements GFillable, GScalable {\n\n/* Constructor: GPolygon() */\n/**\n * Constructs a new empty polygon at the origin.\n *\n * @usage GPolygon gpoly = new GPolygon();\n */\n\tpublic GPolygon() {\n\t\tvertices = new VertexList();\n\t\tclear();\n\t}\n\n/* Constructor: GPolygon(x, y) */\n/**\n * Constructs a new empty polygon at (<code>x</code>, <code>y</code>).\n *\n * @usage GPolygon gpoly = new GPolygon(x, y);\n * @param x The x-coordinate of the origin of the polygon\n * @param y The y-coordinate of the origin of the polygon\n */\n\tpublic GPolygon(double x, double y) {\n\t\tthis();\n\t\tsetLocation(x, y);\n\t}\n\n/* Constructor: GPolygon(points) */\n/**\n * Constructs a new polygon from the specified array of <code>GPoint</code>\n * objects.  The polygon is automatically marked as complete.\n *\n * @usage GPolygon gpoly = new GPolygon(points);\n * @param points An array of <code>GPoint</code> objects specifying the vertices\n */\n\tpublic GPolygon(GPoint[] points) {\n\t\tthis();\n\t\tvertices.add(points);\n\t\tmarkAsComplete();\n\t}\n\n/* Method: addVertex(x, y) */\n/**\n * Adds a vertex at (<code>x</code>, <code>y</code>) relative to the polygon origin.\n *\n * @usage gpoly.addVertex(x, y);\n * @param x The x-coordinate of the vertex relative to the polygon origin\n * @param y The y-coordinate of the vertex relative to the polygon origin\n */\n\tpublic void addVertex(double x, double y) {\n\t\tif (complete) {\n\t\t\tthrow new ErrorException(\"You can't add vertices to a GPolygon that has been \"\n\t\t\t                         + \"marked as complete.\");\n\t\t}\n\t\tvertices.addVertex(x, y);\n\t}\n\n/* Method: addEdge(dx, dy) */\n/**\n * Adds an edge to the polygon whose components are given by the displacements\n * <code>dx</code> and <code>dy</code> from the last vertex.\n *\n * @usage gpoly.addEdge(dx, dy);\n * @param dx The x displacement through which the edge moves\n * @param dy The y displacement through which the edge moves\n */\n\tpublic void addEdge(double dx, double dy) {\n\t\tif (complete) {\n\t\t\tthrow new ErrorException(\"You can't add edges to a GPolygon that has been \"\n\t\t\t                         + \"marked as complete.\");\n\t\t}\n\t\tvertices.addEdge(dx, dy);\n\t}\n\n/* Method: addPolarEdge(r, theta) */\n/**\n * Adds an edge to the polygon specified in polar coordinates.  The length of the\n * edge is given by <code>r</code>, and the edge extends in direction <code>theta</code>,\n * measured in degrees counterclockwise from the +x axis.\n *\n * @usage gpoly.addPolarEdge(r, theta);\n * @param r The length of the edge\n * @param theta The angle at which the edge extends measured in degrees\n */\n\tpublic final void addPolarEdge(double r, double theta) {\n\t\tif (complete) {\n\t\t\tthrow new ErrorException(\"You can't add edges to a GPolygon that has been \"\n\t\t\t                         + \"marked as complete.\");\n\t\t}\n\t\tvertices.addEdge(r * GMath.cosDegrees(theta), -r * GMath.sinDegrees(theta));\n\t}\n\n/* Method: addArc(arcWidth, arcHeight, start, sweep) */\n/**\n * Adds a series of edges to the polygon that simulates the arc specified by\n * the parameters.  The <i>x</i> and <i>y</i> parameters for the arc bounding\n * box are computed implicitly by figuring out what values would place the\n * current vertex at the starting position.\n *\n * @usage gpoly.addArc(arcWidth, arcHeight, start, sweep);\n * @param arcWidth The width of the oval from which the arc is taken\n * @param arcHeight The height of the oval from which the arc is taken\n * @param start The angle at which the arc begins\n * @param sweep The extent of the arc\n */\n\tpublic void addArc(double arcWidth, double arcHeight, double start, double sweep) {\n\t\tif (complete) {\n\t\t\tthrow new ErrorException(\"You can't add edges to a GPolygon that has been \"\n\t\t\t                         + \"marked as complete.\");\n\t\t}\n\t\tvertices.addArc(arcWidth, arcHeight, start, sweep);\n\t}\n\n/* Method: getCurrentPoint() */\n/**\n * Returns the coordinates of the last vertex added to the polygon, or <code>null</code>\n * if the polygon is empty.\n *\n * @usage GPoint vertex = gpoly.getCurrentPoint();\n * @return The last vertex added to the polygon, or <code>null</code> if empty\n */\n\tpublic GPoint getCurrentPoint() {\n\t\treturn vertices.getCurrentPoint();\n\t}\n\n/* Method: scale(sx, sy) */\n/**\n * Scales the polygon by the scale factors <code>sx</code> and <code>sy</code>.\n *\n * @usage gpoly.scale(sx, sy);\n * @param sx The factor used to scale all coordinates in the x direction\n * @param sy The factor used to scale all coordinates in the y direction\n */\n\tpublic void scale(double sx, double sy) {\n\t\txScale *= sx;\n\t\tyScale *= sy;\n\t\trepaint();\n\t}\n\n/* Method: scale(sf) */\n/**\n * Scales the object on the screen by the scale factor <code>sf</code>, which applies\n * in both dimensions.\n *\n * @usage gobj.scale(sf);\n * @param sf The factor used to scale all coordinates in both dimensions\n */\n\tpublic final void scale(double sf) {\n\t\tscale(sf, sf);\n\t}\n\n/* Method: rotate(theta) */\n/**\n * Rotates the polygon around its origin by the angle theta, measured in degrees.\n *\n * @usage gpoly.rotate(theta);\n * @param theta The angle of rotation in degrees counterclockwise\n */\n\tpublic void rotate(double theta) {\n\t\trotation += theta;\n\t\trepaint();\n\t}\n\n/* Method: setFilled(fill) */\n/**\n * Sets whether this object is filled.\n *\n * @usage gobj.setFilled(fill);\n * @param fill <code>true</code> if the object should be filled, <code>false</code> for an outline\n */\n\tpublic void setFilled(boolean fill) {\n\t\tisFilled = fill;\n\t\trepaint();\n\t}\n\n/* Method: isFilled() */\n/**\n * Returns whether this object is filled.\n *\n * @usage if (gobj.isFilled()) . . .\n * @return The color used to display the object\n */\n\tpublic boolean isFilled() {\n\t\treturn isFilled;\n\t}\n\n/* Method: setFillColor(color) */\n/**\n * Sets the color used to display the filled region of this object.\n *\n * @usage gobj.setFillColor(color);\n * @param color The color used to display the filled region of this object\n */\n\tpublic void setFillColor(Color color) {\n\t\tfillColor = color;\n\t\trepaint();\n\t}\n\n/* Method: getFillColor() */\n/**\n * Returns the color used to display the filled region of this object.  If\n * none has been set, <code>getFillColor</code> returns the color of the\n * object.\n *\n * @usage Color color = gobj.getFillColor();\n * @return The color used to display the filled region of this object\n */\n\tpublic Color getFillColor() {\n\t\treturn (fillColor == null) ? getColor() : fillColor;\n\t}\n\n/* Method: getBounds() */\n/**\n * Returns the bounding box of this object, which is defined to be the\n * smallest rectangle that covers everything drawn by the figure.\n *\n * @usage GRectangle bounds = gpoly.getBounds();\n * @return The bounding box for this object\n */\n\tpublic GRectangle getBounds() {\n\t\treturn vertices.getBounds(getX(), getY(), xScale, yScale, rotation);\n\t}\n\n/* Method: contains(x, y) */\n/**\n * Checks to see whether a point is inside the object.\n *\n * @usage if (gpoly.contains(x, y)) . . .\n * @param x The x-coordinate of the point being tested\n * @param y The y-coordinate of the point being tested\n * @return <code>true</code> if the point (<code>x</code>,&nbsp;<code>y</code>) is inside\n *         the object, and <code>false</code> otherwise\n */\n\tpublic boolean contains(double x, double y) {\n\t\treturn vertices.contains((x - getX()) / xScale, (y - getY()) / yScale);\n\t}\n\n/* Method: paint(g) */\n/**\n * Implements the <code>paint</code> operation for this graphical object.  This method\n * is not called directly by clients.\n * @noshow\n */\n\tpublic void paint(Graphics g) {\n\t\tif (vertices.size() == 0) return;\n\t\tPolygon p = getPolygon();\n\t\tif (isFilled()) {\n\t\t\tg.setColor(getFillColor());\n\t\t\tg.fillPolygon(p.xpoints, p.ypoints, p.npoints);\n\t\t\tg.setColor(getColor());\n\t\t}\n\t\tg.drawPolygon(p.xpoints, p.ypoints, p.npoints);\n\t}\n\n/* Method: recenter() */\n/**\n * Recalculates the vertices of the polygon so that they are positioned\n * relative to the geometric center of the object.  This method allows\n * clients to take a polygon drawn using mouse clicks on the screen and\n * then to reformulate it so that it can be displayed relative to its center.\n *\n * @usage gpoly.recenter();\n */\n\tpublic void recenter() {\n\t\tvertices.recenter();\n\t\tcacheValid = false;\n\t}\n\n/* Method: clone() */\n/**\n * Overrides <code>clone</code> in <code>Object</code> to make sure\n * that the vertex list is copied rather than shared.\n * @noshow\n */\n\tpublic Object clone() {\n\t\ttry {\n\t\t\tGPolygon clone = (GPolygon) super.clone();\n\t\t\tclone.vertices = new VertexList(clone.vertices);\n\t\t\treturn clone;\n\t\t} catch (Exception CloneNotSupportedException) {\n\t\t\tthrow new ErrorException(\"Impossible exception\");\n\t\t}\n\t}\n\n/* Inherited method: setLocation(x, y) */\n/**\n * @inherited GObject#void setLocation(double x, double y)\n * Sets the location of this object to the point (<code>x</code>, <code>y</code>).\n */\n\n/* Inherited method: setLocation(pt) */\n/**\n * @inherited GObject#void setLocation(GPoint pt)\n * Sets the location of this object to the specified point.\n */\n\n/* Inherited method: getLocation() */\n/**\n * @inherited GObject#GPoint getLocation()\n * Returns the location of this object as a <code>GPoint</code>.\n */\n\n/* Inherited method: getX() */\n/**\n * @inherited GObject#double getX()\n * Returns the x-coordinate of the object.\n */\n\n/* Inherited method: getY() */\n/**\n * @inherited GObject#double getY()\n * Returns the y-coordinate of the object.\n */\n\n/* Inherited method: move(dx, dy) */\n/**\n * @inherited GObject#void move(double dx, double dy)\n * Moves the object on the screen using the displacements <code>dx</code> and <code>dy</code>.\n */\n\n/* Inherited method: movePolar(r, theta) */\n/**\n * @inherited GObject#void movePolar(double r, double theta)\n * Moves the object using displacements given in polar coordinates.\n */\n\n/* Inherited method: getSize() */\n/**\n * @inherited GObject#GDimension getSize()\n * Returns the size of the bounding box for this object.\n */\n\n/* Inherited method: getWidth() */\n/**\n * @inherited GObject#double getWidth()\n * Returns the width of this object, which is defined to be\n * the width of the bounding box.\n */\n\n/* Inherited method: getHeight() */\n/**\n * @inherited GObject#double getHeight()\n * Returns the height of this object, which is defined to be\n * the height of the bounding box.\n */\n\n/* Inherited method: contains(pt) */\n/**\n * @inherited GObject#boolean contains(GPoint pt)\n * Checks to see whether a point is inside the object.\n */\n\n/* Inherited method: sendToFront() */\n/**\n * @inherited GObject#void sendToFront()\n * Moves this object to the front of the display in the <i>z</i> dimension.\n */\n\n/* Inherited method: sendToBack() */\n/**\n * @inherited GObject#void sendToBack()\n * Moves this object to the back of the display in the <i>z</i> dimension.\n */\n\n/* Inherited method: sendForward() */\n/**\n * @inherited GObject#void sendForward()\n * Moves this object one step toward the front in the <i>z</i> dimension.\n */\n\n/* Inherited method: sendBackward() */\n/**\n * @inherited GObject#void sendBackward()\n * Moves this object one step toward the back in the <i>z</i> dimension.\n */\n\n/* Inherited method: setColor(color) */\n/**\n * @inherited GObject#void setColor(Color color)\n * Sets the color used to display this object.\n */\n\n/* Inherited method: getColor() */\n/**\n * @inherited GObject#Color getColor()\n * Returns the color used to display this object.\n */\n\n/* Inherited method: setVisible(visible) */\n/**\n * @inherited GObject#void setVisible(boolean visible)\n * Sets whether this object is visible.\n */\n\n/* Inherited method: isVisible() */\n/**\n * @inherited GObject#boolean isVisible()\n * Checks to see whether this object is visible.\n */\n\n/* Inherited method: addMouseListener(listener) */\n/**\n * @inherited GObject#void addMouseListener(MouseListener listener)\n * Adds a mouse listener to this graphical object.\n */\n\n/* Inherited method: removeMouseListener(listener) */\n/**\n * @inherited GObject#void removeMouseListener(MouseListener listener)\n * Removes a mouse listener from this graphical object.\n */\n\n/* Inherited method: addMouseMotionListener(listener) */\n/**\n * @inherited GObject#void addMouseMotionListener(MouseMotionListener listener)\n * Adds a mouse motion listener to this graphical object.\n */\n\n/* Inherited method: removeMouseMotionListener(listener) */\n/**\n * @inherited GObject#void removeMouseMotionListener(MouseMotionListener listener)\n * Removes a mouse motion listener from this graphical object.\n */\n\n/* Protected method: repaint() */\n/**\n * Overrides <code>repaint</code> in <code>GObject</code> to invalidate the\n * cached polygon.\n * @noshow\n */\n\tprotected void repaint() {\n\t\tcacheValid = false;\n\t\tsuper.repaint();\n\t}\n\n/* Protected method: getPolygon() */\n/**\n * Returns an AWT <code>Polygon</code> whose points are as close as possible\n * to the ones in this <code>GPolygon</code>.\n *\n * @usage Polygon p = gpoly.getPolygon();\n * @return An AWT polygon corresponding to this object\n */\n\tprotected Polygon getPolygon() {\n\t\tif (cacheValid) return poly;\n\t\tpoly = vertices.createPolygon(getX(), getY(), xScale, yScale, rotation);\n\t\tcacheValid = true;\n\t\treturn poly;\n\n\t}\n\n/* Protected method: markAsComplete() */\n/**\n * Calling this method makes it illegal to add or remove vertices from the\n * polygon.  Subclasses can invoke this method to protect the integrity of\n * the structure from changes by the client.\n */\n\tprotected void markAsComplete() {\n\t\tcomplete = true;\n\t}\n\n/* Protected method: clear() */\n/**\n * Calling this method deletes all vertices from the polygon and resets the\n * scale and rotation factors to the their default values.  Subclasses can\n * use this method to reconstruct a polygon.\n */\n\tprotected void clear() {\n\t\tif (complete) {\n\t\t\tthrow new ErrorException(\"You can't clear a GPolygon that has been \"\n\t\t\t                         + \"marked as complete.\");\n\t\t}\n\t\tvertices.clear();\n\t\trotation = 0;\n\t\txScale = 1.0;\n\t\tyScale = 1.0;\n\t\tcacheValid = false;\n\t}\n\n/* Private instance variables */\n\tprivate double xScale;\n\tprivate double yScale;\n\tprivate double rotation;\n\tprivate VertexList vertices;\n\tprivate boolean cacheValid;\n\tprivate boolean complete;\n\tprivate Polygon poly;\n\tprivate boolean isFilled;\n\tprivate Color fillColor;\n\n/* Serial version UID */\n/**\n * The serialization code for this class.  This value should be incremented\n * whenever you change the structure of this class in an incompatible way,\n * typically by adding a new instance variable.\n */\n\tstatic final long serialVersionUID = 1L;\n}\n\n/* Package class: VertexList */\n/**\n * The <code>VertexList<code> class represents a list of vertices.\n */\nclass VertexList implements Serializable {\n\n/* Constructor: new VertexList() */\n/**\n * Creates a new <code>VertexList</code> with no elements.\n */\n\tpublic VertexList() {\n\t\tvertices = new ArrayList<GPoint>();\n\t\tcx = 0;\n\t\tcy = 0;\n\t}\n\n/* Constructor: new VertexList(oldList) */\n/**\n * Creates a new <code>VertexList</code> that is a clone of the old one.\n */\n\tpublic VertexList(VertexList oldList) {\n\t\tthis();\n\t\tfor (int i = 0; i < oldList.vertices.size(); i++) {\n\t\t\tvertices.add(oldList.vertices.get(i));\n\t\t}\n\t}\n\n/* Method: addVertex(x, y) */\n/**\n * Adds the specified vertex to the end of the list.\n */\n\tpublic synchronized void addVertex(double x, double y) {\n\t\tcx = x;\n\t\tcy = y;\n\t\tvertices.add(new GPoint(cx, cy));\n\t}\n\n/* Method: addEdge(dx, dy) */\n/**\n * Adds the specified edge to the end of the list.\n */\n\tpublic synchronized void addEdge(double dx, double dy) {\n\t\tcx += dx;\n\t\tcy += dy;\n\t\tvertices.add(new GPoint(cx, cy));\n\t}\n\n/* Method: addArc(arcWidth, arcHeight, start, sweep) */\n/**\n * Adds a series of edges to the polygon that simulates the arc specified by\n * the parameters.  The <i>x</i> and <i>y</i> parameters for the arc bounding\n * box are computed implicitly by figuring out what values would place the\n * current vertex at the starting position.\n */\n\tpublic void addArc(double arcWidth, double arcHeight, double start, double sweep) {\n\t\tdouble aspectRatio = arcHeight / arcWidth;\n\t\tdouble rx = arcWidth / 2.0;\n\t\tdouble ry = arcHeight / 2.0;\n\t\tdouble x0 = cx - rx * GMath.cosDegrees(start);\n\t\tdouble y0 = cy + ry * GMath.sinDegrees(start);\n\t\tif (sweep > 359.99) sweep = 360;\n\t\tif (sweep < -359.99) sweep = -360;\n\t\tdouble dt = Math.atan2(1, Math.max(arcWidth, arcHeight));\n\t\tint nSteps = (int) (GMath.toRadians(Math.abs(sweep)) / dt);\n\t\tdt = GMath.toRadians(sweep) / nSteps;\n\t\tdouble theta = GMath.toRadians(start);\n\t\tfor (int i = 0; i < nSteps; i++) {\n\t\t\ttheta += dt;\n\t\t\tdouble px = x0 + rx * Math.cos(theta);\n\t\t\tdouble py = y0 - rx * Math.sin(theta) * aspectRatio;\n\t\t\taddVertex(px, py);\n\t\t}\n\t}\n\n/* Method: add(array) */\n/**\n * Adds copies of the points to the end of the vertex list.\n */\n\tpublic synchronized void add(GPoint[] array) {\n\t\tfor (int i = 0; i < array.length; i++) {\n\t\t\tvertices.add(new GPoint(array[i].getX(), array[i].getY()));\n\t\t}\n\t}\n\n/* Method: remove(vertex) */\n/**\n * Removes the specified vertex from the list.\n */\n\tpublic synchronized void remove(GPoint vertex) {\n\t\tvertices.remove(vertex);\n\t}\n\n/* Method: clear() */\n/**\n * Removes all vertices from the list.\n */\n\tpublic synchronized void clear() {\n\t\tvertices.clear();\n\t}\n\n/* Method: size() */\n/**\n * Returns the number of vertices in the list.\n */\n\tpublic int size() {\n\t\treturn vertices.size();\n\t}\n\n/* Method: getCurrentPoint() */\n/**\n * Returns the coordinates of the last vertex added to the polygon, or <code>null</code>\n * if the polygon is empty.\n */\n\tpublic GPoint getCurrentPoint() {\n\t\treturn (vertices.size() == 0) ? null : new GPoint(cx, cy);\n\t}\n\n/* Method: getBounds(x0, y0, xScale, yScale, rotation) */\n/**\n * Returns the bounding box for the polygon.\n */\n\tpublic synchronized GRectangle getBounds(double x0, double y0, double xScale, double yScale, double rotation) {\n\t\tint nPoints = vertices.size();\n\t\tif (nPoints == 0) return new GRectangle();\n\t\tdouble xMin = 0;\n\t\tdouble xMax = 0;\n\t\tdouble yMin = 0;\n\t\tdouble yMax = 0;\n\t\tdouble sinTheta = GMath.sinDegrees(rotation);\n\t\tdouble cosTheta = GMath.cosDegrees(rotation);\n\t\tboolean first = true;\n\t\tfor (int i = 0; i < vertices.size(); i++) {\n\t\t\tGPoint vertex = vertices.get(i);\n\t\t\tdouble x = x0 + xScale * (cosTheta * vertex.getX() + sinTheta * vertex.getY());\n\t\t\tdouble y = y0 + yScale * (cosTheta * vertex.getY() - sinTheta * vertex.getX());\n\t\t\tif (first) {\n\t\t\t\txMin = x;\n\t\t\t\txMax = x;\n\t\t\t\tyMin = y;\n\t\t\t\tyMax = y;\n\t\t\t\tfirst = false;\n\t\t\t} else {\n\t\t\t\txMin = Math.min(xMin, x);\n\t\t\t\txMax = Math.max(xMax, x);\n\t\t\t\tyMin = Math.min(yMin, y);\n\t\t\t\tyMax = Math.max(yMax, y);\n\t\t\t}\n\t\t}\n\t\treturn new GRectangle(xMin, yMin, xMax - xMin, yMax - yMin);\n\t}\n\n/* Method: contains(x, y) */\n/**\n * Returns <code>true</code> if the polygon described by this\n * <code>VertexList</code> contains the specified point.\n */\n\tpublic synchronized boolean contains(double x, double y) {\n\t\tint nPoints = vertices.size();\n\t\tboolean isContained = false;\n\t\tfor (int i = 0; i < nPoints; i++) {\n\t\t\tGPoint v1 = vertices.get(i);\n\t\t\tGPoint v2 = vertices.get((i + 1) % nPoints);\n\t\t\tif (((v1.getY() < y) && (v2.getY() >= y)) || ((v2.getY() < y) && (v1.getY() >= y))) {\n\t\t\t\tif (v1.getX() + (y - v1.getY()) / (v2.getY() - v1.getY()) * (v2.getX() - v1.getX()) < x) {\n\t\t\t\t\tisContained = !isContained;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn isContained;\n\t}\n\n/* Method: createPolygon(x0, y0, xScale, yScale, rotation) */\n/**\n * Creates a <code>java.awt</code> <code>Polygon</code>.\n */\n\tpublic synchronized Polygon createPolygon(double x0, double y0, double xScale, double yScale, double rotation) {\n\t\tdouble sinTheta = GMath.sinDegrees(rotation);\n\t\tdouble cosTheta = GMath.cosDegrees(rotation);\n\t\tPolygon poly = new Polygon();\n\t\tfor (int i = 0; i < vertices.size(); i++) {\n\t\t\tGPoint vertex = vertices.get(i);\n\t\t\tdouble x = x0 + xScale * (cosTheta * vertex.getX() + sinTheta * vertex.getY());\n\t\t\tdouble y = y0 + yScale * (cosTheta * vertex.getY() - sinTheta * vertex.getX());\n\t\t\tpoly.addPoint(GMath.round(x), GMath.round(y));\n\t\t}\n\t\treturn poly;\n\t}\n\n/* Method: recenter() */\n/**\n * Recalculates the vertices of the polygon so that they are positioned\n * relative to the geometric center of the object.  This method allows\n * clients to take a polygon drawn using mouse clicks on the screen and\n * then to reformulate it so that it can be displayed relative to its center.\n */\n\tpublic void recenter() {\n\t\tdouble xMin = 0;\n\t\tdouble xMax = 0;\n\t\tdouble yMin = 0;\n\t\tdouble yMax = 0;\n\t\tboolean first = true;\n\t\tfor (int i = 0; i < vertices.size(); i++) {\n\t\t\tGPoint vertex = vertices.get(i);\n\t\t\tif (first) {\n\t\t\t\txMin = vertex.getX();\n\t\t\t\txMax = vertex.getX();\n\t\t\t\tyMin = vertex.getY();\n\t\t\t\tyMax = vertex.getY();\n\t\t\t\tfirst = false;\n\t\t\t} else {\n\t\t\t\txMin = Math.min(xMin, vertex.getX());\n\t\t\t\txMax = Math.max(xMax, vertex.getX());\n\t\t\t\tyMin = Math.min(yMin, vertex.getY());\n\t\t\t\tyMax = Math.max(yMax, vertex.getY());\n\t\t\t}\n\t\t}\n\t\tdouble xc = (xMin + xMax) / 2;\n\t\tdouble yc = (yMin + yMax) / 2;\n\t\tfor (int i = 0; i < vertices.size(); i++ ) {\n\t\t\tGPoint vertex = vertices.get(i);\n\t\t\tvertex.translate(-xc, -yc);\n\t\t}\n\t}\n\n/* Private instance variables */\n\tprivate ArrayList<GPoint> vertices;\n\tprivate double cx;\n\tprivate double cy;\n\n};\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/graphics/GRect.java",
    "content": "/*\n * @(#)GRect.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Feature enhancement 26-May-08 (ESR)\n//   1. Added support for serialization.\n//   2. Revised bounding box calculation to conform to Java standard.\n\npackage acm.graphics;\n\nimport java.awt.*;\n\n/* Class: GRect */\n/**\n * The <code>GRect</code> class is a graphical object whose appearance consists\n * of a rectangular box.\n */\npublic class GRect extends GObject\n  implements GFillable, GResizable, GScalable {\n\n/* Constructor: GRect(width, height) */\n/**\n * Constructs a new rectangle with the specified width and height,\n * positioned at the origin.\n *\n * @usage GRect grect = new GRect(width, height);\n * @param width The width of the rectangle in pixels\n * @param height The height of the rectangle in pixels\n */\n\tpublic GRect(double width, double height) {\n\t\tthis(0, 0, width, height);\n\t}\n\n/* Constructor: GRect(x, y, width, height) */\n/**\n * Constructs a new rectangle with the specified bounds.\n *\n * @usage GRect grect = new GRect(x, y, width, height);\n * @param x The x-coordinate of the upper left corner\n * @param y The y-coordinate of the upper left corner\n * @param width The width of the rectangle in pixels\n * @param height The height of the rectangle in pixels\n */\n\tpublic GRect(double x, double y, double width, double height) {\n\t\tframeWidth = width;\n\t\tframeHeight = height;\n\t\tsetLocation(x, y);\n\t}\n\n/* Method: paint(g) */\n/**\n * Implements the <code>paint</code> operation for this graphical object.  This method\n * is not called directly by clients.\n * @noshow\n */\n\tpublic void paint(Graphics g) {\n\t\tRectangle r = getAWTBounds();\n\t\tif (isFilled()) {\n\t\t\tg.setColor(getFillColor());\n\t\t\tg.fillRect(r.x, r.y, r.width, r.height);\n\t\t\tg.setColor(getColor());\n\t\t}\n\t\tg.drawRect(r.x, r.y, r.width, r.height);\n\t}\n\n/* Method: setFilled(fill) */\n/**\n * Sets whether this object is filled.\n *\n * @usage gobj.setFilled(fill);\n * @param fill <code>true</code> if the object should be filled, <code>false</code> for an outline\n */\n\tpublic void setFilled(boolean fill) {\n\t\tisFilled = fill;\n\t\trepaint();\n\t}\n\n/* Method: isFilled() */\n/**\n * Returns whether this object is filled.\n *\n * @usage if (gobj.isFilled()) . . .\n * @return The color used to display the object\n */\n\tpublic boolean isFilled() {\n\t\treturn isFilled;\n\t}\n\n/* Method: setFillColor(color) */\n/**\n * Sets the color used to display the filled region of this object.\n *\n * @usage gobj.setFillColor(color);\n * @param color The color used to display the filled region of this object\n */\n\tpublic void setFillColor(Color color) {\n\t\tfillColor = color;\n\t\trepaint();\n\t}\n\n/* Method: getFillColor() */\n/**\n * Returns the color used to display the filled region of this object.  If\n * none has been set, <code>getFillColor</code> returns the color of the\n * object.\n *\n * @usage Color color = gobj.getFillColor();\n * @return The color used to display the filled region of this object\n */\n\tpublic Color getFillColor() {\n\t\treturn (fillColor == null) ? getColor() : fillColor;\n\t}\n\n/* Method: setSize(width, height) */\n/**\n * Changes the size of this object to the specified width and height.\n *\n * @usage gobj.setSize(width, height);\n * @param width The new width of the object\n * @param height The new height of the object\n */\n\tpublic void setSize(double width, double height) {\n\t\tframeWidth = width;\n\t\tframeHeight = height;\n\t\trepaint();\n\t}\n\n/* Method: setSize(size) */\n/**\n * Changes the size of this object to the specified <code>GDimension</code>.\n *\n * @usage gobj.setSize(size);\n * @param size A <code>GDimension</code> object specifying the size\n * @noshow\n */\n\tpublic final void setSize(GDimension size) {\n\t\tsetSize(size.getWidth(), size.getHeight());\n\t}\n\n/* Method: getSize() */\n/**\n * Returns the size of this object as a <code>GDimension</code>.\n *\n * @usage GDimension size = gobj.getSize();\n * @return The size of this object\n */\n\tpublic GDimension getSize() {\n\t\treturn new GDimension(frameWidth, frameHeight);\n\t}\n\n/* Method: setBounds(x, y, width, height) */\n/**\n * Changes the bounds of this object to the specified values.\n *\n * @usage gobj.setBounds(x, y, width, height);\n * @param x The new x-coordinate for the object\n * @param y The new y-coordinate for the object\n * @param width The new width of the object\n * @param height The new height of the object\n */\n\tpublic void setBounds(double x, double y, double width, double height) {\n\t\tframeWidth = width;\n\t\tframeHeight = height;\n\t\tsetLocation(x, y);\n\t}\n\n/* Method: setBounds(bounds) */\n/**\n * Changes the bounds of this object to the values from the specified\n * <code>GRectangle</code>.\n *\n * @usage gobj.setBounds(bounds);\n * @param bounds A <code>GRectangle</code> specifying the new bounds\n */\n\tpublic final void setBounds(GRectangle bounds) {\n\t\tsetBounds(bounds.getX(), bounds.getY(), bounds.getWidth(), bounds.getHeight());\n\t}\n\n/* Method: getBounds() */\n/**\n * Returns the bounding box of this object.\n *\n * @usage GRectangle bounds = gobj.getBounds();\n * @return The bounding box for this object\n */\n\tpublic GRectangle getBounds() {\n\t\treturn new GRectangle(getX(), getY(), frameWidth, frameHeight);\n\t}\n\n/* Method: getWidth() */\n/**\n * Returns the width of this object as a double-precision value, which\n * is defined to be the width of the bounding box.\n *\n * @usage double width = gobj.getWidth();\n * @return The width of this object on the screen\n */\n\tpublic double getWidth() {\n\t\treturn frameWidth;\n\t}\n\n/* Method: getHeight() */\n/**\n * Returns the height of this object as a double-precision value, which\n * is defined to be the height of the bounding box.\n *\n * @usage double height = gobj.getHeight();\n * @return The height of this object on the screen\n */\n\tpublic double getHeight() {\n\t\treturn frameHeight;\n\t}\n\n/* Method: scale(sx, sy) */\n/**\n * Scales the object on the screen by the scale factors <code>sx</code> and <code>sy</code>.\n *\n * @usage gobj.scale(sx, sy);\n * @param sx The factor used to scale all coordinates in the x direction\n * @param sy The factor used to scale all coordinates in the y direction\n */\n\tpublic void scale(double sx, double sy) {\n\t\tframeWidth *= sx;\n\t\tframeHeight *= sy;\n\t\trepaint();\n\t}\n\n/* Method: scale(sf) */\n/**\n * Scales the object on the screen by the scale factor <code>sf</code>, which applies\n * in both dimensions.\n *\n * @usage gobj.scale(sf);\n * @param sf The factor used to scale all coordinates in both dimensions\n */\n\tpublic final void scale(double sf) {\n\t\tscale(sf, sf);\n\t}\n\n/* Inherited method: setLocation(x, y) */\n/**\n * @inherited GObject#void setLocation(double x, double y)\n * Sets the location of this object to the point (<code>x</code>, <code>y</code>).\n */\n\n/* Inherited method: setLocation(pt) */\n/**\n * @inherited GObject#void setLocation(GPoint pt)\n * Sets the location of this object to the specified point.\n */\n\n/* Inherited method: getLocation() */\n/**\n * @inherited GObject#GPoint getLocation()\n * Returns the location of this object as a <code>GPoint</code>.\n */\n\n/* Inherited method: getX() */\n/**\n * @inherited GObject#double getX()\n * Returns the x-coordinate of the object.\n */\n\n/* Inherited method: getY() */\n/**\n * @inherited GObject#double getY()\n * Returns the y-coordinate of the object.\n */\n\n/* Inherited method: move(dx, dy) */\n/**\n * @inherited GObject#void move(double dx, double dy)\n * Moves the object on the screen using the displacements <code>dx</code> and <code>dy</code>.\n */\n\n/* Inherited method: movePolar(r, theta) */\n/**\n * @inherited GObject#void movePolar(double r, double theta)\n * Moves the object using displacements given in polar coordinates.\n */\n\n/* Inherited method: contains(x, y) */\n/**\n * @inherited GObject#boolean contains(double x, double y)\n * Checks to see whether a point is inside the object.\n */\n\n/* Inherited method: contains(pt) */\n/**\n * @inherited GObject#boolean contains(GPoint pt)\n * Checks to see whether a point is inside the object.\n */\n\n/* Inherited method: sendToFront() */\n/**\n * @inherited GObject#void sendToFront()\n * Moves this object to the front of the display in the <i>z</i> dimension.\n */\n\n/* Inherited method: sendToBack() */\n/**\n * @inherited GObject#void sendToBack()\n * Moves this object to the back of the display in the <i>z</i> dimension.\n */\n\n/* Inherited method: sendForward() */\n/**\n * @inherited GObject#void sendForward()\n * Moves this object one step toward the front in the <i>z</i> dimension.\n */\n\n/* Inherited method: sendBackward() */\n/**\n * @inherited GObject#void sendBackward()\n * Moves this object one step toward the back in the <i>z</i> dimension.\n */\n\n/* Inherited method: setColor(color) */\n/**\n * @inherited GObject#void setColor(Color color)\n * Sets the color used to display this object.\n */\n\n/* Inherited method: getColor() */\n/**\n * @inherited GObject#Color getColor()\n * Returns the color used to display this object.\n */\n\n/* Inherited method: setVisible(visible) */\n/**\n * @inherited GObject#void setVisible(boolean visible)\n * Sets whether this object is visible.\n */\n\n/* Inherited method: isVisible() */\n/**\n * @inherited GObject#boolean isVisible()\n * Checks to see whether this object is visible.\n */\n\n/* Inherited method: addMouseListener(listener) */\n/**\n * @inherited GObject#void addMouseListener(MouseListener listener)\n * Adds a mouse listener to this graphical object.\n */\n\n/* Inherited method: removeMouseListener(listener) */\n/**\n * @inherited GObject#void removeMouseListener(MouseListener listener)\n * Removes a mouse listener from this graphical object.\n */\n\n/* Inherited method: addMouseMotionListener(listener) */\n/**\n * @inherited GObject#void addMouseMotionListener(MouseMotionListener listener)\n * Adds a mouse motion listener to this graphical object.\n */\n\n/* Inherited method: removeMouseMotionListener(listener) */\n/**\n * @inherited GObject#void removeMouseMotionListener(MouseMotionListener listener)\n * Removes a mouse motion listener from this graphical object.\n */\n\n/* Protected method: getAWTBounds() */\n/**\n * Returns an AWT <code>Rectangle</code> that specifies the bounds of this object.\n *\n * @usage Rectangle r = grect.getAWTBounds();\n * @return A <code>Rectangle</code> that specifies the bounds of this object\n */\n\tprotected Rectangle getAWTBounds() {\n\t\treturn new Rectangle(GMath.round(getX()), GMath.round(getY()), GMath.round(frameWidth), GMath.round(frameHeight));\n\t}\n\n/* Private instance variables */\n\tprivate double frameWidth;\n\tprivate double frameHeight;\n\tprivate boolean isFilled;\n\tprivate Color fillColor;\n\n/* Serial version UID */\n/**\n * The serialization code for this class.  This value should be incremented\n * whenever you change the structure of this class in an incompatible way,\n * typically by adding a new instance variable.\n */\n\tstatic final long serialVersionUID = 1L;\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/graphics/GRectangle.java",
    "content": "/*\n * @(#)GRectangle.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Performance improvement 23-Jan-07 (ESR)\n//   1. Changed hashCode implementation for better performance.\n//\n// Feature enhancement 26-May-08 (ESR)\n//   1. Added support for serialization.\n\npackage acm.graphics;\n\nimport java.awt.*;\nimport java.io.*;\n\n/* Class: GRectangle */\n/**\n * This class is a double-precision version of the <code>Rectangle</code> class\n * in <code>java.awt</code>.\n */\npublic class GRectangle implements Serializable {\n\n/* Constructor: GRectangle() */\n/**\n * Constructs a new empty <code>GRectangle</code>.\n *\n * @usage rect = new GRectangle();\n */\n\tpublic GRectangle() {\n\t\tthis(0, 0, 0, 0);\n\t}\n\n/* Constructor: GRectangle(x, y, width, height) */\n/**\n * Constructs a new <code>GRectangle</code> with the specified coordinates and size.\n *\n * @usage rect = new GRectangle(x, y, width, height);\n * @param x The x-coordinate of the rectangle\n * @param y The y-coordinate of the rectangle\n * @param width The width of the rectangle\n * @param height The height of the rectangle\n */\n\tpublic GRectangle(double x, double y, double width, double height) {\n\t\txc = x;\n\t\tyc = y;\n\t\tmyWidth = width;\n\t\tmyHeight = height;\n\t}\n\n/* Constructor: GRectangle(width, height) */\n/**\n * Constructs a <code>GRectangle</code> at the origin with the specified width and height.\n *\n * @usage rect = new GRectangle(width, height);\n * @param width The width of the rectangle\n * @param height The height of the rectangle\n */\n\tpublic GRectangle(double width, double height) {\n\t\tthis(0, 0, width, height);\n\t}\n\n/* Constructor: GRectangle(pt, size) */\n/**\n * Constructs a new <code>GRectangle</code> with the specified location and size.\n *\n * @usage rect = new GRectangle(pt, size);\n * @param pt The location of the upper left corner of the rectangle\n * @param size The dimensions of the rectangle\n */\n\tpublic GRectangle(GPoint pt, GDimension size) {\n\t\tthis(pt.getX(), pt.getY(), size.getWidth(), size.getHeight());\n\t}\n\n/* Constructor: GRectangle(pt) */\n/**\n * Constructs a new empty <code>GRectangle</code> at the specified location.\n *\n * @usage rect = new GRectangle(pt);\n * @param pt The location of the upper left corner of the rectangle\n */\n\tpublic GRectangle(GPoint pt) {\n\t\tthis(pt.getX(), pt.getY(), 0, 0);\n\t}\n\n/* Constructor: GRectangle(size) */\n/**\n * Constructs a new <code>GRectangle</code> at the origin with the specified size.\n *\n * @usage rect = new GRectangle(size);\n * @param size The dimensions of the rectangle\n */\n\tpublic GRectangle(GDimension size) {\n\t\tthis(0, 0, size.getWidth(), size.getHeight());\n\t}\n\n/* Constructor: GRectangle(r) */\n/**\n * Constructs a new <code>GRectangle</code> from an existing one.\n *\n * @usage rect = new GRectangle(r);\n * @param r The original rectangle\n */\n\tpublic GRectangle(GRectangle r) {\n\t\tthis(r.xc, r.yc, r.myWidth, r.myHeight);\n\t}\n\n/* Method: getX() */\n/**\n * Returns the x coordinate of this <code>GRectangle</code>.\n *\n * @usage x = rect.getX();\n * @return The x coordinate of this <code>GRectangle</code>\n */\n\tpublic double getX() {\n\t\treturn xc;\n\t}\n\n/* Method: getY() */\n/**\n * Returns the y coordinate of this <code>GRectangle</code>.\n *\n * @usage y = rect.getY();\n * @return The y coordinate of this <code>GRectangle</code>\n */\n\tpublic double getY() {\n\t\treturn yc;\n\t}\n\n/* Method: getWidth() */\n/**\n * Returns the width of this <code>GDimension</code>.\n *\n * @usage width = rect.getWidth();\n * @return The width of this <code>GDimension</code>\n */\n\tpublic double getWidth() {\n\t\treturn myWidth;\n\t}\n\n/* Method: getHeight() */\n/**\n * Returns the height of this <code>GDimension</code>.\n *\n * @usage height = rect.getHeight();\n * @return The height of this <code>GDimension</code>\n */\n\tpublic double getHeight() {\n\t\treturn myHeight;\n\t}\n\n/* Method: setBounds(x, y, width, height) */\n/**\n * Sets the components of a <code>GRectangle</code> from the specified values.\n *\n * @usage rect.setBounds(x, y, width, height);\n * @param x The x-coordinate of the rectangle\n * @param y The y-coordinate of the rectangle\n * @param width The width of the rectangle\n * @param height The height of the rectangle\n */\n\tpublic void setBounds(double x, double y, double width, double height) {\n\t\txc = x;\n\t\tyc = y;\n\t\tmyWidth = width;\n\t\tmyHeight = height;\n\t}\n\n/* Method: setBounds(pt, size) */\n/**\n * Sets the components of a <code>GRectangle</code> from the specified location and size.\n *\n * @usage rect.setBounds(pt, size);\n * @param pt The location of the upper left corner of the rectangle\n * @param size The dimensions of the rectangle\n */\n\tpublic void setBounds(GPoint pt, GDimension size) {\n\t\tsetBounds(pt.getX(), pt.getY(), size.getWidth(), size.getHeight());\n\t}\n\n/* Method: setBounds(bounds) */\n/**\n * Sets the bounds of one <code>GRectangle</code> equal to that of another.\n *\n * @usage rect.setBounds(bounds);\n * @param bounds A <code>GRectangle</code> specifying the new bounds\n */\n\tpublic void setBounds(GRectangle bounds) {\n\t\tsetBounds(bounds.xc, bounds.yc, bounds.myWidth, bounds.myHeight);\n\t}\n\n/* Method: getBounds() */\n/**\n * Returns a new <code>GRectangle</code> whose bounds are the same as this one.\n *\n * @usage r = rect.getBounds();\n * @return A new rectangle with the same bounds\n */\n\tpublic GRectangle getBounds() {\n\t\treturn new GRectangle(this);\n\t}\n\n/* Method: setLocation(x, y) */\n/**\n * Sets the location of the <code>GRectangle</code> to the specified <code>x</code>\n * and <code>y</code> values.\n *\n * @usage rect.setLocation(x, y);\n * @param x The new x-coordinate for the rectangle\n * @param y The new y-coordinate for the rectangle\n */\n\tpublic void setLocation(double x, double y) {\n\t\txc = x;\n\t\tyc = y;\n\t}\n\n/* Method: setLocation(pt) */\n/**\n * Sets the location of the <code>GRectangle</code> to the specified point.\n *\n * @usage rect.setLocation(pt);\n * @param pt The new location for the rectangle\n */\n\tpublic void setLocation(GPoint pt) {\n\t\tsetLocation(pt.getX(), pt.getY());\n\t}\n\n/* Method: getLocation() */\n/**\n * Returns a new <code>GPoint</code> with the location of the rectangle.\n *\n * @usage pt = rect.getLocation();\n * @return The location of the rectangle as a <code>GPoint</code>\n */\n\tpublic GPoint getLocation() {\n\t\treturn new GPoint(xc, yc);\n\t}\n\n/* Method: translate(dx, dy) */\n/**\n * Adjusts the coordinates of a rectangle by the specified <code>dx</code> and\n * <code>dy</code> offsets.\n *\n * @usage rect.translate(dx, dy);\n * @param dx The change in the x direction (positive is rightward)\n * @param dy The change in the y direction (positive is downward)\n */\n\tpublic void translate(double dx, double dy) {\n\t\txc += dx;\n\t\tyc += dy;\n\t}\n\n/* Method: setSize(width, height) */\n/**\n * Sets the size of the <code>GRectangle</code> to the specified values.\n *\n * @usage rect.setSize(width, height);\n * @param width The new width of the rectangle\n * @param height The new height of the rectangle\n */\n\tpublic void setSize(double width, double height) {\n\t\tmyWidth = width;\n\t\tmyHeight = height;\n\t}\n\n/* Method: setSize(size) */\n/**\n * Sets the size of the <code>GRectangle</code> to the specified dimension.\n *\n * @usage rect.setSize(size);\n * @param size The new dimensions of the rectangle\n */\n\tpublic void setSize(GDimension size) {\n\t\tsetSize(size.getWidth(), size.getHeight());\n\t}\n\n/* Method: getSize() */\n/**\n * Returns a new <code>GDimension</code> object with the size of the <code>GRectangle</code>.\n * @usage size = rect.getSize();\n * @return The size of the rectangle as a <code>GDimension</code>\n */\n\tpublic GDimension getSize() {\n\t\treturn new GDimension(myWidth, myHeight);\n\t}\n\n/* Method: grow(dx, dy) */\n/**\n * Adjusts the edges of a rectangle by the specified <code>dx</code> and <code>dy</code>\n * offsets along each of its borders.\n *\n * @usage rect.grow(dx, dy);\n * @param dx The offset to extend each of the left and right borders\n * @param dy The offset to extend each of the top and bottom borders\n */\n\tpublic void grow(double dx, double dy) {\n\t\txc -= dx;\n\t\tyc -= dy;\n\t\tmyWidth += 2 * dx;\n\t\tmyHeight += 2 * dy;\n\t}\n\n/* Method: isEmpty() */\n/**\n * Returns <code>true</code> if the rectangle is empty.\n *\n * @usage if (rect.isEmpty()) . . .\n * @return <code>true</code> if the rectangle is empty, and <code>false</code> otherwise\n */\n\tpublic boolean isEmpty() {\n\t\treturn myWidth <= 0 || myHeight <= 0;\n\t}\n\n/* Method: contains(x, y) */\n/**\n * Returns <code>true</code> if the <code>GRectangle</code> contains the specified point.\n *\n * @usage if (rect.contains(x, y)) . . .\n * @param x The x-coordinate of the point being tested\n * @param y The y-coordinate of the point being tested\n * @return <code>true</code> if the rectangle contains (<code>x</code>,&nbsp;<code>y</code>),\n *         and <code>false</code> otherwise\n */\n\tpublic boolean contains(double x, double y) {\n\t\treturn x >= xc && y >= yc && x < xc + myWidth && y < yc + myHeight;\n\t}\n\n/* Method: contains(pt) */\n/**\n * Returns <code>true</code> if the <code>GRectangle</code> contains the specified point.\n *\n * @usage if (rect.contains(pt)) . . .\n * @param pt The point being tested\n * @return <code>true</code> if the rectangle contains <code>pt</code>,\n *         and <code>false</code> otherwise\n */\n\tpublic boolean contains(GPoint pt) {\n\t\treturn contains(pt.getX(), pt.getY());\n\t}\n\n/* Method: intersects(r2) */\n/**\n * Returns <code>true</code> if <code>r1</code> and <code>r2</code> have a nonempty\n * intersection.\n *\n * @usage if (r1.intersects(r2)) . . .\n * @param r2 A second rectangle\n * @return <code>true</code> if the two rectangles intersect, and <code>false</code> otherwise\n */\n\tpublic boolean intersects(GRectangle r2) {\n\t\tGRectangle r1 = this;\n\t\tif (r1.xc > r2.xc + r2.myWidth) return false;\n\t\tif (r1.yc > r2.yc + r2.myHeight) return false;\n\t\tif (r2.xc > r1.xc + r1.myWidth) return false;\n\t\tif (r2.yc > r1.yc + r1.myHeight) return false;\n\t\treturn true;\n\t}\n\n/* Method: intersection(r2) */\n/**\n * Returns the largest rectangle that is contained in both\n * <code>r1</code> and <code>r2</code>.\n *\n * @usage r3 = r1.intersection(r2);\n * @param r2 A second rectangle\n * @return The intersection of this rectangle and <code>r2</code>\n */\n\tpublic GRectangle intersection(GRectangle r2) {\n\t\tGRectangle r1 = this;\n\t\tdouble x1 = Math.max(r1.xc, r2.xc);\n\t\tdouble y1 = Math.max(r1.yc, r2.yc);\n\t\tdouble x2 = Math.min(r1.xc + r1.myWidth, r2.xc + r2.myWidth);\n\t\tdouble y2 = Math.min(r1.yc + r1.myHeight, r2.yc + r2.myHeight);\n\t\treturn new GRectangle(x1, y1, x2 - x1, y2 - y1);\n\t}\n\n/* Method: union(r) */\n/**\n * Returns the smallest rectangle that contains both\n * <code>r1</code> and <code>r2</code>.\n *\n * @usage r3 = r1.union(r2);\n * @param r2 A second rectangle\n * @return The union of this rectangle and <code>r2</code>\n */\n\tpublic GRectangle union(GRectangle r2) {\n\t\tif (isEmpty()) return new GRectangle(r2);\n\t\tif (r2.isEmpty()) return new GRectangle(this);\n\t\tGRectangle r1 = this;\n\t\tdouble x1 = Math.min(r1.xc, r2.xc);\n\t\tdouble y1 = Math.min(r1.yc, r2.yc);\n\t\tdouble x2 = Math.max(r1.xc + r1.myWidth, r2.xc + r2.myWidth);\n\t\tdouble y2 = Math.max(r1.yc + r1.myHeight, r2.yc + r2.myHeight);\n\t\treturn new GRectangle(x1, y1, x2 - x1, y2 - y1);\n\t}\n\n/* Method: add(r) */\n/**\n * Adjusts the bounds of the current <code>GRectangle</code> so that it contains\n * the rectangle represented by the argument.\n *\n * @usage rect.add(r);\n * @param r A new rectangle to include in this one\n */\n\tpublic void add(GRectangle r) {\n\t\tif (r.isEmpty()) return;\n\t\tif (isEmpty()) {\n\t\t\tsetBounds(r);\n\t\t\treturn;\n\t\t}\n\t\tdouble x2 = Math.max(xc + myWidth, r.xc + r.myWidth);\n\t\tdouble y2 = Math.max(yc + myHeight, r.yc + r.myHeight);\n\t\txc = Math.min(r.xc, xc);\n\t\tyc = Math.min(r.yc, yc);\n\t\tmyWidth = x2 - xc;\n\t\tmyHeight = y2 - yc;\n\t}\n\n/* Method: add(x, y) */\n/**\n * Adds the specified point to the rectangle.\n *\n * @usage rect.add(x, y);\n * @param x The x coordinate of the new point\n * @param y The y coordinate of the new point\n */\n\tpublic void add(double x, double y) {\n\t\tif (isEmpty()) {\n\t\t\tsetBounds(x, y, 0, 0);\n\t\t\treturn;\n\t\t}\n\t\tdouble x2 = Math.max(x + myWidth, x);\n\t\tdouble y2 = Math.max(y + myHeight, y);\n\t\txc = Math.min(x, xc);\n\t\tyc = Math.min(y, yc);\n\t\tmyWidth = x2 - xc;\n\t\tmyHeight = y2 - yc;\n\t}\n\n/* Method: toRectangle() */\n/**\n * Converts this <code>GRectangle</code> to the nearest integer-based <code>Rectangle</code>.\n *\n * @usage size = dim.toRectangle();\n * @return The closest integer-based <code>Rectangle</code>\n */\n\tpublic Rectangle toRectangle() {\n\t\treturn new Rectangle((int) Math.round(xc), (int) Math.round(yc),\n\t\t                     (int) Math.round(myWidth), (int) Math.round(myHeight));\n\t}\n\n/* Method: hashCode() */\n/**\n * Returns an integer hash code for the rectangle.  The hash code for a\n * <code>GRectangle</code> is constructed from the hash codes from the\n * <code>float</code> values of the coordinates, which are the ones used in the\n * <code>equals</code> method.\n *\n * @usage hash = rect.hashCode();\n * @return The hash code for this rectangle\n * @noshow\n */\n\tpublic int hashCode() {\n\t\tint hash = new Float((float) xc).hashCode();\n\t\thash = (37 * hash) ^ new Float((float) yc).hashCode();\n\t\thash = (37 * hash) ^ new Float((float) myWidth).hashCode();\n\t\thash = (37 * hash) ^ new Float((float) myHeight).hashCode();\n\t\treturn hash;\n\t}\n\n/* Method: equals(obj) */\n/**\n * Tests whether two <code>GRectangle</code> objects are equal.\n * Because floating-point values are inexact, this method checks for\n * equality by comparing the <code>float</code> values (rather than the\n * <code>double</code> values) of the coordinates.\n *\n * @usage if (rect.equals(obj)) . . .\n * @param obj Any object\n * @return <code>true</code> if the <code>obj</code> is a <code>GRectangle</code>\n *         equal to this one, and <code>false</code> otherwise\n * @noshow\n */\n\tpublic boolean equals(Object obj) {\n\t\tif (!(obj instanceof GRectangle)) return false;\n\t\tGRectangle r = (GRectangle) obj;\n\t\tif ((float) xc != (float) r.xc) return false;\n\t\tif ((float) yc != (float) r.yc) return false;\n\t\tif ((float) myWidth != (float) r.myWidth) return false;\n\t\tif ((float) myHeight != (float) r.myHeight) return false;\n\t\treturn true;\n\t}\n\n/* Method: toString() */\n/**\n * Converts this <code>GRectangle</code> to its string representation.\n *\n * @usage str = rect.toString();\n * @return A string representation of this rectangle\n * @noshow\n */\n\tpublic String toString() {\n\t\treturn \"[\" + (float) xc + \", \" + (float) yc + \", \"\n\t\t\t\t\t  + (float) myWidth + \"x\" + (float) myHeight + \"]\";\n\t}\n\n/* Private instance variables */\n\tprivate double xc;\n\tprivate double yc;\n\tprivate double myWidth;\n\tprivate double myHeight;\n\n/* Serial version UID */\n/**\n * The serialization code for this class.  This value should be incremented\n * whenever you change the structure of this class in an incompatible way,\n * typically by adding a new instance variable.\n */\n\tstatic final long serialVersionUID = 1L;\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/graphics/GResizable.java",
    "content": "/*\n * @(#)GResizable.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\npackage acm.graphics;\n\n/* Interface: GResizable */\n/**\n * Specifies the characteristics of a graphical object that supports the\n * <code>setSize</code> and <code>setBounds</code> methods.\n */\npublic interface GResizable {\n\n/* Method: setSize(width, height) */\n/**\n * Changes the size of this object to the specified width and height.\n *\n * @usage gobj.setSize(width, height);\n * @param width The new width of the object\n * @param height The new height of the object\n */\n\tpublic void setSize(double width, double height);\n\n/* Method: setSize(size) */\n/**\n * Changes the size of this object as specified by the <code>GDimension</code>\n * object.\n *\n * @usage gobj.setSize(size);\n * @param size A <code>GDimension</code> object specifying the new size\n */\n\tpublic void setSize(GDimension size);\n\n/* Method: setBounds(x, y, width, height) */\n/**\n * Changes the bounds of this object to the specified values.\n *\n * @usage gobj.setBounds(x, y, width, height);\n * @param x The new x-coordinate for the object\n * @param y The new y-coordinate for the object\n * @param width The new width of the object\n * @param height The new height of the object\n */\n\tpublic void setBounds(double x, double y, double width, double height);\n\n/* Method: setBounds(bounds) */\n/**\n * Changes the bounds of this object to the values from the specified\n * <code>GRectangle</code>.\n *\n * @usage gobj.setBounds(bounds);\n * @param bounds A <code>GRectangle</code> specifying the new bounds\n */\n\tpublic void setBounds(GRectangle bounds);\n\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/graphics/GRoundRect.java",
    "content": "/*\n * @(#)GRoundRect.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// -- V2.0 --\n// Bug fix 26-Apr-07 (ESR, JTFBug 2007-005, reported by Leland Beck)\n//   1. Fixed problems with cross-file references to ArcRenderer.\n//\n// Feature enhancement 26-May-08 (ESR)\n//   1. Added support for serialization.\n\npackage acm.graphics;\n\nimport java.awt.*;\n\n/* Class: GRoundRect */\n/**\n * The <code>GRoundRect</code> class is a graphical object whose appearance consists\n * of a rounded rectangle.\n */\npublic class GRoundRect extends GRect {\n\n/* Constant: DEFAULT_ARC */\n/**\n * The default arc diameter used for the corners of a rounded rectangle.\n */\n\tpublic static final double DEFAULT_ARC = 10;\n\n/* Constructor: GRoundRect(width, height) */\n/**\n * Constructs a new rounded rectangle with the specified width and height,\n * positioned at the origin.\n *\n * @usage GRoundRect rr = new GRoundRect(width, height);\n * @param width The width of the rectangle in pixels\n * @param height The height of the rectangle in pixels\n */\n\tpublic GRoundRect(double width, double height) {\n\t\tthis(0, 0, width, height, DEFAULT_ARC);\n\t}\n\n/* Constructor: GRoundRect(x, y, width, height) */\n/**\n * Constructs a new rounded rectangle with the specified bounds.\n *\n * @usage GRoundRect rr = new GRoundRect(x, y, width, height);\n * @param x The x-coordinate of the upper left corner\n * @param y The y-coordinate of the upper left corner\n * @param width The width of the rectangle in pixels\n * @param height The height of the rectangle in pixels\n */\n\tpublic GRoundRect(double x, double y, double width, double height) {\n\t\tthis(x, y, width, height, DEFAULT_ARC);\n\t}\n\n/* Constructor: GRoundRect(x, y, width, height, arcSize) */\n/**\n * Constructs a new rounded rectangle with the specified bounds and a single\n * parameter describing both the  describing the curvature at the corners.\n *\n * @usage GRoundRect rr = new GRoundRect(x, y, width, height, arcSize);\n * @param x The x-coordinate of the upper left corner\n * @param y The y-coordinate of the upper left corner\n * @param width The width of the rectangle in pixels\n * @param height The height of the rectangle in pixels\n * @param arcSize The diameter of the circle in place at each corner\n */\n\tpublic GRoundRect(double x, double y, double width, double height,\n\t                  double arcSize) {\n\t\tthis(x, y, width, height, arcSize, arcSize);\n\t}\n\n/* Constructor: GRoundRect(x, y, width, height, arcWidth, arcHeight) */\n/**\n * Constructs a new rounded rectangle with the specified bounds and\n * arc parameters describing the curvature at the corners.\n *\n * @usage GRoundRect rr = new GRoundRect(x, y, width, height, arcWidth, arcHeight);\n * @param x The x-coordinate of the upper left corner\n * @param y The y-coordinate of the upper left corner\n * @param width The width of the rectangle in pixels\n * @param height The height of the rectangle in pixels\n * @param arcWidth The width of the oval in place at each corner\n * @param arcHeight The height of the oval in place at each corner\n */\n\tpublic GRoundRect(double x, double y, double width, double height,\n\t                  double arcWidth, double arcHeight) {\n\t\tsuper(x, y, width, height);\n\t\taWidth = arcWidth;\n\t\taHeight = arcHeight;\n\t\trenderer = new GArc(this);\n\t}\n\n/* Method: getArcWidth() */\n/**\n * Returns the <i>x</i> component of the corner radius.\n *\n * @usage double arcWidth = rr.getArcWidth();\n * @return The <i>x</i> component of the corner radius, in pixels.\n */\n\tpublic double getArcWidth() {\n\t\treturn aWidth;\n\t}\n\n/* Method: getArcHeight() */\n/**\n * Returns the <i>y</i> component of the corner radius.\n *\n * @usage double arcHeight = rr.getArcHeight();\n * @return The <i>y</i> component of the corner radius, in pixels.\n */\n\tpublic double getArcHeight() {\n\t\treturn aHeight;\n\t}\n\n/* Method: paint(g) */\n/**\n * Implements the <code>paint</code> operation for this graphical object.  This method\n * is not called directly by clients.\n * @noshow\n */\n\tpublic void paint(Graphics g) {\n\t\tComponent comp = getComponent();\n\t\tif ((comp instanceof GCanvas) && !((GCanvas) comp).getNativeArcFlag()) {\n\t\t\trenderer.paint(g);\n\t\t} else {\n\t\t\tRectangle r = getAWTBounds();\n\t\t\tint iArcWidth = GMath.round(aWidth);\n\t\t\tint iArcHeight = GMath.round(aHeight);\n\t\t\tif (isFilled()) {\n\t\t\t\tg.setColor(getFillColor());\n\t\t\t\tg.fillRoundRect(r.x, r.y, r.width, r.height, iArcWidth, iArcHeight);\n\t\t\t\tg.setColor(getColor());\n\t\t\t}\n\t\t\tg.drawRoundRect(r.x, r.y, r.width, r.height, iArcWidth, iArcHeight);\n\t\t}\n\t}\n\n/* Inherited method: setLocation(x, y) */\n/**\n * @inherited GObject#void setLocation(double x, double y)\n * Sets the location of this object to the point (<code>x</code>, <code>y</code>).\n */\n\n/* Inherited method: setLocation(pt) */\n/**\n * @inherited GObject#void setLocation(GPoint pt)\n * Sets the location of this object to the specified point.\n */\n\n/* Inherited method: getLocation() */\n/**\n * @inherited GObject#GPoint getLocation()\n * Returns the location of this object as a <code>GPoint</code>.\n */\n\n/* Inherited method: getX() */\n/**\n * @inherited GObject#double getX()\n * Returns the x-coordinate of the object.\n */\n\n/* Inherited method: getY() */\n/**\n * @inherited GObject#double getY()\n * Returns the y-coordinate of the object.\n */\n\n/* Inherited method: move(dx, dy) */\n/**\n * @inherited GObject#void move(double dx, double dy)\n * Moves the object on the screen using the displacements <code>dx</code> and <code>dy</code>.\n */\n\n/* Inherited method: movePolar(r, theta) */\n/**\n * @inherited GObject#void movePolar(double r, double theta)\n * Moves the object using displacements given in polar coordinates.\n */\n\n/* Inherited method: scale(sx, sy) */\n/**\n * @inherited GObject#void scale(double sx, double sy)\n * Scales the object on the screen by the scale factors <code>sx</code> and <code>sy</code>.\n */\n\n/* Inherited method: scale(sf) */\n/**\n * @inherited GObject#void scale(double sf)\n * Scales the object on the screen by the scale factor <code>sf</code>, which applies\n * in both dimensions.\n */\n\n/* Inherited method: setSize(width, height) */\n/**\n * @inherited GObject#void setSize(double width, double height)\n * Changes the size of this object to the specified width and height.\n */\n\n/* Inherited method: getSize() */\n/**\n * @inherited GObject#GDimension getSize()\n * Returns the size of the bounding box for this object.\n */\n\n/* Inherited method: getWidth() */\n/**\n * @inherited GObject#double getWidth()\n * Returns the width of this object, which is defined to be\n * the width of the bounding box.\n */\n\n/* Inherited method: getHeight() */\n/**\n * @inherited GObject#double getHeight()\n * Returns the height of this object, which is defined to be\n * the height of the bounding box.\n */\n\n/* Inherited method: setBounds(x, y, width, height) */\n/**\n * @inherited GRect#void setBounds(double x, double y, double width, double height)\n * Changes the bounds of this object to the specified parameters.\n */\n\n/* Inherited method: setBounds(bounds) */\n/**\n * @inherited GRect#void setBounds(GRectangle bounds)\n * Changes the bounds of this object as specified.\n */\n\n/* Inherited method: getBounds() */\n/**\n * @inherited GObject#GRectangle getBounds()\n * Returns the bounding box for this object.\n */\n\n/* Inherited method: contains(x, y) */\n/**\n * @inherited GObject#boolean contains(double x, double y)\n * Checks to see whether a point is inside the object.\n */\n\n/* Inherited method: contains(pt) */\n/**\n * @inherited GObject#boolean contains(GPoint pt)\n * Checks to see whether a point is inside the object.\n */\n\n/* Inherited method: sendToFront() */\n/**\n * @inherited GObject#void sendToFront()\n * Moves this object to the front of the display in the <i>z</i> dimension.\n */\n\n/* Inherited method: sendToBack() */\n/**\n * @inherited GObject#void sendToBack()\n * Moves this object to the back of the display in the <i>z</i> dimension.\n */\n\n/* Inherited method: sendForward() */\n/**\n * @inherited GObject#void sendForward()\n * Moves this object one step toward the front in the <i>z</i> dimension.\n */\n\n/* Inherited method: sendBackward() */\n/**\n * @inherited GObject#void sendBackward()\n * Moves this object one step toward the back in the <i>z</i> dimension.\n */\n\n/* Inherited method: setColor(color) */\n/**\n * @inherited GObject#void setColor(Color color)\n * Sets the color used to display this object.\n */\n\n/* Inherited method: getColor() */\n/**\n * @inherited GObject#Color getColor()\n * Returns the color used to display this object.\n */\n\n/* Inherited method: setFillColor(color) */\n/**\n * @inherited GObject#void setFillColor(Color color)\n * Sets the color used to display the filled region of this object.\n */\n\n/* Inherited method: getFillColor() */\n/**\n * @inherited GObject#Color getFillColor()\n * Returns the color used to display the filled region of this object.\n */\n\n/* Inherited method: setFilled(fill) */\n/**\n * @inherited GObject#void setFilled(boolean fill)\n * Sets whether this object is filled.\n */\n\n/* Inherited method: isFilled() */\n/**\n * @inherited GObject#boolean isFilled()\n * Returns whether this object is filled.\n */\n\n/* Inherited method: setVisible(visible) */\n/**\n * @inherited GObject#void setVisible(boolean visible)\n * Sets whether this object is visible.\n */\n\n/* Inherited method: isVisible() */\n/**\n * @inherited GObject#boolean isVisible()\n * Checks to see whether this object is visible.\n */\n\n/* Inherited method: addMouseListener(listener) */\n/**\n * @inherited GObject#void addMouseListener(MouseListener listener)\n * Adds a mouse listener to this graphical object.\n */\n\n/* Inherited method: removeMouseListener(listener) */\n/**\n * @inherited GObject#void removeMouseListener(MouseListener listener)\n * Removes a mouse listener from this graphical object.\n */\n\n/* Inherited method: addMouseMotionListener(listener) */\n/**\n * @inherited GObject#void addMouseMotionListener(MouseMotionListener listener)\n * Adds a mouse motion listener to this graphical object.\n */\n\n/* Inherited method: removeMouseMotionListener(listener) */\n/**\n * @inherited GObject#void removeMouseMotionListener(MouseMotionListener listener)\n * Removes a mouse motion listener from this graphical object.\n */\n/* Private instance variables */\n\tprivate double aWidth, aHeight;\n\tprivate GArc renderer;\n\n/* Serial version UID */\n/**\n * The serialization code for this class.  This value should be incremented\n * whenever you change the structure of this class in an incompatible way,\n * typically by adding a new instance variable.\n */\n\tstatic final long serialVersionUID = 1L;\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/graphics/GScalable.java",
    "content": "/*\n * @(#)GScalable.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\npackage acm.graphics;\n\n/* Interface: GScalable */\n/**\n * Specifies the characteristics of a graphical object that supports the\n * <code>scale</code> method.\n */\npublic interface GScalable {\n\n/* Method: scale(sx, sy) */\n/**\n * Scales the object on the screen by the scale factors <code>sx</code> and <code>sy</code>.\n *\n * @usage gobj.scale(sx, sy);\n * @param sx The factor used to scale all coordinates in the x direction\n * @param sy The factor used to scale all coordinates in the y direction\n */\n\tpublic void scale(double sx, double sy);\n\n/* Method: scale(sf) */\n/**\n * Scales the object on the screen by the scale factor <code>sf</code>, which applies\n * in both dimensions.\n *\n * @usage gobj.scale(sf);\n * @param sf The factor used to scale all coordinates in both dimensions\n */\n\tpublic void scale(double sf);\n\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/graphics/GTurtle.java",
    "content": "/*\n * @(#)GTurtle.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Code cleanup 26-Apr-07 (ESR)\n//   1. Removed inherited method description for setLocation.\n//\n// Bug fix 26-Apr-07 (ESR, JTFBug 2007-005, reported by Leland Beck)\n//   1. Implemented GTurtle using GPen both to simplify the code and\n//      to remove cross-file references.\n//\n// Feature enhancement 26-May-08 (ESR)\n//   1. Added support for serialization.\n\npackage acm.graphics;\n\nimport acm.program.*;\nimport acm.util.*;\nimport java.awt.*;\n\n/* Class: GTurtle */\n/**\n * The <code>GTurtle</code> class simulates a turtle moving on a canvas.\n * This class is similar to the <a href=\"GPen.html\"><code>GPen</code></a>\n * class, but keeps track of both a position and a direction.\n */\npublic class GTurtle extends GObject {\n\n/* Constructor: GTurtle() */\n/**\n * Creates a new <code>GTurtle</code> object.\n *\n * @usage GTurtle turtle = new GTurtle();\n */\n\tpublic GTurtle() {\n\t\tsetSize(TURTLE_IMAGE_SIZE);\n\t\tpen = new GPen();\n\t\tturtleVisible = true;\n\t\tpenDown = false;\n\t\tdirection = 0;\n\t\tpen.setSpeed(DEFAULT_SPEED);\n\t\terasePath();\n\t}\n\n/* Constructor: GTurtle(x, y) */\n/**\n * Creates a new <code>GTurtle</code> positioned at the point\n * (<code>x</code>, <code>y</code>).\n *\n * @usage GTurtle turtle = new GTurtle(x, y);\n * @param x The initial x coordinate of the turtle\n * @param y The initial y coordinate of the turtle\n */\n\tpublic GTurtle(double x, double y) {\n\t\tthis();\n\t\tsetLocation(x, y);\n\t}\n\n/* Method: erasePath() */\n/**\n * Erases the entire path drawn by the turtle but does not change its position.\n *\n * @usage turtle.erasePath();\n */\n\tpublic void erasePath() {\n\t\tpen.erasePath();\n\t\trepaint();\n\t}\n\n/* Method: setLocation(x, y) */\n/**\n * Moves the turtle to the point (<code>x</code>, <code>y</code>) without drawing a line.\n *\n * @usage turtle.setLocation(x, y);\n * @param x The x-coordinate of the new position\n * @param y The y-coordinate of the new position\n */\n\tpublic void setLocation(double x, double y) {\n\t\tsuper.setLocation(x, y);\n\t\tpen.setLocation(x, y);\n\t}\n\n/* Method: move(dx, dy) */\n/**\n * Moves the turtle by the specified displacements.  The turtle draws a line if its\n * pen is down, but otherwise simply moves.\n *\n * @usage turtle.move(dx, dy);\n * @param dx The distance to move the object in the x direction (positive is rightward)\n * @param dy The distance to move the object in the y direction (positive is downward)\n * @noshow\n */\n\tpublic void move(double dx, double dy) {\n\t\tif (penDown) {\n\t\t\tpen.drawLine(dx, dy);\n\t\t} else {\n\t\t\tpen.move(dx, dy);\n\t\t}\n\t\tsuper.move(dx, dy);\n\t}\n\n/* Method: forward(distance) */\n/**\n * Moves the turtle forward in its current direction by the specified distance.\n * The turtle draws a line if its pen is down, but otherwise simply moves.\n *\n * @usage turtle.forward(distance);\n * @param distance The distance to move in the current direction\n */\n\tpublic void forward(double distance) {\n\t\tdouble dx = distance * GMath.cosDegrees(direction);\n\t\tdouble dy = -distance * GMath.sinDegrees(direction);\n\t\tmove(dx, dy);\n\t}\n\n/* Method: forward() */\n/**\n * Moves the turtle forward by its own size.\n *\n * @usage turtle.forward();\n */\n\tpublic final void forward() {\n\t\tforward(getTurtleSize());\n\t}\n\n/* Method: setDirection(dir) */\n/**\n * Sets the direction in which the turtle is moving.\n *\n * @usage turtle.setDirection(dir);\n * @param dir The direction in which the turtle is moving\n */\n\tpublic void setDirection(double dir) {\n\t\tdirection = dir;\n\t}\n\n/* Method: getDirection() */\n/**\n * Returns the direction specified by <code><a href=\"#setDirection(double)\">setDirection</a></code>.\n *\n * @usage double dir = turtle.getDirection();\n * @return The direction in which the turtle is moving\n */\n\tpublic double getDirection() {\n\t\treturn direction;\n\t}\n\n/* Method: left(angle) */\n/**\n * Changes the direction of the turtle so that it moves the specified number\n * of degrees to the left.\n *\n * @usage turtle.left(angle);\n * @param angle The angle to turn, measured in degrees\n */\n\tpublic final void left(double angle) {\n\t\tturn(angle);\n\t}\n\n/* Method: right(angle) */\n/**\n * Changes the direction of the turtle so that it moves the specified number\n * of degrees to the right.\n *\n * @usage turtle.right(angle);\n * @param angle The angle to turn, measured in degrees\n */\n\tpublic final void right(double angle) {\n\t\tturn(-angle);\n\t}\n\n/* Method: isPenDown() */\n/**\n * Returns whether the pen is down, as described in\n * <a href=\"#setPenDown(boolean)\"><code>setPenDown</code></a>.\n *\n * @usage if (turtle.isPenDown()) . . .\n * @return <code>true</code> if the pen is down, <code>false</code> otherwise\n */\n\tpublic boolean isPenDown() {\n\t\treturn penDown;\n\t}\n\n/* Method: penDown() */\n/**\n * Lowers the pen.\n *\n * @usage turtle.penDown();\n */\n\tpublic final void penDown() {\n\t\tpenDown = true;\n\t}\n\n/* Method: penUp() */\n/**\n * Raises the pen.\n *\n * @usage turtle.penUp();\n */\n\tpublic final void penUp() {\n\t\tpenDown = false;\n\t}\n\n/* Method: setColor(color) */\n/**\n * Sets the color of the turtle's pen.\n *\n * @usage turtle.setColor(color);\n * @param color The new color for the pen\n */\n\tpublic void setColor(Color color) {\n\t\tpen.setColor(color);\n\t\tsuper.setColor(color);\n\t}\n\n/* Method: isTurtleVisible() */\n/**\n * Returns whether the turtle is visible.\n *\n * @usage if (turtle.isTurtleVisible()) . . .\n * @return <code>true</code> if the turtle is visible, otherwise <code>false</code>\n */\n\tpublic boolean isTurtleVisible() {\n\t\treturn turtleVisible;\n\t}\n\n/* Method: showTurtle() */\n/**\n * Makes the turtle visible.\n *\n * @usage turtle.showTurtle();\n */\n\tpublic final void showTurtle() {\n\t\tsetTurtleVisible(true);\n\t}\n\n/* Method: hideTurtle() */\n/**\n * Hides the turtle.\n *\n * @usage turtle.hideTurtle();\n */\n\tpublic final void hideTurtle() {\n\t\tsetTurtleVisible(false);\n\t}\n\n/* Method: setSpeed(speed) */\n/**\n * Sets the speed of the turtle, which must be a number between 0 (slowest)\n * and 1 (fastest).  Setting speed to a value less than one makes the turtle\n * move slowly, thereby making it easy to see exactly how a figure is being drawn.\n *\n * @usage turtle.setSpeed(speed);\n * @param speed The speed of the turtle (0 is slowest, 1 is fastest)\n */\n\tpublic void setSpeed(double speed) {\n\t\tpen.setSpeed(speed);\n\t}\n\n/* Method: getSpeed() */\n/**\n * Returns the current speed of the turtle.\n *\n * @usage double speed = turtle.getSpeed();\n * @return The current speed of the turtle (0 is slowest, 1 is fastest)\n */\n\tpublic double getSpeed() {\n\t\treturn pen.getSpeed();\n\t}\n\n/* Method: setTurtleSize(size) */\n/**\n * Sets the size of the turtle.\n *\n * @usage turtle.setSize(size);\n * @param size The size of the turtle image in pixels\n */\n\tpublic void setSize(int size) {\n\t\tturtleSize = size;\n\t}\n\n/* Method: getTurtleSize() */\n/**\n * Returns the size of the turtle.\n *\n * @usage int size = turtle.getSize();\n * @return The size of the turtle image in pixels\n */\n\tpublic int getTurtleSize() {\n\t\treturn turtleSize;\n\t}\n\n/* Method: paint(g) */\n/**\n * Implements the <code>paint</code> operation for this graphical object.  This method\n * is not called directly by clients.\n * @noshow\n */\n\tpublic void paint(Graphics g) {\n\t\tpen.paint(g);\n\t\tif (turtleVisible) drawTurtle(g);\n\t}\n\n/* Method: getBounds() */\n/**\n * Returns the bounding box for the entire figure traced by the turtle.\n *\n * @usage bounds = getBounds();\n * @return A <code>GRectangle</code> representing the bounding box\n */\n\tpublic GRectangle getBounds() {\n\t\treturn pen.getBounds();\n\t}\n\n/* Method: contains(x, y) */\n/**\n * Contains is defined to be false for the <code>GTurtle</code> object to avoid having the\n * trace intercept mouse clicks.\n *\n * @noshow\n */\n\tpublic boolean contains(double x, double y) {\n\t\treturn false;\n\t}\n\n/* Static method: main(args) */\n/**\n * Makes it possible for a <code>GTurtle</code> to be run under the control\n * of a <code>GraphicsProgram</code> object.\n *\n * @usage main(args);\n * @param args An array of string arguments\n */\n\tpublic static void main(String[] args) {\n\t\tString[] newArgs = new String[args.length + 1];\n\t\tfor (int i = 0; i < args.length; i++) {\n\t\t\tnewArgs[i] = args[i];\n\t\t}\n\t\tnewArgs[args.length] = \"program=acm.program.GObjectProgram\";\n\t\tProgram.main(newArgs);\n\t}\n\n/* Inherited method: getLocation() */\n/**\n * @inherited GObject#GPoint getLocation()\n * Returns the location of this object as a <code>GPoint</code>.\n */\n\n/* Inherited method: getX() */\n/**\n * @inherited GObject#double getX()\n * Returns the x-coordinate of the object.\n */\n\n/* Inherited method: getY() */\n/**\n * @inherited GObject#double getY()\n * Returns the y-coordinate of the object.\n */\n\n/* Inherited method: getX() */\n/**\n * @inherited GObject#double getX()\n * Returns the x-coordinate of the object.\n */\n\n/* Inherited method: getY() */\n/**\n * @inherited GObject#double getY()\n * Returns the y-coordinate of the object.\n */\n\n/* Inherited method: getSize() */\n/**\n * @inherited GObject#GDimension getSize()\n * Returns the size of the bounding box for this object.\n */\n\n/* Inherited method: sendToFront() */\n/**\n * @inherited GObject#void sendToFront()\n * Moves this object to the front of the display in the <i>z</i> dimension.\n */\n\n/* Inherited method: sendToBack() */\n/**\n * @inherited GObject#void sendToBack()\n * Moves this object to the back of the display in the <i>z</i> dimension.\n */\n\n/* Inherited method: sendForward() */\n/**\n * @inherited GObject#void sendForward()\n * Moves this object one step toward the front in the <i>z</i> dimension.\n */\n\n/* Inherited method: sendBackward() */\n/**\n * @inherited GObject#void sendBackward()\n * Moves this object one step toward the back in the <i>z</i> dimension.\n */\n\n/* Inherited method: getColor() */\n/**\n * @inherited GObject#Color getColor()\n * Returns the color used to display this object.\n */\n\n/* Inherited method: setVisible(visible) */\n/**\n * @inherited GObject#void setVisible(boolean visible)\n * Sets whether the trace of the turtle is visible.\n */\n\n/* Inherited method: isVisible() */\n/**\n * @inherited GObject#boolean isVisible()\n * Checks to see whether the trace of the turtle is visible.\n */\n\n/* Protected method: start() */\n/**\n * Starts a <code>GraphicsProgram</code> containing this object.\n *\n * @usage gobj.start();\n * @noshow\n */\n\tprotected void start() {\n\t\tstart(null);\n\t}\n\n/* Protected method: start(args) */\n/**\n * Starts a <code>GraphicsProgram</code> containing this object, passing\n * it the specified arguments.\n *\n * @usage gobj.start();\n * @param args The array of arguments\n * @noshow\n */\n\tprotected void start(String[] args) {\n\t\tGraphicsProgram.startGraphicsProgram(this, args);\n\t}\n\n/* Protected method: drawTurtle(g) */\n/**\n * This method draws a representation of the turtle at the current location.\n * Subclasses can override this method to draw fancier turtles.\n *\n * @usage drawTurtle(g);\n * @param g The graphics context in which to draw the turtle\n */\n\tprotected void drawTurtle(Graphics g) {\n\t\tComponent comp = getComponent();\n\t\tif (comp == null) return;\n\t\tImage image = createTurtleImage(direction);\n\t\tint imageSize = image.getWidth(comp);\n\t\tint x = (int) Math.round(getX());\n\t\tint y = (int) Math.round(getY());\n\t\tif (imageSize == turtleSize) {\n\t\t\tg.drawImage(image, x - imageSize / 2, y - imageSize / 2, comp);\n\t\t} else {\n\t\t\tg.drawImage(image, x - turtleSize / 2, y - turtleSize / 2, turtleSize, turtleSize, comp);\n\t\t}\n\t}\n\n/* Protected method: getTurtleBounds() */\n/**\n * This method returns the bounds that the turtle occupies.\n *\n * @usage Rectangle r = getTurtleBounds();\n */\n\tprotected Rectangle getTurtleBounds() {\n\t\tComponent comp = getComponent();\n\t\tif (comp == null) return new Rectangle();\n\t\tImage image = createTurtleImage(direction);\n\t\tint width = image.getWidth(comp);\n\t\tint height = image.getHeight(comp);\n\t\tint x = (int) Math.round(getX());\n\t\tint y = (int) Math.round(getY());\n\t\treturn new Rectangle(x - width / 2, y - height / 2, width, height);\n\t}\n\n/* Factory method: createTurtleImage(dir) */\n/**\n * This method creates (or retrieves) an image of the turtle in the specified\n * direction.  Subclasses can change this method to create different images, but\n * the images must be square.\n *\n * @usage Image image = createTurtleImage(dir);\n * @param dir The direction in which the turtle is heading\n * @return The image used to draw the turtle\n */\n\tprotected Image createTurtleImage(double dir) {\n\t\tint heading = GMath.round(dir / 10);\n\t\tif (heading < 0) heading = 36 - (-heading % 36);\n\t\theading %= 36;\n\t\tif (turtleImage[heading] == null) {\n\t\t\tturtleImage[heading] = MediaTools.createImage(TURTLE_IMAGE[heading]);\n\t\t}\n\t\treturn turtleImage[heading];\n\t}\n\n/* Private method: turn(angle) */\n/**\n * Changes the direction in which the turtle is moving by rotating it <code>angle</code>\n * degrees counterclockwise.\n *\n * @usage turn(angle);\n * @param The angle to turn, measured in degrees\n */\n\tprivate void turn(double angle) {\n\t\tdirection += angle;\n\t\trepaint();\n\t}\n\n/* Private method: setTurtleVisible(visible) */\n/**\n * Sets whether the turtle itself is visible.  If the turtle is visible, the <code>drawTurtle</code>\n * method will be called at the end of painting the path to show the current location.\n *\n * @usage turtle.setTurtleVisible(visible);\n * @param visible <code>true</code> to show the turtle, <code>false</code> to hide it\n */\n\tprivate void setTurtleVisible(boolean visible) {\n\t\tturtleVisible = visible;\n\t\trepaint();\n\t}\n\n/* Private constants */\n\tprivate static final double DEFAULT_SPEED = 0.5;\n\n/* Private instance variables */\n\tprivate GPen pen;\n\tprivate double direction;\n\tprivate boolean penDown;\n\tprivate boolean turtleVisible;\n\tprivate int turtleSize;\n\n/* Turtle images */\n\tprivate static final int TURTLE_IMAGE_SIZE = 68;\n\n\tprivate static Image[] turtleImage = new Image[36];\n\n\tprivate static final String[] TURTLE_00 = {\n\t\t\"47494638396144004400D50000FFFFFF989800111111222222003232666600659800639696999999\",\n\t\t\"99993396966399CC00636496323200336600CCCC98FFFF996699336496639898CC33333330633030\",\n\t\t\"306330636398CC98CCCC0099CB3399CC66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\",\n\t\t\"44636330DDDDDDFFFFCB100000001000777777888888AAAAAABBBBBB555555666666000010000022\",\n\t\t\"000032000044EE0000002200003200000000C30000C30000C30000C30000C30000C30000C30000C3\",\n\t\t\"0000C3000021F9040100001D002C00000000440044004506FFC08E70482C1A8FC8A472C96C3A9F50\",\n\t\t\"26C5A548143E9F42A311DD4AAA8D07686B8B3A6DB66D438B22A9B7A40269FE5E6F296A371A6D2EDA\",\n\t\t\"1008247B693614786B0956050101200958201F22108F8C8C1F018A115A700D3604147D46680D8788\",\n\t\t\"05090D018B979699AB8C19AC8B725B3114853624098D201B05654B6120060FB978B8C877CA9ECD84\",\n\t\t\"0D28692428052E9E36167CA2DBDC42368B0FE1DADDE4E5E6E7E84B85B8DB36E20D35E94286355B2E\",\n\t\t\"B8681687EBEB142486A5F00822344EDE214369E4CC51B0A68001588958F16AE02001094673FA15E4\",\n\t\t\"D62086344F78221628902141B84C1052524A04E20104478C12A9C9B58684015E1F1E2850106C490D\",\n\t\t\"FF2D5340D6C933D2D2485546676542B18C10471B1830F44C32C8068CAB5607791C54C3860B182E48\",\n\t\t\"B46C29559ED9B368D3AA5D6B161781B4261AEC04616DEA93060850396A26CFAB1B031515180051B5\",\n\t\t\"30D73D734884F574164D0D17D86C7834B46F269966FBD294BA865617B26761B514CD34D2CA2A1215\",\n\t\t\"B658D4437963943D44345B7BA3C5C1482C3131BD5AC50A16273203B9E90204D9CDA1A2A978997C90\",\n\t\t\"008402959112B914016251751723073598C392611F819A6B6E19193DC007102941C03409E1BCDEDF\",\n\t\t\"7812EACD0941DCEB349FE1A4DAEEDB34AAFF123D74071A75D9D5852373DC4306324C0D751453BF35\",\n\t\t\"68077EF8B0C31102835D634807F818A6FF86294C31151E415EE9734E2E691532472F2D3D00035B30\",\n\t\t\"C628E38C34D668E38D38E6A8E38E333650C103A1A8E589020800294A032054649F596834A241001A\",\n\t\t\"7C104F172EB8D05C010A2C898E5C0A6C9080061BE464A0120D545926960C7565D66617B810432983\",\n\t\t\"E0A26140FC1416DF98E614E2020393DD22E77682DCD10C6D025DE31A3AB98477591A12DAF19B509A\",\n\t\t\"B9C15963F85936DE8A015CC44B6905540021196820C405A203D5818A0271ACE1DB68A824609B2597\",\n\t\t\"C16901A27436B80B43B06492812BB9FAC68802BFC1260A369095B187862389561A7A38A987852CE6\",\n\t\t\"F1028B1D9759D887570848A0182983A2E2062BE831128E4BED3DF21C0801409BFFE982C7C2E3C994\",\n\t\t\"67F858AC036AC8818AAA01A4B4AB4B26982042262DF9AB1BBA6FE0A300060AA897C04E7852A59929\",\n\t\t\"47D99B6F161F34A712C0CFFDCBD2519625ACF0C23BC1EBC49D85A896CA6D582C0249CA9754CC2B27\",\n\t\t\"68C06041048AF082AA20F7691629091100ABCA22CA25421AD0406FA7051A196555D813921D24CD9F\",\n\t\t\"F55EA41B2D9B320234697A90722814362C4C4795485B0AA80374AC1101CFDF729775850D338DAE15\",\n\t\t\"36B4592C62F8E4F18C40920E182A3FE4D4C05C230D1050419555C627AA9C07C9F90F19B6226DAD70\",\n\t\t\"558C21AC1F7BE0D3952E9EA5562C059707A5183C0F1FE94EDBDDE82917CD1180DACE8B29E2358B53\",\n\t\t\"3C9209C320B1D76E07FBEDB8E77E56100021FF0B4D414347436F6E20040310390000000157726974\",\n\t\t\"74656E20627920474946436F6E76657274657220322E342E33206F66204D6F6E6461792C204D6179\",\n\t\t\"2032352C2031393938003B\"\n\t};\n\n\tprivate static final String[] TURTLE_01 = {\n\t\t\"47494638396144004400D50000FFFFFF989800111111222222003232666600659800639696999999\",\n\t\t\"99993396966399CC00636496323200336600CCCC98FFFF996699336496639898CC33333330633030\",\n\t\t\"306330636398CC98CCCC0099CB3399CC66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\",\n\t\t\"44636330DDDDDDFFFFCB100000001000777777888888AAAAAABBBBBB555555666666000010000022\",\n\t\t\"000032000044EE000000220000320000000078000078000078000078000078000078000078000078\",\n\t\t\"000078000021F9040100001D002C00000000440044004506FFC08E70482C1A8FC8A472C96C3A871C\",\n\t\t\"15EAF2AC1639A39142451A55152357C35548911A366B95C21EC16C9498804D69A0EDF6023EEFA0D1\",\n\t\t\"1A7A0D27730D033631136A4A08761402367F80760E05092220011F1F202222091F01190A1020A005\",\n\t\t\"2005628D36362412060999200A0A354D2C2A1C0D31368D78056780059A1F05A1190101B105C609CD\",\n\t\t\"CC76AC272736298A45287A1467238F03767E76277B82D3D37B2728E3D4362314232D0D3524F4696A\",\n\t\t\"2A0D121815D6D7FEFF00030A1C48B0A0120505227C2A7082820A831D5C6851904083860F1A22A460\",\n\t\t\"C5D186804674F6D43933084D358842586C1C5747D01812818CC964962C19CD9B7B7A391A8180C390\",\n\t\t\"FF142C9AD8B090C2A4B471BD00296B402219080821323C85402AC127109C3E58D59AF3458C91B112\",\n\t\t\"90A87042D1461BEBC6D98109A829A800D09219D0034C924E01020C095440028481072708D47041D8\",\n\t\t\"5147568620BD786183718AC748588C6860A692581227516ADECCB9B3E7CF4CCC48E8650B7494A05F\",\n\t\t\"C29070062281A07E10539CD210404381D247549E3D2CCD246C8329B651A8500186510B2D1B7C2C24\",\n\t\t\"A857D28677989A7C94ABE046140304A825B776E64CB8F428D5AC57E7913D827696E3A1879066820C\",\n\t\t\"C86ADACC549319343BD959ADB57AF97C1216A875C0025ACAC1218C33C604F094535491A2D5070F98\",\n\t\t\"20C25B5691338D65C46075C66F46A4D0FF420B292010DC7679C0649F8222C0B509555825A8492C70\",\n\t\t\"81374D3D3630C0E1352D21660782269E58DF8934D5D44721780D4041411C0CD20B09149058A2036C\",\n\t\t\"A12009776B8D308D23372AC2C507F4B8D3820B144863647A8524B58794358CC18A0028D850830D2D\",\n\t\t\"BCA380421AD0F30005013A51C3031114B36696020215500344097A0D0770F807DAA28C36EAE8A390\",\n\t\t\"462AE9A49406A400057756EA440311607567759A1EC1174556817027A004A520400B233C54C51912\",\n\t\t\"20448202F21CB9D9A820C886C2131234D40A9393D990A741ED28A3093023A0A65B986B7AE4C8206A\",\n\t\t\"A1C511AA008D4A4204942450810368E035CD0086D4F10D77FA3530996F103540FF410D7580E9D123\",\n\t\t\"E84443A52F78AC6918B56AD860E405792D96D676CCD0639F7D15E4816039EA866B1D81F3E691205C\",\n\t\t\"411AD3800362258350BD98290A50511F852948257CE961408CF225F8B07D545223000935D4700209\",\n\t\t\"29F864C53B576AD79658347D101F313ACB07DF7C0104D3912B0A6095C02C0A68AC440A2C9D9B8730\",\n\t\t\"CAB4A689A7543DF80004131A83091EBE327555A9A6C29C042B1404D7C15163022296520A3E70F453\",\n\t\t\"2648F8E0531326A35520E29C50C1C015454099123688181C092ED8BC074E4E3D00CA8A55478DF55B\",\n\t\t\"F5D9F195472F18F5D8B091B1DA40051E37E7705BC36815CA07971C9B60060932A5072B62C0319047\",\n\t\t\"F2E2516190762763BE954D3E422CCE23D3E05B850AE71C4E4F0474DD943BC410AF9E68A20BEB5426\",\n\t\t\"393EC6140109DC4AC935D9FA1A82B92271D4116C72B11F9E37390CD7FBCE000808A1820208A4AF06\",\n\t\t\"0BABD1D3451DD44CD3CB08D951498121CC99D9261C85A387A9EA94B17B9000140968081BD4B54038\",\n\t\t\"18821A76A8817630430201B88C17D510942346123AB1F4CE0A7B8A0508D2C1860E944D836CE80805\",\n\t\t\"18C08027E06232C0A04709ADC00505700966BEA354141A72A9503D61283E0CA2108748C421060100\",\n\t\t\"21FF0B4D414347436F6E2004031039000000015772697474656E20627920474946436F6E76657274\",\n\t\t\"657220322E342E33206F66204D6F6E6461792C204D61792032352C2031393938003B\"\n\t};\n\n\tprivate static final String[] TURTLE_02 = {\n\t\t\"47494638396144004400D50000FFFFFF989800111111222222003232666600659800639696999999\",\n\t\t\"99993396966399CC00636496323200336600CCCC98FFFF996699336496639898CC33333330633030\",\n\t\t\"306330636398CC98CCCC0099CB3399CC66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\",\n\t\t\"44636330DDDDDDFFFFCB100000001000777777888888AAAAAABBBBBB555555666666000010000022\",\n\t\t\"000032000044EE0000002200003200000000DEAB00DE0000DE0000DE0000DE0000DE0000DE0000DE\",\n\t\t\"0000DE000021F9040100001D002C00000000440044004506FFC08E70482C1A8FC8A472C96C365D92\",\n\t\t\"1449E2AC5A9D0AD7A841228D6CB6D4D58A6829129A48244172D85E8286DC3697DB1B854285D64814\",\n\t\t\"0272277127843614452C122C63422914740D71725D24790119010109202022201FA01F0F10221F99\",\n\t\t\"0909770D821411240901240D614B292F0323278F02607779957979A07E011F98A7C17FB09A36BA60\",\n\t\t\"032D8B8C49BD140D1427AAAA2474DD7627036028601286235DCB090F2487571C29201A1A09348608\",\n\t\t\"D3F8F9FAFBFCFDFEFF5D0A7C28A04056BB7F45B8814821471A111629C0F0A260CD4EB86C5C66D9E0\",\n\t\t\"D5C0213F041406506000231C0C6D052A650A106C65A63F2C8345283087970D121836C042A5008402\",\n\t\t\"FF1B64E450B4930CA628109B4641800042D30710104CADCCA3D1C5AC7D143878693607639F02AE68\",\n\t\t\"B27C19CC409706282C9E6047670405170A2ADC2C97C263951A29BD6C69106E235F8A60BAA17841B8\",\n\t\t\"2EC226B32A3CB061F7B0E3C790F571887CD8C6064E0AB029A0AC8F4405096CCE1E8CCC424548154D\",\n\t\t\"1C8DEB05E644E0308DFB358D37905B0747AF05885C556756C54060863E7AE1CF86D50A2E44BE19A0\",\n\t\t\"DB4E5A2E9560FDC9E3A700B1587720B9E6C325C107050ABE5479848263F67334F118B0B43241863F\",\n\t\t\"984CBDCF242B50B8060A407D422A4B4C1586AC4D4215759F18F380529F780755299A6C925E03B76C\",\n\t\t\"F48205B159D11A384469824726103C80FFCA53A47C02D325CAA4E79A4D8C3142810A2DA490820A29\",\n\t\t\"7C818203B3C841958D236A32D67431E54553338F3C02D43FD61812881DF515250B0DDCD9D18C0D28\",\n\t\t\"6403460B149110C1066A90F0C04FD36875CD2CBC1894D62E77FCB6D60035D860817F882CC2100C86\",\n\t\t\"31C242034DF921000AB8B8909C214106C7266748D49042042074F127A0FA94A626A28C36EAE8A390\",\n\t\t\"462AE93E201130D9A45668B5C14D4362CA84561FB29199A74B8C90022A9B3880C2A1A40EC1410315\",\n\t\t\"90E042015274D4280B152251CF93521A02280B24ACA080004AB0206438CD7D33C01C86B0CA8F560A\",\n\t\t\"C8F38103241011915F148DB0D71DAE4D328B48BC8C70293F360CC0522820B8B2FFD120155504094A\",\n\t\t\"19757B0D18B992418202331950035FCF2C7B245138B25181030EC094D28374847300050828B02F25\",\n\t\t\"CE22C18E4521C52000057140A25251A700E2404C2C692324749C6C02DE674E94FB56B2DAE0C1A326\",\n\t\t\"3CB287CC1FB2D024081D60698014548576CA040BBD7C59E32BC02813DF25C6ACD489297F98F24D8D\",\n\t\t\"C92848C2095740940B515D28E0F253A684B25454A83C6002830D22FCC62373C479850D5B84644393\",\n\t\t\"2E67B2F426509900B6C9108430D054720C208BAFFB40F2C8B2D46DA8C952987CBDD432A08C058841\",\n\t\t\"ACD1320644B842C495942E5BB761069C64F294278DCBACC97A1619E2B3852E20C08EAC71D078871F\",\n\t\t\"9917980926A8BC6CC230208484A4DB6855A790CD0815A08D121B6235B063327C9B5D08C66C16E402\",\n\t\t\"3E1059E3DABB94D094924B38B69C9D0D2D8C306B4F05E912716A8109F52ED604A7E78DD072EC8A02\",\n\t\t\"05DAE26740824FD6BB04365CA9829157BC5D7342935F308434AC061DEBB0657C4A28D735BAE78267\",\n\t\t\"4CCF0E71C0861CC2151804126133F960C1192831800B740F63454291006C42A148D9A0291B20C1C5\",\n\t\t\"2A9082150C406DB721150714E31D8DA4A8554850C12B362001DEE1F0085AC198002CF8C3221AF188\",\n\t\t\"FE08020021FF0B4D414347436F6E2004031039000000015772697474656E20627920474946436F6E\",\n\t\t\"76657274657220322E342E33206F66204D6F6E6461792C204D61792032352C2031393938003B\"\n\t};\n\n\tprivate static final String[] TURTLE_03 = {\n\t\t\"47494638396144004400D50000FFFFFF989800111111222222003232666600659800639696999999\",\n\t\t\"99993396966399CC00636496323200336600CCCC98FFFF996699336496639898CC33333330633030\",\n\t\t\"306330636398CC98CCCC0099CB3399CC66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\",\n\t\t\"44636330DDDDDDFFFFCB100000001000777777888888AAAAAABBBBBB555555666666000010000022\",\n\t\t\"000032000044EE000000220000320000000022AB0022000022000022000022000022000022000022\",\n\t\t\"000022000021F9040100001D002C00000000440044004506FFC08E70482C1A8FC8A472C96C223995\",\n\t\t\"548396E238AF5827A7E52291280D9B384B162A6CA054A1401AA6C4B6810D7CB235EE8D4285960FF8\",\n\t\t\"4905780D27246176120A1F011F0A200F24364D1C14940C313103772877236B8106011901091F2022\",\n\t\t\"1FA809090F262209A3A46B770385362965462D279C717705AA7D09A6AFA88AA301BFC80501240986\",\n\t\t\"620314912C738F622C572C292C1C2A14996177768278857876D19B603616D8B8D9CD5E0D0328142D\",\n\t\t\"2DD1EEEFFB4C1C1C2323D8F11B48B0A0412C1CD47C280082048D480709BE1120E0049875BB1A90A8\",\n\t\t\"4369C08017108D48E086250505051A12188840428E8D18784E6C5A4342D9323FCA7026B81948DC20\",\n\t\t\"FF3BBF9641BA45C664343C6CE43958564A110810104C4038F56A518635C802DCD925604EC82CD4BA\",\n\t\t\"8A1110D05C0301BECCCACAAA2C4F843BB5EAA0B0215700178D581F9CA1C06FC480AE720AC9014717\",\n\t\t\"8E8D17ED225E69A02081864214F4299E4CB9F21515562C47B4B12102880223CE681ED8C045E3040A\",\n\t\t\"068DDEC7A282981375A0897BDD66320B172D462038C2425A344A787C0B3217675D401B2A5C74D108\",\n\t\t\"42817312159C3C60A8C1294BD98332E6F1B52CE9D29C9E7A1A66FEF4832A679291A44E017D0405BF\",\n\t\t\"31E66867D3DD4FD5AA37458030A64AD6BCC32F7C145919D4D8501139BBFC024801C590F2D4035329\",\n\t\t\"228C0211FAD1DD33BBF045DA1DD26CB2FF9D277E4025C228A544A8085638D9379747D17CD5C16E65\",\n\t\t\"48534738793443D32FA8D86753556669E2402D68790142029E81B04E7A45B0F0020229A8200102B9\",\n\t\t\"8D0386203BB1546377C49DC549187574750B366F2840412144F1238D1D1765A4269AC111224699AB\",\n\t\t\"A500D37B0035701C6186D9B2DA1227BCF25803F5C0B8272E5E908081688326AAE8A28C36EAE8A346\",\n\t\t\"FC43810B4842AA84028890F0801D955A4A040743AAF2DC089D7ADA01095D244002085394EA290770\",\n\t\t\"79A18B0DAE5ADA808C623C3307057042DA1B1CE4D8F9538B36B430016508B858C444BB0A92494670\",\n\t\t\"A075AB189410A100215ED8B042ADCBA6B002244648831625D00AC287AAC89030FFC239D0DAD14C79\",\n\t\t\"7A89D96B122928B041001ADCC14281684E394E4F4955B0544D1692439118CE1920CC2A10A83BEF11\",\n\t\t\"1478A2C1060A1810C6511B9553537F5981689350FEC98197274F85C1EDA40ABC55004CD41E350E20\",\n\t\t\"F685871583A48812A256E4B05381467364F15E03359C65200CDA7137738AA888920185229CE2C742\",\n\t\t\"3D35F002051CBD830F250109B24BBD0B22FD41D3119202210427E267880B613C9C4D8119FE2BCF1A\",\n\t\t\"C2EC9781235199605EDC0F9857F06C5D35A0B6CF59C386541E37399240061F40A0380443A6B8934A\",\n\t\t\"0538C0E1582A0CC482B4DF70074C320140F0C0D3A68090C12BE15918089A714C3D446ABC726BC438\",\n\t\t\"2778A479E9398602CC4B77B89B655118235860C1080E34E285022E68B804981DBCC6613951A3D831\",\n\t\t\"EE069020391F39DB8575C5FB25A56C1114C4D0027B15A07AA0E48204A56A2005646073B0456B6243\",\n\t\t\"051408100D096A144089EB29A480807630D06567AEC3411F4DB6C325916DA2055E1A0D0206A09DBF\",\n\t\t\"8C235810FCDF8006552008AAE328223384EA1885B616D8492CB9FAC699BC422B478121292E18016E\",\n\t\t\"6EE50239F02A32C67BD49840308AD811200AFE30156F5052C337E9100912A800F626F84324B0A00E\",\n\t\t\"0378C3DF8A48842532D15241000021FF0B4D414347436F6E2004031039000000015772697474656E\",\n\t\t\"20627920474946436F6E76657274657220322E342E33206F66204D6F6E6461792C204D6179203235\",\n\t\t\"2C2031393938003B\"\n\t};\n\n\tprivate static final String[] TURTLE_04 = {\n\t\t\"47494638396144004400D50000FFFFFF989800111111222222003232666600659800639696999999\",\n\t\t\"99993396966399CC00636496323200336600CCCC98FFFF996699336496639898CC33333330633030\",\n\t\t\"306330636398CC98CCCC0099CB3399CC66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\",\n\t\t\"44636330DDDDDDFFFFCB100000001000777777888888AAAAAABBBBBB555555666666000010000022\",\n\t\t\"000032000044EE000000220000320000000018AB0018000018000018000018000018000018000018\",\n\t\t\"000018000021F9040100001D002C00000000440044004506FFC08E70482C1A8FC8A472C96C125D14\",\n\t\t\"4583C6E238AFD82BA7511991280D9B9842A6A814CB6A164BB10DC88D70BCE0A8340A8580BE70E7C7\",\n\t\t\"6D6D270D2478790D146C0D098B0E0D03636F71837801947A1F1F099909200F1010987B950D026E02\",\n\t\t\"6F6B472C2D24823628927D797A0F201F0198B78B099501B1BF80508384015F884D29362D62232EA5\",\n\t\t\"36248EB10524D592D1BF92A52CA9DD43168723642D2D6F2E80DEE94E242924180F64EAF2F3F4F547\",\n\t\t\"1C0ABB8B35C7F6F66D6EFED89074C28D200A05473C42018B04275C0A6AB1BBC262848214091C90E8\",\n\t\t\"C0C28680820304C521C46B56C90009326408B01253023F61DE88E1966AC4A11A0C46BCC8E6504121\",\n\t\t\"FF10223E64F8A00082894F1078E959CAB4C1090A8F1E8DE820A18102290AA064011367C0A33E0EE7\",\n\t\t\"14CA336B541CAE609E51A0E9AF0807310329608B83E284CD678F6CA4689B4551A60705E0F21D4CB8\",\n\t\t\"B05BC36D2382006195840DB688536D71F15241B47E915349816BA320578F50C5BCD84B84C5201057\",\n\t\t\"2D57E0DB51001C495CA945B326091A4012963FD8BAB5A10066261C28A4180099054001AEE7CCA994\",\n\t\t\"8084835985F4CC1569C302F2C7A95228D0902B4204375C1BC032894729CB59202004D5F37054E765\",\n\t\t\"E8B204BF48A202390A02628C148BC7C0524C9DA8A7CB620F64924749B5C1C5D61623B00059120085\",\n\t\t\"F715352F3D97876E20B4B41804B69414FF5D317C0012C608AC9000C2222014A300764DAC721618B1\",\n\t\t\"2DC2C72CB9B0F71225CE0D12464153A0F0580A66D8C0410A1C58919D18228131C01C0E15D0DC4864\",\n\t\t\"11F207057571519D3FCAA4D04E0A71C03090535FF2F8476D8E7C69C30B16648644326DE01590479C\",\n\t\t\"3DA866690E58160D332D0060E49C5A90F08026099C20279F585831240BA411AAE8A28C36EA680723\",\n\t\t\"10C0D1A3575453CD8A0D0C4A29113678879A14536D9A043B95DD292A125B48E05335339D6A04072D\",\n\t\t\"8C30028F487226860A0C20C1950BE72056019224D8B41F6887E4158F0B080C82226A20C4D3967162\",\n\t\t\"BCC18748C00830A64056E9D3C965FEB4F6542C82D070875261C502A718052860FF202787689AC45B\",\n\t\t\"7B12D146195F4A8247050E3870A321B2E1E1541B714460CD6F4EE825C56A427474C2094B3A75821F\",\n\t\t\"BD9065094A78DCF24B411EBDE0EE1283DC424D14D10E22EC30638952C02DBA8582D24BB17811DF1A\",\n\t\t\"2638A9C906CD891143BD2389629E501968929E0927BEE461189D0D9428162D6817816F6FC0508A1C\",\n\t\t\"D3F8A7A1089F04E5735199ECE1C74051B57018130A0CD0C25930BCB093784EB960D91DB864A29B27\",\n\t\t\"46D9F29F4A07B20CDA297A256CD5232F30010505FCE0CCA47315039532DC1C82309625D4105D4A19\",\n\t\t\"1438F0A789771EAD0AB4624C834D749CA88752CAB7885249E38788EC9123B845A00B3C042B311020\",\n\t\t\"AFF4B14834BCF40CC24A25BA1CA887C0B0C441434105A1E01A05B2525080C66B94731672FCED7B72\",\n\t\t\"E8A3FBEBEF5C7130CC623D1D75462D7FD334C0D24AD80CC4A3B80DC4D0BA3C6BC13E17CE2F85450D\",\n\t\t\"358DC81149056D582E4F0A68AA9042D20838136667D908E021424301E4B1661CCBC08783C080B3AF\",\n\t\t\"38E510C9094918D0D4A8EC894958000C8D8228158D1650606C445B1220D6B2B139E1671850100739\",\n\t\t\"0450C245B180049B981501C8102F5771840229AA44AB6C58840AE08613A8E0A11158B0B0111A5088\",\n\t\t\"8E0A020021FF0B4D414347436F6E2004031039000000015772697474656E20627920474946436F6E\",\n\t\t\"76657274657220322E342E33206F66204D6F6E6461792C204D61792032352C2031393938003B\"\n\t};\n\n\tprivate static final String[] TURTLE_05 = {\n\t\t\"47494638396144004400D50000FFFFFF989800111111222222003232666600659800639696999999\",\n\t\t\"99993396966399CC00636496323200336600CCCC98FFFF996699336496639898CC33333330633030\",\n\t\t\"306330636398CC98CCCC0099CB3399CC66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\",\n\t\t\"44636330DDDDDDFFFFCB100000001000777777888888AAAAAABBBBBB555555666666000010000022\",\n\t\t\"000032000044EE0000002200003200000000B70000B70000B70000B70000B70000B70000B70000B7\",\n\t\t\"0000B7000021F9040100001D002C00000000440044004506FFC08E70482C1A8FC8A472C96C762E1C\",\n\t\t\"96734AAD0A152D498A446AD8BE6030652025561A89CF07047A90525627C546A134EE785AA3400AF8\",\n\t\t\"0B05115C7877272F5F7071422E0A2909050D297336772494807E7E097E6A6A09096D20101F9B019B\",\n\t\t\"053427021402032F70151420240A0A5E65470A7403352E2394840D248F7B99A20F9B6A9A01057E11\",\n\t\t\"78C00D0336B88A4873787627767705095C5DC17776362F16D6E8442A0D14232DEC03032DD4E9F54A\",\n\t\t\"0DB506201275F6FEFF00ADA4D8100104A85B01137640F1E5CE08425F4ED81870C7C6094B5F481450\",\n\t\t\"40AA19090A015980894708932966DE028050666A25332F0DD92932D1AC8006071507AC3AD10D50B3\",\n\t\t\"FF00A4D43C8000C10451833E7D06E05280120989ED620853A1114635272C469C18806D0FA6474951\",\n\t\t\"32CB54B1228D313614B26A41224B8A163180456397E7A2B430571536A9306C980D02040624D24BB8\",\n\t\t\"B0E1C38A5C5852F0B11F62744CBFD93A9177090570B62A18B6E5A28144895C61D6616751950D86B4\",\n\t\t\"3EA521A5E1046191132940C2C307D0A060BB8009B254D9DE9CD1C1F84428E02093B7660635E27931\",\n\t\t\"E2293D6B2E5A902142E1C4369E9592D61CABF2810911204CFD9C4DE7CB2A225CBEBCE8DD81032D0D\",\n\t\t\"1F348030508E62759E1A7F66000A2204510822A8564A069B9C62897594B46081621180A292022021\",\n\t\t\"A102235D3CD40A30A9A0C11833A07C10FFA01FE01D655C4D849C21910D34D8A0C208834DC1011802\",\n\t\t\"C4149C721AEDD78926C74102884376FC122140226543474F6075B3873080E0548044D03CF75A0A02\",\n\t\t\"08601D0D5DF044913839B173E239868D3142752D7040C43C1611424E455FB0D0E2634958C00E1703\",\n\t\t\"8C30800B2520C0A6152C70115E005EFC78A722F781C1DE9F84166AE8A18826AA440B9779C185A24D\",\n\t\t\"34B0011BF85802E9122A80E00D09202044050B2C3422C9616F38B2D12FD448012A07628A69849EB5\",\n\t\t\"D46229611C34504173E49409DA34608CDA99300699F20063AE1536428C4C5682911D7594E9994524\",\n\t\t\"6C60C01AA474EA67422CA478A58C783C44C889653EF24901D786141B3457A6A4FF89573A7A41910D\",\n\t\t\"028CF0C27A85CD314095D8155041050EE4A8D44B784C531D1DAF51A24D49803CC2DD1F9A1083C709\",\n\t\t\"2E40954E0AAE0E015B2B9E1D790AC33F7D00E0879FFC71D744515E4B01A84C8C30C2030DD050C61C\",\n\t\t\"3C69D5537E0AA7B1DF270F0C25024B3B8EF3C53489A86C0B634E1A610347CCC83A51305C300CD41A\",\n\t\t\"00BA040A1B1F64D08C6A4D91F6C2182914800C7CF8107C0407058000DF06107E310676841890894A\",\n\t\t\"6D14350A296FFF64CAB3303DD49C0263255074116328B081BE318C119730F8D9028887CA7C30D47F\",\n\t\t\"2BA9F6071F776C1BDB68291C5D3112BE6C718705305044DE1E5DF4DB8CE30F7CF0B44BE26542821E\",\n\t\t\"65A1C0D0A04B7050C90705354C53394FB585E5471B1D01851220CF08F33022FEA420527514E9EED5\",\n\t\t\"375DF8B4DA58244273070A9E71195236BFA4EB136D3BBEAD114FDBF84C3B3A2F5ACF36E98F442088\",\n\t\t\"57E10473EC9A7A4D12CDFAB38963254F34A0A0FD6B9378C32F8EE799CF988924F04A936132670104\",\n\t\t\"A4400529E0910B02D5A380ED22460A7C0CFDA8639E8984811C28BBD410D8D1822FB5805113DCA0A2\",\n\t\t\"28F0023E0C221E14B093088D7099F0A00D26E753D40ABE968006E45051796A810224400B1BFC6F86\",\n\t\t\"465000070010428504010021FF0B4D414347436F6E2004031039000000015772697474656E206279\",\n\t\t\"20474946436F6E76657274657220322E342E33206F66204D6F6E6461792C204D61792032352C2031\",\n\t\t\"393938003B\"\n\t};\n\n\tprivate static final String[] TURTLE_06 = {\n\t\t\"47494638396144004400D50000FFFFFF989800111111222222003232666600659800639696999999\",\n\t\t\"99993396966399CC00636496323200336600CCCC98FFFF996699336496639898CC33333330633030\",\n\t\t\"306330636398CC98CCCC0099CB3399CC66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\",\n\t\t\"44636330DDDDDDFFFFCB100000001000777777888888AAAAAABBBBBB555555666666000010000022\",\n\t\t\"000032000044EE00000022000032000000004FAB004F00004F00004F00004F00004F00004F00004F\",\n\t\t\"00004F000021F9040100001D002C00000000440044004506FFC08E70482C1A8FC8A472C96C3A9FD0\",\n\t\t\"E8B0A14A90488A91CD46A16CBF602EC1868D68409F04A8C19246B78D7843D0A0350AF840411FD017\",\n\t\t\"E47103240D36276D45081D876E1D5E360372577E097D1F9696091F209B1F197B0978245B5A5C2331\",\n\t\t\"2357820A4C0A7B05110E0D1430312771362D090A2478941F0F1010A01F01197E7F117F711571308B\",\n\t\t\"8C482C2971142D02039077770524A0DD807236843629D04F14312D2A29230D1C442C5ED703140D23\",\n\t\t\"032D5DE6FB4E2C0A2011126050D0E519BF8308131EA1206A17961352182A98A8E00109830A8534B0\",\n\t\t\"76A2103838E2006DA120A010850A365E6434C2824BBD90DB0A50EA1540844D62A0F40C6A60ABE400\",\n\t\t\"FF2E1D38D40098C00A41251452A4F846E6911C5B78F2500AA0099889606870BAFA38871C341227BA\",\n\t\t\"D47031828EAC7A8064EE8CEA6A4FB100BC60CEB1B01289BC1327ECF00C89CD56839FB67E72C158D7\",\n\t\t\"89B82B7109A0F05AB8B1E3C790997020C0A182BF77D0A4D920ACD09F830F3213D0B001A506894B09\",\n\t\t\"20EC32D498430B0988C7C5E9484F16DE708F42F7DA0C99C362BF70E2844A20FC8FB2D96020B7AC2D\",\n\t\t\"074F05120EDCF631D627D3D62FD806949B42F00A6329291E318F13602A5BAA2080411041ACBC013C\",\n\t\t\"8428FCECC29044C0F224283069816F11C9385A6CD3875B9AD8148C0899F471CC567FE9F5C50814B0\",\n\t\t\"C0D9115750A2411A5BD033805FE77D20FF4C796920080108D5B915811C28DCC21B23D54CD4C0050D\",\n\t\t\"C0900D20DD18974725ECB5C7C71F8BDDF217690921100636B2C8C556730D0C12D54EB2CCF1025D90\",\n\t\t\"09D9911C2F8123D26C1BDA50D276CAB1D011092A54E008720052E3942C911DC125122ED823CB0502\",\n\t\t\"B4B0669A51308486011FF034219D4F88224E5273F229E8A084166AE8A1883606210962BA24050BCC\",\n\t\t\"C41661632448B0891A75ECC952036980F00F08A234E64F511FEC62CF22D25CD1420B6DB4D1669220\",\n\t\t\"909A46044016A6800B297833CE16B4C93726051D89B34BACBDE8E718078C26C96B58836879C28C7F\",\n\t\t\"7E215C048318FB18415B0C721B8DC709C7132427C05092B58FA5301A05DDCAA4FF6000714410C0AB\",\n\t\t\"E1C4D02CB985A520005A68D571474E6C69028A48E2E0B5A2100A08E6CC3E5EB81949850D28980131\",\n\t\t\"ED91EA8717039434AE101215F0C048D0D4530F54022AE8566AEB81F0F08071349B9D055CE41A2B31\",\n\t\t\"0F4CEA4686B61C768CC3E565921E081080B687019410F2AC386DBA50211E072F2161112D7DEB1709\",\n\t\t\"E5AD4B954D68E43C95D4A0D832EF08100AA2E9101C8CF0405EABB464164F345CE18A316AFC028109\",\n\t\t\"2688D0335B472619C7682828021E09206850C03FB4CE67E51E1990AA8B7AEBE998470329A2E05749\",\n\t\t\"5F2960890656CC77362A4A16A0898726537549D43F0F0296C7F79AC34203096C5040051096040E37\",\n\t\t\"D0DD9880080F104BCC5551F005C2570DF44A11B6A9358CC03270C2ADB56F019E5862CC8D3B75F4F1\",\n\t\t\"098132C2427E15D340474827A4B80D25A0D01D8A1EB1FCE1D709027CED461B2900C0D35973145723\",\n\t\t\"EAAFECC464BE3524ED987C4FCD38E31D4C86036EB082F2C2946281966CC8C56E8E000A9F944201B2\",\n\t\t\"04273E650AC7AEA2E7181BA02205EB6046845C5012713C220C5E305F4696438F141046051BC907D7\",\n\t\t\"1AE082DE256A082C80C41508310031BD3009D3284A004005C01B4663102F238ECC7C780405986617\",\n\t\t\"B0A1C00B4488280E38712541000021FF0B4D414347436F6E2004031039000000015772697474656E\",\n\t\t\"20627920474946436F6E76657274657220322E342E33206F66204D6F6E6461792C204D6179203235\",\n\t\t\"2C2031393938003B\"\n\t};\n\n\tprivate static final String[] TURTLE_07 = {\n\t\t\"47494638396144004400D50000FFFFFF989800111111222222003232666600659800639696999999\",\n\t\t\"99993396966399CC00636496323200336600CCCC98FFFF996699336496639898CC33333330633030\",\n\t\t\"306330636398CC98CCCC0099CB3399CC66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\",\n\t\t\"44636330DDDDDDFFFFCB100000001000777777888888AAAAAABBBBBB555555666666000010000022\",\n\t\t\"000032000044EE0000002200003200000000EEAB00EE0000EE0000EE0000EE0000EE0000EE0000EE\",\n\t\t\"0000EE000021F9040100001D002C00000000440044004506FFC08E70482C1A8FC8A472C96C3A8D9C\",\n\t\t\"94AB814AB19ED861E35100750B34D59095B299CFA7C1C9DC2025120512C996AD0F3923DBA941D953\",\n\t\t\"1A09010582058501201F8585246B3614660336291D12242009890F747642297E0D0D05808A01011F\",\n\t\t\"A71F6F9881A58624A0A08D149C1D2D292970230A0936318EB071A1050920200F0F228982A98A0D34\",\n\t\t\"28B10D79B4441CA014140323356A366A14027BC06E717072B00D2702DD029BD459650229081502B3\",\n\t\t\"0867EB1423232D0D2A08DE0974C2818402040924381A7165A0C3870E397460C142818A864F580002\",\n\t\t\"1120C183001B1A608478A7810B12270534B0D1660E1A74A15682F2D66D921117652CD87CE7E80F4B\",\n\t\t\"FF6124042D0B00418408441F4A9532508865BE06305A8C686085E71A99A15A15C860CA1884AF5F41\",\n\t\t\"707D3328429B99235E8CB4D32051020730B08583B5875C4C45A4400D2AE000D61F1A2F18904492E2\",\n\t\t\"D1D59FA022ED39910DD64F496B071F61412132111871DCBC5AB353B2E7CFA0437F4E615081E90773\",\n\t\t\"3EAB209142D7163E4FFE1834508C6C67C9C212B076C9A6279F743FDBB5636961C00BD15A5CE81187\",\n\t\t\"8E441C05A12214980213548B136B660D3128C7A5652C2CD8F0D953A1818302069406E05AEA4DA957\",\n\t\t\"7E0708284EE164044203BEC71EF087F9A056429D62CC034511D2CA2B2C3172C608B7D112DE2FA0C8\",\n\t\t\"0187521F800016040924A3082BE85CD5FF0E4F380DF1C8003039D7407A199C624A85A724D31121D2\",\n\t\t\"A153430D0DC23302080B9CA240248F9CD5866EE6FD1748862A1A22C866B04C331005DC55808D2FD7\",\n\t\t\"A804CC308114A25701D0F9180B768E7846191964F8F5488F0D9058DD96AF3C021972458427C0708E\",\n\t\t\"A5F3879A666453A368E15980400A2B4566CD542E1060839362B0C9891C88AC32476586BEC3820A0A\",\n\t\t\"342AE9A494566AA91D145D9A85040D98A6C0032269CAC48F151663D69D031140410D8FCC81AA1108\",\n\t\t\"28304C2A2A82E0CE601C54908202209856030A6B6994420B311466C30828D8400206964C18EA6824\",\n\t\t\"44F086692B49A2A63DFC4502DF197A4550CFAB0E1DE482397DE83193378C75A8FF477F2FBC301C72\",\n\t\t\"AF94572D3A3F99080C4CBD2078C25A0A38498102660844829A08D6FB9F2059E1E5D819FC3134840D\",\n\t\t\"20340082411480DB440DDE8802531C7B25C01E261C59C9639D2FD880804198A4C29A40E0FC018C03\",\n\t\t\"152490D57A482565882871249BCDB15275774E03029591EE94FF0969A1094531F322C23499D1820B\",\n\t\t\"2344F2504FFE09A5D458C41483087B0796E9580D994EDD8E1A27DC3C4C29154290A87A785939D34C\",\n\t\t\"16C3E38D94331B9DB60948AB9D0A1C83C047C3625D42145E5D2740E31C7A5757A840586A7774B6C6\",\n\t\t\"7282721C357BF25903090FBA8CDD94A660980A57A8B067A5C666D0F0887E4EFCAB800654D26003B6\",\n\t\t\"E27067E02161A5A2DBD45EB17893CE0B712F81E829310A10C30B54A453CE95EA1D92D450CD006E41\",\n\t\t\"B8C34807B50D16D0A5975EBAE1DCB63090C342030C0F0DABC02B353CDD073AD0DC55081CA1241081\",\n\t\t\"59F4F2E18D0DA863AA429967B4EA0889105617CCDB7F8884197A3710E6A4E31A58E98F78A8B08E3A\",\n\t\t\"518A32672041FA5662265820C827970A0F6B5C50329534620DEDE0437D1845A98A3188342490C818\",\n\t\t\"F824150A5C601F2950E1A452F0827DD80209FE1881890640800F890A092C80C62E02A081889DE087\",\n\t\t\"4BA8880D786580046CE0011478C1F3908884F19D80112BA3A2A182000021FF0B4D414347436F6E20\",\n\t\t\"04031039000000015772697474656E20627920474946436F6E76657274657220322E342E33206F66\",\n\t\t\"204D6F6E6461792C204D61792032352C2031393938003B\"\n\t};\n\n\tprivate static final String[] TURTLE_08 = {\n\t\t\"47494638396144004400D50000FFFFFF989800111111222222003232666600659800639696999999\",\n\t\t\"99993396966399CC00636496323200336600CCCC98FFFF996699336496639898CC33333330633030\",\n\t\t\"306330636398CC98CCCC0099CB3399CC66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\",\n\t\t\"44636330DDDDDDFFFFCB100000001000777777888888AAAAAABBBBBB555555666666000010000022\",\n\t\t\"000032000044EE000000220000320000000083AB0083000083000083000083000083000083000083\",\n\t\t\"000083000021F9040100001D002C00000000440044004506FFC08E70482C1A8FC8A472C96C3A5929\",\n\t\t\"9242015234482CA796C821202A14CAA39132A61AB6B4AD4141A74F8D8645F02A1F392ACAEB65CB6E\",\n\t\t\"8D562314277068710505018A8888010909201F01887168140236242E6C23240D7F4B36022368050D\",\n\t\t\"8D8A01191FAC8E098B8DA6340D84B43676A04A296B9587A6891F221F100F1092938B8A2405368536\",\n\t\t\"30B948241F0509062414312F9503BDA7A705CB88099E95850D9814D1EB442C99292E313608081469\",\n\t\t\"0D23821728602DECFFB958283803B0A0C183EC385C01010944810F3610DE211101520305244EDC8B\",\n\t\t\"6363C0466FDE0650187142C0283B12486CD0F0218102750059A0E0D5A681830A09C04982C05384B0\",\n\t\t\"FF04A8AA151050298D1F84BB885622914A112B103CA30A83152082A942F60A525831E243830706D2\",\n\t\t\"84B9726244382B8C80324AF48B529C01846E21E490118EC734291078EBC8C61C2F7CF8ECD9181151\",\n\t\t\"A2160A035CB868818B480A1A245E1970E449EC51C39833237457834263CDFF1AB06AF9C0E265D05B\",\n\t\t\"B21C4071A522504F9F25D64BA1E0110812344664D925AA26DC5A6906744343548D91AF5F6D3C289C\",\n\t\t\"8B6E0ADA244814371727FAA90893187D2B6943B0F08E9D1E515251D04DDF36B3AA350DD092EA5A53\",\n\t\t\"1D3D0A403C22F6BF14F369C1599B6CD507100046924C00E534C05A5686A570C258E064F70A7B5199\",\n\t\t\"005524AF34120159A4A0915933021422FF8E220F4A224924AC64004B0334A070423727BCC0404136\",\n\t\t\"B89082041C74608F70C355074E22A940526253A6784383050645C1D2071A143080003028B59427D5\",\n\t\t\"440654250958D54B771AA521D12D183550830B8419B2E01A6B60B51756CDA0611F6A2CA880891A71\",\n\t\t\"9CA31F2DDDE4535F8DA8E97202095190704475CBD850839679EAC24414CA559180041EE956E8A390\",\n\t\t\"462AE9A494562A0407514CA1E0699626916980205CB866A744D4008923233247EA117A352041042C\",\n\t\t\"3102136A129C41A811355AE0991AF784B38C74A376C0E91F5174121D6E141C05851A97F0828D286A\",\n\t\t\"C4F026120D54700246DD45D3C0061150534565BC760712487450408247645C76FF02080E38B4DC3A\",\n\t\t\"7D8A076E4DF714E82B48599A64925C18AD240919098DE0420595C9790588BFB0D7522C1CB1619248\",\n\t\t\"161C4B0202367080273B24B480499CBCB0C5882A4D55A85D33DF89D2C200237824D14C14C0E7A54D\",\n\t\t\"0EF0F89F08218CD6E32286CC3BEC7D7C558208538B98A8C0032644F5410689BC52201A836E389837\",\n\t\t\"3CF2086202AC3C989D5BFA6934EB9661FC75B553C3801002D54039D2C8D20B7A869982C27578C5C7\",\n\t\t\"EC81204231454320203204C649023FAA222496CF5499F81F8076CB6D6276BD9CC01AC086B9430809\",\n\t\t\"36B026CE64190898C0E182AB15242D3A060B6FCFB5EC58CD533C3D603322262E43121BCF18448102\",\n\t\t\"27C007820DD2DA53C29D4B36A1D2D4BF6B79A391E74EA430426D4EF1268F81B544F68BCFCB5B7125\",\n\t\t\"471EED0C4ABF2C19D0D92506337FF515AF2DDDC69B7DFF6345021B3470811C1B17B5B82FDF8C4B03\",\n\t\t\"C97849C4828CC20FD0190D1E95D51D052E60D9303A68585251DA103EC3E021057E60410BCC113A07\",\n\t\t\"C44929237143775C20005289057C1C7BC348EC94828B55CA1E13AB40034E0398FE51800098B0540A\",\n\t\t\"3C9382169C20360CB842745C5280B2582A38C18A42435AA2810D3C003FC02355B54810A65519F188\",\n\t\t\"4808020021FF0B4D414347436F6E2004031039000000015772697474656E20627920474946436F6E\",\n\t\t\"76657274657220322E342E33206F66204D6F6E6461792C204D61792032352C2031393938003B\"\n\t};\n\n\tprivate static final String[] TURTLE_09 = {\n\t\t\"47494638396144004400D50000FFFFFF989800111111222222003232666600659800639696999999\",\n\t\t\"99993396966399CC00636496323200336600CCCC98FFFF996699336496639898CC33333330633030\",\n\t\t\"306330636398CC98CCCC0099CB3399CC66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\",\n\t\t\"44636330DDDDDDFFFFCB100000001000777777888888AAAAAABBBBBB555555666666000010000022\",\n\t\t\"000032000044EE00000022000032000000001EAB001E00001E00001E00001E00001E00001E00001E\",\n\t\t\"00001E000021F9040100001D002C00000000440044004506FFC08E70482C1A8FC8A472C96C2A6B0A\",\n\t\t\"C54301516C6CCEAC1669B179290DAFD8061B638B36500414789CB7C37421912890C0B686BE410AF8\",\n\t\t\"FD05057F7401050D850961362E245E3570593614787A828001191F9A01099C827582117C36242815\",\n\t\t\"6F904B5F797C248106011F1009100FB51F091F8505BA0E7B7A5EA94714082E1ABC0A14363131BF0D\",\n\t\t\"86CF8176A0CFCECAC0C2D9688B2E2E31A81D0D1424AE79C1DAE8E9EAEBECED427C0A06207509E046\",\n\t\t\"64E79004600F0DFD356FC44C12E70CDA2F815F2C50B040C2059F06EC1AB8F042100C8A060E1C7C0A\",\n\t\t\"000182898E103E64E8E487C41E73F6D64902F3AC4FA04E1F407CB0D51144484F851AA0F832CA5D1C\",\n\t\t\"FF4904F5908882511A28578614389334A6DDA1041B1A5C68C06062186593268261A90CE8D63C0E5D\",\n\t\t\"F8DCB2A858CA38611E3C40A020CFD8B770E1D888F2A051DC740D12B0C9A5F7EC5D2704F228283038\",\n\t\t\"0299240D30F8B3E1069DA22302BBA20C236E59C3AB5DDFA9D9051112850A0FF41698D28822B03CAE\",\n\t\t\"9E4528E44950A09393C47453B64EA28451A428CE09E0EA4F00999DD8F8E934A700858B3600BE05B8\",\n\t\t\"351A0992967081980EDDB5CEEB8B62BCF562D286A1D67E6475FC0841A6A74E118C7B4161772CD33D\",\n\t\t\"7D766508FF9BD3265C96CAE55106633BEA3D8648B31B2704CA64083976EC81955F7229534318207C\",\n\t\t\"0146232DD591D77316E6658749949994FF193B7369F081060EC43091057A0C64C3452CA5E8E24A7C\",\n\t\t\"7435917B2E28E0C224927540CA49615078124F375E604305B4FD9584171220D059113110D6092CD3\",\n\t\t\"61F04091460A2146955866A9E5965CAA935C3E5D3AD14014529413661369F0F5C06F0C9E29440D7A\",\n\t\t\"E90582206D9E39210624CC99407BC378D10F987799C14A030A013A843F0DCCD9185C8A7017238C57\",\n\t\t\"75F7D8103584265C7FC200C45818DB0CD46225CE34DAD5A88C28400202751EE946680A80701A45AB\",\n\t\t\"0C6A8743D524784D6CA43804C38DA92AE18F037A8DE9D017E4B0325480BFCD335D497CEC4459ACB5\",\n\t\t\"15636369CEC4B74B02195852C7700674D21D34863A2691A3FB5542522C208820FF42BAF86DC46129\",\n\t\t\"958DA5080586E45141058914A28B146A49A1CB2EAF5136A94FA6ED010A749CD041C8B5CC7A888D7B\",\n\t\t\"030168897DB4A45B312E04F2664DAF90AC34E8C17EA46B0B79E51118A08261604AB038D790736E2E\",\n\t\t\"204C618B5EFF52B394CAEEF054896F9DE4C2C97CAEF9C69BAD0DD480733BE63472516A82C4349D2D\",\n\t\t\"B66CF24782950D9C738BAC24B88B6FD9069213D5405DE99E0D5D5C23D19E4A051C8D1E09449008CA\",\n\t\t\"1FAA43413F1FF863C02AD8B5F20C21C561C8A11E3BC5ED65ABB16C90486CD50C5ACDDA4B0DEAB13B\",\n\t\t\"63EA698043DF287ECD7B020FDADD1737FA64C25CA616ED420D5D51C8122B0E9844214A6151D0F958\",\n\t\t\"9408CE94A0128A2131D1B81404C6F176A756B0E410133EF780AB8D1E6D242908F049447272CED32D\",\n\t\t\"06E1066A01AA623EE8969BD867AF7D2A41000021FF0B4D414347436F6E2004031039000000015772\",\n\t\t\"697474656E20627920474946436F6E76657274657220322E342E33206F66204D6F6E6461792C204D\",\n\t\t\"61792032352C2031393938003B\"\n\t};\n\n\tprivate static final String[] TURTLE_10 = {\n\t\t\"47494638396144004400D50000FFFFFF989800111111222222003232666600659800639696999999\",\n\t\t\"99993396966399CC00636496323200336600CCCC98FFFF996699336496639898CC33333330633030\",\n\t\t\"306330636398CC98CCCC0099CB3399CC66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\",\n\t\t\"44636330DDDDDDFFFFCB100000001000777777888888AAAAAABBBBBB555555666666000010000022\",\n\t\t\"000032000044EE000000220000320000000067AB0067000067000067000067000067000067000067\",\n\t\t\"000067000021F9040100001D002C00000000440044004506FFC08E70482C1A8FC8A472C96C165929\",\n\t\t\"12680AD290524C28D6C965DA04279BD8763ABD28A446794011A7102D92E23AEA1A2F94C6A3004A34\",\n\t\t\"1A637F80270D72058787018A098A018C01878284025B764D0A6102820D88058D011FA11F091F20A3\",\n\t\t\"908A11056A03802F965D3680829E8D09197D100FBA22A190052491926EB04D508002797F659C7F9D\",\n\t\t\"AB9B276C0D0362142E14C54C29230A731414D5292C421408E3622E29150D463105A4A509110A1227\",\n\t\t\"1CDAF9FAFBC52995FC0091D490636014B006FF88CC21412241822B018FA4F8326D93454E6904D900\",\n\t\t\"1766E346802938CD51E082841893B238C16B9401020413104040F8A008510314164F248CF8254F4A\",\n\t\t\"FF4F89404D7119D354869ABF36D5A0912D229189842C023BE400511A61C032DAA0D1A08D0DA71D04\",\n\t\t\"2800014A4301182E6C0C88FA87828011025A5DECA8A9C108700450D8D80956090B0AFE5A90EB4BB8\",\n\t\t\"B0531BDE1EA43931D8B0BE1309C892F2F4150902310F4E90A0D0D8F110049A1806ABE076A33F2335\",\n\t\t\"1E4C5EE598438A1827FF5453134D8C00011429DC4DA6BBB336151C9B0A19932C0C2D540E1F052BE0\",\n\t\t\"00908DC5627CC3022EA14F0260DC066DAA155494A8EBB502646426C6A982110DD2CACA9387EBD55A\",\n\t\t\"19BC33EA14C040F34D940A7FF9F3333C28112EC1E4926449A1C08C1A2F3040580AC9D0120C4BA0D0\",\n\t\t\"04C25140FD42D37DB39447581B0380F1FF4730CE38F24823CF58D44A35C2F5D5535751B9F0901F0D\",\n\t\t\"BCF84B43D7E574825B7CFD36C272246850811831BCA0911A5C29C3DF915D75A50936D8E4A8CD8ED6\",\n\t\t\"4540DA0817AC9552546564691B052AF8C341570C25F00008C054A0401B11B9A0809343B401D8082A\",\n\t\t\"20C1820A2A2850430D74E2E3191263ECE9E79F80062A284F032134A8251CC831160852B279E85334\",\n\t\t\"8E324A029525B1511829FE594364917D004FA54620209A688E829568031248E0D02A0922A1428F1A\",\n\t\t\"8C428205818E30862C65C036C68D5F0DD600A307F939815779E0060E7F3190E042266A7538C08EE8\",\n\t\t\"3510A7632A88D1A118170D43061BB8DD38820B2D08205D311C7499D0440D2629FF88B2CE34905403\",\n\t\t\"34C862037A62D410500D149CF0400335D8A085BC5F68068D2753C403894A07B385020AA53281C203\",\n\t\t\"369812D91CCEBD95517841D53222899BE0F4913E1CCC114104AB16902F5B9C30F26000B888E0B2CB\",\n\t\t\"1F64009E30F2BA10434473B820412129ADC7950355811280020F8C39454DDC6D32C09D0D7731C75D\",\n\t\t\"642CD38003159040E222C9FD829478CBD8808249844910F57657CB1C93083299E24824AB949107D8\",\n\t\t\"846D64A44ADD89B08B80108870D4BBB4352040AB7D4D144E54F445488529310BDD08881A811A110B\",\n\t\t\"EBCDF6E0217BD394400896D394C841B2A9E56FDC71D1828801FF1D3E852FAB0873C26DD68CCB0F54\",\n\t\t\"483A83C82790F0A8BECA26E8B95918E475F5ADE87BB2FF715D467FC4DBCAE7FAD960C1A50E2EB7D2\",\n\t\t\"54D0F087A5DC4D3B31E70828D43042040E7CE161B6E0B742481A64E4E182531CB4D0A559A3744581\",\n\t\t\"90EEFB2D6F1BCB78459B1877B54001BEF981D44DAC1AA05A0360701B35DCE6467938506DC8B02312\",\n\t\t\"8C404B576803AD40A6004F7C035F14D08B3FECA206E280033645789BD548170A0CA02920F3DA4C57\",\n\t\t\"F662291220A0017A2242064755B4344C6B502149410B04F3A82E40CE02E7E8A1108748C441050100\",\n\t\t\"21FF0B4D414347436F6E2004031039000000015772697474656E20627920474946436F6E76657274\",\n\t\t\"657220322E342E33206F66204D6F6E6461792C204D61792032352C2031393938003B\"\n\t};\n\n\tprivate static final String[] TURTLE_11 = {\n\t\t\"47494638396144004400D50000FFFFFF989800111111222222003232666600659800639696999999\",\n\t\t\"99993396966399CC00636496323200336600CCCC98FFFF996699336496639898CC33333330633030\",\n\t\t\"306330636398CC98CCCC0099CB3399CC66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\",\n\t\t\"44636330DDDDDDFFFFCB100000001000777777888888AAAAAABBBBBB555555666666000010000022\",\n\t\t\"000032000044EE0000002200003200000000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF\",\n\t\t\"0000FF000021F9040100001D002C00000000440044004506FFC08E70482C1A8FC8A472C96C0A498A\",\n\t\t\"2824016AB0922EDBE9617B50AECE30F3602B9B4FB601C9D5300B2894512B4E4989EFC3547940D116\",\n\t\t\"1A0D0505018401098385090124800D270D03231678481C36242429128C8F900D140D15158A018201\",\n\t\t\"1FA81F2010201F86A57F348D0D022F93944D146FB32483828AA8220F10ACAABEB39F9F6FB861BA02\",\n\t\t\"03030280368098817F828D688014686C17287D36762C29B7CC2C2C360A20051A05159F1428E3E536\",\n\t\t\"08427A242A231CCCFF00030A1C48504C0D12201268F85080D1392315146C30902053C1242C469441\",\n\t\t\"432D10B26CD338326A63030C400E9814246087C9CC8059BE107D1001C1040476AE4C111A09880689\",\n\t\t\"FF921789D09B0648905142AD1E801886AA50A1020E1AF5116023E8107536FA9C40E1F19A51907F1A\",\n\t\t\"24A8880C8D0017032EB25021CD01421203D2740405884FB7470EB89E8063A703234C8434248890E0\",\n\t\t\"525004F898A418E0428549AB902353B21191535F8C7AB25E965C64D387B1093E07A88A44019408AE\",\n\t\t\"12C0E07C04410312180A28280087AA191B73C6B970F1D70A6B22EA5EEA3A417C961979DDCCA090F0\",\n\t\t\"BB831E691F018F0541289001427F5E722D53F0848206E1CAF569D411518104194EA10AE12ABD51F0\",\n\t\t\"DC00D5D84C8982840D093FF722B16D1B2007500D92DE679F29320829011810563223BC70112359A4\",\n\t\t\"01D321D885B64A4DC44020427AB02CD2FF1079E358A5471C6D00720822867C90C1582BA658482F7F\",\n\t\t\"9C20806D144446CD4B8D7C3588684E65534004D60032541B8F5DA48771D554345B20069270883670\",\n\t\t\"9014C90829205064413FA5011D32B2BCD491366750D0C208FB25F09A040F08A0024014AC90C2421F\",\n\t\t\"445003343050D58646E49935421C45DA50C377E35450C39A057100C20051B800475648B070422627\",\n\t\t\"3437107D92566AE9A598664A84045A50AAC49592A630023B20B4B4440A1428F0286995B200454220\",\n\t\t\"B4621112246CE264459E4AC68258D4C57A9E6F48D8004204D4FDA180A5DF91B0016A3FDAF0428D29\",\n\t\t\"5C61D26C11984602A614C8C2532D1D9541013436BCB1E708E4822A9956653C33FFCD0B71851B57BB\",\n\t\t\"6DE466AE551CBCA00579C848F50871C4816286A46DC0D149BEA67CF86B1BFBD2100E6B2CE812E596\",\n\t\t\"11105220826395C2133565E44A89027C1171DBBD98E858484E288244CD23ACFEC329059844451235\",\n\t\t\"983CFA944C22D44C8C2BA5C0926F5CFF7040801EAD9C97C9088E0C7CDE794E2DA5542BD81D35D246\",\n\t\t\"6868DC0402BC6D70C858BC9581704F003690F329A0A548B2513468DDC60BF38A81D208A268F42535\",\n\t\t\"0D211D4006197CC04A86225077E2825A8042CF451C2850F696453935374D19B2D2CA8AE6B9EC082D\",\n\t\t\"3506F52D5D8DC0024C52B1BE629E2F3CBD2C3533658CD0C951A57088CA2A4A355514DF9F7067953A\",\n\t\t\"708C474221D76510D86B2B8A64F05E2FDAD4C5286429CCC80BEF5FCD9CCD7EB34CF5EDE7FF6C4470\",\n\t\t\"90D98CF5559EAFC545810B2B48166EBE6486EC1548F9D2424D0B0354D007F0CE464339DCE197E82D\",\n\t\t\"C60D901B8D0065933055CAE8FC148103CEC6004323D2D09A84FE639CAC7C021309D8C04240B001F3\",\n\t\t\"A58D092C40540318F2197940034C514299E788C081019CE7760F480123FC0110152044030B898001\",\n\t\t\"D8C0001750A50EF17BD9595250816B1D211D1DE00009B1343B4344A02E710155C36018B94CE1E627\",\n\t\t\"24484CA346808016304F53466081BD8A08C52A5AF18AAC09020021FF0B4D414347436F6E20040310\",\n\t\t\"39000000015772697474656E20627920474946436F6E76657274657220322E342E33206F66204D6F\",\n\t\t\"6E6461792C204D61792032352C2031393938003B\"\n\t};\n\n\tprivate static final String[] TURTLE_12 = {\n\t\t\"47494638396144004400D50000FFFFFF989800111111222222003232666600659800639696999999\",\n\t\t\"99993396966399CC00636496323200336600CCCC98FFFF996699336496639898CC33333330633030\",\n\t\t\"306330636398CC98CCCC0099CB3399CC66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\",\n\t\t\"44636330DDDDDDFFFFCB100000001000777777888888AAAAAABBBBBB555555666666000010000022\",\n\t\t\"000032000044EE0000002200003200000000F80000F80000F80000F80000F80000F80000F80000F8\",\n\t\t\"0000F8000021F9040100001D002C00000000440044004506FFC08E70482C1A8FC8A472C95CAE488A\",\n\t\t\"0729D148291B52D027506834BFE08EABD150906DB61785E4B20904B6011A2D4055C2F8E329DEA090\",\n\t\t\"1B05010120090109815C88055D3464232814365679452C340F050A20200A2D670D27277F0E0E8B8B\",\n\t\t\"011FA91F2210222086A601245D673691944D1402147E366482850519A89B9BB08B0D0911247F0D72\",\n\t\t\"032E031CB85F68CDD705CC80D77D23A068DE6B24821A090A2427D3D442082D2B29A81A0605DE0CBA\",\n\t\t\"92422C432936242A27FAD6091C48B0A01116916C190C238184B14D8B485050328244381B0BBF446A\",\n\t\t\"40020E36640D1C502183A24149340117A614E22B942F45813280106102822641A602198840E6C480\",\n\t\t\"FF6F16D671E0A0C00688142EC6B4F145C60F20415C04CD04F1404B21A83867F5FC1969524621FC1A\",\n\t\t\"3025436256CE525D12A80529F6A733010D5CA02080C2168B395E07B2608626068C3F4E79F5DC2360\",\n\t\t\"040C155FC13CE0358682BA240857269E4C9909BF142C241BE1A7604DE7CA4838407910250108894A\",\n\t\t\"6C2848302FC544D046CC98330062510539D6FAEC5263A14F0B01B091A898C3C7592D1BA27CD96276\",\n\t\t\"A26EF0212D5ECCF9436BD1165306B8680325B6850DCD19230DB8372227A20F09567D18165596833F\",\n\t\t\"364EBE165A86040D1A7BD00CF0465616D442ABA1A7567A6BB125167C1851A2020529281001810994\",\n\t\t\"851C1903FC54415938A1F20104109850FFD326EB5D35CC76DF7C67D0500D5430E181801C524021E9\",\n\t\t\"AD6788080F88904A22DC8C27167803A5B04B2F1C29921D7AFF9942865A67884282352DA480405E05\",\n\t\t\"DD654B28A2909149845AB948CB277FC035C218274CE11006FB2DA45F0C3A96F447736D5DE3130244\",\n\t\t\"C4C0113A2C3420C14208D8D00527CC8C60430C2DEDD7932D6E908040033C52C60267B569B04C1F72\",\n\t\t\"80C782002D3CF9DCA59866AAE9A60225CAE912778DB1A4A78A56B086370922818038B52D066570AA\",\n\t\t\"69028169A91ED1190811D4964DA67B29904A7A819888040B0EF00985A6615A551B156AA4E01A3FC3\",\n\t\t\"45628144D1BC1A5C59129CC38C052F54995F1C158E40E92EA44EB6D41CC9BD80FF9B2F148CC7145E\",\n\t\t\"9A6ED480476371531772EFF92280B5934D004E28565A794A000D44F5227CA00810146C4BEA48DD2C\",\n\t\t\"8608F81F54DAD43BDF64FC08E61620886085DE8B89D082CE1F7E56969035187251C82AAC40F0C075\",\n\t\t\"2F06A28D003A92F042B94CDCE5A73E5292D50F54E7B1F24055AF60758C584C4572F33AFC8C70CEA0\",\n\t\t\"B91D69DE1619A815B116C31CC2053748F3BB0407A212924D8409B178DF851D67C0724D1CDA98E1D6\",\n\t\t\"4DAD7B3118235420C10687405116C0406673CA8B2C3FC02104AAE0244C44629D3C771E4369D34242\",\n\t\t\"4E51178B86C5B01723C11C03E68C4219DDB50B75C90C0C4C2A8243F08A8B65D1D21C53E37D252505\",\n\t\t\"0067334EC71F6881D3553602738306052D3C66E67891E7C4B179996B45C6E7E03C6EAAB0292C2C90\",\n\t\t\"2EE3895292296551B756F5D7F432C2F61572478102298C5090BC7C399282EC9977590BD203B450D1\",\n\t\t\"141A0420CF92BE0BC48F8EB00FB60D8572F8F11E8514D0C7185E44080528E042380B83940855A503\",\n\t\t\"ED613F7BE0487EE6E61A845486191130C0336806987A81C3059EA81F686C509102C46F031188812E\",\n\t\t\"6230823D08865243B081DDAA902917A400041BD0C0C12A50035E08CB08927012A7C0B70803868F77\",\n\t\t\"89FAD30BBC7629D728E053508CA214A7688420000021FF0B4D414347436F6E200403103900000001\",\n\t\t\"5772697474656E20627920474946436F6E76657274657220322E342E33206F66204D6F6E6461792C\",\n\t\t\"204D61792032352C2031393938003B\"\n\t};\n\n\tprivate static final String[] TURTLE_13 = {\n\t\t\"47494638396144004400D50000FFFFFF989800111111222222003232666600659800639696999999\",\n\t\t\"99993396966399CC00636496323200336600CCCC98FFFF996699336496639898CC33333330633030\",\n\t\t\"306330636398CC98CCCC0099CB3399CC66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\",\n\t\t\"44636330DDDDDDFFFFCB100000001000777777888888AAAAAABBBBBB555555666666000010000022\",\n\t\t\"000032000044EE000000220000320000000017000017000017000017000017000017000017000017\",\n\t\t\"000017000021F9040100001D002C00000000440044004506FFC08E70482C1A8FC8A472C94C525214\",\n\t\t\"0A4BC9692812894FE1D9EC7A3B0D1296A420352C360AA9751A0CD2034163D438A16CD3AFDEC878D9\",\n\t\t\"FE0D812424011F5805010105888B05618F36288114167B4979422C36278F6109059F881F01581F1F\",\n\t\t\"2010A9A6A4881901660D69026F14961D2E643665810D2DB136038136BCA18AAE1F222086898B8187\",\n\t\t\"B1C1B1BD2336047F6D0F5CB645149B36B0BC9C0DCD0D14B3BC7F78DBB61CC19F1F1B0E142D140C35\",\n\t\t\"69483616F4EBFDFEFFFE58BC7061250AC03D2E148050B8AC0126222C528C5033204AAD837AEEFCA1\",\n\t\t\"7042DCB8668B5E390AC4498E8D141891748B72E2DB2745090A8930014121B344CFD09513A6CE120B\",\n\t\t\"FF1A0AAC245050A69B0D6A27283470D028512264201E281855C8941672B1EC001BE0420087941D34\",\n\t\t\"09B028AE000947681D3005158AD7AF5FC3D48839F560D043809AD20988E1B6CE309E4753A4B001B6\",\n\t\t\"0B8B06291CA550306044E1C74552DC85FC6F443010A448BCF84AF9C8371020486C28B74482838524\",\n\t\t\"A87536721844CC04AECD0AF0D3AD819BAD14468C453179B5100482BCF9FD256098B7BF9C5A5EF42D\",\n\t\t\"84423012C3468654C4D629B87234CAF57CAC60A3D2402111E1B4EA2ABC4861C1DEBC4009D628A006\",\n\t\t\"37036438057A19EC51A1100DE275FB4FEF2655985103607FB9E5C0598964904102A9404093325A38\",\n\t\t\"F50A38B9FDB25C171C10500608116031FFD408488DE35623A03C65CA7CA83C10533309ECE7D61B03\",\n\t\t\"B4404F4F14ACB7CD4ADF8D3388530618405D23E31C32122F464541D0080F14D2E209FF68624E1D0D\",\n\t\t\"4802DE156280D7575F3D5920C0810E719692581501138894C6A5A154473608409002CC1941020511\",\n\t\t\"9050518D7EC4D2820D320ED18D602DB42904074F4CA50116719613C57F1DB0E727158B36EAE8A39D\",\n\t\t\"1509A91E9A94414236884E4A441544918099225EFA59811AE35C78C4612AC63942A8CC25A4C00349\",\n\t\t\"82409A127295A3C2A29C2A93C522D0B130C513F3A4334F035D29DAA61AB065A145040214A7D71FCE\",\n\t\t\"A6E35FA38791A1C0487F34D6D25F63A561C6093454D4A80B1A6D74E5B94AD160FF5C0C951C1B5771\",\n\t\t\"7D2922EF8AE01458C176940D46C75F2361E19A844E398202382754305B672A00E39159558D874579\",\n\t\t\"E245E04039492965C30BED8295703472F0B2C87CA7A4F2C0284D3123CD24BF646A4B37CD3E474848\",\n\t\t\"19A002C103A031F3DA8F220AD3C61F29D5062521F292F214168540501F292F2932313AD3DAA2C944\",\n\t\t\"6908EBF1226A91389F0833A5521F550564C06B20729863AA179552E922277FD1504105AF89F2C1CC\",\n\t\t\"222F5388225686230EBE5D84015A7E24B444F074002B237806C940608A23625C67610B00B08AE844\",\n\t\t\"977698820B1254400D303906C24C89E3258319C41FC1320C35BDE466140B16A9FC67071CB4CE8102\",\n\t\t\"F7A6E1F147C514A2CC8C53098868964E6608404F37272C021B0636B0AA8739490DC309D024362F86\",\n\t\t\"59437A94540B230C42F450299C603CA59877CC8B196695D12F9030A2F9470AB04C95801A15606494\",\n\t\t\"1B74B8858B59E00BB3132C14842A85EAEB70E451378A43812466B1BC34C1807F60C9CB0062E0B340\",\n\t\t\"44230A3CA1800B80B33DE62820027F80C16CD0018B8A4444132D5803B52A702043D8A60530984837\",\n\t\t\"A6709716A8000A8B3A89025250954F54A0013558211252E007046284034721031666E80B1768AA0B\",\n\t\t\"269847FE8EC8C4263A913941000021FF0B4D414347436F6E2004031039000000015772697474656E\",\n\t\t\"20627920474946436F6E76657274657220322E342E33206F66204D6F6E6461792C204D6179203235\",\n\t\t\"2C2031393938003B\"\n\t};\n\n\tprivate static final String[] TURTLE_14 = {\n\t\t\"47494638396144004400D50000FFFFFF989800111111222222003232666600659800639696999999\",\n\t\t\"99993396966399CC00636496323200336600CCCC98FFFF996699336496639898CC33333330633030\",\n\t\t\"306330636398CC98CCCC0099CB3399CC66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\",\n\t\t\"44636330DDDDDDFFFFCB100000001000777777888888AAAAAABBBBBB555555666666000010000022\",\n\t\t\"000032000044EE00000022000032000000007EAB007E00007E00007E00007E00007E00007E00007E\",\n\t\t\"00007E000021F9040100001D002C00000000440044004506FFC08E70482C1A8FC8A472C96C1E4923\",\n\t\t\"50221150A59C58A782A4F80412D204E965B39D4E8D41994241931A27949A92AD27298206095D68E8\",\n\t\t\"C10905010105818283110D7D707E0D34652C764C2C65958A8387545F091F22109F10205E8483248B\",\n\t\t\"7E27360D142D140846169149366F62A6247B688A8D7E82058719019D2083016FBFBF7E037E66AA6C\",\n\t\t\"2460242B0DB2924714650214236FBA67AACC362314CC0229290D1CD6EB422C34BF1A1B0E15230D35\",\n\t\t\"D857ECFAFBFCFD1D2F6F1428B051CD1F960AB8486858A524058501161A8CB361B04E053DB85229E3\",\n\t\t\"D52B909846CE50B0B191AF62116C6C1A21FBD5C913082984A85041668C63834A05ADB1D85969192F\",\n\t\t\"FF1A15224CF9C5094408100FBC7C7890D45081086F18316BD062C400027EC04838A10E490B170D52\",\n\t\t\"A8C0A580838276360650E8A6B280A95DC756728CEAC224166C36C80C8801EEE6897A36BA76608560\",\n\t\t\"84DD26235CD0FA35C0C588B387F9EDA413B922A5065D3041AEDCAF82DB37DB381F492110E9879904\",\n\t\t\"DBB1112060C08017372BA5163D84C55A400614246820E0C5B65465E0944935A082AABFA972567681\",\n\t\t\"A212365EC50A4DC1E448CF54892F2C54A6F4AD178900C48A7D188F29107554DE789729C98F435A72\",\n\t\t\"E2A01112040202D3301F5E869F8F296ADA3490F47399757FFCE2C07C0564D009281088E005271F20\",\n\t\t\"838B4DEFB9F0900D14D83690724390B0FF5623F53032822ACBD0C41F79E389F000311924D3802152\",\n\t\t\"DD340237D06CF08502AD24C10109368010C12F294850810B0294E1932EDE1563008212CEB70A1CA9\",\n\t\t\"A44299052F5490A141B661F8904D8A40F359236A35924A0C86D1460477488609E6467EB091820D2D\",\n\t\t\"A8708299A32960003978C060559148A044E71029B4F0400A1F68A041011BE0C286607F36EAE8A390\",\n\t\t\"46DA01256B702829129408D4801430307A699F5C2804825B147DCAC4380F44B0455890927406654B\",\n\t\t\"A4E0580C14A8E028390A3CA01B081E2A37926F553D4483A591A5C08514E315328643C1156983B3CD\",\n\t\t\"D8D01C7B9CB140822853241BC1882790A098967968C44B19DA99F906171B2CD2FF0C6CFF39E2D62E\",\n\t\t\"36A9416C457E19E9532FC97C514A547ED443C34D0294CB59B47DB154CCC11282F4E44D28C4522C1A\",\n\t\t\"489A32C5C4A765108C2F88F4A18A33B1CDE60F076A04D74B040783E152794CE2AB0C5E1EB717DC96\",\n\t\t\"F852D18909F7513C8847C538808A6B0314396F1D94A8D5861E988817C6171F80A2D44C4EB6E92133\",\n\t\t\"D4AE43F025F2FD6234042698104AB2E7714443C88D9580400AB2E0F5F399667CA8481F0E583DC878\",\n\t\t\"9F3C60DFCDE379D107541CA1D4826B040427018F0028C1327022F785D021468BF285DCC4B8580833\",\n\t\t\"DBA4D1CA323628108006B99DB099111E2AF092401E8A7C535B4469823479087629E693DAB4901078\",\n\t\t\"BA92A0040B98BD34BE710A80BD874A238690F2B6797D78B99BC2C0A9E01D2E4D5CB0D6061BF01A68\",\n\t\t\"BF283C92924AA65067B5CE6E39056523AC1001AB3F948639802E5F16007A206BA342CEBF18D2F95C\",\n\t\t\"5ADD21A91248C19931420B0D344A29926D74FB2F23420B870048208140392A4B69514B91E095065D\",\n\t\t\"948A12247048A4D6D213D7386727056141C0061035DAD0CE73BB8941032CE0821AB4AC081D140DC8\",\n\t\t\"5E248C422D422DA53215111C2310CF0540206FF2940C8BC0010E98A05675D9A1108748C475040100\",\n\t\t\"21FF0B4D414347436F6E2004031039000000015772697474656E20627920474946436F6E76657274\",\n\t\t\"657220322E342E33206F66204D6F6E6461792C204D61792032352C2031393938003B\"\n\t};\n\n\tprivate static final String[] TURTLE_15 = {\n\t\t\"47494638396144004400D50000FFFFFF989800111111222222003232666600659800639696999999\",\n\t\t\"99993396966399CC00636496323200336600CCCC98FFFF996699336496639898CC33333330633030\",\n\t\t\"306330636398CC98CCCC0099CB3399CC66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\",\n\t\t\"44636330DDDDDDFFFFCB100000001000777777888888AAAAAABBBBBB555555666666000010000022\",\n\t\t\"000032000044EE000000220000320000000057AB0057000057000057000057000057000057000057\",\n\t\t\"000057000021F9040100001D002C00000000440044004506FFC08E70482C1A8FC8A472C96C761003\",\n\t\t\"852292A892482CA7D6C96A3C408A042861A30C29A7D3C0661BB847A486BC6113C0CCDBFC91CE2E9F\",\n\t\t\"E60D051F018405050186880106110D28747336277D297A4B246D0D6B050988871901091FA21F2226\",\n\t\t\"1010A482198657098072360D23176C241F1F110A361C4D2C36237D7F930D02812486098901190919\",\n\t\t\"B8CA050D249E056B14732E96431C23145859492C14B26E6F737F91D88036422927242A03DBF4432C\",\n\t\t\"34CA1A1A11D20D141408EA091C4870DB2F1B0AFE852BC850C9BF59C11A6E6910669486310528C0B0\",\n\t\t\"11634D99698738C14A27ABC18917302A492C52B2E4A1008360828000620CA298CA943133048844BA\",\n\t\t\"FF7F78548EA3A0528BA47472A23968500866A90F63C44010B1B35F1C58C5E690487085CB37651FB6\",\n\t\t\"C611D0879D5664C88E29103B47801B3A274654A8D06BA52F727D6CC0705B876C51BBF43810BDA260\",\n\t\t\"5C5DC088136BF945E2412765241433A450832B096F78241B61F16BD2C2222C52B0B1802D2F9BCF8A\",\n\t\t\"539090A2AA0026369106F061A3260E5237272CA06E386EDA6A05D24ACE69D5C080814E8860C9163E\",\n\t\t\"9BC26E8268FCD9E0C9A90A295C9E3A19DA7E05901B0AD79E77E09CA7056D5886408980F065D4079A\",\n\t\t\"22407C78A6286D2C4D7C64B7A8804252030C1234701813A2B94156209E34754829A8B0F71808227C\",\n\t\t\"B01D716D8C30821B2DF826930235E841FF8E3F80D0404305C81062E228A19042C82BC9F4C3C72478\",\n\t\t\"FCF217138229D000576BBD168734EBCCB16221132E15888BFE3840031B9959C20126203890800A2E\",\n\t\t\"B41087021C88E616883D3640C31C236438477F1464D8C7372A8C30636AB0A923005274C8964292BF\",\n\t\t\"C4D08E6648D830461C23CCE20259E2D179040B033C90C218832420C5097DFAA9E8A28C364AE79BCE\",\n\t\t\"396A090C983446020C0A486A14059C0C624DA29A0E612309354570C500A086CA8D6A2EC46061AA89\",\n\t\t\"A5FA4F192ECC8AC299927D7345239112F1CB006E7954120D0290D5AB6236AC36D32822BD809724C0\",\n\t\t\"BA85862C5B96844D0D36E0CA100BCA8E82510415907585305AB988020A145420FFC709C5EA661789\",\n\t\t\"B88060EA2B691023473F9C8424CD2371C8B28E00D866BB120B354CA3491DB2F9989D89DB05606A70\",\n\t\t\"C3ACC36E192BB940405E8008A21322A04C4848C63CAEDB8744BF64D9800B0580606206EBA9AC4828\",\n\t\t\"0912E2C055FE4142B11114BCA02D1207215540048A94B2DE179DE01213CC2FB9C64E1B36B4E0C29B\",\n\t\t\"A751B056924C98F7102041B78C6202EBA172B42758C9418E856E11F08715BC6881C93F7F5C61E28F\",\n\t\t\"A140058109A744D8A9A70D988A4E2C400502C2712074B5986908E65BCD332288F0C0030ACCC79E84\",\n\t\t\"3C55D14FC26DB400C7562034C042A6797C785520726CA59D893561E7603543CA21DBB350267CEC16\",\n\t\t\"07F967EF314923B7D1224D40DEA8F4DEC5C09A041A22CE120B9B1927B84C35C94483950DBE23B10B\",\n\t\t\"A986A2E59324264BE336D8D6DB37393A1FD5339702F25591820415B440010A47FE93E71F2EA5E51A\",\n\t\t\"6444AE6992002EA89082E6DB10F08D045250C4C1801D104D19C0338CA344021027E85B028992AD37\",\n\t\t\"D1691CE4125BC2E6808D01FC61000111020BBA34809D01861CC5320705E464925800E039AF5B14B7\",\n\t\t\"22D0867FC0C002233892AA9C47915138A00217A8410DD6304323B4001E1A8049013630B5C8F4D057\",\n\t\t\"9653CD6AA46139231EF189508CA2141B12040021FF0B4D414347436F6E2004031039000000015772\",\n\t\t\"697474656E20627920474946436F6E76657274657220322E342E33206F66204D6F6E6461792C204D\",\n\t\t\"61792032352C2031393938003B\"\n\t};\n\n\tprivate static final String[] TURTLE_16 = {\n\t\t\"47494638396144004400D50000FFFFFF989800111111222222003232666600659800639696999999\",\n\t\t\"99993396966399CC00636496323200336600CCCC98FFFF996699336496639898CC33333330633030\",\n\t\t\"306330636398CC98CCCC0099CB3399CC66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\",\n\t\t\"44636330DDDDDDFFFFCB100000001000777777888888AAAAAABBBBBB555555666666000010000022\",\n\t\t\"000032000044EE00000022000032000000005F00005F00005F00005F00005F00005F00005F00005F\",\n\t\t\"00005F000021F9040100001D002C00000000440044004506FFC08E70482C1A8FC8A472C954DA2824\",\n\t\t\"D0E75320A59AD8AC7648190D28029B6D406A9C1AE651A326BE6EB59C8622213590120DDB19DD2814\",\n\t\t\"027F80807F7E807C24057C360268038D14081C2A3657360F36245B29627B7D7D090120105209091F\",\n\t\t\"10261010530553207E05097E666714278C6889242C6F5C360D6568140D150E85B00182C97E0EB989\",\n\t\t\"68BFC0362E15BBBD422C140A2020B22E2E68241C1DD9625F7960C0C28E7CD094D7F058290D091A0B\",\n\t\t\"54090A0A0DBCF1FEFF009BB07013B0601309245C9080E1C2463F8358503C780022192812025EE869\",\n\t\t\"D042CC2F147E48040B07AD013B3427068421581001051462C23C6B052AC00711A340B5CA902C804E\",\n\t\t\"FF58ED0EFD1A718100300D741464D2828EC2805F8448182094CCD507293629EAFC84A7111F04FF52\",\n\t\t\"BCA4010C8C9E32CFA2F5A91212ADC8670D5008387782020B1636462018F1F08D8A71D7CA25A0E1A8\",\n\t\t\"0B8516239E405CCCB8B1E3379B6C287840C2D1E380D4B6758B40C20BCBCBF1360D6811C6A318BBA0\",\n\t\t\"87DC8D46A96F8A13294F0F3387B25603B22712BF80813A200B17FABA5D9515C1C28B0131F2EC2960\",\n\t\t\"A0A72112113CA180CDA7EE098F9F89B07831A2C9BC3E22F308A010CD4FB73FA078FA294528D0A076\",\n\t\t\"27609E6E30A2028133A5129050A1654C50F7368960825601E0A48A0854F4D487029C4153D8786A88\",\n\t\t\"44870D8069D11105189E508002CAD8D4FFD329AA40A0C00719E0F413490DD8E288180FF5059969BF\",\n\t\t\"DCD180033539E75355A32C038C2C7029428141A6417346279FDC68882E7774E5CE198B58314F7658\",\n\t\t\"A840C203DB28550038306238CC907CA0604650B79811CD8FBEBCE0621614A490026572548844647A\",\n\t\t\"A444410CE3D169C1134F41991A139D9912813115A4D8C09E6F509282022394A1409A6E12EAE8A390\",\n\t\t\"462AE9A4589CD61AA55958A01422B2F08329136295614A0065D8F0E9124A61B229627C9DCA844B6A\",\n\t\t\"7454439AAE1E81D70B1624B6D12F61BCF0420A673A062C12789137C653278991C71A5D686401038C\",\n\t\t\"CD03DD06AFE45109274FCCA6161FB82987120D346017EC162CC8B1CD031FC842FF42052A9191877F\",\n\t\t\"880C82485025D525A647BD2161C1B8431C3AA24FDC74AA51348894616421CB445000599EF031C017\",\n\t\t\"E21AA1A59E432094A4021894FA9F7308C7120B8FB014D00C4A503082A10B2A8815C609246C20C109\",\n\t\t\"0A08B48F699DF8916E2B377DB00C28A50CE2611542FAD802798ED481C009FC1E31C21E675C594045\",\n\t\t\"36894291CE577143A2CE7FD0DB8E182350E0422C362915B316B690A096C2056490C14DA374538A2A\",\n\t\t\"52E86C0AD6057056EA30798C3642A262F712837FED20C39329A688924A8E5789F05E2C60B6C1410B\",\n\t\t\"30A0008F68628AB4CCE5695F35CAD4093C00C132212B82AD6F8B180B4C7B7D7478D5D574F4744C19\",\n\t\t\"4FF121804178A1D8D44E3581801D004F6B83FC315CC3C0F482008D86B65149CE1C13B2015365EDC9\",\n\t\t\"2C18BE2B400A0898FD0F0B93EC2A8CA0FF91003A3073BC8592A0A64D9F420B81FD52C3862984775D\",\n\t\t\"4AF08DAF352D7C449F473F6A5A80612F0AFCA2C0C7FAA9800BBAC086F1D40543ECD8C89048E02541\",\n\t\t\"B9EB049F1948606A3082FF290C01C0388258F41086D841833C2F605A5D92D60B0E10605D0DA098AD\",\n\t\t\"E0543EF2C4C0056C20E1A4583087FF3184023578980C25B53E9C25C06E14E04FAD88E0023569860A\",\n\t\t\"2468C1A0865804040CAD7D4C8CA214A748457804010021FF0B4D414347436F6E2004031039000000\",\n\t\t\"015772697474656E20627920474946436F6E76657274657220322E342E33206F66204D6F6E646179\",\n\t\t\"2C204D61792032352C2031393938003B\"\n\t};\n\n\tprivate static final String[] TURTLE_17 = {\n\t\t\"47494638396144004400D50000FFFFFF989800111111222222003232666600659800639696999999\",\n\t\t\"99993396966399CC00636496323200336600CCCC98FFFF996699336496639898CC33333330633030\",\n\t\t\"306330636398CC98CCCC0099CB3399CC66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\",\n\t\t\"44636330DDDDDDFFFFCB100000001000777777888888AAAAAABBBBBB555555666666000010000022\",\n\t\t\"000032000044EE000000220000320000000037000037000037000037000037000037000037000037\",\n\t\t\"000037000021F9040100001D002C00000000440044004506FFC08E70482C1A8FC8A472C934DA6C8F\",\n\t\t\"87A2D15035AFD8EC3165A3909E545BE374A2342AE65703C64EA55857D67B494929408940A1402209\",\n\t\t\"FE1403640D7B05797A0588887B018B546334661436232317368606200F0D5A080762248F248D891F\",\n\t\t\"22100F1F79212626101020011F0FB27B54058F830D085A4A5C024F362784B96724898B7A0106850D\",\n\t\t\"0A09A28F2E634F2C1427292E0329BE426234240A0A7C2414C1282836C1021481ED02C40D03ED3130\",\n\t\t\"022F0223343670DEFF595C2858A1A08FB80EFE002A5CC8B0A1C3862A2AD4DAB0215AA511091F6A14\",\n\t\t\"F3A7CB305C8FA8481B4346DE80311D8509E0C0A1C593110D364810F34BDC07102022442870C2C649\",\n\t\t\"FF5C05F014F8F0215629A21F3264F8D02800210511A4F96C6046CC231ADDFE4D12F0B301893CC90A\",\n\t\t\"05587A1329D2525E115131D3C0868B0A24B2361466559E1962B98CF1094992CA4F982D3232940017\",\n\t\t\"6A54121CBC41F9A0C18001AF234E689C4CB9B2E5CB987DBD50508B6801046D333F94A06084A81693\",\n\t\t\"84D5912B3ACE08AE7F0674ED6BBA018A47774F0C785247890D2E4C5848EDE2868BCF11C2702DD3E3\",\n\t\t\"356A8406348A3DE24D7212854A1508D43094A0A0822436C6E149006295288ECA9717C850EA5053B1\",\n\t\t\"B7F83E1A70DDEBD7684DE434A8313D39AE558D9C12CB2A45C1521E7B48DD9240027CF56443432CD4\",\n\t\t\"F5485E013682202C0F0C9840866825B0FFD724FD090610186D51D19E030D94D2948563ADE28C3354\",\n\t\t\"09D2451F29B4D00243115A259F74619552C857C684E10E15021091C2240BB1001331C1D8C5177A61\",\n\t\t\"8C51A27CBF514615907868E31512C5D1E5257D66D450C300564C4680390D24F68F0443CDA281216E\",\n\t\t\"90D0DA42ACCD69E79D78E6A9E79E7CE6790D6F29A8A0669F4CBCF085217A3C48E812D710E380061A\",\n\t\t\"444302378B26C101152718648E6C148858A9110358E0424A35A496DA6F0CD4A92717B23D31803428\",\n\t\t\"1043CC6D637C61033F743171CE080CA5D0513BBBADA30B4964CC560D5DAA0E01C549C1CDE1C430ED\",\n\t\t\"84B187A4D04D685B5B30E1E6171523B8E0C639C39010E908C90A91023111E0F4FF412EF884B21550\",\n\t\t\"8D80954C23A38C14929795A030C903B3805081A742D470C726371562410C36A80114230C17E27022\",\n\t\t\"ECC5C717720D8C40810B7D040082A2490877075309447A1E5F6D26920051CBB8170058CC1122CD09\",\n\t\t\"FA44764225F6C5C504072990609E04E77135E18201A282C7CA388920025343B1E794875261FA8410\",\n\t\t\"A97A73A93A1E89D4E6CA21406042790B82602053B3206D3591C296E150175212B2D37A1A43A00081\",\n\t\t\"5E1B38162CF23A2C5F2F0D1927CFC2012A4D140422E0D488512B37E0A1C40EF41443270C5980765B\",\n\t\t\"192FC3C88A613702C2D18B7888E9DE02A4800009D92874691781849248010EB0AC877B87EC816290\",\n\t\t\"6D3DE1E01371794BBA278921D15083030F33CC5C2E05F541853A6C717CE46EBD8A517CD52467CC87\",\n\t\t\"31244416524F549439598E62D8650C31120E9F3609B486710202002B746438061DEBEA75160782A9\",\n\t\t\"3460AEC3BD4F1C3F0405093819AE400523B4D0891CC619868306211B84AD83023110D524CA059023\",\n\t\t\"7DC53C2918C177F2F32D1018200505A801092E308F34510601E4DA405C0695854BA5882809D88002\",\n\t\t\"CE55199CE1AD81330BD9063ED0161790F053CA7207B92688C31EFAF087400C626B82000021FF0B4D\",\n\t\t\"414347436F6E2004031039000000015772697474656E20627920474946436F6E7665727465722032\",\n\t\t\"2E342E33206F66204D6F6E6461792C204D61792032352C2031393938003B\"\n\t};\n\n\tprivate static final String[] TURTLE_18 = {\n\t\t\"47494638396144004400D50000FFFFFF989800111111222222003232666600659800639696999999\",\n\t\t\"99993396966399CC00636496323200336600CCCC98FFFF996699336496639898CC33333330633030\",\n\t\t\"306330636398CC98CCCC0099CB3399CC66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\",\n\t\t\"44636330DDDDDDFFFFCB100000001000777777888888AAAAAABBBBBB555555666666000010000022\",\n\t\t\"000032000044EE000000220000320000000084000084000084000084000084000084000084000084\",\n\t\t\"000084000021F9040100001D002C00000000440044004506FFC08E70482C1A8FC8A472C96C3A9FD0\",\n\t\t\"26A5D1B0D51A2E129662B3726DAE468542B295ADDD6FF7D8B5354009852D5AEC56EDA44222B02F04\",\n\t\t\"027E097E7E011F01795489366455530D1431734D360A0A0920200A18728B890D01207F1F22260F70\",\n\t\t\"01A426100F011910107F050D8288540E5D2E15557446169D55547F800E0982B10583800D052496B2\",\n\t\t\"9E5D65BC4E766A6D8B5C14535F8DD753312E178F0DD34C140FBAE5EAEBECEDEEEFEC6E36840508BB\",\n\t\t\"F0463092EDD88B6D8E54486899224F0B953467DAB808376F0F887D49CC34E3832C41040BFADC2C13\",\n\t\t\"F627C10743803E82F818F223B25909A8A879F4AE93C6659F0879049441E4483E10E02093B5935B9B\",\n\t\t\"FF0EB87CC5D368D00D174F3C3DA100F6F2A03F7C426C3C78A0A0009C85E4A2D4F8A0218086506BA0\",\n\t\t\"8A1D4BB6ACD9B2D760643DBBCE4E830816156C81884FAA1B778BCE1844A1911136958D1A1DA5B070\",\n\t\t\"6105026FF83CA8D1F60B37120904CA221181F233810E042A4A7406AB404B74235EEB9251A01D66B3\",\n\t\t\"00F5D1C3A7181F40019629A85CD469E825352A59BA84496E536470F68880A0E0D4AB9C1E0B7C80C5\",\n\t\t\"8CE7B3717778D57073E58EBF80B1328022FEC1E3ABA9AC02E48CD500F2338DB8484840E0E2F69336\",\n\t\t\"890A2888059B3EC70C7B6037B0B4F7AFFB7282C107130A15E881CC6B24FC21D966808545D635E53D\",\n\t\t\"F2DC41D04974903631701103032E7021FF9615FB551506565048F5C1061A24B041256BC123D50309\",\n\t\t\"3800428B509C83801C34B2A5E38E3CF6E8E38F400629E4904416894417E001F29F911DC0301526A1\",\n\t\t\"08E4E18353F2620306A69842820B30B437DD3591B4A10F0C648EC6C49518DCC50E0516B467C74B6E\",\n\t\t\"2CB51460B68DB64807DAD8018201F60CE58B1B2E14808216362C250F538069936827D9486500080F\",\n\t\t\"E418853FFEC144C59C032E336122286CD3571690CDD8966097F6710C479A0A838C419EA804E81405\",\n\t\t\"30A68E1D6E3A128001F95564A06AC91814D985E338F85E011B60C24719D9C410503234D1979F28AA\",\n\t\t\"C62688208910B4241B53ADF2814EB218159F4E23ADB2076FAFDCE411082795F7FF9C192C9558C903\",\n\t\t\"8624600022D751E11A1F20AC125C02C741B0C7540964B053318FB841A8B251EC179C66D720136828\",\n\t\t\"560D07E3B9C7159700C07CA496EE1465B8800002D2F042010106C71741458570D41D04226CFBD125\",\n\t\t\"C714F34C9ED699F1F1B5A29581547D80C8244A7E2615E080A58984714F54C24E8A0D17022918E327\",\n\t\t\"B9BAE6870127292010BD8AB6DBD2D2064346450579F0CA5ACFCB6CC9D43621D7051FAB8E6C7A356A\",\n\t\t\"9E90B0D4BA3897538D530D02A3B7DEDA6868832F2E7CF9E09BEC2AAA0D097DF7A3D29F8B185D8336\",\n\t\t\"63190C6A425FDA69F99E9638604079ED41A511A4B328200115092F63521C1D4205CC2582F44907A0\",\n\t\t\"99C865025957BC5813F79179EA4832054CF6EEFBEFC0072FFC1141000021FF0B4D414347436F6E20\",\n\t\t\"04031039000000015772697474656E20627920474946436F6E76657274657220322E342E33206F66\",\n\t\t\"204D6F6E6461792C204D61792032352C2031393938003B\"\n\t};\n\n\tprivate static final String[] TURTLE_19 = {\n\t\t\"47494638396144004400D50000FFFFFF989800111111222222003232666600659800639696999999\",\n\t\t\"99993396966399CC00636496323200336600CCCC98FFFF996699336496639898CC33333330633030\",\n\t\t\"306330636398CC98CCCC0099CB3399CC66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\",\n\t\t\"44636330DDDDDDFFFFCB100000001000777777888888AAAAAABBBBBB555555666666000010000022\",\n\t\t\"000032000044EE0000002200003200000000A50000A50000A50000A50000A50000A50000A50000A5\",\n\t\t\"0000A5000021F9040100001D002C00000000440044004506FFC08E70482C1A8FC8A472C96C3A9F1D\",\n\t\t\"8B0D5A4C9D4EA4C4E753203528024A87954AD96CB1534D40B2914E825AA3613BD90614DB9742D953\",\n\t\t\"4E09011F242A5447367988670D058D018E01918D8E938C11242405739B578554290D111A09930515\",\n\t\t\"579B8C5A911F2210201F5A222626AF20090F20920D599A5F0357671D1429898643676D9B050A9159\",\n\t\t\"0E0D8F92908FBEA9D77629C74F6667767370706036026788652C422C23995B812353DB4A1C2A14B9\",\n\t\t\"20110DF2FBFCFDFEFF00030AEC5006D30705848E2140A0C013820123F260D3930A15A36B74AE491C\",\n\t\t\"F12586187E125D2CEA12ED5186695B4088F870520B974C8C7CD59983A84283112DD22DB1A140C12D\",\n\t\t\"FF1020144868636E0E094991329C8C1420C3962D493F54CB0253DC958802CD842947714E1F8C34C1\",\n\t\t\"A522578E828B2F35FA0C1442410E426612785151815380B6B578F3EADDCBB72F5E0A0AFEA8E06088\",\n\t\t\"0F26982354E86CC28041A2337CC49029368C028A13BA70D530948C84865C9804B8488462939E0174\",\n\t\t\"F0801500914EB0135FD8614A4062B13C167706289AB9A9B40312117C1598668D26EA3E67EEFAB362\",\n\t\t\"4700EC984C4B454A104810D36A0DA88F9D53CED0E4A22FCAC69833FC7AAB57813E40580F4B50AE48\",\n\t\t\"8CB057144D82580A04F18EA420718F3A2CDA74FCB14900BA1470DE03B1A807C13DEEDC825D711135\",\n\t\t\"7082724F70B09F1A359050CE73D74C12FF1D52D70D6700232428400A6C883420400314FA93876AA8\",\n\t\t\"3442CA1C1594D208268D7082CA092FBC3080001750A0DB40DDCCC1111D5DA5725C6E5708504E030E\",\n\t\t\"54408A039720A4005EB8DD440126889C20C113281490425025E6554C2ED42560A55F203D00189B70\",\n\t\t\"C629E79C74D669E79D78E649852284E9D9440A1560109727544C66813EFC90611B1129706560040F\",\n\t\t\"6C068519B391420228232C3A441966BC60438F349CA19B396784E1C2A9351070C20306805026142C\",\n\t\t\"D883C928112810510B36D460030A5C9D254769D7DCA1A257C040E6420B14C83608A150B881891C2D\",\n\t\t\"4404CF4C275C56D115167132070D34CCA19B001CD5C7080AFF34FAC709EC8045FF5E03A575F15B71\",\n\t\t\"E06C4987737D02748793C85D04530106C0078954FB7A010E6C76D8D022483FB2D6000D0E84389C74\",\n\t\t\"D1959249010978BBC8170099110C45323E128823D529F5C85339F262CD576834408FA64EA4C04067\",\n\t\t\"5764224D002E4902147B5C0420428193C054113108A4D0420B071B71420559D0EC050531789A8A16\",\n\t\t\"D4B502542C0980B0DE2B1984F08A33D93D12D6C68BA4204512A09030B53B2772380775ACCC82A016\",\n\t\t\"56B317C9D6D590A2491E2BDAB1180B2C1351434FED2560C050906DE24201200CF781D50A9C148B08\",\n\t\t\"3B43A5D294EB2E4CCE5708EC592980482A4C9E87ACCC7C9D521F378290C09BAC88A877CA7180C008\",\n\t\t\"6164B44C35B447FCBAB0D7249EF55C1FD9F4BD4DA95F381BDD6F32534209EA18C131000A06033441\",\n\t\t\"0CC282F19C26DC3A006F71144526804736C010111F01D143CE2202EB21604633A136AC57522C0243\",\n\t\t\"05156C490C918B38C7CB17A944F61557A4A620CA071A18454F46E002BC14A960A432073A92508302\",\n\t\t\"6820001A485CD1ECC58B1414E02C2E18C1959EC00E15D86A04F522126CAA4631126470834F60C160\",\n\t\t\"FA528F13182801C141A19F8E20071B0C6582331CC20550B0C21CFAF087400C225F82000021FF0B4D\",\n\t\t\"414347436F6E2004031039000000015772697474656E20627920474946436F6E7665727465722032\",\n\t\t\"2E342E33206F66204D6F6E6461792C204D61792032352C2031393938003B\"\n\t};\n\n\tprivate static final String[] TURTLE_20 = {\n\t\t\"47494638396144004400D50000FFFFFF989800111111222222003232666600659800639696999999\",\n\t\t\"99993396966399CC00636496323200336600CCCC98FFFF996699336496639898CC33333330633030\",\n\t\t\"306330636398CC98CCCC0099CB3399CC66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\",\n\t\t\"44636330DDDDDDFFFFCB100000001000777777888888AAAAAABBBBBB555555666666000010000022\",\n\t\t\"000032000044EE0000002200003200000000B90000B90000B90000B90000B90000B90000B90000B9\",\n\t\t\"0000B9000021F9040100001D002C00000000440044004506FFC08E70482C1A8FC8A472C96C3A9914\",\n\t\t\"C92641523D930A67CAC61DD9048DC689D20087B9A701D7356A91D5D7A28B9415A60414DBE9C40D37\",\n\t\t\"0A7F01820584840105010D89052409807E7E3614152362292C7143790D24036188831F21100A2009\",\n\t\t\"091F10261020A61F2220838F61343603645E5712150AA509AD24240D5C649081860E8A09B28587C2\",\n\t\t\"C365140231B79E611424994C297936610327900302B6C49849020A2B24E7DA4F140A8D1FA7241CEE\",\n\t\t\"F7F8F9FAFBFCFDDA294458A418B022450569243604006123130B3D36508130A0A0C18811145070A1\",\n\t\t\"01A998376F7F1C3820312B92472E00FD49B2E5A7808165820E21FAF00104AC0F825A6538D4C01121\",\n\t\t\"FF68E1F85C6221B05D92132440CC2B04C85BB8300170CE841533C3879D38332C2BD44818C89346F5\",\n\t\t\"3D9474269CB09290BE5E0B27801C89084A692282E3AF080B4E290ACCA9D0C05EDDBF1C085040F0B7\",\n\t\t\"B0E1C3FCEEE0A98798DF586FF31E54F0DBD8080B0B5CDA72F9E24D1A85361706046BA4206C932DD8\",\n\t\t\"1C05B37849088B6E95688D09F394B66D637CC6E0E386B49402BD6DFA1833F653514C927F4647D2D3\",\n\t\t\"80426B7E14C6DDDAA30894F543A702EC8C5AB3D09F04C6920998830D818B8699B67C242B6C107741\",\n\t\t\"0920C897AF5D3E4C403E1BA8F1E84E2048492F08F71D4CAF98F0C029A9C847134E357DF0533CC8D1\",\n\t\t\"36C2734E2005022BBF68104153028403FF080932C124CB21D8B957DC70FA8D171D7A5A2857830208\",\n\t\t\"5070004B2025679D481534525C49B50DA0064B3518504004F110B60F075EE0A10627650D77110564\",\n\t\t\"9063434A4290E0C0071A68100F65867523064436D0700551950D91020A0E98724A0A2394A98F0D24\",\n\t\t\"D8B001636ED669E79D78E6A9E79EF860A682697C32F19064DE04FA440AC18010410A3518BA448C61\",\n\t\t\"269025082970892737C44892C7002EB031000A0214B00C080D007A98402FA4AAD130C444570617D6\",\n\t\t\"5C144C018DF697020C0D0044A6112960568368B51513063964A040469CE434C789A5EF9070207CC1\",\n\t\t\"606483045C68644B6D1F0DF30C8A6290410617F8D8A0C0036F45B041042440D9FF421F2768C48731\",\n\t\t\"3470441253616CFBD42614DCE39F0471F2E2C267C36093861F2870428290CD9098DC86E0D106121F\",\n\t\t\"23D4936F3E9952F02E23F322A2318922CAD4D223DE38A0D1842AA490420B2A4C1C070B2DFC687144\",\n\t\t\"F0C94488885661271753F3A6C599C5230CF002954F3C46CE53A21EB2DD213589C0CA3C093C00C120\",\n\t\t\"3DF1F4CD1EE0EEE3CD79DE1812532A4A8D3ADF03A680F0004E329F08651846F667C10BE4F8DC929A\",\n\t\t\"5129DD754DF23DF0805535E547C833EBE51AC7169C04404504D2D4164676714330F68236B502D34E\",\n\t\t\"7BAF36EC19CE5D910227BF34F84145D7FA01A2D151696774C78408F909095E18F385462A2F212E08\",\n\t\t\"0A6497C00618C4C9CCD9271B260C4A4C093B83560330D8020303D10DE6840D23F432CF33B53C5563\",\n\t\t\"E0D8CD6C0822AA3D53F03702F82C09A77C9DB7B20461E5B1075B4F61D7000D159C18C9197E0810E0\",\n\t\t\"4809441081060928D042DAF904E86D37866F028D18CD19C7662401103815004BB100415DEEC2196F\",\n\t\t\"3C830FD6B8461EA444A121DC25570CC98661FCB3193EACC706C6025A1254708B3F95493D1113C608\",\n\t\t\"5C5007471DE158C148C02E34E842231CEB370E0A460D91A080319402041B60D10E8FC0AF1448C005\",\n\t\t\"436402B392C8C4263AD10941000021FF0B4D414347436F6E2004031039000000015772697474656E\",\n\t\t\"20627920474946436F6E76657274657220322E342E33206F66204D6F6E6461792C204D6179203235\",\n\t\t\"2C2031393938003B\"\n\t};\n\n\tprivate static final String[] TURTLE_21 = {\n\t\t\"47494638396144004400D50000FFFFFF989800111111222222003232666600659800639696999999\",\n\t\t\"99993396966399CC00636496323200336600CCCC98FFFF996699336496639898CC33333330633030\",\n\t\t\"306330636398CC98CCCC0099CB3399CC66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\",\n\t\t\"44636330DDDDDDFFFFCB100000001000777777888888AAAAAABBBBBB555555666666000010000022\",\n\t\t\"000032000044EE0000002200003200000000D30000D30000D30000D30000D30000D30000D30000D3\",\n\t\t\"0000D3000021F9040100001D002C00000000440044004506FFC08E70482C1A8FC8A472C96C3A8B29\",\n\t\t\"9BED94086814ACA7964979491B0DDBA04119501A28B01A2CCD6E893612A9F0011914230AA525B0AD\",\n\t\t\"C1340D0E24060505018688018B866A05246A670D27521D291D6E6F4229617D7E608701091F0F2020\",\n\t\t\"09A3262610A51975A78D72056C6794362C994C2C7EA686869062A08F88BE8C898705A801726A2790\",\n\t\t\"657E771B1ABE149A49132D52D0270D237F61DBB9D7E4492C23240A0AA809201CE5F0F1F2F3E45129\",\n\t\t\"0353E3F49A142C142914C4B838D3C2C50817B2C8EC3B1245400B3461065002D5604EA3477FA47CA3\",\n\t\t\"04A31982149774016CA06048177C67FC2422962841061022407C58F400C2A204B350356A60068C00\",\n\t\t\"FF7D6F029EE8E288CEA20F22444050902180AB998B14F99AB5E6048C3E021AD4F0668D0940750F5E\",\n\t\t\"2500F6692218748748246810484D593D0DFA7485436205C885E6A6B49003A9C13BBC78590C1CF117\",\n\t\t\"B06125210F1BF667474105098AE171E090A2020189554090981BF9C82E1B01B7F5942245C0B7872E\",\n\t\t\"3A13F167E31BB8D76C048C017362008272FE28184AB17980000A156CA4F9D3EDCFA20C19663DC289\",\n\t\t\"F38F83490210562091A2450CCE4728B8502007840207232C5818E18742F18AC790296B1AE0C3CCA9\",\n\t\t\"38A90E90C8669E0A4F921C1430C03CAA2810100408C1071924508A310D50354937AD61774D140DB8\",\n\t\t\"F0452838B5176058A32895947BFEFDA2FF0027E7859147192D041547031558F0C91A018010952BA3\",\n\t\t\"203355328CF4559E195FC4304B040A0CE4153AACB493C01D0A9496D51AA12C538003D3CD41511860\",\n\t\t\"C0451A2E606810C0061F3EC1C20A71C8714249268526892765F1B4861E36F491D81136DC161940A1\",\n\t\t\"7D21052567A8460E0B816836164276DE19C603E94800669F84166AE8A188D2A3E208841596E81336\",\n\t\t\"2880015F8F6A7906091A24A04003953281000569602ACA099D7A46620BA08E21C75840111A05695F\",\n\t\t\"F0A491378C9E11C39A7DB2608117A499858FAA62A439C00887BE4AC250918451DCB267A4049A9DBA\",\n\t\t\"9687461950AAD117389F7C62860A1CB09042AB88554441919764D1D0147EB896FFD5277320E22409\",\n\t\t\"1124F38724ADB58080042AA480C00BE00A1190020F1003890B7CA080AEC113F5156F82A11CC2B0B5\",\n\t\t\"541D59516B64F6D1EF2E649812413BCCF4519103C3597B533155B4F7014E168D45951FE83AB8C467\",\n\t\t\"243C105016A0E1435A03631123CA2125BB3753023155915373B2BA7642896FB83944CDF309577287\",\n\t\t\"87B8A7944C554C6D8C7260182C09A7F18096E624604855802B372105C12AA6B4271322CFF1A56019\",\n\t\t\"FFC453CBCDC81CA59402A7B4A7542954FBFC4B732142D7463D7E90309B21275701B4090FA0E2734C\",\n\t\t\"273B1580010C17E0DA7003C41003037A50E0A813FEBC30C00B5E1C9E4CCF303172D3EA5239495B40\",\n\t\t\"310C4BC108D37132D5E812519080487353549B20234FAF74B592B3A0705E0C520C002F7F57C4FD32\",\n\t\t\"CE8E9BA25938B14EA5F392B210F3E48260D80CAF8B1F680042010F341147290ACCF4810212845351\",\n\t\t\"88C330C256050A2A4B46B0522466510A2044FAC474EAC01B2448E00217A840233762D71A5012093D\",\n\t\t\"A0042808184141FA95846E41864DA2338350FA3291669D40006AEAD4B16E26AB39D9A202147CD4CD\",\n\t\t\"282007827DAE5445E8C63A34E502AEC1904D3420C1F83E508014BCF0864288D4080A0082086CC006\",\n\t\t\"40AC600A0251991F2691081C50C113A748C52A3E21080021FF0B4D414347436F6E20040310390000\",\n\t\t\"00015772697474656E20627920474946436F6E76657274657220322E342E33206F66204D6F6E6461\",\n\t\t\"792C204D61792032352C2031393938003B\"\n\t};\n\n\tprivate static final String[] TURTLE_22 = {\n\t\t\"47494638396144004400D50000FFFFFF989800111111222222003232666600659800639696999999\",\n\t\t\"99993396966399CC00636496323200336600CCCC98FFFF996699336496639898CC33333330633030\",\n\t\t\"306330636398CC98CCCC0099CB3399CC66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\",\n\t\t\"44636330DDDDDDFFFFCB100000001000777777888888AAAAAABBBBBB555555666666000010000022\",\n\t\t\"000032000044EE0000002200003200000000E80000E80000E80000E80000E80000E80000E80000E8\",\n\t\t\"0000E8000021F9040100001D002C00000000440044004506FFC08E70482C1A8FC8A472C96C3A3914\",\n\t\t\"0AE1344A243E249673CBB5BC6C8DD3A0411150C28D866D9C5693592C05C7D66A45B55C246B7D6AA7\",\n\t\t\"490D050581820501871F1F8505098569026669032D795F030A0D78146B6602608C09010519191F87\",\n\t\t\"011F202610100F201F57A683240A2E7D28692F2F30670D2D031C79422C2F9E367D7EA882A18785A2\",\n\t\t\"CF690527C803D336781D150D0A29365C51200A20205680082E1D51366B6765608069232427EB15C2\",\n\t\t\"F7F84223DBE21111DEF9020A1C4850188501E41490B05790201C750D06AC4B63A74503120DB774A3\",\n\t\t\"A0EDA09B060E481410D92081C8047EC0FCB1B18905856F141E84FA1041E1184FF2C8FC11D4EC54A2\",\n\t\t\"FF57A1444020274AD0CE94EB28C00998420DBD4F861A595135141629538742190A00AF8D8D18EB48\",\n\t\t\"24D800AB9109272E1B9063F441418175363CF9294922EB201A68DA5038E1095BC6807B6C9010A940\",\n\t\t\"4283607F130FEB406084E2C7C35EA89BE617F2C0C05B4150406C191F0B0175288CA0E0627003339D\",\n\t\t\"99045E37E00CBD78698EADAB9C3AF2A6D6BDE6EA0E732CB600170852B448A1C24B8A861462A4C1DB\",\n\t\t\"5B655D520102F971E4C7DAB57BC40A881E5D06C5B16978D3A0201121EB3365A82024C81000A5D846\",\n\t\t\"83BC6F52A3F11D08B10F1C445167ECE2D645828CC34A2BA97C20C22B828444D25C2CD510053A4F14\",\n\t\t\"F1CB1A1FF1D4DE071088038B81AC1C68FF0A7B060C92921A02F0D25A01350987CF2624ECD3062888\",\n\t\t\"1488DE7F8598160F2012D9A0000522A1028841179117DB5E840C3648518C38E0400546A5B41F4B47\",\n\t\t\"CCC199136790E08A15561836516C8FA834571FDAE5A8146436B8E0421A2F1DC1800A70C1F5945323\",\n\t\t\"8CD0C294B509F38E5B09A480519DF9B0A0864283EDC9E7A084165A5B0A2CA4100C9D865219130624\",\n\t\t\"E8D9A8302C9C7045020F90C0E8A448C055804CB034C0E9121C00D0C208130DA68003B48D9A4E9907\",\n\t\t\"8526DA1916B8DAC16A718121518E9E6C72DCA8DDACB18E000D8C70022E6D9070065C9BD6E6854A14\",\n\t\t\"7A292D32BDA901431A7AA6201C407FED41EC6E17256BA41F639030AC0BA8D261FFC3AF0D59608336\",\n\t\t\"C7CE17488F23CD2BD58263F4F214BB0DB934AC4E0007728A2100A66192516BB041063E1C70A0A80D\",\n\t\t\"2A5080A80D2830F71A20212169458C580D028A88EDF4D242AB494451D748809026EF6ECF60894A22\",\n\t\t\"A880F0C0C04D8A07C609248C8C968E759193C07D39A34AC627752119552A43BD124006E3C8528003\",\n\t\t\"8C9044219A4931411A260A60224107A8EE4AE429609F92C080AB28F041290716A28049BABD300203\",\n\t\t\"0E16BB041CFB7086EB8BED8972852B4471E80ACC8784481D3C319851470591EED8AC1207092011B1\",\n\t\t\"04C7C8CA9597025E54515D1DB4C91A4F63B9B041EBB4F05A66CC70084233ECD9C548330D204B8644\",\n\t\t\"FE24F28106DC7896C494442FC6B2F4D219689577CBF5A621C6317D75408203792A3002C973C72580\",\n\t\t\"BBC227DB8C854F8B45703468425235112C0C90C266402209083D2B1BB555510D54003597641C0425\",\n\t\t\"72056CF0F22BB498CB92B97E98366EC0ED17FF979E32335B00C8010814786700A83A816B24820C35\",\n\t\t\"A8444C96415CD6C40188CAA4E00BEC90CBD09E321105F08903CC13820222F6A489F06804DA589CAD\",\n\t\t\"D271113C9D4985B6A2400DB0640539AC500F82C1C4381EE0C11B26018478D911847C482A221AF188\",\n\t\t\"48DC4210000021FF0B4D414347436F6E2004031039000000015772697474656E2062792047494643\",\n\t\t\"6F6E76657274657220322E342E33206F66204D6F6E6461792C204D61792032352C2031393938003B\"\n\t};\n\n\tprivate static final String[] TURTLE_23 = {\n\t\t\"47494638396144004400D50000FFFFFF989800111111222222003232666600659800639696999999\",\n\t\t\"99993396966399CC00636496323200336600CCCC98FFFF996699336496639898CC33333330633030\",\n\t\t\"306330636398CC98CCCC0099CB3399CC66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\",\n\t\t\"44636330DDDDDDFFFFCB100000001000777777888888AAAAAABBBBBB555555666666000010000022\",\n\t\t\"000032000044EE000000220000320000000084000084000084000084000084000084000084000084\",\n\t\t\"000084000021F9040100001D002C00000000440044004506FFC08E70482C1A8F45160BC051209FD0\",\n\t\t\"A8748AA00C060D92B6F0A24CBFE0A4CD26B035AE9486BA71B29D4E0DF7DA364A91C61456186C81A3\",\n\t\t\"D4666B050183831F1F09058A592489058058032714362C295F2C360984010A24230D236371709B01\",\n\t\t\"9CA70109871026100F2020A901066B6B2703943614091B1F1A20051C7B4394272E708209A683A985\",\n\t\t\"8E8FB70D6995C4516920AB201F061B246DC96D1469BA5A736D0223D6EBEC1D36240A0DB11B0DEDF6\",\n\t\t\"F7F8F9490D091A090F2BF409546246D7980164F040B924B0488A74B6D6905844224284020926DA82\",\n\t\t\"1328CE307D9950FCE948838433531FB67D08F0E1C183958A1C647914E8D1001816D4904831C20592\",\n\t\t\"FF4CF01A2818A1AE430A1B0877096A7648C4AB07CB02644044C8D1C46827408913C28246830744D9\",\n\t\t\"B178F162449933661E297A644A5534846BAC546B28E49D82BB0A406839328C0307251D08D2518031\",\n\t\t\"851DBA8813D3B560C39304052D48E8519C2F9319051B02E8F542995D0A0A2E28B468416104E97A9D\",\n\t\t\"C15826930BE91A50C6268506D520858A140818334C6C0185575C6C220ADA384721E54C69A6C13951\",\n\t\t\"C064AA066B972E423B227983C9FA8ECAD1A9E6E25A96555BCA3AB55691C649906A8CA3F0314A131B\",\n\t\t\"29A68D4BAA06CBCC66CBB441D8FF6A65D30F8B78C2060971C4904B0C1514B08102B92041493CBFFC\",\n\t\t\"53400AB9BCA0940D184555C054B164C3FF12084EA944DE29E6D882103C84B1A4800D5228C1593102\",\n\t\t\"08901416F86D9280084EADC449338324005D70039431D7101CECC68E3194D8A7068FE525E2400509\",\n\t\t\"AAF1461608BD4817051962C4C618DBBD26DC2868D1801D6227C003952A7A35E0824F1468771042CB\",\n\t\t\"8D42C1271534D09E626DA6A000606164224F230580A0426AF868610609A211AAE8A28C12BADA1B56\",\n\t\t\"36BAC738128060C05DA8493AA919A7E82599A660504800019A34424205A05251820B038C30801669\",\n\t\t\"58902A1499B48046032D54D7C0A0B33AB41A20D36C34460B4470D0C224AE469AD86AAE7DE3951AD6\",\n\t\t\"C501480C2DA42041642D08A0EC6263A0079770F50547020D6FC498C2988A5960FF61B0E06A01685C\",\n\t\t\"7058B74B6A969DF38803E6FD188D228E40AB1420E8EA83140534041288338414D264C2D1EC22C908\",\n\t\t\"01DF43096CB42DC22F46A71CB25206CD41A7D197098D71A7359928D9510423A2B4D23F108C470874\",\n\t\t\"197DD9530DAD3911EA082AD850B01C750A92702A20EC07E22937A6944800F0F878C2B34809104A16\",\n\t\t\"0AB8C0EB4F3034A702813154E70681186AC1F05A0904DDCA7E2F21A2637952522063200E68508809\",\n\t\t\"4F50909766094440820B16B4404A1B13A9A24A0644E7E7D47E216C2315791D437A86850680A0C12F\",\n\t\t\"9E8C3C849F7791000205A852F042906A2FDD23D11FB40CCB321AEBD856C2711018C72EF1151635AD\",\n\t\t\"16BE4302116AE351CC13799B8068022C232ABC96EA6C500029112C0CD0824F4702328A211EB29492\",\n\t\t\"5B9FA3BEC6155C467C4F26658EF082208DC882513301E06B7734B68C33AF62DABD908C441529928A\",\n\t\t\"46CF964FC9B620C91E01249408B74573E44327D79088995378087387317C23107002931A68330614\",\n\t\t\"74E604FE38447E3C61031490E10D4A315F41120807170885327680854A7C842AE2B5864B283CD44E\",\n\t\t\"AE6533C5D4C913B0DA030BE0E08944ECA55751F053364010810D1809870E1A073CDE813C204E8105\",\n\t\t\"1CB8801197C8C4263A313541000021FF0B4D414347436F6E2004031039000000015772697474656E\",\n\t\t\"20627920474946436F6E76657274657220322E342E33206F66204D6F6E6461792C204D6179203235\",\n\t\t\"2C2031393938003B\"\n\t};\n\n\tprivate static final String[] TURTLE_24 = {\n\t\t\"47494638396144004400D50000FFFFFF989800111111222222003232666600659800639696999999\",\n\t\t\"99993396966399CC00636496323200336600CCCC98FFFF996699336496639898CC33333330633030\",\n\t\t\"306330636398CC98CCCC0099CB3399CC66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\",\n\t\t\"44636330DDDDDDFFFFCB100000001000777777888888AAAAAABBBBBB555555666666000010000022\",\n\t\t\"000032000044EE00000022000032000000008C00008C00008C00008C00008C00008C00008C00008C\",\n\t\t\"00008C000021F9040100001D002C00000000440044004506FFC08E70482C1A8F428E12C96C3A9FD0\",\n\t\t\"0EA532B03548A4C68015ED7A8D149B98726D98CD56AD99EC68D84E36CA772E4C9D4E8D30FE1A0814\",\n\t\t\"0A01191F1F05190509050D89578B6970162335570A231C735C28363466598A7F9F7F1F1022262610\",\n\t\t\"0F1F200981800558347B0D02365C0AB00F954D61360F050A24725236B30255147F011F09ABC9C919\",\n\t\t\"7D010D09589D66236EC174516424118D636E670327B35714776259152496DA502CDC580D155C5F14\",\n\t\t\"6153C023EEFCFDFEFFF0A4290371A5DEBF834358C411C3B08A9B612E025648A12205891136103261\",\n\t\t\"0143D29A339DBA1D5234ED8F190179C8E00190A283C17F14049039978584013F01560D1A14080484\",\n\t\t\"FF54841261B97632CC001209340CFAE584E39F69245C34906A639C959C37434100F10084B255CFFA\",\n\t\t\"7C0A90C5CA892A193512097325469A332E024430032DE7223305C2D068A9B6888D0809062D03D1C9\",\n\t\t\"854B972D5A60496190C535120ABE2A78D9B7B2652F2C5E5020210132891A0A2E6B14738204889C09\",\n\t\t\"1AF015ED8E82D4112328246EA0E2088B14140654A1CC3A05C3706788B2456363840B0A2956B31642\",\n\t\t\"1A8FC3339CEEAA31334E5C36CB2C04ECC193C8012012A040AD42B408C51E2B026814DBCC9B0E851A\",\n\t\t\"03D0C4C77B28B09F045C4530FBE3008B7437328D5041011BA4D65E14C39871020A0D30E807207D7C\",\n\t\t\"200204143EA04060CB3CF35F1E55FD05FF820205684098724DB040C20014C0C65616271C521734CB\",\n\t\t\"E8048208227CF0E22A9D9C85072D45B0706042143C900C7E09E0668305BA39D409841F64302385FB\",\n\t\t\"D565522278CCC40F47620C105A426FECF816495E81725F229B7C948700245A1686003038C71D748A\",\n\t\t\"54A3201E248CB1A5681490871F640F9D40C618285601C76FE015E9C29D95D960DA87AA7CD0C08FB6\",\n\t\t\"6DA20A082074B6DCA59866AAE9A67424F7A7A29C5E728F02182410C18790868A040B787C60402AC0\",\n\t\t\"A81A856F281060832BF2A425AB1329B420C005645C63581369667A4F0B035C93DB00B350F012070D\",\n\t\t\"8C40510B315C8729195AC4610D1AE7C551810A759EE063A6F064D9001CF39D35FFDF1B66C0424E1C\",\n\t\t\"9BFA368B8E68C0099D15D8BA01070298FA66C59767945452228BE826400BD832C69A052FA0942F78\",\n\t\t\"2665711728F792A11B4362F0AB9105289D712B098188D5CA279C2002E73D271957C33DA5FD531570\",\n\t\t\"3630D80A3483D4080DC987C8491D0C0D5CD080020A207C25CFF39C51C05C633D43480215DA481E64\",\n\t\t\"09B4E0480C30B0E18D1F887EA1501A0C9A118158CCF894807ECAE4F4D383269D1BA8188169901316\",\n\t\t\"DAC80B9CD1F725930A85A67465634E6853298EA2564CE369173EA6F85B0334CC373232118E4D218D\",\n\t\t\"5E8925B21B44C99410B22D40F1CB5117C5109B181829FA941F8250EA55603BED4D1E59D5A0656D17\",\n\t\t\"9B8D170116F718C5E2D61F0630236185918BC93774CBDA502C1414FCB2CCA935586254827B8057B7\",\n\t\t\"8434DA05087977E11B46AAC42A0A8C020D10914292BFB552761F6189D5DF80D2E5C6A33F5C684C04\",\n\t\t\"AB569C0827E33393BC49C7C4618A712C8A7862C6C01E7344CCDAB19C17D8A002E718C62EE0F42F80\",\n\t\t\"C1811C2DE81E6B14A22744A0E50C779889A08873052C48A00504AC0C0B1AD02810682002BFB00101\",\n\t\t\"7681318CDD0374BF408A0A2428C2D2280002A8FBC067BCA0896514E0030E98CC654C6421A0FDE275\",\n\t\t\"4F38410C15A028246A44210A7307072653010E102084BBCAA216B7C8C52E7AF10941000021FF0B4D\",\n\t\t\"414347436F6E2004031039000000015772697474656E20627920474946436F6E7665727465722032\",\n\t\t\"2E342E33206F66204D6F6E6461792C204D61792032352C2031393938003B\"\n\t};\n\n\tprivate static final String[] TURTLE_25 = {\n\t\t\"47494638396144004400D50000FFFFFF989800111111222222003232666600659800639696999999\",\n\t\t\"99993396966399CC00636496323200336600CCCC98FFFF996699336496639898CC33333330633030\",\n\t\t\"306330636398CC98CCCC0099CB3399CC66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\",\n\t\t\"44636330DDDDDDFFFFCB100000001000777777888888AAAAAABBBBBB555555666666000010000022\",\n\t\t\"000032000044EE00000022000032000000006B00006B00006B00006B00006B00006B00006B00006B\",\n\t\t\"00006B000021F9040100001D002C00000000440044004506FFC08E70482C1A8FC8A472C96C766C02\",\n\t\t\"C2A051208D1A2D64AA35A2BC52CE309362B30D04A886BA7C6A50D66E755BDD3889EF448BADDD2EF8\",\n\t\t\"031F0501802083867E6A0924056D692F310254111F1F2024247844647C346A24017E090995101026\",\n\t\t\"26102095098382A0740203366099429E9797235C6664288B54A082949519AD0D09150E05746E0214\",\n\t\t\"B57865022F2F6D14277BCCD7B236727B148B092E080AD04D290D1120EB1F8A0DE6F0F1F2F34A162F\",\n\t\t\"140F1B0906200A360A2CE8091CC282820B0A6FA0EC61D340808D172E5290B01170E01216666C2464\",\n\t\t\"962E428265053E225AD6200D9D13065BD4684042410B5AE63052A051460D4857198605C8302A0184\",\n\t\t\"FF0FC14ECE214391C4CA1429106462C1A2463735531619DA59691D08513BA70A225907A10D732928\",\n\t\t\"282001A20188AF425874E156D3A69FADC05A9158D36DA2464C168DB068002A81250C13518CD09822\",\n\t\t\"C6CB061509A2A8A14041BF141538E42DC274B2E521124F90D05CEEB2C03620340448A0A06462CF99\",\n\t\t\"38A4E8728182AE06294E73B884744458D448BA9161C951161D5F65349EC69D22F8948D9EB872DC3D\",\n\t\t\"80CC44A2661AA8181E0F46278E6FA9BC1D49E2A34D3974F48C7051C06381CEF052546B206BCE5643\",\n\t\t\"A340942A142C40CBB9759A3BA421AA8086C6CF98F3821AD7D021C847ACC8271F048E7D50CC2006F8\",\n\t\t\"31170A9AD5419140C5C1E1D67653C597FF0A50A3FDE1C70927C8E2D03C668CD7421903F8E60A2B21\",\n\t\t\"7D208229A9B0024A2B88D071CD2CE9754709692420F01051644CF1872A36F2B4D52FD8C952833C65\",\n\t\t\"28805005E8A5850D4B313C652033556848971A15B0449C0015444052709EF0A25F191414D74D63A2\",\n\t\t\"4440024C79D950C88FED9CA79413C53D570305045CB6D7038D9526016E8826AAE8A24828301DA34B\",\n\t\t\"756183040990438264908651900D3EC67749A66114D746779714008312055197A80A14546003012E\",\n\t\t\"347005A64460041B027AA88A1B022A6031C25A0E95A114056422908243742E9A4273C169E4461B5A\",\n\t\t\"4AE390AEA8B19061035A36C747747474B3509B895ACB264B2472C4CC14D89281FF101DB1C54601B5\",\n\t\t\"F12854A20073DC1252384CCAE14C897B0C50C308CDBDD100ADF16C522E1DF82990E31FFD29E7CC1A\",\n\t\t\"314C795F80F130F042270237A0CC2B7C6D371215EED47B823314C0E0C0471FBC03E515E049551F25\",\n\t\t\"22B06263010EB0E40E6F1A99A100250B80605BBC57CC8142276F8DB2958C0F3CB08E482C71454696\",\n\t\t\"A48D101252598055C34A069A7920202250A20A509414630015F8D1210BC529B88016342CBC309827\",\n\t\t\"E9F4C54A060B960281D24065F007C7DE62631114D8D6CB57887EC8E893DDAA1CA248D944C19B0951\",\n\t\t\"827FB2F768ED88320C88455341601DC98235181B73D5E5CA1F3326FDF58DAE705C871BCDC963ADAC\",\n\t\t\"2DC0D0109A36F861E0C0545E8B302320EF2D72A61B64C4C3C2007FC879D00016C492314B836035C8\",\n\t\t\"8310D2DC409828D1E57813363C50403B961C5A1C3790FB5E78211C1E1847F5D88C40F05265E03296\",\n\t\t\"267B9CD082B96A906766036375C9118936C42A4F0A7A48DB1144D5A2A7744339160ACE25B0D51012\",\n\t\t\"B8C08103C3CD0B90872D8544227071F04A05DB2711A6A18653E170071B06808D66CD22312AA04101\",\n\t\t\"40B0C2023C406593494148FC0202038CC50D6178C30B15601B12A860327BD940001E90A00420E60E\",\n\t\t\"2C50014002B2BE81708A50859A13A89C60AD3444A48953CCA216B7C8C52EE221080021FF0B4D4143\",\n\t\t\"47436F6E2004031039000000015772697474656E20627920474946436F6E76657274657220322E34\",\n\t\t\"2E33206F66204D6F6E6461792C204D61792032352C2031393938003B\"\n\t};\n\n\tprivate static final String[] TURTLE_26 = {\n\t\t\"47494638396144004400D50000FFFFFF989800111111222222003232666600659800639696999999\",\n\t\t\"99993396966399CC00636496323200336600CCCC98FFFF996699336496639898CC33333330633030\",\n\t\t\"306330636398CC98CCCC0099CB3399CC66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\",\n\t\t\"44636330DDDDDDFFFFCB100000001000777777888888AAAAAABBBBBB555555666666000010000022\",\n\t\t\"000032000044EE000000220000320000000030000030000030000030000030000030000030000030\",\n\t\t\"000030000021F9040100001D002C00000000440044004506FFC08E70482C1A8FC8A472C9548E4E05\",\n\t\t\"4582446D308CA9532B95A2A49AE0F0D0D6A0901B0DC1802C409F4F6617C5FCB40D6894DA60C475B1\",\n\t\t\"C44B29362768850587050D011F018D8E870E0D52246E14023136206405270A14804836152824840D\",\n\t\t\"248D058D1F20101026100F22208C018894276A03275FA04A2C6664949B8D098E1FC821B3B5050E91\",\n\t\t\"350D9B6628BE47360F05200E2027442C29D10324142F6D85E7E7C136EBC20A20051F111B0DD56199\",\n\t\t\"8BC6200935F5FDFEFF0093441B41A202BD800893704831A2E1080A27D89962272058423114CB9CA3\",\n\t\t\"52604A0344B612A143936B4E0D031F346C20A10020384A0D4C7D3C9480518646198CB1BA69E01025\",\n\t\t\"FF14364A45FC73D1CC89A38640164396C0D8A354E846AC03C841850D0454A858A0304040C5686854\",\n\t\t\"D14466EBA3539885229EAAE0620487804491A41040A200C768EC6C74B1D0E1AD353229245C44C282\",\n\t\t\"9702052452F81DCCB831C2B9291E6CD0501384BEC44A52ACB1E198890D0104E234187170088B0615\",\n\t\t\"B0DAF8D499890039EC46534023C054A49848D1B420FA4DC562C682EC44A43132ECCC7340CF7DB6D0\",\n\t\t\"E042830D0924216461E7CC99420A3E1E37DE11D70914D130E9AD9540011F803056C71C6137408643\",\n\t\t\"8B903D7045EB4302442273AFE975115C031432CD84D32CAD58468B7B2141858645837501D1462119\",\n\t\t\"D3917D21B4425648AA14B29A198DD950FFC375A7042061061FB8F2CA030AB8A74A23758984C67E09\",\n\t\t\"D931C2002D08B0CE00BB6C029253386128961B1309D00209FF80B3884A2C752088575EAD13201A77\",\n\t\t\"4189D782EB9CD2D114985563064B271814CA67E27DB61A4C9FA993425CC0D090150904F1C7180588\",\n\t\t\"A41481046820D05A3DE04460200888B979E79F80062AE8A0013590820271111A060B520D20417920\",\n\t\t\"3C10949F4750FA27305592608C0122924083A529B4E0820B03B0A6E83A1FDA05D31154A4508AA581\",\n\t\t\"B640C1281750D0105E142080800D31B8E0AA0D892ABA90430DEC82DB391351A442B080DA20D56AA4\",\n\t\t\"91066421B3AD810E02C1D9811B09BF3D464644B3C504A2463181B51A216438EBFF02342C09329819\",\n\t\t\"E6945B88A6B71CA2DD390314F2420C149060C07D1F10899044669C534004D185D514BDA7A0451B0C\",\n\t\t\"6A14A001321A6459E42027E41B96BD62E1779FBD8815F0042573AC63C0030D7C30C20AA6FA030371\",\n\t\t\"E8AC881332FA3882E129F8E2B85A5F12A4E00267E8BD61437BB6A4B24A2C107C20022389D88B8E5E\",\n\t\t\"8C31F00221BBA0401C7CEE21C3CA225C8B988A5D24D506F460EA957B70828B8860227D173AE2B08D\",\n\t\t\"B0FE73C6C80D449060651080008B2BE4C1E7F41CBC0037C8B15763588C4EC8DCF448D3648C606387\",\n\t\t\"B38107A5D18BEC9978D13E1E6B49DCFD50779D001DAD3896086ABBB288BD0954705BB836A0C0AC3F\",\n\t\t\"0C956AA3CE338184C6754D368B980871B3CD566542A73CD4800B2494791D7CACE08EDFE26E900407\",\n\t\t\"692DF5A3C24C0BCF68C766F012D2344811245285BC60D1D5AEABDD8A41811429AD2498928ED7F690\",\n\t\t\"C6C569589DFC27B0D4803E11705BCD35D73480B211B1B1D18B36839B8C2DC8465063949AF4519E2E\",\n\t\t\"D80914D479C10B28E01BB9948339E2AA92EF624329703C600EA92140F912F2922BE5EF3F07E8C0EB\",\n\t\t\"1455041B7C201BFA00012546C842239C461F0FA809324A53C35F50C21D8749CC0A7B88853C008B88\",\n\t\t\"484CA2129518040021FF0B4D414347436F6E2004031039000000015772697474656E206279204749\",\n\t\t\"46436F6E76657274657220322E342E33206F66204D6F6E6461792C204D61792032352C2031393938\",\n\t\t\"003B\"\n\t};\n\n\tprivate static final String[] TURTLE_27 = {\n\t\t\"47494638396144004400D50000FFFFFF989800111111222222003232666600659800639696999999\",\n\t\t\"99993396966399CC00636496323200336600CCCC98FFFF996699336496639898CC33333330633030\",\n\t\t\"306330636398CC98CCCC0099CB3399CC66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\",\n\t\t\"44636330DDDDDDFFFFCB100000001000777777888888AAAAAABBBBBB555555666666000010000022\",\n\t\t\"000032000044EE0000002200003200000000CAAB00CA0000CA0000CA0000CA0000CA0000CA0000CA\",\n\t\t\"0000CA000021F9040100001D002C00000000440044004506FFC08E70482C1A8FC8A472C92CDA6C98\",\n\t\t\"842101AA266AB6A38D8420659BE07091E2A23C6D0D52638D6EB46D663765CDB6C51AAE6901A46888\",\n\t\t\"99670D7169050D0501058919018C8887846C74667F623068736B8587090120109F26100F22208C09\",\n\t\t\"89097470939460700D286A69019CA81FA422A41F8DA76B73685E362E6BAD5A5D0A24654F66708174\",\n\t\t\"99CF8282CC4E0D0F4F35C5943688562057DAE1E2E3E4E5E67F4F0466C3C36714CC67F1AC42CB6E82\",\n\t\t\"E74ECD28CF24090924054ED1EA45420D9A7DCD6C1878D0E083350AE660D4900690442346870E65E0\",\n\t\t\"F48113A746857C3DC147A4CD1C3516692532E5CF1F2253A8A28D24D961D9137B3662CDEAF4AD0A22\",\n\t\t\"FF43C8D8146486A7CF37070CB5D978B0C79A1F2D702CA88AF785A6381B05483C50C0F5A9D5AF60C5\",\n\t\t\"D89BE80A8185AA618958BAD900C4837F6A20166950A10BDAB449C890C17313CD96340E2249DBB2AC\",\n\t\t\"868B8924B8DA304173551B378FE92482A6CA909C390936ECE273F7EA2B4C6B124448652864E906C8\",\n\t\t\"120C9363E36C67737D3101BCF8E18328515540ECD2A4060561375F2D452BFDF1C337510A1EE8FE48\",\n\t\t\"ABE065E0565FF13345CB388404A4AE7704697ADAEB726CDB245A19E0C3D607E815947F94A042057B\",\n\t\t\"058846170F8CD6148C1F0B6C241F40D6D4640AB8808057E1C0E1020C7804F38E1C9084E402405311\",\n\t\t\"15CF1A7C2470CD35C5C0C0C8370F6433FF445F690CF20E1C284D18D64DD7C091C416A78040020671\",\n\t\t\"E1A554296F7504C2773286810D8E39F6E8E38F400689CE4C3FBAA10002E8F9A5843008B8C0637414\",\n\t\t\"3C80814F06D0A24001311CD10002121019645F599130871331B860A69740C251810D17EC05CF33BF\",\n\t\t\"3DE6454DCBBCE342804F86C30E83733083499FC28C1887300C347041031B7042206C4E92E89D3490\",\n\t\t\"FA02CB25989CE5420C0E68F081060AE4B90D1BA041830A40E35146470C31C0A1C007056820A05CE0\",\n\t\t\"BD62D01A050594893FFD18F24F217F8D68C38D0D6031CF38F244865A69A49E9248605CF907A8A7C5\",\n\t\t\"34035A456A14601C2DD8AA54AA690641DB0A5B7438B0DE211D99775B0210EC62FF4022CEB1E62D25\",\n\t\t\"96FC82554A01ED521B27A5EC124006E4F9D7CC57BD3EB14F461C41E0C9270F18B78BB2FD853422C0\",\n\t\t\"24F806470111A8C4D1C1A17CA22F2A0118020C9AE7D850412C7F55CC7140D8D6F6C122876014C9C3\",\n\t\t\"569579102C8638624A6E096C6C0AA9D298E161637ED191122D19D806CA27D816E04060FBF409D930\",\n\t\t\"8D61010B05016DD248293997029245BD3C118C1A12407D0E165B34DA804035BB8451CB8DF8670F05\",\n\t\t\"00F9B3C7BB2B92D1A863926584F22111F006D9545B24B7878515C0DA4A1A095A4081E236812B5934\",\n\t\t\"7DC2F3E1440C31440101C594164004203C55271A0FA6FACBDFEE486EC44DC43ED009E79D51B5D684\",\n\t\t\"F05880D7524B358034C1A26AD9D0F7957DD880F98F4F58B2840DA75061405042BAF2CD76DFE09EBC\",\n\t\t\"161B280041725CFDFCFC925A2976FDF6DC779F63100021FF0B4D414347436F6E2004031039000000\",\n\t\t\"015772697474656E20627920474946436F6E76657274657220322E342E33206F66204D6F6E646179\",\n\t\t\"2C204D61792032352C2031393938003B\"\n\t};\n\n\tprivate static final String[] TURTLE_28 = {\n\t\t\"47494638396144004400D50000FFFFFF989800111111222222003232666600659800639696999999\",\n\t\t\"99993396966399CC00636496323200336600CCCC98FFFF996699336496639898CC33333330633030\",\n\t\t\"306330636398CC98CCCC0099CB3399CC66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\",\n\t\t\"44636330DDDDDDFFFFCB100000001000777777888888AAAAAABBBBBB555555666666000010000022\",\n\t\t\"000032000044EE00000022000032000000003C00003C00003C00003C00003C00003C00003C00003C\",\n\t\t\"00003C000021F9040100001D002C00000000440044004506FFC08E70482C1A8FC8A472C9342A384B\",\n\t\t\"566A7A4A35AFD8624A40E98E1A23DBA9D1A0881BE386AD2168A0D6ED827AD0567C0A0992AA05CD2E\",\n\t\t\"6D361465646405240D05890119018D018989880D346B032736567E580C2F6984888A1F2210A426A4\",\n\t\t\"221F8D90726865669A593114636BA08D0919A2222022A88C8F0501879F64232424097711122E7DB0\",\n\t\t\"4214035D145F36020274809EC49780028024CF5829C7C75D2E49368F202009ED0DE2F1F2F3F44D53\",\n\t\t\"F57E2C022418EC011AC28615B1F1E21B20408446B4A020A046973224002648E10C5F0A6967C86C5B\",\n\t\t\"1520811C3C240A085233CB8C0D7C4658D8B0C4854CC80C8A1C2D4A1020D52245C75A75C184722009\",\n\t\t\"FF1A9E481800F6E85682A3AA2091A8D04AA3B5162414F4EC90C2060A426382456AC42E19CD08ACD0\",\n\t\t\"98BCC402DAD507802AC853802840041035884C39684D0631AB07A6A24CD1208202100A4850D44BB8\",\n\t\t\"F0541B085A08286B1809071223143C004CE2C34F0B4E2A2020C1F30820411414B838598FC1142956\",\n\t\t\"DB8C583D4B1B313463BA08F004E8C5080A0E347C580022CC54176C10561B548855584234805EB371\",\n\t\t\"EC84601553559E1860F553C86161133968109855AD06D4194FAD0A884E9A480D6A7E0041EA012A54\",\n\t\t\"010C280ACB85B45E842E0DA94AF6A13F7B1093F5C7C82A1A81D7D97D648C044A2234AD074102BBF8\",\n\t\t\"52D423091023000A125464110DAF6915FF0A600F3C0001081D01B3DD206B8033023308C0838F196E\",\n\t\t\"1012934C34C9144C47898C318C36C7B493C00355A0400F0D06A9A106870B4AD24048AF95C1857842\",\n\t\t\"B000E55AC54066D035D435E0020931D4C21042664CA121611654F68106794077C416211D258104DC\",\n\t\t\"358604793050B0040547B5B35E6012C8390F793564E2E7A084166AE8A1F5D8D025A2CFA440410A2D\",\n\t\t\"B43025A11C9C70420DCF55D1C1A47BA850810D9312818002A0852A4E18122430946E092850400C5A\",\n\t\t\"08D0820BA361B25359E449034654C68C098B35240C40461E869020880A55B574091919A131007581\",\n\t\t\"B8D04505F225A001647BD9400301D2AC868618698C045A8A0A9261810D230890FFC006BB29406A4F\",\n\t\t\"B46A49D227B5B4D164530DC010C30B36E446C276E90A4A8F0BB7AD348CBD328604894B05924107BF\",\n\t\t\"761696C2182720ECD251A01CC52477C80C431C758D59B3A4914B4650E1821E41120028AF592A704F\",\n\t\t\"66606329310CD2D8DF073029F50975118FE71A210A3BD29F08223E707389377ADC867D87ADE18903\",\n\t\t\"8B385200230DBAF3418D45A1278D002FE3C3000A48AEA1722319B0C31E29ECD8C4E0713B11C60921\",\n\t\t\"80A0A07283A34060CA88574BCD4A1A801406C3094406A25F893479A55E2A370273DC3755F82ACF16\",\n\t\t\"C4383014511DA5DDCE800538B0DD55B32C09C808157C81924A238C71D5552AE7428ADDBDFC228C21\",\n\t\t\"729CF179C7200D36D00F42DF9180743036E5ADB82A9F5C72C208292870D47A294830C29F60031E47\",\n\t\t\"30064C5EA2DE88E4845F376B60FA4003DB2390973C2CBCE1DC68963A704848C078A43021B3ED1408\",\n\t\t\"112C84718254890A10C66774CC712F315B0362AA45F6BBCD6D64630D8358026E3C3BC4FD0630A811\",\n\t\t\"A8202A0918011402710D9209805F74A14BA104108C76800005A1AACA0B2850AC080C0301862287C6\",\n\t\t\"8E413F234CCC23C9780B09E272A840700F132844820DAE96B7FE30AD50FFD34244D8E12E123C8051\",\n\t\t\"5860015B8CA800E221F189508CE21383000021FF0B4D414347436F6E200403103900000001577269\",\n\t\t\"7474656E20627920474946436F6E76657274657220322E342E33206F66204D6F6E6461792C204D61\",\n\t\t\"792032352C2031393938003B\"\n\t};\n\n\tprivate static final String[] TURTLE_29 = {\n\t\t\"47494638396144004400D50000FFFFFF989800111111222222003232666600659800639696999999\",\n\t\t\"99993396966399CC00636496323200336600CCCC98FFFF996699336496639898CC33333330633030\",\n\t\t\"306330636398CC98CCCC0099CB3399CC66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\",\n\t\t\"44636330DDDDDDFFFFCB100000001000777777888888AAAAAABBBBBB555555666666000010000022\",\n\t\t\"000032000044EE0000002200003200000000C2AB00C20000C20000C20000C20000C20000C20000C2\",\n\t\t\"0000C2000021F9040100001D002C00000000440044004506FFC08E70482C1A8FC8A472C96C0E6D29\",\n\t\t\"922D991A51062345CA66723653140988441A17488D56C3C63E35DE701B45D040B9DDEF9340606B90\",\n\t\t\"585E8143297836746F64116F0505018E8E098E050D67937927271482815B789467928E1F22221026\",\n\t\t\"261010201F918F09706F7C58240A9B4C57350370349F8D191F2022ABAB018C8F937D6F6C14232835\",\n\t\t\"B43680B64815286C369903BA86C9790D7A23DF50D2D3811C2F8E201120231C482C36C5AC01C00D29\",\n\t\t\"E5F8F9FAFBFCFD1C0A7E5464AAA0A98880112EE6B08135A28F9C180DC279F890218102172EFA7500\",\n\t\t\"D382428B866EAE786A9080448104092691A185664D9C681A8D5C1B90EC8CC946AC3EE88C44F151B1\",\n\t\t\"FF93DE48F0894984C58B3714F034F2690C65CE00191A1570000BDB1A1B2649A02CA040C20015FAE0\",\n\t\t\"394473F2A481492741A0FC69A901853734EF112D9202CB08122D06506043F32A5F0A9524A04130F7\",\n\t\t\"169B172FC82179CB75CC8AC290234F1B60E185DC251CDC495EA28204180AD238C8DD62436F0D3F1A\",\n\t\t\"12805030659F14051154B34AD98070070E08689EC0BA3B1385B7B01A0898434101089234460850BC\",\n\t\t\"0906857B7B5110C0E27199DB64BAE030A284663789130332F1B93C97828B85DE28955C64899103B4\",\n\t\t\"6DFB646213796F7038248A454AF0E1C103100006108954DDB9350779FD9026077E057C50CC23AC80\",\n\t\t\"F0DF03C01C93922585B446140C346407FF4B53F48000C1283A39B894801554209C5BDF9C4042052E\",\n\t\t\"44E1D93E0CD061D51B11E8D714800FA002420692E4D7521E7CD1A256020FB875803E2F9CE7D222C7\",\n\t\t\"48D28A24EC7D33001F50D045540A28F0A28C556431D21625447253DC6642D4E5C20877094093216E\",\n\t\t\"92A09C7CD7B031029A453C5740041A9020411247A504426A0938500B9E8390D1800214104405091F\",\n\t\t\"28F080710021AA0F829666AAE9A69C6E4A5AA7B6A410E308CC1921907905711A450A15647944696F\",\n\t\t\"D1A2404A29685658A942BC888014509486147123A87181019168A000090360BA09079990306919AF\",\n\t\t\"C440D7352E85B446526B08F0C26F277D508006233C30803E27549080060110BBFF921FA4C142552C\",\n\t\t\"E1D9D1802E93C010C342118C50430AB80A62C35DF27D135138E294B65037F70577C5BD1AC6044FA3\",\n\t\t\"02B860208BF789B91D1967C0E1214D91B130024D0709D78D9891603C95AC6312A92C3FBFCD31921F\",\n\t\t\"406D67B1C5DCC1211E4C8561836D4DEB8909244FC41860802493F8B64661A4BD750899C68C928A2A\",\n\t\t\"3B41C54849267D73901C7389D5477626FD146588ABE824A031948474E05C72ECE6E152276590815A\",\n\t\t\"4F3F408A83C7A46C030D2AD8CA0F3C28B885097C27D1534A2A26949200905289191C1B128F50ABDE\",\n\t\t\"E530F0021EBBA1001F4F250AB8D68324D5E1B732EC1EFB2D1A99E1F35B1E748032F552C000A8964F\",\n\t\t\"29556D333351A004DC607128E4B3E01B04272ECAD31088D0D383C5E0B7177A2CFDF6673E5CC2D137\",\n\t\t\"0DC6102D762852AD770D260501921456095AE549D7539E64FB070628128B81F46D26070D27784949\",\n\t\t\"F1F9B105B3C2BAE129968B2D38D477C271D86C430C1340140B8853A72B1D0F1B7A400A96AEA2A97F\",\n\t\t\"C5A0656EBA121FDC20941778EF1B28B08DA538709763DD69231D60410A3E6383A344A00063D8001A\",\n\t\t\"FA05190E748D15ACA1827A00A49A5768EA05B3FAC04A0E75040A384527ABF9430315708207604D09\",\n\t\t\"36D880A414A000C7714A842C2C0A0B3E62830AAC0C5458CCA2168912040021FF0B4D414347436F6E\",\n\t\t\"2004031039000000015772697474656E20627920474946436F6E76657274657220322E342E33206F\",\n\t\t\"66204D6F6E6461792C204D61792032352C2031393938003B\"\n\t};\n\n\tprivate static final String[] TURTLE_30 = {\n\t\t\"47494638396144004400D50000FFFFFF989800111111222222003232666600659800639696999999\",\n\t\t\"99993396966399CC00636496323200336600CCCC98FFFF996699336496639898CC33333330633030\",\n\t\t\"306330636398CC98CCCC0099CB3399CC66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\",\n\t\t\"44636330DDDDDDFFFFCB100000001000777777888888AAAAAABBBBBB555555666666000010000022\",\n\t\t\"000032000044EE000000220000320000000032000032000032000032000032000032000032000032\",\n\t\t\"000032000021F9040100001D002C00000000440044004506FFC08E70482C1A8FC8A472C95CB25C88\",\n\t\t\"160599B20D060DD2269100915CD3A6B8536950B28E8685E81234DE6F8AC0D640C11B343BC56AB385\",\n\t\t\"C780292E2A237B02240D36270D055C6F059001925C1906060592888B667B2C80807B74676F0E0119\",\n\t\t\"921F191F2020102610102209A78D05241565A3892724245CBF140F281C9F457B287D702492019801\",\n\t\t\"1F222120091F0519908C052356723629C5E02C36346F247B890D27739B67577D7D9EE0F243142A01\",\n\t\t\"115E7F47365CAC0A0F0ABECD1B48B0A0C183088F28188180449F73E91CA6B311C34F960F240A2422\",\n\t\t\"567044850D5EBC3418D1A24503378B4ED07904A911A35E0932C23931C29D8D8446AA9C18B589E507\",\n\t\t\"FF68201E8448F0ECE787000922694497080505120A708AD37362113946CD906AA5B64A81D666CB10\",\n\t\t\"BD1991A8CF0972E648204C31601BD32C982E41FA692BCB9D772F26E074D29642A10102AE0CA8FA6E\",\n\t\t\"40462E111424A8C171EF121B0F462870182F090B1629285476CCB973932A4C14D8F832E04163CF54\",\n\t\t\"2820D85639DE9E1A144CBA30E0219586142B289C46DD41458C6D741651181E074E8C8AFCA22654D0\",\n\t\t\"2085E2A331C5865AA90BCE52B17778FA3958C54F770202FC9EE4B90952D298D91CB47C89FD64A2CD\",\n\t\t\"08A574AB4E2242C648CF58B13A9A35E952E17B0894100B7B9CE1C623CB3033C92A41EDA7A0244B69\",\n\t\t\"27400B5FA4808873BB8D210E16E5D9D2FF8C3301B0020108461195950328CEF4C6262E28304D2F24\",\n\t\t\"D440100C2B1D58400410B684142B2698200208394AF2C64A6678268700348C620788CE9897DF3D69\",\n\t\t\"1437875ABC755747035830925436D8DC655822FAF036440D73BC63C31C03584142212F2852CE1B08\",\n\t\t\"8869840D6409F20D7C438CD6C834F93580A7671C08808A7D9329414104F60134C29F62FAE18D9C90\",\n\t\t\"462AE9A494428A800B0256DA410A2FBC1026114F98E19C4C246428A7002A4881C41E23D460860144\",\n\t\t\"690082022DC419E953120CE7C913830DA7D20831500058041B14A0412F1464CA9B02150852E64C07\",\n\t\t\"BE71C51C14188088049D71A0996645BCB3621F2DA8B4221C670ED0E64D38A590FF05402432A7DBA6\",\n\t\t\"4462278A75BB9015581C36300A0E09032826C916BD14A2121DC960C94836EC25E0C28A8B48F46841\",\n\t\t\"2C08F040192A2549406C02F464061C4905E08B4669F4D2654A86281B0E0CF154111B050BBB095116\",\n\t\t\"882CD5D2CC5C46385C788E71E0429A592AD365460A3A08A1C7325901A66316F581C22630CE15222C\",\n\t\t\"10FCA4604B091C8C2FBA3815AC8BCCCF5083CA070F084DF31D69D2F98685A67ED2870081D1017456\",\n\t\t\"CDFCD40A2C0F88C01F26340BB74B160A2870E306E6A800CE3BF792C28C33D0403DA2DDA740984005\",\n\t\t\"3490539543A335CD8AB02EA4BDC41E1A5BD70C513FD94D1417A87CB81EB96E664442640FCB63C10B\",\n\t\t\"760CB964232632C3DFCA030F8CD878936F827959667E683E0603A39971429638D68209D8B188C078\",\n\t\t\"C7E8A9F3CEA70845DC9E583A4E02E4D45DC2216CBE9E89236D1EE57CC50C35A4F7427628CAA10603\",\n\t\t\"4AB1D712E487F4A633E408C2E3242C0D7414900C917718522250023E4985A22A581ACEF71491A645\",\n\t\t\"98C90628B095A436348243786A0E7320170CCEE0370C20A27DB7F2CB08CCE1A800E58B02AFF34517\",\n\t\t\"BA508D114C0A11F501410394A0AEB871A55092C20A08F0D100CDB1A001D38040DF0A31290BB80048\",\n\t\t\"3294C000246804F191203315D0976732730617604D5380B80C16B7C845D404010021FF0B4D414347\",\n\t\t\"436F6E2004031039000000015772697474656E20627920474946436F6E76657274657220322E342E\",\n\t\t\"33206F66204D6F6E6461792C204D61792032352C2031393938003B\"\n\t};\n\n\tprivate static final String[] TURTLE_31 = {\n\t\t\"47494638396144004400D50000FFFFFF989800111111222222003232666600659800639696999999\",\n\t\t\"99993396966399CC00636496323200336600CCCC98FFFF996699336496639898CC33333330633030\",\n\t\t\"306330636398CC98CCCC0099CB3399CC66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\",\n\t\t\"44636330DDDDDDFFFFCB100000001000777777888888AAAAAABBBBBB555555666666000010000022\",\n\t\t\"000032000044EE000000220000320000000030000030000030000030000030000030000030000030\",\n\t\t\"000030000021F9040100001D002C00000000440044004506FFC08E70482C1A8FC8A472C94C52584E\",\n\t\t\"1BA5314D043E0B904AE56A7ABF8DD1C8663B9D062D1BEAD46037688DC1A011977E9BA441E2B327D1\",\n\t\t\"5B2E0336746D8405877E8701017B010601050124938454143629775F97025484938B918B7C101026\",\n\t\t\"A5221F1990010D05958464656F342414249A47162F830D9DAEA0A1A31FAA8BC606AF84149723B9CE\",\n\t\t\"4264036E0D83BDB236BCD483937E1CCFDF422C0D93112035504A141109240F1234E8E0F2F3F4DF1C\",\n\t\t\"1C99F5DF2C022963E82DE65063636380000A0206382031C29B3E220A3AF821E16000820E2C7AF929\",\n\t\t\"64E85501760A481C6A8082D0894E36E27DB36061480A2E2A28089A52894404578A4094B2428C58A8\",\n\t\t\"FF432395B53941A285823D09D82D73A8E99A1C3A0544024D7AE503A30420403C806095D5226DB254\",\n\t\t\"3E0C7782028D01144AD221714C11A46474A4D8C234F60B0A29026CA14D4866590A18234466BDAA20\",\n\t\t\"62DD250C063CC0AAE0840DA687234B96ACC00689C28846B0103B99C88814CB8E5CAAD1C202951A11\",\n\t\t\"367C2CF0B8B3111614103094158B0E85642F2E85758DD10819656505BA82456DDC08C774EB897900\",\n\t\t\"C22AB711602FD58C34E99003A0C082B25966071CA6CA640810B0D1A2CD20416C48B0C3B9684F5611\",\n\t\t\"0156BD8D54BB8E0D310D5CA450EFC7450B4D2A1CA4DB5D9528424C021F25A0C0030F88D09C318854\",\n\t\t\"505F4124A4B060486348E04C0AB23C35FF8E03108E224229CD1D380A2B6C6DB45177FA64D44B716F\",\n\t\t\"D0D19E159128880A7C19D07888635408225946D410380E548AB8F5111F08BA100B72CDF0C60C1DD3\",\n\t\t\"4C8220541B4169902C17F0F69A2CC825248834748C815682111C358E964464D4420C45FD978F1153\",\n\t\t\"F091556115A239C42D0580C058034B40C1C29B761271CB142F7016E8A18826AAE8A24388D3423F0A\",\n\t\t\"DCC3E8122D2C73D906018010521E906949012F867640460B35544082011A58A54103A0851A193F08\",\n\t\t\"84D628461C4A018300E5A9A74003E71C2A8E0A15A4049B1B675462430CB224E0AA6B0854E04F1983\",\n\t\t\"C834054D505E22880036244A1B1D820CA2D6407151EB18059251C0614B43B840FF93035042B59648\",\n\t\t\"EBD52607B6CB6A52410547E9B9910AD7CC32C75409AC354E2294282353B6F2E4A1C03A06B0C31074\",\n\t\t\"2FC6011582EB0165B12892404914B6E47E930706019F40435ACB8C30C708344595885B8B34976391\",\n\t\t\"905432850DB5A4D0406191F6A6848B4F64344005958E41ED5A232982D5563E1983602470D926CB2D\",\n\t\t\"12A4504004A96D40810A77A4E082001CD7044A4F59811DB6313FBDF2A26381BDA2A7562454908B74\",\n\t\t\"3255898828561153CADDA9289D400415A8757618523D70CB37057147B457AA7C00C1882426CDF475\",\n\t\t\"511162725F9B8106E8DBBF55729D305664955552492940B65B24649E5C3D3E47399CC58CB072F456\",\n\t\t\"791BED8714DDD6EBCACC2570D41741D991280E41894C373D85207C4666412F14F038F04F085ED17A\",\n\t\t\"A6A1C4826D0C9D8EC5020C9F58F606CB6413938C766D74EC5A5AC67EF2112452354D0DB62C6A6901\",\n\t\t\"B6249114B149DCC645866316059A110D6AB950C653D76288005ED009916060126E3B540AEE72BF82\",\n\t\t\"44035A64E84404F29494E6342081685213054660816E5D62332E6900820EF4814DE94F00D09944F5\",\n\t\t\"8A700B3E3C804EB6ABCB1602508ECAACB0511A4909A25CD1B29BB9A00B935AC2321E600305A82B88\",\n\t\t\"5E90820E91C8C426DE21080021FF0B4D414347436F6E2004031039000000015772697474656E2062\",\n\t\t\"7920474946436F6E76657274657220322E342E33206F66204D6F6E6461792C204D61792032352C20\",\n\t\t\"31393938003B\"\n\t};\n\n\tprivate static final String[] TURTLE_32 = {\n\t\t\"47494638396144004400D50000FFFFFF989800111111222222003232666600659800639696999999\",\n\t\t\"99993396966399CC00636496323200336600CCCC98FFFF996699336496639898CC33333330633030\",\n\t\t\"306330636398CC98CCCC0099CB3399CC66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\",\n\t\t\"44636330DDDDDDFFFFCB100000001000777777888888AAAAAABBBBBB555555666666000010000022\",\n\t\t\"000032000044EE00000022000032000000004D00004D00004D00004D00004D00004D00004D00004D\",\n\t\t\"00004D000021F9040100001D002C00000000440044004506FFC08E70482C1A8FC8A472C96C0E5914\",\n\t\t\"4AA35148683E8114A935727A9B5A49C5469E46A5035B83361D48A7A7938DF5FD726C24C7C0D5A190\",\n\t\t\"E527530D24240109540589018B01890989540D6A0D146936020D120A09091F09240D2A492969747E\",\n\t\t\"142A2D7E6A6F825305011FB01F1F101026B620B28A05068584939229754CA781539328BD8B558A19\",\n\t\t\"9D9E8BB2A0700D2373C4D9422C3623030D272828926A93642324D76E05B40620EF99DAF21D2C03E8\",\n\t\t\"9C35C3F3FBFCFDFE471CF4FD934721C60B0A47FC9C10F0E2451A01343E081CE885C20B320E90BD9A\",\n\t\t\"4228818202915C9D39C58F900203014028B036C2851B4ADF1A7002992843CA072062D1C2D28859A2\",\n\t\t\"FF0A70D41C3BC6C6C6C43ADC5E9621B1AC11276920121802F10057CE4789124D92D38062110B0246\",\n\t\t\"700D44828DA24506A83402896C15990108BC3A614143809F11950608B04181CE131B09723E78A040\",\n\t\t\"0142B94B56764AA9C028E2C790FB49290C4B813D0A7C2267B381C285140A0E3AADACE15773111B2A\",\n\t\t\"489CD00705946A57300E0AB074D8741112155CEC95934CD0318D6D07A439FA98432B57541EB982C4\",\n\t\t\"8B1A384AAB14102291A201824F0A2A50E89284458D4D9E088DC0FB5B50569A8CDEE5B489152B7229\",\n\t\t\"5CA7135E59FB48260C876CD02060A3450B1B27383748044CB1038208BAC4A2004E22D0D253004C21\",\n\t\t\"478924F535C1C01123D8D5C000E511B2FF562C19D4624B83862CC6C8896DCCE6D83F299031891489\",\n\t\t\"14C8CC89298100812EBB64E54A1A037020173734A080067205C2F2E02220401294147CD9E6C70040\",\n\t\t\"01370809CA552389460548074A05B60DE1470DE350B31719BBB9F8023AEC78F20161A2742944146E\",\n\t\t\"9040818F4BC02856855DB290023B0944F0400524B8290F37869D6081A08826AAE8A28C76908E5DD4\",\n\t\t\"055A5AA347ACE482021B707285020870416911490D50C305BD5CC18E03DC21BAA2112DD6D0420C27\",\n\t\t\"B8604D9F36D089A80B29E04A440AFFFD77E50B02C0E062938952D0428B29B0C00D32ACB472C22995\",\n\t\t\"F035A969512090C2355C5D2340792320778D8BD34646825E27742B5C30831440FF82AC8204F32C49\",\n\t\t\"A6A9A0461EC841E2D174541002521C1BC2894D113EB2C001029935A1AC0D87BEC9D1376A64355301\",\n\t\t\"0E9C672484D404E3E2002D542001AE0938A0920204D80A90BCF7B65B461A8270A29C9181F1040B2F\",\n\t\t\"F56AD411539C18C625122C349002081A18F00928DF4A49CD59814585C5538FF4A49C50C8B8712953\",\n\t\t\"857595C408157442E52504747BF224452A4295089DB49C13338F2450010D34F8C12C1951244B5C11\",\n\t\t\"1490D0D8B715B440095F44CA3D8B27B33C608B2D1FD8C44C0311ABCB1132E12A6151697418E7591A\",\n\t\t\"28701549212FD728C22D0846130B234616C01BDBFEAC820905C730C5797AEF40A072027E07FEA174\",\n\t\t\"0046416CE897E02DD548211F4A95748D7E2368939266449BF83C2E4ADEAD2B8BCC240D04244A2315\",\n\t\t\"5BE47423578B9CB9D2B0873E3D9FBCCAD6ECDBC6BF3F0A3B09CACE9D65C859C0476FC301D49E7938\",\n\t\t\"1B1CD14C93E1666C58C6142243B6EC95C7B452CE980310DF20B013154AD8060A65084401AE51090A\",\n\t\t\"CC6628368052048A168B9FB9C92DC33A17E99EA5AC1615A2131F330CA25AE48211A8822F6FA3071E\",\n\t\t\"36209D07C443502910807FD2913F24502005385454CE083141100CE2534BC8192C40801B09080088\",\n\t\t\"4A60800D1400822546018941E48B0DA048C52A1E21080021FF0B4D414347436F6E20040310390000\",\n\t\t\"00015772697474656E20627920474946436F6E76657274657220322E342E33206F66204D6F6E6461\",\n\t\t\"792C204D61792032352C2031393938003B\"\n\t};\n\n\tprivate static final String[] TURTLE_33 = {\n\t\t\"47494638396144004400D50000FFFFFF989800111111222222003232666600659800639696999999\",\n\t\t\"99993396966399CC00636496323200336600CCCC98FFFF996699336496639898CC33333330633030\",\n\t\t\"306330636398CC98CCCC0099CB3399CC66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\",\n\t\t\"44636330DDDDDDFFFFCB100000001000777777888888AAAAAABBBBBB555555666666000010000022\",\n\t\t\"000032000044EE00000022000032000000003B00003B00003B00003B00003B00003B00003B00003B\",\n\t\t\"00003B000021F9040100001D002C00000000440044004506FFC08E70482C1A8FC8A472C96C922829\",\n\t\t\"C5A6F0592448A35673CBEDB00696119133209D288D7421DDA0A0D3B6B88DD2AD2353B60689AD4E24\",\n\t\t\"0A050E80010606010587886B7C6C7114237B35340D364C0A14201F06200559232E0270277A24110D\",\n\t\t\"881FA9542210262610221F0901011FB4888769036E3624764B72796C806B6BB3C48819B387092009\",\n\t\t\"7C360271041CBFBF2C1436030DA127A30D27362703E4E494712F2F247FCD0F200A97D6F2422965EB\",\n\t\t\"EF7AD5F3FBFCFDFEFF008D50A041C1C20B176E1A685010B00E8B060852B8109707CDB76224F630A2\",\n\t\t\"04AE0C2F1A15468C68E0C2851F3F7B24704951A1410C042CE29C3911EA143244CD20D44A65EB1633\",\n\t\t\"FF8D8BF450A2D36504050936F0CC9138229A0D1434BE91C08593164F1001DA4180650B5084A07258\",\n\t\t\"341492CD468D6D6D38EE99842BAB01621AF3843B454281B36735C62AC1F6748000A3D28826614158\",\n\t\t\"6F973DCD9E287861B8B1E32D0878155080A50505158F7FB9A9D1E08201071B3EACA9901949612479\",\n\t\t\"E20CB011235B8C17614B1369918244D214D9DA240497E69B37381D29ACA620D6080705B83352B830\",\n\t\t\"AFC1889ABAD4A44940D9E6A00019370A9749C2458175F09AEAB386166D9AA97F4ED102112B4086AC\",\n\t\t\"7F140162F33B58712E1C54D870965164368BA31470854D593D0041061F80E08E08B1BC778B03CBEC\",\n\t\t\"118C0DF759A247336B1080C2002DB430FFC746C3F8C4DE56EDF9A16026872492861BD960B6D20B82\",\n\t\t\"0DC1411CBC35B0DA796D0DE2478A011818CB329C68C4C66A15FA539630948C82025D11D0C2E32DB8\",\n\t\t\"F021C06A48FA621803307CB3E41E287C435750D2F4428100025800488209204859690CC421000D79\",\n\t\t\"98E1666049558807091B4440021EB21561C308307497429FFC401200081AE85109A1F2E0910DA390\",\n\t\t\"462AE9A48EA5600207F9753028A54B34004F02096E00820A0A08B029A763A4D540041AA462C00734\",\n\t\t\"14892A1E0318A5DB3D368C87EA108EBAE6D784A7124A018C7652E00D92944C0923388EC8DAD80008\",\n\t\t\"7858DC1B73190B0D1B24EC324738C126A1800BDD76519B04158443A3702820CBFFC8246CB0F82B71\",\n\t\t\"1D1CB747461F9000424608C8A34203293495875FD065041E46F3D1479F1C68D4652F4A50CC93020C\",\n\t\t\"713860911A41DDE4242220A6D1D40919C173EF031430244F648D507C0532B56405A580F3AD91DA48\",\n\t\t\"DECC35C7695C60334436E60EC34E03CB24284B563D5145420592BCD1C670D628C07223BFF1B10820\",\n\t\t\"EF89E0CE7A3EFB11A503823CC3488C5B54008F2CD979F88DB55315B34A26CA80B015571910730B09\",\n\t\t\"B4244B66525D24D5E4070A5072011AEA5E083715B620A8762BB1C8D213940150F6CD8D5D9C20C106\",\n\t\t\"721210521BD1188C6D8A1F20C80A2B402B088B7B050FB99A055D3CD2300B2954D3AFADBD384D458A\",\n\t\t\"3BA69C955D10A0E8DCE45BC0B561470ACE6AEA481B027859F62038E1E2F3CF568FE0321ABB3474A4\",\n\t\t\"397A8CC2964FC4B7255A5036CA8102D7FD28258EAA15A5E1C01E6D256080758C08A380042438C06F\",\n\t\t\"432C184463034B7A791EDC87C4250EC42F0C20E05DB2408EAE00F2B0B4D0601B63E3CDF7A4C1A164\",\n\t\t\"F5021099680665C215106C082037BC79C219A8D40D7861E314580181821AA092D264034E72F08605\",\n\t\t\"5633020A762037366841EF1C1393478C6085BB62821B2031951ACC30872CE018DC12108107E42D5F\",\n\t\t\"3934020BA662954BC02B89476813091E10071742710834BBA2167715040021FF0B4D414347436F6E\",\n\t\t\"2004031039000000015772697474656E20627920474946436F6E76657274657220322E342E33206F\",\n\t\t\"66204D6F6E6461792C204D61792032352C2031393938003B\"\n\t};\n\n\tprivate static final String[] TURTLE_34 = {\n\t\t\"47494638396144004400D50000FFFFFF989800111111222222003232666600659800639696999999\",\n\t\t\"99993396966399CC00636496323200336600CCCC98FFFF996699336496639898CC33333330633030\",\n\t\t\"306330636398CC98CCCC0099CB3399CC66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\",\n\t\t\"44636330DDDDDDFFFFCB100000001000777777888888AAAAAABBBBBB555555666666000010000022\",\n\t\t\"000032000044EE000000220000320000000027000027000027000027000027000027000027000027\",\n\t\t\"000027000021F9040100001D002C00000000440044004506FFC08E70482C1A8FC8A472C9545246A3\",\n\t\t\"00480352A55288A676DB4CD91ADFC1EB35107C1B8D93CD66B6A58E9C5523957024488D0AB7C89A23\",\n\t\t\"5C6B0D0314030D05680578058B0601058E8B918B0D1460686D2C7B463616596B67688609888F1020\",\n\t\t\"095210AA22201F09A801198E8EA182022F2D5C0A361B206036832D2E14C4270378A1240E8F920109\",\n\t\t\"91B18F01D301B5C63627091824AF78999A4C2C0C2F361424143469960D0E140202039F836F462C57\",\n\t\t\"E0F849290D24DC1F11FD6CE41B48B0A0C183088DA8185023CF087E0A34084CA889530B0A43529C40\",\n\t\t\"5328D49787B5426DDC18CADD9A1323FA29E8C76FE24015B5BE242A304ADA879B1F32DCA4268DDD22\",\n\t\t\"FF5A6A80ADD1A4F243807E2D46B4C0167292216A1974B63A2505C4031146A77D4884E6041E1B2AF6\",\n\t\t\"D8B3A084C5276024BF7CA9544BD2333C14D6041C446251820F204028D845319C171A035C34B040E1\",\n\t\t\"5BDFC319CBC5C588B8B1E3260ACC22E0F078204A12113468306AA0809ECAE0E2D670114340DCB36B\",\n\t\t\"0A736101332E017C2C0C0FA190024AC8745F46861A440CDE9A0A0D5CB420A1E05537949435B1A04D\",\n\t\t\"A2DCA7E00D50A0E9C7ADAE21692C4386CCBD865E4112656CA46BFB2AD25DA3519D3D9B96A842BA43\",\n\t\t\"D6181F14F02B94249B101EDC7D004204849DD0CC72D43A6684A549031FACF4C408279C50C9001BD5\",\n\t\t\"5553003BE98417045839631586394102FF1F18CDC9C6840AC4A1028283288CE08219229194084FD3\",\n\t\t\"A082CA2319F477D32BAE58F3C9460A6CF1046D4678911A050E6A874804D408C8DE75C860F30509AD\",\n\t\t\"68308D5E2A88884F0AA7D950037D97E84692216904424898E5301057030980B0413FAA3D86250C66\",\n\t\t\"0840C348D80C60C150A00DC48200175587820D3DE63910058FBCA5800BDE09AAE8A28C36EAE8A390\",\n\t\t\"56C60173FD8CA0400A83449A04897BE118800605B8A469111C50828601066C7647A0A316014C520D\",\n\t\t\"8CC0961D40E683809506A5609A00319416433C160CE2A41BB816B117091B5C914542F63015D220D3\",\n\t\t\"0D324021E1D5BA521E2E70739755285CB9866C9588F9A548D185429F0DB29AF4FF09142E1CC29F02\",\n\t\t\"0FD890DC1E14200093405EA041080A5F16908222FD70F5E1B82D9593520334A0D02638369020C139\",\n\t\t\"0234184832772882087B90C404069DDD1DA4820B1530D824296838B04C92CC40B3880382D4126EA2\",\n\t\t\"050582CC75024B03020431CA92A43311A0314A1A41D9502C388269F7CC8469FE27552B3BCDF20809\",\n\t\t\"D370D49BBCF918E6059D95D44CD3CD216490F403A664E535C6771450645C1380C302326CD117AECF\",\n\t\t\"CF8892D7331FF867820958BD925786937CF8C9D049F4710A4B234C4B49C4D345F00C8D8F7CA08A2A\",\n\t\t\"A7E0F500DE204833604CF26951C3031F18E0CB09045462CCCCF641FD133538157AB308B09407A650\",\n\t\t\"3610E0C216FD24A0D8011E2884FE503CCFD9773AC6854AA3D38C37F97D1A3F78D450E5120A9C2081\",\n\t\t\"04B4C59505316C7134B12133A70C8980D2C027FA0933A5D98A020D306146E0591EDE15D0D847000D\",\n\t\t\"2A8DB428000C2FC440E8D67A2B68D01AF184742EF2E341535D1C809B3508660D2F18C1D1A4F08007\",\n\t\t\"90E0330669D6181A7602E998AA41875343034CC306B5C84648C03901CC28822536C4AA2316FC0A30\",\n\t\t\"E221801142AA5936F853079F601AC0B58A18B222810B22D3AA2594A3010A88405EAEB5AC1E92EA5F\",\n\t\t\"14D2CB08DC604438A0015E5F69E212EC6143295AF18AA30A020021FF0B4D414347436F6E20040310\",\n\t\t\"39000000015772697474656E20627920474946436F6E76657274657220322E342E33206F66204D6F\",\n\t\t\"6E6461792C204D61792032352C2031393938003B\"\n\t};\n\n\tprivate static final String[] TURTLE_35 = {\n\t\t\"47494638396144004400D50000FFFFFF989800111111222222003232666600659800639696999999\",\n\t\t\"99993396966399CC00636496323200336600CCCC98FFFF996699336496639898CC33333330633030\",\n\t\t\"306330636398CC98CCCC0099CB3399CC66CCCCCCFFCBFF66CB33CBCB33CCCC66FFFF33FFFF654444\",\n\t\t\"44636330DDDDDDFFFFCB100000001000777777888888AAAAAABBBBBB555555666666000010000022\",\n\t\t\"000032000044EE000000220000320000000079AB0079000079000079000079000079000079000079\",\n\t\t\"000079000021F9040100001D002C00000000440044004506FFC08E70482C1A8FC8A472C9542A522A\",\n\t\t\"0A45C06A5AAF4D964DE062C0A4B6F040D0B095B7A7B02DC5EE345CA38A24D14824480A520A4BA4C4\",\n\t\t\"A4551D29270D53368405248A24050D0D0501010593948C15288E8E240D69367C4C038EA18E949319\",\n\t\t\"011010A720A910201F1F7620221F91949984027B9F2924B18A23236599C48F90B59294099401CB91\",\n\t\t\"0D929B0D2F36301694AF20DA200D124A2C022F4C146A362828669934349936EC24E43631036B9FF6\",\n\t\t\"F7471424CD8D2714BBF8020A1C48B0A0401523146CD090E08306470AF0D97820019E412283CC5070\",\n\t\t\"84421AC7629C0811DB18320CC0802C5A8C40908282C834A4EC3063952000AC48CE20E98CA4281DB9\",\n\t\t\"FF01015330E0D081DC89502710319A14A956810FB3B4D54AA08D16CE3B23C390A868274185884958\",\n\t\t\"0C5060E70C8511295D6C24538864031266CC3472C42ED19D46EC1A08485AAF088B14812EF26121C1\",\n\t\t\"460B182E16A54320B8B1E3C790234B668240808D0020347C7051462007152A1C176A70C1458D4406\",\n\t\t\"3EB0016C85438AC405A82AF8D7388500CB0206A411204513A70603A4E80353AEC10812891BA013AC\",\n\t\t\"C251184784CC70D6B42F91C7762E7D96A14070009B727C6DB86DE48069B348FC20E12C503EC0A634\",\n\t\t\"C1F782154802C6A1624CCD7FB00A352AB20CB1D82209316A1494C221BB9122CD24FB7DF0D42CA974\",\n\t\t\"05C20326D0020908054C275E18983086FF050B1438B009059C99014F3A24D0E18824E7A157937A37\",\n\t\t\"35A5222E27C4968001016400421E271951C3031F180082782804430F872035206226EAD9D2A40173\",\n\t\t\"E146C20861BCB0A2361B1440A5131454D4E3102D81E7084964C4D5000D2265E74F3CE44CB6040B0C\",\n\t\t\"1C18069B358471DB08160C109A9B03A5745C040968E000273604C6A73D0A30104F5F8736EAE8A390\",\n\t\t\"462AE9A493B16028A5DF98F0D6082020F00077982281801ECB681600431504540809043806CF260E\",\n\t\t\"1810810620E8F109072C142068AD24D4D0186F358C095C3996CDD9C611795490182C76B8341F4120\",\n\t\t\"A220C50B02C0F0C718D8DDD6D61696D5C9DB1B05289047B09E08A64592474127FF92BA2341B70549\",\n\t\t\"B6D666DC462E39570C23A43C92A4BB260DD4126B423437265B31E16BDE3E2F1A838B6F695CFAC91A\",\n\t\t\"2974160621D36592E2529340A9537E0554404A3F6A58062A3E67A950910B08F6A6702931E6889E7A\",\n\t\t\"4A46A0DE5C48317A0F0BCD55502F31932C68132C404BF54106CC241380027315124641CF39B79122\",\n\t\t\"74A83761360FB4625524199C32093122154A100724A5B3F23EA83CD04C2A2654D8CC07555FCD5331\",\n\t\t\"27AC4454504D33B9CC230DD502202BA988D0CC84AE20034200EDA82152B05D5E81099969A21801D2\",\n\t\t\"4D020860CB1F40408B1DB1243D468D11CCB14D1E4CE471873423689B64222CEE54D33290102DE080\",\n\t\t\"BF1D62E32BB22930C9C29743E0B17A23049C852D743CCFCC0CC7384189EF21603C3D494D3B0EA944\",\n\t\t\"0308A4460701030443CE5A4A8BBD755D8AC84C3CC836D4BC5A3C0D54102F120A9C50C10670853102\",\n\t\t\"071CB430F1BBE9B06566288AE4A52F5FE4DC1686C358380B05002884BFD829297023C4087443880A\",\n\t\t\"B0831ED7BBCDC882C2002BFC25051680010C6EE30F8F018710088449E90618AA22C4494EE6E0C25B\",\n\t\t\"5AA0000910B0844290420B1A302B6D3C00030280E11106A1089BD890363A3C82261EF080A5059109\",\n\t\t\"2F3CA21297C8C42606010021FF0B4D414347436F6E2004031039000000015772697474656E206279\",\n\t\t\"20474946436F6E76657274657220322E342E33206F66204D6F6E6461792C204D61792032352C2031\",\n\t\t\"393938003B\"\n\t};\n\n\tprivate static final String[][] TURTLE_IMAGE = {\n\t\tTURTLE_00,\n\t\tTURTLE_01,\n\t\tTURTLE_02,\n\t\tTURTLE_03,\n\t\tTURTLE_04,\n\t\tTURTLE_05,\n\t\tTURTLE_06,\n\t\tTURTLE_07,\n\t\tTURTLE_08,\n\t\tTURTLE_09,\n\t\tTURTLE_10,\n\t\tTURTLE_11,\n\t\tTURTLE_12,\n\t\tTURTLE_13,\n\t\tTURTLE_14,\n\t\tTURTLE_15,\n\t\tTURTLE_16,\n\t\tTURTLE_17,\n\t\tTURTLE_18,\n\t\tTURTLE_19,\n\t\tTURTLE_20,\n\t\tTURTLE_21,\n\t\tTURTLE_22,\n\t\tTURTLE_23,\n\t\tTURTLE_24,\n\t\tTURTLE_25,\n\t\tTURTLE_26,\n\t\tTURTLE_27,\n\t\tTURTLE_28,\n\t\tTURTLE_29,\n\t\tTURTLE_30,\n\t\tTURTLE_31,\n\t\tTURTLE_32,\n\t\tTURTLE_33,\n\t\tTURTLE_34,\n\t\tTURTLE_35\n\t};\n\n/* Serial version UID */\n/**\n * The serialization code for this class.  This value should be incremented\n * whenever you change the structure of this class in an incompatible way,\n * typically by adding a new instance variable.\n */\n\tstatic final long serialVersionUID = 1L;\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/graphics/package.html",
    "content": "<html>\n<head>\n<title>The acm.graphics Package</title>\n</head>\n<body>\nThis package provides a set of classes that support the creation of simple,\nobject-oriented graphical displays.  The basic model is that of a felt board\nof the sort one might use as a child.  The felt board itself is represented by\nthe <a href=\"GCanvas.html\"><code>GCanvas</code></a> class, which is a lightweight\ncontainer that supports the addition of graphical objects that correspond to the\nshapes attached to the board.  These graphical objects come from a variety of\nclasses that represent geometrical shapes and other graphical entities including\nlines, ovals, rectangles, images, and strings.\n\n<p>The standard approach to using the <code>acm.graphics</code> package consists\nof the following steps:\n\n<ol>\n<li>Allocate a new <code>GCanvas</code> object to serve as the surface to which\nsubsequent graphical objects are attached.\n<li>Make the canvas appear on the screen by adding it to some component that\nis displayed.  The simplest strategy, for example, is to create a <code>JFrame</code>\nobject and then add the <code>GCanvas</code> at the center of that frame.\n<li>Use the <code>add</code> method in <code>GCanvas</code> to add new graphical\nobjects from the <code>GObject</code> hierarchy.\n</ol>\n\n<p>As an example, the following main program follows this outline to display a red square\non the screen:\n\n<p><pre><code>\n&nbsp;    public static void main(String[] args) {\n&nbsp;       GCanvas gc = new GCanvas();\n&nbsp;       JFrame frame = new JFrame();\n&nbsp;       frame.getContentPane().add(BorderLayout.CENTER, gc);\n&nbsp;       GRectangle square = new GRectangle(100, 100, 200, 200);\n&nbsp;       square.setFilled(true);\n&nbsp;       square.setColor(Color.RED);\n&nbsp;       gc.add(square);\n&nbsp;       frame.show();\n&nbsp;    }\n<code></pre>\n\n<p>Much of this boilerplate can be eliminated by using the\n<a href=\"../program/GraphicsProgram.html\"><code>GraphicsProgram</code></a> class\nin the <a href=\"../program/package-summary.html\"><code>acm.program</code></a> package.\n\n<p>The public classes in the <code>acm.graphics</code> package can be diagrammed\nas follows:\n\n<p><table border=1 cellspacing=0 cellpadding=4 width=600>\n<tr><td align=center><img src=\"../../../../images/GraphicsClasses.gif\"></td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/gui/DoubleField.java",
    "content": "/*\n * @(#)DoubleField.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Bug fix 2-Mar-07 (ESR, JTFBug 2007-004)\n//   1. Fixed bug in the formatting code that allowed the display to\n//      extend beyond the boundaries of the component.\n//\n// Bug fix 6-May-07 (ESR, JTFBug 2007-006)\n//   1. Fixed various bugs in the localization of numbers.\n//\n// Feature enhancement 26-May-08 (ESR)\n//   1. Added support for serialization.\n\npackage acm.gui;\n\nimport acm.io.*;\nimport acm.util.*;\nimport java.awt.*;\nimport java.text.*;\nimport java.util.*;\nimport javax.swing.*;\n\n/* Class: DoubleField */\n/**\n * This class implements a simple interactor that accepts a floating-point value.\n */\npublic class DoubleField extends JTextField {\n\n/* Constructor: DoubleField() */\n/**\n * Creates a new field object for entering a <code>double</code> value.\n * The contents of the field are initially blank.\n *\n * @usage DoubleField field = new DoubleField();\n */\n\tpublic DoubleField() {\n\t\tthis(\"\", Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY);\n\t}\n\n/* Constructor: DoubleField(value) */\n/**\n * Creates a new field object for entering a <code>double</code> value.\n * The contents of the field initially contain the specified value.\n *\n * @usage DoubleField field = new DoubleField(value);\n * @param value The value to store in the field\n */\n\tpublic DoubleField(double value) {\n\t\tthis(\"\" + value, Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY);\n\t}\n\n/* Constructor: DoubleField(low, high) */\n/**\n * Creates a new field object for entering a <code>double</code> value,\n * which is constrained to be within the specified range. The contents\n * of the field are initially blank.\n *\n * @usage DoubleField field = new DoubleField(low, high);\n * @param low The lowest value in the permitted range\n * @param high The highest value in the permitted range\n */\n\tpublic DoubleField(double low, double high) {\n\t\tthis(\"\", low, high);\n\t}\n\n/* Constructor: DoubleField(value, low, high) */\n/**\n * Creates a new field object for entering a <code>double</code> value,\n * which is constrained to be within the specified range. The contents\n * of the field initially contain the specified value.\n *\n * @usage DoubleField field = new DoubleField(value, low, high);\n * @param value The value to store in the field\n * @param low The lowest value in the permitted range\n * @param high The highest value in the permitted range\n */\n\tpublic DoubleField(double value, double low, double high) {\n\t\tthis(\"\" + value, low, high);\n\t}\n\n/* Private constructor: DoubleField(str, low, high) */\n/**\n * Creates a new field object for entering a <code>double</code> value,\n * which is constrained to be within the specified range. The contents\n * of the field initially contain the specified string.\n */\n\tprivate DoubleField(String str, double low, double high) {\n\t\tparser = NumberFormat.getNumberInstance(Locale.US);\n\t\tsetBackground(Color.WHITE);\n\t\tsetHorizontalAlignment(RIGHT);\n\t\tminValue = low;\n\t\tmaxValue = high;\n\t\tsetText(str);\n\t\texceptionOnError = false;\n\t}\n\n/* Method: getValue() */\n/**\n * Returns the value of this field as a <code>double</code>.  If this value is either\n * not a legal numeric value or is outside the specified range, this method will\n * either pop up a dialog allowing the user to reenter the value or throw an\n * <code>ErrorException</code> depending on the state of the <code>exceptionOnError</code>\n * flag.\n *\n * @usage double d = field.getValue();\n * @return The value stored in the field as a <code>double</code>\n */\n\tpublic double getValue() {\n\t\tString text = getText().trim();\n\t\tif (text.length() == 0) {\n\t\t\tif (minValue <= 0 && maxValue >= 0) return 0.0;\n\t\t\treturn minValue;\n\t\t}\n\t\tString msg = null;\n\t\tdouble value = 0.0;\n\t\twhile (true) {\n\t\t\ttry {\n\t\t\t\tvalue = parser.parse(text).doubleValue();\n\t\t\t\tif (value >= minValue && value <= maxValue) break;\n\t\t\t\tmsg = \"Value is outside the specified range\";\n\t\t\t} catch (ParseException ex) {\n\t\t\t\tmsg = \"Illegal numeric format\";\n\t\t\t}\n\t\t\tif (exceptionOnError) {\n\t\t\t\tthrow new ErrorException(msg);\n\t\t\t} else {\n\t\t\t\tString prompt = \"Enter a number\";\n\t\t\t\tif (minValue != Double.NEGATIVE_INFINITY) {\n\t\t\t\t\tif (maxValue != Double.POSITIVE_INFINITY) {\n\t\t\t\t\t\tprompt += \" between \" + minValue + \" and \" + maxValue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tprompt += \" greater than \" + minValue;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (maxValue != Double.POSITIVE_INFINITY) {\n\t\t\t\t\t\tprompt += \" less than \" + maxValue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (dialog == null) dialog = new IODialog(this);\n\t\t\t\tvalue = dialog.readDouble(prompt, minValue, maxValue);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tsetValue(value);\n\t\treturn value;\n\t}\n\n/* Method: setValue(d) */\n/**\n * Sets the value of a field.\n *\n * @usage field.setValue(d);\n * @param d The value to be stored in the field\n */\n\tpublic void setValue(double d) {\n\t\tsetText((formatter == null) ? defaultFormat(d) : formatter.format(d));\n\t}\n\n/* Method: getFormat() */\n/**\n * Returns the format currently in use for this field, or\n * <code>null</code> if no format has been set.\n *\n * @usage String format = field.getFormat();\n * @return The format for this field\n */\n\tpublic String getFormat() {\n\t\treturn formatString;\n\t}\n\n/* Method: setFormat(format) */\n/**\n * Sets the format used for the field.  The structure of the\n * format string is described in the comments for the DecimalFormat\n * class.  If a format is set for the field, the format will also be\n * used to read the number to ensure that localization is correctly\n * handled.\n *\n * @usage field.setFormat(format);\n * @param format The format to use for the field\n */\n\tpublic void setFormat(String format) {\n\t\tString contents = getText().trim();\n\t\tdouble value = 0;\n\t\tif (contents.length() != 0) {\n\t\t\ttry {\n\t\t\t\tvalue = parser.parse(contents).doubleValue();\n\t\t\t} catch (ParseException ex) {\n\t\t\t\tthrow new ErrorException(ex);\n\t\t\t}\n\t\t}\n\t\tformatString = format;\n\t\tif (format == null) {\n\t\t\tformatter = null;\n\t\t\tparser = NumberFormat.getNumberInstance(Locale.US);\n\t\t} else {\n\t\t\tformatter = (format.length() == 0) ? new DecimalFormat() : new DecimalFormat(format);\n\t\t\tparser = formatter;\n\t\t}\n\t\tif (contents.length() != 0) {\n\t\t\tsetValue(value);\n\t\t}\n\t}\n\n/* Method: setExceptionOnError(flag) */\n/**\n * Sets the error-handling mode of this interactor as specified by the <code>flag</code>\n * parameter.  If <code>flag</code> is <code>false</code> (which is the default),\n * calling <a href=\"#getValue()\"><code>getValue</code></a> on this interactor displays\n * a dialog that gives the user a chance to retry after erroneous input.  If this\n * value is set to <code>true</code>, illegal input raises an\n * <a href=\"../util/ErrorException.html\"><code>ErrorException</code></a> instead.\n *\n * @usage field.setExceptionOnError(flag);\n * @param flag <code>false</code> to retry on errors; <code>true</code> to raise an exception\n */\n\tpublic void setExceptionOnError(boolean flag) {\n\t\texceptionOnError = flag;\n\t}\n\n/* Method: getExceptionOnError() */\n/**\n * Returns the state of the error-handling flag.\n *\n * @usage boolean flag = console.getExceptionOnError();\n * @return The current setting of the error-handling mode (<code>false</code> to retry\n *         on errors; <code>true</code> to raise an exception)\n */\n\tpublic boolean getExceptionOnError() {\n\t\treturn exceptionOnError;\n\t}\n\n/* Override method: getPreferredSize() */\n/**\n * Overrides the standard definition to impose a target size.\n * @noshow\n */\n\tpublic Dimension getPreferredSize() {\n\t\tDimension size = super.getPreferredSize();\n\t\treturn new Dimension(Math.max(MINIMUM_WIDTH, size.width),\n\t\t                     Math.max(MINIMUM_HEIGHT, size.height));\n\t}\n\n/* Private method: defaultFormat(d) */\n/**\n * This method formats the number if the formatter is <code>null</code>.\n * The code attempts to fit the value into the field.  All the work comes\n * from having to round off the digits that are shifted out of the field.\n */\n\tprivate String defaultFormat(double d) {\n\t\tString str = \"\" + d;\n\t\tint availableSpace = getSize().width - 2 * PIXEL_MARGIN;\n\t\tFontMetrics fm = getFontMetrics(getFont());\n\t\tif (fm.stringWidth(str) <= availableSpace) return str;\n\t\tint eIndex = str.indexOf(\"E\");\n\t\tString suffix = \"\";\n\t\tif (eIndex != -1) {\n\t\t\tsuffix = str.substring(eIndex);\n\t\t\tstr = str.substring(0, eIndex);\n\t\t\ttry {\n\t\t\t\td = parser.parse(str).doubleValue();\n\t\t\t} catch (ParseException ex) {\n\t\t\t\tthrow new ErrorException(ex);\n\t\t\t}\n\t\t}\n\t\tNumberFormat standard = NumberFormat.getNumberInstance(Locale.US);\n\t\tstandard.setGroupingUsed(false);\n\t\tString head = str.substring(0, str.indexOf('.') + 1);\n\t\tint fractionSpace = availableSpace - fm.stringWidth(head + suffix);\n\t\tif (fractionSpace > 0) {\n\t\t\tint fractionDigits = fractionSpace / fm.stringWidth(\"0\");\n\t\t\tstandard.setMaximumFractionDigits(fractionDigits);\n\t\t\treturn standard.format(d) + suffix;\n\t\t}\n\t\tstr = \"\";\n\t\twhile (fm.stringWidth(str + \"#\") <= availableSpace) {\n\t\t\tstr += \"#\";\n\t\t}\n\t\treturn str;\n\t}\n\n/* Private constants */\n\tprivate static final int MINIMUM_WIDTH = 60;\n\tprivate static final int MINIMUM_HEIGHT = 22;\n\tprivate static final int PIXEL_MARGIN = 2;\n\n/* Private instance variables */\n\tprivate boolean exceptionOnError;\n\tprivate double minValue;\n\tprivate double maxValue;\n\tprivate String formatString;\n\tprivate DecimalFormat formatter;\n\tprivate NumberFormat parser;\n\tprivate IODialog dialog;\n\n/* Serial version UID */\n/**\n * The serialization code for this class.  This value should be incremented\n * whenever you change the structure of this class in an incompatible way,\n * typically by adding a new instance variable.\n */\n\tstatic final long serialVersionUID = 1L;\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/gui/HPanel.java",
    "content": "/*\n * @(#)HPanel.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Feature enhancement 26-May-08 (ESR)\n//   1. Added support for serialization.\n\npackage acm.gui;\n\n/* Class: HPanel */\n/**\n * This class represents a horizontal <a href=\"TablePanel.html\"><code>TablePanel</code></a>\n * with a single row.  It is used along with <a href=\"VPanel.html\"><code>VPanel</code></a>\n * to assemble hierarchical collections of panels that can be partitioned into rows\n * and columns.\n */\npublic class HPanel extends TablePanel {\n\n/* Constructor: HPanel() */\n/**\n * Creates a new <code>HPanel</code>.  An <code>HPanel</code> uses a\n * <code>TableLayout</code> manager with a single row.\n *\n * @usage HPanel hbox = new HPanel();\n */\n\tpublic HPanel() {\n\t\tthis(0, 0);\n\t}\n\n/* Constructor: HPanel(hgap, vgap) */\n/**\n * Creates a new <code>HPanel</code> with the specified <code>hgap</code>\n * and <code>vgap</code> parameters, which specify the padding between\n * elements.  For an <code>HPanel</code>, the <code>vgap</code> is used\n * to assign space above and below the row.\n *\n * @usage HPanel hbox = new HPanel(hgap, vgap);\n * @param hgap The gap between columns\n * @param vgap The gap between rows\n */\n\tpublic HPanel(int hgap, int vgap) {\n\t\tTableLayout layout = new TableLayout(1, 0, hgap, vgap);\n\t\tlayout.setHorizontalAlignment(TableLayout.FILL);\n\t\tlayout.setVerticalAlignment(TableLayout.FILL);\n\t\tsetLayout(layout);\n\t}\n\n/* Serial version UID */\n/**\n * The serialization code for this class.  This value should be incremented\n * whenever you change the structure of this class in an incompatible way,\n * typically by adding a new instance variable.\n */\n\tstatic final long serialVersionUID = 1L;\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/gui/IntField.java",
    "content": "/*\n * @(#)IntField.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Bug fix 2-Mar-07 (ESR, JTFBug 2007-004)\n//   1. Fixed bug in the formatting code that allowed the display to\n//      extend beyond the boundaries of the component.\n//\n// Bug fix 6-May-07 (ESR, JTFBug 2007-006)\n//   1. Fixed various bugs in the localization of numbers.\n//\n// Feature enhancement 26-May-08 (ESR)\n//   1. Added support for serialization.\n\npackage acm.gui;\n\nimport acm.io.*;\nimport acm.util.*;\nimport java.awt.*;\nimport java.text.*;\nimport java.util.*;\nimport javax.swing.*;\n\n/* Class: IntField */\n/**\n * This class implements a simple interactor that accepts an integer value.\n */\npublic class IntField extends JTextField {\n\n/* Constructor: IntField() */\n/**\n * Creates a new field object for entering a <code>int</code> value.\n * The contents of the field are initially blank.\n *\n * @usage IntField field = new IntField();\n */\n\tpublic IntField() {\n\t\tthis(\"\", Integer.MIN_VALUE, Integer.MAX_VALUE);\n\t}\n\n/* Constructor: IntField(value) */\n/**\n * Creates a new field object for entering a <code>int</code> value.\n * The contents of the field initially contain the specified value.\n *\n * @usage IntField field = new IntField(value);\n * @param value The value to store in the field\n */\n\tpublic IntField(int value) {\n\t\tthis(\"\" + value, Integer.MIN_VALUE, Integer.MAX_VALUE);\n\t}\n\n/* Constructor: IntField(low, high) */\n/**\n * Creates a new field object for entering a <code>int</code> value,\n * which is constrained to be within the specified range. The contents\n * of the field are initially blank.\n *\n * @usage IntField field = new IntField(low, high);\n * @param low The lowest value in the permitted range\n * @param high The highest value in the permitted range\n */\n\tpublic IntField(int low, int high) {\n\t\tthis(\"\", low, high);\n\t}\n\n/* Constructor: IntField(value, low, high) */\n/**\n * Creates a new field object for entering a <code>int</code> value,\n * which is constrained to be within the specified range. The contents\n * of the field initially contain the specified value.\n *\n * @usage IntField field = new IntField(value, low, high);\n * @param value The value to store in the field\n * @param low The lowest value in the permitted range\n * @param high The highest value in the permitted range\n */\n\tpublic IntField(int value, int low, int high) {\n\t\tthis(\"\" + value, low, high);\n\t}\n\n/* Private constructor: IntField(str, low, high) */\n/**\n * Creates a new field object for entering a <code>int</code> value,\n * which is constrained to be within the specified range. The contents\n * of the field initially contain the specified string.\n */\n\tprivate IntField(String str, int low, int high) {\n\t\tparser = NumberFormat.getNumberInstance(Locale.US);\n\t\tsetBackground(Color.WHITE);\n\t\tsetHorizontalAlignment(RIGHT);\n\t\tminValue = low;\n\t\tmaxValue = high;\n\t\tsetText(str);\n\t\texceptionOnError = false;\n\t}\n\n/* Method: getValue() */\n/**\n * Returns the value of this field as a <code>int</code>.  If this value is either\n * not a legal numeric value or is outside the specified range, this method will\n * either pop up a dialog allowing the user to reenter the value or throw an\n * <code>ErrorException</code> depending on the state of the <code>exceptionOnError</code>\n * flag.\n *\n * @usage int n = field.getValue();\n * @return The value stored in the field as a <code>int</code>\n */\n\tpublic int getValue() {\n\t\tString text = getText().trim();\n\t\tif (text.length() == 0) {\n\t\t\tif (minValue <= 0 && maxValue >= 0) return 0;\n\t\t\treturn minValue;\n\t\t}\n\t\tString msg = null;\n\t\tint value = 0;\n\t\twhile (true) {\n\t\t\ttry {\n\t\t\t\tvalue = parser.parse(text).intValue();\n\t\t\t\tif (value >= minValue && value <= maxValue) break;\n\t\t\t\tmsg = \"Value is outside the specified range\";\n\t\t\t} catch (ParseException ex) {\n\t\t\t\tmsg = \"Illegal integer format\";\n\t\t\t}\n\t\t\tif (exceptionOnError) {\n\t\t\t\tthrow new ErrorException(msg);\n\t\t\t} else {\n\t\t\t\tString prompt = \"Enter an integer\";\n\t\t\t\tif (minValue != Integer.MIN_VALUE) {\n\t\t\t\t\tif (maxValue != Integer.MAX_VALUE) {\n\t\t\t\t\t\tprompt += \" between \" + minValue + \" and \" + maxValue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tprompt += \" greater than \" + minValue;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (maxValue != Integer.MAX_VALUE) {\n\t\t\t\t\t\tprompt += \" less than \" + maxValue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (dialog == null) dialog = new IODialog(this);\n\t\t\t\tvalue = dialog.readInt(prompt, minValue, maxValue);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tsetValue(value);\n\t\treturn value;\n\t}\n\n/* Method: setValue(n) */\n/**\n * Sets the value of a field.\n *\n * @usage field.setValue(n);\n * @param n The value to be stored in the field\n */\n\tpublic void setValue(int n) {\n\t\tsetText((formatter == null) ? defaultFormat(n) : formatter.format(n));\n\t}\n\n/* Method: getFormat() */\n/**\n * Returns the format currently in use for this field, or\n * <code>null</code> if no format has been set.\n *\n * @usage String format = field.getFormat();\n * @return The format for this field\n */\n\tpublic String getFormat() {\n\t\treturn formatString;\n\t}\n\n/* Method: setFormat(format) */\n/**\n * Sets the format used for the field.  The structure of the\n * format string is described in the comments for the DecimalFormat\n * class.\n *\n * @usage field.setFormat(format);\n * @param format The format to use for the field\n */\n\tpublic void setFormat(String format) {\n\t\tString contents = getText().trim();\n\t\tint value = 0;\n\t\tif (contents.length() != 0) {\n\t\t\ttry {\n\t\t\t\tvalue = parser.parse(contents).intValue();\n\t\t\t} catch (ParseException ex) {\n\t\t\t\tthrow new ErrorException(ex);\n\t\t\t}\n\t\t}\n\t\tformatString = format;\n\t\tif (format == null) {\n\t\t\tformatter = null;\n\t\t\tparser = NumberFormat.getNumberInstance(Locale.US);\n\t\t} else {\n\t\t\tformatter = (format.length() == 0) ? new DecimalFormat() : new DecimalFormat(format);\n\t\t\tparser = formatter;\n\t\t}\n\t\tif (contents.length() != 0) {\n\t\t\tsetValue(value);\n\t\t}\n\t}\n\n/* Method: setExceptionOnError(flag) */\n/**\n * Sets the error-handling mode of this interactor as specified by the <code>flag</code>\n * parameter.  If <code>flag</code> is <code>false</code> (which is the default),\n * calling <a href=\"#getValue()\"><code>getValue</code></a> on this interactor displays\n * a dialog that gives the user a chance to retry after erroneous input.  If this\n * value is set to <code>true</code>, illegal input raises an\n * <a href=\"../util/ErrorException.html\"><code>ErrorException</code></a> instead.\n *\n * @usage field.setExceptionOnError(flag);\n * @param flag <code>false</code> to retry on errors; <code>true</code> to raise an exception\n */\n\tpublic void setExceptionOnError(boolean flag) {\n\t\texceptionOnError = flag;\n\t}\n\n/* Method: getExceptionOnError() */\n/**\n * Returns the state of the error-handling flag.\n *\n * @usage boolean flag = console.getExceptionOnError();\n * @return The current setting of the error-handling mode (<code>false</code> to retry\n *         on errors; <code>true</code> to raise an exception)\n */\n\tpublic boolean getExceptionOnError() {\n\t\treturn exceptionOnError;\n\t}\n\n/* Override method: getPreferredSize() */\n/**\n * Overrides the standard definition to impose a target size.\n * @noshow\n */\n\tpublic Dimension getPreferredSize() {\n\t\tDimension size = super.getPreferredSize();\n\t\treturn new Dimension(Math.max(MINIMUM_WIDTH, size.width),\n\t\t                     Math.max(MINIMUM_HEIGHT, size.height));\n\t}\n\n/* Private method: defaultFormat(n) */\n/**\n * This method formats the number if the formatter is <code>null</code>.\n * The only special case that applies occurs if the output is larger than\n * the field, in which case the entire display is replaced by number signs.\n */\n\tprivate String defaultFormat(int n) {\n\t\tString str = \"\" + n;\n\t\tint availableSpace = getSize().width - 2 * PIXEL_MARGIN;\n\t\tFontMetrics fm = getFontMetrics(getFont());\n\t\tif (fm.stringWidth(str) > availableSpace) {\n\t\t\tstr = \"\";\n\t\t\twhile (fm.stringWidth(str + \"#\") <= availableSpace) {\n\t\t\t\tstr += \"#\";\n\t\t\t}\n\t\t}\n\t\treturn str;\n\t}\n\n/* Private constants */\n\tprivate static final int MINIMUM_WIDTH = 60;\n\tprivate static final int MINIMUM_HEIGHT = 22;\n\tprivate static final int PIXEL_MARGIN = 2;\n\n/* Private instance variables */\n\tprivate boolean exceptionOnError;\n\tprivate int minValue;\n\tprivate int maxValue;\n\tprivate String formatString;\n\tprivate DecimalFormat formatter;\n\tprivate NumberFormat parser;\n\tprivate IODialog dialog;\n\n/* Serial version UID */\n/**\n * The serialization code for this class.  This value should be incremented\n * whenever you change the structure of this class in an incompatible way,\n * typically by adding a new instance variable.\n */\n\tstatic final long serialVersionUID = 1L;\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/gui/TableConstraints.java",
    "content": "/*\n * @(#)TableConstraints.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Code cleanup 28-May-07 (ESR)\n//   1. Added generic type tags.\n//\n// Feature enhancement 26-May-08 (ESR)\n//   1. Added support for serialization.\n\npackage acm.gui;\n\nimport acm.util.*;\nimport java.awt.*;\nimport java.util.*;\n\n/* Class: TableConstraints */\n/**\n * This class specifies a set of constraints appropriate to a\n * <code>TableLayout</code> or <code>GridBagLayout</code>.  It has\n * the following advantages over the <code>GridBagConstraints</code>\n * class on which it is based:\n *\n * <p><ul>\n * <li>The constraints can be specified as an easily readable string\n *     instead of by initializing the individual fields.\n * <li>The class includes new <code>width</code> and <code>height</code>\n *     fields that can be used with <code>TableLayout</code> to specify\n *     minimum heights and widths for rows and columns.\n * <li>The class provides accessor methods (<code>getGridX</code>\n *     and so forth) so that clients can operate as if the fields\n *     are private.\n * <li>The class includes a <code>toString</code> method that\n *     displays nondefault values of the fields in a readable way.\n * </ul>\n *\n * <p>To create a <code>TableConstraints</code> object, use the\n * constructor with a string argument to set the fields of the\n * underlying <code>GridBagConstraints</code> object.  For example,\n * suppose you wanted to achieve the effect of the traditional code\n *\n * <p><pre><code>\n * &nbsp;    GridBagConstraints gbc = new GridBagConstraints();\n * &nbsp;    gbc.gridx = 2;\n * &nbsp;    gbc.gridy = 3;\n * &nbsp;    gbc.fill = GridBagConstraints.BOTH;\n * </code></pre>\n *\n * <p>Using <code>TableConstraints</code>, you can do all of this\n * with the constructor, as follows:\n *\n * <p><pre><code>\n * &nbsp;    new TableConstraints(\"gridx=2 gridy=3 fill=BOTH\");\n * </code></pre>\n */\npublic class TableConstraints extends GridBagConstraints {\n\n/* Field: width */\n/**\n * Specifies the desired width of this cell.  The width of a column\n * is taken to be the maximum of the specified cell widths.  If this\n * field has its default value of 0, the width is taken from the\n * preferred size of the component.\n */\n\tpublic int width;\n\n/* Field: height */\n/**\n * Specifies the desired height of this cell.  The height of a row\n * is taken to be the maximum of the specified cell heights.  If this\n * field has its default value of 0, the height is taken from the\n * preferred size of the component.\n */\n\tpublic int height;\n\n/* Constructor: TableConstraints() */\n/**\n * Creates a new <code>TableConstraints</code> object with default\n * values for each of the fields.\n *\n * @usage TableConstraints constraints = new TableConstraints();\n */\n\tpublic TableConstraints() {\n\t\tthis(\"\");\n\t}\n\n/* Constructor: TableConstraints(str) */\n/**\n * Creates a new <code>TableConstraints</code> object whose components\n * are initialized according from the specified string.  Each field is\n * initialized by specifying a binding in the form\n *\n * <p><pre><code>\n * &nbsp;    <font face=\"serif;times\"><i>key</i></font>=<font face=\"serif;times\"><i>value</i></font>\n * </code></pre>\n *\n * <p>where <i>key</i> is the name of one of the public fields\n * in the <code>TableConstraints</code> class and <i>value</i> is the\n * corresponding value, which can be expressed either as an integer\n * or as one of the constant names appropriate to that field.  For\n * example, the string\n *\n * <p><pre><code>\n * &nbsp;    \"width=20 fill=BOTH\"\n * </code></pre>\n *\n * <p>would create a <code>TableConstraints</code> object whose\n * <code>width</code> field was set to 20 and whose <code>fill</code>\n * field was set the the constant <code>GridBagConstraints.BOTH</code>.\n *\n * <p>As a special case, the four elements of the <code>insets</code>\n * field can be set using the key names <code>left</code>, <code>right</code>,\n * <code>top</code>, and <code>bottom</code>.  Also, because the names\n * are more likely to indicate their purposes to novices, the HTML names\n * <code>rowspan</code> and <code>colspan</code> can be used in place\n * of <code>gridwidth</code> and <code>gridheight</code>.\n *\n * @usage TableConstraints constraints = new TableConstraints(str);\n * @param str The constraint string as a series of key/value pairs\n */\n\tpublic TableConstraints(String str) {\n\t\tthis(new OptionTable(str.toLowerCase(), LEGAL_KEYS).getMap());\n\t}\n\n/* Constructor: TableConstraints(map) */\n/**\n * Creates a new <code>TableConstraints</code> object whose components\n * are the key/value pairs in the map.\n *\n * @usage TableConstraints constraints = new TableConstraints(map);\n * @param map A map containing the key/value pairs\n * @noshow\n */\n\tpublic TableConstraints(Map<String,String> map) {\n\t\tOptionTable constraintTable = new OptionTable(map);\n\t\tgridx = parseXYConstraint(constraintTable.getOption(\"gridx\"));\n\t\tgridy = parseXYConstraint(constraintTable.getOption(\"gridy\"));\n\t\tString rowSpan = constraintTable.getOption(\"gridwidth\");\n\t\tif (rowSpan == null) rowSpan = constraintTable.getOption(\"rowspan\");\n\t\tString colSpan = constraintTable.getOption(\"gridheight\");\n\t\tif (colSpan == null) colSpan = constraintTable.getOption(\"colspan\");\n\t\tgridwidth = parseSpanConstraint(rowSpan);\n\t\tgridheight = parseSpanConstraint(colSpan);\n\t\tfill = parseFillConstraint(constraintTable.getOption(\"fill\"));\n\t\tanchor = parseAnchorConstraint(constraintTable.getOption(\"anchor\"));\n\t\tipadx = constraintTable.getIntOption(\"ipadx\", 0);\n\t\tipady = constraintTable.getIntOption(\"ipady\", 0);\n\t\tweightx = constraintTable.getDoubleOption(\"weightx\", 0.0);\n\t\tweighty = constraintTable.getDoubleOption(\"weighty\", 0.0);\n\t\tinsets.left = constraintTable.getIntOption(\"left\", 0);\n\t\tinsets.right = constraintTable.getIntOption(\"right\", 0);\n\t\tinsets.top = constraintTable.getIntOption(\"top\", 0);\n\t\tinsets.bottom = constraintTable.getIntOption(\"bottom\", 0);\n\t\twidth = constraintTable.getIntOption(\"width\", -1);\n\t\tif (width == -1) {\n\t\t\twidth = 0;\n\t\t} else {\n\t\t\twidth += insets.left + insets.right;\n\t\t}\n\t\theight = constraintTable.getIntOption(\"height\", -1);\n\t\tif (height == -1) {\n\t\t\theight = 0;\n\t\t} else {\n\t\t\theight += insets.top + insets.bottom;\n\t\t}\n\t\tif (gridwidth != 1 && width != 0) {\n\t\t\tthrow new ErrorException(\"TableConstraints: Cannot specify both width and gridwidth\");\n\t\t}\n\t\tif (gridheight != 1 && height != 0) {\n\t\t\tthrow new ErrorException(\"TableConstraints: Cannot specify both height and gridheight\");\n\t\t}\n\t}\n\n/* Constructor: TableConstraints(gbc) */\n/**\n * Creates a new <code>TableConstraints</code> object whose fields match those\n * of the specified <code>GridBagConstraints</code> object.  Clients will not\n * ordinarily need to call this version of the constructor.\n *\n * @usage TableConstraints constraints = new TableConstraints(gbc);\n * @param gbc The <code>GridBagConstraints</code> object to copy\n * @noshow\n */\n\tpublic TableConstraints(GridBagConstraints gbc) {\n\t\tgridx = gbc.gridx;\n\t\tgridy = gbc.gridy;\n\t\tgridwidth = gbc.gridwidth;\n\t\tgridheight = gbc.gridheight;\n\t\tfill = gbc.fill;\n\t\tanchor = gbc.anchor;\n\t\tipadx = gbc.ipadx;\n\t\tipady = gbc.ipady;\n\t\tweightx = gbc.weightx;\n\t\tweighty = gbc.weighty;\n\t\tinsets.left = gbc.insets.left;\n\t\tinsets.right = gbc.insets.right;\n\t\tinsets.top = gbc.insets.top;\n\t\tinsets.bottom = gbc.insets.bottom;\n\t\tif (gbc instanceof TableConstraints) {\n\t\t\tTableConstraints tc = (TableConstraints) gbc;\n\t\t\twidth = tc.width;\n\t\t\theight = tc.height;\n\t\t}\n\t}\n\n/* Method: getAnchor() */\n/**\n * Returns the <code>anchor</code> field from the constraint.\n *\n * @usage int anchor = constraint.getAnchor();\n * @return The <code>anchor</code> field from the constraint\n */\n\tpublic int getAnchor() {\n\t\treturn anchor;\n\t}\n\n/* Method: getFill() */\n/**\n * Returns the <code>fill</code> field from the constraint.\n *\n * @usage int fill = constraint.getFill();\n * @return The <code>fill</code> field from the constraint\n */\n\tpublic int getFill() {\n\t\treturn fill;\n\t}\n\n/* Method: getGridX() */\n/**\n * Returns the <code>gridx</code> field from the constraint.\n *\n * @usage int gridx = constraint.getGridX();\n * @return The <code>gridx</code> field from the constraint\n */\n\tpublic int getGridX() {\n\t\treturn gridx;\n\t}\n\n/* Method: getGridY() */\n/**\n * Returns the <code>gridy</code> field from the constraint.\n *\n * @usage int gridy = constraint.getGridY();\n * @return The <code>gridy</code> field from the constraint\n */\n\tpublic int getGridY() {\n\t\treturn gridy;\n\t}\n\n/* Method: getGridWidth() */\n/**\n * Returns the <code>gridwidth</code> field from the constraint.\n *\n * @usage int gridwidth = constraint.getGridWidth();\n * @return The <code>gridwidth</code> field from the constraint\n */\n\tpublic int getGridWidth() {\n\t\treturn gridwidth;\n\t}\n\n/* Method: getGridHeight() */\n/**\n * Returns the <code>gridheight</code> field from the constraint.\n *\n * @usage int gridheight = constraint.getGridHeight();\n * @return The <code>gridheight</code> field from the constraint\n */\n\tpublic int getGridHeight() {\n\t\treturn gridheight;\n\t}\n\n/* Method: getIPadX() */\n/**\n * Returns the <code>ipadx</code> field from the constraint.\n *\n * @usage int ipadx = constraint.getIPadX();\n * @return The <code>ipadx</code> field from the constraint\n */\n\tpublic int getIPadX() {\n\t\treturn ipadx;\n\t}\n\n/* Method: getIPadY() */\n/**\n * Returns the <code>ipady</code> field from the constraint.\n *\n * @usage int ipady = constraint.getIPadY();\n * @return The <code>ipady</code> field from the constraint\n */\n\tpublic int getIPadY() {\n\t\treturn ipady;\n\t}\n\n/* Method: getInsets() */\n/**\n * Returns the <code>insets</code> field from the constraint.\n *\n * @usage Insets insets = constraint.getInsets();\n * @return The <code>insets</code> field from the constraint\n */\n\tpublic Insets getInsets() {\n\t\treturn insets;\n\t}\n\n/* Method: getWeightX() */\n/**\n * Returns the <code>weightx</code> field from the constraint.\n *\n * @usage double weightx = constraint.getWeightX();\n * @return The <code>weightx</code> field from the constraint\n */\n\tpublic double getWeightX() {\n\t\treturn weightx;\n\t}\n\n/* Method: getWeightY() */\n/**\n * Returns the <code>weighty</code> field from the constraint.\n *\n * @usage double weighty = constraint.getWeightY();\n * @return The <code>weighty</code> field from the constraint\n */\n\tpublic double getWeightY() {\n\t\treturn weighty;\n\t}\n\n/* Method: getWidth() */\n/**\n * Returns the <code>width</code> field from the constraint.\n *\n * @usage int width = constraint.getWidth();\n * @return The <code>width</code> field from the constraint\n */\n\tpublic int getWidth() {\n\t\treturn width;\n\t}\n\n/* Method: getHeight() */\n/**\n * Returns the <code>height</code> field from the constraint.\n *\n * @usage int height = constraint.getHeight();\n * @return The <code>height</code> field from the constraint\n */\n\tpublic int getHeight() {\n\t\treturn height;\n\t}\n\n/* Override method: toString() */\n/**\n * Converts the constraint into a readable string.\n *\n * @usage String str = constraint.toString();\n * @return A readable string version of the constraint\n * @noshow\n */\n\tpublic String toString() {\n\t\tString str = getClass().getName();\n\t\tstr += \"[gridx=\" + gridx + \",gridy=\" + gridy;\n\t\tswitch (fill) {\n\t\t  case VERTICAL: str += \",fill=VERTICAL\"; break;\n\t\t  case HORIZONTAL: str += \",fill=HORIZONTAL\"; break;\n\t\t  case BOTH: str += \",fill=BOTH\"; break;\n\t\t}\n\t\tswitch (anchor) {\n\t\t  case NORTH: str += \",anchor=NORTH\"; break;\n\t\t  case SOUTH: str += \",anchor=SOUTH\"; break;\n\t\t  case EAST: str += \",anchor=EAST\"; break;\n\t\t  case WEST: str += \",anchor=WEST\"; break;\n\t\t  case NORTHEAST: str += \",anchor=NORTHEAST\"; break;\n\t\t  case NORTHWEST: str += \",anchor=NORTHWEST\"; break;\n\t\t  case SOUTHEAST: str += \",anchor=SOUTHEAST\"; break;\n\t\t  case SOUTHWEST: str += \",anchor=SOUTHWEST\"; break;\n\t\t  case MY_PAGE_START: str += \",anchor=PAGE_START\"; break;\n\t\t  case MY_PAGE_END: str += \",anchor=PAGE_END\"; break;\n\t\t  case MY_LINE_START: str += \",anchor=LINE_START\"; break;\n\t\t  case MY_LINE_END: str += \",anchor=LINE_END\"; break;\n\t\t  case MY_FIRST_LINE_START: str += \",anchor=FIRST_LINE_START\"; break;\n\t\t  case MY_FIRST_LINE_END: str += \",anchor=FIRST_LINE_END\"; break;\n\t\t  case MY_LAST_LINE_START: str += \",anchor=LAST_LINE_START\"; break;\n\t\t  case MY_LAST_LINE_END: str += \",anchor=LAST_LINE_END\"; break;\n\t\t}\n\t\tif (gridwidth != 1) str += \",gridwidth=\" + gridwidth;\n\t\tif (gridheight != 1) str += \",gridheight=\" + gridheight;\n\t\tif (ipadx != 0) str += \",ipadx=\" + ipadx;\n\t\tif (ipady != 0) str += \",ipady=\" + ipady;\n\t\tif (insets.left != 0) str += \",left=\" + insets.left;\n\t\tif (insets.right != 0) str += \",right=\" + insets.right;\n\t\tif (insets.top != 0) str += \",top=\" + insets.top;\n\t\tif (insets.bottom != 0) str += \",bottom=\" + insets.bottom;\n\t\tif (width != 0) str += \",width=\" + width;\n\t\tif (height != 0) str += \",height=\" + height;\n\t\tstr += \"]\";\n\t\treturn str;\n\t}\n\n/* Private method: parseXYConstraint(str) */\n/**\n * Reads the <code>gridx</code> and <code>gridy</code> values.\n */\n\tprivate int parseXYConstraint(String str) {\n\t\tif (str == null) return RELATIVE;\n\t\tif (str.equals(\"relative\")) return RELATIVE;\n\t\ttry {\n\t\t\treturn Integer.decode(str).intValue();\n\t\t} catch (NumberFormatException ex) {\n\t\t\tthrow new ErrorException(\"TableConstraints: Illegal grid coordinate\");\n\t\t}\n\t}\n\n/* Private method: parseSpanConstraint(str) */\n/**\n * Reads the <code>gridwidth</code> and <code>gridheight</code> values.\n */\n\tprivate int parseSpanConstraint(String str) {\n\t\tif (str == null) return 1;\n\t\tif (str.equals(\"relative\")) return RELATIVE;\n\t\tif (str.equals(\"remainder\")) return REMAINDER;\n\t\ttry {\n\t\t\treturn Integer.decode(str).intValue();\n\t\t} catch (NumberFormatException ex) {\n\t\t\tthrow new ErrorException(\"TableConstraints: Illegal span constraint\");\n\t\t}\n\t}\n\n/* Private method: parseAnchorConstraint(str) */\n/**\n * Reads the value of an <code>anchor</code> constraint.\n */\n\tprivate int parseAnchorConstraint(String str) {\n\t\tif (str == null) return CENTER;\n\t\tif (str.equals(\"center\")) return CENTER;\n\t\tif (str.equals(\"north\")) return NORTH;\n\t\tif (str.equals(\"south\")) return SOUTH;\n\t\tif (str.equals(\"east\")) return EAST;\n\t\tif (str.equals(\"west\")) return WEST;\n\t\tif (str.equals(\"northeast\") || str.equals(\"ne\")) return NORTHEAST;\n\t\tif (str.equals(\"northwest\") || str.equals(\"nw\")) return NORTHWEST;\n\t\tif (str.equals(\"southeast\") || str.equals(\"se\")) return SOUTHEAST;\n\t\tif (str.equals(\"southwest\") || str.equals(\"sw\")) return SOUTHWEST;\n\t\tif (str.equals(\"page_start\")) return MY_PAGE_START;\n\t\tif (str.equals(\"page_end\")) return MY_PAGE_END;\n\t\tif (str.equals(\"line_start\")) return MY_LINE_START;\n\t\tif (str.equals(\"line_end\")) return MY_LINE_END;\n\t\tif (str.equals(\"first_line_start\")) return MY_FIRST_LINE_START;\n\t\tif (str.equals(\"first_line_end\")) return MY_FIRST_LINE_END;\n\t\tif (str.equals(\"last_line_start\")) return MY_LAST_LINE_START;\n\t\tif (str.equals(\"last_line_end\")) return MY_LAST_LINE_END;\n\t\tthrow new ErrorException(\"TableConstraints: Illegal anchor specification\");\n\t}\n\n/* Private method: parseFillConstraint(str) */\n/**\n * Reads the value of an <code>fill</code> constraint.\n */\n\tprivate int parseFillConstraint(String str) {\n\t\tif (str == null || str.equals(\"none\")) return NONE;\n\t\tif (str.equals(\"horizontal\")) return HORIZONTAL;\n\t\tif (str.equals(\"vertical\")) return VERTICAL;\n\t\tif (str.equals(\"both\")) return BOTH;\n\t\tthrow new ErrorException(\"TableConstraints: Illegal fill specification\");\n\t}\n\n/* Constants that allow this file to be compiled with old libraries */\n\tprivate static final int MY_PAGE_START = 19;\n\tprivate static final int MY_PAGE_END = 20;\n\tprivate static final int MY_LINE_START = 21;\n\tprivate static final int MY_LINE_END = 22;\n\tprivate static final int MY_FIRST_LINE_START = 23;\n\tprivate static final int MY_FIRST_LINE_END = 24;\n\tprivate static final int MY_LAST_LINE_START = 25;\n\tprivate static final int MY_LAST_LINE_END = 26;\n\n/* Array of legal keys */\n\tprotected static final String[] LEGAL_KEYS = {\n\t\t\"anchor\",\n\t\t\"bottom\",\n\t\t\"colspan\",\n\t\t\"fill\",\n\t\t\"gridwidth\",\n\t\t\"gridheight\",\n\t\t\"gridx\",\n\t\t\"gridy\",\n\t\t\"height\",\n\t\t\"ipadx\",\n\t\t\"ipady\",\n\t\t\"left\",\n\t\t\"right\",\n\t\t\"rowspan\",\n\t\t\"top\",\n\t\t\"weightx\",\n\t\t\"weighty\",\n\t\t\"width\"\n\t};\n\n/* Serial version UID */\n/**\n * The serialization code for this class.  This value should be incremented\n * whenever you change the structure of this class in an incompatible way,\n * typically by adding a new instance variable.\n */\n\tstatic final long serialVersionUID = 1L;\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/gui/TableLayout.java",
    "content": "/*\n * @(#)TableLayout.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Bug fix 8-Jan-06 (ESR, JTFBug 2008-001)\n//   1. Fixed bug in the layoutContainer failed to consider the gridwidth\n//      and gridheight values in computing the width of a column.\n//\n// Code cleanup 28-May-07 (ESR)\n//   1. Added generic type tags.\n//\n// Feature enhancement 26-May-08 (ESR)\n//   1. Added support for serialization.\n\npackage acm.gui;\n\nimport acm.util.*;\nimport java.awt.*;\nimport java.lang.reflect.*;\nimport java.io.*;\nimport java.util.*;\nimport javax.swing.*;\n\n/* Class: TableLayout */\n/**\n * This class implements a new <code>LayoutManager</code> that arranges\n * components into a two-dimensional grid.  The capabilities are analogous\n * to those provide by the <code>GridBagLayout</code> class, although\n * <code>TableLayout</code> is considerably easier to use.\n *\n * The constructor for the <code>TableLayout</code> class takes the number\n * of rows and columns.  Thus, the constructor call\n *\n * <p><pre><code>\n * &nbsp;    new TableLayout(3, 5)\n * <code></pre>\n *\n * <p>creates a new <code>TableLayout</code> manager with three rows in the\n * vertical dimension and five columns across the page.  Components are added\n * to the grid starting at the upper left, filling each horizontal row and\n * then moving on to the next row down after the current one is filled.\n *\n * <p>The <code>TableLayout</code> manager also supports more fine-grained\n * control over the formatting of tables by allowing you to specify\n * constraints in the following form:\n *\n * <p><pre><code>\n * &nbsp;    </code><i>constraint</i><code>=</code><i>value</i><code>\n * </code></pre>\n *\n * <p>For example, if you want to specify that a component occupies two\n * columns in the grid, you would use the constraint\n *\n * <p><pre><code>\n * &nbsp;    \"gridwidth=2\"\n * </code></pre>\n *\n * <p>Strings used as constraint objects can set several constraints at\n * once by including multiple constraint/value pairs separated by spaces.\n *\n * <p>The <code>TableLayout</code> class accepts all constraints supported\n * by <code>GridBagLayout</code>.  The most common constraints are shown\n * in the following table:\n *\n * <p><table bgcolor=#FFFFFF border=1 cellspacing=0 width=750>\n * <tr><td><table border=0 cellspacing=1 cellpadding=0><tr><td colspan=2><code>gridwidth=</code><font face=times><i>columns</i></font>&nbsp;&nbsp;<i><font size=-1>or</font></i>&nbsp;&nbsp;<code>gridheight=</code><font face=times><i>rows</i></font></td></tr>\n * <tr><td width=25>&nbsp;</td><td width=720>Indicates that this table cell should span the indicated number of columns or rows.</td></tr></table></td></tr>\n * <tr><td><table border=0 cellspacing=1 cellpadding=0><tr><td colspan=2><code>width=</code><font face=times><i>pixels</i></font>&nbsp;&nbsp;<i><font size=-1>or</font></i>&nbsp;&nbsp;<code>height=</code><font face=times><i>pixels</i></font></td></tr>\n * <tr><td width=25>&nbsp;</td><td width=720>The <code>width</code> specification indicates that the width of this column should be the specified number of pixels.  If different widths are specified for cells in the same column, the column width is defined to be the maximum.  In the absence of any <code>width</code> specification, the column width is the largest of the preferred widths.  The <code>height</code> specification is interpreted symmetrically for row heights.</td></tr></table></td></tr>\n * <tr><td><table border=0 cellspacing=1 cellpadding=0><tr><td colspan=2><code>weightx=</code><font face=times><i>weight</i></font>&nbsp;&nbsp;<i><font size=-1>or</font></i>&nbsp;&nbsp;<code>weighty=</code><font face=times><i>weight</i></font></td></tr>\n * <tr><td width=25>&nbsp;</td><td width=720>If the total size of the table is less than the size of its enclosure, <code>TableLayout</code> will ordinarily center the table in the available space.  If any of the cells, however, are given nonzero <code>weightx</code> or <code>weighty</code> values, the extra space is distributed along that axis in proportion to the weights specified.  As in the <code>GridBagLayout</code> model, the weights are floating-point values and may therefore contain a decimal point.</td></tr></table></td></tr>\n * <tr><td><table border=0 cellspacing=1 cellpadding=0><tr><td colspan=2><code>fill=</code><font face=times><i>fill</i></font></td></tr>\n * <tr><td width=25>&nbsp;</td><td width=720>Indicates how the component in this cell should be resized if its preferred size is smaller than the cell size.  The legal values are <code>NONE</code>, <code>HORIZONTAL</code>, <code>VERTICAL</code>, and <code>BOTH</code>, indicating the axes along which stretching should occur.  The default is <code>BOTH</code>.</td></tr></table></td></tr>\n * <tr><td><table border=0 cellspacing=1 cellpadding=0><tr><td colspan=2><code>anchor=</code><font face=times><i>anchor</i></font></td></tr>\n * <tr><td width=25>&nbsp;</td><td width=720>If a component is not being filled along a particular axis, the <code>anchor</code> specification indicates where the component should be placed in its cell.  The default value is <code>CENTER</code>, but any of the standard compass directions (<code>NORTH</code>, <code>SOUTH</code>, <code>EAST</code>, <code>WEST</code>, <code>NORTHEAST</code>, <code>NORTHWEST</code>, <code>SOUTHEAST</code>, or <code>SOUTHWEST</code>) may also be used.</td></tr></table></td></tr>\n * </table>\n */\npublic class TableLayout implements LayoutManager2, Serializable {\n\n/** Do not resize component */\n\tpublic static final int NONE = GridBagConstraints.NONE;\n\n/** Resize component in horizontal direction only */\n\tpublic static final int HORIZONTAL = GridBagConstraints.HORIZONTAL;\n\n/** Resize component in vertical direction only */\n\tpublic static final int VERTICAL = GridBagConstraints.VERTICAL;\n\n/** Resize component in both directions */\n\tpublic static final int BOTH = GridBagConstraints.BOTH;\n\n/** Center table in the container */\n\tpublic static final int CENTER = 10;\n\n/** Align table horizontally at the left of its container */\n\tpublic static final int LEFT = 11;\n\n/** Align table horizontally at the right of its container */\n\tpublic static final int RIGHT = 12;\n\n/** Align table vertically at the top of its container */\n\tpublic static final int TOP = 13;\n\n/** Align table vertically at the bottom of its container */\n\tpublic static final int BOTTOM = 14;\n\n/** Expand table to fill its container */\n\tpublic static final int FILL = BOTH;\n\n/* Constructor: TableLayout() */\n/**\n * Creates a new <code>TableLayout</code> object with no limits\n * on the number of rows and columns.\n *\n * @usage TableLayout layout = new TableLayout();\n */\n\tpublic TableLayout() {\n\t\tthis(0, 0);\n\t}\n\n/* Constructor: TableLayout(rows, columns) */\n/**\n * Creates a new <code>TableLayout</code> object with the specified\n * number of rows and columns.\n *\n * @usage TableLayout layout = new TableLayout(rows, columns);\n * @param rows The number of rows, or 0 for no limit\n * @param columns The number of columns, or 0 for no limit\n */\n\tpublic TableLayout(int rows, int columns) {\n\t\tthis(rows, columns, 0, 0);\n\t}\n\n/* Constructor: TableLayout(rows, columns, hgap, vgap) */\n/**\n * Creates a new <code>TableLayout</code> object with the specified\n * row count, column count, alignment, horizontal gap, and vertical gap.\n *\n * @usage TableLayout layout = new TableLayout(rows, columns, hgap, vgap);\n * @param rows The number of rows, or 0 for no limit\n * @param columns The number of columns, or 0 for no limit\n * @param hgap The horizontal gap between columns\n * @param vgap The vertical gap between rows\n */\n\tpublic TableLayout(int rows, int columns, int hgap, int vgap) {\n\t\tnRows = rows;\n\t\tnColumns = columns;\n\t\thGap = hgap;\n\t\tvGap = vgap;\n\t\thorizontalAlignment = CENTER;\n\t\tverticalAlignment = CENTER;\n\t\tdefaultFill = BOTH;\n\t\tconstraintTable = new HashMap<Component,GridBagConstraints>();\n\t\tpropertyTable = new HashMap<String,Object>();\n\t\tlayoutTable = null;\n\t}\n\n/* Method: setColumnCount(columns) */\n/**\n * Resets the number of columns in the table.\n *\n * @usage layout.setColumnCount(columns);\n * @param columns The new number of columns\n */\n\tpublic void setColumnCount(int columns) {\n\t\tnColumns = columns;\n\t\tif (targetContainer != null) targetContainer.invalidate();\n\t}\n\n/* Method: getColumnCount() */\n/**\n * Returns the number of columns in the table.\n *\n * @usage int columns = layout.getColumnCount();\n * @return The  number of columns\n */\n\tpublic int getColumnCount() {\n\t\treturn nColumns;\n\t}\n\n/* Method: setRowCount(rows) */\n/**\n * Resets the number of rows in the table.\n *\n * @usage layout.setRowCount(rows);\n * @param rows The new number of rows\n */\n\tpublic void setRowCount(int rows) {\n\t\tnRows = rows;\n\t\tif (targetContainer != null) targetContainer.invalidate();\n\t}\n\n/* Method: getRowCount() */\n/**\n * Returns the number of rows in the table.\n *\n * @usage int rows = layout.getRowCount();\n * @return The  number of rows\n */\n\tpublic int getRowCount() {\n\t\treturn nRows;\n\t}\n\n/* Method: setHorizontalAlignment(align) */\n/**\n * Sets the horizontal alignment for the table.  The legal values\n * are <code>CENTER</code>, <code>LEFT</code>, <code>RIGHT</code>, and\n * <code>FILL</code>.\n *\n * @usage layout.setHorizontalAlignment(align);\n * @param align The horizontal alignment for the table\n */\n\tpublic void setHorizontalAlignment(int align) {\n\t\thorizontalAlignment = align;\n\t\tif (targetContainer != null) targetContainer.invalidate();\n\t}\n\n/* Method: getHorizontalAlignment() */\n/**\n * Returns the horizontal alignment for the table.\n *\n * @usage int align = layout.getHorizontalAlignment();\n * @return The horizontal alignment for the table\n */\n\tpublic int getHorizontalAlignment() {\n\t\treturn horizontalAlignment;\n\t}\n\n/* Method: setVerticalAlignment(align) */\n/**\n * Sets the vertical alignment for the table.  The legal values\n * are <code>CENTER</code>, <code>TOP</code>, <code>BOTTOM</code>, and\n * <code>FILL</code>.\n *\n * @usage layout.setVerticalAlignment(align);\n * @param align The vertical alignment for the table\n */\n\tpublic void setVerticalAlignment(int align) {\n\t\tverticalAlignment = align;\n\t\tif (targetContainer != null) targetContainer.invalidate();\n\t}\n\n/* Method: getVerticalAlignment() */\n/**\n * Returns the vertical alignment for the table.\n *\n * @usage int align = layout.getVerticalAlignment();\n * @return The vertical alignment for the table\n */\n\tpublic int getVerticalAlignment() {\n\t\treturn verticalAlignment;\n\t}\n\n/* Method: setDefaultFill(fill) */\n/**\n * Sets the default fill parameter for components in the table.  The legal values\n * are <code>NONE</code>, <code>HORIZONTAL</code>, <code>VERTICAL</code>, and\n * <code>BOTH</code>.\n *\n * @usage layout.setDefaultFill(fill);\n * @param fill The default fill parameter for components in the table\n */\n\tpublic void setDefaultFill(int fill) {\n\t\tdefaultFill = fill;\n\t\tif (targetContainer != null) targetContainer.invalidate();\n\t}\n\n/* Method: getDefaultFill() */\n/**\n * Returns the default fill parameter for components in the table.\n *\n * @usage int fill = layout.getDefaultFill();\n * @return The default fill parameter for components in the table\n */\n\tpublic int getDefaultFill() {\n\t\treturn defaultFill;\n\t}\n\n/* Method: setHgap(pixels) */\n/**\n * Sets the horizontal gap between components.\n *\n * @usage layout.setHgap(pixels);\n * @param pixels The gap between components in pixels\n */\n\tpublic void setHgap(int pixels) {\n\t\thGap = pixels;\n\t\tif (targetContainer != null) targetContainer.invalidate();\n\t}\n\n/* Method: getHgap() */\n/**\n * Returns the horizontal gap between components.\n *\n * @usage int hgap = layout.getHgap();\n * @return The horizontal gap between components\n */\n\tpublic int getHgap() {\n\t\treturn hGap;\n\t}\n\n/* Method: setVgap(pixels) */\n/**\n * Sets the vertical gap between components.\n *\n * @usage layout.setVgap(pixels);\n * @param pixels The gap between components in pixels\n */\n\tpublic void setVgap(int pixels) {\n\t\tvGap = pixels;\n\t\tif (targetContainer != null) targetContainer.invalidate();\n\t}\n\n/* Method: getVgap() */\n/**\n * Returns the vertical gap between components.\n *\n * @usage int vgap = layout.getVgap();\n * @return The vertical gap between components\n */\n\tpublic int getVgap() {\n\t\treturn vGap;\n\t}\n\n/* Method: setStrictGridBagModel(flag) */\n/**\n * Sets a flag indicating whether the layout manager should match the\n * model used in <code>GridBagLayout</code> even when that interpretation\n * seems wrong.  The differences show up in the following areas:\n *\n * <ul>\n * <li><i>Calculation of cell size.</i>  <code>GridBagLayout</code> uses\n * the minimum layout size of the component to determine the size of each\n * cell; <code>TableLayout</code> uses the preferred size.  In practice,\n * these two values are often the same, but it seems that the preferred\n * size makes considerably more sense in terms of how this layout is used.\n *\n * <li><i>Treatment of cells spanning several rows.</i>  In\n * <code>GridBagLayout</code>, each new row begins after the last\n * multirow cell in that row, even if there is  space to its left.\n * By default, <code>TableLayout</code> uses the HTML model in which\n * the cells begin at the left margin unless that column is itself\n * already occupied.\n * </ul>\n *\n * @usage layout.setStrictGridBagModel(flag);\n * @param flag <code>true</code> to use a strict <code>GridBagLayout</code> model\n * @noshow\n */\n\tpublic void setStrictGridBagModel(boolean flag) {\n\t\tuseStrictGridBagModel = flag;\n\t\tif (targetContainer != null) targetContainer.invalidate();\n\t}\n\n/* Method: isStrictGridBagModel() */\n/**\n * Returns <code>true</code> if this layout manager is treating multirow\n * cells exactly as <code>GridBagLayout</code> does.\n *\n * @usage if (layout.isStrictGridBagModel()) . . .\n * @return <code>true</code> if this manager is using the strict <code>GridBagLayout</code> model\n * @noshow\n */\n\tpublic boolean isStrictGridBagModel() {\n\t\treturn useStrictGridBagModel;\n\t}\n\n/* Method: setConstraints(comp, constraints) */\n/**\n * Sets the constraints for the component to a copy of the supplied\n * constraints.\n *\n * @usage layout.setConstraints(comp, constraints);\n * @param comp The component to be constrained\n * @param constraints The constraints object used to specify the layout\n */\n\tpublic void setConstraints(Component comp, GridBagConstraints constraints) {\n\t\tconstraintTable.put(comp, (GridBagConstraints) constraints.clone());\n\t\tif (targetContainer != null) targetContainer.invalidate();\n\t}\n\n/* Method: setConstraints(comp, constraints) */\n/**\n * Sets the constraints for the component to the constraints\n * specified by the string.\n *\n * @usage layout.setConstraints(comp, constraints);\n * @param comp The component to be constrained\n * @param constraints A string specifying the constraints\n */\n\tpublic void setConstraints(Component comp, String constraints) {\n\t\tsetConstraints(comp, new TableConstraints(constraints));\n\t}\n\n/* Method: getConstraints(comp) */\n/**\n * Returns a copy of the constraints requested for the specified component.  The\n * constraints value is always converted to a <code>TableConstraints</code> so that\n * clients can use this class in preference to <code>GridBagConstraints</code>\n * without needing a type cast.\n *\n * @usage TableConstraints tc = layout.getConstraints(comp);\n * @param comp The component whose constraints are requested\n * @return A copy of the constraints object used to specify the layout\n */\n\tpublic TableConstraints getConstraints(Component comp) {\n\t\tGridBagConstraints gbc = lookupConstraints(comp);\n\t\treturn (gbc == null) ? null : new TableConstraints(gbc);\n\t}\n\n/* LayoutManager interface */\n\n/* Method: addLayoutComponent(constraints, comp) */\n/**\n * Adds a component to the layout.  Implements <code>LayoutManager</code>.\n *\n * @param constraints The constraint string\n * @param comp The component to be added\n * @noshow\n */\n\tpublic void addLayoutComponent(String constraints, Component comp) {\n\t\taddLayoutComponent(comp, constraints);\n\t}\n\n/* Method: removeLayoutComponent(comp) */\n/**\n * Removes the specified component from the layout.\n *\n * @param comp The component to be removed\n * @noshow\n */\n\tpublic void removeLayoutComponent(Component comp) {\n\t\tconstraintTable.remove(comp);\n\t\tif (targetContainer != null) targetContainer.invalidate();\n\t}\n\n/* Method: preferredLayoutSize(target) */\n/**\n * Calculates the preferred size for the <code>FrameLayout</code> component\n * when laid out in the <code>target</code> container.\n *\n * @param target The container in which the layout is done\n * @return The preferred dimensions for the layout\n * @noshow\n */\n\tpublic Dimension preferredLayoutSize(Container target) {\n\t\tif (target.getComponentCount() == 0) return new Dimension(0, 0);\n\t\treturn processLayout(target, PREFERRED_LAYOUT_SIZE_MODE);\n\t}\n\n/* Method: minimumLayoutSize(target) */\n/**\n * Calculates the minimum size for the <code>FrameLayout</code> component\n * when laid out in the <code>target</code> container.\n *\n * @param target The container in which the layout is done\n * @return The minimum dimensions for the layout\n * @noshow\n */\n\tpublic Dimension minimumLayoutSize(Container target) {\n\t\tif (target.getComponentCount() == 0) return new Dimension(0, 0);\n\t\treturn processLayout(target, MINIMUM_LAYOUT_SIZE_MODE);\n\t}\n\n/* Method: layoutContainer(target) */\n/**\n * Lays out the components in the target container.\n *\n * @param target The container in which the layout is done\n * @noshow\n */\n\tpublic void layoutContainer(Container target) {\n\t\ttargetContainer = target;\n\t\tprocessLayout(target, LAYOUT_CONTAINER_MODE);\n\t}\n\n/* Method: addLayoutComponent(comp, constraints) */\n/**\n * Adds a component to the layout.  The <code>TableLayout</code>\n * class overrides this method to allow for string constraints.\n *\n * @param comp The component to be added\n * @param constraints The constraint object\n * @noshow\n */\n\tpublic void addLayoutComponent(Component comp, Object constraints) {\n\t\tif (constraints == null) {\n\t\t\tconstraints = new TableConstraints(\"\");\n\t\t\t((TableConstraints) constraints).fill = defaultFill;\n\t\t} else if (constraints instanceof String) {\n\t\t\tOptionTable options = new OptionTable(((String) constraints).toLowerCase(), TableConstraints.LEGAL_KEYS);\n\t\t\tconstraints = new TableConstraints(options.getMap());\n\t\t\tif (!options.isSpecified(\"fill\")) {\n\t\t\t\t((TableConstraints) constraints).fill = (options.isSpecified(\"anchor\")) ? NONE : defaultFill;\n\t\t\t}\n\t\t} else if (!(constraints instanceof GridBagConstraints)) {\n\t\t\tthrow new ErrorException(\"TableLayout: Illegal constraints\");\n\t\t}\n\t\tconstraintTable.put(comp, (GridBagConstraints) constraints);\n\t\tif (targetContainer != null) targetContainer.invalidate();\n\t}\n\n/* Method: maximumLayoutSize(target) */\n/**\n * Calculates the maximum size for the <code>FrameLayout</code> component\n * when laid out in the <code>target</code> container.\n *\n * @param target The container in which the layout is done\n * @return The maximum dimensions for the layout\n * @noshow\n */\n\tpublic Dimension maximumLayoutSize(Container target) {\n\t\treturn new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE);\n\t}\n\n/* Method: getLayoutAlignmentX(target) */\n/**\n * Returns the alignment along the <i>x</i>-axis as described in the\n * <code>LayoutManager2</code> interface.\n *\n * @param target The container in which the layout is done\n * @return A value between 0 and 1 indicating where this component should align\n * @noshow\n */\n\tpublic float getLayoutAlignmentX(Container target) {\n\t\treturn 0.5F;\n\t}\n\n/* Method: getLayoutAlignmentY(target) */\n/**\n * Returns the alignment along the <i>y</i>-axis as described in the\n * <code>LayoutManager2</code> interface.\n *\n * @param target The container in which the layout is done\n * @return A value between 0 and 1 indicating where this component should align\n * @noshow\n */\n\tpublic float getLayoutAlignmentY(Container target) {\n\t\treturn 0.5F;\n\t}\n\n/* Method: invalidateLayout(target) */\n/**\n * Indicates that the layout is no longer valid.\n *\n * @param target The container in which the layout is done\n * @noshow\n */\n\tpublic synchronized void invalidateLayout(Container target) {\n\t\tlayoutTable = null;\n\t\tIterator<String> iterator = propertyTable.keySet().iterator();\n\t\twhile (iterator.hasNext()) {\n\t\t\tString key = iterator.next();\n\t\t\tif (key.startsWith(\"width\") && !key.equals(\"width\")) {\n\t\t\t\tpropertyTable.put(key, new Integer(0));\n\t\t\t}\n\t\t\tif (key.startsWith(\"height\") && !key.equals(\"height\")) {\n\t\t\t\tpropertyTable.put(key, new Integer(0));\n\t\t\t}\n\t\t\tif (key.startsWith(\"weightx\") && !key.equals(\"weightx\")) {\n\t\t\t\tpropertyTable.put(key, new Double(0));\n\t\t\t}\n\t\t\tif (key.startsWith(\"weighty\") && !key.equals(\"weighty\")) {\n\t\t\t\tpropertyTable.put(key, new Double(0));\n\t\t\t}\n\t\t}\n\t}\n\n/* Override method: toString() */\n/**\n * Creates a printable representation of the layout.\n * @noshow\n */\n\tpublic String toString() {\n\t\tString str = getClass().getName();\n\t\tstr += \"[rows=\" + nRows + \",columns=\" + nColumns;\n\t\tif (hGap != 0) str += \",hgap=\" + hGap;\n\t\tif (vGap != 0) str += \",vgap=\" + vGap;\n\t\tstr += \"]\";\n\t\treturn str;\n\t}\n\n/* Protected method: lookupConstraints(comp) */\n/**\n * Returns the constraints object for the specified component.\n *\n * @usage GridBagConstraints gbc = layout.lookupConstraints(comp);\n * @param comp The component to be constrained\n * @return The constraints object used to specify the layout\n */\n\tprotected GridBagConstraints lookupConstraints(Component comp) {\n\t\treturn constraintTable.get(comp);\n\t}\n\n/* Protected method: lookupConstraints(comp, target) */\n/**\n * Returns the <code>TableConstraints</code> object actually applied to the specified\n * component when it is laid out in the target container.  In the result of this method\n * the values of the <code>gridx</code>, <code>gridx</code>, <code>gridwidth</code>,\n * and <code>gridheight</code> fields are filled in according to the actual position\n * in the grid.\n *\n * @usage TableConstraints tc = layout.lookupConstraints(comp, target);\n * @param comp The component to be constrained\n * @param target The container in which the layout is done\n * @return The constraints object actually applied to the layout\n */\n\tprotected TableConstraints lookupConstraints(Component comp, Container target) {\n\t\tsynchronized (target.getTreeLock()) {\n\t\t\tif (layoutTable == null) computeLayoutTable(target);\n\t\t\treturn layoutTable.get(comp);\n\t\t}\n\t}\n\n/* Protected method: getMinimumComponentSize(comp) */\n/**\n * This method returns the minimum size of the component for this layout.  Subclasses\n * can override this methods to establish specific bounds for certain component\n * classes, such as the code for scrollbars given here.\n *\n * @usage Dimension size = layout.getMinimumComponentSize(comp);\n * @param comp The component whose size is being tested\n * @return The minimum size for that component\n */\n\tprivate Dimension getMinimumComponentSize(Component comp) {\n\t\tif (isScrollbar(comp)) return getMinimumScrollbarSize(comp);\n\t\treturn comp.getMinimumSize();\n\t}\n\n/* Protected method: getPreferredComponentSize(comp) */\n/**\n * This method returns the preferred size of the component for this layout.  Subclasses\n * can override this methods to establish specific bounds for certain component\n * classes, such as the code for scrollbars given here.\n *\n * @usage Dimension size = layout.getPreferredComponentSize(comp);\n * @param comp The component whose size is being tested\n * @return The preferred size for that component\n */\n\tprivate Dimension getPreferredComponentSize(Component comp) {\n\t\tif (isScrollbar(comp)) return getMinimumScrollbarSize(comp);\n\t\treturn comp.getPreferredSize();\n\t}\n\n/* Protected method: isScrollbar(comp) */\n/**\n * Determines whether the component is a scroll bar or slider.\n */\n\tprivate boolean isScrollbar(Component comp) {\n\t\treturn (comp instanceof Scrollbar || comp instanceof JScrollBar || comp instanceof JSlider);\n\t}\n\n/* Protected method: getMinimumScrollbarSize(comp) */\n/**\n * Determines the minimum dimensions for this scrollbar, making sure it has enough\n * space to be displayed with a nonzero slider area.\n */\n\tprivate Dimension getMinimumScrollbarSize(Component comp) {\n\t\tDimension size = comp.getMinimumSize();\n\t\ttry {\n\t\t\tClass<?> scrollbarClass = comp.getClass();\n\t\t\tMethod getOrientation = scrollbarClass.getMethod(\"getOrientation\", new Class[0]);\n\t\t\tint orientation = ((Integer) getOrientation.invoke(comp, new Object[0])).intValue();\n\t\t\tif (orientation == Scrollbar.HORIZONTAL) {\n\t\t\t\tsize.width = Math.max(size.width, MINIMUM_SCROLLBAR_SIZE);\n\t\t\t} else {\n\t\t\t\tsize.height = Math.max(size.height, MINIMUM_SCROLLBAR_SIZE);\n\t\t\t}\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t\treturn size;\n\t}\n\n/* Private method: processLayout(target, caller) */\n/**\n * Common code for the different methods requiring layout synchronization.\n * The <code>caller</code> argument is one of the three constants\n * LAYOUT_CONTAINER_MODE, PREFERRED_LAYOUT_SIZE_MODE, or MINIMUM_LAYOUT_SIZE_MODE,\n * depending on the caller.\n */\n\tprivate Dimension processLayout(Container target, int caller) {\n\t\tsynchronized (target.getTreeLock()) {\n\t\t\treturn lockedProcessLayout(target, caller);\n\t\t}\n\t}\n\n/* Private method: lockedProcessLayout(target, caller) */\n/**\n * Method to do the work of <code>processLayout</code> after synchronization.\n */\n\tprivate synchronized Dimension lockedProcessLayout(Container target, int caller) {\n\t\tDimension result = null;\n\t\tif (layoutTable == null) computeLayoutTable(target);\n\t\tint nr = getIntProperty(\"nRows\");\n\t\tint nc = getIntProperty(\"nColumns\");\n\t\tint[] heights = new int[nr];\n\t\tint[] widths = new int[nc];\n\t\tint nComponents = target.getComponentCount();\n\t\tfor (int i = 0; i < nComponents; i++) {\n\t\t\tComponent comp = target.getComponent(i);\n\t\t\tTableConstraints tc = layoutTable.get(comp);\n\t\t\tint column = tc.gridx;\n\t\t\tint row = tc.gridy;\n\t\t\tint width = getIntProperty(\"width\" + column);\n\t\t\tint height = getIntProperty(\"height\" + row);\n\t\t\tif (width == 0) {\n\t\t\t\tif (caller == MINIMUM_LAYOUT_SIZE_MODE || useStrictGridBagModel) {\n\t\t\t\t\twidth = getMinimumComponentSize(comp).width;\n\t\t\t\t} else {\n\t\t\t\t\twidth = getPreferredComponentSize(comp).width;\n\t\t\t\t}\n\t\t\t\twidth += 2 * tc.ipadx + tc.insets.left + tc.insets.right;\n\t\t\t}\n\t\t\tif (height == 0) {\n\t\t\t\tif (caller == MINIMUM_LAYOUT_SIZE_MODE || useStrictGridBagModel) {\n\t\t\t\t\theight = getMinimumComponentSize(comp).height;\n\t\t\t\t} else {\n\t\t\t\t\theight = getPreferredComponentSize(comp).height;\n\t\t\t\t}\n\t\t\t\theight += 2 * tc.ipady + tc.insets.top + tc.insets.bottom;\n\t\t\t}\n\t\t\tif (tc.gridwidth <= 1) {\n\t\t\t\twidths[column] = Math.max(widths[column], width);\n\t\t\t}\n\t\t\tif (tc.gridheight <= 1) {\n\t\t\t\theights[row] = Math.max(heights[row], height);\n\t\t\t}\n\t\t}\n\t\tint width = hGap;\n\t\tint height = vGap;\n\t\tdouble[] weightX = new double[nc];\n\t\tdouble[] weightY = new double[nr];\n\t\tdouble totalX = 0;\n\t\tdouble totalY = 0;\n\t\tfor (int column = 0; column < nc; column++) {\n\t\t\twidth += widths[column] + hGap;\n\t\t\tweightX[column] = getDoubleProperty(\"weightx\" + column);\n\t\t\ttotalX += weightX[column];\n\t\t}\n\t\tfor (int row = 0; row < nr; row++) {\n\t\t\theight += heights[row] + vGap;\n\t\t\tweightY[row] = getDoubleProperty(\"weighty\" + row);\n\t\t\ttotalY += weightY[row];\n\t\t}\n\t\tif (caller == LAYOUT_CONTAINER_MODE) {\n\t\t\tDimension size = target.getSize();\n\t\t\tInsets insets = target.getInsets();\n\t\t\tsize.width -= insets.left + insets.right;\n\t\t\tsize.height -= insets.top + insets.bottom;\n\t\t\tint extraX = size.width - width;\n\t\t\tint extraY = size.height - height;\n\t\t\tint startX = insets.left;\n\t\t\tint startY = insets.top;\n\t\t\tif (totalX == 0) {\n\t\t\t\tswitch (horizontalAlignment) {\n\t\t\t\t  case LEFT:\n\t\t\t\t\textraX = 0;\n\t\t\t\t\tbreak;\n\t\t\t\t  case CENTER:\n\t\t\t\t\tstartX += extraX / 2;\n\t\t\t\t\textraX = 0;\n\t\t\t\t\tbreak;\n\t\t\t\t  case RIGHT:\n\t\t\t\t\tstartX += extraX;\n\t\t\t\t\textraX = 0;\n\t\t\t\t\tbreak;\n\t\t\t\t  case FILL:\n\t\t\t\t\ttotalX = nc;\n\t\t\t\t\tfor (int column = 0; column < nc; column++) {\n\t\t\t\t\t\tweightX[column] = 1;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (totalY == 0) {\n\t\t\t\tswitch (verticalAlignment) {\n\t\t\t\t  case TOP:\n\t\t\t\t\textraY = 0;\n\t\t\t\t\tbreak;\n\t\t\t\t  case CENTER:\n\t\t\t\t\tstartY += extraY / 2;\n\t\t\t\t\textraY = 0;\n\t\t\t\t\tbreak;\n\t\t\t\t  case BOTTOM:\n\t\t\t\t\tstartY += extraY;\n\t\t\t\t\textraY = 0;\n\t\t\t\t\tbreak;\n\t\t\t\t  case FILL:\n\t\t\t\t\ttotalY = nr;\n\t\t\t\t\tfor (int row = 0; row < nr; row++) {\n\t\t\t\t\t\tweightY[row] = 1;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tint[] xc = new int[nc];\n\t\t\tint x = hGap + startX;\n\t\t\tfor (int column = 0; column < nc; column++) {\n\t\t\t\txc[column] = x;\n\t\t\t\tif (extraX > 0) {\n\t\t\t\t\tint pad = (int) Math.round(extraX * weightX[column] / totalX);\n\t\t\t\t\twidths[column] += pad;\n\t\t\t\t\textraX -= pad;\n\t\t\t\t\ttotalX -= weightX[column];\n\t\t\t\t}\n\t\t\t\tx += widths[column] + hGap;\n\t\t\t}\n\t\t\tint[] yc = new int[nr];\n\t\t\tint y = vGap + startY;\n\t\t\tfor (int row = 0; row < nr; row++) {\n\t\t\t\tyc[row] = y;\n\t\t\t\tif (extraY > 0) {\n\t\t\t\t\tint pad = (int) Math.round(extraY * weightY[row] / totalY);\n\t\t\t\t\theights[row] += pad;\n\t\t\t\t\textraY -= pad;\n\t\t\t\t\ttotalY -= weightY[row];\n\t\t\t\t}\n\t\t\t\ty += heights[row] + vGap;\n\t\t\t}\n\t\t\tfor (int i = 0; i < nComponents; i++) {\n\t\t\t\tComponent comp = target.getComponent(i);\n\t\t\t\tTableConstraints tc = layoutTable.get(comp);\n\t\t\t\tint column = tc.gridx;\n\t\t\t\tint row = tc.gridy;\n\t\t\t\tint bx = xc[column] + tc.insets.left;\n\t\t\t\tint by = yc[row] + tc.insets.top;\n\t\t\t\tint bw = widths[column];\n\t\t\t\tfor (int ix = 1; ix < tc.gridwidth && column + ix < nc; ix++) {\n\t\t\t\t\tbw += widths[column + ix] + hGap;\n\t\t\t\t}\n\t\t\t\tbw -= tc.insets.left + tc.insets.right;\n\t\t\t\tint bh = heights[row];\n\t\t\t\tfor (int iy = 1; iy < tc.gridheight && row + iy < nr; iy++) {\n\t\t\t\t\tbh += heights[row + iy] + vGap;\n\t\t\t\t}\n\t\t\t\tbh -= tc.insets.top + tc.insets.bottom;\n\t\t\t\tDimension pSize = (useStrictGridBagModel) ? getMinimumComponentSize(comp) : getPreferredComponentSize(comp);\n\t\t\t\tRectangle bounds = computeCellBounds(new Rectangle(bx, by, bw, bh), pSize, tc);\n\t\t\t\tcomp.setBounds(bounds.x, bounds.y, bounds.width, bounds.height);\n\t\t\t}\n\t\t} else {\n\t\t\tresult = new Dimension(width, height);\n\t\t}\n\t\treturn result;\n\t}\n\n/* Private method: computeLayoutTable(target) */\n/**\n * Updates the layoutTable constraints for each component in <code>target</code>.\n * All elements whose <code>gridx</code> or <code>gridy</code> constraints\n * are <code>RELATIVE</code> are changed to explicit grid references by\n * interpreting the <code>gridwidth</code> and <code>gridheight</code>\n * constraints.\n *\n * @usage computeLayoutTable(target);\n * @param target The target container\n */\n\tprivate void computeLayoutTable(Container target) {\n\t\tint[] unfinishedSpans = null;\n\t\tint row = 0;\n\t\tint column = 0;\n\t\tint layoutColumns = nColumns;\n\t\tint nComponents = target.getComponentCount();\n\t\tboolean nextEndRow = false;\n\t\tlayoutTable = new HashMap<Component,TableConstraints>();\n\t\tfor (int i = 0; i < nComponents; i++) {\n\t\t\tComponent comp = target.getComponent(i);\n\t\t\tTableConstraints tc = getConstraints(comp);\n\t\t\tif (tc.gridx != GridBagConstraints.RELATIVE) column = tc.gridx;\n\t\t\tif (tc.gridy != GridBagConstraints.RELATIVE) row = tc.gridy;\n\t\t\tif (nRows > 0 && row >= nRows) {\n\t\t\t\tthrow new ErrorException(\"TableLayout: Too many rows specified\");\n\t\t\t}\n\t\t\twhile (unfinishedSpans != null && column < unfinishedSpans.length && unfinishedSpans[column] > 0) {\n\t\t\t\tcolumn++;\n\t\t\t\tif (layoutColumns > 0 && column >= layoutColumns) {\n\t\t\t\t\tfor (int c = 0; c < unfinishedSpans.length; c++) {\n\t\t\t\t\t\tif (unfinishedSpans[c] > 0) unfinishedSpans[c]--;\n\t\t\t\t\t}\n\t\t\t\t\trow++;\n\t\t\t\t\tcolumn = getFirstAvailableColumn(unfinishedSpans);\n\t\t\t\t}\n\t\t\t}\n\t\t\ttc.gridx = column;\n\t\t\ttc.gridy = row;\n\t\t\tboolean endrow = nextEndRow;\n\t\t\tsetMaxProperty(\"width\" + column, tc.width);\n\t\t\tsetMaxProperty(\"height\" + row, tc.height);\n\t\t\tsetMaxProperty(\"weightx\" + column, tc.weightx);\n\t\t\tsetMaxProperty(\"weighty\" + row, tc.weighty);\n\t\t\tint colspan = 1;\n\t\t\tswitch (tc.gridwidth) {\n\t\t\t  case GridBagConstraints.REMAINDER:\n\t\t\t\tendrow = true;\n\t\t\t\tif (layoutColumns > 0) colspan = layoutColumns - column;\n\t\t\t\tbreak;\n\t\t\t  case GridBagConstraints.RELATIVE:\n\t\t\t\tif (layoutColumns <= 0) {\n\t\t\t\t\tthrow new ErrorException(\"TableLayout: Illegal to use gridwidth=RELATIVE in first row\");\n\t\t\t\t}\n\t\t\t\tcolspan = layoutColumns - column - 1;\n\t\t\t\tnextEndRow = true;\n\t\t\t\tbreak;\n\t\t\t  default:\n\t\t\t\tcolspan = tc.gridwidth;\n\t\t\t\tendrow = (nColumns > 0 && column + tc.gridwidth >= nColumns);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (colspan > 1 && unfinishedSpans != null) {\n\t\t\t\tfor (int c = column; c < Math.min(unfinishedSpans.length, column + colspan); c++) {\n\t\t\t\t\tif (unfinishedSpans[c] != 0) {\n\t\t\t\t\t\tthrow new ErrorException(\"TableLayout: Overlapping cells\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tint rowspan = 1;\n\t\t\tswitch (tc.gridheight) {\n\t\t\t  case GridBagConstraints.REMAINDER:\n\t\t\t\trowspan = Integer.MAX_VALUE;\n\t\t\t\tbreak;\n\t\t\t  case GridBagConstraints.RELATIVE:\n\t\t\t\tthrow new ErrorException(\"TableLayout: Illegal to use gridheight=RELATIVE\");\n\t\t\t  default:\n\t\t\t\trowspan = tc.gridheight;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (rowspan > 1) {\n\t\t\t\tif (unfinishedSpans == null) {\n\t\t\t\t\tunfinishedSpans = new int[column + colspan];\n\t\t\t\t} else if (unfinishedSpans.length < column + colspan) {\n\t\t\t\t\tint[] oldSpans = unfinishedSpans;\n\t\t\t\t\tunfinishedSpans = new int[column + colspan];\n\t\t\t\t\tSystem.arraycopy(oldSpans, 0, unfinishedSpans, 0, oldSpans.length);\n\t\t\t\t}\n\t\t\t\tfor (int c = column; c < column + colspan; c++) {\n\t\t\t\t\tunfinishedSpans[c] = rowspan;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttc.gridwidth = colspan;\n\t\t\ttc.gridheight = rowspan;\n\t\t\tlayoutTable.put(comp, tc);\n\t\t\tcolumn += colspan;\n\t\t\twhile (endrow || (layoutColumns > 0 && column >= layoutColumns)) {\n\t\t\t\tif (layoutColumns <= 0) layoutColumns = column;\n\t\t\t\tif (unfinishedSpans != null) {\n\t\t\t\t\tfor (int c = 0; c < unfinishedSpans.length; c++) {\n\t\t\t\t\t\tif (unfinishedSpans[c] > 0) unfinishedSpans[c]--;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trow++;\n\t\t\t\tcolumn = getFirstAvailableColumn(unfinishedSpans);\n\t\t\t\tendrow = false;\n\t\t\t}\n\t\t}\n\t\tif (layoutColumns <= 0) layoutColumns = column;\n\t\tsetIntProperty(\"nColumns\", layoutColumns);\n\t\tsetIntProperty(\"nRows\", row + 1);\n\t}\n\n/* Private method: computeCellBounds(enclosure, psize, tc) */\n/**\n * Computes the bounds for the cell based on the bounds of the enclosure,\n * the preferred size of the object, and the constraints in tc.\n */\n\tprivate Rectangle computeCellBounds(Rectangle enclosure, Dimension psize, TableConstraints tc) {\n\t\tint x = enclosure.x;\n\t\tint y = enclosure.y;\n\t\tint width = enclosure.width;\n\t\tint height = enclosure.height;\n\t\tif (tc.fill == TableConstraints.NONE || tc.fill == TableConstraints.VERTICAL) {\n\t\t\twidth = psize.width;\n\t\t}\n\t\tif (tc.fill == TableConstraints.NONE || tc.fill == TableConstraints.HORIZONTAL) {\n\t\t\theight = psize.height;\n\t\t}\n\t\tif (width != enclosure.width) {\n\t\t\tswitch (tc.anchor) {\n\t\t\t  case TableConstraints.NORTH: case TableConstraints.CENTER: case TableConstraints.SOUTH:\n\t\t\t\tx += (enclosure.width - width) / 2;\n\t\t\t\tbreak;\n\t\t\t  case TableConstraints.NORTHEAST: case TableConstraints.EAST: case TableConstraints.SOUTHEAST:\n\t\t\t\tx += enclosure.width - width;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (height != enclosure.height) {\n\t\t\tswitch (tc.anchor) {\n\t\t\t  case TableConstraints.WEST: case TableConstraints.CENTER: case TableConstraints.EAST:\n\t\t\t\ty += (enclosure.height - height) / 2;\n\t\t\t\tbreak;\n\t\t\t  case TableConstraints.SOUTHWEST: case TableConstraints.SOUTH: case TableConstraints.SOUTHEAST:\n\t\t\t\ty += enclosure.height - height;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn new Rectangle(x, y, width, height);\n\t}\n\n/* Private method: setMaxProperty(key, value) */\n/**\n * Sets the property for the specified key to the maximum of its\n * previous value and the specified new value.\n */\n\tprivate void setMaxProperty(String key, int value) {\n\t\tsetIntProperty(key, Math.max(value, getIntProperty(key)));\n\t}\n\n/* Private method: setMaxProperty(key, value) */\n/**\n * Sets the property for the specified key to the maximum of its\n * previous value and the specified new value.\n */\n\tprivate void setMaxProperty(String key, double value) {\n\t\tsetDoubleProperty(key, Math.max(value, getDoubleProperty(key)));\n\t}\n\n/* Private method: setIntProperty(key, value) */\n/**\n * Sets the property for the specified key to the integer value.\n */\n\tprivate void setIntProperty(String key, int value) {\n\t\tpropertyTable.put(key, new Integer(value));\n\t}\n\n/* Private method: getIntProperty(key) */\n/**\n * Gets the integer property associated with the specified key.  If no value\n * has been set, the method returns 0.\n */\n\tprivate int getIntProperty(String key) {\n\t\tObject binding = propertyTable.get(key);\n\t\tif (binding == null) return 0;\n\t\treturn ((Integer) binding).intValue();\n\t}\n\n/* Private method: setDoubleProperty(key, value) */\n/**\n * Sets the property for the specified key to the double value.\n */\n\tprivate void setDoubleProperty(String key, double value) {\n\t\tpropertyTable.put(key, new Double(value));\n\t}\n\n/* Private method: getDoubleProperty(key) */\n/**\n * Gets the double property associated with the specified key.  If no value\n * has been set, the method returns 0.\n */\n\tprivate double getDoubleProperty(String key) {\n\t\tObject binding = propertyTable.get(key);\n\t\tif (binding == null) return 0.0;\n\t\treturn ((Double) binding).doubleValue();\n\t}\n\n/* Private method: getFirstAvailableColumn(unfinishedSpans) */\n/**\n * Gets the first available column in the next row of the table,\n * taking into account whether multirow cells are being handled\n * as in GridBagLayout.\n */\n\tprivate int getFirstAvailableColumn(int[] unfinishedSpans) {\n\t\tif (useStrictGridBagModel && unfinishedSpans != null) {\n\t\t\tfor (int column = unfinishedSpans.length; column > 0; column--) {\n\t\t\t\tif (unfinishedSpans[column - 1] > 0) return column;\n\t\t\t}\n\t\t}\n\t\treturn 0;\n\t}\n\n/* Private constants */\n\tprivate static final int LAYOUT_CONTAINER_MODE = 0;\n\tprivate static final int MINIMUM_LAYOUT_SIZE_MODE = 1;\n\tprivate static final int PREFERRED_LAYOUT_SIZE_MODE = 2;\n\tprivate static final int MINIMUM_SCROLLBAR_SIZE = 100;\n\n/* Private instance variables */\n\tprivate transient Container targetContainer;\n\tprivate HashMap<Component,GridBagConstraints> constraintTable;\n\tprivate HashMap<Component,TableConstraints> layoutTable;\n\tprivate HashMap<String,Object> propertyTable;\n\tprivate boolean useStrictGridBagModel;\n\tprivate int nRows;\n\tprivate int nColumns;\n\tprivate int horizontalAlignment;\n\tprivate int verticalAlignment;\n\tprivate int defaultFill;\n\tprivate int hGap;\n\tprivate int vGap;\n\n/* Serial version UID */\n/**\n * The serialization code for this class.  This value should be incremented\n * whenever you change the structure of this class in an incompatible way,\n * typically by adding a new instance variable.\n */\n\tstatic final long serialVersionUID = 1L;\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/gui/TablePanel.java",
    "content": "/*\n * @(#)TablePanel.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Feature enhancement 26-May-08 (ESR)\n//   1. Added support for serialization.\n\npackage acm.gui;\n\nimport javax.swing.*;\n\n/* Class: TablePanel */\n/**\n * This class represents a simple <code>JPanel</code> that uses\n * <a href=\"TableLayout.html\"><code>TableLayout</code></a> as its layout manager.\n * The purpose of <code>TablePanel</code> is to support tabular component\n * structures without the complexity of the <code>GridBagLayout</code> class.\n */\npublic class TablePanel extends JPanel {\n\n/** Do not resize component */\n\tpublic static final int NONE = TableLayout.NONE;\n\n/** Resize component in horizontal direction only */\n\tpublic static final int HORIZONTAL = TableLayout.HORIZONTAL;\n\n/** Resize component in vertical direction only */\n\tpublic static final int VERTICAL = TableLayout.VERTICAL;\n\n/** Resize component in both directions */\n\tpublic static final int BOTH = TableLayout.BOTH;\n\n/** Center table in the container */\n\tpublic static final int CENTER = TableLayout.CENTER;\n\n/** Align table horizontally at the left of its container */\n\tpublic static final int LEFT = TableLayout.LEFT;\n\n/** Align table horizontally at the right of its container */\n\tpublic static final int RIGHT = TableLayout.RIGHT;\n\n/** Align table vertically at the top of its container */\n\tpublic static final int TOP = TableLayout.TOP;\n\n/** Align table vertically at the bottom of its container */\n\tpublic static final int BOTTOM = TableLayout.BOTTOM;\n\n/** Expand table to fill its container */\n\tpublic static final int FILL = TableLayout.FILL;\n\n/* Package private constructor: TablePanel() */\n/**\n * Creates a new <code>TablePanel</code> without assigning a layout manager.\n * This constructor is used only within the <code>acm.gui</code> package.\n */\n\tTablePanel() {\n\t\t/* Empty */\n\t}\n\n/* Constructor: TablePanel(rows, columns) */\n/**\n * Creates a new <code>TablePanel</code> whose layout manager supports the\n * specified number of rows and columns.\n *\n * @usage TablePanel panel = new TablePanel(rows, columns);\n * @param rows The number of rows, or 0 for no limit\n * @param columns The number of columns, or 0 for no limit\n */\n\tpublic TablePanel(int rows, int columns) {\n\t\tthis(rows, columns, 0, 0);\n\t}\n\n/* Constructor: TablePanel(rows, columns, hgap, vgap) */\n/**\n * Creates a new <code>TablePanel</code> with the  specified number\n * of rows and columns and the supplied values for the horizontal and\n * vertical gap.\n *\n * @usage TablePanel panel = new TablePanel(rows, columns, hgap, vgap);\n * @param rows The number of rows, or 0 for no limit\n * @param columns The number of columns, or 0 for no limit\n * @param hgap The gap between columns\n * @param vgap The gap between rows\n */\n\tpublic TablePanel(int rows, int columns, int hgap, int vgap) {\n\t\tsetLayout(new TableLayout(rows, columns, hgap, vgap));\n\t}\n\n/* Method: setHorizontalAlignment(align) */\n/**\n * Sets the horizontal alignment for the table.  The legal values\n * are <code>CENTER</code>, <code>LEFT</code>, <code>RIGHT</code>, and\n * <code>FILL</code>.\n *\n * @usage layout.setHorizontalAlignment(align);\n * @param align The horizontal alignment for the table\n */\n\tpublic void setHorizontalAlignment(int align) {\n\t\t((TableLayout) getLayout()).setHorizontalAlignment(align);\n\t}\n\n/* Method: getHorizontalAlignment() */\n/**\n * Returns the horizontal alignment for the table.\n *\n * @usage align = layout.getHorizontalAlignment();\n * @return The horizontal alignment for the table\n */\n\tpublic int getHorizontalAlignment() {\n\t\treturn ((TableLayout) getLayout()).getHorizontalAlignment();\n\t}\n\n/* Method: setVerticalAlignment(align) */\n/**\n * Sets the vertical alignment for the table.  The legal values\n * are <code>CENTER</code>, <code>TOP</code>, <code>BOTTOM</code>, and\n * <code>FILL</code>.\n *\n * @usage layout.setVerticalAlignment(align);\n * @param align The vertical alignment for the table\n */\n\tpublic void setVerticalAlignment(int align) {\n\t\t((TableLayout) getLayout()).setVerticalAlignment(align);\n\t}\n\n/* Method: getVerticalAlignment() */\n/**\n * Returns the vertical alignment for the table.\n *\n * @usage align = layout.getVerticalAlignment();\n * @return The vertical alignment for the table\n */\n\tpublic int getVerticalAlignment() {\n\t\treturn ((TableLayout) getLayout()).getVerticalAlignment();\n\t}\n\n/* Method: setDefaultFill(fill) */\n/**\n * Sets the default fill parameter for components in the table.  The legal values\n * are <code>NONE</code>, <code>HORIZONTAL</code>, <code>VERTICAL</code>, and\n * <code>BOTH</code>.\n *\n * @usage layout.setDefaultFill(fill);\n * @param fill The default fill parameter for components in the table\n */\n\tpublic void setDefaultFill(int fill) {\n\t\t((TableLayout) getLayout()).setDefaultFill(fill);\n\t}\n\n/* Method: getDefaultFill() */\n/**\n * Returns the default fill parameter for components in the table.\n *\n * @usage fill = layout.getDefaultFill();\n * @return The default fill parameter for components in the table\n */\n\tpublic int getDefaultFill() {\n\t\treturn ((TableLayout) getLayout()).getDefaultFill();\n\t}\n\n/* Method: setHgap(pixels) */\n/**\n * Sets the horizontal gap between components.\n * @param pixels The gap between components in pixels\n */\n\tpublic void setHgap(int pixels) {\n\t\t((TableLayout) getLayout()).setHgap(pixels);\n\t}\n\n/* Method: getHgap() */\n/**\n * Returns the horizontal gap between components.\n * @return The horizontal gap between components\n */\n\tpublic int getHgap() {\n\t\treturn ((TableLayout) getLayout()).getHgap();\n\t}\n\n/* Method: setVgap(pixels) */\n/**\n * Sets the vertical gap between components.\n * @param pixels The gap between components in pixels\n */\n\tpublic void setVgap(int pixels) {\n\t\t((TableLayout) getLayout()).setVgap(pixels);\n\t}\n\n/* Method: getVgap() */\n/**\n * Returns the vertical gap between components.\n * @return The vertical gap between components\n */\n\tpublic int getVgap() {\n\t\treturn ((TableLayout) getLayout()).getVgap();\n\t}\n\n/* Serial version UID */\n/**\n * The serialization code for this class.  This value should be incremented\n * whenever you change the structure of this class in an incompatible way,\n * typically by adding a new instance variable.\n */\n\tstatic final long serialVersionUID = 1L;\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/gui/VPanel.java",
    "content": "/*\n * @(#)VPanel.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Feature enhancement 26-May-08 (ESR)\n//   1. Added support for serialization.\n\npackage acm.gui;\n\n/* Class: VPanel */\n/**\n * This class represents a vertical <a href=\"TablePanel.html\"><code>TablePanel</code></a>\n * with a single column.  It is used along with <a href=\"HPanel.html\"><code>HPanel</code></a>\n * to assemble hierarchical collections of panels that can be partitioned into rows\n * and columns.\n */\npublic class VPanel extends TablePanel {\n\n/* Constructor: VPanel() */\n/**\n * Creates a new <code>VPanel</code>.  A <code>VPanel</code> uses a\n * <code>TableLayout</code> manager with a single column.\n *\n * @usage VPanel vbox = new VPanel();\n */\n\tpublic VPanel() {\n\t\tthis(0, 0);\n\t}\n\n/* Constructor: VPanel(hgap, vgap) */\n/**\n * Creates a new <code>VPanel</code> with the specified <code>hgap</code>\n * and <code>vgap</code> parameters, which specify the padding between\n * elements.  For a <code>VPanel</code>, the <code>hgap</code> is used\n * to assign space to the left and right of the column.\n *\n * @usage VPanel vbox = new VPanel(hgap, vgap);\n * @param hgap The gap between columns\n * @param vgap The gap between rows\n */\n\tpublic VPanel(int hgap, int vgap) {\n\t\tTableLayout layout = new TableLayout(0, 1, hgap, vgap);\n\t\tlayout.setHorizontalAlignment(TableLayout.FILL);\n\t\tlayout.setVerticalAlignment(TableLayout.FILL);\n\t\tsetLayout(layout);\n\t}\n\n/* Serial version UID */\n/**\n * The serialization code for this class.  This value should be incremented\n * whenever you change the structure of this class in an incompatible way,\n * typically by adding a new instance variable.\n */\n\tstatic final long serialVersionUID = 1L;\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/gui/package.html",
    "content": "<html>\n<head>\n<title>The acm.gui Package</title>\n</head>\n<body>\nThis package provides a set of classes that support the creation of simple,\ninteractive programs.  The most important class in the package is\n<a href=\"TableLayout.html\"><code>TableLayout</code></a>, which\nimplements a new layout manager for creating tabular arrangements of\ncomponents.\nThe other classes likely to be used by students are\n<a href=\"IntField.html\"><code>IntField</code></a> and\n<a href=\"DoubleField.html\"><code>DoubleField</code></a>, which\nprovide simple interactors for reading numbers of the appropriate type.\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/io/IOConsole.java",
    "content": "/*\n * @(#)IOConsole.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Bug fix 18-Feb-07 (ESR, JTFBug 2007-003, reported by Dale Skrien)\n//   1. Fixed bug in ConsoleModel.clear.\n//\n// Bug fix 08-May-07 (ESR, JTFBug 2007-008)\n//   1. Completely rewrote PrintConsole code which no longer worked in JDK 1.6.\n//\n// Code cleanup 21-May-08 (ESR)\n//   1. Reimplemented menu bar code to correspond to overall redesign of\n//      the ProgramMenuBar class.\n\npackage acm.io;\n\nimport acm.program.*;\nimport acm.util.*;\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.io.*;\nimport java.util.*;\nimport javax.swing.*;\nimport javax.swing.text.*;\n\n/* Class: IOConsole */\n/**\n * The <code>IOConsole</code> class makes it easier to interact with\n * the user using text-based input and output in the style of a\n * traditional console.  Given a <code>IOConsole</code> object, you\n * can write output to that console using the\n * <a href=\"#print(String)\"><code>print</code></a> and\n * <a href=\"#println(String)\"><code>println</code></a>\n * methods, just as you would for the standard output stream.\n * To request input from the user, the most common methods are\n *\n * <ul>\n * <li><a href=\"#readInt()\"><code>readInt</code></a>\n * <li><a href=\"#readDouble()\"><code>readDouble</code></a>\n * <li><a href=\"#readBoolean()\"><code>readBoolean</code></a>\n * <li><a href=\"#readLine()\"><code>readLine</code></a>\n * </ul>\n *\n * <p>A <code>IOConsole</code> object is a lightweight component and must be\n * added to an installed <code>Frame</code> or <code>JFrame</code> before it becomes\n * visible on the screen.  The usual strategy for including a console in a frame is\n * to use the <a href=\"../program/ConsoleProgram.html\"><code>ConsoleProgram</code></a>\n * mechanism in the <code>acm.program</code> package.\n *\n * The operation of the <code>IOConsole</code> class is illustrated by\n * the following <code>test</code> method, which generates the session shown on\n * the right.  The user input appears in <font color=blue>blue</font>,\n * just as it does in the console window.\n *\n * <p><table><tr><td><pre><code>\n * &nbsp;    public void test(IOConsole console) {\n * &nbsp;       console.println(\"IOConsole class test\");\n * &nbsp;       int n = console.readInt(\"Enter an integer: \");\n * &nbsp;       console.println(\"That integer was \" + n);\n * &nbsp;       double d = console.readDouble(\"Enter a real number: \");\n * &nbsp;       console.println(\"That number was \" + d);\n * &nbsp;       boolean b = console.readBoolean(\"Enter a boolean value: \");\n * &nbsp;       console.println(\"That value was \" + b);\n * &nbsp;       String line = console.readLine(\"Enter a line: \");\n * &nbsp;       console.println(\"That line was \\\"\" + line + \"\\\"\");\n * &nbsp;    }\n * </code></pre></td>\n * <td width=260 align=right valign=top>\n * <img src=\"../../../../images/ConsoleTest.gif\">\n * </td></tr></table>\n */\npublic class IOConsole extends Container implements IOModel {\n\n/* Constant: SYSTEM_CONSOLE */\n/**\n * This constant is an object that offers the functionality of the\n * <code>IOConsole</code> class, but which does so using the standard\n * I/O streams <code>System.in</code> and <code>System.out</code>.\n */\n\tpublic static final IOConsole SYSTEM_CONSOLE = new SystemConsole();\n\n/* Constructor: IOConsole() */\n/**\n * Creates a new <code>IOConsole</code> object.\n *\n * @usage IOConsole console = new IOConsole();\n */\n\tpublic IOConsole() {\n\t\tconsoleModel = createConsoleModel();\n\t\tconsoleModel.setConsole(this);\n\t\tsetBackground(Color.WHITE);\n\t\tsetInputColor(Color.BLUE);\n\t\tsetInputStyle(Font.BOLD);\n\t\tsetErrorColor(Color.RED);\n\t\tsetErrorStyle(Font.BOLD);\n\t\tsetFont(JTFTools.getStandardFont(DEFAULT_FONT));\n\t\tComponent consolePane = consoleModel.getConsolePane();\n\t\tif (consolePane != null) {\n\t\t\tsetLayout(new BorderLayout());\n\t\t\tadd(consolePane, BorderLayout.CENTER);\n\t\t}\n\t\treader = null;\n\t\twriter = null;\n\t\texceptionOnError = false;\n\t}\n\n/* Method: clear() */\n/**\n * Clears the console display.\n *\n * @usage console.clear();\n */\n\tpublic void clear() {\n\t\tconsoleModel.clear();\n\t}\n\n/* Method: print(value) */\n/**\n * Displays the argument value on the console, leaving the cursor at the end of\n * the output.  The <code>print</code> method is overloaded so that\n * <code>value</code> can be of any type.\n *\n * @usage console.print(value);\n * @param value The value to be displayed\n */\n\tpublic void print(String value) {\n\t\tgetWriter().print(value);\n\t}\n\n/**\n * Makes sure that <code>print</code> can display a <code>boolean</code>.\n * @noshow\n */\n\tpublic final void print(boolean x) {\n\t\tprint(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>print</code> can display a <code>char</code>.\n * @noshow\n */\n\tpublic final void print(char x) {\n\t\tprint(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>print</code> can display a <code>double</code>.\n * @noshow\n */\n\tpublic final void print(double x) {\n\t\tprint(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>print</code> can display a <code>float</code>.\n * @noshow\n */\n\tpublic final void print(float x) {\n\t\tprint(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>print</code> can display an <code>int</code>.\n * @noshow\n */\n\tpublic final void print(int x) {\n\t\tprint(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>print</code> can display a <code>long</code>.\n * @noshow\n */\n\tpublic final void print(long x) {\n\t\tprint(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>print</code> can display an <code>Object</code>.\n * @noshow\n */\n\tpublic final void print(Object x) {\n\t\tprint(\"\" + x);\n\t}\n\n/* Method: println() */\n/**\n * Advances the console cursor to the beginning of the next line.\n *\n * @usage console.println();\n */\n\tpublic void println() {\n\t\tgetWriter().println();\n\t}\n\n/* Method: println(value) */\n/**\n * Displays the argument value on the console and then advances the cursor\n * to the beginning of the next line.  The <code>println</code> method is\n * overloaded so that <code>value</code> can be of any type.\n *\n * @usage console.println(value);\n * @param value The value to be displayed\n */\n\tpublic void println(String value) {\n\t\tgetWriter().println(value);\n\t}\n\n/**\n * Makes sure that <code>println</code> can display a <code>boolean</code>.\n * @noshow\n */\n\tpublic final void println(boolean x) {\n\t\tprintln(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>println</code> can display a <code>char</code>.\n * @noshow\n */\n\tpublic final void println(char x) {\n\t\tprintln(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>println</code> can display a <code>double</code>.\n * @noshow\n */\n\tpublic final void println(double x) {\n\t\tprintln(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>println</code> can display a <code>float</code>.\n * @noshow\n */\n\tpublic final void println(float x) {\n\t\tprintln(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>println</code> can display an <code>int</code>.\n * @noshow\n */\n\tpublic final void println(int x) {\n\t\tprintln(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>println</code> can display a <code>long</code>.\n * @noshow\n */\n\tpublic final void println(long x) {\n\t\tprintln(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>println</code> can display an <code>Object</code>.\n * @noshow\n */\n\tpublic final void println(Object x) {\n\t\tprintln(\"\" + x);\n\t}\n\n/* Method: showErrorMessage(msg) */\n/**\n * Displays the error message on the console.\n *\n * @usage console.showErrorMessage(msg);\n * @param msg The error msg to be displayed\n */\n\tpublic void showErrorMessage(String msg) {\n\t\tconsoleModel.print(msg, ConsoleModel.ERROR_STYLE);\n\t\tconsoleModel.print(\"\\n\", ConsoleModel.ERROR_STYLE);\n\t}\n\n/* Method: readLine() */\n/**\n * Reads and returns a line of input from the console, without\n * including the end-of-line characters that terminate the input.\n *\n * @usage String str = console.readLine();\n * @return The next line of input as a <code>String</code>\n */\n\tpublic final String readLine() {\n\t\treturn readLine(null);\n\t}\n\n/* Method: readLine(prompt) */\n/**\n * Prompts the user to enter a line of text, which is then returned\n * as the value of this method.  The end-of-line characters that terminate\n * the input are not included in the returned string.\n *\n * @usage String str = console.readLine(prompt);\n * @param prompt The prompt string to display to the user\n * @return The next line of input as a <code>String</code>\n */\n\tpublic String readLine(String prompt) {\n\t\tif (prompt != null) print(prompt);\n\t\tconsoleModel.requestFocus();\n\t\ttry {\n\t\t\tString str = getReader().readLine();\n\t\t\treturn str;\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/* Method: readInt() */\n/**\n * Reads and returns an integer value from the user.  If the user types\n * a value that is not a legal integer, the method ordinarily offers the\n * user a chance to reenter the data, although this behavior can be\n * changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage int n = console.readInt();\n * @return The value of the input interpreted as a decimal integer\n */\n\tpublic final int readInt() {\n\t\treturn readInt(null, Integer.MIN_VALUE, Integer.MAX_VALUE);\n\t}\n\n/* Method: readInt(low, high) */\n/**\n * Reads and returns an integer value from the user, which is constrained to\n * be within the specified inclusive range.  If the user types a value\n * that is not a legal integer, the method ordinarily offers the user a chance\n * to reenter the data, although this behavior can be changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage int n = console.readInt(low, high);\n * @param low The lowest value in the permitted range\n * @param high The highest value in the permitted range\n * @return The value of the input interpreted as a decimal integer\n */\n\tpublic final int readInt(int low, int high) {\n\t\treturn readInt(null, low, high);\n\t}\n\n/* Method: readInt(prompt) */\n/**\n * Prompts the user to enter an integer, which is then returned as the value\n * of this method.  If the user types a value that is not a legal integer,\n * the method ordinarily offers the user a chance to reenter the data,\n * although this behavior can be changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage int n = console.readInt(prompt);\n * @param prompt The prompt string to display to the user\n * @return The value of the input interpreted as a decimal integer\n */\n\tpublic final int readInt(String prompt) {\n\t\treturn readInt(prompt, Integer.MIN_VALUE, Integer.MAX_VALUE);\n\t}\n\n/* Method: readInt(prompt, low, high) */\n/**\n * Prompts the user to enter an integer, which is then returned as the value\n * of this method.  The value must be within the inclusive range between\n * <code>low</code> and <code>high</code>.  If the user types a value that\n * is not a legal integer or is outside the specified range, the method\n * ordinarily offers the user a chance to reenter the data,\n * although this behavior can be changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage int n = console.readInt(prompt, low, high);\n * @param prompt The prompt string to display to the user\n * @param low The lowest value in the permitted range\n * @param high The highest value in the permitted range\n * @return The value of the input interpreted as a decimal integer\n */\n\tpublic int readInt(String prompt, int low, int high) {\n\t\tString msg = null;\n\t\twhile (true) {\n\t\t\tString line = readLine(prompt);\n\t\t\ttry {\n\t\t\t\tint n = Integer.parseInt(line);\n\t\t\t\tif (n >= low && n <= high) return n;\n\t\t\t\tmsg = \"Value is outside the range [\" + low + \":\" + high + \"]\";\n\t\t\t} catch (NumberFormatException ex) {\n\t\t\t\tmsg = \"Illegal numeric format\";\n\t\t\t}\n\t\t\tshowErrorMessage(msg);\n\t\t\tif (prompt == null) prompt = \"Retry: \";\n\t\t}\n\t}\n\n/* Method: readDouble() */\n/**\n * Reads and returns a double-precision value from the user.  If the user\n * types a value that is not a legal number, the method ordinarily offers\n * the user a chance to reenter the data, although this behavior can be\n * changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage double d = console.readDouble();\n * @return The value of the input interpreted as a <code>double</code>\n */\n\tpublic final double readDouble() {\n\t\treturn readDouble(null, Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY);\n\t}\n\n/* Method: readDouble(low, high) */\n/**\n * Reads and returns a double-precision value from the user, which is\n * constrained to be within the specified inclusive range.  If the user\n * types a value that is not a legal number, the method ordinarily offers\n * the user a chance to reenter the data, although this behavior can be\n * changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage double d = console.readDouble(low, high);\n * @param low The lowest value in the permitted range\n * @param high The highest value in the permitted range\n * @return The value of the input interpreted as a <code>double</code>\n */\n\tpublic final double readDouble(double low, double high) {\n\t\treturn readDouble(null, low, high);\n\t}\n\n/* Method: readDouble(prompt) */\n/**\n * Prompts the user to enter an double-precision number, which is then\n * returned as the value of this method.  If the user types a value that\n * is not a legal number, the method ordinarily offers the user a chance to\n * reenter the data,  although this behavior can be changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage double d = console.readDouble(prompt);\n * @param prompt The prompt string to display to the user\n * @return The value of the input interpreted as a <code>double</code>\n */\n\tpublic final double readDouble(String prompt) {\n\t\treturn readDouble(prompt, Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY);\n\t}\n\n/* Method: readDouble(prompt, low, high) */\n/**\n * Prompts the user to enter an double-precision number, which is then returned\n * as the value of this method.  The value must be within the inclusive range\n * between <code>low</code> and <code>high</code>.  If the user types a value\n * that is not a legal number, the method ordinarily offers the user a chance\n * to reenter the data,  although this behavior can be changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage d = console.readDouble(prompt, low, high);\n * @param prompt The prompt string to display to the user\n * @param low The lowest value in the permitted range\n * @param high The highest value in the permitted range\n * @return The value of the input interpreted as a <code>double</code>\n */\n\tpublic double readDouble(String prompt, double low, double high) {\n\t\tString msg = null;\n\t\twhile (true) {\n\t\t\tString line = readLine(prompt);\n\t\t\ttry {\n\t\t\t\tdouble d = Double.valueOf(line).doubleValue();\n\t\t\t\tif (d >= low && d <= high) return d;\n\t\t\t\tmsg = \"Value is outside the range [\" + low + \":\" + high + \"]\";\n\t\t\t} catch (NumberFormatException ex) {\n\t\t\t\tmsg = \"Illegal numeric format\";\n\t\t\t}\n\t\t\tshowErrorMessage(msg);\n\t\t\tif (prompt == null) prompt = \"Retry: \";\n\t\t}\n\t}\n\n/* Method: readBoolean() */\n/**\n * Reads and returns a boolean value from the user, which must match\n * either <code>true</code> or <code>false</code>, ignoring case.\n * If the user types a value that is not one of these possibilities,\n * the method ordinarily offers the user a chance to reenter the data,\n * although this behavior can be changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage boolean flag = console.readBoolean();\n * @return The value of the input interpreted as a boolean value\n */\n\tpublic final boolean readBoolean() {\n\t\treturn readBoolean(null);\n\t}\n\n/* Method: readBoolean(prompt) */\n/**\n * Prompts the user to enter a boolean value, which is then returned as\n * the value of this method.  If the user types a value that is not a\n * legal boolean value, the method ordinarily offers the user a chance\n * to reenter the data, although this behavior can be changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage boolean flag = console.readBoolean(prompt);\n * @param prompt The prompt string to display to the user\n * @return The value of the input interpreted as a boolean value\n */\n\tpublic final boolean readBoolean(String prompt) {\n\t\treturn readBoolean(prompt, \"true\", \"false\");\n\t}\n\n/* Method: readBoolean(prompt, trueLabel, falseLabel) */\n/**\n * Prompts the user to enter a value, which is interpreted as a boolean value\n * by matching it against the <code>trueLabel</code> and <code>falseLabel</code>\n * parameters.  If the user types a value that is not one of the two choices,\n * <code>readBoolean</code> ordinarily offers the user a chance\n * to reenter the data, although this behavior can be changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage boolean flag = console.readBoolean(prompt);\n * @param prompt The prompt string to display to the user\n * @param trueLabel The string used to indicate <code>true</code>\n * @param falseLabel The string used to indicate <code>false</code>\n * @return The value of the input interpreted as a boolean value\n */\n\tpublic boolean readBoolean(String prompt, String trueLabel, String falseLabel) {\n\t\twhile (true) {\n\t\t\tString line = readLine(prompt);\n\t\t\tif (line ==  null) {\n\t\t\t\tthrow new ErrorException(\"End of file encountered\");\n\t\t\t} else if (line.equalsIgnoreCase(trueLabel)) {\n\t\t\t\treturn true;\n\t\t\t} else if (line.equalsIgnoreCase(falseLabel)) {\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\tif (exceptionOnError) {\n\t\t\t\t\tthrow new ErrorException(\"Illegal boolean format\");\n\t\t\t\t}\n\t\t\t\tshowErrorMessage(\"Illegal boolean format\");\n\t\t\t\tif (prompt == null) prompt = \"Retry: \";\n\t\t\t}\n\t\t}\n\t}\n\n/* Method: getReader() */\n/**\n * Returns a <code>BufferedReader</code> object that can be used to read\n * from the console.\n *\n * @usage BufferedReader rd = console.getReader();\n * @return A <code>BufferedReader</code> that reads from this console\n */\n\tpublic BufferedReader getReader() {\n\t\tif (reader == null) {\n\t\t\treader = new BufferedReader(new ConsoleReader(consoleModel));\n\t\t}\n\t\treturn reader;\n\t}\n\n/* Method: getWriter() */\n/**\n * Returns a <code>PrintWriter</code> object that can be used to send\n * output to the console.\n *\n * @usage PrintWriter wr = console.getWriter();\n * @return A <code>PrintWriter</code> that writes to this console\n */\n\tpublic PrintWriter getWriter() {\n\t\tif (writer == null) {\n\t\t\twriter = new PrintWriter(new ConsoleWriter(consoleModel));\n\t\t}\n\t\treturn writer;\n\t}\n\n/* Method: setExceptionOnError(flag) */\n/**\n * Sets the error-handling mode of the console as specified by the <code>flag</code>\n * parameter.  If <code>flag</code> is <code>false</code> (which is the default), the\n * input methods give the user a chance to retry after erroneous input.  If this\n * value is set to <code>true</code>, illegal input raises an\n * <a href=\"../util/ErrorException.html\"><code>ErrorException</code></a> instead.\n *\n * @usage console.setExceptionOnError(flag);\n * @param flag <code>false</code> to retry on errors; <code>true</code> to raise an exception\n */\n\tpublic void setExceptionOnError(boolean flag) {\n\t\texceptionOnError = flag;\n\t}\n\n/* Method: getExceptionOnError() */\n/**\n * Returns the state of the error-handling flag.\n *\n * @usage boolean flag = console.getExceptionOnError();\n * @return The current setting of the error-handling mode (<code>false</code> to retry\n *         on errors; <code>true</code> to raise an exception)\n */\n\tpublic boolean getExceptionOnError() {\n\t\treturn exceptionOnError;\n\t}\n\n/* Method: setInputStyle(style) */\n/**\n * Sets the style parameters for console input.  The style parameter\n * is either <code>Font.PLAIN</code> or a sum of one or more of the attributes\n * <code>Font.BOLD</code> and <code>Font.ITALIC</code>.\n *\n * @usage console.setInputStyle(style);\n * @param style The style attributes to be used for console input\n * @noshow\n */\n\tpublic void setInputStyle(int style) {\n\t\tinputStyle = style;\n\t\tconsoleModel.setInputStyle(style);\n\t}\n\n/* Method: getInputStyle() */\n/**\n * Returns the current style parameters for console input.\n *\n * @usage int style = console.getInputStyle();\n * @return The current input style\n * @noshow\n */\n\tpublic int getInputStyle() {\n\t\treturn inputStyle;\n\t}\n\n/* Method: setInputColor(color) */\n/**\n * Sets the color used for console input.\n *\n * @usage console.setInputColor(color);\n * @param color The color used for console input\n * @noshow\n */\n\tpublic void setInputColor(Color color) {\n\t\tinputColor = color;\n\t\tconsoleModel.setInputColor(color);\n\t}\n\n/* Method: getInputColor() */\n/**\n * Returns the color currently in use for console input.\n *\n * @usage Color color = console.getInputColor();\n * @return The current input color\n * @noshow\n */\n\tpublic Color getInputColor() {\n\t\treturn inputColor;\n\t}\n\n/* Method: setErrorStyle(style) */\n/**\n * Sets the style parameters for console error messages.  The style parameter\n * is either <code>Font.PLAIN</code> or a sum of one or more of the attributes\n * <code>Font.BOLD</code> and <code>Font.ITALIC</code>.\n *\n * @usage console.setErrorStyle(style);\n * @param style The style attributes to be used for console error messages\n * @noshow\n */\n\tpublic void setErrorStyle(int style) {\n\t\terrorStyle = style;\n\t\tconsoleModel.setErrorStyle(style);\n\t}\n\n/* Method: getErrorStyle() */\n/**\n * Returns the current style parameters for console error messages.\n *\n * @usage int style = console.getErrorStyle();\n * @return The current error message style\n * @noshow\n */\n\tpublic int getErrorStyle() {\n\t\treturn errorStyle;\n\t}\n\n/* Method: setErrorColor(color) */\n/**\n * Sets the color used for console error messages.\n *\n * @usage console.setErrorColor(color);\n * @param color The color used for console error messages\n * @noshow\n */\n\tpublic void setErrorColor(Color color) {\n\t\terrorColor = color;\n\t\tconsoleModel.setErrorColor(color);\n\t}\n\n/* Method: getErrorColor() */\n/**\n * Returns the color currently in use for console error messages.\n *\n * @usage Color color = console.getErrorColor();\n * @return The current error message color\n * @noshow\n */\n\tpublic Color getErrorColor() {\n\t\treturn errorColor;\n\t}\n\n/* Method: setFont(str) */\n/**\n * Sets the font used for the console as specified by\n * the string <code>str</code>, which is interpreted in the style of\n * <code>Font.decode</code>.  The usual format of the font string is\n *\n * <p>   <i>family</i><code>-</code><i>style</i><code>-</code><i>size</i><p>\n *\n * where both <i>style</i> and <i>size</i> are optional.  If any of these parts\n * are specified as an asterisk, the existing value is retained.\n *\n * @usage console.setFont(str);\n * @param str A <code>String</code> specifying the new font\n */\n\tpublic void setFont(String str) {\n\t\tsetFont(JTFTools.decodeFont(str, getFont()));\n\t}\n\n/* Method: setInputScript(rd) */\n/**\n * Sets a new input script for the console, which will subsequently\n * take input from the specified reader.  When the input from the reader\n * has been exhausted, the console returns to its normal operation.  This\n * method is primarily useful for demonstrations and test suites, and is\n * not ordinarily invoked by students.\n *\n * @usage console.setInputScript(rd);\n * @param rd The reader from which console input is taken\n * @noshow\n */\n\tpublic void setInputScript(BufferedReader rd) {\n\t\tconsoleModel.setInputScript(rd);\n\t}\n\n/* Method: getInputScript() */\n/**\n * Retrieves the input script.  After the end of the input script has been\n * reached, this method will return <code>null</code>.\n *\n * @usage BufferedReader rd = console.getInputScript();\n * @return The reader representing the current input script\n */\n\tpublic BufferedReader getInputScript() {\n\t\treturn consoleModel.getInputScript();\n\t}\n\n/* Method: cut() */\n/**\n * Implements the \"Cut\" menu operation.\n *\n * @usage console.cut();\n * @noshow\n */\n\tpublic void cut() {\n\t\tconsoleModel.cut();\n\t}\n\n/* Method: copy() */\n/**\n * Implements the \"Copy\" menu operation.\n *\n * @usage console.copy();\n * @noshow\n */\n\tpublic void copy() {\n\t\tconsoleModel.copy();\n\t}\n\n/* Method: paste() */\n/**\n * Implements the \"Paste\" menu operation.\n *\n * @usage console.paste();\n * @noshow\n */\n\tpublic void paste() {\n\t\tconsoleModel.paste();\n\t}\n\n/* Method: selectAll() */\n/**\n * Implements the \"Select All\" menu operation.\n *\n * @usage console.selectAll();\n * @noshow\n */\n\tpublic void selectAll() {\n\t\tconsoleModel.selectAll();\n\t}\n\n/* Method: save() */\n/**\n * Implements the \"Save\" menu operation.\n *\n * @usage console.save();\n * @noshow\n */\n\tpublic void save() {\n\t\tWriter wr = null;\n\t\twhile (wr == null) {\n\t\t\ttry {\n\t\t\t\tif (file == null) {\n\t\t\t\t\tFrame frame = JTFTools.getEnclosingFrame(this);\n\t\t\t\t\tif (frame == null) return;\n\t\t\t\t\tString dir = System.getProperty(\"user.dir\");\n\t\t\t\t\tFileDialog dialog = new FileDialog(frame, \"Save Console As\", FileDialog.SAVE);\n\t\t\t\t\tdialog.setDirectory(dir);\n\t\t\t\t\tdialog.setVisible(true);\n\t\t\t\t\tString filename = dialog.getFile();\n\t\t\t\t\tif (filename == null) return;\n\t\t\t\t\tfile = new File(dialog.getDirectory(), filename);\n\t\t\t\t}\n\t\t\t\twr = new FileWriter(file);\n\t\t\t\tsave(wr);\n\t\t\t\twr.close();\n\t\t\t\tPlatform.setFileTypeAndCreator(file, \"TEXT\", \"ttxt\");\n\t\t\t} catch (IOException ex) {\n\t\t\t\tIODialog dialog = new IODialog(this);\n\t\t\t\tdialog.showErrorMessage(ex.getMessage());\n\t\t\t}\n\t\t}\n\t}\n\n/* Method: saveAs() */\n/**\n * Implements the \"Save As\" menu operation.\n *\n * @usage console.saveAs();\n * @noshow\n */\n\tpublic void saveAs() {\n\t\tfile = null;\n\t\tsave();\n\t}\n\n/* Method: save(wr) */\n/**\n * Copies the console output to the specified writer.\n *\n * @usage console.save(wr);\n * @param wr A <code>Writer</code> to which the console output is sent\n * @noshow\n */\n\tpublic void save(Writer wr) {\n\t\ttry {\n\t\t\twr.write(consoleModel.getText());\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/* Method: printConsole() */\n/**\n * Implements the \"Print Console\" menu operation.\n *\n * @usage console.printConsole();\n * @noshow\n */\n\tpublic void printConsole() {\n\t\tFrame frame = JTFTools.getEnclosingFrame(this);\n\t\tif (frame == null) return;\n\t\tPrintJob pj = getToolkit().getPrintJob(frame, \"Console\", null);\n\t\tif (pj == null) return;\n\t\tprintConsole(pj);\n\t\tpj.end();\n\t}\n\n/* Method: printConsole(pj) */\n/**\n * Prints the console output using the specified <code>PrintJob</code> object.\n * This method is usually invoked from the <code>Print</code> menu item in\n * the <code>ProgramMenuBar</code> class and is not ordinarily called by clients.\n *\n * @usage console.printConsole(pj);\n * @param pj <code>PrintJob</code> object to which the output is sent\n * @noshow\n */\n\tpublic void printConsole(PrintJob pj) {\n\t\tconsoleModel.print(pj);\n\t}\n\n/* Method: script() */\n/**\n * Implements the \"Script\" menu operation.\n *\n * @usage console.script();\n * @noshow\n */\n\tpublic void script() {\n\t\tFrame frame = JTFTools.getEnclosingFrame(this);\n\t\tFileDialog dialog = new FileDialog(frame, \"Input Script\", FileDialog.LOAD);\n\t\tdialog.setDirectory(System.getProperty(\"user.dir\"));\n\t\tdialog.setVisible(true);\n\t\tString dirname = dialog.getDirectory();\n\t\tString filename = dialog.getFile();\n\t\tif (filename != null) {\n\t\t\ttry {\n\t\t\t\tFileReader rd = new FileReader(new File(new File(dirname), filename));\n\t\t\t\tsetInputScript(new BufferedReader(rd));\n\t\t\t} catch (IOException ex) {\n\t\t\t\tthrow new ErrorException(ex);\n\t\t\t}\n\t\t}\n\t}\n\n/* Method: setMenuBar(mbar) */\n/**\n * Sets the menu bar that controls this console.\n *\n * @usage console.setMenuBar(mbar);\n * @param mbar The menu bar\n */\n\tpublic void setMenuBar(ProgramMenuBar mbar) {\n\t\tmenuBar = mbar;\n\t\tconsoleModel.setMenuBar(mbar);\n\t}\n\n/* Method: getMenuBar() */\n/**\n * Returns the menu bar that controls this console.\n *\n * @usage ProgramMenuBar mbar = console.getMenuBar();\n * @return The menu bar\n */\n\tpublic ProgramMenuBar getMenuBar() {\n\t\treturn menuBar;\n\t}\n\n/* Method: menuAction(e) */\n/**\n * Called whenever a relevant action is detected in the menu bar.\n * Subclasses can override this method to extend the set of menu\n * commands recognized by the console.\n */\n\tpublic boolean menuAction(ActionEvent e) {\n\t\tString cmd = e.getActionCommand();\n\t\tif (cmd.equals(\"Cut\")) {\n\t\t\tcut();\n\t\t\treturn true;\n\t\t} else if (cmd.equals(\"Copy\")) {\n\t\t\tcopy();\n\t\t\treturn true;\n\t\t} else if (cmd.equals(\"Paste\")) {\n\t\t\tpaste();\n\t\t\treturn true;\n\t\t} else if (cmd.equals(\"Select All\")) {\n\t\t\tselectAll();\n\t\t\treturn true;\n\t\t} else if (cmd.equals(\"Save\")) {\n\t\t\tsave();\n\t\t\treturn true;\n\t\t} else if (cmd.equals(\"Save As\")) {\n\t\t\tsaveAs();\n\t\t\treturn true;\n\t\t} else if (cmd.equals(\"Script\")) {\n\t\t\tscript();\n\t\t\treturn true;\n\t\t} else if (cmd.equals(\"Print Console\")) {\n\t\t\tprintConsole();\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n/* Method: isConsoleMenuItem(item) */\n/**\n * Returns <code>true</code> if the item is one that the console recognizes.\n */\n\tpublic boolean isConsoleMenuItem(JMenuItem item) {\n\t\tString cmd = item.getActionCommand();\n\t\tif (cmd == null) return false;\n\t\tfor (int i = 0; i < CONSOLE_MENU_ACTIONS.length; i++) {\n\t\t\tif (cmd.equals(CONSOLE_MENU_ACTIONS[i])) return true;\n\t\t}\n\t\treturn false;\n\t}\n\n/* Method: updateMenuBar(mbar) */\n/**\n * Updates the menu bar to enable the appropriate menu items.\n */\n\tpublic void updateMenuBar(ProgramMenuBar mbar) {\n\t\tIterator<JMenuItem> iterator = mbar.iterator();\n\t\twhile (iterator.hasNext()) {\n\t\t\tJMenuItem item = iterator.next();\n\t\t\tif (isConsoleMenuItem(item)) {\n\t\t\t\titem.setEnabled(true);\n\t\t\t} else {\n\t\t\t\titem.setEnabled(!mbar.isFocusedItem(item));\n\t\t\t}\n\t\t}\n\t}\n\n/* Override method: setBackground(color) */\n/**\n * Sets the background color used for the console.\n *\n * @usage console.setBackground(color);\n * @param color The new background color\n */\n\tpublic void setBackground(Color color) {\n\t\tComponent textPane = consoleModel.getTextPane();\n\t\tif (textPane != null) textPane.setBackground(color);\n\t\tsuper.setBackground(color);\n\t}\n\n/* Override method: setForeground(color) */\n/**\n * Sets the foreground color used for the output text.\n *\n * @usage console.setForeground(color);\n * @param color The color to use for the output text\n */\n\tpublic void setForeground(Color color) {\n\t\tComponent textPane = consoleModel.getTextPane();\n\t\tif (textPane != null) textPane.setForeground(color);\n\t\tsuper.setForeground(color);\n\t}\n\n/* Override method: setFont(font) */\n/**\n * Sets the font for the console.\n *\n * @usage console.setFont(font);\n * @param font The font to use for the console\n */\n\tpublic void setFont(Font font) {\n\t\tfont = JTFTools.getStandardFont(font);\n\t\tComponent textPane = consoleModel.getTextPane();\n\t\tif (textPane != null) textPane.setFont(font);\n\t\tsuper.setFont(font);\n\t}\n\n/* Override method: requestFocus() */\n/**\n * Overrides the <code>requestFocus</code> method so that it forwards to the\n * console model.\n *\n * @usage console.requestFocus();\n * @noshow\n */\n\tpublic void requestFocus() {\n\t\tconsoleModel.requestFocus();\n\t}\n\n/* Override method: getPreferredSize() */\n/**\n * Overrides the <code>getPreferredSize</code> method to ensure that an\n * <code>IOConsole</code> is not too large.\n *\n * @usage Dimension size = console.getPreferredSize();\n * @noshow\n */\n\tpublic Dimension getPreferredSize() {\n\t\treturn getMinimumSize();\n\t}\n\n/* Override method: getMinimumSize() */\n/**\n * Overrides the <code>getMinimumSize</code> method to ensure that an\n * <code>IOConsole</code> is not too large.\n *\n * @usage Dimension size = console.getMinimumSize();\n * @noshow\n */\n\tpublic Dimension getMinimumSize() {\n\t\treturn new Dimension(MINIMUM_CONSOLE_WIDTH, MINIMUM_CONSOLE_HEIGHT);\n\t}\n\n/* Protected method: createConsoleModel() */\n/**\n * Creates the console model used by this console.\n */\n\tprotected ConsoleModel createConsoleModel() {\n\t\treturn new StandardConsoleModel();\n\t}\n\n/* Protected constant: DEFAULT_FONT */\n/**\n * The default font used by a new <code>IOConsole</code>.\n */\n\tprotected static final Font DEFAULT_FONT = new Font(\"Monospaced\", Font.PLAIN, 12);\n\n/* Protected constant: LINE_SEPARATOR */\n/**\n * The end-of-line separator for this platform.\n */\n\tprotected static final String LINE_SEPARATOR = System.getProperty(\"line.separator\");\n\n/* Protected constant: MINIMUM_CONSOLE_WIDTH */\n/**\n * The minimum width for a console.\n */\n\tprotected static final int MINIMUM_CONSOLE_WIDTH = 50;\n\n/* Protected constant: MINIMUM_CONSOLE_HEIGHT */\n/**\n * The minimum height for a console.\n */\n\tprotected static final int MINIMUM_CONSOLE_HEIGHT = 40;\n\n/* Private constants */\n\tprivate static final String[] CONSOLE_MENU_ACTIONS = {\n\t\t\"Save\", \"Save As\", \"Print Console\", \"Script\",\n\t\t\"Cut\", \"Copy\", \"Paste\", \"Select All\"\n\t};\n\n/* Private instance variables */\n\tprivate ConsoleModel consoleModel;\n\tprivate boolean exceptionOnError;\n\tprivate Color inputColor;\n\tprivate int inputStyle;\n\tprivate Color errorColor;\n\tprivate int errorStyle;\n\tprivate BufferedReader reader;\n\tprivate PrintWriter writer;\n\tprivate File file;\n\tprivate ProgramMenuBar menuBar;\n}\n\n/* Package interface: ConsoleModel */\n/**\n * This interface defines the operations that any console model must implement.\n */\ninterface ConsoleModel {\n\n/* Constants for display types */\n\tpublic static final int OUTPUT_STYLE = 0;\n\tpublic static final int INPUT_STYLE = 1;\n\tpublic static final int ERROR_STYLE = 2;\n\n/* Method signatures */\n\tpublic void setConsole(IOConsole owner);\n\tpublic IOConsole getConsole();\n\tpublic void print(String str, int style);\n\tpublic String readLine();\n\tpublic void setInputScript(BufferedReader rd);\n\tpublic BufferedReader getInputScript();\n\tpublic void clear();\n\tpublic String getText();\n\tpublic String getText(int start, int end);\n\tpublic int getLength();\n\tpublic Component getConsolePane();\n\tpublic Component getTextPane();\n\tpublic void cut();\n\tpublic void copy();\n\tpublic void paste();\n\tpublic void selectAll();\n\tpublic boolean isPointSelection();\n\tpublic void print(PrintJob pj);\n\tpublic void setInputStyle(int style);\n\tpublic void setInputColor(Color color);\n\tpublic void setErrorStyle(int style);\n\tpublic void setErrorColor(Color color);\n\tpublic void requestFocus();\n\tpublic void setMenuBar(ProgramMenuBar mbar);\n}\n\n/* Package class: StandardConsoleModel */\n/**\n * This class implements the console model using Swing.\n */\nclass StandardConsoleModel\n  implements KeyListener, FocusListener, ConsoleModel {\n\n/* Constructor: StandardConsoleModel() */\n/**\n * Creates the framework for the standard console models.\n */\n\tpublic StandardConsoleModel() {\n\t\toutputMonitor = new ConsoleOutputMonitor(this);\n\t\tinputMonitor = new ConsoleInputMonitor(this);\n\t\tscrollPane = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);\n\t\ttextPane = new JTextPane();\n\t\ttextPane.addKeyListener(this);\n\t\ttextPane.addFocusListener(this);\n\t\tscrollPane.setViewportView(textPane);\n\t\tdocument = textPane.getDocument();\n\t\tlineSeparator = System.getProperty(\"line.separator\");\n\t\toutputAttributes = new SimpleAttributeSet();\n\t\tinputAttributes = new SimpleAttributeSet();\n\t\terrorAttributes = new SimpleAttributeSet();\n\t\tbuffer = new CharacterQueue();\n\t\tbase = 0;\n\t}\n\n/* Method: setConsole(owner) */\n/**\n * Sets the identity of the owning console.  This method must be called after\n * creating the model object.\n */\n\tpublic void setConsole(IOConsole owner) {\n\t\tconsole = owner;\n\t}\n\n/* Method: getConsole(console) */\n/**\n * Returns the associated console.\n */\n\tpublic IOConsole getConsole() {\n\t\treturn console;\n\t}\n\n/* Method: print(str, style) */\n/**\n * Prints the string to the console.\n */\n\tpublic void print(String str, int style) {\n\t\toutputMonitor.print(str, style);\n\t}\n\n/* Method: readLine() */\n/**\n * Reads and returns the next line of text from the console.\n */\n\tpublic String readLine() {\n\t\treturn inputMonitor.readLine();\n\t}\n\n/* Method: setInputScript(rd) */\n/**\n * Sets a new input script for the console, which will subsequently\n * take input from the specified reader.\n */\n\tpublic void setInputScript(BufferedReader rd) {\n\t\tinputScript = rd;\n\t\tif (buffer.isWaiting()) {\n\t\t\ttry {\n\t\t\t\tString line = inputScript.readLine();\n\t\t\t\tbuffer.enqueue(line + \"\\n\");\n\t\t\t} catch (IOException ex) {\n\t\t\t\tthrow new ErrorException(ex);\n\t\t\t}\n\t\t}\n\t}\n\n/* Method: getInputScript() */\n/**\n * Retrieves the input script.  After the end of the input script has been\n * reached, this method will return <code>null</code>.\n */\n\tpublic BufferedReader getInputScript() {\n\t\treturn inputScript;\n\t}\n\n/* Method: clear() */\n/**\n * Clears the console pane.\n */\n\tpublic void clear() {\n\t\ttextPane.setText(\"\");\n\t\tbase = 0;\n\t\tbuffer.clear();\n\t}\n\n/* Method: getText() */\n/**\n * Returns the text stored in the console model.\n */\n\tpublic String getText() {\n\t\treturn textPane.getText();\n\t}\n\n/* Method: getText(start, end) */\n/**\n * Returns a substring from the text using endpoints defined as in\n * <code>substring</code> for strings.\n */\n\tpublic String getText(int start, int end) {\n\t\ttry {\n\t\t\treturn document.getText(start, end - start);\n\t\t} catch (BadLocationException ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/* Method: getLength() */\n/**\n * Returns the length of the text stored in the console model.\n */\n\tpublic int getLength() {\n\t\treturn document.getLength();\n\t}\n\n/* Method: getConsolePane() */\n/**\n * Returns the top-level component that represents the console.  This is the\n * pane that needs to be added to a parent.\n */\n\tpublic Component getConsolePane() {\n\t\treturn scrollPane;\n\t}\n\n/* Method: getTextPane() */\n/**\n * Returns the component that holds the text.  This is the pane to which\n * messages like <code>setFont</code> and <code>requestFocus</code> should\n * be directed.\n */\n\tpublic Component getTextPane() {\n\t\treturn textPane;\n\t}\n\n/* Method: cut() */\n/**\n * Implements the \"cut\" menu operation.\n */\n\tpublic void cut() {\n\t\tcopy();\n\t\tdeleteSelection();\n\t}\n\n/* Method: copy() */\n/**\n * Implements the \"copy\" menu operation.\n */\n\tpublic void copy() {\n\t\ttextPane.copy();\n\t}\n\n/* Method: paste() */\n/**\n * Implements the \"paste\" menu operation.\n */\n\tpublic void paste() {\n\t\tif (textPane.getSelectionEnd() != document.getLength()) return;\n\t\tint start = deleteSelection();\n\t\ttextPane.setSelectionStart(start);\n\t\ttextPane.paste();\n\t\ttextPane.select(document.getLength(), document.getLength());\n\t\tif (document instanceof DefaultStyledDocument) {\n\t\t\tDefaultStyledDocument doc = (DefaultStyledDocument) document;\n\t\t\tdoc.setCharacterAttributes(start, textPane.getSelectionEnd() - start, inputAttributes, true);\n\t\t}\n\t}\n\n/* Method: selectAll() */\n/**\n * Implements the \"select all\" menu operation.\n */\n\tpublic void selectAll() {\n\t\ttextPane.selectAll();\n\t}\n\n/* Method: isPointSelection() */\n\tpublic boolean isPointSelection() {\n\t\treturn textPane.getSelectionStart() == textPane.getSelectionEnd();\n\t}\n\n/* Method: print(pj) */\n/**\n * Prints the entire console using the specified <code>PrintJob</code> object.\n */\n\tpublic void print(PrintJob pj) {\n\t\tGraphics g = pj.getGraphics();\n\t\tDimension pageSize = pj.getPageDimension();\n\t\tFontMetrics fm = textPane.getFontMetrics(textPane.getFont());\n\t\tint fontHeight = fm.getHeight();\n\t\tint fontAscent = fm.getAscent();\n\t\tint x = PRINT_MARGIN;\n\t\tint y = PRINT_MARGIN + fontAscent;\n\t\tint linesPerPage = (pageSize.height - 2 * PRINT_MARGIN) / fontHeight;\n\t\tint linesRemaining = linesPerPage;\n\t\tElementIterator i = new ElementIterator(document);\n\t\twhile (true) {\n\t\t\tElement e = i.next();\n\t\t\tif (e == null) break;\n\t\t\tif (e.isLeaf()) {\n\t\t\t\ttry {\n\t\t\t\t\tint len = e.getEndOffset() - e.getStartOffset();\n\t\t\t\t\tsetStyleFromAttributes(g, e.getAttributes());\n\t\t\t\t\tfm = g.getFontMetrics();\n\t\t\t\t\tString text = document.getText(e.getStartOffset(), len);\n\t\t\t\t\tint start = 0;\n\t\t\t\t\twhile (true) {\n\t\t\t\t\t\tboolean last = false;\n\t\t\t\t\t\tint delta = 1;\n\t\t\t\t\t\tint eol = text.indexOf(\"\\n\", start);\n\t\t\t\t\t\tif (eol == -1) {\n\t\t\t\t\t\t\teol = text.indexOf(lineSeparator, start);\n\t\t\t\t\t\t\tif (eol == -1) {\n\t\t\t\t\t\t\t\teol = text.length();\n\t\t\t\t\t\t\t\tlast = true;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdelta = lineSeparator.length();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (start < eol) {\n\t\t\t\t\t\t\tString str = text.substring(start, eol);\n\t\t\t\t\t\t\tg.drawString(str, x, y);\n\t\t\t\t\t\t\tx += fm.stringWidth(str);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (last) break;\n\t\t\t\t\t\tstart = eol + delta;\n\t\t\t\t\t\tx = PRINT_MARGIN;\n\t\t\t\t\t\ty += fontHeight;\n\t\t\t\t\t\tlinesRemaining--;\n\t\t\t\t\t\tif (linesRemaining <= 0) {\n\t\t\t\t\t\t\tg.dispose();\n\t\t\t\t\t\t\tg = pj.getGraphics();\n\t\t\t\t\t\t\ty = PRINT_MARGIN + fontAscent;\n\t\t\t\t\t\t\tlinesRemaining = linesPerPage;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch (BadLocationException ex) {\n\t\t\t\t\tthrow new ErrorException(ex);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tpj.end();\n\t}\n\n/* Method: setInputStyle(style) */\n/**\n * Sets the style parameters for console input.  The style parameter\n * is either <code>Font.PLAIN</code> or a sum of one or more of the attributes\n * <code>Font.BOLD</code> and <code>Font.ITALIC</code>.\n */\n\tpublic void setInputStyle(int style) {\n\t\tif (getLength() != 0) {\n\t\t\tthrow new ErrorException(\"Console styles and colors cannot be changed after I/O has started.\");\n\t\t}\n\t\tinputAttributes.addAttribute(StyleConstants.Bold, new Boolean((style & Font.BOLD) != 0));\n\t\tinputAttributes.addAttribute(StyleConstants.Italic, new Boolean((style & Font.ITALIC) != 0));\n\t}\n\n/* Method: setInputColor(color) */\n/**\n * Sets the color used for console input.\n */\n\tpublic void setInputColor(Color color) {\n\t\tif (getLength() != 0) {\n\t\t\tthrow new ErrorException(\"Console styles and colors cannot be changed after I/O has started.\");\n\t\t}\n\t\tinputAttributes.addAttribute(StyleConstants.Foreground, color);\n\t}\n\n/* Method: setErrorStyle(style) */\n/**\n * Sets the style parameters for console error messages.  The style parameter\n * is either <code>Font.PLAIN</code> or a sum of one or more of the attributes\n * <code>Font.BOLD</code> and <code>Font.ITALIC</code>.\n */\n\tpublic void setErrorStyle(int style) {\n\t\tif (getLength() != 0) {\n\t\t\tthrow new ErrorException(\"Console styles and colors cannot be changed after I/O has started.\");\n\t\t}\n\t\terrorAttributes.addAttribute(StyleConstants.Bold, new Boolean((style & Font.BOLD) != 0));\n\t\terrorAttributes.addAttribute(StyleConstants.Italic, new Boolean((style & Font.ITALIC) != 0));\n\t}\n\n/* Method: setErrorColor(color) */\n/**\n * Sets the color used for console error.\n */\n\tpublic void setErrorColor(Color color) {\n\t\tif (getLength() != 0) {\n\t\t\tthrow new ErrorException(\"Console styles and colors cannot be changed after I/O has started.\");\n\t\t}\n\t\terrorAttributes.addAttribute(StyleConstants.Foreground, color);\n\t}\n\n/* Method: requestFocus() */\n/**\n * Forwards the request focus to the text pane.\n * @noshow\n */\n\tpublic void requestFocus() {\n\t\tif (textPane != null) textPane.requestFocus();\n\t}\n\n/* Method: setMenuBar(mbar) */\n/**\n * Sets the menu bar that controls this console.\n * @noshow\n */\n\tpublic void setMenuBar(ProgramMenuBar mbar) {\n\t\tmenuBar = mbar;\n\t}\n\n/* Implementation of the FocusListener interface */\n\n/* Method: focusGained */\n/**\n * Called when focus is gained by the console.\n */\n\tpublic void focusGained(FocusEvent e) {\n\t\thasFocus = true;\n\t\tif (menuBar != null) {\n\t\t\tif (actionListener == null) {\n\t\t\t\tactionListener = new ConsoleActionListener(console);\n\t\t\t}\n\t\t\tmenuBar.setFocusedListener(actionListener);\n\t\t\tconsole.updateMenuBar(menuBar);\n\t\t}\n\t}\n\n/* Method: focusLost */\n/**\n * Called when focus is lost by the console.\n */\n\tpublic void focusLost(FocusEvent e) {\n\t\thasFocus = false;\n\t\tif (menuBar != null) {\n\t\t\tmenuBar.setFocusedListener(null);\n\t\t}\n\t}\n\n/* Implementation of the KeyListener interface */\n\n/* Method: keyTyped(e) */\n/**\n * Responds to a key being typed in the console pane. Implements <code>KeyListener</code>.\n */\n\tpublic void keyTyped(KeyEvent e) {\n\t\tif (!e.isMetaDown() && !e.isControlDown()) {\n\t\t\tbuffer.enqueue(e.getKeyChar());\n\t\t\te.consume();\n\t\t}\n\t}\n\n/* Method: keyPressed(e) */\n/**\n * Responds to key presses that do not correspond to typed keys.\n * Implements <code>KeyListener</code>.\n */\n\tpublic void keyPressed(KeyEvent e) {\n\t\tjavax.swing.JOptionPane.showMessageDialog(null, \"It works key! \" + e.getKeyCode());\n\t\tswitch (e.getKeyCode()) {\n\t\t  case KeyEvent.VK_LEFT:\n\t\t\tbuffer.enqueue('\\002');\n\t\t\tbreak;\n\t\t  case KeyEvent.VK_RIGHT:\n\t\t\tbuffer.enqueue('\\006');\n\t\t\tbreak;\n\t\t}\n\t\tif (menuBar != null) menuBar.fireAccelerator(e);\n\t\te.consume();\n\t}\n\n/* Method: keyReleased(e) */\n/**\n * Responds to the release of a key.  Implements <code>KeyListener</code>.\n * @noshow\n */\n\tpublic void keyReleased(KeyEvent e) {\n\t\te.consume();\n\t}\n\n/* Protected method: printCallback(str, style) */\n/**\n * Prints the string to the console.  Synchronization is provided by\n * the <code>ConsoleOutputMonitor</code> class.\n */\n\tprotected void printCallback(String str, int style) {\n\t\tinsert(str, base, style);\n\t\tbase += str.length();\n\t\tsetCaretPosition(base);\n\t}\n\n/* Protected method: readLineCallback() */\n/**\n * Reads and returns the next line of text from the console.\n * Synchronization is provided by the <code>ConsoleInputMonitor</code> class.\n */\n\tprotected String readLineCallback() {\n\t\tbase = getLength();\n\t\tif (inputScript != null) {\n\t\t\tString line = null;\n\t\t\ttry {\n\t\t\t\tline = inputScript.readLine();\n\t\t\t} catch (IOException ex) {\n\t\t\t\tthrow new ErrorException(ex);\n\t\t\t}\n\t\t\tif (line != null) {\n\t\t\t\tinsert(line, base, INPUT_STYLE);\n\t\t\t\tinsert(\"\\n\", base + line.length(), OUTPUT_STYLE);\n\t\t\t\tbase += line.length() + 1;\n\t\t\t\treturn line;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tinputScript.close();\n\t\t\t} catch (IOException ex) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t\tinputScript = null;\n\t\t}\n\t\tint dot;\n\t\tchar ch;\n\t\tsetCaretPosition(base);\n\t\twhile ((ch = buffer.dequeue()) != '\\n' && ch != '\\r') {\n\t\t\tif (getCaretPosition() < base) {\n\t\t\t\tsetCaretPosition(getLength());\n\t\t\t}\n\t\t\tdot = getSelectionStart();\n\t\t\tswitch (ch) {\n\t\t\t  case '\\b': case '\\177':\n\t\t\t\tif (dot == getSelectionEnd()) {\n\t\t\t\t\tif (dot > base) {\n\t\t\t\t\t\tdelete(dot - 1, dot);\n\t\t\t\t\t\tdot--;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tdot = deleteSelection();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t  case 'A'-'@':\n\t\t\t\tselectAll();\n\t\t\t\tdot = -1;\n\t\t\t\tbreak;\n\t\t\t  case 'B'-'@':\n\t\t\t\tdot = Math.max(getSelectionStart() - 1, base);\n\t\t\t\tbreak;\n\t\t\t  case 'C'-'@':\n\t\t\t\tcopy();\n\t\t\t\tdot = -1;\n\t\t\t\tbreak;\n\t\t\t  case 'F'-'@':\n\t\t\t\tdot = Math.min(getSelectionEnd() + 1, getLength());\n\t\t\t\tbreak;\n\t\t\t  case 'P'-'@':\n\t\t\t\tconsole.printConsole();\n\t\t\t\tdot = -1;\n\t\t\t\tbreak;\n\t\t\t  case 'S'-'@':\n\t\t\t\tconsole.save();\n\t\t\t\tdot = -1;\n\t\t\t\tbreak;\n\t\t\t  case 'V'-'@':\n\t\t\t\tpaste();\n\t\t\t\tdot = -1;\n\t\t\t\tbreak;\n\t\t\t  case 'X'-'@':\n\t\t\t\tcut();\n\t\t\t\tdot = -1;\n\t\t\t\tbreak;\n\t\t\t  default:\n\t\t\t\tif (dot != getSelectionEnd()) {\n\t\t\t\t\tdot = deleteSelection();\n\t\t\t\t}\n\t\t\t\tinsert(\"\" + ch, dot, INPUT_STYLE);\n\t\t\t\tdot++;\n\t\t\t}\n\t\t\tif (dot != -1) {\n\t\t\t\tselect(dot, dot);\n\t\t\t\tsetCaretPosition(dot);\n\t\t\t}\n\t\t}\n\t\tint len = getLength() - base;\n\t\tString line = getText(base, base + len);\n\t\tinsert(\"\\n\", base + len, OUTPUT_STYLE);\n\t\tbase += len + 1;\n\t\treturn line;\n\t}\n\n/* Private method: isCommandEnabled(cmd) */\n/**\n * Returns true if the command should be enabled in the menu bar.\n */\n\tpublic boolean isCommandEnabled(String cmd) {\n\t\tif (cmd == cmd) /* Avoid unused parameter warning */;\n\t\treturn hasFocus;\n\t}\n\n/* Private method: insert(str, dot, style) */\n/**\n * Inserts a string into the text pane at the position specified by <code>dot</code>,\n * using the specified style.\n */\n\tprivate void insert(String str, int dot, int style) {\n\t\ttry {\n\t\t\tSimpleAttributeSet attributes = outputAttributes;\n\t\t\tswitch (style) {\n\t\t\t  case INPUT_STYLE: attributes = inputAttributes; break;\n\t\t\t  case ERROR_STYLE: attributes = errorAttributes; break;\n\t\t\t}\n\t\t\tdocument.insertString(dot, str, attributes);\n\t\t} catch (BadLocationException ex) {\n\t\t\t/* Empty */\n\t\t}\n\t}\n\n/* Private method: delete(p1, p2) */\n/**\n * Deletes text from the text pane beginning at position <code>p1</code> and\n * continuing up to but not including <code>p2</code>.\n */\n\tprivate void delete(int p1, int p2) {\n\t\ttry {\n\t\t\tdocument.remove(p1, p2 - p1);\n\t\t} catch (BadLocationException ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/* Private method: setCaretPosition(pos) */\n/**\n * Sets the position of the input carat.\n */\n\tprivate void setCaretPosition(int pos) {\n\t\ttextPane.setCaretPosition(pos);\n\t}\n\n/* Private method: getCaretPosition() */\n/**\n * Returns the position of the input carat.\n */\n\tprivate int getCaretPosition() {\n\t\treturn textPane.getCaretPosition();\n\t}\n\n/* Private method: select(p1, p2) */\n/**\n * Selects the characters in the range from p1 up to but not including p2.\n */\n\tprivate void select(int p1, int p2) {\n\t\ttextPane.select(p1, p2);\n\t}\n\n/* Private method: getSelectionStart() */\n/**\n * Returns the start of the selection.\n */\n\tprivate int getSelectionStart() {\n\t\treturn textPane.getSelectionStart();\n\t}\n\n/* Private method: getSelectionEnd() */\n/**\n * Returns the end of the selection.\n */\n\tprivate int getSelectionEnd() {\n\t\treturn textPane.getSelectionEnd();\n\t}\n\n/* Private method: deleteSelection() */\n/**\n * Deletes the current selection and returns the index of the deletion point.\n */\n\tprivate int deleteSelection() {\n\t\tint start = Math.max(base, getSelectionStart());\n\t\tint end = getSelectionEnd();\n\t\tif (end <= base) return getLength();\n\t\tdelete(start, end);\n\t\treturn start;\n\t}\n\n/* Private method: setStyleFromAttributes(g, attributes) */\n/**\n * Sets the relevant components of the graphics context from the attribute set.\n */\n\tprivate void setStyleFromAttributes(Graphics g, AttributeSet attributes) {\n\t\tFont oldFont = textPane.getFont();\n\t\tint style = 0;\n\t\tif (Boolean.TRUE.equals(attributes.getAttribute(StyleConstants.Bold))) {\n\t\t\tstyle |= Font.BOLD;\n\t\t}\n\t\tif (Boolean.TRUE.equals(attributes.getAttribute(StyleConstants.Italic))) {\n\t\t\tstyle |= Font.ITALIC;\n\t\t}\n\t\tg.setFont(new Font(oldFont.getName(), style, oldFont.getSize()));\n\t\tColor color = (Color) attributes.getAttribute(StyleConstants.Foreground);\n\t\tif (color == null) color = textPane.getForeground();\n\t\tg.setColor(color);\n\t}\n\n/* Private constants */\n\tprivate static final int PRINT_MARGIN = 36;\n\n/* Private instance variables */\n\tprivate ActionListener actionListener;\n\tprivate ConsoleOutputMonitor outputMonitor;\n\tprivate ConsoleInputMonitor inputMonitor;\n\tprivate BufferedReader inputScript;\n\tprivate CharacterQueue buffer;\n\tprivate SimpleAttributeSet outputAttributes;\n\tprivate SimpleAttributeSet inputAttributes;\n\tprivate SimpleAttributeSet errorAttributes;\n\tprivate JScrollPane scrollPane;\n\tprivate JTextPane textPane;\n\tprivate Document document;\n\tprivate String lineSeparator;\n\tprivate int base;\n\tprivate boolean hasFocus;\n\tprivate IOConsole console;\n\tprivate ProgramMenuBar menuBar;\n}\n\n/* Package class: ConsoleOutputMonitor */\n/**\n * This class implements synchronization for the output side of the console\n * using method-level synchronization, thereby avoiding the compatibility\n * problems of the <code>synchronized</code> statement.\n */\nclass ConsoleOutputMonitor {\n\n/* Constructor: new ConsoleOutputMonitor(model) */\n/**\n * Creates the new console output monitor, which calls back to the specified\n * model.\n */\n\tpublic ConsoleOutputMonitor(StandardConsoleModel model) {\n\t\tconsoleModel = model;\n\t}\n\n/* Method: print(str, style) */\n/**\n * Prints the string to the console.\n */\n\tpublic synchronized void print(String str, int style) {\n\t\tconsoleModel.printCallback(str, style);\n\t}\n\n/* Private instance variables */\n\tprivate StandardConsoleModel consoleModel;\n}\n\n/* Package class: ConsoleInputMonitor */\n/**\n * This class implements synchronization for the input side of the console\n * using method-level synchronization, thereby avoiding the compatibility\n * problems of the <code>synchronized</code> statement.\n */\nclass ConsoleInputMonitor {\n\n/* Constructor: new ConsoleInputMonitor(model) */\n/**\n * Creates the new console input monitor, which calls back to the specified\n * model.\n */\n\tpublic ConsoleInputMonitor(StandardConsoleModel model) {\n\t\tconsoleModel = model;\n\t}\n\n/* Method: readLine() */\n/**\n * Reads and returns the next line of text from the console.\n */\n\tpublic synchronized String readLine() {\n\t\treturn consoleModel.readLineCallback();\n\t}\n\n/* Private instance variables */\n\tprivate StandardConsoleModel consoleModel;\n}\n\n/* Package class: SystemConsole */\n/**\n * This class implements a version of <code>IOConsole</code> that responds to\n * the methods of that class but that uses <code>System.in</code> and\n * <code>System.out</code> for its input and output.  This class is not\n * instantiated directly; clients gain access to this facility by using the\n * <a href=\"IOConsole.html#SYSTEM_CONSOLE\"><code>SYSTEM_CONSOLE</code></a>\n * constant in the <a href=\"IOConsole.html\"><code>IOConsole</code></a> class.\n */\nclass SystemConsole extends IOConsole {\n\n/* Factory method: createConsoleModel() */\n/**\n * Creates the console model object used to implement this console.\n */\n\tprotected ConsoleModel createConsoleModel() {\n\t\treturn new SystemConsoleModel();\n\t}\n}\n\n/* Package class: ConsoleWriter */\n/**\n * This class defines the underlying writer for the console.\n * @noshow\n */\nclass ConsoleWriter extends Writer {\n\n/* Constructor: ConsoleWriter(cp) */\n/**\n * Creates the basic writer object for the console.\n */\n\tpublic ConsoleWriter(ConsoleModel cp) {\n\t\tconsoleModel = cp;\n\t}\n\n/* Method: close() */\n/**\n * Closes the writer (does nothing in this case).\n */\n\tpublic void close() {\n\t\t/* Empty */\n\t}\n\n/* Method: flush() */\n/**\n * Flushes any remaining output to the writer.\n */\n\tpublic void flush() {\n\t\t/* Empty */\n\t}\n\n/* Method: write(cbuf, off, len) */\n/**\n * Writes characters from <code>cbuf</code> starting at position <code>off</code>\n * up to a maximum of <code>len</code>.\n */\n\tpublic void write(char[] cbuf, int off, int len) {\n\t\tString str = new String(cbuf, off, len);\n\t\tint start = 0;\n\t\tint eol;\n\t\twhile ((eol = str.indexOf(IOConsole.LINE_SEPARATOR, start)) != -1) {\n\t\t\tconsoleModel.print(str.substring(start, eol), ConsoleModel.OUTPUT_STYLE);\n\t\t\tconsoleModel.print(\"\\n\", ConsoleModel.OUTPUT_STYLE);\n\t\t\tstart = eol + IOConsole.LINE_SEPARATOR.length();\n\t\t}\n\t\tconsoleModel.print(str.substring(start), ConsoleModel.OUTPUT_STYLE);\n\t}\n\n/* Private instance variables */\n\tprivate ConsoleModel consoleModel;\n}\n\n/* Package class: ConsoleReader */\n/**\n * This class defines the underlying reader for the console.\n */\nclass ConsoleReader extends Reader {\n\n/* Constructor: ConsoleReader(cp) */\n/**\n * Creates the basic reader object for the console.\n */\n\tpublic ConsoleReader(ConsoleModel cp) {\n\t\tconsoleModel = cp;\n\t\tbuffer = null;\n\t}\n\n/* Method: close() */\n/**\n * Closes the reader (does nothing in this case).\n */\n\tpublic void close() {\n\t\t/* Empty */\n\t}\n\n/* Method: read(cbuf, off, len) */\n/**\n * Reads characters into <code>cbuf</code> starting at position <code>off</code>\n * up to a maximum of <code>len</code>.\n */\n\tpublic int read(char[] cbuf, int off, int len) {\n\t\tif (len == 0) return 0;\n\t\tif (buffer == null) {\n\t\t\tbuffer = consoleModel.readLine();\n\t\t\tif (buffer == null) return -1;\n\t\t\tbuffer += \"\\n\";\n\t\t}\n\t\tif (len < buffer.length()) {\n\t\t\tbuffer.getChars(0, len, cbuf, off);\n\t\t\tbuffer = buffer.substring(len);\n\t\t} else {\n\t\t\tlen = buffer.length();\n\t\t\tbuffer.getChars(0, len, cbuf, off);\n\t\t\tbuffer = null;\n\t\t}\n\t\treturn len;\n\t}\n\n/* Private instance variables */\n\tprivate ConsoleModel consoleModel;\n\tprivate String buffer;\n}\n\n/* Package class: SystemConsoleModel */\n/**\n * Implements the basic console operations for the system console.\n */\nclass SystemConsoleModel implements ConsoleModel {\n\n/* Constructor: SystemConsoleModel() */\n/**\n * Creates a new <code>SystemConsoleModel</code> object.\n */\n\tpublic SystemConsoleModel() {\n\t\ttext = \"\";\n\t}\n\n/* Method: setConsole(owner) */\n/**\n * Sets the identity of the owning console.  This method must be called after\n * creating the model object.\n */\n\tpublic void setConsole(IOConsole owner) {\n\t\tconsole = owner;\n\t}\n\n/* Method: getConsole(console) */\n/**\n * Returns the associated console.\n */\n\tpublic IOConsole getConsole() {\n\t\treturn console;\n\t}\n\n/* Method: clear() */\n/**\n * Clears the console pane.\n */\n\tpublic void clear() {\n\t\t/* Empty */\n\t}\n\n/* Method: print(str, style) */\n/**\n * Prints the string to the end of the console output.\n */\n\tpublic void print(String str, int style) {\n\t\tSystem.out.print(str);\n\t\ttext += str;\n\t}\n\n/* Method: readLine() */\n/**\n * Reads and returns the next line of text from the console.\n */\n\tpublic String readLine() {\n\t\tSystem.out.flush();\n\t\tString line = \"\";\n\t\tint ch;\n\t\ttry {\n\t\t\twhile (true) {\n\t\t\t\tif (inputScript == null) {\n\t\t\t\t\tch = System.in.read();\n\t\t\t\t} else {\n\t\t\t\t\tch = inputScript.read();\n\t\t\t\t}\n\t\t\t\tif (ch == -1 && line.length() == 0) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (inputScript != null) inputScript.close();\n\t\t\t\t\t} catch (IOException ex) {\n\t\t\t\t\t\t/* Empty */\n\t\t\t\t\t}\n\t\t\t\t\tinputScript = null;\n\t\t\t\t} else {\n\t\t\t\t\tif (ch == -1 || ch == '\\n') break;\n\t\t\t\t\tline += (char) ch;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (IOException ex) {\n\t\t\t/* Empty */\n\t\t}\n\t\tif (inputScript != null) print(line + \"\\n\", INPUT_STYLE);\n\t\treturn line;\n\t}\n\n/* Method: getText() */\n/**\n * Returns the text stored in the console pane.\n */\n\tpublic String getText() {\n\t\treturn text;\n\t}\n\n/* Method: getText(start, end) */\n/**\n * Returns a substring from the text using endpoints defined as in\n * <code>substring</code> for strings.\n */\n\tpublic String getText(int start, int end) {\n\t\treturn text.substring(start, end);\n\t}\n\n/* Method: getLength() */\n/**\n * Returns the length of the text.\n */\n\tpublic int getLength() {\n\t\treturn text.length();\n\t}\n\n/* Method: getConsoleModel() */\n/**\n * Returns the top-level component that represents the console.  This is the\n * pane that needs to be added to a parent.\n */\n\tpublic Component getConsoleModel() {\n\t\treturn null;\n\t}\n\n/* Method: getTextPane() */\n/**\n * Returns the component that holds the text.  This is the model to which\n * messages like <code>setFont</code> and <code>requestFocus</code> should\n * be directed.\n */\n\tpublic Component getTextPane() {\n\t\treturn null;\n\t}\n\n/* Method: setFont(font) */\n/**\n * Sets the font for the console.\n *\n * @usage consoleModel.setFont(font);\n * @param font The new font for the console\n */\n\tpublic void setFont(Font font) {\n\t\tif (font != font); /* Avoid unused parameter warning */;\n\t\t/* Empty */\n\t}\n\n/* Method: setInputStyle(style) */\n/**\n * Sets the style parameters for console input.  The style parameter\n * is either <code>Font.PLAIN</code> or a sum of one or more of the attributes\n * <code>Font.BOLD</code> and <code>Font.ITALIC</code>.\n */\n\tpublic void setInputStyle(int style) {\n\t\t/* Empty */\n\t}\n\n/* Method: setInputColor(color) */\n/**\n * Sets the color used for console input.\n */\n\tpublic void setInputColor(Color color) {\n\t\t/* Empty */\n\t}\n\n/* Method: setErrorStyle(style) */\n/**\n * Sets the style parameters for console error messages.  The style parameter\n * is either <code>Font.PLAIN</code> or a sum of one or more of the attributes\n * <code>Font.BOLD</code> and <code>Font.ITALIC</code>.\n */\n\tpublic void setErrorStyle(int style) {\n\t\t/* Empty */\n\t}\n\n/* Method: setErrorColor(color) */\n/**\n * Sets the color used for console error messages.\n */\n\tpublic void setErrorColor(Color color) {\n\t\t/* Empty */\n\t}\n\n/* Method: cut() */\n/**\n * Implements the \"cut\" menu operation.\n */\n\tpublic void cut() {\n\t\t/* Empty */\n\t}\n\n/* Method: copy() */\n/**\n * Implements the \"copy\" menu operation.\n */\n\tpublic void copy() {\n\t\t/* Empty */\n\t}\n\n/* Method: paste() */\n/**\n * Implements the \"paste\" menu operation.\n */\n\tpublic void paste() {\n\t\t/* Empty */\n\t}\n\n/* Method: selectAll() */\n/**\n * Implements the \"select all\" menu operation.\n */\n\tpublic void selectAll() {\n\t\t/* Empty */\n\t}\n\n/* Method: isPointSelection() */\n\tpublic boolean isPointSelection() {\n\t\treturn true;\n\t}\n\n/* Method: print(pj) */\n/**\n * Prints the entire console using the specified <code>PrintJob</code> object.\n */\n\tpublic void print(PrintJob pj) {\n\t\t/* Empty */\n\t}\n\n/* Method: setInputScript(rd) */\n/**\n * Sets a new input script for the console, which will subsequently\n * take input from the specified reader.\n */\n\tpublic void setInputScript(BufferedReader rd) {\n\t\tinputScript = rd;\n\t}\n\n/* Method: getInputScript() */\n/**\n * Retrieves the input script.  After the end of the input script has been\n * reached, this method will return <code>null</code>.\n */\n\tpublic BufferedReader getInputScript() {\n\t\treturn inputScript;\n\t}\n\n/* Method: getConsolePane() */\n/**\n * Returns the top-level component that represents the console.\n */\n\tpublic Component getConsolePane() {\n\t\treturn null;\n\t}\n\n/* Method: requestFocus() */\n/**\n * Forwards the request focus to the text pane.\n * @noshow\n */\n\tpublic void requestFocus() {\n\t\t/* Empty */\n\t}\n\n/* Method: setMenuBar(mbar) */\n/**\n * Sets the menu bar that controls this console.\n * @noshow\n */\n\tpublic void setMenuBar(ProgramMenuBar mbar) {\n\t\t/* Empty */\n\t}\n\n/* Private instance variables */\n\tprivate IOConsole console;\n\tprivate BufferedReader inputScript;\n\tprivate String text;\n}\n\n/* Package class: CharacterQueue */\n/**\n * This class defines a simple character queue.\n */\nclass CharacterQueue {\n\n/* Constructor: CharacterQueue() */\n/**\n * Creates an empty character queue.\n */\n\tpublic CharacterQueue() {\n\t\tbuffer = \"\";\n\t}\n\n/* Method: enqueue(ch) */\n/**\n * Adds a character to the end of the queue.\n */\n\tpublic synchronized void enqueue(char ch) {\n\t\tbuffer += ch;\n\t\tnotifyAll();\n\t}\n\n/* Method: enqueue(str) */\n/**\n * Adds a string to the end of the queue.\n */\n\tpublic synchronized void enqueue(String str) {\n\t\tbuffer += str;\n\t\tnotifyAll();\n\t}\n\n/* Method: dequeue() */\n/**\n * Removes and returns the first character in the queue.  If the queue\n * is empty, this method waits for data.\n */\n\tpublic synchronized char dequeue() {\n\t\twhile (buffer.length() == 0) {\n\t\t\ttry {\n\t\t\t\tisWaiting = true;\n\t\t\t\twait();\n\t\t\t\tisWaiting = false;\n\t\t\t} catch (InterruptedException ex) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t}\n\t\tchar ch = buffer.charAt(0);\n\t\tbuffer = buffer.substring(1);\n\t\treturn ch;\n\t}\n\n/* Method: clear() */\n/**\n * Clears the character queue.\n */\n\tpublic synchronized void clear() {\n\t\tbuffer = \"\";\n\t\tnotifyAll();\n\t}\n\n/* Method: isWaiting() */\n/**\n * Returns <code>true</code> if the buffer is in a waiting state.\n */\n\tpublic boolean isWaiting() {\n\t\treturn isWaiting;\n\t}\n\n/* Private instance variables */\n\tprivate String buffer;\n\tprivate boolean isWaiting;\n}\n\n/* Package class: ConsoleActionListener */\n/**\n * This class listens for menu bar actions directed toward the console.\n */\nclass ConsoleActionListener implements ActionListener {\n\n/* Constructor: ConsoleActionListener(owner) */\n/**\n * Creates a new action listener for the specified console.\n */\n\tpublic ConsoleActionListener(IOConsole owner) {\n\t\tconsole = owner;\n\t}\n\n/* Method: actionPerformed(e) */\n/**\n * Responds to the specified action event.\n */\n\tpublic void actionPerformed(ActionEvent e) {\n\t\tconsole.menuAction(e);\n\t}\n\n/* Private instance variables */\n\tprivate IOConsole console;\n\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/io/IODialog.java",
    "content": "/*\n * @(#)IODialog.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\npackage acm.io;\n\nimport acm.util.*;\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.lang.reflect.*;\nimport java.util.*;\nimport javax.swing.*;\n\n/* Class: IODialog */\n/**\n * The <code>IODialog</code> class provides a simple, dialog-based mechanism\n * for interacting with the user.  It is therefore similar to the\n * <code>JOptionPane</code> facility in Swing (which it uses in the implementation).\n * The differences between the models are\n *\n * <ol>\n * <li>The <code>IODialog</code> mechanism is considerably simpler, mostly\n *     because it does not try to be as general.\n * <li>The <code>IODialog</code> mechanism does not use static methods; clients\n *     instantiate an <code>IODialog</code> object and make calls on that object,\n *     thereby emphasizing the object-oriented idea.\n * <li>The <code>IODialog</code> class works even if Swing is not available.\n * </ol>\n *\n * The input methods available for <code>IODialog</code> are intentionally the\n * same as those for the <a href=\"IOConsole.html\"><code>IOConsole</code></a> class so\n * that clients can substitute one model for another without making source changes.\n * The input methods are therefore\n *\n * <ul>\n * <li><a href=\"#readInt()\"><code>readInt</code></a>\n * <li><a href=\"#readDouble()\"><code>readDouble</code></a>\n * <li><a href=\"#readBoolean()\"><code>readBoolean</code></a>\n * <li><a href=\"#readLine()\"><code>readLine</code></a>\n * </ul>\n *\n * For example, the following code pops up a dialog box and\n * allows the user to enter an integer:\n *\n * <p><pre><code>\n * &nbsp;    IODialog dialog = new IODialog();\n * &nbsp;    int n = dialog.readInt(\"Enter an integer: \");\n * </code></pre>\n */\npublic class IODialog implements IOModel {\n\n/* Constructor: IODialog() */\n/**\n * Instantiates a new IODialog object that can then be used for dialog-based\n * input and output.\n *\n * @usage dialog = new IODialog();\n */\n\tpublic IODialog() {\n\t\tthis(null);\n\t}\n\n/* Constructor: IODialog(owner) */\n/**\n * Instantiates a new IODialog object that can then be used for dialog-based\n * input and output.\n *\n * @usage dialog = new IODialog(owner);\n * @param owner A <code>Component</code> used as the owner of created dialogs\n */\n\tpublic IODialog(Component owner) {\n\t\tmyComponent = owner;\n\t\tmodel = createModel();\n\t\toutputLine = \"\";\n\t\texceptionOnError = false;\n\t\tallowCancel = false;\n\t}\n\n/* Method: print(value) */\n/**\n * Displays the argument value, allowing for the possibility of more\n * output in the same dialog.  The <code>print</code> method is overloaded\n * so that <code>value</code> can be of any type.\n *\n * @usage dialog.print(value);\n * @param value The value to be displayed\n */\n\tpublic void print(String value) {\n\t\toutputLine += value;\n\t}\n\n/**\n * Makes sure that <code>print</code> can display a <code>boolean</code>.\n * @noshow\n */\n\tpublic final void print(boolean x) {\n\t\tprint(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>print</code> can display a <code>char</code>.\n * @noshow\n */\n\tpublic final void print(char x) {\n\t\tprint(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>print</code> can display a <code>double</code>.\n * @noshow\n */\n\tpublic final void print(double x) {\n\t\tprint(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>print</code> can display a <code>float</code>.\n * @noshow\n */\n\tpublic final void print(float x) {\n\t\tprint(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>print</code> can display an <code>int</code>.\n * @noshow\n */\n\tpublic final void print(int x) {\n\t\tprint(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>print</code> can display a <code>long</code>.\n * @noshow\n */\n\tpublic final void print(long x) {\n\t\tprint(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>print</code> can display an <code>Object</code>.\n * @noshow\n */\n\tpublic final void print(Object x) {\n\t\tprint(\"\" + x);\n\t}\n\n/* Method: println() */\n/**\n * Completes the output line and displays the dialog.\n *\n * @usage dialog.println();\n */\n\tpublic void println() {\n\t\tmodel.popupMessage(outputLine);\n\t\toutputLine = \"\";\n\t}\n\n/* Method: println(value) */\n/**\n * Adds the value to the current output line and then displays the dialog.\n * The <code>println</code> method is overloaded so that <code>value</code>\n * can be of any type.\n *\n * @usage dialog.println(value);\n * @param value The value to be displayed\n */\n\tpublic void println(String value) {\n\t\tprint(value);\n\t\tprintln();\n\t}\n\n/**\n * Makes sure that <code>println</code> can display a <code>boolean</code>.\n * @noshow\n */\n\tpublic final void println(boolean x) {\n\t\tprintln(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>println</code> can display a <code>char</code>.\n * @noshow\n */\n\tpublic final void println(char x) {\n\t\tprintln(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>println</code> can display a <code>double</code>.\n * @noshow\n */\n\tpublic final void println(double x) {\n\t\tprintln(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>println</code> can display a <code>float</code>.\n * @noshow\n */\n\tpublic final void println(float x) {\n\t\tprintln(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>println</code> can display an <code>int</code>.\n * @noshow\n */\n\tpublic final void println(int x) {\n\t\tprintln(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>println</code> can display a <code>long</code>.\n * @noshow\n */\n\tpublic final void println(long x) {\n\t\tprintln(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>println</code> can display an <code>Object</code>.\n * @noshow\n */\n\tpublic final void println(Object x) {\n\t\tprintln(\"\" + x);\n\t}\n\n/* Method: showErrorMessage(msg) */\n/**\n * Displays the error message in an error dialog.\n *\n * @usage dialog.showErrorMessage(msg);\n * @param msg The error msg to be displayed\n */\n\tpublic void showErrorMessage(String msg) {\n\t\tmodel.popupErrorMessage(msg);\n\t}\n\n/* Method: readLine() */\n/**\n * Reads and returns a line of input from the dialog, without\n * including the end-of-line characters that terminate the input.\n *\n * @usage String str = dialog.readLine();\n * @return The next line of input as a <code>String</code>\n */\n\tpublic final String readLine() {\n\t\treturn readLine(null);\n\t}\n\n/* Method: readLine(prompt) */\n/**\n * Prompts the user to enter a single character, which is then returned\n * as the value of this method.  The end-of-line characters that terminate\n * the input are not included in the returned string.\n *\n * @usage String str = dialog.readLine(prompt);\n * @param prompt The prompt string to display to the user\n * @return The next line of input as a <code>String</code>\n */\n\tpublic String readLine(String prompt) {\n\t\tif (myConsole != null && myConsole.getInputScript() != null) {\n\t\t\treturn myConsole.readLine(prompt);\n\t\t}\n\t\tprompt = (prompt == null) ? outputLine : outputLine + prompt;\n\t\toutputLine = \"\";\n\t\tString line;\n\t\twhile ((line = model.popupLineInputDialog(prompt, allowCancel)) == null) {\n\t\t\tif (allowCancel) throw new CancelledException();\n\t\t}\n\t\treturn line;\n\t}\n\n/* Method: readInt() */\n/**\n * Reads and returns an integer value from the user.  If the user types\n * a value that is not a legal integer, the method ordinarily offers the\n * user a chance to reenter the data, although this behavior can be\n * changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage int n = dialog.readInt();\n * @return The value of the input interpreted as a decimal integer\n */\n\tpublic final int readInt() {\n\t\treturn readInt(null, Integer.MIN_VALUE, Integer.MAX_VALUE);\n\t}\n\n/* Method: readInt(low, high) */\n/**\n * Reads and returns an integer value from the user, which is constrained to\n * be within the specified inclusive range.  If the user types a value\n * that is not a legal integer, the method ordinarily offers the user a chance\n * to reenter the data, although this behavior can be changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage int n = dialog.readInt(low, high);\n * @param low The lowest value in the permitted range\n * @param high The highest value in the permitted range\n * @return The value of the input interpreted as a decimal integer\n */\n\tpublic final int readInt(int low, int high) {\n\t\treturn readInt(null, low, high);\n\t}\n\n/* Method: readInt(prompt) */\n/**\n * Prompts the user to enter an integer, which is then returned as the value\n * of this method.  If the user types a value that is not a legal integer,\n * the method ordinarily offers the user a chance to reenter the data,\n * although this behavior can be changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage int n = dialog.readInt(prompt);\n * @param prompt The prompt string to display to the user\n * @return The value of the input interpreted as a decimal integer\n */\n\tpublic final int readInt(String prompt) {\n\t\treturn readInt(prompt, Integer.MIN_VALUE, Integer.MAX_VALUE);\n\t}\n\n/* Method: readInt(prompt, low, high) */\n/**\n * Prompts the user to enter an integer, which is then returned as the value\n * of this method.  The value must be within the inclusive range between\n * <code>low</code> and <code>high</code>.  If the user types a value that\n * is not a legal integer or is outside the specified range, the method\n * ordinarily offers the user a chance to reenter the data,\n * although this behavior can be changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage int n = dialog.readInt(prompt, low, high);\n * @param prompt The prompt string to display to the user\n * @param low The lowest value in the permitted range\n * @param high The highest value in the permitted range\n * @return The value of the input interpreted as a decimal integer\n */\n\tpublic int readInt(String prompt, int low, int high) {\n\t\twhile (true) {\n\t\t\tString line = readLine(prompt);\n\t\t\ttry {\n\t\t\t\tint n = Integer.parseInt(line);\n\t\t\t\tif (n < low || n > high) {\n\t\t\t\t\tsignalError(\"Value is outside the range [\" + low + \":\" + high + \"]\");\n\t\t\t\t}\n\t\t\t\treturn n;\n\t\t\t} catch (NumberFormatException ex) {\n\t\t\t\tsignalError(\"Illegal integer format\");\n\t\t\t}\n\t\t}\n\t}\n\n/* Method: readDouble() */\n/**\n * Reads and returns a double-precision value from the user.  If the user\n * types a value that is not a legal number, the method ordinarily offers\n * the user a chance to reenter the data, although this behavior can be\n * changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage double d = dialog.readDouble();\n * @return The value of the input interpreted as a <code>double</code>\n */\n\tpublic final double readDouble() {\n\t\treturn readDouble(null, Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY);\n\t}\n\n/* Method: readDouble(low, high) */\n/**\n * Reads and returns a double-precision value from the user, which is\n * constrained to be within the specified inclusive range.  If the user\n * types a value that is not a legal number, the method ordinarily offers\n * the user a chance to reenter the data, although this behavior can be\n * changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage double d = dialog.readDouble(low, high);\n * @param low The lowest value in the permitted range\n * @param high The highest value in the permitted range\n * @return The value of the input interpreted as a <code>double</code>\n */\n\tpublic final double readDouble(double low, double high) {\n\t\treturn readDouble(null, low, high);\n\t}\n\n/* Method: readDouble(prompt) */\n/**\n * Prompts the user to enter an double-precision number, which is then\n * returned as the value of this method.  If the user types a value that\n * is not a legal number, the method ordinarily offers the user a chance to\n * reenter the data,  although this behavior can be changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage double d = dialog.readDouble(prompt);\n * @param prompt The prompt string to display to the user\n * @return The value of the input interpreted as a <code>double</code>\n */\n\tpublic final double readDouble(String prompt) {\n\t\treturn readDouble(prompt, Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY);\n\t}\n\n/* Method: readDouble(prompt, low, high) */\n/**\n * Prompts the user to enter an double-precision number, which is then returned\n * as the value of this method.  The value must be within the inclusive range\n * between <code>low</code> and <code>high</code>.  If the user types a value\n * that is not a legal number, the method ordinarily offers the user a chance\n * to reenter the data,  although this behavior can be changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage d = dialog.readDouble(prompt, low, high);\n * @param prompt The prompt string to display to the user\n * @param low The lowest value in the permitted range\n * @param high The highest value in the permitted range\n * @return The value of the input interpreted as a <code>double</code>\n */\n\tpublic double readDouble(String prompt, double low, double high) {\n\t\twhile (true) {\n\t\t\tString line = readLine(prompt);\n\t\t\ttry {\n\t\t\t\tdouble d = Double.valueOf(line).doubleValue();\n\t\t\t\tif (d < low || d > high) {\n\t\t\t\t\tsignalError(\"Value is outside the range [\" + low + \":\" + high + \"]\");\n\t\t\t\t}\n\t\t\t\treturn d;\n\t\t\t} catch (NumberFormatException ex) {\n\t\t\t\tsignalError(\"Illegal numeric format\");\n\t\t\t}\n\t\t}\n\t}\n\n/* Method: readBoolean() */\n/**\n * Reads and returns a boolean value from the user, which must match\n * either <code>true</code> or <code>false</code>, ignoring case.\n * If the user types a value that is not one of these possibilities,\n * the method ordinarily offers the user a chance to reenter the data,\n * although this behavior can be changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage boolean flag = dialog.readBoolean();\n * @return The value of the input interpreted as a boolean value\n */\n\tpublic final boolean readBoolean() {\n\t\treturn readBoolean(null);\n\t}\n\n/* Method: readBoolean(prompt) */\n/**\n * Prompts the user to enter a boolean value, which is then returned as\n * the value of this method.  If the user types a value that is not a\n * legal boolean value, the method ordinarily offers the user a chance\n * to reenter the data, although this behavior can be changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage boolean flag = dialog.readBoolean(prompt);\n * @param prompt The prompt string to display to the user\n * @return The value of the input interpreted as a boolean value\n */\n\tpublic final boolean readBoolean(String prompt) {\n\t\treturn readBoolean(prompt, \"true\", \"false\");\n\t}\n\n/* Method: readBoolean(prompt, trueLabel, falseLabel) */\n/**\n * Prompts the user to enter a value, which is interpreted as a boolean value\n * by matching it against the <code>trueLabel</code> and <code>falseLabel</code>\n * parameters.  If the user types a value that is not one of the two choices,\n * <code>readBoolean</code> ordinarily offers the user a chance\n * to reenter the data, although this behavior can be changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage boolean flag = dialog.readBoolean(prompt);\n * @param prompt The prompt string to display to the user\n * @param trueLabel The label for the button indicating <code>true</code>\n * @param falseLabel The label for the button indicating <code>false</code>\n * @return The value of the input interpreted as a boolean value\n */\n\tpublic boolean readBoolean(String prompt, String trueLabel, String falseLabel) {\n\t\tif (myConsole != null && myConsole.getInputScript() != null) {\n\t\t\treturn myConsole.readBoolean(prompt, trueLabel, falseLabel);\n\t\t}\n\t\tprompt = (prompt == null) ? outputLine : outputLine + prompt;\n\t\toutputLine = \"\";\n\t\tBoolean choice;\n\t\twhile ((choice = model.popupBooleanInputDialog(prompt, trueLabel, falseLabel, allowCancel)) == null) {\n\t\t\tif (allowCancel) throw new CancelledException();\n\t\t}\n\t\treturn choice.booleanValue();\n\t}\n\n/* Method: setExceptionOnError(flag) */\n/**\n * Sets the error-handling mode of the dialog as specified by the <code>flag</code>\n * parameter.  If <code>flag</code> is <code>false</code> (which is the default), the\n * input methods give the user a chance to retry after erroneous input.  If this\n * value is set to <code>true</code>, illegal input raises an\n * <a href=\"../util/ErrorException.html\"><code>ErrorException</code></a> instead.\n *\n * @usage dialog.setExceptionOnError(flag);\n * @param flag <code>false</code> to retry on errors; <code>true</code> to raise an exception\n */\n\tpublic void setExceptionOnError(boolean flag) {\n\t\texceptionOnError = flag;\n\t}\n\n/* Method: getExceptionOnError() */\n/**\n * Returns the state of the error-handling flag.\n *\n * @usage boolean flag = dialog.getExceptionOnError();\n * @return The current setting of the error-handling mode (<code>false</code> to retry\n *         on errors; <code>true</code> to raise an exception)\n */\n\tpublic boolean getExceptionOnError() {\n\t\treturn exceptionOnError;\n\t}\n\n/* Method: setAllowCancel(flag) */\n/**\n * Sets the cancellation mode of the dialog as specified by the <code>flag</code>\n * parameter.  If <code>flag</code> is <code>false</code> (which is the default),\n * the input methods do not include a \"Cancel\" button.  If this value is set to\n * to <code>true</code>, a \"Cancel\" button appears, which throws a\n * <a href=\"../util/CancelledException.html\"><code>CancelledException</code></a>\n * if it is invoked.\n *\n * @usage dialog.setAllowCancel(flag);\n * @param flag <code>false</code> to remove \"Cancel\" button; <code>true</code> to enable it\n */\n\tpublic void setAllowCancel(boolean flag) {\n\t\tallowCancel = flag;\n\t}\n\n/* Method: getAllowCancel() */\n/**\n * Returns the state of the cancellation mode.\n *\n * @usage boolean flag = dialog.getAllowCancel();\n * @return The current setting of the error-handling mode (<code>false</code> to retry\n *         on errors; <code>true</code> to raise an exception)\n */\n\tpublic boolean getAllowCancel() {\n\t\treturn allowCancel;\n\t}\n\n/* Method: setAssociatedConsole(console) */\n/**\n * Establishes an associated console for the dialog. If the associated console\n * is non-<code>null</code> and the console is reading from an input stream,\n * then the dialog methods use the console for input instead of the dialog.\n *\n * @usage dialog.setAssociatedConsole(console);\n * @param console The associated console\n * @noshow\n */\n\tpublic void setAssociatedConsole(IOConsole console) {\n\t\tmyConsole = console;\n\t}\n\n/* Method: getAssociatedConsole() */\n/**\n * Returns the associated console for the dialog.\n *\n * @usage IOConsole console = dialog.getAssociatedConsole();\n * @return The associated console\n * @noshow\n */\n\tpublic IOConsole getAssociatedConsole() {\n\t\treturn myConsole;\n\t}\n\n/* Factory method: createModel() */\n/**\n * Creates the input dialog model in Swing or AWT style, as appropriate.\n */\n\tprotected DialogModel createModel() {\n\t\tString className = new JPanel().getClass().getName();\n\t\tif (className.startsWith(\"javax.swing.\") && Platform.isSwingAvailable()) {\n\t\t\ttry {\n\t\t\t\tClass<?> swingDialogModelClass = Class.forName(\"acm.io.SwingDialogModel\");\n\t\t\t\tClass[] types = { Class.forName(\"java.awt.Component\") };\n\t\t\t\tObject[] args = { myComponent };\n\t\t\t\tConstructor<?> con = swingDialogModelClass.getConstructor(types);\n\t\t\t\treturn (DialogModel) con.newInstance(args);\n\t\t\t} catch (Exception ex) {\n\t\t\t\treturn new AWTDialogModel(myComponent);\n\t\t\t}\n\t\t} else {\n\t\t\treturn new AWTDialogModel(myComponent);\n\t\t}\n\t}\n\n/* Private method: signalError(msg) */\n/**\n * Signals that an error occurred.  If <code>exceptionOnError</code> is <code>true</code>,\n * this method raises an exception with the specified message.  If not, this method\n * displays an error dialog and returns.\n */\n\tprivate void signalError(String msg) {\n\t\tif (exceptionOnError) throw new ErrorException(msg);\n\t\tmodel.popupErrorMessage(msg);\n\t}\n\n/* Private instance variables */\n\tprivate boolean exceptionOnError;\n\tprivate boolean allowCancel;\n\tprivate DialogModel model;\n\tprivate Component myComponent;\n\tprivate IOConsole myConsole;\n\tprivate String outputLine;\n}\n\n/* Package interface: DialogModel */\n/**\n * This interface describes the operations that a dialog must implement\n * to be used in the IODialog package.\n */\ninterface DialogModel {\n\n/* Method: popupMessage(msg) */\n/**\n * Pops up an informational message.\n */\n\tpublic void popupMessage(String msg);\n\n/* Method: popupErrorMessage(msg) */\n/**\n * Pops up an error message.\n */\n\tpublic void popupErrorMessage(String msg);\n\n/* Method: popupLineInputDialog(prompt, allowCancel) */\n/**\n * Pops up an dialog box to read a line.  Clicking the Cancel box (if present)\n * returns <code>null</code>.\n */\n\tpublic String popupLineInputDialog(String prompt, boolean allowCancel);\n\n/* Method: popupBooleanInputDialog(prompt, trueLabel, falseLabel, allowCancel) */\n/**\n * Pops up an dialog box to read a binary choice.  Clicking the Cancel box (if present)\n * returns <code>null</code>.\n */\n\tpublic Boolean popupBooleanInputDialog(String prompt, String trueLabel, String falseLabel,\n\t                                       boolean allowCancel);\n}\n\n/* Package class: SwingDialogModel */\n/**\n * This class implements the <code>DialogModel</code> interface using\n * the Swing <code>JOptionPane</code> mechanism.\n */\nclass SwingDialogModel implements DialogModel {\n\n/* Constructor: SwingDialogModel */\n/**\n * Initializes the class.\n */\n\tpublic SwingDialogModel(Component owner) {\n\t\tmyComponent = owner;\n\t\tif (!iconTested) {\n\t\t\tString lf = UIManager.getLookAndFeel().toString();\n\t\t\tif (lf.indexOf(\"AquaLookAndFeel\") == -1) {\n\t\t\t\tinputIcon = null;\n\t\t\t} else {\n\t\t\t\tinputIcon = new ImageIcon(MediaTools.createImage(AQUA_QUESTION_IMAGE));\n\t\t\t}\n\t\t\ticonTested = true;\n\t\t}\n\t}\n\n/* Method: popupMessage(msg) */\n/**\n * Pops up an informational message.\n */\n\tpublic void popupMessage(String msg) {\n\t\tJOptionPane.showMessageDialog(myComponent, msg);\n\t}\n\n/* Method: popupErrorMessage(msg) */\n/**\n * Pops up an error message.\n */\n\tpublic void popupErrorMessage(String msg) {\n\t\tJOptionPane.showMessageDialog(myComponent, msg, \"Error\", JOptionPane.ERROR_MESSAGE);\n\t}\n\n/* Method: popupLineInputDialog(prompt, allowCancel) */\n/**\n * Pops up an dialog box to read a line.  Clicking the Cancel box\n * returns <code>null</code>.\n */\n\tpublic String popupLineInputDialog(String prompt, boolean allowCancel) {\n\t\tJOptionPane pane;\n\t\tif (allowCancel) {\n\t\t\tpane = new JOptionPane(prompt, JOptionPane.QUESTION_MESSAGE, JOptionPane.OK_CANCEL_OPTION,\n\t\t\t                       inputIcon);\n\t\t\tpane.setWantsInput(true);\n\t\t} else {\n\t\t\tObject[] choices = { \"OK\" };\n\t\t\tpane = new JOptionPane(prompt, JOptionPane.QUESTION_MESSAGE, JOptionPane.OK_CANCEL_OPTION,\n\t\t\t\t                   inputIcon, choices, choices[0]);\n\t\t\tpane.setWantsInput(true);\n\t\t\tpane.setInputValue(\"\");\n\t\t}\n\t\tJDialog dialog = pane.createDialog(myComponent, \"Input\");\n\t\tdialog.setVisible(true);\n\t\tObject value = pane.getInputValue();\n\t\tif (value == JOptionPane.UNINITIALIZED_VALUE) return null;\n\t\treturn (String) value;\n\t}\n\n/* Method: popupBooleanInputDialog(prompt, trueLabel, falseLabel, allowCancel) */\n/**\n * Pops up an dialog box to read a binary choice.  Clicking the Cancel box (if present)\n * returns <code>null</code>.\n */\n\tpublic Boolean popupBooleanInputDialog(String prompt, String trueLabel, String falseLabel,\n\t                                       boolean allowCancel) {\n\t\tObject[] choices;\n\t\tif (allowCancel) {\n\t\t\tchoices = new Object[3];\n\t\t\tchoices[2] = \"Cancel\";\n\t\t} else {\n\t\t\tchoices = new Object[2];\n\t\t}\n\t\tchoices[0] = trueLabel;\n\t\tchoices[1] = falseLabel;\n\t\tString label = trueLabel + \"/\" + falseLabel + \" question\";\n\t\tint choice = JOptionPane.showOptionDialog(myComponent, prompt, label,\n\t\t                                          JOptionPane.DEFAULT_OPTION,\n\t\t                                          JOptionPane.QUESTION_MESSAGE,\n\t\t                                          inputIcon, choices, choices[0]);\n\t\tswitch (choice) {\n\t\t  case 0: return Boolean.TRUE;\n\t\t  case 1: return Boolean.FALSE;\n\t\t  default: return null;\n\t\t}\n\t}\n\n/* Static image to repair question mark bug in Aqua look and feel */\n\tprivate static final String[] AQUA_QUESTION_IMAGE = {\n\t\t\"4749463839613D003D00E60000FFFFFFE5E5E5FFCBFF8C8C8CA7A7A7ADADAD8D8D8D929292818181\",\n\t\t\"8585856F6F6F7373738888888B8B8B9A9A9A9D9D9D616161646464757575787878C2C2C295959597\",\n\t\t\"97976666666868687E7E7E808080565656575757E6E6E6E7E7E79F9F9FA0A0A05E5E5E5F5F5F6B6B\",\n\t\t\"6B6C6C6C6D6D6D6E6E6E7979797A7A7A7C7C7C7D7D7D5A5A5A5B5B5B5C5C5C5D5D5DE1E1E1E2E2E2\",\n\t\t\"E3E3E3E4E4E4AEAEAEAFAFAFB0B0B0B1B1B1E8E8E8E9E9E9EAEAEAEBEBEBECECECEDEDEDEEEEEEEF\",\n\t\t\"EFEFB2B2B2B3B3B3B4B4B4B5B5B5B6B6B6B7B7B7B8B8B8B9B9B9BABABABBBBBBBCBCBCBDBDBDBEBE\",\n\t\t\"BEBFBFBFC0C0C0C1C1C1F0F0F0F1F1F1F2F2F2F3F3F3F4F4F4F5F5F5F6F6F6F7F7F7F8F8F8F9F9F9\",\n\t\t\"FAFAFAFBFBFBFCFCFCFDFDFDFEFEFED1D1D1D2D2D2D3D3D3D4D4D4D5D5D5D6D6D6D7D7D7D8D8D8D9\",\n\t\t\"D9D9DADADADBDBDBDCDCDCDDDDDDDEDEDEDFDFDFE0E0E0C9C9C9CACACACBCBCBCCCCCCCDCDCDCECE\",\n\t\t\"CECFCFCFD0D0D0C5C5C5C6C6C6C7C7C7C8C8C8C3C3C3C4C4C4000000ED0000ED0000ED000021F904\",\n\t\t\"01000002002C000000003D003D004607FF800282838485868788898A8B863E1D6B53009293949596\",\n\t\t\"97925C1E6B8C853A3098A10825A1672DA72D6EA195566A863C655BB2B3B4B5B6B7B235A7273CB8BE\",\n\t\t\"B23B6D833D676256C7C8C9CACBC91A171ACCD1D25176378D1D5F446852DCDDDEDFDD0D21E3E303E0\",\n\t\t\"E7DE3D4B7B6B3B9D853C376D60784C4334457166393EFDFEFF007DBCA120E78C0C1D3EDE295C08CF\",\n\t\t\"8399396474309C28286180356B3AE0E011E50A972E5AA83CD18103869A36387A5044A4234D965597\",\n\t\t\"A2E80171E0C003253C6056D2C146118F345D820A1D4A746804542DD4142582CA41D1A742A3701A94\",\n\t\t\"234C96AB58B36ADDAAD5CB29025CC38AED41266145187AD85059CBB6ADDBB754FFF628E060620FDC\",\n\t\t\"BB709B8C91A828D89C2442D640194CB8B0E1C3880BEFB803C40E190F665726F2D183C70E1D9873E4\",\n\t\t\"B8C1A64E131B667888268343B2E9D3A853ABEEA4E3469A363E74AECAE2010D8C1CA86FA0A122BBF7\",\n\t\t\"2A193DDFE93073C537003C103298A1E466042A03BE63C448D40106D4EB68901A783A031583EB45B1\",\n\t\t\"94F154A6CAAF5F2F947CB97523C4A906E76FADB126E891D8FB628F9C4A3005FF7D2C60F0E5C11D57\",\n\t\t\"1468E081082688A0062D68A0E083105E71061A7CE910C31E6D54A1E1861C76E8E1872086E8A11365\",\n\t\t\"9446480E6CEC81C7142CB6E8E28B2F1A20C28C330E00E38D30DE3004181D28E21A1E407C11C59044\",\n\t\t\"1669E4901494B001FF094E1CE92491391881041831F0F50E0E318C71871133EC11C313608629E698\",\n\t\t\"6486D9C31840D4D0C41C6B7860256A385487461872DC410113491C7184117C1651001C3D042AA818\",\n\t\t\"55AE865A0E01988147113FB431460086462A000EB8496AE9A589E890830731BCC0C6A76CB4014300\",\n\t\t\"37BC8929213D04A0860C4F70E1DB1528B25169A439ACF14271C6ADB2031A32A0D6031B38E49AEB15\",\n\t\t\"6D52D4411A5808ABAC2439A8616A223BB864DC0D158880810A291C750A0A4DF896C30B8BE8B0466C\",\n\t\t\"BE7911820597DC60022A09F886067D8DA47105784551E182016028F5940AA87C40EF503298588819\",\n\t\t\"56FC4B540748B570465148B06BB0506DC05BDF0D5C546CF1FFC5185F0C042A1564CCC501A8D4E1F1\",\n\t\t\"C8158F37880E61C4A7B22D069CB280142BD312000C83ECA0861638E7ACF3CE3CF7AC4510A7480085\",\n\t\t\"CF44E73CC519837460867F4C5FE5850B2D80D0B458557CC1570E7360A1F5D65C77ED75D7206BF0F5\",\n\t\t\"D8646321C31966DD00870711B67D20830EBAEDB61B6DF0E5035AD2E4BD0C011710A0F7DFADD4F1A6\",\n\t\t\"07615020E2E18827CE610C4ED45D480E621CD1038E94B738060B34B63046E59517FE426484783086\",\n\t\t\"1160708EE304E48C7382E930F64004DDCF0EC2430C720C71C693B8CBC102392B7881BB933C30D1C4\",\n\t\t\"3EA023A25B1E41D8C1D1EFCC371F451B362CF145A10BC1F005053FE8D14199DC773FE6183F1CF1C6\",\n\t\t\"82BBC52BA443076AD4A14711F880814340F0C3FF850D3628E1C61830087C9A0FF1BC30861C7B6082\",\n\t\t\"118050001A0C01097BB0031EF6D0384139F00B6638884A3045120FC8A00D6A288318C0E0853A7810\",\n\t\t\"804220420744239A479D8A213C08C018ECD0981CEC8034279C486BD4400726FC600E908A21457C90\",\n\t\t\"0318C880073A0C222102010021FF0B4D414347436F6E2004031039000000015772697474656E2062\",\n\t\t\"7920474946436F6E76657274657220322E342E33206F66204D6F6E6461792C204D61792032352C20\",\n\t\t\"31393938003B\"\n\t};\n\n/* Static variables */\n\tprivate static boolean iconTested;\n\tprivate static Icon inputIcon;\n\n/* Private instance variables */\n\tprivate Component myComponent;\n}\n\n/* Package class: AWTDialogModel */\n/**\n * This class implements the <code>DialogModel</code> interface using\n * the AWT.\n */\nclass AWTDialogModel implements DialogModel {\n\n/* Constructor: AWTDialogModel */\n/**\n * Initializes the images for the class.\n */\n\tpublic AWTDialogModel(Component owner) {\n\t\tmyComponent = owner;\n\t\timagesReady = false;\n\t}\n\n/* Method: popupMessage(msg) */\n/**\n * Pops up an informational message.\n */\n\tpublic void popupMessage(String msg) {\n\t\tif (!imagesReady) createImages();\n\t\tFrame frame = JTFTools.getEnclosingFrame(myComponent);\n\t\tnew AWTMessageDialog(frame, \"Message\", informImage, msg).setVisible(true);\n\t}\n\n/* Method: popupErrorMessage(msg) */\n/**\n * Pops up an error message.\n */\n\tpublic void popupErrorMessage(String msg) {\n\t\tif (!imagesReady) createImages();\n\t\tFrame frame = JTFTools.getEnclosingFrame(myComponent);\n\t\tnew AWTMessageDialog(frame, \"Error\", errorImage, msg).setVisible(true);\n\t}\n\n/* Method: popupLineInputDialog(prompt, allowCancel) */\n/**\n * Pops up an dialog box to read a line.  Clicking the Cancel box (if present)\n * returns <code>null</code>.\n */\n\tpublic String popupLineInputDialog(String prompt, boolean allowCancel) {\n\t\tif (!imagesReady) createImages();\n\t\tFrame frame = JTFTools.getEnclosingFrame(myComponent);\n\t\tAWTLineInputDialog dialog = new AWTLineInputDialog(frame, prompt, questionImage,\n\t\t                                                   allowCancel);\n\t\tdialog.setVisible(true);\n\t\treturn dialog.getInput();\n\t}\n\n/* Method: popupBooleanInputDialog(prompt, trueLabel, falseLabel, allowCancel) */\n/**\n * Pops up an dialog box to read a binary choice.  Clicking the Cancel box (if present)\n * returns <code>null</code>.\n */\n\tpublic Boolean popupBooleanInputDialog(String prompt, String trueLabel, String falseLabel,\n\t                                       boolean allowCancel) {\n\t\tif (!imagesReady) createImages();\n\t\tFrame frame = JTFTools.getEnclosingFrame(myComponent);\n\t\tAWTBooleanInputDialog dialog = new AWTBooleanInputDialog(frame, prompt, questionImage,\n\t\t                                                         trueLabel, falseLabel, allowCancel);\n\t\tdialog.setVisible(true);\n\t\treturn dialog.getInput();\n\t}\n\n/* Private method: createImages */\n\tprivate void createImages() {\n\t\terrorImage = MediaTools.createImage(ERROR_IMAGE);\n\t\tinformImage = MediaTools.createImage(INFORM_IMAGE);\n\t\tquestionImage = MediaTools.createImage(QUESTION_IMAGE);\n\t\timagesReady = true;\n\t}\n\n/* Private instance variables */\n\tprivate Image errorImage;\n\tprivate Image informImage;\n\tprivate Image questionImage;\n\tprivate Component myComponent;\n\tprivate boolean imagesReady;\n\n/* Images for the AWT dialogs */\n\tprivate static final String[] ERROR_IMAGE = {\n\t\t\"47494638396120002000F70000FFFFFF980098339999989800111111222222000054CBFFCB003298\",\n\t\t\"0033660033CC0033FE00323266330066660000659800989800CC9900FE99329800659800CC0099FE\",\n\t\t\"0098659898999999CC9900FE98009800329800659900CC9800FE3399CB3399FF9999339898659832\",\n\t\t\"0098650099339998659833CB9833FF9999CC0099FE00336699656698CC9898FF9999323200336600\",\n\t\t\"32003233006632009833339965009866339900663300983200666600986500CC3300FE3200CC6600\",\n\t\t\"FE65CCCC98CCFF99FFCC99FFFF993300CC3200FE6600CC6500FECC0033CC0066FE0032FE00653399\",\n\t\t\"33339966669933669865CC00CCCB00FEFE00CBFE00FE6699CC6598FF9898CC9999FFCB9833CC9966\",\n\t\t\"FF9933FF9865333333326532323265326565660033653232660066653265CC3300CC6600FE3200FE\",\n\t\t\"65000066CC0099CC0066FE0098FE00CCCC00FECB00CCFE00FEFE33CC0033FE0066CC0066FE00CB33\",\n\t\t\"98CC6699FF3399FF659866CC9965FF9898CC9899FF99CCCC00CCFE00FECB00FEFE00993333996633\",\n\t\t\"9933669865659833CB9966CC9933FF9865FF33CBCB33FFCC33CCFF33FFFF99CB3399FF3399CC6698\",\n\t\t\"FF65CC98CCCCCCCCCC99FFCBCBFFFF99CCFFCBCBFF99FFFFCBFF3333CB3366CB3333FF3366FF6533\",\n\t\t\"CB6666CC6633FF6565FFCB3333CB6533CB3365CC6666FF3333FF6633FF3366FF656533CB3333FF33\",\n\t\t\"33CB6633FF6666CB3366FF3366CC6665FF65CB33CBCC66CCCC33FFCC65FFFF33CCFF65CCFF33FFFF\",\n\t\t\"65FF66CCCC65FFCC65CCFF65FFFF98CCCC99FFCC99CCFF99FFFFCBCB33CCFF33CCCC66CCFF65FFCC\",\n\t\t\"33FFFF33FFCC65FFFF65444444656532DDDDDDCBFFFFFFFFCBEEEEEE100000980000001000660000\",\n\t\t\"000098000066777777888888AAAAAABBBBBB5555556666660000100000224400005400000000CC00\",\n\t\t\"00DC0000EE0000FE00003200004400880000980000AA0000BA0000CC0000DC0000EE0000FE00CC00\",\n\t\t\"00DC0000EE0000FE0000004400005400006600007600220000320000AA0000BA0000002200003200\",\n\t\t\"7600008800000000AA0000BA00007600008800000021F90401000096002C0000000020002000C7FF\",\n\t\t\"FFFF980098339999989800111111222222000054CBFFCB0032980033660033CC0033FE0032326633\",\n\t\t\"0066660000659800989800CC9900FE99329800659800CC0099FE0098659898999999CC9900FE9800\",\n\t\t\"9800329800659900CC9800FE3399CB3399FF99993398986598320098650099339998659833CB9833\",\n\t\t\"FF9999CC0099FE00336699656698CC9898FF99993232003366003200323300663200983333996500\",\n\t\t\"9866339900663300983200666600986500CC3300FE3200CC6600FE65CCCC98CCFF99FFCC99FFFF99\",\n\t\t\"3300CC3200FE6600CC6500FECC0033CC0066FE0032FE0065339933339966669933669865CC00CCCB\",\n\t\t\"00FEFE00CBFE00FE6699CC6598FF9898CC9999FFCB9833CC9966FF9933FF98653333333265323232\",\n\t\t\"65326565660033653232660066653265CC3300CC6600FE3200FE65000066CC0099CC0066FE0098FE\",\n\t\t\"00CCCC00FECB00CCFE00FEFE33CC0033FE0066CC0066FE00CB3398CC6699FF3399FF659866CC9965\",\n\t\t\"FF9898CC9899FF99CCCC00CCFE00FECB00FEFE009933339966339933669865659833CB9966CC9933\",\n\t\t\"FF9865FF33CBCB33FFCC33CCFF33FFFF99CB3399FF3399CC6698FF65CC98CCCCCCCCCC99FFCBCBFF\",\n\t\t\"FF99CCFFCBCBFF99FFFFCBFF3333CB3366CB3333FF3366FF6533CB6666CC6633FF6565FFCB3333CB\",\n\t\t\"6533CB3365CC6666FF3333FF6633FF3366FF656533CB3333FF3333CB6633FF6666CB3366FF3366CC\",\n\t\t\"6665FF65CB33CBCC66CCCC33FFCC65FFFF33CCFF65CCFF33FFFF65FF66CCCC65FFCC65CCFF65FFFF\",\n\t\t\"98CCCC99FFCC99CCFF99FFFFCBCB33CCFF33CCCC66CCFF65FFCC33FFFF33FFCC65FFFF6544444465\",\n\t\t\"6532DDDDDDCBFFFFFFFFCBEEEEEE100000980000001000660000000098000066777777888888AAAA\",\n\t\t\"AABBBBBB5555556666660000100000224400005400000000CC0000DC0000EE0000FE000032000044\",\n\t\t\"00880000980000AA0000BA0000CC0000DC0000EE0000FE00CC0000DC0000EE0000FE000000440000\",\n\t\t\"5400006600007600220000320000AA0000BA00000022000032007600008800000000AA0000BA0000\",\n\t\t\"7600008800000008E5002D091C28909DC1830813B22348D0202D85D5AA294C185121872EEC1E4E44\",\n\t\t\"18B1E34676EBD85DB48430E4C793074736CC88F22387861A377A3438F3A04991186352AC08916742\",\n\t\t\"950339B404F9B30BC3A30E87A63C5A90A55297057572F43955A2C59C2D3B529D78D1A94C9F350DDE\",\n\t\t\"EC2A95A6D58F5B71067DBA112853A11CE2CA9D4BD72853A41969E9DDCB77AFC8BB2BCBB67CC93429\",\n\t\t\"DB9F810F43F55A156D5AB236779E353B1921E4931EC35E657C53F260AC982B6A2ECAB2F341CDA30D\",\n\t\t\"5EF6FCB5324EC68A23ABB5243476D1A3B5893E5DE716B76CB16DED020EDAA5B8F1E3C8EF06040021\",\n\t\t\"FF0B4D414347436F6E2004031039000000015772697474656E20627920474946436F6E7665727465\",\n\t\t\"7220322E342E33206F66204D6F6E6461792C204D61792032352C2031393938003B\"\n\t};\n\n\tprivate static final String[] INFORM_IMAGE = {\n\t\t\"47494638396120002000F70000FFFFFF980098339999989800111111222222000054CBFFCB003298\",\n\t\t\"0033660033CC0033FE00323266330066660000659800989800CC9900FE99329800659800CC0099FE\",\n\t\t\"0098659898999999CC9900FE98009800329800659900CC9800FE3399CB3399FF9999339898659832\",\n\t\t\"0098650099339998659833CB9833FF9999CC0099FE00336699656698CC9898FF9999323200336600\",\n\t\t\"32003233006632009833339965009866339900663300983200666600986500CC3300FE3200CC6600\",\n\t\t\"FE65CCCC98CCFF99FFCC99FFFF993300CC3200FE6600CC6500FECC0033CC0066FE0032FE00653399\",\n\t\t\"33339966669933669865CC00CCCB00FEFE00CBFE00FE6699CC6598FF9898CC9999FFCB9833CC9966\",\n\t\t\"FF9933FF9865333333326532323265326565660033653232660066653265CC3300CC6600FE3200FE\",\n\t\t\"65000066CC0099CC0066FE0098FE00CCCC00FECB00CCFE00FEFE33CC0033FE0066CC0066FE00CB33\",\n\t\t\"98CC6699FF3399FF659866CC9965FF9898CC9899FF99CCCC00CCFE00FECB00FEFE00993333996633\",\n\t\t\"9933669865659833CB9966CC9933FF9865FF33CBCB33FFCC33CCFF33FFFF99CB3399FF3399CC6698\",\n\t\t\"FF65CC98CCCCCCCCCC99FFCBCBFFFF99CCFFCBCBFF99FFFFCBFF3333CB3366CB3333FF3366FF6533\",\n\t\t\"CB6666CC6633FF6565FFCB3333CB6533CB3365CC6666FF3333FF6633FF3366FF656533CB3333FF33\",\n\t\t\"33CB6633FF6666CB3366FF3366CC6665FF65CB33CBCC66CCCC33FFCC65FFFF33CCFF65CCFF33FFFF\",\n\t\t\"65FF66CCCC65FFCC65CCFF65FFFF98CCCC99FFCC99CCFF99FFFFCBCB33CCFF33CCCC66CCFF65FFCC\",\n\t\t\"33FFFF33FFCC65FFFF65444444656532DDDDDDCBFFFFFFFFCBEEEEEE100000980000001000660000\",\n\t\t\"000098000066777777888888AAAAAABBBBBB5555556666660000100000224400005400000000CC00\",\n\t\t\"00DC0000EE0000FE00003200004400880000980000AA0000BA0000CC0000DC0000EE0000FE00CC00\",\n\t\t\"00DC0000EE0000FE0000004400005400006600007600220000320000AA0000BA0000002200003200\",\n\t\t\"7600008800000000AA0000BA00007600008800000021F90401000096002C0000000020002000C7FF\",\n\t\t\"FFFF980098339999989800111111222222000054CBFFCB0032980033660033CC0033FE0032326633\",\n\t\t\"0066660000659800989800CC9900FE99329800659800CC0099FE0098659898999999CC9900FE9800\",\n\t\t\"9800329800659900CC9800FE3399CB3399FF99993398986598320098650099339998659833CB9833\",\n\t\t\"FF9999CC0099FE00336699656698CC9898FF99993232003366003200323300663200983333996500\",\n\t\t\"9866339900663300983200666600986500CC3300FE3200CC6600FE65CCCC98CCFF99FFCC99FFFF99\",\n\t\t\"3300CC3200FE6600CC6500FECC0033CC0066FE0032FE0065339933339966669933669865CC00CCCB\",\n\t\t\"00FEFE00CBFE00FE6699CC6598FF9898CC9999FFCB9833CC9966FF9933FF98653333333265323232\",\n\t\t\"65326565660033653232660066653265CC3300CC6600FE3200FE65000066CC0099CC0066FE0098FE\",\n\t\t\"00CCCC00FECB00CCFE00FEFE33CC0033FE0066CC0066FE00CB3398CC6699FF3399FF659866CC9965\",\n\t\t\"FF9898CC9899FF99CCCC00CCFE00FECB00FEFE009933339966339933669865659833CB9966CC9933\",\n\t\t\"FF9865FF33CBCB33FFCC33CCFF33FFFF99CB3399FF3399CC6698FF65CC98CCCCCCCCCC99FFCBCBFF\",\n\t\t\"FF99CCFFCBCBFF99FFFFCBFF3333CB3366CB3333FF3366FF6533CB6666CC6633FF6565FFCB3333CB\",\n\t\t\"6533CB3365CC6666FF3333FF6633FF3366FF656533CB3333FF3333CB6633FF6666CB3366FF3366CC\",\n\t\t\"6665FF65CB33CBCC66CCCC33FFCC65FFFF33CCFF65CCFF33FFFF65FF66CCCC65FFCC65CCFF65FFFF\",\n\t\t\"98CCCC99FFCC99CCFF99FFFFCBCB33CCFF33CCCC66CCFF65FFCC33FFFF33FFCC65FFFF6544444465\",\n\t\t\"6532DDDDDDCBFFFFFFFFCBEEEEEE100000980000001000660000000098000066777777888888AAAA\",\n\t\t\"AABBBBBB5555556666660000100000224400005400000000CC0000DC0000EE0000FE000032000044\",\n\t\t\"00880000980000AA0000BA0000CC0000DC0000EE0000FE00CC0000DC0000EE0000FE000000440000\",\n\t\t\"5400006600007600220000320000AA0000BA00000022000032007600008800000000AA0000BA0000\",\n\t\t\"7600008800000008A0002D091C48B0A0C1830809F659B8F09F43870C17268C4891E2C38A18FB4C8C\",\n\t\t\"F81062C484200536F418D260C691FF4E6A44A8F2E2C9920531C29CC9706648861D534AB46909634E\",\n\t\t\"992C55F671A932A650A22F830AADC8B3274A8F2B9B9ADC291564D4AA072962353A14EA568E1D3FF2\",\n\t\t\"ACF8536BC98C65992A450B3523D7966D933A3D1AD7AD42B83AE54EF559B7E659B27D9B8245FA15A5\",\n\t\t\"DFAD22C5228EC933200021FF0B4D414347436F6E2004031039000000015772697474656E20627920\",\n\t\t\"474946436F6E76657274657220322E342E33206F66204D6F6E6461792C204D61792032352C203139\",\n\t\t\"3938003B\"\n\t};\n\n\tprivate static final String[] QUESTION_IMAGE = {\n\t\t\"47494638396120002000F70000FFFFFF980098339999989800111111222222000054CBFFCB003298\",\n\t\t\"0033660033CC0033FE00323266330066660000659800989800CC9900FE99329800659800CC0099FE\",\n\t\t\"0098659898999999CC9900FE98009800329800659900CC9800FE3399CB3399FF9999339898659832\",\n\t\t\"0098650099339998659833CB9833FF9999CC0099FE00336699656698CC9898FF9999323200336600\",\n\t\t\"32003233006632009833339965009866339900663300983200666600986500CC3300FE3200CC6600\",\n\t\t\"FE65CCCC98CCFF99FFCC99FFFF993300CC3200FE6600CC6500FECC0033CC0066FE0032FE00653399\",\n\t\t\"33339966669933669865CC00CCCB00FEFE00CBFE00FE6699CC6598FF9898CC9999FFCB9833CC9966\",\n\t\t\"FF9933FF9865333333326532323265326565660033653232660066653265CC3300CC6600FE3200FE\",\n\t\t\"65000066CC0099CC0066FE0098FE00CCCC00FECB00CCFE00FEFE33CC0033FE0066CC0066FE00CB33\",\n\t\t\"98CC6699FF3399FF659866CC9965FF9898CC9899FF99CCCC00CCFE00FECB00FEFE00993333996633\",\n\t\t\"9933669865659833CB9966CC9933FF9865FF33CBCB33FFCC33CCFF33FFFF99CB3399FF3399CC6698\",\n\t\t\"FF65CC98CCCCCCCCCC99FFCBCBFFFF99CCFFCBCBFF99FFFFCBFF3333CB3366CB3333FF3366FF6533\",\n\t\t\"CB6666CC6633FF6565FFCB3333CB6533CB3365CC6666FF3333FF6633FF3366FF656533CB3333FF33\",\n\t\t\"33CB6633FF6666CB3366FF3366CC6665FF65CB33CBCC66CCCC33FFCC65FFFF33CCFF65CCFF33FFFF\",\n\t\t\"65FF66CCCC65FFCC65CCFF65FFFF98CCCC99FFCC99CCFF99FFFFCBCB33CCFF33CCCC66CCFF65FFCC\",\n\t\t\"33FFFF33FFCC65FFFF65444444656532DDDDDDCBFFFFFFFFCBEEEEEE100000980000001000660000\",\n\t\t\"000098000066777777888888AAAAAABBBBBB5555556666660000100000224400005400000000CC00\",\n\t\t\"00DC0000EE0000FE00003200004400880000980000AA0000BA0000CC0000DC0000EE0000FE00CC00\",\n\t\t\"00DC0000EE0000FE0000004400005400006600007600220000320000AA0000BA0000002200003200\",\n\t\t\"7600008800000000AA0000BA00007600008800000021F90401000096002C0000000020002000C7FF\",\n\t\t\"FFFF980098339999989800111111222222000054CBFFCB0032980033660033CC0033FE0032326633\",\n\t\t\"0066660000659800989800CC9900FE99329800659800CC0099FE0098659898999999CC9900FE9800\",\n\t\t\"9800329800659900CC9800FE3399CB3399FF99993398986598320098650099339998659833CB9833\",\n\t\t\"FF9999CC0099FE00336699656698CC9898FF99993232003366003200323300663200983333996500\",\n\t\t\"9866339900663300983200666600986500CC3300FE3200CC6600FE65CCCC98CCFF99FFCC99FFFF99\",\n\t\t\"3300CC3200FE6600CC6500FECC0033CC0066FE0032FE0065339933339966669933669865CC00CCCB\",\n\t\t\"00FEFE00CBFE00FE6699CC6598FF9898CC9999FFCB9833CC9966FF9933FF98653333333265323232\",\n\t\t\"65326565660033653232660066653265CC3300CC6600FE3200FE65000066CC0099CC0066FE0098FE\",\n\t\t\"00CCCC00FECB00CCFE00FEFE33CC0033FE0066CC0066FE00CB3398CC6699FF3399FF659866CC9965\",\n\t\t\"FF9898CC9899FF99CCCC00CCFE00FECB00FEFE009933339966339933669865659833CB9966CC9933\",\n\t\t\"FF9865FF33CBCB33FFCC33CCFF33FFFF99CB3399FF3399CC6698FF65CC98CCCCCCCCCC99FFCBCBFF\",\n\t\t\"FF99CCFFCBCBFF99FFFFCBFF3333CB3366CB3333FF3366FF6533CB6666CC6633FF6565FFCB3333CB\",\n\t\t\"6533CB3365CC6666FF3333FF6633FF3366FF656533CB3333FF3333CB6633FF6666CB3366FF3366CC\",\n\t\t\"6665FF65CB33CBCC66CCCC33FFCC65FFFF33CCFF65CCFF33FFFF65FF66CCCC65FFCC65CCFF65FFFF\",\n\t\t\"98CCCC99FFCC99CCFF99FFFFCBCB33CCFF33CCCC66CCFF65FFCC33FFFF33FFCC65FFFF6544444465\",\n\t\t\"6532DDDDDDCBFFFFFFFFCBEEEEEE100000980000001000660000000098000066777777888888AAAA\",\n\t\t\"AABBBBBB5555556666660000100000224400005400000000CC0000DC0000EE0000FE000032000044\",\n\t\t\"00880000980000AA0000BA0000CC0000DC0000EE0000FE00CC0000DC0000EE0000FE000000440000\",\n\t\t\"5400006600007600220000320000AA0000BA00000022000032007600008800000000AA0000BA0000\",\n\t\t\"7600008800000008A9002D091C485060AE83080F165C383021C27F1021268C28D1612E831633E6A2\",\n\t\t\"A8D121C68E1B2B82BCB8502345911E0982E478F024484B235BA27C593263C48E0C6BC64C98F3E3C4\",\n\t\t\"934033AAB4E952E64DA13B1FB24CDAF1E84E98319D8E2CD874A9D09E0D9F62659874EB50A608B112\",\n\t\t\"053A5321558B568B5ACC8A56ADDA9426DD5AE50936A4D4BA3FEFE2555A762F5FA65047EAD5C8D66F\",\n\t\t\"CAC26D07F3E43AB6AF59B175BD325EBB35200021FF0B4D414347436F6E2004031039000000015772\",\n\t\t\"697474656E20627920474946436F6E76657274657220322E342E33206F66204D6F6E6461792C204D\",\n\t\t\"61792032352C2031393938003B\"\n\t};\n\n}\n\n/* Package class: AWTDialog */\n/**\n * This class acts as the common foundation for the various AWT dialog boxes\n * that are displayed as part of the <code>IODialog</code> operation.\n */\nabstract class AWTDialog extends Dialog implements ActionListener {\n\n/* Constant: WIDTH */\n/**\n * The standard width of the AWT dialog box.\n */\n\tpublic static final int WIDTH = 260;\n\n/* Constant: HEIGHT */\n/**\n * The standard height of the AWT dialog box.\n */\n\tpublic static final int HEIGHT = 115;\n\n/* Constructor: AWTDialog(frame, title, icon) */\n/**\n * Creates the standard AWT dialog.  Subclasses change the behavior by\n * overriding the various abstract methods.\n */\n\tpublic AWTDialog(Frame frame, String title, Image icon, boolean allowCancel) {\n\t\tsuper(frame, title, true);\n\t\tsetLayout(new BorderLayout());\n\t\tPanel topPanel = new Panel();\n\t\tPanel buttonPanel = new Panel();\n\t\tPanel dataPanel = new Panel();\n\t\tPanel marginPanel = new Panel();\n\t\ttopPanel.setLayout(new BorderLayout());\n\t\tbuttonPanel.setLayout(new FlowLayout());\n\t\tdataPanel.setLayout(new BorderLayout());\n\t\tmarginPanel.setLayout(new BorderLayout());\n\t\tmarginPanel.add(new Label(\" \"));\n\t\tmessageArea = new AWTMessageCanvas();\n\t\tdataPanel.add(messageArea, BorderLayout.CENTER);\n\t\tinitButtonPanel(buttonPanel, allowCancel);\n\t\tinitDataPanel(dataPanel);\n\t\ttopPanel.add(new AWTIconCanvas(icon), BorderLayout.WEST);\n\t\ttopPanel.add(dataPanel, BorderLayout.CENTER);\n\t\tadd(topPanel, BorderLayout.CENTER);\n\t\tadd(buttonPanel, BorderLayout.SOUTH);\n\t\tadd(marginPanel, BorderLayout.EAST);\n\t\tRectangle bounds = frame.getBounds();\n\t\tint cx = bounds.x + bounds.width / 2;\n\t\tint cy = bounds.y + bounds.height / 2;\n\t\tsetBounds(cx - WIDTH / 2, cy - HEIGHT / 2, WIDTH, HEIGHT);\n\t\tvalidate();\n\t}\n\n/* Abstract method: initButtonPanel(buttonPanel, allowCancel) */\n/**\n * Initializes the contents of the button panel.  Subclasses override this\n * method to initialize the buttons for that subclass.  The layout of the\n * button panel is <code>FlowLayout</code> with right alignment.\n */\n\tpublic abstract void initButtonPanel(Panel buttonPanel, boolean allowCancel);\n\n/* Abstract method: initDataPanel(dataPanel) */\n/**\n * Initializes the contents of the data panel.  Subclasses override this\n * method to initialize the format for that subclass.  The layout of the\n * data panel is <code>BorderLayout</code>.\n */\n\tpublic abstract void initDataPanel(Panel dataPanel);\n\n/* Abstract method: actionPerformed(ActionEvent e) */\n/**\n * Responds to actions in the button panel.  Subclasses override this\n * method to respond to these actions as appropriate to the subclass.\n */\n\tpublic abstract void actionPerformed(ActionEvent e);\n\n/* Method: setMessage(msg) */\n/**\n * Sets the text of the message.\n */\n\tpublic void setMessage(String msg) {\n\t\tmessageArea.setMessage(msg);\n\t}\n\n/* Private instance variables */\n\tprivate AWTMessageCanvas messageArea;\n\n}\n\n/* Package class: AWTMessageDialog */\n/**\n * This class displays a message dialog in the AWT world.\n */\nclass AWTMessageDialog extends AWTDialog {\n\n/* Constructor: AWTMessageDialog(frame, title, icon, msg) */\n/**\n * Creates an <code>AWTMessageDialog</code>.\n */\n\tpublic AWTMessageDialog(Frame frame, String title, Image icon, String msg) {\n\t\tsuper(frame, title, icon, false);\n\t\tsetMessage(msg);\n\t}\n\n/* Method: initButtonPanel(buttonPanel, allowCancel) */\n/**\n * Initializes the contents of the button panel.\n */\n\tpublic void initButtonPanel(Panel buttonPanel, boolean allowCancel) {\n\t\tokButton = new Button(\"OK\");\n\t\tokButton.addActionListener(this);\n\t\tbuttonPanel.add(okButton);\n\t}\n\n/* Method: initDataPanel(dataPanel) */\n/**\n * Initializes the contents of the data panel.\n */\n\tpublic void initDataPanel(Panel dataPanel) {\n\t\t/* Empty */\n\t}\n\n/* Method: actionPerformed(ActionEvent e) */\n/**\n * Responds to actions in the button panel.\n */\n\tpublic void actionPerformed(ActionEvent e) {\n\t\tif (e.getSource() == okButton) {\n\t\t\tsetVisible(false);\n\t\t}\n\t}\n\n/* Private instance variables */\n\tprivate Button okButton;\n}\n\n/* Package class: AWTLineInputDialog */\n/**\n * This class requests a line of input in the AWT world.\n */\nclass AWTLineInputDialog extends AWTDialog {\n\n/* Constructor: AWTLineInputDialog(frame, msg, icon) */\n/**\n * Creates an <code>AWTLineInputDialog</code>.\n */\n\tpublic AWTLineInputDialog(Frame frame, String msg, Image icon, boolean allowCancel) {\n\t\tsuper(frame, \"Input\", icon, allowCancel);\n\t\tsetMessage(msg);\n\t}\n\n/* Method: getInput() */\n/**\n * Returns the input line after the dialog has been dismissed.  This value\n * is either the string entered by the user or <code>null</code> if the\n * cancel button is entered.\n */\n\tpublic String getInput() {\n\t\treturn input;\n\t}\n\n/* Method: setVisible(flag) */\n/**\n * Overrides the standard dialog <code>setVisible</code> method to ensure that\n * the text line gets the focus.\n */\n\tpublic void setVisible(boolean flag) {\n\t\tsuper.setVisible(flag);\n\t\tif (flag) textLine.requestFocus();\n\t}\n\n/* Method: initButtonPanel(buttonPanel, allowCancel) */\n/**\n * Initializes the contents of the button panel.\n */\n\tpublic void initButtonPanel(Panel buttonPanel, boolean allowCancel) {\n\t\tokButton = new Button(\"OK\");\n\t\tokButton.addActionListener(this);\n\t\tbuttonPanel.add(okButton);\n\t\tif (allowCancel) {\n\t\t\tcancelButton = new Button(\"Cancel\");\n\t\t\tcancelButton.addActionListener(this);\n\t\t\tbuttonPanel.add(cancelButton);\n\t\t}\n\t}\n\n/* Method: initDataPanel(dataPanel) */\n/**\n * Initializes the contents of the data panel.\n */\n\tpublic void initDataPanel(Panel dataPanel) {\n\t\ttextLine = new TextField();\n\t\ttextLine.addActionListener(this);\n\t\tdataPanel.add(textLine, BorderLayout.SOUTH);\n\t}\n\n/* Method: actionPerformed(ActionEvent e) */\n/**\n * Responds to actions in the button panel.\n */\n\tpublic void actionPerformed(ActionEvent e) {\n\t\tComponent source = (Component) e.getSource();\n\t\tif (source == okButton || source == textLine) {\n\t\t\tinput = textLine.getText();\n\t\t\tsetVisible(false);\n\t\t} else if (source == cancelButton) {\n\t\t\tinput = null;\n\t\t\tsetVisible(false);\n\t\t}\n\t}\n\n/* Private instance variables */\n\tprivate Button cancelButton, okButton;\n\tprivate TextField textLine;\n\tprivate String input;\n}\n\n/* Package class: AWTBooleanInputDialog */\n/**\n * This class requests boolean input in the AWT world.\n */\nclass AWTBooleanInputDialog extends AWTDialog {\n\n/* Constructor: AWTBooleanInputDialog(frame, msg, icon, trueLabel, falseLabel) */\n/**\n * Creates an <code>AWTLineInputDialog</code>.\n */\n\tpublic AWTBooleanInputDialog(Frame frame, String msg, Image icon,\n\t                             String trueLabel, String falseLabel, boolean allowCancel) {\n\t\tsuper(frame, \"Input\", icon, allowCancel);\n\t\tsetMessage(msg);\n\t\ttrueButton.setLabel(trueLabel);\n\t\tfalseButton.setLabel(falseLabel);\n\t}\n\n/* Method: getInput() */\n/**\n * Returns the boolean input after the dialog has been dismissed.  This value\n * is either <code>Boolean.TRUE</code>, <code>Boolean.FALSE</code>,\n * or <code>null</code> if the cancel button is entered.\n */\n\tpublic Boolean getInput() {\n\t\treturn input;\n\t}\n\n/* Method: initButtonPanel(buttonPanel, allowCancel) */\n/**\n * Initializes the contents of the button panel.\n */\n\tpublic void initButtonPanel(Panel buttonPanel, boolean allowCancel) {\n\t\ttrueButton = new Button(\"True\");\n\t\ttrueButton.addActionListener(this);\n\t\tbuttonPanel.add(trueButton);\n\t\tfalseButton = new Button(\"False\");\n\t\tfalseButton.addActionListener(this);\n\t\tbuttonPanel.add(falseButton);\n\t\tif (allowCancel) {\n\t\t\tcancelButton = new Button(\"Cancel\");\n\t\t\tcancelButton.addActionListener(this);\n\t\t\tbuttonPanel.add(cancelButton);\n\t\t}\n\t}\n\n/* Method: initDataPanel(dataPanel) */\n/**\n * Initializes the contents of the data panel.\n */\n\tpublic void initDataPanel(Panel dataPanel) {\n\t\t/* Empty */\n\t}\n\n/* Method: actionPerformed(ActionEvent e) */\n/**\n * Responds to actions in the button panel.\n */\n\tpublic void actionPerformed(ActionEvent e) {\n\t\tComponent source = (Component) e.getSource();\n\t\tif (source == trueButton) {\n\t\t\tinput = Boolean.TRUE;\n\t\t\tsetVisible(false);\n\t\t} else if (source == falseButton) {\n\t\t\tinput = Boolean.FALSE;\n\t\t\tsetVisible(false);\n\t\t} else if (source == cancelButton) {\n\t\t\tinput = null;\n\t\t\tsetVisible(false);\n\t\t}\n\t}\n\n/* Private instance variables */\n\tprivate Button trueButton, falseButton, cancelButton;\n\tprivate Boolean input;\n}\n\n/* Package class: AWTIconCanvas */\n/**\n * This class displays an icon in the AWT world.\n */\nclass AWTIconCanvas extends Canvas {\n\n/* Constructor: AWTIconCanvas(icon) */\n/**\n * Creates an canvas for displaying an icon.\n */\n\tpublic AWTIconCanvas(Image icon) {\n\t\tmyIcon = icon;\n\t}\n\n/* Method: getMinimumSize() */\n/**\n * Returns the minimum size of the icon.\n */\n\tpublic Dimension getMinimumSize() {\n\t\treturn new Dimension(48, 48);\n\t}\n\n/* Method: getPreferredSize() */\n/**\n * Returns the preferred size of the icon.\n */\n\tpublic Dimension getPreferredSize() {\n\t\treturn getMinimumSize();\n\t}\n\n/* Method: paint(g) */\n/**\n * Draws the icon on the specified <code>Graphics</code> context.\n */\n\tpublic void paint(Graphics g) {\n\t\tg.drawImage(myIcon, 8, 8, this);\n\t}\n\n/* Private instance variables */\n\tprivate Image myIcon;\n}\n\n/* Package class: AWTMessageCanvas */\n/**\n * This class manages the message area of a dialog in the AWT world.\n */\nclass AWTMessageCanvas extends Canvas {\n\n/* Constant: MARGIN */\n/**\n * The margin for text display inside the message area.\n */\n\tpublic static final int MARGIN = 8;\n\n/* Constant: MESSAGE_FONT */\n/**\n * The font to use in the message box.\n */\n\tpublic static final Font MESSAGE_FONT = new Font(\"Dialog\", Font.PLAIN, 12);\n\n/* Constructor: AWTMessageCanvas() */\n/**\n * Creates an canvas for displaying a message in a <code>IODialog</code> box.\n */\n\tpublic AWTMessageCanvas() {\n\t\tsetFont(MESSAGE_FONT);\n\t}\n\n/* Method: setMessage(msg) */\n/**\n * Sets the text of the message.\n */\n\tpublic void setMessage(String msg) {\n\t\tmessage = msg;\n\t}\n\n/* Method: paint(g) */\n/**\n * Draws the message on the specified <code>Graphics</code> context.\n */\n\tpublic void paint(Graphics g) {\n\t\tFontMetrics fm = g.getFontMetrics();\n\t\tint x = MARGIN;\n\t\tint y = MARGIN + fm.getAscent();\n\t\tint limit = getSize().width - MARGIN;\n\t\tStringTokenizer tokenizer = new StringTokenizer(message, \" \", true);\n\t\twhile (tokenizer.hasMoreTokens()) {\n\t\t\tString token = tokenizer.nextToken();\n\t\t\tint width = fm.stringWidth(token);\n\t\t\tif (x + width > limit) {\n\t\t\t\tx = MARGIN;\n\t\t\t\ty += fm.getHeight();\n\t\t\t\tif (token.equals(\" \")) continue;\n\t\t\t}\n\t\t\tg.drawString(token, x, y);\n\t\t\tx += width;\n\t\t}\n\t}\n\n/* Private instance variables */\n\tprivate String message;\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/io/IOModel.java",
    "content": "/*\n * @(#)IOModel.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\npackage acm.io;\n\n/* Interface: IOModel */\n/**\n * The <code>IOModel</code> interface defines the input and output methods\n * supported by both the <a href=\"IOConsole.html\"><code>IOConsole</code></a>\n * and <a href=\"IODialog.html\"><code>IODialog</code></a> classes.\n */\npublic interface IOModel {\n\n/* Method: print(value) */\n/**\n * Displays the argument value, allowing for the possibility of more\n * output on the same line.  The <code>print</code> method is overloaded\n * so that <code>value</code> can be of any type.\n *\n * @usage model.print(value);\n * @param value The value to be displayed\n */\n\tpublic void print(String value);\n\n/**\n * Makes sure that <code>print</code> can display a <code>boolean</code>.\n * @noshow\n */\n\tpublic void print(boolean x);\n\n/**\n * Makes sure that <code>print</code> can display a <code>char</code>.\n * @noshow\n */\n\tpublic void print(char x);\n\n/**\n * Makes sure that <code>print</code> can display a <code>double</code>.\n * @noshow\n */\n\tpublic void print(double x);\n\n/**\n * Makes sure that <code>print</code> can display a <code>float</code>.\n * @noshow\n */\n\tpublic void print(float x);\n\n/**\n * Makes sure that <code>print</code> can display an <code>int</code>.\n * @noshow\n */\n\tpublic void print(int x);\n\n/**\n * Makes sure that <code>print</code> can display a <code>long</code>.\n * @noshow\n */\n\tpublic void print(long x);\n\n/**\n * Makes sure that <code>print</code> can display an <code>Object</code>.\n * @noshow\n */\n\tpublic void print(Object x);\n\n/* Method: println() */\n/**\n * Completes the output line.\n *\n * @usage io.println();\n */\n\tpublic void println();\n\n/* Method: println(value) */\n/**\n * Displays the value and then completes the line.  The <code>println</code>\n * method is overloaded so that <code>value</code> can be of any type.\n *\n * @usage io.println(value);\n * @param value The value to be displayed\n */\n\tpublic void println(String value);\n\n/**\n * Makes sure that <code>println</code> can display a <code>boolean</code>.\n * @noshow\n */\n\tpublic void println(boolean x);\n\n/**\n * Makes sure that <code>println</code> can display a <code>char</code>.\n * @noshow\n */\n\tpublic void println(char x);\n\n/**\n * Makes sure that <code>println</code> can display a <code>double</code>.\n * @noshow\n */\n\tpublic void println(double x);\n\n/**\n * Makes sure that <code>println</code> can display a <code>float</code>.\n * @noshow\n */\n\tpublic void println(float x);\n\n/**\n * Makes sure that <code>println</code> can display an <code>int</code>.\n * @noshow\n */\n\tpublic void println(int x);\n\n/**\n * Makes sure that <code>println</code> can display a <code>long</code>.\n * @noshow\n */\n\tpublic void println(long x);\n\n/**\n * Makes sure that <code>println</code> can display an <code>Object</code>.\n * @noshow\n */\n\tpublic void println(Object x);\n\n/* Method: showErrorMessage(msg) */\n/**\n * Displays the error message.\n *\n * @usage io.showErrorMessage(msg);\n * @param msg The error msg to be displayed\n */\n\tpublic void showErrorMessage(String msg);\n\n/* Method: readLine() */\n/**\n * Reads and returns a line of input, without including the end-of-line\n * characters that terminate the input.\n *\n * @usage String str = io.readLine();\n * @return The next line of input as a <code>String</code>\n */\n\tpublic String readLine();\n\n/* Method: readLine(prompt) */\n/**\n * Prompts the user to enter a line of text, which is then returned\n * as the value of this method.  The end-of-line characters that terminate\n * the input are not included in the returned string.\n *\n * @usage String str = io.readLine(prompt);\n * @param prompt The prompt string to display to the user\n * @return The next line of input as a <code>String</code>\n */\n\tpublic String readLine(String prompt);\n\n/* Method: readInt() */\n/**\n * Reads and returns an integer value from the user.\n *\n * @usage int n = io.readInt();\n * @return The value of the input interpreted as a decimal integer\n */\n\tpublic int readInt();\n\n/* Method: readInt(low, high) */\n/**\n * Reads and returns an integer value from the user, which is constrained to\n * be within the specified inclusive range.\n *\n * @usage int n = io.readInt(low, high);\n * @param low The lowest value in the permitted range\n * @param high The highest value in the permitted range\n * @return The value of the input interpreted as a decimal integer\n */\n\tpublic int readInt(int low, int high);\n\n/* Method: readInt(prompt) */\n/**\n * Prompts the user to enter an integer, which is then returned as the value\n * of this method.\n *\n * @usage int n = io.readInt(prompt);\n * @param prompt The prompt string to display to the user\n * @return The value of the input interpreted as a decimal integer\n */\n\tpublic int readInt(String prompt);\n\n/* Method: readInt(prompt, low, high) */\n/**\n * Prompts the user to enter an integer, which is then returned as the value\n * of this method.  The value must be within the inclusive range between\n * <code>low</code> and <code>high</code>.\n *\n * @usage int n = io.readInt(prompt, low, high);\n * @param prompt The prompt string to display to the user\n * @param low The lowest value in the permitted range\n * @param high The highest value in the permitted range\n * @return The value of the input interpreted as a decimal integer\n */\n\tpublic int readInt(String prompt, int low, int high);\n\n/* Method: readDouble() */\n/**\n * Reads and returns a double-precision value from the user.\n *\n * @usage double d = io.readDouble();\n * @return The value of the input interpreted as a <code>double</code>\n */\n\tpublic double readDouble();\n\n/* Method: readDouble(low, high) */\n/**\n * Reads and returns a double-precision value from the user, which is\n * constrained to be within the specified inclusive range.\n *\n * @usage double d = io.readDouble(low, high);\n * @param low The lowest value in the permitted range\n * @param high The highest value in the permitted range\n * @return The value of the input interpreted as a <code>double</code>\n */\n\tpublic double readDouble(double low, double high);\n\n/* Method: readDouble(prompt) */\n/**\n * Prompts the user to enter an double-precision number, which is then\n * returned as the value of this method.\n *\n * @usage double d = io.readDouble(prompt);\n * @param prompt The prompt string to display to the user\n * @return The value of the input interpreted as a <code>double</code>\n */\n\tpublic double readDouble(String prompt);\n\n/* Method: readDouble(prompt, low, high) */\n/**\n * Prompts the user to enter an double-precision number, which is then returned\n * as the value of this method.  The value must be within the inclusive range\n * between <code>low</code> and <code>high</code>.\n *\n * @usage d = io.readDouble(prompt, low, high);\n * @param prompt The prompt string to display to the user\n * @param low The lowest value in the permitted range\n * @param high The highest value in the permitted range\n * @return The value of the input interpreted as a <code>double</code>\n */\n\tpublic double readDouble(String prompt, double low, double high);\n\n/* Method: readBoolean() */\n/**\n * Reads and returns a boolean value from the user, which must match\n * either <code>true</code> or <code>false</code>, ignoring case.\n *\n * @usage boolean flag = io.readBoolean();\n * @return The value of the input interpreted as a boolean value\n */\n\tpublic boolean readBoolean();\n\n/* Method: readBoolean(prompt) */\n/**\n * Prompts the user to enter a boolean value, which is then returned as\n * the value of this method.\n *\n * @usage boolean flag = io.readBoolean(prompt);\n * @param prompt The prompt string to display to the user\n * @return The value of the input interpreted as a boolean value\n */\n\tpublic boolean readBoolean(String prompt);\n\n/* Method: readBoolean(prompt, trueLabel, falseLabel) */\n/**\n * Prompts the user to enter a value, which is interpreted as a boolean value\n * by matching it against the <code>trueLabel</code> and <code>falseLabel</code>\n * parameters.\n *\n * @usage boolean flag = dialog.readBoolean(prompt);\n * @param prompt The prompt string to display to the user\n * @param trueLabel The string used to indicate <code>true</code>\n * @param falseLabel The string used to indicate <code>false</code>\n * @return The value of the input interpreted as a boolean value\n */\n\tpublic boolean readBoolean(String prompt, String trueLabel, String falseLabel);\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/io/package.html",
    "content": "<html>\n<head>\n<title>The acm.io Package</title>\n</head>\n<body>\nThis package includes two classes that simplify I/O operations.\nThe first is <a href=\"IOConsole.html\"><code>IOConsole</code></a>, which provides\na traditional interactive console.\nThe second is <a href=\"IODialog.html\"><code>IODialog</code></a>, which\nprovides a dialog-based input mechanism that is compatible with the console\ndesign.\nEach of these classes implements the <a href=\"IOModel.html\"><code>IOModel</code></a>\ninterface, which unifies the two input models.\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/program/CommandLineProgram.java",
    "content": "/*\n * @(#)CommandLineProgram.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// Class introduced in V1.1\n\npackage acm.program;\n\nimport acm.io.*;\nimport acm.util.*;\nimport java.applet.*;\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.io.*;\nimport java.lang.reflect.*;\nimport java.util.*;\nimport javax.swing.*;\n\n/**\n * This class simulates the functionality of a <code>ConsoleProgram</code>\n * in an environment that lacks a graphics context. As of JDK 1.4, it is\n * illegal even to instantiate an applet in a non-graphics environment\n * (called \"headless\" in the Java terminology), which means that the program\n * can no longer extend <code>Applet</code> or <code>JApplet</code>.  This\n * class creates a stripped-down program class that duplicates the operation\n * of a <code>ConsoleProgram</code> using the standard I/O streams.\n */\npublic class CommandLineProgram\n  implements IOModel, Runnable, MouseListener, MouseMotionListener,\n             KeyListener, ActionListener {\n\n/** Constant specifying the north edge of the container */\n\tpublic static final String NORTH = BorderLayout.NORTH;\n\n/** Constant specifying the south edge of the container */\n\tpublic static final String SOUTH = BorderLayout.SOUTH;\n\n/** Constant specifying the east edge of the container */\n\tpublic static final String EAST = BorderLayout.EAST;\n\n/** Constant specifying the west edge of the container */\n\tpublic static final String WEST = BorderLayout.WEST;\n\n/** Constant specifying the center of the container */\n\tpublic static final String CENTER = BorderLayout.CENTER;\n\n/* Default constructor: CommandLineProgram */\n/**\n * This code initializes the program data structures.\n */\n\tprotected CommandLineProgram() {\n\t\tparameterTable = null;\n\t\tfinalizers = new ArrayList<Object>();\n\t\tmyTitle = getClass().getName();\n\t\tmyTitle = myTitle.substring(myTitle.lastIndexOf(\".\") + 1);\n\t\tsetConsole(createConsole());\n\t}\n\n/* Static method: checkIfHeadless(className) */\n/**\n * Checks to see if the program is running in a headless environment and, if so,\n * runs it in that form.  If the environment is indeed headless, this call never\n * returns.\n *\n * @usage CommandLineProgram.checkIfHeadless(className);\n * @param className The name of the main class\n */\n\tpublic static void checkIfHeadless(String className) {\n\t\tif (!JTFTools.testDebugOption(\"headless\")) {\n\t\t\ttry {\n\t\t\t\tClass<?> graphicsEnvironmentClass = Class.forName(\"java.awt.GraphicsEnvironment\");\n\t\t\t\tMethod isHeadless = graphicsEnvironmentClass.getMethod(\"isHeadless\", new Class[0]);\n\t\t\t\tif (!Boolean.TRUE.equals(isHeadless.invoke(null, new Object[0]))) return;\n\t\t\t} catch (Exception ex) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\ttry {\n\t\t\tClassLoader loader = new CommandLineProgramLoader(className);\n\t\t\tClass<?> mainClass = loader.loadClass(className);\n\t\t\tCommandLineProgram program = (CommandLineProgram) mainClass.newInstance();\n\t\t\tprogram.init();\n\t\t\tprogram.run();\n\t\t\tprogram.exit();\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/* Method: run() */\n/**\n * Contains the code to be executed for each specific program subclass.  If\n * you are defining your own program, you need to override the definition of\n * <code>run</code> so that it contains the code for your application.\n */\n\tpublic void run() {\n\t\t/* Empty */\n\t}\n\n/* Method: init() */\n/**\n * The init method is called at startup time before the run method is\n * called.  Subclasses can override this method to perform any\n * initialization code that would ordinarily be included in an applet\n * <code>init</code> method.  This method is used only for certain styles\n * of application development that have their roots in the applet world;\n * other styles will not ordinarily use or override this method.\n *\n * @usage program.init();\n */\n\tpublic void init() {\n\t\t/* Empty */\n\t}\n\n/* Method: print(value) */\n/**\n * Displays the argument value on the console, leaving the cursor at the end of\n * the output.  The <code>print</code> method is overloaded so that\n * <code>value</code> can be of any type.\n *\n * @usage program.print(value);\n * @param value The value to be displayed\n */\n\tpublic void print(String value) {\n\t\tgetOutputModel().print(value);\n\t}\n\n/**\n * Makes sure that <code>print</code> can display a <code>boolean</code>.\n * @noshow\n */\n\tpublic final void print(boolean x) {\n\t\tprint(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>print</code> can display a <code>char</code>.\n * @noshow\n */\n\tpublic final void print(char x) {\n\t\tprint(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>print</code> can display a <code>double</code>.\n * @noshow\n */\n\tpublic final void print(double x) {\n\t\tprint(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>print</code> can display a <code>float</code>.\n * @noshow\n */\n\tpublic final void print(float x) {\n\t\tprint(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>print</code> can display an <code>int</code>.\n * @noshow\n */\n\tpublic final void print(int x) {\n\t\tprint(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>print</code> can display a <code>long</code>.\n * @noshow\n */\n\tpublic final void print(long x) {\n\t\tprint(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>print</code> can display an <code>Object</code>.\n * @noshow\n */\n\tpublic final void print(Object x) {\n\t\tprint(\"\" + x);\n\t}\n\n/* Method: println() */\n/**\n * Advances the console cursor to the beginning of the next line.\n *\n * @usage program.println();\n */\n\tpublic void println() {\n\t\tgetOutputModel().println();\n\t}\n\n/* Method: println(value) */\n/**\n * Displays the argument value on the console and then advances the cursor\n * to the beginning of the next line.  The <code>println</code> method is\n * overloaded so that <code>value</code> can be of any type.\n *\n * @usage program.println(value);\n * @param value The value to be displayed\n */\n\tpublic void println(String value) {\n\t\tgetOutputModel().println(value);\n\t}\n\n/**\n * Makes sure that <code>println</code> can display a <code>boolean</code>.\n * @noshow\n */\n\tpublic final void println(boolean x) {\n\t\tprintln(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>println</code> can display a <code>char</code>.\n * @noshow\n */\n\tpublic final void println(char x) {\n\t\tprintln(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>println</code> can display a <code>double</code>.\n * @noshow\n */\n\tpublic final void println(double x) {\n\t\tprintln(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>println</code> can display a <code>float</code>.\n * @noshow\n */\n\tpublic final void println(float x) {\n\t\tprintln(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>println</code> can display an <code>int</code>.\n * @noshow\n */\n\tpublic final void println(int x) {\n\t\tprintln(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>println</code> can display a <code>long</code>.\n * @noshow\n */\n\tpublic final void println(long x) {\n\t\tprintln(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>println</code> can display an <code>Object</code>.\n * @noshow\n */\n\tpublic final void println(Object x) {\n\t\tprintln(\"\" + x);\n\t}\n\n/* Method: showErrorMessage(msg) */\n/**\n * Displays the error message in the standard output model.\n *\n * @usage showErrorMessage(msg);\n * @param msg The error msg to be displayed\n */\n\tpublic void showErrorMessage(String msg) {\n\t\tgetOutputModel().showErrorMessage(msg);\n\t}\n\n/* Method: readLine() */\n/**\n * Reads and returns a line of input from the console.  The end-of-line\n * characters that terminate the input are not included in the returned\n * string.\n *\n * @usage String str = program.readLine();\n * @return The next line of input as a <code>String</code>\n */\n\tpublic final String readLine() {\n\t\treturn readLine(null);\n\t}\n\n/* Method: readLine(prompt) */\n/**\n * Prompts the user for a line of input.  The end-of-line characters\n * that terminate the input are not included in the returned string.\n *\n * @usage String str = program.readLine(prompt);\n * @param prompt The prompt string to display to the user\n * @return The next line of input as a <code>String</code>\n */\n\tpublic String readLine(String prompt) {\n\t\treturn getInputModel().readLine(prompt);\n\t}\n\n/* Method: readInt() */\n/**\n * Reads and returns an integer value from the user.  If the user types\n * a value that is not a legal integer, the method ordinarily offers the\n * user a chance to reenter the data, although this behavior can be\n * changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage int n = program.readInt();\n * @return The value of the input interpreted as a decimal integer\n */\n\tpublic final int readInt() {\n\t\treturn readInt(null, Integer.MIN_VALUE, Integer.MAX_VALUE);\n\t}\n\n/* Method: readInt(low, high) */\n/**\n * Reads and returns an integer value from the user, which is constrained to\n * be within the specified inclusive range.  If the user types a value\n * that is not a legal integer, the method ordinarily offers the user a chance\n * to reenter the data, although this behavior can be changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage int n = program.readInt(low, high);\n * @param low The lowest value in the permitted range\n * @param high The highest value in the permitted range\n * @return The value of the input interpreted as a decimal integer\n */\n\tpublic final int readInt(int low, int high) {\n\t\treturn readInt(null, low, high);\n\t}\n\n/* Method: readInt(prompt) */\n/**\n * Prompts the user to enter an integer, which is then returned as the value\n * of this method.  If the user types a value that is not a legal integer,\n * the method ordinarily offers the user a chance to reenter the data,\n * although this behavior can be changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage int n = program.readInt(prompt);\n * @param prompt The prompt string to display to the user\n * @return The value of the input interpreted as a decimal integer\n */\n\tpublic final int readInt(String prompt) {\n\t\treturn readInt(prompt, Integer.MIN_VALUE, Integer.MAX_VALUE);\n\t}\n\n/* Method: readInt(prompt, low, high) */\n/**\n * Prompts the user to enter an integer, which is then returned as the value\n * of this method.  The value must be within the inclusive range between\n * <code>low</code> and <code>high</code>.  If the user types a value that\n * is not a legal integer or is outside the specified range, the method\n * ordinarily offers the user a chance to reenter the data,\n * although this behavior can be changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage int n = console.readInt(prompt, low, high);\n * @param prompt The prompt string to display to the user\n * @param low The lowest value in the permitted range\n * @param high The highest value in the permitted range\n * @return The value of the input interpreted as a decimal integer\n */\n\tpublic int readInt(String prompt, int low, int high) {\n\t\treturn getInputModel().readInt(prompt, low, high);\n\t}\n\n/* Method: readDouble() */\n/**\n * Reads and returns a double-precision value from the user.  If the user\n * types a value that is not a legal number, the method ordinarily offers\n * the user a chance to reenter the data, although this behavior can be\n * changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage double d = program.readDouble();\n * @return The value of the input interpreted as a <code>double</code>\n */\n\tpublic final double readDouble() {\n\t\treturn readDouble(null, Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY);\n\t}\n\n/* Method: readDouble(low, high) */\n/**\n * Reads and returns a double-precision value from the user, which is\n * constrained to be within the specified inclusive range.  If the user\n * types a value that is not a legal number, the method ordinarily offers\n * the user a chance to reenter the data, although this behavior can be\n * changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage double d = program.readDouble(low, high);\n * @param low The lowest value in the permitted range\n * @param high The highest value in the permitted range\n * @return The value of the input interpreted as a <code>double</code>\n */\n\tpublic final double readDouble(double low, double high) {\n\t\treturn readDouble(null, low, high);\n\t}\n\n/* Method: readDouble(prompt) */\n/**\n * Prompts the user to enter an double-precision number, which is then\n * returned as the value of this method.  If the user types a value that\n * is not a legal number, the method ordinarily offers the user a chance to\n * reenter the data,  although this behavior can be changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage double d = program.readDouble(prompt);\n * @param prompt The prompt string to display to the user\n * @return The value of the input interpreted as a <code>double</code>\n */\n\tpublic final double readDouble(String prompt) {\n\t\treturn readDouble(prompt, Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY);\n\t}\n\n/* Method: readDouble(prompt, low, high) */\n/**\n * Prompts the user to enter an double-precision number, which is then returned\n * as the value of this method.  The value must be within the inclusive range\n * between <code>low</code> and <code>high</code>.  If the user types a value\n * that is not a legal number, the method ordinarily offers the user a chance\n * to reenter the data,  although this behavior can be changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage d = program.readDouble(prompt, low, high);\n * @param prompt The prompt string to display to the user\n * @param low The lowest value in the permitted range\n * @param high The highest value in the permitted range\n * @return The value of the input interpreted as a <code>double</code>\n */\n\tpublic double readDouble(String prompt, double low, double high) {\n\t\treturn getInputModel().readDouble(prompt, low, high);\n\t}\n\n/* Method: readBoolean() */\n/**\n * Reads and returns a boolean value (<code>true</code> or <code>false</code>).\n * The input must match one of these strings, ignoring case.  If the user\n * types a value that is not one of these possibilities, the method ordinarily\n * offers the user a chance to reenter the data, although this behavior\n * can be changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage boolean flag = program.readBoolean();\n * @return The value of the input interpreted as a boolean value\n */\n\tpublic final boolean readBoolean() {\n\t\treturn readBoolean(null);\n\t}\n\n/* Method: readBoolean(prompt) */\n/**\n * Prompts the user to enter a boolean value, which is returned as\n * the value of this method.  If the user types a value that is not a\n * legal boolean value, the method ordinarily offers the user a chance\n * to reenter the data, although this behavior can be changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage boolean flag = program.readBoolean(prompt);\n * @param prompt The prompt string to display to the user\n * @return The value of the input interpreted as a boolean value\n */\n\tpublic final boolean readBoolean(String prompt) {\n\t\treturn readBoolean(prompt, \"true\", \"false\");\n\t}\n\n/* Method: readBoolean(prompt, trueLabel, falseLabel) */\n/**\n * Prompts the user to enter a boolean value, which is matched against the\n * labels provided.  If the user enters a value that is not one of the two\n * choices, <code>readBoolean</code> ordinarily offers the user a chance\n * to reenter the data, although this behavior can be changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage boolean flag = program.readBoolean(prompt);\n * @param prompt The prompt string to display to the user\n * @param trueLabel The string used to indicate <code>true</code>\n * @param falseLabel The string used to indicate <code>false</code>\n * @return The value of the input interpreted as a boolean value\n */\n\tpublic boolean readBoolean(String prompt, String trueLabel, String falseLabel) {\n\t\treturn getInputModel().readBoolean(prompt, trueLabel, falseLabel);\n\t}\n\n/* Method: isAppletMode() */\n/**\n * Returns <code>true</code> if this program is running as an applet in a browser.\n *\n * @usage if (isAppletMode()) . . .\n * @return <code>true</code> if this program is running as an applet, <code>false</code> otherwise\n * @noshow\n */\n\tpublic boolean isAppletMode() {\n\t\treturn false;\n\t}\n\n/* Method: setConsole(console) */\n/**\n * Sets the console associated with this program.\n *\n * @usage program.setConsole(console);\n * @param console The <code>IOConsole</code> object used for this program\n */\n\tpublic void setConsole(IOConsole console) {\n\t\tmyConsole = console;\n\t}\n\n/* Method: getConsole() */\n/**\n * Returns the console associated with this program.\n *\n * @usage IOConsole console = program.getConsole();\n * @return The <code>IOConsole</code> object used for this program\n */\n\tpublic IOConsole getConsole() {\n\t\treturn myConsole;\n\t}\n\n/* Method: getDialog() */\n/**\n * Returns the dialog used for user interaction.\n *\n * @usage IODialog dialog = program.getDialog();\n * @return The <code>IODialog</code> object used for this program\n */\n\tpublic IODialog getDialog() {\n\t\treturn null;\n\t}\n\n/* Method: getInputModel() */\n/**\n * Returns the <code>IOModel</code> used for program input, which will\n * typically be either the default <code>IOConsole</code> or <code>IODialog</code> object.\n *\n * @usage IOModel io = program.getInputModel();\n * @return The <code>IOModel</code> used for program input\n */\n\tpublic IOModel getInputModel() {\n\t\treturn getConsole();\n\t}\n\n/* Method: getOutputModel() */\n/**\n * Returns the <code>IOModel</code> used for program output, which will\n * typically be either the default <code>IOConsole</code> or <code>IODialog</code> object.\n *\n * @usage IOModel io = program.getOutputModel();\n * @return The <code>IOModel</code> used for program output\n */\n\tpublic IOModel getOutputModel() {\n\t\treturn getConsole();\n\t}\n\n/* Method: getReader() */\n/**\n * Returns a <code>BufferedReader</code> whose input comes from the console.\n *\n * @usage BufferedReader rd = getReader();\n * @return A <code>Reader</code> for use with this console\n */\n\tpublic BufferedReader getReader() {\n\t\treturn getConsole().getReader();\n\t}\n\n/* Method: getWriter() */\n/**\n * Returns a <code>PrintWriter</code> whose output is directed to the console.\n *\n * @usage PrintWriter wr = getWriter();\n * @return A <code>PrintWriter</code> for use with this console\n */\n\tpublic PrintWriter getWriter() {\n\t\treturn getConsole().getWriter();\n\t}\n\n/* Method: getRegionPanel(region) */\n/**\n * Gets the <code>JPanel</code> for the specified region.\n *\n * @usage JPanel panel = getRegionPanel(region);\n * @param region The region of the window (<code>NORTH</code>, <code>SOUTH</code>,\n *               <code>EAST</code>, <code>WEST</code>, or <code>CENTER</code>)\n * @return The <code>JPanel</code> for that subregion\n * @noshow\n */\n\tpublic JPanel getRegionPanel(String region) {\n\t\tif (region != region) /* Avoid unused parameter warning */;\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n/* Method: add(comp, region, constraints) */\n/**\n * Adds the component to the specified border region with the indicated\n * constraints object.\n *\n * @usage add(comp, region, constraints);\n * @param comp The component to be added\n * @param region The region of the window (<code>NORTH</code>, <code>SOUTH</code>,\n *               <code>EAST</code>, <code>WEST</code>, or <code>CENTER</code>)\n * @param constraints The constraints object\n * @noshow\n */\n\tpublic void add(Component comp, String region, Object constraints) {\n\t\tif (comp != comp) /* Avoid unused parameter warning */;\n\t\tif (region != region) /* Avoid unused parameter warning */;\n\t\tif (constraints != constraints) /* Avoid unused parameter warning */;\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n/* Method: addActionListeners() */\n/**\n * Adds the program as an <code>ActionListener</code> to every button in\n * the structure that does not have a listener already.\n *\n * @usage addActionListeners();\n */\n\tpublic void addActionListeners() {\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n/* Method: addActionListeners(listener) */\n/**\n * Adds the specified listener to every button in\n * the structure that does not have a listener already.\n *\n * @usage addActionListeners(listener);\n * @param listener The <code>ActionListener</code> to be added\n */\n\tpublic void addActionListeners(ActionListener listener) {\n\t\tif (listener != listener) /* Avoid unused parameter warning */;\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n/* Method: setTitle(title) */\n/**\n * Sets the title of this program.  The title appears in the title bar\n * when the program is running as an application.\n *\n * @usage setTitle(title);\n * @param title The title for this program\n */\n\tpublic void setTitle(String title) {\n\t\tmyTitle = title;\n\t}\n\n/* Method: getTitle() */\n/**\n * Gets the title of this program.\n *\n * @usage String title = getTitle();\n * @return The title in use for this program\n */\n\tpublic String getTitle() {\n\t\treturn myTitle;\n\t}\n\n/* Method: start(args) */\n/**\n * Starts the program using the specified argument list.\n *\n * @usage program.start(args);\n * @param args An array of strings passed to the program\n */\n\tpublic void start(String[] args) {\n\t\tif (parameterTable == null && args != null) {\n\t\t\tparameterTable = createParameterTable(args);\n\t\t}\n\t\tinit();\n\t\trun();\n\t}\n\n/* Method: exit() */\n/**\n * Exits from the program.  Subclasses should override this method if they need\n * to perform any actions before shutting down the program, such as asking the\n * user to save any unsaved files.  Any clients that do override this method\n * should call <code>super.exit()</code> at the end of their processing.\n *\n * @usage program.exit();\n */\n\tpublic void exit() {\n\t\tint nFinalizers = finalizers.size();\n\t\tfor (int i = 0; i < nFinalizers; i++) {\n\t\t\tObject obj = finalizers.get(i);\n\t\t\ttry {\n\t\t\t\tClass<?> c = obj.getClass();\n\t\t\t\tMethod exit = c.getMethod(\"exit\", new Class[0]);\n\t\t\t\texit.invoke(obj, new Object[0]);\n\t\t\t} catch (Exception ex) {\n\t\t\t\tthrow new ErrorException(ex);\n\t\t\t}\n\t\t}\n\t}\n\n/* Method: addExitHook(obj) */\n/**\n * Requests that the program call the <code>exit</code> method in the\n * specified object before exiting.\n *\n * @usage program.addExitHook(obj);\n */\n\tpublic void addExitHook(Object obj) {\n\t\tfinalizers.add(obj);\n\t}\n\n/**********************************************************************/\n/* Listener methods                                                   */\n/**********************************************************************/\n\n/* Method: mouseClicked (implements MouseListener) */\n/**\n * Called when the mouse is clicked.  A call to <code>mouseClicked</code>\n * is always preceded by both a <code>mousePressed</code> and a\n * <code>mouseReleased</code> event for the same source.\n */\n\tpublic void mouseClicked(MouseEvent e) { }\n\n/* Method: mousePressed (implements MouseListener) */\n/**\n * Called when the mouse button is pressed.\n */\n\tpublic void mousePressed(MouseEvent e) { }\n\n/* Method: mouseReleased (implements MouseListener) */\n/**\n * Called when the mouse button is released.\n */\n\tpublic void mouseReleased(MouseEvent e) { }\n\n/* Method: mouseEntered (implements MouseListener) */\n/**\n * Called when the mouse enters the source (which may be\n * either a component or a <code>GObject</code>).\n */\n\tpublic void mouseEntered(MouseEvent e) { }\n\n/* Method: mouseExited (implements MouseListener) */\n/**\n * Called when the mouse exits the source (which may be\n * either a component or a <code>GObject</code>).\n */\n\tpublic void mouseExited(MouseEvent e) { }\n\n/* Method: mouseMoved (implements MouseMotionListener) */\n/**\n * Called when the mouse is moved.\n */\n\tpublic void mouseMoved(MouseEvent e) { }\n\n/* Method: mouseDragged (implements MouseMotionListener) */\n/**\n * Called when the mouse is dragged with the button down.  Java\n * makes several guarantees about dragging.  First, a\n * <code>mouseDragged</code> call is always preceded by a\n * <code>mousePressed</code> call for the same source.  If the\n * mouse is pressed elsewhere and then enters a source with\n * the button down, no drag event occurs.  Moreover, once the\n * mouse button goes down in a particular source, only that\n * source will receive mouse events until the button goes up.\n * Those events, moreover, are reported even in the mouse\n * travels outside the domain of the object.\n */\n\tpublic void mouseDragged(MouseEvent e) { }\n\n/* Method: keyTyped (implements KeyListener) */\n/**\n * Called when a key is typed (i.e., pressed and released).\n */\n\tpublic void keyTyped(KeyEvent e) { }\n\n/* Method: keyPressed (implements KeyListener) */\n/**\n * Called when a key is pressed.\n */\n\tpublic void keyPressed(KeyEvent e) { }\n\n/* Method: keyReleased (implements KeyListener) */\n/**\n * Called when a key is released.\n */\n\tpublic void keyReleased(KeyEvent e) { }\n\n/* Method: actionPerformed (implements ActionListener) */\n/**\n * Called when a component (typically a button) is activated.\n */\n\tpublic void actionPerformed(ActionEvent e) { }\n\n/* Factory method: createConsole() */\n/**\n * Creates the console used by the <code>ConsoleProgram</code>.  Subclasses can\n * override this method to create their own console types.\n *\n * @usage IOConsole console = program.createConsole();\n * @return The console to be used by the program\n */\n\tprotected IOConsole createConsole() {\n\t\treturn IOConsole.SYSTEM_CONSOLE;\n\t}\n\n/* Factory method: createDialogIO() */\n/**\n * Creates the dialog used for interaction (primarily by the <code>DialogProgram</code>\n * class).  Subclasses can override this method to create their own dialog types.\n *\n * @usage IODialog dialog = program.createDialogIO();\n * @return The dialog to be used by the program\n */\n\tprotected IODialog createDialogIO() {\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n/**********************************************************************/\n/* Overrides of existing methods                                      */\n/**********************************************************************/\n\n/* Overridden method: getPreferredSize() */\n/**\n * Returns the preferred size of the content pane.\n *\n * @usage Dimension size = getPreferredSize();\n * @return The preferred size of the content pane\n * @noshow\n */\n\tpublic Dimension getPreferredSize() {\n\t\treturn new Dimension(0, 0);\n\t}\n\n/* Overridden method: getWidth() */\n/**\n * Returns the width of the central region.\n *\n * @usage int width = getWidth();\n * @return The width of the central region\n * @noshow\n */\n\tpublic int getWidth() {\n\t\treturn 0;\n\t}\n\n/* Overridden method: getHeight() */\n/**\n * Returns the height of the central region.\n *\n * @usage int height = getHeight();\n * @return The height of the central region\n * @noshow\n */\n\tpublic int getHeight() {\n\t\treturn 0;\n\t}\n\n/* Overridden method: getParameter(name) */\n/**\n * Returns the parameter associated with name.\n *\n * @usage String value = getParameter(name);\n * @param name The name of the parameter\n * @return The value associated with the parameter, or <code>null</code> if none\n * @noshow\n */\n\tpublic String getParameter(String name) {\n\t\tString value = null;\n\t\tif (parameterTable != null) {\n\t\t\tvalue = parameterTable.get(name.toLowerCase());\n\t\t}\n\t\treturn value;\n\t}\n\n/* Overridden method: setLayout(layout) */\n/**\n * Sets the layout manager for the central region of the content pane.\n *\n * @usage setLayout(layout);\n * @param layout The layout manager to use\n * @noshow\n */\n\tpublic void setLayout(LayoutManager layout) {\n\t\tif (layout != layout) /* Avoid unused parameter warning */;\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n/* Overridden method: getLayout() */\n/**\n * Gets the layout manager for the central region of the content pane.\n *\n * @usage LayoutManager layout = setLayout();\n * @return The active layout manager\n * @noshow\n */\n\tpublic LayoutManager getLayout() {\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n/* Overridden method: setBackground(color) */\n/**\n * Sets the background for the central region of the content pane.\n *\n * @usage setBackground(color);\n * @param color The new background color\n * @noshow\n */\n\tpublic void setBackground(Color color) {\n\t\tif (color != color) /* Avoid unused parameter warning */;\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n/* Overridden method: addImpl(comp, constraints, index) */\n/**\n * Adds the specified component to the content pane using the specified constraints and index.\n */\n\tprotected void addImpl(Component comp, Object constraints, int index) {\n\t\tif (comp != comp) /* Avoid unused parameter warning */;\n\t\tif (constraints != constraints) /* Avoid unused parameter warning */;\n\t\tif (index != index) /* Avoid unused parameter warning */;\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n/* Overridden method: remove(index) */\n/**\n * Removes the component at the specified index from the central region.\n *\n * @usage remove(index);\n * @param index The index position of the component to remove\n * @noshow\n */\n\tpublic void remove(int index) {\n\t\tif (index != index) /* Avoid unused parameter warning */;\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n/* Overridden method: remove(comp) */\n/**\n * Removes the specified component from the central region.\n *\n * @usage remove(comp);\n * @param comp The component to remove\n * @noshow\n */\n\tpublic void remove(Component comp) {\n\t\tif (comp != comp) /* Avoid unused parameter warning */;\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n/* Overridden method: removeAll() */\n/**\n * Removes all components from the central region.\n *\n * @usage removeAll();\n * @noshow\n */\n\tpublic void removeAll() {\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n/* Overridden method: validate() */\n/**\n * Forwards validate to the content pane.\n *\n * @usage validate();\n * @noshow\n */\n\tpublic void validate() {\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n/* Overridden method: repaint() */\n/**\n * Forwards repaint to the content pane.\n *\n * @usage repaint();\n * @noshow\n */\n\tpublic void repaint() {\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n/* Overridden method: destroy() */\n/**\n * Called when the program has been told to destroy itself.\n *\n * @usage program.destroy();\n * @noshow\n */\n\tpublic void destroy() {\n\t\t/* Empty */\n\t}\n\n/* Static method: main(args) */\n/**\n * Every application must either contain a \"Main-Class\" entry in its\n * manifest file or include a main method that looks like this, where\n * <code>MyClass</code> is the name of the program class:\n *\n * <p><pre><code>\n * &nbsp;    public static void main(String[] args) {\n * &nbsp;       new MyClass().start();\n * &nbsp;    }\n * </code></pre>\n *\n * <p>If the program needs the command line arguments, the <code>args</code>\n * array can be passed to the <code>start</code> method and then retrieved\n * using the <code>getArgumentArray</code> method.\n *\n * @param args An array of string arguments\n */\n\tpublic static void main(String[] args) {\n\t\tHashMap<String,String> ht = createParameterTable(args);\n\t\tJTFTools.setDebugOptions(ht.get(\"debug\"));\n\t\tString className = ht.get(\"code\");\n\t\tif (className == null) {\n\t\t\tclassName = JTFTools.getMainClass();\n\t\t}\n\t\tClass<?> mainClass = null;\n\t\tCommandLineProgram program = null;\n\t\tif (className != null) {\n\t\t\tif (className.endsWith(\".class\")) {\n\t\t\t\tclassName = className.substring(0, className.length() - 6);\n\t\t\t}\n\t\t\tclassName = className.replace('/', '.');\n\t\t\ttry {\n\t\t\t\tmainClass = Class.forName(className);\n\t\t\t} catch (ClassNotFoundException ex) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t}\n\t\tif (mainClass != null) {\n\t\t\ttry {\n\t\t\t\tObject obj = mainClass.newInstance();\n\t\t\t\tif (obj instanceof CommandLineProgram) {\n\t\t\t\t\tprogram = (CommandLineProgram) obj;\n\t\t\t\t} else {\n\t\t\t\t\tthrow new ErrorException(\"Main class does not specify a program\");\n\t\t\t\t}\n\t\t\t} catch (IllegalAccessException ex) {\n\t\t\t\t/* Empty */\n\t\t\t} catch (InstantiationException ex) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t}\n\t\tif (program == null) throw new ErrorException(\"Cannot determine the main class.\");\n\t\tprogram.setParameterTable(ht);\n\t\tprogram.start(null);\n\t}\n\n/**********************************************************************/\n/* Menu handling methods                                              */\n/**********************************************************************/\n\n/* Method: menuAction(cmd) */\n/**\n * Called whenever an action event is detected in the menu bar.  Most of\n * these actions are simply passed on to the appropriate console.\n */\n\tpublic void menuAction(String cmd) {\n\t\tif (cmd != cmd) /* Avoid unused parameter warning */;\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n/* Protected method: setMacMenuBarFlag(flag) */\n/**\n * Sets a flag indicating whether applications running on the Macintosh\n * should use standard Mac menus.  The default is <code>true</code>.\n * Setting this value to <code>false</code> means that Mac programs\n * use the same in-window <code>JMenuBar</code> approach used on other\n * platforms.\n *\n * @usage setMacMenuBarFlag(flag);\n * @param flag <code>true</code> to use Mac menu style; <code>false</code> otherwise\n */\n\tprotected void setMacMenuBarFlag(boolean flag) {\n\t\tif (flag != flag) /* Avoid unused parameter warning */;\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n/* Protected method: getMacMenuBarFlag() */\n/**\n * Retrieves the setting of the Mac menu bar flag.\n *\n * @usage boolean flag = getMacMenuBarFlag();\n * @return <code>true</code> if Mac menu style is supported; <code>false</code> otherwise\n */\n\tprotected boolean getMacMenuBarFlag() {\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n/**********************************************************************/\n/* Protected methods                                                  */\n/**********************************************************************/\n\n/* Protected method: getBorder(side) */\n/**\n * Returns the component installed as a border on the specified side, which must\n * be one of the constants from <code>BorderLayout</code> (<code>NORTH</code>,\n * <code>SOUTH</code>, <code>EAST</code>, <code>WEST</code>).\n *\n * @usage getBorder(side, comp);\n * @param side The side (<code>NORTH</code>, <code>SOUTH</code>, <code>EAST</code>,\n *             or <code>WEST</code>)\n * @return The component used as a border on the specified side\n * @noshow\n */\n\tprotected Component getBorder(String side) {\n\t\tif (side != side) /* Avoid unused parameter warning */;\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n/* Protected method: getArgumentArray() */\n/**\n * Retrieves the array of arguments passed in from the command line, or\n * <code>null</code> if no arguments are available.\n *\n * @usage String[] args = getArgumentArray();\n * @return The array of command-line arguments\n * @noshow\n */\n\tprotected String[] getArgumentArray() {\n\t\tif (parameterTable == null) return null;\n\t\tStringTokenizer tokenizer = new StringTokenizer(parameterTable.get(\"ARGS\"), \"\\t\", false);\n\t\tString[] args = new String[tokenizer.countTokens()];\n\t\tfor (int i = 0; tokenizer.hasMoreTokens(); i++) {\n\t\t\targs[i] = tokenizer.nextToken();\n\t\t}\n\t\treturn args;\n\t}\n\n/* Protected method: isStarted() */\n/**\n * Checks to see whether this program has started, usually by checking to see\n * whether some pane exists.  Subclasses can override this method to ensure\n * that their structures are visible before proceeding.\n * @noshow\n */\n\tprotected boolean isStarted() {\n\t\tthrow new ErrorException(\"No graphics environment\");\n\t}\n\n/* Protected method: startHook() */\n/**\n * Performs class-specific initialization for the program just before\n * it starts.\n * @noshow\n */\n\tprotected void startHook() {\n\t\t/* Empty */\n\t}\n\n/* Protected method: endHook() */\n/**\n * Performs class-specific cleanup for the program just after\n * it finishes.\n * @noshow\n */\n\tprotected void endHook() {\n\t\t/* Empty */\n\t}\n\n/* Protected method: setAppletStub(stub) */\n/**\n * Sets the applet stub for this program in a way that makes it possible for\n * clients to retrieve it.\n *\n * @usage setAppletStub(stub);\n * @param stub The applet stub\n */\n\tprotected void setAppletStub(AppletStub stub) {\n\t\tappletStub = stub;\n\t}\n\n/* Protected method: getAppletStub() */\n/**\n * Retrieves the applet stub.\n *\n * @usage AppletStub stub = getAppletStub();\n * @return The applet stub\n */\n\tprotected AppletStub getAppletStub() {\n\t\treturn appletStub;\n\t}\n\n/* Protected method: setParameterTable(ht) */\n/**\n * Sets the parameter table for this program.\n *\n * @usage setParameterTable(ht);\n * @param ht The parameter table\n */\n\tprotected void setParameterTable(HashMap<String,String> ht) {\n\t\tparameterTable = ht;\n\t}\n\n/* Protected method: getParameterTable() */\n/**\n * Retrieves the parameter table.\n *\n * @usage ParameterTable ht = getParameterTable();\n * @return The parameter table\n */\n\tprotected HashMap<String,String> getParameterTable() {\n\t\treturn parameterTable;\n\t}\n\n/* Protected static method: createParameterTable(args) */\n/**\n * Creates a hash table containing the parameters specified in the\n * argument list.  Parameters are taken to be any argument that matches\n * the template\n *\n * <p>   <i>name</i><code>=</code><i>value</i>\n *\n * All other arguments are collected as a tab-separated string and placed\n * in an entry under the key <code>\"ARGS\"</code>.  All named parameters\n * are converted to lower case to preserve the case-insensitive semantics\n * of <code>getParameter</code>.\n *\n * @usage HashMap<String,String> ht = createParameterTable(args);\n * @param args The array of strings passed to the application\n * @return A <code>HashMap</code> containing the parameter bindings\n */\n\tprotected static HashMap<String,String> createParameterTable(String[] args) {\n\t\tif (args == null) return null;\n\t\tHashMap<String,String> ht = new HashMap<String,String>();\n\t\tString newArgs = \"\";\n\t\tfor (int i = 0; i < args.length; i++) {\n\t\t\tString arg = args[i];\n\t\t\tint equals = arg.indexOf('=');\n\t\t\tif (equals > 0) {\n\t\t\t\tString name = arg.substring(0, equals).toLowerCase();\n\t\t\t\tString value = arg.substring(equals + 1);\n\t\t\t\tht.put(name, value);\n\t\t\t} else {\n\t\t\t\tif (newArgs.length() > 0) newArgs += '\\t';\n\t\t\t\tnewArgs += arg;\n\t\t\t}\n\t\t}\n\t\tht.put(\"ARGS\", newArgs);\n\t\treturn ht;\n\t}\n\n/* Private instance variables */\n\tprivate HashMap<String,String> parameterTable;\n\tprivate ArrayList<Object> finalizers;\n\tprivate AppletStub appletStub;\n\tprivate String myTitle;\n\tprivate IOConsole myConsole;\n}\n\nclass CommandLineProgramLoader extends ClassLoader {\n\n\tpublic CommandLineProgramLoader(String name) {\n\t\ttargetName = name;\n\t\ttry {\n\t\t\tClass<?> classLoader = Class.forName(\"java.lang.ClassLoader\");\n\t\t\tMethod getSystemClassLoader = classLoader.getMethod(\"getSystemClassLoader\", new Class[0]);\n\t\t\trealLoader = (ClassLoader) getSystemClassLoader.invoke(null, new Object[0]);\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n\tpublic Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException {\n\t\tif (name.equals(targetName)) {\n\t\t\tInputStream in = getResourceAsStream(name + \".class\");\n\t\t\tsuperclassOffset = findSuperclassOffset(in);\n\t\t\tin = getResourceAsStream(name + \".class\");\n\t\t\tbyte[] code = patchClassData(in);\n\t\t\treturn defineClass(name, code, 0, code.length);\n\t\t} else {\n\t\t\treturn realLoader.loadClass(name);\n\t\t}\n\t}\n\n\tpublic InputStream getResourceAsStream(String name) {\n\t\treturn realLoader.getResourceAsStream(name);\n\t}\n\n\tpublic java.net.URL getResource(String name) {\n\t\treturn realLoader.getResource(name);\n\t}\n\n\tprivate byte[] patchClassData(InputStream in) {\n\t\ttry {\n\t\t\tByteArrayOutputStream out = new ByteArrayOutputStream();\n\t\t\tJTFTools.copyBytes(in, out, 8);\n\t\t\tint nConstants = in.read() << 8 | in.read();\n\t\t\tout.write(nConstants >> 8);\n\t\t\tout.write(nConstants & 0xFF);\n\t\t\tfor (int index = 1; index < nConstants; index++) {\n\t\t\t\tint type = in.read();\n\t\t\t\tout.write(type);\n\t\t\t\tif (JTFTools.testDebugOption(\"constants\")) {\n\t\t\t\t\tSystem.out.println(index + \": \" + getConstantTypeName(type));\n\t\t\t\t}\n\t\t\t\tswitch (type) {\n\t\t\t\t  case CONSTANT_Integer: JTFTools.copyBytes(in, out, 4); break;\n\t\t\t\t  case CONSTANT_Float: JTFTools.copyBytes(in, out, 4); break;\n\t\t\t\t  case CONSTANT_Long: JTFTools.copyBytes(in, out, 8); index++; break;\n\t\t\t\t  case CONSTANT_Double: JTFTools.copyBytes(in, out, 8); index++; break;\n\t\t\t\t  case CONSTANT_Class: JTFTools.copyBytes(in, out, 2); break;\n\t\t\t\t  case CONSTANT_String: JTFTools.copyBytes(in, out, 2); break;\n\t\t\t\t  case CONSTANT_Fieldref: JTFTools.copyBytes(in, out, 4); break;\n\t\t\t\t  case CONSTANT_Methodref: JTFTools.copyBytes(in, out, 4); break;\n\t\t\t\t  case CONSTANT_InterfaceMethodref: JTFTools.copyBytes(in, out, 4); break;\n\t\t\t\t  case CONSTANT_NameAndType: JTFTools.copyBytes(in, out, 4); break;\n\t\t\t\t  case CONSTANT_Utf8:\n\t\t\t\t\tif (index == superclassOffset) {\n\t\t\t\t\t\tint nChars = in.read() << 8 | in.read();\n\t\t\t\t\t\tin.skip(nChars);\n\t\t\t\t\t\tString superclass = \"acm/program/CommandLineProgram\";\n\t\t\t\t\t\tnChars = superclass.length();\n\t\t\t\t\t\tout.write(nChars >> 8);\n\t\t\t\t\t\tout.write(nChars & 0xFF);\n\t\t\t\t\t\tfor (int j = 0; j < nChars; j++) {\n\t\t\t\t\t\t\tout.write((byte) superclass.charAt(j));\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tint nChars = in.read() << 8 | in.read();\n\t\t\t\t\t\tout.write(nChars >> 8);\n\t\t\t\t\t\tout.write(nChars & 0xFF);\n\t\t\t\t\t\tJTFTools.copyBytes(in, out, nChars);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\twhile (true) {\n\t\t\t\tint ch = in.read();\n\t\t\t\tif (ch == -1) break;\n\t\t\t\tout.write(ch);\n\t\t\t}\n\t\t\treturn out.toByteArray();\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n\tprivate int findSuperclassOffset(InputStream in) {\n\t\tclassTable = new HashMap<Integer,Integer>();\n\t\ttry {\n\t\t\tin.skip(8);\n\t\t\tint nConstants = in.read() << 8 | in.read();\n\t\t\tnConstants += 2;\n\t\t\tfor (int i = 1; i < nConstants - 2; i++) {\n\t\t\t\tint type = in.read();\n\t\t\t\tswitch (type) {\n\t\t\t\t  case CONSTANT_Integer: in.skip(4); break;\n\t\t\t\t  case CONSTANT_Float: in.skip(4); break;\n\t\t\t\t  case CONSTANT_Long: in.skip(8); i++; break;\n\t\t\t\t  case CONSTANT_Double: in.skip(8); i++; break;\n\t\t\t\t  case CONSTANT_String: in.skip(2); break;\n\t\t\t\t  case CONSTANT_Fieldref: in.skip(4); break;\n\t\t\t\t  case CONSTANT_Methodref: in.skip(4); break;\n\t\t\t\t  case CONSTANT_InterfaceMethodref: in.skip(4); break;\n\t\t\t\t  case CONSTANT_NameAndType: in.skip(4); break;\n\t\t\t\t  case CONSTANT_Class:\n\t\t\t\t\tint offset = in.read() << 8 | in.read();\n\t\t\t\t\tclassTable.put(new Integer(i), new Integer(offset));\n\t\t\t\t\tbreak;\n\t\t\t\t  case CONSTANT_Utf8:\n\t\t\t\t\tint nChars = in.read() << 8 | in.read();\n\t\t\t\t\tin.skip(nChars);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tin.skip(4);\n\t\t\treturn classTable.get(new Integer(in.read() << 8 | in.read())).intValue();\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n\tprivate static String getConstantTypeName(int id) {\n\t\tswitch (id) {\n\t\t  case CONSTANT_Utf8: return \"Utf8\";\n\t\t  case CONSTANT_Integer: return \"Integer\";\n\t\t  case CONSTANT_Float: return \"Float\";\n\t\t  case CONSTANT_Long: return \"Long\";\n\t\t  case CONSTANT_Double: return \"Double\";\n\t\t  case CONSTANT_Class: return \"Class\";\n\t\t  case CONSTANT_String: return \"String\";\n\t\t  case CONSTANT_Fieldref: return \"Fieldref\";\n\t\t  case CONSTANT_Methodref: return \"Methodref\";\n\t\t  case CONSTANT_InterfaceMethodref: return \"InterfaceMethodref\";\n\t\t  case CONSTANT_NameAndType: return \"NameAndType\";\n\t\t  default: return \"Type[\" + id + \"]\";\n\t\t}\n\t}\n\n\tprivate static final int CONSTANT_Utf8 =                1;\n\tprivate static final int CONSTANT_Integer =             3;\n\tprivate static final int CONSTANT_Float =               4;\n\tprivate static final int CONSTANT_Long =                5;\n\tprivate static final int CONSTANT_Double =              6;\n\tprivate static final int CONSTANT_Class =               7;\n\tprivate static final int CONSTANT_String =              8;\n\tprivate static final int CONSTANT_Fieldref =            9;\n\tprivate static final int CONSTANT_Methodref =          10;\n\tprivate static final int CONSTANT_InterfaceMethodref = 11;\n\tprivate static final int CONSTANT_NameAndType =        12;\n\n\tprivate HashMap<Integer,Integer> classTable;\n\tprivate ClassLoader realLoader;\n\tprivate String targetName;\n\tprivate int superclassOffset;\n\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/program/ConsoleProgram.java",
    "content": "/*\n * @(#)ConsoleProgram.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\npackage acm.program;\n\nimport acm.io.*;\nimport acm.util.*;\nimport java.awt.*;\n\n/* Class: ConsoleProgram() */\n/**\n * This class is a standard subclass of <code><a href=\"Program.html\">Program</a></code>\n * that installs a console in the window.\n */\npublic abstract class ConsoleProgram extends Program {\n\n/* Constructor: ConsoleProgram() */\n/**\n * Creates a new console program.\n *\n * @usage ConsoleProgram program = new ConsoleProgram();\n */\n\tpublic ConsoleProgram() {\n\t\tadd(getConsole(), CENTER);\n\t\tvalidate();\n\t}\n\n/* Method: run() */\n/**\n * Specifies the code to be executed as the program runs.\n * The <code>run</code> method is required for applications that have\n * a thread of control that runs even in the absence of user actions,\n * such as a program that uses console interation or that involves\n * animation.  GUI-based programs that operate by setting up an initial\n * configuration and then wait for user events usually do not specify a\n * <code>run</code> method and supply a new definition for <code>init</code>\n * instead.\n */\n\tpublic void run() {\n\t\t/* Empty */\n\t}\n\n/* Method: init() */\n/**\n * Specifies the code to be executed as startup time before the\n * <code>run</code> method is called.  Subclasses can override this\n * method to perform any initialization code that would ordinarily\n * be included in an applet <code>init</code> method.  In general,\n * subclasses will override <code>init</code> in GUI-based programs\n * where the program simply sets up an initial state and then waits\n * for events from the user.  The <code>run</code> method is required\n * for applications in which there needs to be some control thread\n * while the program runs, as in a typical animation.\n *\n * @usage program.init();\n */\n\tpublic void init() {\n\t\t/* Empty */\n\t}\n\n/* Method: setFont(str) */\n/**\n * Sets the font used for the console as specified by\n * the string <code>str</code>, which is interpreted in the style of\n * <code>Font.decode</code>.  The usual format of the font string is\n *\n* <p>   <i>family</i><code>-</code><i>style</i><code>-</code><i>size</i><p>\n *\n * where both <i>style</i> and <i>size</i> are optional.  If any of these parts\n * are specified as an asterisk, the existing value is retained.\n *\n * @usage program.setFont(str);\n * @param str A <code>String</code> specifying the new font\n */\n\tpublic void setFont(String str) {\n\t\tIOConsole console = getConsole();\n\t\tif (console != null) {\n\t\t\tconsole.setFont(str);\n\t\t\tsuper.setFont(console.getFont());\n\t\t}\n\t}\n\n/* Override method: setFont(font) */\n/**\n * Sets the font for the console.\n *\n * @usage program.setFont(font);\n * @param font The new font\n */\n\tpublic void setFont(Font font) {\n\t\tIOConsole console = getConsole();\n\t\tfont = JTFTools.getStandardFont(font);\n\t\tif (console != null) console.setFont(font);\n\t\tsuper.setFont(font);\n\t}\n\n/* Factory method: createConsole() */\n/**\n * Creates the console used by the <code>ConsoleProgram</code>.\n *\n * @usage IOConsole console = program.createConsole();\n * @return The console to be used by the program\n */\n\tprotected IOConsole createConsole() {\n\t\treturn new IOConsole();\n\t}\n\n/* Inherited method: print(value) */\n/**\n * @inherited Program#void print(String value)\n * Displays the argument value on the console, leaving the cursor at the end of\n * the output.\n */\n\n/* Inherited method: println() */\n/**\n * @inherited Program#void println()\n * Advances the console cursor to the beginning of the next line.\n */\n\n/* Inherited method: println(value) */\n/**\n * @inherited Program#void println(String value)\n * Displays the argument value on the console and then advances the cursor\n * to the next line.\n */\n\n/* Inherited method: readLine() */\n/**\n * @inherited Program#String readLine()\n * Reads and returns a line of input from the console.\n */\n\n/* Inherited method: readLine(prompt) */\n/**\n * @inherited Program#String readLine(String prompt)\n * Prompts the user for a line of input.\n */\n\n/* Inherited method: readInt() */\n/**\n * @inherited Program#int readInt()\n * Reads and returns an integer value from the user.\n */\n\n/* Inherited method: readInt(prompt) */\n/**\n * @inherited Program#int readInt(String prompt)\n * Prompts the user to enter an integer.\n */\n\n/* Inherited method: readDouble() */\n/**\n * @inherited Program#double readDouble()\n * Reads and returns a double-precision value from the user.\n */\n\n/* Inherited method: readDouble(prompt) */\n/**\n * @inherited Program#double readDouble(String prompt)\n * Prompts the user to enter a double-precision number.\n */\n\n/* Inherited method: readBoolean() */\n/**\n * @inherited Program#boolean readBoolean()\n * Reads and returns a boolean value (<code>true</code> or <code>false</code>).\n */\n\n/* Inherited method: readBoolean(prompt) */\n/**\n * @inherited Program#boolean readBoolean(String prompt)\n * Prompts the user to enter a boolean value.\n */\n\n/* Inherited method: readBoolean(prompt, trueLabel, falseLabel) */\n/**\n * @inherited Program#boolean readBoolean(String prompt, String trueLabel, String falseLabel)\n * Prompts the user to enter a boolean value, which is matched against the\n * labels provided.\n */\n\n/* Inherited method: getConsole() */\n/**\n * @inherited Program#IOConsole getConsole()\n * Returns the console associated with this program.\n */\n\n/* Inherited method: getDialog() */\n/**\n * @inherited Program#IODialog getDialog()\n * Returns the dialog used for user interaction.\n */\n\n/* Inherited method: getReader() */\n/**\n * @inherited Program#BufferedReader getReader()\n * Returns a <code>BufferedReader</code> whose input comes from the console.\n */\n\n/* Inherited method: getWriter() */\n/**\n * @inherited Program#PrintWriter getWriter()\n * Returns a <code>PrintWriter</code> whose output is directed to the console.\n */\n\n/* Inherited method: setTitle(title) */\n/**\n * @inherited Program#void setTitle(String title)\n * Sets the title of this program.\n */\n\n/* Inherited method: getTitle() */\n/**\n * @inherited Program#String getTitle()\n * Gets the title of this program.\n */\n\n/* Inherited method: pause(milliseconds) */\n/**\n * @inherited Program#void pause(double milliseconds)\n * Delays the calling thread for the specified time, which is expressed in\n * milliseconds.\n */\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/program/DialogProgram.java",
    "content": "/*\n * @(#)DialogProgram.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Code cleanup 28-May-07 (ESR)\n//   1. Rewrote code to call setInputModel/setOutputModel\n\npackage acm.program;\n\nimport acm.io.*;\n\n/* Class: DialogProgram() */\n/**\n * This class is a standard subclass of <code><a href=\"Program.html\">Program</a></code>\n * that takes its input from a <code>IODialog</code> object.\n */\npublic abstract class DialogProgram extends Program {\n\n/* Constructor: DialogProgram() */\n/**\n * Creates a new dialog program.\n *\n * @usage DialogProgram program = new DialogProgram();\n */\n\tpublic DialogProgram() {\n\t\tIODialog dialog = getDialog();\n\t\tsetInputModel(dialog);\n\t\tsetOutputModel(dialog);\n\t}\n\n/* Method: run() */\n/**\n * Specifies the code to be executed as the program runs.\n * The <code>run</code> method is required for applications that have\n * a thread of control that runs even in the absence of user actions,\n * such as a program that uses console interation or that involves\n * animation.  GUI-based programs that operate by setting up an initial\n * configuration and then wait for user events usually do not specify a\n * <code>run</code> method and supply a new definition for <code>init</code>\n * instead.\n */\n\tpublic void run() {\n\t\t/* Empty */\n\t}\n\n/* Method: init() */\n/**\n * Specifies the code to be executed as startup time before the\n * <code>run</code> method is called.  Subclasses can override this\n * method to perform any initialization code that would ordinarily\n * be included in an applet <code>init</code> method.  In general,\n * subclasses will override <code>init</code> in GUI-based programs\n * where the program simply sets up an initial state and then waits\n * for events from the user.  The <code>run</code> method is required\n * for applications in which there needs to be some control thread\n * while the program runs, as in a typical animation.\n *\n * @usage program.init();\n */\n\tpublic void init() {\n\t\t/* Empty */\n\t}\n\n/* Inherited method: print(value) */\n/**\n * @inherited Program#void print(String value)\n * Displays the argument value, allowing for the possibility of more\n * output in the same dialog.\n */\n\n/* Inherited method: println() */\n/**\n * @inherited Program#void println()\n * Completes the output line and displays the dialog.\n */\n\n/* Inherited method: println(value) */\n/**\n * @inherited Program#void println(String value)\n * Adds the value to the current output line and then displays the dialog.\n */\n\n/* Inherited method: readLine() */\n/**\n * @inherited Program#String readLine()\n * Puts up a dialog box asking the user for a line of text.\n */\n\n/* Inherited method: readLine(prompt) */\n/**\n * @inherited Program#String readLine(String prompt)\n * Puts up a dialog box asking the user for a line of text.\n */\n\n/* Inherited method: readInt() */\n/**\n * @inherited Program#int readInt()\n * Puts up a dialog box asking the user for an integer.\n */\n\n/* Inherited method: readInt(prompt) */\n/**\n * @inherited Program#int readInt(String prompt)\n * Puts up a dialog box asking the user for an integer.\n */\n\n/* Inherited method: readDouble() */\n/**\n * @inherited Program#double readDouble()\n * Puts up a dialog box asking the user for a double-precision number.\n */\n\n/* Inherited method: readDouble(prompt) */\n/**\n * @inherited Program#double readDouble(String prompt)\n * Puts up a dialog box asking the user for a double-precision number.\n */\n\n/* Inherited method: readBoolean() */\n/**\n * @inherited Program#boolean readBoolean()\n * Puts up a dialog box asking the user for a <code>true</code>/<code>false</code> value.\n */\n\n/* Inherited method: readBoolean(prompt) */\n/**\n * @inherited Program#boolean readBoolean(String prompt)\n * Puts up a dialog box asking the user for a <code>true</code>/<code>false</code> value.\n */\n\n/* Inherited method: readBoolean(prompt) */\n/**\n * @inherited Program#boolean readBoolean(String prompt, trueLabel, falseLabel)\n * Puts up a dialog box asking the user for a boolean value chosen from\n * buttons with the specified labels.\n */\n\n/* Inherited method: getConsole() */\n/**\n * @inherited Program#IOConsole getConsole()\n * Returns the console associated with this program.\n */\n\n/* Inherited method: getDialog() */\n/**\n * @inherited Program#IODialog getDialog()\n * Returns the dialog used for user interaction.\n */\n\n/* Inherited method: getReader() */\n/**\n * @inherited Program#BufferedReader getReader()\n * Returns a <code>BufferedReader</code> whose input comes from the console.\n */\n\n/* Inherited method: getWriter() */\n/**\n * @inherited Program#PrintWriter getWriter()\n * Returns a <code>PrintWriter</code> whose output is directed to the console.\n */\n\n/* Inherited method: setTitle(title) */\n/**\n * @inherited Program#void setTitle(String title)\n * Sets the title of this program.\n */\n\n/* Inherited method: getTitle() */\n/**\n * @inherited Program#String getTitle()\n * Gets the title of this program.\n */\n\n/* Inherited method: pause(milliseconds) */\n/**\n * @inherited Program#void pause(double milliseconds)\n * Delays the calling thread for the specified time.\n */\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/program/GraphicsProgram.java",
    "content": "/*\n * @(#)GraphicsProgram.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Code cleanup 30-Jan-07 (ESR)\n//   1. Renamed instance variable \"listener\" to \"eventListener\" to avoid\n//      warning messages from some compilers.\n//   2. Removed unnecessary startHook code.\n\npackage acm.program;\n\nimport acm.graphics.*;\nimport acm.util.*;\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.lang.reflect.*;\nimport java.util.*;\n\n/**\n * This class is a standard subclass of <code><a href=\"Program.html\">Program</a></code>\n * whose principal window is used for drawing graphics.\n */\npublic abstract class GraphicsProgram extends Program {\n\n/* Constructor: GraphicsProgram() */\n/**\n * Creates a new graphics program.\n *\n * @usage GraphicsProgram program = new GraphicsProgram();\n */\n\tprotected GraphicsProgram() {\n\t\teventListener = new GProgramListener(this);\n\t\tgc = createGCanvas();\n\t\tgc.addMouseListener(eventListener);\n\t\tif (eventListener.needsMouseMotionListeners()) {\n\t\t\tgc.addMouseMotionListener(eventListener);\n\t\t}\n\t\tadd(gc, CENTER);\n\t\tvalidate();\n\t}\n\n/* Method: run() */\n/**\n * Specifies the code to be executed as the program runs.\n * The <code>run</code> method is required for applications that have\n * a thread of control that runs even in the absence of user actions,\n * such as a program that uses console interation or that involves\n * animation.  GUI-based programs that operate by setting up an initial\n * configuration and then wait for user events usually do not specify a\n * <code>run</code> method and supply a new definition for <code>init</code>\n * instead.\n */\n\tpublic void run() {\n\t\t/* Empty */\n\t}\n\n/* Method: init() */\n/**\n * Specifies the code to be executed as startup time before the\n * <code>run</code> method is called.  Subclasses can override this\n * method to perform any initialization code that would ordinarily\n * be included in an applet <code>init</code> method.  In general,\n * subclasses will override <code>init</code> in GUI-based programs\n * where the program simply sets up an initial state and then waits\n * for events from the user.  The <code>run</code> method is required\n * for applications in which there needs to be some control thread\n * while the program runs, as in a typical animation.\n *\n * @usage program.init();\n */\n\tpublic void init() {\n\t\t/* Empty */\n\t}\n\n/* Method: getGCanvas() */\n/**\n * Returns the <code>GCanvas</code> object used by this program.\n *\n * @usage GCanvas gc = getGCanvas();\n * @return The <code>GCanvas</code> object used by the program\n */\n\tpublic GCanvas getGCanvas() {\n\t\treturn gc;\n\t}\n\n/* Method: add(gobj) */\n/**\n * Adds a new graphical object to this container.\n *\n * @usage add(gobj);\n * @param gobj The graphical object to add\n */\n\tpublic void add(GObject gobj) {\n\t\tgc.add(gobj);\n\t}\n\n/* Method: add(gobj, x, y) */\n/**\n * Adds the graphical object to the canvas and sets its location\n * to the point (<code>x</code>,&nbsp;<code>y</code>).\n *\n * @usage add(gobj, x, y);\n * @param gobj The graphical object to add\n * @param x The new x-coordinate for the object\n * @param y The new y-coordinate for the object\n */\n\tpublic final void add(GObject gobj, double x, double y) {\n\t\tgobj.setLocation(x, y);\n\t\tadd(gobj);\n\t}\n\n/* Method: add(gobj, pt) */\n/**\n * Adds the graphical object to the canvas and sets its location to the specified point.\n *\n * @usage add(gobj, pt);\n * @param gobj The graphical object to add\n * @param pt The new coordinates of the point\n */\n\tpublic final void add(GObject gobj, GPoint pt) {\n\t\tgobj.setLocation(pt);\n\t\tadd(gobj);\n\t}\n\n/* Method: add(comp, x, y) */\n/**\n * Adds the component to the canvas and sets its location\n * to the point (<code>x</code>,&nbsp;<code>y</code>).\n *\n * @usage add(comp, x, y);\n * @param comp The component to add\n * @param x The new x-coordinate for the object\n * @param y The new y-coordinate for the object\n */\n\tpublic final void add(Component comp, double x, double y) {\n\t\tcomp.setLocation(GMath.round(x), GMath.round(y));\n\t\tgc.add(comp);\n\t}\n\n/* Method: add(comp, pt) */\n/**\n * Adds the component to the canvas and sets its location to the specified point.\n *\n * @usage add(comp, pt);\n * @param comp The component to add\n * @param pt A <code>GPoint</code> object giving the coordinates of the point\n */\n\tpublic final void add(Component comp, GPoint pt) {\n\t\tadd(comp, pt.getX(), pt.getY());\n\t}\n\n/* Method: remove(gobj) */\n/**\n * Removes a graphical object from this container.\n *\n * @usage remove(gobj);\n * @param gobj The graphical object to remove\n */\n\tpublic void remove(GObject gobj) {\n\t\tgc.remove(gobj);\n\t}\n\n/* Method: removeAll() */\n/**\n * Removes all graphical objects from this container.  Note that this\n * definition overrides the <code>Container</code> version of\n * <code>removeAll</code>, which is replaced by\n * <a href=\"#removeAllComponents()\"><code>removeAllComponents</code></a>.\n *\n * @usage removeAll();\n */\n\tpublic void removeAll() {\n\t\tgc.removeAll();\n\t}\n\n/* Method: getElementCount() */\n/**\n * Returns the number of graphical objects stored in this <code>GCanvas</code>.\n *\n * @usage int n = getElementCount();\n * @return The number of graphical objects in this <code>GCanvas</code>\n */\n\tpublic int getElementCount() {\n\t\treturn gc.getElementCount();\n\t}\n\n/* Method: getElement(index) */\n/**\n * Returns the graphical object at the specified index, numbering from back\n * to front in the the <i>z</i> dimension.\n *\n * @usage GObject gobj = getElement(index);\n * @param index The index of the component to return\n * @return The graphical object at the specified index\n */\n\tpublic GObject getElement(int index) {\n\t\treturn gc.getElement(index);\n\t}\n\n/* Method: getElementAt(x, y) */\n/**\n * Returns the topmost graphical object that contains the point\n * (<code>x</code>, <code>y</code>), or <code>null</code> if no such\n * object exists.\n *\n * @usage GObject gobj = program.getElementAt(x, y);\n * @param x The x-coordinate of the point being tested\n * @param y The y-coordinate of the point being tested\n * @return The graphical object at the specified location, or <code>null</code>\n *         if no such object exists.\n */\n\tpublic GObject getElementAt(double x, double y) {\n\t\treturn gc.getElementAt(x, y);\n\t}\n\n/* Method: getElementAt(pt) */\n/**\n * Returns the topmost graphical object that contains the specified point,\n * or <code>null</code> if no such object exists.\n *\n * @usage GObject gobj = program.getElementAt(pt);\n * @param pt The coordinates being tested\n * @return The graphical object at the specified location, or <code>null</code>\n *         if no such object exists\n */\n\tpublic final GObject getElementAt(GPoint pt) {\n\t\treturn getElementAt(pt.getX(), pt.getY());\n\t}\n\n/* Method: iterator() */\n/**\n * Returns an <code>Iterator</code> that cycles through the elements within\n * this container in the default direction, which is from back to front.\n * You can also run the iterator in the opposite direction by using the\n * <a href=\"#iterator(int)\"><code>iterator</code></a><code>(</code><font\n * size=-1><i>direction</i></font><code>)</code> form of this method.\n *\n * <p>Applets that want to run in browsers, however, should avoid using\n * this method, because <code>Iterator</code> is not supported on 1.1 browsers.\n * For maximum portability, you should rely instead on the\n * <a href=\"GContainer.html#getElementCount()\"><code>getElementCount</code></a>\n * and <a href=\"GContainer.html#getElement(int)\"><code>getElement</code></a> methods,\n * which provide the same functionality in a browser-compatible way.\n *\n * @usage Iterator<GObject> i = iterator();\n * @return An <code>Iterator</code> ranging over the elements of the\n *         container from back to front\n */\n\tpublic Iterator<GObject> iterator() {\n\t\treturn gc.iterator();\n\t}\n\n/* Method: iterator(direction) */\n/**\n * Returns an <code>Iterator</code> that cycles through the elements\n * within this container in the specified direction, which must be one\n * of the constants <a href=\"../graphics/GContainer.html#FRONT_TO_BACK\"><code>FRONT_TO_BACK</code></a>\n * or <a href=\"GContainer.html#BACK_TO_FRONT\"><code>BACK_TO_FRONT</code></a>\n * from the <a href=\"../graphics/GContainer.html\"><code>GContainer</code></a> interface.<p>\n *\n * <code>  for (Iterator&lt;GObject&gt; i = iterator(direction); i.hasNext(); )</code>\n *\n * <p>Applets that want to run in browsers, however, should avoid using\n * this method, because <code>Iterator</code> is not supported on 1.1 browsers.\n * For maximum portability, you should rely instead on the\n * <a href=\"GContainer.html#getElementCount()\"><code>getElementCount</code></a>\n * and <a href=\"GContainer.html#getElement(int)\"><code>getElement</code></a> methods,\n * which provide the same functionality in a browser-compatible way.\n *\n * @usage Iterator<GObject> i = iterator(direction);\n * @return An <code>Iterator</code> ranging over the elements of the\n *         container in the specified direction\n */\n\tpublic Iterator<GObject> iterator(int direction) {\n\t\treturn gc.iterator(direction);\n\t}\n\n/* Method: addMouseListeners() */\n/**\n * Adds the program as both a <code>MouseListener</code> and <code>MouseMotionListener</code>\n * to the canvas.\n *\n * @usage addMouseListeners();\n */\n\tpublic void addMouseListeners() {\n\t\tgc.addMouseListener(this);\n\t\tgc.addMouseMotionListener(this);\n\t}\n\n/* Method: addMouseListeners(listener) */\n/**\n * Adds the specified listener as a <code>MouseListener</code> and/or\n * <code>MouseMotionListener</code>, as appropriate, to the canvas.\n *\n * @usage addMouseListeners(listener);\n * @param listener A listener object that is either a <code>MouseListener</code>, a\n *        <code>MouseMotionListener</code>, or both\n */\n\tpublic void addMouseListeners(EventListener listener) {\n\t\tboolean ok = false;\n\t\tif (listener instanceof MouseListener) {\n\t\t\tgc.addMouseListener((MouseListener) listener);\n\t\t\tok = true;\n\t\t}\n\t\tif (listener instanceof MouseMotionListener) {\n\t\t\tgc.addMouseMotionListener((MouseMotionListener) listener);\n\t\t\tok = true;\n\t\t}\n\t\tif (!ok) throw new ErrorException(\"addMouseListeners: Illegal listener\");\n\t}\n\n/* Method: addKeyListeners() */\n/**\n * Adds the program as a <code>KeyListener</code> to the canvas.\n *\n * @usage addKeyListeners();\n */\n\tpublic void addKeyListeners() {\n\t\tgc.addKeyListener(this);\n\t}\n\n/* Method: addKeyListeners(listener) */\n/**\n * Adds the specified listener as a <code>KeyListener</code> to the canvas.\n *\n * @usage addKeyListeners(listener);\n * @param listener A <code>KeyListener</code> object\n */\n\tpublic void addKeyListeners(KeyListener listener) {\n\t\tgc.addKeyListener(listener);\n\t}\n\n/* Method: waitForClick() */\n/**\n * Waits for a mouse click in the window before proceeding.\n *\n * @usage waitForClick();\n */\n\tpublic void waitForClick() {\n\t\teventListener.waitForClick();\n\t}\n\n/* Method: repaint() */\n/**\n * Signals a need to repaint this window.\n * @noshow\n */\n\tpublic void repaint() {\n\t\tgc.repaint();\n\t\tsuper.repaint();\n\t}\n\n/* Method: removeAllComponents() */\n/**\n * Removes all components from this container.\n *\n * @usage removeAllComponents();\n * @noshow\n */\n\tpublic void removeAllComponents() {\n\t\tsuper.removeAll();\n\t}\n\n/* Override method: setBackground(bg) */\n/**\n * Sets the background color of the <code>GCanvas</code>.\n *\n * @usage setBackground(bg);\n * @param bg The new background color\n * @noshow\n */\n\tpublic void setBackground(Color bg) {\n\t\tsuper.setBackground(bg);\n\t\tif (gc != null) gc.setBackground(bg);\n\t}\n\n/* Static method: startGraphicsProgram(gobj, args) */\n/**\n * Creates a <code>GraphicsProgram</code> containing the specified <code>GObject</code>\n * and then starts it.  This code is called only by the <code>start</code> method in\n * <code>GObject</code>.\n *\n * @usage startGraphicsProgram(gobj, args);\n * @param gobj The object to be inserted into the <code>GraphicsProgram</code>\n * @param args The array of arguments\n * @noshow\n */\n\tpublic static void startGraphicsProgram(GObject gobj, String[] args) {\n\t\tGraphicsProgram program = new GObjectProgram();\n\t\tprogram.setStartupObject(gobj);\n\t\tprogram.start(args);\n\t}\n\n/* Inherited method: print(value) */\n/**\n * @inherited Program#void print(String value)\n * Displays the argument value on the console, leaving the cursor at the end of\n * the output.\n */\n\n/* Inherited method: println() */\n/**\n * @inherited Program#void println()\n * Advances the console cursor to the beginning of the next line.\n */\n\n/* Inherited method: println(value) */\n/**\n * @inherited Program#void println(String value)\n * Displays the argument value on the console and then advances the cursor\n * to the next line.\n */\n\n/* Inherited method: readLine() */\n/**\n * @inherited Program#String readLine()\n * Reads and returns a line of input from the console.\n */\n\n/* Inherited method: readLine(prompt) */\n/**\n * @inherited Program#String readLine(String prompt)\n * Prompts the user for a line of input.\n */\n\n/* Inherited method: readInt() */\n/**\n * @inherited Program#int readInt()\n * Reads and returns an integer value from the user.\n */\n\n/* Inherited method: readInt(prompt) */\n/**\n * @inherited Program#int readInt(String prompt)\n * Prompts the user to enter an integer.\n */\n\n/* Inherited method: readDouble() */\n/**\n * @inherited Program#double readDouble()\n * Reads and returns a double-precision value from the user.\n */\n\n/* Inherited method: readDouble(prompt) */\n/**\n * @inherited Program#double readDouble(String prompt)\n * Prompts the user to enter a double-precision number, which is\n * returned as the value of this method.\n */\n\n/* Inherited method: readBoolean() */\n/**\n * @inherited Program#boolean readBoolean()\n * Reads and returns a boolean value (<code>true</code> or <code>false</code>).\n */\n\n/* Inherited method: readBoolean(prompt) */\n/**\n * @inherited Program#boolean readBoolean(String prompt)\n * Prompts the user to enter a boolean value.\n */\n\n/* Inherited method: readBoolean(prompt, trueLabel, falseLabel) */\n/**\n * @inherited Program#boolean readBoolean(String prompt, String trueLabel, String falseLabel)\n * Prompts the user to enter a boolean value, which is matched against the\n * labels provided.\n */\n\n/* Inherited method: getConsole() */\n/**\n * @inherited Program#IOConsole getConsole()\n * Returns the console associated with this program.\n */\n\n/* Inherited method: getDialog() */\n/**\n * @inherited Program#IODialog getDialog()\n * Returns the dialog used for user interaction.\n */\n\n/* Inherited method: getReader() */\n/**\n * @inherited Program#BufferedReader getReader()\n * Returns a <code>BufferedReader</code> whose input comes from the console.\n */\n\n/* Inherited method: getWriter() */\n/**\n * @inherited Program#PrintWriter getWriter()\n * Returns a <code>PrintWriter</code> whose output is directed to the console.\n */\n\n/* Inherited method: setTitle(title) */\n/**\n * @inherited Program#void setTitle(String title)\n * Sets the title of this program.\n */\n\n/* Inherited method: getTitle() */\n/**\n * @inherited Program#String getTitle()\n * Gets the title of this program.\n */\n\n/* Inherited method: pause(milliseconds) */\n/**\n * @inherited Program#void pause(double milliseconds)\n * Delays the calling thread for the specified time, which is expressed in\n * milliseconds.\n */\n\n/* Factory method: createGCanvas() */\n/**\n * Creates the <code>GCanvas</code> used by the <code>GraphicsProgram</code>.  Subclasses can\n * override this method to create their own <code>GCanvas</code> types.\n *\n * @usage GCanvas gc = program.createGCanvas();\n * @return The <code>GCanvas</code> to be inserted into the program\n * @noshow\n */\n\tprotected GCanvas createGCanvas() {\n\t\treturn new GCanvas();\n\t}\n\n/* Protected method: endHook() */\n/**\n * Ensures that the window is repainted at the end of the program.\n */\n\tprotected void endHook() {\n\t\tgc.repaint();\n\t}\n\n/* Protected method: isStarted() */\n/**\n * Checks to see whether this program has started, usually by checking to see\n * whether some pane exists.  Subclasses can override this method to ensure\n * that their structures are visible before proceeding.\n * @noshow\n */\n\tprotected boolean isStarted() {\n\t\tif (gc == null || !super.isStarted()) return false;\n\t\tDimension size = gc.getSize();\n\t\treturn (size != null) && (size.width != 0) && (size.height != 0);\n\t}\n\n/* Private instance variables */\n\tprivate GCanvas gc;\n\tprivate GProgramListener eventListener;\n}\n\n/* Package class: GProgramListener */\n/**\n * The <code>GProgramListener</code> class implements the waitForClick\n * method and the objectdraw-style listener model.\n */\nclass GProgramListener implements MouseListener, MouseMotionListener {\n\n/* Constructor: GProgramListener() */\n/**\n * Creates the <code>GProgramListener</code>.\n */\n\tpublic GProgramListener(GraphicsProgram program) {\n\t\tmyProgram = program;\n\t\ttry {\n\t\t\tClass<?> programClass = program.getClass();\n\t\t\tClass[] types = { Class.forName(\"acm.graphics.GPoint\") };\n\t\t\ttry {\n\t\t\t\tmousePressedHook = programClass.getMethod(\"mousePressed\", types);\n\t\t\t} catch (NoSuchMethodException ex) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tmouseReleasedHook = programClass.getMethod(\"mouseReleased\", types);\n\t\t\t} catch (NoSuchMethodException ex) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tmouseClickedHook = programClass.getMethod(\"mouseClicked\", types);\n\t\t\t} catch (NoSuchMethodException ex) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tmouseMovedHook = programClass.getMethod(\"mouseMoved\", types);\n\t\t\t} catch (NoSuchMethodException ex) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tmouseDraggedHook = programClass.getMethod(\"mouseDragged\", types);\n\t\t\t} catch (NoSuchMethodException ex) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/* Method: needsMouseMotionListeners() */\n/**\n * Returns true if this listener has to respond to mouse motion events as well.\n */\n\tpublic boolean needsMouseMotionListeners() {\n\t\treturn mouseMovedHook != null || mouseDraggedHook != null;\n\t}\n\n/* Method: mouseClicked() */\n/**\n * Called by the event-handling system when the mouse is clicked in the canvas.\n */\n\tpublic void mouseClicked(MouseEvent e) {\n\t\tif (mouseClickedHook != null) {\n\t\t\tObject[] args = { new GPoint(e.getX(), e.getY()) };\n\t\t\ttry {\n\t\t\t\tmouseClickedHook.invoke(myProgram, args);\n\t\t\t} catch (Exception ex) {\n\t\t\t\tthrow new ErrorException(ex);\n\t\t\t}\n\t\t}\n\t\tsignalClickOccurred();\n\t}\n\n/* Method: mousePressed() */\n/**\n * Called by the event-handling system when the mouse button is pressed.\n */\n\tpublic void mousePressed(MouseEvent e) {\n\t\tif (mousePressedHook != null) {\n\t\t\tObject[] args = { new GPoint(e.getX(), e.getY()) };\n\t\t\ttry {\n\t\t\t\tmousePressedHook.invoke(myProgram, args);\n\t\t\t} catch (Exception ex) {\n\t\t\t\tthrow new ErrorException(ex);\n\t\t\t}\n\t\t}\n\t}\n\n/* Method: mouseReleased() */\n/**\n * Called by the event-handling system when the mouse button is released.\n */\n\tpublic void mouseReleased(MouseEvent e) {\n\t\tif (mouseReleasedHook != null) {\n\t\t\tObject[] args = { new GPoint(e.getX(), e.getY()) };\n\t\t\ttry {\n\t\t\t\tmouseReleasedHook.invoke(myProgram, args);\n\t\t\t} catch (Exception ex) {\n\t\t\t\tthrow new ErrorException(ex);\n\t\t\t}\n\t\t}\n\t}\n\n/* Method: mouseEntered() */\n/**\n * Called by the event-handling system when the mouse enters the component.\n */\n\tpublic void mouseEntered(MouseEvent e) {\n\t\t/* Empty */\n\t}\n\n/* Method: mouseExited() */\n/**\n * Called by the event-handling system when the mouse leaves the component.\n */\n\tpublic void mouseExited(MouseEvent e) {\n\t\t/* Empty */\n\t}\n\n/* Method: mouseMoved() */\n/**\n * Called by the event-handling system when the mouse moves.\n */\n\tpublic void mouseMoved(MouseEvent e) {\n\t\tif (mouseMovedHook != null) {\n\t\t\tObject[] args = { new GPoint(e.getX(), e.getY()) };\n\t\t\ttry {\n\t\t\t\tmouseMovedHook.invoke(myProgram, args);\n\t\t\t} catch (Exception ex) {\n\t\t\t\tthrow new ErrorException(ex);\n\t\t\t}\n\t\t}\n\t}\n\n/* Method: mouseDragged() */\n/**\n * Called by the event-handling system when the mouse is dragged with the button down.\n */\n\tpublic void mouseDragged(MouseEvent e) {\n\t\tif (mouseDraggedHook != null) {\n\t\t\tObject[] args = { new GPoint(e.getX(), e.getY()) };\n\t\t\ttry {\n\t\t\t\tmouseDraggedHook.invoke(myProgram, args);\n\t\t\t} catch (Exception ex) {\n\t\t\t\tthrow new ErrorException(ex);\n\t\t\t}\n\t\t}\n\t}\n\n/* Method: waitForClick() */\n/**\n * Waits for a mouse click in the window before proceeding.\n *\n * @usage waitForClick();\n */\n\tpublic synchronized void waitForClick() {\n\t\tclickFlag = false;\n\t\twhile (!clickFlag) {\n\t\t\ttry {\n\t\t\t\twait();\n\t\t\t} catch (InterruptedException ex) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t}\n\t}\n\n/* Private method: signalClickOccurred() */\n/**\n * Notifies any waiting objects that a click has occurred.\n */\n\tprivate synchronized void signalClickOccurred() {\n\t\tclickFlag = true;\n\t\tnotifyAll();\n\t}\n\n/* Private instance variables */\n\tprivate GraphicsProgram myProgram;\n\tprivate Method mousePressedHook;\n\tprivate Method mouseReleasedHook;\n\tprivate Method mouseClickedHook;\n\tprivate Method mouseMovedHook;\n\tprivate Method mouseDraggedHook;\n\tprivate boolean clickFlag;\n\n}\n\n/* Package class: GObjectProgram */\n/**\n * This class is used to launch a program containing a single <code>GObject</code>\n * instance at its center.\n */\nclass GObjectProgram extends GraphicsProgram {\n\n/* Hook method: runHook() */\n/**\n * Calls the run method in the graphical object.\n */\n\tprotected void runHook() {\n\t\tGObject gobj = (GObject) getStartupObject();\n\t\tGDimension size = gobj.getSize();\n\t\tadd(gobj, (getWidth() - size.getWidth()) / 2, (getHeight() - size.getHeight()) / 2);\n\t\ttry {\n\t\t\tClass<?> gobjClass = gobj.getClass();\n\t\t\tString className = gobjClass.getName();\n\t\t\tclassName = className.substring(className.lastIndexOf(\".\") + 1);\n\t\t\tsetTitle(className);\n\t\t\tMethod run = gobjClass.getMethod(\"run\", new Class[0]);\n\t\t\tif (run == null) throw new ErrorException(className + \" has no run method\");\n\t\t\trun.invoke(gobj, new Object[0]);\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/program/Program.java",
    "content": "/*\n * @(#)Program.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Bug fix 30-Jan-07 (ESR, JTFBug 2007-002)\n//   1. Change default in getCommandLine to behave as if Linux.\n//   2. If environment is headless, substitute a CommandLineProgram.\n//\n// Feature enhancement 2-Mar-07 (ESR)\n//   1. Added menu option to export the program as an applet.\n//   2. Added menu option to submit the program via email.\n//\n// Bug fix 8-May-07 (ESR, JTFBug 2007-007)\n//   1. Fixed significant bug introduced by JDK 1.6 in which it is no\n//      longer possible to display a JApplet as a component.\n//\n// Code cleanup 28-May-07 (ESR)\n//   1. Added generic type tags.\n//   2. Rewrote code for handling command-line arguments.\n//   3. Repackaged the ButtonLike interface.\n//   4. Added setInputModel, setOutputModel, and setDialog for symmetry\n//\n// Bug fix 10-Sep-07 (ESR, JTFBug 2007-012)\n//   1. Fixed deadlock bug arising from change to thread handling in JDK 1.6.\n//\n// Code cleanup 10-May-08 (ESR)\n//   1. Changed code to account for introduction of CommandLineProgram class.\n//\n// Bug fix 21-May-08 (ESR, JTFBug 2008-002)\n//   1. Fixed the logic for isAppletMode.\n//\n// Code cleanup 21-May-08 (ESR)\n//   1. Changed factory method for the menu bar to pass the program.\n//   2. Redesigned other code features to account for redesign of the\n//      ProgramMenuBar class.\n//\n// Bug fix 10-Jun-08 (ESR, JTFBug 2008-003)\n//   1. Fixed serious bug caused by overriding the definitions of\n//      getWidth and getHeight (which was, in retrospect, a poor design).\n//      To avoid requiring changes to client code, the implementation now\n//      checks to see whether these methods have been called from inside\n//      the java package hierarchy and, if so, maintains their traditional\n//      semantics.\n\npackage acm.program;\n\nimport acm.gui.*;\nimport acm.io.*;\nimport acm.util.*;\nimport java.applet.*;\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.awt.image.*;\nimport java.io.*;\nimport java.lang.reflect.*;\nimport java.net.*;\nimport java.util.*;\nimport javax.swing.*;\n\n/* Class: Program */\n/**\n * This class is the superclass for all executable\n * programs in the <code>acm.program</code> package.  Its principal\n * role is to unify the concepts of applets and applications in a single\n * class, although it also provides applications with many other useful\n * facilities not traditionally available in applications.\n *\n * <p>In many programming environments, objects that are specific instances\n * of a <code>Program</code> subclass will run automatically without any\n * special action on your part.  For maximum portability, you might want\n * to define a static <code>main</code> method as described in the comments\n * for the standard implementation of <a href=\"#main(String[])\"><code>main</code></a>.\n */\npublic abstract class Program extends JApplet\n  implements IOModel, Runnable, MouseListener, MouseMotionListener,\n             KeyListener, ActionListener {\n\n/** Constant specifying the north edge of the container */\n\tpublic static final String NORTH = BorderLayout.NORTH;\n\n/** Constant specifying the south edge of the container */\n\tpublic static final String SOUTH = BorderLayout.SOUTH;\n\n/** Constant specifying the east edge of the container */\n\tpublic static final String EAST = BorderLayout.EAST;\n\n/** Constant specifying the west edge of the container */\n\tpublic static final String WEST = BorderLayout.WEST;\n\n/** Constant specifying the center of the container */\n\tpublic static final String CENTER = BorderLayout.CENTER;\n\n/* Default constructor: Program */\n/**\n * This code initializes the program data structures.\n */\n\tprotected Program() {\n\t\tJTFTools.registerApplet(this);\n\t\tappletMode = checkForAppletMode();\n\t\tshown = false;\n\t\tparameterTable = null;\n\t\tfinalizers = new ArrayList<Object>();\n\t\tmyTitle = getClass().getName();\n\t\tmyTitle = myTitle.substring(myTitle.lastIndexOf(\".\") + 1);\n\t\tappletStub = new ProgramAppletStub(this);\n\t\tsetAppletStub(appletStub);\n\t\tinitContentPane(getContentPane());\n\t\tsetVisible(false);\n\t\tsetConsole(createConsole());\n\t\tmyDialog = createDialogIO();\n\t\tmyDialog.setAssociatedConsole(myConsole);\n\t\tmyMenuBar = createMenuBar();\n\t\tmyConsole.setMenuBar(myMenuBar);\n\t}\n\n/* Method: run() */\n/**\n * Specifies the code to be executed as the program runs.\n * The <code>run</code> method is required for applications that have\n * a thread of control that runs even in the absence of user actions,\n * such as a program that uses console interation or that involves\n * animation.  GUI-based programs that operate by setting up an initial\n * configuration and then wait for user events usually do not specify a\n * <code>run</code> method and supply a new definition for <code>init</code>\n * instead.\n */\n\tpublic void run() {\n\t\t/* Empty */\n\t}\n\n/* Method: init() */\n/**\n * Specifies the code to be executed as startup time before the\n * <code>run</code> method is called.  Subclasses can override this\n * method to perform any initialization code that would ordinarily\n * be included in an applet <code>init</code> method.  In general,\n * subclasses will override <code>init</code> in GUI-based programs\n * where the program simply sets up an initial state and then waits\n * for events from the user.  The <code>run</code> method is required\n * for applications in which there needs to be some control thread\n * while the program runs, as in a typical animation.\n *\n * @usage program.init();\n */\n\tpublic void init() {\n\t\t/* Empty */\n\t}\n\n/* Method: print(value) */\n/**\n * Displays the argument value on the console, leaving the cursor at the end of\n * the output.  The <code>print</code> method is overloaded so that\n * <code>value</code> can be of any type.\n *\n * @usage program.print(value);\n * @param value The value to be displayed\n */\n\tpublic void print(String value) {\n\t\tgetOutputModel().print(value);\n\t}\n\n/**\n * Makes sure that <code>print</code> can display a <code>boolean</code>.\n * @noshow\n */\n\tpublic final void print(boolean x) {\n\t\tprint(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>print</code> can display a <code>char</code>.\n * @noshow\n */\n\tpublic final void print(char x) {\n\t\tprint(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>print</code> can display a <code>double</code>.\n * @noshow\n */\n\tpublic final void print(double x) {\n\t\tprint(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>print</code> can display a <code>float</code>.\n * @noshow\n */\n\tpublic final void print(float x) {\n\t\tprint(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>print</code> can display an <code>int</code>.\n * @noshow\n */\n\tpublic final void print(int x) {\n\t\tprint(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>print</code> can display a <code>long</code>.\n * @noshow\n */\n\tpublic final void print(long x) {\n\t\tprint(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>print</code> can display an <code>Object</code>.\n * @noshow\n */\n\tpublic final void print(Object x) {\n\t\tprint(\"\" + x);\n\t}\n\n/* Method: println() */\n/**\n * Advances the console cursor to the beginning of the next line.\n *\n * @usage program.println();\n */\n\tpublic void println() {\n\t\tgetOutputModel().println();\n\t}\n\n/* Method: println(value) */\n/**\n * Displays the argument value on the console and then advances the cursor\n * to the beginning of the next line.  The <code>println</code> method is\n * overloaded so that <code>value</code> can be of any type.\n *\n * @usage program.println(value);\n * @param value The value to be displayed\n */\n\tpublic void println(String value) {\n\t\tgetOutputModel().println(value);\n\t}\n\n/**\n * Makes sure that <code>println</code> can display a <code>boolean</code>.\n * @noshow\n */\n\tpublic final void println(boolean x) {\n\t\tprintln(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>println</code> can display a <code>char</code>.\n * @noshow\n */\n\tpublic final void println(char x) {\n\t\tprintln(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>println</code> can display a <code>double</code>.\n * @noshow\n */\n\tpublic final void println(double x) {\n\t\tprintln(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>println</code> can display a <code>float</code>.\n * @noshow\n */\n\tpublic final void println(float x) {\n\t\tprintln(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>println</code> can display an <code>int</code>.\n * @noshow\n */\n\tpublic final void println(int x) {\n\t\tprintln(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>println</code> can display a <code>long</code>.\n * @noshow\n */\n\tpublic final void println(long x) {\n\t\tprintln(\"\" + x);\n\t}\n\n/**\n * Makes sure that <code>println</code> can display an <code>Object</code>.\n * @noshow\n */\n\tpublic final void println(Object x) {\n\t\tprintln(\"\" + x);\n\t}\n\n/* Method: showErrorMessage(msg) */\n/**\n * Displays the error message in the standard output model.\n *\n * @usage showErrorMessage(msg);\n * @param msg The error msg to be displayed\n */\n\tpublic void showErrorMessage(String msg) {\n\t\tgetOutputModel().showErrorMessage(msg);\n\t}\n\n/* Method: readLine() */\n/**\n * Reads and returns a line of input from the console.  The end-of-line\n * characters that terminate the input are not included in the returned\n * string.\n *\n * @usage String str = program.readLine();\n * @return The next line of input as a <code>String</code>\n */\n\tpublic final String readLine() {\n\t\treturn readLine(null);\n\t}\n\n/* Method: readLine(prompt) */\n/**\n * Prompts the user for a line of input.  The end-of-line characters\n * that terminate the input are not included in the returned string.\n *\n * @usage String str = program.readLine(prompt);\n * @param prompt The prompt string to display to the user\n * @return The next line of input as a <code>String</code>\n */\n\tpublic String readLine(String prompt) {\n\t\treturn getInputModel().readLine(prompt);\n\t}\n\n/* Method: readInt() */\n/**\n * Reads and returns an integer value from the user.  If the user types\n * a value that is not a legal integer, the method ordinarily offers the\n * user a chance to reenter the data, although this behavior can be\n * changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage int n = program.readInt();\n * @return The value of the input interpreted as a decimal integer\n */\n\tpublic final int readInt() {\n\t\treturn readInt(null, Integer.MIN_VALUE, Integer.MAX_VALUE);\n\t}\n\n/* Method: readInt(low, high) */\n/**\n * Reads and returns an integer value from the user, which is constrained to\n * be within the specified inclusive range.  If the user types a value\n * that is not a legal integer, the method ordinarily offers the user a chance\n * to reenter the data, although this behavior can be changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage int n = program.readInt(low, high);\n * @param low The lowest value in the permitted range\n * @param high The highest value in the permitted range\n * @return The value of the input interpreted as a decimal integer\n */\n\tpublic final int readInt(int low, int high) {\n\t\treturn readInt(null, low, high);\n\t}\n\n/* Method: readInt(prompt) */\n/**\n * Prompts the user to enter an integer, which is then returned as the value\n * of this method.  If the user types a value that is not a legal integer,\n * the method ordinarily offers the user a chance to reenter the data,\n * although this behavior can be changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage int n = program.readInt(prompt);\n * @param prompt The prompt string to display to the user\n * @return The value of the input interpreted as a decimal integer\n */\n\tpublic final int readInt(String prompt) {\n\t\treturn readInt(prompt, Integer.MIN_VALUE, Integer.MAX_VALUE);\n\t}\n\n/* Method: readInt(prompt, low, high) */\n/**\n * Prompts the user to enter an integer, which is then returned as the value\n * of this method.  The value must be within the inclusive range between\n * <code>low</code> and <code>high</code>.  If the user types a value that\n * is not a legal integer or is outside the specified range, the method\n * ordinarily offers the user a chance to reenter the data,\n * although this behavior can be changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage int n = console.readInt(prompt, low, high);\n * @param prompt The prompt string to display to the user\n * @param low The lowest value in the permitted range\n * @param high The highest value in the permitted range\n * @return The value of the input interpreted as a decimal integer\n */\n\tpublic int readInt(String prompt, int low, int high) {\n\t\treturn getInputModel().readInt(prompt, low, high);\n\t}\n\n/* Method: readDouble() */\n/**\n * Reads and returns a double-precision value from the user.  If the user\n * types a value that is not a legal number, the method ordinarily offers\n * the user a chance to reenter the data, although this behavior can be\n * changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage double d = program.readDouble();\n * @return The value of the input interpreted as a <code>double</code>\n */\n\tpublic final double readDouble() {\n\t\treturn readDouble(null, Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY);\n\t}\n\n/* Method: readDouble(low, high) */\n/**\n * Reads and returns a double-precision value from the user, which is\n * constrained to be within the specified inclusive range.  If the user\n * types a value that is not a legal number, the method ordinarily offers\n * the user a chance to reenter the data, although this behavior can be\n * changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage double d = program.readDouble(low, high);\n * @param low The lowest value in the permitted range\n * @param high The highest value in the permitted range\n * @return The value of the input interpreted as a <code>double</code>\n */\n\tpublic final double readDouble(double low, double high) {\n\t\treturn readDouble(null, low, high);\n\t}\n\n/* Method: readDouble(prompt) */\n/**\n * Prompts the user to enter an double-precision number, which is then\n * returned as the value of this method.  If the user types a value that\n * is not a legal number, the method ordinarily offers the user a chance to\n * reenter the data,  although this behavior can be changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage double d = program.readDouble(prompt);\n * @param prompt The prompt string to display to the user\n * @return The value of the input interpreted as a <code>double</code>\n */\n\tpublic final double readDouble(String prompt) {\n\t\treturn readDouble(prompt, Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY);\n\t}\n\n/* Method: readDouble(prompt, low, high) */\n/**\n * Prompts the user to enter an double-precision number, which is then returned\n * as the value of this method.  The value must be within the inclusive range\n * between <code>low</code> and <code>high</code>.  If the user types a value\n * that is not a legal number, the method ordinarily offers the user a chance\n * to reenter the data,  although this behavior can be changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage d = program.readDouble(prompt, low, high);\n * @param prompt The prompt string to display to the user\n * @param low The lowest value in the permitted range\n * @param high The highest value in the permitted range\n * @return The value of the input interpreted as a <code>double</code>\n */\n\tpublic double readDouble(String prompt, double low, double high) {\n\t\treturn getInputModel().readDouble(prompt, low, high);\n\t}\n\n/* Method: readBoolean() */\n/**\n * Reads and returns a boolean value (<code>true</code> or <code>false</code>).\n * The input must match one of these strings, ignoring case.  If the user\n * types a value that is not one of these possibilities, the method ordinarily\n * offers the user a chance to reenter the data, although this behavior\n * can be changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage boolean flag = program.readBoolean();\n * @return The value of the input interpreted as a boolean value\n */\n\tpublic final boolean readBoolean() {\n\t\treturn readBoolean(null);\n\t}\n\n/* Method: readBoolean(prompt) */\n/**\n * Prompts the user to enter a boolean value, which is returned as\n * the value of this method.  If the user types a value that is not a\n * legal boolean value, the method ordinarily offers the user a chance\n * to reenter the data, although this behavior can be changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage boolean flag = program.readBoolean(prompt);\n * @param prompt The prompt string to display to the user\n * @return The value of the input interpreted as a boolean value\n */\n\tpublic final boolean readBoolean(String prompt) {\n\t\treturn readBoolean(prompt, \"true\", \"false\");\n\t}\n\n/* Method: readBoolean(prompt, trueLabel, falseLabel) */\n/**\n * Prompts the user to enter a boolean value, which is matched against the\n * labels provided.  If the user enters a value that is not one of the two\n * choices, <code>readBoolean</code> ordinarily offers the user a chance\n * to reenter the data, although this behavior can be changed using the\n * <a href=\"#setExceptionOnError(boolean)\"><code>setExceptionOnError</code></a> method.\n *\n * @usage boolean flag = program.readBoolean(prompt);\n * @param prompt The prompt string to display to the user\n * @param trueLabel The string used to indicate <code>true</code>\n * @param falseLabel The string used to indicate <code>false</code>\n * @return The value of the input interpreted as a boolean value\n */\n\tpublic boolean readBoolean(String prompt, String trueLabel, String falseLabel) {\n\t\treturn getInputModel().readBoolean(prompt, trueLabel, falseLabel);\n\t}\n\n/* Method: isAppletMode() */\n/**\n * Returns <code>true</code> if this program is running as an applet in a browser.\n *\n * @usage if (isAppletMode()) . . .\n * @return <code>true</code> if this program is running as an applet, <code>false</code> otherwise\n * @noshow\n */\n\tpublic boolean isAppletMode() {\n\t\treturn appletMode;\n\t}\n\n/* Method: setConsole(console) */\n/**\n * Sets the console associated with this program.\n *\n * @usage program.setConsole(console);\n * @param console The <code>IOConsole</code> object used for this program\n */\n\tpublic void setConsole(IOConsole console) {\n\t\tmyConsole = console;\n\t}\n\n/* Method: getConsole() */\n/**\n * Returns the console associated with this program.\n *\n * @usage IOConsole console = program.getConsole();\n * @return The <code>IOConsole</code> object used for this program\n */\n\tpublic IOConsole getConsole() {\n\t\treturn myConsole;\n\t}\n\n/* Method: setDialog(dialog) */\n/**\n * Sets the dialog associated with this program.\n *\n * @usage program.setDialog(dialog);\n * @param dialog The <code>IODialog</code> object used for this program\n */\n\tpublic void setDialog(IODialog dialog) {\n\t\tmyDialog = dialog;\n\t}\n\n/* Method: getDialog() */\n/**\n * Returns the dialog used for user interaction.\n *\n * @usage IODialog dialog = program.getDialog();\n * @return The <code>IODialog</code> object used for this program\n */\n\tpublic IODialog getDialog() {\n\t\treturn myDialog;\n\t}\n\n/* Method: setInputModel(io) */\n/**\n * Sets the input model associated with this program.\n *\n * @usage program.setInputModel(io);\n * @param io The input model used for this program\n */\n\tpublic void setInputModel(IOModel io) {\n\t\tinputModel = io;\n\t}\n\n/* Method: setOutputModel(io) */\n/**\n * Sets the output model associated with this program.\n *\n * @usage program.setOutputModel(io);\n * @param io The <code>IOModel</code> object used as the output model\n */\n\tpublic void setOutputModel(IOModel io) {\n\t\toutputModel = io;\n\t}\n\n/* Method: getInputModel() */\n/**\n * Returns the <code>IOModel</code> used for program input, which will\n * ordinarily be the console.\n *\n * @usage IOModel io = program.getInputModel();\n * @return The <code>IOModel</code> used for program input\n */\n\tpublic IOModel getInputModel() {\n\t\treturn (inputModel == null) ? myConsole : inputModel;\n\t}\n\n/* Method: getOutputModel() */\n/**\n * Returns the <code>IOModel</code> used for program output, which will\n * ordinarily be the console.\n *\n * @usage IOModel io = program.getOutputModel();\n * @return The <code>IOModel</code> used for program output\n */\n\tpublic IOModel getOutputModel() {\n\t\treturn (outputModel == null) ? myConsole : outputModel;\n\t}\n\n/* Method: getReader() */\n/**\n * Returns a <code>BufferedReader</code> whose input comes from the console.\n *\n * @usage BufferedReader rd = getReader();\n * @return A <code>Reader</code> for use with this console\n */\n\tpublic BufferedReader getReader() {\n\t\treturn getConsole().getReader();\n\t}\n\n/* Method: getWriter() */\n/**\n * Returns a <code>PrintWriter</code> whose output is directed to the console.\n *\n * @usage PrintWriter wr = getWriter();\n * @return A <code>PrintWriter</code> for use with this console\n */\n\tpublic PrintWriter getWriter() {\n\t\treturn getConsole().getWriter();\n\t}\n\n/* Method: getRegionPanel(region) */\n/**\n * Gets the <code>JPanel</code> for the specified region.\n *\n * @usage JPanel panel = getRegionPanel(region);\n * @param region The region of the window (<code>NORTH</code>, <code>SOUTH</code>,\n *               <code>EAST</code>, <code>WEST</code>, or <code>CENTER</code>)\n * @return The <code>JPanel</code> for that subregion\n * @noshow\n */\n\tpublic JPanel getRegionPanel(String region) {\n\t\tif (region.equals(NORTH)) {\n\t\t\treturn northPanel;\n\t\t} else if (region.equals(SOUTH)) {\n\t\t\treturn southPanel;\n\t\t} else if (region.equals(WEST)) {\n\t\t\treturn westPanel;\n\t\t} else if (region.equals(EAST)) {\n\t\t\treturn eastPanel;\n\t\t} else if (region.equals(CENTER)) {\n\t\t\treturn centerPanel;\n\t\t} else {\n\t\t\tthrow new ErrorException(\"getRegionPanel: Illegal region \" + region);\n\t\t}\n\t}\n\n/* Method: add(comp, region, constraints) */\n/**\n * Adds the component to the specified border region with the indicated\n * constraints object.\n *\n * @usage add(comp, region, constraints);\n * @param comp The component to be added\n * @param region The region of the window (<code>NORTH</code>, <code>SOUTH</code>,\n *               <code>EAST</code>, <code>WEST</code>, or <code>CENTER</code>)\n * @param constraints The constraints object\n * @noshow\n */\n\tpublic void add(Component comp, String region, Object constraints) {\n\t\tif (region.equals(NORTH)) {\n\t\t\tnorthPanel.add(comp, constraints);\n\t\t} else if (region.equals(SOUTH)) {\n\t\t\tsouthPanel.add(comp, constraints);\n\t\t} else if (region.equals(WEST)) {\n\t\t\twestPanel.add(comp, constraints);\n\t\t} else if (region.equals(EAST)) {\n\t\t\teastPanel.add(comp, constraints);\n\t\t} else if (region.equals(CENTER)) {\n\t\t\tcenterPanel.add(comp, constraints);\n\t\t} else {\n\t\t\tthrow new ErrorException(\"add: Illegal region \" + region);\n\t\t}\n\t}\n\n/* Method: addActionListeners() */\n/**\n * Adds the program as an <code>ActionListener</code> to every button in\n * the structure that does not have a listener already.\n *\n * @usage addActionListeners();\n */\n\tpublic void addActionListeners() {\n\t\taddActionListeners(this);\n\t}\n\n/* Method: addActionListeners(listener) */\n/**\n * Adds the specified listener to every button in\n * the structure that does not have a listener already.\n *\n * @usage addActionListeners(listener);\n * @param listener The <code>ActionListener</code> to be added\n */\n\tpublic void addActionListeners(ActionListener listener) {\n\t\taddActionListeners(getContentPane(), listener);\n\t}\n\n/* Method: setTitle(title) */\n/**\n * Sets the title of this program.  The title appears in the title bar\n * when the program is running as an application.\n *\n * @usage setTitle(title);\n * @param title The title for this program\n */\n\tpublic void setTitle(String title) {\n\t\tmyTitle = title;\n\t\tif (programFrame != null) programFrame.setTitle(title);\n\t}\n\n/* Method: getTitle() */\n/**\n * Gets the title of this program.\n *\n * @usage String title = getTitle();\n * @return The title in use for this program\n */\n\tpublic String getTitle() {\n\t\treturn myTitle;\n\t}\n\n/* Method: getMenuBar() */\n/**\n * Returns the menu bar associated with this program.  Note that this menu bar\n * cannot be set by clients, although it can be changed initially by overriding\n * the <code>createMenuBar</code> factory method.\n *\n * @usage ProgramMenuBar mbar = getMenuBar();\n * @return The menu bar in use for this program\n */\n\tpublic ProgramMenuBar getMenuBar() {\n\t\treturn myMenuBar;\n\t}\n\n/* Method: start(args) */\n/**\n * Starts the program using the specified argument list.\n *\n * @usage program.start(args);\n * @param args An array of strings passed to the program\n */\n\tpublic void start(String[] args) {\n\t\tif (parameterTable == null) parameterTable = createParameterTable(args);\n\t\tif (getParent() == null) initApplicationFrame();\n\t\tvalidate();\n\t\tsetVisible(true);\n\t\tif (programFrame != null) {\n\t\t\tprogramFrame.validate();\n\t\t\tint nComponents = centerPanel.getComponentCount();\n\t\t\tnComponents += northPanel.getComponentCount();\n\t\t\tnComponents += southPanel.getComponentCount();\n\t\t\tnComponents += westPanel.getComponentCount();\n\t\t\tnComponents += eastPanel.getComponentCount();\n\t\t\tif (nComponents > 0) {\n\t\t\t\tprogramFrame.setVisible(true);\n\t\t\t\tshown = true;\n\t\t\t}\n\t\t\tcircumventFrameSizeBug(programFrame, programBounds.getSize());\n\t\t}\n\t\tstarted = true;\n\t\tinit();\n\t\tif (programFrame != null && myMenuBar != null) {\n\t\t\tmyMenuBar.install(programFrame);\n\t\t}\n\t\tvalidate();\n\t\tstartRun();\n\t}\n\n/* Method: exit() */\n/**\n * Exits from the program.  Subclasses should override this method if they need\n * to perform any actions before shutting down the program, such as asking the\n * user to save any unsaved files.  Any clients that do override this method\n * should call <code>super.exit()</code> at the end of their processing.\n *\n * @usage program.exit();\n */\n\tpublic void exit() {\n\t\tint nFinalizers = finalizers.size();\n\t\tfor (int i = 0; i < nFinalizers; i++) {\n\t\t\tObject obj = finalizers.get(i);\n\t\t\ttry {\n\t\t\t\tClass<?> c = obj.getClass();\n\t\t\t\tMethod exit = c.getMethod(\"exit\", new Class[0]);\n\t\t\t\texit.invoke(obj, new Object[0]);\n\t\t\t} catch (Exception ex) {\n\t\t\t\tthrow new ErrorException(ex);\n\t\t\t}\n\t\t}\n\t\tJTFTools.terminateAppletThreads(this);\n\t\tif (!appletMode) System.exit(0);\n\t}\n\n/* Method: addExitHook(obj) */\n/**\n * Requests that the program call the <code>exit</code> method in the\n * specified object before exiting.\n *\n * @usage program.addExitHook(obj);\n */\n\tpublic void addExitHook(Object obj) {\n\t\tfinalizers.add(obj);\n\t}\n\n/* Method: setParameter(name, value) */\n/**\n * Sets a new value for the named parameter.\n *\n * @usage setParameter(name, value);\n * @param name The name of the parameter\n * @param value The new value\n * @noshow\n */\n\tpublic void setParameter(String name, String value) {\n\t\tif (parameterTable == null) {\n\t\t\tparameterTable = new HashMap<String,String>();\n\t\t}\n\t\tparameterTable.put(name.toLowerCase(), value);\n\t}\n\n/* Method: getMainThread() */\n/**\n * Returns the thread that is running the main program.\n *\n * @usage Thread mainThread = getMainThread();\n * @return The thread that is running the main program, if any\n * @noshow\n */\n\tpublic Thread getMainThread() {\n\t\treturn (appletStarter == null) ? null : appletStarter.getMainThread();\n\t}\n\n/* Method: pause(milliseconds) */\n/**\n * Delays the calling thread for the specified time, which is expressed in\n * milliseconds.  Unlike <code>Thread.sleep</code>, this method never throws an\n * exception.\n *\n * @usage program.pause(milliseconds);\n * @param milliseconds The sleep time in milliseconds\n */\n\tpublic void pause(double milliseconds) {\n\t\tJTFTools.pause(milliseconds);\n\t}\n\n/* Method: getCentralRegionSize() */\n/**\n * Returns the size of the central region.  If the content pane has\n * not been validated, this method computes its preferred size by\n * subtracting the sizes required for the side panels from the size\n * of the entire frame.\n *\n * @return The size of the central region\n */\n\tpublic Dimension getCentralRegionSize() {\n\t\tif (centerPanel == null) return super.getSize();\n\t\tif (initFinished) return centerPanel.getSize();\n\t\tDimension size = (programFrame == null) ? super.getSize() : programFrame.getSize();\n\t\tInsets insets = (programFrame == null) ? super.getInsets() : programFrame.getInsets();\n\t\tsize.width -= westPanel.getPreferredSize().width + eastPanel.getPreferredSize().width;\n\t\tsize.width -= insets.left + insets.right;\n\t\tsize.height -= northPanel.getPreferredSize().height + southPanel.getPreferredSize().height;\n\t\tsize.height -= insets.top + insets.bottom;\n\t\treturn size;\n\t}\n\n/**********************************************************************/\n/* Listener methods                                                   */\n/**********************************************************************/\n\n/* Method: mouseClicked (implements MouseListener) */\n/**\n * Called when the mouse is clicked.  A call to <code>mouseClicked</code>\n * is always preceded by both a <code>mousePressed</code> and a\n * <code>mouseReleased</code> event for the same source.\n */\n\tpublic void mouseClicked(MouseEvent e) { }\n\n/* Method: mousePressed (implements MouseListener) */\n/**\n * Called when the mouse button is pressed.\n */\n\tpublic void mousePressed(MouseEvent e) { }\n\n/* Method: mouseReleased (implements MouseListener) */\n/**\n * Called when the mouse button is released.\n */\n\tpublic void mouseReleased(MouseEvent e) { }\n\n/* Method: mouseEntered (implements MouseListener) */\n/**\n * Called when the mouse enters the source (which may be\n * either a component or a <code>GObject</code>).\n */\n\tpublic void mouseEntered(MouseEvent e) { }\n\n/* Method: mouseExited (implements MouseListener) */\n/**\n * Called when the mouse exits the source (which may be\n * either a component or a <code>GObject</code>).\n */\n\tpublic void mouseExited(MouseEvent e) { }\n\n/* Method: mouseMoved (implements MouseMotionListener) */\n/**\n * Called when the mouse is moved.\n */\n\tpublic void mouseMoved(MouseEvent e) { }\n\n/* Method: mouseDragged (implements MouseMotionListener) */\n/**\n * Called when the mouse is dragged with the button down.  Java\n * makes several guarantees about dragging.  First, a\n * <code>mouseDragged</code> call is always preceded by a\n * <code>mousePressed</code> call for the same source.  If the\n * mouse is pressed elsewhere and then enters a source with\n * the button down, no drag event occurs.  Moreover, once the\n * mouse button goes down in a particular source, only that\n * source will receive mouse events until the button goes up.\n * Those events, moreover, are reported even in the mouse\n * travels outside the domain of the object.\n */\n\tpublic void mouseDragged(MouseEvent e) { }\n\n/* Method: keyTyped (implements KeyListener) */\n/**\n * Called when a key is typed (i.e., pressed and released).\n */\n\tpublic void keyTyped(KeyEvent e) { }\n\n/* Method: keyPressed (implements KeyListener) */\n/**\n * Called when a key is pressed.\n */\n\tpublic void keyPressed(KeyEvent e) { }\n\n/* Method: keyReleased (implements KeyListener) */\n/**\n * Called when a key is released.\n */\n\tpublic void keyReleased(KeyEvent e) { }\n\n/* Method: actionPerformed (implements ActionListener) */\n/**\n * Called when a component (typically a button) is activated.\n */\n\tpublic void actionPerformed(ActionEvent e) { }\n\n/**********************************************************************/\n/* Factory methods                                                    */\n/**********************************************************************/\n\n/* Factory method: createProgramFrame() */\n/**\n * Creates the frame containing the program.\n *\n * @usage Frame frame = program.createProgramFrame();\n * @return The newly allocated <code>Frame</code> object\n */\n\tprotected JFrame createProgramFrame() {\n\t\treturn programFrame = new ProgramFrame(getTitle());\n\t}\n\n/* Factory method: createConsole() */\n/**\n * Creates the console used by the <code>ConsoleProgram</code>.  Subclasses can\n * override this method to create their own console types.\n *\n * @usage IOConsole console = program.createConsole();\n * @return The console to be used by the program\n */\n\tprotected IOConsole createConsole() {\n\t\treturn IOConsole.SYSTEM_CONSOLE;\n\t}\n\n/* Factory method: createDialogIO() */\n/**\n * Creates the dialog used for interaction (primarily by the <code>DialogProgram</code>\n * class).  Subclasses can override this method to create their own dialog types.\n *\n * @usage IODialog dialog = program.createDialogIO();\n * @return The dialog to be used by the program\n */\n\tprotected IODialog createDialogIO() {\n\t\treturn new IODialog(getContentPane());\n\t}\n\n/* Factory method: createMenuBar() */\n/**\n * Creates a menu bar for use with the program.\n *\n * @usage ProgramMenuBar menuBar = createMenuBar();\n * @return A menu bar for use with this <code>Program</code>\n * @noshow\n */\n\tprotected ProgramMenuBar createMenuBar() {\n\t\treturn new ProgramMenuBar(this);\n\t}\n\n/**********************************************************************/\n/* Overrides of existing methods                                      */\n/**********************************************************************/\n\n/* Overridden method: getPreferredSize() */\n/**\n * Returns the preferred size of the content pane.\n *\n * @usage Dimension size = getPreferredSize();\n * @return The preferred size of the content pane\n * @noshow\n */\n\tpublic Dimension getPreferredSize() {\n\t\treturn computeProgramBounds().getSize();\n\t}\n\n/* Overridden method: getWidth() */\n/**\n * Returns the width of the central region.\n *\n * @usage int width = getWidth();\n * @return The width of the central region\n * @noshow\n */\n\tpublic int getWidth() {\n\t\tString caller = getMyCaller();\n\t\tif (caller.startsWith(\"java.\") || caller.startsWith(\"javax.\")) {\n\t\t\treturn super.getWidth();\n\t\t} else {\n\t\t\treturn getCentralRegionSize().width;\n\t\t}\n\t}\n\n/* Overridden method: getHeight() */\n/**\n * Returns the height of the central region.\n *\n * @usage int height = getHeight();\n * @return The height of the central region\n * @noshow\n */\n\tpublic int getHeight() {\n\t\tString caller = getMyCaller();\n\t\tif (caller.startsWith(\"java.\") || caller.startsWith(\"javax.\")) {\n\t\t\treturn super.getHeight();\n\t\t} else {\n\t\t\treturn getCentralRegionSize().height;\n\t\t}\n\t}\n\n/* Overridden method: getParameter(name) */\n/**\n * Returns the parameter associated with name.\n *\n * @usage String value = getParameter(name);\n * @param name The name of the parameter\n * @return The value associated with the parameter, or <code>null</code> if none\n * @noshow\n */\n\tpublic String getParameter(String name) {\n\t\tString value = null;\n\t\tif (parameterTable != null) {\n\t\t\tvalue = parameterTable.get(name.toLowerCase());\n\t\t}\n\t\tif (value != null) return value;\n\t\treturn super.getParameter(name);\n\t}\n\n/* Overridden method: setLayout(layout) */\n/**\n * Sets the layout manager for the central region of the content pane.\n *\n * @usage setLayout(layout);\n * @param layout The layout manager to use\n * @noshow\n */\n\tpublic void setLayout(LayoutManager layout) {\n\t\tif (isRootPaneCheckingEnabled()) {\n\t\t\tcenterPanel.setLayout(layout);\n\t\t} else {\n\t\t\tsuper.setLayout(layout);\n\t\t}\n\t}\n\n/* Overridden method: getLayout() */\n/**\n * Gets the layout manager for the central region of the content pane.\n *\n * @usage LayoutManager layout = setLayout();\n * @return The active layout manager\n * @noshow\n */\n\tpublic LayoutManager getLayout() {\n\t\tif (isRootPaneCheckingEnabled()) {\n\t\t\treturn centerPanel.getLayout();\n\t\t} else {\n\t\t\treturn super.getLayout();\n\t\t}\n\t}\n\n/* Overridden method: setBackground(color) */\n/**\n * Sets the background for the central region of the content pane.\n *\n * @usage setBackground(color);\n * @param color The new background color\n * @noshow\n */\n\tpublic void setBackground(Color color) {\n\t\tif (isRootPaneCheckingEnabled()) {\n\t\t\tcenterPanel.setBackground(color);\n\t\t}\n\t\tsuper.setBackground(color);\n\t}\n\n/* Overridden method: addImpl(comp, constraints, index) */\n/**\n * Adds the specified component to the content pane using the specified constraints and index.\n */\n\tprotected void addImpl(Component comp, Object constraints, int index) {\n\t\tif (isRootPaneCheckingEnabled()) {\n\t\t\tif (constraints == null) {\n\t\t\t\tcenterPanel.add(comp, index);\n\t\t\t} else if (constraints.equals(NORTH)) {\n\t\t\t\tnorthPanel.add(comp, index);\n\t\t\t} else if (constraints.equals(SOUTH)) {\n\t\t\t\tsouthPanel.add(comp, index);\n\t\t\t} else if (constraints.equals(WEST)) {\n\t\t\t\twestPanel.add(comp, index);\n\t\t\t} else if (constraints.equals(EAST)) {\n\t\t\t\teastPanel.add(comp, index);\n\t\t\t} else if (constraints.equals(CENTER)) {\n\t\t\t\tcenterPanel.add(comp, index);\n\t\t\t} else {\n\t\t\t\tcenterPanel.add(comp, constraints, index);\n\t\t\t}\n\t\t\tif (!shown && programFrame != null) {\n\t\t\t\tprogramFrame.setVisible(true);\n\t\t\t\tshown = true;\n\t\t\t}\n\t\t} else {\n\t\t\tsuper.addImpl(comp, constraints, index);\n\t\t}\n\t}\n\n/* Overridden method: remove(index) */\n/**\n * Removes the component at the specified index from the central region.\n *\n * @usage remove(index);\n * @param index The index position of the component to remove\n * @noshow\n */\n\tpublic void remove(int index) {\n\t\tif (isRootPaneCheckingEnabled()) {\n\t\t\tcenterPanel.remove(index);\n\t\t} else {\n\t\t\tsuper.remove(index);\n\t\t}\n\t}\n\n/* Overridden method: remove(comp) */\n/**\n * Removes the specified component from the central region.\n *\n * @usage remove(comp);\n * @param comp The component to remove\n * @noshow\n */\n\tpublic void remove(Component comp) {\n\t\tif (isRootPaneCheckingEnabled()) {\n\t\t\tcenterPanel.remove(comp);\n\t\t} else {\n\t\t\tsuper.remove(comp);\n\t\t}\n\t}\n\n/* Overridden method: removeAll() */\n/**\n * Removes all components from the central region.\n *\n * @usage removeAll();\n * @noshow\n */\n\tpublic void removeAll() {\n\t\tif (isRootPaneCheckingEnabled()) {\n\t\t\tcenterPanel.removeAll();\n\t\t} else {\n\t\t\tsuper.removeAll();\n\t\t}\n\t}\n\n/* Overridden method: validate() */\n/**\n * Forwards validate to the content pane.\n *\n * @usage validate();\n * @noshow\n */\n\tpublic void validate() {\n\t\tif (isRootPaneCheckingEnabled()) getContentPane().validate();\n\t\tsuper.validate();\n\t}\n\n/* Overridden method: repaint() */\n/**\n * Forwards repaint to the content pane.\n *\n * @usage repaint();\n * @noshow\n */\n\tpublic void repaint() {\n\t\tif (isRootPaneCheckingEnabled()) getContentPane().repaint();\n\t\tsuper.repaint();\n\t}\n\n/* Overridden method: start() */\n/**\n * Starts the program when it is running in application mode.  Note that this\n * overloads the <code>start</code> method in <code>Applet</code> and therefore\n * will be called as part of applet startup.\n *\n * @usage program.start();\n * @noshow\n */\n\tpublic final void start() {\n\t\tappletMode = getParent() != null;\n\t\tif (appletMode) {\n\t\t\tif (!started) {\n\t\t\t\tstarted = true;\n\t\t\t\tvalidate();\n\t\t\t\tsetVisible(true);\n\t\t\t\tappletStarter = new AppletStarter(this);\n\t\t\t\tappletStarter.start();\n\t\t\t}\n\t\t} else {\n\t\t\tstart(null);\n\t\t}\n\t}\n\n/* Overridden method: destroy() */\n/**\n * Called when the program has been told to destroy itself.  The code here\n * stops the main thread and any animators that have been initiated by this\n * applet.\n *\n * @usage program.destroy();\n * @noshow\n */\n\tpublic void destroy() {\n\t\tAnimator.shutdown(this);\n\t\tif (appletStarter != null) appletStarter.stop();\n\t}\n\n/* Static method: main(args) */\n/**\n * Every application must either contain a \"Main-Class\" entry in its\n * manifest file or include a main method that looks like this, where\n * <code>MyClass</code> is the name of the program class:\n *\n * <p><pre><code>\n * &nbsp;    public static void main(String[] args) {\n * &nbsp;       new MyClass().start();\n * &nbsp;    }\n * </code></pre>\n *\n * <p>If the program needs the command line arguments, the <code>args</code>\n * array can be passed to the <code>start</code> method and then retrieved\n * using the <code>getArgumentArray</code> method.\n *\n * @param args An array of string arguments\n */\n\tpublic static void main(String[] args) {\n\t\tHashMap<String,String> ht = createParameterTable(args);\n\t\tJTFTools.setDebugOptions(ht.get(\"debug\"));\n\t\tString className = ht.get(\"code\");\n\t\tif (className == null) {\n\t\t\tclassName = JTFTools.getMainClass();\n\t\t}\n\t\tClass<?> mainClass = null;\n\t\tProgram program = null;\n\t\tif (className != null) {\n\t\t\tif (className.endsWith(\".class\")) {\n\t\t\t\tclassName = className.substring(0, className.length() - 6);\n\t\t\t}\n\t\t\tclassName = className.replace('/', '.');\n\t\t\tCommandLineProgram.checkIfHeadless(className);\n\t\t\ttry {\n\t\t\t\tmainClass = Class.forName(className);\n\t\t\t} catch (ClassNotFoundException ex) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t}\n\t\tif (mainClass != null) {\n\t\t\ttry {\n\t\t\t\tObject obj = mainClass.newInstance();\n\t\t\t\tif (obj instanceof Program) {\n\t\t\t\t\tprogram = (Program) obj;\n\t\t\t\t\tprogram.setStartupObject(null);\n\t\t\t\t} else {\n\t\t\t\t\tclassName = ht.get(\"program\");\n\t\t\t\t\tif (className == null) {\n\t\t\t\t\t\tthrow new ErrorException(\"Main class does not specify a program\");\n\t\t\t\t\t}\n\t\t\t\t\tprogram = (Program) Class.forName(className).newInstance();\n\t\t\t\t\tprogram.setStartupObject(obj);\n\t\t\t\t}\n\t\t\t} catch (IllegalAccessException ex) {\n\t\t\t\t/* Empty */\n\t\t\t} catch (InstantiationException ex) {\n\t\t\t\t/* Empty */\n\t\t\t} catch (ClassNotFoundException ex) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t}\n\t\tif (program == null) throw new ErrorException(\"Cannot determine the main class.\");\n\t\tprogram.setParameterTable(ht);\n\t\tprogram.start();\n\t}\n\n/* Method: menuAction(e) */\n/**\n * Called whenever a program action is detected in the menu bar.\n * Subclasses can override this method to extend the set of menu\n * commands recognized even in the absence of a component with\n * keyboard focus.\n */\n\tpublic boolean menuAction(ActionEvent e) {\n\t\tString cmd = e.getActionCommand();\n\t\tif (cmd.equals(\"Quit\")) {\n\t\t\texit();\n\t\t} else if (cmd.equals(\"Print\")) {\n\t\t\tFrame frame = JTFTools.getEnclosingFrame(this);\n\t\t\tif (frame == null) return true;\n\t\t\tPrintJob pj = frame.getToolkit().getPrintJob(frame, myTitle, null);\n\t\t\tif (pj == null) return true;\n\t\t\tGraphics pg = pj.getGraphics();\n\t\t\tpg.translate(PRINT_MARGIN, PRINT_MARGIN);\n\t\t\tframe.printAll(pg);\n\t\t\tpj.end();\n\t\t\treturn true;\n\t\t} else if (cmd.equals(\"Export Applet\") || cmd.equals(\"Submit Project\")) {\n\t\t\tJTFTools.executeExportAction(this, cmd);\n\t\t\treturn true;\n\t\t}\n\t\treturn getConsole().menuAction(e);\n\t}\n\n/**********************************************************************/\n/* Protected methods                                                  */\n/**********************************************************************/\n\n/* Protected method: getBorder(side) */\n/**\n * Returns the component installed as a border on the specified side, which must\n * be one of the constants from <code>BorderLayout</code> (<code>NORTH</code>,\n * <code>SOUTH</code>, <code>EAST</code>, <code>WEST</code>).\n *\n * @usage getBorder(side, comp);\n * @param side The side (<code>NORTH</code>, <code>SOUTH</code>, <code>EAST</code>,\n *             or <code>WEST</code>)\n * @return The component used as a border on the specified side\n * @noshow\n */\n\tprotected Component getBorder(String side) {\n\t\tif (side.equals(NORTH)) return northBorder;\n\t\tif (side.equals(SOUTH)) return southBorder;\n\t\tif (side.equals(EAST)) return eastBorder;\n\t\tif (side.equals(WEST)) return westBorder;\n\t\tthrow new ErrorException(\"Illegal border specification - \" + side);\n\t}\n\n/* Protected method: getArgumentArray() */\n/**\n * Retrieves the array of arguments passed in from the command line, or\n * <code>null</code> if no arguments are available.\n *\n * @usage String[] args = getArgumentArray();\n * @return The array of command-line arguments\n * @noshow\n */\n\tprotected String[] getArgumentArray() {\n\t\tif (parameterTable == null) return null;\n\t\tStringTokenizer tokenizer = new StringTokenizer(parameterTable.get(\"ARGS\"), \"\\t\", false);\n\t\tString[] args = new String[tokenizer.countTokens()];\n\t\tfor (int i = 0; tokenizer.hasMoreTokens(); i++) {\n\t\t\targs[i] = tokenizer.nextToken();\n\t\t}\n\t\treturn args;\n\t}\n\n/* Protected method: isStarted() */\n/**\n * Checks to see whether this program has started, usually by checking to see\n * whether some pane exists.  Subclasses can override this method to ensure\n * that their structures are visible before proceeding.\n * @noshow\n */\n\tprotected boolean isStarted() {\n\t\tIOConsole console = getConsole();\n\t\tif (console == null) return false;\n\t\tif (console.getParent() == null) return true;\n\t\tDimension size = console.getSize();\n\t\treturn (console.isShowing()) && (size.width != 0) && (size.height != 0);\n\t}\n\n/* Protected method: startHook() */\n/**\n * Performs class-specific initialization for the program just before\n * it starts.\n * @noshow\n */\n\tprotected void startHook() {\n\t\t/* Empty */\n\t}\n\n/* Protected method: endHook() */\n/**\n * Performs class-specific cleanup for the program just after\n * it finishes.\n * @noshow\n */\n\tprotected void endHook() {\n\t\t/* Empty */\n\t}\n\n/* Protected method: setAppletStub(stub) */\n/**\n * Sets the applet stub for this program in a way that makes it possible for\n * clients to retrieve it.\n *\n * @usage setAppletStub(stub);\n * @param stub The applet stub\n */\n\tprotected void setAppletStub(AppletStub stub) {\n\t\tappletStub = stub;\n\t\tsetStub(stub);\n\t}\n\n/* Protected method: getAppletStub() */\n/**\n * Retrieves the applet stub.\n *\n * @usage AppletStub stub = getAppletStub();\n * @return The applet stub\n */\n\tprotected AppletStub getAppletStub() {\n\t\treturn appletStub;\n\t}\n\n/* Protected method: setParameterTable(ht) */\n/**\n * Sets the parameter table for this program.\n *\n * @usage setParameterTable(ht);\n * @param ht The parameter table\n */\n\tprotected void setParameterTable(HashMap<String,String> ht) {\n\t\tparameterTable = ht;\n\t}\n\n/* Protected method: getParameterTable() */\n/**\n * Retrieves the parameter table.\n *\n * @usage ParameterTable ht = getParameterTable();\n * @return The parameter table\n */\n\tprotected HashMap<String,String> getParameterTable() {\n\t\treturn parameterTable;\n\t}\n\n/* Protected method: setStartupObject(obj) */\n/**\n * Sets the object that is created when the program is started so that\n * it can be retrieved later by <code>getStartupObject</code>.\n *\n * @usage setStartupObject(obj);\n * @param obj The startup object\n */\n\tprotected void setStartupObject(Object obj) {\n\t\tstartupObject = obj;\n\t}\n\n/* Protected method: getStartupObject() */\n/**\n * Retrieves the object that was created when this program was started\n * if that object is something other than a <code>Program</code>.  In\n * the normal case of running a <code>Program</code> object, this method\n * will return <code>null</code>.\n *\n * @usage Object obj = getStartupObject();\n * @return The startup object\n */\n\tprotected Object getStartupObject() {\n\t\treturn startupObject;\n\t}\n\n/* Protected method: startRun() */\n/**\n * Initializes and runs the run method.\n */\n\tprotected void startRun() {\n\t\tProgramStartupListener listener = new ProgramStartupListener();\n\t\tComponent root = getRootPane();\n\t\tif (root.isShowing()) {\n\t\t\troot.addComponentListener(listener);\n\t\t\troot.validate();\n\t\t\tlistener.waitForStartup(this);\n\t\t\troot.update(root.getGraphics());\n\t\t}\n\t\troot.setCursor(Cursor.getDefaultCursor());\n\t\tinitFinished = true;\n\t\tstartHook();\n\t\trunHook();\n\t\tendHook();\n\t\tif (!root.isShowing() && !getContentPane().isShowing()) exit();\n\t}\n\n/* Protected method: runHook() */\n/**\n * Calls the run method in the program.  Subclasses can override this\n * method to transfer control somewhere else.\n */\n\tprotected void runHook() {\n\t\trun();\n\t}\n\n/* Protected static method: createParameterTable(args) */\n/**\n * Creates a hash table containing the parameters specified in the\n * argument list.  Parameters are taken to be any argument that matches\n * the template\n *\n * <p>   <i>name</i><code>=</code><i>value</i>\n *\n * All other arguments are collected as a tab-separated string and placed\n * in an entry under the key <code>\"ARGS\"</code>.  All named parameters\n * are converted to lower case to preserve the case-insensitive semantics\n * of <code>getParameter</code>.\n *\n * @usage HashMap<String,String> ht = createParameterTable(args);\n * @param args The array of strings passed to the application\n * @return A <code>HashMap</code> containing the parameter bindings\n */\n\tprotected static HashMap<String,String> createParameterTable(String[] args) {\n\t\tif (args == null) return null;\n\t\tHashMap<String,String> ht = new HashMap<String,String>();\n\t\tString newArgs = \"\";\n\t\tfor (int i = 0; i < args.length; i++) {\n\t\t\tString arg = args[i];\n\t\t\tint equals = arg.indexOf('=');\n\t\t\tif (equals > 0) {\n\t\t\t\tString name = arg.substring(0, equals).toLowerCase();\n\t\t\t\tString value = arg.substring(equals + 1);\n\t\t\t\tht.put(name, value);\n\t\t\t} else {\n\t\t\t\tif (newArgs.length() > 0) newArgs += '\\t';\n\t\t\t\tnewArgs += arg;\n\t\t\t}\n\t\t}\n\t\tht.put(\"ARGS\", newArgs);\n\t\treturn ht;\n\t}\n\n/**********************************************************************/\n/* Private methods                                                    */\n/**********************************************************************/\n\n/* Private method: initContentPane(contentPane) */\n/**\n * Initializes the content pane to contain its five regions.\n */\n\tprivate void initContentPane(Container contentPane) {\n\t\tcontentPane.setLayout(new ProgramContentPaneLayout(this));\n\t\tnorthPanel = new JPanel();\n\t\tsouthPanel = new JPanel();\n\t\teastPanel = new JPanel();\n\t\twestPanel = new JPanel();\n\t\tcenterPanel = new JPanel();\n\t\tnorthPanel.setLayout(new TableLayout(1, 0, 5, 5));\n\t\tsouthPanel.setLayout(new TableLayout(1, 0, 5, 5));\n\t\twestPanel.setLayout(new TableLayout(0, 1, 5, 5));\n\t\teastPanel.setLayout(new TableLayout(0, 1, 5, 5));\n\t\tcenterPanel.setLayout(new GridLayout(1, 0));\n\t\tcontentPane.add(northPanel, NORTH);\n\t\tcontentPane.add(southPanel, SOUTH);\n\t\tcontentPane.add(eastPanel, EAST);\n\t\tcontentPane.add(westPanel, WEST);\n\t\tcontentPane.add(centerPanel, CENTER);\n\t}\n\n/* Private method: addActionListeners(comp, listener) */\n/**\n * Recursively adds the specified listener as an <code>ActionListener</code> to\n * every button in the hierarchy.  Reflection is used because there are many\n * possible classes of button-like objects.\n */\n\tprivate void addActionListeners(Component comp, ActionListener listener) {\n\t\tif (isButton(comp)) {\n\t\t\tif (!hasActionListener(comp)) {\n\t\t\t\ttry {\n\t\t\t\t\tClass[] types = { Class.forName(\"java.awt.event.ActionListener\") };\n\t\t\t\t\tObject[] args = { listener };\n\t\t\t\t\tMethod addActionListener = comp.getClass().getMethod(\"addActionListener\", types);\n\t\t\t\t\taddActionListener.invoke(comp, args);\n\t\t\t\t} catch (Exception ex) {\n\t\t\t\t\tthrow new ErrorException(ex);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (comp instanceof Container) {\n\t\t\tContainer container = (Container) comp;\n\t\t\tint nComponents = container.getComponentCount();\n\t\t\tfor (int i = 0; i < nComponents; i++) {\n\t\t\t\taddActionListeners(container.getComponent(i), listener);\n\t\t\t}\n\t\t}\n\t}\n\n/* Private method: isButton(comp) */\n/**\n * Determines whether the component is a button.\n */\n\tprivate boolean isButton(Component comp) {\n\t\treturn (comp instanceof Button || comp instanceof JButton);\n\t}\n\n/* Private method: hasActionListener(comp) */\n/**\n * Returns true if the component has at least one action listener.  The method\n * returns false if the Java runtime is too old to determine the answer.\n */\n\tprivate boolean hasActionListener(Component comp) {\n\t\ttry {\n\t\t\tMethod getActionListeners = comp.getClass().getMethod(\"getActionListeners\", new Class[0]);\n\t\t\tActionListener[] listeners = (ActionListener[]) getActionListeners.invoke(comp, new Object[0]);\n\t\t\treturn (listeners.length > 0);\n\t\t} catch (Exception ex) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n/* Private method: initApplicationFrame() */\n/**\n * Creates the program frame and puts the program in it.\n */\n\tprivate void initApplicationFrame() {\n\t\tprogramFrame = createProgramFrame();\n\t\t((ProgramAppletStub) appletStub).setFrame(programFrame);\n\t\tContainer contents = programFrame.getContentPane();\n\t\tcontents.setLayout(new BorderLayout());\n\t\tcontents.add(getContentPane(), BorderLayout.CENTER);\n\t\tprogramFrame.addWindowListener(new ProgramWindowListener(this));\n\t\tprogramBounds = computeProgramBounds();\n\t\tInsets insets = programFrame.getInsets();\n\t\tint frameWidth = programBounds.width + insets.left + insets.right;\n\t\tint frameHeight = programBounds.height + insets.top + insets.bottom;\n\t\tprogramFrame.setBounds(programBounds.x, programBounds.y, frameWidth, frameHeight);\n\t}\n\n/* Private method: decodeSizeParameter(name, value, max) */\n/**\n * Decodes a size parameter.\n *\n * @usage int size = decodeSizeParameter(name, value, max);\n * @param name The name of the parameter\n * @param value The default value if the parameter is unspecified\n * @param max The maximum value if the parameter is specified as a percentage\n * @return The integer denoting the size\n */\n\tprivate int decodeSizeParameter(String name, int value, int max) {\n\t\tString str = getParameter(name);\n\t\tif (str == null) {\n\t\t\ttry {\n\t\t\t\tClass<?> mainClass = getClass();\n\t\t\t\tField field = mainClass.getField(\"APPLICATION_\" + name);\n\t\t\t\tObject obj = field.get(null);\n\t\t\t\tif (obj instanceof Integer) return ((Integer) obj).intValue();\n\t\t\t\tif (obj instanceof String) {\n\t\t\t\t\tstr = (String) obj;\n\t\t\t\t} else {\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t} catch (Exception ex) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t\tif (str.equals(\"*\")) str = \"100%\";\n\t\tif (str.endsWith(\"%\")) {\n\t\t\tint percent = Integer.parseInt(str.substring(0, str.length() - 1));\n\t\t\treturn (int) Math.round(percent / 100.0 * max);\n\t\t} else {\n\t\t\treturn Integer.parseInt(str);\n\t\t}\n\t}\n\n/* Private method: computeProgramBounds() */\n/**\n * Sets the bounds for this program as specified in the parameters.\n */\n\tprivate Rectangle computeProgramBounds() {\n\t\tDimension size = Toolkit.getDefaultToolkit().getScreenSize();\n\t\tint width = decodeSizeParameter(\"WIDTH\", DEFAULT_WIDTH, size.width);\n\t\tint height = decodeSizeParameter(\"HEIGHT\", DEFAULT_HEIGHT, size.height);\n\t\tint x = decodeSizeParameter(\"X\", (width >= size.width) ? 0 : DEFAULT_X, size.width);\n\t\tint y = decodeSizeParameter(\"Y\", (height >= size.height) ? 0 : DEFAULT_Y, size.height);\n\t\treturn new Rectangle(x, y, width, height);\n\t}\n\n/* Private method: checkForAppletMode() */\n/**\n * Determines whether this program has been invoked as an applet by scanning\n * the execution stack to see if the string <code>\"Applet\"</code> appears\n * in any method name up the calling chain.\n */\n\tprivate boolean checkForAppletMode() {\n\t\tStackTraceElement[] stack = new Throwable().getStackTrace();\n\t\tfor (int i = 1; i < stack.length; i++) {\n\t\t\tif (stack[i].getMethodName().indexOf(\"Applet\") >= 0) return true;\n\t\t}\n\t\treturn false;\n\t}\n\n/* Private method: getMyCaller() */\n/**\n * Returns the name of the caller of the method that invoked <code>getMyCaller</code>.\n */\n\tprivate String getMyCaller() {\n\t\tStackTraceElement[] stack = new Throwable().getStackTrace();\n\t\treturn stack[2].getClassName() + \".\" + stack[2].getMethodName();\n\t}\n\n/* Private method: circumventFrameSizeBug(frame, size) */\n/**\n * In some versions of the JDK, calling getInsets on a Frame fails to return\n * the insets correctly until the frame is validated.  On those systems, it\n * is impossible to compute the correct frame size in advance.  The workaround\n * is to check that the size of the content pane is equal to what it was supposed\n * to be after installing and validating it.  If it is, do nothing to avoid another\n * validation repaint.  If not, adjust the size of the frame by however much the\n * content pane is too small.\n */\n\tprivate void circumventFrameSizeBug(Frame frame, Dimension size) {\n\t\tContainer contentPane = getContentPane();\n\t\tDimension actualSize = contentPane.getSize();\n\t\tif (size.equals(actualSize) || actualSize.width == 0 || actualSize.height == 0) return;\n\t\tDimension frameSize = frame.getSize();\n\t\tframeSize.width += size.width - actualSize.width;\n\t\tframeSize.height += size.height - actualSize.height;\n\t\tframe.setSize(frameSize.width, frameSize.height);\n\t\tframe.validate();\n\t}\n\n/* Private constants */\n\tprivate static final int DEFAULT_X = 16;\n\tprivate static final int DEFAULT_Y = 40;\n\tprivate static final int DEFAULT_WIDTH = 754;\n\tprivate static final int DEFAULT_HEIGHT = 492;\n\tprivate static final int PRINT_MARGIN = 36;\n\n/* Private instance variables */\n\tprivate ArrayList<Object> finalizers;\n\tprivate HashMap<String,String> parameterTable;\n\tprivate JFrame programFrame;\n\tprivate AppletStub appletStub;\n\tprivate String myTitle;\n\tprivate ProgramMenuBar myMenuBar;\n\tprivate Component northBorder;\n\tprivate Component southBorder;\n\tprivate Component eastBorder;\n\tprivate Component westBorder;\n\tprivate JPanel northPanel;\n\tprivate JPanel southPanel;\n\tprivate JPanel eastPanel;\n\tprivate JPanel westPanel;\n\tprivate JPanel centerPanel;\n\tprivate IOConsole myConsole;\n\tprivate IODialog myDialog;\n\tprivate IOModel inputModel;\n\tprivate IOModel outputModel;\n\tprivate Object startupObject;\n\tprivate AppletStarter appletStarter;\n\tprivate Rectangle programBounds;\n\tprivate boolean started;\n\tprivate boolean shown;\n\tprivate boolean initFinished;\n\tprivate boolean appletMode;\n\n}\n\n/* Package class: AppletStarter */\n/**\n * This class creates a new thread in which to execute the <code>run</code>\n * method in the context of an applet.\n */\n\nclass AppletStarter implements Runnable {\n\n/* Constructor: AppletStarter(program) */\n/**\n * Creates an object responsible for starting the main thread for the program.\n */\n\tpublic AppletStarter(Program program) {\n\t\tmyProgram = program;\n\t}\n\n/* Method: start() */\n/**\n * Starts a new thread for the program that will execute\n * the <code>run</code> method.\n */\n\tpublic void start() {\n\t\ttry {\n\t\t\tmainThread = new Thread(this);\n\t\t\tmainThread.start();\n\t\t\tif (JTFTools.testDebugOption(\"startup\")) {\n\t\t\t\tSystem.out.println(\"Starting main thread using Thread package\");\n\t\t\t}\n\t\t} catch (SecurityException ex) {\n\t\t\tif (JTFTools.testDebugOption(\"startup\")) {\n\t\t\t\tSystem.out.println(\"Starting main thread using Executor because \" + ex);\n\t\t\t}\n\t\t\tforkUsingExecutor();\n\t\t}\n\t}\n\n/* Method: stop() */\n/**\n * Stops the main thread, using whichever strategy is appropriate for\n * the implementation.\n */\n\tpublic void stop() {\n\t\ttry {\n\t\t\tif (executor == null) {\n\t\t\t\tClass<?> threadClass = Class.forName(\"java.lang.Thread\");\n\t\t\t\tMethod stop = threadClass.getMethod(\"stop\", new Class[0]);\n\t\t\t\tstop.invoke(mainThread, new Object[0]);\n\t\t\t} else {\n\t\t\t\tMethod shutdownNow = executor.getClass().getMethod(\"shutdownNow\", new Class[0]);\n\t\t\t\tshutdownNow.invoke(executor, new Object[0]);\n\t\t\t}\n\t\t} catch (Exception ex) {\n\t\t\t/* Empty */\n\t\t}\n\t}\n\n/* Method: run() */\n/**\n * Starts the program by calling its <code>startRun</code> method, which will\n * eventually call <code>run</code> in the program.\n */\n\tpublic void run() {\n\t\tmyProgram.startRun();\n\t}\n\n/* Method: getMainThread() */\n/**\n * Returns the thread that is running the main program.\n */\n\tpublic Thread getMainThread() {\n\t\treturn mainThread;\n\t}\n\n/* Private method: forkUsingExecutor */\n/**\n * The AppletRunner in Java 5.0 does not allow nontrusted packages to fork\n * new threads.  This class uses the <code>ScheduledExecutor</code> class in\n * <code>java.util.concurrent</code> to do the fork so that it comes from an\n * acceptable place.\n */\n\tprivate void forkUsingExecutor() {\n\t\ttry {\n\t\t\tClass<?> scheduledExecutorClass = Class.forName(\"java.util.concurrent.ScheduledExecutor\");\n\t\t\tClass[] types1 = { Integer.TYPE };\n\t\t\tObject[] args1 = { new Integer(1) };\n\t\t\tConstructor<?> constructor = scheduledExecutorClass.getConstructor(types1);\n\t\t\texecutor = constructor.newInstance(args1);\n\t\t\tClass<?> timeUnitClass = Class.forName(\"java.util.concurrent.TimeUnit\");\n\t\t\tField secondsField = timeUnitClass.getField(\"SECONDS\");\n\t\t\tObject seconds = secondsField.get(null);\n\t\t\tClass[] types2 = { Class.forName(\"java.lang.Runnable\"),\n\t\t\t                  Long.TYPE,\n\t\t\t                  Class.forName(\"java.util.concurrent.TimeUnit\") };\n\t\t\tObject[] args2 = { this, new Long(0), seconds };\n\t\t\tMethod schedule = executor.getClass().getMethod(\"schedule\", types2);\n\t\t\tschedule.invoke(executor, args2);\n\t\t} catch (Exception ex) {\n\t\t\tif (JTFTools.testDebugOption(\"startup\")) {\n\t\t\t\tSystem.out.println(\"Executor failed because \" + ex);\n\t\t\t}\n\t\t\texecutor = null;\n\t\t\tmainThread = Thread.currentThread();\n\t\t\tmyProgram.startRun();\n\t\t}\n\t}\n\n/* Private instance variables */\n\tprivate Program myProgram;\n\tprivate Thread mainThread;\n\tprivate Object executor;\n}\n\n/* Package class: ProgramActionListener */\n/**\n * This class listens for global action events in the menu bar.  These events are\n * passed back to the program through the protected <code>globalMenuAction<code>\n * method.\n */\nclass ProgramActionListener implements ActionListener {\n\n\tpublic ProgramActionListener(Program owner) {\n\t\tprogram = owner;\n\t}\n\n/* ActionListener interface */\n\tpublic void actionPerformed(ActionEvent e) {\n\t\tprogram.menuAction(e);\n\t}\n\n/* Private instance variables */\n\tprivate Program program;\n\n}\n\n/* Package class: ProgramWindowListener */\n/**\n * This class implements a simple window listener for programs whose only\n * function is to exit if the window is closed.\n */\nclass ProgramWindowListener implements WindowListener {\n\n\tpublic ProgramWindowListener(Program owner) {\n\t\tprogram = owner;\n\t}\n\n/* WindowListener interface */\n\tpublic void windowClosing(WindowEvent e) {\n\t\t((Component) e.getSource()).setVisible(false);\n\t\tprogram.exit();\n\t}\n\n\tpublic void windowOpened(WindowEvent e) { }\n\tpublic void windowClosed(WindowEvent e) { }\n\tpublic void windowIconified(WindowEvent e) { }\n\tpublic void windowDeiconified(WindowEvent e) { }\n\tpublic void windowActivated(WindowEvent e) { }\n\tpublic void windowDeactivated(WindowEvent e) { }\n\n/* Private instance variables */\n\tprivate Program program;\n\n}\n\n/* Package class: ProgramStartupListener */\n/**\n * This class implements a component listener that supports the program\n * startup logic.\n */\nclass ProgramStartupListener implements ComponentListener {\n\n/* Method: waitForStartup(program) */\n/**\n * Waits until the specified program has started.\n */\n\tpublic synchronized void waitForStartup(Program program) {\n\t\tJTFTools.pause(STARTUP_DELAY);\n\t\twhile (!program.isStarted()) {\n\t\t\ttry {\n\t\t\t\twait(STARTUP_CYCLE);\n\t\t\t} catch (InterruptedException ex) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t}\n\t}\n\n/* ComponentListener interface */\n\tpublic void componentHidden(ComponentEvent e) { }\n\tpublic void componentMoved(ComponentEvent e) { }\n\n\tpublic void componentResized(ComponentEvent e) {\n\t\tcomponentShown(e);\n\t}\n\n\tpublic synchronized void componentShown(ComponentEvent e) {\n\t\tnotifyAll();\n\t}\n\n/* Private constants */\n\tprivate static final int STARTUP_DELAY = 1000;\n\tprivate static final int STARTUP_CYCLE = 300;\n\n}\n\n/* Package class: ProgramFrame */\n/**\n * This frame represents the visible component that encloses the program.\n */\nclass ProgramFrame extends JFrame {\n\n\tpublic ProgramFrame(String title) {\n\t\tsuper(title);\n\t}\n\n\tpublic void update(Graphics g) {\n\t\tpaint(g);\n\t}\n}\n\n/* Package class: ProgramContentPaneLayout */\n/**\n * This layout manager is identical to the BorderLayout manager except that\n * it also resizes the Program object itself to correspond to the available\n * space.  This class is required for JDK 1.6 systems, when it became\n * necessary to separate the content pane of the JApplet from the program's\n * JApplet itself.\n */\nclass ProgramContentPaneLayout extends BorderLayout {\n\n\tpublic ProgramContentPaneLayout(Program program) {\n\t\tmyProgram = program;\n\t}\n\n\tpublic void layoutContainer(Container parent) {\n\t\tsuper.layoutContainer(parent);\n\t\tif (!myProgram.isAncestorOf(parent)) {\n\t\t\tDimension psize = parent.getSize();\n\t\t\tInsets insets = parent.getInsets();\n\t\t\tint x = insets.left;\n\t\t\tint y = insets.top;\n\t\t\tint width = psize.width - insets.left - insets.right;\n\t\t\tint height = psize.height - insets.top - insets.bottom;\n\t\t\tmyProgram.setBounds(x, y, width, height);\n\t\t\tComponentEvent e = new ComponentEvent(myProgram, ComponentEvent.COMPONENT_RESIZED);\n\t\t\tToolkit.getDefaultToolkit().getSystemEventQueue().postEvent(e);\n\t\t}\n\t}\n\n/* Private instance variables */\n\tprivate Program myProgram;\n\n}\n\n/* Package class: ProgramAppletStub */\n/**\n * This class implements both the AppletStub and AppletContext interfaces and allows\n * standard applications to run with the same capabilities as an applet.\n */\nclass ProgramAppletStub implements AppletContext, AppletStub {\n\tpublic ProgramAppletStub(Program program) {\n\t\tapplet = program;\n\t}\n\n\tpublic void setFrame(Frame frame) {\n\t\tenclosure = frame;\n\t}\n\n\tpublic boolean isActive() {\n\t\treturn true;\n\t}\n\n\tpublic URL getDocumentBase() {\n\t\treturn getCodeBase();\n\t}\n\n\tpublic URL getCodeBase() {\n\t\ttry {\n\t\t\treturn new URL(\"file:\" + getCanonicalPath(\".\"));\n\t\t} catch (MalformedURLException ex) {\n\t\t\tthrow new ErrorException(\"Error: Illegal document base URL\");\n\t\t}\n\t}\n\n\tpublic String getParameter(String name) {\n\t\treturn null;\n\t}\n\n\tpublic AppletContext getAppletContext() {\n\t\treturn this;\n\t}\n\n\tpublic void appletResize(int width, int height) {\n\t\tif (enclosure == null) {\n\t\t\tif (!recursiveResizeCheck) {\n\t\t\t\trecursiveResizeCheck = true;\n\t\t\t\tapplet.resize(width, height);\n\t\t\t\tapplet.validate();\n\t\t\t\trecursiveResizeCheck = false;\n\t\t\t}\n\t\t} else {\n\t\t\tenclosure.setSize(width, height);\n\t\t\tenclosure.validate();\n\t\t}\n\t}\n\n\tpublic AudioClip getAudioClip(URL url) {\n\t\tAudioClip clip = null;\n\t\tif (clip == null) clip = getNewAudioClip(url);\n\t\treturn clip;\n\t}\n\n\tpublic Image getImage(URL url) {\n\t\ttry {\n\t\t\tObject content = url.getContent();\n\t\t\tif (content instanceof ImageProducer) {\n\t\t\t\treturn applet.createImage((ImageProducer) content);\n\t\t\t}\n\t\t} catch (IOException ex) {\n\t\t\t/* Ignore the exception and fail */\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic Applet getApplet(String name) {\n\t\treturn null;\n\t}\n\n\tpublic Enumeration<Applet> getApplets() {\n\t\treturn new Vector<Applet>().elements();\n\t}\n\n\tpublic void showDocument(URL url) {\n\t\tif (applet != null) applet.getAppletContext().showDocument(url);\n\t}\n\n\tpublic void showDocument(URL url, String target) {\n\t\tif (applet != null) applet.getAppletContext().showDocument(url, target);\n\t}\n\n\tpublic void showStatus(String status) {\n\t\tif (applet == null) {\n\t\t\tSystem.out.println(status);\n\t\t} else {\n\t\t\tapplet.showStatus(status);\n\t\t}\n\t}\n\n\tpublic void setStream(String key, InputStream stream) {\n\t\tthrow new ErrorException(\"setStream: unimplemented operation\");\n\t}\n\n\tpublic InputStream getStream(String key) {\n\t\tthrow new ErrorException(\"getStream: unimplemented operation\");\n\t}\n\n\tpublic java.util.Iterator<String> getStreamKeys() {\n\t\tthrow new ErrorException(\"getStreamKeys: unimplemented operation\");\n\t}\n\n\tprivate String getCanonicalPath(String start) {\n\t\tString path = new File(start).getAbsolutePath();\n\t\tint sp;\n\t\twhile ((sp = path.indexOf(' ')) != -1) {\n\t\t\tpath = path.substring(0, sp) + \"%20\" + path.substring(sp + 1);\n\t\t}\n\t\treturn path;\n\t}\n\n\tprivate synchronized AudioClip getNewAudioClip(URL url) {\n\t\ttry {\n\t\t\tClass<?> type = Class.forName(\"java.applet.Applet\");\n\t\t\tClass[] types = { Class.forName(\"java.net.URL\") };\n\t\t\tObject[] args = { url };\n\t\t\tMethod fn = type.getMethod(\"newAudioClip\", types);\n\t\t\treturn (AudioClip) fn.invoke(null, args);\n\t\t} catch (Exception ex) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n/* Private instance variables */\n\tprivate Applet applet;\n\tprivate Frame enclosure;\n\tprivate boolean recursiveResizeCheck;\n\n}\n\n/* Package class: DefaultActionListener */\n/**\n * This class is the default action listener added to buttons.\n */\nclass DefaultActionListener implements ActionListener {\n\n\tpublic DefaultActionListener() {\n\t\t/* Empty */\n\t}\n\n\tpublic void actionPerformed(ActionEvent e) {\n\t\tComponent comp = (Component) e.getSource();\n\t\tProgram program = findProgram(comp);\n\t\tif (program != null && countActionListeners(comp) > 1) {\n\t\t\ttry {\n\t\t\t\tClass[] types = { Class.forName(\"java.awt.event.ActionListener\") };\n\t\t\t\tObject[] args = { this };\n\t\t\t\tMethod removeActionListener = comp.getClass().getMethod(\"removeActionListener\", types);\n\t\t\t\tremoveActionListener.invoke(comp, args);\n\t\t\t\treturn;\n\t\t\t} catch (Exception ex) {\n\t\t\t\tthrow new ErrorException(ex);\n\t\t\t}\n\t\t}\n\t\tString message = \"No ActionListener is attached\";\n\t\tif (comp instanceof Button) {\n\t\t\tmessage += \" to button \" + ((Button) comp).getLabel();\n\t\t} else {\n\t\t\ttry {\n\t\t\t\tMethod getText = comp.getClass().getMethod(\"getText\", new Class[0]);\n\t\t\t\tmessage += \" to button \" + (String) getText.invoke(comp, new Object[0]);\n\t\t\t} catch (Exception ex) {\n\t\t\t\tthrow new ErrorException(ex);\n\t\t\t}\n\t\t}\n\t\tif (program == null) {\n\t\t\tthrow new ErrorException(message);\n\t\t} else {\n\t\t\tprogram.getDialog().showErrorMessage(message);\n\t\t}\n\t}\n\n\tprotected static int countActionListeners(Component comp) {\n\t\ttry {\n\t\t\tMethod getActionListeners = comp.getClass().getMethod(\"getActionListeners\", new Class[0]);\n\t\t\tActionListener[] listeners = (ActionListener[]) getActionListeners.invoke(comp, new Object[0]);\n\t\t\treturn listeners.length;\n\t\t} catch (Exception ex) {\n\t\t\treturn -1;\n\t\t}\n\t}\n\n\tprivate Program findProgram(Component comp) {\n\t\tif (comp instanceof Program) {\n\t\t\treturn (Program) comp;\n\t\t} else if (comp != null) {\n\t\t\treturn findProgram(comp.getParent());\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/program/ProgramMenuBar.java",
    "content": "/*\n * @(#)ProgramMenuBar.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Feature enhancement 2-Mar-07 (ESR)\n//   1. Added menu options to implement the \"Export Applet\" and\n//      \"Submit Project\" items.\n//\n// Feature enhancement 21-May-08 (ESR)\n//   1. Significant redesign of package to support easier extensions.\n//   2. Added program argument to the constructor.\n\npackage acm.program;\n\nimport acm.util.*;\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.util.*;\nimport javax.swing.*;\nimport javax.swing.event.*;\n\n/* Class: ProgramMenuBar */\n/**\n * This class standardizes the menu bars used in the ACM program package.\n * The fundamental principles behind the design of this package are:\n *\n * <p><ol>\n * <li>The most common menu operations (including, for example, the standard\n *     editing operations <b>cut</b>, <b>copy</b>, and <b>paste</b>) should\n *     always be available and require no action on the part of the programmer.\n * <p>\n * <li>It should be easy to extend the menu bar without interfering with the\n *     standard operations.\n * <p>\n * <li>Menu bars should work in a familiar way on each of the major platforms.\n *     In particular, Macintosh users expect there to be a single menu bar\n *     at the top of the screen rather than a menu bar in each window.\n * </ol>\n *\n * <p>These goals turn out to be difficult to achieve simultaneously.  In\n * particular, supporting both Macintosh-style and Windows-style menu bars\n * requires creating a parallel <code>MenuBar</code> structure behind the\n * underlying <code>JMenuBar</code>, which accounts for much of the complexity\n * in this implementation.\n *\n * <p><b>Using the <code>ProgramMenuBar</code> class</b>\n *\n * The <code>ProgramMenuBar</code> class supports two distinct disciplines\n * for listening for menu actions:\n *\n * <p><ul>\n * <li><b>Focused items</b> correspond to actions that are relevant only to the\n * component with the keyboard focus (such as <b>Cut</b>, <b>Copy</b>, and\n * <b>Paste</b>).  Clients create focused items by calling\n * <a href=\"#createFocusedItem(String)\"><code>createFocusedItem</code></a>.\n * Activating a focused item passes an action event to the listener set by calling\n * <a href=\"#setFocusedListener(ActionListener)\"><code>setFocusedListener</code></a>,\n * which should be called whenever a component interested in responding to menu\n * actions gains the keyboard focus.\n * <p>\n * <li><b>Program items</b> correspond to actions that are relevant throughout\n * the lifetime of the program (such as <b>Quit</b> and <b>Print</b>).\n * Clients create program items by calling\n * <a href=\"#createProgramItem(String)\"><code>createProgramItem</code></a>.\n * Activating a program item passes an action event to the <code>menuAction</code>\n * method in the <code>Program</code> object that created the menu bar.\n * </ul>\n */\npublic class ProgramMenuBar extends JMenuBar implements Iterable<JMenuItem> {\n\n/* Constant: SHIFT */\n/**\n * Constant indicating that an accelerator key requires the SHIFT modifier.\n */\n\tpublic static final int SHIFT = 0x20000;\n\n/* Constructor: ProgramMenuBar(program) */\n/**\n * Creates an empty <code>ProgramMenuBar</code>.\n *\n * @usage ProgramMenuBar mbar = new ProgramMenuBar(owner);\n * @param owner The <code>Program</code> that owns this menu bar.\n */\n\tpublic ProgramMenuBar(Program owner) {\n\t\tprogram = owner;\n\t\tmenuBarListener = new ProgramMenuBarListener(this);\n\t\tfocusedListener = null;\n\t\taccelerators = new HashMap<KeyStroke,JMenuItem>();\n\t\tfocusedItems = new HashSet<JMenuItem>();\n\t\tmacMenuBarFlag = true;\n\t\taddMenus();\n\t}\n\n/* Method: getProgram() */\n/**\n * Returns the <code>Program</code> object associated with this menu.\n *\n * @usage Program program = mbar.getProgram();\n * @return The program associated with this menu bar\n */\n\tpublic Program getProgram() {\n\t\treturn program;\n\t}\n\n/* Method: createStandardItem(action) */\n/**\n * Creates one of the standard menu items implemented by the\n * <code>ProgramMenuBar</code> class.   The menu item is identified\n * by its action command.\n *\n * @usage JMenuItem item = mbar.createStandardItem(action);\n * @param action The action command identifying the menu item to be created\n */\n\tpublic JMenuItem createStandardItem(String action) {\n\t\tJMenuItem item = null;\n\t\tif (action.equals(\"Quit\")) {\n\t\t\titem = createProgramItem(action);\n\t\t\tif (Platform.isMac()) {\n\t\t\t\tsetAccelerator(item, 'Q');\n\t\t\t} else {\n\t\t\t\titem.setName(\"Exit\");\n\t\t\t}\n\t\t} else if (action.equals(\"Cut\")) {\n\t\t\titem = createFocusedItem(action, 'X');\n\t\t\tif (!Platform.isMac()) item.setName(\"Cut (x)\");\n\t\t} else if (action.equals(\"Copy\")) {\n\t\t\titem = createFocusedItem(action, 'C');\n\t\t\tif (!Platform.isMac()) item.setName(\"Copy (c)\");\n\t\t} else if (action.equals(\"Paste\")) {\n\t\t\titem = createFocusedItem(action, 'V');\n\t\t\tif (!Platform.isMac()) item.setName(\"Paste (v)\");\n\t\t} else if (action.equals(\"Select All\")) {\n\t\t\titem = createFocusedItem(action, 'A');\n\t\t} else if (action.equals(\"Save\")) {\n\t\t\titem = createFocusedItem(action, 'S');\n\t\t} else if (action.equals(\"Save As\")) {\n\t\t\titem = createFocusedItem(action);\n\t\t} else if (action.equals(\"Print\")) {\n\t\t\titem = createProgramItem(action, 'P');\n\t\t\titem.setName(\"Print...\");\n\t\t} else if (action.equals(\"Print Console\")) {\n\t\t\titem = createProgramItem(action);\n\t\t} else if (action.equals(\"Script\")) {\n\t\t\titem = createProgramItem(action);\n\t\t\titem.setName(\"Script...\");\n\t\t} else if (action.equals(\"Export Applet\")) {\n\t\t\titem = createProgramItem(action);\n\t\t\titem.setName(\"Export Applet...\");\n\t\t} else if (action.equals(\"Submit Project\")) {\n\t\t\titem = createProgramItem(action);\n\t\t\titem.setName(\"Submit Project...\");\n\t\t} else {\n\t\t\tthrow new ErrorException(\"Illegal standard menu item: \" + action);\n\t\t}\n\t\treturn item;\n\t}\n\n/* Method: createProgramItem(action) */\n/**\n * Creates a program menu item with the specified action command.  The\n * initial item has the same label as the action command, but clients\n * can change this name by calling <code>setName</code> on the item.\n *\n * @usage JMenuItem item = createProgramItem(action);\n * @param action The action command generated by this menu item\n */\n\tpublic JMenuItem createProgramItem(String action) {\n\t\tJMenuItem item = new JMenuItem(action);\n\t\titem.setActionCommand(action);\n\t\titem.addActionListener(menuBarListener);\n\t\treturn item;\n\t}\n\n/* Method: createProgramItem(action, key) */\n/**\n * Creates a program menu item with the specified action command and accelerator key.\n *\n * @usage JMenuItem item = createProgramItem(action, key);\n * @param action The action command generated by this menu item\n * @param key The integer value of the keystroke accelerator\n */\n\tpublic JMenuItem createProgramItem(String action, int key) {\n\t\tJMenuItem item = createProgramItem(action);\n\t\tsetAccelerator(item, key);\n\t\treturn item;\n\t}\n\n/* Method: createFocusedItem(action) */\n/**\n * Creates a focused menu item with the specified action command.\n *\n * @usage JMenuItem item = createFocusedItem(action);\n * @param action The action command generated by this menu item\n */\n\tpublic JMenuItem createFocusedItem(String action) {\n\t\tJMenuItem item = createProgramItem(action);\n\t\tfocusedItems.add(item);\n\t\treturn item;\n\t}\n\n/* Method: createFocusedItem(action, key) */\n/**\n * Creates a focused menu item with the specified action command and accelerator key.\n *\n * @usage JMenuItem item = createFocusedItem(action, key);\n * @param action The action command generated by this menu item\n * @param key The integer value of the keystroke accelerator\n */\n\tpublic JMenuItem createFocusedItem(String action, int key) {\n\t\tJMenuItem item = createFocusedItem(action);\n\t\tsetAccelerator(item, key);\n\t\treturn item;\n\t}\n\n/* Method: isFocusedItem(item) */\n/**\n * Returns <code>true</code> if the item is a focused item.\n *\n * @usage if (mbar.isFocusedItem(item)) . . .\n * @param item A menu item installed in the menu bar\n * @return <code>true</code> if the item is a program item\n */\n\tpublic boolean isFocusedItem(JMenuItem item) {\n\t\treturn focusedItems.contains(item);\n\t}\n\n/* Method: setAccelerator(item, key) */\n/**\n * Sets the accelerator for the item as appropriate to the operating system\n * conventions.\n *\n * @usage mbar.setAccelerator(item, key);\n * @param item The menu item triggered by this accelerator\n * @param key The integer value of the keystroke accelerator\n */\n\tpublic void setAccelerator(JMenuItem item, int key) {\n\t\tint mask = (Platform.isMac()) ? KeyEvent.META_MASK : KeyEvent.CTRL_MASK;\n\t\tif (key > 0x10000) {\n\t\t\tkey -= SHIFT;\n\t\t\tmask |= KeyEvent.SHIFT_MASK;\n\t\t}\n\t\tKeyStroke stroke = KeyStroke.getKeyStroke((char) key, mask);\n\t\taccelerators.put(stroke, item);\n\t\tif (Platform.isMac()) {\n\t\t\titem.setAccelerator(stroke);\n\t\t} else {\n\t\t\titem.setMnemonic(key);\n\t\t}\n\t}\n\n/* Method: setEnabled(action, flag) */\n/**\n * Enables or disables any menu items that generate the specified action command.\n *\n * @usage mbar.setEnabled(action, flag);\n * @param action The action command triggered by the menu item\n * @param flag <code>true</code> to enable the item, <code>false</code> to disable it\n */\n\tpublic void setEnabled(String action, boolean flag) {\n\t\tint nMenus = getMenuCount();\n\t\tfor (int i = 0; i < nMenus; i++) {\n\t\t\tsetEnabled(getMenu(i), action, flag);\n\t\t}\n\t}\n\n/* Method: install(comp) */\n/**\n * Installs the menu bar in the <code>JFrame</code> or <code>Program</code>\n * object enclosing the component <code>comp</code>.\n *\n * @usage mbar.install(comp);\n * @param comp A descendant of the frame in which the menu is to be installed\n */\n\tpublic void install(Component comp) {\n\t\tComponent contentPane = program.getContentPane();\n\t\twhile (comp != null && !(comp instanceof JFrame)) {\n\t\t\tcomp = comp.getParent();\n\t\t\tif (comp == contentPane && program.isAppletMode()) {\n\t\t\t\tif (!Platform.isMac() || !macMenuBarFlag) {\n\t\t\t\t\tprogram.setJMenuBar(this);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (comp == null) return;\n\t\tJFrame frame = (JFrame) comp;\n\t\tif (Platform.isMac() && macMenuBarFlag) {\n\t\t\tif (oldStyleMenuBar == null) {\n\t\t\t\toldStyleMenuBar = createOldStyleMenuBar();\n\t\t\t}\n\t\t\tframe.setMenuBar(oldStyleMenuBar);\n\t\t} else {\n\t\t\tframe.setJMenuBar(this);\n\t\t\tframe.validate();\n\t\t}\n\t}\n\n/* Method: setMacMenuBarFlag(flag) */\n/**\n * Sets a flag indicating whether applications running on the Macintosh\n * should use standard Mac menus.  The default is <code>true</code>.\n * Setting this value to <code>false</code> means that Mac programs\n * use the same in-window <code>JMenuBar</code> approach used on other\n * platforms.\n *\n * @usage setMacMenuBarFlag(flag);\n * @param flag <code>true</code> to use Mac menu style; <code>false</code> otherwise\n */\n\tpublic void setMacMenuBarFlag(boolean flag) {\n\t\tmacMenuBarFlag = flag;\n\t}\n\n/* Method: getMacMenuBarFlag() */\n/**\n * Retrieves the setting of the Mac menu bar flag.\n *\n * @usage boolean flag = getMacMenuBarFlag();\n * @return <code>true</code> if Mac menu style is supported; <code>false</code> otherwise\n */\n\tpublic boolean getMacMenuBarFlag() {\n\t\treturn macMenuBarFlag;\n\t}\n\n/* Method: fireActionListeners(e) */\n/**\n * Fires the action listeners responsible for handling the specified event.\n * The process of choosing the appropriate handlers takes into account\n * whether the action command is designated as program or focused.\n */\n\tpublic void fireActionListeners(ActionEvent e) {\n\t\tif (focusedListener != null && focusedItems.contains(e.getSource())) {\n\t\t\tfocusedListener.actionPerformed(e);\n\t\t} else {\n\t\t\tprogram.menuAction(e);\n\t\t}\n\t}\n\n/* Method: fireAccelerator(e) */\n/**\n * Triggers the accelerator associated with the keystroke implied by the key event.\n * This method returns <code>true</code> if such an accelerator exists.\n */\n\tpublic boolean fireAccelerator(KeyEvent e) {\n\t\tKeyStroke stroke = KeyStroke.getKeyStrokeForEvent(e);\n\t\tJMenuItem item = accelerators.get(stroke);\n\t\tif (item != null) {\n\t\t\titem.doClick(0);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n/* Method: setFocusedListener(listener) */\n/**\n * Registers a listener that responds while the caller holds the keyboard\n * focus.  The caller should register its listener when it acquires the\n * keyboard focus and set it to <code>null</code> when it loses it.\n *\n * @usage setFocusedListener(listener);\n * @param listener An <code>ActionListener</code> that responds to focused items\n */\n\tpublic void setFocusedListener(ActionListener listener) {\n\t\tfocusedListener = listener;\n\t}\n\n/* Method: iterator() */\n/**\n * Returns an iterator that enumerates the individual menu items under the\n * control of the menu bar.\n *\n * @usage Iterator<JMenuItem> iterator = mbar.iterator();\n * return An iterator that enumerates the menu items\n */\n\tpublic Iterator<JMenuItem> iterator() {\n\t\tArrayList<JMenuItem> itemList = new ArrayList<JMenuItem>();\n\t\tfor (int i = 0; i < getMenuCount(); i++) {\n\t\t\taddItemToList(itemList, getMenu(i));\n\t\t}\n\t\treturn itemList.iterator();\n\t}\n\n/* Protected methods */\n\n/* Protected method: addMenus() */\n/**\n * Adds menus to the menu bar.  Subclasses that wish to change the composition\n * of the menu bar beyond the default <code>File</code> and <code>Edit</code>\n * menus should override this method with one that adds the desired menus.\n */\n\tprotected void addMenus() {\n\t\taddFileMenu();\n\t\taddEditMenu();\n\t}\n\n/* Protected method: addFileMenu() */\n/**\n * Installs the <code>File</code> menu.\n *\n * @usage mbar.addFileMenu();\n */\n\tprotected void addFileMenu() {\n\t\tJMenu fileMenu = new JMenu(\"File\");\n\t\tfileMenu.setMnemonic('F');\n\t\taddFileMenuItems(fileMenu);\n\t\tadd(fileMenu);\n\t}\n\n/* Protected method: addEditMenu() */\n/**\n * Installs the <code>Edit</code> menu.\n *\n * @usage mbar.addEditMenu();\n */\n\tprotected void addEditMenu() {\n\t\tJMenu editMenu = new JMenu(\"Edit\");\n\t\teditMenu.setMnemonic('E');\n\t\taddEditMenuItems(editMenu);\n\t\tadd(editMenu);\n\t}\n\n/* Protected method: addFileMenuItems(menu) */\n/**\n * Adds the standard <code>File</code> items to the specified menu.  Subclasses\n * can override this method to change the list of items.\n *\n * @usage mbar.addFileMenuItems(menu);\n * @param menu The menu to which the <code>File</code> items are added\n */\n\tprotected void addFileMenuItems(JMenu menu) {\n\t\tmenu.add(createStandardItem(\"Save\"));\n\t\tmenu.add(createStandardItem(\"Save As\"));\n\t\tmenu.addSeparator();\n\t\tmenu.add(createStandardItem(\"Print\"));\n\t\tmenu.add(createStandardItem(\"Print Console\"));\n\t\tmenu.add(createStandardItem(\"Script\"));\n\t\tmenu.addSeparator();\n\t\tmenu.add(createStandardItem(\"Export Applet\"));\n\t\tmenu.add(createStandardItem(\"Submit Project\"));\n\t\tmenu.addSeparator();\n\t\tmenu.add(createStandardItem(\"Quit\"));\n\t}\n\n/* Protected method: addEditMenuItems(menu) */\n/**\n * Adds the standard <code>Edit</code> items to the specified menu.  Subclasses\n * can override this method to change the list of items.\n *\n * @usage mbar.addEditMenuItems(menu);\n * @param menu The menu to which the <code>Edit</code> items are added\n */\n\tprotected void addEditMenuItems(JMenu menu) {\n\t\tmenu.add(createStandardItem(\"Cut\"));\n\t\tmenu.add(createStandardItem(\"Copy\"));\n\t\tmenu.add(createStandardItem(\"Paste\"));\n\t\tmenu.add(createStandardItem(\"Select All\"));\n\t}\n\n/* Private method: addItemToList(itemList, item) */\n/**\n * Adds the specified menu item to the list.  If <code>item</code> is itself\n * a menu, this method expands the item recursively.\n *\n * @usage mbar.addItemToList(itemList, item);\n * @param itemList The <code>ArrayList</code> to which items are added\n * @param item The item to be added\n */\n\tprivate void addItemToList(ArrayList<JMenuItem> itemList, JMenuItem item) {\n\t\tif (item == null) return;\n\t\tif (item instanceof JMenu) {\n\t\t\tJMenu menu = (JMenu) item;\n\t\t\tfor (int i = 0; i < menu.getItemCount(); i++) {\n\t\t\t\taddItemToList(itemList, menu.getItem(i));\n\t\t\t}\n\t\t} else {\n\t\t\titemList.add(item);\n\t\t}\n\t}\n\n/* Private method: createOldStyleMenuBar */\n/**\n * Creates a <code>MenuBar</code> that has the same effect as the\n * specified <code>JMenuBar</code>.\n *\n * @usage MenuBar oldMenuBar = mbar.createOldStyleMenuBar();\n * @return A <code>MenuBar</code> whose actions are paired with the original\n */\n\tprivate MenuBar createOldStyleMenuBar() {\n\t\tMenuBar mbar = new MenuBar();\n\t\tint nMenus = getMenuCount();\n\t\tfor (int i = 0; i < nMenus; i++) {\n\t\t\tmbar.add(createOldStyleMenu(getMenu(i)));\n\t\t}\n\t\treturn mbar;\n\t}\n\n/* Private method: createOldStyleMenu */\n/**\n * Creates a <code>Menu</code> that has the same effect as the\n * specified <code>JMenu</code>.\n */\n\tprivate Menu createOldStyleMenu(JMenu jmenu) {\n\t\tMenu menu = new Menu(jmenu.getText());\n\t\tint nItems = jmenu.getItemCount();\n\t\tfor (int i = 0; i < nItems; i++) {\n\t\t\tmenu.add(createOldStyleMenuItem(jmenu.getItem(i)));\n\t\t}\n\t\treturn menu;\n\t}\n\n/* Private method: createOldStyleMenuItem */\n/**\n * Creates a <code>MenuItem</code> that has the same effect as the\n * specified <code>JMenuItem</code>.\n */\n\tprivate MenuItem createOldStyleMenuItem(Object jitem) {\n\t\tif (jitem == null) {\n\t\t\treturn new MenuItem(\"-\");\n\t\t} else if (jitem instanceof JMenu) {\n\t\t\treturn createOldStyleMenu((JMenu) jitem);\n\t\t} else if (jitem instanceof JCheckBoxMenuItem) {\n\t\t\treturn new OldStyleCheckBoxMenuItem((JCheckBoxMenuItem) jitem);\n\t\t} else if (jitem instanceof JMenuItem) {\n\t\t\treturn new OldStyleMenuItem((JMenuItem) jitem);\n\t\t}\n\t\tthrow new ErrorException(\"Unsupported menu item type\");\n\t}\n\n/* Private method: setEnabled(menu, action, flag) */\n/**\n * Updates the enabled state of everything in the menu that has the specified action.\n */\n\tprivate void setEnabled(JMenu item, String action, boolean flag) {\n\t\tJMenu menu = item;\n\t\tint nItems = menu.getItemCount();\n\t\tfor (int i = 0; i < nItems; i++) {\n\t\t\tJMenuItem subItem = menu.getItem(i);\n\t\t\tif (subItem != null) setEnabled(subItem, action, flag);\n\t\t}\n\t}\n\n/* Private method: setEnabled(item, action, flag) */\n/**\n * Updates the enabled state of the menu item if it has the specified action.\n */\n\tprivate void setEnabled(JMenuItem item, String action, boolean flag) {\n\t\tif (action.equals(item.getActionCommand())) item.setEnabled(flag);\n\t}\n\n/* Private instance variables */\n\tprivate Program program;\n\tprivate ActionListener menuBarListener;\n\tprivate ActionListener focusedListener;\n\tprivate HashMap<KeyStroke,JMenuItem> accelerators;\n\tprivate HashSet<JMenuItem> focusedItems;\n\tprivate MenuBar oldStyleMenuBar;\n\tprivate boolean macMenuBarFlag;\n\n}\n\n/* Package class: ProgramMenuBarListener */\n/**\n * This class implements the listener for the standard menu items that\n * forwards their action back to the program.\n */\nclass ProgramMenuBarListener implements ActionListener {\n\n/* Constructor: ProgramMenuBarListener(mbar) */\n/**\n * Creates a new listener for the standard menu items that will be added to this\n * menu bar.\n */\n\tpublic ProgramMenuBarListener(ProgramMenuBar mbar) {\n\t\tmenuBar = mbar;\n\t}\n\n/* Method: actionPerformed(e) */\n/**\n * Responds to an action event in the corresponding menu.   The effect of an\n * action event is to forward the action command back to the program.\n */\n\tpublic void actionPerformed(ActionEvent e) {\n\t\tmenuBar.fireActionListeners(e);\n\t}\n\n/* Private instance variables */\n\tprivate ProgramMenuBar menuBar;\n\n}\n\n/* Package class: OldStyleMenuItem */\n/**\n * This class represents a standard Macintosh <code>MenuItem</code> that listens to\n * a <code>JMenuItem</code> and tracks its changes.\n */\nclass OldStyleMenuItem extends MenuItem implements ActionListener, ChangeListener {\n\n/* Constructor: OldStyleMenuItem(jitem) */\n/**\n * Creates a new <code>MenuItem</code> that tracks the changes in the specified\n * <code>JMenuItem</code>.\n */\n\tpublic OldStyleMenuItem(JMenuItem jitem) {\n\t\tsuper(jitem.getText());\n\t\ttwin = jitem;\n\t\taddActionListener(this);\n\t\ttwin.addChangeListener(this);\n\t\tsetEnabled(twin.isEnabled());\n\t\tKeyStroke accelerator = twin.getAccelerator();\n\t\tif (accelerator != null) setShortcut(createShortcut(accelerator));\n\t}\n\n/* Method: actionPerformed(e) */\n/**\n * Responds to an action event in the Mac menu and forwards it along to\n * the actual <code>JMenuItem</code> that the client has created.\n */\n\tpublic void actionPerformed(ActionEvent e) {\n\t\tif (e != e) /* Avoid the unused parameter warning */;\n\t\ttwin.doClick(0);\n\t}\n\n/* Method: stateChanged(e) */\n/**\n * Monitors the state of the <code>JMenuItem</code> and replicates changes\n * in the enabled state.\n */\n\tpublic void stateChanged(ChangeEvent e) {\n\t\tsetEnabled(twin.isEnabled());\n\t}\n\n/* Private method: createShortcut(accelerator) */\n/**\n * Creates an old-style menu shortcut from the new-style accelerator.\n */\n\tprivate MenuShortcut createShortcut(KeyStroke accelerator) {\n\t\tboolean isShifted = (accelerator.getModifiers() & Event.SHIFT_MASK) != 0;\n\t\treturn new MenuShortcut(accelerator.getKeyCode(), isShifted);\n\t}\n\n/* Private instance variables */\n\tprivate JMenuItem twin;\n}\n\n/* Package class: OldStyleCheckBoxMenuItem */\n/**\n * This class represents a standard Macintosh <code>CheckBoxMenuItem</code> that\n * listens to a <code>JCheckBoxMenuItem</code> and tracks its changes.\n */\nclass OldStyleCheckBoxMenuItem extends CheckboxMenuItem implements ActionListener, ChangeListener {\n\n/* Constructor: OldStyleCheckBoxMenuItem(jitem) */\n/**\n * Creates a new <code>CheckBoxMenuItem</code> that tracks the changes in the specified\n * <code>JCheckBoxMenuItem</code>.\n */\n\tpublic OldStyleCheckBoxMenuItem(JCheckBoxMenuItem jitem) {\n\t\tsuper(jitem.getText());\n\t\ttwin = jitem;\n\t\taddActionListener(this);\n\t\ttwin.addChangeListener(this);\n\t\tsetState(twin.getState());\n\t\tsetEnabled(twin.isEnabled());\n\t\tKeyStroke accelerator = twin.getAccelerator();\n\t\tif (accelerator != null) setShortcut(createShortcut(accelerator));\n\t}\n\n/* Method: actionPerformed(e) */\n/**\n * Responds to an action event in the Mac menu and forwards it along to\n * the actual <code>JMenuItem</code> that the client has created.\n */\n\tpublic void actionPerformed(ActionEvent e) {\n\t\tif (e != e) /* Avoid the unused parameter warning */;\n\t\ttwin.doClick(0);\n\t}\n\n/* Method: stateChanged(e) */\n/**\n * Monitors the state of the <code>JMenuItem</code> and replicates changes\n * in the enabled state.\n */\n\tpublic void stateChanged(ChangeEvent e) {\n\t\tsetState(twin.getState());\n\t\tsetEnabled(twin.isEnabled());\n\t}\n\n/* Private method: createShortcut(accelerator) */\n/**\n * Creates an old-style menu shortcut from the new-style accelerator.\n */\n\tprivate MenuShortcut createShortcut(KeyStroke accelerator) {\n\t\tboolean isShifted = (accelerator.getModifiers() & Event.SHIFT_MASK) != 0;\n\t\treturn new MenuShortcut(accelerator.getKeyCode(), isShifted);\n\t}\n\n/* Private instance variables */\n\tprivate JCheckBoxMenuItem twin;\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/program/package.html",
    "content": "<html>\n<head>\n<title>The acm.program Package</title>\n</head>\n<body>\nThis package provides a set of classes that simplify the creation of programs.\nThe package includes five abstract classes, each of which uses a particular\nparadigm for input and output, as follows:\n\n<p><table border=0>\n<tr><td valign=top><a href=\"Program.html\"><code>Program</code></a>&nbsp;&nbsp;</td>\n<td>This class is the root of the program hierachy and defines a program in which\ninput and output are performed using the system console, which is redirected to\nthe standard Java I/O streams <code>System.in</code> and <code>System.out</code>.</td></tr>\n\n<tr><td valign=top><a href=\"ConsoleProgram.html\"><code>ConsoleProgram</code></a>&nbsp;&nbsp;</td>\n<td>This class is similar to <a href=\"Program.html\"><code>Program</code></a> but\nfills the program frame with an interactive console (as defined in the\n<a href=\"../io/IOConsole.html\"><code>IOConsole</code></a> class in the\n<a href=\"../io/package-summary.html\"><code>acm.io</code></a> package).</td></tr>\n\n<tr><td valign=top><a href=\"DialogProgram.html\"><code>DialogProgram</code></a>&nbsp;&nbsp;</td>\n<td>This class extends the basic functionality of the <a href=\"Program.html\"><code>Program</code></a>\nclass so that input operations are performed using the\n<a href=\"../io/IODialog.html\"><code>IODialog</code></a> class in the\n<a href=\"../io/package-summary.html\"><code>acm.io</code></a> package.</td></tr>\n\n<tr><td valign=top><a href=\"CommandLineProgram.html\"><code>CommandLineProgram</code></a>&nbsp;&nbsp;</td>\n<td>This class is similar to\n<a href=\"ConsoleProgram.html\"><code>ConsoleProgram</code></a>\nbut uses <code>System.in</code> and <code>System.out</code> instead of\nan <code>IOConsole</code>.  This class is typically used only for Java\nprograms that are invoked from a command line and make no use of Java&#146;s\ngraphical capabilities.</td></tr>\n</table>\n\n<p>The principal advantages of using the <code>Program</code> class are:\n\n<ul>\n<li>The conventional pattern of use associated with the <code>acm.program</code> package moves\nstudents away from the imperative style of <code>public&nbsp;static&nbsp;void&nbsp;main</code>\ninto a more pedagogically defensible framework in which students are always working in the\ncontext of an object.\n<li>The <code>Program</code> class allows Java applications to double as applets,\nthereby making it possible for intructors to use either paradigm in a consistent way.\nEven for those instructors that choose to focus on the application paradigm, using\nthe <code>Program</code> class makes it much easier for students to make their code\navailable on the web.  Moreover, because the <code>Program</code> class is defined\nto be a subclass of <code>Applet</code>, applications that run in that domain can\ntake advantage of such applet-based features as loading audio clips and images from\nthe code base.\n<li>The <code>Program</code> class includes several features that make instruction\neasier, such as the definition of standard menu bars that support operations like\nprinting and running programs with a test script.\n<li>The classes in the <code>acm.program</code> package offer a compelling example\nof an inheritance hierarchy that introductory students can understand and appreciate\nright from the beginning of their first course.\n</ul>\n\n<p>In most environments, the only thing students need to do to create a new\nprogram is to define a <code>Program</code> subclass that implements a <code>run</code>\nmethod.  For example, the following class definition creates a traditional,\nstream-oriented program that reads in two integers and computes their sum:\n\n<p><pre><code>\n&nbsp;    public class Add2 extends ConsoleProgram {\n&nbsp;       public void run() {\n&nbsp;          println(\"This program adds two numbers.\");\n&nbsp;          int n1 = readInt(\"Enter n1: \");\n&nbsp;          int n2 = readInt(\"Enter n2: \");\n&nbsp;          int total = n1 + n2;\n&nbsp;          println(\"The total is \" + total + \".\");\n&nbsp;       }\n&nbsp;    }\n</code></pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/util/Animator.java",
    "content": "/*\n * @(#)Animator.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Bug fix 12-Sep-07 (ESR, JTFBug 2007-013)\n//   1. Fixed bug in handling of ChangeListener compatibility.\n\npackage acm.util;\n\nimport java.applet.*;\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.lang.reflect.*;\nimport java.util.*;\nimport javax.swing.*;\nimport javax.swing.event.*;\n\n/* Class: Animator */\n/**\n * This class extends <code>Thread</code> to provide several features that make it\n * easier to build animations.  These features include a <code>pause</code>\n * method that does not raise an exception and a <code>requestTermination</code>\n * method that signals that the execution of this thread should stop at its\n * next opportunity.  It also includes hooks to support a start/stop/single-step\n * model for algorithm animation.\n */\npublic class Animator extends Thread {\n\n/* Constant: INITIAL */\n/** Constant indicating that the animator has not yet started. */\n\tpublic final static int INITIAL = 0;\n\n/* Constant: RUNNING */\n/** Constant indicating that the animator is running. */\n\tpublic final static int RUNNING = 1;\n\n/* Constant: STEPPING */\n/** Constant indicating that the animator is running in single-step mode. */\n\tpublic final static int STEPPING = 2;\n\n/* Constant: CALLING */\n/** Constant indicating that the animator is running until the end of the current call. */\n\tpublic final static int CALLING = 3;\n\n/* Constant: STOPPING */\n/** Constant indicating that the animator should stop at the next trace point. */\n\tpublic final static int STOPPING = 4;\n\n/* Constant: STOPPED */\n/** Constant indicating that the animator is suspended waiting for restart. */\n\tpublic final static int STOPPED = 5;\n\n/* Constant: FINISHED */\n/** Constant indicating that the animator has finished its <code>run</code> method. */\n\tpublic final static int FINISHED = 6;\n\n/* Constant: TERMINATING */\n/** Constant indicating that the animator has been asked to terminate. */\n\tpublic final static int TERMINATING = 7;\n\n/* Constructor: Animator() */\n/**\n * Creates a new <code>Animator</code> object.\n *\n * @usage Animator animator = new Animator();\n */\n\tpublic Animator() {\n\t\tinitAnimator();\n\t}\n\n/* Constructor: Animator(group) */\n/**\n * Creates a new <code>Animator</code> object and assigns it to the\n * specified thread group.\n *\n * @usage Animator animator = new Animator(group);\n * @param group The <code>ThreadGroup</code> to which the new thread is assigned\n * @noshow\n */\n\tpublic Animator(ThreadGroup group) {\n\t\tsuper(group, (Runnable) null);\n\t\tinitAnimator();\n\t}\n\n/* Constructor: Animator(runnable) */\n/**\n * Creates a new <code>Animator</code> object with the specified runnable object.\n *\n * @usage Animator animator = new Animator(runnable);\n * @param runnable Any object that implements the <code>Runnable</code> interface\n * @noshow\n */\n\tpublic Animator(Runnable runnable) {\n\t\tsuper(runnable);\n\t\tinitAnimator();\n\t}\n\n/* Constructor: Animator(group, runnable) */\n/**\n * Creates a new <code>Animator</code> object with the specified runnable object\n * and assigns it to the specified thread group.\n *\n * @usage Animator animator = new Animator(group, runnable);\n * @param group The <code>ThreadGroup</code> to which the new thread is assigned\n * @param runnable Any object that implements the <code>Runnable</code> interface\n * @noshow\n */\n\tpublic Animator(ThreadGroup group, Runnable runnable) {\n\t\tsuper(group, runnable);\n\t\tinitAnimator();\n\t}\n\n/* Method: run() */\n/**\n * Specifies the code for the animator.  Subclasses should override this\n * method with the code they need to execute to implement the animator's\n * function.\n */\n\tpublic void run() {\n\t\t/* Empty */\n\t}\n\n/* Method: getAnimatorState() */\n/**\n * Returns the state of the animator. This value will be one of the constants\n * <a href=\"#INITIAL\"><code>INITIAL</code></a>,\n * <a href=\"#RUNNING\"><code>RUNNING</code></a>,\n * <a href=\"#STEPPING\"><code>STEPPING</code></a>,\n * <a href=\"#CALLING\"><code>CALLING</code></a>,\n * <a href=\"#STOPPING\"><code>STOPPING</code></a>,\n * <a href=\"#STOPPED\"><code>STOPPED</code></a>,\n * <a href=\"#FINISHED\"><code>FINISHED</code></a>, or\n * <a href=\"#TERMINATING\"><code>TERMINATING</code></a>,\n * as defined in this class.\n *\n * @usage int state = animator.getAnimatorState();\n * @return The current state of the animator\n */\n\tpublic int getAnimatorState() {\n\t\treturn animatorState;\n\t}\n\n/* Method: pause(milliseconds) */\n/**\n * Delays this thread for the specified time, which is expressed in\n * milliseconds.  Unlike <code>Thread.sleep</code>, this method never\n * throws an exception.\n *\n * @usage animator.pause(milliseconds);\n * @param milliseconds The sleep time in milliseconds\n */\n\tpublic void pause(double milliseconds) {\n\t\tif (animatorState == TERMINATING) terminate();\n\t\tJTFTools.pause(milliseconds);\n\t}\n\n/* Method: startAction() */\n/**\n * Triggers a <code>\"start\"</code> action, as if the <code>Start</code> button\n * is pushed.\n *\n * @usage animator.startAction();\n */\n\tpublic void startAction() {\n\t\tstart(RUNNING);\n\t}\n\n/* Method: stopAction() */\n/**\n * Triggers a <code>\"stop\"</code> action, as if the <code>Stop</code> button\n * is pushed.\n *\n * @usage animator.stopAction();\n */\n\tpublic void stopAction() {\n\t\tswitch (animatorState) {\n\t\t  case RUNNING: case STEPPING: case CALLING:\n\t\t\tanimatorState = STOPPING;\n\t\t\tbreak;\n\t\t  default:\n\t\t\tbreak;\n\t\t}\n\t}\n\n/* Method: stepAction() */\n/**\n * Triggers a <code>\"step\"</code> action, as if the <code>Step</code> button\n * is pushed.\n *\n * @usage animator.stepAction();\n */\n\tpublic void stepAction() {\n\t\tstart(STEPPING);\n\t}\n\n/* Method: callAction() */\n/**\n * Triggers a <code>\"call\"</code> action, as if the <code>Call</code> button\n * is pushed.\n *\n * @usage animator.callAction();\n */\n\tpublic void callAction() {\n\t\tcallDepth = currentDepth;\n\t\tstart(CALLING);\n\t}\n\n/* Method: buttonAction(actionCommand) */\n/**\n * Triggers an action for the action specified by the\n * action command.\n *\n * @usage boolean ok = animator.buttonAction(actionCommand);\n * @param actionCommand The action command from the button\n * @return <code>true</code> if the action command is recognized\n */\n\tpublic boolean buttonAction(String actionCommand) {\n\t\tif (actionCommand.equals(\"Start\")) {\n\t\t\tstartAction();\n\t\t} else if (actionCommand.equals(\"Stop\")) {\n\t\t\tstopAction();\n\t\t} else if (actionCommand.equals(\"Step\")) {\n\t\t\tstepAction();\n\t\t} else if (actionCommand.equals(\"Call\")) {\n\t\t\tcallAction();\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\n/* Method: setSpeed(speed) */\n/**\n * Sets the speed parameter for the animator.  The speed is a <code>double</code>\n * between 0.0 and 1.0, for which 0.0 is very slow and 1.0 is as fast as the\n * system can manage.\n *\n * @usage animator.setSpeed(speed);\n * @param speed A double between 0.0 (slow) and 1.0 (fast)\n */\n\tpublic void setSpeed(double speed) {\n\t\tanimatorSpeed = speed;\n\t\tif (speedBar instanceof JSlider) {\n\t\t\tJSlider slider = (JSlider) speedBar;\n\t\t\tint min = slider.getMinimum();\n\t\t\tint max = slider.getMaximum();\n\t\t\tslider.setValue((int) Math.round(min + speed * (max - min)));\n\t\t} else if (speedBar instanceof JScrollBar) {\n\t\t\tJScrollBar scrollBar = (JScrollBar) speedBar;\n\t\t\tint min = scrollBar.getMinimum();\n\t\t\tint max = scrollBar.getMaximum();\n\t\t\tscrollBar.setValue((int) Math.round(min + speed * (max - min)));\n\t\t}\n\t}\n\n/* Method: getSpeed() */\n/**\n * Returns the speed parameter for the animator.  The speed is a <code>double</code>\n * between 0.0 and 1.0, for which 0.0 is very slow and 1.0 is as fast as the\n * system can manage.\n *\n * @usage double speed = animator.getSpeed();\n * @return A double between 0.0 (slow) and 1.0 (fast)\n */\n\tpublic double getSpeed() {\n\t\treturn animatorSpeed;\n\t}\n\n/* Method: trace() */\n/**\n * Checks the state of the animator and executes any actions have been requested.\n *\n * @usage animator.trace();\n */\n\tpublic void trace() {\n\t\ttrace(0);\n\t}\n\n/* Method: trace(depth) */\n/**\n * Checks the state of the animator and executes any actions have been requested\n * to occur at the specified call stack depth.  This method is useful only to\n * clients who are making use of the <code>Call</code> button functionality.\n *\n * @usage animator.trace(depth);\n * @param depth The current call stack depth.\n */\n\tpublic void trace(int depth) {\n\t\tif (Thread.currentThread() != this) {\n\t\t\tthrow new ErrorException(\"trace() can be called only by the animator thread itself\");\n\t\t}\n\t\tcurrentDepth = depth;\n\t\tswitch (animatorState) {\n\t\t  case RUNNING:\n\t\t\tdelay();\n\t\t\tbreak;\n\t\t  case STOPPING: case STEPPING:\n\t\t\tbreakpoint();\n\t\t\tbreak;\n\t\t  case CALLING:\n\t\t\tif (callDepth < currentDepth) {\n\t\t\t\tdelay();\n\t\t\t} else {\n\t\t\t\tbreakpoint();\n\t\t\t}\n\t\t\tbreak;\n\t\t  case TERMINATING:\n\t\t\tterminate();\n\t\t\tbreak;\n\t\t}\n\t}\n\n/* Method: breakpoint() */\n/**\n * Suspends the animator until one of the restart actions is triggered.\n *\n * @usage animator.breakpoint();\n */\n\tpublic void breakpoint() {\n\t\tif (Thread.currentThread() != this) {\n\t\t\tthrow new ErrorException(\"breakpoint() can be called only by the animator thread itself\");\n\t\t}\n\t\tanimatorState = STOPPED;\n\t\tbreakHook();\n\t\tsuspendAnimator();\n\t}\n\n/******************************************************************************/\n/* Implementation notes: delay()                                              */\n/* -----------------------------                                              */\n/* The delay method turns out to be tricky to code.  The intent is that the   */\n/* speed value should suggest a smoothly varying speed.   Unfortunately,      */\n/* implementing delay so that it \"feels right\" requires a nonlinear approach. */\n/* This implementation varies the speed steeply from 0.0 to 0.25 and then     */\n/* quadratically from 0.25 to 0.8.  From there it interposes delays in only   */\n/* a fraction of the calls to delay.                                          */\n/******************************************************************************/\n\n/* Method: delay() */\n/**\n * Delays the calling thread according to the speed.\n *\n * @usage animator.delay();\n */\n\tpublic void delay() {\n\t\tboolean yield = true;\n\t\tdouble delay = 0;\n\t\tif (animatorSpeed < 0.25) {\n\t\t\tdelay = SLOW_DELAY + animatorSpeed / 0.25 * (CLIP_DELAY - SLOW_DELAY);\n\t\t} else if (animatorSpeed < 0.9) {\n\t\t\tdelay = CLIP_DELAY + Math.sqrt((animatorSpeed - 0.25) / 0.65) * (FAST_DELAY - CLIP_DELAY);\n\t\t} else {\n\t\t\tswitch ((int) (animatorSpeed * 99.99 - 90)) {\n\t\t\t  case 0: yield = true; break;\n\t\t\t  case 1: yield = delayCount % 10 != 0; break;\n\t\t\t  case 2: yield = delayCount % 7 != 0; break;\n\t\t\t  case 3: yield = delayCount % 5 != 0; break;\n\t\t\t  case 4: yield = delayCount % 3 != 0; break;\n\t\t\t  case 5: yield = delayCount % 2 == 0; break;\n\t\t\t  case 6: yield = delayCount % 3 == 0; break;\n\t\t\t  case 7: yield = delayCount % 4 == 0; break;\n\t\t\t  case 8: yield = delayCount % 6 == 0; break;\n\t\t\t  case 9: yield = false; break;\n\t\t\t}\n\t\t\tdelayCount = (delayCount + 1) % (2 * 2 * 3 * 5 * 7);\n\t\t}\n\t\tif (yield) {\n\t\t\tdelayHook();\n\t\t\tJTFTools.pause(delay);\n\t\t}\n\t}\n\n/* Public method: registerSpeedBar(slider) */\n/**\n * Registers the specified slider as the delay controller for the animator.\n *\n * @usage registerSpeedBar(slider);\n * @param slider The slider which will serve as the speed bar for this animator\n */\n\tpublic void registerSpeedBar(JSlider slider) {\n\t\tSpeedBarListener.register(this, slider);\n\t\tspeedBar = slider;\n\t}\n\n/* Public method: registerSpeedBar(scrollBar) */\n/**\n * Registers the specified scroll bar as the delay controller for the animator.\n *\n * @usage registerSpeedBar(scrollBar);\n * @param scrollBar The scroll bar which will serve as the speed bar for this animator\n */\n\tpublic void registerSpeedBar(JScrollBar scrollBar) {\n\t\tSpeedBarListener.register(this, scrollBar);\n\t\tspeedBar = scrollBar;\n\t}\n\n/* Public method: getSpeedBar() */\n/**\n * Returns the speed bar for the animator, if any.  The speed bar can be a\n * <code>JSlider</code> or a <code>JScrollBar</code>; it is the caller's\n * responsibility to cast the result to the appropriate class.\n *\n * @return The speed bar, or <code>null</code> if none exists\n */\n\tpublic Component getSpeedBar() {\n\t\treturn speedBar;\n\t}\n\n/* Method: requestTermination() */\n/**\n * Signals the <code>Animator</code> that it should stop running at the\n * next available opportunity, which is when the client next calls\n * <code>pause</code> or <code>checkForTermination</code>.  Making this\n * check at well-managed times makes it possible for the client to\n * ensure that objects are left in a consistent state and thereby\n * avoids the problems that led Sun to deprecate <code>Thread.stop</code>.\n *\n * @usage requestTermination();\n */\n\tpublic void requestTermination() {\n\t\tanimatorState = TERMINATING;\n\t}\n\n/* Method: checkForTermination() */\n/**\n * Checks to see whether this <code>Animator</code> has been asked\n * to terminate.  If so, the <code>Animator</code> stops running,\n * and the call never returns.  If not, other threads are given a\n * chance to run, after which this <code>Animator</code> will return\n * to the caller.\n *\n * @usage checkForTermination();\n */\n\tpublic void checkForTermination() {\n\t\tif (animatorState == TERMINATING) {\n\t\t\tterminate();\n\t\t} else {\n\t\t\tyield();\n\t\t}\n\t}\n\n/* Static method: shutdown(applet) */\n/**\n * Destroys all animator threads started by the specified applet.  This method\n * ensures that applet cleanup occurs in browsers that refuse to terminate an\n * applet that still has threads running.\n *\n * @usage Animator.shutdown(applet);\n * @param applet The applet that is ending its execution\n * @noshow\n */\n\tpublic static void shutdown(Applet applet) {\n\t\ttry {\n\t\t\tClass<?> threadClass = Class.forName(\"java.lang.Thread\");\n\t\t\tMethod stop = threadClass.getMethod(\"stop\", new Class[0]);\n\t\t\tObject[] args = new Object[0];\n\t\t\tArrayList<Thread> list = animatorTable.get(applet);\n\t\t\tif (list != null) {\n\t\t\t\tanimatorTable.remove(applet);\n\t\t\t\tint nThreads = list.size();\n\t\t\t\tfor (int i = 0; i < nThreads; i++) {\n\t\t\t\t\tThread t = list.get(i);\n\t\t\t\t\tstop.invoke(t, args);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (Exception ex) {\n\t\t\t/* Empty */\n\t\t}\n\t}\n\n/* Hook method: delayHook() */\n/**\n * This method is called before the animator enters a timing delay.\n * Subclasses should override this method if they need to perform some\n * kind of action at this point, such as updating the display.\n */\n\tprotected void delayHook() {\n\t\t/* Empty */\n\t}\n\n/* Hook method: breakHook() */\n/**\n * This method is called before the animator executes a breakpoint.\n * Subclasses should override this method if they need to perform\n * some kind of action at this point, such as updating the display.\n */\n\tprotected void breakHook() {\n\t\t/* Empty */\n\t}\n\n/* Hook method: resumeHook() */\n/**\n * This method is called before the animator starts or restarts after\n * a breakpoint.  Subclasses should override this method if they need\n * to perform some kind of action at this point.\n */\n\tprotected void resumeHook() {\n\t\t/* Empty */\n\t}\n\n/* Hook method: controllerHook() */\n/**\n * This method is called before the animator changes state in a way\n * that might interest a controller.  Subclasses will typically override\n * this hook to update the enabled status of buttons and menu items.\n */\n\tprotected void controllerHook() {\n\t\t/* Empty */\n\t}\n\n/* Overridden method: start() */\n/**\n * Starts the thread.  The only difference in this method is that it\n * also sets the state.\n *\n * @usage animator.start();\n */\n\tpublic void start() {\n\t\tstart(RUNNING);\n\t}\n\n/* Private method: initAnimator() */\n/**\n * Makes sure that this thread inherits the applet identity of its creator, if any.\n */\n\tprivate void initAnimator() {\n\t\tApplet applet = JTFTools.getApplet();\n\t\tif (applet != null) {\n\t\t\tJTFTools.registerApplet(applet, this);\n\t\t\tArrayList<Thread> list = animatorTable.get(applet);\n\t\t\tif (list == null) {\n\t\t\t\tlist = new ArrayList<Thread>();\n\t\t\t\tanimatorTable.put(applet, list);\n\t\t\t}\n\t\t\tlist.add(this);\n\t\t}\n\t}\n\n/* Private method: start(state) */\n/**\n * Restarts the animator in the specified state.\n */\n\tprivate void start(int state) {\n\t\tswitch (animatorState) {\n\t\t  case INITIAL: case FINISHED:\n\t\t\tanimatorState = state;\n\t\t\tresumeHook();\n\t\t\tcontrollerHook();\n\t\t\tsuper.start();\n\t\t\tbreak;\n\t\t  case STOPPED:\n\t\t\tanimatorState = state;\n\t\t\tresumeHook();\n\t\t\tcontrollerHook();\n\t\t\tresumeAnimator();\n\t\t\tbreak;\n\t\t  default:\n\t\t\tbreak;\n\t\t}\n\t}\n\n/* Private method: suspendAnimator() */\n/**\n * Suspends the animator thread pending a later restart.\n */\n\tprivate synchronized void suspendAnimator() {\n\t\tresumed = false;\n\t\twhile (!resumed) {\n\t\t\ttry {\n\t\t\t\twait();\n\t\t\t} catch (InterruptedException e) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t}\n\t}\n\n/* Private method: resumeAnimator() */\n/**\n * Resumes the animator where it left off.\n */\n\tprivate synchronized void resumeAnimator() {\n\t\tresumed = true;\n\t\tnotifyAll();\n\t}\n\n/* Private method: terminate() */\n/**\n * Terminates the animator by throwing a <code>ThreadDeath</code> exception.\n */\n\tprivate void terminate() {\n\t\tif (Thread.currentThread() == this) {\n\t\t\tthrow new ThreadDeath();\n\t\t} else {\n\t\t\tthrow new ErrorException(\"Illegal call to terminate\");\n\t\t}\n\t}\n\n/* Private constants */\n\tprivate static final double SLOW_DELAY = 1000.0;\n\tprivate static final double CLIP_DELAY = 200.0;\n\tprivate static final double FAST_DELAY = 0.0;\n\n/* Static table of animator threads stored by applet */\n\tprivate static HashMap<Applet,ArrayList<Thread>> animatorTable = new HashMap<Applet,ArrayList<Thread>>();\n\n/* Private instance variables */\n\tprivate int animatorState = INITIAL;\n\tprivate int currentDepth = 0;\n\tprivate int callDepth = 0;\n\tprivate int delayCount = 0;\n\tprivate double animatorSpeed = 0.5;\n\tprivate Component speedBar;\n\tprivate boolean resumed;\n\n}\n\n/* Private class: SpeedBarListener */\n/**\n * This class acts as a generic listener to any kind of speed bar.  The\n * two principal models are <code>JSlider</code> or a <code>JScrollBar</code>,\n * but the listener can be anything that implements the methods <code>getValue</code>,\n * <code>getMinimum</code>, and <code>getMaximum</code> along with either\n * <code>addChangeListener</code> or <code>addAdjustmentListener</code>.\n * The extra generality is not really important here.  The key is to allow\n * both scrollbars and sliders.\n */\nclass SpeedBarListener implements AdjustmentListener, ChangeListener {\n\n/* Static method: register(animator, speedBar) */\n/**\n * Registers the speed bar as the delay controller for the animator.\n */\n\tpublic static void register(Animator animator, Object speedBar) {\n\t\tSpeedBarListener listener = new SpeedBarListener();\n\t\tlistener.animator = animator;\n\t\tlistener.speedBar = speedBar;\n\t\tClass<?> speedBarClass = speedBar.getClass();\n\t\tMethod addListener = lookForMethod(speedBarClass, \"addAdjustmentListener\");\n\t\tif (addListener == null) {\n\t\t\taddListener = lookForMethod(speedBarClass, \"addChangeListener\");\n\t\t}\n\t\tif (addListener == null) {\n\t\t\taddListener = lookForMethod(speedBarClass, \"addChangeListener\");\n\t\t}\n\t\ttry {\n\t\t\tlistener.getValue = speedBarClass.getMethod(\"getValue\", new Class[0]);\n\t\t\tlistener.getMinimum = speedBarClass.getMethod(\"getMinimum\", new Class[0]);\n\t\t\tlistener.getMaximum = speedBarClass.getMethod(\"getMaximum\", new Class[0]);\n\t\t\tObject[] args = { listener };\n\t\t\taddListener.invoke(speedBar, args);\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(\"Illegal speed bar object\");\n\t\t}\n\t\tlistener.setSpeed();\n\t}\n\n/* Method: adjustmentValueChanged(e) */\n/**\n * Indicates that an adjustment value has changed.  Implements AdjustmentListener.\n */\n\tpublic void adjustmentValueChanged(AdjustmentEvent e) {\n\t\tif (e != e) /* Avoid unused parameter warning */;\n\t\tsetSpeed();\n\t}\n\n/* Method: stateChanged(e) */\n/**\n * Indicates that a change has occurred in a slider.  Implements ChangeListener.\n */\n\tpublic void stateChanged(ChangeEvent e) {\n\t\tif (e != e) /* Avoid unused parameter warning */;\n\t\tsetSpeed();\n\t}\n\n/* Method: setSpeed() */\n/**\n * Sets the speed of the animator according to the speed bar.\n */\n\tpublic void setSpeed() {\n\t\ttry {\n\t\t\tint min = ((Integer) getMinimum.invoke(speedBar, new Object[0])).intValue();\n\t\t\tint max = ((Integer) getMaximum.invoke(speedBar, new Object[0])).intValue();\n\t\t\tint value = ((Integer) getValue.invoke(speedBar, new Object[0])).intValue();\n\t\t\tdouble fraction = (double) (value - min) / (max - min);\n\t\t\tanimator.setSpeed(fraction);\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/* Private static method: lookForMethod(speedBarClass, methodName) */\n/**\n * Looks for a method in the class with the appropriate name.\n */\n\tprivate static Method lookForMethod(Class<?> speedBarClass, String methodName) {\n\t\tMethod[] methods = speedBarClass.getMethods();\n\t\tfor (int i = 0; i < methods.length; i++) {\n\t\t\tif (methodName.equals(methods[i].getName())) return methods[i];\n\t\t}\n\t\treturn null;\n\t}\n\n/* Private instance variables */\n\tprivate Animator animator;\n\tprivate Object speedBar;\n\tprivate Method getValue;\n\tprivate Method getMinimum;\n\tprivate Method getMaximum;\n\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/util/CancelledException.java",
    "content": "/*\n * @(#)CancelledException.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\npackage acm.util;\n\n/* Class: CancelledException */\n/**\n * This class allows a dialog to signal clients that it has been\n * cancelled.  Because <code>CancelledException</code> is a subclass\n * of <code>RuntimeException</code>, this exception need not be declared\n * in <code>throws</code> clauses.\n */\npublic class CancelledException extends RuntimeException {\n\n/* Constructor: CancelledException() */\n/**\n * Creates an <code>CancelledException</code>.\n *\n * @usage throw new CancelledException();\n */\n\tpublic CancelledException() {\n\t\t/* Empty */\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/util/ErrorException.java",
    "content": "/*\n * @(#)ErrorException.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\npackage acm.util;\n\n/* Class: ErrorException */\n/**\n * This class allows errors to be reported in a consistent way.\n * Clients typically call\n *\n * <p><pre><code>\n * &nbsp;    throw new ErrorException(msg);\n * </code></pre>\n *\n * <p>Because <code>ErrorException</code> is a subclass of <code>RuntimeException</code>,\n * this exception need not be declared in <code>throws</code> clauses.\n */\npublic class ErrorException extends RuntimeException {\n\n/* Constructor: ErrorException(msg) */\n/**\n * Creates an <code>ErrorException</code> with the specified message.\n *\n * @usage throw new ErrorException(msg);\n * @param msg The error message to be reported\n */\n\tpublic ErrorException(String msg) {\n\t\tsuper(msg);\n\t}\n\n/* Constructor: ErrorException(ex) */\n/**\n * Creates an <code>ErrorException</code> using an existing exception.\n *\n * @usage throw new ErrorException(ex);\n * @param ex The exception to be reported\n */\n\tpublic ErrorException(Exception ex) {\n\t\tsuper(ex.getClass().getName() + \": \" + ex.getMessage());\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/util/FileChooserFilter.java",
    "content": "/*\n * @(#)FileChooserFilter.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// Class introduced in V1.1\n\npackage acm.util;\n\nimport java.io.*;\nimport java.util.*;\n\n/* Class: FileChooserFilter */\n/**\n * This class extends <code>javax.swing.filechooser.FileFilter</code>\n * and exists primarily to avoid the ambiguity that arises because there is\n * also a <code>FileFilter</code> class in <code>java.io</code>.  This\n * class also supports simple wildcard matching of filenames.\n */\npublic class FileChooserFilter extends javax.swing.filechooser.FileFilter {\n\n/* Constructor: FileChooserFilter() */\n/**\n * Creates a default <code>FileChooserFilter</code>.  Such a\n * <code>FileChooserFilter</code> is useful only if the client\n * overrides the <code>accept</code> and <code>getDescription</code>\n * methods.\n *\n * @usage FileChooserFilter filter = new FileChooserFilter();\n */\n\tpublic FileChooserFilter() {\n\t\tfilenamePattern = null;\n\t\tfilenameDescription = null;\n\t}\n\n/* Constructor: FileChooserFilter(pattern) */\n/**\n * Creates a <code>FileChooserFilter</code> that accepts filenames\n * matching the specified pattern.  This pattern consists of a\n * wildcard pattern (or a series of wildcard patterns separated\n * by semicolons) similar to those by a Unix shell.  For example, to\n * match all files ending with the extensions <code>.html</code>\n * or <code>.htm</code>, you could use the following constructor call:\n *\n * <p><pre><code>\n * &nbsp;    new FileChooserPattern(\"*.html;*.htm\")\n * </code></pre>\n *\n * @usage FileChooserFilter filter = new FileChooserFilter(pattern);\n * @param pattern The filename pattern\n */\n\tpublic FileChooserFilter(String pattern) {\n\t\tthis(pattern, pattern + \" files\");\n\t}\n\n/* Constructor: FileChooserFilter(pattern, description) */\n/**\n * Creates a <code>FileChooserFilter</code> that accepts filenames\n * matching the specified pattern.  This pattern consists of a\n * wildcard pattern (or a series of wildcard patterns separated\n * by semicolons) similar to those by a Unix shell.  For example, to\n * match all files ending with the extensions <code>.html</code>\n * or <code>.htm</code>, you could use the following constructor call:\n *\n * <p><pre><code>\n * &nbsp;    new FileChooserPattern(\"*.html;*.htm\")\n * </code></pre>\n *\n * <p>This version of the constructor makes it possible to set the\n * description that appears in the dialog.\n *\n * @usage FileChooserFilter filter = new FileChooserFilter(pattern, description);\n * @param pattern The filename pattern\n * @param description The description of the files for inclusion in the dialog\n */\n\tpublic FileChooserFilter(String pattern, String description) {\n\t\tfilenamePattern = pattern;\n\t\tfilenameDescription = description;\n\t}\n\n/* Method: accept(file) */\n/**\n * Returns <code>true</code> if the specified file should be accepted by\n * the filter.\n *\n * @usage if (filter.accept(file)) . . .\n * @param file The <code>File</code> object representing the file\n * @return <code>true</code> if the specified file should be accepted\n */\n\tpublic boolean accept(File file) {\n\t\tif (filenamePattern == null) {\n\t\t\tthrow new ErrorException(\"No override definition for accept\");\n\t\t}\n\t\tif (file.isDirectory()) return true;\n\t\tStringTokenizer tokenizer = new StringTokenizer(filenamePattern, \";\");\n\t\twhile (tokenizer.hasMoreTokens()) {\n\t\t\tString pattern = tokenizer.nextToken();\n\t\t\tif (pattern.length() > 0 && JTFTools.matchFilenamePattern(file.getName(), pattern)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n/* Method: getDescription() */\n/**\n * Returns a description of the accepted files.\n */\n\tpublic String getDescription() {\n\t\tif (filenameDescription == null) {\n\t\t\tthrow new ErrorException(\"No override definition for getDescription\");\n\t\t}\n\t\treturn filenameDescription;\n\t}\n\n/* Private instance variables */\n\tString filenamePattern;\n\tString filenameDescription;\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/util/JTFTools.java",
    "content": "/*\n * @(#)JTFTools.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Bug fix 2-Jan-07 (ESR, JTFBug 2007-001)\n//   1. Fixed bug in the decodeFont method where it failed to take proper\n//      account of the properties of the old font.\n//\n// Feature enhancement 2-Mar-07 (ESR)\n//   1. Added methods to support the implementation of the \"Export Applet\" and\n//      \"Submit Project\" menu items.\n//\n// Feature enhancement 4-May-07 (ESR)\n//   1. Added getFontList and findFontFamily methods.\n//\n// Code cleanup 28-May-07 (ESR)\n//   1. Added generic type tags.\n//\n// Feature enhancement 10-Oct-07 (ESR)\n//   1. Significantly improved the operation of getMainClass by checking\n//      to see whether classes in the current directory have been loaded.\n//\n// Feature enhancement 10-Jun-08 (ESR)\n//   1. Added matchFilenamePattern method.\n\npackage acm.util;\n\nimport acm.gui.*;\nimport acm.io.*;\nimport acm.program.*;\nimport java.applet.*;\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.io.*;\nimport java.lang.reflect.*;\nimport java.net.*;\nimport java.security.*;\nimport java.text.*;\nimport java.util.*;\nimport java.util.zip.*;\nimport javax.swing.*;\nimport javax.swing.event.*;\n\n/* Class: JTFTools */\n/**\n * This class provides a collection of static utility methods\n * that are used elsewhere in the ACM packages.\n */\npublic class JTFTools {\n\n/* Private constructor */\n/**\n * Prevent any clients from constructing objects of this class.\n */\n\tprivate JTFTools() {\n\t\t/* Empty */\n\t}\n\n/* Static method: pause(milliseconds) */\n/**\n * Delays the calling thread for the specified time, which is expressed in\n * milliseconds.  Unlike <code>Thread.sleep</code>, this method never throws an\n * exception.\n *\n * @usage JTFTools.pause(milliseconds);\n * @param milliseconds The sleep time in milliseconds\n */\n\tpublic static void pause(double milliseconds) {\n\t\tApplet applet = appletTable.get(Thread.currentThread());\n\t\tif (applet == null) {\n\t\t\tapplet = mostRecentApplet;\n\t\t\tappletTable.put(Thread.currentThread(), applet);\n\t\t}\n\t\ttry {\n\t\t\tint millis = (int) milliseconds;\n\t\t\tint nanos = (int) Math.round((milliseconds - millis) * 1000000);\n\t\t\tThread.sleep(millis, nanos);\n\t\t} catch (InterruptedException ex) {\n\t\t\t/* Empty */\n\t\t}\n\t}\n\n/* Static method: createEmptyContainer() */\n/**\n * Returns an empty lightweight container.  Several packages need to create\n * such components as placeholders.  Defining it in JTFTools gives those\n * pacakges access to a common mechanism.\n *\n * @usage Container comp = JTFTools.createEmptyContainer();\n * @return An empty lightweight container that can be used as a placeholder\n */\n\tpublic static Container createEmptyContainer() {\n\t\treturn new EmptyContainer();\n\t}\n\n/* Static method: getEnclosingFrame(comp) */\n/**\n * Returns the frame that encloses the specified component.\n *\n * @usage Frame frame = JTFTools.getEnclosingFrame(comp);\n * @param comp The component at which to start the search\n * @return The nearest enclosing <code>Frame</code> object\n */\n\tpublic static Frame getEnclosingFrame(Component comp) {\n\t\tif (comp instanceof Program) comp = ((Program) comp).getContentPane();\n\t\twhile (comp != null && !(comp instanceof Frame)) {\n\t\t\tcomp = comp.getParent();\n\t\t}\n\t\treturn (Frame) comp;\n\t}\n\n/* Static method: getStandardFont(font) */\n/**\n * Returns a font that will approximate the specified font in this environment.\n * This method is required because some browsers do not support the standard\n * fonts <code>Serif</code>, <code>SansSerif</code>, and <code>Monospaced</code>.\n *\n * @usage Font newFont = JTFTools.getStandardFont(font);\n * @param font The font being checked\n * @return The new font\n */\n\tpublic static Font getStandardFont(Font font) {\n\t\tif (!fontFamilyTableInitialized) initFontFamilyTable();\n\t\tif (font == null || fontFamilyTable == null) return font;\n\t\tString family = font.getFamily();\n\t\tif (fontFamilyTable.get(trimFamilyName(family)) != null) return font;\n\t\tif (family.equals(\"Serif\") || family.equals(\"Times\")) {\n\t\t\tfamily = getFirstAvailableFontSubstitution(SERIF_SUBSTITUTIONS);\n\t\t} else if (family.equals(\"SansSerif\")) {\n\t\t\tfamily = getFirstAvailableFontSubstitution(SANSSERIF_SUBSTITUTIONS);\n\t\t} else if (family.equals(\"Monospaced\")) {\n\t\t\tfamily = getFirstAvailableFontSubstitution(MONOSPACED_SUBSTITUTIONS);\n\t\t} else {\n\t\t\treturn font;\n\t\t}\n\t\tif (family == null) return font;\n\t\treturn new Font(family, font.getStyle(), font.getSize());\n\t}\n\n/* Static method: getFontList() */\n/**\n * Returns an array of the available font family names.\n *\n * @usage String[] fonts = JTFTools.getFontList();\n * @return An array of the available font family names\n */\n\tpublic static String[] getFontList() {\n\t\tif (!fontFamilyTableInitialized) initFontFamilyTable();\n\t\treturn fontFamilyArray;\n\t}\n\n/* Static method: findFontFamily(str) */\n/**\n * Finds the first font family in the string <code>str</code> that exists in\n * the current <code>GraphicsEnvironment</code>.  As in HTML font tags, the\n * <code>str</code> consists of a set of font names separated by semicolons.\n * The <code>findFontFamily</code> method returns the first family name that\n * exists in the list of loaded fonts, or <code>null</code> if there are none.\n *\n * @usage String familyName = JTFTools.findFontFamily(str);\n * @param str The list of family names separated by semicolons\n * @return The first family name that exists, or <code>null</code> if none\n */\n\tpublic static String findFontFamily(String str) {\n\t\tif (!fontFamilyTableInitialized) initFontFamilyTable();\n\t\tStringTokenizer tokenizer = new StringTokenizer(str, \";\", false);\n\t\twhile (tokenizer.hasMoreTokens()) {\n\t\t\tString familyName = fontFamilyTable.get(trimFamilyName(tokenizer.nextToken()));\n\t\t\tif (familyName != null) return familyName;\n\t\t}\n\t\treturn null;\n\t}\n\n/* Static method: decodeFont(str) */\n/**\n * Decodes a font in the style of <code>Font.decode</code>.\n *\n * @usage Font font = JTFTools.decodeFont(str);\n * @param str The string to decode\n * @return The new font\n */\n\tpublic static Font decodeFont(String str) {\n\t\treturn decodeFont(str, null);\n\t}\n\n/* Static method: decodeFont(str, oldFont) */\n/**\n * Decodes a font in the style of <code>Font.decode</code>.  The only difference\n * is that this method takes a font parameter that gives default values for\n * the different parts of the font.  If the family, size, or style is specified\n * as an asterisk, the corresponding value is taken from the supplied font.\n *\n * @usage Font font = JTFTools.decodeFont(str, oldFont);\n * @param str The string to decode\n * @param oldFont The font whose properties are used as defaults\n * @return The new font\n */\n\tpublic static Font decodeFont(String str, Font oldFont) {\n\t\tString familyName = str;\n\t\tint fontStyle = (oldFont == null) ? Font.PLAIN : oldFont.getStyle();\n\t\tint fontSize = (oldFont == null) ? 12 : oldFont.getSize();\n\t\tint hyphen = str.indexOf('-');\n\t\tif (hyphen >= 0) {\n\t\t\tfamilyName = str.substring(0, hyphen);\n\t\t\tstr = str.substring(hyphen + 1).toLowerCase();\n\t\t\tString styleName = str;\n\t\t\thyphen = str.indexOf('-');\n\t\t\tif (hyphen >= 0) {\n\t\t\t\tstyleName = str.substring(0, hyphen);\n\t\t\t\tstr = str.substring(hyphen + 1);\n\t\t\t} else {\n\t\t\t\tstr = \"*\";\n\t\t\t}\n\t\t\tif (Character.isDigit(styleName.charAt(0))) {\n\t\t\t\tString tmp = styleName;\n\t\t\t\tstyleName = str;\n\t\t\t\tstr = tmp;\n\t\t\t}\n\t\t\tif (styleName.equals(\"plain\")) {\n\t\t\t\tfontStyle = Font.PLAIN;\n\t\t\t} else if (styleName.equals(\"bold\")) {\n\t\t\t\tfontStyle = Font.BOLD;\n\t\t\t} else if (styleName.equals(\"italic\")) {\n\t\t\t\tfontStyle = Font.ITALIC;\n\t\t\t} else if (styleName.equals(\"bolditalic\")) {\n\t\t\t\tfontStyle = Font.BOLD | Font.ITALIC;\n\t\t\t} else if (!styleName.equals(\"*\")) {\n\t\t\t\tthrow new ErrorException(\"Illegal font style\");\n\t\t\t}\n\t\t\tif (!str.equals(\"*\")) {\n\t\t\t\ttry {\n\t\t\t\t\tfontSize = Integer.valueOf(str).intValue();\n\t\t\t\t} catch (NumberFormatException ex) {\n\t\t\t\t\tthrow new ErrorException(\"Illegal font size\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (familyName.equals(\"*\")) {\n\t\t\tfamilyName = (oldFont == null) ? \"Default\" : oldFont.getName();\n\t\t} else {\n\t\t\tif (!fontFamilyTableInitialized) initFontFamilyTable();\n\t\t\tif (fontFamilyTable != null) {\n\t\t\t\tfamilyName = fontFamilyTable.get(trimFamilyName(familyName));\n\t\t\t\tif (familyName == null) familyName = \"Default\";\n\t\t\t}\n\t\t}\n\t\treturn getStandardFont(new Font(familyName, fontStyle, fontSize));\n\t}\n\n/* Static method: decodeColor(name) */\n/**\n * Decodes a color name.  This method is similar to <code>Color.decode</code>\n * except in that it allows named colors and system colors.\n *\n * @usage color = JTFTools.decodeColor(name);\n * @param name The string name of the color\n * @return The color corresponding to the specified name\n */\n\tpublic static Color decodeColor(String name) {\n\t\tif (name.equalsIgnoreCase(\"desktop\")) return SystemColor.desktop;\n\t\tif (name.equalsIgnoreCase(\"activeCaption\")) return SystemColor.activeCaption;\n\t\tif (name.equalsIgnoreCase(\"activeCaptionText\")) return SystemColor.activeCaptionText;\n\t\tif (name.equalsIgnoreCase(\"activeCaptionBorder\")) return SystemColor.activeCaptionBorder;\n\t\tif (name.equalsIgnoreCase(\"inactiveCaption\")) return SystemColor.inactiveCaption;\n\t\tif (name.equalsIgnoreCase(\"inactiveCaptionText\")) return SystemColor.inactiveCaptionText;\n\t\tif (name.equalsIgnoreCase(\"inactiveCaptionBorder\")) return SystemColor.inactiveCaptionBorder;\n\t\tif (name.equalsIgnoreCase(\"window\")) return SystemColor.window;\n\t\tif (name.equalsIgnoreCase(\"windowBorder\")) return SystemColor.windowBorder;\n\t\tif (name.equalsIgnoreCase(\"windowText\")) return SystemColor.windowText;\n\t\tif (name.equalsIgnoreCase(\"menu\")) return SystemColor.menu;\n\t\tif (name.equalsIgnoreCase(\"menuText\")) return SystemColor.menuText;\n\t\tif (name.equalsIgnoreCase(\"text\")) return SystemColor.text;\n\t\tif (name.equalsIgnoreCase(\"textText\")) return SystemColor.textText;\n\t\tif (name.equalsIgnoreCase(\"textHighlight\")) return SystemColor.textHighlight;\n\t\tif (name.equalsIgnoreCase(\"textHighlightText\")) return SystemColor.textHighlightText;\n\t\tif (name.equalsIgnoreCase(\"textInactiveText\")) return SystemColor.textInactiveText;\n\t\tif (name.equalsIgnoreCase(\"control\")) return SystemColor.control;\n\t\tif (name.equalsIgnoreCase(\"controlText\")) return SystemColor.controlText;\n\t\tif (name.equalsIgnoreCase(\"controlHighlight\")) return SystemColor.controlHighlight;\n\t\tif (name.equalsIgnoreCase(\"controlLtHighlight\")) return SystemColor.controlLtHighlight;\n\t\tif (name.equalsIgnoreCase(\"controlShadow\")) return SystemColor.controlShadow;\n\t\tif (name.equalsIgnoreCase(\"controlDkShadow\")) return SystemColor.controlDkShadow;\n\t\tif (name.equalsIgnoreCase(\"scrollbar\")) return SystemColor.scrollbar;\n\t\tif (name.equalsIgnoreCase(\"info\")) return SystemColor.info;\n\t\tif (name.equalsIgnoreCase(\"infoText\")) return SystemColor.infoText;\n\t\tif (name.equalsIgnoreCase(\"black\")) return Color.BLACK;\n\t\tif (name.equalsIgnoreCase(\"blue\")) return Color.BLUE;\n\t\tif (name.equalsIgnoreCase(\"cyan\")) return Color.CYAN;\n\t\tif (name.equalsIgnoreCase(\"darkGray\")) return Color.DARK_GRAY;\n\t\tif (name.equalsIgnoreCase(\"DARK_GRAY\")) return Color.DARK_GRAY;\n\t\tif (name.equalsIgnoreCase(\"gray\")) return Color.GRAY;\n\t\tif (name.equalsIgnoreCase(\"green\")) return Color.GREEN;\n\t\tif (name.equalsIgnoreCase(\"lightGray\")) return Color.LIGHT_GRAY;\n\t\tif (name.equalsIgnoreCase(\"LIGHT_GRAY\")) return Color.LIGHT_GRAY;\n\t\tif (name.equalsIgnoreCase(\"magenta\")) return Color.MAGENTA;\n\t\tif (name.equalsIgnoreCase(\"orange\")) return Color.ORANGE;\n\t\tif (name.equalsIgnoreCase(\"pink\")) return Color.PINK;\n\t\tif (name.equalsIgnoreCase(\"red\")) return Color.RED;\n\t\tif (name.equalsIgnoreCase(\"white\")) return Color.WHITE;\n\t\tif (name.equalsIgnoreCase(\"yellow\")) return Color.YELLOW;\n\t\ttry {\n\t\t\treturn Color.decode(name);\n\t\t} catch (NumberFormatException ex) {\n\t\t\tthrow new ErrorException(\"Illegal color value\");\n\t\t}\n\t}\n\n/* Static method: matchFilenamePattern(filename, pattern) */\n/**\n * Determines whether the filename matches the specified pattern.  The\n * pattern string is interpreted in much the same way that a Unix shell\n * expands filenames and supports the following wildcard options:\n *\n * <table>\n * <tr><td align=center><code>?</code></td><td>Matches any single character</td></tr>\n * <tr><td align=center><code>*</code></td><td>Matches any sequence of characters</td></tr>\n * <tr><td align=center><code>[...]</code></td><td>Matches any of the specified characters</td></tr>\n * <tr><td align=center><code>[^...]</code></td><td>Matches any character <i>except</i> the specified ones</td></tr>\n * </table>\n *\n * The last two options allow a range of characters to be specified in the form\n * <code>a-z</code>.\n *\n * @usage if (JTFTools.matchFilenamePattern(filename, pattern)) . . .\n * @param filename The filename being tested\n * @param pattern The pattern including wildcards\n * @return <code>true</code> if the filename matches the pattern\n */\n\tpublic static boolean matchFilenamePattern(String filename, String pattern) {\n\t\treturn recursiveMatch(filename, 0, pattern, 0);\n\t}\n\n/* Static method: registerApplet(applet) */\n/**\n * Adds this applet to a table indexed by the current thread.\n *\n * @usage JTFTools.registerApplet(applet);\n * @param applet The applet being registered\n * @noshow\n */\n\tpublic static void registerApplet(Applet applet) {\n\t\tregisterApplet(applet, Thread.currentThread());\n\t\tmostRecentApplet = applet;\n\t}\n\n/* Static method: registerApplet(applet, thread) */\n/**\n * Adds this applet to a table indexed by the specified thread.\n *\n * @usage JTFTools.registerApplet(applet);\n * @param applet The applet being registered\n * @param thread The thread used as the key\n * @noshow\n */\n\tpublic static void registerApplet(Applet applet, Thread thread) {\n\t\tappletTable.put(thread, applet);\n\t}\n\n/* Static method: getApplet() */\n/**\n * Returns the current applet.  This implementation may fail in\n * multithreaded programs.  Such programs should therefore not\n * rely on this facility.  It is appropriate to use this facility,\n * for example, during the <code>init</code> method of a program,\n * which is the only context in which it is applied in the JTF tools.\n *\n * @usage Applet applet JTFTools.getApplet();\n * @return The currently running applet\n * @noshow\n */\n\tpublic static Applet getApplet() {\n\t\tApplet applet = appletTable.get(Thread.currentThread());\n\t\tif (applet == null) applet = mostRecentApplet;\n\t\treturn applet;\n\t}\n\n/* Static method: setDebugOptions(options) */\n/**\n * Sets the debugging options in place for this run.  The list of options are\n * a set of strings combined with the <code>+</code> sign character.\n *\n * @usage JTFTools.setDebugOption(options)\n * @param options The names of the enabled options separated by plus signs\n * @noshow\n */\n\tpublic static void setDebugOptions(String options) {\n\t\tdebugOptions = (options == null) ? null : \"+\" + options.toLowerCase() + \"+\";\n\t}\n\n/* Static method: testDebugOption(option) */\n/**\n * Tests to see whether the current program was invoked with a <code>debug</code>\n * parameter that contains the specified string as a lexical unit in a string\n * delimited by <code>+</code> signs.\n *\n * @usage if (JTFTools.testDebugOption(option)) . . .\n * @param option The name of the option\n * @return The constant <code>true</code> if the specified debug option is in effect\n * @noshow\n */\n\tpublic static boolean testDebugOption(String option) {\n\t\tif (debugOptions == null) return false;\n\t\treturn debugOptions.indexOf(\"+\" + option.toLowerCase() + \"+\") >= 0;\n\t}\n\n/* Static method: getCommandLine() */\n/**\n * Returns the command line that invoked this program, or <code>null</code>\n * if no command line is available.\n *\n * @usage String line = JTFTools.getCommandLine();\n * @return The command line that invoked this program\n * @noshow\n */\n\tpublic static String getCommandLine() {\n\t\tswitch (Platform.getPlatform()) {\n\t\t  case Platform.UNIX: case Platform.MAC:\n\t\t\treturn getShellCommandLine();\n\t\t  case Platform.WINDOWS:\n\t\t\treturn DOSCommandLine.getCommandLine();\n\t\t  default:\n\t\t\treturn getShellCommandLine();\n\t\t}\n\t}\n\n/* Static method: getMainClass() */\n/**\n * Returns the name of the main class.\n *\n * @usage String className = JTFTools.getMainClass();\n * @return The name of the main class, or null if that class cannot be identified\n * @noshow\n */\n\tpublic static String getMainClass() {\n\t\tString className = null;\n\t\ttry {\n\t\t\tclassName = System.getProperty(\"java.main\");\n\t\t} catch (Exception ex) {\n\t\t\t/* Empty */\n\t\t}\n\t\tif (className == null) {\n\t\t\tclassName = readMainClassFromClassPath();\n\t\t}\n\t\tif (className == null) {\n\t\t\tString commandLine = getCommandLine();\n\t\t\tclassName = readMainClassFromCommandLine(commandLine);\n\t\t}\n\t\treturn className;\n\t}\n\n/* Static method: checkIfLoaded(className) */\n/**\n * Returns true if the specified class is already loaded.\n *\n * @usage if (JTFTools.checkIfLoaded(className)) . . .\n * @param className The name of the class\n * @return The boolean value true if the class is already loaded, and false otherwise\n * @noshow\n */\n\tpublic static boolean checkIfLoaded(String className) {\n\t\tif (Platform.compareVersion(\"1.2\") < 0) return false;\n\t\tboolean result = false;\n\t\ttry {\n\t\t\tif (System.getSecurityManager() != null) return false;\n\t\t\tif (managerThatFails == null) {\n\t\t\t\ttry {\n\t\t\t\t\tClass<?> managerThatFailsClass = Class.forName(\"acm.util.SecurityManagerThatFails\");\n\t\t\t\t\tmanagerThatFails = (SecurityManager) managerThatFailsClass.newInstance();\n\t\t\t\t} catch (Exception ex) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tSystem.setSecurityManager(managerThatFails);\n\t\t\ttry {\n\t\t\t\tresult = (Class.forName(className) != null);\n\t\t\t} catch (ExceptionInInitializerError err) {\n\t\t\t\tresult = true;\n\t\t\t} catch (NoClassDefFoundError err) {\n\t\t\t\t/* Empty */;\n\t\t\t} finally {\n\t\t\t\tSystem.setSecurityManager(null);\n\t\t\t}\n\t\t} catch (Exception ex) {\n\t\t\t/* Empty */\n\t\t}\n\t\treturn result;\n\t}\n\n/* Static method: terminateAppletThreads(applet) */\n/**\n * Terminates all of the threads that are registered as belonging to the\n * specified applet.\n *\n * @usage JTFTools.terminateAppletThreads(applet);\n * @param applet The applet whose threads are being terminated\n * @noshow\n */\n\tpublic static void terminateAppletThreads(Applet applet) {\n\t\ttry {\n\t\t\tThread myThread = Thread.currentThread();\n\t\t\tClass<?> threadClass = Class.forName(\"java.lang.Thread\");\n\t\t\tMethod stop = threadClass.getMethod(\"stop\", new Class[0]);\n\t\t\tIterator<Thread> iterator = appletTable.keySet().iterator();\n\t\t\twhile (iterator.hasNext()) {\n\t\t\t\tThread t = iterator.next();\n\t\t\t\tif (t != myThread && t.isAlive() && isAnonymous(t) && applet == appletTable.get(t)) {\n\t\t\t\t\tstop.invoke(t, new Object[0]);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (Exception ex) {\n\t\t\t/* Empty */\n\t\t}\n\t}\n\n/* Static method: isAnonymous(t) */\n/**\n * Returns <code>true</code> if the supplied thread is an anonymous\n * one created automatically by the system.\n *\n * @usage if (JTFTools.isAnonymous(t)) . . .\n * @param t The thread being tested\n * @noshow\n */\n\tpublic static boolean isAnonymous(Thread t) {\n\t\tString name = t.getName();\n\t\tif (!name.startsWith(\"Thread-\")) return false;\n\t\tfor (int i = 7; i < name.length(); i++) {\n\t\t\tif (!Character.isDigit(name.charAt(i))) return false;\n\t\t}\n\t\treturn true;\n\t}\n\n/* Static method: openMailStream(smtpServer, from, to) */\n/**\n * Opens a mail-sending process using the specified SMTP server, which will\n * send a message from the specified sender to the recipient.  The return value\n * is a <code>PrintStream</code> that the client can use to write the data\n * in the message, including the headers.  Closing the stream sends the message.\n * To cancel the message without sending it, use the <code>cancelMail</code> method.\n *\n * @usage JTFTools.openMailStream(smtpServer, from, to);\n * @param smtpServer A string indicating the host name of the SMTP server\n * @param from A string indicating the e-mail address of the sender\n * @param to A string indicating the e-mail address of this recipient\n * @return A <code>PrintStream</code> suitable for sending the message data\n * @noshow\n */\n\tpublic static PrintStream openMailStream(String smtpServer, String from, String to) {\n\t\treturn new MailStream(smtpServer, from, to);\n\t}\n\n/* Static method: cancelMail(out) */\n/**\n * Cancels the mail-sending process without sending the message.  The output stream\n * is closed after returning.\n *\n * @usage JTFTools.cancelMail(out);\n * @param out The output stream returned by <code>openMailStream</code>\n * @noshow\n */\n\tpublic static void cancelMail(PrintStream out) {\n\t\t((MailStream) out).cancel();\n\t}\n\n/* Static method: sendStandardHeaders(out, senderName, subject) */\n/**\n * Adds the standard \"To\", \"From\", \"Subject\", and \"Date\" headers to the message.\n *\n * @usage JTFTools.sendStandardHeaders(out, senderName, subject);\n * @param out The output stream returned by <code>openMailStream</code>\n * @param senderName The real name of the sender\n * @param subject The subject line\n * @noshow\n */\n\tpublic static void sendStandardHeaders(PrintStream out, String senderName, String subject) {\n\t\t((MailStream) out).sendStandardHeaders(senderName, subject);\n\t}\n\n/* Static method: openHexByteOutputStream(printStream) */\n/**\n * Opens an output stream that allows the client to write data using pairs\n * of hex characters.  The return value is an <code>OutputStream</code> that\n * the client can use to which the client can send binary data, which is then\n * written in encoded form to the underlying  <code>PrintStream</code> object.\n *\n * @usage JTFTools.openHexByteOutputStream(printStream);\n * @param printStream The underlying <code>PrintStream</code> to which data is written\n * @return An <code>OutputStream</code> for writing binary data\n * @noshow\n */\n\tpublic static OutputStream openHexByteOutputStream(PrintStream printStream) {\n\t\treturn new HexByteOutputStream(printStream);\n\t}\n\n/* Static method: openBase64OutputStream(printStream) */\n/**\n * Opens an output stream that allows the client to write data using Base64 encoding,\n * which is the most common encoding for mail attachments.  The return value\n * is an <code>OutputStream</code> that the client can use to which the client\n * can send binary data, which is then written in encoded form to the underlying\n * <code>PrintStream</code> object.  Closing the stream automatically pads the\n * data to complete a Base64 unit.  To pad the data without closing the stream (as\n * one would need to do for a multi-attachment message, for example), call the\n * <code>padBase64OutputStream</code> method.\n *\n * @usage JTFTools.openBase64OutputStream(printStream);\n * @param printStream The underlying <code>PrintStream</code> to which data is written\n * @return An <code>OutputStream</code> for writing binary data\n * @noshow\n */\n\tpublic static OutputStream openBase64OutputStream(PrintStream printStream) {\n\t\treturn new Base64OutputStream(printStream);\n\t}\n\n/* Static method: padBase64OutputStream(out) */\n/**\n * Pads the data in the specified output stream without closing it.  This method\n * is automatically called when the stream is closed, but must be called explicitly\n * if you intend to write additional data to the underlying <code>PrintStream</code>.\n *\n * @usage JTFTools.padBase64OutputStream(out);\n * @param out The output stream returned by <code>openBase64OutputStream</code>\n * @noshow\n */\n\tpublic static void padBase64OutputStream(OutputStream out) {\n\t\t((Base64OutputStream) out).pad();\n\t}\n\n/* Static method: exportJar(jarFile, dir, libName, transformer) */\n/**\n * Exports a jar file consisting of all the <code>.class<code> files\n * in the directory, including those embedded inside jar files.\n * If the <code>transformer</code> method is not <code>null</code>, its\n * <code>transform</code> method is called to dump the bytes of the class\n * instead of simply copying them.\n *\n * @usage exportJar(jarFile, dir, libName, transformer);\n * @param jarFile A <code>File</code> object indicating the destination jar file\n * @param dir The directory being exported\n * @param imports A semicolon-separated list of <code>.jar</code> files to include (or <code>null</code>)\n * @param transformer An object to transform class data (or <code>null</code>)\n * @noshow\n */\n\tpublic static void exportJar(File jarFile, File dir, String imports, Object transformer) {\n\t\ttry {\n\t\t\tZipOutputStream out = new ZipOutputStream(new FileOutputStream(jarFile));\n\t\t\tdumpJarAndResources(\"\", dir, out, null, imports, null, false, transformer);\n\t\t\tout.close();\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/* Static method: executeExportAction(program, actionCommand) */\n/**\n * Checks to see if the action command corresponds to one of the export\n * actions.  If so, it executes the method and returns <code>true</code>;\n * if not, the method returns <code>false</code>.\n *\n * @usage boolean ok = JTFTools.executeExportAction(program, command);\n * @param program The program to which the action is applied\n * @param command The command name being executed\n * @return A flag indicating whether the action was recognized\n * @noshow\n */\n\tpublic static boolean executeExportAction(Program program, String command) {\n\t\tif (command.equals(\"Export Applet\") || command.equals(\"Submit Project\")) {\n\t\t\tnew Thread(new ThreadedMenuAction(program, command)).start();\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n/* Static method: getLocalHostName() */\n/**\n * Returns the canonical name of the local host.\n *\n * @usage String hostName = JTFTools.getLocalHostName();\n * @return The fully qualified name of the local host, or <code>null</code> if unavailable\n * @noshow\n */\n\tpublic static String getLocalHostName() {\n\t\ttry {\n\t\t\tInetAddress myHost = InetAddress.getLocalHost();\n\t\t\tClass<?> inetAddressClass = myHost.getClass();\n\t\t\tMethod getCanonicalHostName = inetAddressClass.getMethod(\"getCanonicalHostName\", new Class[0]);\n\t\t\treturn (String) getCanonicalHostName.invoke(myHost, new Object[0]);\n\t\t} catch (Exception ex) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n/* Static method: copyFile(oldFile, newFile) */\n/**\n * Copies a file from <code>oldFile</code> to <code>newFile</code>.\n *\n * @usage JTFTools.copyFile(oldFile, newFile);\n * @param oldFile A <code>File</code> object indicating the existing file\n * @param newFile A <code>File</code> object indicating the new file\n */\n\tpublic static void copyFile(File oldFile, File newFile) {\n\t\ttry {\n\t\t\tBufferedInputStream in = new BufferedInputStream(new FileInputStream(oldFile));\n\t\t\tBufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(newFile));\n\t\t\tcopyBytes(in, out, oldFile.length());\n\t\t\tin.close();\n\t\t\tout.close();\n\t\t\tPlatform.copyFileTypeAndCreator(oldFile, newFile);\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/* Static method: copyBytes(in, out, nBytes) */\n/**\n * Copies the specified number bytes from the input stream to the output stream.\n * @param in The input stream\n * @param out The output stream\n * @param nBytes The number of bytes to copy\n */\n\tpublic static void copyBytes(InputStream in, OutputStream out, long nBytes) throws IOException {\n\t\tbyte[] buffer = new byte[BUFFER_SIZE];\n\t\twhile (nBytes > 0) {\n\t\t\tint chunkSize = (int) Math.min(BUFFER_SIZE, nBytes);\n\t\t\tchunkSize = in.read(buffer, 0, chunkSize);\n\t\t\tif (chunkSize == -1) return;\n\t\t\tout.write(buffer, 0, chunkSize);\n\t\t\tnBytes -= chunkSize;\n\t\t}\n\t}\n\n/**********************************************************************/\n/* Package private methods                                            */\n/**********************************************************************/\n\n/* Package private method: getURLSuffix(path) */\n/**\n * Returns the last component of the URL path.\n *\n * @usage String suffix = getURLSuffix(path);\n * @param path The string version of the URL\n * @return The last component of the URL path\n */\n\tstatic String getURLSuffix(String path) {\n\t\treturn path.substring(path.lastIndexOf('/') + 1);\n\t}\n\n/* Package private method: exportApplet(program, progress) */\n/**\n * Exports an applet version of the specified program.  The directory used for the\n * applet is chosen by a popup dialog.\n *\n * @usage submitProject(program, progress);\n * @param program The program being submitted\n * @param progress An optional progress bar to keep track of the operation\n */\n\tstatic void exportApplet(Program program, JProgressBar progress) {\n\t\ttry {\n\t\t\tString className = program.getClass().getName();\n\t\t\tString programName = className.substring(className.lastIndexOf(\".\") + 1);\n\t\t\tFile dir = new File(System.getProperty(\"user.dir\"));\n\t\t\tFile home = new File(System.getProperty(\"user.home\"));\n\t\t\tExportAppletDialog dialog = new ExportAppletDialog(home, program);\n\t\t\tFile outDir = dialog.chooseOutputDirectory();\n\t\t\tif (outDir == null) return;\n\t\t\tif (outDir.exists()) {\n\t\t\t\tif (!outDir.isDirectory()) {\n\t\t\t\t\toutDir = new File(outDir.getParent());\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutDir.mkdir();\n\t\t\t}\n\t\t\tif (progress != null) {\n\t\t\t\tprogress.setMaximum(countResources(dir, RESOURCE_EXTENSIONS, \"acm.jar\") + 1);\n\t\t\t\tProgressBarDialog.popup(progress);\n\t\t\t}\n\t\t\tFile indexFile = new File(dir, \"index.html\");\n\t\t\tif (indexFile.canRead()) {\n\t\t\t\tJTFTools.copyFile(indexFile, new File(outDir, \"index.html\"));\n\t\t\t} else {\n\t\t\t\tdumpHTMLIndex(outDir, program, className, programName);\n\t\t\t}\n\t\t\tif (progress != null) {\n\t\t\t\tif (ProgressBarDialog.hasBeenCancelled(progress)) return;\n\t\t\t\tprogress.setValue(progress.getValue() + 1);\n\t\t\t}\n\t\t\tdumpJarAndResources(dir, outDir, programName + \".jar\", \"acm.jar\", progress, dialog.exportFiles(), null);\n\t\t\tif (progress != null) ProgressBarDialog.dismiss(progress);\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/**********************************************************************/\n/* Private methods                                                    */\n/**********************************************************************/\n\n/* Private static method: initFontFamilyTable() */\n/**\n * Initializes the list of font families.\n */\n\tprivate static void initFontFamilyTable() {\n\t\tfontFamilyTableInitialized = true;\n\t\tfor (int pass = 1; fontFamilyArray == null && pass <= 2; pass++) {\n\t\t\ttry {\n\t\t\t\tif (pass == 1) {\n\t\t\t\t\tClass<?> classGE = Class.forName(\"java.awt.GraphicsEnvironment\");\n\t\t\t\t\tMethod getLocalGraphicsEnvironment = classGE.getMethod(\"getLocalGraphicsEnvironment\", new Class[0]);\n\t\t\t\t\tMethod getAvailableFontFamilyNames = classGE.getMethod(\"getAvailableFontFamilyNames\", new Class[0]);\n\t\t\t\t\tObject ge = getLocalGraphicsEnvironment.invoke(null, new Object[0]);\n\t\t\t\t\tfontFamilyArray = (String[]) getAvailableFontFamilyNames.invoke(ge, new Object[0]);\n\t\t\t\t} else {\n\t\t\t\t\tClass<?> classToolkit = Class.forName(\"java.awt.Toolkit\");\n\t\t\t\t\tMethod getFontList = classToolkit.getMethod(\"getFontList\", new Class[0]);\n\t\t\t\t\tfontFamilyArray = (String[]) getFontList.invoke(Toolkit.getDefaultToolkit(), new Object[0]);\n\t\t\t\t}\n\t\t\t} catch (Exception ex) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t}\n\t\tfontFamilyTable = new HashMap<String,String>();\n\t\tfor (int i = 0; i < fontFamilyArray.length; i++) {\n\t\t\tfontFamilyTable.put(trimFamilyName(fontFamilyArray[i]), fontFamilyArray[i]);\n\t\t}\n\t\tfontFamilyTable.put(\"serif\", getFirstAvailableFontSubstitution(SERIF_SUBSTITUTIONS));\n\t\tfontFamilyTable.put(\"sansserif\", getFirstAvailableFontSubstitution(SANSSERIF_SUBSTITUTIONS));\n\t\tfontFamilyTable.put(\"monospaced\", getFirstAvailableFontSubstitution(MONOSPACED_SUBSTITUTIONS));\n\t}\n\n/* Private static method: getFirstAvailableFontSubstitution(fontOptions) */\n/**\n * Returns the first family in the array of font options that is\n * actually installed.\n */\n\tprivate static String getFirstAvailableFontSubstitution(String[] fontOptions) {\n\t\tfor (int i = 0; i < fontOptions.length; i++) {\n\t\t\tif (fontFamilyTable.get(trimFamilyName(fontOptions[i])) != null) return fontOptions[i];\n\t\t}\n\t\treturn null;\n\t}\n\n/* Private static method: trimFamilyName(family) */\n/**\n * Creates a canonical family name by converting the string to\n * lower case and removing spaces and hyphens.\n */\n\tprivate static String trimFamilyName(String family) {\n\t\tString str = \"\";\n\t\tfor (int i = 0; i < family.length(); i++) {\n\t\t\tchar ch = family.charAt(i);\n\t\t\tif (ch != ' ' && ch != '-') str += Character.toLowerCase(ch);\n\t\t}\n\t\treturn str;\n\t}\n\n/* Private static method: recursiveMatch(str, sx, pattern, px) */\n/**\n * This method implements the filename matcher in a way that requires no\n * string allocation.  The <code>sx</code> and <code>px</code> parameters\n * are the current index in their respective strings.\n */\n\tprivate static boolean recursiveMatch(String str, int sx, String pattern, int px) {\n\t\tint strlen = str.length();\n\t\tint patlen = pattern.length();\n\t\tif (px == patlen) return (sx == strlen);\n\t\tchar pch = pattern.charAt(px);\n\t\tif (pch == '*') {\n\t\t\tfor (int i = sx; i <= strlen; i++) {\n\t\t\t\tif (recursiveMatch(str, i, pattern, px + 1)) return true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t\tif (sx == strlen) return false;\n\t\tchar sch = str.charAt(sx);\n\t\tif (pch == '[') {\n\t\t\tboolean match = false;\n\t\t\tboolean invert = false;\n\t\t\tpx++;\n\t\t\tif (px == patlen) {\n\t\t\t\tthrow new ErrorException(\"matchFilenamePattern: missing ]\");\n\t\t\t}\n\t\t\tif (pattern.charAt(px) == '^') {\n\t\t\t\tpx++;\n\t\t\t\tinvert = true;\n\t\t\t}\n\t\t\twhile (px < patlen && pattern.charAt(px) != ']') {\n\t\t\t\tif (px + 2 < patlen && pattern.charAt(px + 1) == '-') {\n\t\t\t\t\tmatch |= (sch >= pattern.charAt(px) && sch <= pattern.charAt(px + 2));\n\t\t\t\t\tpx += 3;\n\t\t\t\t} else {\n\t\t\t\t\tmatch |= (sch == pattern.charAt(px));\n\t\t\t\t\tpx++;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (px == patlen) {\n\t\t\t\tthrow new ErrorException(\"matchFilenamePattern: missing ]\");\n\t\t\t}\n\t\t\tif (match == invert) return false;\n\t\t} else if (pch != '?') {\n\t\t\tif (pch != sch) return false;\n\t\t}\n\t\treturn recursiveMatch(str, sx + 1, pattern, px + 1);\n\t}\n\n/* Private static method: getShellCommandLine() */\n/**\n * Attempts to return the command line for Unix systems and MacOS X.\n * This code is adapted from a more general command-line scanner written\n * by Erik Forslin.\n *\n * @usage String line = getShellCommandLine();\n * @return The shell command line that invoked this process, or <code>null</code>\n *         if no command line is available\n */\n\tprivate static String getShellCommandLine() {\n\t\ttry {\n\t\t\tString option = (Platform.isMac()) ? \"command\" : \"args\";\n\t\t\tString[] argv = { \"bash\", \"-c\", \"ps -p $PPID -o \" + option };\n\t\t\tProcess p = Runtime.getRuntime().exec(argv);\n\t\t\tp.waitFor();\n\t\t\tif (p.getErrorStream().read() != -1) return null;\n\t\t\tBufferedReader rd = new BufferedReader(new InputStreamReader(p.getInputStream()));\n\t\t\trd.readLine(); /* Ignore header */\n\t\t\treturn rd.readLine();\n\t\t} catch (Exception ex) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n/* Private static method: readMainClassFromManifest(jarName) */\n/**\n * Attempts to read the name of the main class from the manifest of\n * the specified JAR file.\n *\n * @usage String className = readMainClassFromManifest(jarName);\n * @param jarName The name of the JAR file\n * @return The name of the main class, or <code>null</code>\n */\n\tprivate static String readMainClassFromManifest(String jarName) {\n\t\ttry {\n\t\t\tif (testDebugOption(\"main\")) {\n\t\t\t\tSystem.out.println(\"Read class from JAR manifest in \" + jarName);\n\t\t\t}\n\t\t\tZipFile jarFile = new ZipFile(jarName);\n\t\t\tZipEntry entry = jarFile.getEntry(\"META-INF/MANIFEST.MF\");\n\t\t\tif (entry == null) return null;\n\t\t\tBufferedReader rd = new BufferedReader(new InputStreamReader(jarFile.getInputStream(entry)));\n\t\t\tfor (String line = rd.readLine(); line != null; line = rd.readLine()) {\n\t\t\t\tif (line.startsWith(\"Main-Class:\")) {\n\t\t\t\t\tString mainClass = line.substring(\"Main-Class:\".length()).trim();\n\t\t\t\t\tif (testDebugOption(\"main\")) {\n\t\t\t\t\t\tSystem.out.println(\"Main class = \" + mainClass);\n\t\t\t\t\t}\n\t\t\t\t\treturn mainClass;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t} catch (IOException ex) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n/* Private static method: readMainClassFromCommandLine(line) */\n/**\n * Attempts to read the name of the main class from the specified command\n * line.  This strategy is a heuristic and will probably fail in many\n * cases, but it will probably work in enough contexts to be useful.\n * As noted in the documentation for the <code>main</code> method,\n * programs can always avoid the need for this method by supplying their\n * own version of <code>main</code>.\n *\n * @usage String className = readMainClassFromCommandLine(line);\n * @param line The command line\n * @return The name of the main class, or <code>null</code>\n */\n\tprivate static String readMainClassFromCommandLine(String line) {\n\t\tif (testDebugOption(\"main\")) {\n\t\t\tSystem.out.println(\"Read class from command line: \" + line);\n\t\t}\n\t\tif (line == null) return null;\n\t\tboolean jarFlag = false;\n\t\ttry {\n\t\t\tStreamTokenizer tokenizer = new StreamTokenizer(new StringReader(line));\n\t\t\ttokenizer.resetSyntax();\n\t\t\ttokenizer.wordChars(33, 255);\n\t\t\ttokenizer.quoteChar('\"');\n\t\t\ttokenizer.quoteChar('\\'');\n\t\t\ttokenizer.whitespaceChars(' ', ' ');\n\t\t\ttokenizer.whitespaceChars('\\t', '\\t');\n\t\t\tboolean cmdRead = false;\n\t\t\twhile (true) {\n\t\t\t\tint tt = tokenizer.nextToken();\n\t\t\t\tString token = tokenizer.sval;\n\t\t\t\tswitch (tt) {\n\t\t\t\t  case StreamTokenizer.TT_EOF:\n\t\t\t\t\treturn null;\n\t\t\t\t  case StreamTokenizer.TT_WORD: case '\"': case '\\'':\n\t\t\t\t\tbreak;\n\t\t\t\t  default:\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tif (cmdRead) {\n\t\t\t\t\tif (token.startsWith(\"-\")) {\n\t\t\t\t\t\tif (token.equals(\"-jar\")) {\n\t\t\t\t\t\t\tjarFlag = true;\n\t\t\t\t\t\t} else if (token.equals(\"-cp\") || token.equals(\"-classpath\")) {\n\t\t\t\t\t\t\ttokenizer.nextToken();\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (jarFlag) return readMainClassFromManifest(token);\n\t\t\t\t\t\tif (testDebugOption(\"main\")) {\n\t\t\t\t\t\t\tSystem.out.println(\"Main class = \" + token);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn token;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcmdRead = true;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (IOException ex) {\n\t\t\t/* Empty */\n\t\t}\n\t\treturn null;\n\t}\n\n/* Private static method: readMainClassFromClassPath() */\n/**\n * Attempts to read the name of the main class by searching through\n * the class path to find any classes that are already loaded and that\n * extend Program.\n *\n * @usage String className = readMainClassFromClassPath();\n * @return The name of the main class, or <code>null</code>\n */\n\tprivate static String readMainClassFromClassPath() {\n\t\tString result = null;\n\t\tString classpath = System.getProperty(\"java.class.path\");\n\t\tif (classpath == null) classpath = System.getProperty(\"user.dir\");\n\t\tif (classpath == null) return null;\n\t\tif (testDebugOption(\"main\")) {\n\t\t\tSystem.out.println(\"Read class from class path: \" + classpath);\n\t\t}\n\t\tStringTokenizer tokenizer = new StringTokenizer(classpath, \":;\");\n\t\twhile (tokenizer.hasMoreTokens()) {\n\t\t\tString token = tokenizer.nextToken();\n\t\t\tFile file = new File(token);\n\t\t\tString[] candidates = null;\n\t\t\tif (file.isDirectory()) {\n\t\t\t\tcandidates = file.list();\n\t\t\t} else if (token.endsWith(\".jar\") && !nameAppears(token, SKIP_JARS)) {\n\t\t\t\ttry {\n\t\t\t\t\tZipFile zf = new ZipFile(file);\n\t\t\t\t\tArrayList<String> list = new ArrayList<String>();\n\t\t\t\t\tEnumeration<?> entries = zf.entries();\n\t\t\t\t\twhile (entries.hasMoreElements()) {\n\t\t\t\t\t\tlist.add(((ZipEntry) entries.nextElement()).getName());\n\t\t\t\t\t}\n\t\t\t\t\tcandidates = new String[list.size()];\n\t\t\t\t\tfor (int i = 0; i < candidates.length; i++) {\n\t\t\t\t\t\tcandidates[i] = list.get(i);\n\t\t\t\t\t}\n\t\t\t\t} catch (IOException ex) {\n\t\t\t\t\tcandidates = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (candidates != null) {\n\t\t\t\tfor (int i = 0; i < candidates.length; i++) {\n\t\t\t\t\tString fileName = candidates[i];\n\t\t\t\t\tif (fileName.endsWith(\".class\")) {\n\t\t\t\t\t\tString className = fileName.substring(0, fileName.lastIndexOf(\".class\"));\n\t\t\t\t\t\tif (className.indexOf(\"/\") == -1 && checkIfLoaded(className)) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tClass<?> c = Class.forName(className);\n\t\t\t\t\t\t\t\tClass[] types = { candidates.getClass() };\n\t\t\t\t\t\t\t\tif (c.getMethod(\"main\", types) != null) {\n\t\t\t\t\t\t\t\t\tif (testDebugOption(\"main\")) {\n\t\t\t\t\t\t\t\t\t\tSystem.out.println(\"Main class = \" + className);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (result != null) return null;\n\t\t\t\t\t\t\t\t\tresult = className;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} catch (Exception ex) {\n\t\t\t\t\t\t\t\t/* Empty */\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n/* Protected static method: submitProject(program, progress) */\n/**\n * Submits this project as a mail message.\n *\n * @usage submitProject(program, progress);\n * @param program The program being submitted\n * @param progress An optional progress bar to keep track of the operation\n */\n\tprotected static void submitProject(Program program, JProgressBar progress) {\n\t\tSubmitOptions options = getOptions(program);\n\t\tif (options.popup() && options.isComplete()) {\n\t\t\tString className = program.getClass().getName();\n\t\t\tString programName = className.substring(className.lastIndexOf(\".\") + 1);\n\t\t\tString boundary = \"==\" + System.currentTimeMillis() + \"==\";\n\t\t\tString smtpServer = options.getSMTPServer();\n\t\t\tString authorName = options.getAuthorName();\n\t\t\tString authorEMail = options.getAuthorEMail();\n\t\t\tString instructor = options.getSubmissionEMail();\n\t\t\tString authorID = authorEMail;\n\t\t\tint atIndex = authorEMail.indexOf(\"@\");\n\t\t\tif (atIndex != -1) authorID = authorID.substring(0, atIndex);\n\t\t\tString zipName = programName + \"_\" + authorID;\n\t\t\tFile dir = new File(System.getProperty(\"user.dir\"));\n\t\t\tif (progress != null) {\n\t\t\t\tprogress.setMaximum(countResources(dir, SUBMIT_EXTENSIONS, null));\n\t\t\t\tProgressBarDialog.popup(progress);\n\t\t\t}\n\t\t\tPrintStream out = openMailStream(smtpServer, authorEMail, instructor);\n\t\t\tsendStandardHeaders(out, authorName, programName);\n\t\t\tout.println(\"Mime-Version: 1.0\");\n\t\t\tout.println(\"Content-Type: multipart/mixed; boundary=\" + '\"' + boundary + '\"');\n\t\t\tout.println();\n\t\t\tout.println(\"--\" + boundary);\n\t\t\tout.println(\"Content-Transfer-Encoding: base64\");\n\t\t\tout.println(\"Content-Type: application/zip; name=\" + zipName + \".zip\");\n\t\t\tout.println(\"Content-Disposition: attachment; filename=\" + zipName + \".zip\");\n\t\t\tsubmitDirectory(out, zipName, progress);\n\t\t\tif (ProgressBarDialog.hasBeenCancelled(progress)) cancelMail(out);\n\t\t\tout.println(\"--\" + boundary + \"--\");\n\t\t\tout.close();\n\t\t\tif (progress != null) ProgressBarDialog.dismiss(progress);\n\t\t}\n\t}\n\n/* Private static method: dumpHTMLIndex(outDir, program, className, programName) */\n/**\n * Dumps a minimal <code>index.html</code> file.\n */\n\tprivate static void dumpHTMLIndex(File outDir, Program program, String className, String programName) throws IOException {\n\t\tFile outFile = new File(outDir, \"index.html\");\n\t\tPrintWriter wr = new PrintWriter(new FileWriter(outFile));\n\t\tDimension size = program.getSize();\n\t\twr.println(\"<html>\");\n\t\twr.println(\"<head>\");\n\t\twr.println(\"<meta name=\\\"generator\\\" content=\\\"ACM Java Libraries V1.1\\\">\");\n\t\twr.println(\"<title>\" + programName + \"</title>\");\n\t\twr.println(\"</head>\");\n\t\twr.println(\"<body>\");\n\t\twr.println(\"<center>\");\n\t\twr.println(\"<table border=2 cellpadding=0 cellspacing=0>\");\n\t\twr.println(\"<tr><td>\");\n\t\twr.println(\"<applet archive=\\\"\" + programName + \".jar\\\"\");\n\t\twr.println(\"        code=\\\"\" + className.replace('.', '/') + \".class\\\"\");\n\t\twr.println(\"        width=\" + size.width + \" height=\" + size.height + \">\");\n\t\twr.println(\"</applet>\");\n\t\twr.println(\"</td></tr>\");\n\t\twr.println(\"</table>\");\n\t\twr.println(\"</center>\");\n\t\twr.println(\"</body>\");\n\t\twr.println(\"</html>\");\n\t\twr.close();\n\t}\n\n/* Private static method: dumpJarAndResources(dir, outDir, filename, imports, progress, options, exportFiles, transformer) */\n/**\n * Dumps all content enclosed in the directory <code>dir</code> into a jar file in\n * <code>outDir</code>.  This code creates two copies of the resources: one in the\n * jar file and a second copy in the directory.  Browsers that can read from the\n * jar file see increased performance; older browsers take the resources from the\n * code base.\n */\n\tprivate static void dumpJarAndResources(File dir, File outDir, String filename, String imports,\n\t                                        JProgressBar progress, boolean exportFiles,\n\t                                        Object transformer) throws IOException {\n\t\tFile outFile = new File(outDir, filename);\n\t\tZipOutputStream out = new ZipOutputStream(new FileOutputStream(outFile));\n\t\tdumpJarAndResources(\"\", dir, out, outDir, imports, progress, exportFiles, transformer);\n\t\tout.close();\n\t}\n\n/* Private static method: dumpJarAndResources(path, file, out, outDir, imports, progress, exportFiles, transformer) */\n/**\n * Dumps the directory rooted at <code>dir</code> to the output stream.\n * The following tags describe the parameters:\n *\n * @param path The current path (/ separated)\n * @param dir The directory to be written\n * @param out The <code>ZipOutputStream</code> to which the data is written\n * @param outDir The output directory\n * @param imports A semicolon-separated list of <code>.jar</code> files to include (or <code>null</code>)\n * @param progress A <code>JProgressBar</code> to keep track of the progress\n * @param exportFiles A flag indicating whether files are to be exported\n * @param transformer An object to transform class data (or <code>null</code>)\n */\n\tprivate static void dumpJarAndResources(String path, File dir, ZipOutputStream out,\n\t                                        File outDir, String imports, JProgressBar progress,\n\t                                        boolean exportFiles, Object transformer) throws IOException {\n\t\tif (ProgressBarDialog.hasBeenCancelled(progress)) return;\n\t\tdumpTree(path, dir, out, outDir, progress, 0, exportFiles, transformer);\n\t\tStringTokenizer tokenizer = new StringTokenizer(imports, \";\");\n\t\twhile (tokenizer.hasMoreTokens()) {\n\t\t\tString jarName = tokenizer.nextToken().trim();\n\t\t\tFile libFile = getLibrary(jarName);\n\t\t\tif (libFile != null) {\n\t\t\t\tZipFile jarFile = new ZipFile(libFile);\n\t\t\t\tEnumeration<? extends ZipEntry> e = jarFile.entries();\n\t\t\t\twhile (e.hasMoreElements()) {\n\t\t\t\t\tZipEntry entry = e.nextElement();\n\t\t\t\t\tString entryName = entry.getName();\n\t\t\t\t\tif (!nameAppears(entryName, SKIP_FILES)) {\n\t\t\t\t\t\tInputStream in = new BufferedInputStream(jarFile.getInputStream(entry));\n\t\t\t\t\t\tif (transformer != null && entryName.endsWith(\".class\")) {\n\t\t\t\t\t\t\tentry = new ZipEntry(entryName);\n\t\t\t\t\t\t\tout.putNextEntry(entry);\n\t\t\t\t\t\t\ttransformClass(transformer, in, out);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tout.putNextEntry(entry);\n\t\t\t\t\t\t\tJTFTools.copyBytes(in, out, entry.getSize());\n\t\t\t\t\t\t}\n\t\t\t\t\t\twhile (true) {\n\t\t\t\t\t\t\tint ch = in.read();\n\t\t\t\t\t\t\tif (ch == -1) break;\n\t\t\t\t\t\t\tout.write(ch);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tout.closeEntry();\n\t\t\t\t\t\tin.close();\n\t\t\t\t\t}\n\t\t\t\t\tif (progress != null) progress.setValue(progress.getValue() + 1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n/* Private static method: dumpTree(path, file, out, outDir, progress, options, exportFiles, transformer) */\n/**\n * Dumps the file or subdirectory tree rooted at <code>file</code> to the output stream.\n */\n\tprivate static void dumpTree(String path, File file, ZipOutputStream out, File outDir,\n\t                             JProgressBar progress, int level, boolean exportFiles,\n\t                             Object transformer) throws IOException {\n\t\tif (ProgressBarDialog.hasBeenCancelled(progress)) return;\n\t\tString filename = file.getName();\n\t\tif (file.isDirectory()) {\n\t\t\tString[] files = file.list();\n\t\t\tif (level > 0) path += filename + \"/\";\n\t\t\tfor (int i = 0; i < files.length; i++) {\n\t\t\t\tdumpTree(path, new File(file, files[i]), out, outDir, progress, level + 1, exportFiles, transformer);\n\t\t\t}\n\t\t} else if (isResourceComponent(filename)) {\n\t\t\tString entryName = path + filename;\n\t\t\tif (entryName.startsWith(\"Java Classes/\")) {\n\t\t\t\tentryName = entryName.substring(entryName.indexOf('/') + 1);\n\t\t\t}\n\t\t\tZipEntry entry = new ZipEntry(entryName);\n\t\t\tInputStream in = new BufferedInputStream(new FileInputStream(file));\n\t\t\tout.putNextEntry(entry);\n\t\t\tif (transformer != null && filename.endsWith(\".class\")) {\n\t\t\t\ttransformClass(transformer, in, out);\n\t\t\t} else {\n\t\t\t\tJTFTools.copyBytes(in, out, file.length());\n\t\t\t}\n\t\t\tin.close();\n\t\t\tif (exportFiles && outDir != null && !filename.endsWith(\".class\")) {\n\t\t\t\tin = new BufferedInputStream(new FileInputStream(file));\n\t\t\t\toutDir = new File(outDir, path);\n\t\t\t\tFile outFile = new File(outDir, filename);\n\t\t\t\toutDir.mkdirs();\n\t\t\t\tBufferedOutputStream backup = new BufferedOutputStream(new FileOutputStream(outFile));\n\t\t\t\tJTFTools.copyBytes(in, backup, file.length());\n\t\t\t\tin.close();\n\t\t\t\tbackup.close();\n\t\t\t}\n\t\t\tif (progress != null) progress.setValue(progress.getValue() + 1);\n\t\t}\n\t}\n\n\tprivate static void transformClass(Object transformer, InputStream in, OutputStream out) {\n\t\tMethod transform = null;\n\t\ttry {\n\t\t\tClass[] types = { Class.forName(\"java.io.inputStream\"),  Class.forName(\"java.io.outputStream\") };\n\t\t\ttransform = transformer.getClass().getMethod(\"transform\", types);\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(\"exportJar: Illegal class transformer object\");\n\t\t}\n\t\ttry {\n\t\t\tObject[] args = { in, out };\n\t\t\ttransform.invoke(transformer, args);\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/* Private static method: countResources(file, extensions, libName) */\n/**\n * Counts the number of files in the directory tree rooted at file whose extensions appear\n * in the specified list.  If <code>libName</code> is non-null, the number of components in\n * the corresponding jar file are also included.\n */\n\tprivate static int countResources(File file, String[] extensions, String libName) {\n\t\tString filename = file.getName();\n\t\tint count = 0;\n\t\tif (file.isDirectory()) {\n\t\t\tString[] files = file.list();\n\t\t\tfor (int i = 0; i < files.length; i++) {\n\t\t\t\tcount += countResources(new File(file, files[i]), extensions, null);\n\t\t\t}\n\t\t} else {\n\t\t\tfor (int i = 0; i < extensions.length && count == 0; i++) {\n\t\t\t\tif (filename.endsWith(extensions[i])) count = 1;\n\t\t\t}\n\t\t}\n\t\tif (libName != null) {\n\t\t\tFile libJar = getLibrary(libName);\n\t\t\tif (libJar != null) {\n\t\t\t\ttry {\n\t\t\t\t\tZipFile jarFile = new ZipFile(libJar);\n\t\t\t\t\tfor (Enumeration<?> e = jarFile.entries(); e.hasMoreElements(); e.nextElement()) {\n\t\t\t\t\t\tcount++;\n\t\t\t\t\t}\n\t\t\t\t} catch (IOException ex) {\n\t\t\t\t\t/* Empty */\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn count;\n\t}\n\n/* Private static method: getLibrary(libName) */\n/**\n * Returns a <code>File</code> object for the named library on the\n * class path, or <code>null</code> if no such library is available.\n */\n\tprivate static File getLibrary(String libName) {\n\t\tif (libName == null) return null;\n\t\tFile library = new File(libName);\n\t\tif (libName.startsWith(\".\") || library.isAbsolute()) return library;\n\t\tString classPath = System.getProperty(\"java.class.path\");\n\t\tif (classPath == null) classPath = \"\";\n\t\tStringTokenizer tokenizer = new StringTokenizer(classPath, \":\");\n\t\twhile (tokenizer.hasMoreTokens()) {\n\t\t\tString token = tokenizer.nextToken();\n\t\t\tif (token.equals(libName) || token.endsWith(\"/\" + libName)) {\n\t\t\t\treturn new File(token);\n\t\t\t}\n\t\t}\n\t\tFile dir = new File(System.getProperty(\"user.dir\"));\n\t\tlibrary = new File(dir, libName);\n\t\treturn (library.exists()) ? library : null;\n\t}\n\n/* Private static method: isResourceComponent(filename) */\n/**\n * Checks to see whether the file should be exported by its extension.\n */\n\tprivate static boolean isResourceComponent(String filename) {\n\t\tfor (int i = 0; i < RESOURCE_EXTENSIONS.length; i++) {\n\t\t\tif (filename.endsWith(RESOURCE_EXTENSIONS[i])) return true;\n\t\t}\n\t\treturn false;\n\t}\n\n/* Private static method: submitDirectory(out, zipName, progress) */\n/**\n * Submits a ZIP file containing all the relevant files in the current directory.\n */\n\tprivate static void submitDirectory(PrintStream out, String zipName, JProgressBar progress) {\n\t\ttry {\n\t\t\tOutputStream base64Stream = openBase64OutputStream(out);\n\t\t\tZipOutputStream zip = new ZipOutputStream(new BufferedOutputStream(base64Stream));\n\t\t\tZipOutputStream dummy = new ZipOutputStream(new NullOutputStream());\n\t\t\tFile dir = new File(System.getProperty(\"user.dir\"));\n\t\t\tdumpZip(zipName + \"/\", dir, zip, dummy, true, progress);\n\t\t\tdummy.close();\n\t\t\tzip.finish();\n\t\t\tzip.flush();\n\t\t\tpadBase64OutputStream(base64Stream);\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/* Private static method: dumpZip(path, file, out, dummy, topLevel, progress) */\n/**\n * Dumps the file or subdirectory rooted at <code>file</code> to the output stream.\n * The following tags describe the parameters:\n *\n * @param path The current path (/ separated)\n * @param file The file or subdirectory to be written\n * @param out The <code>ZipOutputStream</code> to which the data is written\n * @param dummy A <code>ZipOutputStream</code> attached to a null stream used to calculate checksums and sizes\n * @param topLevel This flag is true at the top level only\n */\n\tprivate static void dumpZip(String path, File file, ZipOutputStream out, ZipOutputStream dummy,\n\t                            boolean topLevel, JProgressBar progress) throws IOException {\n\t\tif (ProgressBarDialog.hasBeenCancelled(progress)) return;\n\t\tString filename = file.getName();\n\t\tif (file.isDirectory()) {\n\t\t\tString[] files = file.list();\n\t\t\tif (!topLevel) path += filename + \"/\";\n\t\t\tfor (int i = 0; i < files.length; i++) {\n\t\t\t\tdumpZip(path, new File(file, files[i]), out, dummy, false, progress);\n\t\t\t}\n\t\t} else if (isSubmitComponent(filename)) {\n\t\t\tString entryName = path + filename;\n\t\t\tZipEntry entry = new ZipEntry(entryName);\n\t\t\tInputStream in = new BufferedInputStream(new FileInputStream(file));\n\t\t\tif (dummy != null) {\n\t\t\t\tdummy.putNextEntry(entry);\n\t\t\t\tJTFTools.copyBytes(in, dummy, file.length());\n\t\t\t\tdummy.closeEntry();\n\t\t\t\tin.close();\n\t\t\t\tin = new BufferedInputStream(new FileInputStream(file));\n\t\t\t}\n\t\t\tout.putNextEntry(entry);\n\t\t\tJTFTools.copyBytes(in, out, file.length());\n\t\t\tout.closeEntry();\n\t\t\tin.close();\n\t\t\tif (progress != null) progress.setValue(progress.getValue() + 1);\n\t\t}\n\t}\n\n/* Private static method: isSubmitComponent(filename) */\n/**\n * Checks to see whether the file should be exported by its extension.\n */\n\tprivate static boolean isSubmitComponent(String filename) {\n\t\tfor (int i = 0; i < SUBMIT_EXTENSIONS.length; i++) {\n\t\t\tif (filename.endsWith(SUBMIT_EXTENSIONS[i])) return true;\n\t\t}\n\t\treturn false;\n\t}\n\n/* Private static method: getOptions(program) */\n/**\n * Gets the <code>SubmitOptions</code> for the specified program,\n * creating it if necessary.\n */\n\tprivate static SubmitOptions getOptions(Program program) {\n\t\tSubmitOptions options = optionsTable.get(program);\n\t\tif (options == null) {\n\t\t\toptions = new SubmitOptions(program);\n\t\t\toptionsTable.put(program, options);\n\t\t}\n\t\treturn options;\n\t}\n\n/* Private static method: nameAppears(name, array) */\n/**\n * Returns <code>true</code> if the name appears in the array.\n */\n\tprivate static boolean nameAppears(String name, String[] array) {\n\t\tfor (int i = 0; i < array.length; i++) {\n\t\t\tif (array[i].equals(name)) return true;\n\t\t}\n\t\treturn false;\n\t}\n\n/**********************************************************************/\n/* Private constants                                                  */\n/**********************************************************************/\n\n/* List of files to skip in copying a jar */\n\tprivate static final String[] SKIP_FILES = {\n\t\t\".DS_Store\",\n\t\t\"FINDER.DAT\",\n\t\t\"RESOURCE.FRK\"\n\t};\n\n/* List of extensions to export to the jar file */\n\tprivate static final String[] RESOURCE_EXTENSIONS = {\n\t\t\".txt\",\n\t\t\".dat\",\n\t\t\".gif\",\n\t\t\".jpg\",\n\t\t\".jpeg\",\n\t\t\".png\",\n\t\t\".au\",\n\t\t\".wav\",\n\t\t\".class\",\n\t};\n\n/* List of extensions to export to the submission file */\n\tprivate static final String[] SUBMIT_EXTENSIONS = {\n\t\t\".java\",\n\t\t\".html\",\n\t\t\".txt\",\n\t\t\".dat\",\n\t\t\".gif\",\n\t\t\".jpg\",\n\t\t\".jpeg\",\n\t\t\".png\",\n\t\t\".au\",\n\t\t\".wav\",\n\t};\n\n/* Class variables */\n\tprivate static HashMap<Component,SubmitOptions> optionsTable = new HashMap<Component,SubmitOptions>();\n\n/* Size of the copy buffer */\n\tprivate static final int BUFFER_SIZE = 4096;\n\n/* Font substitutions */\n\tprivate static final String[] SERIF_SUBSTITUTIONS = {\n\t\t\"Serif\", \"Times\", \"TimesRoman\", \"Times-Roman\"\n\t};\n\n\tprivate static final String[] SANSSERIF_SUBSTITUTIONS = {\n\t\t\"SansSerif\", \"Helvetica\", \"Arial\"\n\t};\n\n\tprivate static final String[] MONOSPACED_SUBSTITUTIONS = {\n\t\t\"Monospaced\", \"Courier\", \"Monaco\"\n\t};\n\n/* List of jar files to skip */\n\tprivate static final String[] SKIP_JARS = {\n\t\t\"acm.jar\",\n\t\t\"acm11.jar\",\n\t\t\"swingall.jar\",\n\t\t\"patchJTF.jar\"\n\t};\n\n/* Static variables */\n\tprivate static boolean fontFamilyTableInitialized = false;\n\tprivate static String[] fontFamilyArray = null;\n\tprivate static HashMap<String,String> fontFamilyTable = null;\n\tprivate static HashMap<Thread,Applet> appletTable = new HashMap<Thread,Applet>();\n\tprivate static Applet mostRecentApplet = null;\n\tprivate static SecurityManager managerThatFails = null;\n\tprivate static String debugOptions = null;\n\n}\n\n/* Package class: EmptyContainer */\n/**\n * This class represents a simple lightweight container.  The only difference\n * between EmptyContainer and Container is that Container is abstract and\n * can therefore not be instantiated.\n */\nclass EmptyContainer extends Container {\n\n/* Override method: update(g) */\n/**\n * Overrides the <code>update</code> method so that the container is painted\n * but not cleared.\n *\n * @param g The <code>Graphics</code> context passed from the component\n */\n\tpublic void update(Graphics g) {\n\t\tpaint(g);\n\t}\n}\n\n/* Package class: SecurityManagerThatFails */\n/**\n * This class is an instance of the <code>SecurityManager</code> class\n * that invariably fails if it tries to read anything, even if executed\n * inside a <code>doPrivileged</code> block.\n */\nclass SecurityManagerThatFails extends SecurityManager {\n\n\tpublic void checkRead(String file) {\n\t\tthrow new SecurityException(\"always fail\");\n\t}\n\n\tpublic void checkPermission(Permission perm) {\n\t\t/* Empty */\n\t}\n\n}\n\n/* Package class: DOSCommandLine */\n/**\n * This class contains code to return the command line from a DOS prompt\n * on a Windows system and was originally designed by Erik Forslin at\n * Stanford.  The code requires the inclusion of a native library called\n * GCMDLN.DLL; if this library is not present, the code for getCommandLine\n * creates one in the current working directory.\n */\nclass DOSCommandLine {\n\n/* Method: getCommandLine() */\n/**\n * Returns the command line that invoked this program.\n */\n\tpublic static String getCommandLine() {\n\t\ttry {\n\t\t\tSystem.loadLibrary(\"GCMDLN.DLL\");\n\t\t} catch (UnsatisfiedLinkError err) {\n\t\t\ttry {\n\t\t\t\tString cwd = System.getProperty(\"user.home\");\n\t\t\t\tInputStream in = MediaTools.getHexInputStream(hexjar);\n\t\t\t\tZipInputStream zin = new ZipInputStream(in);\n\t\t\t\tzin.getNextEntry();\n\t\t\t\tString fullPath = cwd + \"\\\\GCMDLN.DLL\";\n\t\t\t\tFileOutputStream out = new FileOutputStream(fullPath);\n\t\t\t\tfor (int i = 0; i < UNCOMPRESSED_SIZE; i++) {\n\t\t\t\t\tout.write(zin.read());\n\t\t\t\t}\n\t\t\t\tout.close();\n\t\t\t\tSystem.load(fullPath);\n\t\t\t} catch (Exception ex) {\n\t\t\t\tthrow new ErrorException(ex);\n\t\t\t}\n\t\t}\n\t\treturn getLine();\n\t}\n\n/* Native method: getLine() */\n/**\n * This method header provides the link to the GCMDLN.DLL file.\n */\n\tprivate static native String getLine();\n\n/**\n * This hex string corresponds to the compressed contents of the GCMDLN.DLL\n * file.  It would be easier to include the DLL in the acm.jar file, but\n * it is safer to make sure all data is part of the code.  Some adopters\n * may not know how to work with jar files that contain data.\n */\n\tprivate static final String[] hexjar = {\n\t\t\"504B0304140008000800079966360000000000000000000000000A0000004743\",\n\t\t\"4D444C4E2E444C4CEDBD0B605355B6307CD2A4252D2909D042C50201AAE28098\",\n\t\t\"366993347DA4D0948A14022929155AA83498D6D2D6F49C429562EB69B5E9218A\",\n\t\t\"8E33E39DAB73EDA05E67F48EDC511966E46A4AB1056490878F2A8C96B1EAC120\",\n\t\t\"14A9A540ECF9D6DAE7A40F1F33DEFFCE7FFFC770CACA7EADBDF6DA7BAFBDF65A\",\n\t\t\"FBEC84BC3B7650728AA214008240517B28F1B1527FFFE10126CCFCD304EA95C8\",\n\t\t\"3FCFDA235BFAE759F9EEB21A6DB5A7EA2E4FC926ED8692CACA2A5A7BA74BEB61\",\n\t\t\"2AB56595DAECE50EEDA6AA52D782E8E8A80489C685E7A3C25F3D58EA0C414ABB\",\n\t\t\"D9B99BC45DCEAF20DCF5E6DDCE36125A9C1748A820E5BBDE34395F2161060957\",\n\t\t\"966D7063FD1FE2D56EA3A8A53205F5ABC77F9E15CAEBA126CC1A2F1B1745D911\",\n\t\t\"41CC6B9F081F1A80F524A921718D383E14351252BB243C78C2245431AD19CE27\",\n\t\t\"646A296A1384A67B286AEEDF1ACCA70127E26F8F373E47AB292A7774C67A711E\",\n\t\t\"7EE85940BBB6D0103E9E2731641FE13BF46881CA024F69095D42517F9E22D2C4\",\n\t\t\"4C690C861F2BFC5B20A25169384E0D12AD86EFE0F917785C15551BA05D95D837\",\n\t\t\"82B7E33B780BFF06EBD79E6BCFB5E7DA73EDB9F65C7BAE3DD79E6BCFB5E7DA73\",\n\t\t\"EDF9073EABB8B3422C387A1A3B97A7E427404ED13E257578F881F215DEBC2067\",\n\t\t\"5302427005B72AC885093B9E049797FBB4689F02EB7336153B2873AA9B7BA0F6\",\n\t\t\"9EC7E1839F02DE1ED7EFEC8AC09410AB04FACD7E75934106D9CB34DEE8382FA5\",\n\t\t\"E172143B1330742ABDB1733152AB6AFC4CB89FA2D8CB61DEE478C8A1558D47D0\",\n\t\t\"B91453ED3D4AF9BE72D94E2DC4F9D3C06AB3BF50DD848DF2EF86638A89E2AF57\",\n\t\t\"53D4993F63D68C09D832F66CA7E151A870161CD19D0AACDA310E91B72EE08D2A\",\n\t\t\"12D1F2572349646A39540B237499F1423805C8671E435A8F40397F879CA202BF\",\n\t\t\"8256E69B49D1B632211A4373783E7C32E1FC2C40E04B11F5568CED0006024E76\",\n\t\t\"308CC9766F072AE532FE6170F0B9BEE681C2427ABE53483634501A21B6D48B83\",\n\t\t\"E3A463F858A85628C42A8067769942F04604A6F25F40CF0AF5FE80861D94334A\",\n\t\t\"60F03505C9B0FA5CC1E2A27D2AAA5CE5E6A1027F170C39647B6DBD1CA3D20B96\",\n\t\t\"4B8CCA9C8EFCA99B5E86D6BDF5414B1F1DCE0E8531896D2618104B17AD12188D\",\n\t\t\"536094C251A865AEEF553735E3748999FCEC2141807CC0F370451A07C9BB02C3\",\n\t\t\"0B79EC908C9960E962A21C05983BF88D00ED21713973B388F82964C150C9BDF5\",\n\t\t\"48989E1C6A32CA31DC209B1714385B6F601A673BCB29B948FB0ABE01C8171676\",\n\t\t\"702E1E0BF57EFECF90017D6C53413F40C6E868A039814DD7405206239E3909D8\",\n\t\t\"A51314FC1BD079B740644D07830A34DC8A121CDC182279F414773F8AB810AB11\",\n\t\t\"D311584B384A3E63559077B85CC9D74F86D63B20F2C6248C38B9BEC0782E02B0\",\n\t\t\"C384A36CA7C24227283DE78B3BDA748F121AE3441A85CE823FAAA0CD37E2E043\",\n\t\t\"EFB7BCCD5DA8990A6C6672139A0F42D56358F592E74B141C77E64C98A91B6328\",\n\t\t\"EA75106B0DD7F986B20187A5B0463DBAA14B9E0B7AFFBA6260C5AD815EF0DB41\",\n\t\t\"9280ADBF205B7A0166523F90634E5E8D52A7C1D18C8D173B1707813719A5B1D5\",\n\t\t\"A6F9B51D65B35EC518CDE97381637A665B02042C0FAB0EE7221C333D511C05B3\",\n\t\t\"F2A9703470DAAD055EF6C4C3072F1304A1D03D17D30998BE00A2508853C2C7C1\",\n\t\t\"189BEB35CC2C2F691FA7FA3128D40BC852BD8656029F0D1371F8F889C0754739\",\n\t\t\"883D8C938AD7014976BFAAA35C0659143F4B4A0AB15A601AF4481B2E067650A0\",\n\t\t\"274047DC38DDD164799CF90BAA92EC044597357F3D647459634089501D2047B1\",\n\t\t\"73A1AAB88AB86E21763DAA10585CCC6DA1E536533EBCDC6EF9D672A3E3BB7244\",\n\t\t\"7A3984DE9855A72CD7F05E10E04287109BB01EE7A9784D47B9C6ADC5C9104069\",\n\t\t\"708C125798BA49850A2D270186709C9DCF04D551C8E5CC17538962CA20A6E688\",\n\t\t\"A93431152BA6B2C5D43831952BA62ECB482A3F1DB9C30C1E33CAA3F98F60200A\",\n\t\t\"61F2B99CF5E2B29C2C2819B525FC804FC4F3231E992416BBAFE2FF032B74D982\",\n\t\t\"D83F2EA7D46BEB814A7982D2BC653E1DCEE5CE1722CD5B0C1833604C87311DC6\",\n\t\t\"AC18B30A915CEE52C1FB0A54B684071F803626A53F8FC178B38981E63C1343CD\",\n\t\t\"6901C5C96761F37C3C8C0ECCA65E8021029E195CD01D1857F165629C4C2B7B59\",\n\t\t\"A0E7E0ACC2AA18B7429C3B3BFF2F2049E5D4E889EAE07F46F43C88D9499810BD\",\n\t\t\"BFC359E02E1D5ED9DC60B340DFCD25E3AA76AF86EC02E13DF7520C77AE45E97C\",\n\t\t\"CF6D2589F562C24412A524C1A66326B513458D99DB66C07D0273DA7418439CB6\",\n\t\t\"F910EB0A4742F7C7401E62BA6F8EC5B6D7127524EC4446E92CBD40046E7101FF\",\n\t\t\"3B6A58E0E67D5BE0A64902E7DD16335AD8B8AEC0385E0862DF70C5ABDC5B50C8\",\n\t\t\"7E194584AC79805ECDA62B76501A39632D57F02727E098BB8230DC67A6A034D8\",\n\t\t\"7A8172A4D3CE874F45CD49A6633C30C1D6F752CC74589D8128A8763E9AE8331C\",\n\t\t\"5A6A07B264C20DE39E285C9F1A770B3678B3D8A0FA2546E5657A6011C97250D3\",\n\t\t\"80A6EFD9EC0AB1B098ED54B39FF579191557D46399FE0A08DE663DD0CF46B666\",\n\t\t\"D5071D7CD20C912BC2C8121C8DFA5E98A24902D3534E15F0B7CE02D6F6AB9A05\",\n\t\t\"26D559AE0C719326CD24738339BD9783119DEEE43F05A12A0493A1B916144560\",\n\t\t\"026C69D0CE4DA41F5C17BF1B36D90EF66CAEE3B506D80D1D7CDD6C71D356B207\",\n\t\t\"40618020EED4EEC0B953C2274AA7AF05F1023358A5C0AE57529D560540781417\",\n\t\t\"8D68AC3FA1B11DCB2DED9E8F56390B7CD90931A0839602571BD9AD093994BAE9\",\n\t\t\"0C4574502EDA307FC1B8C9E756F814B77AB313347B2825541DDC1AC60D9AD3B1\",\n\t\t\"C1FA65AF2740E0E03F9945B8A24DACC8883742E263CAB7F998003CC8DF82F63F\",\n\t\t\"03F52F52D9FA4620822331FDC966615B3934AFE1285490F9AD79D440BB8C5E3A\",\n\t\t\"D0AE64C603A7B9E29E96C6BDC575B03D337D0A7FFBE5704EE5C3CEF90C8D624D\",\n\t\t\"6F44AB8D6AC951F87254EEA76125DAF9495AC25E21BD40C851B280A45864B37C\",\n\t\t\"BCF5E7FA93E2B8F81427A1369B213055CD273B73148D4C54F9C0EA801AC63850\",\n\t\t\"C775E45EEABEDECFFABF0606B2C904B2824067160CB363B801F763307FBC194C\",\n\t\t\"44C33285351089268C02A2CA11267C3325267E034C04A2081EA2342C62AFCAD5\",\n\t\t\"DB3D30FB42B2928889753DEEAFEB8A8BD6B0FB73410FBC8E4C7219205E89BE87\",\n\t\t\"C8B84E63EF575274946FB10A98B22353116C57423899DB41CF5F8514FE495868\",\n\t\t\"EC8DB0863A158D435AD800B7BE0EABCEA13F699E3E1F52CE02302A6E0633804B\",\n\t\t\"464B1174FC4566524097964ECB163BF94498CF421F1D216B8D48ED60BEF029FE\",\n\t\t\"0B5F06D9F9ABD0076ED072B5D09B6E2296208ED06A91C4AAC04F9CFC208C34C7\",\n\t\t\"DB1A32D20BE9EB56F16F01BEA5A3D03B8E36C2CA3D3993ACDC2E85FC6BD30CE6\",\n\t\t\"B840AAF117AF82F1351DA3DE995DE1C8296A71BDBFB0681DEC45423236C41F21\",\n\t\t\"4818C5167BD1547770452AFD71F32A6581770A77B94B8EB5E84830ED599B52E1\",\n\t\t\"353798663313F4079B8FAB1F6FB772C7FE7376E01621024630BC55D9A25EDCAA\",\n\t\t\"54EFFEC03AC09E8685AD00EB502C896B99B9D8DA741008D349CDC799BD0D97B5\",\n\t\t\"7478C3E548E6F750ACE85C2C50A8911A4CB04EDE83D65A95C30811D6C085DCC0\",\n\t\t\"6952F41AD14ACAD1CC0872FDC945FAE38130EBC206D35AFA323277E3C03E1933\",\n\t\t\"93AD0F52B4CA972B6B30CF66145C7B204C7F527FD09C1704B6C11939F645F371\",\n\t\t\"3005B1F5716B170B114B988BADCAA683742ED663A2B0FD74689F36359FA41700\",\n\t\t\"DA75EADDC7061E107B1501FDB40A11A4BF01B57AF7C18146B1400EB94284F58C\",\n\t\t\"1B244E244D0169E8F519B455C0FF019996B35A4A90AF5B73B003C77A85C359A0\",\n\t\t\"17CCE92839203717D00655C080BF5EED4551EA0CA75B61871162F34112DB0CC4\",\n\t\t\"FEF526E7A25B330E8684EB66C2B88F7CB6A0BDC0C70CEA0F721DBC05F63F8E01\",\n\t\t\"5F6BB0FDB33079A79D6F9B8E92256A4C22553720BE4F958155A0421456B00573\",\n\t\t\"0B77CE07B2207F3AAFB84680C3152BDAB640FB0ED0685CBA1BD7CE49FD80A5A3\",\n\t\t\"3CAC88B945789FEBB35CA4555DE18882321298219A53ECE01626927B7327E607\",\n\t\t\"C20905B0BB997A58084AA956DD46F30CAE939E207F73A3398EB92C065F71E9A5\",\n\t\t\"50DDE170CCEB741C1BB4DA9D0E07684703D4E12D013A6915FF6EBC28F5A068E8\",\n\t\t\"390EC72A3B9885098025BC8F363D2434FCD020D85CDEB5A0AE00C0BE5B8F4BB8\",\n\t\t\"2360B7BC492B2D1DB402DCA06CD87C311719E933CDA0A3ACA638E62A7E0CCCEB\",\n\t\t\"B472FC2A7E53BCB41A19855E088C87EEF3CA1964DB018AABB16E17EA10701160\",\n\t\t\"B37D02F7BE5BC04CECB2F5CEBF87D234D693A066368A3438271C28277A3C58C7\",\n\t\t\"E3C0B50AF925ACAD571178974F94E3FEA9723F8F34CE84111A069186E1C7D2F8\",\n\t\t\"320C37B2747487C39868361DFDE1708F0211CBE5AB3BF47E33D848E594FA71BF\",\n\t\t\"1B5FA0825AAB26DA7527EE9CF44FF87634A307E53B717F6666B807D1EF7C48F4\",\n\t\t\"8C1975687FAD208AB303898676F232A2F25E04C15FC5DD82D6C0369B934BDE05\",\n\t\t\"6910161AE5A053E5C6F7B36E7C712BA408EFBBD10F2F2751A156316C4ABCCB76\",\n\t\t\"C62CB2104A5B8FAC2B16088D91D2A235A399E8387CF8703AF6A366C2A56EF97E\",\n\t\t\"D6AF68A61EE7287BC70ADFD20465E3192CBA053F9A6522DAD97907B8FDCD32EE\",\n\t\t\"34F88756859DAC3A5874BC7011E4BE5EC9F571CEFCB65EB4FF0F99CD74B42FDE\",\n\t\t\"CAB6AB7CF1BFB4BCE539EF53587D8A072C076A145014063AEFA0BA69129AEB85\",\n\t\t\"CAE693DE22A5BA09D72A7B359C51B1254A749DCF0451475D95A99B3E2516F36A\",\n\t\t\"AF0DD6A2CA9BB39ACB52B0834A75F31B981FDB0D0DB69D820FF93ECBD1FA9B7C\",\n\t\t\"8A95ED3D61DCB67CB6D4A4A4B8742CE6A663F942F9C7AC5F6539B1F5AF5C1138\",\n\t\t\"B88D971FA6283FB76D2D13D995B3168DF44069E3E51D9047321A31C3D178F9D1\",\n\t\t\"504613662C6CBCFCD350067AE781C4C6CBBE50C60398A16DBCFC4828E341CC50\",\n\t\t\"375E7E0C33C641462BFA36B56BC1D83A51E8DDB636300EFB6A174E80D628848E\",\n\t\t\"A14E8914189510BB05E687E88D3D1B6A36F5A0D831D1B0289576FE2174FE0A3B\",\n\t\t\"44090267FCF06177CB6C4A53DA86C74776B42EBC15091A1FC0BC1E981CD05E5E\",\n\t\t\"176F8706C0F5C0EDDB6B1BF4D9FA4A77227A0797D757EA8DC66821B6B6A2C3B9\",\n\t\t\"2849B77A914E0753CB9E5542FD5541D0B9A06E2F5915781D42DDFC029E5ED806\",\n\t\t\"399B06E6C307D41705B91A15779FD2C1179185AD18EFA7EF638704BADEA7AAE5\",\n\t\t\"B21FC174A17395EF6E547907F5C7F5037A41385A540C74A124734B2EA9AB9F4E\",\n\t\t\"EA0296D3C1BB494209F5CB654041C90750F32A1EF12E526172341DA88CCD181E\",\n\t\t\"096C277765027380593657A1DC43F4682CB65B2E38F858916411C9C65D9BFBB4\",\n\t\t\"080418049DBB99CB8AB773597176BE2F5E44C28334DF8B09340C57E359742ADB\",\n\t\t\"ACCD20453E3C3E7338BDCD2DB8F91F2FD0FB2DAA3779743A22ACECE064CF05AE\",\n\t\t\"AFFD33B9E561CC5237C7623DE9A444DDF4313A6EFB50A990D31275D311C868BC\",\n\t\t\"8C32AE6EFA8292F62A9FADC1BEB2E5674DC405CE27BA85D140A6FB19177A6419\",\n\t\t\"C4ADF0D537705DE0D182F30FCDA615D6CEC6E4EC3854B480CBF29672B97CD0FD\",\n\t\t\"345429E00333B14B1009837261F759E29DF35F03215FB63CBE90F5CB0BD99E20\",\n\t\t\"DF0FB60B77CADDE4424BF97D70660A1C7C0F04EE0692F3EE945065077F10B335\",\n\t\t\"5A19E55E4DCA7690599F1F98BBD2D78C0364F7114430EF1E4176ED424A79BF68\",\n\t\t\"9482BEDC0A81EF591C58CE87A3C83F0DC618CC46E39BE8B31DEC1873B4F493D0\",\n\t\t\"D1D22C378E13EF06D16FDBDA8AA352888733E488895F890B020C50FDC01B0DB8\",\n\t\t\"3FA67DDDD4889566F8145F3740CC6B22C6ADA063BBE2F8176324035795C30E25\",\n\t\t\"6C3D0E6B082C4E36816082D6095C7070D3D15675BE8E3905C4A09DCC6E530047\",\n\t\t\"05C28902FECC8590C9AA6C1C7A1A1CF0ADA708E63A72621489988C1C56F448F9\",\n\t\t\"676021926359A56078135185D80668A008CF93FC30827C5A10ED0CA5CF409880\",\n\t\t\"9D6006E3298FE3F5B178F2005B2713CDB7C02C765178772790591EC5DF890BD6\",\n\t\t\"5B14044CB17305FC093C2D03178D9953C0DB80477ED57095720116BC9D9F3C8D\",\n\t\t\"6CBBD0C7A9DE8CC0B8027EC685D03152243166ADFC9720051D403F0F0F9C24A6\",\n\t\t\"9D3E916B36836226DBF9C5688FA16F573E91EF0F001A6C41B14DD09FE2A20EF0\",\n\t\t\"B1F1148BDF81DE22178DE75A5C5F1B6671C7E61D65F7292C5FD52CFB2371D02E\",\n\t\t\"D4847147E44756D8F9DD33C41961A6B29D9A1085B6506658718748685E3416EC\",\n\t\t\"C48FF6CB613E558B97647BCD6C38860AAEABB8C3DD80F2707532A94B50194579\",\n\t\t\"DCEA0E30130917E4A40D142758094771E03BAEC0383D069D20A641BD92B710FD\",\n\t\t\"D83B3C26602EF01F005207CF00568778B60938E86B5DEA2E04B787039DCCE5A4\",\n\t\t\"81E169095FBD1D34C1064B17BD8ECB996F3631ABC5E3A67888C659C29FC67321\",\n\t\t\"58C3CF9F0702B569FC51745F0AB91CDD08CA33124AB384B28CA008B5F3F91A29\",\n\t\t\"E7EEF3A8FCB91CAB25FC49449E0195A741E52976DE0E455C4EF62D43C4095A28\",\n\t\t\"21DA2DE1F9C8563C20C699F7E0F111032D94CEC47DC8CE5F4FD09CFC640C6121\",\n\t\t\"3879FD5920D3C72D2BB544E32993BAE959A2EB2C87E85BB9ACF942A4651FAC3C\",\n\t\t\"259765084574A1883514592AB4603B6D58DF9B534A42414C9AEDF3E928CE3A7F\",\n\t\t\"3869C0A46138A9C3A46E3869C5A4554A72D6A5420339FF3A444F364F64605F25\",\n\t\t\"0760E356F00CAA002EA7949CD8ACBF0BA69607DBB55CC59BF1D81067979FFD3D\",\n\t\t\"538B062ED4E08B8328EEB73C03E61A3D9BE515F454968FA655B9B41C84658F02\",\n\t\t\"DCCA8E3D93C8A742899F13315E506E05FFEF8D1E98868B2FFC56EFDFD9FB3048\",\n\t\t\"D86148EEDC0F1F6FF441F285175E5887CBA8F16C5CB8B489C0A6E9F4D978BB90\",\n\t\t\"8CF842EC0E62E5CB5EA764B8B946CB7021B63485F3D023ABA5D3D3DF6A3BD7E4\",\n\t\t\"EF6CC6B4964E71F8569D2F50EF8E52EFF65BDA374F9F77208BFBA0FD4C986F2F\",\n\t\t\"A9B0470BCFC517B8B7D8D3F28BBF5DD81AB6B0C9CF1C5BB7060D40E4C9D7CC5F\",\n\t\t\"41071E5BB63B7D84A8BD5CC6BF318BD892241F7261CC9CC3C54EB12AFFC99C31\",\n\t\t\"38C1D1386EBC7229E1BD3607B5CC5ABD7F23B7DD86CDE1D9C8948616F4EA34AD\",\n\t\t\"DBC3917A4B0BF508F833F103ED61B4462CD26211100D7CD2D9808514767E6F20\",\n\t\t\"5BEF6707B33CD7B183776C8E091139D0D0AE9548CC64074B3C93D9C17B374F08\",\n\t\t\"D139D070461BE81945E5752E2F58CC9BA6E1F642CC9A7832110E271E1B9FB45C\",\n\t\t\"8419295037E5E3C8C37660DE656D02A172B17EDDC2F43E1014CF97385DCEE199\",\n\t\t\"5237CF02549C7CB69E970D0B80978C8C773A0E82FAC1B350B1A1FE1C6CED7FC2\",\n\t\t\"F3AEBCF3AD139B8EAB9BFE0377FBDD59827AF7F1338F52229510059F6A65FB69\",\n\t\t\"85B7A8F7B7BE7FB1030BAD72EE62E0E656A7ACE9387D23CCB77AF7154BD7E618\",\n\t\t\"6E556FEB63262857EEC0FE5A2D5DB55FE7E4B446C04C9F1040BE3B946C7DAFC2\",\n\t\t\"D30E9A9B486457388A241A3DFCF530F43E6F36D4E52E10F17CF65922AACF06D6\",\n\t\t\"8983A780255CDB9F95D55027802CDE06A2A23F98C5B58B854A6B3A6EB760E474\",\n\t\t\"F2C760A648556F34520F4478A763A8F787A43E106D9E7E0ACF0E27F0EF002E3F\",\n\t\t\"484E5403723070613660BFE79F8FC3F9288F7157E372357F0D4A38AF47288FE6\",\n\t\t\"1FBC0C8B91BC56F1A6230934E7068798495DE198125F0E6C87A908CC6307BF19\",\n\t\t\"9BDD82D931EC6090518F64B73DB11D579DD2128EC3219E7C70C9784AEF654E59\",\n\t\t\"2ED10A7306AD716B4182F9763CD0E4FAC4FCFBF165CA61D41FE4A49EA9F266B4\",\n\t\t\"9129CE51B46167BD39CA36320439B0A5A266190CAFD76CE454361C828DDEA539\",\n\t\t\"1A6B802725E932E0A33EBAB50527BA65A92EDE1A382316E0A2AFD7B412596ED9\",\n\t\t\"AE9B0E496BE0332FE18EADEF1198180B89D32A275F7D065809C8BDF53DA37458\",\n\t\t\"0F9FDA8F3A2C9AFFE525D4612C39FDA09849E5DFF04FA352EC0A9F3F7C58D5E1\",\n\t\t\"B6CAC4453C72D00BBE2BBA888CAC034C61057BC3F390A0D81BD081A476EE2173\",\n\t\t\"EA8DC693E5AEF0BDB8F88090B5A30D8B7DAA86B65D246C094CE2F21314F3ECAA\",\n\t\t\"C62BE89F7A22597F8CA5DDF3053449169C86CB836D41030B4E55C00DCDAB53B1\",\n\t\t\"9DC1F6F36AEEEDB2830A1877DF76593630E6CDEBE326DC06EAC29B175437BF0F\",\n\t\t\"050E5F7C2237D9BBAA9F7306BDAB06B955FD03FB64DE221543B75F512C61AF64\",\n\t\t\"D6CACB33EFE06E57586E57320BD92B5A9CDB869AEBB8432702BEA5618A4B2766\",\n\t\t\"ADDD933D14C9CC0106665D1788F72DE9192E7972CF7EC086C2082C2C54A09BE3\",\n\t\t\"50726B1420A0F2BC7EEF1D0A6E958A83CF954AAF4389EFDC8F8D69B56890FD04\",\n\t\t\"98E9573783BB47CD630621A7FDAAA23CD3CBA86E2FB67C541BC67D24CF1B146B\",\n\t\t\"59DE030290F39EE543BA98CB5371F7282CF728190B7B55FB3AE1792AF7D68973\",\n\t\t\"97DE9B4503BF4BE50A661632951898E6BBBD87E4BF22728B4584DF7B14848A92\",\n\t\t\"BB4DE15D26C615DC6D4AEF32250C72400E0E2E5BDF4F314ACB87EA26B48AC0D1\",\n\t\t\"F3A98E718580ADF4162BBC80BD0C3E95F06959A664D6B7C2A0B4E4A987DA6114\",\n\t\t\"5B205E734343BD9A62267087C8989E0840A391D7913819DDEC3DD99171819B09\",\n\t\t\"920686751456A102D27F22E92F7C4D84EF4858C5416F84375B071E7C9F00AEFB\",\n\t\t\"255C99286C78867F0A198CF6438A4BC6D30E72D4D17E5A2DCF55BD86E71C8E15\",\n\t\t\"C27B6239A922D18EB42B4992B36AC442F699166C8C0AE50EE52E12A3B99A86BA\",\n\t\t\"451413C9AE570C911C768B5260CA1CB014AA55C27B244BA8D68C7D2143849C8B\",\n\t\t\"2522AE68C02385030471DE01DFD2896757F87263C078F5E1513228A8FD2A211A\",\n\t\t\"F12DE18852AB60372963C8EA206B087531E67BD391CD35EB8A0F8A4B888BC635\",\n\t\t\"85B6633B63F0657BEDD08A5D3CB32908B1F2C47A3CA864147AFFBA0E565C8364\",\n\t\t\"C54A0430EA74EFCFC237D2621560D667681457B7A5CB9BA3C1BA8145E50A377E\",\n\t\t\"87801C201508B18F4BA52A6692503BD21A763C70945DA614BC19DE6D0A219CB4\",\n\t\t\"92A3619502D759BC4E3C6725AB5909FBE73DC0FBC980FC58CFA2667FFD65AEA3\",\n\t\t\"CC4F9673930E97332C04DBE01D5EABD26B55B07EE512A6BF5CC15D25E766ED9F\",\n\t\t\"ABE5752A728425B182AF14F165D153B85BFE82AA0623EF8A775570F322EED0BC\",\n\t\t\"B7DBCFA87C8B35596CEEA0C0B69C4557CEB72388371F341082E1DA650DF661D2\",\n\t\t\"AEE86AE0218289706CE736E62DBC20631B0C1F44DF7AB9CA9BABF066297D4B20\",\n\t\t\"A2F46629D8D25F65537A61B177EFAF50705A7316B51E186A6FF2C37CB52C5BC4\",\n\t\t\"C823B72888ACC1DAFCE2D2F1597625D741CE64885253894A0DCD087013EB55DC\",\n\t\t\"FBF35680629BDAFE859A3BF42DC5D6CF2D0FB29FF5DD66B9E0DB6A0E7233BD79\",\n\t\t\"1AF0DED40FAF82D2810E30296C10917F60B9A87EC482676279C1F6CB8ADBD8CB\",\n\t\t\"99DEBCC1DA88F2CC4208B9750ACB3A25B388BD2CA9B969B8DC067D4B6544CFED\",\n\t\t\"403D77A3A8E766B2ED3DA30B9FDCF12D55B75C09D4BC185170F72BBD754A2E4F\",\n\t\t\"33EF882C2F8827F6EA879F256F0A83A055DA05C57256C8F42D4D0CA2D65BC715\",\n\t\t\"F5FBE2AF7A8B34A027B17E91C65BA8F4DEAE40C572BB123E2D854AA6A075E938\",\n\t\t\"502693419908A04CC6296AE21BEA27A332797BB432F165EFC8E6DE0E684999C6\",\n\t\t\"B7FC5B3AA489300DD9A1E5AE417D9C17F4652705BD4AEF525910D4DC2A952F47\",\n\t\t\"E65D18F466270D9E4923C6F319135AD2BE5B711C8B543703E56532EFED41DF5A\",\n\t\t\"7D1066AA7D48B18C1DCA844D04F2B04BC503B6204C00D1914C502A2605303896\",\n\t\t\"E5B8AF0C0DEF2B4740F3D111A1F19E30B2AF2C23FB4AC4F70E36EC2B30DE9B89\",\n\t\t\"CEDDAC04AAA876198D9C097A87F9111BCCEBF7A92E70753894DEFBC8F8DE0E9F\",\n\t\t\"4A698383618D9074F4100C6B041956A2A38FBC4186E83C8E9C990CEB111C56A2\",\n\t\t\"9A97F58C2AAC1B1ED665A386D5A6F1CABDD9714172161212EF18C01FA502D9F6\",\n\t\t\"A9ECE93E07ECD120994ED03105209E5A5FDA0360A7D58F678F0827CEB1798342\",\n\t\t\"201A440F16B27EE0040FCBBF8D68BF6E2FD36FF9381003FDE02C73F206E70C8D\",\n\t\t\"7F9B19CF76C4588A82DE22A5E773089904EEC3C0C431185188D18D08BCA55BDD\",\n\t\t\"84474BDEE984E0220DA761AF08A020E8186E3BE910B7754776A8620A47B2E6AC\",\n\t\t\"1A44CFCF979BCD25CE61FAC7BFC731FDCC54EED126B14CB005D9760567862AEF\",\n\t\t\"D367504F7C77D52EDD91AD17E61C613649AD400BE5DA758162F63E25457A00DC\",\n\t\t\"01F39EF3D8831BA10791A46484F33E4B37338157831BC47593636E3ACEC1FFE1\",\n\t\t\"0A7AABB76BBC32E8096B12D4CD09686AFBCFDC0BCD1E3BBDB8F9202853683DFF\",\n\t\t\"B2828B9A0756D18590D4E60D6E4341C1AB2E6853724B1496254A662D2C3322A1\",\n\t\t\"F537726FE3FA09FAB69A4014BD4567E7AC6DC9F6020CA9193D977716CC8259E3\",\n\t\t\"03F361518968DBC9862962CFBA6E480D3598F178389E7776D6ED0AC98C188476\",\n\t\t\"94DCBD0A6F9D021AE4EE457DA16EF211A32224B04B945E40588108DE154A89AF\",\n\t\t\"625160C70F0B6CFD9C86FAF13070442261319D8FB48C92DD60E4D6966C342900\",\n\t\t\"257A446E23EF438BCCB7B745925B622F9D38176904FDD67C901EEF8DF22E9D88\",\n\t\t\"BA005424D3273F86CB1DB29260B5F7E39D2F5F9DCC9BC14CB34CC71D989904B4\",\n\t\t\"2CC45A60C649D62EE47895BE850A22FB6D3D1C795DAE166F93E1412379FD03A6\",\n\t\t\"2CB97F0986AE0A2DE5E6E3F472BDBF353B4159C05D66AF283C89973E00AF9B56\",\n\t\t\"CD3BD6328EED92B16764CC007700EF48B663A081E010FB573938EB74C4C517A0\",\n\t\t\"7A9488F705E20199751D78FFA643BC02F724794564DDA7A4CA35EEE7D1418AE3\",\n\t\t\"05A18D27BC3146F10D958C4E1875F706788E756FBD6BF856DD4E09396A0F952A\",\n\t\t\"A57035E0CB05F1C25F4F20016FFA511CDE20945E8535D6F74EC557154A3026C8\",\n\t\t\"552B7072D1D978F7737250E2DE83ACF83E27C795A177570B2CC9E4E6C98DE50A\",\n\t\t\"FE50403A6E71F27FB84A3C27F1C0452F1EB8E0E924B9CB22D695D111E20D16E7\",\n\t\t\"589F84DF88CDE12D2505DFF105716BB626287A36CF26E76F8C740039C50CA346\",\n\t\t\"6B485ECE9098F7114C93908C9756F05D09FFA6405E951C1EF514705B1394814A\",\n\t\t\"DF33E40BAF9C80735970A91DBF724B4F6E95B1EDB2263F9D2E6630E7A15CF627\",\n\t\t\"6168689BFC28DB27E8F781C2F80D259335D23C971504C4394DBDF4B4DF804142\",\n\t\t\"D1137E832E281D16F8B3AF0ED4A0AF6E28A0F4D57D1390FBEA82D0884A6A637A\",\n\t\t\"EB446CE338BDB1652A4CBFD4D01781702F2415A42D4E26B5C64D1C6EEF34D430\",\n\t\t\"340DD0375DDA475A9B842169AECB3B55149F8D62A4737118359C58D7D12285A1\",\n\t\t\"FE637F25561242DD5D16EA6E388E893434A111FA9BFD4F82FE2788FD9F3CD2FF\",\n\t\t\"2C32AAF3DA3B7C5943C3B16F8663412916BACF5C807E211820F806B19D3B26EF\",\n\t\t\"B40CD52A2D83EA07B6828ABBD445588B817503AB87BDACF4DC7CF15921E16769\",\n\t\t\"19F8E6F84F58C89E5178546C8F5C7E404868B6A7C3DC27F89642F10E088F4272\",\n\t\t\"C77AF8D80EB00B60CEB1D6889671AD39B296C5B2D69C3020DBB2388CED94B35D\",\n\t\t\"84F8E161E2BEDBA8615C8225633BC3D8AE30C47A6E186B8788C376220E2E6728\",\n\t\t\"6D194D430F8116200E4003A004A0000681973E002EFBE15E6FF623BD10F210F2\",\n\t\t\"109E85F02C847D10F641D80F613F8483100E4208C6CE23419F02153025EF930F\",\n\t\t\"864643C04EE703AC07A03388DB51BCEE60C70EE470745CECBD94033C8E191118\",\n\t\t\"8E10AE8F4E0CA2BD2ACD41C2C81C447F73F1D920B4DB9D89ED5EFA0046BA2593\",\n\t\t\"F437342797C539998773722A83CC0922EF388BE3001113406B8E7CCEB196C572\",\n\t\t\"F61C19BDF364F47E3F8A34F226E18CCCD539C024B3D0320A73C7283C401A99B3\",\n\t\t\"7372F63CB2AC7EC009CA602CEDED103C0EF024C033002F02BC02B017E0ED4C32\",\n\t\t\"37F130D6F110C6411807610C8431106A20C47215842A0895102A215440A8183B\",\n\t\t\"37E218F1F0D9978927929426C63A6A6E72E4C0F5A8B920E9B1F3303A6FCCDC89\",\n\t\t\"EB075FD2E2255E77AE55BC019C337DE40D2759EF59E4D52D79F349AB511FC02E\",\n\t\t\"A6F186EDC199EAC077C4D9091A7BF990DB0E044A4113C353EABD812CFFEC042D\",\n\t\t\"B75AC955ABF085EE020B9D9040CFF5196A39D5CBDEA5094A6FAE8ADDFAB28262\",\n\t\t\"26B9893D92FDB292B7A21EC87F5919E8287D842814708EF19294DE5FCA9137CD\",\n\t\t\"8D750A6C88D1702B54DC4A9579859209DF235E225EF19AAE191CD02829022628\",\n\t\t\"9AC28B14DEBB55856BC46F37B067B5E4E4962B560E74C899EB4BDBF00EB4D7A6\",\n\t\t\"8431E17295960FBC79418FCAB25A51330E2CAA3EA05BC06D53B1020C0CDE29F8\",\n\t\t\"881CF37A57812BC729F1DAABD27248CDA2FBC56E5150B45CB02917E22581F76B\",\n\t\t\"7BC8F5A8182E67D0620BAA1F980D2816D8ADA6E15BDD3E3C97BCDAF839D50776\",\n\t\t\"DB40B37FDB2473DAAB831C1E2FE2EB971C4BDFD673E5F13E5B8FDD21C43E2F7D\",\n\t\t\"DB623DD46C046B8AA2C0DF70A0E767EB3F4C3BB9BCDE8D8DE6BC3BD4CD993884\",\n\t\t\"5969F2F64613FE3C82BA7901646C6CDC12371E2A60FBF33ED8C86E89A0D47FC8\",\n\t\t\"8D01CF2E4EFD6034A9A1B2747BD4DC0AA5FCA8E5C39A8881AC9B1A98CDE532B7\",\n\t\t\"693B6EA8CF88AD370B7837291A196F3EC81DDB361984B41F126613AD5CC2F260\",\n\t\t\"CFDCDFDF7C9CB9A55CBDC6F2D6FD61DC07FAE3CD27B74EF2297E86DDE2740B2D\",\n\t\t\"27BC266E68DB39F6B2A67E5C96975002991B69E4CC5343E48CF7FEE601F5C38F\",\n\t\t\"626BD3313BC4C80964E25EC896468A5E4046D1572D340F6CD58432E5CBEAFA9B\",\n\t\t\"07EA35ECA0A63EC2BA53C20884D171FA838007FCF8083F9A2CCB11E0E7CAB673\",\n\t\t\"211E4E9C990EC4C1F518716134E4564DDA76729170937BAE1B597D915C8EB45C\",\n\t\t\"5537FD941C0493BBCAF16E7257B9D9BF13B1E9AD6E9598E11EBC0BAF285BB78B\",\n\t\t\"5794C9BDA09DD9DBC9E59E537785EA2CC53AD1EEFD62C6CE5C48B6E1075E0245\",\n\t\t\"13929EEECB0BAE2857F9F2FA5694CBF02EAB581831601B9431D789D78C149EA8\",\n\t\t\"86BC49DAC0CD3084C910530466B65945BC29C251F41EE8096DD96246B8037304\",\n\t\t\"FCB6015A732063C836E9389A1A0578B706BF28E374701F707442CCA54E397191\",\n\t\t\"1234CC78D08BEA667273E5A65630BF64216B959E07FBF9AD2226F32979ABC494\",\n\t\t\"B09FC8C12A1A46030C231B90315FA2C25853BCAE43DC19E8292122EAA627A8E1\",\n\t\t\"3DFB0B91082D1642B58135C5A231426C1D6CF3DF4483272264F04C613B2503E3\",\n\t\t\"14183CF3C1E09921193C2AD1E061F67BA706E21AFF8A3F8D02B10910A3484C01\",\n\t\t\"8B1AA982C10A74F1447E9CD80633009D50376FC61B0712D7E54AB709E697DF7F\",\n\t\t\"4A7CF38B5F8AE037E2EDFCC23197C2CAE5D297512CD1F8C28891759CC10B5EBC\",\n\t\t\"E66DA8E757E2CB8B5CA4B3F514B9FEA43F69B9CA4C8029E1EBBE06BBF34C132E\",\n\t\t\"4E4665B9C8A80AF8DF1FC3AC2AD433A2DD2CAE6E6F115EE9563F74015F0629F8\",\n\t\t\"D61E349A8B8205FCBFF0D28B870E75D333F8CE5334B2973A0BEC7CFD97E4CB1A\",\n\t\t\"2808DEFADE80C9C92FE9138D6D4B07FD136E7130D76B3B65E9F484719DF60281\",\n\t\t\"E9E57F312008057C0E8F6F407B80C05D3C12883317F532B7037B11FA811C2FA3\",\n\t\t\"1ABE4DEE748CB6C645B273BE87AC15C90A4C0F3F95D08B21A6FE7260D65CD4C3\",\n\t\t\"CC06C272203C42B5C031FA4C13BF18859499F5E6E9E496F96A277FFF57D00DD4\",\n\t\t\"139FC2520ED8F427D130AC473760EF47E806C0E40EF56C9E2251FE164120152B\",\n\t\t\"918A76F20691147358EFE7A79E44EF45E35E8D93F5F687C0ABE4BAA402E5A91F\",\n\t\t\"4B2E0BEC294E7EF6E7E2B0E31541AE36C89E8BF432BDE05B32A21F8326315BDF\",\n\t\t\"43319305FCF257A8F95DE40A24D7C9FFC787C471E905BA518463723F00146253\",\n\t\t\"A30C5FB82BF8DFBE8D2FF295FCAF49A8E27F49420DFF180963F85612C6F10F60\",\n\t\t\"98C2DF47925ABE868409FCDD249CCB6F20E17C7E0D0975BC838406FE7612C6F3\",\n\t\t\"8B4868E22D6F8BF706F428B2FBAD42AD959F4BB2B2792D0973F938122E25528D\",\n\t\t\"57029424CCE72912AEE6078F60B896EF23E17A9E276129DF434237DF4DC20AFE\",\n\t\t\"2809ABF90324A4793F09B7F07B48B895DF75446461371EB5F1BFC6DCDD7814C3\",\n\t\t\"FF8244C965A0ED248A3781F84612C55FA8E16B49947C91F16E124525C3AF27D1\",\n\t\t\"2731BA8A449FC6E81212C515C36792E8F3183590B6E71787E683CEE722B8E817\",\n\t\t\"1F02A991D16A4BF8D687C4EFECA88E907B040AA92C4B81850D52E1F93F6361AD\",\n\t\t\"B28D94552BA12CB9899439F91358563C32DD8750DFE6A842745448A745A2F3EF\",\n\t\t\"844E8E2654A8C1C2ED5261AB5818132A8CC1C21D52E126B1302E541887858F4B\",\n\t\t\"8576B1303E54188F854F48857AB1501B2AD462E19352E114B1630952C712B063\",\n\t\t\"4F4B1DBB7298746CF4F74F9D7ABF5D7AF0FC156CD6B028BCF9B44FA67E419110\",\n\t\t\"B88067030705C807EFB235821475CAD43B150935E7B87676BFB6F8E0288F1C5F\",\n\t\t\"1CE225BC4BFBC89E91C685A5CA980550E9C6D412197343542F3DBD9DD7A46685\",\n\t\t\"31D741E6C4D41239A3012F94DDA788EA658E73F815A41DD7FB8FF5B07E59C7A5\",\n\t\t\"7DC4C28D6B0D035E80CCE7C000543A75691FFE2214FDCC460E0A90FE11C8ED44\",\n\t\t\"FA6F02FDFF62DBC3022DC3FC6427A0625D827C8161FC156E9AE3DF07B78736FD\",\n\t\t\"86509FD83A2155CDAC862EE1AEC6CBC0A39FD03AD5748CB1B52E93B516C82066\",\n\t\t\"4137119C453E8CF9645D710777001C213CF79977F1DFE99BB86541AE2008581A\",\n\t\t\"D3D78CAAFD8CA6FD0B0DA4C24C5F93EB8BD7FBD7B1DD427107F0B09F9BC2A94D\",\n\t\t\"87A01BD04ABCE91CF3114626379EC60DB1F1AFF86939C61C844CFCA652BCFB89\",\n\t\t\"4A506F7DEFA2456A4E7E1A8D94649FADD7AE171617B81FAF44DB24D62F1E1429\",\n\t\t\"BDE9581E881DB9641ED5158E5938506D186107C3C46B8960F336FD15D51EDE7C\",\n\t\t\"209B2D73CACBF49899384629BD5A8F733A455B44EF37335AF5CFFC3EC59B3856\",\n\t\t\"7681891362F71283CB5BDFDD2CA89BF0F08E1CCAC667721DAC5F8E570FEB4EC0\",\n\t\t\"BEE4E2B97E2FF38EA39C72F24F9C25FB1B6ADC40ACB41FF3255160B80F902FA9\",\n\t\t\"02A901666A417918FFE743E496531FACE8BBBA6C3DD86881C44BB96CB875E8F1\",\n\t\t\"448189B193AFBA9231808D0CD5380AF8754882B39D0A547245F1968F98086E7A\",\n\t\t\"0BF48AAB8F6B1620918E5D74F0CBC6E337BD0605F22E0DBF2738033D2E5F9E66\",\n\t\t\"0534652FE0EF198F7E4E1CE1E42F5EB4CA62469B677BC4AF540D6083CF1FC406\",\n\t\t\"BB7CAE03FCB67760BB383CE621E7210E2E4FF3C94D60BBD52BB94B7AFF57BFBB\",\n\t\t\"F481FC2D6E0876C38BCFB5E608FA83A98B85CDE174387B26ECD231AE7D8DE40B\",\n\t\t\"FEF8F5C9096461AA420BF3822F47105766B9C9FD3CCAD1F33029683D1F403932\",\n\t\t\"391CB8DF122972E39D05E8D2819028251FF8AE281D9044C95C14B3ED7A2E2F86\",\n\t\t\"B3696E33C5D14AABE52DB0C70EA2993EAF5D668B693B1012B553E85E81ADF38E\",\n\t\t\"4C12B52174D4046FFD3BDEA203DEA2C3E622EDB0BC691D0E717C41DE8A12C6C8\",\n\t\t\"9B56923730388E5A2EAA9BD0AF94BE72E953A44802A73C260ADC7EE97832707D\",\n\t\t\"48C882E3A0D193689411397B87638EA291140F75EDFCCE40C8C8127DB92EDB01\",\n\t\t\"A40B52D52BB28322A70D899CBAE933287438C46272E84AC60C97C23BE87E7451\",\n\t\t\"E801462BE85BCC45F1C029AEB5FA78F5232F113B371EA4F7DB55CFE01608BD09\",\n\t\t\"23BDC9947A937A74B8373D637BB340EA4DCFE8DEF4307150D7CEBFFB45C8C0A4\",\n\t\t\"AD5DB6C364E9802DF7ED36618A67391CC021A370380211226388E8207D2D253D\",\n\t\t\"32171DA623D1103CDC0944CD450730D5CBBFDE4924FDCC1A62E876C36C16ED37\",\n\t\t\"1729611E5BC42B396326154F2E3E1F47BEAFE8C79586EE3BDEB4B2D8B4EAA673\",\n\t\t\"642C7D7931B0DE3438CFBC308EAC38AFAD1B7AF00E91087B88F1FD92089C4211\",\n\t\t\"F835EAACA2A0345AAAB7C5D10A7AEBF73A1D05FC7C62BAAA029AD0A05D0EC741\",\n\t\t\"D30B386660CFCF119853FC6FF0EA0D3A8D742224A1D6C0E7A456976D3FB978C4\",\n\t\t\"9C2A2012D03D9A0134963B405F0C046E1447CD673B85763374D4CF678D93F4C5\",\n\t\t\"A58FAE1FB8F4115A987BCC45FBE939057CCB9B78CF679A5867B41E09F5CB5CD4\",\n\t\t\"8DE3DBCD172326D7E973BDC81B8E4A9AE4FFEA79EA76C7F79FA73EBD929CDD3D\",\n\t\t\"E910CF53B518EE82BC530094E3479EA722F1BF7F9E8A583F7C9E2AD16021A806\",\n\t\t\"7003AC07580D6007C805B03AFE51E7A9643404ECF43300BB00F63BFE37CE53E7\",\n\t\t\"AE1A3E4FEDCEFFC1F3D4F9F9644E1079471AC4D703B4E4FF9DF354C4FE71E7A9\",\n\t\t\"84EE7FEB3C55A27D0A78E805380BD00F10045040910A60E6AA7FD479AA384626\",\n\t\t\"F8B402D8014A57FD83CE53C55323723B147F50227DD967D6D798654E9F6DD02E\",\n\t\t\"C476E3E263827A6650887D075F8DF589DF1BC7F02809F196BD107B18F16CFD7A\",\n\t\t\"5B9FBECF9B4C0E0E6047C410C9C116EB8E8375E8AEAE865D762158D7D2ADE0DE\",\n\t\t\"B6C3A007F5072DEDF44C2FE81EE93D9DF825F2334A72B58168A8C039E036979E\",\n\t\t\"F2C652A0D0D5DC0DAEF2135594E6F577F04C27E68D2D55A1DC6ED8AD5FFF23E4\",\n\t\t\"B6E4F5885F2E693E85B775570C7FB36432F95A8994CD9FEE4563CAF714A6B80E\",\n\t\t\"3B7FEC53F48CFDE3D9C1B4DA1B30C3FF29BEC616D1593E51DE5D2E275F3271F0\",\n\t\t\"0F921309883C85757CD93A95A46E9F3A28D976054EBE11E8BF815F27817833C4\",\n\t\t\"DD878141277F2F441D4EBE060228A880407815D977F2EB1169F88B264EFE2662\",\n\t\t\"17A695CBF9E4FF128431F6123927D8257002583549E4C0AAF526501FA6FDF4B9\",\n\t\t\"F95969D3A61D6C38AD0D6B57643DD8332669EAA18F4CF3C70BEAD7FD6B860560\",\n\t\t\"A9C35950AE58CD9F3E00DDEDC763DC6EBCFE2B1EE3D29BB9A2533EDB2B30D13D\",\n\t\t\"38D1797BDAF054D057275C7A7FCED0BCCB5CDF3254E9EC6717D8CE89EA972EC8\",\n\t\t\"2F5A86BC79831E2B7EA7652DEC43AFE1C52491A8C00487C96A395BAFCC166C2E\",\n\t\t\"E2E9BF0ED8BE0489ECF6DA8274384C3AD89B83356877A6593A6BE45E2658AE80\",\n\t\t\"DD6E90D4C6BB538401BC181A24DF01BF01BF64ECCBEB5F61B587B04EE1976E5C\",\n\t\t\"CF93034267016FDF0B1DDB526A49273F23318E3F009B073708AEAB8ABD7FAE4C\",\n\t\t\"BD3B62DB84722518B5AE3072781F88E296E7AA772BB2D81EF2A5DB9C40B77AF7\",\n\t\t\"841CF6F22DDC31B0412FCF631498D6FBD9CBBAAD51EC65F3FD6098EA0272B4F3\",\n\t\t\"2E0BB40A2FA429B21025F017F6CA2DEB8A99B04BDDD21D2A22FCE511E49B64FD\",\n\t\t\"76B74283BBA9B2D3768512625F1185947CD1360A8B792BBECFE5F282FCDD2009\",\n\t\t\"C456F5E32A0A1E18594568321E86BD9DB3C57071DE22BFB77E3F2C178B4DA56E\",\n\t\t\"AA21E37274859D4BC6ABDC78744B6BD9FAA332669ACF7694180F98154DB2C649\",\n\t\t\"7BBBB97E3F3D8DBD2AD00AEE62007FA087FFD35F9189BE1C2F7300B7ED0380C1\",\n\t\t\"4C2B28704806A072C4023D60B944AF866919B13C1FEE1497C3296FD11EB4290B\",\n\t\t\"1CFC0B1F8F383B53434608FD0DF90D9793C470033A1F33339CE0EE7CF45FC4DD\",\n\t\t\"E986345A47AF1073702F3142A179FF580ED00465490FE2686D41816452E22F04\",\n\t\t\"A944BB0DFABA91B381057538508C9D985200CF6804AE0F3AB0C8592EE35DA461\",\n\t\t\"C004CF270990ECA3D12C5D78EA79987F7B2F5A94F587031AB6DE2FD05160F77B\",\n\t\t\"657887648FB97E2F3DCEC1FF6E2F71B50E83C1C2E5F5F2CF8105CADFD705860B\",\n\t\t\"DE2AE46CF805F3C6CB14B9FFA6DC1CC9DD96ABFE83222B90EFE48EB65F511670\",\n\t\t\"7520845F0D646F9635AC2BA6D5E5612DB66F5A56053B6D43D4EA40548B2DA8F7\",\n\t\t\"77DABEA1AC3004F7C408F7287C791356D8F1FBD9C0FF477D38C8F1204D61073B\",\n\t\t\"D47FB04D9863D3882E13791BB6147CFC037872CE44E2258C4BA7F7816D73E934\",\n\t\t\"D78DA5974A1362E462ECB4FCC41A28FA5E7F6DFC413A0F3DAB7AD51FB25EBE63\",\n\t\t\"B716F79E1BA37A5BC7D137814E9A239E1798829E08D3A9CD61619F990621D60D\",\n\t\t\"B14ED37E663C9E531FD31F047515F947FC8EA627ECD20763FDBAD0E3044662C6\",\n\t\t\"FB99B9C8341E56E88F5FBA20317A81EBE33A805D0D7780EBC4507E2CB018E2F8\",\n\t\t\"0D6EBCB60238C7CE1C3B79EC8B63DDE30F32FD972E82F9099D038CEC04CDA5CF\",\n\t\t\"E4C73C132C80B759E9515B00B73672D93C28B83E3F21467F12624A88A92E7D78\",\n\t\t\"A99BFD90E20E7127C03F85768AC70E886FA1B0A6237485A0348112EFC838B8EE\",\n\t\t\"F61E7CEB289DF3D0B1AD51E08F9A3EA0DF6E3A48AF900E7F02E3BB0BB88EF64F\",\n\t\t\"34CEF1DD5CD41BE4D5403B38C06FC1CE7F99BD20E03B82B7F59DEC3E45E3697C\",\n\t\t\"49C0C4DF40DE159CC040C6281BD1E36A60F617AF5BA3F777700B83A66E3AA5C9\",\n\t\t\"4F9F379DA26F6AEAA53F6FE73590150B59A7202B02B2DE09FCBC789DC8F3C221\",\n\t\t\"A807C1376210C440B8E1E9F5DFFE75EE6BCFB5E7FFBE27D74351770054033400\",\n\t\t\"3C0CF034C02B0007004E01F0008300CA1A8A9A04A0055800900A9003B01AC00D\",\n\t\t\"500BD002F034C06E80A3003C40184D5171004900568065006B01F087E99B009E\",\n\t\t\"047805E075804300EF017C06D00FA061282A1E20096021C04A8062806A800700\",\n\t\t\"9E00F82DC09F000E01F402F40344D5525402404AADD84FD472EC244AF338C0A2\",\n\t\t\"2A8F6D4B196DF7546D70D5007F9B6A3654795CAE05A51515040FF17362C47518\",\n\t\t\"4A3BA7C00E2EC54B219E535193037528081D2EDA5952C190F8E251F1AC0AF20B\",\n\t\t\"F81475B7CB53E9AAD0279106A8117E303C3D756C3BCFC58DA4E7CEA434F3678E\",\n\t\t\"A42B205E0DE0612AE9B24D2EADCBE3A9F268292A3A8AA2F2972E7738C41C4C52\",\n\t\t\"8EDB962D1E95A4B297E765DDB66C2467658A2EC91C1D758B96FC970D25D5D515\",\n\t\t\"651B4AE8B2AACAD07FDB80FF670353535679979676BBB4251BE8B25A97B6D6E5\",\n\t\t\"A9419CAA8D2437AF6C83A7AAA66A23AD5DB0CC96AF5D29F21565AF7095D4B8B4\",\n\t\t\"1BAA2A69A827D61F69E0A61A6D0D535D5DE5811257C926ED46E8C326187F6D59\",\n\t\t\"254437119C058469E4D1843C3295257756B8B47415E094D165251565F7BAB46E\",\n\t\t\"5749B5D837C433221EF2EDAAAC62EE726B6BAA4B36B808ED8AAACD65A32A12FA\",\n\t\t\"23F5527EB05E0D5DFA37EA2563BD6A06D8AE2DF3D04C4985762353B9411AC08A\",\n\t\t\"8A61FE0D3F487F5D55A50BA4F0D6121A032D8D5D1CA69F681EDBEFAA6A57250E\",\n\t\t\"684D15A44B5DB5651B46E14A63E4DA52EDDA40BB4AC9C88C9E7BC4317E0B6713\",\n\t\t\"534197D16E8FABA4144668C3DDDFC6FFE171912AE1FF0301E8D151DF11207749\",\n\t\t\"8DD6E3BA8771D5604338FB92606047689767535925F4590B7D2EABD496809455\",\n\t\t\"323538809B4BEA16FC23654767FEC13EB82A61D6AA2A37B92A69C0465CD30FE2\",\n\t\t\"9678EE6210B166986E12E26EACA882E6607954579555D2A42AE494BA4AC5311C\",\n\t\t\"591ACE32D2BB45F3E60D8FC3D2B23B3D259E3AC48BC2B52865DB700A664545D9\",\n\t\t\"C5FF4025159636B560C1022A2DF43FAA5496001653797765D5E6CA8CB17A84BD\",\n\t\t\"71AC1EF9C54D625AFBAD3F373557FAFB76C9F7FDE592FF00E587FF9ABEE76F2C\",\n\t\t\"46A36CE4EFC73EA3EB3F201BF90BFB917FA1BA387EB230B9223C629C32326ABC\",\n\t\t\"2A7A825A3371D2E498D82953E3AE9B767DFCF41933B5B366CF49B8E1C69BE6DE\",\n\t\t\"FC9379F36F5970AB2E31496F484E319ACCA996B4F48C4C6BD6C245D9B69CC5B9\",\n\t\t\"B72DB97D69DEB2E5F6152B1DF9AB9C05AB0BEF58B3B6A878DDFA923B3794BA36\",\n\t\t\"DEE52E2BBFBB62536555F53D9E1A9AA9DDBCA5EEDEFBB6D66FBB7F783E3C378F\",\n\t\t\"9D9F940594E6B66165B6C80331D01B0E1751215995A58EEAB2CA45552018A3F6\",\n\t\t\"8B4DA994E6BED4B174A22C9406361D692F2B28AB2CADDAECA0C942A0207F558D\",\n\t\t\"CBB3FCCE72207BDBC80AC9827A50B6B4A486CE227ADD5E55CD54933C312D92A1\",\n\t\t\"F28062C95DAE85555BB22806088DDEC1B0FD461B3875B6B1FCA8168F4D77403A\",\n\t\t\"373775D3A654DC6961EF8467BE360F1E2D46EAE0A1F2F26E2D2DBDB58EAC077B\",\n\t\t\"1E45650164BB36B836DDE9F260DEB2AADAE1F8F20D7415461DAE6A3A9499C5DC\",\n\t\t\"C5D4C0402D612A088D25A0E730CCAAF69421BB79259E0D6EDCD35D777A1869DD\",\n\t\t\"2D29A924516807E9235DA489B4900ED2807A754803EB635DAC43394A68C6535A\",\n\t\t\"4268E478CA482CDFCD786AA4BC025769A54B4AE433622CAFAA92643818292CA1\",\n\t\t\"B12ED6437CC4431C2CA7FED99FEFEAA0B9FFDB1A6BD49FEC47FE8DD158A3FEC2\",\n\t\t\"7EE4DF688DF5CFFE7C774EFFB9F6ACFFE9DFDFEB3FFEC550316352A3CB7E7497\",\n\t\t\"A57E8F4DFFD8FE8EF4FBDB3978B15BDC3F26E6519AD8BC91FDA46E05A5A95F21\",\n\t\t\"FA61B5CB29CDBDCBC578B61DF61880D1765396F64E66E34697470B7B87077D19\",\n\t\t\"B44AEF7481155DEAA2451378B3BB6C839BE483FBE761AA43D6AA646DDD541305\",\n\t\t\"861DB86E60BCD5C08EEA5AA00567C9F5EDFFDEAEA664A3ABA28E18AC65950C38\",\n\t\t\"655B5C1B1862079754A2995D434781B986FF0BDEB0E95BBA200A7CD931DC8598\",\n\t\t\"9A155A0559DA1AA00366419DE4E681CB25597ED032ECC67FAB43513FD021ED8F\",\n\t\t\"EF50D4DFE890F6FB3A04CF2A89BF61CE37969455A08B34AA77385FD73B29CD4C\",\n\t\t\"00D8EF60DB83DD0F3641D80B614BC49D91ECCDB0DDC2AE0B9B2FECC1B015C38E\",\n\t\t\"0C1B33ECCFB04DC36E8D9BB6F420BDA1424A137687282763FE6FBCFFE68347FA\",\n\t\t\"DA7BC49B24A1A76536D824D6EFE2AEBF67249E83670CEBBF9FE63FCBF98A5206\",\n\t\t\"D6E3A2AA4D9B4048969655BAB2A80C92C3783CE03BE5139FF1B6528AFA18739D\",\n\t\t\"E231820DECCA97A8D147314FC8245B36ABB4D443CE6636634E5E552953E1CA05\",\n\t\t\"D21540985A2ECF0F49DEF0194EEAA8D64299F9F2FCE15398EBE50ED1E2254E16\",\n\t\t\"4595C9168F49AF425C72A25380B1E1331D27A6864F755461B9E05B13342A82C4\",\n\t\t\"45F25391BAC89F64B4FF27D277D0A562268C29A673CA2A5CF975D52EEA25B1B4\",\n\t\t\"C44333D568986751F782255A01CBE45B9E00C58CF41F6B2F030F1046E04B0A79\",\n\t\t\"B08D78B10EDA03BE684D169587F8DF2DA0CEFD408D02EA21794159A96B91BBC4\",\n\t\t\"935F9587A7020BEB6817B5FCFBE914C0CC937E678377EFA9AAA39424B508A617\",\n\t\t\"2A51B572A7781A428668BD7C55A59BF4BFD4B6650318ECD021E8048D46FBE3F2\",\n\t\t\"02E829E913B5386CA9ABA4F63B5DA71EA16CA8AFBE93FF35F15416D9F1DB8210\",\n\t\t\"5B6ECBC378107317D97138A99A101FD2EC6B08972B5D62F2BAB01FF4BCA84361\",\n\t\t\"2BE98A55959BC103A266021EB48FC723A407D097BB5CD47D21DA2B1817FA12B9\",\n\t\t\"614BC1EF975C7A989B49A42D07D0A6A80A22655540DF254E33F57B71E6713051\",\n\t\t\"1220E7EEB0E151CFAF0A4D05F5EA583C18F7D4B0A58BF28030C9837A96D16928\",\n\t\t\"FF451861C8EEF21047AF7283288A30D8EF22ADFCB20D774BB269F9EE5A81A5E9\",\n\t\t\"272DD6D5805B955F06525643A41562545DA8C7808C8A9CA25E1BC125E37DBB6D\",\n\t\t\"E532DBD2B1279C234FE8FF5C7D0C74056EEE216881F476801DA843407BFF9AE8\",\n\t\t\"92514A84905BB7A4A4B6645DC9864DEB6017AA5897BDDC310A63DD5D2E1A7230\",\n\t\t\"6A35FDF7B4FDB5E7DA73EDB9F65C7BAE3DD79E6BCF3FEF53BF8A1ABE73927E13\",\n\t\t\"A5C95C40FDE01D947531E2990B3E0D517F9B2E1209A728FF78293D1DE20A29FE\",\n\t\t\"F35171FC3D7BA5147F7854FC9151F11DA3E28F8E8A3F362AFED35171BCE0330E\",\n\t\t\"600B00B2893EBDCE4569B05C0121FE9C657729A5C1326BA9F843933110E27F6B\",\n\t\t\"DFBB81D24C82D00FE164081F8710BFF4BF16C2EB203440380DC2E09D94E67A08\",\n\t\t\"F743180FE19310421FA9C1124A83EDF210E27B806E08EF85F00084F8BBE2FBF1\",\n\t\t\"4774207CA5441C6799C47328A4BE95FE7BF93F54FEDFC5FFA1F2FF279F4552F8\",\n\t\t\"63780AF915A31FFCA6E5E8F48E724AB3E741310F7FCDF9C7D25EF4F751FE579E\",\n\t\t\"FFB7F0210B5390A586BF61BDFE81BA07420797CF7D2C866DCF8A61E3BFF5A0C8\",\n\t\t\"53D66D0D247C1EF0DB777EB853FB03741B87C4D02A85AFFE48FC2C29DC0DF86F\",\n\t\t\"FFBAF7D7D3A84F7FCDFF7ACD0FD3DFD646622B4041ADF8B0F8432DB5EEC3F20F\",\n\t\t\"93BE8B7FA2FBA39ECB1495B84DACA90DFFE975A3CBF18E3D862843532851CF20\",\n\t\t\"C8A510751CEA0EFC6512FC3512FC6114D43DA89BF0B7F295521829855152D9F8\",\n\t\t\"516553A4BA18AA25BA1A290FF5D52409307F96949F2CA5B3A4F422296D97EAAC\",\n\t\t\"94F21D525820D12F94DAAE90F237619F01AA0150C779245E2324FC0689E74629\",\n\t\t\"7C402A67A5F226890EFEFAF4CD00BF92D26D123FCF48EDFDBB94FF0789BF2352\",\n\t\t\"F9FB5279DC38712C426B777B19A5690168026800D80AB0058006A8002805580B\",\n\t\t\"6007C8064803D001CC07980B9000A005880788038801D000A80094000A000A60\",\n\t\t\"D04D69CE02F4029C728BF8EF407818603FC01E805D00CF003C01F038C00E8026\",\n\t\t\"806A80528048C5888E41FDF35805A55900F12DA09BECDBFF3EDC2F3DA8CBBE4F\",\n\t\t\"772FA046E837548BF1BE0BE2FB77BB239FFA9F3CF6ECFF59FD1EE059DB327277\",\n\t\t\"0E9F6FC767406801B88312F7EB5F00BC0A80DF30B90830113AA4035806B04936\",\n\t\t\"52279512E5753345EC090AEFA79F00F80A00070A7F92334F86A770FFA32E5C7B\",\n\t\t\"AE3DD79E6BCFB5E7DAF3FFBF07ACA952D81FC3752E5DAD6E9BEE21DDBFE8FE5D\",\n\t\t\"F7B2EE635DAFEE9CEEFAC494C48CC4ECC4AD890F24FE34717FE247895F27BA93\",\n\t\t\"9E4B7A35E958D207491F27F149E793E47ABDDEA65FA2AFD46FD1DFAFFF37FD9F\",\n\t\t\"F46FEA0FEB8FEB3FD47FAA3FABEFD75FD18F37680CD71BB4865443A3C16BF899\",\n\t\t\"E15F0D2F1AF61AF6190E1902860B86A02132599B3C3FF997C9FB926F4CB925C5\",\n\t\t\"93F260CAE329BF4C7939E58F296FA61C4A399ED29DF271CAA7296753BE4AB992\",\n\t\t\"4219C71955C689C629C6EB8DB38C37187F62BCD5986C4C37AE35DE69DC64AC35\",\n\t\t\"3E6ADC693C6FFCDA1866BAD16431D59B58D323A6F74D7F310D99AE332F33AF32\",\n\t\t\"6F343F6EFE95B9C37CD23C25353B7565EA33A9BF4D7D2DF583D4ABA9919638CB\",\n\t\t\"32CB1ACB6396A72CCF5AFE60D9678949FB224D9EBE283D3F7D6DFA8674777A75\",\n\t\t\"7A57FA91F453E99FA50BE9E333A666CCC85892F164C6EF33CE650C6544654ECC\",\n\t\t\"5C98B92C73556673E6C399BB32FF90D999F997CC4F32FB3283996840E38F84CB\",\n\t\t\"752ADD645DAA2E4767D7ADD6DDA973EBF6E9F489A6C49589AB139549C9494FE8\",\n\t\t\"7F0F637754FF895E658833DC6E586FB8DFF0A8E129C37F183A0D1F187A0CB264\",\n\t\t\"4DF2ECE48C645BF2F2E4BAE4E6642EF977C9AF261F49EE49FE2CF97CF250F2CF\",\n\t\t\"5376A7F8530EA79C480933C6C2F8688DF38D06E3EDC64263B1D16DDC6BFCD0F8\",\n\t\t\"8DF127268769BBE9B0E91DD349D317A6CB26A579AA79817991F93FCDAF99FDE6\",\n\t\t\"37CD87CC7F3107CC17CC85A9AED4FAD4C753DB52F7C2E87C9EDA9FAAB0CCB0FC\",\n\t\t\"C492665962D968612DFF6AF9BDE5354BBBA5DF12917663DAFCB4BC3447DA9D69\",\n\t\t\"6569D56975693F4F7B21ED3FD3FE98E64F7B2BEDABB409E9F1E937A6EBD3D3D3\",\n\t\t\"97A43B6024DDE9BF4A7F2EFD77E91DE97F491F488FC898949195B13263634645\",\n\t\t\"464D4643C64319BE8C9F65FC6BC67319BFCBA07414C583887EA9BBAA93255E9F\",\n\t\t\"A84DBC1546CB96684FBC3391496C487C30914B7C34F15789AF25B6271E4E3C96\",\n\t\t\"F841E2C7896712CF272A92C6274D4C9A997443D24F92744919494B92DC497549\",\n\t\t\"F727ED48BA98F430C8D6DB295AE31A90844A73A339227572EAF4D49B526F4D4D\",\n\t\t\"4ECD48B5A52E4975A4AE4EE5527F95FA62EAABA97CEA9554CA926D999B6E4D5F\",\n\t\t\"9CBE1C246135F4A039FD85F483E947D3DF49EF0669E849EF4DE7D3CFA6A764A4\",\n\t\t\"655833B2337281F33F66BC937132A327A33783CF88CCD467BA322B32AB33E9CC\",\n\t\t\"2D995B331B329B325B328F6776679ECAECC9ECCD840E5A29AA1782345DBDEE33\",\n\t\t\"1D951899F81CF4E944E2ED492B92D62555243D96F49BA45D49BB93FE9CF44ED2\",\n\t\t\"A7496793AE244DD0CFD61BF42BF56BF425FA7BF4B5FA06FD43FA47F43FD33FA5\",\n\t\t\"DFA9FFADFE15FD6BFA0EFD01587F5FEBA30D330C46C35DC93B927F91FC52726F\",\n\t\t\"F2B494969487C97AFA3A45674C315A61E5DC657CC9F8AAB1C25C6B6E31FFD4FC\",\n\t\t\"8CF925F351581F5F9A07CD51A9B1303649B05296A796A4568044B4A45AD272D3\",\n\t\t\"0AD28AD3DC30D7F7A535A5FD2EED789A3DFDCEF4A6F447D3DF4B673376643C95\",\n\t\t\"F19B8C97335ECBE8CC389F3103564507AC04743CF107B5E374DB752F412F2FEA\",\n\t\t\"6C899D89D393B6C0ACFC22E9DF929E497A3EE9C5A47793AE265DA7D7EA13F473\",\n\t\t\"F5F3F53AE8A3499FA67F50BF5DBF43FFB8FE09FD903ED290609867D0190C0693\",\n\t\t\"A1D0C01A5E054DE237EC371C301C361C35BC63E836CC4E9E0BDA44976C486E02\",\n\t\t\"9DF21CAC91DDA0598E2677279F49BE987C35795E4A724A56CAED291B53AA5276\",\n\t\t\"A5F4805E9962FCA5F105E3CBC60BC65B4D06D32AD326539F69BCF956B3196464\",\n\t\t\"BF3927F52EE8F54BA93BD2F18E4F36F4E1ACAE4F17973837D10032B823F1C9C4\",\n\t\t\"A7135F4CDC9578005A701BB7185F34EE32FA8D6926ABC96E5A6F7A32E3E98C17\",\n\t\t\"337665ECC9D89BB13FE340063AD2314083D66DD1EDD71DD0A9123589E844A3EF\",\n\t\t\"A2D06974313A9DEEACAE5F17D4291255893189F1890989F3A1A534D0C24B13F3\",\n\t\t\"13D72696265624D2A0917B92FA92FA938249BB52F6A4EC8575BF3FE500ACFDA3\",\n\t\t\"29EF80BE3C05FDEA4DE1A16F7D29FD29832941D09B0AA31234A7C618638C33C6\",\n\t\t\"836E4830CE05FDA0030D6132A6811C641B738D4B8D7663BE7135C8C47A63B591\",\n\t\t\"366E3536189B8C2DC6EDC61DC6C78D4F189F343E0DFD5B6F2ABDF6AEFDDA73ED\",\n\t\t\"B9F65C7BAE3DD79E6BCFB5E7FFA3CFFF01504B070808DCFA2BA944000000A000\",\n\t\t\"00504B010214001400080008000799663608DCFA2BA944000000A000000A0000\",\n\t\t\"00000000000000000000000000000047434D444C4E2E444C4C504B0506000000\",\n\t\t\"000100010038000000E14400000000\"\n\t};\n\tprivate static final int UNCOMPRESSED_SIZE = 0xA000;\n\n}\n\nclass ExportAppletDialog extends JFileChooser {\n\tpublic ExportAppletDialog(File dir, Program program) {\n\t\tsuper(dir);\n\t\tsetFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);\n\t\tsetDialogTitle(\"Export Applet\");\n\t\tString className = program.getClass().getName();\n\t\tString programName = className.substring(className.lastIndexOf('.') + 1);\n\t\tsetSelectedFile(new File(dir, programName));\n\t\texportFilesCheckBox = new JCheckBox(\"Export resource files\");\n\t\texportFilesCheckBox.setSelected(true);\n\t\ttarget = program;\n\t}\n\n\tprotected JDialog createDialog(Component parent) {\n\t\tJDialog dialog = super.createDialog(parent);\n\t\tJPanel panel = new JPanel();\n\t\tpanel.setLayout(new FlowLayout(FlowLayout.LEFT));\n\t\tpanel.add(exportFilesCheckBox);\n\t\tdialog.getContentPane().add(panel, BorderLayout.SOUTH);\n\t\tdialog.validate();\n\t\treturn dialog;\n\t}\n\n\tpublic File chooseOutputDirectory() {\n\t\tint result = showSaveDialog(target);\n\t\tif (result == JFileChooser.CANCEL_OPTION) return null;\n\t\treturn getSelectedFile();\n\t}\n\n\tpublic boolean exportFiles() {\n\t\treturn exportFilesCheckBox.isSelected();\n\t}\n\n/* Private instance variables */\n\tprivate JCheckBox exportFilesCheckBox;\n\tprivate Component target;\n\n}\n\nclass ThreadedMenuAction implements Runnable {\n\n\tpublic ThreadedMenuAction(Program program, String action) {\n\t\ttargetProgram = program;\n\t\tactionCommand = action;\n\t}\n\n\tpublic void run() {\n\t\tProgressBarDialog dialog = new ProgressBarDialog(targetProgram);\n\t\ttry {\n\t\t\tif (actionCommand.equals(\"Export Applet\")) {\n\t\t\t\tJTFTools.exportApplet(targetProgram, dialog.getProgressBar());\n\t\t\t} else if (actionCommand.equals(\"Submit Project\")) {\n\t\t\t\tJTFTools.submitProject(targetProgram, dialog.getProgressBar());\n\t\t\t}\n\t\t} catch (Exception ex) {\n\t\t\tdialog.setVisible(false);\n\t\t\tIOModel io = targetProgram.getDialog();\n\t\t\tif (io == null) io = targetProgram.getConsole();\n\t\t\tif (io == null) io = IOConsole.SYSTEM_CONSOLE;\n\t\t\tString msg = ex.getMessage();\n\t\t\tif (!(ex instanceof ErrorException)) {\n\t\t\t\tmsg = \"\" + ex;\n\t\t\t\tStringWriter wr = new StringWriter();\n\t\t\t\tPrintWriter pwr = new PrintWriter(wr);\n\t\t\t\tex.printStackTrace(pwr);\n\t\t\t\tpwr.close();\n\t\t\t\ttry {\n\t\t\t\t\tBufferedReader rd = new BufferedReader(new StringReader(wr.toString()));\n\t\t\t\t\trd.readLine();\n\t\t\t\t\tmsg += rd.readLine();\n\t\t\t\t} catch (IOException ignore) {\n\t\t\t\t\t/* Empty */\n\t\t\t\t}\n\t\t\t}\n\t\t\tio.showErrorMessage(msg);\n\t\t}\n\t}\n\n\tprivate Program targetProgram;\n\tprivate String actionCommand;\n\n}\n\n/* Package class: MailStream */\n/**\n * This class creates a <code>PrintStream</code> subclass that allows the client to send a\n * message using the standard RFC 2822 message format.  Access to this class is obtained\n * through the static methods in <code>JTFTools</code>.  The class is not exported\n * simply to avoid proliferation of classes in the <code>acm.util</code> package.\n */\nclass MailStream extends PrintStream {\n\n/* Constructor: MailStream(smtpServer, from, to) */\n/**\n * Creates a <code>PrintStream</code> subclass that allows the client to send a\n * message.\n *\n * @usage MailStream mail = new MailStream(smtpServer, from, to);\n * @param smtpServer A string indicating the host name of the SMTP server\n * @param from A string indicating the e-mail address of the sender\n * @param to A string indicating the e-mail address of this recipient\n */\n\tpublic MailStream(String smtpServer, String from, String to) {\n\t\tsuper(new NullOutputStream());\n\t\ttry {\n\t\t\tsender = from;\n\t\t\trecipient = to;\n\t\t\tsocket = new Socket(smtpServer, SMTP_PORT);\n\t\t\tout = new BufferedOutputStream(socket.getOutputStream());\n\t\t\tin = new BufferedInputStream(socket.getInputStream());\n\t\t\tverify(\"220\");\n\t\t\tprintln(\"HELO \" + InetAddress.getLocalHost().getHostName());\n\t\t\tverify(\"250\");\n\t\t\tprintln(\"MAIL FROM: \" + sender);\n\t\t\tverify(\"250\");\n\t\t\tStringTokenizer tokenizer = new StringTokenizer(to, \" ,\");\n\t\t\twhile (tokenizer.hasMoreTokens()) {\n\t\t\t\tprintln(\"RCPT TO: \" + tokenizer.nextToken());\n\t\t\t\tverify(\"250\");\n\t\t\t}\n\t\t\tprintln(\"DATA\");\n\t\t\tverify(\"354\");\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/** Prints a <code>boolean</code> value */\n\tpublic void print(boolean b) {\n\t\tprint(\"\" + b);\n\t}\n\n/** Prints a <code>char</code> value */\n\tpublic void print(char c) {\n\t\tprint(\"\" + c);\n\t}\n\n/** Prints a <code>int</code> value */\n\tpublic void print(int i) {\n\t\tprint(\"\" + i);\n\t}\n\n/** Prints a <code>long</code> value */\n\tpublic void print(long l) {\n\t\tprint(\"\" + l);\n\t}\n\n/** Prints a <code>float</code> value */\n\tpublic void print(float f) {\n\t\tprint(\"\" + f);\n\t}\n\n/** Prints a <code>double</code> value */\n\tpublic void print(double d) {\n\t\tprint(\"\" + d);\n\t}\n\n/** Prints the contents of a character array */\n\tpublic void print(char[] array) {\n\t\tprint(new String(array));\n\t}\n\n/** Prints a <code>String</code> value */\n\tpublic void print(String s) {\n\t\twrite(s);\n\t}\n\n/** Prints any object */\n\tpublic void print(Object obj) {\n\t\tprint(\"\" + obj);\n\t}\n\n/** Terminates the current line */\n\tpublic void println() {\n\t\ttry {\n\t\t\tout.write('\\n');\n\t\t\tout.flush();\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/** Prints a <code>boolean</code> value and terminates the line */\n\tpublic void println(boolean b) {\n\t\tprint(b);\n\t\tprintln();\n\t}\n\n/** Prints a <code>char</code> value and terminates the line */\n\tpublic void println(char c) {\n\t\tprint(c);\n\t\tprintln();\n\t}\n\n/** Prints a <code>int</code> value and terminates the line */\n\tpublic void println(int i) {\n\t\tprint(i);\n\t\tprintln();\n\t}\n\n/** Prints a <code>long</code> value and terminates the line */\n\tpublic void println(long l) {\n\t\tprint(l);\n\t\tprintln();\n\t}\n\n/** Prints a <code>float</code> value and terminates the line */\n\tpublic void println(float f) {\n\t\tprint(f);\n\t\tprintln();\n\t}\n\n/** Prints a <code>double</code> value and terminates the line */\n\tpublic void println(double d) {\n\t\tprint(d);\n\t\tprintln();\n\t}\n\n/** Prints a character array and terminates the line */\n\tpublic void println(char[] array) {\n\t\tprint(array);\n\t\tprintln();\n\t}\n\n/** Prints a <code>String</code> value and terminates the line */\n\tpublic void println(String s) {\n\t\tprint(s);\n\t\tprintln();\n\t}\n\n/** Prints any object and terminates the line */\n\tpublic void println(Object x) {\n\t\tprint(x);\n\t\tprintln();\n\t}\n\n/** Writes a single character to the output stream */\n\tpublic void write(int c) {\n\t\ttry {\n\t\t\tif (c > 0xFF) {\n\t\t\t\tthrow new ErrorException(\"Illegal character in mail stream\");\n\t\t\t}\n\t\t\tout.write(c);\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/** Writes a segment of a character array to the output stream */\n\tpublic void write(char[] buffer, int offset, int length) {\n\t\ttry {\n\t\t\tfor (int i = 0; i < length; i++) {\n\t\t\t\tchar c = buffer[offset + i];\n\t\t\t\tif (c > 0xFF) {\n\t\t\t\t\tthrow new ErrorException(\"Illegal character in mail stream\");\n\t\t\t\t}\n\t\t\t\tout.write(c);\n\t\t\t}\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/** Writes the entire character array to the output stream */\n\tpublic void write(char[] buffer) {\n\t\twrite(buffer, 0, buffer.length);\n\t}\n\n/** Writes a <code>String</code> to the output stream */\n\tpublic void write(String s) {\n\t\ttry {\n\t\t\tfor (int i = 0; i < s.length(); i++) {\n\t\t\t\tchar c = s.charAt(i);\n\t\t\t\tif (c > 0xFF) {\n\t\t\t\t\tthrow new ErrorException(\"Illegal character in mail stream\");\n\t\t\t\t}\n\t\t\t\tout.write(c);\n\t\t\t}\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/**\n * Checks for errors in the stream.  This method always returns <code>false</code>\n * because all errors are reported using the <code>ErrorException<code> class.\n */\n\tpublic boolean checkError() {\n\t\treturn false;\n\t}\n\n/**\n * Flushes the data in the output stream.\n */\n\tpublic void flush() {\n\t\ttry {\n\t\t\tout.flush();\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/**\n * Closes the output stream and sends the message.\n */\n\tpublic void close() {\n\t\ttry {\n\t\t\tprintln(\".\");\n\t\t\tverify(\"250\");\n\t\t\tout.close();\n\t\t\tsocket.close();\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/**\n * Cancels the current message without sending it.\n */\n\tpublic void cancel() {\n\t\ttry {\n\t\t\tsocket.close();\n\t\t\tout.close();\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/**\n * Adds the standard \"To\", \"From\", \"Subject\", and \"Date\" headers to the message.\n */\n\tpublic void sendStandardHeaders(String senderName, String subject) {\n\t\tprintln(\"To: \" + recipient);\n\t\tif (senderName != null && senderName.length() != 0) {\n\t\t\tboolean requiresQuotes = false;\n\t\t\tfor (int i = 0; i < senderName.length(); i++) {\n\t\t\t\tchar ch = senderName.charAt(i);\n\t\t\t\tif (ch != ' ' && ch != '-' && !Character.isJavaIdentifierPart(ch)) {\n\t\t\t\t\trequiresQuotes = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (requiresQuotes) {\n\t\t\t\tsender = '\"' + senderName + '\"' + \" <\" + sender + \">\";\n\t\t\t} else {\n\t\t\t\tsender = senderName + \" <\" + sender + \">\";\n\t\t\t}\n\t\t}\n\t\tprintln(\"From: \" + sender);\n\t\tif (subject != null && subject.length() != 0) {\n\t\t\tprintln(\"Subject: \" + subject);\n\t\t}\n\t\tprintln(\"Date: \" + RFC2822_DATE_FORMAT.format(new Date()));\n\t}\n\n/*\n * Waits for a response from the server and makes sure it begins with the\n * specified pattern.\n */\n\tprivate void verify(String pattern) {\n\t\ttry {\n\t\t\tString response = \"\";\n\t\t\twhile (true) {\n\t\t\t\tint c = in.read();\n\t\t\t\tif (c == -1 || c == '\\n') break;\n\t\t\t\tresponse += (char) c;\n\t\t\t}\n\t\t\tif (pattern != null && !response.startsWith(pattern)) {\n\t\t\t\tthrow new ErrorException(\"Unexpected SMTP response: \" + response);\n\t\t\t}\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/* Private constants */\n\tprivate static final int SMTP_PORT = 25;\n\tprivate static SimpleDateFormat RFC2822_DATE_FORMAT = new SimpleDateFormat(\"EEE, dd MMM yyyy HH:mm:ss z\", Locale.US);\n\n/* Private instance variables */\n\tprivate Socket socket;\n\tprivate InputStream in;\n\tprivate OutputStream out;\n\tprivate String sender;\n\tprivate String recipient;\n\n}\n\n/* Package class: HexByteOutputStream */\n/**\n * This class creates an <code>OutputStream</code> subclass that converts data\n * to hex bytes.  The class is not exported simply to avoid proliferation of\n * classes in the <code>acm.util</code> package.\n */\nclass HexByteOutputStream extends OutputStream {\n\n/* Constructor: HexByteOutputStream(printStream) */\n/**\n * Creates an <code>OutputStream</code> subclass that converts data to hex bytes.\n *\n * @usage HexByteOutputStream out = new HexByteOutputStream(printStream);\n * @param printStream The underlying <code>PrintStream</code> to which data is written\n */\n\tpublic HexByteOutputStream(PrintStream printStream) {\n\t\tout = printStream;\n\t\tout.flush();\n\t\tcolumnCount = 0;\n\t}\n\n/** Writes a single byte to the output stream */\n\tpublic void write(int b) throws IOException {\n\t\tString hex = Integer.toHexString(0x100 + (b & 0xFF)).toUpperCase();\n\t\tout.write(hex.charAt(1));\n\t\tout.write(hex.charAt(2));\n\t\tcolumnCount += 2;\n\t\tif (columnCount >= COLUMNS) {\n\t\t\tcolumnCount = 0;\n\t\t\tout.println();\n\t\t}\n\t}\n\n/** Flushes data in the output stream */\n\tpublic void flush() {\n\t\tout.flush();\n\t}\n\n/** Closes the output stream */\n\tpublic void close() {\n\t\tout.close();\n\t}\n\n/* Private constants */\n\tprivate static final int COLUMNS = 76;\n\n/* Private instance variables */\n\tprivate int columnCount;\n\tprivate PrintStream out;\n\n}\n\n/* Package class: Base64OutputStream */\n/**\n * This class creates an <code>OutputStream</code> subclass that converts data to\n * its Base64 encoding.  This encoding transmits three bytes of binary data as a\n * series of four characters, each of which supplies six bits of the value.\n * The class is not exported simply to avoid proliferation of classes in the\n * <code>acm.util</code> package.\n */\nclass Base64OutputStream extends OutputStream {\n\n/* Constructor: Base64OutputStream(printStream) */\n/**\n * Creates an <code>OutputStream</code> subclass that converts data to\n * its Base64 encoding.\n *\n * @usage Base64OutputStream out = new Base64OutputStream(printStream);\n * @param printStream The underlying <code>PrintStream</code> to which data is written\n */\n\tpublic Base64OutputStream(PrintStream printStream) {\n\t\tout = printStream;\n\t\tout.flush();\n\t\tbyteCount = 0;\n\t\tcolumnCount = 0;\n\t\tbuffer = 0;\n\t}\n\n/** Writes a single byte to the output stream */\n\tpublic void write(int b) throws IOException {\n\t\tbuffer = buffer << 8 | (b & 0xFF);\n\t\tbyteCount++;\n\t\tif (byteCount == 3) {\n\t\t\tout.write(BASE64[(buffer >> 18) & 0x3F]);\n\t\t\tout.write(BASE64[(buffer >> 12) & 0x3F]);\n\t\t\tout.write(BASE64[(buffer >> 6) & 0x3F]);\n\t\t\tout.write(BASE64[buffer & 0x3F]);\n\t\t\tcolumnCount += 4;\n\t\t\tif (columnCount >= COLUMNS) {\n\t\t\t\tcolumnCount = 0;\n\t\t\t\tout.println();\n\t\t\t}\n\t\t\tbyteCount = 0;\n\t\t\tbuffer = 0;\n\t\t}\n\t}\n\n/** Flushes data in the output stream */\n\tpublic void flush() {\n\t\tout.flush();\n\t}\n\n/** Closes the output stream */\n\tpublic void close() {\n\t\tpad();\n\t\tout.close();\n\t}\n\n/** Pads the data to ensure that there is a valid Base64 sequence */\n\tpublic void pad() {\n\t\tswitch (byteCount) {\n\t\t  case 0:\n\t\t\t/* Empty */\n\t\t\tbreak;\n\t\t  case 1:\n\t\t\tout.write(BASE64[(buffer >> 2) & 0x3F]);\n\t\t\tout.write(BASE64[(buffer << 4) & 0x3F]);\n\t\t\tout.write('=');\n\t\t\tout.write('=');\n\t\t\tbreak;\n\t\t  case 2:\n\t\t\tout.write(BASE64[(buffer >> 10) & 0x3F]);\n\t\t\tout.write(BASE64[(buffer >> 4) & 0x3F]);\n\t\t\tout.write(BASE64[(buffer << 2) & 0x3F]);\n\t\t\tout.write('=');\n\t\t\tbreak;\n\t\t}\n\t\tout.println();\n\t\tout.println();\n\t}\n\n/* Private constants */\n\tprivate static final int COLUMNS = 76;\n\tprivate static final char[] BASE64 = {\n\t\t'A','B','C','D','E','F','G','H',\n\t\t'I','J','K','L','M','N','O','P',\n\t\t'Q','R','S','T','U','V','W','X',\n\t\t'Y','Z','a','b','c','d','e','f',\n\t\t'g','h','i','j','k','l','m','n',\n\t\t'o','p','q','r','s','t','u','v',\n\t\t'w','x','y','z','0','1','2','3',\n\t\t'4','5','6','7','8','9','+','/',\n\t};\n\n/* Private instance variables */\n\tprivate int buffer;\n\tprivate int columnCount;\n\tprivate int byteCount;\n\tprivate PrintStream out;\n\n}\n\n/* Package class: NullOutputStream */\n/**\n * This class represents an <code>OutputStream</code> that ignores all data,\n * much like the device <code>/dev/null</code> on a Unix system.  The reason\n * for including this class is that some older unstuffing programs cannot\n * read ZIP files that write the sizes and checksum at the end of the entry\n * data.  By writing the entry to a <code>NullOutputStream</code> first,\n * the system can calculate the correct values before writing them to the\n * actual <code>ZipOutputStream</code>.  Note that this strategy means that\n * each file in the submission is compressed twice.  Caching this result\n * would save time at the expense of memory, but could easily fail for\n * large image files, for example.\n */\nclass NullOutputStream extends OutputStream {\n\tpublic void write(int b) { }\n\tpublic void write(byte[] b) { }\n\tpublic void write(byte[] b, int off, int len) { }\n\tpublic void flush() { }\n\tpublic void close() { }\n}\n\n/* Package class: SubmitOptions */\n/**\n * This class keeps track of the options used in the \"Submit Options\" menu.\n */\nclass SubmitOptions implements ActionListener, DocumentListener {\n\n/* Constructor: SubmitOptions(program) */\n/**\n * Creates a <code>SubmitOptions</code> for the program, filling in\n * any fields that can be determined using reflection.\n */\n\tpublic SubmitOptions(Program program) {\n\t\tparent = program;\n\t\tauthorNameField = new JTextField();\n\t\tauthorEMailField = new JTextField();\n\t\tinstructorEMailField = new JTextField();\n\t\tsmtpServerField = new JTextField();\n\t\tcancelButton = new JButton(\"Cancel\");\n\t\tsubmitButton = new JButton(\"Submit\");\n\t\tauthorEMailField.getDocument().addDocumentListener(this);\n\t\tinstructorEMailField.getDocument().addDocumentListener(this);\n\t\tsmtpServerField.getDocument().addDocumentListener(this);\n\t\tcancelButton.addActionListener(this);\n\t\tsubmitButton.addActionListener(this);\n\t\tinitPreferences(program);\n\t}\n\n/* Returns the author name */\n\tpublic String getAuthorName() {\n\t\treturn authorNameField.getText().trim();\n\t}\n\n/* Returns the author email address */\n\tpublic String getAuthorEMail() {\n\t\treturn authorEMailField.getText().trim();\n\t}\n\n/* Returns the submission email address */\n\tpublic String getSubmissionEMail() {\n\t\treturn instructorEMailField.getText().trim();\n\t}\n\n/* Returns the SMTP server */\n\tpublic String getSMTPServer() {\n\t\treturn smtpServerField.getText().trim();\n\t}\n\n/* Returns <code>true</code> if all the necessary fields are filled in */\n\tpublic boolean isComplete() {\n\t\tif (getAuthorEMail().indexOf('@') == -1) return false;\n\t\tif (getSubmissionEMail().indexOf('@') == -1) return false;\n\t\tif (getSMTPServer().length() == 0) return false;\n\t\treturn true;\n\t}\n\n/*\n * Pops up a dialog to request the fields and waits for it to complete.\n * Returns <code>true</code> if the user activates the dialog by clicking\n * <code>Submit</code>.\n */\n\tpublic boolean popup() {\n\t\tFrame frame = JTFTools.getEnclosingFrame(parent);\n\t\tif (frame == null) return false;\n\t\tdialog = new JDialog(frame, \"Submit Project Options\", true);\n\t\tContainer contentPane = dialog.getContentPane();\n\t\tcontentPane.setLayout(new TableLayout(6, 2, 0, 4));\n\t\tcontentPane.add(new JLabel(\"Instructor email \", JLabel.RIGHT));\n\t\tcontentPane.add(instructorEMailField, \"width=\" + FIELD_WIDTH);\n\t\tcontentPane.add(new JLabel(\"Author name \", JLabel.RIGHT));\n\t\tcontentPane.add(authorNameField, \"width=\" + FIELD_WIDTH);\n\t\tcontentPane.add(new JLabel(\"Author email \", JLabel.RIGHT));\n\t\tcontentPane.add(authorEMailField, \"width=\" + FIELD_WIDTH);\n\t\tcontentPane.add(new JLabel(\"SMTP server \", JLabel.RIGHT));\n\t\tcontentPane.add(smtpServerField, \"width=\" + FIELD_WIDTH);\n\t\tJPanel buttonPanel = new JPanel();\n\t\tbuttonPanel.setLayout(new FlowLayout());\n\t\tbuttonPanel.add(cancelButton);\n\t\tbuttonPanel.add(submitButton);\n\t\tcontentPane.add(new JLabel(\"\"));\n\t\tcontentPane.add(buttonPanel, \"top=10\");\n\t\tdialog.setSize(DIALOG_WIDTH, DIALOG_HEIGHT);\n\t\tsubmitFlag = false;\n\t\tsubmitButton.setEnabled(isComplete());\n\t\tdialog.setVisible(true);\n\t\treturn submitFlag;\n\t}\n\n/* Responds to an action event */\n\tpublic void actionPerformed(ActionEvent e) {\n\t\tsubmitFlag = (e.getSource() == submitButton);\n\t\tdialog.setVisible(false);\n\t}\n\n/* Responds to any changes in the text fields */\n\tpublic void changedUpdate(DocumentEvent e) {\n\t\tsubmitButton.setEnabled(isComplete());\n\t}\n\n\tpublic void removeUpdate(DocumentEvent e) {\n\t\tsubmitButton.setEnabled(isComplete());\n\t}\n\n\tpublic void insertUpdate(DocumentEvent e) {\n\t\tsubmitButton.setEnabled(isComplete());\n\t}\n\n/* Tries to initialize the fields by reflection */\n\tprivate void initPreferences(Program program) {\n\t\tinstructorEMailField.setText(getDefaultField(\"INSTRUCTOR_EMAIL\", program));\n\t\tauthorNameField.setText(getDefaultField(\"AUTHOR_NAME\", program));\n\t\tString sender = getDefaultField(\"AUTHOR_EMAIL\", program);\n\t\tif (sender.length() == 0) {\n\t\t\tsender = System.getProperty(\"user.name\");\n\t\t\tif (sender == null) {\n\t\t\t\tsender = \"\";\n\t\t\t} else {\n\t\t\t\tString localHost = JTFTools.getLocalHostName();\n\t\t\t\tif (localHost != null) sender += \"@\" + localHost;\n\t\t\t}\n\t\t}\n\t\tauthorEMailField.setText(sender);\n\t\tString smtp = getDefaultField(\"SMTP_SERVER\", program);\n\t\tif (smtp.length() == 0) {\n\t\t\tsmtp = System.getProperty(\"mail.smtp.host\");\n\t\t\tif (smtp == null) {\n\t\t\t\tString localHost = JTFTools.getLocalHostName();\n\t\t\t\tif (localHost == null) {\n\t\t\t\t\tsmtp = \"\";\n\t\t\t\t} else {\n\t\t\t\t\tsmtp = \"smtp.\" + localHost.substring(localHost.indexOf('.') + 1);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tnew Socket(smtp, SMTP_PORT).close();\n\t\t\t\t\t} catch (Exception ex) {\n\t\t\t\t\t\tsmtp = \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tsmtpServerField.setText(smtp);\n\t}\n\n/* Looks up a field by name in the program class */\n\tprivate String getDefaultField(String name, Program program) {\n\t\ttry {\n\t\t\tField field = program.getClass().getField(name);\n\t\t\tString value = (String) field.get(program);\n\t\t\tif (value != null && value.trim().length() != 0) return value;\n\t\t} catch (Exception ex) {\n\t\t\t/* Empty */\n\t\t}\n\t\treturn \"\";\n\t}\n\n/* Private constants */\n\tprivate static final int FIELD_WIDTH = 300;\n\tprivate static final int DIALOG_WIDTH = 500;\n\tprivate static final int DIALOG_HEIGHT = 230;\n\tprivate static final int SMTP_PORT = 25;\n\n/* Private instance variables */\n\tprivate Component parent;\n\tprivate JDialog dialog;\n\tprivate JTextField authorNameField;\n\tprivate JTextField authorEMailField;\n\tprivate JTextField instructorEMailField;\n\tprivate JTextField smtpServerField;\n\tprivate JButton cancelButton;\n\tprivate JButton submitButton;\n\tprivate boolean submitFlag;\n\n}\n\n/* Package class: ProgressBarDialog */\n/**\n * This class implements the dialog used to track the progress of the\n * \"ExportApplet\" and \"Submit Program\" menu options.\n */\nclass ProgressBarDialog extends JDialog implements ActionListener {\n\n/* Constructor: ProgressBarDialog(program) */\n/**\n * Creates a dialog containing a progress bar and a <code>Cancel</code> button.\n */\n\tpublic ProgressBarDialog(Program program) {\n\t\tsuper(JTFTools.getEnclosingFrame(program), \"Progress\", false);\n\t\tContainer contentPane = getContentPane();\n\t\tcontentPane.setLayout(new TableLayout(2, 1));\n\t\tprogressBar = new JProgressBar();\n\t\tcontentPane.add(progressBar, \"weightx=1 left=5 right=5 height=\" + PROGRESS_BAR_HEIGHT);\n\t\tJButton cancelButton = new JButton(\"Cancel\");\n\t\tcancelButton.addActionListener(this);\n\t\tcontentPane.add(cancelButton, \"top=10 fill=NONE\");\n\t\tRectangle programBounds = program.getBounds();\n\t\tint x = programBounds.x + (programBounds.width - DIALOG_WIDTH) / 2;\n\t\tint y = programBounds.y + (programBounds.height - DIALOG_HEIGHT) / 2;\n\t\tsetBounds(x, y, DIALOG_WIDTH, DIALOG_HEIGHT);\n\t}\n\n/* Returns the progress bar */\n\tpublic JProgressBar getProgressBar() {\n\t\treturn progressBar;\n\t}\n\n/* Responds to an action event */\n\tpublic void actionPerformed(ActionEvent e) {\n\t\tprogressBar.setString(\"Cancel\");\n\t\tsetVisible(false);\n\t}\n\n/* Checks to see if a progress bar has been cancelled */\n\tpublic static boolean hasBeenCancelled(JProgressBar bar) {\n\t\tif (bar == null) return false;\n\t\tString str = bar.getString();\n\t\treturn str != null && str.equals(\"Cancel\");\n\t}\n\n/* Pops up the dialog if the progress bar is included inside one */\n\tpublic static void popup(JProgressBar bar) {\n\t\tComponent comp = bar;\n\t\twhile (comp != null) {\n\t\t\tif (comp instanceof ProgressBarDialog) {\n\t\t\t\tcomp.setVisible(true);\n\t\t\t\tcomp.repaint();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcomp = comp.getParent();\n\t\t}\n\t}\n\n/* Dismisses the dialog if the progress bar is included inside one */\n\tpublic static void dismiss(JProgressBar bar) {\n\t\tComponent comp = bar;\n\t\twhile (comp != null) {\n\t\t\tif (comp instanceof ProgressBarDialog) {\n\t\t\t\tcomp.setVisible(false);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcomp = comp.getParent();\n\t\t}\n\t}\n\n/* Private constants */\n\tprivate static final int DIALOG_WIDTH = 250;\n\tprivate static final int DIALOG_HEIGHT = 90;\n\tprivate static final int PROGRESS_BAR_HEIGHT = 25;\n\n/* Private instance variables */\n\tprivate JProgressBar progressBar;\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/util/MediaTools.java",
    "content": "/*\n * @(#)MediaTools.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Bug fix 30-Sep-06 (ESR, JTFBug 2006-002)\n//   1. Fixed bug in which compiled images/clips did not get stored.\n//\n// Feature enhancement 11-Jan-07 (ESR)\n//   1. Added methods to convert back and forth from images to pixel arrays.\n//\n// Feature enhancement 2-Mar-07 (ESR)\n//   1. Added openDataFile methods to support reading files from applets.\n//\n// Code cleanup 28-May-07 (ESR)\n//   1. Added generic type tags.\n//\n// Feature enhancement 12-Jun-08 (ESR)\n//   1. Changed sound methods to use the SoundClip class.\n//   2. Changed the defaults so that caching is ordinarily disabled.\n//\n// Feature enhancement 25-Nov-08 (ESR)\n//   1. Added support for saving image files.\n\npackage acm.util;\n\nimport java.applet.*;\nimport java.awt.*;\nimport java.awt.image.*;\nimport java.io.*;\nimport java.lang.reflect.*;\nimport java.net.*;\nimport java.util.*;\nimport javax.imageio.*;\nimport javax.imageio.stream.*;\n\n/* Class: MediaTools */\n/**\n * This class implements a standard mechanism for loading images, sounds, and\n * data files from the resources associated with a jar file.\n */\npublic class MediaTools {\n\n/* Constant: DEFAULT_IMAGE_PATH */\n/**\n * The list of directories scanned for images, separated by colons.\n */\n\tpublic static final String DEFAULT_IMAGE_PATH = \".:images\";\n\n/* Constant: DEFAULT_AUDIO_PATH */\n/**\n * The list of directories scanned for audio clips, separated by colons.\n */\n\tpublic static final String DEFAULT_AUDIO_PATH = \".:sounds\";\n\n/* Constant: DEFAULT_DATAFILE_PATH */\n/**\n * The list of directories scanned for data files, separated by colons.\n */\n\tpublic static final String DEFAULT_DATAFILE_PATH = \".:datafiles\";\n\n/* Private constructor: MediaTools */\n/**\n * Prevents anyone else from constructing this class.\n */\n\tprivate MediaTools() {\n\t\t/* Empty */\n\t}\n\n/* Static method: loadImage(name) */\n/**\n * Searches the default image search path for an image with the specified name\n * and then loads it to create an <code>Image</code>.  The search process\n * consists of the following steps:\n *\n * <p><ol>\n * <li>Check to see if an image with that name has already been defined.  If\n *     so, return that image.<p>\n *\n * <li>Check to see if there is a resource available with that name whose\n *     contents can be read as an <code>Image</code>.  If so, read the image\n *     from the resource file.<p>\n *\n * <li>Load the image from a file with the specified name, relative to the\n *     application directory or the applet code base.\n * </ol><p>\n *\n * The second and third steps are repeated for each element of the image\n * search path, which consists of a list of directories separated by colons.\n *\n * <p>Unlike the <code>getImage</code> method in the <code>Applet</code> class,\n * <code>loadImage</code> waits for an image to be fully loaded before returning.\n *\n * @usage Image image = MediaTools.loadImage(name);\n * @param name The name of the image\n * @return A fully loaded <code>Image</code> object\n */\n\tpublic static Image loadImage(String name) {\n\t\treturn loadImage(name, DEFAULT_IMAGE_PATH);\n\t}\n\n/* Static method: loadImage(name, path) */\n/**\n * Searches for an image with the given name and loads it to create an\n * <code>Image</code>.  Its operation is identical to the single-argument\n * <a href=\"#loadImage(String)\"><code>loadImage</code></a> call except\n * in that this version allows the client to specify the search path\n * explicitly.\n *\n * @usage Image image = MediaTools.loadImage(name, path);\n * @param name The name of the image\n * @param path A string of directories names separated by colons\n * @return A fully loaded <code>Image</code> object\n * @noshow\n */\n\tpublic static Image loadImage(String name, String path) {\n\t\tImage image = imageTable.get(name);\n\t\tif (image != null) return image;\n\t\tif (name.startsWith(\"http:\")) {\n\t\t\ttry {\n\t\t\t\timage = loadImage(new URL(name));\n\t\t\t\tif (cachingEnabled) imageTable.put(name, image);\n\t\t\t\treturn image;\n\t\t\t} catch (MalformedURLException ex) {\n\t\t\t\tthrow new ErrorException(\"loadImage: Malformed URL\");\n\t\t\t}\n\t\t}\n\t\tToolkit toolkit = Toolkit.getDefaultToolkit();\n\t\tStringTokenizer tokenizer = new StringTokenizer(path, \":\");\n\t\twhile (image == null && tokenizer.hasMoreTokens()) {\n\t\t\tString prefix = tokenizer.nextToken();\n\t\t\tprefix = (prefix.equals(\".\")) ? \"\" : prefix + \"/\";\n\t\t\tURL url = null;\n\t\t\ttry {\n\t\t\t\turl = RESOURCE_CLASS.getResource(\"/\" + prefix + name);\n\t\t\t\tURLConnection connection = url.openConnection();\n\t\t\t\tif (connection == null || connection.getContentLength() <= 0) {\n\t\t\t\t\turl = null;\n\t\t\t\t}\n\t\t\t} catch (Exception ex) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t\tif (url == null) {\n\t\t\t\tApplet applet = JTFTools.getApplet();\n\t\t\t\tif (applet != null) {\n\t\t\t\t\tURL codeBase = applet.getCodeBase();\n\t\t\t\t\tif (codeBase != null) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\turl = new URL(codeBase, prefix + name);\n\t\t\t\t\t\t} catch (MalformedURLException ex) {\n\t\t\t\t\t\t\t/* Empty */\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (url == null) {\n\t\t\t\ttry {\n\t\t\t\t\tif (new File(prefix + name).canRead()) {\n\t\t\t\t\t\timage = toolkit.getImage(prefix + name);\n\t\t\t\t\t}\n\t\t\t\t} catch (SecurityException ex) {\n\t\t\t\t\t/* Empty */\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\timage = loadImage(url, false);\n\t\t\t}\n\t\t}\n\t\tif (image == null) throw new ErrorException(\"Cannot find an image named \" + name);\n\t\tloadImage(image);\n\t\tif (cachingEnabled) imageTable.put(name, image);\n\t\treturn image;\n\t}\n\n/* Static method: loadImage(url) */\n/**\n * Loads an image from the specified URL.\n *\n * @usage Image image = MediaTools.loadImage(url);\n * @param url The url containing the image\n * @return A fully loaded <code>Image</code> object\n */\n\tpublic static Image loadImage(URL url) {\n\t\treturn loadImage(url, true);\n\t}\n\n/* Static method: loadImage(image) */\n/**\n * Makes sure that the image is fully loaded before returning.\n *\n * @usage image = MediaTools.loadImage(image);\n * @param image The <code>Image</code> which may not yet be loaded\n * @return The same <code>Image</code> after ensuring that it is fully loaded\n */\n\tpublic static Image loadImage(Image image) {\n\t\tMediaTracker tracker = new MediaTracker(JTFTools.createEmptyContainer());\n\t\ttracker.addImage(image, 0);\n\t\ttry {\n\t\t\ttracker.waitForID(0);\n\t\t} catch (InterruptedException ex) {\n\t\t\tthrow new ErrorException(\"Image loading process interrupted\");\n\t\t}\n\t\treturn image;\n\t}\n\n/* Static method: defineImage(name, image) */\n/**\n * Inserts the given image into the image table under the specified name.\n *\n * @usage MediaTools.defineImage(name, image);\n * @param name The name for the image\n * @param image The image to be stored in the table\n */\n\tpublic static void defineImage(String name, Image image) {\n\t\timageTable.put(name, image);\n\t}\n\n/* Static method: flushImage(name) */\n/**\n * Removes the image with the given name from the cache, allowing it\n * to be freed by the garbage collector.\n *\n * @usage MediaTools.flushImage(name);\n * @param name The name for the image\n */\n\tpublic static void flushImage(String name) {\n\t\timageTable.remove(name);\n\t}\n\n/* Static method: createImage(array) */\n/**\n * Generates an image from a two-dimensional array of pixel values.  As in\n * standard image processing applications, the array is indexed so that the\n * first subscript determines the row and the second determines the column.\n *\n * @usage Image image = MediaTools.createImage(array);\n * @param array A two-dimensional array of <code>int</code>s representing the pixels\n * @return An <code>Image</code> object\n */\n\tpublic static Image createImage(int[][] array) {\n\t\tint height = array.length;\n\t\tint width = array[0].length;\n\t\tint[] pixels = new int[width * height];\n\t\tfor (int i = 0; i < height; i++) {\n\t\t\tSystem.arraycopy(array[i], 0, pixels, i * width, width);\n\t\t}\n\t\treturn createImage(pixels, width, height);\n\t}\n\n/* Static method: createImage(pixels, width, height) */\n/**\n * Generates an image from a single-dimensional array of pixel values.  The\n * pixel array is stored in row-major order, which means that the pixels for\n * the entire first row come before the pixels in the second row, and so on.\n *\n * @usage Image image = MediaTools.createImage(pixels, width, height);\n * @param pixels An array of <code>int</code>s representing the pixels\n * @param width The width of the image\n * @param height The height of the image\n * @return An <code>Image</code> object\n */\n\tpublic static Image createImage(int[] pixels, int width, int height) {\n\t\tImage image = Toolkit.getDefaultToolkit().createImage(new MemoryImageSource(width, height, pixels, 0, width));\n\t\tloadImage(image);\n\t\treturn image;\n\t}\n\n/* Static method: createImage(in) */\n/**\n * Generates an image from an input stream containing the data bytes for the\n * image formatted in image/gif format.\n *\n * @usage Image image = MediaTools.createImage(in);\n * @param in An input stream containing the data\n * @return An <code>Image</code> object\n */\n\tpublic static Image createImage(InputStream in) {\n\t\ttry {\n\t\t\tByteArrayOutputStream out = new ByteArrayOutputStream();\n\t\t\tfor (int ch = in.read(); ch != -1; ch = in.read()) {\n\t\t\t\tout.write(ch);\n\t\t\t}\n\t\t\tImage image = Toolkit.getDefaultToolkit().createImage(out.toByteArray());\n\t\t\tloadImage(image);\n\t\t\treturn image;\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(\"Exception: \" + ex);\n\t\t}\n\t}\n\n/* Static method: createImage(hexData) */\n/**\n * Generates an image from a string array that provides the pixel values.\n *\n * @usage Image image = MediaTools.createImage(hexData);\n * @param hexData A hex string array representing a .gif value\n * @return An <code>Image</code> object\n */\n\tpublic static Image createImage(String[] hexData) {\n\t\treturn createImage(new HexInputStream(hexData));\n\t}\n\n/* Static method: getPixelArray(image) */\n/**\n * Returns a two-dimensional array of the pixels in the image.  As in standard\n * image processing applications, the array is indexed so that the first\n * subscript determines the row and the second determines the column.\n *\n * @param image The image\n * @return A two-dimensional array of pixels\n */\n\tpublic static int[][] getPixelArray(Image image) {\n\t\tImageObserver observer = getImageObserver();\n\t\tint width = image.getWidth(observer);\n\t\tint height = image.getHeight(observer);\n\t\tint[] pixels = new int[width * height];\n\t\tint[][] array = new int[height][width];\n\t\tPixelGrabber pg = new PixelGrabber(image.getSource(), 0, 0, width, height, pixels, 0, width);\n\t\ttry {\n\t\t\tpg.grabPixels();\n\t\t} catch (InterruptedException e) {\n\t\t\tthrow new ErrorException(\"Transfer interrupted\");\n\t\t}\n\t\tif ((pg.getStatus() & ImageObserver.ABORT) != 0) {\n\t\t\tthrow new ErrorException(\"Transfer aborted\");\n\t\t}\n\t\tfor (int i = 0; i < height; i++) {\n\t\t\tSystem.arraycopy(pixels, i * width, array[i], 0, width);\n\t\t}\n\t\treturn array;\n\t}\n\n/* Static method: saveImage(image, filename) */\n/**\n * Saves an image to a file with the specified filename.  The data format\n * for the image file is determined by the suffix of the filename.  If the\n * suffix of the file is not recognized as a supported image type, calling\n * this method generates an error.\n *\n * @usage MediaTools.saveImage(image, filename);\n * @param image The image\n * @param filename The name of the file to which the image is saved\n */\n\tpublic static void saveImage(Image image, String filename) {\n\t\tsaveImage(image, new File(filename));\n\t}\n\n/* Static method: saveImage(image, file) */\n/**\n * Saves an image to the specified file.  The data format for the\n * image file is determined by the suffix of the filename.  If the\n * suffix of the file is not recognized as a supported image type,\n * calling this method generates an error.\n *\n * @usage MediaTools.saveImage(image, file);\n * @param image The image\n * @param file The <code>File</code> to which the image is saved\n */\n\tpublic static void saveImage(Image image, File file) {\n\t\tString filename = file.getName();\n\t\tint dot = filename.lastIndexOf('.');\n\t\tif (dot <= 0) {\n\t\t\tthrow new ErrorException(\"saveImage: No image suffix in file name\");\n\t\t}\n\t\tString suffix = filename.substring(dot + 1);\n\t\tImageSaver saver = findImageSaver(suffix);\n\t\tif (saver == null) {\n\t\t\tthrow new ErrorException(\"saveImage: No support for .\" + suffix + \" format\");\n\t\t}\n\t\tif (file.exists()) {\n\t\t\tif (!file.delete()) {\n\t\t\t\tthrow new ErrorException(\"saveImage: Cannot replace \" + filename);\n\t\t\t}\n\t\t}\n\t\ttry {\n\t\t\tOutputStream out = new BufferedOutputStream(new FileOutputStream(file));\n\t\t\tsaver.setOutputStream(out);\n\t\t\tsaver.saveImage(image);\n\t\t\tsaver.updateFileType(file);\n\t\t\tout.close();\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(\"saveImage: \" + ex.getMessage());\n\t\t}\n\t}\n\n/* Static method: createPSPreviewImage(image, preview) */\n/**\n * Creates a new image that combines an existing image with a PostScript preview\n * represented as a string array.  Clients can retrieve the PostScript preview\n * by asking for the <code>\"PSPreview\"</code> property.\n *\n * @usage MediaTools.createPSPreviewImage(image, preview);\n * @param image The original image\n * @param preview The corresponding PostScript preview\n * @return A new image that includes the preview\n * @noshow\n */\n\tpublic static Image createPSPreviewImage(Image image, String[] preview) {\n\t\treturn new PSPreviewImage(image, preview);\n\t}\n\n/* Static method: loadAudioClip(name) */\n/**\n * Searches the default audio clip search path for an audio clip with the specified\n * name and then loads it to create an <code>AudioClip</code>.  The search process\n * consists of the following steps:\n *\n * <p><ol>\n * <li>Check to see if an audio clip with that name has already been defined.  If\n *     so, return that audio clip.<p>\n *\n * <li>Check to see if there is a resource available with that name whose\n *     contents can be read as an <code>AudioClip</code>.  If so, read the\n *     audio clip from the resource file.<p>\n *\n * <li>Load the audio clip from a file with the specified name, relative to the\n *     application directory or the applet code base.\n * </ol><p>\n *\n * The second and third steps are repeated for each element of the audio clip\n * search path, which consists of a list of directories separated by colons.\n *\n * @usage AudioClip clip = MediaTools.loadAudioClip(name);\n * @param name The name of the audio clip\n * @return A new <code>AudioClip</code> object\n */\n\tpublic static AudioClip loadAudioClip(String name) {\n\t\treturn loadAudioClip(name, DEFAULT_AUDIO_PATH);\n\t}\n\n/* Static method: loadAudioClip(name, path) */\n/**\n * Searches for an audio clip with the given name and loads it to create an\n * <code>AudioClip</code>.  Its operation is identical to the single-argument\n * <a href=\"#loadAudioClip(String)\"><code>loadAudioClip</code></a> call except\n * in that this version allows the client to specify the search path\n * explicitly.\n *\n * @usage AudioClip clip = MediaTools.loadAudioClip(name, path);\n * @param name The name of the audio clip\n * @param path A string of directories names separated by colons\n * @return A new <code>AudioClip</code> object\n * @noshow\n */\n\tpublic static AudioClip loadAudioClip(String name, String path) {\n\t\tAudioClip clip = audioClipTable.get(name);\n\t\tif (clip != null) return clip;\n\t\tif (name.startsWith(\"http:\")) {\n\t\t\ttry {\n\t\t\t\tclip = loadAudioClip(new URL(name));\n\t\t\t\tif (clip instanceof SoundClip) {\n\t\t\t\t\t((SoundClip) clip).setName(name);\n\t\t\t\t}\n\t\t\t\tif (cachingEnabled) audioClipTable.put(name, clip);\n\t\t\t\treturn clip;\n\t\t\t} catch (MalformedURLException ex) {\n\t\t\t\tthrow new ErrorException(\"loadAudioClip: Malformed URL\");\n\t\t\t}\n\t\t}\n\t\tStringTokenizer tokenizer = new StringTokenizer(path, \":\");\n\t\twhile (clip == null && tokenizer.hasMoreTokens()) {\n\t\t\tString prefix = tokenizer.nextToken();\n\t\t\tprefix = (prefix.equals(\".\")) ? \"\" : prefix + \"/\";\n\t\t\tURL url = null;\n\t\t\ttry {\n\t\t\t\turl = RESOURCE_CLASS.getResource(\"/\" + prefix + name);\n\t\t\t\tURLConnection connection = url.openConnection();\n\t\t\t\tif (connection == null || connection.getContentLength() <= 0) {\n\t\t\t\t\turl = null;\n\t\t\t\t}\n\t\t\t} catch (Exception ex) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t\tif (url == null) {\n\t\t\t\tApplet applet = JTFTools.getApplet();\n\t\t\t\tif (applet != null) {\n\t\t\t\t\tURL codeBase = applet.getCodeBase();\n\t\t\t\t\tif (codeBase != null) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\turl = new URL(codeBase, prefix + name);\n\t\t\t\t\t\t} catch (MalformedURLException ex) {\n\t\t\t\t\t\t\t/* Empty */\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (url == null) {\n\t\t\t\ttry {\n\t\t\t\t\tFile file = new File(prefix + name);\n\t\t\t\t\tif (file.canRead()) {\n\t\t\t\t\t\tclip = createAudioClip(new FileInputStream(file));\n\t\t\t\t\t}\n\t\t\t\t} catch (Exception ex) {\n\t\t\t\t\t/* Empty */\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tclip = loadAudioClip(url, false);\n\t\t\t}\n\t\t}\n\t\tif (clip == null) throw new ErrorException(\"Cannot find an audio clip named \" + name);\n\t\tif (clip instanceof SoundClip) {\n\t\t\t((SoundClip) clip).setName(name);\n\t\t}\n\t\tif (cachingEnabled) audioClipTable.put(name, clip);\n\t\treturn clip;\n\t}\n\n/* Static method: loadAudioClip(url) */\n/**\n * Loads an audio clip from the specified URL.\n *\n * @usage AudioClip clip = MediaTools.loadAudioClip(url);\n * @param url The url containing the audio clip\n * @return A new <code>AudioClip</code> object\n */\n\tpublic static AudioClip loadAudioClip(URL url) {\n\t\treturn loadAudioClip(url, true);\n\t}\n\n/* Static method: defineAudioClip(name, clip) */\n/**\n * Inserts the given clip into the audio clip table under the specified name.\n *\n * @usage MediaTools.defineAudioClip(name, clip);\n * @param name The name for the audio clip\n * @param clip The audio clip to be stored in the table\n */\n\tpublic static void defineAudioClip(String name, AudioClip clip) {\n\t\taudioClipTable.put(name, clip);\n\t}\n\n/* Static method: flushAudioClip(name) */\n/**\n * Removes the audio clip with the given name from the cache, allowing it\n * to be freed by the garbage collector.\n *\n * @usage MediaTools.flushAudioClip(name);\n * @param name The name for the audio clip\n */\n\tpublic static void flushAudioClip(String name) {\n\t\taudioClipTable.remove(name);\n\t}\n\n/* Static method: createAudioClip(in) */\n/**\n * Generates an audio clip from an input stream containing the data bytes for the\n * audio clip.  The implementation first tries to create a <code>SoundClip</code>\n * object from the data.  If that fails, it then backs up to the older strategy\n * of using the <code>SunAudioClip</code> class.\n *\n * @usage AudioClip clip = MediaTools.createAudioClip(in);\n * @param in An input stream containing the data\n * @return An <code>AudioClip</code> object\n */\n\tpublic static AudioClip createAudioClip(InputStream in) {\n\t\ttry {\n\t\t\treturn new SoundClip(in);\n\t\t} catch (Exception ex1) {\n\t\t\ttry {\n\t\t\t\treturn new SunAudioClip(in);\n\t\t\t} catch (Exception ex2) {\n\t\t\t\treturn new NullAudioClip();\n\t\t\t}\n\t\t}\n\t}\n\n/* Static method: createAudioClip(hexData) */\n/**\n * Generates an audio clip from a string array that provides the sound values.\n *\n * @usage AudioClip audio clip = MediaTools.createAudioClip(hexData);\n * @param hexData A hex string array representing an audio clip\n * @return An <code>AudioClip</code> object\n */\n\tpublic static AudioClip createAudioClip(String[] hexData) {\n\t\treturn createAudioClip(new HexInputStream(hexData));\n\t}\n\n/* Static method: openDataFile(name) */\n/**\n * Searches the default datafile search path for a file with the specified name\n * and then opens it to create an <code>InputStream</code>.  The search process\n * consists of the following steps:\n *\n * <p><ol>\n * <li>Check to see if there is a resource available with that name.  If so,\n *     return an <code>InputStream</code> open on that resource.<p>\n *\n * <li>Open the file with the specified name, relative to the application\n *     directory or the applet code base.\n * </ol><p>\n *\n * These steps are repeated for each element of the datafile search path, which\n * consists of a list of directories separated by colons.\n *\n * @usage InputStream in = MediaTools.openDataFile(name);\n * @param name The name of the input file\n * @return A new <code>InputStream</code> open on the specified file\n */\n\tpublic static InputStream openDataFile(String name) {\n\t\treturn openDataFile(name, DEFAULT_DATAFILE_PATH);\n\t}\n\n/* Static method: openDataFile(name, path) */\n/**\n * Searches for a data file with the given name and opens it to create an\n * <code>InputStream</code>.  Its operation is identical to the single-argument\n * <a href=\"#openDataFile(String)\"><code>openDataFile</code></a> call except\n * in that this version allows the client to specify the search path\n * explicitly.\n *\n * @usage InputStream in = MediaTools.openDataFile(name, path);\n * @param name The name of the audio clip\n * @param path A string of directories names separated by colons\n * @return A new <code>InputStream</code> open on the specified file\n */\n\tpublic static InputStream openDataFile(String name, String path) {\n\t\tInputStream in = null;\n\t\tif (name.startsWith(\"http:\")) {\n\t\t\ttry {\n\t\t\t\treturn openDataFile(new URL(name));\n\t\t\t} catch (MalformedURLException ex) {\n\t\t\t\tthrow new ErrorException(\"openDataFile: Malformed URL\");\n\t\t\t}\n\t\t}\n\t\tStringTokenizer tokenizer = new StringTokenizer(path, \":\");\n\t\twhile (in == null && tokenizer.hasMoreTokens()) {\n\t\t\tString prefix = tokenizer.nextToken();\n\t\t\tprefix = (prefix.equals(\".\")) ? \"\" : prefix + \"/\";\n\t\t\tURL url = null;\n\t\t\ttry {\n\t\t\t\turl = RESOURCE_CLASS.getResource(\"/\" + prefix + name);\n\t\t\t\tURLConnection connection = url.openConnection();\n\t\t\t\tif (connection == null || connection.getContentLength() <= 0) {\n\t\t\t\t\turl = null;\n\t\t\t\t}\n\t\t\t} catch (Exception ex) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t\tif (url == null) {\n\t\t\t\tApplet applet = JTFTools.getApplet();\n\t\t\t\tif (applet != null) {\n\t\t\t\t\tURL codeBase = applet.getCodeBase();\n\t\t\t\t\tif (codeBase != null) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\turl = new URL(codeBase, prefix + name);\n\t\t\t\t\t\t} catch (MalformedURLException ex) {\n\t\t\t\t\t\t\t/* Empty */\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (url == null) {\n\t\t\t\ttry {\n\t\t\t\t\tFile file = new File(prefix + name);\n\t\t\t\t\tif (file.canRead()) {\n\t\t\t\t\t\tin = new FileInputStream(file);\n\t\t\t\t\t}\n\t\t\t\t} catch (Exception ex) {\n\t\t\t\t\t/* Empty */\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tin = openDataFile(url, false);\n\t\t\t}\n\t\t}\n\t\tif (in == null) throw new ErrorException(\"Cannot find a file named \" + name);\n\t\treturn in;\n\t}\n\n/* Static method: openDataFile(url) */\n/**\n * Opens the specified URL to create an <code>InputStream</code>.\n *\n * @usage InputStream in = MediaTools.openDataFile(url);\n * @param url The URL of the data file\n * @return A new <code>InputStream</code> open on the specified URL\n */\n\tpublic static InputStream openDataFile(URL url) {\n\t\treturn openDataFile(url, true);\n\t}\n\n/* Static method: createBufferedImage(image, type) */\n/**\n * Creates a <code>BufferedImage</code> from the specified image.  The\n * <code>type</code> parameter is used to specify the image type, as\n * described in the <code>BufferedImage</code> documentation.\n *\n * @usage BufferedImage image = MediaTools.createBufferedImage(image, type);\n * @param image The original image\n * @param type The type code used to describe the image model\n * @param A <code>BufferedImage</code> containing the image data\n */\n\tpublic static BufferedImage createBufferedImage(Image image, int type) {\n\t\tint width = image.getWidth(null);\n\t\tint height = image.getHeight(null);\n\t\tBufferedImage bimage = new BufferedImage(width, height, type);\n\t\tGraphics g = bimage.createGraphics();\n\t\tg.drawImage(image, 0, 0, null);\n\t\tg.dispose();\n\t\treturn bimage;\n\t}\n\n/* Static method: getHexInputStream(hexData) */\n/**\n * Returns an input stream whose bytes come from the string array <code>hex</code>,\n * in which the elements consist of continuous bytes of hex data.\n *\n * @usage InputStream in = MediaTools.getHexInputStream(hexData);\n * @param hexData An array of strings specifying a byte stream coded in hex\n * @return An input stream for reading the bytes\n */\n\tpublic static InputStream getHexInputStream(String[] hexData) {\n\t\treturn new HexInputStream(hexData);\n\t}\n\n/* Static method: setCachingEnabled(boolean flag) */\n/**\n * This method sets an internal flag in the <code>MediaTools</code> package to indicate\n * whether images and audio clips are cached internally by name.  This flag is disabled\n * by default.\n *\n * @usage MediaTools.setCachingEnabled(flag);\n * @param flag <code>true</code> to enable caching by name, <code>false</code> to disable it.\n */\n\tpublic static void setCachingEnabled(boolean flag) {\n\t\tcachingEnabled = flag;\n\t}\n\n/* Static method: isCachingEnabled() */\n/**\n * This method returns the status of the flag that determins whether images and audio\n * clips are cached internally by name, as described in\n * <a href=\"#setCachingEnabled(boolean)\"><code>setCachingEnabled</code></a>.\n *\n * @usage boolean flag = MediaTools.isCachingEnabled();\n * @return <code>true</code> if caching by name is enabled, <code>false</code> otherwise.\n */\n\tpublic static boolean isCachingEnabled() {\n\t\treturn cachingEnabled;\n\t}\n\n/* Static method: getImageObserver() */\n/**\n * This method returns a new lightweight component suitable as an <code>imageObserver</code>.\n *\n * @usage Component imageObserver = MediaTools.getImageObserver();\n * @return A new lightweight component suitable as an <code>imageObserver</code>.\n */\n\tpublic static Component getImageObserver() {\n\t\treturn JTFTools.createEmptyContainer();\n\t}\n\n/* Static method: beep() */\n/**\n * This method sounds the audible alert on the console, which is typically a beep\n * sound.\n *\n * @usage MediaTools.beep();\n */\n\tpublic static void beep() {\n\t\tToolkit.getDefaultToolkit().beep();\n\t}\n\n/* Private static method: loadImage(url, topLevel) */\n/**\n * Loads an image from the specified URL.  The <code>topLevel</code> flag\n * is <code>false</code> if this is invoked internally.\n */\n\tpublic static Image loadImage(URL url, boolean topLevel) {\n\t\tImage image = null;\n\t\tToolkit toolkit = Toolkit.getDefaultToolkit();\n\t\ttry {\n\t\t\tURLConnection connection = url.openConnection();\n\t\t\tif (isResource(url) || connection.getContentLength() > 0) {\n\t\t\t\tObject content = connection.getContent();\n\t\t\t\tif (content instanceof ImageProducer) {\n\t\t\t\t\timage = toolkit.createImage((ImageProducer) content);\n\t\t\t\t} else if (content != null) {\n\t\t\t\t\timage = toolkit.getImage(url);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (IOException ex) {\n\t\t\t/* Empty */\n\t\t}\n\t\tif (topLevel) {\n\t\t\tif (image == null) throw new ErrorException(\"Cannot load image from \" + url);\n\t\t\tloadImage(image);\n\t\t}\n\t\treturn image;\n\t}\n\n/* Private static method: findImageSaver(suffix) */\n/**\n * Finds an image saver capable of writing image files with the specified\n * subect.\n */\n\tprivate static ImageSaver findImageSaver(String suffix) {\n\t\tsuffix = suffix.toUpperCase();\n\t\tsynchronized (suffixTable) {\n\t\t\tImageSaver saver = suffixTable.get(suffix);\n\t\t\tif (saver == null) {\n\t\t\t\ttry {\n\t\t\t\t\tClass<?> imageSaverClass = Class.forName(\"acm.util.\" + suffix + \"ImageSaver\");\n\t\t\t\t\tsaver = (ImageSaver) imageSaverClass.newInstance();\n\t\t\t\t} catch (Exception ex) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tsuffixTable.put(suffix, saver);\n\t\t\t}\n\t\t\treturn saver;\n\t\t}\n\t}\n\n/* Private static method: loadAudioClip(url, topLevel) */\n/**\n * Loads an audio clip from the specified URL.  The <code>topLevel</code> flag\n * is <code>false</code> if this is invoked internally.\n */\n\tpublic static AudioClip loadAudioClip(URL url, boolean topLevel) {\n\t\tAudioClip clip = null;\n\t\ttry {\n\t\t\tURLConnection connection = url.openConnection();\n\t\t\tif (isResource(url) || connection.getContentLength() > 0) {\n\t\t\t\tclip = createAudioClip(connection.getInputStream());\n\t\t\t}\n\t\t} catch (IOException ex) {\n\t\t\t/* Empty */\n\t\t}\n\t\tif (topLevel && clip == null) {\n\t\t\tthrow new ErrorException(\"Cannot load audio clip from \" + url);\n\t\t}\n\t\treturn clip;\n\t}\n\n/* Private static method: openDataFile(url, topLevel) */\n/**\n * Opens a data file using the specified URL.  The <code>topLevel</code> flag\n * is <code>false</code> if this is invoked internally.\n */\n\tpublic static InputStream openDataFile(URL url, boolean topLevel) {\n\t\tInputStream in = null;\n\t\ttry {\n\t\t\tURLConnection connection = url.openConnection();\n\t\t\tif (isResource(url) || connection.getContentLength() > 0) {\n\t\t\t\tin = connection.getInputStream();\n\t\t\t}\n\t\t} catch (IOException ex) {\n\t\t\t/* Empty */\n\t\t}\n\t\tif (topLevel && in == null) {\n\t\t\tthrow new ErrorException(\"Cannot read data from \" + url);\n\t\t}\n\t\treturn in;\n\t}\n\n/* Private static method: isResource(url) */\n/**\n * Returns <code>true</code> if the URL corresponds to a file or a resource.\n */\n\tprivate static boolean isResource(URL url) {\n\t\tString name = url.toString().toLowerCase();\n\t\treturn name.startsWith(\"jar:\") || name.startsWith(\"file:\");\n\t}\n\n/* Private package variables */\n\tprivate static boolean cachingEnabled = false;\n\tprivate static HashMap<String,Image> imageTable = new HashMap<String,Image>();\n\tprivate static HashMap<String,AudioClip> audioClipTable = new HashMap<String,AudioClip>();\n\tprivate static HashMap<String,ImageSaver> suffixTable  = new HashMap<String,ImageSaver>();\n\tprivate static final Class<?> RESOURCE_CLASS = new MediaTools().getClass();\n}\n\n/* Package class: HexInputStream */\n/**\n * This class defines an <code>InputStream</code> whose bytes come from a string\n * of hexadecimal digits.\n */\nclass HexInputStream extends InputStream {\n\n/* Constructor: HexInputStream(hexData) */\n/**\n * Creates an input stream whose bytes come from the specified string array.\n *\n * @usage HexInputStream in = new HexInputStream(hexData);\n * @param hexData An array of strings containing the input bytes\n */\n\tpublic HexInputStream(String[] hexData) {\n\t\thex = hexData;\n\t\tarrayIndex = 0;\n\t\tcharIndex = 0;\n\t}\n\n/* Method: read() */\n/**\n * Reads the next byte of data from the input.\n *\n * @usage int ch = in.read();\n * @return The next byte of data, or -1 at the end of file\n */\n\tpublic int read() {\n\t\tif (arrayIndex >= hex.length) return -1;\n\t\tif (charIndex >= hex[arrayIndex].length()) {\n\t\t\tarrayIndex++;\n\t\t\tcharIndex = 0;\n\t\t\treturn read();\n\t\t}\n\t\tint data = Character.digit(hex[arrayIndex].charAt(charIndex++), 16) << 4;\n\t\tdata |= Character.digit(hex[arrayIndex].charAt(charIndex++), 16);\n\t\treturn data;\n\t}\n\n/* Private instance variables */\n\tprivate String[] hex;\n\tprivate int arrayIndex;\n\tprivate int charIndex;\n\n}\n\n/* Package class: SunAudioClip */\n/**\n * This class implements the AudioClip interface in terms of the\n * <code>sun.audio</code> package, which appears to be supported\n * in all major browsers.  The clip is created through reflection\n * in order to avoid a compile-time dependency on the sources for\n * <code>sun.audio</code>.\n */\nclass SunAudioClip implements AudioClip {\n\n/* Constructor: SunAudioClip(in) */\n/**\n * Creates an audio clip from the specified input stream using the\n * <code>sun.audio</code> package.  The audio clip is fully loaded\n * at the point the constructor returns.  This class ignores all\n * exceptions, which means that sounds will simply not play on\n * systems on which this facility is not supported.\n */\n\tpublic SunAudioClip(InputStream in) {\n\t\tif (!initialized) {\n\t\t\tinitStaticData();\n\t\t\tinitialized = true;\n\t\t}\n\t\ttry {\n\t\t\tObject[] args = { in };\n\t\t\tObject audioStream = audioDataConstructor.newInstance(args);\n\t\t\taudioData = getData.invoke(audioStream, new Object[0]);\n\t\t\tplayer = audioPlayerClass.getField(\"player\").get(null);\n\t\t\tClass[] inputStreamTypes = { Class.forName(\"java.io.InputStream\") };\n\t\t\taudioPlayerStart = player.getClass().getMethod(\"start\", inputStreamTypes);\n\t\t\taudioPlayerStop = player.getClass().getMethod(\"stop\", inputStreamTypes);\n\t\t} catch (Exception ex) {\n\t\t\t/* Ignore any exceptions */\n\t\t}\n\t}\n\n\tpublic void play() {\n\t\ttry {\n\t\t\tObject[] args = { audioData };\n\t\t\taudioDataStream = audioDataStreamConstructor.newInstance(args);\n\t\t\targs[0] = audioDataStream;\n\t\t\taudioPlayerStart.invoke(player, args);\n\t\t} catch (Exception ex) {\n\t\t\t/* Ignore any exceptions */\n\t\t}\n\t}\n\n\tpublic void loop() {\n\t\ttry {\n\t\t\tObject[] args = { audioData };\n\t\t\tcontinuousAudioDataStream = continuousAudioDataStreamConstructor.newInstance(args);\n\t\t\targs[0] = continuousAudioDataStream;\n\t\t\taudioPlayerStart.invoke(player, args);\n\t\t} catch (Exception ex) {\n\t\t\t/* Ignore any exceptions */\n\t\t}\n\t}\n\n\tpublic void stop() {\n\t\ttry {\n\t\t\tObject[] args = new Object[1];\n\t\t\tif (continuousAudioDataStream != null) {\n\t\t\t\targs[0] = audioDataStream;\n\t\t\t\taudioPlayerStop.invoke(player, args);\n\t\t\t}\n\t\t\tif (audioDataStream != null) {\n\t\t\t\targs[0] = continuousAudioDataStream;\n\t\t\t\taudioPlayerStop.invoke(player, args);\n\t\t\t}\n\t\t} catch (Exception ex) {\n\t\t\t/* Ignore any exceptions */\n\t\t}\n\t}\n\n\tprivate static void initStaticData() {\n\t\ttry {\n\t\t\taudioPlayerClass = Class.forName(\"sun.audio.AudioPlayer\");\n\t\t\taudioStreamClass = Class.forName(\"sun.audio.AudioStream\");\n\t\t\taudioDataClass = Class.forName(\"sun.audio.AudioData\");\n\t\t\taudioDataStreamClass = Class.forName(\"sun.audio.AudioDataStream\");\n\t\t\tcontinuousAudioDataStreamClass = Class.forName(\"sun.audio.ContinuousAudioDataStream\");\n\t\t\tClass[] inputStreamTypes = { Class.forName(\"java.io.InputStream\") };\n\t\t\taudioDataConstructor = audioStreamClass.getConstructor(inputStreamTypes);\n\t\t\tgetData = audioStreamClass.getMethod(\"getData\", new Class[0]);\n\t\t\tClass[] audioDataTypes = { audioDataClass };\n\t\t\taudioDataStreamConstructor = audioDataStreamClass.getConstructor(audioDataTypes);\n\t\t\tcontinuousAudioDataStreamConstructor = continuousAudioDataStreamClass.getConstructor(audioDataTypes);\n\t\t} catch (Exception ex) {\n\t\t\t/* Ignore any exceptions */\n\t\t}\n\t}\n\n/* Private instance variables */\n\tprivate static boolean initialized;\n\tprivate static Class<?> audioPlayerClass;\n\tprivate static Class<?> audioStreamClass;\n\tprivate static Class<?> audioDataClass;\n\tprivate static Class<?> audioDataStreamClass;\n\tprivate static Class<?> continuousAudioDataStreamClass;\n\tprivate static Constructor<?> audioDataConstructor;\n\tprivate static Constructor<?> audioDataStreamConstructor;\n\tprivate static Constructor<?> continuousAudioDataStreamConstructor;\n\tprivate static Method getData;\n\n\tprivate Object player;\n\tprivate Object audioData;\n\tprivate Object audioDataStream;\n\tprivate Object continuousAudioDataStream;\n\tprivate Method audioPlayerStart;\n\tprivate Method audioPlayerStop;\n\n}\n\n/* Package class: NullAudioClip */\n/**\n * This class implements the <code>AudioClip</code> interface with a stub that\n * ignores all of the calls.\n */\nclass NullAudioClip implements AudioClip {\n\n\tpublic void play() {\n\t\t/* Empty */\n\t}\n\n\tpublic void loop() {\n\t\t/* Empty */\n\t}\n\n\tpublic void stop() {\n\t\t/* Empty */\n\t}\n\n}\n\n/* Package class: PSPreviewImage */\n/**\n * This class creates an <code>Image</code> subclass that encapsulates an\n * existing image and a PostScript preview represented as a string array.\n */\nclass PSPreviewImage extends Image {\n\n/* Constructor: PSPreviewImage(image, preview) */\n/**\n * Creates an <code>Image</code> subclass that encapsulates an existing image\n * and a PostScript preview.\n *\n * @usage Image image = PSPreviewImage(image, preview);\n * @param image The original image\n * @param preview The corresponding PostScript preview\n */\n\tpublic PSPreviewImage(Image image, String[] preview) {\n\t\tbaseImage = image;\n\t\tpsPreview = preview;\n\t}\n\n\tpublic Graphics getGraphics() {\n\t\treturn baseImage.getGraphics();\n\t}\n\n\tpublic int getWidth(ImageObserver observer) {\n\t\treturn baseImage.getWidth(observer);\n\t}\n\n\tpublic int getHeight(ImageObserver observer) {\n\t\treturn baseImage.getHeight(observer);\n\t}\n\n\tpublic Object getProperty(String name, ImageObserver observer) {\n\t\tif (name.equals(\"PSPreview\")) return psPreview;\n\t\treturn baseImage.getProperty(name, observer);\n\t}\n\n\tpublic ImageProducer getSource() {\n\t\treturn baseImage.getSource();\n\t}\n\n\tpublic void flush() {\n\t\tbaseImage.flush();\n\t}\n\n/* Private instance variables */\n\tprivate Image baseImage;\n\tprivate String[] psPreview;\n}\n\n/* Package class: ImageSaver */\n/**\n * This class represents the root of a package class hierarchy responsible\n * for saving images.  The class names for the subclasses in this hierarchy\n * are of the form <code>XYZImageSaver</code> where <code>XYZ</code> is the\n * extension used for image files in that format.  The abstract class\n * encapsulates the code used to write data to the output file, and the\n * specific subclasses determine what data needs to be written.\n */\nclass ImageSaver {\n\n/* Constructor: ImageSaver() */\n/**\n * Creates a new <code>ImageSaver</code> in which the subclass takes\n * responsibility for saving the image data.  This code is the default\n * constructor and is not ordinarily invoked explicitly.\n */\n\tpublic ImageSaver() {\n\t\t/* Empty */\n\t}\n\n/* Constructor: ImageSaver(format, type) */\n/**\n * Creates a new <code>ImageSaver</code> in which the subclass uses the\n * tools in the <code>javax.imageio</code> to save an image as indicated\n * by the format name and image buffer type.\n *\n * @usage ImageSaver saver = new ImageSaver(format, type);\n * @param format The informal name of the image format\n * @param type The integer code for the <code>BufferedImage</code> type\n */\n\tpublic ImageSaver(String format, int type) {\n\t\tformatName = format;\n\t\tbufferType = type;\n\t}\n\n/* Method: setOutputStream(output) */\n/**\n * Sets the output stream this <code>ImageSaver</code> uses to write data.\n *\n * @usage saver.setOutputStream(output);\n * @param output The output stream used to write data\n */\n\tpublic void setOutputStream(OutputStream output) {\n\t\tout = output;\n\t}\n\n/* Method: getOutputStream() */\n/**\n * Returns the output stream used by this <code>ImageSaver</code>.\n *\n * @usage OutputStream output = saver.getOutputStream();\n * @return The output stream used to write data\n */\n\tpublic OutputStream getOutputStream() {\n\t\treturn out;\n\t}\n\n/* Method: saveImage(image) */\n/**\n * Saves the image to the output stream established when the client called\n * <code>setOutputStream</code>.  This implementation uses the facilities\n * from the <code>javax.imageio</code> package to write the file.  Subclasses\n * that do their own data formatting must override this method.\n *\n * @usage saver.saveImage(image);\n * @param image The image to be written\n */\n\tpublic void saveImage(Image image) {\n\t\tBufferedImage bi = MediaTools.createBufferedImage(image, bufferType);\n\t\tImageOutputStream ios = new MemoryCacheImageOutputStream(getOutputStream());\n\t\ttry {\n\t\t\tif (!ImageIO.write(bi, formatName, ios)) {\n\t\t\t\tthrow new IOException(\"ImageIO.write failed\");\n\t\t\t}\n\t\t\tios.close();\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(\"saveImage: \" + ex.getMessage());\n\t\t}\n\t}\n\n/* Method: updateFileType(file) */\n/**\n * This method updates the file type and creator information so that the\n * correct application opens the file.  In the standard case, this method\n * does nothing.  Subclasses that need to update the file type information\n * must override this method.\n *\n * @usage saver.updateFileType(file);\n * @param file The file whose information needs to be updated\n */\n\tpublic void updateFileType(File file) {\n\t\t/* Empty */\n\t}\n\n/* Method: dumpByte(x) */\n/**\n * Writes the low-order byte of <code>x</code> to the output stream.\n *\n * @usage saver.dumpByte(x);\n * @param x A byte stored in an integer\n */\n\tpublic void dumpByte(int x) {\n\t\ttry {\n\t\t\tout.write(x);\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(\"saveImage: \" + ex.getMessage());\n\t\t}\n\t}\n\n/* Method: dumpShort(x) */\n/**\n * Writes the low-order 16 bits of <code>x</code> to the output stream.\n *\n * @usage saver.dumpShort(x);\n * @param x A 16-bit quantity stored in an integer\n */\n\tpublic void dumpShort(int x) {\n\t\ttry {\n\t\t\tout.write(x >> 8);\n\t\t\tout.write(x);\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(\"saveImage: \" + ex.getMessage());\n\t\t}\n\t}\n\n/* Method: dumpLong(x) */\n/**\n * Writes the 32-bit word in <code>x</code> to the output stream.\n *\n * @usage saver.dumpLong(x);\n * @param x A 32-bit integer word\n */\n\tpublic void dumpLong(int x) {\n\t\ttry {\n\t\t\tout.write(x >> 24);\n\t\t\tout.write(x >> 16);\n\t\t\tout.write(x >> 8);\n\t\t\tout.write(x);\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(\"saveImage: \" + ex.getMessage());\n\t\t}\n\t}\n\n/* Method: getPixelComponent(pixel, color) */\n/**\n * Extracts the specified component of a pixel.  Transparency is simulated\n * by computing a weighted average between white and the given value.\n *\n * @usage int component = getPixelComponent(pixel, color);\n * @param pixel The 32-bit integer pixel, including the alpha channel\n * @param color The character 'R', 'G', or 'B', indicating the component\n * @return An eight-bit component value, expanded to an integer\n */\n\tpublic int getPixelComponent(int pixel, char color) {\n\t\tint alpha = pixel >> 24 & 0xFF;\n\t\tswitch (color) {\n\t\t  case 'R': pixel >>= 16; break;\n\t\t  case 'G': pixel >>= 8; break;\n\t\t  case 'B': break;\n\t\t  default: throw new ErrorException(\"getPixelComponent: Illegal color\");\n\t\t}\n\t\tpixel &= 0xFF;\n\t\treturn (alpha * pixel + (0xFF - alpha) * 0xFF) / 0xFF;\n\t}\n\n/* Private instance variables */\n\tprivate OutputStream out;\n\tprivate String formatName;\n\tprivate int bufferType;\n}\n\n/* Package class: PNGImageSaver */\n/**\n * This class saves PNG images.\n */\nclass PNGImageSaver extends ImageSaver {\n\tpublic PNGImageSaver() {\n\t\tsuper(\"PNG\", BufferedImage.TYPE_INT_ARGB);\n\t}\n}\n\n/* Package class: JPEGImageSaver */\n/**\n * This class saves JPEG images.\n */\nclass JPEGImageSaver extends ImageSaver {\n\tpublic JPEGImageSaver() {\n\t\tsuper(\"JPEG\", BufferedImage.TYPE_INT_RGB);\n\t}\n}\n\nclass JPGImageSaver extends JPEGImageSaver {\n\t/* Entirely inherited from JPEGImageSaver */\n}\n\n/* Package class: BMPImageSaver */\n/**\n * This class saves BMP images.\n */\nclass BMPImageSaver extends ImageSaver {\n\tpublic BMPImageSaver() {\n\t\tsuper(\"BMP\", BufferedImage.TYPE_INT_RGB);\n\t}\n}\n\n/* Package class: GIFImageSaver */\n/**\n * This class saves GIF images.  This implementation uses one of two\n * strategies to encode the image:\n *\n * <p><ol>\n * <li>If this version of Java includes a GIF writer, use that one.\n * <li>If not, default to the public-domain GIF89 writer.\n * </ol>\n */\nclass GIFImageSaver extends ImageSaver {\n\n\tpublic GIFImageSaver() {\n\t\tsuper(\"GIF\", BufferedImage.TYPE_INT_ARGB);\n\t\tIterator it = ImageIO.getImageWritersBySuffix(\"gif\");\n\t\tif (!it.hasNext()) {\n\t\t\tgif89Saver = new GIF89ImageSaver();\n\t\t}\n\t}\n\n\tpublic void saveImage(Image image) {\n\t\tif (gif89Saver != null) {\n\t\t\tgif89Saver.setOutputStream(getOutputStream());\n\t\t\tgif89Saver.saveImage(image);\n\t\t} else {\n\t\t\tsuper.saveImage(image);\n\t\t}\n\t}\n\n\tpublic void updateFileType(File file) {\n\t\tif (gif89Saver != null) {\n\t\t\tgif89Saver.updateFileType(file);\n\t\t}\n\t}\n\n/* Private instance variables */\n\tprivate GIF89ImageSaver gif89Saver;\n}\n\n/* Package class: GIF89ImageSaver */\n/**\n * This class saves GIF89 images using the public-domain GIF package.\n */\nclass GIF89ImageSaver extends ImageSaver {\n\tpublic void saveImage(Image image) {\n\t\ttry {\n\t\t\tGif89Encoder encoder = new Gif89Encoder(image);\n\t\t\tencoder.setTransparentIndex(0);\n\t\t\tencoder.getFrameAt(0).setInterlaced(true);\n\t\t\tencoder.encode(getOutputStream());\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(\"saveImage: \" + ex.getMessage());\n\t\t}\n\t}\n\n\tpublic void updateFileType(File file) {\n\t\tPlatform.setFileTypeAndCreator(file, \"GIFf\", \"prvw\");\n\t}\n}\n\n/* Package class: TIFFImageSaver */\n/**\n * This class saves TIFF images.  The TIFF image file format is described\n * in the following document from Adobe Systems:\n *\n * <lit><code>\n * &nbsp;    <a href=\"http://partners.adobe.com/public/developer/en/tiff/TIFF6.pdf\"\n *           >http://partners.adobe.com/public/developer/en/tiff/TIFF6.pdf</a>\n * </code></lit>\n */\nclass TIFFImageSaver extends ImageSaver {\n\n/**\n * Saves the image in TIFF format.\n */\n\tpublic void saveImage(Image image) {\n\t\tpixels = MediaTools.getPixelArray(image);\n\t\twidth = pixels[0].length;\n\t\theight = pixels.length;\n\t\tcalculateOffsets();\n\t\tdumpHeader();                     /* TIFF header      */\n\t\tdumpIFD();                        /* Main IFD block   */\n\t\tdumpNullIFD();                    /* End of IFD chain */\n\t\tdumpBitsPerSampleData();          /* Data (int[3])    */\n\t\tdumpResolutionData();             /* Data (rationals) */\n\t\tdumpStripPointers();              /* Scanline offsets */\n\t\tdumpStripByteCounts();            /* Bytes per line   */\n\t\tdumpStripData();                  /* Image data       */\n\t}\n\n/**\n * Dumps the header of the TIFF file.\n */\nprivate void dumpHeader() {\n\t\tdumpByte('M');                    /* Byte order flag  */\n\t\tdumpByte('M');                    /* MM = big-endian  */\n\t\tdumpShort(42);                    /* TIFF identifier  */\n\t\tdumpLong(HEADER_SIZE);            /* Offset of IFD    */\n\t}\n\n/**\n * Dumps the Image File Directory (IFD) to the output file.  The IFD\n * block consists of a sequence of TIFF entries, each of which\n * contains the following information:\n *\n * <p><ol>\n *   <li>An operation code (2 bytes)\n *   <li>Code for type of data (2 bytes)\n *   <li>The number of data elements in an array (typically 1)\n *   <li>The data (if there is a room) or the offset for the data\n * </ol>\n *\n * In the code that follows, each IFD entry is written using a\n * separate method to improve readability of the code.  Note that\n * TIFF format requires the entries in the IFD to appear in\n * increasing order by operation code.\n */\n\tprivate void dumpIFD() {\n\t\tdumpShort(IFD_OP_COUNT);\n\t\tdumpIFDNewSubFileType();\n\t\tdumpIFDImageWidth();\n\t\tdumpIFDImageHeight();\n\t\tdumpIFDBitsPerSample();\n\t\tdumpIFDCompression();\n\t\tdumpIFDPhotometricInterpration();\n\t\tdumpIFDStripPointers();\n\t\tdumpIFDSamplesPerPixel();\n\t\tdumpIFDRowsPerStrip();\n\t\tdumpIFDStripByteCounts();\n\t\tdumpIFDXResolution();\n\t\tdumpIFDYResolution();\n\t\tdumpIFDResolutionUnit();\n\t}\n\n\tprivate void dumpIFDNewSubFileType() {\n\t\tdumpShort(0xFE);\n\t\tdumpShort(TT_LONG);\n\t\tdumpLong(1);\n\t\tdumpLong(0);\n\t}\n\n\tprivate void dumpIFDImageWidth() {\n\t\tdumpShort(0x100);\n\t\tdumpShort(TT_LONG);\n\t\tdumpLong(1);\n\t\tdumpLong(width);\n\t}\n\n\tprivate void dumpIFDImageHeight() {\n\t\tdumpShort(0x101);\n\t\tdumpShort(TT_LONG);\n\t\tdumpLong(1);\n\t\tdumpLong(height);\n\t}\n\n\tprivate void dumpIFDBitsPerSample() {\n\t\tdumpShort(0x102);\n\t\tdumpShort(TT_LONG);\n\t\tdumpLong(3);\n\t\tdumpLong(offsetBitsPerSample);\n\t}\n\n\tprivate void dumpIFDCompression() {\n\t\tdumpShort(0x103);\n\t\tdumpShort(TT_SHORT);\n\t\tdumpLong(1);\n\t\tdumpShort(1);\n\t\tdumpShort(0);\n\t}\n\n\tprivate void dumpIFDPhotometricInterpration() {\n\t\tdumpShort(0x106);\n\t\tdumpShort(TT_SHORT);\n\t\tdumpLong(1);\n\t\tdumpShort(2);\n\t\tdumpShort(0);\n\t}\n\n\tprivate void dumpIFDStripPointers() {\n\t\tdumpShort(0x111);\n\t\tdumpShort(TT_LONG);\n\t\tdumpLong(height);\n\t\tdumpLong(offsetStripPointers);\n\t}\n\n\tprivate void dumpIFDSamplesPerPixel() {\n\t\tdumpShort(0x115);\n\t\tdumpShort(TT_SHORT);\n\t\tdumpLong(1);\n\t\tdumpShort(3);\n\t\tdumpShort(0);\n\t}\n\n\tprivate void dumpIFDRowsPerStrip() {\n\t\tdumpShort(0x116);\n\t\tdumpShort(TT_LONG);\n\t\tdumpLong(1);\n\t\tdumpLong(1);\n\t}\n\n\tprivate void dumpIFDStripByteCounts() {\n\t\tdumpShort(0x117);\n\t\tdumpShort(TT_LONG);\n\t\tdumpLong(height);\n\t\tdumpLong(offsetStripByteCounts);\n\t}\n\n\tprivate void dumpIFDXResolution() {\n\t\tdumpShort(0x11A);\n\t\tdumpShort(TT_RATIONAL);\n\t\tdumpLong(1);\n\t\tdumpLong(offsetXResolution);\n\t}\n\n\tprivate void dumpIFDYResolution() {\n\t\tdumpShort(0x11B);\n\t\tdumpShort(TT_RATIONAL);\n\t\tdumpLong(1);\n\t\tdumpLong(offsetYResolution);\n\t}\n\n\tprivate void dumpIFDResolutionUnit() {\n\t\tdumpShort(0x128);\n\t\tdumpShort(TT_SHORT);\n\t\tdumpLong(1);\n\t\tdumpShort(1);\n\t\tdumpShort(0);\n\t}\n\n/**\n * Writes a null pointer to signal the end of he IFD chain.\n */\n\tprivate void dumpNullIFD() {\n\t\tdumpLong(0);\n\t}\n\n/**\n * Writes the data used for the bits/sample IFD entry.  This value\n * is an array of three components and therefore does not fit in the\n * IFD itself.\n */\n\tprivate void dumpBitsPerSampleData() {\n\t\tdumpLong(8);\n\t\tdumpLong(8);\n\t\tdumpLong(8);\n\t}\n\n/**\n * Writes the data used to specify the image resolution, which is\n * defined here to be the 72 pixels per inch.  The value for each\n * of the <i>x</i> and <i>y</i> resolution components is an 8-byte\n * <code>RATIONAL</code> value, consisting of two <code>long</code>\n * words.\n */\n\tprivate void dumpResolutionData() {\n\t\tdumpLong(72);\n\t\tdumpLong(1);\n\t\tdumpLong(72);\n\t\tdumpLong(1);\n\t}\n\n/**\n * Writes the pointers to the data for each scan line in the TIFF\n * image.\n */\n\tprivate void dumpStripPointers() {\n\t\tfor (int i = 0; i < height; i++) {\n\t\t\tdumpLong(offsetData + i * stripDelta);\n\t\t}\n\t}\n\n/**\n * Writes the byte count for each scan line in the TIFF image.\n */\n\tprivate void dumpStripByteCounts() {\n\t\tfor (int i = 0; i < height; i++) {\n\t\t\tdumpLong(3 * width);\n\t\t}\n\t}\n\n/**\n * Writes the actual pixel data at the end of the TIFF file.\n */\n\tprivate void dumpStripData() {\n\t\tfor (int i = 0; i < height; i++) {\n\t\t\tfor (int j = 0; j < width; j++) {\n\t\t\t\tint pixel = pixels[i][j];\n\t\t\t\tdumpByte(getPixelComponent(pixel, 'R'));\n\t\t\t\tdumpByte(getPixelComponent(pixel, 'G'));\n\t\t\t\tdumpByte(getPixelComponent(pixel, 'B'));\n\t\t\t}\n\t\t\tfor (int k = 3 * width; k < stripDelta; k++) {\n\t\t\t\tdumpByte(0);\n\t\t\t}\n\t\t}\n\t}\n\n/**\n * Calculates the offset for every data field in the TIFF file.\n */\n\tprivate void calculateOffsets() {\n\t\toffsetIFD = HEADER_SIZE;\n\t\toffsetNullIFD = offsetIFD + IFD_OP_COUNT * 12 + 2;\n\t\toffsetBitsPerSample = offsetNullIFD + 4;\n\t\toffsetXResolution = offsetBitsPerSample + 12;\n\t\toffsetYResolution = offsetXResolution + 8;\n\t\toffsetStripPointers = offsetYResolution + 8;\n\t\toffsetStripByteCounts = offsetStripPointers + 4 * height;\n\t\toffsetData = offsetStripByteCounts + 4 * height;\n\t\tstripDelta = (3 * width + 3) & -4;\n\t}\n\n/* Private constants */\n\tprivate static final int HEADER_SIZE = 8;\n\tprivate static final int IFD_OP_COUNT = 13;\n\tpublic static final int TT_BYTE = 1;\n\tpublic static final int TT_ASCII = 2;\n\tpublic static final int TT_SHORT = 3;\n\tpublic static final int TT_LONG = 4;\n\tpublic static final int TT_RATIONAL = 5;\n\n/* Private instance variables */\n\tprivate int[][] pixels;\n\tprivate int width;\n\tprivate int height;\n\tprivate int offsetIFD;\n\tprivate int offsetNullIFD;\n\tprivate int offsetBitsPerSample;\n\tprivate int offsetXResolution;\n\tprivate int offsetYResolution;\n\tprivate int offsetStripPointers;\n\tprivate int offsetStripByteCounts;\n\tprivate int offsetData;\n\tprivate int stripDelta;\n}\n\nclass TIFImageSaver extends TIFFImageSaver {\n\t/* Entirely inherited from TIFFImageSaver */\n}\n\n/* Package class: PICTImageSaver */\n/**\n * This class saves PICT images.  The PICT image file format is described\n * in the following legacy document from Apple:\n *\n * <lit><code>\n * &nbsp;    <a href=\"http://developer.apple.com/documentation/mac/QuickDraw/QuickDraw-458.html\"\n *           >http://developer.apple.com/documentation/mac/QuickDraw/QuickDraw-458.html</a>\n * </code></lit>\n */\nclass PICTImageSaver extends ImageSaver {\n\n/**\n * Saves the image in PICT format.\n */\n\tpublic void saveImage(Image image) {\n\t\tpixels = MediaTools.getPixelArray(image);\n\t\tObject property = image.getProperty(\"PSPreview\", null);\n\t\tpsPreview = (property instanceof String[]) ? (String[]) property : null;\n\t\twidth = pixels[0].length;\n\t\theight = pixels.length;\n\t\trowBytes = 4 * width;\n\t\tif (paddingFlag) dumpPadding();\n\t\tdumpHeader();\n\t\tdumpDefHilite();\n\t\tdumpClipRegion();\n\t\tdumpBoundsMarkers();\n\t\tif (psPreview != null) {\n\t\t\tdumpShort(OP_SHORT_COMMENT);\n\t\t\tdumpShort(PS_BEGIN);\n\t\t}\n\t\tdumpDirectBitsRect();\n\t\tif (psPreview != null) {\n\t\t\tdumpPSPreview();\n\t\t\tdumpShort(OP_SHORT_COMMENT);\n\t\t\tdumpShort(PS_END);\n\t\t}\n\t\tdumpEndPict();\n\t}\n\n/**\n * Sets the internal flag used to control whether padding bytes are\n * added at the beginning of the file.  When a PICT file is stored\n * on disk, these bytes must be present; when a PICT file is embedded\n * in some other structure (such as an RTF file), these bytes do not\n * appear.  Padding is enabled by default.\n *\n * @usage saver.setPaddingFlag(flag)\n * @param flag A flag to control padding (<code>true</code> by default)\n */\n\tpublic void setPaddingFlag(boolean flag) {\n\t\tpaddingFlag = flag;\n\t}\n\n/**\n * Writes out the initial padding in a PICT file.  Subclasses can\n * suppress this padding by calling <code>setPaddingFlag(false)</code>.\n */\n\tprivate void dumpPadding() {\n\t\tfor (int i = 0; i < PICT_PADDING; i++) {\n\t\t\tdumpByte(0);\n\t\t}\n\t}\n\n/**\n * Dumps the header of the PICT file.\n */\n\tprivate void dumpHeader() {\n\t\tdumpShort(0);                     /* Count (ignored)  */\n\t\tdumpShort(0);                     /* Bounds: y        */\n\t\tdumpShort(0);                     /*         x        */\n\t\tdumpShort(height);                /*         height   */\n\t\tdumpShort(width);                 /*         width    */\n\t\tdumpShort(OP_VERSION);            /* VERSION opcode   */\n\t\tdumpShort(VERSION);               /* Version 2 code   */\n\t\tdumpShort(OP_HEADER);             /* HEADER opcode    */\n\t\tdumpShort(0xFFFE);                /* Extended V2      */\n\t\tdumpShort(0);                     /* Reserved         */\n\t\tdumpShort(72);                    /* X resolution     */\n\t\tdumpShort(0);                     /* Fixed (72, 0)    */\n\t\tdumpShort(72);                    /* Y resolution     */\n\t\tdumpShort(0);                     /* Fixed (72, 0)    */\n\t\tdumpShort(0);                     /* Bounds: y        */\n\t\tdumpShort(0);                     /*         x        */\n\t\tdumpShort(height);                /*         height   */\n\t\tdumpShort(width);                 /*         width    */\n\t\tdumpLong(0);                      /* Reserved         */\n\t}\n\n/**\n * Dumps the <code>DefHighlight</code> operation at the beginning of the\n * PICT file.\n */\n\tprivate void dumpDefHilite() {\n\t\tdumpShort(OP_DEF_HILITE);         /* Opcode           */\n\t};\n\n/**\n * Dumps the rectangle that represents the clipping region.\n */\n\tprivate void dumpClipRegion() {\n\t\tdumpShort(OP_CLIP);               /* Opcode           */\n\t\tdumpShort(10);                    /* Region size      */\n\t\tdumpShort(0);                     /* Bounds: y        */\n\t\tdumpShort(0);                     /*         x        */\n\t\tdumpShort(height);                /*         height   */\n\t\tdumpShort(width);                 /*         width    */\n\t}\n\n/**\n * Dumps <code>OP_SHORT_LINE</code> commands at each corner to ensure that\n * the bounds are correct.\n */\n\tprivate void dumpBoundsMarkers() {\n\t    dumpShort(OP_SHORT_LINE);         /* Opcode           */\n\t    dumpShort(0);                     /* Origin: y        */\n\t    dumpShort(0);                     /*         x        */\n\t\tdumpShort(0);                     /* delta = (0,0)    */\n\t    dumpShort(OP_SHORT_LINE);         /* Opcode           */\n\t    dumpShort(height);                /* Origin: y        */\n\t    dumpShort(width);                 /*         x        */\n\t\tdumpShort(0);                     /* delta = (0,0)    */\n\t}\n\n/**\n * Inserts a <code>DirectBitsRect</code> operation along with the associated\n * data for the image.\n */\n\tprivate void dumpDirectBitsRect() {\n\t\tdumpShort(OP_DIRECT_BITS_RECT);   /* Opcode           */\n\t\tdumpPixMap();                     /* Inline pixmap    */\n\t\tdumpShort(0);                     /* srcRect: y       */\n\t\tdumpShort(0);                     /*          x       */\n\t\tdumpShort(height);                /*          height  */\n\t\tdumpShort(width);                 /*          width   */\n\t\tdumpShort(0);                     /* dstRect: y       */\n\t\tdumpShort(0);                     /*          x       */\n\t\tdumpShort(height);                /*          height  */\n\t\tdumpShort(width);                 /*          width   */\n\t\tdumpShort(SRC_COPY);              /* Transfer mode    */\n\t\tdumpPixelData();                  /* Inline data      */\n\t}\n\n/**\n * Inserts a <code>PixMap</code> operation structure used to specify\n * the properties of the image.\n */\n\tprivate void dumpPixMap() {\n\t\tdumpLong(0xFF);                   /* Inline marker    */\n\t\tdumpShort(rowBytes | 0x8000);     /* Row bytes + flag */\n\t\tdumpShort(0);                     /* Bounds: y        */\n\t\tdumpShort(0);                     /*         x        */\n\t\tdumpShort(height);                /*         height   */\n\t\tdumpShort(width);                 /*         width    */\n\t\tdumpShort(0);                     /* PixMap version   */\n\t\tdumpShort(4);                     /* Packing format   */\n\t\tdumpLong(0);                      /* Packed size      */\n\t\tdumpShort(72);                    /* X resolution     */\n\t\tdumpShort(0);                     /* Fixed (72, 0)    */\n\t\tdumpShort(72);                    /* Y resolution     */\n\t\tdumpShort(0);                     /* Fixed (72, 0)    */\n\t\tdumpShort(RGB_DIRECT);            /* Pixel type       */\n\t\tdumpShort(32);                    /* Bits per pixel   */\n\t\tdumpShort(3);                     /* Component count  */\n\t\tdumpShort(8);                     /* Component size   */\n\t\tdumpLong(0);                      /* Plane bytes      */\n\t\tdumpLong(0);                      /* No color table   */\n\t\tdumpLong(0);                      /* Reserved         */\n\t}\n\n/**\n * Dumps the <code>EndPict</code> operation at the end of the PICT file.\n */\n\tprivate void dumpEndPict() {\n\t\tdumpShort(OP_END_PICT);\n\t};\n\n/**\n * Dumps the actual pixel data, one scan line at a time.\n */\n\tprivate void dumpPixelData() {\n\t\tint byteCount = 0;\n\t\tbyte[] data = new byte[rowBytes];\n\t\tfor (int i = 0; i < height; i++) {\n\t\t\tint nBytes = packScanLine(data, pixels[i]);\n\t\t\tif (rowBytes > 250) {\n\t\t\t\tdumpShort(nBytes);\n\t\t\t\tbyteCount += 2;\n\t\t\t} else {\n\t\t\t\tdumpByte(nBytes);\n\t\t\t\tbyteCount++;\n\t\t\t}\n\t\t\tfor (int j = 0; j < nBytes; j++) {\n\t\t\t\tdumpByte(data[j]);\n\t\t\t}\n\t\t\tbyteCount += nBytes;\n\t\t}\n\t\tif (byteCount % 2 == 1) dumpByte(0);\n\t}\n\n/**\n * Packs the data from the pixel scan line into the data buffer.\n * This packing method always uses Macintosh QuickTime (type 4)\n * encoding, because that is the only packing type that most\n * applications understand.\n *\n * <p>Each packed scanline uses run-length encoding to compress\n * the data for each component of the scan line independently,\n * starting with the red values.  Each sequence of bytes in the\n * encoding is preceded by a flag byte <code>b</code>, which has\n * two interpretations depending on its high-order bit:\n *\n * <p><ul>\n *    <li>If the high-order bit is 0, the flag byte is followed by\n *        <code>b + 1</code> data bytes.\n *    <li>If that bit is 1, the flag byte is followed by (-b)\n *        <code>-b + 1</code> copies of the next byte.\n * </ul>\n *\n * <p>Some PICT readers seem to preallocate space for a scan line\n * based on the maximal size of the optimal run-length encoding.\n * Unfortunately, in a scan line with short matching sequences\n * alternating with short independent sequences, the naive\n * implementation of run-length encoding can exceed this limit.\n * To avoid this problem, this implementation encodes a component\n * and then tests to see whether it is longer than the same encoding\n * assuming all bytes are independent.  If so, it replaces the\n * naive encoding with the shorter brute-force one.\n */\n\tprivate int packScanLine(byte[] data, int[] scanline) {\n\t\tint flagIndex = 0;\n\t\tfor (int rgbIndex = 0; rgbIndex < 3; rgbIndex++) {\n\t\t\tchar rgb = \"RGB\".charAt(rgbIndex);\n\t\t\tint baseIndex = flagIndex;\n\t\t\tint dataIndex = flagIndex + 1;\n\t\t\tint scanIndex = 0;\n\t\t\twhile (scanIndex < width) {\n\t\t\t\tint b0 = getPixelComponent(scanline[scanIndex++], rgb);\n\t\t\t\tdata[dataIndex++] = (byte) b0;\n\t\t\t\tint runLength = 1;\n\t\t\t\tboolean matching = false;\n\t\t\t\tif (scanIndex < width) {\n\t\t\t\t\tint b1 = getPixelComponent(scanline[scanIndex], rgb);\n\t\t\t\t\tmatching = (b0 == b1);\n\t\t\t\t\tif (matching) {\n\t\t\t\t\t\twhile (runLength < 128 && scanIndex < width) {\n\t\t\t\t\t\t\tb1 = getPixelComponent(scanline[scanIndex], rgb);\n\t\t\t\t\t\t\tif (b0 != b1) break;\n\t\t\t\t\t\t\trunLength++;\n\t\t\t\t\t\t\tscanIndex++;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\twhile (runLength < 128 && scanIndex < width) {\n\t\t\t\t\t\t\tb1 = getPixelComponent(scanline[scanIndex], rgb);\n\t\t\t\t\t\t\tif (b0 == b1) {\n\t\t\t\t\t\t\t\tdataIndex--;\n\t\t\t\t\t\t\t\trunLength--;\n\t\t\t\t\t\t\t\tscanIndex--;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdata[dataIndex++] = (byte) b1;\n\t\t\t\t\t\t\tb0 = b1;\n\t\t\t\t\t\t\trunLength++;\n\t\t\t\t\t\t\tscanIndex++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (matching) {\n\t\t\t\t\tdata[flagIndex] = (byte) (0x80 | (129 - runLength));\n\t\t\t\t} else {\n\t\t\t\t\tdata[flagIndex] = (byte) (runLength - 1);\n\t\t\t\t}\n\t\t\t\tflagIndex = dataIndex++;\n\t\t\t}\n\t\t\tif (flagIndex - baseIndex > width + width / 128) {\n\t\t\t\tint count = width;\n\t\t\t\tflagIndex = baseIndex;\n\t\t\t\tfor (int i = 0; i < width; i++) {\n\t\t\t\t\tif (i % 128 == 0) {\n\t\t\t\t\t\tint nBytes = (count > 128) ? 128 : count;\n\t\t\t\t\t\tdata[flagIndex++] = (byte) (nBytes - 1);\n\t\t\t\t\t\tcount -= nBytes;\n\t\t\t\t\t}\n\t\t\t\t\tdata[flagIndex++] = (byte) getPixelComponent(scanline[i], rgb);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn flagIndex;\n\t}\n\n/**\n * Writes out the code for the PostScript preview, which is embedded in\n * the picture comments.\n */\n\tprivate void dumpPSPreview() {\n\t\taddPSComment(\"/dictCount countdictstack def\");\n\t\taddPSComment(\"/opCount count 1 sub def\");\n\t\taddPSComment(PS_DICT_SIZE + \" dict begin\");\n\t\taddPSComment(\"/showpage {} def\");\n\t\taddPSComment(\"0 setgray 0 setlinecap\");\n\t\taddPSComment(\"1 setlinewidth 0 setlinejoin\");\n\t\taddPSComment(\"10 setmiterlimit [] 0 setdash\");\n\t\taddPSComment(\"/languagelevel where {\");\n\t\taddPSComment(\"  pop languagelevel\");\n\t\taddPSComment(\"  1 ne { false setstrokeadjust false setoverprint } if\");\n\t\taddPSComment(\"} if\");\n\t\taddPSComment(\"gsave\");\n\t\taddPSComment(\"clippath pathbbox\");\n\t\taddPSComment(\"pop pop \" + height + \" add translate\");\n\t\taddPSComment(\"1 -1 scale\");\n\t\tfor (int i = 0; i < psPreview.length; i++) {\n\t\t\taddPSComment(psPreview[i]);\n\t\t}\n\t\taddPSComment(\"grestore\");\n\t\taddPSComment(\"end\");\n\t\taddPSComment(\"count opCount sub {pop} repeat\");\n\t\taddPSComment(\"countdictstack dictCount sub {end} repeat\");\n\t}\n\n/**\n * Adds a PostScript comment line.\n */\n\tprivate void addPSComment(String line) {\n\t\tif (line.length() % 2 == 0) line += \" \";\n\t\tdumpShort(OP_LONG_COMMENT);\n\t\tdumpShort(PS_HANDLE);\n\t\tdumpShort(line.length() + 1);\n\t\tfor (int i = 0; i < line.length(); i++) {\n\t\t\tdumpByte(line.charAt(i));\n\t\t}\n\t\tdumpByte('\\r');\n\t}\n\n/* Private constants */\n\tprivate static final int OP_CLIP = 0x0001;\n\tprivate static final int OP_VERSION = 0x0011;\n\tprivate static final int OP_DEF_HILITE = 0x001E;\n\tprivate static final int OP_SHORT_LINE = 0x0022;\n\tprivate static final int OP_DIRECT_BITS_RECT = 0x009A;\n\tprivate static final int OP_SHORT_COMMENT = 0x00A0;\n\tprivate static final int OP_LONG_COMMENT = 0x00A1;\n\tprivate static final int OP_END_PICT = 0x00FF;\n\tprivate static final int OP_HEADER = 0x0C00;\n\tprivate static final int PS_BEGIN = 190;\n\tprivate static final int PS_END = 191;\n\tprivate static final int PS_HANDLE = 192;\n\tprivate static final int PS_DICT_SIZE = 500;\n\tprivate static final int VERSION = 0x02FF;\n\tprivate static final int PICT_PADDING = 512;\n\tprivate static final int RGB_DIRECT = 16;\n\tprivate static final int SRC_COPY = 0;\n\n/* Private instance variables */\n\tprivate int[][] pixels;\n\tprivate String[] psPreview;\n\tprivate int width;\n\tprivate int height;\n\tprivate int rowBytes;\n\tprivate boolean paddingFlag = true;\n\n}\n\nclass PICImageSaver extends PICTImageSaver {\n\t/* Entirely inherited from PICTImageSaver */\n}\n\n/* Package class: EPSImageSaver */\n/**\n * This class saves EPS images.\n */\nclass EPSImageSaver extends ImageSaver {\n\tpublic void saveImage(Image image) {\n\t\tthrow new ErrorException(\"saveImage: Not yet implemented\");\n\t}\n}\n\n/* Package class: RTFImageSaver */\n/**\n * This class saves images as an RTF file that can then be read into a word\n * processor.\n */\nclass RTFImageSaver extends PICTImageSaver {\n\tpublic void saveImage(Image image) {\n\t\tint width = image.getWidth(null);\n\t\tint height = image.getHeight(null);\n\t\tPrintStream out = new PrintStream(new BufferedOutputStream(getOutputStream()));\n\t\tsetOutputStream(JTFTools.openHexByteOutputStream(out));\n\t\tfor (int i = 0; i < RTF_HEADER.length; i++) {\n\t\t\tout.println(RTF_HEADER[i]);\n\t\t}\n\t\tout.println(\"{{\\\\pict\\\\macpict\\\\picw\" + width + \"\\\\pich\" + height);\n\t\tsetPaddingFlag(false);\n\t\tsuper.saveImage(image);\n\t\tout.println(\"}}\\\\par\");\n\t\tout.println(\"}\");\n\t\tout.close();\n\t}\n\n/**\n * On the Macintosh, the default application for RTF files is TextEdit, which\n * doesn't display previews.  This method ensures that these files open using\n * Microsoft Word.\n */\n\tpublic void updateFileType(File file) {\n\t\tPlatform.setFileTypeAndCreator(file, \"TEXT\", \"MSWD\");\n\t}\n\n\tprivate static final String[] RTF_HEADER = {\n\t\t\"{\\\\rtf1\\\\mac\\\\deff2\",\n\t\t\"{\\\\fonttbl{\\\\f20\\\\froman Times;} {\\\\f22\\\\fmodern Courier;}}\",\n\t\t\"{\\\\colortbl\\\\red0\\\\green0\\\\blue0;\\\\red0\\\\green0\\\\blue255;\",\n\t\t\"\\\\red0\\\\green255\\\\blue255;\\\\red0\\\\green255\\\\blue0;\",\n\t\t\"\\\\red255\\\\green0\\\\blue255;\\\\red255\\\\green0\\\\blue0;\",\n\t\t\"\\\\red255\\\\green255\\\\blue0;\\\\red255\\\\green255\\\\blue255;}\",\n\t\t\"{\\\\stylesheet{\\\\f20 \\\\sbasedon222\\\\snext0 Normal;}}\",\n\t\t\"\\\\widowctrl\\\\ftnbj \\\\sectd \\\\sbknone\\\\linemod0\\\\linex0\\\\cols1\\\\endnhere\",\n\t\t\"\\\\pard\\\\plain \\\\s0\\\\qc\\\\f20\"\n\t};\n}\n\n/*+--------------------------------------------------------------------+*/\n/*| NOTE:                                                              |*/\n/*|   The remainder of this file consists of the public-domain GIF     |*/\n/*|   encoder released by J. M. G. Elliott (tep@jmge.net), which is    |*/\n/*|   available from http://jmge.net/java/gifenc/.                     |*/\n/*|                                                                    |*/\n/*|   The only changes made here are:                                  |*/\n/*|     1. Change to comment format (reserving double-slash for        |*/\n/*|        change markers)                                             |*/\n/*|     2. Make all classes package private                            |*/\n/*|     3. Fix all warnings generated by Eclipse                       |*/\n/*+--------------------------------------------------------------------+*/\n\n/*----------------------------------------------------------------------*/\n/* DirectGif89Frame                                                     */\n/*----------------------------------------------------------------------*/\n\n/**\n * Instances of this Gif89Frame subclass are constructed from RGB image info,\n *  either in the form of an Image object or a pixel array.\n *  <p>\n *  There is an important restriction to note.  It is only permissible to add\n *  DirectGif89Frame objects to a Gif89Encoder constructed without an explicit\n *  color map.  The GIF color table will be automatically generated from pixel\n *  information.\n *\n * @version 0.90 beta (15-Jul-2000)\n * @author J. M. G. Elliott (tep@jmge.net)\n * @see Gif89Encoder\n * @see Gif89Frame\n * @see IndexGif89Frame\n */\nclass DirectGif89Frame extends Gif89Frame {\n\n\tprivate int[] argbPixels;\n\n/**\n * Construct an DirectGif89Frame from a Java image.\n *\n * @param img\n *   A java.awt.Image object that supports pixel-grabbing.\n * @exception IOException\n *   If the image is unencodable due to failure of pixel-grabbing.\n */\n\tpublic DirectGif89Frame(Image img) throws IOException {\n\t\tPixelGrabber pg = new PixelGrabber(img, 0, 0, -1, -1, true);\n\n\t\tString errmsg = null;\n\t\ttry {\n\t\t\tif (!pg.grabPixels())\n\t\t\t\terrmsg = \"can't grab pixels from image\";\n\t\t} catch (InterruptedException e) {\n\t\t\terrmsg = \"interrupted grabbing pixels from image\";\n\t\t}\n\n\t\tif (errmsg != null)\n\t\t\tthrow new IOException(errmsg + \" (\" + getClass().getName() + \")\");\n\n\t\ttheWidth = pg.getWidth();\n\t\ttheHeight = pg.getHeight();\n\t\targbPixels = (int[]) pg.getPixels();\n\t\tciPixels = new byte[argbPixels.length];\n\t}\n\n/**\n * Construct an DirectGif89Frame from ARGB pixel data.\n *\n * @param width\n *   Width of the bitmap.\n * @param height\n *   Height of the bitmap.\n * @param argb_pixels\n *   Array containing at least width*height pixels in the format returned by\n *   java.awt.Color.getRGB().\n */\n\tpublic DirectGif89Frame(int width, int height, int argb_pixels[]) {\n\t\ttheWidth = width;\n\t\ttheHeight = height;\n\t\targbPixels = new int[theWidth * theHeight];\n\t\tSystem.arraycopy(argb_pixels, 0, argbPixels, 0, argbPixels.length);\n\t\tciPixels = new byte[argbPixels.length];\n\t}\n\n\tObject getPixelSource() { return argbPixels; }\n}\n\n/*----------------------------------------------------------------------*/\n/* Gif89Encoder                                                         */\n/*----------------------------------------------------------------------*/\n\n/**\n * This is the central class of a JDK 1.1 compatible GIF encoder that, AFAIK,\n *  supports more features of the extended GIF spec than any other Java open\n *  source encoder.  Some sections of the source are lifted or adapted from Jef\n *  Poskanzer's <cite>Acme GifEncoder</cite> (so please see the\n *  <a href=\"../readme.txt\">readme</a> containing his notice), but much of it,\n *  including nearly all of the present class, is original code.  My main\n *  motivation for writing a new encoder was to support animated GIFs, but the\n *  package also adds support for embedded textual comments.\n *  <p>\n *  There are still some limitations.  For instance, animations are limited to\n *  a single global color table.  But that is usually what you want anyway, so\n *  as to avoid irregularities on some displays.  (So this is not really a\n *  limitation, but a \"disciplinary feature\" :)  Another rather more serious\n *  restriction is that the total number of RGB colors in a given input-batch\n *  mustn't exceed 256.  Obviously, there is an opening here for someone who\n *  would like to add a color-reducing preprocessor.\n *  <p>\n *  The encoder, though very usable in its present form, is at bottom only a\n *  partial implementation skewed toward my own particular needs.  Hence a\n *  couple of caveats are in order.  (1) During development it was in the back\n *  of my mind that an encoder object should be reusable - i.e., you should be\n *  able to make multiple calls to encode() on the same object, with or without\n *  intervening frame additions or changes to options.  But I haven't reviewed\n *  the code with such usage in mind, much less tested it, so it's likely I\n *  overlooked something.  (2) The encoder classes aren't thread safe, so use\n *  caution in a context where access is shared by multiple threads.  (Better\n *  yet, finish the library and re-release it :)\n *  <p>\n *  There follow a couple of simple examples illustrating the most common way to\n *  use the encoder, i.e., to encode AWT Image objects created elsewhere in the\n *  program.  Use of some of the most popular format options is also shown,\n *  though you will want to peruse the API for additional features.\n *\n *  <p>\n *  <strong>Animated GIF Example</strong>\n *  <pre>\n *  import net.jmge.gif.Gif89Encoder;\n *  ...\n *  void writeAnimatedGIF(Image[] still_images,\n *                        String annotation,\n *                        boolean looped,\n *                        double frames_per_second,\n *                        OutputStream out) throws IOException\n *  {\n *    Gif89Encoder gifenc = new Gif89Encoder();\n *    for (int i = 0; i < still_images.length; ++i)\n *      gifenc.addFrame(still_images[i]);\n *    gifenc.setComments(annotation);\n *    gifenc.setLoopCount(looped ? 0 : 1);\n *    gifenc.setUniformDelay((int) Math.round(100 / frames_per_second));\n *    gifenc.encode(out);\n *  }\n *  </pre>\n *\n *  <strong>Static GIF Example</strong>\n *  <pre>\n *  import net.jmge.gif.Gif89Encoder;\n *  ...\n *  void writeNormalGIF(Image img,\n *                      String annotation,\n *                      int transparent_index,\n *                      boolean interlaced,\n *                      OutputStream out) throws IOException\n *  {\n *    Gif89Encoder gifenc = new Gif89Encoder(img);\n *    gifenc.setComments(annotation);\n *    gifenc.setTransparentIndex(transparent_index);\n *    gifenc.getFrameAt(0).setInterlaced(interlaced);\n *    gifenc.encode(out);\n *  }\n *  </pre>\n *\n * @version 0.90 beta (15-Jul-2000)\n * @author J. M. G. Elliott (tep@jmge.net)\n * @see Gif89Frame\n * @see DirectGif89Frame\n * @see IndexGif89Frame\n */\nclass Gif89Encoder {\n\n\tprivate Dimension dispDim = new Dimension(0, 0);\n\tprivate GifColorTable colorTable;\n\tprivate int bgIndex = 0;\n\tprivate int loopCount = 1;\n\tprivate String theComments;\n\tprivate Vector<Gif89Frame> vFrames = new Vector<Gif89Frame>();\n\n/**\n * Use this default constructor if you'll be adding multiple frames\n * constructed from RGB data (i.e., AWT Image objects or ARGB-pixel arrays).\n */\n\tpublic Gif89Encoder() {\n\t\t/* empty color table puts us into \"palette autodetect\" mode */\n\t\tcolorTable = new GifColorTable();\n\t}\n\n/**\n * Like the default except that it also adds a single frame, for conveniently\n *  encoding a static GIF from an image.\n *\n * @param static_image\n *   Any Image object that supports pixel-grabbing.\n * @exception IOException\n *   See the addFrame() methods.\n */\n\tpublic Gif89Encoder(Image static_image) throws IOException {\n\t\tthis();\n\t\taddFrame(static_image);\n\t}\n\n/**\n * This constructor installs a user color table, overriding the detection of\n *  of a palette from ARBG pixels.\n *\n *  Use of this constructor imposes a couple of restrictions:\n *  (1) Frame objects can't be of type DirectGif89Frame\n *  (2) Transparency, if desired, must be set explicitly.\n *\n * @param colors\n *   Array of color values; no more than 256 colors will be read, since that's\n *   the limit for a GIF.\n */\n\tpublic Gif89Encoder(Color[] colors) {\n\t\tcolorTable = new GifColorTable(colors);\n\t}\n\n/**\n * Convenience constructor for encoding a static GIF from index-model data.\n *  Adds a single frame as specified.\n *\n * @param colors\n *   Array of color values; no more than 256 colors will be read, since\n *   that's the limit for a GIF.\n * @param width\n *   Width of the GIF bitmap.\n * @param height\n *   Height of same.\n * @param ci_pixels\n *   Array of color-index pixels no less than width * height in length.\n * @exception IOException\n *   See the addFrame() methods.\n */\n\tpublic Gif89Encoder(Color[] colors, int width, int height, byte ci_pixels[])\n\tthrows IOException {\n\t\tthis(colors);\n\t\taddFrame(width, height, ci_pixels);\n\t}\n\n/**\n * Get the number of frames that have been added so far.\n *\n * @return\n *  Number of frame items.\n */\n\tpublic int getFrameCount() { return vFrames.size(); }\n\n/**\n * Get a reference back to a Gif89Frame object by position.\n *\n * @param index\n *   Zero-based index of the frame in the sequence.\n * @return\n *   Gif89Frame object at the specified position (or null if no such frame).\n */\n\tpublic Gif89Frame getFrameAt(int index) {\n\t\treturn isOk(index) ? (Gif89Frame) vFrames.elementAt(index) : null;\n\t}\n\n/**\n * Add a Gif89Frame frame to the end of the internal sequence.  Note that\n *  there are restrictions on the Gif89Frame type: if the encoder object was\n *  constructed with an explicit color table, an attempt to add a\n *  DirectGif89Frame will throw an exception.\n *\n * @param gf\n *   An externally constructed Gif89Frame.\n * @exception IOException\n *   If Gif89Frame can't be accommodated.  This could happen if either (1) the\n *   aggregate cross-frame RGB color count exceeds 256, or (2) the Gif89Frame\n *   subclass is incompatible with the present encoder object.\n */\n\tpublic void addFrame(Gif89Frame gf) throws IOException {\n\t\taccommodateFrame(gf);\n\t\tvFrames.addElement(gf);\n\t}\n\n/**\n * Convenience version of addFrame() that takes a Java Image, internally\n * constructing the requisite DirectGif89Frame.\n *\n * @param image\n *   Any Image object that supports pixel-grabbing.\n * @exception IOException\n *   If either (1) pixel-grabbing fails, (2) the aggregate cross-frame RGB\n *   color count exceeds 256, or (3) this encoder object was constructed with\n *   an explicit color table.\n */\n\tpublic void addFrame(Image image) throws IOException {\n\t\taddFrame(new DirectGif89Frame(image));\n\t}\n\n/**\n * The index-model convenience version of addFrame().\n *\n * @param width\n *   Width of the GIF bitmap.\n * @param height\n *   Height of same.\n * @param ci_pixels\n *   Array of color-index pixels no less than width * height in length.\n * @exception IOException\n *   Actually, in the present implementation, there aren't any unchecked\n *   exceptions that can be thrown when adding an IndexGif89Frame\n *   <i>per se</i>.  But I might add some pedantic check later, to justify the\n *   generality :)\n */\n\tpublic void addFrame(int width, int height, byte ci_pixels[])\n\tthrows IOException {\n\t\taddFrame(new IndexGif89Frame(width, height, ci_pixels));\n\t}\n\n/**\n * Like addFrame() except that the frame is inserted at a specific point in\n *  the sequence rather than appended.\n *\n * @param index\n *   Zero-based index at which to insert frame.\n * @param gf\n *   An externally constructed Gif89Frame.\n * @exception IOException\n *   If Gif89Frame can't be accommodated.  This could happen if either (1)\n *   the aggregate cross-frame RGB color count exceeds 256, or (2) the\n *   Gif89Frame subclass is incompatible with the present encoder object.\n */\n\tpublic void insertFrame(int index, Gif89Frame gf) throws IOException {\n\t\taccommodateFrame(gf);\n\t\tvFrames.insertElementAt(gf, index);\n\t}\n\n/**\n * Set the color table index for the transparent color, if any.\n *\n * @param index\n *   Index of the color that should be rendered as transparent, if any.\n *   A value of -1 turns off transparency.  (Default: -1)\n */\n\tpublic void setTransparentIndex(int index) {\n\t\tcolorTable.setTransparent(index);\n\t}\n\n/**\n * Sets attributes of the multi-image display area, if applicable.\n *\n * @param dim\n *   Width/height of display.  (Default: largest detected frame size)\n * @param background\n *   Color table index of background color.  (Default: 0)\n * @see Gif89Frame#setPosition\n */\n\tpublic void setLogicalDisplay(Dimension dim, int background) {\n\t\tdispDim = new Dimension(dim);\n\t\tbgIndex = background;\n\t}\n\n/**\n * Set animation looping parameter, if applicable.\n *\n * @param count\n *   Number of times to play sequence.  Special value of 0 specifies\n *   indefinite looping.  (Default: 1)\n */\n\tpublic void setLoopCount(int count) {\n\t\tloopCount = count;\n\t}\n\n/**\n * Specify some textual comments to be embedded in GIF.\n *\n * @param comments\n *   String containing ASCII comments.\n */\n\tpublic void setComments(String comments) {\n\t\ttheComments = comments;\n\t}\n\n/**\n * A convenience method for setting the \"animation speed\".  It simply sets\n *  the delay parameter for each frame in the sequence to the supplied value.\n *  Since this is actually frame-level rather than animation-level data, take\n *  care to add your frames before calling this method.\n *\n * @param interval\n *   Interframe interval in centiseconds.\n */\n\tpublic void setUniformDelay(int interval) {\n\t\tfor (int i = 0; i < vFrames.size(); ++i)\n\t\t\tvFrames.elementAt(i).setDelay(interval);\n\t}\n\n/**\n * After adding your frame(s) and setting your options, simply call this\n * method to write the GIF to the passed stream.  Multiple calls are\n * permissible if for some reason that is useful to your application.  (The\n * method simply encodes the current state of the object with no thought\n * to previous calls.)\n *\n * @param out\n *   The stream you want the GIF written to.\n * @exception IOException\n *   If a write error is encountered.\n */\n\tpublic void encode(OutputStream out) throws IOException {\n\t\tint     nframes = getFrameCount();\n\t\tboolean is_sequence = nframes > 1;\n\n\t\t/* N.B. must be called before writing screen descriptor */\n\t\tcolorTable.closePixelProcessing();\n\n\t\t/* write GIF HEADER */\n\t\tGif89Put.ascii(\"GIF89a\", out);\n\n\t\t/* write global blocks */\n\t\twriteLogicalScreenDescriptor(out);\n\t\tcolorTable.encode(out);\n\t\tif (is_sequence && loopCount != 1)\n\t\t\twriteNetscapeExtension(out);\n\t\tif (theComments != null && theComments.length() > 0)\n\t\t\twriteCommentExtension(out);\n\n\t\t/* write out the control and rendering data for each frame */\n\t\tfor (int i = 0; i < nframes; ++i)\n\t\t\tvFrames.elementAt(i).encode(\n\t\t\t\t\tout, is_sequence, colorTable.getDepth(), colorTable.getTransparent()\n\t\t\t);\n\n\t\t/* write GIF TRAILER */\n\t\tout.write(';');\n\n\t\tout.flush();\n\t}\n\n/**\n * A simple driver to test the installation and to demo usage.  Put the JAR\n * on your classpath and run ala\n * <blockquote>java net.jmge.gif.Gif89Encoder {filename}</blockquote>\n * The filename must be either (1) a JPEG file with extension 'jpg', for\n * conversion to a static GIF, or (2) a file containing a list of GIFs and/or\n * JPEGs, one per line, to be combined into an animated GIF.  The output will\n * appear in the current directory as 'gif89out.gif'.\n * <p>\n * (N.B. This test program will abort if the input file(s) exceed(s) 256 total\n * RGB colors, so in its present form it has no value as a generic JPEG to GIF\n * converter.  Also, when multiple files are input, you need to be wary of the\n * total color count, regardless of file type.)\n *\n * @param args\n *   Command-line arguments, only the first of which is used, as mentioned\n *   above.\n */\n\tpublic static void main(String[] args) {\n\t\ttry {\n\n\t\t\tToolkit      tk = Toolkit.getDefaultToolkit();\n\t\t\tOutputStream out = new BufferedOutputStream(\n\t\t\t\t\tnew FileOutputStream(\"gif89out.gif\")\n\t\t\t);\n\n\t\t\tif (args[0].toUpperCase().endsWith(\".JPG\"))\n\t\t\t\tnew Gif89Encoder(tk.getImage(args[0])).encode(out);\n\t\t\telse {\n\t\t\t\tBufferedReader in = new BufferedReader(new FileReader(args[0]));\n\t\t\t\tGif89Encoder   ge = new Gif89Encoder();\n\n\t\t\t\tString line;\n\t\t\t\twhile ((line = in.readLine()) != null)\n\t\t\t\t\tge.addFrame(tk.getImage(line.trim()));\n\t\t\t\tge.setLoopCount(0);  /* let's loop indefinitely  */\n\t\t\t\tge.encode(out);\n\n\t\t\t\tin.close();\n\t\t\t}\n\t\t\tout.close();\n\n\t\t}\n\t\tcatch (Exception e) { e.printStackTrace(); }\n\t\tfinally { System.exit(0); } /* must kill VM explicitly (Toolkit thread?) */\n\t}\n\n\tprivate void accommodateFrame(Gif89Frame gf) throws IOException {\n\t\tdispDim.width = Math.max(dispDim.width, gf.getWidth());\n\t\tdispDim.height = Math.max(dispDim.height, gf.getHeight());\n\t\tcolorTable.processPixels(gf);\n\t}\n\n\tprivate void writeLogicalScreenDescriptor(OutputStream os) throws IOException {\n\t\tGif89Put.leShort(dispDim.width, os);\n\t\tGif89Put.leShort(dispDim.height, os);\n\n\t\t/* write 4 fields, packed into a byte  (bitfieldsize:value) */\n\t\t/*   global color map present?         (1:1)                */\n\t\t/*   bits per primary color less 1     (3:7)                */\n\t\t/*   sorted color table?               (1:0)                */\n\t\t/*   bits per pixel less 1             (3:varies)           */\n\t\tos.write(0xf0 | colorTable.getDepth() - 1);\n\n\t\t/* write background color index  */\n\t\tos.write(bgIndex);\n\n\t\t/* Jef Poskanzer's notes on the next field, for our possible edification: */\n\t\t/* Pixel aspect ratio - 1:1. */\n\t\t/*Putbyte( (byte) 49, outs ); */\n\t\t/* Java's GIF reader currently has a bug, if the aspect ratio byte is */\n\t\t/* not zero it throws an ImageFormatException.  It doesn't know that */\n\t\t/* 49 means a 1:1 aspect ratio.  Well, whatever, zero works with all */\n\t\t/* the other decoders I've tried so it probably doesn't hurt. */\n\n\t\t/* OK, if it's good enough for Jef, it's definitely good enough for us: */\n\t\tos.write(0);\n\t}\n\n\tprivate void writeNetscapeExtension(OutputStream os) throws IOException {\n\t\t/* n.b. most software seems to interpret the count as a repeat count */\n\t\t/* (i.e., interations beyond 1) rather than as an iteration count */\n\t\t/* (thus, to avoid repeating we have to omit the whole extension) */\n\n\t\tos.write('!');                 /* GIF Extension Introducer */\n\t\tos.write(0xff);                /* Application Extension Label */\n\n\t\tos.write(11);                  /* application ID block size */\n\t\tGif89Put.ascii(\"NETSCAPE2.0\", os);  /* application ID data */\n\n\t\tos.write(3);                   /* data sub-block size */\n\t\tos.write(1);                   /* a looping flag? dunno */\n\n\t\t/* we finally write the relevent data */\n\t\tGif89Put.leShort(loopCount > 1 ? loopCount - 1 : 0, os);\n\n\t\tos.write(0);                   /* block terminator */\n\t}\n\n\tprivate void writeCommentExtension(OutputStream os) throws IOException {\n\t\tos.write('!');           /* GIF Extension Introducer */\n\t\tos.write(0xfe);          /* Comment Extension Label */\n\n\t\tint remainder = theComments.length() % 255;\n\t\tint nsubblocks_full = theComments.length() / 255;\n\t\tint nsubblocks = nsubblocks_full + (remainder > 0 ? 1 : 0);\n\t\tint ibyte = 0;\n\t\tfor (int isb = 0; isb < nsubblocks; ++isb) {\n\t\t\tint size = isb < nsubblocks_full ? 255 : remainder;\n\n\t\t\tos.write(size);\n\t\t\tGif89Put.ascii(theComments.substring(ibyte, ibyte + size), os);\n\t\t\tibyte += size;\n\t\t}\n\n\t\tos.write(0);    /* block terminator */\n\t}\n\n\tprivate boolean isOk(int frame_index) {\n\t\treturn frame_index >= 0 && frame_index < vFrames.size();\n\t}\n}\n\nclass GifColorTable {\n\n/* the palette of ARGB colors, packed as returned by Color.getRGB() */\n\tprivate int[] theColors = new int[256];\n\n/* other basic attributes */\n\tprivate int   colorDepth;\n\tprivate int   transparentIndex = -1;\n\n/* these fields track color-index info across frames */\n\tprivate int             ciCount = 0; /* count of distinct color indices */\n\tprivate ReverseColorMap ciLookup;    /* cumulative rgb-to-ci lookup table */\n\n\tGifColorTable() {\n\t\tciLookup = new ReverseColorMap();  /* puts us into \"auto-detect mode\" */\n\t}\n\n\tGifColorTable(Color[] colors) {\n\t\tint n2copy = Math.min(theColors.length, colors.length);\n\t\tfor (int i = 0; i < n2copy; ++i)\n\t\t\ttheColors[i] = colors[i].getRGB();\n\t}\n\n\tint getDepth() { return colorDepth; }\n\n\tint getTransparent() { return transparentIndex; }\n\n/* default: -1 (no transparency) */\n\tvoid setTransparent(int color_index) {\n\t\ttransparentIndex = color_index;\n\t}\n\n\tvoid processPixels(Gif89Frame gf) throws IOException {\n\t\tif (gf instanceof DirectGif89Frame)\n\t\t\tfilterPixels((DirectGif89Frame) gf);\n\t\telse\n\t\t\ttrackPixelUsage((IndexGif89Frame) gf);\n\t}\n\n\tvoid closePixelProcessing() { /* must be called before encode() */\n\t\tcolorDepth = computeColorDepth(ciCount);\n\t}\n\n\tvoid encode(OutputStream os) throws IOException {\n\t\t/* size of palette written is the smallest power of 2 that can accomdate */\n\t\t/* the number of RGB colors detected (or largest color index, in case of */\n\t\t/* index pixels) */\n\t\tint palette_size = 1 << colorDepth;\n\t\tfor (int i = 0; i < palette_size; ++i) {\n\t\t\tos.write(theColors[i] >> 16 & 0xff);\n\t\t\tos.write(theColors[i] >>  8 & 0xff);\n\t\t\tos.write(theColors[i] & 0xff);\n\t\t}\n\t}\n\n/*\n * This method accomplishes three things:\n * (1) converts the passed rgb pixels to indexes into our rgb lookup table\n * (2) fills the rgb table as new colors are encountered\n * (3) looks for transparent pixels so as to set the transparent index\n * The information is cumulative across multiple calls.\n *\n * (Note: some of the logic is borrowed from Jef Poskanzer's code.)\n */\n\tprivate void filterPixels(DirectGif89Frame dgf) throws IOException {\n\t\tif (ciLookup == null)\n\t\t\tthrow new IOException(\"RGB frames require palette autodetection\");\n\n\t\tint[]  argb_pixels = (int[]) dgf.getPixelSource();\n\t\tbyte[] ci_pixels = dgf.getPixelSink();\n\t\tint    npixels = argb_pixels.length;\n\t\tfor (int i = 0; i < npixels; ++i) {\n\t\t\tint argb = argb_pixels[i];\n\n\t\t\t/* handle transparency */\n\t\t\tif ((argb >>> 24) < 0x80)        /* transparent pixel? */\n\t\t\t\tif (transparentIndex == -1)    /* first transparent color encountered? */\n\t\t\t\t\ttransparentIndex = ciCount;  /* record its index */\n\t\t\t\telse if (argb != theColors[transparentIndex]) {\n\t\t\t\t\t/* different pixel value? */\n\t\t\t\t\t/* collapse all transparent pixels into one color index */\n\t\t\t\t\tci_pixels[i] = (byte) transparentIndex;\n\t\t\t\t\tcontinue;  /* CONTINUE - index already in table */\n\t\t\t\t}\n\n\t\t\t/* try to look up the index in our \"reverse\" color table */\n\t\t\tint color_index = ciLookup.getPaletteIndex(argb & 0xffffff);\n\n\t\t\tif (color_index == -1) {\n\t\t\t\t/* if it isn't in there yet */\n\t\t\t\tif (ciCount == 256)\n\t\t\t\t\tthrow new IOException(\"can't encode as GIF (> 256 colors)\");\n\n\t\t\t\t/* store color in our accumulating palette */\n\t\t\t\ttheColors[ciCount] = argb;\n\n\t\t\t\t/* store index in reverse color table   */\n\t\t\t\tciLookup.put(argb & 0xffffff, ciCount);\n\n\t\t\t\t/* send color index to our output array */\n\t\t\t\tci_pixels[i] = (byte) ciCount;\n\n\t\t\t\t/* increment count of distinct color indices */\n\t\t\t\t++ciCount;\n\t\t\t}\n\t\t\telse  /* we've already snagged color into our palette */\n\t\t\t\tci_pixels[i] = (byte) color_index;  /* just send filtered pixel    */\n\t\t}\n\t}\n\n\tprivate void trackPixelUsage(IndexGif89Frame igf) {\n\t\tbyte[] ci_pixels = (byte[]) igf.getPixelSource();\n\t\tint    npixels = ci_pixels.length;\n\t\tfor (int i = 0; i < npixels; ++i)\n\t\t\tif (ci_pixels[i] >= ciCount)\n\t\t\t\tciCount = ci_pixels[i] + 1;\n\t}\n\n\tprivate int computeColorDepth(int colorcount) {\n\t\t/* color depth = log-base-2 of maximum number of simultaneous colors, i.e. */\n\t\t/* bits per color-index pixel     */\n\t\tif (colorcount <= 2)\n\t\t\treturn 1;\n\t\tif (colorcount <= 4)\n\t\t\treturn 2;\n\t\tif (colorcount <= 16)\n\t\t\treturn 4;\n\t\treturn 8;\n\t}\n}\n\n/*\n * We're doing a very simple linear hashing thing here, which seems sufficient\n * for our needs.  I make no claims for this approach other than that it seems\n * an improvement over doing a brute linear search for each pixel on the one\n * hand, and creating a Java object for each pixel (if we were to use a Java\n * Hashtable) on the other.  Doubtless my little hash could be improved by\n * tuning the capacity (at the very least).  Suggestions are welcome.\n */\nclass ReverseColorMap {\n\n\tprivate static class ColorRecord {\n\t\tint rgb;\n\t\tint ipalette;\n\t\tColorRecord(int rgb, int ipalette) {\n\t\t\tthis.rgb = rgb;\n\t\t\tthis.ipalette = ipalette;\n\t\t}\n\t}\n\n/*\n * I wouldn't really know what a good hashing capacity is, having missed out\n * on data structures and algorithms class :)  Alls I know is, we've got a lot\n * more space than we have time.  So let's try a sparse table with a maximum\n * load of about 1/8 capacity.\n */\n\tprivate static final int HCAPACITY = 2053;  /* a nice prime number */\n\n/* our hash table proper */\n\tprivate ColorRecord[] hTable = new ColorRecord[HCAPACITY];\n\n/*\n * Assert: rgb is not negative (which is the same as saying, be sure the\n * alpha transparency byte - i.e., the high byte - has been masked out).\n */\n\tint getPaletteIndex(int rgb) {\n\t\tColorRecord rec;\n\n\t\tfor ( int itable = rgb % hTable.length;\n\t\t(rec = hTable[itable]) != null && rec.rgb != rgb;\n\t\titable = ++itable % hTable.length\n\t\t)\n\t\t\t;\n\n\t\tif (rec != null)\n\t\t\treturn rec.ipalette;\n\n\t\treturn -1;\n\t}\n\n/*\n * Assert: (1) same as above; (2) rgb key not already present\n */\n\tvoid put(int rgb, int ipalette) {\n\t\tint itable;\n\n\t\tfor ( itable = rgb % hTable.length;\n\t\thTable[itable] != null;\n\t\titable = ++itable % hTable.length\n\t\t)\n\t\t\t;\n\n\t\thTable[itable] = new ColorRecord(rgb, ipalette);\n\t}\n}\n\n/*----------------------------------------------------------------------*/\n/* Gif89Frame                                                           */\n/*----------------------------------------------------------------------*/\n\n/**\n * First off, just to dispel any doubt, this class and its subclasses have\n *  nothing to do with GUI \"frames\" such as java.awt.Frame.  We merely use the\n *  term in its very common sense of a still picture in an animation sequence.\n *  It's hoped that the restricted context will prevent any confusion.\n *  <p>\n *  An instance of this class is used in conjunction with a Gif89Encoder object\n *  to represent and encode a single static image and its associated \"control\"\n *  data.  A Gif89Frame doesn't know or care whether it is encoding one of the\n *  many animation frames in a GIF movie, or the single bitmap in a \"normal\"\n *  GIF. (FYI, this design mirrors the encoded GIF structure.)\n *  <p>\n *  Since Gif89Frame is an abstract class we don't instantiate it directly, but\n *  instead create instances of its concrete subclasses, IndexGif89Frame and\n *  DirectGif89Frame.  From the API standpoint, these subclasses differ only\n *  in the sort of data their instances are constructed from.  Most folks will\n *  probably work with DirectGif89Frame, since it can be constructed from a\n *  java.awt.Image object, but the lower-level IndexGif89Frame class offers\n *  advantages in specialized circumstances.  (Of course, in routine situations\n *  you might not explicitly instantiate any frames at all, instead letting\n *  Gif89Encoder's convenience methods do the honors.)\n *  <p>\n *  As far as the public API is concerned, objects in the Gif89Frame hierarchy\n *  interact with a Gif89Encoder only via the latter's methods for adding and\n *  querying frames.  (As a side note, you should know that while Gif89Encoder\n *  objects are permanently modified by the addition of Gif89Frames, the reverse\n *  is NOT true.  That is, even though the ultimate encoding of a Gif89Frame may\n *  be affected by the context its parent encoder object provides, it retains\n *  its original condition and can be reused in a different context.)\n *  <p>\n *  The core pixel-encoding code in this class was essentially lifted from\n *  Jef Poskanzer's well-known <cite>Acme GifEncoder</cite>, so please see the\n *  <a href=\"../readme.txt\">readme</a> containing his notice.\n *\n * @version 0.90 beta (15-Jul-2000)\n * @author J. M. G. Elliott (tep@jmge.net)\n * @see Gif89Encoder\n * @see DirectGif89Frame\n * @see IndexGif89Frame\n */\nabstract class Gif89Frame {\n\n/* Public \"Disposal Mode\" constants */\n\n/**\n * The animated GIF renderer shall decide how to dispose of this Gif89Frame's\n *  display area.\n * @see Gif89Frame#setDisposalMode\n */\n\tpublic static final int DM_UNDEFINED = 0;\n\n/**\n * The animated GIF renderer shall take no display-disposal action.\n * @see Gif89Frame#setDisposalMode\n */\n\tpublic static final int DM_LEAVE     = 1;\n\n/**\n * The animated GIF renderer shall replace this Gif89Frame's area with the\n * background color.\n * @see Gif89Frame#setDisposalMode\n */\n\tpublic static final int DM_BGCOLOR   = 2;\n\n/**\n * The animated GIF renderer shall replace this Gif89Frame's area with the\n * previous frame's bitmap.\n * @see Gif89Frame#setDisposalMode\n */\n\tpublic static final int DM_REVERT    = 3;\n\n/* Bitmap variables set in package subclass constructors */\n\tint    theWidth = -1;\n\tint    theHeight = -1;\n\tbyte[] ciPixels;\n\n/* GIF graphic frame control options  */\n\tprivate Point   thePosition = new Point(0, 0);\n\tprivate boolean isInterlaced;\n\tprivate int     csecsDelay;\n\tprivate int     disposalCode = DM_LEAVE;\n\n/**\n * Set the position of this frame within a larger animation display space.\n *\n * @param p\n *   Coordinates of the frame's upper left corner in the display space.\n *   (Default: The logical display's origin [0, 0])\n * @see Gif89Encoder#setLogicalDisplay\n */\n\tpublic void setPosition(Point p) {\n\t\tthePosition = new Point(p);\n\t}\n\n/**\n * Set or clear the interlace flag.\n *\n * @param b\n *   true if you want interlacing.  (Default: false)\n */\n\tpublic void setInterlaced(boolean b) {\n\t\tisInterlaced = b;\n\t}\n\n/**\n * Set the between-frame interval.\n *\n * @param interval\n *   Centiseconds to wait before displaying the subsequent frame.\n *   (Default: 0)\n */\n\tpublic void setDelay(int interval) {\n\t\tcsecsDelay = interval;\n\t}\n\n/**\n * Setting this option determines (in a cooperative GIF-viewer) what will be\n *  done with this frame's display area before the subsequent frame is\n *  displayed.  For instance, a setting of DM_BGCOLOR can be used for erasure\n *  when redrawing with displacement.\n *\n * @param code\n *   One of the four int constants of the Gif89Frame.DM_* series.\n *  (Default: DM_LEAVE)\n */\n\tpublic void setDisposalMode(int code) {\n\t\tdisposalCode = code;\n\t}\n\n\tGif89Frame() {}  /* package-visible default constructor */\n\n\tabstract Object getPixelSource();\n\n\tint getWidth() { return theWidth; }\n\n\tint getHeight() { return theHeight; }\n\n\tbyte[] getPixelSink() { return ciPixels; }\n\n\tvoid encode(OutputStream os, boolean epluribus, int color_depth,\n\t\t\tint transparent_index) throws IOException {\n\t\twriteGraphicControlExtension(os, epluribus, transparent_index);\n\t\twriteImageDescriptor(os);\n\t\tnew GifPixelsEncoder(\n\t\t\t\ttheWidth, theHeight, ciPixels, isInterlaced, color_depth\n\t\t).encode(os);\n\t\t\t}\n\n\tprivate void writeGraphicControlExtension(OutputStream os, boolean epluribus,\n\t\t\tint itransparent) throws IOException {\n\t\tint transflag = itransparent == -1 ? 0 : 1;\n\t\tif (transflag == 1 || epluribus) {  /* using transparency or animating ? */\n\t\t\tos.write('!');                   /* GIF Extension Introducer */\n\t\t\tos.write(0xf9);                  /* Graphic Control Label */\n\t\t\tos.write(4);                     /* subsequent data block size */\n\t\t\tos.write((disposalCode << 2) | transflag); /* packed fields (1 byte) */\n\t\t\tGif89Put.leShort(csecsDelay, os);  /* delay field (2 bytes) */\n\t\t\tos.write(itransparent);          /* transparent index field */\n\t\t\tos.write(0);                     /* block terminator */\n\t\t\t\t}\n\t\t\t}\n\n\tprivate void writeImageDescriptor(OutputStream os) throws IOException {\n\t\tos.write(',');                       /* Image Separator */\n\t\tGif89Put.leShort(thePosition.x, os);\n\t\tGif89Put.leShort(thePosition.y, os);\n\t\tGif89Put.leShort(theWidth, os);\n\t\tGif89Put.leShort(theHeight, os);\n\t\tos.write(isInterlaced ? 0x40 : 0);  /* packed fields (1 byte) */\n\t}\n}\n\nclass GifPixelsEncoder {\n\n\tprivate static final int EOF = -1;\n\n\tprivate int     imgW, imgH;\n\tprivate byte[]  pixAry;\n\tprivate boolean wantInterlaced;\n\tprivate int     initCodeSize;\n\n/* raster data navigators */\n\tprivate int     countDown;\n\tprivate int     xCur, yCur;\n\tprivate int     curPass;\n\n\tGifPixelsEncoder(int width, int height, byte[] pixels, boolean interlaced,\n\t\t\tint color_depth) {\n\t\timgW = width;\n\t\timgH = height;\n\t\tpixAry = pixels;\n\t\twantInterlaced = interlaced;\n\t\tinitCodeSize = Math.max(2, color_depth);\n\t\t\t}\n\n\tvoid encode(OutputStream os) throws IOException {\n\t\tos.write(initCodeSize);         /* write \"initial code size\" byte */\n\n\t\tcountDown = imgW * imgH;        /* reset navigation variables */\n\t\txCur = yCur = curPass = 0;\n\n\t\tcompress(initCodeSize + 1, os); /* compress and write the pixel data */\n\n\t\tos.write(0);                    /* write block terminator */\n\t}\n\n/*\n * (J.E.) The logic of the next two methods is largely intact from\n * Jef Poskanzer.  Some stylistic changes were made for consistency sake,\n * plus the second method accesses the pixel value from a prefiltered linear\n * array.  That's about it.\n */\n\n/* Bump the 'xCur' and 'yCur' to point to the next pixel. */\n\tprivate void bumpPosition() {\n\t\t/* Bump the current X position */\n\t\t++xCur;\n\n\t\t/* If we are at the end of a scan line, set xCur back to the beginning */\n\t\t/* If we are interlaced, bump the yCur to the appropriate spot, */\n\t\t/* otherwise, just increment it. */\n\t\tif (xCur == imgW) {\n\t\t\txCur = 0;\n\n\t\t\tif (!wantInterlaced)\n\t\t\t\t++yCur;\n\t\t\telse\n\t\t\t\tswitch (curPass) {\n\t\t\t\tcase 0:\n\t\t\t\t\tyCur += 8;\n\t\t\t\t\tif (yCur >= imgH) {\n\t\t\t\t\t\t++curPass;\n\t\t\t\t\t\tyCur = 4;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\t\tyCur += 8;\n\t\t\t\t\tif (yCur >= imgH) {\n\t\t\t\t\t\t++curPass;\n\t\t\t\t\t\tyCur = 2;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tyCur += 4;\n\t\t\t\t\tif (yCur >= imgH) {\n\t\t\t\t\t\t++curPass;\n\t\t\t\t\t\tyCur = 1;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tyCur += 2;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t}\n\t}\n\n/* Return the next pixel from the image */\n\tprivate int nextPixel() {\n\t\tif (countDown == 0)\n\t\t\treturn EOF;\n\n\t\t--countDown;\n\n\t\tbyte pix = pixAry[yCur * imgW + xCur];\n\n\t\tbumpPosition();\n\n\t\treturn pix & 0xff;\n\t}\n\n/*\n * (J.E.) I didn't touch Jef Poskanzer's code from this point on.  (Well, OK,\n * I changed the name of the sole outside method it accesses.)  I figure\n * if I have no idea how something works, I shouldn't play with it :)\n *\n * Despite its unencapsulated structure, this section is actually highly\n * self-contained.  The calling code merely calls compress(), and the present\n * code calls nextPixel() in the caller.  That's the sum total of their\n * communication.  I could have dumped it in a separate class with a callback\n * via an interface, but it didn't seem worth messing with.\n */\n\n/* GIFCOMPR.C       - GIF Image compression routines */\n\n/* Lempel-Ziv compression based on 'compress'.  GIF modifications by */\n/* David Rowley (mgardi@watdcsu.waterloo.edu) */\n\n/* General DEFINEs */\n\n\tstatic final int BITS = 12;\n\n\tstatic final int HSIZE = 5003;                /* 80% occupancy */\n\n/*\n * GIF Image compression - modified 'compress'\n *\n * Based on: compress.c - File compression ala IEEE Computer, June 1984.\n *\n * By Authors:  Spencer W. Thomas      (decvax!harpo!utah-cs!utah-gr!thomas)\n *              Jim McKie              (decvax!mcvax!jim)\n *              Steve Davies           (decvax!vax135!petsd!peora!srd)\n *              Ken Turkowski          (decvax!decwrl!turtlevax!ken)\n *              James A. Woods         (decvax!ihnp4!ames!jaw)\n *              Joe Orost              (decvax!vax135!petsd!joe)\n */\n\n\tint n_bits;                     /* number of bits/code */\n\tint maxbits = BITS;             /* user settable max # bits/code */\n\tint maxcode;                    /* maximum code, given n_bits */\n\tint maxmaxcode = 1 << BITS;     /* should NEVER generate this code */\n\n\tfinal int MAXCODE( int n_bits ) {\n\t\treturn ( 1 << n_bits ) - 1;\n\t}\n\n\tint[] htab = new int[HSIZE];\n\tint[] codetab = new int[HSIZE];\n\n\tint hsize = HSIZE;                /* for dynamic table sizing */\n\n\tint free_ent = 0;                        /* first unused entry */\n\n/* block compression parameters -- after all codes are used up, */\n/* and compression rate changes, start over. */\n\tboolean clear_flg = false;\n\n/*\n * Algorithm:  use open addressing double hashing (no chaining) on the\n * prefix code / next character combination.  We do a variant of Knuth's\n * algorithm D (vol. 3, sec. 6.4) along with G. Knott's relatively-prime\n * secondary probe.  Here, the modular division first probe is gives way\n * to a faster exclusive-or manipulation.  Also do block compression with\n * an adaptive reset, whereby the code table is cleared when the compression\n * ratio decreases, but after the table fills.  The variable-length output\n * codes are re-sized at this point, and a special CLEAR code is generated\n * for the decompressor.  Late addition:  construct the table according to\n * file size for noticeable speed improvement on small files.  Please direct\n * questions about this implementation to ames!jaw.\n */\n\n\tint g_init_bits;\n\n\tint ClearCode;\n\tint EOFCode;\n\n\tvoid compress( int init_bits, OutputStream outs ) throws IOException {\n\t\tint fcode;\n\t\tint i /* = 0 */;\n\t\tint c;\n\t\tint ent;\n\t\tint disp;\n\t\tint hsize_reg;\n\t\tint hshift;\n\n\t\t/* Set up the globals:  g_init_bits - initial number of bits */\n\t\tg_init_bits = init_bits;\n\n\t\t/* Set up the necessary values */\n\t\tclear_flg = false;\n\t\tn_bits = g_init_bits;\n\t\tmaxcode = MAXCODE( n_bits );\n\n\t\tClearCode = 1 << ( init_bits - 1 );\n\t\tEOFCode = ClearCode + 1;\n\t\tfree_ent = ClearCode + 2;\n\n\t\tchar_init();\n\n\t\tent = nextPixel();\n\n\t\thshift = 0;\n\t\tfor ( fcode = hsize; fcode < 65536; fcode *= 2 )\n\t\t\t++hshift;\n\t\thshift = 8 - hshift;         /* set hash code range bound */\n\n\t\thsize_reg = hsize;\n\t\tcl_hash( hsize_reg );        /* clear hash table */\n\n\t\toutput( ClearCode, outs );\n\n\t\touter_loop:\n\t\t\twhile ( (c = nextPixel()) != EOF ) {\n\t\t\t\tfcode = ( c << maxbits ) + ent;\n\t\t\t\ti = ( c << hshift ) ^ ent;      /* xor hashing */\n\n\t\t\t\tif ( htab[i] == fcode ) {\n\t\t\t\t\tent = codetab[i];\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\telse if ( htab[i] >= 0 ) { /* non-empty slot */\n\t\t\t\t\tdisp = hsize_reg - i;       /* secondary hash (after G. Knott) */\n\t\t\t\t\tif ( i == 0 )\n\t\t\t\t\t\tdisp = 1;\n\t\t\t\t\tdo {\n\t\t\t\t\t\tif ( (i -= disp) < 0 )\n\t\t\t\t\t\t\ti += hsize_reg;\n\n\t\t\t\t\t\tif ( htab[i] == fcode ) {\n\t\t\t\t\t\t\tent = codetab[i];\n\t\t\t\t\t\t\tcontinue outer_loop;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\twhile ( htab[i] >= 0 );\n\t\t\t\t}\n\t\t\t\toutput( ent, outs );\n\t\t\t\tent = c;\n\t\t\t\tif ( free_ent < maxmaxcode ) {\n\t\t\t\t\tcodetab[i] = free_ent++;        /* code -> hashtable */\n\t\t\t\t\thtab[i] = fcode;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\tcl_block( outs );\n\t\t\t}\n\t\t/* Put out the final code. */\n\t\toutput( ent, outs );\n\t\toutput( EOFCode, outs );\n\t}\n\n/*\n * output\n *\n * Output the given code.\n * Inputs:\n *      code:   A n_bits-bit integer.  If == -1, then EOF.  This assumes\n *              that n_bits =< wordsize - 1.\n * Outputs:\n *      Outputs code to the file.\n * Assumptions:\n *      Chars are 8 bits long.\n * Algorithm:\n *      Maintain a BITS character long buffer (so that 8 codes will\n * fit in it exactly).  Use the VAX insv instruction to insert each\n * code in turn.  When the buffer fills up empty it and start over.\n */\n\n\tint cur_accum = 0;\n\tint cur_bits = 0;\n\n\tint masks[] = { 0x0000, 0x0001, 0x0003, 0x0007, 0x000F,\n\t\t\t0x001F, 0x003F, 0x007F, 0x00FF,\n\t\t\t0x01FF, 0x03FF, 0x07FF, 0x0FFF,\n\t\t\t0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF };\n\n\tvoid output( int code, OutputStream outs ) throws IOException {\n\t\tcur_accum &= masks[cur_bits];\n\n\t\tif ( cur_bits > 0 )\n\t\t\tcur_accum |= ( code << cur_bits );\n\t\telse\n\t\t\tcur_accum = code;\n\n\t\tcur_bits += n_bits;\n\n\t\twhile ( cur_bits >= 8 ) {\n\t\t\tchar_out( (byte) ( cur_accum & 0xff ), outs );\n\t\t\tcur_accum >>= 8;\n\t\t\tcur_bits -= 8;\n\t\t}\n\n\t\t/* If the next entry is going to be too big for the code size, */\n\t\t/* then increase it, if possible. */\n\t\tif ( free_ent > maxcode || clear_flg ) {\n\t\t\tif ( clear_flg ) {\n\t\t\t\tmaxcode = MAXCODE(n_bits = g_init_bits);\n\t\t\t\tclear_flg = false;\n\t\t\t}\n\t\t\telse {\n\t\t\t\t++n_bits;\n\t\t\t\tif ( n_bits == maxbits )\n\t\t\t\t\tmaxcode = maxmaxcode;\n\t\t\t\telse\n\t\t\t\t\tmaxcode = MAXCODE(n_bits);\n\t\t\t}\n\t\t}\n\n\t\tif ( code == EOFCode ) {\n\t\t\t/* At EOF, write the rest of the buffer. */\n\t\t\twhile ( cur_bits > 0 ) {\n\t\t\t\tchar_out( (byte) ( cur_accum & 0xff ), outs );\n\t\t\t\tcur_accum >>= 8;\n\t\tcur_bits -= 8;\n\t\t\t}\n\n\t\t\tflush_char( outs );\n\t\t}\n\t}\n\n/* Clear out the hash table */\n\n/* table clear for block compress */\n\tvoid cl_block( OutputStream outs ) throws IOException {\n\t\tcl_hash( hsize );\n\t\tfree_ent = ClearCode + 2;\n\t\tclear_flg = true;\n\n\t\toutput( ClearCode, outs );\n\t}\n\n/* reset code table */\n\tvoid cl_hash( int hsize ) {\n\t\tfor ( int i = 0; i < hsize; ++i )\n\t\t\thtab[i] = -1;\n\t}\n\n/* GIF Specific routines */\n\n/* Number of characters so far in this 'packet' */\n\tint a_count;\n\n/* Set up the 'byte output' routine */\n\tvoid char_init() {\n\t\ta_count = 0;\n\t}\n\n/* Define the storage for the packet accumulator */\n\tbyte[] accum = new byte[256];\n\n/* Add a character to the end of the current packet, and if it is 254 */\n/* characters, flush the packet to disk. */\n\tvoid char_out( byte c, OutputStream outs ) throws IOException {\n\t\taccum[a_count++] = c;\n\t\tif ( a_count >= 254 )\n\t\t\tflush_char( outs );\n\t}\n\n/* Flush the packet to disk, and reset the accumulator */\n\tvoid flush_char( OutputStream outs ) throws IOException {\n\t\tif ( a_count > 0 ) {\n\t\t\touts.write( a_count );\n\t\t\touts.write( accum, 0, a_count );\n\t\t\ta_count = 0;\n\t\t}\n\t}\n}\n\n/*----------------------------------------------------------------------*/\n/* IndexGif89Frame                                                      */\n/*----------------------------------------------------------------------*/\n\n/**\n * Instances of this Gif89Frame subclass are constructed from bitmaps in the\n * form of color-index pixels, which accords with a GIF's native palettized\n * color model.  The class is useful when complete control over a GIF's color\n * palette is desired.  It is also much more efficient when one is using an\n * algorithmic frame generator that isn't interested in RGB values (such\n * as a cellular automaton).\n * <p>\n * Objects of this class are normally added to a Gif89Encoder object that has\n * been provided with an explicit color table at construction.  While you may\n * also add them to \"auto-map\" encoders without an exception being thrown,\n * there obviously must be at least one DirectGif89Frame object in the sequence\n * so that a color table may be detected.\n *\n * @version 0.90 beta (15-Jul-2000)\n * @author J. M. G. Elliott (tep@jmge.net)\n * @see Gif89Encoder\n * @see Gif89Frame\n * @see DirectGif89Frame\n */\nclass IndexGif89Frame extends Gif89Frame {\n\n/**\n * Construct a IndexGif89Frame from color-index pixel data.\n *\n * @param width\n *   Width of the bitmap.\n * @param height\n *   Height of the bitmap.\n * @param ci_pixels\n *   Array containing at least width*height color-index pixels.\n */\n\tpublic IndexGif89Frame(int width, int height, byte ci_pixels[]) {\n\t\ttheWidth = width;\n\t\ttheHeight = height;\n\t\tciPixels = new byte[theWidth * theHeight];\n\t\tSystem.arraycopy(ci_pixels, 0, ciPixels, 0, ciPixels.length);\n\t}\n\n\tObject getPixelSource() { return ciPixels; }\n}\n\n/*----------------------------------------------------------------------*/\n/* Gif89Put                                                             */\n/*----------------------------------------------------------------------*/\n\n/**\n * Just a couple of trivial output routines used by other classes in the\n * package.  Normally this kind of stuff would be in a separate IO package, but\n * I wanted the present package to be self-contained for ease of distribution\n * and use by others.\n */\nfinal class Gif89Put {\n\n/**\n * Write just the low bytes of a String.  (This sucks, but the concept of an\n *  encoding seems inapplicable to a binary file ID string.  I would think\n *  flexibility is just what we don't want - but then again, maybe I'm slow.)\n */\n\tstatic void ascii(String s, OutputStream os) throws IOException {\n\t\tbyte[] bytes = new byte[s.length()];\n\t\tfor (int i = 0; i < bytes.length; ++i)\n\t\t\tbytes[i] = (byte) s.charAt(i);  /* discard the high byte      */\n\t\tos.write(bytes);\n\t}\n\n/**\n * Write a 16-bit integer in little endian byte order.\n */\n\tstatic void leShort(int i16, OutputStream os) throws IOException {\n\t\tos.write(i16 & 0xff);\n\t\tos.write(i16 >> 8 & 0xff);\n\t}\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/util/MovieClip.java",
    "content": "/*\n * @(#)MovieClip.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// Class introduced in V1.1\n\npackage acm.util;\n\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.io.*;\nimport java.lang.reflect.*;\nimport java.net.*;\n\n/* Implementation notes */\n/*\n * This class uses QuickTime for Java, which is not available on all Java platforms.\n * To ensure that this class can be compiled even on systems that lack the QuickTime\n * libraries, all calls to the library are implemented through reflection.\n */\n\n/* Class: MovieClip */\n/**\n * This class represents a video clip, which can be read from a QuickTime\n * movie file or web-based resource.\n */\npublic class MovieClip extends Container {\n\n/* Constructor: MovieClip(filename) */\n/**\n * Creates a <code>MovieClip</code> object from the specified movie file.\n *\n * @usage MovieClip movie = new MovieClip(filename);\n * @param filename The file from which the movie is read\n */\n\tpublic MovieClip(String filename) {\n\t\tthis(filename, filename);\n\t}\n\n/* Constructor: MovieClip(file) */\n/**\n * Creates a <code>MovieClip</code> object from the specified movie file.\n *\n * @usage MovieClip movie = new MovieClip(file);\n * @param file A <code>File</code> object from which the movie is read\n */\n\tpublic MovieClip(File file) {\n\t\tthis(file, file.getName());\n\t}\n\n/* Constructor: MovieClip(url) */\n/**\n * Creates a <code>MovieClip</code> object from the specified network URL.\n *\n * @usage MovieClip movie = new MovieClip(file);\n * @param url A network URL containing the movie\n */\n\tpublic MovieClip(URL url) {\n\t\tthis(url, JTFTools.getURLSuffix(url.toString()));\n\t}\n\n/* Method: play() */\n/**\n * Starts the movie from its current position.\n *\n * @usage movie.play();\n */\n\tpublic void play() {\n\t\tsetLooping(false);\n\t\tstartMovie();\n\t}\n\n/* Method: loop() */\n/**\n * Plays the movie in a continuous audio loop.\n *\n * @usage movie.loop();\n */\n\tpublic void loop() {\n\t\tsetLooping(true);\n\t\tstartMovie();\n\t}\n\n/* Method: stop() */\n/**\n * Stops the playback of the movie.\n *\n * @usage movie.stop();\n */\n\tpublic synchronized void stop() {\n\t\tstopMovie();\n\t\tsetLooping(false);\n\t}\n\n/* Method: getName() */\n/**\n * Returns the name of the movie, which is typically the file name from which it\n * was read.\n *\n * @usage String name = movie.getName();\n * @return The name of the movie\n */\n\tpublic String getName() {\n\t\treturn movieName;\n\t}\n\n/* Method: setName(name) */\n/**\n * Sets a name to identify the movie.\n *\n * @usage movie.setName(name);\n * @param name The name to use for the movie\n */\n\tpublic void setName(String name) {\n\t\tmovieName = name;\n\t}\n\n/* Method: getFrameCount() */\n/**\n * Returns the number of frames in a movie.\n *\n * @usage int nFrames = movie.getFrameCount();\n * @return The number of frames in a movie\n */\n\tpublic int getFrameCount() {\n\t\treturn getQTDuration();\n\t}\n\n/* Method: getFrameRate() */\n/**\n * Returns the frame rate of the movie.\n *\n * @usage double frameRate = movie.getFrameRate();\n * @return The frame rate of the movie (in frames/second)\n */\n\tpublic double getFrameRate() {\n\t\treturn getQTTimeScale();\n\t}\n\n/* Method: getDuration() */\n/**\n * Returns the duration of a movie (in seconds).\n *\n * @usage double duration = movie.getDuration();\n * @return The duration of a movie (in seconds)\n */\n\tpublic double getDuration() {\n\t\treturn getFrameCount() / getFrameRate();\n\t}\n\n/* Method: getFrameIndex() */\n/**\n * Returns the current frame index in the movie.\n *\n * @usage int frameIndex = movie.getFrameIndex();\n * @return The current frame index in the movie\n */\n\tpublic int getFrameIndex() {\n\t\treturn getCurrentTime();\n\t}\n\n/* Method: setFrameIndex(frame) */\n/**\n * Sets the current frame index.\n *\n * @usage movie.setFrameIndex(frameIndex);\n * @param frameIndex The current frame index in the movie\n */\n\tpublic void setFrameIndex(int frameIndex) {\n\t\tsetCurrentTime(frameIndex);\n\t}\n\n/* Method: rewind() */\n/**\n * Rewinds the movie to the beginning.  This method is useful after you have\n * stopped a movie and want to replay it from the beginning.\n *\n * @usage movie.rewind();\n */\n\tpublic void rewind() {\n\t\tsetFrameIndex(0);\n\t}\n\n/* Method: getVolume() */\n/**\n * Returns the playback volume setting for the movie, which is a number\n * between 0 (silent) and 1 (maximum volume).\n *\n * @usage double volume = movie.getVolume();\n * @return The playback volume setting for the movie\n */\n\tpublic double getVolume() {\n\t\treturn clipVolume;\n\t}\n\n/* Method: setVolume(volume) */\n/**\n * Sets the playback volume setting for the movie, which is a number\n * between 0 (silent) and 1 (maximum volume).\n *\n * @usage movie.setVolume(volume);\n * @param volume The new volume setting for the movie\n */\n\tpublic void setVolume(double volume) {\n\t\tclipVolume = volume;\n\t\tsetControllerVolume(volume);\n\t}\n\n/* Method: getPlaybackRate() */\n/**\n * Returns the playback rate, which is a floating-point number indicating\n * the speed and direction of playback.  The value 1.0 indicates normal\n * speed, 2.0 indicates a movie running at double speed, and 0.5 indicates\n * a movie running at half speed.  Negative values indicate that the movie\n * should run in reverse, so that a playback rate of -1.0 specifies that the\n * movie should run backwards at normal speed.\n *\n * @usage double rate = movie.getPlaybackRate();\n * @return The playback rate for the movie\n */\n\tpublic double getPlaybackRate() {\n\t\treturn clipRate;\n\t}\n\n/* Method: setPlaybackRate(rate) */\n/**\n * Sets the playback rate for the movie.  The value 1.0 indicates normal\n * speed, 2.0 indicates a movie running at double speed, and 0.5 indicates\n * a movie running at half speed.  Negative values indicate that the movie\n * should run in reverse, so that a playback rate of -1.0 specifies that the\n * movie should run backwards at normal speed.\n *\n * @usage sound.setPlaybackRate(rate);\n * @param rate The new playback rate for the movie\n */\n\tpublic void setPlaybackRate(double rate) {\n\t\tclipRate = rate;\n\t\tif (!isStopped()) setRate(rate);\n\t}\n\n/* Method: enableController() */\n/**\n * Enables the QuickTime controller displayed at the bottom of the movie.  This\n * call has no effect if a controller is already enabled.\n *\n * @usage movie.enableController();\n */\n\tpublic void enableController() {\n\t\tif (hasQuickTime) setControllerVisible(true);\n\t}\n\n/* Method: disableController() */\n/**\n * Disables the QuickTime controller from the bottom of the movie, making it\n * disappear from the window.  This call has no effect if no controller is\n * already disabled.\n *\n * @usage movie.disableController();\n */\n\tpublic void disableController() {\n\t\tif (hasQuickTime) setControllerVisible(false);\n\t}\n\n/* Method: isControllerEnabled() */\n/**\n * Returns <code>true</code> if the QuickTime controller is enabled.\n *\n * @usage if (movie.isControllerEnabled()) . . .\n * @return <code>true</code> if the controller is enabled\n */\n\tpublic boolean isControllerEnabled() {\n\t\treturn controllerVisible;\n\t}\n\n/* Method: getControllerHeight() */\n/**\n * Returns the height of the QuickTime controller, measured in pixels.  If\n * no controller is installed, <code>getControllerHeight</code> returns 0.\n *\n * @usage int height = movie.getControllerHeight();\n * @return The height of the QuickTime controller (in pixels)\n */\n\tpublic int getControllerHeight() {\n\t\treturn (controller == null) ? 0 : CONTROLLER_HEIGHT;\n\t}\n\n/**********************************************************************/\n/* Overridden methods                                                 */\n/**********************************************************************/\n\n/* Method: getPreferredSize() */\n/**\n * Returns the desired height of the movie panel, which is taken from the\n * underlying movie, taking account of the controller, if any.\n *\n * @usage Dimension size = movie.getPreferredSize();\n * @return The desired height of the movie panel\n * @noshow\n */\n\tpublic Dimension getPreferredSize() {\n\t\tif (movie == null) return DEFAULT_SIZE;\n\t\ttry {\n\t\t\tMethod getNaturalBoundsRect = movieClass.getMethod(\"getNaturalBoundsRect\", new Class[0]);\n\t\t\tMethod getWidth = qdRectClass.getMethod(\"getWidth\", new Class[0]);\n\t\t\tMethod getHeight = qdRectClass.getMethod(\"getHeight\", new Class[0]);\n\t\t\tObject rect = getNaturalBoundsRect.invoke(movie, new Object[0]);\n\t\t\tint width = ((Integer) getWidth.invoke(rect, new Object[0])).intValue();\n\t\t\tint height = ((Integer) getHeight.invoke(rect, new Object[0])).intValue();\n\t\t\tDimension size = new Dimension(width, height + getControllerHeight());\n\t\t\treturn size;\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/**********************************************************************/\n/* Private methods                                                    */\n/**********************************************************************/\n\n/* Private constructor: MovieClip(source, name) */\n/**\n * Constructs a new movie from a data source and assigns the specified name.\n */\n\tprivate MovieClip(Object source, String name) {\n\t\tstartQuickTime();\n\t\tmovieName = name;\n\t\tclipVolume = 1.0;\n\t\tclipRate = 1.0;\n\t\tsetLayout(new BorderLayout());\n\t\tif (hasQuickTime) {\n\t\t\ttry {\n\t\t\t\treadMovie(source);\n\t\t\t} catch (Exception ex) {\n\t\t\t\tadd(new ErrorWindow(name, \"Can't read movie file\"), BorderLayout.CENTER);\n\t\t\t}\n\t\t} else {\n\t\t\tadd(new ErrorWindow(name, errorMessage), BorderLayout.CENTER);\n\t\t}\n\t\taddComponentListener(new MovieClipListener());\n\t}\n\n/* Private method: startQuickTime() */\n/**\n * Opens a new QuickTime session and tests to see whether the correct version\n * of QuickTime exists.\n */\n\tprivate void startQuickTime() {\n\t\thasQuickTime = false;\n\t\ttry {\n\t\t\tmovieClass = Class.forName(\"quicktime.std.movies.Movie\");\n\t\t\tmovieControllerClass = Class.forName(\"quicktime.std.movies.MovieController\");\n\t\t\topenMovieFileClass = Class.forName(\"quicktime.io.OpenMovieFile\");\n\t\t\tqdRectClass = Class.forName(\"quicktime.qd.QDRect\");\n\t\t\tqtDataRefClass = Class.forName(\"quicktime.std.movies.media.DataRef\");\n\t\t\tqtFactoryClass = Class.forName(\"quicktime.app.view.QTFactory\");\n\t\t\tqtFileClass = Class.forName(\"quicktime.io.QTFile\");\n\t\t\tqtSessionClass = Class.forName(\"quicktime.QTSession\");\n\t\t\ttimeRecordClass = Class.forName(\"quicktime.std.clocks.TimeRecord\");\n\t\t\tMethod isInitialized = qtSessionClass.getMethod(\"isInitialized\", new Class[0]);\n\t\t\tsynchronized (lock) {\n\t\t\t\tif (isInitialized.invoke(null, new Object[0]).equals(Boolean.FALSE)) {\n\t\t\t\t\tMethod open = qtSessionClass.getMethod(\"open\", new Class[0]);\n\t\t\t\t\topen.invoke(null, new Object[0]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tMethod getMajorVersion = qtSessionClass.getMethod(\"getMajorVersion\", new Class[0]);\n\t\t\tversion = ((Integer) getMajorVersion.invoke(null, new Object[0])).intValue();\n\t\t\tif (version < MIN_QUICKTIME_VERSION) {\n\t\t\t\tthrow new ErrorException(\"MovieClip requires QuickTime V7 or later\");\n\t\t\t}\n\t\t\thasQuickTime = true;\n\t\t} catch (Exception ex) {\n\t\t\terrorMessage = ex.getMessage();\n\t\t}\n\t}\n\n/* Private method: startMovie() */\n/**\n * Starts the movie from its current position.  This method is identical to\n * clicking the <code>play</code> control in the QuickTime controller.\n */\n\tprivate void startMovie() {\n\t\tif (!hasQuickTime || movie == null) return;\n\t\ttry {\n\t\t\tClass[] types = { Float.TYPE };\n\t\t\tObject[] args = { new Float((float) clipRate) };\n\t\t\tMethod play = movieControllerClass.getMethod(\"play\", types);\n\t\t\tplay.invoke(controller, args);\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/* Private method: stopMovie() */\n/**\n * Stops the movie.  This method is identical to clicking the\n * <code>pause</code> control in the QuickTime controller.\n */\n\tprivate void stopMovie() {\n\t\tif (!hasQuickTime || movie == null) return;\n\t\ttry {\n\t\t\tClass[] types = { Float.TYPE };\n\t\t\tObject[] args = { new Float(0.0) };\n\t\t\tMethod play = movieControllerClass.getMethod(\"play\", types);\n\t\t\tplay.invoke(controller, args);\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/* Private method: setLooping(flag) */\n/**\n * Sets a flag to indicate whether the movie should play in a continuous\n * loop.\n */\n\tprivate void setLooping(boolean flag) {\n\t\tif (!hasQuickTime || movie == null) return;\n\t\ttry {\n\t\t\tClass[] types = { Boolean.TYPE };\n\t\t\tObject[] args = { new Boolean(flag) };\n\t\t\tMethod setLooping = movieControllerClass.getMethod(\"setLooping\", types);\n\t\t\tsetLooping.invoke(controller, args);\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/* Private method: readMovie(source) */\n/**\n * Reads a QuickTime movie by calling a method appropriate to the source type.\n * If the movie is read successfully, this code adds it to the primary container.\n */\n\tprivate void readMovie(Object source) {\n\t\ttry {\n\t\t\tif (source instanceof String) {\n\t\t\t\tString name = (String) source;\n\t\t\t\tif (name.startsWith(\"http:\")) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tmovie = readMovieFromURL(new URL(name));\n\t\t\t\t\t} catch (MalformedURLException ex) {\n\t\t\t\t\t\tthrow new ErrorException(\"MovieClip: Malformed URL\");\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tmovie = readMovieFromFile(new File(name));\n\t\t\t\t}\n\t\t\t} else if (source instanceof File) {\n\t\t\t\tmovie = readMovieFromFile((File) source);\n\t\t\t} else if (source instanceof URL) {\n\t\t\t\tmovie = readMovieFromURL((URL) source);\n\t\t\t}\n\t\t\tcontroller = createController();\n\t\t\tcontrollerVisible = true;\n\t\t\taddQTComponent(controller);\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/* Private method: createController() */\n/**\n * Creates a QuickTime controller for the current movie.\n */\n\tprivate Object createController() throws Exception {\n\t\tClass[] types = { movie.getClass() };\n\t\tObject[] args = { movie };\n\t\tConstructor<?> movieControllerConstructor = movieControllerClass.getConstructor(types);\n\t\treturn movieControllerConstructor.newInstance(args);\n\t}\n\n/* Private method: addQTComponent(obj) */\n/**\n * Adds a component to the main container.  If the argument is a QuickTime object,\n * the code invokes the appropriate <code>asComponent</code> method to create a\n * Java component.\n */\n\tprivate void addQTComponent(Object obj) throws Exception {\n\t\tif (!(obj instanceof Component)) {\n\t\t\tClass[] types = { obj.getClass() };\n\t\t\tObject[] args = { obj };\n\t\t\tMethod makeQTComponent = qtFactoryClass.getMethod(\"makeQTComponent\", types);\n\t\t\tobj = makeQTComponent.invoke(null, args);\n\t\t\tif (!(obj instanceof Component)) {\n\t\t\t\tClass<?> qtClass = obj.getClass();\n\t\t\t\tMethod asComponent = qtClass.getMethod(\"asComponent\", new Class[0]);\n\t\t\t\tobj = asComponent.invoke(obj, new Object[0]);\n\t\t\t}\n\t\t}\n\t\tremoveAll();\n\t\tadd((Component) obj, BorderLayout.CENTER);\n\t}\n\n/* Private method: readMovieFromFile(file) */\n/**\n * Reads a movie from a file object.\n */\n\tprivate Object readMovieFromFile(File file) {\n\t\ttry {\n\t\t\tClass[] types1 = { Class.forName(\"java.io.File\") };\n\t\t\tObject[] args1 = { file };\n\t\t\tConstructor<?> qtFileConstructor = qtFileClass.getConstructor(types1);\n\t\t\tObject qtFile = qtFileConstructor.newInstance(args1);\n\t\t\tClass[] types2 = { qtFileClass };\n\t\t\tObject[] args2 = { qtFile };\n\t\t\tMethod asRead = openMovieFileClass.getMethod(\"asRead\", types2);\n\t\t\tObject openMovieFile = asRead.invoke(null, args2);\n\t\t\tClass[] types3 = { openMovieFileClass };\n\t\t\tObject[] args3 = { openMovieFile };\n\t\t\tMethod fromFile = movieClass.getMethod(\"fromFile\", types3);\n\t\t\treturn fromFile.invoke(null, args3);\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/* Private method: readMovieFromURL(href) */\n/**\n * Reads a movie from the specified URL.\n */\n\tprivate Object readMovieFromURL(URL url) {\n\t\ttry {\n\t\t\tClass[] types1 = { Class.forName(\"java.lang.String\") };\n\t\t\tObject[] args1 = { url.toString() };\n\t\t\tConstructor<?> qtDataRefConstructor = qtDataRefClass.getConstructor(types1);\n\t\t\tObject qtFile = qtDataRefConstructor.newInstance(args1);\n\t\t\tClass[] types2 = { qtDataRefClass, Integer.TYPE };\n\t\t\tObject[] args2 = { qtFile, new Integer(0) };\n\t\t\tMethod fromDataRef = movieClass.getMethod(\"fromDataRef\", types2);\n\t\t\treturn fromDataRef.invoke(null, args2);\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/* Private method: setControllerVisible(flag) */\n/**\n * Sets whether the controller is visible.\n */\n\tprivate void setControllerVisible(boolean flag) {\n\t\tif (!hasQuickTime || movie == null) return;\n\t\tif (flag != controllerVisible) {\n\t\t\ttry {\n\t\t\t\tClass[] types = { Boolean.TYPE };\n\t\t\t\tObject[] args = { new Boolean(flag) };\n\t\t\t\tMethod setVisible = movieControllerClass.getMethod(\"setVisible\", types);\n\t\t\t\tsetVisible.invoke(controller, args);\n\t\t\t} catch (Exception ex) {\n\t\t\t\tthrow new ErrorException(ex);\n\t\t\t}\n\t\t\tcontrollerVisible = flag;\n\t\t}\n\t}\n\n/* Private method: getCurrentTime() */\n/**\n * Returns the movie time as maintained by the controller.\n */\n\tprivate int getCurrentTime() {\n\t\tif (!hasQuickTime || movie == null) return 0;\n\t\ttry {\n\t\t\tMethod getCurrentTime = movieControllerClass.getMethod(\"getCurrentTime\", new Class[0]);\n\t\t\treturn ((Integer) getCurrentTime.invoke(controller, new Object[0])).intValue();\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/* Private method: setCurrentTime(time) */\n/**\n * Sets the movie time.  As with the other <code>set</code> operations, this\n * code makes the changes in the controller to ensure that its controls are\n * updated.\n */\n\tprivate void setCurrentTime(int time) {\n\t\tif (!hasQuickTime || movie == null) return;\n\t\ttry {\n\t\t\tClass[] types = { timeRecordClass };\n\t\t\tObject[] args = { createTimeRecord(time) };\n\t\t\tMethod goToTime = movieControllerClass.getMethod(\"goToTime\", types);\n\t\t\tgoToTime.invoke(controller, args);\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/* Private method: setControllerVolume(volume) */\n/**\n * Sets the controller volume.\n */\n\tprivate void setControllerVolume(double volume) {\n\t\tif (!hasQuickTime || movie == null) return;\n\t\ttry {\n\t\t\tClass[] types = { Float.TYPE };\n\t\t\tObject[] args = { new Float((float) volume) };\n\t\t\tMethod setVolume = movieControllerClass.getMethod(\"setVolume\", types);\n\t\t\tsetVolume.invoke(controller, args);\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/* Private method: setRate(rate) */\n/**\n * Sets the movie playback rate.\n */\n\tprivate void setRate(double volume) {\n\t\tif (!hasQuickTime || movie == null) return;\n\t\ttry {\n\t\t\tClass[] types = { Float.TYPE };\n\t\t\tObject[] args = { new Float((float) volume) };\n\t\t\tMethod setRate = movieClass.getMethod(\"setRate\", types);\n\t\t\tsetRate.invoke(movie, args);\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/* Private method: isStopped() */\n/**\n * Returns whether the controller is currently stopped.\n */\n\tprivate boolean isStopped() {\n\t\tif (!hasQuickTime || movie == null) return true;\n\t\ttry {\n\t\t\tMethod getPlayRate = movieControllerClass.getMethod(\"getPlayRate\", new Class[0]);\n\t\t\treturn ((Float) getPlayRate.invoke(controller, new Object[0])).floatValue() == 0.0;\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/* Private method: getQTDuration() */\n/**\n * Returns the duration in movie time units.\n */\n\tprivate int getQTDuration() {\n\t\tif (!hasQuickTime || movie == null) return 0;\n\t\ttry {\n\t\t\tMethod getDuration = movieClass.getMethod(\"getDuration\", new Class[0]);\n\t\t\treturn ((Integer) getDuration.invoke(movie, new Object[0])).intValue();\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/* Private method: getQTTimeScale() */\n/**\n * Returns the movie time in units per second.\n */\n\tprivate int getQTTimeScale() {\n\t\tif (!hasQuickTime || movie == null) return DEFAULT_TIME_SCALE;\n\t\ttry {\n\t\t\tMethod getTimeScale = movieClass.getMethod(\"getTimeScale\", new Class[0]);\n\t\t\treturn ((Integer) getTimeScale.invoke(movie, new Object[0])).intValue();\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/* Private method: createTimeRecord() */\n/**\n * Creates a <code>TimeRecord</code> object, which is required in the call\n * to <code>goToTime</code>.\n */\n\tprivate Object createTimeRecord(int time) {\n\t\ttry {\n\t\t\tClass[] types = { Integer.TYPE, Long.TYPE };\n\t\t\tObject[] args = { new Integer(getQTTimeScale()), new Long(time) };\n\t\t\tConstructor<?> newTimeRecord = timeRecordClass.getConstructor(types);\n\t\t\treturn newTimeRecord.newInstance(args);\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/* Private constants */\n\tprivate static final int MIN_QUICKTIME_VERSION = 7;\n\tprivate static final int CONTROLLER_HEIGHT = 16;\n\tprivate static final int DEFAULT_TIME_SCALE = 600;\n\tprivate static final Dimension DEFAULT_SIZE = new Dimension(300, 200);\n\n/* Private instance variables */\n\tprivate Class<?> movieClass;\n\tprivate Class<?> movieControllerClass;\n\tprivate Class<?> openMovieFileClass;\n\tprivate Class<?> qdRectClass;\n\tprivate Class<?> qtDataRefClass;\n\tprivate Class<?> qtFactoryClass;\n\tprivate Class<?> qtFileClass;\n\tprivate Class<?> qtSessionClass;\n\tprivate Class<?> timeRecordClass;\n\tprivate Object controller;\n\tprivate Object movie;\n\tprivate String movieName;\n\tprivate String errorMessage;\n\tprivate int version;\n\tprivate boolean hasQuickTime;\n\tprivate boolean controllerVisible;\n\tprivate double clipVolume;\n\tprivate double clipRate;\n\n/* Private class variables */\n\tprivate static Object lock = new Object();\n\n}\n\n/* Package class: MovieClipListener */\n/**\n * This class encapsulates the listeners for the movie clip.\n */\nclass MovieClipListener implements ComponentListener {\n\n\tpublic void componentResized(ComponentEvent e) {\n\t\t((Container) e.getSource()).validate();\n\t}\n\n\tpublic void componentHidden(ComponentEvent e) { }\n\tpublic void componentMoved(ComponentEvent e) { }\n\tpublic void componentShown(ComponentEvent e) { }\n\n}\n\n/* Package class: ErrorWindow */\n/**\n * This class is displayed in the movie container if QuickTime does not exist\n * on the system or the movie can't be found.\n */\nclass ErrorWindow extends Component {\n\n/* Constructor: ErrorWindow */\n/**\n * Constructs an error window, passing in the movie name and the error message string.\n */\n\tpublic ErrorWindow(String name, String msg) {\n\t\tmovieName = name;\n\t\terrorMessage = msg;\n\t}\n\n/* Overridden method: paint */\n/**\n * Paints the name of the movie and the error message.\n */\n\tpublic void paint(Graphics g) {\n\t\tDimension size = getSize();\n\t\tFontMetrics fm = g.getFontMetrics();\n\t\tg.setColor(Color.WHITE);\n\t\tg.fillRect(0, 0, size.width, size.height);\n\t\tg.setColor(Color.BLACK);\n\t\tint x = (size.width - fm.stringWidth(movieName)) / 2;\n\t\tint y = size.height / 2 - fm.getHeight();\n\t\tg.drawString(movieName, x, y);\n\t\tg.setColor(Color.RED);\n\t\tx = (size.width - fm.stringWidth(errorMessage)) / 2;\n\t\ty += 2 * fm.getHeight();\n\t\tg.drawString(errorMessage, x, y);\n\t}\n\n/* Private instance variables */\n\tprivate String movieName;\n\tprivate String errorMessage;\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/util/OptionTable.java",
    "content": "/*\n * @(#)OptionTable.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Code cleanup 28-May-07 (ESR)\n//   1. Eliminated relationship to HashTable superclass.\n//   2. Added generic type tags.\n\npackage acm.util;\n\nimport java.io.*;\nimport java.util.*;\n\n/* Class: OptionTable */\n/**\n * This class implements a simple tool for parsing key/value pairs from\n * a string.\n */\npublic class OptionTable {\n\n/* Constructor: OptionTable(str) */\n/**\n * Creates a new <code>OptionTable</code> and initializes it\n * from the specified string.  The options in <code>str</code>\n * are in two possible forms:\n *\n * <ol>\n * <li>key\n * <li>key=value\n * </ol>\n *\n * The first option sets the value associated with the key to\n * the empty string; the second supplies the value explicitly.\n *\n * @usage OptionTable options = new OptionTable(str);\n * @param str The option string that is parsed to initialize the table\n */\n\tpublic OptionTable(String str) {\n\t\tthis(str, null);\n\t}\n\n/* Constructor: OptionTable(str, keys) */\n/**\n * Creates a new <code>OptionTable</code> from the specified string,\n * checking to make sure that all keys exist in the string array\n * <code>keys</code>.  If <code>keys</code> is <code>null</code>,\n * checking is disabled.\n *\n * @usage OptionTable options = new OptionTable(str, keys);\n * @param str The option string that is parsed to initialize the table\n * @param keys An array of strings indicating the legal keys\n */\n\tpublic OptionTable(String str, String[] keys) {\n\t\toptionTable = new HashMap<String,String>();\n\t\ttry {\n\t\t\tStreamTokenizer tokenizer = createTokenizer(str);\n\t\t\tint ttype = tokenizer.nextToken();\n\t\t\twhile (ttype != StreamTokenizer.TT_EOF) {\n\t\t\t\tif (ttype != StreamTokenizer.TT_WORD) {\n\t\t\t\t\tthrow new ErrorException(\"Illegal option string: \" + str);\n\t\t\t\t}\n\t\t\t\tString key = tokenizer.sval;\n\t\t\t\tif (keys != null && !keyExists(key, keys)) {\n\t\t\t\t\tthrow new ErrorException(\"Unrecognized option: \" + key);\n\t\t\t\t}\n\t\t\t\tttype = tokenizer.nextToken();\n\t\t\t\tif (ttype == '=') {\n\t\t\t\t\tttype = tokenizer.nextToken();\n\t\t\t\t\tif (ttype != StreamTokenizer.TT_WORD && ttype != '\"' && ttype != '\\'') {\n\t\t\t\t\t\tthrow new ErrorException(\"Illegal option string: \" + str);\n\t\t\t\t\t}\n\t\t\t\t\toptionTable.put(key, tokenizer.sval);\n\t\t\t\t\tttype = tokenizer.nextToken();\n\t\t\t\t} else {\n\t\t\t\t\toptionTable.put(key, \"\");\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(\"Illegal option string: \" + str);\n\t\t}\n\t}\n\n/* Constructor: OptionTable(map) */\n/**\n * Creates a new <code>OptionTable</code> from an existing map.\n * Most clients will not need to use this method.\n *\n * @usage OptionTable options = new OptionTable(map);\n * @param map An existing key/value mapping\n */\n\tpublic OptionTable(Map<String,String> map) {\n\t\toptionTable = new HashMap<String,String>();\n\t\tfor (Iterator<String> i = map.keySet().iterator(); i.hasNext(); ) {\n\t\t\tString key = i.next();\n\t\t\tString value = map.get(key);\n\t\t\toptionTable.put(key, value);\n\t\t}\n\t}\n\n/* Method: isSpecified(key) */\n/**\n * Returns true if the key has been specified in the option table.\n *\n * @usage if (options.isSpecified(key)) . . .\n * @param key The key being checked\n * @return <code>true</code> if <code>key</code> was specified in the option string\n */\n\tpublic boolean isSpecified(String key) {\n\t\treturn optionTable.containsKey(key);\n\t}\n\n/* Method: getOption(key) */\n/**\n * Returns the value associated with <code>key</code> in the option\n * table, or <code>null</code> if no such value exists.\n *\n * @usage String value = options.getOption(key);\n * @param key The key\n * @return The corresponding option value\n */\n\tpublic String getOption(String key) {\n\t\treturn getOption(key, null);\n\t}\n\n/* Method: getOption(key, defValue) */\n/**\n * Returns the value associated with <code>key</code> in the option\n * table or the specified default value if no such binding exists.\n *\n * @usage String value = options.getOption(key, defValue);\n * @param key The key\n * @param defValue The default to use if the key is not found\n * @return The corresponding option value\n */\n\tpublic String getOption(String key, String defValue) {\n\t\tString value = optionTable.get(key);\n\t\treturn (value == null || value.equals(\"\")) ? defValue : value;\n\t}\n\n/* Method: getIntOption(key) */\n/**\n * Returns the integer value associated with <code>key</code> in the option\n * table, or 0 if no such value exists.\n *\n * @usage int value = options.getIntOption(key);\n * @param key The key\n * @return The corresponding option value parsed as an integer\n */\n\tpublic int getIntOption(String key) {\n\t\treturn getIntOption(key, 0);\n\t}\n\n/* Method: getIntOption(key, defValue) */\n/**\n * Returns the integer value associated with <code>key</code> in the option\n * table or the specified default value if no such binding exists.\n *\n * @usage int value = options.getIntOption(key, defValue);\n * @param key The key\n * @param defValue The default to use if the key is not found\n * @return The corresponding option value\n */\n\tpublic int getIntOption(String key, int defValue) {\n\t\tString binding = getOption(key, null);\n\t\tif (binding == null || binding.equals(\"\")) return defValue;\n\t\treturn Integer.decode(binding).intValue();\n\t}\n\n/* Method: getDoubleOption(key) */\n/**\n * Returns the <code>double</code> value associated with <code>key</code>\n * in the option table, or 0.0 if no such value exists.\n *\n * @usage double value = options.getDoubleOption(key);\n * @param key The key\n * @return The corresponding option value parsed as a <code>double</code>\n */\n\tpublic double getDoubleOption(String key) {\n\t\treturn getDoubleOption(key, 0.0);\n\t}\n\n/* Method: getDoubleOption(key, defValue) */\n/**\n * Returns the <code>double</code> value associated with <code>key</code>\n * in the option table or the specified default value if no such binding\n * exists.\n *\n * @usage double value = options.getDoubleOption(key, defValue);\n * @param key The key\n * @param defValue The default to use if the key is not found\n * @return The corresponding option value\n */\n\tpublic double getDoubleOption(String key, double defValue) {\n\t\tString binding = getOption(key, null);\n\t\tif (binding == null || binding.equals(\"\")) return defValue;\n\t\treturn Double.valueOf(binding).doubleValue();\n\t}\n\n/* Method: getMap() */\n/**\n * Returns the <code>HashMap</code> used to associate keys and options.\n *\n * @usage HashMap<String,String> map = options.getMap();\n * @return The <code>HashMap</code> used to associate keys and options\n * @noshow\n */\n\tpublic HashMap<String,String> getMap() {\n\t\treturn optionTable;\n\t}\n\n/* Private method: createTokenizer(str) */\n/**\n * Creates a tokenizer for the specified string.\n */\n\tprivate StreamTokenizer createTokenizer(String str) {\n\t\tStreamTokenizer t = new StreamTokenizer(new StringReader(str));\n\t\tt.resetSyntax();\n\t\tt.wordChars((char) 33, (char) ('=' - 1));\n\t\tt.wordChars((char) ('=' + 1), (char) 126);\n\t\tt.quoteChar('\"');\n\t\tt.quoteChar('\\'');\n\t\tt.whitespaceChars(' ', ' ');\n\t\tt.whitespaceChars('\\t', '\\t');\n\t\treturn t;\n\t}\n\n/* Private method: keyExists(key, keys) */\n/**\n * Checks to see whether the key exists in the array of keys.\n */\n\tprivate boolean keyExists(String key, String[] keys) {\n\t\tfor (int i = 0; i < keys.length; i++) {\n\t\t\tif (key.equals(keys[i])) return true;\n\t\t}\n\t\treturn false;\n\t}\n\n/* Private instance variables */\n\tprivate HashMap<String,String> optionTable;\n\n/* Serial version UID */\n/**\n * The serialization code for this class.  This value should be incremented\n * whenever you change the structure of this class in an incompatible way,\n * typically by adding a new instance variable.\n */\n\tstatic final long serialVersionUID = 1L;\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/util/Platform.java",
    "content": "/*\n * @(#)Platform.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY [NOTE: Remember to update JTF_VERSION on each release]\n//\n// -- V2.0 --\n// Feature enhancement 2-Mar-07 (ESR)\n//   1. Added copyFileTypeAndCreator method.\n//   2. Added getJTFVersion method.\n\npackage acm.util;\n\nimport java.awt.*;\nimport java.io.*;\nimport java.lang.reflect.*;\nimport java.util.*;\n\n/* Class: Platform */\n/**\n * This class contains methods to support platform-specific code.\n */\npublic class Platform {\n\n/* Constant: UNKNOWN */\n/** Indicates that the type of system cannot be determined. */\n\tpublic static final int UNKNOWN = 0;\n\n/* Constant: MAC */\n/** Indicates that the system is some variety of Apple Macintosh. */\n\tpublic static final int MAC = 1;\n\n/* Constant: UNIX */\n/** Indicates that the system is some variety of Unix or Linux. */\n\tpublic static final int UNIX = 2;\n\n/* Constant: WINDOWS */\n/** Indicates that the system is some variety of Microsoft Windows. */\n\tpublic static final int WINDOWS = 3;\n\n/* Private constructor: Platform */\n/**\n * Prevents anyone else from constructing this class.\n */\n\tprivate Platform() {\n\t\t/* Empty */\n\t}\n\n/* Static method: getPlatform() */\n/**\n * Returns an enumeration constant specifying the type of platform\n * on which this applet is running, which is one of the supported\n * types defined at the beginning of this class.\n *\n * @usage int platform = Platform.getPlatform();\n * @return A constant specifying the platform type\n */\n\tpublic static int getPlatform() {\n\t\tif (platform != -1) return platform;\n\t\tString name = System.getProperty(\"os.name\", \"\").toLowerCase();\n\t\tif (name.startsWith(\"mac\")) return platform = MAC;\n\t\tif (name.startsWith(\"windows\")) return platform = WINDOWS;\n\t\tif (name.startsWith(\"microsoft\")) return platform = WINDOWS;\n\t\tif (name.startsWith(\"ms\")) return platform = WINDOWS;\n\t\tif (name.startsWith(\"unix\")) return platform = UNIX;\n\t\tif (name.startsWith(\"linux\")) return platform = UNIX;\n\t\treturn platform = UNKNOWN;\n\t}\n\n/* Static method: isMac */\n/**\n * Checks whether the platform is a Macintosh.\n *\n * @usage if (Platform.isMac()) . . .\n * @return <code>true</code> if the platform is a Macintosh, <code>false</code> otherwise\n */\n\tpublic static boolean isMac() {\n\t\treturn getPlatform() == MAC;\n\t}\n\n/* Static method: isWindows() */\n/**\n * Checks whether the platform is a Windows machine.\n *\n * @usage if (Platform.isWindows()) . . .\n * @return <code>true</code> if the platform is a Windows machine, <code>false</code> otherwise\n */\n\tpublic static boolean isWindows() {\n\t\treturn getPlatform() == WINDOWS;\n\t}\n\n/* Static method: isUnix() */\n/**\n * Checks whether the platform is Unix.\n *\n * @usage if (Platform.isUnix()) . . .\n * @return <code>true</code> if the platform is Unix, <code>false</code> otherwise\n */\n\tpublic static boolean isUnix() {\n\t\treturn getPlatform() == UNIX;\n\t}\n\n/* Static method: setFileTypeAndCreator(filename, type, creator) */\n/**\n * Sets the Macintosh file type and creator.  This method is ignored on non-Mac\n * platforms.\n *\n * @usage Platform.setFileTypeAndCreator(filename, type, creator);\n * @param filename The name of the file\n * @param type A four-character string indicating the file type\n * @param creator A four-character string indicating the file type\n */\n\tpublic static void setFileTypeAndCreator(String filename, String type, String creator) {\n\t\tif (!isMac()) return;\n\t\ttry {\n\t\t\tsetFileTypeAndCreator(new File(filename), type, creator);\n\t\t} catch (Exception ex) {\n\t\t\t/* Empty */\n\t\t}\n\t}\n\n/* Static method: setFileTypeAndCreator(file, type, creator) */\n/**\n * Sets the Macintosh file type and creator.  This method is ignored on non-Mac\n * platforms.\n *\n * @usage Platform.setFileTypeAndCreator(file, type, creator);\n * @param file The <code>File</code> object corresponding to the file\n * @param type A four-character string indicating the file type\n * @param creator A four-character string indicating the file type\n */\n\tpublic static void setFileTypeAndCreator(File file, String type, String creator) {\n\t\tif (!isMac()) return;\n\t\ttry {\n\t\t\tClass<?> mrjOSTypeClass = Class.forName(\"com.apple.mrj.MRJOSType\");\n\t\t\tClass<?> mrjFileUtilsClass = Class.forName(\"com.apple.mrj.MRJFileUtils\");\n\t\t\tClass[] sig1 = { Class.forName(\"java.lang.String\") };\n\t\t\tConstructor<?> constructor = mrjOSTypeClass.getConstructor(sig1);\n\t\t\tClass[] sig2 = { Class.forName(\"java.io.File\"), mrjOSTypeClass, mrjOSTypeClass };\n\t\t\tMethod setFileTypeAndCreator = mrjFileUtilsClass.getMethod(\"setFileTypeAndCreator\", sig2);\n\t\t\tObject[] args1 = { (type + \"    \").substring(0, 4) };\n\t\t\tObject osType = constructor.newInstance(args1);\n\t\t\tObject[] args2 = { (creator + \"    \").substring(0, 4) };\n\t\t\tObject creatorType = constructor.newInstance(args2);\n\t\t\tObject[] args3 = { file, osType, creatorType };\n\t\t\tsetFileTypeAndCreator.invoke(null, args3);\n\t\t} catch (Exception ex) {\n\t\t\t/* Empty */\n\t\t}\n\t}\n\n/* Static method: copyFileTypeAndCreator(newFile, oldFile) */\n/**\n * Sets the Macintosh file type and creator for the new file using the old file\n * as a model.  This method is ignored on non-Mac platforms.\n *\n * @usage Platform.copyFileTypeAndCreator(oldFile, newFile);\n * @param oldFile The <code>File</code> object corresponding to the existing file\n * @param newFile The <code>File</code> object corresponding to the new file\n */\n\tpublic static void copyFileTypeAndCreator(File oldFile, File newFile) {\n\t\tif (!isMac()) return;\n\t\ttry {\n\t\t\tClass<?> mrjOSTypeClass = Class.forName(\"com.apple.mrj.MRJOSType\");\n\t\t\tClass<?> mrjFileUtilsClass = Class.forName(\"com.apple.mrj.MRJFileUtils\");\n\t\t\tClass[] sig1 = { Class.forName(\"java.io.File\") };\n\t\t\tMethod getFileType = mrjFileUtilsClass.getMethod(\"getFileType\", sig1);\n\t\t\tMethod getFileCreator = mrjFileUtilsClass.getMethod(\"getFileCreator\", sig1);\n\t\t\tClass[] sig2 = { Class.forName(\"java.io.File\"), mrjOSTypeClass, mrjOSTypeClass };\n\t\t\tMethod setFileTypeAndCreator = mrjFileUtilsClass.getMethod(\"setFileTypeAndCreator\", sig2);\n\t\t\tObject[] args1 = { oldFile };\n\t\t\tObject osType = getFileType.invoke(null, args1);\n\t\t\tObject creatorType = getFileCreator.invoke(null, args1);\n\t\t\tObject[] args2 = { newFile, osType, creatorType };\n\t\t\tsetFileTypeAndCreator.invoke(null, args2);\n\t\t} catch (Exception ex) {\n\t\t\t/* Empty */\n\t\t}\n\t}\n\n/* Static method: getJTFVersion() */\n/**\n * Returns the version number of the JTF libraries as a string\n * suitable for use with the <code>compareVersion</code> method.  Note\n * that this returns the value of the version of the library that is\n * actually loaded.  Making this a constant would mean that the value\n * would be the one with which the code was compiled, which is less\n * likely to be useful.\n *\n * @usage String version = getJTFVersion();\n * @return The loaded version of the JTF libraries\n */\n\tpublic static String getJTFVersion() {\n\t\treturn JTF_VERSION;\n\t}\n\n/* Static method: compareVersion(version) */\n/**\n * This method compares the Java version given in the system properties\n * with the specified version and returns -1, 0, or +1 depending on whether\n * the system version is earlier than, equal to, or later than the specified\n * one.  Thus, to test whether the current version of the JDK was at least\n * 1.2.1, for example, you could write\n *\n * <p><pre><code>\n * &nbsp;    if (Platform.compareVersion(\"1.2.1\") &gt;= 0) . . .\n * </code></pre>\n *\n * @usage int cmp = Platform.compareVersion(version);\n * @param version A string consisting of integers separated by periods\n * @return -1, 0, or +1 depending on whether the system version is earlier than,\n *         equal to, or later than the specified one\n */\n\tpublic static int compareVersion(String version) {\n\t\treturn compareVersion(System.getProperty(\"java.version\"), version);\n\t}\n\n/* Static method: compareVersion(v1, v2) */\n/**\n * This method compares the version strings <code>v1</code> and <code>v2</code>\n * and returns -1, 0, or +1 depending on whether <code>v1</code> is earlier\n * than, equal to, or later than <code>v2</code>.\n *\n * @usage int cmp = Platform.compareVersion(v1, v2);\n * @param v1 A string consisting of integers separated by periods\n * @param v2 A second version string in the same format\n * @return -1, 0, or +1 depending on whether <code>v1</code> is earlier than,\n *         equal to, or later than <code>v2</code>\n */\n\tpublic static int compareVersion(String v1, String v2) {\n\t\tStringTokenizer t1 = new StringTokenizer(v1, \".\");\n\t\tStringTokenizer t2 = new StringTokenizer(v2, \".\");\n\t\twhile (t1.hasMoreTokens() && t2.hasMoreTokens()) {\n\t\t\tint n1 = Integer.parseInt(t1.nextToken());\n\t\t\tint n2 = Integer.parseInt(t2.nextToken());\n\t\t\tif (n1 != n2) return (n1 < n2) ? -1 : +1;\n\t\t}\n\t\tif (t1.hasMoreTokens()) return +1;\n\t\tif (t2.hasMoreTokens()) return -1;\n\t\treturn 0;\n\t}\n\n/* Static method: isSwingAvailable() */\n/**\n * Checks whether Swing is available.  Unfortunately, some browsers seem to lie\n * about the JDK version and return a 1.2 number without actually having Swing.\n * This implementation tests the version first, but then confirms the result\n * by looking for the <code>JComponent</code> class.  Checking the version first\n * means that no <nobr><code>SecurityException</code>s</nobr> will be logged in\n * Windows machines, which always log <nobr><code>SecurityException</code>s</nobr>,\n * even if the exception is caught.\n *\n * @usage if (Platform.isSwingAvailable()) . . .\n * @return <code>true</code> if Swing is available, <code>false</code> otherwise\n */\n\tpublic static boolean isSwingAvailable() {\n\t\tif (!swingChecked) {\n\t\t\tswingChecked = true;\n\t\t\tisSwingAvailable = false;\n\t\t\tif (compareVersion(\"1.2\") >= 0) {\n\t\t\t\ttry {\n\t\t\t\t\tisSwingAvailable = Class.forName(\"javax.swing.JComponent\") != null;\n\t\t\t\t} catch (Exception ex) {\n\t\t\t\t\t/* Empty */\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn isSwingAvailable;\n\t}\n\n/* Static method: isSunAudioAvailable() */\n/**\n * Checks whether the <code>sun.audio</code> package is available.\n *\n * @usage if (Platform.isSunAudioAvailable()) . . .\n * @return <code>true</code> if the <code>sun.audio</code> package is available,\n *         <code>false</code> otherwise\n */\n\tpublic static boolean isSunAudioAvailable() {\n\t\tif (!sunAudioChecked) {\n\t\t\tsunAudioChecked = true;\n\t\t\ttry {\n\t\t\t\tisSunAudioAvailable = Class.forName(\"sun.audio.AudioPlayer\") != null;\n\t\t\t} catch (Exception ex) {\n\t\t\t\tisSunAudioAvailable = false;\n\t\t\t}\n\t\t}\n\t\treturn isSunAudioAvailable;\n\t}\n\n/* Static method: isJMFAvailable() */\n/**\n * Checks whether the Java Media Framework is available.\n *\n * @usage if (Platform.isJMFAvailable()) . . .\n * @return <code>true</code> if the JMF package is available, <code>false</code> otherwise\n */\n\tpublic static boolean isJMFAvailable() {\n\t\tif (!jmfChecked) {\n\t\t\tjmfChecked = true;\n\t\t\ttry {\n\t\t\t\tisJMFAvailable = Class.forName(\"javax.media.Player\") != null;\n\t\t\t} catch (Exception ex) {\n\t\t\t\tisJMFAvailable = false;\n\t\t\t}\n\t\t}\n\t\treturn isJMFAvailable;\n\t}\n\n/* Static method: areCollectionsAvailable() */\n/**\n * Checks whether the JDK 1.2 collection classes are available.  Some browsers\n * return a version of the JDK that does not actually match what is supported.\n * This method actually checks whether the collection classes are there by\n * looking for the <code>ArrayList</code> class.\n *\n * @usage if (Platform.areCollectionsAvailable()) . . .\n * @return <code>true</code> if collections are available, <code>false</code> otherwise\n */\n\tpublic static boolean areCollectionsAvailable() {\n\t\tif (!collectionsChecked) {\n\t\t\tcollectionsChecked = true;\n\t\t\ttry {\n\t\t\t\tareCollectionsAvailable = Class.forName(\"java.util.ArrayList\") != null;\n\t\t\t} catch (Exception ex) {\n\t\t\t\tareCollectionsAvailable = false;\n\t\t\t}\n\t\t}\n\t\treturn areCollectionsAvailable;\n\t}\n\n/* Static method: areStandardFontFamiliesAvailable() */\n/**\n * Checks whether the JDK 1.2 standard font families (<code>Serif</code>,\n * <code>SansSerif</code>, and <code>Monospaced</code>) are available.\n *\n * @usage if (Platform.areStandardFontFamiliesAvailable()) . . .\n * @return <code>true</code> if the standard fonts are available, <code>false</code> otherwise\n */\n\tpublic static boolean areStandardFontFamiliesAvailable() {\n\t\tif (!fontsChecked) {\n\t\t\tfontsChecked = true;\n\t\t\ttry {\n\t\t\t\tClass<?> toolkitClass = Class.forName(\"java.awt.Toolkit\");\n\t\t\t\tMethod getFontList = toolkitClass.getMethod(\"getFontList\", new Class[0]);\n\t\t\t\tString[] fonts = (String[]) getFontList.invoke(Toolkit.getDefaultToolkit(), new Object[0]);\n\t\t\t\tint standardFontCount = 0;\n\t\t\t\tfor (int i = 0; i < fonts.length; i++) {\n\t\t\t\t\tif (fonts[i].equals(\"Serif\") || fonts[i].equals(\"SansSerif\") || fonts[i].equals(\"Monospaced\")) {\n\t\t\t\t\t\tstandardFontCount++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tareStandardFontFamiliesAvailable = (standardFontCount == 3);\n\t\t\t} catch (Exception ex) {\n\t\t\t\tareStandardFontFamiliesAvailable = false;\n\t\t\t}\n\t\t}\n\t\treturn areStandardFontFamiliesAvailable;\n\t}\n\n/* Private constants */\n\tprivate static final String JTF_VERSION = \"1.99.1\";\n\n/* Private static variables */\n\tprivate static int platform = -1;\n\tprivate static boolean areStandardFontFamiliesAvailable;\n\tprivate static boolean fontsChecked;\n\tprivate static boolean isSwingAvailable;\n\tprivate static boolean swingChecked;\n\tprivate static boolean areCollectionsAvailable;\n\tprivate static boolean collectionsChecked;\n\tprivate static boolean isSunAudioAvailable;\n\tprivate static boolean sunAudioChecked;\n\tprivate static boolean isJMFAvailable;\n\tprivate static boolean jmfChecked;\n\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/util/RandomGenerator.java",
    "content": "/*\n * @(#)RandomGenerator.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// -- V2.0 --\n// Feature enhancement 26-May-08 (ESR)\n//   1. Added support for serialization.\n\npackage acm.util;\n\nimport java.awt.*;\nimport java.util.*;\n\n/* Class: RandomGenerator */\n/**\n * This class implements a simple random number generator that allows\n * clients to generate pseudorandom integers, doubles, booleans, and\n * colors.  To use it, the first step is to declare an instance variable\n * to hold the random generator as follows:\n *\n * <p><pre><code>\n * &nbsp;    private RandomGenerator rgen = RandomGenerator.getInstance();\n * </code></pre>\n *\n * <p>By default, the <code>RandomGenerator</code> object is initialized\n * to begin at an unpredictable point in a pseudorandom sequence.  During\n * debugging, it is often useful to set the internal seed for the random\n * generator explicitly so that it always returns the same sequence.\n * To do so, you need to invoke the\n * <a href=\"http://com/j2se/1.4.2/docs/api/java/util/Random.html#setSeed(int)\"><code>setSeed</code></a>\n * method.\n *\n * <p>The <code>RandomGenerator</code> object returned by <code>getInstance</code>\n * is shared across all classes in an application.  Using this shared instance of\n * the generator is preferable to allocating new instances of <code>RandomGenerator</code>.\n * If you create several random generators in succession, they will\n * typically generate the same sequence of values.\n */\npublic class RandomGenerator extends Random {\n\n/* Constructor: RandomGenerator() */\n/**\n * Creates a new random generator.  Most clients will not use the constructor\n * directly but will instead call <a href=\"#getInstance()\"><code>getInstance</code></a>\n * to obtain a <code>RandomGenerator</code> object that is shared by all classes\n * in the application.\n *\n * @usage RandomGenerator rgen = new RandomGenerator();\n */\n\tpublic RandomGenerator() {\n\t\t/* Empty */\n\t}\n\n/* Method: nextInt(n) */\n/**\n * Returns the next random integer between 0 and <code>n</code>-1, inclusive.\n * This method is in modern implementations of the <code>Random</code> class,\n * but is missing from JDK 1.1.\n * @noshow\n */\n\tpublic int nextInt(int n) {\n\t\treturn nextInt(0, n - 1);\n\t}\n\n/* Method: nextBoolean() */\n/**\n * Returns a random <code>boolean</code> value that is <code>true</code> or\n * <code>false</code> with equal probability.  This method is in modern\n * implementations of the <code>Random</code> class, but is missing from JDK 1.1.\n * @noshow\n */\n\tpublic boolean nextBoolean() {\n\t\treturn nextBoolean(0.5);\n\t}\n\n/* Method: nextInt(low, high) */\n/**\n * Returns the next random integer in the specified range.  For example, you\n * can generate the roll of a six-sided die by calling\n *\n * <p><pre><code>\n * &nbsp;    rgen.nextInt(1, 6);\n * </code></pre>\n *\n * <p>or a random decimal digit by calling\n *\n * <p><pre><code>\n * &nbsp;    rgen.nextInt(0, 9);\n * </code></pre>\n *\n * @usage int k = rgen.nextInt(low, high)\n * @param low The low end of the range\n * @param high The high end of the range\n * @return The next random <code>int</code> between <code>low</code> and <code>high</code>, inclusive\n */\n\tpublic int nextInt(int low, int high) {\n\t\treturn low + (int) ((high - low + 1) * nextDouble());\n\t}\n\n/* Method: nextDouble(low, high) */\n/**\n * Returns the next random real number in the specified range.  The resulting value is\n * always at least <code>low</code> but always strictly less than <code>high</code>.\n * You can use this method to generate continuous random values.  For example, you\n * can set the variables <code>x</code> and <code>y</code> to specify a random\n * point inside the unit square as follows:\n *\n * <p><pre><code>\n * &nbsp;    double x = rgen.nextDouble(0.0, 1.0);\n * &nbsp;    double y = rgen.nextDouble(0.0, 1.0);\n * </code></pre>\n *\n * @usage double d = rgen.nextDouble(low, high)\n * @param low The low end of the range\n * @param high The high end of the range\n * @return A random <code>double</code> value <i>d</i> in the range <code>low</code> &le; <i>d</i> &lt; <code>high</code>\n */\n\tpublic double nextDouble(double low, double high) {\n\t\treturn low + (high - low) * nextDouble();\n\t}\n\n/* Method: nextBoolean(probability) */\n/**\n * Returns a random <code>boolean</code> value with the specified probability.  You can use\n * this method to simulate an event that occurs with a particular probability.  For example,\n * you could simulate the result of tossing a coin like this:\n *\n * <p><pre><code>\n * &nbsp;    String coinFlip = rgen.nextBoolean(0.5) ? \"HEADS\" : \"TAILS\";\n * </code></pre>\n *\n * @usage if (rgen.nextBoolean(p)) . . .\n * @param p A value between 0 (impossible) and 1 (certain) indicating the probability\n * @return The value <code>true</code> with probability <code>p</code>\n */\n\tpublic boolean nextBoolean(double p) {\n\t\treturn nextDouble() < p;\n\t}\n\n/* Method: nextColor() */\n/**\n * Returns a random opaque color whose components are chosen uniformly\n * in the 0-255 range.\n *\n * @usage Color color = rgen.newColor()\n * @return A random opaque <a href=\"http://com/j2se/1.4.2/docs/api/java/awt/Color.html\"><code>Color</code></a>\n */\n\tpublic Color nextColor() {\n\t\treturn new Color(nextInt(256), nextInt(256), nextInt(256));\n\t}\n\n/* Static method: getInstance() */\n/**\n * Returns a <code>RandomGenerator</code> instance that can\n * be shared among several classes.\n *\n * @usage RandomGenerator rgen = RandomGenerator.getInstance();\n * @return A shared <code>RandomGenerator</code> object\n */\n\tpublic static RandomGenerator getInstance() {\n\t\tif (standardInstance == null) standardInstance = new RandomGenerator();\n\t\treturn standardInstance;\n\t}\n\n/* Inherited method: setSeed(seed) */\n/**\n * @inherited Random#void setSeed(long seed)\n * Sets a new starting point for the random generator sequence.\n */\n\n/* Inherited method: nextDouble() */\n/**\n * @inherited Random#double nextDouble()\n * Returns a random <code>double</code> <i>d</i> in the range 0 &le; <i>d</i> &lt; 1.\n */\n\n/* Inherited method: nextInt() */\n/**\n * @inherited Random#int nextInt(int n)\n * Returns a random <code>int</code> <i>k</i> in the range 0 &le; <i>k</i> &lt; <code>n</code>.\n */\n\n/* Inherited method: nextBoolean() */\n/**\n * @inherited Random#boolean nextBoolean()\n * Returns a random <code>boolean</code> that is <code>true</code> 50 percent of the time.\n */\n\n/* Private static variables */\n\tprivate static RandomGenerator standardInstance;\n\n/* Serial version UID */\n/**\n * The serialization code for this class.  This value should be incremented\n * whenever you change the structure of this class in an incompatible way,\n * typically by adding a new instance variable.\n */\n\tstatic final long serialVersionUID = 1L;\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/util/SoundClip.java",
    "content": "/*\n * @(#)SoundClip.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\n// REVISION HISTORY\n//\n// Class introduced in V1.1\n\npackage acm.util;\n\nimport java.applet.*;\nimport java.io.*;\nimport java.net.*;\nimport java.text.*;\nimport javax.sound.sampled.*;\n\n/* Class: SoundClip */\n/**\n * This class represents a sound, which can be created from a URL, sound file,\n * resource stream, or digital samples.\n */\n\npublic class SoundClip implements AudioClip {\n\n/* Constant: MONO */\n/**\n * Number of channels in a mono sound.\n */\n\tpublic static final int MONO = 1;\n\n/* Constant: STEREO */\n/**\n * Number of channels in a stereo sound.\n */\n\tpublic static final int STEREO = 2;\n\n/* Constant: LEFT */\n/**\n * Identifies the left channel in a stereo sound.\n */\n\tpublic static final int LEFT = 0;\n\n/* Constant: RIGHT */\n/**\n * Identifies the right channel in a stereo sound.\n */\n\tpublic static final int RIGHT = 1;\n\n/* Constant: STANDARD_FRAME_RATE */\n/**\n * Specifies the standard frame rate in a sampled sound.\n */\n\tpublic static final double STANDARD_FRAME_RATE = 22050.0;\n\n/* Constant: MAX_SAMPLE */\n/**\n * Specifies the maximum value of a sample in a sound.  Samples are signed integers\n * between <code>-MAX_SAMPLE</code> and <code>MAX_SAMPLE</code>.\n */\n\tpublic static final int MAX_SAMPLE = 32767;\n\n/* Constructor: SoundClip() */\n/**\n * Creates an empty single-channel sound to which samples can be added.\n *\n * @usage SoundClip sound = new SoundClip();\n */\n\tpublic SoundClip() {\n\t\tthis(MONO);\n\t}\n\n/* Constructor: SoundClip(channels) */\n/**\n * Creates an empty sound with the specified number of channels, which\n * must be 1 for mono and 2 for stereo.\n *\n * @usage SoundClip sound = new SoundClip(channels);\n * @param channels The desired number of channels (1 for mono, 2 for stereo)\n */\n\tpublic SoundClip(int channels) {\n\t\tif (channels < 1 || channels > 2) {\n\t\t\tthrow new ErrorException(\"SoundClip: Illegal number of channels\");\n\t\t}\n\t\tnChannels = channels;\n\t\tframeRate = (float) STANDARD_FRAME_RATE;\n\t\tsoundName = \"Untitled\";\n\t\tframeCount = 0;\n\t\tclipVolume = 1.0;\n\t\tdata = new byte[0];\n\t\tformat = new AudioFormat(frameRate, 16, channels, true, true);\n\t}\n\n/* Constructor: SoundClip(name) */\n/**\n * Creates a new sound by reading the data from the specified file.\n *\n * @usage SoundClip sound = new SoundClip(name);\n * @param name The file from which the sound is read\n */\n\tpublic SoundClip(String name) {\n\t\tif (name.startsWith(\"http:\")) {\n\t\t\ttry {\n\t\t\t\tURL url = new URL(name);\n\t\t\t\tsoundName = JTFTools.getURLSuffix(url.getPath());\n\t\t\t\treadSound(convertToPCM(getAudioInputStream(url.openStream())));\n\t\t\t} catch (Exception ex) {\n\t\t\t\tthrow new ErrorException(ex);\n\t\t\t}\n\t\t} else {\n\t\t\tsoundName = name;\n\t\t\treadSound(convertToPCM(getAudioInputStream(new File(name))));\n\t\t}\n\t}\n\n/* Constructor: SoundClip(file) */\n/**\n * Creates a new sound by reading the data from the specified file.\n *\n * @usage SoundClip sound = new SoundClip(file);\n * @param file A <code>File</code> object from which the sound is read\n */\n\tpublic SoundClip(File file) {\n\t\ttry {\n\t\t\tsoundName = file.getName();\n\t\t\treadSound(convertToPCM(getAudioInputStream(file)));\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/* Constructor: SoundClip(url) */\n/**\n * Creates a new sound by reading the data from the specified URL.\n *\n * @usage SoundClip sound = new SoundClip(url);\n * @param url A network URL containing the sound\n */\n\tpublic SoundClip(URL url) {\n\t\ttry {\n\t\t\tsoundName = JTFTools.getURLSuffix(url.getPath());\n\t\t\treadSound(convertToPCM(getAudioInputStream(url.openStream())));\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/* Constructor: SoundClip(in) */\n/**\n * Creates a new sound by reading the data from the specified input stream.\n *\n * @usage SoundClip sound = new SoundClip(in);\n * @param in An <code>InputStream</code> from which the sound is read\n */\n\tpublic SoundClip(InputStream in) {\n\t\tsoundName = \"Untitled\";\n\t\treadSound(convertToPCM(getAudioInputStream(in)));\n\t}\n\n/* Constructor: SoundClip(samples) */\n/**\n * Creates a new mono sound from the sample array.\n *\n * @usage SoundClip sound = new SoundClip(samples);\n * @param samples An array of integers containing the sampled sound\n */\n\tpublic SoundClip(int[] samples) {\n\t\tthis(MONO);\n\t\taddSampleData(samples);\n\t}\n\n/* Constructor: SoundClip(left, right) */\n/**\n * Creates a new stereo sound from the two sample arrays.\n *\n * @usage SoundClip sound = new SoundClip(samples);\n * @param left An array of integers containing the samples for the left channel\n * @param right An array of integers containing the samples for the right channel\n */\n\tpublic SoundClip(int[] left, int[] right) {\n\t\tthis(STEREO);\n\t\taddSampleData(left, right);\n\t}\n\n/* Method: play() */\n/**\n * Plays the sound through the computer's audio system.\n *\n * @usage sound.play();\n */\n\tpublic synchronized void play() {\n\t\tif (player == null) player = new SoundPlayer(this);\n\t\tplayer.play();\n\t}\n\n/* Method: loop() */\n/**\n * Plays the sound in a continuous audio loop.\n *\n * @usage sound.loop();\n */\n\tpublic void loop() {\n\t\tif (player == null) player = new SoundPlayer(this);\n\t\tplayer.loop();\n\t}\n\n/* Method: stop() */\n/**\n * Stops the playback of the sound.  Calling <code>stop</code> saves the\n * current frame index so that calling <code>start</code> will resume from\n * the point at which it stopped.\n *\n * @usage sound.stop();\n */\n\tpublic synchronized void stop() {\n\t\tif (player != null) player.stop();\n\t}\n\n/* Method: save(filename) */\n/**\n * Writes a data file containing the specified sound.  The format of the sound\n * is determined by the file extension, as follows:\n *\n * <center>\n * <table border=1>\n * <tr><td align=center><code>.au</code></td><td>Sun audio file with ALAW encoding</td></tr>\n * <tr><td align=center><code>.wav</code></td><td>Waveform audio format</td></tr>\n * <tr><td align=center><code>.aif</code> or <code>.aiff</code></td><td>Audio Interchange File Format</td></tr>\n * </table>\n * </center>\n *\n * @usage sound.save(filename);\n * @param filename The name of the file\n */\n\tpublic void save(String filename) {\n\t\tsave(new File(System.getProperty(\"user.dir\"), filename));\n\t}\n\n/* Method: save(file) */\n/**\n * Writes the sound to the specified <code>File</code> object.\n *\n * @usage sound.save(file);\n * @param file The <code>File</code> object to which the sound is written\n */\n\tpublic void save(File file) {\n\t\ttry {\n\t\t\tAudioSystem.write(getAudioInputStream(), getFormatForFile(file.getName()), file);\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(\"save: I/O error - \" + ex.getMessage());\n\t\t}\n\t}\n\n/* Method: getName() */\n/**\n * Returns the name of the sound, which is typically the file name from which it\n * was read.\n *\n * @usage String name = sound.getName();\n * @return The name of the sound\n */\n\tpublic String getName() {\n\t\treturn soundName;\n\t}\n\n/* Method: setName(name) */\n/**\n * Sets a name to identify the sound.\n *\n * @usage sound.setName(name);\n * @param name The name to use for the sound\n */\n\tpublic void setName(String name) {\n\t\tsoundName = name;\n\t}\n\n/* Method: getChannelCount() */\n/**\n * Returns the number of channels.\n *\n * @usage int channels = sound.getChannelCount();\n * @return The number of channels (1 for mono, 2 for stereo)\n */\n\tpublic int getChannelCount() {\n\t\treturn nChannels;\n\t}\n\n/* Method: isStereo() */\n/**\n * Returns <code>true</code> if the sound is recorded in stereo.\n *\n * @usage if (sound.isStereo()) . . .\n * @return <code>true</code> if the sound is recorded in stereo\n */\n\tpublic boolean isStereo() {\n\t\treturn nChannels == STEREO;\n\t}\n\n/* Method: getFrameCount() */\n/**\n * Returns the number of frames in a sound.\n *\n * @usage int nFrames = sound.getFrameCount();\n * @return The number of frames in a sound\n */\n\tpublic int getFrameCount() {\n\t\treturn frameCount;\n\t}\n\n/* Method: getFrameRate() */\n/**\n * Returns the frame rate of the sound.\n *\n * @usage double frameRate = sound.getFrameRate();\n * @return The frame rate of the sound (in frames/second)\n */\n\tpublic double getFrameRate() {\n\t\treturn frameRate;\n\t}\n\n/* Method: getDuration() */\n/**\n * Returns the duration of a sound (in seconds).\n *\n * @usage double duration = sound.getDuration();\n * @return The duration of a sound (in seconds)\n */\n\tpublic double getDuration() {\n\t\treturn frameCount / frameRate;\n\t}\n\n/* Method: getFrameIndex() */\n/**\n * Returns the current frame index in the sound.\n *\n * @usage int frameIndex = sound.getFrameIndex();\n * @return The current frame index in the sound\n */\n\tpublic int getFrameIndex() {\n\t\treturn currentFrame;\n\t}\n\n/* Method: setFrameIndex(frame) */\n/**\n * Sets the current frame index.\n *\n * @usage sound.setFrameIndex(frameIndex);\n * @param frameIndex The current frame index in the sound\n */\n\tpublic void setFrameIndex(int frameIndex) {\n\t\tcurrentFrame = frameIndex;\n\t}\n\n/* Method: rewind() */\n/**\n * Rewinds the sound to the beginning.  This method is useful after you have\n * stopped a sound and want to replay it from the beginning.\n *\n * @usage sound.rewind();\n */\n\tpublic void rewind() {\n\t\tsetFrameIndex(0);\n\t}\n\n/* Method: getVolume() */\n/**\n * Returns the overall volume setting for the sound, which is a number\n * between 0 (silent) and 1 (maximum volume).\n *\n * @usage double volume = sound.getVolume();\n * @return The overall volume setting for the sound\n */\n\tpublic double getVolume() {\n\t\treturn clipVolume;\n\t}\n\n/* Method: setVolume(volume) */\n/**\n * Sets the overall volume setting for the sound, which is a number\n * between 0 (silent) and 1 (maximum volume).\n *\n * @usage sound.setVolume(volume);\n * @param volume The new overall volume setting for the sound\n */\n\tpublic void setVolume(double volume) {\n\t\tclipVolume = volume;\n\t}\n\n/* Method: getSampleData() */\n/**\n * Returns an array of integers corresponding to the samples in the primary\n * channel of the sound.  For mono sounds, this channel is the only channel;\n * for stereo sounds, it is defined to be the left channel.\n *\n * @usage int[] samples = sound.getSampleData();\n * @return An array of the samples in the sound\n */\n\tpublic int[] getSampleData() {\n\t\treturn getSampleData(0);\n\t}\n\n/* Method: getSampleData(channel) */\n/**\n * Returns an array of integers corresponding to the samples in the specified\n * channel, which is typically represented by <code>LEFT</code> or <code>RIGHT</code>.\n *\n * @usage int[] samples = sound.getSampleData(channel);\n * @param channel The channel for which samples are requested\n * @return An array of the samples in the sound\n */\n\tpublic int[] getSampleData(int channel) {\n\t\tstandardize();\n\t\tif (channel < 0 || channel >= nChannels) {\n\t\t\tthrow new ErrorException(\"getSamples: Channel number out of range\");\n\t\t}\n\t\tint[] samples = new int[frameCount];\n\t\tint ix = channel * BYTES_PER_SAMPLE;\n\t\tfor (int i = 0; i < frameCount; i++) {\n\t\t\tsamples[i] = data[ix] << 8 | (data[ix + 1] & 0xFF);\n\t\t\tix += nChannels * BYTES_PER_SAMPLE;\n\t\t}\n\t\treturn samples;\n\t}\n\n/* Method: addSampleData(sample) */\n/**\n * Adds a single sound sample to the end of the sound.  If the sound is stereo,\n * the new sample is added to both the left and right channel.\n *\n * @usage sound.addSampleData(sample);\n * @param sample An integers representing a new sound samples\n */\n\tpublic void addSampleData(int sample) {\n\t\tstandardize();\n\t\tif (nChannels == 2) {\n\t\t\taddSampleData(sample, sample);\n\t\t} else {\n\t\t\tint ix = frameCount * BYTES_PER_SAMPLE;\n\t\t\tframeCount++;\n\t\t\tif (ix >= data.length) {\n\t\t\t\tbyte[] newData = new byte[ix + BUFFER_INCREMENT];\n\t\t\t\tif (ix > 0) {\n\t\t\t\t\tSystem.arraycopy(data, 0, newData, 0, ix);\n\t\t\t\t}\n\t\t\t\tdata = newData;\n\t\t\t}\n\t\t\tdata[ix++] = (byte) (sample >> 8);\n\t\t\tdata[ix++] = (byte) (sample & 0xFF);\n\t\t}\n\t}\n\n/* Method: addSampleData(left, right) */\n/**\n * Adds the specified samples to the end of the appropriate channels of\n * the stereo sound.\n *\n * @usage sound.addSampleData(left, right);\n * @param left An integer containing a single sample for the left channel\n * @param right An integer containing a single sample for the right channel\n */\n\tpublic void addSampleData(int left, int right) {\n\t\tstandardize();\n\t\tif (nChannels != 2) {\n\t\t\tthrow new ErrorException(\"addSampleData: Sound is not stereo\");\n\t\t} else {\n\t\t\tint ix = 2 * frameCount * BYTES_PER_SAMPLE;\n\t\t\tframeCount++;\n\t\t\tif (ix >= data.length) {\n\t\t\t\tbyte[] newData = new byte[ix + BUFFER_INCREMENT];\n\t\t\t\tif (ix > 0) {\n\t\t\t\t\tSystem.arraycopy(data, 0, newData, 0, ix);\n\t\t\t\t}\n\t\t\t\tdata = newData;\n\t\t\t}\n\t\t\tdata[ix++] = (byte) (left >> 8);\n\t\t\tdata[ix++] = (byte) (left & 0xFF);\n\t\t\tdata[ix++] = (byte) (right >> 8);\n\t\t\tdata[ix++] = (byte) (right & 0xFF);\n\t\t}\n\t}\n\n/* Method: addSampleData(samples) */\n/**\n * Adds the specified samples to the end of the sound.  If the sound is stereo,\n * the new samples are added to both the left and right channel.\n *\n * @usage sound.addSampleData(samples);\n * @param samples An array of integers containing the new sound samples\n */\n\tpublic void addSampleData(int[] samples) {\n\t\tstandardize();\n\t\tif (nChannels == 2) {\n\t\t\taddSampleData(samples, samples);\n\t\t} else {\n\t\t\tint ix = frameCount * BYTES_PER_SAMPLE;\n\t\t\tframeCount += samples.length;\n\t\t\tbyte[] newData = new byte[frameCount * BYTES_PER_SAMPLE];\n\t\t\tif (ix > 0) {\n\t\t\t\tSystem.arraycopy(data, 0, newData, 0, ix);\n\t\t\t}\n\t\t\tdata = newData;\n\t\t\tfor (int i = 0; i < samples.length; i++) {\n\t\t\t\tdata[ix++] = (byte) (samples[i] >> 8);\n\t\t\t\tdata[ix++] = (byte) (samples[i] & 0xFF);\n\t\t\t}\n\t\t}\n\t}\n\n/* Method: addSampleData(left, right) */\n/**\n * Adds the specified samples to the end of the appropriate channels of\n * the stereo sound.\n *\n * @usage sound.addSampleData(left, right);\n * @param left An array of integers containing the samples for the left channel\n * @param right An array of integers containing the samples for the right channel\n */\n\tpublic void addSampleData(int[] left, int[] right) {\n\t\tstandardize();\n\t\tif (nChannels != 2) {\n\t\t\tthrow new ErrorException(\"addSampleData: Sound is not stereo\");\n\t\t} else if (left.length != right.length) {\n\t\t\tthrow new ErrorException(\"addSampleData: Channels have unequal length\");\n\t\t} else {\n\t\t\tint ix = 2 * frameCount * BYTES_PER_SAMPLE;\n\t\t\tframeCount += left.length;\n\t\t\tbyte[] newData = new byte[2 * frameCount * BYTES_PER_SAMPLE];\n\t\t\tif (ix > 0) {\n\t\t\t\tSystem.arraycopy(data, 0, newData, 0, ix);\n\t\t\t}\n\t\t\tdata = newData;\n\t\t\tfor (int i = 0; i < left.length; i++) {\n\t\t\t\tdata[ix++] = (byte) (left[i] >> 8);\n\t\t\t\tdata[ix++] = (byte) (left[i] & 0xFF);\n\t\t\t\tdata[ix++] = (byte) (right[i] >> 8);\n\t\t\t\tdata[ix++] = (byte) (right[i] & 0xFF);\n\t\t\t}\n\t\t}\n\t}\n\n/* Method: toString() */\n/**\n * Converts a sound to a string.\n *\n * @usage String str = sound.toString();\n * @return A string representation of the sound\n */\n\tpublic String toString() {\n\t\tString str = soundName;\n\t\tstr += \" (\";\n\t\tstr += (nChannels == 1) ? \"mono\" : \"stereo\";\n\t\tstr += \", \";\n\t\tstr += new DecimalFormat(\"#0.00\").format(getDuration());\n\t\tstr += \" sec)\";\n\t\treturn str;\n\t}\n\n/**********************************************************************/\n/* Static methods                                                     */\n/**********************************************************************/\n\n/* Static method: sampleToIntensity(sample) */\n/**\n * Converts an integer sample in the range -32767 and +32767 into a\n * <code>double</code> between -1.0 and +1.0.\n *\n * @usage double intensity = SoundClip.sampleToIntensity(sample)\n * @param sample An integer sample from a digital sound\n * @return The corresponding intensity value between -1.0 and +1.0\n */\n\tpublic static double sampleToIntensity(int sample) {\n\t\treturn Math.max(-1.0, Math.min(+1.0, (double) sample / MAX_SAMPLE));\n\t}\n\n/* Static method: intensityToSample(intensity) */\n/**\n * Converts an intensity value between -1.0 and +1.0 into the corresponding\n * integer sample in the range -32767 and +32767.\n *\n * @usage int sample = SoundClip.intensityToSample(intensity)\n * @param intensity An intensity value between -1.0 and +1.0\n * @return The corresponding integer sample between -32767 and +32767\n */\n\tpublic static int intensityToSample(double intensity) {\n\t\treturn (int) Math.round(Math.max(-1.0, Math.min(+1.0, intensity)) * MAX_SAMPLE);\n\t}\n\n/**********************************************************************/\n/* Protected methods                                                  */\n/**********************************************************************/\n\n/* Protected method: getData() */\n/**\n * Returns the byte array containing the sound data.\n */\n\tprotected byte[] getData() {\n\t\treturn data;\n\t}\n\n/* Protected method: getFormat() */\n/**\n * Returns the format in which the sound is stored.\n */\n\tprotected AudioFormat getFormat() {\n\t\treturn format;\n\t}\n\n/* Protected method: getAudioInputStream() */\n/**\n * Returns an <code>AudioInputStream</code> for the sound.\n */\n\tprotected AudioInputStream getAudioInputStream() {\n\t\treturn new AudioInputStream(new ByteArrayInputStream(data), format, frameCount);\n\t}\n\n/**********************************************************************/\n/* Private methods                                                    */\n/**********************************************************************/\n\n/* Private method: standardize() */\n/**\n * Converts the data for this sound so that it has the standard sampling rate.\n */\n\tprivate void standardize() {\n\t\tif (frameRate == STANDARD_FRAME_RATE) return;\n\t\tdouble sf = STANDARD_FRAME_RATE / frameRate;\n\t\tint newFrameCount = (int) (frameCount * sf);\n\t\tbyte[] newData = new byte[nChannels * newFrameCount * BYTES_PER_SAMPLE];\n\t\tint ix = 0;\n\t\tfor (int i = 0; i < newFrameCount; i++) {\n\t\t\t// Add averaging at some point in the future\n\t\t\tfor (int channel = 0; channel < nChannels; channel++) {\n\t\t\t\tint sx = (int) (i / sf) * BYTES_PER_SAMPLE * nChannels + BYTES_PER_SAMPLE * channel;\n\t\t\t\tint sample = (data[sx] << 8) | (data[sx + 1] & 0xFF);\n\t\t\t\tnewData[ix++] = (byte) (sample >> 8);\n\t\t\t\tnewData[ix++] = (byte) (sample & 0xFF);\n\t\t\t}\n\t\t}\n\t\tdata = newData;\n\t\tframeCount = newFrameCount;\n\t\tformat = new AudioFormat(frameRate, 16, nChannels, true, true);\n\t}\n\n/* Private method: getFormatForFile(name) */\n/**\n * Returns an audio format appropriate to the file name.\n */\n\tprivate AudioFileFormat.Type getFormatForFile(String name) {\n\t\tname = name.toLowerCase();\n\t\tif (name.endsWith(\".wav\")) return AudioFileFormat.Type.WAVE;\n\t\tif (name.endsWith(\".aif\")) return AudioFileFormat.Type.AIFF;\n\t\tif (name.endsWith(\".aiff\")) return AudioFileFormat.Type.AIFF;\n\t\treturn AudioFileFormat.Type.AU;\n\t}\n\n/* Private method: readSound(in) */\n/**\n * Reads in the data for this sound from the specified <code>AudioInputStream</code>.\n */\n\tprivate void readSound(AudioInputStream in) {\n\t\tformat = in.getFormat();\n\t\tnChannels = format.getChannels();\n\t\tframeRate = format.getFrameRate();\n\t\tlong frameLength = in.getFrameLength();\n\t\tif (frameLength > Integer.MAX_VALUE) {\n\t\t\tthrow new ErrorException(\"SoundClip: Sound file is too large\");\n\t\t}\n\t\tframeCount = (int) frameLength;\n\t\tif (frameCount < 0) {\n\t\t\tdata = new byte[BUFFER_INCREMENT];\n\t\t} else {\n\t\t\tdata = new byte[frameCount * nChannels * 2];\n\t\t}\n\t\tint offset = 0;\n\t\tboolean eof = false;\n\t\twhile (!eof) {\n\t\t\tint bytesRemaining = data.length - offset;\n\t\t\twhile (bytesRemaining > 0) {\n\t\t\t\ttry {\n\t\t\t\t\tint nBytes = in.read(data, offset, bytesRemaining);\n\t\t\t\t\tif (nBytes == 0) {\n\t\t\t\t\t\teof = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\toffset += nBytes;\n\t\t\t\t\tbytesRemaining -= nBytes;\n\t\t\t\t} catch (IOException ex) {\n\t\t\t\t\tthrow new ErrorException(ex);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (frameCount >= 0) eof = true;\n\t\t\tif (!eof) {\n\t\t\t\tbyte[] ndata = new byte[2 * data.length];\n\t\t\t\tSystem.arraycopy(data, 0, ndata, 0, data.length);\n\t\t\t\tdata = ndata;\n\t\t\t}\n\t\t}\n\t\tif (offset < data.length && frameCount < 0) {\n\t\t\tbyte[] ndata = new byte[offset];\n\t\t\tSystem.arraycopy(data, 0, ndata, 0, offset);\n\t\t\tdata = ndata;\n\t\t}\n\t\tif (frameCount < 0) frameCount = offset / (2 * nChannels);\n\t}\n\n/* Private method: convertToPCM(in) */\n/**\n * Converts an <code>AudioInputStream</code> to a 16-bit linear PCM format.\n */\n\tprivate AudioInputStream convertToPCM(AudioInputStream in) {\n\t\tAudioFormat newFormat = in.getFormat();\n\t\tnewFormat = new AudioFormat(newFormat.getSampleRate(), 16, newFormat.getChannels(), true, true);\n\t\treturn AudioSystem.getAudioInputStream(newFormat, in);\n\t}\n\n/* Private method: getAudioInputStream(in) */\n/**\n * Creates an <code>AudioInputStream</code> from an input stream.\n */\n\tprivate AudioInputStream getAudioInputStream(InputStream in) {\n\t\ttry {\n\t\t\tif (!(in instanceof BufferedInputStream)) {\n\t\t\t\tin = new BufferedInputStream(in);\n\t\t\t}\n\t\t\treturn AudioSystem.getAudioInputStream(in);\n\t\t} catch (UnsupportedAudioFileException ex) {\n\t\t\tthrow new ErrorException(createUnsupportedFormatMessage());\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/* Private method: getAudioInputStream(file) */\n/**\n * Creates an <code>AudioInputStream</code> from a file.\n */\n\tprivate AudioInputStream getAudioInputStream(File file) {\n\t\ttry {\n\t\t\treturn AudioSystem.getAudioInputStream(file);\n\t\t} catch (UnsupportedAudioFileException ex) {\n\t\t\tthrow new ErrorException(createUnsupportedFormatMessage());\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n/* Private method: createUnsupportedFormatMessage() */\n/**\n * Generates a more useful error message.\n */\n\tprivate String createUnsupportedFormatMessage() {\n\t\tint dot = soundName.lastIndexOf('.');\n\t\tif (dot == -1) return \"Unsupported audio file format\";\n\t\treturn \"The \" + soundName.substring(dot + 1) + \" format is not supported by JavaSound\";\n\t}\n\n/* Private constants */\n\tprivate static final int BYTES_PER_SAMPLE = 2;\n\tprivate static final int BUFFER_INCREMENT = 10000;\n\n/* Private instance variables */\n\tprivate AudioFormat format;\n\tprivate SoundPlayer player;\n\tprivate String soundName;\n\tprivate double clipVolume;\n\tprivate float frameRate;\n\tprivate int nChannels;\n\tprivate int frameCount;\n\tprivate int currentFrame;\n\tprivate byte[] data;\n\n}\n\n/* Package class: SoundPlayer */\n/**\n * This class implements the actual playing of a sound.  This implementation\n * uses the <code>SourceDataLine</code> model rather than the <code>Clip</code>\n * model to avoid problems with noise when a sound is stopped.\n */\nclass SoundPlayer implements Runnable {\n\n/* Constructor: SoundPlayer(sound) */\n/**\n * Creates a new player for the specified sound.\n */\n\tpublic SoundPlayer(SoundClip sound) {\n\t\tsoundClip = sound;\n\t\toldVolume = 1.0;\n\t}\n\n/* Method: play() */\n/**\n * Plays the sound once.\n */\n\tpublic void play() {\n\t\tif (thread != null) return;\n\t\tlooping = false;\n\t\tthread = new Thread(this);\n\t\tthread.start();\n\t}\n\n/* Method: loop() */\n/**\n * Plays the sound in a continuous loop.\n */\n\tpublic void loop() {\n\t\tif (thread != null) return;\n\t\tlooping = true;\n\t\tthread = new Thread(this);\n\t\tthread.start();\n\t}\n\n/* Method: stop() */\n/**\n * Stops the sound at the end of the next buffer of data.  This implementation\n * avoid the use of the <code>stop</code> method on the <code>SourceDataLine</code>,\n * which generates unacceptable noise on certain sound engines.\n */\n\tpublic void stop() {\n\t\tif (thread == null) return;\n\t\tlooping = false;\n\t\tthread = null;\n\t}\n\n/* Method: run() */\n/**\n * This method is executed when the <code>SoundPlayer</code> thread is started.\n * It writes data to the <code>SourceDataLine</code> in units of a relatively\n * small buffer, checking between each write to ensure that the thread is not\n * <code>null</code>, which is used as the signal to stop playing.  At the end\n * of the sound, the implementation writes <code>PADDING</code> bytes of zero\n * data to the mixer before stopping.  This strategy eliminates the noise\n * otherwise associated with stopping on certain sound engines.\n */\n\tpublic void run() {\n\t\tbyte[] data = soundClip.getData();\n\t\tint nChannels = soundClip.getChannelCount();\n\t\tint offset = soundClip.getFrameIndex() * nChannels * BYTES_PER_SAMPLE;\n\t\tint length = soundClip.getFrameCount() * nChannels * BYTES_PER_SAMPLE;\n\t\tSourceDataLine line = openSourceDataLine(Math.min(MAX_BUFFER_SIZE, length));\n\t\tline.start();\n\t\twhile (thread != null) {\n\t\t\tint bytesRemaining = length - offset;\n\t\t\twhile (thread != null && bytesRemaining > 0) {\n\t\t\t\tsetLineVolume(line, soundClip.getVolume());\n\t\t\t\tint chunkSize = Math.min(MAX_BUFFER_SIZE, bytesRemaining);\n\t\t\t\tint nBytes = line.write(data, offset, chunkSize);\n\t\t\t\toffset += nBytes;\n\t\t\t\tbytesRemaining -= nBytes;\n\t\t\t}\n\t\t\tif (!looping) break;\n\t\t\toffset = 0;\n\t\t}\n\t\tif (thread == null) {\n\t\t\tsoundClip.setFrameIndex(offset / nChannels / BYTES_PER_SAMPLE);\n\t\t}\n\t\tdata = new byte[PADDING];\n\t\tline.write(data, 0, data.length);\n\t\tline.drain();\n\t\tline.stop();\n\t\tline.close();\n\t\tthread = null;\n\t}\n\n/* Private method: openSourceDataLine(bufferSize) */\n/**\n * Opens a new <code>SourceDataLine</code> for this sound.\n */\n\tprivate SourceDataLine openSourceDataLine(int bufferSize) {\n\t\ttry {\n\t\t\tAudioFormat format = soundClip.getFormat();\n\t\t\tClass<?> sourceDataLineClass = Class.forName(\"javax.sound.sampled.SourceDataLine\");\n\t\t\tDataLine.Info info = new DataLine.Info(sourceDataLineClass, format);\n\t\t\tif (!AudioSystem.isLineSupported(info)) {\n\t\t\t\tthrow new ErrorException(\"SoundClip: Unsupported data line format\");\n\t\t\t}\n\t\t\tSourceDataLine line = (SourceDataLine) AudioSystem.getLine(info);\n\t\t\tline.open(format, bufferSize);\n\t\t\treturn line;\n\t\t} catch (Exception ex) {\n\t\t\tthrow new ErrorException(ex);\n\t\t}\n\t}\n\n\tprivate void setLineVolume(SourceDataLine line, double volume) {\n\t\tif (oldVolume == volume) return;\n\t\toldVolume = volume;\n\t\tif (line.isControlSupported(FloatControl.Type.VOLUME)) {\n\t\t\tFloatControl volumeControl = (FloatControl) line.getControl(FloatControl.Type.VOLUME);\n\t\t\tvolumeControl.setValue((float) volume);\n\t\t} else if (line.isControlSupported(FloatControl.Type.MASTER_GAIN)) {\n\t\t\tFloatControl gainControl = (FloatControl) line.getControl(FloatControl.Type.MASTER_GAIN);\n\t\t\tdouble gain = 20 * Math.log(Math.max(volume, EPSILON)) / Math.log(10.0);\n\t\t\tgainControl.setValue((float) gain);\n\t\t}\n\t}\n\n/* Private constants */\n\tprivate static final int PADDING = 400;\n\tprivate static final int BYTES_PER_SAMPLE = 2;\n\tprivate static final int MAX_BUFFER_SIZE = 4096;\n\tprivate static final double EPSILON = 0.000001;\n\n/* Private instance variables */\n\tprivate SoundClip soundClip;\n\tprivate Thread thread;\n\tprivate boolean looping;\n\tprivate double oldVolume;\n\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/util/SwingTimer.java",
    "content": "/*\n * @(#)SwingTimer.java   1.99.1 08/12/08\n */\n\n// ************************************************************************\n// * Copyright (c) 2008 by the Association for Computing Machinery        *\n// *                                                                      *\n// * The Java Task Force seeks to impose few restrictions on the use of   *\n// * these packages so that users have as much freedom as possible to     *\n// * use this software in constructive ways and can make the benefits of  *\n// * that work available to others.  In view of the legal complexities    *\n// * of software development, however, it is essential for the ACM to     *\n// * maintain its copyright to guard against attempts by others to        *\n// * claim ownership rights.  The full text of the JTF Software License   *\n// * is available at the following URL:                                   *\n// *                                                                      *\n// *          http://www.acm.org/jtf/jtf-software-license.pdf             *\n// *                                                                      *\n// ************************************************************************\n\npackage acm.util;\n\nimport java.awt.event.*;\nimport javax.swing.*;\n\n/* Class: SwingTimer */\n/**\n * This class is equivalent to <code>javax.swing.Timer</code> and\n * exists only to avoid the ambiguity that arises because there is\n * also a <code>Timer</code> class in <code>java.util</code>.\n */\npublic class SwingTimer extends Timer {\n\n/* Constructor: SwingTimer(rate, listener) */\n/**\n * Creates a new timer that ticks at the specified rate.  On each tick,\n * the timer sends an <code>ActionEvent</code> to the listener.\n *\n * @usage SwingTimer timer = new SwingTimer(rate, listener);\n * @param rate The number of milliseconds between ticks\n * @param listener The <code>ActionListener</code> receiving the events\n */\n\tpublic SwingTimer(int rate, ActionListener listener) {\n\t\tsuper(rate, listener);\n\t}\n\n/* Inherited method: addActionListener(listener) */\n/**\n * @inherited Timer#void addActionListener(ActionListener listener)\n * Adds the specified action listener to the timer.\n */\n\n/* Inherited method: removeActionListener(listener) */\n/**\n * @inherited Timer#void removeActionListener(ActionListener listener)\n * Removes the specified action listener from the timer.\n */\n\n/* Inherited method: setDelay(delay) */\n/**\n * @inherited Timer#void setDelay(int delay)\n * Sets the timer delay in milliseconds.\n */\n\n/* Inherited method: getDelay() */\n/**\n * @inherited Timer#int getDelay()\n * Returns the timer delay.\n */\n\n/* Inherited method: setRepeats(flag) */\n/**\n * @inherited Timer#void setRepeats(boolean flag)\n * Sets whether the timer repeats or is a one-shot event.\n */\n\n/* Inherited method: isRepeats() */\n/**\n * @inherited Timer#boolean isRepeats()\n * Returns <code>true</code> if the timer repeats.\n */\n\n/* Inherited method: start() */\n/**\n * @inherited Timer#void start()\n * Starts the timer.\n */\n\n/* Inherited method: stop() */\n/**\n * @inherited Timer#void stop()\n * Stops the timer.\n */\n\n/* Inherited method: isRunning() */\n/**\n * @inherited Timer#boolean isRunning()\n * Returns <code>true</code> if the timer is running.\n */\n\n/* Serial version UID */\n/**\n * The serialization code for this class.  This value should be incremented\n * whenever you change the structure of this class in an incompatible way,\n * typically by adding a new instance variable.\n */\n\tstatic final long serialVersionUID = 1L;\n}\n"
  },
  {
    "path": "Archived/JavaTaskForce/src/acm/util/package.html",
    "content": "<html>\n<head>\n<title>The acm.util Package</title>\n</head>\n<body>\nThis package includes several classes that are common to the ACM package\nsuite.\nNovice users of the package will, in general, not need to use most of\nthese classes.\nThe following list provides a brief description of each of the\n<code><b>acm.util</code> classes, starting with the classes that are\nmost likely to be of use:\n\n<p>\n<dl>\n<dt><a href=\"RandomGenerator.html\"><code>RandomGenerator</code></a></dt>\n<dd>\nThis class extends the <code>Random</code> class from\n<code>java.util</code> and offers a few useful simplifications\nfor working with pseudorandom values.\n</dd>\n\n<br><dt><a href=\"MediaTools.html\"><code>MediaTools</code></a></dt>\n<dd>\nThis class includes several static methods that support the use of\nimages and sounds.\n</dd>\n\n<br><dt><a href=\"SoundClip.html\"><code>SoundClip</code></a></dt>\n<dd>\nThis class represents a sound that can be played through the computer.\n</dd>\n\n<br><dt><a href=\"MovieClip.html\"><code>MovieClip</code></a></dt>\n<dd>\nThis class represents a QuickTime movie that can be played on the screen.\n</dd>\n\n<br><dt><a href=\"ErrorException.html\"><code>ErrorException</code></a></dt>\n<dd>\nThis class is used to signal errors anywhere in the ACM Java Library\ncollection.  The primary advantage of <code>ErrorException</code>\nis that it is defined as a <code>RuntimeException</code> subclass\nand therefore does not need to be caught or declared in a\n<code>throws</code> clause.\n</dd>\n\n<br><dt><a href=\"CancelledException.html\"><code>CancelledException</code></a></dt>\n<dd>\nThis class allows a dialog to signal clients that it has been\ncancelled.\n</dd>\n\n<br><dt><a href=\"FileChooserFilter.html\"><code>FileChooserFilter</code></a></dt>\n<dd>\nThis class allows a dialog to signal clients that it has been\ncancelled.\n</dd>\n\n<br><dt><a href=\"Platform.html\"><code>Platform</code></a></dt>\n<dd>\nThis class contains several methods that support platform-specific code.\n</dd>\n\n<br><dt><a href=\"SwingTimer.html\"><code>SwingTimer</code></a></dt>\n<dd>\nThis class is equivalent to <code>javax.swing.Timer</code> and\nexists only to avoid the ambiguity that arises because there is\nalso a <code>Timer</code> class in <code>java.util</code>.\n</dd>\n\n<br><dt><a href=\"FileChooserFilter.html\"><code>FileChooserFilter</code></a></dt>\n<dd>\nThis class provides a simple implementation of the abstract\n<code>FileFilter</code> class\nin <code>javax.swing.filechooser</code>.\n</dd>\n\n<br><dt><a href=\"OptionTable.html\"><code>OptionTable</code></a></dt>\n<dd>\nThis class implements a simple tool for parsing key/value pairs from\na string.  Its primary use is for parsing the options used in the\n<code>TableLayout</code> class in the <code>acm.gui</code>\npackage.\n</dd>\n\n<br><dt><a href=\"JTFTools.html\"><code>JTFTools</code></a></dt>\n<dd>\nThis class provides a collection of static utility methods\nthat are used elsewhere in the ACM packages.\n</dd>\n</dl>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/Karel/.classpath",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<classpath>\n\t<classpathentry kind=\"src\" path=\"src\"/>\n\t<classpathentry kind=\"con\" path=\"org.eclipse.jdt.launching.JRE_CONTAINER\"/>\n\t<classpathentry kind=\"lib\" path=\"lib/spl.jar\"/>\n\t<classpathentry kind=\"output\" path=\"bin\"/>\n</classpath>\n"
  },
  {
    "path": "Archived/Karel/.project",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<projectDescription>\r\n\t<name>Karel</name>\r\n\t<comment></comment>\r\n\t<projects>\r\n\t</projects>\r\n\t<buildSpec>\r\n\t\t<buildCommand>\r\n\t\t\t<name>org.eclipse.jdt.core.javabuilder</name>\r\n\t\t\t<arguments>\r\n\t\t\t</arguments>\r\n\t\t</buildCommand>\r\n\t</buildSpec>\r\n\t<natures>\r\n\t\t<nature>org.eclipse.jdt.core.javanature</nature>\r\n\t</natures>\r\n</projectDescription>\r\n"
  },
  {
    "path": "Archived/Karel/.settings/org.eclipse.jdt.core.prefs",
    "content": "eclipse.preferences.version=1\r\norg.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled\r\norg.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore\r\norg.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull\r\norg.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault\r\norg.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable\r\norg.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled\r\norg.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning\r\norg.eclipse.jdt.core.compiler.problem.autoboxing=ignore\r\norg.eclipse.jdt.core.compiler.problem.comparingIdentical=warning\r\norg.eclipse.jdt.core.compiler.problem.deadCode=warning\r\norg.eclipse.jdt.core.compiler.problem.deprecation=warning\r\norg.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled\r\norg.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled\r\norg.eclipse.jdt.core.compiler.problem.discouragedReference=warning\r\norg.eclipse.jdt.core.compiler.problem.emptyStatement=ignore\r\norg.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore\r\norg.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore\r\norg.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled\r\norg.eclipse.jdt.core.compiler.problem.fieldHiding=ignore\r\norg.eclipse.jdt.core.compiler.problem.finalParameterBound=warning\r\norg.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning\r\norg.eclipse.jdt.core.compiler.problem.forbiddenReference=error\r\norg.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning\r\norg.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled\r\norg.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning\r\norg.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning\r\norg.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore\r\norg.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore\r\norg.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning\r\norg.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore\r\norg.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore\r\norg.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled\r\norg.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore\r\norg.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore\r\norg.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled\r\norg.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore\r\norg.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore\r\norg.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning\r\norg.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning\r\norg.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore\r\norg.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning\r\norg.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error\r\norg.eclipse.jdt.core.compiler.problem.nullReference=warning\r\norg.eclipse.jdt.core.compiler.problem.nullSpecViolation=error\r\norg.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning\r\norg.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning\r\norg.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore\r\norg.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore\r\norg.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore\r\norg.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore\r\norg.eclipse.jdt.core.compiler.problem.rawTypeReference=warning\r\norg.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning\r\norg.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore\r\norg.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore\r\norg.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore\r\norg.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore\r\norg.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore\r\norg.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled\r\norg.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning\r\norg.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled\r\norg.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled\r\norg.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled\r\norg.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore\r\norg.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning\r\norg.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled\r\norg.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning\r\norg.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning\r\norg.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore\r\norg.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning\r\norg.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore\r\norg.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore\r\norg.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore\r\norg.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore\r\norg.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled\r\norg.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled\r\norg.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled\r\norg.eclipse.jdt.core.compiler.problem.unusedImport=ignore\r\norg.eclipse.jdt.core.compiler.problem.unusedLabel=warning\r\norg.eclipse.jdt.core.compiler.problem.unusedLocal=warning\r\norg.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore\r\norg.eclipse.jdt.core.compiler.problem.unusedParameter=ignore\r\norg.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled\r\norg.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled\r\norg.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled\r\norg.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning\r\norg.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore\r\norg.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning\r\norg.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning\r\n"
  },
  {
    "path": "Archived/Karel/obf/copyjar.sh",
    "content": "#!/bin/bash\necho \"\"\necho \"Copying karel.jar to ~/106a ...\"\nfor JAR in `find ~/106a/ -name karel.jar`; do cp karel.jar $JAR; done\necho \"Complete.\"\n"
  },
  {
    "path": "Archived/Karel/obf/makejar.sh",
    "content": "#!/bin/bash\n# Make sure to set -source 1.5 -target 1.5 in compiler options\n# so that the class files are compatible with Sandmark/Proguard\n\nOUTFILE=karel.jar\n\necho \"Compiling code ...\"\nif [ -e \"in.jar\" ]; then\n\trm karel.jar 2>&1 > /dev/null\nfi\n\nif [ ! -d \"temp\" ]; then\n\tmkdir temp\nfi\n\njavac -source 1.5 -target 1.5 -cp \"../src:../lib/spl.jar\" -d \"temp\" ../src/stanford/karel/*.java\n\necho \"Repacking library JARs ...\"\ncd temp\nfor JAR in `ls -1 ../../lib/spl.jar`; do\n\tunzip -qo $JAR\ndone\ncd ..\n\necho \"Creating JAR archive in $OUTFILE ...\"\ncd temp\njar -cvf ../$OUTFILE *.class */*.class */*/*.class */*/*/*.class 2>/dev/null\ncd ..\nrm -rf temp/*\n"
  },
  {
    "path": "Archived/Karel/src/stanford/karel/CardPanel.java",
    "content": "/*\n * This class defines a simple card layout panel that hides\n * the layout manager.\n * - 2015/03/31: Changed to use Swing graphical components.\n */\n\npackage stanford.karel;\n\nimport java.awt.*;\nimport javax.swing.*;\n\nclass CardPanel extends JPanel {\n\tprivate CardLayout layout;\n\tprivate String currentView;\n\n\t/*\n\t * This constructor creates a panel instance with a card layout that can be\n\t * manipulated directly from the panel object by calling setView.\n\t */\n\tpublic CardPanel() {\n\t\tlayout = new CardLayout();\n\t\tsetLayout(layout);\n\t\tsetOpaque(false);\n\t}\n\n\t/*\n\t * These methods allow clients to set and get the name of the currently\n\t * displayed view.\n\t */\n\tpublic void setView(String name) {\n\t\tvalidate();\n\t\tcurrentView = name;\n\t\tlayout.show(this, name);\n\t\trepaint();\n\t}\n\n\tpublic String getView() {\n\t\treturn currentView;\n\t}\n}\n"
  },
  {
    "path": "Archived/Karel/src/stanford/karel/EmptyCanvas.java",
    "content": "/*\n * This class is an empty lightweight component.\n * - 2015/03/31: Changed to use Swing graphical components.\n */\n\npackage stanford.karel;\n\nimport javax.swing.*;\n\nclass EmptyCanvas extends JComponent {\n\t/* Empty */\n}\n"
  },
  {
    "path": "Archived/Karel/src/stanford/karel/Event.java",
    "content": "package stanford.karel;\n\nimport java.util.Observable;\nimport java.util.Observer;\n\n/**\n * An event is an improved version of a java.util.Observable.\n */\npublic class Event<T> extends Observable {\n\tprivate String name = \"Event\";\n\n\tpublic Event() {\n\t}\n\n\tpublic Event(String name) {\n\t\tthis.name = name;\n\t}\n\n\tpublic void add(Observer o) {\n\t\tthis.addObserver(o);\n\t}\n\n\tpublic void remove(Observer o) {\n\t\tthis.deleteObserver(o);\n\t}\n\n\tpublic void fire() {\n\t\tthis.fire(null);\n\t}\n\n\tpublic void fire(T arg) {\n\t\tthis.setChanged();\n\t\tthis.notifyObservers(arg);\n\t}\n\n\tpublic String getName() {\n\t\treturn this.name;\n\t}\n\n\tpublic String toString() {\n\t\treturn this.name;\n\t}\n}\n"
  },
  {
    "path": "Archived/Karel/src/stanford/karel/HPanel.java",
    "content": "/*\n * This file implements a CSPanel subclass that is useful for\n * creating a horizontal assembly of components.  The details\n * of its operation are described in the HVLayout manager,\n * which is common to both HPanels and VPanels.\n * - 2015/03/31: Changed to use Swing graphical components.\n */\n\npackage stanford.karel;\n\nimport java.awt.*;\nimport javax.swing.*;\n\nclass HPanel extends JPanel {\n\tpublic HPanel() {\n\t\tsetLayout(new HVLayout(HVLayout.HORIZONTAL));\n\t\tsetOpaque(false);\n\t}\n\n\tpublic Component add(Component comp) {\n\t\treturn add(\"\", comp);\n\t}\n\n\tpublic Component add(String constraint) {\n\t\treturn add(constraint, null);\n\t}\n\n\tpublic Component add(String constraint, Component comp) {\n\t\tif (comp == null)\n\t\t\tcomp = new EmptyCanvas();\n\t\treturn super.add(constraint, comp);\n\t}\n}\n"
  },
  {
    "path": "Archived/Karel/src/stanford/karel/HVLayout.java",
    "content": "/*\n * This file implements a layout manager that simplifies the\n * task of creating component assemblies.  In general, clients\n * will create HPanels and VPanels, which use an HVLayout\n * of the appropriate direction.\n *\n * To use a stack panel, the first step is to create the\n * appropriate HPanel or VPanel.  For example, you can\n * create a horizontal assemblage like this:\n *\n *      HPanel hbox = new HPanel();\n *\n * From there, you simply add components to the panel in a\n * left-to-right order (top-to-bottom for VPanels).  The\n * call to add a component looks like this:\n *\n *      hbox.add(constraints, component);\n *\n * where constraints is a string consisting of a series of\n * options.  Each option has one of the following two forms:\n *\n *     /option\n *     /option:value\n *\n * The available options and their interpretations are:\n *\n * /stretch:xxx  The /stretch option indicates that this\n *               component should stretch to fill its grid cell\n *               if the enclosing panel stretches.  The available\n *               option values are both, horizontal, vertical,\n *               and none.  If the /stretch option does not\n *               appear (or /stretch:none is used), the component\n *               will maintain its size.  If /stretch appears\n *               without an option value, it is interpreted as\n *               /stretch:both.\n *\n * /fill         The /fill option is very much like stretch, but\n *               causes the component to stretch only in the\n *               panel direction.  Thus, /fill is the same as\n *               /stretch:horizontal for HPanels and the same as\n *               /stretch:vertical for VPanels.\n *\n * /anchor:xxx   The /anchor option applies to components that do\n *               not stretch and specifies how those components\n *               should be oriented with respect to the space\n *               available for that component.  The /anchor option\n *               in the first component determines the anchoring\n *               for the entire panel in the dimension of expansion;\n *               in the opposite dimension, each component is anchored\n *               individually.  The legal option values are the names\n *               of the compass points and center.  If no /anchor\n *               option appears, the component is centered.  If\n *               /anchor appears with no argument, it is taken to\n *               be /anchor:northwest.  The /anchor option values\n *               can also be used as complete options, so that\n *               /south is a shorthand for /anchor:south.\n *\n * /space:n      The /space:n option adds n pixels of space before\n *               the component (i.e., to the left of components in\n *               an HPanel and above components in a VPanel).\n *\n * /top:n        These options add a margin of n pixels in the\n * /bottom:n     indicated direction from the component.  You may\n * /left:n       specify as many of these options as you want; if\n * /right:n      no value appears for a particular direction, no\n *               extra space is allocated.\n *\n * /width:n      These options specify the preferred width and height\n * /height:n     of their component.\n *\n * The option string is case-insensitive.  Numeric values can easily\n * be inserted into the string using Java's concatenation operator.\n * For example, if you want to add myButton to the HPanel hbox and\n * specify that it be BUTTON_WIDTH pixels wide, you could write\n *\n *          hbox.add(\"/width:\" + BUTTON_WIDTH, myButton);\n * - 2015/03/31: Changed to use Swing graphical components.\n */\n\npackage stanford.karel;\n\nimport java.awt.*;\nimport java.util.*;\n\nclass HVLayout implements LayoutManager {\n\t/* Constants */\n\tpublic static final int DEFAULT_SPACE = 5;\n\tpublic static final int HORIZONTAL = GridBagConstraints.HORIZONTAL;\n\tpublic static final int VERTICAL = GridBagConstraints.VERTICAL;\n\n\t/* Private constants */\n\tprivate static final int MINIMUM = 0;\n\tprivate static final int PREFERRED = 1;\n\tprivate static final int CENTER = GridBagConstraints.CENTER;\n\tprivate static final int NORTH = GridBagConstraints.NORTH;\n\tprivate static final int NORTHEAST = GridBagConstraints.NORTHEAST;\n\tprivate static final int EAST = GridBagConstraints.EAST;\n\tprivate static final int SOUTHEAST = GridBagConstraints.SOUTHEAST;\n\tprivate static final int SOUTH = GridBagConstraints.SOUTH;\n\tprivate static final int SOUTHWEST = GridBagConstraints.SOUTHWEST;\n\tprivate static final int WEST = GridBagConstraints.WEST;\n\tprivate static final int NORTHWEST = GridBagConstraints.NORTHWEST;\n\tprivate static final int NONE = GridBagConstraints.NONE;\n\tprivate static final int BOTH = GridBagConstraints.BOTH;\n\n\t/* Private variables */\n\tprivate int orientation;\n\tprivate HashMap<Component, OptionTable> constraintTable;\n\n\t/*\n\t * This method creates a new HVLayout object that grows along the axis\n\t * specified by orientation, which must be HORIZONTAL or VERTICAL.\n\t */\n\tpublic HVLayout(int orientation) {\n\t\tthis.orientation = orientation;\n\t\tconstraintTable = new HashMap<Component, OptionTable>();\n\t}\n\n\t/* LayoutManager interface */\n\t/*\n\t * This method adds the specified component to the layout in the position\n\t * specified by name.\n\t */\n\tpublic void addLayoutComponent(String constraints, Component comp) {\n\t\tsynchronized (comp.getTreeLock()) {\n\t\t\tconstraintTable.put(comp,\n\t\t\t\t\tnew OptionTable(constraints.toLowerCase()));\n\t\t}\n\t}\n\n\t/*\n\t * This method removes the specified component from the layour.\n\t */\n\tpublic void removeLayoutComponent(Component comp) {\n\t\tconstraintTable.remove(comp);\n\t}\n\n\t/*\n\t * This method calculates the preferred layout size for the components\n\t * contained in the parent.\n\t */\n\tpublic Dimension preferredLayoutSize(Container parent) {\n\t\tsynchronized (parent.getTreeLock()) {\n\t\t\treturn getContainerSize(parent, PREFERRED);\n\t\t}\n\t}\n\n\t/*\n\t * This method calculates the minimum layout size for the components\n\t * contained in the parent.\n\t */\n\tpublic Dimension minimumLayoutSize(Container parent) {\n\t\tsynchronized (parent.getTreeLock()) {\n\t\t\treturn getContainerSize(parent, MINIMUM);\n\t\t}\n\t}\n\n\t/*\n\t * This method performs the actual layout operations, resizing and\n\t * repositioning the components in the specified parent.\n\t */\n\tpublic void layoutContainer(Container parent) {\n\t\tsynchronized (parent.getTreeLock()) {\n\t\t\tint nComponents = parent.getComponentCount();\n\t\t\tDimension psize = parent.getSize();\n\t\t\tDimension tsize = preferredLayoutSize(parent);\n\t\t\tint nStretch = getStretchCount(parent);\n\t\t\tint extra = getExtraSpace(psize, tsize, nStretch);\n\t\t\tPoint origin = new Point(0, 0);\n\t\t\tif (nStretch == 0)\n\t\t\t\torigin = getInitialOrigin(parent, psize, tsize);\n\t\t\tfor (int i = 0; i < nComponents; i++) {\n\t\t\t\tComponent comp = parent.getComponent(i);\n\t\t\t\tOptionTable options = constraintTable.get(comp);\n\t\t\t\tDimension csize = getLayoutSize(comp, options, PREFERRED);\n\t\t\t\tDimension lsize = applyStretching(getStretchOption(options),\n\t\t\t\t\t\tcsize, psize, extra);\n\t\t\t\tDimension vsize = applyStretching(BOTH, csize, psize, extra);\n\t\t\t\tRectangle bounds = getLayoutBounds(options, lsize, vsize,\n\t\t\t\t\t\torigin);\n\t\t\t\tcomp.setBounds(bounds);\n\t\t\t\tif (orientation == HORIZONTAL) {\n\t\t\t\t\torigin.x += lsize.width;\n\t\t\t\t} else {\n\t\t\t\t\torigin.y += lsize.height;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/*\n\t * This method unifies the calculation of the minimum and preferred sizes\n\t * for the parent. The type parameter must be one of the constants MINIMUM\n\t * and PREFERRED. This method assumes that the tree lock has been obtained\n\t * by the caller.\n\t */\n\tprivate Dimension getContainerSize(Container parent, int type) {\n\t\tDimension result = new Dimension(0, 0);\n\t\tint nComponents = parent.getComponentCount();\n\t\tfor (int i = 0; i < nComponents; i++) {\n\t\t\tComponent comp = parent.getComponent(i);\n\t\t\tOptionTable options = constraintTable.get(comp);\n\t\t\tDimension size = getLayoutSize(comp, options, type);\n\t\t\tif (orientation == HORIZONTAL) {\n\t\t\t\tresult.width += size.width;\n\t\t\t\tresult.height = Math.max(result.height, size.height);\n\t\t\t} else {\n\t\t\t\tresult.width = Math.max(result.width, size.width);\n\t\t\t\tresult.height += size.height;\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\t/*\n\t * This method computes the minimum or preferred size of the specified\n\t * component according to the constraint specifications for the layout and\n\t * any size information set by the component class. The type parameter must\n\t * be one of the constants MINIMUM and PREFERRED.\n\t */\n\tprivate Dimension getLayoutSize(Component comp, OptionTable options,\n\t\t\tint type) {\n\t\tDimension size = new Dimension(0, 0);\n\t\t;\n\t\tif (type == PREFERRED)\n\t\t\tsize = new Dimension(comp.getPreferredSize());\n\t\tsize.width = options.getIntOption(\"width\", size.width);\n\t\tsize.height = options.getIntOption(\"height\", size.height);\n\t\tsize = limitSize(size, comp);\n\t\tInsets insets = getInsetOption(options);\n\t\tsize.width += insets.left + insets.right;\n\t\tsize.height += insets.top + insets.bottom;\n\t\treturn size;\n\t}\n\n\t/*\n\t * This method returns a new Dimension value that is within the limits set\n\t * by the minimum and maximum sizes for the component.\n\t */\n\tprivate Dimension limitSize(Dimension size, Component comp) {\n\t\tDimension minSize = comp.getMinimumSize();\n\t\tDimension maxSize = comp.getMaximumSize();\n\t\tint width = Math\n\t\t\t\t.max(minSize.width, Math.min(size.width, maxSize.width));\n\t\tint height = Math.max(minSize.height,\n\t\t\t\tMath.min(size.height, maxSize.height));\n\t\treturn new Dimension(width, height);\n\t}\n\n\t/*\n\t * This method returns the Insets object specified by the options table,\n\t * which comes from the /top, /bottom, /left, /right, and /space options.\n\t */\n\tprivate Insets getInsetOption(OptionTable options) {\n\t\tInsets insets = new Insets(0, 0, 0, 0);\n\t\tif (options.isSpecified(\"space\")) {\n\t\t\tswitch (orientation) {\n\t\t\tcase HORIZONTAL:\n\t\t\t\tinsets.left = options.getIntOption(\"space\");\n\t\t\t\tbreak;\n\t\t\tcase VERTICAL:\n\t\t\t\tinsets.top = options.getIntOption(\"space\");\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (options.isSpecified(\"left\")) {\n\t\t\tinsets.left = options.getIntOption(\"left\");\n\t\t}\n\t\tif (options.isSpecified(\"right\")) {\n\t\t\tinsets.right = options.getIntOption(\"right\");\n\t\t}\n\t\tif (options.isSpecified(\"top\")) {\n\t\t\tinsets.top = options.getIntOption(\"top\");\n\t\t}\n\t\tif (options.isSpecified(\"bottom\")) {\n\t\t\tinsets.bottom = options.getIntOption(\"bottom\");\n\t\t}\n\t\treturn insets;\n\t}\n\n\t/*\n\t * This method returns the stretching style specified by the options table,\n\t * which comes from the /stretch and /fill options.\n\t */\n\tprivate int getStretchOption(OptionTable options) {\n\t\tif (options.isSpecified(\"fill\"))\n\t\t\treturn orientation;\n\t\tif (options.isSpecified(\"stretch\")) {\n\t\t\tString value = options.getOption(\"stretch\", \"both\");\n\t\t\tif (value.equals(\"none\"))\n\t\t\t\treturn NONE;\n\t\t\tif (value.equals(\"horizontal\"))\n\t\t\t\treturn HORIZONTAL;\n\t\t\tif (value.equals(\"vertical\"))\n\t\t\t\treturn VERTICAL;\n\t\t\tif (value.equals(\"both\"))\n\t\t\t\treturn BOTH;\n\t\t}\n\t\treturn NONE;\n\t}\n\n\t/*\n\t * This method returns the anchoring style specified by the options table,\n\t * which comes from the /anchor option, if specified, or from any of the\n\t * anchoring constants.\n\t */\n\tprivate int getAnchorOption(OptionTable options) {\n\t\tint anchor = CENTER;\n\t\tif (options.isSpecified(\"anchor\")) {\n\t\t\tString value = options.getOption(\"anchor\", \"northwest\");\n\t\t\tif (value.equals(\"center\")) {\n\t\t\t\tanchor = CENTER;\n\t\t\t} else if (value.equals(\"north\")) {\n\t\t\t\tanchor = NORTH;\n\t\t\t} else if (value.equals(\"northeast\") || value.equals(\"ne\")) {\n\t\t\t\tanchor = NORTHEAST;\n\t\t\t} else if (value.equals(\"east\")) {\n\t\t\t\tanchor = EAST;\n\t\t\t} else if (value.equals(\"southeast\") || value.equals(\"se\")) {\n\t\t\t\tanchor = SOUTHEAST;\n\t\t\t} else if (value.equals(\"south\")) {\n\t\t\t\tanchor = SOUTH;\n\t\t\t} else if (value.equals(\"southwest\") || value.equals(\"sw\")) {\n\t\t\t\tanchor = SOUTHWEST;\n\t\t\t} else if (value.equals(\"west\")) {\n\t\t\t\tanchor = WEST;\n\t\t\t} else if (value.equals(\"northwest\") || value.equals(\"nw\")) {\n\t\t\t\tanchor = NORTHWEST;\n\t\t\t}\n\t\t} else {\n\t\t\tif (options.isSpecified(\"center\")) {\n\t\t\t\tanchor = CENTER;\n\t\t\t} else if (options.isSpecified(\"north\")) {\n\t\t\t\tanchor = NORTH;\n\t\t\t} else if (options.isSpecified(\"northeast\")\n\t\t\t\t\t|| options.isSpecified(\"ne\")) {\n\t\t\t\tanchor = NORTHEAST;\n\t\t\t} else if (options.isSpecified(\"east\")) {\n\t\t\t\tanchor = EAST;\n\t\t\t} else if (options.isSpecified(\"southeast\")\n\t\t\t\t\t|| options.isSpecified(\"se\")) {\n\t\t\t\tanchor = SOUTHEAST;\n\t\t\t} else if (options.isSpecified(\"south\")) {\n\t\t\t\tanchor = SOUTH;\n\t\t\t} else if (options.isSpecified(\"southwest\")\n\t\t\t\t\t|| options.isSpecified(\"sw\")) {\n\t\t\t\tanchor = SOUTHWEST;\n\t\t\t} else if (options.isSpecified(\"west\")) {\n\t\t\t\tanchor = WEST;\n\t\t\t} else if (options.isSpecified(\"northwest\")\n\t\t\t\t\t|| options.isSpecified(\"nw\")) {\n\t\t\t\tanchor = NORTHWEST;\n\t\t\t}\n\t\t}\n\t\treturn anchor;\n\t}\n\n\t/*\n\t * This method counts the number of stretchable components in the parent,\n\t * considering only the axis along which new components are added.\n\t */\n\tprivate int getStretchCount(Container parent) {\n\t\tint nComponents = parent.getComponentCount();\n\t\tint nStretch = 0;\n\t\tfor (int i = 0; i < nComponents; i++) {\n\t\t\tComponent comp = parent.getComponent(i);\n\t\t\tOptionTable options = constraintTable.get(comp);\n\t\t\tint stretch = getStretchOption(options);\n\t\t\tif (orientation == HORIZONTAL) {\n\t\t\t\tif (stretch == HORIZONTAL || stretch == BOTH)\n\t\t\t\t\tnStretch++;\n\t\t\t} else {\n\t\t\t\tif (stretch == VERTICAL || stretch == BOTH)\n\t\t\t\t\tnStretch++;\n\t\t\t}\n\t\t}\n\t\treturn nStretch;\n\t}\n\n\t/*\n\t * This method returns the amount of extra space that must be added to each\n\t * stretchable component along the main axis. The psize parameter gives the\n\t * size of the parent, tsize is the total size of the components, and\n\t * nStretch is the number of components that stretch.\n\t */\n\tprivate int getExtraSpace(Dimension psize, Dimension tsize, int nStretch) {\n\t\tif (nStretch == 0) {\n\t\t\treturn 0;\n\t\t} else {\n\t\t\tif (orientation == HORIZONTAL) {\n\t\t\t\treturn (psize.width - tsize.width) / nStretch;\n\t\t\t} else {\n\t\t\t\treturn (psize.height - tsize.height) / nStretch;\n\t\t\t}\n\t\t}\n\t}\n\n\t/*\n\t * This method computes the dimensions of the layout box to account for the\n\t * stretching of this component to fit into the available space.\n\t */\n\tprivate Dimension applyStretching(int stretch, Dimension csize,\n\t\t\tDimension psize, int extra) {\n\t\tint width = csize.width;\n\t\tint height = csize.height;\n\t\tif (stretch == HORIZONTAL || stretch == BOTH) {\n\t\t\tif (orientation == HORIZONTAL) {\n\t\t\t\twidth += extra;\n\t\t\t} else {\n\t\t\t\twidth = psize.width;\n\t\t\t}\n\t\t}\n\t\tif (stretch == VERTICAL || stretch == BOTH) {\n\t\t\tif (orientation == VERTICAL) {\n\t\t\t\theight += extra;\n\t\t\t} else {\n\t\t\t\theight = psize.height;\n\t\t\t}\n\t\t}\n\t\treturn new Dimension(width, height);\n\t}\n\n\t/*\n\t * This method returns the appropriate bounding box for the component that\n\t * appears in the specified layout area beginning at the specified origin.\n\t */\n\tprivate Rectangle getLayoutBounds(OptionTable options, Dimension lsize,\n\t\t\tDimension vsize, Point origin) {\n\t\tInsets insets = getInsetOption(options);\n\t\tint anchor = getAnchorOption(options);\n\t\tint dx = insets.left;\n\t\tint dy = insets.top;\n\t\tint width = lsize.width - insets.left - insets.right;\n\t\tint height = lsize.height - insets.top - insets.bottom;\n\t\tif (orientation == HORIZONTAL) {\n\t\t\tswitch (anchor) {\n\t\t\tcase NORTH:\n\t\t\tcase NORTHWEST:\n\t\t\tcase NORTHEAST:\n\t\t\t\tdy = insets.top;\n\t\t\t\tbreak;\n\t\t\tcase CENTER:\n\t\t\tcase WEST:\n\t\t\tcase EAST:\n\t\t\t\tdy = insets.top + (vsize.height - lsize.height) / 2;\n\t\t\t\tbreak;\n\t\t\tcase SOUTH:\n\t\t\tcase SOUTHWEST:\n\t\t\tcase SOUTHEAST:\n\t\t\t\tdy = vsize.height - insets.bottom - lsize.height;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} else {\n\t\t\tswitch (anchor) {\n\t\t\tcase WEST:\n\t\t\tcase NORTHWEST:\n\t\t\tcase SOUTHWEST:\n\t\t\t\tdx = insets.left;\n\t\t\t\tbreak;\n\t\t\tcase CENTER:\n\t\t\tcase NORTH:\n\t\t\tcase SOUTH:\n\t\t\t\tdx = insets.left + (vsize.width - lsize.width) / 2;\n\t\t\t\tbreak;\n\t\t\tcase EAST:\n\t\t\tcase NORTHEAST:\n\t\t\tcase SOUTHEAST:\n\t\t\t\tdx = vsize.width - insets.right - lsize.width;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn new Rectangle(origin.x + dx, origin.y + dy, width, height);\n\t}\n\n\t/*\n\t * This method returns the initial origin at which the layout begins and is\n\t * called only if no components are stretchable along the main axis. The\n\t * anchor property of the first component is used to determine the\n\t * alignment.\n\t */\n\tprivate Point getInitialOrigin(Container parent, Dimension psize,\n\t\t\tDimension tsize) {\n\t\tint x = 0;\n\t\tint y = 0;\n\t\tif (parent.getComponentCount() > 0) {\n\t\t\tOptionTable options = constraintTable.get(parent.getComponent(0));\n\t\t\tint anchor = getAnchorOption(options);\n\t\t\tif (orientation == HORIZONTAL) {\n\t\t\t\tswitch (anchor) {\n\t\t\t\tcase WEST:\n\t\t\t\tcase NORTHWEST:\n\t\t\t\tcase SOUTHWEST:\n\t\t\t\t\tx = 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase CENTER:\n\t\t\t\tcase NORTH:\n\t\t\t\tcase SOUTH:\n\t\t\t\t\tx = (psize.width - tsize.width) / 2;\n\t\t\t\t\tbreak;\n\t\t\t\tcase EAST:\n\t\t\t\tcase NORTHEAST:\n\t\t\t\tcase SOUTHEAST:\n\t\t\t\t\tx = psize.width - tsize.width;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tswitch (anchor) {\n\t\t\t\tcase NORTH:\n\t\t\t\tcase NORTHWEST:\n\t\t\t\tcase NORTHEAST:\n\t\t\t\t\ty = 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase CENTER:\n\t\t\t\tcase WEST:\n\t\t\t\tcase EAST:\n\t\t\t\t\ty = (psize.height - tsize.height) / 2;\n\t\t\t\t\tbreak;\n\t\t\t\tcase SOUTH:\n\t\t\t\tcase SOUTHWEST:\n\t\t\t\tcase SOUTHEAST:\n\t\t\t\t\ty = psize.height - tsize.height;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn new Point(x, y);\n\t}\n\n\t/*\n\t * This method returns a readable name for the anchor constant.\n\t */\n\tpublic String anchorName(int anchor) {\n\t\tswitch (anchor) {\n\t\tcase CENTER:\n\t\t\treturn \"CENTER\";\n\t\tcase NORTH:\n\t\t\treturn \"NORTH\";\n\t\tcase NORTHEAST:\n\t\t\treturn \"NORTHEAST\";\n\t\tcase EAST:\n\t\t\treturn \"EAST\";\n\t\tcase SOUTHEAST:\n\t\t\treturn \"SOUTHEAST\";\n\t\tcase SOUTH:\n\t\t\treturn \"SOUTH\";\n\t\tcase SOUTHWEST:\n\t\t\treturn \"SOUTHWEST\";\n\t\tcase WEST:\n\t\t\treturn \"WEST\";\n\t\tcase NORTHWEST:\n\t\t\treturn \"NORTHWEST\";\n\t\tdefault:\n\t\t\treturn \"undefined\";\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/Karel/src/stanford/karel/Karel.java",
    "content": "/*\n * This class implements the basic Karel-the-Robot object.\n * - 2015/03/31: Fixed warning by closing resources.\n * - 2015/03/31: Commented out unused constant INFINITE.\n * - 2015/03/31: Changed to OS system look and feel.\n */\n\npackage stanford.karel;\n\nimport acm.program.*;\nimport acm.util.*;\nimport java.awt.*;\nimport java.io.*;\nimport java.util.*;\nimport java.util.zip.*;\n\nimport javax.swing.UIManager;\n\n/**\n * The <code>Karel</code> class represents the simplest possible Karel the Robot\n * object. Each instance of the <code>Karel</code> class represents an\n * individual robot that can move inside a world laid out as a grid of streets\n * and avenues. The other characteristics of Karel's world include\n * <b><i>walls,</i></b> which separate individual corners, and\n * <b><i>beepers,</i></b> which are described by Karel's creator as\n * \"plastic cones which emit a quiet beeping noise.\" As it is shipped from the\n * factory, Karel can execute only four operations:\n * \n * <dl>\n * <dt><code><a href=\"#move()\">move</a>()</code></dt>\n * <dd>Moves this Karel forward one block. Karel cannot move forward if there is\n * a wall blocking the way.</dd>\n * <p>\n * <dt><code><a href=\"#turnLeft()\">turnLeft</a>()</code></dt>\n * <dd>Rotates this Karel 90 degrees to the left (counterclockwise).</dd>\n * <p>\n * <dt><code><a href=\"#pickBeeper()\">pickBeeper</a>()</code></dt>\n * <dd>Picks up one beeper from the current corner and stores the beeper in this\n * Karel's beeper bag, which can hold an infinite number of beepers. Karel can\n * execute a <code>pickBeeper</code> instruction only if there is a beeper on\n * the current corner.</dd>\n * <p>\n * <dt><code><a href=\"#putBeeper()\">putBeeper</a>()</code></dt>\n * <dd>Takes one beeper from this Karel's beeper bag and deposits it on the\n * current corner. Karel can execute a <code>pickBeeper</code> instruction only\n * if there is a beeper in its bag.</dd>\n * <p>\n * </dl>\n * \n * <p>\n * Karel programs are executed by defining a new subclass that extends\n * <code>Karel</code> and provides it with a <code>run</code> method that\n * defines its operation. For example, the following Karel subclass represents a\n * Karel program that moves forward, picks up a beeper from the square, and then\n * moves forward one more time:\n * \n * <p>\n * <table cellspacing=0 cellpadding=0>\n * <tr>\n * <td width=36>&nbsp;</td>\n * <td>\n * <table cellspacing=0 cellpadding=0>\n * <tr>\n * <td>\n * \n * <pre>\n * <code>\n * public class SimpleKarelExample extends Karel {\n * &nbsp;&nbsp;&nbsp;public void run() {\n * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;move();\n * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;putBeeper();\n * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;move();\n * &nbsp;&nbsp;&nbsp;}\n * }\n * </code>\n * </pre>\n * \n * </td>\n * </tr>\n * </table>\n * </td>\n * </tr>\n * </table>\n */\n\npublic class Karel extends Program implements Runnable {\n\t/* Private constants */\n\tprivate static final int NORTH = KarelWorld.NORTH;\n\tprivate static final int EAST = KarelWorld.EAST;\n\tprivate static final int SOUTH = KarelWorld.SOUTH;\n\tprivate static final int WEST = KarelWorld.WEST;\n\t// private static final int INFINITE = KarelWorld.INFINITE;\n\n\t/* List of jar files to skip */\n\tprivate static final String[] SKIP_JARS = { \"acm.jar\", \"karel.jar\", };\n\n\t/* Private instance variables */\n\tprivate KarelWorld world;\n\tprivate int x;\n\tprivate int y;\n\tprivate int dir;\n\tprivate int beepers;\n\n\t/* Constructor */\n\tpublic Karel() {\n\t\tx = 1;\n\t\ty = 1;\n\t\tdir = EAST;\n\t\tworld = null;\n\t}\n\n\tpublic void run() {\n\t\t/* Empty */\n\t}\n\n\tpublic void move() {\n\t\tcheckWorld(\"move\");\n\t\tif (world.checkWall(x, y, dir)) {\n\t\t\tthrow new ErrorException(\"Karel is blocked\");\n\t\t}\n\t\tsetLocation(KarelWorld.adjacentPoint(x, y, dir));\n\t\tworld.trace();\n\t}\n\n\tpublic void turnLeft() {\n\t\tcheckWorld(\"turnLeft\");\n\t\tsetDirection(KarelWorld.leftFrom(dir));\n\t\tworld.trace();\n\t}\n\n\tpublic void pickBeeper() {\n\t\tcheckWorld(\"pickBeeper\");\n\t\tint nb = world.getBeepersOnCorner(x, y);\n\t\tif (nb < 1) {\n\t\t\tthrow new ErrorException(\"pickBeeper: No beepers on this corner\");\n\t\t}\n\t\tworld.setBeepersOnCorner(x, y, KarelWorld.adjustBeepers(nb, -1));\n\t\tsetBeepersInBag(KarelWorld.adjustBeepers(getBeepersInBag(), +1));\n\t\tworld.trace();\n\t}\n\n\tpublic void putBeeper() {\n\t\tcheckWorld(\"putBeeper\");\n\t\tint nBag = getBeepersInBag();\n\t\tif (nBag < 1) {\n\t\t\tthrow new ErrorException(\"putBeeper: No beepers in bag\");\n\t\t}\n\t\tint nCorner = world.getBeepersOnCorner(x, y);\n\t\tworld.setBeepersOnCorner(x, y, KarelWorld.adjustBeepers(nCorner, +1));\n\t\tsetBeepersInBag(KarelWorld.adjustBeepers(nBag, -1));\n\t\tworld.trace();\n\t}\n\n\tpublic boolean frontIsClear() {\n\t\tcheckWorld(\"frontIsClear\");\n\t\treturn !world.checkWall(x, y, dir);\n\t}\n\n\tpublic boolean frontIsBlocked() {\n\t\tcheckWorld(\"frontIsBlocked\");\n\t\treturn world.checkWall(x, y, dir);\n\t}\n\n\tpublic boolean leftIsClear() {\n\t\tcheckWorld(\"leftIsClear\");\n\t\treturn !world.checkWall(x, y, KarelWorld.leftFrom(dir));\n\t}\n\n\tpublic boolean leftIsBlocked() {\n\t\tcheckWorld(\"leftIsBlocked\");\n\t\treturn world.checkWall(x, y, KarelWorld.leftFrom(dir));\n\t}\n\n\tpublic boolean rightIsClear() {\n\t\tcheckWorld(\"rightIsClear\");\n\t\treturn !world.checkWall(x, y, KarelWorld.rightFrom(dir));\n\t}\n\n\tpublic boolean rightIsBlocked() {\n\t\tcheckWorld(\"rightIsBlocked\");\n\t\treturn world.checkWall(x, y, KarelWorld.rightFrom(dir));\n\t}\n\n\tpublic boolean beepersPresent() {\n\t\tcheckWorld(\"beepersPresent\");\n\t\treturn world.getBeepersOnCorner(x, y) > 0;\n\t}\n\n\tpublic boolean noBeepersPresent() {\n\t\tcheckWorld(\"noBeepersPresent\");\n\t\treturn world.getBeepersOnCorner(x, y) == 0;\n\t}\n\n\tpublic boolean beepersInBag() {\n\t\tcheckWorld(\"beepersInBag\");\n\t\treturn getBeepersInBag() > 0;\n\t}\n\n\tpublic boolean noBeepersInBag() {\n\t\tcheckWorld(\"noBeepersInBag\");\n\t\treturn getBeepersInBag() == 0;\n\t}\n\n\tpublic boolean facingNorth() {\n\t\tcheckWorld(\"facingNorth\");\n\t\treturn dir == NORTH;\n\t}\n\n\tpublic boolean facingEast() {\n\t\tcheckWorld(\"facingEast\");\n\t\treturn dir == EAST;\n\t}\n\n\tpublic boolean facingSouth() {\n\t\tcheckWorld(\"facingSouth\");\n\t\treturn dir == SOUTH;\n\t}\n\n\tpublic boolean facingWest() {\n\t\tcheckWorld(\"facingWest\");\n\t\treturn dir == WEST;\n\t}\n\n\tpublic boolean notFacingNorth() {\n\t\tcheckWorld(\"notFacingNorth\");\n\t\treturn dir != NORTH;\n\t}\n\n\tpublic boolean notFacingEast() {\n\t\tcheckWorld(\"notFacingEast\");\n\t\treturn dir != EAST;\n\t}\n\n\tpublic boolean notFacingSouth() {\n\t\tcheckWorld(\"notFacingSouth\");\n\t\treturn dir != SOUTH;\n\t}\n\n\tpublic boolean notFacingWest() {\n\t\tcheckWorld(\"notFacingWest\");\n\t\treturn dir != WEST;\n\t}\n\n\t/* Entry points for program operation */\n\n\tpublic static void main(String[] args) {\n\t\ttry {\n\t\t\tString lnf = UIManager.getSystemLookAndFeelClassName();\n\t\t\tif (lnf == null || lnf.contains(\"MetalLookAndFeel\")) {\n\t\t\t\t// workaround because system L&F seems to fail on my Linux boxes\n\t\t\t\tUIManager.setLookAndFeel(\"com.sun.java.swing.plaf.gtk.GTKLookAndFeel\");\n\t\t\t} else {\n\t\t\t\tUIManager.setLookAndFeel(lnf);\n\t\t\t}\n\t\t} catch (Exception e) {\n\t\t\t// empty\n\t\t}\n\t\tArrayList<String> argList = new ArrayList<String>();\n\t\tboolean codeFlag = false;\n\t\tfor (int i = 0; i < args.length; i++) {\n\t\t\targList.add(args[i]);\n\t\t\tif (args[i].startsWith(\"code=\"))\n\t\t\t\tcodeFlag = true;\n\t\t}\n\t\tif (!codeFlag) {\n\t\t\tString className = getMainClassName();\n\t\t\tif (className.endsWith(\".class\")) {\n\t\t\t\tclassName = className.substring(0, className.length() - 6);\n\t\t\t}\n\t\t\tclassName = className.replace('/', '.');\n\t\t\targList.add(\"code=\" + className);\n\t\t}\n\t\targList.add(\"program=stanford.karel.KarelProgram\");\n\t\tString[] argArray = new String[argList.size()];\n\t\tfor (int i = 0; i < argArray.length; i++) {\n\t\t\targArray[i] = argList.get(i);\n\t\t}\n\t\tKarelProgram.main(argArray);\n\n\t}\n\n\t/* Protected method: start() */\n\t/**\n\t * Starts a <code>GraphicsProgram</code> containing this object.\n\t */\n\t// public void start() {\n\t// start(null);\n\t// }\n\n\t/* Protected method: start(args) */\n\t/**\n\t * Starts a <code>KarelProgram</code> containing this Karel instance,\n\t * passing it the specified arguments.\n\t */\n\n\tpublic void start(String[] args) {\n\t\tKarelProgram program = new KarelProgram();\n\t\tprogram.setStartupObject(this);\n\t\tprogram.start(args);\n\t}\n\n\t/* Protected methods */\n\n\tpublic Point getLocation() {\n\t\treturn new Point(x, y);\n\t}\n\n\tpublic void setLocation(Point pt) {\n\t\tsetLocation(pt.x, pt.y);\n\t}\n\n\tpublic void setLocation(int x, int y) {\n\t\tif (world != null) {\n\t\t\tif (world.outOfBounds(x, y)) {\n\t\t\t\tthrow new ErrorException(\"setLocation: Out of bounds\");\n\t\t\t}\n\t\t\tKarel occupant = world.getKarelOnSquare(x, y);\n\t\t\tif (occupant == this)\n\t\t\t\treturn;\n\t\t\tif (occupant != null) {\n\t\t\t\tthrow new ErrorException(\"setLocation: Square is occupied\");\n\t\t\t}\n\t\t}\n\t\tint x0 = this.x;\n\t\tint y0 = this.y;\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tif (world != null) {\n\t\t\tworld.updateCorner(x, y);\n\t\t\tworld.updateCorner(x0, y0);\n\t\t}\n\t}\n\n\tprotected int getDirection() {\n\t\treturn dir;\n\t}\n\n\tprotected void setDirection(int dir) {\n\t\tthis.dir = dir;\n\t\tif (world != null)\n\t\t\tworld.updateCorner(x, y);\n\t}\n\n\tprotected int getBeepersInBag() {\n\t\treturn (beepers);\n\t}\n\n\tprotected void setBeepersInBag(int nBeepers) {\n\t\tbeepers = nBeepers;\n\t}\n\n\tprotected KarelWorld getWorld() {\n\t\treturn world;\n\t}\n\n\tprotected void setWorld(KarelWorld world) {\n\t\tthis.world = world;\n\t}\n\n\tprotected void checkWorld(String caller) {\n\t\tif (world == null) {\n\t\t\tthrow new ErrorException(caller\n\t\t\t\t\t+ \": Karel is not living in a world\");\n\t\t}\n\t}\n\n\tpublic void setDisplayOneFlag(boolean flag) {\n\t\tworld.setDisplayOneFlag(flag);\n\t}\n\n\t/* Private methods */\n\n\tprivate static String getMainClassName() {\n\t\tString result = null;\n\t\tString classpath = System.getProperty(\"java.class.path\");\n\t\tif (classpath == null)\n\t\t\tclasspath = System.getProperty(\"user.dir\");\n\t\tif (classpath == null)\n\t\t\treturn null;\n\t\tStringTokenizer tokenizer = new StringTokenizer(classpath, \":;\");\n\t\twhile (tokenizer.hasMoreTokens()) {\n\t\t\tString token = tokenizer.nextToken();\n\t\t\tFile file = new File(token);\n\t\t\tString[] candidates = null;\n\t\t\tif (file.isDirectory()) {\n\t\t\t\tcandidates = file.list();\n\t\t\t} else if (token.endsWith(\".jar\") && !nameAppears(token, SKIP_JARS)) {\n\t\t\t\ttry {\n\t\t\t\t\tZipFile zf = new ZipFile(file);\n\t\t\t\t\tArrayList<String> list = new ArrayList<String>();\n\t\t\t\t\tEnumeration<?> entries = zf.entries();\n\t\t\t\t\twhile (entries.hasMoreElements()) {\n\t\t\t\t\t\tlist.add(((ZipEntry) entries.nextElement()).getName());\n\t\t\t\t\t}\n\t\t\t\t\tcandidates = new String[list.size()];\n\t\t\t\t\tfor (int i = 0; i < candidates.length; i++) {\n\t\t\t\t\t\tcandidates[i] = list.get(i);\n\t\t\t\t\t}\n\t\t\t\t\tzf.close();\n\t\t\t\t} catch (IOException ex) {\n\t\t\t\t\tcandidates = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (candidates != null) {\n\t\t\t\tfor (int i = 0; i < candidates.length; i++) {\n\t\t\t\t\tString fileName = candidates[i];\n\t\t\t\t\tif (fileName.endsWith(\".class\")) {\n\t\t\t\t\t\tString className = fileName.substring(0,\n\t\t\t\t\t\t\t\tfileName.lastIndexOf(\".class\"));\n\t\t\t\t\t\tif (className.indexOf(\"/\") == -1\n\t\t\t\t\t\t\t\t&& JTFTools.checkIfLoaded(className)) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tClass<?> karelClass = Class\n\t\t\t\t\t\t\t\t\t\t.forName(\"stanford.karel.Karel\");\n\t\t\t\t\t\t\t\tClass<?> c = Class.forName(className);\n\t\t\t\t\t\t\t\tif (karelClass.isAssignableFrom(c)) {\n\t\t\t\t\t\t\t\t\tresult = className;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} catch (Exception ex) {\n\t\t\t\t\t\t\t\t/* Empty */\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tprivate static boolean nameAppears(String name, String[] array) {\n\t\tfor (int i = 0; i < array.length; i++) {\n\t\t\tif (array[i].equals(name))\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n}\n"
  },
  {
    "path": "Archived/Karel/src/stanford/karel/KarelBugIcon.java",
    "content": "package stanford.karel;\n\nimport java.awt.Graphics;\nimport java.awt.Image;\n\nimport javax.swing.JComponent;\n\nimport acm.util.MediaTools;\n\nclass KarelBugIcon extends JComponent {\n\tpublic KarelBugIcon() {\n\t\timage = MediaTools.createImage(KAREL_BUG_IMAGE);\n\t\timage = MediaTools.loadImage(image);\n\t\tsetOpaque(false);\n\t}\n\n\tpublic void paintComponent(Graphics g) {\n\t\tsuper.paintComponent(g);\n\t\tg.drawImage(image, 0, 0, this);\n\t}\n\n\tprivate String[] KAREL_BUG_IMAGE = {\n\t\t\t\"47494638396146005400910000FFFFFFFFCBFF77777700000021F90401000001\",\n\t\t\t\"002C00000000460054004102FF8C8F19C3ED0FA374AADA3B80DE5BF82F70E238\",\n\t\t\t\"8220305CEA9195E62782C8DB76E198AE4ACD79839778093DB61B6993D32178C5\",\n\t\t\t\"A19308781D4549A5A106D3540DCEE8B07522552790690FDA0C6BBA6BE838B233\",\n\t\t\t\"4F6F1010230B3369AD15A6FC0F88C337B82241788868416698D817F808B8D5E8\",\n\t\t\t\"67E302A422544975888527C0259546D366244848E975E2F904846A3AE8C7CA4A\",\n\t\t\t\"9A97257668CB41F671F7F5C386B4B4D810588A1663B4EA89220C1107F9578A5C\",\n\t\t\t\"14DCC8028D7D24696D35ECCCBD942DCE0C7E3D7EBE7D3A67FCC1A7A749CEB9FE\",\n\t\t\t\"4E6A31045F0D4BED951A9A0A6AA293B47C7C6285F8055096AD5FC75E153CE224\",\n\t\t\t\"80427A72D2A9A03451E18240FF163140CCA8A65FAE5BEACEF850304BE1948E8A\",\n\t\t\t\"526D4249EF1EC39004BD35FC085254A63D2CBCB93A63925D4652F116C049F0B3\",\n\t\t\t\"075012B6D07479F32DDC39A254F1A181FAC0D154683759EA48BAD58CD772488F\",\n\t\t\t\"923DDBC72CDAB5577C36606BCDEDDBB360C3F2A46BF7D1D86E7921ED2D6486A2\",\n\t\t\t\"383D7F5B7EECC54BEECC778591AE43766985BF5C8DAFCC53D3CEDE4E7E2FF531\",\n\t\t\t\"DDDC0FE6CE9145F91255594FE2A87D9D1FD26AA3DA9FC8D52E497AD67409E428\",\n\t\t\t\"D2BAE44D43981075BF8ABE21BF08CE86B743D3963281AC5B5A09C677BA3F6D8C\",\n\t\t\t\"543C68F5D91CB36BCF49EBE672E99FAB8798B5D2BB09D1F7D2E06BCD7CB8A427\",\n\t\t\t\"E17D88D4E69B7285D1E0E14B8F279D4E185D00D35B4F8B28579E3298D157934F\",\n\t\t\t\"80C4D41E836160B5C883C7C8321B757434334C31262588213F14CE2555344B59\",\n\t\t\t\"4295730771488163D888D7063CED8DC8C0336135E5143B0D4665CE39170EC459\",\n\t\t\t\"8C7719C5A3657D05C65A74F11DE9826D8840C7E49089407964658A2886252370\",\n\t\t\t\"61A0D6966469E9E5975D86C90D96649EA2D899B0A4A966376CAA50000021FF0B\",\n\t\t\t\"4D414347436F6E2004031039000000015772697474656E20627920474946436F\",\n\t\t\t\"6E76657274657220322E342E33206F66204D6F6E6461792C204D61792032352C\",\n\t\t\t\"2031393938003B\" };\n\n\tprivate Image image;\n\n}\n"
  },
  {
    "path": "Archived/Karel/src/stanford/karel/KarelControlPanel.java",
    "content": "/*\n * This class implements Karel's control panel.\n * \n * @author Marty Stepp (based on Eric Roberts version)\n * @version 2015/06/20\n * - fixed bugs in Reset button\n * @version 2015/04/02\n * - enables/disables buttons when program is running\n * @version 2015/03/31\n * - commented out unused constants\n * - changed to use Swing graphical components\n * - changed speed bar to allow for slower speeds (500ms and 1000ms delay)\n * - added mnemonics on main control panel buttons\n */\n\npackage stanford.karel;\n\nimport java.awt.Component;\nimport java.awt.Dimension;\nimport java.awt.FileDialog;\nimport java.awt.Label;\nimport java.awt.Point;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.awt.event.AdjustmentEvent;\nimport java.awt.event.AdjustmentListener;\nimport java.util.Observable;\nimport java.util.Observer;\nimport javax.swing.JButton;\nimport javax.swing.JComponent;\nimport javax.swing.JSlider;\nimport javax.swing.event.ChangeEvent;\nimport javax.swing.event.ChangeListener;\nimport acm.util.JTFTools;\n\npublic class KarelControlPanel extends CardPanel implements KarelWorldMonitor,\n\t\tActionListener, AdjustmentListener, ChangeListener, Observer {\n\n\t/* Private state */\n\tprivate static final double SPEED_SCALE_FACTOR = 100.0;\n\tprivate static final int BUTTON_WIDTH = 100;\n\tprivate static final int BUTTON_HEIGHT = 18;\n\tprivate static final int BUTTON_SEP = 8;\n\tprivate static final int SMALL_BUTTON_WIDTH = 60;\n\tprivate static final int GAP = 5;\n\tprivate static final double SLOW_DELAY = 200.0;\n\tprivate static final double FAST_DELAY = 0.0;\n\n\tprivate KarelProgram program;\n\tprivate KarelWorld world;\n\tprivate KarelWorldEditor editor;\n\tprivate KarelResizer resizer;\n\tprivate JComponent buttonPanel;\n\tprivate JComponent editorPanel;\n\tprivate JComponent resizePanel;\n\tprivate JButton startButton;\n\tprivate JButton resetButton;\n\tprivate JButton loadWorldButton;\n\tprivate JButton newWorldButton;\n\tprivate JButton editWorldButton;\n\tprivate JButton saveWorldButton;\n\tprivate JButton dontSaveButton;\n\tprivate JButton okButton;\n\tprivate JButton cancelButton;\n\tprivate JSlider speedBar;\n\tprivate double speed;\n\n\tpublic KarelControlPanel(KarelProgram program) {\n\t\tthis.program = program;\n\t\tprogram.StateEvent.add(this);\n\t\tworld = program.getWorld();\n\t\teditor = createEditor();\n\t\tresizer = createResizer();\n\t\teditorPanel = createEditorPanel();\n\t\tadd(\"editor\", editorPanel);\n\t\tresizePanel = createResizePanel();\n\t\tadd(\"resize\", resizePanel);\n\t\tbuttonPanel = createButtonPanel();\n\t\tadd(\"buttons\", buttonPanel);\n\t\tsetView(\"buttons\");\n\t\tsetSpeed(0);\n\t}\n\n\tpublic KarelWorld getWorld() {\n\t\treturn world;\n\t}\n\n\tpublic KarelProgram getProgram() {\n\t\treturn program;\n\t}\n\n\tpublic KarelWorldEditor getEditor() {\n\t\treturn editor;\n\t}\n\n\tpublic KarelResizer getResizer() {\n\t\treturn resizer;\n\t}\n\n\tpublic Dimension getPreferredSize() {\n\t\treturn new Dimension(250, 1);\n\t}\n\n\t/*\n\t * This action is invoked at the beginning of an editing session.\n\t */\n\tpublic void startWorldEdit() {\n\t}\n\n\t/**\n\t * This action is invoked at the end of an editing session.\n\t */\n\tpublic void endWorldEdit() {\n\t}\n\n\t/**\n\t * This action is invoked when the mouse is clicked on a wall, which is the\n\t * wall in the indicated direction from the Karel coordinates given by pt.\n\t */\n\tpublic void wallAction(Point pt, int dir) {\n\t\teditor.wallAction(pt, dir);\n\t}\n\n\t/**\n\t * This action is invoked when the mouse is clicked on a corner, which is\n\t * the wall in the indicated direction from the given point.\n\t */\n\tpublic void cornerAction(Point pt) {\n\t\teditor.cornerAction(pt);\n\t}\n\n\t/**\n\t * This action is invoked when karel executes an instruction\n\t */\n\tpublic void trace() {\n\t\tdouble delay;\n\t\tif (speed == -2.0) {\n\t\t\tdelay = 1000;\n\t\t} else if (speed == -1.0) {\n\t\t\tdelay = 500;\n\t\t} else {\n\t\t\tdelay = SLOW_DELAY + Math.sqrt(speed) * (FAST_DELAY - SLOW_DELAY);\n\t\t}\n\t\tif (speed < 0.98)\n\t\t\tJTFTools.pause(delay);\n\t}\n\n\t/**\n\t * This method is invoked when a world map file needs to set the simulation\n\t * speed (between 0 and 100).\n\t */\n\tpublic void setSpeed(double speed) {\n\t\tthis.speed = speed;\n\t\t// 0-100 range (=> 200-0ms delay)\n\t\tint value = (int) Math.round(SPEED_SCALE_FACTOR * speed);\n\t\tspeedBar.setValue(value + 20);\n\t}\n\n\t/**\n\t * This method is invoked when the KarelWorld class needs to get the\n\t * simulation speed.\n\t */\n\tpublic double getSpeed() {\n\t\treturn speed;\n\t}\n\n\tprotected KarelWorldEditor createEditor() {\n\t\treturn new KarelWorldEditor(getWorld());\n\t}\n\n\tprotected JComponent createEditorPanel() {\n\t\tVPanel vbox = new VPanel();\n\t\tvbox.add(\"\", editor);\n\t\tsaveWorldButton = new JButton(\"Save World\");\n\t\tsaveWorldButton.setMnemonic('S');\n\t\tsaveWorldButton.addActionListener(this);\n\t\tvbox.add(\"/width:\" + BUTTON_WIDTH + \"/height:\" + BUTTON_HEIGHT\n\t\t\t\t+ \"/top:\" + BUTTON_SEP, saveWorldButton);\n\t\tdontSaveButton = new JButton(\"Don't Save\");\n\t\tdontSaveButton.setMnemonic('D');\n\t\tdontSaveButton.addActionListener(this);\n\t\tvbox.add(\"/width:\" + BUTTON_WIDTH + \"/height:\" + BUTTON_HEIGHT\n\t\t\t\t+ \"/top:\" + BUTTON_SEP, dontSaveButton);\n\t\treturn vbox;\n\t}\n\n\tprotected JComponent createButtonPanel() {\n\t\tVPanel vPanel = new VPanel();\n\t\tstartButton = new JButton(\"Start Program\");\n\t\tstartButton.setMnemonic('S');\n\t\tstartButton.addActionListener(this);\n\t\tresetButton = new JButton(\"Reset Program\");\n\t\tresetButton.setMnemonic('R');\n\t\tresetButton.addActionListener(this);\n\t\tloadWorldButton = new JButton(\"Load World\");\n\t\tloadWorldButton.setMnemonic('L');\n\t\tloadWorldButton.addActionListener(this);\n\t\tnewWorldButton = new JButton(\"New World\");\n\t\tnewWorldButton.setMnemonic('N');\n\t\tnewWorldButton.addActionListener(this);\n\t\teditWorldButton = new JButton(\"Edit World\");\n\t\teditWorldButton.setMnemonic('E');\n\t\teditWorldButton.addActionListener(this);\n\n\t\tJButton[] buttons = { startButton, /* resetButton, */ loadWorldButton,\n\t\t\t\tnewWorldButton, editWorldButton };\n\t\tint maxWidth = 0;\n\t\tfor (JButton button : buttons) {\n\t\t\tmaxWidth = Math.max(maxWidth, button.getPreferredSize().width);\n\t\t}\n\t\tfor (JButton button : buttons) {\n\t\t\tbutton.setPreferredSize(new Dimension(maxWidth, button\n\t\t\t\t\t.getPreferredSize().height));\n\t\t\tbutton.setMinimumSize(new Dimension(maxWidth, button\n\t\t\t\t\t.getPreferredSize().height));\n\t\t}\n\t\tvPanel.add(\"/center/width:100/height:18\", startButton);\n\t\tvPanel.add(\"/center/width:100/height:18/top:8\", resetButton);\n\t\tvPanel.add(\"/center/width:100/height:18/top:8\", loadWorldButton);\n\t\tvPanel.add(\"/center/width:100/height:18/top:8\", newWorldButton);\n\t\tvPanel.add(\"/center/width:100/height:18/top:8\", editWorldButton);\n\n\t\tHPanel hPanel = new HPanel();\n\t\tspeedBar = new JSlider(JSlider.HORIZONTAL);\n\t\tspeedBar.addChangeListener(this);\n\t\tspeedBar.setMaximum(0);\n\t\tspeedBar.setMaximum(120);\n\t\tspeedBar.setValue(20);\n\t\tspeedBar.setMajorTickSpacing(60);\n\t\tspeedBar.setMinorTickSpacing(10);\n\t\tspeedBar.setSnapToTicks(true);\n\t\tspeedBar.setPaintTicks(true);\n\t\tspeedBar.setPaintTrack(true);\n\n\t\thPanel.add(\"/center\", new Label(\"Slow \"));\n\t\thPanel.add(\"/center/width:100\", speedBar);\n\t\thPanel.add(\"/center\", new Label(\" Fast\"));\n\t\tvPanel.add(\"/center/top:8\", hPanel);\n\t\treturn vPanel;\n\t}\n\n\tprotected JComponent createResizePanel() {\n\t\tVPanel vbox = new VPanel();\n\t\tcancelButton = new JButton(\"Cancel\");\n\t\tcancelButton.addActionListener(this);\n\t\tokButton = new JButton(\"OK\");\n\t\tokButton.addActionListener(this);\n\t\tvbox.add(\"\", getResizer());\n\t\tvbox.add(\"/center/width:\" + SMALL_BUTTON_WIDTH + \"/space:\" + GAP,\n\t\t\t\tokButton);\n\t\tvbox.add(\"/center/width:\" + SMALL_BUTTON_WIDTH + \"/space:\" + GAP,\n\t\t\t\tcancelButton);\n\t\treturn vbox;\n\t}\n\n\tprotected KarelResizer createResizer() {\n\t\treturn new KarelResizer();\n\t}\n\n\t/* ActionListener interface */\n\tpublic void actionPerformed(ActionEvent e) {\n\t\tComponent source = (Component) e.getSource();\n\t\tif (source == startButton) {\n\t\t\tprogram.setStatus(\"Running ...\");\n\t\t\tprogram.signalStarted();\n\t\t} else if (source == resetButton) {\n\t\t\tString filePath = world.getPathName();\n\t\t\tif (filePath == null) {\n\t\t\t\tprogram.loadInitialWorld();\n\t\t\t} else {\n\t\t\t\tworld.load(filePath);\n\t\t\t}\n\t\t\tprogram.setStatus(\"Reset to initial state.\");\n\t\t} else if (source == loadWorldButton) {\n\t\t\tFileDialog dialog = new LoadWorldDialog(world);\n\t\t\tdialog.setVisible(true);\n\t\t\tString fileName = dialog.getFile();\n\t\t\tif (fileName != null) {\n\t\t\t\tworld.load(dialog.getDirectory() + \"/\" + fileName);\n\t\t\t\tprogram.setStatus(\"Loaded world from \" + fileName + \".\");\n\t\t\t}\n\t\t} else if (source == newWorldButton) {\n\t\t\tsetView(\"resize\");\n\t\t} else if (source == editWorldButton) {\n\t\t\tworld.setEditMode(true);\n\t\t\teditor.initEditorCanvas();\n\t\t\tsetView(\"editor\");\n\t\t} else if (source == saveWorldButton) {\n\t\t\tif (world.getPathname() == null) {\n\t\t\t\tFileDialog dialog = new NewWorldDialog(world);\n\t\t\t\tdialog.setVisible(true);\n\t\t\t\tString fileName = dialog.getFile();\n\t\t\t\tif (fileName != null) {\n\t\t\t\t\tworld.setPathName(dialog.getDirectory() + \"/\" + fileName);\n\t\t\t\t\tprogram.setStatus(\"Saved world to \" + fileName + \".\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tworld.save();\n\t\t\tworld.setEditMode(false);\n\t\t\tsetView(\"buttons\");\n\t\t} else if (source == dontSaveButton) {\n\t\t\tworld.setEditMode(false);\n\t\t\tsetView(\"buttons\");\n\t\t} else if (source == cancelButton) {\n\t\t\tsetView(\"buttons\");\n\t\t} else if (source == okButton) {\n\t\t\tFileDialog dialog = new NewWorldDialog(world);\n\t\t\tdialog.setVisible(true);\n\t\t\tString fileName = dialog.getFile();\n\t\t\tif (fileName == null) {\n\t\t\t\tsetView(\"buttons\");\n\t\t\t} else {\n\t\t\t\tworld.init(resizer.getColumns(), resizer.getRows());\n\t\t\t\tworld.setPathName(dialog.getDirectory() + \"/\" + fileName);\n\t\t\t\tworld.setEditMode(true);\n\t\t\t\tif (world.getKarelCount() == 1) {\n\t\t\t\t\tKarel karel = world.getKarel();\n\t\t\t\t\tkarel.setLocation(1, 1);\n\t\t\t\t\tkarel.setDirection(KarelWorld.EAST);\n\t\t\t\t\tkarel.setBeepersInBag(KarelWorld.INFINITE);\n\t\t\t\t\tworld.repaint();\n\t\t\t\t}\n\t\t\t\teditor.initEditorCanvas();\n\t\t\t\tsetView(\"editor\");\n\t\t\t}\n\t\t}\n\t\tdoEnabling();\n\t}\n\n\tprivate void doEnabling() {\n\t}\n\n\t/* AdjustmentListener interface */\n\tpublic void adjustmentValueChanged(AdjustmentEvent e) {\n\t\tComponent source = (Component) e.getSource();\n\t\tif (source == speedBar) {\n\t\t\tupdateSpeed();\n\t\t}\n\t}\n\n\tpublic void stateChanged(ChangeEvent e) {\n\t\tComponent source = (Component) e.getSource();\n\t\tif (source == speedBar) {\n\t\t\tupdateSpeed();\n\t\t}\n\t}\n\n\tpublic void update(Observable obs, Object arg) {\n\t\tboolean running = arg == KarelProgram.State.RUNNING;\n\t\tstartButton.setEnabled(!running);\n\t\tresetButton.setEnabled(!running);\n\t\tloadWorldButton.setEnabled(!running);\n\t\tnewWorldButton.setEnabled(!running);\n\t\teditWorldButton.setEnabled(!running);\n\t}\n\n\tprivate void updateSpeed() {\n\t\tint value = speedBar.getValue();\n\t\tif (value == 0) {\n\t\t\tspeed = -2.0;\n\t\t} else if (value == 10) {\n\t\t\tspeed = -1.0;\n\t\t} else {\n\t\t\t// from 0-100, div by 100; means 0-1\n\t\t\tspeed = (value - 20) / SPEED_SCALE_FACTOR;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/Karel/src/stanford/karel/KarelErrorCanvas.java",
    "content": "package stanford.karel;\n\nimport java.awt.BorderLayout;\nimport java.awt.Dimension;\nimport java.awt.Font;\n\nimport javax.swing.BorderFactory;\nimport javax.swing.JLabel;\nimport javax.swing.JPanel;\nimport javax.swing.JScrollPane;\nimport javax.swing.JTextArea;\n\nclass KarelErrorCanvas extends JPanel {\n\n\tprivate JLabel errorLabel;\n\tprivate JTextArea stackTraceArea;\n\t\n\tpublic KarelErrorCanvas(KarelErrorDialog dialog) {\n\t\tsetLayout(new BorderLayout(10, 10));\n\t\tsetBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));\n\t\tsetOpaque(false);\n\t\t\n\t\terrorLabel = new JLabel(\"\");\n\t\tFont oldFont = errorLabel.getFont();\n\t\terrorLabel.setFont(oldFont.deriveFont(Font.BOLD, oldFont.getSize() + 2));\n\t\terrorLabel.addKeyListener(dialog);\n\t\t\n\t\tstackTraceArea = new JTextArea(8, 50);\n\t\tstackTraceArea.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 13));\n\t\tstackTraceArea.setBorder(null);\n\t\tstackTraceArea.setEditable(false);\n\t\t// stackTraceArea.setFocusable(false);\n\t\tstackTraceArea.setBackground(KarelErrorDialog.DIALOG_BGCOLOR);\n\t\tstackTraceArea.addKeyListener(dialog);\n\t\t\n\t\t// layout\n\t\tadd(errorLabel, BorderLayout.NORTH);\n\t\tJScrollPane scroll = new JScrollPane(stackTraceArea);\n\t\tscroll.setBorder(null);\n\t\tscroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);\n\t\tscroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);\n\t\tadd(scroll, BorderLayout.CENTER);\n\t\tsetPreferredSize(new Dimension(getPreferredSize().width + 5, getPreferredSize().height + 20));\n\t}\n\n\tpublic void setText(String msg) {\n\t\terrorLabel.setText(\"Error: \" + msg);\n\t}\n\t\n\tpublic void setStackTrace(String stackTrace) {\n\t\tString[] lines = stackTrace.split(\"\\n\");\n\t\tString stackTraceOut = \"\";\n\t\tfor (String line : lines) {\n\t\t\t// skip some lines\n\t\t\tif (line.contains(\"at stanford.\")) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (line.contains(\"at acm.\")) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tline = line.replaceAll(\"\\\\([A-Za-z0-9_$]+.java:([0-9]+)\\\\)\", \"(), line $1\");\n\t\t\tline = line.replaceAll(\"[ \\t]+at \", \"\");\n\t\t\tif (line.contains(\"Exception: \")) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tstackTraceOut += line + \"\\n\";\n\t\t}\n\t\t\n\t\tif (!stackTraceOut.isEmpty()) {\n\t\t\tstackTraceOut = stackTraceOut.trim();\n\t\t}\n\t\tstackTraceArea.setText(stackTraceOut);\n\t}\n}\n"
  },
  {
    "path": "Archived/Karel/src/stanford/karel/KarelErrorDialog.java",
    "content": "package stanford.karel;\n\nimport java.awt.BorderLayout;\nimport java.awt.Color;\nimport java.awt.Component;\nimport java.awt.Font;\nimport java.awt.Frame;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.awt.event.KeyEvent;\nimport java.awt.event.KeyListener;\nimport java.awt.event.WindowEvent;\nimport java.awt.event.WindowListener;\n\nimport javax.swing.JButton;\nimport javax.swing.JDialog;\n\nimport acm.util.JTFTools;\n\n/* Private class: KarelErrorDialog */\n/**\n * The <code>KarelErrorDialog</code> class is used to display error messages in\n * Karel's world.\n */\nclass KarelErrorDialog extends JDialog implements WindowListener,\n\t\tActionListener, KeyListener {\n\n\tprivate Frame parent;\n\n\tpublic KarelErrorDialog(KarelProgram program) {\n\t\tsuper(JTFTools.getEnclosingFrame(program.getWorld()), true);\n\t\tparent = JTFTools.getEnclosingFrame(program.getWorld());\n\t\tsetLayout(new BorderLayout(10, 10));\n\t\t// this.program = program;\n\t\tinit();\n\t}\n\n\tprivate void init() {\n\t\tsetSize(DIALOG_WIDTH, DIALOG_HEIGHT);\n\t\tsetFont(DIALOG_FONT);\n\t\tsetBackground(DIALOG_BGCOLOR);\n\t\tsetResizable(false);\n\t\taddWindowListener(this);\n\t\tsetLayout(new BorderLayout());\n\t\tHPanel hbox = new HPanel();\n\t\thbox.setBackground(DIALOG_BGCOLOR);\n\t\tVPanel vbox = new VPanel();\n\t\tvbox.setBackground(DIALOG_BGCOLOR);\n\t\tbugIcon = new KarelBugIcon();\n\t\tokButton = new JButton(\"OK\");\n\t\tokButton.addActionListener(this);\n\t\tokButton.setMnemonic('O');\n\t\terrorDisplay = new KarelErrorCanvas(this);\n\t\terrorDisplay.setFont(DIALOG_FONT);\n\t\thbox.add(\"/width:\" + LOGO_WIDTH + \"/height:\" + LOGO_HEIGHT, bugIcon);\n\t\thbox.add(\"/stretch:both\", errorDisplay);\n\t\tvbox.add(\"/stretch:both\", hbox);\n\t\tvbox.add(\"/top:3/bottom:3/width:\" + BUTTON_WIDTH + \"/center\", okButton);\n\t\tadd(BorderLayout.CENTER, vbox);\n\t\t\n\t\tokButton.addKeyListener(this);\n\t\terrorDisplay.addKeyListener(this);\n\t\taddKeyListener(this);\n\t\t\n\t\tvalidate();\n\t\tpack();\n\t\t\n\t\t// center with respect to parent\n\t\tint centerX = (int) ((parent.getX() + parent.getWidth()  / 2) - DIALOG_WIDTH  / 2);\n\t\tint centerY = (int) ((parent.getY() + parent.getHeight() / 2) - DIALOG_HEIGHT / 2);\n\t\tsetLocation(centerX, centerY);\n\t\t\n\t\tokButton.requestFocus();\n\t}\n\n\tpublic void error(String msg) {\n\t\terror(msg, \"\");\n\t}\n\t\n\tpublic void error(String msg, String stackTrace) {\n\t\terrorDisplay.setText(msg);\n\t\terrorDisplay.setStackTrace(stackTrace);\n\t\tsetVisible(true);\n\t}\n\n\t/* WindowListener interface */\n\n\tpublic void windowClosing(WindowEvent e) {\n\t\tsetVisible(false);\n\t}\n\n\tpublic void windowOpened(WindowEvent e) {\n\t\t// empty\n\t}\n\n\tpublic void windowClosed(WindowEvent e) {\n\t\t// empty\n\t}\n\n\tpublic void windowIconified(WindowEvent e) {\n\t\t// empty\n\t}\n\n\tpublic void windowDeiconified(WindowEvent e) {\n\t\t// empty\n\t}\n\n\tpublic void windowActivated(WindowEvent e) {\n\t\t// empty\n\t}\n\n\tpublic void windowDeactivated(WindowEvent e) {\n\t\t// empty\n\t}\n\n\t/* ActionListener interface */\n\n\tpublic void actionPerformed(ActionEvent e) {\n\t\tComponent source = (Component) e.getSource();\n\t\tif (source == okButton) {\n\t\t\twindowClosing(null);\n\t\t}\n\t}\n\n\t/* Private constants */\n\n\tprivate static final int DIALOG_WIDTH = 630;\n\tprivate static final int DIALOG_HEIGHT = 370;\n\tprivate static final int LOGO_WIDTH = 100;\n\tprivate static final int LOGO_HEIGHT = 100;\n\tprivate static final int BUTTON_WIDTH = 60;\n\tprivate static final Font DIALOG_FONT = new Font(\"SansSerif\", Font.PLAIN, 12);\n\tpublic static final Color DIALOG_BGCOLOR = new Color(255, 96, 96);   // Color.RED;\n\n\t/* Private state */\n\n\tprivate KarelBugIcon bugIcon;\n\tprivate JButton okButton;\n\tprivate KarelErrorCanvas errorDisplay;\n\n\t/* KeyListener interface */\n\t\n\tpublic void keyPressed(KeyEvent event) {\n\t\tint code = event.getKeyCode();\n\t\tif (code == KeyEvent.VK_ESCAPE || code == KeyEvent.VK_ENTER || code == KeyEvent.VK_SPACE) {\n\t\t\tokButton.doClick();\n\t\t}\n\t}\n\n\tpublic void keyReleased(KeyEvent event) {\n\t\t// empty\n\t}\n\n\tpublic void keyTyped(KeyEvent event) {\n\t\t// empty\n\t}\n\n}\n"
  },
  {
    "path": "Archived/Karel/src/stanford/karel/KarelProgram.java",
    "content": "/*\n * This file implements the KarelProgram class.\n * \n * @author Marty Stepp (based on Eric Roberts version)\n * @version 2015/04/05\n * - added \"Options\" menu bar for Ms. Karel mode\n * @version 2015/04/01\n * - improved scrollbar appearance in error dialogs\n * - added \"About\" menu bar\n * @version 2015/03/31\n * - commented out unused field 'program'\n * - changed to use Swing graphical components\n * - improved error dialog to display program stack trace\n * - added setStatus method to display program state\n */\n\npackage stanford.karel;\n\nimport acm.program.*;\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.io.*;\nimport java.net.*;\nimport java.util.*;\nimport javax.swing.*;\n\n/**\n * This class is a subclass of <code><a href=\"Program.html\">Program</a></code>\n * that runs a Karel program.\n */\npublic class KarelProgram extends Program {\n\t/** Directory where *.w Karel world files are found. */\n\tpublic static final String WORLDS_DIRECTORY = \"worlds\";\n\t\n\t/** File extension for Karel worlds. */\n\tpublic static final String WORLD_EXTENSION = \".w\";\n\t\n\tpublic static final int NORTH = KarelWorld.NORTH;\n\tpublic static final int EAST = KarelWorld.EAST;\n\tpublic static final int SOUTH = KarelWorld.SOUTH;\n\tpublic static final int WEST = KarelWorld.WEST;\n\n\tpublic static final int INFINITE = KarelWorld.INFINITE;\n\n\tpublic static final int SIMPLE = KarelWorld.SIMPLE;\n\tpublic static final int FANCY = KarelWorld.FANCY;\n\n\tpublic static final Color BLACK = Color.BLACK;\n\tpublic static final Color BLUE = Color.BLUE;\n\tpublic static final Color CYAN = Color.CYAN;\n\tpublic static final Color DARK_GRAY = Color.DARK_GRAY;\n\tpublic static final Color GRAY = Color.GRAY;\n\tpublic static final Color GREEN = Color.GREEN;\n\tprivate static final Color DARK_YELLOW = Color.YELLOW.darker().darker().darker();\n\tprivate static final Color DARK_GREEN = Color.GREEN.darker().darker();\n\tprivate static final Color DARK_RED = Color.RED.darker();\n\t// private static final Color DARK_BLUE = Color.BLUE.darker();\n\tpublic static final Color LIGHT_GRAY = Color.LIGHT_GRAY;\n\tpublic static final Color MAGENTA = Color.MAGENTA;\n\tpublic static final Color ORANGE = Color.ORANGE;\n\tpublic static final Color PINK = Color.PINK;\n\tpublic static final Color RED = Color.RED;\n\tpublic static final Color WHITE = Color.WHITE;\n\tpublic static final Color YELLOW = Color.YELLOW;\n\t\n\tprivate static final String CONFIG_FILE_NAME = \"karel-settings.txt\";\n\n\t/* Private state */\n\tprivate KarelWorld world;\n\tprivate KarelControlPanel controlPanel;\n\tprivate KarelErrorDialog errorDialog;\n\tprivate JLabel statusLabel;\n\tprivate JCheckBoxMenuItem msKarelItem;\n\tprivate boolean started;\n\t\n\tpublic static enum State { RUNNING, STOPPED, ERROR };\n\tpublic Event<State> StateEvent = new Event<State>(\"StateEvent\");\n\n\t/**\n\t * Creates a new Karel program.\n\t */\n\tpublic KarelProgram() {\n\t\tworld = createWorld();\n\t\tworld.setRepaintFlag(false);\n\t\tworld.setDisplayFlag(false);\n\t\tworld.init(10, 10);\n\t\tJPanel panel = new JPanel();\n\t\tpanel.setLayout(new BorderLayout());\n\t\tpanel.add(BorderLayout.CENTER, world);\n\t\tcontrolPanel = new KarelControlPanel(this);\n\t\tworld.setMonitor(controlPanel);\n\t\tpanel.add(BorderLayout.WEST, controlPanel);\n\t\tadd(panel);\n\t\t\n\t\t// set up status label\n\t\tstatusLabel = new JLabel(\"Welcome to Karel!\");\n\t\tstatusLabel.setFont(statusLabel.getFont().deriveFont(Font.BOLD));\n\t\tadd(statusLabel, BorderLayout.SOUTH);\n\n\t\tvalidate();\n\t}\n\n\t/**\n\t * Contains the code to be executed for each specific program subclass. If\n\t * you are defining your own <code>KarelProgram</code> class, you need to\n\t * override the definition of <code>main</code> so that it contains the code\n\t * for your application.\n\t */\n\n\tpublic void main() {\n\t\t/* Empty */\n\t}\n\t\n\tpublic void setStatus(String status) {\n\t\tif (status.contains(\"Running\")) {\n\t\t\tstatusLabel.setForeground(DARK_YELLOW);\n\t\t} else if (status.contains(\"due to an error\")) {\n\t\t\tstatusLabel.setForeground(DARK_RED);\n\t\t} else if (status.contains(\"Finished\")) {\n\t\t\tstatusLabel.setForeground(DARK_GREEN);\n\t\t} else {\n\t\t\t// put back to default label color\n\t\t\tstatusLabel.setForeground(new JLabel().getForeground());\n\t\t}\n\t\tstatusLabel.setText(status);\n\t}\n\n\t/**\n\t * Returns the <code>KarelWorld</code> object in which Karel lives.\n\t * \n\t * @return The <code>KarelWorld</code> object in which Karel lives\n\t */\n\tpublic KarelWorld getWorld() {\n\t\treturn world;\n\t}\n\n\t/**\n\t * Returns the default directory in which Karel's worlds live.\n\t * \n\t * @return The directory in which Karel's worlds lives\n\t */\n\tpublic static String getWorldDirectory() {\n\t\tString dir = System.getProperty(\"user.dir\");\n\t\tif (new File(dir, WORLDS_DIRECTORY).isDirectory()) {\n\t\t\tdir += File.separator + WORLDS_DIRECTORY;\n\t\t}\n\t\treturn dir;\n\t}\n\n\t/**\n\t * Creates the <code>KarelWorld</code> in which Karel lives. Subclasses can\n\t * override this method to create their own <code>KarelWorld</code> types.\n\t * \n\t * @return The <code>World</code> object in which Karel lives\n\t * @noshow student\n\t */\n\tprotected KarelWorld createWorld() {\n\t\treturn new KarelWorld();\n\t}\n\n\t/**\n\t * Checks to see whether this program has started.\n\t * \n\t * @noshow student\n\t */\n\tprotected boolean isStarted() {\n\t\tif (world == null || !super.isStarted())\n\t\t\treturn false;\n\t\tDimension size = world.getSize();\n\t\treturn (size != null) && (size.width != 0) && (size.height != 0);\n\t}\n\n\tprotected Karel getKarel() {\n\t\treturn world.getKarel();\n\t}\n\n\tpublic void add(Karel karel) {\n\t\tadd(karel, 1, 1, KarelWorld.EAST, KarelWorld.INFINITE);\n\t}\n\n\tpublic void add(Karel karel, int x, int y, int dir, int nBeepers) {\n\t\tkarel.setLocation(x, y);\n\t\tkarel.setDirection(dir);\n\t\tkarel.setBeepersInBag(nBeepers);\n\t\tworld.add(karel);\n\t}\n\n\tpublic void start(String[] args) {\n\t\tsuper.start(args);\n\t}\n\n\tprotected void setStartupObject(Object obj) {\n\t\tsuper.setStartupObject(obj);\n\t}\n\t\n\tprotected void augmentMenuBar() {\n\t\t// try to set up JMenuBar\n\t\ttry {\n\t\t\tProgramMenuBar bar = getConsole().getMenuBar();\n\t\t\tbar.removeAll();\n\t\t\t\n\t\t\tJMenu fileMenu = new JMenu(\"File\");\n\t\t\tfileMenu.setMnemonic('F');\n\t\t\tJMenuItem quitItem = new JMenuItem(\"Quit\");\n\t\t\tquitItem.setMnemonic('Q');\n\t\t\tquitItem.addActionListener(new ActionListener() {\n\t\t\t\tpublic void actionPerformed(ActionEvent event) {\n\t\t\t\t\tstop();\n\t\t\t\t\tdestroy();\n\t\t\t\t\tsetVisible(false);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tSystem.exit(0);\n\t\t\t\t\t} catch (Exception e) {\n\t\t\t\t\t\t// empty\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tfileMenu.add(quitItem);\n\t\t\t\n\t\t\tJMenu optionsMenu = new JMenu(\"Options\");\n\t\t\toptionsMenu.setMnemonic('O');\n\t\t\tmsKarelItem = new JCheckBoxMenuItem(\"Ms. Karel\");\n\t\t\tmsKarelItem.setMnemonic('M');\n\t\t\tmsKarelItem.addActionListener(new ActionListener() {\n\t\t\t\tpublic void actionPerformed(ActionEvent event) {\n\t\t\t\t\tworld.setMsKarel(msKarelItem.isSelected());\n\t\t\t\t\tsaveConfiguration();\n\t\t\t\t}\n\t\t\t});\n\t\t\toptionsMenu.add(msKarelItem);\n\t\t\t\n\t\t\tJMenu helpMenu = new JMenu(\"Help\");\n\t\t\thelpMenu.setMnemonic('H');\n\t\t\tJMenuItem aboutItem = new JMenuItem(\"About Karel...\");\n\t\t\taboutItem.setActionCommand(\"About Karel...\");\n\t\t\taboutItem.setMnemonic('A');\n\t\t\taboutItem.addActionListener(new ActionListener() {\n\t\t\t\tpublic void actionPerformed(ActionEvent event) {\n\t\t\t\t\tJOptionPane.showMessageDialog(KarelProgram.this, Version.ABOUT_MESSAGE);\n\t\t\t\t}\n\t\t\t});\n\t\t\thelpMenu.add(aboutItem);\n\t\t\t\n\t\t\tbar.add(fileMenu);\n\t\t\tbar.add(optionsMenu);\n\t\t\tbar.add(helpMenu);\n\t\t} catch (Exception e) {\n\t\t\t// empty\n\t\t}\n\t\t\n\t}\n\t\n\tprotected void loadConfiguration(Properties props) {\n\t\ttry {\n\t\t\tString tmpDir = System.getProperty(\"java.io.tmpdir\");\n\t\t\tif (tmpDir != null) {\n\t\t\t\tFile configFile = new File(tmpDir, CONFIG_FILE_NAME);\n\t\t\t\tif (!configFile.exists()) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tFileInputStream input = new FileInputStream(configFile);\n\t\t\t\tprops.load(input);\n\t\t\t\tinput.close();\n\t\t\t\t\n\t\t\t\tif (props.containsKey(\"mskarel\")) {\n\t\t\t\t\tboolean msKarel = Boolean.parseBoolean(String.valueOf(props.get(\"mskarel\")));\n\t\t\t\t\tmsKarelItem.setSelected(msKarel);\n\t\t\t\t\tworld.setMsKarel(msKarel);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (Exception ex) {\n\t\t\t// ex.printStackTrace();\n\t\t\t// empty\n\t\t}\n\t}\n\t\n\tprotected void saveConfiguration(Properties props) {\n\t\ttry {\n\t\t\tString tmpDir = System.getProperty(\"java.io.tmpdir\");\n\t\t\tif (tmpDir != null) {\n\t\t\t\tFile configFile = new File(tmpDir, CONFIG_FILE_NAME);\n\t\t\t\tprops.put(\"mskarel\", String.valueOf(msKarelItem.isSelected()));\n\t\t\t\tFileOutputStream out = new FileOutputStream(configFile);\n\t\t\t\tprops.store(out, \"Karel configuration file\");\n\t\t\t\tout.close();\n\t\t\t}\n\t\t} catch (Exception ex) {\n\t\t\t// ex.printStackTrace();\n\t\t\t// empty\n\t\t}\n\t}\n\t\n\tpublic void loadInitialWorld() {\n\t\tString karelClass = getParameter(\"karel\");\n\t\tif (karelClass == null) {\n\t\t\tKarel karel = (Karel) getStartupObject();\n\t\t\tkarelClass = karel.getClass().getName();\n\t\t\tkarelClass = karelClass.substring(karelClass.lastIndexOf(\".\") + 1);\n\t\t}\n\n\t\tString worldName = getParameter(\"world\");\n\t\tif (worldName == null)\n\t\t\tworldName = karelClass;\n\t\ttry {\n\t\t\tURL url = new URL(getCodeBase(), WORLDS_DIRECTORY + File.separator + worldName + WORLD_EXTENSION);\n\t\t\tURLConnection connection = url.openConnection();\n\t\t\tworld.load(new InputStreamReader(connection.getInputStream()));\n\t\t} catch (Exception ex) {\n\t\t\t/* Ignore this error */\n\t\t}\n\t}\n\n\tprotected void startRun() {\n\t\taugmentMenuBar();\n\t\tif (!isAppletMode()) {\n\t\t\tloadConfiguration();\n\t\t}\n\t\t\n\t\tKarel karel = null;\n\t\tString karelClass = getParameter(\"karel\");\n\t\tif (karelClass == null) {\n\t\t\tkarel = (Karel) getStartupObject();\n\t\t\tkarelClass = karel.getClass().getName();\n\t\t\tkarelClass = karelClass.substring(karelClass.lastIndexOf(\".\") + 1);\n\t\t} else {\n\t\t\ttry {\n\t\t\t\tkarel = (Karel) Class.forName(karelClass).newInstance();\n\t\t\t} catch (Exception ex) {\n\t\t\t\tSystem.out.println(\"Exception: \" + ex);\n\t\t\t}\n\t\t}\n\t\tif (karel != null) {\n\t\t\tworld.add(karel);\n\t\t\tsetTitle(karelClass);\n\t\t\tloadInitialWorld();\n\t\t}\n\t\tworld.setRepaintFlag(true);\n\t\tworld.setDisplayFlag(true);\n\t\tworld.repaint();\n\t\twhile (true) {\n\t\t\tstarted = false;\n\t\t\tsynchronized (this) {\n\t\t\t\twhile (!started) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\twait();\n\t\t\t\t\t} catch (InterruptedException ex) {\n\t\t\t\t\t\t/* Empty */\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tThrowable throwable = null;\n\t\t\ttry {\n\t\t\t\tif (karel == null) {\n\t\t\t\t\tmain();\n\t\t\t\t} else {\n\t\t\t\t\tkarel.run();\n\t\t\t\t\tsetStatus(\"Finished running.\");\n\t\t\t\t}\n\t\t\t\tworld.setRepaintFlag(true);\n\t\t\t\tworld.repaint();\n\t\t\t} catch (Exception ex) {\n\t\t\t\tthrowable = ex;\n\t\t\t} catch (StackOverflowError err) {\n\t\t\t\tthrowable = err;\n\t\t\t}\n\t\t\t\n\t\t\tif (throwable == null) {\n\t\t\t\tStateEvent.fire(State.STOPPED);\n\t\t\t} else {\n\t\t\t\tsetStatus(\"Halted due to an error.\");\n\t\t\t\tStateEvent.fire(State.ERROR);\n\t\t\t\tif (errorDialog == null) {\n\t\t\t\t\terrorDialog = new KarelErrorDialog(this);\n\t\t\t\t}\n\t\t\t\tString errorMessage = throwable.getMessage();\n\t\t\t\tif (errorMessage == null || errorMessage.isEmpty()) {\n\t\t\t\t\terrorMessage = \"\";\n\t\t\t\t\tif (throwable instanceof StackOverflowError) {\n\t\t\t\t\t\terrorMessage = \"Infinite method calls.\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\twhile (!errorMessage.endsWith(\"\\n\\n\")) {\n\t\t\t\t\terrorMessage += \"\\n\";\n\t\t\t\t}\n\t\t\t\tByteArrayOutputStream bytes = new ByteArrayOutputStream();\n\t\t\t\tPrintStream out = new PrintStream(bytes);\n\t\t\t\tthrowable.printStackTrace(out);\n\t\t\t\tString stackTrace = bytes.toString();\n\t\t\t\terrorDialog.error(errorMessage, stackTrace);\n\t\t\t}\n\t\t}\n\t}\n\n\tvoid signalStarted() {\n\t\tsynchronized (this) {\n\t\t\tStateEvent.fire(State.RUNNING);\n\t\t\tstarted = true;\n\t\t\tnotifyAll();\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/Karel/src/stanford/karel/KarelResizer.java",
    "content": "package stanford.karel;\n\nimport java.awt.Panel;\nimport java.awt.Scrollbar;\nimport java.awt.event.AdjustmentEvent;\nimport java.awt.event.AdjustmentListener;\n\nclass KarelResizer extends Panel implements AdjustmentListener {\n\tprivate static final int MAX_WIDTH = 50;\n\tprivate static final int MAX_HEIGHT = 50;\n\n\tprivate ResizeCanvas resizeCanvas;\n\tprivate Scrollbar widthScrollbar;\n\tprivate Scrollbar heightScrollbar;\n\n\tpublic KarelResizer() {\n\t\tresizeCanvas = new ResizeCanvas();\n\t\tresizeCanvas.setDimension(10, 10);\n\t\twidthScrollbar = new Scrollbar(Scrollbar.HORIZONTAL);\n\t\twidthScrollbar.setValues(10 - 1, 1, 0, MAX_WIDTH);\n\t\twidthScrollbar.addAdjustmentListener(this);\n\t\theightScrollbar = new Scrollbar(Scrollbar.VERTICAL);\n\t\theightScrollbar.setValues(MAX_HEIGHT - 10, 1, 0, MAX_HEIGHT);\n\t\theightScrollbar.addAdjustmentListener(this);\n\t\tsetLayout(new ResizeLayout());\n\t\tadd(\"canvas\", resizeCanvas);\n\t\tadd(\"hbar\", widthScrollbar);\n\t\tadd(\"vbar\", heightScrollbar);\n\t}\n\n\t/* AdjustmentListener interface */\n\tpublic void adjustmentValueChanged(AdjustmentEvent event) {\n\t\tresizeCanvas.setDimension(getColumns(), getRows());\n\t\tresizeCanvas.repaint();\n\t}\n\n\tpublic int getColumns() {\n\t\treturn widthScrollbar.getValue() + 1;\n\t}\n\n\tpublic int getRows() {\n\t\treturn MAX_HEIGHT - heightScrollbar.getValue();\n\t}\n}\n"
  },
  {
    "path": "Archived/Karel/src/stanford/karel/KarelWorld.java",
    "content": "/*\n * This class implements Karel's world.\n * \n * @author Marty Stepp (based on Eric Roberts version)\n * @version 2015/04/05\n * - added Ms. Karel mode\n * @version 2015/03/31\n * - commented out unused method updateCorner\n * - commented out unused fields and local variables\n * - changed to use Swing graphical components\n */\n\npackage stanford.karel;\n\nimport acm.util.*;\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.io.*;\nimport java.text.*;\nimport java.util.*;\nimport javax.swing.*;\n\npublic class KarelWorld extends JComponent {\n\tpublic static final int NORTH = 0;\n\tpublic static final int EAST = 1;\n\tpublic static final int SOUTH = 2;\n\tpublic static final int WEST = 3;\n\tpublic static final int NORTHEAST = 10;\n\tpublic static final int NORTHWEST = 11;\n\tpublic static final int SOUTHEAST = 12;\n\tpublic static final int SOUTHWEST = 13;\n\tpublic static final int CENTER = 14;\n\n\tpublic static final int INFINITE = 99999999;\n\tpublic static final int PLUS1 = -1;\n\tpublic static final int MINUS1 = -2;\n\tpublic static final int BLANKB = -3;\n\n\tpublic static final int SIMPLE = 0;\n\tpublic static final int FANCY = 1;\n\n\tpublic static final int LEFT_NUMBER_MARGIN = 16;\n\tpublic static final int BOTTOM_NUMBER_MARGIN = 15;\n\tpublic static final int DOUBLE_WALL_THRESHOLD = 24;\n\tpublic static final int CROSS_THRESHOLD = 11;\n\tpublic static final int NUMBER_THRESHOLD = 15;\n\tpublic static final Font NUMBER_FONT = new Font(\"SansSerif\", Font.PLAIN, 13);\n\tpublic static final Font BEEPER_NUMBER_FONT = new Font(\"SansSerif\",\n\t\t\tFont.PLAIN, 11);\n\tpublic static final double WALL_FRACTION = 0.30;\n\tpublic static final double WALL_TOLERANCE = 0.15;\n\n\tpublic static final int MAX_WIDTH = 50;\n\tpublic static final int MAX_HEIGHT = 50;\n\n\tpublic static final int MAX_DISPLAY_WIDTH = (6 * MAX_WIDTH)\n\t\t\t+ LEFT_NUMBER_MARGIN;\n\tpublic static final int MAX_DISPLAY_HEIGHT = (6 * MAX_HEIGHT)\n\t\t\t+ BOTTOM_NUMBER_MARGIN;\n\n\tpublic static final boolean TOKEN_TRACE = false;\n\n\tpublic static final Color BEEPER_COLOR = Color.LIGHT_GRAY;\n\tpublic static final Color MARKED_COLOR = Color.DARK_GRAY;\n\tpublic static final int BEEPER_BORDER = 1;\n\tpublic static final String BEEPER_FONT_FAMILY = \"SansSerif\";\n\tpublic static final int MIN_FANCY = 20;\n\tpublic static final int MIN_BEEPER = 4;\n\tpublic static final int MIN_LABEL = 15;\n\tpublic static final double BEEPER_FRACTION = 0.70;\n\tpublic static final double SIMPLE_FRACTION = 0.70;\n\n\t/* Private constants */\n\tprivate static final String INFINITY[] = {\n\t\t\t\"47494638396109000600F70000FFFFFF98009833999998980011111122222200\",\n\t\t\t\"0054CBFFCB0032980033660033CC0033FE003232663300666600006598009898\",\n\t\t\t\"00CC9900FE99329800659800CC0099FE0098659898999999CC9900FE98009800\",\n\t\t\t\"329800659900CC9800FE3399CB3399FF99993398986598320098650099339998\",\n\t\t\t\"659833CB9833FF9999CC0099FE00336699656698CC9898FF9999323200336600\",\n\t\t\t\"32003233006632009833339965009866339900663300983200666600986500CC\",\n\t\t\t\"3300FE3200CC6600FE65CCCC98CCFF99FFCC99FFFF993300CC3200FE6600CC65\",\n\t\t\t\"00FECC0033CC0066FE0032FE0065339933339966669933669865CC00CCCB00FE\",\n\t\t\t\"FE00CBFE00FE6699CC6598FF9898CC9999FFCB9833CC9966FF9933FF98653333\",\n\t\t\t\"33326532323265326565660033653232660066653265CC3300CC6600FE3200FE\",\n\t\t\t\"65000066CC0099CC0066FE0098FE00CCCC00FECB00CCFE00FEFE33CC0033FE00\",\n\t\t\t\"66CC0066FE00CB3398CC6699FF3399FF659866CC9965FF9898CC9899FF99CCCC\",\n\t\t\t\"00CCFE00FECB00FEFE009933339966339933669865659833CB9966CC9933FF98\",\n\t\t\t\"65FF33CBCB33FFCC33CCFF33FFFF99CB3399FF3399CC6698FF65CC98CCCCCCCC\",\n\t\t\t\"CC99FFCBCBFFFF99CCFFCBCBFF99FFFFCBFF3333CB3366CB3333FF3366FF6533\",\n\t\t\t\"CB6666CC6633FF6565FFCB3333CB6533CB3365CC6666FF3333FF6633FF3366FF\",\n\t\t\t\"656533CB3333FF3333CB6633FF6666CB3366FF3366CC6665FF65CB33CBCC66CC\",\n\t\t\t\"CC33FFCC65FFFF33CCFF65CCFF33FFFF65FF66CCCC65FFCC65CCFF65FFFF98CC\",\n\t\t\t\"CC99FFCC99CCFF99FFFFCBCB33CCFF33CCCC66CCFF65FFCC33FFFF33FFCC65FF\",\n\t\t\t\"FF65444444656532DDDDDDCBFFFFFFFFCBEEEEEE100000980000001000660000\",\n\t\t\t\"000098000066777777888888AAAAAABBBBBB5555556666660000100000224400\",\n\t\t\t\"005400000000CC0000DC0000EE0000FE00003200004400880000980000AA0000\",\n\t\t\t\"BA0000CC0000DC0000EE0000FE00CC0000DC0000EE0000FE0000004400005400\",\n\t\t\t\"006600007600220000320000AA0000BA00000022000032007600008800000000\",\n\t\t\t\"AA0000BA00007600008800000021F90401000090002C0000000009000600C7FF\",\n\t\t\t\"FFFF980098339999989800111111222222000054CBFFCB0032980033660033CC\",\n\t\t\t\"0033FE00323266330066660000659800989800CC9900FE99329800659800CC00\",\n\t\t\t\"99FE0098659898999999CC9900FE98009800329800659900CC9800FE3399CB33\",\n\t\t\t\"99FF99993398986598320098650099339998659833CB9833FF9999CC0099FE00\",\n\t\t\t\"336699656698CC9898FF99993232003366003200323300663200983333996500\",\n\t\t\t\"9866339900663300983200666600986500CC3300FE3200CC6600FE65CCCC98CC\",\n\t\t\t\"FF99FFCC99FFFF993300CC3200FE6600CC6500FECC0033CC0066FE0032FE0065\",\n\t\t\t\"339933339966669933669865CC00CCCB00FEFE00CBFE00FE6699CC6598FF9898\",\n\t\t\t\"CC9999FFCB9833CC9966FF9933FF986533333332653232326532656566003365\",\n\t\t\t\"3232660066653265CC3300CC6600FE3200FE65000066CC0099CC0066FE0098FE\",\n\t\t\t\"00CCCC00FECB00CCFE00FEFE33CC0033FE0066CC0066FE00CB3398CC6699FF33\",\n\t\t\t\"99FF659866CC9965FF9898CC9899FF99CCCC00CCFE00FECB00FEFE0099333399\",\n\t\t\t\"66339933669865659833CB9966CC9933FF9865FF33CBCB33FFCC33CCFF33FFFF\",\n\t\t\t\"99CB3399FF3399CC6698FF65CC98CCCCCCCCCC99FFCBCBFFFF99CCFFCBCBFF99\",\n\t\t\t\"FFFFCBFF3333CB3366CB3333FF3366FF6533CB6666CC6633FF6565FFCB3333CB\",\n\t\t\t\"6533CB3365CC6666FF3333FF6633FF3366FF656533CB3333FF3333CB6633FF66\",\n\t\t\t\"66CB3366FF3366CC6665FF65CB33CBCC66CCCC33FFCC65FFFF33CCFF65CCFF33\",\n\t\t\t\"FFFF65FF66CCCC65FFCC65CCFF65FFFF98CCCC99FFCC99CCFF99FFFFCBCB33CC\",\n\t\t\t\"FF33CCCC66CCFF65FFCC33FFFF33FFCC65FFFF65444444656532DDDDDDCBFFFF\",\n\t\t\t\"FFFFCBEEEEEE100000980000001000660000000098000066777777888888AAAA\",\n\t\t\t\"AABBBBBB5555556666660000100000224400005400000000CC0000DC0000EE00\",\n\t\t\t\"00FE00003200004400880000980000AA0000BA0000CC0000DC0000EE0000FE00\",\n\t\t\t\"CC0000DC0000EE0000FE0000004400005400006600007600220000320000AA00\",\n\t\t\t\"00BA00000022000032007600008800000000AA0000BA00007600008800000008\",\n\t\t\t\"190021091C4810D2BF7F06110A54C870E0C1840E174A2C4830200021FF0B4D41\",\n\t\t\t\"4347436F6E2004031039000000015772697474656E20627920474946436F6E76\",\n\t\t\t\"657274657220322E342E33206F66204D6F6E6461792C204D61792032352C2031\",\n\t\t\t\"393938003B\" };\n\n\tprivate static final int KAREL_INSET = 6;             // px to shrink Karel size relative to his corner size \n\tprivate static final double BODY_OFFSET_X = -0.20;\n\tprivate static final double BODY_OFFSET_Y = -0.33;\n\tprivate static final double BODY_WIDTH = 0.60;        // fraction of corner width occupied by Karel's body outline\n\tprivate static final double BODY_HEIGHT = 0.80;       // fraction of corner height occupied by Karel's body outline\n\tprivate static final double UPPER_NOTCH = 0.15;       // what fraction of Karel's body is beveled on U/R edge?\n\tprivate static final double LOWER_NOTCH = 0.10;       // what fraction of Karel's body is beveled on B/L edge?\n\tprivate static final double SCREEN_OFFSET_X = -0.07;\n\tprivate static final double SCREEN_OFFSET_Y = -0.05;\n\tprivate static final double SCREEN_WIDTH = 0.30;\n\tprivate static final double SCREEN_HEIGHT = 0.40;\n\tprivate static final double SLOT_WIDTH = 0.15;        // fraction of body width used by Karel's \"disk\" slot line\n\tprivate static final double FOOT_WIDTH = 0.08;        // size of Karel's feet relative to body \n\tprivate static final double FOOT_LENGTH = 0.20;\n\tprivate static final double UPPER_ANKLE = 0.08;\n\tprivate static final double LOWER_ANKLE = 0.08;\n\n\tprivate static Image infinityImage;\n\n\tprivate StreamTokenizer tokenizer;\n\tprivate KarelWorldMonitor monitor;\n\tprivate Karel activeKarel;\n\tprivate Karel lastKarel;\n\tprivate boolean repaintFlag;\n\tprivate boolean displayFlag;\n\tprivate boolean editMode;\n\tprivate boolean numberSquaresFlag;\n\tprivate boolean displayOneFlag;\n\tprivate boolean msKarel;            // default false\n\tprivate int cols;\n\tprivate int rows;\n\tprivate int sqSize;\n\tprivate int forcedSize;\n\tprivate int alignment;\n\tprivate int width;\n\tprivate int height;\n\tprivate int leftMargin;\n\tprivate int bottomMargin;\n\tprivate String lastClick;\n\tprivate String pathname;\n\tprivate String title;\n\tprivate Corner[][] map;\n\tprivate int look;\n\tprivate int lastBeeperCount;\n\tprivate NumberFormat speedFormat;\n\tprivate ArrayList<Karel> karels;\n\tprivate Object sizeLock;\n\tprivate Image offscreen;\n\n\t/* Constructor */\n\tpublic KarelWorld() {\n\t\tsizeLock = new Object();\n\t\tsetTitle(\"Karel World\");\n\t\tsetBackground(Color.WHITE);\n\t\tKarelWorldListener listener = new KarelWorldListener(this);\n\t\taddMouseListener(listener);\n\t\taddMouseMotionListener(listener);\n\t\taddComponentListener(listener);\n\t\tspeedFormat = NumberFormat.getInstance();\n\t\tspeedFormat.setMinimumIntegerDigits(1);\n\t\tspeedFormat.setMaximumIntegerDigits(1);\n\t\tspeedFormat.setMinimumFractionDigits(2);\n\t\tspeedFormat.setMaximumFractionDigits(2);\n\t\tforcedSize = 0;\n\t\tnumberSquaresFlag = true;\n\t\tdisplayOneFlag = false;\n\t\tmsKarel = false;\n\t\tlook = FANCY;\n\t\talignment = CENTER;\n\t\tkarels = new ArrayList<Karel>();\n\t\tsetDisplayFlag(true);\n\t\tsetRepaintFlag(true);\n\t}\n\n\tpublic void init(int cols, int rows) {\n\t\tsynchronized (sizeLock) {\n\t\t\tthis.cols = cols;\n\t\t\tthis.rows = rows;\n\t\t\tsetDisplayParameters(cols, rows);\n\t\t\teditMode = false;\n\t\t\tmap = new Corner[cols + 2][rows + 2];\n\t\t\tfor (int x = 1; x <= cols + 1; x++) {\n\t\t\t\tfor (int y = 1; y <= rows + 1; y++) {\n\t\t\t\t\tmap[x][y] = new Corner();\n\t\t\t\t\tmap[x][y].wallSouth = (y == 1) || (y == rows + 1);\n\t\t\t\t\tmap[x][y].wallWest = (x == 1) || (x == cols + 1);\n\t\t\t\t\tmap[x][y].color = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\trepaint();\n\t\t}\n\t}\n\n\tpublic void add(Karel karel) {\n\t\tif (karels.indexOf(karel) == -1) {\n\t\t\tkarel.setWorld(this);\n\t\t\tkarels.add(karel);\n\t\t}\n\t\trepaint();\n\t}\n\n\tpublic void remove(Karel karel) {\n\t\tkarels.remove(karel);\n\t\tkarel.setWorld(null);\n\t\trepaint();\n\t}\n\n\tpublic Karel getKarel() {\n\t\treturn getKarel(0);\n\t}\n\n\tpublic Karel getKarel(int k) {\n\t\tif (k < 0 || k >= karels.size()) {\n\t\t\tthrow new ErrorException(\"Illegal Karel index\");\n\t\t}\n\t\treturn karels.get(k);\n\t}\n\n\tpublic int getKarelCount() {\n\t\treturn karels.size();\n\t}\n\n\tpublic Karel getKarelOnSquare(int x, int y) {\n\t\tIterator<Karel> iterator = karels.iterator();\n\t\twhile (iterator.hasNext()) {\n\t\t\tKarel karel = iterator.next();\n\t\t\tPoint pt = karel.getLocation();\n\t\t\tif (pt.x == x && pt.y == y)\n\t\t\t\treturn karel;\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic void setTitle(String title) {\n\t\tthis.title = title;\n\t}\n\n\tpublic String getTitle() {\n\t\treturn title;\n\t}\n\n\tpublic void setPathname(String pathname) {\n\t\tthis.pathname = pathname;\n\t}\n\n\tpublic String getPathname() {\n\t\treturn pathname;\n\t}\n\n\tpublic void setDisplayFlag(boolean flag) {\n\t\tdisplayFlag = flag;\n\t}\n\n\tpublic void setRepaintFlag(boolean flag) {\n\t\trepaintFlag = flag;\n\t}\n\n\tpublic boolean getRepaintFlag() {\n\t\treturn repaintFlag;\n\t}\n\n\tpublic boolean getNumberSquaresFlag() {\n\t\treturn numberSquaresFlag;\n\t}\n\n\tpublic void setNumberSquaresFlag(boolean flag) {\n\t\tnumberSquaresFlag = flag;\n\t}\n\n\tpublic int getAlignment() {\n\t\treturn alignment;\n\t}\n\n\tpublic void setAlignment(int alignment) {\n\t\tthis.alignment = alignment;\n\t}\n\n\tpublic int getLook() {\n\t\treturn look;\n\t}\n\n\tpublic void setLook(int look) {\n\t\tthis.look = look;\n\t}\n\n\tpublic void setDisplayOneFlag(boolean flag) {\n\t\tdisplayOneFlag = flag;\n\t}\n\n\tpublic String getPathName() {\n\t\treturn pathname;\n\t}\n\n\tpublic void setPathName(String pathname) {\n\t\tthis.pathname = pathname;\n\t}\n\n\tpublic boolean getEditMode() {\n\t\treturn editMode;\n\t}\n\n\tpublic void setEditMode(boolean flag) {\n\t\teditMode = flag;\n\t}\n\n\tpublic void updateEditMode(boolean flag) {\n\t\tif (monitor == null)\n\t\t\tthrow new ErrorException(\"No map editor defined\");\n\t\tsetEditMode(flag);\n\t\trepaint();\n\t}\n\n\tpublic void forceSquareSize(int size) {\n\t\tforcedSize = size;\n\t}\n\n\tpublic void reset() {\n\t\t/* Empty */\n\t}\n\n\tpublic int getSquareSize() {\n\t\treturn sqSize;\n\t}\n\n\tpublic int getColumns() {\n\t\treturn (cols);\n\t}\n\n\tpublic int getRows() {\n\t\treturn (rows);\n\t}\n\n\tpublic boolean outOfBounds(Point pt) {\n\t\treturn outOfBounds(pt.x, pt.y);\n\t}\n\n\tpublic boolean outOfBounds(int x, int y) {\n\t\treturn (x < 1 || x > cols || y < 1 || y > rows);\n\t}\n\n\tpublic int getBeepersOnCorner(Point pt) {\n\t\treturn getBeepersOnCorner(pt.x, pt.y);\n\t}\n\n\tpublic int getBeepersOnCorner(int x, int y) {\n\t\treturn ((map[x][y]).nBeepers);\n\t}\n\n\tpublic void setBeepersOnCorner(Point pt, int nBeepers) {\n\t\tmap[pt.x][pt.y].nBeepers = nBeepers;\n\t\tupdateCorner(pt);\n\t}\n\n\tpublic void setBeepersOnCorner(int x, int y, int nBeepers) {\n\t\tsetBeepersOnCorner(new Point(x, y), nBeepers);\n\t}\n\n\tpublic static int adjustBeepers(int nBeepers, int delta) {\n\t\tif (nBeepers == INFINITE)\n\t\t\treturn INFINITE;\n\t\treturn nBeepers + delta;\n\t}\n\n\tpublic static int setBeepers(int nBeepers, int delta) {\n\t\tif (delta == INFINITE)\n\t\t\treturn INFINITE;\n\t\tif (delta == PLUS1) {\n\t\t\treturn (nBeepers == INFINITE) ? INFINITE : nBeepers + 1;\n\t\t}\n\t\tif (delta == MINUS1) {\n\t\t\treturn (nBeepers == INFINITE) ? INFINITE : Math\n\t\t\t\t\t.max(0, nBeepers - 1);\n\t\t}\n\t\treturn delta;\n\t}\n\n\tpublic Color getCornerColor(Point pt) {\n\t\treturn getCornerColor(pt.x, pt.y);\n\t}\n\n\tpublic Color getCornerColor(int x, int y) {\n\t\treturn (map[x][y].color);\n\t}\n\n\tpublic void setCornerColor(Point pt, Color color) {\n\t\tmap[pt.x][pt.y].color = color;\n\t\tupdateCorner(pt);\n\t}\n\n\tpublic void setCornerColor(int x, int y, Color color) {\n\t\tsetCornerColor(new Point(x, y), color);\n\t}\n\n\tpublic boolean checkWall(Point pt, int dir) {\n\t\treturn checkWall(pt.x, pt.y, dir);\n\t}\n\n\tpublic boolean checkWall(int x, int y, int dir) {\n\t\tswitch (dir) {\n\t\tcase SOUTH:\n\t\t\treturn (map[x][y].wallSouth);\n\t\tcase WEST:\n\t\t\treturn (map[x][y].wallWest);\n\t\tcase NORTH:\n\t\t\treturn (map[x][y + 1].wallSouth);\n\t\tcase EAST:\n\t\t\treturn (map[x + 1][y].wallWest);\n\t\t}\n\t\treturn (false);\n\t}\n\n\tpublic void setWall(Point pt, int dir) {\n\t\tswitch (dir) {\n\t\tcase SOUTH:\n\t\t\tmap[pt.x][pt.y].wallSouth = true;\n\t\t\tbreak;\n\t\tcase WEST:\n\t\t\tmap[pt.x][pt.y].wallWest = true;\n\t\t\tbreak;\n\t\tcase NORTH:\n\t\t\tmap[pt.x][pt.y + 1].wallSouth = true;\n\t\t\tbreak;\n\t\tcase EAST:\n\t\t\tmap[pt.x + 1][pt.y].wallWest = true;\n\t\t\tbreak;\n\t\t}\n\t\tupdateCorner(pt);\n\t}\n\n\tpublic void setWall(int x, int y, int dir) {\n\t\tsetWall(new Point(x, y), dir);\n\t}\n\n\tpublic void clearWall(Point pt, int dir) {\n\t\tswitch (dir) {\n\t\tcase SOUTH:\n\t\t\tmap[pt.x][pt.y].wallSouth = false;\n\t\t\tbreak;\n\t\tcase WEST:\n\t\t\tmap[pt.x][pt.y].wallWest = false;\n\t\t\tbreak;\n\t\tcase NORTH:\n\t\t\tmap[pt.x][pt.y + 1].wallSouth = false;\n\t\t\tbreak;\n\t\tcase EAST:\n\t\t\tmap[pt.x + 1][pt.y].wallWest = false;\n\t\t\tbreak;\n\t\t}\n\t\tupdateCorner(pt);\n\t\tif (sqSize >= DOUBLE_WALL_THRESHOLD) {\n\t\t\tPoint left = adjacentPoint(pt, leftFrom(dir));\n\t\t\tPoint right = adjacentPoint(pt, rightFrom(dir));\n\t\t\tupdateCorner(left);\n\t\t\tupdateCorner(right);\n\t\t\tupdateCorner(adjacentPoint(left, dir));\n\t\t\tupdateCorner(adjacentPoint(pt, dir));\n\t\t\tupdateCorner(adjacentPoint(right, dir));\n\t\t}\n\t}\n\n\tpublic void clearWall(int x, int y, int dir) {\n\t\tclearWall(new Point(x, y), dir);\n\t}\n\n\tpublic void updateCorner(int x, int y) {\n\t\tupdateCorner(new Point(x, y));\n\t}\n\n\tpublic void updateCorner(Point pt) {\n\t\tRectangle r = getCornerRect(pt);\n\t\tif (repaintFlag)\n\t\t\trepaint(r.x, r.y, r.width, r.height);\n\t}\n\n\tpublic static String directionName(int dir) {\n\t\tswitch (dir) {\n\t\tcase SOUTH:\n\t\t\treturn \"SOUTH\";\n\t\tcase WEST:\n\t\t\treturn \"WEST\";\n\t\tcase NORTH:\n\t\t\treturn \"NORTH\";\n\t\tcase EAST:\n\t\t\treturn \"EAST\";\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic static int leftFrom(int dir) {\n\t\tswitch (dir) {\n\t\tcase SOUTH:\n\t\t\treturn EAST;\n\t\tcase WEST:\n\t\t\treturn SOUTH;\n\t\tcase NORTH:\n\t\t\treturn WEST;\n\t\tcase EAST:\n\t\t\treturn NORTH;\n\t\t}\n\t\treturn -1;\n\t}\n\n\tpublic static int rightFrom(int dir) {\n\t\tswitch (dir) {\n\t\tcase SOUTH:\n\t\t\treturn WEST;\n\t\tcase WEST:\n\t\t\treturn NORTH;\n\t\tcase NORTH:\n\t\t\treturn EAST;\n\t\tcase EAST:\n\t\t\treturn SOUTH;\n\t\t}\n\t\treturn -1;\n\t}\n\n\tpublic static int oppositeDirection(int dir) {\n\t\tswitch (dir) {\n\t\tcase SOUTH:\n\t\t\treturn NORTH;\n\t\tcase WEST:\n\t\t\treturn EAST;\n\t\tcase NORTH:\n\t\t\treturn SOUTH;\n\t\tcase EAST:\n\t\t\treturn WEST;\n\t\t}\n\t\treturn -1;\n\t}\n\n\tpublic static Point adjacentPoint(Point pt, int dir) {\n\t\treturn adjacentPoint(pt.x, pt.y, dir);\n\t}\n\n\tpublic static Point adjacentPoint(int x, int y, int dir) {\n\t\tswitch (dir) {\n\t\tcase SOUTH:\n\t\t\treturn new Point(x, y - 1);\n\t\tcase WEST:\n\t\t\treturn new Point(x - 1, y);\n\t\tcase NORTH:\n\t\t\treturn new Point(x, y + 1);\n\t\tcase EAST:\n\t\t\treturn new Point(x + 1, y);\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic void repaint() {\n\t\tif (repaintFlag)\n\t\t\tsuper.repaint();\n\t}\n\n\tpublic void update(Graphics g) {\n\t\tpaintComponent(g);\n\t}\n\n\tpublic void paintComponent(Graphics g) {\n\t\tsuper.paintComponent(g);\n\t\tif (map == null || !displayFlag)\n\t\t\treturn;\n\t\tif (g instanceof Graphics2D) {\n\t\t\tGraphics2D g2 = (Graphics2D) g;\n\t\t\tg2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,\n\t\t\t\t\tRenderingHints.VALUE_ANTIALIAS_ON);\n\t\t}\n\t\tsynchronized (sizeLock) {\n\t\t\tif (offscreen == null) {\n\t\t\t\tDimension size = getSize();\n\t\t\t\toffscreen = createImage(size.width, size.height);\n\t\t\t}\n\t\t\tGraphics osg = offscreen.getGraphics();\n\t\t\tif (osg instanceof Graphics2D) {\n\t\t\t\tGraphics2D g2 = (Graphics2D) osg;\n\t\t\t\tg2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,\n\t\t\t\t\t\tRenderingHints.VALUE_ANTIALIAS_ON);\n\t\t\t}\n\t\t\tdrawEmptyWorld(osg);\n\t\t\tfor (int pass = 0; pass < 2; pass++) {\n\t\t\t\tfor (int x = 1; x <= cols + 1; x++) {\n\t\t\t\t\tfor (int y = 1; y <= rows + 1; y++) {\n\t\t\t\t\t\tboolean mustPaint = false;\n\t\t\t\t\t\tif (getKarelOnSquare(x, y) != null) {\n\t\t\t\t\t\t\tmustPaint = true;\n\t\t\t\t\t\t} else if (map[x][y].color != null) {\n\t\t\t\t\t\t\tmustPaint = true;\n\t\t\t\t\t\t} else if (map[x][y].nBeepers != 0) {\n\t\t\t\t\t\t\tmustPaint = true;\n\t\t\t\t\t\t} else if (x > 1 && map[x][y].wallWest) {\n\t\t\t\t\t\t\tmustPaint = true;\n\t\t\t\t\t\t} else if (y > 1 && map[x][y].wallSouth) {\n\t\t\t\t\t\t\tmustPaint = true;\n\t\t\t\t\t\t} else if (x < cols && map[x + 1][y].wallWest) {\n\t\t\t\t\t\t\tmustPaint = true;\n\t\t\t\t\t\t} else if (y < rows && map[x][y + 1].wallSouth) {\n\t\t\t\t\t\t\tmustPaint = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (mustPaint) {\n\t\t\t\t\t\t\tif (pass == 0) {\n\t\t\t\t\t\t\t\tupdateContents(osg, new Point(x, y));\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tupdateWalls(osg, new Point(x, y));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tdrawWorldFrame(osg);\n\t\t}\n\t\tg.drawImage(offscreen, 0, 0, this);\n\t}\n\n\tpublic void trace() {\n\t\tif (monitor != null)\n\t\t\tmonitor.trace();\n\t}\n\n\tprotected void setMonitor(KarelWorldMonitor monitor) {\n\t\tthis.monitor = monitor;\n\t}\n\n\tprotected KarelWorldMonitor getMonitor() {\n\t\treturn monitor;\n\t}\n\n\t/* Protected hooks */\n\n\tprotected void componentResizedHook() {\n\t\tsetDisplayParameters(cols, rows);\n\t\trepaint();\n\t}\n\n\tprotected void mousePressedHook(MouseEvent e) {\n\t\tif (editMode) {\n\t\t\tlastClick = \"\";\n\t\t\tPoint pt = getClickCorner(e.getX(), e.getY());\n\t\t\tif (pt == null) {\n\t\t\t\tactiveKarel = null;\n\t\t\t\tcheckForWallClick(e.getX(), e.getY());\n\t\t\t} else {\n\t\t\t\tactiveKarel = getKarelOnSquare(pt.x, pt.y);\n\t\t\t\tif (activeKarel == null) {\n\t\t\t\t\tcheckForCornerClick(pt);\n\t\t\t\t} else {\n\t\t\t\t\t// added by Marty to enable placing beepers on Karel's location\n\t\t\t\t\tcheckForCornerClick(pt);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected void mouseDraggedHook(MouseEvent e) {\n\t\tif (!editMode)\n\t\t\treturn;\n\t\tif (activeKarel != null) {\n\t\t\tPoint pt = getClickCorner(e.getX(), e.getY());\n\t\t\tif (pt != null && !pt.equals(activeKarel.getLocation())) {\n\t\t\t\tactiveKarel.setLocation(pt);\n\t\t\t\trepaint();\n\t\t\t}\n\t\t} else {\n\t\t\tif (!checkForWallClick(e.getX(), e.getY())) {\n\t\t\t\tcheckForCornerClick(e.getX(), e.getY());\n\t\t\t}\n\t\t}\n\t}\n\n\t/* Click handling methods */\n\n\tprivate boolean checkForWallClick(int mx, int my) {\n\t\tdouble sx = (double) (mx - leftMargin + sqSize / 2) / sqSize;\n\t\tdouble sy = (double) (getSize().height - my - bottomMargin - 1 + sqSize / 2)\n\t\t\t\t/ sqSize;\n\t\tint tx = (int) (sx + 0.5);\n\t\tint ty = (int) (sy + 0.5);\n\t\tint dir;\n\t\tif (Math.abs(Math.abs(sx - tx) - 0.5) <= WALL_TOLERANCE\n\t\t\t\t&& Math.abs(sy - ty) < WALL_FRACTION) {\n\t\t\tif (tx > sx)\n\t\t\t\ttx--;\n\t\t\tif (tx < 0 || tx > cols || ty < 1 || ty > rows)\n\t\t\t\treturn false;\n\t\t\tdir = EAST;\n\t\t} else if (Math.abs(Math.abs(sy - ty) - 0.5) <= WALL_TOLERANCE\n\t\t\t\t&& Math.abs(sx - tx) < WALL_FRACTION) {\n\t\t\tif (ty > sy)\n\t\t\t\tty--;\n\t\t\tif (tx < 1 || tx > cols || ty < 0 || ty > rows)\n\t\t\t\treturn false;\n\t\t\tdir = NORTH;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t\tString click = tx + \"/\" + ty + \"/\" + dir;\n\t\tif (!click.equals(lastClick)) {\n\t\t\tif (monitor != null)\n\t\t\t\tmonitor.wallAction(new Point(tx, ty), dir);\n\t\t\tlastClick = click;\n\t\t}\n\t\treturn true;\n\t}\n\n\tprivate boolean checkForCornerClick(int mx, int my) {\n\t\treturn checkForCornerClick(getClickCorner(mx, my));\n\t}\n\n\tprivate boolean checkForCornerClick(Point pt) {\n\t\tif (pt == null)\n\t\t\treturn false;\n\t\tString click = pt.x + \"/\" + pt.y;\n\t\tif (!click.equals(lastClick)) {\n\t\t\tif (monitor != null)\n\t\t\t\tmonitor.cornerAction(pt);\n\t\t\tlastClick = click;\n\t\t}\n\t\treturn true;\n\t}\n\n\tprivate Point getClickCorner(int mx, int my) {\n\t\tdouble sx = (double) (mx - leftMargin + sqSize / 2) / sqSize;\n\t\tdouble sy = (double) (getSize().height - my - bottomMargin - 1 + sqSize / 2)\n\t\t\t\t/ sqSize;\n\t\tint tx = (int) (sx + 0.5);\n\t\tint ty = (int) (sy + 0.5);\n\t\tif (tx < 1 || tx > cols || ty < 1 || ty > rows)\n\t\t\treturn null;\n\t\tif (Math.abs(Math.abs(sx - tx) - 0.5) * sqSize <= 1)\n\t\t\treturn null;\n\t\tif (Math.abs(Math.abs(sy - ty) - 0.5) * sqSize <= 1)\n\t\t\treturn null;\n\t\treturn new Point(tx, ty);\n\t}\n\n\tprivate static String encodeColor(Color color) {\n\t\tif (color.equals(Color.BLACK))\n\t\t\treturn \"BLACK\";\n\t\tif (color.equals(Color.BLUE))\n\t\t\treturn \"BLUE\";\n\t\tif (color.equals(Color.CYAN))\n\t\t\treturn \"CYAN\";\n\t\tif (color.equals(Color.DARK_GRAY))\n\t\t\treturn \"DARK_GRAY\";\n\t\tif (color.equals(Color.GRAY))\n\t\t\treturn \"GRAY\";\n\t\tif (color.equals(Color.GREEN))\n\t\t\treturn \"GREEN\";\n\t\tif (color.equals(Color.LIGHT_GRAY))\n\t\t\treturn \"LIGHT_GRAY\";\n\t\tif (color.equals(Color.MAGENTA))\n\t\t\treturn \"MAGENTA\";\n\t\tif (color.equals(Color.ORANGE))\n\t\t\treturn \"ORANGE\";\n\t\tif (color.equals(Color.PINK))\n\t\t\treturn \"PINK\";\n\t\tif (color.equals(Color.RED))\n\t\t\treturn \"RED\";\n\t\tif (color.equals(Color.WHITE))\n\t\t\treturn \"WHITE\";\n\t\tif (color.equals(Color.YELLOW))\n\t\t\treturn \"YELLOW\";\n\t\treturn \"0x\" + Integer.toString(color.getRGB() & 0xFFFFFF).toUpperCase();\n\t}\n\n\tprivate static Color decodeColor(String name) {\n\t\tif (name.equalsIgnoreCase(\"black\"))\n\t\t\treturn Color.BLACK;\n\t\tif (name.equalsIgnoreCase(\"blue\"))\n\t\t\treturn Color.BLUE;\n\t\tif (name.equalsIgnoreCase(\"cyan\"))\n\t\t\treturn Color.CYAN;\n\t\tif (name.equalsIgnoreCase(\"darkgray\"))\n\t\t\treturn Color.DARK_GRAY;\n\t\tif (name.equalsIgnoreCase(\"dark_gray\"))\n\t\t\treturn Color.DARK_GRAY;\n\t\tif (name.equalsIgnoreCase(\"gray\"))\n\t\t\treturn Color.GRAY;\n\t\tif (name.equalsIgnoreCase(\"green\"))\n\t\t\treturn Color.GREEN;\n\t\tif (name.equalsIgnoreCase(\"lightgray\"))\n\t\t\treturn Color.LIGHT_GRAY;\n\t\tif (name.equalsIgnoreCase(\"light_gray\"))\n\t\t\treturn Color.LIGHT_GRAY;\n\t\tif (name.equalsIgnoreCase(\"magenta\"))\n\t\t\treturn Color.MAGENTA;\n\t\tif (name.equalsIgnoreCase(\"orange\"))\n\t\t\treturn Color.ORANGE;\n\t\tif (name.equalsIgnoreCase(\"pink\"))\n\t\t\treturn Color.PINK;\n\t\tif (name.equalsIgnoreCase(\"red\"))\n\t\t\treturn Color.RED;\n\t\tif (name.equalsIgnoreCase(\"white\"))\n\t\t\treturn Color.WHITE;\n\t\tif (name.equalsIgnoreCase(\"yellow\"))\n\t\t\treturn Color.YELLOW;\n\t\treturn Color.decode(name);\n\t}\n\n\tprivate void setDisplayParameters(int cols, int rows) {\n\t\toffscreen = null;\n\t\tint usableWidth = getSize().width\n\t\t\t\t- ((numberSquaresFlag) ? LEFT_NUMBER_MARGIN : 2);\n\t\tint usableHeight = getSize().height\n\t\t\t\t- ((numberSquaresFlag) ? BOTTOM_NUMBER_MARGIN : 0) - 2;\n\t\tthis.width = cols;\n\t\tthis.height = rows;\n\t\tif (forcedSize == 0) {\n\t\t\tsqSize = Math.min((int) (usableWidth / cols),\n\t\t\t\t\t(int) (usableHeight / rows));\n\t\t} else {\n\t\t\tsqSize = forcedSize;\n\t\t}\n\t\twidth = cols * sqSize;\n\t\theight = rows * sqSize;\n\t\tswitch (alignment) {\n\t\tcase NORTHWEST:\n\t\tcase WEST:\n\t\tcase SOUTHWEST:\n\t\t\tleftMargin = (numberSquaresFlag) ? LEFT_NUMBER_MARGIN : 2;\n\t\t\tbreak;\n\t\tcase NORTH:\n\t\tcase CENTER:\n\t\tcase SOUTH:\n\t\t\tleftMargin = ((numberSquaresFlag) ? LEFT_NUMBER_MARGIN : 2)\n\t\t\t\t\t+ (usableWidth - width) / 2;\n\t\t\tbreak;\n\t\tcase NORTHEAST:\n\t\tcase EAST:\n\t\tcase SOUTHEAST:\n\t\t\tleftMargin = getSize().width - width - 1;\n\t\t\tbreak;\n\t\t}\n\t\tswitch (alignment) {\n\t\tcase NORTHWEST:\n\t\tcase NORTH:\n\t\tcase NORTHEAST:\n\t\t\tbottomMargin = getSize().height - height - 2;\n\t\t\tbreak;\n\t\tcase WEST:\n\t\tcase CENTER:\n\t\tcase EAST:\n\t\t\tbottomMargin = ((numberSquaresFlag) ? BOTTOM_NUMBER_MARGIN : 0)\n\t\t\t\t\t+ (usableHeight - height) / 2;\n\t\t\tbreak;\n\t\tcase SOUTHWEST:\n\t\tcase SOUTH:\n\t\tcase SOUTHEAST:\n\t\t\tbottomMargin = (numberSquaresFlag) ? BOTTOM_NUMBER_MARGIN : 0;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tprivate void drawEmptyWorld(Graphics g) {\n\t\tif (g == null)\n\t\t\treturn;\n\t\tDimension size = getSize();\n\t\tg.setColor(Color.WHITE);\n\t\tg.fillRect(0, 0, size.width, size.height);\n\t\tg.setColor(Color.BLACK);\n\t\tint x = leftMargin + sqSize / 2;\n\t\tfor (int ix = 1; ix <= cols; ix++) {\n\t\t\tint y = getSize().height - bottomMargin - (sqSize + 1) / 2 - 1;\n\t\t\tfor (int iy = 1; iy <= rows; iy++) {\n\t\t\t\tdrawCornerMarker(g, x, y);\n\t\t\t\ty -= sqSize;\n\t\t\t}\n\t\t\tx += sqSize;\n\t\t}\n\t}\n\n\tprivate void drawWorldFrame(Graphics g) {\n\t\tif (g == null)\n\t\t\treturn;\n\t\tg.setColor(Color.BLACK);\n\t\tint x = leftMargin;\n\t\tint y = getSize().height - bottomMargin - 1 - height;\n\t\tif (sqSize >= DOUBLE_WALL_THRESHOLD) {\n\t\t\tg.drawRect(x, y, width - 1, height - 1);\n\t\t\tg.drawRect(x - 1, y - 1, width + 1, height + 1);\n\t\t} else {\n\t\t\tg.drawRect(x - 1, y - 1, width, height);\n\t\t}\n\t\tif (sqSize > NUMBER_THRESHOLD && numberSquaresFlag) {\n\t\t\tg.setFont(BEEPER_NUMBER_FONT);\n\t\t\tFontMetrics fm = g.getFontMetrics();\n\t\t\tx = leftMargin + sqSize / 2;\n\t\t\ty = getSize().height - bottomMargin + 10;\n\t\t\tfor (int ix = 1; ix <= cols; ix++) {\n\t\t\t\tString label = \"\" + ix;\n\t\t\t\tg.drawString(label, x - fm.stringWidth(label) / 2, y);\n\t\t\t\tx += sqSize;\n\t\t\t}\n\t\t\tx = leftMargin - 3;\n\t\t\ty = getSize().height - bottomMargin - sqSize / 2 + 2;\n\t\t\tfor (int iy = 1; iy <= rows; iy++) {\n\t\t\t\tg.drawString(\"\" + iy, x - fm.stringWidth(\"\" + iy), y);\n\t\t\t\ty -= sqSize;\n\t\t\t}\n\t\t}\n\t}\n\n\t// private void updateCorner(Graphics g, Point pt) {\n\t// updateContents(g, pt);\n\t// updateWalls(g, pt);\n\t// }\n\n\tpublic void updateContents(Graphics g, Point pt) {\n\t\tif (g == null)\n\t\t\treturn;\n\t\tif (outOfBounds(pt))\n\t\t\treturn;\n\t\tint x = leftMargin + (pt.x - 1) * sqSize;\n\t\tint y = getSize().height - bottomMargin - 1 - pt.y * sqSize;\n\t\tdrawCorner(g, x, y, pt);\n\t}\n\n\tpublic void drawCorner(Graphics g, int x, int y, Point pt) {\n\t\tif (g == null)\n\t\t\treturn;\n\t\tint sqSize = getSquareSize();\n\t\tColor color = getCornerColor(pt);\n\t\tg.setColor((color == null) ? Color.WHITE : color);\n\t\tg.fillRect(x, y, sqSize, sqSize);\n\t\tint cx = x + sqSize / 2;\n\t\tint cy = y + sqSize / 2;\n\t\tint nBeepers = getBeepersOnCorner(pt);\n\t\tif (nBeepers > 0) {\n\t\t\tif (nBeepers == 1 && !displayOneFlag)\n\t\t\t\tnBeepers = BLANKB;\n\t\t\tdrawBeeperForStyle(g, cx, cy, sqSize, nBeepers, 1);\n\t\t}\n\t\tKarel karel = getKarelOnSquare(pt.x, pt.y);\n\t\tif (karel != null) {\n\t\t\tdrawKarel(g, cx, cy, karel.getDirection(), sqSize);\n\t\t} else {\n\t\t\tif (color == null && nBeepers == 0)\n\t\t\t\tdrawCornerMarker(g, cx, cy);\n\t\t}\n\t}\n\n\tpublic static void drawMarkedCorner(Graphics g, int x, int y, int size) {\n\t\tif (g == null)\n\t\t\treturn;\n\t\tint inset = Math.max(2, size / 5);\n\t\tg.setColor(Color.WHITE);\n\t\tg.fillRect(x, y, size, size);\n\t\tg.setColor(MARKED_COLOR);\n\t\tg.fillRect(x + inset, y + inset, size - 2 * inset, size - 2 * inset);\n\t}\n\n\tpublic void drawKarel(Graphics g, int x, int y, int dir, int size) {\n\t\tif (g == null)\n\t\t\treturn;\n\t\tif (size < MIN_FANCY || getLook() == SIMPLE) {\n\t\t\tdrawSimpleKarel(g, x, y, dir, size);\n\t\t} else {\n\t\t\tdrawFancyKarel(g, x, y, dir, size, msKarel);\n\t\t}\n\t}\n\n\tpublic void drawSimpleKarel(Graphics g, int x, int y, int dir, int size) {\n\t\tif (g == null)\n\t\t\treturn;\n\t\tsize = (int) Math.round(size * SIMPLE_FRACTION);\n\t\tif (size % 2 == 0)\n\t\t\tsize--;\n\t\tint half = (size + 1) / 2;\n\t\tfor (int pass = 1; pass <= 2; pass++) {\n\t\t\tKarelRegion r = new KarelRegion();\n\t\t\tr.setOrigin(x, y, -half, -half, dir);\n\t\t\tr.addVector(half, 0, dir);\n\t\t\tr.addVector(half, half, dir);\n\t\t\tr.addVector(-half, half, dir);\n\t\t\tr.addVector(-half, 0, dir);\n\t\t\tr.addVector(0, -size, dir);\n\t\t\tif (pass == 1) {\n\t\t\t\tg.setColor(Color.WHITE);\n\t\t\t\tg.fillPolygon(r.getPolygon());\n\t\t\t} else {\n\t\t\t\tg.setColor(Color.BLACK);\n\t\t\t\tg.drawPolygon(r.getPolygon());\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic void drawFancyKarel(Graphics g, int x, int y, int dir, int size) {\n\t\tdrawFancyKarel(g, x, y, dir, size - KAREL_INSET, Color.WHITE);\n\t}\n\n\tpublic void drawFancyKarel(Graphics g, int x, int y, int dir, int size, boolean msKarel) {\n\t\tdrawFancyKarel(g, x, y, dir, size - KAREL_INSET, Color.WHITE, msKarel);\n\t}\n\n\tpublic static void drawFancyKarel(Graphics g, int x, int y, int dir,\n\t\t\tint size, Color color) {\n\t\tdrawFancyKarel(g, x, y, dir, size, color, /* msKarel */ false);\n\t}\n\t\n\tpublic static void drawFancyKarel(Graphics g, int x, int y, int dir,\n\t\t\tint size, Color color, boolean msKarel) {\n\t\tif (g == null) {\n\t\t\treturn;\n\t\t}\n\t\tfor (int pass = 1; pass <= 2; pass++) {\n\t\t\tKarelRegion r = new KarelRegion();\n\t\t\tr.setOrigin(x, y, BODY_OFFSET_X * size, BODY_OFFSET_Y * size\n\t\t\t\t\t+ LOWER_NOTCH * size, dir);\n\t\t\tint sx = r.getCurrentX();\n\t\t\tint sy = r.getCurrentY();\n\t\t\t\n\t\t\t// Karel's body outline\n\t\t\tColor bodyColor = (pass == 1) ? color : Color.BLACK;\n\t\t\tg.setColor(bodyColor);\n\t\t\tr.addVector(0, BODY_HEIGHT * size - LOWER_NOTCH * size, dir);\n\t\t\tr.addVector(BODY_WIDTH * size - UPPER_NOTCH * size, 0, dir);\n\t\t\tr.addVector(UPPER_NOTCH * size, -UPPER_NOTCH * size, dir);\n\t\t\tr.addVector(0, -(BODY_HEIGHT * size - UPPER_NOTCH * size), dir);\n\t\t\tr.addVector(-(BODY_WIDTH * size - LOWER_NOTCH * size), 0, dir);\n\t\t\tr.addVector(-LOWER_NOTCH * size, LOWER_NOTCH * size, dir);\n\t\t\tif (pass == 1) {\n\t\t\t\tr.getPolygon().addPoint(sx, sy);\n\t\t\t\tr.addVector((SCREEN_OFFSET_X - BODY_OFFSET_X) * size,\n\t\t\t\t\t\t(SCREEN_OFFSET_Y - BODY_OFFSET_Y - LOWER_NOTCH) * size,\n\t\t\t\t\t\tdir);\n\t\t\t} else {\n\t\t\t\tg.drawPolygon(r.getPolygon());\n\t\t\t\tr = new KarelRegion();\n\t\t\t\tr.setOrigin(sx, sy, (SCREEN_OFFSET_X - BODY_OFFSET_X) * size,\n\t\t\t\t\t\t(SCREEN_OFFSET_Y - BODY_OFFSET_Y - LOWER_NOTCH) * size,\n\t\t\t\t\t\tdir);\n\t\t\t}\n\t\t\t\n\t\t\t// monitor outline\n\t\t\tr.addVector(SCREEN_WIDTH * size, 0, dir);\n\t\t\tr.addVector(0, SCREEN_HEIGHT * size, dir);\n\t\t\tr.addVector(-SCREEN_WIDTH * size, 0, dir);\n\t\t\tr.addVector(0, -SCREEN_HEIGHT * size, dir);\n\t\t\tif (pass == 1) {\n\t\t\t\tr.getPolygon().addPoint(sx, sy);\n\t\t\t\tg.fillPolygon(r.getPolygon());\n\t\t\t\tr = new KarelRegion();\n\t\t\t\tr.setOrigin(sx, sy, (SCREEN_OFFSET_X - BODY_OFFSET_X) * size\n\t\t\t\t\t\t- 1, (SCREEN_OFFSET_Y - BODY_OFFSET_Y - LOWER_NOTCH)\n\t\t\t\t\t\t* size - 1, dir);\n\t\t\t\tr.addVector(SCREEN_WIDTH * size + 2, 0, dir);\n\t\t\t\tr.addVector(0, SCREEN_HEIGHT * size + 2, dir);\n\t\t\t\tr.addVector(-(SCREEN_WIDTH * size + 2), 0, dir);\n\t\t\t\tr.addVector(0, -(SCREEN_HEIGHT * size + 2), dir);\n\t\t\t\tg.drawPolygon(r.getPolygon());\n\t\t\t} else {\n\t\t\t\tg.drawPolygon(r.getPolygon());\n\t\t\t}\n\t\t\t\n\t\t\tif (msKarel && pass == 2) {\n\t\t\t\tKarelRegion bow = new KarelRegion(Color.BLACK, Color.RED);\n\t\t\t\tint bowWidth = (int) (BODY_WIDTH * size / 4);\n\t\t\t\tint bowHeight = (int) (BODY_WIDTH * size / 4);\n\t\t\t\tdouble bowX = SCREEN_OFFSET_X * size + SCREEN_WIDTH/2 * size - bowWidth/2;\n\t\t\t\tdouble bowY = (SCREEN_OFFSET_Y - BODY_OFFSET_Y) * size;\n\t\t\t\tint triangleSize = bowWidth;\n\t\t\t\t\n\t\t\t\tbow.setOrigin(x, y, bowX, bowY, dir);\n\t\t\t\tbow.addVector(bowWidth, 0, dir);\n\t\t\t\tbow.addVector(0, bowHeight, dir);\n\t\t\t\tbow.addVector(-bowWidth, 0, dir);\n\t\t\t\tbow.addVector(0, -bowHeight, dir);\n\t\t\t\t\n\t\t\t\tKarelRegion triangle1 = new KarelRegion(Color.BLACK, Color.RED);\n\t\t\t\ttriangle1.setOrigin(x, y, bowX, bowY + bowHeight/2, dir);\n\t\t\t\ttriangle1.addVector(-triangleSize, -triangleSize/2, dir);\n\t\t\t\ttriangle1.addVector(0, triangleSize, dir);\n\t\t\t\ttriangle1.addVector(triangleSize, -triangleSize/2, dir);\n\n\t\t\t\tKarelRegion triangle2 = new KarelRegion(Color.BLACK, Color.RED);\n\t\t\t\ttriangle2.setOrigin(x, y, bowX + bowWidth, bowY + bowHeight/2, dir);\n\t\t\t\ttriangle2.addVector(triangleSize, triangleSize/2, dir);\n\t\t\t\ttriangle2.addVector(0, -triangleSize, dir);\n\t\t\t\ttriangle2.addVector(-triangleSize, triangleSize/2, dir);\n\n\t\t\t\ttriangle1.draw(g);\n\t\t\t\ttriangle2.draw(g);\n\t\t\t\tbow.draw(g);\n\t\t\t}\n\t\t}\n\t\t\n\t\t// little line slot for disk\n\t\tdouble SLOT_REAL_WIDTH = SLOT_WIDTH;\n\t\tif (msKarel) {\n\t\t\t// \"lipstick\"\n\t\t\tdouble LIP_HEIGHT = 0.07;\n\t\t\tSLOT_REAL_WIDTH *= 1.8;       // widen lips\n\t\t\t\n\t\t\tKarelRegion lips = new KarelRegion(Color.BLACK, Color.RED);\n\t\t\tlips.setOrigin(x, y, SCREEN_OFFSET_X * size + SCREEN_WIDTH * size,\n\t\t\t\t\t(SCREEN_OFFSET_Y * size + BODY_OFFSET_Y * size) / 2, dir);\n\t\t\tlips.addVector(-SLOT_REAL_WIDTH * size/2, -LIP_HEIGHT * size, dir);\n\t\t\tlips.addVector(-SLOT_REAL_WIDTH * size/2, LIP_HEIGHT * size, dir);\n\t\t\tlips.addVector(SLOT_REAL_WIDTH * size/2, LIP_HEIGHT * size, dir);\n\t\t\tlips.addVector(SLOT_REAL_WIDTH * size/2, -LIP_HEIGHT * size, dir);\n\t\t\tlips.draw(g);\n\t\t}\n\t\t\n\t\tKarelRegion r = new KarelRegion();\n\t\tr.setOrigin(x, y, SCREEN_OFFSET_X * size + SCREEN_WIDTH * size,\n\t\t\t\t(SCREEN_OFFSET_Y * size + BODY_OFFSET_Y * size) / 2, dir);\n\t\tr.addVector(-SLOT_REAL_WIDTH * size, 0, dir);\n\t\tg.setColor(Color.BLACK);\n\t\tg.drawPolygon(r.getPolygon());\n\t\t\n\t\tr = new KarelRegion();\n\t\tr.setOrigin(x, y, BODY_OFFSET_X * size, SCREEN_OFFSET_Y * size, dir);\n\t\t\n\t\t// Karel's feet\n\t\tr.addVector(-(UPPER_ANKLE * size + FOOT_WIDTH * size), 0, dir);\n\t\tr.addVector(0, -FOOT_LENGTH * size, dir);\n\t\tr.addVector(FOOT_WIDTH * size, 0, dir);\n\t\tr.addVector(0, FOOT_LENGTH * size - FOOT_WIDTH * size, dir);\n\t\tr.addVector(UPPER_ANKLE * size, 0, dir);\n\t\tr.addVector(0, FOOT_WIDTH * size, dir);\n\t\tg.fillPolygon(r.getPolygon());\n\t\tg.drawPolygon(r.getPolygon());\n\t\tr = new KarelRegion();\n\t\tr.setOrigin(x, y, SCREEN_OFFSET_X * size + SCREEN_WIDTH * size\n\t\t\t\t- SLOT_WIDTH * size, BODY_OFFSET_Y * size, dir);\n\t\tr.addVector(0, -(LOWER_ANKLE * size + FOOT_WIDTH * size), dir);\n\t\tr.addVector(FOOT_LENGTH * size, 0, dir);\n\t\tr.addVector(0, FOOT_WIDTH * size, dir);\n\t\tr.addVector(-(FOOT_LENGTH * size - FOOT_WIDTH * size), 0, dir);\n\t\tr.addVector(0, LOWER_ANKLE * size, dir);\n\t\tr.addVector(-FOOT_WIDTH * size, 0, dir);\n\t\tg.fillPolygon(r.getPolygon());\n\t\tg.drawPolygon(r.getPolygon());\n\t}\n\n\tpublic void drawBeeperForStyle(Graphics g, int x, int y, int size, int n,\n\t\t\tint border) {\n\t\tString label = \"\";\n\t\tif (size > MIN_LABEL && (displayOneFlag || n != 1)) {\n\t\t\tlabel = beeperLabel(n);\n\t\t}\n\t\tdrawBeeper(g, x, y, size, label, border, this);\n\t}\n\n\tpublic static void drawBeeper(Graphics g, int x, int y, int size, int n,\n\t\t\tint border, Component comp) {\n\t\tif (g == null)\n\t\t\treturn;\n\t\tint beeperSize = (int) Math.round(size * BEEPER_FRACTION);\n\t\tif (beeperSize % 2 == 0)\n\t\t\tbeeperSize--;\n\t\tint half = (beeperSize + 1) / 2;\n\t\tKarelRegion r = new KarelRegion();\n\t\tr.setOrigin(x, y, 0, -half, EAST);\n\t\tr.addVector(half, half, EAST);\n\t\tr.addVector(-half, half, EAST);\n\t\tr.addVector(-half, -half, EAST);\n\t\tr.addVector(half, -half, EAST);\n\t\tg.setColor(BEEPER_COLOR);\n\t\tg.fillPolygon(r.getPolygon());\n\t\tg.drawPolygon(r.getPolygon());\n\t\tg.setColor(Color.BLACK);\n\t\tfor (int i = 0; i < border; i++) {\n\t\t\tint delta = half + i;\n\t\t\tg.drawLine(x - delta, y, x, y + delta);\n\t\t\tg.drawLine(x, y + delta, x + delta, y);\n\t\t\tg.drawLine(x + delta, y, x, y - delta);\n\t\t\tg.drawLine(x, y - delta, x - delta, y);\n\t\t}\n\t\tif (size > MIN_LABEL && n != 1) {\n\t\t\tlabelBeeper(g, x, y, size, beeperLabel(n), comp);\n\t\t}\n\t}\n\n\tpublic static void drawBeeper(Graphics g, int x, int y, int size,\n\t\t\tString label, int border, Component comp) {\n\t\tif (g == null)\n\t\t\treturn;\n\t\tint beeperSize = (int) Math.round(size * BEEPER_FRACTION);\n\t\tif (beeperSize % 2 == 0)\n\t\t\tbeeperSize--;\n\t\tint half = (beeperSize + 1) / 2;\n\t\tKarelRegion r = new KarelRegion();\n\t\tr.setOrigin(x, y, 0, -half, EAST);\n\t\tr.addVector(half, half, EAST);\n\t\tr.addVector(-half, half, EAST);\n\t\tr.addVector(-half, -half, EAST);\n\t\tr.addVector(half, -half, EAST);\n\t\tg.setColor(BEEPER_COLOR);\n\t\tg.fillPolygon(r.getPolygon());\n\t\tg.drawPolygon(r.getPolygon());\n\t\tg.setColor(Color.BLACK);\n\t\tfor (int i = 0; i < border; i++) {\n\t\t\tint delta = half + i;\n\t\t\tg.drawLine(x - delta, y, x, y + delta);\n\t\t\tg.drawLine(x, y + delta, x + delta, y);\n\t\t\tg.drawLine(x + delta, y, x, y - delta);\n\t\t\tg.drawLine(x, y - delta, x - delta, y);\n\t\t}\n\t\tlabelBeeper(g, x, y, size, label, comp);\n\t}\n\n\tpublic static void labelBeeper(Graphics g, int x, int y, int size,\n\t\t\tString label, Component comp) {\n\t\tif (label.equals(\"�\")) {\n\t\t\tif (infinityImage == null) {\n\t\t\t\tinfinityImage = MediaTools.createImage(INFINITY);\n\t\t\t}\n\t\t\tg.drawImage(infinityImage, x - 4, y - 2, comp);\n\t\t} else {\n\t\t\tint psz = 7;\n\t\t\tswitch (label.length()) {\n\t\t\tcase 1:\n\t\t\tcase 2:\n\t\t\t\tpsz = BEEPER_NUMBER_FONT.getSize();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tpsz = 8;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tFont font = new Font(BEEPER_FONT_FAMILY, Font.PLAIN, psz);\n\t\t\tg.setFont(font);\n\t\t\tFontMetrics fm = g.getFontMetrics();\n\t\t\tg.drawString(label, x - fm.stringWidth(label) / 2,\n\t\t\t\t\ty + fm.getAscent() / 2);\n\t\t}\n\t}\n\n\tpublic static String beeperLabel(int n) {\n\t\tswitch (n) {\n\t\tcase INFINITE:\n\t\t\treturn \"�\";\n\t\tcase PLUS1:\n\t\t\treturn \"+1\";\n\t\tcase MINUS1:\n\t\t\treturn \"-1\";\n\t\tcase BLANKB:\n\t\t\treturn \"\";\n\t\tdefault:\n\t\t\treturn \"\" + n;\n\t\t}\n\t}\n\n\tpublic void updateWalls(Graphics g, Point pt) {\n\t\tif (g == null)\n\t\t\treturn;\n\t\tif (outOfBounds(pt))\n\t\t\treturn;\n\t\tint x = leftMargin + (pt.x - 1) * sqSize;\n\t\tint y = getSize().height - bottomMargin - 1 - pt.y * sqSize;\n\t\tg.setColor(Color.BLACK);\n\t\tfor (int dir = NORTH; dir <= WEST; dir++) {\n\t\t\tif (checkWall(pt, dir))\n\t\t\t\tdrawWall(g, x, y, dir);\n\t\t\tif (sqSize < DOUBLE_WALL_THRESHOLD)\n\t\t\t\tfixCornerPoint(g, pt, dir);\n\t\t}\n\t}\n\n\tprivate void drawWall(Graphics g, int x, int y, int dir) {\n\t\tif (g == null)\n\t\t\treturn;\n\t\tint x0, y0, x1, y1;\n\t\tswitch (dir) {\n\t\tcase NORTH:\n\t\t\tx0 = x;\n\t\t\ty0 = y;\n\t\t\tx1 = x0 + sqSize;\n\t\t\ty1 = y0;\n\t\t\tbreak;\n\t\tcase EAST:\n\t\t\tx0 = x + sqSize;\n\t\t\ty0 = y;\n\t\t\tx1 = x0;\n\t\t\ty1 = y0 + sqSize;\n\t\t\tbreak;\n\t\tcase SOUTH:\n\t\t\tx0 = x;\n\t\t\ty0 = y + sqSize;\n\t\t\tx1 = x0 + sqSize;\n\t\t\ty1 = y0;\n\t\t\tbreak;\n\t\tcase WEST:\n\t\t\tx0 = x;\n\t\t\ty0 = y;\n\t\t\tx1 = x0;\n\t\t\ty1 = y0 + sqSize;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tx0 = y0 = x1 = y1 = 0;\n\t\t\tbreak;\n\t\t}\n\t\tif (sqSize < DOUBLE_WALL_THRESHOLD) {\n\t\t\tg.drawLine(x0 - 1, y0 - 1, x1 - 1, y1 - 1);\n\t\t} else {\n\t\t\tif (x0 == x1) {\n\t\t\t\tg.drawLine(x0 - 1, y0 - 1, x1 - 1, y1);\n\t\t\t\tg.drawLine(x0, y0 - 1, x1, y1);\n\t\t\t} else {\n\t\t\t\tg.drawLine(x0 - 1, y0 - 1, x1, y1 - 1);\n\t\t\t\tg.drawLine(x0 - 1, y0, x1, y1);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic void drawCornerMarker(Graphics g, int x, int y) {\n\t\tif (g == null)\n\t\t\treturn;\n\t\tg.setColor(Color.BLACK);\n\t\tif (sqSize < CROSS_THRESHOLD) {\n\t\t\tg.drawLine(x, y, x, y);\n\t\t} else {\n\t\t\tg.drawLine(x - 1, y, x + 1, y);\n\t\t\tg.drawLine(x, y - 1, x, y + 1);\n\t\t}\n\t}\n\n\tprivate void fixCornerPoint(Graphics g, Point pt, int dir) {\n\t\tint left = leftFrom(dir);\n\t\tPoint pUp = adjacentPoint(pt, dir);\n\t\tPoint pLeft = adjacentPoint(pt, left);\n\t\tif (!outOfBounds(pUp) && checkWall(pUp, left)) {\n\t\t\tint x = leftMargin + (pUp.x - 1) * sqSize;\n\t\t\tint y = getSize().height - bottomMargin - 1 - pUp.y * sqSize;\n\t\t\tdrawWall(g, x, y, left);\n\t\t} else if (!outOfBounds(pLeft) && checkWall(pLeft, dir)) {\n\t\t\tint x = leftMargin + (pLeft.x - 1) * sqSize;\n\t\t\tint y = getSize().height - bottomMargin - 1 - pLeft.y * sqSize;\n\t\t\tdrawWall(g, x, y, dir);\n\t\t}\n\t}\n\n\tprivate Rectangle getCornerRect(Point pt) {\n\t\tint x = leftMargin + (pt.x - 1) * sqSize;\n\t\tint y = getSize().height - bottomMargin - 1 - pt.y * sqSize;\n\t\treturn new Rectangle(x - 1, y - 1, sqSize + 2, sqSize + 2);\n\t}\n\n\t/* File saving */\n\n\tpublic void save() {\n\t\tif (pathname == null)\n\t\t\treturn;\n\t\tPoint pt = new Point(0, 0);\n\t\ttry {\n\t\t\tPrintWriter wr = new PrintWriter(new FileWriter(pathname));\n\t\t\twr.println(\"Dimension: (\" + cols + \", \" + rows + \")\");\n\t\t\tfor (pt.x = 1; pt.x <= cols; pt.x++) {\n\t\t\t\tfor (pt.y = 1; pt.y <= rows; pt.y++) {\n\t\t\t\t\tif (pt.x > 1 && checkWall(pt, WEST)) {\n\t\t\t\t\t\twr.println(\"Wall: (\" + pt.x + \", \" + pt.y + \") west\");\n\t\t\t\t\t}\n\t\t\t\t\tif (pt.y > 1 && checkWall(pt, SOUTH)) {\n\t\t\t\t\t\twr.println(\"Wall: (\" + pt.x + \", \" + pt.y + \") south\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (pt.x = 1; pt.x <= cols; pt.x++) {\n\t\t\t\tfor (pt.y = 1; pt.y <= rows; pt.y++) {\n\t\t\t\t\tColor color = getCornerColor(pt);\n\t\t\t\t\tif (color != null) {\n\t\t\t\t\t\twr.println(\"Color: (\" + pt.x + \", \" + pt.y + \") \"\n\t\t\t\t\t\t\t\t+ encodeColor(color));\n\t\t\t\t\t}\n\t\t\t\t\tint nBeepers = getBeepersOnCorner(pt);\n\t\t\t\t\tif (nBeepers != 0) {\n\t\t\t\t\t\tString str = (nBeepers == INFINITE) ? \"INFINITE\" : \"\"\n\t\t\t\t\t\t\t\t+ nBeepers;\n\t\t\t\t\t\twr.println(\"Beeper: (\" + pt.x + \", \" + pt.y + \") \"\n\t\t\t\t\t\t\t\t+ str);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tIterator<Karel> iterator = karels.iterator();\n\t\t\twhile (iterator.hasNext()) {\n\t\t\t\tKarel karel = iterator.next();\n\t\t\t\tString dirName = \"Error\";\n\t\t\t\tswitch (karel.getDirection()) {\n\t\t\t\tcase NORTH:\n\t\t\t\t\tdirName = \"north\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase EAST:\n\t\t\t\t\tdirName = \"east\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase SOUTH:\n\t\t\t\t\tdirName = \"south\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase WEST:\n\t\t\t\t\tdirName = \"west\";\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tPoint loc = karel.getLocation();\n\t\t\t\twr.println(\"Karel: (\" + loc.x + \", \" + loc.y + \") \" + dirName);\n\t\t\t\tint nBeepers = karel.getBeepersInBag();\n\t\t\t\tString str = (nBeepers == INFINITE) ? \"INFINITE\" : \"\"\n\t\t\t\t\t\t+ nBeepers;\n\t\t\t\tif (getKarelCount() == 1) {\n\t\t\t\t\twr.println();\n\t\t\t\t\twr.println(\"BeeperBag: \" + str);\n\t\t\t\t} else {\n\t\t\t\t\twr.println(\" \" + str);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (monitor != null) {\n\t\t\t\twr.println(\"Speed: \" + speedFormat.format(monitor.getSpeed()));\n\t\t\t}\n\t\t\twr.close();\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(\"\" + ex);\n\t\t}\n\t\tPlatform.setFileTypeAndCreator(pathname, \"TEXT\", \"CWIE\");\n\t}\n\n\t/* File loading */\n\n\tpublic void load(String lines[]) {\n\t\tString program = \"\";\n\t\tfor (int i = 0; i < lines.length; i++) {\n\t\t\tprogram += lines[i] + '\\n';\n\t\t}\n\t\tload(new StringReader(program));\n\t}\n\n\tpublic void load(File file) {\n\t\ttry {\n\t\t\tpathname = file.getPath();\n\t\t\tReader rd = new FileReader(file);\n\t\t\tload(rd);\n\t\t\trd.close();\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(\"I/O error reading map file\");\n\t\t}\n\t}\n\n\tpublic void load(String pathname) {\n\t\ttry {\n\t\t\tthis.pathname = pathname;\n\t\t\tReader rd = new FileReader(pathname);\n\t\t\tload(rd);\n\t\t\trd.close();\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(\"I/O error reading map file\");\n\t\t}\n\t}\n\n\tpublic void load(Reader rd) {\n\t\ttry {\n\t\t\tsetRepaintFlag(false);\n\t\t\tlastBeeperCount = INFINITE;\n\t\t\ttokenizer = new StreamTokenizer(rd);\n\t\t\ttokenizer.eolIsSignificant(true);\n\t\t\ttokenizer.lowerCaseMode(true);\n\t\t\ttokenizer.resetSyntax();\n\t\t\ttokenizer.wordChars('A', 'Z');\n\t\t\ttokenizer.wordChars('a', 'z');\n\t\t\ttokenizer.wordChars('0', '9');\n\t\t\ttokenizer.wordChars('.', '.');\n\t\t\ttokenizer.wordChars('_', '_');\n\t\t\ttokenizer.whitespaceChars(' ', ' ');\n\t\t\ttokenizer.whitespaceChars('\\t', '\\t');\n\t\t\ttokenizer.whitespaceChars('\\r', '\\r');\n\t\t\twhile (readMapLine()) {\n\t\t\t\t/* Empty */\n\t\t\t}\n\t\t\trd.close();\n\t\t\tsetRepaintFlag(true);\n\t\t\trepaint();\n\t\t} catch (IOException ex) {\n\t\t\tsetRepaintFlag(true);\n\t\t\tthrow new ErrorException(\"I/O error reading map file\");\n\t\t}\n\t}\n\t\n\tpublic void setMsKarel(boolean value) {\n\t\tthis.msKarel = value;\n\t\trepaint();\n\t}\n\n\tprivate boolean readMapLine() {\n\t\tint token = nextToken();\n\t\tswitch (token) {\n\t\tcase StreamTokenizer.TT_EOF:\n\t\t\treturn false;\n\t\tcase StreamTokenizer.TT_EOL:\n\t\t\treturn true;\n\t\tcase StreamTokenizer.TT_WORD:\n\t\t\tString cmd = tokenizer.sval;\n\t\t\tif (nextToken() != ':') {\n\t\t\t\tthrow new ErrorException(\"Missing colon after \" + cmd);\n\t\t\t}\n\t\t\tif (cmd.equals(\"dimension\")) {\n\t\t\t\tdimensionCommand();\n\t\t\t} else if (cmd.equals(\"karel\") || cmd.equals(\"turtle\")) {\n\t\t\t\tkarelCommand();\n\t\t\t} else if (cmd.equals(\"wall\")) {\n\t\t\t\twallCommand();\n\t\t\t} else if (cmd.equals(\"mark\") || cmd.equals(\"color\")) {\n\t\t\t\tsetColorCommand();\n\t\t\t} else if (cmd.equals(\"speed\")) {\n\t\t\t\tspeedCommand();\n\t\t\t} else if (cmd.equals(\"beeper\")) {\n\t\t\t\tbeeperCommand();\n\t\t\t} else if (cmd.equals(\"beeperbag\")) {\n\t\t\t\tbeeperBagCommand();\n\t\t\t} else {\n\t\t\t\tthrow new ErrorException(\"Illegal command: \" + cmd);\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow new ErrorException(\"Illegal character '\" + (char) token + \"'\");\n\t\t}\n\t\treturn (true);\n\t}\n\n\tprivate void dimensionCommand() {\n\t\tverifyToken('(');\n\t\tint cols = scanInt();\n\t\tverifyToken(',');\n\t\tint rows = scanInt();\n\t\tverifyToken(')');\n\t\tverifyToken(StreamTokenizer.TT_EOL);\n\t\tinit(cols, rows);\n\t}\n\n\tprivate void karelCommand() {\n\t\tPoint pt = new Point(0, 0);\n\t\tint dir = EAST;\n\t\tint nBeepers = lastBeeperCount;\n\t\tverifyToken('(');\n\t\tpt.x = scanInt();\n\t\tverifyToken(',');\n\t\tpt.y = scanInt();\n\t\tverifyToken(')');\n\t\tif (nextToken() != StreamTokenizer.TT_WORD) {\n\t\t\tthrow new ErrorException(\"Illegal direction\");\n\t\t}\n\t\tif (\"north\".startsWith(tokenizer.sval)) {\n\t\t\tdir = NORTH;\n\t\t} else if (\"east\".startsWith(tokenizer.sval)) {\n\t\t\tdir = EAST;\n\t\t} else if (\"south\".startsWith(tokenizer.sval)) {\n\t\t\tdir = SOUTH;\n\t\t} else if (\"west\".startsWith(tokenizer.sval)) {\n\t\t\tdir = WEST;\n\t\t} else {\n\t\t\tthrow new ErrorException(\"Illegal direction \" + tokenizer.sval);\n\t\t}\n\t\tint token = nextToken();\n\t\tif (token == StreamTokenizer.TT_WORD) {\n\t\t\tif (\"infinite\".startsWith(tokenizer.sval)\n\t\t\t\t\t|| \"infinity\".startsWith(tokenizer.sval)) {\n\t\t\t\tnBeepers = INFINITE;\n\t\t\t} else {\n\t\t\t\ttry {\n\t\t\t\t\tnBeepers = Integer.parseInt(tokenizer.sval);\n\t\t\t\t} catch (NumberFormatException ex) {\n\t\t\t\t\tthrow new ErrorException(\"Illegal beeper bag value\");\n\t\t\t\t}\n\t\t\t}\n\t\t\ttoken = nextToken();\n\t\t}\n\t\tif (token != StreamTokenizer.TT_EOL) {\n\t\t\tthrow new ErrorException(\"Unexpected tokens at end of line\");\n\t\t}\n\t\tlastKarel = getKarel();\n\t\tif (lastKarel != null) {\n\t\t\tlastKarel.setLocation(pt.x, pt.y);\n\t\t\tlastKarel.setDirection(dir);\n\t\t\tlastKarel.setBeepersInBag(nBeepers);\n\t\t}\n\t}\n\n\tprivate void wallCommand() {\n\t\tPoint pt = new Point(0, 0);\n\t\tint dir = EAST;\n\t\tverifyToken('(');\n\t\tpt.x = scanInt();\n\t\tverifyToken(',');\n\t\tpt.y = scanInt();\n\t\tverifyToken(')');\n\t\tif (nextToken() != StreamTokenizer.TT_WORD) {\n\t\t\tthrow new ErrorException(\"Illegal direction\");\n\t\t}\n\t\tif (\"north\".startsWith(tokenizer.sval)) {\n\t\t\tdir = NORTH;\n\t\t} else if (\"east\".startsWith(tokenizer.sval)) {\n\t\t\tdir = EAST;\n\t\t} else if (\"south\".startsWith(tokenizer.sval)) {\n\t\t\tdir = SOUTH;\n\t\t} else if (\"west\".startsWith(tokenizer.sval)) {\n\t\t\tdir = WEST;\n\t\t} else {\n\t\t\tthrow new ErrorException(\"Illegal direction \" + tokenizer.sval);\n\t\t}\n\t\tverifyToken(StreamTokenizer.TT_EOL);\n\t\tsetWall(pt, dir);\n\t}\n\n\tprivate void setColorCommand() {\n\t\tPoint pt = new Point(0, 0);\n\t\tString colorName = null;\n\t\tverifyToken('(');\n\t\tpt.x = scanInt();\n\t\tverifyToken(',');\n\t\tpt.y = scanInt();\n\t\tverifyToken(')');\n\t\tint tt = nextToken();\n\t\tif (tt != StreamTokenizer.TT_EOL) {\n\t\t\tif (tt != StreamTokenizer.TT_WORD) {\n\t\t\t\tthrow new ErrorException(\"Missing color name\");\n\t\t\t}\n\t\t\tcolorName = tokenizer.sval.toLowerCase();\n\t\t\tverifyToken(StreamTokenizer.TT_EOL);\n\t\t}\n\t\tsetCornerColor(pt, decodeColor(colorName));\n\t}\n\n\tprivate void speedCommand() {\n\t\tif (nextToken() != StreamTokenizer.TT_WORD) {\n\t\t\tthrow new ErrorException(\"I expected a number\");\n\t\t}\n\t\tdouble speed = new Double(tokenizer.sval).doubleValue();\n\t\tverifyToken(StreamTokenizer.TT_EOL);\n\t\tif (monitor != null)\n\t\t\tmonitor.setSpeed(speed);\n\t}\n\n\tprotected void beeperBagCommand() {\n\t\tif (nextToken() != StreamTokenizer.TT_WORD) {\n\t\t\tthrow new ErrorException(\"Illegal beeper count\");\n\t\t}\n\t\tint nBeepers = 0;\n\t\tif (\"infinite\".startsWith(tokenizer.sval)\n\t\t\t\t|| \"infinity\".startsWith(tokenizer.sval)) {\n\t\t\tnBeepers = INFINITE;\n\t\t} else {\n\t\t\ttokenizer.pushBack();\n\t\t\tnBeepers = scanInt();\n\t\t}\n\t\tverifyToken(StreamTokenizer.TT_EOL);\n\t\tif (lastKarel == null) {\n\t\t\tlastBeeperCount = nBeepers;\n\t\t} else {\n\t\t\tlastKarel.setBeepersInBag(nBeepers);\n\t\t}\n\t}\n\n\tprotected void beeperCommand() {\n\t\tPoint pt = new Point(0, 0);\n\t\t// int dir = EAST;\n\t\tverifyToken('(');\n\t\tpt.x = scanInt();\n\t\tverifyToken(',');\n\t\tpt.y = scanInt();\n\t\tverifyToken(')');\n\t\tint nBeepers = 1;\n\t\tint token = nextToken();\n\t\tif (token != StreamTokenizer.TT_EOL) {\n\t\t\tif (token != StreamTokenizer.TT_WORD) {\n\t\t\t\tthrow new ErrorException(\"Illegal beeper count\");\n\t\t\t}\n\t\t\tif (\"infinite\".startsWith(tokenizer.sval)\n\t\t\t\t\t|| \"infinity\".startsWith(tokenizer.sval)) {\n\t\t\t\tnBeepers = INFINITE;\n\t\t\t} else {\n\t\t\t\ttokenizer.pushBack();\n\t\t\t\tnBeepers = scanInt();\n\t\t\t}\n\t\t\tverifyToken(StreamTokenizer.TT_EOL);\n\t\t}\n\t\tsetBeepersOnCorner(pt, nBeepers);\n\t}\n\n\tprotected void ignoreCommand() {\n\t\twhile (nextToken() != StreamTokenizer.TT_EOL) {\n\t\t\t/* Empty */\n\t\t}\n\t}\n\n\tprivate void verifyToken(int token) {\n\t\tif (nextToken() != token) {\n\t\t\tif (token == StreamTokenizer.TT_EOL) {\n\t\t\t\tthrow new ErrorException(\"Unexpected tokens at end of line\");\n\t\t\t}\n\t\t\tthrow new ErrorException(\"I expected a '\" + (char) token + \"'\");\n\t\t}\n\t}\n\n\tprivate int scanInt() {\n\t\tif (nextToken() != StreamTokenizer.TT_WORD) {\n\t\t\tthrow new ErrorException(\"I expected an integer\");\n\t\t}\n\t\ttry {\n\t\t\treturn Integer.parseInt(tokenizer.sval);\n\t\t} catch (NumberFormatException ex) {\n\t\t\tthrow new ErrorException(\"Illegal integer\");\n\t\t}\n\t}\n\n\tprivate int nextToken() {\n\t\tint token = 0;\n\t\ttry {\n\t\t\ttoken = tokenizer.nextToken();\n\t\t} catch (IOException ex) {\n\t\t\tthrow new ErrorException(\"Exception: \" + ex);\n\t\t}\n\t\tif (TOKEN_TRACE) {\n\t\t\tswitch (token) {\n\t\t\tcase StreamTokenizer.TT_EOF:\n\t\t\t\tSystem.out.println(\"<EOF>\");\n\t\t\t\tbreak;\n\t\t\tcase StreamTokenizer.TT_EOL:\n\t\t\t\tSystem.out.println();\n\t\t\t\tbreak;\n\t\t\tcase StreamTokenizer.TT_WORD:\n\t\t\t\tSystem.out.print(tokenizer.sval + \" \");\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tSystem.out.print((char) token + \" \");\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn ((token == '\\n') ? StreamTokenizer.TT_EOL : token);\n\t}\n\n\tprivate static class Corner {\n\t\tpublic Color color;\n\t\tpublic boolean wallSouth;\n\t\tpublic boolean wallWest;\n\t\tpublic int nBeepers;\n\t}\n\n\tprivate static class KarelRegion {\n\t\tpublic static final double EPSILON = 0.00000000001;\n\n\t\t/* Private state */\n\t\tprivate Polygon p;\n\t\tprivate Color outline;\n\t\tprivate Color fill;\n\t\tprivate double x;\n\t\tprivate double y;\n\n\t\tpublic KarelRegion() {\n\t\t\tp = new Polygon();\n\t\t\tx = y = 0;\n\t\t}\n\n\t\tpublic KarelRegion(Color outline, Color fill) {\n\t\t\tthis();\n\t\t\tthis.outline = outline;\n\t\t\tthis.fill = fill;\n\t\t}\n\n\t\tpublic void draw(Graphics g) {\n\t\t\tColor old = g.getColor();\n\t\t\tif (fill != null) {\n\t\t\t\tg.setColor(fill);\n\t\t\t\tg.fillPolygon(p);\n\t\t\t}\n\t\t\tif (outline != null) {\n\t\t\t\tg.setColor(outline);\n\t\t\t}\n\t\t\tg.drawPolygon(p);\n\t\t\tg.setColor(old);\n\t\t}\n\t\t\n\t\tpublic Polygon getPolygon() {\n\t\t\treturn p;\n\t\t}\n\n\t\tpublic void setOrigin(int x, int y) {\n\t\t\tif (p.npoints != 0) {\n\t\t\t\tthrow new ErrorException(\"setOrigin called on nonempty region\");\n\t\t\t}\n\t\t\tthis.x = x;\n\t\t\tthis.y = y;\n\t\t}\n\n\t\tpublic void setOrigin(int x, int y, double dx, double dy, int dir) {\n\t\t\tsetOrigin(x, y);\n\t\t\taddVector(dx, dy, dir);\n\t\t}\n\n\t\tpublic void addVector(double dx, double dy, int dir) {\n\t\t\tx = getRotatedX(x, y, dx, dy, dir);\n\t\t\ty = getRotatedY(x, y, dx, dy, dir);\n\t\t\tp.addPoint((int) Math.round(x + EPSILON), (int) Math.round(y + EPSILON));\n\t\t}\n\t\t\n\t\tpublic static double getRotatedX(double originX, double originY, double dx, double dy, int dir) {\n\t\t\tswitch (dir) {\n\t\t\tcase KarelWorld.EAST:\n\t\t\t\treturn originX + dx;\n\t\t\tcase KarelWorld.NORTH:\n\t\t\t\treturn originX - dy;\n\t\t\tcase KarelWorld.WEST:\n\t\t\t\treturn originX - dx;\n\t\t\tcase KarelWorld.SOUTH:\n\t\t\t\treturn originX + dy;\n\t\t\tdefault:\n\t\t\t\treturn originX + dx;\n\t\t\t}\n\t\t}\n\n\t\tpublic static double getRotatedY(double originX, double originY, double dx, double dy, int dir) {\n\t\t\tswitch (dir) {\n\t\t\tcase KarelWorld.EAST:\n\t\t\t\treturn originY - dy;\n\t\t\tcase KarelWorld.NORTH:\n\t\t\t\treturn originY - dx;\n\t\t\tcase KarelWorld.WEST:\n\t\t\t\treturn originY + dy;\n\t\t\tcase KarelWorld.SOUTH:\n\t\t\t\treturn originY + dx;\n\t\t\tdefault:\n\t\t\t\treturn originY - dy;\n\t\t\t}\n\t\t}\n\n//\t\tpublic static void rotatePoint(Point origin, Point delta, int dir) {\n//\t\t\tint newX = (int) getRotatedX(origin.x, origin.y, delta.x, delta.y, dir);\n//\t\t\tint newY = (int) getRotatedY(origin.x, origin.y, delta.x, delta.y, dir);\n//\t\t\tdelta.x = newX;\n//\t\t\tdelta.y = newY;\n//\t\t}\n\n\t\tpublic int getCurrentX() {\n\t\t\treturn p.xpoints[p.npoints - 1];\n\t\t}\n\n\t\tpublic int getCurrentY() {\n\t\t\treturn p.ypoints[p.npoints - 1];\n\t\t}\n\t}\n\n\tprivate static class KarelWorldListener implements MouseListener,\n\t\t\tMouseMotionListener, ComponentListener {\n\n\t\tprivate KarelWorld world;\n\n\t\tpublic KarelWorldListener(KarelWorld world) {\n\t\t\tthis.world = world;\n\t\t}\n\n\t\tpublic void mousePressed(MouseEvent e) {\n\t\t\tworld.mousePressedHook(e);\n\t\t}\n\n\t\tpublic void mouseClicked(MouseEvent e) {\n\t\t}\n\n\t\tpublic void mouseReleased(MouseEvent e) {\n\t\t}\n\n\t\tpublic void mouseEntered(MouseEvent e) {\n\t\t}\n\n\t\tpublic void mouseExited(MouseEvent e) {\n\t\t}\n\n\t\tpublic void mouseDragged(MouseEvent e) {\n\t\t\tworld.mouseDraggedHook(e);\n\t\t}\n\n\t\tpublic void mouseMoved(MouseEvent e) {\n\t\t}\n\n\t\tpublic void componentResized(ComponentEvent e) {\n\t\t\tworld.componentResizedHook();\n\t\t}\n\n\t\tpublic void componentMoved(ComponentEvent e) {\n\t\t}\n\n\t\tpublic void componentShown(ComponentEvent e) {\n\t\t}\n\n\t\tpublic void componentHidden(ComponentEvent e) {\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/Karel/src/stanford/karel/KarelWorldEditor.java",
    "content": "/*\n * This file contains classes that implement the world editor.\n * - 2015/03/31: Changed to use Swing graphical components.\n */\n\npackage stanford.karel;\n\nimport acm.util.*;\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.util.*;\nimport javax.swing.*;\n\nclass KarelWorldEditor extends JComponent implements MouseListener {\n\t/* Private constants */\n\tprivate static String[] BEEPER_BAG = {\n\t\t\t\"47494638396123002F00D52000CBFFCB66330066660099999999993397976498\",\n\t\t\t\"3200986500CC9898323200CCCC98FFCC99CB9833CC9966333333643131643164\",\n\t\t\t\"CC660098CC98993333996633976464CCCCCCFFCBCBCB6533CC6666CCCC664444\",\n\t\t\t\"44646431DDDDDDCBFFFFFFFFCBEEEEEE777777888888AAAAAABBBBBB55555566\",\n\t\t\t\"6666440000320000910000910000910000910000910000910000910000910000\",\n\t\t\t\"9100009100009100009100009100009100009100009100009100009100009100\",\n\t\t\t\"0091000091000091000091000021F9040100001E002C0000000023002F004506\",\n\t\t\t\"FF408F70482C1A8FC8A4E7A3785428D007E7615228AF9F69E5C0E5620E182834\",\n\t\t\t\"C40929411C28664D6178BF847537CCA08429A147D1F1B4830F19737E5D6F6C62\",\n\t\t\t\"13254668057D62057F5E908415010A1F4A1F210E0E0F0E1B09280F2328091B0F\",\n\t\t\t\"A79B24574A080F1413141C014E96AB450A288C0C61111107BE847762091C4705\",\n\t\t\t\"097D727273070D6F0775116A150F0D441F01504F18056276616B5FE26C770561\",\n\t\t\t\"B61622260E010207D40F090D15B6469A9B2256460A229B0E66F5865CE0402AC0\",\n\t\t\t\"8904A71E0400C5E142402421BC75A300E221920F0A097561648082AA87253854\",\n\t\t\t\"A8D04B1AB077E00C256095A68FC93F6E0865F8468100850A280014F9D0C0891A\",\n\t\t\t\"FF68C19E11EA45E1801D07FA9630F2168E99A43FE40854C0A0F0929058DFA42E\",\n\t\t\t\"53F32D523843154C402862210D856E66ED74FBA2319C9D2805AE2028F5202897\",\n\t\t\t\"9169E23520D1C1A2DF800A4A7C4C42A244525B1D4A6C4A90C001070B23868070\",\n\t\t\t\"C0785389BE8039209C95D0714262871F7E3041CC5582130B1398B0FA57C88527\",\n\t\t\t\"136F3EE8E0B035916C8DF0D8BE75EA40802EB23820C0EC57C180BA810241ADF9\",\n\t\t\t\"00C500D14DB670E915CC8E9BB08393609432154A0492D5C1BDD3A3448314EF50\",\n\t\t\t\"BA482F0AC69BD107082A1A21512183390AD435561713A68283EC427400853985\",\n\t\t\t\"1C500001EFF8C15618ED3DF14076596C33C824FA8DB3C613D4D023C40710A401\",\n\t\t\t\"7F4E4D6C01156224604803450652B0868209DEE9E7A2206FD9F1C4064364E1CA\",\n\t\t\t\"3723EE32E15D776C034E08AC51900D1436C978873031A9275101E4090182905C\",\n\t\t\t\"39C2143336D55107060D04C0DA864E60F08459D22913941C0E2E90041E6671E0\",\n\t\t\t\"CE8B771D80480900D93240028F04C0C12415A481406DB675308004769A105010\",\n\t\t\t\"0021FF0B4D414347436F6E2004031039000000015772697474656E2062792047\",\n\t\t\t\"4946436F6E76657274657220322E342E33206F66204D6F6E6461792C204D6179\",\n\t\t\t\"2032352C2031393938003B\" };\n\tprivate static final int NORTH = KarelWorld.NORTH;\n\tprivate static final int EAST = KarelWorld.EAST;\n\tprivate static final int SOUTH = KarelWorld.SOUTH;\n\tprivate static final int WEST = KarelWorld.WEST;\n\tprivate static final int INFINITE = KarelWorld.INFINITE;\n\tprivate static final int PLUS1 = KarelWorld.PLUS1;\n\tprivate static final int MINUS1 = KarelWorld.MINUS1;\n\tprivate static final int WALL_TOOL = 1;\n\tprivate static final int COLOR_TOOL = 2;\n\tprivate static final int ROBOT_TOOL = 3;\n\tprivate static final int BEEPER_TOOL = 4;\n\tprivate static final int BEEPER_BAG_TOOL = 5;\n\tprivate static final int BIG_TOOL_SIZE = 20;\n\tprivate static final int COLOR_TOOL_SIZE = 12;\n\tprivate static final int KAREL_TOOL_SIZE = 28;\n\tprivate static final int BEEPER_TOOL_SIZE = 28;\n\tprivate static final int TOOL_SEP = 6;\n\tprivate static final int TOOL_Y_DELTA = 8;\n\t// private static final int TOOL_MARGIN = 20;\n\tprivate static final int TOOL_X = 8;\n\tprivate static final int TOOL_Y = 3;\n\t// private static final int LABEL_SEP = 5;\n\t// private static final int ROBOT_DELTA = 300;\n\t// private static final int ROBOT_SIZE = 22;\n\t// private static final int ROBOT_SEP = 15;\n\tprivate static final int SELECTED_PIXELS = 3;\n\tprivate static final int WALL_LENGTH = 12;\n\tprivate static final int BEEPER_BAG_WIDTH = 35;\n\tprivate static final int BEEPER_BAG_HEIGHT = 47;\n\tprivate static final int BAG_LABEL_DELTA_Y = 28;\n\tprivate static final int WIDTH = 7 * BIG_TOOL_SIZE + 10 * TOOL_SEP;\n\tprivate static final int HEIGHT = 3\n\t\t\t* (TOOL_Y + BIG_TOOL_SIZE + TOOL_Y_DELTA) + 3 * COLOR_TOOL_SIZE\n\t\t\t+ TOOL_Y_DELTA;\n\tprivate static final Color COLORS[] = { null, Color.BLACK, Color.DARK_GRAY,\n\t\t\tColor.GRAY, Color.LIGHT_GRAY, Color.WHITE, Color.RED, Color.PINK,\n\t\t\tColor.ORANGE, Color.YELLOW, Color.GREEN, Color.CYAN, Color.BLUE,\n\t\t\tColor.MAGENTA };\n\tprivate static final int NCOLORS = COLORS.length;\n\n\t/* Private state */\n\tprivate ArrayList<MapTool> tools;\n\tprivate KarelWorld world;\n\tprivate MapTool selectedTool;\n\tprivate MapTool oldTool;\n\tprivate MapTool beeperBagTool;\n\tprivate Image beeperBagImage;\n\n\tpublic KarelWorldEditor(KarelWorld world) {\n\t\tthis.world = world;\n\t\tinitEditorCanvas();\n\t\taddMouseListener(this);\n\t}\n\n\tpublic void initEditorCanvas() {\n\t\ttools = new ArrayList<MapTool>();\n\t\tint x = TOOL_X;\n\t\tint y = TOOL_Y;\n\t\tcreateWallTool(x, y, \"Draw Wall\");\n\t\tcreateWallTool(x += BIG_TOOL_SIZE + TOOL_SEP, y, \"Erase Wall\");\n\t\tcreateBeeperTool(x += BIG_TOOL_SIZE + 2 * TOOL_SEP, y, \"Single Beeper\",\n\t\t\t\t1);\n\t\tcreateBeeperTool(x += BIG_TOOL_SIZE + TOOL_SEP, y, \"Add Beeper\", PLUS1);\n\t\tcreateBeeperTool(x += BIG_TOOL_SIZE + TOOL_SEP, y, \"Subtract Beeper\",\n\t\t\t\tMINUS1);\n\t\tcreateBeeperTool(x += BIG_TOOL_SIZE + TOOL_SEP, y, \"Clear Beepers\", 0);\n\t\tcreateBeeperTool(x += BIG_TOOL_SIZE + TOOL_SEP, y, \"Infinite Beepers\",\n\t\t\t\tINFINITE);\n\t\tif (world.getKarelCount() == 1) {\n\t\t\tKarel karel = world.getKarel();\n\t\t\tx = TOOL_X;\n\t\t\ty += BIG_TOOL_SIZE + TOOL_Y_DELTA;\n\t\t\tcreateBeeperBagTool(x + 2 * KAREL_TOOL_SIZE + TOOL_SEP + 2\n\t\t\t\t\t* BIG_TOOL_SIZE, y);\n\t\t\tcreateKarelTool(x, y, \"East\", EAST);\n\t\t\tcreateKarelTool(x += KAREL_TOOL_SIZE, y, \"North\", NORTH);\n\t\t\tx = TOOL_X;\n\t\t\tcreateKarelTool(x, y + KAREL_TOOL_SIZE, \"West\", WEST);\n\t\t\tcreateKarelTool(x += KAREL_TOOL_SIZE, y + KAREL_TOOL_SIZE, \"South\",\n\t\t\t\t\tSOUTH);\n\t\t\tif (karel instanceof SuperKarel) {\n\t\t\t\tint x0 = TOOL_X + 2 * BIG_TOOL_SIZE + 2 * TOOL_SEP\n\t\t\t\t\t\t- COLOR_TOOL_SIZE;\n\t\t\t\tx = x0;\n\t\t\t\ty += Math.max(2 * KAREL_TOOL_SIZE, BEEPER_BAG_HEIGHT)\n\t\t\t\t\t\t+ TOOL_Y_DELTA;\n\t\t\t\tfor (int i = 0; i < NCOLORS; i++) {\n\t\t\t\t\tcreateColorTool(x += COLOR_TOOL_SIZE + TOOL_SEP, y,\n\t\t\t\t\t\t\tCOLOR_TOOL_SIZE, COLORS[i]);\n\t\t\t\t\tif (COLORS[i] == Color.RED) {\n\t\t\t\t\t\tx = x0;\n\t\t\t\t\t\ty += BIG_TOOL_SIZE;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tselectedTool = tools.get(0);\n\t}\n\n\tpublic Dimension getPreferredSize() {\n\t\treturn new Dimension(WIDTH, HEIGHT);\n\t}\n\n\tpublic MapTool getSelectedTool() {\n\t\treturn selectedTool;\n\t}\n\n\tpublic KarelWorld getWorld() {\n\t\treturn world;\n\t}\n\n\tpublic void drawTools(Graphics g) {\n\t\tIterator<MapTool> iterator = tools.iterator();\n\t\twhile (iterator.hasNext()) {\n\t\t\tdrawTool(g, (MapTool) iterator.next());\n\t\t}\n\t\tif (beeperBagTool != null)\n\t\t\tdrawBeeperBag(g);\n\t}\n\n\tpublic void drawKarelTool(Graphics g, MapTool tool) {\n\t\tworld.drawFancyKarel(g, tool.x + tool.size / 2, tool.y + tool.size / 2,\n\t\t\t\ttool.dir, tool.size);\n\t}\n\n\tpublic void drawBeeperTool(Graphics g, MapTool tool) {\n\t\tint border = (tool == getSelectedTool()) ? SELECTED_PIXELS : 1;\n\t\tKarelWorld.drawBeeper(g, tool.x + tool.size / 2,\n\t\t\t\ttool.y + tool.size / 2, BEEPER_TOOL_SIZE, tool.beeperDelta,\n\t\t\t\tborder, this);\n\t}\n\n\tpublic void drawBeeperBag(Graphics g) {\n\t\tint x = beeperBagTool.x;\n\t\tint y = beeperBagTool.y;\n\t\tif (beeperBagImage == null) {\n\t\t\tbeeperBagImage = MediaTools.createImage(BEEPER_BAG);\n\t\t}\n\t\tg.drawImage(beeperBagImage, beeperBagTool.x, beeperBagTool.y, this);\n\t\tx += BEEPER_BAG_WIDTH / 2;\n\t\ty += BAG_LABEL_DELTA_Y;\n\t\tKarel karel = world.getKarel();\n\t\tint nBeepers = (karel == null) ? 0 : karel.getBeepersInBag();\n\t\tKarelWorld.drawBeeper(g, x, y, BEEPER_TOOL_SIZE, nBeepers, 1, this);\n\t}\n\n\tpublic void defineTool(MapTool tool) {\n\t\ttools.add(tool);\n\t}\n\n\tpublic MapTool createWallTool(int x, int y, String label) {\n\t\tMapTool tool = new MapTool(WALL_TOOL, x, y, BIG_TOOL_SIZE);\n\t\ttool.label = label;\n\t\tdefineTool(tool);\n\t\treturn tool;\n\t}\n\n\tpublic MapTool createColorTool(int x, int y, int size, Color color) {\n\t\tMapTool tool = new MapTool(COLOR_TOOL, x, y, size);\n\t\ttool.color = color;\n\t\tdefineTool(tool);\n\t\treturn tool;\n\t}\n\n\tpublic MapTool createKarelTool(int x, int y, String label, int dir) {\n\t\tMapTool tool = new MapTool(ROBOT_TOOL, x, y, KAREL_TOOL_SIZE);\n\t\ttool.label = label;\n\t\ttool.dir = dir;\n\t\tdefineTool(tool);\n\t\treturn tool;\n\t}\n\n\tpublic MapTool createBeeperTool(int x, int y, String label, int beeperDelta) {\n\t\tMapTool tool = new MapTool(BEEPER_TOOL, x, y, BIG_TOOL_SIZE);\n\t\ttool.label = label;\n\t\ttool.beeperDelta = beeperDelta;\n\t\tdefineTool(tool);\n\t\treturn tool;\n\t}\n\n\tpublic MapTool createBeeperBagTool(int x, int y) {\n\t\tbeeperBagTool = new MapTool(BEEPER_BAG_TOOL, x, y, 0);\n\t\treturn beeperBagTool;\n\t}\n\n\tpublic void drawTool(Graphics g, MapTool tool) {\n\t\tg.setColor(getBackground());\n\t\tint span = tool.size + 2 * (SELECTED_PIXELS - 1) + 1;\n\t\tg.fillRect(tool.x - (SELECTED_PIXELS - 1), tool.y\n\t\t\t\t- (SELECTED_PIXELS - 1), span, span);\n\t\tg.setColor(Color.BLACK);\n\t\tswitch (tool.toolClass) {\n\t\tcase WALL_TOOL:\n\t\t\tdrawWallTool(g, tool);\n\t\t\tbreak;\n\t\tcase COLOR_TOOL:\n\t\t\tdrawColorTool(g, tool);\n\t\t\tbreak;\n\t\tcase ROBOT_TOOL:\n\t\t\tdrawKarelTool(g, tool);\n\t\t\tbreak;\n\t\tcase BEEPER_TOOL:\n\t\t\tdrawBeeperTool(g, tool);\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tpublic void drawWallTool(Graphics g, MapTool tool) {\n\t\tint border = (tool == selectedTool) ? SELECTED_PIXELS : 1;\n\t\tdrawSquare(g, tool.x, tool.y, tool.size, border, null);\n\t\tint x = tool.x + (tool.size - WALL_LENGTH + 1) / 2;\n\t\tint y = tool.y + (tool.size + 1) / 2;\n\t\tif (tool.label.equals(\"Erase Wall\")) {\n\t\t\tg.setColor(Color.GRAY);\n\t\t\tg.drawRect(x, y - 1, WALL_LENGTH, 2);\n\t\t\tg.setColor(Color.BLACK);\n\t\t} else {\n\t\t\tg.fillRect(x, y - 1, WALL_LENGTH, 2);\n\t\t}\n\t}\n\n\tpublic void drawColorTool(Graphics g, MapTool tool) {\n\t\tint border = (tool == selectedTool) ? SELECTED_PIXELS : 1;\n\t\tColor color = null;\n\t\tif (tool.color == null) {\n\t\t\tcolor = null;\n\t\t\tint x = tool.x + tool.size / 2;\n\t\t\tint y = tool.y + tool.size / 2;\n\t\t\tg.setColor(Color.WHITE);\n\t\t\tg.fillRect(tool.x, tool.y, tool.size, tool.size);\n\t\t\tg.setColor(Color.BLACK);\n\t\t\tg.drawLine(x - 1, y, x + 1, y);\n\t\t\tg.drawLine(x, y - 1, x, y + 1);\n\t\t} else {\n\t\t\tcolor = tool.color;\n\t\t}\n\t\tdrawSquare(g, tool.x, tool.y, tool.size, border, color);\n\t}\n\n\tpublic boolean inBeeperBag(Point pt) {\n\t\tif (beeperBagTool == null)\n\t\t\treturn false;\n\t\tint x = beeperBagTool.x;\n\t\tint y = beeperBagTool.y;\n\t\treturn (pt.x > x && pt.x < x + BEEPER_BAG_WIDTH && pt.y > y && pt.y < y\n\t\t\t\t+ BEEPER_BAG_HEIGHT);\n\t}\n\n\t/* Action callbacks */\n\n\tpublic void wallAction(Point pt, int dir) {\n\t\tMapTool tool = getSelectedTool();\n\t\tif (tool.toolClass != WALL_TOOL)\n\t\t\treturn;\n\t\tif (tool.label.equals(\"Draw Wall\")) {\n\t\t\tworld.setWall(pt, dir);\n\t\t\tworld.repaint();\n\t\t} else if (tool.label.equals(\"Erase Wall\")) {\n\t\t\tworld.clearWall(pt, dir);\n\t\t\tworld.repaint();\n\t\t}\n\t}\n\n\tpublic void cornerAction(Point pt) {\n\t\tMapTool tool = getSelectedTool();\n\t\tif (tool.toolClass == COLOR_TOOL) {\n\t\t\tworld.setCornerColor(pt, tool.color);\n\t\t\tworld.repaint();\n\t\t} else if (tool.toolClass == BEEPER_TOOL) {\n\t\t\tint nBeepers = world.getBeepersOnCorner(pt);\n\t\t\tnBeepers = KarelWorld.setBeepers(nBeepers, tool.beeperDelta);\n\t\t\tworld.setBeepersOnCorner(pt, nBeepers);\n\t\t\tworld.repaint();\n\t\t}\n\t}\n\n\tpublic void toolAction(Point pt) {\n\t\tif (inBeeperBag(pt)) {\n\t\t\tMapTool tool = getSelectedTool();\n\t\t\tif (tool == null)\n\t\t\t\treturn;\n\t\t\tif (tool.toolClass == BEEPER_TOOL) {\n\t\t\t\tKarel karel = world.getKarel();\n\t\t\t\tif (karel != null) {\n\t\t\t\t\tint nBeepers = karel.getBeepersInBag();\n\t\t\t\t\tnBeepers = KarelWorld\n\t\t\t\t\t\t\t.setBeepers(nBeepers, tool.beeperDelta);\n\t\t\t\t\tkarel.setBeepersInBag(nBeepers);\n\t\t\t\t\tdrawBeeperBag(getGraphics());\n\t\t\t\t\trepaint();\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tMapTool tool = findTool(pt);\n\t\t\tif (tool == null)\n\t\t\t\treturn;\n\t\t\tif (tool.toolClass == ROBOT_TOOL) {\n\t\t\t\tKarel karel = world.getKarel();\n\t\t\t\tif (karel != null) {\n\t\t\t\t\tkarel.setDirection(tool.dir);\n\t\t\t\t}\n\t\t\t\tworld.repaint();\n\t\t\t} else {\n\t\t\t\toldTool = selectedTool;\n\t\t\t\tselectedTool = tool;\n\t\t\t\tdrawTool(getGraphics(), tool);\n\t\t\t\tdrawTool(getGraphics(), oldTool);\n\t\t\t\trepaint();\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic void paintComponent(Graphics g) {\n\t\tsuper.paintComponent(g);\n\t\tif (g instanceof Graphics2D) {\n\t\t\tGraphics2D g2 = (Graphics2D) g;\n\t\t\tg2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);\n\t\t}\n\t\tdrawTools(g);\n\t}\n\n\t/* MouseListener interface */\n\n\tpublic void mousePressed(MouseEvent e) {\n\t\ttoolAction(e.getPoint());\n\t}\n\n\tpublic void mouseClicked(MouseEvent e) {\n\t}\n\n\tpublic void mouseReleased(MouseEvent e) {\n\t}\n\n\tpublic void mouseEntered(MouseEvent e) {\n\t}\n\n\tpublic void mouseExited(MouseEvent e) {\n\t}\n\n\t/* Private methods */\n\n\tprivate void drawSquare(Graphics g, int x, int y, int size, int border,\n\t\t\tColor color) {\n\t\tif (color != null) {\n\t\t\tg.setColor(color);\n\t\t\tg.fillRect(x, y, size, size);\n\t\t}\n\t\tg.setColor(Color.BLACK);\n\t\tfor (int i = 0; i < border; i++) {\n\t\t\tg.drawRect(x - i, y - i, size + 2 * i, size + 2 * i);\n\t\t}\n\t}\n\n\tprivate MapTool findTool(Point pt) {\n\t\tIterator<MapTool> iterator = tools.iterator();\n\t\twhile (iterator.hasNext()) {\n\t\t\tMapTool tool = iterator.next();\n\t\t\tif (tool.contains(pt))\n\t\t\t\treturn tool;\n\t\t}\n\t\treturn null;\n\t}\n\n\tprivate static class MapTool {\n\t\tpublic MapTool(int toolClass, int x, int y, int size) {\n\t\t\tthis.toolClass = toolClass;\n\t\t\tthis.x = x;\n\t\t\tthis.y = y;\n\t\t\tthis.size = size;\n\t\t}\n\n\t\tpublic boolean contains(Point pt) {\n\t\t\treturn (pt.x >= x && pt.x < x + size && pt.y >= y && pt.y < y + size);\n\t\t}\n\n\t\tpublic int toolClass;\n\t\tpublic int x, y, dir, size, beeperDelta;\n\t\tpublic String label;\n\t\tpublic Color color;\n\t}\n}\n"
  },
  {
    "path": "Archived/Karel/src/stanford/karel/KarelWorldMonitor.java",
    "content": "package stanford.karel;\n\nimport java.awt.Point;\n\ninterface KarelWorldMonitor {\n\t/**\n\t * This action is invoked at the beginning of an editing session.\n\t */\n\tpublic void startWorldEdit();\n\n\t/**\n\t * This action is invoked at the end of an editing session.\n\t */\n\tpublic void endWorldEdit();\n\n\t/**\n\t * This action is invoked when the mouse is clicked on a wall, which is the\n\t * wall in the indicated direction from the Karel coordinates given by pt.\n\t */\n\tpublic void wallAction(Point pt, int dir);\n\n\t/**\n\t * This action is invoked when the mouse is clicked on a corner, which is\n\t * the wall in the indicated direction from the given point.\n\t */\n\tpublic void cornerAction(Point pt);\n\n\t/**\n\t * This action is invoked when karel executes an instruction.\n\t */\n\tpublic void trace();\n\n\t/**\n\t * This method is invoked when a world map file needs to set the simulation\n\t * speed.\n\t */\n\tpublic void setSpeed(double speed);\n\n\t/**\n\t * This method is invoked when the KarelWorld class needs to get the\n\t * simulation speed.\n\t */\n\tpublic double getSpeed();\n}\n"
  },
  {
    "path": "Archived/Karel/src/stanford/karel/LoadWorldDialog.java",
    "content": "package stanford.karel;\n\nimport java.awt.FileDialog;\nimport java.io.File;\nimport java.io.FilenameFilter;\nimport acm.util.JTFTools;\n\nclass LoadWorldDialog extends FileDialog implements FilenameFilter {\n\n\tpublic LoadWorldDialog(KarelWorld world) {\n\t\tsuper(JTFTools.getEnclosingFrame(world), \"Load World\");\n\t\tsetDirectory(KarelProgram.getWorldDirectory());\n\t\tsetFilenameFilter(this);\n\t}\n\n\tpublic boolean accept(File dir, String name) {\n\t\treturn (name.endsWith(KarelProgram.WORLD_EXTENSION));\n\t}\n}\n\n"
  },
  {
    "path": "Archived/Karel/src/stanford/karel/NewWorldDialog.java",
    "content": "package stanford.karel;\n\nimport java.awt.FileDialog;\n\nimport acm.util.JTFTools;\n\nclass NewWorldDialog extends FileDialog {\n\tpublic NewWorldDialog(KarelWorld world) {\n\t\tsuper(JTFTools.getEnclosingFrame(world), \"New World\", FileDialog.SAVE);\n\t\tsetDirectory(KarelProgram.getWorldDirectory());\n\t}\n}\n"
  },
  {
    "path": "Archived/Karel/src/stanford/karel/OptionTable.java",
    "content": "package stanford.karel;\n\nimport java.util.HashMap;\nimport java.util.StringTokenizer;\n\nclass OptionTable {\n\t/* Constants used in the parseOptions finite-state machine */\n\tprivate static final int INITIAL_STATE = 0;\n\tprivate static final int KEY_SEEN = 1;\n\tprivate static final int COLON_SEEN = 2;\n\tprivate static final int VALUE_SEEN = 3;\n\n\tprivate HashMap<String, String> table;\n\n\t/*\n\t * This method creates an empty option table and initializes it from the\n\t * specified string, if any.\n\t */\n\tpublic OptionTable() {\n\t\ttable = new HashMap<String, String>();\n\t}\n\n\tpublic OptionTable(String options) {\n\t\tthis();\n\t\tparseOptions(options);\n\t}\n\n\t/*\n\t * This method parses a string consisting of option specifications in one of\n\t * the two following forms:\n\t * \n\t * /key /key:value\n\t */\n\tpublic void parseOptions(String options) {\n\t\tparseOptions(options, table);\n\t}\n\n\t/*\n\t * This method returns true if the key has been specified in the option\n\t * table.\n\t */\n\tpublic boolean isSpecified(String key) {\n\t\treturn table.containsKey(key);\n\t}\n\n\t/*\n\t * This method looks up an option key and returns the corresponding value.\n\t * If the key is not defined, getOption returns null unless a defValue\n\t * parameter is used to specify a different default.\n\t */\n\tpublic String getOption(String key) {\n\t\treturn getOption(key, null);\n\t}\n\n\tpublic String getOption(String key, String defValue) {\n\t\tString value = table.get(key.toLowerCase());\n\t\treturn (value == null || value.equals(\"\")) ? defValue : value;\n\t}\n\n\t/*\n\t * This method looks up an option key and returns the corresponding value,\n\t * parsed as an integer. If the key is not defined, the getIntOption method\n\t * returns 0 unless a defValue parameter is used to specify a different\n\t * default.\n\t */\n\tpublic int getIntOption(String key) {\n\t\treturn getIntOption(key, 0);\n\t}\n\n\tpublic int getIntOption(String key, int defValue) {\n\t\tString value = getOption(key, null);\n\t\tif (value == null || value.equals(\"\"))\n\t\t\treturn defValue;\n\t\treturn (Integer.decode(value).intValue());\n\t}\n\n\t/*\n\t * This method looks up an option key and returns the corresponding value,\n\t * parsed as a double. If the key is not defined, the getDoubleOption method\n\t * returns 0.0 unless a defValue parameter is used to specify a different\n\t * default.\n\t */\n\tpublic double getDoubleOption(String key) {\n\t\treturn getDoubleOption(key, 0.0);\n\t}\n\n\tpublic double getDoubleOption(String key, double defValue) {\n\t\tString value = getOption(key, null);\n\t\tif (value == null || value.equals(\"\"))\n\t\t\treturn defValue;\n\t\treturn (Double.valueOf(value).doubleValue());\n\t}\n\n\t/*\n\t * This method looks up an option key and returns a boolean whose value is\n\t * true if the option maps to \"true\", \"t\", or \"on\" and false if it maps to\n\t * \"false\", \"f\", or \"off\". A missing option defaults to false unless the\n\t * option is specified and empty, in which case it defaults to true.\n\t */\n\tpublic boolean getFlagOption(String key) {\n\t\treturn getFlagOption(key, false);\n\t}\n\n\tpublic boolean getFlagOption(String key, boolean def) {\n\t\tString value = table.get(key.toLowerCase());\n\t\tif (value == null)\n\t\t\treturn def;\n\t\tvalue = value.toLowerCase();\n\t\tif (value.equals(\"\"))\n\t\t\treturn true;\n\t\tif (value.equals(\"true\"))\n\t\t\treturn true;\n\t\tif (value.equals(\"false\"))\n\t\t\treturn false;\n\t\tif (value.equals(\"t\"))\n\t\t\treturn true;\n\t\tif (value.equals(\"f\"))\n\t\t\treturn false;\n\t\tif (value.equals(\"on\"))\n\t\t\treturn true;\n\t\tif (value.equals(\"off\"))\n\t\t\treturn false;\n\t\tthrow new IllegalArgumentException(\"parseOptions: Illegal flag value\");\n\t}\n\n\t/* Private methods */\n\n\t/*\n\t * This method parses a string consisting of option specifications in one of\n\t * the two following forms:\n\t * \n\t * /key /key:value\n\t */\n\tprivate static void parseOptions(String options, HashMap<String, String> map) {\n\t\tStringTokenizer scanner = new StringTokenizer(options + \"/\", \"/:\", true);\n\t\tString key = null;\n\t\tString value = null;\n\t\tint state = INITIAL_STATE;\n\t\twhile (scanner.hasMoreTokens()) {\n\t\t\tString token = scanner.nextToken();\n\t\t\tswitch (state) {\n\t\t\tcase INITIAL_STATE:\n\t\t\t\tif (!token.equals(\"/\")) {\n\t\t\t\t\tkey = token.toLowerCase();\n\t\t\t\t\tvalue = \"\";\n\t\t\t\t\tstate = KEY_SEEN;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase KEY_SEEN:\n\t\t\t\tif (token.equals(\"/\")) {\n\t\t\t\t\tmap.put(key, value);\n\t\t\t\t\tstate = INITIAL_STATE;\n\t\t\t\t} else if (token.equals(\":\")) {\n\t\t\t\t\tstate = COLON_SEEN;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase COLON_SEEN:\n\t\t\t\tvalue = token;\n\t\t\t\tstate = VALUE_SEEN;\n\t\t\t\tbreak;\n\t\t\tcase VALUE_SEEN:\n\t\t\t\tif (token.equals(\"/\")) {\n\t\t\t\t\tmap.put(key, value);\n\t\t\t\t\tstate = INITIAL_STATE;\n\t\t\t\t} else {\n\t\t\t\t\tString msg = \"parseOptions: Illegal option string\";\n\t\t\t\t\tthrow new IllegalArgumentException(msg);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/Karel/src/stanford/karel/ResizeCanvas.java",
    "content": "package stanford.karel;\n\nimport java.awt.*;\nimport javax.swing.*;\n\nclass ResizeCanvas extends JPanel {\n\tprivate static final int SIZE = 102;\n\tprivate static final Font FONT = new Font(\"Helvetica\", Font.PLAIN, 12);\n\n\tprivate int rows;\n\tprivate int cols;\n\tprivate int sqSize;\n\n\tpublic void setDimension(int width, int height) {\n\t\tthis.cols = width;\n\t\tthis.rows = height;\n\t}\n\n\tpublic Dimension getPreferredSize() {\n\t\treturn new Dimension(SIZE, SIZE);\n\t}\n\n\tpublic void paintComponent(Graphics g) {\n\t\tsuper.paintComponent(g);\n\t\tg.setColor(Color.BLACK);\n\t\tg.drawRect(0, 0, SIZE - 1, SIZE - 1);\n\t\tint sqSize = (SIZE - 2) / Math.max(rows, cols);\n\t\tint x = (SIZE - sqSize * (cols - 1)) / 2;\n\t\tfor (int ix = 1; ix <= cols; ix++) {\n\t\t\tint y = (SIZE + sqSize * (rows - 1)) / 2;\n\t\t\tfor (int iy = 1; iy <= rows; iy++) {\n\t\t\t\tdrawCornerMarker(g, x, y);\n\t\t\t\ty -= sqSize;\n\t\t\t}\n\t\t\tx += sqSize;\n\t\t}\n\t\tString str = cols + \"x\" + rows;\n\t\tg.setFont(FONT);\n\t\tFontMetrics fm = g.getFontMetrics();\n\t\tint width = fm.stringWidth(str) + 6;\n\t\tint height = fm.getHeight() + 2;\n\t\tg.setColor(Color.WHITE);\n\t\tg.fillRect((SIZE - width) / 2, (SIZE - height) / 2, width, height);\n\t\tg.setColor(Color.BLACK);\n\t\tg.drawString(str, (SIZE - fm.stringWidth(str)) / 2,\n\t\t\t\t(SIZE + fm.getAscent()) / 2);\n\t}\n\n\tprivate void drawCornerMarker(Graphics g, int x, int y) {\n\t\tif (sqSize < KarelWorld.CROSS_THRESHOLD) {\n\t\t\tg.drawLine(x, y, x, y);\n\t\t} else {\n\t\t\tg.drawLine(x - 1, y, x + 1, y);\n\t\t\tg.drawLine(x, y - 1, x, y + 1);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/Karel/src/stanford/karel/ResizeLayout.java",
    "content": "package stanford.karel;\n\nimport java.awt.Component;\nimport java.awt.Container;\nimport java.awt.Dimension;\nimport java.awt.Insets;\nimport java.awt.LayoutManager;\n\nclass ResizeLayout implements LayoutManager {\n\tprivate Component canvas;\n\tprivate Component hbar;\n\tprivate Component vbar;\n\n\tpublic void addLayoutComponent(String constraints, Component comp) {\n\t\tif (constraints.equals(\"canvas\"))\n\t\t\tcanvas = comp;\n\t\tif (constraints.equals(\"hbar\"))\n\t\t\thbar = comp;\n\t\tif (constraints.equals(\"vbar\"))\n\t\t\tvbar = comp;\n\t}\n\n\tpublic void removeLayoutComponent(Component comp) {\n\t\t/* Empty */\n\t}\n\n\tpublic Dimension preferredLayoutSize(Container parent) {\n\t\treturn minimumLayoutSize(parent);\n\t}\n\n\tpublic Dimension minimumLayoutSize(Container parent) {\n\t\tsynchronized (parent.getTreeLock()) {\n\t\t\tDimension csize = canvas.getPreferredSize();\n\t\t\tint hsize = hbar.getPreferredSize().height;\n\t\t\tint vsize = vbar.getPreferredSize().width;\n\t\t\treturn new Dimension(csize.width + vsize + 1, csize.height + hsize\n\t\t\t\t\t+ 1);\n\t\t}\n\t}\n\n\tpublic void layoutContainer(Container parent) {\n\t\tsynchronized (parent.getTreeLock()) {\n\t\t\tDimension psize = parent.getSize();\n\t\t\tInsets insets = parent.getInsets();\n\t\t\tint x = insets.left;\n\t\t\tint y = insets.top;\n\t\t\tint width = psize.width - insets.left - insets.right;\n\t\t\tint height = psize.height - insets.top - insets.bottom;\n\t\t\tint hsize = hbar.getPreferredSize().height;\n\t\t\tint vsize = vbar.getPreferredSize().width;\n\t\t\tcanvas.setBounds(x, y, width - vsize - 1, height - hsize - 1);\n\t\t\thbar.setBounds(x, y + height - vsize, width - vsize - 1, hsize);\n\t\t\tvbar.setBounds(x + width - hsize, y, vsize, height - hsize - 1);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/Karel/src/stanford/karel/SuperKarel.java",
    "content": "/*\n * This class implements an extension of the basic Karel class that supports\n * more operations.\n * - 2015/03/31: Changed to use Swing graphical components.\n */\n\npackage stanford.karel;\n\nimport java.awt.*;\n\n/**\n * Extended Karel class . . .\n */\npublic class SuperKarel extends Karel {\n\tpublic static final Color BLACK = Color.BLACK;\n\tpublic static final Color BLUE = Color.BLUE;\n\tpublic static final Color CYAN = Color.CYAN;\n\tpublic static final Color DARK_GRAY = Color.DARK_GRAY;\n\tpublic static final Color GRAY = Color.GRAY;\n\tpublic static final Color GREEN = Color.GREEN;\n\tpublic static final Color LIGHT_GRAY = Color.LIGHT_GRAY;\n\tpublic static final Color MAGENTA = Color.MAGENTA;\n\tpublic static final Color ORANGE = Color.ORANGE;\n\tpublic static final Color PINK = Color.PINK;\n\tpublic static final Color RED = Color.RED;\n\tpublic static final Color WHITE = Color.WHITE;\n\tpublic static final Color YELLOW = Color.YELLOW;\n\n\t/* Constructor */\n\n\tpublic SuperKarel() {\n\t\t/* Empty */\n\t}\n\n\tpublic void run() {\n\t\t/* Empty */\n\t}\n\n\tpublic void turnRight() {\n\t\tcheckWorld(\"turnRight\");\n\t\tsetDirection(KarelWorld.rightFrom(getDirection()));\n\t\tgetWorld().trace();\n\t}\n\n\tpublic void turnAround() {\n\t\tcheckWorld(\"turnAround\");\n\t\tsetDirection(KarelWorld.oppositeDirection(getDirection()));\n\t\tgetWorld().trace();\n\t}\n\n\tpublic void paintCorner(Color color) {\n\t\tKarelWorld world = getWorld();\n\t\tPoint pt = getLocation();\n\t\tcheckWorld(\"paintCorner\");\n\t\tworld.setCornerColor(pt.x, pt.y, color);\n\t\tworld.trace();\n\t}\n\n\tpublic void paintCorner(int rgb) {\n\t\tpaintCorner(new Color(rgb));\n\t}\n\n\tpublic void paintCorner(double red, double blue, double green) {\n\t\tpaintCorner(new Color((float) red, (float) blue, (float) green));\n\t}\n\n\tpublic Color newColor(int rgb) {\n\t\treturn new Color(rgb);\n\t}\n\n\tpublic boolean random() {\n\t\tcheckWorld(\"random\");\n\t\treturn random(0.5);\n\t}\n\n\tpublic boolean random(double p) {\n\t\tcheckWorld(\"random\");\n\t\treturn Math.random() < p;\n\t}\n\n\tpublic boolean cornerColorIs(Color color) {\n\t\tKarelWorld world = getWorld();\n\t\tPoint pt = getLocation();\n\t\tcheckWorld(\"cornerColorIs\");\n\t\tif (color == null) {\n\t\t\treturn world.getCornerColor(pt.x, pt.y) == null;\n\t\t} else {\n\t\t\treturn (color.equals(world.getCornerColor(pt.x, pt.y)));\n\t\t}\n\t}\n\n\tpublic boolean cornerColorIs(int rgb) {\n\t\treturn cornerColorIs(new Color(rgb));\n\t}\n\n\tpublic boolean cornerColorIs(double red, double blue, double green) {\n\t\tColor color = new Color((float) red, (float) blue, (float) green);\n\t\treturn cornerColorIs(color);\n\t}\n\n\tpublic void pause(double milliseconds) {\n\t\tKarelWorld world = getWorld();\n\t\tboolean repaintFlag = true;\n\t\tKarelWorldMonitor monitor = world.getMonitor();\n\t\tif (monitor != null && monitor.getSpeed() > 0.98) {\n\t\t\trepaintFlag = false;\n\t\t}\n\t\tworld.setRepaintFlag(true);\n\t\tworld.repaint();\n\t\tworld.setRepaintFlag(repaintFlag);\n\t\ttry {\n\t\t\tint millis = (int) milliseconds;\n\t\t\tint nanos = (int) Math.round((milliseconds - millis) * 1000000);\n\t\t\tThread.sleep(millis, nanos);\n\t\t} catch (InterruptedException ex) {\n\t\t\t/* Empty */\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Archived/Karel/src/stanford/karel/VPanel.java",
    "content": "/*\n * This file implements a Panel subclass that is useful for\n * creating a vertical assembly of components.  The details\n * of its operation are described in the HVLayout manager,\n * which is common to both HPanels and VPanels.\n * - 2015/03/31: Changed to use Swing graphical components.\n */\n\npackage stanford.karel;\n\nimport java.awt.*;\nimport javax.swing.*;\n\nclass VPanel extends JPanel {\n\tpublic VPanel() {\n\t\tsetLayout(new HVLayout(HVLayout.VERTICAL));\n\t\tsetOpaque(false);\n\t}\n\n\tpublic Component add(String constraint) {\n\t\treturn add(constraint, null);\n\t}\n\n\tpublic Component add(Component comp) {\n\t\treturn add(\"\", comp);\n\t}\n\n\tpublic Component add(String constraint, Component comp) {\n\t\tif (comp == null)\n\t\t\tcomp = new EmptyCanvas();\n\t\treturn super.add(constraint, comp);\n\t}\n}\n"
  },
  {
    "path": "Archived/Karel/src/stanford/karel/Version.java",
    "content": "/*\n * Stores the current version of the library for being displayed\n * in on-screen UI to the user.\n */\n\npackage stanford.karel;\n\npublic interface Version {\n\tpublic static final String VERSION = \"2015/04/05\";\n\tpublic static final String ABOUT_MESSAGE = \"Karel the Robot\\n\"\n\t\t\t+ \"version: \" + VERSION + \"\\n\"\n\t\t\t+ \"\\n\"\n\t\t\t+ \"The karel.jar library was designed and written by Stanford Prof. Eric Roberts.\\n\"\n\t\t\t+ \"Minor modifications have been made by Stanford Lecturer Marty Stepp.\\n\"\n\t\t\t+ \"\\n\"\n\t\t\t+ \"See http://cs106a.stanford.edu/ for more information.\";\n}\n"
  },
  {
    "path": "Archived/Karel/worlds/16x20.w",
    "content": "Dimension: (16, 20)\rBeeperBag: INFINITY\rKarel: (1, 1) East\rSpeed: 0.20\r"
  },
  {
    "path": "Archived/Karel/worlds/1x8.w",
    "content": "Dimension: (1, 8)\rBeeperBag: INFINITY\rKarel: (1, 1) East\rSpeed: 0.75\r"
  },
  {
    "path": "Archived/Karel/worlds/1x9-marty.w",
    "content": "Dimension: (1, 9)\rBeeperBag: INFINITY\rKarel: (1, 1) East\rSpeed: 0.75\r"
  },
  {
    "path": "Archived/Karel/worlds/3x9-marty.w",
    "content": "Dimension: (3, 9)\rBeeperBag: INFINITY\rKarel: (1, 1) East\rSpeed: 0.75\r"
  },
  {
    "path": "Archived/Karel/worlds/40x40.w",
    "content": "Dimension: (40, 40)\rBeeperBag: INFINITY\rKarel: (1, 1) East\rSpeed: 1.00\r"
  },
  {
    "path": "Archived/Karel/worlds/6x5.w",
    "content": "Dimension: (6, 5)\rBeeperBag: INFINITY\rKarel: (1, 1) East\rSpeed: 0.75\r"
  },
  {
    "path": "Archived/Karel/worlds/7x7.w",
    "content": "Dimension: (7, 7)\rBeeperBag: INFINITY\rKarel: (1, 1) East\rSpeed: 0.75\r"
  },
  {
    "path": "Archived/Karel/worlds/8x1.w",
    "content": "Dimension: (8, 1)\rBeeperBag: INFINITY\rKarel: (1, 1) East\rSpeed: 0.75\r"
  },
  {
    "path": "Archived/Karel/worlds/8x8.w",
    "content": "Dimension: (8, 8)\rBeeperBag: INFINITY\rKarel: (1, 1) East\rSpeed: 0.75\r"
  },
  {
    "path": "Archived/Karel/worlds/Checkerboard.w",
    "content": "Dimension: (8, 8)\rBeeperBag: INFINITY\rKarel: (1, 1) East\rSpeed: 0.75\r"
  },
  {
    "path": "Archived/Karel/worlds/CollectNewspaper.w",
    "content": "Dimension: (7, 5)\rWall: (3, 2) west\rWall: (3, 2) south\rWall: (3, 3) west\rWall: (3, 4) west\rWall: (3, 5) south\rWall: (4, 2) south\rWall: (4, 5) south\rWall: (5, 2) south\rWall: (5, 5) south\rWall: (6, 2) west\rWall: (6, 4) west\rBeeper: (6, 3) 1\rBeeper: (7, 4) 1\rKarel: (3, 4) east\rSpeed: 0.00\r"
  },
  {
    "path": "Archived/Karel/worlds/MidpointFinder.w",
    "content": "Dimension: (9, 9)\rBeeperBag: INFINITE\rKarel: (1, 1) East\rSpeed: 0.50\r"
  },
  {
    "path": "Archived/Karel/worlds/SampleQuad1.w",
    "content": "Dimension: (13, 13)\rBeeper: (1, 4) 1\rBeeper: (1, 5) 1\rWall: (1, 6) South\rWall: (2, 6) West\rWall: (2, 7) South\rWall: (3, 7) West\rWall: (3, 8) South\rWall: (4, 7) West\rWall: (4, 7) South\rBeeper: (5, 1) 1\rBeeper: (5, 2) 1\rBeeper: (5, 4) 1\rWall: (5, 6) West\rWall: (5, 6) South\rWall: (6, 6) West\rWall: (6, 7) South\rWall: (7, 7) West\rWall: (7, 8) South\rWall: (8, 7) West\rWall: (8, 7) South\rBeeper: (9, 3) 1\rBeeper: (9, 5) 1\rWall: (9, 6) West\rWall: (9, 6) South\rWall: (10, 6) West\rWall: (10, 7) South\rWall: (11, 7) West\rWall: (11, 8) South\rWall: (12, 7) West\rWall: (12, 7) South\rBeeper: (13, 1) 1\rBeeper: (13, 3) 1\rBeeper: (13, 5) 1\rWall: (13, 6) West\rWall: (13, 6) South\rBeeperBag: INFINITE\rKarel: (1, 1) East\rSpeed: 0.5\r"
  },
  {
    "path": "Archived/Karel/worlds/SampleQuad2.w",
    "content": "Dimension: (13, 9)\rBeeper: (1, 1) 1\rBeeper: (1, 2) 1\rWall: (1, 4) South\rWall: (2, 4) West\rWall: (2, 5) South\rWall: (3, 4) West\rWall: (3, 4) South\rWall: (4, 4) West\rWall: (4, 5) South\rBeeper: (5, 1) 1\rWall: (5, 5) West\rBeeper: (5, 5) 1\rWall: (5, 6) South\rWall: (6, 5) West\rWall: (6, 5) South\rWall: (7, 4) West\rWall: (7, 4) South\rWall: (8, 3) West\rWall: (8, 3) South\rWall: (9, 2) West\rWall: (9, 2) South\rWall: (10, 2) West\rWall: (10, 3) South\rWall: (11, 3) West\rWall: (11, 4) South\rWall: (12, 4) West\rWall: (12, 5) South\rBeeper: (13, 1) 1\rBeeper: (13, 3) 1\rWall: (13, 4) West\rWall: (13, 4) South\rBeeperBag: INFINITE\rKarel: (1, 1) East\rSpeed: 0.5\r"
  },
  {
    "path": "Archived/Karel/worlds/StoneMason.w",
    "content": "Dimension: (13, 13)\rBeeper: (1, 4) 1\rBeeper: (1, 5) 1\rWall: (1, 6) South\rWall: (2, 6) West\rWall: (2, 7) South\rWall: (3, 7) West\rWall: (3, 8) South\rWall: (4, 7) West\rWall: (4, 7) South\rBeeper: (5, 1) 1\rBeeper: (5, 2) 1\rBeeper: (5, 4) 1\rWall: (5, 6) West\rWall: (5, 6) South\rWall: (6, 6) West\rWall: (6, 7) South\rWall: (7, 7) West\rWall: (7, 8) South\rWall: (8, 7) West\rWall: (8, 7) South\rBeeper: (9, 3) 1\rBeeper: (9, 5) 1\rWall: (9, 6) West\rWall: (9, 6) South\rWall: (10, 6) West\rWall: (10, 7) South\rWall: (11, 7) West\rWall: (11, 8) South\rWall: (12, 7) West\rWall: (12, 7) South\rBeeper: (13, 1) 1\rBeeper: (13, 3) 1\rBeeper: (13, 5) 1\rWall: (13, 6) West\rWall: (13, 6) South\rBeeperBag: INFINITE\rKarel: (1, 1) East\rSpeed: 0.5\r"
  },
  {
    "path": "Archived/README.md",
    "content": "October 2019\n\n\"Archives\" used to house older components of library (earlier versions, Java backend, etc.) should you need to poke around in past"
  },
  {
    "path": "Archived/Scripts/extract-cpplib.pl",
    "content": "#!/usr/bin/perl -w\n# This silly script takes the entire Stanford C++ library and merges it into\n# a single C++ source file so that it can easily be embedded inside a student\n# program without needing to create complicated build/header files.\n\nmy $WRITE_CPP_FILE = 1;   # extract/write the spl.cpp file?\nmy $WRITE_H_FILE = 1;     # extract/write the spl.h   file?\n\nmy $outfile = \"spl.cpp\";\nif ($#ARGV >= 0) {\n\t$outfile = shift @ARGV;\n}\nmy $out_h_file = $outfile;\n$out_h_file =~ s/\\.cpp/.h/;   # \"stanfordcpplib.h\"\nmy $basedir = \"StanfordCPPLib\";\nmy $projdir = \"StanfordCPPLib_CodeStepByStep_Project/src\";\nmy $autograder_basedir = \"autograder\";\n\nmy @ALL_FILES = (\n# .h headers (order is very important because of dependencies of declarations)\n# basic library functionality\n\"$basedir/private/init.h\",                   # deps: none\n\"$basedir/private/static.h\",                 # deps: none\n\"$basedir/system/error.h\",                   # deps: none\n\"$basedir/util/require.h\",\n\"$basedir/private/headless.h\",\n# \"$basedir/util/memory.h\",\n\"$basedir/io/base64.h\",                      # deps: none\n\"$basedir/util/direction.h\",                 # deps: none\n\"$basedir/collections/hashcode.h\",           # deps: none\n\"$basedir/util/random.h\",                    # deps: none\n\"$basedir/util/point.h\",                     # deps: none\n\"$basedir/io/simpio.h\",                      # deps: none\n# \"$basedir/graphics/gtypes.h\",              # deps: none\n\"$basedir/collections/functional.h\",         # deps: none\n\"$basedir/util/gmath.h\",                     # deps: gtypes.h\n\"$basedir/collections/shuffle.h\",            # deps: random.h\n\"$basedir/collections/collections.h\",        # deps: none\n\"$basedir/util/observable.h\",                # deps: error.h\n\"$basedir/util/recursion.h\",\n\"$basedir/system/exceptions.h\",\n\"$basedir/collections/vector.h\",\n\"$basedir/util/strlib.h\",                    # deps: none\n\"$basedir/util/stringutils.h\",               # deps: none\n\"$basedir/util/intrange.h\",                  # deps: error, Point\n\"$basedir/io/filelib.h\",                     # deps: vector.h\n\"$basedir/collections/deque.h\",\n\"$basedir/collections/queue.h\",\n\"$basedir/collections/stack.h\",\n# \"$basedir/private/tokenpatch.h\",\n\"$basedir/io/tokenscanner.h\",\n\"$basedir/collections/map.h\",\n\"$basedir/collections/set.h\",\n\"$basedir/collections/hashmap.h\",\n\"$basedir/collections/hashset.h\",\n\"$basedir/collections/graph.h\",              # deps: map, set, tokenscanner\n\"$basedir/collections/gridlocation.h\",\n\"$basedir/collections/grid.h\",\n\"$basedir/collections/lexicon.h\",\n\"$basedir/collections/linkedlist.h\",\n\"$basedir/collections/priorityqueue.h\",\n\"$basedir/collections/pqueue.h\",\n\n\"$basedir/collections/sparsegrid.h\",\n\"$basedir/collections/dawglexicon.h\",        # deps: set.h\n\"$basedir/collections/linkedhashmap.h\",      \n\"$basedir/collections/linkedhashset.h\",      # deps: linkedhashmap.h\n\"$basedir/collections/basicgraph.h\",         # deps: map, set, graph, many other collections\n\"$basedir/collections/stl.h\",\n\n\"$basedir/graphics/consoletext.h\",\n\"$basedir/graphics/console.h\",\n\n# \"$basedir/graphics/gwindow.h\",\n# \"$basedir/graphics/gobjects.h\",            # deps: gtypes, gwindow\n# \"$basedir/graphics/gtimer.h\",\n# \"$basedir/graphics/gevents.h\",\n# \"$basedir/graphics/ginteractors.h\",\n# \"$basedir/graphics/gbufferedimage.h\",\n# \"$basedir/graphics/gfilechooser.h\",\n# \"$basedir/graphics/goptionpane.h\",\n# \"$basedir/graphics/gtable.h\",\n# \"$basedir/graphics/gtextarea.h\",\n \n\"$basedir/io/bitstream.h\",\n\"$basedir/io/plainconsole.h\",\n# \"$basedir/util/sound.h\",\n\"$basedir/util/complex.h\",\n\"$basedir/util/biginteger.h\",\n\"$basedir/util/bigfloat.h\",\n# \"$basedir/private/consolestreambuf.h\",\n# \"$basedir/private/echoinputstreambuf.h\",\n# \"$basedir/private/forwardingstreambuf.h\",\n# \"$basedir/private/limitoutputstreambuf.h\",\n# \"$basedir/private/platform.h\",\n# \"$basedir/private/tplatform.h\",\n\"$basedir/private/version.h\",\n\"$basedir/util/regexpr.h\",\n\"$basedir/system/call_stack.h\",\n# \"$basedir/system/stack_exception.h\",\n# \"$basedir/system/thread.h\",\n# \"$basedir/system/pstream.h\",\n# \"$basedir/system/process.h\",\n\"$basedir/util/timer.h\",\n\"$basedir/util/note.h\",\n# \"$basedir/util/managed.h\",\n# \"$basedir/io/urlstream.h\",\n\n# .cpp implementations (order should be unimportant)\n# \"$basedir/util/range.cpp\",\n\"$basedir/private/init.cpp\",\n\n\"$basedir/collections/collections.cpp\",\n\"$basedir/collections/basicgraph.cpp\",\n\"$basedir/collections/dawglexicon.cpp\",\n\"$basedir/collections/hashcode.cpp\",\n\"$basedir/collections/lexicon.cpp\",\n\"$basedir/collections/shuffle.cpp\",\n\"$basedir/collections/gridlocation.cpp\",\n\n# \"$basedir/graphics/gbufferedimage.cpp\",\n# \"$basedir/graphics/gevents.cpp\",\n# \"$basedir/graphics/gfilechooser.cpp\",\n# \"$basedir/graphics/ginteractors.cpp\",\n# \"$basedir/graphics/gobjects.cpp\",\n# \"$basedir/graphics/goptionpane.cpp\",\n# \"$basedir/graphics/gtable.cpp\",\n# \"$basedir/graphics/gtextarea.cpp\",\n# \"$basedir/graphics/gtimer.cpp\",\n# \"$basedir/graphics/gtypes.cpp\",\n# \"$basedir/graphics/gwindow.cpp\",\n \n\"$basedir/io/base64.cpp\",\n\"$basedir/io/bitstream.cpp\",\n\"$basedir/io/filelib.cpp\",\n\"$basedir/private/filelibunix.cpp\",\n\"$basedir/io/simpio.cpp\",\n\"$basedir/io/tokenscanner.cpp\",\n# \"$basedir/io/urlstream.cpp\",\n# \"$basedir/private/platform.cpp\",\n\"$basedir/private/version.cpp\",\n# \"$basedir/private/tplatform_posix.cpp\",\n\"$basedir/system/call_stack_gcc.cpp\",\n# \"$basedir/system/thread.cpp\",\n#\"$basedir/system/call_stack_windows.cpp\",   # not needed because the server runs *nix\n\"$basedir/system/error.cpp\",\n\"$basedir/io/plainconsole.cpp\",\n\"$basedir/system/exceptions.cpp\",\n# \"$basedir/system/process.cpp\",\n\"$basedir/util/recursion.cpp\",\n\"$basedir/util/direction.cpp\",\n\"$basedir/util/gmath.cpp\",\n# \"$basedir/util/observable.cpp\",\n\"$basedir/util/point.cpp\",\n\"$basedir/util/random.cpp\",\n\"$basedir/util/regexpr.cpp\",\n# \"$basedir/util/sound.cpp\",\n\"$basedir/util/strlib.cpp\",\n\"$basedir/util/timer.cpp\",\n# \"$basedir/util/memory.cpp\",\n\"$basedir/graphics/console.cpp\",\n\n# some classes that come from practice exams but are needed for 106B/X section/exam problems\n\"$projdir/ArrayIntList.h\",\n\"$projdir/BinaryTreeNode.h\",\n\"$projdir/BinaryTree.h\",\n\"$projdir/BinaryTreeMapNode.h\",\n\"$projdir/BinaryTreeMap.h\",\n\"$projdir/HashTableMap.h\",\n\"$projdir/HashTableSet.h\",\n\"$projdir/HeapPriorityQueue.h\",\n\"$projdir/LinkedIntList.h\",\n\"$projdir/graphsupport.h\",\n\"$projdir/types.h\",\n\n\"$projdir/ArrayIntList.cpp\",\n\"$projdir/BinaryTree.cpp\",\n\"$projdir/BinaryTreeMap.cpp\",\n\"$projdir/HashTableSet.cpp\",\n\"$projdir/HeapPriorityQueue.cpp\",\n\"$projdir/LinkedIntList.cpp\",\n\"$projdir/graphsupport.cpp\",\n\"$projdir/types.cpp\",\n\n# csbs-specific\n\"$projdir/codestepbystep.h\",\n\"$projdir/codestepbystep.cpp\",\n);\n\n\n# \"main\"\n\nprint(\"C++ library merger tool\\n\");\nprint(\"by Marty Stepp\\n\");\nprint(\"=======================\\n\");\n\n# gather the C++ code text\nprint(\"Reading source code ...\\n\");\n\nmy $author = \"Marty Stepp\";\nmy $nowdate = `date`;   # e.g. \"Fri Oct 14 10:52:02 PDT 2016\"\nchomp($nowdate);\n\nmy $overall_shared_comment_header = \n\t\"// Stanford C++ library (extracted)\\n\"\n\t. \"// \\@author ${author}\\n\"\n\t. \"// \\@version ${nowdate}\\n\"\n\t. \"//\\n\"\n\t. \"// This library has been merged into a single .h and .cpp file by an automatic script\\n\"\n\t. \"// to make it easier to include and use with the CodeStepByStep tool.\\n\"\n\t. \"// DO NOT EDIT THIS FILE DIRECTLY!\\n\"\n\t. \"// If you want to make changes or additions to the Stanford C++ library,\\n\"\n\t. \"// make them to the library's original source as separate .cpp / .h files,\\n\"\n\t. \"// then re-run the script to extract the library into these single large merged files.\\n\\n\";\n\nmy $overall_cpp_text = $overall_shared_comment_header\n\t# . \"using namespace std;\\n\"\n\t. \"#include \\\"$out_h_file\\\"\\n\"\n\t. \"\\n\";\nmy $overall_h_text = $overall_shared_comment_header\n\t. \"#define STANFORD_CPP_LIB_PRESENT true\\n\\n\";\n$overall_h_text .= \"using namespace std;\\n\\n\";\nforeach my $cppfile (@ALL_FILES) {\n\tprint(\"  - $cppfile\\n\");\n\tif (not -f $cppfile) {\n\t\tdie(\"ERROR: required file not found: $cppfile\\n\");\n\t}\n\t\n\t$cppfiletext = `cat $cppfile`;\n\t\n\t# clean up the code a bit;\n\t# remove local includes from within lib\n\t$cppfiletext =~ s/#include[ \\t]{0,99}\"[^\"]{1,99}\".{0,99}\\n/\\n/gi;\n\t\n\t# remove redeclaration of, static Platform *pp = getPlatform();\n\t# $cppfiletext = regex_remove_lines($cppfiletext, \"static[ ]*Platform[ *]+pp[ ]*=[ ]*getPlatform();[ ]*\");\n\t\n\t$text_to_add = \"/////////////////////// BEGIN code extracted from $cppfile ///////////////////////\\n\"\n\t\t\t. $cppfiletext . \"\\n\"\n\t\t\t. \"/////////////////////// END code extracted from $cppfile ///////////////////////\\n\\n\";\n\t\n\tif ($cppfile =~ m/\\.h$/) {\n\t\t# special case: including console.h, must disable graphical console\n\t\tif ($cppfile =~ m/\\/console\\.h$/) {\n\t\t\t$overall_h_text .= \"#define __DONT_ENABLE_GRAPHICAL_CONSOLE\\n\";\n\t\t}\n\n\t\t$overall_h_text .= $text_to_add;\n\n\t\tif ($cppfile =~ m/\\/console\\.h$/) {\n\t\t\t$overall_h_text .= \"#undef __DONT_ENABLE_GRAPHICAL_CONSOLE\\n\";\n\t\t}\n\t\t\n\t} else {\n\t\t$overall_cpp_text .= $text_to_add;\n\t}\n}\n\nif ($WRITE_CPP_FILE) {\n\tprint(\"Writing output file $outfile ...\\n\");\n\topen(OUTFILE, \">\", $outfile) or die \"Cannot open $outfile for writing: $!\";\n\tprint OUTFILE $overall_cpp_text;\n\tclose OUTFILE;\n}\n\nif ($WRITE_H_FILE) {\n\tprint(\"Writing header file $out_h_file ...\\n\");\n\topen(OUTFILE, \">\", $out_h_file) or die \"Cannot open $out_h_file for writing: $!\";\n\tprint OUTFILE $overall_h_text;\n\tclose OUTFILE;\n}\n\nprint(\"Complete.\\n\\n\");\n\n\nsub regex_remove_lines {\n\tmy $text = shift;\n\tmy $regex = shift;\n\tmy @lines = split(/\\r?\\n/, $text);\n\tfor (my $i = 0; $i <= $#lines; $i++) {\n\t\t$lines[$i] =~ s/$regex//gi;\n\t}\n\t$text = join(\"\\n\", @lines);\n\treturn $text;\n}\n"
  },
  {
    "path": "Archived/Scripts/make-autograder_zip.sh",
    "content": "#!/bin/bash\nOUTDIR=cppdoc/dist\nLIBDIR=lib/StanfordCPPLib\nAUTOGRADERDIR=autograder\nAUTOGRADERLIBZIPFILE=$OUTDIR/StanfordCPPLibAutograder.zip\nPROFILE=StanfordCPPLib_QtCreatorProject/stanfordcpplib.pro\n\necho \"This script prepares ZIPs of the Stanford C++ library\"\necho \"(autograder) for distribution and posting on the web.\"\necho \"=====================================================\"\necho \"Building $AUTOGRADERLIBZIPFILE ...\"\nrm $AUTOGRADERLIBZIPFILE 2>/dev/null\nzip -rq $AUTOGRADERLIBZIPFILE $AUTOGRADERDIR/\n\nAUTOGRADEREMPTYPROJECTNAME=autograder-empty-project\nEMPTYPROJECTZIPFILE=$OUTDIR/$AUTOGRADEREMPTYPROJECTNAME.zip\necho \"Building $EMPTYPROJECTZIPFILE ...\"\ncp -f $PROFILE $AUTOGRADEREMPTYPROJECTNAME/$AUTOGRADEREMPTYPROJECTNAME.pro\nrm -rf $AUTOGRADEREMPTYPROJECTNAME/$LIBDIR\nrm -rf $AUTOGRADEREMPTYPROJECTNAME/$LIBDIR\nmkdir $AUTOGRADEREMPTYPROJECTNAME/$LIBDIR\nmkdir $AUTOGRADEREMPTYPROJECTNAME/$LIBDIR/$AUTOGRADERDIR\ncp -r StanfordCPPLib/* $AUTOGRADEREMPTYPROJECTNAME/$LIBDIR\n#mkdir $AUTOGRADEREMPTYPROJECTNAME/$LIBDIR/$AUTOGRADERDIR\ncp -r $AUTOGRADERDIR/*.h $AUTOGRADEREMPTYPROJECTNAME/$LIBDIR/$AUTOGRADERDIR\n./pack-lib-into-single-cpp-file.sh $AUTOGRADEREMPTYPROJECTNAME\n./pack-autograder-lib-into-single-cpp-file.sh $AUTOGRADEREMPTYPROJECTNAME\nrm $EMPTYPROJECTZIPFILE 2>/dev/null\nzip -rq $EMPTYPROJECTZIPFILE $AUTOGRADEREMPTYPROJECTNAME/\ncp -f $AUTOGRADEREMPTYPROJECTNAME/$AUTOGRADEREMPTYPROJECTNAME.pro $OUTDIR\n\necho \"Done.\"\n"
  },
  {
    "path": "Archived/Scripts/make-image-strip.sh",
    "content": "#!/bin/bash\ncd icons/\n\n# standard lib icon strip\nconvert \\\n\tsave.gif \\\n\tsave_as.gif \\\n\tprint.gif \\\n\tscript.gif \\\n\tcompare_output.gif \\\n\tquit.gif \\\n\tcut.gif \\\n\tcopy.gif \\\n\tpaste.gif \\\n\tselect_all.gif \\\n\tclear_console.gif \\\n\tfont.gif \\\n\tbackground_color.gif \\\n\ttext_color.gif \\\n\tabout.gif \\\n\tcheck_for_updates.gif \\\n\t+append \\\n\ticonstrip.png\n\n# autograder icon strip\nconvert \\\n\tcalendar.gif \\\n\tcheck.gif \\\n\thelpbig.gif \\\n\tmagnifier.gif \\\n\tplay.gif \\\n\tpause.gif \\\n\tstop.gif \\\n\ttextfile.gif \\\n\tfail.gif \\\n\thelp.gif \\\n\tpass.gif \\\n\trunning.gif \\\n\twarn.gif \\\n\tcheckbox-checked.gif \\\n\tcheckbox-unchecked.gif \\\n\tminus.gif \\\n\t+append \\\n\ticonstrip-autograder.png\n\ncd ..\ncp icons/iconstrip.png cppdoc/dist/\ncp icons/iconstrip.png StanfordCPPLib_CodeStepByStep_Project/lib/\ncp icons/iconstrip.png StanfordCPPLib_QtCreatorProject/lib/\ncp icons/iconstrip.png sample-project/lib/\ncp icons/iconstrip.png Autograder_QtCreatorProject/lib/\ncp icons/iconstrip.png autograder-empty-project/lib/\n\ncp icons/iconstrip-autograder.png Autograder_QtCreatorProject/lib/\ncp icons/iconstrip-autograder.png autograder-empty-project/lib/\n\ncp icons/progress.gif Autograder_QtCreatorProject/lib/\ncp icons/progress.gif autograder-empty-project/lib/\n\ncp icons/splicon-large.png cppdoc/dist/\ncp icons/splicon-large.png StanfordCPPLib_CodeStepByStep_Project/lib/\ncp icons/splicon-large.png StanfordCPPLib_QtCreatorProject/lib/\ncp icons/splicon-large.png sample-project/lib/\ncp icons/splicon-large.png Autograder_QtCreatorProject/lib/\ncp icons/splicon-large.png autograder-empty-project/lib/\n"
  },
  {
    "path": "Archived/Scripts/make-stanfordcpplib_zip.sh",
    "content": "#!/bin/bash\nOUTDIR=cppdoc/dist\nCPPLIBZIPFILE=$OUTDIR/StanfordCPPLib.zip\n\necho \"This script prepares ZIPs of the Stanford C++ library\"\necho \"for distribution and posting on the web.\"\necho \"=====================================================\"\necho \"Building $CPPLIBZIPFILE ...\"\nrm $CPPLIBZIPFILE 2>/dev/null\nzip -rq $CPPLIBZIPFILE StanfordCPPLib/\nzip -q --update $CPPLIBZIPFILE -j addr2line/addr2line.exe\nzip -q --update $CPPLIBZIPFILE -j addr2line/addr2line64.exe\nzip -q --update $CPPLIBZIPFILE -j $OUTDIR/iconstrip.png\n\nEMPTYPROJECTZIPFILE=cppdoc/dist/empty-project.zip\necho \"Building $EMPTYPROJECTZIPFILE ...\"\ncp -f StanfordCPPLib_QtCreatorProject/stanfordcpplib.pro empty-project/empty-project.pro\nrm -rf empty-project/lib/StanfordCPPLib/\nmkdir empty-project/lib/StanfordCPPLib/\ncp -r StanfordCPPLib/* empty-project/lib/StanfordCPPLib/\n./pack-lib-into-single-cpp-file.sh empty-project\nrm $EMPTYPROJECTZIPFILE 2>/dev/null\nzip -rq $EMPTYPROJECTZIPFILE empty-project/\ncp -f empty-project/empty-project.pro $OUTDIR\n\nSAMPLEPROJECTZIPFILE=cppdoc/dist/sample-project.zip\necho \"Building $SAMPLEPROJECTZIPFILE ...\"\ncp -f StanfordCPPLib_QtCreatorProject/stanfordcpplib.pro sample-project/sample-project.pro\nrm -rf sample-project/lib/StanfordCPPLib/\nmkdir sample-project/lib/StanfordCPPLib/\ncp -r StanfordCPPLib/* sample-project/lib/StanfordCPPLib/\n./pack-lib-into-single-cpp-file.sh sample-project\nrm $SAMPLEPROJECTZIPFILE 2>/dev/null\nzip -rq $SAMPLEPROJECTZIPFILE sample-project/\ncp -f sample-project/sample-project.pro $OUTDIR\n\ncp -f StanfordCPPLib_QtCreatorProject/stanfordcpplib.pro autograder-empty-project/autograder-empty-project.pro\n\necho \"Done.\"\n"
  },
  {
    "path": "Archived/Scripts/pack-autograder-lib-into-single-cpp-file.sh",
    "content": "#!/bin/bash\nif [ $# -le 0 ]; then\n\techo \"Usage: $0 DIRECTORY\"\n\techo \"e.g. : $0 empty-project\"\n\texit 1\nfi\n\nINDIR=\"autograder\"\nOUTDIR=\"$1/lib/StanfordCPPLib\"\nOUTFILE=\"splautograder.cpp\"\necho \"Merging library .cpp source into $OUTDIR/$OUTFILE ...\"\nFILES=`cd $INDIR/ && find . -name \"*.cpp\"`\necho '' > $OUTDIR/$OUTFILE\ncp spl_cpp_header_autograder_text.txt $OUTDIR/$OUTFILE\n\nfor file in $FILES; do\n\t# echo $file\n\tcat $INDIR/$file >> $OUTDIR/$OUTFILE\n\t\n\t# append blank line\n\techo \"\" >> $OUTDIR/$OUTFILE\n\t\n\t# remove .cpp files from project folders (only need spl.cpp)\n\tif [ -e $OUTDIR/$file ]; then\n\t\trm $OUTDIR/$file\n\tfi\ndone\n# echo \"Done.\"\n"
  },
  {
    "path": "Archived/Scripts/pack-lib-into-single-cpp-file.sh",
    "content": "#!/bin/bash\nif [ $# -le 0 ]; then\n\techo \"Usage: $0 DIRECTORY\"\n\techo \"e.g. : $0 empty-project\"\n\texit 1\nfi\n\nINDIR=\"StanfordCPPLib\"\nOUTDIR=\"$1/lib/StanfordCPPLib\"\nOUTFILE=\"spl.cpp\"\necho \"Merging library .cpp source into $OUTDIR/$OUTFILE ...\"\nFILES=`cd $INDIR/ && find . -name \"*.cpp\"`\necho '' > $OUTDIR/$OUTFILE\ncp spl_cpp_header_text.txt $OUTDIR/$OUTFILE\n\nfor file in $FILES; do\n\t# echo $file\n\tcat $INDIR/$file >> $OUTDIR/$OUTFILE\n\t\n\t# append blank line\n\techo \"\" >> $OUTDIR/$OUTFILE\n\t\n\t# remove .cpp files from project folders (only need spl.cpp)\n\tif [ -e $OUTDIR/$file ]; then\n\t\trm $OUTDIR/$file\n\tfi\ndone\n# echo \"Done.\"\n"
  },
  {
    "path": "Archived/Scripts/zip-cpplib.sh",
    "content": "#!/bin/bash\nrm cppdoc/StanfordCPPLib.zip\nzip -r cppdoc/StanfordCPPLib.zip StanfordCPPLib/\ncd cppdoc\ncp ../JavaBackEnd/eclipseproject/obf/spl.jar .\ncp ../StanfordCPPLib_QtCreatorProject/lib/addr2line.exe .\nzip StanfordCPPLib.zip spl.jar\nzip StanfordCPPLib.zip addr2line.exe\nscp StanfordCPPLib.zip stepp@myth.stanford.edu:/afs/.ir.stanford.edu/users/s/t/stepp/WWW/cppdoc/StanfordCPPLib.zip\ncd ..\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/output/expected-output-1.txt",
    "content": "Hello, cout 1!\nHello, cerr 1!\nHello, cout 2!\nHello, cerr 2!\n\nThis is stderr!\nSo is this.\nCOUT IN THIS PART ... BUT IT ALTERNATES TO CERR! \nCOUT CERR COUT CERR COUT CERR COUT CERR COUT CERR \n    0    1    2    3    4    5    6    7    8    9   10\n   11   12   13   14   15   16   17   18   19   20\n   21   22   23   24   25   26   27   28   29   30\n   31   32   33   34   35   36   37   38   39   40\n   41   42   43   44   45   46   47   48   49   50\n   51   52   53   54   55   56   57   58   59   60\n   61   62   63   64   65   66   67   68   69   70\n   71   72   73   74   75   76   77   78   79   80\n   81   82   83   84   85   86   87   88   89   90\n   91   92   93   94   95   96   97   98   99  100\n  101  102  103  104  105  106  107  108  109  110\n  111  112  113  114  115  116  117  118  119  120\n  121  122  123  124  125  126  127  128  129  130\n  131  132  133  134  135  136  137  138  139  140\n  141  142  143  144  145  146  147  148  149  150\n  151  152  153  154  155  156  157  158  159  160\n  161  162  163  164  165  166  167  168  169  170\n  171  172  173  174  175  176  177  178  179  180\n  181  182  183  184  185  186  187  188  189  190\n  191  192  193  194  195  196  197  198  199  200\n  201  202  203  204  205  206  207  208  209  210\n  211  212  213  214  215  216  217  218  219  220\n  221  222  223  224  225  226  227  228  229  230\n  231  232  233  234  235  236  237  238  239  240\n  241  242  243  244  245  246  247  248  249  250\n  251  252  253  254  255  256  257  258  259  260\n  261  262  263  264  265  266  267  268  269  270\n  271  272  273  274  275  276  277  278  279  280\n  281  282  283  284  285  286  287  288  289  290\n  291  292  293  294  295  296  297  298  299  300\n  301  302  303  304  305  306  307  308  309  310\n  311  312  313  314  315  316  317  318  319  320\n  321  322  323  324  325  326  327  328  329  330\n  331  332  333  334  335  336  337  338  339  340\n  341  342  343  344  345  346  347  348  349  350\n  351  352  353  354  355  356  357  358  359  360\n  361  362  363  364  365  366  367  368  369  370\n  371  372  373  374  375  376  377  378  379  380\n  381  382  383  384  385  386  387  388  389  390\n  391  392  393  394  395  396  397  398  399  400\n  401  402  403  404  405  406  407  408  409  410\n  411  412  413  414  415  416  417  418  419  420\n  421  422  423  424  425  426  427  428  429  430\n  431  432  433  434  435  436  437  438  439  440\n  441  442  443  444  445  446  447  448  449  450\n  451  452  453  454  455  456  457  458  459  460\n  461  462  463  464  465  466  467  468  469  470\n  471  472  473  474  475  476  477  478  479  480\n  481  482  483  484  485  486  487  488  489  490\n  491  492  493  494  495  496  497  498  499  500\n  501  502  503  504  505  506  507  508  509  510\n  511  512  513  514  515  516  517  518  519  520\n  521  522  523  524  525  526  527  528  529  530\n  531  532  533  534  535  536  537  538  539  540\n  541  542  543  544  545  546  547  548  549  550\n  551  552  553  554  555  556  557  558  559  560\n  561  562  563  564  565  566  567  568  569  570\n  571  572  573  574  575  576  577  578  579  580\n  581  582  583  584  585  586  587  588  589  590\n  591  592  593  594  595  596  597  598  599  600\n  601  602  603  604  605  606  607  608  609  610\n  611  612  613  614  615  616  617  618  619  620\n  621  622  623  624  625  626  627  628  629  630\n  631  632  633  634  635  636  637  638  639  640\n  641  642  643  644  645  646  647  648  649  650\n  651  652  653  654  655  656  657  658  659  660\n  661  662  663  664  665  666  667  668  669  670\n  671  672  673  674  675  676  677  678  679  680\n  681  682  683  684  685  686  687  688  689  690\n  691  692  693  694  695  696  697  698  699  700\n  701  702  703  704  705  706  707  708  709  710\n  711  712  713  714  715  716  717  718  719  720\n  721  722  723  724  725  726  727  728  729  730\n  731  732  733  734  735  736  737  738  739  740\n  741  742  743  744  745  746  747  748  749  750\n  751  752  753  754  755  756  757  758  759  760\n  761  762  763  764  765  766  767  768  769  770\n  771  772  773  774  775  776  777  778  779  780\n  781  782  783  784  785  786  787  788  789  790\n  791  792  793  794  795  796  797  798  799  800\n  801  802  803  804  805  806  807  808  809  810\n  811  812  813  814  815  816  817  818  819  820\n  821  822  823  824  825  826  827  828  829  830\n  831  832  833  834  835  836  837  838  839  840\n  841  842  843  844  845  846  847  848  849  850\n  851  852  853  854  855  856  857  858  859  860\n  861  862  863  864  865  866  867  868  869  870\n  871  872  873  874  875  876  877  878  879  880\n  881  882  883  884  885  886  887  888  889  890\n  891  892  893  894  895  896  897  898  899  900\n  901  902  903  904  905  906  907  908  909  910\n  911  912  913  914  915  916  917  918  919  920\n  921  922  923  924  925  926  927  928  929  930\n  931  932  933  934  935  936  937  938  939  940\n  941  942  943  944  945  946  947  948  949  950\n  951  952  953  954  955  956  957  958  959  960\n  961  962  963  964  965  966  967  968  969  970\n  971  972  973  974  975  976  977  978  979  980\n  981  982  983  984  985  986  987  988  989  990\n  991  992  993  994  995  996  997  998  999 1000\nTook 1ms\nType: abc\nYou typed: \"abc\"\nType an integer: hi\nIllegal integer format. Try again.\nType an integer: 123\nYou typed: 123\nType a real number: oops\nIllegal numeric format. Try again.\nType a real number: 3.25\nYou typed: 3.25\nPartial line; what about me? :-("
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/output/input-1.txt",
    "content": "abc\nhi\n123\noops\n3.25\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/res/.empty.txt",
    "content": ""
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/res/res file with spaces.txt",
    "content": "Hello!!!!\n\nThis is resfile1.txt\n\nHow are you?\nTesting 1, 2, 3.\n\nHooray!\n\nGoodbye.\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/res/resfile1.txt",
    "content": "Hello!!!!\n\nThis is resfile1.txt\n\nHow are you?\nTesting 1, 2, 3.\n\nHooray!\n\nGoodbye.\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/res/resfile2.doc",
    "content": ""
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/res/resfile3.html",
    "content": "<html>\n\t<head>\n\t\t<title>My Web Page Title</title>\n\t</head>\n\n\t<body>\n\t\t<h1>This is an H1!</h1>\n\n\t\t<p>Welcome to my page. Some links:</p>\n\n\t\t<ul>\n\t\t\t<li><a href=\"http://www.google.com/\">Google</a></li>\n\t\t\t<li><a href=\"http://en.wikipedia.org/\">Wikipedia</a></li>\n\t\t</ul>\n\n\t\t<p>Here is another paragraph. It is long! Lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum.\n\t\tLorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum.</p>\n\t\t\n\t\t<p>\n\t\t\tHere is an image:\n\t\t\t<img src=\"paintbrush-icon.png\" alt=\"an image!\" />\n\t\t</p>\n\n\t\t<ol>\n\t\t\t<li>number 1\n\t\t\t<li>number two\n\t\t\t<li>3rd\n\t\t</ol>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/ArrayIntList.cpp",
    "content": "/*\n * CS 106B, Marty Stepp\n * ArrayIntList.cpp implements the ArrayIntList class behavior declared in ArrayIntList.h.\n * \n * @version 2016/08/23\n * - added initializer_list support to match other lib collections\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"ArrayIntList.h\"\n#include \"error.h\"\n#include \"strlib.h\"\n#undef INTERNAL_INCLUDE\n\n/*\n * Constructs a new empty list (capacity 10).\n */\nArrayIntList::ArrayIntList() {\n    elements = new int[10]();\n    mysize = 0;\n    capacity = 10;\n}\n\n/*\n * Constructs a new empty list with the given capacity.\n */\nArrayIntList::ArrayIntList(int cap) {\n    elements = new int[cap]();\n    mysize = 0;\n    capacity = cap;\n}\n\n/*\n * Constructs a new empty list storing the given elements.\n */\nArrayIntList::ArrayIntList(std::initializer_list<int> list) {\n    elements = new int[list.size()]();\n    mysize = 0;\n    capacity = list.size();\n    for (int n : list) {\n        add(n);\n    }\n}\n\n/*\n * Destructor is called when an ArrayIntList object is destroyed\n * (when the closing } brace is reached in the function where\n * it is declared).\n */\nArrayIntList::~ArrayIntList() {\n    delete[] elements;\n}\n\n/*\n * Appends the given value to the end of the list.\n */\nvoid ArrayIntList::add(int value) {\n    ensureCapacity(mysize + 1);\n    elements[mysize] = value;\n    mysize++;\n}\n\n/*\n * Removes all elements from the list.\n */\nvoid ArrayIntList::clear() {\n    mysize = 0;\n}\n\n/*\n * Returns the value at the given 0-based index of the list.\n */\nint ArrayIntList::get(int index) const {\n    checkIndex(index, 0, mysize - 1);\n    return elements[index];\n}\n\n/*\n * Adds the given value just before the given 0-based index in the list,\n * shifting subsequent elements right as necessary to make room.\n * Throws a string exception if the index is out of bounds.\n */\nvoid ArrayIntList::insert(int index, int value) {\n    checkIndex(index, 0, mysize);\n    ensureCapacity(mysize + 1);\n    for (int i = mysize; i > index; i--) {\n        elements[i] = elements[i - 1];\n    }\n    elements[index] = value;\n    mysize++;\n}\n\n/*\n * Returns true if there are no elements in the list.\n */\nbool ArrayIntList::isEmpty() const {\n    return mysize == 0;\n}\n\n/*\n * Removes the element at the given index from the list,\n * shifting elements left to make room.\n * Throws a string exception if the index is out of bounds.\n */\nvoid ArrayIntList::remove(int index) {\n    checkIndex(index, 0, mysize - 1);\n    for (int i = index; i < mysize - 1; i++) {\n        elements[i] = elements[i + 1];\n    }\n    mysize--;\n}\n\n/*\n * Stores the given value at the given index in the list.\n * Throws a string exception if the index is out of bounds.\n */\nvoid ArrayIntList::set(int index, int value) {\n    checkIndex(index, 0, mysize - 1);\n    elements[index] = value;\n}\n\n/*\n * Returns the number of elements in the list.\n */\nint ArrayIntList::size() const {\n    return mysize;\n}\n\n/*\n * Prints the list to the given output stream, in a format such as:\n * {42, -7, 19, 106}\n */\nostream& operator <<(ostream& out, const ArrayIntList& list) {\n    out << \"{\";\n    if (!list.isEmpty()) {\n        out << list.get(0);   // fencepost\n        for (int i = 1; i < list.size(); i++) {\n            out << \", \" << list.get(i);\n        }\n    }\n    out << \"}\";\n    return out;\n}\n\nistream& operator >>(istream& input, ArrayIntList& list) {\n    char ch = '\\0';\n    input >> ch;\n    if (ch != '{') {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n        error(\"ArrayIntList::operator >>: Missing {\");\n#endif\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n    list.clear();\n    input >> ch;\n    if (ch != '}') {\n        input.unget();\n        while (true) {\n            int value;\n            if (!readGenericValue(input, value)) {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n                error(\"ArrayIntList::operator >>: parse error\");\n#endif\n                return input;\n            }\n            list.add(value);\n            input >> ch;\n            if (ch == '}') {\n                break;\n            } else if (ch != ',') {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n                error(std::string(\"ArrayIntList::operator >>: Unexpected character \") + ch);\n#endif\n                input.setstate(std::ios_base::failbit);\n                return input;\n            }\n        }\n    }\n    return input;\n}\n\n/*\n * Throws a string exception if the given index is not between\n * min and max, inclusive.\n */\nvoid ArrayIntList::checkIndex(int index, int min, int max) const {\n    if (index < min || index > max) {\n        throw \"Index out of bounds: \" + integerToString(index);\n    }\n}\n\n/*\n * Grows the internal array to be at least as large as the given capacity.\n * Resizes by factors of 2 to ensure amortized O(1) add performance.\n */\nvoid ArrayIntList::ensureCapacity(int cap) {\n    if (capacity < cap) {\n        while (capacity < cap) {\n            capacity *= 2;\n        }\n        \n        // copy all elements into a bigger array\n        int* bigger = new int[capacity];\n        for (int i = 0; i < mysize; i++) {\n            bigger[i] = elements[i];\n        }\n        \n        // swap in the new bigger array for the old one\n        delete[] elements;\n        elements = bigger;\n    }\n}\n\nArrayIntList& ArrayIntList::operator =(const ArrayIntList& src) {\n    if (this != &src) {\n        // deep copy\n        clear();\n        ensureCapacity(src.size());\n        for (int i = 0; i < src.size(); i++) {\n            add(src.get(i));\n        }\n    }\n    return *this;\n}\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/ArrayIntList.h",
    "content": "/*\n * CS 106B, Marty Stepp\n * ArrayIntList is our example of implementing a basic data structure.\n * The list can store only ints for now.\n * See ArrayIntList.cpp for documentation of each member.\n *\n * @version 2016/08/23\n * - added initializer_list support to match other lib collections\n * @version 2016/07/10\n * - added removeDuplicates() declaration\n */\n\n#ifndef _arrayintlist_h\n#define _arrayintlist_h\n\n#include <fstream>\n#include <initializer_list>\n#include <iostream>\n#include <string>\n#include \"set.h\"\nusing namespace std;\n\nclass ArrayIntList {\npublic:\n    // constructor\n    ArrayIntList();\n    ArrayIntList(int capacity);\n    ArrayIntList(std::initializer_list<int> list);\n    ~ArrayIntList();\n    \n    // member functions (methods)\n    void add(int value);\n    void clear();\n    void ensureCapacity(int capacity);\n    int get(int index) const;\n    void insert(int index, int value);\n    bool isEmpty() const;\n    void remove(int index);\n    void set(int index, int value);\n    int size() const;\n    void debug() const;\n    \n    // section problems\n    int maxCount() const;\n    \n    // exam problems\n    void stretch(int k);\n    void mirror();\n    int longestSortedSequence() const;\n    bool filter(const Set<int>& set);\n    void removeDuplicates();\n\n    ArrayIntList& operator =(const ArrayIntList& src);\n\nprivate:\n    // member variables (fields)\n    int* elements;   // array storing element data\n    int mysize;      // number of elements in the array\n    int capacity;    // array's length\n    \n    void checkIndex(int index, int min, int max) const;\n};\n\n// overloaded operators\nostream& operator <<(ostream& out, const ArrayIntList& list);\nistream& operator >>(istream& in, ArrayIntList& list);\n\n#endif\n\n\n\n\n\n\n\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/BinaryTree.cpp",
    "content": "/*\n * This file contains the implementation of members of the BinaryTree class,\n * which defines a binary tree of integers.\n * See BinaryTree.h for a description of each member.\n *\n * @version 2015/07/21\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"BinaryTree.h\"\n#undef INTERNAL_INCLUDE\n\nBinaryTree::BinaryTree(BinaryTreeNode* root) {\n    this->root = root;\n}\n\nBinaryTree::~BinaryTree() {\n    // TODO: free memory\n    root = nullptr;\n}\n\nstatic void binaryTreeClearHelper(BinaryTreeNode*& node) {\n    if (node) {\n        binaryTreeClearHelper(node->left);\n        binaryTreeClearHelper(node->right);\n        delete node;\n        node = nullptr;\n    }\n}\n\nvoid BinaryTree::clear() {\n    binaryTreeClearHelper(root);\n}\n\nstd::string BinaryTree::toString() {\n    return toString(root);\n}\nstd::string BinaryTree::toString(BinaryTreeNode* node) {\n    if (!node) {\n        return \"/\";\n    } else if (node->left == nullptr && node->right == nullptr) {\n        return integerToString(node->data);\n    } else {\n        return \"(\" + integerToString(node->data) + \", \"\n             + toString(node->left) + \", \" + toString(node->right) + \")\";\n    }\n}\n\nvoid BinaryTree::deleteTree(BinaryTreeNode* node) {\n    if (node) {\n        deleteTree(node->left);\n        deleteTree(node->right);\n        delete node;\n    }\n}\n\nstd::ostream& operator <<(std::ostream& out, const BinaryTree& tree) {\n    return binaryTreeOpLtLtHelper(out, tree.root);\n}\n\nstd::istream& operator >>(std::istream& input, BinaryTree& tree) {\n    tree.clear();\n    std::string line;\n    if (getline(input, line)) {\n        makeTreeFromString(line, tree.root);\n    }\n    return input;\n}\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/BinaryTree.h",
    "content": "/*\n * This file contains the declaration of the BinaryTree class,\n * which defines a binary tree of integers.\n * See BinaryTree.cpp for implementation of each member.\n *\n * @version 2017/10/20\n * - replaced nulls with nullptr\n * @version 2015/07/21\n */\n\n#ifndef _binarytree_h\n#define _binarytree_h\n\n#include <iostream>\n#include <string>\n#include \"BinaryTreeNode.h\"\n#include \"queue.h\"\nusing namespace std;\n\nclass BinaryTree {\npublic:\n    // public just for exam testing\n    BinaryTreeNode* root;   // topmost node in the tree (null if empty)\n\n    BinaryTree(BinaryTreeNode* root = nullptr);\n    virtual ~BinaryTree();\n    \n    void clear();\n    // int height();\n    string toString();\n    \n    // lecture problems\n    void print() const;\n    int size() const;\n    void printSideways() const;\n    bool contains(int value) const;\n\n    // section problems\n    int height() const;\n    int countLeftNodes() const;\n    bool isBalanced() const;\n    bool isBST() const;\n    void removeLeaves();\n    void completeToLevel(int k);\n    void tighten();\n    void limitPathSum(int max);\n    \n    // exam problems\n    bool hasPath(int start, int end) const;\n    bool isConsecutive() const;\n    void limitLeaves(int n);\n    int makeFull();\n    int range(int min, int max);\n    void removeMatchingLeaves(const BinaryTree& other);\n    void swapChildrenAtLevel(int level);\n\n    // operators for reading/writing trees based on a root pointer\n    // (these are used by the CodeStepByStep tool)\n    friend ostream& operator <<(ostream& out, BinaryTreeNode* node);\n    friend istream& operator >>(istream& input, BinaryTreeNode*& node);\n\nprivate:\n    int size(BinaryTreeNode* node);\n    string toString(BinaryTreeNode* node);\n    void deleteTree(BinaryTreeNode* node);\n};\n\nostream& operator <<(ostream& out, const BinaryTree& tree);\nistream& operator >>(istream& input, BinaryTree& tree);\n\nenum Order {PRE_ORDER, IN_ORDER, POST_ORDER};\n\ntemplate <typename T>\nclass TreeSet {\npublic:\n    TreeSet(BinaryTreeNodeGen<T>* root = nullptr);\n    virtual ~TreeSet();\n    \n    void add(T value);\n    bool contains(T value);\n    T getMin() const;\n    int height() const;\n    bool isBalanced() const;\n    void print(int order = IN_ORDER);\n    void printSideways();\n    void remove(T value);\n    \nprivate:\n    BinaryTreeNodeGen<T>* root;   // topmost node in the tree (nullptr if empty)\n\n    void add(BinaryTreeNodeGen<T>*& node, T value);\n    bool contains(BinaryTreeNodeGen<T>* node, T value);\n    T getMin(BinaryTreeNodeGen<T>* node) const;\n    int height(BinaryTreeNodeGen<T>* node) const;\n    bool isBalanced(BinaryTreeNodeGen<T>* node) const;\n    void print(BinaryTreeNodeGen<T>* node, int order = IN_ORDER);\n    void printSideways(BinaryTreeNodeGen<T>* node, string indent);\n    void remove(BinaryTreeNodeGen<T>*& node, T value);\n};\n\n// method bodies must be in .h file for template classes\n\ntemplate <typename T>\nTreeSet<T>::TreeSet(BinaryTreeNodeGen<T>* root) {\n    this->root = root;\n}\n\ntemplate <typename T>\nTreeSet<T>::~TreeSet() {\n    // TODO\n    root = nullptr;\n}\n\ntemplate <typename T>\nvoid TreeSet<T>::add(T value) {\n    add(root, value);\n}\n\ntemplate <typename T>\nvoid TreeSet<T>::add(BinaryTreeNodeGen<T>*& node, T value) {\n    if (!node) {\n        node = new BinaryTreeNodeGen<T>(value);\n    } else if (value < node->data) {\n        add(node->left, value);\n    } else if (value > node->data) {\n        add(node->right, value);\n    }\n}\n\ntemplate <typename T>\nbool TreeSet<T>::contains(T value) {\n    return contains(root, value);\n}\n\ntemplate <typename T>\nbool TreeSet<T>::contains(BinaryTreeNodeGen<T>* node, T value) {\n    if (!node) {\n        return false;\n    } else if (value == node->data) {\n        return true;\n    } else if (value < node->data) {\n        return contains(node->left, value);\n    } else {\n        return contains(node->right, value);\n    }\n}\n\ntemplate <typename T>\nT TreeSet<T>::getMin() const {\n    return getMin(root);\n}\n\ntemplate <typename T>\nT TreeSet<T>::getMin(BinaryTreeNodeGen<T>* node) const {\n    if (!node) {\n        throw \":-(\";\n    } else if (!node->left) {\n        return node->data;\n    } else {\n        return getMin(node->left);\n    }\n}\n\ntemplate <typename T>\nint TreeSet<T>::height() const {\n    return height(root);\n}\n\ntemplate <typename T>\nint TreeSet<T>::height(BinaryTreeNodeGen<T>* node) const {\n    if (!node) {\n        return 0;\n    } else {\n        int l = height(node->left);\n        int r = height(node->right);\n        return max(l, r) + 1;\n    }\n}\n\ntemplate <typename T>\nbool TreeSet<T>::isBalanced() const {\n    return isBalanced(root);\n}\n\ntemplate <typename T>\nbool TreeSet<T>::isBalanced(BinaryTreeNodeGen<T>* node) const {\n    if (!node) {\n        return true;\n    } else {\n        int l = height(node->left);\n        int r = height(node->right);\n        int bf = r - l;\n        if (abs(bf) > 1) {\n            cout << \"imbalanced: \" << node->data << \" (balance factor: \" << bf << \")\" << endl;\n        }\n        // inefficient because we want to print ALL imbalanced nodes\n        bool balL = isBalanced(node->left);\n        bool balR = isBalanced(node->right);\n        return abs(l - r) <= 1 && balL && balR;\n    }\n}\n\ntemplate <typename T>\nvoid TreeSet<T>::print(int order) {\n    print(root, order);\n    cout << endl;\n}\n\ntemplate <typename T>\nvoid TreeSet<T>::print(BinaryTreeNodeGen<T>* node, int order) {\n    if (node) {\n        if (order == PRE_ORDER) {\n            cout << node->data << \" \";\n            cout.flush();\n        }\n        print(node->left, order);\n        if (order == IN_ORDER) {\n            cout << node->data << \" \";\n            cout.flush();\n        }\n        print(node->right, order);\n        if (order == POST_ORDER) {\n            cout << node->data << \" \";\n            cout.flush();\n        }\n    }\n}\n\ntemplate <typename T>\nvoid TreeSet<T>::printSideways() {\n    printSideways(root, \"\");\n}\n\ntemplate <typename T>\nvoid TreeSet<T>::printSideways(BinaryTreeNodeGen<T>* node, string indent) {\n    if (node) {\n        printSideways(node->right, indent + \"  \");\n        cout << indent << node->data << endl;\n        printSideways(node->left, indent + \"  \");\n    }\n}\n\ntemplate <typename T>\nvoid TreeSet<T>::remove(T value) {\n    remove(root, value);\n}\n\ntemplate <typename T>\nvoid TreeSet<T>::remove(BinaryTreeNodeGen<T>*& node, T value) {\n    if (!node) {\n        // do nothing\n    } else if (value < node->data) {\n        remove(node->left, value);\n    } else if (value > node->data) {\n        remove(node->right, value);\n    } else {\n        // remove this node\n        if (!node->left && !node->right) {\n            delete node;\n            node = nullptr;\n        } else if (!node->left) {\n            BinaryTreeNodeGen<T>* trash = node;\n            node = node->right;\n            delete trash;\n        } else if (!node->right) {\n            BinaryTreeNodeGen<T>* trash = node;\n            node = node->left;\n            delete trash;\n        } else {\n            T min = getMin(node->right);\n            remove(node->right, min);\n            node->data = min;\n        }\n    }\n}\n\n#endif // _binarytree_h\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/BinaryTreeMap.cpp",
    "content": "/*\n * CS 106B, Marty Stepp\n * This file contains the implementation of the BinaryTreeMap class,\n * which defines a map from string->integer using a binary search tree.\n * See BinaryTreeMap.h for a description of each member.\n *\n * @version 2015/07/21\n */\n\n#define INTERNAL_INCLUDE 1\n#include <string>\n#include \"BinaryTreeMap.h\"\n#include \"strlib.h\"\n#undef INTERNAL_INCLUDE\n\nBinaryTreeMap::BinaryTreeMap() {\n    m_root = nullptr;\n}\n\nBinaryTreeMap::~BinaryTreeMap() {\n    // TODO: implement\n\n}\n\nbool BinaryTreeMap::containsKey(string key) const {\n    return containsKey(m_root, key);\n}\n\nbool BinaryTreeMap::containsKey(BinaryTreeMapNode* node, string key) const {\n    if (!node) {\n        return false;\n    } else if (key == node->key) {\n        return true;\n    } else if (key < node->key) {\n        return containsKey(node->left, key);\n    } else {  // key > node->key\n        return containsKey(node->right, key);\n    }\n}\n\nint BinaryTreeMap::get(string key) const {\n    return get(m_root, key);\n}\n\nint BinaryTreeMap::get(BinaryTreeMapNode* node, string key) const {\n    if (!node) {\n        return 0;\n    } else if (key == node->key) {\n        return node->value;\n    } else if (key < node->key) {\n        return get(node->left, key);\n    } else {  // key > node->key\n        return get(node->right, key);\n    }\n}\n\nbool BinaryTreeMap::isEmpty() const {\n    return m_size == 0;\n}\n\nvoid BinaryTreeMap::put(string key, int value) {\n    put(m_root, key, value);\n}\n\nvoid BinaryTreeMap::put(BinaryTreeMapNode*& node, string key, int value) {\n    if (!node) {\n        node = new BinaryTreeMapNode(key, value);\n        m_size++;\n    } else if (node->key == key) {\n        node->value = value;\n    } else if (key < node->key) {\n        put(node->left, key, value);\n    } else {  // key > node->key\n        put(node->right, key, value);\n    }\n}\n\nvoid BinaryTreeMap::remove(string key) {\n    remove(m_root, key);\n}\n\nvoid BinaryTreeMap::remove(BinaryTreeMapNode*& node, string key) {\n    if (!node) {\n        // not here, nothing to do\n    } else if (key == node->key) {\n        // remove THIS node\n        BinaryTreeMapNode* trash = nullptr;\n        if (node->isLeaf()) {\n            trash = node;\n            node = nullptr;\n        } else if (!node->right) {\n            // left child only; replace me with left\n            trash = node;\n            node = node->left;\n        } else if (!node->left) {\n            // right child only; replace me with right\n            trash = node;\n            node = node->right;\n        } else {\n            // :-( both children alive\n            BinaryTreeMapNode* rightMinNode = getMin(node->right);\n            node->key = rightMinNode->key;\n            node->value = rightMinNode->value;\n            remove(node->right, rightMinNode->key);\n        }\n\n        m_size--;\n        if (trash) {\n            delete trash;\n        }\n    } else if (key < node->key) {\n        remove(node->left, key);\n    } else {  // key > node->key\n        remove(node->right, key);\n    }\n}\n\nBinaryTreeMapNode* BinaryTreeMap::getMin(BinaryTreeMapNode* node) const {\n    if (!node || !node->left) {\n        return node;\n    } else {\n        return getMin(node->left);\n    }\n}\n\nint BinaryTreeMap::size() const {\n    return m_size;\n}\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/BinaryTreeMap.h",
    "content": "/*\n * CS 106B, Marty Stepp\n * This file contains the declaration of the BinaryTreeMap class,\n * which defines a map from string->integer using a binary search tree.\n * See BinaryTreeMap.cpp for implementation of each member.\n *\n * @version 2015/07/21\n */\n\n#ifndef _binarytreemap_h\n#define _binarytreemap_h\n\n#include <iostream>\n#include <string>\n#include \"BinaryTreeMapNode.h\"\nusing namespace std;\n\nclass BinaryTreeMap {\npublic:\n    /*\n     * Constructs a new tree map.\n     */\n    BinaryTreeMap();\n\n    /*\n     * Frees memory that was allocated by this tree map.\n     */\n    ~BinaryTreeMap();\n    \n    /*\n     * Returns true if the given key is contained in this map.\n     */\n    bool containsKey(string key) const;\n\n    /*\n     * Returns the value associated with the given key in this map.\n     * If the given key is not associated with any value, returns 0.\n     */\n    int get(string key) const;\n\n    /*\n     * Returns true if this map does not contain any key/value pairs.\n     */\n    bool isEmpty() const;\n\n    /*\n     * Adds the given key/value pair to this tree map, if not already present.\n     */\n    void put(string key, int value);\n\n    /*\n     * Removes the given key and its associated value from this tree map, if it was present.\n     */\n    void remove(string key);\n\n    /*\n     * Returns the number of key/value pairs in this map.\n     */\n    int size() const;\n    \nprivate:\n    BinaryTreeMapNode* m_root;   // topmost node in the tree (null if empty)\n    int m_size;            // # of k/v pairs in map (0 if empty)\n\n    /*\n     * Recursive helpers to implement the above public members.\n     * Each helper accepts a pointer to the part of the tree to process.\n     */\n    bool containsKey(BinaryTreeMapNode* node, string key) const;\n    int get(BinaryTreeMapNode* node, string key) const;\n    BinaryTreeMapNode* getMin(BinaryTreeMapNode* node) const;\n    void put(BinaryTreeMapNode*& node, string key, int value);\n    void remove(BinaryTreeMapNode*& node, string key);\n};\n\n#endif\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/BinaryTreeMapNode.h",
    "content": "/*\n * CS 106B, Marty Stepp\n * This file contains the declaration of the TreeMapNode structure.\n * A TreeMapNode stores one string/integer key/value pair in a tree map.\n *\n * @version 2015/07/21\n */\n\n#ifndef _binarytreemapnode_h\n#define _binarytreemapnode_h\n\n#include <string>\nusing namespace std;\n\nstruct BinaryTreeMapNode {\n    string key;\n    int value;\n    BinaryTreeMapNode* left;\n    BinaryTreeMapNode* right;\n\n    /*\n     * Constructs a new tree node with the given key/value and left/right links.\n     */\n    BinaryTreeMapNode(string key, int value, BinaryTreeMapNode* left = nullptr, BinaryTreeMapNode* right = nullptr) {\n        this->key = key;\n        this->value = value;\n        this->left = left;\n        this->right = right;\n    }\n    \n    /*\n     * Returns true if this node has no children.\n     */\n    bool isLeaf() {\n        return !left && !right;\n    }\n};\n\n#endif\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/BinaryTreeNode.h",
    "content": "/*\n * This file contains the declaration of the BinaryTreeNode structure.\n * A BinaryTreeNode stores one integer piece of data in a binary tree of integers.\n *\n * @version 2015/11/10\n * - added nodes for char, double, string\n * @version 2015/07/21\n * - initial version\n */\n\n#ifndef _binarytreenode_h\n#define _binarytreenode_h\n\n#include <iostream>\n#include <string>\n#include \"queue.h\"\n#include \"strlib.h\"\n\ntemplate <typename T>\nclass BinaryTreeNodeGen {\npublic:\n    static int s_allocated;\n    static int s_freed;\n    T data;\n    BinaryTreeNodeGen<T>* left;\n    BinaryTreeNodeGen<T>* right;\n\n    /*\n     * Constructs a new tree node with the given data and left/right links.\n     */\n    BinaryTreeNodeGen<T>(const T& data = T(), BinaryTreeNodeGen* left = nullptr, BinaryTreeNodeGen* right = nullptr);\n    ~BinaryTreeNodeGen<T>();\n    bool isLeaf() const;\n};\n\n// define various node types so that some students need not learn C++ templates\ntypedef BinaryTreeNodeGen<int> BinaryTreeNode;\ntypedef BinaryTreeNodeGen<char> BinaryTreeNodeChar;\ntypedef BinaryTreeNodeGen<double> BinaryTreeNodeDouble;\ntypedef BinaryTreeNodeGen<std::string> BinaryTreeNodeString;\n\ntemplate <typename T>\nstd::ostream& operator <<(std::ostream& out, BinaryTreeNodeGen<T>* node);\n\ntemplate <typename T>\nstd::istream& operator >>(std::istream& input, BinaryTreeNodeGen<T>*& node);\n\n\n// begin \".cpp\" section\n\ntemplate <typename T>\nint BinaryTreeNodeGen<T>::s_allocated = 0;\n\ntemplate <typename T>\nint BinaryTreeNodeGen<T>::s_freed = 0;\n\n/*\n * Constructs a new tree node with the given data and left/right links.\n */\ntemplate <typename T>\nBinaryTreeNodeGen<T>::BinaryTreeNodeGen(const T& data, BinaryTreeNodeGen* left, BinaryTreeNodeGen* right) {\n    this->data = data;\n    this->left = left;\n    this->right = right;\n    s_allocated++;\n}\n\ntemplate <typename T>\nBinaryTreeNodeGen<T>::~BinaryTreeNodeGen() {\n    s_freed++;\n    this->left = nullptr;\n    this->right = nullptr;\n}\n\ntemplate <typename T>\nbool BinaryTreeNodeGen<T>::isLeaf() const {\n    return left == nullptr && right == nullptr;\n}\n\ntemplate <typename T>\nvoid parseBinaryTreeNodeFromQueue(Queue<std::string>& tokenQueue, BinaryTreeNodeGen<T>*& node) {\n    if (tokenQueue.isEmpty()) {\n        node = nullptr;\n    } else if (tokenQueue.peek() == \"(\") {\n        // start of a new node\n        tokenQueue.dequeue();   // the \"(\" token\n        T data;\n        std::istringstream isstr(tokenQueue.dequeue());\n        readGenericValue(isstr, data);\n        node = new BinaryTreeNodeGen<T>(data);\n        parseBinaryTreeNodeFromQueue(tokenQueue, node->left);\n        parseBinaryTreeNodeFromQueue(tokenQueue, node->right);\n        tokenQueue.dequeue();   // the \")\" token\n    } else if (tokenQueue.peek() == \"NULL\" || tokenQueue.peek() == \"null\"\n               || tokenQueue.peek() == \"nullptr\" || tokenQueue.peek() == \"/\") {\n        tokenQueue.dequeue();\n        node = nullptr;\n    } else {\n        node = nullptr;\n    }\n}\n\ntemplate <typename T>\nvoid makeTreeFromString(std::string s, BinaryTreeNodeGen<T>*& node) {\n    // make easier for tokenizing\n    s = stringReplace(s, \"(\", \"( \");\n    s = stringReplace(s, \"[\", \"( \");\n    s = stringReplace(s, \")\", \" ) \");\n    s = stringReplace(s, \"]\", \" ) \");\n    s = stringReplace(s, \", \", \" , \");\n    s = stringReplace(s, \"  \", \" \");\n    s = stringReplace(s, \"  \", \" \");\n    s = stringReplace(s, \"  \", \" \");\n    s = stringReplace(s, \"  \", \" \");\n    Vector<std::string> tokens = stringSplit(s, \" \");\n    Queue<std::string> tokenQueue;\n    for (const std::string& token : tokens) {\n        tokenQueue.enqueue(token);\n    }\n\n    parseBinaryTreeNodeFromQueue(tokenQueue, node);\n}\n\ntemplate <typename T>\nstd::ostream& binaryTreeOpLtLtHelper(std::ostream& out, BinaryTreeNodeGen<T>* node) {\n    if (!node) {\n        out << \"/\";\n    } else {\n        out << \"(\";\n        writeGenericValue(out, node->data, /* forceQuotes */ true);\n        if (!node->isLeaf()) {\n            out << \" \";\n            binaryTreeOpLtLtHelper(out, node->left);\n            if (node->right) {\n                out << \" \";\n                binaryTreeOpLtLtHelper(out, node->right);\n            }\n        }\n        out << \")\";\n    }\n    return out;\n}\n\ntemplate <typename T>\nstd::ostream& operator <<(std::ostream& out, BinaryTreeNodeGen<T>* node) {\n    binaryTreeOpLtLtHelper(out, node);\n    return out;\n}\n\ntemplate <typename T>\nstd::istream& operator >>(std::istream& input, BinaryTreeNodeGen<T>*& node) {\n    std::string line;\n    if (getline(input, line)) {\n        makeTreeFromString(line, node);\n    } else {\n        node = nullptr;\n    }\n    return input;\n}\n\n#endif // _binarytreenode_h\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/HashTableMap.h",
    "content": "/*\n * CS 106B, Marty Stepp\n * This file contains the declaration of the HashTableMap class, which implements\n * a map using a hash table.\n * The hash table uses separate chaining (a linked list of values in each\n * hash bucket) to resolve hash collisions.\n *\n * @version 2015/07/21\n */\n\n#ifndef _hashtablemap_h\n#define _hashtablemap_h\n\n#include <iomanip>\n#include <iostream>\n#include <string>\n\n/*\n * A HashNode stores a single integer of data and a link to another node.\n */\ntemplate <typename K, typename V>\nstruct HashTableMapNode {\n    K key;\n    V value;\n    HashTableMapNode* next;\n    HashTableMapNode(K key, V value, HashTableMapNode* next = nullptr) {\n        this->key = key;\n        this->value = value;\n        this->next = next;\n    }\n};\n\ntemplate <typename K, typename V>\nclass HashTableMap {\npublic:\n    HashTableMap(int capacity = 10, double rehashLoadFactor = 0.5);\n    void put(K key, V value);\n    bool containsKey(K key) const;\n    V get(K key) const;\n    double loadFactor() const;\n    void printStructure() const;\n    void remove(K key);\n    void setRehashLoadFactor(double loadFactor);\n\nprivate:\n    HashTableMapNode<K, V>** elements;\n    int mysize;\n    int capacity;\n    double rehashLoadFactor;\n    int __hashCode(int n) const;\n    int __hashCode(double d) const;\n    int __hashCode(string s) const;\n    int _hashCode(K key) const;\n\n    void rehash();\n};\n\ntemplate <typename K, typename V>\nHashTableMap<K, V>::HashTableMap(int capacity, double rehashLoadFactor) {\n    mysize = 0;\n    this->capacity = capacity;\n    elements = new HashTableMapNode<K, V>*[capacity]();\n    this->rehashLoadFactor = rehashLoadFactor;\n}\n\ntemplate <typename K, typename V>\nvoid HashTableMap<K, V>::put(K key, V value) {\n    int index = _hashCode(key);\n    if (containsKey(key)) {\n        // already has a pair for this key; replace the value\n        HashTableMapNode<K, V>* current = elements[index];\n        while (current) {\n            if (current->key == key) {\n                current->value = value;\n                break;\n            }\n            current = current->next;\n        }\n    } else {\n        // add a new pair to the front of the chain\n        elements[index] = new HashTableMapNode<K, V>(key, value, elements[index]);\n        mysize++;\n        if (loadFactor() >= rehashLoadFactor) {\n            rehash();\n        }\n    }\n}\n\ntemplate <typename K, typename V>\nbool HashTableMap<K, V>::containsKey(K key) const {\n    int index = _hashCode(key);\n    HashTableMapNode<K, V>* current = elements[index];\n    while (current) {\n        if (current->key == key) {\n            return true;\n        }\n        current = current->next;\n    }\n    return false;\n}\n\ntemplate <typename K, typename V>\nV HashTableMap<K, V>::get(K key) const {\n    int index = _hashCode(key);\n    HashTableMapNode<K, V>* current = elements[index];\n    while (current) {\n        if (current->key == key) {\n            return current->value;\n        }\n        current = current->next;\n    }\n    return V();\n}\n\ntemplate <typename K, typename V>\nint HashTableMap<K, V>::__hashCode(int n) const {\n    return n;\n}\n\ntemplate <typename K, typename V>\nint HashTableMap<K, V>::__hashCode(double d) const {\n    return hashCode(d);\n}\n\ntemplate <typename K, typename V>\nint HashTableMap<K, V>::__hashCode(string s) const {\n    return hashCode(s);\n}\n\ntemplate <typename K, typename V>\nint HashTableMap<K, V>::_hashCode(K key) const {\n    return abs(__hashCode(key)) % capacity;\n}\n\ntemplate <typename K, typename V>\ndouble HashTableMap<K, V>::loadFactor() const {\n    return (double) mysize / capacity;\n}\n\ntemplate <typename K, typename V>\nvoid HashTableMap<K, V>::printStructure() const {\n    for (int i = 0; i < capacity; i++) {\n        cout << \"[\" << setw(2) << i << \"]:\";\n        HashTableMapNode<K, V>* curr = elements[i];\n        while (curr) {\n            cout << \" -> \" << setw(2) << curr->key << \":\" << curr->value;\n            curr = curr->next;\n        }\n        cout << endl;\n    }\n    cout << \"size        = \" << mysize << endl;\n    cout << \"capacity    = \" << capacity << endl;\n    cout << \"load factor = \" << loadFactor() << endl;\n}\n\ntemplate <typename K, typename V>\nvoid HashTableMap<K, V>::rehash() {\n    HashTableMapNode<K, V>** oldElements = elements;\n    elements = new HashTableMapNode<K, V>*[capacity * 2]();\n    capacity *= 2;\n    mysize = 0;\n    \n    for (int i = 0; i < capacity/2; i++) {\n        HashTableMapNode<K, V>* curr = oldElements[i];\n        while (curr) {\n            put(curr->key, curr->value);\n            HashTableMapNode<K, V>* trash = curr;\n            curr = curr->next;\n            delete trash;\n        }\n    }\n    \n    delete oldElements;\n}\n\ntemplate <typename K, typename V>\nvoid HashTableMap<K, V>::remove(K key) {\n    int index = _hashCode(key);\n    if (!elements[index]) {\n        return;\n    } else if (elements[index]->key == key) {\n        // remove from front\n        HashTableMapNode<K, V>* trash = elements[index];\n        elements[index] = elements[index]->next;\n        delete trash;\n        mysize--;\n    } else {\n        // remove from later in the chain\n        HashTableMapNode<K, V>* current = elements[index];\n        while (current->next) {\n            if (current->next->key == key) {\n                HashTableMapNode<K, V>* trash = current->next;\n                current->next = current->next->next;\n                delete trash;\n                mysize--;\n                break;\n            }\n            current = current->next;\n        }\n    }\n}\n\ntemplate <typename K, typename V>\nvoid HashTableMap<K, V>::setRehashLoadFactor(double loadFactor) {\n    this->rehashLoadFactor = loadFactor;\n}\n\n#endif\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/HashTableSet.cpp",
    "content": "/*\n * CS 106B, Marty Stepp\n * This file contains the implementation of the HashTableSet class, which implements\n * a set of integers using a hash table.\n * See HashTableSet.h for the declarations of each member.\n *\n * @version 2015/07/21\n */\n\n#define INTERNAL_INCLUDE 1\n#include <iostream>\n#include <iomanip>\n#include \"HashTableSet.h\"\n#undef INTERNAL_INCLUDE\n\nHashTableSet::HashTableSet() {\n    m_size = 0;\n    m_capacity = 10;\n    m_elements = new HashTableNode*[m_capacity]();   // all null\n}\n\nvoid HashTableSet::add(int value) {\n    if (!contains(value)) {\n        int index = hashCode(value);\n        HashTableNode* node = new HashTableNode(value);\n        node->next = m_elements[index];\n        m_elements[index] = node;\n        m_size++;\n    }\n}\n\nbool HashTableSet::contains(int value) const {\n    int index = hashCode(value);\n    HashTableNode* current = m_elements[index];\n    while (current) {\n        if (current->data == value) {\n            return true;\n        }\n        current = current->next;\n    }\n    return false;\n}\n\nint HashTableSet::hashCode(int value) const {\n    return abs(value) % m_capacity;\n}\n\nvoid HashTableSet::remove(int /*value*/) {\n    // not implemented\n}\n\nvoid HashTableSet::printStructure() const {\n    for (int i = 0; i < m_capacity; i++) {\n        std::cout << \"[\" << std::setw(2) << i << \"]:\";\n        HashTableNode* curr = m_elements[i];\n        while (curr) {\n            std::cout << \" -> \" << std::setw(2) << curr->data;\n            curr = curr->next;\n        }\n        std::cout << \" /\" << std::endl;\n    }\n    // cout << \"size = \" << m_size << \", load factor = \" << loadFactor() << endl;\n}\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/HashTableSet.h",
    "content": "/*\n * CS 106B, Marty Stepp\n * This file contains the declaration of the HashTableSet class, which implements\n * a set of integers using a hash table.\n * The hash table uses separate chaining (a linked list of values in each\n * hash bucket) to resolve hash collisions.\n * See HashTableSet.cpp for the implementation of each member.\n *\n * @version 2015/07/21\n */\n\n#ifndef _hashtableset_h\n#define _hashtableset_h\n\n#include <iostream>\n#include <string>\n\n/*\n * A HashNode stores a single integer of data and a link to another node.\n */\nstruct HashTableNode {\n    int data;\n    HashTableNode* next;\n    HashTableNode(int data = 0, HashTableNode* next = nullptr) {\n        this->data = data;\n        this->next = next;\n    }\n};\n\nclass HashTableSet {\npublic:\n    HashTableSet();\n    void add(int value);\n    bool contains(int value) const;\n    void remove(int value);\n    void printStructure() const;\n\n    void trimChains(int k);\n\nprivate:\n    HashTableNode** m_elements;\n    int m_size;\n    int m_capacity;\n    int hashCode(int value) const;\n};\n\n#endif\n\n\n\n\n\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/HeapPriorityQueue.cpp",
    "content": "/*\n * CS 106B, Marty Stepp\n * This file implements the HeapPriorityQueue class.\n *\n * @version 2015/07/29\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"HeapPriorityQueue.h\"\n#include <string>\n#include \"error.h\"\n#include \"strlib.h\"\n#include \"vector.h\"\n#undef INTERNAL_INCLUDE\n\nHeapPriorityQueue::HeapPriorityQueue(PQEntry* elements, int capacity, int mysize) {\n    this->elements = elements;\n    this->capacity = capacity;\n    this->mysize = mysize;\n    this->hackPQ = new PriorityQueue<string>();\n}\n\nHeapPriorityQueue::~HeapPriorityQueue() {\n    if (elements) {\n        delete[] elements;\n    }\n    delete hackPQ;\n}\n\nvoid HeapPriorityQueue::changePriority(string value, double newPriority) {\n    hackPQ->changePriority(value, newPriority);\n}\n\nvoid HeapPriorityQueue::clear() {\n    hackPQ->clear();\n    mysize = hackPQ->size();\n}\n\nstring HeapPriorityQueue::dequeue() {\n    string result = hackPQ->dequeue();\n    mysize = hackPQ->size();\n    return result;\n}\n\nvoid HeapPriorityQueue::enqueue(string value, double priority) {\n    hackPQ->enqueue(value, priority);\n    mysize = hackPQ->size();\n}\n\nbool HeapPriorityQueue::isEmpty() const {\n    return hackPQ->isEmpty();\n}\n\nstring HeapPriorityQueue::peek() const {\n    return hackPQ->peek();\n}\n\ndouble HeapPriorityQueue::peekPriority() const {\n    return hackPQ->peekPriority();\n}\n\nvoid HeapPriorityQueue::printSideways(int index, string indent) const {\n    if (index <= size()) {\n        printSideways(index*2+1, indent + \"    \");   // right\n        string value    = hackPQ->__getValueFromHeap(index-1);\n        double priority = hackPQ->__getPriorityFromHeap(index-1);\n        cout << indent << value << \":\" << priority << endl;\n        printSideways(index*2, indent + \"    \");     // left\n    }\n}\n\nint HeapPriorityQueue::size() const {\n    return mysize;\n}\n\nstring HeapPriorityQueue::toString() const {\n    ostringstream out;\n    out << *this;\n    return out.str();\n}\n\nostream& operator <<(ostream& out, const HeapPriorityQueue& pq) {\n    out << *pq.hackPQ;\n    return out;\n}\n\nistream& operator >>(istream& input, HeapPriorityQueue& pq) {\n    char ch = '\\0';\n    input >> ch;\n    if (ch != '{') {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n        error(\"HeapPriorityQueue::operator >>: Missing {\");\n#endif\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n    pq.clear();\n    input >> ch;\n    if (ch != '}') {\n        input.unget();\n        while (true) {\n            std::string value;\n            if (!readGenericValue(input, value)) {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n                error(\"HeapPriorityQueue::operator >>: parse error\");\n#endif\n                return input;\n            }\n            input >> ch;\n            if (ch != ':') {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n                error(\"HeapPriorityQueue::operator >>: Missing colon after priority\");\n#endif\n                input.setstate(std::ios_base::failbit);\n                return input;\n            }\n            double priority = 0.0;\n            input >> priority;\n            pq.enqueue(value, priority);\n            \n            input >> ch;\n            if (ch == '}') {\n                break;\n            }\n            if (ch != ',') {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n                error(std::string(\"HeapPriorityQueue::operator >>: Unexpected character \") + ch);\n#endif\n                input.setstate(std::ios_base::failbit);\n                return input;\n            }\n        }\n    }\n    return input;\n}\n\nvoid stringToPQ(HeapPriorityQueue& pq, string elements) {\n    Vector<string> pairs = stringSplit(elements, \", \");\n    for (string pair : pairs) {\n        Vector<string> parts = stringSplit(pair, \":\");\n        string value = parts[0];\n        int priority = stringToInteger(parts[1]);\n        pq.enqueue(value, priority);\n    }\n}\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/HeapPriorityQueue.h",
    "content": "/*\n * CS 106B, Marty Stepp\n * This file declares the HeapPriorityQueue class.\n *\n * @version 2015/07/29\n */\n\n#ifndef _heappriorityqueue_h\n#define _heappriorityqueue_h\n\n#include <fstream>\n#include <iostream>\n#include <string>\n#include \"pqueue.h\"\n\nusing namespace std;\n\nstruct PQEntry {\n    string data;\n    double priority;\n};\n\nclass HeapPriorityQueue {\npublic:\n    HeapPriorityQueue(PQEntry* elements = nullptr, int capacity = 10, int mysize = 0);\n    ~HeapPriorityQueue();\n    void changePriority(string value, double newPriority);\n    void clear();\n    string dequeue();\n    void enqueue(string value, double priority);\n    bool isEmpty() const;\n    string peek() const;\n    double peekPriority() const;\n    void printSideways(int index = 1, string indent = \"\") const;\n    int size() const;\n    string toString() const;\n    \n    friend ostream& operator <<(ostream& out, const HeapPriorityQueue& pq);\n    friend istream& operator >>(istream& input, HeapPriorityQueue& pq);\n    \n    // exam problems\n    int atLevel(int level) const;\n\nprivate:\n    PQEntry* elements;   // array of element data\n    int capacity;        // length of elements array\n    int mysize;          // number of elements that have been added\n    \n    PriorityQueue<string>* hackPQ;\n};\n\n// \"a:4, b:16, c:7\" => PQ\nvoid stringToPQ(HeapPriorityQueue& pq, string elements);\n\n#endif\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/LinkedIntList.cpp",
    "content": "/*\n * LinkedIntList.cpp implements the LinkedIntList class behavior declared in LinkedIntList.h.\n *\n * @version 2016/11/11\n * - made into template class\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"LinkedIntList.h\"\n#undef INTERNAL_INCLUDE\n\nLinkedIntList::LinkedIntList()\n        : front(nullptr), m_locked(false) {\n    // empty\n}\n\n/*\n * Constructs a new empty list storing the given elements.\n */\nLinkedIntList::LinkedIntList(std::initializer_list<int> list)\n        : front(nullptr), m_locked(false) {\n    for (int n : list) {\n        add(n);\n    }\n}\n\nLinkedIntList::~LinkedIntList() {\n    m_locked = false;\n    clear();\n}\n\nvoid LinkedIntList::add(int value) {\n    checkLocked(\"add\");\n    if (!front) {\n        // empty list: add this node as the new front\n        front = new ListNode(value);\n    } else {\n        // non-empty list: move to end, attach new node\n        ListNode* current = front;\n        while (current->next) {\n            current = current->next;\n        }\n        current->next = new ListNode(value);\n    }\n}\n\nvoid LinkedIntList::clear() {\n    checkLocked(\"clear\");\n    while (front) {\n        ListNode* temp = front;\n        front = front->next;\n        delete temp;\n    }\n}\n\nint LinkedIntList::get(int index) const {\n    checkLocked(\"get\");\n    checkIndex(index, 0, size() - 1);\n    ListNode* current = front;\n    for (int i = 0; i < index; i++) {\n        current = current->next;\n    }\n    return current->data;\n}\n\nvoid LinkedIntList::insert(int index, int value) {\n    checkLocked(\"insert\");\n    checkIndex(index, 0, size());\n    if (index == 0) {\n        ListNode* temp = front;\n        front = new ListNode(value, temp);\n    } else {\n        ListNode* current = front;\n        for (int i = 0; i < index - 1; i++) {\n            current = current->next;\n        }\n        ListNode* temp = current->next;\n        current->next = new ListNode(value, temp);\n    }\n}\n\nbool LinkedIntList::isEmpty() const {\n    return front == nullptr;\n}\n\nvoid LinkedIntList::remove(int index) {\n    checkLocked(\"remove\");\n    checkIndex(index, 0, size() - 1);\n    ListNode* trash;\n    if (index == 0) {\n        trash = front;\n        front = front->next;\n    } else {\n        ListNode* curr = front;\n        for (int i = 0; i < index-1; i++) {\n            curr = curr->next;\n        }\n        trash = curr->next;\n        curr->next = curr->next->next;\n    }\n    delete trash;\n}\n\nvoid LinkedIntList::set(int index, int value) {\n    checkLocked(\"set\");\n    checkIndex(index, 0, size() - 1);\n    ListNode* current = front;\n    for (int i = 0; i < index; i++) {\n        current = current->next;\n    }\n    current->data = value;\n}\n\nint LinkedIntList::size() const {\n    checkLocked(\"size\");\n    int count = 0;\n    ListNode* current = front;\n    while (current) {\n        count++;\n        current = current->next;\n    }\n    return count;\n}\n\n// TODO: put printing code into operator <<, call that from toString\nstd::string LinkedIntList::toString() const {\n    std::ostringstream out;\n    out << *this;\n    return out.str();\n}\n\nvoid LinkedIntList::setLocked(bool locked) {\n    m_locked = locked;\n}\n\nvoid LinkedIntList::checkIndex(int index, int min, int max) const {\n    if (index < min || index > max) {\n        throw std::string(\"Invalid index\");\n    }\n}\n\nvoid LinkedIntList::checkLocked(std::string memberName) const {\n    if (m_locked) {\n        error(\"LinkedIntList forbidden from calling member function \" + memberName);\n    }\n}\n\nLinkedIntList& LinkedIntList::operator =(const LinkedIntList& src) {\n    if (this != &src) {\n        // deep copy\n        clear();\n        for (int i = 0; i < src.size(); i++) {\n            add(src.get(i));\n        }\n    }\n    return *this;\n}\n\nstd::ostream& operator <<(std::ostream& out, const LinkedIntList& list) {\n    if (list.isEmpty()) {\n        out << \"{}\";\n    } else {\n        out << list.front;\n    }\n    return out;\n}\n\nstd::istream& operator >>(std::istream& input, LinkedIntList& list) {\n    char ch = '\\0';\n    input >> ch;\n    if (ch != '{') {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n        error(\"LinkedIntList::operator >>: Missing {\");\n#endif\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n    list.clear();\n    input >> ch;\n    if (ch != '}') {\n        input.unget();\n        while (true) {\n            int value;\n            if (!readGenericValue(input, value)) {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n                error(\"LinkedIntList::operator >>: parse error\");\n#endif\n                return input;\n            }\n            list.add(value);\n            input >> ch;\n            if (ch == '}') {\n                break;\n            } else if (ch != ',') {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n                error(std::string(\"LinkedIntList::operator >>: Unexpected character \") + ch);\n#endif\n                input.setstate(std::ios_base::failbit);\n                return input;\n            }\n        }\n    }\n    return input;\n}\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/LinkedIntList.h",
    "content": "/*\n * LinkedIntList is an example of a second implementation of a basic data structure.\n * A LinkedIntList is a sequential collection of integers stored with 0-based integer\n * indexes and internally represented as a list of linked node structures.\n *\n * @version 2019/05/17\n * - added AssassinNode\n * @version 2018/03/19\n * - changed nullptr output to {}\n * @version 2016/11/11\n * - made into template class\n * @version 2016/08/23\n * - added initializer_list support to match other lib collections\n */\n\n#ifndef _linkedintlist_h\n#define _linkedintlist_h\n\n#include <initializer_list>\n#include <iostream>\n#include <string>\n#include \"collections.h\"\n#include \"error.h\"\n#include \"hashset.h\"\n#include \"strlib.h\"\n#include \"vector.h\"\n\n/*\n * The internal structure representing a single node.\n */\ntemplate <typename T>\nclass ListNodeGen {\npublic:\n    // global count of how many nodes have been created/destroyed\n    static int s_allocated;\n    static int s_freed;\n\n    T data;           // element stored in each node\n    ListNodeGen<T>* next;   // pointer to the next node (null if none)\n\n    ListNodeGen(T d = T(), ListNodeGen<T>* n = nullptr);\n    ~ListNodeGen();\n\n    static void printChain(ListNodeGen<T>* list, std::string name = \"list\", int maxLength = 10);\n};\n\ntemplate <typename T>\nstd::ostream& operator <<(std::ostream& out, ListNodeGen<T>* front);\n\ntemplate <typename T>\nstd::istream& operator >>(std::istream& input, ListNodeGen<T>*& front);\n\n\n// begin \"cpp\" section of ListNode\n\ntemplate <typename T>\nint ListNodeGen<T>::s_allocated = 0;\n\ntemplate <typename T>\nint ListNodeGen<T>::s_freed = 0;\n\ntemplate <typename T>\nListNodeGen<T>::ListNodeGen(T d, ListNodeGen<T>* n) {\n    data = d;\n    next = n;\n    s_allocated++;\n}\n\ntemplate <typename T>\nListNodeGen<T>::~ListNodeGen() {\n    s_freed++;\n    next = nullptr;\n}\n\ntemplate <typename T>\nvoid ListNodeGen<T>::printChain(ListNodeGen<T>* list, std::string name, int maxLength) {\n    std::cout << name << \": \";\n    if (!list) {\n        std::cout << \"nullptr\" << std::endl;\n    } else {\n        ListNodeGen<T>* curr = list;\n        bool hasCycle = false;\n        for (int i = 0; curr && (maxLength <= 0 || i < maxLength); i++, curr = curr->next) {\n            std::cout << curr->data;\n            if (curr->next) {\n                std::cout << \" -> \";\n            }\n            if (i == maxLength - 1) {\n                std::cout << \" ... (cycle)\";\n                hasCycle = true;\n            }\n        }\n        if (!hasCycle) {\n            std::cout << \" /\";\n        }\n        std::cout << std::endl;\n    }\n}\n\ntemplate <typename T>\nstd::ostream& operator <<(std::ostream& out, ListNodeGen<T>* front) {\n    if (!front) {\n        // out << \"nullptr\";\n        out << \"{}\";\n    } else {\n        out << \"{\";\n        if (front) {\n            HashSet<ListNodeGen<T>*> visited;\n            writeGenericValue(out, front->data, /* forceQuotes */ true);\n            visited.add(front);\n\n            ListNodeGen<T>* curr = front->next;\n            while (curr) {\n                out << \", \";\n                writeGenericValue(out, curr->data, /* forceQuotes */ true);\n                if (visited.contains(curr)) {\n                    out << \" (cycle!)\";\n                    break;\n                }\n\n                visited.add(curr);\n                curr = curr->next;\n            }\n        }\n        out << \"}\";\n    }\n    return out;\n}\n\ntemplate <typename T>\nstd::istream& operator >>(std::istream& input, ListNodeGen<T>*& front) {\n    // read into a vector first (yeah yeah, wastes some space, oh well)\n    Vector<T> vec;\n    T element;\n    stanfordcpplib::collections::readCollection(input, vec, element, /* descriptor */ \"ListNode::operator >>\");\n\n    // now convert into a linked list\n    if (vec.isEmpty()) {\n        front = nullptr;\n    } else {\n        front = new ListNodeGen<T>(vec[0]);\n        ListNodeGen<T>* curr = front;\n        for (int i = 1; i < vec.size(); i++) {\n            curr->next = new ListNodeGen<T>(vec[i]);\n            curr = curr->next;\n        }\n    }\n\n    return input;\n}\n\ntypedef ListNodeGen<int> ListNode;\ntypedef ListNodeGen<int> ListNodeInt;\ntypedef ListNodeGen<double> ListNodeDouble;\ntypedef ListNodeGen<std::string> ListNodeString;\ntypedef ListNodeGen<std::string> AssassinNode;\n\n// end \"cpp\" section of ListNode\n\n\nclass LinkedIntList {\npublic:\n    LinkedIntList();\n    LinkedIntList(std::initializer_list<int> list);\n    ~LinkedIntList();\n\n    void add(int value);\n    void clear();\n    int get(int index) const;\n    void insert(int index, int value);\n    bool isEmpty() const;\n    void remove(int index);\n    void set(int index, int value);\n    int size() const;\n    std::string toString() const;\n\n    // section problems\n    void setLocked(bool locked);\n    int min() const;\n    bool isSorted() const;\n    int countDuplicates() const;\n    void stutter();\n    int deleteBack();\n    void split();\n    void removeAll(int value);\n    void doubleList();\n    void rotate();\n    void reverse();\n    void consume(LinkedIntList& list2);\n    void transferEvens(LinkedIntList& list2);\n\n    // exam questions\n    void chopBothSides(int k);\n    void combineDuplicates();\n    void expand(int k);\n    bool isSortedBy(int k) const;\n    void mergeUpTo(int max);\n    void partitionSort();\n    bool removeRange(int min, int max);\n\n    LinkedIntList& operator =(const LinkedIntList& src);\n\n    // declared here so they can access front\n    friend std::ostream& operator <<(std::ostream& out, const LinkedIntList& list);\n    friend std::istream& operator >>(std::istream& input, LinkedIntList& list);\n\nprivate:\n    ListNode* front;   // pointer to front node in list;  null if empty\n\n    bool m_locked;     // whether to forbid method calls (for problems)\n\n    void checkIndex(int index, int min, int max) const;\n    void checkLocked(std::string memberName = \"\") const;\n};\n\n#endif // _linkedintlist_h\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/codestepbystep.cpp",
    "content": "/*\n * @version 2019/05/17\n * - add AssassinNode support\n * @version 2018/12/16\n * - improved printing of real numbers to XML output\n * @version 2017/11/12\n * - added output limit of 100k chars to avoid infinite student solution output\n * @version 2017/10/06\n * - hid POSIX signal handler behind preprocessor macro\n * @version 2016/12/07\n * - added assert* methods\n */\n\n#include <climits>\n#define INTERNAL_INCLUDE 1\n#include \"codestepbystep.h\"\n#define INTERNAL_INCLUDE 1\n#include \"exceptions.h\"\n#define INTERNAL_INCLUDE 1\n#include \"map.h\"\n#define INTERNAL_INCLUDE 1\n#include \"plainconsole.h\"\n#undef INTERNAL_INCLUDE\n\n#ifndef SIGSTACK\n#define SIGSTACK (static_cast<int>(0xdeadbeef))\n#endif // SIGSTACK\n\nextern void startupMainDontRunMain(int argc, char** argv);\n\nnamespace CodeStepByStep {\nstatic std::string __testToRun = \"\";\nstatic bool __runAllTests = false;\nstatic std::string __xmlOutFilename;\nstatic std::ofstream* __xout = nullptr;\nstatic void (*old_terminate)() = nullptr;\n\n// only use these if we can't use __getXmlOut (e.g. in a signal handler)\nstatic FILE* __xfout = nullptr;\n\nstd::string testToRun() {\n    return __testToRun;\n}\n\nbool runAllTests() {\n    return __runAllTests;\n}\n\nstd::string htmlDecode(const std::string& s) {\n    return ::htmlDecode(s);\n}\n\nstd::string htmlEncode(const std::string& s) {\n    return ::htmlEncode(s);\n}\n\nstd::ofstream& __getXmlOut() {\n    if (!__xout) {\n        __xout = new std::ofstream();\n    }\n    return *__xout;\n}\n\nvoid printXml(const std::string& s) {\n    __getXmlOut() << s;\n}\n\nvoid printlnXml(const std::string& s) {\n    __getXmlOut() << s << std::endl;\n}\n\nvoid printXml(bool b) {\n    __getXmlOut() << std::boolalpha << b;\n}\n\nvoid printlnXml(bool b) {\n    __getXmlOut() << std::boolalpha << b << std::endl;\n}\n\nvoid printXml(double d) {\n    // stop C++ from printing large values in scientific notation\n    // (the values below seem to be the thresholds at which auto scientific\n    // notation starts to be used in printing output of real numbers)\n    const double SCI_NOTATION_POS = 1.0e6;\n    const double SCI_NOTATION_NEG = -1.0e6;\n\n    std::string result;\n    std::stringstream out;\n    if (d >= SCI_NOTATION_POS || d <= SCI_NOTATION_NEG) {\n        // in sci. notation range; print in 'fixed' precision mode\n        // (need to manually set max precision to avoid truncation at ~6 digits)\n        out << std::fixed << std::showpoint << std::setprecision(std::numeric_limits<double>::max_digits10) << d;\n    } else {\n        // not in sci. notation range; print in normal format, but\n        // mandate decimal point, e.g. 4 => \"4.0\"\n        out << std::showpoint << d;\n    }\n    result = out.str();\n\n    // stop unnecessary 0 digits after decimal\n    // e.g. \"123.4560000\" => \"123.456\"\n    // e.g. \"123.0000000\" => \"123.0\"\n    while (endsWith(result, \"0\")) {\n        result.erase(result.length() - 1, 1);\n    }\n    if (result.empty() || endsWith(result, \".\")) {\n        result += \"0\";\n    }\n\n    // actually write the real number to the output stream\n    __getXmlOut() << result;\n}\n\nvoid printlnXml(double d) {\n    printXml(d);\n    __getXmlOut() << std::endl;\n}\n\n// print in fixed mode, not scientific notation\nvoid printXml(float f) {\n    __getXmlOut() << std::fixed << std::showpoint << f;\n}\n\nvoid printlnXml(float f) {\n    printXml(static_cast<double>(f));\n    __getXmlOut() << std::endl;\n}\n\nstd::string __stackTraceToString() {\n    std::ostringstream out;\n    exceptions::printStackTrace(out);\n    return out.str();\n}\n\nvoid __printException(const std::string& type, const std::string& message,\n                      const std::string& stacktrace, int lineNumber) {\n    CodeStepByStep::__getXmlOut() << \"<exception>\\n\"\n            << \"<type>\" << type << \"</type>\" << std::endl\n            << \"<message>\" << htmlEncode(message) << \"</message>\" << std::endl\n            << \"<line>\" << lineNumber << \"</line>\" << std::endl\n            << \"<stacktrace>\" << htmlEncode(stacktrace) << \"</stacktrace>\" << std::endl\n            << \"</exception>\" << std::endl;\n    CodeStepByStep::__getXmlOut().flush();\n}\n\nvoid __openXmlOldWay(const std::string& filename) {\n    if (__xout) {\n        __getXmlOut().flush();\n        __getXmlOut().close();\n        __xout = nullptr;\n    }\n    __xfout = fopen(filename.c_str(), \"a+\");   // open for appending\n}\n\nvoid __closeXml() {\n    if (__xout) {\n        __getXmlOut().close();\n    }\n    if (__xfout) {\n        fclose(__xfout);\n        __xfout = nullptr;\n    }\n}\n\nvoid __printXml(const char* s) {\n    fputs(s, __xfout);\n    fflush(__xfout);\n}\n\nvoid __printXml(const std::string& s) {\n    fputs(s.c_str(), __xfout);\n    fflush(__xfout);\n}\n\nvoid __printlnXml(const char* s) {\n    fputs(s, __xfout);\n    fputs(\"\\n\", __xfout);\n    fflush(__xfout);\n}\n\nvoid __printlnXml(const std::string& s) {\n    fputs(s.c_str(), __xfout);\n    fputs(\"\\n\", __xfout);\n    fflush(__xfout);\n}\n\n\n// functions to parse various collections from strings\nvoid ArrayIntList_fromString(ArrayIntList& list, const std::string& str) {\n    std::istringstream input(str);\n    input >> list;\n}\n\nvoid AssassinNode_fromString(AssassinNode*& ptr, const std::string& str) {\n    std::istringstream input(str);\n    input >> ptr;\n}\n\nvoid BasicGraph_fromString(BasicGraph& graph, const std::string& str) {\n    std::istringstream input(str);\n    input >> graph;\n}\n\nvoid BinaryTree_fromString(BinaryTree& tree, const std::string& str) {\n    std::istringstream input(str);\n    input >> tree;\n}\n\nvoid BinaryTreeNode_fromString(BinaryTreeNode*& root, const std::string& str) {\n    std::istringstream input(str);\n    input >> root;\n}\n\nvoid BinaryTreeNodeptr_fromString(BinaryTreeNode*& root, const std::string& str) {\n    std::istringstream input(str);\n    input >> root;\n}\n\nvoid BinaryTreeNodeChar_fromString(BinaryTreeNodeChar*& root, const std::string& str) {\n    std::istringstream input(str);\n    input >> root;\n}\n\nvoid BinaryTreeNodeCharptr_fromString(BinaryTreeNodeChar*& root, const std::string& str) {\n    std::istringstream input(str);\n    input >> root;\n}\n\nvoid BinaryTreeNodeDouble_fromString(BinaryTreeNodeDouble*& root, const std::string& str) {\n    std::istringstream input(str);\n    input >> root;\n}\n\nvoid BinaryTreeNodeString_fromString(BinaryTreeNodeString*& root, const std::string& str) {\n    std::istringstream input(str);\n    input >> root;\n}\n\nvoid HeapPriorityQueue_fromString(HeapPriorityQueue& pqueue, const std::string& str) {\n    std::istringstream input(str);\n    input >> pqueue;\n}\n\nvoid LinkedIntList_fromString(LinkedIntList& list, const std::string& str) {\n    std::istringstream input(str);\n    input >> list;\n}\n\nvoid ListNode_fromString(ListNode*& ptr, const std::string& str) {\n    std::istringstream input(str);\n    input >> ptr;\n}\n\nvoid ListNodeptr_fromString(ListNode*& ptr, const std::string& str) {\n    std::istringstream input(str);\n    input >> ptr;\n}\n\nvoid ListNodeDouble_fromString(ListNodeDouble*& ptr, const std::string& str) {\n    std::istringstream input(str);\n    input >> ptr;\n}\n\nvoid ListNodeDoubleptr_fromString(ListNodeDouble*& ptr, const std::string& str) {\n    std::istringstream input(str);\n    input >> ptr;\n}\n\nvoid ListNodeString_fromString(ListNodeString*& ptr, const std::string& str) {\n    std::istringstream input(str);\n    input >> ptr;\n}\n\nvoid ListNodeStringptr_fromString(ListNodeString*& ptr, const std::string& str) {\n    std::istringstream input(str);\n    input >> ptr;\n}\n\nSet<string> setFromFile(const std::string& filename, bool cache) {\n    static Map<std::string, Set<string>> CACHE;\n    if (cache && CACHE.containsKey(filename)) {\n        return CACHE[filename];\n    }\n\n    ifstream input;\n    input.open(filename.c_str());\n    Set<string> result;\n    string line;\n    while (getline(input, line)) {\n        result.add(toLowerCase(trim(line)));\n    }\n    if (cache) {\n        CACHE[filename] = result;\n    }\n    return result;\n}\n\n\n// CODE FOR HANDLING SIGNALS (VARIOUS PROGRAM CRASHES)\nvoid __codeStepByStepSignalHandler(int sig) {\n    signal(sig, SIG_DFL);   // turn signal handler off\n\n    // tailor the error message to the kind of signal that occurred\n    CodeStepByStep::__closeXml();\n    __openXmlOldWay(__xmlOutFilename);\n    if (sig == SIGSEGV) {\n        __printXml(\"<exception>\\n<type>SIGSEGV</type>\\n<message>segmentation fault</message>\\n</exception>\\n\");\n    } else if (sig == SIGABRT) {\n        __printXml(\"<exception>\\n<type>SIGABRT</type>\\n<message>abort</message>\\n</exception>\\n\");\n    } else if (sig == SIGILL) {\n        __printXml(\"<exception>\\n<type>SIGILL</type>\\n<message>illegal instruction</message>\\n</exception>\\n\");\n    } else if (sig == SIGFPE) {\n        __printXml(\"<exception>\\n<type>SIGFPE</type>\\n<message>arithmetic error</message>\\n</exception>\\n\");\n    } else if (sig == SIGINT) {\n        __printXml(\"<exception>\\n<type>SIGINT</type>\\n<message>interrupt error</message>\\n</exception>\\n\");\n    } else if (sig == SIGSTACK) {\n        __printXml(\"<exception>\\n<type>SIGSTACK</type>\\n<message>stack overflow</message>\\n</exception>\\n\");\n    } else if (sig == SIGTERM) {\n        __printXml(\"<exception>\\n<type>SIGTERM</type>\\n<message>terminated</message>\\n</exception>\\n\");\n    } else if (sig == SIGUSR1) {\n        __printXml(\"<exception>\\n<type>SIGUSR1</type>\\n<message>Excessive output printed; you may have an infinite loop in your code.</message>\\n</exception>\\n\");\n    } else {\n        __printXml(\"<exception>\\n<type>SIGFATAL</type>\\n<message>fatal error</message>\\n</exception>\\n\");\n    }\n\n    if (__runAllTests) {\n        __printXml(\"</test>\\n\");\n        __printXml(\"</tests>\\n\");\n    }\n\n    __closeXml();\n    std::exit(1);\n}\n\n#if !defined(_WIN32)\nvoid __posixSignalHandler(int sig, siginfo_t* /*siginfo*/, void* /*context*/) {\n    __codeStepByStepSignalHandler(sig);\n}\n#endif // !defined(_WIN32)\n\nstatic void __setupSignalHandler() {\n    bool handled = false;\n#ifdef SHOULD_USE_SIGNAL_STACK\n#if !defined(_WIN32)\n    // alternate stack on Linux for stack overflows\n    static uint8_t alternate_stack[SIGSTKSZ];\n    stack_t ss = {};\n    ss.ss_sp = (void*) alternate_stack;\n    ss.ss_size = SIGSTKSZ;\n    ss.ss_flags = 0;\n    sigaltstack(&ss, nullptr);\n\n    struct sigaction sig_action = {};\n    sig_action.sa_sigaction = __posixSignalHandler;\n    sigemptyset(&sig_action.sa_mask);\n#ifdef __APPLE__\n    // backtrace() doesn't work on OS X when we use an alternate stack\n    sig_action.sa_flags = SA_SIGINFO;\n#else\n    sig_action.sa_flags = SA_SIGINFO | SA_ONSTACK;\n#endif // __APPLE__\n    sigaction(SIGSEGV, &sig_action, nullptr);\n    sigaction(SIGFPE,  &sig_action, nullptr);\n    sigaction(SIGILL,  &sig_action, nullptr);\n    sigaction(SIGTERM, &sig_action, nullptr);\n    sigaction(SIGINT,  &sig_action, nullptr);\n    sigaction(SIGABRT, &sig_action, nullptr);\n    sigaction(SIGUSR1, &sig_action, nullptr);\n    handled = true;\n#endif\n#endif // SHOULD_USE_SIGNAL_STACK\n\n    if (!handled) {\n        signal(SIGABRT, CodeStepByStep::__codeStepByStepSignalHandler);\n        signal(SIGFPE,  CodeStepByStep::__codeStepByStepSignalHandler);\n        signal(SIGILL,  CodeStepByStep::__codeStepByStepSignalHandler);\n        signal(SIGINT,  CodeStepByStep::__codeStepByStepSignalHandler);\n        signal(SIGSEGV, CodeStepByStep::__codeStepByStepSignalHandler);\n        signal(SIGTERM, CodeStepByStep::__codeStepByStepSignalHandler);\n        signal(SIGUSR1, CodeStepByStep::__codeStepByStepSignalHandler);\n    }\n}\n\nstatic void __disableSignalHandler() {\n    signal(SIGABRT, SIG_DFL);\n    signal(SIGFPE,  SIG_DFL);\n    signal(SIGILL,  SIG_DFL);\n    signal(SIGINT,  SIG_DFL);\n    signal(SIGSEGV, SIG_DFL);\n    signal(SIGTERM, SIG_DFL);\n    signal(SIGUSR1, SIG_DFL);\n}\n\nstatic void __terminateHandler() {\n    __disableSignalHandler();   // don't want both a signal AND a terminate() call\n\n    std::string stackTrace;\n    try {\n        std::ostringstream out;\n        exceptions::printStackTrace(out);\n        stackTrace = out.str();\n        throw;   // re-throws the exception that already occurred\n    } catch (int value) {\n        CodeStepByStep::__printException(\"int\", integerToString(value), stackTrace);\n    } catch (long value) {\n        CodeStepByStep::__printException(\"long\", longToString(value), stackTrace);\n    } catch (float value) {\n        CodeStepByStep::__printException(\"float\", doubleToString((double) value), stackTrace);\n    } catch (double value) {\n        CodeStepByStep::__printException(\"double\", doubleToString(value), stackTrace);\n    } catch (bool value) {\n        CodeStepByStep::__printException(\"bool\", boolToString(value), stackTrace);\n    } catch (char value) {\n        CodeStepByStep::__printException(\"char\", \"'\" + charToString(value) + \"'\", stackTrace);\n    } catch (std::string value) {\n        CodeStepByStep::__printException(\"string\", value, stackTrace);\n    } catch (const char* value) {\n        CodeStepByStep::__printException(\"string\", value, stackTrace);\n    } catch (ErrorException value) {\n        CodeStepByStep::__printException(\"ErrorException\", value.what(), stackTrace);\n    } catch (std::exception& value) {\n        CodeStepByStep::__printException(\"exception\", value.what(), stackTrace);\n    } catch (...) {\n        CodeStepByStep::__printException(\"unknown\", \"\", stackTrace);\n    }\n\n    if (CodeStepByStep::__runAllTests) {\n        CodeStepByStep::__getXmlOut() << \"</test>\" << std::endl;\n        CodeStepByStep::__getXmlOut() << \"</tests>\" << std::endl;\n    }\n    CodeStepByStep::__closeXml();\n}\n\n\nvoid main_begin(int argc, char** argv) {\n    // initialize Stanford library\n    // TODO\n    // __initializeStanfordCppLibrary(argc, argv);\n\n    // set up signal handler to process serious errors\n    CodeStepByStep::__setupSignalHandler();\n    CodeStepByStep::old_terminate = std::set_terminate(CodeStepByStep::__terminateHandler);\n\n    // echo console input\n    plainconsole::setEcho(true);\n\n    // max amount of output a solution can print before it should be halted\n    const int __OUTPUT_PRINT_MAX = 100000;\n    plainconsole::setOutputLimit(__OUTPUT_PRINT_MAX);\n\n    // parse command-line args\n    CodeStepByStep::__testToRun = \"\";\n    for (int i = 1; i < argc; i++) {\n        std::string arg = argv[i];\n        if (i < argc - 1 && arg == \"--test\") {\n            CodeStepByStep::__testToRun = argv[i + 1];\n        } else if (arg == \"--all\") {\n            CodeStepByStep::__testToRun = \"--all\";\n            CodeStepByStep::__runAllTests = true;\n        } else if (i < argc - 1 && arg == \"--xml\") {\n            CodeStepByStep::__xmlOutFilename = argv[i + 1];\n            CodeStepByStep::__getXmlOut().open(argv[i + 1]);\n            // CodeStepByStep::__openXml(__xmlOutFilename);\n        }\n    }\n\n    if (CodeStepByStep::__runAllTests) {\n        // output XML prolog\n        CodeStepByStep::__getXmlOut() << \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\" << std::endl\n                << \"<tests>\" << std::endl;\n        CodeStepByStep::__getXmlOut().flush();\n    }\n}\n\nvoid main_end() {\n    if (CodeStepByStep::__runAllTests) {\n        CodeStepByStep::__getXmlOut() << \"</tests>\" << std::endl;\n        CodeStepByStep::__getXmlOut().flush();\n    }\n\n    CodeStepByStep::__closeXml();\n}\n\n\nnamespace Assertions {\nvoid assertEqualsBool(const std::string& msg, bool expected, bool actual) {\n    assertEquals(msg, \"bool\", boolToString(expected), boolToString(actual));\n}\n\nvoid assertEqualsChar(const std::string& msg, char expected, char actual) {\n    assertEquals(msg, \"char\", charToString(expected), charToString(actual));\n}\n\nvoid assertEqualsDouble(const std::string& msg, double expected, double actual, double tolerance) {\n    Map<std::string, std::string> attrs;\n    attrs[\"tolerance\"] = doubleToString(tolerance);\n    assertEquals(msg, \"double\", doubleToString(expected), doubleToString(actual), attrs);\n}\n\nvoid assertEqualsInt(const std::string& msg, int expected, int actual) {\n    assertEquals(msg, \"int\", integerToString(expected), integerToString(actual));\n}\n\nvoid assertEqualsString(const std::string& msg, std::string expected, std::string actual) {\n    assertEquals(msg, \"string\", expected, actual);\n}\n\nvoid assertTrue(const std::string& msg, bool test) {\n    assertionPrint(msg, \"assertTrue\", \"bool\", \"true\", boolToString(test));\n}\n\nvoid assertFalse(const std::string& msg, bool test) {\n    assertionPrint(msg, \"assertFalse\", \"bool\", \"false\", boolToString(test));\n}\n\nvoid assertFail(const std::string& msg) {\n    assertionPrint(msg, \"assertFail\", \"bool\", /* expected */ \"pass\", /* actual */ \"fail\");\n}\n\nvoid setTestName(const std::string& name) {\n    assertionPrint(/* message */ name, \"setTestName\", \"string\", /* expected */ \"\", /* actual */ \"\");\n}\n\nvoid assertionPrint(const std::string& msg,\n                    const std::string& assertType,\n                    const std::string& valueType,\n                    const std::string& expected,\n                    const std::string& actual,\n                    Map<std::string, std::string> attrs) {\n    CodeStepByStep::__getXmlOut() << \"<assertion type=\\\"\" << htmlEncode(assertType) << \"\\\"\";\n    for (std::string attr : attrs) {\n        CodeStepByStep::__getXmlOut() << \" \" << attr << \"=\\\"\" << htmlEncode(attrs[attr]) << \"\\\"\";\n    }\n    CodeStepByStep::__getXmlOut() << \">\" << std::endl;\n    CodeStepByStep::__getXmlOut() << \"<message>\" << htmlEncode(msg) << \"</message>\" << std::endl;\n    CodeStepByStep::__getXmlOut() << \"<type>\" << htmlEncode(valueType) << \"</type>\" << std::endl;\n    CodeStepByStep::__getXmlOut() << \"<expected>\" << htmlEncode(expected) << \"</expected>\" << std::endl;\n    CodeStepByStep::__getXmlOut() << \"<actual>\" << htmlEncode(actual) << \"</actual>\" << std::endl;\n    CodeStepByStep::__getXmlOut() << \"</assertion>\" << std::endl;\n}\n} // namespace CodeStepByStep::Assertions\n\n} // namespace CodeStepByStep\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/codestepbystep.h",
    "content": "/*\n * @version 2019/10/12\n * - add arrayToString template\n * @version 2019/05/17\n * - add AssassinNode support\n * @version 2019/04/24\n * - add setFromFile\n * - remove STL includes\n * @version 2017/10/06\n * - hid POSIX signal handler behind preprocessor macro\n * @version 2016/12/07\n * - added assert* methods\n */\n\n#ifndef _codestepbystep_h\n#define _codestepbystep_h\n\n// basic standard library stuff\n#include <cctype>\n#include <climits>\n#include <cmath>\n#include <csignal>\n#include <fstream>\n#include <iomanip>\n#include <iostream>\n#include <sstream>\n#include <string>\n\n//// STL\n//#include <algorithm>\n//#include <deque>\n//#include <list>\n//#include <map>\n//#include <queue>\n//#include <set>\n//#include <stack>\n//#include <vector>\n\n// Stanford lib stuff\n#define INTERNAL_INCLUDE 1\n#include \"collections.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"ArrayIntList.h\"\n#define INTERNAL_INCLUDE 1\n#include \"basicgraph.h\"\n#define INTERNAL_INCLUDE 1\n#include \"BinaryTree.h\"\n#define INTERNAL_INCLUDE 1\n#include \"HashTableMap.h\"\n#define INTERNAL_INCLUDE 1\n#include \"HashTableSet.h\"\n#define INTERNAL_INCLUDE 1\n#include \"HeapPriorityQueue.h\"\n#define INTERNAL_INCLUDE 1\n#include \"LinkedIntList.h\"\n#define INTERNAL_INCLUDE 1\n#include \"set.h\"\n#undef INTERNAL_INCLUDE\n\nnamespace CodeStepByStep {\n\nstd::string testToRun();\nbool runAllTests();\n\nstd::string htmlDecode(const std::string& s);\nstd::string htmlEncode(const std::string& s);\n\ntemplate <typename T>\nstd::string htmlEncode(const T& obj) {\n    std::ostringstream out;\n    out << obj;\n    std::string s = out.str();\n    return ::htmlEncode(s);\n}\n\nstd::ofstream& __getXmlOut();\n\nvoid printXml(const std::string& s);\n\nvoid printlnXml(const std::string& s);\n\nvoid printXml(bool b);\n\nvoid printlnXml(bool b);\n\nvoid printXml(double d);\n\nvoid printlnXml(double d);\n\nvoid printXml(float f);\n\nvoid printlnXml(float f);\n\ntemplate <typename T>\nvoid printXml(const T& value) {\n    __getXmlOut() << value;\n}\n\ntemplate <typename T>\nvoid printlnXml(const T& value) {\n    __getXmlOut() << value << std::endl;\n}\n\nstd::string __stackTraceToString();\n\nvoid __printException(const std::string& type, const std::string& message = \"\",\n                      const std::string& stacktrace = \"\", int lineNumber = -1);\n\nvoid __openXmlOldWay(const std::string& filename);\n\nvoid __closeXml();\n\nvoid __printXml(const char* s);\n\nvoid __printXml(const std::string& s);\n\nvoid __printlnXml(const char* s);\n\nvoid __printlnXml(const std::string& s);\n\n// CODE FOR HANDLING SIGNALS (VARIOUS PROGRAM CRASHES)\n// #define SIGSTACK ((int) 0xdeadbeef)\n// #define SIGUNKNOWN ((int) 0xcafebabe)\n// #define SIGTIMEOUT ((int) 0xf00df00d)\n\nvoid __codeStepByStepSignalHandler(int sig);\n#if !defined(_WIN32)\nvoid __posixSignalHandler(int sig, siginfo_t* /*siginfo*/, void* /*context*/);\n#endif // !defined(_WIN32)\n\n// function to convert an array to string for printing\ntemplate <typename T>\nstd::string arrayToString(T a[], int length) {\n    std::ostringstream out;\n    out << \"{\";\n    if (length > 0) {\n        writeGenericValue(out, a[0], /* forceQuotes */ true);\n        for (int i = 1; i < length; i++) {\n            out << \", \";\n            writeGenericValue(out, a[i], /* forceQuotes */ true);\n        }\n    }\n    out << \"}\";\n    return out.str();\n}\n\n// functions to parse various collections from strings\nvoid ArrayIntList_fromString(ArrayIntList& list, const std::string& str);\nvoid AssassinNode_fromString(AssassinNode*& ptr, const std::string& str);\nvoid BasicGraph_fromString(BasicGraph& graph, const std::string& str);\nvoid BinaryTree_fromString(BinaryTree& tree, const std::string& str);\nvoid BinaryTreeNode_fromString(BinaryTreeNode*& root, const std::string& str);\nvoid BinaryTreeNodeptr_fromString(BinaryTreeNode*& root, const std::string& str);\nvoid BinaryTreeNodeChar_fromString(BinaryTreeNodeChar*& root, const std::string& str);\nvoid BinaryTreeNodeCharptr_fromString(BinaryTreeNodeChar*& root, const std::string& str);\nvoid BinaryTreeNodeDouble_fromString(BinaryTreeNodeDouble*& root, const std::string& str);\nvoid BinaryTreeNodeString_fromString(BinaryTreeNodeString*& root, const std::string& str);\nvoid HeapPriorityQueue_fromString(HeapPriorityQueue& pqueue, const std::string& str);\nvoid LinkedIntList_fromString(LinkedIntList& list, const std::string& str);\nvoid ListNode_fromString(ListNode*& ptr, const std::string& str);\nvoid ListNodeptr_fromString(ListNode*& ptr, const std::string& str);\nvoid ListNodeDouble_fromString(ListNodeDouble*& ptr, const std::string& str);\nvoid ListNodeDoubleptr_fromString(ListNodeDouble*& ptr, const std::string& str);\nvoid ListNodeString_fromString(ListNodeString*& ptr, const std::string& str);\nvoid ListNodeStringptr_fromString(ListNodeString*& ptr, const std::string& str);\n\n// this one's body must be here in .h file because it's a template\ntemplate <typename T>\nvoid Vector_fromString(Vector<T>& v, const std::string& str) {\n    std::istringstream input(str);\n    input >> v;\n}\n\n// build a set of words from a file, a la Lexicon\n// (we use this to initialize a set of words from a file in one line)\nSet<string> setFromFile(const std::string& filename, bool cache = true);\n\n// helpers for parts of main() function\nvoid main_begin(int argc, char** argv);\nvoid main_end();\n\n// code for assertions (used in classes+objects problems)\n#ifndef _codestepbystep_assertions\n#define _codestepbystep_assertions\nnamespace Assertions {\nvoid assertionPrint(const std::string& msg,\n                    const std::string& assertType,\n                    const std::string& valueType,\n                    const std::string& expected,\n                    const std::string& actual,\n                    Map<std::string, std::string> attrs = {});\n\ntemplate <typename T>\nvoid assertEquals(const std::string& msg, const std::string& type, T expected, T actual,\n                  Map<std::string, std::string> attrs = {}) {\n    std::string expStr = genericValueToString(expected);\n    std::string actStr = genericValueToString(actual);\n    assertionPrint(msg, \"assertEquals\", type, expStr, actStr, attrs);\n}\n\ntemplate <typename T>\nvoid assertEquals(const std::string& msg, T expected, T actual,\n                  Map<std::string, std::string> attrs = {}) {\n    assertEquals(msg, \"T\", expected, actual, attrs);\n}\n\nvoid assertEqualsBool(const std::string& msg, bool expected, bool actual);\nvoid assertEqualsChar(const std::string& msg, char expected, char actual);\nvoid assertEqualsDouble(const std::string& msg, double expected, double actual, double tolerance = 0.0001);\nvoid assertEqualsInt(const std::string& msg, int expected, int actual);\nvoid assertEqualsString(const std::string& msg, std::string expected, std::string actual);\nvoid assertTrue(const std::string& msg, bool test);\nvoid assertFalse(const std::string& msg, bool test);\nvoid assertFail(const std::string& msg);\nvoid setTestName(const std::string& name);\n} // namespace CodeStepByStep::Assertions\n#endif // _codestepbystep_assertions\n\n} // namespace CodeStepByStep\n\n\n#endif // _codestepbystep_h\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/cppdoc.c",
    "content": "/*\n * File: cppdoc.c\n * --------------\n * A quick-and-dirty HTML documentation system for StanfordCPPLib.\n */\n\n#include <stdio.h>\n#include <string.h>\n#include <ctype.h>\n#include <unistd.h>\n#include \"cslib.h\"\n#include \"filelib.h\"\n#include \"foreach.h\"\n#include \"hashmap.h\"\n#include \"options.h\"\n#include \"tokenscanner.h\"\n#include \"simpio.h\"\n#include \"strlib.h\"\n#include \"vector.h\"\n\n/* Constants */\n\n#define DEFAULT_TITLE \"C++ Library Documentation\"\n\n/* Option table */\n\nstatic string OPTION_SPEC[] = {\n   \"-help\",\n   \"-list\",\n   \"-include <header>\",\n   \"-module <name>\",\n   \"-title <str>\",\n   \"-icon <filename>\",\n   \"-description <filename>\",\n   \"-out <directory>\",\n   \"-stylesheet <file>\",\n   \"-elide <cumulative>\",\n   \"-sortindex\",\n   \"-classonly\",\n   \"-generic\",\n   \"-noconst\",\n   \"-nostd\",\n   \"-novirtual\",\n   \"-notemplate\",\n   NULL\n};\n\n/* Types */\n\ntypedef struct {\n   string name;\n   string kind;\n   string module;\n   string type;\n   string superclass;\n   string *usage;\n   string *html;\n   string *code;\n} *entryT;\n\n/* Private variables */\n\nstatic FILE *outfile;\nstatic HashMap options;\nstatic HashMap moduleTable;\nstatic string stylesheet;\nstatic bool noConstFlag;\nstatic bool noStdFlag;\nstatic bool noTemplateFlag;\nstatic bool noVirtualFlag;\nstatic bool classOnlyFlag;\n\n/* Private function prototypes */\n\nstatic void initStructures();\nstatic void readDirectory(string dirname);\nstatic void scanHeaderFile(string dirname, string filename);\nstatic void dumpHTML(string dirname);\nstatic void dumpHTMLIndex(void);\nstatic void dumpModule(string module);\nstatic void dumpClasses(string module);\nstatic void dumpClass(entryT entry, Vector entries);\nstatic void dumpHeader(string module, string href);\nstatic void dumpTrailer(string module);\nstatic void dumpBodyHeader(void);\nstatic void dumpComment(entryT entry);\nstatic void dumpIndexHeader(void);\nstatic void dumpIndexTrailer(void);\nstatic void dumpIndex(Vector entries, string kind, string type);\nstatic void dumpIndexEntry(entryT entry);\nstatic void dumpDetail(Vector entries, string kind, string type);\nstatic void dumpDetailEntry(entryT entry);\nstatic string getIndexKey(entryT entry);\nstatic string getFirstSentence(entryT entry);\nstatic int findSentenceEnd(string line);\nstatic entryT findEntryOfKind(Vector entries, string kind, string type);\nstatic int countEntriesOfKind(Vector entries, string kind, string type);\nstatic void sortEntryVector(Vector entries);\nstatic void listModules(void);\nstatic void listEntry(entryT entry);\nstatic void includeFile(Vector html, string filename);\nstatic string makePlural(string word);\nstatic bool isVowel(char ch);\nstatic bool takesArguments(string kind);\nstatic bool isStatementMacro(string kind);\nstatic bool isEndOfCode(string line);\nstatic string blueComments(string str);\nstatic string quoteSpaces(string str);\nstatic string replaceAll(string str, string pattern, string replacement);\n\n/* Main entry point */\n\nmain(int argc, string argv[]) {\n   string *files;\n   int nFiles;\n\n   options = parseOptions(argv + 1, OPTION_SPEC);\n   files = getArgList(options);\n   nFiles = stringArrayLength(files);\n   stylesheet = getOption(options, \"-stylesheet\", \"cppdoc.css\");\n   noStdFlag = containsKey(options, \"-nostd\");\n   noConstFlag = containsKey(options, \"-noconst\");\n   noTemplateFlag = containsKey(options, \"-notemplate\");\n   noVirtualFlag = containsKey(options, \"-novirtual\");\n   classOnlyFlag = containsKey(options, \"-classonly\");\n   if (containsKey(options, \"-help\") || nFiles != 1) {\n      showUsage(\"cppdoc <options> <dir>\", OPTION_SPEC);\n   } else {\n      initStructures();\n      readDirectory(files[0]);\n      if (containsKey(options, \"-list\")) {\n         listModules();\n      } else {\n         dumpHTML(files[0]);\n         dumpHTMLIndex();\n      }\n   }\n}\n\nstatic void initStructures() {\n   moduleTable = newHashMap();\n}\n\nstatic void readDirectory(string dirname) {\n   string *list, name, key, elide;\n   int i;\n\n   list = listDirectory(dirname);\n   elide = concat(\"+\", concat(getOption(options, \"-elide\", \"\"), \"+\"));\n   for (i = 0; list[i] != NULL; i++) {\n      name = list[i];\n      key = concat(\"+\", concat(name, \"+\"));\n      if (endsWith(name, \".h\") && findString(key, elide, 0) == -1) {\n         scanHeaderFile(dirname, list[i]);\n      }\n   }\n}\n\n#define INITIAL_STATE 0\n#define COMMENT_START 1\n#define USAGE_START   2\n#define IN_USAGE      3\n#define IN_HTML       4\n#define IN_CODE       5\n\nstatic void scanHeaderFile(string dirname, string filename) {\n   FILE *infile;\n   entryT entry;\n   TokenScanner scanner;\n   Vector entries, usage, html, code;\n   string type, kind, name, line, superclass;\n   int state, colon, start, finish, level, n;\n\n   infile = fopen(concat(dirname, concat(\"/\", filename)), \"r\");\n   if (infile == NULL) error(\"Can't open file %s\", filename);\n   state = INITIAL_STATE;\n   entries = newVector();\n   usage = NULL;\n   html = NULL;\n   code = NULL;\n   type = \"\";\n   while (true) {\n      line = readLine(infile);\n      if (line == NULL) break;\n      switch (state) {\n       case INITIAL_STATE:\n         if (stringEqual(line, \"/*\")) state = COMMENT_START;\n         break;\n       case COMMENT_START:\n         colon = findString(\": \", line, 0);\n         if (colon < 0 || !startsWith(line, \" * \")) {\n            state = INITIAL_STATE;\n         } else {\n            name = substring(line, colon + 2, strlen(line));\n            kind = substring(line, 3, colon - 1);\n            if (stringEqual(kind, \"Class\") || stringEqual(kind, \"Type\")) {\n               type = name;\n            }\n            entry = newBlock(entryT);\n            entry->name = name;\n            entry->kind = kind;\n            entry->type = type;\n            entry->module = filename;\n            entry->superclass = NULL;\n            add(entries, entry);\n            state = USAGE_START;\n         }\n         break;\n       case USAGE_START:\n         if (startsWith(line, \" */\")) {\n            state = INITIAL_STATE;\n         } else if (startsWith(line, \" * -----\")) {\n            html = newVector();\n            state = IN_HTML;\n         } else if (startsWith(line, \" * Usage: \")) {\n            usage = newVector();\n            add(usage, trim(substring(line, 10, strlen(line))));\n            state = IN_USAGE;\n         }\n         break;\n       case IN_USAGE:\n         if (startsWith(line, \" * -----\")) {\n            html = newVector();\n            state = IN_HTML;\n         } else if (startsWith(line, \" */\")) {\n            entry->usage = (string *) vectorToArray(usage);\n            state = INITIAL_STATE;\n         } else {\n            add(usage, trim(substring(line, 10, strlen(line))));\n         }\n         break;\n       case IN_HTML:\n         if (startsWith(line, \" */\")) {\n            entry->usage = (string *) vectorToArray(usage);\n            entry->html = (string *) vectorToArray(html);\n            code = newVector();\n            state = IN_CODE;\n            level = 0;\n         } else if (findString(\"<include src=\\\"\", line, 0) != -1) {\n            start = findChar('\"', line, 0) + 1;\n            finish = findChar('\"', line, start + 1) - 1;\n            includeFile(html, substring(line, start, finish));\n         } else {\n            start = (line[2] == ' ') ? 3 : 2;\n            add(html, substring(line, start, strlen(line)));\n         }\n         break;\n       case IN_CODE:\n         if (isEndOfCode(line) || (startsWith(line, \"}\") && level == 0)) {\n            entry->code = (string *) vectorToArray(code);\n            state = startsWith(line, \"/*\") ? COMMENT_START : INITIAL_STATE;\n         } else if (startsWith(line, \"class \")) {\n            scanner = newTokenScanner();\n            setInputString(scanner, line);\n            ignoreWhitespace(scanner);\n            nextToken(scanner);\n            name = nextToken(scanner);\n            if (stringEqual(nextToken(scanner), \":\")) {\n               if (stringEqual(nextToken(scanner), \"public\")) {\n                  superclass = nextToken(scanner);\n                  if (stringEqual(nextToken(scanner), \"{\")) {\n                     entry->superclass = superclass;\n                  }\n               }\n            }\n            freeTokenScanner(scanner);\n         } else {\n            n = size(code);\n            if (n > 0 && startsWith(line, \"                \")) {\n               line = concat(\" \", trim(line));\n               set(code, n - 1, concat(get(code, n - 1), line));\n            } else {\n               add(code, line);\n            }\n            if (endsWith(line, \"{\")) level++;\n            if (startsWith(trim(line), \"}\")) level--;\n         }\n         break;\n      }\n   }\n   put(moduleTable, filename, entries);\n}\n\nstatic void dumpHTML(string dirname) {\n   string out, module, requestedModule, filename, cmd;\n\n   out = getOption(options, \"-out\", \"doc\");\n   createDirectoryPath(out);\n   requestedModule = getOption(options, \"-module\", NULL);\n   foreach (module in moduleTable) {\n      if (requestedModule == NULL || stringEqual(module, requestedModule)) {\n         filename = concat(getRoot(module), \"-h.html\");\n         filename = concat(out, concat(\"/\", filename));\n         cmd = concat(\"fillcomments -html -out \", filename);\n         if (containsKey(options, \"-stylesheet\")) {\n            cmd = concat(cmd, concat(\" -stylesheet \", stylesheet));\n         }\n         if (!classOnlyFlag) {\n            filename = concat(dirname, concat(\"/\", module));\n            cmd = concat(cmd, concat(\" \", filename));\n            system(cmd);\n            dumpModule(module);\n         }\n         dumpClasses(module);\n      }\n   }\n}\n\nstatic void dumpHTMLIndex() {\n   int ch;\n   string out, name, filename, description, title;\n   Vector classes, modules, entries;\n   FILE *infile;\n   entryT entry;\n\n   out = getOption(options, \"-out\", \"doc\");\n   filename = concat(out, \"/index.html\");\n   outfile = fopen(filename, \"w\");\n   if (outfile == NULL) error(\"Can't open %s\", getTail(filename));\n   title = getOption(options, \"-title\", DEFAULT_TITLE);\n   fprintf(outfile, \"<html>\\n\");\n   fprintf(outfile, \"<head>\\n\");\n   fprintf(outfile, \"<title>%s</title>\\n\", title);\n   if (stylesheet != NULL) {\n      fprintf(outfile, \"<link rel=\\\"stylesheet\\\" type=\\\"text/css\\\"\");\n      fprintf(outfile, \" href=\\\"%s\\\" />\\n\", stylesheet);\n   }\n   fprintf(outfile, \"</head>\\n\");\n   fprintf(outfile, \"<body>\\n\");\n   dumpBodyHeader();\n   description = getOption(options, \"-description\", \"\");\n   if (stringLength(description) != 0) {\n      infile = fopen(description, \"r\");\n      if (infile == NULL) error(\"Can't find file %s\", description);\n      while ((ch = getc(infile)) != EOF) {\n         putc(ch, outfile);\n      }\n      fclose(infile);\n   }\n   classes = newVector();\n   modules = newVector();\n   foreach (name in moduleTable) {\n      entries = (Vector) get(moduleTable, name);\n      entry = findEntryOfKind(entries, \"File\", NULL);\n      if (entry != NULL) add(modules, entry);\n      foreach (entry in entries) {\n         if (stringEqual(entry->kind, \"Class\")) {\n            add(classes, entry);\n         }\n      }\n   }\n   sortEntryVector(classes);\n   sortEntryVector(modules);\n   dumpIndexHeader();\n   dumpIndex(classes, \"Class\", NULL);\n   dumpIndexTrailer();\n   dumpIndexHeader();\n   dumpIndex(modules, \"File\", NULL);\n   dumpIndexTrailer();\n   fprintf(outfile, \"</body>\\n\");\n   fprintf(outfile, \"</html>\\n\");\n   fclose(outfile);\n}\n\nstatic void dumpModule(string module) {\n   string out, filename;\n   Vector entries;\n\n   out = getOption(options, \"-out\", \"doc\");\n   filename = defaultExtension(module, \"*.html\");\n   filename = concat(out, concat(\"/\", filename));\n   outfile = fopen(filename, \"w\");\n   if (outfile == NULL) error(\"Can't open %s\", getTail(filename));\n   entries = get(moduleTable, module);\n   filename = concat(getRoot(module), \"-h.html\");\n   dumpHeader(module, filename);\n   dumpComment(findEntryOfKind(entries, \"File\", NULL));\n   dumpIndexHeader();\n   dumpIndex(entries, \"Class\", NULL);\n   dumpIndex(entries, \"Type\", NULL);\n   dumpIndex(entries, \"Constant\", NULL);\n   dumpIndex(entries, \"Statement\", NULL);\n   dumpIndex(entries, \"Function\", NULL);\n   dumpIndexTrailer();\n   dumpDetail(entries, \"Type\", NULL);\n   dumpDetail(entries, \"Statement\", NULL);\n   dumpDetail(entries, \"Function\", NULL);\n   dumpTrailer(module);\n   fclose(outfile);\n}\n\nstatic void dumpClasses(string module) {\n   Vector entries;\n   entryT entry;\n\n   entries = get(moduleTable, module);\n   foreach (entry in entries) {\n      if (stringEqual(entry->kind, \"Class\")) {\n         dumpClass(entry, entries);\n      }\n   }\n}\n\nstatic void dumpClass(entryT entry, Vector entries) {\n   string className, out, filename, module, href;\n   int angle;\n\n   className = entry->name;\n   out = getOption(options, \"-out\", \"doc\");\n   angle = findChar('<', entry->name, 0);\n   filename = (angle == -1) ? className : substring(className, 0, angle - 1);\n   filename = concat(out, concat(\"/\", concat(filename, \"-class.html\")));\n   outfile = fopen(filename, \"w\");\n   if (outfile == NULL) error(\"Can't open %s\", getTail(filename));\n   filename = concat(getRoot(entry->module), \"-h.html\");\n   module = concat(\"class \", className);\n   if (entry->superclass != NULL) {\n      href = concat(\"<a href=\\\"\", entry->superclass);\n      href = concat(href, \"-class.html\\\">\");\n      href = concat(href, entry->superclass);\n      href = concat(href, \"</a>\");\n      module = concat(module, concat(\" : public \", href));\n   }\n   dumpHeader(module, filename);\n   dumpComment(findEntryOfKind(entries, \"Class\", className));\n   dumpIndexHeader();\n   dumpIndex(entries, \"Constructor\", className);\n   dumpIndex(entries, \"Method\", className);\n   dumpIndex(entries, \"Operator\", className);\n   dumpIndex(entries, \"Function\", className);\n   dumpIndex(entries, \"Statement\", className);\n   dumpIndex(entries, \"Macro\", className);\n   dumpIndexTrailer();\n   dumpDetail(entries, \"Constructor\", className);\n   dumpDetail(entries, \"Method\", className);\n   dumpDetail(entries, \"Operator\", className);\n   dumpDetail(entries, \"Function\", className);\n   dumpDetail(entries, \"Statement\", className);\n   dumpDetail(entries, \"Macro\", className);\n   dumpTrailer(className);\n   fclose(outfile);\n}\n\nstatic void dumpHeader(string module, string href) {\n   string header, title;\n\n   if (findChar(':', module, 0) == -1) module = quoteHTML(module);\n   title = module;\n   if (startsWith(title, \"class \")) title = title + 6;\n   fprintf(outfile, \"<html>\\n\");\n   fprintf(outfile, \"<head>\\n\");\n   fprintf(outfile, \"<title>%s</title>\\n\", title);\n   if (stylesheet != NULL) {\n      fprintf(outfile, \"<link rel=\\\"stylesheet\\\" type=\\\"text/css\\\"\");\n      fprintf(outfile, \" href=\\\"%s\\\" />\\n\", stylesheet);\n   }\n   fprintf(outfile, \"</head>\\n\");\n   fprintf(outfile, \"<body>\\n\");\n   dumpBodyHeader();\n   if (startsWith(module, \"class \")) {\n      header = concat(substring(href, 0, strlen(href) - 8), \".h\");\n      href = concat(substring(header, 0, strlen(header) - 3), \".html\");\n      if (containsKey(options, \"-include\")) {\n         header = getOption(options, \"-include\", NULL);\n         href = concat(getRoot(header), \".html\");\n      }\n      fprintf(outfile, \"<div class=include><a href=\\\"%s\\\">\", href);\n      fprintf(outfile, \"#include \\\"%s\\\"</a></div>\\n\", header);\n      fprintf(outfile, \"<h1 class=header><code>%s</code></h1>\\n\", module);\n   } else {\n      fprintf(outfile, \"<h1 class=header><a href=\\\"%s\\\">\", href);\n      fprintf(outfile, \"<code>%s</code></a></h1>\\n\", module);\n   }\n}\n\nstatic void dumpTrailer(string module) {\n   fprintf(outfile, \"</body>\\n\");\n   fprintf(outfile, \"</html>\\n\");\n}\n\nstatic void dumpBodyHeader() {\n   string icon, title;\n\n   fprintf(outfile, \"<table class=banner>\\n\");\n   fprintf(outfile, \"<tr>\\n\");\n   icon = getOption(options, \"-icon\", \"\");\n   title = getOption(options, \"-title\", DEFAULT_TITLE);\n   if (stringLength(icon) > 0) {\n      fprintf(outfile, \"<td valign=middle>\");\n      fprintf(outfile, \"<image src=\\\"%s\\\" height=32>\", icon);\n      fprintf(outfile, \"</td>\\n\");\n   }\n   fprintf(outfile, \"<td valign=middle><div class=bannerText>\\n\");\n   fprintf(outfile, \"%s\\n\", title);\n   fprintf(outfile, \"</div></td>\\n\");\n   fprintf(outfile, \"</tr></table>\\n\");\n   fprintf(outfile, \"<hr>\\n\");\n}\n\nstatic void dumpComment(entryT entry) {\n   string *html;\n   int i;\n\n   if (entry == NULL) return;\n   html = entry->html;\n   for (i = 0; html[i] != NULL; i++) {\n      fprintf(outfile, \"%s\\n\", html[i]);\n   }\n}\n\nstatic void dumpIndexHeader(void) {\n   fprintf(outfile, \"<table class=index width=100%%>\\n\");\n}\n\nstatic void dumpIndexTrailer(void) {\n   fprintf(outfile, \"</table>\\n\");\n}\n\nstatic void dumpIndex(Vector entries, string kind, string type) {\n   Vector vec;\n   entryT entry;\n   string label;\n   int nItems;\n\n\n   nItems = countEntriesOfKind(entries, kind, type);\n   if (nItems == 0) return;\n   if (stringEqual(kind, \"File\")) {\n      label = \"Interface files\";\n   } else {\n      label = (nItems == 1) ? kind : makePlural(kind);\n   }\n   fprintf(outfile, \"<tr><td class=indexHead colspan=2>%s</td></tr>\\n\", label);\n   vec = entries;\n   if (containsKey(options, \"-sortindex\")) {\n      vec = clone(entries);\n      sortEntryVector(vec);\n   }\n   foreach (entry in vec) {\n      if (stringEqual(kind, entry->kind)) {\n         if (type == NULL || stringEqual(entry->type, type)) {\n            dumpIndexEntry(entry);\n         }\n      }\n   }\n}\n\nstatic void dumpIndexEntry(entryT entry) {\n   string tag, synopsis;\n\n   tag = getIndexKey(entry);\n   synopsis = getFirstSentence(entry);\n   fprintf(outfile, \"<tr><td class=indexKey><nobr>%s&nbsp;</nobr></td>\", tag);\n   fprintf(outfile, \"<td class=indexSynopsis width=100%%>\");\n   fprintf(outfile, \"%s</td></tr>\\n\", synopsis);\n}\n\nstatic void dumpDetail(Vector entries, string kind, string type) {\n   entryT entry;\n   int nItems;\n\n   nItems = countEntriesOfKind(entries, kind, type);\n   if (nItems == 0) return;\n   fprintf(outfile, \"<h2>%s detail</h2>\\n\", kind);\n   fprintf(outfile, \"<hr>\\n\");\n   foreach (entry in entries) {\n      if (stringEqual(kind, entry->kind)) {\n         if (type == NULL || stringEqual(entry->type, type)) {\n            dumpDetailEntry(entry);\n            fprintf(outfile, \"<hr>\\n\");\n         }\n      }\n   }\n   fprintf(outfile, \"</table>\\n\");\n}\n\nstatic void dumpDetailEntry(entryT entry) {\n   string line;\n   int i, start, finish, indent, pos, args, paren, cp;\n\n   fprintf(outfile, \"<a name=\\\"%s:%s\\\"></a>\\n\", entry->kind, entry->name);\n   fprintf(outfile, \"<pre class=detailCode>\\n\");\n   if (isStatementMacro(entry->kind)) {\n      for (i = 0; entry->usage[i] != NULL; i++) {\n         fprintf(outfile, \"%s\\n\", quoteHTML(entry->usage[i]));\n      }\n   } else {\n      finish = stringArrayLength(entry->code) - 1;\n      while (finish >= 0 && strlen(entry->code[finish]) == 0) {\n         finish--;\n      }\n      start = 0;\n      while (start <= finish && strlen(entry->code[start]) == 0) {\n         start++;\n      }\n      if (start <= finish) {\n         indent = 0;\n         while (entry->code[start][indent] == ' ') {\n            indent++;\n         }\n         for (i = start; i <= finish; i++) {\n            line = entry->code[i];\n            line = substring(line, indent, strlen(line));\n            paren = findChar('(', line, 0);\n            if (i == start && paren > 0 && containsKey(options, \"-generic\")) {\n               for (cp = paren - 1; cp >= 0 && isalnum(line[cp]); cp--) {\n                  /* Empty */\n               }\n               line = concat(substring(line, 0, cp),\n                             concat(entry->name,\n                                    substring(line, paren, 9999)));\n            }\n            if (noTemplateFlag) {\n               if (strlen(line) == 0 || startsWith(line, \"template \")) {\n                  continue;\n               }\n            }\n            line = replaceAll(line, \"explicit \", \"\");\n            if (noStdFlag) {\n               line = replaceAll(line, \"std::\", \"\");\n            }\n            if (noVirtualFlag) {\n               line = replaceAll(line, \"virtual \", \"\");\n               line = replaceAll(line, \" = 0\", \"\");\n            }\n            if (noConstFlag) {\n               if (endsWith(line, \" const;\")) {\n                  line = concat(substring(line, 0, strlen(line) - 8), \";\");\n               }\n               args = (startsWith(line, \"    \")) ? 4 : findChar('(', line, 0);\n               while (start > 0) {\n                  pos = findString(\"const \", line, start);\n                  if (pos == -1) break;\n                  line = concat(substring(line, 0, pos - 1),\n                                substring(line, pos + 6, 9999));\n                  pos = findChar('&', line, pos);\n                  if (pos == -1) error(\"Expected &\");\n                  if (line[pos - 1] == ' ' && line[pos + 1] == ' ') {\n                     line = concat(substring(line, 0, pos - 1),\n                                   substring(line, pos + 2, 9999));\n                  } else {\n                     line = concat(substring(line, 0, pos - 1),\n                                   substring(line, pos + 1, 9999));\n                  }\n               }\n            }\n            fprintf(outfile, \"%s\\n\", blueComments(quoteHTML(line)));\n         }\n      }\n   }\n   fprintf(outfile, \"</pre>\\n\");\n   fprintf(outfile, \"<div class=detailHTML>\\n\");\n   for (i = 0; entry->html[i] != NULL; i++) {\n      fprintf(outfile, \"%s\\n\", entry->html[i]);\n   }\n   if (entry->usage == NULL || isStatementMacro(entry->kind)) {\n      fprintf(outfile, \"</div>\\n\");\n   } else {\n      fprintf(outfile, \"<p>Usage:<br>\\n\");\n      fprintf(outfile, \"</div>\\n\");\n      fprintf(outfile, \"<pre class=usageCode>\\n\");\n      for (i = 0; entry->usage[i] != NULL; i++) {\n         fprintf(outfile, \"%s\\n\", quoteHTML(entry->usage[i]));\n      }\n      fprintf(outfile, \"</pre>\\n\");\n   }\n}\n\nstatic string getIndexKey(entryT entry) {\n   string name, key, line, href;\n   int i, dot, start, finish;\n\n   name = quoteHTML(entry->name);\n   if (stringEqual(entry->kind, \"Class\")) {\n      finish = findChar('<', entry->name, 0);\n      if (finish == -1) finish = strlen(entry->name);\n      href = concat(\"<a href=\\\"\", substring(entry->name, 0, finish - 1));\n      href = concat(href, \"-class.html\\\">\");\n   } else if (stringEqual(entry->kind, \"Constant\")) {\n      href = NULL;\n   } else if (stringEqual(entry->kind, \"File\")) {\n      dot = findChar('.', entry->name, 0);\n      href = concat(\"<a href=\\\"\", substring(entry->name, 0, dot - 1));\n      href = concat(href, \".html\\\">\");\n   } else {\n      href = concat(\"<a href=\\\"#\", entry->kind);\n      href = concat(href, concat(\":\", concat(name, \"\\\">\")));\n   }\n   if (takesArguments(entry->kind) && entry->usage != NULL) {\n      key = \"\";\n      for (i = 0; entry->usage[i] != NULL; i++) {\n         line = entry->usage[i];\n         start = findString(entry->name, line, 0);\n         if (start == -1) {\n            printf(\"No %s in usage line: %s\\n\", entry->name, line);\n         }\n         start = findChar('(', line, start);\n         if (start == -1) {\n            start = strlen(line);\n            line = concat(line, \"()\");\n         }\n         finish = findChar(')', line, start);\n         if (finish == -1) error(\"Illegal usage line: %s\", line);\n         if (strlen(key) > 0) key = concat(key, \"<br>\");\n         key = concat(key, href);\n         key = concat(key, name);\n         key = concat(key, quoteSpaces(substring(line, start, finish)));\n         key = concat(key, \"</a>\");\n      }\n      return key;\n   }\n   if (stringEqual(entry->kind, \"Operator\")) {\n      name = entry->usage[0];\n   }\n   return (href == NULL) ? name : concat(href, concat(name, \"</a>\"));\n}\n\nstatic string getFirstSentence(entryT entry) {\n   string str, line;\n   int i, end;\n\n   str = \"\";\n   for (i = 0; entry->html[i] != NULL; i++) {\n      line = entry->html[i];\n      end = findSentenceEnd(line);\n      if (end >= 0) return concat(str, substring(line, 0, end));\n      str = concat(str, concat(line, \" \"));\n   }\n   return str;\n}\n\nstatic int findSentenceEnd(string line) {\n   int i;\n\n   for (i = 0; line[i] != '\\0'; i++) {\n      switch (line[i]) {\n       case '.': case '!': case '?':\n         if (line[i + 1] == '\\0' || isspace(line[i + 1])) return i;\n      }\n   }\n   return -1;\n}\n\nstatic entryT findEntryOfKind(Vector entries, string kind, string type) {\n   entryT entry;\n\n   foreach (entry in entries) {\n      if (stringEqual(entry->kind, kind)) {\n         if (type == NULL || stringEqual(entry->type, type)) {\n            return entry;\n         }\n      }\n   }\n   return NULL;\n}\n\nstatic int countEntriesOfKind(Vector entries, string kind, string type) {\n   entryT entry;\n   int count;\n\n   count = 0;\n   foreach (entry in entries) {\n      if (stringEqual(entry->kind, kind)) {\n         if (type == NULL || stringEqual(entry->type, type)) {\n            count++;\n         }\n      }\n   }\n   return count;\n}\n\nstatic void sortEntryVector(Vector entries) {\n   int lh, rh, n, i;\n   string s1, s2;\n   entryT tmp;\n\n   n = size(entries);\n   for (lh = 0; lh < n; lh++) {\n      rh = lh;\n      for (i = lh + 1; i < n; i++) {\n         s1 = toUpperCase(((entryT) get(entries, i))->name);\n         s2 = toUpperCase(((entryT) get(entries, rh))->name);\n         if (stringCompare(s1, s2) < 0) rh = i;\n      }\n      tmp = (entryT) get(entries, lh);\n      set(entries, lh, (entryT) get(entries, rh));\n      set(entries, rh, tmp);\n   }\n}\n\nstatic void listModules(void) {\n   string str, module;\n   Vector entries;\n   entryT entry;\n\n   module = getOption(options, \"-module\", NULL);\n   foreach (str in moduleTable) {\n      if (module == NULL || stringEqual(str, module)) {\n         printf(\"%s: \\n\", str);\n         entries = (Vector) get(moduleTable, str);\n         foreach (entry in entries) {\n            listEntry(entry);\n         }\n         printf(\"\\n\");\n      }\n   }\n}\n\nstatic void listEntry(entryT entry) {\n   printf(\"  %s: %s\\n\", entry->kind, entry->name);\n}\n\nstatic void includeFile(Vector html, string filename) {\n   FILE *infile;\n   string line;\n\n   infile = fopen(filename, \"r\");\n   if (infile == NULL) error(\"Can't open %s\", filename);\n   while (true) {\n      line = readLine(infile);\n      if (line == NULL) break;\n      add(html, line);\n   }\n   fclose(infile);\n}\n\nstatic string makePlural(string word) {\n   int len;\n\n   len = strlen(word);\n   if (endsWith(word, \"s\") || endsWith(word, \"x\")\n               || endsWith(word, \"z\") || endsWith(word, \"ch\")\n               || endsWith(word, \"sh\")) {\n      return concat(word, \"es\");\n   } else if (endsWith(word, \"y\") && len > 1\n               && !isVowel(word[len - 2])) {\n      return concat(substring(word, 0, len - 2), \"ies\");\n   } else {\n      return concat(word, \"s\");\n   }\n}\n\nstatic bool isVowel(char ch) {\n   switch (ch) {\n    case 'A': case 'E': case 'I': case 'O': case 'U':\n    case 'a': case 'e': case 'i': case 'o': case 'u':\n      return true;\n    default:\n      return false;\n   }\n}\n\nstatic bool takesArguments(string kind) {\n   if (stringEqual(kind, \"Function\")) return true;\n   if (stringEqual(kind, \"Method\")) return true;\n   if (stringEqual(kind, \"Macro\")) return true;\n   if (stringEqual(kind, \"Statement\")) return true;\n   if (stringEqual(kind, \"Constructor\")) return true;\n   if (stringEqual(kind, \"Destructor\")) return true;\n   return false;\n}\n\nstatic bool isStatementMacro(string kind) {\n   if (stringEqual(kind, \"Statement\")) return true;\n   if (stringEqual(kind, \"Macro\")) return true;\n   return false;\n}\n\nstatic bool isEndOfCode(string line) {\n   if (startsWith(line, \"#\")) return true;\n   if (startsWith(line, \"public:\")) return true;\n   if (startsWith(line, \"private:\")) return true;\n   if (startsWith(line, \"/*\")) return true;\n   return false;\n}\n\nstatic string quoteSpaces(string str) {\n   string result;\n   int start, space;\n\n   start = 0;\n   result = \"\";\n   while (true) {\n      space = findChar(' ', str, start);\n      if (space == -1) break;\n      result = concat(result, substring(str, start, space - 1));\n      result = concat(result, \"&nbsp;\");\n      start = space + 1;\n   }\n   return concat(result, substring(str, start, strlen(str) - 1));\n}\n\nstatic string blueComments(string str) {\n   string result;\n   int start, index, finish;\n\n   start = 0;\n   result = \"\";\n   while (true) {\n      index = findString(\"/\" \"*\", str, start);\n      if (index == -1) break;\n      finish = findString(\"*\" \"/\", str, index);\n      if (finish == -1) error(\"Illegal internal comment: %s\", str);\n      result = concat(result, substring(str, start, index - 1));\n      result = concat(result, \"<span class=comment>\");\n      result = concat(result, substring(str, index, finish + 1));\n      result = concat(result, \"</span>\");\n      start = finish + 2;\n   }\n   return concat(result, substring(str, start, strlen(str) - 1));\n}\n\nstatic string replaceAll(string str, string pattern, string replacement) {\n   int pos;\n\n   pos = 0;\n   while (true) {\n      pos = findString(pattern, str, pos);\n      if (pos == -1) break;\n      str = concat(substring(str, 0, pos - 1),\n                   concat(replacement,\n                          substring(str, pos + stringLength(pattern), 9999)));\n      pos += stringLength(replacement);\n   }\n   return str;\n}\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/cppdoc.css",
    "content": "body {\n   font-size:100%;\n}\n\nh1 {\n   font-family:\"Arial\", \"Helvetica\", \"sansserif\"; \n   font-size:1.5em;\n   font-weight:bold;\n}\n\nh2 {\n   font-family:\"Times New Roman\", \"Times\", \"serif\";\n   font-size:1.4em;\n   font-weight:bold;\n   margin-bottom:0px;\n}\n\n.header {\n   font-size:125%;\n}\n\npre, code, .code {\n   font-family:\"Courier New\", \"Courier\", \"monospace\";\n   font-weight:bold;\n   font-size:90%;\n}\n\n.comment {\n   color:blue;\n}\n\n.it {\n   font-family:\"Times New Roman\", \"Times\", \"serif\";\n   font-weight:normal;\n   font-style:italic;\n   font-size:90%;\n}\n   \n.banner {\n   border:0;\n}\n\n.sansserif {\n   font-family:\"Helvetica Neue\", \"Helvetica\", \"Arial\", \"sansserif\";\n}\n\n.bannerText {\n   font-family:\"Helvetica Neue\", \"Helvetica\", \"Arial\", \"sansserif\";\n   font-size:1.6em;\n   font-weight:bold;\n}\n\n.index {\n   border-collapse:collapse;\n   margin-top:1px;\n}\n\n.indexHead {\n   font-family:\"Times New Roman\", \"Times\", \"serif\";\n   font-size:1.4em;\n   font-weight:bold;\n   padding-top:1em;\n}\n\n.indexKey {\n   border:1px solid black; \n   padding:3px 5px;\n   font-family:\"Courier New\", \"Courier\", \"monospace\";\n   font-weight:bold;\n   font-size:90%;\n   vertical-align: top;\n}\n\n.indexSynopsis {\n   border:1px solid black; \n   padding:3px 5px;\n   vertical-align: top;\n}\n\n.include {\n   font-family:\"Courier New\", \"Courier\", \"monospace\";\n   font-weight:bold;\n   font-size:100%;\n}\n\n.detailCode {\n   padding:0px;\n   font-family:\"Courier New\", \"Courier\", \"monospace\";\n   font-weight:bold;\n   font-size:100%;\n}\n\n.detailHTML {\n   font-family:\"Times New Roman\", \"Times\", \"serif\";\n   font-size:1em;\n   margin-left:20px;\n}\n\n.inset {\n   margin-left:36px;\n}\n\n.usageCode {\n   font-family:\"Courier New\", \"Courier\", \"monospace\";\n   font-weight:bold;\n   font-size:90%;\n   margin-left:40px;\n}   \n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/fillcomments.c",
    "content": "/*\n * File: fillcomments.c\n * Last modified on Mon Jun  9 18:57:29 2014 by eroberts\n * -----------------------------------------------------\n * This program removes HTML tags from javadoc/cppdoc comment lines but\n * refills those lines to ensure that lines don't end up looking choppy.\n * It also implements the -html option, which writes an HTML file\n * containing the text of the file.\n */\n\n#include <stdio.h>\n#include <ctype.h>\n#include <string.h>\n#include \"cslib.h\"\n#include \"hashmap.h\"\n#include \"options.h\"\n#include \"simpio.h\"\n#include \"strlib.h\"\n\n/* Constants */\n\n#define MAX_COMMENT_LINE 75\n#define NBSP '\\001'\n\n#define NORMAL 0\n#define TAGMODE 1\n#define ANDMODE 2\n#define FIRST_COMMENT 1\n#define IN_COMMENT 2\n#define IN_EXTENDED_COMMENT 3\n#define IN_PREFORMATTED_BLOCK 4\n\n/* Option specifications */\n\nstatic string OPTION_SPEC[] = {\n   \"-help\",\n   \"-html\",\n   \"-output <name>\",\n   \"-stylesheet <file>\",\n   \"-hide <file>\",\n   NULL\n};\n\n/* Private variables */\n\nstring buffer;\nstring stylesheet;\nHashMap options;\nbool sentenceBreak;\nbool html;\n\n/* Private function prototypes */\n\nstatic void convertStream(FILE *infile, FILE *outfile);\nstatic void flushBuffer(FILE *outfile);\nstatic void commentLine(string line, FILE *outfile);\nstatic string standardLine(string line);\nstatic bool dumpChar(int ch, FILE *outfile);\nstatic void dumpHTMLHeader(string hName, FILE *outfile);\nstatic void dumpHTMLTrailer(FILE *outfile);\nstatic bool isBreak(string line);\nstatic bool isDeletedLine(string line);\nstatic string fixHTML(string line);\n\n/* Main program */\n\nmain(int argc, string argv[]) {\n   FILE *infile, *outfile;\n   string *files, outName, hName;\n   int nFiles;\n\n   options = parseOptions(argv + 1, OPTION_SPEC);\n   files = getArgList(options);\n   nFiles = stringArrayLength(files);\n   if (containsKey(options, \"-help\") || nFiles > 1) {\n      showUsage(\"fillcomments <options> <infile>\", OPTION_SPEC);\n      return;\n   }\n   html = containsKey(options, \"-html\");\n   stylesheet = getOption(options, \"-stylesheet\", \"cppdoc.css\");\n   if (nFiles == 0) {\n      infile = stdin;\n      hName = \"-----.h\";\n   } else {\n      infile = fopen(files[0], \"r\");\n      hName = files[0];\n      if (infile == NULL) error(\"Can't open %s\", files[0]);\n   }\n   if (containsKey(options, \"-output\")) {\n      outName = getOption(options, \"-output\", \"\");\n      outfile = fopen(outName, \"w\");\n      if (outfile == NULL) error(\"Can't open %s\", outName);\n   } else {\n      outfile = stdout;\n   }\n   if (html) dumpHTMLHeader(hName, outfile);\n   convertStream(infile, outfile);\n   if (html) dumpHTMLTrailer(outfile);\n   if (infile != stdin) fclose(infile);\n   if (outfile != stdout) fclose(outfile);\n   exit(0);\n}\n\n/* Private functions */\n\nstatic void convertStream(FILE *infile, FILE *outfile) {\n   string line, kind, name;\n   int state, colon;\n   bool afterBlank, skipBlank;\n\n   buffer = NULL;\n   sentenceBreak = false;\n   state = NORMAL;\n   afterBlank = false;\n   skipBlank = false;\n   while (true) {\n      line = readLine(infile);\n      if (line == NULL) break;\n      if (isDeletedLine(line)) {\n         skipBlank = afterBlank;\n         continue;\n      }\n      switch (state) {\n       case NORMAL:\n         if (stringEqual(line, \"/*\")) {\n            state = FIRST_COMMENT;\n         } else if (stringEqual(line, \"/**\")) {\n            state = IN_EXTENDED_COMMENT;\n            fprintf(outfile, \"%s\\n\", line);\n         } else {\n            if (strlen(line) == 0) {\n               if (skipBlank) {\n                  skipBlank = false;\n               } else {\n                  fprintf(outfile, \"\\n\");\n                  afterBlank = true;\n               }\n            } else {\n               fprintf(outfile, \"%s\\n\", standardLine(line));\n               afterBlank = skipBlank = false;\n            }\n         }\n         break;\n       case FIRST_COMMENT:\n         if (html) {\n            colon = findString(\": \", line, 0);\n            if (colon > 0) {\n               kind = substring(line, 3, colon - 1);\n               if (!stringEqual(kind, \"File\")) {\n                  name = substring(line, colon + 2, strlen(line));\n                  fprintf(outfile, \"<a name=\\\"%s:%s\\\">\", kind, name);\n               }\n            }\n            if (stringEqual(stylesheet, \"none\")) {\n               fprintf(outfile, \"<scan style=\\\"color:blue;\\\">\");\n            } else {\n               fprintf(outfile, \"<scan class=comment>\");\n            }\n         }\n         fprintf(outfile, \"/*\\n\");\n         fprintf(outfile, \"%s\\n\", fixHTML(line));\n         state = IN_COMMENT;\n         break;\n       case IN_COMMENT:\n         if (startsWith(line, \" * -----\")) state = IN_EXTENDED_COMMENT;\n         if (startsWith(line, \" */\")) state = NORMAL;\n         if (state == NORMAL && html) {\n            fprintf(outfile, \"%s</scan>\\n\", fixHTML(line));\n         } else {\n            fprintf(outfile, \"%s\\n\", fixHTML(line));\n         }\n         skipBlank = afterBlank = false;\n         break;\n       case IN_EXTENDED_COMMENT:\n         if (startsWith(line, \" *<pre>\")) {\n            flushBuffer(outfile);\n            state = IN_PREFORMATTED_BLOCK;\n         } else {\n            if (startsWith(line, \" * \") && !isBreak(line)) {\n               if (buffer == NULL) {\n                  buffer = \" * \";\n               } else {\n                  buffer = concat(buffer, (sentenceBreak) ? \"  \" : \" \");\n                  sentenceBreak = false;\n               }\n               commentLine(line + 3, outfile);\n               sentenceBreak = endsWith(line, \".\");\n            } else {\n               flushBuffer(outfile);\n               buffer = \"\";\n               commentLine(line, outfile);\n               flushBuffer(outfile);\n            }\n            if (stringEqual(line, \" */\")) {\n               flushBuffer(outfile);\n               if (html) {\n                  fprintf(outfile, \"</scan>\");\n               }\n               skipBlank = afterBlank = false;\n               state = NORMAL;\n            }\n         }\n         break;\n       case IN_PREFORMATTED_BLOCK:\n         if (startsWith(line, \" *</pre>\")) {\n            state = IN_EXTENDED_COMMENT;\n         } else {\n            commentLine(line, outfile);\n            flushBuffer(outfile);\n            fprintf(outfile, \"\\n\");\n         }\n         break;\n      }\n   }\n   flushBuffer(outfile);\n}\n\nstatic void flushBuffer(FILE *outfile) {\n   int i;\n\n   if (buffer != NULL) {\n      for (i = 0; buffer[i] != '\\0'; i++) {\n         if (buffer[i] == NBSP) buffer[i] = ' ';\n      }\n      fprintf(outfile, \"%s\\n\", fixHTML(buffer));\n      buffer = NULL;\n   }\n}\n\nstatic void commentLine(string line, FILE *outfile) {\n   int index, ch, state;\n   string tag;\n\n   state = NORMAL;\n   for (index = 0; line[index] != '\\0'; index++) {\n      ch = line[index];\n      switch (state) {\n       case NORMAL:\n         switch (ch) {\n          case '<':\n            if (startsWith(line, \"#include\")) {\n               dumpChar(ch, outfile);\n            } else {\n               state = TAGMODE;\n               tag = \"\";\n            }\n            break;\n          case '&':\n            state = ANDMODE;\n            tag = \"\";\n            break;\n          default:\n            if (dumpChar(ch, outfile)) {\n               while (line[index + 1] == ' ') index++;\n            }\n            break;\n         }\n         break;\n       case TAGMODE:\n         if (ch == '>') {\n            state = NORMAL;\n         } else if (tag[0] == 0 && (ch == ' ' || ch == '>' || ch == '<')) {\n            dumpChar('<', outfile);\n            dumpChar(ch, outfile);\n            state = NORMAL;\n         } else {\n            tag = concat(tag, charToString(ch));\n         }\n         break;\n       case ANDMODE:\n         if (ch == ' ' || ch == '&') {\n            dumpChar('&', outfile);\n            dumpChar(ch, outfile);\n            state = NORMAL;\n         } else if (ch == ';') {\n            if (stringEqual(tag, \"nbsp\")) {\n               dumpChar(NBSP, outfile);\n            } else if (stringEqual(tag, \"amp\")) {\n               dumpChar('&', outfile);\n            } else if (stringEqual(tag, \"gt\")) {\n               dumpChar('>', outfile);\n            } else if (stringEqual(tag, \"lt\")) {\n               dumpChar('<', outfile);\n            }\n            state = NORMAL;\n         } else {\n            tag = concat(tag, charToString(ch));\n         }\n         break;\n      }\n   }\n}\n\nstatic string standardLine(string line) {\n   string str;\n   int start, finish;\n\n   if (!html) return line;\n   line = quoteHTML(line);\n   start = findString(\"/\" \"/\", line, 0);\n   if (start >= 0) {\n      str = substring(line, 0, start - 1);\n      if (stringEqual(stylesheet, \"none\")) {\n         str = concat(str, \"<scan style=\\\"color:blue;\\\">\");\n      } else {\n         str = concat(str, \"<scan class=comment>\");\n      }\n      str = concat(str, substring(line, start, strlen(line)));\n      str = concat(str, \"</scan>\");\n      return str;\n   }\n   start = findString(\"/\" \"*\", line, 0);\n   if (start == -1) return line;\n   finish = findString(\"*\" \"/\", line, start);\n   if (finish == -1) error(\"Multiline internal comment not supported\");\n   str = substring(line, 0, start - 1);\n   if (stringEqual(stylesheet, \"none\")) {\n      str = concat(str, \"<scan style=\\\"color:blue;\\\">\");\n   } else {\n      str = concat(str, \"<scan class=comment>\");\n   }\n   str = concat(str, substring(line, start, finish + 1));\n   str = concat(str, \"</scan>\");\n   str = concat(str, substring(line, finish + 2, strlen(line)));\n   return str;\n}\n\nstatic bool dumpChar(int ch, FILE *outfile) {\n   string str;\n   int i, index;\n\n   str = charToString(ch);\n   switch (ch) {\n     case 0x92:\n       str = \"'\";\n       break;\n     case 0x93: case 0x94:\n       str = \"\\\"\";\n       break;\n     case 0x95:\n       str = \"-\";\n       break;\n     case 0x96:\n       str = \"--\";\n       break;\n   }\n   if (buffer != NULL) {\n      buffer = concat(buffer, str);\n      if (stringLength(buffer) > MAX_COMMENT_LINE) {\n         index = stringLength(buffer) - 1;\n         while (buffer[index] != ' ') index--;\n         for (i = 0; i < index; i++) {\n            if (buffer[i] == NBSP) buffer[i] = ' ';\n         }\n         fprintf(outfile, \"%s\\n\", fixHTML(substring(buffer, 0, index - 1)));\n         buffer = concat(\" *\", buffer + index);\n         return stringLength(buffer) < 4;\n      }\n   } else {\n      fprintf(outfile, \"%s\", fixHTML(str));\n   }\n   return false;\n}\n\nstatic void dumpHTMLHeader(string hName, FILE *outfile) {\n   fprintf(outfile, \"<html>\\n\");\n   fprintf(outfile, \"<head>\\n\");\n   fprintf(outfile, \"<title>%s</title>\\n\", hName);\n   if (!stringEqual(stylesheet, \"none\")) {\n      fprintf(outfile, \"<link rel=\\\"stylesheet\\\" type=\\\"text/css\\\"\");\n      fprintf(outfile, \" href=\\\"%s\\\" />\\n\", stylesheet);\n   }\n   fprintf(outfile, \"</head>\\n\");\n   fprintf(outfile, \"<body>\\n\");\n   fprintf(outfile, \"<pre class=code>\\n\");\n}\n\nstatic void dumpHTMLTrailer(FILE *outfile) {\n   fprintf(outfile, \"</pre>\\n\");\n   fprintf(outfile, \"</body>\\n\");\n   fprintf(outfile, \"</html>\\n\");\n}\n\nstatic bool isBreak(string line) {\n   return startsWith(line, \" *  \")\n       || startsWith(line, \" * Macro: \")\n       || startsWith(line, \" * Statement: \")\n       || startsWith(line, \" * Function: \")\n       || startsWith(line, \" * Functions: \")\n       || startsWith(line, \" * Method: \")\n       || startsWith(line, \" * Methods: \")\n       || startsWith(line, \" * Type: \")\n       || startsWith(line, \" * Types: \")\n       || startsWith(line, \" * Operator: \")\n       || startsWith(line, \" * Operators: \")\n       || startsWith(line, \" * Constant: \")\n       || startsWith(line, \" * Usage: \")\n       || startsWith(line, \" * -----\")\n       || startsWith(line, \" * @\");\n}\n\nstatic bool isDeletedLine(string line) {\n   return stringEqual(line, \" * <ul>\")\n       || stringEqual(line, \" * </ul>\")\n       || stringEqual(line, \" * <ol>\")\n       || stringEqual(line, \" * </ol>\")\n       || stringEqual(line, \" * <table>\")\n       || stringEqual(line, \" * </table>\")\n       || stringEqual(line, \"#include \\\"foreach.h\\\"\")\n       || findString(\"<include src=\\\"\", line, 0) != -1\n       || startsWith(line, \"#include \\\"private/\");\n};\n\nstatic string fixHTML(string line) {\n   return (html) ? quoteHTML(line) : line;\n}\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/graphsupport.cpp",
    "content": "/*\n * @version 2017/10/24\n * - replaced null in uppercase with nullptr\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"graphsupport.h\"\n#include <iomanip>\n#include \"gmath.h\"\n#undef INTERNAL_INCLUDE\n\n// definitions for colors\nconst int NUM_COLORS = 7;\n\nconst Color UNCOLORED = 0;\nconst Color WHITE = 1;\nconst Color GRAY = 2;\nconst Color YELLOW = 3;\nconst Color GREEN = 4;\nconst Color RED = 5;\nconst Color BLUE = 6;\n\nconst Color COLORS[7] = {\n    UNCOLORED,\n    WHITE,\n    GRAY,\n    YELLOW,\n    GREEN,\n    RED,\n    BLUE\n};\n\nconst string COLOR_NAMES[7] = {\n    \"uncolored\",\n    \"white\",\n    \"gray\",\n    \"yellow\",\n    \"green\",\n    \"red\",\n    \"blue\"\n};\n\nbool graph_canReach(BasicGraph& graph, Vertex* start, Vertex* end, Set<Vertex*>& visited, Vector<Vertex*>* path) {\n    // cout << \"    canReach(graph, start=\" << start->name << \", end=\" << end->name << \")\" << endl;\n    if (start == end) {\n        return true;\n    } else if (visited.contains(start)) {\n        return false;\n    } else {\n        visited.add(start);\n        if (path) {\n            path->add(start);\n        }\n        for (Vertex* neighbor : graph.getNeighbors(start->name)) {\n            if (graph_canReach(graph, neighbor, end, visited, path)) {\n                return true;\n            }\n        }\n        visited.remove(start);\n        if (path) {\n            path->remove(path->size() - 1);\n        }\n        return false;\n    }\n}\n\nbool graph_isConnected(BasicGraph& graph, bool checkWeak) {\n    bool weak = false;\n    for (Vertex* v1 : graph.getVertexSet()) {\n        for (Vertex* v2 : graph.getVertexSet()) {\n            if (v1 == v2) {\n                continue;\n            }\n            // cout << \"    \" << v1->name << \" ... \" << v2->name << endl;\n            graph.resetData();\n            Set<Vertex*> visited;\n            if (!graph_canReach(graph, v1, v2, visited)) {\n                if (checkWeak && graph_canReach(graph, v2, v1, visited)) {\n                    weak = true;\n                    continue;\n                }\n                cout << \"vertex \" << v1->name << \" cannot reach \" << v2->name << endl;\n                return false;\n            }\n        }\n    }\n    \n    if (weak) {\n        cout << \"(weakly connected)\" << endl;\n    }\n    return !weak;\n}\n\nbool graph_isCyclic(BasicGraph& graph) {\n    for (Vertex* v : graph.getVertexSet()) {\n        for (Vertex* neighbor : graph.getNeighbors(v)) {\n            Vector<Vertex*> path;\n            graph.resetData();\n            Set<Vertex*> visited;\n            if (graph_canReach(graph, neighbor, v, visited, &path)) {\n                path.insert(0, v);\n                path.add(v);\n                cout << \"cycle starting from \" << v->name << \": \" << graph_pathToString(path) << endl;\n                return true;\n            }\n        }\n    }\n    \n    return false;\n}\n\nvoid graph_printEdgeList(BasicGraph& graph) {\n    cout << \"edge list:\" << endl;\n    Vector<string> edgeList;\n    for (Edge* edge : graph.getEdgeSet()) {\n        string edgeStr = \"\" + edge->start->name + \" -> \" + edge->finish->name;\n        if (!floatingPointEqual(edge->weight, 0.0)) {\n            edgeStr += \" : \" + realToString(edge->weight);\n        }\n        cout << \"  \" << edgeStr << endl;\n    }\n}\n\nvoid graph_printAdjacencyList(BasicGraph& graph) {\n    cout << \"adjacency list:\" << endl;\n    for (Vertex* v : graph.getVertexSet()) {\n        cout << \"  \" << v->name << \" : \";\n        int count = 0;\n        for (Vertex* neighbor : graph.getNeighbors(v)) {\n            if (count > 0) {\n                cout << \", \";\n            }\n            cout << \"(\" << neighbor->name;\n            Edge* edge = graph.getEdge(v, neighbor);\n            if (!floatingPointEqual(edge->weight, 0.0)) {\n                cout << \":\" << edge->weight;\n            }\n            count++;\n            cout << \")\";\n        }\n        cout << endl;\n    }\n}\n\nvoid graph_printAdjacencyMatrix(BasicGraph& graph) {\n    cout << \"adjacency matrix:\" << endl;\n    \n    const int COL_WIDTH = 5;\n    \n    // column headers\n    cout << setw(COL_WIDTH) << \"\";\n    for (Vertex* v1 : graph.getVertexSet()) {\n        cout << setw(COL_WIDTH) << v1->name;\n    }\n    cout << endl;\n    \n    for (Vertex* v1 : graph.getVertexSet()) {\n        // row header\n        cout << setw(COL_WIDTH) << v1->name;\n        \n        for (Vertex* v2 : graph.getVertexSet()) {\n            double toPrint = 0;\n            if (graph.isNeighbor(v1, v2)) {\n                Edge* edge = graph.getEdge(v1, v2);\n                if (!floatingPointEqual(edge->weight, 0.0)) {\n                    toPrint = edge->weight;\n                } else {\n                    toPrint = 1;\n                }\n            }\n            cout << setw(COL_WIDTH) << toPrint;\n        }\n        cout << endl;\n    }\n}\n\nvoid graph_printVertexDegrees(BasicGraph& graph) {\n    cout << \"vertex degrees:\" << endl;\n    for (Vertex* v : graph.getVertexSet()) {\n        cout << \"  \" << v->name << \" : \";\n        int inDegree = 0;\n        for (Vertex* v2 : graph.getVertexSet()) {\n            if (graph.isNeighbor(v2, v)) {\n                inDegree++;\n            }\n        }\n        cout << \"in-degree: \" << inDegree;\n        cout << \", out-degree: \" << v->edges.size() << endl;\n    }\n}\n\nstring graph_pathToString(const Vector<Vertex*>& path) {\n    Vector<string> path2;\n    for (Vertex* v : path) {\n        if (v) {\n            path2.add(v->name);\n        } else {\n            path2.add(\"nullptr\");\n        }\n    }\n    return path2.toString();\n}\n\nvoid graph_printPath(const Vector<Vertex*>& path) {\n    cout << \"{\";\n    int i = 0;\n    for (Vertex* v : path) {\n        if (i > 0) {\n            cout << \", \";\n        }\n        if (!v) {\n            cout << \"nullptr\";\n        } else {\n            cout << v->name;\n        }\n        i++;\n    }\n    cout << \"}\" << endl;\n}\n\nvoid BasicGraph_fromString(BasicGraph& obj, string str) {\n    istringstream input(str);\n    input >> obj;\n}\n\nostream& operator <<(ostream& out, const Vector<Vertex*>& path) {\n    out << \"{\";\n    int i = 0;\n    for (Vertex* v : path) {\n        if (i > 0) {\n            out << \", \";\n        }\n        if (!v) {\n            out << \"nullptr\";\n        } else {\n            out << v->name;\n        }\n        i++;\n    }\n    out << \"}\";\n    return out;\n}\n\nostream& operator <<(ostream& out, const Set<Vertex*>& set) {\n    out << \"{\";\n    int i = 0;\n    for (Vertex* v : set) {\n        if (i > 0) {\n            out << \", \";\n        }\n        if (!v) {\n            out << \"nullptr\";\n        } else {\n            out << v->name;\n        }\n        i++;\n    }\n    out << \"}\";\n    return out;\n}\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/graphsupport.h",
    "content": "#ifndef _graphsupport_h\n#define _graphsupport_h\n\n#include <iostream>\n#include <sstream>\n#include \"basicgraph.h\"\n#include \"vector.h\"\nusing namespace std;\n\n// colors for graph problems\ntypedef int Color;\nextern const Color UNCOLORED, WHITE, GRAY, YELLOW, GREEN, RED, BLUE;\nextern const int NUM_COLORS;\nextern const Color COLORS[7];\nextern const std::string COLOR_NAMES[7];\n\nbool graph_canReach(BasicGraph& graph, Vertex* start, Vertex* end, Set<Vertex*>& visited, Vector<Vertex*>* path = nullptr);\nbool graph_isConnected(BasicGraph& graph, bool checkWeak = false);\nbool graph_isCyclic(BasicGraph& graph);\nvoid graph_printEdgeList(BasicGraph& graph);\nvoid graph_printAdjacencyList(BasicGraph& graph);\nvoid graph_printAdjacencyMatrix(BasicGraph& graph);\nvoid graph_printVertexDegrees(BasicGraph& graph);\nstring graph_pathToString(const Vector<Vertex*>& path);\nvoid graph_printPath(const Vector<Vertex*>& path);\nvoid BasicGraph_fromString(BasicGraph& obj, string str);\nostream& operator <<(ostream& out, const Vector<Vertex*>& path);\nostream& operator <<(ostream& out, const Set<Vertex*>& set);\n\n#endif //_graphsupport_h\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/mainfunc-biginteger.cpp",
    "content": "///*\n// * Test file for verifying the Stanford C++ lib functionality.\n// */\n\n//#include <iostream>\n//#include <iomanip>\n//#include \"bigfloat.h\"\n//#include \"biginteger.h\"\n//#include \"console.h\"\n//#include \"error.h\"\n//#include \"strlib.h\"\n//using namespace std;\n\n//void testBigInteger();\n\n//int mainBigInteger() {\n//    cout << \"Stanford C++ lib tester\" << endl;\n//    testBigInteger();\n//    return 0;\n//}\n\n//bigint fact(int n) {\n//    bigint result(\"1\");\n//    for (int i = 2; i <= n; i++) {\n//        result *= BigInteger(integerToString(i));\n//    }\n//    return result;\n//}\n\n//void testBigInteger() {\n//    {\n//        BigInteger bi(\"-24\");\n//        cout << \"abs = \" << bi.abs() << endl;\n//        cout << \"pos: \" << boolalpha << bi.isPositive() << \", neg: \" << bi.isNegative() << \", nonneg: \" << bi.isNonNegative() << endl;\n//        bi = bi.abs();\n//        cout << \"pos: \" << boolalpha << bi.isPositive() << \", neg: \" << bi.isNegative() << \", nonneg: \" << bi.isNonNegative() << endl;\n//        cout << \"pos: \" << boolalpha << BigInteger::ZERO.isPositive() << \", neg: \" << BigInteger::ZERO.isNegative() << \", nonneg: \" << BigInteger::ZERO.isNonNegative() << endl;\n\n//        BigInteger bi2(\"16\");\n//        cout << \"gcd = \" << bi.gcd(bi2) << endl << endl;\n\n//        do {\n//            cout << \"int bi2 = \" << bi2 << \", hex = \" << bi2.toString(16) << \", oct = \" << bi2.toString(8) << \", bin = \" << bi2.toString(2) << endl;\n//            bi2 *= BigInteger::TWO;\n//        } while (bi2.isInt());\n\n//        do {\n//            cout << \"long bi2 = \" << bi2 << endl;\n//            bi2 *= BigInteger::TEN;\n//        } while (bi2.isLong());\n\n//        cout << \"max = \" << bi.max(bi2) << \", min = \" << bi.min(bi2) << endl;\n\n//        cout << \"modPow = \" << BigInteger::TWO.modPow(10, 100) << endl;\n\n//        cout << \"pow = \" << endl;\n//        for (int i = 0; i < 20; i++) {\n//            cout << \"2 ^ \" << i << \" = \" << BigInteger::TWO.pow(i) << endl;\n//        }\n\n//        // radix stuff\n//        BigInteger biHex(\"0xff00\", 16);\n//        cout << \"bihex = \" << biHex << \", hex = \" << biHex.toString(16) << endl;\n//        BigInteger biBin(\"0b101010\", 2);\n//        cout << \"bibin = \" << biBin << \", bin = \" << biBin.toString(2) << endl;\n\n//        BigInteger biUnary(\"1111111\", 1);\n//        cout << \"biunary = \" << biUnary << \", unary \" << biUnary.toString(1) << endl;\n\n//        for (BigInteger bi = 1; bi <= 100; bi++) {\n//            cout << \"int bi = \" << bi << \", hex = \" << bi.toString(16) << \", oct = \" << bi.toString(8) << \", bin = \" << bi.toString(2) << endl;\n//        }\n\n//        // various int/long/double x BigInteger binary operations\n//        cout << \"bitwise stuff:\" << endl;\n//        BigInteger binary1(\"10100011\", 2);\n//        BigInteger binary2(\"01110110\", 2);\n//        cout << \"a     = \" << binary1.toString(2) << endl;\n//        cout << \"b     = \" << setw(8) << binary2.toString(2) << endl;\n//        cout << \"a & b = \" << setw(8) << (binary1 & binary2).toString(2) << endl;\n//        cout << \"a | b = \" << setw(8) << (binary1 | binary2).toString(2) << endl;\n//        cout << \"a ^ b = \" << setw(8) << (binary1 ^ binary2).toString(2) << endl;\n//        cout << \"~a    = \" << setw(8) << (~binary1).toString(2) << endl;\n//        cout << \"!a    = \" << setw(8) << (!binary1).toString(2) << endl;\n//        cout << endl;\n\n//        cout << \"int +: \" << (42 + bi) << endl;\n//        cout << \"int -: \" << (42 - bi) << endl;\n//        cout << \"int *: \" << (42 * bi) << endl;\n//        cout << \"int /: \" << (42 / bi) << endl;\n//        cout << \"int %: \" << (42 % bi) << endl;\n\n//        cout << \"long +: \" << ((long)42 + bi) << endl;\n//        cout << \"long -: \" << ((long)42 - bi) << endl;\n//        cout << \"long *: \" << ((long)42 * bi) << endl;\n//        cout << \"long /: \" << ((long)42 / bi) << endl;\n//        cout << \"long %: \" << ((long)42 % bi) << endl;\n\n////        cout << \"double +: \" << (42.5 + bi) << endl;\n////        cout << \"double -: \" << (42.5 - bi) << endl;\n////        cout << \"double *: \" << (42.5 * bi) << endl;\n////        cout << \"double /: \" << (42.5 / bi) << endl;\n////        cout << \"double %: \" << (42.5 % bi) << endl;\n//    }\n\n//    try {\n//        BigInteger bad(\"-845lol098\");\n//        cout << bad << endl;\n//    } catch (ErrorException& ex) {\n//        cout << \"correctly threw exception when creating bad integer: \" << ex.getMessage() << endl;\n//    }\n\n//    // big division\n//    BigInteger realbig(1000);\n//    realbig *= realbig;\n//    realbig *= realbig;\n//    realbig *= realbig;\n//    realbig *= realbig;\n//    BigInteger almostAsBig(realbig);\n//    realbig *= realbig;\n//    cout << \"realbig: \" << realbig << endl;\n//    cout << \"almost : \" << almostAsBig << endl;\n\n//    try {\n//        BigInteger quotient = realbig / almostAsBig;\n//        cout << \"quotient: \" << quotient << endl;\n//    } catch (ErrorException& ex) {\n//        cout << \"correctly threw exception when dividing by large integer\" << endl;\n//    }\n\n\n//    cout << \"Fib:\" << endl;\n//    BigInteger a(1);\n//    BigInteger b(1);\n//    for (int i = 0; i < 100; i++) {\n//        BigInteger c = a + b;\n//        cout << \"#\" << i << \": \" << c << endl;\n//        a = b;\n//        b = c;\n//    }\n\n//    cout << \"Fact:\" << endl;\n//    bigint f;\n//    for (int i = 0; i < 50; i++) {\n//        f = fact(i);\n//        cout << \"fact(\" << i << \") = \" << f << endl;\n//    }\n\n//    for (int i = 0; i < 19; i++) {\n//        bigint g = fact(i);\n//        bigint quotient = f / g;\n//        bigint mod = f / g;\n\n//        cout << \"i = \" << i << \", fact = \" << g << \", quot = \" << quotient << \", mod = \" << mod << endl;\n//    }\n//}\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/mainfunc-functional.cpp",
    "content": "///*\n// * Test file for verifying the Stanford C++ lib functionality.\n// */\n\n//#include <iostream>\n//#include <string>\n//#include \"functional.h\"\n//#include \"vector.h\"\n//using namespace std;\n\n//void testFunctional();\n\n//int mainFunctional() {\n//    testFunctional();\n//    return 0;\n//}\n\n//bool is_even(int n) {\n//    return n % 2 == 0;\n//}\n\n//int add(int a, int b) {\n//    return a + b;\n//}\n\n//int squared(int n) {\n//    return n * n;\n//}\n\n//int len(string s) {\n//    return (int) s.length();\n//}\n\n//bool strLenLess(const string& s1, const string& s2) {\n//    return s1.length() < s2.length() ||\n//            (s1.length() == s2.length() && s1 < s2);\n//}\n\n//void testFunctional() {\n//    Vector<int> v {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};\n//    Vector<int> v2 = functional::filter(v, is_even);\n//    cout << \"v  : \" << v << endl;\n//    cout << \"v2 : \" << v2 << endl;\n\n//    Vector<int> v3 = functional::map(v, squared);\n//    cout << \"v3 : \" << v3 << endl;\n\n//    Vector<string> names {\"Cynthia\", \"Marty\", \"Ed\", \"\", \"Bob\"};\n//    Vector<int> lengths;\n//    functional::map(names, len, lengths);\n//    cout << \"names  : \" << names << endl;\n//    cout << \"lengths: \" << lengths << endl;\n\n////    int result = functional::reduce(v, add);\n////    cout << \"sum: \" << result << endl;\n//}\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/mainfunc-iurlstream.cpp",
    "content": "///*\n// * Test file for verifying the Stanford C++ lib functionality.\n// */\n\n//#include <iostream>\n//#include <string>\n//#include \"gdownloader.h\"\n//#include \"urlstream.h\"\n\n//void testAllUrls();\n\n//int mainUrlStream() {\n//    std::cout << \"Downloading ...\" << std::endl;\n//    testAllUrls();\n//    std::cout << \"Downloads complete.\" << std::endl;\n//    return 0;\n//}\n\n//void testURL(const std::string& url) {\n////    GDownloader* downloader = new GDownloader();\n////    string text = downloader->downloadAsString(url);\n////    if (downloader->hasError()) {\n////        cout << \"error downloading \" << url << \":\" << endl << downloader->getErrorMessage() << endl;\n////    } else {\n////        cout << \"text of \" << url << \":\" << endl\n////             << text << endl\n////             << \"=======================================================\" << endl;\n////    }\n\n//    iurlstream input;\n//    input.setHeader(\"User-Agent\",\n//            \"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2\");\n//    input.open(url);\n//    if (!input) {\n//        std::cerr << \"An error occurred: \" << input.getErrorCode() << \" \" << input.getErrorMessage() << std::endl;\n//    } else {\n//        std::cout << input.str() << std::endl;\n//    }\n//}\n\n//void testAllUrls() {\n//    testURL(\"http://www.martystepp.com/\");\n//    testURL(\"https://en.wikipedia.org/w/index.php?title=Quokka&action=edit\");\n//    testURL(\"https://en.wikipedia.org/w/api.php?action=query&format=json&titles=Quokka&prop=extracts&explaintext&exlimit=1\");\n//    testURL(\"https://en.wikipedia.org/w/api.php?action=query&format=json&titles=Quokka&redirects\");\n//    testURL(\"http://www.bogusbogus.com/bogusbogus.html\");\n//    testURL(\"http://www.google.com/bogusbogus.html\");\n//}\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/mainfunc-menu.cpp",
    "content": "///*\n// * Test file for verifying the Stanford C++ lib functionality.\n// */\n\n//#include <iostream>\n//#include \"console.h\"\n//#include \"simpio.h\"\n//using namespace std;\n\n//int mainMenu() {\n//    cout << \"Stanford C++ lib tester\" << endl;\n\n////    while (true) {\n////        cout << \"   DATA STRUCTURES::\" << endl;\n////        cout << \"c) collections\" << endl;\n////        cout << \"cs) collection stream extraction\" << endl;\n////        cout << \"ci) collection initializer lists\" << endl;\n////        cout << \"csh) collection shuffle\" << endl;\n\n////        cout << \"   STUFF RELATED TO INPUT/OUTPUT:\" << endl;\n////        cout << \"e) cout / cerr mix\" << endl;\n////        cout << \"i) cin / cout\" << endl;\n////        cout << \"an) animation\" << endl;\n////        cout << \"p) pipe\" << endl;\n////        cout << \"s) strings\" << endl;\n////        cout << \"u) urlstream\" << endl;\n        \n////        cout << \"   GRAPHICS:\" << endl;\n////        cout << \"fd) file dialog\" << endl;\n////        cout << \"bi) buffered image\" << endl;\n////        cout << \"op) optionpane\" << endl;\n////        cout << \"rb) radio buttons\" << endl;\n////        cout << \"ta) table\" << endl;\n\n////        cout << \"   HTTP SERVER:\" << endl;\n////        cout << \"ss) start server\" << endl;\n\n////        cout << \"   ERROR HANDLING AND STACK TRACES:\" << endl;\n////        cout << \"   (Try all 3 to make sure stack trace prints.)\" << endl;\n////        cout << \"   (Current configuration shows no trace on stack overflow.)\" << endl;\n////        cout << \"n) segfault (NULL ptr)\" << endl;\n////        cout << \"t) throw exception\" << endl;\n////        cout << \"o) stack overflow\" << endl;\n////        cout << \"ri) recursion indent\" << endl;\n////        cout << endl;\n////        string cmd = getLine(\"Command (Enter to quit)?\");\n////        if (cmd.empty()) {\n////            break;\n////        } else if (cmd == \"an\") {\n////            animationTest();\n////        } else if (cmd == \"c\") {\n////            randomElementTest();\n////            compareTest();\n////            foreachTest();\n////            hashCodeTest();\n////        } else if (cmd == \"cs\") {\n////            streamExtractTest();\n////        } else if (cmd == \"csh\") {\n////            shuffleTest();\n////        } else if (cmd == \"ci\") {\n////            initializerListTest();\n////        } else if (cmd == \"e\") {\n////            coutCerrMixTest();\n////        } else if (cmd == \"fd\") {\n////            fileDialogTest();\n////        } else if (cmd == \"bi\") {\n////            gbufferedImageTest();\n////        } else if (cmd == \"op\") {\n////            goptionpaneTest();\n////        } else if (cmd == \"rb\") {\n////            radioButtonTest();\n////        } else if (cmd == \"i\") {\n////            // cinOutTest();\n////            killProcessTest();\n////        } else if (cmd == \"n\") {\n////            segfaultTest();\n////        } else if (cmd == \"p\") {\n////            outputColorTest();\n////            cinOutTest();\n////            coutCerrMixTest();\n////            getIntegerTest();\n////            longStringTest();\n////            // killProcessTest();\n////        } else if (cmd == \"o\") {\n////            //getPlatform()->setStackSize(1024*1024*128);\n////            stackOverflowTest();\n////        } else if (cmd == \"ri\") {\n////            recursionIndentTest();\n////        } else if (cmd == \"s\") {\n////            stringToIntegerTest();\n////        } else if (cmd == \"ss\") {\n////            serverTest();\n////        } else if (cmd == \"t\") {\n////            exceptionTest();\n////        } else if (cmd == \"ta\") {\n////            gtableTest();\n////        } else if (cmd == \"u\") {\n////            urlstreamTest();\n////        }\n////    }\n    \n//    cout << \"Done.\" << endl;\n//    return 0;\n//}\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/mainfunc-process.cpp",
    "content": "///*\n// * Test file for verifying the Stanford C++ lib functionality.\n// */\n\n//#include <iostream>\n//#include \"console.h\"\n//#include \"process.h\"\n//using namespace std;\n\n//void testProcess();\n\n//int mainProcess() {\n//    cout << \"Stanford C++ lib tester\" << endl;\n//    testProcess();\n//    return 0;\n//}\n\n//void testProcess() {\n//#ifdef PROCESS_H_ENABLED   // won't be enabled\n//    Process proc;\n//    proc.addCommandLineArgs({\n////        \"/bin/uname\",\n////        \"-a\"\n//        // \"/home/stepp/Dropbox/data/docs/stanford/StanfordCPPLib/test_programs/exitcode42\"\n//        // \"/home/stepp/Dropbox/data/docs/stanford/StanfordCPPLib/test_programs/delayed_output\"\n//        \"/home/stepp/Dropbox/data/docs/stanford/StanfordCPPLib/test_programs/infinite_loop\"\n//    });\n//    cout << \"my process is: \" << proc << endl << endl;\n//    cout << \"About to call startAndWait ...\" << endl;\n\n//    proc.setTimeout(1000);\n//    proc.startAndWait();\n\n//    cout << \"Done with startAndWait\" << endl << endl;\n//    cout << \"my process is: \" << proc << endl << endl;\n\n//    cout << \"About to call stop ...\" << endl;\n//    proc.stop();\n//    cout << \"Done with stop\" << endl << endl;\n\n//    cout << \"exit code:\" << proc.exitCode() << endl;\n\n//    cout << \"output (length \" << proc.output().length() << \"):\" << endl\n//         << proc.output() << endl << endl;\n//    cout << \"my process is: \" << proc << endl << endl;\n//#endif // PROCESS_H_ENABLED\n//}\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/mainfunc-qt-2dgraphics.cpp",
    "content": "///*\n// * Test file for verifying the Stanford C++ lib functionality.\n// */\n\n//#include <iostream>\n//#include \"gcolor.h\"\n//#include \"gobjects.h\"\n//#include \"ginteractors.h\"\n//#include \"gtimer.h\"\n//#include \"random.h\"\n//#include \"timer.h\"\n//using namespace std;\n\n//void testQwindowDrawing();\n\n//int mainQt2dGraphics() {\n//    testQwindowDrawing();\n//    return 0;\n//}\n\n//void grayscale(GBufferedImage* image) {\n//    // convert image to grayscale\n//    image->setAutoRepaint(false);\n//    Timer tim;\n//    tim.start();\n//    for (int x = 0; x < image->getWidth(); x++) {\n//        for (int y = 0; y < image->getHeight(); y++) {\n//            int rgb = image->getRGB(x, y);\n//            int r = GBufferedImage::getRed(rgb);\n//            int g = GBufferedImage::getGreen(rgb);\n//            int b = GBufferedImage::getBlue(rgb);\n//            int avg = (r + g + b) / 3;\n//            rgb = GBufferedImage::createRgbPixel(avg, avg, avg);\n//            image->setRGB(x, y, rgb);\n//        }\n//    }\n//    image->repaint();\n//    tim.stop();\n//    cout << \"took \" << tim.elapsed() << \"ms\" << endl;\n//}\n\n//void testQwindowDrawing() {\n//    static const bool TEST_BACKGROUND = true;\n//    static const bool TEST_FOREGROUND = true;\n//    static const bool TEST_LAYOUT_WIDGETS = true;\n\n//    static GWindow* window = nullptr;\n//    static GOval* ball = nullptr;\n//    static GButton* button = nullptr;\n//    static GButton* button2 = nullptr;\n//    static GButton* button3 = nullptr;\n//    static GButton* button4 = nullptr;\n//    static GButton* button5 = nullptr;\n//    static GButton* clearButton = nullptr;\n//    static GButton* saveButton = nullptr;\n//    static GButton* scaleButton = nullptr;\n//    static GButton* rotateButton = nullptr;\n//    static GButton* setSizeButton = nullptr;\n//    static GLabel* label = nullptr;\n//    static GLabel* label2 = nullptr;\n//    static double dx = 5;\n//    static double dy = 3;\n\n//    window = new GWindow(900, 500);\n//    // window->setCanvasSize(900, 500);\n//    window->setTitle(\"QtGui Drawing Window\");\n//    // window->setResizable(false);\n//    // window->setBackground(\"yellow\");\n//    window->setExitOnClose(true);\n//    window->center();\n\n//    if (TEST_LAYOUT_WIDGETS) {\n//        label = new GLabel(\"QtGui <b>AWESOME</b> <i>cool</i> window\");\n//        label2 = new GLabel(\"????????????\");\n//        window->addToRegion(label2, \"North\");\n//        window->addToRegion(label, \"North\");\n\n//        window->setRegionAlignment(\"North\", \"Left\");\n//        window->setRegionAlignment(\"South\", \"Right\");\n\n//        button = new GButton(\"Tick\");\n//        button2 = new GButton(\"Pixels\");\n//        button3 = new GButton(\"Repaint\");\n//        button4 = new GButton(\"Clear PX\");\n//        button5 = new GButton(\"BG\");\n//        button5->setBackground(\"#77ff00ff\");\n//        button5->setColor(\"#77000000\");\n//        clearButton = new GButton(\"Clear\");\n//        saveButton = new GButton(\"Save\");\n//        scaleButton = new GButton(\"Scale\");\n//        rotateButton = new GButton(\"Rotate\");\n//        setSizeButton = new GButton(\"setSize\");\n\n//        window->addToRegion(button, \"South\");\n//        window->addToRegion(button2, \"South\");\n//        window->addToRegion(button3, \"South\");\n//        window->addToRegion(button4, \"South\");\n//        window->addToRegion(button5, \"South\");\n//        window->addToRegion(saveButton, \"South\");\n//        window->addToRegion(clearButton, \"South\");\n//        window->addToRegion(scaleButton, \"South\");\n//        window->addToRegion(rotateButton, \"South\");\n//        window->addToRegion(setSizeButton, \"South\");\n//    }\n\n////        window->setBackground(\"yellow\");\n////        window->setColor(\"red\");\n////        window->setFillColor(\"red\");\n\n//    // drawing directly onto window\n////    window->setColor(\"blue\");\n////    window->setFillColor(\"yellow\");\n////    window->fillOval(20, 120, 40, 60);\n////    window->setColor(\"red\");\n////    window->setFillColor(\"green\");\n////    window->setLineWidth(3);\n////    window->fillRect(10, 30, 120, 70);\n////    window->drawLine(100, 100, 200, 150);\n\n//    // pixely stuff\n\n//    // background layer\n//    if (TEST_BACKGROUND) {\n//        window->setColor(\"black\");\n//        window->drawRect(400, 200, 50, 50);\n\n//        window->setFillColor(\"red\");\n//        window->setLineWidth(5);   // BUG: affects later shapes\n//        window->setLineStyle(GObject::LINE_DASH);\n//        window->drawRect(20, 220, 100, 100);\n//        window->fillArc(20, 220, 100, 100, 45, 120);\n\n//        window->setFillColor(\"purple\");\n//        window->setFont(\"Monospaced-bold-16\");\n//        window->fillPolygon({200, 200, 250, 300, 150, 300});\n//    }\n\n//    // foreground layer\n//    static GImage* gimage = nullptr;\n//    if (TEST_FOREGROUND) {\n//        ball = new GOval(20, 20, 50, 50);\n//        ball->setFillColor(\"#aaff0033\");\n//        ball->setLineWidth(2);\n//        ball->scale(1.5);\n//        ball->setLineStyle(GObject::LINE_DOT);\n//        window->add(ball);\n\n//        window->add(new GRect(400, 100, 50, 50));\n\n//        window->setColor(\"green\");\n//        GText* gtext = new GText(\"Hello, Qt!\", 200, 80);\n//        gtext->setColor(\"green\");\n//        gtext->rotate(10);\n//        window->add(gtext);\n\n//        GText* gtext2 = new GText(\"Bye, Felicia!\", 220, 100);\n//        gtext2->setColor(\"red\");\n//        gtext2->scale(1.5);\n//        window->add(gtext2);\n\n//        gimage = new GImage(\"triangle-icon.png\", 200, 40);\n//        gimage->setOpacity(0.6);\n//        window->add(gimage);\n\n//        window->setColor(\"blue\");\n//        GText* gtext3 = new GText(\"Third string\", 240, 120);\n//        gtext3->setColor(\"blue\");\n//        window->add(gtext3);\n//    }\n\n//    if (TEST_LAYOUT_WIDGETS) {\n//        std::function<void()> tickFunc = []() {\n//            window->pause(20);\n//            ball->move(dx, dy);\n//            double cw = window->getCanvasWidth();\n//            double ch = window->getCanvasHeight();\n//            if (ball->getX() < 0 || ball->getRightX() >= cw) {\n//                dx = -dx;\n//            }\n//            if (ball->getY() < 0 || ball->getBottomY() >= ch) {\n//                dy = -dy;\n//            }\n//            // cout << \"ball loc is now: \" << ball->getLocation() << endl;\n//        };\n//        button->setActionListener(tickFunc);\n\n//        button2->setActionListener([]() {\n//            for (int y = 3*window->getCanvasHeight()/4; y < window->getCanvasHeight(); y++) {\n//                for (int x = 3*window->getCanvasWidth()/4; x < window->getCanvasWidth(); x++) {\n//                    int r = (x * 2) % 256;\n//                    int g = (y * 2) % 256;\n//                    int b = ((x+y) * 2) % 256;\n//                    window->setPixel(x, y, r, g, b);\n//                }\n//            }\n//        });\n\n//        button3->setActionListener([]() {\n//            window->repaint();\n//        });\n\n//        button4->setActionListener([]() {\n//            window->clearCanvasPixels();\n//        });\n\n//        button5->setActionListener([]() {\n//            window->setBackground(\"yellow\");\n//        });\n\n//        clearButton->setActionListener([]() {\n//            window->clear();\n//        });\n\n//        saveButton->setActionListener([]() {\n//            string filename = GFileChooser::showSaveDialog();\n//            window->saveCanvasPixels(filename);\n//        });\n\n//        scaleButton->setActionListener([]() {\n//            gimage->scale(1.2);\n//        });\n\n//        rotateButton->setActionListener([]() {\n//            gimage->rotate(1);\n//        });\n\n//        setSizeButton->setActionListener([]() {\n//            gimage->setSize(gimage->getWidth() * 1.1, gimage->getHeight() * 1.1);\n//        });\n//    }\n\n//    if (TEST_LAYOUT_WIDGETS && TEST_BACKGROUND) {\n//        window->setMouseListener([](GEvent event) {\n//            // cout << \"mouse! event=\" << event << endl;\n//            // cout << \"mouse handler: What thread am I? \" << QGui::instance()->getCurrentThread() << endl;\n//            if (event.getType() == MOUSE_DRAGGED) {\n//                window->setColor(\"blue\");\n//                window->setFillColor(\"blue\");\n//                window->setLineStyle(GObject::LINE_SOLID);\n//                window->setLineWidth(1);\n//                window->fillOval(event.getX() - 5, event.getY() - 5, 10, 10);\n//            } else if (event.getType() == MOUSE_MOVED) {\n//                label->setText(event.getLocation().toString()\n//                               + \" \" + window->getPixelString(event.getX(), event.getY()));\n//                cout << \"mouse moved: \" << event.getLocation().toString() << endl;\n//            }\n//        });\n//    }\n\n//    if (TEST_FOREGROUND) {\n//        window->setKeyListener([](GEvent event) {\n//            // cout << \"key! event=\" << event << endl;\n//            double balldx = 0;\n//            double balldy = 0;\n//            if (event.getKeyCode() == GEvent::LEFT_ARROW_KEY) {\n//                balldx = -2;\n//            } else if (event.getKeyCode() == GEvent::RIGHT_ARROW_KEY) {\n//                balldx = 2;\n//            } else if (event.getKeyCode() == GEvent::UP_ARROW_KEY) {\n//                balldy = -2;\n//            } else if (event.getKeyCode() == GEvent::DOWN_ARROW_KEY) {\n//                balldy = 2;\n//            } else if (event.getKeyCode() == 'f') {\n//                ball->sendToFront();\n//            }\n//            ball->move(balldx, balldy);\n//        });\n//    }\n\n////    window->setWindowHandler([](GEvent /* event */) {\n////        // cout << \"window! event=\" << event << endl;\n////    });\n\n////    for (int i = 0; i < 1000; i++) {\n////        tickFunc();\n////    }\n\n////    GTimer timer(2);\n////    timer.start();\n////    while (true) {\n////        GEvent event = waitForEvent(MOUSE_EVENT | TIMER_EVENT);\n////        int x = randomInteger(0, 800);\n////        int y = randomInteger(0, 400);\n////        GOval* oval = new GOval(x, y, 10, 20);\n////        window->add(oval);\n////    }\n//}\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/mainfunc-qt-console.cpp",
    "content": "///*\n// * Test file for verifying the Stanford C++ lib functionality.\n// */\n\n//#include <iostream>\n//#include <iomanip>\n//#include \"error.h\"\n//#include \"consoletext.h\"\n//#include \"regexpr.h\"\n//#include \"simpio.h\"\n//#include \"timer.h\"\n//using namespace std;\n\n//void testQtConsole();\n\n//int mainQtConsole() {\n//    testQtConsole();\n//    return 0;\n//}\n\n//void testQtConsole() {\n//    cout << \"Hello, cout 1!\" << endl;\n//    cerr << \"Hello, cerr 1!\" << endl;\n//    cout << \"Hello, cout 2!\" << endl;\n//    cerr << \"Hello, cerr 2!\" << endl;\n//    cout << endl;\n//    cerr << \"This is stderr!\" << endl;\n//    cerr << \"So is this.\" << endl;\n//    cout << \"COUT IN THIS PART \";\n//    // cout.flush();\n//    cerr << \"... BUT IT ALTERNATES TO CERR! \";\n//    // cerr.flush();\n//    cout << endl;\n//    cout << \"COUT \";\n//    cerr << \"CERR \";\n//    cout << \"COUT \";\n//    cerr << \"CERR \";\n//    cout << \"COUT \";\n//    cerr << \"CERR \";\n//    cout << \"COUT \";\n//    cerr << \"CERR \";\n//    cout << \"COUT \";\n//    cerr << \"CERR \";\n//    cout << endl;\n\n//    Timer tim;\n//    tim.start();\n//    for (int i = 0; i < 1001; i++) {\n//        cout << setw(5) << i;\n//        if (i > 0 && i % 10 == 0) {\n//            cout << endl;\n//            // stanfordcpplib::qtgui::getConsoleWindow()->pause(10);\n//        }\n//    }\n//    tim.stop();\n//    cout << \"Took \" << tim.elapsed() << \"ms\" << endl;\n\n//    // user input\n//    std::string line = getLine(\"Type: \");\n//    cout << \"You typed: \\\"\" << line << \"\\\"\" << endl;\n\n//    int num = getInteger(\"Type an integer: \");\n//    cout << \"You typed: \" << num << endl;\n\n//    double realnum = getDouble(\"Type a real number: \");\n//    cout << \"You typed: \" << realnum << endl;\n\n//    cout << \"Partial line; what about me? :-(\";   // no endl\n\n////    cout << \"How about a nasty error?!\" << endl;\n////    error(\"oooooooooops\");\n//}\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/mainfunc-qt-layout.cpp",
    "content": "///*\n// * Test file for verifying the Stanford C++ lib functionality.\n// */\n\n//#include <iostream>\n//#include \"gcolor.h\"\n//#include \"gobjects.h\"\n//#include \"ginteractors.h\"\n//using namespace std;\n\n//void testQlayout();\n\n//int mainQtLayout() {\n//    testQlayout();\n//    return 0;\n//}\n\n//void testQlayout() {\n//    static GWindow* window = new GWindow(700, 500);\n//    window->setTitle(\"QtLayout Window\");\n//    window->setBackground(\"yellow\");\n//    window->setResizable(true);\n//    window->setExitOnClose(true);\n//    window->center();\n\n//    // northern area of overall window tests vertical flow layout\n//    GContainer* north = new GContainer(GContainer::LAYOUT_FLOW_VERTICAL);\n//    north->setBackground(\"red\");\n//    GButton* button1 = new GButton(\"Button 1\");\n//    north->add(button1);\n//    GButton* button2 = new GButton(\"Button Number 2\");\n//    north->add(button2);\n//    GButton* button3 = new GButton(\"B3\");\n//    north->add(button3);\n//    north->setHorizontalAlignment(ALIGN_RIGHT);\n//    north->setVerticalAlignment(ALIGN_TOP);\n//    window->addToRegion(north, \"North\");\n\n//    // central area of overall window tests border layout\n//    GContainer* center = new GContainer(GContainer::LAYOUT_BORDER);\n//    center->setBackground(\"green\");\n//    center->addToRegion(new GButton(\"CN1\"), \"North\");\n//    center->addToRegion(new GButton(\"CN2\"), \"North\");\n//    center->addToRegion(new GButton(\"CN3\"), \"North\");\n//    center->addToRegion(new GButton(\"CW1\"), \"North\");\n//    center->setRegionHorizontalAlignment(\"North\", \"Left\");\n\n//    center->addToRegion(new GButton(\"CWest1\"), \"West\");\n//    center->addToRegion(new GButton(\"CW2\"), \"West\");\n//    center->setRegionAlignment(\"West\", \"Right\", \"Top\");\n\n//    center->addToRegion(new GButton(\"CEast1\"), \"East\");\n//    center->addToRegion(new GButton(\"CE2\"), \"East\");\n//    center->addToRegion(new GButton(\"CEs3\"), \"East\");\n//    center->setRegionAlignment(\"East\", \"Center\", \"Bottom\");\n\n//    center->addToRegion(new GButton(\"CS1\"), \"South\");\n//    center->addToRegion(new GButton(\"CSouth2\"), \"South\");\n//    center->setRegionHorizontalAlignment(\"South\", \"Right\");\n\n//    center->addToRegion(new GButton(\"CCenter\"), \"Center\");\n//    window->addToRegion(center, \"Center\");\n\n//    GContainer* east = new GContainer(GContainer::LAYOUT_FLOW_VERTICAL);\n//    east->setBackground(\"cyan\");\n//    GContainer* east1 = new GContainer(GContainer::LAYOUT_FLOW_HORIZONTAL);\n//    GContainer* east2 = new GContainer(GContainer::LAYOUT_FLOW_HORIZONTAL);\n//    east->add(east1);\n//    east->add(east2);\n//    window->addToRegion(east, \"East\");\n//    east1->add(new GButton(\"E11\"));\n//    east1->add(new GButton(\"East12\"));\n//    east1->add(new GButton(\"E13\"));\n//    east2->add(new GButton(\"East11\"));\n//    east2->add(new GButton(\"E12\"));\n\n//    // southern area of overall window tests grid layout\n//    int rows = 4;\n//    int cols = 3;\n//    GContainer* south = new GContainer(GContainer::LAYOUT_GRID, rows, cols);\n//    south->setBackground(\"blue\");\n//    south->add(new GButton(\"r0 long c0\"));\n//    south->add(new GButton(\"r0c1\"));\n//    south->add(new GButton(\"r0c2\"));\n//    south->add(new GButton(\"r1c0\"));\n//    south->addToGrid(new GButton(\"r1 c1 row/colspan\\ntall BOOYAH\\nYAY!!!!!\"), 1, 1, 2, 2);\n////    south->add(new GButton(\"r1c2\"));\n//    south->addToGrid(new GButton(\"r2c0\"), 2, 0);\n////    south->add(new GButton(\"r2 long c1\"));\n////    south->add(new GButton(\"r2 ok c2\"));\n//    south->addToGrid(new GButton(\"r3 ok c0\\ntall\\ntall!\"), 3, 0);\n//    south->add(new GButton(\"r3 ok c1\"));\n//    south->add(new GButton(\"r3 ok c2\"));\n//    south->setHorizontalAlignment(ALIGN_RIGHT);\n//    south->setVerticalAlignment(ALIGN_TOP);\n//    window->addToRegion(south, \"South\");\n//    window->setRegionHorizontalAlignment(GWindow::REGION_SOUTH, ALIGN_RIGHT);\n\n//    window->show();\n//}\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/mainfunc-qt-table.cpp",
    "content": "///*\n// * Test file for verifying the Stanford C++ lib functionality.\n// */\n\n//#include <iostream>\n//#include \"gcolor.h\"\n//#include \"gobjects.h\"\n//#include \"ginteractors.h\"\n//#include \"timer.h\"\n//using namespace std;\n\n//void testQtable();\n\n//int mainQtTable() {\n//    testQtable();\n//    return 0;\n//}\n\n//void testQtable() {\n//    static GWindow* window = new GWindow(900, 300);\n//    window->setTitle(\"QtGui Window\");\n//    window->setResizable(true);\n//    window->setExitOnClose(true);\n//    window->center();\n\n\n//    GButton* button = new GButton(\"Triforce\");\n//    button->setColor(GColor::RED);\n//    button->setBackground(GColor::YELLOW);\n//    // button->setIcon(\"triangle-icon.png\");\n//    button->setTextPosition(GInteractor::TEXT_BESIDE_ICON);\n//    button->setActionListener([](GEvent event) {\n//        cout << \"button click! event = \" << event << endl;\n//    });\n\n//    button->setDoubleClickListener([](GEvent event) {\n//        cout << \"button double-click! event = \" << event << endl;\n//    });\n\n//    button->setAccelerator(\"Ctrl-T\");\n//    window->addToRegion(button, \"South\");\n//    cout << \"button:    \" << button->toString() << endl;\n//    cout << \"button accelerator: \" << button->getAccelerator() << endl;\n//    cout << \"button font: \" << button->getFont() << endl;\n//    button->setFont(\"Monospaced-Bold-14\");\n\n//    int rows = 7;\n//    int cols = 5;\n//    static GTable* table = new GTable(rows, cols);\n//    table->setColumnHeaderStyle(GTable::COLUMN_HEADER_EXCEL);\n//    for (int r = 0; r < rows; r++) {\n//        for (int c = 0; c < cols; c++) {\n//            table->set(r, c, \"hello\");\n//        }\n//    }\n\n//    // styles\n//    // 1) global\n//    table->setColor(\"magenta\");\n\n//    // 2) row\n//    table->setRowBackground(1, \"green\");\n//    table->setRowFont(1, \"Monospaced-12-Bold\");\n//    table->setRowForeground(3, \"Blue\");\n\n//    // 3) column\n//    table->setColumnAlignment(1, ALIGN_RIGHT);\n//    table->setColumnBackground(1, \"Cyan\");\n//    table->setColumnFont(2, \"*-*-Italic\");\n//    table->setColumnForeground(3, \"Red\");\n\n//    // 4) cell\n//    table->setCellForeground(0, 0, \"Red\");\n//    table->setCellAlignment(1, 1, ALIGN_CENTER);\n//    table->setCellBackground(2, 2, \"Blue\");\n\n//    // 1) global (again) - should override 2)-4)\n//    table->setBackground(\"yellow\");\n\n//    // 2) row (again) - should set cell (1,1) to bold, not italic\n//    // table->setRowFont(1, \"Monospaced-12-Bold\");\n\n//    table->setTableListener([](GEvent event) {\n//        cout << \"table event: \" << event.toString() << endl;\n//    });\n//    window->addToRegion(table, \"Center\");\n//    // window->pack();\n\n//    GButton* button2 = new GButton(\"Resize\");\n//    button2->setActionListener([]() {\n//        table->resize(table->numRows() + 1, table->numCols() + 1);\n//    });\n//    window->addToRegion(button2, \"South\");\n\n//    GButton* button3 = new GButton(\"ClearF\");\n//    button3->setActionListener([]() {\n//        // table->clearCellFormatting(1, 1);\n//        table->clearFormatting();\n//    });\n//    window->addToRegion(button3, \"South\");\n//}\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/mainfunc-qt-widgets.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib functionality.\n */\n\n#include <iostream>\n#include \"gcolor.h\"\n#include \"gdiffimage.h\"\n#include \"gobjects.h\"\n#include \"ginteractors.h\"\n#include \"gtimer.h\"\n#include \"timer.h\"\nusing namespace std;\n\nvoid testDiffImage();\nvoid testQwindow();\n\nint mainQtWidgets() {\n    // testQwindow();\n    testDiffImage();\n    return 0;\n}\n\nvoid c() {\n    Vector<int> v;\n    v[5];   // will crash\n}\n\nvoid b() {\n    c();\n}\n\nvoid a() {\n    b();\n}\n\nvoid testQwindow() {\n    static GWindow* window = new GWindow(900, 300);\n    window->setTitle(\"QtGui Window\");\n    window->setResizable(true);\n    window->setExitOnClose(true);\n    window->center();\n\n//    window->setColor(\"red\");\n//    window->fillRect(0, 0, 900, 300);\n\n    // NORTH AREA\n\n    GLabel* label = new GLabel(\"Type <b>stuff</b> <i>now</i> (North):\");\n    // label->setIcon(\"triangle-icon.png\");\n    label->setColor(GColor::GREEN);\n    // label->setBackground(GColor::YELLOW);\n    label->setActionListener([=]() {\n        std::cout << \"label clicked!\" << std::endl;\n        label->setBackground(label->getBackground() == \"cyan\" ? \"yellow\" : \"cyan\");\n    });\n    label->setDoubleClickListener(GEvent::LOG_EVENT);\n    window->addToRegion(label, GWindow::REGION_NORTH);\n    cout << \"label:     \" << label->toString() << endl;\n\n    //        static GTextField* textField = new GTextField(42.0);\n    static GTextField* textField = new GTextField(\"Marty\");\n    textField->setPlaceholder(\"type your name\");\n    // textField->setEditable(false);\n    textField->setAutocompleteList({\"matt\", \"Marty\", \"Stuart\", \"steve\", \"yana\", \"yes\", \"no\"});\n    textField->setTextChangeListener([]() {\n        cout << \"textfield text changed! text is:\" << endl << textField->getText() << endl;\n    });\n    textField->setActionListener([]() {\n        cout << \"textfield action performed! text is:\" << endl << textField->getText() << endl;\n    });\n    window->addToRegion(textField, GWindow::REGION_NORTH);\n    cout << \"textfield: \" << textField->toString() << endl;\n\n    static GSlider* slider = new GSlider();\n    slider->setMinorTickSpacing(20);\n    slider->setPaintLabels(true);\n    slider->setPaintTicks(true);\n    slider->setActionListener([](GEvent event) {\n        cout << \"sliderChangeHandler: slider was slid!\" << endl;\n        cout << \"value: \" << slider->getValue() << endl;\n        cout << \"event: \" << event << endl;\n        window->removeTimerListener();\n    });\n\n    window->addToRegion(slider, GWindow::REGION_NORTH);\n    cout << \"slider:    \" << slider->toString() << endl;\n\n\n    // WEST AREA\n\n    static GCheckBox* checkBox = new GCheckBox(\"Question?\", true);\n    checkBox->setActionListener([](const GEvent&) {\n        cout << \"checkbox clicked! \" << boolalpha << checkBox->isChecked() << endl;\n    });\n    window->addToRegion(checkBox, GWindow::REGION_WEST);\n    window->addToRegion(new GLabel(\"Hi!\"), GWindow::REGION_WEST);\n    window->addToRegion(new GLabel(\"^_^\"), GWindow::REGION_WEST);\n    // window->setRegionAlignment(GWindow::REGION_WEST, \"Top Right\");\n    cout << \"checkbox:  \" << checkBox->toString() << endl;\n\n\n    // EAST AREA\n\n    static GRadioButton* radio1group1 = new GRadioButton(\"A\", \"group1\");\n    static GRadioButton* radio2group1 = new GRadioButton(\"B\", \"group1\", true);\n    static GRadioButton* radio3group1 = new GRadioButton(\"C\", \"group1\");\n    static GRadioButton* radio1group2 = new GRadioButton(\"XX\", \"group2\", true);\n    static GRadioButton* radio2group2 = new GRadioButton(\"YY\", \"group2\");\n\n    GEventListenerVoid radioChangeHandler = []() {\n        cout << \"checkbox clicked! \" << boolalpha\n             << radio1group1->isChecked() << \" \"\n             << radio2group1->isChecked() << \" \"\n             << radio3group1->isChecked() << \" \"\n             << radio1group2->isChecked() << \" \"\n             << radio2group2->isChecked() << endl;\n    };\n    radio1group1->setActionListener(radioChangeHandler);\n    radio1group1->setDoubleClickListener(GEvent::LOG_EVENT);\n    radio2group1->setActionListener(radioChangeHandler);\n    radio2group1->setDoubleClickListener(GEvent::LOG_EVENT);\n    radio3group1->setActionListener(radioChangeHandler);\n    radio3group1->setDoubleClickListener(GEvent::LOG_EVENT);\n    radio1group2->setActionListener(radioChangeHandler);\n    radio2group2->setActionListener(radioChangeHandler);\n\n//    static QGScrollBar* scrollBar = new QGScrollBar(QGScrollBar::VERTICAL, 0, 10, 0, 500);\n//    scrollBar->setValueChangeHandler([]() {\n//        cout << \"value: \" << scrollBar->getValue() << endl;\n//    });\n//    window->addToRegion(scrollBar, GWindow::REGION_EAST);\n\n    window->addToRegion(radio1group1, GWindow::REGION_EAST);\n    window->addToRegion(radio2group1, GWindow::REGION_EAST);\n    window->addToRegion(radio3group1, GWindow::REGION_EAST);\n    window->addToRegion(radio1group2, GWindow::REGION_EAST);\n    window->addToRegion(radio2group2, GWindow::REGION_EAST);\n    // window->setRegionAlignment(GWindow::REGION_EAST, \"Bottom Left\");\n//    cout << \"radio:     \" << radio1group1->toString() << endl;\n\n\n    // SOUTH AREA\n\n    static GChooser* chooser = new GChooser({\"one\", \"two\", \"three four\"});\n    chooser->setColor(GColor::RED);\n    chooser->setBackground(GColor::CYAN);\n    chooser->setActionListener([]() {\n        cout << \"changeHandler: chooser was clicked!\" << endl;\n        cout << \"selected: \" << chooser->getSelectedIndex() << \" : \"\n             << chooser->getSelectedItem() << endl;\n        cout << \"size: \" << chooser->size() << endl << endl;\n    });\n    window->addToRegion(chooser, GWindow::REGION_SOUTH);\n    cout << \"chooser:   \" << chooser->toString() << endl;\n\n    GButton* button = new GButton(\"Triforce\");\n    button->setColor(GColor::RED);\n    button->setBackground(GColor::YELLOW);\n    button->setIcon(\"triangle-icon.png\");\n    button->setTextPosition(GInteractor::TEXT_BESIDE_ICON);\n    button->setActionListener([](GEvent event) {\n        cout << \"button click! event = \" << event << endl;\n        cout.flush();\n        window->restore();\n\n        a();\n\n//        window->setResizable(!window->isResizable());\n//        cout << \"clickHandler: button was clicked!\" << endl;\n//        cout << \"location:  \" << window->getLocation() << endl;\n//        cout << \"size:      \" << window->getSize() << endl;\n//        cout << \"visible:   \" << boolalpha << window->isVisible() << endl;\n//        cout << \"resizable: \" << boolalpha << window->isResizable() << endl << endl;\n\n//        // test GOptionPane\n//        GOptionPane::showMessageDialog(\"I love Yana! <3\");\n\n//        Vector<string> choices = {\"One\", \"Two\", \"Three\"};\n//        string result = GOptionPane::showOptionDialog(\"Pick a thing\", choices);\n//        cout << \"You chose: \" << result << endl;\n\n        //    int result = GOptionPane::showConfirmDialog(\"Is Yana the most beautiful?\", \"Important Question\", GOptionPane::YES_NO_CANCEL);\n        //    cout << \"You chose: \" << result << endl;\n        //    std::string answer = GOptionPane::showInputDialog(\"Who is my baby?\", \"Baby's name?\", \"bozo\");\n        //    cout << \"You typed: \" << answer << endl;\n\n        //    string filename = QGFileChooser::showOpenDialog(\"\", \"*.txt, *.cpp, *.h\");\n        //    cout << \"You chose: \" << filename << endl;\n        // window->clear();\n    });\n\n    //        button->setClickHandler([]() {\n    //            // grayscale(image);\n    //        });\n    button->setDoubleClickListener([](GEvent event) {\n        cout << \"button double-click! event = \" << event << endl;\n    });\n    button->setAccelerator(\"Ctrl-T\");\n    window->addToRegion(button, GWindow::REGION_SOUTH);\n    cout << \"button:    \" << button->toString() << endl;\n    cout << \"button accelerator: \" << button->getAccelerator() << endl;\n    cout << \"button font: \" << button->getFont() << endl;\n    button->setFont(\"Monospaced-Bold-14\");\n\n    static GButton* button4 = new GButton(\"HI!\");\n    window->addToRegion(button4, GWindow::REGION_SOUTH);\n\n    static GCheckBox* checkboxs = new GCheckBox(\"&Visible?\", /* checked */ true);\n    checkboxs->setActionListener([]() {\n        std::cout << \"checkbox clicked!\" << std::endl;\n        // button4->setVisible(checkboxs->isChecked());\n        if (checkboxs->isChecked()) {\n            window->addToRegion(button4, GWindow::REGION_SOUTH);\n        } else {\n            window->removeFromRegion(button4, GWindow::REGION_SOUTH);\n        }\n    });\n    checkboxs->setDoubleClickListener([]() {\n        std::cout << \"checkbox double-clicked!\" << std::endl;\n    });\n    window->addToRegion(checkboxs, GWindow::REGION_SOUTH);\n\n    GButton* timerButton = new GButton(\"Timer\");\n    GTimer* timer = nullptr;\n    timerButton->setActionListener([&timer]() {\n        if (timer) {\n            timer->stop();\n            delete timer;\n            timer = nullptr;\n        } else {\n            timer = new GTimer(1000);\n            timer->start();\n        }\n    });\n    window->addToRegion(timerButton, GWindow::REGION_SOUTH);\n\n//    window->setRegionAlignment(GWindow::REGION_SOUTH, \"Center\");\n\n    // GLabel* oopsButton = new GLabel(\"I should not show up!!!!!\");\n    // oopsButton->setVisible(true);\n\n\n    // CENTER AREA\n\n//    static GTextArea* textArea = new GTextArea(\"This is \\na multi-line\\n\\ntext area\");\n//    textArea->setPlaceholder(\"type some text\");\n//    textArea->setTextChangeListener([](GEvent) {\n//        cout << \"textarea text changed! text is:\" << endl << textArea->getText() << endl;\n//    });\n//    window->addToRegion(textArea, \"Center\");\n\n    GBrowserPane* pane = new GBrowserPane();\n    pane->readTextFromFile(\"resfile3.html\");\n    pane->setLinkListener([](GEvent event) {\n        cout << \"event: \" << event << \", url: \" << event.getRequestURL() << endl;\n    });\n    window->addToRegion(pane, GWindow::REGION_CENTER);\n    cout << \"browser:  \" << pane->toString() << endl;\n\n    // window->pack();\n\n//    while (true) {\n//        GEvent event = waitForEvent(TIMER_EVENT);\n//        cout << \"event: \" << event << endl;\n//    }\n\n    // will crash\n    // a();\n\n//    int* x = nullptr;\n//    (*x)++;   // boom\n}\n\nvoid testDiffImage() {\n    GDiffImage::showDialog(\"bender1\", \"bender.png\", \"bender2\", \"bender2.png\");\n}\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/mainfunc.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib functionality.\n */\n\n//#include \"gobjects.h\"\n#include <iostream>\n#include \"console.h\"\n\nint multimain(1) {\n//    extern int mainQt2dGraphics();\n//    return mainQt2dGraphics();\n//    extern int mainQtLayout();\n//    return mainQtLayout();\n    extern int mainQtWidgets();\n    return mainQtWidgets();\n\n//    extern int mainQtConsole();\n//    return mainQtConsole();\n    return 0;\n}\n\nint main() {\n    // empty?\n    return 0;\n}\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/mainfunc2.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib functionality.\n */\n\n#include <iostream>\n#include <iomanip>\n#include \"console.h\"\n\nint multimain(2) {\n    std::cout << \"Yay this is main 2!\" << std::endl;\n    for (double d = 10000; d <= 2000000; ++d) {\n        std::cout << std::fixed << d << std::endl;\n    }\n    return 0;\n}\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/mainfunc3.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib functionality.\n */\n\n#include <iostream>\n#include \"console.h\"\n\n#define ARRAY_LENGTH(a) (sizeof(a) / sizeof((a)[0]))\n\n\nint multimain(3) {\n    std::cout << \"Yay this is multimain #3!!!\" << std::endl;\n\n    int nums[] = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100};\n    std::cout << \"Array length is \" << ARRAY_LENGTH(nums) << std::endl;\n\n    return 0;\n}\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/readme.txt",
    "content": "This directory contains the source code files (*.cpp, *.h)\r\nthat you will write as you complete the assignment.\r\nWe will also put any instructor-provided code here.\r\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/searching.cpp",
    "content": "/*\n * CS 106B, Marty Stepp\n * This program contains code for the recursive binary search algorithm.\n * Included in comments below are some runtime measurements for a standard\n * sequential search (O(N)) and the recursive binary search (O(log N)).\n * Notice how the binary search can perform many more searches over a larger\n * data set in much less time than a sequential search.\n *\n * This program uses a small instructor-provided helper class called Timer\n * to make it easier to measure the runtime of each algorithm.\n *\n * @version 2015/07/21\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"searchingsorting.h\"\n#include <fstream>\n#include <iomanip>\n#include <iostream>\n#include \"filelib.h\"\n#include \"random.h\"\n#include \"vector.h\"\n#include \"timer.h\"\n#undef INTERNAL_INCLUDE\n\n/*\n * This recursive helper function implements the bulk of the\n * binary search behavior.\n */\nint binarySearchHelper(const Vector<int>& v, int target,\n                       int min, int max) {\n    int mid = (max + min) / 2;\n    if (min > max) {\n        // base case 1: exhausted all data without finding the target value\n        return -1;\n    }\n    \n    cout << \"  examine index \" << mid << endl;\n    if (target == v[mid]) {\n        // base case 2: found the target value in the middle of our current range\n        return mid;\n    } else if (target > v[mid]) {\n        // recursive case 1: target value is larger, so go right\n        return binarySearchHelper(v, target, mid + 1, max);\n    } else {\n        // recursive case 2: target value is smaller, so go left\n        return binarySearchHelper(v, target, min, mid - 1);\n    }\n}\n\n/*\n * Performs a binary search for the given target value in the given vector.\n * Precondition: The vector's elements are assumed to be in sorted order.\n * If they are not sorted, the behavior is undefined and likely incorrect.\n */\nint binarySearch(const Vector<int>& v, int target) {\n    int result = binarySearchHelper(v, target, 0, v.size() - 1);\n    cout << \"  return \" << result << endl;\n    return result;\n}\n\n// Returns the index of the given value in the given vector of integers,\n// or -1 if the value is not found in the vector.\nint sequentialSearch(const Vector<int>& v, int value) {\n    for (int i = 0; i < v.size(); i++) {\n        if (v[i] == value) {\n            return i;\n        }\n    }\n    return -1;\n}\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/searchingsorting.h",
    "content": "/*\n * Functions used for searching and sorting.\n *\n * @version 2015/07/21\n */\n\n#ifndef _searchingsorting_h\n#define _searchingsorting_h\n\n#include <iostream>\n#include <string>\n#include \"vector.h\"\n\nusing namespace std;\n\nvoid fillRandomIntVector(Vector<int>& v, int length);\nvoid fillSortedIntVector(Vector<int>& v, int length);\n\nbool isSorted(const Vector<int>& v);\nvoid selectionSort(Vector<int>& v, int passes = -1);\nvoid mergeSort(Vector<int>& v, string indent = \"\");\n\nint binarySearch(const Vector<int>& v, int target);\nint sequentialSearch(const Vector<int>& v, int value);\n\n#endif\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/sorting.cpp",
    "content": "/*\n * CS 106B, Marty Stepp\n * This program contains code for recursive merge sort.\n *\n * @version 2015/07/21\n */\n\n#define INTERNAL_INCLUDE 1\n#include <fstream>\n#include <iomanip>\n#include <iostream>\n#include \"filelib.h\"\n#include \"random.h\"\n#include \"searchingsorting.h\"\n#include \"vector.h\"\n#include \"timer.h\"\n#undef INTERNAL_INCLUDE\n\nvoid mergeSort(Vector<int>& v, string indent) {\n    cout << indent << v << endl;\n    if (v.size() < 2) {\n        return;   // base case; do nothing\n    }\n    \n    // else, recursive case:\n    // divide v in halves\n    Vector<int> left;\n    for (int i = 0; i < v.size() / 2; i++) {\n        left.add(v[i]);\n    }\n    Vector<int> right;\n    for (int i = v.size() / 2; i < v.size(); i++) {\n        right.add(v[i]);\n    }\n    \n    // sort the halves\n    mergeSort(left, indent + \"    \");\n    mergeSort(right, indent + \"    \");\n    \n    // merge the sorted halves together\n    v.clear();\n    int i1 = 0;\n    int i2 = 0;\n    for (int i = 0; i < left.size() + right.size(); i++) {\n        // pick smaller one, move into result\n        if (i2 >= right.size() || \n                (i1 < left.size() && left[i1] < right[i2])) {\n            v.add(left[i1]);\n            i1++;\n        } else {\n            v.add(right[i2]);\n            i2++;\n        }\n    }\n}\n\n\n// Rearranges the elements of v into sorted order using\n// the selection sort algorithm.\nvoid selectionSort(Vector<int>& v, int passes) {\n    for (int i = 0; i < v.size() - 1; i++) {\n        // find index of smallest remaining value\n        int min = i;\n        for (int j = i + 1; j < v.size(); j++) {\n            if (v[j] < v[min]) {\n                min = j;\n            }\n        }\n        // swap smallest value to its proper place, a[i]\n        int temp = v[i];\n        v[i] = v[min];\n        v[min] = temp;\n        \n        cout << \"after pass \" << (i+1) << \": \" << v << endl;\n        if (passes > 0 && (i+1) >= passes) {\n            break;\n        }\n    }\n}\n\nbool isSorted(const Vector<int>& v) {\n    for (int i = 1; i < v.size(); i++) {\n        if (v[i] < v[i - 1]) {\n            return false;\n        }\n    }\n    return true;\n}\n\n// Fills the given vector with the given number of random integers.\nvoid fillRandomIntVector(Vector<int>& v, int length) {\n    for (int i = 0; i < length; i++) {\n        v += randomInteger(0, 1000000000);\n    }\n}\n\n// Fills the given vector with the given number of sorted integers.\nvoid fillSortedIntVector(Vector<int>& v, int length) {\n    v.add(randomInteger(0, 10));\n    for (int i = 1; i < length; i++) {\n        // add another value slightly larger than the last\n        v += v[i-1] + randomInteger(0, 10);\n    }\n}\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/types.cpp",
    "content": "/*\n * Various support classes and types used in practice problems.\n *\n * @version 2015/08/10\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"types.h\"\n#undef INTERNAL_INCLUDE\n\nDomino::Domino(int f, int s) {\n    first = f;\n    second = s;\n}\n\nostream& operator <<(ostream& out, const Domino& d) {\n    return out << \"(\" << d.first << \":\" << d.second << \")\";\n}\n\nistream& operator >>(istream& input, Domino& d) {\n    char ch = '\\0';\n    input >> ch;   // (\n    input >> ch;   // first\n    d.first = ch - '0';\n    input >> ch;   // :\n    input >> ch;   // second\n    d.second = ch - '0';\n    input >> ch;   // )\n    return input;\n}\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/src/types.h",
    "content": "/*\n * Various support classes and types used in practice problems.\n *\n * @version 2015/08/10\n */\n\n#ifndef _types_h\n#define _types_h\n\n#include <iostream>\nusing namespace std;\n\nstruct Domino {\n    int first;\n    int second;\n    \n    Domino(int f = 0, int s = 0);\n};\n\nostream& operator <<(ostream& out, const Domino& d);\nistream& operator >>(istream& input, Domino& d);\n\n#endif // _types_h\n"
  },
  {
    "path": "Archived/StanfordCPPLib_CodeStepByStep_Project/stanfordcpplib-codestepbystep.pro",
    "content": "#####################################################################\n## Stanford CS 106 B/X Qt Creator project file                     ##\n#####################################################################\n#\n# This file specifies the information about your project to Qt Creator.\n# You should not need to modify this file to complete your assignment.\n#\n# @author Marty Stepp (past authors/support by Keith Schwarz, Reid Watson, etc.)\n# @version 2019/04/23\n# - revert copydata code for copying resource files\nDEFINES += SPL_PROJECT_VERSION=20190423   # kludgy YYYYMMDD constant used by lib to know its version\n\n# global Qt/project settings\nTEMPLATE = app\nPROJECT_FILTER =\nQT       += core gui multimedia network\ngreaterThan(QT_MAJOR_VERSION, 4): QT += widgets\n\n###############################################################################\n# BEGIN SECTION FOR SPECIFYING SOURCE/LIBRARY/RESOURCE FILES OF PROJECT       #\n###############################################################################\n\n# remove spaces from target executable for better Windows compatibility\nTARGET = $$replace(TARGET, \" \", _)\n\n# checks to make sure we haven't accidentally opened the project\n# from within a ZIP archive (common mistake on Windows)\n\nwin32 {\n    contains(PWD, .*\\.zip.*) | contains(PWD, .*\\.ZIP.*) {\n        message(\"\")\n        message(*******************************************************************)\n        message(*** ERROR: You are trying to open this project from within a .ZIP archive:)\n        message(*** $$PWD)\n        message(*** You need to extract the files out of the ZIP file first.)\n        message(*** Open the ZIP in your file explorer and press the Extract button.)\n        message(*******************************************************************)\n        message(\"\")\n        error(Exiting.)\n    }\n}\n\n# check for intl chars in path (common issue for intl students)\nPWD_WITHOUT_BAD_CHARS = $$PWD\nPWD_WITHOUT_BAD_CHARS ~= s|[^a-zA-Z0-9_ ().\\/:;+-]+|???\nBAD_CHARS = $$PWD\nBAD_CHARS ~= s|[a-zA-Z0-9_ ().\\/:;-]+|\n!isEmpty(BAD_CHARS) {\n    message(\"\")\n    message(*******************************************************************)\n    message(*** ERROR: Your project directory contains invalid characters:)\n    message(*** $$PWD)\n    message(***)\n    message(*** The characters that are invalid are: $$BAD_CHARS)\n    message(***)\n    message(*** You need to store your project in a directory without any punctuation)\n    message(*** marks such as commas, or international symbols such as)\n    message(*** Chinese or Korean symbols.)\n    message(*** If you keep seeing this error try creating a simple directory)\n    message(*** name such as \"C:\\Programs\\Homework1.\")\n    message(*******************************************************************)\n    message(\"\")\n    error(Exiting.)\n}\n\n# checks to ensure that the Stanford C++ library is present in this project\n!exists($$PWD/lib/StanfordCPPLib/private/version.h) {\n    message(\"\")\n    message(*******************************************************************)\n    message(*** ERROR: Stanford C++ library not found!)\n    message(*** This project cannot run without the folder lib/StanfordCPPLib/.)\n    message(*** Place that folder into your project and try again.)\n    message(*******************************************************************)\n    message(\"\")\n    error(Exiting.)\n}\n\nwin64 {\n    !exists($$PWD/lib/addr2line64.exe) {\n        message(\"\")\n        message(*******************************************************************)\n        message(*** ERROR: Stanford C++ library support file 'addr2line64.exe' not found!)\n        message(*** Our library needs this file present to produce stack traces.)\n        message(*** Place that file into your lib/ folder and try again.)\n        message(*******************************************************************)\n        message(\"\")\n        warning(Exiting.)\n    }\n}\n\nwin32 {\n    !exists($$PWD/lib/addr2line.exe) {\n        message(\"\")\n        message(*******************************************************************)\n        message(*** ERROR: Stanford C++ library support file 'addr2line.exe' not found!)\n        message(*** Our library needs this file present to produce stack traces.)\n        message(*** Place that file into your lib/ folder and try again.)\n        message(*******************************************************************)\n        message(\"\")\n        warning(Exiting.)\n    }\n}\n\n!exists($$PWD/lib/iconstrip.png) {\n    message(\"\")\n    message(*******************************************************************)\n    message(*** ERROR: Stanford library cannot find image strip file:)\n    message(*** lib/iconstrip.png)\n    message(*** This project cannot run without this file present.)\n    message(*** Place the file into your lib/ folder and try again.)\n    message(*******************************************************************)\n    message(\"\")\n    warning(Exiting.)\n}\n\n# precompiled header speeds up build times\n!win32 {\nPRECOMPILED_HEADER = $$files($$PWD/lib/StanfordCPPLib/private/precompiled.h)\n}\n\n# honeypot to trick Qt Creator so that adding files works from within IDE;\n# Qt looks for first 'SOURCES *=' line and adds newly added .cpp/h files there.\n# But then that causes the files to be added twice because of *.cpp/h rules below.\n# To get around this, we follow the first 'SOURCES *=' line by a line that clears\n# out SOURCES, so that the Qt Creator .pro modification is ineffectual.\nDISTFILES *= \"\"\nDISTFILES = \"\"\nHEADERS *= \"\"\nHEADERS = \"\"\nSOURCES *= \"\"\nSOURCES = \"\"\n\n# include various source .cpp files and header .h files in the build process\n# (student's source code can be put into project root, or src/ subfolder)\nSOURCES *= $$files($$PWD/lib/StanfordCPPLib/*.cpp, true)\nSOURCES *= $$files($$PWD/src/*.cpp, true)\nexists($$PWD/$$PROJECT_FILTER*.cpp) {\n    SOURCES *= $$files($$PWD/$$PROJECT_FILTER*.cpp)\n}\n\nexists($$PWD/lib/StanfordCPPLib/*.h) {\n    HEADERS *= $$files($$PWD/lib/StanfordCPPLib/*.h)\n}\nHEADERS *= $$files($$PWD/lib/StanfordCPPLib/*.h, true)\nHEADERS *= $$files($$PWD/src/*.h, true)\nexists($$PWD/$$PROJECT_FILTER*.h) {\n    HEADERS *= $$files($$PWD/$$PROJECT_FILTER*.h)\n}\n\n# directories examined by Qt Creator when student writes an #include statement\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/collections/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/graphics/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/io/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/system/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/util/\nexists($$PWD/lib/StanfordCPPLib/autograder/*) {\n    INCLUDEPATH *= $$PWD/lib/StanfordCPPLib/autograder/\n}\nINCLUDEPATH *= $$PWD/src/\nINCLUDEPATH *= $$PWD/\nexists($$PWD/src/autograder/$$PROJECT_FILTER/*.h) {\n    INCLUDEPATH *= $$PWD/src/autograder/$$PROJECT_FILTER/\n}\nexists($$PWD/src/test/*.h) {\n    INCLUDEPATH *= $$PWD/src/test/\n}\n\n# directories listed as \"Other files\" in left Project pane of Qt Creator\nexists($$PWD/res/*) {\n    OTHER_FILES *= $$files($$PWD/res/*, true)\n}\nexists($$PWD/*.txt) {\n    OTHER_FILES *= $$files($$PWD/*.txt)\n}\nexists($$PWD/input/*) {\n    OTHER_FILES *= $$files($$PWD/input/*, true)\n}\nexists($$PWD/output/*) {\n    OTHER_FILES *= $$files($$PWD/output/*, true)\n}\n\n###############################################################################\n# END SECTION FOR SPECIFYING SOURCE/LIBRARY/RESOURCE FILES OF PROJECT         #\n###############################################################################\n\n\n###############################################################################\n# BEGIN SECTION FOR SPECIFYING COMPILER/LINKER FLAGS AND LIBRARIES            #\n###############################################################################\n\n# set up flags for the C++ compiler\n# (In general, many warnings/errors are enabled to tighten compile-time checking.\n# A few overly pedantic/confusing errors are turned off for simplicity.)\nCONFIG += no_include_pwd         # make sure we do not accidentally #include files placed in 'resources'\nCONFIG += sdk_no_version_check   # removes spurious warnings on Mac OS X\n# CONFIG += warn_off\n\n# gives us a bit more precision about which errors are printed\nQMAKE_CFLAGS_WARN_ON -= -Wall\nQMAKE_CFLAGS_WARN_ON -= -Wextra\nQMAKE_CFLAGS_WARN_ON -= -W\nQMAKE_CXXFLAGS_WARN_ON -= -Wall\nQMAKE_CXXFLAGS_WARN_ON -= -Wextra\nQMAKE_CXXFLAGS_WARN_ON -= -W\n\nwin32 {\n    # some Windows systems have old MinGW compilers, so be safe and use C++11\n    CONFIG += c++11\n} else {\n    # Mac/Linux should support the latest C++ features\n    CONFIG += c++14\n}\n\n# uncomment this if you want to dump the preprocessor output into the .o files\n# (useful when debugging advanced preprocessor hacking)\n# QMAKE_CXXFLAGS += -E\n\nQMAKE_CXXFLAGS += -Wall\n#QMAKE_CXXFLAGS += -Wextra\nQMAKE_CXXFLAGS += -Wcast-align\n#QMAKE_CXXFLAGS += -Wfloat-equal\nQMAKE_CXXFLAGS += -Wformat=2\nQMAKE_CXXFLAGS += -Wlogical-op\nQMAKE_CXXFLAGS += -Wno-missing-field-initializers\nQMAKE_CXXFLAGS += -Wno-old-style-cast\nQMAKE_CXXFLAGS += -Wno-sign-compare\nQMAKE_CXXFLAGS += -Wno-sign-conversion\nQMAKE_CXXFLAGS += -Wno-write-strings\nQMAKE_CXXFLAGS += -Wreturn-type\nQMAKE_CXXFLAGS += -Werror=return-type\nQMAKE_CXXFLAGS += -Werror=uninitialized\nQMAKE_CXXFLAGS += -Wunreachable-code\nQMAKE_CXXFLAGS += -Wunused-parameter\nexists($$PWD/lib/autograder/*.h) | exists($$PWD/lib/StanfordCPPLib/autograder/$$PROJECT_FILTER/*.h) | exists($$PWD/lib/autograder/$$PROJECT_FILTER/*.cpp) {\n    # omit some warnings/errors in autograder projects\n    # (largely because the Google Test framework violates them a ton of times)\n    QMAKE_CXXFLAGS += -Wno-deprecated\n    QMAKE_CXXFLAGS += -Wno-reorder\n    QMAKE_CXXFLAGS += -Wno-unused-function\n    QMAKE_CXXFLAGS += -Wno-useless-cast\n}\n\n# additional flags for Windows\nwin32 {\n    LIBS += -lDbghelp\n    LIBS += -lbfd\n    LIBS += -limagehlp\n    cache()\n} else {\n    # flags that don't work on Windows MinGW compiler\n    QMAKE_CXXFLAGS += -Wno-unused-const-variable\n    LIBS += -ldl\n}\n\n# additional flags for Mac OS X\nmacx {\n    # calling cache() reduces warnings on Mac OS X systems\n    cache()\n    QMAKE_MAC_SDK = macosx\n}\n\n# additional flags for Linux\nunix:!macx {\n    cache()\n}\n\n# libraries for all OSes\nLIBS += -lpthread\n\n# additional flags for clang compiler (default on Mac)\nCOMPILERNAME = $$QMAKE_CXX\nCOMPILERNAME ~= s|.*/|\nequals(COMPILERNAME, clang++) {\n    QMAKE_CXXFLAGS += -Wempty-init-stmt\n    QMAKE_CXXFLAGS += -Wignored-qualifiers\n    QMAKE_CXXFLAGS += -Winitializer-overrides\n    QMAKE_CXXFLAGS += -Wmissing-field-initializers\n    QMAKE_CXXFLAGS += -Wmissing-method-return-type\n    QMAKE_CXXFLAGS += -Wnull-pointer-arithmetic\n    QMAKE_CXXFLAGS += -Wsemicolon-before-method-body\n    QMAKE_CXXFLAGS += -Wno-format-nonliteral\n    QMAKE_CXXFLAGS += -Wno-inconsistent-missing-override\n    QMAKE_CXXFLAGS += -Wno-overloaded-virtual\n    QMAKE_CXXFLAGS += -Wno-unknown-warning-option\n}\n\n# set up configuration flags used internally by the Stanford C++ libraries\n# These flags are all optional but can simplify project configuration.\n# (setting x/y to 999999 centers the window)\n# (see platform.cpp/h for descriptions of some of these flags)\n\n# wrapper name for 'main' function (needed so student can write 'int main'\n# but our library can grab the actual main function to initialize itself)\nDEFINES += SPL_REPLACE_MAIN_FUNCTION=1\nDEFINES += main=qMain\n\n# x/y location and w/h of the graphical console window; set to -1 to center\nDEFINES += SPL_CONSOLE_X=-1\nDEFINES += SPL_CONSOLE_Y=-1\nDEFINES += SPL_CONSOLE_WIDTH=900\nDEFINES += SPL_CONSOLE_HEIGHT=550\n\n# font size of the font in the graphical console window; can also be set via window menu\n#DEFINES += SPL_CONSOLE_FONTSIZE=18\n\n# echo graphical console onto the plain text console as well?\nDEFINES += SPL_CONSOLE_ECHO\n\n# quit the C++ program when the graphical console is closed?\nDEFINES += SPL_CONSOLE_EXIT_ON_CLOSE\n\n# crash if the .pro is older than the minimum specified in version.h? (SPL_PROJECT_VERSION)\nDEFINES += SPL_VERIFY_PROJECT_VERSION\n\n# allow clients to access the internal data inside the heap of PriorityQueue?\n# (used for some practice exam exercises/demos)\nDEFINES += SPL_PQUEUE_ALLOW_HEAP_ACCESS\n\n# should toString / << of a PriorityQueue display the elements in sorted order,\n# or in heap internal order? the former is more expected by client; the latter\n# is faster and avoids a deep-copy\nDEFINES += SPL_PQUEUE_PRINT_IN_HEAP_ORDER\n\n# flag to throw exceptions when a collection iterator is used after it has\n# been invalidated (e.g. if you remove from a Map while iterating over it)\nDEFINES += SPL_THROW_ON_INVALID_ITERATOR\n\n# flag to add members like 'cost', 'visited', etc. to BasicGraph Vertex/Edge\n# (we are going to disable these to force more interesting implementations)\n# DEFINES += SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n\n# should we throw an error() when operator >> fails on a collection?\n# for years this was true, but the C++ standard says you should just silently\n# set the fail bit on the stream and exit, so that has been made the default.\n# DEFINES += SPL_ERROR_ON_STREAM_EXTRACT\n\n# scale up the console window on high-DPI screens?\n# DEFINES += SPL_SCALE_HIGH_DPI_SCREEN\n\n# is the .cpp portion of the library merged into a single .cpp file\n# to speed up compilation?\nDEFINES += SPL_MERGED_LIBRARY_SINGLE_FILE\n\n# should we attempt to precompile the Qt moc_*.cpp files for speed?\nDEFINES += SPL_PRECOMPILE_QT_MOC_FILES\n\n# build-specific options (debug vs release)\n\n# options for the 'debug' target (default):\n# use no optimization, generate debugger symbols,\n# and catch/print to console any uncaught exceptions thrown by the program\nCONFIG(debug, debug|release) {\n    QMAKE_CXXFLAGS += -g3\n    QMAKE_CXXFLAGS += -fno-inline\n    QMAKE_CXXFLAGS += -fno-omit-frame-pointer\n\n    unix:!macx {\n        equals(COMPILERNAME, g++) {\n            # on Linux g++, these flags help us gather line numbers for stack traces\n            QMAKE_CXXFLAGS += -rdynamic\n            QMAKE_CXXFLAGS += -export-dynamic\n            QMAKE_CXXFLAGS += -Wl,--export-dynamic\n            QMAKE_LFLAGS += -export-dynamic\n            QMAKE_LFLAGS += -rdynamic\n        }\n    }\n    unix:macx {\n        equals(COMPILERNAME, clang++) {\n            QMAKE_CXXFLAGS += -Wno-unused-command-line-argument\n            QMAKE_CXXFLAGS += -Wl,-export_dynamic\n            QMAKE_CXXFLAGS += -Wl,-export-dynamic\n            QMAKE_CXXFLAGS += -Wl,--export-dynamic\n            QMAKE_LFLAGS += -rdynamic\n            QMAKE_LFLAGS += -Wl,-no_pie\n        }\n    }\n\n    # print details about uncaught exceptions with red error text / stack trace\n    DEFINES += SPL_CONSOLE_PRINT_EXCEPTIONS\n}\n\n# options for the 'release' target:\n# enable some compiler optimizations, and\n# make it statically linked so it is a stand-alone executable\nCONFIG(release, debug|release) {\n    QMAKE_CXXFLAGS += -O2\n    # commenting out -static because it doesn't link to Qt libraries properly\n    #QMAKE_LFLAGS += -static\n\n    macx {\n        QMAKE_POST_LINK += 'macdeployqt $${OUT_PWD}/$${TARGET}.app'\n    }\n    unix:!macx {\n        QMAKE_LFLAGS += -static-libgcc\n        QMAKE_LFLAGS += -static-libstdc++\n    }\n    win32 {\n        TARGET_PATH = $${OUT_PWD}/release/$${TARGET}.exe\n        TARGET_PATH ~= s,/,\\\\,g\n\n        OUT_PATH = $${OUT_PWD}/\n        OUT_PATH ~= s,/,\\\\,g\n\n        QMAKE_LFLAGS += -static-libgcc\n        QMAKE_LFLAGS += -static-libstdc++\n        QMAKE_POST_LINK += copy '\"'$${TARGET_PATH}'\"' '\"'$${OUT_PATH}'\"'\n    }\n}\n\n###############################################################################\n# END SECTION FOR SPECIFYING COMPILER/LINKER FLAGS AND LIBRARIES              #\n###############################################################################\n\n\n###############################################################################\n# BEGIN SECTION FOR CS 106B/X AUTOGRADER PROGRAMS                             #\n###############################################################################\n\n# settings specific to CS 106 B/X auto-grading programs; do not modify\nexists($$PWD/lib/autograder/*.h) | exists($$PWD/lib/StanfordCPPLib/autograder/*.h) | exists($$PWD/src/autograder/$$PROJECT_FILTER/*.cpp) {\n    # include the various autograder source code and libraries in the build process\n    exists($$PWD/lib/autograder/*.cpp) {\n        SOURCES *= $$files($$PWD/lib/autograder/*.cpp, true)\n    }\n    exists($$PWD/lib/autograder/*.h) {\n        HEADERS *= $$files($$PWD/lib/autograder/*.h, true)\n    }\n    exists($$PWD/lib/autograder/*) {\n        INCLUDEPATH *= $$PWD/lib/autograder/\n    }\n    exists($$PWD/lib/StanfordCPPLib/autograder/*) {\n        INCLUDEPATH *= $$PWD/lib/StanfordCPPLib/autograder/\n    }\n    exists($$PWD/src/autograder/*.h) {\n        INCLUDEPATH *= $$PWD/src/autograder/\n    }\n    exists($$PWD/src/autograder/$$PROJECT_FILTER/*.h) {\n        INCLUDEPATH *= $$PWD/src/autograder/$$PROJECT_FILTER/\n    }\n\n    DEFINES += SPL_AUTOGRADER_MODE\n\n    # define the style of autograder you want to use (GUI vs console)\n    DEFINES += SPL_GRAPHICAL_AUTOGRADER\n    # DEFINES += SPL_CONSOLE_AUTOGRADER\n\n    # a check to ensure that required autograder resources are present in this project\n    !exists($$PWD/lib/iconstrip-autograder.png) {\n        message(\"\")\n        message(*******************************************************************)\n        message(*** ERROR: Stanford library cannot find autograder image strip file:)\n        message(*** lib/iconstrip-autograder.png)\n        message(*** This project cannot run without this file present.)\n        message(*** Place the file into your lib/ folder and try again.)\n        message(*******************************************************************)\n        message(\"\")\n        error(Exiting.)\n    }\n}\n###############################################################################\n# END SECTION FOR CS 106B/X AUTOGRADER PROGRAMS                               #\n###############################################################################\n\n\n###############################################################################\n# BEGIN SECTION FOR DEFINING HELPER FUNCTIONS FOR RESOURCE COPYING            #\n###############################################################################\n\nCOPY_RESOURCE_FILES_INPUT = \"\"\n\nwin32 {\n    # copy addr2line exe program(s) to capture stack traces on Windows\n    exists($$PWD/lib/*.exe) {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/lib/*.exe)\n    }\n    # optional .dll files for network features on Windows\n    exists($$PWD/lib/*.dll) {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/lib/*.dll)\n    }\n}\n# copy icons and image strips for library GUI/console windows\nexists($$PWD/lib/*.png) {\n    COPY_RESOURCE_FILES_INPUT += $$files($$PWD/lib/*.png)\n}\nexists($$PWD/*.txt) {\n    COPY_RESOURCE_FILES_INPUT += $$files($$PWD/*.txt)\n}\nexists($$PWD/res/*) {\n    win32 {\n        exists($$PWD/res/*/*) {\n            # this will preserve the nested res/ directory structure on Windows,\n            # at the unfortunate cost of copying res/ to build dir on every run;\n            # recommended: avoid res subfolders to avoid this penalty on Windows\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/res)\n        } else {\n            # res/ with no subdirectories will properly be copied only on modification\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/res/*.*)\n        }\n    } else {\n        # Mac/Linux have proper recursive file-copying semantics in all cases\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/res/*, true)\n    }\n}\n# input/ and output/ have same nested subfolder issue as res/\nexists($$PWD/input/*) {\n    win32 {\n        exists($$PWD/input/*/*) {\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/input)\n        } else {\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/input/*.*)\n        }\n    } else {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/input, true)\n    }\n}\nexists($$PWD/output/*) {\n    win32 {\n        exists($$PWD/output/*/*) {\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/output)\n        } else {\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/output/*.*)\n        }\n    } else {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/output, true)\n    }\n}\nexists($$PWD/lib/autograder/*.h) | exists($$PWD/lib/StanfordCPPLib/autograder/*.h) | exists($$PWD/src/autograder/$$PROJECT_FILTER/*.cpp) {\n    # in autograder projects, copy over student's .cpp and .h files for possible style checking\n    exists($$PWD/*.cpp) {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/*.cpp)\n    }\n    exists($$PWD/*.h) {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/*.h)\n    }\n}\n\n# platform-specific commands to copy files and folders to build directory\ncopy_resource_files.name = Copy resource files to the build directory\nwin32 {\n    # https://support.microsoft.com/en-us/help/289483/switches-that-you-can-use-with-xcopy-and-xcopy32-commands\n    # /s - copy subfolders\n    # /q - quiet (no verbose output)\n    # /y - overwrite without prompting\n    # /i - if destination does not exist and copying more than one file, assumes destination is a folder\n    copy_resource_files.commands = xcopy /s /q /y ${QMAKE_FILE_IN}\n} else {\n    copy_resource_files.commands = cp -rf ${QMAKE_FILE_IN} .\n}\n# copy_resource_files.commands = ${COPY_FILE} ${QMAKE_FILE_IN} ${QMAKE_FILE_OUT}\ncopy_resource_files.input = COPY_RESOURCE_FILES_INPUT\ncopy_resource_files.output = $${OUT_PWD}/${QMAKE_FILE_BASE}${QMAKE_FILE_EXT}\ncopy_resource_files.CONFIG = no_link no_clean target_predeps\nQMAKE_EXTRA_COMPILERS += copy_resource_files\n\n###############################################################################\n# END SECTION FOR DEFINING HELPER FUNCTIONS FOR RESOURCE COPYING              #\n###############################################################################\n\n# END OF FILE (this should be line #560; if not, your .pro has been changed!)\n"
  },
  {
    "path": "Archived/StanfordCPPLib_QtCreatorProject/input/input-1.txt",
    "content": ""
  },
  {
    "path": "Archived/StanfordCPPLib_QtCreatorProject/input/input-2.txt",
    "content": ""
  },
  {
    "path": "Archived/StanfordCPPLib_QtCreatorProject/input/input-subdir/input-subdir-1.txt",
    "content": ""
  },
  {
    "path": "Archived/StanfordCPPLib_QtCreatorProject/lib/readme.txt",
    "content": "This directory contains any libraries that should be\r\nlinked to your project when it is built.\r\nThe most common library we will link to is the\r\nStanford C++ library (cpplib).\r\n"
  },
  {
    "path": "Archived/StanfordCPPLib_QtCreatorProject/output/expected-output-1.txt",
    "content": "Hello, cout 1!\nHello, cerr 1!\nHello, cout 2!\nHello, cerr 2!\n\nThis is stderr!\nSo is this.\nCOUT IN THIS PART ... BUT IT ALTERNATES TO CERR! \nCOUT CERR COUT CERR COUT CERR COUT CERR COUT CERR \n    0    1    2    3    4    5    6    7    8    9   10\n   11   12   13   14   15   16   17   18   19   20\n   21   22   23   24   25   26   27   28   29   30\n   31   32   33   34   35   36   37   38   39   40\n   41   42   43   44   45   46   47   48   49   50\n   51   52   53   54   55   56   57   58   59   60\n   61   62   63   64   65   66   67   68   69   70\n   71   72   73   74   75   76   77   78   79   80\n   81   82   83   84   85   86   87   88   89   90\n   91   92   93   94   95   96   97   98   99  100\n  101  102  103  104  105  106  107  108  109  110\n  111  112  113  114  115  116  117  118  119  120\n  121  122  123  124  125  126  127  128  129  130\n  131  132  133  134  135  136  137  138  139  140\n  141  142  143  144  145  146  147  148  149  150\n  151  152  153  154  155  156  157  158  159  160\n  161  162  163  164  165  166  167  168  169  170\n  171  172  173  174  175  176  177  178  179  180\n  181  182  183  184  185  186  187  188  189  190\n  191  192  193  194  195  196  197  198  199  200\n  201  202  203  204  205  206  207  208  209  210\n  211  212  213  214  215  216  217  218  219  220\n  221  222  223  224  225  226  227  228  229  230\n  231  232  233  234  235  236  237  238  239  240\n  241  242  243  244  245  246  247  248  249  250\n  251  252  253  254  255  256  257  258  259  260\n  261  262  263  264  265  266  267  268  269  270\n  271  272  273  274  275  276  277  278  279  280\n  281  282  283  284  285  286  287  288  289  290\n  291  292  293  294  295  296  297  298  299  300\n  301  302  303  304  305  306  307  308  309  310\n  311  312  313  314  315  316  317  318  319  320\n  321  322  323  324  325  326  327  328  329  330\n  331  332  333  334  335  336  337  338  339  340\n  341  342  343  344  345  346  347  348  349  350\n  351  352  353  354  355  356  357  358  359  360\n  361  362  363  364  365  366  367  368  369  370\n  371  372  373  374  375  376  377  378  379  380\n  381  382  383  384  385  386  387  388  389  390\n  391  392  393  394  395  396  397  398  399  400\n  401  402  403  404  405  406  407  408  409  410\n  411  412  413  414  415  416  417  418  419  420\n  421  422  423  424  425  426  427  428  429  430\n  431  432  433  434  435  436  437  438  439  440\n  441  442  443  444  445  446  447  448  449  450\n  451  452  453  454  455  456  457  458  459  460\n  461  462  463  464  465  466  467  468  469  470\n  471  472  473  474  475  476  477  478  479  480\n  481  482  483  484  485  486  487  488  489  490\n  491  492  493  494  495  496  497  498  499  500\n  501  502  503  504  505  506  507  508  509  510\n  511  512  513  514  515  516  517  518  519  520\n  521  522  523  524  525  526  527  528  529  530\n  531  532  533  534  535  536  537  538  539  540\n  541  542  543  544  545  546  547  548  549  550\n  551  552  553  554  555  556  557  558  559  560\n  561  562  563  564  565  566  567  568  569  570\n  571  572  573  574  575  576  577  578  579  580\n  581  582  583  584  585  586  587  588  589  590\n  591  592  593  594  595  596  597  598  599  600\n  601  602  603  604  605  606  607  608  609  610\n  611  612  613  614  615  616  617  618  619  620\n  621  622  623  624  625  626  627  628  629  630\n  631  632  633  634  635  636  637  638  639  640\n  641  642  643  644  645  646  647  648  649  650\n  651  652  653  654  655  656  657  658  659  660\n  661  662  663  664  665  666  667  668  669  670\n  671  672  673  674  675  676  677  678  679  680\n  681  682  683  684  685  686  687  688  689  690\n  691  692  693  694  695  696  697  698  699  700\n  701  702  703  704  705  706  707  708  709  710\n  711  712  713  714  715  716  717  718  719  720\n  721  722  723  724  725  726  727  728  729  730\n  731  732  733  734  735  736  737  738  739  740\n  741  742  743  744  745  746  747  748  749  750\n  751  752  753  754  755  756  757  758  759  760\n  761  762  763  764  765  766  767  768  769  770\n  771  772  773  774  775  776  777  778  779  780\n  781  782  783  784  785  786  787  788  789  790\n  791  792  793  794  795  796  797  798  799  800\n  801  802  803  804  805  806  807  808  809  810\n  811  812  813  814  815  816  817  818  819  820\n  821  822  823  824  825  826  827  828  829  830\n  831  832  833  834  835  836  837  838  839  840\n  841  842  843  844  845  846  847  848  849  850\n  851  852  853  854  855  856  857  858  859  860\n  861  862  863  864  865  866  867  868  869  870\n  871  872  873  874  875  876  877  878  879  880\n  881  882  883  884  885  886  887  888  889  890\n  891  892  893  894  895  896  897  898  899  900\n  901  902  903  904  905  906  907  908  909  910\n  911  912  913  914  915  916  917  918  919  920\n  921  922  923  924  925  926  927  928  929  930\n  931  932  933  934  935  936  937  938  939  940\n  941  942  943  944  945  946  947  948  949  950\n  951  952  953  954  955  956  957  958  959  960\n  961  962  963  964  965  966  967  968  969  970\n  971  972  973  974  975  976  977  978  979  980\n  981  982  983  984  985  986  987  988  989  990\n  991  992  993  994  995  996  997  998  999 1000\nTook 1ms\nType: abc\nYou typed: \"abc\"\nType an integer: hi\nIllegal integer format. Try again.\nType an integer: 123\nYou typed: 123\nType a real number: oops\nIllegal numeric format. Try again.\nType a real number: 3.25\nYou typed: 3.25\nPartial line; what about me? :-("
  },
  {
    "path": "Archived/StanfordCPPLib_QtCreatorProject/output/expected-output-2.txt",
    "content": "Hello, cout 1!\nHello, cerr 1!\nHello, cout 2!\nHello, cerr 2!\n\nThis is stderr!\nSo is this.\nCOUT IN THIS PART ... BUT IT ALTERNATES TO CERR! \nCOUT CERR COUT CERR COUT CERR COUT CERR COUT CERR \n    0    1    2    3    4    5    6    7    8    9   10\n   11   12   13   14   15   16   17   18   19   20\n   21   22   23   24   25   26   27   28   29   30\n   31   32   33   34   35   36   37   38   39   40\n   41   42   43   44   45   46   47   48   49   50\n   51   52   53   54   55   56   57   58   59   60\n   61   62   63   64   65   66   67   68   69   70\n   71   72   73   74   75   76   77   78   79   80\n   81   82   83   84   85   86   87   88   89   90\n   91   92   93   94   95   96   97   98   99  100\n  101  102  103  104  105  106  107  108  109  110\n  111  112  113  114  115  116  117  118  119  120\n  121  122  123  124  125  126  127  128  129  130\n  131  132  133  134  135  136  137  138  139  140\n  141  142  143  144  145  146  147  148  149  150\n  151  152  153  154  155  156  157  158  159  160\n  161  162  163  164  165  166  167  168  169  170\n  171  172  173  174  175  176  177  178  179  180\n  181  182  183  184  185  186  187  188  189  190\n  191  192  193  194  195  196  197  198  199  200\n  201  202  203  204  205  206  207  208  209  210\n  211  212  213  214  215  216  217  218  219  220\n  221  222  223  224  225  226  227  228  229  230\n  231  232  233  234  235  236  237  238  239  240\n  241  242  243  244  245  246  247  248  249  250\n  251  252  253  254  255  256  257  258  259  260\n  261  262  263  264  265  266  267  268  269  270\n  271  272  273  274  275  276  277  278  279  280\n  281  282  283  284  285  286  287  288  289  290\n  291  292  293  294  295  296  297  298  299  300\n  301  302  303  304  305  306  307  308  309  310\n  311  312  313  314  315  316  317  318  319  320\n  321  322  323  324  325  326  327  328  329  330\n  331  332  333  334  335  336  337  338  339  340\n  341  342  343  344  345  346  347  348  349  350\n  351  352  353  354  355  356  357  358  359  360\n  361  362  363  364  365  366  367  368  369  370\n  371  372  373  374  375  376  377  378  379  380\n  381  382  383  384  385  386  387  388  389  390\n  391  392  393  394  395  396  397  398  399  400\n  401  402  403  404  405  406  407  408  409  410\n  411  412  413  414  415  416  417  418  419  420\n  421  422  423  424  425  426  427  428  429  430\n  431  432  433  434  435  436  437  438  439  440\n  441  442  443  444  445  446  447  448  449  450\n  451  452  453  454  455  456  457  458  459  460\n  461  462  463  464  465  466  467  468  469  470\n  471  472  473  474  475  476  477  478  479  480\n  481  482  483  484  485  486  487  488  489  490\n  491  492  493  494  495  496  497  498  499  500\n  501  502  503  504  505  506  507  508  509  510\n  511  512  513  514  515  516  517  518  519  520\n  521  522  523  524  525  526  527  528  529  530\n  531  532  533  534  535  536  537  538  539  540\n  541  542  543  544  545  546  547  548  549  550\n  551  552  553  554  555  556  557  558  559  560\n  561  562  563  564  565  566  567  568  569  570\n  571  572  573  574  575  576  577  578  579  580\n  581  582  583  584  585  586  587  588  589  590\n  591  592  593  594  595  596  597  598  599  600\n  601  602  603  604  605  606  607  608  609  610\n  611  612  613  614  615  616  617  618  619  620\n  621  622  623  624  625  626  627  628  629  630\n  631  632  633  634  635  636  637  638  639  640\n  641  642  643  644  645  646  647  648  649  650\n  651  652  653  654  655  656  657  658  659  660\n  661  662  663  664  665  666  667  668  669  670\n  671  672  673  674  675  676  677  678  679  680\n  681  682  683  684  685  686  687  688  689  690\n  691  692  693  694  695  696  697  698  699  700\n  701  702  703  704  705  706  707  708  709  710\n  711  712  713  714  715  716  717  718  719  720\n  721  722  723  724  725  726  727  728  729  730\n  731  732  733  734  735  736  737  738  739  740\n  741  742  743  744  745  746  747  748  749  750\n  751  752  753  754  755  756  757  758  759  760\n  761  762  763  764  765  766  767  768  769  770\n  771  772  773  774  775  776  777  778  779  780\n  781  782  783  784  785  786  787  788  789  790\n  791  792  793  794  795  796  797  798  799  800\n  801  802  803  804  805  806  807  808  809  810\n  811  812  813  814  815  816  817  818  819  820\n  821  822  823  824  825  826  827  828  829  830\n  831  832  833  834  835  836  837  838  839  840\n  841  842  843  844  845  846  847  848  849  850\n  851  852  853  854  855  856  857  858  859  860\n  861  862  863  864  865  866  867  868  869  870\n  871  872  873  874  875  876  877  878  879  880\n  881  882  883  884  885  886  887  888  889  890\n  891  892  893  894  895  896  897  898  899  900\n  901  902  903  904  905  906  907  908  909  910\n  911  912  913  914  915  916  917  918  919  920\n  921  922  923  924  925  926  927  928  929  930\n  931  932  933  934  935  936  937  938  939  940\n  941  942  943  944  945  946  947  948  949  950\n  951  952  953  954  955  956  957  958  959  960\n  961  962  963  964  965  966  967  968  969  970\n  971  972  973  974  975  976  977  978  979  980\n  981  982  983  984  985  986  987  988  989  990\n  991  992  993  994  995  996  997  998  999 1000\nTook 1ms\nType: abc\nYou typed: \"abc\"\nType an integer: hi\nIllegal integer format. Try again.\nType an integer: 123\nYou typed: 123\nType a real number: oops\nIllegal numeric format. Try again.\nType a real number: 3.25\nYou typed: 3.25\nPartial line; what about me? :-("
  },
  {
    "path": "Archived/StanfordCPPLib_QtCreatorProject/res/.empty.txt",
    "content": ""
  },
  {
    "path": "Archived/StanfordCPPLib_QtCreatorProject/res/res file with spaces.txt",
    "content": "Hello!!!!\n\nThis is resfile1.txt\n\nHow are you?\nTesting 1, 2, 3.\n\nHooray!\n\nGoodbye.\n"
  },
  {
    "path": "Archived/StanfordCPPLib_QtCreatorProject/res/resfile1.txt",
    "content": "Hello!!!!\n\nThis is resfile1.txt\n\nHow are you?\nTesting 1, 2, 3.\n\nHooray!\n\nGoodbye.\n"
  },
  {
    "path": "Archived/StanfordCPPLib_QtCreatorProject/res/resfile2.doc",
    "content": ""
  },
  {
    "path": "Archived/StanfordCPPLib_QtCreatorProject/res/resfile3.html",
    "content": "<html>\n\t<head>\n\t\t<title>My Web Page Title</title>\n\t</head>\n\n\t<body>\n\t\t<h1>This is an H1!</h1>\n\n\t\t<p>Welcome to my page. Some links:</p>\n\n\t\t<ul>\n\t\t\t<li><a href=\"http://www.google.com/\">Google</a></li>\n\t\t\t<li><a href=\"http://en.wikipedia.org/\">Wikipedia</a></li>\n\t\t</ul>\n\n\t\t<p>Here is another paragraph. It is long! Lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum.\n\t\tLorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum.</p>\n\t\t\n\t\t<p>\n\t\t\tHere is an image:\n\t\t\t<img src=\"paintbrush-icon.png\" alt=\"an image!\" />\n\t\t</p>\n\n\t\t<ol>\n\t\t\t<li>number 1\n\t\t\t<li>number two\n\t\t\t<li>3rd\n\t\t</ol>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/StanfordCPPLib_QtCreatorProject/src/mainfunc.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib functionality.\n */\n\n#include \"basicgraph.h\"\n#include \"console.h\"\n#include \"filelib.h\"\n#include \"map.h\"\n#include \"queue.h\"\n#include \"stack.h\"\n#include \"vector.h\"\n#include \"strlib.h\"\nusing namespace std;\n\nint multimain(collections) {\n    // empty?\n    Stack<int> s;\n    s.push(46);\n    Queue<int> q;\n    q.enqueue(43);\n    Map<int, int> m;\n    m.put(42, 43);\n\n    Vector<int> v2;\n    v2.add(42);\n    // std::vector<int> v;\n\n    BasicGraph g;\n\n    cout << \"v is \" << to_string(v2) << endl;\n\n    Vector<string> files = listDirectory(\".\");\n    for (string file : files) {\n        cout << \"a file: \" << file << endl;\n    }\n\n    g.addVertex(\"a\");\n    g.addVertex(\"b\");\n    g.addEdge(\"a\", \"b\");\n\n    cout << \"g is \" << g << endl;\n\n    return 0;\n}\n\n// this is only here so the project will compile\nint main() {\n    return 0;\n}\n"
  },
  {
    "path": "Archived/StanfordCPPLib_QtCreatorProject/src/multimain/mainfunc-biginteger.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib functionality.\n */\n\n#include <iostream>\n#include <iomanip>\n#include \"bigfloat.h\"\n#include \"biginteger.h\"\n#include \"console.h\"\n#include \"error.h\"\nusing namespace std;\n\nvoid testBigInteger();\n\nint multimain(biginteger) {\n    cout << \"Stanford C++ lib tester\" << endl;\n    testBigInteger();\n    return 0;\n}\n\nbigint fact(int n) {\n    bigint result(\"1\");\n    for (int i = 2; i <= n; i++) {\n        result *= BigInteger(std::to_string(i));\n    }\n    return result;\n}\n\nvoid testBigInteger() {\n    {\n        BigInteger bi(\"-24\");\n        cout << \"abs = \" << bi.abs() << endl;\n        cout << \"pos: \" << boolalpha << bi.isPositive() << \", neg: \" << bi.isNegative() << \", nonneg: \" << bi.isNonNegative() << endl;\n        bi = bi.abs();\n        cout << \"pos: \" << boolalpha << bi.isPositive() << \", neg: \" << bi.isNegative() << \", nonneg: \" << bi.isNonNegative() << endl;\n        cout << \"pos: \" << boolalpha << BigInteger::ZERO.isPositive() << \", neg: \" << BigInteger::ZERO.isNegative() << \", nonneg: \" << BigInteger::ZERO.isNonNegative() << endl;\n\n        BigInteger bi2(\"16\");\n        cout << \"gcd = \" << bi.gcd(bi2) << endl << endl;\n\n        do {\n            cout << \"int bi2 = \" << bi2 << \", hex = \" << bi2.toString(16) << \", oct = \" << bi2.toString(8) << \", bin = \" << bi2.toString(2) << endl;\n            bi2 *= BigInteger::TWO;\n        } while (bi2.isInt());\n\n        do {\n            cout << \"long bi2 = \" << bi2 << endl;\n            bi2 *= BigInteger::TEN;\n        } while (bi2.isLong());\n\n        cout << \"max = \" << bi.max(bi2) << \", min = \" << bi.min(bi2) << endl;\n\n        cout << \"modPow = \" << BigInteger::TWO.modPow(10, 100) << endl;\n\n        cout << \"pow = \" << endl;\n        for (int i = 0; i < 20; i++) {\n            cout << \"2 ^ \" << i << \" = \" << BigInteger::TWO.pow(i) << endl;\n        }\n\n        // radix stuff\n        BigInteger biHex(\"0xff00\", 16);\n        cout << \"bihex = \" << biHex << \", hex = \" << biHex.toString(16) << endl;\n        BigInteger biBin(\"0b101010\", 2);\n        cout << \"bibin = \" << biBin << \", bin = \" << biBin.toString(2) << endl;\n\n        BigInteger biUnary(\"1111111\", 1);\n        cout << \"biunary = \" << biUnary << \", unary \" << biUnary.toString(1) << endl;\n\n        for (BigInteger bi = 1; bi <= 100; bi++) {\n            cout << \"int bi = \" << bi << \", hex = \" << bi.toString(16) << \", oct = \" << bi.toString(8) << \", bin = \" << bi.toString(2) << endl;\n        }\n\n        // various int/long/double x BigInteger binary operations\n        cout << \"bitwise stuff:\" << endl;\n        BigInteger binary1(\"10100011\", 2);\n        BigInteger binary2(\"01110110\", 2);\n        cout << \"a     = \" << binary1.toString(2) << endl;\n        cout << \"b     = \" << setw(8) << binary2.toString(2) << endl;\n        cout << \"a & b = \" << setw(8) << (binary1 & binary2).toString(2) << endl;\n        cout << \"a | b = \" << setw(8) << (binary1 | binary2).toString(2) << endl;\n        cout << \"a ^ b = \" << setw(8) << (binary1 ^ binary2).toString(2) << endl;\n        cout << \"~a    = \" << setw(8) << (~binary1).toString(2) << endl;\n        cout << \"!a    = \" << setw(8) << (!binary1).toString(2) << endl;\n        cout << endl;\n\n        cout << \"int +: \" << (42 + bi) << endl;\n        cout << \"int -: \" << (42 - bi) << endl;\n        cout << \"int *: \" << (42 * bi) << endl;\n        cout << \"int /: \" << (42 / bi) << endl;\n        cout << \"int %: \" << (42 % bi) << endl;\n\n        cout << \"long +: \" << ((long)42 + bi) << endl;\n        cout << \"long -: \" << ((long)42 - bi) << endl;\n        cout << \"long *: \" << ((long)42 * bi) << endl;\n        cout << \"long /: \" << ((long)42 / bi) << endl;\n        cout << \"long %: \" << ((long)42 % bi) << endl;\n\n//        cout << \"double +: \" << (42.5 + bi) << endl;\n//        cout << \"double -: \" << (42.5 - bi) << endl;\n//        cout << \"double *: \" << (42.5 * bi) << endl;\n//        cout << \"double /: \" << (42.5 / bi) << endl;\n//        cout << \"double %: \" << (42.5 % bi) << endl;\n    }\n\n    try {\n        BigInteger bad(\"-845lol098\");\n        cout << bad << endl;\n    } catch (ErrorException& ex) {\n        cout << \"correctly threw exception when creating bad integer: \" << ex.getMessage() << endl;\n    }\n\n    // big division\n    BigInteger realbig(1000);\n    realbig *= realbig;\n    realbig *= realbig;\n    realbig *= realbig;\n    realbig *= realbig;\n    BigInteger almostAsBig(realbig);\n    realbig *= realbig;\n    cout << \"realbig: \" << realbig << endl;\n    cout << \"almost : \" << almostAsBig << endl;\n\n    try {\n        BigInteger quotient = realbig / almostAsBig;\n        cout << \"quotient: \" << quotient << endl;\n    } catch (ErrorException& ex) {\n        cout << \"correctly threw exception when dividing by large integer\" << endl;\n    }\n\n\n    cout << \"Fib:\" << endl;\n    BigInteger a(1);\n    BigInteger b(1);\n    for (int i = 0; i < 100; i++) {\n        BigInteger c = a + b;\n        cout << \"#\" << i << \": \" << c << endl;\n        a = b;\n        b = c;\n    }\n\n    cout << \"Fact:\" << endl;\n    bigint f;\n    for (int i = 0; i < 50; i++) {\n        f = fact(i);\n        cout << \"fact(\" << i << \") = \" << f << endl;\n    }\n\n    for (int i = 0; i < 19; i++) {\n        bigint g = fact(i);\n        bigint quotient = f / g;\n        bigint mod = f / g;\n\n        cout << \"i = \" << i << \", fact = \" << g << \", quot = \" << quotient << \", mod = \" << mod << endl;\n    }\n}\n"
  },
  {
    "path": "Archived/StanfordCPPLib_QtCreatorProject/src/multimain/mainfunc-functional.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib functionality.\n */\n\n#include <iostream>\n#include <string>\n#include \"functional.h\"\n#include \"vector.h\"\nusing namespace std;\n\nvoid testFunctional();\n\nint multimain(functional) {\n    testFunctional();\n    return 0;\n}\n\nbool is_even(int n) {\n    return n % 2 == 0;\n}\n\nint add(int a, int b) {\n    return a + b;\n}\n\nint squared(int n) {\n    return n * n;\n}\n\nint len(string s) {\n    return (int) s.length();\n}\n\nbool strLenLess(const string& s1, const string& s2) {\n    return s1.length() < s2.length() ||\n            (s1.length() == s2.length() && s1 < s2);\n}\n\nvoid testFunctional() {\n    // TODO: fix (broken by recent PR)\n\n    Vector<int> v {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};\n    Vector<int> v2 = functional::filter(v, is_even);\n    cout << \"v  : \" << v << endl;\n    cout << \"filter by is_even()\" << endl;\n    cout << \"v2 : \" << v2 << endl << endl;\n\n    Vector<int> v3 = functional::map(v, squared);\n    cout << \"map squared()\" << endl;\n    cout << \"v3 : \" << v3 << endl << endl;\n\n    Vector<string> names {\"Cynthia\", \"Marty\", \"Ed\", \"\", \"Bob\"};\n    Vector<int> lengths;\n    functional::map(names, len, lengths);\n    cout << \"names  : \" << names << endl;\n    cout << \"map len()\" << endl;\n    cout << \"lengths: \" << lengths << endl << endl;\n\n    int result = functional::reduce(v, add);\n    cout << \"reduce by add()\" << endl;\n    cout << \"sum: \" << result << endl;\n}\n"
  },
  {
    "path": "Archived/StanfordCPPLib_QtCreatorProject/src/multimain/mainfunc-iurlstream.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib functionality.\n */\n\n#include <iostream>\n#include <string>\n#include \"gdownloader.h\"\n#include \"urlstream.h\"\n\nvoid testAllUrls();\n\nint multimain(url) {\n    std::cout << \"Downloading ...\" << std::endl;\n    testAllUrls();\n    std::cout << \"Downloads complete.\" << std::endl;\n    return 0;\n}\n\nvoid testURL(const std::string& url) {\n//    GDownloader* downloader = new GDownloader();\n//    string text = downloader->downloadAsString(url);\n//    if (downloader->hasError()) {\n//        cout << \"error downloading \" << url << \":\" << endl << downloader->getErrorMessage() << endl;\n//    } else {\n//        cout << \"text of \" << url << \":\" << endl\n//             << text << endl\n//             << \"=======================================================\" << endl;\n//    }\n\n    iurlstream input;\n    input.setHeader(\"User-Agent\",\n            \"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2\");\n    input.open(url);\n    if (!input) {\n        std::cerr << \"An error occurred: \" << input.getErrorCode() << \" \" << input.getErrorMessage() << std::endl;\n    } else {\n        std::cout << input.str() << std::endl;\n    }\n}\n\nvoid testAllUrls() {\n    testURL(\"http://www.martystepp.com/\");\n    testURL(\"https://en.wikipedia.org/w/index.php?title=Quokka&action=edit\");\n    testURL(\"https://en.wikipedia.org/w/api.php?action=query&format=json&titles=Quokka&prop=extracts&explaintext&exlimit=1\");\n    testURL(\"https://en.wikipedia.org/w/api.php?action=query&format=json&titles=Quokka&redirects\");\n    testURL(\"http://www.bogusbogus.com/bogusbogus.html\");\n    testURL(\"http://www.google.com/bogusbogus.html\");\n}\n"
  },
  {
    "path": "Archived/StanfordCPPLib_QtCreatorProject/src/multimain/mainfunc-menu.cpp",
    "content": "///*\n// * Test file for verifying the Stanford C++ lib functionality.\n// */\n\n//#include <iostream>\n//#include \"console.h\"\n//#include \"simpio.h\"\n//using namespace std;\n\n//int mainMenu() {\n//    cout << \"Stanford C++ lib tester\" << endl;\n\n////    while (true) {\n////        cout << \"   DATA STRUCTURES::\" << endl;\n////        cout << \"c) collections\" << endl;\n////        cout << \"cs) collection stream extraction\" << endl;\n////        cout << \"ci) collection initializer lists\" << endl;\n////        cout << \"csh) collection shuffle\" << endl;\n\n////        cout << \"   STUFF RELATED TO INPUT/OUTPUT:\" << endl;\n////        cout << \"e) cout / cerr mix\" << endl;\n////        cout << \"i) cin / cout\" << endl;\n////        cout << \"an) animation\" << endl;\n////        cout << \"p) pipe\" << endl;\n////        cout << \"s) strings\" << endl;\n////        cout << \"u) urlstream\" << endl;\n        \n////        cout << \"   GRAPHICS:\" << endl;\n////        cout << \"fd) file dialog\" << endl;\n////        cout << \"bi) buffered image\" << endl;\n////        cout << \"op) optionpane\" << endl;\n////        cout << \"rb) radio buttons\" << endl;\n////        cout << \"ta) table\" << endl;\n\n////        cout << \"   HTTP SERVER:\" << endl;\n////        cout << \"ss) start server\" << endl;\n\n////        cout << \"   ERROR HANDLING AND STACK TRACES:\" << endl;\n////        cout << \"   (Try all 3 to make sure stack trace prints.)\" << endl;\n////        cout << \"   (Current configuration shows no trace on stack overflow.)\" << endl;\n////        cout << \"n) segfault (NULL ptr)\" << endl;\n////        cout << \"t) throw exception\" << endl;\n////        cout << \"o) stack overflow\" << endl;\n////        cout << \"ri) recursion indent\" << endl;\n////        cout << endl;\n////        string cmd = getLine(\"Command (Enter to quit)?\");\n////        if (cmd.empty()) {\n////            break;\n////        } else if (cmd == \"an\") {\n////            animationTest();\n////        } else if (cmd == \"c\") {\n////            randomElementTest();\n////            compareTest();\n////            foreachTest();\n////            hashCodeTest();\n////        } else if (cmd == \"cs\") {\n////            streamExtractTest();\n////        } else if (cmd == \"csh\") {\n////            shuffleTest();\n////        } else if (cmd == \"ci\") {\n////            initializerListTest();\n////        } else if (cmd == \"e\") {\n////            coutCerrMixTest();\n////        } else if (cmd == \"fd\") {\n////            fileDialogTest();\n////        } else if (cmd == \"bi\") {\n////            gbufferedImageTest();\n////        } else if (cmd == \"op\") {\n////            goptionpaneTest();\n////        } else if (cmd == \"rb\") {\n////            radioButtonTest();\n////        } else if (cmd == \"i\") {\n////            // cinOutTest();\n////            killProcessTest();\n////        } else if (cmd == \"n\") {\n////            segfaultTest();\n////        } else if (cmd == \"p\") {\n////            outputColorTest();\n////            cinOutTest();\n////            coutCerrMixTest();\n////            getIntegerTest();\n////            longStringTest();\n////            // killProcessTest();\n////        } else if (cmd == \"o\") {\n////            //getPlatform()->setStackSize(1024*1024*128);\n////            stackOverflowTest();\n////        } else if (cmd == \"ri\") {\n////            recursionIndentTest();\n////        } else if (cmd == \"s\") {\n////            stringToIntegerTest();\n////        } else if (cmd == \"ss\") {\n////            serverTest();\n////        } else if (cmd == \"t\") {\n////            exceptionTest();\n////        } else if (cmd == \"ta\") {\n////            gtableTest();\n////        } else if (cmd == \"u\") {\n////            urlstreamTest();\n////        }\n////    }\n    \n//    cout << \"Done.\" << endl;\n//    return 0;\n//}\n"
  },
  {
    "path": "Archived/StanfordCPPLib_QtCreatorProject/src/multimain/mainfunc-process.cpp",
    "content": "///*\n// * Test file for verifying the Stanford C++ lib functionality.\n// */\n\n//#include <iostream>\n//#include \"console.h\"\n//#include \"process.h\"\n//using namespace std;\n\n//void testProcess();\n\n//int mainProcess() {\n//    cout << \"Stanford C++ lib tester\" << endl;\n//    testProcess();\n//    return 0;\n//}\n\n//void testProcess() {\n//#ifdef PROCESS_H_ENABLED   // won't be enabled\n//    Process proc;\n//    proc.addCommandLineArgs({\n////        \"/bin/uname\",\n////        \"-a\"\n//        // \"/home/stepp/Dropbox/data/docs/stanford/StanfordCPPLib/test_programs/exitcode42\"\n//        // \"/home/stepp/Dropbox/data/docs/stanford/StanfordCPPLib/test_programs/delayed_output\"\n//        \"/home/stepp/Dropbox/data/docs/stanford/StanfordCPPLib/test_programs/infinite_loop\"\n//    });\n//    cout << \"my process is: \" << proc << endl << endl;\n//    cout << \"About to call startAndWait ...\" << endl;\n\n//    proc.setTimeout(1000);\n//    proc.startAndWait();\n\n//    cout << \"Done with startAndWait\" << endl << endl;\n//    cout << \"my process is: \" << proc << endl << endl;\n\n//    cout << \"About to call stop ...\" << endl;\n//    proc.stop();\n//    cout << \"Done with stop\" << endl << endl;\n\n//    cout << \"exit code:\" << proc.exitCode() << endl;\n\n//    cout << \"output (length \" << proc.output().length() << \"):\" << endl\n//         << proc.output() << endl << endl;\n//    cout << \"my process is: \" << proc << endl << endl;\n//#endif // PROCESS_H_ENABLED\n//}\n"
  },
  {
    "path": "Archived/StanfordCPPLib_QtCreatorProject/src/multimain/mainfunc-qt-2dgraphics.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib functionality.\n */\n\n#include <iostream>\n#include <fstream>\n#include \"gcolor.h\"\n#include \"gobjects.h\"\n#include \"ginteractors.h\"\n#include \"gtimer.h\"\n#include \"random.h\"\n#include \"timer.h\"\nusing namespace std;\n\nvoid testQwindowDrawing();\n\nint multimain(2dGraphics) {\n    testQwindowDrawing();\n    return 0;\n}\n\nvoid grayscale(GBufferedImage* image) {\n    // convert image to grayscale\n    image->setAutoRepaint(false);\n    Timer tim;\n    tim.start();\n    for (int x = 0; x < image->getWidth(); x++) {\n        for (int y = 0; y < image->getHeight(); y++) {\n            int rgb = image->getRGB(x, y);\n            int r = GBufferedImage::getRed(rgb);\n            int g = GBufferedImage::getGreen(rgb);\n            int b = GBufferedImage::getBlue(rgb);\n            int avg = (r + g + b) / 3;\n            rgb = GBufferedImage::createRgbPixel(avg, avg, avg);\n            image->setRGB(x, y, rgb);\n        }\n    }\n    image->repaint();\n    tim.stop();\n    cout << \"took \" << tim.elapsed() << \"ms\" << endl;\n}\n\nvoid testQwindowDrawing() {\n    static const bool TEST_BACKGROUND = true;\n    static const bool TEST_FOREGROUND = true;\n    static const bool TEST_LAYOUT_WIDGETS = true;\n\n    static GWindow* window = nullptr;\n    static GOval* ball = nullptr;\n    static GButton* button = nullptr;\n    static GButton* button2 = nullptr;\n    static GButton* button3 = nullptr;\n    static GButton* button4 = nullptr;\n    static GButton* button5 = nullptr;\n    static GButton* clearButton = nullptr;\n    static GButton* saveButton = nullptr;\n    static GButton* scaleButton = nullptr;\n    static GButton* rotateButton = nullptr;\n    static GButton* setSizeButton = nullptr;\n    static GLabel* label = nullptr;\n    static GLabel* label2 = nullptr;\n    static double dx = 5;\n    static double dy = 3;\n    static GImage* image = nullptr;\n    static GImage* image2 = nullptr;\n    static GImage* image3 = nullptr;\n\n    window = new GWindow(900, 500);\n    // window->setCanvasSize(900, 500);\n    window->setTitle(\"QtGui Drawing Window\");\n    // window->setResizable(false);\n    // window->setBackground(\"yellow\");\n    window->setExitOnClose(true);\n    window->center();\n\n    if (TEST_LAYOUT_WIDGETS) {\n        label = new GLabel(\"QtGui <b>AWESOME</b> <i>cool</i> window\");\n        label2 = new GLabel(\"????????????\");\n        window->addToRegion(label2, \"North\");\n        window->addToRegion(label, \"North\");\n\n        window->setRegionAlignment(\"North\", \"Left\");\n        window->setRegionAlignment(\"South\", \"Right\");\n\n        button = new GButton(\"Tick\");\n        button2 = new GButton(\"Pixels\");\n        button3 = new GButton(\"Repaint\");\n        button4 = new GButton(\"Clear PX\");\n        button5 = new GButton(\"BG\");\n        button5->setBackground(\"#77ff00ff\");\n        button5->setColor(\"#77000000\");\n        clearButton = new GButton(\"Clear\");\n        saveButton = new GButton(\"Save\");\n        scaleButton = new GButton(\"Scale\");\n        rotateButton = new GButton(\"Rotate\");\n        setSizeButton = new GButton(\"setSize\");\n\n        window->addToRegion(button, \"South\");\n        window->addToRegion(button2, \"South\");\n        window->addToRegion(button3, \"South\");\n        window->addToRegion(button4, \"South\");\n        window->addToRegion(button5, \"South\");\n        window->addToRegion(saveButton, \"South\");\n        window->addToRegion(clearButton, \"South\");\n        window->addToRegion(scaleButton, \"South\");\n        window->addToRegion(rotateButton, \"South\");\n        window->addToRegion(setSizeButton, \"South\");\n    }\n\n//        window->setBackground(\"yellow\");\n//        window->setColor(\"red\");\n//        window->setFillColor(\"red\");\n\n    // drawing directly onto window\n//    window->setColor(\"blue\");\n//    window->setFillColor(\"yellow\");\n//    window->fillOval(20, 120, 40, 60);\n//    window->setColor(\"red\");\n//    window->setFillColor(\"green\");\n//    window->setLineWidth(3);\n//    window->fillRect(10, 30, 120, 70);\n//    window->drawLine(100, 100, 200, 150);\n\n    // pixely stuff\n\n    // background layer\n    if (TEST_BACKGROUND) {\n        window->setColor(\"black\");\n        window->drawRect(400, 200, 50, 50);\n\n        window->setFillColor(\"red\");\n        window->setLineWidth(5);   // BUG: affects later shapes\n        window->setLineStyle(GObject::LINE_DASH);\n        window->drawRect(20, 220, 100, 100);\n        window->fillArc(20, 220, 100, 100, 45, 120);\n\n        window->setFillColor(\"purple\");\n        window->setFont(\"Monospaced-bold-16\");\n        window->fillPolygon({200, 200, 250, 300, 150, 300});\n    }\n\n    // foreground layer\n    static GImage* gimage = nullptr;\n    static GImage* gimage2 = nullptr;\n    if (TEST_FOREGROUND) {\n        ball = new GOval(20, 20, 50, 50);\n        ball->setFillColor(\"#aaff0033\");\n        ball->setLineWidth(2);\n        ball->scale(1.5);\n        ball->setLineStyle(GObject::LINE_DOT);\n        window->add(ball);\n\n        window->add(new GRect(400, 100, 50, 50));\n\n        window->setColor(\"green\");\n        GText* gtext = new GText(\"Hello, Qt!\", 200, 80);\n        gtext->setColor(\"green\");\n        gtext->rotate(10);\n        window->add(gtext);\n\n        GText* gtext2 = new GText(\"Bye, Felicia!\", 220, 100);\n        gtext2->setColor(\"red\");\n        gtext2->scale(1.5);\n        window->add(gtext2);\n\n        gimage = new GImage(\"triangle-icon.png\", 200, 40);\n        gimage->setOpacity(0.6);\n        window->add(gimage);\n\n        std::ifstream input(\"triangle-icon.png\", ios::binary);\n        if (!input) error(\"Oops - file is missing?\");\n        gimage2 = new GImage(input, 300, 40);\n        gimage2->setOpacity(0.6);\n        window->add(gimage2);\n\n        window->setColor(\"blue\");\n        GText* gtext3 = new GText(\"Third string\", 240, 120);\n        gtext3->setColor(\"blue\");\n        window->add(gtext3);\n\n        GCanvas* canvas = new GCanvas(200, 100);   // , 0x99ff2299);\n        canvas->setColor(\"red\");\n        canvas->setFillColor(\"green\");\n        canvas->fillRect(20, 20, 50, 30);\n        image = canvas->toGImage();\n        window->add(image, 300, 100);\n\n        GCanvas* canvas2 = new GCanvas(\"triangle-icon.png\");\n        image2 = canvas2->toGImage();\n        window->add(image2, 500, 100);\n\n        std::ifstream input2(\"triangle-icon.png\", ios::binary);\n        if (!input2) error(\"Oops: file is missing?\");\n\n        GCanvas* canvas3 = new GCanvas(input2);\n        image3 = canvas3->toGImage();\n        image3->setLocation(600, 100);\n        window->add(image3);\n    }\n\n    if (TEST_LAYOUT_WIDGETS) {\n        std::function<void()> tickFunc = []() {\n            window->pause(20);\n            ball->move(dx, dy);\n            double cw = window->getCanvasWidth();\n            double ch = window->getCanvasHeight();\n            if (ball->getX() < 0 || ball->getRightX() >= cw) {\n                dx = -dx;\n            }\n            if (ball->getY() < 0 || ball->getBottomY() >= ch) {\n                dy = -dy;\n            }\n            // cout << \"ball loc is now: \" << ball->getLocation() << endl;\n        };\n        button->setActionListener(tickFunc);\n\n        button2->setActionListener([]() {\n            for (int y = 3*window->getCanvasHeight()/4; y < window->getCanvasHeight(); y++) {\n                for (int x = 3*window->getCanvasWidth()/4; x < window->getCanvasWidth(); x++) {\n                    int r = (x * 2) % 256;\n                    int g = (y * 2) % 256;\n                    int b = ((x+y) * 2) % 256;\n                    window->setPixel(x, y, r, g, b);\n                }\n            }\n        });\n\n        button3->setActionListener([]() {\n            window->repaint();\n        });\n\n        button4->setActionListener([]() {\n            window->clearCanvasPixels();\n        });\n\n        button5->setActionListener([]() {\n            window->setBackground(\"yellow\");\n        });\n\n        clearButton->setActionListener([]() {\n            window->clear();\n        });\n\n        saveButton->setActionListener([]() {\n            string filename = GFileChooser::showSaveDialog();\n            window->saveCanvasPixels(filename);\n        });\n\n        scaleButton->setActionListener([]() {\n            gimage->scale(1.2);\n        });\n\n        rotateButton->setActionListener([]() {\n            gimage->rotate(1);\n        });\n\n        setSizeButton->setActionListener([]() {\n            gimage->setSize(gimage->getWidth() * 1.1, gimage->getHeight() * 1.1);\n        });\n    }\n\n    if (TEST_LAYOUT_WIDGETS && TEST_BACKGROUND) {\n        window->setMouseListener([](GEvent event) {\n            if (event.getType() == MOUSE_DRAGGED) {\n                window->setColor(\"blue\");\n                window->setFillColor(\"blue\");\n                window->setLineStyle(GObject::LINE_SOLID);\n                window->setLineWidth(1);\n                window->fillOval(event.getX() - 5, event.getY() - 5, 10, 10);\n            } else if (event.getType() == MOUSE_MOVED) {\n                std::string px = \"\";\n                if (window->inCanvasBounds(event.getX(), event.getY())) {\n                    px = window->getPixelString(event.getX(), event.getY());\n                }\n                label->setText(event.getLocation().toString() + \" \" + px);\n                cout << \"mouse moved: \" << event.getLocation().toString() << endl;\n            }\n        });\n    }\n\n    if (TEST_FOREGROUND) {\n        window->setKeyListener([](GEvent event) {\n            // cout << \"key! event=\" << event << endl;\n            double balldx = 0;\n            double balldy = 0;\n            if (event.getKeyCode() == GEvent::LEFT_ARROW_KEY) {\n                balldx = -2;\n            } else if (event.getKeyCode() == GEvent::RIGHT_ARROW_KEY) {\n                balldx = 2;\n            } else if (event.getKeyCode() == GEvent::UP_ARROW_KEY) {\n                balldy = -2;\n            } else if (event.getKeyCode() == GEvent::DOWN_ARROW_KEY) {\n                balldy = 2;\n            } else if (event.getKeyCode() == 'f') {\n                ball->sendToFront();\n            }\n            ball->move(balldx, balldy);\n        });\n    }\n\n//    window->setWindowHandler([](GEvent /* event */) {\n//        // cout << \"window! event=\" << event << endl;\n//    });\n\n//    for (int i = 0; i < 1000; i++) {\n//        tickFunc();\n//    }\n\n//    GTimer timer(2);\n//    timer.start();\n//    while (true) {\n//        GEvent event = waitForEvent(MOUSE_EVENT | TIMER_EVENT);\n//        int x = randomInteger(0, 800);\n//        int y = randomInteger(0, 400);\n//        GOval* oval = new GOval(x, y, 10, 20);\n//        window->add(oval);\n//    }\n}\n"
  },
  {
    "path": "Archived/StanfordCPPLib_QtCreatorProject/src/multimain/mainfunc-qt-console.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib functionality.\n */\n\n#include <iostream>\n#include <iomanip>\n#include \"error.h\"\n#include \"consoletext.h\"\n#include \"regexpr.h\"\n#include \"set.h\"\n#include \"simpio.h\"\n#include \"timer.h\"\n#include <QThread>\n#include \"gthread.h\"\nusing namespace std;\n\nvoid testQtConsole();\n\nint multimain(console) {\n    testQtConsole();\n    return 0;\n}\n\nvoid testQtConsole() {\n    cout << \"Hello, cout 1!\" << endl;\n    cerr << \"Hello, cerr 1!\" << endl;\n    cout << \"Hello, cout 2!\" << endl;\n    cerr << \"Hello, cerr 2!\" << endl;\n    cout << endl;\n    cerr << \"This is stderr!\" << endl;\n    cerr << \"So is this.\" << endl;\n    cout << \"COUT IN THIS PART \";\n    // cout.flush();\n    cerr << \"... BUT IT ALTERNATES TO CERR! \";\n    // cerr.flush();\n    cout << endl;\n    cout << \"COUT \";\n    cerr << \"CERR \";\n    cout << \"COUT \";\n    cerr << \"CERR \";\n    cout << \"COUT \";\n    cerr << \"CERR \";\n    cout << \"COUT \";\n    cerr << \"CERR \";\n    cout << \"COUT \";\n    cerr << \"CERR \";\n    cout << endl;\n\n    Timer tim;\n    tim.start();\n    string s = \"hi\";\n    s = s.substr(1, 1);\n    for (int i = 0; i < 1001; i++) {\n        cout << setw(5) << i;\n        if (i > 0 && i % 10 == 0) {\n            cout << endl;\n            // stanfordcpplib::qtgui::getConsoleWindow()->pause(10);\n        }\n    }\n    tim.stop();\n    cout << \"Took \" << tim.elapsed() << \"ms\" << endl;\n\n    cout << \"current Qt thread is: \" << QThread::currentThread() << endl;\n    cout << \"current GThread is: \" << GThread::getCurrentThread() << endl;\n    cout << \"student GThread is: \" << GThread::getStudentThread() << endl;\n    cout << \"Qt GUI GThread is: \" << GThread::getQtMainThread() << endl;\n\n//    cout << \"How about a nasty error?!\" << endl;\n\n//    // produce an error\n//    Vector<int> v;\n//    cout << v[99] << endl;\n\n//    string s;\n//    s.erase(999);\n\n//    Set<char> letters {'\\n', '\\t', '\\\\'};\n//    cout << \"letters = \" << letters << endl;\n\n//    std::ostringstream out;\n//    out << letters;\n\n//    std::istringstream input(out.str());\n//    Set<char> set2;\n//    input >> set2;\n//    cout << \"letters after write/read = \" << set2 << endl;\n\n//    // try to get Set in a stack trace\n////    Set<int> set1 {1, 2, 3};\n////    Set<int> set2 {2, 3, 5};\n////    Set<int> set3 = set1;\n////    set3.unionWith(set2);\n////    cout << \"union = \" << set3 << endl;\n////    Set<int> set4 = set1;\n////    set4.intersect(set2);\n////    cout << \"intersect = \" << set4 << endl;\n////    Set<int> set5 = set1;\n////    set5.difference(set2);\n////    cout << \"difference = \" << set5 << endl;\n\n    // user input\n    std::string line = getLine(\"Type: \");\n    cout << \"You typed: \\\"\" << line << \"\\\"\" << endl;\n\n    int num = getInteger(\"Type an integer: \");\n    cout << \"You typed: \" << num << endl;\n\n    double realnum = getDouble(\"Type a real number: \");\n    cout << \"You typed: \" << realnum << endl;\n\n//    cout << \"Partial line; what about me? :-(\";   // no endl\n//    // error(\"oooooooooops\");\n}\n"
  },
  {
    "path": "Archived/StanfordCPPLib_QtCreatorProject/src/multimain/mainfunc-qt-diffimage.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib functionality.\n */\n\n#include <iostream>\n#include \"gcolor.h\"\n#include \"gdiffimage.h\"\n#include \"gobjects.h\"\n#include \"ginteractors.h\"\n#include \"gtimer.h\"\n#include \"timer.h\"\nusing namespace std;\n\nvoid testDiffImage();\n\nint multimain(diffImage) {\n    testDiffImage();\n    return 0;\n}\n\nvoid testDiffImage() {\n    GDiffImage::showDialog(\"bender1\", \"bender.png\", \"bender2\", \"bender2.png\");\n}\n"
  },
  {
    "path": "Archived/StanfordCPPLib_QtCreatorProject/src/multimain/mainfunc-qt-layout.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib functionality.\n */\n\n#include <iostream>\n#include \"gcolor.h\"\n#include \"gobjects.h\"\n#include \"ginteractors.h\"\nusing namespace std;\n\nvoid testQlayout();\n\nint multimain(layout) {\n    testQlayout();\n    return 0;\n}\n\nvoid testQlayout() {\n    static GWindow* window = new GWindow(700, 500);\n    window->setTitle(\"QtLayout Window\");\n    window->setBackground(\"yellow\");\n    window->setResizable(true);\n    window->setExitOnClose(true);\n    window->center();\n\n    // northern area of overall window tests vertical flow layout\n    GContainer* north = new GContainer(GContainer::LAYOUT_FLOW_VERTICAL);\n    north->setBackground(\"red\");\n    GButton* button1 = new GButton(\"Button 1\");\n    north->add(button1);\n    GButton* button2 = new GButton(\"Button Number 2\");\n    north->add(button2);\n    GButton* button3 = new GButton(\"B3\");\n    north->add(button3);\n    north->setHorizontalAlignment(ALIGN_RIGHT);\n    north->setVerticalAlignment(ALIGN_TOP);\n    window->addToRegion(north, \"North\");\n\n    // central area of overall window tests border layout\n    GContainer* center = new GContainer(GContainer::LAYOUT_BORDER);\n    center->setBackground(\"green\");\n    center->addToRegion(new GButton(\"CN1\"), \"North\");\n    center->addToRegion(new GButton(\"CN2\"), \"North\");\n    center->addToRegion(new GButton(\"CN3\"), \"North\");\n    center->addToRegion(new GButton(\"CW1\"), \"North\");\n    center->setRegionHorizontalAlignment(\"North\", \"Left\");\n\n    center->addToRegion(new GButton(\"CWest1\"), \"West\");\n    center->addToRegion(new GButton(\"CW2\"), \"West\");\n    center->setRegionAlignment(\"West\", \"Right\", \"Top\");\n\n    center->addToRegion(new GButton(\"CEast1\"), \"East\");\n    center->addToRegion(new GButton(\"CE2\"), \"East\");\n    center->addToRegion(new GButton(\"CEs3\"), \"East\");\n    center->setRegionAlignment(\"East\", \"Center\", \"Bottom\");\n\n    center->addToRegion(new GButton(\"CS1\"), \"South\");\n    center->addToRegion(new GButton(\"CSouth2\"), \"South\");\n    center->setRegionHorizontalAlignment(\"South\", \"Right\");\n\n    center->addToRegion(new GButton(\"CCenter\"), \"Center\");\n    window->addToRegion(center, \"Center\");\n\n    GContainer* east = new GContainer(GContainer::LAYOUT_FLOW_VERTICAL);\n    east->setBackground(\"cyan\");\n    GContainer* east1 = new GContainer(GContainer::LAYOUT_FLOW_HORIZONTAL);\n    GContainer* east2 = new GContainer(GContainer::LAYOUT_FLOW_HORIZONTAL);\n    east->add(east1);\n    east->add(east2);\n    window->addToRegion(east, \"East\");\n    east1->add(new GButton(\"E11\"));\n    east1->add(new GButton(\"East12\"));\n    east1->add(new GButton(\"E13\"));\n    east2->add(new GButton(\"East11\"));\n    east2->add(new GButton(\"E12\"));\n\n    // southern area of overall window tests grid layout\n    int rows = 4;\n    int cols = 3;\n    GContainer* south = new GContainer(GContainer::LAYOUT_GRID, rows, cols);\n    south->setBackground(\"blue\");\n    south->add(new GButton(\"r0 long c0\"));\n    south->add(new GButton(\"r0c1\"));\n    south->add(new GButton(\"r0c2\"));\n    south->add(new GButton(\"r1c0\"));\n    south->addToGrid(new GButton(\"r1 c1 row/colspan\\ntall BOOYAH\\nYAY!!!!!\"), 1, 1, 2, 2);\n//    south->add(new GButton(\"r1c2\"));\n    south->addToGrid(new GButton(\"r2c0\"), 2, 0);\n//    south->add(new GButton(\"r2 long c1\"));\n//    south->add(new GButton(\"r2 ok c2\"));\n    south->addToGrid(new GButton(\"r3 ok c0\\ntall\\ntall!\"), 3, 0);\n    south->add(new GButton(\"r3 ok c1\"));\n    south->add(new GButton(\"r3 ok c2\"));\n    south->setHorizontalAlignment(ALIGN_RIGHT);\n    south->setVerticalAlignment(ALIGN_TOP);\n    window->addToRegion(south, \"South\");\n    window->setRegionHorizontalAlignment(GWindow::REGION_SOUTH, ALIGN_RIGHT);\n\n    window->show();\n}\n"
  },
  {
    "path": "Archived/StanfordCPPLib_QtCreatorProject/src/multimain/mainfunc-qt-table.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib functionality.\n */\n\n#include <iostream>\n#include \"gcolor.h\"\n#include \"gobjects.h\"\n#include \"ginteractors.h\"\n#include \"timer.h\"\nusing namespace std;\n\nvoid testQtable();\n\nint multimain(table) {\n    testQtable();\n    return 0;\n}\n\nvoid testQtable() {\n    static GWindow* window = new GWindow(900, 300);\n    window->setTitle(\"QtGui Window\");\n    window->setResizable(true);\n    window->setExitOnClose(true);\n    window->center();\n\n\n    GButton* button = new GButton(\"Triforce\");\n    button->setColor(GColor::RED);\n    button->setBackground(GColor::YELLOW);\n    // button->setIcon(\"triangle-icon.png\");\n    button->setTextPosition(GInteractor::TEXT_BESIDE_ICON);\n    button->setActionListener([](GEvent event) {\n        cout << \"button click! event = \" << event << endl;\n    });\n\n    button->setDoubleClickListener([](GEvent event) {\n        cout << \"button double-click! event = \" << event << endl;\n    });\n\n    button->setAccelerator(\"Ctrl-T\");\n    window->addToRegion(button, \"South\");\n    cout << \"button:    \" << button->toString() << endl;\n    cout << \"button accelerator: \" << button->getAccelerator() << endl;\n    cout << \"button font: \" << button->getFont() << endl;\n    button->setFont(\"Monospaced-Bold-14\");\n\n    int rows = 7;\n    int cols = 5;\n    static GTable* table = new GTable(rows, cols);\n    table->setColumnHeaderStyle(GTable::COLUMN_HEADER_EXCEL);\n    for (int r = 0; r < rows; r++) {\n        for (int c = 0; c < cols; c++) {\n            table->set(r, c, \"hello\");\n        }\n    }\n\n    // styles\n    // 1) global\n    table->setColor(\"magenta\");\n\n    // 2) row\n    table->setRowBackground(1, \"green\");\n    table->setRowFont(1, \"Monospaced-12-Bold\");\n    table->setRowForeground(3, \"Blue\");\n\n    // 3) column\n    table->setColumnAlignment(1, ALIGN_RIGHT);\n    table->setColumnBackground(1, \"Cyan\");\n    table->setColumnFont(2, \"*-*-Italic\");\n    table->setColumnForeground(3, \"Red\");\n\n    // 4) cell\n    table->setCellForeground(0, 0, \"Red\");\n    table->setCellAlignment(1, 1, ALIGN_CENTER);\n    table->setCellBackground(2, 2, \"Blue\");\n\n    // 1) global (again) - should override 2)-4)\n    table->setBackground(\"yellow\");\n\n    // 2) row (again) - should set cell (1,1) to bold, not italic\n    // table->setRowFont(1, \"Monospaced-12-Bold\");\n\n    table->setTableListener([](GEvent event) {\n        cout << \"table event: \" << event.toString() << endl;\n    });\n    window->addToRegion(table, \"Center\");\n    // window->pack();\n\n    GButton* button2 = new GButton(\"Resize\");\n    button2->setActionListener([]() {\n        table->resize(table->numRows() + 1, table->numCols() + 1);\n    });\n    window->addToRegion(button2, \"South\");\n\n    GButton* button3 = new GButton(\"ClearF\");\n    button3->setActionListener([]() {\n        // table->clearCellFormatting(1, 1);\n        table->clearFormatting();\n    });\n    window->addToRegion(button3, \"South\");\n}\n"
  },
  {
    "path": "Archived/StanfordCPPLib_QtCreatorProject/src/multimain/mainfunc-qt-widgets.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib functionality.\n */\n\n#include <iostream>\n#include \"filelib.h\"\n#include \"gcolor.h\"\n#include \"gdiffimage.h\"\n#include \"gobjects.h\"\n#include \"ginteractors.h\"\n#include \"gtimer.h\"\n#include \"sound.h\"\n#include \"timer.h\"\nusing namespace std;\n\nvoid testQwindow();\n\nint multimain(widgets) {\n    testQwindow();\n    return 0;\n}\n\nvoid c() {\n    Vector<int> v;\n    v[5];   // will crash\n}\n\nvoid b() {\n    c();\n}\n\nvoid a() {\n    b();\n}\n\nvoid testQwindow() {\n    GWindow* window = new GWindow(900, 300);\n    window->setTitle(\"QtGui Window\");\n    window->setResizable(true);\n    window->setExitOnClose(true);\n    window->center();\n\n//    window->setColor(\"red\");\n//    window->fillRect(0, 0, 900, 300);\n\n    // NORTH AREA\n\n    GLabel* label = new GLabel(\"Type <b>stuff</b> <i>now</i> (North):\");\n    // label->setIcon(\"triangle-icon.png\");\n    label->setBackground(\"yellow\");\n    label->setColor(GColor::GREEN);\n    // label->setBackground(GColor::YELLOW);\n    label->setActionListener([=]() {\n        std::cout << \"label clicked!\" << std::endl;\n        label->setBackground(label->getBackground() == \"cyan\" ? \"yellow\" : \"cyan\");\n    });\n    label->setDoubleClickListener(GEvent::LOG_EVENT);\n    window->addToRegion(label, GWindow::REGION_NORTH);\n    cout << \"label:     \" << label->toString() << endl;\n\n    //        static GTextField* textField = new GTextField(42.0);\n    GTextField* textField = new GTextField(\"Marty\");\n    textField->setBackground(\"green\");\n    textField->setPlaceholder(\"type your name\");\n    // textField->setEditable(false);\n    textField->setAutocompleteList({\"matt\", \"Marty\", \"Stuart\", \"steve\", \"yana\", \"yes\", \"no\"});\n    textField->setTextChangeListener([textField]() {\n        cout << \"textfield text changed! text is:\" << endl << textField->getText() << endl;\n    });\n    textField->setActionListener([textField]() {\n        cout << \"textfield action performed! text is:\" << endl << textField->getText() << endl;\n    });\n    window->addToRegion(textField, GWindow::REGION_NORTH);\n    cout << \"textfield: \" << textField->toString() << endl;\n\n    GSlider* slider = new GSlider();\n    slider->setBackground(\"blue\");\n    slider->setMinorTickSpacing(20);\n    slider->setPaintLabels(true);\n    slider->setPaintTicks(true);\n    slider->setActionListener([window, slider](GEvent event) {\n        cout << \"sliderChangeHandler: slider was slid!\" << endl;\n        cout << \"value: \" << slider->getValue() << endl;\n        cout << \"event: \" << event << endl;\n        window->removeTimerListener();\n    });\n\n    window->addToRegion(slider, GWindow::REGION_NORTH);\n    cout << \"slider:    \" << slider->toString() << endl;\n\n\n    // WEST AREA\n\n    GCheckBox* checkBox = new GCheckBox(\"Question?\", true);\n    checkBox->setBackground(\"red\");\n    checkBox->setActionListener([checkBox](const GEvent&) {\n        cout << \"checkbox clicked! \" << boolalpha << checkBox->isChecked() << endl;\n    });\n    window->addToRegion(checkBox, GWindow::REGION_WEST);\n    window->addToRegion(new GLabel(\"Hi!\"), GWindow::REGION_WEST);\n    window->addToRegion(new GLabel(\"^_^\"), GWindow::REGION_WEST);\n    // window->setRegionAlignment(GWindow::REGION_WEST, \"Top Right\");\n    cout << \"checkbox:  \" << checkBox->toString() << endl;\n\n\n    // EAST AREA\n\n    GRadioButton* radio1group1 = new GRadioButton(\"A\", \"group1\");\n    GRadioButton* radio2group1 = new GRadioButton(\"B\", \"group1\", true);\n    GRadioButton* radio3group1 = new GRadioButton(\"C\", \"group1\");\n    GRadioButton* radio1group2 = new GRadioButton(\"XX\", \"group2\", true);\n    GRadioButton* radio2group2 = new GRadioButton(\"YY\", \"group2\");\n    radio1group1->setBackground(\"red\");\n\n    GEventListenerVoid radioChangeHandler = [radio1group1, radio2group1,\n            radio3group1, radio1group2, radio2group2]() {\n        cout << \"checkbox clicked! \" << boolalpha\n             << radio1group1->isChecked() << \" \"\n             << radio2group1->isChecked() << \" \"\n             << radio3group1->isChecked() << \" \"\n             << radio1group2->isChecked() << \" \"\n             << radio2group2->isChecked() << endl;\n    };\n    radio1group1->setActionListener(radioChangeHandler);\n    radio1group1->setDoubleClickListener(GEvent::LOG_EVENT);\n    radio2group1->setActionListener(radioChangeHandler);\n    radio2group1->setDoubleClickListener(GEvent::LOG_EVENT);\n    radio3group1->setActionListener(radioChangeHandler);\n    radio3group1->setDoubleClickListener(GEvent::LOG_EVENT);\n    radio1group2->setActionListener(radioChangeHandler);\n    radio2group2->setActionListener(radioChangeHandler);\n\n//    static QGScrollBar* scrollBar = new QGScrollBar(QGScrollBar::VERTICAL, 0, 10, 0, 500);\n//    scrollBar->setValueChangeHandler([]() {\n//        cout << \"value: \" << scrollBar->getValue() << endl;\n//    });\n//    window->addToRegion(scrollBar, GWindow::REGION_EAST);\n\n    window->addToRegion(radio1group1, GWindow::REGION_EAST);\n    window->addToRegion(radio2group1, GWindow::REGION_EAST);\n    window->addToRegion(radio3group1, GWindow::REGION_EAST);\n    window->addToRegion(radio1group2, GWindow::REGION_EAST);\n    window->addToRegion(radio2group2, GWindow::REGION_EAST);\n    // window->setRegionAlignment(GWindow::REGION_EAST, \"Bottom Left\");\n//    cout << \"radio:     \" << radio1group1->toString() << endl;\n\n\n    // SOUTH AREA\n\n    GChooser* chooser = new GChooser({\"one\", \"two\", \"three four\"});\n    chooser->setColor(GColor::RED);\n    chooser->setBackground(GColor::CYAN);\n    chooser->setActionListener([chooser]() {\n        cout << \"changeHandler: chooser was clicked!\" << endl;\n        cout << \"selected: \" << chooser->getSelectedIndex() << \" : \"\n             << chooser->getSelectedItem() << endl;\n        cout << \"size: \" << chooser->size() << endl << endl;\n    });\n    window->addToRegion(chooser, GWindow::REGION_SOUTH);\n    cout << \"chooser:   \" << chooser->toString() << endl;\n\n    GButton* button = new GButton(\"Triforce\");\n    button->setColor(GColor::RED);\n    button->setBackground(GColor::YELLOW);\n    button->setIcon(\"triangle-icon.png\");\n    button->setTextPosition(GInteractor::TEXT_BESIDE_ICON);\n    button->setActionListener([window](GEvent event) {\n        cout << \"button click! event = \" << event << endl;\n        cout.flush();\n        Sound::playSound(\"moo.wav\");\n        cout << \"full paths:\" << endl;\n        cout << \". = \" << getAbsolutePath(\".\") << endl;\n        cout << \".. = \" << getAbsolutePath(\"..\") << endl;\n        cout << \"../../website = \" << getAbsolutePath(\"../../website\") << endl;\n        window->restore();\n\n        // will crash\n        // a();\n\n//        window->setResizable(!window->isResizable());\n//        cout << \"clickHandler: button was clicked!\" << endl;\n//        cout << \"location:  \" << window->getLocation() << endl;\n//        cout << \"size:      \" << window->getSize() << endl;\n//        cout << \"visible:   \" << boolalpha << window->isVisible() << endl;\n//        cout << \"resizable: \" << boolalpha << window->isResizable() << endl << endl;\n\n//        // test GOptionPane\n//        GOptionPane::showMessageDialog(\"I love Yana! <3\");\n\n//        Vector<string> choices = {\"One\", \"Two\", \"Three\"};\n//        string result = GOptionPane::showOptionDialog(\"Pick a thing\", choices);\n//        cout << \"You chose: \" << result << endl;\n\n        //    int result = GOptionPane::showConfirmDialog(\"Is Yana the most beautiful?\", \"Important Question\", GOptionPane::YES_NO_CANCEL);\n        //    cout << \"You chose: \" << result << endl;\n        //    std::string answer = GOptionPane::showInputDialog(\"Who is my baby?\", \"Baby's name?\", \"bozo\");\n        //    cout << \"You typed: \" << answer << endl;\n\n        //    string filename = QGFileChooser::showOpenDialog(\"\", \"*.txt, *.cpp, *.h\");\n        //    cout << \"You chose: \" << filename << endl;\n        // window->clear();\n    });\n\n    //        button->setClickHandler([]() {\n    //            // grayscale(image);\n    //        });\n    button->setDoubleClickListener([](GEvent event) {\n        cout << \"button double-click! event = \" << event << endl;\n    });\n    button->setAccelerator(\"Ctrl-T\");\n    window->addToRegion(button, GWindow::REGION_SOUTH);\n    cout << \"button:    \" << button->toString() << endl;\n    cout << \"button accelerator: \" << button->getAccelerator() << endl;\n    cout << \"button font: \" << button->getFont() << endl;\n    button->setFont(\"Monospaced-Bold-14\");\n\n    GButton* button4 = new GButton(\"HI!\");\n    window->addToRegion(button4, GWindow::REGION_SOUTH);\n\n    static GCheckBox* checkboxs = new GCheckBox(\"&Visible?\", /* checked */ true);\n    checkboxs->setActionListener([window, button4]() {\n        std::cout << \"checkbox clicked!\" << std::endl;\n        // button4->setVisible(checkboxs->isChecked());\n        if (checkboxs->isChecked()) {\n            window->addToRegion(button4, GWindow::REGION_SOUTH);\n        } else {\n            window->removeFromRegion(button4, GWindow::REGION_SOUTH);\n        }\n    });\n    checkboxs->setDoubleClickListener([]() {\n        std::cout << \"checkbox double-clicked!\" << std::endl;\n    });\n    window->addToRegion(checkboxs, GWindow::REGION_SOUTH);\n\n    GButton* timerButton = new GButton(\"Timer\");\n//    GTimer* timer = nullptr;\n//    timerButton->setActionListener([&timer]() {\n//        if (timer) {\n//            timer->stop();\n//            delete timer;\n//            timer = nullptr;\n//        } else {\n//            timer = new GTimer(1000);\n//            timer->start();\n//        }\n//    });\n    window->addToRegion(timerButton, GWindow::REGION_SOUTH);\n\n//    window->setRegionAlignment(GWindow::REGION_SOUTH, \"Center\");\n\n    // GLabel* oopsButton = new GLabel(\"I should not show up!!!!!\");\n    // oopsButton->setVisible(true);\n\n\n    // CENTER AREA\n\n//    static GTextArea* textArea = new GTextArea(\"This is \\na multi-line\\n\\ntext area\");\n//    textArea->setPlaceholder(\"type some text\");\n//    textArea->setTextChangeListener([](GEvent) {\n//        cout << \"textarea text changed! text is:\" << endl << textArea->getText() << endl;\n//    });\n//    window->addToRegion(textArea, \"Center\");\n\n    GBrowserPane* pane = new GBrowserPane();\n    pane->setBackground(\"red\");\n    pane->readTextFromFile(\"resfile3.html\");\n    pane->setLinkListener([](GEvent event) {\n        cout << \"event: \" << event << \", url: \" << event.getRequestURL() << endl;\n    });\n    window->addToRegion(pane, GWindow::REGION_CENTER);\n    cout << \"browser:  \" << pane->toString() << endl;\n\n    button4->setActionListener([pane]() {\n        pane->scrollToBottom();\n        pane->setEditable(!pane->isEditable());\n    });\n    window->show();\n\n    // window->pack();\n\n//    while (true) {\n//        GEvent event = waitForEvent(TIMER_EVENT);\n//        cout << \"event: \" << event << endl;\n//    }\n\n    // will crash\n    // a();\n\n//    int* x = nullptr;\n//    (*x)++;   // boom\n}\n"
  },
  {
    "path": "Archived/StanfordCPPLib_QtCreatorProject/src/multimain/mainfunc2.cpp",
    "content": "///*\n// * Test file for verifying the Stanford C++ lib functionality.\n// */\n\n//#include <iostream>\n//#include \"console.h\"\n\n//int multimain(number2) {\n//    std::cout << \"Yay this is main 2!\" << std::endl;\n//    return 0;\n//}\n"
  },
  {
    "path": "Archived/StanfordCPPLib_QtCreatorProject/src/multimain/mainfunc3.cpp",
    "content": "///*\n// * Test file for verifying the Stanford C++ lib functionality.\n// */\n\n//#include <iostream>\n//#include \"console.h\"\n\n//int multimain(number3) {\n//    std::cout << \"Yay this is multimain #3!!!\" << std::endl;\n//    return 0;\n//}\n"
  },
  {
    "path": "Archived/StanfordCPPLib_QtCreatorProject/src/readme.txt",
    "content": "This directory contains the source code files (*.cpp, *.h)\r\nthat you will write as you complete the assignment.\r\nWe will also put any instructor-provided code here.\r\n"
  },
  {
    "path": "Archived/StanfordCPPLib_QtCreatorProject/stanfordcpplib.pro",
    "content": "#####################################################################\n## Stanford CS 106 B/X Qt Creator project file                     ##\n#####################################################################\n#\n# This file specifies the information about your project to Qt Creator.\n# You should not need to modify this file to complete your assignment.\n#\n# @author Marty Stepp (past authors/support by Keith Schwarz, Reid Watson, etc.)\n# @version 2019/04/23\n# - revert copydata code for copying resource files\nDEFINES += SPL_PROJECT_VERSION=20190423   # kludgy YYYYMMDD constant used by lib to know its version\n\n# global Qt/project settings\nTEMPLATE = app\nPROJECT_FILTER =\nQT       += core gui multimedia network\ngreaterThan(QT_MAJOR_VERSION, 4): QT += widgets\n\n###############################################################################\n# BEGIN SECTION FOR SPECIFYING SOURCE/LIBRARY/RESOURCE FILES OF PROJECT       #\n###############################################################################\n\n# remove spaces from target executable for better Windows compatibility\nTARGET = $$replace(TARGET, \" \", _)\n\n# checks to make sure we haven't accidentally opened the project\n# from within a ZIP archive (common mistake on Windows)\n\nwin32 {\n    contains(PWD, .*\\.zip.*) | contains(PWD, .*\\.ZIP.*) {\n        message(\"\")\n        message(*******************************************************************)\n        message(*** ERROR: You are trying to open this project from within a .ZIP archive:)\n        message(*** $$PWD)\n        message(*** You need to extract the files out of the ZIP file first.)\n        message(*** Open the ZIP in your file explorer and press the Extract button.)\n        message(*******************************************************************)\n        message(\"\")\n        error(Exiting.)\n    }\n}\n\n# check for intl chars in path (common issue for intl students)\nPWD_WITHOUT_BAD_CHARS = $$PWD\nPWD_WITHOUT_BAD_CHARS ~= s|[^a-zA-Z0-9_ ().\\/:;+-]+|???\nBAD_CHARS = $$PWD\nBAD_CHARS ~= s|[a-zA-Z0-9_ ().\\/:;-]+|\n!isEmpty(BAD_CHARS) {\n    message(\"\")\n    message(*******************************************************************)\n    message(*** ERROR: Your project directory contains invalid characters:)\n    message(*** $$PWD)\n    message(***)\n    message(*** The characters that are invalid are: $$BAD_CHARS)\n    message(***)\n    message(*** You need to store your project in a directory without any punctuation)\n    message(*** marks such as commas, or international symbols such as)\n    message(*** Chinese or Korean symbols.)\n    message(*** If you keep seeing this error try creating a simple directory)\n    message(*** name such as \"C:\\Programs\\Homework1.\")\n    message(*******************************************************************)\n    message(\"\")\n    error(Exiting.)\n}\n\n# checks to ensure that the Stanford C++ library is present in this project\n!exists($$PWD/lib/StanfordCPPLib/private/version.h) {\n    message(\"\")\n    message(*******************************************************************)\n    message(*** ERROR: Stanford C++ library not found!)\n    message(*** This project cannot run without the folder lib/StanfordCPPLib/.)\n    message(*** Place that folder into your project and try again.)\n    message(*******************************************************************)\n    message(\"\")\n    error(Exiting.)\n}\n\nwin64 {\n    !exists($$PWD/lib/addr2line64.exe) {\n        message(\"\")\n        message(*******************************************************************)\n        message(*** ERROR: Stanford C++ library support file 'addr2line64.exe' not found!)\n        message(*** Our library needs this file present to produce stack traces.)\n        message(*** Place that file into your lib/ folder and try again.)\n        message(*******************************************************************)\n        message(\"\")\n        warning(Exiting.)\n    }\n}\n\nwin32 {\n    !exists($$PWD/lib/addr2line.exe) {\n        message(\"\")\n        message(*******************************************************************)\n        message(*** ERROR: Stanford C++ library support file 'addr2line.exe' not found!)\n        message(*** Our library needs this file present to produce stack traces.)\n        message(*** Place that file into your lib/ folder and try again.)\n        message(*******************************************************************)\n        message(\"\")\n        warning(Exiting.)\n    }\n}\n\n!exists($$PWD/lib/iconstrip.png) {\n    message(\"\")\n    message(*******************************************************************)\n    message(*** ERROR: Stanford library cannot find image strip file:)\n    message(*** lib/iconstrip.png)\n    message(*** This project cannot run without this file present.)\n    message(*** Place the file into your lib/ folder and try again.)\n    message(*******************************************************************)\n    message(\"\")\n    warning(Exiting.)\n}\n\n# precompiled header speeds up build times\n!win32 {\nPRECOMPILED_HEADER = $$files($$PWD/lib/StanfordCPPLib/private/precompiled.h)\n}\n\n# honeypot to trick Qt Creator so that adding files works from within IDE;\n# Qt looks for first 'SOURCES *=' line and adds newly added .cpp/h files there.\n# But then that causes the files to be added twice because of *.cpp/h rules below.\n# To get around this, we follow the first 'SOURCES *=' line by a line that clears\n# out SOURCES, so that the Qt Creator .pro modification is ineffectual.\nDISTFILES *= \"\"\nDISTFILES = \"\"\nHEADERS *= \"\"\nHEADERS = \"\"\nSOURCES *= \"\"\nSOURCES = \"\"\n\n# include various source .cpp files and header .h files in the build process\n# (student's source code can be put into project root, or src/ subfolder)\nSOURCES *= $$files($$PWD/lib/StanfordCPPLib/*.cpp, true)\nSOURCES *= $$files($$PWD/src/*.cpp, true)\nexists($$PWD/$$PROJECT_FILTER*.cpp) {\n    SOURCES *= $$files($$PWD/$$PROJECT_FILTER*.cpp)\n}\n\nexists($$PWD/lib/StanfordCPPLib/*.h) {\n    HEADERS *= $$files($$PWD/lib/StanfordCPPLib/*.h)\n}\nHEADERS *= $$files($$PWD/lib/StanfordCPPLib/*.h, true)\nHEADERS *= $$files($$PWD/src/*.h, true)\nexists($$PWD/$$PROJECT_FILTER*.h) {\n    HEADERS *= $$files($$PWD/$$PROJECT_FILTER*.h)\n}\n\n# directories examined by Qt Creator when student writes an #include statement\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/collections/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/graphics/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/io/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/system/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/util/\nexists($$PWD/lib/StanfordCPPLib/autograder/*) {\n    INCLUDEPATH *= $$PWD/lib/StanfordCPPLib/autograder/\n}\nINCLUDEPATH *= $$PWD/src/\nINCLUDEPATH *= $$PWD/\nexists($$PWD/src/autograder/$$PROJECT_FILTER/*.h) {\n    INCLUDEPATH *= $$PWD/src/autograder/$$PROJECT_FILTER/\n}\nexists($$PWD/src/test/*.h) {\n    INCLUDEPATH *= $$PWD/src/test/\n}\n\n# directories listed as \"Other files\" in left Project pane of Qt Creator\nexists($$PWD/res/*) {\n    OTHER_FILES *= $$files($$PWD/res/*, true)\n}\nexists($$PWD/*.txt) {\n    OTHER_FILES *= $$files($$PWD/*.txt)\n}\nexists($$PWD/input/*) {\n    OTHER_FILES *= $$files($$PWD/input/*, true)\n}\nexists($$PWD/output/*) {\n    OTHER_FILES *= $$files($$PWD/output/*, true)\n}\n\n###############################################################################\n# END SECTION FOR SPECIFYING SOURCE/LIBRARY/RESOURCE FILES OF PROJECT         #\n###############################################################################\n\n\n###############################################################################\n# BEGIN SECTION FOR SPECIFYING COMPILER/LINKER FLAGS AND LIBRARIES            #\n###############################################################################\n\n# set up flags for the C++ compiler\n# (In general, many warnings/errors are enabled to tighten compile-time checking.\n# A few overly pedantic/confusing errors are turned off for simplicity.)\nCONFIG += no_include_pwd         # make sure we do not accidentally #include files placed in 'resources'\nCONFIG += sdk_no_version_check   # removes spurious warnings on Mac OS X\n# CONFIG += warn_off\n\n# gives us a bit more precision about which errors are printed\nQMAKE_CFLAGS_WARN_ON -= -Wall\nQMAKE_CFLAGS_WARN_ON -= -Wextra\nQMAKE_CFLAGS_WARN_ON -= -W\nQMAKE_CXXFLAGS_WARN_ON -= -Wall\nQMAKE_CXXFLAGS_WARN_ON -= -Wextra\nQMAKE_CXXFLAGS_WARN_ON -= -W\n\nwin32 {\n    # some Windows systems have old MinGW compilers, so be safe and use C++11\n    CONFIG += c++11\n} else {\n    # Mac/Linux should support the latest C++ features\n    CONFIG += c++14\n}\n\n# uncomment this if you want to dump the preprocessor output into the .o files\n# (useful when debugging advanced preprocessor hacking)\n# QMAKE_CXXFLAGS += -E\n\nQMAKE_CXXFLAGS += -Wall\n#QMAKE_CXXFLAGS += -Wextra\nQMAKE_CXXFLAGS += -Wcast-align\n#QMAKE_CXXFLAGS += -Wfloat-equal\nQMAKE_CXXFLAGS += -Wformat=2\nQMAKE_CXXFLAGS += -Wlogical-op\nQMAKE_CXXFLAGS += -Wno-missing-field-initializers\nQMAKE_CXXFLAGS += -Wno-old-style-cast\nQMAKE_CXXFLAGS += -Wno-sign-compare\nQMAKE_CXXFLAGS += -Wno-sign-conversion\nQMAKE_CXXFLAGS += -Wno-write-strings\nQMAKE_CXXFLAGS += -Wreturn-type\nQMAKE_CXXFLAGS += -Werror=return-type\nQMAKE_CXXFLAGS += -Werror=uninitialized\nQMAKE_CXXFLAGS += -Wunreachable-code\nQMAKE_CXXFLAGS += -Wunused-parameter\nexists($$PWD/lib/autograder/*.h) | exists($$PWD/lib/StanfordCPPLib/autograder/$$PROJECT_FILTER/*.h) | exists($$PWD/lib/autograder/$$PROJECT_FILTER/*.cpp) {\n    # omit some warnings/errors in autograder projects\n    # (largely because the Google Test framework violates them a ton of times)\n    QMAKE_CXXFLAGS += -Wno-deprecated\n    QMAKE_CXXFLAGS += -Wno-reorder\n    QMAKE_CXXFLAGS += -Wno-unused-function\n    QMAKE_CXXFLAGS += -Wno-useless-cast\n}\n\n# additional flags for Windows\nwin32 {\n    LIBS += -lDbghelp\n    LIBS += -lbfd\n    LIBS += -limagehlp\n    cache()\n} else {\n    # flags that don't work on Windows MinGW compiler\n    QMAKE_CXXFLAGS += -Wno-unused-const-variable\n    LIBS += -ldl\n}\n\n# additional flags for Mac OS X\nmacx {\n    # calling cache() reduces warnings on Mac OS X systems\n    cache()\n    QMAKE_MAC_SDK = macosx\n}\n\n# additional flags for Linux\nunix:!macx {\n    cache()\n}\n\n# libraries for all OSes\nLIBS += -lpthread\n\n# additional flags for clang compiler (default on Mac)\nCOMPILERNAME = $$QMAKE_CXX\nCOMPILERNAME ~= s|.*/|\nequals(COMPILERNAME, clang++) {\n    QMAKE_CXXFLAGS += -Wempty-init-stmt\n    QMAKE_CXXFLAGS += -Wignored-qualifiers\n    QMAKE_CXXFLAGS += -Winitializer-overrides\n    QMAKE_CXXFLAGS += -Wmissing-field-initializers\n    QMAKE_CXXFLAGS += -Wmissing-method-return-type\n    QMAKE_CXXFLAGS += -Wnull-pointer-arithmetic\n    QMAKE_CXXFLAGS += -Wsemicolon-before-method-body\n    QMAKE_CXXFLAGS += -Wno-format-nonliteral\n    QMAKE_CXXFLAGS += -Wno-inconsistent-missing-override\n    QMAKE_CXXFLAGS += -Wno-overloaded-virtual\n    QMAKE_CXXFLAGS += -Wno-unknown-warning-option\n}\n\n# set up configuration flags used internally by the Stanford C++ libraries\n# These flags are all optional but can simplify project configuration.\n# (setting x/y to 999999 centers the window)\n# (see platform.cpp/h for descriptions of some of these flags)\n\n# wrapper name for 'main' function (needed so student can write 'int main'\n# but our library can grab the actual main function to initialize itself)\nDEFINES += SPL_REPLACE_MAIN_FUNCTION=1\nDEFINES += main=qMain\n\n# x/y location and w/h of the graphical console window; set to -1 to center\nDEFINES += SPL_CONSOLE_X=-1\nDEFINES += SPL_CONSOLE_Y=-1\nDEFINES += SPL_CONSOLE_WIDTH=900\nDEFINES += SPL_CONSOLE_HEIGHT=550\n\n# font size of the font in the graphical console window; can also be set via window menu\n#DEFINES += SPL_CONSOLE_FONTSIZE=18\n\n# echo graphical console onto the plain text console as well?\nDEFINES += SPL_CONSOLE_ECHO\n\n# quit the C++ program when the graphical console is closed?\nDEFINES += SPL_CONSOLE_EXIT_ON_CLOSE\n\n# crash if the .pro is older than the minimum specified in version.h? (SPL_PROJECT_VERSION)\nDEFINES += SPL_VERIFY_PROJECT_VERSION\n\n# allow clients to access the internal data inside the heap of PriorityQueue?\n# (used for some practice exam exercises/demos)\nDEFINES += SPL_PQUEUE_ALLOW_HEAP_ACCESS\n\n# should toString / << of a PriorityQueue display the elements in sorted order,\n# or in heap internal order? the former is more expected by client; the latter\n# is faster and avoids a deep-copy\nDEFINES += SPL_PQUEUE_PRINT_IN_HEAP_ORDER\n\n# flag to throw exceptions when a collection iterator is used after it has\n# been invalidated (e.g. if you remove from a Map while iterating over it)\nDEFINES += SPL_THROW_ON_INVALID_ITERATOR\n\n# flag to add members like 'cost', 'visited', etc. to BasicGraph Vertex/Edge\n# (we are going to disable these to force more interesting implementations)\n# DEFINES += SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n\n# should we throw an error() when operator >> fails on a collection?\n# for years this was true, but the C++ standard says you should just silently\n# set the fail bit on the stream and exit, so that has been made the default.\n# DEFINES += SPL_ERROR_ON_STREAM_EXTRACT\n\n# scale up the console window on high-DPI screens?\n# DEFINES += SPL_SCALE_HIGH_DPI_SCREEN\n\n# is the .cpp portion of the library merged into a single .cpp file\n# to speed up compilation?\nDEFINES += SPL_MERGED_LIBRARY_SINGLE_FILE\n\n# should we attempt to precompile the Qt moc_*.cpp files for speed?\nDEFINES += SPL_PRECOMPILE_QT_MOC_FILES\n\n# build-specific options (debug vs release)\n\n# options for the 'debug' target (default):\n# use no optimization, generate debugger symbols,\n# and catch/print to console any uncaught exceptions thrown by the program\nCONFIG(debug, debug|release) {\n    QMAKE_CXXFLAGS += -g3\n    QMAKE_CXXFLAGS += -fno-inline\n    QMAKE_CXXFLAGS += -fno-omit-frame-pointer\n\n    unix:!macx {\n        equals(COMPILERNAME, g++) {\n            # on Linux g++, these flags help us gather line numbers for stack traces\n            QMAKE_CXXFLAGS += -rdynamic\n            QMAKE_CXXFLAGS += -export-dynamic\n            QMAKE_CXXFLAGS += -Wl,--export-dynamic\n            QMAKE_LFLAGS += -export-dynamic\n            QMAKE_LFLAGS += -rdynamic\n        }\n    }\n    unix:macx {\n        equals(COMPILERNAME, clang++) {\n            QMAKE_CXXFLAGS += -Wno-unused-command-line-argument\n            QMAKE_CXXFLAGS += -Wl,-export_dynamic\n            QMAKE_CXXFLAGS += -Wl,-export-dynamic\n            QMAKE_CXXFLAGS += -Wl,--export-dynamic\n            QMAKE_LFLAGS += -rdynamic\n            QMAKE_LFLAGS += -Wl,-no_pie\n        }\n    }\n\n    # print details about uncaught exceptions with red error text / stack trace\n    DEFINES += SPL_CONSOLE_PRINT_EXCEPTIONS\n}\n\n# options for the 'release' target:\n# enable some compiler optimizations, and\n# make it statically linked so it is a stand-alone executable\nCONFIG(release, debug|release) {\n    QMAKE_CXXFLAGS += -O2\n    # commenting out -static because it doesn't link to Qt libraries properly\n    #QMAKE_LFLAGS += -static\n\n    macx {\n        QMAKE_POST_LINK += 'macdeployqt $${OUT_PWD}/$${TARGET}.app'\n    }\n    unix:!macx {\n        QMAKE_LFLAGS += -static-libgcc\n        QMAKE_LFLAGS += -static-libstdc++\n    }\n    win32 {\n        TARGET_PATH = $${OUT_PWD}/release/$${TARGET}.exe\n        TARGET_PATH ~= s,/,\\\\,g\n\n        OUT_PATH = $${OUT_PWD}/\n        OUT_PATH ~= s,/,\\\\,g\n\n        QMAKE_LFLAGS += -static-libgcc\n        QMAKE_LFLAGS += -static-libstdc++\n        QMAKE_POST_LINK += copy '\"'$${TARGET_PATH}'\"' '\"'$${OUT_PATH}'\"'\n    }\n}\n\n###############################################################################\n# END SECTION FOR SPECIFYING COMPILER/LINKER FLAGS AND LIBRARIES              #\n###############################################################################\n\n\n###############################################################################\n# BEGIN SECTION FOR CS 106B/X AUTOGRADER PROGRAMS                             #\n###############################################################################\n\n# settings specific to CS 106 B/X auto-grading programs; do not modify\nexists($$PWD/lib/autograder/*.h) | exists($$PWD/lib/StanfordCPPLib/autograder/*.h) | exists($$PWD/src/autograder/$$PROJECT_FILTER/*.cpp) {\n    # include the various autograder source code and libraries in the build process\n    exists($$PWD/lib/autograder/*.cpp) {\n        SOURCES *= $$files($$PWD/lib/autograder/*.cpp, true)\n    }\n    exists($$PWD/lib/autograder/*.h) {\n        HEADERS *= $$files($$PWD/lib/autograder/*.h, true)\n    }\n    exists($$PWD/lib/autograder/*) {\n        INCLUDEPATH *= $$PWD/lib/autograder/\n    }\n    exists($$PWD/lib/StanfordCPPLib/autograder/*) {\n        INCLUDEPATH *= $$PWD/lib/StanfordCPPLib/autograder/\n    }\n    exists($$PWD/src/autograder/*.h) {\n        INCLUDEPATH *= $$PWD/src/autograder/\n    }\n    exists($$PWD/src/autograder/$$PROJECT_FILTER/*.h) {\n        INCLUDEPATH *= $$PWD/src/autograder/$$PROJECT_FILTER/\n    }\n\n    DEFINES += SPL_AUTOGRADER_MODE\n\n    # define the style of autograder you want to use (GUI vs console)\n    DEFINES += SPL_GRAPHICAL_AUTOGRADER\n    # DEFINES += SPL_CONSOLE_AUTOGRADER\n\n    # a check to ensure that required autograder resources are present in this project\n    !exists($$PWD/lib/iconstrip-autograder.png) {\n        message(\"\")\n        message(*******************************************************************)\n        message(*** ERROR: Stanford library cannot find autograder image strip file:)\n        message(*** lib/iconstrip-autograder.png)\n        message(*** This project cannot run without this file present.)\n        message(*** Place the file into your lib/ folder and try again.)\n        message(*******************************************************************)\n        message(\"\")\n        error(Exiting.)\n    }\n}\n###############################################################################\n# END SECTION FOR CS 106B/X AUTOGRADER PROGRAMS                               #\n###############################################################################\n\n\n###############################################################################\n# BEGIN SECTION FOR DEFINING HELPER FUNCTIONS FOR RESOURCE COPYING            #\n###############################################################################\n\nCOPY_RESOURCE_FILES_INPUT = \"\"\n\nwin32 {\n    # copy addr2line exe program(s) to capture stack traces on Windows\n    exists($$PWD/lib/*.exe) {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/lib/*.exe)\n    }\n    # optional .dll files for network features on Windows\n    exists($$PWD/lib/*.dll) {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/lib/*.dll)\n    }\n}\n# copy icons and image strips for library GUI/console windows\nexists($$PWD/lib/*.png) {\n    COPY_RESOURCE_FILES_INPUT += $$files($$PWD/lib/*.png)\n}\nexists($$PWD/*.txt) {\n    COPY_RESOURCE_FILES_INPUT += $$files($$PWD/*.txt)\n}\nexists($$PWD/res/*) {\n    win32 {\n        exists($$PWD/res/*/*) {\n            # this will preserve the nested res/ directory structure on Windows,\n            # at the unfortunate cost of copying res/ to build dir on every run;\n            # recommended: avoid res subfolders to avoid this penalty on Windows\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/res)\n        } else {\n            # res/ with no subdirectories will properly be copied only on modification\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/res/*.*)\n        }\n    } else {\n        # Mac/Linux have proper recursive file-copying semantics in all cases\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/res/*, true)\n    }\n}\n# input/ and output/ have same nested subfolder issue as res/\nexists($$PWD/input/*) {\n    win32 {\n        exists($$PWD/input/*/*) {\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/input)\n        } else {\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/input/*.*)\n        }\n    } else {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/input, true)\n    }\n}\nexists($$PWD/output/*) {\n    win32 {\n        exists($$PWD/output/*/*) {\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/output)\n        } else {\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/output/*.*)\n        }\n    } else {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/output, true)\n    }\n}\nexists($$PWD/lib/autograder/*.h) | exists($$PWD/lib/StanfordCPPLib/autograder/*.h) | exists($$PWD/src/autograder/$$PROJECT_FILTER/*.cpp) {\n    # in autograder projects, copy over student's .cpp and .h files for possible style checking\n    exists($$PWD/*.cpp) {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/*.cpp)\n    }\n    exists($$PWD/*.h) {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/*.h)\n    }\n}\n\n# platform-specific commands to copy files and folders to build directory\ncopy_resource_files.name = Copy resource files to the build directory\nwin32 {\n    # https://support.microsoft.com/en-us/help/289483/switches-that-you-can-use-with-xcopy-and-xcopy32-commands\n    # /s - copy subfolders\n    # /q - quiet (no verbose output)\n    # /y - overwrite without prompting\n    # /i - if destination does not exist and copying more than one file, assumes destination is a folder\n    copy_resource_files.commands = xcopy /s /q /y ${QMAKE_FILE_IN}\n} else {\n    copy_resource_files.commands = cp -rf ${QMAKE_FILE_IN} .\n}\n# copy_resource_files.commands = ${COPY_FILE} ${QMAKE_FILE_IN} ${QMAKE_FILE_OUT}\ncopy_resource_files.input = COPY_RESOURCE_FILES_INPUT\ncopy_resource_files.output = $${OUT_PWD}/${QMAKE_FILE_BASE}${QMAKE_FILE_EXT}\ncopy_resource_files.CONFIG = no_link no_clean target_predeps\nQMAKE_EXTRA_COMPILERS += copy_resource_files\n\n###############################################################################\n# END SECTION FOR DEFINING HELPER FUNCTIONS FOR RESOURCE COPYING              #\n###############################################################################\n\n# END OF FILE (this should be line #560; if not, your .pro has been changed!)\n"
  },
  {
    "path": "Archived/autograder-empty-project/autograder-empty-project.pro",
    "content": "#####################################################################\n## Stanford CS 106 B/X Qt Creator project file                     ##\n#####################################################################\n#\n# This file specifies the information about your project to Qt Creator.\n# You should not need to modify this file to complete your assignment.\n#\n# @author Marty Stepp (past authors/support by Keith Schwarz, Reid Watson, etc.)\n# @version 2019/04/23\n# - revert copydata code for copying resource files\nDEFINES += SPL_PROJECT_VERSION=20190423   # kludgy YYYYMMDD constant used by lib to know its version\n\n# global Qt/project settings\nTEMPLATE = app\nPROJECT_FILTER =\nQT       += core gui multimedia network\ngreaterThan(QT_MAJOR_VERSION, 4): QT += widgets\n\n###############################################################################\n# BEGIN SECTION FOR SPECIFYING SOURCE/LIBRARY/RESOURCE FILES OF PROJECT       #\n###############################################################################\n\n# remove spaces from target executable for better Windows compatibility\nTARGET = $$replace(TARGET, \" \", _)\n\n# checks to make sure we haven't accidentally opened the project\n# from within a ZIP archive (common mistake on Windows)\n\nwin32 {\n    contains(PWD, .*\\.zip.*) | contains(PWD, .*\\.ZIP.*) {\n        message(\"\")\n        message(*******************************************************************)\n        message(*** ERROR: You are trying to open this project from within a .ZIP archive:)\n        message(*** $$PWD)\n        message(*** You need to extract the files out of the ZIP file first.)\n        message(*** Open the ZIP in your file explorer and press the Extract button.)\n        message(*******************************************************************)\n        message(\"\")\n        error(Exiting.)\n    }\n}\n\n# check for intl chars in path (common issue for intl students)\nPWD_WITHOUT_BAD_CHARS = $$PWD\nPWD_WITHOUT_BAD_CHARS ~= s|[^a-zA-Z0-9_ ().\\/:;+-]+|???\nBAD_CHARS = $$PWD\nBAD_CHARS ~= s|[a-zA-Z0-9_ ().\\/:;-]+|\n!isEmpty(BAD_CHARS) {\n    message(\"\")\n    message(*******************************************************************)\n    message(*** ERROR: Your project directory contains invalid characters:)\n    message(*** $$PWD)\n    message(***)\n    message(*** The characters that are invalid are: $$BAD_CHARS)\n    message(***)\n    message(*** You need to store your project in a directory without any punctuation)\n    message(*** marks such as commas, or international symbols such as)\n    message(*** Chinese or Korean symbols.)\n    message(*** If you keep seeing this error try creating a simple directory)\n    message(*** name such as \"C:\\Programs\\Homework1.\")\n    message(*******************************************************************)\n    message(\"\")\n    error(Exiting.)\n}\n\n# checks to ensure that the Stanford C++ library is present in this project\n!exists($$PWD/lib/StanfordCPPLib/private/version.h) {\n    message(\"\")\n    message(*******************************************************************)\n    message(*** ERROR: Stanford C++ library not found!)\n    message(*** This project cannot run without the folder lib/StanfordCPPLib/.)\n    message(*** Place that folder into your project and try again.)\n    message(*******************************************************************)\n    message(\"\")\n    error(Exiting.)\n}\n\nwin64 {\n    !exists($$PWD/lib/addr2line64.exe) {\n        message(\"\")\n        message(*******************************************************************)\n        message(*** ERROR: Stanford C++ library support file 'addr2line64.exe' not found!)\n        message(*** Our library needs this file present to produce stack traces.)\n        message(*** Place that file into your lib/ folder and try again.)\n        message(*******************************************************************)\n        message(\"\")\n        warning(Exiting.)\n    }\n}\n\nwin32 {\n    !exists($$PWD/lib/addr2line.exe) {\n        message(\"\")\n        message(*******************************************************************)\n        message(*** ERROR: Stanford C++ library support file 'addr2line.exe' not found!)\n        message(*** Our library needs this file present to produce stack traces.)\n        message(*** Place that file into your lib/ folder and try again.)\n        message(*******************************************************************)\n        message(\"\")\n        warning(Exiting.)\n    }\n}\n\n!exists($$PWD/lib/iconstrip.png) {\n    message(\"\")\n    message(*******************************************************************)\n    message(*** ERROR: Stanford library cannot find image strip file:)\n    message(*** lib/iconstrip.png)\n    message(*** This project cannot run without this file present.)\n    message(*** Place the file into your lib/ folder and try again.)\n    message(*******************************************************************)\n    message(\"\")\n    warning(Exiting.)\n}\n\n# precompiled header speeds up build times\n!win32 {\nPRECOMPILED_HEADER = $$files($$PWD/lib/StanfordCPPLib/private/precompiled.h)\n}\n\n# honeypot to trick Qt Creator so that adding files works from within IDE;\n# Qt looks for first 'SOURCES *=' line and adds newly added .cpp/h files there.\n# But then that causes the files to be added twice because of *.cpp/h rules below.\n# To get around this, we follow the first 'SOURCES *=' line by a line that clears\n# out SOURCES, so that the Qt Creator .pro modification is ineffectual.\nDISTFILES *= \"\"\nDISTFILES = \"\"\nHEADERS *= \"\"\nHEADERS = \"\"\nSOURCES *= \"\"\nSOURCES = \"\"\n\n# include various source .cpp files and header .h files in the build process\n# (student's source code can be put into project root, or src/ subfolder)\nSOURCES *= $$files($$PWD/lib/StanfordCPPLib/*.cpp, true)\nSOURCES *= $$files($$PWD/src/*.cpp, true)\nexists($$PWD/$$PROJECT_FILTER*.cpp) {\n    SOURCES *= $$files($$PWD/$$PROJECT_FILTER*.cpp)\n}\n\nexists($$PWD/lib/StanfordCPPLib/*.h) {\n    HEADERS *= $$files($$PWD/lib/StanfordCPPLib/*.h)\n}\nHEADERS *= $$files($$PWD/lib/StanfordCPPLib/*.h, true)\nHEADERS *= $$files($$PWD/src/*.h, true)\nexists($$PWD/$$PROJECT_FILTER*.h) {\n    HEADERS *= $$files($$PWD/$$PROJECT_FILTER*.h)\n}\n\n# directories examined by Qt Creator when student writes an #include statement\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/collections/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/graphics/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/io/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/system/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/util/\nexists($$PWD/lib/StanfordCPPLib/autograder/*) {\n    INCLUDEPATH *= $$PWD/lib/StanfordCPPLib/autograder/\n}\nINCLUDEPATH *= $$PWD/src/\nINCLUDEPATH *= $$PWD/\nexists($$PWD/src/autograder/$$PROJECT_FILTER/*.h) {\n    INCLUDEPATH *= $$PWD/src/autograder/$$PROJECT_FILTER/\n}\nexists($$PWD/src/test/*.h) {\n    INCLUDEPATH *= $$PWD/src/test/\n}\n\n# directories listed as \"Other files\" in left Project pane of Qt Creator\nexists($$PWD/res/*) {\n    OTHER_FILES *= $$files($$PWD/res/*, true)\n}\nexists($$PWD/*.txt) {\n    OTHER_FILES *= $$files($$PWD/*.txt)\n}\nexists($$PWD/input/*) {\n    OTHER_FILES *= $$files($$PWD/input/*, true)\n}\nexists($$PWD/output/*) {\n    OTHER_FILES *= $$files($$PWD/output/*, true)\n}\n\n###############################################################################\n# END SECTION FOR SPECIFYING SOURCE/LIBRARY/RESOURCE FILES OF PROJECT         #\n###############################################################################\n\n\n###############################################################################\n# BEGIN SECTION FOR SPECIFYING COMPILER/LINKER FLAGS AND LIBRARIES            #\n###############################################################################\n\n# set up flags for the C++ compiler\n# (In general, many warnings/errors are enabled to tighten compile-time checking.\n# A few overly pedantic/confusing errors are turned off for simplicity.)\nCONFIG += no_include_pwd         # make sure we do not accidentally #include files placed in 'resources'\nCONFIG += sdk_no_version_check   # removes spurious warnings on Mac OS X\n# CONFIG += warn_off\n\n# gives us a bit more precision about which errors are printed\nQMAKE_CFLAGS_WARN_ON -= -Wall\nQMAKE_CFLAGS_WARN_ON -= -Wextra\nQMAKE_CFLAGS_WARN_ON -= -W\nQMAKE_CXXFLAGS_WARN_ON -= -Wall\nQMAKE_CXXFLAGS_WARN_ON -= -Wextra\nQMAKE_CXXFLAGS_WARN_ON -= -W\n\nwin32 {\n    # some Windows systems have old MinGW compilers, so be safe and use C++11\n    CONFIG += c++11\n} else {\n    # Mac/Linux should support the latest C++ features\n    CONFIG += c++14\n}\n\n# uncomment this if you want to dump the preprocessor output into the .o files\n# (useful when debugging advanced preprocessor hacking)\n# QMAKE_CXXFLAGS += -E\n\nQMAKE_CXXFLAGS += -Wall\n#QMAKE_CXXFLAGS += -Wextra\nQMAKE_CXXFLAGS += -Wcast-align\n#QMAKE_CXXFLAGS += -Wfloat-equal\nQMAKE_CXXFLAGS += -Wformat=2\nQMAKE_CXXFLAGS += -Wlogical-op\nQMAKE_CXXFLAGS += -Wno-missing-field-initializers\nQMAKE_CXXFLAGS += -Wno-old-style-cast\nQMAKE_CXXFLAGS += -Wno-sign-compare\nQMAKE_CXXFLAGS += -Wno-sign-conversion\nQMAKE_CXXFLAGS += -Wno-write-strings\nQMAKE_CXXFLAGS += -Wreturn-type\nQMAKE_CXXFLAGS += -Werror=return-type\nQMAKE_CXXFLAGS += -Werror=uninitialized\nQMAKE_CXXFLAGS += -Wunreachable-code\nQMAKE_CXXFLAGS += -Wunused-parameter\nexists($$PWD/lib/autograder/*.h) | exists($$PWD/lib/StanfordCPPLib/autograder/$$PROJECT_FILTER/*.h) | exists($$PWD/lib/autograder/$$PROJECT_FILTER/*.cpp) {\n    # omit some warnings/errors in autograder projects\n    # (largely because the Google Test framework violates them a ton of times)\n    QMAKE_CXXFLAGS += -Wno-deprecated\n    QMAKE_CXXFLAGS += -Wno-reorder\n    QMAKE_CXXFLAGS += -Wno-unused-function\n    QMAKE_CXXFLAGS += -Wno-useless-cast\n}\n\n# additional flags for Windows\nwin32 {\n    LIBS += -lDbghelp\n    LIBS += -lbfd\n    LIBS += -limagehlp\n    cache()\n} else {\n    # flags that don't work on Windows MinGW compiler\n    QMAKE_CXXFLAGS += -Wno-unused-const-variable\n    LIBS += -ldl\n}\n\n# additional flags for Mac OS X\nmacx {\n    # calling cache() reduces warnings on Mac OS X systems\n    cache()\n    QMAKE_MAC_SDK = macosx\n}\n\n# additional flags for Linux\nunix:!macx {\n    cache()\n}\n\n# libraries for all OSes\nLIBS += -lpthread\n\n# additional flags for clang compiler (default on Mac)\nCOMPILERNAME = $$QMAKE_CXX\nCOMPILERNAME ~= s|.*/|\nequals(COMPILERNAME, clang++) {\n    QMAKE_CXXFLAGS += -Wempty-init-stmt\n    QMAKE_CXXFLAGS += -Wignored-qualifiers\n    QMAKE_CXXFLAGS += -Winitializer-overrides\n    QMAKE_CXXFLAGS += -Wmissing-field-initializers\n    QMAKE_CXXFLAGS += -Wmissing-method-return-type\n    QMAKE_CXXFLAGS += -Wnull-pointer-arithmetic\n    QMAKE_CXXFLAGS += -Wsemicolon-before-method-body\n    QMAKE_CXXFLAGS += -Wno-format-nonliteral\n    QMAKE_CXXFLAGS += -Wno-inconsistent-missing-override\n    QMAKE_CXXFLAGS += -Wno-overloaded-virtual\n    QMAKE_CXXFLAGS += -Wno-unknown-warning-option\n}\n\n# set up configuration flags used internally by the Stanford C++ libraries\n# These flags are all optional but can simplify project configuration.\n# (setting x/y to 999999 centers the window)\n# (see platform.cpp/h for descriptions of some of these flags)\n\n# wrapper name for 'main' function (needed so student can write 'int main'\n# but our library can grab the actual main function to initialize itself)\nDEFINES += SPL_REPLACE_MAIN_FUNCTION=1\nDEFINES += main=qMain\n\n# x/y location and w/h of the graphical console window; set to -1 to center\nDEFINES += SPL_CONSOLE_X=-1\nDEFINES += SPL_CONSOLE_Y=-1\nDEFINES += SPL_CONSOLE_WIDTH=900\nDEFINES += SPL_CONSOLE_HEIGHT=550\n\n# font size of the font in the graphical console window; can also be set via window menu\n#DEFINES += SPL_CONSOLE_FONTSIZE=18\n\n# echo graphical console onto the plain text console as well?\nDEFINES += SPL_CONSOLE_ECHO\n\n# quit the C++ program when the graphical console is closed?\nDEFINES += SPL_CONSOLE_EXIT_ON_CLOSE\n\n# crash if the .pro is older than the minimum specified in version.h? (SPL_PROJECT_VERSION)\nDEFINES += SPL_VERIFY_PROJECT_VERSION\n\n# allow clients to access the internal data inside the heap of PriorityQueue?\n# (used for some practice exam exercises/demos)\nDEFINES += SPL_PQUEUE_ALLOW_HEAP_ACCESS\n\n# should toString / << of a PriorityQueue display the elements in sorted order,\n# or in heap internal order? the former is more expected by client; the latter\n# is faster and avoids a deep-copy\nDEFINES += SPL_PQUEUE_PRINT_IN_HEAP_ORDER\n\n# flag to throw exceptions when a collection iterator is used after it has\n# been invalidated (e.g. if you remove from a Map while iterating over it)\nDEFINES += SPL_THROW_ON_INVALID_ITERATOR\n\n# flag to add members like 'cost', 'visited', etc. to BasicGraph Vertex/Edge\n# (we are going to disable these to force more interesting implementations)\n# DEFINES += SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n\n# should we throw an error() when operator >> fails on a collection?\n# for years this was true, but the C++ standard says you should just silently\n# set the fail bit on the stream and exit, so that has been made the default.\n# DEFINES += SPL_ERROR_ON_STREAM_EXTRACT\n\n# scale up the console window on high-DPI screens?\n# DEFINES += SPL_SCALE_HIGH_DPI_SCREEN\n\n# is the .cpp portion of the library merged into a single .cpp file\n# to speed up compilation?\nDEFINES += SPL_MERGED_LIBRARY_SINGLE_FILE\n\n# should we attempt to precompile the Qt moc_*.cpp files for speed?\nDEFINES += SPL_PRECOMPILE_QT_MOC_FILES\n\n# build-specific options (debug vs release)\n\n# options for the 'debug' target (default):\n# use no optimization, generate debugger symbols,\n# and catch/print to console any uncaught exceptions thrown by the program\nCONFIG(debug, debug|release) {\n    QMAKE_CXXFLAGS += -g3\n    QMAKE_CXXFLAGS += -fno-inline\n    QMAKE_CXXFLAGS += -fno-omit-frame-pointer\n\n    unix:!macx {\n        equals(COMPILERNAME, g++) {\n            # on Linux g++, these flags help us gather line numbers for stack traces\n            QMAKE_CXXFLAGS += -rdynamic\n            QMAKE_CXXFLAGS += -export-dynamic\n            QMAKE_CXXFLAGS += -Wl,--export-dynamic\n            QMAKE_LFLAGS += -export-dynamic\n            QMAKE_LFLAGS += -rdynamic\n        }\n    }\n    unix:macx {\n        equals(COMPILERNAME, clang++) {\n            QMAKE_CXXFLAGS += -Wno-unused-command-line-argument\n            QMAKE_CXXFLAGS += -Wl,-export_dynamic\n            QMAKE_CXXFLAGS += -Wl,-export-dynamic\n            QMAKE_CXXFLAGS += -Wl,--export-dynamic\n            QMAKE_LFLAGS += -rdynamic\n            QMAKE_LFLAGS += -Wl,-no_pie\n        }\n    }\n\n    # print details about uncaught exceptions with red error text / stack trace\n    DEFINES += SPL_CONSOLE_PRINT_EXCEPTIONS\n}\n\n# options for the 'release' target:\n# enable some compiler optimizations, and\n# make it statically linked so it is a stand-alone executable\nCONFIG(release, debug|release) {\n    QMAKE_CXXFLAGS += -O2\n    # commenting out -static because it doesn't link to Qt libraries properly\n    #QMAKE_LFLAGS += -static\n\n    macx {\n        QMAKE_POST_LINK += 'macdeployqt $${OUT_PWD}/$${TARGET}.app'\n    }\n    unix:!macx {\n        QMAKE_LFLAGS += -static-libgcc\n        QMAKE_LFLAGS += -static-libstdc++\n    }\n    win32 {\n        TARGET_PATH = $${OUT_PWD}/release/$${TARGET}.exe\n        TARGET_PATH ~= s,/,\\\\,g\n\n        OUT_PATH = $${OUT_PWD}/\n        OUT_PATH ~= s,/,\\\\,g\n\n        QMAKE_LFLAGS += -static-libgcc\n        QMAKE_LFLAGS += -static-libstdc++\n        QMAKE_POST_LINK += copy '\"'$${TARGET_PATH}'\"' '\"'$${OUT_PATH}'\"'\n    }\n}\n\n###############################################################################\n# END SECTION FOR SPECIFYING COMPILER/LINKER FLAGS AND LIBRARIES              #\n###############################################################################\n\n\n###############################################################################\n# BEGIN SECTION FOR CS 106B/X AUTOGRADER PROGRAMS                             #\n###############################################################################\n\n# settings specific to CS 106 B/X auto-grading programs; do not modify\nexists($$PWD/lib/autograder/*.h) | exists($$PWD/lib/StanfordCPPLib/autograder/*.h) | exists($$PWD/src/autograder/$$PROJECT_FILTER/*.cpp) {\n    # include the various autograder source code and libraries in the build process\n    exists($$PWD/lib/autograder/*.cpp) {\n        SOURCES *= $$files($$PWD/lib/autograder/*.cpp, true)\n    }\n    exists($$PWD/lib/autograder/*.h) {\n        HEADERS *= $$files($$PWD/lib/autograder/*.h, true)\n    }\n    exists($$PWD/lib/autograder/*) {\n        INCLUDEPATH *= $$PWD/lib/autograder/\n    }\n    exists($$PWD/lib/StanfordCPPLib/autograder/*) {\n        INCLUDEPATH *= $$PWD/lib/StanfordCPPLib/autograder/\n    }\n    exists($$PWD/src/autograder/*.h) {\n        INCLUDEPATH *= $$PWD/src/autograder/\n    }\n    exists($$PWD/src/autograder/$$PROJECT_FILTER/*.h) {\n        INCLUDEPATH *= $$PWD/src/autograder/$$PROJECT_FILTER/\n    }\n\n    DEFINES += SPL_AUTOGRADER_MODE\n\n    # define the style of autograder you want to use (GUI vs console)\n    DEFINES += SPL_GRAPHICAL_AUTOGRADER\n    # DEFINES += SPL_CONSOLE_AUTOGRADER\n\n    # a check to ensure that required autograder resources are present in this project\n    !exists($$PWD/lib/iconstrip-autograder.png) {\n        message(\"\")\n        message(*******************************************************************)\n        message(*** ERROR: Stanford library cannot find autograder image strip file:)\n        message(*** lib/iconstrip-autograder.png)\n        message(*** This project cannot run without this file present.)\n        message(*** Place the file into your lib/ folder and try again.)\n        message(*******************************************************************)\n        message(\"\")\n        error(Exiting.)\n    }\n}\n###############################################################################\n# END SECTION FOR CS 106B/X AUTOGRADER PROGRAMS                               #\n###############################################################################\n\n\n###############################################################################\n# BEGIN SECTION FOR DEFINING HELPER FUNCTIONS FOR RESOURCE COPYING            #\n###############################################################################\n\nCOPY_RESOURCE_FILES_INPUT = \"\"\n\nwin32 {\n    # copy addr2line exe program(s) to capture stack traces on Windows\n    exists($$PWD/lib/*.exe) {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/lib/*.exe)\n    }\n    # optional .dll files for network features on Windows\n    exists($$PWD/lib/*.dll) {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/lib/*.dll)\n    }\n}\n# copy icons and image strips for library GUI/console windows\nexists($$PWD/lib/*.png) {\n    COPY_RESOURCE_FILES_INPUT += $$files($$PWD/lib/*.png)\n}\nexists($$PWD/*.txt) {\n    COPY_RESOURCE_FILES_INPUT += $$files($$PWD/*.txt)\n}\nexists($$PWD/res/*) {\n    win32 {\n        exists($$PWD/res/*/*) {\n            # this will preserve the nested res/ directory structure on Windows,\n            # at the unfortunate cost of copying res/ to build dir on every run;\n            # recommended: avoid res subfolders to avoid this penalty on Windows\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/res)\n        } else {\n            # res/ with no subdirectories will properly be copied only on modification\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/res/*.*)\n        }\n    } else {\n        # Mac/Linux have proper recursive file-copying semantics in all cases\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/res/*, true)\n    }\n}\n# input/ and output/ have same nested subfolder issue as res/\nexists($$PWD/input/*) {\n    win32 {\n        exists($$PWD/input/*/*) {\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/input)\n        } else {\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/input/*.*)\n        }\n    } else {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/input, true)\n    }\n}\nexists($$PWD/output/*) {\n    win32 {\n        exists($$PWD/output/*/*) {\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/output)\n        } else {\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/output/*.*)\n        }\n    } else {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/output, true)\n    }\n}\nexists($$PWD/lib/autograder/*.h) | exists($$PWD/lib/StanfordCPPLib/autograder/*.h) | exists($$PWD/src/autograder/$$PROJECT_FILTER/*.cpp) {\n    # in autograder projects, copy over student's .cpp and .h files for possible style checking\n    exists($$PWD/*.cpp) {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/*.cpp)\n    }\n    exists($$PWD/*.h) {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/*.h)\n    }\n}\n\n# platform-specific commands to copy files and folders to build directory\ncopy_resource_files.name = Copy resource files to the build directory\nwin32 {\n    # https://support.microsoft.com/en-us/help/289483/switches-that-you-can-use-with-xcopy-and-xcopy32-commands\n    # /s - copy subfolders\n    # /q - quiet (no verbose output)\n    # /y - overwrite without prompting\n    # /i - if destination does not exist and copying more than one file, assumes destination is a folder\n    copy_resource_files.commands = xcopy /s /q /y ${QMAKE_FILE_IN}\n} else {\n    copy_resource_files.commands = cp -rf ${QMAKE_FILE_IN} .\n}\n# copy_resource_files.commands = ${COPY_FILE} ${QMAKE_FILE_IN} ${QMAKE_FILE_OUT}\ncopy_resource_files.input = COPY_RESOURCE_FILES_INPUT\ncopy_resource_files.output = $${OUT_PWD}/${QMAKE_FILE_BASE}${QMAKE_FILE_EXT}\ncopy_resource_files.CONFIG = no_link no_clean target_predeps\nQMAKE_EXTRA_COMPILERS += copy_resource_files\n\n###############################################################################\n# END SECTION FOR DEFINING HELPER FUNCTIONS FOR RESOURCE COPYING              #\n###############################################################################\n\n# END OF FILE (this should be line #560; if not, your .pro has been changed!)\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/autograder/assertions.h",
    "content": "/*\n * File: assertions.h\n * ------------------\n * This file declares a series of JUnit-like assert macros.\n * These are meant to work similarly to the ones built into GoogleTest\n * but with more JUnit-like syntax.\n * These macros also alert our graphical unit test runner UI so that it\n * can show the results in the GUI for the user.\n * \n * @author Marty Stepp\n * @version 2018/11/14\n * - added assertEqualsPointer\n * @version 2018/01/23\n * - fixed bugs with assertThrows* macros\n * @version 2017/12/12\n * - added assertEqualsCollectionDouble\n * @version 2016/10/28\n * - added assertSimilarImage\n * @version 2016/09/22\n * - added () parentheses around all macro variable usages\n * @version 2016/08/02\n * - added assertEqualsImage\n * @version 2014/11/24\n * - initial version\n * @since 2014/11/24\n */\n\n#ifndef _assertions_h\n#define _assertions_h\n\n#define INTERNAL_INCLUDE 1\n#include \"gtest.h\"\n#define INTERNAL_INCLUDE 1\n#include \"autograder.h\"\n#define INTERNAL_INCLUDE 1\n#include \"diff.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gbufferedimage.h\"\n#undef INTERNAL_INCLUDE\n\n#define TEST_FAIL_PREFIX std::string(\"Test case failed: \")\n#define FAIL_PREFIX      std::string(\"Assertion failed: \")\n\n#define assertDiff(msg, a, b) \\\n    stanfordcpplib::autograder::Autograder::instance()->setFailDetails(stanfordcpplib::autograder::UnitTestDetails( \\\n        stanfordcpplib::autograder::UnitTestType::TEST_ASSERT_DIFF, \\\n        (msg), (a), (b), \"diff\", \\\n        diff::DIFF_DEFAULT_FLAGS, \\\n        diff::diffPass((a), (b)))); \\\n    EXPECT_TRUE(diff::diffPass((a), (b)))\n\n#define assertDiffFlags(msg, a, b, flags) \\\n    stanfordcpplib::autograder::Autograder::instance()->setFailDetails(stanfordcpplib::autograder::UnitTestDetails( \\\n        stanfordcpplib::autograder::UnitTestType::TEST_ASSERT_DIFF, \\\n        (msg), (a), (b), \"diff\", \\\n        flags, \\\n        diff::diffPass((a), (b), (flags)))); \\\n    EXPECT_TRUE(diff::diffPass((a), (b), (flags)))\n\n#define assertDiffPass(msg, a, b) \\\n    stanfordcpplib::autograder::Autograder::instance()->setFailDetails(stanfordcpplib::autograder::UnitTestDetails( \\\n        stanfordcpplib::autograder::UnitTestType::TEST_ASSERT_DIFF, \\\n        (msg), (a), (b), \"diff\", true));\n\n// general assertEquals macro (better to use assertEqualsFoo for various types)\n#define assertEquals(msg, a, b) \\\n    stanfordcpplib::autograder::Autograder::instance()->setFailDetails(stanfordcpplib::autograder::UnitTestDetails( \\\n        stanfordcpplib::autograder::UnitTestType::TEST_ASSERT_EQUALS, \\\n        (msg), (a), (b), \"T\", ((a) == (b)))); \\\n    EXPECT_EQ((a), (b))\n\n// 'quiet' version, only sends to backend/GUI if failed for efficiency\n// (needed when doing a ton of assertions in one program)\n#define assertEqualsQ(msg, a, b) \\\n    if ((a) != (b)) { \\\n    stanfordcpplib::autograder::Autograder::instance()->setFailDetails(stanfordcpplib::autograder::UnitTestDetails( \\\n        stanfordcpplib::autograder::UnitTestType::TEST_ASSERT_EQUALS, \\\n        (msg), (a), (b), \"T\", ((a) == (b)))); \\\n    } \\\n    EXPECT_EQ((a), (b))\n\n// hard-failure on assertion fail\n#define assertEqualsF(msg, a, b) \\\n    stanfordcpplib::autograder::Autograder::instance()->setFailDetails(stanfordcpplib::autograder::UnitTestDetails( \\\n        stanfordcpplib::autograder::UnitTestType::TEST_ASSERT_EQUALS, \\\n        (msg), (a), (b), \"T\", ((a) == (b)))); \\\n    ASSERT_EQ((a), (b))\n\n#define assertEqualsFQ(msg, a, b) \\\n    if ((a) != (b)) { \\\n        stanfordcpplib::autograder::Autograder::instance()->setFailDetails(stanfordcpplib::autograder::UnitTestDetails( \\\n            stanfordcpplib::autograder::UnitTestType::TEST_ASSERT_EQUALS, \\\n            (msg), (a), (b), \"T\", ((a) == (b)))); \\\n    } \\\n    ASSERT_EQ((a), (b))\n\n#define assertEqualsPointer(msg, a, b) \\\n    stanfordcpplib::autograder::Autograder::instance()->setFailDetails(stanfordcpplib::autograder::UnitTestDetails( \\\n        stanfordcpplib::autograder::UnitTestType::TEST_ASSERT_EQUALS, \\\n        (msg), static_cast<void*>(a), static_cast<void*>(b), \"pointer\", ((a) == (b)))); \\\n    EXPECT_EQ((a), (b))\n\n#define assertEqualsString(msg, a, b) \\\n    stanfordcpplib::autograder::Autograder::instance()->setFailDetails(stanfordcpplib::autograder::UnitTestDetails( \\\n        stanfordcpplib::autograder::UnitTestType::TEST_ASSERT_EQUALS, \\\n        (msg), (a), (b), \"string\", ((a) == (b)))); \\\n    EXPECT_EQ((a), (b))\n\n#define assertEqualsCString(msg, a, b) \\\n    stanfordcpplib::autograder::Autograder::instance()->setFailDetails(stanfordcpplib::autograder::UnitTestDetails( \\\n        stanfordcpplib::autograder::UnitTestType::TEST_ASSERT_EQUALS, \\\n        (msg), (a), (b), \"string\", std::string((a)) == std::string((b)))); \\\n    EXPECT_EQ((a), (b))\n\n#define assertEqualsInt(msg, a, b) \\\n    stanfordcpplib::autograder::Autograder::instance()->setFailDetails(stanfordcpplib::autograder::UnitTestDetails( \\\n        stanfordcpplib::autograder::UnitTestType::TEST_ASSERT_EQUALS, \\\n        (msg), integerToString((a)), integerToString((b)), \"int\", ((a) == (b)))); \\\n    EXPECT_EQ((a), (b))\n\n#define assertEqualsBool(msg, a, b) \\\n    stanfordcpplib::autograder::Autograder::instance()->setFailDetails(stanfordcpplib::autograder::UnitTestDetails( \\\n        stanfordcpplib::autograder::UnitTestType::TEST_ASSERT_EQUALS, \\\n        (msg), boolToString((a)), boolToString((b)), \"bool\", ((a) == (b)))); \\\n    EXPECT_EQ((a), (b))\n\n#define assertEqualsCollection(msg, a, b) \\\n    stanfordcpplib::autograder::Autograder::instance()->setFailDetails(stanfordcpplib::autograder::UnitTestDetails( \\\n        stanfordcpplib::autograder::UnitTestType::TEST_ASSERT_EQUALS, \\\n        (msg), ((a).toString()), ((b).toString()), \"object\", ((a) == (b)))); \\\n    EXPECT_EQ((a), (b))\n\n#define assertEqualsCollectionDouble(msg, a, b) \\\n    stanfordcpplib::autograder::Autograder::instance()->setFailDetails(stanfordcpplib::autograder::UnitTestDetails( \\\n        stanfordcpplib::autograder::UnitTestType::TEST_ASSERT_EQUALS, \\\n        (msg), ((a).toString()), ((b).toString()), \"object\", (stanfordcpplib::collections::equalsDouble((a), (b))))); \\\n    EXPECT_EQ((a).toString(), (b).toString())\n\n#define assertEqualsDouble(msg, a, b) \\\n    stanfordcpplib::autograder::Autograder::instance()->setFailDetails(stanfordcpplib::autograder::UnitTestDetails( \\\n        stanfordcpplib::autograder::UnitTestType::TEST_ASSERT_NEAR, \\\n        (msg), realToString((a)), realToString((b)), \"double\", \\\n        ((a)-(b)) <= 0.001 && ((a)-(b)) >= -0.001)); \\\n    EXPECT_NEAR((a), (b), 0.001)\n\n#define assertNotEquals(msg, a, b) \\\n    stanfordcpplib::autograder::Autograder::instance()->setFailDetails(stanfordcpplib::autograder::UnitTestDetails( \\\n        stanfordcpplib::autograder::UnitTestType::TEST_ASSERT_NOT_EQUALS, \\\n        (msg), (a), (b), \"T\", ((a) != (b)))); \\\n    EXPECT_NE((a), (b))\n\n#define assertNotEqualsString(msg, a, b) \\\n    stanfordcpplib::autograder::Autograder::instance()->setFailDetails(stanfordcpplib::autograder::UnitTestDetails( \\\n        stanfordcpplib::autograder::UnitTestType::TEST_ASSERT_NOT_EQUALS, \\\n        (msg), (a), (b), \"string\", ((a) != (b)))); \\\n    EXPECT_NE((a), (b))\n\n#define assertNotEqualsInt(msg, a, b) \\\n    stanfordcpplib::autograder::Autograder::instance()->setFailDetails(stanfordcpplib::autograder::UnitTestDetails( \\\n        stanfordcpplib::autograder::UnitTestType::TEST_ASSERT_NOT_EQUALS, \\\n        (msg), integerToString((a)), integerToString((b)), \"int\", ((a) != (b)))); \\\n    EXPECT_NE((a), (b))\n\n#define assertNotEqualsBool(msg, a, b) \\\n    stanfordcpplib::autograder::Autograder::instance()->setFailDetails(stanfordcpplib::autograder::UnitTestDetails( \\\n        stanfordcpplib::autograder::UnitTestType::TEST_ASSERT_NOT_EQUALS, \\\n        (msg), boolToString((a)), boolToString((b)), \"bool\", ((a) != (b)))); \\\n    EXPECT_NE((a), (b))\n\n#define assertDoubleNear(msg, a, b, t) \\\n    stanfordcpplib::autograder::Autograder::instance()->setFailDetails(stanfordcpplib::autograder::UnitTestDetails( \\\n        stanfordcpplib::autograder::UnitTestType::TEST_ASSERT_NEAR, \\\n        (msg), realToString(a), realToString(b), \"double\", \\\n        ((a)-(b)) <= (t) && ((a)-(b)) >= -(t))); \\\n    EXPECT_NEAR((a), (b), (t))\n#define assertNear assertDoubleNear\n\n#define assertTrue(msg, b) \\\n    stanfordcpplib::autograder::Autograder::instance()->setFailDetails(stanfordcpplib::autograder::UnitTestDetails( \\\n        stanfordcpplib::autograder::UnitTestType::TEST_ASSERT_TRUE, \\\n        (msg), boolToString(true), boolToString(b), \"bool\", \\\n        (b))); \\\n    EXPECT_TRUE((b))\n\n#define assertFalse(msg, b) \\\n    stanfordcpplib::autograder::Autograder::instance()->setFailDetails(stanfordcpplib::autograder::UnitTestDetails( \\\n        stanfordcpplib::autograder::UnitTestType::TEST_ASSERT_FALSE, \\\n        (msg), boolToString(false), boolToString(b), \"bool\", \\\n        !(b))); \\\n    EXPECT_FALSE((b))\n\n#define assertNotNull(msg, b) \\\n    stanfordcpplib::autograder::Autograder::instance()->setFailDetails(stanfordcpplib::autograder::UnitTestDetails( \\\n        stanfordcpplib::autograder::UnitTestType::TEST_ASSERT_NOT_NULL, \\\n        (msg), std::string(\"NULL\"), pointerToString((void*) b), \"pointer\", \\\n        (b != nullptr))); \\\n    EXPECT_NE(((void*) b), ((void*) nullptr))\n\n#define assertNull(msg, b) \\\n    stanfordcpplib::autograder::Autograder::instance()->setFailDetails(stanfordcpplib::autograder::UnitTestDetails( \\\n        stanfordcpplib::autograder::UnitTestType::TEST_ASSERT_NULL, \\\n        (msg), std::string(\"NULL\"), pointerToString((void*) b), \"pointer\", \\\n        (b == nullptr))); \\\n    EXPECT_EQ(((void*) b), ((void*) nullptr))\n\n#define assertFail(msg) \\\n    stanfordcpplib::autograder::Autograder::instance()->setFailDetails(stanfordcpplib::autograder::UnitTestDetails( \\\n        stanfordcpplib::autograder::UnitTestType::TEST_FAIL, \\\n        (msg))); \\\n    GTEST_FATAL_FAILURE_(std::string(msg).c_str())\n\n#define assertFailQuiet() \\\n    stanfordcpplib::autograder::Autograder::instance()->setFailDetails(stanfordcpplib::autograder::UnitTestDetails( \\\n        stanfordcpplib::autograder::UnitTestType::TEST_FAIL, \\\n        \"\")); \\\n    GTEST_FATAL_FAILURE_(\"\")\n\n#define assertPass(msg) \\\n    stanfordcpplib::autograder::Autograder::instance()->setFailDetails(stanfordcpplib::autograder::UnitTestDetails( \\\n        stanfordcpplib::autograder::UnitTestType::TEST_PASS, \\\n        (msg), true)); \\\n    GTEST_SUCCESS_((std::string(msg).c_str()))\n// JDZ accept either old or new style string, convert to C-string\n\n#define assertPassQuiet() \\\n    stanfordcpplib::autograder::Autograder::instance()->setFailDetails(stanfordcpplib::autograder::UnitTestDetails( \\\n        stanfordcpplib::autograder::UnitTestType::TEST_PASS, \\\n        \"\", true)); \\\n    GTEST_SUCCESS_(\"\")\n\n// JDZ: these not quite right -- setFailDetails to passed before knows whether exception thrown or not\n#define assertThrowsAny(msg, stmt) \\\n    stanfordcpplib::autograder::Autograder::instance()->setFailDetails(stanfordcpplib::autograder::UnitTestDetails( \\\n        stanfordcpplib::autograder::UnitTestType::TEST_EXCEPTION, \\\n        msg, true)); \\\n    EXPECT_ANY_THROW(stmt)\n#define assertThrows(msg, stmt, ex) \\\n    stanfordcpplib::autograder::Autograder::instance()->setFailDetails(stanfordcpplib::autograder::UnitTestDetails( \\\n        stanfordcpplib::autograder::UnitTestType::TEST_EXCEPTION, \\\n        msg, true)); \\\n    EXPECT_THROW(stmt, ex)\n#define assertNotThrows(msg, stmt, ex) \\\n    stanfordcpplib::autograder::Autograder::instance()->setFailDetails(stanfordcpplib::autograder::UnitTestDetails( \\\n        stanfordcpplib::autograder::UnitTestType::TEST_NOT_EXCEPTION, \\\n        msg, true)); \\\n    EXPECT_NO_THROW(stmt)\n\n// JDZ: if you have info on whether exception thrown or not, use this one\n#define assertDidThrow(msg, didThrow) \\\n    stanfordcpplib::autograder::Autograder::instance()->setFailDetails(stanfordcpplib::autograder::UnitTestDetails( \\\n        stanfordcpplib::autograder::UnitTestType::TEST_NOT_EXCEPTION, \\\n        msg, didThrow)); \\\n    EXPECT_TRUE(didThrow)\n\nvoid assertEqualsImage(const std::string& msg,\n                       GBufferedImage& imagefile1,\n                       GBufferedImage& imagefile2);\n\nvoid assertEqualsImage(const std::string& msg,\n                       const std::string& imagefile1,\n                       const std::string& imagefile2);\n\nvoid assertSimilarImage(const std::string& msg,\n                        GBufferedImage& image1,\n                        GBufferedImage& image2,\n                        int diffPixelTolerance = 0,\n                        int xmin = -1, int ymin = -1,\n                        int xmax = -1, int ymax = -1);\n\nvoid assertSimilarImage(const std::string& msg,\n                        const std::string& imagefile1,\n                        const std::string& imagefile2,\n                        int diffPixelTolerance = 0,\n                        int xmin = -1, int ymin = -1,\n                        int xmax = -1, int ymax = -1);\n\n#endif // _assertions_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/autograder/autograder.h",
    "content": "/*\n * File: autograder.h\n * ------------------\n * This file contains declarations of utility code used to help implement\n * autograder programs for grading student assignments.\n * \n * @author Marty Stepp\n * @version 2019/04/23\n * - reset std::cout/cerr flags on every test run\n * @version 2018/10/03\n * - refactored to Autograder virtual base class\n * @version 2016/12/01\n * - removed most \"current test case\" logic and replaced with testcase-specific logic\n * @version 2016/08/01\n * - added setExitEnabled(bool) function\n * @version 2014/10/31\n * - added graphical autograder support (setGraphicalUI)\n * @since 2014/10/14\n */\n\n#ifndef _autograder_h\n#define _autograder_h\n\n#include <iomanip>\n#include <iostream>\n#include <string>\n#define INTERNAL_INCLUDE 1\n#include \"map.h\"\n#define INTERNAL_INCLUDE 1\n#include \"set.h\"\n#define INTERNAL_INCLUDE 1\n#include \"vector.h\"\n\n#define INTERNAL_INCLUDE 1\n#include \"autogradertest.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gtest-marty.h\"\n#define INTERNAL_INCLUDE 1\n#include \"unittestdetails.h\"\n#undef INTERNAL_INCLUDE\n\n#define AUTOGRADER_DEFAULT_ABOUT_TEXT (std::string(\"CS 106 B/X Autograder Framework\\nDeveloped by Marty Stepp (stepp@cs.stanford.edu)\"))\n#define EXCEPTION_ERROR_MESSAGE (std::string(\"test threw an exception!\"))\n#define TIMEOUT_ERROR_MESSAGE (std::string(\"test timed out! possible infinite loop\"))\n\n/*\n * Default file name where late-day information is stored\n */\n#define LATE_DAYS_FILENAME \"lateDays.txt\"\n\n/*\n * Default file where XML information for a console input panel is stored\n */\n#define INPUT_PANE_FILENAME \"inputpanel.xml\"\n\n/*\n * A string printed between output sections for separation.\n */\n#define AUTOGRADER_OUTPUT_SEPARATOR \"====================================================================\"\n\n/*\n * max # of chars student's program can print before halted by autograder\n */\n#define MAX_STUDENT_OUTPUT 262144\n\nnamespace stanfordcpplib {\nnamespace autograder {\n\n\n/*\n * A structure containing information about custom callback buttons in the graphical UI.\n */\nstruct CallbackButtonInfo {\n    void (* func)();    // function to call when button is clicked\n    std::string text;   // button text\n    std::string icon;   // button icon\n};\n\n/*\n * A global structure containing state and flags and configuration for the autograder.\n */\nstruct AutograderFlags {\npublic:\n    std::string assignmentName;\n    std::string studentProgramFileName;\n    std::string currentCategoryName;\n    std::string currentTestCaseName;\n    std::string inputPanelFilename;\n    std::string startMessage;\n    std::string aboutText;\n    bool currentTestShouldRun;\n    Map<std::string, Set<std::string> > testsAdded;\n    Map<std::string, Timer> testTimers;\n    Set<std::string> testsThatShouldRun;\n\n    int failsToPrintPerTest;\n    int testNameWidth;\n    bool showInputPanel;\n    bool showLateDays;\n    bool graphicalUI;\n    Vector<std::string> styleCheckFiles;\n    Map<std::string, std::string> styleCheckFileMap;\n    void(* callbackStart)();\n    void(* callbackEnd)();\n    Vector<CallbackButtonInfo> callbackButtons;\n    \n    AutograderFlags();\n};\n\n/*\n * The main function called by the autograder to run the program.\n * Your autograder file should call this to initiate the grading process.\n */\nint autograderMain(int argc = 0, char** argv = nullptr);\n\n/*\n * e.g. date = \"13/Oct/2014 10:31:15\"\n */\nstd::string formatDate(const std::string& dateStr);\n\n/**\n * ...\n */\n/*abstract*/ class Autograder {\npublic:\n    virtual ~Autograder();\n\n    static Autograder* instance();\n\n    static void setInstance(Autograder* autograder);\n\n    virtual void addCategory(const std::string& categoryName, const std::string& categoryDescription = \"\") = 0;\n\n    virtual void addTest(const std::string& testName, const std::string& categoryName = \"\") = 0;\n\n    virtual bool autograderYesOrNo(std::string prompt, std::string reprompt = \"\", std::string defaultValue = \"\") = 0;\n\n    virtual bool containsCategory(const std::string& categoryName) = 0;\n\n    /**\n     * Called internally by autograder; do not use.\n     * @private\n     */\n    virtual bool currentTestShouldRun() const;\n\n    /**\n     * Displays a 'diff' betwen the given expected output and the given student output.\n     * Also optionally saves the diffs to a file and/or chops the number of lines shown.\n     */\n    virtual void displayDiffs(const std::string& expectedOutput, const std::string& studentOutput,\n                              const std::string& diffs, const std::string& diffFile = \"\",\n                              int truncateHeight = -1) = 0;\n\n    /**\n     * Called internally by autograder; do not use.\n     * @private\n     */\n    virtual std::string getCurrentCategoryName() const;\n\n    /**\n     * Called internally by autograder; do not use.\n     * @private\n     */\n    virtual std::string getCurrentTestCaseName() const;\n\n    /**\n     * Called internally by autograder; do not use.\n     * @private\n     */\n    virtual AutograderFlags& getFlags();\n\n    /**\n     * Returns true if setGraphicalUI was called with value true.  Initially false.\n     */\n    virtual bool isGraphicalUI() const = 0;\n\n    virtual int mainFunc() = 0;\n\n    virtual void resetStandardInputStreams();\n\n    virtual int runAllTestCases() = 0;\n\n    /**\n     * Runs a 'main' function, possibly feeding it cin input, and capture its cout output.\n     * Dump the output to a file if filename passed, and return output as a string.\n     */\n    virtual std::string runAndCapture(\n            int (* mainFunc)(),\n            const std::string& cinInput = \"\",\n            const std::string& outputFileName = \"\");\n\n    virtual void runStyleChecker() = 0;\n\n    virtual void runTest(stanfordcpplib::autograder::AutograderTest* test) = 0;\n\n    /**\n     * ...\n     */\n    virtual void setAboutMessage(const std::string& message);\n\n    /**\n     * Sets the assignment name to display in the console header.\n     */\n    virtual void setAssignmentName(const std::string& name);\n\n    /**\n     * Specifies a function to call once the automated tests are finished running.\n     * If null is passed, no function will be called.\n     */\n    virtual void setCallbackEnd(void(* func)());\n\n    /**\n     * Specifies a function to call before the automated tests start running.\n     * If null is passed, no function will be called.\n     */\n    virtual void setCallbackStart(void(* func)());\n\n    /**\n     * Called internally by autograder; do not use.\n     * @private\n     */\n    virtual void setCurrentCategoryName(const std::string& categoryName);\n\n    /**\n     * Called internally by autograder; do not use.\n     * @private\n     */\n    virtual void setCurrentTestCaseName(const std::string& testFullName);\n\n    /**\n     * Called internally by autograder; do not use.\n     * @private\n     */\n    virtual void setCurrentTestShouldRun(bool shouldRun);\n\n    /**\n     * Specifies details to show for a failed test case.\n     * Called internally by assertXxxx() macros.\n     */\n    virtual void setFailDetails(AutograderTest& test, const autograder::UnitTestDetails& deets) = 0;\n    virtual void setFailDetails(const autograder::UnitTestDetails& deets) = 0;\n\n    /**\n     * Sets the number of assertion failures to print in each individual test;\n     * defaults to 1 to avoid printing tons of hard-to-read output.\n     * Turn up if you want to see more/all of the assertion failures.\n     * Set it to <= 0 for no limit.\n     */\n    virtual void setFailsToPrintPerTest(int count);\n\n    /**\n     * Sets whether to show a GUI rather than printing test results to cout.\n     */\n    virtual void setGraphicalUI(bool value = true);\n\n    /**\n     * Enables/disables the helper window panel that pops up with\n     * buttons you can press to enter common user inputs.\n     * If no file name is passed, defaults to reading data from \"inputpanel.xml\".\n     */\n    virtual void setShowInputPanel(bool show, const std::string& filename = \"\");\n\n    /**\n     * Toggles whether to show the late_days.txt info for each student.\n     */\n    virtual void setShowLateDays(bool show);\n\n    /**\n     * Sets whether to show full details for each failed test.\n     */\n    virtual void setShowTestCaseFailDetails(bool show);\n\n    virtual void setStartMessage(const std::string& startMessage);\n\n    /**\n     * Sets the name of the student's program file.\n     * Useful if the assignment has only a single primary file of code.\n     */\n    virtual void setStudentProgramFileName(const std::string& filename);\n\n    /**\n     * Sets the number of tests that have been run and passed.\n     * This is kept track of automatically, but in certain cases,\n     * (most notably when the 'omit on pass' flag is set on a style checker),\n     * we want to override the currently visible counts.\n     */\n    virtual void setTestCounts(int passCount, int testCount, bool isStyleCheck) = 0;\n\n    virtual void setTestDetails(const std::string& testFullName, UnitTestDetails deets) = 0;\n\n    /**\n     * Sets the number of characters in the longest test case name's width;\n     * used to align the test case output in the console.\n     */\n    virtual void setTestNameWidth(int width);\n\n    virtual bool setTestResult(const std::string& testFullName, TestResult result) = 0;\n\n    virtual bool setTestRuntime(const std::string& testFullName, long ms) = 0;\n\n    /**\n     * Called internally by autograder; do not use.\n     * @private\n     */\n    virtual void setTestShouldRun(const std::string& testFullName, bool shouldRun);\n\n    /**\n     * Sets whether the autograder should display the contents of the lateDays.txt\n     * file to see whether the student turned in their assignment on time.\n     */\n    virtual void showLateDays(const std::string& filename = LATE_DAYS_FILENAME) = 0;\n\n    /**\n     * Shows output either as cout (if non-graphical UI) or on a pop-up dialog box (if graphical).\n     */\n    virtual void showOutput(const std::string& output, bool showIfGraphical = true, bool showIfConsole = true) = 0;\n    virtual void showOutput(std::ostringstream& output, bool showIfGraphical = true, bool showIfConsole = true);\n\n    /**\n     * Displays the contents of the given text file on the screen.\n     * Useful for cases when the student must submit a creative output file\n     * like mycolony.txt or mygrammar.txt.\n     */\n    virtual void showStudentTextFile(const std::string& filename, int maxWidth = 0, int maxHeight = 0) = 0;\n\n    /**\n     * Adds the given filename to the list of files to be style-checked.\n     * Uses the given style check XML rules for style checking.\n     * If no style check XML file name is passed, uses a default name\n     * based on the filename, by the formula:\n     * \"Foo.cpp\"   -> \"stylecheck-foo-cpp.xml\"\n     * \"Foo.bar.h\" -> \"stylecheck-foo-bar-h.xml\"\n     */\n    virtual void styleCheckAddFile(const std::string& filename, const std::string& styleCheckXmlFileName = \"\");\n\n    /**\n     * Called internally by autograder; do not use.\n     * @private\n     */\n    virtual bool testShouldRun(const std::string& testFullName) const;\n\nprotected:\n    static Autograder* _instance;\n\n    Autograder();\n\n    AutograderFlags _flags;\n    std::ios _iosCoutBackup;   // for saving cout/cerr state/flags between tests\n    std::ios _iosCerrBackup;\n}; // class Autograder\n\n} // namespace autograder\n} // namespace stanfordcpplib\n\n// for older programs\n#define INTERNAL_INCLUDE 1\n#include \"autogradercompat.h\"\n#undef INTERNAL_INCLUDE\n\n#endif // _autograder_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/autograder/autogradercompat.h",
    "content": "/*\n * File: autogradercompat.h\n * ------------------------\n * This file contains functions to make the autograder library more\n * backward-compatible with old autograder code.\n * \n * @author Marty Stepp\n * @version 2018/10/04\n * - initial version, copied from autograder.h\n */\n\n#ifndef _autogradercompat_h\n#define _autogradercompat_h\n\n#include <string>\n#define INTERNAL_INCLUDE 1\n#include \"autograder.h\"\n#undef INTERNAL_INCLUDE\n\nnamespace autograder {\n\nvoid addCallbackButton(void (* func)(), const std::string& text, const std::string& icon = \"\");\nvoid displayDiffs(const std::string& expectedOutput, const std::string& studentOutput,\n                  const std::string& diffs, const std::string& diffFile = \"\",\n                  int truncateHeight = -1);\nstd::string getCurrentCategoryName();\nstd::string getCurrentTestCaseName();\nbool currentTestShouldRun();\nstanfordcpplib::autograder::AutograderFlags& getFlags();\nbool isGraphicalUI();\nstd::string runAndCapture(\n        int (* mainFunc)(),\n        const std::string& cinInput = \"\",\n        const std::string& outputFileName = \"\");\nvoid setAboutMessage(const std::string& message);\nvoid setAssignmentName(const std::string& name);\nvoid setCallbackEnd(void(* func)());\nvoid setCallbackStart(void(* func)());\nvoid setCurrentCategoryName(const std::string& categoryName);\nvoid setCurrentTestCaseName(const std::string& testFullName);\nvoid setCurrentTestShouldRun(bool shouldRun);\nvoid setExitEnabled(bool enabled);\nbool exitEnabled();\nvoid setFailDetails(stanfordcpplib::autograder::AutograderTest& test,\n                    const stanfordcpplib::autograder::UnitTestDetails& deets);\nvoid setFailDetails(const stanfordcpplib::autograder::UnitTestDetails& deets);\nvoid setFailsToPrintPerTest(int count);\nvoid setGraphicalUI(bool value = true);\nvoid setShowInputPanel(bool show, const std::string& filename = \"\");\nvoid setShowLateDays(bool show);\nvoid setShowTestCaseFailDetails(bool show);\nvoid setStartMessage(const std::string& startMessage);\nvoid setStudentProgramFileName(const std::string& filename);\nvoid setTestCounts(int passCount, int testCount, bool isStyleCheck);\nvoid setTestNameWidth(int width);\nvoid setTestShouldRun(const std::string& testFullName, bool shouldRun);\nvoid showLateDays(const std::string& filename = LATE_DAYS_FILENAME);\nvoid showOutput(const std::string& output, bool showIfGraphical = true, bool showIfConsole = true);\nvoid showOutput(std::ostringstream& output, bool showIfGraphical = true, bool showIfConsole = true);\nvoid showStudentTextFile(const std::string& filename, int maxWidth = 0, int maxHeight = 0);\nvoid styleCheckAddFile(const std::string& filename, const std::string& styleCheckXmlFileName = \"\");\nbool testShouldRun(const std::string& testFullName);\n} // namespace autograder\n\n#endif // _autograder_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/autograder/autogradertest.h",
    "content": "/*\n * File: autogradertest.h\n * ----------------------\n * This file contains the declaration of a class that extends GoogleTest's\n * Test class to add some functionality such as timeouts and a list of known\n * test names.\n * \n * @author Marty Stepp\n * @version 2014/11/24\n * @since 2014/11/24\n */\n\n#ifndef _autogradertest_h\n#define _autogradertest_h\n\n#include <map>\n#include <string>\n#include <vector>\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gtest.h\"\n#define INTERNAL_INCLUDE 1\n#include \"timer.h\"\n#undef INTERNAL_INCLUDE\n\nnamespace stanfordcpplib {\nnamespace autograder {\n\nclass AutograderTest : public testing::Test {\npublic:\n    /*\n     * Constants for timeouts in ms\n     */\n    static int TIMEOUT_MS_DEFAULT;\n    static int TIMEOUT_MS_MIN;\n\n    /*\n     * Constant for whether each test should be run in its own thread by default.\n     */\n    static bool RUN_EACH_TEST_IN_THREAD_DEFAULT;\n\n    /*\n     * A list of all known test case names, grouped by category.\n     * Used to enable/disable categories to run.\n     */\n    static void addTestToList(const std::string& categoryName, const std::string& testName);\n    static const std::vector<std::string>& getAllCategories();\n    static const std::vector<std::string>& getAllTests(const std::string& categoryName = \"\");\n\n    /*\n     * get/set the default timeout values\n     */\n    static int getDefaultTimeout();\n    static void setDefaultTimeout(int timeoutMS);\n\n    virtual int getTestTimeout() const;\n    virtual void setTestTimeout(int ms);\n    \n    virtual std::string getName() const;\n    virtual std::string getCategory() const;\n    virtual std::string getFullName() const;   // \"CategoryName_TestName\"\n\n    /*\n     * Whether this test case should run.\n     * Will be true unless unchecked in GUI test case list.\n     */\n    virtual bool shouldRun();\n\n    /*\n     * Get/set whether this test case should spawn its own thread to run.\n     * Default true, but can be set false for specific tests or all tests.\n     */\n    virtual bool shouldRunInOwnThread();\n    virtual void setShouldRunInOwnThread(bool runInThread);\n\n    virtual void SetUp();\n    virtual void TearDown();\n    virtual void TestBody();   // override me\n    virtual void TestRealBody() throw(ErrorException);\n\nprotected:\n    std::string name;       // test's name\n    std::string category;   // test's category\n    int timeoutMS;          // test's timeout in milliseconds (0 for none)\n    bool runInThread;       // whether to run test in its own thread\n};\n\n} // namespace autograder\n} // namespace stanfordcpplib\n\n#endif // _autogradertest_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/autograder/consoleautograder.h",
    "content": "/*\n * File: consoleautograder.h\n * -------------------------\n *\n * @author Marty Stepp\n * @version 2018/10/03\n * - initial version, refactored from autograder.h/cpp\n * @since 2014/10/14\n */\n\n#ifndef _consoleautograder_h\n#define _consoleautograder_h\n\n#define INTERNAL_INCLUDE 1\n#include \"autograder.h\"\n#undef INTERNAL_INCLUDE\n\nnamespace stanfordcpplib {\nnamespace autograder {\n\n/**\n * ...\n */\nclass ConsoleAutograder : public Autograder {\npublic:\n    ConsoleAutograder();\n    virtual ~ConsoleAutograder() Q_DECL_OVERRIDE;\n    virtual void addCategory(const std::string& categoryName, const std::string& categoryDescription = \"\") Q_DECL_OVERRIDE;\n    virtual void addTest(const std::string& testName, const std::string& categoryName = \"\") Q_DECL_OVERRIDE;\n    virtual bool autograderYesOrNo(std::string prompt, std::string reprompt = \"\", std::string defaultValue = \"\") Q_DECL_OVERRIDE;\n    virtual bool containsCategory(const std::string& categoryName) Q_DECL_OVERRIDE;\n    virtual void displayDiffs(const std::string& expectedOutput, const std::string& studentOutput,\n                              const std::string& diffs, const std::string& diffFile = \"\",\n                              int truncateHeight = -1) Q_DECL_OVERRIDE;\n    virtual bool isGraphicalUI() const Q_DECL_OVERRIDE;\n    virtual int mainFunc() Q_DECL_OVERRIDE;\n    virtual int runAllTestCases() Q_DECL_OVERRIDE;\n    virtual void runStyleChecker() Q_DECL_OVERRIDE;\n    virtual void runTest(stanfordcpplib::autograder::AutograderTest* test) Q_DECL_OVERRIDE;\n    virtual void setFailDetails(AutograderTest& test, const autograder::UnitTestDetails& deets) Q_DECL_OVERRIDE;\n    virtual void setFailDetails(const autograder::UnitTestDetails& deets) Q_DECL_OVERRIDE;\n    virtual void setTestCounts(int passCount, int testCount, bool isStyleCheck) Q_DECL_OVERRIDE;\n    virtual void setTestDetails(const std::string& testFullName, UnitTestDetails deets) Q_DECL_OVERRIDE;\n    virtual bool setTestResult(const std::string& testFullName, TestResult result) Q_DECL_OVERRIDE;\n    virtual bool setTestRuntime(const std::string& testFullName, long ms) Q_DECL_OVERRIDE;\n    virtual void showLateDays(const std::string& filename = LATE_DAYS_FILENAME) Q_DECL_OVERRIDE;\n    virtual void showOutput(const std::string& output, bool showIfGraphical = true, bool showIfConsole = true) Q_DECL_OVERRIDE;\n    virtual void showStudentTextFile(const std::string& filename, int maxWidth = 0, int maxHeight = 0) Q_DECL_OVERRIDE;\n}; // class ConsoleAutograder\n\n\n} // namespace autograder\n} // namespace stanfordcpplib\n\n#endif // _consoleautograder_h\n\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/autograder/date.h",
    "content": "/*\n * date.h\n * ------\n * This \"header\" file declares our Date class and lists all of the members\n * each Date object will have, without writing the bodies of the functions or\n * constructor.  The bodies are implemented in Date.cpp.\n * Classes in C++ use this separation to make them reusable by many clients.\n * See date.cpp for detailed documentation of each member.\n */\n\n#ifndef _date_h\n#define _date_h\n\n#include <iostream>\n#include <string>\n\nenum Month {\n    JANUARY = 1,\n    FEBRUARY = 2,\n    MARCH = 3,\n    APRIL = 4,\n    MAY = 5,\n    JUNE = 6,\n    JULY = 7,\n    AUGUST = 8,\n    SEPTEMBER = 9,\n    OCTOBER = 10,\n    NOVEMBER = 11,\n    DECEMBER = 12\n};\n\nenum DayOfWeek {\n    SUNDAY = 0,\n    MONDAY = 1,\n    TUESDAY = 2,\n    WEDNESDAY = 3,\n    THURSDAY = 4,\n    FRIDAY = 5,\n    SATURDAY = 6\n};\n\nclass Date {\nprivate: \n    // member variables (fields) - the data inside each object\n    int day;\n    int month;\n    int year;\n    \npublic:\n    static const int DAYS_PER_WEEK;\n    static const int MONTHS_PER_YEAR;\n    \n    static int parseMonth(const std::string& month);\n    static int parseDay(const std::string& day);\n    \n    // constructor - initializes the state of newly created objects\n    Date();\n    Date(int y, int m, int d);\n    \n    // member functions (methods) - the behavior inside each object\n    int getDay() const;\n    int getDayOfWeek() const;\n    std::string getDayOfWeekName() const;\n    int getMonth() const;\n    std::string getMonthName() const;\n    int getYear() const;\n    int daysInMonth() const;\n    int daysInYear() const;\n    bool isLeapYear() const;\n    void previousDay();\n    void nextDay();\n};\n\n// overloaded operators\nbool operator <(const Date& d1, const Date& d2);\nbool operator >(const Date& d1, const Date& d2);\nbool operator <=(const Date& d1, const Date& d2);\nbool operator >=(const Date& d1, const Date& d2);\nbool operator ==(const Date& d1, const Date& d2);\nbool operator !=(const Date& d1, const Date& d2);\nDate& operator ++(Date& d);\nDate operator ++(const Date& d, int);\nDate& operator --(Date& d);\nDate operator --(const Date& d, int);\nstd::ostream& operator <<(std::ostream& out, const Date& d);\nstd::istream& operator >>(std::istream& out, Date& d);\n\n#endif // _date_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/autograder/gtest-marty.h",
    "content": "/*\n * File: gtest-marty.h\n * -------------------\n * This file contains declarations of utility code to augment the functionality\n * of the Google Test C++ unit testing framework.\n * \n * @author Marty Stepp\n * @version 2018/01/23\n * - fixed bug with first run test case name not being set properly\n * @version 2016/08/02\n * - added getTestName and getCategoryName methods for unit tests\n * @version 2014/11/24\n * - heavy refactor; moved code out to autogradertest, testresultprinter, threading, unittestdetails\n * @version 2014/10/31\n * - added code for graphical test runner UI\n * @version 2014/10/14\n * - moved some code out to diff.h and stylecheck.h\n */\n\n#ifndef _gtest_marty_h\n#define _gtest_marty_h\n\n#include <string>\n#define INTERNAL_INCLUDE 1\n#include \"assertions.h\"\n//#define INTERNAL_INCLUDE 1\n//#include \"autograder.h\"\n//#define INTERNAL_INCLUDE 1\n//#include \"autogradertest.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gtest.h\"\n#undef INTERNAL_INCLUDE\n\nclass ErrorException;\n\n/*\n * A big nasty macro that defines a subclass of AutograderTest to\n * represent a single unit test.\n */\n#define GTEST_TEST_TIMED(test_case_name, test_name, parent_class, timeoutMS, parent_id) \\\n    class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) : public parent_class { \\\n    public: \\\n        GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() { \\\n            this->name = #test_name; \\\n            this->category = #test_case_name; \\\n        } \\\n        std::string getCategoryName() { return this->category; } \\\n        std::string getTestName() { return this->name; } \\\n        std::string getTestFullName() { return this->category.empty() ? this->name : (this->category + \"_\" + this->name); } \\\n    private: \\\n        virtual void TestRealBody() throw (ErrorException); \\\n        virtual void TestBody(); \\\n        static ::testing::TestInfo* const test_info_ GTEST_ATTRIBUTE_UNUSED_; \\\n        GTEST_DISALLOW_COPY_AND_ASSIGN_(GTEST_TEST_CLASS_NAME_(test_case_name, test_name)); \\\n    }; \\\n\\\n    ::testing::TestInfo* const GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \\\n      ::test_info_ = \\\n        ::testing::internal::MakeAndRegisterTestInfo( \\\n            #test_case_name, #test_name, nullptr, nullptr, \\\n            (parent_id), \\\n            parent_class::SetUpTestCase, \\\n            parent_class::TearDownTestCase, \\\n            new ::testing::internal::TestFactoryImpl<GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>); \\\n    void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody() { \\\n        stanfordcpplib::autograder::Autograder* autograder = stanfordcpplib::autograder::Autograder::instance(); \\\n        autograder->setCurrentTestShouldRun(shouldRun()); \\\n        autograder->setTestShouldRun(this->getTestFullName(), shouldRun()); \\\n        if (!shouldRun()) { \\\n            return; \\\n        } \\\n        this->setTestTimeout(timeoutMS); \\\n        autograder->setCurrentTestCaseName(this->getTestFullName()); \\\n        autograder->runTest(this); \\\n    } \\\n    void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestRealBody() throw (ErrorException)\n\n#define TIMED_TEST(test_fixture, test_name, timeoutMS)\\\n  GTEST_TEST_TIMED(test_fixture, test_name, test_fixture, timeoutMS, \\\n              ::testing::internal::GetTypeId<test_fixture>())\n\n\n#define TIMED_TEST_F(test_fixture, test_name)\\\n  GTEST_TEST_TIMED(test_fixture, test_name, test_fixture, test_fixture::TIMEOUT_MS_DEFAULT, \\\n              ::testing::internal::GetTypeId<test_fixture>())\n\n// semicolon omitted below so that the client shall include it\n// (looks better that way in client code)\n#define TEST_CATEGORY(className, text) \\\n    class className : public stanfordcpplib::autograder::AutograderTest { \\\n    public: \\\n        static void SetUpTestCase() { \\\n            stanfordcpplib::autograder::Autograder* autograder = stanfordcpplib::autograder::Autograder::instance(); \\\n            autograder->setCurrentCategoryName((#text)); \\\n        } \\\n    } \\\n\n#endif // _gtest_marty_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/autograder/gtest.h",
    "content": "/*\n * @version 2016/10/14\n * - changed NULL to nullptr as appropriate\n */\n\n// Copyright 2005, Google Inc.\n// All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n// Author: wan@google.com (Zhanyong Wan)\n//\n// The Google C++ Testing Framework (Google Test)\n//\n// This header file defines the public API for Google Test.  It should be\n// included by any test program that uses Google Test.\n//\n// IMPORTANT NOTE: Due to limitation of the C++ language, we have to\n// leave some internal implementation details in this header file.\n// They are clearly marked by comments like this:\n//\n//   // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.\n//\n// Such code is NOT meant to be used by a user directly, and is subject\n// to CHANGE WITHOUT NOTICE.  Therefore DO NOT DEPEND ON IT in a user\n// program!\n//\n// Acknowledgment: Google Test borrowed the idea of automatic test\n// registration from Barthelemy Dagenais' (barthelemy@prologique.com)\n// easyUnit framework.\n\n#ifndef GTEST_INCLUDE_GTEST_GTEST_H_\n#define GTEST_INCLUDE_GTEST_GTEST_H_\n\n#include <limits>\n#include <ostream>\n#include <vector>\n\n// Copyright 2005, Google Inc.\n// All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n// Authors: wan@google.com (Zhanyong Wan), eefacm@gmail.com (Sean Mcafee)\n//\n// The Google C++ Testing Framework (Google Test)\n//\n// This header file declares functions and macros used internally by\n// Google Test.  They are subject to change without notice.\n\n#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_\n#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_\n\n// Copyright 2005, Google Inc.\n// All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n// Authors: wan@google.com (Zhanyong Wan)\n//\n// Low-level types and utilities for porting Google Test to various\n// platforms.  They are subject to change without notice.  DO NOT USE\n// THEM IN USER CODE.\n//\n// This file is fundamental to Google Test.  All other Google Test source\n// files are expected to #include this.  Therefore, it cannot #include\n// any other Google Test header.\n\n#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_\n#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_\n\n// The user can define the following macros in the build script to\n// control Google Test's behavior.  If the user doesn't define a macro\n// in this list, Google Test will define it.\n//\n//   GTEST_HAS_CLONE          - Define it to 1/0 to indicate that clone(2)\n//                              is/isn't available.\n//   GTEST_HAS_EXCEPTIONS     - Define it to 1/0 to indicate that exceptions\n//                              are enabled.\n//   GTEST_HAS_GLOBAL_STRING  - Define it to 1/0 to indicate that ::string\n//                              is/isn't available (some systems define\n//                              ::string, which is different to std::string).\n//   GTEST_HAS_GLOBAL_WSTRING - Define it to 1/0 to indicate that ::string\n//                              is/isn't available (some systems define\n//                              ::wstring, which is different to std::wstring).\n//   GTEST_HAS_POSIX_RE       - Define it to 1/0 to indicate that POSIX regular\n//                              expressions are/aren't available.\n//   GTEST_HAS_PTHREAD        - Define it to 1/0 to indicate that <pthread.h>\n//                              is/isn't available.\n//   GTEST_HAS_RTTI           - Define it to 1/0 to indicate that RTTI is/isn't\n//                              enabled.\n//   GTEST_HAS_STD_WSTRING    - Define it to 1/0 to indicate that\n//                              std::wstring does/doesn't work (Google Test can\n//                              be used where std::wstring is unavailable).\n//   GTEST_HAS_TR1_TUPLE      - Define it to 1/0 to indicate tr1::tuple\n//                              is/isn't available.\n//   GTEST_HAS_SEH            - Define it to 1/0 to indicate whether the\n//                              compiler supports Microsoft's \"Structured\n//                              Exception Handling\".\n//   GTEST_HAS_STREAM_REDIRECTION\n//                            - Define it to 1/0 to indicate whether the\n//                              platform supports I/O stream redirection using\n//                              dup() and dup2().\n//   GTEST_USE_OWN_TR1_TUPLE  - Define it to 1/0 to indicate whether Google\n//                              Test's own tr1 tuple implementation should be\n//                              used.  Unused when the user sets\n//                              GTEST_HAS_TR1_TUPLE to 0.\n//   GTEST_LANG_CXX11         - Define it to 1/0 to indicate that Google Test\n//                              is building in C++11/C++98 mode.\n//   GTEST_LINKED_AS_SHARED_LIBRARY\n//                            - Define to 1 when compiling tests that use\n//                              Google Test as a shared library (known as\n//                              DLL on Windows).\n//   GTEST_CREATE_SHARED_LIBRARY\n//                            - Define to 1 when compiling Google Test itself\n//                              as a shared library.\n\n// This header defines the following utilities:\n//\n// Macros indicating the current platform (defined to 1 if compiled on\n// the given platform; otherwise undefined):\n//   GTEST_OS_AIX      - IBM AIX\n//   GTEST_OS_CYGWIN   - Cygwin\n//   GTEST_OS_HPUX     - HP-UX\n//   GTEST_OS_LINUX    - Linux\n//     GTEST_OS_LINUX_ANDROID - Google Android\n//   GTEST_OS_MAC      - Mac OS X\n//     GTEST_OS_IOS    - iOS\n//       GTEST_OS_IOS_SIMULATOR - iOS simulator\n//   GTEST_OS_NACL     - Google Native Client (NaCl)\n//   GTEST_OS_OPENBSD  - OpenBSD\n//   GTEST_OS_QNX      - QNX\n//   GTEST_OS_SOLARIS  - Sun Solaris\n//   GTEST_OS_SYMBIAN  - Symbian\n//   GTEST_OS_WINDOWS  - Windows (Desktop, MinGW, or Mobile)\n//     GTEST_OS_WINDOWS_DESKTOP  - Windows Desktop\n//     GTEST_OS_WINDOWS_MINGW    - MinGW\n//     GTEST_OS_WINDOWS_MOBILE   - Windows Mobile\n//   GTEST_OS_ZOS      - z/OS\n//\n// Among the platforms, Cygwin, Linux, Max OS X, and Windows have the\n// most stable support.  Since core members of the Google Test project\n// don't have access to other platforms, support for them may be less\n// stable.  If you notice any problems on your platform, please notify\n// googletestframework@googlegroups.com (patches for fixing them are\n// even more welcome!).\n//\n// Note that it is possible that none of the GTEST_OS_* macros are defined.\n//\n// Macros indicating available Google Test features (defined to 1 if\n// the corresponding feature is supported; otherwise undefined):\n//   GTEST_HAS_COMBINE      - the Combine() function (for value-parameterized\n//                            tests)\n//   GTEST_HAS_DEATH_TEST   - death tests\n//   GTEST_HAS_PARAM_TEST   - value-parameterized tests\n//   GTEST_HAS_TYPED_TEST   - typed tests\n//   GTEST_HAS_TYPED_TEST_P - type-parameterized tests\n//   GTEST_USES_POSIX_RE    - enhanced POSIX regex is used. Do not confuse with\n//                            GTEST_HAS_POSIX_RE (see above) which users can\n//                            define themselves.\n//   GTEST_USES_SIMPLE_RE   - our own simple regex is used;\n//                            the above two are mutually exclusive.\n//   GTEST_CAN_COMPARE_NULL - accepts untyped null in EXPECT_EQ().\n//\n// Macros for basic C++ coding:\n//   GTEST_AMBIGUOUS_ELSE_BLOCKER_ - for disabling a gcc warning.\n//   GTEST_ATTRIBUTE_UNUSED_  - declares that a class' instances or a\n//                              variable don't have to be used.\n//   GTEST_DISALLOW_ASSIGN_   - disables operator=.\n//   GTEST_DISALLOW_COPY_AND_ASSIGN_ - disables copy ctor and operator=.\n//   GTEST_MUST_USE_RESULT_   - declares that a function's result must be used.\n//\n// Synchronization:\n//   Mutex, MutexLock, ThreadLocal, GetThreadCount()\n//                  - synchronization primitives.\n//   GTEST_IS_THREADSAFE - defined to 1 to indicate that the above\n//                         synchronization primitives have real implementations\n//                         and Google Test is thread-safe; or 0 otherwise.\n//\n// Template meta programming:\n//   is_pointer     - as in TR1; needed on Symbian and IBM XL C/C++ only.\n//   IteratorTraits - partial implementation of std::iterator_traits, which\n//                    is not available in libCstd when compiled with Sun C++.\n//\n// Smart pointers:\n//   scoped_ptr     - as in TR2.\n//\n// Regular expressions:\n//   RE             - a simple regular expression class using the POSIX\n//                    Extended Regular Expression syntax on UNIX-like\n//                    platforms, or a reduced regular exception syntax on\n//                    other platforms, including Windows.\n//\n// Logging:\n//   GTEST_LOG_()   - logs messages at the specified severity level.\n//   LogToStderr()  - directs all log messages to stderr.\n//   FlushInfoLog() - flushes informational log messages.\n//\n// Stdout and stderr capturing:\n//   CaptureStdout()     - starts capturing stdout.\n//   GetCapturedStdout() - stops capturing stdout and returns the captured\n//                         string.\n//   CaptureStderr()     - starts capturing stderr.\n//   GetCapturedStderr() - stops capturing stderr and returns the captured\n//                         string.\n//\n// Integer types:\n//   TypeWithSize   - maps an integer to a int type.\n//   Int32, UInt32, Int64, UInt64, TimeInMillis\n//                  - integers of known sizes.\n//   BiggestInt     - the biggest signed integer type.\n//\n// Command-line utilities:\n//   GTEST_FLAG()       - references a flag.\n//   GTEST_DECLARE_*()  - declares a flag.\n//   GTEST_DEFINE_*()   - defines a flag.\n//   GetInjectableArgvs() - returns the command line as a vector of strings.\n//\n// Environment variable utilities:\n//   GetEnv()             - gets the value of an environment variable.\n//   BoolFromGTestEnv()   - parses a bool environment variable.\n//   Int32FromGTestEnv()  - parses an Int32 environment variable.\n//   StringFromGTestEnv() - parses a string environment variable.\n\n#include <ctype.h>   // for isspace, etc\n#include <stddef.h>  // for ptrdiff_t\n#include <stdlib.h>\n#include <stdio.h>\n#include <string.h>\n#ifndef _WIN32_WCE\n# include <sys/types.h>\n# include <sys/stat.h>\n#endif  // !_WIN32_WCE\n\n#if defined __APPLE__\n# include <AvailabilityMacros.h>\n# include <TargetConditionals.h>\n#endif\n\n#include <iostream>  // NOLINT\n#include <sstream>  // NOLINT\n#include <string>  // NOLINT\n\n#define GTEST_DEV_EMAIL_ \"googletestframework@@googlegroups.com\"\n#define GTEST_FLAG_PREFIX_ \"gtest_\"\n#define GTEST_FLAG_PREFIX_DASH_ \"gtest-\"\n#define GTEST_FLAG_PREFIX_UPPER_ \"GTEST_\"\n#define GTEST_NAME_ \"Google Test\"\n#define GTEST_PROJECT_URL_ \"http://code.google.com/p/googletest/\"\n\n// Determines the version of gcc that is used to compile this.\n#ifdef __GNUC__\n// 40302 means version 4.3.2.\n# define GTEST_GCC_VER_ \\\n    (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__)\n#endif  // __GNUC__\n\n// Determines the platform on which Google Test is compiled.\n#ifdef __CYGWIN__\n# define GTEST_OS_CYGWIN 1\n#elif defined __SYMBIAN32__\n# define GTEST_OS_SYMBIAN 1\n#elif defined _WIN32\n# define GTEST_OS_WINDOWS 1\n# ifdef _WIN32_WCE\n#  define GTEST_OS_WINDOWS_MOBILE 1\n# elif defined(__MINGW__) || defined(__MINGW32__)\n#  define GTEST_OS_WINDOWS_MINGW 1\n# else\n#  define GTEST_OS_WINDOWS_DESKTOP 1\n# endif  // _WIN32_WCE\n#elif defined __APPLE__\n# define GTEST_OS_MAC 1\n# if TARGET_OS_IPHONE\n#  define GTEST_OS_IOS 1\n#  if TARGET_IPHONE_SIMULATOR\n#   define GTEST_OS_IOS_SIMULATOR 1\n#  endif\n# endif\n#elif defined __linux__\n# define GTEST_OS_LINUX 1\n# if defined __ANDROID__\n#  define GTEST_OS_LINUX_ANDROID 1\n# endif\n#elif defined __MVS__\n# define GTEST_OS_ZOS 1\n#elif defined(__sun) && defined(__SVR4)\n# define GTEST_OS_SOLARIS 1\n#elif defined(_AIX)\n# define GTEST_OS_AIX 1\n#elif defined(__hpux)\n# define GTEST_OS_HPUX 1\n#elif defined __native_client__\n# define GTEST_OS_NACL 1\n#elif defined __OpenBSD__\n# define GTEST_OS_OPENBSD 1\n#elif defined __QNX__\n# define GTEST_OS_QNX 1\n#endif  // __CYGWIN__\n\n#ifndef GTEST_LANG_CXX11\n// gcc and clang define __GXX_EXPERIMENTAL_CXX0X__ when\n// -std={c,gnu}++{0x,11} is passed.  The C++11 standard specifies a\n// value for __cplusplus, and recent versions of clang, gcc, and\n// probably other compilers set that too in C++11 mode.\n# if __GXX_EXPERIMENTAL_CXX0X__ || __cplusplus >= 201103L\n// Compiling in at least C++11 mode.\n#  define GTEST_LANG_CXX11 1\n# else\n#  define GTEST_LANG_CXX11 0\n# endif\n#endif\n\n// Brings in definitions for functions used in the testing::internal::posix\n// namespace (read, write, close, chdir, isatty, stat). We do not currently\n// use them on Windows Mobile.\n#if !GTEST_OS_WINDOWS\n// This assumes that non-Windows OSes provide unistd.h. For OSes where this\n// is not the case, we need to include headers that provide the functions\n// mentioned above.\n# include <unistd.h>\n# include <strings.h>\n#elif !GTEST_OS_WINDOWS_MOBILE\n# include <direct.h>\n# include <io.h>\n#endif\n\n#if GTEST_OS_LINUX_ANDROID\n// Used to define __ANDROID_API__ matching the target NDK API level.\n#  include <android/api-level.h>  // NOLINT\n#endif\n\n// Defines this to true iff Google Test can use POSIX regular expressions.\n#ifndef GTEST_HAS_POSIX_RE\n# if GTEST_OS_LINUX_ANDROID\n// On Android, <regex.h> is only available starting with Gingerbread.\n#  define GTEST_HAS_POSIX_RE (__ANDROID_API__ >= 9)\n# else\n#  define GTEST_HAS_POSIX_RE (!GTEST_OS_WINDOWS)\n# endif\n#endif\n\n#if GTEST_HAS_POSIX_RE\n\n// On some platforms, <regex.h> needs someone to define size_t, and\n// won't compile otherwise.  We can #include it here as we already\n// included <stdlib.h>, which is guaranteed to define size_t through\n// <stddef.h>.\n# include <regex.h>  // NOLINT\n\n# define GTEST_USES_POSIX_RE 1\n\n#elif GTEST_OS_WINDOWS\n\n// <regex.h> is not available on Windows.  Use our own simple regex\n// implementation instead.\n# define GTEST_USES_SIMPLE_RE 1\n\n#else\n\n// <regex.h> may not be available on this platform.  Use our own\n// simple regex implementation instead.\n# define GTEST_USES_SIMPLE_RE 1\n\n#endif  // GTEST_HAS_POSIX_RE\n\n#ifndef GTEST_HAS_EXCEPTIONS\n// The user didn't tell us whether exceptions are enabled, so we need\n// to figure it out.\n# if defined(_MSC_VER) || defined(__BORLANDC__)\n// MSVC's and C++Builder's implementations of the STL use the _HAS_EXCEPTIONS\n// macro to enable exceptions, so we'll do the same.\n// Assumes that exceptions are enabled by default.\n#  ifndef _HAS_EXCEPTIONS\n#   define _HAS_EXCEPTIONS 1\n#  endif  // _HAS_EXCEPTIONS\n#  define GTEST_HAS_EXCEPTIONS _HAS_EXCEPTIONS\n# elif defined(__GNUC__) && __EXCEPTIONS\n// gcc defines __EXCEPTIONS to 1 iff exceptions are enabled.\n#  define GTEST_HAS_EXCEPTIONS 1\n# elif defined(__SUNPRO_CC)\n// Sun Pro CC supports exceptions.  However, there is no compile-time way of\n// detecting whether they are enabled or not.  Therefore, we assume that\n// they are enabled unless the user tells us otherwise.\n#  define GTEST_HAS_EXCEPTIONS 1\n# elif defined(__IBMCPP__) && __EXCEPTIONS\n// xlC defines __EXCEPTIONS to 1 iff exceptions are enabled.\n#  define GTEST_HAS_EXCEPTIONS 1\n# elif defined(__HP_aCC)\n// Exception handling is in effect by default in HP aCC compiler. It has to\n// be turned of by +noeh compiler option if desired.\n#  define GTEST_HAS_EXCEPTIONS 1\n# else\n// For other compilers, we assume exceptions are disabled to be\n// conservative.\n#  define GTEST_HAS_EXCEPTIONS 0\n# endif  // defined(_MSC_VER) || defined(__BORLANDC__)\n#endif  // GTEST_HAS_EXCEPTIONS\n\n#if !defined(GTEST_HAS_STD_STRING)\n// Even though we don't use this macro any longer, we keep it in case\n// some clients still depend on it.\n# define GTEST_HAS_STD_STRING 1\n#elif !GTEST_HAS_STD_STRING\n// The user told us that ::std::string isn't available.\n# error \"Google Test cannot be used where ::std::string isn't available.\"\n#endif  // !defined(GTEST_HAS_STD_STRING)\n\n#ifndef GTEST_HAS_GLOBAL_STRING\n// The user didn't tell us whether ::string is available, so we need\n// to figure it out.\n\n# define GTEST_HAS_GLOBAL_STRING 0\n\n#endif  // GTEST_HAS_GLOBAL_STRING\n\n#ifndef GTEST_HAS_STD_WSTRING\n// The user didn't tell us whether ::std::wstring is available, so we need\n// to figure it out.\n// TODO(wan@google.com): uses autoconf to detect whether ::std::wstring\n//   is available.\n\n// Cygwin 1.7 and below doesn't support ::std::wstring.\n// Solaris' libc++ doesn't support it either.  Android has\n// no support for it at least as recent as Froyo (2.2).\n# define GTEST_HAS_STD_WSTRING \\\n    (!(GTEST_OS_LINUX_ANDROID || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS))\n\n#endif  // GTEST_HAS_STD_WSTRING\n\n#ifndef GTEST_HAS_GLOBAL_WSTRING\n// The user didn't tell us whether ::wstring is available, so we need\n// to figure it out.\n# define GTEST_HAS_GLOBAL_WSTRING \\\n    (GTEST_HAS_STD_WSTRING && GTEST_HAS_GLOBAL_STRING)\n#endif  // GTEST_HAS_GLOBAL_WSTRING\n\n// Determines whether RTTI is available.\n#ifndef GTEST_HAS_RTTI\n// The user didn't tell us whether RTTI is enabled, so we need to\n// figure it out.\n\n# ifdef _MSC_VER\n\n#  ifdef _CPPRTTI  // MSVC defines this macro iff RTTI is enabled.\n#   define GTEST_HAS_RTTI 1\n#  else\n#   define GTEST_HAS_RTTI 0\n#  endif\n\n// Starting with version 4.3.2, gcc defines __GXX_RTTI iff RTTI is enabled.\n# elif defined(__GNUC__) && (GTEST_GCC_VER_ >= 40302)\n\n#  ifdef __GXX_RTTI\n// When building against STLport with the Android NDK and with\n// -frtti -fno-exceptions, the build fails at link time with undefined\n// references to __cxa_bad_typeid. Note sure if STL or toolchain bug,\n// so disable RTTI when detected.\n#   if GTEST_OS_LINUX_ANDROID && defined(_STLPORT_MAJOR) && \\\n       !defined(__EXCEPTIONS)\n#    define GTEST_HAS_RTTI 0\n#   else\n#    define GTEST_HAS_RTTI 1\n#   endif  // GTEST_OS_LINUX_ANDROID && __STLPORT_MAJOR && !__EXCEPTIONS\n#  else\n#   define GTEST_HAS_RTTI 0\n#  endif  // __GXX_RTTI\n\n// Clang defines __GXX_RTTI starting with version 3.0, but its manual recommends\n// using has_feature instead. has_feature(cxx_rtti) is supported since 2.7, the\n// first version with C++ support.\n# elif defined(__clang__)\n\n#  define GTEST_HAS_RTTI __has_feature(cxx_rtti)\n\n// Starting with version 9.0 IBM Visual Age defines __RTTI_ALL__ to 1 if\n// both the typeid and dynamic_cast features are present.\n# elif defined(__IBMCPP__) && (__IBMCPP__ >= 900)\n\n#  ifdef __RTTI_ALL__\n#   define GTEST_HAS_RTTI 1\n#  else\n#   define GTEST_HAS_RTTI 0\n#  endif\n\n# else\n\n// For all other compilers, we assume RTTI is enabled.\n#  define GTEST_HAS_RTTI 1\n\n# endif  // _MSC_VER\n\n#endif  // GTEST_HAS_RTTI\n\n// It's this header's responsibility to #include <typeinfo> when RTTI\n// is enabled.\n#if GTEST_HAS_RTTI\n# include <typeinfo>\n#endif\n\n// Determines whether Google Test can use the pthreads library.\n#ifndef GTEST_HAS_PTHREAD\n// The user didn't tell us explicitly, so we assume pthreads support is\n// available on Linux and Mac.\n//\n// To disable threading support in Google Test, add -DGTEST_HAS_PTHREAD=0\n// to your compiler flags.\n# define GTEST_HAS_PTHREAD (GTEST_OS_LINUX || GTEST_OS_MAC || GTEST_OS_HPUX \\\n    || GTEST_OS_QNX)\n#endif  // GTEST_HAS_PTHREAD\n\n#if GTEST_HAS_PTHREAD\n// gtest-port.h guarantees to #include <pthread.h> when GTEST_HAS_PTHREAD is\n// true.\n# include <pthread.h>  // NOLINT\n\n// For timespec and nanosleep, used below.\n# include <time.h>  // NOLINT\n#endif\n\n// Determines whether Google Test can use tr1/tuple.  You can define\n// this macro to 0 to prevent Google Test from using tuple (any\n// feature depending on tuple with be disabled in this mode).\n#ifndef GTEST_HAS_TR1_TUPLE\n# if GTEST_OS_LINUX_ANDROID && defined(_STLPORT_MAJOR)\n// STLport, provided with the Android NDK, has neither <tr1/tuple> or <tuple>.\n#  define GTEST_HAS_TR1_TUPLE 0\n# else\n// The user didn't tell us not to do it, so we assume it's OK.\n#  define GTEST_HAS_TR1_TUPLE 1\n# endif\n#endif  // GTEST_HAS_TR1_TUPLE\n\n// Determines whether Google Test's own tr1 tuple implementation\n// should be used.\n#ifndef GTEST_USE_OWN_TR1_TUPLE\n// The user didn't tell us, so we need to figure it out.\n\n// We use our own TR1 tuple if we aren't sure the user has an\n// implementation of it already.  At this time, libstdc++ 4.0.0+ and\n// MSVC 2010 are the only mainstream standard libraries that come\n// with a TR1 tuple implementation.  NVIDIA's CUDA NVCC compiler\n// pretends to be GCC by defining __GNUC__ and friends, but cannot\n// compile GCC's tuple implementation.  MSVC 2008 (9.0) provides TR1\n// tuple in a 323 MB Feature Pack download, which we cannot assume the\n// user has.  QNX's QCC compiler is a modified GCC but it doesn't\n// support TR1 tuple.  libc++ only provides std::tuple, in C++11 mode,\n// and it can be used with some compilers that define __GNUC__.\n# if (defined(__GNUC__) && !defined(__CUDACC__) && (GTEST_GCC_VER_ >= 40000) \\\n      && !GTEST_OS_QNX && !defined(_LIBCPP_VERSION)) || _MSC_VER >= 1600\n#  define GTEST_ENV_HAS_TR1_TUPLE_ 1\n# endif\n\n// C++11 specifies that <tuple> provides std::tuple. Use that if gtest is used\n// in C++11 mode and libstdc++ isn't very old (binaries targeting OS X 10.6\n// can build with clang but need to use gcc4.2's libstdc++).\n# if GTEST_LANG_CXX11 && (!defined(__GLIBCXX__) || __GLIBCXX__ > 20110325)\n#  define GTEST_ENV_HAS_STD_TUPLE_ 1\n# endif\n\n# if GTEST_ENV_HAS_TR1_TUPLE_ || GTEST_ENV_HAS_STD_TUPLE_\n#  define GTEST_USE_OWN_TR1_TUPLE 0\n# else\n#  define GTEST_USE_OWN_TR1_TUPLE 1\n# endif\n\n#endif  // GTEST_USE_OWN_TR1_TUPLE\n\n// To avoid conditional compilation everywhere, we make it\n// gtest-port.h's responsibility to #include the header implementing\n// tr1/tuple.\n#if GTEST_HAS_TR1_TUPLE\n\n# if GTEST_USE_OWN_TR1_TUPLE\n// This file was GENERATED by command:\n//     pump.py gtest-tuple.h.pump\n// DO NOT EDIT BY HAND!!!\n\n// Copyright 2009 Google Inc.\n// All Rights Reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n// Author: wan@google.com (Zhanyong Wan)\n\n// Implements a subset of TR1 tuple needed by Google Test and Google Mock.\n\n#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_\n#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_\n\n#include <utility>  // For ::std::pair.\n\n// The compiler used in Symbian has a bug that prevents us from declaring the\n// tuple template as a friend (it complains that tuple is redefined).  This\n// hack bypasses the bug by declaring the members that should otherwise be\n// private as public.\n// Sun Studio versions < 12 also have the above bug.\n#if defined(__SYMBIAN32__) || (defined(__SUNPRO_CC) && __SUNPRO_CC < 0x590)\n# define GTEST_DECLARE_TUPLE_AS_FRIEND_ public:\n#else\n# define GTEST_DECLARE_TUPLE_AS_FRIEND_ \\\n    template <GTEST_10_TYPENAMES_(U)> friend class tuple; \\\n   private:\n#endif\n\n// GTEST_n_TUPLE_(T) is the type of an n-tuple.\n#define GTEST_0_TUPLE_(T) tuple<>\n#define GTEST_1_TUPLE_(T) tuple<T##0, void, void, void, void, void, void, \\\n    void, void, void>\n#define GTEST_2_TUPLE_(T) tuple<T##0, T##1, void, void, void, void, void, \\\n    void, void, void>\n#define GTEST_3_TUPLE_(T) tuple<T##0, T##1, T##2, void, void, void, void, \\\n    void, void, void>\n#define GTEST_4_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, void, void, void, \\\n    void, void, void>\n#define GTEST_5_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, void, void, \\\n    void, void, void>\n#define GTEST_6_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, void, \\\n    void, void, void>\n#define GTEST_7_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \\\n    void, void, void>\n#define GTEST_8_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \\\n    T##7, void, void>\n#define GTEST_9_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \\\n    T##7, T##8, void>\n#define GTEST_10_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \\\n    T##7, T##8, T##9>\n\n// GTEST_n_TYPENAMES_(T) declares a list of n typenames.\n#define GTEST_0_TYPENAMES_(T)\n#define GTEST_1_TYPENAMES_(T) typename T##0\n#define GTEST_2_TYPENAMES_(T) typename T##0, typename T##1\n#define GTEST_3_TYPENAMES_(T) typename T##0, typename T##1, typename T##2\n#define GTEST_4_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \\\n    typename T##3\n#define GTEST_5_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \\\n    typename T##3, typename T##4\n#define GTEST_6_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \\\n    typename T##3, typename T##4, typename T##5\n#define GTEST_7_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \\\n    typename T##3, typename T##4, typename T##5, typename T##6\n#define GTEST_8_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \\\n    typename T##3, typename T##4, typename T##5, typename T##6, typename T##7\n#define GTEST_9_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \\\n    typename T##3, typename T##4, typename T##5, typename T##6, \\\n    typename T##7, typename T##8\n#define GTEST_10_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \\\n    typename T##3, typename T##4, typename T##5, typename T##6, \\\n    typename T##7, typename T##8, typename T##9\n\n// In theory, defining stuff in the ::std namespace is undefined\n// behavior.  We can do this as we are playing the role of a standard\n// library vendor.\nnamespace std {\nnamespace tr1 {\n\ntemplate <typename T0 = void, typename T1 = void, typename T2 = void,\n    typename T3 = void, typename T4 = void, typename T5 = void,\n    typename T6 = void, typename T7 = void, typename T8 = void,\n    typename T9 = void>\nclass tuple;\n\n// Anything in namespace gtest_internal is Google Test's INTERNAL\n// IMPLEMENTATION DETAIL and MUST NOT BE USED DIRECTLY in user code.\nnamespace gtest_internal {\n\n// ByRef<T>::type is T if T is a reference; otherwise it's const T&.\ntemplate <typename T>\nstruct ByRef { typedef const T& type; };  // NOLINT\ntemplate <typename T>\nstruct ByRef<T&> { typedef T& type; };  // NOLINT\n\n// A handy wrapper for ByRef.\n#define GTEST_BY_REF_(T) typename ::std::tr1::gtest_internal::ByRef<T>::type\n\n// AddRef<T>::type is T if T is a reference; otherwise it's T&.  This\n// is the same as tr1::add_reference<T>::type.\ntemplate <typename T>\nstruct AddRef { typedef T& type; };  // NOLINT\ntemplate <typename T>\nstruct AddRef<T&> { typedef T& type; };  // NOLINT\n\n// A handy wrapper for AddRef.\n#define GTEST_ADD_REF_(T) typename ::std::tr1::gtest_internal::AddRef<T>::type\n\n// A helper for implementing get<k>().\ntemplate <int k> class Get;\n\n// A helper for implementing tuple_element<k, T>.  kIndexValid is true\n// iff k < the number of fields in tuple type T.\ntemplate <bool kIndexValid, int kIndex, class Tuple>\nstruct TupleElement;\n\ntemplate <GTEST_10_TYPENAMES_(T)>\nstruct TupleElement<true, 0, GTEST_10_TUPLE_(T) > {\n  typedef T0 type;\n};\n\ntemplate <GTEST_10_TYPENAMES_(T)>\nstruct TupleElement<true, 1, GTEST_10_TUPLE_(T) > {\n  typedef T1 type;\n};\n\ntemplate <GTEST_10_TYPENAMES_(T)>\nstruct TupleElement<true, 2, GTEST_10_TUPLE_(T) > {\n  typedef T2 type;\n};\n\ntemplate <GTEST_10_TYPENAMES_(T)>\nstruct TupleElement<true, 3, GTEST_10_TUPLE_(T) > {\n  typedef T3 type;\n};\n\ntemplate <GTEST_10_TYPENAMES_(T)>\nstruct TupleElement<true, 4, GTEST_10_TUPLE_(T) > {\n  typedef T4 type;\n};\n\ntemplate <GTEST_10_TYPENAMES_(T)>\nstruct TupleElement<true, 5, GTEST_10_TUPLE_(T) > {\n  typedef T5 type;\n};\n\ntemplate <GTEST_10_TYPENAMES_(T)>\nstruct TupleElement<true, 6, GTEST_10_TUPLE_(T) > {\n  typedef T6 type;\n};\n\ntemplate <GTEST_10_TYPENAMES_(T)>\nstruct TupleElement<true, 7, GTEST_10_TUPLE_(T) > {\n  typedef T7 type;\n};\n\ntemplate <GTEST_10_TYPENAMES_(T)>\nstruct TupleElement<true, 8, GTEST_10_TUPLE_(T) > {\n  typedef T8 type;\n};\n\ntemplate <GTEST_10_TYPENAMES_(T)>\nstruct TupleElement<true, 9, GTEST_10_TUPLE_(T) > {\n  typedef T9 type;\n};\n\n}  // namespace gtest_internal\n\ntemplate <>\nclass tuple<> {\n public:\n  tuple() {}\n  tuple(const tuple& /* t */)  {}\n  tuple& operator=(const tuple& /* t */) { return *this; }\n};\n\ntemplate <GTEST_1_TYPENAMES_(T)>\nclass GTEST_1_TUPLE_(T) {\n public:\n  template <int k> friend class gtest_internal::Get;\n\n  tuple() : f0_() {}\n\n  explicit tuple(GTEST_BY_REF_(T0) f0) : f0_(f0) {}\n\n  tuple(const tuple& t) : f0_(t.f0_) {}\n\n  template <GTEST_1_TYPENAMES_(U)>\n  tuple(const GTEST_1_TUPLE_(U)& t) : f0_(t.f0_) {}\n\n  tuple& operator=(const tuple& t) { return CopyFrom(t); }\n\n  template <GTEST_1_TYPENAMES_(U)>\n  tuple& operator=(const GTEST_1_TUPLE_(U)& t) {\n    return CopyFrom(t);\n  }\n\n  GTEST_DECLARE_TUPLE_AS_FRIEND_\n\n  template <GTEST_1_TYPENAMES_(U)>\n  tuple& CopyFrom(const GTEST_1_TUPLE_(U)& t) {\n    f0_ = t.f0_;\n    return *this;\n  }\n\n  T0 f0_;\n};\n\ntemplate <GTEST_2_TYPENAMES_(T)>\nclass GTEST_2_TUPLE_(T) {\n public:\n  template <int k> friend class gtest_internal::Get;\n\n  tuple() : f0_(), f1_() {}\n\n  explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1) : f0_(f0),\n      f1_(f1) {}\n\n  tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_) {}\n\n  template <GTEST_2_TYPENAMES_(U)>\n  tuple(const GTEST_2_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_) {}\n  template <typename U0, typename U1>\n  tuple(const ::std::pair<U0, U1>& p) : f0_(p.first), f1_(p.second) {}\n\n  tuple& operator=(const tuple& t) { return CopyFrom(t); }\n\n  template <GTEST_2_TYPENAMES_(U)>\n  tuple& operator=(const GTEST_2_TUPLE_(U)& t) {\n    return CopyFrom(t);\n  }\n  template <typename U0, typename U1>\n  tuple& operator=(const ::std::pair<U0, U1>& p) {\n    f0_ = p.first;\n    f1_ = p.second;\n    return *this;\n  }\n\n  GTEST_DECLARE_TUPLE_AS_FRIEND_\n\n  template <GTEST_2_TYPENAMES_(U)>\n  tuple& CopyFrom(const GTEST_2_TUPLE_(U)& t) {\n    f0_ = t.f0_;\n    f1_ = t.f1_;\n    return *this;\n  }\n\n  T0 f0_;\n  T1 f1_;\n};\n\ntemplate <GTEST_3_TYPENAMES_(T)>\nclass GTEST_3_TUPLE_(T) {\n public:\n  template <int k> friend class gtest_internal::Get;\n\n  tuple() : f0_(), f1_(), f2_() {}\n\n  explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,\n      GTEST_BY_REF_(T2) f2) : f0_(f0), f1_(f1), f2_(f2) {}\n\n  tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_) {}\n\n  template <GTEST_3_TYPENAMES_(U)>\n  tuple(const GTEST_3_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_) {}\n\n  tuple& operator=(const tuple& t) { return CopyFrom(t); }\n\n  template <GTEST_3_TYPENAMES_(U)>\n  tuple& operator=(const GTEST_3_TUPLE_(U)& t) {\n    return CopyFrom(t);\n  }\n\n  GTEST_DECLARE_TUPLE_AS_FRIEND_\n\n  template <GTEST_3_TYPENAMES_(U)>\n  tuple& CopyFrom(const GTEST_3_TUPLE_(U)& t) {\n    f0_ = t.f0_;\n    f1_ = t.f1_;\n    f2_ = t.f2_;\n    return *this;\n  }\n\n  T0 f0_;\n  T1 f1_;\n  T2 f2_;\n};\n\ntemplate <GTEST_4_TYPENAMES_(T)>\nclass GTEST_4_TUPLE_(T) {\n public:\n  template <int k> friend class gtest_internal::Get;\n\n  tuple() : f0_(), f1_(), f2_(), f3_() {}\n\n  explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,\n      GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3) : f0_(f0), f1_(f1), f2_(f2),\n      f3_(f3) {}\n\n  tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_) {}\n\n  template <GTEST_4_TYPENAMES_(U)>\n  tuple(const GTEST_4_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),\n      f3_(t.f3_) {}\n\n  tuple& operator=(const tuple& t) { return CopyFrom(t); }\n\n  template <GTEST_4_TYPENAMES_(U)>\n  tuple& operator=(const GTEST_4_TUPLE_(U)& t) {\n    return CopyFrom(t);\n  }\n\n  GTEST_DECLARE_TUPLE_AS_FRIEND_\n\n  template <GTEST_4_TYPENAMES_(U)>\n  tuple& CopyFrom(const GTEST_4_TUPLE_(U)& t) {\n    f0_ = t.f0_;\n    f1_ = t.f1_;\n    f2_ = t.f2_;\n    f3_ = t.f3_;\n    return *this;\n  }\n\n  T0 f0_;\n  T1 f1_;\n  T2 f2_;\n  T3 f3_;\n};\n\ntemplate <GTEST_5_TYPENAMES_(T)>\nclass GTEST_5_TUPLE_(T) {\n public:\n  template <int k> friend class gtest_internal::Get;\n\n  tuple() : f0_(), f1_(), f2_(), f3_(), f4_() {}\n\n  explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,\n      GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3,\n      GTEST_BY_REF_(T4) f4) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4) {}\n\n  tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),\n      f4_(t.f4_) {}\n\n  template <GTEST_5_TYPENAMES_(U)>\n  tuple(const GTEST_5_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),\n      f3_(t.f3_), f4_(t.f4_) {}\n\n  tuple& operator=(const tuple& t) { return CopyFrom(t); }\n\n  template <GTEST_5_TYPENAMES_(U)>\n  tuple& operator=(const GTEST_5_TUPLE_(U)& t) {\n    return CopyFrom(t);\n  }\n\n  GTEST_DECLARE_TUPLE_AS_FRIEND_\n\n  template <GTEST_5_TYPENAMES_(U)>\n  tuple& CopyFrom(const GTEST_5_TUPLE_(U)& t) {\n    f0_ = t.f0_;\n    f1_ = t.f1_;\n    f2_ = t.f2_;\n    f3_ = t.f3_;\n    f4_ = t.f4_;\n    return *this;\n  }\n\n  T0 f0_;\n  T1 f1_;\n  T2 f2_;\n  T3 f3_;\n  T4 f4_;\n};\n\ntemplate <GTEST_6_TYPENAMES_(T)>\nclass GTEST_6_TUPLE_(T) {\n public:\n  template <int k> friend class gtest_internal::Get;\n\n  tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_() {}\n\n  explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,\n      GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4,\n      GTEST_BY_REF_(T5) f5) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4),\n      f5_(f5) {}\n\n  tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),\n      f4_(t.f4_), f5_(t.f5_) {}\n\n  template <GTEST_6_TYPENAMES_(U)>\n  tuple(const GTEST_6_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),\n      f3_(t.f3_), f4_(t.f4_), f5_(t.f5_) {}\n\n  tuple& operator=(const tuple& t) { return CopyFrom(t); }\n\n  template <GTEST_6_TYPENAMES_(U)>\n  tuple& operator=(const GTEST_6_TUPLE_(U)& t) {\n    return CopyFrom(t);\n  }\n\n  GTEST_DECLARE_TUPLE_AS_FRIEND_\n\n  template <GTEST_6_TYPENAMES_(U)>\n  tuple& CopyFrom(const GTEST_6_TUPLE_(U)& t) {\n    f0_ = t.f0_;\n    f1_ = t.f1_;\n    f2_ = t.f2_;\n    f3_ = t.f3_;\n    f4_ = t.f4_;\n    f5_ = t.f5_;\n    return *this;\n  }\n\n  T0 f0_;\n  T1 f1_;\n  T2 f2_;\n  T3 f3_;\n  T4 f4_;\n  T5 f5_;\n};\n\ntemplate <GTEST_7_TYPENAMES_(T)>\nclass GTEST_7_TUPLE_(T) {\n public:\n  template <int k> friend class gtest_internal::Get;\n\n  tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_() {}\n\n  explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,\n      GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4,\n      GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6) : f0_(f0), f1_(f1), f2_(f2),\n      f3_(f3), f4_(f4), f5_(f5), f6_(f6) {}\n\n  tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),\n      f4_(t.f4_), f5_(t.f5_), f6_(t.f6_) {}\n\n  template <GTEST_7_TYPENAMES_(U)>\n  tuple(const GTEST_7_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),\n      f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_) {}\n\n  tuple& operator=(const tuple& t) { return CopyFrom(t); }\n\n  template <GTEST_7_TYPENAMES_(U)>\n  tuple& operator=(const GTEST_7_TUPLE_(U)& t) {\n    return CopyFrom(t);\n  }\n\n  GTEST_DECLARE_TUPLE_AS_FRIEND_\n\n  template <GTEST_7_TYPENAMES_(U)>\n  tuple& CopyFrom(const GTEST_7_TUPLE_(U)& t) {\n    f0_ = t.f0_;\n    f1_ = t.f1_;\n    f2_ = t.f2_;\n    f3_ = t.f3_;\n    f4_ = t.f4_;\n    f5_ = t.f5_;\n    f6_ = t.f6_;\n    return *this;\n  }\n\n  T0 f0_;\n  T1 f1_;\n  T2 f2_;\n  T3 f3_;\n  T4 f4_;\n  T5 f5_;\n  T6 f6_;\n};\n\ntemplate <GTEST_8_TYPENAMES_(T)>\nclass GTEST_8_TUPLE_(T) {\n public:\n  template <int k> friend class gtest_internal::Get;\n\n  tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_() {}\n\n  explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,\n      GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4,\n      GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6,\n      GTEST_BY_REF_(T7) f7) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4),\n      f5_(f5), f6_(f6), f7_(f7) {}\n\n  tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),\n      f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_) {}\n\n  template <GTEST_8_TYPENAMES_(U)>\n  tuple(const GTEST_8_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),\n      f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_) {}\n\n  tuple& operator=(const tuple& t) { return CopyFrom(t); }\n\n  template <GTEST_8_TYPENAMES_(U)>\n  tuple& operator=(const GTEST_8_TUPLE_(U)& t) {\n    return CopyFrom(t);\n  }\n\n  GTEST_DECLARE_TUPLE_AS_FRIEND_\n\n  template <GTEST_8_TYPENAMES_(U)>\n  tuple& CopyFrom(const GTEST_8_TUPLE_(U)& t) {\n    f0_ = t.f0_;\n    f1_ = t.f1_;\n    f2_ = t.f2_;\n    f3_ = t.f3_;\n    f4_ = t.f4_;\n    f5_ = t.f5_;\n    f6_ = t.f6_;\n    f7_ = t.f7_;\n    return *this;\n  }\n\n  T0 f0_;\n  T1 f1_;\n  T2 f2_;\n  T3 f3_;\n  T4 f4_;\n  T5 f5_;\n  T6 f6_;\n  T7 f7_;\n};\n\ntemplate <GTEST_9_TYPENAMES_(T)>\nclass GTEST_9_TUPLE_(T) {\n public:\n  template <int k> friend class gtest_internal::Get;\n\n  tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_(), f8_() {}\n\n  explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,\n      GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4,\n      GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, GTEST_BY_REF_(T7) f7,\n      GTEST_BY_REF_(T8) f8) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4),\n      f5_(f5), f6_(f6), f7_(f7), f8_(f8) {}\n\n  tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),\n      f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_) {}\n\n  template <GTEST_9_TYPENAMES_(U)>\n  tuple(const GTEST_9_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),\n      f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_) {}\n\n  tuple& operator=(const tuple& t) { return CopyFrom(t); }\n\n  template <GTEST_9_TYPENAMES_(U)>\n  tuple& operator=(const GTEST_9_TUPLE_(U)& t) {\n    return CopyFrom(t);\n  }\n\n  GTEST_DECLARE_TUPLE_AS_FRIEND_\n\n  template <GTEST_9_TYPENAMES_(U)>\n  tuple& CopyFrom(const GTEST_9_TUPLE_(U)& t) {\n    f0_ = t.f0_;\n    f1_ = t.f1_;\n    f2_ = t.f2_;\n    f3_ = t.f3_;\n    f4_ = t.f4_;\n    f5_ = t.f5_;\n    f6_ = t.f6_;\n    f7_ = t.f7_;\n    f8_ = t.f8_;\n    return *this;\n  }\n\n  T0 f0_;\n  T1 f1_;\n  T2 f2_;\n  T3 f3_;\n  T4 f4_;\n  T5 f5_;\n  T6 f6_;\n  T7 f7_;\n  T8 f8_;\n};\n\ntemplate <GTEST_10_TYPENAMES_(T)>\nclass tuple {\n public:\n  template <int k> friend class gtest_internal::Get;\n\n  tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_(), f8_(),\n      f9_() {}\n\n  explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,\n      GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4,\n      GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, GTEST_BY_REF_(T7) f7,\n      GTEST_BY_REF_(T8) f8, GTEST_BY_REF_(T9) f9) : f0_(f0), f1_(f1), f2_(f2),\n      f3_(f3), f4_(f4), f5_(f5), f6_(f6), f7_(f7), f8_(f8), f9_(f9) {}\n\n  tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),\n      f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_), f9_(t.f9_) {}\n\n  template <GTEST_10_TYPENAMES_(U)>\n  tuple(const GTEST_10_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),\n      f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_),\n      f9_(t.f9_) {}\n\n  tuple& operator=(const tuple& t) { return CopyFrom(t); }\n\n  template <GTEST_10_TYPENAMES_(U)>\n  tuple& operator=(const GTEST_10_TUPLE_(U)& t) {\n    return CopyFrom(t);\n  }\n\n  GTEST_DECLARE_TUPLE_AS_FRIEND_\n\n  template <GTEST_10_TYPENAMES_(U)>\n  tuple& CopyFrom(const GTEST_10_TUPLE_(U)& t) {\n    f0_ = t.f0_;\n    f1_ = t.f1_;\n    f2_ = t.f2_;\n    f3_ = t.f3_;\n    f4_ = t.f4_;\n    f5_ = t.f5_;\n    f6_ = t.f6_;\n    f7_ = t.f7_;\n    f8_ = t.f8_;\n    f9_ = t.f9_;\n    return *this;\n  }\n\n  T0 f0_;\n  T1 f1_;\n  T2 f2_;\n  T3 f3_;\n  T4 f4_;\n  T5 f5_;\n  T6 f6_;\n  T7 f7_;\n  T8 f8_;\n  T9 f9_;\n};\n\n// 6.1.3.2 Tuple creation functions.\n\n// Known limitations: we don't support passing an\n// std::tr1::reference_wrapper<T> to make_tuple().  And we don't\n// implement tie().\n\ninline tuple<> make_tuple() { return tuple<>(); }\n\ntemplate <GTEST_1_TYPENAMES_(T)>\ninline GTEST_1_TUPLE_(T) make_tuple(const T0& f0) {\n  return GTEST_1_TUPLE_(T)(f0);\n}\n\ntemplate <GTEST_2_TYPENAMES_(T)>\ninline GTEST_2_TUPLE_(T) make_tuple(const T0& f0, const T1& f1) {\n  return GTEST_2_TUPLE_(T)(f0, f1);\n}\n\ntemplate <GTEST_3_TYPENAMES_(T)>\ninline GTEST_3_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2) {\n  return GTEST_3_TUPLE_(T)(f0, f1, f2);\n}\n\ntemplate <GTEST_4_TYPENAMES_(T)>\ninline GTEST_4_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,\n    const T3& f3) {\n  return GTEST_4_TUPLE_(T)(f0, f1, f2, f3);\n}\n\ntemplate <GTEST_5_TYPENAMES_(T)>\ninline GTEST_5_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,\n    const T3& f3, const T4& f4) {\n  return GTEST_5_TUPLE_(T)(f0, f1, f2, f3, f4);\n}\n\ntemplate <GTEST_6_TYPENAMES_(T)>\ninline GTEST_6_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,\n    const T3& f3, const T4& f4, const T5& f5) {\n  return GTEST_6_TUPLE_(T)(f0, f1, f2, f3, f4, f5);\n}\n\ntemplate <GTEST_7_TYPENAMES_(T)>\ninline GTEST_7_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,\n    const T3& f3, const T4& f4, const T5& f5, const T6& f6) {\n  return GTEST_7_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6);\n}\n\ntemplate <GTEST_8_TYPENAMES_(T)>\ninline GTEST_8_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,\n    const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7) {\n  return GTEST_8_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7);\n}\n\ntemplate <GTEST_9_TYPENAMES_(T)>\ninline GTEST_9_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,\n    const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7,\n    const T8& f8) {\n  return GTEST_9_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7, f8);\n}\n\ntemplate <GTEST_10_TYPENAMES_(T)>\ninline GTEST_10_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,\n    const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7,\n    const T8& f8, const T9& f9) {\n  return GTEST_10_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7, f8, f9);\n}\n\n// 6.1.3.3 Tuple helper classes.\n\ntemplate <typename Tuple> struct tuple_size;\n\ntemplate <GTEST_0_TYPENAMES_(T)>\nstruct tuple_size<GTEST_0_TUPLE_(T) > {\n  static const int value = 0;\n};\n\ntemplate <GTEST_1_TYPENAMES_(T)>\nstruct tuple_size<GTEST_1_TUPLE_(T) > {\n  static const int value = 1;\n};\n\ntemplate <GTEST_2_TYPENAMES_(T)>\nstruct tuple_size<GTEST_2_TUPLE_(T) > {\n  static const int value = 2;\n};\n\ntemplate <GTEST_3_TYPENAMES_(T)>\nstruct tuple_size<GTEST_3_TUPLE_(T) > {\n  static const int value = 3;\n};\n\ntemplate <GTEST_4_TYPENAMES_(T)>\nstruct tuple_size<GTEST_4_TUPLE_(T) > {\n  static const int value = 4;\n};\n\ntemplate <GTEST_5_TYPENAMES_(T)>\nstruct tuple_size<GTEST_5_TUPLE_(T) > {\n  static const int value = 5;\n};\n\ntemplate <GTEST_6_TYPENAMES_(T)>\nstruct tuple_size<GTEST_6_TUPLE_(T) > {\n  static const int value = 6;\n};\n\ntemplate <GTEST_7_TYPENAMES_(T)>\nstruct tuple_size<GTEST_7_TUPLE_(T) > {\n  static const int value = 7;\n};\n\ntemplate <GTEST_8_TYPENAMES_(T)>\nstruct tuple_size<GTEST_8_TUPLE_(T) > {\n  static const int value = 8;\n};\n\ntemplate <GTEST_9_TYPENAMES_(T)>\nstruct tuple_size<GTEST_9_TUPLE_(T) > {\n  static const int value = 9;\n};\n\ntemplate <GTEST_10_TYPENAMES_(T)>\nstruct tuple_size<GTEST_10_TUPLE_(T) > {\n  static const int value = 10;\n};\n\ntemplate <int k, class Tuple>\nstruct tuple_element {\n  typedef typename gtest_internal::TupleElement<\n      k < (tuple_size<Tuple>::value), k, Tuple>::type type;\n};\n\n#define GTEST_TUPLE_ELEMENT_(k, Tuple) typename tuple_element<k, Tuple >::type\n\n// 6.1.3.4 Element access.\n\nnamespace gtest_internal {\n\ntemplate <>\nclass Get<0> {\n public:\n  template <class Tuple>\n  static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(0, Tuple))\n  Field(Tuple& t) { return t.f0_; }  // NOLINT\n\n  template <class Tuple>\n  static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(0, Tuple))\n  ConstField(const Tuple& t) { return t.f0_; }\n};\n\ntemplate <>\nclass Get<1> {\n public:\n  template <class Tuple>\n  static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(1, Tuple))\n  Field(Tuple& t) { return t.f1_; }  // NOLINT\n\n  template <class Tuple>\n  static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(1, Tuple))\n  ConstField(const Tuple& t) { return t.f1_; }\n};\n\ntemplate <>\nclass Get<2> {\n public:\n  template <class Tuple>\n  static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(2, Tuple))\n  Field(Tuple& t) { return t.f2_; }  // NOLINT\n\n  template <class Tuple>\n  static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(2, Tuple))\n  ConstField(const Tuple& t) { return t.f2_; }\n};\n\ntemplate <>\nclass Get<3> {\n public:\n  template <class Tuple>\n  static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(3, Tuple))\n  Field(Tuple& t) { return t.f3_; }  // NOLINT\n\n  template <class Tuple>\n  static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(3, Tuple))\n  ConstField(const Tuple& t) { return t.f3_; }\n};\n\ntemplate <>\nclass Get<4> {\n public:\n  template <class Tuple>\n  static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(4, Tuple))\n  Field(Tuple& t) { return t.f4_; }  // NOLINT\n\n  template <class Tuple>\n  static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(4, Tuple))\n  ConstField(const Tuple& t) { return t.f4_; }\n};\n\ntemplate <>\nclass Get<5> {\n public:\n  template <class Tuple>\n  static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(5, Tuple))\n  Field(Tuple& t) { return t.f5_; }  // NOLINT\n\n  template <class Tuple>\n  static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(5, Tuple))\n  ConstField(const Tuple& t) { return t.f5_; }\n};\n\ntemplate <>\nclass Get<6> {\n public:\n  template <class Tuple>\n  static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(6, Tuple))\n  Field(Tuple& t) { return t.f6_; }  // NOLINT\n\n  template <class Tuple>\n  static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(6, Tuple))\n  ConstField(const Tuple& t) { return t.f6_; }\n};\n\ntemplate <>\nclass Get<7> {\n public:\n  template <class Tuple>\n  static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(7, Tuple))\n  Field(Tuple& t) { return t.f7_; }  // NOLINT\n\n  template <class Tuple>\n  static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(7, Tuple))\n  ConstField(const Tuple& t) { return t.f7_; }\n};\n\ntemplate <>\nclass Get<8> {\n public:\n  template <class Tuple>\n  static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(8, Tuple))\n  Field(Tuple& t) { return t.f8_; }  // NOLINT\n\n  template <class Tuple>\n  static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(8, Tuple))\n  ConstField(const Tuple& t) { return t.f8_; }\n};\n\ntemplate <>\nclass Get<9> {\n public:\n  template <class Tuple>\n  static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(9, Tuple))\n  Field(Tuple& t) { return t.f9_; }  // NOLINT\n\n  template <class Tuple>\n  static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(9, Tuple))\n  ConstField(const Tuple& t) { return t.f9_; }\n};\n\n}  // namespace gtest_internal\n\ntemplate <int k, GTEST_10_TYPENAMES_(T)>\nGTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(k, GTEST_10_TUPLE_(T)))\nget(GTEST_10_TUPLE_(T)& t) {\n  return gtest_internal::Get<k>::Field(t);\n}\n\ntemplate <int k, GTEST_10_TYPENAMES_(T)>\nGTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(k,  GTEST_10_TUPLE_(T)))\nget(const GTEST_10_TUPLE_(T)& t) {\n  return gtest_internal::Get<k>::ConstField(t);\n}\n\n// 6.1.3.5 Relational operators\n\n// We only implement == and !=, as we don't have a need for the rest yet.\n\nnamespace gtest_internal {\n\n// SameSizeTuplePrefixComparator<k, k>::Eq(t1, t2) returns true if the\n// first k fields of t1 equals the first k fields of t2.\n// SameSizeTuplePrefixComparator(k1, k2) would be a compiler error if\n// k1 != k2.\ntemplate <int kSize1, int kSize2>\nstruct SameSizeTuplePrefixComparator;\n\ntemplate <>\nstruct SameSizeTuplePrefixComparator<0, 0> {\n  template <class Tuple1, class Tuple2>\n  static bool Eq(const Tuple1& /* t1 */, const Tuple2& /* t2 */) {\n    return true;\n  }\n};\n\ntemplate <int k>\nstruct SameSizeTuplePrefixComparator<k, k> {\n  template <class Tuple1, class Tuple2>\n  static bool Eq(const Tuple1& t1, const Tuple2& t2) {\n    return SameSizeTuplePrefixComparator<k - 1, k - 1>::Eq(t1, t2) &&\n        ::std::tr1::get<k - 1>(t1) == ::std::tr1::get<k - 1>(t2);\n  }\n};\n\n}  // namespace gtest_internal\n\ntemplate <GTEST_10_TYPENAMES_(T), GTEST_10_TYPENAMES_(U)>\ninline bool operator==(const GTEST_10_TUPLE_(T)& t,\n                       const GTEST_10_TUPLE_(U)& u) {\n  return gtest_internal::SameSizeTuplePrefixComparator<\n      tuple_size<GTEST_10_TUPLE_(T) >::value,\n      tuple_size<GTEST_10_TUPLE_(U) >::value>::Eq(t, u);\n}\n\ntemplate <GTEST_10_TYPENAMES_(T), GTEST_10_TYPENAMES_(U)>\ninline bool operator!=(const GTEST_10_TUPLE_(T)& t,\n                       const GTEST_10_TUPLE_(U)& u) { return !(t == u); }\n\n// 6.1.4 Pairs.\n// Unimplemented.\n\n}  // namespace tr1\n}  // namespace std\n\n#undef GTEST_0_TUPLE_\n#undef GTEST_1_TUPLE_\n#undef GTEST_2_TUPLE_\n#undef GTEST_3_TUPLE_\n#undef GTEST_4_TUPLE_\n#undef GTEST_5_TUPLE_\n#undef GTEST_6_TUPLE_\n#undef GTEST_7_TUPLE_\n#undef GTEST_8_TUPLE_\n#undef GTEST_9_TUPLE_\n#undef GTEST_10_TUPLE_\n\n#undef GTEST_0_TYPENAMES_\n#undef GTEST_1_TYPENAMES_\n#undef GTEST_2_TYPENAMES_\n#undef GTEST_3_TYPENAMES_\n#undef GTEST_4_TYPENAMES_\n#undef GTEST_5_TYPENAMES_\n#undef GTEST_6_TYPENAMES_\n#undef GTEST_7_TYPENAMES_\n#undef GTEST_8_TYPENAMES_\n#undef GTEST_9_TYPENAMES_\n#undef GTEST_10_TYPENAMES_\n\n#undef GTEST_DECLARE_TUPLE_AS_FRIEND_\n#undef GTEST_BY_REF_\n#undef GTEST_ADD_REF_\n#undef GTEST_TUPLE_ELEMENT_\n\n#endif  // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_\n# elif GTEST_ENV_HAS_STD_TUPLE_\n#  include <tuple>\n// C++11 puts its tuple into the ::std namespace rather than\n// ::std::tr1.  gtest expects tuple to live in ::std::tr1, so put it there.\n// This causes undefined behavior, but supported compilers react in\n// the way we intend.\nnamespace std {\nnamespace tr1 {\nusing ::std::get;\nusing ::std::make_tuple;\nusing ::std::tuple;\nusing ::std::tuple_element;\nusing ::std::tuple_size;\n}\n}\n\n# elif GTEST_OS_SYMBIAN\n\n// On Symbian, BOOST_HAS_TR1_TUPLE causes Boost's TR1 tuple library to\n// use STLport's tuple implementation, which unfortunately doesn't\n// work as the copy of STLport distributed with Symbian is incomplete.\n// By making sure BOOST_HAS_TR1_TUPLE is undefined, we force Boost to\n// use its own tuple implementation.\n#  ifdef BOOST_HAS_TR1_TUPLE\n#   undef BOOST_HAS_TR1_TUPLE\n#  endif  // BOOST_HAS_TR1_TUPLE\n\n// This prevents <boost/tr1/detail/config.hpp>, which defines\n// BOOST_HAS_TR1_TUPLE, from being #included by Boost's <tuple>.\n#  define BOOST_TR1_DETAIL_CONFIG_HPP_INCLUDED\n#  include <tuple>\n\n# elif defined(__GNUC__) && (GTEST_GCC_VER_ >= 40000)\n// GCC 4.0+ implements tr1/tuple in the <tr1/tuple> header.  This does\n// not conform to the TR1 spec, which requires the header to be <tuple>.\n\n#  if !GTEST_HAS_RTTI && GTEST_GCC_VER_ < 40302\n// Until version 4.3.2, gcc has a bug that causes <tr1/functional>,\n// which is #included by <tr1/tuple>, to not compile when RTTI is\n// disabled.  _TR1_FUNCTIONAL is the header guard for\n// <tr1/functional>.  Hence the following #define is a hack to prevent\n// <tr1/functional> from being included.\n#   define _TR1_FUNCTIONAL 1\n#   include <tr1/tuple>\n#   undef _TR1_FUNCTIONAL  // Allows the user to #include\n                        // <tr1/functional> if he chooses to.\n#  else\n#   include <tr1/tuple>  // NOLINT\n#  endif  // !GTEST_HAS_RTTI && GTEST_GCC_VER_ < 40302\n\n# else\n// If the compiler is not GCC 4.0+, we assume the user is using a\n// spec-conforming TR1 implementation.\n#  include <tuple>  // NOLINT\n# endif  // GTEST_USE_OWN_TR1_TUPLE\n\n#endif  // GTEST_HAS_TR1_TUPLE\n\n// Determines whether clone(2) is supported.\n// Usually it will only be available on Linux, excluding\n// Linux on the Itanium architecture.\n// Also see http://linux.die.net/man/2/clone.\n#ifndef GTEST_HAS_CLONE\n// The user didn't tell us, so we need to figure it out.\n\n# if GTEST_OS_LINUX && !defined(__ia64__)\n#  if GTEST_OS_LINUX_ANDROID\n// On Android, clone() is only available on ARM starting with Gingerbread.\n#    if defined(__arm__) && __ANDROID_API__ >= 9\n#     define GTEST_HAS_CLONE 1\n#    else\n#     define GTEST_HAS_CLONE 0\n#    endif\n#  else\n#   define GTEST_HAS_CLONE 1\n#  endif\n# else\n#  define GTEST_HAS_CLONE 0\n# endif  // GTEST_OS_LINUX && !defined(__ia64__)\n\n#endif  // GTEST_HAS_CLONE\n\n// Determines whether to support stream redirection. This is used to test\n// output correctness and to implement death tests.\n#ifndef GTEST_HAS_STREAM_REDIRECTION\n// By default, we assume that stream redirection is supported on all\n// platforms except known mobile ones.\n# if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN\n#  define GTEST_HAS_STREAM_REDIRECTION 0\n# else\n#  define GTEST_HAS_STREAM_REDIRECTION 1\n# endif  // !GTEST_OS_WINDOWS_MOBILE && !GTEST_OS_SYMBIAN\n#endif  // GTEST_HAS_STREAM_REDIRECTION\n\n// Determines whether to support death tests.\n// Google Test does not support death tests for VC 7.1 and earlier as\n// abort() in a VC 7.1 application compiled as GUI in debug config\n// pops up a dialog window that cannot be suppressed programmatically.\n#if (GTEST_OS_LINUX || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS || \\\n     (GTEST_OS_MAC && !GTEST_OS_IOS) || GTEST_OS_IOS_SIMULATOR || \\\n     (GTEST_OS_WINDOWS_DESKTOP && _MSC_VER >= 1400) || \\\n     GTEST_OS_WINDOWS_MINGW || GTEST_OS_AIX || GTEST_OS_HPUX || \\\n     GTEST_OS_OPENBSD || GTEST_OS_QNX)\n# define GTEST_HAS_DEATH_TEST 1\n# include <vector>  // NOLINT\n#endif\n\n// We don't support MSVC 7.1 with exceptions disabled now.  Therefore\n// all the compilers we care about are adequate for supporting\n// value-parameterized tests.\n#define GTEST_HAS_PARAM_TEST 1\n\n// Determines whether to support type-driven tests.\n\n// Typed tests need <typeinfo> and variadic macros, which GCC, VC++ 8.0,\n// Sun Pro CC, IBM Visual Age, and HP aCC support.\n#if defined(__GNUC__) || (_MSC_VER >= 1400) || defined(__SUNPRO_CC) || \\\n    defined(__IBMCPP__) || defined(__HP_aCC)\n# define GTEST_HAS_TYPED_TEST 1\n# define GTEST_HAS_TYPED_TEST_P 1\n#endif\n\n// Determines whether to support Combine(). This only makes sense when\n// value-parameterized tests are enabled.  The implementation doesn't\n// work on Sun Studio since it doesn't understand templated conversion\n// operators.\n#if GTEST_HAS_PARAM_TEST && GTEST_HAS_TR1_TUPLE && !defined(__SUNPRO_CC)\n# define GTEST_HAS_COMBINE 1\n#endif\n\n// Determines whether the system compiler uses UTF-16 for encoding wide strings.\n#define GTEST_WIDE_STRING_USES_UTF16_ \\\n    (GTEST_OS_WINDOWS || GTEST_OS_CYGWIN || GTEST_OS_SYMBIAN || GTEST_OS_AIX)\n\n// Determines whether test results can be streamed to a socket.\n#if GTEST_OS_LINUX\n# define GTEST_CAN_STREAM_RESULTS_ 1\n#endif\n\n// Defines some utility macros.\n\n// The GNU compiler emits a warning if nested \"if\" statements are followed by\n// an \"else\" statement and braces are not used to explicitly disambiguate the\n// \"else\" binding.  This leads to problems with code like:\n//\n//   if (gate)\n//     ASSERT_*(condition) << \"Some message\";\n//\n// The \"switch (0) case 0:\" idiom is used to suppress this.\n#ifdef __INTEL_COMPILER\n# define GTEST_AMBIGUOUS_ELSE_BLOCKER_\n#else\n# define GTEST_AMBIGUOUS_ELSE_BLOCKER_ switch (0) case 0: default:  // NOLINT\n#endif\n\n// Use this annotation at the end of a struct/class definition to\n// prevent the compiler from optimizing away instances that are never\n// used.  This is useful when all interesting logic happens inside the\n// c'tor and / or d'tor.  Example:\n//\n//   struct Foo {\n//     Foo() { ... }\n//   } GTEST_ATTRIBUTE_UNUSED_;\n//\n// Also use it after a variable or parameter declaration to tell the\n// compiler the variable/parameter does not have to be used.\n#if defined(__GNUC__) && !defined(COMPILER_ICC)\n# define GTEST_ATTRIBUTE_UNUSED_ __attribute__ ((unused))\n#else\n# define GTEST_ATTRIBUTE_UNUSED_\n#endif\n\n// A macro to disallow operator=\n// This should be used in the private: declarations for a class.\n#define GTEST_DISALLOW_ASSIGN_(type)\\\n  void operator=(type const &)\n\n// A macro to disallow copy constructor and operator=\n// This should be used in the private: declarations for a class.\n#define GTEST_DISALLOW_COPY_AND_ASSIGN_(type)\\\n  type(type const &);\\\n  GTEST_DISALLOW_ASSIGN_(type)\n\n// Tell the compiler to warn about unused return values for functions declared\n// with this macro.  The macro should be used on function declarations\n// following the argument list:\n//\n//   Sprocket* AllocateSprocket() GTEST_MUST_USE_RESULT_;\n#if defined(__GNUC__) && (GTEST_GCC_VER_ >= 30400) && !defined(COMPILER_ICC)\n# define GTEST_MUST_USE_RESULT_ __attribute__ ((warn_unused_result))\n#else\n# define GTEST_MUST_USE_RESULT_\n#endif  // __GNUC__ && (GTEST_GCC_VER_ >= 30400) && !COMPILER_ICC\n\n// Determine whether the compiler supports Microsoft's Structured Exception\n// Handling.  This is supported by several Windows compilers but generally\n// does not exist on any other system.\n#ifndef GTEST_HAS_SEH\n// The user didn't tell us, so we need to figure it out.\n\n# if defined(_MSC_VER) || defined(__BORLANDC__)\n// These two compilers are known to support SEH.\n#  define GTEST_HAS_SEH 1\n# else\n// Assume no SEH.\n#  define GTEST_HAS_SEH 0\n# endif\n\n#endif  // GTEST_HAS_SEH\n\n#ifdef _MSC_VER\n\n# if GTEST_LINKED_AS_SHARED_LIBRARY\n#  define GTEST_API_ __declspec(dllimport)\n# elif GTEST_CREATE_SHARED_LIBRARY\n#  define GTEST_API_ __declspec(dllexport)\n# endif\n\n#endif  // _MSC_VER\n\n#ifndef GTEST_API_\n# define GTEST_API_\n#endif\n\n#ifdef __GNUC__\n// Ask the compiler to never inline a given function.\n# define GTEST_NO_INLINE_ __attribute__((noinline))\n#else\n# define GTEST_NO_INLINE_\n#endif\n\n// _LIBCPP_VERSION is defined by the libc++ library from the LLVM project.\n#if defined(__GLIBCXX__) || defined(_LIBCPP_VERSION)\n# define GTEST_HAS_CXXABI_H_ 1\n#else\n# define GTEST_HAS_CXXABI_H_ 0\n#endif\n\nnamespace testing {\n\nclass Message;\n\nnamespace internal {\n\n// A secret type that Google Test users don't know about.  It has no\n// definition on purpose.  Therefore it's impossible to create a\n// Secret object, which is what we want.\nclass Secret;\n\n// The GTEST_COMPILE_ASSERT_ macro can be used to verify that a compile time\n// expression is true. For example, you could use it to verify the\n// size of a static array:\n//\n//   GTEST_COMPILE_ASSERT_(ARRAYSIZE(content_type_names) == CONTENT_NUM_TYPES,\n//                         content_type_names_incorrect_size);\n//\n// or to make sure a struct is smaller than a certain size:\n//\n//   GTEST_COMPILE_ASSERT_(sizeof(foo) < 128, foo_too_large);\n//\n// The second argument to the macro is the name of the variable. If\n// the expression is false, most compilers will issue a warning/error\n// containing the name of the variable.\n\ntemplate <bool>\nstruct CompileAssert {\n};\n\n#define GTEST_COMPILE_ASSERT_(expr, msg) \\\n  typedef ::testing::internal::CompileAssert<(static_cast<bool>(expr))> \\\n      msg[static_cast<bool>(expr) ? 1 : -1] GTEST_ATTRIBUTE_UNUSED_\n\n// Implementation details of GTEST_COMPILE_ASSERT_:\n//\n// - GTEST_COMPILE_ASSERT_ works by defining an array type that has -1\n//   elements (and thus is invalid) when the expression is false.\n//\n// - The simpler definition\n//\n//    #define GTEST_COMPILE_ASSERT_(expr, msg) typedef char msg[(expr) ? 1 : -1]\n//\n//   does not work, as gcc supports variable-length arrays whose sizes\n//   are determined at run-time (this is gcc's extension and not part\n//   of the C++ standard).  As a result, gcc fails to reject the\n//   following code with the simple definition:\n//\n//     int foo;\n//     GTEST_COMPILE_ASSERT_(foo, msg); // not supposed to compile as foo is\n//                                      // not a compile-time constant.\n//\n// - By using the type CompileAssert<(bool(expr))>, we ensures that\n//   expr is a compile-time constant.  (Template arguments must be\n//   determined at compile-time.)\n//\n// - The outter parentheses in CompileAssert<(bool(expr))> are necessary\n//   to work around a bug in gcc 3.4.4 and 4.0.1.  If we had written\n//\n//     CompileAssert<bool(expr)>\n//\n//   instead, these compilers will refuse to compile\n//\n//     GTEST_COMPILE_ASSERT_(5 > 0, some_message);\n//\n//   (They seem to think the \">\" in \"5 > 0\" marks the end of the\n//   template argument list.)\n//\n// - The array size is (bool(expr) ? 1 : -1), instead of simply\n//\n//     ((expr) ? 1 : -1).\n//\n//   This is to avoid running into a bug in MS VC 7.1, which\n//   causes ((0.0) ? 1 : -1) to incorrectly evaluate to 1.\n\n// StaticAssertTypeEqHelper is used by StaticAssertTypeEq defined in gtest.h.\n//\n// This template is declared, but intentionally undefined.\ntemplate <typename T1, typename T2>\nstruct StaticAssertTypeEqHelper;\n\ntemplate <typename T>\nstruct StaticAssertTypeEqHelper<T, T> {};\n\n#if GTEST_HAS_GLOBAL_STRING\ntypedef ::string string;\n#else\ntypedef ::std::string string;\n#endif  // GTEST_HAS_GLOBAL_STRING\n\n#if GTEST_HAS_GLOBAL_WSTRING\ntypedef ::wstring wstring;\n#elif GTEST_HAS_STD_WSTRING\ntypedef ::std::wstring wstring;\n#endif  // GTEST_HAS_GLOBAL_WSTRING\n\n// A helper for suppressing warnings on constant condition.  It just\n// returns 'condition'.\nGTEST_API_ bool IsTrue(bool condition);\n\n// Defines scoped_ptr.\n\n// This implementation of scoped_ptr is PARTIAL - it only contains\n// enough stuff to satisfy Google Test's need.\ntemplate <typename T>\nclass scoped_ptr {\n public:\n  typedef T element_type;\n\n  explicit scoped_ptr(T* p = nullptr) : ptr_(p) {}\n  ~scoped_ptr() { reset(); }\n\n  T& operator*() const { return *ptr_; }\n  T* operator->() const { return ptr_; }\n  T* get() const { return ptr_; }\n\n  T* release() {\n    T* const ptr = ptr_;\n    ptr_ = nullptr;\n    return ptr;\n  }\n\n  void reset(T* p = nullptr) {\n    if (p != ptr_) {\n      if (IsTrue(sizeof(T) > 0)) {  // Makes sure T is a complete type.\n        delete ptr_;\n      }\n      ptr_ = p;\n    }\n  }\n\n private:\n  T* ptr_;\n\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(scoped_ptr);\n};\n\n// Defines RE.\n\n// A simple C++ wrapper for <regex.h>.  It uses the POSIX Extended\n// Regular Expression syntax.\nclass GTEST_API_ RE {\n public:\n  // A copy constructor is required by the Standard to initialize object\n  // references from r-values.\n  RE(const RE& other) { Init(other.pattern()); }\n\n  // Constructs an RE from a string.\n  RE(const ::std::string& regex) { Init(regex.c_str()); }  // NOLINT\n\n#if GTEST_HAS_GLOBAL_STRING\n\n  RE(const ::string& regex) { Init(regex.c_str()); }  // NOLINT\n\n#endif  // GTEST_HAS_GLOBAL_STRING\n\n  RE(const char* regex) { Init(regex); }  // NOLINT\n  ~RE();\n\n  // Returns the string representation of the regex.\n  const char* pattern() const { return pattern_; }\n\n  // FullMatch(str, re) returns true iff regular expression re matches\n  // the entire str.\n  // PartialMatch(str, re) returns true iff regular expression re\n  // matches a substring of str (including str itself).\n  //\n  // TODO(wan@google.com): make FullMatch() and PartialMatch() work\n  // when str contains NUL characters.\n  static bool FullMatch(const ::std::string& str, const RE& re) {\n    return FullMatch(str.c_str(), re);\n  }\n  static bool PartialMatch(const ::std::string& str, const RE& re) {\n    return PartialMatch(str.c_str(), re);\n  }\n\n#if GTEST_HAS_GLOBAL_STRING\n\n  static bool FullMatch(const ::string& str, const RE& re) {\n    return FullMatch(str.c_str(), re);\n  }\n  static bool PartialMatch(const ::string& str, const RE& re) {\n    return PartialMatch(str.c_str(), re);\n  }\n\n#endif  // GTEST_HAS_GLOBAL_STRING\n\n  static bool FullMatch(const char* str, const RE& re);\n  static bool PartialMatch(const char* str, const RE& re);\n\n private:\n  void Init(const char* regex);\n\n  // We use a const char* instead of an std::string, as Google Test used to be\n  // used where std::string is not available.  TODO(wan@google.com): change to\n  // std::string.\n  const char* pattern_;\n  bool is_valid_;\n\n#if GTEST_USES_POSIX_RE\n\n  regex_t full_regex_;     // For FullMatch().\n  regex_t partial_regex_;  // For PartialMatch().\n\n#else  // GTEST_USES_SIMPLE_RE\n\n  const char* full_pattern_;  // For FullMatch();\n\n#endif\n\n  GTEST_DISALLOW_ASSIGN_(RE);\n};\n\n// Formats a source file path and a line number as they would appear\n// in an error message from the compiler used to compile this code.\nGTEST_API_ ::std::string FormatFileLocation(const char* file, int line);\n\n// Formats a file location for compiler-independent XML output.\n// Although this function is not platform dependent, we put it next to\n// FormatFileLocation in order to contrast the two functions.\nGTEST_API_ ::std::string FormatCompilerIndependentFileLocation(const char* file,\n                                                               int line);\n\n// Defines logging utilities:\n//   GTEST_LOG_(severity) - logs messages at the specified severity level. The\n//                          message itself is streamed into the macro.\n//   LogToStderr()  - directs all log messages to stderr.\n//   FlushInfoLog() - flushes informational log messages.\n\nenum GTestLogSeverity {\n  GTEST_INFO,\n  GTEST_WARNING,\n  GTEST_ERROR,\n  GTEST_FATAL\n};\n\n// Formats log entry severity, provides a stream object for streaming the\n// log message, and terminates the message with a newline when going out of\n// scope.\nclass GTEST_API_ GTestLog {\n public:\n  GTestLog(GTestLogSeverity severity, const char* file, int line);\n\n  // Flushes the buffers and, if severity is GTEST_FATAL, aborts the program.\n  ~GTestLog();\n\n  ::std::ostream& GetStream() { return ::std::cerr; }\n\n private:\n  const GTestLogSeverity severity_;\n\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestLog);\n};\n\n#define GTEST_LOG_(severity) \\\n    ::testing::internal::GTestLog(::testing::internal::GTEST_##severity, \\\n                                  __FILE__, __LINE__).GetStream()\n\ninline void LogToStderr() {}\ninline void FlushInfoLog() { fflush(nullptr); }\n\n// INTERNAL IMPLEMENTATION - DO NOT USE.\n//\n// GTEST_CHECK_ is an all-mode assert. It aborts the program if the condition\n// is not satisfied.\n//  Synopsys:\n//    GTEST_CHECK_(boolean_condition);\n//     or\n//    GTEST_CHECK_(boolean_condition) << \"Additional message\";\n//\n//    This checks the condition and if the condition is not satisfied\n//    it prints message about the condition violation, including the\n//    condition itself, plus additional message streamed into it, if any,\n//    and then it aborts the program. It aborts the program irrespective of\n//    whether it is built in the debug mode or not.\n#define GTEST_CHECK_(condition) \\\n    GTEST_AMBIGUOUS_ELSE_BLOCKER_ \\\n    if (::testing::internal::IsTrue(condition)) \\\n      ; \\\n    else \\\n      GTEST_LOG_(FATAL) << \"Condition \" #condition \" failed. \"\n\n// An all-mode assert to verify that the given POSIX-style function\n// call returns 0 (indicating success).  Known limitation: this\n// doesn't expand to a balanced 'if' statement, so enclose the macro\n// in {} if you need to use it as the only statement in an 'if'\n// branch.\n#define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \\\n  if (const int gtest_error = (posix_call)) \\\n    GTEST_LOG_(FATAL) << #posix_call << \"failed with error \" \\\n                      << gtest_error\n\n// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.\n//\n// Use ImplicitCast_ as a safe version of static_cast for upcasting in\n// the type hierarchy (e.g. casting a Foo* to a SuperclassOfFoo* or a\n// const Foo*).  When you use ImplicitCast_, the compiler checks that\n// the cast is safe.  Such explicit ImplicitCast_s are necessary in\n// surprisingly many situations where C++ demands an exact type match\n// instead of an argument type convertable to a target type.\n//\n// The syntax for using ImplicitCast_ is the same as for static_cast:\n//\n//   ImplicitCast_<ToType>(expr)\n//\n// ImplicitCast_ would have been part of the C++ standard library,\n// but the proposal was submitted too late.  It will probably make\n// its way into the language in the future.\n//\n// This relatively ugly name is intentional. It prevents clashes with\n// similar functions users may have (e.g., implicit_cast). The internal\n// namespace alone is not enough because the function can be found by ADL.\ntemplate<typename To>\ninline To ImplicitCast_(To x) { return x; }\n\n// When you upcast (that is, cast a pointer from type Foo to type\n// SuperclassOfFoo), it's fine to use ImplicitCast_<>, since upcasts\n// always succeed.  When you downcast (that is, cast a pointer from\n// type Foo to type SubclassOfFoo), static_cast<> isn't safe, because\n// how do you know the pointer is really of type SubclassOfFoo?  It\n// could be a bare Foo, or of type DifferentSubclassOfFoo.  Thus,\n// when you downcast, you should use this macro.  In debug mode, we\n// use dynamic_cast<> to double-check the downcast is legal (we die\n// if it's not).  In normal mode, we do the efficient static_cast<>\n// instead.  Thus, it's important to test in debug mode to make sure\n// the cast is legal!\n//    This is the only place in the code we should use dynamic_cast<>.\n// In particular, you SHOULDN'T be using dynamic_cast<> in order to\n// do RTTI (eg code like this:\n//    if (dynamic_cast<Subclass1>(foo)) HandleASubclass1Object(foo);\n//    if (dynamic_cast<Subclass2>(foo)) HandleASubclass2Object(foo);\n// You should design the code some other way not to need this.\n//\n// This relatively ugly name is intentional. It prevents clashes with\n// similar functions users may have (e.g., down_cast). The internal\n// namespace alone is not enough because the function can be found by ADL.\ntemplate<typename To, typename From>  // use like this: DownCast_<T*>(foo);\ninline To DownCast_(From* f) {  // so we only accept pointers\n  // Ensures that To is a sub-type of From *.  This test is here only\n  // for compile-time type checking, and has no overhead in an\n  // optimized build at run-time, as it will be optimized away\n  // completely.\n  if (false) {\n    const To to = nullptr;\n    ::testing::internal::ImplicitCast_<From*>(to);\n  }\n\n#if GTEST_HAS_RTTI\n  // RTTI: debug mode only!\n  GTEST_CHECK_(f == nullptr || dynamic_cast<To>(f) != nullptr);\n#endif\n  return static_cast<To>(f);\n}\n\n// Downcasts the pointer of type Base to Derived.\n// Derived must be a subclass of Base. The parameter MUST\n// point to a class of type Derived, not any subclass of it.\n// When RTTI is available, the function performs a runtime\n// check to enforce this.\ntemplate <class Derived, class Base>\nDerived* CheckedDowncastToActualType(Base* base) {\n#if GTEST_HAS_RTTI\n  GTEST_CHECK_(typeid(*base) == typeid(Derived));\n  return dynamic_cast<Derived*>(base);  // NOLINT\n#else\n  return static_cast<Derived*>(base);  // Poor man's downcast.\n#endif\n}\n\n#if GTEST_HAS_STREAM_REDIRECTION\n\n// Defines the stderr capturer:\n//   CaptureStdout     - starts capturing stdout.\n//   GetCapturedStdout - stops capturing stdout and returns the captured string.\n//   CaptureStderr     - starts capturing stderr.\n//   GetCapturedStderr - stops capturing stderr and returns the captured string.\n//\nGTEST_API_ void CaptureStdout();\nGTEST_API_ std::string GetCapturedStdout();\nGTEST_API_ void CaptureStderr();\nGTEST_API_ std::string GetCapturedStderr();\n\n#endif  // GTEST_HAS_STREAM_REDIRECTION\n\n\n#if GTEST_HAS_DEATH_TEST\n\nconst ::std::vector<testing::internal::string>& GetInjectableArgvs();\nvoid SetInjectableArgvs(const ::std::vector<testing::internal::string>*\n                             new_argvs);\n\n// A copy of all command line arguments.  Set by InitGoogleTest().\nextern ::std::vector<testing::internal::string> g_argvs;\n\n#endif  // GTEST_HAS_DEATH_TEST\n\n// Defines synchronization primitives.\n\n#if GTEST_HAS_PTHREAD\n\n// Sleeps for (roughly) n milli-seconds.  This function is only for\n// testing Google Test's own constructs.  Don't use it in user tests,\n// either directly or indirectly.\ninline void SleepMilliseconds(int n) {\n  const timespec time = {\n    0,                  // 0 seconds.\n    n * 1000L * 1000L,  // And n ms.\n  };\n  nanosleep(&time, nullptr);\n}\n\n// Allows a controller thread to pause execution of newly created\n// threads until notified.  Instances of this class must be created\n// and destroyed in the controller thread.\n//\n// This class is only for testing Google Test's own constructs. Do not\n// use it in user tests, either directly or indirectly.\nclass Notification {\n public:\n  Notification() : notified_(false) {\n    GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_init(&mutex_, nullptr));\n  }\n  ~Notification() {\n    pthread_mutex_destroy(&mutex_);\n  }\n\n  // Notifies all threads created with this notification to start. Must\n  // be called from the controller thread.\n  void Notify() {\n    pthread_mutex_lock(&mutex_);\n    notified_ = true;\n    pthread_mutex_unlock(&mutex_);\n  }\n\n  // Blocks until the controller thread notifies. Must be called from a test\n  // thread.\n  void WaitForNotification() {\n    for (;;) {\n      pthread_mutex_lock(&mutex_);\n      const bool notified = notified_;\n      pthread_mutex_unlock(&mutex_);\n      if (notified)\n        break;\n      SleepMilliseconds(10);\n    }\n  }\n\n private:\n  pthread_mutex_t mutex_;\n  bool notified_;\n\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(Notification);\n};\n\n// As a C-function, ThreadFuncWithCLinkage cannot be templated itself.\n// Consequently, it cannot select a correct instantiation of ThreadWithParam\n// in order to call its Run(). Introducing ThreadWithParamBase as a\n// non-templated base class for ThreadWithParam allows us to bypass this\n// problem.\nclass ThreadWithParamBase {\n public:\n  virtual ~ThreadWithParamBase() {}\n  virtual void Run() = 0;\n};\n\n// pthread_create() accepts a pointer to a function type with the C linkage.\n// According to the Standard (7.5/1), function types with different linkages\n// are different even if they are otherwise identical.  Some compilers (for\n// example, SunStudio) treat them as different types.  Since class methods\n// cannot be defined with C-linkage we need to define a free C-function to\n// pass into pthread_create().\nextern \"C\" inline void* ThreadFuncWithCLinkage(void* thread) {\n  static_cast<ThreadWithParamBase*>(thread)->Run();\n  return nullptr;\n}\n\n// Helper class for testing Google Test's multi-threading constructs.\n// To use it, write:\n//\n//   void ThreadFunc(int param) { /* Do things with param */ }\n//   Notification thread_can_start;\n//   ...\n//   // The thread_can_start parameter is optional; you can supply nullptr.\n//   ThreadWithParam<int> thread(&ThreadFunc, 5, &thread_can_start);\n//   thread_can_start.Notify();\n//\n// These classes are only for testing Google Test's own constructs. Do\n// not use them in user tests, either directly or indirectly.\ntemplate <typename T>\nclass ThreadWithParam : public ThreadWithParamBase {\n public:\n  typedef void (*UserThreadFunc)(T);\n\n  ThreadWithParam(\n      UserThreadFunc func, T param, Notification* thread_can_start)\n      : func_(func),\n        param_(param),\n        thread_can_start_(thread_can_start),\n        finished_(false) {\n    ThreadWithParamBase* const base = this;\n    // The thread can be created only after all fields except thread_\n    // have been initialized.\n    GTEST_CHECK_POSIX_SUCCESS_(\n        pthread_create(&thread_, 0, &ThreadFuncWithCLinkage, base));\n  }\n  ~ThreadWithParam() { Join(); }\n\n  void Join() {\n    if (!finished_) {\n      GTEST_CHECK_POSIX_SUCCESS_(pthread_join(thread_, 0));\n      finished_ = true;\n    }\n  }\n\n  virtual void Run() {\n    if (thread_can_start_ != nullptr)\n      thread_can_start_->WaitForNotification();\n    func_(param_);\n  }\n\n private:\n  const UserThreadFunc func_;  // User-supplied thread function.\n  const T param_;  // User-supplied parameter to the thread function.\n  // When non-null, used to block execution until the controller thread\n  // notifies.\n  Notification* const thread_can_start_;\n  bool finished_;  // true iff we know that the thread function has finished.\n  pthread_t thread_;  // The native thread object.\n\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParam);\n};\n\n// MutexBase and Mutex implement mutex on pthreads-based platforms. They\n// are used in conjunction with class MutexLock:\n//\n//   Mutex mutex;\n//   ...\n//   MutexLock lock(&mutex);  // Acquires the mutex and releases it at the end\n//                            // of the current scope.\n//\n// MutexBase implements behavior for both statically and dynamically\n// allocated mutexes.  Do not use MutexBase directly.  Instead, write\n// the following to define a static mutex:\n//\n//   GTEST_DEFINE_STATIC_MUTEX_(g_some_mutex);\n//\n// You can forward declare a static mutex like this:\n//\n//   GTEST_DECLARE_STATIC_MUTEX_(g_some_mutex);\n//\n// To create a dynamic mutex, just define an object of type Mutex.\nclass MutexBase {\n public:\n  // Acquires this mutex.\n  void Lock() {\n    GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_lock(&mutex_));\n    owner_ = pthread_self();\n    has_owner_ = true;\n  }\n\n  // Releases this mutex.\n  void Unlock() {\n    // Since the lock is being released the owner_ field should no longer be\n    // considered valid. We don't protect writing to has_owner_ here, as it's\n    // the caller's responsibility to ensure that the current thread holds the\n    // mutex when this is called.\n    has_owner_ = false;\n    GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_unlock(&mutex_));\n  }\n\n  // Does nothing if the current thread holds the mutex. Otherwise, crashes\n  // with high probability.\n  void AssertHeld() const {\n    GTEST_CHECK_(has_owner_ && pthread_equal(owner_, pthread_self()))\n        << \"The current thread is not holding the mutex @\" << this;\n  }\n\n  // A static mutex may be used before main() is entered.  It may even\n  // be used before the dynamic initialization stage.  Therefore we\n  // must be able to initialize a static mutex object at link time.\n  // This means MutexBase has to be a POD and its member variables\n  // have to be public.\n public:\n  pthread_mutex_t mutex_;  // The underlying pthread mutex.\n  // has_owner_ indicates whether the owner_ field below contains a valid thread\n  // ID and is therefore safe to inspect (e.g., to use in pthread_equal()). All\n  // accesses to the owner_ field should be protected by a check of this field.\n  // An alternative might be to memset() owner_ to all zeros, but there's no\n  // guarantee that a zero'd pthread_t is necessarily invalid or even different\n  // from pthread_self().\n  bool has_owner_;\n  pthread_t owner_;  // The thread holding the mutex.\n};\n\n// Forward-declares a static mutex.\n# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \\\n    extern ::testing::internal::MutexBase mutex\n\n// Defines and statically (i.e. at link time) initializes a static mutex.\n// The initialization list here does not explicitly initialize each field,\n// instead relying on default initialization for the unspecified fields. In\n// particular, the owner_ field (a pthread_t) is not explicitly initialized.\n// This allows initialization to work whether pthread_t is a scalar or struct.\n// The flag -Wmissing-field-initializers must not be specified for this to work.\n# define GTEST_DEFINE_STATIC_MUTEX_(mutex) \\\n    ::testing::internal::MutexBase mutex = { PTHREAD_MUTEX_INITIALIZER, false, 0 }\n\n// The Mutex class can only be used for mutexes created at runtime. It\n// shares its API with MutexBase otherwise.\nclass Mutex : public MutexBase {\n public:\n  Mutex() {\n    GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_init(&mutex_, nullptr));\n    has_owner_ = false;\n  }\n  ~Mutex() {\n    GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_destroy(&mutex_));\n  }\n\n private:\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(Mutex);\n};\n\n// We cannot name this class MutexLock as the ctor declaration would\n// conflict with a macro named MutexLock, which is defined on some\n// platforms.  Hence the typedef trick below.\nclass GTestMutexLock {\n public:\n  explicit GTestMutexLock(MutexBase* mutex)\n      : mutex_(mutex) { mutex_->Lock(); }\n\n  ~GTestMutexLock() { mutex_->Unlock(); }\n\n private:\n  MutexBase* const mutex_;\n\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestMutexLock);\n};\n\ntypedef GTestMutexLock MutexLock;\n\n// Helpers for ThreadLocal.\n\n// pthread_key_create() requires DeleteThreadLocalValue() to have\n// C-linkage.  Therefore it cannot be templatized to access\n// ThreadLocal<T>.  Hence the need for class\n// ThreadLocalValueHolderBase.\nclass ThreadLocalValueHolderBase {\n public:\n  virtual ~ThreadLocalValueHolderBase() {}\n};\n\n// Called by pthread to delete thread-local data stored by\n// pthread_setspecific().\nextern \"C\" inline void DeleteThreadLocalValue(void* value_holder) {\n  delete static_cast<ThreadLocalValueHolderBase*>(value_holder);\n}\n\n// Implements thread-local storage on pthreads-based systems.\n//\n//   // Thread 1\n//   ThreadLocal<int> tl(100);  // 100 is the default value for each thread.\n//\n//   // Thread 2\n//   tl.set(150);  // Changes the value for thread 2 only.\n//   EXPECT_EQ(150, tl.get());\n//\n//   // Thread 1\n//   EXPECT_EQ(100, tl.get());  // In thread 1, tl has the original value.\n//   tl.set(200);\n//   EXPECT_EQ(200, tl.get());\n//\n// The template type argument T must have a public copy constructor.\n// In addition, the default ThreadLocal constructor requires T to have\n// a public default constructor.\n//\n// An object managed for a thread by a ThreadLocal instance is deleted\n// when the thread exits.  Or, if the ThreadLocal instance dies in\n// that thread, when the ThreadLocal dies.  It's the user's\n// responsibility to ensure that all other threads using a ThreadLocal\n// have exited when it dies, or the per-thread objects for those\n// threads will not be deleted.\n//\n// Google Test only uses global ThreadLocal objects.  That means they\n// will die after main() has returned.  Therefore, no per-thread\n// object managed by Google Test will be leaked as long as all threads\n// using Google Test have exited when main() returns.\ntemplate <typename T>\nclass ThreadLocal {\n public:\n  ThreadLocal() : key_(CreateKey()),\n                  default_() {}\n  explicit ThreadLocal(const T& value) : key_(CreateKey()),\n                                         default_(value) {}\n\n  ~ThreadLocal() {\n    // Destroys the managed object for the current thread, if any.\n    DeleteThreadLocalValue(pthread_getspecific(key_));\n\n    // Releases resources associated with the key.  This will *not*\n    // delete managed objects for other threads.\n    GTEST_CHECK_POSIX_SUCCESS_(pthread_key_delete(key_));\n  }\n\n  T* pointer() { return GetOrCreateValue(); }\n  const T* pointer() const { return GetOrCreateValue(); }\n  const T& get() const { return *pointer(); }\n  void set(const T& value) { *pointer() = value; }\n\n private:\n  // Holds a value of type T.\n  class ValueHolder : public ThreadLocalValueHolderBase {\n   public:\n    explicit ValueHolder(const T& value) : value_(value) {}\n\n    T* pointer() { return &value_; }\n\n   private:\n    T value_;\n    GTEST_DISALLOW_COPY_AND_ASSIGN_(ValueHolder);\n  };\n\n  static pthread_key_t CreateKey() {\n    pthread_key_t key;\n    // When a thread exits, DeleteThreadLocalValue() will be called on\n    // the object managed for that thread.\n    GTEST_CHECK_POSIX_SUCCESS_(\n        pthread_key_create(&key, &DeleteThreadLocalValue));\n    return key;\n  }\n\n  T* GetOrCreateValue() const {\n    ThreadLocalValueHolderBase* const holder =\n        static_cast<ThreadLocalValueHolderBase*>(pthread_getspecific(key_));\n    if (holder != nullptr) {\n      return CheckedDowncastToActualType<ValueHolder>(holder)->pointer();\n    }\n\n    ValueHolder* const new_holder = new ValueHolder(default_);\n    ThreadLocalValueHolderBase* const holder_base = new_holder;\n    GTEST_CHECK_POSIX_SUCCESS_(pthread_setspecific(key_, holder_base));\n    return new_holder->pointer();\n  }\n\n  // A key pthreads uses for looking up per-thread values.\n  const pthread_key_t key_;\n  const T default_;  // The default value for each thread.\n\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadLocal);\n};\n\n# define GTEST_IS_THREADSAFE 1\n\n#else  // GTEST_HAS_PTHREAD\n\n// A dummy implementation of synchronization primitives (mutex, lock,\n// and thread-local variable).  Necessary for compiling Google Test where\n// mutex is not supported - using Google Test in multiple threads is not\n// supported on such platforms.\n\nclass Mutex {\n public:\n  Mutex() {}\n  void Lock() {}\n  void Unlock() {}\n  void AssertHeld() const {}\n};\n\n# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \\\n  extern ::testing::internal::Mutex mutex\n\n# define GTEST_DEFINE_STATIC_MUTEX_(mutex) ::testing::internal::Mutex mutex\n\nclass GTestMutexLock {\n public:\n  explicit GTestMutexLock(Mutex*) {}  // NOLINT\n};\n\ntypedef GTestMutexLock MutexLock;\n\ntemplate <typename T>\nclass ThreadLocal {\n public:\n  ThreadLocal() : value_() {}\n  explicit ThreadLocal(const T& value) : value_(value) {}\n  T* pointer() { return &value_; }\n  const T* pointer() const { return &value_; }\n  const T& get() const { return value_; }\n  void set(const T& value) { value_ = value; }\n private:\n  T value_;\n};\n\n// The above synchronization primitives have dummy implementations.\n// Therefore Google Test is not thread-safe.\n# define GTEST_IS_THREADSAFE 0\n\n#endif  // GTEST_HAS_PTHREAD\n\n// Returns the number of threads running in the process, or 0 to indicate that\n// we cannot detect it.\nGTEST_API_ size_t GetThreadCount();\n\n// Passing non-POD classes through ellipsis (...) crashes the ARM\n// compiler and generates a warning in Sun Studio.  The Nokia Symbian\n// and the IBM XL C/C++ compiler try to instantiate a copy constructor\n// for objects passed through ellipsis (...), failing for uncopyable\n// objects.  We define this to ensure that only POD is passed through\n// ellipsis on these systems.\n#if defined(__SYMBIAN32__) || defined(__IBMCPP__) || defined(__SUNPRO_CC)\n// We lose support for null detection where the compiler doesn't like\n// passing non-POD classes through ellipsis (...).\n# define GTEST_ELLIPSIS_NEEDS_POD_ 1\n#else\n# define GTEST_CAN_COMPARE_NULL 1\n#endif\n\n// The Nokia Symbian and IBM XL C/C++ compilers cannot decide between\n// const T& and const T* in a function template.  These compilers\n// _can_ decide between class template specializations for T and T*,\n// so a tr1::type_traits-like is_pointer works.\n#if defined(__SYMBIAN32__) || defined(__IBMCPP__)\n# define GTEST_NEEDS_IS_POINTER_ 1\n#endif\n\ntemplate <bool bool_value>\nstruct bool_constant {\n  typedef bool_constant<bool_value> type;\n  static const bool value = bool_value;\n};\ntemplate <bool bool_value> const bool bool_constant<bool_value>::value;\n\ntypedef bool_constant<false> false_type;\ntypedef bool_constant<true> true_type;\n\ntemplate <typename T>\nstruct is_pointer : public false_type {};\n\ntemplate <typename T>\nstruct is_pointer<T*> : public true_type {};\n\ntemplate <typename Iterator>\nstruct IteratorTraits {\n  typedef typename Iterator::value_type value_type;\n};\n\ntemplate <typename T>\nstruct IteratorTraits<T*> {\n  typedef T value_type;\n};\n\ntemplate <typename T>\nstruct IteratorTraits<const T*> {\n  typedef T value_type;\n};\n\n#if GTEST_OS_WINDOWS\n# define GTEST_PATH_SEP_ \"\\\\\"\n# define GTEST_HAS_ALT_PATH_SEP_ 1\n// The biggest signed integer type the compiler supports.\ntypedef __int64 BiggestInt;\n#else\n# define GTEST_PATH_SEP_ \"/\"\n# define GTEST_HAS_ALT_PATH_SEP_ 0\ntypedef long BiggestInt;  // NOLINT\n#endif  // GTEST_OS_WINDOWS\n\n// Utilities for char.\n\n// isspace(int ch) and friends accept an unsigned char or EOF.  char\n// may be signed, depending on the compiler (or compiler flags).\n// Therefore we need to cast a char to unsigned char before calling\n// isspace(), etc.\n\ninline bool IsAlpha(char ch) {\n  return isalpha(static_cast<unsigned char>(ch)) != 0;\n}\ninline bool IsAlNum(char ch) {\n  return isalnum(static_cast<unsigned char>(ch)) != 0;\n}\ninline bool IsDigit(char ch) {\n  return isdigit(static_cast<unsigned char>(ch)) != 0;\n}\ninline bool IsLower(char ch) {\n  return islower(static_cast<unsigned char>(ch)) != 0;\n}\ninline bool IsSpace(char ch) {\n  return isspace(static_cast<unsigned char>(ch)) != 0;\n}\ninline bool IsUpper(char ch) {\n  return isupper(static_cast<unsigned char>(ch)) != 0;\n}\ninline bool IsXDigit(char ch) {\n  return isxdigit(static_cast<unsigned char>(ch)) != 0;\n}\ninline bool IsXDigit(wchar_t ch) {\n  const unsigned char low_byte = static_cast<unsigned char>(ch);\n  return ch == low_byte && isxdigit(low_byte) != 0;\n}\n\ninline char ToLower(char ch) {\n  return static_cast<char>(tolower(static_cast<unsigned char>(ch)));\n}\ninline char ToUpper(char ch) {\n  return static_cast<char>(toupper(static_cast<unsigned char>(ch)));\n}\n\n// The testing::internal::posix namespace holds wrappers for common\n// POSIX functions.  These wrappers hide the differences between\n// Windows/MSVC and POSIX systems.  Since some compilers define these\n// standard functions as macros, the wrapper cannot have the same name\n// as the wrapped function.\n\nnamespace posix {\n\n// Functions with a different name on Windows.\n\n#if GTEST_OS_WINDOWS\n\ntypedef struct _stat StatStruct;\n\n# ifdef __BORLANDC__\ninline int IsATTY(int fd) { return isatty(fd); }\ninline int StrCaseCmp(const char* s1, const char* s2) {\n  return stricmp(s1, s2);\n}\ninline char* StrDup(const char* src) { return strdup(src); }\n# else  // !__BORLANDC__\n#  if GTEST_OS_WINDOWS_MOBILE\ninline int IsATTY(int /* fd */) { return 0; }\n#  else\ninline int IsATTY(int fd) { return _isatty(fd); }\n#  endif  // GTEST_OS_WINDOWS_MOBILE\ninline int StrCaseCmp(const char* s1, const char* s2) {\n  return _stricmp(s1, s2);\n}\ninline char* StrDup(const char* src) { return _strdup(src); }\n# endif  // __BORLANDC__\n\n# if GTEST_OS_WINDOWS_MOBILE\ninline int FileNo(FILE* file) { return reinterpret_cast<int>(_fileno(file)); }\n// Stat(), RmDir(), and IsDir() are not needed on Windows CE at this\n// time and thus not defined there.\n# else\ninline int FileNo(FILE* file) { return _fileno(file); }\ninline int Stat(const char* path, StatStruct* buf) { return _stat(path, buf); }\ninline int RmDir(const char* dir) { return _rmdir(dir); }\ninline bool IsDir(const StatStruct& st) {\n  return (_S_IFDIR & st.st_mode) != 0;\n}\n# endif  // GTEST_OS_WINDOWS_MOBILE\n\n#else\n\ntypedef struct stat StatStruct;\n\ninline int FileNo(FILE* file) { return fileno(file); }\ninline int IsATTY(int fd) { return isatty(fd); }\ninline int Stat(const char* path, StatStruct* buf) { return stat(path, buf); }\ninline int StrCaseCmp(const char* s1, const char* s2) {\n  return strcasecmp(s1, s2);\n}\ninline char* StrDup(const char* src) { return strdup(src); }\ninline int RmDir(const char* dir) { return rmdir(dir); }\ninline bool IsDir(const StatStruct& st) { return S_ISDIR(st.st_mode); }\n\n#endif  // GTEST_OS_WINDOWS\n\n// Functions deprecated by MSVC 8.0.\n\n#ifdef _MSC_VER\n// Temporarily disable warning 4996 (deprecated function).\n# pragma warning(push)\n# pragma warning(disable:4996)\n#endif\n\ninline const char* StrNCpy(char* dest, const char* src, size_t n) {\n  return strncpy(dest, src, n);\n}\n\n// ChDir(), FReopen(), FDOpen(), Read(), Write(), Close(), and\n// StrError() aren't needed on Windows CE at this time and thus not\n// defined there.\n\n#if !GTEST_OS_WINDOWS_MOBILE\ninline int ChDir(const char* dir) { return chdir(dir); }\n#endif\ninline FILE* FOpen(const char* path, const char* mode) {\n  return fopen(path, mode);\n}\n#if !GTEST_OS_WINDOWS_MOBILE\ninline FILE *FReopen(const char* path, const char* mode, FILE* stream) {\n  return freopen(path, mode, stream);\n}\ninline FILE* FDOpen(int fd, const char* mode) { return fdopen(fd, mode); }\n#endif\ninline int FClose(FILE* fp) { return fclose(fp); }\n#if !GTEST_OS_WINDOWS_MOBILE\ninline int Read(int fd, void* buf, unsigned int count) {\n  return static_cast<int>(read(fd, buf, count));\n}\ninline int Write(int fd, const void* buf, unsigned int count) {\n  return static_cast<int>(write(fd, buf, count));\n}\ninline int Close(int fd) { return close(fd); }\ninline const char* StrError(int errnum) { return strerror(errnum); }\n#endif\ninline const char* GetEnv(const char* name) {\n#if GTEST_OS_WINDOWS_MOBILE\n  // We are on Windows CE, which has no environment variables.\n  return nullptr;\n#elif defined(__BORLANDC__) || defined(__SunOS_5_8) || defined(__SunOS_5_9)\n  // Environment variables which we programmatically clear will be set to the\n  // empty string rather than unset (null).  Handle that case.\n  const char* const env = getenv(name);\n  return (env != nullptr && env[0] != '\\0') ? env : nullptr;\n#else\n  return getenv(name);\n#endif\n}\n\n#ifdef _MSC_VER\n# pragma warning(pop)  // Restores the warning state.\n#endif\n\n#if GTEST_OS_WINDOWS_MOBILE\n// Windows CE has no C library. The abort() function is used in\n// several places in Google Test. This implementation provides a reasonable\n// imitation of standard behaviour.\nvoid Abort();\n#else\ninline void Abort() { abort(); }\n#endif  // GTEST_OS_WINDOWS_MOBILE\n\n}  // namespace posix\n\n// MSVC \"deprecates\" snprintf and issues warnings wherever it is used.  In\n// order to avoid these warnings, we need to use _snprintf or _snprintf_s on\n// MSVC-based platforms.  We map the GTEST_SNPRINTF_ macro to the appropriate\n// function in order to achieve that.  We use macro definition here because\n// snprintf is a variadic function.\n#if _MSC_VER >= 1400 && !GTEST_OS_WINDOWS_MOBILE\n// MSVC 2005 and above support variadic macros.\n# define GTEST_SNPRINTF_(buffer, size, format, ...) \\\n     _snprintf_s(buffer, size, size, format, __VA_ARGS__)\n#elif defined(_MSC_VER)\n// Windows CE does not define _snprintf_s and MSVC prior to 2005 doesn't\n// complain about _snprintf.\n# define GTEST_SNPRINTF_ _snprintf\n#else\n# define GTEST_SNPRINTF_ snprintf\n#endif\n\n// The maximum number a BiggestInt can represent.  This definition\n// works no matter BiggestInt is represented in one's complement or\n// two's complement.\n//\n// We cannot rely on numeric_limits in STL, as __int64 and long long\n// are not part of standard C++ and numeric_limits doesn't need to be\n// defined for them.\nconst BiggestInt kMaxBiggestInt =\n    ~(static_cast<BiggestInt>(1) << (8*sizeof(BiggestInt) - 1));\n\n// This template class serves as a compile-time function from size to\n// type.  It maps a size in bytes to a primitive type with that\n// size. e.g.\n//\n//   TypeWithSize<4>::UInt\n//\n// is typedef-ed to be unsigned int (unsigned integer made up of 4\n// bytes).\n//\n// Such functionality should belong to STL, but I cannot find it\n// there.\n//\n// Google Test uses this class in the implementation of floating-point\n// comparison.\n//\n// For now it only handles UInt (unsigned int) as that's all Google Test\n// needs.  Other types can be easily added in the future if need\n// arises.\ntemplate <size_t size>\nclass TypeWithSize {\n public:\n  // This prevents the user from using TypeWithSize<N> with incorrect\n  // values of N.\n  typedef void UInt;\n};\n\n// The specialization for size 4.\ntemplate <>\nclass TypeWithSize<4> {\n public:\n  // unsigned int has size 4 in both gcc and MSVC.\n  //\n  // As base/basictypes.h doesn't compile on Windows, we cannot use\n  // uint32, uint64, and etc here.\n  typedef int Int;\n  typedef unsigned int UInt;\n};\n\n// The specialization for size 8.\ntemplate <>\nclass TypeWithSize<8> {\n public:\n#if GTEST_OS_WINDOWS\n  typedef __int64 Int;\n  typedef unsigned __int64 UInt;\n#else\n  typedef long Int;  // NOLINT\n  typedef unsigned long UInt;  // NOLINT\n#endif  // GTEST_OS_WINDOWS\n};\n\n// Integer types of known sizes.\ntypedef TypeWithSize<4>::Int Int32;\ntypedef TypeWithSize<4>::UInt UInt32;\ntypedef TypeWithSize<8>::Int Int64;\ntypedef TypeWithSize<8>::UInt UInt64;\ntypedef TypeWithSize<8>::Int TimeInMillis;  // Represents time in milliseconds.\n\n// Utilities for command line flags and environment variables.\n\n// Macro for referencing flags.\n#define GTEST_FLAG(name) FLAGS_gtest_##name\n\n// Macros for declaring flags.\n#define GTEST_DECLARE_bool_(name) GTEST_API_ extern bool GTEST_FLAG(name)\n#define GTEST_DECLARE_int32_(name) \\\n    GTEST_API_ extern ::testing::internal::Int32 GTEST_FLAG(name)\n#define GTEST_DECLARE_string_(name) \\\n    GTEST_API_ extern ::std::string GTEST_FLAG(name)\n\n// Macros for defining flags.\n#define GTEST_DEFINE_bool_(name, default_val, doc) \\\n    GTEST_API_ bool GTEST_FLAG(name) = (default_val)\n#define GTEST_DEFINE_int32_(name, default_val, doc) \\\n    GTEST_API_ ::testing::internal::Int32 GTEST_FLAG(name) = (default_val)\n#define GTEST_DEFINE_string_(name, default_val, doc) \\\n    GTEST_API_ ::std::string GTEST_FLAG(name) = (default_val)\n\n// Thread annotations\n#define GTEST_EXCLUSIVE_LOCK_REQUIRED_(locks)\n#define GTEST_LOCK_EXCLUDED_(locks)\n\n// Parses 'str' for a 32-bit signed integer.  If successful, writes the result\n// to *value and returns true; otherwise leaves *value unchanged and returns\n// false.\n// TODO(chandlerc): Find a better way to refactor flag and environment parsing\n// out of both gtest-port.cc and gtest.cc to avoid exporting this utility\n// function.\nbool ParseInt32(const Message& src_text, const char* str, Int32* value);\n\n// Parses a bool/Int32/string from the environment variable\n// corresponding to the given Google Test flag.\nbool BoolFromGTestEnv(const char* flag, bool default_val);\nGTEST_API_ Int32 Int32FromGTestEnv(const char* flag, Int32 default_val);\nconst char* StringFromGTestEnv(const char* flag, const char* default_val);\n\n}  // namespace internal\n}  // namespace testing\n\n#endif  // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_\n\n#if GTEST_OS_LINUX\n# include <stdlib.h>\n# include <sys/types.h>\n# include <sys/wait.h>\n# include <unistd.h>\n#endif  // GTEST_OS_LINUX\n\n#if GTEST_HAS_EXCEPTIONS\n# include <stdexcept>\n#endif\n\n#include <ctype.h>\n#include <float.h>\n#include <string.h>\n#include <iomanip>\n#include <limits>\n#include <set>\n\n// Copyright 2005, Google Inc.\n// All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n// Author: wan@google.com (Zhanyong Wan)\n//\n// The Google C++ Testing Framework (Google Test)\n//\n// This header file defines the Message class.\n//\n// IMPORTANT NOTE: Due to limitation of the C++ language, we have to\n// leave some internal implementation details in this header file.\n// They are clearly marked by comments like this:\n//\n//   // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.\n//\n// Such code is NOT meant to be used by a user directly, and is subject\n// to CHANGE WITHOUT NOTICE.  Therefore DO NOT DEPEND ON IT in a user\n// program!\n\n#ifndef GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_\n#define GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_\n\n#include <limits>\n\n\n// Ensures that there is at least one operator<< in the global namespace.\n// See Message& operator<<(...) below for why.\nvoid operator<<(const testing::internal::Secret&, int);\n\nnamespace testing {\n\n// The Message class works like an ostream repeater.\n//\n// Typical usage:\n//\n//   1. You stream a bunch of values to a Message object.\n//      It will remember the text in a stringstream.\n//   2. Then you stream the Message object to an ostream.\n//      This causes the text in the Message to be streamed\n//      to the ostream.\n//\n// For example;\n//\n//   testing::Message foo;\n//   foo << 1 << \" != \" << 2;\n//   std::cout << foo;\n//\n// will print \"1 != 2\".\n//\n// Message is not intended to be inherited from.  In particular, its\n// destructor is not virtual.\n//\n// Note that stringstream behaves differently in gcc and in MSVC.  You\n// can stream a null char pointer to it in the former, but not in the\n// latter (it causes an access violation if you do).  The Message\n// class hides this difference by treating a null char pointer as\n// \"(null)\".\nclass GTEST_API_ Message {\n private:\n  // The type of basic IO manipulators (endl, ends, and flush) for\n  // narrow streams.\n  typedef std::ostream& (*BasicNarrowIoManip)(std::ostream&);\n\n public:\n  // Constructs an empty Message.\n  Message();\n\n  // Copy constructor.\n  Message(const Message& msg) : ss_(new ::std::stringstream) {  // NOLINT\n    *ss_ << msg.GetString();\n  }\n\n  // Constructs a Message from a C-string.\n  explicit Message(const char* str) : ss_(new ::std::stringstream) {\n    *ss_ << str;\n  }\n\n#if GTEST_OS_SYMBIAN\n  // Streams a value (either a pointer or not) to this object.\n  template <typename T>\n  inline Message& operator <<(const T& value) {\n    StreamHelper(typename internal::is_pointer<T>::type(), value);\n    return *this;\n  }\n#else\n  // Streams a non-pointer value to this object.\n  template <typename T>\n  inline Message& operator <<(const T& val) {\n    // Some libraries overload << for STL containers.  These\n    // overloads are defined in the global namespace instead of ::std.\n    //\n    // C++'s symbol lookup rule (i.e. Koenig lookup) says that these\n    // overloads are visible in either the std namespace or the global\n    // namespace, but not other namespaces, including the testing\n    // namespace which Google Test's Message class is in.\n    //\n    // To allow STL containers (and other types that has a << operator\n    // defined in the global namespace) to be used in Google Test\n    // assertions, testing::Message must access the custom << operator\n    // from the global namespace.  With this using declaration,\n    // overloads of << defined in the global namespace and those\n    // visible via Koenig lookup are both exposed in this function.\n    using ::operator <<;\n    *ss_ << val;\n    return *this;\n  }\n\n  // Streams a pointer value to this object.\n  //\n  // This function is an overload of the previous one.  When you\n  // stream a pointer to a Message, this definition will be used as it\n  // is more specialized.  (The C++ Standard, section\n  // [temp.func.order].)  If you stream a non-pointer, then the\n  // previous definition will be used.\n  //\n  // The reason for this overload is that streaming a null pointer to\n  // ostream is undefined behavior.  Depending on the compiler, you\n  // may get \"0\", \"(nil)\", \"(null)\", or an access violation.  To\n  // ensure consistent result across compilers, we always treat null\n  // as \"(null)\".\n  template <typename T>\n  inline Message& operator <<(T* const& pointer) {  // NOLINT\n    if (pointer == nullptr) {\n      *ss_ << \"(null)\";\n    } else {\n      *ss_ << pointer;\n    }\n    return *this;\n  }\n#endif  // GTEST_OS_SYMBIAN\n\n  // Since the basic IO manipulators are overloaded for both narrow\n  // and wide streams, we have to provide this specialized definition\n  // of operator <<, even though its body is the same as the\n  // templatized version above.  Without this definition, streaming\n  // endl or other basic IO manipulators to Message will confuse the\n  // compiler.\n  Message& operator <<(BasicNarrowIoManip val) {\n    *ss_ << val;\n    return *this;\n  }\n\n  // Instead of 1/0, we want to see true/false for bool values.\n  Message& operator <<(bool b) {\n    return *this << (b ? \"true\" : \"false\");\n  }\n\n  // These two overloads allow streaming a wide C string to a Message\n  // using the UTF-8 encoding.\n  Message& operator <<(const wchar_t* wide_c_str);\n  Message& operator <<(wchar_t* wide_c_str);\n\n#if GTEST_HAS_STD_WSTRING\n  // Converts the given wide string to a narrow string using the UTF-8\n  // encoding, and streams the result to this Message object.\n  Message& operator <<(const ::std::wstring& wstr);\n#endif  // GTEST_HAS_STD_WSTRING\n\n#if GTEST_HAS_GLOBAL_WSTRING\n  // Converts the given wide string to a narrow string using the UTF-8\n  // encoding, and streams the result to this Message object.\n  Message& operator <<(const ::wstring& wstr);\n#endif  // GTEST_HAS_GLOBAL_WSTRING\n\n  // Gets the text streamed to this object so far as an std::string.\n  // Each '\\0' character in the buffer is replaced with \"\\\\0\".\n  //\n  // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.\n  std::string GetString() const;\n\n private:\n\n#if GTEST_OS_SYMBIAN\n  // These are needed as the Nokia Symbian Compiler cannot decide between\n  // const T& and const T* in a function template. The Nokia compiler _can_\n  // decide between class template specializations for T and T*, so a\n  // tr1::type_traits-like is_pointer works, and we can overload on that.\n  template <typename T>\n  inline void StreamHelper(internal::true_type /*is_pointer*/, T* pointer) {\n    if (pointer == nullptr) {\n      *ss_ << \"(null)\";\n    } else {\n      *ss_ << pointer;\n    }\n  }\n  template <typename T>\n  inline void StreamHelper(internal::false_type /*is_pointer*/,\n                           const T& value) {\n    // See the comments in Message& operator <<(const T&) above for why\n    // we need this using statement.\n    using ::operator <<;\n    *ss_ << value;\n  }\n#endif  // GTEST_OS_SYMBIAN\n\n  // We'll hold the text streamed to this object here.\n  const internal::scoped_ptr< ::std::stringstream> ss_;\n\n  // We declare (but don't implement) this to prevent the compiler\n  // from implementing the assignment operator.\n  void operator=(const Message&);\n};\n\n// Streams a Message to an ostream.\ninline std::ostream& operator <<(std::ostream& os, const Message& sb) {\n  return os << sb.GetString();\n}\n\nnamespace internal {\n\n// Converts a streamable value to an std::string.  A null pointer is\n// converted to \"(null)\".  When the input value is a ::string,\n// ::std::string, ::wstring, or ::std::wstring object, each NUL\n// character in it is replaced with \"\\\\0\".\ntemplate <typename T>\nstd::string StreamableToString(const T& streamable) {\n  return (Message() << streamable).GetString();\n}\n\n}  // namespace internal\n}  // namespace testing\n\n#endif  // GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_\n// Copyright 2005, Google Inc.\n// All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n// Authors: wan@google.com (Zhanyong Wan), eefacm@gmail.com (Sean Mcafee)\n//\n// The Google C++ Testing Framework (Google Test)\n//\n// This header file declares the String class and functions used internally by\n// Google Test.  They are subject to change without notice. They should not used\n// by code external to Google Test.\n//\n// This header file is #included by <gtest/internal/gtest-internal.h>.\n// It should not be #included by other files.\n\n#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_\n#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_\n\n#ifdef __BORLANDC__\n// string.h is not guaranteed to provide strcpy on C++ Builder.\n# include <mem.h>\n#endif\n\n#include <string.h>\n#include <string>\n\n\nnamespace testing {\nnamespace internal {\n\n// String - an abstract class holding static string utilities.\nclass GTEST_API_ String {\n public:\n  // Static utility methods\n\n  // Clones a 0-terminated C string, allocating memory using new.  The\n  // caller is responsible for deleting the return value using\n  // delete[].  Returns the cloned string, or nullptr if the input is\n  // null.\n  //\n  // This is different from strdup() in string.h, which allocates\n  // memory using malloc().\n  static const char* CloneCString(const char* c_str);\n\n#if GTEST_OS_WINDOWS_MOBILE\n  // Windows CE does not have the 'ANSI' versions of Win32 APIs. To be\n  // able to pass strings to Win32 APIs on CE we need to convert them\n  // to 'Unicode', UTF-16.\n\n  // Creates a UTF-16 wide string from the given ANSI string, allocating\n  // memory using new. The caller is responsible for deleting the return\n  // value using delete[]. Returns the wide string, or nullptr if the\n  // input is null.\n  //\n  // The wide string is created using the ANSI codepage (CP_ACP) to\n  // match the behaviour of the ANSI versions of Win32 calls and the\n  // C runtime.\n  static LPCWSTR AnsiToUtf16(const char* c_str);\n\n  // Creates an ANSI string from the given wide string, allocating\n  // memory using new. The caller is responsible for deleting the return\n  // value using delete[]. Returns the ANSI string, or nullptr if the\n  // input is null.\n  //\n  // The returned string is created using the ANSI codepage (CP_ACP) to\n  // match the behaviour of the ANSI versions of Win32 calls and the\n  // C runtime.\n  static const char* Utf16ToAnsi(LPCWSTR utf16_str);\n#endif\n\n  // Compares two C strings.  Returns true iff they have the same content.\n  //\n  // Unlike strcmp(), this function can handle null argument(s).  A\n  // null C string is considered different to any non-null C string,\n  // including the empty string.\n  static bool CStringEquals(const char* lhs, const char* rhs);\n\n  // Converts a wide C string to a String using the UTF-8 encoding.\n  // nullptr will be converted to \"(null)\".  If an error occurred during\n  // the conversion, \"(failed to convert from wide string)\" is\n  // returned.\n  static std::string ShowWideCString(const wchar_t* wide_c_str);\n\n  // Compares two wide C strings.  Returns true iff they have the same\n  // content.\n  //\n  // Unlike wcscmp(), this function can handle null argument(s).  A\n  // null C string is considered different to any non-null C string,\n  // including the empty string.\n  static bool WideCStringEquals(const wchar_t* lhs, const wchar_t* rhs);\n\n  // Compares two C strings, ignoring case.  Returns true iff they\n  // have the same content.\n  //\n  // Unlike strcasecmp(), this function can handle null argument(s).\n  // A null C string is considered different to any non-null C string,\n  // including the empty string.\n  static bool CaseInsensitiveCStringEquals(const char* lhs,\n                                           const char* rhs);\n\n  // Compares two wide C strings, ignoring case.  Returns true iff they\n  // have the same content.\n  //\n  // Unlike wcscasecmp(), this function can handle null argument(s).\n  // A null C string is considered different to any non-null wide C string,\n  // including the empty string.\n  // NB: The implementations on different platforms slightly differ.\n  // On windows, this method uses _wcsicmp which compares according to LC_CTYPE\n  // environment variable. On GNU platform this method uses wcscasecmp\n  // which compares according to LC_CTYPE category of the current locale.\n  // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the\n  // current locale.\n  static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs,\n                                               const wchar_t* rhs);\n\n  // Returns true iff the given string ends with the given suffix, ignoring\n  // case. Any string is considered to end with an empty suffix.\n  static bool EndsWithCaseInsensitive(\n      const std::string& str, const std::string& suffix);\n\n  // Formats an int value as \"%02d\".\n  static std::string FormatIntWidth2(int value);  // \"%02d\" for width == 2\n\n  // Formats an int value as \"%X\".\n  static std::string FormatHexInt(int value);\n\n  // Formats a byte as \"%02X\".\n  static std::string FormatByte(unsigned char value);\n\n private:\n  String();  // Not meant to be instantiated.\n};  // class String\n\n// Gets the content of the stringstream's buffer as an std::string.  Each '\\0'\n// character in the buffer is replaced with \"\\\\0\".\nGTEST_API_ std::string StringStreamToString(::std::stringstream* stream);\n\n}  // namespace internal\n}  // namespace testing\n\n#endif  // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_\n// Copyright 2008, Google Inc.\n// All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n// Author: keith.ray@gmail.com (Keith Ray)\n//\n// Google Test filepath utilities\n//\n// This header file declares classes and functions used internally by\n// Google Test.  They are subject to change without notice.\n//\n// This file is #included in <gtest/internal/gtest-internal.h>.\n// Do not include this header file separately!\n\n#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_\n#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_\n\n\nnamespace testing {\nnamespace internal {\n\n// FilePath - a class for file and directory pathname manipulation which\n// handles platform-specific conventions (like the pathname separator).\n// Used for helper functions for naming files in a directory for xml output.\n// Except for Set methods, all methods are const or static, which provides an\n// \"immutable value object\" -- useful for peace of mind.\n// A FilePath with a value ending in a path separator (\"like/this/\") represents\n// a directory, otherwise it is assumed to represent a file. In either case,\n// it may or may not represent an actual file or directory in the file system.\n// Names are NOT checked for syntax correctness -- no checking for illegal\n// characters, malformed paths, etc.\n\nclass GTEST_API_ FilePath {\n public:\n  FilePath() : pathname_(\"\") { }\n  FilePath(const FilePath& rhs) : pathname_(rhs.pathname_) { }\n\n  explicit FilePath(const std::string& pathname) : pathname_(pathname) {\n    Normalize();\n  }\n\n  FilePath& operator=(const FilePath& rhs) {\n    Set(rhs);\n    return *this;\n  }\n\n  void Set(const FilePath& rhs) {\n    pathname_ = rhs.pathname_;\n  }\n\n  const std::string& string() const { return pathname_; }\n  const char* c_str() const { return pathname_.c_str(); }\n\n  // Returns the current working directory, or \"\" if unsuccessful.\n  static FilePath GetCurrentDir();\n\n  // Given directory = \"dir\", base_name = \"test\", number = 0,\n  // extension = \"xml\", returns \"dir/test.xml\". If number is greater\n  // than zero (e.g., 12), returns \"dir/test_12.xml\".\n  // On Windows platform, uses \\ as the separator rather than /.\n  static FilePath MakeFileName(const FilePath& directory,\n                               const FilePath& base_name,\n                               int number,\n                               const char* extension);\n\n  // Given directory = \"dir\", relative_path = \"test.xml\",\n  // returns \"dir/test.xml\".\n  // On Windows, uses \\ as the separator rather than /.\n  static FilePath ConcatPaths(const FilePath& directory,\n                              const FilePath& relative_path);\n\n  // Returns a pathname for a file that does not currently exist. The pathname\n  // will be directory/base_name.extension or\n  // directory/base_name_<number>.extension if directory/base_name.extension\n  // already exists. The number will be incremented until a pathname is found\n  // that does not already exist.\n  // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'.\n  // There could be a race condition if two or more processes are calling this\n  // function at the same time -- they could both pick the same filename.\n  static FilePath GenerateUniqueFileName(const FilePath& directory,\n                                         const FilePath& base_name,\n                                         const char* extension);\n\n  // Returns true iff the path is \"\".\n  bool IsEmpty() const { return pathname_.empty(); }\n\n  // If input name has a trailing separator character, removes it and returns\n  // the name, otherwise return the name string unmodified.\n  // On Windows platform, uses \\ as the separator, other platforms use /.\n  FilePath RemoveTrailingPathSeparator() const;\n\n  // Returns a copy of the FilePath with the directory part removed.\n  // Example: FilePath(\"path/to/file\").RemoveDirectoryName() returns\n  // FilePath(\"file\"). If there is no directory part (\"just_a_file\"), it returns\n  // the FilePath unmodified. If there is no file part (\"just_a_dir/\") it\n  // returns an empty FilePath (\"\").\n  // On Windows platform, '\\' is the path separator, otherwise it is '/'.\n  FilePath RemoveDirectoryName() const;\n\n  // RemoveFileName returns the directory path with the filename removed.\n  // Example: FilePath(\"path/to/file\").RemoveFileName() returns \"path/to/\".\n  // If the FilePath is \"a_file\" or \"/a_file\", RemoveFileName returns\n  // FilePath(\"./\") or, on Windows, FilePath(\".\\\\\"). If the filepath does\n  // not have a file, like \"just/a/dir/\", it returns the FilePath unmodified.\n  // On Windows platform, '\\' is the path separator, otherwise it is '/'.\n  FilePath RemoveFileName() const;\n\n  // Returns a copy of the FilePath with the case-insensitive extension removed.\n  // Example: FilePath(\"dir/file.exe\").RemoveExtension(\"EXE\") returns\n  // FilePath(\"dir/file\"). If a case-insensitive extension is not\n  // found, returns a copy of the original FilePath.\n  FilePath RemoveExtension(const char* extension) const;\n\n  // Creates directories so that path exists. Returns true if successful or if\n  // the directories already exist; returns false if unable to create\n  // directories for any reason. Will also return false if the FilePath does\n  // not represent a directory (that is, it doesn't end with a path separator).\n  bool CreateDirectoriesRecursively() const;\n\n  // Create the directory so that path exists. Returns true if successful or\n  // if the directory already exists; returns false if unable to create the\n  // directory for any reason, including if the parent directory does not\n  // exist. Not named \"CreateDirectory\" because that's a macro on Windows.\n  bool CreateFolder() const;\n\n  // Returns true if FilePath describes something in the file-system,\n  // either a file, directory, or whatever, and that something exists.\n  bool FileOrDirectoryExists() const;\n\n  // Returns true if pathname describes a directory in the file-system\n  // that exists.\n  bool DirectoryExists() const;\n\n  // Returns true if FilePath ends with a path separator, which indicates that\n  // it is intended to represent a directory. Returns false otherwise.\n  // This does NOT check that a directory (or file) actually exists.\n  bool IsDirectory() const;\n\n  // Returns true if pathname describes a root directory. (Windows has one\n  // root directory per disk drive.)\n  bool IsRootDirectory() const;\n\n  // Returns true if pathname describes an absolute path.\n  bool IsAbsolutePath() const;\n\n private:\n  // Replaces multiple consecutive separators with a single separator.\n  // For example, \"bar///foo\" becomes \"bar/foo\". Does not eliminate other\n  // redundancies that might be in a pathname involving \".\" or \"..\".\n  //\n  // A pathname with multiple consecutive separators may occur either through\n  // user error or as a result of some scripts or APIs that generate a pathname\n  // with a trailing separator. On other platforms the same API or script\n  // may NOT generate a pathname with a trailing \"/\". Then elsewhere that\n  // pathname may have another \"/\" and pathname components added to it,\n  // without checking for the separator already being there.\n  // The script language and operating system may allow paths like \"foo//bar\"\n  // but some of the functions in FilePath will not handle that correctly. In\n  // particular, RemoveTrailingPathSeparator() only removes one separator, and\n  // it is called in CreateDirectoriesRecursively() assuming that it will change\n  // a pathname from directory syntax (trailing separator) to filename syntax.\n  //\n  // On Windows this method also replaces the alternate path separator '/' with\n  // the primary path separator '\\\\', so that for example \"bar\\\\/\\\\foo\" becomes\n  // \"bar\\\\foo\".\n\n  void Normalize();\n\n  // Returns a pointer to the last occurence of a valid path separator in\n  // the FilePath. On Windows, for example, both '/' and '\\' are valid path\n  // separators. Returns nullptr if no path separator was found.\n  const char* FindLastPathSeparator() const;\n\n  std::string pathname_;\n};  // class FilePath\n\n}  // namespace internal\n}  // namespace testing\n\n#endif  // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_\n// This file was GENERATED by command:\n//     pump.py gtest-type-util.h.pump\n// DO NOT EDIT BY HAND!!!\n\n// Copyright 2008 Google Inc.\n// All Rights Reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n// Author: wan@google.com (Zhanyong Wan)\n\n// Type utilities needed for implementing typed and type-parameterized\n// tests.  This file is generated by a SCRIPT.  DO NOT EDIT BY HAND!\n//\n// Currently we support at most 50 types in a list, and at most 50\n// type-parameterized tests in one type-parameterized test case.\n// Please contact googletestframework@googlegroups.com if you need\n// more.\n\n#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_\n#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_\n\n\n// #ifdef __GNUC__ is too general here.  It is possible to use gcc without using\n// libstdc++ (which is where cxxabi.h comes from).\n# if GTEST_HAS_CXXABI_H_\n#  include <cxxabi.h>\n# elif defined(__HP_aCC)\n#  include <acxx_demangle.h>\n# endif  // GTEST_HASH_CXXABI_H_\n\nnamespace testing {\nnamespace internal {\n\n// GetTypeName<T>() returns a human-readable name of type T.\n// NB: This function is also used in Google Mock, so don't move it inside of\n// the typed-test-only section below.\ntemplate <typename T>\nstd::string GetTypeName() {\n# if GTEST_HAS_RTTI\n\n  const char* const name = typeid(T).name();\n#  if GTEST_HAS_CXXABI_H_ || defined(__HP_aCC)\n  int status = 0;\n  // gcc's implementation of typeid(T).name() mangles the type name,\n  // so we have to demangle it.\n#   if GTEST_HAS_CXXABI_H_\n  using abi::__cxa_demangle;\n#   endif  // GTEST_HAS_CXXABI_H_\n  char* const readable_name = __cxa_demangle(name, 0, 0, &status);\n  const std::string name_str(status == 0 ? readable_name : name);\n  free(readable_name);\n  return name_str;\n#  else\n  return name;\n#  endif  // GTEST_HAS_CXXABI_H_ || __HP_aCC\n\n# else\n\n  return \"<type>\";\n\n# endif  // GTEST_HAS_RTTI\n}\n\n#if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P\n\n// AssertyTypeEq<T1, T2>::type is defined iff T1 and T2 are the same\n// type.  This can be used as a compile-time assertion to ensure that\n// two types are equal.\n\ntemplate <typename T1, typename T2>\nstruct AssertTypeEq;\n\ntemplate <typename T>\nstruct AssertTypeEq<T, T> {\n  typedef bool type;\n};\n\n// A unique type used as the default value for the arguments of class\n// template Types.  This allows us to simulate variadic templates\n// (e.g. Types<int>, Type<int, double>, and etc), which C++ doesn't\n// support directly.\nstruct None {};\n\n// The following family of struct and struct templates are used to\n// represent type lists.  In particular, TypesN<T1, T2, ..., TN>\n// represents a type list with N types (T1, T2, ..., and TN) in it.\n// Except for Types0, every struct in the family has two member types:\n// Head for the first type in the list, and Tail for the rest of the\n// list.\n\n// The empty type list.\nstruct Types0 {};\n\n// Type lists of length 1, 2, 3, and so on.\n\ntemplate <typename T1>\nstruct Types1 {\n  typedef T1 Head;\n  typedef Types0 Tail;\n};\ntemplate <typename T1, typename T2>\nstruct Types2 {\n  typedef T1 Head;\n  typedef Types1<T2> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3>\nstruct Types3 {\n  typedef T1 Head;\n  typedef Types2<T2, T3> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4>\nstruct Types4 {\n  typedef T1 Head;\n  typedef Types3<T2, T3, T4> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5>\nstruct Types5 {\n  typedef T1 Head;\n  typedef Types4<T2, T3, T4, T5> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6>\nstruct Types6 {\n  typedef T1 Head;\n  typedef Types5<T2, T3, T4, T5, T6> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7>\nstruct Types7 {\n  typedef T1 Head;\n  typedef Types6<T2, T3, T4, T5, T6, T7> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8>\nstruct Types8 {\n  typedef T1 Head;\n  typedef Types7<T2, T3, T4, T5, T6, T7, T8> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9>\nstruct Types9 {\n  typedef T1 Head;\n  typedef Types8<T2, T3, T4, T5, T6, T7, T8, T9> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10>\nstruct Types10 {\n  typedef T1 Head;\n  typedef Types9<T2, T3, T4, T5, T6, T7, T8, T9, T10> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11>\nstruct Types11 {\n  typedef T1 Head;\n  typedef Types10<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12>\nstruct Types12 {\n  typedef T1 Head;\n  typedef Types11<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13>\nstruct Types13 {\n  typedef T1 Head;\n  typedef Types12<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14>\nstruct Types14 {\n  typedef T1 Head;\n  typedef Types13<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15>\nstruct Types15 {\n  typedef T1 Head;\n  typedef Types14<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n      T15> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16>\nstruct Types16 {\n  typedef T1 Head;\n  typedef Types15<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n      T16> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17>\nstruct Types17 {\n  typedef T1 Head;\n  typedef Types16<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n      T16, T17> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18>\nstruct Types18 {\n  typedef T1 Head;\n  typedef Types17<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n      T16, T17, T18> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19>\nstruct Types19 {\n  typedef T1 Head;\n  typedef Types18<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n      T16, T17, T18, T19> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20>\nstruct Types20 {\n  typedef T1 Head;\n  typedef Types19<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n      T16, T17, T18, T19, T20> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21>\nstruct Types21 {\n  typedef T1 Head;\n  typedef Types20<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n      T16, T17, T18, T19, T20, T21> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22>\nstruct Types22 {\n  typedef T1 Head;\n  typedef Types21<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n      T16, T17, T18, T19, T20, T21, T22> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23>\nstruct Types23 {\n  typedef T1 Head;\n  typedef Types22<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n      T16, T17, T18, T19, T20, T21, T22, T23> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24>\nstruct Types24 {\n  typedef T1 Head;\n  typedef Types23<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n      T16, T17, T18, T19, T20, T21, T22, T23, T24> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25>\nstruct Types25 {\n  typedef T1 Head;\n  typedef Types24<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26>\nstruct Types26 {\n  typedef T1 Head;\n  typedef Types25<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27>\nstruct Types27 {\n  typedef T1 Head;\n  typedef Types26<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28>\nstruct Types28 {\n  typedef T1 Head;\n  typedef Types27<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29>\nstruct Types29 {\n  typedef T1 Head;\n  typedef Types28<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n      T29> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30>\nstruct Types30 {\n  typedef T1 Head;\n  typedef Types29<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n      T30> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31>\nstruct Types31 {\n  typedef T1 Head;\n  typedef Types30<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n      T30, T31> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32>\nstruct Types32 {\n  typedef T1 Head;\n  typedef Types31<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n      T30, T31, T32> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33>\nstruct Types33 {\n  typedef T1 Head;\n  typedef Types32<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n      T30, T31, T32, T33> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34>\nstruct Types34 {\n  typedef T1 Head;\n  typedef Types33<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n      T30, T31, T32, T33, T34> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35>\nstruct Types35 {\n  typedef T1 Head;\n  typedef Types34<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n      T30, T31, T32, T33, T34, T35> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36>\nstruct Types36 {\n  typedef T1 Head;\n  typedef Types35<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n      T30, T31, T32, T33, T34, T35, T36> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37>\nstruct Types37 {\n  typedef T1 Head;\n  typedef Types36<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n      T30, T31, T32, T33, T34, T35, T36, T37> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38>\nstruct Types38 {\n  typedef T1 Head;\n  typedef Types37<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n      T30, T31, T32, T33, T34, T35, T36, T37, T38> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39>\nstruct Types39 {\n  typedef T1 Head;\n  typedef Types38<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40>\nstruct Types40 {\n  typedef T1 Head;\n  typedef Types39<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41>\nstruct Types41 {\n  typedef T1 Head;\n  typedef Types40<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41, typename T42>\nstruct Types42 {\n  typedef T1 Head;\n  typedef Types41<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41, typename T42, typename T43>\nstruct Types43 {\n  typedef T1 Head;\n  typedef Types42<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,\n      T43> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41, typename T42, typename T43, typename T44>\nstruct Types44 {\n  typedef T1 Head;\n  typedef Types43<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,\n      T44> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41, typename T42, typename T43, typename T44, typename T45>\nstruct Types45 {\n  typedef T1 Head;\n  typedef Types44<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,\n      T44, T45> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41, typename T42, typename T43, typename T44, typename T45,\n    typename T46>\nstruct Types46 {\n  typedef T1 Head;\n  typedef Types45<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,\n      T44, T45, T46> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41, typename T42, typename T43, typename T44, typename T45,\n    typename T46, typename T47>\nstruct Types47 {\n  typedef T1 Head;\n  typedef Types46<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,\n      T44, T45, T46, T47> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41, typename T42, typename T43, typename T44, typename T45,\n    typename T46, typename T47, typename T48>\nstruct Types48 {\n  typedef T1 Head;\n  typedef Types47<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,\n      T44, T45, T46, T47, T48> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41, typename T42, typename T43, typename T44, typename T45,\n    typename T46, typename T47, typename T48, typename T49>\nstruct Types49 {\n  typedef T1 Head;\n  typedef Types48<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,\n      T44, T45, T46, T47, T48, T49> Tail;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41, typename T42, typename T43, typename T44, typename T45,\n    typename T46, typename T47, typename T48, typename T49, typename T50>\nstruct Types50 {\n  typedef T1 Head;\n  typedef Types49<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,\n      T44, T45, T46, T47, T48, T49, T50> Tail;\n};\n\n\n}  // namespace internal\n\n// We don't want to require the users to write TypesN<...> directly,\n// as that would require them to count the length.  Types<...> is much\n// easier to write, but generates horrible messages when there is a\n// compiler error, as gcc insists on printing out each template\n// argument, even if it has the default value (this means Types<int>\n// will appear as Types<int, None, None, ..., None> in the compiler\n// errors).\n//\n// Our solution is to combine the best part of the two approaches: a\n// user would write Types<T1, ..., TN>, and Google Test will translate\n// that to TypesN<T1, ..., TN> internally to make error messages\n// readable.  The translation is done by the 'type' member of the\n// Types template.\ntemplate <typename T1 = internal::None, typename T2 = internal::None,\n    typename T3 = internal::None, typename T4 = internal::None,\n    typename T5 = internal::None, typename T6 = internal::None,\n    typename T7 = internal::None, typename T8 = internal::None,\n    typename T9 = internal::None, typename T10 = internal::None,\n    typename T11 = internal::None, typename T12 = internal::None,\n    typename T13 = internal::None, typename T14 = internal::None,\n    typename T15 = internal::None, typename T16 = internal::None,\n    typename T17 = internal::None, typename T18 = internal::None,\n    typename T19 = internal::None, typename T20 = internal::None,\n    typename T21 = internal::None, typename T22 = internal::None,\n    typename T23 = internal::None, typename T24 = internal::None,\n    typename T25 = internal::None, typename T26 = internal::None,\n    typename T27 = internal::None, typename T28 = internal::None,\n    typename T29 = internal::None, typename T30 = internal::None,\n    typename T31 = internal::None, typename T32 = internal::None,\n    typename T33 = internal::None, typename T34 = internal::None,\n    typename T35 = internal::None, typename T36 = internal::None,\n    typename T37 = internal::None, typename T38 = internal::None,\n    typename T39 = internal::None, typename T40 = internal::None,\n    typename T41 = internal::None, typename T42 = internal::None,\n    typename T43 = internal::None, typename T44 = internal::None,\n    typename T45 = internal::None, typename T46 = internal::None,\n    typename T47 = internal::None, typename T48 = internal::None,\n    typename T49 = internal::None, typename T50 = internal::None>\nstruct Types {\n  typedef internal::Types50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,\n      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,\n      T41, T42, T43, T44, T45, T46, T47, T48, T49, T50> type;\n};\n\ntemplate <>\nstruct Types<internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None> {\n  typedef internal::Types0 type;\n};\ntemplate <typename T1>\nstruct Types<T1, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None> {\n  typedef internal::Types1<T1> type;\n};\ntemplate <typename T1, typename T2>\nstruct Types<T1, T2, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None> {\n  typedef internal::Types2<T1, T2> type;\n};\ntemplate <typename T1, typename T2, typename T3>\nstruct Types<T1, T2, T3, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None> {\n  typedef internal::Types3<T1, T2, T3> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4>\nstruct Types<T1, T2, T3, T4, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None> {\n  typedef internal::Types4<T1, T2, T3, T4> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5>\nstruct Types<T1, T2, T3, T4, T5, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None> {\n  typedef internal::Types5<T1, T2, T3, T4, T5> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6>\nstruct Types<T1, T2, T3, T4, T5, T6, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None> {\n  typedef internal::Types6<T1, T2, T3, T4, T5, T6> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None> {\n  typedef internal::Types7<T1, T2, T3, T4, T5, T6, T7> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None> {\n  typedef internal::Types8<T1, T2, T3, T4, T5, T6, T7, T8> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None> {\n  typedef internal::Types9<T1, T2, T3, T4, T5, T6, T7, T8, T9> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None> {\n  typedef internal::Types10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None> {\n  typedef internal::Types11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None> {\n  typedef internal::Types12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None> {\n  typedef internal::Types13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None> {\n  typedef internal::Types14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13, T14> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None> {\n  typedef internal::Types15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13, T14, T15> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n    T16, internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None> {\n  typedef internal::Types16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13, T14, T15, T16> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n    T16, T17, internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None> {\n  typedef internal::Types17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13, T14, T15, T16, T17> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n    T16, T17, T18, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None> {\n  typedef internal::Types18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13, T14, T15, T16, T17, T18> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n    T16, T17, T18, T19, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None> {\n  typedef internal::Types19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13, T14, T15, T16, T17, T18, T19> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n    T16, T17, T18, T19, T20, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None> {\n  typedef internal::Types20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13, T14, T15, T16, T17, T18, T19, T20> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n    T16, T17, T18, T19, T20, T21, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None> {\n  typedef internal::Types21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13, T14, T15, T16, T17, T18, T19, T20, T21> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n    T16, T17, T18, T19, T20, T21, T22, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None> {\n  typedef internal::Types22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n    T16, T17, T18, T19, T20, T21, T22, T23, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None> {\n  typedef internal::Types23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n    T16, T17, T18, T19, T20, T21, T22, T23, T24, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None> {\n  typedef internal::Types24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None> {\n  typedef internal::Types25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None> {\n  typedef internal::Types26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,\n      T26> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None> {\n  typedef internal::Types27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,\n      T27> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None> {\n  typedef internal::Types28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,\n      T27, T28> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None> {\n  typedef internal::Types29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,\n      T27, T28, T29> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None> {\n  typedef internal::Types30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,\n      T27, T28, T29, T30> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,\n    T31, internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None> {\n  typedef internal::Types31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,\n      T27, T28, T29, T30, T31> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,\n    T31, T32, internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None> {\n  typedef internal::Types32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,\n      T27, T28, T29, T30, T31, T32> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,\n    T31, T32, T33, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None> {\n  typedef internal::Types33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,\n      T27, T28, T29, T30, T31, T32, T33> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,\n    T31, T32, T33, T34, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None> {\n  typedef internal::Types34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,\n      T27, T28, T29, T30, T31, T32, T33, T34> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,\n    T31, T32, T33, T34, T35, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None> {\n  typedef internal::Types35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,\n      T27, T28, T29, T30, T31, T32, T33, T34, T35> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,\n    T31, T32, T33, T34, T35, T36, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None> {\n  typedef internal::Types36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,\n      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,\n    T31, T32, T33, T34, T35, T36, T37, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None> {\n  typedef internal::Types37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,\n      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,\n    T31, T32, T33, T34, T35, T36, T37, T38, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None> {\n  typedef internal::Types38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,\n      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,\n    T31, T32, T33, T34, T35, T36, T37, T38, T39, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None> {\n  typedef internal::Types39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,\n      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,\n    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None> {\n  typedef internal::Types40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,\n      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,\n      T40> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,\n    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None, internal::None> {\n  typedef internal::Types41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,\n      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,\n      T41> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41, typename T42>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,\n    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, internal::None,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None> {\n  typedef internal::Types42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,\n      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,\n      T41, T42> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41, typename T42, typename T43>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,\n    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None, internal::None> {\n  typedef internal::Types43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,\n      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,\n      T41, T42, T43> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41, typename T42, typename T43, typename T44>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,\n    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None, internal::None> {\n  typedef internal::Types44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,\n      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,\n      T41, T42, T43, T44> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41, typename T42, typename T43, typename T44, typename T45>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,\n    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,\n    internal::None, internal::None, internal::None, internal::None,\n    internal::None> {\n  typedef internal::Types45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,\n      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,\n      T41, T42, T43, T44, T45> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41, typename T42, typename T43, typename T44, typename T45,\n    typename T46>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,\n    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,\n    T46, internal::None, internal::None, internal::None, internal::None> {\n  typedef internal::Types46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,\n      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,\n      T41, T42, T43, T44, T45, T46> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41, typename T42, typename T43, typename T44, typename T45,\n    typename T46, typename T47>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,\n    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,\n    T46, T47, internal::None, internal::None, internal::None> {\n  typedef internal::Types47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,\n      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,\n      T41, T42, T43, T44, T45, T46, T47> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41, typename T42, typename T43, typename T44, typename T45,\n    typename T46, typename T47, typename T48>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,\n    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,\n    T46, T47, T48, internal::None, internal::None> {\n  typedef internal::Types48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,\n      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,\n      T41, T42, T43, T44, T45, T46, T47, T48> type;\n};\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41, typename T42, typename T43, typename T44, typename T45,\n    typename T46, typename T47, typename T48, typename T49>\nstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,\n    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,\n    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,\n    T46, T47, T48, T49, internal::None> {\n  typedef internal::Types49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,\n      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,\n      T41, T42, T43, T44, T45, T46, T47, T48, T49> type;\n};\n\nnamespace internal {\n\n# define GTEST_TEMPLATE_ template <typename T> class\n\n// The template \"selector\" struct TemplateSel<Tmpl> is used to\n// represent Tmpl, which must be a class template with one type\n// parameter, as a type.  TemplateSel<Tmpl>::Bind<T>::type is defined\n// as the type Tmpl<T>.  This allows us to actually instantiate the\n// template \"selected\" by TemplateSel<Tmpl>.\n//\n// This trick is necessary for simulating typedef for class templates,\n// which C++ doesn't support directly.\ntemplate <GTEST_TEMPLATE_ Tmpl>\nstruct TemplateSel {\n  template <typename T>\n  struct Bind {\n    typedef Tmpl<T> type;\n  };\n};\n\n# define GTEST_BIND_(TmplSel, T) \\\n  TmplSel::template Bind<T>::type\n\n// A unique struct template used as the default value for the\n// arguments of class template Templates.  This allows us to simulate\n// variadic templates (e.g. Templates<int>, Templates<int, double>,\n// and etc), which C++ doesn't support directly.\ntemplate <typename T>\nstruct NoneT {};\n\n// The following family of struct and struct templates are used to\n// represent template lists.  In particular, TemplatesN<T1, T2, ...,\n// TN> represents a list of N templates (T1, T2, ..., and TN).  Except\n// for Templates0, every struct in the family has two member types:\n// Head for the selector of the first template in the list, and Tail\n// for the rest of the list.\n\n// The empty template list.\nstruct Templates0 {};\n\n// Template lists of length 1, 2, 3, and so on.\n\ntemplate <GTEST_TEMPLATE_ T1>\nstruct Templates1 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates0 Tail;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2>\nstruct Templates2 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates1<T2> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3>\nstruct Templates3 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates2<T2, T3> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4>\nstruct Templates4 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates3<T2, T3, T4> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5>\nstruct Templates5 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates4<T2, T3, T4, T5> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6>\nstruct Templates6 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates5<T2, T3, T4, T5, T6> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7>\nstruct Templates7 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates6<T2, T3, T4, T5, T6, T7> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8>\nstruct Templates8 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates7<T2, T3, T4, T5, T6, T7, T8> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9>\nstruct Templates9 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates8<T2, T3, T4, T5, T6, T7, T8, T9> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10>\nstruct Templates10 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates9<T2, T3, T4, T5, T6, T7, T8, T9, T10> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11>\nstruct Templates11 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates10<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12>\nstruct Templates12 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates11<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13>\nstruct Templates13 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates12<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14>\nstruct Templates14 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates13<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n      T14> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15>\nstruct Templates15 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates14<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n      T15> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16>\nstruct Templates16 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates15<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n      T15, T16> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17>\nstruct Templates17 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates16<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n      T15, T16, T17> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18>\nstruct Templates18 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates17<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n      T15, T16, T17, T18> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19>\nstruct Templates19 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates18<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n      T15, T16, T17, T18, T19> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20>\nstruct Templates20 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates19<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n      T15, T16, T17, T18, T19, T20> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21>\nstruct Templates21 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates20<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n      T15, T16, T17, T18, T19, T20, T21> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22>\nstruct Templates22 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates21<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n      T15, T16, T17, T18, T19, T20, T21, T22> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23>\nstruct Templates23 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates22<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n      T15, T16, T17, T18, T19, T20, T21, T22, T23> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24>\nstruct Templates24 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates23<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25>\nstruct Templates25 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates24<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26>\nstruct Templates26 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates25<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27>\nstruct Templates27 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates26<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28>\nstruct Templates28 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates27<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,\n      T28> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29>\nstruct Templates29 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates28<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n      T29> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30>\nstruct Templates30 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates29<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n      T29, T30> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,\n    GTEST_TEMPLATE_ T31>\nstruct Templates31 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates30<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n      T29, T30, T31> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,\n    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32>\nstruct Templates32 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates31<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n      T29, T30, T31, T32> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,\n    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33>\nstruct Templates33 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates32<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n      T29, T30, T31, T32, T33> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,\n    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,\n    GTEST_TEMPLATE_ T34>\nstruct Templates34 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates33<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n      T29, T30, T31, T32, T33, T34> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,\n    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,\n    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35>\nstruct Templates35 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates34<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n      T29, T30, T31, T32, T33, T34, T35> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,\n    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,\n    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36>\nstruct Templates36 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates35<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n      T29, T30, T31, T32, T33, T34, T35, T36> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,\n    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,\n    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,\n    GTEST_TEMPLATE_ T37>\nstruct Templates37 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates36<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n      T29, T30, T31, T32, T33, T34, T35, T36, T37> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,\n    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,\n    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,\n    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38>\nstruct Templates38 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates37<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,\n    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,\n    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,\n    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39>\nstruct Templates39 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates38<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,\n    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,\n    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,\n    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,\n    GTEST_TEMPLATE_ T40>\nstruct Templates40 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates39<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,\n    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,\n    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,\n    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,\n    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41>\nstruct Templates41 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates40<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,\n    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,\n    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,\n    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,\n    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42>\nstruct Templates42 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates41<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,\n      T42> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,\n    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,\n    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,\n    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,\n    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,\n    GTEST_TEMPLATE_ T43>\nstruct Templates43 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates42<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,\n      T43> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,\n    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,\n    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,\n    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,\n    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,\n    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44>\nstruct Templates44 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates43<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,\n      T43, T44> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,\n    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,\n    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,\n    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,\n    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,\n    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45>\nstruct Templates45 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates44<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,\n      T43, T44, T45> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,\n    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,\n    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,\n    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,\n    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,\n    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,\n    GTEST_TEMPLATE_ T46>\nstruct Templates46 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates45<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,\n      T43, T44, T45, T46> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,\n    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,\n    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,\n    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,\n    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,\n    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,\n    GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47>\nstruct Templates47 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates46<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,\n      T43, T44, T45, T46, T47> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,\n    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,\n    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,\n    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,\n    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,\n    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,\n    GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48>\nstruct Templates48 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates47<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,\n      T43, T44, T45, T46, T47, T48> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,\n    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,\n    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,\n    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,\n    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,\n    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,\n    GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48,\n    GTEST_TEMPLATE_ T49>\nstruct Templates49 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates48<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,\n      T43, T44, T45, T46, T47, T48, T49> Tail;\n};\n\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,\n    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,\n    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,\n    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,\n    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,\n    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,\n    GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48,\n    GTEST_TEMPLATE_ T49, GTEST_TEMPLATE_ T50>\nstruct Templates50 {\n  typedef TemplateSel<T1> Head;\n  typedef Templates49<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,\n      T43, T44, T45, T46, T47, T48, T49, T50> Tail;\n};\n\n\n// We don't want to require the users to write TemplatesN<...> directly,\n// as that would require them to count the length.  Templates<...> is much\n// easier to write, but generates horrible messages when there is a\n// compiler error, as gcc insists on printing out each template\n// argument, even if it has the default value (this means Templates<list>\n// will appear as Templates<list, NoneT, NoneT, ..., NoneT> in the compiler\n// errors).\n//\n// Our solution is to combine the best part of the two approaches: a\n// user would write Templates<T1, ..., TN>, and Google Test will translate\n// that to TemplatesN<T1, ..., TN> internally to make error messages\n// readable.  The translation is done by the 'type' member of the\n// Templates template.\ntemplate <GTEST_TEMPLATE_ T1 = NoneT, GTEST_TEMPLATE_ T2 = NoneT,\n    GTEST_TEMPLATE_ T3 = NoneT, GTEST_TEMPLATE_ T4 = NoneT,\n    GTEST_TEMPLATE_ T5 = NoneT, GTEST_TEMPLATE_ T6 = NoneT,\n    GTEST_TEMPLATE_ T7 = NoneT, GTEST_TEMPLATE_ T8 = NoneT,\n    GTEST_TEMPLATE_ T9 = NoneT, GTEST_TEMPLATE_ T10 = NoneT,\n    GTEST_TEMPLATE_ T11 = NoneT, GTEST_TEMPLATE_ T12 = NoneT,\n    GTEST_TEMPLATE_ T13 = NoneT, GTEST_TEMPLATE_ T14 = NoneT,\n    GTEST_TEMPLATE_ T15 = NoneT, GTEST_TEMPLATE_ T16 = NoneT,\n    GTEST_TEMPLATE_ T17 = NoneT, GTEST_TEMPLATE_ T18 = NoneT,\n    GTEST_TEMPLATE_ T19 = NoneT, GTEST_TEMPLATE_ T20 = NoneT,\n    GTEST_TEMPLATE_ T21 = NoneT, GTEST_TEMPLATE_ T22 = NoneT,\n    GTEST_TEMPLATE_ T23 = NoneT, GTEST_TEMPLATE_ T24 = NoneT,\n    GTEST_TEMPLATE_ T25 = NoneT, GTEST_TEMPLATE_ T26 = NoneT,\n    GTEST_TEMPLATE_ T27 = NoneT, GTEST_TEMPLATE_ T28 = NoneT,\n    GTEST_TEMPLATE_ T29 = NoneT, GTEST_TEMPLATE_ T30 = NoneT,\n    GTEST_TEMPLATE_ T31 = NoneT, GTEST_TEMPLATE_ T32 = NoneT,\n    GTEST_TEMPLATE_ T33 = NoneT, GTEST_TEMPLATE_ T34 = NoneT,\n    GTEST_TEMPLATE_ T35 = NoneT, GTEST_TEMPLATE_ T36 = NoneT,\n    GTEST_TEMPLATE_ T37 = NoneT, GTEST_TEMPLATE_ T38 = NoneT,\n    GTEST_TEMPLATE_ T39 = NoneT, GTEST_TEMPLATE_ T40 = NoneT,\n    GTEST_TEMPLATE_ T41 = NoneT, GTEST_TEMPLATE_ T42 = NoneT,\n    GTEST_TEMPLATE_ T43 = NoneT, GTEST_TEMPLATE_ T44 = NoneT,\n    GTEST_TEMPLATE_ T45 = NoneT, GTEST_TEMPLATE_ T46 = NoneT,\n    GTEST_TEMPLATE_ T47 = NoneT, GTEST_TEMPLATE_ T48 = NoneT,\n    GTEST_TEMPLATE_ T49 = NoneT, GTEST_TEMPLATE_ T50 = NoneT>\nstruct Templates {\n  typedef Templates50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,\n      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,\n      T42, T43, T44, T45, T46, T47, T48, T49, T50> type;\n};\n\ntemplate <>\nstruct Templates<NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT> {\n  typedef Templates0 type;\n};\ntemplate <GTEST_TEMPLATE_ T1>\nstruct Templates<T1, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT> {\n  typedef Templates1<T1> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2>\nstruct Templates<T1, T2, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT> {\n  typedef Templates2<T1, T2> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3>\nstruct Templates<T1, T2, T3, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {\n  typedef Templates3<T1, T2, T3> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4>\nstruct Templates<T1, T2, T3, T4, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {\n  typedef Templates4<T1, T2, T3, T4> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5>\nstruct Templates<T1, T2, T3, T4, T5, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {\n  typedef Templates5<T1, T2, T3, T4, T5> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6>\nstruct Templates<T1, T2, T3, T4, T5, T6, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {\n  typedef Templates6<T1, T2, T3, T4, T5, T6> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {\n  typedef Templates7<T1, T2, T3, T4, T5, T6, T7> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {\n  typedef Templates8<T1, T2, T3, T4, T5, T6, T7, T8> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {\n  typedef Templates9<T1, T2, T3, T4, T5, T6, T7, T8, T9> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {\n  typedef Templates10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {\n  typedef Templates11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {\n  typedef Templates12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {\n  typedef Templates13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {\n  typedef Templates14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n      T14> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n    T15, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT> {\n  typedef Templates15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n      T14, T15> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n    T15, T16, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT> {\n  typedef Templates16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n      T14, T15, T16> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n    T15, T16, T17, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT> {\n  typedef Templates17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n      T14, T15, T16, T17> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n    T15, T16, T17, T18, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT> {\n  typedef Templates18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n      T14, T15, T16, T17, T18> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n    T15, T16, T17, T18, T19, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT> {\n  typedef Templates19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n      T14, T15, T16, T17, T18, T19> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n    T15, T16, T17, T18, T19, T20, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT> {\n  typedef Templates20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n      T14, T15, T16, T17, T18, T19, T20> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n    T15, T16, T17, T18, T19, T20, T21, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT> {\n  typedef Templates21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n      T14, T15, T16, T17, T18, T19, T20, T21> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n    T15, T16, T17, T18, T19, T20, T21, T22, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT> {\n  typedef Templates22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n      T14, T15, T16, T17, T18, T19, T20, T21, T22> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n    T15, T16, T17, T18, T19, T20, T21, T22, T23, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT> {\n  typedef Templates23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT> {\n  typedef Templates24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT> {\n  typedef Templates25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT> {\n  typedef Templates26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT> {\n  typedef Templates27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,\n      T27> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT> {\n  typedef Templates28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,\n      T28> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT> {\n  typedef Templates29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,\n      T28, T29> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n    T30, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {\n  typedef Templates30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,\n      T28, T29, T30> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,\n    GTEST_TEMPLATE_ T31>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n    T30, T31, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {\n  typedef Templates31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,\n      T28, T29, T30, T31> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,\n    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n    T30, T31, T32, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {\n  typedef Templates32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,\n      T28, T29, T30, T31, T32> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,\n    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n    T30, T31, T32, T33, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {\n  typedef Templates33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,\n      T28, T29, T30, T31, T32, T33> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,\n    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,\n    GTEST_TEMPLATE_ T34>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n    T30, T31, T32, T33, T34, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {\n  typedef Templates34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,\n      T28, T29, T30, T31, T32, T33, T34> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,\n    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,\n    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n    T30, T31, T32, T33, T34, T35, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {\n  typedef Templates35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,\n      T28, T29, T30, T31, T32, T33, T34, T35> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,\n    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,\n    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n    T30, T31, T32, T33, T34, T35, T36, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {\n  typedef Templates36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,\n      T28, T29, T30, T31, T32, T33, T34, T35, T36> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,\n    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,\n    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,\n    GTEST_TEMPLATE_ T37>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n    T30, T31, T32, T33, T34, T35, T36, T37, NoneT, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {\n  typedef Templates37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,\n      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,\n    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,\n    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,\n    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n    T30, T31, T32, T33, T34, T35, T36, T37, T38, NoneT, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {\n  typedef Templates38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,\n      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,\n    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,\n    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,\n    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {\n  typedef Templates39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,\n      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,\n    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,\n    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,\n    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,\n    GTEST_TEMPLATE_ T40>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, NoneT, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {\n  typedef Templates40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,\n      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,\n    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,\n    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,\n    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,\n    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, NoneT, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {\n  typedef Templates41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,\n      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,\n      T41> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,\n    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,\n    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,\n    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,\n    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, NoneT,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {\n  typedef Templates42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,\n      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,\n      T42> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,\n    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,\n    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,\n    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,\n    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,\n    GTEST_TEMPLATE_ T43>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {\n  typedef Templates43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,\n      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,\n      T42, T43> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,\n    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,\n    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,\n    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,\n    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,\n    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,\n    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {\n  typedef Templates44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,\n      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,\n      T42, T43, T44> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,\n    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,\n    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,\n    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,\n    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,\n    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,\n    T45, NoneT, NoneT, NoneT, NoneT, NoneT> {\n  typedef Templates45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,\n      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,\n      T42, T43, T44, T45> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,\n    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,\n    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,\n    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,\n    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,\n    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,\n    GTEST_TEMPLATE_ T46>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,\n    T45, T46, NoneT, NoneT, NoneT, NoneT> {\n  typedef Templates46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,\n      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,\n      T42, T43, T44, T45, T46> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,\n    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,\n    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,\n    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,\n    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,\n    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,\n    GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,\n    T45, T46, T47, NoneT, NoneT, NoneT> {\n  typedef Templates47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,\n      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,\n      T42, T43, T44, T45, T46, T47> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,\n    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,\n    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,\n    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,\n    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,\n    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,\n    GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,\n    T45, T46, T47, T48, NoneT, NoneT> {\n  typedef Templates48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,\n      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,\n      T42, T43, T44, T45, T46, T47, T48> type;\n};\ntemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,\n    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,\n    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,\n    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,\n    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,\n    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,\n    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,\n    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,\n    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,\n    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,\n    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,\n    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,\n    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,\n    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,\n    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,\n    GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48,\n    GTEST_TEMPLATE_ T49>\nstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,\n    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,\n    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,\n    T45, T46, T47, T48, T49, NoneT> {\n  typedef Templates49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,\n      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,\n      T42, T43, T44, T45, T46, T47, T48, T49> type;\n};\n\n// The TypeList template makes it possible to use either a single type\n// or a Types<...> list in TYPED_TEST_CASE() and\n// INSTANTIATE_TYPED_TEST_CASE_P().\n\ntemplate <typename T>\nstruct TypeList {\n  typedef Types1<T> type;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41, typename T42, typename T43, typename T44, typename T45,\n    typename T46, typename T47, typename T48, typename T49, typename T50>\nstruct TypeList<Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n    T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,\n    T44, T45, T46, T47, T48, T49, T50> > {\n  typedef typename Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,\n      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,\n      T41, T42, T43, T44, T45, T46, T47, T48, T49, T50>::type type;\n};\n\n#endif  // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P\n\n}  // namespace internal\n}  // namespace testing\n\n#endif  // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_\n\n// Due to C++ preprocessor weirdness, we need double indirection to\n// concatenate two tokens when one of them is __LINE__.  Writing\n//\n//   foo ## __LINE__\n//\n// will result in the token foo__LINE__, instead of foo followed by\n// the current line number.  For more details, see\n// http://www.parashift.com/c++-faq-lite/misc-technical-issues.html#faq-39.6\n#define GTEST_CONCAT_TOKEN_(foo, bar) GTEST_CONCAT_TOKEN_IMPL_(foo, bar)\n#define GTEST_CONCAT_TOKEN_IMPL_(foo, bar) foo ## bar\n\nclass ProtocolMessage;\nnamespace proto2 { class Message; }\n\nnamespace testing {\n\n// Forward declarations.\n\nclass AssertionResult;                 // Result of an assertion.\nclass Message;                         // Represents a failure message.\nclass Test;                            // Represents a test.\nclass TestInfo;                        // Information about a test.\nclass TestPartResult;                  // Result of a test part.\nclass UnitTest;                        // A collection of test cases.\n\ntemplate <typename T>\n::std::string PrintToString(const T& value);\n\nnamespace internal {\n\nstruct TraceInfo;                      // Information about a trace point.\nclass ScopedTrace;                     // Implements scoped trace.\nclass TestInfoImpl;                    // Opaque implementation of TestInfo\nclass UnitTestImpl;                    // Opaque implementation of UnitTest\n\n// How many times InitGoogleTest() has been called.\nGTEST_API_ extern int g_init_gtest_count;\n\n// The text used in failure messages to indicate the start of the\n// stack trace.\nGTEST_API_ extern const char kStackTraceMarker[];\n\n// Two overloaded helpers for checking at compile time whether an\n// expression is a null pointer literal (i.e. nullptr or any 0-valued\n// compile-time integral constant).  Their return values have\n// different sizes, so we can use sizeof() to test which version is\n// picked by the compiler.  These helpers have no implementations, as\n// we only need their signatures.\n//\n// Given IsNullLiteralHelper(x), the compiler will pick the first\n// version if x can be implicitly converted to Secret*, and pick the\n// second version otherwise.  Since Secret is a secret and incomplete\n// type, the only expression a user can write that has type Secret* is\n// a null pointer literal.  Therefore, we know that x is a null\n// pointer literal if and only if the first version is picked by the\n// compiler.\nchar IsNullLiteralHelper(Secret* p);\nchar (&IsNullLiteralHelper(...))[2];  // NOLINT\n\n// A compile-time bool constant that is true if and only if x is a\n// null pointer literal (i.e. nullptr or any 0-valued compile-time\n// integral constant).\n#ifdef GTEST_ELLIPSIS_NEEDS_POD_\n// We lose support for null detection where the compiler doesn't like\n// passing non-POD classes through ellipsis (...).\n# define GTEST_IS_NULL_LITERAL_(x) false\n#else\n# define GTEST_IS_NULL_LITERAL_(x) \\\n    (sizeof(::testing::internal::IsNullLiteralHelper(x)) == 1)\n#endif  // GTEST_ELLIPSIS_NEEDS_POD_\n\n// Appends the user-supplied message to the Google-Test-generated message.\nGTEST_API_ std::string AppendUserMessage(\n    const std::string& gtest_msg, const Message& user_msg);\n\n#if GTEST_HAS_EXCEPTIONS\n\n// This exception is thrown by (and only by) a failed Google Test\n// assertion when GTEST_FLAG(throw_on_failure) is true (if exceptions\n// are enabled).  We derive it from std::runtime_error, which is for\n// errors presumably detectable only at run time.  Since\n// std::runtime_error inherits from std::exception, many testing\n// frameworks know how to extract and print the message inside it.\nclass GTEST_API_ GoogleTestFailureException : public ::std::runtime_error {\n public:\n  explicit GoogleTestFailureException(const TestPartResult& failure);\n};\n\n#endif  // GTEST_HAS_EXCEPTIONS\n\n// A helper class for creating scoped traces in user programs.\nclass GTEST_API_ ScopedTrace {\n public:\n  // The c'tor pushes the given source file location and message onto\n  // a trace stack maintained by Google Test.\n  ScopedTrace(const char* file, int line, const Message& message);\n\n  // The d'tor pops the info pushed by the c'tor.\n  //\n  // Note that the d'tor is not virtual in order to be efficient.\n  // Don't inherit from ScopedTrace!\n  ~ScopedTrace();\n\n private:\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(ScopedTrace);\n} GTEST_ATTRIBUTE_UNUSED_;  // A ScopedTrace object does its job in its\n                            // c'tor and d'tor.  Therefore it doesn't\n                            // need to be used otherwise.\n\n// Constructs and returns the message for an equality assertion\n// (e.g. ASSERT_EQ, EXPECT_STREQ, etc) failure.\n//\n// The first four parameters are the expressions used in the assertion\n// and their values, as strings.  For example, for ASSERT_EQ(foo, bar)\n// where foo is 5 and bar is 6, we have:\n//\n//   expected_expression: \"foo\"\n//   actual_expression:   \"bar\"\n//   expected_value:      \"5\"\n//   actual_value:        \"6\"\n//\n// The ignoring_case parameter is true iff the assertion is a\n// *_STRCASEEQ*.  When it's true, the string \" (ignoring case)\" will\n// be inserted into the message.\nGTEST_API_ AssertionResult EqFailure(const char* expected_expression,\n                                     const char* actual_expression,\n                                     const std::string& expected_value,\n                                     const std::string& actual_value,\n                                     bool ignoring_case);\n\n// Constructs a failure message for Boolean assertions such as EXPECT_TRUE.\nGTEST_API_ std::string GetBoolAssertionFailureMessage(\n    const AssertionResult& assertion_result,\n    const char* expression_text,\n    const char* actual_predicate_value,\n    const char* expected_predicate_value);\n\n// This template class represents an IEEE floating-point number\n// (either single-precision or double-precision, depending on the\n// template parameters).\n//\n// The purpose of this class is to do more sophisticated number\n// comparison.  (Due to round-off error, etc, it's very unlikely that\n// two floating-points will be equal exactly.  Hence a naive\n// comparison by the == operation often doesn't work.)\n//\n// Format of IEEE floating-point:\n//\n//   The most-significant bit being the leftmost, an IEEE\n//   floating-point looks like\n//\n//     sign_bit exponent_bits fraction_bits\n//\n//   Here, sign_bit is a single bit that designates the sign of the\n//   number.\n//\n//   For float, there are 8 exponent bits and 23 fraction bits.\n//\n//   For double, there are 11 exponent bits and 52 fraction bits.\n//\n//   More details can be found at\n//   http://en.wikipedia.org/wiki/IEEE_floating-point_standard.\n//\n// Template parameter:\n//\n//   RawType: the raw floating-point type (either float or double)\ntemplate <typename RawType>\nclass FloatingPoint {\n public:\n  // Defines the unsigned integer type that has the same size as the\n  // floating point number.\n  typedef typename TypeWithSize<sizeof(RawType)>::UInt Bits;\n\n  // Constants.\n\n  // # of bits in a number.\n  static const size_t kBitCount = 8*sizeof(RawType);\n\n  // # of fraction bits in a number.\n  static const size_t kFractionBitCount =\n    std::numeric_limits<RawType>::digits - 1;\n\n  // # of exponent bits in a number.\n  static const size_t kExponentBitCount = kBitCount - 1 - kFractionBitCount;\n\n  // The mask for the sign bit.\n  static const Bits kSignBitMask = static_cast<Bits>(1) << (kBitCount - 1);\n\n  // The mask for the fraction bits.\n  static const Bits kFractionBitMask =\n    ~static_cast<Bits>(0) >> (kExponentBitCount + 1);\n\n  // The mask for the exponent bits.\n  static const Bits kExponentBitMask = ~(kSignBitMask | kFractionBitMask);\n\n  // How many ULP's (Units in the Last Place) we want to tolerate when\n  // comparing two numbers.  The larger the value, the more error we\n  // allow.  A 0 value means that two numbers must be exactly the same\n  // to be considered equal.\n  //\n  // The maximum error of a single floating-point operation is 0.5\n  // units in the last place.  On Intel CPU's, all floating-point\n  // calculations are done with 80-bit precision, while double has 64\n  // bits.  Therefore, 4 should be enough for ordinary use.\n  //\n  // See the following article for more details on ULP:\n  // http://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/\n  static const size_t kMaxUlps = 4;\n\n  // Constructs a FloatingPoint from a raw floating-point number.\n  //\n  // On an Intel CPU, passing a non-normalized NAN (Not a Number)\n  // around may change its bits, although the new value is guaranteed\n  // to be also a NAN.  Therefore, don't expect this constructor to\n  // preserve the bits in x when x is a NAN.\n  explicit FloatingPoint(const RawType& x) { u_.value_ = x; }\n\n  // Static methods\n\n  // Reinterprets a bit pattern as a floating-point number.\n  //\n  // This function is needed to test the AlmostEquals() method.\n  static RawType ReinterpretBits(const Bits bits) {\n    FloatingPoint fp(0);\n    fp.u_.bits_ = bits;\n    return fp.u_.value_;\n  }\n\n  // Returns the floating-point number that represent positive infinity.\n  static RawType Infinity() {\n    return ReinterpretBits(kExponentBitMask);\n  }\n\n  // Returns the maximum representable finite floating-point number.\n  static RawType Max();\n\n  // Non-static methods\n\n  // Returns the bits that represents this number.\n  const Bits &bits() const { return u_.bits_; }\n\n  // Returns the exponent bits of this number.\n  Bits exponent_bits() const { return kExponentBitMask & u_.bits_; }\n\n  // Returns the fraction bits of this number.\n  Bits fraction_bits() const { return kFractionBitMask & u_.bits_; }\n\n  // Returns the sign bit of this number.\n  Bits sign_bit() const { return kSignBitMask & u_.bits_; }\n\n  // Returns true iff this is NAN (not a number).\n  bool is_nan() const {\n    // It's a NAN if the exponent bits are all ones and the fraction\n    // bits are not entirely zeros.\n    return (exponent_bits() == kExponentBitMask) && (fraction_bits() != 0);\n  }\n\n  // Returns true iff this number is at most kMaxUlps ULP's away from\n  // rhs.  In particular, this function:\n  //\n  //   - returns false if either number is (or both are) NAN.\n  //   - treats really large numbers as almost equal to infinity.\n  //   - thinks +0.0 and -0.0 are 0 DLP's apart.\n  bool AlmostEquals(const FloatingPoint& rhs) const {\n    // The IEEE standard says that any comparison operation involving\n    // a NAN must return false.\n    if (is_nan() || rhs.is_nan()) return false;\n\n    return DistanceBetweenSignAndMagnitudeNumbers(u_.bits_, rhs.u_.bits_)\n        <= kMaxUlps;\n  }\n\n private:\n  // The data type used to store the actual floating-point number.\n  union FloatingPointUnion {\n    RawType value_;  // The raw floating-point number.\n    Bits bits_;      // The bits that represent the number.\n  };\n\n  // Converts an integer from the sign-and-magnitude representation to\n  // the biased representation.  More precisely, let N be 2 to the\n  // power of (kBitCount - 1), an integer x is represented by the\n  // unsigned number x + N.\n  //\n  // For instance,\n  //\n  //   -N + 1 (the most negative number representable using\n  //          sign-and-magnitude) is represented by 1;\n  //   0      is represented by N; and\n  //   N - 1  (the biggest number representable using\n  //          sign-and-magnitude) is represented by 2N - 1.\n  //\n  // Read http://en.wikipedia.org/wiki/Signed_number_representations\n  // for more details on signed number representations.\n  static Bits SignAndMagnitudeToBiased(const Bits &sam) {\n    if (kSignBitMask & sam) {\n      // sam represents a negative number.\n      return ~sam + 1;\n    } else {\n      // sam represents a positive number.\n      return kSignBitMask | sam;\n    }\n  }\n\n  // Given two numbers in the sign-and-magnitude representation,\n  // returns the distance between them as an unsigned number.\n  static Bits DistanceBetweenSignAndMagnitudeNumbers(const Bits &sam1,\n                                                     const Bits &sam2) {\n    const Bits biased1 = SignAndMagnitudeToBiased(sam1);\n    const Bits biased2 = SignAndMagnitudeToBiased(sam2);\n    return (biased1 >= biased2) ? (biased1 - biased2) : (biased2 - biased1);\n  }\n\n  FloatingPointUnion u_;\n};\n\n// We cannot use std::numeric_limits<T>::max() as it clashes with the max()\n// macro defined by <windows.h>.\ntemplate <>\ninline float FloatingPoint<float>::Max() { return FLT_MAX; }\ntemplate <>\ninline double FloatingPoint<double>::Max() { return DBL_MAX; }\n\n// Typedefs the instances of the FloatingPoint template class that we\n// care to use.\ntypedef FloatingPoint<float> Float;\ntypedef FloatingPoint<double> Double;\n\n// In order to catch the mistake of putting tests that use different\n// test fixture classes in the same test case, we need to assign\n// unique IDs to fixture classes and compare them.  The TypeId type is\n// used to hold such IDs.  The user should treat TypeId as an opaque\n// type: the only operation allowed on TypeId values is to compare\n// them for equality using the == operator.\ntypedef const void* TypeId;\n\ntemplate <typename T>\nclass TypeIdHelper {\n public:\n  // dummy_ must not have a const type.  Otherwise an overly eager\n  // compiler (e.g. MSVC 7.1 & 8.0) may try to merge\n  // TypeIdHelper<T>::dummy_ for different Ts as an \"optimization\".\n  static bool dummy_;\n};\n\ntemplate <typename T>\nbool TypeIdHelper<T>::dummy_ = false;\n\n// GetTypeId<T>() returns the ID of type T.  Different values will be\n// returned for different types.  Calling the function twice with the\n// same type argument is guaranteed to return the same ID.\ntemplate <typename T>\nTypeId GetTypeId() {\n  // The compiler is required to allocate a different\n  // TypeIdHelper<T>::dummy_ variable for each T used to instantiate\n  // the template.  Therefore, the address of dummy_ is guaranteed to\n  // be unique.\n  return &(TypeIdHelper<T>::dummy_);\n}\n\n// Returns the type ID of ::testing::Test.  Always call this instead\n// of GetTypeId< ::testing::Test>() to get the type ID of\n// ::testing::Test, as the latter may give the wrong result due to a\n// suspected linker bug when compiling Google Test as a Mac OS X\n// framework.\nGTEST_API_ TypeId GetTestTypeId();\n\n// Defines the abstract factory interface that creates instances\n// of a Test object.\nclass TestFactoryBase {\n public:\n  virtual ~TestFactoryBase() {}\n\n  // Creates a test instance to run. The instance is both created and destroyed\n  // within TestInfoImpl::Run()\n  virtual Test* CreateTest() = 0;\n\n  virtual int getTestTimeout() const {\n    return 0;   // override me\n  }\n\n protected:\n  TestFactoryBase() {}\n\n private:\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(TestFactoryBase);\n};\n\n// This class provides implementation of TeastFactoryBase interface.\n// It is used in TEST and TEST_F macros.\ntemplate <class TestClass>\nclass TestFactoryImpl : public TestFactoryBase {\n public:\n  virtual Test* CreateTest() { return new TestClass; }\n};\n\n#if GTEST_OS_WINDOWS\n\n// Predicate-formatters for implementing the HRESULT checking macros\n// {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}\n// We pass a long instead of HRESULT to avoid causing an\n// include dependency for the HRESULT type.\nGTEST_API_ AssertionResult IsHRESULTSuccess(const char* expr,\n                                            long hr);  // NOLINT\nGTEST_API_ AssertionResult IsHRESULTFailure(const char* expr,\n                                            long hr);  // NOLINT\n\n#endif  // GTEST_OS_WINDOWS\n\n// Types of SetUpTestCase() and TearDownTestCase() functions.\ntypedef void (*SetUpTestCaseFunc)();\ntypedef void (*TearDownTestCaseFunc)();\n\n// Creates a new TestInfo object and registers it with Google Test;\n// returns the created object.\n//\n// Arguments:\n//\n//   test_case_name:   name of the test case\n//   name:             name of the test\n//   type_param        the name of the test's type parameter, or nullptr if\n//                     this is not a typed or a type-parameterized test.\n//   value_param       text representation of the test's value parameter,\n//                     or nullptr if this is not a type-parameterized test.\n//   fixture_class_id: ID of the test fixture class\n//   set_up_tc:        pointer to the function that sets up the test case\n//   tear_down_tc:     pointer to the function that tears down the test case\n//   factory:          pointer to the factory that creates a test object.\n//                     The newly created TestInfo instance will assume\n//                     ownership of the factory object.\nGTEST_API_ TestInfo* MakeAndRegisterTestInfo(\n    const char* test_case_name,\n    const char* name,\n    const char* type_param,\n    const char* value_param,\n    TypeId fixture_class_id,\n    SetUpTestCaseFunc set_up_tc,\n    TearDownTestCaseFunc tear_down_tc,\n    TestFactoryBase* factory);\n\n// If *pstr starts with the given prefix, modifies *pstr to be right\n// past the prefix and returns true; otherwise leaves *pstr unchanged\n// and returns false.  None of pstr, *pstr, and prefix can be null.\nGTEST_API_ bool SkipPrefix(const char* prefix, const char** pstr);\n\n#if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P\n\n// State of the definition of a type-parameterized test case.\nclass GTEST_API_ TypedTestCasePState {\n public:\n  TypedTestCasePState() : registered_(false) {}\n\n  // Adds the given test name to defined_test_names_ and return true\n  // if the test case hasn't been registered; otherwise aborts the\n  // program.\n  bool AddTestName(const char* file, int line, const char* case_name,\n                   const char* test_name) {\n    if (registered_) {\n      fprintf(stderr, \"%s Test %s must be defined before \"\n              \"REGISTER_TYPED_TEST_CASE_P(%s, ...).\\n\",\n              FormatFileLocation(file, line).c_str(), test_name, case_name);\n      fflush(stderr);\n      posix::Abort();\n    }\n    defined_test_names_.insert(test_name);\n    return true;\n  }\n\n  // Verifies that registered_tests match the test names in\n  // defined_test_names_; returns registered_tests if successful, or\n  // aborts the program otherwise.\n  const char* VerifyRegisteredTestNames(\n      const char* file, int line, const char* registered_tests);\n\n private:\n  bool registered_;\n  ::std::set<const char*> defined_test_names_;\n};\n\n// Skips to the first non-space char after the first comma in 'str';\n// returns nullptr if no comma is found in 'str'.\ninline const char* SkipComma(const char* str) {\n  const char* comma = strchr(str, ',');\n  if (comma == nullptr) {\n    return nullptr;\n  }\n  while (IsSpace(*(++comma))) {}\n  return comma;\n}\n\n// Returns the prefix of 'str' before the first comma in it; returns\n// the entire string if it contains no comma.\ninline std::string GetPrefixUntilComma(const char* str) {\n  const char* comma = strchr(str, ',');\n  return comma == nullptr ? str : std::string(str, comma);\n}\n\n// TypeParameterizedTest<Fixture, TestSel, Types>::Register()\n// registers a list of type-parameterized tests with Google Test.  The\n// return value is insignificant - we just need to return something\n// such that we can call this function in a namespace scope.\n//\n// Implementation note: The GTEST_TEMPLATE_ macro declares a template\n// template parameter.  It's defined in gtest-type-util.h.\ntemplate <GTEST_TEMPLATE_ Fixture, class TestSel, typename Types>\nclass TypeParameterizedTest {\n public:\n  // 'index' is the index of the test in the type list 'Types'\n  // specified in INSTANTIATE_TYPED_TEST_CASE_P(Prefix, TestCase,\n  // Types).  Valid values for 'index' are [0, N - 1] where N is the\n  // length of Types.\n  static bool Register(const char* prefix, const char* case_name,\n                       const char* test_names, int index) {\n    typedef typename Types::Head Type;\n    typedef Fixture<Type> FixtureClass;\n    typedef typename GTEST_BIND_(TestSel, Type) TestClass;\n\n    // First, registers the first type-parameterized test in the type\n    // list.\n    MakeAndRegisterTestInfo(\n        (std::string(prefix) + (prefix[0] == '\\0' ? \"\" : \"/\") + case_name + \"/\"\n         + StreamableToString(index)).c_str(),\n        GetPrefixUntilComma(test_names).c_str(),\n        GetTypeName<Type>().c_str(),\n        nullptr,  // No value parameter.\n        GetTypeId<FixtureClass>(),\n        TestClass::SetUpTestCase,\n        TestClass::TearDownTestCase,\n        new TestFactoryImpl<TestClass>);\n\n    // Next, recurses (at compile time) with the tail of the type list.\n    return TypeParameterizedTest<Fixture, TestSel, typename Types::Tail>\n        ::Register(prefix, case_name, test_names, index + 1);\n  }\n};\n\n// The base case for the compile time recursion.\ntemplate <GTEST_TEMPLATE_ Fixture, class TestSel>\nclass TypeParameterizedTest<Fixture, TestSel, Types0> {\n public:\n  static bool Register(const char* /*prefix*/, const char* /*case_name*/,\n                       const char* /*test_names*/, int /*index*/) {\n    return true;\n  }\n};\n\n// TypeParameterizedTestCase<Fixture, Tests, Types>::Register()\n// registers *all combinations* of 'Tests' and 'Types' with Google\n// Test.  The return value is insignificant - we just need to return\n// something such that we can call this function in a namespace scope.\ntemplate <GTEST_TEMPLATE_ Fixture, typename Tests, typename Types>\nclass TypeParameterizedTestCase {\n public:\n  static bool Register(const char* prefix, const char* case_name,\n                       const char* test_names) {\n    typedef typename Tests::Head Head;\n\n    // First, register the first test in 'Test' for each type in 'Types'.\n    TypeParameterizedTest<Fixture, Head, Types>::Register(\n        prefix, case_name, test_names, 0);\n\n    // Next, recurses (at compile time) with the tail of the test list.\n    return TypeParameterizedTestCase<Fixture, typename Tests::Tail, Types>\n        ::Register(prefix, case_name, SkipComma(test_names));\n  }\n};\n\n// The base case for the compile time recursion.\ntemplate <GTEST_TEMPLATE_ Fixture, typename Types>\nclass TypeParameterizedTestCase<Fixture, Templates0, Types> {\n public:\n  static bool Register(const char* /*prefix*/, const char* /*case_name*/,\n                       const char* /*test_names*/) {\n    return true;\n  }\n};\n\n#endif  // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P\n\n// Returns the current OS stack trace as an std::string.\n//\n// The maximum number of stack frames to be included is specified by\n// the gtest_stack_trace_depth flag.  The skip_count parameter\n// specifies the number of top frames to be skipped, which doesn't\n// count against the number of frames to be included.\n//\n// For example, if Foo() calls Bar(), which in turn calls\n// GetCurrentOsStackTraceExceptTop(..., 1), Foo() will be included in\n// the trace but Bar() and GetCurrentOsStackTraceExceptTop() won't.\nGTEST_API_ std::string GetCurrentOsStackTraceExceptTop(\n    UnitTest* unit_test, int skip_count);\n\n// Helpers for suppressing warnings on unreachable code or constant\n// condition.\n\n// Always returns true.\nGTEST_API_ bool AlwaysTrue();\n\n// Always returns false.\ninline bool AlwaysFalse() { return !AlwaysTrue(); }\n\n// Helper for suppressing false warning from Clang on a const char*\n// variable declared in a conditional expression always being null in\n// the else branch.\nstruct GTEST_API_ ConstCharPtr {\n  ConstCharPtr(const char* str) : value(str) {}\n  operator bool() const { return true; }\n  const char* value;\n};\n\n// A simple Linear Congruential Generator for generating random\n// numbers with a uniform distribution.  Unlike rand() and srand(), it\n// doesn't use global state (and therefore can't interfere with user\n// code).  Unlike rand_r(), it's portable.  An LCG isn't very random,\n// but it's good enough for our purposes.\nclass GTEST_API_ Random {\n public:\n  static const UInt32 kMaxRange = 1u << 31;\n\n  explicit Random(UInt32 seed) : state_(seed) {}\n\n  void Reseed(UInt32 seed) { state_ = seed; }\n\n  // Generates a random number from [0, range).  Crashes if 'range' is\n  // 0 or greater than kMaxRange.\n  UInt32 Generate(UInt32 range);\n\n private:\n  UInt32 state_;\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(Random);\n};\n\n// Defining a variable of type CompileAssertTypesEqual<T1, T2> will cause a\n// compiler error iff T1 and T2 are different types.\ntemplate <typename T1, typename T2>\nstruct CompileAssertTypesEqual;\n\ntemplate <typename T>\nstruct CompileAssertTypesEqual<T, T> {\n};\n\n// Removes the reference from a type if it is a reference type,\n// otherwise leaves it unchanged.  This is the same as\n// tr1::remove_reference, which is not widely available yet.\ntemplate <typename T>\nstruct RemoveReference { typedef T type; };  // NOLINT\ntemplate <typename T>\nstruct RemoveReference<T&> { typedef T type; };  // NOLINT\n\n// A handy wrapper around RemoveReference that works when the argument\n// T depends on template parameters.\n#define GTEST_REMOVE_REFERENCE_(T) \\\n    typename ::testing::internal::RemoveReference<T>::type\n\n// Removes const from a type if it is a const type, otherwise leaves\n// it unchanged.  This is the same as tr1::remove_const, which is not\n// widely available yet.\ntemplate <typename T>\nstruct RemoveConst { typedef T type; };  // NOLINT\ntemplate <typename T>\nstruct RemoveConst<const T> { typedef T type; };  // NOLINT\n\n// MSVC 8.0, Sun C++, and IBM XL C++ have a bug which causes the above\n// definition to fail to remove the const in 'const int[3]' and 'const\n// char[3][4]'.  The following specialization works around the bug.\ntemplate <typename T, size_t N>\nstruct RemoveConst<const T[N]> {\n  typedef typename RemoveConst<T>::type type[N];\n};\n\n#if defined(_MSC_VER) && _MSC_VER < 1400\n// This is the only specialization that allows VC++ 7.1 to remove const in\n// 'const int[3] and 'const int[3][4]'.  However, it causes trouble with GCC\n// and thus needs to be conditionally compiled.\ntemplate <typename T, size_t N>\nstruct RemoveConst<T[N]> {\n  typedef typename RemoveConst<T>::type type[N];\n};\n#endif\n\n// A handy wrapper around RemoveConst that works when the argument\n// T depends on template parameters.\n#define GTEST_REMOVE_CONST_(T) \\\n    typename ::testing::internal::RemoveConst<T>::type\n\n// Turns const U&, U&, const U, and U all into U.\n#define GTEST_REMOVE_REFERENCE_AND_CONST_(T) \\\n    GTEST_REMOVE_CONST_(GTEST_REMOVE_REFERENCE_(T))\n\n// Adds reference to a type if it is not a reference type,\n// otherwise leaves it unchanged.  This is the same as\n// tr1::add_reference, which is not widely available yet.\ntemplate <typename T>\nstruct AddReference { typedef T& type; };  // NOLINT\ntemplate <typename T>\nstruct AddReference<T&> { typedef T& type; };  // NOLINT\n\n// A handy wrapper around AddReference that works when the argument T\n// depends on template parameters.\n#define GTEST_ADD_REFERENCE_(T) \\\n    typename ::testing::internal::AddReference<T>::type\n\n// Adds a reference to const on top of T as necessary.  For example,\n// it transforms\n//\n//   char         ==> const char&\n//   const char   ==> const char&\n//   char&        ==> const char&\n//   const char&  ==> const char&\n//\n// The argument T must depend on some template parameters.\n#define GTEST_REFERENCE_TO_CONST_(T) \\\n    GTEST_ADD_REFERENCE_(const GTEST_REMOVE_REFERENCE_(T))\n\n// ImplicitlyConvertible<From, To>::value is a compile-time bool\n// constant that's true iff type From can be implicitly converted to\n// type To.\ntemplate <typename From, typename To>\nclass ImplicitlyConvertible {\n private:\n  // We need the following helper functions only for their types.\n  // They have no implementations.\n\n  // MakeFrom() is an expression whose type is From.  We cannot simply\n  // use From(), as the type From may not have a public default\n  // constructor.\n  static From MakeFrom();\n\n  // These two functions are overloaded.  Given an expression\n  // Helper(x), the compiler will pick the first version if x can be\n  // implicitly converted to type To; otherwise it will pick the\n  // second version.\n  //\n  // The first version returns a value of size 1, and the second\n  // version returns a value of size 2.  Therefore, by checking the\n  // size of Helper(x), which can be done at compile time, we can tell\n  // which version of Helper() is used, and hence whether x can be\n  // implicitly converted to type To.\n  static char Helper(To);\n  static char (&Helper(...))[2];  // NOLINT\n\n  // We have to put the 'public' section after the 'private' section,\n  // or MSVC refuses to compile the code.\n public:\n  // MSVC warns about implicitly converting from double to int for\n  // possible loss of data, so we need to temporarily disable the\n  // warning.\n#ifdef _MSC_VER\n# pragma warning(push)          // Saves the current warning state.\n# pragma warning(disable:4244)  // Temporarily disables warning 4244.\n\n  static const bool value =\n      sizeof(Helper(ImplicitlyConvertible::MakeFrom())) == 1;\n# pragma warning(pop)           // Restores the warning state.\n#elif defined(__BORLANDC__)\n  // C++Builder cannot use member overload resolution during template\n  // instantiation.  The simplest workaround is to use its C++0x type traits\n  // functions (C++Builder 2009 and above only).\n  static const bool value = __is_convertible(From, To);\n#else\n  static const bool value =\n      sizeof(Helper(ImplicitlyConvertible::MakeFrom())) == 1;\n#endif  // _MSV_VER\n};\ntemplate <typename From, typename To>\nconst bool ImplicitlyConvertible<From, To>::value;\n\n// IsAProtocolMessage<T>::value is a compile-time bool constant that's\n// true iff T is type ProtocolMessage, proto2::Message, or a subclass\n// of those.\ntemplate <typename T>\nstruct IsAProtocolMessage\n    : public bool_constant<\n  ImplicitlyConvertible<const T*, const ::ProtocolMessage*>::value ||\n  ImplicitlyConvertible<const T*, const ::proto2::Message*>::value> {\n};\n\n// When the compiler sees expression IsContainerTest<C>(0), if C is an\n// STL-style container class, the first overload of IsContainerTest\n// will be viable (since both C::iterator* and C::const_iterator* are\n// valid types and nullptr can be implicitly converted to them).  It will\n// be picked over the second overload as 'int' is a perfect match for\n// the type of argument 0.  If C::iterator or C::const_iterator is not\n// a valid type, the first overload is not viable, and the second\n// overload will be picked.  Therefore, we can determine whether C is\n// a container class by checking the type of IsContainerTest<C>(0).\n// The value of the expression is insignificant.\n//\n// Note that we look for both C::iterator and C::const_iterator.  The\n// reason is that C++ injects the name of a class as a member of the\n// class itself (e.g. you can refer to class iterator as either\n// 'iterator' or 'iterator::iterator').  If we look for C::iterator\n// only, for example, we would mistakenly think that a class named\n// iterator is an STL container.\n//\n// Also note that the simpler approach of overloading\n// IsContainerTest(typename C::const_iterator*) and\n// IsContainerTest(...) doesn't work with Visual Age C++ and Sun C++.\ntypedef int IsContainer;\ntemplate <class C>\nIsContainer IsContainerTest(int /* dummy */,\n                            typename C::iterator* /* it */ = nullptr,\n                            typename C::const_iterator* /* const_it */ = nullptr) {\n  return 0;\n}\n\ntypedef char IsNotContainer;\ntemplate <class C>\nIsNotContainer IsContainerTest(long /* dummy */) { return '\\0'; }\n\n// EnableIf<condition>::type is void when 'Cond' is true, and\n// undefined when 'Cond' is false.  To use SFINAE to make a function\n// overload only apply when a particular expression is true, add\n// \"typename EnableIf<expression>::type* = 0\" as the last parameter.\ntemplate<bool> struct EnableIf;\ntemplate<> struct EnableIf<true> { typedef void type; };  // NOLINT\n\n// Utilities for native arrays.\n\n// ArrayEq() compares two k-dimensional native arrays using the\n// elements' operator==, where k can be any integer >= 0.  When k is\n// 0, ArrayEq() degenerates into comparing a single pair of values.\n\ntemplate <typename T, typename U>\nbool ArrayEq(const T* lhs, size_t size, const U* rhs);\n\n// This generic version is used when k is 0.\ntemplate <typename T, typename U>\ninline bool ArrayEq(const T& lhs, const U& rhs) { return lhs == rhs; }\n\n// This overload is used when k >= 1.\ntemplate <typename T, typename U, size_t N>\ninline bool ArrayEq(const T(&lhs)[N], const U(&rhs)[N]) {\n  return internal::ArrayEq(lhs, N, rhs);\n}\n\n// This helper reduces code bloat.  If we instead put its logic inside\n// the previous ArrayEq() function, arrays with different sizes would\n// lead to different copies of the template code.\ntemplate <typename T, typename U>\nbool ArrayEq(const T* lhs, size_t size, const U* rhs) {\n  for (size_t i = 0; i != size; i++) {\n    if (!internal::ArrayEq(lhs[i], rhs[i]))\n      return false;\n  }\n  return true;\n}\n\n// Finds the first element in the iterator range [begin, end) that\n// equals elem.  Element may be a native array type itself.\ntemplate <typename Iter, typename Element>\nIter ArrayAwareFind(Iter begin, Iter end, const Element& elem) {\n  for (Iter it = begin; it != end; ++it) {\n    if (internal::ArrayEq(*it, elem))\n      return it;\n  }\n  return end;\n}\n\n// CopyArray() copies a k-dimensional native array using the elements'\n// operator=, where k can be any integer >= 0.  When k is 0,\n// CopyArray() degenerates into copying a single value.\n\ntemplate <typename T, typename U>\nvoid CopyArray(const T* from, size_t size, U* to);\n\n// This generic version is used when k is 0.\ntemplate <typename T, typename U>\ninline void CopyArray(const T& from, U* to) { *to = from; }\n\n// This overload is used when k >= 1.\ntemplate <typename T, typename U, size_t N>\ninline void CopyArray(const T(&from)[N], U(*to)[N]) {\n  internal::CopyArray(from, N, *to);\n}\n\n// This helper reduces code bloat.  If we instead put its logic inside\n// the previous CopyArray() function, arrays with different sizes\n// would lead to different copies of the template code.\ntemplate <typename T, typename U>\nvoid CopyArray(const T* from, size_t size, U* to) {\n  for (size_t i = 0; i != size; i++) {\n    internal::CopyArray(from[i], to + i);\n  }\n}\n\n// The relation between an NativeArray object (see below) and the\n// native array it represents.\nenum RelationToSource {\n  kReference,  // The NativeArray references the native array.\n  kCopy        // The NativeArray makes a copy of the native array and\n               // owns the copy.\n};\n\n// Adapts a native array to a read-only STL-style container.  Instead\n// of the complete STL container concept, this adaptor only implements\n// members useful for Google Mock's container matchers.  New members\n// should be added as needed.  To simplify the implementation, we only\n// support Element being a raw type (i.e. having no top-level const or\n// reference modifier).  It's the client's responsibility to satisfy\n// this requirement.  Element can be an array type itself (hence\n// multi-dimensional arrays are supported).\ntemplate <typename Element>\nclass NativeArray {\n public:\n  // STL-style container typedefs.\n  typedef Element value_type;\n  typedef Element* iterator;\n  typedef const Element* const_iterator;\n\n  // Constructs from a native array.\n  NativeArray(const Element* array, size_t count, RelationToSource relation) {\n    Init(array, count, relation);\n  }\n\n  // Copy constructor.\n  NativeArray(const NativeArray& rhs) {\n    Init(rhs.array_, rhs.size_, rhs.relation_to_source_);\n  }\n\n  ~NativeArray() {\n    // Ensures that the user doesn't instantiate NativeArray with a\n    // const or reference type.\n    static_cast<void>(StaticAssertTypeEqHelper<Element,\n        GTEST_REMOVE_REFERENCE_AND_CONST_(Element)>());\n    if (relation_to_source_ == kCopy)\n      delete[] array_;\n  }\n\n  // STL-style container methods.\n  size_t size() const { return size_; }\n  const_iterator begin() const { return array_; }\n  const_iterator end() const { return array_ + size_; }\n  bool operator==(const NativeArray& rhs) const {\n    return size() == rhs.size() &&\n        ArrayEq(begin(), size(), rhs.begin());\n  }\n\n private:\n  // Initializes this object; makes a copy of the input array if\n  // 'relation' is kCopy.\n  void Init(const Element* array, size_t a_size, RelationToSource relation) {\n    if (relation == kReference) {\n      array_ = array;\n    } else {\n      Element* const copy = new Element[a_size];\n      CopyArray(array, a_size, copy);\n      array_ = copy;\n    }\n    size_ = a_size;\n    relation_to_source_ = relation;\n  }\n\n  const Element* array_;\n  size_t size_;\n  RelationToSource relation_to_source_;\n\n  GTEST_DISALLOW_ASSIGN_(NativeArray);\n};\n\n}  // namespace internal\n}  // namespace testing\n\n#define GTEST_MESSAGE_AT_(file, line, message, result_type) \\\n  ::testing::internal::AssertHelper(result_type, file, line, message) \\\n    = ::testing::Message()\n\n#define GTEST_MESSAGE_(message, result_type) \\\n  GTEST_MESSAGE_AT_(__FILE__, __LINE__, message, result_type)\n\n#define GTEST_FATAL_FAILURE_(message) \\\n  return GTEST_MESSAGE_(message, ::testing::TestPartResult::kFatalFailure)\n\n#define GTEST_NONFATAL_FAILURE_(message) \\\n  GTEST_MESSAGE_(message, ::testing::TestPartResult::kNonFatalFailure)\n\n#define GTEST_SUCCESS_(message) \\\n  GTEST_MESSAGE_(message, ::testing::TestPartResult::kSuccess)\n\n// Suppresses MSVC warnings 4072 (unreachable code) for the code following\n// statement if it returns or throws (or doesn't return or throw in some\n// situations).\n#define GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement) \\\n  if (::testing::internal::AlwaysTrue()) { statement; }\n\n#define GTEST_TEST_THROW_(statement, expected_exception, fail) \\\n  GTEST_AMBIGUOUS_ELSE_BLOCKER_ \\\n  if (::testing::internal::ConstCharPtr gtest_msg = \"\") { \\\n    bool gtest_caught_expected = false; \\\n    try { \\\n      GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \\\n    } \\\n    catch (expected_exception const&) { \\\n      gtest_caught_expected = true; \\\n    } \\\n    catch (...) { \\\n      gtest_msg.value = \\\n          \"Expected: \" #statement \" throws an exception of type \" \\\n          #expected_exception \".\\n  Actual: it throws a different type.\"; \\\n      goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \\\n    } \\\n    if (!gtest_caught_expected) { \\\n      gtest_msg.value = \\\n          \"Expected: \" #statement \" throws an exception of type \" \\\n          #expected_exception \".\\n  Actual: it throws nothing.\"; \\\n      goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \\\n    } \\\n  } else \\\n    GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__): \\\n      fail(gtest_msg.value)\n\n#define GTEST_TEST_NO_THROW_(statement, fail) \\\n  GTEST_AMBIGUOUS_ELSE_BLOCKER_ \\\n  if (::testing::internal::AlwaysTrue()) { \\\n    try { \\\n      GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \\\n    } \\\n    catch (...) { \\\n      goto GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__); \\\n    } \\\n  } else \\\n    GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__): \\\n      fail(\"Expected: \" #statement \" doesn't throw an exception.\\n\" \\\n           \"  Actual: it throws.\")\n\n#define GTEST_TEST_ANY_THROW_(statement, fail) \\\n  GTEST_AMBIGUOUS_ELSE_BLOCKER_ \\\n  if (::testing::internal::AlwaysTrue()) { \\\n    bool gtest_caught_any = false; \\\n    try { \\\n      GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \\\n    } \\\n    catch (...) { \\\n      gtest_caught_any = true; \\\n    } \\\n    if (!gtest_caught_any) { \\\n      goto GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__); \\\n    } \\\n  } else \\\n    GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__): \\\n      fail(\"Expected: \" #statement \" throws an exception.\\n\" \\\n           \"  Actual: it doesn't.\")\n\n\n// Implements Boolean test assertions such as EXPECT_TRUE. expression can be\n// either a boolean expression or an AssertionResult. text is a textual\n// represenation of expression as it was passed into the EXPECT_TRUE.\n#define GTEST_TEST_BOOLEAN_(expression, text, actual, expected, fail) \\\n  GTEST_AMBIGUOUS_ELSE_BLOCKER_ \\\n  if (const ::testing::AssertionResult gtest_ar_ = \\\n      ::testing::AssertionResult(expression)) \\\n    ; \\\n  else \\\n    fail(::testing::internal::GetBoolAssertionFailureMessage(\\\n        gtest_ar_, text, #actual, #expected).c_str())\n\n#define GTEST_TEST_NO_FATAL_FAILURE_(statement, fail) \\\n  GTEST_AMBIGUOUS_ELSE_BLOCKER_ \\\n  if (::testing::internal::AlwaysTrue()) { \\\n    ::testing::internal::HasNewFatalFailureHelper gtest_fatal_failure_checker; \\\n    GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \\\n    if (gtest_fatal_failure_checker.has_new_fatal_failure()) { \\\n      goto GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__); \\\n    } \\\n  } else \\\n    GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__): \\\n      fail(\"Expected: \" #statement \" doesn't generate new fatal \" \\\n           \"failures in the current thread.\\n\" \\\n           \"  Actual: it does.\")\n\n// Expands to the name of the class that implements the given test.\n#define GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \\\n  test_case_name##_##test_name##_Test\n\n// Helper macro for defining tests.\n#define GTEST_TEST_(test_case_name, test_name, parent_class, parent_id)\\\nclass GTEST_TEST_CLASS_NAME_(test_case_name, test_name) : public parent_class {\\\n public:\\\n  GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {}\\\n private:\\\n  virtual void TestBody();\\\n  static ::testing::TestInfo* const test_info_ GTEST_ATTRIBUTE_UNUSED_;\\\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(\\\n      GTEST_TEST_CLASS_NAME_(test_case_name, test_name));\\\n};\\\n\\\n::testing::TestInfo* const GTEST_TEST_CLASS_NAME_(test_case_name, test_name)\\\n  ::test_info_ =\\\n    ::testing::internal::MakeAndRegisterTestInfo(\\\n        #test_case_name, #test_name, nullptr, nullptr, \\\n        (parent_id), \\\n        parent_class::SetUpTestCase, \\\n        parent_class::TearDownTestCase, \\\n        new ::testing::internal::TestFactoryImpl<\\\n            GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>);\\\nvoid GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody()\n\n#endif  // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_\n// Copyright 2005, Google Inc.\n// All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n// Author: wan@google.com (Zhanyong Wan)\n//\n// The Google C++ Testing Framework (Google Test)\n//\n// This header file defines the public API for death tests.  It is\n// #included by gtest.h so a user doesn't need to include this\n// directly.\n\n#ifndef GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_\n#define GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_\n\n// Copyright 2005, Google Inc.\n// All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n// Authors: wan@google.com (Zhanyong Wan), eefacm@gmail.com (Sean Mcafee)\n//\n// The Google C++ Testing Framework (Google Test)\n//\n// This header file defines internal utilities needed for implementing\n// death tests.  They are subject to change without notice.\n\n#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_\n#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_\n\n\n#include <stdio.h>\n\nnamespace testing {\nnamespace internal {\n\nGTEST_DECLARE_string_(internal_run_death_test);\n\n// Names of the flags (needed for parsing Google Test flags).\nconst char kDeathTestStyleFlag[] = \"death_test_style\";\nconst char kDeathTestUseFork[] = \"death_test_use_fork\";\nconst char kInternalRunDeathTestFlag[] = \"internal_run_death_test\";\n\n#if GTEST_HAS_DEATH_TEST\n\n// DeathTest is a class that hides much of the complexity of the\n// GTEST_DEATH_TEST_ macro.  It is abstract; its static Create method\n// returns a concrete class that depends on the prevailing death test\n// style, as defined by the --gtest_death_test_style and/or\n// --gtest_internal_run_death_test flags.\n\n// In describing the results of death tests, these terms are used with\n// the corresponding definitions:\n//\n// exit status:  The integer exit information in the format specified\n//               by wait(2)\n// exit code:    The integer code passed to exit(3), _exit(2), or\n//               returned from main()\nclass GTEST_API_ DeathTest {\n public:\n  // Create returns false if there was an error determining the\n  // appropriate action to take for the current death test; for example,\n  // if the gtest_death_test_style flag is set to an invalid value.\n  // The LastMessage method will return a more detailed message in that\n  // case.  Otherwise, the DeathTest pointer pointed to by the \"test\"\n  // argument is set.  If the death test should be skipped, the pointer\n  // is set to nullptr; otherwise, it is set to the address of a new concrete\n  // DeathTest object that controls the execution of the current test.\n  static bool Create(const char* statement, const RE* regex,\n                     const char* file, int line, DeathTest** test);\n  DeathTest();\n  virtual ~DeathTest() { }\n\n  // A helper class that aborts a death test when it's deleted.\n  class ReturnSentinel {\n   public:\n    explicit ReturnSentinel(DeathTest* test) : test_(test) { }\n    ~ReturnSentinel() { test_->Abort(TEST_ENCOUNTERED_RETURN_STATEMENT); }\n   private:\n    DeathTest* const test_;\n    GTEST_DISALLOW_COPY_AND_ASSIGN_(ReturnSentinel);\n  } GTEST_ATTRIBUTE_UNUSED_;\n\n  // An enumeration of possible roles that may be taken when a death\n  // test is encountered.  EXECUTE means that the death test logic should\n  // be executed immediately.  OVERSEE means that the program should prepare\n  // the appropriate environment for a child process to execute the death\n  // test, then wait for it to complete.\n  enum TestRole { OVERSEE_TEST, EXECUTE_TEST };\n\n  // An enumeration of the three reasons that a test might be aborted.\n  enum AbortReason {\n    TEST_ENCOUNTERED_RETURN_STATEMENT,\n    TEST_THREW_EXCEPTION,\n    TEST_DID_NOT_DIE\n  };\n\n  // Assumes one of the above roles.\n  virtual TestRole AssumeRole() = 0;\n\n  // Waits for the death test to finish and returns its status.\n  virtual int Wait() = 0;\n\n  // Returns true if the death test passed; that is, the test process\n  // exited during the test, its exit status matches a user-supplied\n  // predicate, and its stderr output matches a user-supplied regular\n  // expression.\n  // The user-supplied predicate may be a macro expression rather\n  // than a function pointer or functor, or else Wait and Passed could\n  // be combined.\n  virtual bool Passed(bool exit_status_ok) = 0;\n\n  // Signals that the death test did not die as expected.\n  virtual void Abort(AbortReason reason) = 0;\n\n  // Returns a human-readable outcome message regarding the outcome of\n  // the last death test.\n  static const char* LastMessage();\n\n  static void set_last_death_test_message(const std::string& message);\n\n private:\n  // A string containing a description of the outcome of the last death test.\n  static std::string last_death_test_message_;\n\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(DeathTest);\n};\n\n// Factory interface for death tests.  May be mocked out for testing.\nclass DeathTestFactory {\n public:\n  virtual ~DeathTestFactory() { }\n  virtual bool Create(const char* statement, const RE* regex,\n                      const char* file, int line, DeathTest** test) = 0;\n};\n\n// A concrete DeathTestFactory implementation for normal use.\nclass DefaultDeathTestFactory : public DeathTestFactory {\n public:\n  virtual bool Create(const char* statement, const RE* regex,\n                      const char* file, int line, DeathTest** test);\n};\n\n// Returns true if exit_status describes a process that was terminated\n// by a signal, or exited normally with a nonzero exit code.\nGTEST_API_ bool ExitedUnsuccessfully(int exit_status);\n\n// Traps C++ exceptions escaping statement and reports them as test\n// failures. Note that trapping SEH exceptions is not implemented here.\n# if GTEST_HAS_EXCEPTIONS\n#  define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \\\n  try { \\\n    GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \\\n  } catch (const ::std::exception& gtest_exception) { \\\n    fprintf(\\\n        stderr, \\\n        \"\\n%s: Caught std::exception-derived exception escaping the \" \\\n        \"death test statement. Exception message: %s\\n\", \\\n        ::testing::internal::FormatFileLocation(__FILE__, __LINE__).c_str(), \\\n        gtest_exception.what()); \\\n    fflush(stderr); \\\n    death_test->Abort(::testing::internal::DeathTest::TEST_THREW_EXCEPTION); \\\n  } catch (...) { \\\n    death_test->Abort(::testing::internal::DeathTest::TEST_THREW_EXCEPTION); \\\n  }\n\n# else\n#  define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \\\n  GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement)\n\n# endif\n\n// This macro is for implementing ASSERT_DEATH*, EXPECT_DEATH*,\n// ASSERT_EXIT*, and EXPECT_EXIT*.\n# define GTEST_DEATH_TEST_(statement, predicate, regex, fail) \\\n  GTEST_AMBIGUOUS_ELSE_BLOCKER_ \\\n  if (::testing::internal::AlwaysTrue()) { \\\n    const ::testing::internal::RE& gtest_regex = (regex); \\\n    ::testing::internal::DeathTest* gtest_dt; \\\n    if (!::testing::internal::DeathTest::Create(#statement, &gtest_regex, \\\n        __FILE__, __LINE__, &gtest_dt)) { \\\n      goto GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__); \\\n    } \\\n    if (gtest_dt != nullptr) { \\\n      ::testing::internal::scoped_ptr< ::testing::internal::DeathTest> \\\n          gtest_dt_ptr(gtest_dt); \\\n      switch (gtest_dt->AssumeRole()) { \\\n        case ::testing::internal::DeathTest::OVERSEE_TEST: \\\n          if (!gtest_dt->Passed(predicate(gtest_dt->Wait()))) { \\\n            goto GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__); \\\n          } \\\n          break; \\\n        case ::testing::internal::DeathTest::EXECUTE_TEST: { \\\n          ::testing::internal::DeathTest::ReturnSentinel \\\n              gtest_sentinel(gtest_dt); \\\n          GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, gtest_dt); \\\n          gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE); \\\n          break; \\\n        } \\\n        default: \\\n          break; \\\n      } \\\n    } \\\n  } else \\\n    GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__): \\\n      fail(::testing::internal::DeathTest::LastMessage())\n// The symbol \"fail\" here expands to something into which a message\n// can be streamed.\n\n// This macro is for implementing ASSERT/EXPECT_DEBUG_DEATH when compiled in\n// NDEBUG mode. In this case we need the statements to be executed, the regex is\n// ignored, and the macro must accept a streamed message even though the message\n// is never printed.\n# define GTEST_EXECUTE_STATEMENT_(statement, regex) \\\n  GTEST_AMBIGUOUS_ELSE_BLOCKER_ \\\n  if (::testing::internal::AlwaysTrue()) { \\\n     GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \\\n  } else \\\n    ::testing::Message()\n\n// A class representing the parsed contents of the\n// --gtest_internal_run_death_test flag, as it existed when\n// RUN_ALL_TESTS was called.\nclass InternalRunDeathTestFlag {\n public:\n  InternalRunDeathTestFlag(const std::string& a_file,\n                           int a_line,\n                           int an_index,\n                           int a_write_fd)\n      : file_(a_file), line_(a_line), index_(an_index),\n        write_fd_(a_write_fd) {}\n\n  ~InternalRunDeathTestFlag() {\n    if (write_fd_ >= 0)\n      posix::Close(write_fd_);\n  }\n\n  const std::string& file() const { return file_; }\n  int line() const { return line_; }\n  int index() const { return index_; }\n  int write_fd() const { return write_fd_; }\n\n private:\n  std::string file_;\n  int line_;\n  int index_;\n  int write_fd_;\n\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(InternalRunDeathTestFlag);\n};\n\n// Returns a newly created InternalRunDeathTestFlag object with fields\n// initialized from the GTEST_FLAG(internal_run_death_test) flag if\n// the flag is specified; otherwise returns nullptr.\nInternalRunDeathTestFlag* ParseInternalRunDeathTestFlag();\n\n#else  // GTEST_HAS_DEATH_TEST\n\n// This macro is used for implementing macros such as\n// EXPECT_DEATH_IF_SUPPORTED and ASSERT_DEATH_IF_SUPPORTED on systems where\n// death tests are not supported. Those macros must compile on such systems\n// iff EXPECT_DEATH and ASSERT_DEATH compile with the same parameters on\n// systems that support death tests. This allows one to write such a macro\n// on a system that does not support death tests and be sure that it will\n// compile on a death-test supporting system.\n//\n// Parameters:\n//   statement -  A statement that a macro such as EXPECT_DEATH would test\n//                for program termination. This macro has to make sure this\n//                statement is compiled but not executed, to ensure that\n//                EXPECT_DEATH_IF_SUPPORTED compiles with a certain\n//                parameter iff EXPECT_DEATH compiles with it.\n//   regex     -  A regex that a macro such as EXPECT_DEATH would use to test\n//                the output of statement.  This parameter has to be\n//                compiled but not evaluated by this macro, to ensure that\n//                this macro only accepts expressions that a macro such as\n//                EXPECT_DEATH would accept.\n//   terminator - Must be an empty statement for EXPECT_DEATH_IF_SUPPORTED\n//                and a return statement for ASSERT_DEATH_IF_SUPPORTED.\n//                This ensures that ASSERT_DEATH_IF_SUPPORTED will not\n//                compile inside functions where ASSERT_DEATH doesn't\n//                compile.\n//\n//  The branch that has an always false condition is used to ensure that\n//  statement and regex are compiled (and thus syntactically correct) but\n//  never executed. The unreachable code macro protects the terminator\n//  statement from generating an 'unreachable code' warning in case\n//  statement unconditionally returns or throws. The Message constructor at\n//  the end allows the syntax of streaming additional messages into the\n//  macro, for compilational compatibility with EXPECT_DEATH/ASSERT_DEATH.\n# define GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, terminator) \\\n    GTEST_AMBIGUOUS_ELSE_BLOCKER_ \\\n    if (::testing::internal::AlwaysTrue()) { \\\n      GTEST_LOG_(WARNING) \\\n          << \"Death tests are not supported on this platform.\\n\" \\\n          << \"Statement '\" #statement \"' cannot be verified.\"; \\\n    } else if (::testing::internal::AlwaysFalse()) { \\\n      ::testing::internal::RE::PartialMatch(\".*\", (regex)); \\\n      GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \\\n      terminator; \\\n    } else \\\n      ::testing::Message()\n\n#endif  // GTEST_HAS_DEATH_TEST\n\n}  // namespace internal\n}  // namespace testing\n\n#endif  // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_\n\nnamespace testing {\n\n// This flag controls the style of death tests.  Valid values are \"threadsafe\",\n// meaning that the death test child process will re-execute the test binary\n// from the start, running only a single death test, or \"fast\",\n// meaning that the child process will execute the test logic immediately\n// after forking.\nGTEST_DECLARE_string_(death_test_style);\n\n#if GTEST_HAS_DEATH_TEST\n\nnamespace internal {\n\n// Returns a Boolean value indicating whether the caller is currently\n// executing in the context of the death test child process.  Tools such as\n// Valgrind heap checkers may need this to modify their behavior in death\n// tests.  IMPORTANT: This is an internal utility.  Using it may break the\n// implementation of death tests.  User code MUST NOT use it.\nGTEST_API_ bool InDeathTestChild();\n\n}  // namespace internal\n\n// The following macros are useful for writing death tests.\n\n// Here's what happens when an ASSERT_DEATH* or EXPECT_DEATH* is\n// executed:\n//\n//   1. It generates a warning if there is more than one active\n//   thread.  This is because it's safe to fork() or clone() only\n//   when there is a single thread.\n//\n//   2. The parent process clone()s a sub-process and runs the death\n//   test in it; the sub-process exits with code 0 at the end of the\n//   death test, if it hasn't exited already.\n//\n//   3. The parent process waits for the sub-process to terminate.\n//\n//   4. The parent process checks the exit code and error message of\n//   the sub-process.\n//\n// Examples:\n//\n//   ASSERT_DEATH(server.SendMessage(56, \"Hello\"), \"Invalid port number\");\n//   for (int i = 0; i < 5; i++) {\n//     EXPECT_DEATH(server.ProcessRequest(i),\n//                  \"Invalid request .* in ProcessRequest()\")\n//                  << \"Failed to die on request \" << i;\n//   }\n//\n//   ASSERT_EXIT(server.ExitNow(), ::testing::ExitedWithCode(0), \"Exiting\");\n//\n//   bool KilledBySIGHUP(int exit_code) {\n//     return WIFSIGNALED(exit_code) && WTERMSIG(exit_code) == SIGHUP;\n//   }\n//\n//   ASSERT_EXIT(client.HangUpServer(), KilledBySIGHUP, \"Hanging up!\");\n//\n// On the regular expressions used in death tests:\n//\n//   On POSIX-compliant systems (*nix), we use the <regex.h> library,\n//   which uses the POSIX extended regex syntax.\n//\n//   On other platforms (e.g. Windows), we only support a simple regex\n//   syntax implemented as part of Google Test.  This limited\n//   implementation should be enough most of the time when writing\n//   death tests; though it lacks many features you can find in PCRE\n//   or POSIX extended regex syntax.  For example, we don't support\n//   union (\"x|y\"), grouping (\"(xy)\"), brackets (\"[xy]\"), and\n//   repetition count (\"x{5,7}\"), among others.\n//\n//   Below is the syntax that we do support.  We chose it to be a\n//   subset of both PCRE and POSIX extended regex, so it's easy to\n//   learn wherever you come from.  In the following: 'A' denotes a\n//   literal character, period (.), or a single \\\\ escape sequence;\n//   'x' and 'y' denote regular expressions; 'm' and 'n' are for\n//   natural numbers.\n//\n//     c     matches any literal character c\n//     \\\\d   matches any decimal digit\n//     \\\\D   matches any character that's not a decimal digit\n//     \\\\f   matches \\f\n//     \\\\n   matches \\n\n//     \\\\r   matches \\r\n//     \\\\s   matches any ASCII whitespace, including \\n\n//     \\\\S   matches any character that's not a whitespace\n//     \\\\t   matches \\t\n//     \\\\v   matches \\v\n//     \\\\w   matches any letter, _, or decimal digit\n//     \\\\W   matches any character that \\\\w doesn't match\n//     \\\\c   matches any literal character c, which must be a punctuation\n//     .     matches any single character except \\n\n//     A?    matches 0 or 1 occurrences of A\n//     A*    matches 0 or many occurrences of A\n//     A+    matches 1 or many occurrences of A\n//     ^     matches the beginning of a string (not that of each line)\n//     $     matches the end of a string (not that of each line)\n//     xy    matches x followed by y\n//\n//   If you accidentally use PCRE or POSIX extended regex features\n//   not implemented by us, you will get a run-time failure.  In that\n//   case, please try to rewrite your regular expression within the\n//   above syntax.\n//\n//   This implementation is *not* meant to be as highly tuned or robust\n//   as a compiled regex library, but should perform well enough for a\n//   death test, which already incurs significant overhead by launching\n//   a child process.\n//\n// Known caveats:\n//\n//   A \"threadsafe\" style death test obtains the path to the test\n//   program from argv[0] and re-executes it in the sub-process.  For\n//   simplicity, the current implementation doesn't search the PATH\n//   when launching the sub-process.  This means that the user must\n//   invoke the test program via a path that contains at least one\n//   path separator (e.g. path/to/foo_test and\n//   /absolute/path/to/bar_test are fine, but foo_test is not).  This\n//   is rarely a problem as people usually don't put the test binary\n//   directory in PATH.\n//\n// TODO(wan@google.com): make thread-safe death tests search the PATH.\n\n// Asserts that a given statement causes the program to exit, with an\n// integer exit status that satisfies predicate, and emitting error output\n// that matches regex.\n# define ASSERT_EXIT(statement, predicate, regex) \\\n    GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_)\n\n// Like ASSERT_EXIT, but continues on to successive tests in the\n// test case, if any:\n# define EXPECT_EXIT(statement, predicate, regex) \\\n    GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_)\n\n// Asserts that a given statement causes the program to exit, either by\n// explicitly exiting with a nonzero exit code or being killed by a\n// signal, and emitting error output that matches regex.\n# define ASSERT_DEATH(statement, regex) \\\n    ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)\n\n// Like ASSERT_DEATH, but continues on to successive tests in the\n// test case, if any:\n# define EXPECT_DEATH(statement, regex) \\\n    EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)\n\n// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*:\n\n// Tests that an exit code describes a normal exit with a given exit code.\nclass GTEST_API_ ExitedWithCode {\n public:\n  explicit ExitedWithCode(int exit_code);\n  bool operator()(int exit_status) const;\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ExitedWithCode& other);\n\n  const int exit_code_;\n};\n\n# if !GTEST_OS_WINDOWS\n// Tests that an exit code describes an exit due to termination by a\n// given signal.\nclass GTEST_API_ KilledBySignal {\n public:\n  explicit KilledBySignal(int signum);\n  bool operator()(int exit_status) const;\n private:\n  const int signum_;\n};\n# endif  // !GTEST_OS_WINDOWS\n\n// EXPECT_DEBUG_DEATH asserts that the given statements die in debug mode.\n// The death testing framework causes this to have interesting semantics,\n// since the sideeffects of the call are only visible in opt mode, and not\n// in debug mode.\n//\n// In practice, this can be used to test functions that utilize the\n// LOG(DFATAL) macro using the following style:\n//\n// int DieInDebugOr12(int* sideeffect) {\n//   if (sideeffect) {\n//     *sideeffect = 12;\n//   }\n//   LOG(DFATAL) << \"death\";\n//   return 12;\n// }\n//\n// TEST(TestCase, TestDieOr12WorksInDgbAndOpt) {\n//   int sideeffect = 0;\n//   // Only asserts in dbg.\n//   EXPECT_DEBUG_DEATH(DieInDebugOr12(&sideeffect), \"death\");\n//\n// #ifdef NDEBUG\n//   // opt-mode has sideeffect visible.\n//   EXPECT_EQ(12, sideeffect);\n// #else\n//   // dbg-mode no visible sideeffect.\n//   EXPECT_EQ(0, sideeffect);\n// #endif\n// }\n//\n// This will assert that DieInDebugReturn12InOpt() crashes in debug\n// mode, usually due to a DCHECK or LOG(DFATAL), but returns the\n// appropriate fallback value (12 in this case) in opt mode. If you\n// need to test that a function has appropriate side-effects in opt\n// mode, include assertions against the side-effects.  A general\n// pattern for this is:\n//\n// EXPECT_DEBUG_DEATH({\n//   // Side-effects here will have an effect after this statement in\n//   // opt mode, but none in debug mode.\n//   EXPECT_EQ(12, DieInDebugOr12(&sideeffect));\n// }, \"death\");\n//\n# ifdef NDEBUG\n\n#  define EXPECT_DEBUG_DEATH(statement, regex) \\\n  GTEST_EXECUTE_STATEMENT_(statement, regex)\n\n#  define ASSERT_DEBUG_DEATH(statement, regex) \\\n  GTEST_EXECUTE_STATEMENT_(statement, regex)\n\n# else\n\n#  define EXPECT_DEBUG_DEATH(statement, regex) \\\n  EXPECT_DEATH(statement, regex)\n\n#  define ASSERT_DEBUG_DEATH(statement, regex) \\\n  ASSERT_DEATH(statement, regex)\n\n# endif  // NDEBUG for EXPECT_DEBUG_DEATH\n#endif  // GTEST_HAS_DEATH_TEST\n\n// EXPECT_DEATH_IF_SUPPORTED(statement, regex) and\n// ASSERT_DEATH_IF_SUPPORTED(statement, regex) expand to real death tests if\n// death tests are supported; otherwise they just issue a warning.  This is\n// useful when you are combining death test assertions with normal test\n// assertions in one test.\n#if GTEST_HAS_DEATH_TEST\n# define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \\\n    EXPECT_DEATH(statement, regex)\n# define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \\\n    ASSERT_DEATH(statement, regex)\n#else\n# define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \\\n    GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, )\n# define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \\\n    GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, return)\n#endif\n\n}  // namespace testing\n\n#endif  // GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_\n// This file was GENERATED by command:\n//     pump.py gtest-param-test.h.pump\n// DO NOT EDIT BY HAND!!!\n\n// Copyright 2008, Google Inc.\n// All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n// Authors: vladl@google.com (Vlad Losev)\n//\n// Macros and functions for implementing parameterized tests\n// in Google C++ Testing Framework (Google Test)\n//\n// This file is generated by a SCRIPT.  DO NOT EDIT BY HAND!\n//\n#ifndef GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_\n#define GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_\n\n\n// Value-parameterized tests allow you to test your code with different\n// parameters without writing multiple copies of the same test.\n//\n// Here is how you use value-parameterized tests:\n\n#if 0\n\n// To write value-parameterized tests, first you should define a fixture\n// class. It is usually derived from testing::TestWithParam<T> (see below for\n// another inheritance scheme that's sometimes useful in more complicated\n// class hierarchies), where the type of your parameter values.\n// TestWithParam<T> is itself derived from testing::Test. T can be any\n// copyable type. If it's a raw pointer, you are responsible for managing the\n// lifespan of the pointed values.\n\nclass FooTest : public ::testing::TestWithParam<const char*> {\n  // You can implement all the usual class fixture members here.\n};\n\n// Then, use the TEST_P macro to define as many parameterized tests\n// for this fixture as you want. The _P suffix is for \"parameterized\"\n// or \"pattern\", whichever you prefer to think.\n\nTEST_P(FooTest, DoesBlah) {\n  // Inside a test, access the test parameter with the GetParam() method\n  // of the TestWithParam<T> class:\n  EXPECT_TRUE(foo.Blah(GetParam()));\n  ...\n}\n\nTEST_P(FooTest, HasBlahBlah) {\n  ...\n}\n\n// Finally, you can use INSTANTIATE_TEST_CASE_P to instantiate the test\n// case with any set of parameters you want. Google Test defines a number\n// of functions for generating test parameters. They return what we call\n// (surprise!) parameter generators. Here is a  summary of them, which\n// are all in the testing namespace:\n//\n//\n//  Range(begin, end [, step]) - Yields values {begin, begin+step,\n//                               begin+step+step, ...}. The values do not\n//                               include end. step defaults to 1.\n//  Values(v1, v2, ..., vN)    - Yields values {v1, v2, ..., vN}.\n//  ValuesIn(container)        - Yields values from a C-style array, an STL\n//  ValuesIn(begin,end)          container, or an iterator range [begin, end).\n//  Bool()                     - Yields sequence {false, true}.\n//  Combine(g1, g2, ..., gN)   - Yields all combinations (the Cartesian product\n//                               for the math savvy) of the values generated\n//                               by the N generators.\n//\n// For more details, see comments at the definitions of these functions below\n// in this file.\n//\n// The following statement will instantiate tests from the FooTest test case\n// each with parameter values \"meeny\", \"miny\", and \"moe\".\n\nINSTANTIATE_TEST_CASE_P(InstantiationName,\n                        FooTest,\n                        Values(\"meeny\", \"miny\", \"moe\"));\n\n// To distinguish different instances of the pattern, (yes, you\n// can instantiate it more then once) the first argument to the\n// INSTANTIATE_TEST_CASE_P macro is a prefix that will be added to the\n// actual test case name. Remember to pick unique prefixes for different\n// instantiations. The tests from the instantiation above will have\n// these names:\n//\n//    * InstantiationName/FooTest.DoesBlah/0 for \"meeny\"\n//    * InstantiationName/FooTest.DoesBlah/1 for \"miny\"\n//    * InstantiationName/FooTest.DoesBlah/2 for \"moe\"\n//    * InstantiationName/FooTest.HasBlahBlah/0 for \"meeny\"\n//    * InstantiationName/FooTest.HasBlahBlah/1 for \"miny\"\n//    * InstantiationName/FooTest.HasBlahBlah/2 for \"moe\"\n//\n// You can use these names in --gtest_filter.\n//\n// This statement will instantiate all tests from FooTest again, each\n// with parameter values \"cat\" and \"dog\":\n\nconst char* pets[] = {\"cat\", \"dog\"};\nINSTANTIATE_TEST_CASE_P(AnotherInstantiationName, FooTest, ValuesIn(pets));\n\n// The tests from the instantiation above will have these names:\n//\n//    * AnotherInstantiationName/FooTest.DoesBlah/0 for \"cat\"\n//    * AnotherInstantiationName/FooTest.DoesBlah/1 for \"dog\"\n//    * AnotherInstantiationName/FooTest.HasBlahBlah/0 for \"cat\"\n//    * AnotherInstantiationName/FooTest.HasBlahBlah/1 for \"dog\"\n//\n// Please note that INSTANTIATE_TEST_CASE_P will instantiate all tests\n// in the given test case, whether their definitions come before or\n// AFTER the INSTANTIATE_TEST_CASE_P statement.\n//\n// Please also note that generator expressions (including parameters to the\n// generators) are evaluated in InitGoogleTest(), after main() has started.\n// This allows the user on one hand, to adjust generator parameters in order\n// to dynamically determine a set of tests to run and on the other hand,\n// give the user a chance to inspect the generated tests with Google Test\n// reflection API before RUN_ALL_TESTS() is executed.\n//\n// You can see samples/sample7_unittest.cc and samples/sample8_unittest.cc\n// for more examples.\n//\n// In the future, we plan to publish the API for defining new parameter\n// generators. But for now this interface remains part of the internal\n// implementation and is subject to change.\n//\n//\n// A parameterized test fixture must be derived from testing::Test and from\n// testing::WithParamInterface<T>, where T is the type of the parameter\n// values. Inheriting from TestWithParam<T> satisfies that requirement because\n// TestWithParam<T> inherits from both Test and WithParamInterface. In more\n// complicated hierarchies, however, it is occasionally useful to inherit\n// separately from Test and WithParamInterface. For example:\n\nclass BaseTest : public ::testing::Test {\n  // You can inherit all the usual members for a non-parameterized test\n  // fixture here.\n};\n\nclass DerivedTest : public BaseTest, public ::testing::WithParamInterface<int> {\n  // The usual test fixture members go here too.\n};\n\nTEST_F(BaseTest, HasFoo) {\n  // This is an ordinary non-parameterized test.\n}\n\nTEST_P(DerivedTest, DoesBlah) {\n  // GetParam works just the same here as if you inherit from TestWithParam.\n  EXPECT_TRUE(foo.Blah(GetParam()));\n}\n\n#endif  // 0\n\n\n#if !GTEST_OS_SYMBIAN\n# include <utility>\n#endif\n\n// scripts/fuse_gtest.py depends on gtest's own header being #included\n// *unconditionally*.  Therefore these #includes cannot be moved\n// inside #if GTEST_HAS_PARAM_TEST.\n// Copyright 2008 Google Inc.\n// All Rights Reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n// Author: vladl@google.com (Vlad Losev)\n\n// Type and function utilities for implementing parameterized tests.\n\n#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_\n#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_\n\n#include <iterator>\n#include <utility>\n#include <vector>\n\n// scripts/fuse_gtest.py depends on gtest's own header being #included\n// *unconditionally*.  Therefore these #includes cannot be moved\n// inside #if GTEST_HAS_PARAM_TEST.\n// Copyright 2003 Google Inc.\n// All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n// Authors: Dan Egnor (egnor@google.com)\n//\n// A \"smart\" pointer type with reference tracking.  Every pointer to a\n// particular object is kept on a circular linked list.  When the last pointer\n// to an object is destroyed or reassigned, the object is deleted.\n//\n// Used properly, this deletes the object when the last reference goes away.\n// There are several caveats:\n// - Like all reference counting schemes, cycles lead to leaks.\n// - Each smart pointer is actually two pointers (8 bytes instead of 4).\n// - Every time a pointer is assigned, the entire list of pointers to that\n//   object is traversed.  This class is therefore NOT SUITABLE when there\n//   will often be more than two or three pointers to a particular object.\n// - References are only tracked as long as linked_ptr<> objects are copied.\n//   If a linked_ptr<> is converted to a raw pointer and back, BAD THINGS\n//   will happen (double deletion).\n//\n// A good use of this class is storing object references in STL containers.\n// You can safely put linked_ptr<> in a vector<>.\n// Other uses may not be as good.\n//\n// Note: If you use an incomplete type with linked_ptr<>, the class\n// *containing* linked_ptr<> must have a constructor and destructor (even\n// if they do nothing!).\n//\n// Bill Gibbons suggested we use something like this.\n//\n// Thread Safety:\n//   Unlike other linked_ptr implementations, in this implementation\n//   a linked_ptr object is thread-safe in the sense that:\n//     - it's safe to copy linked_ptr objects concurrently,\n//     - it's safe to copy *from* a linked_ptr and read its underlying\n//       raw pointer (e.g. via get()) concurrently, and\n//     - it's safe to write to two linked_ptrs that point to the same\n//       shared object concurrently.\n// TODO(wan@google.com): rename this to safe_linked_ptr to avoid\n// confusion with normal linked_ptr.\n\n#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_\n#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_\n\n#include <stdlib.h>\n#include <assert.h>\n\n\nnamespace testing {\nnamespace internal {\n\n// Protects copying of all linked_ptr objects.\nGTEST_API_ GTEST_DECLARE_STATIC_MUTEX_(g_linked_ptr_mutex);\n\n// This is used internally by all instances of linked_ptr<>.  It needs to be\n// a non-template class because different types of linked_ptr<> can refer to\n// the same object (linked_ptr<Superclass>(obj) vs linked_ptr<Subclass>(obj)).\n// So, it needs to be possible for different types of linked_ptr to participate\n// in the same circular linked list, so we need a single class type here.\n//\n// DO NOT USE THIS CLASS DIRECTLY YOURSELF.  Use linked_ptr<T>.\nclass linked_ptr_internal {\n public:\n  // Create a new circle that includes only this instance.\n  void join_new() {\n    next_ = this;\n  }\n\n  // Many linked_ptr operations may change p.link_ for some linked_ptr\n  // variable p in the same circle as this object.  Therefore we need\n  // to prevent two such operations from occurring concurrently.\n  //\n  // Note that different types of linked_ptr objects can coexist in a\n  // circle (e.g. linked_ptr<Base>, linked_ptr<Derived1>, and\n  // linked_ptr<Derived2>).  Therefore we must use a single mutex to\n  // protect all linked_ptr objects.  This can create serious\n  // contention in production code, but is acceptable in a testing\n  // framework.\n\n  // Join an existing circle.\n  void join(linked_ptr_internal const* ptr)\n      GTEST_LOCK_EXCLUDED_(g_linked_ptr_mutex) {\n    MutexLock lock(&g_linked_ptr_mutex);\n\n    linked_ptr_internal const* p = ptr;\n    while (p->next_ != ptr) p = p->next_;\n    p->next_ = this;\n    next_ = ptr;\n  }\n\n  // Leave whatever circle we're part of.  Returns true if we were the\n  // last member of the circle.  Once this is done, you can join() another.\n  bool depart()\n      GTEST_LOCK_EXCLUDED_(g_linked_ptr_mutex) {\n    MutexLock lock(&g_linked_ptr_mutex);\n\n    if (next_ == this) return true;\n    linked_ptr_internal const* p = next_;\n    while (p->next_ != this) p = p->next_;\n    p->next_ = next_;\n    return false;\n  }\n\n private:\n  mutable linked_ptr_internal const* next_;\n};\n\ntemplate <typename T>\nclass linked_ptr {\n public:\n  typedef T element_type;\n\n  // Take over ownership of a raw pointer.  This should happen as soon as\n  // possible after the object is created.\n  explicit linked_ptr(T* ptr = nullptr) { capture(ptr); }\n  ~linked_ptr() { depart(); }\n\n  // Copy an existing linked_ptr<>, adding ourselves to the list of references.\n  template <typename U> linked_ptr(linked_ptr<U> const& ptr) { copy(&ptr); }\n  linked_ptr(linked_ptr const& ptr) {  // NOLINT\n    assert(&ptr != this);\n    copy(&ptr);\n  }\n\n  // Assignment releases the old value and acquires the new.\n  template <typename U> linked_ptr& operator=(linked_ptr<U> const& ptr) {\n    depart();\n    copy(&ptr);\n    return *this;\n  }\n\n  linked_ptr& operator=(linked_ptr const& ptr) {\n    if (&ptr != this) {\n      depart();\n      copy(&ptr);\n    }\n    return *this;\n  }\n\n  // Smart pointer members.\n  void reset(T* ptr = nullptr) {\n    depart();\n    capture(ptr);\n  }\n  T* get() const { return value_; }\n  T* operator->() const { return value_; }\n  T& operator*() const { return *value_; }\n\n  bool operator==(T* p) const { return value_ == p; }\n  bool operator!=(T* p) const { return value_ != p; }\n  template <typename U>\n  bool operator==(linked_ptr<U> const& ptr) const {\n    return value_ == ptr.get();\n  }\n  template <typename U>\n  bool operator!=(linked_ptr<U> const& ptr) const {\n    return value_ != ptr.get();\n  }\n\n private:\n  template <typename U>\n  friend class linked_ptr;\n\n  T* value_;\n  linked_ptr_internal link_;\n\n  void depart() {\n    if (link_.depart()) delete value_;\n  }\n\n  void capture(T* ptr) {\n    value_ = ptr;\n    link_.join_new();\n  }\n\n  template <typename U> void copy(linked_ptr<U> const* ptr) {\n    value_ = ptr->get();\n    if (value_)\n      link_.join(&ptr->link_);\n    else\n      link_.join_new();\n  }\n};\n\ntemplate<typename T> inline\nbool operator==(T* ptr, const linked_ptr<T>& x) {\n  return ptr == x.get();\n}\n\ntemplate<typename T> inline\nbool operator!=(T* ptr, const linked_ptr<T>& x) {\n  return ptr != x.get();\n}\n\n// A function to convert T* into linked_ptr<T>\n// Doing e.g. make_linked_ptr(new FooBarBaz<type>(arg)) is a shorter notation\n// for linked_ptr<FooBarBaz<type> >(new FooBarBaz<type>(arg))\ntemplate <typename T>\nlinked_ptr<T> make_linked_ptr(T* ptr) {\n  return linked_ptr<T>(ptr);\n}\n\n}  // namespace internal\n}  // namespace testing\n\n#endif  // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_\n// Copyright 2007, Google Inc.\n// All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n// Author: wan@google.com (Zhanyong Wan)\n\n// Google Test - The Google C++ Testing Framework\n//\n// This file implements a universal value printer that can print a\n// value of any type T:\n//\n//   void ::testing::internal::UniversalPrinter<T>::Print(value, ostream_ptr);\n//\n// A user can teach this function how to print a class type T by\n// defining either operator<<() or PrintTo() in the namespace that\n// defines T.  More specifically, the FIRST defined function in the\n// following list will be used (assuming T is defined in namespace\n// foo):\n//\n//   1. foo::PrintTo(const T&, ostream*)\n//   2. operator<<(ostream&, const T&) defined in either foo or the\n//      global namespace.\n//\n// If none of the above is defined, it will print the debug string of\n// the value if it is a protocol buffer, or print the raw bytes in the\n// value otherwise.\n//\n// To aid debugging: when T is a reference type, the address of the\n// value is also printed; when T is a (const) char pointer, both the\n// pointer value and the NUL-terminated string it points to are\n// printed.\n//\n// We also provide some convenient wrappers:\n//\n//   // Prints a value to a string.  For a (const or not) char\n//   // pointer, the NUL-terminated string (but not the pointer) is\n//   // printed.\n//   std::string ::testing::PrintToString(const T& value);\n//\n//   // Prints a value tersely: for a reference type, the referenced\n//   // value (but not the address) is printed; for a (const or not) char\n//   // pointer, the NUL-terminated string (but not the pointer) is\n//   // printed.\n//   void ::testing::internal::UniversalTersePrint(const T& value, ostream*);\n//\n//   // Prints value using the type inferred by the compiler.  The difference\n//   // from UniversalTersePrint() is that this function prints both the\n//   // pointer and the NUL-terminated string for a (const or not) char pointer.\n//   void ::testing::internal::UniversalPrint(const T& value, ostream*);\n//\n//   // Prints the fields of a tuple tersely to a string vector, one\n//   // element for each field. Tuple support must be enabled in\n//   // gtest-port.h.\n//   std::vector<string> UniversalTersePrintTupleFieldsToStrings(\n//       const Tuple& value);\n//\n// Known limitation:\n//\n// The print primitives print the elements of an STL-style container\n// using the compiler-inferred type of *iter where iter is a\n// const_iterator of the container.  When const_iterator is an input\n// iterator but not a forward iterator, this inferred type may not\n// match value_type, and the print output may be incorrect.  In\n// practice, this is rarely a problem as for most containers\n// const_iterator is a forward iterator.  We'll fix this if there's an\n// actual need for it.  Note that this fix cannot rely on value_type\n// being defined as many user-defined container types don't have\n// value_type.\n\n#ifndef GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_\n#define GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_\n\n#include <ostream>  // NOLINT\n#include <sstream>\n#include <string>\n#include <utility>\n#include <vector>\n\nnamespace testing {\n\n// Definitions in the 'internal' and 'internal2' name spaces are\n// subject to change without notice.  DO NOT USE THEM IN USER CODE!\nnamespace internal2 {\n\n// Prints the given number of bytes in the given object to the given\n// ostream.\nGTEST_API_ void PrintBytesInObjectTo(const unsigned char* obj_bytes,\n                                     size_t count,\n                                     ::std::ostream* os);\n\n// For selecting which printer to use when a given type has neither <<\n// nor PrintTo().\nenum TypeKind {\n  kProtobuf,              // a protobuf type\n  kConvertibleToInteger,  // a type implicitly convertible to BiggestInt\n                          // (e.g. a named or unnamed enum type)\n  kOtherType              // anything else\n};\n\n// TypeWithoutFormatter<T, kTypeKind>::PrintValue(value, os) is called\n// by the universal printer to print a value of type T when neither\n// operator<< nor PrintTo() is defined for T, where kTypeKind is the\n// \"kind\" of T as defined by enum TypeKind.\ntemplate <typename T, TypeKind kTypeKind>\nclass TypeWithoutFormatter {\n public:\n  // This default version is called when kTypeKind is kOtherType.\n  static void PrintValue(const T& value, ::std::ostream* os) {\n    PrintBytesInObjectTo(reinterpret_cast<const unsigned char*>(&value),\n                         sizeof(value), os);\n  }\n};\n\n// We print a protobuf using its ShortDebugString() when the string\n// doesn't exceed this many characters; otherwise we print it using\n// DebugString() for better readability.\nconst size_t kProtobufOneLinerMaxLength = 50;\n\ntemplate <typename T>\nclass TypeWithoutFormatter<T, kProtobuf> {\n public:\n  static void PrintValue(const T& value, ::std::ostream* os) {\n    const ::testing::internal::string short_str = value.ShortDebugString();\n    const ::testing::internal::string pretty_str =\n        short_str.length() <= kProtobufOneLinerMaxLength ?\n        short_str : (\"\\n\" + value.DebugString());\n    *os << (\"<\" + pretty_str + \">\");\n  }\n};\n\ntemplate <typename T>\nclass TypeWithoutFormatter<T, kConvertibleToInteger> {\n public:\n  // Since T has no << operator or PrintTo() but can be implicitly\n  // converted to BiggestInt, we print it as a BiggestInt.\n  //\n  // Most likely T is an enum type (either named or unnamed), in which\n  // case printing it as an integer is the desired behavior.  In case\n  // T is not an enum, printing it as an integer is the best we can do\n  // given that it has no user-defined printer.\n  static void PrintValue(const T& value, ::std::ostream* os) {\n    const internal::BiggestInt kBigInt = value;\n    *os << kBigInt;\n  }\n};\n\n// Prints the given value to the given ostream.  If the value is a\n// protocol message, its debug string is printed; if it's an enum or\n// of a type implicitly convertible to BiggestInt, it's printed as an\n// integer; otherwise the bytes in the value are printed.  This is\n// what UniversalPrinter<T>::Print() does when it knows nothing about\n// type T and T has neither << operator nor PrintTo().\n//\n// A user can override this behavior for a class type Foo by defining\n// a << operator in the namespace where Foo is defined.\n//\n// We put this operator in namespace 'internal2' instead of 'internal'\n// to simplify the implementation, as much code in 'internal' needs to\n// use << in STL, which would conflict with our own << were it defined\n// in 'internal'.\n//\n// Note that this operator<< takes a generic std::basic_ostream<Char,\n// CharTraits> type instead of the more restricted std::ostream.  If\n// we define it to take an std::ostream instead, we'll get an\n// \"ambiguous overloads\" compiler error when trying to print a type\n// Foo that supports streaming to std::basic_ostream<Char,\n// CharTraits>, as the compiler cannot tell whether\n// operator<<(std::ostream&, const T&) or\n// operator<<(std::basic_stream<Char, CharTraits>, const Foo&) is more\n// specific.\ntemplate <typename Char, typename CharTraits, typename T>\n::std::basic_ostream<Char, CharTraits>& operator<<(\n    ::std::basic_ostream<Char, CharTraits>& os, const T& x) {\n  TypeWithoutFormatter<T,\n      (internal::IsAProtocolMessage<T>::value ? kProtobuf :\n       internal::ImplicitlyConvertible<const T&, internal::BiggestInt>::value ?\n       kConvertibleToInteger : kOtherType)>::PrintValue(x, &os);\n  return os;\n}\n\n}  // namespace internal2\n}  // namespace testing\n\n// This namespace MUST NOT BE NESTED IN ::testing, or the name look-up\n// magic needed for implementing UniversalPrinter won't work.\nnamespace testing_internal {\n\n// Used to print a value that is not an STL-style container when the\n// user doesn't define PrintTo() for it.\ntemplate <typename T>\nvoid DefaultPrintNonContainerTo(const T& value, ::std::ostream* os) {\n  // With the following statement, during unqualified name lookup,\n  // testing::internal2::operator<< appears as if it was declared in\n  // the nearest enclosing namespace that contains both\n  // ::testing_internal and ::testing::internal2, i.e. the global\n  // namespace.  For more details, refer to the C++ Standard section\n  // 7.3.4-1 [namespace.udir].  This allows us to fall back onto\n  // testing::internal2::operator<< in case T doesn't come with a <<\n  // operator.\n  //\n  // We cannot write 'using ::testing::internal2::operator<<;', which\n  // gcc 3.3 fails to compile due to a compiler bug.\n  using namespace ::testing::internal2;  // NOLINT\n\n  // Assuming T is defined in namespace foo, in the next statement,\n  // the compiler will consider all of:\n  //\n  //   1. foo::operator<< (thanks to Koenig look-up),\n  //   2. ::operator<< (as the current namespace is enclosed in ::),\n  //   3. testing::internal2::operator<< (thanks to the using statement above).\n  //\n  // The operator<< whose type matches T best will be picked.\n  //\n  // We deliberately allow #2 to be a candidate, as sometimes it's\n  // impossible to define #1 (e.g. when foo is ::std, defining\n  // anything in it is undefined behavior unless you are a compiler\n  // vendor.).\n  *os << value;\n}\n\n}  // namespace testing_internal\n\nnamespace testing {\nnamespace internal {\n\n// UniversalPrinter<T>::Print(value, ostream_ptr) prints the given\n// value to the given ostream.  The caller must ensure that\n// 'ostream_ptr' is not null, or the behavior is undefined.\n//\n// We define UniversalPrinter as a class template (as opposed to a\n// function template), as we need to partially specialize it for\n// reference types, which cannot be done with function templates.\ntemplate <typename T>\nclass UniversalPrinter;\n\ntemplate <typename T>\nvoid UniversalPrint(const T& value, ::std::ostream* os);\n\n// Used to print an STL-style container when the user doesn't define\n// a PrintTo() for it.\ntemplate <typename C>\nvoid DefaultPrintTo(IsContainer /* dummy */,\n                    false_type /* is not a pointer */,\n                    const C& container, ::std::ostream* os) {\n  const size_t kMaxCount = 32;  // The maximum number of elements to print.\n  *os << '{';\n  size_t count = 0;\n  for (typename C::const_iterator it = container.begin();\n       it != container.end(); ++it, ++count) {\n    if (count > 0) {\n      *os << ',';\n      if (count == kMaxCount) {  // Enough has been printed.\n        *os << \" ...\";\n        break;\n      }\n    }\n    *os << ' ';\n    // We cannot call PrintTo(*it, os) here as PrintTo() doesn't\n    // handle *it being a native array.\n    internal::UniversalPrint(*it, os);\n  }\n\n  if (count > 0) {\n    *os << ' ';\n  }\n  *os << '}';\n}\n\n// Used to print a pointer that is neither a char pointer nor a member\n// pointer, when the user doesn't define PrintTo() for it.  (A member\n// variable pointer or member function pointer doesn't really point to\n// a location in the address space.  Their representation is\n// implementation-defined.  Therefore they will be printed as raw\n// bytes.)\ntemplate <typename T>\nvoid DefaultPrintTo(IsNotContainer /* dummy */,\n                    true_type /* is a pointer */,\n                    T* p, ::std::ostream* os) {\n  if (p == nullptr) {\n    *os << \"NULL\";\n  } else {\n    // C++ doesn't allow casting from a function pointer to any object\n    // pointer.\n    //\n    // IsTrue() silences warnings: \"Condition is always true\",\n    // \"unreachable code\".\n    if (IsTrue(ImplicitlyConvertible<T*, const void*>::value)) {\n      // T is not a function type.  We just call << to print p,\n      // relying on ADL to pick up user-defined << for their pointer\n      // types, if any.\n      *os << p;\n    } else {\n      // T is a function type, so '*os << p' doesn't do what we want\n      // (it just prints p as bool).  We want to print p as a const\n      // void*.  However, we cannot cast it to const void* directly,\n      // even using reinterpret_cast, as earlier versions of gcc\n      // (e.g. 3.4.5) cannot compile the cast when p is a function\n      // pointer.  Casting to UInt64 first solves the problem.\n      *os << reinterpret_cast<const void*>(\n          reinterpret_cast<internal::UInt64>(p));\n    }\n  }\n}\n\n// Used to print a non-container, non-pointer value when the user\n// doesn't define PrintTo() for it.\ntemplate <typename T>\nvoid DefaultPrintTo(IsNotContainer /* dummy */,\n                    false_type /* is not a pointer */,\n                    const T& value, ::std::ostream* os) {\n  ::testing_internal::DefaultPrintNonContainerTo(value, os);\n}\n\n// Prints the given value using the << operator if it has one;\n// otherwise prints the bytes in it.  This is what\n// UniversalPrinter<T>::Print() does when PrintTo() is not specialized\n// or overloaded for type T.\n//\n// A user can override this behavior for a class type Foo by defining\n// an overload of PrintTo() in the namespace where Foo is defined.  We\n// give the user this option as sometimes defining a << operator for\n// Foo is not desirable (e.g. the coding style may prevent doing it,\n// or there is already a << operator but it doesn't do what the user\n// wants).\ntemplate <typename T>\nvoid PrintTo(const T& value, ::std::ostream* os) {\n  // DefaultPrintTo() is overloaded.  The type of its first two\n  // arguments determine which version will be picked.  If T is an\n  // STL-style container, the version for container will be called; if\n  // T is a pointer, the pointer version will be called; otherwise the\n  // generic version will be called.\n  //\n  // Note that we check for container types here, prior to we check\n  // for protocol message types in our operator<<.  The rationale is:\n  //\n  // For protocol messages, we want to give people a chance to\n  // override Google Mock's format by defining a PrintTo() or\n  // operator<<.  For STL containers, other formats can be\n  // incompatible with Google Mock's format for the container\n  // elements; therefore we check for container types here to ensure\n  // that our format is used.\n  //\n  // The second argument of DefaultPrintTo() is needed to bypass a bug\n  // in Symbian's C++ compiler that prevents it from picking the right\n  // overload between:\n  //\n  //   PrintTo(const T& x, ...);\n  //   PrintTo(T* x, ...);\n  DefaultPrintTo(IsContainerTest<T>(0), is_pointer<T>(), value, os);\n}\n\n// The following list of PrintTo() overloads tells\n// UniversalPrinter<T>::Print() how to print standard types (built-in\n// types, strings, plain arrays, and pointers).\n\n// Overloads for various char types.\nGTEST_API_ void PrintTo(unsigned char c, ::std::ostream* os);\nGTEST_API_ void PrintTo(signed char c, ::std::ostream* os);\ninline void PrintTo(char c, ::std::ostream* os) {\n  // When printing a plain char, we always treat it as unsigned.  This\n  // way, the output won't be affected by whether the compiler thinks\n  // char is signed or not.\n  PrintTo(static_cast<unsigned char>(c), os);\n}\n\n// Overloads for other simple built-in types.\ninline void PrintTo(bool x, ::std::ostream* os) {\n  *os << (x ? \"true\" : \"false\");\n}\n\n// Overload for wchar_t type.\n// Prints a wchar_t as a symbol if it is printable or as its internal\n// code otherwise and also as its decimal code (except for L'\\0').\n// The L'\\0' char is printed as \"L'\\\\0'\". The decimal code is printed\n// as signed integer when wchar_t is implemented by the compiler\n// as a signed type and is printed as an unsigned integer when wchar_t\n// is implemented as an unsigned type.\nGTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os);\n\n// Overloads for C strings.\nGTEST_API_ void PrintTo(const char* s, ::std::ostream* os);\ninline void PrintTo(char* s, ::std::ostream* os) {\n  PrintTo(ImplicitCast_<const char*>(s), os);\n}\n\n// signed/unsigned char is often used for representing binary data, so\n// we print pointers to it as void* to be safe.\ninline void PrintTo(const signed char* s, ::std::ostream* os) {\n  PrintTo(ImplicitCast_<const void*>(s), os);\n}\ninline void PrintTo(signed char* s, ::std::ostream* os) {\n  PrintTo(ImplicitCast_<const void*>(s), os);\n}\ninline void PrintTo(const unsigned char* s, ::std::ostream* os) {\n  PrintTo(ImplicitCast_<const void*>(s), os);\n}\ninline void PrintTo(unsigned char* s, ::std::ostream* os) {\n  PrintTo(ImplicitCast_<const void*>(s), os);\n}\n\n// MSVC can be configured to define wchar_t as a typedef of unsigned\n// short.  It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native\n// type.  When wchar_t is a typedef, defining an overload for const\n// wchar_t* would cause unsigned short* be printed as a wide string,\n// possibly causing invalid memory accesses.\n#if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED)\n// Overloads for wide C strings\nGTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os);\ninline void PrintTo(wchar_t* s, ::std::ostream* os) {\n  PrintTo(ImplicitCast_<const wchar_t*>(s), os);\n}\n#endif\n\n// Overload for C arrays.  Multi-dimensional arrays are printed\n// properly.\n\n// Prints the given number of elements in an array, without printing\n// the curly braces.\ntemplate <typename T>\nvoid PrintRawArrayTo(const T a[], size_t count, ::std::ostream* os) {\n  UniversalPrint(a[0], os);\n  for (size_t i = 1; i != count; i++) {\n    *os << \", \";\n    UniversalPrint(a[i], os);\n  }\n}\n\n// Overloads for ::string and ::std::string.\n#if GTEST_HAS_GLOBAL_STRING\nGTEST_API_ void PrintStringTo(const ::string&s, ::std::ostream* os);\ninline void PrintTo(const ::string& s, ::std::ostream* os) {\n  PrintStringTo(s, os);\n}\n#endif  // GTEST_HAS_GLOBAL_STRING\n\nGTEST_API_ void PrintStringTo(const ::std::string&s, ::std::ostream* os);\ninline void PrintTo(const ::std::string& s, ::std::ostream* os) {\n  PrintStringTo(s, os);\n}\n\n// Overloads for ::wstring and ::std::wstring.\n#if GTEST_HAS_GLOBAL_WSTRING\nGTEST_API_ void PrintWideStringTo(const ::wstring&s, ::std::ostream* os);\ninline void PrintTo(const ::wstring& s, ::std::ostream* os) {\n  PrintWideStringTo(s, os);\n}\n#endif  // GTEST_HAS_GLOBAL_WSTRING\n\n#if GTEST_HAS_STD_WSTRING\nGTEST_API_ void PrintWideStringTo(const ::std::wstring&s, ::std::ostream* os);\ninline void PrintTo(const ::std::wstring& s, ::std::ostream* os) {\n  PrintWideStringTo(s, os);\n}\n#endif  // GTEST_HAS_STD_WSTRING\n\n#if GTEST_HAS_TR1_TUPLE\n// Overload for ::std::tr1::tuple.  Needed for printing function arguments,\n// which are packed as tuples.\n\n// Helper function for printing a tuple.  T must be instantiated with\n// a tuple type.\ntemplate <typename T>\nvoid PrintTupleTo(const T& t, ::std::ostream* os);\n\n// Overloaded PrintTo() for tuples of various arities.  We support\n// tuples of up-to 10 fields.  The following implementation works\n// regardless of whether tr1::tuple is implemented using the\n// non-standard variadic template feature or not.\n\ninline void PrintTo(const ::std::tr1::tuple<>& t, ::std::ostream* os) {\n  PrintTupleTo(t, os);\n}\n\ntemplate <typename T1>\nvoid PrintTo(const ::std::tr1::tuple<T1>& t, ::std::ostream* os) {\n  PrintTupleTo(t, os);\n}\n\ntemplate <typename T1, typename T2>\nvoid PrintTo(const ::std::tr1::tuple<T1, T2>& t, ::std::ostream* os) {\n  PrintTupleTo(t, os);\n}\n\ntemplate <typename T1, typename T2, typename T3>\nvoid PrintTo(const ::std::tr1::tuple<T1, T2, T3>& t, ::std::ostream* os) {\n  PrintTupleTo(t, os);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4>\nvoid PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4>& t, ::std::ostream* os) {\n  PrintTupleTo(t, os);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5>\nvoid PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5>& t,\n             ::std::ostream* os) {\n  PrintTupleTo(t, os);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n          typename T6>\nvoid PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6>& t,\n             ::std::ostream* os) {\n  PrintTupleTo(t, os);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n          typename T6, typename T7>\nvoid PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7>& t,\n             ::std::ostream* os) {\n  PrintTupleTo(t, os);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n          typename T6, typename T7, typename T8>\nvoid PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8>& t,\n             ::std::ostream* os) {\n  PrintTupleTo(t, os);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n          typename T6, typename T7, typename T8, typename T9>\nvoid PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9>& t,\n             ::std::ostream* os) {\n  PrintTupleTo(t, os);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n          typename T6, typename T7, typename T8, typename T9, typename T10>\nvoid PrintTo(\n    const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>& t,\n    ::std::ostream* os) {\n  PrintTupleTo(t, os);\n}\n#endif  // GTEST_HAS_TR1_TUPLE\n\n// Overload for std::pair.\ntemplate <typename T1, typename T2>\nvoid PrintTo(const ::std::pair<T1, T2>& value, ::std::ostream* os) {\n  *os << '(';\n  // We cannot use UniversalPrint(value.first, os) here, as T1 may be\n  // a reference type.  The same for printing value.second.\n  UniversalPrinter<T1>::Print(value.first, os);\n  *os << \", \";\n  UniversalPrinter<T2>::Print(value.second, os);\n  *os << ')';\n}\n\n// Implements printing a non-reference type T by letting the compiler\n// pick the right overload of PrintTo() for T.\ntemplate <typename T>\nclass UniversalPrinter {\n public:\n  // MSVC warns about adding const to a function type, so we want to\n  // disable the warning.\n#ifdef _MSC_VER\n# pragma warning(push)          // Saves the current warning state.\n# pragma warning(disable:4180)  // Temporarily disables warning 4180.\n#endif  // _MSC_VER\n\n  // Note: we deliberately don't call this PrintTo(), as that name\n  // conflicts with ::testing::internal::PrintTo in the body of the\n  // function.\n  static void Print(const T& value, ::std::ostream* os) {\n    // By default, ::testing::internal::PrintTo() is used for printing\n    // the value.\n    //\n    // Thanks to Koenig look-up, if T is a class and has its own\n    // PrintTo() function defined in its namespace, that function will\n    // be visible here.  Since it is more specific than the generic ones\n    // in ::testing::internal, it will be picked by the compiler in the\n    // following statement - exactly what we want.\n    PrintTo(value, os);\n  }\n\n#ifdef _MSC_VER\n# pragma warning(pop)           // Restores the warning state.\n#endif  // _MSC_VER\n};\n\n// UniversalPrintArray(begin, len, os) prints an array of 'len'\n// elements, starting at address 'begin'.\ntemplate <typename T>\nvoid UniversalPrintArray(const T* begin, size_t len, ::std::ostream* os) {\n  if (len == 0) {\n    *os << \"{}\";\n  } else {\n    *os << \"{ \";\n    const size_t kThreshold = 18;\n    const size_t kChunkSize = 8;\n    // If the array has more than kThreshold elements, we'll have to\n    // omit some details by printing only the first and the last\n    // kChunkSize elements.\n    // TODO(wan@google.com): let the user control the threshold using a flag.\n    if (len <= kThreshold) {\n      PrintRawArrayTo(begin, len, os);\n    } else {\n      PrintRawArrayTo(begin, kChunkSize, os);\n      *os << \", ..., \";\n      PrintRawArrayTo(begin + len - kChunkSize, kChunkSize, os);\n    }\n    *os << \" }\";\n  }\n}\n// This overload prints a (const) char array compactly.\nGTEST_API_ void UniversalPrintArray(\n    const char* begin, size_t len, ::std::ostream* os);\n\n// This overload prints a (const) wchar_t array compactly.\nGTEST_API_ void UniversalPrintArray(\n    const wchar_t* begin, size_t len, ::std::ostream* os);\n\n// Implements printing an array type T[N].\ntemplate <typename T, size_t N>\nclass UniversalPrinter<T[N]> {\n public:\n  // Prints the given array, omitting some elements when there are too\n  // many.\n  static void Print(const T (&a)[N], ::std::ostream* os) {\n    UniversalPrintArray(a, N, os);\n  }\n};\n\n// Implements printing a reference type T&.\ntemplate <typename T>\nclass UniversalPrinter<T&> {\n public:\n  // MSVC warns about adding const to a function type, so we want to\n  // disable the warning.\n#ifdef _MSC_VER\n# pragma warning(push)          // Saves the current warning state.\n# pragma warning(disable:4180)  // Temporarily disables warning 4180.\n#endif  // _MSC_VER\n\n  static void Print(const T& value, ::std::ostream* os) {\n    // Prints the address of the value.  We use reinterpret_cast here\n    // as static_cast doesn't compile when T is a function type.\n    *os << \"@\" << reinterpret_cast<const void*>(&value) << \" \";\n\n    // Then prints the value itself.\n    UniversalPrint(value, os);\n  }\n\n#ifdef _MSC_VER\n# pragma warning(pop)           // Restores the warning state.\n#endif  // _MSC_VER\n};\n\n// Prints a value tersely: for a reference type, the referenced value\n// (but not the address) is printed; for a (const) char pointer, the\n// NUL-terminated string (but not the pointer) is printed.\n\ntemplate <typename T>\nclass UniversalTersePrinter {\n public:\n  static void Print(const T& value, ::std::ostream* os) {\n    UniversalPrint(value, os);\n  }\n};\ntemplate <typename T>\nclass UniversalTersePrinter<T&> {\n public:\n  static void Print(const T& value, ::std::ostream* os) {\n    UniversalPrint(value, os);\n  }\n};\ntemplate <typename T, size_t N>\nclass UniversalTersePrinter<T[N]> {\n public:\n  static void Print(const T (&value)[N], ::std::ostream* os) {\n    UniversalPrinter<T[N]>::Print(value, os);\n  }\n};\ntemplate <>\nclass UniversalTersePrinter<const char*> {\n public:\n  static void Print(const char* str, ::std::ostream* os) {\n    if (str == nullptr) {\n      *os << \"NULL\";\n    } else {\n      UniversalPrint(string(str), os);\n    }\n  }\n};\ntemplate <>\nclass UniversalTersePrinter<char*> {\n public:\n  static void Print(char* str, ::std::ostream* os) {\n    UniversalTersePrinter<const char*>::Print(str, os);\n  }\n};\n\n#if GTEST_HAS_STD_WSTRING\ntemplate <>\nclass UniversalTersePrinter<const wchar_t*> {\n public:\n  static void Print(const wchar_t* str, ::std::ostream* os) {\n    if (str == nullptr) {\n      *os << \"NULL\";\n    } else {\n      UniversalPrint(::std::wstring(str), os);\n    }\n  }\n};\n#endif\n\ntemplate <>\nclass UniversalTersePrinter<wchar_t*> {\n public:\n  static void Print(wchar_t* str, ::std::ostream* os) {\n    UniversalTersePrinter<const wchar_t*>::Print(str, os);\n  }\n};\n\ntemplate <typename T>\nvoid UniversalTersePrint(const T& value, ::std::ostream* os) {\n  UniversalTersePrinter<T>::Print(value, os);\n}\n\n// Prints a value using the type inferred by the compiler.  The\n// difference between this and UniversalTersePrint() is that for a\n// (const) char pointer, this prints both the pointer and the\n// NUL-terminated string.\ntemplate <typename T>\nvoid UniversalPrint(const T& value, ::std::ostream* os) {\n  // A workarond for the bug in VC++ 7.1 that prevents us from instantiating\n  // UniversalPrinter with T directly.\n  typedef T T1;\n  UniversalPrinter<T1>::Print(value, os);\n}\n\n#if GTEST_HAS_TR1_TUPLE\ntypedef ::std::vector<string> Strings;\n\n// This helper template allows PrintTo() for tuples and\n// UniversalTersePrintTupleFieldsToStrings() to be defined by\n// induction on the number of tuple fields.  The idea is that\n// TuplePrefixPrinter<N>::PrintPrefixTo(t, os) prints the first N\n// fields in tuple t, and can be defined in terms of\n// TuplePrefixPrinter<N - 1>.\n\n// The inductive case.\ntemplate <size_t N>\nstruct TuplePrefixPrinter {\n  // Prints the first N fields of a tuple.\n  template <typename Tuple>\n  static void PrintPrefixTo(const Tuple& t, ::std::ostream* os) {\n    TuplePrefixPrinter<N - 1>::PrintPrefixTo(t, os);\n    *os << \", \";\n    UniversalPrinter<typename ::std::tr1::tuple_element<N - 1, Tuple>::type>\n        ::Print(::std::tr1::get<N - 1>(t), os);\n  }\n\n  // Tersely prints the first N fields of a tuple to a string vector,\n  // one element for each field.\n  template <typename Tuple>\n  static void TersePrintPrefixToStrings(const Tuple& t, Strings* strings) {\n    TuplePrefixPrinter<N - 1>::TersePrintPrefixToStrings(t, strings);\n    ::std::stringstream ss;\n    UniversalTersePrint(::std::tr1::get<N - 1>(t), &ss);\n    strings->push_back(ss.str());\n  }\n};\n\n// Base cases.\ntemplate <>\nstruct TuplePrefixPrinter<0> {\n  template <typename Tuple>\n  static void PrintPrefixTo(const Tuple&, ::std::ostream*) {}\n\n  template <typename Tuple>\n  static void TersePrintPrefixToStrings(const Tuple&, Strings*) {}\n};\n// We have to specialize the entire TuplePrefixPrinter<> class\n// template here, even though the definition of\n// TersePrintPrefixToStrings() is the same as the generic version, as\n// Embarcadero (formerly CodeGear, formerly Borland) C++ doesn't\n// support specializing a method template of a class template.\ntemplate <>\nstruct TuplePrefixPrinter<1> {\n  template <typename Tuple>\n  static void PrintPrefixTo(const Tuple& t, ::std::ostream* os) {\n    UniversalPrinter<typename ::std::tr1::tuple_element<0, Tuple>::type>::\n        Print(::std::tr1::get<0>(t), os);\n  }\n\n  template <typename Tuple>\n  static void TersePrintPrefixToStrings(const Tuple& t, Strings* strings) {\n    ::std::stringstream ss;\n    UniversalTersePrint(::std::tr1::get<0>(t), &ss);\n    strings->push_back(ss.str());\n  }\n};\n\n// Helper function for printing a tuple.  T must be instantiated with\n// a tuple type.\ntemplate <typename T>\nvoid PrintTupleTo(const T& t, ::std::ostream* os) {\n  *os << \"(\";\n  TuplePrefixPrinter< ::std::tr1::tuple_size<T>::value>::\n      PrintPrefixTo(t, os);\n  *os << \")\";\n}\n\n// Prints the fields of a tuple tersely to a string vector, one\n// element for each field.  See the comment before\n// UniversalTersePrint() for how we define \"tersely\".\ntemplate <typename Tuple>\nStrings UniversalTersePrintTupleFieldsToStrings(const Tuple& value) {\n  Strings result;\n  TuplePrefixPrinter< ::std::tr1::tuple_size<Tuple>::value>::\n      TersePrintPrefixToStrings(value, &result);\n  return result;\n}\n#endif  // GTEST_HAS_TR1_TUPLE\n\n}  // namespace internal\n\ntemplate <typename T>\n::std::string PrintToString(const T& value) {\n  ::std::stringstream ss;\n  internal::UniversalTersePrinter<T>::Print(value, &ss);\n  return ss.str();\n}\n\n}  // namespace testing\n\n#endif  // GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_\n\n#if GTEST_HAS_PARAM_TEST\n\nnamespace testing {\nnamespace internal {\n\n// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.\n//\n// Outputs a message explaining invalid registration of different\n// fixture class for the same test case. This may happen when\n// TEST_P macro is used to define two tests with the same name\n// but in different namespaces.\nGTEST_API_ void ReportInvalidTestCaseType(const char* test_case_name,\n                                          const char* file, int line);\n\ntemplate <typename> class ParamGeneratorInterface;\ntemplate <typename> class ParamGenerator;\n\n// Interface for iterating over elements provided by an implementation\n// of ParamGeneratorInterface<T>.\ntemplate <typename T>\nclass ParamIteratorInterface {\n public:\n  virtual ~ParamIteratorInterface() {}\n  // A pointer to the base generator instance.\n  // Used only for the purposes of iterator comparison\n  // to make sure that two iterators belong to the same generator.\n  virtual const ParamGeneratorInterface<T>* BaseGenerator() const = 0;\n  // Advances iterator to point to the next element\n  // provided by the generator. The caller is responsible\n  // for not calling Advance() on an iterator equal to\n  // BaseGenerator()->End().\n  virtual void Advance() = 0;\n  // Clones the iterator object. Used for implementing copy semantics\n  // of ParamIterator<T>.\n  virtual ParamIteratorInterface* Clone() const = 0;\n  // Dereferences the current iterator and provides (read-only) access\n  // to the pointed value. It is the caller's responsibility not to call\n  // Current() on an iterator equal to BaseGenerator()->End().\n  // Used for implementing ParamGenerator<T>::operator*().\n  virtual const T* Current() const = 0;\n  // Determines whether the given iterator and other point to the same\n  // element in the sequence generated by the generator.\n  // Used for implementing ParamGenerator<T>::operator==().\n  virtual bool Equals(const ParamIteratorInterface& other) const = 0;\n};\n\n// Class iterating over elements provided by an implementation of\n// ParamGeneratorInterface<T>. It wraps ParamIteratorInterface<T>\n// and implements the const forward iterator concept.\ntemplate <typename T>\nclass ParamIterator {\n public:\n  typedef T value_type;\n  typedef const T& reference;\n  typedef ptrdiff_t difference_type;\n\n  // ParamIterator assumes ownership of the impl_ pointer.\n  ParamIterator(const ParamIterator& other) : impl_(other.impl_->Clone()) {}\n  ParamIterator& operator=(const ParamIterator& other) {\n    if (this != &other)\n      impl_.reset(other.impl_->Clone());\n    return *this;\n  }\n\n  const T& operator*() const { return *impl_->Current(); }\n  const T* operator->() const { return impl_->Current(); }\n  // Prefix version of operator++.\n  ParamIterator& operator++() {\n    impl_->Advance();\n    return *this;\n  }\n  // Postfix version of operator++.\n  ParamIterator operator++(int /*unused*/) {\n    ParamIteratorInterface<T>* clone = impl_->Clone();\n    impl_->Advance();\n    return ParamIterator(clone);\n  }\n  bool operator==(const ParamIterator& other) const {\n    return impl_.get() == other.impl_.get() || impl_->Equals(*other.impl_);\n  }\n  bool operator!=(const ParamIterator& other) const {\n    return !(*this == other);\n  }\n\n private:\n  friend class ParamGenerator<T>;\n  explicit ParamIterator(ParamIteratorInterface<T>* impl) : impl_(impl) {}\n  scoped_ptr<ParamIteratorInterface<T> > impl_;\n};\n\n// ParamGeneratorInterface<T> is the binary interface to access generators\n// defined in other translation units.\ntemplate <typename T>\nclass ParamGeneratorInterface {\n public:\n  typedef T ParamType;\n\n  virtual ~ParamGeneratorInterface() {}\n\n  // Generator interface definition\n  virtual ParamIteratorInterface<T>* Begin() const = 0;\n  virtual ParamIteratorInterface<T>* End() const = 0;\n};\n\n// Wraps ParamGeneratorInterface<T> and provides general generator syntax\n// compatible with the STL Container concept.\n// This class implements copy initialization semantics and the contained\n// ParamGeneratorInterface<T> instance is shared among all copies\n// of the original object. This is possible because that instance is immutable.\ntemplate<typename T>\nclass ParamGenerator {\n public:\n  typedef ParamIterator<T> iterator;\n\n  explicit ParamGenerator(ParamGeneratorInterface<T>* impl) : impl_(impl) {}\n  ParamGenerator(const ParamGenerator& other) : impl_(other.impl_) {}\n\n  ParamGenerator& operator=(const ParamGenerator& other) {\n    impl_ = other.impl_;\n    return *this;\n  }\n\n  iterator begin() const { return iterator(impl_->Begin()); }\n  iterator end() const { return iterator(impl_->End()); }\n\n private:\n  linked_ptr<const ParamGeneratorInterface<T> > impl_;\n};\n\n// Generates values from a range of two comparable values. Can be used to\n// generate sequences of user-defined types that implement operator+() and\n// operator<().\n// This class is used in the Range() function.\ntemplate <typename T, typename IncrementT>\nclass RangeGenerator : public ParamGeneratorInterface<T> {\n public:\n  RangeGenerator(T begin, T end, IncrementT step)\n      : begin_(begin), end_(end),\n        step_(step), end_index_(CalculateEndIndex(begin, end, step)) {}\n  virtual ~RangeGenerator() {}\n\n  virtual ParamIteratorInterface<T>* Begin() const {\n    return new Iterator(this, begin_, 0, step_);\n  }\n  virtual ParamIteratorInterface<T>* End() const {\n    return new Iterator(this, end_, end_index_, step_);\n  }\n\n private:\n  class Iterator : public ParamIteratorInterface<T> {\n   public:\n    Iterator(const ParamGeneratorInterface<T>* base, T value, int index,\n             IncrementT step)\n        : base_(base), value_(value), index_(index), step_(step) {}\n    virtual ~Iterator() {}\n\n    virtual const ParamGeneratorInterface<T>* BaseGenerator() const {\n      return base_;\n    }\n    virtual void Advance() {\n      value_ = value_ + step_;\n      index_++;\n    }\n    virtual ParamIteratorInterface<T>* Clone() const {\n      return new Iterator(*this);\n    }\n    virtual const T* Current() const { return &value_; }\n    virtual bool Equals(const ParamIteratorInterface<T>& other) const {\n      // Having the same base generator guarantees that the other\n      // iterator is of the same type and we can downcast.\n      GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())\n          << \"The program attempted to compare iterators \"\n          << \"from different generators.\" << std::endl;\n      const int other_index =\n          CheckedDowncastToActualType<const Iterator>(&other)->index_;\n      return index_ == other_index;\n    }\n\n   private:\n    Iterator(const Iterator& other)\n        : ParamIteratorInterface<T>(),\n          base_(other.base_), value_(other.value_), index_(other.index_),\n          step_(other.step_) {}\n\n    // No implementation - assignment is unsupported.\n    void operator=(const Iterator& other);\n\n    const ParamGeneratorInterface<T>* const base_;\n    T value_;\n    int index_;\n    const IncrementT step_;\n  };  // class RangeGenerator::Iterator\n\n  static int CalculateEndIndex(const T& begin,\n                               const T& end,\n                               const IncrementT& step) {\n    int end_index = 0;\n    for (T i = begin; i < end; i = i + step)\n      end_index++;\n    return end_index;\n  }\n\n  // No implementation - assignment is unsupported.\n  void operator=(const RangeGenerator& other);\n\n  const T begin_;\n  const T end_;\n  const IncrementT step_;\n  // The index for the end() iterator. All the elements in the generated\n  // sequence are indexed (0-based) to aid iterator comparison.\n  const int end_index_;\n};  // class RangeGenerator\n\n\n// Generates values from a pair of STL-style iterators. Used in the\n// ValuesIn() function. The elements are copied from the source range\n// since the source can be located on the stack, and the generator\n// is likely to persist beyond that stack frame.\ntemplate <typename T>\nclass ValuesInIteratorRangeGenerator : public ParamGeneratorInterface<T> {\n public:\n  template <typename ForwardIterator>\n  ValuesInIteratorRangeGenerator(ForwardIterator begin, ForwardIterator end)\n      : container_(begin, end) {}\n  virtual ~ValuesInIteratorRangeGenerator() {}\n\n  virtual ParamIteratorInterface<T>* Begin() const {\n    return new Iterator(this, container_.begin());\n  }\n  virtual ParamIteratorInterface<T>* End() const {\n    return new Iterator(this, container_.end());\n  }\n\n private:\n  typedef typename ::std::vector<T> ContainerType;\n\n  class Iterator : public ParamIteratorInterface<T> {\n   public:\n    Iterator(const ParamGeneratorInterface<T>* base,\n             typename ContainerType::const_iterator iterator)\n        : base_(base), iterator_(iterator) {}\n    virtual ~Iterator() {}\n\n    virtual const ParamGeneratorInterface<T>* BaseGenerator() const {\n      return base_;\n    }\n    virtual void Advance() {\n      ++iterator_;\n      value_.reset();\n    }\n    virtual ParamIteratorInterface<T>* Clone() const {\n      return new Iterator(*this);\n    }\n    // We need to use cached value referenced by iterator_ because *iterator_\n    // can return a temporary object (and of type other then T), so just\n    // having \"return &*iterator_;\" doesn't work.\n    // value_ is updated here and not in Advance() because Advance()\n    // can advance iterator_ beyond the end of the range, and we cannot\n    // detect that fact. The client code, on the other hand, is\n    // responsible for not calling Current() on an out-of-range iterator.\n    virtual const T* Current() const {\n      if (value_.get() == nullptr)\n        value_.reset(new T(*iterator_));\n      return value_.get();\n    }\n    virtual bool Equals(const ParamIteratorInterface<T>& other) const {\n      // Having the same base generator guarantees that the other\n      // iterator is of the same type and we can downcast.\n      GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())\n          << \"The program attempted to compare iterators \"\n          << \"from different generators.\" << std::endl;\n      return iterator_ ==\n          CheckedDowncastToActualType<const Iterator>(&other)->iterator_;\n    }\n\n   private:\n    Iterator(const Iterator& other)\n          // The explicit constructor call suppresses a false warning\n          // emitted by gcc when supplied with the -Wextra option.\n        : ParamIteratorInterface<T>(),\n          base_(other.base_),\n          iterator_(other.iterator_) {}\n\n    const ParamGeneratorInterface<T>* const base_;\n    typename ContainerType::const_iterator iterator_;\n    // A cached value of *iterator_. We keep it here to allow access by\n    // pointer in the wrapping iterator's operator->().\n    // value_ needs to be mutable to be accessed in Current().\n    // Use of scoped_ptr helps manage cached value's lifetime,\n    // which is bound by the lifespan of the iterator itself.\n    mutable scoped_ptr<const T> value_;\n  };  // class ValuesInIteratorRangeGenerator::Iterator\n\n  // No implementation - assignment is unsupported.\n  void operator=(const ValuesInIteratorRangeGenerator& other);\n\n  const ContainerType container_;\n};  // class ValuesInIteratorRangeGenerator\n\n// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.\n//\n// Stores a parameter value and later creates tests parameterized with that\n// value.\ntemplate <class TestClass>\nclass ParameterizedTestFactory : public TestFactoryBase {\n public:\n  typedef typename TestClass::ParamType ParamType;\n  explicit ParameterizedTestFactory(ParamType parameter) :\n      parameter_(parameter) {}\n  virtual Test* CreateTest() {\n    TestClass::SetParam(&parameter_);\n    return new TestClass();\n  }\n\n private:\n  const ParamType parameter_;\n\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestFactory);\n};\n\n// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.\n//\n// TestMetaFactoryBase is a base class for meta-factories that create\n// test factories for passing into MakeAndRegisterTestInfo function.\ntemplate <class ParamType>\nclass TestMetaFactoryBase {\n public:\n  virtual ~TestMetaFactoryBase() {}\n\n  virtual TestFactoryBase* CreateTestFactory(ParamType parameter) = 0;\n};\n\n// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.\n//\n// TestMetaFactory creates test factories for passing into\n// MakeAndRegisterTestInfo function. Since MakeAndRegisterTestInfo receives\n// ownership of test factory pointer, same factory object cannot be passed\n// into that method twice. But ParameterizedTestCaseInfo is going to call\n// it for each Test/Parameter value combination. Thus it needs meta factory\n// creator class.\ntemplate <class TestCase>\nclass TestMetaFactory\n    : public TestMetaFactoryBase<typename TestCase::ParamType> {\n public:\n  typedef typename TestCase::ParamType ParamType;\n\n  TestMetaFactory() {}\n\n  virtual TestFactoryBase* CreateTestFactory(ParamType parameter) {\n    return new ParameterizedTestFactory<TestCase>(parameter);\n  }\n\n private:\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(TestMetaFactory);\n};\n\n// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.\n//\n// ParameterizedTestCaseInfoBase is a generic interface\n// to ParameterizedTestCaseInfo classes. ParameterizedTestCaseInfoBase\n// accumulates test information provided by TEST_P macro invocations\n// and generators provided by INSTANTIATE_TEST_CASE_P macro invocations\n// and uses that information to register all resulting test instances\n// in RegisterTests method. The ParameterizeTestCaseRegistry class holds\n// a collection of pointers to the ParameterizedTestCaseInfo objects\n// and calls RegisterTests() on each of them when asked.\nclass ParameterizedTestCaseInfoBase {\n public:\n  virtual ~ParameterizedTestCaseInfoBase() {}\n\n  // Base part of test case name for display purposes.\n  virtual const string& GetTestCaseName() const = 0;\n  // Test case id to verify identity.\n  virtual TypeId GetTestCaseTypeId() const = 0;\n  // UnitTest class invokes this method to register tests in this\n  // test case right before running them in RUN_ALL_TESTS macro.\n  // This method should not be called more then once on any single\n  // instance of a ParameterizedTestCaseInfoBase derived class.\n  virtual void RegisterTests() = 0;\n\n protected:\n  ParameterizedTestCaseInfoBase() {}\n\n private:\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestCaseInfoBase);\n};\n\n// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.\n//\n// ParameterizedTestCaseInfo accumulates tests obtained from TEST_P\n// macro invocations for a particular test case and generators\n// obtained from INSTANTIATE_TEST_CASE_P macro invocations for that\n// test case. It registers tests with all values generated by all\n// generators when asked.\ntemplate <class TestCase>\nclass ParameterizedTestCaseInfo : public ParameterizedTestCaseInfoBase {\n public:\n  // ParamType and GeneratorCreationFunc are private types but are required\n  // for declarations of public methods AddTestPattern() and\n  // AddTestCaseInstantiation().\n  typedef typename TestCase::ParamType ParamType;\n  // A function that returns an instance of appropriate generator type.\n  typedef ParamGenerator<ParamType>(GeneratorCreationFunc)();\n\n  explicit ParameterizedTestCaseInfo(const char* name)\n      : test_case_name_(name) {}\n\n  // Test case base name for display purposes.\n  virtual const string& GetTestCaseName() const { return test_case_name_; }\n  // Test case id to verify identity.\n  virtual TypeId GetTestCaseTypeId() const { return GetTypeId<TestCase>(); }\n  // TEST_P macro uses AddTestPattern() to record information\n  // about a single test in a LocalTestInfo structure.\n  // test_case_name is the base name of the test case (without invocation\n  // prefix). test_base_name is the name of an individual test without\n  // parameter index. For the test SequenceA/FooTest.DoBar/1 FooTest is\n  // test case base name and DoBar is test base name.\n  void AddTestPattern(const char* test_case_name,\n                      const char* test_base_name,\n                      TestMetaFactoryBase<ParamType>* meta_factory) {\n    tests_.push_back(linked_ptr<TestInfo>(new TestInfo(test_case_name,\n                                                       test_base_name,\n                                                       meta_factory)));\n  }\n  // INSTANTIATE_TEST_CASE_P macro uses AddGenerator() to record information\n  // about a generator.\n  int AddTestCaseInstantiation(const string& instantiation_name,\n                               GeneratorCreationFunc* func,\n                               const char* /* file */,\n                               int /* line */) {\n    instantiations_.push_back(::std::make_pair(instantiation_name, func));\n    return 0;  // Return value used only to run this method in namespace scope.\n  }\n  // UnitTest class invokes this method to register tests in this test case\n  // test cases right before running tests in RUN_ALL_TESTS macro.\n  // This method should not be called more then once on any single\n  // instance of a ParameterizedTestCaseInfoBase derived class.\n  // UnitTest has a guard to prevent from calling this method more then once.\n  virtual void RegisterTests() {\n    for (typename TestInfoContainer::iterator test_it = tests_.begin();\n         test_it != tests_.end(); ++test_it) {\n      linked_ptr<TestInfo> test_info = *test_it;\n      for (typename InstantiationContainer::iterator gen_it =\n               instantiations_.begin(); gen_it != instantiations_.end();\n               ++gen_it) {\n        const string& instantiation_name = gen_it->first;\n        ParamGenerator<ParamType> generator((*gen_it->second)());\n\n        string test_case_name;\n        if ( !instantiation_name.empty() )\n          test_case_name = instantiation_name + \"/\";\n        test_case_name += test_info->test_case_base_name;\n\n        int i = 0;\n        for (typename ParamGenerator<ParamType>::iterator param_it =\n                 generator.begin();\n             param_it != generator.end(); ++param_it, ++i) {\n          Message test_name_stream;\n          test_name_stream << test_info->test_base_name << \"/\" << i;\n          MakeAndRegisterTestInfo(\n              test_case_name.c_str(),\n              test_name_stream.GetString().c_str(),\n              nullptr,  // No type parameter.\n              PrintToString(*param_it).c_str(),\n              GetTestCaseTypeId(),\n              TestCase::SetUpTestCase,\n              TestCase::TearDownTestCase,\n              test_info->test_meta_factory->CreateTestFactory(*param_it));\n        }  // for param_it\n      }  // for gen_it\n    }  // for test_it\n  }  // RegisterTests\n\n private:\n  // LocalTestInfo structure keeps information about a single test registered\n  // with TEST_P macro.\n  struct TestInfo {\n    TestInfo(const char* a_test_case_base_name,\n             const char* a_test_base_name,\n             TestMetaFactoryBase<ParamType>* a_test_meta_factory) :\n        test_case_base_name(a_test_case_base_name),\n        test_base_name(a_test_base_name),\n        test_meta_factory(a_test_meta_factory) {}\n\n    const string test_case_base_name;\n    const string test_base_name;\n    const scoped_ptr<TestMetaFactoryBase<ParamType> > test_meta_factory;\n  };\n  typedef ::std::vector<linked_ptr<TestInfo> > TestInfoContainer;\n  // Keeps pairs of <Instantiation name, Sequence generator creation function>\n  // received from INSTANTIATE_TEST_CASE_P macros.\n  typedef ::std::vector<std::pair<string, GeneratorCreationFunc*> >\n      InstantiationContainer;\n\n  const string test_case_name_;\n  TestInfoContainer tests_;\n  InstantiationContainer instantiations_;\n\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestCaseInfo);\n};  // class ParameterizedTestCaseInfo\n\n// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.\n//\n// ParameterizedTestCaseRegistry contains a map of ParameterizedTestCaseInfoBase\n// classes accessed by test case names. TEST_P and INSTANTIATE_TEST_CASE_P\n// macros use it to locate their corresponding ParameterizedTestCaseInfo\n// descriptors.\nclass ParameterizedTestCaseRegistry {\n public:\n  ParameterizedTestCaseRegistry() {}\n  ~ParameterizedTestCaseRegistry() {\n    for (TestCaseInfoContainer::iterator it = test_case_infos_.begin();\n         it != test_case_infos_.end(); ++it) {\n      delete *it;\n    }\n  }\n\n  // Looks up or creates and returns a structure containing information about\n  // tests and instantiations of a particular test case.\n  template <class TestCase>\n  ParameterizedTestCaseInfo<TestCase>* GetTestCasePatternHolder(\n      const char* test_case_name,\n      const char* file,\n      int line) {\n    ParameterizedTestCaseInfo<TestCase>* typed_test_info = nullptr;\n    for (TestCaseInfoContainer::iterator it = test_case_infos_.begin();\n         it != test_case_infos_.end(); ++it) {\n      if ((*it)->GetTestCaseName() == test_case_name) {\n        if ((*it)->GetTestCaseTypeId() != GetTypeId<TestCase>()) {\n          // Complain about incorrect usage of Google Test facilities\n          // and terminate the program since we cannot guaranty correct\n          // test case setup and tear-down in this case.\n          ReportInvalidTestCaseType(test_case_name,  file, line);\n          posix::Abort();\n        } else {\n          // At this point we are sure that the object we found is of the same\n          // type we are looking for, so we downcast it to that type\n          // without further checks.\n          typed_test_info = CheckedDowncastToActualType<\n              ParameterizedTestCaseInfo<TestCase> >(*it);\n        }\n        break;\n      }\n    }\n    if (typed_test_info == nullptr) {\n      typed_test_info = new ParameterizedTestCaseInfo<TestCase>(test_case_name);\n      test_case_infos_.push_back(typed_test_info);\n    }\n    return typed_test_info;\n  }\n  void RegisterTests() {\n    for (TestCaseInfoContainer::iterator it = test_case_infos_.begin();\n         it != test_case_infos_.end(); ++it) {\n      (*it)->RegisterTests();\n    }\n  }\n\n private:\n  typedef ::std::vector<ParameterizedTestCaseInfoBase*> TestCaseInfoContainer;\n\n  TestCaseInfoContainer test_case_infos_;\n\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestCaseRegistry);\n};\n\n}  // namespace internal\n}  // namespace testing\n\n#endif  //  GTEST_HAS_PARAM_TEST\n\n#endif  // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_\n// This file was GENERATED by command:\n//     pump.py gtest-param-util-generated.h.pump\n// DO NOT EDIT BY HAND!!!\n\n// Copyright 2008 Google Inc.\n// All Rights Reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n// Author: vladl@google.com (Vlad Losev)\n\n// Type and function utilities for implementing parameterized tests.\n// This file is generated by a SCRIPT.  DO NOT EDIT BY HAND!\n//\n// Currently Google Test supports at most 50 arguments in Values,\n// and at most 10 arguments in Combine. Please contact\n// googletestframework@googlegroups.com if you need more.\n// Please note that the number of arguments to Combine is limited\n// by the maximum arity of the implementation of tr1::tuple which is\n// currently set at 10.\n\n#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_\n#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_\n\n// scripts/fuse_gtest.py depends on gtest's own header being #included\n// *unconditionally*.  Therefore these #includes cannot be moved\n// inside #if GTEST_HAS_PARAM_TEST.\n\n#if GTEST_HAS_PARAM_TEST\n\nnamespace testing {\n\n// Forward declarations of ValuesIn(), which is implemented in\n// include/gtest/gtest-param-test.h.\ntemplate <typename ForwardIterator>\ninternal::ParamGenerator<\n  typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type>\nValuesIn(ForwardIterator begin, ForwardIterator end);\n\ntemplate <typename T, size_t N>\ninternal::ParamGenerator<T> ValuesIn(const T (&array)[N]);\n\ntemplate <class Container>\ninternal::ParamGenerator<typename Container::value_type> ValuesIn(\n    const Container& container);\n\nnamespace internal {\n\n// Used in the Values() function to provide polymorphic capabilities.\ntemplate <typename T1>\nclass ValueArray1 {\n public:\n  explicit ValueArray1(T1 v1) : v1_(v1) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const { return ValuesIn(&v1_, &v1_ + 1); }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray1& other);\n\n  const T1 v1_;\n};\n\ntemplate <typename T1, typename T2>\nclass ValueArray2 {\n public:\n  ValueArray2(T1 v1, T2 v2) : v1_(v1), v2_(v2) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray2& other);\n\n  const T1 v1_;\n  const T2 v2_;\n};\n\ntemplate <typename T1, typename T2, typename T3>\nclass ValueArray3 {\n public:\n  ValueArray3(T1 v1, T2 v2, T3 v3) : v1_(v1), v2_(v2), v3_(v3) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray3& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4>\nclass ValueArray4 {\n public:\n  ValueArray4(T1 v1, T2 v2, T3 v3, T4 v4) : v1_(v1), v2_(v2), v3_(v3),\n      v4_(v4) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray4& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5>\nclass ValueArray5 {\n public:\n  ValueArray5(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5) : v1_(v1), v2_(v2), v3_(v3),\n      v4_(v4), v5_(v5) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray5& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6>\nclass ValueArray6 {\n public:\n  ValueArray6(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6) : v1_(v1), v2_(v2),\n      v3_(v3), v4_(v4), v5_(v5), v6_(v6) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray6& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7>\nclass ValueArray7 {\n public:\n  ValueArray7(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7) : v1_(v1),\n      v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray7& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8>\nclass ValueArray8 {\n public:\n  ValueArray8(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,\n      T8 v8) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),\n      v8_(v8) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray8& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9>\nclass ValueArray9 {\n public:\n  ValueArray9(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8,\n      T9 v9) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),\n      v8_(v8), v9_(v9) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray9& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10>\nclass ValueArray10 {\n public:\n  ValueArray10(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),\n      v8_(v8), v9_(v9), v10_(v10) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray10& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11>\nclass ValueArray11 {\n public:\n  ValueArray11(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),\n      v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray11& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12>\nclass ValueArray12 {\n public:\n  ValueArray12(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11, T12 v12) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),\n      v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),\n        static_cast<T>(v12_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray12& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n  const T12 v12_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13>\nclass ValueArray13 {\n public:\n  ValueArray13(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11, T12 v12, T13 v13) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),\n      v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),\n      v12_(v12), v13_(v13) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),\n        static_cast<T>(v12_), static_cast<T>(v13_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray13& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n  const T12 v12_;\n  const T13 v13_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14>\nclass ValueArray14 {\n public:\n  ValueArray14(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) : v1_(v1), v2_(v2), v3_(v3),\n      v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),\n      v11_(v11), v12_(v12), v13_(v13), v14_(v14) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),\n        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray14& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n  const T12 v12_;\n  const T13 v13_;\n  const T14 v14_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15>\nclass ValueArray15 {\n public:\n  ValueArray15(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) : v1_(v1), v2_(v2),\n      v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),\n      v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),\n        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),\n        static_cast<T>(v15_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray15& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n  const T12 v12_;\n  const T13 v13_;\n  const T14 v14_;\n  const T15 v15_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16>\nclass ValueArray16 {\n public:\n  ValueArray16(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16) : v1_(v1),\n      v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),\n      v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),\n      v16_(v16) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),\n        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),\n        static_cast<T>(v15_), static_cast<T>(v16_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray16& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n  const T12 v12_;\n  const T13 v13_;\n  const T14 v14_;\n  const T15 v15_;\n  const T16 v16_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17>\nclass ValueArray17 {\n public:\n  ValueArray17(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16,\n      T17 v17) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),\n      v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),\n      v15_(v15), v16_(v16), v17_(v17) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),\n        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),\n        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray17& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n  const T12 v12_;\n  const T13 v13_;\n  const T14 v14_;\n  const T15 v15_;\n  const T16 v16_;\n  const T17 v17_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18>\nclass ValueArray18 {\n public:\n  ValueArray18(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n      T18 v18) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),\n      v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),\n      v15_(v15), v16_(v16), v17_(v17), v18_(v18) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),\n        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),\n        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),\n        static_cast<T>(v18_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray18& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n  const T12 v12_;\n  const T13 v13_;\n  const T14 v14_;\n  const T15 v15_;\n  const T16 v16_;\n  const T17 v17_;\n  const T18 v18_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19>\nclass ValueArray19 {\n public:\n  ValueArray19(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n      T18 v18, T19 v19) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),\n      v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),\n      v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),\n        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),\n        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),\n        static_cast<T>(v18_), static_cast<T>(v19_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray19& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n  const T12 v12_;\n  const T13 v13_;\n  const T14 v14_;\n  const T15 v15_;\n  const T16 v16_;\n  const T17 v17_;\n  const T18 v18_;\n  const T19 v19_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20>\nclass ValueArray20 {\n public:\n  ValueArray20(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n      T18 v18, T19 v19, T20 v20) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),\n      v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),\n      v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),\n      v19_(v19), v20_(v20) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),\n        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),\n        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),\n        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray20& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n  const T12 v12_;\n  const T13 v13_;\n  const T14 v14_;\n  const T15 v15_;\n  const T16 v16_;\n  const T17 v17_;\n  const T18 v18_;\n  const T19 v19_;\n  const T20 v20_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21>\nclass ValueArray21 {\n public:\n  ValueArray21(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n      T18 v18, T19 v19, T20 v20, T21 v21) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),\n      v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),\n      v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),\n      v18_(v18), v19_(v19), v20_(v20), v21_(v21) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),\n        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),\n        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),\n        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),\n        static_cast<T>(v21_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray21& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n  const T12 v12_;\n  const T13 v13_;\n  const T14 v14_;\n  const T15 v15_;\n  const T16 v16_;\n  const T17 v17_;\n  const T18 v18_;\n  const T19 v19_;\n  const T20 v20_;\n  const T21 v21_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22>\nclass ValueArray22 {\n public:\n  ValueArray22(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22) : v1_(v1), v2_(v2), v3_(v3),\n      v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),\n      v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),\n      v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),\n        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),\n        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),\n        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),\n        static_cast<T>(v21_), static_cast<T>(v22_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray22& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n  const T12 v12_;\n  const T13 v13_;\n  const T14 v14_;\n  const T15 v15_;\n  const T16 v16_;\n  const T17 v17_;\n  const T18 v18_;\n  const T19 v19_;\n  const T20 v20_;\n  const T21 v21_;\n  const T22 v22_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23>\nclass ValueArray23 {\n public:\n  ValueArray23(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23) : v1_(v1), v2_(v2),\n      v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),\n      v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),\n      v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),\n      v23_(v23) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),\n        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),\n        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),\n        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),\n        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray23& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n  const T12 v12_;\n  const T13 v13_;\n  const T14 v14_;\n  const T15 v15_;\n  const T16 v16_;\n  const T17 v17_;\n  const T18 v18_;\n  const T19 v19_;\n  const T20 v20_;\n  const T21 v21_;\n  const T22 v22_;\n  const T23 v23_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24>\nclass ValueArray24 {\n public:\n  ValueArray24(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24) : v1_(v1),\n      v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),\n      v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),\n      v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),\n      v22_(v22), v23_(v23), v24_(v24) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),\n        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),\n        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),\n        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),\n        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),\n        static_cast<T>(v24_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray24& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n  const T12 v12_;\n  const T13 v13_;\n  const T14 v14_;\n  const T15 v15_;\n  const T16 v16_;\n  const T17 v17_;\n  const T18 v18_;\n  const T19 v19_;\n  const T20 v20_;\n  const T21 v21_;\n  const T22 v22_;\n  const T23 v23_;\n  const T24 v24_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25>\nclass ValueArray25 {\n public:\n  ValueArray25(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24,\n      T25 v25) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),\n      v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),\n      v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),\n      v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),\n        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),\n        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),\n        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),\n        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),\n        static_cast<T>(v24_), static_cast<T>(v25_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray25& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n  const T12 v12_;\n  const T13 v13_;\n  const T14 v14_;\n  const T15 v15_;\n  const T16 v16_;\n  const T17 v17_;\n  const T18 v18_;\n  const T19 v19_;\n  const T20 v20_;\n  const T21 v21_;\n  const T22 v22_;\n  const T23 v23_;\n  const T24 v24_;\n  const T25 v25_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26>\nclass ValueArray26 {\n public:\n  ValueArray26(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,\n      T26 v26) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),\n      v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),\n      v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),\n      v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),\n        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),\n        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),\n        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),\n        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),\n        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray26& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n  const T12 v12_;\n  const T13 v13_;\n  const T14 v14_;\n  const T15 v15_;\n  const T16 v16_;\n  const T17 v17_;\n  const T18 v18_;\n  const T19 v19_;\n  const T20 v20_;\n  const T21 v21_;\n  const T22 v22_;\n  const T23 v23_;\n  const T24 v24_;\n  const T25 v25_;\n  const T26 v26_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27>\nclass ValueArray27 {\n public:\n  ValueArray27(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,\n      T26 v26, T27 v27) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),\n      v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),\n      v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19),\n      v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25),\n      v26_(v26), v27_(v27) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),\n        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),\n        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),\n        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),\n        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),\n        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),\n        static_cast<T>(v27_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray27& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n  const T12 v12_;\n  const T13 v13_;\n  const T14 v14_;\n  const T15 v15_;\n  const T16 v16_;\n  const T17 v17_;\n  const T18 v18_;\n  const T19 v19_;\n  const T20 v20_;\n  const T21 v21_;\n  const T22 v22_;\n  const T23 v23_;\n  const T24 v24_;\n  const T25 v25_;\n  const T26 v26_;\n  const T27 v27_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28>\nclass ValueArray28 {\n public:\n  ValueArray28(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,\n      T26 v26, T27 v27, T28 v28) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),\n      v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),\n      v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),\n      v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24),\n      v25_(v25), v26_(v26), v27_(v27), v28_(v28) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),\n        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),\n        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),\n        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),\n        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),\n        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),\n        static_cast<T>(v27_), static_cast<T>(v28_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray28& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n  const T12 v12_;\n  const T13 v13_;\n  const T14 v14_;\n  const T15 v15_;\n  const T16 v16_;\n  const T17 v17_;\n  const T18 v18_;\n  const T19 v19_;\n  const T20 v20_;\n  const T21 v21_;\n  const T22 v22_;\n  const T23 v23_;\n  const T24 v24_;\n  const T25 v25_;\n  const T26 v26_;\n  const T27 v27_;\n  const T28 v28_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29>\nclass ValueArray29 {\n public:\n  ValueArray29(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,\n      T26 v26, T27 v27, T28 v28, T29 v29) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),\n      v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),\n      v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),\n      v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23),\n      v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),\n        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),\n        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),\n        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),\n        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),\n        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),\n        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray29& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n  const T12 v12_;\n  const T13 v13_;\n  const T14 v14_;\n  const T15 v15_;\n  const T16 v16_;\n  const T17 v17_;\n  const T18 v18_;\n  const T19 v19_;\n  const T20 v20_;\n  const T21 v21_;\n  const T22 v22_;\n  const T23 v23_;\n  const T24 v24_;\n  const T25 v25_;\n  const T26 v26_;\n  const T27 v27_;\n  const T28 v28_;\n  const T29 v29_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30>\nclass ValueArray30 {\n public:\n  ValueArray30(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,\n      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) : v1_(v1), v2_(v2), v3_(v3),\n      v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),\n      v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),\n      v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),\n      v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),\n      v29_(v29), v30_(v30) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),\n        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),\n        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),\n        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),\n        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),\n        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),\n        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),\n        static_cast<T>(v30_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray30& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n  const T12 v12_;\n  const T13 v13_;\n  const T14 v14_;\n  const T15 v15_;\n  const T16 v16_;\n  const T17 v17_;\n  const T18 v18_;\n  const T19 v19_;\n  const T20 v20_;\n  const T21 v21_;\n  const T22 v22_;\n  const T23 v23_;\n  const T24 v24_;\n  const T25 v25_;\n  const T26 v26_;\n  const T27 v27_;\n  const T28 v28_;\n  const T29 v29_;\n  const T30 v30_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31>\nclass ValueArray31 {\n public:\n  ValueArray31(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,\n      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) : v1_(v1), v2_(v2),\n      v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),\n      v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),\n      v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),\n      v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),\n      v29_(v29), v30_(v30), v31_(v31) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),\n        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),\n        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),\n        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),\n        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),\n        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),\n        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),\n        static_cast<T>(v30_), static_cast<T>(v31_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray31& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n  const T12 v12_;\n  const T13 v13_;\n  const T14 v14_;\n  const T15 v15_;\n  const T16 v16_;\n  const T17 v17_;\n  const T18 v18_;\n  const T19 v19_;\n  const T20 v20_;\n  const T21 v21_;\n  const T22 v22_;\n  const T23 v23_;\n  const T24 v24_;\n  const T25 v25_;\n  const T26 v26_;\n  const T27 v27_;\n  const T28 v28_;\n  const T29 v29_;\n  const T30 v30_;\n  const T31 v31_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32>\nclass ValueArray32 {\n public:\n  ValueArray32(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,\n      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32) : v1_(v1),\n      v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),\n      v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),\n      v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),\n      v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27),\n      v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),\n        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),\n        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),\n        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),\n        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),\n        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),\n        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),\n        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray32& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n  const T12 v12_;\n  const T13 v13_;\n  const T14 v14_;\n  const T15 v15_;\n  const T16 v16_;\n  const T17 v17_;\n  const T18 v18_;\n  const T19 v19_;\n  const T20 v20_;\n  const T21 v21_;\n  const T22 v22_;\n  const T23 v23_;\n  const T24 v24_;\n  const T25 v25_;\n  const T26 v26_;\n  const T27 v27_;\n  const T28 v28_;\n  const T29 v29_;\n  const T30 v30_;\n  const T31 v31_;\n  const T32 v32_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33>\nclass ValueArray33 {\n public:\n  ValueArray33(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,\n      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32,\n      T33 v33) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),\n      v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),\n      v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),\n      v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),\n      v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),\n      v33_(v33) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),\n        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),\n        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),\n        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),\n        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),\n        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),\n        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),\n        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),\n        static_cast<T>(v33_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray33& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n  const T12 v12_;\n  const T13 v13_;\n  const T14 v14_;\n  const T15 v15_;\n  const T16 v16_;\n  const T17 v17_;\n  const T18 v18_;\n  const T19 v19_;\n  const T20 v20_;\n  const T21 v21_;\n  const T22 v22_;\n  const T23 v23_;\n  const T24 v24_;\n  const T25 v25_;\n  const T26 v26_;\n  const T27 v27_;\n  const T28 v28_;\n  const T29 v29_;\n  const T30 v30_;\n  const T31 v31_;\n  const T32 v32_;\n  const T33 v33_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34>\nclass ValueArray34 {\n public:\n  ValueArray34(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,\n      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,\n      T34 v34) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),\n      v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),\n      v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),\n      v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),\n      v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),\n      v33_(v33), v34_(v34) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),\n        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),\n        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),\n        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),\n        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),\n        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),\n        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),\n        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),\n        static_cast<T>(v33_), static_cast<T>(v34_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray34& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n  const T12 v12_;\n  const T13 v13_;\n  const T14 v14_;\n  const T15 v15_;\n  const T16 v16_;\n  const T17 v17_;\n  const T18 v18_;\n  const T19 v19_;\n  const T20 v20_;\n  const T21 v21_;\n  const T22 v22_;\n  const T23 v23_;\n  const T24 v24_;\n  const T25 v25_;\n  const T26 v26_;\n  const T27 v27_;\n  const T28 v28_;\n  const T29 v29_;\n  const T30 v30_;\n  const T31 v31_;\n  const T32 v32_;\n  const T33 v33_;\n  const T34 v34_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35>\nclass ValueArray35 {\n public:\n  ValueArray35(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,\n      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,\n      T34 v34, T35 v35) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),\n      v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),\n      v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19),\n      v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25),\n      v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31),\n      v32_(v32), v33_(v33), v34_(v34), v35_(v35) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),\n        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),\n        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),\n        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),\n        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),\n        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),\n        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),\n        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),\n        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray35& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n  const T12 v12_;\n  const T13 v13_;\n  const T14 v14_;\n  const T15 v15_;\n  const T16 v16_;\n  const T17 v17_;\n  const T18 v18_;\n  const T19 v19_;\n  const T20 v20_;\n  const T21 v21_;\n  const T22 v22_;\n  const T23 v23_;\n  const T24 v24_;\n  const T25 v25_;\n  const T26 v26_;\n  const T27 v27_;\n  const T28 v28_;\n  const T29 v29_;\n  const T30 v30_;\n  const T31 v31_;\n  const T32 v32_;\n  const T33 v33_;\n  const T34 v34_;\n  const T35 v35_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36>\nclass ValueArray36 {\n public:\n  ValueArray36(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,\n      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,\n      T34 v34, T35 v35, T36 v36) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),\n      v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),\n      v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),\n      v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24),\n      v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30),\n      v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),\n        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),\n        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),\n        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),\n        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),\n        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),\n        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),\n        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),\n        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),\n        static_cast<T>(v36_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray36& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n  const T12 v12_;\n  const T13 v13_;\n  const T14 v14_;\n  const T15 v15_;\n  const T16 v16_;\n  const T17 v17_;\n  const T18 v18_;\n  const T19 v19_;\n  const T20 v20_;\n  const T21 v21_;\n  const T22 v22_;\n  const T23 v23_;\n  const T24 v24_;\n  const T25 v25_;\n  const T26 v26_;\n  const T27 v27_;\n  const T28 v28_;\n  const T29 v29_;\n  const T30 v30_;\n  const T31 v31_;\n  const T32 v32_;\n  const T33 v33_;\n  const T34 v34_;\n  const T35 v35_;\n  const T36 v36_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37>\nclass ValueArray37 {\n public:\n  ValueArray37(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,\n      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,\n      T34 v34, T35 v35, T36 v36, T37 v37) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),\n      v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),\n      v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),\n      v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23),\n      v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29),\n      v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35),\n      v36_(v36), v37_(v37) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),\n        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),\n        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),\n        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),\n        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),\n        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),\n        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),\n        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),\n        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),\n        static_cast<T>(v36_), static_cast<T>(v37_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray37& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n  const T12 v12_;\n  const T13 v13_;\n  const T14 v14_;\n  const T15 v15_;\n  const T16 v16_;\n  const T17 v17_;\n  const T18 v18_;\n  const T19 v19_;\n  const T20 v20_;\n  const T21 v21_;\n  const T22 v22_;\n  const T23 v23_;\n  const T24 v24_;\n  const T25 v25_;\n  const T26 v26_;\n  const T27 v27_;\n  const T28 v28_;\n  const T29 v29_;\n  const T30 v30_;\n  const T31 v31_;\n  const T32 v32_;\n  const T33 v33_;\n  const T34 v34_;\n  const T35 v35_;\n  const T36 v36_;\n  const T37 v37_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38>\nclass ValueArray38 {\n public:\n  ValueArray38(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,\n      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,\n      T34 v34, T35 v35, T36 v36, T37 v37, T38 v38) : v1_(v1), v2_(v2), v3_(v3),\n      v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),\n      v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),\n      v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),\n      v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),\n      v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),\n      v35_(v35), v36_(v36), v37_(v37), v38_(v38) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),\n        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),\n        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),\n        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),\n        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),\n        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),\n        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),\n        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),\n        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),\n        static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray38& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n  const T12 v12_;\n  const T13 v13_;\n  const T14 v14_;\n  const T15 v15_;\n  const T16 v16_;\n  const T17 v17_;\n  const T18 v18_;\n  const T19 v19_;\n  const T20 v20_;\n  const T21 v21_;\n  const T22 v22_;\n  const T23 v23_;\n  const T24 v24_;\n  const T25 v25_;\n  const T26 v26_;\n  const T27 v27_;\n  const T28 v28_;\n  const T29 v29_;\n  const T30 v30_;\n  const T31 v31_;\n  const T32 v32_;\n  const T33 v33_;\n  const T34 v34_;\n  const T35 v35_;\n  const T36 v36_;\n  const T37 v37_;\n  const T38 v38_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39>\nclass ValueArray39 {\n public:\n  ValueArray39(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,\n      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,\n      T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39) : v1_(v1), v2_(v2),\n      v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),\n      v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),\n      v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),\n      v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),\n      v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),\n      v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),\n        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),\n        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),\n        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),\n        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),\n        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),\n        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),\n        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),\n        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),\n        static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),\n        static_cast<T>(v39_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray39& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n  const T12 v12_;\n  const T13 v13_;\n  const T14 v14_;\n  const T15 v15_;\n  const T16 v16_;\n  const T17 v17_;\n  const T18 v18_;\n  const T19 v19_;\n  const T20 v20_;\n  const T21 v21_;\n  const T22 v22_;\n  const T23 v23_;\n  const T24 v24_;\n  const T25 v25_;\n  const T26 v26_;\n  const T27 v27_;\n  const T28 v28_;\n  const T29 v29_;\n  const T30 v30_;\n  const T31 v31_;\n  const T32 v32_;\n  const T33 v33_;\n  const T34 v34_;\n  const T35 v35_;\n  const T36 v36_;\n  const T37 v37_;\n  const T38 v38_;\n  const T39 v39_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40>\nclass ValueArray40 {\n public:\n  ValueArray40(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,\n      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,\n      T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) : v1_(v1),\n      v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),\n      v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),\n      v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),\n      v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27),\n      v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33),\n      v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39),\n      v40_(v40) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),\n        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),\n        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),\n        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),\n        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),\n        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),\n        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),\n        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),\n        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),\n        static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),\n        static_cast<T>(v39_), static_cast<T>(v40_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray40& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n  const T12 v12_;\n  const T13 v13_;\n  const T14 v14_;\n  const T15 v15_;\n  const T16 v16_;\n  const T17 v17_;\n  const T18 v18_;\n  const T19 v19_;\n  const T20 v20_;\n  const T21 v21_;\n  const T22 v22_;\n  const T23 v23_;\n  const T24 v24_;\n  const T25 v25_;\n  const T26 v26_;\n  const T27 v27_;\n  const T28 v28_;\n  const T29 v29_;\n  const T30 v30_;\n  const T31 v31_;\n  const T32 v32_;\n  const T33 v33_;\n  const T34 v34_;\n  const T35 v35_;\n  const T36 v36_;\n  const T37 v37_;\n  const T38 v38_;\n  const T39 v39_;\n  const T40 v40_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41>\nclass ValueArray41 {\n public:\n  ValueArray41(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,\n      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,\n      T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40,\n      T41 v41) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),\n      v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),\n      v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),\n      v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),\n      v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),\n      v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38),\n      v39_(v39), v40_(v40), v41_(v41) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),\n        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),\n        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),\n        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),\n        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),\n        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),\n        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),\n        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),\n        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),\n        static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),\n        static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray41& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n  const T12 v12_;\n  const T13 v13_;\n  const T14 v14_;\n  const T15 v15_;\n  const T16 v16_;\n  const T17 v17_;\n  const T18 v18_;\n  const T19 v19_;\n  const T20 v20_;\n  const T21 v21_;\n  const T22 v22_;\n  const T23 v23_;\n  const T24 v24_;\n  const T25 v25_;\n  const T26 v26_;\n  const T27 v27_;\n  const T28 v28_;\n  const T29 v29_;\n  const T30 v30_;\n  const T31 v31_;\n  const T32 v32_;\n  const T33 v33_;\n  const T34 v34_;\n  const T35 v35_;\n  const T36 v36_;\n  const T37 v37_;\n  const T38 v38_;\n  const T39 v39_;\n  const T40 v40_;\n  const T41 v41_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41, typename T42>\nclass ValueArray42 {\n public:\n  ValueArray42(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,\n      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,\n      T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,\n      T42 v42) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),\n      v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),\n      v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),\n      v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),\n      v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),\n      v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38),\n      v39_(v39), v40_(v40), v41_(v41), v42_(v42) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),\n        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),\n        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),\n        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),\n        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),\n        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),\n        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),\n        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),\n        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),\n        static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),\n        static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),\n        static_cast<T>(v42_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray42& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n  const T12 v12_;\n  const T13 v13_;\n  const T14 v14_;\n  const T15 v15_;\n  const T16 v16_;\n  const T17 v17_;\n  const T18 v18_;\n  const T19 v19_;\n  const T20 v20_;\n  const T21 v21_;\n  const T22 v22_;\n  const T23 v23_;\n  const T24 v24_;\n  const T25 v25_;\n  const T26 v26_;\n  const T27 v27_;\n  const T28 v28_;\n  const T29 v29_;\n  const T30 v30_;\n  const T31 v31_;\n  const T32 v32_;\n  const T33 v33_;\n  const T34 v34_;\n  const T35 v35_;\n  const T36 v36_;\n  const T37 v37_;\n  const T38 v38_;\n  const T39 v39_;\n  const T40 v40_;\n  const T41 v41_;\n  const T42 v42_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41, typename T42, typename T43>\nclass ValueArray43 {\n public:\n  ValueArray43(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,\n      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,\n      T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,\n      T42 v42, T43 v43) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),\n      v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),\n      v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19),\n      v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25),\n      v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31),\n      v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37),\n      v38_(v38), v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),\n        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),\n        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),\n        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),\n        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),\n        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),\n        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),\n        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),\n        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),\n        static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),\n        static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),\n        static_cast<T>(v42_), static_cast<T>(v43_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray43& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n  const T12 v12_;\n  const T13 v13_;\n  const T14 v14_;\n  const T15 v15_;\n  const T16 v16_;\n  const T17 v17_;\n  const T18 v18_;\n  const T19 v19_;\n  const T20 v20_;\n  const T21 v21_;\n  const T22 v22_;\n  const T23 v23_;\n  const T24 v24_;\n  const T25 v25_;\n  const T26 v26_;\n  const T27 v27_;\n  const T28 v28_;\n  const T29 v29_;\n  const T30 v30_;\n  const T31 v31_;\n  const T32 v32_;\n  const T33 v33_;\n  const T34 v34_;\n  const T35 v35_;\n  const T36 v36_;\n  const T37 v37_;\n  const T38 v38_;\n  const T39 v39_;\n  const T40 v40_;\n  const T41 v41_;\n  const T42 v42_;\n  const T43 v43_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41, typename T42, typename T43, typename T44>\nclass ValueArray44 {\n public:\n  ValueArray44(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,\n      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,\n      T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,\n      T42 v42, T43 v43, T44 v44) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),\n      v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),\n      v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),\n      v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24),\n      v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30),\n      v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36),\n      v37_(v37), v38_(v38), v39_(v39), v40_(v40), v41_(v41), v42_(v42),\n      v43_(v43), v44_(v44) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),\n        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),\n        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),\n        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),\n        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),\n        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),\n        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),\n        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),\n        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),\n        static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),\n        static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),\n        static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray44& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n  const T12 v12_;\n  const T13 v13_;\n  const T14 v14_;\n  const T15 v15_;\n  const T16 v16_;\n  const T17 v17_;\n  const T18 v18_;\n  const T19 v19_;\n  const T20 v20_;\n  const T21 v21_;\n  const T22 v22_;\n  const T23 v23_;\n  const T24 v24_;\n  const T25 v25_;\n  const T26 v26_;\n  const T27 v27_;\n  const T28 v28_;\n  const T29 v29_;\n  const T30 v30_;\n  const T31 v31_;\n  const T32 v32_;\n  const T33 v33_;\n  const T34 v34_;\n  const T35 v35_;\n  const T36 v36_;\n  const T37 v37_;\n  const T38 v38_;\n  const T39 v39_;\n  const T40 v40_;\n  const T41 v41_;\n  const T42 v42_;\n  const T43 v43_;\n  const T44 v44_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41, typename T42, typename T43, typename T44, typename T45>\nclass ValueArray45 {\n public:\n  ValueArray45(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,\n      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,\n      T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,\n      T42 v42, T43 v43, T44 v44, T45 v45) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),\n      v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),\n      v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),\n      v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23),\n      v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29),\n      v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35),\n      v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40), v41_(v41),\n      v42_(v42), v43_(v43), v44_(v44), v45_(v45) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),\n        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),\n        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),\n        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),\n        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),\n        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),\n        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),\n        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),\n        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),\n        static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),\n        static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),\n        static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_),\n        static_cast<T>(v45_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray45& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n  const T12 v12_;\n  const T13 v13_;\n  const T14 v14_;\n  const T15 v15_;\n  const T16 v16_;\n  const T17 v17_;\n  const T18 v18_;\n  const T19 v19_;\n  const T20 v20_;\n  const T21 v21_;\n  const T22 v22_;\n  const T23 v23_;\n  const T24 v24_;\n  const T25 v25_;\n  const T26 v26_;\n  const T27 v27_;\n  const T28 v28_;\n  const T29 v29_;\n  const T30 v30_;\n  const T31 v31_;\n  const T32 v32_;\n  const T33 v33_;\n  const T34 v34_;\n  const T35 v35_;\n  const T36 v36_;\n  const T37 v37_;\n  const T38 v38_;\n  const T39 v39_;\n  const T40 v40_;\n  const T41 v41_;\n  const T42 v42_;\n  const T43 v43_;\n  const T44 v44_;\n  const T45 v45_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41, typename T42, typename T43, typename T44, typename T45,\n    typename T46>\nclass ValueArray46 {\n public:\n  ValueArray46(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,\n      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,\n      T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,\n      T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) : v1_(v1), v2_(v2), v3_(v3),\n      v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),\n      v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),\n      v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),\n      v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),\n      v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),\n      v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40),\n      v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), v46_(v46) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),\n        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),\n        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),\n        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),\n        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),\n        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),\n        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),\n        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),\n        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),\n        static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),\n        static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),\n        static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_),\n        static_cast<T>(v45_), static_cast<T>(v46_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray46& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n  const T12 v12_;\n  const T13 v13_;\n  const T14 v14_;\n  const T15 v15_;\n  const T16 v16_;\n  const T17 v17_;\n  const T18 v18_;\n  const T19 v19_;\n  const T20 v20_;\n  const T21 v21_;\n  const T22 v22_;\n  const T23 v23_;\n  const T24 v24_;\n  const T25 v25_;\n  const T26 v26_;\n  const T27 v27_;\n  const T28 v28_;\n  const T29 v29_;\n  const T30 v30_;\n  const T31 v31_;\n  const T32 v32_;\n  const T33 v33_;\n  const T34 v34_;\n  const T35 v35_;\n  const T36 v36_;\n  const T37 v37_;\n  const T38 v38_;\n  const T39 v39_;\n  const T40 v40_;\n  const T41 v41_;\n  const T42 v42_;\n  const T43 v43_;\n  const T44 v44_;\n  const T45 v45_;\n  const T46 v46_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41, typename T42, typename T43, typename T44, typename T45,\n    typename T46, typename T47>\nclass ValueArray47 {\n public:\n  ValueArray47(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,\n      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,\n      T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,\n      T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) : v1_(v1), v2_(v2),\n      v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),\n      v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),\n      v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),\n      v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),\n      v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),\n      v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40),\n      v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), v46_(v46),\n      v47_(v47) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),\n        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),\n        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),\n        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),\n        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),\n        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),\n        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),\n        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),\n        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),\n        static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),\n        static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),\n        static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_),\n        static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray47& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n  const T12 v12_;\n  const T13 v13_;\n  const T14 v14_;\n  const T15 v15_;\n  const T16 v16_;\n  const T17 v17_;\n  const T18 v18_;\n  const T19 v19_;\n  const T20 v20_;\n  const T21 v21_;\n  const T22 v22_;\n  const T23 v23_;\n  const T24 v24_;\n  const T25 v25_;\n  const T26 v26_;\n  const T27 v27_;\n  const T28 v28_;\n  const T29 v29_;\n  const T30 v30_;\n  const T31 v31_;\n  const T32 v32_;\n  const T33 v33_;\n  const T34 v34_;\n  const T35 v35_;\n  const T36 v36_;\n  const T37 v37_;\n  const T38 v38_;\n  const T39 v39_;\n  const T40 v40_;\n  const T41 v41_;\n  const T42 v42_;\n  const T43 v43_;\n  const T44 v44_;\n  const T45 v45_;\n  const T46 v46_;\n  const T47 v47_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41, typename T42, typename T43, typename T44, typename T45,\n    typename T46, typename T47, typename T48>\nclass ValueArray48 {\n public:\n  ValueArray48(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,\n      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,\n      T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,\n      T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48) : v1_(v1),\n      v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),\n      v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),\n      v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),\n      v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27),\n      v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33),\n      v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39),\n      v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45),\n      v46_(v46), v47_(v47), v48_(v48) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),\n        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),\n        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),\n        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),\n        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),\n        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),\n        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),\n        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),\n        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),\n        static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),\n        static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),\n        static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_),\n        static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_),\n        static_cast<T>(v48_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray48& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n  const T12 v12_;\n  const T13 v13_;\n  const T14 v14_;\n  const T15 v15_;\n  const T16 v16_;\n  const T17 v17_;\n  const T18 v18_;\n  const T19 v19_;\n  const T20 v20_;\n  const T21 v21_;\n  const T22 v22_;\n  const T23 v23_;\n  const T24 v24_;\n  const T25 v25_;\n  const T26 v26_;\n  const T27 v27_;\n  const T28 v28_;\n  const T29 v29_;\n  const T30 v30_;\n  const T31 v31_;\n  const T32 v32_;\n  const T33 v33_;\n  const T34 v34_;\n  const T35 v35_;\n  const T36 v36_;\n  const T37 v37_;\n  const T38 v38_;\n  const T39 v39_;\n  const T40 v40_;\n  const T41 v41_;\n  const T42 v42_;\n  const T43 v43_;\n  const T44 v44_;\n  const T45 v45_;\n  const T46 v46_;\n  const T47 v47_;\n  const T48 v48_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41, typename T42, typename T43, typename T44, typename T45,\n    typename T46, typename T47, typename T48, typename T49>\nclass ValueArray49 {\n public:\n  ValueArray49(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,\n      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,\n      T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,\n      T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48,\n      T49 v49) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),\n      v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),\n      v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),\n      v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),\n      v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),\n      v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38),\n      v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44),\n      v45_(v45), v46_(v46), v47_(v47), v48_(v48), v49_(v49) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),\n        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),\n        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),\n        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),\n        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),\n        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),\n        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),\n        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),\n        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),\n        static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),\n        static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),\n        static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_),\n        static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_),\n        static_cast<T>(v48_), static_cast<T>(v49_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray49& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n  const T12 v12_;\n  const T13 v13_;\n  const T14 v14_;\n  const T15 v15_;\n  const T16 v16_;\n  const T17 v17_;\n  const T18 v18_;\n  const T19 v19_;\n  const T20 v20_;\n  const T21 v21_;\n  const T22 v22_;\n  const T23 v23_;\n  const T24 v24_;\n  const T25 v25_;\n  const T26 v26_;\n  const T27 v27_;\n  const T28 v28_;\n  const T29 v29_;\n  const T30 v30_;\n  const T31 v31_;\n  const T32 v32_;\n  const T33 v33_;\n  const T34 v34_;\n  const T35 v35_;\n  const T36 v36_;\n  const T37 v37_;\n  const T38 v38_;\n  const T39 v39_;\n  const T40 v40_;\n  const T41 v41_;\n  const T42 v42_;\n  const T43 v43_;\n  const T44 v44_;\n  const T45 v45_;\n  const T46 v46_;\n  const T47 v47_;\n  const T48 v48_;\n  const T49 v49_;\n};\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41, typename T42, typename T43, typename T44, typename T45,\n    typename T46, typename T47, typename T48, typename T49, typename T50>\nclass ValueArray50 {\n public:\n  ValueArray50(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,\n      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,\n      T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,\n      T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, T49 v49,\n      T50 v50) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),\n      v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),\n      v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),\n      v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),\n      v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),\n      v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38),\n      v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44),\n      v45_(v45), v46_(v46), v47_(v47), v48_(v48), v49_(v49), v50_(v50) {}\n\n  template <typename T>\n  operator ParamGenerator<T>() const {\n    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),\n        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),\n        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),\n        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),\n        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),\n        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),\n        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),\n        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),\n        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),\n        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),\n        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),\n        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),\n        static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),\n        static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),\n        static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_),\n        static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_),\n        static_cast<T>(v48_), static_cast<T>(v49_), static_cast<T>(v50_)};\n    return ValuesIn(array);\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const ValueArray50& other);\n\n  const T1 v1_;\n  const T2 v2_;\n  const T3 v3_;\n  const T4 v4_;\n  const T5 v5_;\n  const T6 v6_;\n  const T7 v7_;\n  const T8 v8_;\n  const T9 v9_;\n  const T10 v10_;\n  const T11 v11_;\n  const T12 v12_;\n  const T13 v13_;\n  const T14 v14_;\n  const T15 v15_;\n  const T16 v16_;\n  const T17 v17_;\n  const T18 v18_;\n  const T19 v19_;\n  const T20 v20_;\n  const T21 v21_;\n  const T22 v22_;\n  const T23 v23_;\n  const T24 v24_;\n  const T25 v25_;\n  const T26 v26_;\n  const T27 v27_;\n  const T28 v28_;\n  const T29 v29_;\n  const T30 v30_;\n  const T31 v31_;\n  const T32 v32_;\n  const T33 v33_;\n  const T34 v34_;\n  const T35 v35_;\n  const T36 v36_;\n  const T37 v37_;\n  const T38 v38_;\n  const T39 v39_;\n  const T40 v40_;\n  const T41 v41_;\n  const T42 v42_;\n  const T43 v43_;\n  const T44 v44_;\n  const T45 v45_;\n  const T46 v46_;\n  const T47 v47_;\n  const T48 v48_;\n  const T49 v49_;\n  const T50 v50_;\n};\n\n# if GTEST_HAS_COMBINE\n// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.\n//\n// Generates values from the Cartesian product of values produced\n// by the argument generators.\n//\ntemplate <typename T1, typename T2>\nclass CartesianProductGenerator2\n    : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2> > {\n public:\n  typedef ::std::tr1::tuple<T1, T2> ParamType;\n\n  CartesianProductGenerator2(const ParamGenerator<T1>& g1,\n      const ParamGenerator<T2>& g2)\n      : g1_(g1), g2_(g2) {}\n  virtual ~CartesianProductGenerator2() {}\n\n  virtual ParamIteratorInterface<ParamType>* Begin() const {\n    return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin());\n  }\n  virtual ParamIteratorInterface<ParamType>* End() const {\n    return new Iterator(this, g1_, g1_.end(), g2_, g2_.end());\n  }\n\n private:\n  class Iterator : public ParamIteratorInterface<ParamType> {\n   public:\n    Iterator(const ParamGeneratorInterface<ParamType>* base,\n      const ParamGenerator<T1>& g1,\n      const typename ParamGenerator<T1>::iterator& current1,\n      const ParamGenerator<T2>& g2,\n      const typename ParamGenerator<T2>::iterator& current2)\n        : base_(base),\n          begin1_(g1.begin()), end1_(g1.end()), current1_(current1),\n          begin2_(g2.begin()), end2_(g2.end()), current2_(current2)    {\n      ComputeCurrentValue();\n    }\n    virtual ~Iterator() {}\n\n    virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {\n      return base_;\n    }\n    // Advance should not be called on beyond-of-range iterators\n    // so no component iterators must be beyond end of range, either.\n    virtual void Advance() {\n      assert(!AtEnd());\n      ++current2_;\n      if (current2_ == end2_) {\n        current2_ = begin2_;\n        ++current1_;\n      }\n      ComputeCurrentValue();\n    }\n    virtual ParamIteratorInterface<ParamType>* Clone() const {\n      return new Iterator(*this);\n    }\n    virtual const ParamType* Current() const { return &current_value_; }\n    virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {\n      // Having the same base generator guarantees that the other\n      // iterator is of the same type and we can downcast.\n      GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())\n          << \"The program attempted to compare iterators \"\n          << \"from different generators.\" << std::endl;\n      const Iterator* typed_other =\n          CheckedDowncastToActualType<const Iterator>(&other);\n      // We must report iterators equal if they both point beyond their\n      // respective ranges. That can happen in a variety of fashions,\n      // so we have to consult AtEnd().\n      return (AtEnd() && typed_other->AtEnd()) ||\n         (\n          current1_ == typed_other->current1_ &&\n          current2_ == typed_other->current2_);\n    }\n\n   private:\n    Iterator(const Iterator& other)\n        : base_(other.base_),\n        begin1_(other.begin1_),\n        end1_(other.end1_),\n        current1_(other.current1_),\n        begin2_(other.begin2_),\n        end2_(other.end2_),\n        current2_(other.current2_) {\n      ComputeCurrentValue();\n    }\n\n    void ComputeCurrentValue() {\n      if (!AtEnd())\n        current_value_ = ParamType(*current1_, *current2_);\n    }\n    bool AtEnd() const {\n      // We must report iterator past the end of the range when either of the\n      // component iterators has reached the end of its range.\n      return\n          current1_ == end1_ ||\n          current2_ == end2_;\n    }\n\n    // No implementation - assignment is unsupported.\n    void operator=(const Iterator& other);\n\n    const ParamGeneratorInterface<ParamType>* const base_;\n    // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.\n    // current[i]_ is the actual traversing iterator.\n    const typename ParamGenerator<T1>::iterator begin1_;\n    const typename ParamGenerator<T1>::iterator end1_;\n    typename ParamGenerator<T1>::iterator current1_;\n    const typename ParamGenerator<T2>::iterator begin2_;\n    const typename ParamGenerator<T2>::iterator end2_;\n    typename ParamGenerator<T2>::iterator current2_;\n    ParamType current_value_;\n  };  // class CartesianProductGenerator2::Iterator\n\n  // No implementation - assignment is unsupported.\n  void operator=(const CartesianProductGenerator2& other);\n\n  const ParamGenerator<T1> g1_;\n  const ParamGenerator<T2> g2_;\n};  // class CartesianProductGenerator2\n\n\ntemplate <typename T1, typename T2, typename T3>\nclass CartesianProductGenerator3\n    : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3> > {\n public:\n  typedef ::std::tr1::tuple<T1, T2, T3> ParamType;\n\n  CartesianProductGenerator3(const ParamGenerator<T1>& g1,\n      const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3)\n      : g1_(g1), g2_(g2), g3_(g3) {}\n  virtual ~CartesianProductGenerator3() {}\n\n  virtual ParamIteratorInterface<ParamType>* Begin() const {\n    return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,\n        g3_.begin());\n  }\n  virtual ParamIteratorInterface<ParamType>* End() const {\n    return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end());\n  }\n\n private:\n  class Iterator : public ParamIteratorInterface<ParamType> {\n   public:\n    Iterator(const ParamGeneratorInterface<ParamType>* base,\n      const ParamGenerator<T1>& g1,\n      const typename ParamGenerator<T1>::iterator& current1,\n      const ParamGenerator<T2>& g2,\n      const typename ParamGenerator<T2>::iterator& current2,\n      const ParamGenerator<T3>& g3,\n      const typename ParamGenerator<T3>::iterator& current3)\n        : base_(base),\n          begin1_(g1.begin()), end1_(g1.end()), current1_(current1),\n          begin2_(g2.begin()), end2_(g2.end()), current2_(current2),\n          begin3_(g3.begin()), end3_(g3.end()), current3_(current3)    {\n      ComputeCurrentValue();\n    }\n    virtual ~Iterator() {}\n\n    virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {\n      return base_;\n    }\n    // Advance should not be called on beyond-of-range iterators\n    // so no component iterators must be beyond end of range, either.\n    virtual void Advance() {\n      assert(!AtEnd());\n      ++current3_;\n      if (current3_ == end3_) {\n        current3_ = begin3_;\n        ++current2_;\n      }\n      if (current2_ == end2_) {\n        current2_ = begin2_;\n        ++current1_;\n      }\n      ComputeCurrentValue();\n    }\n    virtual ParamIteratorInterface<ParamType>* Clone() const {\n      return new Iterator(*this);\n    }\n    virtual const ParamType* Current() const { return &current_value_; }\n    virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {\n      // Having the same base generator guarantees that the other\n      // iterator is of the same type and we can downcast.\n      GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())\n          << \"The program attempted to compare iterators \"\n          << \"from different generators.\" << std::endl;\n      const Iterator* typed_other =\n          CheckedDowncastToActualType<const Iterator>(&other);\n      // We must report iterators equal if they both point beyond their\n      // respective ranges. That can happen in a variety of fashions,\n      // so we have to consult AtEnd().\n      return (AtEnd() && typed_other->AtEnd()) ||\n         (\n          current1_ == typed_other->current1_ &&\n          current2_ == typed_other->current2_ &&\n          current3_ == typed_other->current3_);\n    }\n\n   private:\n    Iterator(const Iterator& other)\n        : base_(other.base_),\n        begin1_(other.begin1_),\n        end1_(other.end1_),\n        current1_(other.current1_),\n        begin2_(other.begin2_),\n        end2_(other.end2_),\n        current2_(other.current2_),\n        begin3_(other.begin3_),\n        end3_(other.end3_),\n        current3_(other.current3_) {\n      ComputeCurrentValue();\n    }\n\n    void ComputeCurrentValue() {\n      if (!AtEnd())\n        current_value_ = ParamType(*current1_, *current2_, *current3_);\n    }\n    bool AtEnd() const {\n      // We must report iterator past the end of the range when either of the\n      // component iterators has reached the end of its range.\n      return\n          current1_ == end1_ ||\n          current2_ == end2_ ||\n          current3_ == end3_;\n    }\n\n    // No implementation - assignment is unsupported.\n    void operator=(const Iterator& other);\n\n    const ParamGeneratorInterface<ParamType>* const base_;\n    // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.\n    // current[i]_ is the actual traversing iterator.\n    const typename ParamGenerator<T1>::iterator begin1_;\n    const typename ParamGenerator<T1>::iterator end1_;\n    typename ParamGenerator<T1>::iterator current1_;\n    const typename ParamGenerator<T2>::iterator begin2_;\n    const typename ParamGenerator<T2>::iterator end2_;\n    typename ParamGenerator<T2>::iterator current2_;\n    const typename ParamGenerator<T3>::iterator begin3_;\n    const typename ParamGenerator<T3>::iterator end3_;\n    typename ParamGenerator<T3>::iterator current3_;\n    ParamType current_value_;\n  };  // class CartesianProductGenerator3::Iterator\n\n  // No implementation - assignment is unsupported.\n  void operator=(const CartesianProductGenerator3& other);\n\n  const ParamGenerator<T1> g1_;\n  const ParamGenerator<T2> g2_;\n  const ParamGenerator<T3> g3_;\n};  // class CartesianProductGenerator3\n\n\ntemplate <typename T1, typename T2, typename T3, typename T4>\nclass CartesianProductGenerator4\n    : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4> > {\n public:\n  typedef ::std::tr1::tuple<T1, T2, T3, T4> ParamType;\n\n  CartesianProductGenerator4(const ParamGenerator<T1>& g1,\n      const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,\n      const ParamGenerator<T4>& g4)\n      : g1_(g1), g2_(g2), g3_(g3), g4_(g4) {}\n  virtual ~CartesianProductGenerator4() {}\n\n  virtual ParamIteratorInterface<ParamType>* Begin() const {\n    return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,\n        g3_.begin(), g4_, g4_.begin());\n  }\n  virtual ParamIteratorInterface<ParamType>* End() const {\n    return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),\n        g4_, g4_.end());\n  }\n\n private:\n  class Iterator : public ParamIteratorInterface<ParamType> {\n   public:\n    Iterator(const ParamGeneratorInterface<ParamType>* base,\n      const ParamGenerator<T1>& g1,\n      const typename ParamGenerator<T1>::iterator& current1,\n      const ParamGenerator<T2>& g2,\n      const typename ParamGenerator<T2>::iterator& current2,\n      const ParamGenerator<T3>& g3,\n      const typename ParamGenerator<T3>::iterator& current3,\n      const ParamGenerator<T4>& g4,\n      const typename ParamGenerator<T4>::iterator& current4)\n        : base_(base),\n          begin1_(g1.begin()), end1_(g1.end()), current1_(current1),\n          begin2_(g2.begin()), end2_(g2.end()), current2_(current2),\n          begin3_(g3.begin()), end3_(g3.end()), current3_(current3),\n          begin4_(g4.begin()), end4_(g4.end()), current4_(current4)    {\n      ComputeCurrentValue();\n    }\n    virtual ~Iterator() {}\n\n    virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {\n      return base_;\n    }\n    // Advance should not be called on beyond-of-range iterators\n    // so no component iterators must be beyond end of range, either.\n    virtual void Advance() {\n      assert(!AtEnd());\n      ++current4_;\n      if (current4_ == end4_) {\n        current4_ = begin4_;\n        ++current3_;\n      }\n      if (current3_ == end3_) {\n        current3_ = begin3_;\n        ++current2_;\n      }\n      if (current2_ == end2_) {\n        current2_ = begin2_;\n        ++current1_;\n      }\n      ComputeCurrentValue();\n    }\n    virtual ParamIteratorInterface<ParamType>* Clone() const {\n      return new Iterator(*this);\n    }\n    virtual const ParamType* Current() const { return &current_value_; }\n    virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {\n      // Having the same base generator guarantees that the other\n      // iterator is of the same type and we can downcast.\n      GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())\n          << \"The program attempted to compare iterators \"\n          << \"from different generators.\" << std::endl;\n      const Iterator* typed_other =\n          CheckedDowncastToActualType<const Iterator>(&other);\n      // We must report iterators equal if they both point beyond their\n      // respective ranges. That can happen in a variety of fashions,\n      // so we have to consult AtEnd().\n      return (AtEnd() && typed_other->AtEnd()) ||\n         (\n          current1_ == typed_other->current1_ &&\n          current2_ == typed_other->current2_ &&\n          current3_ == typed_other->current3_ &&\n          current4_ == typed_other->current4_);\n    }\n\n   private:\n    Iterator(const Iterator& other)\n        : base_(other.base_),\n        begin1_(other.begin1_),\n        end1_(other.end1_),\n        current1_(other.current1_),\n        begin2_(other.begin2_),\n        end2_(other.end2_),\n        current2_(other.current2_),\n        begin3_(other.begin3_),\n        end3_(other.end3_),\n        current3_(other.current3_),\n        begin4_(other.begin4_),\n        end4_(other.end4_),\n        current4_(other.current4_) {\n      ComputeCurrentValue();\n    }\n\n    void ComputeCurrentValue() {\n      if (!AtEnd())\n        current_value_ = ParamType(*current1_, *current2_, *current3_,\n            *current4_);\n    }\n    bool AtEnd() const {\n      // We must report iterator past the end of the range when either of the\n      // component iterators has reached the end of its range.\n      return\n          current1_ == end1_ ||\n          current2_ == end2_ ||\n          current3_ == end3_ ||\n          current4_ == end4_;\n    }\n\n    // No implementation - assignment is unsupported.\n    void operator=(const Iterator& other);\n\n    const ParamGeneratorInterface<ParamType>* const base_;\n    // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.\n    // current[i]_ is the actual traversing iterator.\n    const typename ParamGenerator<T1>::iterator begin1_;\n    const typename ParamGenerator<T1>::iterator end1_;\n    typename ParamGenerator<T1>::iterator current1_;\n    const typename ParamGenerator<T2>::iterator begin2_;\n    const typename ParamGenerator<T2>::iterator end2_;\n    typename ParamGenerator<T2>::iterator current2_;\n    const typename ParamGenerator<T3>::iterator begin3_;\n    const typename ParamGenerator<T3>::iterator end3_;\n    typename ParamGenerator<T3>::iterator current3_;\n    const typename ParamGenerator<T4>::iterator begin4_;\n    const typename ParamGenerator<T4>::iterator end4_;\n    typename ParamGenerator<T4>::iterator current4_;\n    ParamType current_value_;\n  };  // class CartesianProductGenerator4::Iterator\n\n  // No implementation - assignment is unsupported.\n  void operator=(const CartesianProductGenerator4& other);\n\n  const ParamGenerator<T1> g1_;\n  const ParamGenerator<T2> g2_;\n  const ParamGenerator<T3> g3_;\n  const ParamGenerator<T4> g4_;\n};  // class CartesianProductGenerator4\n\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5>\nclass CartesianProductGenerator5\n    : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5> > {\n public:\n  typedef ::std::tr1::tuple<T1, T2, T3, T4, T5> ParamType;\n\n  CartesianProductGenerator5(const ParamGenerator<T1>& g1,\n      const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,\n      const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5)\n      : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5) {}\n  virtual ~CartesianProductGenerator5() {}\n\n  virtual ParamIteratorInterface<ParamType>* Begin() const {\n    return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,\n        g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin());\n  }\n  virtual ParamIteratorInterface<ParamType>* End() const {\n    return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),\n        g4_, g4_.end(), g5_, g5_.end());\n  }\n\n private:\n  class Iterator : public ParamIteratorInterface<ParamType> {\n   public:\n    Iterator(const ParamGeneratorInterface<ParamType>* base,\n      const ParamGenerator<T1>& g1,\n      const typename ParamGenerator<T1>::iterator& current1,\n      const ParamGenerator<T2>& g2,\n      const typename ParamGenerator<T2>::iterator& current2,\n      const ParamGenerator<T3>& g3,\n      const typename ParamGenerator<T3>::iterator& current3,\n      const ParamGenerator<T4>& g4,\n      const typename ParamGenerator<T4>::iterator& current4,\n      const ParamGenerator<T5>& g5,\n      const typename ParamGenerator<T5>::iterator& current5)\n        : base_(base),\n          begin1_(g1.begin()), end1_(g1.end()), current1_(current1),\n          begin2_(g2.begin()), end2_(g2.end()), current2_(current2),\n          begin3_(g3.begin()), end3_(g3.end()), current3_(current3),\n          begin4_(g4.begin()), end4_(g4.end()), current4_(current4),\n          begin5_(g5.begin()), end5_(g5.end()), current5_(current5)    {\n      ComputeCurrentValue();\n    }\n    virtual ~Iterator() {}\n\n    virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {\n      return base_;\n    }\n    // Advance should not be called on beyond-of-range iterators\n    // so no component iterators must be beyond end of range, either.\n    virtual void Advance() {\n      assert(!AtEnd());\n      ++current5_;\n      if (current5_ == end5_) {\n        current5_ = begin5_;\n        ++current4_;\n      }\n      if (current4_ == end4_) {\n        current4_ = begin4_;\n        ++current3_;\n      }\n      if (current3_ == end3_) {\n        current3_ = begin3_;\n        ++current2_;\n      }\n      if (current2_ == end2_) {\n        current2_ = begin2_;\n        ++current1_;\n      }\n      ComputeCurrentValue();\n    }\n    virtual ParamIteratorInterface<ParamType>* Clone() const {\n      return new Iterator(*this);\n    }\n    virtual const ParamType* Current() const { return &current_value_; }\n    virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {\n      // Having the same base generator guarantees that the other\n      // iterator is of the same type and we can downcast.\n      GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())\n          << \"The program attempted to compare iterators \"\n          << \"from different generators.\" << std::endl;\n      const Iterator* typed_other =\n          CheckedDowncastToActualType<const Iterator>(&other);\n      // We must report iterators equal if they both point beyond their\n      // respective ranges. That can happen in a variety of fashions,\n      // so we have to consult AtEnd().\n      return (AtEnd() && typed_other->AtEnd()) ||\n         (\n          current1_ == typed_other->current1_ &&\n          current2_ == typed_other->current2_ &&\n          current3_ == typed_other->current3_ &&\n          current4_ == typed_other->current4_ &&\n          current5_ == typed_other->current5_);\n    }\n\n   private:\n    Iterator(const Iterator& other)\n        : base_(other.base_),\n        begin1_(other.begin1_),\n        end1_(other.end1_),\n        current1_(other.current1_),\n        begin2_(other.begin2_),\n        end2_(other.end2_),\n        current2_(other.current2_),\n        begin3_(other.begin3_),\n        end3_(other.end3_),\n        current3_(other.current3_),\n        begin4_(other.begin4_),\n        end4_(other.end4_),\n        current4_(other.current4_),\n        begin5_(other.begin5_),\n        end5_(other.end5_),\n        current5_(other.current5_) {\n      ComputeCurrentValue();\n    }\n\n    void ComputeCurrentValue() {\n      if (!AtEnd())\n        current_value_ = ParamType(*current1_, *current2_, *current3_,\n            *current4_, *current5_);\n    }\n    bool AtEnd() const {\n      // We must report iterator past the end of the range when either of the\n      // component iterators has reached the end of its range.\n      return\n          current1_ == end1_ ||\n          current2_ == end2_ ||\n          current3_ == end3_ ||\n          current4_ == end4_ ||\n          current5_ == end5_;\n    }\n\n    // No implementation - assignment is unsupported.\n    void operator=(const Iterator& other);\n\n    const ParamGeneratorInterface<ParamType>* const base_;\n    // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.\n    // current[i]_ is the actual traversing iterator.\n    const typename ParamGenerator<T1>::iterator begin1_;\n    const typename ParamGenerator<T1>::iterator end1_;\n    typename ParamGenerator<T1>::iterator current1_;\n    const typename ParamGenerator<T2>::iterator begin2_;\n    const typename ParamGenerator<T2>::iterator end2_;\n    typename ParamGenerator<T2>::iterator current2_;\n    const typename ParamGenerator<T3>::iterator begin3_;\n    const typename ParamGenerator<T3>::iterator end3_;\n    typename ParamGenerator<T3>::iterator current3_;\n    const typename ParamGenerator<T4>::iterator begin4_;\n    const typename ParamGenerator<T4>::iterator end4_;\n    typename ParamGenerator<T4>::iterator current4_;\n    const typename ParamGenerator<T5>::iterator begin5_;\n    const typename ParamGenerator<T5>::iterator end5_;\n    typename ParamGenerator<T5>::iterator current5_;\n    ParamType current_value_;\n  };  // class CartesianProductGenerator5::Iterator\n\n  // No implementation - assignment is unsupported.\n  void operator=(const CartesianProductGenerator5& other);\n\n  const ParamGenerator<T1> g1_;\n  const ParamGenerator<T2> g2_;\n  const ParamGenerator<T3> g3_;\n  const ParamGenerator<T4> g4_;\n  const ParamGenerator<T5> g5_;\n};  // class CartesianProductGenerator5\n\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6>\nclass CartesianProductGenerator6\n    : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5,\n        T6> > {\n public:\n  typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6> ParamType;\n\n  CartesianProductGenerator6(const ParamGenerator<T1>& g1,\n      const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,\n      const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5,\n      const ParamGenerator<T6>& g6)\n      : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6) {}\n  virtual ~CartesianProductGenerator6() {}\n\n  virtual ParamIteratorInterface<ParamType>* Begin() const {\n    return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,\n        g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin());\n  }\n  virtual ParamIteratorInterface<ParamType>* End() const {\n    return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),\n        g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end());\n  }\n\n private:\n  class Iterator : public ParamIteratorInterface<ParamType> {\n   public:\n    Iterator(const ParamGeneratorInterface<ParamType>* base,\n      const ParamGenerator<T1>& g1,\n      const typename ParamGenerator<T1>::iterator& current1,\n      const ParamGenerator<T2>& g2,\n      const typename ParamGenerator<T2>::iterator& current2,\n      const ParamGenerator<T3>& g3,\n      const typename ParamGenerator<T3>::iterator& current3,\n      const ParamGenerator<T4>& g4,\n      const typename ParamGenerator<T4>::iterator& current4,\n      const ParamGenerator<T5>& g5,\n      const typename ParamGenerator<T5>::iterator& current5,\n      const ParamGenerator<T6>& g6,\n      const typename ParamGenerator<T6>::iterator& current6)\n        : base_(base),\n          begin1_(g1.begin()), end1_(g1.end()), current1_(current1),\n          begin2_(g2.begin()), end2_(g2.end()), current2_(current2),\n          begin3_(g3.begin()), end3_(g3.end()), current3_(current3),\n          begin4_(g4.begin()), end4_(g4.end()), current4_(current4),\n          begin5_(g5.begin()), end5_(g5.end()), current5_(current5),\n          begin6_(g6.begin()), end6_(g6.end()), current6_(current6)    {\n      ComputeCurrentValue();\n    }\n    virtual ~Iterator() {}\n\n    virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {\n      return base_;\n    }\n    // Advance should not be called on beyond-of-range iterators\n    // so no component iterators must be beyond end of range, either.\n    virtual void Advance() {\n      assert(!AtEnd());\n      ++current6_;\n      if (current6_ == end6_) {\n        current6_ = begin6_;\n        ++current5_;\n      }\n      if (current5_ == end5_) {\n        current5_ = begin5_;\n        ++current4_;\n      }\n      if (current4_ == end4_) {\n        current4_ = begin4_;\n        ++current3_;\n      }\n      if (current3_ == end3_) {\n        current3_ = begin3_;\n        ++current2_;\n      }\n      if (current2_ == end2_) {\n        current2_ = begin2_;\n        ++current1_;\n      }\n      ComputeCurrentValue();\n    }\n    virtual ParamIteratorInterface<ParamType>* Clone() const {\n      return new Iterator(*this);\n    }\n    virtual const ParamType* Current() const { return &current_value_; }\n    virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {\n      // Having the same base generator guarantees that the other\n      // iterator is of the same type and we can downcast.\n      GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())\n          << \"The program attempted to compare iterators \"\n          << \"from different generators.\" << std::endl;\n      const Iterator* typed_other =\n          CheckedDowncastToActualType<const Iterator>(&other);\n      // We must report iterators equal if they both point beyond their\n      // respective ranges. That can happen in a variety of fashions,\n      // so we have to consult AtEnd().\n      return (AtEnd() && typed_other->AtEnd()) ||\n         (\n          current1_ == typed_other->current1_ &&\n          current2_ == typed_other->current2_ &&\n          current3_ == typed_other->current3_ &&\n          current4_ == typed_other->current4_ &&\n          current5_ == typed_other->current5_ &&\n          current6_ == typed_other->current6_);\n    }\n\n   private:\n    Iterator(const Iterator& other)\n        : base_(other.base_),\n        begin1_(other.begin1_),\n        end1_(other.end1_),\n        current1_(other.current1_),\n        begin2_(other.begin2_),\n        end2_(other.end2_),\n        current2_(other.current2_),\n        begin3_(other.begin3_),\n        end3_(other.end3_),\n        current3_(other.current3_),\n        begin4_(other.begin4_),\n        end4_(other.end4_),\n        current4_(other.current4_),\n        begin5_(other.begin5_),\n        end5_(other.end5_),\n        current5_(other.current5_),\n        begin6_(other.begin6_),\n        end6_(other.end6_),\n        current6_(other.current6_) {\n      ComputeCurrentValue();\n    }\n\n    void ComputeCurrentValue() {\n      if (!AtEnd())\n        current_value_ = ParamType(*current1_, *current2_, *current3_,\n            *current4_, *current5_, *current6_);\n    }\n    bool AtEnd() const {\n      // We must report iterator past the end of the range when either of the\n      // component iterators has reached the end of its range.\n      return\n          current1_ == end1_ ||\n          current2_ == end2_ ||\n          current3_ == end3_ ||\n          current4_ == end4_ ||\n          current5_ == end5_ ||\n          current6_ == end6_;\n    }\n\n    // No implementation - assignment is unsupported.\n    void operator=(const Iterator& other);\n\n    const ParamGeneratorInterface<ParamType>* const base_;\n    // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.\n    // current[i]_ is the actual traversing iterator.\n    const typename ParamGenerator<T1>::iterator begin1_;\n    const typename ParamGenerator<T1>::iterator end1_;\n    typename ParamGenerator<T1>::iterator current1_;\n    const typename ParamGenerator<T2>::iterator begin2_;\n    const typename ParamGenerator<T2>::iterator end2_;\n    typename ParamGenerator<T2>::iterator current2_;\n    const typename ParamGenerator<T3>::iterator begin3_;\n    const typename ParamGenerator<T3>::iterator end3_;\n    typename ParamGenerator<T3>::iterator current3_;\n    const typename ParamGenerator<T4>::iterator begin4_;\n    const typename ParamGenerator<T4>::iterator end4_;\n    typename ParamGenerator<T4>::iterator current4_;\n    const typename ParamGenerator<T5>::iterator begin5_;\n    const typename ParamGenerator<T5>::iterator end5_;\n    typename ParamGenerator<T5>::iterator current5_;\n    const typename ParamGenerator<T6>::iterator begin6_;\n    const typename ParamGenerator<T6>::iterator end6_;\n    typename ParamGenerator<T6>::iterator current6_;\n    ParamType current_value_;\n  };  // class CartesianProductGenerator6::Iterator\n\n  // No implementation - assignment is unsupported.\n  void operator=(const CartesianProductGenerator6& other);\n\n  const ParamGenerator<T1> g1_;\n  const ParamGenerator<T2> g2_;\n  const ParamGenerator<T3> g3_;\n  const ParamGenerator<T4> g4_;\n  const ParamGenerator<T5> g5_;\n  const ParamGenerator<T6> g6_;\n};  // class CartesianProductGenerator6\n\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7>\nclass CartesianProductGenerator7\n    : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6,\n        T7> > {\n public:\n  typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7> ParamType;\n\n  CartesianProductGenerator7(const ParamGenerator<T1>& g1,\n      const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,\n      const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5,\n      const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7)\n      : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7) {}\n  virtual ~CartesianProductGenerator7() {}\n\n  virtual ParamIteratorInterface<ParamType>* Begin() const {\n    return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,\n        g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,\n        g7_.begin());\n  }\n  virtual ParamIteratorInterface<ParamType>* End() const {\n    return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),\n        g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end());\n  }\n\n private:\n  class Iterator : public ParamIteratorInterface<ParamType> {\n   public:\n    Iterator(const ParamGeneratorInterface<ParamType>* base,\n      const ParamGenerator<T1>& g1,\n      const typename ParamGenerator<T1>::iterator& current1,\n      const ParamGenerator<T2>& g2,\n      const typename ParamGenerator<T2>::iterator& current2,\n      const ParamGenerator<T3>& g3,\n      const typename ParamGenerator<T3>::iterator& current3,\n      const ParamGenerator<T4>& g4,\n      const typename ParamGenerator<T4>::iterator& current4,\n      const ParamGenerator<T5>& g5,\n      const typename ParamGenerator<T5>::iterator& current5,\n      const ParamGenerator<T6>& g6,\n      const typename ParamGenerator<T6>::iterator& current6,\n      const ParamGenerator<T7>& g7,\n      const typename ParamGenerator<T7>::iterator& current7)\n        : base_(base),\n          begin1_(g1.begin()), end1_(g1.end()), current1_(current1),\n          begin2_(g2.begin()), end2_(g2.end()), current2_(current2),\n          begin3_(g3.begin()), end3_(g3.end()), current3_(current3),\n          begin4_(g4.begin()), end4_(g4.end()), current4_(current4),\n          begin5_(g5.begin()), end5_(g5.end()), current5_(current5),\n          begin6_(g6.begin()), end6_(g6.end()), current6_(current6),\n          begin7_(g7.begin()), end7_(g7.end()), current7_(current7)    {\n      ComputeCurrentValue();\n    }\n    virtual ~Iterator() {}\n\n    virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {\n      return base_;\n    }\n    // Advance should not be called on beyond-of-range iterators\n    // so no component iterators must be beyond end of range, either.\n    virtual void Advance() {\n      assert(!AtEnd());\n      ++current7_;\n      if (current7_ == end7_) {\n        current7_ = begin7_;\n        ++current6_;\n      }\n      if (current6_ == end6_) {\n        current6_ = begin6_;\n        ++current5_;\n      }\n      if (current5_ == end5_) {\n        current5_ = begin5_;\n        ++current4_;\n      }\n      if (current4_ == end4_) {\n        current4_ = begin4_;\n        ++current3_;\n      }\n      if (current3_ == end3_) {\n        current3_ = begin3_;\n        ++current2_;\n      }\n      if (current2_ == end2_) {\n        current2_ = begin2_;\n        ++current1_;\n      }\n      ComputeCurrentValue();\n    }\n    virtual ParamIteratorInterface<ParamType>* Clone() const {\n      return new Iterator(*this);\n    }\n    virtual const ParamType* Current() const { return &current_value_; }\n    virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {\n      // Having the same base generator guarantees that the other\n      // iterator is of the same type and we can downcast.\n      GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())\n          << \"The program attempted to compare iterators \"\n          << \"from different generators.\" << std::endl;\n      const Iterator* typed_other =\n          CheckedDowncastToActualType<const Iterator>(&other);\n      // We must report iterators equal if they both point beyond their\n      // respective ranges. That can happen in a variety of fashions,\n      // so we have to consult AtEnd().\n      return (AtEnd() && typed_other->AtEnd()) ||\n         (\n          current1_ == typed_other->current1_ &&\n          current2_ == typed_other->current2_ &&\n          current3_ == typed_other->current3_ &&\n          current4_ == typed_other->current4_ &&\n          current5_ == typed_other->current5_ &&\n          current6_ == typed_other->current6_ &&\n          current7_ == typed_other->current7_);\n    }\n\n   private:\n    Iterator(const Iterator& other)\n        : base_(other.base_),\n        begin1_(other.begin1_),\n        end1_(other.end1_),\n        current1_(other.current1_),\n        begin2_(other.begin2_),\n        end2_(other.end2_),\n        current2_(other.current2_),\n        begin3_(other.begin3_),\n        end3_(other.end3_),\n        current3_(other.current3_),\n        begin4_(other.begin4_),\n        end4_(other.end4_),\n        current4_(other.current4_),\n        begin5_(other.begin5_),\n        end5_(other.end5_),\n        current5_(other.current5_),\n        begin6_(other.begin6_),\n        end6_(other.end6_),\n        current6_(other.current6_),\n        begin7_(other.begin7_),\n        end7_(other.end7_),\n        current7_(other.current7_) {\n      ComputeCurrentValue();\n    }\n\n    void ComputeCurrentValue() {\n      if (!AtEnd())\n        current_value_ = ParamType(*current1_, *current2_, *current3_,\n            *current4_, *current5_, *current6_, *current7_);\n    }\n    bool AtEnd() const {\n      // We must report iterator past the end of the range when either of the\n      // component iterators has reached the end of its range.\n      return\n          current1_ == end1_ ||\n          current2_ == end2_ ||\n          current3_ == end3_ ||\n          current4_ == end4_ ||\n          current5_ == end5_ ||\n          current6_ == end6_ ||\n          current7_ == end7_;\n    }\n\n    // No implementation - assignment is unsupported.\n    void operator=(const Iterator& other);\n\n    const ParamGeneratorInterface<ParamType>* const base_;\n    // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.\n    // current[i]_ is the actual traversing iterator.\n    const typename ParamGenerator<T1>::iterator begin1_;\n    const typename ParamGenerator<T1>::iterator end1_;\n    typename ParamGenerator<T1>::iterator current1_;\n    const typename ParamGenerator<T2>::iterator begin2_;\n    const typename ParamGenerator<T2>::iterator end2_;\n    typename ParamGenerator<T2>::iterator current2_;\n    const typename ParamGenerator<T3>::iterator begin3_;\n    const typename ParamGenerator<T3>::iterator end3_;\n    typename ParamGenerator<T3>::iterator current3_;\n    const typename ParamGenerator<T4>::iterator begin4_;\n    const typename ParamGenerator<T4>::iterator end4_;\n    typename ParamGenerator<T4>::iterator current4_;\n    const typename ParamGenerator<T5>::iterator begin5_;\n    const typename ParamGenerator<T5>::iterator end5_;\n    typename ParamGenerator<T5>::iterator current5_;\n    const typename ParamGenerator<T6>::iterator begin6_;\n    const typename ParamGenerator<T6>::iterator end6_;\n    typename ParamGenerator<T6>::iterator current6_;\n    const typename ParamGenerator<T7>::iterator begin7_;\n    const typename ParamGenerator<T7>::iterator end7_;\n    typename ParamGenerator<T7>::iterator current7_;\n    ParamType current_value_;\n  };  // class CartesianProductGenerator7::Iterator\n\n  // No implementation - assignment is unsupported.\n  void operator=(const CartesianProductGenerator7& other);\n\n  const ParamGenerator<T1> g1_;\n  const ParamGenerator<T2> g2_;\n  const ParamGenerator<T3> g3_;\n  const ParamGenerator<T4> g4_;\n  const ParamGenerator<T5> g5_;\n  const ParamGenerator<T6> g6_;\n  const ParamGenerator<T7> g7_;\n};  // class CartesianProductGenerator7\n\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8>\nclass CartesianProductGenerator8\n    : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6,\n        T7, T8> > {\n public:\n  typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8> ParamType;\n\n  CartesianProductGenerator8(const ParamGenerator<T1>& g1,\n      const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,\n      const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5,\n      const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7,\n      const ParamGenerator<T8>& g8)\n      : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7),\n          g8_(g8) {}\n  virtual ~CartesianProductGenerator8() {}\n\n  virtual ParamIteratorInterface<ParamType>* Begin() const {\n    return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,\n        g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,\n        g7_.begin(), g8_, g8_.begin());\n  }\n  virtual ParamIteratorInterface<ParamType>* End() const {\n    return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),\n        g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_,\n        g8_.end());\n  }\n\n private:\n  class Iterator : public ParamIteratorInterface<ParamType> {\n   public:\n    Iterator(const ParamGeneratorInterface<ParamType>* base,\n      const ParamGenerator<T1>& g1,\n      const typename ParamGenerator<T1>::iterator& current1,\n      const ParamGenerator<T2>& g2,\n      const typename ParamGenerator<T2>::iterator& current2,\n      const ParamGenerator<T3>& g3,\n      const typename ParamGenerator<T3>::iterator& current3,\n      const ParamGenerator<T4>& g4,\n      const typename ParamGenerator<T4>::iterator& current4,\n      const ParamGenerator<T5>& g5,\n      const typename ParamGenerator<T5>::iterator& current5,\n      const ParamGenerator<T6>& g6,\n      const typename ParamGenerator<T6>::iterator& current6,\n      const ParamGenerator<T7>& g7,\n      const typename ParamGenerator<T7>::iterator& current7,\n      const ParamGenerator<T8>& g8,\n      const typename ParamGenerator<T8>::iterator& current8)\n        : base_(base),\n          begin1_(g1.begin()), end1_(g1.end()), current1_(current1),\n          begin2_(g2.begin()), end2_(g2.end()), current2_(current2),\n          begin3_(g3.begin()), end3_(g3.end()), current3_(current3),\n          begin4_(g4.begin()), end4_(g4.end()), current4_(current4),\n          begin5_(g5.begin()), end5_(g5.end()), current5_(current5),\n          begin6_(g6.begin()), end6_(g6.end()), current6_(current6),\n          begin7_(g7.begin()), end7_(g7.end()), current7_(current7),\n          begin8_(g8.begin()), end8_(g8.end()), current8_(current8)    {\n      ComputeCurrentValue();\n    }\n    virtual ~Iterator() {}\n\n    virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {\n      return base_;\n    }\n    // Advance should not be called on beyond-of-range iterators\n    // so no component iterators must be beyond end of range, either.\n    virtual void Advance() {\n      assert(!AtEnd());\n      ++current8_;\n      if (current8_ == end8_) {\n        current8_ = begin8_;\n        ++current7_;\n      }\n      if (current7_ == end7_) {\n        current7_ = begin7_;\n        ++current6_;\n      }\n      if (current6_ == end6_) {\n        current6_ = begin6_;\n        ++current5_;\n      }\n      if (current5_ == end5_) {\n        current5_ = begin5_;\n        ++current4_;\n      }\n      if (current4_ == end4_) {\n        current4_ = begin4_;\n        ++current3_;\n      }\n      if (current3_ == end3_) {\n        current3_ = begin3_;\n        ++current2_;\n      }\n      if (current2_ == end2_) {\n        current2_ = begin2_;\n        ++current1_;\n      }\n      ComputeCurrentValue();\n    }\n    virtual ParamIteratorInterface<ParamType>* Clone() const {\n      return new Iterator(*this);\n    }\n    virtual const ParamType* Current() const { return &current_value_; }\n    virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {\n      // Having the same base generator guarantees that the other\n      // iterator is of the same type and we can downcast.\n      GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())\n          << \"The program attempted to compare iterators \"\n          << \"from different generators.\" << std::endl;\n      const Iterator* typed_other =\n          CheckedDowncastToActualType<const Iterator>(&other);\n      // We must report iterators equal if they both point beyond their\n      // respective ranges. That can happen in a variety of fashions,\n      // so we have to consult AtEnd().\n      return (AtEnd() && typed_other->AtEnd()) ||\n         (\n          current1_ == typed_other->current1_ &&\n          current2_ == typed_other->current2_ &&\n          current3_ == typed_other->current3_ &&\n          current4_ == typed_other->current4_ &&\n          current5_ == typed_other->current5_ &&\n          current6_ == typed_other->current6_ &&\n          current7_ == typed_other->current7_ &&\n          current8_ == typed_other->current8_);\n    }\n\n   private:\n    Iterator(const Iterator& other)\n        : base_(other.base_),\n        begin1_(other.begin1_),\n        end1_(other.end1_),\n        current1_(other.current1_),\n        begin2_(other.begin2_),\n        end2_(other.end2_),\n        current2_(other.current2_),\n        begin3_(other.begin3_),\n        end3_(other.end3_),\n        current3_(other.current3_),\n        begin4_(other.begin4_),\n        end4_(other.end4_),\n        current4_(other.current4_),\n        begin5_(other.begin5_),\n        end5_(other.end5_),\n        current5_(other.current5_),\n        begin6_(other.begin6_),\n        end6_(other.end6_),\n        current6_(other.current6_),\n        begin7_(other.begin7_),\n        end7_(other.end7_),\n        current7_(other.current7_),\n        begin8_(other.begin8_),\n        end8_(other.end8_),\n        current8_(other.current8_) {\n      ComputeCurrentValue();\n    }\n\n    void ComputeCurrentValue() {\n      if (!AtEnd())\n        current_value_ = ParamType(*current1_, *current2_, *current3_,\n            *current4_, *current5_, *current6_, *current7_, *current8_);\n    }\n    bool AtEnd() const {\n      // We must report iterator past the end of the range when either of the\n      // component iterators has reached the end of its range.\n      return\n          current1_ == end1_ ||\n          current2_ == end2_ ||\n          current3_ == end3_ ||\n          current4_ == end4_ ||\n          current5_ == end5_ ||\n          current6_ == end6_ ||\n          current7_ == end7_ ||\n          current8_ == end8_;\n    }\n\n    // No implementation - assignment is unsupported.\n    void operator=(const Iterator& other);\n\n    const ParamGeneratorInterface<ParamType>* const base_;\n    // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.\n    // current[i]_ is the actual traversing iterator.\n    const typename ParamGenerator<T1>::iterator begin1_;\n    const typename ParamGenerator<T1>::iterator end1_;\n    typename ParamGenerator<T1>::iterator current1_;\n    const typename ParamGenerator<T2>::iterator begin2_;\n    const typename ParamGenerator<T2>::iterator end2_;\n    typename ParamGenerator<T2>::iterator current2_;\n    const typename ParamGenerator<T3>::iterator begin3_;\n    const typename ParamGenerator<T3>::iterator end3_;\n    typename ParamGenerator<T3>::iterator current3_;\n    const typename ParamGenerator<T4>::iterator begin4_;\n    const typename ParamGenerator<T4>::iterator end4_;\n    typename ParamGenerator<T4>::iterator current4_;\n    const typename ParamGenerator<T5>::iterator begin5_;\n    const typename ParamGenerator<T5>::iterator end5_;\n    typename ParamGenerator<T5>::iterator current5_;\n    const typename ParamGenerator<T6>::iterator begin6_;\n    const typename ParamGenerator<T6>::iterator end6_;\n    typename ParamGenerator<T6>::iterator current6_;\n    const typename ParamGenerator<T7>::iterator begin7_;\n    const typename ParamGenerator<T7>::iterator end7_;\n    typename ParamGenerator<T7>::iterator current7_;\n    const typename ParamGenerator<T8>::iterator begin8_;\n    const typename ParamGenerator<T8>::iterator end8_;\n    typename ParamGenerator<T8>::iterator current8_;\n    ParamType current_value_;\n  };  // class CartesianProductGenerator8::Iterator\n\n  // No implementation - assignment is unsupported.\n  void operator=(const CartesianProductGenerator8& other);\n\n  const ParamGenerator<T1> g1_;\n  const ParamGenerator<T2> g2_;\n  const ParamGenerator<T3> g3_;\n  const ParamGenerator<T4> g4_;\n  const ParamGenerator<T5> g5_;\n  const ParamGenerator<T6> g6_;\n  const ParamGenerator<T7> g7_;\n  const ParamGenerator<T8> g8_;\n};  // class CartesianProductGenerator8\n\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9>\nclass CartesianProductGenerator9\n    : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6,\n        T7, T8, T9> > {\n public:\n  typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9> ParamType;\n\n  CartesianProductGenerator9(const ParamGenerator<T1>& g1,\n      const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,\n      const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5,\n      const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7,\n      const ParamGenerator<T8>& g8, const ParamGenerator<T9>& g9)\n      : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),\n          g9_(g9) {}\n  virtual ~CartesianProductGenerator9() {}\n\n  virtual ParamIteratorInterface<ParamType>* Begin() const {\n    return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,\n        g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,\n        g7_.begin(), g8_, g8_.begin(), g9_, g9_.begin());\n  }\n  virtual ParamIteratorInterface<ParamType>* End() const {\n    return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),\n        g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_,\n        g8_.end(), g9_, g9_.end());\n  }\n\n private:\n  class Iterator : public ParamIteratorInterface<ParamType> {\n   public:\n    Iterator(const ParamGeneratorInterface<ParamType>* base,\n      const ParamGenerator<T1>& g1,\n      const typename ParamGenerator<T1>::iterator& current1,\n      const ParamGenerator<T2>& g2,\n      const typename ParamGenerator<T2>::iterator& current2,\n      const ParamGenerator<T3>& g3,\n      const typename ParamGenerator<T3>::iterator& current3,\n      const ParamGenerator<T4>& g4,\n      const typename ParamGenerator<T4>::iterator& current4,\n      const ParamGenerator<T5>& g5,\n      const typename ParamGenerator<T5>::iterator& current5,\n      const ParamGenerator<T6>& g6,\n      const typename ParamGenerator<T6>::iterator& current6,\n      const ParamGenerator<T7>& g7,\n      const typename ParamGenerator<T7>::iterator& current7,\n      const ParamGenerator<T8>& g8,\n      const typename ParamGenerator<T8>::iterator& current8,\n      const ParamGenerator<T9>& g9,\n      const typename ParamGenerator<T9>::iterator& current9)\n        : base_(base),\n          begin1_(g1.begin()), end1_(g1.end()), current1_(current1),\n          begin2_(g2.begin()), end2_(g2.end()), current2_(current2),\n          begin3_(g3.begin()), end3_(g3.end()), current3_(current3),\n          begin4_(g4.begin()), end4_(g4.end()), current4_(current4),\n          begin5_(g5.begin()), end5_(g5.end()), current5_(current5),\n          begin6_(g6.begin()), end6_(g6.end()), current6_(current6),\n          begin7_(g7.begin()), end7_(g7.end()), current7_(current7),\n          begin8_(g8.begin()), end8_(g8.end()), current8_(current8),\n          begin9_(g9.begin()), end9_(g9.end()), current9_(current9)    {\n      ComputeCurrentValue();\n    }\n    virtual ~Iterator() {}\n\n    virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {\n      return base_;\n    }\n    // Advance should not be called on beyond-of-range iterators\n    // so no component iterators must be beyond end of range, either.\n    virtual void Advance() {\n      assert(!AtEnd());\n      ++current9_;\n      if (current9_ == end9_) {\n        current9_ = begin9_;\n        ++current8_;\n      }\n      if (current8_ == end8_) {\n        current8_ = begin8_;\n        ++current7_;\n      }\n      if (current7_ == end7_) {\n        current7_ = begin7_;\n        ++current6_;\n      }\n      if (current6_ == end6_) {\n        current6_ = begin6_;\n        ++current5_;\n      }\n      if (current5_ == end5_) {\n        current5_ = begin5_;\n        ++current4_;\n      }\n      if (current4_ == end4_) {\n        current4_ = begin4_;\n        ++current3_;\n      }\n      if (current3_ == end3_) {\n        current3_ = begin3_;\n        ++current2_;\n      }\n      if (current2_ == end2_) {\n        current2_ = begin2_;\n        ++current1_;\n      }\n      ComputeCurrentValue();\n    }\n    virtual ParamIteratorInterface<ParamType>* Clone() const {\n      return new Iterator(*this);\n    }\n    virtual const ParamType* Current() const { return &current_value_; }\n    virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {\n      // Having the same base generator guarantees that the other\n      // iterator is of the same type and we can downcast.\n      GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())\n          << \"The program attempted to compare iterators \"\n          << \"from different generators.\" << std::endl;\n      const Iterator* typed_other =\n          CheckedDowncastToActualType<const Iterator>(&other);\n      // We must report iterators equal if they both point beyond their\n      // respective ranges. That can happen in a variety of fashions,\n      // so we have to consult AtEnd().\n      return (AtEnd() && typed_other->AtEnd()) ||\n         (\n          current1_ == typed_other->current1_ &&\n          current2_ == typed_other->current2_ &&\n          current3_ == typed_other->current3_ &&\n          current4_ == typed_other->current4_ &&\n          current5_ == typed_other->current5_ &&\n          current6_ == typed_other->current6_ &&\n          current7_ == typed_other->current7_ &&\n          current8_ == typed_other->current8_ &&\n          current9_ == typed_other->current9_);\n    }\n\n   private:\n    Iterator(const Iterator& other)\n        : base_(other.base_),\n        begin1_(other.begin1_),\n        end1_(other.end1_),\n        current1_(other.current1_),\n        begin2_(other.begin2_),\n        end2_(other.end2_),\n        current2_(other.current2_),\n        begin3_(other.begin3_),\n        end3_(other.end3_),\n        current3_(other.current3_),\n        begin4_(other.begin4_),\n        end4_(other.end4_),\n        current4_(other.current4_),\n        begin5_(other.begin5_),\n        end5_(other.end5_),\n        current5_(other.current5_),\n        begin6_(other.begin6_),\n        end6_(other.end6_),\n        current6_(other.current6_),\n        begin7_(other.begin7_),\n        end7_(other.end7_),\n        current7_(other.current7_),\n        begin8_(other.begin8_),\n        end8_(other.end8_),\n        current8_(other.current8_),\n        begin9_(other.begin9_),\n        end9_(other.end9_),\n        current9_(other.current9_) {\n      ComputeCurrentValue();\n    }\n\n    void ComputeCurrentValue() {\n      if (!AtEnd())\n        current_value_ = ParamType(*current1_, *current2_, *current3_,\n            *current4_, *current5_, *current6_, *current7_, *current8_,\n            *current9_);\n    }\n    bool AtEnd() const {\n      // We must report iterator past the end of the range when either of the\n      // component iterators has reached the end of its range.\n      return\n          current1_ == end1_ ||\n          current2_ == end2_ ||\n          current3_ == end3_ ||\n          current4_ == end4_ ||\n          current5_ == end5_ ||\n          current6_ == end6_ ||\n          current7_ == end7_ ||\n          current8_ == end8_ ||\n          current9_ == end9_;\n    }\n\n    // No implementation - assignment is unsupported.\n    void operator=(const Iterator& other);\n\n    const ParamGeneratorInterface<ParamType>* const base_;\n    // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.\n    // current[i]_ is the actual traversing iterator.\n    const typename ParamGenerator<T1>::iterator begin1_;\n    const typename ParamGenerator<T1>::iterator end1_;\n    typename ParamGenerator<T1>::iterator current1_;\n    const typename ParamGenerator<T2>::iterator begin2_;\n    const typename ParamGenerator<T2>::iterator end2_;\n    typename ParamGenerator<T2>::iterator current2_;\n    const typename ParamGenerator<T3>::iterator begin3_;\n    const typename ParamGenerator<T3>::iterator end3_;\n    typename ParamGenerator<T3>::iterator current3_;\n    const typename ParamGenerator<T4>::iterator begin4_;\n    const typename ParamGenerator<T4>::iterator end4_;\n    typename ParamGenerator<T4>::iterator current4_;\n    const typename ParamGenerator<T5>::iterator begin5_;\n    const typename ParamGenerator<T5>::iterator end5_;\n    typename ParamGenerator<T5>::iterator current5_;\n    const typename ParamGenerator<T6>::iterator begin6_;\n    const typename ParamGenerator<T6>::iterator end6_;\n    typename ParamGenerator<T6>::iterator current6_;\n    const typename ParamGenerator<T7>::iterator begin7_;\n    const typename ParamGenerator<T7>::iterator end7_;\n    typename ParamGenerator<T7>::iterator current7_;\n    const typename ParamGenerator<T8>::iterator begin8_;\n    const typename ParamGenerator<T8>::iterator end8_;\n    typename ParamGenerator<T8>::iterator current8_;\n    const typename ParamGenerator<T9>::iterator begin9_;\n    const typename ParamGenerator<T9>::iterator end9_;\n    typename ParamGenerator<T9>::iterator current9_;\n    ParamType current_value_;\n  };  // class CartesianProductGenerator9::Iterator\n\n  // No implementation - assignment is unsupported.\n  void operator=(const CartesianProductGenerator9& other);\n\n  const ParamGenerator<T1> g1_;\n  const ParamGenerator<T2> g2_;\n  const ParamGenerator<T3> g3_;\n  const ParamGenerator<T4> g4_;\n  const ParamGenerator<T5> g5_;\n  const ParamGenerator<T6> g6_;\n  const ParamGenerator<T7> g7_;\n  const ParamGenerator<T8> g8_;\n  const ParamGenerator<T9> g9_;\n};  // class CartesianProductGenerator9\n\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10>\nclass CartesianProductGenerator10\n    : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6,\n        T7, T8, T9, T10> > {\n public:\n  typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> ParamType;\n\n  CartesianProductGenerator10(const ParamGenerator<T1>& g1,\n      const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,\n      const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5,\n      const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7,\n      const ParamGenerator<T8>& g8, const ParamGenerator<T9>& g9,\n      const ParamGenerator<T10>& g10)\n      : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),\n          g9_(g9), g10_(g10) {}\n  virtual ~CartesianProductGenerator10() {}\n\n  virtual ParamIteratorInterface<ParamType>* Begin() const {\n    return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,\n        g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,\n        g7_.begin(), g8_, g8_.begin(), g9_, g9_.begin(), g10_, g10_.begin());\n  }\n  virtual ParamIteratorInterface<ParamType>* End() const {\n    return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),\n        g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_,\n        g8_.end(), g9_, g9_.end(), g10_, g10_.end());\n  }\n\n private:\n  class Iterator : public ParamIteratorInterface<ParamType> {\n   public:\n    Iterator(const ParamGeneratorInterface<ParamType>* base,\n      const ParamGenerator<T1>& g1,\n      const typename ParamGenerator<T1>::iterator& current1,\n      const ParamGenerator<T2>& g2,\n      const typename ParamGenerator<T2>::iterator& current2,\n      const ParamGenerator<T3>& g3,\n      const typename ParamGenerator<T3>::iterator& current3,\n      const ParamGenerator<T4>& g4,\n      const typename ParamGenerator<T4>::iterator& current4,\n      const ParamGenerator<T5>& g5,\n      const typename ParamGenerator<T5>::iterator& current5,\n      const ParamGenerator<T6>& g6,\n      const typename ParamGenerator<T6>::iterator& current6,\n      const ParamGenerator<T7>& g7,\n      const typename ParamGenerator<T7>::iterator& current7,\n      const ParamGenerator<T8>& g8,\n      const typename ParamGenerator<T8>::iterator& current8,\n      const ParamGenerator<T9>& g9,\n      const typename ParamGenerator<T9>::iterator& current9,\n      const ParamGenerator<T10>& g10,\n      const typename ParamGenerator<T10>::iterator& current10)\n        : base_(base),\n          begin1_(g1.begin()), end1_(g1.end()), current1_(current1),\n          begin2_(g2.begin()), end2_(g2.end()), current2_(current2),\n          begin3_(g3.begin()), end3_(g3.end()), current3_(current3),\n          begin4_(g4.begin()), end4_(g4.end()), current4_(current4),\n          begin5_(g5.begin()), end5_(g5.end()), current5_(current5),\n          begin6_(g6.begin()), end6_(g6.end()), current6_(current6),\n          begin7_(g7.begin()), end7_(g7.end()), current7_(current7),\n          begin8_(g8.begin()), end8_(g8.end()), current8_(current8),\n          begin9_(g9.begin()), end9_(g9.end()), current9_(current9),\n          begin10_(g10.begin()), end10_(g10.end()), current10_(current10)    {\n      ComputeCurrentValue();\n    }\n    virtual ~Iterator() {}\n\n    virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {\n      return base_;\n    }\n    // Advance should not be called on beyond-of-range iterators\n    // so no component iterators must be beyond end of range, either.\n    virtual void Advance() {\n      assert(!AtEnd());\n      ++current10_;\n      if (current10_ == end10_) {\n        current10_ = begin10_;\n        ++current9_;\n      }\n      if (current9_ == end9_) {\n        current9_ = begin9_;\n        ++current8_;\n      }\n      if (current8_ == end8_) {\n        current8_ = begin8_;\n        ++current7_;\n      }\n      if (current7_ == end7_) {\n        current7_ = begin7_;\n        ++current6_;\n      }\n      if (current6_ == end6_) {\n        current6_ = begin6_;\n        ++current5_;\n      }\n      if (current5_ == end5_) {\n        current5_ = begin5_;\n        ++current4_;\n      }\n      if (current4_ == end4_) {\n        current4_ = begin4_;\n        ++current3_;\n      }\n      if (current3_ == end3_) {\n        current3_ = begin3_;\n        ++current2_;\n      }\n      if (current2_ == end2_) {\n        current2_ = begin2_;\n        ++current1_;\n      }\n      ComputeCurrentValue();\n    }\n    virtual ParamIteratorInterface<ParamType>* Clone() const {\n      return new Iterator(*this);\n    }\n    virtual const ParamType* Current() const { return &current_value_; }\n    virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {\n      // Having the same base generator guarantees that the other\n      // iterator is of the same type and we can downcast.\n      GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())\n          << \"The program attempted to compare iterators \"\n          << \"from different generators.\" << std::endl;\n      const Iterator* typed_other =\n          CheckedDowncastToActualType<const Iterator>(&other);\n      // We must report iterators equal if they both point beyond their\n      // respective ranges. That can happen in a variety of fashions,\n      // so we have to consult AtEnd().\n      return (AtEnd() && typed_other->AtEnd()) ||\n         (\n          current1_ == typed_other->current1_ &&\n          current2_ == typed_other->current2_ &&\n          current3_ == typed_other->current3_ &&\n          current4_ == typed_other->current4_ &&\n          current5_ == typed_other->current5_ &&\n          current6_ == typed_other->current6_ &&\n          current7_ == typed_other->current7_ &&\n          current8_ == typed_other->current8_ &&\n          current9_ == typed_other->current9_ &&\n          current10_ == typed_other->current10_);\n    }\n\n   private:\n    Iterator(const Iterator& other)\n        : base_(other.base_),\n        begin1_(other.begin1_),\n        end1_(other.end1_),\n        current1_(other.current1_),\n        begin2_(other.begin2_),\n        end2_(other.end2_),\n        current2_(other.current2_),\n        begin3_(other.begin3_),\n        end3_(other.end3_),\n        current3_(other.current3_),\n        begin4_(other.begin4_),\n        end4_(other.end4_),\n        current4_(other.current4_),\n        begin5_(other.begin5_),\n        end5_(other.end5_),\n        current5_(other.current5_),\n        begin6_(other.begin6_),\n        end6_(other.end6_),\n        current6_(other.current6_),\n        begin7_(other.begin7_),\n        end7_(other.end7_),\n        current7_(other.current7_),\n        begin8_(other.begin8_),\n        end8_(other.end8_),\n        current8_(other.current8_),\n        begin9_(other.begin9_),\n        end9_(other.end9_),\n        current9_(other.current9_),\n        begin10_(other.begin10_),\n        end10_(other.end10_),\n        current10_(other.current10_) {\n      ComputeCurrentValue();\n    }\n\n    void ComputeCurrentValue() {\n      if (!AtEnd())\n        current_value_ = ParamType(*current1_, *current2_, *current3_,\n            *current4_, *current5_, *current6_, *current7_, *current8_,\n            *current9_, *current10_);\n    }\n    bool AtEnd() const {\n      // We must report iterator past the end of the range when either of the\n      // component iterators has reached the end of its range.\n      return\n          current1_ == end1_ ||\n          current2_ == end2_ ||\n          current3_ == end3_ ||\n          current4_ == end4_ ||\n          current5_ == end5_ ||\n          current6_ == end6_ ||\n          current7_ == end7_ ||\n          current8_ == end8_ ||\n          current9_ == end9_ ||\n          current10_ == end10_;\n    }\n\n    // No implementation - assignment is unsupported.\n    void operator=(const Iterator& other);\n\n    const ParamGeneratorInterface<ParamType>* const base_;\n    // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.\n    // current[i]_ is the actual traversing iterator.\n    const typename ParamGenerator<T1>::iterator begin1_;\n    const typename ParamGenerator<T1>::iterator end1_;\n    typename ParamGenerator<T1>::iterator current1_;\n    const typename ParamGenerator<T2>::iterator begin2_;\n    const typename ParamGenerator<T2>::iterator end2_;\n    typename ParamGenerator<T2>::iterator current2_;\n    const typename ParamGenerator<T3>::iterator begin3_;\n    const typename ParamGenerator<T3>::iterator end3_;\n    typename ParamGenerator<T3>::iterator current3_;\n    const typename ParamGenerator<T4>::iterator begin4_;\n    const typename ParamGenerator<T4>::iterator end4_;\n    typename ParamGenerator<T4>::iterator current4_;\n    const typename ParamGenerator<T5>::iterator begin5_;\n    const typename ParamGenerator<T5>::iterator end5_;\n    typename ParamGenerator<T5>::iterator current5_;\n    const typename ParamGenerator<T6>::iterator begin6_;\n    const typename ParamGenerator<T6>::iterator end6_;\n    typename ParamGenerator<T6>::iterator current6_;\n    const typename ParamGenerator<T7>::iterator begin7_;\n    const typename ParamGenerator<T7>::iterator end7_;\n    typename ParamGenerator<T7>::iterator current7_;\n    const typename ParamGenerator<T8>::iterator begin8_;\n    const typename ParamGenerator<T8>::iterator end8_;\n    typename ParamGenerator<T8>::iterator current8_;\n    const typename ParamGenerator<T9>::iterator begin9_;\n    const typename ParamGenerator<T9>::iterator end9_;\n    typename ParamGenerator<T9>::iterator current9_;\n    const typename ParamGenerator<T10>::iterator begin10_;\n    const typename ParamGenerator<T10>::iterator end10_;\n    typename ParamGenerator<T10>::iterator current10_;\n    ParamType current_value_;\n  };  // class CartesianProductGenerator10::Iterator\n\n  // No implementation - assignment is unsupported.\n  void operator=(const CartesianProductGenerator10& other);\n\n  const ParamGenerator<T1> g1_;\n  const ParamGenerator<T2> g2_;\n  const ParamGenerator<T3> g3_;\n  const ParamGenerator<T4> g4_;\n  const ParamGenerator<T5> g5_;\n  const ParamGenerator<T6> g6_;\n  const ParamGenerator<T7> g7_;\n  const ParamGenerator<T8> g8_;\n  const ParamGenerator<T9> g9_;\n  const ParamGenerator<T10> g10_;\n};  // class CartesianProductGenerator10\n\n\n// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.\n//\n// Helper classes providing Combine() with polymorphic features. They allow\n// casting CartesianProductGeneratorN<T> to ParamGenerator<U> if T is\n// convertible to U.\n//\ntemplate <class Generator1, class Generator2>\nclass CartesianProductHolder2 {\n public:\nCartesianProductHolder2(const Generator1& g1, const Generator2& g2)\n      : g1_(g1), g2_(g2) {}\n  template <typename T1, typename T2>\n  operator ParamGenerator< ::std::tr1::tuple<T1, T2> >() const {\n    return ParamGenerator< ::std::tr1::tuple<T1, T2> >(\n        new CartesianProductGenerator2<T1, T2>(\n        static_cast<ParamGenerator<T1> >(g1_),\n        static_cast<ParamGenerator<T2> >(g2_)));\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const CartesianProductHolder2& other);\n\n  const Generator1 g1_;\n  const Generator2 g2_;\n};  // class CartesianProductHolder2\n\ntemplate <class Generator1, class Generator2, class Generator3>\nclass CartesianProductHolder3 {\n public:\nCartesianProductHolder3(const Generator1& g1, const Generator2& g2,\n    const Generator3& g3)\n      : g1_(g1), g2_(g2), g3_(g3) {}\n  template <typename T1, typename T2, typename T3>\n  operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3> >() const {\n    return ParamGenerator< ::std::tr1::tuple<T1, T2, T3> >(\n        new CartesianProductGenerator3<T1, T2, T3>(\n        static_cast<ParamGenerator<T1> >(g1_),\n        static_cast<ParamGenerator<T2> >(g2_),\n        static_cast<ParamGenerator<T3> >(g3_)));\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const CartesianProductHolder3& other);\n\n  const Generator1 g1_;\n  const Generator2 g2_;\n  const Generator3 g3_;\n};  // class CartesianProductHolder3\n\ntemplate <class Generator1, class Generator2, class Generator3,\n    class Generator4>\nclass CartesianProductHolder4 {\n public:\nCartesianProductHolder4(const Generator1& g1, const Generator2& g2,\n    const Generator3& g3, const Generator4& g4)\n      : g1_(g1), g2_(g2), g3_(g3), g4_(g4) {}\n  template <typename T1, typename T2, typename T3, typename T4>\n  operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4> >() const {\n    return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4> >(\n        new CartesianProductGenerator4<T1, T2, T3, T4>(\n        static_cast<ParamGenerator<T1> >(g1_),\n        static_cast<ParamGenerator<T2> >(g2_),\n        static_cast<ParamGenerator<T3> >(g3_),\n        static_cast<ParamGenerator<T4> >(g4_)));\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const CartesianProductHolder4& other);\n\n  const Generator1 g1_;\n  const Generator2 g2_;\n  const Generator3 g3_;\n  const Generator4 g4_;\n};  // class CartesianProductHolder4\n\ntemplate <class Generator1, class Generator2, class Generator3,\n    class Generator4, class Generator5>\nclass CartesianProductHolder5 {\n public:\nCartesianProductHolder5(const Generator1& g1, const Generator2& g2,\n    const Generator3& g3, const Generator4& g4, const Generator5& g5)\n      : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5) {}\n  template <typename T1, typename T2, typename T3, typename T4, typename T5>\n  operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5> >() const {\n    return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5> >(\n        new CartesianProductGenerator5<T1, T2, T3, T4, T5>(\n        static_cast<ParamGenerator<T1> >(g1_),\n        static_cast<ParamGenerator<T2> >(g2_),\n        static_cast<ParamGenerator<T3> >(g3_),\n        static_cast<ParamGenerator<T4> >(g4_),\n        static_cast<ParamGenerator<T5> >(g5_)));\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const CartesianProductHolder5& other);\n\n  const Generator1 g1_;\n  const Generator2 g2_;\n  const Generator3 g3_;\n  const Generator4 g4_;\n  const Generator5 g5_;\n};  // class CartesianProductHolder5\n\ntemplate <class Generator1, class Generator2, class Generator3,\n    class Generator4, class Generator5, class Generator6>\nclass CartesianProductHolder6 {\n public:\nCartesianProductHolder6(const Generator1& g1, const Generator2& g2,\n    const Generator3& g3, const Generator4& g4, const Generator5& g5,\n    const Generator6& g6)\n      : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6) {}\n  template <typename T1, typename T2, typename T3, typename T4, typename T5,\n      typename T6>\n  operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6> >() const {\n    return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6> >(\n        new CartesianProductGenerator6<T1, T2, T3, T4, T5, T6>(\n        static_cast<ParamGenerator<T1> >(g1_),\n        static_cast<ParamGenerator<T2> >(g2_),\n        static_cast<ParamGenerator<T3> >(g3_),\n        static_cast<ParamGenerator<T4> >(g4_),\n        static_cast<ParamGenerator<T5> >(g5_),\n        static_cast<ParamGenerator<T6> >(g6_)));\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const CartesianProductHolder6& other);\n\n  const Generator1 g1_;\n  const Generator2 g2_;\n  const Generator3 g3_;\n  const Generator4 g4_;\n  const Generator5 g5_;\n  const Generator6 g6_;\n};  // class CartesianProductHolder6\n\ntemplate <class Generator1, class Generator2, class Generator3,\n    class Generator4, class Generator5, class Generator6, class Generator7>\nclass CartesianProductHolder7 {\n public:\nCartesianProductHolder7(const Generator1& g1, const Generator2& g2,\n    const Generator3& g3, const Generator4& g4, const Generator5& g5,\n    const Generator6& g6, const Generator7& g7)\n      : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7) {}\n  template <typename T1, typename T2, typename T3, typename T4, typename T5,\n      typename T6, typename T7>\n  operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6,\n      T7> >() const {\n    return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7> >(\n        new CartesianProductGenerator7<T1, T2, T3, T4, T5, T6, T7>(\n        static_cast<ParamGenerator<T1> >(g1_),\n        static_cast<ParamGenerator<T2> >(g2_),\n        static_cast<ParamGenerator<T3> >(g3_),\n        static_cast<ParamGenerator<T4> >(g4_),\n        static_cast<ParamGenerator<T5> >(g5_),\n        static_cast<ParamGenerator<T6> >(g6_),\n        static_cast<ParamGenerator<T7> >(g7_)));\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const CartesianProductHolder7& other);\n\n  const Generator1 g1_;\n  const Generator2 g2_;\n  const Generator3 g3_;\n  const Generator4 g4_;\n  const Generator5 g5_;\n  const Generator6 g6_;\n  const Generator7 g7_;\n};  // class CartesianProductHolder7\n\ntemplate <class Generator1, class Generator2, class Generator3,\n    class Generator4, class Generator5, class Generator6, class Generator7,\n    class Generator8>\nclass CartesianProductHolder8 {\n public:\nCartesianProductHolder8(const Generator1& g1, const Generator2& g2,\n    const Generator3& g3, const Generator4& g4, const Generator5& g5,\n    const Generator6& g6, const Generator7& g7, const Generator8& g8)\n      : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7),\n          g8_(g8) {}\n  template <typename T1, typename T2, typename T3, typename T4, typename T5,\n      typename T6, typename T7, typename T8>\n  operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7,\n      T8> >() const {\n    return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8> >(\n        new CartesianProductGenerator8<T1, T2, T3, T4, T5, T6, T7, T8>(\n        static_cast<ParamGenerator<T1> >(g1_),\n        static_cast<ParamGenerator<T2> >(g2_),\n        static_cast<ParamGenerator<T3> >(g3_),\n        static_cast<ParamGenerator<T4> >(g4_),\n        static_cast<ParamGenerator<T5> >(g5_),\n        static_cast<ParamGenerator<T6> >(g6_),\n        static_cast<ParamGenerator<T7> >(g7_),\n        static_cast<ParamGenerator<T8> >(g8_)));\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const CartesianProductHolder8& other);\n\n  const Generator1 g1_;\n  const Generator2 g2_;\n  const Generator3 g3_;\n  const Generator4 g4_;\n  const Generator5 g5_;\n  const Generator6 g6_;\n  const Generator7 g7_;\n  const Generator8 g8_;\n};  // class CartesianProductHolder8\n\ntemplate <class Generator1, class Generator2, class Generator3,\n    class Generator4, class Generator5, class Generator6, class Generator7,\n    class Generator8, class Generator9>\nclass CartesianProductHolder9 {\n public:\nCartesianProductHolder9(const Generator1& g1, const Generator2& g2,\n    const Generator3& g3, const Generator4& g4, const Generator5& g5,\n    const Generator6& g6, const Generator7& g7, const Generator8& g8,\n    const Generator9& g9)\n      : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),\n          g9_(g9) {}\n  template <typename T1, typename T2, typename T3, typename T4, typename T5,\n      typename T6, typename T7, typename T8, typename T9>\n  operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8,\n      T9> >() const {\n    return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8,\n        T9> >(\n        new CartesianProductGenerator9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(\n        static_cast<ParamGenerator<T1> >(g1_),\n        static_cast<ParamGenerator<T2> >(g2_),\n        static_cast<ParamGenerator<T3> >(g3_),\n        static_cast<ParamGenerator<T4> >(g4_),\n        static_cast<ParamGenerator<T5> >(g5_),\n        static_cast<ParamGenerator<T6> >(g6_),\n        static_cast<ParamGenerator<T7> >(g7_),\n        static_cast<ParamGenerator<T8> >(g8_),\n        static_cast<ParamGenerator<T9> >(g9_)));\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const CartesianProductHolder9& other);\n\n  const Generator1 g1_;\n  const Generator2 g2_;\n  const Generator3 g3_;\n  const Generator4 g4_;\n  const Generator5 g5_;\n  const Generator6 g6_;\n  const Generator7 g7_;\n  const Generator8 g8_;\n  const Generator9 g9_;\n};  // class CartesianProductHolder9\n\ntemplate <class Generator1, class Generator2, class Generator3,\n    class Generator4, class Generator5, class Generator6, class Generator7,\n    class Generator8, class Generator9, class Generator10>\nclass CartesianProductHolder10 {\n public:\nCartesianProductHolder10(const Generator1& g1, const Generator2& g2,\n    const Generator3& g3, const Generator4& g4, const Generator5& g5,\n    const Generator6& g6, const Generator7& g7, const Generator8& g8,\n    const Generator9& g9, const Generator10& g10)\n      : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),\n          g9_(g9), g10_(g10) {}\n  template <typename T1, typename T2, typename T3, typename T4, typename T5,\n      typename T6, typename T7, typename T8, typename T9, typename T10>\n  operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8,\n      T9, T10> >() const {\n    return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8,\n        T9, T10> >(\n        new CartesianProductGenerator10<T1, T2, T3, T4, T5, T6, T7, T8, T9,\n            T10>(\n        static_cast<ParamGenerator<T1> >(g1_),\n        static_cast<ParamGenerator<T2> >(g2_),\n        static_cast<ParamGenerator<T3> >(g3_),\n        static_cast<ParamGenerator<T4> >(g4_),\n        static_cast<ParamGenerator<T5> >(g5_),\n        static_cast<ParamGenerator<T6> >(g6_),\n        static_cast<ParamGenerator<T7> >(g7_),\n        static_cast<ParamGenerator<T8> >(g8_),\n        static_cast<ParamGenerator<T9> >(g9_),\n        static_cast<ParamGenerator<T10> >(g10_)));\n  }\n\n private:\n  // No implementation - assignment is unsupported.\n  void operator=(const CartesianProductHolder10& other);\n\n  const Generator1 g1_;\n  const Generator2 g2_;\n  const Generator3 g3_;\n  const Generator4 g4_;\n  const Generator5 g5_;\n  const Generator6 g6_;\n  const Generator7 g7_;\n  const Generator8 g8_;\n  const Generator9 g9_;\n  const Generator10 g10_;\n};  // class CartesianProductHolder10\n\n# endif  // GTEST_HAS_COMBINE\n\n}  // namespace internal\n}  // namespace testing\n\n#endif  //  GTEST_HAS_PARAM_TEST\n\n#endif  // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_\n\n#if GTEST_HAS_PARAM_TEST\n\nnamespace testing {\n\n// Functions producing parameter generators.\n//\n// Google Test uses these generators to produce parameters for value-\n// parameterized tests. When a parameterized test case is instantiated\n// with a particular generator, Google Test creates and runs tests\n// for each element in the sequence produced by the generator.\n//\n// In the following sample, tests from test case FooTest are instantiated\n// each three times with parameter values 3, 5, and 8:\n//\n// class FooTest : public TestWithParam<int> { ... };\n//\n// TEST_P(FooTest, TestThis) {\n// }\n// TEST_P(FooTest, TestThat) {\n// }\n// INSTANTIATE_TEST_CASE_P(TestSequence, FooTest, Values(3, 5, 8));\n//\n\n// Range() returns generators providing sequences of values in a range.\n//\n// Synopsis:\n// Range(start, end)\n//   - returns a generator producing a sequence of values {start, start+1,\n//     start+2, ..., }.\n// Range(start, end, step)\n//   - returns a generator producing a sequence of values {start, start+step,\n//     start+step+step, ..., }.\n// Notes:\n//   * The generated sequences never include end. For example, Range(1, 5)\n//     returns a generator producing a sequence {1, 2, 3, 4}. Range(1, 9, 2)\n//     returns a generator producing {1, 3, 5, 7}.\n//   * start and end must have the same type. That type may be any integral or\n//     floating-point type or a user defined type satisfying these conditions:\n//     * It must be assignable (have operator=() defined).\n//     * It must have operator+() (operator+(int-compatible type) for\n//       two-operand version).\n//     * It must have operator<() defined.\n//     Elements in the resulting sequences will also have that type.\n//   * Condition start < end must be satisfied in order for resulting sequences\n//     to contain any elements.\n//\ntemplate <typename T, typename IncrementT>\ninternal::ParamGenerator<T> Range(T start, T end, IncrementT step) {\n  return internal::ParamGenerator<T>(\n      new internal::RangeGenerator<T, IncrementT>(start, end, step));\n}\n\ntemplate <typename T>\ninternal::ParamGenerator<T> Range(T start, T end) {\n  return Range(start, end, 1);\n}\n\n// ValuesIn() function allows generation of tests with parameters coming from\n// a container.\n//\n// Synopsis:\n// ValuesIn(const T (&array)[N])\n//   - returns a generator producing sequences with elements from\n//     a C-style array.\n// ValuesIn(const Container& container)\n//   - returns a generator producing sequences with elements from\n//     an STL-style container.\n// ValuesIn(Iterator begin, Iterator end)\n//   - returns a generator producing sequences with elements from\n//     a range [begin, end) defined by a pair of STL-style iterators. These\n//     iterators can also be plain C pointers.\n//\n// Please note that ValuesIn copies the values from the containers\n// passed in and keeps them to generate tests in RUN_ALL_TESTS().\n//\n// Examples:\n//\n// This instantiates tests from test case StringTest\n// each with C-string values of \"foo\", \"bar\", and \"baz\":\n//\n// const char* strings[] = {\"foo\", \"bar\", \"baz\"};\n// INSTANTIATE_TEST_CASE_P(StringSequence, SrtingTest, ValuesIn(strings));\n//\n// This instantiates tests from test case StlStringTest\n// each with STL strings with values \"a\" and \"b\":\n//\n// ::std::vector< ::std::string> GetParameterStrings() {\n//   ::std::vector< ::std::string> v;\n//   v.push_back(\"a\");\n//   v.push_back(\"b\");\n//   return v;\n// }\n//\n// INSTANTIATE_TEST_CASE_P(CharSequence,\n//                         StlStringTest,\n//                         ValuesIn(GetParameterStrings()));\n//\n//\n// This will also instantiate tests from CharTest\n// each with parameter values 'a' and 'b':\n//\n// ::std::list<char> GetParameterChars() {\n//   ::std::list<char> list;\n//   list.push_back('a');\n//   list.push_back('b');\n//   return list;\n// }\n// ::std::list<char> l = GetParameterChars();\n// INSTANTIATE_TEST_CASE_P(CharSequence2,\n//                         CharTest,\n//                         ValuesIn(l.begin(), l.end()));\n//\ntemplate <typename ForwardIterator>\ninternal::ParamGenerator<\n  typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type>\nValuesIn(ForwardIterator begin, ForwardIterator end) {\n  typedef typename ::testing::internal::IteratorTraits<ForwardIterator>\n      ::value_type ParamType;\n  return internal::ParamGenerator<ParamType>(\n      new internal::ValuesInIteratorRangeGenerator<ParamType>(begin, end));\n}\n\ntemplate <typename T, size_t N>\ninternal::ParamGenerator<T> ValuesIn(const T (&array)[N]) {\n  return ValuesIn(array, array + N);\n}\n\ntemplate <class Container>\ninternal::ParamGenerator<typename Container::value_type> ValuesIn(\n    const Container& container) {\n  return ValuesIn(container.begin(), container.end());\n}\n\n// Values() allows generating tests from explicitly specified list of\n// parameters.\n//\n// Synopsis:\n// Values(T v1, T v2, ..., T vN)\n//   - returns a generator producing sequences with elements v1, v2, ..., vN.\n//\n// For example, this instantiates tests from test case BarTest each\n// with values \"one\", \"two\", and \"three\":\n//\n// INSTANTIATE_TEST_CASE_P(NumSequence, BarTest, Values(\"one\", \"two\", \"three\"));\n//\n// This instantiates tests from test case BazTest each with values 1, 2, 3.5.\n// The exact type of values will depend on the type of parameter in BazTest.\n//\n// INSTANTIATE_TEST_CASE_P(FloatingNumbers, BazTest, Values(1, 2, 3.5));\n//\n// Currently, Values() supports from 1 to 50 parameters.\n//\ntemplate <typename T1>\ninternal::ValueArray1<T1> Values(T1 v1) {\n  return internal::ValueArray1<T1>(v1);\n}\n\ntemplate <typename T1, typename T2>\ninternal::ValueArray2<T1, T2> Values(T1 v1, T2 v2) {\n  return internal::ValueArray2<T1, T2>(v1, v2);\n}\n\ntemplate <typename T1, typename T2, typename T3>\ninternal::ValueArray3<T1, T2, T3> Values(T1 v1, T2 v2, T3 v3) {\n  return internal::ValueArray3<T1, T2, T3>(v1, v2, v3);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4>\ninternal::ValueArray4<T1, T2, T3, T4> Values(T1 v1, T2 v2, T3 v3, T4 v4) {\n  return internal::ValueArray4<T1, T2, T3, T4>(v1, v2, v3, v4);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5>\ninternal::ValueArray5<T1, T2, T3, T4, T5> Values(T1 v1, T2 v2, T3 v3, T4 v4,\n    T5 v5) {\n  return internal::ValueArray5<T1, T2, T3, T4, T5>(v1, v2, v3, v4, v5);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6>\ninternal::ValueArray6<T1, T2, T3, T4, T5, T6> Values(T1 v1, T2 v2, T3 v3,\n    T4 v4, T5 v5, T6 v6) {\n  return internal::ValueArray6<T1, T2, T3, T4, T5, T6>(v1, v2, v3, v4, v5, v6);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7>\ninternal::ValueArray7<T1, T2, T3, T4, T5, T6, T7> Values(T1 v1, T2 v2, T3 v3,\n    T4 v4, T5 v5, T6 v6, T7 v7) {\n  return internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7>(v1, v2, v3, v4, v5,\n      v6, v7);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8>\ninternal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8> Values(T1 v1, T2 v2,\n    T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8) {\n  return internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8>(v1, v2, v3, v4,\n      v5, v6, v7, v8);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9>\ninternal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9> Values(T1 v1, T2 v2,\n    T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9) {\n  return internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(v1, v2, v3,\n      v4, v5, v6, v7, v8, v9);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10>\ninternal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Values(T1 v1,\n    T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10) {\n  return internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(v1,\n      v2, v3, v4, v5, v6, v7, v8, v9, v10);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11>\ninternal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10,\n    T11> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n    T10 v10, T11 v11) {\n  return internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10,\n      T11>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12>\ninternal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n    T12> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n    T10 v10, T11 v11, T12 v12) {\n  return internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13>\ninternal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,\n    T13> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n    T10 v10, T11 v11, T12 v12, T13 v13) {\n  return internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12, T13>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14>\ninternal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n    T14> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n    T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) {\n  return internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12, T13, T14>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13,\n      v14);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15>\ninternal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n    T14, T15> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8,\n    T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) {\n  return internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12, T13, T14, T15>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,\n      v13, v14, v15);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16>\ninternal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n    T14, T15, T16> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,\n    T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,\n    T16 v16) {\n  return internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12, T13, T14, T15, T16>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11,\n      v12, v13, v14, v15, v16);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17>\ninternal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n    T14, T15, T16, T17> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,\n    T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,\n    T16 v16, T17 v17) {\n  return internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12, T13, T14, T15, T16, T17>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10,\n      v11, v12, v13, v14, v15, v16, v17);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18>\ninternal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n    T14, T15, T16, T17, T18> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6,\n    T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,\n    T16 v16, T17 v17, T18 v18) {\n  return internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12, T13, T14, T15, T16, T17, T18>(v1, v2, v3, v4, v5, v6, v7, v8, v9,\n      v10, v11, v12, v13, v14, v15, v16, v17, v18);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19>\ninternal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n    T14, T15, T16, T17, T18, T19> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5,\n    T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14,\n    T15 v15, T16 v16, T17 v17, T18 v18, T19 v19) {\n  return internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12, T13, T14, T15, T16, T17, T18, T19>(v1, v2, v3, v4, v5, v6, v7, v8,\n      v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20>\ninternal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n    T14, T15, T16, T17, T18, T19, T20> Values(T1 v1, T2 v2, T3 v3, T4 v4,\n    T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,\n    T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20) {\n  return internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12, T13, T14, T15, T16, T17, T18, T19, T20>(v1, v2, v3, v4, v5, v6, v7,\n      v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21>\ninternal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n    T14, T15, T16, T17, T18, T19, T20, T21> Values(T1 v1, T2 v2, T3 v3, T4 v4,\n    T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,\n    T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21) {\n  return internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>(v1, v2, v3, v4, v5, v6,\n      v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22>\ninternal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n    T14, T15, T16, T17, T18, T19, T20, T21, T22> Values(T1 v1, T2 v2, T3 v3,\n    T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,\n    T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,\n    T21 v21, T22 v22) {\n  return internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>(v1, v2, v3, v4,\n      v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,\n      v20, v21, v22);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23>\ninternal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> Values(T1 v1, T2 v2,\n    T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,\n    T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,\n    T21 v21, T22 v22, T23 v23) {\n  return internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23>(v1, v2, v3,\n      v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,\n      v20, v21, v22, v23);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24>\ninternal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> Values(T1 v1, T2 v2,\n    T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,\n    T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,\n    T21 v21, T22 v22, T23 v23, T24 v24) {\n  return internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24>(v1, v2,\n      v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18,\n      v19, v20, v21, v22, v23, v24);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25>\ninternal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Values(T1 v1,\n    T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11,\n    T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19,\n    T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25) {\n  return internal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25>(v1,\n      v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17,\n      v18, v19, v20, v21, v22, v23, v24, v25);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26>\ninternal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,\n    T26> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n    T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n    T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,\n    T26 v26) {\n  return internal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,\n      T26>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15,\n      v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27>\ninternal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,\n    T27> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n    T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n    T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,\n    T26 v26, T27 v27) {\n  return internal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,\n      T26, T27>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14,\n      v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28>\ninternal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,\n    T28> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n    T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n    T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,\n    T26 v26, T27 v27, T28 v28) {\n  return internal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,\n      T26, T27, T28>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13,\n      v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27,\n      v28);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29>\ninternal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n    T29> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n    T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n    T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,\n    T26 v26, T27 v27, T28 v28, T29 v29) {\n  return internal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,\n      T26, T27, T28, T29>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,\n      v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26,\n      v27, v28, v29);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30>\ninternal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n    T29, T30> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8,\n    T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16,\n    T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24,\n    T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) {\n  return internal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,\n      T26, T27, T28, T29, T30>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11,\n      v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25,\n      v26, v27, v28, v29, v30);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31>\ninternal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n    T29, T30, T31> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,\n    T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,\n    T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,\n    T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) {\n  return internal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,\n      T26, T27, T28, T29, T30, T31>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10,\n      v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24,\n      v25, v26, v27, v28, v29, v30, v31);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32>\ninternal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n    T29, T30, T31, T32> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,\n    T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,\n    T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,\n    T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,\n    T32 v32) {\n  return internal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,\n      T26, T27, T28, T29, T30, T31, T32>(v1, v2, v3, v4, v5, v6, v7, v8, v9,\n      v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,\n      v24, v25, v26, v27, v28, v29, v30, v31, v32);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33>\ninternal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n    T29, T30, T31, T32, T33> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6,\n    T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,\n    T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,\n    T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,\n    T32 v32, T33 v33) {\n  return internal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,\n      T26, T27, T28, T29, T30, T31, T32, T33>(v1, v2, v3, v4, v5, v6, v7, v8,\n      v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,\n      v24, v25, v26, v27, v28, v29, v30, v31, v32, v33);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34>\ninternal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n    T29, T30, T31, T32, T33, T34> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5,\n    T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14,\n    T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22,\n    T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30,\n    T31 v31, T32 v32, T33 v33, T34 v34) {\n  return internal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,\n      T26, T27, T28, T29, T30, T31, T32, T33, T34>(v1, v2, v3, v4, v5, v6, v7,\n      v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22,\n      v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35>\ninternal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n    T29, T30, T31, T32, T33, T34, T35> Values(T1 v1, T2 v2, T3 v3, T4 v4,\n    T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,\n    T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21,\n    T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29,\n    T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35) {\n  return internal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,\n      T26, T27, T28, T29, T30, T31, T32, T33, T34, T35>(v1, v2, v3, v4, v5, v6,\n      v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21,\n      v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36>\ninternal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n    T29, T30, T31, T32, T33, T34, T35, T36> Values(T1 v1, T2 v2, T3 v3, T4 v4,\n    T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,\n    T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21,\n    T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29,\n    T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36) {\n  return internal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,\n      T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36>(v1, v2, v3, v4,\n      v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,\n      v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33,\n      v34, v35, v36);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37>\ninternal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n    T29, T30, T31, T32, T33, T34, T35, T36, T37> Values(T1 v1, T2 v2, T3 v3,\n    T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,\n    T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,\n    T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28,\n    T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36,\n    T37 v37) {\n  return internal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,\n      T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37>(v1, v2, v3,\n      v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,\n      v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33,\n      v34, v35, v36, v37);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38>\ninternal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n    T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> Values(T1 v1, T2 v2,\n    T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,\n    T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,\n    T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28,\n    T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36,\n    T37 v37, T38 v38) {\n  return internal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,\n      T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38>(v1, v2,\n      v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18,\n      v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32,\n      v33, v34, v35, v36, v37, v38);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39>\ninternal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n    T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Values(T1 v1, T2 v2,\n    T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,\n    T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,\n    T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28,\n    T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36,\n    T37 v37, T38 v38, T39 v39) {\n  return internal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,\n      T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39>(v1,\n      v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17,\n      v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31,\n      v32, v33, v34, v35, v36, v37, v38, v39);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40>\ninternal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n    T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Values(T1 v1,\n    T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11,\n    T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19,\n    T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27,\n    T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35,\n    T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) {\n  return internal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,\n      T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,\n      T40>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15,\n      v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29,\n      v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41>\ninternal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n    T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,\n    T41> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n    T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n    T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,\n    T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,\n    T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41) {\n  return internal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,\n      T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,\n      T40, T41>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14,\n      v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28,\n      v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41, typename T42>\ninternal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n    T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,\n    T42> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n    T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n    T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,\n    T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,\n    T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,\n    T42 v42) {\n  return internal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,\n      T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,\n      T40, T41, T42>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13,\n      v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27,\n      v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41,\n      v42);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41, typename T42, typename T43>\ninternal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n    T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,\n    T43> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n    T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n    T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,\n    T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,\n    T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,\n    T42 v42, T43 v43) {\n  return internal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,\n      T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,\n      T40, T41, T42, T43>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,\n      v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26,\n      v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40,\n      v41, v42, v43);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41, typename T42, typename T43, typename T44>\ninternal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n    T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,\n    T44> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,\n    T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,\n    T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,\n    T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,\n    T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,\n    T42 v42, T43 v43, T44 v44) {\n  return internal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,\n      T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,\n      T40, T41, T42, T43, T44>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11,\n      v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25,\n      v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39,\n      v40, v41, v42, v43, v44);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41, typename T42, typename T43, typename T44, typename T45>\ninternal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n    T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,\n    T44, T45> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8,\n    T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16,\n    T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24,\n    T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32,\n    T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40,\n    T41 v41, T42 v42, T43 v43, T44 v44, T45 v45) {\n  return internal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,\n      T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,\n      T40, T41, T42, T43, T44, T45>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10,\n      v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24,\n      v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38,\n      v39, v40, v41, v42, v43, v44, v45);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41, typename T42, typename T43, typename T44, typename T45,\n    typename T46>\ninternal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n    T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,\n    T44, T45, T46> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,\n    T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,\n    T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,\n    T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,\n    T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39,\n    T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) {\n  return internal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,\n      T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,\n      T40, T41, T42, T43, T44, T45, T46>(v1, v2, v3, v4, v5, v6, v7, v8, v9,\n      v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,\n      v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37,\n      v38, v39, v40, v41, v42, v43, v44, v45, v46);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41, typename T42, typename T43, typename T44, typename T45,\n    typename T46, typename T47>\ninternal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n    T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,\n    T44, T45, T46, T47> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,\n    T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,\n    T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,\n    T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,\n    T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39,\n    T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) {\n  return internal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,\n      T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,\n      T40, T41, T42, T43, T44, T45, T46, T47>(v1, v2, v3, v4, v5, v6, v7, v8,\n      v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,\n      v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37,\n      v38, v39, v40, v41, v42, v43, v44, v45, v46, v47);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41, typename T42, typename T43, typename T44, typename T45,\n    typename T46, typename T47, typename T48>\ninternal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n    T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,\n    T44, T45, T46, T47, T48> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6,\n    T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,\n    T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,\n    T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,\n    T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39,\n    T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47,\n    T48 v48) {\n  return internal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,\n      T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,\n      T40, T41, T42, T43, T44, T45, T46, T47, T48>(v1, v2, v3, v4, v5, v6, v7,\n      v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22,\n      v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36,\n      v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41, typename T42, typename T43, typename T44, typename T45,\n    typename T46, typename T47, typename T48, typename T49>\ninternal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n    T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,\n    T44, T45, T46, T47, T48, T49> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5,\n    T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14,\n    T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22,\n    T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30,\n    T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38,\n    T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46,\n    T47 v47, T48 v48, T49 v49) {\n  return internal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,\n      T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,\n      T40, T41, T42, T43, T44, T45, T46, T47, T48, T49>(v1, v2, v3, v4, v5, v6,\n      v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21,\n      v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35,\n      v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49);\n}\n\ntemplate <typename T1, typename T2, typename T3, typename T4, typename T5,\n    typename T6, typename T7, typename T8, typename T9, typename T10,\n    typename T11, typename T12, typename T13, typename T14, typename T15,\n    typename T16, typename T17, typename T18, typename T19, typename T20,\n    typename T21, typename T22, typename T23, typename T24, typename T25,\n    typename T26, typename T27, typename T28, typename T29, typename T30,\n    typename T31, typename T32, typename T33, typename T34, typename T35,\n    typename T36, typename T37, typename T38, typename T39, typename T40,\n    typename T41, typename T42, typename T43, typename T44, typename T45,\n    typename T46, typename T47, typename T48, typename T49, typename T50>\ninternal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,\n    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,\n    T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,\n    T44, T45, T46, T47, T48, T49, T50> Values(T1 v1, T2 v2, T3 v3, T4 v4,\n    T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,\n    T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21,\n    T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29,\n    T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37,\n    T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45,\n    T46 v46, T47 v47, T48 v48, T49 v49, T50 v50) {\n  return internal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,\n      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,\n      T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,\n      T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50>(v1, v2, v3, v4,\n      v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,\n      v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33,\n      v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47,\n      v48, v49, v50);\n}\n\n// Bool() allows generating tests with parameters in a set of (false, true).\n//\n// Synopsis:\n// Bool()\n//   - returns a generator producing sequences with elements {false, true}.\n//\n// It is useful when testing code that depends on Boolean flags. Combinations\n// of multiple flags can be tested when several Bool()'s are combined using\n// Combine() function.\n//\n// In the following example all tests in the test case FlagDependentTest\n// will be instantiated twice with parameters false and true.\n//\n// class FlagDependentTest : public testing::TestWithParam<bool> {\n//   virtual void SetUp() {\n//     external_flag = GetParam();\n//   }\n// }\n// INSTANTIATE_TEST_CASE_P(BoolSequence, FlagDependentTest, Bool());\n//\ninline internal::ParamGenerator<bool> Bool() {\n  return Values(false, true);\n}\n\n# if GTEST_HAS_COMBINE\n// Combine() allows the user to combine two or more sequences to produce\n// values of a Cartesian product of those sequences' elements.\n//\n// Synopsis:\n// Combine(gen1, gen2, ..., genN)\n//   - returns a generator producing sequences with elements coming from\n//     the Cartesian product of elements from the sequences generated by\n//     gen1, gen2, ..., genN. The sequence elements will have a type of\n//     tuple<T1, T2, ..., TN> where T1, T2, ..., TN are the types\n//     of elements from sequences produces by gen1, gen2, ..., genN.\n//\n// Combine can have up to 10 arguments. This number is currently limited\n// by the maximum number of elements in the tuple implementation used by Google\n// Test.\n//\n// Example:\n//\n// This will instantiate tests in test case AnimalTest each one with\n// the parameter values tuple(\"cat\", BLACK), tuple(\"cat\", WHITE),\n// tuple(\"dog\", BLACK), and tuple(\"dog\", WHITE):\n//\n// enum Color { BLACK, GRAY, WHITE };\n// class AnimalTest\n//     : public testing::TestWithParam<tuple<const char*, Color> > {...};\n//\n// TEST_P(AnimalTest, AnimalLooksNice) {...}\n//\n// INSTANTIATE_TEST_CASE_P(AnimalVariations, AnimalTest,\n//                         Combine(Values(\"cat\", \"dog\"),\n//                                 Values(BLACK, WHITE)));\n//\n// This will instantiate tests in FlagDependentTest with all variations of two\n// Boolean flags:\n//\n// class FlagDependentTest\n//     : public testing::TestWithParam<tuple<bool, bool> > {\n//   virtual void SetUp() {\n//     // Assigns external_flag_1 and external_flag_2 values from the tuple.\n//     tie(external_flag_1, external_flag_2) = GetParam();\n//   }\n// };\n//\n// TEST_P(FlagDependentTest, TestFeature1) {\n//   // Test your code using external_flag_1 and external_flag_2 here.\n// }\n// INSTANTIATE_TEST_CASE_P(TwoBoolSequence, FlagDependentTest,\n//                         Combine(Bool(), Bool()));\n//\ntemplate <typename Generator1, typename Generator2>\ninternal::CartesianProductHolder2<Generator1, Generator2> Combine(\n    const Generator1& g1, const Generator2& g2) {\n  return internal::CartesianProductHolder2<Generator1, Generator2>(\n      g1, g2);\n}\n\ntemplate <typename Generator1, typename Generator2, typename Generator3>\ninternal::CartesianProductHolder3<Generator1, Generator2, Generator3> Combine(\n    const Generator1& g1, const Generator2& g2, const Generator3& g3) {\n  return internal::CartesianProductHolder3<Generator1, Generator2, Generator3>(\n      g1, g2, g3);\n}\n\ntemplate <typename Generator1, typename Generator2, typename Generator3,\n    typename Generator4>\ninternal::CartesianProductHolder4<Generator1, Generator2, Generator3,\n    Generator4> Combine(\n    const Generator1& g1, const Generator2& g2, const Generator3& g3,\n        const Generator4& g4) {\n  return internal::CartesianProductHolder4<Generator1, Generator2, Generator3,\n      Generator4>(\n      g1, g2, g3, g4);\n}\n\ntemplate <typename Generator1, typename Generator2, typename Generator3,\n    typename Generator4, typename Generator5>\ninternal::CartesianProductHolder5<Generator1, Generator2, Generator3,\n    Generator4, Generator5> Combine(\n    const Generator1& g1, const Generator2& g2, const Generator3& g3,\n        const Generator4& g4, const Generator5& g5) {\n  return internal::CartesianProductHolder5<Generator1, Generator2, Generator3,\n      Generator4, Generator5>(\n      g1, g2, g3, g4, g5);\n}\n\ntemplate <typename Generator1, typename Generator2, typename Generator3,\n    typename Generator4, typename Generator5, typename Generator6>\ninternal::CartesianProductHolder6<Generator1, Generator2, Generator3,\n    Generator4, Generator5, Generator6> Combine(\n    const Generator1& g1, const Generator2& g2, const Generator3& g3,\n        const Generator4& g4, const Generator5& g5, const Generator6& g6) {\n  return internal::CartesianProductHolder6<Generator1, Generator2, Generator3,\n      Generator4, Generator5, Generator6>(\n      g1, g2, g3, g4, g5, g6);\n}\n\ntemplate <typename Generator1, typename Generator2, typename Generator3,\n    typename Generator4, typename Generator5, typename Generator6,\n    typename Generator7>\ninternal::CartesianProductHolder7<Generator1, Generator2, Generator3,\n    Generator4, Generator5, Generator6, Generator7> Combine(\n    const Generator1& g1, const Generator2& g2, const Generator3& g3,\n        const Generator4& g4, const Generator5& g5, const Generator6& g6,\n        const Generator7& g7) {\n  return internal::CartesianProductHolder7<Generator1, Generator2, Generator3,\n      Generator4, Generator5, Generator6, Generator7>(\n      g1, g2, g3, g4, g5, g6, g7);\n}\n\ntemplate <typename Generator1, typename Generator2, typename Generator3,\n    typename Generator4, typename Generator5, typename Generator6,\n    typename Generator7, typename Generator8>\ninternal::CartesianProductHolder8<Generator1, Generator2, Generator3,\n    Generator4, Generator5, Generator6, Generator7, Generator8> Combine(\n    const Generator1& g1, const Generator2& g2, const Generator3& g3,\n        const Generator4& g4, const Generator5& g5, const Generator6& g6,\n        const Generator7& g7, const Generator8& g8) {\n  return internal::CartesianProductHolder8<Generator1, Generator2, Generator3,\n      Generator4, Generator5, Generator6, Generator7, Generator8>(\n      g1, g2, g3, g4, g5, g6, g7, g8);\n}\n\ntemplate <typename Generator1, typename Generator2, typename Generator3,\n    typename Generator4, typename Generator5, typename Generator6,\n    typename Generator7, typename Generator8, typename Generator9>\ninternal::CartesianProductHolder9<Generator1, Generator2, Generator3,\n    Generator4, Generator5, Generator6, Generator7, Generator8,\n    Generator9> Combine(\n    const Generator1& g1, const Generator2& g2, const Generator3& g3,\n        const Generator4& g4, const Generator5& g5, const Generator6& g6,\n        const Generator7& g7, const Generator8& g8, const Generator9& g9) {\n  return internal::CartesianProductHolder9<Generator1, Generator2, Generator3,\n      Generator4, Generator5, Generator6, Generator7, Generator8, Generator9>(\n      g1, g2, g3, g4, g5, g6, g7, g8, g9);\n}\n\ntemplate <typename Generator1, typename Generator2, typename Generator3,\n    typename Generator4, typename Generator5, typename Generator6,\n    typename Generator7, typename Generator8, typename Generator9,\n    typename Generator10>\ninternal::CartesianProductHolder10<Generator1, Generator2, Generator3,\n    Generator4, Generator5, Generator6, Generator7, Generator8, Generator9,\n    Generator10> Combine(\n    const Generator1& g1, const Generator2& g2, const Generator3& g3,\n        const Generator4& g4, const Generator5& g5, const Generator6& g6,\n        const Generator7& g7, const Generator8& g8, const Generator9& g9,\n        const Generator10& g10) {\n  return internal::CartesianProductHolder10<Generator1, Generator2, Generator3,\n      Generator4, Generator5, Generator6, Generator7, Generator8, Generator9,\n      Generator10>(\n      g1, g2, g3, g4, g5, g6, g7, g8, g9, g10);\n}\n# endif  // GTEST_HAS_COMBINE\n\n\n\n# define TEST_P(test_case_name, test_name) \\\n  class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \\\n      : public test_case_name { \\\n   public: \\\n    GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \\\n    virtual void TestBody(); \\\n   private: \\\n    static int AddToRegistry() { \\\n      ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \\\n          GetTestCasePatternHolder<test_case_name>(\\\n              #test_case_name, __FILE__, __LINE__)->AddTestPattern(\\\n                  #test_case_name, \\\n                  #test_name, \\\n                  new ::testing::internal::TestMetaFactory< \\\n                      GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>()); \\\n      return 0; \\\n    } \\\n    static int gtest_registering_dummy_; \\\n    GTEST_DISALLOW_COPY_AND_ASSIGN_(\\\n        GTEST_TEST_CLASS_NAME_(test_case_name, test_name)); \\\n  }; \\\n  int GTEST_TEST_CLASS_NAME_(test_case_name, \\\n                             test_name)::gtest_registering_dummy_ = \\\n      GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \\\n  void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody()\n\n# define INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator) \\\n  ::testing::internal::ParamGenerator<test_case_name::ParamType> \\\n      gtest_##prefix##test_case_name##_EvalGenerator_() { return generator; } \\\n  int gtest_##prefix##test_case_name##_dummy_ = \\\n      ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \\\n          GetTestCasePatternHolder<test_case_name>(\\\n              #test_case_name, __FILE__, __LINE__)->AddTestCaseInstantiation(\\\n                  #prefix, \\\n                  &gtest_##prefix##test_case_name##_EvalGenerator_, \\\n                  __FILE__, __LINE__)\n\n}  // namespace testing\n\n#endif  // GTEST_HAS_PARAM_TEST\n\n#endif  // GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_\n// Copyright 2006, Google Inc.\n// All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n// Author: wan@google.com (Zhanyong Wan)\n//\n// Google C++ Testing Framework definitions useful in production code.\n\n#ifndef GTEST_INCLUDE_GTEST_GTEST_PROD_H_\n#define GTEST_INCLUDE_GTEST_GTEST_PROD_H_\n\n// When you need to test the private or protected members of a class,\n// use the FRIEND_TEST macro to declare your tests as friends of the\n// class.  For example:\n//\n// class MyClass {\n//  private:\n//   void MyMethod();\n//   FRIEND_TEST(MyClassTest, MyMethod);\n// };\n//\n// class MyClassTest : public testing::Test {\n//   // ...\n// };\n//\n// TEST_F(MyClassTest, MyMethod) {\n//   // Can call MyClass::MyMethod() here.\n// }\n\n#define FRIEND_TEST(test_case_name, test_name)\\\nfriend class test_case_name##_##test_name##_Test\n\n#endif  // GTEST_INCLUDE_GTEST_GTEST_PROD_H_\n// Copyright 2008, Google Inc.\n// All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n// Author: mheule@google.com (Markus Heule)\n//\n\n#ifndef GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_\n#define GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_\n\n#include <iosfwd>\n#include <vector>\n\nnamespace testing {\n\n// A copyable object representing the result of a test part (i.e. an\n// assertion or an explicit FAIL(), ADD_FAILURE(), or SUCCESS()).\n//\n// Don't inherit from TestPartResult as its destructor is not virtual.\nclass GTEST_API_ TestPartResult {\n public:\n  // The possible outcomes of a test part (i.e. an assertion or an\n  // explicit SUCCEED(), FAIL(), or ADD_FAILURE()).\n  enum Type {\n    kSuccess,          // Succeeded.\n    kNonFatalFailure,  // Failed but the test can continue.\n    kFatalFailure      // Failed and the test should be terminated.\n  };\n\n  // C'tor.  TestPartResult does NOT have a default constructor.\n  // Always use this constructor (with parameters) to create a\n  // TestPartResult object.\n  TestPartResult(Type a_type,\n                 const char* a_file_name,\n                 int a_line_number,\n                 const char* a_message)\n      : type_(a_type),\n        file_name_(a_file_name == nullptr ? \"\" : a_file_name),\n        line_number_(a_line_number),\n        summary_(ExtractSummary(a_message)),\n        message_(a_message) {\n  }\n\n  // Gets the outcome of the test part.\n  Type type() const { return type_; }\n\n  // Gets the name of the source file where the test part took place, or\n  // nullptr if it's unknown.\n  const char* file_name() const {\n    return file_name_.empty() ? nullptr : file_name_.c_str();\n  }\n\n  // Gets the line in the source file where the test part took place,\n  // or -1 if it's unknown.\n  int line_number() const { return line_number_; }\n\n  // Gets the summary of the failure message.\n  const char* summary() const { return summary_.c_str(); }\n\n  // Gets the message associated with the test part.\n  const char* message() const { return message_.c_str(); }\n\n  // Returns true iff the test part passed.\n  bool passed() const { return type_ == kSuccess; }\n\n  // Returns true iff the test part failed.\n  bool failed() const { return type_ != kSuccess; }\n\n  // Returns true iff the test part non-fatally failed.\n  bool nonfatally_failed() const { return type_ == kNonFatalFailure; }\n\n  // Returns true iff the test part fatally failed.\n  bool fatally_failed() const { return type_ == kFatalFailure; }\n\n private:\n  Type type_;\n\n  // Gets the summary of the failure message by omitting the stack\n  // trace in it.\n  static std::string ExtractSummary(const char* message);\n\n  // The name of the source file where the test part took place, or\n  // \"\" if the source file is unknown.\n  std::string file_name_;\n  // The line in the source file where the test part took place, or -1\n  // if the line number is unknown.\n  int line_number_;\n  std::string summary_;  // The test failure summary.\n  std::string message_;  // The test failure message.\n};\n\n// Prints a TestPartResult object.\nstd::ostream& operator<<(std::ostream& os, const TestPartResult& result);\n\n// An array of TestPartResult objects.\n//\n// Don't inherit from TestPartResultArray as its destructor is not\n// virtual.\nclass GTEST_API_ TestPartResultArray {\n public:\n  TestPartResultArray() {}\n\n  // Appends the given TestPartResult to the array.\n  void Append(const TestPartResult& result);\n\n  // Returns the TestPartResult at the given index (0-based).\n  const TestPartResult& GetTestPartResult(int index) const;\n\n  // Returns the number of TestPartResult objects in the array.\n  int size() const;\n\n private:\n  std::vector<TestPartResult> array_;\n\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(TestPartResultArray);\n};\n\n// This interface knows how to report a test part result.\nclass TestPartResultReporterInterface {\n public:\n  virtual ~TestPartResultReporterInterface() {}\n\n  virtual void ReportTestPartResult(const TestPartResult& result) = 0;\n};\n\nnamespace internal {\n\n// This helper class is used by {ASSERT|EXPECT}_NO_FATAL_FAILURE to check if a\n// statement generates new fatal failures. To do so it registers itself as the\n// current test part result reporter. Besides checking if fatal failures were\n// reported, it only delegates the reporting to the former result reporter.\n// The original result reporter is restored in the destructor.\n// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.\nclass GTEST_API_ HasNewFatalFailureHelper\n    : public TestPartResultReporterInterface {\n public:\n  HasNewFatalFailureHelper();\n  virtual ~HasNewFatalFailureHelper();\n  virtual void ReportTestPartResult(const TestPartResult& result);\n  bool has_new_fatal_failure() const { return has_new_fatal_failure_; }\n private:\n  bool has_new_fatal_failure_;\n  TestPartResultReporterInterface* original_reporter_;\n\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(HasNewFatalFailureHelper);\n};\n\n}  // namespace internal\n\n}  // namespace testing\n\n#endif  // GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_\n// Copyright 2008 Google Inc.\n// All Rights Reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n// Author: wan@google.com (Zhanyong Wan)\n\n#ifndef GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_\n#define GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_\n\n// This header implements typed tests and type-parameterized tests.\n\n// Typed (aka type-driven) tests repeat the same test for types in a\n// list.  You must know which types you want to test with when writing\n// typed tests. Here's how you do it:\n\n#if 0\n\n// First, define a fixture class template.  It should be parameterized\n// by a type.  Remember to derive it from testing::Test.\ntemplate <typename T>\nclass FooTest : public testing::Test {\n public:\n  ...\n  typedef std::list<T> List;\n  static T shared_;\n  T value_;\n};\n\n// Next, associate a list of types with the test case, which will be\n// repeated for each type in the list.  The typedef is necessary for\n// the macro to parse correctly.\ntypedef testing::Types<char, int, unsigned int> MyTypes;\nTYPED_TEST_CASE(FooTest, MyTypes);\n\n// If the type list contains only one type, you can write that type\n// directly without Types<...>:\n//   TYPED_TEST_CASE(FooTest, int);\n\n// Then, use TYPED_TEST() instead of TEST_F() to define as many typed\n// tests for this test case as you want.\nTYPED_TEST(FooTest, DoesBlah) {\n  // Inside a test, refer to TypeParam to get the type parameter.\n  // Since we are inside a derived class template, C++ requires use to\n  // visit the members of FooTest via 'this'.\n  TypeParam n = this->value_;\n\n  // To visit static members of the fixture, add the TestFixture::\n  // prefix.\n  n += TestFixture::shared_;\n\n  // To refer to typedefs in the fixture, add the \"typename\n  // TestFixture::\" prefix.\n  typename TestFixture::List values;\n  values.push_back(n);\n  ...\n}\n\nTYPED_TEST(FooTest, HasPropertyA) { ... }\n\n#endif  // 0\n\n// Type-parameterized tests are abstract test patterns parameterized\n// by a type.  Compared with typed tests, type-parameterized tests\n// allow you to define the test pattern without knowing what the type\n// parameters are.  The defined pattern can be instantiated with\n// different types any number of times, in any number of translation\n// units.\n//\n// If you are designing an interface or concept, you can define a\n// suite of type-parameterized tests to verify properties that any\n// valid implementation of the interface/concept should have.  Then,\n// each implementation can easily instantiate the test suite to verify\n// that it conforms to the requirements, without having to write\n// similar tests repeatedly.  Here's an example:\n\n#if 0\n\n// First, define a fixture class template.  It should be parameterized\n// by a type.  Remember to derive it from testing::Test.\ntemplate <typename T>\nclass FooTest : public testing::Test {\n  ...\n};\n\n// Next, declare that you will define a type-parameterized test case\n// (the _P suffix is for \"parameterized\" or \"pattern\", whichever you\n// prefer):\nTYPED_TEST_CASE_P(FooTest);\n\n// Then, use TYPED_TEST_P() to define as many type-parameterized tests\n// for this type-parameterized test case as you want.\nTYPED_TEST_P(FooTest, DoesBlah) {\n  // Inside a test, refer to TypeParam to get the type parameter.\n  TypeParam n = 0;\n  ...\n}\n\nTYPED_TEST_P(FooTest, HasPropertyA) { ... }\n\n// Now the tricky part: you need to register all test patterns before\n// you can instantiate them.  The first argument of the macro is the\n// test case name; the rest are the names of the tests in this test\n// case.\nREGISTER_TYPED_TEST_CASE_P(FooTest,\n                           DoesBlah, HasPropertyA);\n\n// Finally, you are free to instantiate the pattern with the types you\n// want.  If you put the above code in a header file, you can #include\n// it in multiple C++ source files and instantiate it multiple times.\n//\n// To distinguish different instances of the pattern, the first\n// argument to the INSTANTIATE_* macro is a prefix that will be added\n// to the actual test case name.  Remember to pick unique prefixes for\n// different instances.\ntypedef testing::Types<char, int, unsigned int> MyTypes;\nINSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, MyTypes);\n\n// If the type list contains only one type, you can write that type\n// directly without Types<...>:\n//   INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, int);\n\n#endif  // 0\n\n\n// Implements typed tests.\n\n#if GTEST_HAS_TYPED_TEST\n\n// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.\n//\n// Expands to the name of the typedef for the type parameters of the\n// given test case.\n# define GTEST_TYPE_PARAMS_(TestCaseName) gtest_type_params_##TestCaseName##_\n\n// The 'Types' template argument below must have spaces around it\n// since some compilers may choke on '>>' when passing a template\n// instance (e.g. Types<int>)\n# define TYPED_TEST_CASE(CaseName, Types) \\\n  typedef ::testing::internal::TypeList< Types >::type \\\n      GTEST_TYPE_PARAMS_(CaseName)\n\n# define TYPED_TEST(CaseName, TestName) \\\n  template <typename gtest_TypeParam_> \\\n  class GTEST_TEST_CLASS_NAME_(CaseName, TestName) \\\n      : public CaseName<gtest_TypeParam_> { \\\n   private: \\\n    typedef CaseName<gtest_TypeParam_> TestFixture; \\\n    typedef gtest_TypeParam_ TypeParam; \\\n    virtual void TestBody(); \\\n  }; \\\n  bool gtest_##CaseName##_##TestName##_registered_ GTEST_ATTRIBUTE_UNUSED_ = \\\n      ::testing::internal::TypeParameterizedTest< \\\n          CaseName, \\\n          ::testing::internal::TemplateSel< \\\n              GTEST_TEST_CLASS_NAME_(CaseName, TestName)>, \\\n          GTEST_TYPE_PARAMS_(CaseName)>::Register(\\\n              \"\", #CaseName, #TestName, 0); \\\n  template <typename gtest_TypeParam_> \\\n  void GTEST_TEST_CLASS_NAME_(CaseName, TestName)<gtest_TypeParam_>::TestBody()\n\n#endif  // GTEST_HAS_TYPED_TEST\n\n// Implements type-parameterized tests.\n\n#if GTEST_HAS_TYPED_TEST_P\n\n// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.\n//\n// Expands to the namespace name that the type-parameterized tests for\n// the given type-parameterized test case are defined in.  The exact\n// name of the namespace is subject to change without notice.\n# define GTEST_CASE_NAMESPACE_(TestCaseName) \\\n  gtest_case_##TestCaseName##_\n\n// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.\n//\n// Expands to the name of the variable used to remember the names of\n// the defined tests in the given test case.\n# define GTEST_TYPED_TEST_CASE_P_STATE_(TestCaseName) \\\n  gtest_typed_test_case_p_state_##TestCaseName##_\n\n// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE DIRECTLY.\n//\n// Expands to the name of the variable used to remember the names of\n// the registered tests in the given test case.\n# define GTEST_REGISTERED_TEST_NAMES_(TestCaseName) \\\n  gtest_registered_test_names_##TestCaseName##_\n\n// The variables defined in the type-parameterized test macros are\n// static as typically these macros are used in a .h file that can be\n// #included in multiple translation units linked together.\n# define TYPED_TEST_CASE_P(CaseName) \\\n  static ::testing::internal::TypedTestCasePState \\\n      GTEST_TYPED_TEST_CASE_P_STATE_(CaseName)\n\n# define TYPED_TEST_P(CaseName, TestName) \\\n  namespace GTEST_CASE_NAMESPACE_(CaseName) { \\\n  template <typename gtest_TypeParam_> \\\n  class TestName : public CaseName<gtest_TypeParam_> { \\\n   private: \\\n    typedef CaseName<gtest_TypeParam_> TestFixture; \\\n    typedef gtest_TypeParam_ TypeParam; \\\n    virtual void TestBody(); \\\n  }; \\\n  static bool gtest_##TestName##_defined_ GTEST_ATTRIBUTE_UNUSED_ = \\\n      GTEST_TYPED_TEST_CASE_P_STATE_(CaseName).AddTestName(\\\n          __FILE__, __LINE__, #CaseName, #TestName); \\\n  } \\\n  template <typename gtest_TypeParam_> \\\n  void GTEST_CASE_NAMESPACE_(CaseName)::TestName<gtest_TypeParam_>::TestBody()\n\n# define REGISTER_TYPED_TEST_CASE_P(CaseName, ...) \\\n  namespace GTEST_CASE_NAMESPACE_(CaseName) { \\\n  typedef ::testing::internal::Templates<__VA_ARGS__>::type gtest_AllTests_; \\\n  } \\\n  static const char* const GTEST_REGISTERED_TEST_NAMES_(CaseName) = \\\n      GTEST_TYPED_TEST_CASE_P_STATE_(CaseName).VerifyRegisteredTestNames(\\\n          __FILE__, __LINE__, #__VA_ARGS__)\n\n// The 'Types' template argument below must have spaces around it\n// since some compilers may choke on '>>' when passing a template\n// instance (e.g. Types<int>)\n# define INSTANTIATE_TYPED_TEST_CASE_P(Prefix, CaseName, Types) \\\n  bool gtest_##Prefix##_##CaseName GTEST_ATTRIBUTE_UNUSED_ = \\\n      ::testing::internal::TypeParameterizedTestCase<CaseName, \\\n          GTEST_CASE_NAMESPACE_(CaseName)::gtest_AllTests_, \\\n          ::testing::internal::TypeList< Types >::type>::Register(\\\n              #Prefix, #CaseName, GTEST_REGISTERED_TEST_NAMES_(CaseName))\n\n#endif  // GTEST_HAS_TYPED_TEST_P\n\n#endif  // GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_\n\n// Depending on the platform, different string classes are available.\n// On Linux, in addition to ::std::string, Google also makes use of\n// class ::string, which has the same interface as ::std::string, but\n// has a different implementation.\n//\n// The user can define GTEST_HAS_GLOBAL_STRING to 1 to indicate that\n// ::string is available AND is a distinct type to ::std::string, or\n// define it to 0 to indicate otherwise.\n//\n// If the user's ::std::string and ::string are the same class due to\n// aliasing, he should define GTEST_HAS_GLOBAL_STRING to 0.\n//\n// If the user doesn't define GTEST_HAS_GLOBAL_STRING, it is defined\n// heuristically.\n\nnamespace testing {\n\n// Declares the flags.\n\n// This flag temporary enables the disabled tests.\nGTEST_DECLARE_bool_(also_run_disabled_tests);\n\n// This flag brings the debugger on an assertion failure.\nGTEST_DECLARE_bool_(break_on_failure);\n\n// This flag controls whether Google Test catches all test-thrown exceptions\n// and logs them as failures.\nGTEST_DECLARE_bool_(catch_exceptions);\n\n// This flag enables using colors in terminal output. Available values are\n// \"yes\" to enable colors, \"no\" (disable colors), or \"auto\" (the default)\n// to let Google Test decide.\nGTEST_DECLARE_string_(color);\n\n// This flag sets up the filter to select by name using a glob pattern\n// the tests to run. If the filter is not given all tests are executed.\nGTEST_DECLARE_string_(filter);\n\n// This flag causes the Google Test to list tests. None of the tests listed\n// are actually run if the flag is provided.\nGTEST_DECLARE_bool_(list_tests);\n\n// This flag controls whether Google Test emits a detailed XML report to a file\n// in addition to its normal textual output.\nGTEST_DECLARE_string_(output);\n\n// This flags control whether Google Test prints the elapsed time for each\n// test.\nGTEST_DECLARE_bool_(print_time);\n\n// This flag specifies the random number seed.\nGTEST_DECLARE_int32_(random_seed);\n\n// This flag sets how many times the tests are repeated. The default value\n// is 1. If the value is -1 the tests are repeating forever.\nGTEST_DECLARE_int32_(repeat);\n\n// This flag controls whether Google Test includes Google Test internal\n// stack frames in failure stack traces.\nGTEST_DECLARE_bool_(show_internal_stack_frames);\n\n// When this flag is specified, tests' order is randomized on every iteration.\nGTEST_DECLARE_bool_(shuffle);\n\n// This flag specifies the maximum number of stack frames to be\n// printed in a failure message.\nGTEST_DECLARE_int32_(stack_trace_depth);\n\n// When this flag is specified, a failed assertion will throw an\n// exception if exceptions are enabled, or exit the program with a\n// non-zero code otherwise.\nGTEST_DECLARE_bool_(throw_on_failure);\n\n// When this flag is set with a \"host:port\" string, on supported\n// platforms test results are streamed to the specified port on\n// the specified host machine.\nGTEST_DECLARE_string_(stream_result_to);\n\n// The upper limit for valid stack trace depths.\nconst int kMaxStackTraceDepth = 100;\n\nnamespace internal {\n\nclass AssertHelper;\nclass DefaultGlobalTestPartResultReporter;\nclass ExecDeathTest;\nclass NoExecDeathTest;\nclass FinalSuccessChecker;\nclass GTestFlagSaver;\nclass StreamingListenerTest;\nclass TestResultAccessor;\nclass TestEventListenersAccessor;\nclass TestEventRepeater;\nclass UnitTestRecordPropertyTestHelper;\nclass WindowsDeathTest;\nclass UnitTestImpl* GetUnitTestImpl();\nvoid ReportFailureInUnknownLocation(TestPartResult::Type result_type,\n                                    const std::string& message);\n\n}  // namespace internal\n\n// The friend relationship of some of these classes is cyclic.\n// If we don't forward declare them the compiler might confuse the classes\n// in friendship clauses with same named classes on the scope.\nclass Test;\nclass TestCase;\nclass TestInfo;\nclass UnitTest;\n\n// A class for indicating whether an assertion was successful.  When\n// the assertion wasn't successful, the AssertionResult object\n// remembers a non-empty message that describes how it failed.\n//\n// To create an instance of this class, use one of the factory functions\n// (AssertionSuccess() and AssertionFailure()).\n//\n// This class is useful for two purposes:\n//   1. Defining predicate functions to be used with Boolean test assertions\n//      EXPECT_TRUE/EXPECT_FALSE and their ASSERT_ counterparts\n//   2. Defining predicate-format functions to be\n//      used with predicate assertions (ASSERT_PRED_FORMAT*, etc).\n//\n// For example, if you define IsEven predicate:\n//\n//   testing::AssertionResult IsEven(int n) {\n//     if ((n % 2) == 0)\n//       return testing::AssertionSuccess();\n//     else\n//       return testing::AssertionFailure() << n << \" is odd\";\n//   }\n//\n// Then the failed expectation EXPECT_TRUE(IsEven(Fib(5)))\n// will print the message\n//\n//   Value of: IsEven(Fib(5))\n//     Actual: false (5 is odd)\n//   Expected: true\n//\n// instead of a more opaque\n//\n//   Value of: IsEven(Fib(5))\n//     Actual: false\n//   Expected: true\n//\n// in case IsEven is a simple Boolean predicate.\n//\n// If you expect your predicate to be reused and want to support informative\n// messages in EXPECT_FALSE and ASSERT_FALSE (negative assertions show up\n// about half as often as positive ones in our tests), supply messages for\n// both success and failure cases:\n//\n//   testing::AssertionResult IsEven(int n) {\n//     if ((n % 2) == 0)\n//       return testing::AssertionSuccess() << n << \" is even\";\n//     else\n//       return testing::AssertionFailure() << n << \" is odd\";\n//   }\n//\n// Then a statement EXPECT_FALSE(IsEven(Fib(6))) will print\n//\n//   Value of: IsEven(Fib(6))\n//     Actual: true (8 is even)\n//   Expected: false\n//\n// NB: Predicates that support negative Boolean assertions have reduced\n// performance in positive ones so be careful not to use them in tests\n// that have lots (tens of thousands) of positive Boolean assertions.\n//\n// To use this class with EXPECT_PRED_FORMAT assertions such as:\n//\n//   // Verifies that Foo() returns an even number.\n//   EXPECT_PRED_FORMAT1(IsEven, Foo());\n//\n// you need to define:\n//\n//   testing::AssertionResult IsEven(const char* expr, int n) {\n//     if ((n % 2) == 0)\n//       return testing::AssertionSuccess();\n//     else\n//       return testing::AssertionFailure()\n//         << \"Expected: \" << expr << \" is even\\n  Actual: it's \" << n;\n//   }\n//\n// If Foo() returns 5, you will see the following message:\n//\n//   Expected: Foo() is even\n//     Actual: it's 5\n//\nclass GTEST_API_ AssertionResult {\n public:\n  // Copy constructor.\n  // Used in EXPECT_TRUE/FALSE(assertion_result).\n  AssertionResult(const AssertionResult& other);\n  // Used in the EXPECT_TRUE/FALSE(bool_expression).\n  explicit AssertionResult(bool success) : success_(success) {}\n\n  // Returns true iff the assertion succeeded.\n  operator bool() const { return success_; }  // NOLINT\n\n  // Returns the assertion's negation. Used with EXPECT/ASSERT_FALSE.\n  AssertionResult operator!() const;\n\n  // Returns the text streamed into this AssertionResult. Test assertions\n  // use it when they fail (i.e., the predicate's outcome doesn't match the\n  // assertion's expectation). When nothing has been streamed into the\n  // object, returns an empty string.\n  const char* message() const {\n    return message_.get() != nullptr ?  message_->c_str() : \"\";\n  }\n  // TODO(vladl@google.com): Remove this after making sure no clients use it.\n  // Deprecated; please use message() instead.\n  const char* failure_message() const { return message(); }\n\n  // Streams a custom failure message into this object.\n  template <typename T> AssertionResult& operator<<(const T& value) {\n    AppendMessage(Message() << value);\n    return *this;\n  }\n\n  // Allows streaming basic output manipulators such as endl or flush into\n  // this object.\n  AssertionResult& operator<<(\n      ::std::ostream& (*basic_manipulator)(::std::ostream& stream)) {\n    AppendMessage(Message() << basic_manipulator);\n    return *this;\n  }\n\n private:\n  // Appends the contents of message to message_.\n  void AppendMessage(const Message& a_message) {\n    if (message_.get() == nullptr)\n      message_.reset(new ::std::string);\n    message_->append(a_message.GetString().c_str());\n  }\n\n  // Stores result of the assertion predicate.\n  bool success_;\n  // Stores the message describing the condition in case the expectation\n  // construct is not satisfied with the predicate's outcome.\n  // Referenced via a pointer to avoid taking too much stack frame space\n  // with test assertions.\n  internal::scoped_ptr< ::std::string> message_;\n\n  GTEST_DISALLOW_ASSIGN_(AssertionResult);\n};\n\n// Makes a successful assertion result.\nGTEST_API_ AssertionResult AssertionSuccess();\n\n// Makes a failed assertion result.\nGTEST_API_ AssertionResult AssertionFailure();\n\n// Makes a failed assertion result with the given failure message.\n// Deprecated; use AssertionFailure() << msg.\nGTEST_API_ AssertionResult AssertionFailure(const Message& msg);\n\n// The abstract class that all tests inherit from.\n//\n// In Google Test, a unit test program contains one or many TestCases, and\n// each TestCase contains one or many Tests.\n//\n// When you define a test using the TEST macro, you don't need to\n// explicitly derive from Test - the TEST macro automatically does\n// this for you.\n//\n// The only time you derive from Test is when defining a test fixture\n// to be used a TEST_F.  For example:\n//\n//   class FooTest : public testing::Test {\n//    protected:\n//     virtual void SetUp() { ... }\n//     virtual void TearDown() { ... }\n//     ...\n//   };\n//\n//   TEST_F(FooTest, Bar) { ... }\n//   TEST_F(FooTest, Baz) { ... }\n//\n// Test is not copyable.\nclass GTEST_API_ Test {\n public:\n  friend class TestInfo;\n\n  // Defines types for pointers to functions that set up and tear down\n  // a test case.\n  typedef internal::SetUpTestCaseFunc SetUpTestCaseFunc;\n  typedef internal::TearDownTestCaseFunc TearDownTestCaseFunc;\n\n  // The d'tor is virtual as we intend to inherit from Test.\n  virtual ~Test();\n\n  // Sets up the stuff shared by all tests in this test case.\n  //\n  // Google Test will call Foo::SetUpTestCase() before running the first\n  // test in test case Foo.  Hence a sub-class can define its own\n  // SetUpTestCase() method to shadow the one defined in the super\n  // class.\n  static void SetUpTestCase() {}\n\n  // Tears down the stuff shared by all tests in this test case.\n  //\n  // Google Test will call Foo::TearDownTestCase() after running the last\n  // test in test case Foo.  Hence a sub-class can define its own\n  // TearDownTestCase() method to shadow the one defined in the super\n  // class.\n  static void TearDownTestCase() {}\n\n  // Returns true iff the current test has a fatal failure.\n  static bool HasFatalFailure();\n\n  // Returns true iff the current test has a non-fatal failure.\n  static bool HasNonfatalFailure();\n\n  // Returns true iff the current test has a (either fatal or\n  // non-fatal) failure.\n  static bool HasFailure() { return HasFatalFailure() || HasNonfatalFailure(); }\n\n  // Logs a property for the current test, test case, or for the entire\n  // invocation of the test program when used outside of the context of a\n  // test case.  Only the last value for a given key is remembered.  These\n  // are public static so they can be called from utility functions that are\n  // not members of the test fixture.  Calls to RecordProperty made during\n  // lifespan of the test (from the moment its constructor starts to the\n  // moment its destructor finishes) will be output in XML as attributes of\n  // the <testcase> element.  Properties recorded from fixture's\n  // SetUpTestCase or TearDownTestCase are logged as attributes of the\n  // corresponding <testsuite> element.  Calls to RecordProperty made in the\n  // global context (before or after invocation of RUN_ALL_TESTS and from\n  // SetUp/TearDown method of Environment objects registered with Google\n  // Test) will be output as attributes of the <testsuites> element.\n  static void RecordProperty(const std::string& key, const std::string& value);\n  static void RecordProperty(const std::string& key, int value);\n\n  virtual int getTestTimeout() const {\n      return 0;   // override me\n  }\n\n protected:\n  // Creates a Test object.\n  Test();\n\n  // Sets up the test fixture.\n  virtual void SetUp();\n\n  // Tears down the test fixture.\n  virtual void TearDown();\n\n private:\n  // Returns true iff the current test has the same fixture class as\n  // the first test in the current test case.\n  static bool HasSameFixtureClass();\n\n  // Runs the test after the test fixture has been set up.\n  //\n  // A sub-class must implement this to define the test logic.\n  //\n  // DO NOT OVERRIDE THIS FUNCTION DIRECTLY IN A USER PROGRAM.\n  // Instead, use the TEST or TEST_F macro.\n  virtual void TestBody() = 0;\n\n  // Sets up, executes, and tears down the test.\n  void Run();\n\n  // Deletes self.  We deliberately pick an unusual name for this\n  // internal method to avoid clashing with names used in user TESTs.\n  void DeleteSelf_() { delete this; }\n\n  // Uses a GTestFlagSaver to save and restore all Google Test flags.\n  const internal::GTestFlagSaver* const gtest_flag_saver_;\n\n  // Often a user mis-spells SetUp() as Setup() and spends a long time\n  // wondering why it is never called by Google Test.  The declaration of\n  // the following method is solely for catching such an error at\n  // compile time:\n  //\n  //   - The return type is deliberately chosen to be not void, so it\n  //   will be a conflict if a user declares void Setup() in his test\n  //   fixture.\n  //\n  //   - This method is private, so it will be another compiler error\n  //   if a user calls it from his test fixture.\n  //\n  // DO NOT OVERRIDE THIS FUNCTION.\n  //\n  // If you see an error about overriding the following function or\n  // about it being private, you have mis-spelled SetUp() as Setup().\n  struct Setup_should_be_spelled_SetUp {};\n  virtual Setup_should_be_spelled_SetUp* Setup() { return nullptr; }\n\n  // We disallow copying Tests.\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(Test);\n};\n\ntypedef internal::TimeInMillis TimeInMillis;\n\n// A copyable object representing a user specified test property which can be\n// output as a key/value string pair.\n//\n// Don't inherit from TestProperty as its destructor is not virtual.\nclass TestProperty {\n public:\n  // C'tor.  TestProperty does NOT have a default constructor.\n  // Always use this constructor (with parameters) to create a\n  // TestProperty object.\n  TestProperty(const std::string& a_key, const std::string& a_value) :\n    key_(a_key), value_(a_value) {\n  }\n\n  // Gets the user supplied key.\n  const char* key() const {\n    return key_.c_str();\n  }\n\n  // Gets the user supplied value.\n  const char* value() const {\n    return value_.c_str();\n  }\n\n  // Sets a new value, overriding the one supplied in the constructor.\n  void SetValue(const std::string& new_value) {\n    value_ = new_value;\n  }\n\n private:\n  // The key supplied by the user.\n  std::string key_;\n  // The value supplied by the user.\n  std::string value_;\n};\n\n// The result of a single Test.  This includes a list of\n// TestPartResults, a list of TestProperties, a count of how many\n// death tests there are in the Test, and how much time it took to run\n// the Test.\n//\n// TestResult is not copyable.\nclass GTEST_API_ TestResult {\n public:\n  // Creates an empty TestResult.\n  TestResult();\n\n  // D'tor.  Do not inherit from TestResult.\n  ~TestResult();\n\n  // Gets the number of all test parts.  This is the sum of the number\n  // of successful test parts and the number of failed test parts.\n  int total_part_count() const;\n\n  // Returns the number of the test properties.\n  int test_property_count() const;\n\n  // Returns true iff the test passed (i.e. no test part failed).\n  bool Passed() const { return !Failed(); }\n\n  // Returns true iff the test failed.\n  bool Failed() const;\n\n  bool EverHadResults() const {\n      return everHadResults_;\n  }\n\n  // Returns true iff the test fatally failed.\n  bool HasFatalFailure() const;\n\n  // Returns true iff the test has a non-fatal failure.\n  bool HasNonfatalFailure() const;\n\n  // Returns the elapsed time, in milliseconds.\n  TimeInMillis elapsed_time() const { return elapsed_time_; }\n\n  // Returns the i-th test part result among all the results. i can range\n  // from 0 to test_property_count() - 1. If i is not in that range, aborts\n  // the program.\n  const TestPartResult& GetTestPartResult(int i) const;\n\n  // Returns the i-th test property. i can range from 0 to\n  // test_property_count() - 1. If i is not in that range, aborts the\n  // program.\n  const TestProperty& GetTestProperty(int i) const;\n\n private:\n  friend class TestInfo;\n  friend class TestCase;\n  friend class UnitTest;\n  friend class internal::DefaultGlobalTestPartResultReporter;\n  friend class internal::ExecDeathTest;\n  friend class internal::TestResultAccessor;\n  friend class internal::UnitTestImpl;\n  friend class internal::WindowsDeathTest;\n\n  // Gets the vector of TestPartResults.\n  const std::vector<TestPartResult>& test_part_results() const {\n    return test_part_results_;\n  }\n\n  // Gets the vector of TestProperties.\n  const std::vector<TestProperty>& test_properties() const {\n    return test_properties_;\n  }\n\n  // Sets the elapsed time.\n  void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; }\n\n  // Adds a test property to the list. The property is validated and may add\n  // a non-fatal failure if invalid (e.g., if it conflicts with reserved\n  // key names). If a property is already recorded for the same key, the\n  // value will be updated, rather than storing multiple values for the same\n  // key.  xml_element specifies the element for which the property is being\n  // recorded and is used for validation.\n  void RecordProperty(const std::string& xml_element,\n                      const TestProperty& test_property);\n\n  // Adds a failure if the key is a reserved attribute of Google Test\n  // testcase tags.  Returns true if the property is valid.\n  // TODO(russr): Validate attribute names are legal and human readable.\n  static bool ValidateTestProperty(const std::string& xml_element,\n                                   const TestProperty& test_property);\n\n  // Adds a test part result to the list.\n  void AddTestPartResult(const TestPartResult& test_part_result);\n\n  // Returns the death test count.\n  int death_test_count() const { return death_test_count_; }\n\n  // Increments the death test count, returning the new count.\n  int increment_death_test_count() { return ++death_test_count_; }\n\n  // Clears the test part results.\n  void ClearTestPartResults();\n\n  // Clears the object.\n  void Clear();\n\n  // Protects mutable state of the property vector and of owned\n  // properties, whose values may be updated.\n  internal::Mutex test_properites_mutex_;\n\n  // The vector of TestPartResults\n  std::vector<TestPartResult> test_part_results_;\n\n  // Whether this test ever had any parts/results.\n  bool everHadResults_;\n\n  // The vector of TestProperties\n  std::vector<TestProperty> test_properties_;\n  // Running count of death tests.\n  int death_test_count_;\n  // The elapsed time, in milliseconds.\n  TimeInMillis elapsed_time_;\n\n  // We disallow copying TestResult.\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(TestResult);\n};  // class TestResult\n\n// A TestInfo object stores the following information about a test:\n//\n//   Test case name\n//   Test name\n//   Whether the test should be run\n//   A function pointer that creates the test object when invoked\n//   Test result\n//\n// The constructor of TestInfo registers itself with the UnitTest\n// singleton such that the RUN_ALL_TESTS() macro knows which tests to\n// run.\nclass GTEST_API_ TestInfo {\n public:\n  // Destructs a TestInfo object.  This function is not virtual, so\n  // don't inherit from TestInfo.\n  ~TestInfo();\n\n  // Returns the test case name.\n  const char* test_case_name() const { return test_case_name_.c_str(); }\n\n  // Returns the test name.\n  const char* name() const { return name_.c_str(); }\n\n  // Returns \"Category_TestName\" or just \"TestName\" if cat is empty\n  std::string full_name() const { return (test_case_name_.empty() ? name_ : (test_case_name_ + \"_\" + name_)); }\n\n  // Returns the name of the parameter type, or nullptr if this is not a typed\n  // or a type-parameterized test.\n  const char* type_param() const {\n    if (type_param_.get() != nullptr)\n      return type_param_->c_str();\n    return nullptr;\n  }\n\n  // Returns the text representation of the value parameter, or nullptr if this\n  // is not a value-parameterized test.\n  const char* value_param() const {\n    if (value_param_.get() != nullptr)\n      return value_param_->c_str();\n    return nullptr;\n  }\n\n  // Returns true if this test should run, that is if the test is not\n  // disabled (or it is disabled but the also_run_disabled_tests flag has\n  // been specified) and its full name matches the user-specified filter.\n  //\n  // Google Test allows the user to filter the tests by their full names.\n  // The full name of a test Bar in test case Foo is defined as\n  // \"Foo.Bar\".  Only the tests that match the filter will run.\n  //\n  // A filter is a colon-separated list of glob (not regex) patterns,\n  // optionally followed by a '-' and a colon-separated list of\n  // negative patterns (tests to exclude).  A test is run if it\n  // matches one of the positive patterns and does not match any of\n  // the negative patterns.\n  //\n  // For example, *A*:Foo.* is a filter that matches any string that\n  // contains the character 'A' or starts with \"Foo.\".\n  bool should_run() const { return should_run_; }\n\n  // Returns true iff this test will appear in the XML report.\n  bool is_reportable() const {\n    // For now, the XML report includes all tests matching the filter.\n    // In the future, we may trim tests that are excluded because of\n    // sharding.\n    return matches_filter_;\n  }\n\n  // Returns the result of the test.\n  const TestResult* result() const { return &result_; }\n\n private:\n#if GTEST_HAS_DEATH_TEST\n  friend class internal::DefaultDeathTestFactory;\n#endif  // GTEST_HAS_DEATH_TEST\n  friend class Test;\n  friend class TestCase;\n  friend class internal::UnitTestImpl;\n  friend class internal::StreamingListenerTest;\n  friend TestInfo* internal::MakeAndRegisterTestInfo(\n      const char* test_case_name,\n      const char* name,\n      const char* type_param,\n      const char* value_param,\n      internal::TypeId fixture_class_id,\n      Test::SetUpTestCaseFunc set_up_tc,\n      Test::TearDownTestCaseFunc tear_down_tc,\n      internal::TestFactoryBase* factory);\n\n  // Constructs a TestInfo object. The newly constructed instance assumes\n  // ownership of the factory object.\n  TestInfo(const std::string& test_case_name,\n           const std::string& name,\n           const char* a_type_param,   // nullptr if not a type-parameterized test\n           const char* a_value_param,  // nullptr if not a value-parameterized test\n           internal::TypeId fixture_class_id,\n           internal::TestFactoryBase* factory);\n\n  // Increments the number of death tests encountered in this test so\n  // far.\n  int increment_death_test_count() {\n    return result_.increment_death_test_count();\n  }\n\n  // Creates the test object, runs it, records its result, and then\n  // deletes it.\n  void Run();\n\n  static void ClearTestResult(TestInfo* test_info) {\n    test_info->result_.Clear();\n  }\n\n  // These fields are immutable properties of the test.\n  const std::string test_case_name_;     // Test case name\n  const std::string name_;               // Test name\n  // Name of the parameter type, or nullptr if this is not a typed or a\n  // type-parameterized test.\n  const internal::scoped_ptr<const ::std::string> type_param_;\n  // Text representation of the value parameter, or nullptr if this is not a\n  // value-parameterized test.\n  const internal::scoped_ptr<const ::std::string> value_param_;\n  const internal::TypeId fixture_class_id_;   // ID of the test fixture class\n  bool should_run_;                 // True iff this test should run\n  bool is_disabled_;                // True iff this test is disabled\n  bool matches_filter_;             // True if this test matches the\n                                    // user-specified filter.\n  internal::TestFactoryBase* const factory_;  // The factory that creates\n                                              // the test object\n\n  // This field is mutable and needs to be reset before running the\n  // test for the second time.\n  TestResult result_;\n\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(TestInfo);\n};\n\n// A test case, which consists of a vector of TestInfos.\n//\n// TestCase is not copyable.\nclass GTEST_API_ TestCase {\n public:\n  // Creates a TestCase with the given name.\n  //\n  // TestCase does NOT have a default constructor.  Always use this\n  // constructor to create a TestCase object.\n  //\n  // Arguments:\n  //\n  //   name:         name of the test case\n  //   a_type_param: the name of the test's type parameter, or nullptr if\n  //                 this is not a type-parameterized test.\n  //   set_up_tc:    pointer to the function that sets up the test case\n  //   tear_down_tc: pointer to the function that tears down the test case\n  TestCase(const char* name, const char* a_type_param,\n           Test::SetUpTestCaseFunc set_up_tc,\n           Test::TearDownTestCaseFunc tear_down_tc);\n\n  // Destructor of TestCase.\n  virtual ~TestCase();\n\n  // Gets the name of the TestCase.\n  const char* name() const { return name_.c_str(); }\n\n  // Returns the name of the parameter type, or nullptr if this is not a\n  // type-parameterized test case.\n  const char* type_param() const {\n    if (type_param_.get() != nullptr)\n      return type_param_->c_str();\n    return nullptr;\n  }\n\n  // Returns true if any test in this test case should run.\n  bool should_run() const { return should_run_; }\n\n  virtual int getTestTimeout() const {\n      return 0;   // override me\n  }\n\n  // Gets the number of successful tests in this test case.\n  int successful_test_count() const;\n\n  // Gets the number of failed tests in this test case.\n  int failed_test_count() const;\n\n  // Gets the number of disabled tests that will be reported in the XML report.\n  int reportable_disabled_test_count() const;\n\n  // Gets the number of disabled tests in this test case.\n  int disabled_test_count() const;\n\n  // Gets the number of tests to be printed in the XML report.\n  int reportable_test_count() const;\n\n  // Get the number of tests in this test case that should run.\n  int test_to_run_count() const;\n\n  // Gets the number of all tests in this test case.\n  int total_test_count() const;\n\n  // Returns true iff the test case passed.\n  bool Passed() const { return !Failed(); }\n\n  // Returns true iff the test case failed.\n  bool Failed() const { return failed_test_count() > 0; }\n\n  // Returns the elapsed time, in milliseconds.\n  TimeInMillis elapsed_time() const { return elapsed_time_; }\n\n  // Returns the i-th test among all the tests. i can range from 0 to\n  // total_test_count() - 1. If i is not in that range, returns nullptr.\n  const TestInfo* GetTestInfo(int i) const;\n\n  // Returns the TestResult that holds test properties recorded during\n  // execution of SetUpTestCase and TearDownTestCase.\n  const TestResult& ad_hoc_test_result() const { return ad_hoc_test_result_; }\n\n private:\n  friend class Test;\n  friend class internal::UnitTestImpl;\n\n  // Gets the (mutable) vector of TestInfos in this TestCase.\n  std::vector<TestInfo*>& test_info_list() { return test_info_list_; }\n\n  // Gets the (immutable) vector of TestInfos in this TestCase.\n  const std::vector<TestInfo*>& test_info_list() const {\n    return test_info_list_;\n  }\n\n  // Returns the i-th test among all the tests. i can range from 0 to\n  // total_test_count() - 1. If i is not in that range, returns nullptr.\n  TestInfo* GetMutableTestInfo(int i);\n\n  // Sets the should_run member.\n  void set_should_run(bool should) { should_run_ = should; }\n\n  // Adds a TestInfo to this test case.  Will delete the TestInfo upon\n  // destruction of the TestCase object.\n  void AddTestInfo(TestInfo * test_info);\n\n  // Clears the results of all tests in this test case.\n  void ClearResult();\n\n  // Clears the results of all tests in the given test case.\n  static void ClearTestCaseResult(TestCase* test_case) {\n    test_case->ClearResult();\n  }\n\n  // Runs every test in this TestCase.\n  void Run();\n\n  // Runs SetUpTestCase() for this TestCase.  This wrapper is needed\n  // for catching exceptions thrown from SetUpTestCase().\n  void RunSetUpTestCase() { (*set_up_tc_)(); }\n\n  // Runs TearDownTestCase() for this TestCase.  This wrapper is\n  // needed for catching exceptions thrown from TearDownTestCase().\n  void RunTearDownTestCase() { (*tear_down_tc_)(); }\n\n  // Returns true iff test passed.\n  static bool TestPassed(const TestInfo* test_info) {\n    return test_info->should_run() && test_info->result()->Passed();\n  }\n\n  // Returns true iff test failed.\n  static bool TestFailed(const TestInfo* test_info) {\n    return test_info->should_run() && test_info->result()->Failed();\n  }\n\n  // Returns true iff the test is disabled and will be reported in the XML\n  // report.\n  static bool TestReportableDisabled(const TestInfo* test_info) {\n    return test_info->is_reportable() && test_info->is_disabled_;\n  }\n\n  // Returns true iff test is disabled.\n  static bool TestDisabled(const TestInfo* test_info) {\n    return test_info->is_disabled_;\n  }\n\n  // Returns true iff this test will appear in the XML report.\n  static bool TestReportable(const TestInfo* test_info) {\n    return test_info->is_reportable();\n  }\n\n  // Returns true if the given test should run.\n  static bool ShouldRunTest(const TestInfo* test_info) {\n    return test_info->should_run();\n  }\n\n  // Shuffles the tests in this test case.\n  void ShuffleTests(internal::Random* random);\n\n  // Restores the test order to before the first shuffle.\n  void UnshuffleTests();\n\n  // Name of the test case.\n  std::string name_;\n  // Name of the parameter type, or nullptr if this is not a typed or a\n  // type-parameterized test.\n  const internal::scoped_ptr<const ::std::string> type_param_;\n  // The vector of TestInfos in their original order.  It owns the\n  // elements in the vector.\n  std::vector<TestInfo*> test_info_list_;\n  // Provides a level of indirection for the test list to allow easy\n  // shuffling and restoring the test order.  The i-th element in this\n  // vector is the index of the i-th test in the shuffled test list.\n  std::vector<int> test_indices_;\n  // Pointer to the function that sets up the test case.\n  Test::SetUpTestCaseFunc set_up_tc_;\n  // Pointer to the function that tears down the test case.\n  Test::TearDownTestCaseFunc tear_down_tc_;\n  // True iff any test in this test case should run.\n  bool should_run_;\n  // Elapsed time, in milliseconds.\n  TimeInMillis elapsed_time_;\n  // Holds test properties recorded during execution of SetUpTestCase and\n  // TearDownTestCase.\n  TestResult ad_hoc_test_result_;\n\n  // We disallow copying TestCases.\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(TestCase);\n};\n\n// An Environment object is capable of setting up and tearing down an\n// environment.  The user should subclass this to define his own\n// environment(s).\n//\n// An Environment object does the set-up and tear-down in virtual\n// methods SetUp() and TearDown() instead of the constructor and the\n// destructor, as:\n//\n//   1. You cannot safely throw from a destructor.  This is a problem\n//      as in some cases Google Test is used where exceptions are enabled, and\n//      we may want to implement ASSERT_* using exceptions where they are\n//      available.\n//   2. You cannot use ASSERT_* directly in a constructor or\n//      destructor.\nclass Environment {\n public:\n  // The d'tor is virtual as we need to subclass Environment.\n  virtual ~Environment() {}\n\n  // Override this to define how to set up the environment.\n  virtual void SetUp() {}\n\n  // Override this to define how to tear down the environment.\n  virtual void TearDown() {}\n private:\n  // If you see an error about overriding the following function or\n  // about it being private, you have mis-spelled SetUp() as Setup().\n  struct Setup_should_be_spelled_SetUp {};\n  virtual Setup_should_be_spelled_SetUp* Setup() { return nullptr; }\n};\n\n// The interface for tracing execution of tests. The methods are organized in\n// the order the corresponding events are fired.\nclass TestEventListener {\n public:\n  virtual ~TestEventListener() {}\n\n  // Fired before any test activity starts.\n  virtual void OnTestProgramStart(const UnitTest& unit_test) = 0;\n\n  // Fired before each iteration of tests starts.  There may be more than\n  // one iteration if GTEST_FLAG(repeat) is set. iteration is the iteration\n  // index, starting from 0.\n  virtual void OnTestIterationStart(const UnitTest& unit_test,\n                                    int iteration) = 0;\n\n  // Fired before environment set-up for each iteration of tests starts.\n  virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test) = 0;\n\n  // Fired after environment set-up for each iteration of tests ends.\n  virtual void OnEnvironmentsSetUpEnd(const UnitTest& unit_test) = 0;\n\n  // Fired before the test case starts.\n  virtual void OnTestCaseStart(const TestCase& test_case) = 0;\n\n  // Fired before the test starts.\n  virtual void OnTestStart(const TestInfo& test_info) = 0;\n\n  // Fired after a failed assertion or a SUCCEED() invocation.\n  virtual void OnTestPartResult(const TestPartResult& test_part_result) = 0;\n\n  // Fired after the test ends.\n  virtual void OnTestEnd(const TestInfo& test_info) = 0;\n\n  // Fired after the test case ends.\n  virtual void OnTestCaseEnd(const TestCase& test_case) = 0;\n\n  // Fired before environment tear-down for each iteration of tests starts.\n  virtual void OnEnvironmentsTearDownStart(const UnitTest& unit_test) = 0;\n\n  // Fired after environment tear-down for each iteration of tests ends.\n  virtual void OnEnvironmentsTearDownEnd(const UnitTest& unit_test) = 0;\n\n  // Fired after each iteration of tests finishes.\n  virtual void OnTestIterationEnd(const UnitTest& unit_test,\n                                  int iteration) = 0;\n\n  // Fired after all test activities have ended.\n  virtual void OnTestProgramEnd(const UnitTest& unit_test) = 0;\n};\n\n// The convenience class for users who need to override just one or two\n// methods and are not concerned that a possible change to a signature of\n// the methods they override will not be caught during the build.  For\n// comments about each method please see the definition of TestEventListener\n// above.\nclass EmptyTestEventListener : public TestEventListener {\n public:\n  virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) {}\n  virtual void OnTestIterationStart(const UnitTest& /*unit_test*/,\n                                    int /*iteration*/) {}\n  virtual void OnEnvironmentsSetUpStart(const UnitTest& /*unit_test*/) {}\n  virtual void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) {}\n  virtual void OnTestCaseStart(const TestCase& /*test_case*/) {}\n  virtual void OnTestStart(const TestInfo& /*test_info*/) {}\n  virtual void OnTestPartResult(const TestPartResult& /*test_part_result*/) {}\n  virtual void OnTestEnd(const TestInfo& /*test_info*/) {}\n  virtual void OnTestCaseEnd(const TestCase& /*test_case*/) {}\n  virtual void OnEnvironmentsTearDownStart(const UnitTest& /*unit_test*/) {}\n  virtual void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) {}\n  virtual void OnTestIterationEnd(const UnitTest& /*unit_test*/,\n                                  int /*iteration*/) {}\n  virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) {}\n};\n\n// TestEventListeners lets users add listeners to track events in Google Test.\nclass GTEST_API_ TestEventListeners {\n public:\n  TestEventListeners();\n  ~TestEventListeners();\n\n  // Appends an event listener to the end of the list. Google Test assumes\n  // the ownership of the listener (i.e. it will delete the listener when\n  // the test program finishes).\n  void Append(TestEventListener* listener);\n\n  // Removes the given event listener from the list and returns it.  It then\n  // becomes the caller's responsibility to delete the listener. Returns\n  // nullptr if the listener is not found in the list.\n  TestEventListener* Release(TestEventListener* listener);\n\n  // Returns the standard listener responsible for the default console\n  // output.  Can be removed from the listeners list to shut down default\n  // console output.  Note that removing this object from the listener list\n  // with Release transfers its ownership to the caller and makes this\n  // function return nullptr the next time.\n  TestEventListener* default_result_printer() const {\n    return default_result_printer_;\n  }\n\n  // Returns the standard listener responsible for the default XML output\n  // controlled by the --gtest_output=xml flag.  Can be removed from the\n  // listeners list by users who want to shut down the default XML output\n  // controlled by this flag and substitute it with custom one.  Note that\n  // removing this object from the listener list with Release transfers its\n  // ownership to the caller and makes this function return nullptr the next\n  // time.\n  TestEventListener* default_xml_generator() const {\n    return default_xml_generator_;\n  }\n\n private:\n  friend class TestCase;\n  friend class TestInfo;\n  friend class internal::DefaultGlobalTestPartResultReporter;\n  friend class internal::NoExecDeathTest;\n  friend class internal::TestEventListenersAccessor;\n  friend class internal::UnitTestImpl;\n\n  // Returns repeater that broadcasts the TestEventListener events to all\n  // subscribers.\n  TestEventListener* repeater();\n\n  // Sets the default_result_printer attribute to the provided listener.\n  // The listener is also added to the listener list and previous\n  // default_result_printer is removed from it and deleted. The listener can\n  // also be nullptr in which case it will not be added to the list. Does\n  // nothing if the previous and the current listener objects are the same.\n  void SetDefaultResultPrinter(TestEventListener* listener);\n\n  // Sets the default_xml_generator attribute to the provided listener.  The\n  // listener is also added to the listener list and previous\n  // default_xml_generator is removed from it and deleted. The listener can\n  // also be nullptr in which case it will not be added to the list. Does\n  // nothing if the previous and the current listener objects are the same.\n  void SetDefaultXmlGenerator(TestEventListener* listener);\n\n  // Controls whether events will be forwarded by the repeater to the\n  // listeners in the list.\n  bool EventForwardingEnabled() const;\n  void SuppressEventForwarding();\n\n  // The actual list of listeners.\n  internal::TestEventRepeater* repeater_;\n  // Listener responsible for the standard result output.\n  TestEventListener* default_result_printer_;\n  // Listener responsible for the creation of the XML output file.\n  TestEventListener* default_xml_generator_;\n\n  // We disallow copying TestEventListeners.\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(TestEventListeners);\n};\n\n// A UnitTest consists of a vector of TestCases.\n//\n// This is a singleton class.  The only instance of UnitTest is\n// created when UnitTest::GetInstance() is first called.  This\n// instance is never deleted.\n//\n// UnitTest is not copyable.\n//\n// This class is thread-safe as long as the methods are called\n// according to their specification.\nclass GTEST_API_ UnitTest {\n public:\n  // Gets the singleton UnitTest object.  The first time this method\n  // is called, a UnitTest object is constructed and returned.\n  // Consecutive calls will return the same object.\n  static UnitTest* GetInstance();\n\n  // Runs all tests in this UnitTest object and prints the result.\n  // Returns 0 if successful, or 1 otherwise.\n  //\n  // This method can only be called from the main thread.\n  //\n  // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.\n  int Run() GTEST_MUST_USE_RESULT_;\n\n  // Returns the working directory when the first TEST() or TEST_F()\n  // was executed.  The UnitTest object owns the string.\n  const char* original_working_dir() const;\n\n  // Returns the TestCase object for the test that's currently running,\n  // or nullptr if no test is running.\n  const TestCase* current_test_case() const\n      GTEST_LOCK_EXCLUDED_(mutex_);\n\n  // Returns the TestInfo object for the test that's currently running,\n  // or nullptr if no test is running.\n  const TestInfo* current_test_info() const\n      GTEST_LOCK_EXCLUDED_(mutex_);\n\n  // Returns the random seed used at the start of the current test run.\n  int random_seed() const;\n\n#if GTEST_HAS_PARAM_TEST\n  // Returns the ParameterizedTestCaseRegistry object used to keep track of\n  // value-parameterized tests and instantiate and register them.\n  //\n  // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.\n  internal::ParameterizedTestCaseRegistry& parameterized_test_registry()\n      GTEST_LOCK_EXCLUDED_(mutex_);\n#endif  // GTEST_HAS_PARAM_TEST\n\n  // Gets the number of successful test cases.\n  int successful_test_case_count() const;\n\n  // Gets the number of failed test cases.\n  int failed_test_case_count() const;\n\n  // Gets the number of all test cases.\n  int total_test_case_count() const;\n\n  // Gets the number of all test cases that contain at least one test\n  // that should run.\n  int test_case_to_run_count() const;\n\n  // Gets the number of successful tests.\n  int successful_test_count() const;\n\n  // Gets the number of failed tests.\n  int failed_test_count() const;\n\n  // Gets the number of disabled tests that will be reported in the XML report.\n  int reportable_disabled_test_count() const;\n\n  // Gets the number of disabled tests.\n  int disabled_test_count() const;\n\n  // Gets the number of tests to be printed in the XML report.\n  int reportable_test_count() const;\n\n  // Gets the number of all tests.\n  int total_test_count() const;\n\n  // Gets the number of tests that should run.\n  int test_to_run_count() const;\n\n  // Gets the time of the test program start, in ms from the start of the\n  // UNIX epoch.\n  TimeInMillis start_timestamp() const;\n\n  // Gets the elapsed time, in milliseconds.\n  TimeInMillis elapsed_time() const;\n\n  // Returns true iff the unit test passed (i.e. all test cases passed).\n  bool Passed() const;\n\n  // Returns true iff the unit test failed (i.e. some test case failed\n  // or something outside of all tests failed).\n  bool Failed() const;\n\n  // Gets the i-th test case among all the test cases. i can range from 0 to\n  // total_test_case_count() - 1. If i is not in that range, returns nullptr.\n  const TestCase* GetTestCase(int i) const;\n\n  // Returns the TestResult containing information on test failures and\n  // properties logged outside of individual test cases.\n  const TestResult& ad_hoc_test_result() const;\n\n  // Returns the list of event listeners that can be used to track events\n  // inside Google Test.\n  TestEventListeners& listeners();\n\n private:\n  // Registers and returns a global test environment.  When a test\n  // program is run, all global test environments will be set-up in\n  // the order they were registered.  After all tests in the program\n  // have finished, all global test environments will be torn-down in\n  // the *reverse* order they were registered.\n  //\n  // The UnitTest object takes ownership of the given environment.\n  //\n  // This method can only be called from the main thread.\n  Environment* AddEnvironment(Environment* env);\n\n  // Adds a TestPartResult to the current TestResult object.  All\n  // Google Test assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc)\n  // eventually call this to report their results.  The user code\n  // should use the assertion macros instead of calling this directly.\n  void AddTestPartResult(TestPartResult::Type result_type,\n                         const char* file_name,\n                         int line_number,\n                         const std::string& message,\n                         const std::string& os_stack_trace)\n      GTEST_LOCK_EXCLUDED_(mutex_);\n\n  // Adds a TestProperty to the current TestResult object when invoked from\n  // inside a test, to current TestCase's ad_hoc_test_result_ when invoked\n  // from SetUpTestCase or TearDownTestCase, or to the global property set\n  // when invoked elsewhere.  If the result already contains a property with\n  // the same key, the value will be updated.\n  void RecordProperty(const std::string& key, const std::string& value);\n\n  // Gets the i-th test case among all the test cases. i can range from 0 to\n  // total_test_case_count() - 1. If i is not in that range, returns nullptr.\n  TestCase* GetMutableTestCase(int i);\n\n  // Accessors for the implementation object.\n  internal::UnitTestImpl* impl() { return impl_; }\n  const internal::UnitTestImpl* impl() const { return impl_; }\n\n  // These classes and funcions are friends as they need to access private\n  // members of UnitTest.\n  friend class Test;\n  friend class internal::AssertHelper;\n  friend class internal::ScopedTrace;\n  friend class internal::StreamingListenerTest;\n  friend class internal::UnitTestRecordPropertyTestHelper;\n  friend Environment* AddGlobalTestEnvironment(Environment* env);\n  friend internal::UnitTestImpl* internal::GetUnitTestImpl();\n  friend void internal::ReportFailureInUnknownLocation(\n      TestPartResult::Type result_type,\n      const std::string& message);\n\n  // Creates an empty UnitTest.\n  UnitTest();\n\n  // D'tor\n  virtual ~UnitTest();\n\n  // Pushes a trace defined by SCOPED_TRACE() on to the per-thread\n  // Google Test trace stack.\n  void PushGTestTrace(const internal::TraceInfo& trace)\n      GTEST_LOCK_EXCLUDED_(mutex_);\n\n  // Pops a trace from the per-thread Google Test trace stack.\n  void PopGTestTrace()\n      GTEST_LOCK_EXCLUDED_(mutex_);\n\n  // Protects mutable state in *impl_.  This is mutable as some const\n  // methods need to lock it too.\n  mutable internal::Mutex mutex_;\n\n  // Opaque implementation object.  This field is never changed once\n  // the object is constructed.  We don't mark it as const here, as\n  // doing so will cause a warning in the constructor of UnitTest.\n  // Mutable state in *impl_ is protected by mutex_.\n  internal::UnitTestImpl* impl_;\n\n  // We disallow copying UnitTest.\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(UnitTest);\n};\n\n// A convenient wrapper for adding an environment for the test\n// program.\n//\n// You should call this before RUN_ALL_TESTS() is called, probably in\n// main().  If you use gtest_main, you need to call this before main()\n// starts for it to take effect.  For example, you can define a global\n// variable like this:\n//\n//   testing::Environment* const foo_env =\n//       testing::AddGlobalTestEnvironment(new FooEnvironment);\n//\n// However, we strongly recommend you to write your own main() and\n// call AddGlobalTestEnvironment() there, as relying on initialization\n// of global variables makes the code harder to read and may cause\n// problems when you register multiple environments from different\n// translation units and the environments have dependencies among them\n// (remember that the compiler doesn't guarantee the order in which\n// global variables from different translation units are initialized).\ninline Environment* AddGlobalTestEnvironment(Environment* env) {\n  return UnitTest::GetInstance()->AddEnvironment(env);\n}\n\n// Initializes Google Test.  This must be called before calling\n// RUN_ALL_TESTS().  In particular, it parses a command line for the\n// flags that Google Test recognizes.  Whenever a Google Test flag is\n// seen, it is removed from argv, and *argc is decremented.\n//\n// No value is returned.  Instead, the Google Test flag variables are\n// updated.\n//\n// Calling the function for the second time has no user-visible effect.\nGTEST_API_ void InitGoogleTest(int* argc, char** argv);\n\n// This overloaded version can be used in Windows programs compiled in\n// UNICODE mode.\nGTEST_API_ void InitGoogleTest(int* argc, wchar_t** argv);\n\nnamespace internal {\n\n// FormatForComparison<ToPrint, OtherOperand>::Format(value) formats a\n// value of type ToPrint that is an operand of a comparison assertion\n// (e.g. ASSERT_EQ).  OtherOperand is the type of the other operand in\n// the comparison, and is used to help determine the best way to\n// format the value.  In particular, when the value is a C string\n// (char pointer) and the other operand is an STL string object, we\n// want to format the C string as a string, since we know it is\n// compared by value with the string object.  If the value is a char\n// pointer but the other operand is not an STL string object, we don't\n// know whether the pointer is supposed to point to a NUL-terminated\n// string, and thus want to print it as a pointer to be safe.\n//\n// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.\n\n// The default case.\ntemplate <typename ToPrint, typename OtherOperand>\nclass FormatForComparison {\n public:\n  static ::std::string Format(const ToPrint& value) {\n    return ::testing::PrintToString(value);\n  }\n};\n\n// Array.\ntemplate <typename ToPrint, size_t N, typename OtherOperand>\nclass FormatForComparison<ToPrint[N], OtherOperand> {\n public:\n  static ::std::string Format(const ToPrint* value) {\n    return FormatForComparison<const ToPrint*, OtherOperand>::Format(value);\n  }\n};\n\n// By default, print C string as pointers to be safe, as we don't know\n// whether they actually point to a NUL-terminated string.\n\n#define GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(CharType)                \\\n  template <typename OtherOperand>                                      \\\n  class FormatForComparison<CharType*, OtherOperand> {                  \\\n   public:                                                              \\\n    static ::std::string Format(CharType* value) {                      \\\n      return ::testing::PrintToString(static_cast<const void*>(value)); \\\n    }                                                                   \\\n  }\n\nGTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(char);\nGTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(const char);\nGTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(wchar_t);\nGTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(const wchar_t);\n\n#undef GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_\n\n// If a C string is compared with an STL string object, we know it's meant\n// to point to a NUL-terminated string, and thus can print it as a string.\n\n#define GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(CharType, OtherStringType) \\\n  template <>                                                           \\\n  class FormatForComparison<CharType*, OtherStringType> {               \\\n   public:                                                              \\\n    static ::std::string Format(CharType* value) {                      \\\n      return ::testing::PrintToString(value);                           \\\n    }                                                                   \\\n  }\n\nGTEST_IMPL_FORMAT_C_STRING_AS_STRING_(char, ::std::string);\nGTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const char, ::std::string);\n\n#if GTEST_HAS_GLOBAL_STRING\nGTEST_IMPL_FORMAT_C_STRING_AS_STRING_(char, ::string);\nGTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const char, ::string);\n#endif\n\n#if GTEST_HAS_GLOBAL_WSTRING\nGTEST_IMPL_FORMAT_C_STRING_AS_STRING_(wchar_t, ::wstring);\nGTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const wchar_t, ::wstring);\n#endif\n\n#if GTEST_HAS_STD_WSTRING\nGTEST_IMPL_FORMAT_C_STRING_AS_STRING_(wchar_t, ::std::wstring);\nGTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const wchar_t, ::std::wstring);\n#endif\n\n#undef GTEST_IMPL_FORMAT_C_STRING_AS_STRING_\n\n// Formats a comparison assertion (e.g. ASSERT_EQ, EXPECT_LT, and etc)\n// operand to be used in a failure message.  The type (but not value)\n// of the other operand may affect the format.  This allows us to\n// print a char* as a raw pointer when it is compared against another\n// char* or void*, and print it as a C string when it is compared\n// against an std::string object, for example.\n//\n// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.\ntemplate <typename T1, typename T2>\nstd::string FormatForComparisonFailureMessage(\n    const T1& value, const T2& /* other_operand */) {\n  return FormatForComparison<T1, T2>::Format(value);\n}\n\n// The helper function for {ASSERT|EXPECT}_EQ.\ntemplate <typename T1, typename T2>\nAssertionResult CmpHelperEQ(const char* expected_expression,\n                            const char* actual_expression,\n                            const T1& expected,\n                            const T2& actual) {\n#ifdef _MSC_VER\n# pragma warning(push)          // Saves the current warning state.\n# pragma warning(disable:4389)  // Temporarily disables warning on\n                                // signed/unsigned mismatch.\n#endif\n\n  if (expected == actual) {\n    return AssertionSuccess();\n  }\n\n#ifdef _MSC_VER\n# pragma warning(pop)          // Restores the warning state.\n#endif\n\n  return EqFailure(expected_expression,\n                   actual_expression,\n                   FormatForComparisonFailureMessage(expected, actual),\n                   FormatForComparisonFailureMessage(actual, expected),\n                   false);\n}\n\n// With this overloaded version, we allow anonymous enums to be used\n// in {ASSERT|EXPECT}_EQ when compiled with gcc 4, as anonymous enums\n// can be implicitly cast to BiggestInt.\nGTEST_API_ AssertionResult CmpHelperEQ(const char* expected_expression,\n                                       const char* actual_expression,\n                                       BiggestInt expected,\n                                       BiggestInt actual);\n\n// The helper class for {ASSERT|EXPECT}_EQ.  The template argument\n// lhs_is_null_literal is true iff the first argument to ASSERT_EQ()\n// is a null pointer literal.  The following default implementation is\n// for lhs_is_null_literal being false.\ntemplate <bool lhs_is_null_literal>\nclass EqHelper {\n public:\n  // This templatized version is for the general case.\n  template <typename T1, typename T2>\n  static AssertionResult Compare(const char* expected_expression,\n                                 const char* actual_expression,\n                                 const T1& expected,\n                                 const T2& actual) {\n    return CmpHelperEQ(expected_expression, actual_expression, expected,\n                       actual);\n  }\n\n  // With this overloaded version, we allow anonymous enums to be used\n  // in {ASSERT|EXPECT}_EQ when compiled with gcc 4, as anonymous\n  // enums can be implicitly cast to BiggestInt.\n  //\n  // Even though its body looks the same as the above version, we\n  // cannot merge the two, as it will make anonymous enums unhappy.\n  static AssertionResult Compare(const char* expected_expression,\n                                 const char* actual_expression,\n                                 BiggestInt expected,\n                                 BiggestInt actual) {\n    return CmpHelperEQ(expected_expression, actual_expression, expected,\n                       actual);\n  }\n};\n\n// This specialization is used when the first argument to ASSERT_EQ()\n// is a null pointer literal, like nullptr, false, or 0.\ntemplate <>\nclass EqHelper<true> {\n public:\n  // We define two overloaded versions of Compare().  The first\n  // version will be picked when the second argument to ASSERT_EQ() is\n  // NOT a pointer, e.g. ASSERT_EQ(0, AnIntFunction()) or\n  // EXPECT_EQ(false, a_bool).\n  template <typename T1, typename T2>\n  static AssertionResult Compare(\n      const char* expected_expression,\n      const char* actual_expression,\n      const T1& expected,\n      const T2& actual,\n      // The following line prevents this overload from being considered if T2\n      // is not a pointer type.  We need this because ASSERT_EQ(nullptr, my_ptr)\n      // expands to Compare(\"\", \"\", nullptr, my_ptr), which requires a conversion\n      // to match the Secret* in the other overload, which would otherwise make\n      // this template match better.\n      typename EnableIf<!is_pointer<T2>::value>::type* = 0) {\n    return CmpHelperEQ(expected_expression, actual_expression, expected,\n                       actual);\n  }\n\n  // This version will be picked when the second argument to ASSERT_EQ() is a\n  // pointer, e.g. ASSERT_EQ(nullptr, a_pointer).\n  template <typename T>\n  static AssertionResult Compare(\n      const char* expected_expression,\n      const char* actual_expression,\n      // We used to have a second template parameter instead of Secret*.  That\n      // template parameter would deduce to 'long', making this a better match\n      // than the first overload even without the first overload's EnableIf.\n      // Unfortunately, gcc with -Wconversion-null warns when \"passing null to\n      // non-pointer argument\" (even a deduced integral argument), so the old\n      // implementation caused warnings in user code.\n      Secret* /* expected (nullptr) */,\n      T* actual) {\n    // We already know that 'expected' is a null pointer.\n    return CmpHelperEQ(expected_expression, actual_expression,\n                       static_cast<T*>(nullptr), actual);\n  }\n};\n\n// A macro for implementing the helper functions needed to implement\n// ASSERT_?? and EXPECT_??.  It is here just to avoid copy-and-paste\n// of similar code.\n//\n// For each templatized helper function, we also define an overloaded\n// version for BiggestInt in order to reduce code bloat and allow\n// anonymous enums to be used with {ASSERT|EXPECT}_?? when compiled\n// with gcc 4.\n//\n// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.\n#define GTEST_IMPL_CMP_HELPER_(op_name, op)\\\ntemplate <typename T1, typename T2>\\\nAssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \\\n                                   const T1& val1, const T2& val2) {\\\n  if (val1 op val2) {\\\n    return AssertionSuccess();\\\n  } else {\\\n    return AssertionFailure() \\\n        << \"Expected: (\" << expr1 << \") \" #op \" (\" << expr2\\\n        << \"), actual: \" << FormatForComparisonFailureMessage(val1, val2)\\\n        << \" vs \" << FormatForComparisonFailureMessage(val2, val1);\\\n  }\\\n}\\\nGTEST_API_ AssertionResult CmpHelper##op_name(\\\n    const char* expr1, const char* expr2, BiggestInt val1, BiggestInt val2)\n\n// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.\n\n// Implements the helper function for {ASSERT|EXPECT}_NE\nGTEST_IMPL_CMP_HELPER_(NE, !=);\n// Implements the helper function for {ASSERT|EXPECT}_LE\nGTEST_IMPL_CMP_HELPER_(LE, <=);\n// Implements the helper function for {ASSERT|EXPECT}_LT\nGTEST_IMPL_CMP_HELPER_(LT, <);\n// Implements the helper function for {ASSERT|EXPECT}_GE\nGTEST_IMPL_CMP_HELPER_(GE, >=);\n// Implements the helper function for {ASSERT|EXPECT}_GT\nGTEST_IMPL_CMP_HELPER_(GT, >);\n\n#undef GTEST_IMPL_CMP_HELPER_\n\n// The helper function for {ASSERT|EXPECT}_STREQ.\n//\n// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.\nGTEST_API_ AssertionResult CmpHelperSTREQ(const char* expected_expression,\n                                          const char* actual_expression,\n                                          const char* expected,\n                                          const char* actual);\n\n// The helper function for {ASSERT|EXPECT}_STRCASEEQ.\n//\n// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.\nGTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* expected_expression,\n                                              const char* actual_expression,\n                                              const char* expected,\n                                              const char* actual);\n\n// The helper function for {ASSERT|EXPECT}_STRNE.\n//\n// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.\nGTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression,\n                                          const char* s2_expression,\n                                          const char* s1,\n                                          const char* s2);\n\n// The helper function for {ASSERT|EXPECT}_STRCASENE.\n//\n// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.\nGTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression,\n                                              const char* s2_expression,\n                                              const char* s1,\n                                              const char* s2);\n\n\n// Helper function for *_STREQ on wide strings.\n//\n// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.\nGTEST_API_ AssertionResult CmpHelperSTREQ(const char* expected_expression,\n                                          const char* actual_expression,\n                                          const wchar_t* expected,\n                                          const wchar_t* actual);\n\n// Helper function for *_STRNE on wide strings.\n//\n// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.\nGTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression,\n                                          const char* s2_expression,\n                                          const wchar_t* s1,\n                                          const wchar_t* s2);\n\n}  // namespace internal\n\n// IsSubstring() and IsNotSubstring() are intended to be used as the\n// first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by\n// themselves.  They check whether needle is a substring of haystack\n// (nullptr is considered a substring of itself only), and return an\n// appropriate error message when they fail.\n//\n// The {needle,haystack}_expr arguments are the stringified\n// expressions that generated the two real arguments.\nGTEST_API_ AssertionResult IsSubstring(\n    const char* needle_expr, const char* haystack_expr,\n    const char* needle, const char* haystack);\nGTEST_API_ AssertionResult IsSubstring(\n    const char* needle_expr, const char* haystack_expr,\n    const wchar_t* needle, const wchar_t* haystack);\nGTEST_API_ AssertionResult IsNotSubstring(\n    const char* needle_expr, const char* haystack_expr,\n    const char* needle, const char* haystack);\nGTEST_API_ AssertionResult IsNotSubstring(\n    const char* needle_expr, const char* haystack_expr,\n    const wchar_t* needle, const wchar_t* haystack);\nGTEST_API_ AssertionResult IsSubstring(\n    const char* needle_expr, const char* haystack_expr,\n    const ::std::string& needle, const ::std::string& haystack);\nGTEST_API_ AssertionResult IsNotSubstring(\n    const char* needle_expr, const char* haystack_expr,\n    const ::std::string& needle, const ::std::string& haystack);\n\n#if GTEST_HAS_STD_WSTRING\nGTEST_API_ AssertionResult IsSubstring(\n    const char* needle_expr, const char* haystack_expr,\n    const ::std::wstring& needle, const ::std::wstring& haystack);\nGTEST_API_ AssertionResult IsNotSubstring(\n    const char* needle_expr, const char* haystack_expr,\n    const ::std::wstring& needle, const ::std::wstring& haystack);\n#endif  // GTEST_HAS_STD_WSTRING\n\nnamespace internal {\n\n// Helper template function for comparing floating-points.\n//\n// Template parameter:\n//\n//   RawType: the raw floating-point type (either float or double)\n//\n// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.\ntemplate <typename RawType>\nAssertionResult CmpHelperFloatingPointEQ(const char* expected_expression,\n                                         const char* actual_expression,\n                                         RawType expected,\n                                         RawType actual) {\n  const FloatingPoint<RawType> lhs(expected), rhs(actual);\n\n  if (lhs.AlmostEquals(rhs)) {\n    return AssertionSuccess();\n  }\n\n  ::std::stringstream expected_ss;\n  expected_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)\n              << expected;\n\n  ::std::stringstream actual_ss;\n  actual_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)\n            << actual;\n\n  return EqFailure(expected_expression,\n                   actual_expression,\n                   StringStreamToString(&expected_ss),\n                   StringStreamToString(&actual_ss),\n                   false);\n}\n\n// Helper function for implementing ASSERT_NEAR.\n//\n// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.\nGTEST_API_ AssertionResult DoubleNearPredFormat(const char* expr1,\n                                                const char* expr2,\n                                                const char* abs_error_expr,\n                                                double val1,\n                                                double val2,\n                                                double abs_error);\n\n// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.\n// A class that enables one to stream messages to assertion macros\nclass GTEST_API_ AssertHelper {\n public:\n  // Constructor.\n  AssertHelper(TestPartResult::Type type,\n               const char* file,\n               int line,\n               const char* message);\n  ~AssertHelper();\n\n  // Message assignment is a semantic trick to enable assertion\n  // streaming; see the GTEST_MESSAGE_ macro below.\n  void operator=(const Message& message) const;\n\n private:\n  // We put our data in a struct so that the size of the AssertHelper class can\n  // be as small as possible.  This is important because gcc is incapable of\n  // re-using stack space even for temporary variables, so every EXPECT_EQ\n  // reserves stack space for another AssertHelper.\n  struct AssertHelperData {\n    AssertHelperData(TestPartResult::Type t,\n                     const char* srcfile,\n                     int line_num,\n                     const char* msg)\n        : type(t), file(srcfile), line(line_num), message(msg) { }\n\n    TestPartResult::Type const type;\n    const char* const file;\n    int const line;\n    std::string const message;\n\n   private:\n    GTEST_DISALLOW_COPY_AND_ASSIGN_(AssertHelperData);\n  };\n\n  AssertHelperData* const data_;\n\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(AssertHelper);\n};\n\n}  // namespace internal\n\n#if GTEST_HAS_PARAM_TEST\n// The pure interface class that all value-parameterized tests inherit from.\n// A value-parameterized class must inherit from both ::testing::Test and\n// ::testing::WithParamInterface. In most cases that just means inheriting\n// from ::testing::TestWithParam, but more complicated test hierarchies\n// may need to inherit from Test and WithParamInterface at different levels.\n//\n// This interface has support for accessing the test parameter value via\n// the GetParam() method.\n//\n// Use it with one of the parameter generator defining functions, like Range(),\n// Values(), ValuesIn(), Bool(), and Combine().\n//\n// class FooTest : public ::testing::TestWithParam<int> {\n//  protected:\n//   FooTest() {\n//     // Can use GetParam() here.\n//   }\n//   virtual ~FooTest() {\n//     // Can use GetParam() here.\n//   }\n//   virtual void SetUp() {\n//     // Can use GetParam() here.\n//   }\n//   virtual void TearDown {\n//     // Can use GetParam() here.\n//   }\n// };\n// TEST_P(FooTest, DoesBar) {\n//   // Can use GetParam() method here.\n//   Foo foo;\n//   ASSERT_TRUE(foo.DoesBar(GetParam()));\n// }\n// INSTANTIATE_TEST_CASE_P(OneToTenRange, FooTest, ::testing::Range(1, 10));\n\ntemplate <typename T>\nclass WithParamInterface {\n public:\n  typedef T ParamType;\n  virtual ~WithParamInterface() {}\n\n  // The current parameter value. Is also available in the test fixture's\n  // constructor. This member function is non-static, even though it only\n  // references static data, to reduce the opportunity for incorrect uses\n  // like writing 'WithParamInterface<bool>::GetParam()' for a test that\n  // uses a fixture whose parameter type is int.\n  const ParamType& GetParam() const {\n    GTEST_CHECK_(parameter_ != nullptr)\n        << \"GetParam() can only be called inside a value-parameterized test \"\n        << \"-- did you intend to write TEST_P instead of TEST_F?\";\n    return *parameter_;\n  }\n\n private:\n  // Sets parameter value. The caller is responsible for making sure the value\n  // remains alive and unchanged throughout the current test.\n  static void SetParam(const ParamType* parameter) {\n    parameter_ = parameter;\n  }\n\n  // Static value used for accessing parameter during a test lifetime.\n  static const ParamType* parameter_;\n\n  // TestClass must be a subclass of WithParamInterface<T> and Test.\n  template <class TestClass> friend class internal::ParameterizedTestFactory;\n};\n\ntemplate <typename T>\nconst T* WithParamInterface<T>::parameter_ = nullptr;\n\n// Most value-parameterized classes can ignore the existence of\n// WithParamInterface, and can just inherit from ::testing::TestWithParam.\n\ntemplate <typename T>\nclass TestWithParam : public Test, public WithParamInterface<T> {\n};\n\n#endif  // GTEST_HAS_PARAM_TEST\n\n// Macros for indicating success/failure in test code.\n\n// ADD_FAILURE unconditionally adds a failure to the current test.\n// SUCCEED generates a success - it doesn't automatically make the\n// current test successful, as a test is only successful when it has\n// no failure.\n//\n// EXPECT_* verifies that a certain condition is satisfied.  If not,\n// it behaves like ADD_FAILURE.  In particular:\n//\n//   EXPECT_TRUE  verifies that a Boolean condition is true.\n//   EXPECT_FALSE verifies that a Boolean condition is false.\n//\n// FAIL and ASSERT_* are similar to ADD_FAILURE and EXPECT_*, except\n// that they will also abort the current function on failure.  People\n// usually want the fail-fast behavior of FAIL and ASSERT_*, but those\n// writing data-driven tests often find themselves using ADD_FAILURE\n// and EXPECT_* more.\n\n// Generates a nonfatal failure with a generic message.\n#define ADD_FAILURE() GTEST_NONFATAL_FAILURE_(\"Failed\")\n\n// Generates a nonfatal failure at the given source file location with\n// a generic message.\n#define ADD_FAILURE_AT(file, line) \\\n  GTEST_MESSAGE_AT_(file, line, \"Failed\", \\\n                    ::testing::TestPartResult::kNonFatalFailure)\n\n// Generates a fatal failure with a generic message.\n#define GTEST_FAIL() GTEST_FATAL_FAILURE_(\"Failed\")\n\n// Define this macro to 1 to omit the definition of FAIL(), which is a\n// generic name and clashes with some other libraries.\n#if !GTEST_DONT_DEFINE_FAIL\n# define FAIL() GTEST_FAIL()\n#endif\n\n// Generates a success with a generic message.\n#define GTEST_SUCCEED() GTEST_SUCCESS_(\"Succeeded\")\n\n// Define this macro to 1 to omit the definition of SUCCEED(), which\n// is a generic name and clashes with some other libraries.\n#if !GTEST_DONT_DEFINE_SUCCEED\n# define SUCCEED() GTEST_SUCCEED()\n#endif\n\n// Macros for testing exceptions.\n//\n//    * {ASSERT|EXPECT}_THROW(statement, expected_exception):\n//         Tests that the statement throws the expected exception.\n//    * {ASSERT|EXPECT}_NO_THROW(statement):\n//         Tests that the statement doesn't throw any exception.\n//    * {ASSERT|EXPECT}_ANY_THROW(statement):\n//         Tests that the statement throws an exception.\n\n#define EXPECT_THROW(statement, expected_exception) \\\n  GTEST_TEST_THROW_(statement, expected_exception, GTEST_NONFATAL_FAILURE_)\n#define EXPECT_NO_THROW(statement) \\\n  GTEST_TEST_NO_THROW_(statement, GTEST_NONFATAL_FAILURE_)\n#define EXPECT_ANY_THROW(statement) \\\n  GTEST_TEST_ANY_THROW_(statement, GTEST_NONFATAL_FAILURE_)\n#define ASSERT_THROW(statement, expected_exception) \\\n  GTEST_TEST_THROW_(statement, expected_exception, GTEST_FATAL_FAILURE_)\n#define ASSERT_NO_THROW(statement) \\\n  GTEST_TEST_NO_THROW_(statement, GTEST_FATAL_FAILURE_)\n#define ASSERT_ANY_THROW(statement) \\\n  GTEST_TEST_ANY_THROW_(statement, GTEST_FATAL_FAILURE_)\n\n// Boolean assertions. Condition can be either a Boolean expression or an\n// AssertionResult. For more information on how to use AssertionResult with\n// these macros see comments on that class.\n#define EXPECT_TRUE(condition) \\\n  GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \\\n                      GTEST_NONFATAL_FAILURE_)\n#define EXPECT_FALSE(condition) \\\n  GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \\\n                      GTEST_NONFATAL_FAILURE_)\n#define ASSERT_TRUE(condition) \\\n  GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \\\n                      GTEST_FATAL_FAILURE_)\n#define ASSERT_FALSE(condition) \\\n  GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \\\n                      GTEST_FATAL_FAILURE_)\n\n// Includes the auto-generated header that implements a family of\n// generic predicate assertion macros.\n// Copyright 2006, Google Inc.\n// All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n// This file is AUTOMATICALLY GENERATED on 10/31/2011 by command\n// 'gen_gtest_pred_impl.py 5'.  DO NOT EDIT BY HAND!\n//\n// Implements a family of generic predicate assertion macros.\n\n#ifndef GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_\n#define GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_\n\n// Makes sure this header is not included before gtest.h.\n#ifndef GTEST_INCLUDE_GTEST_GTEST_H_\n# error Do not include gtest_pred_impl.h directly.  Include gtest.h instead.\n#endif  // GTEST_INCLUDE_GTEST_GTEST_H_\n\n// This header implements a family of generic predicate assertion\n// macros:\n//\n//   ASSERT_PRED_FORMAT1(pred_format, v1)\n//   ASSERT_PRED_FORMAT2(pred_format, v1, v2)\n//   ...\n//\n// where pred_format is a function or functor that takes n (in the\n// case of ASSERT_PRED_FORMATn) values and their source expression\n// text, and returns a testing::AssertionResult.  See the definition\n// of ASSERT_EQ in gtest.h for an example.\n//\n// If you don't care about formatting, you can use the more\n// restrictive version:\n//\n//   ASSERT_PRED1(pred, v1)\n//   ASSERT_PRED2(pred, v1, v2)\n//   ...\n//\n// where pred is an n-ary function or functor that returns bool,\n// and the values v1, v2, ..., must support the << operator for\n// streaming to std::ostream.\n//\n// We also define the EXPECT_* variations.\n//\n// For now we only support predicates whose arity is at most 5.\n// Please email googletestframework@googlegroups.com if you need\n// support for higher arities.\n\n// GTEST_ASSERT_ is the basic statement to which all of the assertions\n// in this file reduce.  Don't use this in your code.\n\n#define GTEST_ASSERT_(expression, on_failure) \\\n  GTEST_AMBIGUOUS_ELSE_BLOCKER_ \\\n  if (const ::testing::AssertionResult gtest_ar = (expression)) \\\n    ; \\\n  else \\\n    on_failure(gtest_ar.failure_message())\n\n\n// Helper function for implementing {EXPECT|ASSERT}_PRED1.  Don't use\n// this in your code.\ntemplate <typename Pred,\n          typename T1>\nAssertionResult AssertPred1Helper(const char* pred_text,\n                                  const char* e1,\n                                  Pred pred,\n                                  const T1& v1) {\n  if (pred(v1)) return AssertionSuccess();\n\n  return AssertionFailure() << pred_text << \"(\"\n                            << e1 << \") evaluates to false, where\"\n                            << \"\\n\" << e1 << \" evaluates to \" << v1;\n}\n\n// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT1.\n// Don't use this in your code.\n#define GTEST_PRED_FORMAT1_(pred_format, v1, on_failure)\\\n  GTEST_ASSERT_(pred_format(#v1, v1), \\\n                on_failure)\n\n// Internal macro for implementing {EXPECT|ASSERT}_PRED1.  Don't use\n// this in your code.\n#define GTEST_PRED1_(pred, v1, on_failure)\\\n  GTEST_ASSERT_(::testing::AssertPred1Helper(#pred, \\\n                                             #v1, \\\n                                             pred, \\\n                                             v1), on_failure)\n\n// Unary predicate assertion macros.\n#define EXPECT_PRED_FORMAT1(pred_format, v1) \\\n  GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_NONFATAL_FAILURE_)\n#define EXPECT_PRED1(pred, v1) \\\n  GTEST_PRED1_(pred, v1, GTEST_NONFATAL_FAILURE_)\n#define ASSERT_PRED_FORMAT1(pred_format, v1) \\\n  GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_FATAL_FAILURE_)\n#define ASSERT_PRED1(pred, v1) \\\n  GTEST_PRED1_(pred, v1, GTEST_FATAL_FAILURE_)\n\n\n\n// Helper function for implementing {EXPECT|ASSERT}_PRED2.  Don't use\n// this in your code.\ntemplate <typename Pred,\n          typename T1,\n          typename T2>\nAssertionResult AssertPred2Helper(const char* pred_text,\n                                  const char* e1,\n                                  const char* e2,\n                                  Pred pred,\n                                  const T1& v1,\n                                  const T2& v2) {\n  if (pred(v1, v2)) return AssertionSuccess();\n\n  return AssertionFailure() << pred_text << \"(\"\n                            << e1 << \", \"\n                            << e2 << \") evaluates to false, where\"\n                            << \"\\n\" << e1 << \" evaluates to \" << v1\n                            << \"\\n\" << e2 << \" evaluates to \" << v2;\n}\n\n// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT2.\n// Don't use this in your code.\n#define GTEST_PRED_FORMAT2_(pred_format, v1, v2, on_failure)\\\n  GTEST_ASSERT_(pred_format(#v1, #v2, v1, v2), on_failure)\n\n// Internal macro for implementing {EXPECT|ASSERT}_PRED2.  Don't use\n// this in your code.\n#define GTEST_PRED2_(pred, v1, v2, on_failure)\\\n  GTEST_ASSERT_(::testing::AssertPred2Helper(#pred, \\\n                                             #v1, \\\n                                             #v2, \\\n                                             pred, \\\n                                             v1, \\\n                                             v2), on_failure)\n\n// Binary predicate assertion macros.\n#define EXPECT_PRED_FORMAT2(pred_format, v1, v2) \\\n  GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_NONFATAL_FAILURE_)\n#define EXPECT_PRED2(pred, v1, v2) \\\n  GTEST_PRED2_(pred, v1, v2, GTEST_NONFATAL_FAILURE_)\n#define ASSERT_PRED_FORMAT2(pred_format, v1, v2) \\\n  GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_FATAL_FAILURE_)\n#define ASSERT_PRED2(pred, v1, v2) \\\n  GTEST_PRED2_(pred, v1, v2, GTEST_FATAL_FAILURE_)\n\n\n\n// Helper function for implementing {EXPECT|ASSERT}_PRED3.  Don't use\n// this in your code.\ntemplate <typename Pred,\n          typename T1,\n          typename T2,\n          typename T3>\nAssertionResult AssertPred3Helper(const char* pred_text,\n                                  const char* e1,\n                                  const char* e2,\n                                  const char* e3,\n                                  Pred pred,\n                                  const T1& v1,\n                                  const T2& v2,\n                                  const T3& v3) {\n  if (pred(v1, v2, v3)) return AssertionSuccess();\n\n  return AssertionFailure() << pred_text << \"(\"\n                            << e1 << \", \"\n                            << e2 << \", \"\n                            << e3 << \") evaluates to false, where\"\n                            << \"\\n\" << e1 << \" evaluates to \" << v1\n                            << \"\\n\" << e2 << \" evaluates to \" << v2\n                            << \"\\n\" << e3 << \" evaluates to \" << v3;\n}\n\n// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT3.\n// Don't use this in your code.\n#define GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, on_failure)\\\n  GTEST_ASSERT_(pred_format(#v1, #v2, #v3, v1, v2, v3), \\\n                on_failure)\n\n// Internal macro for implementing {EXPECT|ASSERT}_PRED3.  Don't use\n// this in your code.\n#define GTEST_PRED3_(pred, v1, v2, v3, on_failure)\\\n  GTEST_ASSERT_(::testing::AssertPred3Helper(#pred, \\\n                                             #v1, \\\n                                             #v2, \\\n                                             #v3, \\\n                                             pred, \\\n                                             v1, \\\n                                             v2, \\\n                                             v3), on_failure)\n\n// Ternary predicate assertion macros.\n#define EXPECT_PRED_FORMAT3(pred_format, v1, v2, v3) \\\n  GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_NONFATAL_FAILURE_)\n#define EXPECT_PRED3(pred, v1, v2, v3) \\\n  GTEST_PRED3_(pred, v1, v2, v3, GTEST_NONFATAL_FAILURE_)\n#define ASSERT_PRED_FORMAT3(pred_format, v1, v2, v3) \\\n  GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_FATAL_FAILURE_)\n#define ASSERT_PRED3(pred, v1, v2, v3) \\\n  GTEST_PRED3_(pred, v1, v2, v3, GTEST_FATAL_FAILURE_)\n\n\n\n// Helper function for implementing {EXPECT|ASSERT}_PRED4.  Don't use\n// this in your code.\ntemplate <typename Pred,\n          typename T1,\n          typename T2,\n          typename T3,\n          typename T4>\nAssertionResult AssertPred4Helper(const char* pred_text,\n                                  const char* e1,\n                                  const char* e2,\n                                  const char* e3,\n                                  const char* e4,\n                                  Pred pred,\n                                  const T1& v1,\n                                  const T2& v2,\n                                  const T3& v3,\n                                  const T4& v4) {\n  if (pred(v1, v2, v3, v4)) return AssertionSuccess();\n\n  return AssertionFailure() << pred_text << \"(\"\n                            << e1 << \", \"\n                            << e2 << \", \"\n                            << e3 << \", \"\n                            << e4 << \") evaluates to false, where\"\n                            << \"\\n\" << e1 << \" evaluates to \" << v1\n                            << \"\\n\" << e2 << \" evaluates to \" << v2\n                            << \"\\n\" << e3 << \" evaluates to \" << v3\n                            << \"\\n\" << e4 << \" evaluates to \" << v4;\n}\n\n// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT4.\n// Don't use this in your code.\n#define GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, on_failure)\\\n  GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, v1, v2, v3, v4), \\\n                on_failure)\n\n// Internal macro for implementing {EXPECT|ASSERT}_PRED4.  Don't use\n// this in your code.\n#define GTEST_PRED4_(pred, v1, v2, v3, v4, on_failure)\\\n  GTEST_ASSERT_(::testing::AssertPred4Helper(#pred, \\\n                                             #v1, \\\n                                             #v2, \\\n                                             #v3, \\\n                                             #v4, \\\n                                             pred, \\\n                                             v1, \\\n                                             v2, \\\n                                             v3, \\\n                                             v4), on_failure)\n\n// 4-ary predicate assertion macros.\n#define EXPECT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \\\n  GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_)\n#define EXPECT_PRED4(pred, v1, v2, v3, v4) \\\n  GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_)\n#define ASSERT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \\\n  GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_FATAL_FAILURE_)\n#define ASSERT_PRED4(pred, v1, v2, v3, v4) \\\n  GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_FATAL_FAILURE_)\n\n\n\n// Helper function for implementing {EXPECT|ASSERT}_PRED5.  Don't use\n// this in your code.\ntemplate <typename Pred,\n          typename T1,\n          typename T2,\n          typename T3,\n          typename T4,\n          typename T5>\nAssertionResult AssertPred5Helper(const char* pred_text,\n                                  const char* e1,\n                                  const char* e2,\n                                  const char* e3,\n                                  const char* e4,\n                                  const char* e5,\n                                  Pred pred,\n                                  const T1& v1,\n                                  const T2& v2,\n                                  const T3& v3,\n                                  const T4& v4,\n                                  const T5& v5) {\n  if (pred(v1, v2, v3, v4, v5)) return AssertionSuccess();\n\n  return AssertionFailure() << pred_text << \"(\"\n                            << e1 << \", \"\n                            << e2 << \", \"\n                            << e3 << \", \"\n                            << e4 << \", \"\n                            << e5 << \") evaluates to false, where\"\n                            << \"\\n\" << e1 << \" evaluates to \" << v1\n                            << \"\\n\" << e2 << \" evaluates to \" << v2\n                            << \"\\n\" << e3 << \" evaluates to \" << v3\n                            << \"\\n\" << e4 << \" evaluates to \" << v4\n                            << \"\\n\" << e5 << \" evaluates to \" << v5;\n}\n\n// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT5.\n// Don't use this in your code.\n#define GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, on_failure)\\\n  GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, #v5, v1, v2, v3, v4, v5), \\\n                on_failure)\n\n// Internal macro for implementing {EXPECT|ASSERT}_PRED5.  Don't use\n// this in your code.\n#define GTEST_PRED5_(pred, v1, v2, v3, v4, v5, on_failure)\\\n  GTEST_ASSERT_(::testing::AssertPred5Helper(#pred, \\\n                                             #v1, \\\n                                             #v2, \\\n                                             #v3, \\\n                                             #v4, \\\n                                             #v5, \\\n                                             pred, \\\n                                             v1, \\\n                                             v2, \\\n                                             v3, \\\n                                             v4, \\\n                                             v5), on_failure)\n\n// 5-ary predicate assertion macros.\n#define EXPECT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \\\n  GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_)\n#define EXPECT_PRED5(pred, v1, v2, v3, v4, v5) \\\n  GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_)\n#define ASSERT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \\\n  GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_)\n#define ASSERT_PRED5(pred, v1, v2, v3, v4, v5) \\\n  GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_)\n\n\n\n#endif  // GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_\n\n// Macros for testing equalities and inequalities.\n//\n//    * {ASSERT|EXPECT}_EQ(expected, actual): Tests that expected == actual\n//    * {ASSERT|EXPECT}_NE(v1, v2):           Tests that v1 != v2\n//    * {ASSERT|EXPECT}_LT(v1, v2):           Tests that v1 < v2\n//    * {ASSERT|EXPECT}_LE(v1, v2):           Tests that v1 <= v2\n//    * {ASSERT|EXPECT}_GT(v1, v2):           Tests that v1 > v2\n//    * {ASSERT|EXPECT}_GE(v1, v2):           Tests that v1 >= v2\n//\n// When they are not, Google Test prints both the tested expressions and\n// their actual values.  The values must be compatible built-in types,\n// or you will get a compiler error.  By \"compatible\" we mean that the\n// values can be compared by the respective operator.\n//\n// Note:\n//\n//   1. It is possible to make a user-defined type work with\n//   {ASSERT|EXPECT}_??(), but that requires overloading the\n//   comparison operators and is thus discouraged by the Google C++\n//   Usage Guide.  Therefore, you are advised to use the\n//   {ASSERT|EXPECT}_TRUE() macro to assert that two objects are\n//   equal.\n//\n//   2. The {ASSERT|EXPECT}_??() macros do pointer comparisons on\n//   pointers (in particular, C strings).  Therefore, if you use it\n//   with two C strings, you are testing how their locations in memory\n//   are related, not how their content is related.  To compare two C\n//   strings by content, use {ASSERT|EXPECT}_STR*().\n//\n//   3. {ASSERT|EXPECT}_EQ(expected, actual) is preferred to\n//   {ASSERT|EXPECT}_TRUE(expected == actual), as the former tells you\n//   what the actual value is when it fails, and similarly for the\n//   other comparisons.\n//\n//   4. Do not depend on the order in which {ASSERT|EXPECT}_??()\n//   evaluate their arguments, which is undefined.\n//\n//   5. These macros evaluate their arguments exactly once.\n//\n// Examples:\n//\n//   EXPECT_NE(5, Foo());\n//   EXPECT_EQ(nullptr, a_pointer);\n//   ASSERT_LT(i, array_size);\n//   ASSERT_GT(records.size(), 0) << \"There is no record left.\";\n\n#define EXPECT_EQ(expected, actual) \\\n  EXPECT_PRED_FORMAT2(::testing::internal:: \\\n                      EqHelper<GTEST_IS_NULL_LITERAL_(expected)>::Compare, \\\n                      expected, actual)\n#define EXPECT_NE(expected, actual) \\\n  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperNE, expected, actual)\n#define EXPECT_LE(val1, val2) \\\n  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2)\n#define EXPECT_LT(val1, val2) \\\n  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2)\n#define EXPECT_GE(val1, val2) \\\n  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2)\n#define EXPECT_GT(val1, val2) \\\n  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2)\n\n#define GTEST_ASSERT_EQ(expected, actual) \\\n  ASSERT_PRED_FORMAT2(::testing::internal:: \\\n                      EqHelper<GTEST_IS_NULL_LITERAL_(expected)>::Compare, \\\n                      expected, actual)\n#define GTEST_ASSERT_NE(val1, val2) \\\n  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2)\n#define GTEST_ASSERT_LE(val1, val2) \\\n  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2)\n#define GTEST_ASSERT_LT(val1, val2) \\\n  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2)\n#define GTEST_ASSERT_GE(val1, val2) \\\n  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2)\n#define GTEST_ASSERT_GT(val1, val2) \\\n  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2)\n\n// Define macro GTEST_DONT_DEFINE_ASSERT_XY to 1 to omit the definition of\n// ASSERT_XY(), which clashes with some users' own code.\n\n#if !GTEST_DONT_DEFINE_ASSERT_EQ\n# define ASSERT_EQ(val1, val2) GTEST_ASSERT_EQ(val1, val2)\n#endif\n\n#if !GTEST_DONT_DEFINE_ASSERT_NE\n# define ASSERT_NE(val1, val2) GTEST_ASSERT_NE(val1, val2)\n#endif\n\n#if !GTEST_DONT_DEFINE_ASSERT_LE\n# define ASSERT_LE(val1, val2) GTEST_ASSERT_LE(val1, val2)\n#endif\n\n#if !GTEST_DONT_DEFINE_ASSERT_LT\n# define ASSERT_LT(val1, val2) GTEST_ASSERT_LT(val1, val2)\n#endif\n\n#if !GTEST_DONT_DEFINE_ASSERT_GE\n# define ASSERT_GE(val1, val2) GTEST_ASSERT_GE(val1, val2)\n#endif\n\n#if !GTEST_DONT_DEFINE_ASSERT_GT\n# define ASSERT_GT(val1, val2) GTEST_ASSERT_GT(val1, val2)\n#endif\n\n// C-string Comparisons.  All tests treat nullptr and any non-null string\n// as different.  Two nullptrs are equal.\n//\n//    * {ASSERT|EXPECT}_STREQ(s1, s2):     Tests that s1 == s2\n//    * {ASSERT|EXPECT}_STRNE(s1, s2):     Tests that s1 != s2\n//    * {ASSERT|EXPECT}_STRCASEEQ(s1, s2): Tests that s1 == s2, ignoring case\n//    * {ASSERT|EXPECT}_STRCASENE(s1, s2): Tests that s1 != s2, ignoring case\n//\n// For wide or narrow string objects, you can use the\n// {ASSERT|EXPECT}_??() macros.\n//\n// Don't depend on the order in which the arguments are evaluated,\n// which is undefined.\n//\n// These macros evaluate their arguments exactly once.\n\n#define EXPECT_STREQ(expected, actual) \\\n  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, expected, actual)\n#define EXPECT_STRNE(s1, s2) \\\n  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2)\n#define EXPECT_STRCASEEQ(expected, actual) \\\n  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, expected, actual)\n#define EXPECT_STRCASENE(s1, s2)\\\n  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2)\n\n#define ASSERT_STREQ(expected, actual) \\\n  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, expected, actual)\n#define ASSERT_STRNE(s1, s2) \\\n  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2)\n#define ASSERT_STRCASEEQ(expected, actual) \\\n  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, expected, actual)\n#define ASSERT_STRCASENE(s1, s2)\\\n  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2)\n\n// Macros for comparing floating-point numbers.\n//\n//    * {ASSERT|EXPECT}_FLOAT_EQ(expected, actual):\n//         Tests that two float values are almost equal.\n//    * {ASSERT|EXPECT}_DOUBLE_EQ(expected, actual):\n//         Tests that two double values are almost equal.\n//    * {ASSERT|EXPECT}_NEAR(v1, v2, abs_error):\n//         Tests that v1 and v2 are within the given distance to each other.\n//\n// Google Test uses ULP-based comparison to automatically pick a default\n// error bound that is appropriate for the operands.  See the\n// FloatingPoint template class in gtest-internal.h if you are\n// interested in the implementation details.\n\n#define EXPECT_FLOAT_EQ(expected, actual)\\\n  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<float>, \\\n                      expected, actual)\n\n#define EXPECT_DOUBLE_EQ(expected, actual)\\\n  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<double>, \\\n                      expected, actual)\n\n#define ASSERT_FLOAT_EQ(expected, actual)\\\n  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<float>, \\\n                      expected, actual)\n\n#define ASSERT_DOUBLE_EQ(expected, actual)\\\n  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<double>, \\\n                      expected, actual)\n\n#define EXPECT_NEAR(val1, val2, abs_error)\\\n  EXPECT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, \\\n                      val1, val2, abs_error)\n\n#define ASSERT_NEAR(val1, val2, abs_error)\\\n  ASSERT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, \\\n                      val1, val2, abs_error)\n\n// These predicate format functions work on floating-point values, and\n// can be used in {ASSERT|EXPECT}_PRED_FORMAT2*(), e.g.\n//\n//   EXPECT_PRED_FORMAT2(testing::DoubleLE, Foo(), 5.0);\n\n// Asserts that val1 is less than, or almost equal to, val2.  Fails\n// otherwise.  In particular, it fails if either val1 or val2 is NaN.\nGTEST_API_ AssertionResult FloatLE(const char* expr1, const char* expr2,\n                                   float val1, float val2);\nGTEST_API_ AssertionResult DoubleLE(const char* expr1, const char* expr2,\n                                    double val1, double val2);\n\n\n#if GTEST_OS_WINDOWS\n\n// Macros that test for HRESULT failure and success, these are only useful\n// on Windows, and rely on Windows SDK macros and APIs to compile.\n//\n//    * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr)\n//\n// When expr unexpectedly fails or succeeds, Google Test prints the\n// expected result and the actual result with both a human-readable\n// string representation of the error, if available, as well as the\n// hex result code.\n# define EXPECT_HRESULT_SUCCEEDED(expr) \\\n    EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr))\n\n# define ASSERT_HRESULT_SUCCEEDED(expr) \\\n    ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr))\n\n# define EXPECT_HRESULT_FAILED(expr) \\\n    EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))\n\n# define ASSERT_HRESULT_FAILED(expr) \\\n    ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))\n\n#endif  // GTEST_OS_WINDOWS\n\n// Macros that execute statement and check that it doesn't generate new fatal\n// failures in the current thread.\n//\n//   * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement);\n//\n// Examples:\n//\n//   EXPECT_NO_FATAL_FAILURE(Process());\n//   ASSERT_NO_FATAL_FAILURE(Process()) << \"Process() failed\";\n//\n#define ASSERT_NO_FATAL_FAILURE(statement) \\\n    GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_FATAL_FAILURE_)\n#define EXPECT_NO_FATAL_FAILURE(statement) \\\n    GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_NONFATAL_FAILURE_)\n\n// Causes a trace (including the source file path, the current line\n// number, and the given message) to be included in every test failure\n// message generated by code in the current scope.  The effect is\n// undone when the control leaves the current scope.\n//\n// The message argument can be anything streamable to std::ostream.\n//\n// In the implementation, we include the current line number as part\n// of the dummy variable name, thus allowing multiple SCOPED_TRACE()s\n// to appear in the same block - as long as they are on different\n// lines.\n#define SCOPED_TRACE(message) \\\n  ::testing::internal::ScopedTrace GTEST_CONCAT_TOKEN_(gtest_trace_, __LINE__)(\\\n    __FILE__, __LINE__, ::testing::Message() << (message))\n\n// Compile-time assertion for type equality.\n// StaticAssertTypeEq<type1, type2>() compiles iff type1 and type2 are\n// the same type.  The value it returns is not interesting.\n//\n// Instead of making StaticAssertTypeEq a class template, we make it a\n// function template that invokes a helper class template.  This\n// prevents a user from misusing StaticAssertTypeEq<T1, T2> by\n// defining objects of that type.\n//\n// CAVEAT:\n//\n// When used inside a method of a class template,\n// StaticAssertTypeEq<T1, T2>() is effective ONLY IF the method is\n// instantiated.  For example, given:\n//\n//   template <typename T> class Foo {\n//    public:\n//     void Bar() { testing::StaticAssertTypeEq<int, T>(); }\n//   };\n//\n// the code:\n//\n//   void Test1() { Foo<bool> foo; }\n//\n// will NOT generate a compiler error, as Foo<bool>::Bar() is never\n// actually instantiated.  Instead, you need:\n//\n//   void Test2() { Foo<bool> foo; foo.Bar(); }\n//\n// to cause a compiler error.\ntemplate <typename T1, typename T2>\nbool StaticAssertTypeEq() {\n  (void)internal::StaticAssertTypeEqHelper<T1, T2>();\n  return true;\n}\n\n// Defines a test.\n//\n// The first parameter is the name of the test case, and the second\n// parameter is the name of the test within the test case.\n//\n// The convention is to end the test case name with \"Test\".  For\n// example, a test case for the Foo class can be named FooTest.\n//\n// The user should put his test code between braces after using this\n// macro.  Example:\n//\n//   TEST(FooTest, InitializesCorrectly) {\n//     Foo foo;\n//     EXPECT_TRUE(foo.StatusIsOK());\n//   }\n\n// Note that we call GetTestTypeId() instead of GetTypeId<\n// ::testing::Test>() here to get the type ID of testing::Test.  This\n// is to work around a suspected linker bug when using Google Test as\n// a framework on Mac OS X.  The bug causes GetTypeId<\n// ::testing::Test>() to return different values depending on whether\n// the call is from the Google Test framework itself or from user test\n// code.  GetTestTypeId() is guaranteed to always return the same\n// value, as it always calls GetTypeId<>() from the Google Test\n// framework.\n#define GTEST_TEST(test_case_name, test_name)\\\n  GTEST_TEST_(test_case_name, test_name, \\\n              ::testing::Test, ::testing::internal::GetTestTypeId())\n\n// Define this macro to 1 to omit the definition of TEST(), which\n// is a generic name and clashes with some other libraries.\n#if !GTEST_DONT_DEFINE_TEST\n# define TEST(test_case_name, test_name) GTEST_TEST(test_case_name, test_name)\n#endif\n\n// Defines a test that uses a test fixture.\n//\n// The first parameter is the name of the test fixture class, which\n// also doubles as the test case name.  The second parameter is the\n// name of the test within the test case.\n//\n// A test fixture class must be declared earlier.  The user should put\n// his test code between braces after using this macro.  Example:\n//\n//   class FooTest : public testing::Test {\n//    protected:\n//     virtual void SetUp() { b_.AddElement(3); }\n//\n//     Foo a_;\n//     Foo b_;\n//   };\n//\n//   TEST_F(FooTest, InitializesCorrectly) {\n//     EXPECT_TRUE(a_.StatusIsOK());\n//   }\n//\n//   TEST_F(FooTest, ReturnsElementCountCorrectly) {\n//     EXPECT_EQ(0, a_.size());\n//     EXPECT_EQ(1, b_.size());\n//   }\n\n#define TEST_F(test_fixture, test_name)\\\n  GTEST_TEST_(test_fixture, test_name, test_fixture, \\\n              ::testing::internal::GetTypeId<test_fixture>())\n\n}  // namespace testing\n\n// Use this function in main() to run all tests.  It returns 0 if all\n// tests are successful, or 1 otherwise.\n//\n// RUN_ALL_TESTS() should be invoked after the command line has been\n// parsed by InitGoogleTest().\n//\n// This function was formerly a macro; thus, it is in the global\n// namespace and has an all-caps name.\nint RUN_ALL_TESTS() GTEST_MUST_USE_RESULT_;\n\ninline int RUN_ALL_TESTS() {\n  return ::testing::UnitTest::GetInstance()->Run();\n}\n\n#endif  // GTEST_INCLUDE_GTEST_GTEST_H_\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/autograder/guiautograder.h",
    "content": "/*\n * File: guiautograder.h\n * ---------------------\n * \n * @author Marty Stepp\n * @version 2019/05/05\n * - dark mode support\n * @version 2019/04/23\n * - reset std::cout/cerr flags on every test run\n * @version 2019/04/22\n * - now uses image strip file for icons\n * @version 2018/10/07\n * - icon constants and path fixes\n * @version 2018/10/03\n * - renamed to AutograderGUI; various windows/UI merged into one window\n * @version 2018/09/03\n * - basic implementation completed; runnable tests with clickable interactors\n * @version 2018/08/31\n * - added containers for each unit test\n * @version 2018/08/27\n * - initial version, to replace old Java back-end version\n */\n\n#ifndef _guiautograder_h\n#define _guiautograder_h\n\n#include <string>\n#define INTERNAL_INCLUDE 1\n#include \"autograder.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gbutton.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gcheckbox.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gcontainer.h\"\n#define INTERNAL_INCLUDE 1\n#include \"glabel.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gwindow.h\"\n#define INTERNAL_INCLUDE 1\n#include \"map.h\"\n#define INTERNAL_INCLUDE 1\n#include \"unittestdetails.h\"\n#undef INTERNAL_INCLUDE\n\nnamespace stanfordcpplib {\nnamespace autograder {\n\nclass GuiAutograder : public Autograder {\npublic:\n    static GuiAutograder* instance();\n\n    virtual ~GuiAutograder() Q_DECL_OVERRIDE;\n\n    virtual void addCallbackButton(void (* func)(),\n                                   const std::string& text,\n                                   const std::string& icon);\n    virtual void addCategory(const std::string& categoryName, const std::string& categoryDescription = \"\") Q_DECL_OVERRIDE;\n    virtual void addTest(const std::string& testName, const std::string& categoryName = \"\") Q_DECL_OVERRIDE;\n    virtual bool autograderYesOrNo(std::string prompt, std::string reprompt = \"\", std::string defaultValue = \"\") Q_DECL_OVERRIDE;\n    bool catchExceptions() const;\n    void clearTestResults();\n    void clearTests();\n    virtual bool containsCategory(const std::string& categoryName) Q_DECL_OVERRIDE;\n    virtual void displayDiffs(const std::string& expectedOutput, const std::string& studentOutput,\n                              const std::string& diffs, const std::string& diffFile = \"\",\n                              int truncateHeight = -1) Q_DECL_OVERRIDE;\n    TestResult getTestResult(const std::string& testFullName) const;\n    bool isChecked(const std::string& testFullName) const;\n    virtual bool isGraphicalUI() const Q_DECL_OVERRIDE;\n    bool isStyleCheck() const;\n    void onClick_autograde();\n    void onClick_runManually();\n    virtual int mainFunc() Q_DECL_OVERRIDE;\n    virtual int runAllTestCases() Q_DECL_OVERRIDE;\n    virtual std::string runAndCapture(\n            int (* mainFunc)(),\n            const std::string& cinInput = \"\",\n            const std::string& outputFileName = \"\") Q_DECL_OVERRIDE;\n    virtual void runStyleChecker() Q_DECL_OVERRIDE;\n    virtual void runTest(stanfordcpplib::autograder::AutograderTest* test) Q_DECL_OVERRIDE;\n    void setCatchExceptions(bool catchExceptions);\n    virtual void setFailDetails(AutograderTest& test, const autograder::UnitTestDetails& deets) Q_DECL_OVERRIDE;\n    virtual void setFailDetails(const autograder::UnitTestDetails& deets) Q_DECL_OVERRIDE;\n    virtual void setTestCounts(int passCount, int testCount, bool isStyleCheck) Q_DECL_OVERRIDE;\n    virtual void setTestDetails(const std::string& testFullName, UnitTestDetails deets) Q_DECL_OVERRIDE;\n    void setTestingCompleted(bool visible);\n    virtual bool setTestResult(const std::string& testFullName, TestResult result) Q_DECL_OVERRIDE;\n    virtual bool setTestRuntime(const std::string& testFullName, long ms) Q_DECL_OVERRIDE;\n    void setVisible(bool visible);\n    void setWindowDescription(const std::string& description);\n    virtual void showLateDays(const std::string& filename = LATE_DAYS_FILENAME) Q_DECL_OVERRIDE;\n    virtual void showOutput(const std::string& output, bool showIfGraphical = true, bool showIfConsole = true) Q_DECL_OVERRIDE;\n    virtual void showStudentTextFile(const std::string& filename, int maxWidth = 0, int maxHeight = 0) Q_DECL_OVERRIDE;\n\nprivate:\n    struct TestInfo {\n        std::string name;\n        std::string category;\n        bool completed;\n        GCheckBox* checkbox;\n        GLabel* descriptionLabel;\n        GLabel* runtimeLabel;\n        GLabel* resultIconLabel;\n        GLabel* detailsLabel;\n        UnitTestDetails details;\n\n        std::string getFullName() const {\n            return category.empty() ? name : (category + \"_\" + name);\n        }\n    };\n\n    GuiAutograder();   // forbid construction\n\n    /*\n     * Called when test thread crashes with an exception.\n     */\n    void failWithException(const std::string& testFullName,\n                           const std::string& kind,\n                           const std::string& desc,\n                           const std::string& stackTrace = \"\");\n\n    int getCheckedTestCount() const;\n    void minimize(GContainer* category);\n    void minimize(GContainer* category, bool minimized);\n    void minimizeAll(bool minimized = true);\n    void selectAll(GContainer* category, bool selected);\n    void showTestDetails(const std::string& testFullName, bool force = false);\n    bool showTestDetailsInSameWindow(const std::string& testFullName) const;\n    void updateSouthText();\n\n    static GuiAutograder* _instance;\n    static GuiAutograder* _instanceStyleCheck;\n    static const bool AUTO_EXPAND_FAILED_TESTS;\n    static const int DEFAULT_WINDOW_WIDTH;\n    static const int DEFAULT_WINDOW_HEIGHT;\n    static const int MAX_VALUE_DISPLAY_LENGTH;\n    static int MAX_WINDOW_HEIGHT;\n\n    static const std::string COLOR_PASS;\n    static const std::string COLOR_PASS_DARK_MODE;\n    static const std::string COLOR_FAIL;\n    static const std::string COLOR_FAIL_DARK_MODE;\n    static const std::string COLOR_WARN;\n    static const std::string COLOR_WARN_DARK_MODE;\n    static const std::string COLOR_ZEBRA_STRIPE_1;\n    static const std::string COLOR_ZEBRA_STRIPE_1_DARK_MODE;\n    static const std::string COLOR_ZEBRA_STRIPE_2;\n    static const std::string COLOR_ZEBRA_STRIPE_2_DARK_MODE;\n\n    static const std::string ICON_FOLDER;\n    static const std::string ICON_ABOUT_FILENAME;\n    static const std::string ICON_AUTOGRADE_FILENAME;\n    static const std::string ICON_DESELECT_ALL_FILENAME;\n    static const std::string ICON_EXIT_FILENAME;\n    static const std::string ICON_FAIL_FILENAME;\n    static const std::string ICON_LATE_DAYS_FILENAME;\n    static const std::string ICON_MANUAL_FILENAME;\n    static const std::string ICON_MINIMIZE_FILENAME;\n    static const std::string ICON_PASS_FILENAME;\n    static const std::string ICON_PROGRESS_FILENAME;\n    static const std::string ICON_RUNNING_FILENAME;\n    static const std::string ICON_SELECT_ALL_FILENAME;\n    static const std::string ICON_STYLE_CHECK_FILENAME;\n    static const std::string ICON_UNKNOWN_FILENAME;\n    static const std::string ICON_WARNING_FILENAME;\n\n    GWindow* _window;\n    GButton* _autogradeButton;\n    GButton* _manualButton;\n    GButton* _styleCheckButton;\n    GButton* _lateDayButton;\n    GButton* _aboutButton;\n    GButton* _exitButton;\n    Vector<GButton*> _callbackButtons;\n    GContainer* _center;\n    GCheckBox* _catchErrorsBox;\n    // GLabel* _descriptionLabel;\n    GLabel* _startLabel;     // TODO: null on construct/destruct\n    GLabel* _southLabel;\n    GContainer* _bigButtons;\n    GContainer* _currentCategory;\n\n    Map<std::string, GContainer*> _allCategories;\n    Map<std::string, TestInfo*> _allTestInfo;\n    Map<std::string, QPixmap> _iconStrip;\n\n    int _passCount;\n    int _testCount;\n    // int _testPanelHeight = -1;\n    // bool _allCategoriesHidden = false;\n    // bool _checkboxesShown = true;\n    bool _catchExceptions;\n    bool _checkboxesShown;\n    bool _testingIsInProgress;\n};\n\n} // namespace autograder\n} // namespace stanfordcpplib\n\n#endif // _guiautograder_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/autograder/ioutils.h",
    "content": "/*\n * File: ioutils.h\n * ---------------\n * This file contains declarations of functions to help capture, redirect,\n * and feed input to cin/cout/err.\n * \n * @author Marty Stepp\n * @version 2014/10/14\n * @since 2014/03/01\n */\n\n#ifndef _ioutils_h\n#define _ioutils_h\n\n#include <string>\n\nnamespace ioutils {\nvoid captureStderrBegin();\nstd::string captureStderrEnd();\nvoid captureStdoutBegin(bool alsoStderr = false);\nstd::string captureStdoutEnd();\n\n/*\n * Function: getConsoleEchoUserInput\n * Usage: bool echo = getConsoleEchoUserInput();\n * ---------------------------------------------\n * Returns whether or not the input from the Stanford graphical\n * console window is being echoed onto the standard operating system terminal\n * window. Initially this is false unless set to true by a previous call to\n * setConsoleEchoUserInput(true).\n */\nbool getConsoleEchoUserInput();\nint getConsoleOutputLimit();\n\nvoid redirectStdinBegin(std::string userInput = \"\");\nvoid redirectStdinFeedInput(std::string userInput);\nvoid redirectStdinEnd();\n\n/*\n * Function: setConsoleEchoUserInput\n * Usage: setConsoleEchoUserInput(true);\n * -------------------------------------\n * Enables or disables echoing the input from the Stanford\n * console window onto the standard operating system terminal window.\n * Normally you don't need this echoing, but if you want to be able to copy\n * and paste your console interaction into another window, it is useful.\n */\nvoid setConsoleEchoUserInput(bool echo);\n\n/*\n * Sets console to throw an error if more than 'limit' total chars are printed.\n * Used to stop students who print infinite or semi-infinite output.\n * If limit <= 0, no limit.\n */\nvoid setConsoleOutputLimit(int limit = 0);\n} // namespace ioutils\n\n#endif // _ioutils_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/autograder/stylecheck.h",
    "content": "/*\n * File: stylecheck.h\n * ------------------\n * This file contains declarations of code to perform regex-based rough style\n * checking on C++ code.\n * \n * @author Marty Stepp\n * @version 2016/10/08\n * - added setStyleCheckMergedWithUnitTests;\n *   ability to merge style checks with regular unit tests\n * @version 2014/10/14\n * - initial version\n * @since 2014/10/14\n */\n\n#ifndef _stylecheck_h\n#define _stylecheck_h\n\n#include <string>\n\nnamespace stylecheck {\nbool isStyleCheckMergedWithUnitTests();\nvoid setStyleCheckMergedWithUnitTests(bool merged = true);\nvoid styleCheck(const std::string& codeFileName, const std::string& styleXmlFileName = \"stylecheck.xml\", bool printWarning = true);\n} // namespace stylecheck\n\n#endif // _stylecheck_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/autograder/testresultprinter.h",
    "content": "/*\n * File: testresultprinter.h\n * -------------------------\n * This file contains declarations of classes used by GoogleTest to print and\n * format test case results differently than GTest's default format.\n * \n * @author Marty Stepp\n * @version 2014/11/24\n * @since 2014/11/24\n */\n\n#ifndef _testresultprinter_h\n#define _testresultprinter_h\n\n#define INTERNAL_INCLUDE 1\n#include \"autogradertest.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gtest.h\"\n#define INTERNAL_INCLUDE 1\n#include \"map.h\"\n#define INTERNAL_INCLUDE 1\n#include \"unittestdetails.h\"\n#undef INTERNAL_INCLUDE\n\nnamespace stanfordcpplib {\nnamespace autograder {\n\n/*\n * A class to customize the Google Test output, mostly to make it more concise.\n */\nclass MartyTestResultPrinter : public ::testing::EmptyTestEventListener {\npublic:\n    static void setFailDetails(AutograderTest& test, const UnitTestDetails& deets);\n    static void setFailDetails(const UnitTestDetails& deets);\n\n    MartyTestResultPrinter();\n\n    /*\n     * Called before a test starts.\n     */\n    virtual void OnTestStart(const ::testing::TestInfo& test_info);\n\n    /*\n     * Called after a failed assertion or a SUCCEED() invocation.\n     */\n    virtual void OnTestPartResult(const ::testing::TestPartResult& test_part_result);\n\n    /*\n     * Called after a test ends.\n     */\n    virtual void OnTestEnd(const ::testing::TestInfo& test_info);\n\n    /*\n     * Called after all test cases are done.\n     */\n    virtual void OnTestProgramEnd(const ::testing::UnitTest& unit_test);\n\n    /*\n     * Sets the number of assertion failures that will be printed per test case.\n     * Used to avoid massively long output for repeated failures.\n     * If a value <= 0 is passed, there is no limit.\n     */\n    void setFailsToPrintPerTest(int fails);\n    \n    /*\n     * Number of characters in the test case's name.\n     */\n    int getTestNameWidth() const;\n    void setTestNameWidth(int width);\n\nprivate:\n    static std::string failMessage;\n    bool testInProgress;\n    int failCountThisTest;\n    int testCount;\n    int failCountToPrintPerTest;\n    int testNameWidth;\n    Map<std::string, bool> testsReported;\n};\n\n/*\n * A class that shows the Google Test output in a pretty graphical window.\n */\nclass MartyGraphicalTestResultPrinter : public ::testing::EmptyTestEventListener {\npublic:\n    static const int TEST_RUNTIME_MIN_TO_DISPLAY_MS;\n    static void setFailDetails(AutograderTest& test, const UnitTestDetails& deets);\n    static void setFailDetails(const UnitTestDetails& deets);\n\n    /*\n     * Called before a test starts.\n     */\n    virtual void OnTestStart(const ::testing::TestInfo& test_info);\n\n    /*\n     * Called after a test ends.\n     */\n    virtual void OnTestEnd(const ::testing::TestInfo& test_info);\n};\n\n} // namespace autograder\n} // namespace stanfordcpplib\n\n#endif // _testresultprinter_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/autograder/unittestdetails.h",
    "content": "/*\n * File: unittestdetails.h\n * -----------------------\n * This file contains declarations of a structure of details about a test\n * that is passed through the Java back-end to the autograder GUI to display.\n * \n * @author Marty Stepp\n * @version 2016/08/01\n * - added ASSERT_DIFF_IMAGE\n * @version 2014/11/24\n * - initial version\n * @since 2014/11/24\n */\n\n#ifndef _unittestdetails_h\n#define _unittestdetails_h\n\n#include <string>\n#define INTERNAL_INCLUDE 1\n#include \"gtest.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#undef INTERNAL_INCLUDE\n\nnamespace stanfordcpplib {\nnamespace autograder {\n\nenum TestResult {\n    TEST_RESULT_UNKNOWN,\n    TEST_RESULT_FAIL,\n    TEST_RESULT_WARN,\n    TEST_RESULT_PASS\n};\n\n// NOTE: must keep in sync with UNIT_TEST_TYPE_NAMES in unittestdetails.cpp\nenum UnitTestType {\n    TEST_ASSERT_EQUALS = 0,\n    TEST_ASSERT_NOT_EQUALS,\n    TEST_ASSERT_NEAR,\n    TEST_ASSERT_DIFF,\n    TEST_ASSERT_DIFF_IMAGE,\n    TEST_ASSERT_TRUE,\n    TEST_ASSERT_FALSE,\n    TEST_ASSERT_NOT_NULL,\n    TEST_ASSERT_NULL,\n    TEST_EXCEPTION,\n    TEST_NOT_EXCEPTION,\n    TEST_PASS,\n    TEST_FAIL,\n    TEST_STYLE_CHECK,\n};\n\nstruct UnitTestDetails {\npublic:\n    UnitTestType testType;\n    std::string message;\n    std::string expected;\n    std::string student;\n    std::string valueType;\n    int diffFlags;\n    bool passed;\n    bool overwrite;\n    TestResult result;\n    \n    UnitTestDetails();\n    \n    UnitTestDetails(autograder::UnitTestType tp,\n                    const std::string& msg = \"\",\n                    bool pass = false);\n    \n    UnitTestDetails(autograder::UnitTestType tp,\n                    const std::string& msg,\n                    const std::string& exp,\n                    const std::string& stu,\n                    const std::string& vtype,\n                    bool pass = false);\n\n    UnitTestDetails(autograder::UnitTestType tp,\n                    const std::string& msg,\n                    const std::string& exp,\n                    const std::string& stu,\n                    const std::string& vtype,\n                    int diffFlags,\n                    bool pass = false);\n\n    UnitTestDetails(autograder::UnitTestType tp,\n                    const std::string& msg,\n                    bool exp,\n                    bool stu,\n                    const std::string& vtype,\n                    bool pass = false);\n    \n    UnitTestDetails(autograder::UnitTestType tp,\n                    const std::string& msg,\n                    char exp,\n                    char stu,\n                    const std::string& vtype,\n                    bool pass = false);\n    \n    UnitTestDetails(autograder::UnitTestType tp,\n                    const std::string& msg,\n                    double exp,\n                    double stu,\n                    const std::string& vtype,\n                    bool pass = false);\n    \n    UnitTestDetails(autograder::UnitTestType tp,\n                    const std::string& msg,\n                    int exp,\n                    int stu,\n                    const std::string& vtype,\n                    bool pass = false);\n    \n    UnitTestDetails(autograder::UnitTestType tp,\n                    const std::string& msg,\n                    const char* const exp,\n                    const char* const stu,\n                    const std::string& vtype,\n                    bool pass = false);\n\n    UnitTestDetails(autograder::UnitTestType tp,\n                    const std::string& msg,\n                    void* exp,\n                    void* stu,\n                    const std::string& vtype,\n                    bool pass = false);\n\n    std::string toString() const;\n};\nstd::ostream& operator <<(std::ostream& out, const UnitTestDetails& deets);\n\n} // namespace autograder\n} // namespace stanfordcpplib\n\n#endif // _unittestdetails_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/autograder/versionautograder.h",
    "content": "/*\n * File: versionautograder.h\n * -------------------------\n * This file contains declarations of the version number of the autograder\n * support code.\n * \n * @author Marty Stepp\n * @version 2019/05/05\n * - latest version\n * @version 2018/11/09\n * - renamed from version.h to avoid name conflicts\n * @since 2014/03/01\n */\n\n#ifndef _versionautograder_h\n#define _versionautograder_h\n\n// NOTE: *MUST* be zero-padded to YYYY/MM/DD format;\n//       if month or day is < 10, insert a preceding 0\n#define AUTOGRADER_LIB_VERSION \"2019/05/05\"\n\n#endif // _versionautograder_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/collections/basicgraph.h",
    "content": "/*\n * File: basicgraph.h\n * ------------------\n * This file contains the declaration of some useful graph types,\n * specifically the Vertex and Edge structures used in the typical graph.\n * together in lecture.  We also declare BasicGraph, an instantiation of\n * Stanford's Graph class using Vertex and Edge as its type parameters.\n *\n * Most members are implemented in this file, since the class is a template.\n * See BasicGraph.cpp for implementation of some non-template members.\n *\n * @author Marty Stepp\n * @version 2018/09/07\n * - reformatted doc-style comments\n * @version 2018/03/10\n * - added methods front, back, toMap\n * - added operator << for various collections of Vertex* and Edge*\n * @version 2018/02/28\n * - compiler flag to enable/disable Vertex fields like visited, previous\n * @version 2017/11/14\n * - fix missing \"this->\" on some methods\n * - added getVertexNames, vertexCount, edgeCount\n * @version 2017/10/24\n * - print nullptr instead of null in uppercase\n * @version 2017/10/18\n * - fix compiler warnings\n * @version 2016/12/09\n * - added iterator version checking support (implicitly via Graph)\n * @version 2016/12/04\n * - bug fix in resetData method (was referring to Vertex* and Edge*)\n * @version 2016/12/01\n * - bug fix in addEdge method (now correctly adds vertexes if not present)\n * - fixed bugs in some node/arc methods (should not crash on empty/null args)\n * @version 2016/11/26\n * - added BasicGraphV, VertexV, EdgeV macros\n * - added getInverseEdgeSet\n * @version 2016/11/19\n * - changed addVertex to not throw when adding duplicates\n * - added operator []\n * @version 2016/11/07\n * - small bug fix for printing cost in operator << (courtesy GitHub @hsivnightbeam)\n * @version 2016/10/14\n * - modified floating-point equality tests to use floatingPointEqual function\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * @version 2016/09/22\n * - bug fix for hashCode function\n * @version 2016/08/12\n * - added initializer_list functionality\n * @version 2014/12/04\n * - bug fix: Edge end reference was not properly pointing at finish field\n * @version 2014/11/21\n * - bug fix: Edge weight reference was not properly pointing at cost field\n * @version 2014/11/13\n * - added iterator begin(), end() support so that students can directly\n *   for-each over the vertices of a graph.\n * - added comparison operators ==, !=, <, etc.\n * - bug fix to Edge to add move/copy = operators\n * @version 2014/10/31\n * - bug fix: extraData was being nulled accidentally in Vertex::resetData()\n * @version 2014/10/23\n * - bug fixes based on cppcheck lint output\n * @version 2014/10/20\n * - converted functions to accept const string& rather than string for speed\n * @version 2014/08/16\n * - added Vertex 'weight' alias for 'cost'\n * - added Edge 'weight' alias for 'cost, and 'end' alias for 'finish'\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _basicgraph_h\n#define _basicgraph_h\n\n#include <initializer_list>\n#include <sstream>\n#include <string>\n#include <utility>\n\n#define INTERNAL_INCLUDE 1\n#include \"gmath.h\"\n#define INTERNAL_INCLUDE 1\n#include \"graph.h\"\n#define INTERNAL_INCLUDE 1\n#include \"grid.h\"\n#define INTERNAL_INCLUDE 1\n#include \"hashset.h\"\n#define INTERNAL_INCLUDE 1\n#include \"linkedlist.h\"\n#define INTERNAL_INCLUDE 1\n#include \"observable.h\"\n#define INTERNAL_INCLUDE 1\n#include \"set.h\"\n#define INTERNAL_INCLUDE 1\n#include \"vector.h\"\n#undef INTERNAL_INCLUDE\n\n/**\n * Forward declarations of Vertex/Edge structures so that they can refer\n * to each other mutually.\n * @private\n */\ntemplate <typename V = void*, typename E = void*>\nclass EdgeGen;\n\n/**\n * Canonical Vertex (Node) structure implementation needed by Graph class template.\n * Each Vertex structure represents a single vertex in the graph.\n */\ntemplate <typename V = void*, typename E = void*>\nclass VertexGen : public Observable<int> {\npublic:\n    /**\n     * The vertex's name as a string.\n     */\n    std::string name;\n\n    /**\n     * The edges outbound from this vertex to its neighbors.\n     */\n    Set<EdgeGen<V, E>*> arcs;     // required by Stanford Graph;\n\n    /**\n     * The edges outbound from this vertex to its neighbors;\n     * an alias of the 'arcs' member.\n     */\n    Set<EdgeGen<V, E>*>& edges;\n\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    /**\n     * The cost to reach this vertex; initially 0.\n     */\n    double cost;\n\n    /**\n     * An alias for the 'cost' member.\n     */\n    double& weight;\n\n    /**\n     * Whether this vertex has been visited before; initally false.\n     */\n    bool visited;\n\n    /**\n     * The vertex that comes before this one; initially null.\n     */\n    VertexGen* previous;\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n\n    /**\n     * The following pointer can point to any extra data needed by the vertex.\n     * This field is generally not necessary and can be ignored.\n     */\n    V data;\n\n    /**\n     * @private\n     */\n    V& extraData;       // alias of data; they are the same field\n\n    /**\n     * Constructs a vertex with the given name.\n     */\n    VertexGen(const std::string& name = \"\");\n\n    /**\n     * Copy constructor.\n     */\n    VertexGen(const VertexGen& other);\n\n    /**\n     * Frees up any memory dynamically allocated by this vertex.\n     */\n    ~VertexGen();\n\n    /**\n     * Returns the color of this vertex, if any.  Initially WHITE.\n     */\n    /* Color */ int getColor() const;\n\n    /**\n     * Wipes the supplementary data of this vertex back to its initial state.\n     * Specifically, sets cost to 0, visited to false, and previous to nullptr.\n     */\n    void resetData();\n\n    /**\n     * Sets the color of this vertex to be the given color.\n     * The color must be one of WHITE, GRAY, YELLOW, or GREEN.\n     * Future calls to getColor will return the color you pass here.\n     */\n    void setColor(/* Color */ int c);\n\n    /**\n     * Returns a string representation of this vertex for debugging, such as\n     * \"Vertex{name=r13c42, cost=11, visited=true, previous=r12c41, neighbors={r12c41, r12c43}}\".\n     */\n    std::string toString() const;\n\n    /**\n     * Copy assignment operator.\n     */\n    VertexGen& operator =(const VertexGen& other);\n\n    /**\n     * Move assignment operator.\n     */\n    VertexGen& operator =(VertexGen&& other);\n\nprivate:\n    /* Color */ int _color;   // vertex's color as passed to setColor\n};\n\n/**\n * Makes a vertex printable to an output stream.\n * See toString for an example of the output format.\n * Note that printing a vertex is not the same as printing a vertex pointer.\n * If you try to print a pointer, you will just see its address in hex.\n */\ntemplate <typename V, typename E>\nstd::ostream& operator <<(std::ostream& out, const VertexGen<V, E>& v);\n\n/**\n * Canonical Edge (Arc) structure implementation needed by Graph class template.\n * Each Edge structure represents a single edge in the graph.\n */\ntemplate <typename V, typename E>\nclass EdgeGen {\npublic:\n    /**\n     * The edge's starting vertex.\n     */\n    VertexGen<V, E>* start;\n\n    /**\n     * The edge's ending vertex.\n     */\n    VertexGen<V, E>* finish;   // required by Stanford Graph;\n\n    /**\n     * An alias of finish; they are the same field.\n     */\n    VertexGen<V, E>*& end;\n\n    /**\n     * The edge's weight; default 0.\n     */\n    double cost;\n\n    /**\n     * An alias for the 'cost' member.\n     */\n    double& weight;\n\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    /**\n     * Whether this edge has been visited before; initally false.\n     */\n    bool visited;\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n\n    /**\n     * A pointer that can point to any extra data needed by the vertex.\n     * This field is generally not necessary and can be ignored.\n     */\n    void* data;\n\n    /**\n     * An alias for the 'data' member.\n     */\n    void*& extraData;\n\n    /**\n     * Constructs a new edge between the given start/end vertices with\n     * the given cost.\n     */\n    EdgeGen(VertexGen<V, E>* start = nullptr, VertexGen<V, E>* finish = nullptr, double cost = 0.0);\n\n    /**\n     * Frees up any memory dynamically allocated by this edge.\n     */\n    ~EdgeGen();\n\n    /**\n     * Wipes the supplementary data of this edge back to its initial state.\n     */\n    void resetData();\n\n    /**\n     * Returns a string representation of this edge for debugging, such as\n     * \"Arc{start=r12c42, finish=r12c41, cost=0.75}\".\n     */\n    std::string toString() const;\n\n    /**\n     * Copy assignment operator.\n     */\n    EdgeGen& operator =(const EdgeGen& other);\n\n    /**\n     * Move assignment operator.\n     */\n    EdgeGen& operator =(EdgeGen&& other);\n};\n\n/**\n * Makes an edge printable to an output stream.\n * See toString for an example of the output format.\n * Note that printing an edge is not the same as printing an edge pointer.\n * If you try to print a pointer, you will just see its address in hex.\n */\ntemplate <typename V, typename E>\nstd::ostream& operator <<(std::ostream& out, const EdgeGen<V, E>& edge);\n\n\n/**\n * BasicGraph is just basically an instantiation of Graph using Vertex and Edge\n * as its template parameters.  It also adds a few convenience functions such\n * as mirroring members like \"addArc\" with an equivalent more familiar name\n * like \"addEdge\".\n *\n * There are a few convenience functions related to neighbors, like isNeighbor.\n * BasicGraph contains a DFS implementation called isReachable, not found\n * in the normal Stanford Graph class.\n *\n * There are also a few functions added to make edges more convenient to work with:\n * getEdge(v1, v2) to get the edge between a given pair of vertices,\n * and getInverseEdge(edge) to get the edge v2 -> v1 for a given edge v1 -> v2.\n */\ntemplate <typename V = void*, typename E = void*>\nclass BasicGraphGen : public Graph<VertexGen<V, E>, EdgeGen<V, E>> {\npublic:\n    /**\n     * Constructs a new empty graph.\n     * @bigoh O(1)\n     */\n    BasicGraphGen();\n\n    /**\n     * Constructs a new graph containing the given vertexes.\n     * @bigoh O(V)\n     */\n    BasicGraphGen(std::initializer_list<std::string> vertexList);\n\n    /**\n     * Adds a directed edge to the graph from vertex v1 to vertex v2.\n     * Note that it is allowed to have multiple edges between the same pair of vertexes.\n     *\n     * Returns a pointer to the edge, though clients need not store that pointer;\n     * you can get the pointer again later by calling getEdge and passing the two vertexes.\n     *\n     * Equivalent to addNode.\n     *\n     * @return a pointer to the edge created\n     * @bigoh O(log V + log E)\n     */\n    EdgeGen<V, E>* addEdge(const std::string& v1, const std::string& v2, double cost = 0.0, bool directed = true);\n\n    /**\n     * Adds a directed edge to the graph from vertex v1 to vertex v2.\n     * If either vertex is not found in the graph, said vertex will be added to the graph.\n     * Note that it is allowed to have multiple edges between the same pair of vertexes.\n     *\n     * Returns a pointer to the edge, though clients need not store that pointer;\n     * you can get the pointer again later by calling getEdge and passing the two vertexes.\n     *\n     * Equivalent to addNode.\n     *\n     * @return a pointer to the edge created\n     * @throw ErrorException if either vertex is null\n     * @bigoh O(log V + log E)\n     */\n    EdgeGen<V, E>* addEdge(VertexGen<V, E>* v1, VertexGen<V, E>* v2, double cost = 0.0, bool directed = true);\n\n    /**\n     * Adds the given directed edge to the graph from vertex v1 to vertex v2.\n     * If either vertex is not found in the graph, said vertex will be added to the graph.\n     * Note that it is allowed to have multiple edges between the same pair of vertexes.\n     *\n     * Returns a pointer to the edge, though clients need not store that pointer;\n     * you can get the pointer again later by calling getEdge and passing the two vertexes.\n     *\n     * Equivalent to addNode.\n     *\n     * @return a pointer to the edge created\n     * @throw ErrorException if either vertex is null\n     * @bigoh O(log V + log E)\n     */\n    EdgeGen<V, E>* addEdge(EdgeGen<V, E>* e, bool directed = true);\n\n    /**\n     * Adds a vertex to the graph, if no vertex with that name already exists in the graph.\n     * This version of this method accepts a string for the vertex's name,\n     * creates a new vertex of the appropriate type and initializes its fields.\n     * Returns a pointer to the vertex, though clients need not store that pointer;\n     * you can get the pointer again later by calling getVertex and passing the same name.\n     *\n     * The vertexes in a graph must have unique names.\n     * If this graph already contains a vertex with the given name,\n     * the vertex will not be added and the graph's state will not change.\n     *\n     * Equivalent to addNode.\n     *\n     * @return a pointer to the vertex created\n     * @bigoh O(log V)\n     */\n    VertexGen<V, E>* addVertex(const std::string& name);\n\n    /**\n     * Adds a vertex to the graph, if no vertex with that name already exists in the graph.\n     * This version of this method accepts a string for the vertex's name,\n     * creates a new vertex of the appropriate type and initializes its fields.\n     * The other accepts a structure representing the vertex and its data.\n     * Returns a pointer to the vertex, though clients need not store that pointer;\n     * you can get the pointer again later by calling getVertex and passing the same name.\n     *\n     * The vertexes in a graph must have unique names.\n     * If this graph already contains a vertex with the given name,\n     * the vertex will not be added and the graph's state will not change.\n     *\n     * When calling this function, you are relinquishing ownership of the Vertex\n     * structure's lifecycle to the graph; our graph will free it when done with it.\n     *\n     * Equivalent to addNode.\n     *\n     * @return a pointer to the vertex created\n     * @throws ErrorException if vertex is null\n     * @bigoh O(log V)\n     */\n    VertexGen<V, E>* addVertex(VertexGen<V, E>* v);\n\n    /**\n     * Removes all edges from the graph.\n     * Frees any edge objects that were internally allocated as heap storage.\n     *\n     * Equivalent to clearArcs.\n     * @bigoh O(E log E)\n     */\n    void clearEdges();\n\n    /**\n     * Removes all outbound edges of the given vertex from the graph.\n     * The vertex itself is not removed.\n     * If the vertex is null or is not found in the graph, has no effect.\n     *\n     * Equivalent to clearArcs.\n     * @bigoh O(E log E)\n     * @bigoh O(log V + E)\n     */\n    void clearEdges(VertexGen<V, E>* v);\n\n    /**\n     * Removes all outbound edges of the given vertex from the graph.\n     * The vertex itself is not removed.\n     * If the vertex is not found in the graph, has no effect.\n     *\n     * Equivalent to clearArcs.\n     * @bigoh O(E log E)\n     */\n    void clearEdges(const std::string& v);\n\n    /**\n     * Returns true if the graph has an edge from v1 to v2 in the graph.\n     * If either of the vertexes supplied is null or is not found in the graph, returns false.\n     *\n     * Equivalent to containsArc.\n     * @bigoh O(log E)\n     */\n    bool containsEdge(VertexGen<V, E>* v1, VertexGen<V, E>* v2) const;\n\n    /**\n     * Returns true if the graph has an edge from v1 to v2 in the graph.\n     * If either of the vertexes supplied is not found in the graph, returns false.\n     *\n     * Equivalent to containsArc.\n     * @bigoh O(log E)\n     */\n    bool containsEdge(const std::string& v1, const std::string& v2) const;\n\n    /**\n     * Returns true if the graph contains the given edge.\n     * If the edge structure is null, returns false.\n     *\n     * Equivalent to containsArc.\n     * @bigoh O(log E)\n     */\n    bool containsEdge(EdgeGen<V, E>* edge) const;\n\n    /**\n     * Returns whether the graph contains a vertex with the given name.\n     *\n     * Equivalent to containsNode.\n     * @bigoh O(log V)\n     */\n    bool containsVertex(const std::string& name) const;\n\n    /**\n     * Returns whether the graph contains the given vertex.\n     * If a null pointer is passed, returns false.\n     *\n     * Equivalent to containsNode.\n     * @bigoh O(log V)\n     */\n    bool containsVertex(VertexGen<V, E>* v) const;\n\n    /**\n     * Returns the number of edges in the graph.\n     *\n     * Equivalent to arcCount.\n     * @bigoh O(log V)\n     */\n    int edgeCount() const;\n\n    /**\n     * Returns the structure representing the edge from v1 to v2 in the graph.\n     * If either of the vertexes supplied is null or is not found in the graph, the function will return nullptr.\n     * If there are multiple edges between the given pair of vertexes, which of the edges will be returned is unspecified.\n     *\n     * Equivalent to getArc.\n     *\n     * @param v1 start vertex\n     * @param v2 end vertex\n     * @return edge from v1 to v2, or nullptr if there is no such edge\n     * @bigoh O(log V + log E)\n     */\n    EdgeGen<V, E>* getEdge(VertexGen<V, E>* v1, VertexGen<V, E>* v2) const;\n\n    /**\n     * Returns the structure representing the edge from v1 to v2 in the graph.\n     * If either of the vertexes supplied is not found in the graph, the function will return nullptr.\n     * If there are multiple edges between the given pair of vertexes, which of the edges will be returned is unspecified.\n     *\n     * Equivalent to getArc.\n     *\n     * @param v1 start vertex\n     * @param v2 end vertex\n     * @return edge from v1 to v2, or nullptr if there is no such edge\n     * @bigoh O(log V + log E)\n     */\n    EdgeGen<V, E>* getEdge(const std::string& v1, const std::string& v2) const;\n\n    /**\n     * Returns the set of all edges in the graph.\n     *\n     * Equivalent to getArcSet.\n     * @bigoh O(1)\n     */\n    const Set<EdgeGen<V, E>*>& getEdgeSet() const;\n\n    /**\n     * Returns the set of all edges that start at the specified vertex.\n     * If the vertex supplied is null or is not found in the graph,\n     * the function will return an empty set.\n     *\n     * Equivalent to getArcSet.\n     * @bigoh O(1)\n     */\n    const Set<EdgeGen<V, E>*>& getEdgeSet(VertexGen<V, E>* v) const;\n\n    /**\n     * Returns the set of all edges that start at the specified vertex.\n     * If the vertex supplied is not found in the graph,\n     * the function will return an empty set.\n     *\n     * Equivalent to getArcSet.\n     * @bigoh O(1)\n     */\n    const Set<EdgeGen<V, E>*>& getEdgeSet(const std::string& v) const;\n\n    /**\n     * Returns the edge that is the opposite of the given edge;\n     * that is, if the specified edge e starts at v1 and ends at v2,\n     * will return the edge that starts at v2 and ends at v1,\n     * if such an edge exists in the graph.\n     *\n     * If the edge supplied is nullptr, is not found in the graph,\n     * or has no inverse, the function will return nullptr.\n     *\n     * If there are multiple edges between the given pair of vertexes,\n     * which of the edges will be returned is unspecified.\n     *\n     * Equivalent to getInverseEdge.\n     * @bigoh O(E)\n     */\n    EdgeGen<V, E>* getInverseArc(EdgeGen<V, E>* edge) const;\n\n    /**\n     * Returns the edge that is the opposite of the given edge;\n     * that is, if the specified edge e starts at v1 and ends at v2,\n     * will return the edge that starts at v2 and ends at v1,\n     * if such an edge exists in the graph.\n     *\n     * If the edge supplied is nullptr, is not found in the graph,\n     * or has no inverse, the function will return nullptr.\n     *\n     * If there are multiple edges between the given pair of vertexes,\n     * which of the edges will be returned is unspecified.\n     *\n     * Equivalent to getInverseArc.\n     * @bigoh O(E)\n     */\n    EdgeGen<V, E>* getInverseEdge(EdgeGen<V, E>* edge) const;\n\n    /**\n     * Returns the set of all edges in the graph that end at the specified vertex.\n     * If the vertex supplied is null or is not found in the graph,\n     * the function will return an empty set.\n     *\n     * Equivalent to getInverseArcSet.\n     * @bigoh O(E)\n     */\n    const Set<EdgeGen<V, E>*> getInverseEdgeSet(VertexGen<V, E>* v) const;\n\n    /**\n     * Returns the set of all edges in the graph that end at the specified vertex.\n     * If the vertex supplied is null or is not found in the graph,\n     * the function will return an empty set.\n     *\n     * Equivalent to getInverseArcSet.\n     * @bigoh O(E)\n     */\n    const Set<EdgeGen<V, E>*> getInverseEdgeSet(const std::string& v) const;\n\n    /**\n     * Looks up a vertex in the graph by name and returns a pointer to\n     * its internal data structure.\n     * If no vertex with the specified name exists, returns nullptr.\n     * @bigoh O(log V)\n     */\n    VertexGen<V, E>* getVertex(const std::string& name) const;\n\n    /**\n     * Returns a set of the names of all vertexes in the graph.\n     * The vertexes will be sorted by name in case-sensitive alphabetical order.\n     * @bigoh O(V log V)\n     */\n    Set<std::string> getVertexNames() const;\n\n    /**\n     * Returns the set of all vertexes in the graph.\n     * The vertexes will be sorted by name in case-sensitive alphabetical order.\n     * @bigoh O(V log V)\n     */\n    const Set<VertexGen<V, E>*>& getVertexSet() const;\n\n    /**\n     * Removes the edge from v1 to v2 from the graph.\n     * If more than one edge connects the specified endpoints, all of them are removed.\n     * If either of the vertexes supplied is not found in the graph,\n     * calling this function will have no effect on the graph.\n     * @bigoh O(E + log V)\n     */\n    void removeEdge(const std::string& v1, const std::string& v2, bool directed = true);\n\n    /**\n     * Removes the edge from v1 to v2 from the graph.\n     * If more than one edge connects the specified endpoints, all of them are removed.\n     * If either of the vertexes supplied is null or not found in the graph,\n     * calling this function will have no effect on the graph.\n     * @bigoh O(E + log V)\n     */\n    void removeEdge(VertexGen<V, E>* v1, VertexGen<V, E>* v2, bool directed = true);\n\n    /**\n     * Removes the given edge from the graph.\n     * If the edge supplied is not found in the graph,\n     * calling this function will have no effect on the graph.\n     * @bigoh O(log E + log V)\n     */\n    void removeEdge(EdgeGen<V, E>* e, bool directed = true);\n\n    /**\n     * Removes the given vertex from the graph.\n     * If the vertex is not found in the graph, the call has no effect.\n     * @bigoh O(E + log V)\n     */\n    void removeVertex(const std::string& name);\n\n    /**\n     * Removes the given vertex from the graph.\n     * If the vertex is null or is not found in the graph, the call has no effect.\n     * @bigoh O(E + log V)\n     */\n    void removeVertex(VertexGen<V, E>* v);\n\n    /**\n     * Sets the data stored in each vertex and edge back to its original value\n     * by calling resetData on every vertex and edge.\n     * @private\n     * @bigoh O(V + E)\n     */\n    void resetData();\n\n    /**\n     * Sets whether the resetData method is enabled (default true).\n     * @private\n     * @bigoh O(1)\n     */\n    void setResetEnabled(bool enabled);\n\n    /* @inherit */\n    virtual void scanArcData(TokenScanner& scanner, EdgeGen<V, E>* edge, EdgeGen<V, E>* inverse);\n\n    /* @inherit */\n    virtual void writeArcData(std::ostream& out, EdgeGen<V, E>* edge) const;\n\n    /**\n     * Returns a Map representing an adjacency list equivalent to this graph.\n     * Each vertex's name is a key in the map, and its neighboring vertexes' names\n     * are stored in a Set as the value associated with that key.\n     * It should be noted that this member does not preserve the weights of the edges\n     * between the neighboring vertexes, so it is not ideal for use with weighted graphs.\n     * @bigoh O(V + E)\n     */\n    Map<std::string, Set<std::string>> toMap() const;\n\n    /**\n     * Returns the number of vertexes in the graph.\n     * Equivalent to size.\n     * @bigoh O(1)\n     */\n    int vertexCount() const;\n\n    /**\n     * Overloads <code>[]</code> to return vertex pointers by vertex name.\n     * @bigoh O(log V)\n     */\n    VertexGen<V, E>* operator [](const std::string& name);\n\n    /**\n     * Overloads <code>[]</code> to return vertex pointers by vertex name.\n     * @bigoh O(log V)\n     */\n    const VertexGen<V, E>* operator [](const std::string& name) const;\n\nprivate:\n    bool m_resetEnabled;\n};\n\n/**\n * Hash function for BasicGraphGen.\n */\ntemplate <typename V, typename E>\nint hashCode(const BasicGraphGen<V, E>& graph);\n\n/*\n * Defines a Vertex to be a VertexGen with its data bound to be a void*.\n * Retained for backward compatibility.\n */\ntypedef VertexGen<void*, void*> Vertex;\n#define VertexV VertexGen\n\n/*\n * You can refer to a Vertex as a Node if you prefer.\n */\n#define Node Vertex\n\n/*\n * Defines an Edge to be an EdgeGen with its data bound to be a void*.\n * Retained for backward compatibility.\n */\ntypedef EdgeGen<void*, void*> Edge;\n#define EdgeV EdgeGen\n\n/*\n * You can refer to an Edge as an Arc if you prefer.\n */\n#define Arc Edge\n\n/*\n * Defines a BasicGraph to be a BasicGraphGen with its data bound to be a void*.\n * Retained for backward compatibility.\n */\ntypedef BasicGraphGen<void*, void*> BasicGraph;\n#define BasicGraphV BasicGraphGen\n\n/**\n * Hash function for BasicGraph.\n */\nint hashCode(const BasicGraph& graph);\n\n\n/*\n * Vertex member implementations\n */\ntemplate <typename V, typename E>\nVertexGen<V, E>::VertexGen(const std::string& theName)\n        : name(theName),\n          edges(arcs),\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n          weight(cost),\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n          data(V()),\n          extraData(data) {\n    resetData();\n}\n\ntemplate <typename V, typename E>\nVertexGen<V, E>::VertexGen(const VertexGen& other)\n    : name(other.name),\n      arcs(other.arcs),\n      edges(arcs),\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n      cost(other.cost),\n      weight(cost),\n      visited(other.visited),\n      previous(other.previous),\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n      data(other.data),\n      extraData(data),\n      _color(other._color) {\n    // empty\n}\n\ntemplate <typename V, typename E>\nVertexGen<V, E>::~VertexGen() {\n    // empty\n}\n\ntemplate <typename V, typename E>\nint VertexGen<V, E>::getColor() const {\n    return _color;\n}\n\ntemplate <typename V, typename E>\nvoid VertexGen<V, E>::resetData() {\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    cost = 0.0;\n    previous = nullptr;\n    visited = false;\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    _color = /* UNCOLORED */ 0;\n}\n\ntemplate <typename V, typename E>\nvoid VertexGen<V, E>::setColor(int c) {\n    _color = c;\n    notifyObservers();\n}\n\ntemplate <typename V, typename E>\nstd::string VertexGen<V, E>::toString() const {\n    std::ostringstream out;\n    out << *this;\n    return out.str();\n}\n\ntemplate <typename V, typename E>\nVertexGen<V, E>& VertexGen<V, E>::operator =(const VertexGen& other) {\n    if (this != &other) {\n        name = other.name;\n        arcs = other.arcs;\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n        cost = other.cost;\n        visited = other.visited;\n        previous = other.previous;\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n        data = other.data;\n        _color = other._color;\n    }\n    return *this;\n}\n\ntemplate <typename V, typename E>\nVertexGen<V, E>& VertexGen<V, E>::operator =(VertexGen&& other) {\n    if (this != &other) {\n        name = other.name;\n        arcs = other.arcs;\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n        cost = other.cost;\n        visited = other.visited;\n        previous = other.previous;\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n        data = other.data;\n        _color = other._color;\n    }\n    return *this;\n}\n\ntemplate <typename V, typename E>\nstd::ostream& operator <<(std::ostream& out, const VertexGen<V, E>& v) {\n    out << \"Vertex{name=\" << v.name;\n\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    if (!floatingPointEqual(v.cost, 0.0)) {\n        out << \", cost=\" << v.cost;\n    }\n    out << \", visited=\" << (v.visited ? \"true\" : \"false\");\n    out << \", previous=\" << (v.previous == nullptr ? std::string(\"nullptr\") : v.previous->name);\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n\n    // print neighbors\n    out << \", neighbors={\";\n    int i = 0;\n    for (EdgeGen<V, E>* edge : v.edges) {\n        if (i > 0) {\n            out << \", \";\n        }\n        i++;\n        if (edge->finish) {\n            out << edge->finish->name;\n        } else {\n            out << \"nullptr\";\n        }\n    }\n    out << \"}\";   // end of neighbors\n\n    out << \"}\";   // end of Vertex\n    return out;\n}\n\n\n/*\n * Edge member implementations\n */\ntemplate <typename V, typename E>\nEdgeGen<V, E>::EdgeGen(VertexGen<V, E>* theStart, VertexGen<V, E>* theFinish, double theCost)\n        : start(theStart),\n          finish(theFinish),\n          end(this->finish),\n          cost(theCost),\n          weight(this->cost),\n          data(nullptr),\n          extraData(data) {\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    this->extraData = nullptr;\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    this->resetData();\n}\n\ntemplate <typename V, typename E>\nEdgeGen<V, E>::~EdgeGen() {\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    if (this->extraData != nullptr) {\n        this->extraData = nullptr;\n        // delete this->extraData;\n    }\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n}\n\ntemplate <typename V, typename E>\nvoid EdgeGen<V, E>::resetData() {\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    this->visited = false;\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n}\n\ntemplate <typename V, typename E>\nstd::string EdgeGen<V, E>::toString() const {\n    std::ostringstream out;\n    out << *this;\n    return out.str();\n}\n\ntemplate <typename V, typename E>\nEdgeGen<V, E>& EdgeGen<V, E>::operator =(const EdgeGen& other) {\n    if (this != &other) {\n        start = other.start;\n        finish = other.finish;\n        cost = other.cost;\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n        visited = other.visited;\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    }\n    return *this;\n}\n\ntemplate <typename V, typename E>\nEdgeGen<V, E>& EdgeGen<V, E>::operator =(EdgeGen&& other) {\n    start = other.start;\n    finish = other.finish;\n    cost = other.cost;\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    visited = other.visited;\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    return *this;\n}\n\n/**\n * Writes the given edge structure to the given output stream.\n */\ntemplate <typename V, typename E>\nstd::ostream& operator <<(std::ostream& out, const EdgeGen<V, E>& edge) {\n    out << \"Edge{start=\";\n    if (!edge.start) {\n        out << \"nullptr\";\n    } else {\n        out << edge.start->name;\n    }\n    out << \", finish=\";\n    if (!edge.finish) {\n        out << \"nullptr\";\n    } else {\n        out << edge.finish->name;\n    }\n    if (!floatingPointEqual(edge.cost, 0.0)) {\n        out << \", cost=\" << edge.cost;\n    }\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    if (edge.visited) {\n        out << \", visited=\" << (edge.visited ? \"true\" : \"false\");\n    }\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    out << \"}\";\n    return out;\n}\n\n\n/*\n * BasicGraph member implementations\n */\ntemplate <typename V, typename E>\nBasicGraphGen<V, E>::BasicGraphGen() : Graph<VertexGen<V, E>, EdgeGen<V, E>>() {\n    m_resetEnabled = true;\n}\n\ntemplate <typename V, typename E>\nBasicGraphGen<V, E>::BasicGraphGen(std::initializer_list<std::string> vertexList)\n        : Graph<VertexGen<V, E>, EdgeGen<V, E>>() {\n    m_resetEnabled = true;\n    for (const std::string& vertexName : vertexList) {\n        this->addVertex(vertexName);\n    }\n}\n\ntemplate <typename V, typename E>\nvoid BasicGraphGen<V, E>::clearEdges() {\n    this->clearArcs();\n}\n\ntemplate <typename V, typename E>\nvoid BasicGraphGen<V, E>::clearEdges(VertexGen<V, E>* v) {\n    this->clearArcs(v);\n}\n\ntemplate <typename V, typename E>\nvoid BasicGraphGen<V, E>::clearEdges(const std::string& v) {\n    this->clearArcs(v);\n}\n\ntemplate <typename V, typename E>\nbool BasicGraphGen<V, E>::containsEdge(VertexGen<V, E>* v1, VertexGen<V, E>* v2) const {\n    return this->containsArc(v1, v2);\n}\n\ntemplate <typename V, typename E>\nbool BasicGraphGen<V, E>::containsEdge(const std::string& v1, const std::string& v2) const {\n    return this->containsArc(v1, v2);\n}\n\ntemplate <typename V, typename E>\nbool BasicGraphGen<V, E>::containsEdge(EdgeGen<V, E>* edge) const {\n    return this->containsArc(edge);\n}\n\ntemplate <typename V, typename E>\nbool BasicGraphGen<V, E>::containsVertex(const std::string& name) const {\n    return this->containsNode(name);\n}\n\ntemplate <typename V, typename E>\nbool BasicGraphGen<V, E>::containsVertex(VertexGen<V, E>* v) const {\n    return this->containsNode(v);\n}\n\ntemplate <typename V, typename E>\nint BasicGraphGen<V, E>::edgeCount() const {\n    return this->arcCount();\n}\n\ntemplate <typename V, typename E>\nEdgeGen<V, E>* BasicGraphGen<V, E>::getEdge(VertexGen<V, E>* v1, VertexGen<V, E>* v2) const {\n    return this->getArc(v1, v2);\n}\n\ntemplate <typename V, typename E>\nEdgeGen<V, E>* BasicGraphGen<V, E>::getEdge(const std::string& v1, const std::string& v2) const {\n    return this->getArc(v1, v2);\n}\n\ntemplate <typename V, typename E>\nEdgeGen<V, E>* BasicGraphGen<V, E>::getInverseArc(EdgeGen<V, E>* edge) const {\n    return this->getArc(edge->finish, edge->start);\n}\n\ntemplate <typename V, typename E>\nEdgeGen<V, E>* BasicGraphGen<V, E>::getInverseEdge(EdgeGen<V, E>* edge) const {\n    return this->getInverseArc(edge);\n}\n\ntemplate <typename V, typename E>\nvoid BasicGraphGen<V, E>::resetData() {\n    if (m_resetEnabled) {\n        for (VertexGen<V, E>* v : this->getVertexSet()) {\n            v->resetData();\n        }\n        for (EdgeGen<V, E>* e : this->getEdgeSet()) {\n            e->resetData();\n        }\n    }\n}\n\ntemplate <typename V, typename E>\nvoid BasicGraphGen<V, E>::setResetEnabled(bool enabled) {\n    m_resetEnabled = enabled;\n}\n\ntemplate <typename V, typename E>\nEdgeGen<V, E>* BasicGraphGen<V, E>::addEdge(const std::string& v1, const std::string& v2, double cost, bool directed) {\n    if (!this->containsVertex(v1)) {\n        this->addVertex(v1);\n    }\n    if (!this->containsVertex(v2)) {\n        this->addVertex(v2);\n    }\n    return this->addEdge(this->getVertex(v1), this->getVertex(v2), cost, directed);\n}\n\ntemplate <typename V, typename E>\nEdgeGen<V, E>* BasicGraphGen<V, E>::addEdge(VertexGen<V, E>* v1, VertexGen<V, E>* v2, double cost, bool directed) {\n    EdgeGen<V, E>* e = new EdgeGen<V, E>(v1, v2, cost);\n    return this->addEdge(e, directed);\n}\n\ntemplate <typename V, typename E>\nEdgeGen<V, E>* BasicGraphGen<V, E>::addEdge(EdgeGen<V, E>* e, bool directed) {\n    EdgeGen<V, E>* result = this->addArc(e);\n    if (!directed) {\n        EdgeGen<V, E>* result2 = this->addArc(e->finish, e->start);\n        result2->cost = e->cost;\n    }\n    return result;\n}\n\ntemplate <typename V, typename E>\nVertexGen<V, E>* BasicGraphGen<V, E>::addVertex(const std::string& name) {\n    return this->addNode(name);\n}\n\ntemplate <typename V, typename E>\nVertexGen<V, E>* BasicGraphGen<V, E>::addVertex(VertexGen<V, E>* v) {\n    return this->addNode(v);\n}\n\ntemplate <typename V, typename E>\nconst Set<EdgeGen<V, E>*>& BasicGraphGen<V, E>::getEdgeSet() const {\n    return this->getArcSet();\n}\n\ntemplate <typename V, typename E>\nconst Set<EdgeGen<V, E>*>& BasicGraphGen<V, E>::getEdgeSet(VertexGen<V, E>* v) const {\n    return this->getArcSet(v);\n}\n\ntemplate <typename V, typename E>\nconst Set<EdgeGen<V, E>*>& BasicGraphGen<V, E>::getEdgeSet(const std::string& v) const {\n    return this->getArcSet(v);\n}\n\ntemplate <typename V, typename E>\nconst Set<EdgeGen<V, E>*> BasicGraphGen<V, E>::getInverseEdgeSet(VertexGen<V, E>* v) const {\n    return this->getInverseArcSet(v);\n}\n\ntemplate <typename V, typename E>\nconst Set<EdgeGen<V, E>*> BasicGraphGen<V, E>::getInverseEdgeSet(const std::string& v) const {\n    return this->getInverseArcSet(v);\n}\n\n\ntemplate <typename V, typename E>\nVertexGen<V, E>* BasicGraphGen<V, E>::getVertex(const std::string& name) const {\n    return this->getNode(name);\n}\n\ntemplate <typename V, typename E>\nSet<std::string> BasicGraphGen<V, E>::getVertexNames() const {\n    return this->getNodeNames();\n}\n\n\ntemplate <typename V, typename E>\nconst Set<VertexGen<V, E>*>& BasicGraphGen<V, E>::getVertexSet() const {\n    return this->getNodeSet();\n}\n\ntemplate <typename V, typename E>\nvoid BasicGraphGen<V, E>::removeEdge(const std::string& v1, const std::string& v2, bool directed) {\n    this->removeEdge(this->getVertex(v1), this->getVertex(v2), directed);\n}\n\ntemplate <typename V, typename E>\nvoid BasicGraphGen<V, E>::removeEdge(VertexGen<V, E>* v1, VertexGen<V, E>* v2, bool directed) {\n    this->removeArc(v1, v2);\n    if (!directed) {\n        this->removeArc(v2, v1);\n    }\n}\n\ntemplate <typename V, typename E>\nvoid BasicGraphGen<V, E>::removeEdge(EdgeGen<V, E>* e, bool directed) {\n    this->removeArc(e);\n    if (!directed) {\n        this->removeArc(e->finish, e->start);\n    }\n}\n\ntemplate <typename V, typename E>\nvoid BasicGraphGen<V, E>::removeVertex(const std::string& name) {\n    this->removeNode(name);\n}\n\ntemplate <typename V, typename E>\nvoid BasicGraphGen<V, E>::removeVertex(VertexGen<V, E>* v) {\n    this->removeNode(v);\n}\n\ntemplate <typename V, typename E>\nMap<std::string, Set<std::string>> BasicGraphGen<V, E>::toMap() const {\n    Map<std::string, Set<std::string>> result;\n    for (Vertex* v : this->getVertexSet()) {\n        Set<std::string> neighborSet;\n        for (Vertex* neighbor : this->getNeighbors(v)) {\n            neighborSet += neighbor->name;\n        }\n        result[v->name] = neighborSet;\n    }\n    return result;\n}\n\ntemplate <typename V, typename E>\nint BasicGraphGen<V, E>::vertexCount() const {\n    return this->nodeCount();\n}\n\ntemplate <typename V, typename E>\nVertexGen<V, E>* BasicGraphGen<V, E>::operator [](const std::string& name) {\n    return this->getVertex(name);\n}\n\ntemplate <typename V, typename E>\nconst VertexGen<V, E>* BasicGraphGen<V, E>::operator [](const std::string& name) const {\n    return this->getVertex(name);\n}\n\ntemplate <typename V, typename E>\nvoid BasicGraphGen<V, E>::scanArcData(TokenScanner& scanner, EdgeGen<V, E>* edge, EdgeGen<V, E>* inverse) {\n    std::string colon = scanner.nextToken();   // \":\", skip over\n    if (colon == \":\") {\n        std::string costStr = scanner.nextToken();\n        edge->cost = stringToReal(costStr);\n        if (inverse) {\n            inverse->cost = edge->cost;\n        }\n    } else {\n        // no cost for this edge (cost 0); un-read the colon token because\n        // it probably wasn't actually a colon\n        scanner.saveToken(colon);\n    }\n}\n\ntemplate <typename V, typename E>\nvoid BasicGraphGen<V, E>::writeArcData(std::ostream& out, EdgeGen<V, E>* edge) const {\n    if (!floatingPointEqual(edge->cost, 0.0)) {\n        out << \" : \";\n        out << edge->cost;\n    }\n}\n\n/**\n * Template hash function for graphs.\n */\ntemplate <typename V, typename E>\nint hashCode(const BasicGraphGen<V, E>& graph) {\n    int code = hashSeed();\n    for (VertexGen<V, E>* v : graph) {\n        code = hashMultiplier() * code + hashCode(v->name);\n    }\n    for (EdgeGen<V, E>* e : graph.getEdgeSet()) {\n        code = hashMultiplier() * code + hashCode(e->start->name);\n        code = hashMultiplier() * code + hashCode(e->finish->name);\n    }\n    return (code & hashMask());\n}\n\n/**\n * Overloaded operator to print a set of edge pointers.\n * Normally it is unwise to override operators for printing pointers,\n * because the pointer could be null or garbage.\n * But in this case we have decided that it is better for students if their\n * attempts to print collections of vertexes and edges are easy to read.\n */\ntemplate <typename V, typename E>\nstd::ostream& operator <<(std::ostream& out, const HashSet<EdgeGen<V, E>*>& sete) {\n    out << \"{\";\n    if (!sete.isEmpty()) {\n        bool first = true;\n        for (EdgeGen<V, E>* e : sete) {\n            if (!first) {\n                out << \", \";\n            }\n            first = false;\n            if (e) {\n                if (e->start) {\n                    out << e->start->name;\n                } else {\n                    out << \"null\";\n                }\n                out << \" -> \";\n                if (e->finish) {\n                    out << e->finish->name;\n                } else {\n                    out << \"null\";\n                }\n            } else {\n                out << \"null\";\n            }\n        }\n    }\n    out << \"}\";\n    return out;\n}\n\n/**\n * Overloaded operator to print a set of vertex pointers.\n * Normally it is unwise to override operators for printing pointers,\n * because the pointer could be null or garbage.\n * But in this case we have decided that it is better for students if their\n * attempts to print collections of vertexes and edges are easy to read.\n */\ntemplate <typename V, typename E>\nstd::ostream& operator <<(std::ostream& out, const HashSet<VertexGen<V, E>*>& setv) {\n    out << \"{\";\n    if (!setv.isEmpty()) {\n        bool first = true;\n        for (VertexGen<V, E>* v : setv) {\n            if (!first) {\n                out << \", \";\n            }\n            first = false;\n            if (v) {\n                out << v->name;\n            } else {\n                out << \"null\";\n            }\n        }\n    }\n    out << \"}\";\n    return out;\n}\n\n/**\n * Overloaded operator to print a list of edge pointers.\n * Normally it is unwise to override operators for printing pointers,\n * because the pointer could be null or garbage.\n * But in this case we have decided that it is better for students if their\n * attempts to print collections of vertexes and edges are easy to read.\n */\ntemplate <typename V, typename E>\nstd::ostream& operator <<(std::ostream& out, const LinkedList<EdgeGen<V, E>*>& liste) {\n    out << \"{\";\n    if (!liste.isEmpty()) {\n        bool first = true;\n        for (EdgeGen<V, E>* e : liste) {\n            if (!first) {\n                out << \", \";\n            }\n            first = false;\n            if (e) {\n                if (e->start) {\n                    out << e->start->name;\n                } else {\n                    out << \"null\";\n                }\n                out << \" -> \";\n                if (e->finish) {\n                    out << e->finish->name;\n                } else {\n                    out << \"null\";\n                }\n            } else {\n                out << \"null\";\n            }\n        }\n    }\n    out << \"}\";\n    return out;\n}\n\n/**\n * Overloaded operator to print a list of vertex pointers.\n * Normally it is unwise to override operators for printing pointers,\n * because the pointer could be null or garbage.\n * But in this case we have decided that it is better for students if their\n * attempts to print collections of vertexes and edges are easy to read.\n */\ntemplate <typename V, typename E>\nstd::ostream& operator <<(std::ostream& out, const LinkedList<VertexGen<V, E>*>& lst) {\n    out << \"{\";\n    if (!lst.isEmpty()) {\n        bool first = true;\n        for (VertexGen<V, E>* v : lst) {\n            if (!first) {\n                out << \", \";\n            }\n            first = false;\n            if (v) {\n                out << v->name;\n            } else {\n                out << \"null\";\n            }\n        }\n    }\n    out << \"}\";\n    return out;\n}\n\n/**\n * Overloaded operator to print a set of edge pointers.\n * Normally it is unwise to override operators for printing pointers,\n * because the pointer could be null or garbage.\n * But in this case we have decided that it is better for students if their\n * attempts to print collections of vertexes and edges are easy to read.\n */\ntemplate <typename V, typename E>\nstd::ostream& operator <<(std::ostream& out, const Set<EdgeGen<V, E>*>& sete) {\n    out << \"{\";\n    if (!sete.isEmpty()) {\n        bool first = true;\n        for (EdgeGen<V, E>* e : sete) {\n            if (!first) {\n                out << \", \";\n            }\n            first = false;\n            if (e) {\n                if (e->start) {\n                    out << e->start->name;\n                } else {\n                    out << \"null\";\n                }\n                out << \" -> \";\n                if (e->finish) {\n                    out << e->finish->name;\n                } else {\n                    out << \"null\";\n                }\n            } else {\n                out << \"null\";\n            }\n        }\n    }\n    out << \"}\";\n    return out;\n}\n\n/**\n * Overloaded operator to print a set of vertex pointers.\n * Normally it is unwise to override operators for printing pointers,\n * because the pointer could be null or garbage.\n * But in this case we have decided that it is better for students if their\n * attempts to print collections of vertexes and edges are easy to read.\n */\ntemplate <typename V, typename E>\nstd::ostream& operator <<(std::ostream& out, const Set<VertexGen<V, E>*>& setv) {\n    out << \"{\";\n    if (!setv.isEmpty()) {\n        bool first = true;\n        for (VertexGen<V, E>* v : setv) {\n            if (!first) {\n                out << \", \";\n            }\n            first = false;\n            if (v) {\n                out << v->name;\n            } else {\n                out << \"null\";\n            }\n        }\n    }\n    out << \"}\";\n    return out;\n}\n\n/**\n * Overloaded operator to print a vector of edge pointers.\n * Normally it is unwise to override operators for printing pointers,\n * because the pointer could be null or garbage.\n * But in this case we have decided that it is better for students if their\n * attempts to print collections of vertexes and edges are easy to read.\n */\ntemplate <typename V, typename E>\nstd::ostream& operator <<(std::ostream& out, const Vector<EdgeGen<V, E>*>& vece) {\n    out << \"{\";\n    if (!vece.isEmpty()) {\n        bool first = true;\n        for (EdgeGen<V, E>* e : vece) {\n            if (!first) {\n                out << \", \";\n            }\n            first = false;\n            if (e) {\n                if (e->start) {\n                    out << e->start->name;\n                } else {\n                    out << \"null\";\n                }\n                out << \" -> \";\n                if (e->finish) {\n                    out << e->finish->name;\n                } else {\n                    out << \"null\";\n                }\n            } else {\n                out << \"null\";\n            }\n        }\n    }\n    out << \"}\";\n    return out;\n}\n\n/**\n * Overloaded operator to print a vector of vertex pointers.\n * Normally it is unwise to override operators for printing pointers,\n * because the pointer could be null or garbage.\n * But in this case we have decided that it is better for students if their\n * attempts to print collections of vertexes and edges are easy to read.\n */\ntemplate <typename V, typename E>\nstd::ostream& operator <<(std::ostream& out, const Vector<VertexGen<V, E>*>& vec) {\n    out << \"{\";\n    if (!vec.isEmpty()) {\n        bool first = true;\n        for (VertexGen<V, E>* v : vec) {\n            if (!first) {\n                out << \", \";\n            }\n            first = false;\n            if (v) {\n                out << v->name;\n            } else {\n                out << \"null\";\n            }\n        }\n    }\n    out << \"}\";\n    return out;\n}\n\n#endif // _basicgraph_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/collections/collections.h",
    "content": "/*\n * File: collections.h\n * -------------------\n * Contains general-purpose functions for use with many collections.\n *\n * For example, we have functions for comparing any collections that have\n * a visible iterator (begin(), end()).\n * Used to implement comparison operators like < and >= on collections.\n *\n * @author Marty Stepp\n * @version 2019/10/12\n * - added ARRAY_LENGTH macro\n * @version 2019/04/12\n * - added GenericSet unionWith, intersect, difference methods\n * - added functions to read/write quoted char values\n * - changed comment formatting\n * @version 2017/12/12\n * - added equalsDouble for collections of double values (can't compare with ==)\n * @version 2017/10/18\n * - fix compiler warnings\n * @version 2017/09/29\n * - added compareTo1-5\n * @version 2016/12/09\n * - added checkVersion for iterators\n * @version 2016/09/24\n * - renamed compare.h to collections.h\n * - added printing functions\n * @version 2014/10/10\n * - initial version as compare.h\n * @since 2014/10/10\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _collections_h\n#define _collections_h\n\n#include <iostream>\n#include <sstream>\n#include <type_traits>\n\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gmath.h\"\n#define INTERNAL_INCLUDE 1\n#include \"hashcode.h\"\n#define INTERNAL_INCLUDE 1\n#include \"random.h\"\n#undef INTERNAL_INCLUDE\n\n// macro to get the length of a stack-allocated array\n#define ARRAY_LENGTH(a) (sizeof(a) / sizeof((a)[0]))\n\n// begin global namespace string read/writing functions from strlib.h\n\n/**\n * Reads the next char from infile into the reference parameter ch.\n * If the first character (other than whitespace) is either a single\n * or a double quote, this function reads characters up to the\n * matching quote, processing standard escape sequences as it goes.\n * If not, readQuotedChar reads characters up to any of the characters\n * in the string STRING_DELIMITERS in the implementation file.\n *\n * @private\n */\nbool readQuotedChar(std::istream& is, char& ch, bool throwOnError = true);\n\n/**\n * Reads the next string from infile into the reference parameter str.\n * If the first character (other than whitespace) is either a single\n * or a double quote, this function reads characters up to the\n * matching quote, processing standard escape sequences as it goes.\n * If not, readQuoted String reads characters up to any of the characters\n * in the string STRING_DELIMITERS in the implementation file.\n *\n * @private\n */\nbool readQuotedString(std::istream& is, std::string& str, bool throwOnError = true);\n\n/**\n * Writes the char ch to outfile surrounded by single quotes, converting\n * special characters to escape sequences, as necessary.  If the optional\n * parameter forceQuotes is explicitly set to false, quotes are included\n * in the output only if necessary.\n *\n * @private\n */\nstd::ostream& writeQuotedChar(std::ostream& os, char ch, bool forceQuotes = true);\n\n/**\n * Writes the string str to outfile surrounded by double quotes, converting\n * special characters to escape sequences, as necessary.  If the optional\n * parameter forceQuotes is explicitly set to false, quotes are included\n * in the output only if necessary.\n *\n * @private\n */\nstd::ostream& writeQuotedString(std::ostream& os, const std::string& str,\n                                bool forceQuotes = true);\n\n/**\n * Checks whether the string needs quoting in order to be read correctly.\n * @private\n */\nbool stringNeedsQuoting(const std::string& str);\n\n/**\n * Writes a generic value to the output stream.  If that value is a string,\n * this function uses writeQuotedString to write the value.\n * @private\n */\ntemplate <typename ValueType>\nstd::ostream& writeGenericValue(std::ostream& os, const ValueType& value, bool) {\n    return os << std::boolalpha << value;\n}\n\ninline std::ostream& writeGenericValue(std::ostream& os, char value,\n                                       bool forceQuotes) {\n    return writeQuotedChar(os, value, forceQuotes);\n}\n\ninline std::ostream& writeGenericValue(std::ostream& os, const std::string& value,\n                                       bool forceQuotes) {\n    return writeQuotedString(os, value, forceQuotes);\n}\n\ntemplate <typename ValueType>\ninline std::string genericValueToString(const ValueType& value,\n                                        bool forceQuotes = false) {\n    std::ostringstream os;\n    writeGenericValue(os, value, forceQuotes);\n    return os.str();\n}\n\ninline std::string genericValueToString(const std::string& value,\n                                        bool forceQuotes) {\n    std::ostringstream os;\n    writeQuotedString(os, value, forceQuotes);\n    return os.str();\n}\n\n/**\n * Reads a generic value from the input stream.  If that value is a string,\n * this function uses readQuotedString to read the value.\n * @private\n */\ntemplate <typename ValueType>\nbool readGenericValue(std::istream& is, ValueType& value) {\n    return (bool) (is >> value);\n}\n\ninline bool readGenericValue(std::istream& is, char& value) {\n    return readQuotedChar(is, value, /* throwOnError */ false);\n}\n\ninline bool readGenericValue(std::istream& is, std::string& value) {\n    return readQuotedString(is, value, /* throwOnError */ false);\n}\n\n// end of global namespace string read/writing functions from strlib.h\nnamespace stanfordcpplib {\nnamespace collections {\n\n#ifdef SPL_THROW_ON_INVALID_ITERATOR\ntemplate <typename CollectionType, typename IteratorType>\nvoid checkVersion(const CollectionType& coll, const IteratorType& itr,\n                  const std::string& memberName = \"\") {\n    unsigned int collVersion = coll.version();\n    unsigned int itrVersion = itr.version();\n    if (itrVersion != collVersion) {\n        std::string msg = memberName;\n        if (!msg.empty()) {\n            msg += \": \";\n        }\n        msg += \"Collection modified during iteration. Iterator is now invalid.\\n\";\n        msg += \"Do not modify a collection during a for-each loop or iterator traversal.\";\n        error(msg);\n    }\n}\n#else // SPL_THROW_ON_INVALID_ITERATOR\ntemplate <typename CollectionType, typename IteratorType>\nvoid checkVersion(const CollectionType&, const IteratorType&,\n                  const std::string& = \"\") {\n    // empty\n}\n#endif\n\n/*\n * Performs a comparison for ordering between the given two collections\n * by comparing their elements pairwise to each other.\n * Returns -1 if collection 1 is \"less than\" collection 2;\n * Returns  1 if collection 1 is \"greater than\" collection 2;\n * Returns  0 if collection 1 is \"equal to\" collection 2.\n * The element type must have an operator <.\n */\ntemplate <typename CollectionType>\nint compare(const CollectionType& coll1, const CollectionType& coll2) {\n    // optimization: if they are the same object, then they are equal\n    if (&coll1 == &coll2) {\n        return 0;\n    }\n    \n    auto itr1 = coll1.begin(),\n         itr2 = coll2.begin(),\n         end1 = coll1.end(),\n         end2 = coll2.end();\n    for (;\n         itr1 != end1 && itr2 != end2;\n         ++itr1, ++itr2) {\n        // compare each pair of elements from iterators\n        \n        // TO STUDENT:\n        // If the line below is failing to compile in your program, it probably\n        // means that you are trying to make a nested collection\n        // (e.g. Set<Vector<T>>) for some element type T that does not have a\n        // less-than < operator.  That operator is *required* in order to make\n        // a Set or Map of Vectors, so that the set/map knows how to sort the\n        // elements into their ascending order.\n        // You should either add a < operator to your class, or consider a\n        // different nested collection solution.  Good luck!\n        if (*itr1 < *itr2) {\n            return -1;\n        } else if (*itr2 < *itr1) {\n            return 1;\n        }\n    }\n    \n    // if we get here, everything from v1 matched v2, so they are either equal,\n    // or one is shorter than the other (fewer elements) and is therefore less\n    if (itr1 == end1 && itr2 == end2) {\n        return 0;\n    } else if (itr1 == end1) {\n        return -1;\n    } else {\n        return 1;\n    }\n}\n\n/*\n * Performs a comparison for ordering between the given two maps\n * by comparing their key/value pairs pairwise to each other.\n * Returns -1 if collection 1 is \"less than\" collection 2;\n * Returns  1 if collection 1 is \"greater than\" collection 2;\n * Returns  0 if collection 1 is \"equal to\" collection 2.\n * Note that the order of keys and values in the maps matter here;\n * the same map with keys in different orders would produce a different result.\n * The key and value types must both have an operator <.\n */\ntemplate <typename MapType>\nint compareMaps(const MapType& map1, const MapType& map2) {\n    // optimization: if they are the same object, then they are equal\n    if (&map1 == &map2) {\n        return 0;\n    }\n    \n    auto itr1 = map1.begin(),\n         itr2 = map2.begin(),\n         end1 = map1.end(),\n         end2 = map2.end();\n    for (;\n         itr1 != end1 && itr2 != end2;\n         ++itr1, ++itr2) {\n        // compare each pair of elements from iterators\n        \n        // TO STUDENT:\n        // If the line below is failing to compile in your program, it probably\n        // means that you are trying to make a nested collection\n        // (e.g. Set<Map<K, V>>) for some element type K or V that does not have a\n        // less-than < operator.  That operator is *required* in order to make\n        // a Set or Map of Maps, so that the set/map knows how to sort the\n        // keys and values into their ascending order.\n        // You should either add a < operator to your key/value types, or consider a\n        // different nested collection solution.  Good luck!\n        if (*itr1 < *itr2) {\n            return -1;\n        } else if (*itr2 < *itr1) {\n            return 1;\n        }\n        \n        // key1 == key2, so compare values\n        auto value1 = map1[*itr1];\n        auto value2 = map2[*itr2];\n        if (value1 < value2) {\n            return -1;\n        } else if (value2 < value1) {\n            return 1;\n        }\n    }\n    \n    // if we get here, everything from v1 matched v2, so they are either equal,\n    // or one is shorter than the other (fewer elements) and is therefore less\n    if (itr1 == end1 && itr2 == end2) {\n        return 0;\n    } else if (itr1 == end1) {\n        return -1;\n    } else {\n        return 1;\n    }\n}\n\n/*\n * Template functions to compare two interleaved sequences of values, returning\n * -1 if the first value is less than the second,\n *  0 if the values are equal,\n *  1 if the first value is greater than the second.\n * The type passed must support a < less-than operator.\n */\ninline int compareTo() {\n    return 0;\n}\ntemplate <typename T, typename... Rest>\nint compareTo(const T& first, const T& second, const Rest&... rest) {\n    if (first < second) return -1;\n    if (second < first) return +1;\n    return compareTo(rest...);\n}\n\n/*\n * Returns true if the two collections contain the same elements in the same order.\n * The element type must have an operator ==.\n */\ntemplate <typename CollectionType>\nbool equals(const CollectionType& coll1, const CollectionType& coll2) {\n    // optimization: if literally same collection, stop\n    if (&coll1 == &coll2) {\n        return true;\n    }\n    // optimization: if not same size, don't bother comparing pairwise\n    if (coll1.size() != coll2.size()) {\n        return false;\n    }\n\n    // check each pair of elements for equality\n    auto itr1 = coll1.begin();\n    auto end1 = coll1.end();\n    auto itr2 = coll2.begin();\n    auto end2 = coll2.end();\n    while (itr1 != end1 && itr2 != end2) {\n        if (!(*itr1 == *itr2)) {\n            return false;\n        }\n        ++itr1;\n        ++itr2;\n    }\n    return true;\n}\n\n/*\n * Returns true if the two collections contain the same elements in the same order.\n * The element type must be double, float, or any floating-point type.\n */\ntemplate <typename CollectionType>\nbool equalsDouble(const CollectionType& coll1, const CollectionType& coll2) {\n    // optimization: if literally same collection, stop\n    if (&coll1 == &coll2) {\n        return true;\n    }\n    // optimization: if not same size, don't bother comparing pairwise\n    if (coll1.size() != coll2.size()) {\n        return false;\n    }\n\n    // check each pair of elements for equality\n    auto itr1 = coll1.begin();\n    auto end1 = coll1.end();\n    auto itr2 = coll2.begin();\n    auto end2 = coll2.end();\n    while (itr1 != end1 && itr2 != end2) {\n        if (!floatingPointEqual(*itr1, *itr2)) {\n            return false;\n        }\n        ++itr1;\n        ++itr2;\n    }\n    return true;\n}\n\n/*\n * Returns true if the given two maps contain the same set of keys and each\n * key maps to the same value in both maps.\n * The order of the keys is not considered.\n * The key and value types must both have an operator ==.\n */\ntemplate <typename MapType>\nbool equalsMap(const MapType& map1, const MapType& map2) {\n    // optimization: if literally same map, stop\n    if (&map1 == &map2) {\n        return true;\n    }\n    // optimization: if not same size, don't bother comparing pairwise\n    if (map1.size() != map2.size()) {\n        return false;\n    }\n\n    // check whether each element in the first map is also in the second.\n    // since the sizes are the same, if this is true, the maps are equal.\n    for (auto itr1 = map1.begin(), end1 = map1.end(); itr1 != end1; ++itr1) {\n        if (!map2.containsKey(*itr1) || !(map1.get(*itr1) == map2.get(*itr1))) {\n            return false;\n        }\n    }\n    return true;\n}\n\n/*\n * Computes a hashCode for any iterable type.\n * Pass true for 'orderMatters' for collections that maintain some kind of element\n * ordering that is of importance.  This would be true for almost all collections\n * except hash-based ones where the ordering is semi-random and unimportant.\n */\ntemplate <typename IteratorType>\nint hashCodeIterable(IteratorType begin, IteratorType end, bool orderMatters = true) {\n    int code = hashSeed();\n    while (begin != end) {\n        if (orderMatters) {\n            code *= hashMultiplier();\n        }\n        code += hashCode(*begin);\n        ++begin;\n    }\n    return int(code & hashMask());\n}\n\n/*\n * Computes a hashCode for any type of collection.\n * The collection must have begin() and end()\n */\ntemplate <typename CollectionType>\nint hashCodeCollection(const CollectionType& collection, bool orderMatters = true) {\n    return hashCodeIterable(collection.begin(), collection.end(), orderMatters);\n}\n\n/*\n * Template hash function for hash maps.\n * Requires the key and value types in the HashMap to have a hashCode function.\n */\ntemplate <typename MapType>\nint hashCodeMap(const MapType& map, bool orderMatters = true) {\n    int code = hashSeed();\n    auto begin = map.begin();\n    auto end = map.end();\n    while (begin != end) {\n        if (orderMatters) {\n            code *= hashMultiplier();\n        }\n        code += hashCode(*begin);\n\n        if (orderMatters) {\n            code *= hashMultiplier();\n        }\n        code += hashCode(map[*begin]);\n        ++begin;\n    }\n    return int(code & hashMask());\n}\n\n/*\n * Returns a randomly chosen element of the given collection.\n * Throws an error if the set is empty.\n */\ntemplate <typename Collection>\nauto randomElement(const Collection& collection) -> const decltype(*collection.begin())& {\n    if (collection.isEmpty()) {\n        error(\"randomElement: empty collection was passed\");\n    }\n    return *std::next(collection.begin(), randomInteger(0, collection.size() - 1));\n}\n\n/*\n * Returns a randomly chosen element of the given collection.\n * The collection must have an index [] operator.\n * Throws an error if the set is empty.\n */\ntemplate <template <typename> class CollectionType, class ElementType>\nconst ElementType& randomElementIndexed(const CollectionType<ElementType>& collection) {\n    if (collection.isEmpty()) {\n        error(\"randomElement: empty collection was passed\");\n    }\n    int index = randomInteger(0, collection.size() - 1);\n    return collection[index];\n}\n\n/*\n * Reads in any collection from the given input stream.\n * The collection must have an add() method that takes a single value,\n * and a clear() method that removes all elements from the collection.\n */\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\ntemplate <typename CollectionType, typename ElementType>\nstd::istream& readCollection(std::istream& input, CollectionType& collection, ElementType& element, std::string descriptor = \"readIterable\") {\n#else\ntemplate <typename CollectionType, typename ElementType>\nstd::istream& readCollection(std::istream& input, CollectionType& collection, ElementType& element, std::string /* descriptor */) {\n#endif\n    char ch = '\\0';\n    input >> ch;\n    if (ch != '{') {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n        error(descriptor + \": Missing {\");\n#endif\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n    collection.clear();\n    input >> ch;\n    if (ch != '}') {\n        input.unget();\n        while (true) {\n            if (!readGenericValue(input, element)) {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n                error(descriptor + \": parse error\");\n#endif\n                return input;\n            }\n            collection.add(element);\n            input >> ch;\n            if (ch == '}') {\n                break;\n            }\n            if (ch != ',') {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n                error(std::string(descriptor + \": Unexpected character \") + ch);\n#endif\n                input.setstate(std::ios_base::failbit);\n                return input;\n            }\n        }\n    }\n    return input;\n}\n\n/*\n * Reads in any Map collection from the given input stream.\n * The collection must have an add() method that takes a single value,\n * and a clear() method that removes all elements from the collection.\n */\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\ntemplate <typename MapType, typename KeyType, typename ValueType>\nstd::istream& readMap(std::istream& input, MapType& map, KeyType& key, ValueType& value, std::string descriptor = \"readIterable\") {\n#else\ntemplate <typename MapType, typename KeyType, typename ValueType>\nstd::istream& readMap(std::istream& input, MapType& map, KeyType& key, ValueType& value, std::string /* descriptor */) {\n#endif\n    char ch = '\\0';\n    input >> ch;\n    if (ch != '{') {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n        error(descriptor + \": Missing {\");\n#endif\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n    map.clear();\n    input >> ch;\n    if (ch != '}') {\n        input.unget();\n        while (true) {\n            if (!readGenericValue(input, key)) {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n                error(descriptor + \": parse key error\");\n#endif\n                return input;\n            }\n            input >> ch;\n            if (ch != ':') {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n                error(descriptor + \": Missing colon after key\");\n#endif\n                input.setstate(std::ios_base::failbit);\n                return input;\n            }\n            if (!readGenericValue(input, value)) {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n                error(descriptor + \": parse value error\");\n#endif\n                return input;\n            }\n            map.put(key, value);\n            input >> ch;\n            if (ch == '}') {\n                break;\n            }\n            if (ch != ',') {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n                error(std::string(descriptor + \": Unexpected character \") + ch);\n#endif\n                input.setstate(std::ios_base::failbit);\n                return input;\n            }\n        }\n    }\n    return input;\n}\n\n/*\n * Writes out any collection to the given output stream using its two iterators,\n * begin and end.\n */\ntemplate <typename IteratorType>\nstd::ostream& writeIterable(std::ostream& out, IteratorType begin, IteratorType end) {\n    out << \"{\";\n    bool first = true;\n    while (begin != end) {\n        if (!first) {\n            out << \", \";\n        }\n        first = false;\n        writeGenericValue(out, *begin, /* forceQuotes */ true);\n        ++begin;\n    }\n    out << \"}\";\n    return out;\n}\n\n/*\n * Writes out any collection to the given output stream using its two iterators,\n * begin and end.\n */\ntemplate <typename CollectionType>\nstd::ostream& writeCollection(std::ostream& out, CollectionType collection) {\n    return writeIterable(out, collection.begin(), collection.end());\n}\n\n/*\n * Writes out any collection to the given output stream using its two iterators,\n * begin and end.\n */\ntemplate <typename IteratorType>\nstd::ostream& writeIterableOfPointers(std::ostream& out, IteratorType begin, IteratorType end) {\n    out << \"{\";\n    bool first = true;\n    while (begin != end) {\n        if (!first) {\n            out << \", \";\n        }\n        first = false;\n        writeGenericValue(out, **begin, /* forceQuotes */ true);\n        ++begin;\n    }\n    out << \"}\";\n    return out;\n}\n\n/*\n * Writes out any collection to the given output stream using its two iterators,\n * begin and end.\n */\ntemplate <typename CollectionType>\nstd::ostream& writeCollectionOfPointers(std::ostream& out, CollectionType collection) {\n    return writeIterableOfPointers(out, collection.begin(), collection.end());\n}\n\n/*\n * Implementation notes: << and >>\n * -------------------------------\n * The insertion and extraction operators use the template facilities in\n * strlib.h to read and write generic values in a way that treats strings\n * specially.\n */\ntemplate <typename MapType>\nstd::ostream& writeMap(std::ostream& out, const MapType& map) {\n    out << \"{\";\n    auto begin = map.begin();\n    auto end = map.end();\n    bool first = true;\n    while (begin != end) {\n        if (!first) {\n            out << \", \";\n        }\n        first = false;\n        writeGenericValue(out, *begin, /* forceQuotes */ true);\n        out << \":\";\n        writeGenericValue(out, map[*begin], /* forceQuotes */ true);\n        ++begin;\n    }\n    out << \"}\";\n    return out;\n}\n\n/*\n * Type responsible for tracking the version of some object. This is factored out into\n * its own object with unusual copy functions so that any time the underlying object\n * is moved or assigned the underlying version number is updated.\n */\nclass VersionTracker {\npublic:\n    /* Assigning a VersionTracker increments the underlying version number. */\n    VersionTracker& operator= (VersionTracker) {\n        ++mVersion;\n        return *this;\n    }\n\n    /* Move-constructing a VersionTracker implements the version number of the\n     * object being moved.\n     */\n    VersionTracker(VersionTracker&& rhs) {\n        rhs.mVersion++;\n    }\n\n    /* Use default constructor and default copy constructor. */\n    VersionTracker() = default;\n    VersionTracker(const VersionTracker &) = default;\n\n    /* Marks that the version must be updated. */\n    void update() {\n        ++mVersion;\n    }\n\n    /* Returns the version number. */\n    unsigned int version() const {\n        return mVersion;\n    }\n\nprivate:\n    unsigned int mVersion = 0;\n};\n\n/*\n * Checked iterator type that wraps an underlying iterator type, adding in bounds-checking\n * and version-checking.\n */\ntemplate <typename Iterator> class CheckedIterator {\npublic:\n    /* We're whatever sort of iterator we're wrapping. */\n    using difference_type   = typename std::iterator_traits<Iterator>::difference_type;\n    using iterator_category = typename std::iterator_traits<Iterator>::iterator_category;\n    using pointer           = typename std::iterator_traits<Iterator>::pointer;\n    using reference         = typename std::iterator_traits<Iterator>::reference;\n    using value_type        = typename std::iterator_traits<Iterator>::value_type;\n\n    /*\n     * Default constructor must be explicitly declared so that the private constructor\n     * doesn't shadow us.\n     */\n    CheckedIterator() = default;\n\n    /* Constructs an iterator given information about the underlying container. */\n    template <typename Container>\n    CheckedIterator(const VersionTracker* owner, Iterator iter, Container& c)\n        : mVersion(owner->version()), mOwner(owner), mIter(iter), mBegin(c.begin()), mEnd(c.end()) {\n\n    }\n\n    /*\n     * We're friends with all other CheckedIterator types, allowing for cross-construction\n     * and the like.\n     */\n    template <typename OtherItr> friend class CheckedIterator;\n\n    /* Conversion constructor, when permitted. */\n    template <typename OtherItr> CheckedIterator(const CheckedIterator<OtherItr>& rhs)\n        : mVersion(rhs.mVersion),\n          mOwner(rhs.mOwner),\n          mIter(rhs.mIter),\n          mBegin(rhs.mBegin),\n          mEnd(rhs.mEnd) {\n\n    }\n\n    template <typename OtherItr> operator CheckedIterator<OtherItr>() const {\n        return CheckedIterator<OtherItr>{mVersion, mOwner, mIter, mBegin, mEnd};\n    }\n\n    /* All possible iterator functions. */\n\n    /* Comparison operators. */\n    template <typename OtherItr> bool operator ==(const CheckedIterator<OtherItr>& rhs) const {\n        if (!mOwner || !rhs.mOwner) {\n            error(\"Cannot compare an uninitialized iterator.\");\n        }\n        if ( mOwner !=  rhs.mOwner) {\n            error(\"Cannot compare iterators from two different containers.\");\n        }\n        return mIter == rhs.mIter;\n    }\n    template <typename OtherItr> bool operator !=(const CheckedIterator<OtherItr>& rhs) const {\n        return !(*this == rhs);\n    }\n\n    /*\n     * We report errors if the underlying owners are different, since otherwise\n     * the behavior is undefined.\n     */\n    template <typename OtherItr> bool operator <(const CheckedIterator<OtherItr>& rhs) const {\n        if (!mOwner || !rhs.mOwner) {\n            error(\"Cannot compare an uninitialized iterator.\");\n        }\n        if (mOwner != rhs.mOwner) {\n            error(\"Cannot compare iterators from different containers.\");\n        }\n        return mIter < rhs.mIter;\n    }\n    template <typename OtherItr> bool operator >(const CheckedIterator<OtherItr>& rhs) const {\n        return rhs < *this;\n    }\n    template <typename OtherItr> bool operator <=(const CheckedIterator<OtherItr>& rhs) const {\n        return !(*this > rhs);\n    }\n    template <typename OtherItr> bool operator >=(const CheckedIterator<OtherItr>& rhs) const {\n        return !(*this < rhs);\n    }\n\n    /* Random access. */\n    reference operator [](difference_type index) const {\n        if (!mOwner) {\n            error(\"Cannot access elements through an uninitialized iterator.\");\n        }\n        ::stanfordcpplib::collections::checkVersion(*mOwner, *this);\n        if (index >= 0 &&  index >= mEnd - mIter) {\n            error(\"Out of bounds.\");\n        }\n        if (index <  0 && -index >  mIter - mBegin) {\n            error(\"Out of bounds.\");\n        }\n\n        return mIter[index];\n    }\n\n    CheckedIterator& operator +=(difference_type index) {\n        if (!mOwner) error(\"Cannot advance uninitialized iterators.\");\n        ::stanfordcpplib::collections::checkVersion(*mOwner, *this);\n        mIter += index;\n        return *this;\n    }\n    CheckedIterator& operator -=(difference_type index) {\n        return *this += (-index);\n    }\n\n    CheckedIterator operator +(difference_type index) const {\n        auto result = *this;\n        return result += index;\n    }\n    CheckedIterator operator -(difference_type index) const {\n        return *this + (-index);\n    }\n\n    template <typename OtherItr>\n    difference_type operator -(const CheckedIterator<OtherItr>& rhs) const {\n        if (!mOwner || !rhs.mOwner) {\n            error(\"Cannot subtract uninitialized iterators.\");\n        }\n\n        ::stanfordcpplib::collections::checkVersion(*mOwner, *this);\n        if (mOwner != rhs.mOwner) {\n            error(\"Cannot subtract iterators from two different containers.\");\n        }\n\n        return mIter - rhs.mIter;\n    }\n\n    /* Forwards and backwards. */\n    CheckedIterator& operator ++() {\n        if (!mOwner) {\n            error(\"Cannot advance an uninitialized iterator.\");\n        }\n\n        ::stanfordcpplib::collections::checkVersion(*mOwner, *this);\n        if (mIter == mEnd) {\n            error(\"Cannot advance an iterator past end of range.\");\n        }\n        ++mIter;\n        return *this;\n    }\n    CheckedIterator operator ++(int) {\n        auto result = *this;\n        ++*this;\n        return result;\n    }\n\n    CheckedIterator& operator --() {\n        if (!mOwner) {\n            error(\"Cannot back up an uninitialized iterator.\");\n        }\n\n        ::stanfordcpplib::collections::checkVersion(*mOwner, *this);\n        if (mIter == mBegin) {\n            error(\"Cannot back up an iteartor before start of range.\");\n        }\n\n        --mIter;\n        return *this;\n    }\n    CheckedIterator operator --(int) {\n        auto result = *this;\n        --*this;\n        return result;\n    }\n\n    /* Dereferencing. */\n    reference operator *() const {\n        if (!mOwner) {\n            error(\"Cannot dereference an uninitialized iterator.\");\n        }\n        ::stanfordcpplib::collections::checkVersion(*mOwner, *this);\n\n        if (mIter == mEnd) {\n            error(\"Iterator out of range.\");\n        }\n        return *mIter;\n    }\n    pointer operator ->() const {\n        return &**this;\n    }\n\n    /* Direct version access. */\n    unsigned int version() const {\n        if (!mOwner) {\n            error(\"Cannot get version from an uninitialized iterator.\");\n        }\n        return mVersion;\n    }\n\nprivate:\n    unsigned int mVersion = 0;\n    const VersionTracker* mOwner = nullptr;\n    Iterator mIter;\n    Iterator mBegin, mEnd;\n};\n\n/*\n * Iterator over a pairs that projects out the first component. Essentially, this turns an\n * iterator over pair<const Key, Value> into an iterator over const Key.\n *\n * All bounds-checking, error-handling, etc. are presumed to come from the underlying\n * iterator type.\n */\ntemplate <typename Iterator> class ProjectingIterator {\npublic:\n    /* The sort of thing that we're wrapping. */\n    using value_type       = typename std::remove_reference<decltype(std::declval<Iterator>()->first)>::type;\n\n    /* We're whatever sort of iterator we're wrapping. */\n    using difference_type   = typename std::iterator_traits<Iterator>::difference_type;\n    using iterator_category = typename std::iterator_traits<Iterator>::iterator_category;\n    using pointer           = const value_type *;\n    using reference         = const value_type &;\n\n    /*\n     * Default constructor must be explicitly declared so that the private constructor\n     * doesn't shadow us.\n     */\n    ProjectingIterator() = default;\n\n    /* Wraps an existing iterator. */\n    explicit ProjectingIterator(Iterator iter) : mIter(iter) {\n        // Empty\n    }\n\n    /*\n     * We're friends with all other related types, allowing for cross-construction\n     * and the like.\n     */\n    template <typename OtherItr> friend class ProjectingIterator;\n\n    /* Conversion constructor, when permitted. */\n    template <typename OtherItr> ProjectingIterator(const ProjectingIterator<OtherItr>& rhs)\n        : mIter(rhs.mIter) {\n        // Empty\n    }\n\n    template <typename OtherItr> operator ProjectingIterator<OtherItr>() const {\n        return ProjectingIterator<OtherItr>(mIter);\n    }\n\n    /* All possible iterator functions. */\n\n    /* Comparison operators. */\n    template <typename OtherItr> bool operator ==(const ProjectingIterator<OtherItr>& rhs) {\n        return mIter == rhs.mIter;\n    }\n    template <typename OtherItr> bool operator !=(const ProjectingIterator<OtherItr>& rhs) {\n        return !(*this == rhs);\n    }\n\n    template <typename OtherItr> bool operator <(const ProjectingIterator<OtherItr>& rhs) {\n        return mIter < rhs.mIter;\n    }\n    template <typename OtherItr> bool operator >(const ProjectingIterator<OtherItr>& rhs) {\n        return rhs < *this;\n    }\n    template <typename OtherItr> bool operator <=(const ProjectingIterator<OtherItr>& rhs) {\n        return !(*this > rhs);\n    }\n    template <typename OtherItr> bool operator >=(const ProjectingIterator<OtherItr>& rhs) {\n        return !(*this < rhs);\n    }\n\n    /* Random access. */\n    reference operator [](difference_type index) const {\n        return mIter[index];\n    }\n    ProjectingIterator& operator +=(difference_type index) {\n        mIter += index;\n        return *this;\n    }\n    ProjectingIterator& operator -=(difference_type index) {\n        return *this += (-index);\n    }\n    ProjectingIterator operator +(difference_type index) const {\n        auto result = *this;\n        return result += index;\n    }\n    ProjectingIterator operator -(difference_type index) const {\n        return *this + (-index);\n    }\n    template <typename OtherItr>\n    difference_type operator -(const ProjectingIterator<OtherItr>& rhs) const {\n        return mIter - rhs.mIter;\n    }\n\n    /* Forwards and backwards. */\n    ProjectingIterator& operator ++() {\n        ++mIter;\n        return *this;\n    }\n    ProjectingIterator operator ++(int) {\n        auto result = *this;\n        ++*this;\n        return result;\n    }\n\n    ProjectingIterator& operator --() {\n        --mIter;\n        return *this;\n    }\n    ProjectingIterator operator --(int) {\n        auto result = *this;\n        --*this;\n        return result;\n    }\n\n    /* Dereferencing. */\n    reference operator *() const {\n        return mIter->first;\n    }\n    pointer operator ->() const {\n        return &**this;\n    }\n\nprivate:\n    Iterator mIter;\n};\n\n/**\n * Class: GenericSet<SetTraits>\n * ----------------------------\n * This class stores a collection of distinct elements. SetTraits should be\n * a type containing the following:\n *\n *     typename ValueType:          whatever is stored in the map\n *     typename MapType:            should be a Map<ValueType, bool>\n *     static std::string name():   should return the name of the type.\n *\n * There's one more requirement: you need to define a function\n *\n *     template <typename... Args>\n *        static MapType construct(Args&&... args)\n *\n * that constructs an internal MapType object with the specified arguments.\n * This function should do something creative or clever to ensure that there\n * is a nice compiler error generated in the event that the arguments are\n * invalid, since otherwise the error is going to be deeply nested inside the\n * GenericSet template.\n *\n * This is not meant to be used directly by students.\n */\ntemplate <typename SetTraits>\nclass GenericSet {\npublic:\n    /**\n     * Utility alias to make things easier to work with.\n     */\n    using value_type = typename SetTraits::ValueType;\n\n    /**\n     * Constructor: GenericSet\n     * Usage: GenericSet<ValueType, SetTraits> set;\n     * --------------------------------------------\n     * Initializes an empty set of the specified element type.\n     */\n    GenericSet() = default;\n\n    /**\n     * Constructor: GenericSet\n     * Usage: GenericSet<ValueType, SetTraits> set {1, 2, 3};\n     * ------------------------------------------------------\n     * Initializes a new set that stores the given elements.\n     */\n    GenericSet(std::initializer_list<value_type> list);\n\n    /**\n     * Constructor: GenericSet\n     * Usage: GenericSet<ValueType, SetTraits> set(... things for the map ...);\n     * ------------------------------------------------------------------------\n     * Forwards the specified arguments down to the underlying Map type.\n     */\n    template <typename... Args>\n    explicit GenericSet(Args... args);\n\n    /**\n     * Constructor: GenericSet\n     * Usage: GenericSet<ValueType, SetTraits> set({1, 2, 3}, ... things for the map ...);\n     * -----------------------------------------------------------------------------------\n     * Constructs a set using the specified elements, forwarding the arguments to the\n     * underlying map.\n     */\n    template <typename... Args>\n    GenericSet(std::initializer_list<value_type> list,\n               Args... args);\n\n    /**\n     * Destructor: ~Set\n     * ----------------\n     * Frees any heap storage associated with this set.\n     */\n    virtual ~GenericSet() = default;\n\n    /**\n     * Method: add\n     * Usage: set.add(value);\n     * ----------------------\n     * Adds an element to this set, if it was not already there.  For\n     * compatibility with the STL <code>set</code> class, this method\n     * is also exported as <code>insert</code>.\n     */\n    void add(const value_type& value);\n\n    /**\n     * Method: addAll\n     * Usage: set.addAll(set2);\n     * ------------------------\n     * Adds all elements of the given other set to this set.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     * Returns a reference to this set.\n     *\n     * Note that this function modifies the current set in place rather than\n     * returning a new set. If you want a new set, consider using the + operator\n     * instead (not +=), which returns a newly created copy set.\n     *\n     * Identical in behavior to the += operator.\n     */\n    GenericSet& addAll(const GenericSet& set);\n\n    /**\n     * Method: back\n     * Usage: ValueType value = set.back();\n     * ------------------------------------\n     * Returns the last value in the set in the order established by the\n     * <code>foreach</code> macro.  If the set is empty, generates an error.\n     */\n    value_type back() const;\n\n    /**\n     * Method: clear\n     * Usage: set.clear();\n     * -------------------\n     * Removes all elements from this set.\n     */\n    void clear();\n\n    /**\n     * Method: contains\n     * Usage: if (set.contains(value)) ...\n     * -----------------------------------\n     * Returns <code>true</code> if the specified value is in this set.\n     */\n    bool contains(const value_type& value) const;\n\n    /**\n     * Method: containsAll\n     * Usage: if (set.containsAll(set2)) ...\n     * -------------------------------------\n     * Returns <code>true</code> if every value from the given other set\n     * is also found in this set.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     * Equivalent in behavior to isSupersetOf.\n     */\n    bool containsAll(const GenericSet& set2) const;\n\n    /**\n     * Method: difference\n     * Usage: set.difference(set2);\n     * ----------------------------\n     * Removes all elements of the given other set from this set.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     * Returns a reference to this set.\n     *\n     * Note that this function modifies the current set in place rather than\n     * returning a new set. If you want a new set, consider using the - operator\n     * instead (not -=), which returns a newly created copy set.\n     *\n     * Identical in behavior to the -= operator and the removeAll function.\n     */\n    GenericSet& difference(const GenericSet& set);\n\n    /**\n     * Method: equals\n     * Usage: if (set.equals(set2)) ...\n     * --------------------------------\n     * Returns <code>true</code> if this set contains exactly the same values\n     * as the given other set.\n     * Identical in behavior to the == operator.\n     */\n    bool equals(const GenericSet& set2) const;\n\n    /**\n     * Method: first\n     * Usage: ValueType value = set.first();\n     * -------------------------------------\n     * Returns the first value in the set in the order established by the\n     * <code>foreach</code> macro.  If the set is empty, <code>first</code>\n     * generates an error.\n     * Equivalent to front.\n     */\n    value_type first() const;\n\n    /**\n     * Method: front\n     * Usage: ValueType value = set.front();\n     * -------------------------------------\n     * Returns the first value in the set in the order established by the\n     * <code>foreach</code> macro.  If the set is empty, generates an error.\n     * Equivalent to first.\n     */\n    value_type front() const;\n\n    /**\n     * Method: insert\n     * Usage: set.insert(value);\n     * -------------------------\n     * Adds an element to this set, if it was not already there.  This\n     * method is exported for compatibility with the STL <code>set</code> class.\n     */\n    void insert(const value_type& value);\n\n    /**\n     * Method: intersect\n     * Usage: set.intersect(set2);\n     * ---------------------------\n     * Removes all elements from this set that are not contained in the given\n     * other set.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     * Returns a reference to this set.\n     *\n     * Note that this function modifies the current set in place rather than\n     * returning a new set. If you want a new set, consider using the * operator\n     * instead (not *=), which returns a newly created copy set.\n     *\n     * Identical in behavior to the *= operator and the retainAll function.\n     */\n    GenericSet& intersect(const GenericSet& set);\n\n    /**\n     * Method: isEmpty\n     * Usage: if (set.isEmpty()) ...\n     * -----------------------------\n     * Returns <code>true</code> if this set contains no elements.\n     */\n    bool isEmpty() const;\n\n    /**\n     * Method: isSubsetOf\n     * Usage: if (set.isSubsetOf(set2)) ...\n     * ------------------------------------\n     * Implements the subset relation on sets.  It returns\n     * <code>true</code> if every element of this set is\n     * contained in <code>set2</code>.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     */\n    bool isSubsetOf(const GenericSet& set2) const;\n\n    /**\n     * Method: isSupersetOf\n     * Usage: if (set.isSupersetOf(set2)) ...\n     * --------------------------------------\n     * Implements the superset relation on sets.  It returns\n     * <code>true</code> if every element of this set is\n     * contained in <code>set2</code>.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     * Equivalent in behavior to containsAll.\n     */\n    bool isSupersetOf(const GenericSet& set2) const;\n\n    /**\n     * Method: mapAll\n     * Usage: set.mapAll(fn);\n     * ----------------------\n     * Iterates through the elements of the set and calls <code>fn(value)</code>\n     * for each one.  The iteration order matches the underlying order in which\n     * the elements are stored.  For Set, this is sorted order according to the\n     * comparison function; for LinkedHashSet, this is the insertion order; and\n     * for HashSet, this is whatever order the elements happen to be in.\n     */\n    void mapAll(std::function<void (const value_type&)> fn) const;\n\n    /**\n     * Method: remove\n     * Usage: set.remove(value);\n     * -------------------------\n     * Removes an element from this set.  If the value was not\n     * contained in the set, no error is generated and the set\n     * remains unchanged.\n     */\n    void remove(const value_type& value);\n\n    /**\n     * Method: removeAll\n     * Usage: set.removeAll(set2);\n     * ---------------------------\n     * Removes all elements of the given other set from this set.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     * Returns a reference to this set.\n     *\n     * Note that this function modifies the current set in place rather than\n     * returning a new set. If you want a new set, consider using the - operator\n     * instead (not -=), which returns a newly created copy set.\n     *\n     * Identical in behavior to the -= operator and the difference function.\n     */\n    GenericSet& removeAll(const GenericSet& set);\n\n    /**\n     * Method: retainAll\n     * Usage: set.retainAll(set2);\n     * ---------------------------\n     * Removes all elements from this set that are not contained in the given\n     * other set.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     * Returns a reference to this set.\n     *\n     * Note that this function modifies the current set in place rather than\n     * returning a new set. If you want a new set, consider using the * operator\n     * instead (not *=), which returns a newly created copy set.\n     *\n     * Identical in behavior to the *= operator and the intersect function.\n     */\n    GenericSet& retainAll(const GenericSet& set);\n\n    /**\n     * Method: size\n     * Usage: count = set.size();\n     * --------------------------\n     * Returns the number of elements in this set.\n     */\n    int size() const;\n\n    /**\n     * Method: toString\n     * Usage: string str = set.toString();\n     * -----------------------------------\n     * Converts the set to a printable string representation.\n     */\n    std::string toString() const;\n\n    /**\n     * Method: unionWith\n     * Usage: set.unionWith(set2);\n     * ---------------------------\n     * Adds all elements of the given other set to this set.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     * Returns a reference to this set.\n     * Identical in behavior to the += operator and the addAll function.\n     *\n     * Note that this function modifies the current set in place rather than\n     * returning a new set. If you want a new set, consider using the + operator\n     * instead (not +=), which returns a newly created copy set.\n     *\n     * (Implementation note: This function cannot be named 'union' because\n     * that is a C/C++ keyword.)\n     */\n    GenericSet& unionWith(const GenericSet& set);\n\n    /**\n     * Operator: ==\n     * Usage: set1 == set2\n     * -------------------\n     * Returns <code>true</code> if <code>set1</code> and <code>set2</code>\n     * contain the same elements.\n     */\n    bool operator ==(const GenericSet& set2) const;\n\n    /**\n     * Operator: !=\n     * Usage: set1 != set2\n     * -------------------\n     * Returns <code>true</code> if <code>set1</code> and <code>set2</code>\n     * are different.\n     */\n    bool operator !=(const GenericSet& set2) const;\n\n    /**\n     * Operators: <, >, <=, >=\n     * Usage: if (set1 <= set2) ...\n     * ...\n     * ----------------------------\n     * Relational operators to compare two sets.\n     * The <, >, <=, >= operators require that the value type has a < operator\n     * so that the elements can be compared pairwise.\n     *\n     * These are implemented as friend functions so that if we fully instantiate\n     * this type, we don't get errors when using relational operators.\n     */\n    template <typename Traits>\n    friend bool operator <(const GenericSet<Traits>& set1, const GenericSet<Traits>& set2);\n    template <typename Traits>\n    friend bool operator <=(const GenericSet<Traits>& set1, const GenericSet<Traits>& set2);\n    template <typename Traits>\n    friend bool operator >(const GenericSet<Traits>& set1, const GenericSet<Traits>& set2);\n    template <typename Traits>\n    friend bool operator >=(const GenericSet<Traits>& set1, const GenericSet<Traits>& set2);\n\n    /**\n     * Operator: +\n     * Usage: set1 + set2\n     *        set1 + element\n     * ---------------------\n     * Returns the union of sets <code>set1</code> and <code>set2</code>, which\n     * is the set of elements that appear in at least one of the two sets.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     * The right hand set can be replaced by an element of the value type, in\n     * which case the operator returns a new set formed by adding that element.\n     */\n    GenericSet operator +(const GenericSet& set2) const;\n    GenericSet operator +(const value_type& element) const;\n\n    /**\n     * Operator: *\n     * Usage: set1 * set2\n     * ------------------\n     * Returns the intersection of sets <code>set1</code> and <code>set2</code>,\n     * which is the set of all elements that appear in both.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     */\n    GenericSet operator *(const GenericSet& set2) const;\n\n    /**\n     * Operator: -\n     * Usage: set1 - set2\n     *        set1 - element\n     * ---------------------\n     * Returns the difference of sets <code>set1</code> and <code>set2</code>,\n     * which is all of the elements that appear in <code>set1</code> but\n     * not <code>set2</code>.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     * The right hand set can be replaced by an element of the value type, in\n     * which case the operator returns a new set formed by removing that element.\n     */\n    GenericSet operator -(const GenericSet& set2) const;\n    GenericSet operator -(const value_type& element) const;\n\n    /**\n     * Operator: +=\n     * Usage: set1 += set2;\n     *        set1 += value;\n     * ---------------------\n     * Adds all of the elements from <code>set2</code> (or the single\n     * specified value) to <code>set1</code>.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     * As a convenience, the <code>Set</code> package also overloads the comma\n     * operator so that it is possible to initialize a set like this:\n     *\n     *<pre>\n     *    Set&lt;int&gt; digits;\n     *    digits += 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;\n     *</pre>\n     */\n    GenericSet& operator +=(const GenericSet& set2);\n    GenericSet& operator +=(const value_type& value);\n\n    /**\n     * Operator: *=\n     * Usage: set1 *= set2;\n     * --------------------\n     * Removes any elements from <code>set1</code> that are not present in\n     * <code>set2</code>.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     */\n    GenericSet& operator *=(const GenericSet& set2);\n\n    /**\n     * Operator: -=\n     * Usage: set1 -= set2;\n     *        set1 -= value;\n     * ---------------------\n     * Removes the elements from <code>set2</code> (or the single\n     * specified value) from <code>set1</code>.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     * As a convenience, the <code>Set</code> package also overloads the comma\n     * operator so that it is possible to remove multiple elements from a set\n     * like this:\n     *\n     *<pre>\n     *    digits -= 0, 2, 4, 6, 8;\n     *</pre>\n     *\n     * which removes the values 0, 2, 4, 6, and 8 from the set\n     * <code>digits</code>.\n     */\n    GenericSet& operator -=(const GenericSet& set2);\n    GenericSet& operator -=(const value_type& value);\n\n    /*\n     * Additional Set operations\n     * -------------------------\n     * In addition to the methods listed in this interface, the Set\n     * class supports the following operations:\n     *\n     *   - Stream I/O using the << and >> operators\n     *   - Deep copying for the copy constructor and assignment operator\n     *   - Iteration using the range-based for statement and STL iterators\n     *\n     * The iteration forms process the Set in ascending order.\n     */\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\nprivate:\n    typename SetTraits::MapType map = SetTraits::construct();  /* Map used to store the elements    */\n    bool removeFlag = false;                                   /* Flag to differentiate += and -=   */\n\npublic:\n    /*\n     * Hidden features\n     * ---------------\n     * The remainder of this file consists of the code required to\n     * support the comma operator, copying, and iteration.\n     *\n     * Including these methods in the public interface would make\n     * that interface more difficult to understand for the average client.\n     */\n    GenericSet& operator ,(const value_type& value) {\n        if (this->removeFlag) {\n            this->remove(value);\n        } else {\n            this->add(value);\n        }\n        return *this;\n    }\n\n    using const_iterator = typename SetTraits::MapType::const_iterator;\n    using iterator = const_iterator;\n\n    iterator begin() const {\n        return map.begin();\n    }\n\n    iterator end() const {\n        return map.end();\n    }\n\n    friend int hashCode(const GenericSet& set) {\n        return hashCode(set.map);\n    }\n};\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits>::GenericSet(std::initializer_list<value_type> list)\n    : map(SetTraits::construct()) {\n    /* Can't do addAll because that would recursively try constructing a GenericSet.\n     * Instead, directly add everything here. This becomes the focal point for\n     * all initializer_list conversions.\n     */\n    for (const auto& elem: list) {\n        add(elem);\n    }\n}\n\ntemplate <typename SetTraits>\ntemplate <typename... Args>\nGenericSet<SetTraits>::GenericSet(Args... args) : GenericSet({}, std::move(args)...) {\n    // Handled by other constructor\n}\n\ntemplate <typename SetTraits>\ntemplate <typename... Args>\nGenericSet<SetTraits>::GenericSet(std::initializer_list<value_type> list, Args... args)\n    : map(SetTraits::construct(std::move(args)...)) {\n\n    /* Can't do addAll because that would recursively try constructing a GenericSet.\n     * Instead, directly add everything here. This becomes the focal point for\n     * all initializer_list conversions.\n     */\n    for (const auto& elem: list) {\n        add(elem);\n    }\n}\n\ntemplate <typename SetTraits>\nvoid GenericSet<SetTraits>::add(const value_type& value) {\n    map.put(value, true);\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits>& GenericSet<SetTraits>::addAll(const GenericSet& set2) {\n    for (const auto& value : set2) {\n        add(value);\n    }\n    return *this;\n}\n\ntemplate <typename SetTraits>\ntypename GenericSet<SetTraits>::value_type\nGenericSet<SetTraits>::back() const {\n    if (isEmpty()) {\n        error(SetTraits::name() + \"::back: set is empty\");\n    }\n    return map.back();\n}\n\ntemplate <typename SetTraits>\nvoid GenericSet<SetTraits>::clear() {\n    map.clear();\n}\n\ntemplate <typename SetTraits>\nbool GenericSet<SetTraits>::contains(const value_type& value) const {\n    return map.containsKey(value);\n}\n\ntemplate <typename SetTraits>\nbool GenericSet<SetTraits>::containsAll(const GenericSet& set2) const {\n    for (const auto& value: set2) {\n        if (!contains(value)) {\n            return false;\n        }\n    }\n    return true;\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits>& GenericSet<SetTraits>::difference(const GenericSet<SetTraits>& set) {\n    return removeAll(set);\n}\n\ntemplate <typename SetTraits>\nbool GenericSet<SetTraits>::equals(const GenericSet& set2) const {\n    // optimization: if literally same set, stop\n    if (this == &set2) {\n        return true;\n    }\n\n    /* We are equal if we have the same size and we're a subset of the other\n     * set.\n     */\n    if (size() != set2.size()) {\n        return false;\n    }\n    return isSubsetOf(set2);\n}\n\ntemplate <typename SetTraits>\ntypename GenericSet<SetTraits>::value_type\nGenericSet<SetTraits>::first() const {\n    if (isEmpty()) {\n        error(SetTraits::name() + \"::first: set is empty\");\n    }\n    return *begin();\n}\n\ntemplate <typename SetTraits>\ntypename GenericSet<SetTraits>::value_type\nGenericSet<SetTraits>::front() const {\n    if (isEmpty()) {\n        error(SetTraits::name() + \"::front: set is empty\");\n    }\n    return map.front();\n}\n\ntemplate <typename SetTraits>\nvoid GenericSet<SetTraits>::insert(const value_type& value) {\n    map.put(value, true);\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits>& GenericSet<SetTraits>::intersect(const GenericSet<SetTraits>& set) {\n    return retainAll(set);\n}\n\ntemplate <typename SetTraits>\nbool GenericSet<SetTraits>::isEmpty() const {\n    return map.isEmpty();\n}\n\ntemplate <typename SetTraits>\nbool GenericSet<SetTraits>::isSubsetOf(const GenericSet& set2) const {\n    for (const auto& elem: *this) {\n        if (!set2.contains(elem)) {\n            return false;\n        }\n    }\n    return true;\n}\n\ntemplate <typename SetTraits>\nbool GenericSet<SetTraits>::isSupersetOf(const GenericSet& set2) const {\n    return containsAll(set2);\n}\n\ntemplate <typename SetTraits>\nvoid GenericSet<SetTraits>::mapAll(std::function<void (const value_type &)> fn) const {\n    map.mapAll([&](const value_type& elem, bool) {\n        fn(elem);\n    });\n}\n\ntemplate <typename SetTraits>\nvoid GenericSet<SetTraits>::remove(const value_type& value) {\n    map.remove(value);\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits>& GenericSet<SetTraits>::removeAll(const GenericSet& set2) {\n    map.removeAll(set2.map);\n    return *this;\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits>& GenericSet<SetTraits>::retainAll(const GenericSet& set2) {\n    map.retainAll(set2.map);\n    return *this;\n}\n\ntemplate <typename SetTraits>\nint GenericSet<SetTraits>::size() const {\n    return map.size();\n}\n\ntemplate <typename SetTraits>\nstd::string GenericSet<SetTraits>::toString() const {\n    std::ostringstream os;\n    os << *this;\n    return os.str();\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits>& GenericSet<SetTraits>::unionWith(const GenericSet<SetTraits>& set) {\n    return addAll(set);\n}\n\n\n/*\n * Implementation notes: set operators\n * -----------------------------------\n * The implementations for the set operators use iteration to walk\n * over the elements in one or both sets.\n */\ntemplate <typename SetTraits>\nbool GenericSet<SetTraits>::operator ==(const GenericSet& set2) const {\n    return equals(set2);\n}\n\ntemplate <typename SetTraits>\nbool GenericSet<SetTraits>::operator !=(const GenericSet& set2) const {\n    return !equals(set2);\n}\n\ntemplate <typename SetTraits>\nbool operator <(const GenericSet<SetTraits>& set1, const GenericSet<SetTraits>& set2) {\n    return set1.map < set2.map;\n}\n\ntemplate <typename SetTraits>\nbool operator <=(const GenericSet<SetTraits>& set1, const GenericSet<SetTraits>& set2) {\n    return set1.map <= set2.map;\n}\n\ntemplate <typename SetTraits>\nbool operator >(const GenericSet<SetTraits>& set1, const GenericSet<SetTraits>& set2) {\n    return set1.map > set2.map;\n}\n\ntemplate <typename SetTraits>\nbool operator >=(const GenericSet<SetTraits>& set1, const GenericSet<SetTraits>& set2) {\n    return set1.map >= set2.map;\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits> GenericSet<SetTraits>::operator +(const GenericSet& set2) const {\n    return GenericSet(*this).addAll(set2);\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits> GenericSet<SetTraits>::operator +(const value_type& element) const {\n    GenericSet result = *this;\n    result.add(element);\n    return result;\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits> GenericSet<SetTraits>::operator *(const GenericSet& set2) const {\n    return GenericSet(*this).retainAll(set2);\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits> GenericSet<SetTraits>::operator -(const GenericSet& set2) const {\n    return GenericSet(*this).removeAll(set2);\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits> GenericSet<SetTraits>::operator -(const value_type& element) const {\n    GenericSet result = *this;\n    result.remove(element);\n    return result;\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits>& GenericSet<SetTraits>::operator +=(const GenericSet& set2) {\n    removeFlag = false;\n    return addAll(set2);\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits>& GenericSet<SetTraits>::operator +=(const value_type& value) {\n    add(value);\n    removeFlag = false;\n    return *this;\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits>& GenericSet<SetTraits>::operator *=(const GenericSet& set2) {\n    return retainAll(set2);\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits>& GenericSet<SetTraits>::operator -=(const GenericSet& set2) {\n    removeFlag = true;\n    return removeAll(set2);\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits>& GenericSet<SetTraits>::operator -=(const value_type& value) {\n    remove(value);\n    removeFlag = true;\n    return *this;\n}\n\ntemplate <typename SetTraits>\nstd::ostream& operator <<(std::ostream& os, const GenericSet<SetTraits>& set) {\n    return stanfordcpplib::collections::writeCollection(os, set);\n}\n\ntemplate <typename SetTraits>\nstd::istream& operator >>(std::istream& is, GenericSet<SetTraits>& set) {\n    typename SetTraits::ValueType element;\n    return stanfordcpplib::collections::readCollection(is, set, element, /* descriptor */ SetTraits::name() + \"::operator >>\");\n}\n\n\n/*\n * Types used to automatically check whether a type is comparable using\n * the < operator and whether a type supports operator== and hashCode.\n *\n * This is used to provide better compiler diagnostics to students when\n * they try to instantiate our times incorrectly.\n *\n * Later on, when C++20 concepts are rolled out, we should consider\n * replacing this code with concepts.\n */\ntemplate <typename T>\nstruct IsLessThanComparable {\nprivate:\n    /* Use SFNIAE overloading to detect which of these two options to pick. */\n    struct Yes{};\n    struct No {};\n\n    template <typename U>\n    static Yes check(int,\n                     decltype(std::declval<U>() < std::declval<U>()) = 0);\n    template <typename U> static No  check(...);\n\npublic:\n    static constexpr bool value =\n            std::conditional<std::is_same<decltype(check<T>(0)), Yes>::value,\n                             std::true_type,\n                             std::false_type>::type::value;\n};\n\ntemplate <typename T>\nstruct IsHashable {\nprivate:\n    /* Use SFNIAE overloading to detect which of these two options to pick. */\n    struct Yes{};\n    struct No {};\n\n    template <typename U>\n    static Yes check(int,\n                     decltype(hashCode(std::declval<U>())) = 0,\n                     decltype(std::declval<U>() == std::declval<U>()) = 0);\n    template <typename U> static No  check(...);\n\npublic:\n    static constexpr bool value =\n            std::conditional<std::is_same<decltype(check<T>(0)), Yes>::value,\n                             std::true_type,\n                             std::false_type>::type::value;\n};\n\n/*\n * Returns std::less<T>, except with a nice static assertion wrapped around it to\n * make sure that in the event that T isn't comparable via <, the error message is\n * more readable.\n */\ntemplate <typename T>\nstd::function<bool (const T&, const T&)> checkedLess() {\n    static_assert(IsLessThanComparable<T>::value,\n                  \"Oops! You tried using a type as a key in our Map without making it comparable. Click this error for more details.\");\n    /*\n     * Hello CS106 students! If you got directed to this line of code in a compiler error,\n     * it probably means that you tried making a Map with a custom struct or class type\n     * as the key type or a Set with a custom struct as a value type.\n     *\n     * In order to have a type be a key type in a Map - or to have a type be a value type\n     * in a Set - it needs to have be comparable using the < operator. By default, types in C++\n     * can't be compared using the < operator, hence the error.\n     *\n     * There are two ways to fix this. The first option would simply be to not use your custom\n     * type as a key in the Map or value in a Set. This is probably the easiest option.\n     *\n     * The second way to fix this is to explicitly define an operator< function for your custom\n     * type. Here's the syntax for doing that:\n     *\n     *     bool operator< (const YourCustomType& lhs, const YourCustomType& rhs) {\n     *         return compareTo(lhs.data1, rhs.data1,\n     *                          lhs.data2, rhs.data2,\n     *                          ...\n     *                          lhs.dataN, rhs.dataN);\n     *     }\n     *\n     * where data1, data2, ... dataN are the data members of your type. For example, if you had\n     * a custom type\n     *\n     *     struct MyType {\n     *         int myInt;\n     *         string myString;\n     *     };\n     *\n     * you would define the function\n     *\n     *     bool operator< (const MyType& lhs, const MyType& rhs) {\n     *         return compareTo(lhs.myInt,    rhs.myInt,\n     *                          lhs.myString, rhs.myString);\n     *     }\n     *\n     * Hope this helps!\n     */\n    return std::less<T>();\n}\n\n/*\n * Utility traits type that always contains a value that's false.\n */\ntemplate <typename... Args> struct Fail {\n    static constexpr bool value = false;\n};\n\n} // namespace collections\n} // namespace stanfordcpplib\n\n#endif // _collections_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/collections/dawglexicon.h",
    "content": "/*\n * File: dawglexicon.h\n * -------------------\n * This file exports the <code>DawgLexicon</code> class, which is a\n * compact structure for storing a list of words.\n * \n * @version 2019/04/09\n * - renamed private members with underscore naming scheme for consistency\n * @version 2018/03/10\n * - added method front\n * @version 2017/11/14\n * - added iterator version checking support\n * @version 2017/10/18\n * - fix compiler warnings\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * @version 2016/08/11\n * - added methods addAll, containsAll,\n *   operators +, +=, *, *= to better match Set/HashSet\n * @version 2016/08/10\n * - added constructor support for std initializer_list usage, such as {\"a\", \"b\", \"c\"}\n * @version 2016/08/04\n * - added operator >>\n * @version 2014/11/13\n * - added comparison operators <, >=, etc.\n * - added hashCode function\n * @version 2014/10/10\n * - added equals method\n * - added comparison operators ==, !=\n * - added toStlSet method\n * - fixed inclusion of foreach macro to avoid errors\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _dawglexicon_h\n#define _dawglexicon_h\n\n#include <initializer_list>\n#include <set>\n#include <string>\n\n#define INTERNAL_INCLUDE 1\n#include \"set.h\"\n#undef INTERNAL_INCLUDE\n#define INTERNAL_INCLUDE 1\n#include \"stack.h\"\n#undef INTERNAL_INCLUDE\n\n/**\n * This class is used to represent a <b><i>lexicon,</i></b> or word list.\n * The main difference between a lexicon and a dictionary is that\n * a lexicon does not provide any mechanism for storing definitions;\n * the lexicon contains only words, with no associated information.\n * It is therefore similar to a set of strings, but with a more\n * space-efficient internal representation.  The <code>DawgLexicon</code>\n * class supports efficient lookup operations for words and prefixes.\n *\n * Currently the recommended implementation of a lexicon is the\n * <code>Lexicon</code> class, which supports more operations than this one.\n */\n\n#include <cctype>\n\nclass DawgLexicon {\npublic:\n    /**\n     * Initializes a new empty lexicon.\n     */\n    DawgLexicon();\n\n    /**\n     * Initializes a new lexicon, reading in the contents of the lexicon from\n     * the specified data file.\n     *\n     * The data file must be in one of two formats:\n     * (1) a space-efficient precompiled binary format or\n     * (2) a text file containing one word per line.\n     *\n     * The Stanford library distribution includes a binary lexicon file named\n     * <code>English.dat</code> containing a list of words in English.  The\n     * standard code pattern to initialize that lexicon looks like this:\n     *\n     *<pre>\n     * DawgLexicon english(\"English.dat\");\n     *</pre>\n     */\n    DawgLexicon(std::istream& input);\n\n    /**\n     * Initializes a new lexicon, reading in the contents of the lexicon from\n     * the specified data file.\n     *\n     * The data file must be in one of two formats:\n     * (1) a space-efficient precompiled binary format (e.g. English.dat) or\n     * (2) a text file containing one word per line.\n     *\n     * @example DawgLexicon english(\"English.dat\");\n     */\n    DawgLexicon(const std::string& filename);\n\n    /**\n     * This constructor uses an initializer list to set up the lexicon.\n     * @example DawgLexicon lex {1, 2, 3};\n     */\n    DawgLexicon(std::initializer_list<std::string> list);\n\n    /**\n     * The destructor deallocates any storage associated with the lexicon.\n     */\n    virtual ~DawgLexicon();\n    \n    /**\n     * Adds the specified word to the lexicon.\n     */\n    void add(const std::string& word);\n\n    /**\n     * Adds all elements of the given other lexicon to this lexicon.\n     * Identical in behavior to the += operator.\n     */\n    DawgLexicon& addAll(const DawgLexicon& lex);\n\n    /**\n     * Adds all elements of the given list to this lexicon.\n     * Identical in behavior to the += operator.\n     */\n    DawgLexicon& addAll(std::initializer_list<std::string> list);\n\n    /**\n     * Reads the input stream and adds all of its words to the lexicon.\n     */\n    void addWordsFromFile(std::istream& input);\n    \n    /**\n     * Reads the file and adds all of its words to the lexicon.\n     */\n    void addWordsFromFile(const std::string& filename);\n    \n    /**\n     * Removes all words from the lexicon.\n     */\n    void clear();\n    \n    /**\n     * Returns <code>true</code> if <code>word</code> is contained in the\n     * lexicon.  In the <code>DawgLexicon</code> class, the case of letters is\n     * ignored, so \"Zoo\" is the same as \"ZOO\" or \"zoo\".\n     */\n    bool contains(const std::string& word) const;\n\n    /**\n     * Returns <code>true</code> if every value from the given other lexicon\n     * is also found in this lexicon.\n     * Equivalent in behavior to isSupersetOf.\n     */\n    bool containsAll(const DawgLexicon& set2) const;\n\n    /**\n     * Returns <code>true</code> if every value from the given list\n     * is also found in this lexicon.\n     * Equivalent in behavior to isSupersetOf.\n     */\n    bool containsAll(std::initializer_list<std::string> list) const;\n\n    /**\n     * Returns true if any words in the lexicon begin with <code>prefix</code>.\n     * Like <code>containsWord</code>, this method ignores the case of letters\n     * so that \"MO\" is a prefix of \"monkey\" or \"Monday\".\n     */\n    bool containsPrefix(const std::string& prefix) const;\n    \n    /**\n     * Compares two lexicons for equality.\n     * Returns <code>true</code> if this lexicon contains exactly the same\n     * values as the given other lexicon.\n     * Identical in behavior to the == operator.\n     */\n    bool equals(const DawgLexicon& lex2) const;\n\n    /**\n     * Returns the first element in alphabetical order from this lexicon (without removing it).\n     * This method signals an error if lexicon is empty.\n     */\n    std::string front() const;\n\n    /**\n     * Adds an element to this lexicon, if it was not already there.  This\n     * method is exported for compatibility with the STL <code>set</code> class.\n     */\n    void insert(const std::string& word);\n\n    /**\n     * Returns <code>true</code> if the lexicon contains no words.\n     */\n    bool isEmpty() const;\n\n    /**\n     * Returns <code>true</code> if every word of this lexicon is contained in\n     * the given other lexicon.\n     */\n    bool isSubsetOf(const DawgLexicon& lex2) const;\n\n    /**\n     * Returns <code>true</code> if every word of this lexicon is contained in\n     * the given list.\n     */\n    bool isSubsetOf(std::initializer_list<std::string> list) const;\n\n    /**\n     * Returns <code>true</code> if every word of this lexicon is contained in\n     * the given other lexicon.\n     * Equivalent in behavior to containsAll.\n     */\n    bool isSupersetOf(const DawgLexicon& lex2) const;\n\n    /**\n     * Returns <code>true</code> if every word of this lexicon is contained in\n     * the given list.\n     * Equivalent in behavior to containsAll.\n     */\n    bool isSupersetOf(std::initializer_list<std::string> list) const;\n\n    /**\n     * Calls the specified function on each word in the lexicon.\n     */\n    void mapAll(void (*fn)(std::string)) const;\n\n    /**\n     * Calls the specified function on each word in the lexicon.\n     */\n    void mapAll(void (*fn)(const std::string&)) const;\n\n    /**\n     * Calls the specified function on each word in the lexicon.\n     */\n    template <typename FunctorType>\n    void mapAll(FunctorType fn) const;\n\n    // implementation note: DawgLexicon does not support removal,\n    // so there are no methods remove(), removeAll, retainAll, etc.\n    // nor operators -, -=, *=\n\n    /**\n     * Returns the number of words contained in the lexicon.\n     */\n    int size() const;\n\n    /**\n     * Converts the lexicon to a printable string representation such as\n     * {\"a\", \"b\", \"c\"}.\n     * Note that this can be an expensive operation if the lexicon contains\n     * a large number of words.\n     */\n    std::string toString() const;\n    \n    /**\n     * Returns true if the two lexicons have the same elements.\n     */\n    bool operator ==(const DawgLexicon& lex2) const;\n\n    /**\n     * Returns true if the two lexicons do not have the same elements.\n     */\n    bool operator !=(const DawgLexicon& lex2) const;\n\n    /**\n     * Relational operators to compare two lexicons for ordering.\n     */\n    bool operator <(const DawgLexicon& lex2) const;\n\n    /**\n     * Relational operators to compare two lexicons for ordering.\n     */\n    bool operator <=(const DawgLexicon& lex2) const;\n\n    /**\n     * Relational operators to compare two lexicons for ordering.\n     */\n    bool operator >(const DawgLexicon& lex2) const;\n\n    /**\n     * Relational operators to compare two lexicons for ordering.\n     */\n    bool operator >=(const DawgLexicon& lex2) const;\n\n    /**\n     * Returns the union of this lexicon and the given other lexicon,\n     * which is the set of words that appear in at least one of the two.\n     */\n    DawgLexicon operator +(const DawgLexicon& lex2) const;\n\n    /**\n     * Returns the union of this lexicon and the given list,\n     * which is the set of words that appear in at least one of the two.\n     */\n    DawgLexicon operator +(std::initializer_list<std::string> list) const;\n\n    /**\n     * Returns the union of this lexicon and the given word.\n     */\n    DawgLexicon operator +(const std::string& word) const;\n\n    /**\n     * Adds all of the words from the given lexicon to this one.\n     */\n    DawgLexicon& operator +=(const DawgLexicon& lex2);\n\n    /**\n     * Adds all of the words from the given list to this lexicon.\n     */\n    DawgLexicon& operator +=(std::initializer_list<std::string> list);\n\n    /**\n     * Adds the given word to this lexicon.\n     */\n    DawgLexicon& operator +=(const std::string& word);\n\n    /**\n     * Allows you to add multiple elements to a lexicon.\n     * @example lex += \"she\", \"sells\", \"sea\", \"shells\";\n     */\n    DawgLexicon& operator ,(const std::string& word);\n\n    // Implementation note: DawgLexicon does not support -, -=, *, and *=\n    // operators like the standard Lexicon.  Because of its binary internal\n    // format, it is non-trivial to support removal from a DawgLexicon.\n\n    /*\n     * Additional DawgLexicon operations\n     * ---------------------------------\n     * In addition to the methods listed in this interface, the DawgLexicon\n     * class supports the following operations:\n     *\n     *   - Deep copying for the copy constructor and assignment operator\n     *   - Iteration using the range-based for statement and STL iterators\n     *\n     * All iteration is guaranteed to proceed in alphabetical order.  All\n     * words in the lexicon are stored in lowercase.\n     */\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\nprivate:\n#ifdef _WIN32\n#define LITTLE_ENDIAN 1\n#define BYTE_ORDER LITTLE_ENDIAN\n#endif\n\n#pragma pack(1)\n    struct Edge {\n#if defined(BYTE_ORDER) && BYTE_ORDER == LITTLE_ENDIAN\n        unsigned long letter:5;\n        unsigned long lastEdge:1;\n        unsigned long accept:1;\n        unsigned long unused:1;\n        unsigned long children:24;\n#else\n        unsigned long children:24;\n        unsigned long unused:1;\n        unsigned long accept:1;\n        unsigned long lastEdge:1;\n        unsigned long letter:5;\n#endif\n    };\n#pragma pack()\n    Edge* _edges;\n    Edge* _start;\n    int _edgeCount;\n    int _dawgWordsCount;\n    Set<std::string> _otherWords;\n\npublic:\n    /*\n     * Deep copying support\n     * --------------------\n     * This copy constructor and operator= are defined to make a\n     * deep copy, making it possible to pass/return lexicons by value\n     * and assign from one lexicon to another.  The entire contents of\n     * the lexicon, including all words, are copied.  Making copies is\n     * generally avoided because of the expense and thus, lexicons are\n     * typically passed by reference.  When a copy is needed, these\n     * operations are supported.\n     */\n    DawgLexicon(const DawgLexicon& src);\n    DawgLexicon& operator =(const DawgLexicon& src);\n\n    /*\n     * Iterator support\n     * ----------------\n     * The classes in the StanfordCPPLib collection implement input\n     * iterators so that they work symmetrically with respect to the\n     * corresponding STL classes.\n     */\n    class iterator : public std::iterator<std::input_iterator_tag, std::string> {\n    private:\n        const DawgLexicon* lp;\n        int index;\n        std::string currentDawgPrefix;\n        std::string currentSetWord;\n        std::string tmpWord;\n        Edge* edgePtr;\n        Stack<Edge*> stack;\n        Set<std::string>::iterator setIterator;\n        Set<std::string>::iterator setEnd;\n\n        void advanceToNextWordInDawg();\n        void advanceToNextWordInSet();\n        void advanceToNextEdge();\n\n    public:\n        iterator() : lp(nullptr), index(0), edgePtr(nullptr) {\n            /* empty */\n        }\n\n        iterator(const DawgLexicon* theLP, bool endFlag) {\n            this->lp = theLP;\n            if (endFlag) {\n                index = lp->size();\n            } else {\n                index = 0;\n                edgePtr = nullptr;\n                setIterator = lp->_otherWords.begin();\n                setEnd = lp->_otherWords.end();\n                currentDawgPrefix = \"\";\n                currentSetWord = \"\";\n                advanceToNextWordInDawg();\n                advanceToNextWordInSet();\n            }\n        }\n\n        iterator(const iterator& it) {\n            lp = it.lp;\n            index = it.index;\n            currentDawgPrefix = it.currentDawgPrefix;\n            currentSetWord = it.currentSetWord;\n            edgePtr = it.edgePtr;\n            stack = it.stack;\n            setIterator = it.setIterator;\n        }\n\n        iterator& operator ++() {\n            if (!edgePtr) {\n                advanceToNextWordInSet();\n            } else {\n                if (currentSetWord == \"\" || currentDawgPrefix < currentSetWord) {\n                    advanceToNextWordInDawg();\n                } else {\n                    advanceToNextWordInSet();\n                }\n            }\n            index++;\n            return *this;\n        }\n\n        iterator operator ++(int) {\n            iterator copy(*this);\n            operator++();\n            return copy;\n        }\n\n        bool operator ==(const iterator& rhs) {\n            return lp == rhs.lp && index == rhs.index;\n        }\n\n        bool operator !=(const iterator& rhs) {\n            return !(*this == rhs);\n        }\n\n        std::string operator *() {\n            if (!edgePtr) {\n                return currentSetWord;\n            }\n            if (currentSetWord == \"\" || currentDawgPrefix < currentSetWord) {\n                return currentDawgPrefix + lp->ordToChar(edgePtr->letter);\n            } else {\n                return currentSetWord;\n            }\n        }\n\n        std::string* operator ->() {\n            if (!edgePtr) {\n                return &currentSetWord;\n            }\n            if (currentSetWord == \"\" || currentDawgPrefix < currentSetWord) {\n                tmpWord = currentDawgPrefix + lp->ordToChar(edgePtr->letter);\n                return &tmpWord;\n            } else {\n                return &currentSetWord;\n            }\n        }\n    };\n\n    /**\n     * Returns an iterator positioned at the first word in the lexicon.\n     */\n    iterator begin() const {\n        return iterator(this, /* end */ false);\n    }\n\n    /**\n     * Returns an iterator positioned at the last word in the lexicon.\n     */\n    iterator end() const {\n        return iterator(this, /* end */ true);\n    }\n\nprivate:\n    Edge* findEdgeForChar(Edge* children, char ch) const;\n    Edge* traceToLastEdge(const std::string& s) const;\n    void readBinaryFile(std::istream& input);\n    void readBinaryFile(const std::string& filename);\n    void deepCopy(const DawgLexicon& src);\n    int countDawgWords(Edge* _start) const;\n\n    unsigned int charToOrd(char ch) const {\n        return ((unsigned int)(tolower(ch) - 'a' + 1));\n    }\n\n    char ordToChar(unsigned int ord) const {\n        return ((char)(ord - 1 + 'a'));\n    }\n};\n\ntemplate <typename FunctorType>\nvoid DawgLexicon::mapAll(FunctorType fn) const {\n    for (std::string word : *this) {\n        fn(word);\n    }\n}\n\n/**\n * Hashing function for lexicons.\n */\nint hashCode(const DawgLexicon& lex);\n\n/**\n * Prints the lexicon to the given output stream.\n */\nstd::ostream& operator <<(std::ostream& os, const DawgLexicon& lex);\n\n/**\n * Reads the contents of a lexicon from the given input stream.\n */\nstd::istream& operator >>(std::istream& is, DawgLexicon& lex);\n\n#endif // _dawglexicon_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/collections/deque.h",
    "content": "/*\n * File: deque.h\n * -------------\n * This file exports the <code>Deque</code> class, a collection\n * in which values can be added and removed from the front or back.\n * It combines much of the functionality of a stack and a queue.\n * \n * @version 2019/04/09\n * - renamed private members with underscore naming scheme for consistency\n * @version 2019/02/04\n * - changed internal implementation to wrap std collections\n * @version 2017/11/14\n * - added iterator version checking support\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * @version 2016/09/22\n * - added constructor support for std initializer_list usage, such as {1, 2, 3}\n * @version 2016/08/04\n * - fixed operator >> to not throw errors\n * @version 2015/07/05\n * - using global hashing functions rather than global variables\n * @version 2014/10/29\n * - added comparison operators ==, !=, <, etc.\n * @since 2014/10/29\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _deque_h\n#define _deque_h\n\n#include <deque>\n#include <initializer_list>\n\n#define INTERNAL_INCLUDE 1\n#include \"collections.h\"\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"hashcode.h\"\n#undef INTERNAL_INCLUDE\n\n/*\n * Class: Deque<ValueType>\n * -----------------------\n * This class models a linear structure called a <b><i>deque</i></b>\n * in which values can be added and removed at either end.\n * This discipline allows first-in/first-out (FIFO) and/or\n * last-in/first-out (LIFO) behavior. That is the defining\n * feature of deques.\n */\ntemplate <typename ValueType>\nclass Deque {\npublic:\n    /*\n     * Constructor: Deque\n     * Usage: Deque<ValueType> deque;\n     * ------------------------------\n     * Initializes a new empty deque.\n     */\n    Deque() = default;\n\n    /*\n     * Constructor: Deque\n     * Usage: Deque<ValueType> queue {1, 2, 3};\n     * ----------------------------------------\n     * Initializes a new deque that stores the given elements from front-back.\n     */\n    Deque(std::initializer_list<ValueType> list);\n\n    /*\n     * Destructor: ~Deque\n     * ------------------\n     * Frees any heap storage associated with this deque.\n     */\n    virtual ~Deque() = default;\n    \n    /*\n     * Method: add\n     * Usage: deque.add(value);\n     * ------------------------\n     * Adds <code>value</code> to the end of the deque.\n     * A synonym for the enqueueBack method.\n     */\n    void add(const ValueType& value);\n    void addBack(const ValueType& value);\n    void addFront(const ValueType& value);\n\n    /*\n     * Method: back\n     * Usage: ValueType last = deque.back();\n     * -------------------------------------\n     * Returns the last value in the deque by reference.\n     */\n    const ValueType& back() const;\n\n    /*\n     * Method: clear\n     * Usage: deque.clear();\n     * ---------------------\n     * Removes all elements from the deque.\n     */\n    void clear();\n    \n    /*\n     * Method: dequeue\n     * Usage: ValueType first = deque.dequeue();\n     * -----------------------------------------\n     * Removes and returns the first item in the deque.\n     * A synonym for the dequeueFront method.\n     */\n    ValueType dequeue();\n    ValueType dequeueBack();\n    ValueType dequeueFront();\n\n    /*\n     * Method: enqueue\n     * Usage: deque.enqueue(value);\n     * ----------------------------\n     * Adds <code>value</code> to the end of the deque.\n     * A synonym for the enqueueBack method.\n     */\n    void enqueue(const ValueType& value);\n    void enqueueBack(const ValueType& value);\n    void enqueueFront(const ValueType& value);\n    \n    /*\n     * Method: equals\n     * Usage: if (deque.equals(deque2)) ...\n     * ------------------------------------\n     * Compares two deques for equality.\n     * Returns <code>true</code> if this deque contains exactly the same\n     * values as the given other deque.\n     * Identical in behavior to the == operator.\n     */\n    bool equals(const Deque<ValueType>& deque2) const;\n    \n    /*\n     * Method: front\n     * Usage: ValueType first = deque.front();\n     * ---------------------------------------\n     * Returns the first value in the deque by reference.\n     */\n    const ValueType& front() const;\n\n    /*\n     * Method: isEmpty\n     * Usage: if (deque.isEmpty()) ...\n     * -------------------------------\n     * Returns <code>true</code> if the deque contains no elements.\n     */\n    bool isEmpty() const;\n    \n    /*\n     * Method: peek\n     * Usage: ValueType first = deque.peek();\n     * --------------------------------------\n     * Returns the first value in the deque, without removing it.  For\n     * compatibility with the STL classes, this method is also exported\n     * under the name <code>front</code>, in which case it returns the\n     * value by reference.\n     * A synonym for the peekFront method.\n     */\n    const ValueType& peek() const;\n    const ValueType& peekBack() const;\n    const ValueType& peekFront() const;\n\n    /*\n     * Method: remove\n     * Usage: ValueType first = deque.remove();\n     * ----------------------------------------\n     * Removes and returns the first item in the deque.\n     * A synonym for the dequeue method.\n     */\n    ValueType remove();\n    ValueType removeBack();\n    ValueType removeFront();\n\n    /*\n     * Method: size\n     * Usage: int n = deque.size();\n     * ----------------------------\n     * Returns the number of values in the deque.\n     */\n    int size() const;\n    \n    /*\n     * Returns an STL deque object with the same elements as this Deque.\n     */\n    std::deque<ValueType> toStlDeque() const;\n    \n    /*\n     * Method: toString\n     * Usage: string str = deque.toString();\n     * -------------------------------------\n     * Converts the deque to a printable string representation.\n     */\n    std::string toString() const;\n\n    /*\n     * Operators: ==, !=, <, >, <=, >=\n     * Usage: if (deque1 == deque2) ...\n     * Usage: if (deque1 < deque2) ...\n     * ...\n     * --------------------------------\n     * Relational operators to compare two deques.\n     * The ==, != operators require that the ValueType has a == operator\n     * so that the elements can be tested for equality.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     */\n    bool operator ==(const Deque& deque2) const;\n    bool operator !=(const Deque& deque2) const;\n    bool operator <(const Deque& deque2) const;\n    bool operator <=(const Deque& deque2) const;\n    bool operator >(const Deque& deque2) const;\n    bool operator >=(const Deque& deque2) const;\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\n    template <typename T>\n    friend int hashCode(const Deque<T>& s);\n    \n    template <typename T>\n    friend std::ostream& operator <<(std::ostream& os, const Deque<T>& deque);\n\nprivate:\n    // Instance variables\n    std::deque<ValueType> _elements;\n    stanfordcpplib::collections::VersionTracker _version;\n\npublic:\n\n    using iterator = stanfordcpplib::collections::CheckedIterator<typename std::deque<ValueType>::iterator>;\n    using const_iterator = stanfordcpplib::collections::CheckedIterator<typename std::deque<ValueType>::const_iterator>;\n\n    iterator begin();\n    iterator end();\n    const_iterator begin() const;\n    const_iterator end() const;\n};\n\ntemplate <typename ValueType>\nDeque<ValueType>::Deque(std::initializer_list<ValueType> list) : _elements(list) {\n\n}\n\ntemplate <typename ValueType>\nvoid Deque<ValueType>::add(const ValueType& value) {\n    enqueue(value);\n}\n\ntemplate <typename ValueType>\nvoid Deque<ValueType>::addBack(const ValueType& value) {\n    enqueueBack(value);\n}\n\ntemplate <typename ValueType>\nvoid Deque<ValueType>::addFront(const ValueType& value) {\n    enqueueFront(value);\n}\n\ntemplate <typename ValueType>\nconst ValueType& Deque<ValueType>::back() const {\n    if (isEmpty()) {\n        error(\"Deque::back: Attempting to read back of an empty deque\");\n    }\n    return _elements.back();\n}\n\ntemplate <typename ValueType>\nvoid Deque<ValueType>::clear() {\n    _elements.clear();\n    _version.update();\n}\n\n/*\n * Implementation notes: dequeue, peek\n * -----------------------------------\n * These methods must check for an empty deque and report an error\n * if there is no first element.\n */\ntemplate <typename ValueType>\nValueType Deque<ValueType>::dequeue() {\n    return dequeueFront();\n}\n\ntemplate <typename ValueType>\nValueType Deque<ValueType>::dequeueBack() {\n    if (isEmpty()) {\n        error(\"Deque::dequeueBack: Attempting to dequeue from an empty deque\");\n    }\n    auto result = _elements.back();\n    _elements.pop_back();\n    _version.update();\n    return result;\n}\n\ntemplate <typename ValueType>\nValueType Deque<ValueType>::dequeueFront() {\n    if (isEmpty()) {\n        error(\"Deque::dequeueFront: Attempting to dequeue from an empty deque\");\n    }\n    auto result = _elements.front();\n    _elements.pop_front();\n    _version.update();\n    return result;\n}\n\ntemplate <typename ValueType>\nvoid Deque<ValueType>::enqueue(const ValueType& value) {\n    enqueueBack(value);\n}\n\ntemplate <typename ValueType>\nvoid Deque<ValueType>::enqueueBack(const ValueType& value) {\n    _elements.push_back(value);\n    _version.update();\n}\n\ntemplate <typename ValueType>\nvoid Deque<ValueType>::enqueueFront(const ValueType& value) {\n    _elements.push_front(value);\n    _version.update();\n}\n\ntemplate <typename ValueType>\nbool Deque<ValueType>::equals(const Deque<ValueType>& deque2) const {\n    return _elements == deque2._elements;\n}\n\ntemplate <typename ValueType>\nconst ValueType& Deque<ValueType>::front() const {\n    if (isEmpty()) {\n        error(\"Deque::front: Attempting to read front of an empty deque\");\n    }\n    return _elements.front();\n}\n\ntemplate <typename ValueType>\nbool Deque<ValueType>::isEmpty() const {\n    return _elements.empty();\n}\n\ntemplate <typename ValueType>\nconst ValueType& Deque<ValueType>::peek() const {\n    return peekFront();\n}\n\ntemplate <typename ValueType>\nconst ValueType& Deque<ValueType>::peekBack() const {\n    if (isEmpty()) {\n        error(\"Deque::peekBack: Attempting to peek at an empty deque\");\n    }\n    return back();\n}\n\ntemplate <typename ValueType>\nconst ValueType& Deque<ValueType>::peekFront() const {\n    if (isEmpty()) {\n        error(\"Deque::peekFront: Attempting to peek at an empty deque\");\n    }\n    return front();\n}\n\ntemplate <typename ValueType>\nValueType Deque<ValueType>::remove() {\n    return dequeue();\n}\n\ntemplate <typename ValueType>\nValueType Deque<ValueType>::removeBack() {\n    if (isEmpty()) {\n        error(\"Deque::removeBack: Attempting to remove from an empty deque\");\n    }\n    return dequeueBack();\n}\n\ntemplate <typename ValueType>\nValueType Deque<ValueType>::removeFront() {\n    if (isEmpty()) {\n        error(\"Deque::removeFront: Attempting to remove from an empty deque\");\n    }\n    return dequeueFront();\n}\n\ntemplate <typename ValueType>\nint Deque<ValueType>::size() const {\n    return _elements.size();\n}\n\ntemplate <typename ValueType>\nstd::deque<ValueType> Deque<ValueType>::toStlDeque() const {\n    return _elements;\n}\n\ntemplate <typename ValueType>\nstd::string Deque<ValueType>::toString() const {\n    std::ostringstream os;\n    os << *this;\n    return os.str();\n}\n\ntemplate <typename ValueType>\nbool Deque<ValueType>::operator ==(const Deque& deque2) const {\n    return equals(deque2);\n}\n\ntemplate <typename ValueType>\nbool Deque<ValueType>::operator !=(const Deque& deque2) const {\n    return !equals(deque2);\n}\n\ntemplate <typename ValueType>\nbool Deque<ValueType>::operator <(const Deque& deque2) const {\n    return stanfordcpplib::collections::compare(_elements, deque2._elements) < 0;\n}\n\ntemplate <typename ValueType>\nbool Deque<ValueType>::operator <=(const Deque& deque2) const {\n    return stanfordcpplib::collections::compare(_elements, deque2._elements) <= 0;\n}\n\ntemplate <typename ValueType>\nbool Deque<ValueType>::operator >(const Deque& deque2) const {\n    return stanfordcpplib::collections::compare(_elements, deque2._elements) > 0;\n}\n\ntemplate <typename ValueType>\nbool Deque<ValueType>::operator >=(const Deque& deque2) const {\n    return stanfordcpplib::collections::compare(_elements, deque2._elements) >= 0;\n}\n\ntemplate <typename ValueType>\nstd::ostream& operator <<(std::ostream& os, const Deque<ValueType>& deque) {\n    return stanfordcpplib::collections::writeCollection(os, deque);\n}\n\ntemplate <typename ValueType>\nstd::istream& operator >>(std::istream& is, Deque<ValueType>& deque) {\n    ValueType element;\n    return stanfordcpplib::collections::readCollection(is, deque, element, /* descriptor */ \"Deque::operator >>\");\n}\n\ntemplate <typename ValueType>\ntypename Deque<ValueType>::iterator Deque<ValueType>::begin() {\n    return { &_version, _elements.begin(), _elements };\n}\ntemplate <typename ValueType>\ntypename Deque<ValueType>::const_iterator Deque<ValueType>::begin() const {\n    return { &_version, _elements.begin(), _elements };\n}\n\ntemplate <typename ValueType>\ntypename Deque<ValueType>::iterator Deque<ValueType>::end() {\n    return { &_version, _elements.end(), _elements };\n}\ntemplate <typename ValueType>\ntypename Deque<ValueType>::const_iterator Deque<ValueType>::end() const {\n    return { &_version, _elements.end(), _elements };\n}\n\n/*\n * Template hash function for deques.\n * Requires the element type in the deque to have a hashCode function.\n */\ntemplate <typename T>\nint hashCode(const Deque<T>& deq) {\n    return stanfordcpplib::collections::hashCodeCollection(deq);\n}\n\n#endif // _deque_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/collections/functional.h",
    "content": "/*\n * File: functional.h\n * ------------------\n * Contains a few functions for functional programming.\n *\n * The map, filter, and reduce operations are quite common in functional\n * programming systems.  They allow for elegant functional solutions to many\n * common programming tasks involving collections of data.\n *\n * There are similar functions in the C++ STL algorithm package.\n * But those functions often operate on STL iterators.\n * By contrast, these functions accept collections as parameters instead.\n * This is preferable for introductory students who are just learning.\n *\n * Implementation detail: Each function has several overloads.\n * Some of these are to allow for functions and predicates that accept their\n * arguments either by value or by const reference.\n * Other overloads allow either returning the result collection or passing it in\n * by reference as an output parameter to be filled in.\n *\n * We do not support \"in-place\" versions of these functions, partly because\n * there is not a perfect standard \"remove\" member across all collections that\n * accepts a value to remove as its parameter, and partly because the more common\n * functional style is to expect a new collection result to be returned.\n *\n * @author Marty Stepp\n * @version 2018/03/10\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _functional_h\n#define _functional_h\n\n#include <functional> // The standard header one. :-)\n\nnamespace functional {\n\n/*\n * Performs a filter operation on the given collection,\n * returning a new collection that retains only the elements\n * for which the given predicate function returns true.\n */\ntemplate <typename CollectionType, typename ElementType>\nCollectionType filter(CollectionType collection,\n                      bool (*predicate)(ElementType)) {\n    CollectionType result;\n    for (const ElementType& element : collection) {\n        if (predicate(element)) {\n            result.add(element);\n        }\n    }\n    return result;\n}\n\n/*\n * Performs a filter operation on the given collection,\n * returning a new collection that retains only the elements\n * for which the given predicate function returns true.\n */\ntemplate <typename CollectionType, typename ElementType>\nCollectionType filter(CollectionType collection,\n                      bool (*predicate)(const ElementType&)) {\n    CollectionType result;\n    for (const ElementType& element : collection) {\n        if (predicate(element)) {\n            result.add(element);\n        }\n    }\n    return result;\n}\n\n/*\n * Performs a filter operation on the given collection,\n * building a new collection that retains only the elements\n * for which the given predicate function returns true.\n * The new collection is stored in the given 'result' variable.\n * A reference to that same result is returned for convenience.\n */\ntemplate <typename CollectionType, typename ElementType>\nCollectionType& filter(CollectionType collection,\n                       bool (*predicate)(ElementType),\n                       CollectionType& result) {\n    for (const ElementType& element : collection) {\n        if (predicate(element)) {\n            result.add(element);\n        }\n    }\n    return result;\n}\n\n/*\n * Performs a filter operation on the given collection,\n * building a new collection that retains only the elements\n * for which the given predicate function returns true.\n * The new collection is stored in the given 'result' variable.\n * A reference to that same result is returned for convenience.\n */\ntemplate <typename CollectionType, typename ElementType>\nCollectionType& filter(CollectionType collection,\n                       bool (*predicate)(const ElementType&),\n                       CollectionType& result) {\n    for (const ElementType& element : collection) {\n        if (predicate(element)) {\n            result.add(element);\n        }\n    }\n    return result;\n}\n\n/**\n * Performs a filter operation on the given collection,\n * returning a new collection that retains only the elements\n * for which the given predicate function returns true.\n */\ntemplate <typename CollectionType, typename ElementType>\nCollectionType filter(CollectionType collection,\n                      std::function<bool (const ElementType &)> predicate) {\n    CollectionType result;\n    for (const ElementType& element : collection) {\n        if (predicate(element)) {\n            result.add(element);\n        }\n    }\n    return result;\n}\n\n/**\n * Performs a filter operation on the given collection,\n * building a new collection that retains only the elements\n * for which the given predicate function returns true.\n * The new collection is stored in the given 'result' variable.\n * A reference to that same result is returned for convenience.\n */\ntemplate <typename CollectionType, typename ElementType>\nCollectionType& filter(CollectionType collection,\n                       std::function<bool (const ElementType &)> predicate,\n                       CollectionType& result) {\n    for (const ElementType& element : collection) {\n        if (predicate(element)) {\n            result.add(element);\n        }\n    }\n    return result;\n}\n\n/*\n * Applies the given function to each element of the given collection,\n * producing and returning a new collection containing the results.\n */\ntemplate <typename CollectionType, typename ElementType>\nCollectionType map(CollectionType collection,\n                   ElementType (*fn)(ElementType)) {\n    CollectionType result;\n    for (const ElementType& element : collection) {\n        result.add(fn(element));\n    }\n    return result;\n}\n\n/*\n * Applies the given function to each element of the given collection,\n * producing and returning a new collection containing the results.\n */\ntemplate <typename CollectionType, typename ElementType>\nCollectionType map(CollectionType collection,\n                   ElementType (*fn)(const ElementType&)) {\n    CollectionType result;\n    for (const ElementType& element : collection) {\n        result.add(fn(element));\n    }\n    return result;\n}\n\n/*\n * Applies the given function to each element of the given collection,\n * producing a new collection containing the results.\n * The new collection is stored in the 'result' variable.\n * A reference to that same result is returned for convenience.\n */\ntemplate <typename CollectionType, typename ElementType,\n          typename CollectionType2, typename ElementType2>\nCollectionType2& map(CollectionType collection,\n                     ElementType2 (*fn)(ElementType),\n                     CollectionType2& result) {\n    for (const ElementType& element : collection) {\n        result.add(fn(element));\n    }\n    return result;\n}\n\n/*\n * Applies the given function to each element of the given collection,\n * producing a new collection containing the results.\n * The new collection is stored in the 'result' variable.\n * A reference to that same result is returned for convenience.\n */\ntemplate <typename CollectionType, typename ElementType,\n          typename CollectionType2, typename ElementType2>\nCollectionType2& map(CollectionType collection,\n                     ElementType2 (*fn)(const ElementType&),\n                     CollectionType2& result) {\n    for (const ElementType& element : collection) {\n        result.add(fn(element));\n    }\n    return result;\n}\n\n/**\n * Applies the given function to each element of the given collection,\n * producing and returning a new collection containing the results.\n */\ntemplate <typename CollectionType, typename ElementType>\nCollectionType map(CollectionType collection,\n                   std::function<ElementType (const ElementType &)> fn) {\n    CollectionType result;\n    for (const ElementType& element : collection) {\n        result.add(fn(element));\n    }\n    return result;\n}\n\n/**\n * Applies the given function to each element of the given collection,\n * producing a new collection containing the results.\n * The new collection is stored in the 'result' variable.\n * A reference to that same result is returned for convenience.\n */\ntemplate <typename CollectionType, typename ElementType,\n          typename CollectionType2, typename ElementType2>\nCollectionType2& map(CollectionType collection,\n                     std::function<ElementType (const ElementType &)> fn,\n                     CollectionType2& result) {\n    for (const ElementType& element : collection) {\n        result.add(fn(element));\n    }\n    return result;\n}\n\n/*\n * Performs a reduction operation, applying a function to each neighboring pair\n * of elements of the collection until they are all combined (reduced) into a\n * single value, which is then returned.\n */\ntemplate <typename CollectionType, typename ElementType>\nElementType reduce(CollectionType collection,\n                   ElementType (*fn)(ElementType e1, ElementType e2),\n                   ElementType startValue) {\n    ElementType prev = startValue;\n    for (const ElementType& element : collection) {\n        prev = fn(prev, element);\n    }\n    return prev;\n}\n\n/*\n * Performs a reduction operation, applying a function to each neighboring pair\n * of elements of the collection until they are all combined (reduced) into a\n * single value, which is then returned.\n */\ntemplate <typename CollectionType, typename ElementType>\nElementType reduce(CollectionType collection,\n                   ElementType (*fn)(ElementType e1, ElementType e2)) {\n    bool first = true;\n    ElementType prev;\n    for (const ElementType& element : collection) {\n        if (first) {\n            prev = element;\n            first = false;\n        } else {\n            prev = fn(prev, element);\n        }\n    }\n    return prev;\n}\n\n/*\n * Performs a reduction operation, applying a function to each neighboring pair\n * of elements of the collection until they are all combined (reduced) into a\n * single value, which is then returned.\n * Begins the reduction with the given starting value, which is then merged\n * with each value from the collection one at a time.\n */\ntemplate <typename CollectionType, typename ElementType>\nElementType reduce(CollectionType collection,\n                   ElementType (*fn)(const ElementType& e1, const ElementType& e2),\n                   ElementType startValue) {\n    ElementType prev = startValue;\n    for (const ElementType& element : collection) {\n        prev = fn(prev, element);\n    }\n    return prev;\n}\n\n/*\n * Performs a reduction operation, applying a function to each neighboring pair\n * of elements of the collection until they are all combined (reduced) into a\n * single value, which is then returned.\n * Begins the reduction with the given starting value, which is then merged\n * with each value from the collection one at a time.\n */\ntemplate <typename CollectionType, typename ElementType>\nElementType reduce(CollectionType collection,\n                   ElementType (*fn)(const ElementType& e1, const ElementType& e2)) {\n    bool first = true;\n    ElementType prev;\n    for (const ElementType& element : collection) {\n        if (first) {\n            prev = element;\n            first = false;\n        } else {\n            prev = fn(prev, element);\n        }\n    }\n    return prev;\n}\n\n/**\n * Performs a reduction operation, applying a function to each neighboring pair\n * of elements of the collection until they are all combined (reduced) into a\n * single value, which is then returned.\n * Begins with a \"default\" value of the starting type.\n */\ntemplate <typename CollectionType, typename ElementType>\nElementType reduce(CollectionType collection,\n                   std::function<ElementType (const ElementType&, const ElementType &)> fn) {\n    ElementType prev;\n    for (const ElementType& element : collection) {\n        prev = fn(prev, element);\n    }\n    return prev;\n}\n\n/**\n * Performs a reduction operation, applying a function to each neighboring pair\n * of elements of the collection until they are all combined (reduced) into a\n * single value, which is then returned.\n * Begins the reduction with the given starting value, which is then merged\n * with each value from the collection one at a time.\n */\ntemplate <typename CollectionType, typename ElementType>\nElementType reduce(CollectionType collection,\n                   std::function<ElementType (const ElementType&, const ElementType &)> fn,\n                   ElementType startValue) {\n    ElementType prev = startValue;\n    for (const ElementType& element : collection) {\n        prev = fn(prev, element);\n    }\n    return prev;\n}\n\n} // namespace functional\n\n#endif // _functional_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/collections/graph.h",
    "content": "/*\n * File: graph.h\n * -------------\n * This file exports a parameterized Graph class used to represent graphs,\n * which consist of a set of nodes (vertices) and a set of arcs (edges).\n * \n * @version 2019/08/13\n * - fixed compiler error with Graph default constructor on older g++ compilers\n * @version 2018/09/07\n * - reformatted doc-style comments\n * @version 2018/03/10\n * - added methods front, back\n * - fixed compiler issue with getArcSet call\n * @version 2017/11/14\n * - added nodeCount, arcCount, getNodeNames\n * @version 2016/12/09\n * - added iterator version checking support (implicitly via Map)\n * - fixed bug in getInverseNeighborNames function\n * @version 2016/12/01\n * - removed memory leaks of graph node and arc structures\n * - fixed bug in containsNode method (was returning false positives)\n * - fixed bugs in some node/arc methods (should not crash on empty/null args)\n * @version 2016/11/29\n * - added getNeighborNames, getInverseNeighborNames\n * @version 2016/11/26\n * - added getInverseArcSet\n * @version 2016/11/19\n * - changed addNode to not throw when adding duplicates\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * @version 2016/08/04\n * - fixed operator >> to not throw errors\n * @version 2015/07/05\n * - using global hashing functions rather than global variables\n * @version 2014/11/13\n * - added iterator begin(), end() support so that students can directly\n *   for-each over the vertices of a graph.\n * - added comparison operators ==, !=, <, etc.\n * - added template hashCode function\n * @version 2014/10/20\n * - converted functions to accept const string& rather than string for speed\n * - added iterator/for-each support over nodes; begin() / end() members\n * - updated various methods that accept node/arc pointers to verify\n *   that those nodes/arcs are part of the graph first, and to check for null\n * @version 2014/10/10\n * - removed use of __foreach macro\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _graph_h\n#define _graph_h\n\n#include <string>\n\n#define INTERNAL_INCLUDE 1\n#include \"collections.h\"\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"hashcode.h\"\n#define INTERNAL_INCLUDE 1\n#include \"map.h\"\n#define INTERNAL_INCLUDE 1\n#include \"set.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"tokenscanner.h\"\n#undef INTERNAL_INCLUDE\n\n/**\n * This class represents a graph with the specified node and arc types.\n * The <code>NodeType</code> and <code>ArcType</code> parameters indicate\n * the structure type or class used for nodes and arcs, respectively.\n * These types can contain any fields or methods required by the client,\n * but must contain the following fields required by the <code>Graph</code>\n * package itself:\n *\n * <p>The <code>NodeType</code> definition must include:\n * <ul>\n *   <li>A <code>string</code> field called <code>name</code>\n *   <li>A <code>Set&lt;ArcType *&gt;</code> field called <code>arcs</code>\n * </ul>\n *\n * <p>The <code>ArcType</code> definition must include:\n * <ul>\n *   <li>A <code>NodeType *</code> field called <code>start</code>\n *   <li>A <code>NodeType *</code> field called <code>finish</code>\n * </ul>\n */\ntemplate <typename NodeType, typename ArcType>\nclass Graph {\npublic:\n    /**\n     * Creates an empty graph.\n     * @bigoh O(1)\n     */\n    Graph();\n    \n    /**\n     * Frees the internal storage allocated to represent the graph.\n     * @bigoh O(V + E)\n     */\n    virtual ~Graph();\n    \n    /**\n     * Adds a directed arc to the graph from node n1 to n2.\n     * If either node is not found in the graph, said node will be added to the graph.\n     * Returns a pointer to the arc in case the client needs to capture this value.\n     * @bigoh O(log V + log E)\n     */\n    ArcType* addArc(const std::string& n1, const std::string& n2);\n\n    /**\n     * Adds a directed arc to the graph from node n1 to n2.\n     * If either node is not found in the graph, said node will be added to the graph.\n     * Returns a pointer to the arc in case the client needs to capture this value.\n     *\n     * @throw ErrorException if any pointer passed is null\n     * @bigoh O(log V + log E)\n     */\n    ArcType* addArc(NodeType* n1, NodeType* n2);\n\n    /**\n     * Adds the given arc to the graph.\n     * If the start/finish nodes passed are not already part of the graph,\n     * they are added to the graph.\n     * Returns a pointer to the arc in case the client needs to capture this value.\n     *\n     * Memory management: Once you hand me this ArcType* pointer, our code owns it.\n     * We will delete/free it when done with it.\n     * You do not need to (and should not) free it yourself.\n     *\n     * @throw ErrorException if any pointer passed is null\n     * @bigoh O(log V + log E)\n     */\n    ArcType* addArc(ArcType* arc);\n\n    /**\n     * Adds a node to the graph.  The first version of this method\n     * creates a new node of the appropriate type and initializes its\n     * fields; the second assumes that the client has already created\n     * the node and simply adds it to the graph.\n     * Returns a pointer to the node.\n     * If a node with the given name is already present, does nothing.\n     *\n     * Memory management: Once you hand me this NodeType* pointer, our code owns it.\n     * We will delete/free it when done with it.\n     * You do not need to (and should not) free it yourself.\n     *\n     * @throw ErrorException if any pointer passed is null\n     * @bigoh O(log V)\n     */\n    NodeType* addNode(const std::string& name);\n\n    /**\n     * Adds a node to the graph.\n     * This version assumes that the client has already created the node structure\n     * and simply adds it to the graph.\n     * Returns a pointer to the node.\n     * If a node with the given name is already present, does nothing.\n     *\n     * Memory management: Once you hand me this NodeType* pointer, our code owns it.\n     * We will delete/free it when done with it.\n     * You do not need to (and should not) free it yourself.\n     *\n     * @throw ErrorException if any pointer passed is null\n     * @bigoh O(log V)\n     */\n    NodeType* addNode(NodeType* node);\n\n    /**\n     * Returns the number of arcs in the graph.\n     * @bigoh O(1)\n     */\n    int arcCount() const;\n\n    /**\n     * Returns the last node in the graph in the order as would be returned by\n     * a for-each loop or iterator.\n     * @throw ErrorException if the graph is empty\n     * @bigoh O(1)\n     */\n    NodeType* back() const;\n\n    /**\n     * Reinitializes the graph to be empty, removing all nodes and arcs\n     * and freeing any heap storage used by their corresponding internal structures.\n     * @bigoh O(V + E)\n     */\n    void clear();\n\n    /**\n     * Removes all arcs from the graph, freeing the heap storage used by their\n     * corresponding internal structures. The graph's nodes remain intact.\n     * @bigoh O(E)\n     */\n    void clearArcs();\n\n    /**\n     * Removes all arcs from the graph that start from the given node,\n     * freeing the heap storage used by their corresponding internal structures.\n     * The graph's nodes remain intact.\n     * If the given node pointer is null or not found in the graph, has no effect.\n     * @bigoh O(log V + E)\n     */\n    void clearArcs(NodeType* node);\n\n    /**\n     * Removes all arcs from the graph that start from the given node,\n     * freeing the heap storage used by their corresponding internal structures.\n     * The graph's nodes remain intact.\n     * If the given node is not found in the graph, has no effect.\n     * @bigoh O(E log E)\n     */\n    void clearArcs(const std::string& name);\n\n    /**\n     * Returns true if there exists an arc directly between the given two nodes.\n     * If either node is null or is not contained in this graph, returns false.\n     * @bigoh O(log E)\n     */\n    bool containsArc(NodeType* node1, NodeType* node2) const;\n\n    /**\n     * Returns true if there exists an arc directly between the given two nodes.\n     * If either node is not contained in this graph, returns false.\n     * @bigoh O(log E)\n     */\n    bool containsArc(const std::string& node1, const std::string& node2) const;\n\n    /**\n     * Returns true if the given arc exists in this graph.\n     * If the given arc is null or either of its nodes are not contained in\n     * this graph, returns false.\n     * @bigoh O(log E)\n     */\n    bool containsArc(ArcType* arc) const;\n\n    /**\n     * Returns true if there exists a node in this graph with the given name.\n     * @bigoh O(log V)\n     */\n    bool containsNode(const std::string& name) const;\n\n    /**\n     * Returns true if the given node is part of this graph.\n     * If the pointer passed is null, returns false.\n     * @bigoh O(log V)\n     */\n    bool containsNode(NodeType* node) const;\n\n    /**\n     * Compares two graphs for equality.\n     * Returns <code>true</code> if this graph contains exactly the same\n     * nodes, arcs, and connections as the given other graph.\n     * Identical in behavior to the == operator.\n     * @bigoh O(V log V + E log E)\n     */\n    bool equals(const Graph<NodeType, ArcType>& graph2) const;\n    \n    /**\n     * Returns the first node in the graph in the order as would be returned by\n     * a for-each loop or iterator.\n     * @throw ErrorException if the graph is empty\n     * @bigoh O(1)\n     */\n    NodeType* front() const;\n\n    /**\n     * Returns the arc, if any, from node1 to node2.\n     * If multiple arcs exist between the given two nodes, which is returned is unspecified.\n     * If either pointer passed is null or no such arc exists, returns a null pointer.\n     * @bigoh O(log V + log E)\n     */\n    ArcType* getArc(NodeType* node1, NodeType* node2) const;\n\n    /**\n     * Returns the arc, if any, from node1 to node2.\n     * If multiple arcs exist between the given two nodes, which is returned is unspecified.\n     * If no such arc exists, returns a null pointer.\n     * @bigoh O(log V + log E)\n     */\n    ArcType* getArc(const std::string& node1, const std::string& node2) const;\n\n    /**\n     * Returns the set of all arcs in the graph.\n     * @bigoh O(1)\n     */\n    const Set<ArcType*>& getArcSet() const;\n\n    /**\n     * Returns the set of all arcs that start at the specified node,\n     * indicated as a pointer to its node structure.\n     * If the pointer passed is null or the given node is not found in the graph,\n     * returns an empty set.\n     * @bigoh O(1)\n     */\n    const Set<ArcType*>& getArcSet(NodeType* node) const;\n\n    /**\n     * Returns the set of all arcs that start at the specified node.\n     * If the given node is not found in the graph, returns an empty set.\n     * @bigoh O(1)\n     */\n    const Set<ArcType*>& getArcSet(const std::string& name) const;\n\n    /**\n     * Returns the set of outbound arcs to the given node from other nodes.\n     * In other words, getInverseArcSet(n1) is the set of all nodes n2\n     * such that there exists an arc E starting from n2 and ending at n1.\n     *\n     * If any pointer passed is null, or if the given node is not found\n     * in this graph, returns an empty set.\n     * @bigoh O(E)\n     */\n    const Set<ArcType*> getInverseArcSet(NodeType* node) const;\n\n    /**\n     * Returns the set of outbound arcs to the given node from other nodes.\n     * In other words, getInverseArcSet(n1) is the set of all nodes n2\n     * such that there exists an arc E starting from n2 and ending at n1.\n     *\n     * If the given node is not found in this graph, returns an empty set.\n     * @bigoh O(E)\n     */\n    const Set<ArcType*> getInverseArcSet(const std::string& name) const;\n\n    /**\n     * Returns the set of strings of names of nodes that are neighbors of the\n     * given node.\n     * In other words, getInverseNeighborNames(n1) is the set of all strings n2\n     * such that there exists an arc E starting from n2 and ending at n1.\n     *\n     * If any pointer passed is null, or if the given node is not found\n     * in this graph, returns an empty set.\n     * @bigoh O(E)\n     */\n    Set<std::string> getInverseNeighborNames(NodeType* node) const;\n\n    /**\n     * Returns the set of strings of names of nodes that are neighbors of the\n     * given node.\n     * In other words, getInverseNeighborNames(n1) is the set of all strings n2\n     * such that there exists an arc E starting from n2 and ending at n1.\n     *\n     * If the given node is not found in this graph, returns an empty set.\n     * @bigoh O(E)\n     */\n    Set<std::string> getInverseNeighborNames(const std::string& node) const;\n\n    /**\n     * Returns the set of nodes that are neighbors of the specified node.\n     * In other words, getInverseNeighbors(n1) is the set of all nodes n2\n     * such that there exists an arc E starting from n2 and ending at n1.\n     *\n     * If any pointer passed is null, or if the given node is not found\n     * in this graph, returns an empty set.\n     * @bigoh O(E)\n     */\n    Set<NodeType*> getInverseNeighbors(NodeType* node) const;\n\n    /**\n     * Returns the set of nodes that are neighbors of the specified node.\n     * In other words, getInverseNeighbors(n1) is the set of all nodes n2\n     * such that there exists an arc E starting from n2 and ending at n1.\n     *\n     * If the given node is not found in this graph, returns an empty set.\n     * @bigoh O(E)\n     */\n    Set<NodeType*> getInverseNeighbors(const std::string& node) const;\n\n    /**\n     * Returns the set of node names that are neighbors of the specified node.\n     * In other words, getNeighbors(n1) is the set of all strings n2\n     * such that there exists an arc E starting from n1 and ending at n2.\n     *\n     * If any pointer passed is null, or if the given node is not found\n     * in this graph, returns an empty set.\n     * @bigoh O(log V)\n     */\n    Set<std::string> getNeighborNames(NodeType* node) const;\n\n    /**\n     * Returns the set of node names that are neighbors of the specified node.\n     * In other words, getNeighbors(n1) is the set of all strings n2\n     * such that there exists an arc E starting from n1 and ending at n2.\n     *\n     * If the given node is not found in this graph, returns an empty set.\n     * @bigoh O(log V)\n     */\n    Set<std::string> getNeighborNames(const std::string& node) const;\n\n    /**\n     * Returns the set of nodes that are neighbors of the specified node.\n     * In other words, getNeighbors(n1) is the set of all nodes n2\n     * such that there exists an arc E starting from n1 and ending at n2.\n     *\n     * If any pointer passed is null, or if the given node is not found\n     * in this graph, returns an empty set.\n     * @bigoh O(log V)\n     */\n    Set<NodeType*> getNeighbors(NodeType* node) const;\n\n    /**\n     * Returns the set of nodes that are neighbors of the specified node.\n     * In other words, getNeighbors(n1) is the set of all nodes n2\n     * such that there exists an arc E starting from n1 and ending at n2.\n     *\n     * If the given node is not found in this graph, returns an empty set.\n     * @bigoh O(log V)\n     */\n    Set<NodeType*> getNeighbors(const std::string& node) const;\n\n    /**\n     * Looks up a node in the name table attached to the graph and\n     * returns a pointer to that node.\n     * If no node with the specified name exists, returns <code>nullptr</code>.\n     * @bigoh O(log V)\n     */\n    NodeType* getNode(const std::string& name) const;\n\n    /**\n     * Returns the set of the names of all nodes in the graph.\n     * Similar to getNodeSet but returns a set of strings rather than a set\n     * of pointers to nodes.\n     * @bigoh O(V log V)\n     */\n    Set<std::string> getNodeNames() const;\n    \n    /**\n     * Returns the set of all nodes in the graph.\n     * These are direct pointers to the internal NodeType* structures in the\n     * graph, so any modifications you make to them will be reflected in the graph.\n     * @bigoh O(1)\n     */\n    const Set<NodeType*>& getNodeSet() const;\n\n    /**\n     * Returns <code>true</code> if the graph contains an arc from\n     * <code>n1</code> to <code>n2</code>.\n     * If any pointer passed is null, or if either node is not contained\n     * in this graph, returns false.\n     * @bigoh O(log V)\n     */\n    bool isConnected(NodeType* n1, NodeType* n2) const;\n\n    /**\n     * Returns <code>true</code> if the graph contains an arc from\n     * <code>n1</code> to <code>n2</code>.\n     * If either node is not contained in this graph, returns false.\n     * @bigoh O(log V)\n     */\n    bool isConnected(const std::string& s1, const std::string& s2) const;\n\n    /**\n     * Returns true if the graph contains an edge from v1 to v2.\n     * If either of the vertexes supplied is not found in the graph, returns false.\n     * @bigoh O(log V)\n     */\n    bool isNeighbor(const std::string& node1, const std::string& node2) const;\n\n    /**\n     * Returns true if the graph contains an edge from v1 to v2.\n     * If either of the vertexes supplied is null or is not found in the graph, returns false.\n     * @bigoh O(log V)\n     */\n    bool isNeighbor(NodeType* node1, NodeType* node2) const;\n\n    /**\n     * Returns <code>true</code> if the graph contains no vertexes.\n     * @bigoh O(1)\n     */\n    bool isEmpty() const;\n\n    /**\n     * Returns the number of nodes in the graph.\n     * Equivalent to size().\n     * @bigoh O(1)\n     */\n    int nodeCount() const;\n\n    /**\n     * Removes an arc from v1 to v2 in the graph, specified by the names of its endpoints.\n     * If more than one arc connects the specified endpoints, all of them are removed.\n     * If no arc connects the given endpoints, or the given arc is not found,\n     * the call has no effect.\n     * @bigoh O(E + log V)\n     */\n    void removeArc(const std::string& s1, const std::string& s2);\n\n    /**\n     * Removes an arc from v1 to v2 in the graph, specified by the node pointers\n     * at its endpoints.\n     * If more than one arc connects the specified endpoints, all of them are removed.\n     * If no arc connects the given endpoints, or the given arc is not found,\n     * the call has no effect.\n     * @bigoh O(E + log V)\n     */\n    void removeArc(NodeType* n1, NodeType* n2);\n\n    /**\n     * Removes the given arc from the graph, specified as an arc pointer.\n     * If more than one arc connects the specified endpoints, all of them are removed.\n     * If no arc connects the given endpoints, or the given arc is not found,\n     * the call has no effect.\n     *\n     * Memory management: Our code will delete/free the ArcType* object when done with it.\n     * You do not need to (and should not) free it yourself.\n     * @bigoh O(log E + log V)\n     */\n    void removeArc(ArcType* arc);\n\n    /**\n     * Removes the node with the given name from the graph.\n     * Removing a node also removes all arcs that contain that node.\n     * If a node name is passed that is not part of the graph,\n     * the call has no effect.\n     * @bigoh O(E + log V)\n     */\n    void removeNode(const std::string& name);\n\n    /**\n     * Removes a node from the graph, specified as a pointer value.\n     * Removing a node also removes all arcs that contain that node.\n     * If a node or name is passed that is null or is not part of the graph,\n     * the call has no effect.\n     *\n     * Memory management: Our code will delete/free the NodeType* object when done with it.\n     * You do not need to (and should not) free it yourself.\n     * @bigoh O(E + log V)\n     */\n    void removeNode(NodeType* node);\n\n    /**\n     * Reads the data for an arc from the scanner.\n     * The <code>forward</code> argument points to the arc in the forward direction.\n     * If the arc is undirected, <code>backward</code> points to the reverse arc;\n     * for directed arcs, the <code>backward</code> pointer is <code>nullptr</code>.\n     *\n     * The default implementation of this method is empty.\n     * Clients that want to initialize other fields in the arc must override\n     * this method so that it initializes one or both arc, as appropriate.\n     */\n    virtual void scanArcData(TokenScanner &, ArcType* /*forward*/, ArcType* /*backward*/) {\n        // empty\n    }\n\n    /**\n     * This method reads one \"entry\" for the graph, which is either a node\n     * description or an arc description.  The <code>scanGraphEntry</code>\n     * method returns <code>true</code> if it reads an entry, and\n     * <code>false</code> at the end of file or at text that cannot be\n     * recognized as a graph entry.\n     *\n     * Node entries consist of the name of a node (which may be quoted\n     * if it contains special characters), optionally followed by data for\n     * the node.  Arc descriptions have one of the following forms:\n     *\n     * <pre>\n     * n1 -> n2\n     * n1 - n2\n     * </pre>\n     *\n     * either of which can be followed by data for the arc.\n     * The first form creates a single directed arc; the second creates two arcs,\n     * one in each direction.\n     *\n     * Clients who want to read node or arc data must override the empty\n     * versions of <code>scanNodeData</code> and <code>scanArcData</code>\n     * included in this interface.\n     */\n    virtual bool scanGraphEntry(TokenScanner& scanner);\n\n    /**\n     * Reads the data for the specified node from the scanner.\n     * The default implementation of this method is empty.\n     * Clients that want to initialize other fields in the node from the token\n     * stream must override this method.\n     */\n    virtual void scanNodeData(TokenScanner&, NodeType*) {\n        /* Empty */\n    }\n\n    /**\n     * Returns the number of nodes in the graph.\n     * Equivalent to nodeCount.\n     * @bigoh O(1)\n     */\n    int size() const;\n\n    /**\n     * Converts the graph to a printable string representation.\n     * @return a string such as <code>\"{A, B, C, D, A - B, B - D, C - D}\"</code>.\n     * @bigoh O(V + E)\n     */\n    std::string toString() const;\n    \n    /**\n     * Writes the data for the arc to the output stream.\n     * The default implementation of this method is empty.\n     * Clients that want to store other fields from the arc must override this\n     * method so that it writes that data in a form that scanArcData can read.\n     */\n    virtual void writeArcData(std::ostream&, ArcType*) const {\n        // empty\n    }\n\n    /**\n     * Writes the data for the node to the output stream.\n     * The default implementation of this method is empty.\n     * Clients that want to store other fields from the node must override this\n     * method so that it writes that data in a form that scanNodeData can read.\n     */\n    virtual void writeNodeData(std::ostream&, NodeType*) const {\n        // empty\n    }\n\n    using graph_iterator = typename Set<NodeType *>::const_iterator;\n    \n    /**\n     * Returns an STL iterator positioned at the first vertex in the graph.\n     * @bigoh O(1)\n     */\n    graph_iterator begin() const {\n        return _nodes.begin();\n    }\n\n    /**\n     * Returns an STL iterator positioned after the last vertex in the graph.\n     * @bigoh O(1)\n     */\n    graph_iterator end() const {\n        return _nodes.end();\n    }\n    \n    /**\n     * Relational operators to compare two graphs.\n     * The ==, != operators require that the ValueType has a == operator\n     * so that the elements can be tested for equality.\n     * @bigoh O(V log V + E log E)\n     */\n    bool operator ==(const Graph& graph2) const;\n\n    /**\n     * Relational operators to compare two graphs.\n     * The ==, != operators require that the ValueType has a == operator\n     * so that the elements can be tested for equality.\n     * @bigoh O(V log V + E log E)\n     */\n    bool operator !=(const Graph& graph2) const;\n\n    /**\n     * Relational operators to compare two graphs.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     * @bigoh O(V log V + E log E)\n     */\n    bool operator <(const Graph& graph2) const;\n\n    /**\n     * Relational operators to compare two graphs.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     * @bigoh O(V log V + E log E)\n     */\n    bool operator <=(const Graph& graph2) const;\n\n    /**\n     * Relational operators to compare two graphs.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     * @bigoh O(V log V + E log E)\n     */\n    bool operator >(const Graph& graph2) const;\n\n    /**\n     * Relational operators to compare two graphs.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     * @bigoh O(V log V + E log E)\n     */\n    bool operator >=(const Graph& graph2) const;\n\nprivate:\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\n    /**\n     * This template class establishes the ordering for nodes and arcs.\n     * Nodes are processed in alphabetical order by node name; arcs are\n     * compared in much the same way, looking first at the start node and\n     * then continuing on to look at the finish node if the start nodes\n     * match.  These functions, however, indicate equality only if the\n     * arguments are identical, in the sense that they are at the same\n     * address.  If two distinct arcs, for example, connect the same pair\n     * of nodes (which is perfectly legal in the graph abstraction and can\n     * be used, for example, to represent multiple modes of travel between\n     * two nodes), those arcs are not the same.\n     *\n     * @private\n     */\n    class GraphComparator {\n    public:\n        bool operator ()(NodeType* n1, NodeType* n2) {\n            return compare(n1, n2) < 0;\n        }\n\n        bool operator ()(ArcType* a1, ArcType* a2) {\n            return compare(a1, a2) < 0;\n        }\n    };\n\n    Set<NodeType*> _nodes{GraphComparator()}; /* The set of nodes in the graph */\n    Set<ArcType*> _arcs{GraphComparator()};   /* The set of arcs in the graph  */\n    Map<std::string, NodeType*> _nodeMap;     /* A map from names to nodes     */\n\npublic:\n    /**\n     * These functions are part of the public interface of the class but are\n     * defined here to avoid adding confusion to the Graph class.\n     *\n     * @private\n     */\n    Graph& operator =(const Graph& src);\n\n    /**\n     * These functions are part of the public interface of the class but are\n     * defined here to avoid adding confusion to the Graph class.\n     *\n     * @private\n     */\n    Graph(const Graph& src);\n\n    /**\n     * Compares two nodes for ordering within a set.\n     *\n     * @private\n     */\n    static int compare(NodeType* n1, NodeType* n2) {\n        if (n1 == n2) {\n            return 0;\n        }\n        if (n1->name < n2->name) {\n            return -1;\n        }\n        if (n1->name > n2->name) {\n            return +1;\n        }\n        return (n1 < n2) ? -1 : +1;\n    }\n\n    /**\n     * Compares two arcs for ordering within a set.\n     *\n     * @private\n     */\n    static int compare(ArcType* a1, ArcType* a2) {\n        if (a1 == a2) {\n            return 0;\n        }\n        NodeType* n1 = a1->start;\n        NodeType* n2 = a2->start;\n        if (n1 != n2) {\n            return compare(n1, n2);\n        }\n        n1 = a1->finish;\n        n2 = a2->finish;\n        if (n1 != n2) {\n            return compare(n1, n2);\n        }\n        return (a1 < a2) ? -1 : +1;\n    }\n\nprivate:\n    void deepCopy(const Graph& src);\n    NodeType* getExistingNode(const std::string& name, const std::string& member = \"\") const;\n    int graphCompare(const Graph& graph2) const;\n    bool isExistingArc(ArcType* arc) const;\n    bool isExistingNode(NodeType* node) const;\n    void verifyExistingNode(NodeType* node, const std::string& member = \"\") const;\n    void verifyNotNull(void* p, const std::string& member = \"\") const;\n    NodeType* scanNode(TokenScanner& scanner);\n};\n\n/*\n * Implementation notes: Graph constructor\n * ---------------------------------------\n * Even though the body of the Graph constructor is empty, important\n * work is done by the initializers, which ensure that the nodes and\n * arcs set are given the correct comparison functions.\n */\n\ntemplate <typename NodeType, typename ArcType>\nGraph<NodeType, ArcType>::Graph() {\n    // empty\n}\n\ntemplate <typename NodeType, typename ArcType>\nGraph<NodeType, ArcType>::Graph(const Graph& src) {\n    deepCopy(src);\n}\n\n/*\n * Implementation notes: Graph destructor\n * --------------------------------------\n * The destructor must free all heap storage used by this graph to\n * represent the nodes and arcs.  The clear method must also reclaim\n * this memory, which means that the destructor can simply call\n * clear to do the work.\n */\ntemplate <typename NodeType, typename ArcType>\nGraph<NodeType, ArcType>::~Graph() {\n    clear();\n}\n\n/*\n * Implementation notes: addArc\n * ----------------------------\n * The addArc method appears in three forms, as described in the\n * interface.  The code for each form of the method, however, is\n * quite straightforward.\n */\ntemplate <typename NodeType, typename ArcType>\nArcType* Graph<NodeType, ArcType>::addArc(const std::string& s1, const std::string& s2) {\n    return addArc(getExistingNode(s1, \"addArc\"), getExistingNode(s2, \"addArc\"));\n}\n\ntemplate <typename NodeType, typename ArcType>\nArcType* Graph<NodeType, ArcType>::addArc(NodeType* n1, NodeType* n2) {\n    verifyExistingNode(n1, \"addArc\");\n    verifyExistingNode(n2, \"addArc\");\n    ArcType* arc = getArc(n1, n2);\n    if (arc) {\n        return arc;\n    } else {\n        arc = new ArcType();\n        arc->start = n1;\n        arc->finish = n2;\n        return addArc(arc);\n    }\n}\n\ntemplate <typename NodeType, typename ArcType>\nArcType* Graph<NodeType, ArcType>::addArc(ArcType* arc) {\n    verifyNotNull(arc, \"addArc\");\n    if (!isExistingNode(arc->start)) {\n        addNode(arc->start);\n    }\n    if (!isExistingNode(arc->finish)) {\n        addNode(arc->finish);\n    }\n    arc->start->arcs.add(arc);\n    _arcs.add(arc);\n    return arc;\n}\n\n/*\n * Implementation notes: addNode\n * -----------------------------\n * The addNode method appears in two forms: one that creates a node\n * from its name and one that assumes that the client has created\n * the new node.  In each case, the implementation must add the node\n * the set of nodes for the graph and add the name-to-node association\n * to the node map.\n */\ntemplate <typename NodeType, typename ArcType>\nNodeType* Graph<NodeType, ArcType>::addNode(const std::string& name) {\n    NodeType* node = getNode(name);\n    if (node) {\n        return node;   // vertex already exists\n    }\n    node = new NodeType();\n    node->arcs = Set<ArcType*>(GraphComparator());\n    node->name = name;\n    return addNode(node);\n}\n\ntemplate <typename NodeType, typename ArcType>\nNodeType* Graph<NodeType, ArcType>::addNode(NodeType* node) {\n    verifyNotNull(node, \"addNode\");\n    NodeType* existingNode = getNode(node->name);\n    if (existingNode) {\n        *existingNode = *node;   // copy state from parameter\n        return existingNode;\n    } else {\n        _nodes.add(node);\n        _nodeMap[node->name] = node;\n        return node;\n    }\n}\n\ntemplate <typename NodeType, typename ArcType>\nint Graph<NodeType, ArcType>::arcCount() const {\n    return getArcSet().size();\n}\n\ntemplate <typename NodeType, typename ArcType>\nNodeType* Graph<NodeType, ArcType>::back() const {\n    if (this->isEmpty()) {\n        error(\"Graph::back: graph is empty\");\n    }\n    return this->_nodes.back();\n}\n\n/*\n * Implementation notes: clear\n * ---------------------------\n * The implementation of clear first frees the nodes and arcs in\n * their respective sets and then uses the Set class clear method\n * to ensure that these sets are empty.\n */\ntemplate <typename NodeType, typename ArcType>\nvoid Graph<NodeType, ArcType>::clear() {\n    for (NodeType* node : _nodes) {\n        delete node;\n    }\n    for (ArcType* arc : _arcs) {\n        delete arc;\n    }\n    _arcs.clear();\n    _nodes.clear();\n    _nodeMap.clear();\n}\n\ntemplate <typename NodeType, typename ArcType>\nvoid Graph<NodeType, ArcType>::clearArcs() {\n    Set<ArcType*> arcsCopy = getArcSet();   // makes a copy\n    for (ArcType* arc : arcsCopy) {\n        removeArc(arc);\n    }\n}\n\ntemplate <typename NodeType, typename ArcType>\nvoid Graph<NodeType, ArcType>::clearArcs(NodeType* node) {\n    if (isExistingNode(node)) {\n        Set<ArcType*> arcsCopy = getArcSet(node);   // makes a copy\n        for (ArcType* arc : arcsCopy) {\n            removeArc(arc);\n        }\n    }\n}\n\ntemplate <typename NodeType, typename ArcType>\nvoid Graph<NodeType, ArcType>::clearArcs(const std::string& name) {\n    Set<ArcType*> arcsCopy = getArcSet(name);   // makes a copy\n    for (ArcType* arc : arcsCopy) {\n        removeArc(arc);\n    }\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::containsArc(NodeType* node1, NodeType* node2) const {\n    return getArc(node1, node2) != nullptr;\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::containsArc(const std::string& node1, const std::string& node2) const {\n    return getArc(node1, node2) != nullptr;\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::containsArc(ArcType* arc) const {\n    if (!arc) {\n        return false;\n    } else {\n        return this->getArcSet().contains(arc);\n    }\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::containsNode(const std::string& name) const {\n    return _nodeMap.containsKey(name);\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::containsNode(NodeType* node) const {\n    if (node) {\n        return _nodes.contains(node);\n    } else {\n        return false;\n    }\n}\n\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::equals(const Graph<NodeType, ArcType>& graph2) const {\n    return *this == graph2;\n}\n\ntemplate <typename NodeType, typename ArcType>\nNodeType* Graph<NodeType, ArcType>::front() const {\n    if (this->isEmpty()) {\n        error(\"Graph::front: graph is empty\");\n    }\n    return this->_nodes.front();\n}\n\ntemplate <typename NodeType, typename ArcType>\nArcType* Graph<NodeType, ArcType>::getArc(NodeType* node1, NodeType* node2) const {\n    if (!containsNode(node1) || !containsNode(node2)) {\n        return nullptr;\n    }\n    for (ArcType* arc : getArcSet(node1)) {\n        if (arc->finish == node2) {\n            return arc;\n        }\n    }\n    return nullptr;\n}\n\ntemplate <typename NodeType, typename ArcType>\nArcType* Graph<NodeType, ArcType>::getArc(const std::string& node1, const std::string& node2) const {\n    return getArc(getNode(node1), getNode(node2));\n}\n\ntemplate <typename NodeType, typename ArcType>\nconst Set<ArcType*>& Graph<NodeType, ArcType>::getArcSet() const {\n    return _arcs;\n}\n\ntemplate <typename NodeType, typename ArcType>\nconst Set<ArcType*>& Graph<NodeType, ArcType>::getArcSet(NodeType* node) const {\n    if (isExistingNode(node)) {\n        return node->arcs;\n    } else {\n        static Set<ArcType*> set;   // empty\n        return set;\n    }\n}\n\ntemplate <typename NodeType, typename ArcType>\nconst Set<ArcType*>& Graph<NodeType, ArcType>::getArcSet(const std::string& name) const {\n    return getArcSet(getNode(name));\n}\n\ntemplate <typename NodeType, typename ArcType>\nNodeType* Graph<NodeType, ArcType>::getExistingNode(const std::string& name, const std::string& member) const {\n    NodeType* node = _nodeMap.get(name);\n    if (!node) {\n        error(\"Graph::\" + member + \": no node named \" + name);\n    }\n    return node;\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::isExistingArc(ArcType* arc) const {\n    return arc && _arcs.contains(arc);\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::isExistingNode(NodeType* node) const {\n    return node && _nodeMap.containsKey(node->name) && _nodeMap.get(node->name) == node;\n}\n\ntemplate <typename NodeType, typename ArcType>\nvoid Graph<NodeType, ArcType>::verifyExistingNode(NodeType* node, const std::string& member) const {\n    verifyNotNull(node, member);\n    if (!isExistingNode(node)) {\n        error(\"Graph::\" + member + \": node not found in graph\");\n    }\n}\n\ntemplate <typename NodeType, typename ArcType>\nvoid Graph<NodeType, ArcType>::verifyNotNull(void* p, const std::string& member) const {\n    if (!p) {\n        error(\"Graph::\" + member + \": parameter cannot be null\");\n    }\n}\n\ntemplate <typename NodeType, typename ArcType>\nconst Set<ArcType*> Graph<NodeType, ArcType>::getInverseArcSet(NodeType* node) const {\n    Set<ArcType*> set;\n    if (isExistingNode(node)) {\n        for (ArcType* arc : getArcSet()) {\n            if (arc->finish == node) {\n                set.add(arc);\n            }\n        }\n    }\n    return set;\n}\n\ntemplate <typename NodeType, typename ArcType>\nconst Set<ArcType*> Graph<NodeType, ArcType>::getInverseArcSet(const std::string& nodeName) const {\n    return getInverseArcSet(getNode(nodeName));\n}\n\ntemplate <typename NodeType, typename ArcType>\nSet<std::string> Graph<NodeType, ArcType>::getInverseNeighborNames(NodeType* node) const {\n    Set<std::string> set;\n    if (isExistingNode(node)) {\n        for (ArcType* arc : getArcSet()) {\n            if (arc->finish == node) {\n                set.add(arc->start->name);\n            }\n        }\n    }\n    return set;\n}\n\ntemplate <typename NodeType, typename ArcType>\nSet<std::string> Graph<NodeType, ArcType>::getInverseNeighborNames(const std::string& name) const {\n    return getInverseNeighborNames(getNode(name));\n}\n\ntemplate <typename NodeType, typename ArcType>\nSet<NodeType*> Graph<NodeType, ArcType>::getInverseNeighbors(NodeType* node) const {\n    Set<NodeType*> set;\n    if (isExistingNode(node)) {\n        for (ArcType* arc : getArcSet()) {\n            if (arc->finish == node) {\n                set.add(arc->start);\n            }\n        }\n    }\n    return set;\n}\n\ntemplate <typename NodeType, typename ArcType>\nSet<NodeType*> Graph<NodeType, ArcType>::getInverseNeighbors(const std::string& nodeName) const {\n    return getInverseNeighbors(getNode(nodeName));\n}\n\ntemplate <typename NodeType, typename ArcType>\nSet<std::string> Graph<NodeType, ArcType>::getNeighborNames(NodeType* node) const {\n    Set<std::string> neighbors;\n    if (isExistingNode(node)) {\n        for (ArcType* arc : node->arcs) {\n            neighbors.add(arc->finish->name);\n        }\n    }\n    return neighbors;\n}\n\ntemplate <typename NodeType, typename ArcType>\nSet<std::string> Graph<NodeType, ArcType>::getNeighborNames(const std::string& name) const {\n    return getNeighborNames(getNode(name));\n}\n\n/*\n * Implementation notes: getNeighbors\n * ----------------------------------\n * This implementation recomputes the set each time, which is reasonably\n * efficient if the degree of the node is small.\n */\ntemplate <typename NodeType, typename ArcType>\nSet<NodeType*> Graph<NodeType, ArcType>::getNeighbors(NodeType* node) const {\n    Set<NodeType*> nodesResult{GraphComparator{}};\n    if (isExistingNode(node)) {\n        for (ArcType* arc : node->arcs) {\n            nodesResult.add(arc->finish);\n        }\n    }\n    return nodesResult;\n}\n\ntemplate <typename NodeType, typename ArcType>\nSet<NodeType*> Graph<NodeType, ArcType>::getNeighbors(const std::string& name) const {\n    return getNeighbors(getNode(name));\n}\n\n/*\n * Implementation notes: getNode, getExistingNode\n * ----------------------------------------------\n * The getNode method simply looks up the name in the map, which correctly\n * returns nullptr if the name is not found.  Other methods in the\n * implementation call the private method getExistingNode instead,\n * which checks for a null value and signals an error.\n */\ntemplate <typename NodeType, typename ArcType>\nNodeType* Graph<NodeType, ArcType>::getNode(const std::string& name) const {\n    return _nodeMap.get(name);\n}\n\ntemplate <typename NodeType, typename ArcType>\nSet<std::string> Graph<NodeType, ArcType>::getNodeNames() const {\n    Set<std::string> nodeNames;\n    for (NodeType* node : _nodes) {\n        nodeNames.add(node->name);\n    }\n    return nodeNames;\n}\n\n/*\n * Implementation notes: getNodeSet, getArcSet\n * -------------------------------------------\n * These methods simply return the set requested by the client.  The\n * sets are returned by reference for efficiency, because doing so\n * eliminates the need to copy the set.\n */\ntemplate <typename NodeType, typename ArcType>\nconst Set<NodeType*>& Graph<NodeType, ArcType>::getNodeSet() const {\n    return _nodes;\n}\n\n/*\n * Implementation notes: isConnected\n * ---------------------------------\n * Node n1 is connected to n2 if any of the arcs leaving n1 finish at n2.\n * The two versions of this method allow nodes to be specified either as\n * node pointers or by name.\n */\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::isConnected(NodeType* n1, NodeType* n2) const {\n    // don't call verifyExistingNode here because it will throw an error\n    // if n1 or n2 is not found; should just make the call return false\n    if (!isExistingNode(n1) || !isExistingNode(n2)) {\n        return false;\n    }\n    for (ArcType* arc : n1->arcs) {\n        if (arc->finish == n2) {\n            return true;\n        }\n    }\n    return false;\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::isConnected(const std::string& s1, const std::string& s2) const {\n    // don't call getExistingNode here because it will throw an error\n    // if s1 or s2 is not found; should just make the call return false\n    return isConnected(_nodeMap.get(s1), _nodeMap.get(s2));\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::isNeighbor(const std::string& node1, const std::string& node2) const {\n    return isConnected(node1, node2);\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::isNeighbor(NodeType* node1, NodeType* node2) const {\n    return isConnected(node1, node2);\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::isEmpty() const {\n    return _nodes.isEmpty();\n}\n\ntemplate <typename NodeType, typename ArcType>\nint Graph<NodeType, ArcType>::nodeCount() const {\n    return getNodeSet().size();\n}\n\n/*\n * Implementation notes: removeArc\n * -------------------------------\n * These methods remove arcs from the graph, which is ordinarily simply\n * a matter of removing the arc from two sets: the set of arcs in the\n * graph as a whole and the set of arcs in the starting node.  The\n * methods that remove an arc specified by its endpoints, however,\n * must take account of the fact that there might be more than one\n * such arc and delete all of them.\n */\ntemplate <typename NodeType, typename ArcType>\nvoid Graph<NodeType, ArcType>::removeArc(const std::string& s1, const std::string& s2) {\n    // don't call getExistingNode here because it will throw an error\n    // if s1 or s2 is not found; should just make the call have no effect\n    removeArc(_nodeMap.get(s1), _nodeMap.get(s2));\n}\n\ntemplate <typename NodeType, typename ArcType>\nvoid Graph<NodeType, ArcType>::removeArc(NodeType* n1, NodeType* n2) {\n    // don't call verifyExistingNode here because it will throw an error\n    // if n1 or n2 is not found; should just make the call have no effect\n    if (!isExistingNode(n1) || !isExistingNode(n2)) {\n        return;\n    }\n    Vector<ArcType*> toRemove;\n    for (ArcType* arc : _arcs) {\n        if (arc->start == n1 && arc->finish == n2) {\n            toRemove.add(arc);\n        }\n    }\n    for (ArcType* arc : toRemove) {\n        removeArc(arc);\n    }\n}\n\ntemplate <typename NodeType, typename ArcType>\nvoid Graph<NodeType, ArcType>::removeArc(ArcType* arc) {\n    if (!isExistingArc(arc)) {\n        return;\n    }\n    arc->start->arcs.remove(arc);\n    _arcs.remove(arc);\n    delete arc;\n}\n\n/*\n * Implementation notes: removeNode\n * --------------------------------\n * The removeNode method must remove the specified node but must\n * also remove any arcs in the graph containing the node.  To avoid\n * changing the node set during iteration, this implementation creates\n * a vector of arcs that require deletion.\n */\ntemplate <typename NodeType, typename ArcType>\nvoid Graph<NodeType, ArcType>::removeNode(const std::string& name) {\n    // don't call getExistingNode here because it will throw an error\n    // if name is not found; should just make the call have no effect\n    removeNode(_nodeMap.get(name));\n}\n\ntemplate <typename NodeType, typename ArcType>\nvoid Graph<NodeType, ArcType>::removeNode(NodeType* node) {\n    // don't call verifyExistingNode here because it will throw an error\n    // if node is not found; should just make the call have no effect\n    if (!isExistingNode(node)) {\n        return;\n    }\n    Vector<ArcType*> toRemove;\n    for (ArcType* arc : _arcs) {\n        if (arc->start == node || arc->finish == node) {\n            toRemove.add(arc);\n        }\n    }\n    for (ArcType* arc : toRemove) {\n        removeArc(arc);\n    }\n    _nodes.remove(node);\n    _nodeMap.remove(node->name);\n    delete node;\n}\n\n/*\n * Implementation notes: scanGraphEntry\n * ------------------------------------\n * The scanGraphEntry and its helper methods take a scanner that is\n * initialized to the input stream and has the options ignoreWhitespace,\n * scanStrings, and scanNumbers set.\n */\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::scanGraphEntry(TokenScanner& scanner) {\n    NodeType* n1 = scanNode(scanner);\n    if (!n1) {\n        return false;\n    }\n    std::string op = scanner.nextToken();\n    if (op != \"-\" && op != \"->\") {\n        scanner.saveToken(op);\n        return true;\n    }\n    NodeType* n2 = scanNode(scanner);\n    if (!n2) {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n        error(\"Graph::scanGraphEntry: Missing node after \" + op);\n#endif\n        return false;\n    }\n    ArcType* forward = new ArcType();\n    forward->start = n1;\n    forward->finish = n2;\n    addArc(forward);\n    ArcType* backward = nullptr;\n    if (op == \"-\") {\n        backward = new ArcType();\n        backward->start = n2;\n        backward->finish = n1;\n        addArc(backward);\n    }\n    scanArcData(scanner, forward, backward);\n    return true;\n}\n\ntemplate <typename NodeType, typename ArcType>\nNodeType* Graph<NodeType, ArcType>::scanNode(TokenScanner& scanner) {\n    std::string token = scanner.nextToken();\n    switch (scanner.getTokenType(token)) {\n    case TokenScanner::WORD:\n        break;\n    case TokenScanner::STRING:\n        token = scanner.getStringValue(token);\n        break;\n    default:\n        scanner.saveToken(token);\n        return nullptr;\n    }\n    NodeType* node = getNode(token);\n    if (!node) {\n        node = new NodeType();\n        node->name = token;\n        scanNodeData(scanner, node);\n        addNode(node);\n    }\n    return node;\n}\n\n/*\n * Implementation notes: size, isEmpty\n * -----------------------------------\n * These methods are defined in terms of the node set, so the implementation\n * simply forwards the request there.  Note that it is impossible for a\n * graph to have arcs if it has no nodes.\n */\ntemplate <typename NodeType, typename ArcType>\nint Graph<NodeType, ArcType>::size() const {\n    return _nodes.size();\n}\n\ntemplate <typename NodeType, typename ArcType>\nstd::string Graph<NodeType, ArcType>::toString() const {\n    std::ostringstream os;\n    os << *this;\n    return os.str();\n}\n\n/*\n * Implementation notes: operator =, copy constructor\n * -------------------------------------------------\n * These methods ensure that copying a graph creates an entirely new\n * parallel structure of nodes and arcs.\n */\ntemplate <typename NodeType, typename ArcType>\nGraph<NodeType,ArcType>&\nGraph<NodeType, ArcType>::operator =(const Graph& src) {\n    if (this != &src) {\n        clear();\n        deepCopy(src);\n    }\n    return *this;\n}\n\n/*\n * Private method: deepCopy\n * ------------------------\n * Common code factored out of the copy constructor and operator= to\n * copy the contents from the other graph.\n */\ntemplate <typename NodeType, typename ArcType>\nvoid Graph<NodeType, ArcType>::deepCopy(const Graph& src) {\n    for (NodeType* oldNode : src._nodes) {\n        NodeType* newNode = new NodeType();\n        *newNode = *oldNode;\n        newNode->arcs.clear();\n        addNode(newNode);\n    }\n    for (ArcType* oldArc : src._arcs) {\n        ArcType* newArc = new ArcType();\n        *newArc = *oldArc;\n        newArc->start = getExistingNode(oldArc->start->name, \"deepCopy\");\n        newArc->finish = getExistingNode(oldArc->finish->name, \"deepCopy\");\n        addArc(newArc);\n    }\n}\n\n\n/**\n * Compares two graphs for <, <=, ==, !=, >, >= relational operators.\n * Vertices are compared, including their neighboring arcs.\n *\n * @private\n */\ntemplate <typename NodeType, typename ArcType>\nint Graph<NodeType, ArcType>::graphCompare(const Graph<NodeType, ArcType>& graph2) const {\n    // optimization: if literally the same graph, return true\n    if (this == &graph2) {\n        return 0;\n    }\n    \n    auto itr1 = begin();\n    auto itr2 = graph2.begin();\n    auto g1end = end();\n    auto g2end = graph2.end();\n    \n    while (itr1 != g1end && itr2 != g2end) {\n        // compare each pair of elements from iterators\n        NodeType* node1 = *itr1;\n        NodeType* node2 = *itr2;\n        \n        // optimization: if literally same node, equal; don't compare\n        if (node1 != node2) {\n            // first check names\n            if (node1->name != node2->name) {\n                return node1->name.compare(node2->name);\n            }\n            \n            // then check all arcs, pairwise\n            auto eitr1 = node1->arcs.begin();\n            auto eitr2 = node2->arcs.begin();\n            auto e1end = node1->arcs.end();\n            auto e2end = node2->arcs.end();\n            while (eitr1 != e1end && eitr2 != e2end) {\n                ArcType* arc1 = *eitr1;\n                ArcType* arc2 = *eitr2;\n                \n                // optimization: if literally same arc, equal; don't compare\n                if (arc1 != arc2) {\n                    // first check start vertex names, then end vertex names\n                    if (arc1->start->name != arc2->start->name) {\n                        return arc1->start->name.compare(arc2->start->name);\n                    } else if (arc1->finish->name != arc2->finish->name) {\n                        return arc1->finish->name.compare(arc2->finish->name);\n                    }\n                }\n                eitr1++;\n                eitr2++;\n            }\n            \n            // if we get here, everything from me matched graph2, so either arcs equal,\n            // or one is shorter than the other (fewer arcs) and is therefore less\n            if (eitr1 == e1end && eitr2 == e2end) {\n                // keep going\n            } else if (eitr1 == e1end) {\n                return -1;\n            } else {\n                return 1;\n            }\n        }\n        \n        // if we get here, those two vertices and their outbound arcs\n        // were equal; so advance to next element\n        itr1++;\n        itr2++;\n    }\n    \n    // if we get here, everything from me matched graph2, so either equal,\n    // or one is shorter than the other (fewer vertices) and is therefore less\n    if (itr1 == g1end && itr2 == g2end) {\n        return 0;\n    } else if (itr1 == g1end) {\n        return -1;\n    } else {\n        return 1;\n    }\n}\n\n/*\n * Operators\n */\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::operator ==(const Graph& graph2) const {\n    // optimization: if sizes not same, graphs not equal\n    if (_nodes.size() != graph2._nodes.size()\n            || _arcs.size() != graph2._arcs.size()\n            || _nodeMap.size() != graph2._nodeMap.size()) {\n        return false;\n    }\n    return graphCompare(graph2) == 0;\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::operator !=(const Graph& graph2) const {\n    return !(*this == graph2);\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::operator <(const Graph& graph2) const {\n    return graphCompare(graph2) < 0;\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::operator <=(const Graph& graph2) const {\n    return graphCompare(graph2) <= 0;\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::operator >(const Graph& graph2) const {\n    return graphCompare(graph2) > 0;\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::operator >=(const Graph& graph2) const {\n    return graphCompare(graph2) >= 0;\n}\n\n/**\n * Writes the given graph to the given output stream.\n * The insertion and extraction operators for graphs are more complicated\n * than for the standard collection types because the nodes and arcs can\n * contain client-specific data.  To ensure that this information is\n * correctly written and read by these operators, clients must override\n * the methods writeNodeData, writeArcData, scanNodeData, and scanArcData.\n */\ntemplate <typename NodeType, typename ArcType>\nstd::ostream& operator <<(std::ostream& os, const Graph<NodeType, ArcType>& g) {\n    os << \"{\";\n    bool started = false;\n    for (NodeType* node : g.getNodeSet()) {\n        if (started) {\n            os << \", \";\n        }\n        writeGenericValue(os, node->name, stringIsInteger(node->name) || stringIsReal(node->name));\n        g.writeNodeData(os, node);\n        started = true;\n    }\n    for (ArcType* arc : g.getArcSet()) {\n        os << \", \";\n        writeGenericValue(os, arc->start->name, stringIsInteger(arc->start->name) || stringIsReal(arc->start->name));\n        os << \" -> \";\n        writeGenericValue(os, arc->finish->name, stringIsInteger(arc->finish->name) || stringIsReal(arc->finish->name));\n        g.writeArcData(os, arc);\n    }\n    return os << \"}\";\n}\n\n/**\n * Reads the given graph from the given input stream.\n * The insertion and extraction operators for graphs are more complicated\n * than for the standard collection types because the nodes and arcs can\n * contain client-specific data.  To ensure that this information is\n * correctly written and read by these operators, clients must override\n * the methods writeNodeData, writeArcData, scanNodeData, and scanArcData.\n */\ntemplate <typename NodeType, typename ArcType>\nstd::istream& operator >>(std::istream& is, Graph<NodeType, ArcType>& g) {\n    TokenScanner scanner(is);\n    scanner.ignoreWhitespace();\n    scanner.scanNumbers();\n    scanner.scanStrings();\n    scanner.addOperator(\"->\");\n    std::string token = scanner.nextToken();\n    if (token != \"{\") {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n        error(\"Graph::operator >>: Missing {\");\n#endif\n        is.setstate(std::ios_base::failbit);\n        return is;\n    }\n    g.clear();\n    while (g.scanGraphEntry(scanner)) {\n        token = scanner.nextToken();\n        if (token == \"}\") {\n            scanner.saveToken(token);\n        } else if (token != \",\") {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n            error(\"Graph::operator >>: Unexpected token \" + token);\n#endif\n            is.setstate(std::ios_base::failbit);\n            return is;\n        }\n    }\n    token = scanner.nextToken();\n    if (token != \"}\") {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n        error(\"Graph::operator >>: Missing }\");\n#endif\n        is.setstate(std::ios_base::failbit);\n        return is;\n    }\n    return is;\n}\n\n/**\n * Template hash function for graphs.\n */\ntemplate <typename NodeType, typename ArcType>\nint hashCode(const Graph<NodeType, ArcType>& graph) {\n    int code = hashSeed();\n    for (NodeType* node : graph) {\n        code = hashMultiplier() * code + hashCode(node->name);\n    }\n    for (ArcType* arc : graph.getArcSet()) {\n        code = hashMultiplier() * code + hashCode(arc->start->name);\n        code = hashMultiplier() * code + hashCode(arc->finish->name);\n    }\n    return (code & hashMask());\n}\n\n#endif // _graph_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/collections/grid.h",
    "content": "/*\n * File: grid.h\n * ------------\n * This file exports the <code>Grid</code> class, which offers a\n * convenient abstraction for representing a two-dimensional array.\n *\n * @version 2019/04/09\n * - renamed private members with underscore naming scheme for consistency\n * @version 2018/03/12\n * - added overloads that accept GridLocation: get, inBounds, locations, set, operator []\n * @version 2018/03/10\n * - added methods front, back, clear\n * @version 2017/11/14\n * - added iterator version checking support\n * @version 2017/10/18\n * - fix compiler warnings\n * @version 2016/12/09\n * - bug fix in resize method (credit to Liu Ren)\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * - made member variables actually private (oops)\n * - added size() method\n * @version 2016/08/10\n * - added constructor support for std initializer_list usage, such as\n *   {{1, 2, 3}, {4, 5, 6}}\n * @version 2016/08/04\n * - fixed operator >> to not throw errors\n * @version 2015/07/05\n * - using global hashing functions rather than global variables\n * @version 2014/11/20\n * - minor bug fixes in member initializers\n * @version 2014/11/13\n * - added comparison operators <, >=, etc.\n * - added template hashCode function\n * @version 2014/10/10\n * - added resize(true) function with ability to retain old contents\n * - made ==, != operators const as they should be\n * - added comparison operators ==, !=\n * 2014/08/16\n * - added width, height functions; added mapAllColumnMajor\n * 2014/07/09\n * - changed checkGridIndexes range checking function into a private member\n *   function to avoid unused-function errors on some newer compilers\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _grid_h\n#define _grid_h\n\n#include <initializer_list>\n#include <iostream>\n#include <string>\n#include <sstream>\n#include <functional>\n\n#define INTERNAL_INCLUDE 1\n#include \"collections.h\"\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gridlocation.h\"\n#define INTERNAL_INCLUDE 1\n#include \"hashcode.h\"\n#define INTERNAL_INCLUDE 1\n#include \"random.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"vector.h\"\n#undef INTERNAL_INCLUDE\n\n/*\n * Class: Grid<ValueType>\n * ----------------------\n * This class stores an indexed, two-dimensional array.  The following code,\n * for example, creates an identity matrix of size <code>n</code>, in which\n * the elements are 1.0 along the main diagonal and 0.0 everywhere else:\n *\n *<pre>\n *    Grid&lt;double&gt; createIdentityMatrix(int n) {\n *       Grid&lt;double&gt; matrix(n, n);\n *       for (int i = 0; i &lt; n; i++) {\n *          matrix[i][i] = 1.0;\n *       }\n *       return matrix;\n *    }\n *</pre>\n */\n\ntemplate <typename ValueType>\nclass Grid {\npublic:\n    /* Forward reference */\n    class GridRow;\n    class GridRowConst;\n\n    /*\n     * Constructor: Grid\n     * Usage: Grid<ValueType> grid;\n     *        Grid<ValueType> grid(nRows, nCols);\n     * ------------------------------------------\n     * Initializes a new grid.  The second form of the constructor is\n     * more common and creates a grid with the specified number of rows\n     * and columns.  Each element of the grid is initialized to the\n     * default value for the type.  The default constructor creates an\n     * empty grid for which the client must call <code>resize</code> to\n     * set the dimensions.\n     * The three-argument constructor also accepts an initial value and\n     * fills every cell of the grid with that value.\n     */\n    Grid() = default;\n    Grid(int _rowCount, int _columnCount);\n    Grid(int _rowCount, int _columnCount, const ValueType& value);\n\n    /*\n     * This constructor uses an initializer list to set up the grid.\n     * Usage: Grid<int> grid {{1, 2, 3}, {4, 5, 6}};\n     */\n    Grid(std::initializer_list<std::initializer_list<ValueType>> list);\n\n    /*\n     * Destructor: ~Grid\n     * -----------------\n     * Frees any heap storage associated with this grid.\n     */\n    virtual ~Grid() = default;\n    \n    /*\n     * Method: back\n     * Usage: ValueType value = grid.back();\n     * -------------------------------------\n     * Returns the last value in the grid in the order established by the\n     * <code>foreach</code> macro.\n     * This is equivalent to grid[numRows - 1][numCols - 1].\n     * If the grid is empty, generates an error.\n     */\n    ValueType back() const;\n\n    /*\n     * Method: clear\n     * Usage: grid.clear();\n     * --------------------\n     * Sets every value in the grid to its element type's default value.\n     */\n    void clear();\n\n    /*\n     * Method: equals\n     * Usage: if (grid.equals(grid2)) ...\n     * ----------------------------------\n     * Returns <code>true</code> if this grid contains exactly the same\n     * values as the given other grid.\n     * Identical in behavior to the == operator.\n     */\n    bool equals(const Grid<ValueType>& grid2) const;\n    \n    /*\n     * Method: fill\n     * Usage: grid.fill(value);\n     * ------------------------\n     * Stores the given value in every cell of this grid.\n     */\n    void fill(const ValueType& value);\n\n    /*\n     * Method: front\n     * Usage: ValueType value = grid.front();\n     * --------------------------------------\n     * Returns the first value in the grid in the order established by the\n     * <code>foreach</code> macro.  This is equivalent to grid[0][0].\n     * If the grid is empty, generates an error.\n     */\n    ValueType front() const;\n\n    /*\n     * Method: get\n     * Usage: ValueType value = grid.get(row, col);\n     * --------------------------------------------\n     * Returns the element at the specified <code>row</code>/<code>col</code>\n     * position in this grid.  This method signals an error if the\n     * <code>row</code> and <code>col</code> arguments are outside\n     * the grid boundaries.\n     */\n    ValueType get(int row, int col);\n    const ValueType& get(int row, int col) const;\n    ValueType get(const GridLocation& loc);\n    const ValueType& get(const GridLocation& loc) const;\n\n    /*\n     * Method: height\n     * Usage: int nRows = grid.height();\n     * ---------------------------------\n     * Returns the grid's height, that is, the number of rows in the grid.\n     */\n    int height() const;\n    \n    /*\n     * Method: inBounds\n     * Usage: if (grid.inBounds(row, col)) ...\n     * ---------------------------------------\n     * Returns <code>true</code> if the specified row and column position\n     * is inside the bounds of the grid.\n     */\n    bool inBounds(int row, int col) const;\n    bool inBounds(const GridLocation& loc) const;\n\n    /*\n     * Method: isEmpty\n     * Usage: if (grid.isEmpty()) ...\n     * ---------------------------------------\n     * Returns <code>true</code> if the grid has 0 rows and/or 0 columns.\n     */\n    bool isEmpty() const;\n\n    /*\n     * Method: locations\n     * Usage: for (GridLocation loc : grid.locations()) ...\n     * ----------------------------------------------------\n     * Returns a range of (row,col) locations found in this grid.\n     * This allows a nice abstraction for looping over the 2D grid range\n     * of indexes using a single for loop.\n     * By default the locations are arranged in row-major order,\n     * but if you pass the rowMajor parameter of false, the locations will be\n     * returned in column-major order instead.\n     */\n    GridLocationRange locations(bool rowMajor = true) const;\n\n    /*\n     * Method: mapAll\n     * Usage: grid.mapAll(fn);\n     * -----------------------\n     * Calls the specified function on each element of the grid.  The\n     * elements are processed in <b><i>row-major order,</i></b> in which\n     * all the elements of row 0 are processed, followed by the elements\n     * in row 1, and so on.\n     */\n    void mapAll(std::function<void (const ValueType &)>) const;\n\n    /*\n     * Method: mapAllColumnMajor\n     * Usage: grid.mapAllColumnMajor(fn);\n     * ----------------------------------\n     * Calls the specified function on each element of the grid.  The\n     * elements are processed in <b><i>column-major order,</i></b> in which\n     * all the elements of column 0 are processed, followed by the elements\n     * in column 1, and so on.\n     */\n    void mapAllColumnMajor(std::function<void (const ValueType &)>) const;\n\n    /*\n     * Method: numCols\n     * Usage: int nCols = grid.numCols();\n     * ----------------------------------\n     * Returns the number of columns in the grid.\n     * This is equal to the grid's width.\n     */\n    int numCols() const;\n\n    /*\n     * Method: numRows\n     * Usage: int nRows = grid.numRows();\n     * ----------------------------------\n     * Returns the number of rows in the grid.\n     * This is equal to the grid's height.\n     */\n    int numRows() const;\n\n    /*\n     * Method: resize\n     * Usage: grid.resize(nRows, nCols);\n     * ---------------------------------\n     * Reinitializes the grid to have the specified number of rows\n     * and columns.  If the 'retain' parameter is true,\n     * the previous grid contents are retained as much as possible.\n     * If 'retain' is not passed or is false, any previous grid contents\n     * are discarded.\n     */\n    void resize(int _rowCount, int _columnCount, bool retain = false);\n\n    /*\n     * Method: set\n     * Usage: grid.set(row, col, value);\n     * ---------------------------------\n     * Replaces the element at the specified <code>row</code>/<code>col</code>\n     * location in this grid with a new value.  This method signals an error\n     * if the <code>row</code> and <code>col</code> arguments are outside\n     * the grid boundaries.\n     */\n    void set(int row, int col, const ValueType& value);\n    void set(const GridLocation& loc, const ValueType& value);\n\n    /*\n     * Method: size\n     * Usage: int size = grid.size();\n     * ------------------------------\n     * Returns the total number of elements in the grid, which is equal to the\n     * number of rows times the number of columns.\n     */\n    int size() const;\n\n    /*\n     * Method: toString\n     * Usage: string str = grid.toString();\n     * ------------------------------------\n     * Converts the grid to a printable string representation.\n     * The string returned is a 1-dimensional representation such as:\n     * \"{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}\"\n     */\n    std::string toString() const;\n\n    /*\n     * Method: toString2D\n     * Usage: string str = grid.toString2D();\n     * --------------------------------------\n     * Converts the grid to a printable string representation.\n     * The string returned is a 2-dimensional representation such as:\n     * \"{{1, 2, 3},\\n\n     *   {4, 5, 6},\\n\n     *   {7, 8, 9}}\"\n     */\n    std::string toString2D(\n            std::string rowStart = \"{\",\n            std::string rowEnd = \"}\",\n            std::string colSeparator = \", \",\n            std::string rowSeparator = \",\\n \") const;\n\n    /*\n     * Method: width\n     * Usage: int nCols = grid.width();\n     * --------------------------------\n     * Returns the grid's width, that is, the number of columns in the grid.\n     */\n    int width() const;\n\n\n    /*\n     * Operator: []\n     * Usage:  grid[row][col]\n     * ----------------------\n     * Overloads <code>[]</code> to select elements from this grid.\n     * This extension enables the use of traditional array notation to\n     * get or set individual elements.  This method signals an error if\n     * the <code>row</code> and <code>col</code> arguments are outside\n     * the grid boundaries.\n     */\n    GridRow operator [](int row);\n    const GridRowConst operator [](int row) const;\n    ValueType& operator [](const GridLocation& loc);\n    const ValueType& operator [](const GridLocation& loc) const;\n\n    /*\n     * Additional Grid operations\n     * --------------------------\n     * In addition to the methods listed in this interface, the Grid\n     * class supports the following operations:\n     *\n     *   - Stream I/O using the << and >> operators\n     *   - Deep copying for the copy constructor and assignment operator\n     *   - Iteration using the range-based for statement and STL iterators\n     *\n     * The iteration forms process the grid in row-major order.\n     */\n    \n    /*\n     * Operator: ==\n     * Usage: if (grid1 == grid2) ...\n     * ------------------------------\n     * Compares two grids for equality.\n     */\n    bool operator ==(const Grid& grid2) const;\n\n    /*\n     * Operator: !=\n     * Usage: if (grid1 != grid2) ...\n     * ------------------------------\n     * Compares two grids for inequality.\n     */\n    bool operator !=(const Grid& grid2) const;\n    \n    /*\n     * Operators: <, >, <=, >=\n     * Usage: if (grid1 < grid2) ...\n     * -----------------------------\n     * Relational operators to compare two grids.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     */\n    bool operator <(const Grid& grid2) const;\n    bool operator <=(const Grid& grid2) const;\n    bool operator >(const Grid& grid2) const;\n    bool operator >=(const Grid& grid2) const;\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\n    /*\n     * Implementation notes: Grid data structure\n     * -----------------------------------------\n     * The Grid is internally managed as a dynamic array of elements.\n     * The array itself is one-dimensional, the logical separation into\n     * rows and columns is done by arithmetic computation.  The layout\n     * is in row-major order, which is to say that the entire first row\n     * is laid out contiguously, followed by the entire second row,\n     * and so on.\n     */\n\nprivate:\n    /* Instance variables */\n    Vector<ValueType> _elements;   // The elements, in row-major order\n    int _rowCount = 0;             // The number of rows in the grid\n    int _columnCount = 0;          // The number of columns in the grid\n\n    /* Private method prototypes */\n\n    /*\n     * Throws an ErrorException if the given row/col are not within the range of\n     * (0,0) through (rowMax-1,colMax-1) inclusive.\n     * This is a consolidated error handler for all various Grid members that\n     * accept index parameters.\n     * The prefix parameter represents a text string to place at the start of\n     * the error message, generally to help indicate which member threw the error.\n     */\n    void checkIndexes(int row, int col,\n                      int rowMax, int colMax,\n                      std::string prefix) const;\n    int gridCompare(const Grid& grid2) const;\n\n    /*\n     * Hidden features\n     * ---------------\n     * The remainder of this file consists of the code required to\n     * support deep copying and iteration.  Including these methods\n     * in the public interface would make that interface more\n     * difficult to understand for the average client.\n     */\n\npublic:\n    using iterator       = typename Vector<ValueType>::iterator;\n    using const_iterator = typename Vector<ValueType>::const_iterator;\n\n    iterator begin() {\n        return _elements.begin();\n    }\n    iterator end() {\n        return _elements.end();\n    }\n\n    const_iterator begin() const {\n        return _elements.begin();\n    }\n    const_iterator end() const {\n        return _elements.end();\n    }\n\n    /*\n     * Private class: Grid<ValType>::GridRow\n     * -------------------------------------\n     * This section of the code defines a nested class within the Grid template\n     * that makes it possible to use traditional subscripting on Grid values.\n     */\n    class GridRow {\n    public:\n        GridRow() : _gp(nullptr), _row(0) {\n            /* Empty */\n        }\n\n        ValueType& operator [](int col) {\n            _gp->checkIndexes(_row, col, _gp->_rowCount-1, _gp->_columnCount-1, \"operator [][]\");\n            return _gp->_elements[(_row * _gp->_columnCount) + col];\n        }\n\n        ValueType operator [](int col) const {\n            _gp->checkIndexes(_row, col, _gp->_rowCount-1, _gp->_columnCount-1, \"operator [][]\");\n            return _gp->_elements[(_row * _gp->_columnCount) + col];\n        }\n\n        int size() const {\n            return _gp->width();\n        }\n\n    private:\n        GridRow(Grid* gridRef, int index) {\n            _gp = gridRef;\n            _row = index;\n        }\n\n        Grid* _gp;\n        int _row;\n        friend class Grid;\n    };\n    friend class GridRow;\n\n    class GridRowConst {\n    public:\n        GridRowConst() : _gp(nullptr), _row(0) {\n            /* Empty */\n        }\n\n        const ValueType operator [](int col) const {\n            _gp->checkIndexes(_row, col, _gp->_rowCount-1, _gp->_columnCount-1, \"operator [][]\");\n            return _gp->_elements[(_row * _gp->_columnCount) + col];\n        }\n\n        int size() const {\n            return _gp->width();\n        }\n\n    private:\n        GridRowConst(Grid* const gridRef, int index) : _gp(gridRef), _row(index) {}\n\n        const Grid* const _gp;\n        const int _row;\n        friend class Grid;\n    };\n    friend class GridRowConst;\n\n    template <typename T>\n    friend int hashCode(const Grid<T>& g);\n};\n\ntemplate <typename ValueType>\nGrid<ValueType>::Grid(int numRows, int numCols) {\n    resize(numRows, numCols);\n}\n\ntemplate <typename ValueType>\nGrid<ValueType>::Grid(int numRows, int numCols, const ValueType& value) {\n    resize(numRows, numCols);\n    fill(value);\n}\n\ntemplate <typename ValueType>\nGrid<ValueType>::Grid(std::initializer_list<std::initializer_list<ValueType>> list) {\n    // create the grid at the proper size\n    _rowCount = list.size();\n    if (list.begin() != list.end()) {\n        _columnCount = list.begin()->size();\n    }\n    resize(_rowCount, _columnCount);\n\n    // copy the data from the initializer list into the Grid\n    auto rowItr = list.begin();\n    for (int row = 0; row < _rowCount; row++) {\n        if (static_cast<int>(rowItr->size()) != _columnCount) {\n            error(\"Grid::constructor: initializer list is not rectangular (must have same # cols in each row)\");\n        }\n        auto colItr = rowItr->begin();\n        for (int col = 0; col < _columnCount; col++) {\n            set(row, col, *colItr);\n            colItr++;\n        }\n        rowItr++;\n    }\n}\n\ntemplate <typename ValueType>\nValueType Grid<ValueType>::back() const {\n    if (isEmpty()) {\n        error(\"Grid::back: grid is empty\");\n    }\n    return get(_rowCount - 1, _columnCount - 1);\n}\n\ntemplate <typename ValueType>\nvoid Grid<ValueType>::clear() {\n    ValueType defaultValue = ValueType();\n    for (int r = 0; r < _rowCount; r++) {\n        for (int c = 0; c < _columnCount; c++) {\n            set(r, c, defaultValue);\n        }\n    }\n}\n\ntemplate <typename ValueType>\nbool Grid<ValueType>::equals(const Grid<ValueType>& grid2) const {\n    // optimization: if literally same grid, stop\n    if (this == &grid2) {\n        return true;\n    }\n    \n    if (_rowCount != grid2._rowCount || _columnCount != grid2._columnCount) {\n        return false;\n    }\n    for (int row = 0; row < _rowCount; row++) {\n        for (int col = 0; col < _columnCount; col++) {\n            if (get(row, col) != grid2.get(row, col)) {\n                return false;\n            }\n        }\n    }\n    return true;\n}\n\ntemplate <typename ValueType>\nvoid Grid<ValueType>::fill(const ValueType& value) {\n    for (int row = 0; row < _rowCount; row++) {\n        for (int col = 0; col < _columnCount; col++) {\n            set(row, col, value);\n        }\n    }\n\n    /* This counts as a semantic update, so we must update the version. */\n    _elements.updateVersion();\n}\n\ntemplate <typename ValueType>\nValueType Grid<ValueType>::front() const {\n    if (isEmpty()) {\n        error(\"Grid::front: grid is empty\");\n    }\n    return get(0, 0);\n}\n\ntemplate <typename ValueType>\nValueType Grid<ValueType>::get(int row, int col) {\n    checkIndexes(row, col, _rowCount-1, _columnCount-1, \"get\");\n    return _elements[(row * _columnCount) + col];\n}\n\ntemplate <typename ValueType>\nconst ValueType& Grid<ValueType>::get(int row, int col) const {\n    checkIndexes(row, col, _rowCount-1, _columnCount-1, \"get\");\n    return _elements[(row * _columnCount) + col];\n}\n\ntemplate <typename ValueType>\nValueType Grid<ValueType>::get(const GridLocation& loc) {\n    return get(loc.row, loc.col);\n}\n\ntemplate <typename ValueType>\nconst ValueType& Grid<ValueType>::get(const GridLocation& loc) const {\n    return get(loc.row, loc.col);\n}\n\ntemplate <typename ValueType>\nint Grid<ValueType>::height() const {\n    return _rowCount;\n}\n\ntemplate <typename ValueType>\nbool Grid<ValueType>::inBounds(int row, int col) const {\n    return row >= 0 && col >= 0 && row < _rowCount && col < _columnCount;\n}\n\ntemplate <typename ValueType>\nbool Grid<ValueType>::inBounds(const GridLocation& loc) const {\n    return inBounds(loc.row, loc.col);\n}\n\ntemplate <typename ValueType>\nbool Grid<ValueType>::isEmpty() const {\n    return _rowCount == 0 || _columnCount == 0;\n}\n\ntemplate <typename ValueType>\nGridLocationRange Grid<ValueType>::locations(bool rowMajor) const {\n    return GridLocationRange(0, 0, numRows() - 1, numCols() - 1, rowMajor);\n}\n\ntemplate <typename ValueType>\nvoid Grid<ValueType>::mapAll(std::function<void (const ValueType &)> fn) const {\n    for (int i = 0; i < _rowCount; i++) {\n        for (int j = 0; j < _columnCount; j++) {\n            fn(get(i, j));\n        }\n    }\n}\n\ntemplate <typename ValueType>\nvoid Grid<ValueType>::mapAllColumnMajor(std::function<void (const ValueType &)> fn) const {\n    for (int j = 0; j < _columnCount; j++) {\n        for (int i = 0; i < _rowCount; i++) {\n            fn(get(i, j));\n        }\n    }\n}\n\ntemplate <typename ValueType>\nint Grid<ValueType>::numCols() const {\n    return _columnCount;\n}\n\ntemplate <typename ValueType>\nint Grid<ValueType>::numRows() const {\n    return _rowCount;\n}\n\ntemplate <typename ValueType>\nvoid Grid<ValueType>::resize(int numRows, int numCols, bool retain) {\n    if (numRows < 0 || numCols < 0) {\n        std::ostringstream out;\n        out << \"Grid::resize: Attempt to resize grid to invalid size (\"\n               << numRows << \", \" << numCols << \")\";\n        error(out.str());\n    }\n\n    // optimization: don't do the resize if we are already that size\n    if (numRows == this->_rowCount && numCols == this->_columnCount && retain) {\n        /* We need to update the version because semantically we've changed the grid,\n         * but we haven't touched our vector.\n         */\n        _elements.updateVersion();\n        return;\n    }\n    \n    // save backup of old array/size\n    Vector<ValueType> oldElements = std::move(_elements);\n    int oldnRows = this->_rowCount;\n    int oldnCols = this->_columnCount;\n    \n    // create new empty array and set new size\n    this->_rowCount = numRows;\n    this->_columnCount = numCols;\n    this->_elements = Vector<ValueType>(numRows * numCols, ValueType());\n    \n    // possibly retain old contents\n    if (retain) {\n        int minRows = oldnRows < numRows ? oldnRows : numRows;\n        int minCols = oldnCols < numCols ? oldnCols : numCols;\n        for (int row = 0; row < minRows; row++) {\n            for (int col = 0; col < minCols; col++) {\n                this->_elements[(row * numCols) + col] = oldElements[(row * oldnCols) + col];\n            }\n        }\n    }\n}\n\ntemplate <typename ValueType>\nvoid Grid<ValueType>::set(int row, int col, const ValueType& value) {\n    checkIndexes(row, col, _rowCount - 1, _columnCount - 1, \"set\");\n    _elements[(row * _columnCount) + col] = value;\n}\n\ntemplate <typename ValueType>\nvoid Grid<ValueType>::set(const GridLocation& loc, const ValueType& value) {\n    set(loc.row, loc.col, value);\n}\n\ntemplate <typename ValueType>\nint Grid<ValueType>::size() const {\n    return _rowCount * _columnCount;\n}\n\ntemplate <typename ValueType>\nstd::string Grid<ValueType>::toString() const {\n    std::ostringstream os;\n    os << *this;\n    return os.str();\n}\n\ntemplate <typename ValueType>\nstd::string Grid<ValueType>::toString2D(\n        std::string rowStart, std::string rowEnd,\n        std::string colSeparator, std::string rowSeparator) const {\n    std::ostringstream os;\n    os << rowStart;\n    int nr = numRows();\n    int nc = numCols();\n    for (int i = 0; i < nr ; i++) {\n        if (i > 0) {\n            os << rowSeparator;\n        }\n        os << rowStart;\n        for (int j = 0; j < nc; j++) {\n            if (j > 0) {\n                os << colSeparator;\n            }\n            writeGenericValue(os, get(i, j), /* forceQuotes */ true);\n        }\n        os << rowEnd;\n    }\n    os << rowEnd;\n    return os.str();\n}\n\ntemplate <typename ValueType>\nint Grid<ValueType>::width() const {\n    return _columnCount;\n}\n\ntemplate <typename ValueType>\ntypename Grid<ValueType>::GridRow Grid<ValueType>::operator [](int row) {\n    return GridRow(this, row);\n}\n\ntemplate <typename ValueType>\nValueType& Grid<ValueType>::operator [](const GridLocation& loc) {\n    checkIndexes(loc.row, loc.col, _rowCount-1, _columnCount-1, \"operator []\");\n    return _elements[(loc.row * _columnCount) + loc.col];\n}\n\ntemplate <typename ValueType>\nconst typename Grid<ValueType>::GridRowConst\nGrid<ValueType>::operator [](int row) const {\n    return GridRowConst(const_cast<Grid*>(this), row);\n}\n\ntemplate <typename ValueType>\nconst ValueType& Grid<ValueType>::operator [](const GridLocation& loc) const {\n    checkIndexes(loc.row, loc.col, _rowCount-1, _columnCount-1, \"operator []\");\n    return _elements[(loc.row * _columnCount) + loc.col];\n}\n\ntemplate <typename ValueType>\nbool Grid<ValueType>::operator ==(const Grid& grid2) const {\n    return equals(grid2);\n}\n\ntemplate <typename ValueType>\nbool Grid<ValueType>::operator !=(const Grid& grid2) const {\n    return !equals(grid2);\n}\n\ntemplate <typename ValueType>\nbool Grid<ValueType>::operator <(const Grid& grid2) const {\n    return gridCompare(grid2) < 0;\n}\n\ntemplate <typename ValueType>\nbool Grid<ValueType>::operator <=(const Grid& grid2) const {\n    return gridCompare(grid2) <= 0;\n}\n\ntemplate <typename ValueType>\nbool Grid<ValueType>::operator >(const Grid& grid2) const {\n    return gridCompare(grid2) > 0;\n}\n\ntemplate <typename ValueType>\nbool Grid<ValueType>::operator >=(const Grid& grid2) const {\n    return gridCompare(grid2) >= 0;\n}\n\ntemplate <typename ValueType>\nvoid Grid<ValueType>::checkIndexes(int row, int col,\n                                   int rowMax, int colMax,\n                                   std::string prefix) const {\n    const int rowMin = 0;\n    const int colMin = 0;\n    if (row < rowMin || row > rowMax || col < colMin || col > colMax) {\n        std::ostringstream out;\n        out << \"Grid::\" << prefix << \": (\" << row << \", \" << col << \")\"\n            << \" is outside of valid range [\";\n        if (rowMin < rowMax && colMin < colMax) {\n            out << \"(\" << rowMin << \", \" << colMin <<  \")..(\"\n                << rowMax << \", \" << colMax << \")\";\n        } else if (rowMin == rowMax && colMin == colMax) {\n            out << \"(\" << rowMin << \", \" << colMin <<  \")\";\n        } // else min > max, no range, empty grid\n        out << \"]\";\n        error(out.str());\n    }\n}\n\ntemplate <typename ValueType>\nint Grid<ValueType>::gridCompare(const Grid& grid2) const {\n    if (_rowCount != grid2._rowCount) return _rowCount - grid2._rowCount;\n    if (_columnCount != grid2._columnCount) return _columnCount - grid2._columnCount;\n    return stanfordcpplib::collections::compare(_elements, grid2._elements);\n}\n\ntemplate <typename ValueType>\nint hashCode(const Grid<ValueType>& g) {\n    return hashCode(g._rowCount, g._columnCount, g._elements);\n}\n\n/*\n * Implementation notes: << and >>\n * -------------------------------\n * The insertion and extraction operators use the template facilities in\n * strlib.h to read and write generic values in a way that treats strings\n * specially.\n */\ntemplate <typename ValueType>\nstd::ostream& operator <<(std::ostream& os, const Grid<ValueType>& grid) {\n    os << \"{\";\n    int nRows = grid.numRows();\n    int nCols = grid.numCols();\n    for (int i = 0; i < nRows; i++) {\n        if (i > 0) {\n            os << \", \";\n        }\n        os << \"{\";\n        for (int j = 0; j < nCols; j++) {\n            if (j > 0) {\n                os << \", \";\n            }\n            writeGenericValue(os, grid.get(i, j), /* forceQuotes */ true);\n        }\n        os << \"}\";\n    }\n    return os << \"}\";\n}\n\ntemplate <typename ValueType>\nstd::istream& operator >>(std::istream& is, Grid<ValueType>& grid) {\n    Vector<Vector<ValueType>> vec2d;\n    if (!(is >> vec2d)) {\n        is.setstate(std::ios_base::failbit);\n        return is;\n    }\n\n    int nRows = vec2d.size();\n    int nCols = (nRows == 0) ? 0 : vec2d[0].size();\n    grid.resize(nRows, nCols);\n    for (int i = 0; i < nRows; i++) {\n        for (int j = 0; j < nCols; j++) {\n            grid[i][j] = vec2d[i][j];\n        }\n    }\n\n    return is;\n}\n\n/*\n * Function: randomElement\n * Usage: element = randomElement(grid);\n * -------------------------------------\n * Returns a randomly chosen element of the given grid.\n * Throws an error if the grid is empty.\n */\ntemplate <typename T>\nconst T& randomElement(const Grid<T>& grid) {\n    if (grid.isEmpty()) {\n        error(\"randomElement: empty grid was passed\");\n    }\n\n    int randomIndex = randomInteger(0, grid.size() - 1);\n    int row = randomIndex / grid.numCols();\n    int col = randomIndex % grid.numCols();\n    return grid.get(row, col);\n}\n\n/*\n * Randomly rearranges the elements of the given grid.\n */\ntemplate <typename T>\nvoid shuffle(Grid<T>& grid) {\n    int rows = grid.numRows();\n    int cols = grid.numCols();\n    int length = rows * cols;\n    for (int i = 0; i < length; i++) {\n        int j = randomInteger(i, length - 1);\n        if (i != j) {\n            int r1 = i / cols;\n            int c1 = i % cols;\n            int r2 = j / cols;\n            int c2 = j % cols;\n            T temp = grid[r1][c1];\n            grid[r1][c1] = grid[r2][c2];\n            grid[r2][c2] = temp;\n        }\n    }\n}\n\n#endif // _grid_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/collections/gridlocation.h",
    "content": "/*\n * File: gridlocation.h\n * --------------------\n * This file exports the <code>GridLocation</code> structure, which is a small\n * structure representing a row and column.\n * The row/column values are allowed to be negative or out of bounds; if an\n * out-of-bounds location is passed to a grid, the grid will throw an error.\n *\n * Several members of the <code>Grid</code> and <code>SparseGrid</code> classes\n * have been retrofitted to accept <code>GridLocation</code>s in place of integers\n * for row/column indexes.\n *\n * This file also declares the <code>GridLocationRange</code> class,\n * which represents a 2D range of grid locations that can be looped over.\n *\n * See gridlocation.cpp for the implementation of each member.\n *\n * @version 2018/03/12\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _gridlocation_h\n#define _gridlocation_h\n\n#include <iostream>\n#include <iterator>\n#include <string>\n\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#undef INTERNAL_INCLUDE\n\nclass GridLocationRange;   // forward declaration\n\nstruct GridLocation {\npublic:\n    /*\n     * Constructs a location representing the given row and column (default 0).\n     * Any indexes are allowed, including negatives and out-of-bounds indexes.\n     */\n    GridLocation(int row = 0, int col = 0);\n\n    /*\n     * Returns a range of locations that are <= the given range away from this one.\n     * For example, if you pass 1, will return the 9 locations in range (r-1, c-1) thru (r+1, c+1).\n     * The rowMajor parameter indicates whether the range will emit its members\n     * in row-major (default) or column-major order.\n     */\n    GridLocationRange neighbors(int range = 1, bool rowMajor = true) const;\n\n    /*\n     * Returns a string representation of this location, such as \"r2c17\".\n     */\n    std::string toString() const;\n\n    /* row and column data - may be directly accessed or modified */\n    int row;\n    int col;\n};\n\n/*\n * Returns an integer hash code for this grid location.\n */\nint hashCode(const GridLocation& loc);\n\n/*\n * Relational operators for comparing grid locations.\n */\nbool operator <(const GridLocation& loc1, const GridLocation& loc2);\nbool operator <=(const GridLocation& loc1, const GridLocation& loc2);\nbool operator ==(const GridLocation& loc1, const GridLocation& loc2);\nbool operator !=(const GridLocation& loc1, const GridLocation& loc2);\nbool operator >(const GridLocation& loc1, const GridLocation& loc2);\nbool operator >=(const GridLocation& loc1, const GridLocation& loc2);\n\n/*\n * I/O stream operators for reading or writing locations in their toString format.\n */\nstd::ostream& operator <<(std::ostream& out, const GridLocation& loc);\nstd::istream& operator >>(std::istream& input, GridLocation& loc);\n\n\n/*\n * Represents a range of grid locations.\n * The actual individual grid locations are not all created and stored in\n * this object; that would require a lot of memory usage.\n * Instead, we primarily use this class for for-each looping over a given range\n * of locations using its internal iterator.\n *\n * Common usage pattern:\n * GridLocationRange range(0, 0, 10, 5);\n * for (GridLocation loc : range) { ... }\n *\n * or, if you have a Grid collection, its locations() method returns a GridLocationRange\n * object that you can loop over directly.\n *\n * for (GridLocation loc : grid.locations()) { ... }\n */\nclass GridLocationRange {\nprivate:\n    /*\n     * Internal iterator over range of indexes.\n     */\n    class GridLocationRangeIterator : public std::iterator<std::input_iterator_tag, GridLocation> {\n    private:\n        const GridLocationRange* glr;\n        GridLocation loc;\n\n    public:\n        GridLocationRangeIterator(const GridLocationRange* glr, bool end)\n                : glr(glr) {\n            if (end) {\n                loc.row = glr->endRow() + 1;\n                loc.col = glr->endCol() + 1;\n            } else {\n                loc = glr->startLocation();\n            }\n        }\n\n        GridLocationRangeIterator(const GridLocationRangeIterator& itr)\n                : glr(itr.glr),\n                  loc(itr.loc) {\n            // empty\n        }\n\n        GridLocationRangeIterator& operator ++() {\n            if (glr->isRowMajor()) {\n                loc.col++;\n                if (loc.col > glr->endCol()) {\n                    loc.col = glr->startCol();\n                    loc.row++;\n                }\n            } else {\n                loc.row++;\n                if (loc.row > glr->endRow()) {\n                    loc.row = glr->startRow();\n                    loc.col++;\n                }\n            }\n            if (!glr->contains(loc)) {\n                loc.row = glr->endRow() + 1;\n                loc.col = glr->endCol() + 1;\n            }\n            return *this;\n        }\n\n        GridLocationRangeIterator operator ++(int) {\n            GridLocationRangeIterator copy(*this);\n            operator++();\n            return copy;\n        }\n\n        GridLocationRangeIterator& operator --() {\n            if (glr->isRowMajor()) {\n                loc.col--;\n                if (loc.col < glr->startCol()) {\n                    loc.col = glr->endCol();\n                    loc.row--;\n                }\n            } else {\n                loc.row--;\n                if (loc.row < glr->startRow()) {\n                    loc.row = glr->endRow();\n                    loc.col--;\n                }\n            }\n            return *this;\n        }\n\n        GridLocationRangeIterator operator --(int) {\n            GridLocationRangeIterator copy(*this);\n            operator--();\n            return copy;\n        }\n\n        bool operator ==(const GridLocationRangeIterator& rhs) const {\n            return loc == rhs.loc;\n        }\n\n        bool operator !=(const GridLocationRangeIterator& rhs) const {\n            return !(*this == rhs);\n        }\n\n        bool operator <(const GridLocationRangeIterator& rhs) const {\n            if (glr != rhs.glr) {\n                error(\"GridLocationRange Iterator::operator <: Iterators are in different ranges\");\n            }\n            return loc < rhs.loc;\n        }\n\n        bool operator <=(const GridLocationRangeIterator& rhs) const {\n            if (glr != rhs.glr) {\n                error(\"GridLocationRange Iterator::operator <=: Iterators are in different ranges\");\n            }\n            return loc <= rhs.loc;\n        }\n\n        bool operator >(const GridLocationRangeIterator& rhs) const {\n            if (glr != rhs.glr) {\n                error(\"GridLocationRange Iterator::operator >: Iterators are in different ranges\");\n            }\n            return loc > rhs.loc;\n        }\n\n        bool operator >=(const GridLocationRangeIterator& rhs) const {\n            if (glr != rhs.glr) {\n                error(\"GridLocationRange Iterator::operator >=: Iterators are in different ranges\");\n            }\n            return loc >= rhs.loc;\n        }\n\n        const GridLocation& operator *() const {\n            return loc;\n        }\n\n        const GridLocation* operator ->() const {\n            return &loc;\n        }\n    };\n\n    GridLocation _start;\n    GridLocation _end;\n    bool _isRowMajor;\n\npublic:\n    /*\n     * Constructs a range over the given start/end locations, inclusive.\n     * The isRowMajor flag indicates whether we will loop over the range in\n     * row-major order (true, default) or column-major order (false).\n     */\n    GridLocationRange(int startRow = 0, int startCol = 0, int endRow = 0, int endCol = 0, bool isRowMajor = true);\n\n    /*\n     * Constructs a range over the given start/end locations, inclusive.\n     * The isRowMajor flag indicates whether we will loop over the range in\n     * row-major order (true, default) or column-major order (false).\n     */\n    GridLocationRange(const GridLocation& startLoc, const GridLocation& endLoc, bool isRowMajor = true);\n\n    /*\n     * Returns an iterator over the range.\n     */\n    GridLocationRangeIterator begin() const;\n\n    /*\n     * Returns true if this range entirely contains the given other range.\n     */\n    bool contains(const GridLocation& loc) const;\n\n    /*\n     * Returns an iterator at the end of the range.\n     */\n    GridLocationRangeIterator end() const;\n\n    /*\n     * Returns the last column in this range, inclusive.\n     */\n    int endCol() const;\n\n    /*\n     * Returns the last row/column location in this range, inclusive.\n     */\n    const GridLocation& endLocation() const;\n\n    /*\n     * Returns the last row in this range, inclusive.\n     */\n    int endRow() const;\n\n    /*\n     * Returns true if this range contains no rows or columns.\n     */\n    bool isEmpty() const;\n\n    /*\n     * Returns true if this range should be traversed in row-major order,\n     * as specified at time of construction (default true).\n     */\n    bool isRowMajor() const;\n\n    /*\n     * Returns the first column in this range.\n     */\n    int startCol() const;\n\n    /*\n     * Returns the first row/column location in this range.\n     */\n    const GridLocation& startLocation() const;\n\n    /*\n     * Returns the first row in this range.\n     */\n    int startRow() const;\n\n    /*\n     * Returns a string representation of this range,\n     * such as \"[r1c3 .. r4c7]\".\n     */\n    std::string toString() const;\n};\n\n/*\n * I/O stream operators for writing location ranges in their toString format.\n */\nstd::ostream& operator <<(std::ostream& out, const GridLocationRange& range);\n\n#endif // _gridlocation_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/collections/hashcode.h",
    "content": "/*\n * File: hashcode.h\n * ----------------\n * This file declares global hashing functions for various common data types.\n * These functions are used by the HashMap and HashSet collections, as well as\n * by other collections that wish to be used as elements within HashMaps/Sets.\n *\n * @version 2017/10/21\n * - added hash codes for short, unsigned integers\n * @version 2017/09/29\n * - added composite hashCode functions (hashCode2, 3, 4, ...)\n * @version 2015/07/05\n * - using global hashing functions rather than global variables\n *   (hashSeed(), hashMultiplier(), and hashMask())\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _hashcode_h\n#define _hashcode_h\n\n#include <string>\n#include <utility>\n\n/*\n * Function: hashCode\n * Usage: int hash = hashCode(key);\n * --------------------------------\n * Returns a hash code for the specified key, which is always a\n * nonnegative integer.  This function is overloaded to support\n * all of the primitive types and the C++ <code>string</code> type.\n */\nint hashCode(bool key);\nint hashCode(char key);\nint hashCode(double key);\nint hashCode(float key);\nint hashCode(long double key);\nint hashCode(int key);\nint hashCode(unsigned int key);\nint hashCode(long key);\nint hashCode(unsigned long key);\nint hashCode(short key);\nint hashCode(unsigned short key);\nint hashCode(const char* str);\nint hashCode(const std::string& str);\nint hashCode(void* key);\n\n/*\n * Constants that are used to help implement these functions\n * (see hashcode.h for example usage)\n */\nint hashSeed();         // Starting point for first cycle\nint hashMultiplier();   // Multiplier for each cycle\nint hashMask();         // All 1 bits except the sign\n\n/*\n * Computes a composite hash code from a list of multiple values.\n * The components are scaled up so as to spread out the range of values\n * and reduce collisions.\n * The type of each value passed must have a suitable hashCode() function.\n */\ntemplate <typename T1, typename T2, typename... Others>\nint hashCode(T1&& first, T2&& second, Others&&... remaining) {\n    int result = hashSeed();\n\n    /* Compute the hash code for the last n - 1 arguments. */\n    result += hashCode(std::forward<T2>(second), std::forward<Others>(remaining)...);\n\n    /* Update the hash to factor in the hash of the first element. */\n    result *= hashMultiplier();\n    result += hashCode(std::forward<T1>(first));\n\n    /* Hash the resulting integer to mask off any unneeded bits. */\n    return hashCode(result);\n}\n\n#endif // _hashcode_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/collections/hashmap.h",
    "content": "/*\n * File: hashmap.h\n * ---------------\n * This file exports the <code>HashMap</code> class, which stores\n * a set of <i>key</i>-<i>value</i> pairs.\n * \n * @version 2019/04/09\n * - renamed private members with underscore naming scheme for consistency\n * @version 2019/02/04\n * - changed internal implementation to wrap std collections\n * @version 2018/03/10\n * - added methods front, back\n * @version 2017/11/30\n * - bug fix for iterator version checking support\n * @version 2017/11/14\n * - added iterator version checking support\n * @version 2016/10/14\n * - modified floating-point equality tests to use floatingPointEqual function\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * @version 2016/08/10\n * - added support for std initializer_list usage, such as\n *   {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}} in constructor, putAll, removeAll, retainAll,\n *   operators +, +=, -, -=, *, *=\n * - added addAll method\n * @version 2016/08/04\n * - fixed operator >> to not throw errors\n * @version 2015/07/05\n * - using global hashing functions rather than global variables\n * - fixed bug where string quotes would not show when map was printed\n * @version 2015/06/19\n * - fixed deepCopy code that was causing copies to have different hash code than\n *   the original they were copied from (credit to SL Wen Zhang for finding the bug)\n * @version 2014/11/13\n * - added add() method as synonym for put()\n * - added template hashCode function\n * - moved hashCode functions to hashcode.h/cpp\n * @version 2014/10/29\n * - moved hashCode functions out to hashcode.h\n * @version 2014/10/10\n * - added comparison operators ==, !=\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _hashmap_h\n#define _hashmap_h\n\n#include <cstdlib>\n#include <initializer_list>\n#include <string>\n#include <utility>\n#include <unordered_map>\n#include <functional>\n\n#define INTERNAL_INCLUDE 1\n#include \"collections.h\"\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"hashcode.h\"\n#define INTERNAL_INCLUDE 1\n#include \"vector.h\"\n#undef INTERNAL_INCLUDE\n\n/*\n * Class: HashMap<KeyType,ValueType>\n * ---------------------------------\n * This class implements an efficient association between\n * <b><i>keys</i></b> and <b><i>values</i></b>.  This class is\n * identical to the <a href=\"Map-class.html\"><code>Map</code></a> class\n * except for the fact that it uses a hash table as its underlying\n * representation.  Although the <code>HashMap</code> class operates in\n * constant time, the iterator for <code>HashMap</code> returns the\n * values in a seemingly random order.\n */\ntemplate <typename KeyType, typename ValueType>\nclass HashMap {\npublic:\n    /*\n     * Constructor: HashMap\n     * Usage: HashMap<KeyType,ValueType> map;\n     * --------------------------------------\n     * Initializes a new empty map that associates keys and values of\n     * the specified types.  The type used for the key must define\n     * the <code>==</code> operator, and there must be a free function\n     * with the following signature:\n     *\n     *<pre>\n     *    int hashCode(KeyType key);\n     *</pre>\n     *\n     * that returns a positive integer determined by the key.  This interface\n     * exports <code>hashCode</code> functions for <code>string</code> and\n     * the C++ primitive types.\n     */\n    HashMap() = default;\n\n    /*\n     * Constructor: HashMap\n     * Usage: HashMap<ValueType> map {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}};\n     * -------------------------------------------------------------\n     * Initializes a new map that stores the given pairs.\n     * Note that the pairs are stored in unpredictable order internally and not\n     * necessarily the order in which they are written in the initializer list.\n     */\n    HashMap(std::initializer_list<std::pair<const KeyType, ValueType>> list);\n\n    /*\n     * Destructor: ~HashMap\n     * --------------------\n     * Frees any heap storage associated with this map.\n     */\n    virtual ~HashMap() = default;\n\n    /*\n     * Method: add\n     * Usage: map.add(key, value);\n     * ---------------------------\n     * Associates <code>key</code> with <code>value</code> in this map.\n     * A synonym for the put method.\n     */\n    void add(const KeyType& key, const ValueType& value);\n\n    /*\n     * Method: addAll\n     * Usage: map.addAll(map2);\n     * ------------------------\n     * Adds all key/value pairs from the given map to this map.\n     * If both maps contain a pair for the same key, the one from map2 will\n     * replace the one from this map.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     * Returns a reference to this map.\n     * Identical in behavior to putAll.\n     */\n    HashMap& addAll(const HashMap& map2);\n\n    /*\n     * Method: back\n     * Usage: KeyType value = map.back();\n     * ----------------------------------\n     * Returns the last key in the map in the order established by the\n     * <code>foreach</code> macro.\n     * Note that since the keys are stored in an unpredictable order,\n     * this is not necessarily equal to the \"largest\" key value in any particular\n     * sorting order; it is just the key that would happen to be emitted last\n     * from a for-each loop.\n     * If the map is empty, generates an error.\n     */\n    KeyType back() const;\n\n    /*\n     * Method: clear\n     * Usage: map.clear();\n     * -------------------\n     * Removes all entries from this map.\n     */\n    void clear();\n\n    /*\n     * Method: containsKey\n     * Usage: if (map.containsKey(key)) ...\n     * ------------------------------------\n     * Returns <code>true</code> if there is an entry for <code>key</code>\n     * in this map.\n     */\n    bool containsKey(const KeyType& key) const;\n\n    /*\n     * Method: equals\n     * Usage: if (map.equals(map2)) ...\n     * --------------------------------\n     * Returns <code>true</code> if the two maps contain exactly the same\n     * key/value pairs, and <code>false</code> otherwise.\n     */\n    bool equals(const HashMap& map2) const;\n\n    /*\n     * Method: front\n     * Usage: KeyType value = map.front();\n     * -----------------------------------\n     * Returns the first key in the map in the order established by the\n     * <code>foreach</code> macro.\n     * Note that since the keys are stored in an unpredictable order,\n     * this is not necessarily equal to the \"smallest\" key value in any particular\n     * sorting order; it is just the key that would happen to be emitted first\n     * from a for-each loop.\n     * If the map is empty, generates an error.\n     */\n    KeyType front() const;\n\n    /*\n     * Method: get\n     * Usage: ValueType value = map.get(key);\n     * --------------------------------------\n     * Returns the value associated with <code>key</code> in this map.\n     * If <code>key</code> is not found, <code>get</code> returns the\n     * default value for <code>ValueType</code>.\n     */\n    ValueType get(const KeyType& key) const;\n\n    /*\n     * Method: isEmpty\n     * Usage: if (map.isEmpty()) ...\n     * -----------------------------\n     * Returns <code>true</code> if this map contains no entries.\n     */\n    bool isEmpty() const;\n    \n    /*\n     * Method: keys\n     * Usage: Vector<KeyType> keys = map.keys();\n     * -----------------------------------------\n     * Returns a collection containing all keys in this map.\n     * Note that this implementation makes a deep copy of the keys,\n     * so it is inefficient to call on large maps.\n     */\n    Vector<KeyType> keys() const;\n\n    /*\n     * Method: mapAll\n     * Usage: map.mapAll(fn);\n     * ----------------------\n     * Iterates through the map entries and calls <code>fn(key, value)</code>\n     * for each one.  The keys are processed in an undetermined order.\n     */\n    void mapAll(std::function<void(const KeyType&, const ValueType&)> fn) const;\n\n    /*\n     * Method: put\n     * Usage: map.put(key, value);\n     * ---------------------------\n     * Associates <code>key</code> with <code>value</code> in this map.\n     * Any previous value associated with <code>key</code> is replaced\n     * by the new value.\n     */\n    void put(const KeyType& key, const ValueType& value);\n\n    /*\n     * Method: putAll\n     * Usage: map.putAll(map2);\n     * ---------------------------\n     * Adds all key/value pairs from the given map to this map.\n     * If both maps contain a pair for the same key, the one from map2 will\n     * replace the one from this map.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     * Returns a reference to this map.\n     */\n    HashMap& putAll(const HashMap& map2);\n\n    /*\n     * Method: remove\n     * Usage: map.remove(key);\n     * -----------------------\n     * Removes any entry for <code>key</code> from this map.\n     * If the given key is not found, has no effect.\n     */\n    void remove(const KeyType& key);\n\n    /*\n     * Method: removeAll\n     * Usage: map.removeAll(map2);\n     * ---------------------------\n     * Removes all key/value pairs from this map that are contained in the given map.\n     * If both maps contain the same key but it maps to different values, that\n     * mapping will not be removed.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     * Returns a reference to this map.\n     */\n    HashMap& removeAll(const HashMap& map2);\n\n    /*\n     * Method: retainAll\n     * Usage: map.retainAll(map2);\n     * ---------------------------\n     * Removes all key/value pairs from this map that are not contained in the given map.\n     * If both maps contain the same key but it maps to different values, that\n     * mapping will be removed.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     * Returns a reference to this map.\n     */\n    HashMap& retainAll(const HashMap& map2);\n\n    /*\n     * Method: size\n     * Usage: int nEntries = map.size();\n     * ---------------------------------\n     * Returns the number of entries in this map.\n     */\n    int size() const;\n\n    /*\n     * Method: toString\n     * Usage: string str = map.toString();\n     * -----------------------------------\n     * Converts the map to a printable string representation.\n     */\n    std::string toString() const;\n\n    /*\n     * Method: values\n     * Usage: Vector<ValueType> values = map.values();\n     * -----------------------------------------------\n     * Returns a collection containing all values in this map.\n     * Note that this implementation makes a deep copy of the values,\n     * so it is inefficient to call on large maps.\n     */\n    Vector<ValueType> values() const;\n\n    /*\n     * Operator: []\n     * Usage: map[key]\n     * ---------------\n     * Selects the value associated with <code>key</code>.  This syntax\n     * makes it easy to think of a map as an \"associative array\"\n     * indexed by the key type.  If <code>key</code> is already present\n     * in the map, this function returns a reference to its associated\n     * value.  If key is not present in the map, a new entry is created\n     * whose value is set to the default for the value type.\n     */\n    ValueType& operator [](const KeyType& key);\n    ValueType operator [](const KeyType& key) const;\n\n    /*\n     * Operator: +\n     * Usage: map1 + map2\n     * ------------------\n     * Returns the union of the two maps, equivalent to a copy of the first map\n     * with addAll called on it passing the second map as a parameter.\n     * If the two maps both contain a mapping for the same key, the mapping\n     * from the second map is favored.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     */\n    HashMap operator +(const HashMap& map2) const;\n\n    /*\n     * Operator: +=\n     * Usage: map1 += map2;\n     * --------------------\n     * Adds all key/value pairs from the given map to this map.\n     * Equivalent to calling addAll(map2).\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     */\n    HashMap& operator +=(const HashMap& map2);\n\n    /*\n     * Operator: -\n     * Usage: map1 - map2\n     * ------------------\n     * Returns the difference of the two maps, equivalent to a copy of the first map\n     * with removeAll called on it passing the second map as a parameter.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     */\n    HashMap operator -(const HashMap& map2) const;\n\n    /*\n     * Operator: -=\n     * Usage: map1 -= map2;\n     * --------------------\n     * Removes all key/value pairs from the given map to this map.\n     * Equivalent to calling removeAll(map2).\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     */\n    HashMap& operator -=(const HashMap& map2);\n\n    /*\n     * Operator: *\n     * Usage: map1 * map2\n     * ------------------\n     * Returns the intersection of the two maps, equivalent to a copy of the first map\n     * with retainAll called on it passing the second map as a parameter.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     */\n    HashMap operator *(const HashMap& map2) const;\n\n    /*\n     * Operator: *=\n     * Usage: map1 *= map2;\n     * ---------------------\n     * Removes all key/value pairs that are not found in the given map from this map.\n     * Equivalent to calling retainAll(map2).\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     */\n    HashMap& operator *=(const HashMap& map2);\n\n    /*\n     * Additional HashMap operations\n     * -----------------------------\n     * In addition to the methods listed in this interface, the HashMap\n     * class supports the following operations:\n     *\n     *   - Stream I/O using the << and >> operators\n     *   - Deep copying for the copy constructor and assignment operator\n     *   - Iteration using the range-based for statement and STL iterators\n     *\n     * The HashMap class makes no guarantees about the order of iteration.\n     */\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\nprivate:\n    static_assert(stanfordcpplib::collections::IsHashable<KeyType>::value,\n                  \"Oops! You tried using a type as a key in our HashMap without making it hashable. Click this error for more details.\");\n    /*\n     * Hello CS106 students! If you got directed to this line of code in a compiler error,\n     * it probably means that you tried making a HashMap with a custom struct or class type\n     * as the key type or a HashSet with a custom struct as a value type. (The same also\n     * applies for LinkedHashMap and LinkedHashSet.)\n     *\n     * In order to have a type be a key type in a HashMap - or to have a type be a value type\n     * in a HashSet - it needs to have a hashCode function defined and be capable of being\n     * compared using the == operator. If you were directed here, one of those two conditions\n     * wasn't met.\n     *\n     * There are two ways to fix this. The first option would simply be to not use your custom\n     * type as a key in the HashMap or value in a HashSet. This is probably the easiest option.\n     *\n     * The second way to fix this is to explicitly define a hashCode() and operator== function\n     * for your type. To do so, first define hashCode as follows:\n     *\n     *     int hashCode(const YourCustomType& obj) {\n     *         return hashCode(obj.data1, obj.data2, ..., obj.dataN);\n     *     }\n     *\n     * where data1, data2, ... dataN are the data members of your type. For example, if you had\n     * a custom type\n     *\n     *     struct MyType {\n     *         int myInt;\n     *         string myString;\n     *     };\n     *\n     * you would define the function\n     *\n     *     int hashCode(const MyType& obj) {\n     *         return hashCode(obj.myInt, obj.myString);\n     *     }\n     *\n     * Second, define operator== as follows:\n     *\n     *     bool operator== (const YourCustomType& lhs, const YourCustomType& rhs) {\n     *         return lhs.data1 == rhs.data1 &&\n     *                lhs.data2 == rhs.data2 &&\n     *                         ...\n     *                lhs.dataN == rhs.dataN;\n     *     }\n     *\n     * Using the MyType example from above, we'd write\n     *\n     *     bool operator== (const MyType& lhs, const MyType& rhs) {\n     *         return lhs.myInt == rhs.myInt && lhs.myString == rhs.myString;\n     *     }\n     *\n     * Hope this helps!\n     */\n\n    struct Hasher {\n        std::size_t operator()(const KeyType& key) const {\n            return hashCode(key);\n        }\n    };\n\n    std::unordered_map<KeyType, ValueType, Hasher> _elements;\n    stanfordcpplib::collections::VersionTracker _version;\n\n    /* Private methods */\n\npublic:\n    /*\n     * Hidden features\n     * ---------------\n     * The remainder of this file consists of the code required to\n     * support deep copying and iteration.  Including these methods\n     * in the public interface would make that interface more\n     * difficult to understand for the average client.\n     */\n\n    /*\n     * Iterator support\n     */\n\n    using const_iterator = stanfordcpplib::collections::ProjectingIterator<stanfordcpplib::collections::CheckedIterator<typename std::unordered_map<KeyType, ValueType, Hasher>::const_iterator>>;\n    using iterator = const_iterator;\n\n    iterator begin() const;\n    iterator end() const;\n\n    /*\n     * Hashing support.\n     */\n    bool operator== (const HashMap& rhs) const;\n    bool operator!= (const HashMap& rhs) const;\n\n    template <typename K, typename V>\n    friend int hashCode(const HashMap<K, V>& map);\n};\n\ntemplate <typename KeyType, typename ValueType>\nHashMap<KeyType, ValueType>::HashMap(std::initializer_list<std::pair<const KeyType, ValueType>> list)\n        : _elements(list) {\n}\n\ntemplate <typename KeyType, typename ValueType>\nvoid HashMap<KeyType, ValueType>::add(const KeyType& key, const ValueType& value) {\n    put(key, value);\n}\n\ntemplate <typename KeyType, typename ValueType>\nHashMap<KeyType, ValueType>& HashMap<KeyType, ValueType>::addAll(const HashMap& map2) {\n    return putAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nKeyType HashMap<KeyType, ValueType>::back() const {\n    if (isEmpty()) {\n        error(\"HashMap::back: map is empty\");\n    }\n\n    return std::next(_elements.begin(), _elements.size() - 1)->first;\n}\n\ntemplate <typename KeyType, typename ValueType>\nvoid HashMap<KeyType, ValueType>::clear() {\n    _elements.clear();\n    _version.update();\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool HashMap<KeyType, ValueType>::containsKey(const KeyType& key) const {\n    return !!_elements.count(key);\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool HashMap<KeyType, ValueType>::equals(const HashMap<KeyType, ValueType>& map2) const {\n    return stanfordcpplib::collections::equalsMap(*this, map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nKeyType HashMap<KeyType, ValueType>::front() const {\n    if (isEmpty()) {\n        error(\"HashMap::front: map is empty\");\n    }\n    return *begin();\n}\n\ntemplate <typename KeyType, typename ValueType>\nValueType HashMap<KeyType, ValueType>::get(const KeyType& key) const {\n    auto itr = _elements.find(key);\n    return itr == _elements.end()? ValueType() : itr->second;\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool HashMap<KeyType, ValueType>::isEmpty() const {\n    return _elements.empty();\n}\n\ntemplate <typename KeyType, typename ValueType>\nVector<KeyType> HashMap<KeyType, ValueType>::keys() const {\n    Vector<KeyType> keyset;\n    for (const auto& entry: _elements) {\n        keyset.add(entry.first);\n    }\n    return keyset;\n}\n\ntemplate <typename KeyType, typename ValueType>\nvoid HashMap<KeyType, ValueType>::mapAll(std::function<void (const KeyType&, const ValueType&)> fn) const {\n    for (const auto& entry: _elements) {\n        fn(entry.first, entry.second);\n    }\n}\n\ntemplate <typename KeyType, typename ValueType>\nvoid HashMap<KeyType, ValueType>::put(const KeyType& key, const ValueType& value) {\n    int presize = size();\n    _elements[key] = value;\n\n    if (presize != size()) _version.update();\n}\n\ntemplate <typename KeyType, typename ValueType>\nHashMap<KeyType, ValueType>& HashMap<KeyType, ValueType>::putAll(const HashMap& map2) {\n    for (const KeyType& key : map2) {\n        put(key, map2.get(key));\n    }\n    return *this;\n}\n\ntemplate <typename KeyType, typename ValueType>\nvoid HashMap<KeyType, ValueType>::remove(const KeyType& key) {\n    auto itr = _elements.find(key);\n    if (itr != _elements.end()) {\n        _elements.erase(itr);\n        _version.update();\n    }\n}\n\ntemplate <typename KeyType, typename ValueType>\nHashMap<KeyType, ValueType>& HashMap<KeyType, ValueType>::removeAll(const HashMap& map2) {\n    for (const KeyType& key : map2) {\n        if (containsKey(key) && get(key) == map2.get(key)) {\n            remove(key);\n        }\n    }\n    return *this;\n}\n\ntemplate <typename KeyType, typename ValueType>\nHashMap<KeyType, ValueType>& HashMap<KeyType, ValueType>::retainAll(const HashMap& map2) {\n    Vector<KeyType> toRemove;\n    for (const KeyType& key : *this) {\n        if (!map2.containsKey(key) || get(key) != map2.get(key)) {\n            toRemove.add(key);\n        }\n    }\n    for (const KeyType& key : toRemove) {\n        remove(key);\n    }\n    return *this;\n}\n\ntemplate <typename KeyType, typename ValueType>\nint HashMap<KeyType, ValueType>::size() const {\n    return _elements.size();\n}\n\ntemplate <typename KeyType, typename ValueType>\nstd::string HashMap<KeyType, ValueType>::toString() const {\n    std::ostringstream os;\n    os << *this;\n    return os.str();\n}\n\ntemplate <typename KeyType, typename ValueType>\nVector<ValueType> HashMap<KeyType, ValueType>::values() const {\n    Vector<ValueType> values;\n    for (const auto& entry: _elements) {\n        values.add(entry.second);\n    }\n    return values;\n}\n\ntemplate <typename KeyType, typename ValueType>\nValueType& HashMap<KeyType, ValueType>::operator [](const KeyType& key) {\n    int presize = size();\n    ValueType& result = _elements[key];\n\n    if (presize != size()) _version.update();\n    return result;\n}\n\ntemplate <typename KeyType, typename ValueType>\nValueType HashMap<KeyType, ValueType>::operator [](const KeyType& key) const {\n    return get(key);\n}\n\ntemplate <typename KeyType, typename ValueType>\nHashMap<KeyType, ValueType> HashMap<KeyType, ValueType>::operator +(const HashMap& map2) const {\n    HashMap<KeyType, ValueType> result = *this;\n    return result.putAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nHashMap<KeyType, ValueType>& HashMap<KeyType, ValueType>::operator +=(const HashMap& map2) {\n    return putAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nHashMap<KeyType, ValueType> HashMap<KeyType, ValueType>::operator -(const HashMap& map2) const {\n    HashMap<KeyType, ValueType> result = *this;\n    return result.removeAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nHashMap<KeyType, ValueType>& HashMap<KeyType, ValueType>::operator -=(const HashMap& map2) {\n    return removeAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nHashMap<KeyType, ValueType> HashMap<KeyType, ValueType>::operator *(const HashMap& map2) const {\n    HashMap<KeyType, ValueType> result = *this;\n    return result.retainAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nHashMap<KeyType, ValueType>& HashMap<KeyType, ValueType>::operator *=(const HashMap& map2) {\n    return retainAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\ntypename HashMap<KeyType, ValueType>::iterator HashMap<KeyType, ValueType>::begin() const {\n    return iterator({ &_version, _elements.begin(), _elements });\n}\n\ntemplate <typename KeyType, typename ValueType>\ntypename HashMap<KeyType, ValueType>::iterator HashMap<KeyType, ValueType>::end() const {\n    return iterator({ &_version, _elements.end(), _elements });\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool HashMap<KeyType, ValueType>::operator == (const HashMap<KeyType, ValueType>& rhs) const {\n    return stanfordcpplib::collections::equalsMap(*this, rhs);\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool HashMap<KeyType, ValueType>::operator != (const HashMap<KeyType, ValueType>& rhs) const {\n    return !(*this == rhs);\n}\n\ntemplate <typename KeyType, typename ValueType>\nint hashCode(const HashMap<KeyType, ValueType>& map) {\n    return stanfordcpplib::collections::hashCodeMap(map, false);\n}\n\n/*\n * Implementation notes: << and >>\n * -------------------------------\n * The insertion and extraction operators use the template facilities in\n * strlib.h to read and write generic values in a way that treats strings\n * specially.\n */\ntemplate <typename KeyType, typename ValueType>\nstd::ostream& operator <<(std::ostream& os,\n                          const HashMap<KeyType, ValueType>& map) {\n    return stanfordcpplib::collections::writeMap(os, map);\n}\n\ntemplate <typename KeyType, typename ValueType>\nstd::istream& operator >>(std::istream& is,\n                          HashMap<KeyType, ValueType>& map) {\n    KeyType key;\n    ValueType value;\n    return stanfordcpplib::collections::readMap(is, map, key, value, /* descriptor */ std::string(\"HashMap::operator >>\"));\n}\n\n/*\n * Function: randomKey\n * Usage: element = randomKey(map);\n * --------------------------------\n * Returns a randomly chosen key of the given map.\n * Throws an error if the map is empty.\n */\ntemplate <typename K, typename V>\nconst K& randomKey(const HashMap<K, V>& map) {\n    return stanfordcpplib::collections::randomElement(map);\n}\n\n#endif // _hashmap_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/collections/hashset.h",
    "content": "/*\n * File: hashset.h\n * ---------------\n * This file exports the <code>HashSet</code> class, which\n * implements an efficient abstraction for storing sets of values.\n * \n * @version 2019/02/04\n * - changed internal implementation to wrap std collections\n * @version 2018/03/10\n * - added methods front, back\n * @version 2016/12/09\n * - added iterator version checking support (implicitly via HashMap)\n * @version 2016/12/06\n * - slight speedup bug fix in equals() method\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * @version 2016/08/11\n * - added containsAll, isSupersetOf methods\n * @version 2016/08/10\n * - added support for std initializer_list usage, such as {1, 2, 3}\n *   in constructor, addAll, containsAll, isSubsetOf, isSupersetOf, removeAll,\n *   retainAll, and operators +, +=, -, -=, *, *=\n * - bug fix in hashCode function\n * @version 2016/08/04\n * - fixed operator >> to not throw errors\n * @version 2015/07/05\n * - using global hashing functions rather than global variables\n * @version 2014/11/13\n * - added template hashCode function\n * @version 2014/10/10\n * - removed foreach patch\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _hashset_h\n#define _hashset_h\n\n#include <initializer_list>\n#include <iostream>\n\n#define INTERNAL_INCLUDE 1\n#include \"collections.h\"\n#define INTERNAL_INCLUDE 1\n#include \"hashmap.h\"\n#undef INTERNAL_INCLUDE\n\n/* Traits type for the HashSet, which wraps an underlying HashMap. */\nnamespace stanfordcpplib {\n    namespace collections {\n        template <typename T> struct HashSetTraits {\n            using ValueType = T;\n            using MapType   = HashMap<T, bool>;\n            static std::string name() {\n                return \"HashSet\";\n            }\n            /* You can default-construct a LinkedHashSet. */\n            static MapType construct() {\n                return {};\n            }\n\n            /* However, you can't pass in any other arguments. */\n            template <typename... Args>\n            static void construct(Args&&...) {\n                static_assert(Fail<Args...>::value, \"Oops! Seems like you tried to initialize a LinkedHashSet incorrectly. Click here for details.\");\n\n                /*\n                 * Hello student! If you are reading this message, it means that you tried to\n                 * initialize a HashSet improperly. For example, you might have tried to\n                 * write something like this:\n                 *\n                 *     HashSet<int> mySet = 137; // Oops!\n                 *\n                 * Here, for example, you're trying to assign an int to a LinkedHashSet<int>.\n                 *\n                 * or perhaps you had a function like this one:\n                 *\n                 *     void myFunction(LinkedHashSet<int>& mySet);\n                 *\n                 * and you called it by writing\n                 *\n                 *     myFunction(someSet + someOtherSet); // Oops!\n                 *     myFunction({ });                    // Oops!\n                 *\n                 * In these cases, you're trying to pass a value into a function that takes\n                 * its argument by (non-const) reference. C++ doesn't allow you to do this.\n                 *\n                 * To see where the actual error comes from, look in the list of error messages\n                 * in Qt Creator. You should see a line that says \"required from here\" that\n                 * points somewhere in your code. That's the actual line you wrote that caused\n                 * the problem, so double-click on that error message and see where it takes\n                 * you. Now you know where to look!\n                 *\n                 * Hope this helps!\n                 */\n                error(\"static_assert succeeded?\");\n            }\n        };\n    }\n}\n\n/*\n * A set of elements stored in no particular order. Elements can only be stored here\n * if they support a function\n *\n *     int hashCode(ValueType);\n *\n * that returns a nonnegative integer, along with equality comparison using ==.\n */\ntemplate <typename ValueType>\n    using HashSet = stanfordcpplib::collections::GenericSet<stanfordcpplib::collections::HashSetTraits<ValueType>>;\n\n#endif // _hashset_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/collections/lexicon.h",
    "content": "/*\n * File: lexicon.h\n * ---------------\n * This file exports the <code>Lexicon</code> class, which is a\n * compact structure for storing a list of words.\n *\n * @version 2019/04/09\n * - renamed private members with underscore naming scheme for consistency\n * @author Marty Stepp\n * @version 2018/03/10\n * - added methods front, back\n * @version 2016/12/09\n * - added iterator version checking support (implicitly via Set)\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * @version 2016/08/12\n * - added methods addAll, containsAll, removeAll, retainAll,\n *   operators +, +=, -, -=, *, *= to better match Set/HashSet\n * @version 2016/08/10\n * - added constructor support for std initializer_list usage, such as {\"a\", \"b\", \"c\"}\n * @version 2014/11/13\n * - added comparison operators <, >= etc.\n * - added hashCode function\n * @version 2014/10/10\n * - added equals method, comparison operators ==, !=\n * - fixed inclusion of foreach macro to avoid errors\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _lexicon_h\n#define _lexicon_h\n\n#include <initializer_list>\n#include <iterator>\n#include <set>\n#include <string>\n\n#define INTERNAL_INCLUDE 1\n#include \"hashcode.h\"\n#define INTERNAL_INCLUDE 1\n#include \"set.h\"\n#undef INTERNAL_INCLUDE\n\n/**\n * This class is used to represent a <b><i>lexicon,</i></b> or word list.\n * The main difference between a lexicon and a dictionary is that\n * a lexicon does not provide any mechanism for storing definitions;\n * the lexicon contains only words, with no associated information.\n * It is therefore similar to a set of strings, but with a more\n * space-efficient internal representation.  The <code>Lexicon</code>\n * class supports efficient lookup operations for words and prefixes.\n *\n * <p>As an example of the use of the <code>Lexicon</code> class, the\n * following program lists all the two-letter words in the lexicon\n * stored in <code>EnglishWords.dat</code>:\n *\n *<pre>\n *    int main() {\n *       Lexicon english(\"EnglishWords.dat\");\n *       for (string word : english) {\n *          if (word.length() == 2) {\n *             cout << word << endl;\n *          }\n *       }\n *       return 0;\n *    }\n *</pre>\n */\n\nclass Lexicon {\npublic:\n    /*\n     * Constructor: Lexicon\n     * Usage: Lexicon lex;\n     *        Lexicon lex(filename);\n     * -----------------------------\n     * Initializes a new lexicon.  The default constructor creates an empty\n     * lexicon.  The second form reads in the contents of the lexicon from\n     * the specified data file.  The data file must be in one of two formats:\n     * (1) a space-efficient precompiled binary format or (2) a text file\n     * containing one word per line.  The Stanford library distribution\n     * includes a binary lexicon file named <code>English.dat</code>\n     * containing a list of words in English.  The standard code pattern\n     * to initialize that lexicon looks like this:\n     *\n     *<pre>\n     *    Lexicon english(\"English.dat\");\n     *</pre>\n     */\n    Lexicon();\n    Lexicon(std::istream& input);\n    Lexicon(const std::string& filename);\n\n    /*\n     * This constructor uses an initializer list to set up the lexicon.\n     * Usage: Lexicon lex {1, 2, 3};\n     */\n    Lexicon(std::initializer_list<std::string> list);\n\n    /*\n     * Destructor: ~Lexicon\n     * --------------------\n     * The destructor deallocates any storage associated with the lexicon.\n     */\n    virtual ~Lexicon();\n\n    /**\n     * Adds the specified word to the lexicon, if not already present.\n     * The word is converted to lowercase before adding it to the lexicon.\n     * If the word contains any non-alphabetic characters (including whitespace),\n     * it will not be added. The empty string cannot be added to a lexicon.\n     * Returns true if the word was added successfully to the lexicon.\n     */\n    bool add(const std::string& word);\n\n    /**\n     * Adds all elements of the given other lexicon to this lexicon.\n     * Returns a reference to this lexicon.\n     * Identical in behavior to the += operator.\n     */\n    Lexicon& addAll(const Lexicon& lex);\n\n    /**\n     * Adds all elements of the given initializer list to this lexicon.\n     * Returns a reference to this lexicon.\n     * Identical in behavior to the += operator.\n     */\n    Lexicon& addAll(std::initializer_list<std::string> list);\n\n    /**\n     * Reads the given input stream and adds all of its words to the lexicon.\n     * Each word from the stream is converted to lowercase before adding it.\n     */\n    void addWordsFromFile(std::istream& input);\n    \n    /**\n     * Reads the file and adds all of its words to the lexicon.\n     * Each word from the file is converted to lowercase before adding it.\n     */\n    void addWordsFromFile(const std::string& filename);\n\n    /**\n     * Returns the last value in the lexicon in alphabetical order.\n     * If the set is empty, generates an error.\n     */\n    std::string back() const;\n\n    /**\n     * Removes all words from the lexicon.\n     */\n    void clear();\n\n    /**\n     * Returns <code>true</code> if <code>word</code> is contained in the\n     * lexicon.  In the <code>Lexicon</code> class, the case of letters is\n     * ignored, so \"Zoo\" is the same as \"ZOO\" or \"zoo\".\n     * The empty string cannot be contained in a lexicon, nor can any word\n     * containing any non-alphabetic characters such as punctuation or whitespace.\n     */\n    bool contains(const std::string& word) const;\n\n    /**\n     * Returns <code>true</code> if every value from the given other lexicon\n     * is also found in this lexicon.\n     * Equivalent in behavior to isSupersetOf.\n     */\n    bool containsAll(const Lexicon& set2) const;\n\n    /**\n     * Returns <code>true</code> if every value from the given initializer list\n     * is also found in this lexicon.\n     * Equivalent in behavior to isSupersetOf.\n     */\n    bool containsAll(std::initializer_list<std::string> list) const;\n\n    /**\n     * Returns true if any words in the lexicon begin with <code>prefix</code>.\n     * Like <code>containsWord</code>, this method ignores the case of letters\n     * so that \"MO\" is a prefix of \"monkey\" or \"Monday\".\n     * The empty string is a prefix of every string, so this method returns\n     * true when passed the empty string.\n     */\n    bool containsPrefix(const std::string& prefix) const;\n\n    /**\n     * Compares two lexicons for equality.\n     */\n    bool equals(const Lexicon& lex2) const;\n\n    /**\n     * Returns the first value in the lexicon in alphabetical order.\n     * If the set is empty, <code>first</code> generates an error.\n     * Equivalent to first.\n     */\n    std::string first() const;\n\n    /**\n     * Returns the first value in the lexicon in alphabetical order.\n     * If the set is empty, generates an error.\n     * Equivalent to first.\n     */\n    std::string front() const;\n\n    /**\n     * Adds an element to this lexicon, if it was not already there.  This\n     * method is exported for compatibility with the STL <code>set</code> class.\n     */\n    void insert(const std::string& word);\n\n    /**\n     * Returns <code>true</code> if the lexicon contains no words.\n     */\n    bool isEmpty() const;\n\n    /**\n     * Returns whether every word of this lexicon is contained in the given set.\n     */\n    bool isSubsetOf(const Lexicon& lex2) const;\n\n    /**\n     * Returns whether every word of this lexicon is contained in the given\n     * initializer list.\n     */\n    bool isSubsetOf(std::initializer_list<std::string> list) const;\n\n    /**\n     * Returns whether every word of the given lexicon is contained in this lexicon.\n     * Equivalent in behavior to containsAll.\n     */\n    bool isSupersetOf(const Lexicon& lex2) const;\n\n    /**\n     * Returns whether every word of the given list is contained in this lexicon.\n     * Equivalent in behavior to containsAll.\n     */\n    bool isSupersetOf(std::initializer_list<std::string> list) const;\n\n    /**\n     * Calls the specified function on each word in the lexicon.\n     */\n    void mapAll(void (*fn)(std::string)) const;\n\n    /**\n     * Calls the specified function on each word in the lexicon.\n     */\n    void mapAll(void (*fn)(const std::string&)) const;\n\n    /**\n     * Calls the specified function on each word in the lexicon.\n     */\n    template <typename FunctorType>\n    void mapAll(FunctorType fn) const;\n\n    /**\n     * Removes the specified word from the lexicon, if it was present.\n     * Returns true if the word was previously contained in the lexicon;\n     * in other words, if a word was removed.\n     * The empty string cannot be contained in a lexicon, so passing the\n     * empty string to this method returns false.\n     */\n    bool remove(const std::string& word);\n\n    /**\n     * Removes all elements of the given other lexicon from this lexicon.\n     * Returns a reference to this lexicon.\n     * Identical in behavior to the -= operator.\n     */\n    Lexicon& removeAll(const Lexicon& lex);\n\n    /**\n     * Removes all elements of the given other list from this lexicon.\n     * Returns a reference to this lexicon.\n     * Identical in behavior to the -= operator.\n     */\n    Lexicon& removeAll(std::initializer_list<std::string> list);\n\n    /**\n     * Removes all words from the lexicon that begin with the given prefix.\n     * Returns true if the prefix was previously contained in the lexicon;\n     * in other words, if any words were removed.\n     * If the empty string is passed, since all words begin with the empty\n     * string, all words will be removed and this method will\n     * return true if the lexicon was non-empty prior to the call.\n     */\n    bool removePrefix(const std::string& prefix);\n\n    /**\n     * Removes all elements from this lexicon that are not contained in the given\n     * other lexicon.\n     * Returns a reference to this lexicon.\n     * Identical in behavior to the *= operator.\n     */\n    Lexicon& retainAll(const Lexicon& lex);\n\n    /**\n     * Removes all elements from this lexicon that are not contained in the given\n     * initializer list.\n     * Returns a reference to this lexicon.\n     * Identical in behavior to the *= operator.\n     */\n    Lexicon& retainAll(std::initializer_list<std::string> list);\n\n    /**\n     * Returns the number of words contained in the lexicon.\n     */\n    int size() const;\n\n    /**\n     * Converts the lexicon to a printable string representation\n     * such as <code>{\"a\", \"b\", \"c\"}</code>.\n     * Note that this can be an expensive operation if the lexicon contains\n     * a large number of words.\n     */\n    std::string toString() const;\n\n    /**\n     * Returns true if two lexicons have the same elements.\n     */\n    bool operator ==(const Lexicon& lex2) const;\n\n    /**\n     * Returns true if two lexicons do not have the same elements.\n     */\n    bool operator !=(const Lexicon& lex2) const;\n\n    /**\n     * Relational operators to compare two lexicons.\n     */\n    bool operator <(const Lexicon& lex2) const;\n\n    /**\n     * Relational operators to compare two lexicons.\n     */\n    bool operator <=(const Lexicon& lex2) const;\n\n    /**\n     * Relational operators to compare two lexicons.\n     */\n    bool operator >(const Lexicon& lex2) const;\n\n    /**\n     * Relational operators to compare two lexicons.\n     */\n    bool operator >=(const Lexicon& lex2) const;\n\n    /**\n     * Returns the union of lexicons <code>lex1</code> and <code>lex2</code>,\n     * which is the set of words that appear in at least one of the two.\n     */\n    Lexicon operator +(const Lexicon& lex2) const;\n\n    /**\n     * Returns the union of this lexicon and the words in the given list,\n     * which is the set of words that appear in at least one of the two.\n     */\n    Lexicon operator +(std::initializer_list<std::string> list) const;\n\n    /**\n     * Returns the union of this lexicon and the given word.\n     */\n    Lexicon operator +(const std::string& word) const;\n\n    /**\n     * Returns the intersection of two lexicons,\n     * which is the set of all words that appear in both.\n     */\n    Lexicon operator *(const Lexicon& lex2) const;\n\n    /**\n     * Returns the intersection of this lexicons and the given list,\n     * which is the set of all words that appear in both.\n     */\n    Lexicon operator *(std::initializer_list<std::string> list) const;\n\n    /**\n     * Returns the difference of two lexicons,\n     * which is all of the words that appear in <code>lex1</code> but\n     * not <code>lex2</code>.\n     * You can also pass an initializer list such as {\"a\", \"b\", \"c\"}.\n     * The right hand set can be replaced by a single word, in\n     * which case the operator returns a new lexicon formed by removing that word.\n     */\n    Lexicon operator -(const Lexicon& lex2) const;\n\n    /**\n     * Returns the difference of two lexicons,\n     * which is all of the words that appear in this lexicon but not in\n     * the given initializer list.\n     */\n    Lexicon operator -(std::initializer_list<std::string> list) const;\n\n    /**\n     * Returns a new lexicon formed by removing the given word from this lexicon.\n     */\n    Lexicon operator -(const std::string& word) const;\n\n    /**\n     * Adds all of the words from the given lexicon to this lexicon.\n     */\n    Lexicon& operator +=(const Lexicon& lex2);\n\n    /**\n     * Adds all of the words from the given list to this lexicon.\n     */\n    Lexicon& operator +=(std::initializer_list<std::string> list);\n\n    /**\n     * Adds the specified word to this lexicon.\n     */\n    Lexicon& operator +=(const std::string& word);\n\n    /**\n     * Removes any elements from this lexicon that are not present in\n     * <code>lex2</code>.\n     */\n    Lexicon& operator *=(const Lexicon& lex2);\n\n    /**\n     * Removes any elements from this lexicon that are not present in\n     * the given initializer list.\n     */\n    Lexicon& operator *=(std::initializer_list<std::string> list);\n\n    /**\n     * Removes all elements in the given lexicon from this lexicon.\n     */\n    Lexicon& operator -=(const Lexicon& lex2);\n\n    /**\n     * Removes all elements in the given list from this lexicon.\n     */\n    Lexicon& operator -=(std::initializer_list<std::string> list);\n\n    /**\n     * Removes the given word from this lexicon.\n     */\n    Lexicon& operator -=(const std::string& value);\n\n    /**\n     * Allows you to add multiple elements to a lexicon.\n     * @example lex += \"she\", \"sells\", \"sea\", \"shells\";\n     */\n    Lexicon& operator ,(const std::string& word);\n\n    /*\n     * Additional Lexicon operations\n     * -----------------------------\n     * In addition to the methods listed in this interface, the Lexicon\n     * class supports the following operations:\n     *\n     *   - Deep copying for the copy constructor and assignment operator\n     *   - Iteration using the range-based for statement and STL iterators\n     *\n     * All iteration is guaranteed to proceed in alphabetical order.  All\n     * words in the lexicon are stored in lowercase.\n     */\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\nprivate:\n    struct TrieNode {\n    public:\n        TrieNode() {\n            _isWord = false;\n            for (int i = 0; i < 26; i++) {\n                _children[i] = nullptr;\n            }\n        }\n\n        // pre: letter is between 'a' and 'z' in lowercase\n        inline TrieNode*& child(char letter) {\n            return _children[letter - 'a'];\n        }\n\n        inline int childCount() const {\n            int count = 0;\n            for (int i = 0; i < 26; i++) {\n                if (_children[i] != nullptr) {\n                    count++;\n                }\n            }\n            return count;\n        }\n\n        inline bool isLeaf() const {\n            return childCount() == 0;\n        }\n\n        inline bool isWord() const {\n            return _isWord;\n        }\n\n        inline void setWord(bool value) {\n            _isWord = value;\n        }\n\n    private:\n        /* instance variables */\n        bool _isWord;\n        TrieNode* _children[26];   // 0=a, 1=b, 2=c, ..., 25=z\n    };\n\n    /*\n     * private helper functions, including\n     * recursive helpers to implement public add/contains/remove\n     */\n    bool addHelper(TrieNode*& node, const std::string& word, const std::string& originalWord);\n    bool containsHelper(TrieNode* node, const std::string& word, bool isPrefix) const;\n    void deepCopy(const Lexicon& src);\n    void deleteTree(TrieNode* node);\n    bool isDAWGFile(std::istream& input) const;\n    bool isDAWGFile(const std::string& filename) const;\n    void readBinaryFile(std::istream& input);\n    void readBinaryFile(const std::string& filename);\n    bool removeHelper(TrieNode*& node, const std::string& word, const std::string& originalWord, bool isPrefix);\n    void removeSubtreeHelper(TrieNode*& node, const std::string& originalWord);\n    \n    friend std::ostream& operator <<(std::ostream& os, const Lexicon& lex);\n    friend std::istream& operator >>(std::istream& is, Lexicon& lex);\n\n    /* instance variables */\n    TrieNode* _root;\n    int _size;\n    bool _removeFlag;             // flag to differentiate += and -= when used with ,\n    Set<std::string> _allWords;   // secondary structure of all words for foreach;\n                                  // basically a cop-out so I can loop over words\n\npublic:\n    /*\n     * Deep copying support\n     * --------------------\n     * This copy constructor and operator= are defined to make a\n     * deep copy, making it possible to pass/return lexicons by value\n     * and assign from one lexicon to another.  The entire contents of\n     * the lexicon, including all words, are copied.  Making copies is\n     * generally avoided because of the expense and thus, lexicons are\n     * typically passed by reference.  When a copy is needed, these\n     * operations are supported.\n     */\n    Lexicon(const Lexicon& src);\n    Lexicon& operator =(const Lexicon& src);\n\n    /*\n     * Iterator support\n     * ----------------\n     * The classes in the StanfordCPPLib collection implement input\n     * iterators so that they work symmetrically with respect to the\n     * corresponding STL classes.\n     */\n    class iterator : public Set<std::string>::iterator {\n    public:\n        iterator() : Set<std::string>::iterator() {}\n        iterator(const iterator& it) : Set<std::string>::iterator(it) {}\n        iterator(const Set<std::string>::iterator& it) : Set<std::string>::iterator(it) {}\n    };\n\n    /**\n     * Returns an iterator positioned at the first word in the lexicon.\n     */\n    iterator begin() const {\n        return iterator(_allWords.begin());\n    }\n\n    /**\n     * Returns an iterator positioned at the last word in the lexicon.\n     */\n    iterator end() const {\n        return iterator(_allWords.end());\n    }\n};\n\ntemplate <typename FunctorType>\nvoid Lexicon::mapAll(FunctorType fn) const {\n    for (std::string word : *this) {\n        fn(word);\n    }\n}\n\n/**\n * Hashing function for lexicons.\n */\nint hashCode(const Lexicon& l);\n\n/**\n * Prints the lexicon to the given output stream.\n */\nstd::ostream& operator <<(std::ostream& os, const Lexicon& lex);\n\n/**\n * Reads the contents of a lexicon from the given input stream.\n */\nstd::istream& operator >>(std::istream& is, Lexicon& lex);\n\n#endif // _lexicon_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/collections/linkedhashmap.h",
    "content": "/*\n * File: linkedhashmap.h\n * ---------------------\n * This file exports the <code>LinkedHashMap</code> class, which stores\n * a set of <i>key</i>-<i>value</i> pairs.\n * Identical to a HashMap except that upon iteration using a for-each loop\n * or << / toString call, it will emit its key/value pairs in the order they\n * were originally inserted.  This is provided at a runtime and memory\n * cost due to needing to store an extra copy of the keys.\n * \n * @author Marty Stepp\n * @version 2019/04/09\n * - renamed private members with underscore naming scheme for consistency\n * @version 2018/03/10\n * - added methods front, back\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * @version 2016/09/22\n * - added support for std initializer_list usage, such as\n *   {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}} in constructor, putAll, removeAll, retainAll,\n *   operators +, +=, -, -=, *, *=\n * - added addAll method\n * - added operators <, <=, >, >=\n * @version 2016/08/12\n * - bug fix in operator >>\n * @version 2016/08/04\n * - fixed operator >> to not throw errors\n * @version 2015/10/26\n * - initial version\n * @since 2015/10/26\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _linkedhashmap_h\n#define _linkedhashmap_h\n\n#include <initializer_list>\n#include <iterator>\n#include <string>\n#include <functional>\n\n#define INTERNAL_INCLUDE 1\n#include \"collections.h\"\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"hashcode.h\"\n#define INTERNAL_INCLUDE 1\n#include \"hashmap.h\"\n#define INTERNAL_INCLUDE 1\n#include \"vector.h\"\n#undef INTERNAL_INCLUDE\n\n/*\n * Class: LinkedHashMap<KeyType,ValueType>\n * ---------------------------------------\n * \n */\ntemplate <typename KeyType, typename ValueType>\nclass LinkedHashMap {\npublic:\n    /*\n     * Constructor: LinkedHashMap\n     * Usage: LinkedHashMap<KeyType, ValueType> map;\n     * ---------------------------------------------\n     * Initializes a new empty map that associates keys and values of\n     * the specified types.  The type used for the key must define\n     * the <code>==</code> operator, and there must be a free function\n     * with the following signature:\n     *\n     *<pre>\n     *    int hashCode(KeyType key);\n     *</pre>\n     *\n     * that returns a positive integer determined by the key.  This interface\n     * exports <code>hashCode</code> functions for <code>string</code> and\n     * the C++ primitive types.\n     */\n    LinkedHashMap() = default;\n\n    /*\n     * Constructor: LinkedHashMap\n     * Usage: LinkedHashMap<ValueType> map {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}};\n     * -------------------------------------------------------------------\n     * Initializes a new map that stores the given pairs.\n     * Note that the pairs are stored in unpredictable order internally and not\n     * necessarily the order in which they are written in the initializer list.\n     */\n    LinkedHashMap(std::initializer_list<std::pair<const KeyType, ValueType>> list);\n\n    /*\n     * Destructor: ~LinkedHashMap\n     * --------------------\n     * Frees any heap storage associated with this map.\n     */\n    virtual ~LinkedHashMap() = default;\n\n    /*\n     * Method: add\n     * Usage: map.add(key, value);\n     * ---------------------------\n     * Associates <code>key</code> with <code>value</code> in this map.\n     * A synonym for the put method.\n     */\n    void add(const KeyType& key, const ValueType& value);\n\n    /*\n     * Method: addAll\n     * Usage: map.addAll(map2);\n     * ------------------------\n     * Adds all key/value pairs from the given map to this map.\n     * If both maps contain a pair for the same key, the one from map2 will\n     * replace the one from this map.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     * Returns a reference to this map.\n     * Identical in behavior to putAll.\n     */\n    LinkedHashMap& addAll(const LinkedHashMap& map2);\n\n    /*\n     * Method: back\n     * Usage: KeyType value = map.back();\n     * ------------------------------------\n     * Returns the last key in the map in the order established by the\n     * <code>foreach</code> macro.  If the map is empty, generates an error.\n     */\n    KeyType back() const;\n\n    /*\n     * Method: clear\n     * Usage: map.clear();\n     * -------------------\n     * Removes all entries from this map.\n     */\n    void clear();\n\n    /*\n     * Method: containsKey\n     * Usage: if (map.containsKey(key)) ...\n     * ------------------------------------\n     * Returns <code>true</code> if there is an entry for <code>key</code>\n     * in this map.\n     */\n    bool containsKey(const KeyType& key) const;\n\n    /*\n     * Method: equals\n     * Usage: if (map.equals(map2)) ...\n     * --------------------------------\n     * Returns <code>true</code> if the two maps contain exactly the same\n     * key/value pairs, and <code>false</code> otherwise.\n     */\n    bool equals(const LinkedHashMap& map2) const;\n\n    /*\n     * Method: front\n     * Usage: KeyType value = map.front();\n     * -------------------------------------\n     * Returns the first key in the map in the order established by the\n     * <code>foreach</code> macro.  If the map is empty, generates an error.\n     */\n    KeyType front() const;\n\n    /*\n     * Method: get\n     * Usage: ValueType value = map.get(key);\n     * --------------------------------------\n     * Returns the value associated with <code>key</code> in this map.\n     * If <code>key</code> is not found, <code>get</code> returns the\n     * default value for <code>ValueType</code>.\n     */\n    ValueType get(const KeyType& key) const;\n\n    /*\n     * Method: isEmpty\n     * Usage: if (map.isEmpty()) ...\n     * -----------------------------\n     * Returns <code>true</code> if this map contains no entries.\n     */\n    bool isEmpty() const;\n    \n    /*\n     * Method: keys\n     * Usage: Vector<KeyType> keys = map.keys();\n     * -----------------------------------------\n     * Returns a collection containing all keys in this map.\n     * This implementation already retains an internal copy of the keys,\n     * so it is efficient to call this function even on large maps.\n     */\n    const Vector<KeyType>& keys() const;\n\n    /*\n     * Method: mapAll\n     * Usage: map.mapAll(fn);\n     * ----------------------\n     * Iterates through the map entries and calls <code>fn(key, value)</code>\n     * for each one.  The keys are processed in an undetermined order.\n     */\n    void mapAll(std::function<void (const KeyType&, const ValueType &)> fn) const;\n\n    /*\n     * Method: put\n     * Usage: map.put(key, value);\n     * ---------------------------\n     * Associates <code>key</code> with <code>value</code> in this map.\n     * Any previous value associated with <code>key</code> is replaced\n     * by the new value.\n     */\n    void put(const KeyType& key, const ValueType& value);\n\n    /*\n     * Method: putAll\n     * Usage: map.putAll(map2);\n     * ---------------------------\n     * Adds all key/value pairs from the given map to this map.\n     * If both maps contain a pair for the same key, the one from map2 will\n     * replace the one from this map.\n     * Returns a reference to this map.\n     */\n    LinkedHashMap& putAll(const LinkedHashMap& map2);\n\n    /*\n     * Method: remove\n     * Usage: map.remove(key);\n     * -----------------------\n     * Removes any entry for <code>key</code> from this map.\n     * If the given key is not found, has no effect.\n     */\n    void remove(const KeyType& key);\n\n    /*\n     * Method: removeAll\n     * Usage: map.removeAll(map2);\n     * ---------------------------\n     * Removes all key/value pairs from this map that are contained in the given map.\n     * If both maps contain the same key but it maps to different values, that\n     * mapping will not be removed.\n     * Returns a reference to this map.\n     */\n    LinkedHashMap& removeAll(const LinkedHashMap& map2);\n\n    /*\n     * Method: retainAll\n     * Usage: map.retainAll(map2);\n     * ---------------------------\n     * Removes all key/value pairs from this map that are not contained in the given map.\n     * If both maps contain the same key but it maps to different values, that\n     * mapping will be removed.\n     * Returns a reference to this map.\n     */\n    LinkedHashMap& retainAll(const LinkedHashMap& map2);\n\n    /*\n     * Method: size\n     * Usage: int nEntries = map.size();\n     * ---------------------------------\n     * Returns the number of entries in this map.\n     */\n    int size() const;\n\n    /*\n     * Method: toString\n     * Usage: string str = map.toString();\n     * -----------------------------------\n     * Converts the map to a printable string representation.\n     */\n    std::string toString() const;\n\n    /*\n     * Method: values\n     * Usage: Vector<ValueType> values = map.values();\n     * -----------------------------------------------\n     * Returns a collection containing all values in this map.\n     * Note that this implementation makes a deep copy of the values,\n     * so it is inefficient to call on large maps.\n     */\n    Vector<ValueType> values() const;\n\n    /*\n     * Operator: []\n     * Usage: map[key]\n     * ---------------\n     * Selects the value associated with <code>key</code>.  This syntax\n     * makes it easy to think of a map as an \"associative array\"\n     * indexed by the key type.  If <code>key</code> is already present\n     * in the map, this function returns a reference to its associated\n     * value.  If key is not present in the map, a new entry is created\n     * whose value is set to the default for the value type.\n     */\n    // ValueType& operator [](const KeyType& key);\n    ValueType operator [](const KeyType& key) const;\n\n    /*\n     * Operator: ==\n     * Usage: if (map1 == map2) ...\n     * ----------------------------\n     * Compares two maps for equality.\n     */\n    bool operator ==(const LinkedHashMap& map2) const;\n\n    /*\n     * Operator: !=\n     * Usage: if (map1 != map2) ...\n     * ----------------------------\n     * Compares two maps for inequality.\n     */\n    bool operator !=(const LinkedHashMap& map2) const;\n\n    /*\n     * Operators: <, <=, >, >=\n     * Usage: if (map1 < map2) ...\n     * ---------------------------\n     * Relational operators to compare two maps.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     */\n    bool operator <(const LinkedHashMap& map2) const;\n    bool operator <=(const LinkedHashMap& map2) const;\n    bool operator >(const LinkedHashMap& map2) const;\n    bool operator >=(const LinkedHashMap& map2) const;\n\n    /*\n     * Operator: +\n     * Usage: map1 + map2\n     * ------------------\n     * Returns the union of the two maps, equivalent to a copy of the first map\n     * with addAll called on it passing the second map as a parameter.\n     * If the two maps both contain a mapping for the same key, the mapping\n     * from the second map is favored.\n     */\n    LinkedHashMap operator +(const LinkedHashMap& map2) const;\n\n    /*\n     * Operator: +=\n     * Usage: map1 += map2;\n     * --------------------\n     * Adds all key/value pairs from the given map to this map.\n     * Equivalent to calling addAll(map2).\n     */\n    LinkedHashMap& operator +=(const LinkedHashMap& map2);\n\n\n    /*\n     * Operator: -\n     * Usage: map1 - map2\n     * ------------------\n     * Returns the difference of the two maps, equivalent to a copy of the first map\n     * with removeAll called on it passing the second map as a parameter.\n     */\n    LinkedHashMap operator -(const LinkedHashMap& map2) const;\n\n\n    /*\n     * Operator: -=\n     * Usage: map1 -= map2;\n     * --------------------\n     * Removes all key/value pairs from the given map to this map.\n     * Equivalent to calling removeAll(map2).\n     */\n    LinkedHashMap& operator -=(const LinkedHashMap& map2);\n\n\n    /*\n     * Operator: *\n     * Usage: map1 * map2\n     * ------------------\n     * Returns the intersection of the two maps, equivalent to a copy of the first map\n     * with retainAll called on it passing the second map as a parameter.\n     */\n    LinkedHashMap operator *(const LinkedHashMap& map2) const;\n\n\n    /*\n     * Operator: *=\n     * Usage: map1 *= map2;\n     * ---------------------\n     * Removes all key/value pairs that are not found in the given map from this map.\n     * Equivalent to calling retainAll(map2).\n     */\n    LinkedHashMap& operator *=(const LinkedHashMap& map2);\n\n    template <typename K, typename V>\n    friend std::ostream& operator <<(std::ostream& os, const LinkedHashMap<K, V>& map);\n    \n    /*\n     * Additional LinkedHashMap operations\n     * -----------------------------------\n     * In addition to the methods listed in this interface, the HashMap\n     * class supports the following operations:\n     *\n     *   - Stream I/O using the << and >> operators\n     *   - Deep copying for the copy constructor and assignment operator\n     *   - Iteration using the range-based for statement and STL iterators\n     *\n     * During iteration, the LinkedHashMap class returns its keys in the\n     * order they were added.\n     */\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\n    /*\n     * Implementation notes:\n     * ---------------------\n     * The LinkedHashMap class is represented using a hash map along with a\n     * Vector to remember the order of insertion.\n    */\nprivate:\n    HashMap<KeyType, ValueType> _map;\n    Vector<KeyType> _keys;\n\npublic:\n    /*\n     * Hidden features\n     * ---------------\n     * The remainder of this file consists of the code required to\n     * support deep copying and iteration.  Including these methods\n     * in the public interface would make that interface more\n     * difficult to understand for the average client.\n     */\n\n    /*\n     * Iterator support\n     * ----------------\n     * The classes in the StanfordCPPLib collection implement input\n     * iterators so that they work symmetrically with respect to the\n     * corresponding STL classes.\n     */\n    using const_iterator = typename Vector<KeyType>::const_iterator;\n    using iterator = const_iterator;\n\n    /*\n     * Returns an iterator positioned at the first key of the map.\n     */\n    const_iterator begin() const {\n        return _keys.begin();\n    }\n\n    /*\n     * Returns an iterator positioned at the last key of the map.\n     */\n    const_iterator end() const {\n        return _keys.end();\n    }\n};\n\n/*\n * Implementation notes: LinkedHashMap class\n * -----------------------------------------\n * ...\n */\ntemplate <typename KeyType, typename ValueType>\nLinkedHashMap<KeyType, ValueType>::LinkedHashMap(std::initializer_list<std::pair<const KeyType, ValueType>> list) {\n    for (const auto& entry: list) {\n        put(entry.first, entry.second);\n    }\n}\n\ntemplate <typename KeyType, typename ValueType>\nvoid LinkedHashMap<KeyType, ValueType>::add(const KeyType& key, const ValueType& value) {\n    put(key, value);\n}\n\ntemplate <typename KeyType, typename ValueType>\nLinkedHashMap<KeyType, ValueType>& LinkedHashMap<KeyType, ValueType>::addAll(const LinkedHashMap& map2) {\n    return putAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nKeyType LinkedHashMap<KeyType, ValueType>::back() const {\n    if (isEmpty()) {\n        error(\"LinkedHashMap::back: map is empty\");\n    }\n    return _keys.back();\n}\n\ntemplate <typename KeyType, typename ValueType>\nvoid LinkedHashMap<KeyType, ValueType>::clear() {\n    _map.clear();\n    _keys.clear();\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool LinkedHashMap<KeyType, ValueType>::containsKey(const KeyType& key) const {\n    return _map.containsKey(key);\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool LinkedHashMap<KeyType, ValueType>::equals(const LinkedHashMap<KeyType, ValueType>& map2) const {\n    return stanfordcpplib::collections::equalsMap(*this, map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nKeyType LinkedHashMap<KeyType, ValueType>::front() const {\n    if (isEmpty()) {\n        error(\"LinkedHashMap::front: map is empty\");\n    }\n    return _keys.front();\n}\n\ntemplate <typename KeyType, typename ValueType>\nValueType LinkedHashMap<KeyType, ValueType>::get(const KeyType& key) const {\n    return _map.get(key);\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool LinkedHashMap<KeyType, ValueType>::isEmpty() const {\n    return _map.isEmpty();\n}\n\ntemplate <typename KeyType, typename ValueType>\nconst Vector<KeyType>& LinkedHashMap<KeyType, ValueType>::keys() const {\n    return _keys;\n}\n\ntemplate <typename KeyType, typename ValueType>\nvoid LinkedHashMap<KeyType, ValueType>::mapAll(std::function<void (const KeyType&, const ValueType &)> fn) const {\n    _map.mapAll(fn);\n}\n\ntemplate <typename KeyType, typename ValueType>\nvoid LinkedHashMap<KeyType, ValueType>::put(const KeyType& key, const ValueType& value) {\n    _map.put(key, value);\n    _keys.add(key);\n}\n\ntemplate <typename KeyType, typename ValueType>\nLinkedHashMap<KeyType, ValueType>& LinkedHashMap<KeyType, ValueType>::putAll(const LinkedHashMap& map2) {\n    for (const KeyType& key : map2) {\n        put(key, map2.get(key));\n    }\n    return *this;\n}\n\ntemplate <typename KeyType, typename ValueType>\nvoid LinkedHashMap<KeyType, ValueType>::remove(const KeyType& key) {\n    _map.remove(key);\n    for (int i = 0, sz = _keys.size(); i < sz; i++) {\n        if (_keys[i] == key) {\n            _keys.remove(i);\n            break;\n        }\n    }\n}\n\ntemplate <typename KeyType, typename ValueType>\nLinkedHashMap<KeyType, ValueType>& LinkedHashMap<KeyType, ValueType>::removeAll(const LinkedHashMap& map2) {\n    for (const KeyType& key : map2) {\n        if (containsKey(key) && get(key) == map2.get(key)) {\n            remove(key);\n        }\n    }\n    return *this;\n}\n\ntemplate <typename KeyType, typename ValueType>\nLinkedHashMap<KeyType, ValueType>& LinkedHashMap<KeyType, ValueType>::retainAll(const LinkedHashMap& map2) {\n    Vector<KeyType> toRemove;\n    for (const KeyType& key : *this) {\n        if (!map2.containsKey(key) || get(key) != map2.get(key)) {\n            toRemove.add(key);\n        }\n    }\n    for (const KeyType& key : toRemove) {\n        remove(key);\n    }\n    return *this;\n}\n\ntemplate <typename KeyType, typename ValueType>\nint LinkedHashMap<KeyType, ValueType>::size() const {\n    return _map.size();\n}\n\ntemplate <typename KeyType, typename ValueType>\nstd::string LinkedHashMap<KeyType, ValueType>::toString() const {\n    std::ostringstream os;\n    os << *this;\n    return os.str();\n}\n\ntemplate <typename KeyType, typename ValueType>\nVector<ValueType> LinkedHashMap<KeyType, ValueType>::values() const {\n    Vector<ValueType> values;\n    for (const KeyType& key : *this) {\n        values.add(get(key));\n    }\n    return values;\n}\n\ntemplate <typename KeyType, typename ValueType>\nValueType LinkedHashMap<KeyType, ValueType>::operator [](const KeyType& key) const {\n    return _map[key];\n}\n\ntemplate <typename KeyType, typename ValueType>\nLinkedHashMap<KeyType, ValueType> LinkedHashMap<KeyType, ValueType>::operator +(const LinkedHashMap& map2) const {\n    LinkedHashMap<KeyType, ValueType> result = *this;\n    return result.putAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nLinkedHashMap<KeyType, ValueType>& LinkedHashMap<KeyType, ValueType>::operator +=(const LinkedHashMap& map2) {\n    return putAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nLinkedHashMap<KeyType, ValueType> LinkedHashMap<KeyType, ValueType>::operator -(const LinkedHashMap& map2) const {\n    LinkedHashMap<KeyType, ValueType> result = *this;\n    return result.removeAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nLinkedHashMap<KeyType, ValueType>& LinkedHashMap<KeyType, ValueType>::operator -=(const LinkedHashMap& map2) {\n    return removeAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nLinkedHashMap<KeyType, ValueType> LinkedHashMap<KeyType, ValueType>::operator *(const LinkedHashMap& map2) const {\n    LinkedHashMap<KeyType, ValueType> result = *this;\n    return result.retainAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nLinkedHashMap<KeyType, ValueType>& LinkedHashMap<KeyType, ValueType>::operator *=(const LinkedHashMap& map2) {\n    return retainAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool LinkedHashMap<KeyType, ValueType>::operator ==(const LinkedHashMap& map2) const {\n    return equals(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool LinkedHashMap<KeyType, ValueType>::operator !=(const LinkedHashMap& map2) const {\n    return !equals(map2);\n}\n\n// Implementation note:\n// The definitions of <, <=, >, and >= are a bit unintuitive here.\n// Because Maps are considered to be \"equal\" if they have the same key/value pairs,\n// regardless of order, the equals() method and == / != operators ignore order.\n//\n// Similarly, if you ask whether a map is <= or >= to another, this includes\n// the notion of equality, so it should return true if the maps contain the same\n// pairs, regardless of order.\n//\n// If you ask whether a map is < or > to another, it is assumed that you don't\n// want this to return true if they are \"equal\", so we must check for non-equality\n// before checking the K/V pairs pairwise.\n//\n// This issue is unique to LinkedHashMap because Map sorts into a predictable sorted order\n// and HashMap opts not to implement <, <=, >, or >= due to its unpredictable hash order.\n\ntemplate <typename KeyType, typename ValueType>\nbool LinkedHashMap<KeyType, ValueType>::operator <(const LinkedHashMap& map2) const {\n    return !equals(map2) && stanfordcpplib::collections::compareMaps(*this, map2) < 0;\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool LinkedHashMap<KeyType, ValueType>::operator <=(const LinkedHashMap& map2) const {\n    return equals(map2) || stanfordcpplib::collections::compareMaps(*this, map2) <= 0;\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool LinkedHashMap<KeyType, ValueType>::operator >(const LinkedHashMap& map2) const {\n    return !equals(map2) && stanfordcpplib::collections::compareMaps(*this, map2) > 0;\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool LinkedHashMap<KeyType, ValueType>::operator >=(const LinkedHashMap& map2) const {\n    return equals(map2) || stanfordcpplib::collections::compareMaps(*this, map2) >= 0;\n}\n\n/*\n * Implementation notes: << and >>\n * -------------------------------\n * The insertion and extraction operators use the template facilities in\n * strlib.h to read and write generic values in a way that treats strings\n * specially.\n */\ntemplate <typename KeyType, typename ValueType>\nstd::ostream& operator <<(std::ostream& os,\n                          const LinkedHashMap<KeyType, ValueType>& map) {\n    return stanfordcpplib::collections::writeMap(os, map);\n}\n\ntemplate <typename KeyType, typename ValueType>\nstd::istream& operator >>(std::istream& is,\n                          LinkedHashMap<KeyType, ValueType>& map) {\n    KeyType key;\n    ValueType value;\n    return stanfordcpplib::collections::readMap(is, map, key, value, /* descriptor */ std::string(\"LinkedHashMap::operator >>\"));\n}\n\n/*\n * Template hash function for hash maps.\n * Requires the key and value types in the LinkedHashMap to have a hashCode function.\n */\ntemplate <typename K, typename V>\nint hashCode(const LinkedHashMap<K, V>& map) {\n    return stanfordcpplib::collections::hashCodeMap(map, /* orderMatters */ false);\n}\n\n/*\n * Function: randomKey\n * Usage: element = randomKey(map);\n * --------------------------------\n * Returns a randomly chosen key of the given map.\n * Throws an error if the map is empty.\n */\ntemplate <typename K, typename V>\nconst K& randomKey(const LinkedHashMap<K, V>& map) {\n    return stanfordcpplib::collections::randomElement(map);\n}\n\n#endif // _linkedhashmap_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/collections/linkedhashset.h",
    "content": "/*\n * File: linkedhashset.h\n * ---------------------\n * This file exports the <code>LinkedHashSet</code> class, which\n * implements an efficient abstraction for storing sets of values.\n * \n * @author Marty Stepp\n * @version 2019/02/04\n * - changed internal implementation to wrap std collections\n * @version 2018/03/10\n * - added methods front, back\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * @version 2016/09/22\n * - added containsAll, isSupersetOf methods\n * - added support for std initializer_list usage, such as {1, 2, 3}\n *   in constructor, addAll, containsAll, isSubsetOf, isSupersetOf, removeAll,\n *   retainAll, and operators +, +=, -, -=, *, *=\n * - bug fix in hashCode function\n * - added operators <, <=, >, >=\n * @version 2016/08/04\n * - fixed operator >> to not throw errors\n * @version 2015/10/26\n * - initial version\n * @since 2015/10/26\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _linkedhashset_h\n#define _linkedhashset_h\n\n#include <initializer_list>\n#include <iostream>\n#include <functional>\n\n#define INTERNAL_INCLUDE 1\n#include \"collections.h\"\n#define INTERNAL_INCLUDE 1\n#include \"linkedhashmap.h\"\n#undef INTERNAL_INCLUDE\n\n/* Traits type for the LinkedHashSet, which wraps an underlying LinkedHashMap. */\nnamespace stanfordcpplib {\n    namespace collections {\n        template <typename T> struct LinkedHashSetTraits {\n            using ValueType = T;\n            using MapType   = LinkedHashMap<T, bool>;\n            static std::string name() {\n                return \"LinkedHashSet\";\n            }\n\n            /* You can default-construct a LinkedHashSet. */\n            static MapType construct() {\n                return {};\n            }\n\n            /* However, you can't pass in any other arguments. */\n            template <typename... Args>\n            static void construct(Args&&...) {\n                static_assert(Fail<Args...>::value, \"Oops! Seems like you tried to initialize a LinkedHashSet incorrectly. Click here for details.\");\n\n                /*\n                 * Hello student! If you are reading this message, it means that you tried to\n                 * initialize a LinkedHashSet improperly. For example, you might have tried to\n                 * write something like this:\n                 *\n                 *     LinkedHashSet<int> mySet = 137; // Oops!\n                 *\n                 * Here, for example, you're trying to assign an int to a LinkedHashSet<int>.\n                 *\n                 * or perhaps you had a function like this one:\n                 *\n                 *     void myFunction(LinkedHashSet<int>& mySet);\n                 *\n                 * and you called it by writing\n                 *\n                 *     myFunction(someSet + someOtherSet); // Oops!\n                 *     myFunction({ });                    // Oops!\n                 *\n                 * In these cases, you're trying to pass a value into a function that takes\n                 * its argument by (non-const) reference. C++ doesn't allow you to do this.\n                 *\n                 * To see where the actual error comes from, look in the list of error messages\n                 * in Qt Creator. You should see a line that says \"required from here\" that\n                 * points somewhere in your code. That's the actual line you wrote that caused\n                 * the problem, so double-click on that error message and see where it takes\n                 * you. Now you know where to look!\n                 *\n                 * Hope this helps!\n                 */\n                error(\"static_assert succeeded?\");\n            }\n        };\n    }\n}\n\n/*\n * A set of elements that remembers their insertion order during iteration. To use\n * this type, the underlying elements must support a function\n *\n *     int hashCode(ValueType);\n *\n * that returns a nonnegative integer, along with equality comparison using ==.\n */\ntemplate <typename ValueType>\n    using LinkedHashSet = stanfordcpplib::collections::GenericSet<stanfordcpplib::collections::LinkedHashSetTraits<ValueType>>;\n\n#endif // _linkedhashset_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/collections/linkedlist.h",
    "content": "/*\n * File: linkedlist.h\n * ------------------\n * This file exports the <code>LinkedList</code> class, which provides an\n * implementation of a doubly-linked list of objects and provides a\n * public interface similar to that of the <code>Vector</code> class.\n *\n * @version 2019/04/09\n * - renamed private members with underscore naming scheme for consistency\n * @version 2019/02/04\n * - changed internal implementation to wrap std collections\n * @version 2018/01/07\n * - added removeFront, removeBack\n * @version 2017/11/15\n * - added contains, indexOf, lastIndexOf, removeValue, reverse, shuffle, sort\n * @version 2017/11/14\n * - added iterator version checking support\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * @version 2016/08/10\n * - added support for std initializer_list usage, such as {1, 2, 3}\n *   in constructor, addAll, +, +=\n * @version 2016/08/04\n * - fixed operator >> to not throw errors\n * @version 2015/07/05\n * - using global hashing functions rather than global variables\n * @version 2014/11/13\n * - added comparison operators <, >=, etc.\n * - added template hashCode function\n * @version 2014/10/19\n * - added subList method\n * @version 2014/10/10\n * - removed usage of __foreach macro\n * 2014/07/10\n *  - fixed compiler errors/bugs in initial implementation:\n *    back(), front() members, etc.\n *  - changed checkLinkedListIndex into a member function to avoid warnings\n * @since 2014/07/10\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _linkedlist_h\n#define _linkedlist_h\n\n#include <algorithm>\n#include <initializer_list>\n#include <iostream>\n#include <iterator>\n#include <list>\n#include <sstream>\n#include <string>\n#include <functional>\n\n#define INTERNAL_INCLUDE 1\n#include \"collections.h\"\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"hashcode.h\"\n#define INTERNAL_INCLUDE 1\n#include \"random.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"vector.h\"\n#undef INTERNAL_INCLUDE\n\n/*\n * Class: LinkedList<ValueType>\n * ----------------------------\n * This class stores an ordered list of values similar to an array.\n * It supports traditional array selection using square brackets, but\n * also supports inserting and deleting elements.  It is similar in\n * function to the STL <code>list</code> type.\n */\ntemplate <typename ValueType>\nclass LinkedList {\npublic:\n    /*\n     * Constructor: LinkedList\n     * Usage: LinkedList<ValueType> list;\n     * ----------------------------------\n     * Initializes a new LinkedList.  The default constructor creates an\n     * empty LinkedList.\n     */\n    LinkedList() = default;\n    /* implicit */ LinkedList(const std::list<ValueType>& v);\n\n    /*\n     * This constructor uses an initializer list to set up the linked list.\n     * Usage: LinkedList<int> list {1, 2, 3};\n     */\n    LinkedList(std::initializer_list<ValueType> list);\n\n    /*\n     * Destructor: ~LinkedList\n     * -------------------\n     * Frees any heap storage allocated by this LinkedList.\n     */\n    virtual ~LinkedList() = default;\n    \n    /*\n     * Method: add\n     * Usage: list.add(value);\n     * ----------------------\n     * Adds a new value to the end of this LinkedList.  To ensure compatibility\n     * with the <code>LinkedList</code> class in the Standard Template Library,\n     * this method is also called <code>push_back</code>.\n     */\n    void add(ValueType value);\n    \n    /*\n     * Method: addAll\n     * Usage: list.addAll(l2);\n     * -----------------------\n     * Adds all elements of the given other linked list to this list.\n     * Returns a reference to this list.\n     * Identical in behavior to the += operator.\n     * You may also pass an initializer list such as {1, 2, 3}.\n     */\n    LinkedList<ValueType>& addAll(const LinkedList<ValueType>& list);\n    LinkedList<ValueType>& addAll(std::initializer_list<ValueType> list);\n\n    /*\n     * Method: back\n     * Usage: ValueType val = list.back();\n     * -----------------------------------\n     * Returns the element at the back (index size-1) of this LinkedList.\n     * This method signals an error if the list is empty.\n     */\n    ValueType& back();\n    const ValueType& back() const;\n\n    /*\n     * Method: clear\n     * Usage: list.clear();\n     * --------------------\n     * Removes all elements from this LinkedList.\n     */\n    void clear();\n    \n    /*\n     * Method: contains\n     * Usage: if (list.contains(value)) ...\n     * ------------------------------------\n     * Returns true if the list contains the given value.\n     * The ValueType must have an == operator to use this method.\n     */\n    bool contains(const ValueType& value) const;\n\n    /*\n     * Method: equals\n     * Usage: if (list.equals(l2)) ...\n     * -------------------------------\n     * Returns <code>true</code> if this linked list contains exactly the same\n     * values as the given other list.\n     * Identical in behavior to the == operator.\n     */\n    bool equals(const LinkedList<ValueType>& l2) const;\n    \n    /*\n     * Method: front\n     * Usage: ValueType val = list.front();\n     * ------------------------------------\n     * Returns the element at the front (index 0) of this LinkedList.\n     * This method signals an error if the list is empty.\n     */\n    ValueType& front();\n    const ValueType& front() const;\n\n    /*\n     * Method: get\n     * Usage: ValueType val = list.get(index);\n     * ---------------------------------------\n     * Returns the element at the specified index in this LinkedList.  This\n     * method signals an error if the index is not in the list range.\n     *\n     * The client should be mindful that unlike with a vector, this operation\n     * is O(N) for linked lists because it must traverse the list to reach\n     * the given index.\n     */\n    const ValueType& get(int index) const;\n\n    /*\n     * Method: indexOf\n     * Usage: int index = list.indexOf(value);\n     * ---------------------------------------\n     * Returns the index of the first occurrence of the given value.\n     * If the value is not found in the vector, returns -1.\n     * The ValueType must have an == operator to use this method.\n     */\n    int indexOf(const ValueType& value) const;\n\n    /*\n     * Method: insert\n     * Usage: list.insert(0, value);\n     * -----------------------------\n     * Inserts the element into this LinkedList before the specified index.\n     * This method signals an error if the index is outside the range from 0\n     * up to and including the length of the LinkedList.\n     */\n    void insert(int index, ValueType value);\n\n    /*\n     * Method: isEmpty\n     * Usage: if (list.isEmpty()) ...\n     * ------------------------------\n     * Returns <code>true</code> if this LinkedList contains no elements.\n     */\n    bool isEmpty() const;\n\n    /*\n     * Method: lastIndexOf\n     * Usage: int index = list.lastIndexOf(value);\n     * -------------------------------------------\n     * Returns the index of the last occurrence of the given value.\n     * If the value is not found in the vector, returns -1.\n     * The ValueType must have an == operator to use this method.\n     */\n    int lastIndexOf(const ValueType& value) const;\n\n    /*\n     * Method: mapAll\n     * Usage: list.mapAll(fn);\n     * ----------------------\n     * Calls the specified function on each element of the LinkedList in\n     * ascending index order.\n     */\n    void mapAll(std::function<void (const ValueType &)> fn) const;\n    \n    /*\n     * Method: pop_back\n     * Usage: ValueType back = list.pop_back();\n     * ------------------------------------------\n     * Removes and returns the last value of this LinkedList.\n     * Throws an error if the list is empty.\n     */\n    ValueType pop_back();\n\n    /*\n     * Method: pop_front\n     * Usage: ValueType front = list.pop_front();\n     * ------------------------------------------\n     * Removes and returns the first value of this LinkedList.\n     * Throws an error if the list is empty.\n     */\n    ValueType pop_front();\n    \n    /*\n     * Method: push_back\n     * Usage: list.push_back(value);\n     * -----------------------------\n     * Adds a new value to the end of this LinkedList.\n     * Same behavior as the <code>add</code> method.\n     */\n    void push_back(const ValueType& value);\n\n    /*\n     * Method: push_front\n     * Usage: list.push_front(value);\n     * ------------------------------\n     * Adds a new value to the front of this LinkedList.\n     */\n    void push_front(const ValueType& value);\n    \n    /*\n     * Method: remove\n     * Usage: list.remove(index);\n     * -------------------------\n     * Removes the element at the specified index from this LinkedList.\n     * This method signals an error if the index is outside the list range.\n     */\n    void remove(int index);\n\n    /*\n     * Method: removeFirst\n     * Usage: ValueType val = list.removeFirst();\n     * ------------------------------------------\n     * Removes and returns the element at index 0 in this list.\n     * This method signals an error if list is empty.\n     */\n    ValueType removeFront();\n\n    /*\n     * Method: removeLast\n     * Usage: ValueType val = list.removeLast();\n     * -----------------------------------------\n     * Removes and returns the element at index (size - 1) in this list.\n     * This method signals an error if list is empty.\n     */\n    ValueType removeBack();\n\n    /*\n     * Method: removeValue\n     * Usage: list.removeValue(value);\n     * -------------------------------\n     * Removes the first occurrence of the element value from this list.\n     * All subsequent elements are shifted one position to the left.\n     * If the vector does not contain the given value, has no effect.\n     * The ValueType must have an == operator to use this method.\n     */\n    void removeValue(const ValueType& value);\n\n    /*\n     * Method: reverse\n     * Usage: list.reverse();\n     * ----------------------\n     * Reverses the order of the elements in this list.\n     * For example, if the list stores {1, 3, 4, 9}, changes it to store {9, 4, 3, 1}.\n     */\n    void reverse();\n\n    /*\n     * Method: set\n     * Usage: list.set(index, value);\n     * ------------------------------\n     * Replaces the element at the specified index in this LinkedList with\n     * a new value.  The previous value at that index is overwritten.\n     * This method signals an error if the index is not in the list range.\n     *\n     * The client should be mindful that unlike with a vector, this operation\n     * is O(N) for linked lists because it must traverse the list to reach\n     * the given index.\n     */\n    void set(int index, const ValueType& value);\n\n    /*\n     * Method: shuffle\n     * Usage: list.shuffle();\n     * ----------------------\n     * Rearranges the order of the elements in this list into a random order.\n     */\n    void shuffle();\n\n    /*\n     * Method: size\n     * Usage: int nElems = list.size();\n     * --------------------------------\n     * Returns the number of elements in this LinkedList.\n     */\n    int size() const;\n\n    /*\n     * Method: sort\n     * Usage: list.sort();\n     * -------------------\n     * Rearranges the order of the elements in this list into sorted order.\n     * For example, if the list stores {9, 1, 4, 3}, changes it to store {1, 3, 4, 9}.\n     * The ValueType must have an operator < to call this method.\n     */\n    void sort();\n\n    /*\n     * Method: subList\n     * Usage: LinkedList<ValueType> sub = list.subList(start, length);\n     * ---------------------------------------------------------------\n     * Returns a new list containing the given subset range of elements\n     * from this list. The new list is a deep copy, not linked to this one.\n     * Throws an error if the range (start .. start + length) is not contained\n     * within the bounds of this list, or if length is negative.\n     */\n    LinkedList<ValueType> subList(int start, int length) const;\n    \n    /*\n     * Method: toString\n     * Usage: string str = list.toString();\n     * ------------------------------------\n     * Converts the LinkedList to a printable string representation.\n     */\n    std::string toString() const;\n\n    /*\n     * Operator: []\n     * Usage: list[index]\n     * -----------------\n     * Overloads <code>[]</code> to select elements from this LinkedList.\n     * This extension enables the use of traditional array notation to\n     * get or set individual elements.  This method signals an error if\n     * the index is outside the list range.  The file supports two\n     * versions of this operator, one for <code>const</code> LinkedLists and\n     * one for mutable LinkedLists.\n     *\n     * The client should be mindful that this operation is O(N) for linked\n     * lists because it must traverse the list to reach the given index.\n     */\n    ValueType& operator [](int index);\n    const ValueType& operator [](int index) const;\n\n    /*\n     * Operator: +\n     * Usage: v1 + l2\n     * --------------\n     * Concatenates two LinkedLists, or concatenates this linked list with an\n     * initializer list such as {1, 2, 3}.\n     */\n    LinkedList operator +(const LinkedList& l2) const;\n    LinkedList operator +(std::initializer_list<ValueType> list) const;\n\n    /*\n     * Operator: +=\n     * Usage: l1 += l2;\n     *        l1 += value;\n     * -------------------\n     * Adds all of the elements from <code>l2</code> (or the single\n     * specified value) to <code>l1</code>.  As a convenience, the\n     * <code>LinkedList</code> package also overloads the comma operator so\n     * that it is possible to initialize a LinkedList like this:\n     *\n     *<pre>\n     *    LinkedList&lt;int&gt; digits;\n     *    digits += 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;\n     *</pre>\n     * You can also pass an initializer list such as {1, 2, 3}.\n     */\n    LinkedList& operator +=(const LinkedList& l2);\n    LinkedList& operator +=(std::initializer_list<ValueType> list);\n    LinkedList& operator +=(const ValueType& value);\n\n    /*\n     * Comparing LinkedLists for equality.\n     */\n    bool operator ==(const LinkedList& list2) const;\n    bool operator !=(const LinkedList& list2) const;\n\n\n    /*\n     * Operators: <, >, <=, >=\n     * Usage: if (list1 == list2) ...\n     * ...\n     * -------------------------------\n     * Relational operators to compare two lists.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     */\n    bool operator <(const LinkedList& list2) const;\n    bool operator <=(const LinkedList& list2) const;\n    bool operator >(const LinkedList& list2) const;\n    bool operator >=(const LinkedList& list2) const;\n\n    /*\n     * Additional LinkedList operations\n     * --------------------------------\n     * In addition to the methods listed in this interface, the LinkedList\n     * class supports the following operations:\n     *\n     *   - Stream I/O using the << and >> operators\n     *   - Deep copying for the copy constructor and assignment operator\n     *   - Iteration using the range-based for statement or STL iterators\n     *\n     * The iteration forms process the LinkedList in index order.\n     */\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\nprivate:\n    /*\n     * Implementation notes: LinkedList data structure\n     * -------------------------------------------\n     * The elements of the LinkedList are stored in a dynamic array of\n     * the specified element type.  If the space in the array is ever\n     * exhausted, the implementation doubles the array capacity.\n     */\n\n    /* Instance variables */\n    std::list<ValueType> _elements;   // STL linked list as backing storage\n    stanfordcpplib::collections::VersionTracker _version;\n\n    /* Private methods */\n\n    /*\n     * Throws an ErrorException if the given index is not within the range of\n     * [min..max] inclusive.\n     * This is a consolidated error handler for all various LinkedList members that\n     * accept index parameters.\n     * The prefix parameter represents a text string to place at the start of\n     * the error message, generally to help indicate which member threw the error.\n     *\n     * We make prefix a const char* rather than a std::string to avoid having to\n     * construct and then destroy the prefix with each call.\n     */\n    void checkIndex(int index, int min, int max, const char* prefix) const;\n\n    /*\n     * Hidden features\n     * ---------------\n     * The remainder of this file consists of the code required to\n     * support deep copying and iteration.  Including these methods\n     * in the public interface would make that interface more\n     * difficult to understand for the average client.\n     */\n\npublic:\n\n    /*\n     * Operator: ,\n     * -----------\n     * Adds an element to the LinkedList passed as the left-hand operatand.\n     * This form makes it easier to initialize LinkedLists in old versions of C++.\n     */\n    LinkedList& operator ,(const ValueType& value);\n\n    /*\n     * Iterator support.\n     */\n    using iterator = stanfordcpplib::collections::CheckedIterator<typename std::list<ValueType>::iterator>;\n    using const_iterator = stanfordcpplib::collections::CheckedIterator<typename std::list<ValueType>::const_iterator>;\n\n    iterator begin() {\n        return { &_version, _elements.begin(), _elements };\n    }\n    iterator end() {\n        return { &_version, _elements.end(), _elements };\n    }\n    const_iterator begin() const {\n        return { &_version, _elements.begin(), _elements };\n    }\n    const_iterator end() const {\n        return { &_version, _elements.end(), _elements };\n    }\n};\n\n/* Implementation section */\n\ntemplate <typename ValueType>\nLinkedList<ValueType>::LinkedList(const std::list<ValueType>& v)\n        : _elements(v) {\n    // empty\n}\n\ntemplate <typename ValueType>\nLinkedList<ValueType>::LinkedList(std::initializer_list<ValueType> list) : _elements(list) {\n    // empty\n}\n\ntemplate <typename ValueType>\nvoid LinkedList<ValueType>::add(ValueType value) {\n    _elements.push_back(value);\n    _version.update();\n}\n\ntemplate <typename ValueType>\nLinkedList<ValueType>&\nLinkedList<ValueType>::addAll(const LinkedList<ValueType>& list) {\n    for (const ValueType& value : list) {\n        add(value);\n    }\n    _version.update();\n    return *this;\n}\n\ntemplate <typename ValueType>\nLinkedList<ValueType>& LinkedList<ValueType>::addAll(std::initializer_list<ValueType> list) {\n    for (const ValueType& value : list) {\n        add(value);\n    }\n    _version.update();\n    return *this;\n}\n\ntemplate <typename ValueType>\nValueType& LinkedList<ValueType>::back() {\n    return const_cast<ValueType&>(static_cast<const LinkedList &>(*this).back());\n}\n\ntemplate <typename ValueType>\nconst ValueType& LinkedList<ValueType>::back() const {\n    if (isEmpty()) {\n        error(\"LinkedList::back: list is empty\");\n    }\n    return _elements.back();\n}\n\ntemplate <typename ValueType>\nvoid LinkedList<ValueType>::clear() {\n    _elements.clear();\n    _version.update();\n}\n\ntemplate <typename ValueType>\nbool LinkedList<ValueType>::contains(const ValueType& value) const {\n    return indexOf(value) >= 0;\n}\n\ntemplate <typename ValueType>\nbool LinkedList<ValueType>::equals(const LinkedList<ValueType>& list2) const {\n    return _elements == list2._elements;\n}\n\ntemplate <typename ValueType>\nValueType& LinkedList<ValueType>::front() {\n    return const_cast<ValueType&>(static_cast<const LinkedList &>(*this).front());\n}\n\ntemplate <typename ValueType>\nconst ValueType& LinkedList<ValueType>::front() const {\n    if (isEmpty()) {\n        error(\"LinkedList::front: list is empty\");\n    }\n    return _elements.front();\n}\n\ntemplate <typename ValueType>\nconst ValueType & LinkedList<ValueType>::get(int index) const {\n    checkIndex(index, 0, size()-1, \"get\");\n    return *std::next(_elements.begin(), index);\n}\n\ntemplate <typename ValueType>\nint LinkedList<ValueType>::indexOf(const ValueType& value) const {\n    // loop using iterator to avoid O(N^2) runtime\n    int i = 0;\n    for (const ValueType& element : *this) {\n        if (element == value) {\n            return i;\n        }\n        i++;\n    }\n    return -1;\n}\n\ntemplate <typename ValueType>\nvoid LinkedList<ValueType>::insert(int index, ValueType value) {\n    checkIndex(index, 0, size(), \"insert\");\n    auto itr = _elements.begin();\n    std::advance(itr, index);\n    _elements.insert(itr, value);\n    _version.update();\n}\n\ntemplate <typename ValueType>\nbool LinkedList<ValueType>::isEmpty() const {\n    return _elements.empty();\n}\n\ntemplate <typename ValueType>\nint LinkedList<ValueType>::lastIndexOf(const ValueType& value) const {\n    // loop using iterator to avoid O(N^2) runtime\n    int i = size();\n    auto begin = this->begin();\n    auto itr = this->end();\n    while (itr != begin) {\n        itr--;\n        i--;\n        if (*itr == value) {\n            return i;\n        }\n    }\n    return -1;\n}\n\n/*\n * Implementation notes: mapAll\n * ----------------------------\n * The various versions of the mapAll function apply the function or\n * function object to each element in ascending index order.\n */\ntemplate <typename ValueType>\nvoid LinkedList<ValueType>::mapAll(std::function<void (const ValueType &)> fn) const {\n    for (ValueType element : *this) {\n        fn(element);\n    }\n}\n\ntemplate <typename ValueType>\nValueType LinkedList<ValueType>::pop_back() {\n    if (isEmpty()) {\n        error(\"LinkedList::pop_back: list is empty\");\n    }\n    ValueType back = _elements.back();\n    _elements.pop_back();\n    _version.update();\n    return back;\n}\n\ntemplate <typename ValueType>\nValueType LinkedList<ValueType>::pop_front() {\n    if (isEmpty()) {\n        error(\"LinkedList::pop_front: list is empty\");\n    }\n    ValueType front = _elements.front();\n    _elements.pop_front();\n    _version.update();\n    return front;\n}\n\ntemplate <typename ValueType>\nvoid LinkedList<ValueType>::push_back(const ValueType& value) {\n    _elements.push_back(value);\n    _version.update();\n}\n\ntemplate <typename ValueType>\nvoid LinkedList<ValueType>::push_front(const ValueType& value) {\n    _elements.push_front(value);\n    _version.update();\n}\n\ntemplate <typename ValueType>\nvoid LinkedList<ValueType>::remove(int index) {\n    checkIndex(index, 0, size()-1, \"remove\");\n    auto itr = _elements.begin();\n    advance(itr, index);\n    _elements.erase(itr);\n    _version.update();\n}\n\ntemplate <typename ValueType>\nValueType LinkedList<ValueType>::removeBack() {\n    return pop_back();\n}\n\ntemplate <typename ValueType>\nValueType LinkedList<ValueType>::removeFront() {\n    return pop_front();\n}\n\ntemplate <typename ValueType>\nvoid LinkedList<ValueType>::removeValue(const ValueType& value) {\n    auto itr = std::find(_elements.begin(), _elements.end(), value);\n    if (itr != _elements.end()) {\n        _elements.erase(itr);\n        _version.update();\n    }\n}\n\ntemplate <typename ValueType>\nvoid LinkedList<ValueType>::reverse() {\n    _elements.reverse();\n    _version.update();\n}\n\ntemplate <typename ValueType>\nvoid LinkedList<ValueType>::set(int index, const ValueType & value) {\n    checkIndex(index, 0, size()-1, \"set\");\n    (*this)[index] = value;\n}\n\ntemplate <typename ValueType>\nvoid LinkedList<ValueType>::shuffle() {\n    // actually shuffle a vector to avoid O(N^2) runtime\n    // at the cost of O(N) extra memory usage\n    Vector<ValueType> vec;\n    for (ValueType element : *this) {\n        vec.add(element);\n    }\n    for (int i = 0, length = vec.size(); i < length; i++) {\n        int j = randomInteger(i, length - 1);\n        if (i != j) {\n            std::swap(vec[i], vec[j]);\n        }\n    }\n\n    clear();\n    for (const ValueType& element : vec) {\n        add(element);\n    }\n}\n\ntemplate <typename ValueType>\nint LinkedList<ValueType>::size() const {\n    return _elements.size();\n}\n\n\ntemplate <typename ValueType>\nvoid LinkedList<ValueType>::sort() {\n    // actually sort a vector to avoid O(N^2) runtime\n    // at the cost of O(N) extra memory usage\n    Vector<ValueType> vec;\n    for (ValueType element : *this) {\n        vec.add(element);\n    }\n    std::sort(vec.begin(), vec.end());\n\n    clear();\n    for (const ValueType& element : vec) {\n        add(element);\n    }\n}\n\ntemplate <typename ValueType>\nLinkedList<ValueType> LinkedList<ValueType>::subList(int start, int length) const {\n    checkIndex(start, 0, size(), \"subList\");\n    checkIndex(start + length, 0, size(), \"subList\");\n    if (length < 0) {\n        error(\"LinkedList::subList: length cannot be negative\");\n    }\n    LinkedList<ValueType> result;\n    auto itr = begin();\n    for (int i = 0; i < start; i++) {\n        ++itr;\n    }\n    for (int i = 0; i < length; i++) {\n        result.add(*itr);\n        ++itr;\n    }\n    return result;\n}\n\ntemplate <typename ValueType>\nstd::string LinkedList<ValueType>::toString() const {\n    std::ostringstream os;\n    os << *this;\n    return os.str();\n}\n\n/*\n * Implementation notes: LinkedList selection\n * ------------------------------------------\n * The following code implements traditional array selection using\n * square brackets for the index.\n */\ntemplate <typename ValueType>\nValueType& LinkedList<ValueType>::operator [](int index) {\n    checkIndex(index, 0, size()-1, \"operator []\");\n    auto itr = begin();\n    advance(itr, index);\n    return *itr;\n}\ntemplate <typename ValueType>\nconst ValueType& LinkedList<ValueType>::operator [](int index) const {\n    checkIndex(index, 0, size()-1, \"operator []\");\n    auto itr = begin();\n    advance(itr, index);\n    return *itr;\n}\n\ntemplate <typename ValueType>\nLinkedList<ValueType>\nLinkedList<ValueType>::operator +(const LinkedList& list2) const {\n    LinkedList<ValueType> list = *this;\n    return list.addAll(list2);\n}\n\ntemplate <typename ValueType>\nLinkedList<ValueType> LinkedList<ValueType>::operator +(std::initializer_list<ValueType> list) const {\n    LinkedList<ValueType> result = *this;\n    return result.addAll(list);\n}\n\ntemplate <typename ValueType>\nLinkedList<ValueType>&\nLinkedList<ValueType>::operator +=(const LinkedList& list2) {\n    return addAll(list2);\n}\n\ntemplate <typename ValueType>\nLinkedList<ValueType>& LinkedList<ValueType>::operator +=(std::initializer_list<ValueType> list) {\n    return addAll(list);\n}\n\ntemplate <typename ValueType>\nLinkedList<ValueType>&\nLinkedList<ValueType>::operator +=(const ValueType& value) {\n    add(value);\n    return *this;\n}\n\n/*\n * Implementation notes: relational operators\n * These operators just forward to the underlying STL list.\n */\ntemplate <typename ValueType>\nbool LinkedList<ValueType>::operator ==(const LinkedList& list2) const {\n    return _elements == list2._elements;\n}\n\ntemplate <typename ValueType>\nbool LinkedList<ValueType>::operator !=(const LinkedList& list2) const {\n    return _elements != list2._elements;\n}\n\ntemplate <typename ValueType>\nbool LinkedList<ValueType>::operator <(const LinkedList& list2) const {\n    return _elements < list2._elements;\n}\n\ntemplate <typename ValueType>\nbool LinkedList<ValueType>::operator <=(const LinkedList& list2) const {\n    return _elements <= list2._elements;\n}\n\ntemplate <typename ValueType>\nbool LinkedList<ValueType>::operator >(const LinkedList& list2) const {\n    return _elements > list2._elements;\n}\n\ntemplate <typename ValueType>\nbool LinkedList<ValueType>::operator >=(const LinkedList& list2) const {\n    return this->_elements >= list2._elements;\n}\n\ntemplate <typename ValueType>\nvoid LinkedList<ValueType>::checkIndex(int index, int min, int max, const char* prefix) const {\n    if (index < min || index > max) {\n        std::ostringstream out;\n        out << \"LinkedList::\" << prefix << \": index of \" << index\n            << \" is outside of valid range [\";\n        if (min < max) {\n            out << min << \"..\" << max;\n        } else if (min == max) {\n            out << min;\n        } // else min > max, no range, empty LinkedList\n        out << \"]\";\n        error(out.str());\n    }\n}\n\n/*\n * Implementation notes: The , operator\n * ------------------------------------\n * The comma operator works adding the right operand to the LinkedList and\n * then returning the LinkedList by reference so that it is set for the next\n * value in the chain.\n */\ntemplate <typename ValueType>\nLinkedList<ValueType>&\nLinkedList<ValueType>::operator ,(const ValueType& value) {\n    add(value);\n    return *this;\n}\n\n/*\n * Implementation notes: << and >>\n * -------------------------------\n * The insertion and extraction operators use the template facilities in\n * strlib.h to read and write generic values in a way that treats strings\n * specially.\n */\ntemplate <typename ValueType>\nstd::ostream& operator <<(std::ostream& os, const LinkedList<ValueType>& list) {\n    return stanfordcpplib::collections::writeCollection(os, list);\n}\n\ntemplate <typename ValueType>\nstd::istream& operator >>(std::istream& is, LinkedList<ValueType>& list) {\n    ValueType element;\n    return stanfordcpplib::collections::readCollection(is, list, element, /* descriptor */ \"LinkedList::operator >>\");\n}\n\n/*\n * Template hash function for linked lists.\n * Requires the element type in the LinkedList to have a hashCode function.\n */\ntemplate <typename T>\nint hashCode(const LinkedList<T>& list) {\n    return stanfordcpplib::collections::hashCodeCollection(list);\n}\n\n/*\n * Function: randomElement\n * Usage: element = randomElement(list);\n * -------------------------------------\n * Returns a randomly chosen element of the given list.\n * Throws an error if the list is empty.\n */\ntemplate <typename T>\nconst T& randomElement(const LinkedList<T>& list) {\n    return stanfordcpplib::collections::randomElementIndexed(list);\n}\n\n/*\n * Randomly rearranges the elements of the given list.\n * Because it is slow to arbitrarily access/modify indexes in a linked list,\n * this function uses an auxiliary Vector to assist in its implementation,\n * although doing so increases the memory consumption of the algorithm.\n */\ntemplate <typename T>\nvoid shuffle(LinkedList<T>& list) {\n    list.shuffle();\n}\n\n#endif // _linkedlist_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/collections/map.h",
    "content": "/*\n * File: map.h\n * -----------\n * This file exports the template class <code>Map</code>, which\n * maintains a collection of <i>key</i>-<i>value</i> pairs.\n * \n * @version 2019/04/09\n * - renamed private members with underscore naming scheme for consistency\n * @version 2019/02/04\n * - changed internal implementation to wrap std collections\n * @version 2018/03/19\n * - added constructors that accept a comparison function\n * @version 2018/03/10\n * - added methods front, back\n * @version 2017/10/18\n * - fix compiler warnings\n * @version 2016/12/09\n * - added iterator version checking support\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * @version 2016/09/22\n * - bug fix for operators <, <=, >, >= (was comparing only keys!)\n * @version 2016/08/10\n * - added support for std initializer_list usage, such as\n *   {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}} in constructor, addAll, putAll,\n *   removeAll, retainAll, and operators +, +=, -, -=, *, *=\n * - added addAll method\n * @version 2016/08/04\n * - fixed operator >> to not throw errors\n * @version 2015/10/13\n * - nulled out pointer fields in destructor after deletion to avoid double-free\n * @version 2015/07/05\n * - using global hashing functions rather than global variables\n * - fixed bug where string quotes would not show when map was printed\n * @version 2014/11/13\n * - added comparison operators <, >=, etc.\n * - added add() method as synonym for put()\n * - added template hashCode function\n * @version 2014/10/10\n * - removed usage of __foreach macro\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _map_h\n#define _map_h\n\n#include <cstdlib>\n#include <initializer_list>\n#include <utility>\n#include <type_traits>\n#include <map>\n#include <functional>\n\n#define INTERNAL_INCLUDE 1\n#include \"collections.h\"\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"hashcode.h\"\n#define INTERNAL_INCLUDE 1\n#include \"stack.h\"\n#define INTERNAL_INCLUDE 1\n#include \"vector.h\"\n#undef INTERNAL_INCLUDE\n\n/*\n * Class: Map<KeyType,ValueType>\n * -----------------------------\n * This class maintains an association between <b><i>keys</i></b> and\n * <b><i>values</i></b>.  The types used for keys and values are\n * specified using templates, which makes it possible to use\n * this structure with any data type.\n */\ntemplate <typename KeyType, typename ValueType>\nclass Map {\npublic:\n    /*\n     * Constructor: Map\n     * Usage: Map<KeyType,ValueType> map;\n     * ----------------------------------\n     * Initializes a new empty map that associates keys and values of the\n     * specified types.\n     */\n    Map();\n\n    /*\n     * Constructor: Map\n     * Usage: Map<KeyType,ValueType> map(lessFunc);\n     * --------------------------------------------\n     * Initializes a new empty map that associates keys and values of the\n     * specified types, using the given \"less-than\" comparison function\n     * to order any keys that will be later added to it.\n     * The function can accept the two keys to compare either by value\n     * or by const reference.\n     */\n    Map(std::function<bool (const KeyType&, const KeyType&)> lessFunc);\n\n    /*\n     * Constructor: Map\n     * Usage: Map<ValueType> map {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}};\n     * ---------------------------------------------------------\n     * Initializes a new map that stores the given pairs.\n     * Note that the pairs are stored in key-sorted order internally and not\n     * necessarily the order in which they are written in the initializer list.\n     */\n    Map(std::initializer_list<std::pair<const KeyType, ValueType>> list);\n\n    /*\n     * Constructor: Map\n     * Usage: Map<ValueType> map({{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}, lessFunc);\n     * --------------------------------------------------------------------\n     * Initializes a new empty map that associates keys and values of the\n     * specified types, using the given \"less-than\" comparison function\n     * to order any keys that will be later added to it.\n     * The function can accept the two keys to compare either by value\n     * or by const reference.\n     */\n    Map(std::initializer_list<std::pair<const KeyType, ValueType>> list,\n        std::function<bool (const KeyType&, const KeyType&)> lessFunc);\n\n    /*\n     * Destructor: ~Map\n     * ----------------\n     * Frees any heap storage associated with this map.\n     */\n    virtual ~Map() = default;\n    \n    /*\n     * Method: add\n     * Usage: map.add(key, value);\n     * ---------------------------\n     * Associates <code>key</code> with <code>value</code> in this map.\n     * A synonym for the put method.\n     */\n    void add(const KeyType& key, const ValueType& value);\n\n    /*\n     * Method: addAll\n     * Usage: map.addAll(map2);\n     * ------------------------\n     * Adds all key/value pairs from the given map to this map.\n     * If both maps contain a pair for the same key, the one from map2 will\n     * replace the one from this map.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     * Returns a reference to this map.\n     * Identical in behavior to putAll.\n     */\n    Map& addAll(const Map& map2);\n\n    /*\n     * Method: back\n     * Usage: KeyType value = map.back();\n     * ------------------------------------\n     * Returns the last key in the map in the order established by the\n     * <code>foreach</code> macro.  If the map is empty, generates an error.\n     */\n    KeyType back() const;\n\n    /*\n     * Method: clear\n     * Usage: map.clear();\n     * -------------------\n     * Removes all entries from this map.\n     */\n    void clear();\n    \n    /*\n     * Method: containsKey\n     * Usage: if (map.containsKey(key)) ...\n     * ------------------------------------\n     * Returns <code>true</code> if there is an entry for <code>key</code>\n     * in this map.\n     */\n    bool containsKey(const KeyType& key) const;\n\n    /*\n     * Method: equals\n     * Usage: if (map.equals(map2)) ...\n     * --------------------------------\n     * Returns <code>true</code> if the two maps contain exactly the same\n     * key/value pairs, and <code>false</code> otherwise.\n     */\n    bool equals(const Map& map2) const;\n\n    /*\n     * Method: front\n     * Usage: KeyType value = map.front();\n     * -------------------------------------\n     * Returns the first key in the map in the order established by the\n     * <code>foreach</code> macro.  If the map is empty, generates an error.\n     */\n    KeyType front() const;\n\n    /*\n     * Method: get\n     * Usage: ValueType value = map.get(key);\n     * --------------------------------------\n     * Returns the value associated with <code>key</code> in this map.\n     * If <code>key</code> is not found, <code>get</code> returns the\n     * default value for <code>ValueType</code>.\n     */\n    ValueType get(const KeyType& key) const;\n\n    /*\n     * Method: isEmpty\n     * Usage: if (map.isEmpty()) ...\n     * -----------------------------\n     * Returns <code>true</code> if this map contains no entries.\n     */\n    bool isEmpty() const;\n    \n    /*\n     * Method: keys\n     * Usage: Vector<KeyType> keys = map.keys();\n     * -----------------------------------------\n     * Returns a collection containing all keys in this map.\n     * Note that this implementation makes a deep copy of the keys,\n     * so it is inefficient to call on large maps.\n     */\n    Vector<KeyType> keys() const;\n    \n    /*\n     * Method: mapAll\n     * Usage: map.mapAll(fn);\n     * ----------------------\n     * Iterates through the map entries and calls <code>fn(key, value)</code>\n     * for each one.  The keys are processed in ascending order, as defined\n     * by the comparison function.\n     */\n    void mapAll(std::function<void (const KeyType&, const ValueType&)> fn) const;\n\n    /*\n     * Method: put\n     * Usage: map.put(key, value);\n     * ---------------------------\n     * Associates <code>key</code> with <code>value</code> in this map.\n     * Any previous value associated with <code>key</code> is replaced\n     * by the new value.\n     */\n    void put(const KeyType& key, const ValueType& value);\n\n    /*\n     * Method: putAll\n     * Usage: map.putAll(map2);\n     * ------------------------\n     * Adds all key/value pairs from the given map to this map.\n     * If both maps contain a pair for the same key, the one from map2 will\n     * replace the one from this map.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     * Returns a reference to this map.\n     * Identical in behavior to addAll.\n     */\n    Map& putAll(const Map& map2);\n\n    /*\n     * Method: remove\n     * Usage: map.remove(key);\n     * -----------------------\n     * Removes any entry for <code>key</code> from this map.\n     */\n    void remove(const KeyType& key);\n\n    /*\n     * Method: removeAll\n     * Usage: map.removeAll(map2);\n     * ---------------------------\n     * Removes all key/value pairs from this map that are contained in the given map.\n     * If both maps contain the same key but it maps to different values, that\n     * mapping will not be removed.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     * Returns a reference to this map.\n     */\n    Map& removeAll(const Map& map2);\n\n    /*\n     * Method: retainAll\n     * Usage: map.retainAll(map2);\n     * ---------------------------\n     * Removes all key/value pairs from this map that are not contained in the given map.\n     * If both maps contain the same key but it maps to different values, that\n     * mapping will be removed.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     * Returns a reference to this map.\n     */\n    Map& retainAll(const Map& map2);\n\n    /*\n     * Method: size\n     * Usage: int nEntries = map.size();\n     * ---------------------------------\n     * Returns the number of entries in this map.\n     */\n    int size() const;\n    \n    /*\n     * Method: toString\n     * Usage: string str = map.toString();\n     * -----------------------------------\n     * Converts the map to a printable string representation.\n     */\n    std::string toString() const;\n\n    /*\n     * Method: values\n     * Usage: Vector<ValueType> values = map.values();\n     * -----------------------------------------------\n     * Returns a collection containing all values in this map.\n     * Note that this implementation makes a deep copy of the values,\n     * so it is inefficient to call on large maps.\n     */\n    Vector<ValueType> values() const;\n\n    /*\n     * Operator: []\n     * Usage: map[key]\n     * ---------------\n     * Selects the value associated with <code>key</code>.  This syntax\n     * makes it easy to think of a map as an \"associative array\"\n     * indexed by the key type.  If <code>key</code> is already present\n     * in the map, this function returns a reference to its associated\n     * value.  If key is not present in the map, a new entry is created\n     * whose value is set to the default for the value type.\n     */\n    ValueType& operator [](const KeyType& key);\n    ValueType operator [](const KeyType& key) const;\n\n    /*\n     * Operator: ==\n     * Usage: if (map1 == map2) ...\n     * ----------------------------\n     * Compares two maps for equality.\n     */\n    bool operator ==(const Map& map2) const;\n\n    /*\n     * Operator: !=\n     * Usage: if (map1 != map2) ...\n     * ----------------------------\n     * Compares two maps for inequality.\n     */\n    bool operator !=(const Map& map2) const;\n\n    /*\n     * Operators: <, <=, >, >=\n     * Usage: if (map1 < map2) ...\n     * ---------------------------\n     * Relational operators to compare two maps.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     */\n    bool operator <(const Map& map2) const;\n    bool operator <=(const Map& map2) const;\n    bool operator >(const Map& map2) const;\n    bool operator >=(const Map& map2) const;\n\n    /*\n     * Operator: +\n     * Usage: map1 + map2\n     * ------------------\n     * Returns the union of the two maps, equivalent to a copy of the first map\n     * with addAll called on it passing the second map as a parameter.\n     * If the two maps both contain a mapping for the same key, the mapping\n     * from the second map is favored.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     */\n    Map operator +(const Map& map2) const;\n\n    /*\n     * Operator: +=\n     * Usage: map1 += map2;\n     * --------------------\n     * Adds all key/value pairs from the given map to this map.\n     * Equivalent to calling addAll(map2).\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     */\n    Map& operator +=(const Map& map2);\n\n    /*\n     * Operator: -\n     * Usage: map1 - map2\n     * ------------------\n     * Returns the difference of the two maps, equivalent to a copy of the first map\n     * with removeAll called on it passing the second map as a parameter.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     */\n    Map operator -(const Map& map2) const;\n\n    /*\n     * Operator: -=\n     * Usage: map1 -= map2;\n     * --------------------\n     * Removes all key/value pairs from the given map to this map.\n     * Equivalent to calling removeAll(map2).\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     */\n    Map& operator -=(const Map& map2);\n\n    /*\n     * Operator: *\n     * Usage: map1 * map2\n     * ------------------\n     * Returns the intersection of the two maps, equivalent to a copy of the first map\n     * with retainAll called on it passing the second map as a parameter.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     */\n    Map operator *(const Map& map2) const;\n\n    /*\n     * Operator: *=\n     * Usage: map1 *= map2;\n     * ---------------------\n     * Removes all key/value pairs that are not found in the given map from this map.\n     * Equivalent to calling retainAll(map2).\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     */\n    Map& operator *=(const Map& map2);\n\n    /*\n     * Additional Map operations\n     * -------------------------\n     * In addition to the methods listed in this interface, the Map\n     * class supports the following operations:\n     *\n     *   - Stream I/O using the << and >> operators\n     *   - Deep copying for the copy constructor and assignment operator\n     *   - Iteration using the range-based for statement and STL iterators\n     *\n     * All iteration is guaranteed to proceed in the order established by\n     * the comparison function passed to the constructor, which ordinarily\n     * matches the order of the key type.\n     */\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\nprivate:\n    using MapType = std::map<KeyType, ValueType, std::function<bool(const KeyType&, const KeyType&)>>;\n    MapType _elements;\n    stanfordcpplib::collections::VersionTracker _version;\n\npublic:\n    /*\n     * Hidden features\n     * ---------------\n     * The remainder of this file consists of the code required to\n     * support deep copying and iteration.  Including these methods in\n     * the public portion of the interface would make that interface more\n     * difficult to understand for the average client.\n     */\n\n    using const_iterator = stanfordcpplib::collections::ProjectingIterator<stanfordcpplib::collections::CheckedIterator<typename MapType::const_iterator>>;\n    using iterator = const_iterator;\n\n    const_iterator begin() const;\n    const_iterator end() const;\n};\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType>::Map() : _elements(stanfordcpplib::collections::checkedLess<KeyType>()) {\n    // Handled in initializer\n}\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType>::Map(std::function<bool(const KeyType&, const KeyType&)> lessFunc)\n        : _elements(lessFunc) {\n}\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType>::Map(std::initializer_list<std::pair<const KeyType, ValueType>> list)\n        : _elements(list, stanfordcpplib::collections::checkedLess<KeyType>()) {\n    // Handled in initializer\n}\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType>::Map(std::initializer_list<std::pair<const KeyType, ValueType>> list,\n                             std::function<bool(const KeyType&, const KeyType&)> lessFunc)\n        : _elements(list, lessFunc) {\n}\n\ntemplate <typename KeyType, typename ValueType>\nvoid Map<KeyType, ValueType>::add(const KeyType& key,\n                                  const ValueType& value) {\n    put(key, value);\n}\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType>& Map<KeyType, ValueType>::addAll(const Map& map2) {\n    return putAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nKeyType Map<KeyType, ValueType>::back() const {\n    if (isEmpty()) {\n        error(\"Map::back: map is empty\");\n    }\n    return _elements.rbegin()->first;\n}\n\ntemplate <typename KeyType, typename ValueType>\nvoid Map<KeyType, ValueType>::clear() {\n    _elements.clear();\n    _version.update();\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool Map<KeyType, ValueType>::containsKey(const KeyType& key) const {\n    return !!_elements.count(key);\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool Map<KeyType, ValueType>::equals(const Map<KeyType, ValueType>& map2) const {\n    return stanfordcpplib::collections::equalsMap(*this, map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nKeyType Map<KeyType, ValueType>::front() const {\n    if (isEmpty()) {\n        error(\"Map::front: map is empty\");\n    }\n    return _elements.begin()->first;\n}\n\ntemplate <typename KeyType, typename ValueType>\nValueType Map<KeyType, ValueType>::get(const KeyType& key) const {\n    auto itr = _elements.find(key);\n    return itr == _elements.end()? ValueType() : itr->second;\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool Map<KeyType, ValueType>::isEmpty() const {\n    return _elements.empty();\n}\n\ntemplate <typename KeyType,typename ValueType>\nVector<KeyType> Map<KeyType, ValueType>::keys() const {\n    Vector<KeyType> keyset;\n    for (const auto& entry: _elements) {\n        keyset.add(entry.first);\n    }\n    return keyset;\n}\n\ntemplate <typename KeyType, typename ValueType>\nvoid Map<KeyType, ValueType>::mapAll(std::function<void (const KeyType&, const ValueType&)> fn) const {\n    for (const auto& entry: _elements) {\n        fn(entry.first, entry.second);\n    }\n}\n\ntemplate <typename KeyType, typename ValueType>\nvoid Map<KeyType, ValueType>::put(const KeyType& key,\n                                  const ValueType& value) {\n    int presize = size();\n    _elements[key] = value;\n    if (presize != size()) _version.update();\n}\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType>& Map<KeyType, ValueType>::putAll(const Map& map2) {\n    for (const KeyType& key : map2) {\n        put(key, map2.get(key));\n    }\n    return *this;\n}\n\ntemplate <typename KeyType, typename ValueType>\nvoid Map<KeyType, ValueType>::remove(const KeyType& key) {\n    _elements.erase(key);\n    _version.update();\n}\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType>& Map<KeyType, ValueType>::removeAll(const Map& map2) {\n    for (const KeyType& key : map2) {\n        if (containsKey(key) && get(key) == map2.get(key)) {\n            remove(key);\n        }\n    }\n    return *this;\n}\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType>& Map<KeyType, ValueType>::retainAll(const Map& map2) {\n    Vector<KeyType> toRemove;\n    for (const KeyType& key : *this) {\n        if (!map2.containsKey(key) || get(key) != map2.get(key)) {\n            toRemove.add(key);\n        }\n    }\n    for (const KeyType& key : toRemove) {\n        remove(key);\n    }\n    return *this;\n}\n\ntemplate <typename KeyType, typename ValueType>\nint Map<KeyType, ValueType>::size() const {\n    return _elements.size();\n}\n\ntemplate <typename KeyType, typename ValueType>\nstd::string Map<KeyType, ValueType>::toString() const {\n    std::ostringstream os;\n    os << *this;\n    return os.str();\n}\n\ntemplate <typename KeyType,typename ValueType>\nVector<ValueType> Map<KeyType, ValueType>::values() const {\n    Vector<ValueType> values;\n    for (const auto& entry: _elements) {\n        values.add(entry.second);\n    }\n    return values;\n}\n\ntemplate <typename KeyType, typename ValueType>\nValueType& Map<KeyType, ValueType>::operator [](const KeyType& key) {\n    auto presize = size();\n    auto& result = _elements[key];\n\n    /* If the size was updated, we must have inserted something. */\n    if (presize != size()) _version.update();\n    return result;\n}\n\ntemplate <typename KeyType, typename ValueType>\nValueType Map<KeyType, ValueType>::operator [](const KeyType& key) const {\n    return get(key);\n}\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType> Map<KeyType, ValueType>::operator +(const Map& map2) const {\n    Map<KeyType, ValueType> result = *this;\n    return result.putAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType>& Map<KeyType, ValueType>::operator +=(const Map& map2) {\n    return putAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType> Map<KeyType, ValueType>::operator -(const Map& map2) const {\n    Map<KeyType, ValueType> result = *this;\n    return result.removeAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType>& Map<KeyType, ValueType>::operator -=(const Map& map2) {\n    return removeAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType> Map<KeyType, ValueType>::operator *(const Map& map2) const {\n    Map<KeyType, ValueType> result = *this;\n    return result.retainAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType>& Map<KeyType, ValueType>::operator *=(const Map& map2) {\n    return retainAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool Map<KeyType, ValueType>::operator ==(const Map& map2) const {\n    return equals(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool Map<KeyType, ValueType>::operator !=(const Map& map2) const {\n    return !equals(map2);   // BUGFIX 2016/01/27, thanks to O. Zeng\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool Map<KeyType, ValueType>::operator <(const Map& map2) const {\n    return stanfordcpplib::collections::compareMaps(*this, map2) < 0;\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool Map<KeyType, ValueType>::operator <=(const Map& map2) const {\n    return stanfordcpplib::collections::compareMaps(*this, map2) <= 0;\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool Map<KeyType, ValueType>::operator >(const Map& map2) const {\n    return stanfordcpplib::collections::compareMaps(*this, map2) > 0;\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool Map<KeyType, ValueType>::operator >=(const Map& map2) const {\n    return stanfordcpplib::collections::compareMaps(*this, map2) >= 0;\n}\n\ntemplate <typename KeyType, typename ValueType>\ntypename Map<KeyType, ValueType>::iterator Map<KeyType, ValueType>::begin() const {\n    return iterator({ &_version, _elements.begin(), _elements });\n}\n\ntemplate <typename KeyType, typename ValueType>\ntypename Map<KeyType, ValueType>::iterator Map<KeyType, ValueType>::end() const {\n    return iterator({ &_version, _elements.end(), _elements });\n}\n\n/*\n * Implementation notes: << and >>\n * -------------------------------\n * The insertion and extraction operators use the template facilities in\n * strlib.h to read and write generic values in a way that treats strings\n * specially.\n */\ntemplate <typename KeyType, typename ValueType>\nstd::ostream& operator <<(std::ostream& os,\n                          const Map<KeyType, ValueType>& map) {\n    return stanfordcpplib::collections::writeMap(os, map);\n}\n\ntemplate <typename KeyType, typename ValueType>\nstd::istream& operator >>(std::istream& is, Map<KeyType,ValueType>& map) {\n    KeyType key;\n    ValueType value;\n    return stanfordcpplib::collections::readMap(is, map, key, value, /* descriptor */ std::string(\"Map::operator >>\"));\n}\n\n/*\n * Template hash function for maps.\n * Requires the key and value types in the Map to have a hashCode function.\n */\ntemplate <typename K, typename V>\nint hashCode(const Map<K, V>& map) {\n    return stanfordcpplib::collections::hashCodeMap(map);\n}\n\n/*\n * Function: randomKey\n * Usage: element = randomKey(map);\n * --------------------------------\n * Returns a randomly chosen key of the given map.\n * Throws an error if the map is empty.\n */\ntemplate <typename K, typename V>\nconst K& randomKey(const Map<K, V>& map) {\n    return stanfordcpplib::collections::randomElement(map);\n}\n\n#endif // _map_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/collections/pqueue.h",
    "content": "/*\n * This is an alias for priorityqueue.h left in for backward compatibility.\n * See priorityqueue.h for the implementation of the PriorityQueue class.\n *\n * @author Marty Stepp\n * @version 2016/09/22\n * - initial version\n */\n\n#ifndef _pqueue_h\n#define _pqueue_h\n#include \"priorityqueue.h\"\n#endif // _pqueue_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/collections/priorityqueue.h",
    "content": "/*\n * File: priorityqueue.h\n * ---------------------\n * This file exports the <code>PriorityQueue</code> class, a\n * collection in which values are processed in priority order.\n * \n * @version 2019/04/09\n * - renamed private members with underscore naming scheme for consistency\n * @version 2016/11/07\n * - small const-correctness bug fix in front() / back() (courtesy Truman Cranor)\n * @version 2016/10/14\n * - modified floating-point equality tests to use floatingPointEqual function\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * @version 2016/09/22\n * - renamed from pqueue.h to priorityqueue.h (old name left as an alias)\n * @version 2016/08/10\n * - added constructor support for std initializer_list usage, such as\n *   {{1.0, \"a\"}, {2.0, \"b\"}, {3.0, \"c\"}}\n * @version 2016/08/04\n * - fixed operator >> to not throw errors\n * @version 2015/07/05\n * - using global hashing functions rather than global variables\n * @version 2015/06/22\n * - added optional compiler flag SPL_PQUEUE_PRINT_IN_HEAP_ORDER to indicate\n *   that PQ should be printed in heap-internal order rather than sorted order\n * - added optional compiler flag SPL_PQUEUE_ALLOW_HEAP_ACCESS and corresponding\n *   semi-private methods to access value/priority at a given index\n *   (wanted internally for some testing and for practice exam problems;\n *    not meant to be called explicitly by students or most clients)\n * @version 2014/12/04\n * - moved comparison operators <, >=, etc. behind a (default-disabled)\n *   compiler flag because implementation is inefficient\n * @version 2014/11/13\n * - added comparison operators <, >=, etc.\n * - added add() method as synonym for enqueue()\n * - added remove() method as synonym for dequeue()\n * - added template hashCode function\n * @version 2014/10/20\n * - added equals method, ==, != operators\n * @version 2014/10/10\n * - removed usage of __foreach macro\n * 2014/02/01\n * - added changePriority member to raise a given value's priority\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _priorityqueue_h\n#define _priorityqueue_h\n\n#include <cmath>\n#include <initializer_list>\n#include <utility>\n#include <queue>\n#include <algorithm>\n\n#define INTERNAL_INCLUDE 1\n#include \"collections.h\"\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gmath.h\"\n#define INTERNAL_INCLUDE 1\n#include \"hashcode.h\"\n#define INTERNAL_INCLUDE 1\n#include \"vector.h\"\n#undef INTERNAL_INCLUDE\n\n/*\n * Class: PriorityQueue<ValueType>\n * -------------------------------\n * This class models a structure called a <b><i>priority&nbsp;queue</i></b>\n * in which values are processed in order of priority.  As in conventional\n * English usage, lower priority numbers correspond to higher effective\n * priorities, so that a priority 1 item takes precedence over a\n * priority 2 item.\n */\n\ntemplate <typename ValueType>\nclass PriorityQueue {\npublic:\n    /*\n     * Constructor: PriorityQueue\n     * Usage: PriorityQueue<ValueType> pq;\n     * -----------------------------------\n     * Initializes a new priority queue, which is initially empty.\n     */\n    PriorityQueue() = default;\n\n    /*\n     * Constructor: PriorityQueue\n     * Usage: PriorityQueue<ValueType> pq {{1.0, \"a\"}, {2.0, \"b\"}, {3.0, \"c\"}};\n     * -------------------------------------------------------------------------\n     * Initializes a new priority that stores the given pairs.\n     * Note that the pairs are stored in priority order and not\n     * necessarily the order in which they are written in the initializer list.\n     */\n    PriorityQueue(std::initializer_list<std::pair<double, ValueType>> list);\n\n    /*\n     * Destructor: ~PriorityQueue\n     * --------------------------\n     * Frees any heap storage associated with this priority queue.\n     */\n    virtual ~PriorityQueue() = default;\n    \n    /*\n     * Method: add\n     * Usage: pq.add(value, priority);\n     * -------------------------------\n     * A synonym for the enqueue method.\n     */\n    void add(const ValueType& value, double priority);\n    \n    /*\n     * Method: back\n     * Usage: ValueType last = pq.back();\n     * ----------------------------------\n     * Returns the last value in the queue by reference.\n     */\n    ValueType& back();\n    \n    /*\n     * Method: changePriority\n     * Usage: pq.changePriority(value, newPriority);\n     * ---------------------------------------------\n     * Adjusts <code>value</code> in the queue to now have the specified new priority,\n     * which must be at least as urgent (lower number) than that value's previous\n     * priority in the queue.\n     * Throws an error if the element value is not present in the queue, or if the\n     * new priority passed is not at least as urgent as its current priority.\n     */\n    void changePriority(ValueType value, double newPriority);\n\n    /*\n     * Method: clear\n     * Usage: pq.clear();\n     * ------------------\n     * Removes all elements from the priority queue.\n     */\n    void clear();\n    \n    /*\n     * Method: dequeue\n     * Usage: ValueType first = pq.dequeue();\n     * --------------------------------------\n     * Removes and returns the highest priority value.  If multiple\n     * entries in the queue have the same priority, those values are\n     * dequeued in the same order in which they were enqueued.\n     */\n    ValueType dequeue();\n\n    /*\n     * Method: enqueue\n     * Usage: pq.enqueue(value, priority);\n     * -----------------------------------\n     * Adds <code>value</code> to the queue with the specified priority.\n     * Lower priority numbers correspond to higher priorities, which\n     * means that all priority 1 elements are dequeued before any\n     * priority 2 elements.\n     */\n    void enqueue(const ValueType& value, double priority);\n    \n    /*\n     * Method: equals\n     * Usage: if (pq.equals(pq2)) ...\n     * ------------------------------\n     * Compares two priority queues for equality.\n     * Returns <code>true</code> if this queue contains exactly the same\n     * values and priorities as the given other queue.\n     * Identical in behavior to the == operator.\n     */\n    bool equals(const PriorityQueue<ValueType>& pq2) const;\n    \n    /*\n     * Method: front\n     * Usage: ValueType first = pq.front();\n     * ------------------------------------\n     * Returns the first value in the queue by reference.\n     */\n    ValueType& front();\n\n    /*\n     * Method: isEmpty\n     * Usage: if (pq.isEmpty()) ...\n     * ----------------------------\n     * Returns <code>true</code> if the priority queue contains no elements.\n     */\n    bool isEmpty() const;\n    \n    /*\n     * Method: peek\n     * Usage: ValueType first = pq.peek();\n     * -----------------------------------\n     * Returns the value of highest priority in the queue, without\n     * removing it.\n     */\n    ValueType peek() const;\n\n    /*\n     * Method: peekPriority\n     * Usage: double priority = pq.peekPriority();\n     * -------------------------------------------\n     * Returns the priority of the first element in the queue, without\n     * removing it.\n     */\n    double peekPriority() const;\n\n    /*\n     * Method: remove\n     * Usage: ValueType first = pq.remove();\n     * --------------------------------------\n     * A synonym for the dequeue method.\n     */\n    ValueType remove();\n\n    /*\n     * Method: size\n     * Usage: int n = pq.size();\n     * -------------------------\n     * Returns the number of values in the priority queue.\n     */\n    int size() const;\n\n    /*\n     * Method: toString\n     * Usage: string str = pq.toString();\n     * ----------------------------------\n     * Converts the queue to a printable string representation.\n     */\n    std::string toString() const;\n    \n    /*\n     * Operator: <<\n     * Prints the priority queue to the given output stream.\n     */\n    template <typename T>\n    friend std::ostream& operator <<(std::ostream& os, const PriorityQueue<T>& pq);\n    \n    /*\n     * Operators: ==, !=\n     * Usage: if (pq1 == pq2) ...\n     * --------------------------\n     * Relational operators to compare two queues to see if they have the same elements.\n     * The ==, != operators require that the ValueType has a == operator\n     * so that the elements can be tested for equality.\n     */\n    bool operator ==(const PriorityQueue& pq2) const;\n    bool operator !=(const PriorityQueue& pq2) const;\n\n#ifdef SPL_PQUEUE_COMPARISON_OPERATORS_ENABLED\n    /*\n     * Operators: <, <=, >, >=\n     * Usage: if (pq1 < pq2) ...\n     * -------------------------\n     * Relational operators to compare two queues.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     */\n    bool operator <(const PriorityQueue& pq2) const;\n    bool operator <=(const PriorityQueue& pq2) const;\n    bool operator >(const PriorityQueue& pq2) const;\n    bool operator >=(const PriorityQueue& pq2) const;\n#endif // SPL_PQUEUE_COMPARISON_OPERATORS_ENABLED\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\n    /*\n     * Implementation notes: PriorityQueue data structure\n     * --------------------------------------------------\n     * The PriorityQueue class is implemented using a data structure called\n     * a heap.\n     */\nprivate:\n    /* Type used for each heap entry */\n    struct HeapEntry {\n        ValueType value;\n        double priority;\n        long sequence;\n\n        bool operator < (const HeapEntry& rhs) const;\n    };\n\n    /* Instance variables */\n    Vector<HeapEntry> _heap;\n    long _enqueueCount = 0;\n\n#ifdef SPL_PQUEUE_COMPARISON_OPERATORS_ENABLED\n    int pqCompare(const PriorityQueue& other) const;\n#endif // SPL_PQUEUE_COMPARISON_OPERATORS_ENABLED\n\npublic:\n    /* private implentation section */\n\n    template <typename Collection>\n    friend int stanfordcpplib::collections::compare(const Collection& pq1, const Collection& pq2);\n\n#ifdef SPL_PQUEUE_ALLOW_HEAP_ACCESS\n    const ValueType& __getValueFromHeap(int index) const;\n    double __getPriorityFromHeap(int index) const;\n#endif // SPL_PQUEUE_ALLOW_HEAP_ACCESS\n};\n\ntemplate <typename ValueType>\nPriorityQueue<ValueType>::PriorityQueue(\n        std::initializer_list<std::pair<double, ValueType>> list) {\n    for (std::pair<double, ValueType> pair : list) {\n        enqueue(pair.second, pair.first);\n    }\n}\n\ntemplate <typename ValueType>\nvoid PriorityQueue<ValueType>::add(const ValueType& value, double priority) {\n    enqueue(value, priority);\n}\n\ntemplate <typename ValueType>\nValueType & PriorityQueue<ValueType>::back() {\n    if (isEmpty()) {\n        error(\"PriorityQueue::back: Attempting to read back of an empty queue\");\n    }\n    return _heap.back().value;\n}\n\n/*\n * changePriority function added by Marty Stepp.\n * Parts of this implementation are adapted from TrailblazerPQueue.h,\n * which was written by Keith Schwarz.\n */\ntemplate <typename ValueType>\nvoid PriorityQueue<ValueType>::changePriority(ValueType value, double newPriority) {\n    if (std::isnan(newPriority)) {\n        error(\"PriorityQueue::changePriority: Attempted to use NaN as a priority.\");\n    }\n    if (floatingPointEqual(newPriority, -0.0)) {\n        newPriority = 0.0;\n    }\n\n    /* Find the element to change. */\n    auto itr = std::find_if(_heap.begin(), _heap.end(), [&](const HeapEntry& entry) {\n        return entry.value == value;\n    });\n    if (itr == _heap.end()) {\n        error(\"PriorityQueue::changePriority: Element not found in priority queue.\");\n    }\n\n    if (itr->priority < newPriority) {\n        error(\"PriorityQueue::changePriority: new priority cannot be less urgent than current priority.\");\n    }\n    itr->priority = newPriority;\n    std::push_heap(_heap.begin(), itr + 1);\n}\n\ntemplate <typename ValueType>\nvoid PriorityQueue<ValueType>::clear() {\n    _heap.clear();\n    _enqueueCount = 0;   // BUGFIX 2014/10/10: was previously using garbage unassigned value\n}\n\n/*\n * Implementation notes: dequeue, peek, peekPriority\n * -------------------------------------------------\n * These methods must check for an empty queue and report an error\n * if there is no first element.\n */\ntemplate <typename ValueType>\nValueType PriorityQueue<ValueType>::dequeue() {\n    if (isEmpty()) {\n        error(\"PriorityQueue::dequeue: Attempting to dequeue an empty queue\");\n    }\n\n    ValueType result = _heap[0].value;\n    std::pop_heap(_heap.begin(), _heap.end());\n    _heap.pop_back();\n    return result;\n}\n\ntemplate <typename ValueType>\nvoid PriorityQueue<ValueType>::enqueue(const ValueType& value, double priority) {\n    if (std::isnan(priority)) {\n        error(\"PriorityQueue::enqueue: Attempted to use NaN as a priority.\");\n    }\n    if (floatingPointEqual(priority, -0.0)) {\n        priority = 0.0;\n    }\n\n    _heap.add({ value, priority, _enqueueCount++ });\n    std::push_heap(_heap.begin(), _heap.end());\n}\n\ntemplate <typename ValueType>\nbool PriorityQueue<ValueType>::equals(const PriorityQueue<ValueType>& pq2) const {\n    // optimization: if literally same pq, stop\n    if (this == &pq2) {\n        return true;\n    }\n    if (size() != pq2.size()) {\n        return false;\n    }\n    PriorityQueue<ValueType> backup1 = *this;\n    PriorityQueue<ValueType> backup2 = pq2;\n    while (!backup1.isEmpty() && !backup2.isEmpty()) {\n        if (!floatingPointEqual(backup1.peekPriority(), backup2.peekPriority())) {\n            return false;\n        }\n        if (backup1.dequeue() != backup2.dequeue()) {\n            return false;\n        }\n    }\n    return backup1.isEmpty() == backup2.isEmpty();\n}\n\ntemplate <typename ValueType>\nValueType& PriorityQueue<ValueType>::front() {\n    if (isEmpty()) {\n        error(\"PriorityQueue::front: Attempting to read front of an empty queue\");\n    }\n    return _heap[0].value;\n}\n\ntemplate <typename ValueType>\nbool PriorityQueue<ValueType>::isEmpty() const {\n    return _heap.size() == 0;\n}\n\ntemplate <typename ValueType>\nValueType PriorityQueue<ValueType>::peek() const {\n    if (isEmpty()) {\n        error(\"PriorityQueue::peek: Attempting to peek at an empty queue\");\n    }\n    return _heap.front().value;\n}\n\ntemplate <typename ValueType>\ndouble PriorityQueue<ValueType>::peekPriority() const {\n    if (isEmpty()) {\n        error(\"PriorityQueue::peekPriority: Attempting to peek at an empty queue\");\n    }\n    return _heap.get(0).priority;\n}\n\ntemplate <typename ValueType>\nValueType PriorityQueue<ValueType>::remove() {\n    return dequeue();\n}\n\ntemplate <typename ValueType>\nint PriorityQueue<ValueType>::size() const {\n    return _heap.size();\n}\n\ntemplate <typename ValueType>\nstd::string PriorityQueue<ValueType>::toString() const {\n    std::ostringstream os;\n    os << *this;\n    return os.str();\n}\n\n#ifdef SPL_PQUEUE_COMPARISON_OPERATORS_ENABLED\n/*\n * Implementation note: Due to the complexity and unpredictable heap ordering of the elements,\n * this function sadly makes a deep copy of both PQs for comparing.\n * Therefore it is recommended not to use PQs in a context where <, <=, etc. are being\n * called on them frequently.\n */\ntemplate <typename ValueType>\nint PriorityQueue<ValueType>::pqCompare(const PriorityQueue& pq2) const {\n    if (this == &pq2) {\n        return 0;\n    }\n    PriorityQueue<ValueType> backup1 = *this;\n    PriorityQueue<ValueType> backup2 = pq2;\n    while (!backup1.isEmpty() && !backup2.isEmpty()) {\n        if (backup1.peek() < backup2.peek()) {\n            return -1;\n        } else if (backup2.peek() < backup1.peek()) {\n            return 1;\n        }\n        \n        double pri1 = backup1.peekPriority();\n        double pri2 = backup2.peekPriority();\n        if (pri1 < pri2) {\n            return -1;\n        } else if (pri2 < pri1) {\n            return 1;\n        }\n        \n        backup1.dequeue();\n        backup2.dequeue();\n    }\n    if (backup1.size() < backup2.size()) {\n        return -1;\n    } else if (backup2.size() < backup1.size()) {\n        return 1;\n    } else {\n        return 0;\n    }\n}\n#endif // SPL_PQUEUE_COMPARISON_OPERATORS_ENABLED\n\n/*\n * Comparison function for heap entries. The comparison is lexicographic, first by\n * priority, then by sequence number.\n *\n * Because std::push_heap and std::pop_heap try creating a max-heap whereas we want\n * a min-heap, the priority comparisons are reversed.\n */\ntemplate <typename ValueType>\nbool PriorityQueue<ValueType>::HeapEntry::operator < (const HeapEntry& rhs) const {\n    if (priority > rhs.priority) return true;\n    if (rhs.priority > priority) return false;\n\n    return sequence < rhs.sequence;\n}\n\ntemplate <typename ValueType>\nbool PriorityQueue<ValueType>::operator ==(const PriorityQueue& pq2) const {\n    return equals(pq2);\n}\n\ntemplate <typename ValueType>\nbool PriorityQueue<ValueType>::operator !=(const PriorityQueue& pq2) const {\n    return !equals(pq2);\n}\n\n#ifdef SPL_PQUEUE_COMPARISON_OPERATORS_ENABLED\ntemplate <typename ValueType>\nbool PriorityQueue<ValueType>::operator <(const PriorityQueue& pq2) const {\n    return pqCompare(pq2) < 0;\n}\n\ntemplate <typename ValueType>\nbool PriorityQueue<ValueType>::operator <=(const PriorityQueue& pq2) const {\n    return pqCompare(pq2) <= 0;\n}\n\ntemplate <typename ValueType>\nbool PriorityQueue<ValueType>::operator >(const PriorityQueue& pq2) const {\n    return pqCompare(pq2) > 0;\n}\n\ntemplate <typename ValueType>\nbool PriorityQueue<ValueType>::operator >=(const PriorityQueue& pq2) const {\n    return pqCompare(pq2) >= 0;\n}\n#endif // SPL_PQUEUE_COMPARISON_OPERATORS_ENABLED\n\n/*\n * Template hash function for priority queues.\n * Requires the element type in the priority queue to have a hashCode function.\n */\ntemplate <typename T>\nint hashCode(const PriorityQueue<T>& pq) {\n    // (slow, memory-inefficient) implementation: copy pq, dequeue all, and hash together\n    PriorityQueue<T> backup = pq;\n    int code = hashSeed();\n    while (!backup.isEmpty()) {\n        code = hashMultiplier() * code + hashCode(backup.peek());\n        code = hashMultiplier() * code + hashCode(backup.peekPriority());\n        backup.dequeue();\n    }\n    return int(code & hashMask());\n}\n\n#ifdef SPL_PQUEUE_ALLOW_HEAP_ACCESS\ntemplate <typename ValueType>\nconst ValueType& PriorityQueue<ValueType>::__getValueFromHeap(int index) const {\n    return _heap[index].value;\n}\n\ntemplate <typename ValueType>\ndouble PriorityQueue<ValueType>::__getPriorityFromHeap(int index) const {\n    return _heap[index].priority;\n}\n#endif // SPL_PQUEUE_ALLOW_HEAP_ACCESS\n\ntemplate <typename ValueType>\nstd::ostream& operator <<(std::ostream& os,\n                          const PriorityQueue<ValueType>& pq) {\n    os << \"{\";\n\n#ifdef SPL_PQUEUE_PRINT_IN_HEAP_ORDER\n    // faster implementation: print in heap order\n    // (only downside: doesn't print in 'sorted' priority order,\n    //  which might confuse student client)\n    for (int i = 0, len = pq.size(); i < len; i++) {\n        if (i > 0) {\n            os << \", \";\n        }\n        os << pq._heap[i].priority << \":\";\n        writeGenericValue(os, pq._heap[i].value, /* forceQuotes */ true);\n    }\n#else // SPL_PQUEUE_PRINT_IN_HEAP_ORDER\n    // (default) slow, memory-inefficient implementation: copy pq and print\n    PriorityQueue<ValueType> copy = pq;\n    for (int i = 0, len = pq.size(); i < len; i++) {\n        if (i > 0) {\n            os << \", \";\n        }\n        os << copy.peekPriority() << \":\";\n        writeGenericValue(os, copy.dequeue(), /* forceQuotes */ true);\n    }\n#endif // SPL_PQUEUE_PRINT_IN_HEAP_ORDER\n    return os << \"}\";\n}\n\ntemplate <typename ValueType>\nstd::istream& operator >>(std::istream& is, PriorityQueue<ValueType>& pq) {\n    char ch = '\\0';\n    is >> ch;\n    if (ch != '{') {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n        error(\"PriorityQueue::operator >>: Missing {\");\n#endif\n        is.setstate(std::ios_base::failbit);\n        return is;\n    }\n    pq.clear();\n    is >> ch;\n    if (ch != '}') {\n        is.unget();\n        while (true) {\n            double priority = 0.0;\n            is >> priority >> ch;\n            if (ch != ':') {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n                error(\"PriorityQueue::operator >>: Missing colon after priority\");\n#endif\n                is.setstate(std::ios_base::failbit);\n                return is;\n            }\n            ValueType value;\n            if (!readGenericValue(is, value)) {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n                error(\"PriorityQueue::operator >>: parse error\");\n#endif\n                return is;\n            }\n            pq.enqueue(value, priority);\n            is >> ch;\n            if (ch == '}') {\n                break;\n            }\n            if (ch != ',') {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n                error(std::string(\"PriorityQueue::operator >>: Unexpected character \") + ch);\n#endif\n                is.setstate(std::ios_base::failbit);\n                return is;\n            }\n        }\n    }\n    return is;\n}\n\n#endif // _priorityqueue_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/collections/queue.h",
    "content": "/*\n * File: queue.h\n * -------------\n * This file exports the <code>Queue</code> class, a collection\n * in which values are ordinarily processed in a first-in/first-out\n * (FIFO) order.\n * \n * @version 2019/04/09\n * - renamed private members with underscore naming scheme for consistency\n * @version 2019/02/04\n * - changed internal implementation to wrap std collections\n * @version 2018/01/23\n * - fixed bad reference bug on queue.enqueue(queue.peek())\n * @version 2017/11/14\n * - added iterator version checking support\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * - added iterators begin(), end()\n * @version 2016/09/22\n * - optimized equals, ==, != to avoid deep-copy\n * @version 2016/08/10\n * - added constructor support for std initializer_list usage, such as {1, 2, 3}\n * @version 2016/08/04\n * - fixed operator >> to not throw errors\n * @version 2015/07/05\n * - using global hashing functions rather than global variables\n * @version 2014/11/13\n * - added comparison operators ==, !=, <, etc.\n * - added add() method as synonym for enqueue()\n * - added remove() method as synonym for dequeue()\n * - added template hashCode function\n * - optimized some functions (operator <<, toStlQueue) to avoid making unneeded deep copy\n * @version 2014/10/10\n * - removed dependency on 'using namespace' statement\n * - removed usage of __foreach macro\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _queue_h\n#define _queue_h\n\n#include <initializer_list>\n\n#define INTERNAL_INCLUDE 1\n#include \"collections.h\"\n#define INTERNAL_INCLUDE 1\n#include \"deque.h\"\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"hashcode.h\"\n#define INTERNAL_INCLUDE 1\n#include \"vector.h\"\n#undef INTERNAL_INCLUDE\n\n/*\n * Class: Queue<ValueType>\n * -----------------------\n * This class models a linear structure called a <b><i>queue</i></b>\n * in which values are added at one end and removed from the other.\n * This discipline gives rise to a first-in/first-out behavior (FIFO)\n * that is the defining feature of queues.\n */\ntemplate <typename ValueType>\nclass Queue {\npublic:\n    /*\n     * Constructor: Queue\n     * Usage: Queue<ValueType> queue;\n     * ------------------------------\n     * Initializes a new empty queue.\n     */\n    Queue() = default;\n\n    /*\n     * Constructor: Queue\n     * Usage: Queue<ValueType> queue {1, 2, 3};\n     * ----------------------------------------\n     * Initializes a new queue that stores the given elements from front-back.\n     */\n    Queue(std::initializer_list<ValueType> list);\n\n    /*\n     * Destructor: ~Queue\n     * ------------------\n     * Frees any heap storage associated with this queue.\n     */\n    virtual ~Queue() = default;\n    \n    /*\n     * Method: add\n     * Usage: queue.add(value);\n     * ------------------------\n     * Adds <code>value</code> to the end of the queue.\n     * A synonym for the enqueue method.\n     */\n    void add(const ValueType& value);\n\n    /*\n     * Method: back\n     * Usage: ValueType last = queue.back();\n     * -------------------------------------\n     * Returns the last value in the queue by reference.\n     */\n    const ValueType& back() const;\n\n    /*\n     * Method: clear\n     * Usage: queue.clear();\n     * ---------------------\n     * Removes all elements from the queue.\n     */\n    void clear();\n    \n    /*\n     * Method: dequeue\n     * Usage: ValueType first = queue.dequeue();\n     * -----------------------------------------\n     * Removes and returns the first item in the queue.\n     */\n    ValueType dequeue();\n\n    /*\n     * Method: enqueue\n     * Usage: queue.enqueue(value);\n     * ----------------------------\n     * Adds <code>value</code> to the end of the queue.\n     */\n    void enqueue(const ValueType& value);\n    \n    /*\n     * Method: equals\n     * Usage: if (queue.equals(queue2)) ...\n     * ------------------------------------\n     * Compares two queues for equality.\n     * Returns <code>true</code> if this queue contains exactly the same\n     * values as the given other queue.\n     * Identical in behavior to the == operator.\n     */\n    bool equals(const Queue<ValueType>& queue2) const;\n    \n    /*\n     * Method: front\n     * Usage: ValueType first = queue.front();\n     * ---------------------------------------\n     * Returns the first value in the queue by reference.\n     */\n    const ValueType& front() const;\n\n    /*\n     * Method: isEmpty\n     * Usage: if (queue.isEmpty()) ...\n     * -------------------------------\n     * Returns <code>true</code> if the queue contains no elements.\n     */\n    bool isEmpty() const;\n    \n    /*\n     * Method: peek\n     * Usage: ValueType first = queue.peek();\n     * --------------------------------------\n     * Returns the first value in the queue, without removing it.  For\n     * compatibility with the STL classes, this method is also exported\n     * under the name <code>front</code>, in which case it returns the\n     * value by reference.\n     */\n    const ValueType& peek() const;\n\n    /*\n     * Method: remove\n     * Usage: ValueType first = queue.remove();\n     * ----------------------------------------\n     * Removes and returns the first item in the queue.\n     * A synonym for the dequeue method.\n     */\n    ValueType remove();\n\n    /*\n     * Method: size\n     * Usage: int n = queue.size();\n     * ----------------------------\n     * Returns the number of values in the queue.\n     */\n    int size() const;\n\n    /*\n     * Method: toString\n     * Usage: string str = queue.toString();\n     * -------------------------------------\n     * Converts the queue to a printable string representation.\n     */\n    std::string toString() const;\n\n    /*\n     * Operator: ==\n     * Usage: queue1 == queue2\n     * -------------------\n     * Returns <code>true</code> if <code>queue1</code> and <code>queue2</code>\n     * contain the same elements.\n     */\n    bool operator ==(const Queue& queue2) const;\n\n    /*\n     * Operator: !=\n     * Usage: queue1 != queue2\n     * -------------------\n     * Returns <code>true</code> if <code>queue1</code> and <code>queue2</code>\n     * do not contain the same elements.\n     */\n    bool operator !=(const Queue& queue2) const;\n\n    /*\n     * Operators: <, >, <=, >=\n     * Usage: queue1 < queue2 ...\n     * --------------------------\n     * Relational operators to compare two queues.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     */\n    bool operator <(const Queue& queue2) const;\n    bool operator <=(const Queue& queue2) const;\n    bool operator >(const Queue& queue2) const;\n    bool operator >=(const Queue& queue2) const;\n\n    template <typename T>\n    friend int hashCode(const Queue<T>& s);\n    \n    template <typename T>\n    friend std::ostream& operator <<(std::ostream& os, const Queue<T>& queue);\n    \n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\nprivate:\n    /* Instance variables */\n    Deque<ValueType> _elements;\n};\n\ntemplate <typename ValueType>\nQueue<ValueType>::Queue(std::initializer_list<ValueType> list) : _elements(list) {\n    // empty\n}\n\ntemplate <typename ValueType>\nvoid Queue<ValueType>::add(const ValueType& value) {\n    enqueue(value);\n}\n\ntemplate <typename ValueType>\nconst ValueType& Queue<ValueType>::back() const {\n    if (isEmpty()) {\n        error(\"Queue::back: Attempting to read back of an empty queue\");\n    }\n    return _elements.back();\n}\n\ntemplate <typename ValueType>\nvoid Queue<ValueType>::clear() {\n    _elements.clear();\n}\n\n/*\n * Implementation notes: dequeue, peek\n * -----------------------------------\n * These methods must check for an empty queue and report an error\n * if there is no first element.\n */\ntemplate <typename ValueType>\nValueType Queue<ValueType>::dequeue() {\n    if (isEmpty()) {\n        error(\"Queue::dequeue: Attempting to dequeue an empty queue\");\n    }\n    return _elements.dequeueFront();\n}\n\ntemplate <typename ValueType>\nvoid Queue<ValueType>::enqueue(const ValueType& value) {\n    _elements.enqueueBack(value);\n}\n\ntemplate <typename ValueType>\nbool Queue<ValueType>::equals(const Queue<ValueType>& queue2) const {\n    return *this == queue2;\n}\n\ntemplate <typename ValueType>\nconst ValueType& Queue<ValueType>::front() const {\n    if (isEmpty()) {\n        error(\"Queue::front: Attempting to read front of an empty queue\");\n    }\n    return _elements.front();\n}\n\ntemplate <typename ValueType>\nbool Queue<ValueType>::isEmpty() const {\n    return _elements.isEmpty();\n}\n\ntemplate <typename ValueType>\nconst ValueType& Queue<ValueType>::peek() const {\n    return front();\n}\n\ntemplate <typename ValueType>\nValueType Queue<ValueType>::remove() {\n    // this isEmpty check is also done in dequeue(), but we repeat it\n    // here so that the possible error message will be more descriptive.\n    if (isEmpty()) {\n        error(\"Queue::remove: Attempting to remove from an empty queue\");\n    }\n    return dequeue();\n}\n\ntemplate <typename ValueType>\nint Queue<ValueType>::size() const {\n    return _elements.size();\n}\n\ntemplate <typename ValueType>\nstd::string Queue<ValueType>::toString() const {\n    std::ostringstream os;\n    os << *this;\n    return os.str();\n}\n\ntemplate <typename ValueType>\nbool Queue<ValueType>::operator ==(const Queue& queue2) const {\n    return _elements == queue2._elements;\n}\n\ntemplate <typename ValueType>\nbool Queue<ValueType>::operator !=(const Queue& queue2) const {\n    return _elements != queue2._elements;\n}\n\ntemplate <typename ValueType>\nbool Queue<ValueType>::operator <(const Queue& queue2) const {\n    return _elements < queue2._elements;\n}\n\ntemplate <typename ValueType>\nbool Queue<ValueType>::operator <=(const Queue& queue2) const {\n    return _elements <= queue2._elements;\n}\n\ntemplate <typename ValueType>\nbool Queue<ValueType>::operator >(const Queue& queue2) const {\n    return _elements > queue2._elements;\n}\n\ntemplate <typename ValueType>\nbool Queue<ValueType>::operator >=(const Queue& queue2) const {\n    return _elements >= queue2._elements;\n}\n\ntemplate <typename ValueType>\nstd::ostream& operator <<(std::ostream& os, const Queue<ValueType>& queue) {\n    return os << queue._elements;\n}\n\ntemplate <typename ValueType>\nstd::istream& operator >>(std::istream& is, Queue<ValueType>& queue) {\n    ValueType element;\n    return stanfordcpplib::collections::readCollection(is, queue, queue._elements, /* descriptor */ \"Queue::operator >>\");\n}\n\n/*\n * Template hash function for queues.\n * Requires the element type in the queue to have a hashCode function.\n */\ntemplate <typename T>\nint hashCode(const Queue<T>& q) {\n    return hashCode(q._elements);\n}\n\n#endif // _queue_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/collections/set.h",
    "content": "/*\n * File: set.h\n * -----------\n * This file exports the <code>Set</code> class, which implements a\n * collection for storing a set of distinct elements.\n * \n * @version 2019/02/04\n * - changed internal implementation to wrap std collections\n * @version 2018/03/19\n * - added constructors that accept a comparison function\n * @version 2018/03/10\n * - added methods front, back\n * @version 2016/12/09\n * - added iterator version checking support (implicitly via Map)\n * @version 2016/12/06\n * - slight speedup bug fix in equals() method\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * @version 2016/08/11\n * - added containsAll, isSupersetOf methods\n * @version 2016/08/10\n * - added support for std initializer_list usage, such as {1, 2, 3}\n *   in constructor, addAll, containsAll, isSubsetOf, isSupersetOf, removeAll,\n *   retainAll, and operators +, +=, -, -=, *, *=\n * @version 2016/08/04\n * - fixed operator >> to not throw errors\n * @version 2015/07/05\n * - using global hashing functions rather than global variables\n * @version 2014/11/13\n * - added comparison operators <, >=, etc.\n * - added template hashCode function\n * @version 2014/10/10\n * - removed use of __foreach macro\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _set_h\n#define _set_h\n\n#include <initializer_list>\n#include <iostream>\n#include <set>\n#include <functional>\n#include <type_traits>\n\n#define INTERNAL_INCLUDE 1\n#include \"collections.h\"\n#define INTERNAL_INCLUDE 1\n#include \"map.h\"\n#undef INTERNAL_INCLUDE\n\n/* Traits type for the Set, which wraps an underlying Map. */\nnamespace stanfordcpplib {\n    namespace collections {\n        template <typename T> struct SetTraits {\n            using ValueType = T;\n            using MapType   = Map<T, bool>;\n            static std::string name() {\n                return \"Set\";\n            }\n\n            /* The Set type does allow you to construct the underlying Map by handing\n             * along a std::function.\n             */\n            template <typename Function>\n            static MapType construct(Function comparator) {\n                static_assert(std::is_assignable<std::function<bool(const ValueType&, const ValueType&)>, Function>::value,\n                              \"Oops! Seems like you tried to initialize a Set incorrectly. Click here for details.\");\n                /*\n                 * Hello student! If you are reading this message, it means that you tried to\n                 * initialize a Set improperly. For example, you might have tried to write\n                 * something like this:\n                 *\n                 *     Set<int> mySet = 137; // Oops!\n                 *\n                 * Here, for example, you're trying to assign an int to a Set<int>.\n                 *\n                 * or perhaps you had a function like this one:\n                 *\n                 *     void myFunction(Set<int>& mySet);\n                 *\n                 * and you called it by writing\n                 *\n                 *     myFunction(someSet + someOtherSet); // Oops!\n                 *     myFunction({ });                    // Oops!\n                 *\n                 * In these cases, you're trying to pass a value into a function that takes\n                 * its argument by (non-const) reference. C++ doesn't allow you to do this.\n                 *\n                 * To see where the actual error comes from, look in the list of error messages\n                 * in Qt Creator. You should see a line that says \"required from here\" that\n                 * points somewhere in your code. That's the actual line you wrote that caused\n                 * the problem, so double-click on that error message and see where it takes\n                 * you. Now you know where to look!\n                 *\n                 * Hope this helps!\n                 */\n                return MapType(comparator);\n            }\n\n            /* You can also default-construct it. */\n            static MapType construct() {\n                return {};\n            }\n\n            /* However, you can't pass in any other arguments. */\n            template <typename... Args>\n            static void construct(MapType &, Args&&...) {\n                static_assert(Fail<Args...>::value, \"Oops! Seems like you tried to initialize a Set incorrectly. Click here for details.\");\n\n                /*\n                 * Hello student! If you are reading this message, it means that you tried to\n                 * initialize a Set improperly. For example, you might have tried to write\n                 * something like this:\n                 *\n                 *     Set<int> mySet = 137; // Oops!\n                 *\n                 * Here, for example, you're trying to assign an int to a Set<int>.\n                 *\n                 * or perhaps you had a function like this one:\n                 *\n                 *     void myFunction(Set<int>& mySet);\n                 *\n                 * and you called it by writing\n                 *\n                 *     myFunction(someSet + someOtherSet); // Oops!\n                 *     myFunction({ });                    // Oops!\n                 *\n                 * In these cases, you're trying to pass a value into a function that takes\n                 * its argument by (non-const) reference. C++ doesn't allow you to do this.\n                 *\n                 * To see where the actual error comes from, look in the list of error messages\n                 * in Qt Creator. You should see a line that says \"required from here\" that\n                 * points somewhere in your code. That's the actual line you wrote that caused\n                 * the problem, so double-click on that error message and see where it takes\n                 * you. Now you know where to look!\n                 *\n                 * Hope this helps!\n                 */\n                error(\"static_assert failed?\");\n            }\n        };\n    }\n}\n\n/*\n * A set of elements stored in sorted order. The elements must be comparable\n * using the < operator in order to be stored here.\n */\ntemplate <typename ValueType>\n    using Set = stanfordcpplib::collections::GenericSet<stanfordcpplib::collections::SetTraits<ValueType>>;\n\n#endif // _set_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/collections/shuffle.h",
    "content": "/*\n * File: shuffle.h\n * ---------------\n * This file contains implementation of a shuffling function that operates on\n * a 1-D and 2-D array, Vector, or Grid of any type.\n *\n * @author Marty Stepp\n * @since 2014/02/01\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _shuffle_h\n#define _shuffle_h\n\n#include <string>\n#include <algorithm>\n\n#define INTERNAL_INCLUDE 1\n#include \"random.h\"\n#undef INTERNAL_INCLUDE\n\n/*\n * Randomly rearranges the elements of the given array up to the given length.\n * Precondition: The array pointer points to a valid non-null array in memory,\n * and that array contains at least 'length' elements.\n */\ntemplate <typename T>\nvoid shuffle(T* array, int length) {\n    for (int i = 0; i < length; i++) {\n        int j = randomInteger(i, length - 1);\n        if (i != j) std::swap(array[i], array[j]);\n    }\n}\n\n/*\n * Randomly rearranges the elements of the given 2-D array up to the given\n * number of rows and columns.\n * Precondition: The array pointer points to a valid non-null 2-D array in\n * memory, and that array contains at least the given number of rows/columns.\n */\ntemplate <typename T>\nvoid shuffle(T** array2d, int rows, int cols) {\n    int length = rows * cols;\n    for (int i = 0; i < length; i++) {\n        int j = randomInteger(i, length - 1);\n        if (i != j) {\n            int r1 = i / cols;\n            int c1 = i % cols;\n            int r2 = j / cols;\n            int c2 = j % cols;\n\n            std::swap(array2d[r1][c1], array2d[r2][c2]);\n        }\n    }\n}\n\n/*\n * Randomly rearranges the characters of the given string and returns the\n * rearranged version.\n */\nstd::string shuffle(std::string s);\n\n#endif // _shuffle_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/collections/sparsegrid.h",
    "content": "/*\n * File: sparsegrid.h\n * ------------------\n * This file exports the <code>SparseGrid</code> class, which offers a\n * convenient abstraction for representing a two-dimensional array.\n * Unlike Grid, SparseGrid is optimized for grids in which most of the cells\n * are empty.  It uses far less memory in such cases than a Grid does.\n * If the grid is expected to be mostly full of meaningful data,\n * Grid is recommended for use over SparseGrid.\n * \n * @author Marty Stepp\n * @version 2018/03/12\n * - added overloads that accept GridLocation: get, inBounds, isSet, locations,\n *   set, unset, operator []\n * @version 2018/03/10\n * - added methods front, back, clear\n * @version 2017/11/14\n * - added iterator version checking support\n * @version 2016/10/22\n * - bug fix for size method\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * - added size() method\n * @version 2016/08/10\n * - added constructor support for std initializer_list usage, such as\n *   {{1, 2, 3}, {4, 5, 6}}\n * @version 2016/08/04\n * - fixed operator >> to not throw errors\n * @version 2015/07/05\n * - using global hashing functions rather than global variables\n * @version 2014/11/13\n * - added comparison operators <, >=, etc.\n * - added template hashCode function\n * @version 2014/10/20\n * - added width(), height() methods to be consistent with Grid\n * @version 2014/10/10\n * - removed usage of __foreach macro\n * - made ==, != operators const as they should be\n * - added resize(true) function with ability to retain old contents\n * @since 2014/07/09\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _sparsegrid_h\n#define _sparsegrid_h\n\n#include <initializer_list>\n\n#define INTERNAL_INCLUDE 1\n#include \"collections.h\"\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gridlocation.h\"\n#define INTERNAL_INCLUDE 1\n#include \"hashcode.h\"\n#define INTERNAL_INCLUDE 1\n#include \"map.h\"\n#define INTERNAL_INCLUDE 1\n#include \"random.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"vector.h\"\n#undef INTERNAL_INCLUDE\n\n/*\n * Class: SparseGrid<ValueType>\n * ----------------------------\n * This class stores an indexed, two-dimensional array.\n */\n\ntemplate <typename ValueType>\nclass SparseGrid {\npublic:\n    /* Forward reference */\n    class SparseGridRow;\n    class SparseGridRowConst;\n\n    /*\n     * Constructor: SparseGrid\n     * Usage: SparseGrid<ValueType> grid;\n     *        SparseGrid<ValueType> grid(nRows, nCols);\n     * ------------------------------------------------\n     * Initializes a new grid.  The second form of the constructor is\n     * more common and creates a grid with the specified number of rows\n     * and columns.  Each element of the grid is initialized to the\n     * default value for the type.  The default constructor creates an\n     * empty grid for which the client must call <code>resize</code> to\n     * set the dimensions.\n     * The three-argument constructor also accepts an initial value and\n     * fills every cell of the grid with that value.\n     */\n    SparseGrid();\n    SparseGrid(int _rowCount, int _columnCount);\n    SparseGrid(int _rowCount, int _columnCount, const ValueType& value);\n\n    /*\n     * This constructor uses an initializer list to set up the grid.\n     * Usage: SparseGrid<int> grid {{1, 2, 3}, {4, 5, 6}};\n     */\n    SparseGrid(std::initializer_list<std::initializer_list<ValueType>> list);\n\n    /*\n     * Destructor: ~SparseGrid\n     * -----------------------\n     * Frees any heap storage associated with this grid.\n     */\n    virtual ~SparseGrid();\n\n    /*\n     * Method: back\n     * Usage: ValueType value = grid.back();\n     * -------------------------------------\n     * Returns the last value in the grid in the order established by the\n     * <code>foreach</code> macro.  This is the highest row/col value that has\n     * been explicitly set.\n     * If the grid is empty, generates an error.\n     */\n    ValueType back() const;\n\n    /*\n     * Method: clear\n     * Usage: grid.clear();\n     * --------------------\n     * Sets every value in the grid to its element type's default value.\n     */\n    void clear();\n\n    /*\n     * Method: equals\n     * Usage: if (grid.equals(grid2)) ...\n     * ----------------------------------\n     * Returns <code>true</code> if this grid contains exactly the same\n     * values as the given other grid.\n     * Identical in behavior to the == operator.\n     */\n    bool equals(const SparseGrid<ValueType>& grid) const;\n\n    /*\n     * Method: fill\n     * Usage: grid.fill(value);\n     * ------------------------\n     * Stores the given value in every cell of this grid.\n     */\n    void fill(const ValueType& value);\n\n    /*\n     * Method: front\n     * Usage: ValueType value = grid.front();\n     * --------------------------------------\n     * Returns the first value in the grid in the order established by the\n     * <code>foreach</code> macro.  Typically this is equivalent to grid[0][0].\n     * If the grid is empty, generates an error.\n     */\n    ValueType front() const;\n\n    /*\n     * Method: get\n     * Usage: ValueType value = grid.get(row, col);\n     * --------------------------------------------\n     * Returns the element at the specified <code>row</code>/<code>col</code>\n     * position in this grid.\n     *\n     * If no data was set at the given row/column position, this method returns\n     * a default value for the grid's value type.\n     *\n     * This method signals an error if the <code>row</code> and <code>col</code>\n     * arguments are outside the grid boundaries.\n     */\n    ValueType get(int row, int col);\n    const ValueType& get(int row, int col) const;\n    ValueType get(const GridLocation& loc);\n    const ValueType& get(const GridLocation& loc) const;\n\n    /*\n     * Method: height\n     * Usage: int nRows = grid.height();\n     * ---------------------------------\n     * Returns the grid's height, that is, the number of rows in the grid.\n     */\n    int height() const;\n    \n    /*\n     * Method: inBounds\n     * Usage: if (grid.inBounds(row, col)) ...\n     * ---------------------------------------\n     * Returns <code>true</code> if the specified row and column position\n     * is inside the bounds of the grid.\n     */\n    bool inBounds(int row, int col) const;\n    bool inBounds(const GridLocation& loc) const;\n\n    /*\n     * Method: isEmpty\n     * Usage: if (grid.isEmpty()) ...\n     * ---------------------------------------\n     * Returns <code>true</code> if the specified grid has 0 rows and/or columns,\n     * or if none of the individual cell values has been set yet.\n     */\n    bool isEmpty() const;\n\n    /*\n     * Method: isSet\n     * Usage: if (grid.isSet(row, col)) ...\n     * ---------------------------------------\n     * Returns <code>true</code> if the specified row and column position\n     * stores meaningful data; in other words, if it has had a value set\n     * there by a previous call to fill, set, [], etc.\n     */\n    bool isSet(int row, int col) const;\n    bool isSet(const GridLocation& loc) const;\n\n    /*\n     * Method: locations\n     * Usage: for (GridLocation loc : grid.locations()) ...\n     * ----------------------------------------------------\n     * Returns a range of (row,col) locations found in this grid.\n     * This allows a nice abstraction for looping over the 2D grid range\n     * of indexes using a single for loop.\n     * By default the locations are arranged in row-major order,\n     * but if you pass the rowMajor parameter of false, the locations will be\n     * returned in column-major order instead.\n     */\n    GridLocationRange locations(bool rowMajor = true) const;\n\n    /*\n     * Method: mapAll\n     * Usage: grid.mapAll(fn);\n     * -----------------------\n     * Calls the specified function on each element of the grid.  The\n     * elements are processed in <b><i>row-major order,</i></b> in which\n     * all the elements of row 0 are processed, followed by the elements\n     * in row 1, and so on.\n     */\n    void mapAll(void (*fn)(ValueType value)) const;\n    void mapAll(void (*fn)(const ValueType& value)) const;\n\n    template <typename FunctorType>\n    void mapAll(FunctorType fn) const;\n\n    /*\n     * Method: numCols\n     * Usage: int nCols = grid.numCols();\n     * ----------------------------------\n     * Returns the number of columns in the grid.\n     */\n    int numCols() const;\n\n    /*\n     * Method: numRows\n     * Usage: int nRows = grid.numRows();\n     * ----------------------------------\n     * Returns the number of rows in the grid.\n     */\n    int numRows() const;\n\n    /*\n     * Method: resize\n     * Usage: grid.resize(nRows, nCols);\n     * ---------------------------------\n     * Reinitializes the grid to have the specified number of rows\n     * and columns.  If the 'retain' parameter is true,\n     * the previous grid contents are retained as much as possible.\n     * If 'retain' is not passed or is false, any previous grid contents\n     * are discarded.\n     */\n    void resize(int _rowCount, int _columnCount, bool retain = false);\n\n    /*\n     * Method: set\n     * Usage: grid.set(row, col, value);\n     * ---------------------------------\n     * Replaces the element at the specified <code>row</code>/<code>col</code>\n     * location in this grid with a new value.  This method signals an error\n     * if the <code>row</code> and <code>col</code> arguments are outside\n     * the grid boundaries.\n     */\n    void set(int row, int col, const ValueType& value);\n    void set(const GridLocation& loc, const ValueType& value);\n\n    /*\n     * Method: size\n     * Usage: int size = grid.size();\n     * ------------------------------\n     * Returns the total number of elements that have been set in the grid.\n     * Note that this may not be equal to the number of rows times the number of\n     * columns, because not every index may have been set.\n     */\n    int size() const;\n\n    /*\n     * Method: toString\n     * Usage: string str = grid.toString();\n     * ------------------------------------\n     * Converts the grid to a printable string representation.\n     * Unlike the representation of a Grid, this one displays only the\n     * cells in which data has been explicitly set, such as:\n     * \"{0:{2:88}, 1:{3:42}}, 3 x 4\"\n     */\n    std::string toString() const;\n\n    /*\n     * Method: toString2D\n     * Usage: string str = grid.toString2D();\n     * --------------------------------------\n     * Converts the grid to a printable string representation.\n     * The string returned is a 2-dimensional representation such as:\n     * \"{{1, 2, 3},\\n\n     *   {4, 5, 6},\\n\n     *   {7, 8, 9}}\"\n     */\n    std::string toString2D(\n            std::string rowStart = \"{\",\n            std::string rowEnd = \"}\",\n            std::string colSeparator = \", \",\n            std::string rowSeparator = \",\\n \") const;\n\n    /*\n     * Method: unset\n     * Usage: grid.unset(row, col, value);\n     * -----------------------------------\n     * Replaces the element at the specified <code>row</code>/<code>col</code>\n     * location in this grid with an empty default value.\n     * If the element at the specified row and column was not set, has no effect.\n     * This method signals an error if the <code>row</code> and <code>col</code>\n     * arguments are outside the grid boundaries.\n     */\n    void unset(int row, int col);\n    void unset(const GridLocation& loc);\n\n    /*\n     * Method: width\n     * Usage: int nCols = grid.width();\n     * --------------------------------\n     * Returns the grid's width, that is, the number of columns in the grid.\n     */\n    int width() const;\n\n    /*\n     * Operator: []\n     * Usage:  grid[row][col]\n     * ----------------------\n     * Overloads <code>[]</code> to select elements from this grid.\n     * This extension enables the use of traditional array notation to\n     * get or set individual elements.\n     *\n     * If no data was set at the given row/column position, this method returns\n     * a default value for the grid's value type.\n     *\n     * This method signals an error if the <code>row</code> and <code>col</code>\n     * arguments are outside the grid boundaries.\n     */\n    SparseGridRow operator [](int row);\n    const SparseGridRowConst operator [](int row) const;\n    ValueType& operator [](const GridLocation& loc);\n    const ValueType& operator [](const GridLocation& loc) const;\n\n    /*\n     * Additional SparseGrid operations\n     * --------------------------\n     * In addition to the methods listed in this interface, the SparseGrid\n     * class supports the following operations:\n     *\n     *   - Stream I/O using the << and >> operators\n     *   - Deep copying for the copy constructor and assignment operator\n     *   - Iteration using the range-based for statement and STL iterators\n     *\n     * The iteration forms process the grid in row-major order.\n     */\n\n    /*\n     * Operator: ==\n     * Usage: if (grid1 == grid2) ...\n     * ------------------------------\n     * Compares two grids for equality.\n     */\n    bool operator ==(const SparseGrid& grid2) const;\n\n    /*\n     * Operator: !=\n     * Usage: if (grid1 != grid2) ...\n     * ------------------------------\n     * Compares two grids for inequality.\n     */\n    bool operator !=(const SparseGrid& grid2) const;\n\n    /*\n     * Operators: <, >, <=, >=\n     * Usage: if (grid1 < grid2) ...\n     * -----------------------------\n     * Relational operators to compare two grids.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     */\n    bool operator <(const SparseGrid& grid2) const;\n    bool operator <=(const SparseGrid& grid2) const;\n    bool operator >(const SparseGrid& grid2) const;\n    bool operator >=(const SparseGrid& grid2) const;\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\n    /*\n     * Implementation notes: SparseGrid data structure\n     * -----------------------------------------------\n     * The SparseGrid is internally managed as a dynamic array of elements.\n     * The array itself is one-dimensional, the logical separation into\n     * rows and columns is done by arithmetic computation.  The layout\n     * is in row-major order, which is to say that the entire first row\n     * is laid out contiguously, followed by the entire second row,\n     * and so on.\n     */\n\nprivate:\n    /* Instance variables */\n    Map<int, Map<int, ValueType>> _elements;   // 2D map of the elements\n    int _rowCount;                             // the number of rows in the grid\n    int _columnCount;                          // the number of columns in the grid\n    unsigned int _version = 0;                 // structure version for detecting invalid iterators\n\n    /* Private method prototypes */\n\n    /*\n     * Throws an ErrorException if the given row/col are not within the range of\n     * (0,0) through (rowMax-1,colMax-1) inclusive.\n     * This is a consolidated error handler for all various SparseGrid members that\n     * accept index parameters.\n     * The prefix parameter represents a text string to place at the start of\n     * the error message, generally to help indicate which member threw the error.\n     */\n    void checkIndexes(int row, int col,\n                      int rowMax, int colMax,\n                      std::string prefix) const;\n    int gridCompare(const SparseGrid& grid2) const;\n\n    /*\n     * Hidden features\n     * ---------------\n     * The remainder of this file consists of the code required to\n     * support deep copying and iteration.  Including these methods\n     * in the public interface would make that interface more\n     * difficult to understand for the average client.\n     */\n\n    /*\n     * Deep copying support\n     * --------------------\n     * This copy constructor and operator= are defined to make a\n     * deep copy, making it possible to pass/return grids by value\n     * and assign from one grid to another.  The entire contents of\n     * the grid, including all elements, are copied.  Each grid\n     * element is copied from the original grid to the copy using\n     * assignment (operator=).  Making copies is generally avoided\n     * because of the expense and thus, grids are typically passed\n     * by reference, however, when a copy is needed, these operations\n     * are supported.\n     */\n    void deepCopy(const SparseGrid& grid) {\n        _elements = grid._elements;\n        _rowCount = grid._rowCount;\n        _columnCount = grid._columnCount;\n    }\n\n    template <typename T>\n    friend const T& randomElement(const SparseGrid<T>& grid);\n\n    template <typename T>\n    friend std::ostream& operator <<(std::ostream& os, const SparseGrid<T>& grid);\n\n    template <typename T>\n    friend std::istream& operator >>(std::istream& is, SparseGrid<T>& grid);\n\npublic:\n    SparseGrid& operator =(const SparseGrid& src) {\n        if (this != &src) {\n            deepCopy(src);\n        }\n        return *this;\n    }\n\n    SparseGrid(const SparseGrid& src) {\n        deepCopy(src);\n    }\n\n    /*\n     * Iterator support\n     * ----------------\n     * The classes in the StanfordCPPLib collection implement input\n     * iterators so that they work symmetrically with respect to the\n     * corresponding STL classes.\n     */\n    class iterator : public std::iterator<std::input_iterator_tag, ValueType> {\n    public:\n        iterator(const SparseGrid* gp, int index)\n                : gp(gp),\n                  index(index),\n                  itr_version(gp->version()) {\n            // empty\n        }\n\n        iterator(const iterator& it)\n                : gp(it.gp),\n                  index(it.index),\n                  itr_version(it.itr_version) {\n            // empty\n        }\n\n        iterator& operator ++() {\n            stanfordcpplib::collections::checkVersion(*gp, *this);\n            index++;\n            return *this;\n        }\n\n        iterator operator ++(int) {\n            stanfordcpplib::collections::checkVersion(*gp, *this);\n            iterator copy(*this);\n            operator++();\n            return copy;\n        }\n\n        bool operator ==(const iterator& rhs) {\n            return gp == rhs.gp && index == rhs.index;\n        }\n\n        bool operator !=(const iterator& rhs) {\n            return !(*this == rhs);\n        }\n\n        ValueType operator *() {\n            stanfordcpplib::collections::checkVersion(*gp, *this);\n            int row = index / gp->_columnCount;\n            int col = index % gp->_columnCount;\n            return gp->_elements[row][col];\n        }\n\n        ValueType* operator ->() {\n            stanfordcpplib::collections::checkVersion(*gp, *this);\n            int row = index / gp->_columnCount;\n            int col = index % gp->_columnCount;\n            return &gp->_elements[row][col];\n        }\n\n        unsigned int version() const {\n            return itr_version;\n        }\n\n    private:\n        const SparseGrid* gp;\n        int index;\n        unsigned int itr_version;\n    };\n\n    iterator begin() const {\n        return iterator(this, 0);\n    }\n\n    iterator end() const {\n        return iterator(this, _rowCount * _columnCount);\n    }\n\n    /*\n     * Returns the internal version of this collection.\n     * This is used to check for invalid iterators and issue error messages.\n     */\n    unsigned int version() const;\n\n    /*\n     * Private class: SparseGrid<ValType>::SparseGridRow\n     * -------------------------------------\n     * This section of the code defines a nested class within the SparseGrid template\n     * that makes it possible to use traditional subscripting on SparseGrid values.\n     */\n    class SparseGridRow {\n    public:\n        SparseGridRow() {\n            /* Empty */\n        }\n\n        ValueType& operator [](int col) {\n            _gp->checkIndexes(_row, col, _gp->_rowCount-1, _gp->_columnCount-1, \"operator [][]\");\n            return _gp->_elements[_row][col];\n        }\n\n        const ValueType& operator [](int col) const {\n            _gp->checkIndexes(_row, col, _gp->_rowCount-1, _gp->_columnCount-1, \"operator [][]\");\n            return _gp->_elements[_row][col];\n        }\n\n    private:\n        SparseGridRow(SparseGrid* gridRef, int index) {\n            _gp = gridRef;\n            _row = index;\n        }\n\n        SparseGrid* _gp;\n        int _row;\n        friend class SparseGrid;\n    };\n    friend class SparseGridRow;\n\n    class SparseGridRowConst {\n    public:\n        const ValueType operator [](int col) const {\n            _gp->checkIndexes(_row, col, _gp->_rowCount-1, _gp->_columnCount-1, \"operator [][]\");\n            return _gp->_elements[_row][col];\n        }\n\n    private:\n        SparseGridRowConst(SparseGrid* const gridRef, int index) : _gp(gridRef), _row(index) {\n            // empty\n        }\n\n        const SparseGrid* const _gp;\n        const int _row;\n        friend class SparseGrid;\n    };\n    friend class SparseGridRowConst;\n};\n\ntemplate <typename ValueType>\nSparseGrid<ValueType>::SparseGrid()\n        : _rowCount(0),\n          _columnCount(0) {\n    // empty\n}\n\ntemplate <typename ValueType>\nSparseGrid<ValueType>::SparseGrid(int nRows, int nCols) {\n    resize(nRows, nCols);\n}\n\ntemplate <typename ValueType>\nSparseGrid<ValueType>::SparseGrid(int nRows, int nCols, const ValueType& value) {\n    resize(nRows, nCols);\n    fill(value);\n}\n\ntemplate <typename ValueType>\nSparseGrid<ValueType>::SparseGrid(std::initializer_list<std::initializer_list<ValueType>> list)\n        : _rowCount(0),\n          _columnCount(0) {\n    // create the grid at the proper size\n    _rowCount = list.size();\n    if (list.begin() != list.end()) {\n        _columnCount = list.begin()->size();\n    }\n    resize(_rowCount, _columnCount);\n\n    // copy the data from the initializer list into the Grid\n    auto rowItr = list.begin();\n    for (int row = 0; row < _rowCount; row++) {\n        if ((int) rowItr->size() != _columnCount) {\n            error(\"SparseGrid::constructor: initializer list is not rectangular (must have same # cols in each row)\");\n        }\n        auto colItr = rowItr->begin();\n        for (int col = 0; col < _columnCount; col++) {\n            set(row, col, *colItr);\n            colItr++;\n        }\n        rowItr++;\n    }\n}\n\n\ntemplate <typename ValueType>\nSparseGrid<ValueType>::~SparseGrid() {\n    // empty\n}\n\ntemplate <typename ValueType>\nValueType SparseGrid<ValueType>::back() const {\n    if (isEmpty()) {\n        error(\"SparseGrid::back: grid is empty\");\n    }\n    int lastRow = _elements.back();\n    int lastCol = _elements[lastRow].back();\n    return _elements[lastRow][lastCol];\n}\n\ntemplate <typename ValueType>\nvoid SparseGrid<ValueType>::clear() {\n    _elements.clear();\n}\n\ntemplate <typename ValueType>\nbool SparseGrid<ValueType>::equals(const SparseGrid<ValueType>& grid2) const {\n    // optimization: if literally same grid, stop\n    if (this == &grid2) {\n        return true;\n    }\n    if (_rowCount != grid2._rowCount || _columnCount != grid2._columnCount) {\n        return false;\n    }\n    for (int row = 0; row < _rowCount; row++) {\n        for (int col = 0; col < _columnCount; col++) {\n            if (isSet(row, col)) {\n                // I have data there; he must, too, and it must be the same data\n                if (!grid2.isSet(row, col) || get(row, col) != grid2.get(row, col)) {\n                    return false;\n                }\n            } else {\n                // I don't have data there; he must also not have it there\n                if (grid2.isSet(row, col)) {\n                    return false;\n                }\n            }\n        }\n    }\n    return true;\n}\n\ntemplate <typename ValueType>\nvoid SparseGrid<ValueType>::fill(const ValueType& value) {\n    for (int row = 0; row < _rowCount; row++) {\n        for (int col = 0; col < _columnCount; col++) {\n            set(row, col, value);\n        }\n    }\n}\n\ntemplate <typename ValueType>\nValueType SparseGrid<ValueType>::front() const {\n    if (isEmpty()) {\n        error(\"SparseGrid::front: grid is empty\");\n    }\n    return *begin();\n}\n\ntemplate <typename ValueType>\nValueType SparseGrid<ValueType>::get(int row, int col) {\n    checkIndexes(row, col, _rowCount-1, _columnCount-1, \"get\");\n    return _elements[row][col];\n}\n\ntemplate <typename ValueType>\nconst ValueType& SparseGrid<ValueType>::get(int row, int col) const {\n    checkIndexes(row, col, _rowCount-1, _columnCount-1, \"get\");\n    return _elements[row][col];\n}\n\ntemplate <typename ValueType>\nValueType SparseGrid<ValueType>::get(const GridLocation& loc) {\n    return get(loc.row, loc.col);\n}\n\ntemplate <typename ValueType>\nconst ValueType& SparseGrid<ValueType>::get(const GridLocation& loc) const {\n    return get(loc.row, loc.col);\n}\n\ntemplate <typename ValueType>\nint SparseGrid<ValueType>::height() const {\n    return _rowCount;\n}\n\ntemplate <typename ValueType>\nbool SparseGrid<ValueType>::inBounds(int row, int col) const {\n    return row >= 0 && col >= 0 && row < _rowCount && col < _columnCount;\n}\n\ntemplate <typename ValueType>\nbool SparseGrid<ValueType>::inBounds(const GridLocation& loc) const {\n    return inBounds(loc.row, loc.col);\n}\n\ntemplate <typename ValueType>\nbool SparseGrid<ValueType>::isEmpty() const {\n    return _elements.isEmpty();\n}\n\ntemplate <typename ValueType>\nbool SparseGrid<ValueType>::isSet(int row, int col) const {\n    return inBounds(row, col) && _elements.containsKey(row) &&\n            _elements[row].containsKey(col);\n}\n\ntemplate <typename ValueType>\nbool SparseGrid<ValueType>::isSet(const GridLocation& loc) const {\n    return isSet(loc.row, loc.col);\n}\n\ntemplate <typename ValueType>\nGridLocationRange SparseGrid<ValueType>::locations(bool rowMajor) const {\n    return GridLocationRange(0, 0, numRows() - 1, numCols() - 1, rowMajor);\n}\n\ntemplate <typename ValueType>\nvoid SparseGrid<ValueType>::mapAll(void (*fn)(ValueType value)) const {\n    for (int row = 0; row < _rowCount; row++) {\n        for (int col = 0; col < _columnCount; col++) {\n            if (isSet(row, col)) {\n                fn(get(row, col));\n            }\n        }\n    }\n}\n\ntemplate <typename ValueType>\nvoid SparseGrid<ValueType>::mapAll(void (*fn)(const ValueType& value)) const {\n    for (int row = 0; row < _rowCount; row++) {\n        for (int col = 0; col < _columnCount; col++) {\n            if (isSet(row, col)) {\n                fn(get(row, col));\n            }\n        }\n    }\n}\n\ntemplate <typename ValueType>\ntemplate <typename FunctorType>\nvoid SparseGrid<ValueType>::mapAll(FunctorType fn) const {\n    for (int row = 0; row < _rowCount; row++) {\n        for (int col = 0; col < _columnCount; col++) {\n            if (isSet(row, col)) {\n                fn(get(row, col));\n            }\n        }\n    }\n}\n\ntemplate <typename ValueType>\nint SparseGrid<ValueType>::numCols() const {\n    return _columnCount;\n}\n\ntemplate <typename ValueType>\nint SparseGrid<ValueType>::numRows() const {\n    return _rowCount;\n}\n\ntemplate <typename ValueType>\nvoid SparseGrid<ValueType>::resize(int nRows, int nCols, bool retain) {\n    if (nRows < 0 || nCols < 0) {\n        std::ostringstream out;\n        out << \"SparseGrid::resize: Attempt to resize grid to invalid size (\"\n               << nRows << \", \" << nCols << \")\";\n        error(out.str());\n    }\n    int oldnRows = this->_rowCount;\n    int oldnCols = this->_columnCount;\n    this->_rowCount = nRows;\n    this->_columnCount = nCols;\n    \n    if (retain) {\n        // if resizing to a smaller size, must evict any row/col entries\n        // that exceed the new grid's bounds\n        if (nRows < oldnRows || nCols < oldnCols) {\n            Map<int, Map<int, ValueType>> newElements;\n            for (int row : _elements) {\n                if (row >= nRows) {\n                    break;   // don't add any entries beyond this row\n                }\n                for (int col : _elements[row]) {\n                    if (col >= nCols) {\n                        break;   // don't add any entries beyond this row\n                    }\n                    newElements[row][col] = _elements[row][col];\n                }\n            }\n            _elements = newElements;\n        }\n    } else {\n        _elements.clear();\n    }\n    _version++;\n}\n\ntemplate <typename ValueType>\nvoid SparseGrid<ValueType>::set(int row, int col, const ValueType& value) {\n    checkIndexes(row, col, _rowCount-1, _columnCount-1, \"set\");\n    _elements[row][col] = value;\n    _version++;\n}\n\ntemplate <typename ValueType>\nvoid SparseGrid<ValueType>::set(const GridLocation& loc, const ValueType& value) {\n    set(loc.row, loc.col, value);\n}\n\ntemplate <typename ValueType>\nint SparseGrid<ValueType>::size() const {\n    int count = 0;\n    for (int row : _elements) {\n        count += _elements[row].size();\n    }\n    return count;\n}\n\ntemplate <typename ValueType>\nstd::string SparseGrid<ValueType>::toString() const {\n    std::ostringstream os;\n    os << *this;\n    return os.str();\n}\n\ntemplate <typename ValueType>\nstd::string SparseGrid<ValueType>::toString2D(\n        std::string rowStart, std::string rowEnd,\n        std::string colSeparator, std::string rowSeparator) const {\n    std::ostringstream os;\n    os << rowStart;\n    int nRows = numRows();\n    int nCols = numCols();\n    for (int i = 0; i < nRows; i++) {\n        if (!_elements.containsKey(i) || _elements[i].isEmpty()) {\n            continue;\n        }\n        if (i > 0) {\n            os << rowSeparator;\n        }\n        os << rowStart;\n        for (int j = 0; j < nCols; j++) {\n            if (j > 0) {\n                os << colSeparator;\n            }\n            if (isSet(i, j)) {\n                writeGenericValue(os, get(i, j), true);\n            }\n        }\n        os << rowEnd;\n    }\n    os << rowEnd;\n    return os.str();\n}\n\ntemplate <typename ValueType>\nvoid SparseGrid<ValueType>::unset(int row, int col) {\n    checkIndexes(row, col, _rowCount-1, _columnCount-1, \"unset\");\n    if (_elements.containsKey(row)) {\n        _elements[row].remove(col);\n        if (_elements[row].isEmpty()) {\n            _elements.remove(row);\n        }\n    }\n    _version++;\n}\n\ntemplate <typename ValueType>\nvoid SparseGrid<ValueType>::unset(const GridLocation& loc) {\n    unset(loc.row, loc.col);\n}\n\ntemplate <typename ValueType>\nunsigned int SparseGrid<ValueType>::version() const {\n    return _version;\n}\n\ntemplate <typename ValueType>\nint SparseGrid<ValueType>::width() const {\n    return _columnCount;\n}\n\ntemplate <typename ValueType>\nvoid SparseGrid<ValueType>::checkIndexes(int row, int col,\n                                         int rowMax, int colMax,\n                                         std::string prefix) const {\n    const int rowMin = 0;\n    const int colMin = 0;\n    if (row < rowMin || row > rowMax || col < colMin || col > colMax) {\n        std::ostringstream out;\n        out << \"SparseGrid::\" << prefix << \": (\" << row << \", \" << col << \")\"\n            << \" is outside of valid range [\";\n        if (rowMin < rowMax && colMin < colMax) {\n            out << \"(\" << rowMin << \", \" << colMin <<  \")..(\"\n                << rowMax << \", \" << colMax << \")\";\n        } else if (rowMin == rowMax && colMin == colMax) {\n            out << \"(\" << rowMin << \", \" << colMin <<  \")\";\n        } // else min > max, no range, empty grid\n        out << \"]\";\n        error(out.str());\n    }\n}\n\ntemplate <typename ValueType>\nint SparseGrid<ValueType>::gridCompare(const SparseGrid& grid2) const {\n    int h1 = height();\n    int w1 = width();\n    int h2 = grid2.height();\n    int w2 = grid2.width();\n    int rows = h1 > h2 ? h1 : h2;\n    int cols = w1 > w2 ? w1 : w2;\n    for (int r = 0; r < rows; r++) {\n        for (int c = 0; c < cols; c++) {\n            if (r >= h1) {\n                return -1;\n            } else if (r >= h2) {\n                return 1;\n            }\n            \n            if (c >= w1) {\n                return -1;\n            } else if (c >= w2) {\n                return 1;\n            }\n            \n            if (!isSet(r, c) && grid2.isSet(r, c)) {\n                return -1;\n            } else if (isSet(r, c) && !grid2.isSet(r, c)) {\n                return 1;\n            }\n            \n            if (get(r, c) < grid2.get(r, c)) {\n                return -1;\n            } else if (grid2.get(r, c) < get(r, c)) {\n                return 1;\n            }\n        }\n    }\n    return 0;\n}\n\ntemplate <typename ValueType>\ntypename SparseGrid<ValueType>::SparseGridRow SparseGrid<ValueType>::operator [](int row) {\n    return SparseGridRow(this, row);\n}\n\ntemplate <typename ValueType>\nconst typename SparseGrid<ValueType>::SparseGridRowConst\nSparseGrid<ValueType>::operator [](int row) const {\n    return SparseGridRowConst(const_cast<SparseGrid*>(this), row);\n}\n\ntemplate <typename ValueType>\nValueType& SparseGrid<ValueType>::operator [](const GridLocation& loc) {\n    checkIndexes(loc.row, loc.col, _rowCount-1, _columnCount-1, \"operator []\");\n    return _elements[loc.row][loc.col];\n}\n\ntemplate <typename ValueType>\nconst ValueType& SparseGrid<ValueType>::operator [](const GridLocation& loc) const {\n    checkIndexes(loc.row, loc.col, _rowCount-1, _columnCount-1, \"operator []\");\n    return _elements[loc.row][loc.col];\n}\n\ntemplate <typename ValueType>\nbool SparseGrid<ValueType>::operator ==(const SparseGrid& grid2) const {\n    return equals(grid2);\n}\n\ntemplate <typename ValueType>\nbool SparseGrid<ValueType>::operator !=(const SparseGrid& grid2) const {\n    return !equals(grid2);\n}\n\ntemplate <typename ValueType>\nbool SparseGrid<ValueType>::operator <(const SparseGrid& grid2) const {\n    return gridCompare(grid2) < 0;\n}\n\ntemplate <typename ValueType>\nbool SparseGrid<ValueType>::operator <=(const SparseGrid& grid2) const {\n    return gridCompare(grid2) <= 0;\n}\n\ntemplate <typename ValueType>\nbool SparseGrid<ValueType>::operator >(const SparseGrid& grid2) const {\n    return gridCompare(grid2) > 0;\n}\n\ntemplate <typename ValueType>\nbool SparseGrid<ValueType>::operator >=(const SparseGrid& grid2) const {\n    return gridCompare(grid2) >= 0;\n}\n\n/*\n * Implementation notes: << and >>\n * -------------------------------\n * The insertion and extraction operators use the template facilities in\n * strlib.h to read and write generic values in a way that treats strings\n * specially.\n */\ntemplate <typename ValueType>\nstd::ostream& operator <<(std::ostream& os, const SparseGrid<ValueType>& grid) {\n    os << grid._elements << \", \" << grid._rowCount << \" x \" << grid._columnCount;\n    return os;\n}\n\ntemplate <typename ValueType>\nstd::istream& operator >>(std::istream& is, SparseGrid<ValueType>& grid) {\n    // \"{...}, 4 x 3\"\n\n    // read \"{...}\" (map of elements)\n    if (!(is >> grid._elements)) {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n        error(\"SparseGrid::operator >>: Invalid elements\");\n#endif\n        is.setstate(std::ios_base::failbit);\n        return is;\n    }\n\n    // throw away ', ' token\n    std::string comma;\n    if (!(is >> comma)) {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n        error(\"SparseGrid::operator >>: Invalid format\");\n#endif\n        is.setstate(std::ios_base::failbit);\n        return is;\n    }\n\n    if (!(is >> grid._rowCount)) {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n        error(\"SparseGrid::operator >>: Invalid number of rows\");\n#endif\n        is.setstate(std::ios_base::failbit);\n        return is;\n    }\n\n    std::string x;\n    is >> x;       // throw away 'x' token\n\n    if (!(is >> grid._columnCount)) {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n        error(\"SparseGrid::operator >>: Invalid number of rows\");\n#endif\n        is.setstate(std::ios_base::failbit);\n        return is;\n    }\n    return is;\n}\n\n/*\n * Template hash function for sparse grids.\n * Requires the element type in the SparseGrid to have a hashCode function.\n */\ntemplate <typename T>\nint hashCode(const SparseGrid<T>& grid) {\n    return stanfordcpplib::collections::hashCodeCollection(grid);\n}\n\n/*\n * Function: randomElement\n * Usage: element = randomElement(grid);\n * -------------------------------------\n * Returns a randomly chosen element of the given grid.\n * Throws an error if the grid is empty.\n */\ntemplate <typename T>\nconst T& randomElement(const SparseGrid<T>& grid) {\n    if (grid.isEmpty()) {\n        error(\"randomElement: empty sparse grid was passed\");\n    }\n    \n    // pick a non-empty row, then pick a random element from it\n    // TODO: fix, this is NOT evenly distributed when rows/cols are unequal in size\n    int row = randomKey(grid._elements);\n    int col = randomKey(grid._elements[row]);\n    return grid.get(row, col);\n}\n\n#endif // _sparsegrid_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/collections/stack.h",
    "content": "/*\n * File: stack.h\n * -------------\n * This file exports the <code>Stack</code> class, which implements\n * a collection that processes values in a last-in/first-out (LIFO) order.\n * \n * @version 2019/04/09\n * - renamed private members with underscore naming scheme for consistency\n * @version 2019/02/04\n * - changed internal implementation to wrap std collections\n * @version 2016/12/09\n * - added iterator version checking support (implicitly via Vector)\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * - made const iterators public\n * @version 2016/08/10\n * - added constructor support for std initializer_list usage, such as {1, 2, 3}\n * @version 2016/08/04\n * - fixed operator >> to not throw errors\n * @version 2014/11/13\n * - added add() method as synonym for push()\n * - added remove() method as synonym for pop()\n * - added comparison operators <, >=, etc.\n * - added template hashCode function\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _stack_h\n#define _stack_h\n\n#include <initializer_list>\n\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"hashcode.h\"\n#define INTERNAL_INCLUDE 1\n#include \"vector.h\"\n#undef INTERNAL_INCLUDE\n\n/*\n * Class: Stack<ValueType>\n * -----------------------\n * This class models a linear structure called a <b><i>stack</i></b>\n * in which values are added and removed only from one end.\n * This discipline gives rise to a last-in/first-out behavior (LIFO)\n * that is the defining feature of stacks.  The fundamental stack\n * operations are <code>push</code> (add to top) and <code>pop</code>\n * (remove from top).\n */\ntemplate <typename ValueType>\nclass Stack {\npublic:\n    /*\n     * Constructor: Stack\n     * Usage: Stack<ValueType> stack;\n     * ------------------------------\n     * Initializes a new empty stack.\n     */\n    Stack() = default;\n\n    /*\n     * Constructor: Stack\n     * Usage: Stack<ValueType> stack {1, 2, 3};\n     * ----------------------------------------\n     * Initializes a new stack that stores the given elements from bottom-top.\n     */\n    Stack(std::initializer_list<ValueType> list);\n\n    /*\n     * Destructor: ~Stack\n     * ------------------\n     * Frees any heap storage associated with this stack.\n     */\n    virtual ~Stack() = default;\n    \n    /*\n     * Method: add\n     * Usage: stack.add(value);\n     * -------------------------\n     * Pushes the specified value onto the top of this stack.\n     * A synonym for the push method.\n     */\n    void add(const ValueType& value);\n    \n    /*\n     * Method: clear\n     * Usage: stack.clear();\n     * ---------------------\n     * Removes all elements from this stack.\n     */\n    void clear();\n    \n    /*\n     * Method: equals\n     * Usage: if (stack.equals(stack2)) ...\n     * ------------------------------------\n     * Returns <code>true</code> if this stack contains exactly the same values\n     * as the given other stack.\n     * Identical in behavior to the == operator.\n     */\n    bool equals(const Stack<ValueType>& stack2) const;\n    \n    /*\n     * Method: isEmpty\n     * Usage: if (stack.isEmpty()) ...\n     * -------------------------------\n     * Returns <code>true</code> if this stack contains no elements.\n     */\n    bool isEmpty() const;\n    \n    /*\n     * Method: peek\n     * Usage: ValueType top = stack.peek();\n     * ------------------------------------\n     * Returns the value of top element from this stack, without removing\n     * it.  This method signals an error if called on an empty stack.\n     */\n    ValueType peek() const;\n    \n    /*\n     * Method: pop\n     * Usage: ValueType top = stack.pop();\n     * -----------------------------------\n     * Removes the top element from this stack and returns it.  This\n     * method signals an error if called on an empty stack.\n     */\n    ValueType pop();\n    \n    /*\n     * Method: push\n     * Usage: stack.push(value);\n     * -------------------------\n     * Pushes the specified value onto the top of this stack.\n     */\n    void push(const ValueType& value);\n\n    /*\n     * Method: remove\n     * Usage: ValueType top = stack.remove();\n     * -----------------------------------\n     * Removes the top element from this stack and returns it.\n     * A synonym for the pop method.\n     */\n    ValueType remove();\n\n    /*\n     * Method: size\n     * Usage: int n = stack.size();\n     * ----------------------------\n     * Returns the number of values in this stack.\n     */\n    int size() const;\n    \n    /*\n     * Method: top\n     * Usage: ValueType top = stack.top();\n     * ------------------------------------\n     * Returns the value of top element from this stack, without removing\n     * it.  This method signals an error if called on an empty stack.  For\n     * compatibility with the STL classes, this method is exported\n     * under the name <code>top</code>, in which case it returns the value\n     * by reference.\n     */\n    ValueType& top();\n\n    /*\n     * Method: toString\n     * Usage: string str = stack.toString();\n     * -------------------------------------\n     * Converts the stack to a printable string representation.\n     */\n    std::string toString() const;\n\n    /*\n     * Operator: ==\n     * Usage: stack1 == stack2\n     * -----------------------\n     * Returns <code>true</code> if <code>stack1</code> and <code>stack2</code>\n     * contain the same elements.\n     */\n    bool operator ==(const Stack& stack2) const;\n\n    /*\n     * Operator: !=\n     * Usage: stack1 != stack2\n     * -----------------------\n     * Returns <code>true</code> if <code>stack1</code> and <code>stack2</code>\n     * do not contain the same elements.\n     */\n    bool operator !=(const Stack& stack2) const;\n\n    /*\n     * Operators: <, >, <=, >=\n     * Usage: if (stack1 < stack2) ...\n     * -------------------------------\n     * Relational operators to compare two stacks.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     */\n    bool operator <(const Stack& stack2) const;\n    bool operator <=(const Stack& stack2) const;\n    bool operator >(const Stack& stack2) const;\n    bool operator >=(const Stack& stack2) const;\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\n    /*\n     * Implementation notes: Stack data structure\n     * ------------------------------------------\n     * The easiest way to implement a stack is to store the elements in a\n     * Vector.  Doing so means that the problems of dynamic memory allocation\n     * and copy assignment are already solved by the implementation of the\n     * underlying Vector class.\n     */\n\n    template <typename T>\n    friend int hashCode(const Stack<T>& s);\n    \n    template <typename T>\n    friend std::ostream& operator <<(std::ostream& os, const Stack<T>& stack);\n    \nprivate:\n    Vector<ValueType> _elements;\n};\n\n/*\n * Stack class implementation\n * --------------------------\n * The Stack is internally managed using a Vector.  This layered design\n * makes the implementation extremely simple, to the point that most\n * methods can be implemented in as single line.\n */\n\ntemplate <typename ValueType>\nStack<ValueType>::Stack(std::initializer_list<ValueType> list) : _elements(list) {\n\n}\n\ntemplate <typename ValueType>\nvoid Stack<ValueType>::add(const ValueType& value) {\n    push(value);\n}\n\ntemplate <typename ValueType>\nvoid Stack<ValueType>::clear() {\n    _elements.clear();\n}\n\ntemplate <typename ValueType>\nbool Stack<ValueType>::equals(const Stack<ValueType>& stack2) const {\n    return stanfordcpplib::collections::equals(_elements, stack2._elements);\n}\n\ntemplate <typename ValueType>\nbool Stack<ValueType>::isEmpty() const {\n    return size() == 0;\n}\n\ntemplate <typename ValueType>\nValueType Stack<ValueType>::peek() const {\n    if (isEmpty()) {\n        error(\"Stack::peek: Attempting to peek at an empty stack\");\n    }\n    return _elements.back();\n}\n\ntemplate <typename ValueType>\nValueType Stack<ValueType>::pop() {\n    if (isEmpty()) {\n        error(\"Stack::pop: Attempting to pop an empty stack\");\n    }\n    return _elements.pop_back();\n}\n\ntemplate <typename ValueType>\nvoid Stack<ValueType>::push(const ValueType& value) {\n    _elements.push_back(value);\n}\n\ntemplate <typename ValueType>\nValueType Stack<ValueType>::remove() {\n    return pop();\n}\n\ntemplate <typename ValueType>\nint Stack<ValueType>::size() const {\n    return _elements.size();\n}\n\ntemplate <typename ValueType>\nValueType & Stack<ValueType>::top() {\n    if (isEmpty()) {\n        error(\"Stack::top: Attempting to read top of an empty stack\");\n    }\n    return _elements.back();\n}\n\ntemplate <typename ValueType>\nstd::string Stack<ValueType>::toString() const {\n    std::ostringstream os;\n    os << *this;\n    return os.str();\n}\n\ntemplate <typename ValueType>\nbool Stack<ValueType>::operator ==(const Stack& stack2) const {\n    return _elements == stack2._elements;\n}\n\ntemplate <typename ValueType>\nbool Stack<ValueType>::operator !=(const Stack & stack2) const {\n    return _elements != stack2._elements;\n}\n\ntemplate <typename ValueType>\nbool Stack<ValueType>::operator <(const Stack & stack2) const {\n    return _elements < stack2._elements;\n}\n\ntemplate <typename ValueType>\nbool Stack<ValueType>::operator <=(const Stack & stack2) const {\n    return _elements <= stack2._elements;\n}\n\ntemplate <typename ValueType>\nbool Stack<ValueType>::operator >(const Stack & stack2) const {\n    return _elements > stack2._elements;\n}\n\ntemplate <typename ValueType>\nbool Stack<ValueType>::operator >=(const Stack & stack2) const {\n    return _elements >= stack2._elements;\n}\n\ntemplate <typename ValueType>\nstd::ostream& operator <<(std::ostream& os, const Stack<ValueType>& stack) {\n    return os << stack._elements;\n}\n\ntemplate <typename ValueType>\nstd::istream& operator >>(std::istream& is, Stack<ValueType>& stack) {\n    ValueType element;\n    return stanfordcpplib::collections::readCollection(is, stack, element, /* descriptor */ \"Stack::operator >>\");\n}\n\n/*\n * Template hash function for stacks.\n * Requires the element type in the Stack to have a hashCode function.\n */\ntemplate <typename T>\nint hashCode(const Stack<T>& s) {\n    return hashCode(s._elements);\n}\n\n#endif // _stack_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/collections/stl.h",
    "content": "/*\n * File: stl.h\n * -----------\n * Contains utility functions related to the STL collections.\n *\n * @author Marty Stepp\n * @version 2018/10/19\n * - added toStl* methods (moved here from being members of our collections)\n *   This is to avoid a default include of STL containers in student code.\n * @version 2016/10/22\n * - added toString\n * @version 2016/09/22\n * - initial version\n * @since 2016/09/22\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _stl_h\n#define _stl_h\n\n#include <initializer_list>\n#include <iostream>\n#include <iterator>\n#include <list>\n#include <map>\n#include <queue>\n#include <set>\n#include <sstream>\n#include <stack>\n#include <vector>\n\n#define INTERNAL_INCLUDE 1\n#include \"collections.h\"\n#define INTERNAL_INCLUDE 1\n#include \"dawglexicon.h\"\n#define INTERNAL_INCLUDE 1\n#include \"lexicon.h\"\n#define INTERNAL_INCLUDE 1\n#include \"linkedlist.h\"\n#define INTERNAL_INCLUDE 1\n#include \"map.h\"\n#define INTERNAL_INCLUDE 1\n#include \"queue.h\"\n#define INTERNAL_INCLUDE 1\n#include \"set.h\"\n#define INTERNAL_INCLUDE 1\n#include \"stack.h\"\n#define INTERNAL_INCLUDE 1\n#include \"vector.h\"\n#undef INTERNAL_INCLUDE\n\n// STL containers:\n// array, vector, deque, forward_list, ist, stack, queue, priority_queue,\n// set, multiset, map, multimap, unordered_*, bitset, valarray\n\n/**\n * Writes the given list of values to the given output stream\n * in a \"{10, 20, 30}\" format.\n */\ntemplate <typename T>\nstd::ostream& operator <<(std::ostream& out, const std::initializer_list<T>& list) {\n    return stanfordcpplib::collections::writeCollection(out, list);\n}\n\n/**\n * Writes the given vector of values to the given output stream\n * in a \"{10, 20, 30}\" format.\n */\ntemplate <typename T>\nstd::ostream& operator <<(std::ostream& out, const std::vector<T>& vec) {\n    return stanfordcpplib::collections::writeCollection(out, vec);\n}\n\n/**\n * Returns an STL queue object with the same elements as this Queue.\n */\ntemplate <typename ValueType>\nstd::deque<ValueType> toStlDeque(const Queue<ValueType>& q) {\n    Queue<ValueType> copy = q;\n    std::deque<ValueType> result;\n    while (!copy.isEmpty()) {\n        result.push_back(copy.dequeue());\n    }\n    return result;\n}\n\n/**\n * Returns an STL list object with the same elements as this LinkedList.\n */\ntemplate <typename ValueType>\nstd::list<ValueType> toStlList(const LinkedList<ValueType>& l) {\n    std::list<ValueType> result;\n    for (const ValueType& value : l) {\n        result.push_back(value);\n    }\n    return result;\n}\n\n/**\n * Returns an STL map object with the same elements as this map.\n */\ntemplate <typename KeyType, typename ValueType>\nstd::map<KeyType, ValueType> toStlMap(const Map<KeyType, ValueType>& m) {\n    std::map<KeyType, ValueType> result;\n    for (const KeyType& key : m) {\n        result[key] = m[key];\n    }\n    return result;\n}\n\n/**\n * Returns an STL queue object with the same elements as this Queue.\n */\ntemplate <typename ValueType>\nstd::queue<ValueType> toStlQueue(const Queue<ValueType>& q) {\n    Queue<ValueType> copy = q;\n    std::queue<ValueType> result;\n    while (!copy.isEmpty()) {\n        result.push_back(copy.dequeue());\n    }\n    return result;\n}\n\n/**\n * Returns an STL set object with the same elements as this DawgLexicon.\n */\nstd::set<std::string> toStlSet(const DawgLexicon& lex);\n\n/**\n * Returns an STL set object with the same elements as this Lexicon.\n */\nstd::set<std::string> toStlSet(const Lexicon& lex);\n\n/**\n * Returns an STL set object with the same elements as this Set.\n */\ntemplate <typename ValueType>\nstd::set<ValueType> toStlSet(const Set<ValueType>& s) {\n    std::set<ValueType> result;\n    for (ValueType& value : s) {\n        result.insert(value);\n    }\n    return result;\n}\n\n/**\n * Returns an STL stack object with the same elements as this Stack.\n */\ntemplate <typename ValueType>\nstd::stack<ValueType> toStlStack(const Stack<ValueType>& s) {\n    Stack<ValueType> copy = s;\n    std::stack<ValueType> result;\n    while (!copy.isEmpty()) {\n        result.push(copy.pop());\n    }\n    return result;\n}\n\n/**\n * Returns an STL vector object with the same elements as this Vector.\n */\ntemplate <typename ValueType>\nstd::vector<ValueType> toStlVector(const Vector<ValueType>& v) {\n    std::vector<ValueType> result;\n    for (int i = 0; i < v.size(); i++) {\n        result.push_back(v[i]);\n    }\n    return result;\n}\n\n/**\n * Converts the given list of values to a string such as \"{1, 2, 3}\".\n */\ntemplate <typename T>\nstd::string toString(const std::initializer_list<T>& list) {\n    std::ostringstream out;\n    out << list;\n    return out.str();\n}\n\n/**\n * Converts the given vector of values to a string such as \"{1, 2, 3}\".\n */\ntemplate <typename T>\nstd::string toString(const std::vector<T>& vec) {\n    std::ostringstream out;\n    out << vec;\n    return out.str();\n}\n\n#endif // _stl_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/collections/vector.h",
    "content": "/*\n * File: vector.h\n * --------------\n * This file exports the <code>Vector</code> class, which provides an\n * efficient, safe, convenient replacement for the array type in C++.\n *\n * @version 2019/04/09\n * - renamed private members with underscore naming scheme for consistency\n * @version 2019/02/04\n * - changed internal implementation to wrap std collections\n * @version 2018/09/06\n * - refreshed doc comments for new documentation generation\n * @version 2018/01/07\n * - added front, back, removeFront, removeBack, pop_front, pop_back, push_front\n * @version 2017/11/15\n * - added contains, indexOf, lastIndexOf, removeValue, reverse, shuffle, sort\n * @version 2017/10/18\n * - fix compiler warnings\n * @version 2016/12/09\n * - added iterator version checking support\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * @version 2016/08/12\n * - bug fix for constructor based on initializer list\n * @version 2016/08/10\n * - added support for std initializer_list usage, such as {1, 2, 3}\n *   in constructor, addAll, +, +=\n * @version 2016/08/04\n * - fixed operator >> to not throw errors\n * @version 2015/10/13\n * - nulled out pointer fields in destructor after deletion to avoid double-free\n * @version 2015/07/05\n * - using global hashing functions rather than global variables\n * @version 2014/11/13\n * - added comparison operators <, >=, etc.\n * - added template hashCode function\n * @version 2014/10/19\n * - added subList method\n * @version 2014/10/10\n * - removed usage of __foreach macro\n * 2014/07/09\n * - changed checkVectorIndex range checking function into a private member\n *   function to avoid unused-function errors on some newer compilers\n * 2014/04/27\n * - fixed bug in addAll method that was not returning reference properly.\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _vector_h\n#define _vector_h\n\n#include <algorithm>\n#include <initializer_list>\n#include <iostream>\n#include <iterator>\n#include <sstream>\n#include <string>\n#include <vector>\n#include <deque>\n#include <type_traits>\n#include <functional>\n\n#define INTERNAL_INCLUDE 1\n#include \"collections.h\"\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"hashcode.h\"\n#define INTERNAL_INCLUDE 1\n#include \"random.h\"\n#undef INTERNAL_INCLUDE\n\n/**\n * This class stores an ordered list of values similar to an array.\n * It supports traditional array selection using square brackets, but\n * also supports inserting and deleting elements.  It is similar in\n * function to the STL <code>vector</code> type, but is simpler both\n * to use and to implement.\n */\ntemplate <typename ValueType>\nclass Vector {\npublic:\n    /**\n     * Initializes a new empty vector.\n     * @bigoh O(1)\n     */\n    Vector() = default;\n\n    /**\n     * Initializes a new vector, creating an array with <code>n</code>\n     * elements, each of which is initialized to <code>value</code>.\n     * If <code>value</code> is missing, the elements are initialized\n     * to the default value for the type.\n     * @bigoh O(N)\n     */\n    explicit Vector(int n, ValueType value = ValueType());\n\n    /**\n     * Uses an initializer list to set up the vector.\n     * @bigoh O(N)\n     */\n    Vector(std::initializer_list<ValueType> list);\n\n    /**\n     * Frees any heap storage allocated by this vector.\n     * @bigoh O(1)\n     */\n    virtual ~Vector() = default;\n\n    /**\n     * Adds a new value to the end of this vector.\n     * @bigoh O(1)\n     */\n    void add(const ValueType& value);\n\n    /**\n     * Adds all elements of the given other vector to this vector.\n     * Returns a reference to this vector.\n     * Identical in behavior to the += operator.\n     * @bigoh O(N)\n     */\n    Vector<ValueType>& addAll(const Vector<ValueType>& v);\n\n    /**\n     * Returns the element at index (size - 1) in this vector (without removing it).\n     * @throw ErrorException if vector is empty\n     * @bigoh O(1)\n     */\n    ValueType& back();\n\n    /**\n     * Returns the element at index (size - 1) in this vector (without removing it).\n     * @throw ErrorException if vector is empty\n     * @bigoh O(1)\n     */\n    const ValueType& back() const;\n\n    /**\n     * Removes all elements from this vector.\n     * @bigoh O(1)\n     */\n    void clear();\n\n    /**\n     * Returns true if the vector contains the given value.\n     * The ValueType must have an == operator to use this method.\n     * @bigoh O(N)\n     */\n    bool contains(const ValueType& value) const;\n\n    /**\n     * Guarantees that the vector's internal array is at least the given length.\n     * If necessary, resizes the array to be the given length or larger.\n     * @bigoh O(N)\n     */\n    void ensureCapacity(int cap);\n\n    /**\n     * Compares two vectors for equality.\n     * Returns <code>true</code> if this vector contains exactly the same\n     * values as the given other vector.\n     * Identical in behavior to the == operator.\n     * @bigoh O(N)\n     */\n    bool equals(const Vector<ValueType>& v) const;\n\n    /**\n     * Returns the element at index 0 in this vector (without removing it).\n     * @throw ErrorExceptoin if vector is empty\n     * @bigoh O(1)\n     */\n    ValueType& front();\n\n    /**\n     * Returns the element at index 0 in this vector (without removing it).\n     * @throw ErrorExceptoin if vector is empty\n     * @bigoh O(1)\n     */\n    const ValueType& front() const;\n\n    /**\n     * Returns the element at the specified index in this vector.\n     * Similar in behavior to the [] operator.\n     * @throw ErrorException if the index is not in the array range\n     * @bigoh O(1)\n     */\n    const ValueType& get(int index) const;\n\n    /**\n     * Returns the index of the first occurrence of the given value.\n     * If the value is not found in the vector, returns -1.\n     * The ValueType must have an == operator to use this method.\n     * @bigoh O(N)\n     */\n    int indexOf(const ValueType& value) const;\n\n    /**\n     * Inserts the element into this vector before the specified index.\n     * All subsequent elements are shifted one position to the right.\n     * @throw ErrorException if the index is not in the array range from 0\n     * up to and including the length of the vector.\n     * @bigoh O(N)\n     */\n    void insert(int index, const ValueType& value);\n\n    /**\n     * Returns <code>true</code> if this vector contains no elements.\n     * @bigoh O(1)\n     */\n    bool isEmpty() const;\n\n    /**\n     * Returns the index of the last occurrence of the given value.\n     * If the value is not found in the vector, returns -1.\n     * The ValueType must have an == operator to use this method.\n     * @bigoh O(N)\n     */\n    int lastIndexOf(const ValueType& value) const;\n\n    /**\n     * Calls the specified function on each element of the vector in\n     * ascending index order.\n     * @bigoh O(N)\n     */\n    void mapAll(std::function<void (const ValueType&)> fn) const;\n\n    /**\n     * Removes and returns the first value of this vector.\n     * Equivalent to removeFront.\n     * @throw ErrorException if the vector is empty\n     * @bigoh O(N)\n     */\n    ValueType pop_front();\n\n    /**\n     * Removes and returns the last value of this vector.\n     * Equivalent to removeBack.\n     * @throw ErrorException if the vector is empty\n     * @bigoh O(1)\n     */\n    ValueType pop_back();\n\n    /**\n     * Adds a new value to the end of this vector.\n     * This method is a synonym of the add method that is provided to\n     * ensure compatibility with the STL <code>vector</code> class.\n     * @bigoh O(1)\n     */\n    void push_back(const ValueType& value);\n\n    /**\n     * Adds a new value to the start of this vector.\n     * This method is equivalent to calling insert(0, value) and is provided to\n     * improve compatibility with the STL <code>vector</code> class.\n     * @bigoh O(N)\n     */\n    void push_front(const ValueType& value);\n\n    /**\n     * Removes the element at the specified index from this vector.\n     * All subsequent elements are shifted one position to the left.\n     * @throw ErrorException if the index is not in the array range\n     * @bigoh O(N)\n     */\n    void remove(int index);\n\n    /**\n     * Removes and returns the element at index 0 in this vector.\n     * @throw ErrorException if the vector is empty\n     * @bigoh O(N)\n     */\n    ValueType removeFront();\n\n    /**\n     * Removes and returns the element at index (size - 1) in this vector.\n     * @throw ErrorException if the vector is empty\n     * @bigoh O(1)\n     */\n    ValueType removeBack();\n\n    /**\n     * Removes the first occurrence of the element value from this vector.\n     * All subsequent elements are shifted one position to the left.\n     * If the vector does not contain the given value, has no effect.\n     * The ValueType must have an == operator to use this method.\n     * @bigoh O(N)\n     */\n    void removeValue(const ValueType& value);\n\n    /**\n     * Reverses the order of the elements in this vector.\n     * For example, if vector stores {1, 3, 4, 9}, changes it to store {9, 4, 3, 1}.\n     * @bigoh O(N)\n     */\n    void reverse();\n\n    /**\n     * Replaces the element at the specified index in this vector with\n     * a new value.  The previous value at that index is overwritten.\n     * Similar in behavior to the [] operator.\n     * @throw ErrorException if the index is not in the array range\n     * @bigoh O(1)\n     */\n    void set(int index, const ValueType& value);\n    \n    /**\n     * Returns the number of elements in this vector.\n     * @bigoh O(1)\n     */\n    int size() const;\n\n    /**\n     * Rearranges the order of the elements in this vector into a random order.\n     * @bigoh O(N)\n     */\n    void shuffle();\n\n    /**\n     * Rearranges the order of the elements in this vector into sorted order.\n     * For example, if vector stores {9, 1, 4, 3}, changes it to store {1, 3, 4, 9}.\n     * The ValueType must have an operator < to call this method.\n     * @bigoh O(N log N)\n     */\n    void sort();\n\n    /**\n     * Returns a new vector containing the given subset range of elements\n     * from this vector. The new vector is a deep copy, not linked to this one.\n     * @throw ErrorException if the range (start .. start + length) is not\n     *        within the bounds of this vector, or if length is negative\n     * @bigoh O(N)\n     */\n    Vector<ValueType> subList(int start, int length) const;\n\n    /**\n     * Returns a new vector containing the elements from the start position\n     * to the end of the vector.\n     *\n     * @throw ErrorException if start > size()\n     * @bigoh O(N)\n     */\n    Vector<ValueType> subList(int start) const;\n\n    /**\n     * Converts the vector to a printable string representation\n     * such as \"{10, 20, 30, 40}\".\n     * @bigoh O(N)\n     */\n    std::string toString() const;\n\n    /**\n     * Overloads <code>[]</code> to select elements from this vector.\n     * This extension enables the use of traditional array notation to\n     * get or set individual elements.\n     * @throw ErrorException if the index is not in the array range\n     * @bigoh O(1)\n     */\n    ValueType& operator [](int index);\n\n    /**\n     * Overloads <code>[]</code> to select elements from this vector.\n     * This extension enables the use of traditional array notation to\n     * get or set individual elements.\n     * @throw ErrorException if the index is not in the array range\n     * @bigoh O(1)\n     */\n    const ValueType& operator [](int index) const;\n\n    /**\n     * Concatenates two vectors and returns the result.\n     * @bigoh O(N)\n     */\n    Vector operator +(const Vector& v2) const;\n\n    /**\n     * Produces a vector formed by appending the given element to this vector.\n     * @bigoh O(N)\n     */\n    Vector operator +(const ValueType& elem) const;\n\n    /**\n     * Adds all of the elements from <code>v2</code> to the end of this vector.\n     * @bigoh O(N)\n     */\n    Vector& operator +=(const Vector& v2);\n\n    /**\n     * Adds the single specified value) to the end of the vector.\n     * @bigoh O(1)\n     */\n    Vector& operator +=(const ValueType& value);\n\n\n    /**\n     * Compares two vectors for equality.\n     * The ValueType must have an == operator.\n     * @bigoh O(N)\n     */\n    bool operator ==(const Vector& v2) const;\n\n    /**\n     * Compares two vectors for inequality.\n     * The ValueType must have a != operator.\n     * @bigoh O(N)\n     */\n    bool operator !=(const Vector& v2) const;\n\n    /**\n     * Relational operators to compare two vectors.\n     * Each element is compared pairwise to the corresponding element at the\n     * same index in the other vector; for example, we first check the values\n     * at index 0, then 1, and so on.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     * @bigoh O(N)\n     */\n    bool operator <(const Vector& v2) const;\n\n    /**\n     * Relational operators to compare two vectors.\n     * Each element is compared pairwise to the corresponding element at the\n     * same index in the other vector; for example, we first check the values\n     * at index 0, then 1, and so on.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     * @bigoh O(N)\n     */\n    bool operator <=(const Vector& v2) const;\n\n    /**\n     * Relational operators to compare two vectors.\n     * Each element is compared pairwise to the corresponding element at the\n     * same index in the other vector; for example, we first check the values\n     * at index 0, then 1, and so on.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     * @bigoh O(N)\n     */\n    bool operator >(const Vector& v2) const;\n\n    /**\n     * Relational operators to compare two vectors.\n     * Each element is compared pairwise to the corresponding element at the\n     * same index in the other vector; for example, we first check the values\n     * at index 0, then 1, and so on.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     * @bigoh O(N)\n     */\n    bool operator >=(const Vector& v2) const;\n\n    /*\n     * Additional Vector operations\n     * ----------------------------\n     * In addition to the methods listed in this interface, the Vector\n     * class supports the following operations:\n     *\n     *   - Stream I/O using the << and >> operators\n     *   - Deep copying for the copy constructor and assignment operator\n     *   - Iteration using the range-based for statement or STL iterators\n     *\n     * The iteration forms process the Vector in index order.\n     */\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\nprivate:\n    /*\n     * Implementation notes: Vector data structure\n     * -------------------------------------------\n     * The elements are stored in a std::vector, the regular C++ library\n     * type representing a sequence of elements. We wrap std::vector because\n     * it has no runtime safety checks, something that's tricky to get used\n     * to when you're first learning to use these types.\n     *\n     * There's an edge case in the C++ libraries where std::vector<bool> doesn't\n     * work as you might think it does. This is widely regarded as a mistake\n     * in the language design and there's been a proposal to fix it for many\n     * years now. In the interim, we get around this by falling back on the\n     * std::deque type in the event that the client wants to make a\n     * Vector<bool>\n     */\n    using ContainerType = typename std::conditional<std::is_same<ValueType, bool>::value,\n                                                    std::deque<bool>,\n                                                    std::vector<ValueType>>::type;\n\n    /* Instance variables */\n    ContainerType _elements;\n    stanfordcpplib::collections::VersionTracker _version;\n\n    /* Private methods */\n\n    /*\n     * Throws an ErrorException if the given index is not within the range of\n     * [min..max] inclusive.\n     * This is a consolidated error handler for all various Vector members that\n     * accept index parameters.\n     * The prefix parameter represents a text string to place at the start of\n     * the error message, generally to help indicate which member threw the error.\n     *\n     * We make prefix a const char* rather than a std::string to avoid having to\n     * construct and then destroy the prefix with each call.\n     */\n    void checkIndex(int index, int min, int max, const char* prefix) const;\n\n    /*\n     * Hidden features\n     * ---------------\n     * The remainder of this file consists of the code required to\n     * support deep copying and iteration.  Including these methods\n     * in the public interface would make that interface more\n     * difficult to understand for the average client.\n     */\n\npublic:\n    /**\n     * Adds an element to the vector passed as the left-hand operatand.\n     * This form makes it easier to initialize vectors in old versions of C++.\n     * @bigoh O(1)\n     */\n    Vector& operator ,(const ValueType& value);\n\n    using iterator = stanfordcpplib::collections::CheckedIterator<typename ContainerType::iterator>;\n    using const_iterator = stanfordcpplib::collections::CheckedIterator<typename ContainerType::const_iterator>;\n\n    iterator begin();\n    iterator end();\n    const_iterator begin() const;\n    const_iterator end() const;\n\n    /* Updates the internal version count. Only our libraries need this, and they only\n     * need it in rare cases where an operation that's semantically mutating but bitwise\n     * non-mutating occurs.\n     */\n    void updateVersion();\n};\n\n/* Implementation section */\n\ntemplate <typename ValueType>\nVector<ValueType>::Vector(int n, ValueType value) {\n    if (n < 0) error(\"Cannot create a Vector with a negative number of elements.\");\n    _elements.assign(n, value);\n}\n\ntemplate <typename ValueType>\nVector<ValueType>::Vector(std::initializer_list<ValueType> list)\n        : _elements(list) {\n}\n\n/*\n * Implementation notes: Vector methods\n * ------------------------------------\n * The basic Vector methods are straightforward and should require\n * no detailed documentation.\n */\ntemplate <typename ValueType>\nvoid Vector<ValueType>::add(const ValueType& value) {\n    insert(size(), value);\n}\n\ntemplate <typename ValueType>\nVector<ValueType>& Vector<ValueType>::addAll(const Vector<ValueType>& v) {\n    for (const ValueType& value : v) {\n        add(value);\n    }\n    return *this;   // BUGFIX 2014/04/27\n}\n\ntemplate <typename ValueType>\nValueType& Vector<ValueType>::back() {\n    return const_cast<ValueType&>(static_cast<const Vector &>(*this).back());\n}\n\ntemplate <typename ValueType>\nconst ValueType& Vector<ValueType>::back() const {\n    if (isEmpty()) {\n        error(\"Vector::back: vector is empty\");\n    }\n    return _elements.back();\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::clear() {\n    _elements.clear();\n    _version.update();\n}\n\ntemplate <typename ValueType>\nbool Vector<ValueType>::contains(const ValueType& value) const {\n    return indexOf(value) >= 0;\n}\n\ntemplate <typename ValueType>\nbool Vector<ValueType>::equals(const Vector<ValueType>& v) const {\n    return stanfordcpplib::collections::equals(*this, v);\n}\n\ntemplate <typename ValueType>\nValueType& Vector<ValueType>::front() {\n    return const_cast<ValueType&>(static_cast<const Vector &>(*this).front());\n}\n\ntemplate <typename ValueType>\nconst ValueType& Vector<ValueType>::front() const {\n    if (isEmpty()) {\n        error(\"Vector::front: vector is empty\");\n    }\n    return _elements.front();\n}\n\ntemplate <typename ValueType>\nconst ValueType& Vector<ValueType>::get(int index) const {\n    checkIndex(index, 0, size()-1, \"get\");\n    return _elements[index];\n}\n\ntemplate <typename ValueType>\nint Vector<ValueType>::indexOf(const ValueType& value) const {\n    auto result = std::find(_elements.begin(), _elements.end(), value);\n    if (result == _elements.end()) return -1;\n    return result - _elements.begin();\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::insert(int index, const ValueType& value) {\n    checkIndex(index, 0, size(), \"insert\");\n    _elements.insert(_elements.begin() + index, value);\n    _version.update();\n}\n\ntemplate <typename ValueType>\nbool Vector<ValueType>::isEmpty() const {\n    return _elements.empty();\n}\n\ntemplate <typename ValueType>\nint Vector<ValueType>::lastIndexOf(const ValueType& value) const {\n    auto result = std::find(_elements.rbegin(), _elements.rend(), value);\n    if (result == _elements.rend()) return -1;\n\n    /* These iterators are going in the reverse direction, and so the index they give is the number of\n     * steps from the end of the range, not from the beginning. Reverse this before returning the\n     * value.\n     */\n    return (size() - 1) - (result - _elements.rbegin());\n}\n\n/*\n * Implementation notes: mapAll\n * ----------------------------\n * The various versions of the mapAll function apply the function or\n * function object to each element in ascending index order.\n */\ntemplate <typename ValueType>\nvoid Vector<ValueType>::mapAll(std::function<void (const ValueType&)> fn) const {\n    for (const auto& elem: _elements) {\n        fn(elem);\n    }\n}\n\ntemplate <typename ValueType>\nValueType Vector<ValueType>::pop_back() {\n    if (isEmpty()) {\n        error(\"Vector::pop_back: vector is empty\");\n    }\n    auto result = _elements.back();\n    _elements.pop_back();\n    _version.update();\n    return result;\n}\n\ntemplate <typename ValueType>\nValueType Vector<ValueType>::pop_front() {\n    if (isEmpty()) {\n        error(\"Vector::pop_front: vector is empty\");\n    }\n    auto result = _elements.front();\n    _elements.erase(_elements.begin());\n    _version.update();\n    return result;\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::push_back(const ValueType& value) {\n    insert(size(), value);\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::push_front(const ValueType& value) {\n    insert(0, value);\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::remove(int index) {\n    checkIndex(index, 0, size() - 1, \"remove\");\n    _elements.erase(_elements.begin() + index);\n    _version.update();\n}\n\ntemplate <typename ValueType>\nValueType Vector<ValueType>::removeBack() {\n    return pop_back();\n}\n\ntemplate <typename ValueType>\nValueType Vector<ValueType>::removeFront() {\n    return pop_front();\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::removeValue(const ValueType& value) {\n    int index = indexOf(value);\n    if (index >= 0) {\n        remove(index);\n    }\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::reverse() {\n    std::reverse(begin(), end());\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::set(int index, const ValueType& value) {\n    checkIndex(index, 0, size()-1, \"set\");\n    _elements[index] = value;\n}\n\ntemplate <typename ValueType>\nint Vector<ValueType>::size() const {\n    return _elements.size();\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::shuffle() {\n    for (int i = 0; i < size() - 1; i++) {\n        std::swap(_elements[i], _elements[randomInteger(i, size() - 1)]);\n    }\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::sort() {\n    std::sort(begin(), end());\n}\n\ntemplate <typename ValueType>\nVector<ValueType> Vector<ValueType>::subList(int start, int length) const {\n    checkIndex(start, 0, size(), \"subList\");\n    checkIndex(start + length, 0, size(), \"subList\");\n    if (length < 0) {\n        error(\"Vector::subList: length cannot be negative\");\n    }\n    Vector<ValueType> result;\n    for (int i = start; i < start + length; i++) {\n        result.add(get(i));\n    }\n    return result;\n}\n\ntemplate <typename ValueType>\nVector<ValueType> Vector<ValueType>::subList(int start) const {\n    return subList(start, size() - start);\n}\n\ntemplate <typename ValueType>\nstd::string Vector<ValueType>::toString() const {\n    std::ostringstream os;\n    os << *this;\n    return os.str();\n}\n\n/*\n * Implementation notes: Vector selection\n * --------------------------------------\n * The following code implements traditional array selection using\n * square brackets for the index.\n */\ntemplate <typename ValueType>\nValueType& Vector<ValueType>::operator [](int index) {\n    return const_cast<ValueType&>(static_cast<const Vector &>(*this)[index]);\n}\ntemplate <typename ValueType>\nconst ValueType& Vector<ValueType>::operator [](int index) const {\n    checkIndex(index, 0, size()-1, \"operator []\");\n    return _elements[index];\n}\n\ntemplate <typename ValueType>\nVector<ValueType> Vector<ValueType>::operator +(const Vector& v2) const {\n    Vector<ValueType> result = *this;\n    return result.addAll(v2);\n}\n\ntemplate <typename ValueType>\nVector<ValueType> Vector<ValueType>::operator +(const ValueType& elem) const {\n    Vector<ValueType> result = *this;\n    return result += elem;\n}\n\ntemplate <typename ValueType>\nVector<ValueType>& Vector<ValueType>::operator +=(const Vector& v2) {\n    return addAll(v2);\n}\n\ntemplate <typename ValueType>\nVector<ValueType>& Vector<ValueType>::operator +=(const ValueType& value) {\n    add(value);\n    return *this;\n}\n\ntemplate <typename ValueType>\nbool Vector<ValueType>::operator ==(const Vector& v2) const {\n    return equals(v2);\n}\n\ntemplate <typename ValueType>\nbool Vector<ValueType>::operator !=(const Vector& v2) const {\n    return !equals(v2);\n}\n\ntemplate <typename ValueType>\nbool Vector<ValueType>::operator <(const Vector& v2) const {\n    return stanfordcpplib::collections::compare(*this, v2) < 0;\n}\n\ntemplate <typename ValueType>\nbool Vector<ValueType>::operator <=(const Vector& v2) const {\n    return stanfordcpplib::collections::compare(*this, v2) <= 0;\n}\n\ntemplate <typename ValueType>\nbool Vector<ValueType>::operator >(const Vector& v2) const {\n    return stanfordcpplib::collections::compare(*this, v2) > 0;\n}\n\ntemplate <typename ValueType>\nbool Vector<ValueType>::operator >=(const Vector& v2) const {\n    return stanfordcpplib::collections::compare(*this, v2) >= 0;\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::checkIndex(int index, int min, int max, const char* prefix) const {\n    if (index < min || index > max) {\n        std::ostringstream out;\n        out << \"Vector::\" << prefix << \": index of \" << index\n            << \" is outside of valid range \";\n        if (isEmpty()) {\n            out << \" (empty vector)\";\n        } else {\n            out << \"[\";\n            if (min < max) {\n                out << min << \"..\" << max;\n            } else if (min == max) {\n                out << min;\n            } // else min > max, no range, empty vector\n            out << \"]\";\n        }\n        error(out.str());\n    }\n}\n\n/*\n * Implementation notes: The , operator\n * ------------------------------------\n * The comma operator works adding the right operand to the vector and\n * then returning the vector by reference so that it is set for the next\n * value in the chain.\n */\ntemplate <typename ValueType>\nVector<ValueType>& Vector<ValueType>::operator ,(const ValueType& value) {\n    add(value);\n    return *this;\n}\n\n/*\n * Implementation notes: << and >>\n * -------------------------------\n * The insertion and extraction operators use the template facilities in\n * strlib.h to read and write generic values in a way that treats strings\n * specially.\n */\ntemplate <typename ValueType>\nstd::ostream& operator <<(std::ostream& os, const Vector<ValueType>& vec) {\n    return stanfordcpplib::collections::writeCollection(os, vec);\n}\n\ntemplate <typename ValueType>\nstd::istream& operator >>(std::istream& is, Vector<ValueType>& vec) {\n    ValueType element;\n    return stanfordcpplib::collections::readCollection(is, vec, element, /* descriptor */ \"Vector::operator >>\");\n}\n\n\n/*\n * Implementation notes: Iterator support\n * --------------------------------------\n * We used the checked iterator type, which requires us to provide information\n * about the full range of values available.\n */\ntemplate <typename ValueType>\ntypename Vector<ValueType>::iterator Vector<ValueType>::begin() {\n    return { &_version, _elements.begin(), _elements };\n}\ntemplate <typename ValueType>\ntypename Vector<ValueType>::const_iterator Vector<ValueType>::begin() const {\n    return { &_version, _elements.begin(), _elements };\n}\ntemplate <typename ValueType>\ntypename Vector<ValueType>::iterator Vector<ValueType>::end() {\n    return { &_version, _elements.end(), _elements };\n}\ntemplate <typename ValueType>\ntypename Vector<ValueType>::const_iterator Vector<ValueType>::end() const {\n    return { &_version, _elements.end(), _elements };\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::updateVersion() {\n    _version.update();\n}\n\n/*\n * Template hash function for vectors.\n * Requires the element type in the Vector to have a hashCode function.\n */\ntemplate <typename ValueType>\nint hashCode(const Vector<ValueType>& vec) {\n    return stanfordcpplib::collections::hashCodeCollection(vec);\n}\n\n/*\n * Function: randomElement\n * Usage: element = randomElement(v);\n * ----------------------------------\n * Returns a randomly chosen element of the given vector.\n * Throws an error if the vector is empty.\n */\ntemplate <typename T>\nconst T& randomElement(const Vector<T>& vec) {\n    return stanfordcpplib::collections::randomElementIndexed(vec);\n}\n\n/*\n * Randomly rearranges the elements of the given vector.\n */\ntemplate <typename T>\nvoid shuffle(Vector<T>& v) {\n    v.shuffle();\n}\n\n#endif // _vector_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/console.h",
    "content": "/*\n * File: console.h\n * ---------------\n * This file contains functions related to the library's graphical console window,\n * implemented using the Qt graphics library in native C++ instead of Java.\n * In general if you #include this file, it will implicitly enable the graphical\n * console.  If you don't want to do that, you should #define a flag named\n * __DONT_ENABLE_QT_GRAPHICAL_CONSOLE right before #include'ing this header.\n * Once the graphical console has been enabled, it cannot easily be turned off\n * again for that program.\n * \n * @author Marty Stepp\n * @version 2018/11/22\n * - added headless mode support\n * @version 2018/10/18\n * - fixed includes to avoid accidentally enabling GUI unintentionally\n * @version 2018/09/08\n * - added doc comments for new documentation generation\n * @version 2018/08/27\n * - cleaned up comments\n * @version 2018/08/23\n * - renamed to console.h to replace Java version\n * - separated out gconsolewindow.h/cpp\n * @version 2018/07/29\n * - menu, icons, hotkeys\n * @version 2018/07/26\n * - refactored GConsoleWindow class\n * @version 2018/07/15\n * - initial version, based on io/console.h\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _console_h\n#define _console_h\n\n#include <iostream>\n#include <sstream>\n#include <string>\n\n#ifndef SPL_HEADLESS_MODE\nclass GConsoleWindow;\nclass GDimension;\nclass GPoint;\n#endif // SPL_HEADLESS_MODE\n\n/**\n * Erases the contents of the console window.\n */\nvoid clearConsole();\n\n/**\n * Returns whether the console's \"clear\" function should be enabled.\n * Default true.  If false, clear() will just print a message\n * rather than actually clearing the console.\n * @private\n */\nbool getConsoleClearEnabled();\n\n/**\n * Returns what the console will do when the user hits its \"close\" button.\n * By default, this is CONSOLE_HIDE_ON_CLOSE unless set otherwise.\n */\n/* GWindow::CloseOperation */ int getConsoleCloseOperation();\n\n/**\n * Returns whether or not the input/output from the Stanford graphical\n * console window is being echoed onto the standard operating system terminal\n * window. Initially this is false unless set to true by a previous call to\n * setConsoleEcho(true).\n */\nbool getConsoleEcho();\n\n/**\n * Returns whether the graphical console window is enabled.\n * This is true if you have included \"qconsole.h\" in your program.\n */\nbool getConsoleEnabled();\n\n/**\n * Returns whether an event should be generated if the console\n * window is closed.  By default this is false initially.\n * @private\n * @deprecated\n */\nbool getConsoleEventOnClose();\n\n/**\n * Returns whether the overall C++ program will terminate if the console\n * window is closed.  By default this is false initially.\n */\nbool getConsoleExitProgramOnClose();\n\n/**\n * Returns the font currently being used by the console.  The font\n * is typically a string in the form <code>family-style-size</code>.\n * In this string, <code>family</code> is the name of the font family;\n * <code>style</code> is either missing (indicating a plain font) or one\n * of the strings <code>Bold</code>, <code>Italic</code>, or\n * <code>BoldItalic</code>; and <code>size</code> is an integer\n * indicating the point size.\n * See gfont.h for more information about font strings.\n */\nstd::string getConsoleFont();\n\n/**\n * Returns the height of the console window in pixels.\n */\ndouble getConsoleHeight();\n\n/**\n * Returns the x/y position of the top-left corner of the console window.\n */\n#ifndef SPL_HEADLESS_MODE\nGPoint getConsoleLocation();\n#endif // SPL_HEADLESS_MODE\n\n/**\n * Returns whether the location of the console window should be remembered and\n * restored between runs of the program.  Initially false.\n */\nbool getConsoleLocationSaved();\n\n/**\n * Returns whether or not a feature is enabled that causes exceptions to be\n * echoed to the Stanford graphical console window when they are thrown.\n * Disabled (false) by default.\n */\nbool getConsolePrintExceptions();\n\n/**\n * Returns whether functions like setConsoleFont or setConsoleSize\n * are currently ignored.  See setConsoleSettingsLocked.\n * Clients should generally not call this method.\n * @private\n */\nbool getConsoleSettingsLocked();\n\n/**\n * Returns the size of the console window in pixels.\n */\n#ifndef SPL_HEADLESS_MODE\nGDimension getConsoleSize();\n#endif // SPL_HEADLESS_MODE\n\n/**\n * Returns the width of the console window in pixels.\n */\ndouble getConsoleWidth();\n\n/**\n * Returns a pointer to the graphical console window,\n * which is a subclass of GWindow, so you can manipulate it as you would\n * any other window.\n *\n * @private\n */\n#ifndef SPL_HEADLESS_MODE\nGConsoleWindow* getConsoleWindow();\n#endif // SPL_HEADLESS_MODE\n\n/**\n * Returns the title bar text of the console window.\n */\nstd::string getConsoleWindowTitle();\n\n/**\n * Initializes the state of the Qt graphical console, if it has not already\n * been initialized.\n * Clients should generally not call this method.\n * @private\n */\nvoid initializeQtGraphicalConsole();\n\n// defined in gwindow.h/cpp\nextern void pause(double milliseconds);\n\n/**\n * Returns whether the console's \"clear\" function should be enabled.\n * Default true.  If false, clear() will just print a message\n * rather than actually clearing the console.\n * This is sometimes used to facilitate creation of auto-grading scripts.\n * @private\n */\nvoid setConsoleClearEnabled(bool value);\n\n/**\n * Sets what the console should do when the user hits its \"close\" button.\n */\nvoid setConsoleCloseOperation(/*GWindow::CloseOperation*/ int op);\n\n/**\n * Enables or disables echoing the input/output from the Stanford graphical\n * console window onto the standard operating system terminal window.\n * Normally you don't need this echoing, but if you want to be able to copy\n * and paste your console interaction into another window, it is useful.\n */\nvoid setConsoleEcho(bool echo);\n\n/**\n * Sets the color used to display text in the console window.\n * The color string passed should be in a hex format such as \"#ffa32f\";\n * See gcolor.h for more detail about colors and color strings.\n */\nvoid setConsoleErrorColor(const std::string& color);\n\n/**\n * Sets whether an event should be generated if the console\n * window is closed.  By default this is false initially.\n * @private\n * @deprecated\n */\nvoid setConsoleEventOnClose(bool eventOnClose);\n\n/**\n * Sets whether the overall C++ program should terminate if the console\n * window is closed.  By default this is false initially.\n */\nvoid setConsoleExitProgramOnClose(bool exitOnClose);\n\n/**\n * Changes the font used for the console.  The <code>font</code> parameter\n * is typically a string in the form <code>family-style-size</code>.\n * In this string, <code>family</code> is the name of the font family;\n * <code>style</code> is either missing (indicating a plain font) or one\n * of the strings <code>Bold</code>, <code>Italic</code>, or\n * <code>BoldItalic</code>; and <code>size</code> is an integer\n * indicating the point size.  If any of these components is\n * specified as an asterisk, the existing value is retained.\n * The <code>font</code> parameter can also be a sequence of\n * such specifications separated by semicolons, in which case the\n * first available font on the system is used.\n * See gfont.h for more detail about font strings.\n */\nvoid setConsoleFont(const std::string& font);\n\n/**\n * Changes the (x, y) pixel position of the top-left corner of the console to\n * the specified coordinates, relative to the top/left of the screen.\n */\nvoid setConsoleLocation(double x, double y);\n\n/**\n * Sets whether the location of the console window should be remembered and\n * restored between runs of the program.  Default false.\n */\nvoid setConsoleLocationSaved(bool value);\n\n/**\n * Sets the color used to display text in the console window.\n * The color string passed should be in a hex format such as \"#ffa32f\";\n * See gcolor.h for more detail about color strings.\n */\nvoid setConsoleOutputColor(const std::string& color);\n\n/**\n * Enables or disables a feature that causes exceptions to be echoed to the\n * Stanford graphical console window when they are thrown.\n * Disabled (false) by default.\n * Note that using this feature may make it harder to get a stack trace in the\n * debugger if you are debugging the cause of an exception.\n */\nvoid setConsolePrintExceptions(bool printExceptions, bool force = false);\n\n/**\n * If set to true, disables functions like setConsoleFont or setConsoleSize,\n * to facilitate autograder construction by negating any such calls in the\n * student's main program.  Initially false.\n * Clients should generally not call this method.\n * @private\n */\nvoid setConsoleSettingsLocked(bool value);\n\n/**\n * Changes the size of the console to the specified dimensions in pixels.\n */\nvoid setConsoleSize(double width, double height);\n\n/**\n * Changes the title bar text of the console window to the specified text.\n */\nvoid setConsoleWindowTitle(const std::string& title);\n\n/**\n * Closes the graphical console window and turns it off.\n */\nvoid shutdownConsole();\n\n#endif // _console_h\n\n\n/*\n * console.h is weird in that a student's program must be able to #include it\n * and then magically receive the graphical console instead of the standard one;\n * but we want other lib files to be able to include console.h to get the\n * function prototypes without actually turning the graphical console on.\n * To achieve this, we have the __DONT_ENABLE_QT_GRAPHICAL_CONSOLE flag that lib\n * files can set right before #include'ing console.h.  If they do so, it will\n * declare the prototypes but not initialize the graphical console.\n */\n#ifndef __DONT_ENABLE_QT_GRAPHICAL_CONSOLE\n\n// signal that graphical console is in use (so it will be initialized)\n#define SPL_GRAPHICAL_CONSOLE_IN_USE 1\n\nextern void setConsoleEnabled(bool);\n\nnamespace stanfordcpplib {\nnamespace qtgui {\n\n#ifndef QtConsoleInitializer_created\n#define QtConsoleInitializer_created\n/**\n * @private\n */\nclass QtConsoleInitializer_private {\npublic:\n    /*\n     * Code to initialize the library.\n     * Implemented as a class constructor so that it will run during\n     * static initialization phase, which happens before the student's\n     * main function.\n     */\n    QtConsoleInitializer_private() {\n        setConsoleEnabled(true);\n    }\n};\n\n/**\n * @private\n */\nstatic QtConsoleInitializer_private __qt_console_init;\n#endif // QtConsoleInitializer_created\n\n} // namespace qtgui\n} // namespace stanfordcpplib\n\n#endif // __DONT_ENABLE_QT_GRAPHICAL_CONSOLE\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/consoletext.h",
    "content": "/*\n * File: consoletext.h\n * -------------------\n * This file provides a way to use the functions from console.h\n * without mandating the use of the Stanford C++ library's\n * graphical console window.\n * \n * @author Marty Stepp\n * @version 2018/08/31\n * - initial version\n */\n\n#define __DONT_ENABLE_QT_GRAPHICAL_CONSOLE\n#include \"console.h\"\n#undef __DONT_ENABLE_QT_GRAPHICAL_CONSOLE\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/gbrowserpane.h",
    "content": "/*\n * File: gbrowserpane.h\n * --------------------\n * This file declares the <code>GBrowserPane</code> class, which is a\n * graphical interactor that displays a web page.\n *\n * @version 2019/04/23\n * - moved some event-handling code to GInteractor superclass\n * @version 2018/12/28\n * - added methods for text selection, scrolling, cursor position, key/mouse listeners\n * @version 2018/09/17\n * - fixed thread safety bugs\n * - added link listener events\n * @version 2018/09/08\n * - added doc comments for new documentation generation\n * @version 2018/08/23\n * - renamed to gbrowserpane.h to replace Java version\n * @version 2018/07/15\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n// signal that GUI system is in use (so it will be initialized)\n#define SPL_QT_GUI_IN_USE 1\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _gbrowserpane_h\n#define _gbrowserpane_h\n\n#include <string>\n#include <QSize>\n#include <QTextBrowser>\n#include <QWidget>\n\n#define INTERNAL_INCLUDE 1\n#include \"gevent.h\"\n#define INTERNAL_INCLUDE 1\n#include \"ginteractor.h\"\n#undef INTERNAL_INCLUDE\n\nclass _Internal_QTextBrowser;\n\n/**\n * A GBrowserPane is a graphical interactor that displays a web page.\n * This interactor is a wrapping around the Qt QTextBrowser widget, which is\n * able to display rich content such as HTML pages.\n *\n * You can use GBrowserPane to implement the core rendering engine of a basic\n * web browser, though it does not support all web browser features such as\n * JavaScript content, secure sessions, or cookies.\n */\nclass GBrowserPane : public GInteractor {\npublic:\n    /**\n     * Constructs a new browser pane.\n     * If a URL string is passed, loads the data from that URL.\n     * Otherwise, the pane is initially blank.\n     */\n    GBrowserPane(const std::string& url = \"\", QWidget* parent = nullptr);\n\n    /**\n     * Frees memory allocated internally by the browser pane.\n     */\n    virtual ~GBrowserPane() Q_DECL_OVERRIDE;\n\n    /**\n     * Deselects any text that is currently selected in the pane.\n     */\n    virtual void clearSelection();\n\n    /**\n     * Sets the text in the pane to be empty.\n     */\n    virtual void clearText();\n\n    /**\n     * Returns the MIME content type for the current page.\n     * The default content type is \"text/html\".\n     * (If you need to look up the content type for a given file/page extension,\n     * consider using the HttpServer::getContentType(extension) function.)\n     */\n    virtual std::string getContentType() const;\n\n    /**\n     * Returns the keyboard cursor's current position in the text pane as a\n     * 0-based character index within the overall text string.\n     */\n    virtual int getCursorPosition() const;\n\n    /* @inherit */\n    virtual _Internal_QWidget* getInternalWidget() const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns the URL of the web page or file name being currently viewed.\n     * If no page or file has been loaded, returns an empty string.\n     */\n    virtual std::string getPageUrl() const;\n\n    /**\n     * Returns the text that is currently selected in the text pane.\n     * If no text is currently selected, returns an empty string.\n     */\n    virtual std::string getSelectedText() const;\n\n    /**\n     * Returns the index just past the end of the current selection of text as a\n     * 0-based character index within the overall text string.\n     * If no text is currently selected, returns -1.\n     */\n    virtual int getSelectionEnd() const;\n\n    /**\n     * Returns the number of characters that are currently selected.\n     * If no text is currently selected, returns 0.\n     */\n    virtual int getSelectionLength() const;\n\n    /**\n     * Returns the index of the start of the current selection of text as a\n     * 0-based character index within the overall text string.\n     * If no text is currently selected, returns -1.\n     */\n    virtual int getSelectionStart() const;\n\n    /**\n     * Returns the full text of the current page or file being displayed in the pane.\n     * This could be a fairly long string, depending on the page.\n     * Initially an empty string if no page or file has yet been loaded.\n     */\n    virtual std::string getText() const;\n\n    /* @inherit */\n    virtual std::string getType() const Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual QWidget* getWidget() const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns whether the text pane allows the user to modify its text.\n     * Default false.\n     */\n    virtual bool isEditable() const;\n\n    /**\n     * Returns whether the text pane wraps its text when a line becomes too long.\n     * Default true.\n     */\n    virtual bool isLineWrap() const;\n\n    /**\n     * Sets the text pane's keyboard cursor position to the end of the\n     * current text.\n     */\n    virtual void moveCursorToEnd();\n\n    /**\n     * Sets the text pane's keyboard cursor position to the start of the\n     * current text.\n     */\n    virtual void moveCursorToStart();\n\n    /**\n     * Reads text from the given file and displays the entire file's text as the\n     * contents of this formatted pane.\n     * The pane will try to display the content in the best appropriate format,\n     * such as rendering basic HTML content with formatting intact.\n     * If the file cannot be read, sets the pane's text to be empty.\n     */\n    virtual void readTextFromFile(std::istream& file);\n\n    /**\n     * Reads text from the given file and displays the entire file's text as the\n     * contents of this formatted pane.\n     * The pane will try to display the content in the best appropriate format,\n     * such as rendering basic HTML content with formatting intact.\n     * If the file does not exist or cannot be read, sets the pane's text to be empty.\n     */\n    virtual void readTextFromFile(const std::string& filename);\n\n    /**\n     * Reads text from the given web page URL and displays the entire page's\n     * text as the contents of this formatted pane.\n     * If the page does not exist or cannot be read, sets the pane's text to be empty.\n     */\n    virtual void readTextFromUrl(const std::string& url);\n\n    /**\n     * Removes the link listener from the canvas so that it will no longer\n     * call it when hyperlink events occur.\n     */\n    virtual void removeLinkListener();\n\n    /**\n     * Removes the text change listener from this text pane so that it will no longer\n     * call it when the user modifies the text.\n     */\n    virtual void removeTextChangeListener();\n\n    /**\n     * Moves the visible scroll region of the text pane so that the bottom part\n     * of the text is visible.\n     */\n    virtual void scrollToBottom();\n\n    /**\n     * Moves the visible scroll region of the text pane so that the top part\n     * of the text is visible.\n     */\n    virtual void scrollToTop();\n\n    /**\n     * Sets the given range of text to be selected, beginning with the given start\n     * index as a 0-based character index within the overall text string, and\n     * extending for the given length of characters.\n     * @throw ErrorException if start index or length is negative\n     */\n    virtual void select(int startIndex, int length);\n\n    /**\n     * Selects the entire text of the text pane.\n     */\n    virtual void selectAll();\n\n    /**\n     * Sets the MIME content type being used to display the current/future pages.\n     * The default content type is \"text/html\".\n     * The suggested use of this function would be to call it just before calling\n     * loadTextFromFile or loadTextFromUrl.\n     * (If you need to look up the content type for a given file/page extension,\n     * consider using the HttpServer::getContentType(extension) function.)\n     */\n    virtual void setContentType(const std::string& contentType);\n\n    /**\n     * Moves the keyboard cursor to the given 0-based character index within\n     * the text.\n     * @throw ErrorException if index is negative\n     */\n    virtual void setCursorPosition(int index, bool keepAnchor = false);\n\n    /**\n     * Sets whether the text pane allows the user to modify its text.\n     * Default true.\n     */\n    virtual void setEditable(bool value);\n\n    /**\n     * Sets whether the text pane wraps its text when a line becomes too long.\n     * Default true.\n     */\n    virtual void setLineWrap(bool wrap);\n\n    /**\n     * Sets a link listener on this canvas so that it will be called\n     * when the user clicks on hyperlinks on the pane.\n     * Any existing mouse listener will be replaced.\n     */\n    virtual void setLinkListener(GEventListener func);\n\n    /**\n     * Sets a link listener on this canvas so that it will be called\n     * when the user clicks on hyperlinks on the pane.\n     * Any existing mouse listener will be replaced.\n     */\n    virtual void setLinkListener(GEventListenerVoid func);\n\n    /**\n     * Sets a mouse listener on this text pane so that it will be called\n     * when the user moves or clicks the mouse.\n     * Any existing mouse listener will be replaced.\n     */\n    virtual void setMouseListener(GEventListener func) Q_DECL_OVERRIDE;\n\n    /**\n     * Sets a mouse listener on this text pane so that it will be called\n     * when the user moves or clicks the mouse.\n     * Any existing mouse listener will be replaced.\n     */\n    virtual void setMouseListener(GEventListenerVoid func) Q_DECL_OVERRIDE;\n\n    /**\n     * Sets the pane to display to the given contents using its current content type.\n     * For example, if you build your own string of HTML or text content and want\n     * to display it in the pane without saving it to a file, this is the method to use.\n     */\n    virtual void setText(const std::string& text);\n\n    /**\n     * Sets a text change listener on this text pane so that it will be called\n     * when the user modifies the current text.\n     * Any existing text change listener will be replaced.\n     *\n     * A text change listener is similar to a key listener in that each will\n     * fire an event when the user types a character in the text pane.\n     * But a key listener will fire when any key is pressed, even one that does\n     * not modify the text itself, such as when the user presses an arrow key\n     * or the Ctrl key or Esc or any other special character.\n     *\n     * A text change listener will fire only when the actual text changes, such\n     * as when the user types a new character into the area.\n     */\n    virtual void setTextChangeListener(GEventListener func);\n\n    /**\n     * Sets a text change listener on this text pane so that it will be called\n     * when the user modifies the current text.\n     * Any existing text change listener will be replaced.\n     *\n     * A text change listener is similar to a key listener in that each will\n     * fire an event when the user types a character in the text pane.\n     * But a key listener will fire when any key is pressed, even one that does\n     * not modify the text itself, such as when the user presses an arrow key\n     * or the Ctrl key or Esc or any other special character.\n     *\n     * A text change listener will fire only when the actual text changes, such\n     * as when the user types a new character into the area.\n     */\n    virtual void setTextChangeListener(GEventListenerVoid func);\n\nprivate:\n    Q_DISABLE_COPY(GBrowserPane)\n\n    std::string _pageUrl;   // url/filename of the most recently loaded page\n    std::string _contentType;\n    _Internal_QTextBrowser* _iqtextbrowser;\n\n    friend class _Internal_QTextBrowser;\n};\n\n/**\n * Internal class; not to be used by clients.\n * @private\n */\nclass _Internal_QTextBrowser : public QTextBrowser, public _Internal_QWidget {\n    Q_OBJECT\n\npublic:\n    _Internal_QTextBrowser(GBrowserPane* gbrowserpane, QWidget* parent = nullptr);\n    virtual void detach() Q_DECL_OVERRIDE;\n    QVariant loadResource(int type, const QUrl &url) Q_DECL_OVERRIDE;\n    virtual void mousePressEvent(QMouseEvent* event) Q_DECL_OVERRIDE;\n    virtual void mouseReleaseEvent(QMouseEvent* event) Q_DECL_OVERRIDE;\n    virtual QSize sizeHint() const Q_DECL_OVERRIDE;\n\nprivate:\n    GBrowserPane* _gbrowserpane;\n    QString _clickedLink;\n};\n\n#endif // _gbrowserpane_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/gbufferedimage.h",
    "content": "/*\n * File: qbufferedimage.h\n * ----------------------\n * This file exports the GBufferedImage class for per-pixel graphics.\n * See qgbufferedimage.cpp for implementation of each member.\n *\n * @author Marty Stepp\n * @version 2018/08/23\n * - renamed to gbufferedimage.h to replace Java version\n * @version 2018/07/12\n * - refactored to be an alias for GCanvas, which contains a superset of its functionality\n * @version 2018/07/07\n * - initial version based on GBufferedImage source\n */\n\n#ifndef _gbufferedimage_h\n#define _gbufferedimage_h\n\n#include \"gcanvas.h\"\n\n// QGBufferedImage is just an alias for QGCanvas\ntypedef GCanvas GBufferedImage;\n\n// default color used to highlight pixels that do not match between two images\n#define GBUFFEREDIMAGE_DEFAULT_DIFF_PIXEL_COLOR 0xdd00dd\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#endif // _gbufferedimage_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/gbutton.h",
    "content": "/*\n * File: gbutton.h\n * ---------------\n *\n * @author Marty Stepp\n * @version 2019/04/23\n * - moved some event-handling code to GInteractor superclass\n * @version 2019/04/22\n * - added setIcon with QIcon and QPixmap\n * @version 2018/09/07\n * - added doc comments for new documentation generation\n * @version 2018/09/04\n * - added double-click event support\n * @version 2018/08/23\n * - renamed to gbutton.h to replace Java version\n * @version 2018/06/25\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n// signal that GUI system is in use (so it will be initialized)\n#define SPL_QT_GUI_IN_USE 1\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _gbutton_h\n#define _gbutton_h\n\n#include <string>\n#include <QWindow>\n#include <QEvent>\n#include <QMouseEvent>\n#include <QPushButton>\n#include <QSize>\n#include <QToolButton>\n#include <QWidget>\n\n#define INTERNAL_INCLUDE 1\n#include \"ginteractor.h\"\n#undef INTERNAL_INCLUDE\n\nclass _Internal_QPushButton;\n\n/**\n * This interactor subclass represents an onscreen button.\n * You can listen for clicks on a button using the setActionListener method,\n * passing the function you want to call on each click.\n */\nclass GButton : public GInteractor {\npublic:\n    /**\n     * Creates a button with the specified text label and optional icon.\n     */\n    GButton(const std::string& text = \"\", const std::string& iconFileName = \"\", QWidget* parent = nullptr);\n\n    /**\n     * Creates a button with the specified text label and icon.\n     */\n    GButton(const std::string& text, const QIcon& icon, QWidget* parent = nullptr);\n\n    /**\n     * Creates a button with the specified text label and icon.\n     */\n    GButton(const std::string& text, const QPixmap& icon, QWidget* parent = nullptr);\n\n    /**\n     * Frees memory allocated internally by the button.\n     */\n    virtual ~GButton() Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual std::string getAccelerator() const Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual std::string getActionCommand() const Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual _Internal_QWidget* getInternalWidget() const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns the button's text.\n     * @return the text\n     */\n    virtual std::string getText() const;\n\n    /**\n     * Returns the button's text position relative to its icon.\n     * The default is TEXT_BESIDE_ICON, but it can be changed to TEXT_UNDER_ICON\n     * by calling the setTextPosition method.\n     */\n    virtual GInteractor::TextPosition getTextPosition() const;\n\n    /* @inherit */\n    virtual std::string getType() const Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual QWidget* getWidget() const Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void setAccelerator(const std::string& accelerator) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void setIcon(const QIcon& icon) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void setIcon(const QPixmap& icon) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void setIcon(const std::string& filename, bool retainIconSize = true) Q_DECL_OVERRIDE;\n\n    /**\n     * Sets the text on the button to be the given text.\n     */\n    virtual void setText(const std::string& text);\n\n    /**\n     * Sets the button's text position relative to its icon.\n     * The default is TEXT_BESIDE_ICON, but it can be changed to TEXT_UNDER_ICON.\n     */\n    virtual void setTextPosition(GInteractor::TextPosition position);\n\n    /**\n     * Sets the button's text position relative to its icon.\n     * Clients should not call this method; it is a relic from an older Java-based\n     * GUI system.\n     * @private\n     */\n    virtual void setTextPosition(SwingConstants horizontal, SwingConstants vertical) Q_DECL_DEPRECATED;\n\nprivate:\n    Q_DISABLE_COPY(GButton)\n    _Internal_QPushButton* _iqpushbutton;\n\n    friend class _Internal_QPushButton;\n};\n\n/**\n * Internal class; not to be used by clients.\n * @private\n */\nclass _Internal_QPushButton : public QToolButton, public _Internal_QWidget {\n    Q_OBJECT\n\npublic:\n    _Internal_QPushButton(GButton* button, QWidget* parent = nullptr);\n    virtual void detach() Q_DECL_OVERRIDE;\n    virtual QSize sizeHint() const Q_DECL_OVERRIDE;\n\nsignals:\n    void doubleClicked();\n\npublic slots:\n    void handleClick();\n\nprotected:\n    void mouseDoubleClickEvent(QMouseEvent* e) Q_DECL_OVERRIDE;\n\nprivate:\n    GButton* _gbutton;\n\n    friend class GButton;\n};\n\n#endif // _gbutton_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/gcanvas.h",
    "content": "/*\n * File: gcanvas.h\n * ---------------\n *\n * @author Marty Stepp\n * @version 2019/05/01\n * - added createArgbPixel\n * - bug fixes related to save / setPixels with alpha transparency\n * @version 2019/03/07\n * - added support for loading canvas directly from istream (htiek)\n * @version 2018/09/10\n * - added doc comments for new documentation generation\n * @version 2018/09/04\n * - added double-click event support\n * @version 2018/08/23\n * - renamed to gcanvas.h to replace Java version\n * @version 2018/06/30\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n// signal that GUI system is in use (so it will be initialized)\n#define SPL_QT_GUI_IN_USE 1\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _gcanvas_h\n#define _gcanvas_h\n\n#include <string>\n#include <QWindow>\n#include <QEvent>\n#include <QKeyEvent>\n#include <QMouseEvent>\n#include <QPainter>\n#include <QPaintEvent>\n#include <QResizeEvent>\n#include <QSize>\n#include <QWheelEvent>\n#include <QWidget>\n\n#define INTERNAL_INCLUDE 1\n#include \"gdrawingsurface.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gevent.h\"\n#define INTERNAL_INCLUDE 1\n#include \"ginteractor.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gobjects.h\"\n#undef INTERNAL_INCLUDE\n\n// default color used to highlight pixels that do not match between two images\n#define GCANVAS_DEFAULT_DIFF_PIXEL_COLOR 0xdd00dd\n\nclass _Internal_QCanvas;\n\n/**\n * A GCanvas is a graphical drawing surface on which you can draw shapes, lines,\n * and colors, as well as setting the RGB color values of individual pixels.\n *\n * The graphical canvas consists of two layers:\n *\n * 1) The background layer provides a surface for drawing static pictures that\n * involve no animation, or for 2D pixel-based drawing algorithms.\n * The class includes several drawXxx and fillXxx methods that draw\n * lines, rectangles, and ovals on the background layer.\n *\n * The setPixel and setPixels methods manipulate the color of pixels in the\n * background layer.  You can get all of the pixels as a Grid using getPixels,\n * modify the grid, then pass it back in using setPixels, to perform 2D\n * pixel-based manipulations on the canvas.\n *\n * 2) The foreground layer provides an abstraction for adding stateful shapes and\n * graphical objects onto the canvas.  The add() methods that accept GObject\n * parameters place these objects onto the foreground layer.  The advantage of\n * the foreground layer is that you can manipulate the object over time, such as\n * moving it, changing its color, size, or other properties, and see these\n * changes immediately on the screen.  This makes the foreground layer most\n * appropriate for animations or moving sprites.\n *\n * A GCanvas is implicitly added to the center of every GWindow when the client\n * calls the window's add(), drawXxx/fillXxx, or other methods.  In most cases\n * the window just forwards these method calls to its internal GCanvas, which\n * performs the bulk of the work.\n *\n * See gobjects.h for more detail about drawing shapes and objects.\n */\nclass GCanvas : public virtual GInteractor, public virtual GDrawingSurface {\npublic:\n    /**\n     * Largest value that an image's width and/or height can have.\n     * Error will be thrown if you try to make/resize an image larger than this.\n     */\n    static const int WIDTH_HEIGHT_MAX;\n\n    /**\n     * Creates a single ARGB integer from the given A-R-G-B components from 0-255.\n     * @throw ErrorException if alpha, red, green, or blue is not between 0-255 inclusive\n     */\n    static int createArgbPixel(int alpha, int red, int green, int blue);\n\n    /**\n     * Creates a single RGB integer from the given R-G-B components from 0-255.\n     * @throw ErrorException if red, green, or blue is not between 0-255 inclusive\n     */\n    static int createRgbPixel(int red, int green, int blue);\n\n    /**\n     * Extracts the alpha component from 0-255 of the given ARGB integer.\n     * The alpha component comes from bits 24-31 (most significant) of the integer.\n     */\n    static int getAlpha(int argb);\n\n    /**\n     * Extracts the blue component from 0-255 of the given RGB integer.\n     * The blue component comes from bits 0-7 (least significant) of the integer.\n     */\n    static int getBlue(int rgb);\n\n    /**\n     * Extracts the green component from 0-255 of the given RGB integer.\n     * The green component comes from bits 8-15 of the integer.\n     */\n    static int getGreen(int rgb);\n\n    /**\n     * Extracts the red component from 0-255 of the given RGB integer.\n     * The red component comes from bits 16-23 of the integer.\n     */\n    static int getRed(int rgb);\n\n    /**\n     * Extracts the red, green, and blue components from 0-255\n     * of the given RGB integer, filling by reference.\n     */\n    static void getRedGreenBlue(int rgb, int& red, int& green, int& blue);\n\n    /**\n     * Creates an empty canvas with a default size of 0x0 pixels\n     * and a default background and foreground color of black.\n     */\n    GCanvas(QWidget* parent = nullptr);\n\n    /**\n     * Creates a canvas that loads its background layer pixel data from\n     * the given image file name.\n     * @throw ErrorException if the given file does not exist or cannot be read\n     *        as a valid image file\n     */\n    GCanvas(const std::string& filename, QWidget* parent = nullptr);\n\n    /**\n     * Creates a canvas that loads its background layer pixel data from\n     * the given input stream\n     * @throw ErrorException if the given stream cannot be read as a valid image file\n     */\n    GCanvas(std::istream& filename, QWidget* parent = nullptr);\n\n    /**\n     * Creates an empty canvas of the specified size and optional background color.\n     * If no background color is passed, a default transparent background is used.\n     * @throw ErrorException if the given width/height ranges are negative\n     * @throw ErrorException if the given rgb value is invalid or out of range\n     */\n    GCanvas(double width, double height, int rgbBackground, QWidget* parent = nullptr);\n\n    /**\n     * Creates an empty canvas of the specified size and background color.\n     * If no background color is passed, a default transparent background is used.\n     * @throw ErrorException if the given width/height ranges are negative\n     * @throw ErrorException if the given rgb value is invalid or out of range\n     */\n    GCanvas(double width, double height, const std::string& rgbBackground = \"#00000000\", QWidget* parent = nullptr);\n\n    /**\n     * Frees memory allocated internally by the canvas.\n     */\n    virtual ~GCanvas() Q_DECL_OVERRIDE;\n\n    /**\n     * Adds the given interactor to canvas.\n     * @throw ErrorException if the interactor is null\n     */\n    virtual void add(GObject* gobj);\n\n    /**\n     * Adds the given interactor to the canvas\n     * and moves it to the given x/y location.\n     * @throw ErrorException if the interactor is null\n     */\n    virtual void add(GObject* gobj, double x, double y);\n\n    /**\n     * Adds the given interactor to canvas.\n     */\n    virtual void add(GObject& gobj);\n\n    /**\n     * Adds the given interactor to the canvas\n     * and moves it to the given x/y location.\n     */\n    virtual void add(GObject& gobj, double x, double y);\n\n    /**\n     * Removes all graphical objects from the canvas foreground layer\n     * and wipes the background layer to show the current background color.\n     */\n    virtual void clear() Q_DECL_OVERRIDE;\n\n    /**\n     * Removes all graphical objects from the foreground layer of the canvas.\n     * This means that any shapes added using the add() methods, such as GRect,\n     * GOval, etc. will be removed, while any shapes drawn directly onto the\n     * canvas's background pixel layer by calling the drawXxx() methods will be\n     * retained.  To clear the background layer as well, call clearPixels\n     * or clear instead.\n     */\n    virtual void clearObjects();\n\n    /**\n     * Resets the background layer of pixels in the canvas to the current\n     * background color.\n     * This means that any shapes added using the add() methods, such as GRect,\n     * GOval, etc. will remain, while any shapes drawn directly onto the\n     * canvas's background pixel layer by calling the drawXxx() methods will be\n     * wiped out.  To clear the shapes added to the foreground layer as well,\n     * call clearObjects or clear instead.\n     */\n    virtual void clearPixels();\n\n    /**\n     * Returns true if any of the graphical objects in the foreground layer of\n     * the canvas touch the given x/y pixel.\n     */\n    virtual bool contains(double x, double y) const;\n\n    /**\n     * Returns the total number of pixels that are not the same color\n     * between this image and the given other image.\n     * If the images are not the same size, any pixels in the range of one image\n     * but out of the bounds of the other are considered to be differing.\n     * In this version of the method, the entire images are compared.\n     */\n    virtual int countDiffPixels(const GCanvas& image) const;\n\n    /**\n     * Returns the total number of pixels that are not the same color\n     * between this image and the given other image.\n     * If the images are not the same size, any pixels in the range of one image\n     * but out of the bounds of the other are considered to be differing.\n     * In this version of the method, you pass an (x,y) range of pixels to compare.\n     */\n    virtual int countDiffPixels(const GCanvas& image, int xmin, int ymin, int xmax, int ymax) const;\n\n    /**\n     * Returns the total number of pixels that are not the same color\n     * between this image and the given other image.\n     * If the images are not the same size, any pixels in the range of one image\n     * but out of the bounds of the other are considered to be differing.\n     * In this version of the method, the entire images are compared.\n     * @throw ErrorException if the image passed is null\n     */\n    virtual int countDiffPixels(const GCanvas* image) const;\n\n    /**\n     * Returns the total number of pixels that are not the same color\n     * between this image and the given other image.\n     * If the images are not the same size, any pixels in the range of one image\n     * but out of the bounds of the other are considered to be differing.\n     * In this version of the method, you pass an (x,y) range of pixels to compare.\n     * @throw ErrorException if the image passed is null\n     */\n    virtual int countDiffPixels(const GCanvas* image, int xmin, int ymin, int xmax, int ymax) const;\n\n    /**\n     * Generates a new canvas whose content is equal to that of this canvas but with\n     * any pixels that don't match those in parameter 'image' colored in the given\n     * color (default purple) to highlight differences between the two.\n     */\n    virtual GCanvas* diff(const GCanvas& image, int diffPixelColor = GCANVAS_DEFAULT_DIFF_PIXEL_COLOR) const;\n\n    /**\n     * Generates a new canvas whose content is equal to that of this canvas but with\n     * any pixels that don't match those in parameter 'image' colored in the given\n     * color (default purple) to highlight differences between the two.\n     * @throw ErrorException if the image passed is null\n     */\n    virtual GCanvas* diff(const GCanvas* image, int diffPixelColor = GCANVAS_DEFAULT_DIFF_PIXEL_COLOR) const;\n\n    /**\n     * Draws the given graphical object onto the background layer of the canvas.\n     * Note that since it is drawn on the background layer, future changes to\n     * the graphical object, such as setting its location, color, size, etc.,\n     * will not be reflected immediately on this canvas.\n     * If you do want such changes to be reflected, instead add the shape to\n     * the foreground layer using add().\n     * @throw ErrorException if the object passed is null\n     */\n    virtual void draw(GObject* gobj) Q_DECL_OVERRIDE;\n\n    /**\n     * @inherit\n     * @private\n     */\n    virtual void draw(QPainter* painter) Q_DECL_OVERRIDE;\n\n    /**\n     * Returns true if the two given canvases contain exactly the same pixel data.\n     */\n    virtual bool equals(const GCanvas& other) const;\n\n    /**\n     * Sets the color of every pixel in the canvas to the given color value.\n     * See gcolor.h for more detail about colors.\n     * @throw ErrorException if the given rgb value is not a valid color\n     */\n    virtual void fill(int rgb);\n\n    /**\n     * Sets the color of every pixel in the canvas to the given color value.\n     * See gcolor.h for more detail about colors.\n     */\n    virtual void fill(const std::string& rgb);\n\n    /**\n     * Sets the color of every pixel in the given rectangular range of the canvas\n     * pixel data to the given color value.\n     * Specifically, the pixels in the rectangular range (x, y) through\n     * (x + width - 1, y + height - 1) become filled with the given color.\n     * @throw ErrorException if the given x/y/width/height range goes outside\n     *        the bounds of the image,\n     *        or if the given rgb value is not a valid color\n     */\n    virtual void fillRegion(double x, double y, double width, double height, int rgb);\n\n    /**\n     * Sets the color of every pixel in the given rectangular range of the canvas\n     * pixel data to the given color value.\n     * Specifically, the pixels in the rectangular range (x, y) through\n     * (x + width - 1, y + height - 1) become filled with the given color.\n     * @throw ErrorException if the given x/y/width/height range goes outside\n     *        the bounds of the image\n     */\n    virtual void fillRegion(double x, double y, double width, double height,\n                            const std::string& rgb);\n\n    /**\n     * Moves all graphical objects from the foreground layer to the background\n     * layer.  This means that future changes to those objects will not be\n     * seen on the canvas.\n     */\n    virtual void flatten();\n\n    /**\n     * Replaces the entire contents of the background layer of the canvas with\n     * the contents of the given grid of RGB pixel values.\n     * If this image is not the same size as the grid, the image is resized.\n     * Any previous background layer contents are lost.\n     * Equivalent to getPixels.\n     */\n    virtual void fromGrid(const Grid<int>& grid);\n\n    /* @inherit */\n    virtual std::string getBackground() const Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual int getBackgroundInt() const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns a pointer to the graphical object in the foreground layer of\n     * the canvas at the specified index, numbering from back to front in the\n     * <i>z</i> dimension.\n     * @throw ErrorException if the index is out of range\n     */\n    virtual GObject* getElement(int index) const;\n\n    /**\n     * Returns a pointer to the first graphical object in the foreground layer of\n     * the canvas that contains the given (x, y) point, or a null pointer if no\n     * object in this canvas touches it.\n     */\n    virtual GObject* getElementAt(double x, double y) const;\n\n    /**\n     * Returns the number of graphical objects stored in the foreground layer\n     * of the canvas.\n     */\n    virtual int getElementCount() const;\n\n    /**\n     * Returns the name of the image file from which this canvas was loaded or\n     * to which it was saved most recently.\n     * If this canvas was not associated with any file, returns \"\".\n     */\n    virtual std::string getFilename() const;\n\n    /* @inherit */\n    virtual std::string getFont() const Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual _Internal_QWidget* getInternalWidget() const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns the color of the pixel at the given x/y coordinates of the\n     * background layer of the canvas as an integer such as 0xff00cc.\n     *\n     * Note that if you are planning to set many pixels in the background and\n     * want maximum performance, you should instead call getPixels to extract\n     * all pixels into a Grid, then manipulate all desired pixels in that Grid,\n     * then call setPixels to submit all of your changes.\n     *\n     * @throw ErrorException if the given x/y values are out of bounds.\n     */\n    virtual int getPixel(double x, double y) const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns the color of the pixel at the given x/y coordinates of the\n     * background layer of the canvas as an integer such as 0xffff00cc.\n     * This differs from getPixel in that it explicitly retains and returns\n     * the alpha channel of the pixel in the top 8 bits, allowing for\n     * transparency effects.\n     *\n     * Note that if you are planning to set many pixels in the background and\n     * want maximum performance, you should instead call getPixels to extract\n     * all pixels into a Grid, then manipulate all desired pixels in that Grid,\n     * then call setPixels to submit all of your changes.\n     *\n     * @throw ErrorException if the given x/y values are out of bounds.\n     */\n    virtual int getPixelARGB(double x, double y) const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns all pixels of the background layer of the canvas as a Grid,\n     * where rows represent y values and columns represent x values.\n     * So for example, grid[y][x] returns the RGB int value at that pixel.\n     * Equivalent to toGrid.\n     */\n    virtual Grid<int> getPixels() const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns all pixels of the background layer of the canvas as a Grid,\n     * where rows represent y values and columns represent x values.\n     * This differs from getPixels in that it explicitly retains and returns\n     * the alpha channel of each pixel in the top 8 bits, allowing for\n     * transparency effects.\n     */\n    virtual Grid<int> getPixelsARGB() const Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual std::string getType() const Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual QWidget* getWidget() const Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual bool isAutoRepaint() const Q_DECL_OVERRIDE;\n\n    /**\n     * Reads the canvas's pixel contents from the given image file.\n     * @throw ErrorException if the given file does not exist or cannot be read\n     *        as a valid image file\n     */\n    virtual void load(const std::string& filename);\n\n    /**\n     * Reads the canvas's pixel contents from the given input stream.\n     * @throw ErrorException if the given file does not exist or cannot be read\n     *        as a valid image file\n     */\n\n    /**\n     * Removes the given graphical object from the foreground layer of the canvas,\n     * if it was present.\n     * @throw ErrorException if the graphical object is null\n     */\n    virtual void remove(GObject* gobj);\n\n    /**\n     * Removes the given graphical object from the foreground layer of the canvas,\n     * if it was present.\n     */\n    virtual void remove(GObject& gobj);\n\n    /**\n     * Removes all graphical objects from the foreground layer of the canvas.\n     */\n    virtual void removeAll();\n\n    /**\n     * Instructs the canvas to redraw its layers.\n     * By default the canvas will automatically repaint itself whenever you make\n     * a change to either the background or foreground layer.\n     * But if you call setAutoRepaint(false), you must manually repaint the canvas\n     * to see any changes. This can be desirable if you plan to make a large batch\n     * of changes and want to repaint only after all of them are done.\n     */\n    virtual void repaint() Q_DECL_OVERRIDE;\n\n    /**\n     * Instructs the canvas to redraw the given region of pixels within both\n     * of its layers.\n     */\n    virtual void repaintRegion(int x, int y, int width, int height) Q_DECL_OVERRIDE;\n\n    /**\n     * Changes this image's bounds to be the given size.\n     * This does not scale the image but rather just changes the max x/y that\n     * can be painted onto this image.\n     * If the 'retain' parameter is not passed or is set to true,\n     * any existing pixel values will be kept during the resize.\n     * If 'retain' is false, the contents will be wiped and set to the default.\n     * Any existing pixel contents are discarded and revert to defaults.\n     * @throw ErrorException if the given width/height ranges are negative\n     */\n    virtual void resize(double width, double height, bool retain = true);\n\n    /**\n     * Saves the canvas's contents to the given image file.\n     * @throw ErrorException if the given file is not writeable.\n     */\n    virtual void save(const std::string& filename);\n\n    /**\n     * Sets whether the canvas will automatically repaint itself whenever you make\n     * a change to either the background or foreground layer.\n     * By default this is true.\n     * But if you call setAutoRepaint(false), you must manually repaint the canvas\n     * to see any changes. This can be desirable if you plan to make a large batch\n     * of changes and want to repaint only after all of them are done.\n     */\n    virtual void setAutoRepaint(bool autoRepaint) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void setBackground(int color) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void setBackground(const std::string& color) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void setColor(int color) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void setColor(const std::string& color) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void setFont(const QFont& font) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void setFont(const std::string& font) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void setForeground(int rgb) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void setForeground(const std::string& color) Q_DECL_OVERRIDE;\n\n    /**\n     * Sets a key listener on this canvas so that it will be called\n     * when any key is pressed or released on the canvas.\n     * Any existing key listener will be replaced.\n     */\n    virtual void setKeyListener(GEventListener func) Q_DECL_OVERRIDE;\n\n    /**\n     * Sets a key listener on this canvas so that it will be called\n     * when any key is pressed or released on the canvas.\n     * Any existing key listener will be replaced.\n     */\n    virtual void setKeyListener(GEventListenerVoid func) Q_DECL_OVERRIDE;\n\n    /**\n     * Sets the color of the given x/y pixel in the background layer of the\n     * canvas to the given RGB value.\n     *\n     * Note that if you are planning to set many pixels in the background and\n     * want maximum performance, you should instead call getPixels to extract\n     * all pixels into a Grid, then manipulate all desired pixels in that Grid,\n     * then call setPixels to submit all of your changes.\n     *\n     * @throw ErrorException if x/y is out of range or rgb is an invalid color\n     */\n    virtual void setPixel(double x, double y, int rgb) Q_DECL_OVERRIDE;\n\n    /**\n     * Sets the color of the given x/y pixel in the background layer of the\n     * canvas to the given RGB values.\n     *\n     * Note that if you are planning to set many pixels in the background and\n     * want maximum performance, you should instead call getPixels to extract\n     * all pixels into a Grid, then manipulate all desired pixels in that Grid,\n     * then call setPixels to submit all of your changes.\n     *\n     * @throw ErrorException if x/y is out of range or r,g,b are not between 0-255\n     */\n    virtual void setPixel(double x, double y, int r, int g, int b) Q_DECL_OVERRIDE;\n\n    /**\n     * Sets the color of the given x/y pixel in the background layer of the\n     * canvas to the given ARGB value.\n     *\n     * Note that if you are planning to set many pixels in the background and\n     * want maximum performance, you should instead call getPixelsARGB to extract\n     * all pixels into a Grid, then manipulate all desired pixels in that Grid,\n     * then call setPixelsARGB to submit all of your changes.\n     *\n     * @throw ErrorException if x/y is out of range or argb is an invalid color\n     */\n    virtual void setPixelARGB(double x, double y, int argb) Q_DECL_OVERRIDE;\n\n    /**\n     * Sets the color of the given x/y pixel in the background layer of the\n     * canvas to the given ARGB values.\n     *\n     * Note that if you are planning to set many pixels in the background and\n     * want maximum performance, you should instead call getPixelsARGB to extract\n     * all pixels into a Grid, then manipulate all desired pixels in that Grid,\n     * then call setPixelsARGB to submit all of your changes.\n     *\n     * @throw ErrorException if x/y is out of range or a,r,g,b are not between 0-255\n     */\n    virtual void setPixelARGB(double x, double y, int a, int r, int g, int b) Q_DECL_OVERRIDE;\n\n    /**\n     * Sets the color of the all pixels in the background layer of the\n     * canvas to the given RGB values, using rows as y-values and columns as\n     * x-values.  Any existing background layer pixels will be replaced.\n     * If the given grid is not the same size as this canvas, the canvas will\n     * be resized to match the grid.\n     * Equivalent to fromGrid.\n     */\n    virtual void setPixels(const Grid<int>& pixels) Q_DECL_OVERRIDE;\n\n    /**\n     * Sets the color of the all pixels in the background layer of the\n     * canvas to the given ARGB values, using rows as y-values and columns as\n     * x-values.  Any existing background layer pixels will be replaced.\n     * If the given grid is not the same size as this canvas, the canvas will\n     * be resized to match the grid.\n     */\n    virtual void setPixelsARGB(const Grid<int>& pixelsARGB) Q_DECL_OVERRIDE;\n\n    /**\n     * Converts the pixels of the canvas into a GImage object.\n     */\n    virtual GImage* toGImage() const;\n\n    /**\n     * Converts this canvas's pixel data into a grid of RGB pixels.\n     * The grid's first index is a row or y-index, and its second index\n     * is the column or x-index.\n     * So for example, grid[y][x] returns the RGB int value at that pixel.\n     * In this version of the method, the grid is returned.\n     * Equivalent to getPixels.\n     */\n    virtual Grid<int> toGrid() const;\n\n    /**\n     * Converts this canvas's pixel data into a grid of RGB pixels.\n     * The grid's first index is a row or y-index, and its second index\n     * is the column or x-index.\n     * So for example, grid[y][x] returns the RGB int value at that pixel.\n     * In this version of the method, the grid is filled by reference.\n     * Equivalent to getPixels.\n     */\n    virtual void toGrid(Grid<int>& grid) const;\n\nprivate:\n    Q_DISABLE_COPY(GCanvas)\n\n    _Internal_QCanvas* _iqcanvas;\n    GCompound _gcompound;\n    QImage* _backgroundImage;\n    std::string _filename;   // file canvas was loaded from; \"\" if not loaded from a file\n\n    friend class _Internal_QCanvas;\n\n    void ensureBackgroundImage();\n\n    void ensureBackgroundImageConstHack() const;\n\n    void init(double width, double height, int rgbBackground, QWidget* parent);\n\n    /**\n     * Reads the canvas's pixel contents from the given stream.\n     * @return true if loaded successfully and false if the load failed\n     */\n    virtual bool loadFromStream(std::istream& input);\n\n    void notifyOfResize(double width, double height);\n};\n\n\n/**\n * Internal class; not to be used by clients.\n * @private\n */\nclass _Internal_QCanvas : public QWidget, public _Internal_QWidget {\n    Q_OBJECT\n\npublic:\n    _Internal_QCanvas(GCanvas* gcanvas, QWidget* parent = nullptr);\n    virtual void detach() Q_DECL_OVERRIDE;\n    virtual void enterEvent(QEvent* event) Q_DECL_OVERRIDE;\n    virtual void keyPressEvent(QKeyEvent* event) Q_DECL_OVERRIDE;\n    virtual void keyReleaseEvent(QKeyEvent* event) Q_DECL_OVERRIDE;\n    virtual void leaveEvent(QEvent* event) Q_DECL_OVERRIDE;\n    virtual void mouseMoveEvent(QMouseEvent* event) Q_DECL_OVERRIDE;\n    virtual void mousePressEvent(QMouseEvent* event) Q_DECL_OVERRIDE;\n    virtual void mouseReleaseEvent(QMouseEvent* event) Q_DECL_OVERRIDE;\n    virtual void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;\n    virtual void resizeEvent(QResizeEvent* event) Q_DECL_OVERRIDE;\n    virtual void setCanvasSize(double width, double height);\n    virtual QSize sizeHint() const Q_DECL_OVERRIDE;\n    virtual void wheelEvent(QWheelEvent* event) Q_DECL_OVERRIDE;\n\nsignals:\n    void doubleClicked();\n\nprotected:\n    void mouseDoubleClickEvent(QMouseEvent* e) Q_DECL_OVERRIDE;\n\nprivate:\n    GCanvas* _gcanvas;\n\n    friend class GCanvas;\n};\n\n#endif // _gcanvas_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/gcheckbox.h",
    "content": "/*\n * File: gcheckbox.h\n * -----------------\n *\n * @author Marty Stepp\n * @version 2019/04/23\n * - added key event support\n * @version 2018/10/06\n * - added toggle()\n * @version 2018/09/07\n * - added doc comments for new documentation generation\n * @version 2018/09/04\n * - added double-click event support\n * @version 2018/08/23\n * - renamed to gcheckbox.h to replace Java version\n * @version 2018/06/29\n * - added change event\n * @version 2018/06/25\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _gcheckbox_h\n#define _gcheckbox_h\n\n// signal that GUI system is in use (so it will be initialized)\n#ifndef INTERNAL_INCLUDE\n#define SPL_QT_GUI_IN_USE 1\n#endif // INTERNAL_INCLUDE\n\n#include <functional>\n#include <string>\n#include <QWindow>\n#include <QEvent>\n#include <QCheckBox>\n#include <QMouseEvent>\n#include <QSize>\n#include <QWidget>\n\n#define INTERNAL_INCLUDE 1\n#include \"ginteractor.h\"\n#undef INTERNAL_INCLUDE\n\nclass _Internal_QCheckBox;\n\n/**\n * This interactor subclass represents an onscreen check box.\n * Clicking once on the check box selects it; clicking again removes the selection.\n * You can listen for clicks on a checkbox by setting an action listener,\n * passing the function you want to call on each click.\n */\nclass GCheckBox : public GInteractor {\npublic:\n    /**\n     * Creates a checkbox with the given text.\n     * You can pass an optional second parameter to initially check the box.\n     */\n    GCheckBox(const std::string& text = \"\", bool checked = false, QWidget* parent = nullptr);\n\n    /**\n     * Frees memory allocated internally by the checkbox.\n     */\n    virtual ~GCheckBox() Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual std::string getActionCommand() const Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual _Internal_QWidget* getInternalWidget() const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns the text next to the checkbox.\n     */\n    virtual std::string getText() const;\n\n    /* @inherit */\n    virtual std::string getType() const Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual QWidget* getWidget() const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns true if the checkbox is currently checked.\n     * Equivalent to isSelected.\n     */\n    virtual bool isChecked() const;\n\n    /**\n     * Returns true if the checkbox is currently checked.\n     * Equivalent to isChecked.\n     */\n    virtual bool isSelected() const;\n\n    /**\n     * Sets whether the checkbox should be checked.\n     * Equivalent to setSelected.\n     */\n    virtual void setChecked(bool checked);\n\n    /**\n     * Sets whether the checkbox should be checked.\n     * Equivalent to setChecked.\n     */\n    virtual void setSelected(bool selected);\n\n    /**\n     * Sets the text that will appear next to the checkbox.\n     */\n    virtual void setText(const std::string& text);\n\n    /**\n     * Reverses the checked state of the box, setting it to be checked if it was\n     * unchecked or to be unchecked if it was checked.\n     */\n    virtual void toggle();\n\nprotected:\n    /**\n     * @private\n     */\n    virtual std::string getActionEventType() const Q_DECL_OVERRIDE;\n\nprivate:\n    Q_DISABLE_COPY(GCheckBox)\n\n    _Internal_QCheckBox* _iqcheckBox;\n\n    friend class _Internal_QCheckBox;\n};\n\n/**\n * Internal class; not to be used by clients.\n * @private\n */\nclass _Internal_QCheckBox : public QCheckBox, public _Internal_QWidget {\n    Q_OBJECT\n\npublic:\n    _Internal_QCheckBox(GCheckBox* gcheckBox, bool checked = false, QWidget* parent = nullptr);\n    virtual void detach() Q_DECL_OVERRIDE;\n    virtual void keyPressEvent(QKeyEvent* event) Q_DECL_OVERRIDE;\n    virtual void keyReleaseEvent(QKeyEvent* event) Q_DECL_OVERRIDE;\n    virtual QSize sizeHint() const Q_DECL_OVERRIDE;\n\nsignals:\n    void doubleClicked();\n\npublic slots:\n    void handleStateChange(int);\n\nprotected:\n    void mouseDoubleClickEvent(QMouseEvent* e) Q_DECL_OVERRIDE;\n\nprivate:\n    GCheckBox* _gcheckBox;\n\n    friend class GCheckBox;\n};\n\n#endif // _gcheckbox_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/gchooser.h",
    "content": "/*\n * File: gchooser.h\n * ----------------\n *\n * @author Marty Stepp\n * @version 2019/04/23\n * - added key event support\n * @version 2018/09/07\n * - added doc comments for new documentation generation\n * @version 2018/09/04\n * - added GComboBox alias\n * @version 2018/08/23\n * - renamed to gchooser.h to replace Java version\n * @version 2018/06/28\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n// signal that GUI system is in use (so it will be initialized)\n#define SPL_QT_GUI_IN_USE 1\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _gchooser_h\n#define _gchooser_h\n\n#include <initializer_list>\n#include <string>\n#include <QComboBox>\n#include <QSize>\n#include <QWidget>\n\n#define INTERNAL_INCLUDE 1\n#include \"ginteractor.h\"\n#define INTERNAL_INCLUDE 1\n#include \"vector.h\"\n#undef INTERNAL_INCLUDE\n\nclass _Internal_QComboBox;\n\n/**\n * This interactor subclass represents a selectable drop-down list.\n * The GChooser constructor creates an empty chooser.\n * Once the chooser has been created, clients can use addItem to add the options.\n */\nclass GChooser : public GInteractor {\npublic:\n    /**\n     * Creates a chooser that initially contains no items.\n     */\n    GChooser(QWidget* parent = nullptr);\n\n    /**\n     * Creates a chooser that initially contains the given items.\n     */\n    GChooser(const std::initializer_list<std::string>& items, QWidget* parent = nullptr);\n\n    /**\n     * Creates a chooser that initially contains the given items.\n     */\n    GChooser(const Vector<std::string>& items, QWidget* parent = nullptr);\n\n    /**\n     * Frees memory allocated internally by the chooser.\n     */\n    virtual ~GChooser() Q_DECL_OVERRIDE;\n\n    /**\n     * Adds a new item consisting of the specified string to the end of the list.\n     */\n    virtual void addItem(const std::string& item);\n\n    /**\n     * Adds each item from the given list to the end of the chooser's list.\n     */\n    virtual void addItems(const std::initializer_list<std::string>& items);\n\n    /**\n     * Adds each item from the given vector to the end of the chooser's list.\n     */\n    virtual void addItems(const Vector<std::string>& items);\n\n    /**\n     * Removes all items from the chooser.\n     */\n    virtual void clearItems();\n\n    /* @inherit */\n    virtual std::string getActionCommand() const Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual _Internal_QWidget* getInternalWidget() const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns the item in the chooser at the given 0-based index.\n     * @throw ErrorException if the index is out of range\n     */\n    virtual std::string getItem(int index) const;\n\n    /**\n     * Returns the number of items in the chooser.\n     */\n    virtual int getItemCount() const;\n\n    /**\n     * Returns which index is selected in the chooser.\n     * If no item is selected, returns -1.\n     * @return selected index, or -1 if no item is selected\n     */\n    virtual int getSelectedIndex() const;\n\n    /**\n     * Returns the currently selected item in the chooser,\n     * or an empty string if no item is currently selected.\n     */\n    virtual std::string getSelectedItem() const;\n\n    /* @inherit */\n    virtual std::string getType() const Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual QWidget* getWidget() const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns true if the chooser has an editable area for typing new items.\n     * By default this is false unless setEditable(true) is called.\n     */\n    virtual bool isEditable() const;\n\n    /**\n     * Returns true if the chooser has no items.\n     */\n    virtual bool isEmpty() const;\n\n    /**\n     * Sets whether the chooser has an editable area for typing new items.\n     * Initially false.\n     */\n    virtual void setEditable(bool editable);\n\n    /**\n     * Sets the item at the given index in the chooser to the given value.\n     * @throw ErrorException if the index is out of range\n     */\n    virtual void setItem(int index, const std::string& item);\n\n    /**\n     * Sets the item at the given index in the chooser to be selected.\n     * @throw ErrorException if the index is out of range\n     */\n    virtual void setSelectedIndex(int index);\n\n    /**\n     * Sets the given item in the chooser to be selected.\n     * @throw ErrorException if the index is out of range\n     */\n    virtual void setSelectedItem(const std::string& item);\n\n    /**\n     * Returns the number of items in the chooser.\n     */\n    virtual int size() const;\n\nprotected:\n    /**\n     * @private\n     */\n    virtual std::string getActionEventType() const Q_DECL_OVERRIDE;\n\nprivate:\n    Q_DISABLE_COPY(GChooser)\n\n    _Internal_QComboBox* _iqcomboBox;\n\n    void checkIndex(const std::string& member, int index, int min = 0, int max = -1) const;\n\n    friend class _Internal_QComboBox;\n};\n\n/**\n * Internal class; not to be used by clients.\n * @private\n */\nclass _Internal_QComboBox : public QComboBox, public _Internal_QWidget {\n    Q_OBJECT\n\npublic:\n    _Internal_QComboBox(GChooser* gchooser, QWidget* parent = nullptr);\n    virtual void detach() Q_DECL_OVERRIDE;\n    virtual void keyPressEvent(QKeyEvent* event) Q_DECL_OVERRIDE;\n    virtual void keyReleaseEvent(QKeyEvent* event) Q_DECL_OVERRIDE;\n    virtual QSize sizeHint() const Q_DECL_OVERRIDE;\n\npublic slots:\n    void handleChange();\n\nprivate:\n    GChooser* _gchooser;\n\n    friend class GChooser;\n};\n\n// alias GComboBox for GChooser for name compatibility with Java and Qt\ntypedef GChooser GComboBox;\n\n#endif // _gchooser_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/gclipboard.h",
    "content": "/*\n * File: gclipboard.h\n * ------------------\n *\n * @author Marty Stepp\n * @version 2018/09/07\n * - added doc comments for new documentation generation\n * @version 2018/08/23\n * - renamed to gclipboard.h to replace Java version\n * @version 2018/07/19\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n// signal that GUI system is in use (so it will be initialized)\n#define SPL_QT_GUI_IN_USE 1\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _gclipboard_h\n#define _gclipboard_h\n\n#include <QWindow>   // needed for QEvent\n#include <QEvent>\n#include <QKeyEvent>\n#include <string>\n\n/**\n * The GClipboard class contains static methods you can use to get and set\n * the contents of the system clipboard.\n */\nclass GClipboard {\npublic:\n    /**\n     * Returns the current contents of the system clipboard.\n     */\n    static std::string get();\n\n    /**\n     * Returns true if the given event represents a \"copy\" operation.\n     * @throw ErrorException if the event is null\n     */\n    static bool isCopy(QKeyEvent* event);\n\n    /**\n     * Returns true if the given event represents a \"cut\" operation.\n     * @throw ErrorException if the event is null\n     */\n    static bool isCut(QKeyEvent* event);\n\n    /**\n     * Returns true if the given event represents a \"paste\" operation.\n     * @throw ErrorException if the event is null\n     */\n    static bool isPaste(QKeyEvent* event);\n\n    /**\n     * Sets the system clipboard to store the given text.\n     * Equivalent to a \"copy\" operation.\n     */\n    static void set(const std::string& text);\n\nprivate:\n    GClipboard();   // prevent construction\n};\n\n#endif // _gclipboard_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/gcolor.h",
    "content": "/*\n * File: gcolor.h\n * --------------\n *\n * @author Marty Stepp\n * @version 2019/05/05\n * - added getLuminance\n * @version 2018/09/16\n * - added splitRGB/ARGB, hasAlpha; better ARGB support\n * @version 2018/09/07\n * - added doc comments for new documentation generation\n * @version 2018/08/23\n * - renamed to gcolor.h to replace Java version\n * @version 2018/06/30\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n// signal that GUI system is in use (so it will be initialized)\n#define SPL_QT_GUI_IN_USE 1\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _gcolor_h\n#define _gcolor_h\n\n#include <string>\n#include <QColor>\n\n#define INTERNAL_INCLUDE 1\n#include \"map.h\"\n#undef INTERNAL_INCLUDE\n\n/**\n * This class provides static methods for dealing with colors.\n *\n * Many graphical interactors and objects accept colors specified as strings\n * or as RGB integers.  An RGB integer is an integer with red, green, and blue\n * values from 0-255 packed into its bits as follows:\n *\n * <pre>\n * 00000000 00000000 00000000 00000000\n *    ^        ^        ^        ^\n *    |        |        |        |\n *  alpha     red     green     blue\n * </pre>\n *\n * A color can also be specified as a string.\n * A color string can be one of the predefined color names:\n *\n *    <code>BLACK</code>,\n *    <code>BLUE</code>,\n *    <code>CYAN</code>,\n *    <code>DARK_GRAY</code>,\n *    <code>GRAY</code>,\n *    <code>GREEN</code>,\n *    <code>LIGHT_GRAY</code>,\n *    <code>MAGENTA</code>,\n *    <code>ORANGE</code>,\n *    <code>PINK</code>,\n *    <code>RED</code>,\n *    <code>WHITE</code>, and\n *    <code>YELLOW</code>.\n *\n * The case of the individual letters in the color name is ignored, as\n * are spaces and underscores, so that the color <code>DARK_GRAY</code>\n * can be written as <code>\"Dark Gray\"</code>.\n *\n * Lastly, the color can also be specified as a string in the form\n * <code>\"#rrggbb\"</code> where <code>rr</code>, <code>gg</code>, and\n * <code>bb</code> are pairs of hexadecimal digits indicating the\n * red, green, and blue components of the color, respectively.\n * You can also include an alpha (opacity) channel by writing the hex string\n * in ARGB form as <code>\"#aarrggbb\"</code>.\n */\nclass GColor {\npublic:\n    /**\n     * Constants representing common system color names.\n     */\n    enum {\n        BLACK = 0x000000,\n        BLUE = 0x0000FF,\n        BROWN = 0x926239,\n        CYAN = 0x00FFFF,\n        DARKGRAY = 0x595959,\n        GRAY = 0x999999,\n        GREEN = 0x00FF00,\n        LIGHTGRAY = 0xBFBFBF,\n        MAGENTA = 0xFF00FF,\n        ORANGE = 0xFFC800,\n        PINK = 0xFFAFAF,\n        PURPLE = 0xFF00FF,\n        RED = 0xFF0000,\n        WHITE = 0xFFFFFF,\n        YELLOW = 0xFFFF00\n    } Color;\n\n    /**\n     * Converts four integer RGB values from 0-255 into a color name in the\n     * form <code>\"#aarrggbb\"</code>.  Each of the <code>aa</code>, <code>rr</code>,\n     * <code>gg</code>, and <code>bb</code> values are two-digit\n     * hexadecimal numbers indicating the intensity of that component.\n     * If any of a, r, g, or b is outside the range of 0-255, throws an error.\n     */\n    static std::string convertARGBToColor(int a, int r, int g, int b);\n\n    /**\n     * Converts the given ARGB integer into a color name in the\n     * form <code>\"#aarrggbb\"</code>.\n     */\n    static std::string convertARGBToColor(int argb);\n\n    /**\n     * Converts four integer RGB values from 0-255 into an ARGB integer of the\n     * form <code>0xaarrggbb</code>.  Each of the <code>aa</code>, <code>rr</code>,\n     * <code>gg</code>, and <code>bb</code> values are two-digit\n     * hexadecimal numbers indicating the intensity of that component.\n     * If any of a, r, g, or b is outside the range of 0-255, throws an error.\n     */\n    static int convertARGBToARGB(int a, int r, int g, int b);\n\n    /**\n     * Converts a color name into an ARGB integer that encodes the\n     * alpha (opacity), red, green, and blue components of the color.\n     */\n    static int convertColorToARGB(const std::string& colorName);\n\n    /**\n     * Converts a color name into an integer that encodes the\n     * red, green, and blue components of the color.\n     * This function is also compatible with ARGB colors.\n     */\n    static int convertColorToRGB(const std::string& colorName);\n\n    /**\n     * Converts a Qt RGB color object into a color string.\n     * Does not preserve alpha transparency.\n     */\n    static std::string convertQColorToColor(const QColor& color);\n\n    /**\n     * Converts a Qt color object into an RGB integer.\n     * Does not preserve alpha transparency.\n     */\n    static int convertQColorToRGB(const QColor& color);\n\n    /**\n     * Converts an RGB integer value into a color name in the\n     * form <code>\"#rrggbb\"</code>.\n     * Does not preserve alpha transparency.\n     */\n    static std::string convertRGBToColor(int rgb);\n\n    /**\n     * Converts three integer RGB values from 0-255 into a color name in the\n     * form <code>\"#rrggbb\"</code>.  Each of the <code>rr</code>,\n     * <code>gg</code>, and <code>bb</code> values are two-digit\n     * hexadecimal numbers indicating the intensity of that component.\n     * If any of r, g, or b is outside the range of 0-255, throws an error.\n     */\n    static std::string convertRGBToColor(int r, int g, int b);\n\n    /**\n     * Converts three integer RGB values from 0-255 into a single RGB integer.\n     * Each of the <code>rr</code>, <code>gg</code>, and <code>bb</code> values\n     * are two-digit hexadecimal numbers indicating the intensity of that component.\n     * If any of r, g, or b is outside the range of 0-255, throws an error.\n     */\n    static int convertRGBToRGB(int r, int g, int b);\n\n    /**\n     * Sets the 'alpha' (high order bits) of the given integer to ff.\n     * If RGB is not completely black, but alpha is 0, assumes that the\n     * client meant to use an opaque color and add ff as alpha channel.\n     */\n    static int fixAlpha(int argb);\n\n    /**\n     * Returns the photometric luminance of the given RGB integer,\n     * which is a measure of how bright the color is.\n     * This is calculated using the following formula:\n     * https://en.wikipedia.org/wiki/Relative_luminance\n     */\n    static double getLuminance(int rgb);\n\n    /**\n     * Returns the photometric luminance of the given color,\n     * which is a measure of how bright the color is.\n     * This is calculated using the following formula:\n     * https://en.wikipedia.org/wiki/Relative_luminance\n     */\n    static double getLuminance(const std::string& color);\n\n    /**\n     * Returns true if the given color string is of the 8-hex-character form\n     * that contains an alpha channel in the highest order two characters,\n     * preceded by a hash sign, such as \"#aaff0033\".\n     */\n    static bool hasAlpha(const std::string& color);\n\n    /**\n     * Splits the given ARGB integer into four integer RGB values from 0-255.\n     * Each of the <code>aa</code>, <code>rr</code>,\n     * <code>gg</code>, and <code>bb</code> values are two-digit\n     * hexadecimal numbers indicating the intensity of that component.\n     */\n    static void splitARGB(int argb, int& a, int& r, int& g, int& b);\n\n    /**\n     * Splits the given RGB integer into three integer RGB values from 0-255.\n     * Each of the <code>rr</code>, <code>gg</code>, and <code>bb</code> values\n     * are two-digit hexadecimal numbers indicating the intensity of that component.\n     * Ignores alpha transparency.\n     */\n    static void splitRGB(int rgb, int& r, int& g, int& b);\n\n    /**\n     * Converts a color string into a Qt color object.\n     * Preserves alpha transparency if the color string contains an alpha component.\n     */\n    static QColor toQColor(const std::string& color);\n\n    /**\n     * Converts an ARGB integer into a Qt color object.\n     * Preserves alpha transparency in the QColor object.\n     */\n    static QColor toQColorARGB(int argb);\n\nprivate:\n    GColor();   // forbid construction\n\n    /**\n     * Strips casing and punctuation; e.g. \"Dark Gray\" => \"darkgray\"\n     */\n    static std::string canonicalColorName(const std::string& str);\n\n    /**\n     * Returns a reference to the table of common colors,\n     * mapping from names to RGB integers.\n     */\n    static const Map<std::string, int>& colorTable();\n\n    /**\n     * Returns a reference to the table of common colors,\n     * mapping from names to color strings.\n     */\n    static const Map<std::string, std::string>& colorNameTable();\n\n    // internal color tables\n    static Map<std::string, int> _colorTable;\n    static Map<std::string, std::string> _colorNameTable;\n};\n\n#endif // _gcolor_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/gcolorchooser.h",
    "content": "/*\n * File: gcolorchooser.h\n * ---------------------\n * This file defines the <code>GColorChooser</code> class which supports\n * popping up graphical dialog boxes to select colors.\n * \n * @author Marty Stepp\n * @version 2018/09/07\n * - added doc comments for new documentation generation\n * - added overloads that accept GWindow* parent\n * @version 2018/08/23\n * - renamed to gcolorchooser.h to replace Java version\n * @version 2018/07/29\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n// signal that GUI system is in use (so it will be initialized)\n#define SPL_QT_GUI_IN_USE 1\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _gcolorchooser_h\n#define _gcolorchooser_h\n\n#include <string>\n#include <QWidget>\n\n#define INTERNAL_INCLUDE 1\n#include \"gwindow.h\"\n#undef INTERNAL_INCLUDE\n\n/**\n * The GColorChooser class contains static methods for popping up color-choosing\n * dialog boxes that allow the user to select a color.\n * Each method blocks until the color is chosen and the dialog is closed,\n * returning the color the user chose (or an empty string if the user canceled).\n */\nclass GColorChooser {\npublic:\n    /**\n     * Pops up a color chooser dialog with the given top title text,\n     * with the given initial color selected.\n     * Returns the color that was chosen as a color string such as \"#ff0077\" or \"blue\".\n     */\n    static std::string showDialog(const std::string& title, int initialColor);\n\n    /**\n     * Pops up a color chooser dialog with the given top title text,\n     * with the given initial color selected.\n     * Returns the color that was chosen as a color string such as \"#ff0077\" or \"blue\".\n     */\n    static std::string showDialog(GWindow* parent, const std::string& title, int initialColor);\n\n    /**\n     * Pops up a color chooser dialog with the given top title text,\n     * with the given initial color selected.\n     * Returns the color that was chosen as a color string such as \"#ff0077\" or \"blue\".\n     */\n    static std::string showDialog(QWidget* parent, const std::string& title, int initialColor);\n\n    /**\n     * Pops up a color chooser dialog with the given top title text,\n     * with the given initial color selected.\n     * Returns the color that was chosen as a color string such as \"#ff0077\" or \"blue\".\n     */\n    static std::string showDialog(const std::string& title = \"\", const std::string& initialColor = \"\");\n\n    /**\n     * Pops up a color chooser dialog with the given top title text,\n     * with the given initial color selected.\n     * Returns the color that was chosen as a color string such as \"#ff0077\" or \"blue\".\n     */\n    static std::string showDialog(GWindow* parent, const std::string& title = \"\", const std::string& initialColor = \"\");\n\n    /**\n     * Pops up a color chooser dialog with the given top title text,\n     * with the given initial color selected.\n     * Returns the color that was chosen as a color string such as \"#ff0077\" or \"blue\".\n     */\n    static std::string showDialog(QWidget* parent, const std::string& title = \"\", const std::string& initialColor = \"\");\n\nprivate:\n    GColorChooser();   // prevent construction\n};\n\n#endif // _gcolorchooser_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/gconsolewindow.h",
    "content": "/*\n * File: gconsolewindow.h\n * ----------------------\n * This file describes the GConsoleWindow class, which is the class used to\n * represent the graphical console.\n * The class is implemented as a singleton which can be accessed using the\n * static method GConsoleWindow::instance().\n * \n * @author Marty Stepp\n * @version 2019/04/25\n * - added hasInputScript\n * @version 2019/04/10\n * - toolbar support with icons from icon strip image\n * @version 2018/09/23\n * - added getFont\n * @version 2018/09/07\n * - added doc comments for new documentation generation\n * @version 2018/08/23\n * - initial version, separated out from console .cpp/h\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n// signal that GUI system is in use (so it will be initialized)\n#define SPL_QT_GUI_IN_USE 1\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _gconsolewindow_h\n#define _gconsolewindow_h\n\n#include <iostream>\n#include <sstream>\n#include <string>\n#include <Qt>\n#include <QMutex>\n#include <QWindow>\n#include <QKeyEvent>\n#include <QPixmap>\n#include <QReadWriteLock>\n#include <QTextEdit>\n#include <QTextFrame>\n\n#define INTERNAL_INCLUDE 1\n#include \"gevent.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gtextarea.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gtypes.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gthread.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gwindow.h\"\n#define INTERNAL_INCLUDE 1\n#include \"queue.h\"\n#define INTERNAL_INCLUDE 1\n#include \"vector.h\"\n#define INTERNAL_INCLUDE 1\n#include \"private/consolestreambuf.h\"\n#define INTERNAL_INCLUDE 1\n#include \"private/forwardingstreambuf.h\"\n#undef INTERNAL_INCLUDE\n\n/**\n * A GConsoleWindow represents the system console.\n * Most students/clients do not need to utilize this class directly.\n * Output is implicitly printed to the console when you use cout/cerr.\n * But if you want to access the console window directly and interact with it\n * as you would a normal GWindow, you can do so by calling the global function\n * getConsoleWindow.\n *\n * @private\n *\n * TODO: document\n */\nclass GConsoleWindow : public GWindow {\npublic:\n    static bool consoleEnabled();\n    static std::string getDefaultFont();\n    static GConsoleWindow* instance();\n    static bool isInitialized();\n    static void setConsoleEnabled(bool enabled);\n    static Map<std::string, QPixmap> unpackImageStrip(const std::string& imageStripFileName,\n                                                      const Vector<std::string>& imageFiles,\n                                                      int imageSize);\n    static Map<std::string, QPixmap> unpackImageStrip(const std::string& imageStripFileName,\n                                                      const Vector<std::string>& imageFiles,\n                                                      const Vector<GDimension>& imageSizes);\n\n    virtual void clearConsole();\n    virtual void clipboardCopy();\n    virtual void clipboardCut();\n    virtual void clipboardPaste();\n    virtual void close() Q_DECL_OVERRIDE;\n    virtual void compareOutput(const std::string& filename);\n    virtual std::string getAllOutput() const;\n    virtual std::string getBackground() const Q_DECL_OVERRIDE;\n    virtual int getBackgroundInt() const Q_DECL_OVERRIDE;\n    virtual std::string getColor() const Q_DECL_OVERRIDE;\n    virtual int getColorInt() const Q_DECL_OVERRIDE;\n    virtual std::string getErrorColor() const;\n    virtual std::string getFont() const Q_DECL_OVERRIDE;\n    virtual std::string getForeground() const Q_DECL_OVERRIDE;\n    virtual int getForegroundInt() const Q_DECL_OVERRIDE;\n    virtual std::string getOutputColor() const;\n    virtual std::string getUserInputColor() const;\n    virtual bool hasInputScript() const;\n    virtual bool isClearEnabled() const;\n    virtual bool isEcho() const;\n    virtual bool isLocationSaved() const;\n    virtual bool isLocked() const;\n    virtual void loadConfiguration();\n    virtual void loadInputScript(int number);\n    virtual void loadInputScript(const std::string& filename);\n    virtual void print(const std::string& str, bool isStdErr = false);\n    virtual void println(bool isStdErr = false);\n    virtual void println(const std::string& str, bool isStdErr = false);\n    virtual std::string readLine();\n    virtual void save();\n    virtual void saveAs(const std::string& filename = \"\");\n    virtual void saveConfiguration(bool prompt = true);\n    virtual void selectAll();\n    virtual void setBackground(int color) Q_DECL_OVERRIDE;\n    virtual void setBackground(const std::string& color) Q_DECL_OVERRIDE;\n    virtual void setClearEnabled(bool clearEnabled);\n    virtual void setConsoleSize(double width, double height);\n    virtual void setColor(int color) Q_DECL_OVERRIDE;\n    virtual void setColor(const std::string& color) Q_DECL_OVERRIDE;\n    virtual void setEcho(bool echo);\n    virtual void setErrorColor(const std::string& errorColor);\n    virtual void setFont(const QFont& font) Q_DECL_OVERRIDE;\n    virtual void setFont(const std::string& font) Q_DECL_OVERRIDE;\n    virtual void setForeground(int color) Q_DECL_OVERRIDE;\n    virtual void setForeground(const std::string& color) Q_DECL_OVERRIDE;\n    virtual void setLocationSaved(bool locationSaved);\n    virtual void setLocked(bool locked);\n    virtual void setOutputColor(int rgb);\n    virtual void setOutputColor(const std::string& outputColor);\n    virtual void setSize(double width, double height) Q_DECL_OVERRIDE;\n    virtual void setUserInputColor(const std::string& userInputColor);\n    virtual void showAboutDialog();\n    virtual void showColorDialog(bool background = false);\n    virtual void showCompareOutputDialog();\n    virtual void showFontDialog();\n    virtual void showInputScriptDialog();\n    virtual void showPrintDialog();\n    virtual void shutdown();\n\nprivate:\n    static const bool ALLOW_RICH_INPUT_EDITING;\n    static const double DEFAULT_WIDTH;\n    static const double DEFAULT_HEIGHT;\n    static const double DEFAULT_X;\n    static const double DEFAULT_Y;\n    static const std::string CONFIG_FILE_NAME;\n    static const std::string DEFAULT_WINDOW_TITLE;\n    static const std::string DEFAULT_FONT_FAMILY;\n    static const std::string DEFAULT_FONT_WEIGHT;\n    static const int DEFAULT_FONT_SIZE;\n    static const int MIN_FONT_SIZE;\n    static const int MAX_FONT_SIZE;\n    static const std::string DEFAULT_ERROR_COLOR;\n    static const std::string DEFAULT_ERROR_COLOR_DARK_MODE;\n    static const std::string DEFAULT_USER_INPUT_COLOR;\n    static const std::string DEFAULT_USER_INPUT_COLOR_DARK_MODE;\n    static GConsoleWindow* _instance;\n    static bool _consoleEnabled;\n\n    Q_DISABLE_COPY(GConsoleWindow)\n\n    GConsoleWindow();\n    virtual ~GConsoleWindow();\n    void _initMenuBar();\n    void _initWidgets();\n    void _initStreams();\n    virtual void checkForUpdates();\n    QTextFragment getUserInputFragment() const;\n    int getUserInputStart() const;\n    int getUserInputEnd() const;\n    bool isCursorInUserInputArea() const;\n    bool isSelectionInUserInputArea() const;\n    void processBackspace(int key);\n    void processCommandHistory(int delta);\n    void processEof();\n    void processKeyPress(GEvent event);\n    void processUserInputEnterKey();\n    void processUserInputKey(int key);\n    void setUserInput(const std::string& userInput);\n\n    GTextArea* _textArea;\n    bool _clearEnabled;\n    bool _echo;\n    bool _locationSaved;\n    bool _locked;\n    bool _promptActive;\n    bool _shutdown;\n    int _commandHistoryIndex;\n    std::string _errorColor;\n    std::string _outputColor;\n    std::string _userInputColor;\n    std::string _inputBuffer;\n    std::string _lastSaveFileName;\n    Queue<std::string> _inputLines;\n    Queue<std::string> _inputScript;\n    Vector<std::string> _inputCommandHistory;\n    stanfordcpplib::qtgui::ConsoleStreambufQt* _cinout_new_buf;\n    stanfordcpplib::qtgui::ConsoleStreambufQt* _cerr_new_buf;\n    std::streambuf* _cin_old_buf;\n    std::streambuf* _cout_old_buf;\n    std::streambuf* _cerr_old_buf;\n    std::ostringstream _allOutputBuffer;\n    QReadWriteLock _cinMutex;\n    QReadWriteLock _cinQueueMutex;\n    QMutex _coutMutex;\n};\n\n#endif // _gconsolewindow_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/gcontainer.h",
    "content": "/*\n * File: gcontainer.h\n * ------------------\n *\n * @author Marty Stepp\n * @version 2018/09/25\n * - added getLayout method\n * @version 2018/09/19\n * - added contains, regionContains methods\n * @version 2018/09/07\n * - added doc comments for new documentation generation\n * @version 2018/08/29\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n// signal that GUI system is in use (so it will be initialized)\n#define SPL_QT_GUI_IN_USE 1\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _gcontainer_h\n#define _gcontainer_h\n\n#include <QBoxLayout>\n#include <QLayout>\n\n#define INTERNAL_INCLUDE 1\n#include \"ginteractor.h\"\n#define INTERNAL_INCLUDE 1\n#include \"vector.h\"\n#undef INTERNAL_INCLUDE\n\nclass _Internal_QContainer;   // forward declaration\n\n/**\n * A GContainer is a logical grouping for interactors.\n * The container manages the position and size of the interactors inside it.\n * This class is very similar to the Java concept of a container, represented\n * in Swing by the JPanel class.\n *\n * A container has a layout that guides how it positions its interactors.\n * Supported layouts include border (put interactors in the N/S/W/E/Center),\n * grid (rows and columns of interactors), and flow (interactors go in a\n * single horizontal or vertical line).\n *\n * Containers also use a \"box model\" similar to the CSS box model with margins\n * and padding around each interactor, and spacing between neighboring widgets:\n *\n * <pre>\n    container\n * +-------------------+\n * |      margin       |\n * |  +---border----+  |\n * |  |   padding   |  |\n * |  |   content   |  |\n * |  |   padding   |  |\n * |  +-------------+  |\n * |      margin       |\n * |                   |\n * |      spacing      |\n * |                   |\n * |      margin       |\n * |  +---border----+  |\n * |  |   padding   |  |\n * |  |   content   |  |\n * |  |   padding   |  |\n * |  +-------------+  |\n * |      margin       |\n * |       ...         |\n * +-------------------+\n * </pre>\n */\nclass GContainer : public GInteractor {\npublic:\n    /**\n     * Default margin around each interactor.\n     */\n    static const int MARGIN_DEFAULT;\n\n    /**\n     * Default spacing between neighboring interactors.\n     */\n    static const int SPACING_DEFAULT;\n\n    /**\n     * The various layout management styles that containers can use.\n     */\n    enum Layout {\n        LAYOUT_NONE,\n        LAYOUT_FLOW_HORIZONTAL,\n        LAYOUT_FLOW_VERTICAL,\n        LAYOUT_BORDER,\n        LAYOUT_GRID\n    };\n\n    /**\n     * The five regions of border layouts.\n     * Not used by the other layout styles.\n     */\n    enum Region {\n        REGION_CENTER,\n        REGION_EAST,\n        REGION_NORTH,\n        REGION_SOUTH,\n        REGION_WEST\n    };\n\n    /**\n     * Creates a new container with the given layout.\n     */\n    GContainer(Layout layout = LAYOUT_FLOW_HORIZONTAL, QWidget* parent = nullptr);\n\n    /**\n     * Creates a new container with the given number of rows and columns.\n     * Meant to be used for grid layouts.\n     */\n    GContainer(Layout layout, int rows, int cols, QWidget* parent = nullptr);\n\n    /**\n     * Frees memory allocated internally by the container.\n     */\n    virtual ~GContainer() Q_DECL_OVERRIDE;\n\n    /**\n     * Adds the given interactor to the end of the list of interactors in this container.\n     * If the container uses a grid layout, adds the interactor to the next available\n     * row/column.  If it uses a border layout, adds to the center region.\n     * @throw ErrorException if the interactor is null\n     */\n    virtual void add(GInteractor* interactor);\n\n    /**\n     * Adds the given interactor to the end of the list of interactors in this container.\n     * If the container uses a grid layout, adds the interactor to the next available\n     * row/column.  If it uses a border layout, adds to the center region.\n     */\n    virtual void add(GInteractor& interactor);\n\n    /**\n     * Adds the given interactor to the given row and column in this container,\n     * which is assumed to use a grid layout.\n     * If the rowspan and/or colspan arguments are passed, the item will occupy\n     * multiple rows or columns' worth of space.\n     * If the container does not use a grid layout, equivalent to add().\n     * @throw ErrorException if the interactor is null\n     */\n    virtual void addToGrid(GInteractor* interactor, int row, int col, int rowspan = 1, int colspan = 1);\n\n    /**\n     * Adds the given interactor to the given row and column in this container,\n     * which is assumed to use a grid layout.\n     * If the rowspan and/or colspan arguments are passed, the item will occupy\n     * multiple rows or columns' worth of space.\n     * If the container does not use a grid layout, equivalent to add().\n     */\n    virtual void addToGrid(GInteractor& interactor, int row, int col, int rowspan = 1, int colspan = 1);\n\n    /**\n     * Adds the given interactor to the given region in this container,\n     * which is assumed to use a border layout.\n     * If the container does not use a border layout, equivalent to add().\n     * @throw ErrorException if the interactor is null\n     */\n    virtual void addToRegion(GInteractor* interactor, Region region);\n\n    /**\n     * Adds the given interactor to the given region in this container,\n     * which is assumed to use a border layout.\n     * If the container does not use a border layout, equivalent to add().\n     * @throw ErrorException if the interactor is null\n     */\n    virtual void addToRegion(GInteractor* interactor, const std::string& region = \"Center\");\n\n    /**\n     * Adds the given interactor to the given region in this container,\n     * which is assumed to use a border layout.\n     * If the container does not use a border layout, equivalent to add().\n     */\n    virtual void addToRegion(GInteractor& interactor, Region region);\n\n    /**\n     * Adds the given interactor to the given region in this container,\n     * which is assumed to use a border layout.\n     * If the container does not use a border layout, equivalent to add().\n     */\n    virtual void addToRegion(GInteractor& interactor, const std::string& region = \"Center\");\n\n    /**\n     * Removes all interactors from this container.\n     */\n    virtual void clear();\n\n    /**\n     * Removes all interactors from the given region of this container,\n     * which is assumed to use a border layout.\n     * If the container does not use a border layout, has no effect.\n     */\n    virtual void clearRegion(Region region);\n\n    /**\n     * Removes all interactors from the given region of this container,\n     * which is assumed to use a border layout.\n     * If the container does not use a border layout, has no effect.\n     */\n    virtual void clearRegion(const std::string& region);\n\n    /**\n     * Returns true if the given interactor is found in this container.\n     * Returns false if the interactor is null\n     */\n    virtual bool contains(GInteractor* interactor) const;\n\n    /**\n     * Returns true if the given interactor is found in this container.\n     */\n    virtual bool contains(GInteractor& interactor) const;\n\n    /**\n     * Returns all interactors that are children or descendents inside this\n     * container.  This differs from getInteractors in that it returns not only\n     * direct children but also grandchildren, etc. in any sub-containers.\n     * If the type argument is passed, will return only interactors of that type\n     * (e.g. \"GCheckBox\").  Otherwise all interactors will be returned.\n     */\n    virtual Vector<GInteractor*> getDescendents(const std::string& type = \"\") const;\n\n    /**\n     * Returns the child interactor at the given 0-based index in this container.\n     * @throw ErrorException if the index is out of bounds\n     */\n    virtual GInteractor* getInteractor(int i) const;\n\n    /**\n     * Returns a vector of all children interactors in this container.\n     */\n    virtual const Vector<GInteractor*>& getInteractors() const;\n\n    /**\n     * Returns the number of children interactors in this container.\n     */\n    virtual int getInteractorCount() const;\n\n    /**\n     * Returns the child interactor at the given 0-based index within the given\n     * region in this container, which is assumed to use a border layout.\n     * If the container does not use a border layout, returns nullptr.\n     * @throw ErrorException if the index is out of bounds\n     */\n    virtual GInteractor* getInteractorByRegion(int i, Region region) const;\n\n    /**\n     * Returns the child interactor at the given 0-based index within the given\n     * region in this container, which is assumed to use a border layout.\n     * If the container does not use a border layout, returns nullptr.\n     * @throw ErrorException if the index is out of bounds\n     */\n    virtual GInteractor* getInteractorByRegion(int i, const std::string& region = \"Center\") const;\n\n    /**\n     * Returns the number of children interactors within the given region in\n     * this container, which is assumed to use a border layout.\n     * If the container does not use a border layout, returns 0.\n     */\n    virtual int getInteractorCountByRegion(Region region) const;\n\n    /**\n     * Returns the number of children interactors within the given region in\n     * this container, which is assumed to use a border layout.\n     * If the container does not use a border layout, returns 0.\n     */\n    virtual int getInteractorCountByRegion(const std::string& region = \"Center\") const;\n\n    /* @inherit */\n    virtual _Internal_QWidget* getInternalWidget() const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns the type of layout used by this container.\n     */\n    virtual Layout getLayout() const;\n\n    /**\n     * Returns the margin around each widget in this container in pixels.\n     */\n    virtual double getMargin() const;\n\n    /**\n     * Returns the padding inside this container in pixels.\n     */\n    virtual double getPadding() const;\n\n    /**\n     * Returns the padding on the bottom side of this container in pixels.\n     */\n    virtual double getPaddingBottom() const;\n\n    /**\n     * Returns the padding on the left side of this container in pixels.\n     */\n    virtual double getPaddingLeft() const;\n\n    /**\n     * Returns the padding on the right side of this container in pixels.\n     */\n    virtual double getPaddingRight() const;\n\n    /**\n     * Returns the padding on the top side of this container in pixels.\n     */\n    virtual double getPaddingTop() const;\n\n    /* @inherit */\n    virtual GDimension getPreferredSize() const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns the height in pixels of the given region of this container,\n     * which is assumed to use a border layout.\n     * If the container does not use a border layout, returns 0.\n     */\n    virtual double getRegionHeight(Region region) const;\n\n    /**\n     * Returns the height in pixels of the given region of this container,\n     * which is assumed to use a border layout.\n     * If the container does not use a border layout, returns 0.\n     */\n    virtual double getRegionHeight(const std::string& region) const;\n\n    /**\n     * Returns the width and height in pixels of the given region of this container,\n     * which is assumed to use a border layout.\n     * If the container does not use a border layout, returns 0.\n     */\n    virtual GDimension getRegionSize(Region region) const;\n\n    /**\n     * Returns the width and height in pixels of the given region of this container,\n     * which is assumed to use a border layout.\n     * If the container does not use a border layout, returns 0.\n     */\n    virtual GDimension getRegionSize(const std::string& region) const;\n\n    /**\n     * Returns the width in pixels of the given region of this container,\n     * which is assumed to use a border layout.\n     * If the container does not use a border layout, returns 0.\n     */\n    virtual double getRegionWidth(Region region) const;\n\n    /**\n     * Returns the width in pixels of the given region of this container,\n     * which is assumed to use a border layout.\n     * If the container does not use a border layout, returns 0.\n     */\n    virtual double getRegionWidth(const std::string& region) const;\n\n    /**\n     * Returns the spacing between widgets in this container in pixels.\n     */\n    virtual double getSpacing() const;\n\n    /* @inherit */\n    virtual std::string getType() const Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual QWidget* getWidget() const Q_DECL_OVERRIDE;\n\n    /**\n     * Adds the given interactor to this container just before the given index.\n     * @throw ErrorException if the index is out of bounds or interactor is null\n     */\n    virtual void insert(int index, GInteractor* interactor);\n\n    /**\n     * Adds the given interactor to this container just before the given index.\n     * @throw ErrorException if the index is out of bounds\n     */\n    virtual void insert(int index, GInteractor& interactor);\n\n    /**\n     * Adds the given interactor to the given layout region within this container\n     * just before the given index.  The container is assumed to use a border\n     * layout; if it does not, equivalent to insert().\n     * @throw ErrorException if the index is out of bounds or interactor is null\n     */\n    virtual void insertToRegion(int index, GInteractor* interactor, Region region);\n\n    /**\n     * Adds the given interactor to the given layout region within this container\n     * just before the given index.  The container is assumed to use a border\n     * layout; if it does not, equivalent to insert().\n     * @throw ErrorException if the index is out of bounds or interactor is null\n     */\n    virtual void insertToRegion(int index, GInteractor* interactor, const std::string& region = \"Center\");\n\n    /**\n     * Adds the given interactor to the given layout region within this container\n     * just before the given index.  The container is assumed to use a border\n     * layout; if it does not, equivalent to insert().\n     * @throw ErrorException if the index is out of bounds\n     */\n    virtual void insertToRegion(int index, GInteractor& interactor, Region region);\n\n    /**\n     * Adds the given interactor to the given layout region within this container\n     * just before the given index.  The container is assumed to use a border\n     * layout; if it does not, equivalent to insert().\n     * @throw ErrorException if the index is out of bounds\n     */\n    virtual void insertToRegion(int index, GInteractor& interactor, const std::string& region = \"Center\");\n\n    /**\n     * Returns true if the container does not contain any interactors.\n     */\n    virtual bool isEmpty() const;\n\n    /**\n     * Returns true if the given interactor is found in the given region of\n     * this container, which is assumed to use a border layout.\n     * If the container does not use a border layout, equivalent to contains().\n     * @throw ErrorException if the interactor is null\n     */\n    virtual bool regionContains(GInteractor* interactor, Region region) const;\n\n    /**\n     * Returns true if the given interactor is found in the given region of\n     * this container, which is assumed to use a border layout.\n     * If the container does not use a border layout, equivalent to contains().\n     * @throw ErrorException if the interactor is null\n     */\n    virtual bool regionContains(GInteractor* interactor, const std::string& region) const;\n\n    /**\n     * Returns true if the given interactor is found in the given region of\n     * this container, which is assumed to use a border layout.\n     * If the container does not use a border layout, equivalent to contains().\n     */\n    virtual bool regionContains(GInteractor& interactor, Region region) const;\n\n    /**\n     * Returns true if the given interactor is found in the given region of\n     * this container, which is assumed to use a border layout.\n     * If the container does not use a border layout, equivalent to contains().\n     */\n    virtual bool regionContains(GInteractor& interactor, const std::string& region) const;\n\n    /**\n     * Removes the given interactor from this container.\n     * Works for any layout.\n     * If the given interactor is not found in this container, has no effect.\n     * @throw ErrorException if the interactor is null\n     */\n    virtual void remove(GInteractor* interactor);\n\n    /**\n     * Removes the given interactor from this container.\n     * Works for any layout.\n     * If the given interactor is not found in this container, has no effect.\n     */\n    virtual void remove(GInteractor& interactor);\n\n    /**\n     * Removes the child interactor at the given 0-based index from this container.\n     * Works for any layout.\n     * @throw ErrorException if the index is out of bounds\n     */\n    virtual void remove(int index);\n\n    /**\n     * Removes the given interactor from the given region within this container,\n     * which is assumed to use a border layout.\n     * If the container does not use a border layout, equivalent to remove().\n     * If the given interactor is not found in the given region, has no effect.\n     * @throw ErrorException if the interactor is null\n     */\n    virtual void removeFromRegion(GInteractor* interactor, Region region);\n\n    /**\n     * Removes the given interactor from the given region within this container,\n     * which is assumed to use a border layout.\n     * If the container does not use a border layout, equivalent to remove().\n     * If the given interactor is not found in the given region, has no effect.\n     * @throw ErrorException if the interactor is null\n     */\n    virtual void removeFromRegion(GInteractor* interactor, const std::string& region);\n\n    /**\n     * Removes the given interactor from the given region within this container,\n     * which is assumed to use a border layout.\n     * If the container does not use a border layout, equivalent to remove().\n     * If the given interactor is not found in the given region, has no effect.\n     */\n    virtual void removeFromRegion(GInteractor& interactor, Region region);\n\n    /**\n     * Removes the given interactor from the given region within this container,\n     * which is assumed to use a border layout.\n     * If the container does not use a border layout, equivalent to remove().\n     * If the given interactor is not found in the given region, has no effect.\n     */\n    virtual void removeFromRegion(GInteractor& interactor, const std::string& region);\n\n    /**\n     * Removes the child interactor at the given 0-based index from the given\n     * region of this container, which is assumed to use a border layout.\n     * If the container does not use a border layout, has no effect.\n     * If the given interactor is not found in the given region, has no effect.\n     * @throw ErrorException if the index is out of bounds\n     */\n    virtual void removeFromRegion(int index, Region region);\n\n    /**\n     * Removes the child interactor at the given 0-based index from the given\n     * region of this container, which is assumed to use a border layout.\n     * If the container does not use a border layout, has no effect.\n     * If the given interactor is not found in the given region, has no effect.\n     * @throw ErrorException if the index is out of bounds\n     */\n    virtual void removeFromRegion(int index, const std::string& region);\n\n    /**\n     * Sets the horizontal and vertical alignment of interactors in this container.\n     */\n    virtual void setAlignment(HorizontalAlignment halign, VerticalAlignment valign);\n\n    /**\n     * Sets the horizontal alignment of interactors in this container.\n     */\n    virtual void setHorizontalAlignment(HorizontalAlignment halign);\n\n    /**\n     * Sets the margin in pixels around interactors in this container.\n     */\n    virtual void setMargin(double px);\n\n    /**\n     * Sets the padding on all 4 sides around widgets in this container.\n     */\n    virtual void setPadding(double px);\n\n    /**\n     * Sets the padding on all 4 sides around widgets in this container,\n     * using different padding on the vertical vs horizontal sides.\n     */\n    virtual void setPadding(double topBottom, double leftRight);\n\n    /**\n     * Sets the padding on all 4 sides around widgets in this container,\n     * using different padding on each of the 4 sides.\n     */\n    virtual void setPadding(double top, double right, double bottom, double left);\n\n    /**\n     * Sets the vertical alignment of interactors in this container.\n     */\n    virtual void setVerticalAlignment(VerticalAlignment valign);\n\n    /**\n     * Sets the horizontal alignment of interactors in the given region of\n     * this container, which is assumed to use a border layout.\n     * If the container does not use a border layout, sets the alignment of\n     * the entire container instead.\n     */\n    virtual void setRegionAlignment(Region region, HorizontalAlignment halign);\n\n    /**\n     * Sets the vertical alignment of interactors in the given region of\n     * this container, which is assumed to use a border layout.\n     * If the container does not use a border layout, sets the alignment of\n     * the entire container instead.\n     */\n    virtual void setRegionAlignment(Region region, VerticalAlignment valign);\n\n    /**\n     * Sets the horizontal and vertical alignment of interactors in the given region of\n     * this container, which is assumed to use a border layout.\n     * If the container does not use a border layout, sets the alignment of\n     * the entire container instead.\n     */\n    virtual void setRegionAlignment(Region region, HorizontalAlignment halign, VerticalAlignment valign);\n\n    /**\n     * Sets the horizontal and/or vertical alignment of interactors in the given region of\n     * this container, which is assumed to use a border layout.\n     * If the container does not use a border layout, sets the alignment of\n     * the entire container instead.\n     */\n    virtual void setRegionAlignment(const std::string& region, const std::string& align);\n\n    /**\n     * Sets the horizontal and vertical alignment of interactors in the given region of\n     * this container, which is assumed to use a border layout.\n     * If the container does not use a border layout, sets the alignment of\n     * the entire container instead.\n     */\n    virtual void setRegionAlignment(const std::string& region, const std::string& halign, const std::string& valign);\n\n    /**\n     * Sets the horizontal alignment of interactors in the given region of\n     * this container, which is assumed to use a border layout.\n     * If the container does not use a border layout, sets the alignment of\n     * the entire container instead.\n     */\n    virtual void setRegionHorizontalAlignment(Region region, HorizontalAlignment halign);\n\n    /**\n     * Sets the horizontal alignment of interactors in the given region of\n     * this container, which is assumed to use a border layout.\n     * If the container does not use a border layout, sets the alignment of\n     * the entire container instead.\n     */\n    virtual void setRegionHorizontalAlignment(const std::string& region, const std::string& halign);\n\n    /**\n     * Sets the vertical alignment of interactors in the given region of\n     * this container, which is assumed to use a border layout.\n     * If the container does not use a border layout, sets the alignment of\n     * the entire container instead.\n     */\n    virtual void setRegionVerticalAlignment(const std::string& region, const std::string& valign);\n\n    /**\n     * Sets the vertical alignment of interactors in the given region of\n     * this container, which is assumed to use a border layout.\n     * If the container does not use a border layout, sets the alignment of\n     * the entire container instead.\n     */\n    virtual void setRegionVerticalAlignment(Region region, VerticalAlignment valign);\n\n    /**\n     * Sets the spacing between interactors in this container.\n     */\n    virtual void setSpacing(double px);\n\nprivate:\n    Q_DISABLE_COPY(GContainer)\n\n    _Internal_QContainer* _iqcontainer;\n    Vector<GInteractor*> _interactors;\n    Map<Region, Vector<GInteractor*>> _interactorsByRegion;\n    Layout _layout;\n\n    friend class _Internal_QContainer;\n    friend class GWindow;\n\n    static Region stringToRegion(const std::string& regionStr);\n};\n\n\n/**\n * Internal class; not to be used by clients.\n * @private\n */\nclass _Internal_QContainer : public QWidget, public _Internal_QWidget {\n    Q_OBJECT\n\npublic:\n    _Internal_QContainer(GContainer* gcontainer, GContainer::Layout layoutType, QWidget* parent = nullptr);\n    _Internal_QContainer(GContainer* gcontainer, int rows, int cols, QWidget* parent = nullptr);\n    virtual QSize sizeHint() const Q_DECL_OVERRIDE;\n\nprivate:\n    GContainer* _gcontainer;\n    GContainer::Layout _layoutType;\n    HorizontalAlignment _halign;\n    VerticalAlignment _valign;\n    int _margin;\n    int _spacing;\n    // int _rows;\n    int _cols;\n    int _currentIndex;\n\n    // border layout regions for N/S/W/E/C:\n    // +------------------------+\n    // |         north          |\n    // |------------------------|\n    // |         middle         |\n    // |+----------------------+|\n    // || west | center | east ||\n    // |+----------------------+|\n    // |------------------------|\n    // |         south          |\n    // +------------------------+\n    // sizing/stretching rules:\n    // - N/S expand horizontally\n    // - W/E expand vertically\n    // - C takes all remaining space\n    // - each widget other than Center widget appears at its preferred (\"hinted\") size\n    QVBoxLayout* _overallLayout;\n    QHBoxLayout* _northLayout;\n    QHBoxLayout* _southLayout;\n    QVBoxLayout* _westLayout;\n    QVBoxLayout* _eastLayout;\n    QHBoxLayout* _centerLayout;\n    QHBoxLayout* _middleLayout;\n    Map<GContainer::Region, HorizontalAlignment> _halignMap;\n    Map<GContainer::Region, VerticalAlignment> _valignMap;\n    Map<GContainer::Region, bool> _regionStretchMap;\n\n    virtual void add(QWidget* widget);\n    virtual void addToGrid(QWidget* widget, int row, int col, int rowspan = 1, int colspan = 1);\n    virtual void addToRegion(QWidget* widget, GContainer::Region region);\n    virtual void clear();\n    virtual void clearRegion(GContainer::Region region);\n    virtual bool contains(QWidget* widget) const;\n    virtual void detach() Q_DECL_OVERRIDE;\n    virtual void fixAlignment(QWidget* widget, GContainer::Region region = GContainer::REGION_CENTER);\n    virtual void fixMargin(QLayout* layout, bool hasStretch = false);\n    virtual HorizontalAlignment getHorizontalAlignment() const;\n    virtual VerticalAlignment getVerticalAlignment() const;\n    virtual GContainer::Layout getLayoutType() const;\n    virtual int getMargin() const;\n    virtual QSize getPreferredSize() const Q_DECL_OVERRIDE;\n    virtual QLayout* getQLayout() const;\n    virtual int getSpacing() const;\n    virtual void insert(int i, QWidget* widget);\n    virtual void insertToRegion(int i, QWidget* widget, GContainer::Region region);\n    virtual bool isRegionStretch(GContainer::Region region) const;\n    virtual QLayout* layoutForRegion(GContainer::Region region) const;\n    virtual bool regionContains(QWidget* widget, GContainer::Region region) const;\n    virtual void remove(QWidget* widget);\n    virtual void removeFromRegion(QWidget* widget, GContainer::Region region);\n    virtual void remove(int i);\n    virtual void removeFromRegion(int i, GContainer::Region region);\n    virtual void setHorizontalAlignment(HorizontalAlignment halign);\n    virtual void setLayoutType(GContainer::Layout layout);\n    virtual void setMargin(int margin);\n    virtual void setPadding(int padding);\n    virtual void setPadding(int left, int top, int right, int bottom);\n    virtual void setRegionAlignment(GContainer::Region region,\n                                    HorizontalAlignment halign,\n                                    VerticalAlignment valign);\n    virtual void setRegionHorizontalAlignment(GContainer::Region region,\n                                              HorizontalAlignment halign);\n    virtual void setRegionStretch(GContainer::Region region, bool stretch = true);\n    virtual void setRegionVerticalAlignment(GContainer::Region region,\n                                            VerticalAlignment valign);\n    virtual void setSpacing(int spacing);\n    virtual void setVerticalAlignment(VerticalAlignment valign);\n\n    friend class GContainer;\n};\n\n#endif // _gcontainer_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/gdiffgui.h",
    "content": "/*\n * File: gdiffgui.h\n * ----------------\n * \n * @author Marty Stepp\n * @version 2018/10/06\n * - allow passing diff flags\n * @version 2018/09/07\n * - added doc comments for new documentation generation\n * @version 2018/08/23\n * - renamed to gdiffgui.h to replace Java version\n * @version 2018/07/31\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n// signal that GUI system is in use (so it will be initialized)\n#define SPL_QT_GUI_IN_USE 1\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _gdiffgui_h\n#define _gdiffgui_h\n\n#include <string>\n#include <QWidget>\n#include <QSplitter>\n\n#define INTERNAL_INCLUDE 1\n#include \"diff.h\"\n#define INTERNAL_INCLUDE 1\n#include \"ginteractor.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gtextarea.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gwindow.h\"\n#undef INTERNAL_INCLUDE\n\n/**\n * A GDiffGui is a graphical window that displays differences between two\n * text strings.  This class is used to implement the \"Compare Output\" feature\n * of the graphical console, as well as various autograder comparisons.\n *\n * @private\n * TODO: document\n */\nclass GDiffGui {\npublic:\n    static const std::string COLOR_EXPECTED;\n    static const std::string COLOR_EXPECTED_DARK_MODE;\n    static const std::string COLOR_LINE_NUMBERS;\n    static const std::string COLOR_LINE_NUMBERS_DARK_MODE;\n    static const std::string COLOR_STUDENT;\n    static const std::string COLOR_STUDENT_DARK_MODE;\n\n    /**\n     * Pops up a diff GUI window to display\n     */\n    static void showDialog(const std::string& name1,\n                           const std::string& text1,\n                           const std::string& name2,\n                           const std::string& text2,\n                           int diffFlags = diff::DIFF_DEFAULT_FLAGS,\n                           bool showCheckBoxes = false);\n\nprivate:\n    static const bool LINE_NUMBERS;\n\n    GDiffGui(const std::string& name1,\n             const std::string& text1,\n             const std::string& name2,\n             const std::string& text2,\n             int diffFlags = diff::DIFF_DEFAULT_FLAGS,\n             bool showCheckBoxes = false);   // forbid construction\n    virtual ~GDiffGui();\n\n    Q_DISABLE_COPY(GDiffGui)\n\n    void setupDiffText(const std::string& diffs);\n    void setupLeftRightText(GTextArea* textArea, const std::string& text);\n    void syncScrollBars(bool left);\n\n    GWindow* _window;\n    QSplitter* _hsplitter;\n    QSplitter* _vsplitter;\n    GTextArea* _textAreaLeft;\n    GTextArea* _textAreaRight;\n    GTextArea* _textAreaBottom;\n    GGenericInteractor<QSplitter>* _hsplitterInteractor;\n    GGenericInteractor<QSplitter>* _vsplitterInteractor;\n};\n\n#endif // _gdiffgui_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/gdiffimage.h",
    "content": "/*\n * File: gdiffimage.h\n * ------------------\n * \n * @author Marty Stepp\n * @version 2018/10/12\n * - added \"highlight diffs in color\" checkbox and functionality\n * @version 2018/09/15\n * - initial version, converted from Java back-end DiffImage class\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n// signal that GUI system is in use (so it will be initialized)\n#define SPL_QT_GUI_IN_USE 1\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _gdiffimage_h\n#define _gdiffimage_h\n\n#include <string>\n#include <QWidget>\n#include <QSplitter>\n\n#define INTERNAL_INCLUDE 1\n#include \"gbutton.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gcanvas.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gcheckbox.h\"\n#define INTERNAL_INCLUDE 1\n#include \"ginteractor.h\"\n#define INTERNAL_INCLUDE 1\n#include \"glabel.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gslider.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gwindow.h\"\n#undef INTERNAL_INCLUDE\n\n/**\n * A GDiffImage is a graphical window that displays differences between two\n * images.  This class is used to implement the \"Compare Graphical Output\"\n * feature of graphical programs, as well as various autograder comparisons.\n *\n * @private\n * TODO: document\n */\nclass GDiffImage {\npublic:\n    static const std::string HIGHLIGHT_COLOR_DEFAULT;\n\n    static void showDialog(const std::string& name1,\n                           GCanvas* image1,\n                           const std::string& name2,\n                           GCanvas* image2);\n\n    static void showDialog(const std::string& name1,\n                           const std::string& imageFile1,\n                           const std::string& name2,\n                           const std::string& imageFile2);\n\nprivate:\n    GDiffImage(const std::string& name1,\n               GCanvas* image1,\n               const std::string& name2,\n               GCanvas* image2);   // forbid construction\n    virtual ~GDiffImage();\n\n    Q_DISABLE_COPY(GDiffImage)\n\n    void chooseHighlightColor();\n    void drawImages();\n    std::string getPixelString(GImage* image, int x, int y) const;\n\n    GWindow* _window;\n    GSlider* _slider;\n    GCheckBox* _highlightDiffsBox;\n    GButton* _colorButton;\n    GLabel* _diffPixelsLabel;\n    GLabel* _imageLabel1;\n    GLabel* _imageLabel2;\n    GLabel* _southPixelLabel;\n    GImage* _image1;\n    GImage* _image2;\n    GImage* _imageDiffs;\n    std::string _highlightColor;\n\n    friend class GImage;\n};\n\n#endif // _gdiffimage_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/gdownloader.h",
    "content": "/*\n * File: gdownloader.h\n * -------------------\n * A GDownloader can download data from URLs and save them to files or return\n * the data as a string.\n *\n * Note that because the downloader uses a pure-C++ implementation, your project\n * must include the 'network' component of Qt to function properly.\n * If you get errors when trying to connect to HTTPS URLs, you may also need to\n * install various SSL packages on your system, such as openssl, libssl-dev,\n * libssl1.0, and so on.  This varies by operating system.\n *\n * Based somewhat on this source:\n * https://wiki.qt.io/Download_Data_from_URL\n *\n * @author Marty Stepp\n * @version 2018/09/18\n * - working version; had to fix various threading / Qt signal issues\n * @version 2018/09/07\n * - added doc comments for new documentation generation\n * @version 2018/08/23\n * - renamed to gdownloader.h to replace Java version\n * @version 2018/08/03\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n// signal that GUI system is in use (so it will be initialized)\n#define SPL_QT_GUI_IN_USE 1\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _gdownloader_h\n#define _gdownloader_h\n\n#include <string>\n#include <QtCore>\n#include <QtNetwork>\n#include <QNetworkAccessManager>\n#include <QNetworkRequest>\n#include <QNetworkReply>\n#include <QUrl>\n\n#define INTERNAL_INCLUDE 1\n#include \"map.h\"\n#undef INTERNAL_INCLUDE\n\n/**\n * A GDownloader can download files and data over an internet connection.\n * It can save the data to a file or return the data as a string.\n */\nclass GDownloader : public QObject {\n    Q_OBJECT\n\npublic:\n    /**\n     * Creates a new downloader.\n     */\n    GDownloader();\n\n    /**\n     * Frees memory allocated internally by the downloader.\n     */\n    virtual ~GDownloader();\n\n    /**\n     * Downloads the text contents of the given URL, returning them as a string.\n     * This method blocks until the data is finished downloading.\n     */\n    std::string downloadAsString(const std::string& url);\n\n    /**\n     * Downloads the text contents of the given URL, saving it to the given output file.\n     * This method blocks until the data is finished downloading.\n     */\n    void downloadToFile(const std::string& url, const std::string& file);\n\n    /**\n     * Returns the last HTTP error message that occurred.\n     * If no HTTP errors have occurred, returns \"\".\n     */\n    std::string getErrorMessage() const;\n\n    /**\n     * Returns the value of the given HTTP header for this URL request.\n     * If the given header is not defined, returns an empty string.\n     */\n    std::string getHeader(const std::string& name) const;\n\n    /**\n     * Returns the most recent HTTP status code, which may be a successful\n     * code (e.g. 200) or an error (e.g 404). If there is no HTTP status\n     * code to return, returns 0.\n     */\n    int getHttpStatusCode() const;\n\n    /**\n     * Returns the value of the HTTP \"User-Agent\" header for this URL request,\n     * or an empty string if the user agent has not been set.\n     */\n    std::string getUserAgent() const;\n\n    /**\n     * Returns true if the HTTP connection failed and had an error.\n     * You can see what the error was by calling getErrorMessage.\n     */\n    bool hasError() const;\n\n    /**\n     * Performs an HTTP GET request to the given URL.\n     * along with any headers previously specified.\n     */\n    void httpGet(const std::string& url);\n\n    /**\n     * Performs an HTTP POST request to the given URL,\n     * submitting any headers and query parameters previously specified.\n     */\n    void httpPost(const std::string& url);\n\n    /**\n     * Sets the value of the given HTTP header for this URL request.\n     * Must be called before open(), and the stream must have been created\n     * with the parameterless constructor.\n     *\n     * @example stream.setHeader(\"Referer\", \"http://cs106b.stanford.edu/\");\n     */\n    void setHeader(const std::string& name, const std::string& value);\n\n    /**\n     * Sets the value of the HTTP \"User-Agent\" header for this URL request.\n     * Must be called before open(), and the stream must have been created\n     * with the parameterless constructor.\n     * Equivalent to calling setHeader with \"User-Agent\" as the header's name.\n     *\n     * @example stream.setUserAgent(\"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2\");\n     */\n    void setUserAgent(const std::string& userAgent);\n\nsignals:\n    /**\n     * This Qt signal fires when the data is done downloading.\n     */\n    void downloaded();\n\nprivate slots:\n    void downloadInternal();\n    void fileDownloadError(QNetworkReply::NetworkError);\n    void saveDownloadedData(const std::string& member, const std::string& filename = \"\");\n    void sslErrors(QList<QSslError>);\n    void waitForDownload();\n\nprivate:\n    Q_DISABLE_COPY(GDownloader)\n\n    static std::string qtNetworkErrorToString(QNetworkReply::NetworkError nerror);\n\n    QNetworkAccessManager* _manager;\n    QNetworkReply* _reply;\n    Map<std::string, std::string> _headers;   // HTTP headers to send (name => value)\n    int _httpStatusCode;\n    bool _downloadComplete;\n    std::string _url;\n    std::string _filename;\n    std::string _filedata;\n    std::string _lastErrorMessage;\n};\n\n#endif // _gdownloader_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/gdrawingsurface.h",
    "content": "/*\n * File: gdrawingsurface.h\n * -----------------------\n *\n * @author Marty Stepp\n * @version 2018/09/10\n * - added doc comments for new documentation generation\n * @version 2018/08/23\n * - renamed to gdrawingsurface.h to replace Java version\n * @version 2018/07/11\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n// signal that GUI system is in use (so it will be initialized)\n#define SPL_QT_GUI_IN_USE 1\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _gdrawingsurface_h\n#define _gdrawingsurface_h\n\n#include <string>\n#include <QFont>\n#include <QWidget>\n\n#define INTERNAL_INCLUDE 1\n#include \"grid.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gobjects.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gtypes.h\"\n#undef INTERNAL_INCLUDE\n\n/**\n * GDrawingSurface is an abstract superclass for types that allow drawing shapes\n * and pixels onto themselves as a pixel background layer.\n * This includes graphical canvas objects (GCanvas) as well as windows (GWindow).\n */\nclass GDrawingSurface {\npublic:\n    /**\n     * Erases any pixel data from the drawing surface.\n     */\n    virtual void clear() = 0;\n\n    /**\n     * Repaints the interactor only if its contents have changed.\n     */\n    virtual void conditionalRepaint();\n\n    /**\n     * Repaints the given region of the interactor only if its contents have changed.\n     */\n    virtual void conditionalRepaintRegion(int x, int y, int width, int height);\n\n    /**\n     * Repaints the given region of the interactor only if its contents have changed.\n     */\n    virtual void conditionalRepaintRegion(const GRectangle& bounds);\n\n    /**\n     * Draws the given graphical object onto the background pixel layer of this\n     * interactor.\n     * @throw ErrorException if the object is null\n     */\n    virtual void draw(GObject* gobj) = 0;\n\n    /**\n     * Draws the given graphical object onto the background pixel layer of this\n     * interactor, moving it to the given x/y location first.\n     * @throw ErrorException if the object is null\n     */\n    virtual void draw(GObject* gobj, double x, double y);\n\n    /**\n     * Draws the given graphical object onto the background pixel layer of this\n     * interactor.\n     */\n    virtual void draw(GObject& gobj);\n\n    /**\n     * Draws the given graphical object onto the background pixel layer of this\n     * interactor, moving it to the given x/y location first.\n     */\n    virtual void draw(GObject& gobj, double x, double y);\n\n    /**\n     * Draws this interactor with the given Qt painter object.\n     * @private\n     */\n    virtual void draw(QPainter* painter) = 0;\n\n    /**\n     * Draws an unfilled arc with the given attributes onto the background pixel\n     * layer of this interactor in the current color.\n     * See gobjects.h for explanation of GArc parameters.\n     */\n    virtual void drawArc(double x, double y, double width, double height, double start, double sweep);\n\n    /**\n     * Draws an image loaded from the given file name onto the background pixel\n     * layer of this interactor at the given x/y location.\n     * See gobjects.h for explanation of GImage parameters.\n     * @throw ErrorException if the given file is not found or cannot be loaded\n     *        as a valid image file\n     */\n    virtual void drawImage(const std::string& filename, double x = 0, double y = 0);\n\n    /**\n     * Draws a line between the given two points onto the background pixel\n     * layer of this interactor at the given x/y location in the current color.\n     * See gobjects.h for explanation of GLine parameters.\n     */\n    virtual void drawLine(const GPoint& p0, const GPoint& p1);\n\n    /**\n     * Draws a line between the given two points onto the background pixel\n     * layer of this interactor at the given x/y location in the current color.\n     * See gobjects.h for explanation of GLine parameters.\n     */\n    virtual void drawLine(double x0, double y0, double x1, double y1);\n\n    /**\n     * Draws an unfilled oval with the given bounding box onto the background pixel\n     * layer of this interactor at the given x/y location in the current color.\n     * See gobjects.h for explanation of GOval parameters.\n     */\n    virtual void drawOval(const GRectangle& bounds);\n\n    /**\n     * Draws an unfilled oval with the given bounding box onto the background pixel\n     * layer of this interactor at the given x/y location in the current color.\n     * See gobjects.h for explanation of GOval parameters.\n     */\n    virtual void drawOval(double x, double y, double width, double height);\n\n    /**\n     * Draws a line using polar coordinates onto the background pixel\n     * layer of this interactor in the current color.\n     * The line begins at the given x/y point and extends from there by the\n     * given angle and radius.\n     * Returns the end point opposite p0 where the line ends.\n     * See gobjects.h for explanation of GLine parameters.\n     */\n    virtual GPoint drawPolarLine(const GPoint& p0, double r, double theta);\n\n    /**\n     * Draws a line using polar coordinates onto the background pixel\n     * layer of this interactor in the current color.\n     * The line begins at the given x/y point and extends from there by the\n     * given angle and radius.\n     * Returns the end point where the line ends.\n     * See gobjects.h for explanation of GLine parameters.\n     */\n    virtual GPoint drawPolarLine(double x0, double y0, double r, double theta);\n\n    /**\n     * Colors the given x/y pixel of the background layer of this interactor\n     * using the interactor's current color.\n     */\n    virtual void drawPixel(double x, double y);\n\n    /**\n     * Colors the given x/y pixel of the background layer of this interactor\n     * using the given color.\n     */\n    virtual void drawPixel(double x, double y, int color);\n\n    /**\n     * Colors the given x/y pixel of the background layer of this interactor\n     * using the given color.\n     */\n    virtual void drawPixel(double x, double y, const std::string& color);\n\n    /**\n     * Draws an unfilled polygon containing the given points onto the background\n     * pixel layer of this interactor in the current color.\n     * See gobjects.h for explanation of GPolygon parameters.\n     */\n    virtual void drawPolygon(std::initializer_list<double> coords);\n\n    /**\n     * Draws an unfilled polygon containing the given points onto the background\n     * pixel layer of this interactor in the current color.\n     * See gobjects.h for explanation of GPolygon parameters.\n     */\n    virtual void drawPolygon(std::initializer_list<GPoint> points);\n\n    /**\n     * Draws an unfilled rectangle of the given dimensions onto the background\n     * pixel layer of this interactor in the current color.\n     * See gobjects.h for explanation of GRect parameters.\n     */\n    virtual void drawRect(const GRectangle& bounds);\n\n    /**\n     * Draws an unfilled rectangle of the given dimensions onto the background\n     * pixel layer of this interactor in the current color.\n     * See gobjects.h for explanation of GRect parameters.\n     */\n    virtual void drawRect(double x, double y, double width, double height);\n\n    /**\n     * Draws a text string onto the background pixel layer of this interactor\n     * at the given x/y location in the current font and color.\n     * See gobjects.h for explanation of GText parameters.\n     */\n    virtual void drawString(const std::string& text, double x, double y);\n\n    /**\n     * Draws a filled arc with the given attributes onto the background pixel\n     * layer of this interactor in the current color and fill color.\n     * See gobjects.h for explanation of GArc parameters.\n     */\n    virtual void fillArc(double x, double y, double width, double height, double start, double sweep);\n\n    /**\n     * Draws a filled oval with the given bounding box onto the background pixel\n     * layer of this interactor at the given x/y location in the current color\n     * and fill color.\n     * See gobjects.h for explanation of GOval parameters.\n     */\n    virtual void fillOval(const GRectangle& bounds);\n\n    /**\n     * Draws a filled oval with the given bounding box onto the background pixel\n     * layer of this interactor at the given x/y location in the current color\n     * and fill color.\n     * See gobjects.h for explanation of GOval parameters.\n     */\n    virtual void fillOval(double x, double y, double width, double height);\n\n    /**\n     * Draws a filled polygon containing the given points onto the background\n     * pixel layer of this interactor in the current color and fill color.\n     * See gobjects.h for explanation of GPolygon parameters.\n     */\n    virtual void fillPolygon(std::initializer_list<double> coords);\n\n    /**\n     * Draws a filled rectangle of the given dimensions onto the background\n     * pixel layer of this interactor in the current color and fill color.\n     * See gobjects.h for explanation of GRect parameters.\n     */\n    virtual void fillRect(const GRectangle& bounds);\n\n    /**\n     * Draws a filled rectangle of the given dimensions onto the background\n     * pixel layer of this interactor in the current color and fill color.\n     * See gobjects.h for explanation of GRect parameters.\n     */\n    virtual void fillRect(double x, double y, double width, double height);\n\n    /**\n     * Returns the pixel color data at the given x/y location,\n     * retaining alpha-channel transparency in the top 8 bits.\n     */\n    virtual int getARGB(double x, double y) const;\n\n    /**\n     * Returns the current background color of the interactor as a string.\n     * See gcolor.h for more detail about color strings.\n     */\n    virtual std::string getBackground() const;\n\n    /**\n     * Returns the current background color of the interactor as an RGB integer.\n     * See gcolor.h for more detail about colors.\n     */\n    virtual int getBackgroundInt() const;\n\n    /**\n     * Returns the current foreground outline color of the interactor as a string.\n     * This color will be used to draw the outlines of shapes drawn using the\n     * drawXxx and fillXxx methods, as well as being the default color used when\n     * calling setPixel or setRGB.\n     * See gcolor.h for more detail about color strings.\n     * Equivalent to getForeground.\n     */\n    virtual std::string getColor() const;\n\n    /**\n     * Returns the current foreground outline color of the interactor as an RGB integer.\n     * This color will be used to draw the outlines of shapes drawn using the\n     * drawXxx and fillXxx methods, as well as being the default color used when\n     * calling setPixel or setRGB.\n     * See gcolor.h for more detail about colors.\n     * Equivalent to getForegroundInt.\n     */\n    virtual int getColorInt() const;\n\n    /**\n     * Returns the current fill color of the interactor as a string.\n     * This color will appear in shapes drawn using the fillXxx methods.\n     * See gcolor.h for more detail about color strings.\n     */\n    virtual std::string getFillColor() const;\n\n    /**\n     * Returns the current fill color of the interactor as an RGB integer.\n     * This color will appear in shapes drawn using the fillXxx methods.\n     * See gcolor.h for more detail about color strings.\n     */\n    virtual int getFillColorInt() const;\n\n    /**\n     * Returns the current text font of the interactor as a font string.\n     * This font will be used when drawing text strings using drawString.\n     * See gfont.h for more detail about font strings.\n     */\n    virtual std::string getFont() const;\n\n    /**\n     * Returns the current foreground outline color of the interactor as a string.\n     * This color will be used to draw the outlines of shapes drawn using the\n     * drawXxx and fillXxx methods, as well as being the default color used when\n     * calling setPixel or setRGB.\n     * See gcolor.h for more detail about color strings.\n     * Equivalent to getColor.\n     */\n    virtual std::string getForeground() const;\n\n    /**\n     * Returns the current foreground outline color of the interactor as an RGB integer.\n     * This color will be used to draw the outlines of shapes drawn using the\n     * drawXxx and fillXxx methods, as well as being the default color used when\n     * calling setPixel or setRGB.\n     * See gcolor.h for more detail about colors.\n     * Equivalent to getColor.\n     */\n    virtual int getForegroundInt() const;\n\n    /**\n     * Returns the current line style which will be used to draw outlines of\n     * shapes and lines.\n     * The default line style is a solid line (GObject::LINE_SOLID).\n     */\n    virtual GObject::LineStyle getLineStyle() const;\n\n    /**\n     * Returns the thickness used when drawing outlines of shapes and lines.\n     * The default thickness is 1.\n     */\n    virtual double getLineWidth() const;\n\n    /**\n     * Returns the color of the pixel at the given x/y coordinates of the\n     * background layer of the interactor as an integer such as 0xff00cc.\n     *\n     * Note that if you are planning to set many pixels in the background and\n     * want maximum performance, you should instead call getPixels to extract\n     * all pixels into a Grid, then manipulate all desired pixels in that Grid,\n     * then call setPixels to submit all of your changes.\n     *\n     * Equivalent to getRGB.\n     *\n     * @throw ErrorException if the given x/y values are out of bounds.\n     */\n    virtual int getPixel(double x, double y) const = 0;\n\n    /**\n     * Returns the color of the pixel at the given x/y coordinates of the\n     * background layer of the interactor as an integer such as 0xffff00cc.\n     * This differs from getPixel in that it explicitly retains and returns\n     * the alpha channel of the pixel in the top 8 bits, allowing for\n     * transparency effects.\n     *\n     * Note that if you are planning to set many pixels in the background and\n     * want maximum performance, you should instead call getPixels to extract\n     * all pixels into a Grid, then manipulate all desired pixels in that Grid,\n     * then call setPixels to submit all of your changes.\n     *\n     * @throw ErrorException if the given x/y values are out of bounds.\n     */\n    virtual int getPixelARGB(double x, double y) const = 0;\n\n    /**\n     * Returns all pixels of the surface as a Grid,\n     * where rows represent y values and columns represent x values.\n     */\n    virtual Grid<int> getPixels() const = 0;\n\n    /**\n     * Returns all pixels of the background layer of the surface as a Grid,\n     * where rows represent y values and columns represent x values.\n     * This differs from getPixels in that it explicitly retains and returns\n     * the alpha channel of each pixel in the top 8 bits, allowing for\n     * transparency effects.\n     */\n    virtual Grid<int> getPixelsARGB() const = 0;\n\n    /**\n     * Returns the color of the pixel at the given x/y coordinates of the image\n     * as a string such as \"#ff00cc\".\n     * The string that is returned comes from the <code>GWindow</code> function\n     * <code>convertRGBToColor</code>; see documentation of that function.\n     * Throws an error if the given x/y values are out of bounds.\n     */\n    virtual std::string getPixelString(double x, double y) const;\n\n    /**\n     * Returns the color of the pixel at the given x/y coordinates of the\n     * background layer of the interactor as an integer such as 0xff00cc.\n     *\n     * Note that if you are planning to set many pixels in the background and\n     * want maximum performance, you should instead call getPixels to extract\n     * all pixels into a Grid, then manipulate all desired pixels in that Grid,\n     * then call setPixels to submit all of your changes.\n     *\n     * Equivalent to getPixel.\n     *\n     * @throw ErrorException if the given x/y values are out of bounds.\n     */\n    virtual int getRGB(double x, double y) const;\n\n    /**\n     * Returns the color of the pixel at the given x/y coordinates of the\n     * background layer of the interactor as a color string such as \"#ff00cc\".\n     *\n     * Note that if you are planning to set many pixels in the background and\n     * want maximum performance, you should instead call getPixels to extract\n     * all pixels into a Grid, then manipulate all desired pixels in that Grid,\n     * then call setPixels to submit all of your changes.\n     *\n     * @throw ErrorException if the given x/y values are out of bounds.\n     */\n    virtual std::string getRGBString(double x, double y) const;\n\n    /**\n     * Returns true if the interactor should repaint itself automatically whenever\n     * any change is made to its graphical data.\n     * But if you call setAutoRepaint(false), you must manually repaint the interactor\n     * to see any changes. This can be desirable if you plan to make a large batch\n     * of changes and want to repaint only after all of them are done.\n     * Equivalent to isRepaintImmediately.\n     */\n    virtual bool isAutoRepaint() const;\n\n    /**\n     * Returns true if the interactor should repaint itself automatically whenever\n     * any change is made to its graphical data.\n     * But if you call setAutoRepaint(false), you must manually repaint the interactor\n     * to see any changes. This can be desirable if you plan to make a large batch\n     * of changes and want to repaint only after all of them are done.\n     * Equivalent to isAutoRepaint.\n     */\n    virtual bool isRepaintImmediately() const;\n\n    /**\n     * Instructs the interactor to redraw itself on the screen.\n     * By default the interactor will automatically repaint itself whenever you\n     * make any change to its graphical data.\n     * But if you call setAutoRepaint(false), you must manually repaint the interactor\n     * to see any changes. This can be desirable if you plan to make a large batch\n     * of changes and want to repaint only after all of them are done.\n     */\n    virtual void repaint() = 0;\n\n    /**\n     * Instructs the interactor to repaint the given region of pixel data.\n     * This can be preferable to repaint() for performance purposes if you have\n     * made a small change that affects only the given rectangular region of\n     * the interactor.\n     */\n    virtual void repaintRegion(int x, int y, int width, int height) = 0;\n\n    /**\n     * Instructs the interactor to repaint the given region of pixel data.\n     * This can be preferable to repaint() for performance purposes if you have\n     * made a small change that affects only the given rectangular region of\n     * the interactor.\n     */\n    virtual void repaintRegion(const GRectangle& bounds);\n\n    /**\n     * Sets whether the interactor should repaint itself automatically whenever\n     * any change is made to its graphical data.\n     * By default this is true.\n     * But if you call setAutoRepaint(false), you must manually repaint the interactor\n     * to see any changes. This can be desirable if you plan to make a large batch\n     * of changes and want to repaint only after all of them are done.\n     * Equivalent to setRepaintImmediately.\n     */\n    virtual void setAutoRepaint(bool autoRepaint);\n\n    /**\n     * Sets the current background color of the interactor as an RGB integer.\n     * See gcolor.h for more detail about colors.\n     */\n    virtual void setBackground(int color);\n\n    /**\n     * Sets the current background color of the interactor as a string.\n     * See gcolor.h for more detail about color strings.\n     */\n    virtual void setBackground(const std::string& color);\n\n    /**\n     * Sets the current foreground outline color of the interactor as as RGB integer.\n     * This color will be used to draw the outlines of shapes drawn using the\n     * drawXxx and fillXxx methods, as well as being the default color used when\n     * calling setPixel or setRGB.\n     * See gcolor.h for more detail about color strings.\n     * Equivalent to setForeground.\n     */\n    virtual void setColor(int color);\n\n    /**\n     * Sets the current foreground outline color of the interactor as a string.\n     * This color will be used to draw the outlines of shapes drawn using the\n     * drawXxx and fillXxx methods, as well as being the default color used when\n     * calling setPixel or setRGB.\n     * See gcolor.h for more detail about color strings.\n     * Equivalent to setForeground.\n     */\n    virtual void setColor(const std::string& color);\n\n    /**\n     * Sets the current fill color of the interactor as an RGB integer.\n     * This color will appear in shapes drawn using the fillXxx methods.\n     * See gcolor.h for more detail about color strings.\n     */\n    virtual void setFillColor(int color);\n\n    /**\n     * Returns the current fill color of the interactor as a string.\n     * This color will appear in shapes drawn using the fillXxx methods.\n     * See gcolor.h for more detail about color strings.\n     */\n    virtual void setFillColor(const std::string& color);\n\n    /**\n     * Returns the current text font of the interactor using a Qt font object.\n     * This font will be used when drawing text strings using drawString.\n     * @private\n     */\n    virtual void setFont(const QFont& font);\n\n    /**\n     * Sets the current text font of the interactor as a font string.\n     * This font will be used when drawing text strings using drawString.\n     * See gfont.h for more detail about font strings.\n     */\n    virtual void setFont(const std::string& font);\n\n    /**\n     * Sets the current foreground outline color of the interactor as an RGB integer.\n     * This color will be used to draw the outlines of shapes drawn using the\n     * drawXxx and fillXxx methods, as well as being the default color used when\n     * calling setPixel or setRGB.\n     * See gcolor.h for more detail about color strings.\n     * Equivalent to setColor.\n     */\n    virtual void setForeground(int color);\n\n    /**\n     * Sets the current foreground outline color of the interactor as a string.\n     * This color will be used to draw the outlines of shapes drawn using the\n     * drawXxx and fillXxx methods, as well as being the default color used when\n     * calling setPixel or setRGB.\n     * See gcolor.h for more detail about color strings.\n     * Equivalent to setColor.\n     */\n    virtual void setForeground(const std::string& color);\n\n    /**\n     * Sets the thickness used when drawing outlines of shapes and lines.\n     * The default thickness is 1.\n     */\n    virtual void setLineWidth(double lineWidth);\n\n    /**\n     * Sets the current line style which will be used to draw outlines of\n     * shapes and lines.\n     * The default line style is a solid line (GObject::LINE_SOLID).\n     */\n    virtual void setLineStyle(GObject::LineStyle lineStyle);\n\n    /**\n     * Sets the color of the given x/y pixel in the background layer of the\n     * interactor to the given RGB values.\n     *\n     * Note that if you are planning to set many pixels in the background and\n     * want maximum performance, you should instead call getPixels to extract\n     * all pixels into a Grid, then manipulate all desired pixels in that Grid,\n     * then call setPixels to submit all of your changes.\n     * Equivalent to setRGB.\n     *\n     * @throw ErrorException if x/y is out of range or rgb is an invalid color\n     */\n    virtual void setPixel(double x, double y, int rgb) = 0;\n\n    /**\n     * Sets the color of the given x/y pixel in the background layer of the\n     * interactor to the given RGB values.\n     *\n     * Note that if you are planning to set many pixels in the background and\n     * want maximum performance, you should instead call getPixels to extract\n     * all pixels into a Grid, then manipulate all desired pixels in that Grid,\n     * then call setPixels to submit all of your changes.\n     * Equivalent to setRGB.\n     *\n     * @throw ErrorException if x/y is out of range or r,g,b are not between 0-255\n     */\n    virtual void setPixel(double x, double y, int r, int g, int b);\n\n    /**\n     * Sets the color of the given x/y pixel in the background layer of the\n     * interactor to the given color.\n     *\n     * Note that if you are planning to set many pixels in the background and\n     * want maximum performance, you should instead call getPixels to extract\n     * all pixels into a Grid, then manipulate all desired pixels in that Grid,\n     * then call setPixels to submit all of your changes.\n     * Equivalent to setRGB.\n     *\n     * @throw ErrorException if x/y is out of range\n     */\n    virtual void setPixel(double x, double y, const std::string& color);\n\n    /**\n     * Sets the color of the given x/y pixel in the background layer of the\n     * interactor to the given ARGB value.\n     *\n     * Note that if you are planning to set many pixels in the background and\n     * want maximum performance, you should instead call getPixelsARGB to extract\n     * all pixels into a Grid, then manipulate all desired pixels in that Grid,\n     * then call setPixelsARGB to submit all of your changes.\n     *\n     * @throw ErrorException if x/y is out of range or argb is an invalid color\n     */\n    virtual void setPixelARGB(double x, double y, int argb) = 0;\n\n    /**\n     * Sets the color of the given x/y pixel in the background layer of the\n     * interactor to the given ARGB value.\n     *\n     * Note that if you are planning to set many pixels in the background and\n     * want maximum performance, you should instead call getPixelsARGB to extract\n     * all pixels into a Grid, then manipulate all desired pixels in that Grid,\n     * then call setPixelsARGB to submit all of your changes.\n     *\n     * @throw ErrorException if x/y is out of range or a,r,g,b are not between 0-255\n     */\n    virtual void setPixelARGB(double x, double y, int a, int r, int g, int b);\n\n    /**\n     * Sets the color of the all pixels in the background layer of the\n     * interactor to the given RGB values, using rows as y-values and columns as\n     * x-values.  Any existing background layer pixels will be replaced.\n     * If the given grid is not the same size as this interactor, the interactor\n     * will be resized to match the grid.\n     */\n    virtual void setPixels(const Grid<int>& pixels) = 0;\n\n    /**\n     * Sets the color of the all pixels in the background layer of the\n     * interactor to the given ARGB values, using rows as y-values and columns as\n     * x-values.  Any existing background layer pixels will be replaced.\n     * If the given grid is not the same size as this interactor, the interactor\n     * will be resized to match the grid.\n     */\n    virtual void setPixelsARGB(const Grid<int>& pixelsARGB) = 0;\n\n    /**\n     * Sets whether the interactor should repaint itself automatically whenever\n     * any change is made to its graphical data.\n     * By default this is true.\n     * But if you call setAutoRepaint(false), you must manually repaint the interactor\n     * to see any changes. This can be desirable if you plan to make a large batch\n     * of changes and want to repaint only after all of them are done.\n     * Equivalent to setAutoRepaint.\n     */\n    virtual void setRepaintImmediately(bool autoRepaint);\n\n    /**\n     * Sets the color of the given x/y pixel in the background layer of the\n     * interactor to the given RGB values.\n     *\n     * Note that if you are planning to set many pixels in the background and\n     * want maximum performance, you should instead call getPixels to extract\n     * all pixels into a Grid, then manipulate all desired pixels in that Grid,\n     * then call setPixels to submit all of your changes.\n     * Equivalent to setPixel.\n     *\n     * @throw ErrorException if x/y is out of range or rgb is an invalid color\n     */\n    virtual void setRGB(double x, double y, int rgb);\n\n    /**\n     * Sets the color of the given x/y pixel in the background layer of the\n     * interactor to the given RGB values.\n     *\n     * Note that if you are planning to set many pixels in the background and\n     * want maximum performance, you should instead call getPixels to extract\n     * all pixels into a Grid, then manipulate all desired pixels in that Grid,\n     * then call setPixels to submit all of your changes.\n     * Equivalent to setPixel.\n     *\n     * @throw ErrorException if x/y is out of range or r,g,b are not between 0-255\n     */\n    virtual void setRGB(double x, double y, int r, int g, int b);\n\n    /**\n     * Sets the color of the given x/y pixel in the background layer of the\n     * interactor to the given color.\n     *\n     * Note that if you are planning to set many pixels in the background and\n     * want maximum performance, you should instead call getPixels to extract\n     * all pixels into a Grid, then manipulate all desired pixels in that Grid,\n     * then call setPixels to submit all of your changes.\n     * Equivalent to setPixel.\n     *\n     * @throw ErrorException if x/y is out of range\n     */\n    virtual void setRGB(double x, double y, const std::string& color);\n\nprotected:\n    GDrawingSurface();\n    virtual ~GDrawingSurface();\n\n    GDrawingSurface* _forwardTarget;\n    std::string _backgroundColor;\n    std::string _color;\n    std::string _fillColor;\n    std::string _font;\n    int _backgroundColorInt;\n    int _colorInt;\n    int _fillColorInt;\n    GObject::LineStyle _lineStyle;\n    double _lineWidth;\n    bool _autoRepaint;\n\n    /**\n     * Throws an error if the given x/y values are out of bounds.\n     */\n    void checkBounds(const std::string& member, double x, double y, double width, double height) const;\n\n    /**\n     * Throws an error if the given rgb value is not a valid color.\n     */\n    void checkColor(const std::string& member, int rgb) const;\n\n    /**\n     * Throws an error if the given width/height values are out of bounds.\n     */\n    void checkSize(const std::string& member, double width, double height) const;\n\n    /**\n     * Initializes a new graphical object to be drawn.\n     * Used as a convenience method to set the color, fill color, outline style,\n     * font, and other settings of graphical objects based on the settings of\n     * the drawing surface.\n     */\n    virtual void initializeGObject(GObject& obj, bool filled = false);\n\n    /**\n     * Initializes a new graphical object to be drawn.\n     * Used as a convenience method to set the color, fill color, outline style,\n     * font, and other settings of graphical objects based on the settings of\n     * the drawing surface.\n     */\n    virtual void initializeGObject(GObject* obj, bool filled = false);\n\n    /**\n     * Sets a forward target to which drawing calls should be sent.\n     * Used by GForwardDrawingSurface.\n     * @private\n     */\n    virtual void setDrawingForwardTarget(GDrawingSurface* forwardTarget);\n};\n\n/**\n * A drawing surface that just forwards any calls it receives to another\n * drawing surface.\n * In our library this class is primarily used so that a GWindow can pass on\n * drawing calls like drawRect and fillOval on to its internal GCanvas instance.\n * @private\n */\nclass GForwardDrawingSurface : public virtual GDrawingSurface {\npublic:\n    virtual void clear() Q_DECL_OVERRIDE;\n    virtual void draw(GObject* gobj) Q_DECL_OVERRIDE;\n    virtual void draw(GObject* gobj, double x, double y) Q_DECL_OVERRIDE;\n    virtual void draw(GObject& gobj) Q_DECL_OVERRIDE;\n    virtual void draw(GObject& gobj, double x, double y) Q_DECL_OVERRIDE;\n    virtual void draw(QPainter* painter) Q_DECL_OVERRIDE;\n    virtual int getPixel(double x, double y) const Q_DECL_OVERRIDE;\n    virtual int getPixelARGB(double x, double y) const Q_DECL_OVERRIDE;\n    virtual Grid<int> getPixels() const Q_DECL_OVERRIDE;\n    virtual Grid<int> getPixelsARGB() const Q_DECL_OVERRIDE;\n    virtual bool isAutoRepaint() const Q_DECL_OVERRIDE;\n    virtual void repaint() Q_DECL_OVERRIDE;\n    virtual void repaintRegion(int x, int y, int width, int height) Q_DECL_OVERRIDE;\n    virtual void setAutoRepaint(bool autoRepaint) Q_DECL_OVERRIDE;\n    virtual void setBackground(int color) Q_DECL_OVERRIDE;\n    virtual void setBackground(const std::string& color) Q_DECL_OVERRIDE;\n    virtual void setColor(int color) Q_DECL_OVERRIDE;\n    virtual void setColor(const std::string& color) Q_DECL_OVERRIDE;\n    virtual void setFillColor(int color) Q_DECL_OVERRIDE;\n    virtual void setFillColor(const std::string& color) Q_DECL_OVERRIDE;\n    virtual void setFont(const QFont& font) Q_DECL_OVERRIDE;\n    virtual void setFont(const std::string& font) Q_DECL_OVERRIDE;\n    virtual void setLineWidth(double lineWidth) Q_DECL_OVERRIDE;\n    virtual void setPixel(double x, double y, int rgb) Q_DECL_OVERRIDE;\n    virtual void setPixel(double x, double y, int r, int g, int b) Q_DECL_OVERRIDE;\n    virtual void setPixelARGB(double x, double y, int argb) Q_DECL_OVERRIDE;\n    virtual void setPixelARGB(double x, double y, int a, int r, int g, int b) Q_DECL_OVERRIDE;\n    virtual void setPixels(const Grid<int>& pixels) Q_DECL_OVERRIDE;\n    virtual void setPixelsARGB(const Grid<int>& pixelsARGB) Q_DECL_OVERRIDE;\n    virtual void setRepaintImmediately(bool repaintImmediately) Q_DECL_OVERRIDE;\n\nprotected:\n    virtual void ensureForwardTarget() = 0;\n    virtual void ensureForwardTargetConstHack() const;\n};\n\n#endif // _gcanvas_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/gevent.h",
    "content": "/*\n * File: gevent.h\n * --------------\n *\n * @author Marty Stepp\n * @version 2018/09/20\n * - removed deprecation warning on waitForEvent/Click global functions (for now)\n * @version 2018/09/07\n * - added doc comments for new documentation generation\n * @version 2018/08/23\n * - renamed to gevent.h to replace Java version\n * @version 2018/07/06\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n// signal that GUI system is in use (so it will be initialized)\n#define SPL_QT_GUI_IN_USE 1\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _gevent_h\n#define _gevent_h\n\n#include <functional>\n#include <iostream>\n#include <string>\n#include <QEvent>\n\n#define INTERNAL_INCLUDE 1\n#include \"gtypes.h\"\n#undef INTERNAL_INCLUDE\n\nclass GEvent;\nclass GInteractor;\nclass GObservable;\nclass _Internal_QCanvas;\nclass _Internal_QCheckBox;\nclass _Internal_QPushButton;\nclass _Internal_QWidget;\n\n/** Types for the event listener functions to be passed to various interactors. */\ntypedef std::function<void(GEvent)> GEventListener;\n\n/** Types for the event listener functions to be passed to various interactors. */\ntypedef std::function<void()>       GEventListenerVoid;\n\n/**\n * Represents all major categories of events.\n */\nenum EventClass {\n    NULL_EVENT      = 0x0000,\n    ACTION_EVENT    = 0x0010,\n    KEY_EVENT       = 0x0020,\n    TIMER_EVENT     = 0x0040,\n    WINDOW_EVENT    = 0x0080,\n    MOUSE_EVENT     = 0x0100,\n    CLICK_EVENT     = 0x0200,\n    TABLE_EVENT     = 0x0400,\n    SERVER_EVENT    = 0x0800,\n    CHANGE_EVENT    = 0x1000,\n    HYPERLINK_EVENT = 0x2000,\n    SCROLL_EVENT    = 0x4000,\n    ANY_EVENT       = ACTION_EVENT | KEY_EVENT | TIMER_EVENT | WINDOW_EVENT\n                    | MOUSE_EVENT | CLICK_EVENT | TABLE_EVENT | SERVER_EVENT\n                    | CHANGE_EVENT | HYPERLINK_EVENT | SCROLL_EVENT\n};\n// Note: If you add any new classes of events, you must also add logic to the\n// GEvent::classToString function in gevent.cpp.\n\n\n/**\n * Defines the event subtypes for all events.\n * An event type is a subcategory within an event class.\n */\nenum EventType {\n    NULL_TYPE            = 0,\n\n    WINDOW_CLOSED        = WINDOW_EVENT + 1,\n    WINDOW_RESIZED       = WINDOW_EVENT + 2,\n    CONSOLE_CLOSED       = WINDOW_EVENT + 3,\n    WINDOW_CLOSING       = WINDOW_EVENT + 4,\n    WINDOW_MINIMIZED     = WINDOW_EVENT + 5,\n    WINDOW_RESTORED      = WINDOW_EVENT + 6,\n    WINDOW_MAXIMIZED     = WINDOW_EVENT + 7,\n\n    ACTION_PERFORMED     = ACTION_EVENT + 1,\n    ACTION_MENU          = ACTION_EVENT + 2,\n\n    MOUSE_CLICKED        = MOUSE_EVENT + 1,\n    MOUSE_PRESSED        = MOUSE_EVENT + 2,\n    MOUSE_RELEASED       = MOUSE_EVENT + 3,\n    MOUSE_MOVED          = MOUSE_EVENT + 4,\n    MOUSE_DRAGGED        = MOUSE_EVENT + 5,\n    MOUSE_ENTERED        = MOUSE_EVENT + 6,\n    MOUSE_EXITED         = MOUSE_EVENT + 7,\n    MOUSE_WHEEL_DOWN     = MOUSE_EVENT + 8,\n    MOUSE_WHEEL_UP       = MOUSE_EVENT + 9,\n    MOUSE_DOUBLE_CLICKED = MOUSE_EVENT + 10,\n\n    KEY_PRESSED          = KEY_EVENT + 1,\n    KEY_RELEASED         = KEY_EVENT + 2,\n    KEY_TYPED            = KEY_EVENT + 3,\n\n    TIMER_TICKED         = TIMER_EVENT + 1,\n\n    TABLE_UPDATED        = TABLE_EVENT + 1,   // when a cell's value gets set\n    TABLE_SELECTED       = TABLE_EVENT + 2,   // cursor moves onto a cell\n    TABLE_EDIT_BEGIN     = TABLE_EVENT + 3,   // user presses F2 or double clicks to start editing a cell\n    TABLE_REPLACE_BEGIN  = TABLE_EVENT + 4,   // user starts typing on a cell; like TABLE_EDIT_BEGIN but wipes out previous value\n    TABLE_EDIT_CANCEL    = TABLE_EVENT + 5,   // user presses Esc or otherwise stops editing a cell\n    TABLE_CUT            = TABLE_EVENT + 6,   // user cuts cell value to clipboard\n    TABLE_COPY           = TABLE_EVENT + 7,   // user copies cell value to clipboard\n    TABLE_PASTE          = TABLE_EVENT + 8,   // user pastes cell value from clipboard\n\n    SERVER_REQUEST       = SERVER_EVENT + 1,\n\n    STATE_CHANGED        = CHANGE_EVENT + 1,\n\n    HYPERLINK_CLICKED    = HYPERLINK_EVENT + 1,\n\n    SCROLL_SCROLLED      = SCROLL_EVENT + 1\n};\n// Note: If you add any new classes of events, you must also add logic to the\n// GEvent::typeToString function in gevent.cpp.\n\n/**\n * A set of constants used to check whether various event modifiers are in effect.\n * These constants can be combined in a single modifier int using bitwise operators.\n */\nenum Modifier {\n    SHIFT_DOWN     = 1 << 0,\n    CTRL_DOWN      = 1 << 1,\n    META_DOWN      = 1 << 2,\n    ALT_DOWN       = 1 << 3,\n    ALT_GRAPH_DOWN = 1 << 4,\n    BUTTON1_DOWN   = 1 << 5,\n    BUTTON2_DOWN   = 1 << 6,\n    BUTTON3_DOWN   = 1 << 7\n};\n\n/**\n * A GEvent represents a user action that has occurred on a graphical interactor.\n *\n * Older versions of this library used an event-polling model where the client\n * was encouraged to write a while (true) loop and call waitForEvent(...) to\n * get each event and process it.\n * The current design instead prefers that you attach event listener functions\n * to be called when events occur.\n * These listener functions can accept an optional GEvent as a parameter.\n * The GEvent object will contain information about the event that occurred.\n *\n * Older versions of this library had an inheritance hierarchy for various\n * event types, such as GMouseEvent, GKeyEvent, etc.\n * The current design has a single type GEvent that is a union of all data\n * needed by any kind of event.\n * The previous subclass names such as GMouseEvent are retained for backward\n * compatibility, but they are now just aliases for the type GEvent.\n */\nclass GEvent {\npublic:\n    /**\n     * An empty event handler that can be passed that does nothing.\n     */\n    static GEventListener EMPTY_EVENT_LISTENER;\n\n    /**\n     * An event listener that just prints the event that occurred.\n     * This listener is useful for debugging.\n     */\n    static GEventListener LOG_EVENT;\n\n    /*\n     * Type: KeyCode\n     * -------------\n     * This type defines the names of the key codes returned in a key event.\n     */\n    enum KeyCode {\n        BACKSPACE_KEY = 8,\n        TAB_KEY = 9,\n        ENTER_KEY = 10,\n        CLEAR_KEY = 12,\n        RETURN_KEY = 13,\n        SHIFT_KEY = Qt::Key_Shift,\n        CTRL_KEY = Qt::Key_Control,\n        ALT_KEY = Qt::Key_Alt,\n        PAUSE_KEY = 19,\n        CAPS_LOCK_KEY = 20,\n        ESCAPE_KEY = 27,\n        PAGE_UP_KEY = Qt::Key_PageUp,\n        PAGE_DOWN_KEY = Qt::Key_PageDown,\n        END_KEY = Qt::Key_End,\n        HOME_KEY = Qt::Key_Home,\n        LEFT_ARROW_KEY = Qt::Key_Left,\n        UP_ARROW_KEY = Qt::Key_Up,\n        RIGHT_ARROW_KEY = Qt::Key_Right,\n        DOWN_ARROW_KEY = Qt::Key_Down,\n        F1_KEY = Qt::Key_F1,\n        F2_KEY = Qt::Key_F2,\n        F3_KEY = Qt::Key_F3,\n        F4_KEY = Qt::Key_F4,\n        F5_KEY = Qt::Key_F5,\n        F6_KEY = Qt::Key_F6,\n        F7_KEY = Qt::Key_F7,\n        F8_KEY = Qt::Key_F8,\n        F9_KEY = Qt::Key_F9,\n        F10_KEY = Qt::Key_F10,\n        F11_KEY = Qt::Key_F11,\n        F12_KEY = Qt::Key_F12,\n        DELETE_KEY = 127,\n        NUM_LOCK_KEY = Qt::Key_NumLock,\n        SCROLL_LOCK_KEY = Qt::Key_ScrollLock,\n        PRINT_SCREEN_KEY = Qt::Key_Print,\n        INSERT_KEY = Qt::Key_Insert,\n        HELP_KEY = Qt::Key_Help,\n        META_KEY = Qt::Key_Meta,\n        WINDOWS_KEY = Qt::Key_Super_L,\n        MENU_KEY = Qt::Key_Menu\n    };\n\n    /**\n     * Creates a new event of the given type.\n     */\n    GEvent(EventClass eventClass = NULL_EVENT,\n            EventType eventType = NULL_TYPE,\n            const std::string& eventName = \"\",\n            GObservable* source = nullptr);\n\n    /**\n     * Frees memory allocated internally by the event.\n     */\n    virtual ~GEvent();\n\n    /**\n     * Converts an event class such as ACTION_PERFORMED\n     * to a string such as \"ACTION_PERFORMED\".\n     * @private\n     */\n    static std::string classToString(EventClass eventClass);\n\n    /**\n     * Returns the action command associated with the event.\n     * For some interactors such as buttons, this will be the text of the\n     * interactor.\n     */\n    virtual std::string getActionCommand() const;\n\n    /**\n     * Returns which mouse button was clicked, if this is a mouse event.\n     * If this is not a mouse event, returns 0.\n     */\n    virtual int getButton() const;\n\n    /**\n     * Returns this event's class (major type such as MOUSE_EVENT).\n     * Equivalent to getEventClass.\n     */\n    virtual EventClass getClass() const;\n\n    /**\n     * Returns the column that was interacted with, if this is a table event.\n     * If this is not a table event, returns 0.\n     */\n    virtual int getColumn() const;\n\n    /**\n     * Returns the current time as a number of milliseconds elapsed since the\n     * epoch of 1970/01/01 12:00am.\n     * Used to supply timestamps to individual events.\n     * @private\n     */\n    static long getCurrentTimeMS();\n\n    /**\n     * Returns this event's class (major type such as MOUSE_EVENT).\n     * Equivalent to getClass.\n     */\n    virtual EventClass getEventClass() const;\n\n    /**\n     * Returns the event's type (minor type such as MOUSE_PRESSED).\n     * Equivalent to getType.\n     */\n    virtual EventType getEventType() const;\n\n    /**\n     * Returns the source interactor that generated this event.\n     */\n    virtual GInteractor* getInteractor() const;\n\n    /**\n     * Returns the Qt event being wrapped by this event, if any.\n     * If this event does not wrap a Qt event, returns nullptr.\n     */\n    virtual QEvent* getInternalEvent() const;\n\n    /**\n     * Returns the key character that was typed, if this is a key event.\n     * If this is not a key event, returns '\\0'.\n     */\n    virtual char getKeyChar() const;\n\n    /**\n     * Returns the integer key code that was typed, if this is a key event.\n     * See the KeyCode enumeration for helpful constants for comparing key values.\n     * If this is not a key event, returns 0.\n     */\n    virtual int getKeyCode() const;\n\n    /**\n     * Returns an (x, y) point representing the mouse position within the interactor\n     * when this event occurred.\n     * If this is not a mouse event, returns (0, 0).\n     */\n    virtual GPoint getLocation() const;\n\n    /**\n     * Returns the modifiers active during this event.\n     * See the Modifiers enumeration for more information.\n     */\n    virtual int getModifiers() const;\n\n    /**\n     * Returns this event's name such as \"click\" or \"keydown\" or \"actionperformed\".\n     */\n    virtual std::string getName() const;\n\n    /**\n     * Returns this event's request URL, if this is a server URL event.\n     * If this is not a server URL event, returns an empty string.\n     */\n    virtual std::string getRequestURL() const;\n\n    /**\n     * Returns the row that was interacted with, if this is a table event.\n     * If this is not a table event, returns 0.\n     */\n    virtual int getRow() const;\n\n    /**\n     * Returns the source object that generated this event.\n     */\n    virtual GObservable* getSource() const;\n\n    /**\n     * Returns this event's timestamp, as a number of milliseconds elapsed\n     * since the epoch of 1970/01/01 12:00am.\n     */\n    virtual long getTime() const;\n\n    /**\n     * Returns the event's type (major type such as MOUSE_EVENT).\n     * Equivalent to getEventType.\n     */\n    virtual EventType getType() const;\n\n    /**\n     * Returns the x-coordinate of the mouse position within the interactor\n     * when this event occurred.\n     * If this is not a mouse event, returns 0.\n     */\n    virtual double getX() const;\n\n    /**\n     * Returns the y-coordinate of the mouse position within the interactor\n     * when this event occurred.\n     * If this is not a mouse event, returns 0.\n     */\n    virtual double getY() const;\n\n    /**\n     * Instructs the GUI system to ignore or cancel this event.\n     * For example, if you listen to window-closing events and ignore them,\n     * the window will stay open.\n     */\n    virtual void ignore();\n\n    /**\n     * Returns <code>true</code> if the Alt key was held down during this event.\n     * If this is not a mouse or key event, returns false.\n     */\n    virtual bool isAltKeyDown() const;\n\n    /**\n     * Returns <code>true</code> if the Ctrl key was held down during this event.\n     * If this is not a mouse or key event, returns false.\n     */\n    virtual bool isCtrlKeyDown() const;\n\n    /**\n     * Returns <code>true</code> if the Ctrl key, or the Command key (Mac),\n     * was held down during this event.\n     * If this is not a mouse or key event, returns false.\n     */\n    virtual bool isCtrlOrCommandKeyDown() const;\n\n    /**\n     * Returns true if the user pressed the mouse button multiple times.\n     * If this is not a mouse event, returns false.\n     */\n    virtual bool isDoubleClick() const;\n\n    /**\n     * Returns true if the user pressed the left mouse button.\n     * If this is not a mouse event, returns false.\n     */\n    virtual bool isLeftClick() const;\n\n    /**\n     * Returns true if the user pressed the middle mouse button.\n     * (Note that not every mouse has a simple delineation of \"left, right,\n     * and middle\" buttons; this was implemented on a standard 3-button mouse\n     * with scroll wheel.)\n     * If this is not a mouse event, returns false.\n     */\n    virtual bool isMiddleClick() const;\n\n    /**\n     * Returns true if the user pressed the right mouse button.\n     * If this is not a mouse event, returns false.\n     */\n    virtual bool isRightClick() const;\n\n    /**\n     * Returns <code>true</code> if the Meta/Command key was held down during this event.\n     * If this is not a mouse or key event, returns false.\n     */\n    virtual bool isMetaKeyDown() const;\n\n    /**\n     * Returns <code>true</code> if the Shift key was held down during this event.\n     * If this is not a mouse or key event, returns false.\n     */\n    virtual bool isShiftKeyDown() const;\n\n    /**\n     * Converts a key code such as 67 into a string such as \"A\".\n     * Works for special keys such as \"Enter\" and \"Tab\".\n     */\n    static std::string keyCodeToString(int keyCode);\n\n    /**\n     * @private\n     */\n    virtual void setActionCommand(const std::string& actionCommand);\n\n    /**\n     * @private\n     */\n    virtual void setButton(int button);\n\n    /**\n     * @private\n     */\n    virtual void setInternalEvent(QEvent* event);\n\n    /**\n     * @private\n     */\n    virtual void setKeyChar(char keyChar);\n\n    /**\n     * @private\n     */\n    virtual void setKeyChar(const std::string& keyCharString);\n\n    /**\n     * @private\n     */\n    virtual void setKeyCode(int keyCode);\n\n    /**\n     * @private\n     */\n    virtual void setModifiers(Qt::KeyboardModifiers modifiers);\n\n    /**\n     * @private\n     */\n    virtual void setRequestURL(const std::string& requestUrl);\n\n    /**\n     * @private\n     */\n    virtual void setRowAndColumn(int row, int col);\n\n    /**\n     * @private\n     */\n    virtual void setSource(GObservable* source);\n\n    /**\n     * @private\n     */\n    virtual void setX(double x);\n\n    /**\n     * @private\n     */\n    virtual void setY(double y);\n\n    /**\n     * Returns a text representation of the event for debugging.\n     */\n    virtual std::string toString() const;\n\n    /**\n     * Converts an event type such as MOUSE_EVENT to a string such as\n     * \"MOUSE_EVENT\".\n     */\n    static std::string typeToString(EventType eventType);\n\nprivate:\n    /*\n     * Represents the two types of event listeners.\n     */\n    enum EventListenerType {\n        HANDLER_EVENT,\n        HANDLER_VOID\n    };\n\n    /*\n     * A wrapper that can hold either of the two types of event listeners.\n     */\n    struct EventListenerWrapper {\n        GEventListener handler;\n        GEventListenerVoid handlerVoid;\n        EventListenerType type;\n\n        void fireEvent(const GEvent& event) {\n            if (type == HANDLER_EVENT) {\n                handler(event);\n            } else {\n                handlerVoid();\n            }\n        }\n    };\n\n    // member variables\n    std::string _actionCommand;\n    int _button;\n    EventClass _class;\n    char _keyChar;\n    int _keyCode;\n    int _modifiers;\n    std::string _name;\n    std::string _requestUrl;\n    GObservable* _source;\n    long _time;\n    EventType _type;\n    double _x;\n    double _y;\n    int _row;\n    int _col;\n    QEvent* _internalQtEvent;\n\n    friend class GInteractor;\n    friend class GObservable;\n    friend class _Internal_QWidget;\n};\n\n/**\n * Writes the given event to the given output stream.\n */\nstd::ostream& operator <<(std::ostream& out, const GEvent& event);\n\n// alias GEvent to all event types\ntypedef GEvent GActionEvent;\ntypedef GEvent GChangeEvent;\ntypedef GEvent GHyperlinkEvent;\ntypedef GEvent GKeyEvent;\ntypedef GEvent GMouseEvent;\ntypedef GEvent GScrollEvent;\ntypedef GEvent GServerEvent;\ntypedef GEvent GTableEvent;\ntypedef GEvent GTimerEvent;\ntypedef GEvent GWindowEvent;\n\n// global functions for backward compatibility\n// see geventqueue.cpp for implementation\n\n/**\n * Checks to see if there are any events of the desired type waiting on the\n * event queue.  If so, this function returns the event in exactly the same\n * fashion as <code>waitForEvent</code>; if not, <code>getNextEvent</code>\n * returns an invalid event.  The <code>mask</code> parameter is optional.\n * If it is missing, <code>getNextEvent</code> accepts any event.\n *\n * @deprecated\n * This function is deprecated and discouraged from use.\n * Instead of calling waitForClick in an event loop, you should attach an\n * event-listening function to the widget of choice using that object's methods\n * such as setActionListener or setMouseListener.\n */\nGEvent getNextEvent(int mask = ANY_EVENT) /*Q_DECL_DEPRECATED*/;\n\n/**\n * Waits for a mouse click to occur anywhere in any window,\n * returning the event that occurred.\n *\n * @deprecated\n * This function is deprecated and discouraged from use.\n * Instead of calling waitForClick in an event loop, you should attach an\n * event-listening function to the widget of choice using that object's methods\n * such as setActionListener or setMouseListener.\n */\nGMouseEvent waitForClick() /*Q_DECL_DEPRECATED*/;\n\n/**\n * Dismisses the process until an event occurs whose type is covered by\n * the event mask.  The mask parameter is a combination of the events of\n * interest.  For example, to wait for a mouse event or an action event,\n * clients can use the following call:\n *\n *<pre>\n *    e = waitForEvent(MOUSE_EVENT + ACTION_EVENT);\n *</pre>\n *\n * The <code>mask</code> parameter is optional.  If it is missing,\n * <code>waitForEvent</code> accepts any event.\n *\n * <p>As a more sophisticated example, the following code is the canonical\n * event loop for an animated application that needs to respond to mouse,\n * key, and timer events:\n *\n *<pre>\n *    GTimer timer(ANIMATION_DELAY_IN_MILLISECONDS);\n *    timer.start();\n *    while (true) {\n *       GEvent e = waitForEvent(TIMER_EVENT + MOUSE_EVENT + KEY_EVENT);\n *       switch (e.getEventClass()) {\n *        case TIMER_EVENT:\n *          takeAnimationStep();\n *          break;\n *        case MOUSE_EVENT:\n *          handleMouseEvent(GMouseEvent(e));\n *          break;\n *        case KEY_EVENT:\n *          handleKeyEvent(GKeyEvent(e));\n *          break;\n *       }\n *    }\n *</pre>\n *\n * @deprecated\n * This function is deprecated and discouraged from use.\n * Instead of calling waitForClick in an event loop, you should attach an\n * event-listening function to the widget of choice using that object's methods\n * such as setActionListener or setMouseListener.\n */\nGEvent waitForEvent(int mask = ANY_EVENT) /*Q_DECL_DEPRECATED*/;\n\n#endif // _gevent_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/geventqueue.h",
    "content": "/*\n * File: geventqueue.h\n * -------------------\n *\n * @author Marty Stepp\n * @version 2018/09/07\n * - added doc comments for new documentation generation\n * @version 2018/08/23\n * - renamed to geventqueue.h\n * @version 2018/07/03\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n// signal that GUI system is in use (so it will be initialized)\n#define SPL_QT_GUI_IN_USE 1\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _geventqueue_h\n#define _geventqueue_h\n\n#include <string>\n#include <QObject>\n#include <QReadWriteLock>\n\n#define INTERNAL_INCLUDE 1\n#include \"gevent.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gtypes.h\"\n#define INTERNAL_INCLUDE 1\n#include \"queue.h\"\n#undef INTERNAL_INCLUDE\n\nclass GObservable;\nclass GThread;\nclass QtGui;\n\n/**\n * The GEventQueue is a first-in, first-out (FIFO) queue of events that occur\n * on graphical interactors.\n *\n * This queue is used by our interactor classes (GButton, GCheckBox, etc.)\n * internally.  When events occur on these widgets, we place them into a GEventQueue\n * so that they can be sent out to the various event listeners in client code.\n *\n * Most clients do not need to use GEventQueue directly.\n *\n * @private\n */\nclass GEventQueue : public QObject {\n    Q_OBJECT\n\npublic:\n    /**\n     * Returns the single instance of the event queue.\n     * If no instance yet exists, one is created.\n     * @return\n     */\n    static GEventQueue* instance();\n\n    /**\n     * Returns the current event mask used by the semi-deprecated global\n     * event-handling functions like waitForEvent.\n     */\n    int getEventMask() const;\n\n    /**\n     * Returns the next event that occurs that matches the given mask\n     * of event types.\n     */\n    GEvent getNextEvent(int mask = ANY_EVENT);\n\n    /**\n     * Returns true if the given event would be accepted by the current\n     * event mask, as per setEventMask.\n     */\n    bool isAcceptingEvent(const GEvent& event) const;\n    bool isAcceptingEvent(int type) const;\n\n    /**\n     * Sets a bit-flagged mask of event types to listen for\n     * in the semi-deprecated global event-handling functions like waitForEvent.\n     * If setEventMask has not been called, all events are accepted.\n     */\n    void setEventMask(int mask);\n\n    /**\n     * Pauses the current thread until an event occurs that matches the given\n     * bit-flagged mask.  The event is then returned.\n     * The current event mask is also set to the given mask, as if\n     * setEventMask had been called.\n     */\n    GEvent waitForEvent(int mask = ANY_EVENT);\n\nsignals:\n    /**\n     * Fires when an event is present in the queue and ready to be processed.\n     */\n    void eventReady();\n\nprivate:\n    Q_DISABLE_COPY(GEventQueue)\n\n    /*\n     * Prevents construction.  Use instance() instead.\n     */\n    GEventQueue();\n\n    GThunk dequeue();\n    void enqueueEvent(const GEvent& event);\n    bool isEmpty() const;\n    GThunk peek();\n    void runOnQtGuiThreadAsync(GThunk thunk);\n    void runOnQtGuiThreadSync(GThunk thunk);\n\n    static GEventQueue* _instance;\n    Queue<GThunk> _functionQueue;\n    Queue<GEvent> _eventQueue;\n    QReadWriteLock _eventQueueMutex;\n    QReadWriteLock _functionQueueMutex;\n    int _eventMask;\n\n    friend class GObservable;\n    friend class GThread;\n    friend class QtGui;\n};\n\n#endif // _geventqueue_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/gevents.h",
    "content": "/*\n * File: gevents.h\n * ---------------\n *\n * This file is simply an alias for gevent.h, provided for consistency\n * because the old Java-based graphics library called its file \"gevents.h\".\n *\n * @author Marty Stepp\n * @version 2018/08/23\n * - renamed to gevents.h to replace Java version\n * @version 2018/07/06\n * - initial version\n */\n\n#include \"gevent.h\"\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/gfilechooser.h",
    "content": "/*\n * File: gfilechooser.h\n * --------------------\n * This file defines the <code>GFileChooser</code> class which supports\n * popping up graphical dialog boxes to select file names.\n * \n * @author Marty Stepp\n * @version 2018/09/07\n * - added doc comments for new documentation generation\n * - added overloads that accept GWindow* parent\n * @version 2018/08/23\n * - renamed to gfilechooser.h to replace Java version\n * @version 2018/06/28\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n// signal that GUI system is in use (so it will be initialized)\n#define SPL_QT_GUI_IN_USE 1\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _gfilechooser_h\n#define _gfilechooser_h\n\n#include <string>\n#include <QWidget>\n\n#define INTERNAL_INCLUDE 1\n#include \"gwindow.h\"\n#undef INTERNAL_INCLUDE\n\n/**\n * The GFileChooser class contains static methods for popping up file-choosing\n * dialog boxes that allow the user to select a file.\n * Each method blocks until the file is chosen and the dialog is closed,\n * returning the file the user chose (or an empty string if the user canceled).\n */\nclass GFileChooser {\npublic:\n    /**\n     * Pops up a file \"Open\" chooser dialog with the given top title text,\n     * current directory, and file filter.  All arguments are optional.\n     * @param fileFilter a file filter string such as \"*.gif,*.jpg,*.png\".\n     */\n    static std::string showOpenDialog(const std::string& title = \"Open file\", const std::string& currentDir = \"\", const std::string& fileFilter = \"\");\n\n    /**\n     * Pops up a file \"Open\" chooser dialog with the given top title text,\n     * current directory, and file filter.  All arguments are optional.\n     * @param fileFilter a file filter string such as \"*.gif,*.jpg,*.png\".\n     */\n    static std::string showOpenDialog(GWindow* parent, const std::string& title = \"Open file\", const std::string& currentDir = \"\", const std::string& fileFilter = \"\");\n\n    /**\n     * Pops up a file \"Open\" chooser dialog with the given top title text,\n     * current directory, and file filter.  All arguments are optional.\n     * @param fileFilter a file filter string such as \"*.gif,*.jpg,*.png\".\n     */\n    static std::string showOpenDialog(QWidget* parent, const std::string& title = \"Open file\", const std::string& currentDir = \"\", const std::string& fileFilter = \"\");\n\n    /**\n     * Pops up a file \"Save\" chooser dialog with the given top title text,\n     * current directory, and file filter.  All arguments are optional.\n     *\n     * The main difference between an \"Open\" dialog and a \"Save\" dialog,\n     * aside from the different title bar text, is that a \"Save\" dialog allows\n     * the user to type a name of a file that does not yet exist.\n     *\n     * If the user chooses the name of a file that already exists, they will\n     * be prompted to overwrite this file.  If they choose No, the dialog will\n     * remain up; if they choose Yes, it will close.\n     * @param fileFilter a file filter string such as \"*.gif,*.jpg,*.png\".\n     */\n    static std::string showSaveDialog(const std::string& title = \"Save file\", const std::string& currentDir = \"\", const std::string& fileFilter = \"\");\n\n    /**\n     * Pops up a file \"Save\" chooser dialog with the given top title text,\n     * current directory, and file filter.  All arguments are optional.\n     *\n     * The main difference between an \"Open\" dialog and a \"Save\" dialog,\n     * aside from the different title bar text, is that a \"Save\" dialog allows\n     * the user to type a name of a file that does not yet exist.\n     *\n     * If the user chooses the name of a file that already exists, they will\n     * be prompted to overwrite this file.  If they choose No, the dialog will\n     * remain up; if they choose Yes, it will close.\n     * @param fileFilter a file filter string such as \"*.gif,*.jpg,*.png\".\n     */\n    static std::string showSaveDialog(GWindow* parent, const std::string& title = \"Save file\", const std::string& currentDir = \"\", const std::string& fileFilter = \"\");\n\n    /**\n     * Pops up a file \"Save\" chooser dialog with the given top title text,\n     * current directory, and file filter.  All arguments are optional.\n     *\n     * The main difference between an \"Open\" dialog and a \"Save\" dialog,\n     * aside from the different title bar text, is that a \"Save\" dialog allows\n     * the user to type a name of a file that does not yet exist.\n     *\n     * If the user chooses the name of a file that already exists, they will\n     * be prompted to overwrite this file.  If they choose No, the dialog will\n     * remain up; if they choose Yes, it will close.\n     * @param fileFilter a file filter string such as \"*.gif,*.jpg,*.png\".\n     */\n    static std::string showSaveDialog(QWidget* parent, const std::string& title = \"Save file\", const std::string& currentDir = \"\", const std::string& fileFilter = \"\");\n\nprivate:\n    GFileChooser();   // prevent construction\n\n    /*\n     * Constants for dialog types, similar to those in Java's JFileChooser\n     */\n    enum DialogType {\n        OPEN_DIALOG = 0,\n        SAVE_DIALOG = 1\n    };\n\n    /*\n     * Converts between our comma-separated file filter format to the one\n     * used by Qt that uses ;; as its separator.\n     */\n    static std::string normalizeFileFilter(const std::string& fileFilter);\n};\n\n#endif // _gfilechooser_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/gfont.h",
    "content": "/*\n * File: gfont.h\n * -------------\n *\n * @author Marty Stepp\n * @version 2019/04/30\n * - added changeFontSize for a GText*\n * @version 2018/09/07\n * - added doc comments for new documentation generation\n * @version 2018/08/23\n * - renamed to gfont.h to replace Java version\n * @version 2018/07/05\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n// signal that GUI system is in use (so it will be initialized)\n#define SPL_QT_GUI_IN_USE 1\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _gfont_h\n#define _gfont_h\n\n#include <string>\n#include <QFont>\n\n#define INTERNAL_INCLUDE 1\n#include \"ginteractor.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gobjects.h\"\n#undef INTERNAL_INCLUDE\n\n/**\n * This class contains static methods for dealing with fonts in our GUI system.\n * A font string has the following format:\n *\n * <pre>\n * \"family-style-size\"\n * </pre>\n *\n * where both <code>style</code> and <code>size</code> are optional.\n * If any of these elements are missing or specified as an asterisk,\n * the existing value is retained.\n */\nclass GFont {\npublic:\n    /**\n     * Makes the given interactor's font bold.\n     * The font name and size are unchanged.\n     * @throws ErrorException if the interactor is null\n     */\n    static void boldFont(GInteractor* interactor);\n\n    /**\n     * Modifies the font of the given interactor, changing its size by the given\n     * number of points.  The change in size can be positive or negative.\n     * @throws ErrorException if the interactor is null\n     */\n    static void changeFontSize(GInteractor* interactor, int dsize);\n\n    /**\n     * Modifies the font of the given label, changing its size by the given\n     * number of points.  The change in size can be positive or negative.\n     * @throws ErrorException if the interactor is null\n     */\n    static void changeFontSize(GText* label, int dsize);\n\n    /**\n     * Modifies the size of the given Qt font object, changing its size by the given\n     * number of points, and returning the new modified font.\n     * The change in size can be positive or negative.\n     */\n    static QFont changeFontSize(const QFont& font, int dsize);\n\n    /**\n     * Modifies the given font object, changing its weight and/or size to the\n     * given values, and returning the new modified font.\n     */\n    static QFont deriveQFont(const QFont& font, QFont::Weight weight = QFont::Normal, int size = -1);\n\n    /**\n     * Modifies the given font object, changing its font family, weight, and/or\n     * size to the given values, and returning the new modified font.\n     */\n    static QFont deriveQFont(const QFont& font, const std::string& fontFamily, QFont::Weight weight = QFont::Normal, int size = -1);\n\n    /**\n     * Modifies the given font object, changing its weight and/or size to the\n     * given values, and returning the new modified font.\n     * The font you pass should be a font string such as \"Helvetica-12-Bold\".\n     */\n    static QFont deriveQFont(const std::string& font, QFont::Weight weight = QFont::Normal, int size = -1);\n\n    /**\n     * Modifies the given font object, changing its font family, weight, and/or\n     * size to the given values, and returning the new modified font.\n     * The font you pass should be a font string such as \"Helvetica-12-Bold\".\n     */\n    static QFont deriveQFont(const std::string& font, const std::string& fontFamily, QFont::Weight weight = QFont::Normal, int size = -1);\n\n    /**\n     * Makes the given interactor's font italic.\n     * The font name and size are unchanged.\n     * @throws ErrorException if the interactor is null\n     */\n    static void italicFont(GInteractor* interactor);\n\n    /**\n     * Converts the given Qt font object into a font string such as\n     * \"Helvetica-12-Bold\".\n     */\n    static std::string toFontString(const QFont& font);\n\n    /**\n     * Converts a font string such as \"Helvetica-12-Bold\" into a Qt font object.\n     */\n    static QFont toQFont(const std::string& fontString);\n\n    /**\n     * Converts a font string such as \"Helvetica-*-12\" into a Qt font object,\n     * using the given 'basis' object for any defaults that are not present in\n     * the font string.\n     */\n    static QFont toQFont(const QFont& basisFont, const std::string& fontString);\n\nprivate:\n    GFont();   // prevent construction\n    static QFont::StyleHint getStyleHint(const std::string& fontFamily);\n};\n\n#endif // _gfont_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/gfontchooser.h",
    "content": "/*\n * File: gfontchooser.h\n * ----------------------\n * This file defines the <code>GFontChooser</code> class which supports\n * popping up graphical dialog boxes to select fonts.\n * \n * @author Marty Stepp\n * @version 2018/09/07\n * - added doc comments for new documentation generation\n * - added overloads that accept GWindow* parent\n * @version 2018/08/23\n * - renamed to gfontchooser.h to replace Java version\n * @version 2018/07/29\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n// signal that GUI system is in use (so it will be initialized)\n#define SPL_QT_GUI_IN_USE 1\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _gfontchooser_h\n#define _gfontchooser_h\n\n#include <string>\n#include <QWidget>\n\n#define INTERNAL_INCLUDE 1\n#include \"gwindow.h\"\n#undef INTERNAL_INCLUDE\n\n/**\n * The GFontChooser class contains static methods for popping up font-choosing\n * dialog boxes that allow the user to select a font family, size, and style.\n * Each method blocks until the font is chosen and the dialog is closed,\n * returning the font the user chose (or an empty string if the user canceled).\n *\n * Fonts are represented as font strings such as \"Helvetica-12-Bold\" or\n * \"Times New Roman-14\".\n *\n * See the GFont class for more information about fonts and font strings.\n */\nclass GFontChooser {\npublic:\n    /**\n     * Pops up a font chooser dialog with the given top title text\n     * and the given initially selected font.  All arguments are optional.\n     * @param initialFont a font string such as \"Helvetica-12-Bold\".\n     */\n    static std::string showDialog(const std::string& title = \"\", const std::string& initialFont = \"\");\n\n    /**\n     * Pops up a font chooser dialog with the given top title text\n     * and the given initially selected font.  All arguments are optional.\n     * @param initialFont a font string such as \"Helvetica-12-Bold\".\n     */\n    static std::string showDialog(GWindow* parent, const std::string& title = \"\", const std::string& initialFont = \"\");\n\n    /**\n     * Pops up a font chooser dialog with the given top title text\n     * and the given initially selected font.  All arguments are optional.\n     * @param initialFont a font string such as \"Helvetica-12-Bold\".\n     */\n    static std::string showDialog(QWidget* parent, const std::string& title = \"\", const std::string& initialFont = \"\");\n\nprivate:\n    GFontChooser();   // prevent construction\n};\n\n#endif // _gfontchooser_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/gformattedpane.h",
    "content": "/*\n * File: gformattedpane.h\n * ----------------------\n *\n * This file is simply an alias for gbrowserpane.h, provided for consistency\n * because the old Java-based graphics library called its file \"gformattedpane.h\".\n * Future clients are advised to use the new name, GBrowserPane,\n * and include gbrowserpane.h rather than this file.\n *\n * @author Marty Stepp\n * @version 2018/08/27\n * - initial version\n */\n\n#ifndef _gformattedpane_h\n#define _gformattedpane_h\n\n#include \"gbrowserpane.h\"\n\n// alias as GFormattedPane for backward compatibility\ntypedef GBrowserPane GFormattedPane;\n\n#endif // _gformattedpane_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/ginputpanel.h",
    "content": "/*\n * File: ginputpanel.h\n * -------------------\n * This file contains declarations of functions that can pop up an\n * \"input panel\" of easy clickable buttons on the screen that map to\n * various console (cin) inputs to be inserted.\n * It is meant to be used by autograders to provide a simple way for\n * the grader to put input into the student's running program without\n * having to actually type said input. #lazy!\n * \n * @author Marty Stepp\n * @version 2018/08/28\n * - refactored from free functions to GInputPanel class\n * @version 2014/10/14\n * @since 2014/10/14\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n// signal that GUI system is in use (so it will be initialized)\n#define SPL_QT_GUI_IN_USE 1\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _ginputpanel_h\n#define _ginputpanel_h\n\n#include <string>\n#include <QObject>\n\n/**\n * TODO: document\n * @private\n */\nclass GInputPanel {\npublic:\n    static GInputPanel* instance();\n\n    /*\n     * Adds an input window button for auto-inserting autograder inputs.\n     */\n    void addButton(const std::string& text, const std::string& input);\n\n    /*\n     * Adds an input category containing related autograder input buttons.\n     */\n    void addCategory(const std::string& name);\n\n    /*\n     * Returns true if the input panel has been loaded already.\n     */\n    bool isLoaded() const;\n\n    /*\n     * Loads the input panel's state from a file of XML data in the following format:\n     * <inputpanel assignment=\"CS 106B Game of Life\">\n     *   <category name=\"General\">\n     *     <button text=\"hi\" input=\"hello there\\n\" />\n     *     <button text=\"Yes\" />\n     *   </category>\n     *   <category name=\"...\">\n     *     <button text=\"...\" />\n     *   </category>\n     *   ...\n     * </inputpanel>\n     * The input panel will also immediately be shown on the screen.\n     */\n    void load(const std::string& xmlFilename);\n\n    /*\n     * Removes the given window input button if it is present.\n     */\n    void removeButton(const std::string& text);\n\n    /*\n     * Removes the given window input category if it is present.\n     */\n    void removeCategory(const std::string& name);\n\n    /*\n     * Causes the input panel to become shown or hidden from the screen.\n     */\n    void setVisible(bool value = true);\n\nprivate:\n    Q_DISABLE_COPY(GInputPanel)\n\n    GInputPanel();   // prevent construction\n\n    static GInputPanel* _instance;\n    bool _loaded;\n};\n\n#endif // _ginputpanel_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/ginteractor.h",
    "content": "/*\n * File: ginteractor.h\n * -------------------\n *\n * @author Marty Stepp\n * @version 2019/04/23\n * - added set/removeActionListener\n * - added set/removeClickListener\n * - added set/removeDoubleClickListener\n * - added set/removeKeyListener\n * - added set/removeMouseListener\n * @version 2019/04/22\n * - added setIcon with QIcon and QPixmap\n * @version 2018/09/20\n * - added read/write lock to avoid race conditions\n * @version 2018/09/05\n * - added getContainer and is/setVisible logic\n * @version 2018/08/23\n * - renamed to ginteractor.h to replace Java version\n * @version 2018/06/25\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n// signal that GUI system is in use (so it will be initialized)\n#define SPL_QT_GUI_IN_USE 1\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _ginteractor_h\n#define _ginteractor_h\n\n#include <functional>\n#include <string>\n#include <QIcon>\n#include <QObject>\n#include <QPixmap>\n#include <QReadWriteLock>\n#include <QWidget>\n\n#define INTERNAL_INCLUDE 1\n#include \"map.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gevent.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gobservable.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gtypes.h\"\n#undef INTERNAL_INCLUDE\n\nclass GContainer;\nclass GDiffGui;\nclass GWindow;\nclass _Internal_QWidget;\n\n/**\n * This abstract class is the superclass for all graphical interactors.\n * In most applications, interactors will be added to a control strip along\n * one of the regions of a GWindow.\n */\nclass GInteractor : public GObservable {\npublic:\n    /**\n     * The places where an interactor can place its text relative to its icon.\n     */\n    enum TextPosition {\n        TEXT_BESIDE_ICON,\n        TEXT_UNDER_ICON,\n        TEXT_ONLY\n    };\n\n    /**\n     * Initializes a newly created interactor.\n     * If the Qt graphical subsystem has not yet been initialized, constructing\n     * an interactor will initialize it.\n     */\n    GInteractor();\n\n    /**\n     * Frees memory allocated internally by the interactor.\n     */\n    virtual ~GInteractor();\n\n    /**\n     * Adds an event listener to be notified when this interactor is clicked or\n     * generally interacted with.\n     *\n     * @deprecated does nothing; use setActionListener instead\n     */\n    virtual void addActionListener() Q_DECL_DEPRECATED;   // does nothing\n\n    /**\n     * Returns true if this interactor is currently accepting events.\n     * Initially true.\n     * An interactor must be visible and added to an onscreen window to receive events.\n     */\n    virtual bool eventsEnabled() const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns a string representing a hotkey for this interactor,\n     * or an empty string if no accelerator has been set.\n     * @return an accelerator such as \"Ctrl-S\"\n     */\n    virtual std::string getAccelerator() const;\n\n    /**\n     * Returns an action command for this interactor,\n     * which is a semi-unique string you can use to identify it when events occur.\n     * For example, for buttons, the default action command is the button's text.\n     */\n    virtual std::string getActionCommand() const;\n\n    /**\n     * Returns the background color of the interactor as a string.\n     * @return a string such as \"blue\" or \"#7700ff\"\n     */\n    virtual std::string getBackground() const;\n\n    /**\n     * Returns the background color of the interactor as an RGB integer.\n     * @return an integer such as 0x7700ff\n     */\n    virtual int getBackgroundInt() const;\n\n    /**\n     * Returns a rectangle representing the x/y position and size of this interactor.\n     */\n    virtual GRectangle getBounds() const;\n\n    /**\n     * Returns the foreground/text color of the interactor as a string.\n     * Equivalent to getForeground.\n     * @return a string such as \"blue\" or \"#7700ff\"\n     */\n    virtual std::string getColor() const;\n\n    /**\n     * Returns the foreground/text color of the interactor as an RGB integer.\n     * Equivalent to getForegroundInt.\n     * @return an integer such as 0x7700ff\n     */\n    virtual int getColorInt() const;\n\n    /**\n     * Returns a pointer to the onscreen container holding this interactor.\n     * When an interactor is created, its container is initially null.\n     * This will become non-null automatically if you add the interactor to\n     * a window or other layout container.\n     * Interactors must be added to a container or window to receive events\n     * or to become visible on the screen.\n     * @return the container, or nullptr if interactor has not yet been\n     *         added to any container\n     */\n    virtual GContainer* getContainer() const;\n\n    /**\n     * Returns the font of this interactor's text as a font string such as\n     * \"Helvetica-12-Bold\".\n     * @return a font string such as \"Helvetica-12-Bold\"\n     */\n    virtual std::string getFont() const;\n\n    /**\n     * Returns the foreground/text color of the interactor as a string.\n     * Equivalent to getColor.\n     * @return a string such as \"blue\" or \"#7700ff\"\n     */\n    virtual std::string getForeground() const;\n\n    /**\n     * Returns the foreground/text color of the interactor as an RGB integer.\n     * Equivalent to getColorInt.\n     * @return an integer such as 0x7700ff\n     */\n    virtual int getForegroundInt() const;\n\n    /**\n     * Returns the current onscreen height of this interactor in pixels.\n     */\n    virtual double getHeight() const;\n\n    /**\n     * Returns a globally unique identifier for this interactor,\n     * which is set when the interactor is constructed.\n     * These IDs can be useful for debugging to help identify interactors uniquely.\n     */\n    virtual int getID() const;\n\n    /**\n     * Returns the file name of the icon associated with this interactor,\n     * or an empty string if no icon has been set.\n     * Not all types of interactors support icons.\n     */\n    virtual std::string getIcon() const;\n\n    /**\n     * Returns a direct pointer to the internal Qt widget being wrapped by this\n     * interactor.  This must be overridden by all interactor subclasses.\n     * Students/clients generally should not need to call this.\n     * @private\n     */\n    virtual _Internal_QWidget* getInternalWidget() const = 0;\n\n    /**\n     * Returns an (x, y) point representing the onscreen location of the top-left\n     * corner of this interactor within its containing window.\n     */\n    virtual GPoint getLocation() const;\n\n    /**\n     * Returns the minimum height in pixels that this interactor will permit\n     * itself to be resized to.\n     */\n    virtual double getMinimumHeight() const;\n\n    /**\n     * Returns a GDimension structure representing the minimum size in pixels\n     * that this interactor will permit itself to be resized to.\n     */\n    virtual GDimension getMinimumSize() const;\n\n    /**\n     * Returns the minimum width in pixels that this interactor will permit\n     * itself to be resized to.\n     */\n    virtual double getMinimumWidth() const;\n\n    /**\n     * Returns a one-character 'mnemonic' shortcut that can be used to activate\n     * this interactor.  This method is a relic from a previous Java-based\n     * GUI system and should no longer be used.\n     * @deprecated\n     * @private\n     */\n    virtual char getMnemonic() const Q_DECL_DEPRECATED;\n\n    /**\n     * Returns a string representing a unique name for this interactor.\n     * The default name string uses the interactor's type and its ID to make\n     * a string like \"GButton_14\", but you can override this by calling setName.\n     * @return a string such as \"GButton_14\"\n     */\n    virtual std::string getName() const;\n\n    /**\n     * Returns the height in pixels that this interactor would prefer to be,\n     * which would exactly fit its contents with no stretching or scrollbars.\n     */\n    virtual double getPreferredHeight() const;\n\n    /**\n     * Returns a GDimension structure storing the width and height in pixels\n     * that this interactor would prefer to be,\n     * which would exactly fit its contents with no stretching or scrollbars.\n     */\n    virtual GDimension getPreferredSize() const;\n\n    /**\n     * Returns the height in pixels that this interactor would prefer to be,\n     * which would exactly fit its contents with no stretching or scrollbars.\n     */\n    virtual double getPreferredWidth() const;\n\n    /**\n     * Returns a GDimension structure storing the current onscreen width and height\n     * of this interactor in pixels.\n     */\n    virtual GDimension getSize() const;\n\n    /**\n     * Returns a string representing the class name of this interactor,\n     * such as \"GButton\" or \"GCheckBox\".\n     * All subclasses of GInteractor must implement this method.\n     * @return a string such as \"GCheckBox\"\n     */\n    virtual std::string getType() const = 0;\n\n    /**\n     * Returns a direct pointer to the internal Qt widget being wrapped by this\n     * interactor.  This must be overridden by all interactor subclasses.\n     * Students/clients generally should not need to call this.\n     * @private\n     */\n    virtual QWidget* getWidget() const = 0;\n\n    /**\n     * Returns the current onscreen width of this interactor in pixels.\n     */\n    virtual double getWidth() const;\n\n    /**\n     * Returns the x-coordinate of the top-left pixel of this interactor\n     * within its onscreen window.\n     */\n    virtual double getX() const;\n\n    /**\n     * Returns the y-coordinate of the top-left pixel of this interactor\n     * within its onscreen window.\n     */\n    virtual double getY() const;\n\n    /**\n     * Returns true if the given x/y pixel is within the bounds of this interactor.\n     */\n    virtual bool inBounds(double x, double y) const;\n\n    /**\n     * Returns true if the given x/y pixel is within the bounds of this interactor.\n     */\n    virtual bool inBounds(int x, int y) const;\n\n    /**\n     * Returns true if this interactor is currently enabled.\n     * Most interactors begin as enabled but can be disabled to stop them from\n     * being able to be clicked on or otherwise emit events.\n     */\n    virtual bool isEnabled() const;\n\n    /**\n     * Returns true if the interactor is visible on the screen.\n     * Interactors will not be visible until they are added to an onscreen\n     * window or container.\n     */\n    virtual bool isVisible() const;\n\n    /**\n     * Removes the action listener from this interactor so that it will no longer\n     * call it when events occur.\n     */\n    virtual void removeActionListener();\n\n    /**\n     * Removes the click listener from this interactor so that it will no longer\n     * call it when events occur.\n     */\n    virtual void removeClickListener();\n\n    /**\n     * Removes the double-click listener from this interactor so that it will no longer\n     * call it when events occur.\n     */\n    virtual void removeDoubleClickListener();\n\n    /**\n     * Removes the key listener from this interactor so that it will no longer\n     * call it when key events occur.\n     */\n    virtual void removeKeyListener();\n\n    /**\n     * Removes the mouse listener from this interactor so that it will no longer\n     * call it when events occur.\n     */\n    virtual void removeMouseListener();\n\n    /**\n     * Transfers keyboard focus to this interactor.\n     */\n    virtual void requestFocus();\n\n    /**\n     * Sets an accelerator hotkey for this interactor, such as \"Ctrl-S\".\n     * Not all interactor types support accelerators.\n     * @param accelerator a hotkey such as \"Ctrl-S\"\n     */\n    virtual void setAccelerator(const std::string& accelerator);\n\n    /**\n     * Sets the action command for this interactor.\n     * The action command is meant to be a semi-unique string you can use to\n     * identify the interactor when events occur.\n     * For example, for buttons, the default action command is the button's text,\n     * but you can change it to a different string if you prefer.\n     * The main usage of this feature is if you want to use the same function as\n     * an event listener for many interactors, you can use the action command\n     * to help distinguish which interactor generates each event.\n     */\n    virtual void setActionCommand(const std::string& actionCommand);\n\n    /**\n     * Sets an action listener on this interactor so that it will be called\n     * when it is interacted with in its primary way.\n     * For example, if this interactor is a button, this will fire when it is clicked.\n     * Any existing action listener will be replaced.\n     */\n    virtual void setActionListener(GEventListener func);\n\n    /**\n     * Sets an action listener on this interactor so that it will be called\n     * when it is interacted with in its primary way.\n     * For example, if this interactor is a button, this will fire when it is clicked.\n     * Any existing action listener will be replaced.\n     */\n    virtual void setActionListener(GEventListenerVoid func);\n\n    /**\n     * Sets the background color of the interactor to the color represented by\n     * the given RGB integer.\n     * @param rgb an RGB integer such as 0x7700ff\n     */\n    virtual void setBackground(int rgb);\n\n    /**\n     * Sets the background color of the interactor to the color represented by\n     * the given string.\n     * @param color a string such as \"blue\" or \"#7700ff\"\n     */\n    virtual void setBackground(const std::string& color);\n\n    /**\n     * Sets the size and location of the widget.\n     * In general you should avoid explicitly sizing and positioning widgets\n     * in this way; instead, use containers and regions to help you lay out\n     * widgets at the proper sizes.\n     */\n    virtual void setBounds(double x, double y, double width, double height);\n\n    /**\n     * Sets the size and location of the widget.\n     * In general you should avoid explicitly sizing and positioning widgets\n     * in this way; instead, use containers and regions to help you lay out\n     * widgets at the proper sizes.\n     */\n    virtual void setBounds(const GRectangle& size);\n\n    /**\n     * Sets a mouse listener on this interactor so that it will be called\n     * when the mouse is clicked on it.\n     * Any existing click listener will be replaced.\n     */\n    virtual void setClickListener(GEventListener func);\n\n    /**\n     * Sets a mouse listener on this interactor so that it will be called\n     * when the mouse is clicked on it.\n     * Any existing click listener will be replaced.\n     */\n    virtual void setClickListener(GEventListenerVoid func);\n\n    /**\n     * Sets the foreground/text color of the interactor to the color represented by\n     * the given RGB integer.\n     * Equivalent to setForeground.\n     * @param rgb an RGB integer such as 0x7700ff\n     */\n    virtual void setColor(int rgb);\n\n    /**\n     * Sets the foreground/text color of the interactor to the color represented by\n     * the given string.\n     * Equivalent to setForeground.\n     * @param color a string such as \"blue\" or \"#7700ff\"\n     */\n    virtual void setColor(const std::string& color);\n\n    /**\n     * Sets a mouse listener on this interactor so that it will be called\n     * when the mouse is double-clicked on it.\n     * Any existing double-click listener will be replaced.\n     */\n    virtual void setDoubleClickListener(GEventListener func);\n\n    /**\n     * Sets a mouse listener on this interactor so that it will be called\n     * when the mouse is double-clicked on it.\n     * Any existing double-click listener will be replaced.\n     */\n    virtual void setDoubleClickListener(GEventListenerVoid func);\n\n    /**\n     * Sets whether this interactor is currently enabled.\n     * Most interactors begin as enabled but can be disabled to stop them from\n     * being able to be clicked on or otherwise emit events.\n     */\n    virtual void setEnabled(bool value);\n\n    /**\n     * Sets the font used by this widget to the given Qt font.\n     * Clients should generally use the string version of this method.\n     */\n    virtual void setFont(const QFont& font);\n\n    /**\n     * Sets the font used by this widget to the font represented by the\n     * given font string, such as \"Helvetica-16-Bold\".\n     * @param font a font string such as \"Helvetica-16-Bold\"\n     */\n    virtual void setFont(const std::string& font);\n\n    /**\n     * Sets the foreground/text color of the interactor to the color represented by\n     * the given RGB integer.\n     * Equivalent to setColor.\n     * @param rgb an RGB integer such as 0x7700ff\n     */\n    virtual void setForeground(int rgb);\n\n    /**\n     * Sets the foreground/text color of the interactor to the color represented by\n     * the given string.\n     * Equivalent to setColor.\n     * @param color a string such as \"blue\" or \"#7700ff\"\n     */\n    virtual void setForeground(const std::string& color);\n\n    /**\n     * Sets the onscreen height of the interactor in pixels.\n     * @throw ErrorException if height is negative\n     */\n    virtual void setHeight(double height);\n\n    /**\n     * Sets the icon associated with this interactor.\n     * Not all types of interactors support icons.\n     * @param icon the icon to use\n     */\n    virtual void setIcon(const QIcon& icon);\n\n    /**\n     * Sets the icon associated with this interactor.\n     * Not all types of interactors support icons.\n     * @param icon the icon to use\n     */\n    virtual void setIcon(const QPixmap& icon);\n\n    /**\n     * Sets the file name of the icon associated with this interactor,\n     * or an empty string if no icon has been set.\n     * Not all types of interactors support icons.\n     * @param filename icon file path to use\n     * @param retainIconSize true if icon should stay at its existing pixel size (default),\n     *                       or false if it should be resized to fit the interactor\n     */\n    virtual void setIcon(const std::string& filename, bool retainIconSize = true);\n\n    /**\n     * Sets a key listener on this interactor so that it will be called\n     * when the user presses any key.\n     * Any existing key listener will be replaced.\n     */\n    virtual void setKeyListener(GEventListener func);\n\n    /**\n     * Sets a key listener on this interactor so that it will be called\n     * when the user presses any key.\n     * Any existing key listener will be replaced.\n     */\n    virtual void setKeyListener(GEventListenerVoid func);\n\n    /**\n     * Sets the onscreen x/y-coordinate of the top-left corner of the interactor\n     * relative to its window.\n     * Generally clients should not call this and should instead use containers\n     * and layout regions to position interactors.\n     */\n    virtual void setLocation(double x, double y);\n\n    /**\n     * Sets the minimum size in pixels that this interactor will permit itself\n     * to be resized to.\n     * @throw ErrorException if width or height is negative\n     */\n    virtual void setMinimumSize(double width, double height);\n\n    /**\n     * Sets the minimum size in pixels that this interactor will permit itself\n     * to be resized to.\n     * @throw ErrorException if width or height is negative\n     */\n    virtual void setMinimumSize(const GDimension& size);\n\n    /**\n     * Sets a one-character 'mnemonic' shortcut that can be used to activate\n     * this interactor.  This method is a relic from a previous Java-based\n     * GUI system and should no longer be used.\n     * @deprecated\n     * @private\n     */\n    virtual void setMnemonic(char mnemonic) Q_DECL_DEPRECATED;\n\n    /**\n     * Sets a mouse listener on this interactor so that it will be called\n     * when the mouse is moved or clicked on it.\n     * Any existing mouse listener will be replaced.\n     */\n    virtual void setMouseListener(GEventListener func);\n\n    /**\n     * Sets a mouse listener on this interactor so that it will be called\n     * when the mouse is moved or clicked on it.\n     * Any existing mouse listener will be replaced.\n     */\n    virtual void setMouseListener(GEventListenerVoid func);\n\n    /**\n     * Sets a string representing a unique name for this interactor.\n     * The default name string uses the interactor's type and its ID to make\n     * a string like \"GButton_14\", but you can override this by calling setName.\n     * @param name a string such as \"GButton_14\"\n     */\n    virtual void setName(const std::string& name);\n\n    /**\n     * Sets the height in pixels that this interactor would prefer to be.\n     * Normally clients do not need to call this method; the interactor can\n     * figure out its own preferred size.\n     * But calling it can help you to hint to the container/layout system if\n     * you want a given interactor to \"prefer\" to make itself larger or smaller\n     * for the purposes of your particular program.\n     */\n    virtual void setPreferredHeight(double height);\n\n    /**\n     * Sets the width and height in pixels that this interactor would prefer to be.\n     * Normally clients do not need to call this method; the interactor can\n     * figure out its own preferred size.\n     * But calling it can help you to hint to the container/layout system if\n     * you want a given interactor to \"prefer\" to make itself larger or smaller\n     * for the purposes of your particular program.\n     */\n    virtual void setPreferredSize(double width, double height);\n\n\n    /**\n     * Sets the size in pixels that this interactor would prefer to be.\n     * Normally clients do not need to call this method; the interactor can\n     * figure out its own preferred size.\n     */\n    virtual void setPreferredSize(const GDimension& size);\n\n\n    /**\n     * Sets the width in pixels that this interactor would prefer to be.\n     * Normally clients do not need to call this method; the interactor can\n     * figure out its own preferred size.\n     */\n    virtual void setPreferredWidth(double width);\n\n    /**\n     * Sets the onscreen width and height of the interactor in pixels.\n     * @throw ErrorException if width or height is negative\n     */\n    virtual void setSize(double width, double height);\n\n    /**\n     * Sets the onscreen width and height of the interactor in pixels.\n     * @throw ErrorException if width or height is negative\n     */\n    virtual void setSize(const GDimension& size);\n\n    /**\n     * Sets a \"tooltip\" that will appear if the user hovers their mouse\n     * over the interactor.\n     * Set an empty string to clear the tooltip.\n     */\n    virtual void setTooltip(const std::string& tooltipText);\n\n    /**\n     * Returns true if the interactor is visible on the screen.\n     * Interactors will not be visible until they are added to an onscreen\n     * window or container.\n     * If you call setVisible on an interactor that is not in any onscreen\n     * container, it will have no effect.\n     */\n    virtual void setVisible(bool visible);\n\n    /**\n     * Sets the onscreen width of the interactor in pixels.\n     * @throw ErrorException if width is negative\n     */\n    virtual void setWidth(double width);\n\n    /**\n     * Sets the onscreen x-coordinate of the top-left corner of the interactor\n     * relative to its window.\n     * Generally clients should not call this and should instead use containers\n     * and layout regions to position interactors.\n     */\n    virtual void setX(double x);\n\n    /**\n     * Sets the onscreen y-coordinate of the top-left corner of the interactor\n     * relative to its window.\n     * Generally clients should not call this and should instead use containers\n     * and layout regions to position interactors.\n     */\n    virtual void setY(double y);\n\nprotected:\n    /**\n     * @private\n     */\n    std::string _actionCommand;\n\n    /**\n     * @private\n     */\n    std::string _actionEventType;\n\n    /**\n     * @private\n     */\n    std::string _icon;\n\n    /**\n     * @private\n     */\n    std::string _name;\n\n    /**\n     * @private\n     */\n    int _id;\n\n    /**\n     * @private\n     */\n    GContainer* _container;\n\n    /**\n     * @private\n     */\n    QReadWriteLock _lock;    // avoid thread race conditions\n\n    /**\n     * @private\n     */\n    static QWidget* getInternalParent(QWidget* parent);\n\n    /**\n     * @private\n     */\n    virtual std::string getActionEventType() const;\n\n    /**\n     * @private\n     */\n    virtual std::string getDefaultInteractorName() const;\n\n    /**\n     * @private\n     */\n    virtual void lockForRead();\n\n    /**\n     * @private\n     */\n    virtual void lockForReadConst() const;\n\n    /**\n     * @private\n     */\n    virtual void lockForWrite();\n\n    /**\n     * @private\n     */\n    virtual void lockForWriteConst() const;\n\n    /**\n     * @private\n     */\n    static std::string normalizeAccelerator(const std::string& accelerator);\n\n    /**\n     * @private\n     */\n    virtual void setContainer(GContainer* container);\n\n    /**\n     * @private\n     */\n    virtual void unlock();\n\n    /**\n     * @private\n     */\n    virtual void unlockConst() const;\n\n    friend class GContainer;\n    friend class GDiffGui;\n    friend class GWindow;\n    friend class _Internal_QWidget;\n\nprivate:\n    static int _interactorCount;\n};\n\n\n/**\n * A class representing internal Qt widgets that are wrapped inside of\n * GInteractor objects.\n * Every GInteractor subclass must define a class that is a subclass of\n * _Internal_QWidget to be wrapped by that interactor.\n * @private\n */\nclass _Internal_QWidget {\npublic:\n    _Internal_QWidget();\n    virtual ~_Internal_QWidget();\n    virtual void detach();\n    virtual QSize getMinimumSize() const;\n    virtual bool hasMinimumSize() const;\n    virtual QSize getPreferredSize() const;\n    virtual bool hasPreferredSize() const;\n    virtual void setMinimumSize(double width, double height);\n    virtual void setMinimumSize(const QSize& size);\n    virtual void setPreferredSize(double width, double height);\n    virtual void setPreferredSize(const QSize& size);\n\nprivate:\n    GDimension _minimumSize;\n    GDimension _preferredSize;\n\n    friend class GInteractor;\n};\n\n/**\n * A generic simple GInteractor that wraps any Qt QWidget you pass it.\n * This is meant to make the library extensible and allow you to wrap other\n * Qt widgets that were not built into the original library.\n * @private\n */\ntemplate <typename T>\nclass GGenericInteractor : public GInteractor {\npublic:\n    GGenericInteractor(T* widget)\n            : _widget(widget) {\n        _iqwidget = new _Internal_QWidget();   // dummy\n    }\n\n    virtual _Internal_QWidget* getInternalWidget() const Q_DECL_OVERRIDE {\n        return _iqwidget;\n    }\n\n    virtual std::string getType() const Q_DECL_OVERRIDE {\n        std::string typeName = typeid(T).name();\n        return std::string(\"GGenericInteractor<\") + typeName + \">\";\n    }\n\n    virtual QWidget* getWidget() const Q_DECL_OVERRIDE {\n        return _widget;\n    }\n\nprivate:\n    _Internal_QWidget* _iqwidget;\n    T* _widget;\n};\n\n#endif // _ginteractor_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/ginteractors.h",
    "content": "/*\n * File: ginteractors.h\n * ---------------------\n *\n * This file serves as a convenient way to include all Qt-based graphical\n * interactors in your project with a single include statement.\n *\n * @author Marty Stepp\n * @version 2018/08/23\n * - renamed to ginteractors.h to replace Java version\n * @version 2018/07/04\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _ginteractors_h\n#define _ginteractors_h\n\n// not wrapped with INTERNAL_INCLUDE since it would lose signal of student\n// including this file in their code; no internal lib files include this header\n#include \"gbrowserpane.h\"\n#include \"gbufferedimage.h\"\n#include \"gbutton.h\"\n#include \"gcanvas.h\"\n#include \"gcheckbox.h\"\n#include \"gchooser.h\"\n#include \"gcolor.h\"\n#include \"gcontainer.h\"\n#include \"gfilechooser.h\"\n#include \"gfont.h\"\n#include \"ginteractor.h\"\n#include \"glabel.h\"\n#include \"goptionpane.h\"\n#include \"gradiobutton.h\"\n#include \"gscrollbar.h\"\n#include \"gscrollpane.h\"\n#include \"gslider.h\"\n#include \"gspacer.h\"\n#include \"gtable.h\"\n#include \"gtextarea.h\"\n#include \"gtextfield.h\"\n#include \"gwindow.h\"\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#endif // _ginteractors_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/glabel.h",
    "content": "/*\n * File: glabel.h\n * --------------\n *\n * @author Marty Stepp\n * @version 2019/04/23\n * - moved some event-handling code to GInteractor superclass\n * @version 2019/04/22\n * - added setIcon with QIcon and QPixmap\n * @version 2018/10/04\n * - added get/setWordWrap\n * @version 2018/09/07\n * - added doc comments for new documentation generation\n * @version 2018/09/04\n * - added double-click event support\n * @version 2018/09/03\n * - added addActionListener methods for clickable labels\n * @version 2018/08/23\n * - renamed to glabel.h to replace Java version\n * @version 2018/06/25\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n// signal that GUI system is in use (so it will be initialized)\n#define SPL_QT_GUI_IN_USE 1\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _glabel_h\n#define _glabel_h\n\n#include <string>\n#include <QWindow>\n#include <QEvent>\n#include <QLabel>\n#include <QMouseEvent>\n#include <QSize>\n#include <QWidget>\n\n#define INTERNAL_INCLUDE 1\n#include \"ginteractor.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gobjects.h\"\n#undef INTERNAL_INCLUDE\n\n// forward declaration\nclass _Internal_QLabel;\nclass GWindow;\n\n/**\n * A GLabel represents a text string.\n * A label can contain text and/or an image icon.\n *\n * GLabels can be made clickable by setting an action, click, or double-click\n * listener, but generally if you want a clickable interactor with text on it,\n * you may prefer a GButton.\n */\nclass GLabel : public GInteractor {\npublic:\n    /**\n     * Creates a label with the specified text label and optional icon.\n     */\n    GLabel(const std::string& text = \"\", const std::string& iconFileName = \"\", QWidget* parent = nullptr);\n\n    /**\n     * Creates a label with the specified text label and icon.\n     */\n    GLabel(const std::string& text, const QIcon& icon, QWidget* parent = nullptr);\n\n    /**\n     * Creates a label with the specified text label and icon.\n     */\n    GLabel(const std::string& text, const QPixmap& icon, QWidget* parent = nullptr);\n\n    /**\n     * Frees memory allocated internally by the label.\n     */\n    virtual ~GLabel() Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual _Internal_QWidget* getInternalWidget() const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns the string displayed by the label.\n     * Equivalent to getText.\n     */\n    virtual std::string getLabel() const;\n\n    /**\n     * Returns the string displayed by the label.\n     * Equivalent to getLabel.\n     */\n    virtual std::string getText() const;\n\n    /**\n     * Returns the label's text position relative to its icon.\n     * The default is TEXT_BESIDE_ICON, but it can be changed to TEXT_UNDER_ICON\n     * by calling the setTextPosition method.\n     */\n    virtual GInteractor::TextPosition getTextPosition() const;\n\n    /* @inherit */\n    virtual std::string getType() const Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual QWidget* getWidget() const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns whether the label should wrap if its text is too long.\n     * Default false.\n     */\n    virtual bool isWordWrap() const;\n\n    /* @inherit */\n    virtual void setBounds(double x, double y, double width, double height) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void setBounds(const GRectangle& size) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void setColor(int rgb) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void setColor(const std::string& color) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void setFont(const QFont& font) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void setFont(const std::string& font) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void setForeground(int rgb) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void setForeground(const std::string& color) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void setHeight(double height) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void setIcon(const QIcon& icon) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void setIcon(const QPixmap& icon) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void setIcon(const std::string& filename, bool retainIconSize = true) Q_DECL_OVERRIDE;\n\n    /**\n     * Sets the text on the label to be the given text.\n     * Equivalent to setText.\n     */\n    virtual void setLabel(const std::string& text);\n\n    /* @inherit */\n    virtual void setLocation(double x, double y) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void setSize(double width, double height) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void setSize(const GDimension& size) Q_DECL_OVERRIDE;\n\n    /**\n     * Sets the text on the label to be the given text.\n     * Equivalent to setLabel.\n     */\n    virtual void setText(const std::string& text);\n\n    /**\n     * Sets the label's text position relative to its icon.\n     * The default is TEXT_BESIDE_ICON, but it can be changed to TEXT_UNDER_ICON.\n     */\n    virtual void setTextPosition(GInteractor::TextPosition position);\n\n    /* @inherit */\n    virtual void setVisible(bool visible) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void setWidth(double width) Q_DECL_OVERRIDE;\n\n    /**\n     * Sets whether the label should wrap if its text is too long.\n     * Default false.\n     */\n    virtual void setWordWrap(bool wrap);\n\n    /* @inherit */\n    virtual void setX(double x) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void setY(double y) Q_DECL_OVERRIDE;\n\nprivate:\n    Q_DISABLE_COPY(GLabel)\n    _Internal_QLabel* _iqlabel;\n    GText* _gtext;\n\n    void ensureGText();\n    GText* getGText() const;\n    bool hasGText() const;\n\n    friend class _Internal_QLabel;\n    friend class GWindow;\n};\n\n// alias GTextLabel for GLabel for backward compatibility\ntypedef GLabel GTextLabel;\n\n\n/**\n * Internal class; not to be used by clients.\n * @private\n */\nclass _Internal_QLabel : public QLabel, public _Internal_QWidget {\n    Q_OBJECT\n\npublic:\n    _Internal_QLabel(GLabel* glabel, QWidget* parent = nullptr);\n    virtual void detach() Q_DECL_OVERRIDE;\n    virtual QSize sizeHint() const Q_DECL_OVERRIDE;\n\nsignals:\n    void clicked();\n    void doubleClicked();\n\nprotected:\n    void mouseDoubleClickEvent(QMouseEvent* e) Q_DECL_OVERRIDE;\n    void mousePressEvent(QMouseEvent* event) Q_DECL_OVERRIDE;\n\nprivate:\n    GLabel* _glabel;\n\n    friend class GLabel;\n};\n\n#endif // _glabel_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/glayout.h",
    "content": "/*\n * File: glayout.h\n * ---------------\n *\n * @author Marty Stepp\n * @version 2018/09/07\n * - added doc comments for new documentation generation\n * @version 2018/08/23\n * - renamed to glayout.h to replace Java version\n * @version 2018/06/25\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n// signal that GUI system is in use (so it will be initialized)\n#define SPL_QT_GUI_IN_USE 1\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _glayout_h\n#define _glayout_h\n\n#include <QLayout>\n#include <QRect>\n#include <QWidget>\n\n#define INTERNAL_INCLUDE 1\n#include \"ginteractor.h\"\n#undef INTERNAL_INCLUDE\n\n/**\n * A helper class with functionality related to container layout management.\n * Clients generally do not need to use this class directly.\n * @private\n */\nclass GLayout {\npublic:\n\n    enum Position { West, North, South, East, Center };\n\n    static void clearLayout(QLayout* layout);\n    static bool contains(QLayout* layout, QWidget* widget);\n    static void forceUpdate(GInteractor* interactor);\n    static void forceUpdate(QWidget* widget);\n    static QSize getPreferredSize(QWidget* widget);\n    static QSize getProperSize(QLayout* layout);\n    static QSize getProperSize(QWidget* widget);\n    static void invalidateLayout(QLayout* layout);\n    static Position toPosition(const std::string& positionName);\n\nprivate:\n    GLayout();   // forbid construction\n};\n\n/**\n * A Qt layout manager that performs a \"border\" layout a la Java AWT's.\n * This class currently does not work properly.\n *\n * based on: http://doc.qt.io/qt-5.6/qtwidgets-layouts-borderlayout-example.html\n *\n * TODO: finish/debug or remove\n *\n * @private\n */\nclass GBorderLayout : public QLayout {\npublic:\n    GBorderLayout(QWidget* parent, int margin = 0, int spacing = -1);\n    GBorderLayout(int spacing = -1);\n    virtual ~GBorderLayout() Q_DECL_OVERRIDE;\n\n    void addItem(QLayoutItem* item) Q_DECL_OVERRIDE;\n    void addWidget(QWidget* widget);\n    void addWidget(QWidget* widget, GLayout::Position position);\n    Qt::Orientations expandingDirections() const Q_DECL_OVERRIDE;\n    bool hasHeightForWidth() const Q_DECL_OVERRIDE;\n    int count() const Q_DECL_OVERRIDE;\n    QLayoutItem* itemAt(int index) const Q_DECL_OVERRIDE;\n    QSize minimumSize() const Q_DECL_OVERRIDE;\n    void setGeometry(const QRect& rect) Q_DECL_OVERRIDE;\n    QSize sizeHint() const Q_DECL_OVERRIDE;\n    QLayoutItem* takeAt(int index) Q_DECL_OVERRIDE;\n\n    void add(QLayoutItem* item, GLayout::Position position);\n\nprivate:\n    Q_DISABLE_COPY(GBorderLayout)\n\n    struct ItemWrapper {\n        ItemWrapper(QLayoutItem* i, GLayout::Position p) {\n            item = i;\n            position = p;\n        }\n\n        QLayoutItem* item;\n        GLayout::Position position;\n    };\n\n    enum SizeType { MinimumSize, SizeHint };\n\n    QSize calculateSize(SizeType sizeType) const;\n\n    QList<ItemWrapper*> list;\n};\n\n#endif // _glayout_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/gobjects.h",
    "content": "/*\n * File: gobjects.h\n * ----------------\n * This file exports a hierarchy of graphical shapes based on\n * the model developed for the ACM Java Graphics.\n * <include src=\"pictures/ClassHierarchies/GObjectHierarchy-h.html\">\n *\n * @author Marty Stepp\n * @version 2019/05/05\n * - added predictable GLine point ordering\n * @version 2019/04/23\n * - bug fix for loading GImage from file on Windows related to istream change\n * @version 2019/03/07\n * - added support for loading a GImage directly from istream (htiek)\n * @version 2018/09/14\n * - added opacity support\n * - added GCanvas-to-GImage conversion support\n * @version 2018/09/08\n * - added doc comments for new documentation generation\n * @version 2018/08/23\n * - renamed to gobjects.h to replace Java version\n * @version 2018/06/30\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n// signal that GUI system is in use (so it will be initialized)\n#define SPL_QT_GUI_IN_USE 1\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _gobjects_h\n#define _gobjects_h\n\n#include <initializer_list>\n#include <iostream>\n#include <QFont>\n#include <QImage>\n#include <QPainter>\n#include <QPen>\n#include <QWidget>\n\n#define INTERNAL_INCLUDE 1\n#include \"gtypes.h\"\n#define INTERNAL_INCLUDE 1\n#include \"vector.h\"\n#undef INTERNAL_INCLUDE\n\nclass GCanvas;\nclass GCompound;\nclass GDiffImage;\n\n/**\n * This class is the common superclass of all graphical objects that can\n * be displayed on a graphical window.  The class <code>GObject</code>\n * itself is an <b><i>abstract class</i></b>, which means that you are not\n * allowed to construct a <code>GObject</code> directly but must instead\n * construct one of the concrete subclasses.\n * <include src=\"pictures/ClassHierarchies/GObjectHierarchy.html\">\n *\n * Most methods used for graphics take a pointer to a <code>GObject</code>\n * rather than the <code>GObject</code> itself.  Applications that use\n * <code>GObject</code> pointers therefore use the arrow operator\n * (<code>-&gt;</code>) to apply methods to the object pointer.\n * For examples illustrating the use of the <code>GObject</code> class, see\n * the descriptions of the individual subclasses.\n */\nclass GObject {\npublic:\n    /**\n     * Styles that can be used for the outline around various shapes.\n     * Call setLineStyle on a GObject and pass one of these values.\n     */\n    enum LineStyle {\n        LINE_NONE,\n        LINE_SOLID,\n        LINE_DASH,\n        LINE_DOT,\n        LINE_DASH_DOT,\n        LINE_DASH_DOT_DOT\n    };\n\n    /**\n     * Frees the storage for the object.\n     */\n    virtual ~GObject();\n\n    /**\n     * Returns <code>true</code> if the specified point is inside the object.\n     */\n    virtual bool contains(double x, double y) const;\n\n    /**\n     * Returns <code>true</code> if the specified point is inside the object.\n     */\n    virtual bool contains(const GPoint& pt) const;\n\n    /**\n     * Draws this object onto the given surface.\n     * Each GObject subclass must override this method.\n     * @private\n     */\n    virtual void draw(QPainter* painter) = 0;\n\n    /**\n     * Returns the x/y coordinates of the bottom/right corner of the object.\n     */\n    virtual GPoint getBottomRightLocation() const;\n\n    /**\n     * Returns the <i>y</i>-coordinate of the bottom of the object.\n     * Equivalent to the top y-coordinate plus the object's height.\n     */\n    virtual double getBottomY() const;\n\n    /**\n     * Returns the bounding box of this object, which is defined to be the\n     * smallest rectangle that covers everything drawn by the figure.  The\n     * coordinates of this rectangle do not necessarily match the location\n     * returned by <code>getLocation</code>.  Given a <code>GText</code>\n     * object, for example, <code>getLocation</code> returns the coordinates\n     * of the point on the baseline at which the string begins; the\n     * <code>getBounds</code> method, by contrast, returns a rectangle that\n     * covers the entire window area occupied by the string.\n     */\n    virtual GRectangle getBounds() const;\n\n    /**\n     * Returns the x/y-coordinates of the center of the object.\n     * Equivalent to the top/left plus half the object's size.\n     */\n    virtual GPoint getCenterLocation() const;\n\n    /**\n     * Returns the <i>x</i>-coordinate of the center of the object.\n     * Equivalent to the top/left plus half the object's width.\n     */\n    virtual double getCenterX() const;\n\n    /**\n     * Returns the <i>y</i>-coordinate of the center of the object.\n     * Equivalent to the top/left plus half the object's height.\n     */\n    virtual double getCenterY() const;\n\n    /**\n     * Returns the color used to display this object.  This color is\n     * always returned as a string in the form <code>\"#rrggbb\"</code>,\n     * where <code>rr</code>, <code>gg</code>, and <code>bb</code> are\n     * the red, green, and blue components of the color, expressed as\n     * two-digit hexadecimal values.\n     */\n    virtual std::string getColor() const;\n\n    /**\n     * Returns the color used to display the filled region of this object.\n     * If none has been set, returns the empty string.\n     */\n    virtual std::string getFillColor() const;\n\n    /**\n     * Returns the height of this object, which is the same as the height\n     * of its bounding box.\n     */\n    virtual double getHeight() const;\n\n    /**\n     * Returns the object's style such as solid or dashed.\n     */\n    virtual LineStyle getLineStyle() const;\n\n    /**\n     * Returns the width of the line used to draw this object.\n     * @return default 1\n     */\n    virtual double getLineWidth() const;\n\n    /**\n     * Returns the location of the top-left corner of object.\n     */\n    virtual GPoint getLocation() const;\n\n    /**\n     * Returns how opaque (non-transparent) this object will appear from 0.0\n     * (completely transparent) to 1.0 (completely opaque, default).\n     */\n    virtual double getOpacity() const;\n\n    /**\n     * Returns a pointer to the <code>GCompound</code> that contains this\n     * object.  Every <code>GWindow</code> is initialized to contain a single\n     * <code>GCompound</code> that is aligned with the window.  Adding\n     * objects to the window adds them to that <code>GCompound</code>,\n     * which means that every object you add to the window has a parent.\n     * Calling <code>getParent</code> on the top-level <code>GCompound</code>\n     * returns <code>nullptr</code>.\n     */\n    virtual GCompound* getParent() const;\n\n    /**\n     * Returns the <i>x</i>-coordinate of the right side of the object.\n     * Equivalent to the left x-coordinate plus the object's width.\n     */\n    virtual double getRightX() const;\n\n    /**\n     * Returns the size of the object as a <code>GDimension</code>.\n     */\n    virtual GDimension getSize() const;\n\n    /**\n     * Returns the type of the object as a string, such as\n     * <code>\"GOval\"</code> or <code>\"GRect\"</code>.\n     * Each GObject subtype must override this method.\n     */\n    virtual std::string getType() const = 0;\n\n    /**\n     * Returns the width of this object, which is equal to the width of\n     * the bounding box.\n     */\n    virtual double getWidth() const;\n\n    /**\n     * Returns the leftmost <i>x</i>-coordinate of the object.\n     */\n    virtual double getX() const;\n\n    /**\n     * Returns the topmost <i>y</i>-coordinate of the object.\n     */\n    virtual double getY() const;\n\n    /**\n     * Returns whether we should globally anti-alias graphical objects.\n     * On by default.\n     */\n    static bool isAntiAliasing();\n\n    /**\n     * Returns <code>true</code> if the object is filled with color.\n     */\n    virtual bool isFilled() const;\n\n    /**\n     * Returns <code>true</code> if this object has been transformed\n     * by calling methods such as rotate() or scale() on it.\n     * Certain operations (such as setSize) cannot be performed after\n     * a graphical object has been transformed.\n     */\n    virtual bool isTransformed() const;\n\n    /**\n     * Returns <code>true</code> if this object is visible on screen.\n     */\n    virtual bool isVisible() const;\n\n    /**\n     * Moves the object on the screen using the displacements\n     * <code>dx</code> and <code>dy</code>.\n     */\n    virtual void move(double dx, double dy);\n\n    /**\n     * Instructs the object to redraw itself on screen.\n     */\n    virtual void repaint();\n\n    /**\n     * Undoes any previous scale/rotate transformations on this object.\n     */\n    virtual void resetTransform();\n\n    /**\n     * Transforms the object by rotating it <code>theta</code> degrees\n     * counterclockwise around its origin.\n     * After calling this method on a graphical object, <code>isTransformed</code>\n     * will return <code>true</code> for that object unless you subsequently\n     * call <code>resetTransform</code> on it.\n     */\n    virtual void rotate(double theta);\n\n    /**\n     * Scales the object by the specified scale factor.  This form\n     * scales the object by <code>sf</code> in both dimensions, so that\n     * invoking <code>gobj->scale(2);</code> doubles the size of the object.\n     * After calling this method on a graphical object, <code>isTransformed</code>\n     * will return <code>true</code> for that object unless you subsequently\n     * call <code>resetTransform</code> on it.\n     */\n    virtual void scale(double sf);\n\n    /**\n     * Scales the object by the specified scale factors.  For example,\n     * <code>gobj->scale(2, 2);</code> doubles the size of the object.\n     * This form applies independent scale factors to the <i>x</i> and <i>y</i>\n     * dimensions.\n     * After calling this method on a graphical object, <code>isTransformed</code>\n     * will return <code>true</code> for that object unless you subsequently\n     * call <code>resetTransform</code> on it.\n     */\n    virtual void scale(double sx, double sy);\n\n    /**\n     * Moves this object one step toward the back in the <i>z</i> dimension.\n     * If it was already at the back of the stack, nothing happens.\n     */\n    void sendBackward();\n\n    /**\n     * Moves this object one step toward the front in the <i>z</i> dimension.\n     * If it was already at the front of the stack, nothing happens.\n     */\n    void sendForward();\n\n    /**\n     * Moves this object to the back of the display in the <i>z</i> dimension.\n     * By moving it to the back, this object will appear to be behind the other\n     * graphical objects on the display and may be obscured by other objects\n     * in front.\n     */\n    void sendToBack();\n\n    /**\n     * Moves this object to the front of the display in the <i>z</i> dimension.\n     * By moving it to the front, this object will appear to be on top of the\n     * other graphical objects on the display and may hide any objects that\n     * are further back.\n     */\n    void sendToFront();\n\n    /**\n     * Globally turns on/off the anti-aliasing feature that smooths out the\n     * edges of onscreen shapes.  On by default.\n     * Does not repaint any onscreen objects when called; you must do this yourself.\n     */\n    static void setAntiAliasing(bool value);\n\n    /**\n     * Changes the bounds of this object to the specified values.\n     */\n    virtual void setBounds(double x, double y, double width, double height);\n\n    /**\n     * Changes the bounds of this object to the specified rectangle.\n     */\n    virtual void setBounds(const GRectangle& size);\n\n    /**\n     * Sets the location of the bottom y-coordinate of this object.\n     */\n    virtual void setBottomY(double y);\n\n    /**\n     * Sets the location of the rightmost x-coordinate of this object.\n     */\n    virtual void setRightX(double x);\n\n    /**\n     * Sets the location of the bottom/right of this object.\n     */\n    virtual void setBottomRightLocation(double x, double y);\n\n    /**\n     * Sets the location of the bottom/right of this object.\n     */\n    virtual void setBottomRightLocation(const GPoint& pt);\n\n    /**\n     * Sets the x-coordinate of the center of this object.\n     */\n    virtual void setCenterX(double x);\n\n    /**\n     * Sets the y-coordinate of the center of this object.\n     */\n    virtual void setCenterY(double y);\n\n    /**\n     * Sets the location of the center of this object.\n     */\n    virtual void setCenterLocation(double x, double y);\n\n    /**\n     * Sets the location of the center of this object.\n     */\n    virtual void setCenterLocation(const GPoint& pt);\n\n    /**\n     * Sets the color used to display this object.\n     * See gcolor.h for more detail about how to specify colors.\n     *\n     * Equivalent to setForeground.\n     *\n     * @param r redness from 0-255\n     * @param g greenness from 0-255\n     * @param b blueness from 0-255\n     */\n    virtual void setColor(int r, int g, int b);\n\n    /**\n     * Sets the color used to display this object.\n     * See gcolor.h for more detail about how to specify colors.\n     *\n     * Equivalent to setForeground.\n     *\n     * @param rgb an RGB integer value such as 0x7700ff\n     */\n    virtual void setColor(int rgb);\n\n    /**\n     * Sets the color used to display this object.\n     * See gcolor.h for more detail about how to specify colors.\n     *\n     * Equivalent to setForeground.\n     *\n     * @color a color string such as \"#7700ff\" or \"purple\"\n     */\n    virtual void setColor(const std::string& color);\n\n    /**\n     * Sets the color used to display the filled region of this object, if any.\n     * As a side effect, sets this object to be filled (setFilled(true)).\n     * See gcolor.h for more detail about how to specify colors.\n     * If an empty string is passed, sets filled to false.\n     *\n     * @param r redness from 0-255\n     * @param g greenness from 0-255\n     * @param b blueness from 0-255\n     */\n    virtual void setFillColor(int r, int g, int b);\n\n    /**\n     * Sets the color used to display the filled region of this object, if any.\n     * As a side effect, sets this object to be filled (setFilled(true)).\n     * See gcolor.h for more detail about how to specify colors.\n     *\n     * @param rgb an RGB integer value such as 0x7700ff\n     */\n    virtual void setFillColor(int rgb);\n\n    /**\n     * Sets the color used to display the filled region of this object, if any.\n     * As a side effect, sets this object to be filled (setFilled(true)).\n     * See gcolor.h for more detail about how to specify colors.\n     * If an empty string is passed, sets filled to false.\n     *\n     * @color a color string such as \"#7700ff\" or \"purple\"\n     */\n    virtual void setFillColor(const std::string& color);\n\n    /**\n     * Sets the fill status for the object, where <code>false</code> is\n     * outlined and <code>true</code> is filled.\n     */\n    virtual void setFilled(bool flag);\n\n    /**\n     * Changes the font used to display the object as specified by\n     * the given Qt font.\n     * See gfont.h for more detail about how to specify fonts.\n     */\n    virtual void setFont(const QFont& font);\n\n    /**\n     * Changes the font used to display the object as specified by\n     * the string <code>font</code>, which has the following format:\n     *\n     * <pre>\n     * \"family-style-size\"\n     * </pre>\n     *\n     * where both <code>style</code> and <code>size</code> are optional.\n     * If any of these elements are missing or specified as an asterisk,\n     * the existing value is retained.\n     * See gfont.h for more detail about how to specify fonts.\n     */\n    virtual void setFont(const std::string& font);\n\n    /**\n     * Sets the color used to display this object.\n     * See gcolor.h for more detail about how to specify colors.\n     *\n     * Equivalent to setColor.\n     *\n     * @param r redness from 0-255\n     * @param g greenness from 0-255\n     * @param b blueness from 0-255\n     */\n    virtual void setForeground(int r, int g, int b);\n\n    /**\n     * Sets the color used to display this object.\n     * See gcolor.h for more detail about how to specify colors.\n     *\n     * Equivalent to setColor.\n     *\n     * @param rgb an RGB integer value such as 0x7700ff\n     */\n    virtual void setForeground(int rgb);\n\n    /**\n     * Sets the color used to display this object.\n     * See gcolor.h for more detail about how to specify colors.\n     *\n     * Equivalent to setColor.\n     *\n     * @color a color string such as \"#7700ff\" or \"purple\"\n     */\n    virtual void setForeground(const std::string& color);\n\n    /**\n     * Changes the height of this object to the specified height\n     * without changing its width.\n     */\n    virtual void setHeight(double height);\n\n    /**\n     * Sets the object's style such as solid (GObject::LINE_SOLID) or dashed\n     * (GObject::LINE_DASH).\n     */\n    virtual void setLineStyle(LineStyle lineStyle);\n\n    /**\n     * Sets the width of the line used to draw this object.\n     * The default line width is 1.\n     */\n    virtual void setLineWidth(double lineWidth);\n\n    /**\n     * Sets the location of the top-left corner of this object to the\n     * specified coordinates.\n     */\n    virtual void setLocation(double x, double y);\n\n    /**\n     * Sets the location of the top-left corner of this object to the\n     * specified point.\n     */\n    virtual void setLocation(const GPoint& pt);\n\n    /**\n     * Sets how opaque (non-transparent) this object will appear from 0.0\n     * (completely transparent) to 1.0 (completely opaque, default).\n     * @throw ErrorException if opacity is out of range [0.0, 1.0]\n     */\n    virtual void setOpacity(double opacity);\n\n    /**\n     * Changes the size of this object to the specified width and height.\n     */\n    virtual void setSize(double width, double height);\n\n    /**\n     * Changes the size of this object to the specified width and height.\n     */\n    virtual void setSize(const GDimension& size);\n\n    /**\n     * Sets whether this object is visible.\n     * Graphical objects are initially visible when created.\n     */\n    virtual void setVisible(bool flag);\n\n    /**\n     * Changes the width of this object to the specified width\n     * without changing its height.\n     */\n    virtual void setWidth(double width);\n\n    /**\n     * Sets the x location of the left side of this object.\n     */\n    virtual void setX(double x);\n\n    /**\n     * Sets the y location of the top of this object.\n     */\n    virtual void setY(double y);\n\n    /**\n     * Returns a printable representation of the object.\n     */\n    virtual std::string toString() const;\n\n// Private section\nprivate:\n    // forbid assignment between objects\n    const GObject& operator =(const GObject&) {\n        return *this;\n    }\n\n    // forbid copy construction\n    GObject(const GObject&) {\n        // empty\n    }\n\n    // whether to anti-alias graphical objects; default true\n    static bool _sAntiAliasing;\n\n    /* Instance variables */\nprotected:\n    double _x;                       // the x coordinate of the origin\n    double _y;                       // the y coordinate of the origin\n    double _width;                   // the width of the bounding rectangle\n    double _height;                  // the height of the bounding rectangle\n    double _lineWidth;               // the width of the line in pixels\n    double _opacity;                 // 0.0 (transparent) - 1.0 (opaque, default)\n    LineStyle _lineStyle;            // line style such as solid or dashed\n    std::string _color;              // the color of the object\n    int _colorInt;\n    std::string _fillColor;          // color used to fill the object\n    int _fillColorInt;\n    std::string _font;               // the font string of the label\n    bool _fillFlag;                  // indicates whether the object is filled\n    bool _visible;                   // indicates if object is visible\n    bool _transformed;               // indicates if object is transformed\n    GCompound* _parent;             // pointer to the parent\n    QPen _pen;                       // for outlines\n    QBrush _brush;                   // for filling\n    QTransform _transform;           // for transformations (rotate, scale)\n\nprotected:\n    /**\n     * Constructs a graphical object at the given location.\n     * @private\n     */\n    GObject(double x = 0, double y = 0, double width = 0, double height = 0);\n\n    /**\n     * Initializes the Qt brush and pen to draw this object with\n     * the given painter.\n     * @private\n     */\n    virtual void initializeBrushAndPen(QPainter* painter = nullptr);\n\n    /**\n     * Converts our line style enums into Qt pen styles for drawing.\n     * @private\n     */\n    static Qt::PenStyle toQtPenStyle(LineStyle lineStyle);\n\n    /**\n     * Returns a string containing any extra unique information about this\n     * type of graphical object.\n     */\n    virtual std::string toStringExtra() const;\n\n    friend class GArc;\n    friend class GCompound;\n    friend class GImage;\n    friend class GInteractor;\n    friend class GLine;\n    friend class GOval;\n    friend class GPolygon;\n    friend class GRect;\n    friend class GRoundRect;\n    friend class GText;\n};\n\n/**\n * This graphical object subclass represents an elliptical arc.  The\n * arc is specified by the following parameters:\n *\n * <p><ul>\n *   <li>The coordinates of the bounding rectangle (<code>x</code>,\n *       <code>y</code>, <code>width</code>, <code>height</code>)\n *   <li>The angle at which the arc starts (<code>start</code>)\n *   <li>The number of degrees that the arc covers (<code>sweep</code>)\n * </ul>\n *\n * <p>All angles in a <code>GArc</code> description are measured in\n * degrees moving counterclockwise from the +<i>x</i> axis.  Negative\n * values for either <code>start</code> or <code>sweep</code> indicate\n * motion in a clockwise direction.\n * <include src=\"pictures/GObjectDiagrams/GArcGeometry.html\">\n */\nclass GArc : public GObject {\npublic:\n    /**\n     * Creates a new <code>GArc</code> object consisting of an elliptical arc.\n     * This form creates a <code>GArc</code> whose origin is the point (0, 0).\n     */\n    GArc(double width = 0, double height = 0, double start = 0, double sweep = 0);\n\n    /**\n     * Creates a new <code>GArc</code> object consisting of an elliptical arc.\n     * This form creates a <code>GArc</code> whose origin is the point\n     * (<code>x</code>, <code>y</code>).\n     */\n    GArc(double x, double y, double width, double height, double start, double sweep);\n\n    /* @inherit */\n    virtual bool contains(double x, double y) const Q_DECL_OVERRIDE;\n\n    /**\n     * Draws this arc on screen using the given Qt painter.\n     * @private\n     */\n    virtual void draw(QPainter* painter);\n\n    /* @inherit */\n    virtual GRectangle getBounds() const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns the point at which the arc ends.\n     */\n    virtual GPoint getEndPoint() const;\n\n    /**\n     * Returns the boundaries of the rectangle used to frame the arc.\n     */\n    virtual GRectangle getFrameRectangle() const;\n\n    /**\n     * Returns the starting angle for this arc in degrees.\n     */\n    virtual double getStartAngle() const;\n\n    /**\n     * Returns the point at which the arc starts.\n     */\n    virtual GPoint getStartPoint() const;\n\n    /**\n     * Returns the sweep angle for this arc in degrees.\n     */\n    virtual double getSweepAngle() const;\n\n    /* @inherit */\n    virtual std::string getType() const Q_DECL_OVERRIDE;\n\n    /**\n     * Changes the boundaries of the rectangle used to frame the arc.\n     */\n    virtual void setFrameRectangle(const GRectangle& rect);\n\n    /**\n     * Changes the boundaries of the rectangle used to frame the arc.\n     */\n    virtual void setFrameRectangle(double x, double y, double width, double height);\n\n    /**\n     * Sets the starting angle for this arc in degrees.\n     */\n    virtual void setStartAngle(double start);\n\n    /**\n     * Sets the sweep angle for this arc in degrees.\n     */\n    virtual void setSweepAngle(double start);\n\n    /* @inherit */\n    virtual std::string toStringExtra() const Q_DECL_OVERRIDE;\n\nprivate:\n    virtual bool containsAngle(double theta) const;\n    virtual GPoint getArcPoint(double theta) const;\n\n    /* Instance variables */\n    double _start;                   /* Starting angle of the arc       */\n    double _sweep;                   /* How many degrees the arc runs   */\n};\n\n/**\n * This graphical object subclass consists of a collection of other\n * graphical objects.  Once assembled, the internal objects can be manipulated\n * as a unit.  The compound keeps track of its own position, and all items\n * within it are drawn relative to that location.\n */\nclass GCompound : public GObject {\npublic:\n    /**\n     * Creates a compound with no internal components.\n     */\n    GCompound();\n\n    /**\n     * Adds a new graphical object to the compound, if that object was not\n     * already present in the compound.\n     * If the object is already stored in this compound, has no effect.\n     * @throw ErrorException if the object is null\n     */\n    virtual void add(GObject* gobj);\n\n    /**\n     * Adds a new graphical object to the compound, if that object was not\n     * already present in the compound.\n     * This form moves the object to the point (<code>x</code>, <code>y</code>) first.\n     * If the object is already stored in this compound, has no effect.\n     * @throw ErrorException if the object is null\n     */\n    virtual void add(GObject* gobj, double x, double y);\n\n    /**\n     * Adds a new graphical object to the compound.\n     */\n    virtual void add(GObject& gobj);\n\n    /**\n     * Adds a new graphical object to the compound, if that object was not\n     * already present in the compound.\n     * This form moves the object to the point (<code>x</code>, <code>y</code>) first.\n     * If the object is already stored in this compound, has no effect.\n     */\n    virtual void add(GObject& gobj, double x, double y);\n\n    /**\n     * Removes all graphical objects from the compound.\n     * Equivalent to removeAll.\n     */\n    virtual void clear();\n\n    /**\n     * Repaints the compound only if it needs to be repainted\n     * (if any of its contents have changed).\n     */\n    virtual void conditionalRepaint();\n\n    /**\n     * Repaints the given rectangular region of the compound only if it needs\n     * to be repainted (if any of its contents have changed).\n     */\n    virtual void conditionalRepaintRegion(int x, int y, int width, int height);\n\n    /**\n     * Repaints the given rectangular region of the compound only if it needs\n     * to be repainted (if any of its contents have changed).\n     */\n    virtual void conditionalRepaintRegion(const GRectangle& bounds);\n\n    /* @inherit */\n    virtual bool contains(double x, double y) const Q_DECL_OVERRIDE;\n\n    /**\n     * Draws all objects stored in this compound using the given painter pen.\n     * @private\n     */\n    virtual void draw(QPainter* painter);\n\n    /* @inherit */\n    virtual GRectangle getBounds() const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns a pointer to the graphical object at the specified index,\n     * numbering from back to front in the <i>z</i> dimension.\n     * @throw ErrorException if the index is out of range\n     */\n    virtual GObject* getElement(int index) const;\n\n    /**\n     * Returns a pointer to the first graphical object that contains the given\n     * (x, y) point, or a null pointer if no object in this compound touches it.\n     */\n    virtual GObject* getElementAt(double x, double y) const;\n\n    /**\n     * Returns the number of graphical objects stored in the compound.\n     */\n    virtual int getElementCount() const;\n\n    /* @inherit */\n    virtual std::string getType() const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns the Qt widget associated with this compound, or a null pointer\n     * if this compound is not associated with any widget.\n     * Initially a compound is not associated with any widget until the\n     * setWidget method is called.\n     * Clients generally do not need to use this method.\n     * @private\n     */\n    virtual QWidget* getWidget() const;\n\n    /**\n     * Returns whether the compound automatically repaints itself when its\n     * contents change.\n     */\n    virtual bool isAutoRepaint() const;\n\n    /**\n     * Returns true if the compound does not contain any graphical objects.\n     */\n    virtual bool isEmpty() const;\n\n    /**\n     * Removes the specified object from the compound.\n     * @throw ErrorException if the object is null\n     */\n    virtual void remove(GObject* gobj);\n\n    /**\n     * Removes the specified object from the compound.\n     */\n    virtual void remove(GObject& gobj);\n\n    /**\n     * Removes all graphical objects from the compound.\n     * Equivalent to clear.\n     */\n    virtual void removeAll();\n\n    /**\n     * Instructs the compound to redraw all of its graphical objects.\n     */\n    virtual void repaint();\n\n    /**\n     * Instructs the compound to redraw the given rectangular region within itself,\n     * including any graphical objects that touch that region.\n     */\n    virtual void repaintRegion(int x, int y, int width, int height);\n\n    /**\n     * Instructs the compound to redraw the given rectangular region within itself,\n     * including any graphical objects that touch that region.\n     */\n    virtual void repaintRegion(const GRectangle& bounds);\n\n    /**\n     * Sets whether the compound automatically repaints itself when its\n     * contents change.\n     */\n    virtual void setAutoRepaint(bool autoRepaint);\n\n    /**\n     * Sets the Qt widget associated with this compound, or a null pointer\n     * if this compound is not associated with any widget.\n     * Initially a compound is not associated with any widget until this\n     * Widget method is called.\n     * Clients generally do not need to use this method.\n     * @private\n     */\n    virtual void setWidget(QWidget* widget);\n\n    /* @inherit */\n    virtual std::string toString() const Q_DECL_OVERRIDE;\n\nprivate:\n    // methods to move an object in the z-ordering\n    void sendBackward(GObject* gobj);\n    void sendForward(GObject* gobj);\n    void sendToBack(GObject* gobj);\n    void sendToFront(GObject* gobj);\n    virtual int findGObject(GObject* gobj) const;\n    virtual void removeAt(int index);\n\n    // instance variables\n    Vector<GObject*> _contents;\n    QWidget* _widget = nullptr;    // widget containing this compound\n    bool _autoRepaint;   // automatically repaint on any change; default true\n\n    friend class GObject;\n};\n\n/**\n * This graphical object subclass represents an image from a file.\n */\nclass GImage : public GObject {\npublic:\n    /**\n     * Constructs a new image by loading the image from the specified file.\n     * By default, the upper left corner of the image appears at the origin,\n     * but you can pass coordinates to move it to the point\n     * (<code>x</code>, <code>y</code>).\n     * @throw ErrorException if the given file is not found or cannot be loaded\n     *        as a valid image file\n     */\n    GImage(const std::string& filename = \"\", double x = 0, double y = 0);\n\n    /**\n     * Constructs a new image by loading the image from the specified input stream.\n     * By default, the upper left corner of the image appears at the origin,\n     * but you can pass coordinates to move it to the point\n     * (<code>x</code>, <code>y</code>).\n     * @throw ErrorException if the given file is not found or cannot be loaded\n     *        as a valid image file\n     */\n    GImage(std::istream& source, double x = 0, double y = 0);\n\n    /**\n     * Creates a blank GImage of the given width and height.\n     * Called by GCanvas when converting to an image.\n     */\n    GImage(double width, double height);\n\n    /**\n     * Frees memory allocated internally by the image.\n     */\n    virtual ~GImage();\n\n\n\n    /**\n     * Draws this image on screen using the given Qt painter.\n     * @private\n     */\n    virtual void draw(QPainter* painter) Q_DECL_OVERRIDE;\n\n    /**\n     * Returns the file name used to load the image,\n     * as was passed to the constructor.\n     */\n    virtual std::string getFileName() const;\n\n    /**\n     * Returns the color of the pixel at the given x/y location as an RGB integer.\n     * @throw ErrorException if x/y is out of range\n     */\n    virtual int getPixel(int x, int y) const;\n\n    /* @inherit */\n    virtual std::string getType() const Q_DECL_OVERRIDE;\n\n    /**\n     * Sets the pixel at the given x/y location to the given color,\n     * represented as an RGB integer.\n     * @throw ErrorException if x/y is out of range\n     */\n    virtual void setPixel(int x, int y, int rgb);\n\n    /* @inherit */\n    virtual std::string toStringExtra() const Q_DECL_OVERRIDE;\n\nprotected:\n    /**\n     * Creates a GImage wrapping the given Qt image.\n     * Called by GCanvas when converting canvas to an image.\n     */\n    GImage(QImage* qimage);\n\n    /**\n     * Returns the inner Qt QImage object being wrapped.\n     */\n    QImage* getQImage() const;\n\nprivate:\n    /**\n     * Reads the image's pixel contents from the given file.\n     * @return true if loaded successfully and false if the load failed\n     */\n    bool load(const std::string& filename);\n\n    /**\n     * Reads the image's pixel contents from the given stream.\n     * @return true if loaded successfully and false if the load failed\n     */\n    bool loadFromStream(std::istream& input);\n\n    std::string _filename;\n    QImage* _qimage;\n\n    friend class GCanvas;\n    friend class GDiffImage;\n};\n\n/**\n * This graphical object subclass represents a line segment.\n */\nclass GLine : public GObject {\npublic:\n    /**\n     * Constructs a line segment from its endpoints.\n     * The point (<code>x0</code>,&nbsp;<code>y0</code>) defines the start of\n     * the line and the point (<code>x1</code>,&nbsp;<code>y1</code>) defines\n     * the end.\n     */\n    GLine(double x0 = 0, double y0 = 0, double x1 = 0, double y1 = 0, LineStyle lineStyle = LINE_SOLID);\n\n    /**\n     * Constructs a line segment from its endpoints.\n     * The point <code>p0</code> defines the start of the line and\n     * the point <code>p1</code> defines the end.\n     */\n    GLine(const GPoint& p0, const GPoint& p1);\n\n    /* @inherit */\n    virtual bool contains(double x, double y) const Q_DECL_OVERRIDE;\n\n    /**\n     * Draws this line on screen using the given Qt painter.\n     * @private\n     */\n    virtual void draw(QPainter* painter) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual GRectangle getBounds() const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns the point at which the line ends.\n     */\n    virtual GPoint getEndPoint() const;\n\n    /**\n     * Returns the x-coordinate of the point at which the line ends.\n     */\n    virtual double getEndX() const;\n\n    /**\n     * Returns the y-coordinate of the point at which the line ends.\n     */\n    virtual double getEndY() const;\n\n    /* @inherit */\n    virtual double getHeight() const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns the point at which the line starts.\n     * Equivalent to getLocation.\n     */\n    virtual GPoint getStartPoint() const;\n\n    /**\n     * Returns the x-coordinate of the point at which the line starts.\n     * Equivalent to getX.\n     */\n    virtual double getStartX() const;\n\n    /**\n     * Returns the y-coordinate of the point at which the line starts.\n     * Equivalent to getY.\n     */\n    virtual double getStartY() const;\n\n    /* @inherit */\n    virtual std::string getType() const Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual double getWidth() const Q_DECL_OVERRIDE;\n\n    /**\n     * Sets the end point in the line to (<code>x1</code>,&nbsp;<code>y1</code>),\n     * leaving the start point unchanged.  This method is therefore different from\n     * <code>setLocation</code>, which moves both components of the line segment.\n     */\n    virtual void setEndPoint(double x1, double y1);\n\n    /**\n     * Sets the end point in the line to p,\n     * leaving the start point unchanged.  This method is therefore different from\n     * <code>setLocation</code>, which moves both components of the line segment.\n     */\n    virtual void setEndPoint(const GPoint& p);\n\n    /**\n     * Sets this line's two end points to (x0, y0) and (x1, y1).\n     * The points are rearranged into x-major, y-minor order; that is, if\n     * x1 < x0 or (x1 == x0 and y1 < y0), the points are swapped.\n     * This is done to improve consistency when drawing lines.\n     */\n    virtual void setPoints(double x0, double y0, double x1, double y1);\n\n    /**\n     * Sets this line's two end points to p0 and p1.\n     * The points are rearranged into x-major, y-minor order; that is, if\n     * x1 < x0 or (x1 == x0 and y1 < y0), the points are swapped.\n     * This is done to improve consistency when drawing lines.\n     */\n    virtual void setPoints(const GPoint& p0, const GPoint& p1);\n\n    /**\n     * Sets the initial point in the line to (<code>x0</code>,&nbsp;<code>y0</code>),\n     * leaving the end point unchanged.  This method is therefore different from\n     * <code>setLocation</code>, which moves both components of the line segment.\n     */\n    virtual void setStartPoint(double x0, double y0);\n\n    /**\n     * Sets the initial point in the line to p,\n     * leaving the end point unchanged.  This method is therefore different from\n     * <code>setLocation</code>, which moves both components of the line segment.\n     */\n    virtual void setStartPoint(const GPoint& p);\n\n    /* @inherit */\n    virtual std::string toStringExtra() const Q_DECL_OVERRIDE;\n\nprotected:\n    /* Instance variables */\n    double _dx;   // the x displacement of the line\n    double _dy;   // the y displacement of the line\n};\n\n/**\n * This graphical object subclass represents an oval inscribed in\n * a rectangular box.\n */\nclass GOval : public GObject {\npublic:\n    /**\n     * Constructs a new oval inscribed in the specified rectangle.\n     * By default, the oval is positioned at the origin, but you can pass\n     * coordinates <code>x</code> and <code>y</code>.\n     */\n    GOval(double x = 0, double y = 0, double width = 0, double height = 0);\n\n    /* @inherit */\n    virtual bool contains(double x, double y) const Q_DECL_OVERRIDE;\n\n    /**\n     * Draws this oval on screen using the given Qt painter.\n     * @private\n     */\n    virtual void draw(QPainter* painter) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual std::string getType() const Q_DECL_OVERRIDE;\n};\n\n/**\n * This graphical object subclass represents a polygon bounded by\n * line segments.  The <code>GPolygon</code> constructor creates an\n * empty polygon.  To complete the figure, you need to add vertices\n * to the polygon using the methods <code>addVertex</code>,\n * <code>addEdge</code>, and <code>addPolarEdge</code>.\n */\nclass GPolygon : public GObject {\npublic:\n    /**\n     * Constructs a new empty polygon at the origin.\n     */\n    GPolygon();\n\n    /**\n     * Constructs a new polygon with the given vertex coordinates.\n     */\n    GPolygon(std::initializer_list<double> coords);\n    GPolygon(std::initializer_list<GPoint> points);\n\n    /**\n     * Adds an edge to the polygon whose components are given by the displacements\n     * <code>dx</code> and <code>dy</code> from the last vertex.\n     */\n    virtual void addEdge(double dx, double dy);\n\n    /**\n     * Adds an edge to the polygon where the displacements from the last vertex\n     * are specified as the x/y values of the given point.\n     */\n    virtual void addEdge(const GPoint& pt);\n\n    /**\n     * Adds multiple edges to the polygon whose components are given by the\n     * displacements <code>dx</code> and <code>dy</code> from the last vertex.\n     */\n    virtual void addEdges(std::initializer_list<double> coords);\n\n    /**\n     * Adds multiple edges to the polygon whose components are given by the\n     * displacements <code>dx</code> and <code>dy</code> from the last vertex.\n     */\n    virtual void addEdges(std::initializer_list<GPoint> points);\n\n    /**\n     * Adds an edge to the polygon specified in polar coordinates.\n     * The length of the edge is given by <code>r</code>, and the edge extends\n     * in direction <code>theta</code>, measured in degrees counterclockwise\n     * from the +x axis.\n     */\n    virtual void addPolarEdge(double r, double theta);\n\n    /**\n     * Adds a vertex at (<code>x</code>, <code>y</code>) relative to the polygon\n     * origin.\n     */\n    virtual void addVertex(double x, double y);\n\n    /**\n     * Adds a vertex at the given (<code>x</code>, <code>y</code>) point\n     * relative to the polygon origin.\n     */\n    virtual void addVertex(const GPoint& pt);\n\n    /**\n     * Adds multiple edges to the polygon whose components are given by the\n     * coordinates <code>dx</code> and <code>dy</code> relative to the polygon\n     * origin.\n     */\n    virtual void addVertexes(std::initializer_list<double> coords);\n\n    /**\n     * Adds multiple edges to the polygon whose components are given by the\n     * coordinates <code>dx</code> and <code>dy</code> relative to the polygon\n     * origin.\n     */\n    virtual void addVertexes(std::initializer_list<GPoint> points);\n\n    /**\n     * Removes all vertexes from the polygon.\n     */\n    virtual void clear();\n\n    /* @inherit */\n    virtual bool contains(double x, double y) const;\n\n    /**\n     * Draws this polygon on screen using the given Qt painter.\n     * @private\n     */\n    virtual void draw(QPainter* painter) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual GRectangle getBounds() const;\n\n    /* @inherit */\n    virtual double getHeight() const;\n\n    /* @inherit */\n    virtual std::string getType() const;\n\n    /**\n     * Returns the vertex at the given 0-based index in this polygon.\n     * @throws ErrorException if the index is out of bounds.\n     */\n    virtual GPoint getVertex(int i) const;\n\n    /**\n     * Returns the number of vertexes in this polygon.\n     */\n    virtual int getVertexCount() const;\n\n    /**\n     * Returns a vector of the points in the polygon.\n     */\n    virtual Vector<GPoint> getVertices() const;\n\n    /* @inherit */\n    virtual double getWidth() const;\n\n    /**\n     * Sets the vertex at the given 0-based index in this polygon to the\n     * given coordinates.\n     * @throws ErrorException if the index is out of bounds.\n     */\n    virtual void setVertex(int i, GPoint point);\n\n    /* @inherit */\n    virtual std::string toStringExtra() const;\n\nprivate:\n    /* Instance variables */\n    QVector<QPointF> _vertices;   // the vertices of the polygon\n    double _cx;                   // the most recent x coordinate\n    double _cy;                   // the most recent y coordinate\n};\n\n/**\n * A GRect is a graphical object whose appearance consists of\n * a rectangular box.\n */\nclass GRect : public GObject {\npublic:\n    /**\n     * Constructs a rectangle with the specified width and height.  The first\n     * form is positioned at the origin; the second at the coordinates\n     * given by <code>x</code> and <code>y</code>.\n     */\n    GRect(double x = 0, double y = 0, double width = 0, double height = 0);\n\n    /**\n     * Draws this rectangle on screen using the given Qt painter.\n     * @private\n     */\n    virtual void draw(QPainter* painter) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual std::string getType() const Q_DECL_OVERRIDE;\n};\n\n/**\n * A GRoundRect represents a graphical object whose appearance consists\n * of a rectangular box with rounded corners.\n */\nclass GRoundRect : public GRect {\npublic:\n    /**\n     * The default diameter of corners on rounded rectangles if none is\n     * supplied to the constructor.\n     */\n    static const double DEFAULT_CORNER;\n\n    /**\n     * Constructs a new rectangle with the specified width and height,\n     * located at (0, 0). The <code>corner</code> parameter specifies the\n     * diameter of the arc forming the corner.\n     */\n    GRoundRect(double width = 0, double height = 0, double corner = DEFAULT_CORNER);\n\n    /**\n     * Constructs a new rectangle with the specified width and height,\n     * with its top/left corner at (x, y).  The <code>corner</code> parameter\n     * specifies the diameter of the arc forming the corner.\n     */\n    GRoundRect(double x, double y, double width, double height, double corner = DEFAULT_CORNER);\n\n    /**\n     * Returns <code>true</code> if the specified point is inside the object.\n     */\n    virtual bool contains(double x, double y) const;\n\n    /**\n     * Draws this rectangle on screen using the given Qt painter.\n     * @private\n     */\n    virtual void draw(QPainter* painter) Q_DECL_OVERRIDE;\n\n    /**\n     * Returns the diameter of the arc forming the corner of this rounded\n     * rectangle.\n     */\n    virtual double getCorner() const;\n\n    /* @inherit */\n    virtual std::string getType() const Q_DECL_OVERRIDE;\n\n    /**\n     * Sets the diameter of the arc forming the corner of this rounded\n     * rectangle.\n     */\n    virtual void setCorner(double corner);\n\n    /* @inherit */\n    virtual std::string toStringExtra() const Q_DECL_OVERRIDE;\n\nprotected:\n    double _corner;\n};\n\n/**\n * This graphical object subclass represents a text string.\n *\n * Controlling the appearance and positioning of a <code>GText</code>\n * depends on understanding the following terms:\n *\n * <ul>\n *   <li>The <b><i>baseline</i></b> is the horizontal line on which the\n *       characters rest.\n *   <li>The <b><i>origin</i></b> is the point on the baseline at which\n *       the label begins.\n *   <li>The <b><i>height</i></b> is the distance that separate two\n *       successive lines.\n *   <li>The <b><i>ascent</i></b> is the maximum distance a character\n *       in this font extends above the baseline.\n *   <li>The <b><i>descent</i></b> is the maximum distance a character\n *       in this font extends below the baseline.\n * </ul>\n */\nclass GText : public GObject {\npublic:\n    /**\n     * The default font used in text labels if none is provided.\n     */\n    static const std::string DEFAULT_FONT;\n\n    /**\n     * Creates a <code>GText</code> object containing the specified string.\n     * By default, the baseline of the first character appears at the origin;\n     * the second form automatically resets the location of the\n     * <code>GText</code> to the point (<code>x</code>, <code>y</code>).\n     */\n    GText(const std::string& str = \"\", double x = 0, double y = 0);\n\n    /**\n     * Draws this text label on screen using the given Qt painter.\n     * @private\n     */\n    virtual void draw(QPainter* painter);\n\n    /* @inherit */\n    virtual GRectangle getBounds() const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns the current font for the label.\n     */\n    virtual std::string getFont() const;\n\n    /**\n     * Returns the maximum distance strings in this font extend above\n     * the baseline.\n     */\n    virtual double getFontAscent() const;\n\n    /**\n     * Returns the maximum distance strings in this font descend below\n     * the baseline.\n     */\n    virtual double getFontDescent() const;\n\n    /**\n     * Returns the string displayed by this object.\n     * Equivalent to getLabel.\n     */\n    virtual std::string getLabel() const;\n\n    /**\n     * Returns the string displayed by this object.\n     * Equivalent to getLabel.\n     */\n    virtual std::string getText() const;\n\n    /* @inherit */\n    virtual std::string getType() const Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void setFont(const QFont& font) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void setFont(const std::string& font) Q_DECL_OVERRIDE;\n\n    /**\n     * Changes the string stored within the text label, so that\n     * a new text string appears on the display.\n     * Equivalent to setText.\n     */\n    virtual void setLabel(const std::string& str);\n\n    /**\n     * Changes the string stored within the text label, so that\n     * a new text string appears on the display.\n     * Equivalent to setText.\n     */\n    virtual void setText(const std::string& str);\n\n    /* @inherit */\n    virtual std::string toStringExtra() const Q_DECL_OVERRIDE;\n\nprivate:\n    /* Instance variables */\n    std::string _text;   // the string displayed by the label\n    QFont _qfont;\n\n    // update width and height when font or text changes\n    void updateSize();\n};\n\n/**\n * Prints the given graphical object to an output stream.\n */\nstd::ostream& operator <<(std::ostream& out, const GObject& obj);\n\n#endif // _gobjects_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/gobservable.h",
    "content": "/*\n * File: gobservable.h\n * --------------------\n *\n * @author Marty Stepp\n * @version 2018/09/08\n * - added doc comments for new documentation generation\n * @version 2018/08/23\n * - renamed to gobservable.h to replace Java version\n * @version 2018/07/11\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n// signal that GUI system is in use (so it will be initialized)\n#define SPL_QT_GUI_IN_USE 1\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _gobservable_h\n#define _gobservable_h\n\n#include <functional>\n#include <string>\n#include <QObject>\n#include <QWidget>\n#include <QWindow>\n#include <QEvent>\n#include <QCloseEvent>\n#include <QKeyEvent>\n#include <QMouseEvent>\n#include <QResizeEvent>\n#include <QTimerEvent>\n#include <QWheelEvent>\n#include <QWindowStateChangeEvent>\n\n#define INTERNAL_INCLUDE 1\n#include \"gevent.h\"\n#define INTERNAL_INCLUDE 1\n#include \"map.h\"\n#undef INTERNAL_INCLUDE\n\nclass GInteractor;\nclass _Internal_QWidget;\n\n/**\n * A GObservable object is one that is able to send out events.\n * Listeners can register themselves to be notified when events occur.\n * This serves as a base class for the various GInteractor subclasses, as well\n * as for the GWindow class, so that clients can attach listeners to them.\n */\nclass GObservable {\npublic:\n    /**\n     * Initializes a newly created observable object.\n     */\n    GObservable();\n\n    /**\n     * Frees any memory used internally by the observable object.\n     */\n    virtual ~GObservable();\n\n    /**\n     * Returns true if the object is currently allowing itself to fire events.\n     * Initially this is true unless the client has called\n     * <code>setEventsEnabled(false)</code> or the object is not visible.\n     */\n    virtual bool eventsEnabled() const;\n\n    /**\n     * Returns the concrete type of the object as a string, such as\n     * <code>\"GButton\"</code> or <code>\"GWindow\"</code>.\n     * Each GObservable subtype must override this method.\n     */\n    virtual std::string getType() const = 0;\n\n    /**\n     * Sets whether the object is currently allowing itself to fire events.\n     * Initially this is true.\n     */\n    virtual void setEventsEnabled(bool eventsEnabled);\n\n    /**\n     * Returns a string representation of this observable object's state.\n     * Primarily used for debugging purposes.\n     */\n    virtual std::string toString() const;\n\nprotected:\n    /**\n     * Removes all event listeners from this object.\n     */\n    virtual void clearEventListeners();\n\n    /**\n     * Ensures that we are currently in the Qt GUI thread.\n     */\n    virtual void ensureThreadSafety(const std::string& memberName = \"\");\n\n    /**\n     * Sends out the given event to any attached listeners.\n     */\n    virtual void fireEvent(GEvent& event);\n\n    /**\n     * Creates an event of the given type, then sends it out to any\n     * attached listeners.\n     */\n    virtual void fireGEvent(QEvent* event, EventType eventType, const std::string& eventName);\n\n    /**\n     * Creates an event of the given type, then sends it out to any\n     * attached listeners.\n     */\n    virtual void fireGEvent(QCloseEvent* event, EventType eventType, const std::string& eventName);\n\n    /**\n     * Creates an event of the given type, then sends it out to any\n     * attached listeners.\n     */\n    virtual void fireGEvent(QKeyEvent* event, EventType eventType, const std::string& eventName);\n\n    /**\n     * Creates an event of the given type, then sends it out to any\n     * attached listeners.\n     */\n    virtual void fireGEvent(QMouseEvent* event, EventType eventType, const std::string& eventName, const std::string& actionCommand = \"\");\n\n    /**\n     * Creates an event of the given type, then sends it out to any\n     * attached listeners.\n     */\n    virtual void fireGEvent(QResizeEvent* event, EventType eventType, const std::string& eventName);\n\n    /**\n     * Creates an event of the given type, then sends it out to any\n     * attached listeners.\n     */\n    virtual void fireGEvent(QTimerEvent* event, EventType eventType, const std::string& eventName);\n\n    /**\n     * Creates an event of the given type, then sends it out to any\n     * attached listeners.\n     */\n    virtual void fireGEvent(QWheelEvent* event, EventType eventType, const std::string& eventName);\n\n    /**\n     * Creates an event of the given type, then sends it out to any\n     * attached listeners.\n     */\n    virtual void fireGEvent(QWindowStateChangeEvent* event, EventType eventType, const std::string& eventName);\n\n    /**\n     * Returns true if the observable object has a listener for the given type\n     * of event.\n     */\n    virtual bool hasEventListener(const std::string& eventName) const;\n\n    /**\n     * Returns true if the observable object has a listener for the given type\n     * of event.\n     * See gevent.h for event types and masks.\n     */\n    virtual bool isAcceptingEvent(int eventMask) const;\n\n    /**\n     * Returns true if the observable object has a listener for the given type\n     * of event.\n     */\n    virtual bool isAcceptingEvent(const GEvent& event) const;\n\n    /**\n     * Returns true if the observable object has a listener for the given type\n     * of event.\n     */\n    virtual bool isAcceptingEvent(const std::string& eventType) const;\n\n    /**\n     * Removes any event listener from this observable object that would respond\n     * to the given type of event, such as \"click\" or \"keydown\".\n     */\n    virtual void removeEventListener(const std::string& eventName);\n\n    /**\n     * Removes any event listener from this observable object that would respond\n     * to the given types of events, such as \"click\" or \"keydown\".\n     */\n    virtual void removeEventListeners(std::initializer_list<std::string> eventNames);\n\n    /**\n     * Adds an event listener from this observable object to respond\n     * to the given type of event, such as \"click\" or \"keydown\".\n     * Any prior listener for that type of event is replaced.\n     */\n    virtual void setEventListener(const std::string& eventName, GEventListener func);\n\n    /**\n     * Adds an event listener from this observable object to respond\n     * to the given type of event, such as \"click\" or \"keydown\".\n     * Any prior listener for that type of event is replaced.\n     */\n    virtual void setEventListener(const std::string& eventName, GEventListenerVoid func);\n\n    /**\n     * Adds an event listener from this observable object to respond\n     * to the given types of events, such as \"click\" or \"keydown\".\n     * Any prior listener for those types of event are replaced.\n     */\n    virtual void setEventListeners(std::initializer_list<std::string> eventNames, GEventListener func);\n\n    /**\n     * Adds an event listener from this observable object to respond\n     * to the given types of events, such as \"click\" or \"keydown\".\n     * Any prior listener for those types of event are replaced.\n     */\n    virtual void setEventListeners(std::initializer_list<std::string> eventNames, GEventListenerVoid func);\n\nprivate:\n    Map<std::string, GEvent::EventListenerWrapper> _eventMap;\n    bool _eventsEnabled;\n\n    // allow all interactors and their inner QWidgets to call observable methods\n    friend class GInteractor;\n    friend class _Internal_QWidget;\n};\n\n#endif // _gobservable_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/goptionpane.h",
    "content": "/*\n * File: goptionpane.h\n * -------------------\n *\n * @author Marty Stepp\n * @version 2018/09/23\n * - renamed enum constants to avoid name collisions (may break some client code)\n * @version 2018/09/08\n * - added doc comments for new documentation generation\n * @version 2018/08/23\n * - renamed to goptionpane.h to replace Java version\n * @version 2018/06/28\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n// signal that GUI system is in use (so it will be initialized)\n#define SPL_QT_GUI_IN_USE 1\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _goptionpane_h\n#define _goptionpane_h\n\n#include <string>\n\n#define INTERNAL_INCLUDE 1\n#include \"ginteractor.h\"\n#define INTERNAL_INCLUDE 1\n#include \"vector.h\"\n#undef INTERNAL_INCLUDE\n\n// forward declaration\nclass GWindow;\nclass GOptionPane;\n\n/**\n * This class provides static methods that pop up graphical input/output dialog\n * boxes on the screen.\n */\nclass GOptionPane {\npublic:\n    /**\n     * Types used by showConfirmDialog, representing the three kinds of\n     * confirmation dialogs: Yes/No, Yes/No/Cancel, or OK/Cancel.\n     */\n    enum ConfirmType {\n        CONFIRM_YES_NO = 0,\n        CONFIRM_YES_NO_CANCEL = 1,\n        CONFIRM_OK_CANCEL = 2\n    };\n\n    /**\n     * The various results that can be returned from some option dialogs.\n     * Note that NO has the value 0 and YES/OK have nonzero values, so you\n     * can use a ConfirmResult in a boolean context.\n     */\n    enum ConfirmResult {\n        CONFIRM_CANCEL = -1,   // for yes/no/cancel dialogs\n        CONFIRM_NO = 0,        // 0 so that 'no' is 'falsey'\n        CONFIRM_YES = 1,       // 1 so that 'yes' is 'truthy'\n        CONFIRM_OK = 2         // for ok/cancel dialogs\n    };\n\n    /**\n     * Types used by showMessageDialog, representing the various kinds of\n     * message dialogs.  The type often slightly varies the dialog's appearance,\n     * such as changing its icons or font.\n     */\n    enum MessageType {\n        MESSAGE_ERROR = 0,\n        MESSAGE_INFORMATION = 1,\n        MESSAGE_PLAIN = -1,\n        MESSAGE_WARNING = 2,\n        MESSAGE_QUESTION = 3,\n        MESSAGE_ABOUT = 4\n    };\n\n    /**\n     * Pops up a yes/no confirmation box.\n     * Once the user clicks a button to close the box, one of the\n     * GOptionPaneResult enumeration constants is returned.\n     * The caller can supply an optional window title; if none is passed, a default is used.\n     */\n    static ConfirmResult showConfirmDialog(const std::string& message,\n                                           const std::string& title = \"\",\n                                           ConfirmType type = CONFIRM_YES_NO);\n\n    /**\n     * Pops up a yes/no confirmation box.\n     * Once the user clicks a button to close the box, one of the\n     * GOptionPaneResult enumeration constants is returned.\n     * The caller can supply an optional window title; if none is passed, a default is used.\n     */\n    static ConfirmResult showConfirmDialog(GWindow* parent,\n                                           const std::string& message,\n                                           const std::string& title = \"\",\n                                           ConfirmType type = CONFIRM_YES_NO);\n\n    /**\n     * Pops up a yes/no confirmation box.\n     * Once the user clicks a button to close the box, one of the\n     * GOptionPaneResult enumeration constants is returned.\n     * The caller can supply an optional window title; if none is passed, a default is used.\n     */\n    static ConfirmResult showConfirmDialog(QWidget* parent,\n                                           const std::string& message,\n                                           const std::string& title = \"\",\n                                           ConfirmType type = CONFIRM_YES_NO);\n\n    /**\n     * Pops up an input box with a text field where the user can type a\n     * response, which is returned.\n     * The caller can supply an optional window title; if none is passed, a default is used.\n     * If the user cancels the box, an empty string is returned.\n     */\n    static std::string showInputDialog(const std::string& message,\n                                       const std::string& title = \"\",\n                                       const std::string& initialValue = \"\");\n\n    /**\n     * Pops up an input box with a text field where the user can type a\n     * response, which is returned.\n     * The caller can supply an optional window title; if none is passed, a default is used.\n     * If the user cancels the box, an empty string is returned.\n     */\n    static std::string showInputDialog(GWindow* parent,\n                                       const std::string& message,\n                                       const std::string& title = \"\",\n                                       const std::string& initialValue = \"\");\n\n    /**\n     * Pops up an input box with a text field where the user can type a\n     * response, which is returned.\n     * The caller can supply an optional window title; if none is passed, a default is used.\n     * If the user cancels the box, an empty string is returned.\n     */\n    static std::string showInputDialog(QWidget* parent,\n                                       const std::string& message,\n                                       const std::string& title = \"\",\n                                       const std::string& initialValue = \"\");\n\n    /**\n     * Displays an output message dialog to the user.\n     * The user must click the 'OK' button to close the dialog.\n     * The caller can supply an optional window title; if none is passed, a default is used.\n     * The optional 'type' parameter must be one of PLAIN_MESSAGE, INFORMATION_MESSAGE,\n     * WARNING_MESSAGE, or QUESTION_MESSAGE; this slightly affects the dialog's\n     * appearance.  The default is PLAIN_MESSAGE.\n     */\n    static void showMessageDialog(const std::string& message,\n                                  const std::string& title = \"\",\n                                  MessageType type = MESSAGE_PLAIN);\n\n    /**\n     * Displays an output message dialog to the user.\n     * The user must click the 'OK' button to close the dialog.\n     * The caller can supply an optional window title; if none is passed, a default is used.\n     * The optional 'type' parameter must be one of PLAIN_MESSAGE, INFORMATION_MESSAGE,\n     * WARNING_MESSAGE, or QUESTION_MESSAGE; this slightly affects the dialog's\n     * appearance.  The default is PLAIN_MESSAGE.\n     */\n    static void showMessageDialog(GWindow* parent,\n                                  const std::string& message,\n                                  const std::string& title = \"\",\n                                  MessageType type = MESSAGE_PLAIN);\n\n    /**\n     * Displays an output message dialog to the user.\n     * The user must click the 'OK' button to close the dialog.\n     * The caller can supply an optional window title; if none is passed, a default is used.\n     * The optional 'type' parameter must be one of PLAIN_MESSAGE, INFORMATION_MESSAGE,\n     * WARNING_MESSAGE, or QUESTION_MESSAGE; this slightly affects the dialog's\n     * appearance.  The default is PLAIN_MESSAGE.\n     */\n    static void showMessageDialog(QWidget* parent,\n                                  const std::string& message,\n                                  const std::string& title = \"\",\n                                  MessageType type = MESSAGE_PLAIN);\n\n    /**\n     * Shows a general input box with a set of buttons from which the user may\n     * choose one option.  The button the user clicks is returned as a string.\n     * If the user cancels the box, an empty string is returned.\n     * The caller can supply an optional window title; if none is passed, a default is used.\n     * The caller can supply an optional initially selected value from the list.\n     */\n    static std::string showOptionDialog(const std::string& message,\n                                        const Vector<std::string>& options,\n                                        const std::string& title = \"\",\n                                        const std::string& initiallySelected = \"\");\n\n    /**\n     * Shows a general input box with a set of buttons from which the user may\n     * choose one option.  The button the user clicks is returned as a string.\n     * If the user cancels the box, an empty string is returned.\n     * The caller can supply an optional window title; if none is passed, a default is used.\n     * The caller can supply an optional initially selected value from the list.\n     */\n    static std::string showOptionDialog(GWindow* parent,\n                                        const std::string& message,\n                                        const Vector<std::string>& options,\n                                        const std::string& title = \"\",\n                                        const std::string& initiallySelected = \"\");\n\n    /**\n     * Shows a general input box with a set of buttons from which the user may\n     * choose one option.  The button the user clicks is returned as a string.\n     * If the user cancels the box, an empty string is returned.\n     * The caller can supply an optional window title; if none is passed, a default is used.\n     * The caller can supply an optional initially selected value from the list.\n     */\n    static std::string showOptionDialog(QWidget* parent,\n                                        const std::string& message,\n                                        const Vector<std::string>& options,\n                                        const std::string& title = \"\",\n                                        const std::string& initiallySelected = \"\");\n\n    /**\n     * Displays the given text in a scrolling monospaced text area.\n     * rows/cols parameters control size to show; set to <= 0 for a default limit.\n     */\n    static void showTextFileDialog(const std::string& fileText,\n                                   const std::string& title = \"\",\n                                   int rows = -1, int cols = -1);\n\n    /**\n     * Displays the given text in a scrolling monospaced text area.\n     * rows/cols parameters control size to show; set to <= 0 for a default limit.\n     */\n    static void showTextFileDialog(GWindow* parent,\n                                   const std::string& fileText,\n                                   const std::string& title = \"\",\n                                   int rows = -1, int cols = -1);\n\n    /**\n     * Displays the given text in a scrolling monospaced text area.\n     * rows/cols parameters control size to show; set to <= 0 for a default limit.\n     */\n    static void showTextFileDialog(QWidget* parent,\n                                   const std::string& fileText,\n                                   const std::string& title = \"\",\n                                   int rows = -1, int cols = -1);\n\nprivate:\n    /**\n     * Private constructor so that clients don't try to construct\n     * GOptionPane objects.  The class is meant to be used via its\n     * static methods, not by instantiation.\n     */\n    GOptionPane();\n\n    /**\n     * The results that can come back from showConfirmDialog.\n     * These are converted into Result enum values.\n     */\n    enum InternalResult {\n        INTERNAL_CANCEL_OPTION = 2,\n        INTERNAL_CLOSED_OPTION = -1,\n        INTERNAL_NO_OPTION = 1,\n        INTERNAL_OK_OPTION = 0,\n        INTERNAL_YES_OPTION = 0\n    };\n};\n\n#endif // _goptionpane_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/gradiobutton.h",
    "content": "/*\n * File: gradiobutton.h\n * --------------------\n *\n * @author Marty Stepp\n * @version 2019/04/23\n * - added key event support\n * @version 2018/10/06\n * - added toggle()\n * @version 2018/09/08\n * - added doc comments for new documentation generation\n * @version 2018/09/04\n * - added double-click event support\n * @version 2018/08/23\n * - renamed to gradiobutton.h to replace Java version\n * @version 2018/06/29\n * - added change event\n * @version 2018/06/25\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n// signal that GUI system is in use (so it will be initialized)\n#define SPL_QT_GUI_IN_USE 1\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _gradiobutton_h\n#define _gradiobutton_h\n\n#include <string>\n#include <QWindow>\n#include <QEvent>\n#include <QButtonGroup>\n#include <QMouseEvent>\n#include <QRadioButton>\n#include <QSize>\n#include <QWidget>\n\n#define INTERNAL_INCLUDE 1\n#include \"ginteractor.h\"\n#define INTERNAL_INCLUDE 1\n#include \"map.h\"\n#undef INTERNAL_INCLUDE\n\nclass _Internal_QRadioButton;\n\n/**\n * This interactor subclass represents an onscreen radio button.\n * Radio buttons are round buttons that can be \"checked\" by clicking them.\n * A radio button differs from a checkbox in that it is often part of a mutually\n * exclusive group of options, where at most one of the buttons can be checked\n * at a time.  Clicking one radio button from a group checks it and also unchecks\n * any other checked radio button from that same group.\n *\n * You can listen for clicks on a radio button by setting an action listener,\n * passing the function you want to call on each click.\n */\nclass GRadioButton : public GInteractor {\npublic:\n    /**\n     * Creates a new radio button with the given text.\n     * You can pass a string representing a logical group of radio buttons;\n     * if you do, this radio button will be internally managed so that at most\n     * one radio button from that group will be checked at any given time.\n     * If no group is supplied, the radio button is put into a default group.\n     */\n    GRadioButton(const std::string& text = \"\", const std::string& group = \"default\", bool checked = false, QWidget* parent = nullptr);\n\n    /**\n     * Frees memory allocated internally by the radio button.\n     */\n    virtual ~GRadioButton() Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual std::string getActionCommand() const Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual _Internal_QWidget* getInternalWidget() const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns the text next to the radio button.\n     */\n    virtual std::string getText() const;\n\n    /* @inherit */\n    virtual std::string getType() const Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual QWidget* getWidget() const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns true if the radio button is currently checked.\n     * Equivalent to isSelected.\n     */\n    virtual bool isChecked() const;\n\n    /**\n     * Returns true if the radio button is currently checked.\n     * Equivalent to isChecked.\n     */\n    virtual bool isSelected() const;\n\n    /**\n     * Sets whether the radio button should be checked.\n     * Equivalent to setSelected.\n     */\n    virtual void setChecked(bool checked);\n\n    /**\n     * Sets whether the radio button should be checked.\n     * Equivalent to setChecked.\n     */\n    virtual void setSelected(bool selected);\n\n    /**\n     * Sets the text that will appear next to the radio button.\n     */\n    virtual void setText(const std::string& text);\n\n    /**\n     * Reverses the checked state of the button, setting it to be checked if it\n     * was unchecked or to be unchecked if it was checked.\n     */\n    virtual void toggle();\n\nprotected:\n    /**\n     * @private\n     */\n    virtual std::string getActionEventType() const Q_DECL_OVERRIDE;\n\nprivate:\n    Q_DISABLE_COPY(GRadioButton)\n\n    static Map<std::string, QButtonGroup*> _buttonGroups;\n    static QButtonGroup* getButtonGroup(const std::string& group);\n\n    _Internal_QRadioButton* _iqradioButton;\n\n    friend class _Internal_QRadioButton;\n};\n\n\n/**\n * Internal class; not to be used by clients.\n * @private\n */\nclass _Internal_QRadioButton : public QRadioButton, public _Internal_QWidget {\n    Q_OBJECT\n\npublic:\n    _Internal_QRadioButton(GRadioButton* gradioButton, bool checked = false, QWidget* parent = nullptr);\n    virtual void detach() Q_DECL_OVERRIDE;\n    virtual void keyPressEvent(QKeyEvent* event) Q_DECL_OVERRIDE;\n    virtual void keyReleaseEvent(QKeyEvent* event) Q_DECL_OVERRIDE;\n    virtual QSize sizeHint() const Q_DECL_OVERRIDE;\n\nsignals:\n    void doubleClicked();\n\npublic slots:\n    void handleClick();\n\nprotected:\n    void mouseDoubleClickEvent(QMouseEvent* e) Q_DECL_OVERRIDE;\n\nprivate:\n    GRadioButton* _gradioButton;\n\n    friend class GRadioButton;\n};\n\n#endif // _gradiobutton_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/gscrollbar.h",
    "content": "/*\n * File: qgscrollbar.h\n * -------------------\n *\n * @author Marty Stepp\n * @version 2018/09/08\n * - added doc comments for new documentation generation\n * @version 2018/08/23\n * - renamed to gscrollbar.h to replace Java version\n * @version 2018/07/16\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n// signal that GUI system is in use (so it will be initialized)\n#define SPL_QT_GUI_IN_USE 1\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _gscrollbar_h\n#define _gscrollbar_h\n\n#include <string>\n#include <QScrollBar>\n#include <QSize>\n#include <QWidget>\n\n#define INTERNAL_INCLUDE 1\n#include \"ginteractor.h\"\n#undef INTERNAL_INCLUDE\n\nclass _Internal_QScrollBar;\n\n/**\n * A GScrollBar represents a horizontal or vertical scroll bar that can be\n * dragged by the user.  The bar does not inherently cause any other interactor\n * to scroll itself.  If you want the bar to cause any effect, you must wait\n * for scroll events and respond to them.\n *\n * A given scroll bar has a range of values it can represent, with a min and max,\n * along with a current value.\n * The \"extent\" of a scrollbar represents the amount of the scrollbar in view.\n */\nclass GScrollBar : public GInteractor {\npublic:\n    /**\n     * The two valid orientations of scrollbars.\n     */\n    enum Orientation {\n        HORIZONTAL = 0,\n        VERTICAL   = 1\n    };\n\n    /**\n     * Creates a new scroll bar with the given orientation and value range.\n     * @throw ErrorException if min > max or value is not between min and max\n     */\n    GScrollBar(Orientation orientation = VERTICAL, int value = 0, int extent = 10, int min = 0, int max = 100, QWidget* parent = nullptr);\n\n    /**\n     * Frees memory allocated internally by the scroll bar.\n     */\n    virtual ~GScrollBar() Q_DECL_OVERRIDE;\n\n    /**\n     * Returns the scroll bar's extent, meaning the amount of its range that is\n     * currently in view.\n     */\n    virtual int getExtent() const;\n\n    /* @inherit */\n    virtual _Internal_QWidget* getInternalWidget() const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns the maximum allowed value of the scroll bar.\n     */\n    virtual int getMax() const;\n\n    /**\n     * Returns the minimum allowed value of the scroll bar.\n     */\n    virtual int getMin() const;\n\n    /**\n     * Returns the orientation of the scroll bar, either HORIZONTAL or VERTICAL.\n     */\n    virtual Orientation getOrientation() const;\n\n    /* @inherit */\n    virtual std::string getType() const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns the current value of the scroll bar.\n     */\n    virtual int getValue() const;\n\n    /* @inherit */\n    virtual QWidget* getWidget() const Q_DECL_OVERRIDE;\n\n    /**\n     * Sets the scroll bar's extent, meaning the amount of its range that is\n     * currently in view.\n     */\n    virtual void setExtent(int extent);\n\n    /**\n     * Sets the maximum allowed value of the scroll bar.\n     * @throw ErrorException if min > max\n     */\n    virtual void setMax(int max);\n\n    /**\n     * Sets the minimum allowed value of the scroll bar.\n     * @throw ErrorException if min > max\n     */\n    virtual void setMin(int min);\n\n    /**\n     * Sets all of the relevant state of the scroll bar.\n     * @throw ErrorException if min > max or value is not between min and max\n     */\n    virtual void setState(int value, int extent, int min, int max);\n\n    /**\n     * Sets the current value of the scroll bar.\n     * @throw ErrorException if value is not between min and max\n     */\n    virtual void setValue(int value);\n\nprotected:\n    /**\n     * @private\n     */\n    virtual std::string getActionEventType() const Q_DECL_OVERRIDE;\n\nprivate:\n    Q_DISABLE_COPY(GScrollBar)\n\n    _Internal_QScrollBar* _iqscrollbar;\n\n    friend class _Internal_QScrollBar;\n\n    void updateSize();\n};\n\n/**\n * Internal class; not to be used by clients.\n * @private\n */\nclass _Internal_QScrollBar : public QScrollBar, public _Internal_QWidget {\n    Q_OBJECT\n\npublic:\n    _Internal_QScrollBar(GScrollBar* qgscrollbar, Qt::Orientation orientation, QWidget* parent = nullptr);\n    virtual void detach() Q_DECL_OVERRIDE;\n    virtual QSize sizeHint() const Q_DECL_OVERRIDE;\n\npublic slots:\n    void handleValueChange(int value);\n\nprivate:\n    GScrollBar* _gscrollbar;\n\n    friend class GScrollBar;\n};\n\n#endif // _gscrollbar_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/gscrollpane.h",
    "content": "/*\n * File: gscrollpane.h\n * -------------------\n *\n * @author Marty Stepp\n * @version 2018/09/08\n * - added doc comments for new documentation generation\n * @version 2018/09/01\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n// signal that GUI system is in use (so it will be initialized)\n#define SPL_QT_GUI_IN_USE 1\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _gscrollpane_h\n#define _gscrollpane_h\n\n#include <QScrollArea>\n#include <QWidget>\n\n#define INTERNAL_INCLUDE 1\n#include \"ginteractor.h\"\n#undef INTERNAL_INCLUDE\n\nclass _Internal_QScrollArea;\n\n/**\n * A GScrollPane is a container that wraps another interactor with scroll bars.\n * It can be used to allow another interactor to be at its preferred size\n * (or some arbitrarily large size) while only occupying a smaller number of\n * onscreen pixels with vertical and/or horizontal scroll bars.\n */\nclass GScrollPane : public GInteractor {\npublic:\n    /**\n     * Constants to indicate whether scroll bars in each dimension should be\n     * always shown, never shown, or shown only if the inner interactor's size\n     * is large enough to require the scroll bar (default).\n     */\n    enum ScrollBarPolicy {\n        SCROLLBAR_AS_NEEDED,\n        SCROLLBAR_ALWAYS,\n        SCROLLBAR_NEVER\n    };\n\n    /**\n     * Creates a new scroll pane to scroll the given interactor.\n     * @throw ErrorException if the interactor is null\n     */\n    GScrollPane(GInteractor* interactor, QWidget* parent = nullptr);\n\n    /**\n     * Frees memory allocated internally by the scroll pane.\n     */\n    virtual ~GScrollPane() Q_DECL_OVERRIDE;\n\n    /**\n     * Returns a constant indicating whether the horizontal scroll bar will be shown.\n     */\n    virtual ScrollBarPolicy getHorizontalScrollBarPolicy() const;\n\n    /**\n     * Returns a constant indicating whether the vertical scroll bar will be shown.\n     */\n    virtual ScrollBarPolicy getVerticalScrollBarPolicy() const;\n\n    /**\n     * Returns the inner interactor being wrapped by this scroll pane.\n     */\n    virtual GInteractor* getInteractor() const;\n\n    /* @inherit */\n    virtual _Internal_QWidget* getInternalWidget() const Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual std::string getType() const Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual QWidget* getWidget() const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns true if the inner interactor should stretch itself to its\n     * preferred size.  Default true.\n     */\n    virtual bool isInteractorStretch() const;\n\n    /**\n     * Sets whether the horizontal scroll bar will be shown.\n     */\n    virtual void setHorizontalScrollBarPolicy(ScrollBarPolicy policy);\n\n    /**\n     * Sets whether the horizontal and vertical scroll bars will be shown.\n     */\n    virtual void setScrollBarPolicy(ScrollBarPolicy policy);\n\n    /**\n     * Sets whether the vertical scroll bar will be shown.\n     */\n    virtual void setVerticalScrollBarPolicy(ScrollBarPolicy policy);\n\n    /**\n     * Sets whether the inner interactor should stretch itself to its\n     * preferred size.  Default true.\n     */\n    virtual void setInteractorStretch(bool stretch);\n\nprivate:\n    Q_DISABLE_COPY(GScrollPane)\n\n    _Internal_QScrollArea* _iqscrollarea;\n    GInteractor* _interactor;\n    ScrollBarPolicy _horizontalScrollBarPolicy;\n    ScrollBarPolicy _verticalScrollBarPolicy;\n\n    friend class _Internal_QScrollArea;\n\n    static Qt::ScrollBarPolicy toQtScrollBarPolicy(ScrollBarPolicy policy);\n};\n\n/**\n * Internal class; not to be used by clients.\n * @private\n */\nclass _Internal_QScrollArea : public QScrollArea, public _Internal_QWidget {\n    Q_OBJECT\n\npublic:\n    _Internal_QScrollArea(GScrollPane* gscrollpane, QWidget* parent = nullptr);\n    virtual QSize sizeHint() const Q_DECL_OVERRIDE;\n\n// private:\n    // GScrollPane* _gscrollpane;\n};\n\n#endif // _gscrollpane_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/gslider.h",
    "content": "/*\n * File: gslider.h\n * ---------------\n *\n * @author Marty Stepp\n * @version 2019/04/23\n * - added key events\n * @version 2018/09/08\n * - added doc comments for new documentation generation\n * @version 2018/08/23\n * - renamed to gslider.h to replace Java version\n * @version 2018/06/29\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n// signal that GUI system is in use (so it will be initialized)\n#define SPL_QT_GUI_IN_USE 1\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _gslider_h\n#define _gslider_h\n\n#include <string>\n#include <QSize>\n#include <QSlider>\n#include <QWidget>\n\n#define INTERNAL_INCLUDE 1\n#include \"ginteractor.h\"\n#undef INTERNAL_INCLUDE\n\nclass _Internal_QSlider;\n\n/**\n * This interactor subclass represents an onscreen slider.\n * Dragging the slider control generates action events.\n */\nclass GSlider : public GInteractor {\npublic:\n    /**\n     * The two valid orientations of sliders.\n     */\n    enum Orientation {\n        HORIZONTAL = 0,\n        VERTICAL   = 1\n    };\n\n    /**\n     * Default minimum value for a slider (0).\n     */\n    static const int DEFAULT_MIN_VALUE;\n\n    /**\n     * Default maximum value for a slider (100).\n     */\n    static const int DEFAULT_MAX_VALUE;\n\n    /**\n     * Default initial value for a slider (50).\n     */\n    static const int DEFAULT_INITIAL_VALUE;\n\n    /**\n     * Creates a new horizontal slider with the given value range.\n     * @throw ErrorException if min > max or value is not between min and max\n     */\n    GSlider(int min = 0, int max = 100, int value = 50, QWidget* parent = nullptr);\n\n    /**\n     * Creates a new horizontal or vertical slider with the given value range.\n     * @throw ErrorException if min > max or value is not between min and max\n     */\n    GSlider(Orientation orientation, int min = 0, int max = 100, int value = 50, QWidget* parent = nullptr);\n\n    /**\n     * Frees memory allocated internally by the slider.\n     */\n    virtual ~GSlider() Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual _Internal_QWidget* getInternalWidget() const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns the number of pixels of spacing between ticks on the slider.\n     * @private\n     */\n    virtual int getMajorTickSpacing() const;\n\n    /**\n     * Returns the maximum allowed value of the slider.\n     */\n    virtual int getMax() const;\n\n    /**\n     * Returns the minimum allowed value of the slider.\n     */\n    virtual int getMin() const;\n\n    /**\n     * Returns the number of pixels of spacing between small ticks on the slider.\n     * @private\n     */\n    virtual int getMinorTickSpacing() const;\n\n    /**\n     * Returns the orientation of the slider, either HORIZONTAL or VERTICAL.\n     */\n    virtual Orientation getOrientation() const;\n\n    /**\n     * Returns whether the slider paints text labels at regular increments.\n     * Default false.\n     * @private\n     */\n    virtual bool getPaintLabels() const;\n\n    /**\n     * Returns whether the slider paints tick marks at regular increments.\n     * @private\n     */\n    virtual bool getPaintTicks() const;\n\n    /**\n     * Returns whether the slider's cursor will be constrained to stop only at\n     * its tick marks.\n     * @private\n     */\n    virtual bool getSnapToTicks() const;\n\n    /* @inherit */\n    virtual std::string getType() const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns the slider's current value.\n     */\n    virtual int getValue() const;\n\n    /* @inherit */\n    virtual QWidget* getWidget() const Q_DECL_OVERRIDE;\n\n    /**\n     * Sets the number of pixels of spacing between ticks on the slider.\n     * @private\n     */\n    virtual void setMajorTickSpacing(int value);\n\n    /**\n     * Sets the maximum allowed value of the slider.\n     * @throw ErrorException if min > max\n     */\n    virtual void setMax(int max);\n\n    /**\n     * Sets the minimum allowed value of the slider.\n     * @throw ErrorException if min > max\n     */\n    virtual void setMin(int min);\n\n    /**\n     * Sets the number of pixels of spacing between small ticks on the slider.\n     * @private\n     */\n    virtual void setMinorTickSpacing(int value);\n\n    /**\n     * Sets whether the slider paints text labels at regular increments.\n     * Default false.\n     * @private\n     */\n    virtual void setPaintLabels(bool value);\n\n    /**\n     * Sets whether the slider paints tick marks at regular increments.\n     * @private\n     */\n    virtual void setPaintTicks(bool value);\n\n    /**\n     * Sets the min-max range of the slider.\n     * @throw ErrorException if min > max or value is not between min and max\n     */\n    virtual void setRange(int min, int max);\n\n    /**\n     * Sets whether the slider's cursor will be constrained to stop only at\n     * its tick marks.\n     * @private\n     */\n    virtual void setSnapToTicks(bool value);\n\n    /**\n     * Sets all of the relevant state of the slider.\n     * @throw ErrorException if min > max or value is not between min and max\n     */\n    virtual void setState(int min, int max, int value);\n\n    /**\n     * Sets the current value of the slider.\n     * @throw ErrorException if value is not between min and max\n     */\n    virtual void setValue(int value);\n\nprotected:\n    /**\n     * @private\n     */\n    virtual std::string getActionEventType() const Q_DECL_OVERRIDE;\n\nprivate:\n    Q_DISABLE_COPY(GSlider)\n\n    _Internal_QSlider* _iqslider;\n\n    friend class _Internal_QSlider;\n};\n\n/**\n * Internal class; not to be used by clients.\n * @private\n */\nclass _Internal_QSlider : public QSlider, public _Internal_QWidget {\n    Q_OBJECT\n\npublic:\n    _Internal_QSlider(GSlider* qgslider, Qt::Orientation orientation = Qt::Horizontal, QWidget* parent = nullptr);\n    virtual void detach() Q_DECL_OVERRIDE;\n    virtual void keyPressEvent(QKeyEvent* event) Q_DECL_OVERRIDE;\n    virtual void keyReleaseEvent(QKeyEvent* event) Q_DECL_OVERRIDE;\n    virtual QSize sizeHint() const Q_DECL_OVERRIDE;\n\npublic slots:\n    void handleChange(int value);\n\nprivate:\n    GSlider* _gslider;\n\n    friend class GSlider;\n};\n\n#endif // _gslider_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/gspacer.h",
    "content": "/*\n * File: gspacer.h\n * ---------------\n *\n * A GSpacer is just an empty blob of space that helps you pad layouts.\n *\n * @author Marty Stepp\n * @version 2018/10/06\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n// signal that GUI system is in use (so it will be initialized)\n#define SPL_QT_GUI_IN_USE 1\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _gspacer_h\n#define _gspacer_h\n\n#include <QWidget>\n\n#define INTERNAL_INCLUDE 1\n#include \"ginteractor.h\"\n#undef INTERNAL_INCLUDE\n\nclass _Internal_QSpacer;\n\n/**\n * A GSpacer is just an empty blob of space that helps you pad layouts.\n */\nclass GSpacer : public GInteractor {\npublic:\n    GSpacer(double width, double height, QWidget* parent = nullptr);\n\n    /**\n     * Frees memory allocated internally by the scroll pane.\n     */\n    virtual ~GSpacer() Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual _Internal_QWidget* getInternalWidget() const Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual std::string getType() const Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual QWidget* getWidget() const Q_DECL_OVERRIDE;\n\nprivate:\n    Q_DISABLE_COPY(GSpacer)\n\n    _Internal_QSpacer* _iqspacer;\n\n    friend class _Internal_QSpacer;\n};\n\n\n/**\n * Internal class; not to be used by clients.\n * @private\n */\nclass _Internal_QSpacer : public QWidget, public _Internal_QWidget {\n    Q_OBJECT\n\npublic:\n    _Internal_QSpacer(GSpacer* gspacer, double width, double height, QWidget* parent = nullptr);\n    virtual QSize sizeHint() const Q_DECL_OVERRIDE;\n\n// private:\n    // GSpacer* _gspacer;\n};\n\n#endif // _gspacer_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/gtable.h",
    "content": "/*\n * File: gtable.h\n * --------------\n * This file exports the GTable class for a graphical editable 2D table.\n *\n * @author Marty Stepp\n * @version 2018/08/23\n * - renamed to gtable.h to replace Java version\n * @version 2018/07/17\n * - initial version, based on gtable.h\n * @since 2018/07/17\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n// signal that GUI system is in use (so it will be initialized)\n#define SPL_QT_GUI_IN_USE 1\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _gtable_h\n#define _gtable_h\n\n#include <string>\n#include <QAbstractItemModel>\n#include <QBrush>\n#include <QFont>\n#include <QItemSelection>\n#include <QStyledItemDelegate>\n#include <QWidget>\n#include <QTableWidget>\n\n#define INTERNAL_INCLUDE 1\n#include \"grid.h\"\n#define INTERNAL_INCLUDE 1\n#include \"map.h\"\n#define INTERNAL_INCLUDE 1\n#include \"ginteractor.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gobjects.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gtypes.h\"\n#undef INTERNAL_INCLUDE\n\nclass _Internal_QTableWidget;\n\n/**\n * A GTable represents a graphical editable 2D table, like a mediocre facsimile\n * of an Excel spreadsheet.\n *\n * After creating a GTable, you can listen for table events to be notified\n * when the user types a new value into a table cell by calling setTableListener.\n *\n * An editable table has a semi-complex editing model where the user can begin\n * modifying a cell by highlighting it and typing, which replaces the existing\n * value, or by double-clicking it, which edits the existing value.\n * You can also press F2 on a cell to edit it, equivalent to a double-click.\n * During editing, you can press Esc to cancel editing, or Tab or Enter to\n * complete editing and move to the next cell.\n *\n * All row/column indexes in this class are 0-based.\n */\nclass GTable : public GInteractor {\npublic:\n    /**\n     * Styles of column header labels that can be shown.\n     * The \"Excel\" style is to use column names A-Z, then AA-AZ, BA-BZ, ...,\n     * ZA-ZZ, then AAA, AAB, and so on.\n     * The \"numeric\" style is to use simple numbers like 1, 2, 3, ...\n     * The \"none\" style means not to use any column headers at all.\n     */\n    enum ColumnHeaderStyle {\n        COLUMN_HEADER_NONE,     // headers will not show\n        COLUMN_HEADER_EXCEL,    // A, B, ..., Z, AA, AB, ...\n        COLUMN_HEADER_NUMERIC   // 1, 2, 3, ...\n    };\n\n    /**\n     * Constructs a new table with the given dimensions and (optional) size.\n     * If x, y, width, or height are omitted, they are set automatically by\n     * the layout manager of the GWindow into which the table is placed.\n     * This is often what you want.\n     * @throw ErrorException if the number of rows, columns, width, or height is negative.\n     */\n    GTable(int rows = 0, int columns = 0, double width = 0, double height = 0,\n            QWidget* parent = nullptr);\n\n    virtual ~GTable() Q_DECL_OVERRIDE;\n\n    /**\n     * Changes widths of all columns to be perfectly large enough\n     * to fit their contents.\n     */\n    virtual void autofitColumnWidths();\n\n    /**\n     * Sets all cells in the table to store an empty string value.\n     */\n    virtual void clear();\n\n    /**\n     * Sets the given cell to store an empty string value.\n     * @throw ErrorException if the given row/column index is out of bounds\n     */\n    virtual void clearCell(int row, int column);\n\n    /**\n     * Removes any per-cell/column/row formatting that has been applied to the table.\n     */\n    virtual void clearFormatting();\n\n    /**\n     * Removes any formatting that has been applied to the given cell.\n     */\n    virtual void clearCellFormatting(int row, int column);\n\n    /**\n     * Deselects any currently selected cell.\n     * If no cell is selected, calling this has no effect.\n     */\n    virtual void clearSelection();\n\n    /**\n     * Sets every cell in the table to have the given value.\n     */\n    virtual void fill(const std::string& text);\n\n    /**\n     * Returns the text stored in the given cell.\n     * @throw ErrorException if the given row or column are out of bounds\n     */\n    virtual std::string get(int row, int column) const;\n\n    /**\n     * Returns the column headers to use the given style.\n     * Default is none, but can be set to Excel style or numeric instead.\n     */\n    virtual ColumnHeaderStyle getColumnHeaderStyle() const;\n\n    /**\n     * Returns the width of the given column index in pixels.\n     * When a table is constructed, all columns initially have equal width.\n     * @throw ErrorException if the given column index is out of bounds\n     */\n    virtual double getColumnWidth(int column) const;\n\n    /* @inherit */\n    virtual _Internal_QWidget* getInternalWidget() const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns the height of the given row index in pixels.\n     * When a table is constructed, all rows initially have equal height.\n     * @throw ErrorException if the given row index is out of bounds\n     */\n    virtual double getRowHeight(int row) const;\n\n    /**\n     * Returns the row and column of the cell that is currently selected.\n     * Sets both row and column to -1 if no cell is currently selected.\n     */\n    virtual GridLocation getSelectedCell() const;\n\n    /**\n     * Returns the row and column of the cell that is currently selected\n     * by filling the given reference parameters.\n     * Sets both row and column to -1 if no cell is currently selected.\n     */\n    virtual void getSelectedCell(int& row, int& column) const;\n\n    /**\n     * Returns the text in the cell that is currently selected.\n     * If no cell is currently selected, returns an empty string.\n     */\n    virtual std::string getSelectedCellValue() const;\n\n    /**\n     * Returns the column of the cell that is currently selected, or -1 if no cell\n     * is currently selected.\n     */\n    virtual int getSelectedColumn() const;\n\n    /**\n     * Returns the row of the cell that is currently selected, or -1 if no cell\n     * is currently selected.\n     */\n    virtual int getSelectedRow() const;\n\n    /* @inherit */\n    virtual std::string getType() const Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual QWidget* getWidget() const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns true if a cell is currently selected.\n     */\n    virtual bool hasSelectedCell() const;\n\n    /**\n     * Returns the number of rows in the table.\n     * Equivalent to numRows().\n     */\n    virtual int height() const;\n\n    /**\n     * Returns true if the given 0-based row/column index is within the bounds\n     * of the table.  In other words, whether the index is between (0, 0)\n     * and (numRows-1, numCols-1) inclusive.\n     */\n    virtual bool inTableBounds(int row, int column) const;\n\n    /**\n     * Returns whether cells of the table can be edited.\n     * Defaults to true when a table is initially created.\n     */\n    virtual bool isEditable() const;\n\n    /**\n     * Returns the number of columns in the table.\n     * Equivalent to width().\n     */\n    virtual int numCols() const;\n\n    /**\n     * Returns the number of rows in the table.\n     * Equivalent to height().\n     */\n    virtual int numRows() const;\n\n    /**\n     * Removes the table listener from this button so that it will no longer\n     * call it when events occur.\n     */\n    virtual void removeTableListener();\n\n    /* @inherit */\n    virtual void requestFocus() Q_DECL_OVERRIDE;\n\n    /**\n     * Modifies the table to have the given number of rows and columns.\n     * Any existing data is retained, and any new cells are empty.\n     * @throw ErrorException if numRows or numCols is negative\n     */\n    virtual void resize(int numRows, int numCols);\n\n    /**\n     * Returns whether row and column headers are shown in the table.\n     * Initially false.\n     */\n    virtual bool rowColumnHeadersVisible() const;\n\n    /**\n     * Sets the given cell to become currently selected,\n     * replacing any previous selection.\n     * Note that the user can click a different cell to select it afterward.\n     * To indicate that you do not want to select any cell, call clearSelection.\n     * @throw ErrorException if the given row or column are out of bounds\n     */\n    virtual void select(int row, int column);\n\n    /**\n     * Modifies the value in the given cell to store the given text.\n     * @throw ErrorException if the given row or column are out of bounds\n     */\n    virtual void set(int row, int column, const std::string& text);\n\n    /**\n     * Sets the background color that appears behind each cell.\n     * See gcolor.h for more detail about colors.\n     */\n    virtual void setBackground(int rgb) Q_DECL_OVERRIDE;\n\n    /**\n     * Sets the background color that appears behind each cell.\n     * See gcolor.h for more detail about colors.\n     */\n    virtual void setBackground(const std::string& color) Q_DECL_OVERRIDE;\n\n    /**\n     * Sets the horizontal alignment of the given cell.\n     * The row/column is specified by a 0-based row/column index from the top/left of the table.\n     * @throw ErrorException if the given row/column index is out of bounds\n     */\n    virtual void setCellAlignment(int row, int column, HorizontalAlignment alignment);\n\n    /**\n     * Sets the background color of the given cell to the given color.\n     * The row/column is specified by a 0-based row/column index from the top/left of the table.\n     * See gcolor.h for more detail about colors.\n     * @throw ErrorException if the given row/column index is out of bounds\n     */\n    virtual void setCellBackground(int row, int column, int color);\n\n    /**\n     * Sets the background color of the given cell to the given color.\n     * The row/column is specified by a 0-based row/column index from the top/left of the table.\n     * See gcolor.h for more detail about colors.\n     * @throw ErrorException if the given row/column index is out of bounds\n     */\n    virtual void setCellBackground(int row, int column, const std::string& color);\n\n    /**\n     * Sets the text font of the given cell to the given RGB color.\n     * The row/column is specified by a 0-based row/column index from the top/left of the table.\n     * See gcolor.h for more detail about colors.\n     * @throw ErrorException if the given row/column index is out of bounds\n     */\n    virtual void setCellFont(int row, int column, const std::string& font);\n\n    /**\n     * Sets the foreground/text color of the given cell to the given color.\n     * The row/column is specified by a 0-based row/column index from the top/left of the table.\n     * See gcolor.h for more detail about colors.\n     * @throw ErrorException if the given row/column index is out of bounds\n     */\n    virtual void setCellForeground(int row, int column, int color);\n\n    /**\n     * Sets the foreground/text color of the given cell to the given color.\n     * The row/column is specified by a 0-based row/column index from the top/left of the table.\n     * See gcolor.h for more detail about colors.\n     * @throw ErrorException if the given row/column index is out of bounds\n     */\n    virtual void setCellForeground(int row, int column, const std::string& color);\n\n    /**\n     * Sets the color used for the text of each cell.\n     * Equivalent to setForeground.\n     * See gcolor.h for more detail about colors.\n     */\n    virtual void setColor(int rgb) Q_DECL_OVERRIDE;\n\n    /**\n     * Sets the color used for the text of each cell.\n     * Equivalent to setForeground.\n     * See gcolor.h for more detail about colors.\n     */\n    virtual void setColor(const std::string& color) Q_DECL_OVERRIDE;\n\n    /**\n     * Sets the horizontal alignment of the given column.\n     * The column is specified by a 0-based column index from the left of the table.\n     * @throw ErrorException if the given column index is out of bounds\n     */\n    virtual void setColumnAlignment(int column, HorizontalAlignment alignment);\n\n    /**\n     * Sets the background color of the given column to the given color.\n     * The column is specified by a 0-based column index from the left of the table.\n     * See gcolor.h for more detail about colors.\n     * @throw ErrorException if the given column index is out of bounds\n     */\n    virtual void setColumnBackground(int column, int color);\n\n    /**\n     * Sets the background color of the given column to the given color.\n     * The column is specified by a 0-based column index from the left of the table.\n     * See gcolor.h for more detail about colors.\n     * @throw ErrorException if the given column index is out of bounds\n     */\n    virtual void setColumnBackground(int column, const std::string& color);\n\n    /**\n     * Sets the text font of the given column to the given RGB color.\n     * The column is specified by a 0-based column index from the left of the table.\n     * See gcolor.h for more detail about colors.\n     * @throw ErrorException if the given column index is out of bounds\n     */\n    virtual void setColumnFont(int column, const std::string& font);\n\n    /**\n     * Sets the foreground/text color of the given column to the given color.\n     * The column is specified by a 0-based column index from the left of the table.\n     * See gcolor.h for more detail about colors.\n     * @throw ErrorException if the given column index is out of bounds\n     */\n    virtual void setColumnForeground(int column, int color);\n\n    /**\n     * Sets the foreground/text color of the given column to the given color.\n     * The column is specified by a 0-based column index from the left of the table.\n     * See gcolor.h for more detail about colors.\n     * @throw ErrorException if the given column index is out of bounds\n     */\n    virtual void setColumnForeground(int column, const std::string& color);\n\n    /**\n     * Sets the given column index to have the given width in pixels.\n     * @throw ErrorException if the given column index is out of bounds\n     *        or if the width is negative\n     */\n    virtual void setColumnWidth(int column, double width);\n\n    /**\n     * Sets the column headers to use the given style.\n     * Default is none, but can be set to Excel style or numeric instead.\n     */\n    virtual void setColumnHeaderStyle(ColumnHeaderStyle style);\n\n    /**\n     * Sets whether cells of the table can be edited.\n     * Initially true.\n     */\n    virtual void setEditable(bool editable);\n\n    /**\n     * Modifies the value in the cell that is currently being edited to store\n     * the given text. This does not modify the value in the table cell but\n     * merely the value in the editor widget.\n     * @throw ErrorException if the given row or column are out of bounds\n     */\n    virtual void setEditorValue(int row, int column, const std::string& text);\n\n    /**\n     * Sets the font used to display each cell's text.\n     */\n    virtual void setFont(const QFont& font) Q_DECL_OVERRIDE;\n\n    /**\n     * Sets the font used to display each cell's text.\n     * See gfont.h for more detail about fonts.\n     */\n    virtual void setFont(const std::string& font) Q_DECL_OVERRIDE;\n\n    /**\n     * Sets the color used for the text of each cell.\n     * Equivalent to setColor.\n     * See gcolor.h for more detail about colors.\n     */\n    virtual void setForeground(int rgb) Q_DECL_OVERRIDE;\n\n    /**\n     * Sets the color used for the text of each cell.\n     * Equivalent to setColor.\n     * See gcolor.h for more detail about colors.\n     */\n    virtual void setForeground(const std::string& color) Q_DECL_OVERRIDE;\n\n    /**\n     * Sets the horizontal alignment of the text in all cells in the table.\n     * The alignment can be LEFT, CENTER, or RIGHT and is initially LEFT.\n     */\n    virtual void setHorizontalAlignment(HorizontalAlignment alignment);\n\n    /**\n     * Sets the horizontal alignment of the given row.\n     * The row is specified by a 0-based row index from the top of the table.\n     * @throw ErrorException if the given row index is out of bounds\n     */\n    virtual void setRowAlignment(int row, HorizontalAlignment alignment);\n\n    /**\n     * Sets the background color of the given row to the given RGB color.\n     * The row is specified by a 0-based row index from the top of the table.\n     * See gcolor.h for more detail about colors.\n     * @throw ErrorException if the given row index is out of bounds\n     */\n    virtual void setRowBackground(int row, int rgb);\n\n    /**\n     * Sets the background color of the given row to the given color.\n     * The row is specified by a 0-based row index from the top of the table.\n     * See gcolor.h for more detail about colors.\n     * @throw ErrorException if the given row index is out of bounds\n     */\n    virtual void setRowBackground(int row, const std::string& color);\n\n    /**\n     * Sets the text font of the given row to the given font.\n     * The row is specified by a 0-based row index from the top of the table.\n     * See gfont.h for more detail about fonts.\n     * @throw ErrorException if the given row index is out of bounds\n     */\n    virtual void setRowFont(int row, const std::string& font);\n\n    /**\n     * Sets the foreground/text color of the given row to the given color.\n     * The row is specified by a 0-based row index from the top of the table.\n     * See gcolor.h for more detail about colors.\n     * @throw ErrorException if the given row index is out of bounds\n     */\n    virtual void setRowForeground(int row, int rgb);\n\n    /**\n     * Sets the foreground/text color of the given row to the given color.\n     * The row is specified by a 0-based row index from the top of the table.\n     * See gcolor.h for more detail about colors.\n     * @throw ErrorException if the given row index is out of bounds\n     */\n    virtual void setRowForeground(int row, const std::string& color);\n\n    /**\n     * Sets whether row and column headers should be shown in the table.\n     * Initially false.\n     */\n    virtual void setRowColumnHeadersVisible(bool visible);\n\n    /**\n     * Sets the given row index to have the given height in pixels.\n     * @throw ErrorException if the given row index is out of bounds\n     *        or if the height is negative\n     */\n    virtual void setRowHeight(int row, double width);\n\n    /**\n     * Sets the text in the cell that is currently selected.\n     * If no cell is currently selected, does nothing.\n     */\n    virtual void setSelectedCellValue(const std::string& text);\n\n    /**\n     * Sets the given function to be called when events occur in this table.\n     * Any existing table listener will be replaced.\n     */\n    virtual void setTableListener(GEventListener func);\n\n    /**\n     * Sets the given function to be called when events occur in this table.\n     * Any existing table listener will be replaced.\n     */\n    virtual void setTableListener(GEventListenerVoid func);\n\n    /**\n     * Returns the number of columns in the table.\n     * Equivalent to numCols().\n     */\n    virtual int width() const;\n\nprivate:\n    Q_DISABLE_COPY(GTable)\n\n    // Represents cascading styles on a cell, row, column, or table.\n    struct TableStyle {\n        int background;\n        int foreground;\n        std::string font;\n        HorizontalAlignment alignment;\n        // TODO: borders?\n\n        TableStyle() {\n            background = 0;\n            foreground = 0;\n            font = \"\";\n            alignment = ALIGN_LEFT;\n        }\n\n        bool isSet() const {\n            return background >= 0\n                    && foreground >= 0\n                    && !font.empty()\n                    && alignment >= 0;\n        }\n\n        void mergeWith(const TableStyle& other) {\n            if (other.background >= 0) {\n                background = other.background;\n            }\n            if (other.foreground >= 0) {\n                foreground = other.foreground;\n            }\n            if (!other.font.empty()) {\n                font = other.font;\n            }\n            if (other.alignment >= 0) {\n                alignment = other.alignment;\n            }\n        }\n\n        TableStyle mergedWith(const TableStyle& other) {\n            TableStyle copy = *this;\n            copy.mergeWith(other);\n            return copy;\n        }\n\n        static TableStyle unset() {\n            TableStyle style;\n            style.background = -1;\n            style.foreground = -1;\n            style.font = \"\";\n            style.alignment = (HorizontalAlignment) -1;\n            return style;\n        }\n    };\n\n    // static variables for default formatting:\n    // background/foreground colors\n    // font\n    // alignment\n    static TableStyle _defaultCellStyle;\n\n    // member variables\n    _Internal_QTableWidget* _iqtableview;\n    ColumnHeaderStyle _columnHeaderStyle;\n\n    // styles on table, rows, columns, cells\n    Map<int, TableStyle> _rowStyles;\n    Map<int, TableStyle> _columnStyles;\n    TableStyle _globalCellStyle;\n\n    void applyStyleToCell(int row, int column, const TableStyle& style);\n\n    /*\n     * @throw ErrorException if the given row/column values are out of bounds.\n     */\n    void checkColumn(const std::string& member, int column) const;\n    void checkIndex(const std::string& member, int row, int column) const;\n    void checkRow(const std::string& member, int row) const;\n\n    void ensureColumnStyle(int column);\n    void ensureDefaultFormatting() const;   // const hack\n    void ensureGlobalCellStyle();\n    void ensureRowStyle(int row);\n    TableStyle getMergedStyleForCell(int row, int column);\n\n    // Internal setters for cell formatting.\n    virtual void setCellAlignmentInternal(int row, int column, HorizontalAlignment alignment);\n    virtual void setCellBackgroundInternal(int row, int column, int color);\n    virtual void setCellFontInternal(int row, int column, const std::string& font);\n    virtual void setCellForegroundInternal(int row, int column, int color);\n\n    static std::string toExcelColumnName(int col);\n    // static GridLocation toRowColumn(const std::string& excelColumnName);\n\n    void updateColumnHeaders();\n\n    friend class _Internal_QTableWidget;\n};\n\n/**\n * Internal class; not to be used by clients.\n * @private\n */\nclass _Internal_QItemDelegate : public QStyledItemDelegate {\n    Q_OBJECT\n\npublic:\n    _Internal_QItemDelegate(QObject* parent = nullptr);\n    virtual QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const;\n    virtual void destroyEditor(QWidget* editor, const QModelIndex& index) const;\n    virtual QWidget* getEditor() const;\n\nprivate:\n    QWidget* _editor;\n};\n\n\n/**\n * Internal class; not to be used by clients.\n * @private\n */\nclass _Internal_QTableWidget : public QTableWidget, public _Internal_QWidget {\n    Q_OBJECT\n\npublic:\n    _Internal_QTableWidget(GTable* gtable, int rows, int columns, QWidget* parent = nullptr);\n    virtual void detach() Q_DECL_OVERRIDE;\n    virtual bool edit(const QModelIndex& index, QAbstractItemView::EditTrigger trigger, QEvent* event) Q_DECL_OVERRIDE;\n    virtual QWidget* getEditor() const;\n    virtual _Internal_QItemDelegate* getItemDelegate() const;\n    virtual bool isEditing() const;\n    virtual void closeEditor(QWidget* editor, QAbstractItemDelegate::EndEditHint hint) Q_DECL_OVERRIDE;\n    virtual void keyPressEvent(QKeyEvent* event) Q_DECL_OVERRIDE;\n    virtual QSize sizeHint() const Q_DECL_OVERRIDE;\n\npublic slots:\n    void handleCellChange(int row, int column);\n    void handleCellDoubleClick(int row, int column);\n    void handleSelectionChange(const QItemSelection& selected, const QItemSelection& deselected);\n\nprivate:\n    GTable* _gtable;\n    _Internal_QItemDelegate* _delegate;\n    int _lastKeyPressed;\n\n    void fireTableEvent(EventType eventType, const std::string& eventName, int row = -1, int col = -1);\n\n    friend class GTable;\n};\n\n#endif // _gtable_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/gtextarea.h",
    "content": "/*\n * File: gtextarea.h\n * -----------------\n *\n * @author Marty Stepp\n * @version 2019/04/23\n * - moved some event listener code to GInteractor superclass\n * @version 2018/09/10\n * - added doc comments for new documentation generation\n * @version 2018/08/23\n * - renamed to gtextarea.h to replace Java version\n * @version 2018/06/25\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n// signal that GUI system is in use (so it will be initialized)\n#define SPL_QT_GUI_IN_USE 1\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _gtextarea_h\n#define _gtextarea_h\n\n#include <string>\n#include <QSize>\n#include <QTextEdit>\n#include <QWidget>\n\n#define INTERNAL_INCLUDE 1\n#include \"ginteractor.h\"\n#undef INTERNAL_INCLUDE\n\nclass _Internal_QTextEdit;\n\n/**\n * A GTextArea is a multi-line editable text box.\n * The box allows the user to type arbitrarily long documents.\n * Scroll bars will appear if the text becomes too long to fit in the visible\n * area of the box.\n */\nclass GTextArea : public GInteractor {\npublic:\n    /**\n     * Creates a new text area large enough to display the given number of rows\n     * and columns of text.\n     * @throw ErrorException if rows or columns value is negative\n     */\n    GTextArea(int rows, int columns, QWidget* parent = nullptr);\n\n    /**\n     * Creates a new text area with the given initial text.\n     */\n    GTextArea(const std::string& text = \"\", QWidget* parent = nullptr);\n\n    /**\n     * Frees memory allocated internally by the text area.\n     */\n    virtual ~GTextArea() Q_DECL_OVERRIDE;\n\n    /**\n     * Adds formatted text to the end of the text area.\n     * The text will be formatted with the given color and font.\n     */\n    virtual void appendFormattedText(const std::string& text, const std::string& color = \"\", const std::string& font = \"\");\n\n    /**\n     * Adds HTML-formatted text to the end of the text area.\n     */\n    virtual void appendHtml(const std::string& html);\n\n    /**\n     * Adds the given plain text to the end of the text area.\n     */\n    virtual void appendText(const std::string& text);\n\n    /**\n     * Deselects any text that is currently selected in the text area.\n     */\n    virtual void clearSelection();\n\n    /**\n     * Sets the text in the text area to be empty.\n     */\n    virtual void clearText();\n\n    /**\n     * Returns the number of visible columns (characters wide) in the text area.\n     */\n    virtual int getColumns() const;\n\n    /**\n     * Returns the keyboard cursor's current position in the text area as a\n     * 0-based character index within the overall text string.\n     */\n    virtual int getCursorPosition() const;\n\n    /**\n     * Returns the text area's current text as HTML.\n     * This differs from getText in that tags and formatting are not stripped.\n     */\n    virtual std::string getHtml() const;\n\n    /* @inherit */\n    virtual _Internal_QWidget* getInternalWidget() const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns the text area's placeholder text, which is usually displayed\n     * as a light gray text in the text area when the area is empty.\n     * This usually indicates a hint to the user about what value to type.\n     * The default initial placeholder is empty.\n     */\n    virtual std::string getPlaceholder() const;\n\n    /**\n     * Returns the number of visible rows (lines tall) in the text area.\n     * This is approximate and will be rounded down to the nearest integer if\n     * the text area's size is not exactly a multiple of the row/line size.\n     */\n    virtual int getRows() const;\n\n    /**\n     * Returns the text that is currently selected in the text area.\n     * If no text is currently selected, returns an empty string.\n     */\n    virtual std::string getSelectedText() const;\n\n    /**\n     * Returns the index just past the end of the current selection of text as a\n     * 0-based character index within the overall text string.\n     * If no text is currently selected, returns -1.\n     */\n    virtual int getSelectionEnd() const;\n\n    /**\n     * Returns the number of characters that are currently selected.\n     * If no text is currently selected, returns 0.\n     */\n    virtual int getSelectionLength() const;\n\n    /**\n     * Returns the index of the start of the current selection of text as a\n     * 0-based character index within the overall text string.\n     * If no text is currently selected, returns -1.\n     */\n    virtual int getSelectionStart() const;\n\n    /**\n     * Returns the text area's current text.\n     */\n    virtual std::string getText() const;\n\n    /* @inherit */\n    virtual std::string getType() const Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual QWidget* getWidget() const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns true if a context menu will pop up when the user right-clicks the\n     * text area.\n     * By default this is true, but it can be turned off by calling\n     * setContextMenuEnabled(false).\n     */\n    virtual bool isContextMenuEnabled() const;\n\n    /**\n     * Returns whether the text area allows the user to modify its text.\n     * Default true.\n     */\n    virtual bool isEditable() const;\n\n    /**\n     * Returns whether the text area wraps its text when a line becomes too long.\n     * Default true.\n     */\n    virtual bool isLineWrap() const;\n\n    /**\n     * Sets the text area's keyboard cursor position to the end of the\n     * current text.\n     */\n    virtual void moveCursorToEnd();\n\n    /**\n     * Sets the text area's keyboard cursor position to the start of the\n     * current text.\n     */\n    virtual void moveCursorToStart();\n\n    /**\n     * Removes the text change listener from this text area so that it will no longer\n     * call it when the user modifies the text.\n     */\n    virtual void removeTextChangeListener();\n\n    /**\n     * Moves the visible scroll region of the text area so that the bottom part\n     * of the text is visible.\n     */\n    virtual void scrollToBottom();\n\n    /**\n     * Moves the visible scroll region of the text area so that the top part\n     * of the text is visible.\n     */\n    virtual void scrollToTop();\n\n    /**\n     * Sets the given range of text to be selected, beginning with the given start\n     * index as a 0-based character index within the overall text string, and\n     * extending for the given length of characters.\n     * @throw ErrorException if start index or length is negative\n     */\n    virtual void select(int startIndex, int length);\n\n    /**\n     * Selects the entire text of the text area.\n     */\n    virtual void selectAll();\n\n    /**\n     * Sets the width of the text area to be wide enough to fit the given number\n     * of characters (columns) of text.\n     * @throw ErrorException if columns value is negative\n     */\n    virtual void setColumns(int columns);\n\n    /**\n     * Sets whether a context menu will pop up when the user right-clicks the\n     * text area.\n     * Initially true.\n     */\n    virtual void setContextMenuEnabled(bool enabled);\n\n    /**\n     * Moves the keyboard cursor to the given 0-based character index within\n     * the text.\n     * @throw ErrorException if index is negative\n     */\n    virtual void setCursorPosition(int index, bool keepAnchor = false);\n\n    /**\n     * Sets whether the text area allows the user to modify its text.\n     * Default true.\n     */\n    virtual void setEditable(bool value);\n\n    /**\n     * Sets the text area's current text to the given HTML string.\n     * This differs from setText in that HTML tags and formatting are applied\n     * to the text rather than considered to be regular characters.\n     */\n    virtual void setHtml(const std::string& html);\n\n    /**\n     * Sets whether the text area wraps its text when a line becomes too long.\n     * Default true.\n     */\n    virtual void setLineWrap(bool wrap);\n\n    /**\n     * Sets a mouse listener on this text area so that it will be called\n     * when the user moves or clicks the mouse.\n     * Any existing mouse listener will be replaced.\n     */\n    virtual void setMouseListener(GEventListener func) Q_DECL_OVERRIDE;\n\n    /**\n     * Sets a mouse listener on this text area so that it will be called\n     * when the user moves or clicks the mouse.\n     * Any existing mouse listener will be replaced.\n     */\n    virtual void setMouseListener(GEventListenerVoid func) Q_DECL_OVERRIDE;\n\n    /**\n     * Sets the text area's placeholder text, which is usually displayed\n     * as a light gray text in the text area when the area is empty.\n     * This usually indicates a hint to the user about what value to type.\n     * The default initial placeholder is empty.\n     */\n    virtual void setPlaceholder(const std::string& text);\n\n    /**\n     * Sets the height of the text area to be wide enough to fit the given number\n     * of lines (rows) of text.\n     * @throw ErrorException if rows value is negative\n     */\n    virtual void setRows(int rows);\n\n    /**\n     * Sets the size of the text area to be wide enough to fit the given number\n     * of lines (rows) and characters (columns) of text.\n     * @throw ErrorException if rows or columns value is negative\n     */\n    virtual void setRowsColumns(int rows, int columns);\n\n    /**\n     * Sets the text area's current text to the given string,\n     * replacing any existing text.\n     */\n    virtual void setText(const std::string& text);\n\n    /**\n     * Sets a text change listener on this text area so that it will be called\n     * when the user modifies the current text.\n     * Any existing text change listener will be replaced.\n     *\n     * A text change listener is similar to a key listener in that each will\n     * fire an event when the user types a character in the text area.\n     * But a key listener will fire when any key is pressed, even one that does\n     * not modify the text itself, such as when the user presses an arrow key\n     * or the Ctrl key or Esc or any other special character.\n     *\n     * A text change listener will fire only when the actual text changes, such\n     * as when the user types a new character into the area.\n     */\n    virtual void setTextChangeListener(GEventListener func);\n\n    /**\n     * Sets a text change listener on this text area so that it will be called\n     * when the user modifies the current text.\n     * Any existing text change listener will be replaced.\n     *\n     * A text change listener is similar to a key listener in that each will\n     * fire an event when the user types a character in the text area.\n     * But a key listener will fire when any key is pressed, even one that does\n     * not modify the text itself, such as when the user presses an arrow key\n     * or the Ctrl key or Esc or any other special character.\n     *\n     * A text change listener will fire only when the actual text changes, such\n     * as when the user types a new character into the area.\n     */\n    virtual void setTextChangeListener(GEventListenerVoid func);\n\nprivate:\n    Q_DISABLE_COPY(GTextArea)\n\n    _Internal_QTextEdit* _iqtextedit;\n    bool _contextMenuEnabled;\n\n    // helper used by getRows, getColumns, etc.\n    GDimension getRowColumnSize() const;\n\n    friend class _Internal_QTextEdit;\n};\n\n/**\n * Internal class; not to be used by clients.\n * @private\n */\nclass _Internal_QTextEdit : public QTextEdit, public _Internal_QWidget {\n    Q_OBJECT\n\npublic:\n    _Internal_QTextEdit(GTextArea* gtextArea, QWidget* parent = nullptr);\n    virtual void contextMenuEvent(QContextMenuEvent* event) Q_DECL_OVERRIDE;\n    virtual void detach() Q_DECL_OVERRIDE;\n    virtual void keyPressEvent(QKeyEvent* event) Q_DECL_OVERRIDE;\n    virtual void keyReleaseEvent(QKeyEvent* event) Q_DECL_OVERRIDE;\n    virtual void mousePressEvent(QMouseEvent* event) Q_DECL_OVERRIDE;\n    virtual void mouseReleaseEvent(QMouseEvent* event) Q_DECL_OVERRIDE;\n    virtual QSize sizeHint() const Q_DECL_OVERRIDE;\n\npublic slots:\n    void handleScroll(int value);\n    void handleTextChange();\n\nprivate:\n    GTextArea* _gtextarea;\n\n    friend class GTextArea;\n};\n\n#endif // _gtextarea_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/gtextfield.h",
    "content": "/*\n * File: gtextfield.h\n * ------------------\n *\n * @author Marty Stepp\n * @version 2019/04/23\n * - added key events\n * @version 2018/09/08\n * - added doc comments for new documentation generation\n * @version 2018/08/23\n * - renamed to gtextfield.h to replace Java version\n * @version 2018/06/29\n * - added textChange event\n * @version 2018/06/25\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n// signal that GUI system is in use (so it will be initialized)\n#define SPL_QT_GUI_IN_USE 1\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _gtextfield_h\n#define _gtextfield_h\n\n#include <initializer_list>\n#include <string>\n#include <QLineEdit>\n#include <QSize>\n#include <QSpinBox>\n#include <QDoubleSpinBox>\n#include <QString>\n#include <QWidget>\n\n#define INTERNAL_INCLUDE 1\n#include \"ginteractor.h\"\n#define INTERNAL_INCLUDE 1\n#include \"vector.h\"\n#undef INTERNAL_INCLUDE\n\nclass _Internal_QLineEdit;\nclass _Internal_QSpinBox;\nclass _Internal_QDoubleSpinBox;\n\n/**\n * This interactor subclass represents a text field for entering short text strings.\n * Pressing Enter in a text field generates an action event.\n */\nclass GTextField : public GInteractor {\npublic:\n    /**\n     * Constants for the valid types of text field input.\n     */\n    enum InputType {\n        INPUT_TYPE_TEXT,\n        INPUT_TYPE_INTEGER,\n        INPUT_TYPE_REAL\n    };\n\n    /**\n     * Creates a text field with the given initial text.\n     * If the optional charsWide parameter is passed, sizes the text field\n     * wide enough to display the given number of characters.\n     */\n    GTextField(const std::string& text = \"\", int charsWide = 0, QWidget* parent = nullptr);\n\n    /**\n     * Creates a text field wide enough to display the given number of characters.\n     */\n    GTextField(int charsWide, QWidget* parent = nullptr);\n\n    /**\n     * Creates a text field for entering integer values, with the given initial value.\n     * The value is constrained to the given minimum and maximum, incrementing by\n     * the given step amount.\n     * @throw ErrorException if min > max or value is not between min and max\n     */\n    GTextField(int value, int min, int max, int step = 1, QWidget* parent = nullptr);\n\n    /**\n     * Creates a text field for entering real number values, with the given initial value.\n     * The value is constrained to the given minimum and maximum, incrementing by\n     * the given step amount.\n     * @throw ErrorException if min > max or value is not between min and max\n     */\n    GTextField(double value, double min, double max, double step, QWidget* parent = nullptr);\n\n    /**\n     * Frees memory allocated internally by the text field.\n     */\n    virtual ~GTextField() Q_DECL_OVERRIDE;\n\n    /**\n     * Returns the number of characters that can fit in the visible area of\n     * this text field.\n     */\n    virtual int getCharsWide() const;\n\n    /**\n     * Returns the type of input accepted by this text field.\n     * The default is text input (GTextField::INPUT_TYPE_TEXT), but you can create\n     * a field that accepts integers (INPUT_TYPE_INTEGER) or real numbers\n     * (INPUT_TYPE_REAL).\n     */\n    virtual InputType getInputType() const;\n\n    /* @inherit */\n    virtual _Internal_QWidget* getInternalWidget() const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns the maximum length of string allowed in the text field.\n     * By default no max is set, in which case this method returns 0.\n     */\n    virtual int getMaxLength() const;\n\n    /**\n     * Returns the text field's placeholder text, which is usually displayed\n     * as a light gray text in the field when the field is empty.\n     * This usually indicates a hint to the user about what value to type.\n     */\n    virtual std::string getPlaceholder() const;\n\n    /**\n     * Returns the text field's current text.\n     * Equivalent to getValue.\n     */\n    virtual std::string getText() const;\n\n    /* @inherit */\n    virtual std::string getType() const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns the text field's current text.\n     * Equivalent to getText.\n     */\n    virtual std::string getValue() const;\n\n    /**\n     * Returns the currently typed value in the text field,\n     * interpreted as a bool value of true or false.\n     * See the stringToBool function in strlib.h for more information about\n     * how the string is converted to a bool value.\n     * @throw ErrorException if the string cannot be converted to bool type\n     */\n    virtual bool getValueAsBool() const;\n\n    /**\n     * Returns the currently typed value in the text field as a char value.\n     * This returns the first character of the string, or '\\0' if the text\n     * field is empty.\n     */\n    virtual char getValueAsChar() const;\n\n    /**\n     * Returns the currently typed value in the text field,\n     * interpreted as a real number value.\n     * See the stringToDouble function in strlib.h for more information about\n     * how the string is converted to a numeric value.\n     * @throw ErrorException if the string cannot be converted to double type\n     */\n    virtual double getValueAsDouble() const;\n\n    /**\n     * Returns the currently typed value in the text field,\n     * interpreted as an integer value.\n     * See the stringToInteger function in strlib.h for more information about\n     * how the string is converted to a numeric value.\n     * Equivalent to getValueAsInteger.\n     * @throw ErrorException if the string cannot be converted to integer type\n     */\n    virtual int getValueAsInt() const;\n\n    /**\n     * Returns the currently typed value in the text field,\n     * interpreted as an integer value.\n     * See the stringToInteger function in strlib.h for more information about\n     * how the string is converted to a numeric value.\n     * Equivalent to getValueAsInteger.\n     * @throw ErrorException if the string cannot be converted to integer type\n     */\n    virtual int getValueAsInteger() const;\n\n    /* @inherit */\n    virtual QWidget* getWidget() const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns true if this text field has an autocompletion list of options\n     * that will pop up as the user begins typing.\n     * Text fields do not initially have such a list, but you can supply one\n     * by calling setAutocompleteList.\n     */\n    virtual bool isAutocompleteEnabled() const;\n\n    /**\n     * Returns true if the text field's value can be edited.\n     * Initially this is true but can be changed by calling\n     * setEditable(false).\n     */\n    virtual bool isEditable() const;\n\n    /**\n     * Removes the text change listener from this text field so that it will no longer\n     * call it when the user types characters.\n     */\n    virtual void removeTextChangeListener();\n\n    /**\n     * Sets the given list of strings to be used as an autocompletion list for\n     * this text field.  After calling this, if the user types characters in\n     * the text field that form a prefix of any string in the list, those strings\n     * will be shown as a drop-down autocompletion list that the user can choose\n     * completed values from.\n     * To turn this feature back off, call setAutocompleteEnabled(false).\n     */\n    virtual void setAutocompleteList(std::initializer_list<std::string> strings);\n\n    /**\n     * Sets the given list of strings to be used as an autocompletion list for\n     * this text field.  After calling this, if the user types characters in\n     * the text field that form a prefix of any string in the list, those strings\n     * will be shown as a drop-down autocompletion list that the user can choose\n     * completed values from.\n     * To turn this feature back off, call setAutocompleteEnabled(false).\n     */\n    virtual void setAutocompleteList(const Vector<std::string>& strings);\n\n    /**\n     * Sets whether the autocompletion feature is enabled for this text field.\n     * If you call setAutocompleteList, the autocompletion feature is automatically\n     * enabled; so the main purpose of this method is to turn it back off later.\n     */\n    virtual void setAutocompleteEnabled(bool enabled);\n\n    /**\n     * Sets the width of this text field to be exactly wide enough to display\n     * the given number of characters.\n     */\n    virtual void setCharsWide(int charsWide);\n\n    /**\n     * Sets whether the value in the text box can be edited.\n     * Initially true.\n     */\n    virtual void setEditable(bool value);\n\n    /**\n     * Sets the maximum number of characters that can be typed into the field.\n     */\n    virtual void setMaxLength(int maxLength);\n\n    /**\n     * Sets a gray message that is displayed in the background of the text field\n     * before the user has typed any value.\n     * This is often used as a hint to the user about what kind of value to type.\n     */\n    virtual void setPlaceholder(const std::string& text);\n\n    /**\n     * Sets the current text value in the text field.\n     */\n    virtual void setText(const std::string& text);\n\n    /**\n     * Sets a text-change listener on this text field so that it will be called\n     * when the value in the field changes, which will occur on every key press.\n     * Any existing text-change listener will be replaced.\n     */\n    virtual void setTextChangeListener(GEventListener func);\n\n    /**\n     * Sets a text-change listener on this text field so that it will be called\n     * when the value in the field changes, which will occur on every key press.\n     * Any existing text-change listener will be replaced.\n     */\n    virtual void setTextChangeListener(GEventListenerVoid func);\n\n    /**\n     * Sets the current text value in the text field to the string representation\n     * of the given value.\n     */\n    virtual void setValue(bool value);\n\n    /**\n     * Sets the current text value in the text field to the string representation\n     * of the given value.\n     */\n    virtual void setValue(char value);\n\n    /**\n     * Sets the current text value in the text field to the string representation\n     * of the given value.\n     */\n    virtual void setValue(double value);\n\n    /**\n     * Sets the current text value in the text field to the string representation\n     * of the given value.\n     */\n    virtual void setValue(int value);\n\n    /**\n     * Sets the current text value in the text field to the string representation\n     * of the given value.\n     * Equivalent to setText.\n     */\n    virtual void setValue(const std::string& value);\n\n    /**\n     * Returns true if the currently typed value in the text field can be\n     * interpreted as a bool value of true or false.\n     * If this is true, a call to getValueAsBool will succeed.\n     */\n    virtual bool valueIsBool() const;\n\n    /**\n     * Returns true if the currently typed value in the text field can be\n     * interpreted as a char value.\n     * This will be true if its length is exactly 1.\n     * If this is true, a call to getValueAsChar will succeed.\n     */\n    virtual bool valueIsChar() const;\n\n    /**\n     * Returns true if the currently typed value in the text field can be\n     * interpreted as a real number.\n     * If this is true, a call to getValueAsDouble will succeed.\n     * Equivalent to valueIsReal.\n     */\n    virtual bool valueIsDouble() const;\n\n    /**\n     * Returns true if the currently typed value in the text field can be\n     * interpreted as an integer.\n     * If this is true, a call to getValueAsInt / getValueAsInteger will succeed.\n     * Equivalent to valueIsInteger.\n     */\n    virtual bool valueIsInt() const;\n\n    /**\n     * Returns true if the currently typed value in the text field can be\n     * interpreted as an integer.\n     * If this is true, a call to getValueAsInt / getValueAsInteger will succeed.\n     * Equivalent to valueIsInt.\n     */\n    virtual bool valueIsInteger() const;\n\n    /**\n     * Returns true if the currently typed value in the text field can be\n     * interpreted as a real number.\n     * If this is true, a call to getValueAsDouble will succeed.\n     * Equivalent to valueIsDouble.\n     */\n    virtual bool valueIsReal() const;\n\nprotected:\n    /**\n     * @private\n     */\n    virtual std::string getActionEventType() const Q_DECL_OVERRIDE;\n\nprivate:\n    Q_DISABLE_COPY(GTextField)\n\n    // pointers to the internal Qt text field;\n    // at most one of these will be non-null for a given instance\n    _Internal_QLineEdit* _iqlineedit;\n    _Internal_QSpinBox* _iqspinbox;\n    _Internal_QDoubleSpinBox* _iqdoublespinbox;\n\n    // type of text field; helps tell us which of the above internal Qt widgets\n    // will be non-null\n    InputType _inputType;\n\n    friend class _Internal_QLineEdit;\n    friend class _Internal_QSpinBox;\n    friend class _Internal_QDoubleSpinBox;\n};\n\n/**\n * Internal class; not to be used by clients.\n * @private\n */\nclass _Internal_QLineEdit : public QLineEdit, public _Internal_QWidget {\n    Q_OBJECT\n\npublic:\n    _Internal_QLineEdit(GTextField* gtextField, QWidget* parent = nullptr);\n    virtual void detach() Q_DECL_OVERRIDE;\n    virtual void keyPressEvent(QKeyEvent* event) Q_DECL_OVERRIDE;\n    virtual void keyReleaseEvent(QKeyEvent* event) Q_DECL_OVERRIDE;\n    virtual QSize sizeHint() const Q_DECL_OVERRIDE;\n\npublic slots:\n    void handleTextChange(const QString&);\n\nprivate:\n    GTextField* _gtextfield;\n\n    friend class GTextField;\n};\n\n/**\n * Internal class; not to be used by clients.\n * @private\n */\nclass _Internal_QSpinBox : public QSpinBox, public _Internal_QWidget {\n    Q_OBJECT\n\npublic:\n    _Internal_QSpinBox(GTextField* qgtextField, int min, int max, int step = 1, QWidget* parent = nullptr);\n    virtual void detach() Q_DECL_OVERRIDE;\n    virtual void keyPressEvent(QKeyEvent* event) Q_DECL_OVERRIDE;\n    virtual void keyReleaseEvent(QKeyEvent* event) Q_DECL_OVERRIDE;\n    virtual QLineEdit* lineEdit() const;\n    virtual QSize sizeHint() const Q_DECL_OVERRIDE;\n\npublic slots:\n    void handleTextChange(const QString&);\n\nprivate:\n    GTextField* _gtextfield;\n\n    friend class GTextField;\n};\n\n/**\n * Internal class; not to be used by clients.\n * @private\n */\nclass _Internal_QDoubleSpinBox : public QDoubleSpinBox, public _Internal_QWidget {\n    Q_OBJECT\n\npublic:\n    _Internal_QDoubleSpinBox(GTextField* qgtextField, double min, double max, double step = 0.1, QWidget* parent = nullptr);\n    virtual void detach() Q_DECL_OVERRIDE;\n    virtual void keyPressEvent(QKeyEvent* event) Q_DECL_OVERRIDE;\n    virtual void keyReleaseEvent(QKeyEvent* event) Q_DECL_OVERRIDE;\n    virtual QLineEdit* lineEdit() const;\n    virtual QSize sizeHint() const Q_DECL_OVERRIDE;\n\npublic slots:\n    void handleTextChange(const QString&);\n\nprivate:\n    GTextField* _gtextfield;\n\n    friend class GTextField;\n};\n\n#endif // _gtextfield_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/gthread.h",
    "content": "/*\n * File: gthread.h\n * ---------------\n *\n * This file contains code related to multithreading.\n * Qt requires at least two threads to run: a main Qt GUI thread,\n * and a separate student code thread.\n * The student's main() function runs in this latter student thread.\n * You can also run code in a new thread using the static method\n * GThread::runInNewThread or GThread::runInNewThreadAsync.\n *\n * @version 2019/04/13\n * - reimplement GThread to wrap either QThread or std::thread\n * - add GThread abstract base class for thread abstractions\n * - add GThreadQt and GThreadStd subclasses\n * - rename GFunctionThread to QFunctionThread to reduce name confusion\n * - remove GStudentThread subclass and combine functionality into GThread\n * @version 2018/10/18\n * - improved thread names\n * @version 2018/09/08\n * - added doc comments for new documentation generation\n * @version 2018/08/23\n * - renamed to gthread.h to replace Java version\n * @version 2018/07/28\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n// signal that GUI system is in use (so it will be initialized)\n#define SPL_QT_GUI_IN_USE 1\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _gthread_h\n#define _gthread_h\n\n#include <QThread>\n#include <atomic>\n#include <thread>\n\n#define INTERNAL_INCLUDE 1\n#include \"gtypes.h\"\n#define INTERNAL_INCLUDE 1\n#include \"map.h\"\n#undef INTERNAL_INCLUDE\n\nclass QtGui;\n\n/**\n * A QFunctionThread is an object that runs a function in its own\n * thread of execution.\n *\n * You construct it, passing a void function to run as a parameter,\n * and then call its <code>run()</code> method to run that function in its\n * own thread.\n *\n * Clients generally do not need to access this class directly.\n * To use threads with our library, use the static methods\n * <code>GThread::runInNewThread</code> and\n * <code>GThread::runInNewThreadAsync</code>.\n * @private\n */\nclass QFunctionThread : public QThread {\npublic:\n    /**\n     * Constructs a new thread to execute.\n     */\n    QFunctionThread(GThunk func);\n\n    /**\n     * Constructs a new thread to execute.\n     */\n    QFunctionThread(GThunkInt func);\n\n    /**\n     * Returns the value returned by the function, if any, else 0.\n     */\n    int returnValue() const;\n\nprotected:\n    /**\n     * Executes the function passed to the constructor in its own thread.\n     */\n    void run();\n\nprivate:\n    Q_DISABLE_COPY(QFunctionThread)\n\n    GThunk _func;\n    GThunkInt _funcInt;\n    bool _hasReturn;\n    int _returnValue;\n};\n\n/**\n * The GThread class is a utility class containing static methods that allow\n * you to run code on various system threads.\n * The library has the following two standard threads running at all times:\n *\n * <ol>\n *     <li> The Qt GUI thread, which runs Qt's master exec() loop,\n *          handles all GUI object creation and events\n *          (this is technically the program's main thread)\n *\n *     <li> The student thread, which runs the student's main() function and\n *          any sub-functions called by main\n *\n * Students and clients normally do not need to worry about threading issues.\n * These methods are called internally by many of the graphical interactors\n * to make sure that all internal Qt GUI widgets are initialized on the Qt GUI\n * thread.  This is required for them to function properly.\n *\n * If you want to run a piece of code in its own thread, use static methods\n * <code>GThread::runInNewThread</code> and\n * <code>GThread::runInNewThreadAsync</code>.\n */\nclass GThread {\npublic:\n    /**\n     * Returns the value returned by the thread's function.\n     * This will be 0 until the function is done running.\n     * This method only has meaning if your thread executes a function that\n     * returns an int.\n     */\n    virtual int getResult() const = 0;\n\n    /**\n     * Returns true if the given thread is currently actively running.\n     */\n    virtual bool isRunning() const = 0;\n\n    /**\n     * Waits for this thread to finish.\n     * Will wait indefinitely as needed.\n     */\n    virtual void join() = 0;\n\n    /**\n     * Waits for this thread to finish.\n     * Will wait up to the given number of milliseconds.\n     * Returns true if the thread has finished or false if it is still running.\n     */\n    virtual bool join(long ms) = 0;\n\n    /**\n     * Returns the thread's name as passed to the constructor, or a default\n     * name if none was passed.\n     * Not all thread implementations support names.\n     */\n    virtual std::string name() const = 0;\n\n    /**\n     * Returns the thread's priority.\n     * Threads with higher priorities tend to run more than ones that are lower.\n     * Not all thread implementations support priorities.\n     */\n    virtual int priority() const = 0;\n\n    /**\n     * Sets the thread's name to the given value.\n     * Not all thread implementations support names.\n     */\n    virtual void setName(const std::string& name) = 0;\n\n    /**\n     * Sets the thread's priority to the given value.\n     * Not all thread implementations support priorities.\n     */\n    virtual void setPriority(int priority) = 0;\n\n    /**\n     * Causes the thread to pause itself for the given number of milliseconds.\n     * @throw ErrorException if ms is negative\n     */\n    virtual void sleep(double ms) = 0;\n\n    /**\n     * Tells the thread to start running.\n     */\n    virtual void start() = 0;\n\n    /**\n     * Forcibly terminates the thread.\n     * You probably should not call this unless absolutely necessary,\n     * since it can lead to messed up state in the program.\n     */\n    virtual void stop() = 0;\n\n    /**\n     * Indicates that the current thread is willing to yield execution to any\n     * other threads that want to run.\n     * This differs slightly from sleep() in that sleep() mandates to pause the\n     * current thread for a given amount of time, while yield() is more of an\n     * offer to other threads that they may run now if they so choose.\n     */\n    virtual void yield() = 0;\n\n    // TODO: methods to set a top-level exception handler\n\n\n    /**\n     * Generates an error if the caller is not running on the Qt GUI main thread.\n     * An optional error detail message can be passed.\n     */\n    static void ensureThatThisIsTheQtGuiThread(const std::string& message = \"\");\n\n    /**\n     * Returns the caller's Qt thread object.\n     */\n    static GThread* getCurrentThread();\n\n    /**\n     * Returns the Qt thread object representing the main thread for the\n     * application, also referred to as the Qt GUI thread.\n     */\n    static GThread* getQtMainThread();\n\n    /**\n     * Returns the Qt thread object representing the thread on which the\n     * student's main() function runs.\n     */\n    static GThread* getStudentThread();\n\n    /**\n     * Returns true if the caller is running on the Qt GUI thread.\n     */\n    static bool iAmRunningOnTheQtGuiThread();\n\n    /**\n     * Returns true if the caller is running on the student thread.\n     */\n    static bool iAmRunningOnTheStudentThread();\n\n    /**\n     * Returns true if the Qt GUI thread has been created.\n     * This will happen right before the student's main() function runs.\n     */\n    static bool qtGuiThreadExists();\n\n    /**\n     * Runs the given void function in its own new thread,\n     * blocking the current thread to wait until it is done.\n     * You can pass an optional name for the thread which can help when looking\n     * through the list of threads in a debugger.\n     *\n     * Any uncaught exceptions or errors in the new thread will crash the\n     * program and cannot be caught by the calling thread.\n     *\n     * If you want the new thread to run in the background,\n     * use the <code>runInNewThreadAsync</code> function instead.\n     */\n    static void runInNewThread(GThunk func, const std::string& threadName = \"\");\n\n    /**\n     * Runs the given void function in its own new thread in the background;\n     * the current thread does not block and keeps going.\n     * You can pass an optional name for the thread which can help when looking\n     * through the list of threads in a debugger.\n     * Returns a pointer to the given thread in case you want to wait a given\n     * amount of time for the thread to do its work.\n     *\n     * Any uncaught exceptions or errors in the new thread will crash the\n     * program and cannot be caught by the calling thread.\n     *\n     * If you want the caller to wait for the new thread to finish running,\n     * use the <code>runInNewThread</code> function instead.\n     */\n    static GThread* runInNewThreadAsync(GThunk func, const std::string& threadName = \"\");\n\n    /**\n     * Runs the given void function on the Qt GUI thread,\n     * blocking the current thread to wait until it is done.\n     * This function is called heavily by the internal GUI widgets and\n     * interactors of the library, because all Qt GUI operations are required\n     * to be done on the application's main thread.\n     *\n     * Any uncaught exceptions or errors in the Qt GUI thread will crash the\n     * program and cannot be caught by the calling thread.\n     *\n     * If you want the new thread to run in the background,\n     * use the <code>runOnQtGuiThreadAsync</code> function instead.\n     */\n    static void runOnQtGuiThread(GThunk func);\n\n    /**\n     * Runs the given void function on the Qt GUI thread in the background;\n     * the current thread does not block and keeps going.\n     *\n     * Any uncaught exceptions or errors in the Qt GUI thread will crash the\n     * program and cannot be caught by the calling thread.\n     *\n     * If you want the caller to wait for the Qt GUI thread code to finish running,\n     * use the <code>runOnQtGuiThread</code> function instead.\n     */\n    static void runOnQtGuiThreadAsync(GThunk func);\n\n    /**\n     * Starts the student's thread, telling it to run the given function,\n     * which accepts no arguments and returns an int.\n     */\n    static void startStudentThread(GThunkInt mainFunc);\n\n    /**\n     * Starts the student's thread, telling it to run the given function,\n     * which accepts no arguments and returns void.\n     */\n    static void startStudentThreadVoid(GThunk mainFunc);\n\n    /**\n     * Returns true if the student's thread has already been created.\n     */\n    static bool studentThreadExists();\n\n    /**\n     * Waits the given number of milliseconds for the given thread to finish.\n     * @return true if the entire amount of ms was elapsed without the thread finishing\n     */\n    static bool wait(GThread* thread, long ms);\n\nprotected:\n    // forbid construction\n    GThread();\n    virtual ~GThread() = default;\n\n    virtual void run() = 0;\n\n    // member variables\n    GThunk _func;\n    GThunkInt _funcInt;\n    bool _hasReturn;\n    int _returnValue;\n\n    // pointers to the two core library threads\n    static GThread* _qtMainThread;\n    static GThread* _studentThread;\n\n    // mapping between QThreads and their related GThread wrappings\n    static Map<QThread*, GThread*> _allGThreadsQt;\n    static Map<std::thread*, GThread*> _allGThreadsStd;\n\nprivate:\n    /**\n     * Sets the current thread to be the \"main\" thread for the application.\n     * This is called by our library initialization code to inform the GThread\n     * class what thread is the main thread.\n     * Clients do not need to call this method directly.\n     * @private\n     */\n    static void setMainThread();\n\n    friend class QtGui;\n    friend void stanfordcpplib::initializeLibrary(int argc, char** argv);\n};\n\n\n/**\n * A GThreadQt is an object that runs a function in its own\n * Qt thread of execution.\n * You construct it, passing a void function to run as a parameter,\n * and then call its <code>run()</code> method to run that function in its\n * own thread.\n *\n * This is provided so that you don't need to subclass QThread yourself\n * just to run a given piece of code.\n *\n * Clients generally do not need to access this class directly.\n * To use threads with our library, use the static methods\n * <code>GThread::runInNewThread</code> and\n * <code>GThread::runInNewThreadAsync</code>.\n * @private\n */\nclass GThreadQt : public GThread {\npublic:\n    /**\n     * Constructs a new thread to execute, with an optional thread name.\n     */\n    GThreadQt(GThunk func, const std::string& threadName = \"\");\n\n    /**\n     * Constructs a new thread to execute, with an optional thread name.\n     */\n    GThreadQt(GThunkInt func, const std::string& threadName = \"\");\n\n    /**\n     * Constructs a new thread to wrap the given existing Qt thread.\n     */\n    GThreadQt(QThread* qthread);\n\n    virtual ~GThreadQt();\n\n    /* @inherit */\n    virtual int getResult() const Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual bool isRunning() const Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void join() Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual bool join(long ms) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual std::string name() const Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual int priority() const Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void setName(const std::string& name) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void setPriority(int priority) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void sleep(double ms) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void start() Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void stop() Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void yield() Q_DECL_OVERRIDE;\n\nprotected:\n    /* @inherit */\n    virtual void run() Q_DECL_OVERRIDE;\n\nprivate:\n    Q_DISABLE_COPY(GThreadQt)\n\n    QThread* _qThread;   // underlying real Qt thread\n};\n\n\n/**\n * A GThreadQt is an object that runs a function in its own\n * std::thread thread of execution.\n * You construct it, passing a void function to run as a parameter,\n * and then call its <code>run()</code> method to run that function in its\n * own thread.\n *\n * This is provided so that you don't need to subclass QThread yourself\n * just to run a given piece of code.\n *\n * Clients generally do not need to access this class directly.\n * To use threads with our library, use the static methods\n * <code>GThread::runInNewThread</code> and\n * <code>GThread::runInNewThreadAsync</code>.\n * @private\n */\nclass GThreadStd : public GThread {\npublic:\n    /**\n     * Constructs a new thread to execute, with an optional thread name.\n     */\n    GThreadStd(GThunk func, const std::string& threadName = \"\");\n\n    /**\n     * Constructs a new thread to execute, with an optional thread name.\n     */\n    GThreadStd(GThunkInt func, const std::string& threadName = \"\");\n\n    /**\n     * Constructs a new thread to wrap the given existing Qt thread.\n     */\n    GThreadStd(std::thread* stdThread);\n\n    virtual ~GThreadStd();\n\n    /* @inherit */\n    virtual int getResult() const Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual bool isRunning() const Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void join() Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual bool join(long ms) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual std::string name() const Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual int priority() const Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void setName(const std::string& name) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void setPriority(int priority) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void sleep(double ms) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void start() Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void stop() Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void yield() Q_DECL_OVERRIDE;\n\nprotected:\n    /* @inherit */\n    virtual void run() Q_DECL_OVERRIDE;\n\nprivate:\n    Q_DISABLE_COPY(GThreadStd)\n\n    std::thread* _stdThread;   // underlying real Qt thread\n    std::string _name;\n    std::atomic<bool> _running;\n};\n\n#endif // _gthread_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/gtimer.h",
    "content": "/*\n * File: gtimer.h\n * --------------\n * This file defines the <code>GTimer</code> class, which implements a\n * general interval timer.\n *\n * @version 2019/01/23\n * - added destructor\n * @version 2018/09/09\n * - updated to use new Qt GUI timer interface\n * - added doc comments for new documentation generation\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n// signal that GUI system is in use (so it will be initialized)\n#define SPL_QT_GUI_IN_USE 1\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _gtimer_h\n#define _gtimer_h\n\n#include <string>\n\n/**\n * This class implements a simple interval timer that generates a\n * <code>GTimerEvent</code> with a specified frequency.\n */\nclass GTimer {\npublic:\n    /**\n     * Creates a timer object that generates a <code>GTimerEvent</code>\n     * each time the specified number of milliseconds has elapsed.  No\n     * events are generated until the client calls <code>start</code>\n     * on the timer.\n     *\n     * Due to implementation details, you must create at least one GWindow\n     * before you can start() a GTimer object.\n     *\n     * @throw ErrorException if milliseconds is negative\n     */\n    GTimer(double milliseconds);\n\n    /**\n     * Destroys the timer, stopping it if it's currently running.\n     */\n    ~GTimer();\n\n    /**\n     * Returns the delay in milliseconds between each tick of this timer.\n     */\n    double getDelay() const;\n\n    /**\n     * Method: isStarted\n     * Usage: if (timer.isStarted()) { ... }\n     * -------------------------------------\n     * Returns true if the given timer has been started (via start()).\n     * If you stop the timer or have not started it yet,\n     * this method will return false.\n     */\n    bool isStarted() const;\n\n    /**\n     * Stops the timer (if it was started) and then starts it again.\n     */\n    void restart();\n\n    /**\n     * Changes the delay in milliseconds between each tick of this timer.\n     * If the timer is currently running, calling this method will stop\n     * and restart the timer with the new delay.\n     *\n     * @throw ErrorException if milliseconds is negative\n     */\n    void setDelay(double ms);\n\n    /**\n     * Starts the timer.  A timer continues to generate timer events until it\n     * is stopped; to achieve the effect of a one-shot timer, the simplest\n     * approach is to call the <code>stop</code> method inside the event\n     * handler.\n     */\n    void start();\n\n    /**\n     * Stops the timer so that it stops generating events until it is restarted.\n     */\n    void stop();\n\nprivate:\n    double _ms;\n    int _id;\n};\n\n#endif // _gtimer_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/gtypes.h",
    "content": "/*\n * File: gtypes.h\n * --------------\n * This file defines classes for representing points, dimensions, and\n * rectangles.\n *\n * @version 2018/09/09\n * - added doc comments for new documentation generation\n * @version 2018/07/14\n * - initial version, based on gtypes.h\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n// signal that GUI system is in use (so it will be initialized)\n#define SPL_QT_GUI_IN_USE 1\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _gtypes_h\n#define _gtypes_h\n\n#include <functional>\n#include <iostream>\n#include <Qt>\n#include <string>\n\n/**\n * An alias for a function wrapper around a void function with no parameters\n * and no return.\n */\ntypedef std::function<void()> GThunk;\n\n/**\n * An alias for a function wrapper around a function with no parameters\n * and an int return (such as main()).\n */\ntypedef std::function<int()> GThunkInt;\n\nclass Point;\n\n/**\n * This class contains real-valued width and height fields.\n * It is used to indicate the size of a graphical object.\n */\nclass GDimension {\npublic:\n    /**\n     * Creates a <code>GDimension</code> object with the specified\n     * <code>width</code> and <code>height</code> coordinates.  If the\n     * coordinates are not supplied, the default constructor sets these\n     * fields to 0.\n     */\n    GDimension(double width = 0, double height = 0);\n\n    /**\n     * Returns the width component of the <code>GDimension</code> object.\n     */\n    double getWidth() const;\n\n    /**\n     * Returns the height component of the <code>GDimension</code> object.\n     */\n    double getHeight() const;\n\n    /**\n     * Converts the <code>GDimension</code> to a string in the form\n     * <code>\"(</code><i>width</i><code>,</code>&nbsp;<i>height</i><code>)\"</code>.\n     */\n    std::string toString() const;\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in this class is logically part  */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\nprivate:\n    /* Instance variables */\n    double _width;                   /* The width of the GDimension       */\n    double _height;                  /* The height of the GDimension      */\n\n    /* Friend declarations */\n    friend std::ostream& operator <<(std::ostream& os, const GDimension& dim);\n    friend bool operator ==(const GDimension& d1, const GDimension& d2);\n    friend bool operator !=(const GDimension& d1, const GDimension& d2);\n    friend bool operator <(const GDimension& d1, const GDimension& d2);\n    friend bool operator <=(const GDimension& d1, const GDimension& d2);\n    friend bool operator >(const GDimension& d1, const GDimension& d2);\n    friend bool operator >=(const GDimension& d1, const GDimension& d2);\n    friend GDimension operator *(const GDimension& d, double scale);\n    friend int hashCode(const GDimension& dim);\n};\n\n/**\n * Writes the GDimension to the given output stream.\n */\nstd::ostream& operator <<(std::ostream& os, const GDimension& dim);\n\n/**\n * Compares two GDimension objects for equality.\n */\nbool operator ==(const GDimension& d1, const GDimension& d2);\n\n/**\n * Compares two GDimension objects for inequality.\n */\nbool operator !=(const GDimension& d1, const GDimension& d2);\n\n/**\n * Relational operators that compare two GDimension objects by width and\n * then by height.\n */\nbool operator <(const GDimension& d1, const GDimension& d2);\n\n/**\n * Relational operators that compare two GDimension objects by width and\n * then by height.\n */\nbool operator <=(const GDimension& d1, const GDimension& d2);\n\n/**\n * Relational operators that compare two GDimension objects by width and\n * then by height.\n */\nbool operator >(const GDimension& d1, const GDimension& d2);\n\n/**\n * Relational operators that compare two GDimension objects by width and\n * then by height.\n */\nbool operator >=(const GDimension& d1, const GDimension& d2);\n\n/**\n * Multiplies the width and height of the given GDimension object by the given\n * scale factor and returns the scaled dimension object.\n */\nGDimension operator *(const GDimension& d, double scale);\n\n/**\n * Hashing function for GDimension objects.\n */\nint hashCode(const GDimension& dim);\n\n/**\n * The supported kinds of horizontal alignment of a widget or\n * onscreen object.\n */\nenum HorizontalAlignment {\n    ALIGN_CENTER,\n    ALIGN_LEFT,\n    ALIGN_RIGHT,\n    ALIGN_HORIZONTAL_STRETCH\n};\n\n/**\n * The supported kinds of vertical alignment of a widget or\n * onscreen object.\n */\nenum VerticalAlignment {\n    ALIGN_MIDDLE,\n    ALIGN_TOP,\n    ALIGN_BOTTOM,\n    ALIGN_VERTICAL_STRETCH\n};\n\n/**\n * Constants for alignments and icon positions.\n * Retained for backward compatibility; new code should not use this enum.\n *\n */\nenum SwingConstants {\n    SWING_CENTER,\n    SWING_TOP,\n    SWING_LEFT,\n    SWING_BOTTOM,\n    SWING_RIGHT\n};\n// Note: Must keep in sync with GInteractor::TextPosition.\n\n/**\n * Converts an alignment value into a string such as \"Center\" or \"Left\".\n */\nstd::string toString(HorizontalAlignment alignment);\n\n/**\n * Converts an alignment value into a string such as \"Middle\" or \"Top\".\n */\nstd::string toString(VerticalAlignment alignment);\n\n/**\n * Converts a string such as \"Center\" or \"Left\" into an alignment value.\n */\nHorizontalAlignment toHorizontalAlignment(const std::string& alignmentStr);\n\n/**\n * Converts our alignment values into Qt alignment constants.\n */\nQt::Alignment toQtAlignment(HorizontalAlignment alignment);\n\n/**\n * Converts our alignment values into Qt alignment constants.\n */\nQt::Alignment toQtAlignment(VerticalAlignment alignment);\n\n/**\n * Converts a string such as \"Middle\" or \"Top\" into an alignment value.\n */\nVerticalAlignment toVerticalAlignment(const std::string& alignmentStr);\n\n/**\n * This class contains real-valued x and y fields.\n * It is used to represent a location on the graphics plane.\n */\nclass GPoint {\npublic:\n    /**\n     * Creates a <code>GPoint</code> object with the specified <code>x</code>\n     * and <code>y</code> coordinates.  If the coordinates are not supplied,\n     * the default constructor sets these fields to 0.\n     */\n    GPoint(double x = 0, double y = 0);\n\n    /**\n     * Creates a <code>GPoint</code> object with the same <code>x</code>\n     * and <code>y</code> coordinates as the given point.\n     */\n    GPoint(const Point& point);\n\n    /**\n     * Returns the x component of the point.\n     */\n    double getX() const;\n\n    /**\n     * Returns the y component of the point.\n     */\n    double getY() const;\n\n    /**\n     * Converts the <code>GPoint</code> to a string in the form\n     * <code>\"(</code><i>x</i><code>,</code>&nbsp;<i>y</i><code>)\"</code>.\n     */\n    std::string toString() const;\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in this class is logically part  */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\nprivate:\n    /* Instance variables */\n    double _x;                       /* The x-coordinate of the point */\n    double _y;                       /* The y-coordinate of the point */\n\n    /* Friend declarations */\n    friend std::ostream& operator <<(std::ostream& out, const GPoint& p);\n    friend bool operator ==(const GPoint& p1, const GPoint& p2);\n    friend bool operator !=(const GPoint& p1, const GPoint& p2);\n    friend bool operator <(const GPoint& p1, const GPoint& p2);\n    friend bool operator <=(const GPoint& p1, const GPoint& p2);\n    friend bool operator >(const GPoint& p1, const GPoint& p2);\n    friend bool operator >=(const GPoint& p1, const GPoint& p2);\n    friend GPoint operator *(const GPoint& p, double scale);\n    friend int hashCode(const GPoint& pt);\n};\n\n/**\n * Writes the given point to the given output stream.\n */\nstd::ostream& operator <<(std::ostream& os, const GPoint& pt);\n\n/**\n * Compares two GPoint objects for equality.\n */\nbool operator ==(const GPoint& p1, const GPoint& p2);\n\n/**\n * Compares two GPoint objects for inequality.\n */\nbool operator !=(const GPoint& p1, const GPoint& p2);\n\n/**\n * Relational operators that compare points by x-coordinate and then\n * by y-coordinate.\n */\nbool operator <(const GPoint& p1, const GPoint& p2);\n\n/**\n * Relational operators that compare points by x-coordinate and then\n * by y-coordinate.\n */\nbool operator <=(const GPoint& p1, const GPoint& p2);\n\n/**\n * Relational operators that compare points by x-coordinate and then\n * by y-coordinate.\n */\nbool operator >(const GPoint& p1, const GPoint& p2);\n\n/**\n * Relational operators that compare points by x-coordinate and then\n * by y-coordinate.\n */\nbool operator >=(const GPoint& p1, const GPoint& p2);\n\n/**\n * Multiplies the x and y coordinates of the given point by the given scale\n * factor and returns the scaled point.\n */\nGPoint operator *(const GPoint& p, double scale);\n\n/**\n * Hashing function for GPoint objects.\n */\nint hashCode(const GPoint& pt);\n\n/**\n * This class contains real-valued x, y, width, and height fields.\n * It is used to represent the bounding box of a graphical object.\n */\nclass GRectangle {\npublic:\n    /**\n     * Creates a <code>GRectangle</code> object with the specified position\n     * and size. If these parameters are not supplied, the constructor sets\n     * these fields to 0.\n     */\n    GRectangle(double x = 0, double y = 0, double width = 0, double height = 0);\n\n    /**\n     * Creates a <code>GRectangle</code> object with the specified position\n     * and size. If these parameters are not supplied, the constructor sets\n     * these fields to 0.\n     */\n    GRectangle(double x, double y, const GDimension& size);\n\n    /**\n     * Creates a <code>GRectangle</code> object with the specified position\n     * and size. If these parameters are not supplied, the constructor sets\n     * these fields to 0.\n     */\n    GRectangle(const GPoint& p, double width = 0, double height = 0);\n\n    /**\n     * Creates a <code>GRectangle</code> object with the specified position\n     * and size. If these parameters are not supplied, the constructor sets\n     * these fields to 0.\n     */\n    GRectangle(const GPoint& p, const GDimension& size);\n\n    /**\n     * Returns <code>true</code> if the rectangle contains the given point.\n     */\n    bool contains(double x, double y) const;\n\n    /**\n     * Returns <code>true</code> if the rectangle contains the given point.\n     */\n    bool contains(const GPoint& pt) const;\n\n    /**\n     * Returns <code>true</code> if this rectangle contains the given rectangle\n     * entirely.\n     */\n    bool contains(const GRectangle& rect) const;\n\n    /**\n     * Returns a new rectangle with its boundaries shifted outward by the given\n     * amount on all 4 sides.\n     * e.g. a 10x10 rectangle at position (55, 42) enlarged by 1 will become\n     *      a 12x12 rectangle at position (54, 41).\n     */\n    GRectangle enlargedBy(double amount);\n\n    /**\n     * Returns the x component of the rectangle.\n     */\n    double getX() const;\n\n    /**\n     * Returns the y component of the rectangle.\n     */\n    double getY() const;\n\n    /**\n     * Returns the width component of the rectangle.\n     */\n    double getWidth() const;\n\n    /**\n     * Returns the height component of the rectangle.\n     */\n    double getHeight() const;\n\n    /**\n     * Returns true if this rectangle and the given other rectangle overlap.\n     */\n    bool intersects(const GRectangle& other) const;\n\n    /**\n     * Returns <code>true</code> if the rectangle is empty, meaning that it\n     * has a width and height that are both 0 or negative.\n     */\n    bool isEmpty() const;\n\n    /**\n     * Converts the <code>GRectangle</code> to a string in the form\n     * <code>\"(</code><i>x</i><code>,</code>&nbsp;<i>y</i><code>,</code>\n     * <i>width</i><code>,</code>&nbsp;<i>height</i><code>)\"</code>.\n     */\n    std::string toString() const;\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in this class is logically part  */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\nprivate:\n    /* Instance variables */\n    double _x;        /* The x-coordinate of the rectangle */\n    double _y;        /* The y-coordinate of the rectangle */\n    double _width;    /* The width of the rectangle        */\n    double _height;   /* The height of the rectangle       */\n\n    /* Friend declarations */\n    friend std::ostream& operator <<(std::ostream& os, const GRectangle& rect);\n    friend bool operator ==(const GRectangle& r1, const GRectangle& r2);\n    friend bool operator !=(const GRectangle& r1, const GRectangle& r2);\n    friend bool operator <(const GRectangle& r1, const GRectangle& r2);\n    friend bool operator <=(const GRectangle& r1, const GRectangle& r2);\n    friend bool operator >(const GRectangle& r1, const GRectangle& r2);\n    friend bool operator >=(const GRectangle& r1, const GRectangle& r2);\n    friend int hashCode(const GRectangle& r);\n};\n\n/**\n * Writes the given rectangle to the given output stream.\n */\nstd::ostream& operator <<(std::ostream& os, const GRectangle& rect);\n\n/**\n * Compares two rectangles for equality.\n */\nbool operator ==(const GRectangle& r1, const GRectangle& r2);\n\n/**\n * Compares two rectangles for inequality.\n */\nbool operator !=(const GRectangle& r1, const GRectangle& r2);\n\n/**\n * Relational operators that compare rectangles by x, y, then width, then height.\n */\nbool operator <(const GRectangle& r1, const GRectangle& r2);\n\n/**\n * Relational operators that compare rectangles by x, y, then width, then height.\n */\nbool operator <=(const GRectangle& r1, const GRectangle& r2);\n\n/**\n * Relational operators that compare rectangles by x, y, then width, then height.\n */\nbool operator >(const GRectangle& r1, const GRectangle& r2);\n\n/**\n * Relational operators that compare rectangles by x, y, then width, then height.\n */\nbool operator >=(const GRectangle& r1, const GRectangle& r2);\n\n/**\n * Hashing function for GRectangle objects.\n */\nint hashCode(const GRectangle& r);\n\n#endif // _gtypes_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/gwindow.h",
    "content": "/*\n * File: gwindow.h\n * ---------------\n *\n * @author Marty Stepp\n * @version 2019/05/05\n * - added static method for isDarkMode checking support\n * - added static methods to ask for system default widget bg/fg color\n * @version 2019/04/09\n * - added toolbar support\n * @version 2018/10/20\n * - added high-density screen features\n * @version 2018/09/09\n * - added doc comments for new documentation generation\n * @version 2018/09/05\n * - refactored to use a border layout GContainer \"content pane\" for storing all interactors\n * @version 2018/08/23\n * - renamed to gwindow.h to replace Java version\n * @version 2018/07/29\n * - menu bars\n * @version 2018/06/25\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n// signal that GUI system is in use (so it will be initialized)\n#define SPL_QT_GUI_IN_USE 1\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _gwindow_h\n#define _gwindow_h\n\n#include <string>\n#include <QWindow>\n#include <QCloseEvent>\n#include <QEvent>\n#include <QLayout>\n#include <QMainWindow>\n#include <QRect>\n\n#define INTERNAL_INCLUDE 1\n#include \"gcanvas.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gcontainer.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gdrawingsurface.h\"\n#define INTERNAL_INCLUDE 1\n#include \"geventqueue.h\"\n#define INTERNAL_INCLUDE 1\n#include \"ginteractor.h\"\n#define INTERNAL_INCLUDE 1\n#include \"grid.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gtypes.h\"\n#define INTERNAL_INCLUDE 1\n#include \"map.h\"\n#define INTERNAL_INCLUDE 1\n#include \"point.h\"\n#define INTERNAL_INCLUDE 1\n#include \"set.h\"\n#undef INTERNAL_INCLUDE\n\nclass _Internal_QMainWindow;\n\n/**\n * This class represents a graphics window that supports simple graphics.\n * A GWindow is a first-class citizen in our GUI subsystem; all graphical\n * programs will create at least one GWindow to hold other interactors and\n * graphical objects for display on the screen.\n *\n * A GWindow simultaneously serves two major graphical purposes:\n *\n * 1) A top-level container for interactors.\n * You can call the addToRegion and add methods to add interactors to the north,\n * south, west, east, and center regions of the window.\n * The center region holds at most one interactor that expands in both dimensions\n * to fill pixels not occupied by the other four regions.\n * This is analogous to Java AWT/Swing's BorderLayout system.\n * The window uses an internal GContainer that we call its \"content pane\" to\n * layout the positions and sizes of these interactors.\n * See gcontainer.h for more detail about layout and containers.\n *\n * 2) A graphical canvas for drawing shapes, lines, and colors.\n * A GWindow contains a central graphical canvas that is implemented as an\n * object of type GCanvas.  The canvas will appear on the window the moment you\n * call any drawing method on the window.\n *\n * The graphical canvas consists of two layers.\n * The background layer provides a surface for drawing static pictures that\n * involve no animation, or for 2D pixel-based drawing algorithms.\n * See gcanvas.h and gobjects.h for more detail about drawing shapes, objects,\n * and pixels.\n *\n * The GWindow class includes several drawXxx and fillXxx methods that draw\n * lines, rectangles, and ovals on the background layer without the client\n * needing to directly create objects from the gobjects.h hierarchy.\n *\n * The foreground layer provides an abstraction for adding stateful shapes and\n * graphical objects onto the canvas.  The add() methods that accept GObject\n * parameters place these objects onto the foreground layer.  The advantage of\n * the foreground layer is that you can manipulate the object over time, such as\n * moving it, changing its color, size, or other properties, and see these\n * changes immediately on the screen.  This makes the foreground layer most\n * appropriate for animations or moving sprites.\n *\n * You can use the two GWindow paradigms together in the same window.\n * For example, you can place a row of buttons in the north or south while\n * drawing shapes onto the canvas in the center of the window.\n *\n * If you add() a GInteractor to the center region of the window, we will assume\n * that you do not want the graphical canvas and will replace it with the added\n * interactor.\n */\nclass GWindow : public GObservable, public virtual GForwardDrawingSurface {\npublic:\n    /**\n     * The five regions of window border layouts.\n     */\n    enum Region {\n        REGION_CENTER = GContainer::REGION_CENTER,\n        REGION_EAST = GContainer::REGION_EAST,\n        REGION_NORTH = GContainer::REGION_NORTH,\n        REGION_SOUTH = GContainer::REGION_SOUTH,\n        REGION_WEST = GContainer::REGION_WEST\n    };\n\n    /**\n     * The various actions that can occur when a window closes.\n     */\n    enum CloseOperation {\n        CLOSE_DO_NOTHING,\n        CLOSE_HIDE,\n        CLOSE_DISPOSE,\n        CLOSE_EXIT\n    };\n\n    /**\n     * The default width of a newly created window in pixels if\n     * its width is not explicitly specified.\n     */\n    static const int DEFAULT_WIDTH;\n\n    /**\n     * The default height of a newly created window in pixels if\n     * its height is not explicitly specified.\n     */\n    static const int DEFAULT_HEIGHT;\n\n    /**\n     * The minimum number of dots per inch before a screen is considered\n     * to be high-density or high-DPI.\n     */\n    static const int HIGH_DPI_SCREEN_THRESHOLD;\n\n    /**\n     * The minimum number of dots per inch on a \"normal\" low-DPI screen.\n     * Used to figure out how much to scale up on high-DPI screens.\n     */\n    static const int STANDARD_SCREEN_DPI;\n\n    /**\n     * The default file name used to load a GWindow's initial\n     * title bar icon.\n     */\n    static const std::string DEFAULT_ICON_FILENAME;\n\n    /**\n     * Creates a new window of a default width and height.\n     */\n    GWindow(bool visible = true);\n\n    /**\n     * Creates a new window of the given width and height.\n     */\n    GWindow(double width, double height, bool visible = true);\n\n    /**\n     * Creates a new window of the given location and size.\n     */\n    GWindow(double x, double y, double width, double height, bool visible = true);\n\n    /**\n     * Frees memory allocated internally by the window.\n     */\n    virtual ~GWindow() Q_DECL_OVERRIDE;\n\n    /**\n     * Adds the given interactor to the center region of the window.\n     * This replaces the graphical canvas and causes the canvas to be hidden.\n     * @throw ErrorException if the interactor is null\n     */\n    virtual void add(GInteractor* interactor);\n\n    /**\n     * Adds the given interactor to the center region of the window\n     * and moves it to the given x/y location.\n     * This replaces the graphical canvas and causes the canvas to be hidden.\n     * @throw ErrorException if the interactor is null\n     */\n    virtual void add(GInteractor* interactor, double x, double y);\n\n    /**\n     * Adds the given interactor to the center region of the window.\n     * This replaces the graphical canvas and causes the canvas to be hidden.\n     */\n    virtual void add(GInteractor& interactor);\n\n    /**\n     * Adds the given interactor to the center region of the window\n     * and moves it to the given x/y location.\n     * This replaces the graphical canvas and causes the canvas to be hidden.\n     */\n    virtual void add(GInteractor& interactor, double x, double y);\n\n    /**\n     * Adds the given graphical object to the window's canvas.\n     * This causes the graphical canvas to appear if it was not already showing.\n     * @throw ErrorException if the interactor is null\n     */\n    virtual void add(GObject* obj);\n\n    /**\n     * Adds the given graphical object to the window's canvas\n     * and moves it to the given x/y location.\n     * This causes the graphical canvas to appear if it was not already showing.\n     * @throw ErrorException if the interactor is null\n     */\n    virtual void add(GObject* obj, double x, double y);\n\n    /**\n     * Adds the given graphical object to the window's canvas.\n     * This causes the graphical canvas to appear if it was not already showing.\n     */\n    virtual void add(GObject& obj);\n\n    /**\n     * Adds the given graphical object to the window's canvas\n     * and moves it to the given x/y location.\n     * This causes the graphical canvas to appear if it was not already showing.\n     */\n    virtual void add(GObject& obj, double x, double y);\n\n    /**\n     * Adds a menu with the given text to the window's top menu bar.\n     * If the given menu already exists, returns it without adding it again.\n     */\n    virtual QMenu* addMenu(const std::string& text);\n\n    /**\n     * Adds a new menu item to the given menu.\n     * If the given menu item already exists in this menu, returns it without\n     * adding it again.\n     * You can supply an optional icon to show next to the menu item.\n     * When the menu item is clicked, an ACTION_MENU action event will occur.\n     * @throw ErrorException if the given menu does not exist\n     */\n    virtual QAction* addMenuItem(const std::string& menu, const std::string& item,\n                                 const std::string& icon = \"\");\n\n    /**\n     * Adds a new menu item to the given menu.\n     * If the given menu item already exists in this menu, returns it without\n     * adding it again.\n     * You can supply an optional icon to show next to the menu item.\n     * When the menu item is clicked, the given listener function will be called.\n     * @throw ErrorException if the given menu does not exist\n     */\n    virtual QAction* addMenuItem(const std::string& menu, const std::string& item,\n                                 const std::string& icon, GEventListenerVoid func);\n\n    /**\n     * Adds a new menu item to the given menu.\n     * If the given menu item already exists in this menu, returns it without\n     * adding it again.\n     * You can supply an optional icon to show next to the menu item.\n     * When the menu item is clicked, the given listener function will be called.\n     * @throw ErrorException if the given menu does not exist\n     */\n    virtual QAction* addMenuItem(const std::string& menu, const std::string& item,\n                                 const QIcon& icon, GEventListenerVoid func);\n\n    /**\n     * Adds a new menu item to the given menu.\n     * If the given menu item already exists in this menu, returns it without\n     * adding it again.\n     * You can supply an optional icon to show next to the menu item.\n     * When the menu item is clicked, the given listener function will be called.\n     * @throw ErrorException if the given menu does not exist\n     */\n    virtual QAction* addMenuItem(const std::string& menu, const std::string& item,\n                                 const QPixmap& icon, GEventListenerVoid func);\n\n    /**\n     * Adds a new checkbox menu item to the given menu.\n     * If the given menu item already exists in this menu, returns it without\n     * adding it again.\n     * You can supply an optional icon to show next to the menu item.\n     * When the menu item is clicked, an ACTION_MENU action event will occur.\n     * @throw ErrorException if the given menu does not exist\n     */\n    virtual QAction* addMenuItemCheckBox(const std::string& menu, const std::string& item,\n                                         bool checked = false,\n                                         const std::string& icon = \"\");\n\n    /**\n     * Adds a new checkbox menu item to the given menu.\n     * If the given menu item already exists in this menu, returns it without\n     * adding it again.\n     * You can supply an optional icon to show next to the menu item.\n     * When the menu item is clicked, the given listener function will be called.\n     * @throw ErrorException if the given menu does not exist\n     */\n    virtual QAction* addMenuItemCheckBox(const std::string& menu, const std::string& item,\n                                         bool checked,\n                                         const std::string& icon, GEventListenerVoid func);\n\n    /**\n     * Adds a horizontal line separator to the end of the given menu.\n     * @throw ErrorException if the given menu does not exist\n     */\n    virtual QAction* addMenuSeparator(const std::string& menu);\n\n    /**\n     * Adds a sub-menu within an existing menu.\n     * You can later add items to this sub-menu using:\n     *\n     * myWindow->addMenuItem(menu + \"/\" + submenu, item);\n     * @throw ErrorException if the given menu does not exist\n     */\n    virtual QMenu* addSubMenu(const std::string& menu, const std::string& submenu);\n\n    /**\n     * Adds the given interactor to the given region in this window.\n     * @throw ErrorException if the interactor is null\n     */\n    virtual void addToRegion(GInteractor* interactor, Region region);\n\n    /**\n     * Adds the given interactor to the given region in this window.\n     * @throw ErrorException if the interactor is null\n     */\n    virtual void addToRegion(GInteractor* interactor, const std::string& region = \"Center\");\n\n    /**\n     * Adds the given interactor to the given region in this window.\n     */\n    virtual void addToRegion(GInteractor& interactor, Region region);\n\n    /**\n     * Adds the given interactor to the given region in this window.\n     */\n    virtual void addToRegion(GInteractor& interactor, const std::string& region = \"Center\");\n\n    /**\n     * Adds a toolbar to this window where action buttons can be placed.\n     */\n    virtual void addToolbar(const std::string& title = \"\");\n\n    /**\n     * Adds a new item to the window's toolbar.\n     * If the window does not have a toolbar, one is added.\n     * You can supply an optional icon to show next to the menu item.\n     * When the menu item is clicked, an ACTION_MENU action event will occur.\n     */\n    virtual QAction* addToolbarItem(const std::string& item,\n                                    const std::string& icon = \"\");\n\n    /**\n     * Adds a new item to the window's toolbar.\n     * If the window does not have a toolbar, one is added.\n     * You can supply an optional icon to show next to the menu item.\n     * When the menu item is clicked, the given listener function will be called.\n     */\n    virtual QAction* addToolbarItem(const std::string& item,\n                                    const std::string& icon,\n                                    GEventListenerVoid func);\n\n    /**\n     * Adds a new item to the window's toolbar.\n     * If the window does not have a toolbar, one is added.\n     * You can supply an optional icon to show next to the menu item.\n     * When the menu item is clicked, the given listener function will be called.\n     */\n    virtual QAction* addToolbarItem(const std::string& item,\n                                    const QIcon& icon,\n                                    GEventListenerVoid func);\n\n    /**\n     * Adds a new item to the window's toolbar.\n     * If the window does not have a toolbar, one is added.\n     * You can supply an optional icon to show next to the menu item.\n     * When the menu item is clicked, the given listener function will be called.\n     */\n    virtual QAction* addToolbarItem(const std::string& item,\n                                    const QPixmap& icon,\n                                    GEventListenerVoid func);\n\n    /**\n     * Adds a separator to the window's toolbar.\n     * If the window does not have a toolbar, one is added.\n     */\n    virtual QAction* addToolbarSeparator();\n\n    /**\n     * Removes all interactors from all regionss of the window.\n     */\n    virtual void clear() Q_DECL_OVERRIDE;\n\n    /**\n     * Removes all graphical objects from the graphical canvas in this window\n     * and resets the background layer to the window's background color.\n     */\n    virtual void clearCanvas();\n\n    /**\n     * Removes all graphical objects from the graphical canvas in this window.\n     * This means that any shapes added using the add() methods, such as GRect,\n     * GOval, etc. will be removed, while any shapes drawn directly onto the\n     * window's background pixel layer by calling the drawXxx() methods will be\n     * retained.  To clear the background layer as well, call clearCanvasPixels\n     * or clearCanvas instead.\n     */\n    virtual void clearCanvasObjects();\n\n    /**\n     * Resets the background layer of pixels in the window's canvas to the\n     * window's background color.\n     * This means that any shapes added using the add() methods, such as GRect,\n     * GOval, etc. will remain, while any shapes drawn directly onto the\n     * window's background pixel layer by calling the drawXxx() methods will be\n     * wiped out.  To clear the shapes added to the foreground layer as well,\n     * call clearCanvasObjects or clearCanvas instead.\n     */\n    virtual void clearCanvasPixels();\n\n    /**\n     * Removes all interactors from the given region of this window.\n     */\n    virtual void clearRegion(Region region);\n\n    /**\n     * Removes all interactors from the given region of this window.\n     */\n    virtual void clearRegion(const std::string& region);\n\n    /**\n     * Removes all items from the window's toolbar, if present.\n     */\n    virtual void clearToolbarItems();\n\n    /**\n     * Relocates the window to the exact center of the current screen.\n     */\n    virtual void center();\n\n    /**\n     * Returns which color to use depending on whether the user's computer is\n     * in light or dark mode.\n     * If in light mode, returns lightColor; else returns darkColor.\n     */\n    static std::string chooseLightDarkModeColor(const std::string& lightColor,\n                                                const std::string& darkColor);\n\n    /**\n     * Returns which color to use depending on whether the user's computer is\n     * in light or dark mode.\n     * If in light mode, returns lightColor; else returns darkColor.\n     */\n    static int chooseLightDarkModeColorInt(int lightColor, int darkColor);\n\n    /**\n     * Closes the window.\n     * If a window listener has been set, a WINDOW_CLOSING and then\n     * WINDOW_CLOSED event is sent to it.\n     */\n    virtual void close();\n\n    /**\n     * Compares the pixels of this window to the contents of the image in the\n     * given file.\n     * The differences are displayed in a \"diff image\" window that highlights\n     * any differing pixels.\n     *\n     * TODO: implement\n     * @private\n     */\n    virtual void compareToImage(const std::string& filename, bool ignoreWindowSize = true) const;\n\n    /**\n     * Returns true if events can occur on the window.\n     * This will be true if the window has been initialized and is visible.\n     * @private\n     */\n    virtual bool eventsEnabled() const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns a direct pointer to the window's internal graphical canvas\n     * on which shapes and objects are drawn.\n     * Use with care!\n     */\n    virtual GCanvas* getCanvas() const;\n\n    /**\n     * Returns the height of the window's central canvas area in pixels.\n     */\n    virtual double getCanvasHeight() const;\n\n    /**\n     * Returns the width and height of the window's central canvas area in pixels.\n     */\n    virtual GDimension getCanvasSize() const;\n\n    /**\n     * Returns the width of the window's central canvas area in pixels.\n     */\n    virtual double getCanvasWidth() const;\n\n    /**\n     * Returns a constant representing the action that will be taken when the\n     * user closes the window.\n     */\n    virtual CloseOperation getCloseOperation() const;\n\n    /**\n     * Returns the default color for backgrounds of interactors as a string.\n     * This is normally a light-grayish color, depending on the user's\n     * system settings.\n     * On some systems that are in \"dark mode\" this may be a color closer to black.\n     */\n    static std::string getDefaultInteractorBackgroundColor();\n\n    /**\n     * Returns the default color for text on interactors as an RGB integer.\n     * This is normally a light-grayish color, depending on the user's\n     * system settings.\n     * On some systems that are in \"dark mode\" this may be a color closer to black.\n     */\n    static int getDefaultInteractorBackgroundColorInt();\n\n    /**\n     * Returns the default color for text on interactors as a string.\n     * This is normally black or a nearly-black color, depending on the user's\n     * system settings.\n     * On some systems that are in \"dark mode\" this may be a color closer to white.\n     */\n    static std::string getDefaultInteractorTextColor();\n\n    /**\n     * Returns the default color for text on interactors as an RGB integer.\n     * This is normally black or a nearly-black color, depending on the user's\n     * system settings.\n     * On some systems that are in \"dark mode\" this may be a color closer to white.\n     */\n    static int getDefaultInteractorTextColorInt();\n\n    /**\n     * Returns the graphical object at the given 0-based index in the window's\n     * graphical canvas.\n     * @throw ErrorException if the index is out of bounds\n     */\n    virtual GObject* getGObject(int index) const;\n\n    /**\n     * Returns the top-most graphical object in the z-ordering in the window's\n     * graphical canvas that touches the given x/y pixel location.\n     * If no object touches the given location, returns nullptr.\n     */\n    virtual GObject* getGObjectAt(double x, double y) const;\n\n    /**\n     * Returns the total number of graphical objects in the window's canvas.\n     */\n    virtual int getGObjectCount() const;\n\n    /**\n     * Returns a pointer to the most recently created Qt window object.\n     * Not to be called by students.\n     * @private\n     */\n    static QMainWindow* getLastWindow();\n\n    /**\n     * Returns the x/y location of the top-left corner of the interior of the window on screen,\n     * excluding any onscreen window title bar and frame.\n     */\n    virtual GPoint getLocation() const;\n\n    /**\n     * Returns the total height of the window in pixels, excluding its title\n     * bar and borders.\n     */\n    virtual double getHeight() const;\n\n    /**\n     * Returns the size that the window would prefer to be.\n     * The window prefers to be exactly the right size to fit the interactors\n     * placed inside it at their own preferred sizes without stretching.\n     * This is the size that the window will be set to if you call pack().\n     */\n    virtual GDimension getPreferredSize() const;\n\n    /**\n     * Returns the height of the given region of the window in pixels.\n     */\n    virtual double getRegionHeight(Region region) const;\n\n    /**\n     * Returns the height of the given region of the window in pixels.\n     */\n    virtual double getRegionHeight(const std::string& region) const;\n\n    /**\n     * Returns the width and height of the given region of the window in pixels.\n     */\n    virtual GDimension getRegionSize(Region region) const;\n\n    /**\n     * Returns the width and height of the given region of the window in pixels.\n     */\n    virtual GDimension getRegionSize(const std::string& region) const;\n\n    /**\n     * Returns the width of the given region of the window in pixels.\n     */\n    virtual double getRegionWidth(Region region) const;\n\n    /**\n     * Returns the width of the given region of the window in pixels.\n     */\n    virtual double getRegionWidth(const std::string& region) const;\n\n    /**\n     * Returns the dots-per-inch of the screen.\n     * This is used when accounting for high-density screens.\n     */\n    static int getScreenDpi();\n\n    /**\n     * Returns the ratio of this screen's DPI compared to a normal low-DPI screen.\n     * This can be used to scale up graphics on high-density screens.\n     */\n    static double getScreenDpiScaleRatio();\n\n    /**\n     * Returns the height of the entire screen in pixels.\n     */\n    static double getScreenHeight();\n\n    /**\n     * Returns the width and height of the entire screen in pixels.\n     */\n    static GDimension getScreenSize();\n\n    /**\n     * Returns the width of the entire screen in pixels.\n     */\n    static double getScreenWidth();\n\n    /**\n     * Returns the total width and height of the window in pixels, excluding\n     * its title bar and borders.\n     */\n    virtual GDimension getSize() const;\n\n    /**\n     * Returns the title bar text for the window.\n     */\n    virtual std::string getTitle() const;\n\n    /* @inherit */\n    virtual std::string getType() const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns an internal Qt widget representing the window.\n     * Clients do not need to use this method directly.\n     * @private\n     */\n    virtual QWidget* getWidget() const;\n\n    /**\n     * Returns the total width of the window in pixels, excluding its title\n     * bar and borders.\n     */\n    virtual double getWidth() const;\n\n    /**\n     * Returns the x location of the left edge of the interior of the window on screen,\n     * excluding any onscreen window title bar and frame.\n     */\n    virtual double getX() const;\n\n    /**\n     * Returns the y location of the top edge of the interior of the window on screen,\n     * excluding any onscreen window title bar and frame.\n     */\n    virtual double getY() const;\n\n    /**\n     * Returns true if this window has a toolbar.\n     */\n    virtual bool hasToolbar() const;\n\n    /**\n     * Makes the window be not visible on the screen.\n     * Equivalent to setVisible(false).\n     */\n    virtual void hide();\n\n    /**\n     * Returns true if the given x/y location is within the bounds of the entire\n     * window.\n     * Note that this is based on the entire window size including its title\n     * bar, menus, borders, etc.\n     * If you are trying to test for bounds for shapes in the window canvas area,\n     * use the inCanvasBounds method instead.\n     */\n    virtual bool inBounds(double x, double y) const;\n\n    /**\n     * Returns true if the given x/y location is within the bounds of the central\n     * canvas area of the window.\n     */\n    virtual bool inCanvasBounds(double x, double y) const;\n\n    /**\n     * Returns true if the user's computer is in \"dark mode.\"\n     * This is a popular dark color scheme mostly used on recent Macs.\n     * Our checking is imperfect and basically just creates a dummy widget\n     * and checks whether it has bright text and a dark background.\n     */\n    static bool isDarkMode();\n\n    /**\n     * Returns whether the dots-per-inch of the screen are high enough to\n     * consider it a \"high-density\" screen for which scaling should be used.\n     * The threshold for this is given by the constant\n     */\n    static bool isHighDensityScreen();\n\n    /**\n     * Returns whether we should scale some windows when run on high-density\n     * screens.\n     */\n    static bool isHighDpiScalingEnabled();\n\n    /**\n     * Returns true if the window is in a maximized state, occupying the entire\n     * screen.\n     */\n    virtual bool isMaximized() const;\n\n    /**\n     * Returns true if the window is in a minimized (iconified) state, which\n     * often displays as the window being hidden except for a task bar icon.\n     */\n    virtual bool isMinimized() const;\n\n    /**\n     * Returns true if the window is currently open and visible on the screen.\n     */\n    virtual bool isOpen() const;\n\n    /* @inherit */\n    virtual bool isRepaintImmediately() const Q_DECL_OVERRIDE;\n\n    /**\n     * Returns true if the window allows itself to be resized.\n     * This is initially true but can be changed by calling setResizable(false).\n     */\n    virtual bool isResizable() const;\n\n    /**\n     * Returns true if the window is visible on the screen.\n     */\n    virtual bool isVisible() const;\n\n    /**\n     * Reads pixel data from the file with the given name and loads it into the\n     * window's canvas area.\n     * @throw ErrorException if the file is not found or cannot be loaded as an image\n     */\n    virtual void loadCanvasPixels(const std::string& filename);\n\n    /**\n     * Puts the window in a maximized state, occupying the entire screen.\n     */\n    virtual void maximize();\n\n    /**\n     * Puts the window in a minimized (iconified) state, which\n     * often displays as the window being hidden except for a task bar icon.\n     */\n    virtual void minimize();\n\n    /**\n     * Resizes the window to its preferred size.\n     * The window prefers to be exactly the right size to fit the interactors\n     * placed inside it at their own preferred sizes without stretching.\n     * This is the size that the window would return from a call to getPreferredSize.\n     */\n    virtual void pack();\n\n    /**\n     * Causes the current thread to pause itself for the given number of milliseconds.\n     * Equivalent to sleep().\n     * @throw ErrorException if ms is negative\n     */\n    virtual void pause(double ms);\n\n    /**\n     * Instructs the library to remember the window's x/y position so that if\n     * another window with the same title is opened in the future, it will\n     * automatically go back to that location.\n     * @private\n     */\n    virtual void rememberPosition();\n\n    /**\n     * Removes the given interactor from the window.\n     * This will work regardless of which region you added the interactor to.\n     * If the given interactor is not found in this container, has no effect.\n     * @throw ErrorException if the interactor is null\n     */\n    virtual void remove(GInteractor* interactor);\n\n    /**\n     * Removes the given interactor from the window.\n     * This will work regardless of which region you added the interactor to.\n     * If the given interactor is not found in this container, has no effect.\n     */\n    virtual void remove(GInteractor& interactor);\n\n    /**\n     * Removes the given graphical object from the canvas of this window,\n     * if it was present.\n     * @throw ErrorException if the graphical object is null\n     */\n    virtual void remove(GObject* obj);\n\n    /**\n     * Removes the given graphical object from the canvas of this window,\n     * if it was present.\n     */\n    virtual void remove(GObject& obj);\n\n    /**\n     * Removes the click listener from this window so that it will no longer\n     * call it when events occur.\n     */\n    virtual void removeClickListener();\n\n    /**\n     * Removes the given interactor from the given region within this window.\n     * If the given interactor is not found in the given region, has no effect.\n     * @throw ErrorException if the interactor is null\n     */\n    virtual void removeFromRegion(GInteractor* interactor, Region region);\n\n    /**\n     * Removes the given interactor from the given region within this window.\n     * If the given interactor is not found in the given region, has no effect.\n     * @throw ErrorException if the interactor is null\n     */\n    virtual void removeFromRegion(GInteractor* interactor, const std::string& region);\n\n    /**\n     * Removes the given interactor from the given region within this window.\n     * If the given interactor is not found in the given region, has no effect.\n     */\n    virtual void removeFromRegion(GInteractor& interactor, Region region);\n\n    /**\n     * Removes the given interactor from the given region within this window.\n     * If the given interactor is not found in the given region, has no effect.\n     */\n    virtual void removeFromRegion(GInteractor& interactor, const std::string& region);\n\n    /**\n     * Removes the key listener from this window so that it will no longer\n     * call it when events occur.\n     */\n    virtual void removeKeyListener();\n\n    /**\n     * Removes the menu listener from this window so that it will no longer\n     * call it when events occur.\n     */\n    virtual void removeMenuListener();\n\n    /**\n     * Removes the mouse listener from this window so that it will no longer\n     * call it when events occur.\n     */\n    virtual void removeMouseListener();\n\n    /**\n     * Removes the timer listener from this window so that it will no longer\n     * call it when events occur.\n     */\n    virtual void removeTimerListener();\n\n    /**\n     * Removes the toolbar from this window, if one was present.\n     */\n    virtual void removeToolbar();\n\n    /**\n     * Removes the window listener from this window so that it will no longer\n     * call it when events occur.\n     */\n    virtual void removeWindowListener();\n\n    /**\n     * Asks the system to assign the keyboard focus to the window, which brings\n     * it to the top and ensures that key events are delivered to the window.\n     * Clicking in the window automatically requests the focus.\n     */\n    virtual void requestFocus();\n\n    /**\n     * Puts the window in a normal state, neither minimized or maximized.\n     */\n    virtual void restore();\n\n    /**\n     * Writes the contents of the window's graphical canvas to the given output\n     * filename.  This will write all shapes from the foreground layer as well\n     * as all pixels from the background layer.\n     * @throw ErrorException if the file cannot be saved\n     */\n    virtual void saveCanvasPixels(const std::string& filename);\n\n    /* @inherit */\n    virtual void setBackground(int color) Q_DECL_OVERRIDE;\n\n    /* @inherit */\n    virtual void setBackground(const std::string& color) Q_DECL_OVERRIDE;\n\n    /**\n     * Resizes the window so that its central canvas region will occupy exactly\n     * the given height in pixels, without changing its width.\n     */\n    virtual void setCanvasHeight(double height);\n\n    /**\n     * Resizes the window so that its central canvas region will occupy exactly\n     * the given width and height in pixels.\n     */\n    virtual void setCanvasSize(double width, double height);\n\n    /**\n     * Resizes the window so that its central canvas region will occupy exactly\n     * the given width and height in pixels.\n     */\n    virtual void setCanvasSize(const GDimension& size);\n\n    /**\n     * Resizes the window so that its central canvas region will occupy exactly\n     * the given width in pixels, without changing its height.\n     */\n    virtual void setCanvasWidth(double width);\n\n    /**\n     * Sets a mouse listener on this window so that it will be called\n     * when the mouse is clicked on the window's canvas.\n     * Any existing click listener will be replaced.\n     * Note that this method is not how you listen to clicks on individual\n     * buttons and other interactors inside the window; to do that, call\n     * setActionListener and other such methods on those interactors individually.\n     */\n    virtual void setClickListener(GEventListener func);\n\n    /**\n     * Sets a mouse listener on this window so that it will be called\n     * when the mouse is clicked on the window's canvas.\n     * Any existing click listener will be replaced.\n     * Note that this method is not how you listen to clicks on individual\n     * buttons and other interactors inside the window; to do that, call\n     * setActionListener and other such methods on those interactors individually.\n     */\n    virtual void setClickListener(GEventListenerVoid func);\n\n    /**\n     * Sets what should happen when the window is closed.\n     */\n    virtual void setCloseOperation(CloseOperation op);\n\n    /**\n     * Sets whether the library's GUI system should shut down when the\n     * window is closed.\n     */\n    virtual void setExitOnClose(bool exitOnClose);\n\n    /**\n     * Sets the window's total height in pixels.\n     */\n    virtual void setHeight(double width);\n\n    /**\n     * Sets a key listener on this window so that it will be called\n     * when the user presses any key.\n     * Any existing key listener will be replaced.\n     */\n    virtual void setKeyListener(GEventListener func);\n\n    /**\n     * Sets a key listener on this window so that it will be called\n     * when the user presses any key.\n     * Any existing key listener will be replaced.\n     */\n    virtual void setKeyListener(GEventListenerVoid func);\n\n    /**\n     * Sets the window's top-left x/y location on the screen to the given coordinates.\n     */\n    virtual void setLocation(double x, double y);\n\n    /**\n     * Sets the window's top-left x/y location on the screen to the given point.\n     */\n    virtual void setLocation(const GPoint& p);\n\n    /**\n     * Sets the window's top-left x/y location on the screen to the given point.\n     */\n\n    virtual void setLocation(const Point& p);\n\n    /**\n     * Sets whether the given item in the given menu is enabled or disabled.\n     * @throw ErrorException if the menu and/or item does not exist\n     */\n    virtual void setMenuItemEnabled(const std::string& menu, const std::string& item, bool enabled);\n\n    /**\n     * Sets a menu listener on this window so that it will be called\n     * when menu items are clicked, sending an ACTION_MENU action event.\n     * Any existing menu listener will be replaced.\n     */\n    virtual void setMenuListener(GEventListener func);\n\n    /**\n     * Sets a menu listener on this window so that it will be called\n     * when menu items are clicked.\n     * Any existing menu listener will be replaced.\n     */\n    virtual void setMenuListener(GEventListenerVoid func);\n\n    /**\n     * Sets a mouse listener on the window's canvas so that it will be called\n     * when the user moves or clicks the mouse on the canvas.\n     * Any existing mouse listener will be replaced.\n     */\n    virtual void setMouseListener(GEventListener func);\n\n    /**\n     * Sets a mouse listener on the window's canvas so that it will be called\n     * when the user moves or clicks the mouse on the canvas.\n     * Any existing mouse listener will be replaced.\n     */\n    virtual void setMouseListener(GEventListenerVoid func);\n\n    /**\n     * Sets the horizontal alignment of interactors in the given region of\n     * the window.\n     */\n    virtual void setRegionAlignment(Region region, HorizontalAlignment halign);\n\n    /**\n     * Sets the vertical alignment of interactors in the given region of\n     * the window.\n     */\n    virtual void setRegionAlignment(Region region, VerticalAlignment valign);\n\n    /**\n     * Sets the horizontal and vertical alignment of interactors in the given\n     * region of the window.\n     */\n    virtual void setRegionAlignment(Region region, HorizontalAlignment halign, VerticalAlignment valign);\n\n    /**\n     * Sets the horizontal and/or vertical alignment of interactors in the given\n     * region of the window.\n     */\n    virtual void setRegionAlignment(const std::string& region, const std::string& align);\n\n    /**\n     * Sets the horizontal and vertical alignment of interactors in the given\n     * region of the window.\n     */\n    virtual void setRegionAlignment(const std::string& region, const std::string& halign, const std::string& valign);\n\n    /**\n     * Sets the horizontal alignment of interactors in the given region of\n     * the window.\n     */\n    virtual void setRegionHorizontalAlignment(Region region, HorizontalAlignment halign);\n\n    /**\n     * Sets the horizontal alignment of interactors in the given region of\n     * the window.\n     */\n    virtual void setRegionHorizontalAlignment(const std::string& region, const std::string& halign);\n\n    /**\n     * Sets the vertical alignment of interactors in the given region of\n     * the window.\n     */\n    virtual void setRegionVerticalAlignment(const std::string& region, const std::string& valign);\n\n    /**\n     * Sets the vertical alignment of interactors in the given region of\n     * the window.\n     */\n    virtual void setRegionVerticalAlignment(Region region, VerticalAlignment valign);\n\n    /**\n     * Sets whether the window allows itself to be resized.\n     * Initially true.\n     */\n    virtual void setResizable(bool resizable);\n\n    /**\n     * Sets the window's total width and height in pixels.\n     * Note that this size includes the window's title bar, border, etc. as added\n     * by your operating system.\n     * If you actually want to draw shapes over a given width and height of pixels,\n     * you should instead use the setCanvasSize method.\n     */\n    virtual void setSize(double width, double height);\n\n    /**\n     * Sets the window's width and height in pixels.\n     * Note that this size includes the window's title bar, border, etc. as added\n     * by your operating system.\n     * If you actually want to draw shapes over a given width and height of pixels,\n     * you should instead use the setCanvasSize method.\n     */\n    virtual void setSize(const GDimension& size);\n\n    /**\n     * Sets a menu listener on this window so that it will be called\n     * when timer delays elapse, sending a timer event.\n     * Any existing timer listener will be replaced.\n     */\n    virtual void setTimerListener(double ms, GEventListener func);\n\n    /**\n     * Sets a menu listener on this window so that it will be called\n     * when timer delays elapse, sending a timer event.\n     * Any existing timer listener will be replaced.\n     */\n    virtual void setTimerListener(double ms, GEventListenerVoid func);\n\n    // TODO: setTimerListenerOnce?\n\n    /**\n     * Sets the window's title bar text to the given string.\n     * Equivalent to setWindowTitle.\n     */\n    virtual void setTitle(const std::string& title);\n\n    /**\n     * Sets whether the window can be seen on the screen.\n     * Initially true unless a visible value of false was passed to the window's\n     * constructor.\n     */\n    virtual void setVisible(bool visible);\n\n    /**\n     * Sets the window's total width in pixels.\n     */\n    virtual void setWidth(double width);\n\n    /**\n     * Sets the window to use the\n     */\n    virtual void setWindowIcon(const std::string& iconFile);\n\n    /**\n     * Sets a window listener on this window so that it will be called\n     * when window events occur, such as resizing or closing the window.\n     * Any existing action listener will be replaced.\n     */\n    virtual void setWindowListener(GEventListener func);\n\n    /**\n     * Sets a window listener on this window so that it will be called\n     * when window events occur, such as resizing or closing the window.\n     * Any existing action listener will be replaced.\n     */\n    virtual void setWindowListener(GEventListenerVoid func);\n\n    /**\n     * Sets the window's title bar text to the given string.\n     * Equivalent to setWindowTitle.\n     */\n    virtual void setWindowTitle(const std::string& title);\n\n    /**\n     * Sets the window's left x location on the screen to the given coordinate.\n     */\n    virtual void setX(double x);\n\n    /**\n     * Sets the window's top y location on the screen to the given coordinate.\n     */\n    virtual void setY(double y);\n\n    /**\n     * Sets the window to be visible on the screen.\n     * Equivalent to setVisible(true).\n     */\n    virtual void show();\n\n    /**\n     * Causes the current thread to pause itself for the given number of milliseconds.\n     * Equivalent to pause().\n     * @throw ErrorException if ms is negative\n     */\n    virtual void sleep(double ms);\n\n    /**\n     * Moves the window to the back of the z-ordering in the operating system,\n     * underneath any other windows that occupy the same pixels.\n     */\n    virtual void toBack();\n\n    /**\n     * Moves the window to the front of the z-ordering in the operating system,\n     * in front of any other windows that occupy the same pixels.\n     */\n    virtual void toFront();\n\n    /**\n     * An internal function that disables the exitGraphics function so that\n     * students cannot exit their programs during autograding.\n     * This function is effectively private and should not be called by students.\n     */\n    static void _autograder_setExitGraphicsEnabled(bool enabled);\n\n    /**\n     * An internal function that disables the pause function so that\n     * students cannot pausetheir programs during autograding.\n     * This function is effectively private and should not be called by students.\n     */\n    static void _autograder_setPauseEnabled(bool enabled);\n\n    /**\n     * An internal function that sets whether the current window is part of an\n     * autograder program.\n     * This function is effectively private and should not be called by students.\n     */\n    virtual void _autograder_setIsAutograderWindow(bool isAutograderWindow);\n\nprotected:\n    /**\n     * @private\n     */\n    virtual void processKeyPressEventInternal(QKeyEvent* event);\n\nprivate:\n    Q_DISABLE_COPY(GWindow)\n\n    static _Internal_QMainWindow* _lastWindow;\n\n    virtual void ensureForwardTarget() Q_DECL_OVERRIDE;\n    void _init(double width, double height, bool visible);\n    static Region stringToRegion(const std::string& regionStr);\n\n    _Internal_QMainWindow* _iqmainwindow;\n    GContainer* _contentPane;\n    GCanvas* _canvas;\n    bool _resizable;\n    CloseOperation _closeOperation;\n    Map<std::string, QMenu*> _menuMap;\n    Map<std::string, QAction*> _menuActionMap;\n    QToolBar* _toolbar;\n\n    friend class GInteractor;\n    friend class _Internal_QMainWindow;\n};\n\n\n// global functions for compatibility\n\n/**\n * Converts a color name into an integer that encodes the\n * red, green, and blue components of the color.\n * See gcolor.h for more details about colors.\n */\nint convertColorToRGB(const std::string& colorName);\n\n/**\n * Converts an <code>rgb</code> value into a color name in the\n * form <code>\"#rrggbb\"</code>.  Each of the <code>rr</code>,\n * <code>gg</code>, and <code>bb</code> values are two-digit\n * hexadecimal numbers indicating the intensity of that component.\n * See gcolor.h for more details about colors.\n */\nstd::string convertRGBToColor(int rgb);\n\n/**\n * Closes all graphics windows and exits from the application without\n * waiting for any additional user interaction.\n */\nvoid exitGraphics();\n\n/**\n * Returns the height of the entire display screen.\n */\ndouble getScreenHeight();\n\n/**\n * Returns the width/height of the entire display screen.\n */\nGDimension getScreenSize();\n\n/**\n * Returns the width of the entire display screen.\n */\ndouble getScreenWidth();\n\n/**\n * Pauses for the indicated number of milliseconds.  This function is\n * useful for animation where the motion would otherwise be too fast.\n */\nvoid pause(double milliseconds);\n\n/**\n * Issues a request to update the most recently created graphics window.\n * You can also call the repaint() method on a window directly to repaint that window.\n */\nvoid repaint();\n\n\n/**\n * Internal class; not to be used by clients.\n * @private\n */\nclass _Internal_QMainWindow : public QMainWindow {\n    Q_OBJECT\n\npublic:\n    _Internal_QMainWindow(GWindow* gwindow, QWidget* parent = nullptr);\n\n    virtual void changeEvent(QEvent* event) Q_DECL_OVERRIDE;\n    virtual void closeEvent(QCloseEvent* event) Q_DECL_OVERRIDE;\n    virtual void keyPressEvent(QKeyEvent* event) Q_DECL_OVERRIDE;\n    virtual void resizeEvent(QResizeEvent* event) Q_DECL_OVERRIDE;\n    virtual void timerEvent(QTimerEvent* event) Q_DECL_OVERRIDE;\n    virtual bool timerExists(int id = -1);\n    virtual int timerStart(double ms);\n    virtual void timerStop(int id = -1);\n\npublic slots:\n    void handleMenuAction(const std::string& menu, const std::string& item);\n\nprivate:\n    GWindow* _gwindow;\n    Set<int> _timerIDs;\n\n    void processTimerEvent();\n\n    friend class GWindow;\n};\n\n#endif // _gwindow_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/graphics/qtgui.h",
    "content": "/*\n * File: qtgui.h\n * -------------\n *\n * @author Marty Stepp\n * @version 2018/09/09\n * - added doc comments for new documentation generation\n * @version 2018/08/23\n * - renamed to qtgui.h\n * @version 2018/07/03\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n// signal that GUI system is in use (so it will be initialized)\n#define SPL_QT_GUI_IN_USE 1\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _qtgui_h\n#define _qtgui_h\n\n#include <functional>\n#include <string>\n#include <QApplication>\n#include <QObject>\n#include <QReadWriteLock>\n\n#define INTERNAL_INCLUDE 1\n#include \"geventqueue.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gthread.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gtypes.h\"\n#define INTERNAL_INCLUDE 1\n#include \"queue.h\"\n#undef INTERNAL_INCLUDE\n\nclass GWindow;\n\nclass QSPLApplication : public QApplication {\npublic:\n    QSPLApplication(int& argc, char *argv[]);\n    bool notify(QObject* receiver, QEvent* e) Q_DECL_OVERRIDE;\n};\n\n\n/**\n * This class contains functionality for initializing and managing the overall\n * Qt-based GUI system of the library.\n * Students and clients generally do not need to interact with this class\n * directly.\n * @private\n */\nclass QtGui : public QObject {\n    Q_OBJECT\n\npublic:\n    /**\n     * Shuts down the Qt graphics system.\n     */\n    void exitGraphics(int exitCode = 0);\n\n    /**\n     * Returns the count of arguments passed to the main() function.\n     * The string arguments themselves can be examined using getArgv.\n     */\n    int getArgc() const;\n\n    /**\n     * Returns the string arguments passed to the main() function.\n     * The number of arguments is found using getArgc.\n     */\n    char** getArgv() const;\n\n    /**\n     * Initializes the Qt graphics subsystem if it is not initialized already.\n     * Clients do not need to call this directly because it is called\n     * automatically by the library before main() runs.\n     */\n    void initializeQt();\n\n    /**\n     * Returns a pointer to the QtGui object for the graphical library.\n     */\n    static QtGui* instance();\n\n    /**\n     * Sets the argc and argv values before main is run.\n     */\n    void setArgs(int argc, char** argv);\n\n    /**\n     * Runs an event loop that calls the given function that returns an int.\n     * The event loop will block until the graphical program is done running.\n     * If the exitAfter argument is true, calls exitGraphics after the event\n     * loop is finished.\n     */\n    void startBackgroundEventLoop(GThunkInt mainFunc, bool exitAfter = true);\n\n    /**\n     * Runs an event loop that calls the given function that returns void.\n     * The event loop will block until the graphical program is done running.\n     * If the exitAfter argument is true, calls exitGraphics after the event\n     * loop is finished.\n     */\n    void startBackgroundEventLoopVoid(GThunk mainFunc, bool exitAfter = true);\n    void startEventLoop(bool exitAfter = true);\n\npublic slots:\n    /**\n     * A slot used by the Qt event queue.\n     */\n    void processEventFromQueue();\n\nprivate:\n    Q_DISABLE_COPY(QtGui)\n\n    QtGui();   // forbid construction\n\n    /**\n     * Returns a pointer to the overall Qt application.\n     * This will be null if the application has not yet been initialized.\n     */\n    QSPLApplication* getApplication();\n\n    bool _initialized;\n    int _argc;\n    char** _argv;\n\n    static QSPLApplication* _app;\n    static QThread* _qtMainThread;\n    static GThread* _studentThread;\n    static QtGui* _instance;\n\n    friend class GEventQueue;\n    friend class GThread;\n    friend class GWindow;\n};\n\nnamespace stanfordcpplib {\n/*\n * Code that runs when student thread shuts down.\n * @private\n */\nvoid endOfLibraryStudentThread();\n} // namespace stanfordcpplib\n\n#endif // _qtgui_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/io/base64.h",
    "content": "/*\n * File: base64.h\n * --------------\n * This file declares a set of functions for encoding and decoding binary data\n * in the base64 format.  See:\n * http://en.wikipedia.org/wiki/Base64\n *\n * @author Marty Stepp, based upon open-source Apache Base64 en/decoder\n * @version 2014/08/03\n * @since 2014/08/03\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _base64_h\n#define _base64_h\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif // __cplusplus\n\nint Base64encode_len(int len);\nint Base64encode(char* coded_dst, const char* plain_src, int len_plain_src);\n\nint Base64decode_len(const char* coded_src);\nint Base64decode(char* plain_dst, const char* coded_src);\n\n#ifdef __cplusplus\n}\n\n#include <string>\n\nnamespace Base64 {\n/**\n * Returns a Base64-encoded equivalent of the given string.\n */\nstd::string encode(const std::string& s);\n\n/**\n * Decodes the given Base64-encoded string and returns the decoded\n * original contents.\n */\nstd::string decode(const std::string& s);\n}\n#endif // __cplusplus\n\n#endif // _base64_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/io/bitstream.h",
    "content": "/*\n * File: bitstream.h\n * -----------------\n * This file defines the ibitstream and obitstream classes which are basically\n * same as the ordinary istream and ostream classes, but add the\n * functionality to read and write one bit at a time.\n *\n * The idea is that you can substitute an ibitstream in place of an\n * istream and use the same operations (get, fail, >>, etc.)\n * along with added member functions of readBit, rewind, and size.\n *\n * Similarly, the obitstream can be used in place of ofstream, and has\n * same operations (put, fail, <<, etc.) along with additional\n * member functions writeBit and size.\n *\n * There are two subclasses of ibitstream: ifbitstream and istringbitstream,\n * which are similar to the ifstream and istringstream classes.  The\n * obitstream class similarly has ofbitstream and ostringbitstream as\n * subclasses.\n *\n * @author Keith Schwarz, Eric Roberts, Marty Stepp\n * @version 2019/04/20\n * - added toPrintable(string)\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2016/11/12\n * - made toPrintable non-static and visible\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _bitstream_h\n#define _bitstream_h\n\n#include <istream>\n#include <ostream>\n#include <fstream>\n#include <sstream>\n\n/**\n * Constant: PSEUDO_EOF\n * A constant representing the PSEUDO_EOF marker that you will\n * write at the end of your Huffman-encoded file.\n */\nconst int PSEUDO_EOF = 256;\n\n/**\n * Constant: NOT_A_CHAR\n * A constant representing an extended character that does not\n * actually hold a value.  When you are constructing your Huffman\n * encoding tree, you should set the characters in each internal\n * node (non-leaf) to this value to explicitly mark that they are not\n * being used.\n */\nconst int NOT_A_CHAR = 257;\n\n/**\n * Defines a class for reading files with all the functionality of istream\n * along with an added member function for reading a single bit and convenience\n * functions for rewinding the stream back to the beginning and getting the stream\n * size.\n *\n * You will probably not create instances of this class directly.  Instead, you\n * will create ifbitstreams or istringbitstreams to read from files or string buffers.\n */\nclass ibitstream: public std::istream {\npublic:\n    /**\n     * Initializes a new ibitstream that is not attached to any source.  You are\n     * unlikely to use this function directly.\n     */\n    ibitstream();\n\n    /**\n     * Reads a single bit from the ibitstream and returns 0 or 1 depending on\n     * the bit value.  If the stream is exhausted, EOF (-1) is returned.\n     * Raises an error if this ibitstream has not been properly opened.\n     */\n    int readBit();\n\n    /**\n     * Rewinds the ibitstream back to the beginning so that subsequent reads\n     * start again from the beginning.  Raises an error if this ibitstream\n     * has not been properly opened.\n     */\n    void rewind();\n    \n    /**\n     * Sets 'fake' mode, where it actually reads bytes when you say readBit.\n     */\n    void setFake(bool fake);\n\n    /**\n     * Returns the size in bytes of the data attached to this stream.\n     * Raises an error if this ibitstream has not been properly opened.\n     */\n    long size();\n\n    /**\n     * Returns whether or not this ibitstream is opened.  This only has\n     * meaning if the ibitstream is a file stream; otherwise it always\n     * returns true.\n     */\n    virtual bool is_open();\n\nprivate:\n    std::streampos lastTell;\n    int curByte;\n    int pos;\n    bool fake;\n};\n\n\n/**\n * Defines a class for writing files with all the functionality of ostream\n * along with an added member function for writing a single bit and a convenience\n * function for getting the stream size.\n *\n * You are unlikely to instantiate this class directly; instead, instantiate one\n * of the subclasses.\n */\nclass obitstream: public std::ostream {\npublic:\n    /**\n     * Initializes a new obitstream that is not attached to any file.  Use the\n     * open member function from ofstream to attach the stream to a file.\n     */\n    obitstream();\n\n    /**\n     * Writes a single bit to the obitstream.\n     * Raises an error if this obitstream has not been properly opened.\n     */\n    void writeBit(int bit);\n\n    /**\n     * Returns the size in bytes of the file attached to this stream.\n     * Raises an error if this obitstream has not been properly opened.\n     */\n    long size();\n\n    /**\n     * Sets 'fake' mode, where it actually writes bytes when you say writeBit.\n     */\n    void setFake(bool fake);\n    \n    /**\n     * Returns whether or not this obitstream is opened.  This only has\n     * meaning if the obitstream is a file stream; otherwise it always\n     * returns true.\n     */\n    virtual bool is_open();\n\nprivate:\n    std::streampos lastTell;\n    int curByte;\n    int pos;\n    bool fake;\n};\n\n/**\n * A class for reading files in all of the usual ways, plus bit-by-bit.\n * You can treat this class like a normal ifstream, except that there is\n * extra support for bit-level operations.\n */\nclass ifbitstream: public ibitstream {\npublic:\n    /**\n     * Constructs a new ifbitstream not attached to any file.  You can\n     * open a file for reading using the .open() member functions.\n     */\n    ifbitstream();\n\n    /**\n     * Constructs a new ifbitstream that reads the file with the given name,\n     * if it exists.  If not, the stream enters an error state.\n     */\n    ifbitstream(const char* filename);\n\n    /**\n     * Constructs a new ifbitstream that reads the specified file, if\n     * it exists.  If not, the stream enters an error state.\n     */\n    ifbitstream(const std::string& filename);\n\n    /**\n     * Opens the specified file for reading.  If an error occurs, the\n     * stream enters a failure state, which can be detected by calling\n     * ifb.fail().\n     */\n    void open(const char* filename);\n\n    /**\n     * Opens the specified file for reading.  If an error occurs, the\n     * stream enters a failure state, which can be detected by calling\n     * ifb.fail().\n     */\n    void open(const std::string& filename);\n\n    /**\n     * Returns whether or not this ifbitstream is connected to a file for\n     * reading.\n     */\n    bool is_open();\n\n    /**\n     * Closes the currently-opened file, if the stream is open.  If the\n     * stream is not open, puts the stream into a fail state.\n     */\n    void close();\n\nprivate:\n    // the actual file buffer which does reading and writing.\n    std::filebuf fb;\n};\n\n/**\n * A class for writing files in all of the usual ways, plus bit-by-bit.\n * You can treat this class like a normal ofstream, except that there is\n * extra support for bit-level operations.\n *\n * As a safety feature, you cannot use ofbitstream to open files that end\n * in .h, .hh, .cpp, or .cc for writing, as this could very easily cause\n * you to destroy your source files.\n */\nclass ofbitstream: public obitstream {\npublic:\n    /**\n     * Constructs a new ofbitstream not attached to any file.  You can\n     * open a file for writing using the .open() member functions.\n     */\n    ofbitstream();\n\n    /**\n     * Constructs a new ofbitstream that writes the specified file, if\n     * it exists.  If not, the stream enters an error state.  Read\n     * the documentation on \"open\" for more details.\n     */\n    ofbitstream(const char* filename);\n\n    /**\n     * Constructs a new ofbitstream that writes the specified file, if\n     * it exists.  If not, the stream enters an error state.  Read\n     * the documentation on \"open\" for more details.\n     */\n    ofbitstream(const std::string& filename);\n\n    /**\n     * Opens the specified file for writing.  If an error occurs, the\n     * stream enters a failure state, which can be detected by calling\n     * ifb.fail().  If an invalid filename is specified (for example,\n     * a source file), reports an error.\n     */\n    void open(const char* filename);\n\n    /**\n     * Opens the specified file for writing.  If an error occurs, the\n     * stream enters a failure state, which can be detected by calling\n     * ifb.fail().  If an invalid filename is specified (for example,\n     * a source file), reports an error.\n     */\n    void open(const std::string& filename);\n\n    /**\n     * Returns whether or not this ofbitstream is connected to a file for\n     * reading.\n     */\n    bool is_open();\n\n    /**\n     * Closes the currently-opened file, if the stream is open.  If the\n     * stream is not open, puts the stream into a fail state.\n     */\n    void close();\n\nprivate:\n    // the actual file buffer which does reading and writing.\n    std::filebuf fb;\n};\n\n/**\n * A variant on C++'s istringstream class, which acts as a stream that\n * reads its data from a string.  This is mostly used by the testing\n * code to test your Huffman encoding without having to read or write\n * files on disk, but you can use it in your own testing if you would\n * like.\n */\nclass istringbitstream: public ibitstream {\npublic:\n    /**\n     * Constructs an istringbitstream reading the specified string.\n     */\n    istringbitstream(const std::string& s = \"\");\n\n    /**\n     * Sets the underlying string of the istringbitstream.\n     */\n    void str(const std::string& s);\nprivate:\n    // the actual string buffer that does character storage\n    std::stringbuf sb;\n};\n\n/**\n * A variant on C++'s ostringstream class, which acts as a stream that\n * writes its data to a string.  This is mostly used by the testing\n * code to test your Huffman encoding without having to read or write\n * files on disk, but you can use it in your own testing if you would\n * like.\n */\nclass ostringbitstream: public obitstream {\npublic:\n    /**\n     * Constructs an ostringbitstream.\n     */\n    ostringbitstream();\n\n    /**\n     * Retrieves the underlying string of the istringbitstream.\n     */\n    std::string str();\n\nprivate:\n    // the actual string buffer that does character storage\n    std::stringbuf sb;\n};\n\n/**\n * Returns a printable string for the given character.\n * @example toPrintable('c') returns \"c\"\n * @example toPrintable('\\n') returns \"\\\\n\"\n */\nstd::string toPrintable(int ch);\n\n/**\n * Returns a string with each non-printable character in the given string\n * replaced by one that is printable.\n * Certain common escape characters are replaced by a backslash representation,\n * and non-printable ASCII characters are replaced by a backslash and their\n * ASCII numeric representation, such as \\255.\n * @example toPrintable(\"hi \\0 there\\n') returns \"hi \\\\0 there\\\\n\"\n */\nstd::string toPrintable(const std::string& s);\n\n#endif // _bitstream_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/io/filelib.h",
    "content": "/*\n * File: filelib.h\n * ---------------\n * This file exports a standardized set of tools for working with\n * files.  The library offers at least some portability across the\n * file systems used in the three supported platforms: Mac OSX,\n * Windows, and Linux.  Directory and search paths are allowed to\n * contain separators in any of the supported styles, which usually\n * makes it possible to use the same code on different platforms.\n * \n * @version 2018/10/23\n * - added getAbsolutePath\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2016/11/12\n * - added fileSize, readEntireStream\n * @version 2016/08/12\n * - added second overload of openFileDialog that accepts path parameter\n * @version 2015/04/12\n * - added promptUserForFile overload without stream parameter\n * @version 2014/10/19\n * - alphabetized function declarations\n * - converted many funcs to take const string& rather than string for efficiency\n * - added listDirectory overload that returns a Vector\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _filelib_h\n#define _filelib_h\n\n#include <iostream>\n#include <fstream>\n#include <string>\n\n#define INTERNAL_INCLUDE 1\n#include \"vector.h\"\n#undef INTERNAL_INCLUDE\n\n/**\n * Creates a new directory for the specified path.  The\n * <code>createDirectory</code> function does not report an error if\n * the directory already exists.  Unlike <code>createDirectoryPath</code>,\n * <code>createDirectory</code> does not create missing directories\n * along the path.\n * @throw ErrorException if some component of <code>path</code> does not exist\n */\nvoid createDirectory(const std::string& path);\n\n/**\n * Creates a new directory for the specified path.   If intermediate\n * components of <code>path</code> do not exist, this function creates\n * them as needed.\n */\nvoid createDirectoryPath(const std::string& path);\n\n/**\n * Adds an extension to a file name if none already exists.  If the\n * <code>extension</code> argument begins with a leading <code>*</code>,\n * any existing extension in <code>filename</code> is replaced by\n * <code>ext</code>.\n */\nstd::string defaultExtension(const std::string& filename, const std::string& ext);\n\n/**\n * Deletes the specified file.\n * @throw ErrorException if the file does not exist or cannot be deleted\n */\nvoid deleteFile(const std::string& filename);\n\n/**\n * Expands a filename into a canonical name for the platform.\n */\nstd::string expandPathname(const std::string& filename);\n\n/**\n * Returns <code>true</code> if the specified file exists.\n */\nbool fileExists(const std::string& filename);\n\n/**\n * Returns the size of the given file in bytes.\n * Returns -1 if the file does not exist or cannot be read.\n */\nint fileSize(const std::string& filename);\n\n/**\n * Returns the canonical name of a file found using a search path.\n * The <code>findOnPath</code> function is similar to\n * <code>openOnPath</code>, except that it doesn't actually\n * return an open stream.  If no matching file is found,\n * <code>findOnPath</code> returns the empty string.\n */\nstd::string findOnPath(const std::string& path, const std::string& filename);\n\n/**\n * Returns an absolute filename for the given file or directory.\n * This converts from, for example, \"temp/foo.txt\" to \"/Users/jsmith12/Documents/temp/foo.txt\".\n */\nstd::string getAbsolutePath(const std::string& path);\n\n/**\n * Returns an absolute filename for the current directory.\n */\nstd::string getCurrentDirectory();\n\n/**\n * Returns the standard directory path separator used on this platform.\n */\nstd::string getDirectoryPathSeparator();\n\n/**\n * Returns the extension of <code>filename</code>.  The extension\n * consists of the separating dot and all subsequent characters.\n * If no dot exists in the final component, <code>getExtension</code>\n * returns the empty string.  These semantics ensure that concatenating\n * the root and the extension always returns the original filename.\n */\nstd::string getExtension(const std::string& filename);\n\n/**\n * Returns all but the last component of a path name.  The components\n * of the path name can be separated by any of the directory path\n * separators (forward or reverse slashes).  The special cases are\n * illustrated by the following examples:\n *\n *<pre>\n *    getHead(\"a/b\")  = \"a\"     getTail(\"a/b\")   = \"b\"\n *    getHead(\"a\")    = \"\"      getTail(\"a\")     = \"a\"\n *    getHead(\"/a\")   = \"/\"     getTail(\"/a\")    = \"a\"\n *    getHead(\"/\")    = \"/\"     getTail(\"/\")     = \"\"\n *</pre>\n */\nstd::string getHead(const std::string& filename);\n\n/**\n * Returns the root of <code>filename</code>.  The root consists\n * of everything in <code>filename</code> up to the last dot and\n * the subsequent extension.  If no dot appears in the final component\n * of the filename, <code>getRoot</code> returns the entire name.\n */\nstd::string getRoot(const std::string& filename);\n\n/**\n * Returns the standard search path separator used on this platform.\n */\nstd::string getSearchPathSeparator();\n\n/**\n * Returns the last component of a path name.  The components of the\n * path name can be separated by any of the directory path separators\n * (forward or reverse slashes).  For details on the interpretation of\n * special cases, see the comments for the <code>getHead</code> function.\n */\nstd::string getTail(const std::string& filename);\n\n/**\n * Returns the operating system's \"temp\" folder.\n * Can be useful if your program needs to store temporary files.\n */\nstd::string getTempDirectory();\n\n/**\n * Returns <code>true</code> if the specified file is a directory.\n */\nbool isDirectory(const std::string& filename);\n\n/**\n * Returns <code>true</code> if the specified file is a regular file,\n * not a symbolic link or directory.\n */\nbool isFile(const std::string& filename);\n\n/**\n * Returns <code>true</code> if the specified file is a symbolic link.\n */\nbool isSymbolicLink(const std::string& filename);\n\n/**\n * Adds an alphabetized list of the files in the specified directory\n * to the string vector <code>list</code>.  This list excludes the\n * names <code>.</code> and <code>..</code> entries.\n */\nvoid listDirectory(const std::string& path, Vector<std::string>& list);\n\n/**\n * Adds an alphabetized list of the files in the specified directory\n * to the STL string vector <code>list</code>.  This list excludes the\n * names <code>.</code> and <code>..</code> entries.\n */\nvoid listDirectory(const std::string& path, Vector<std::string>& list);\n\n/**\n * Adds an alphabetized list of the files in the specified directory\n * to a vector that is returned.  This list excludes the\n * names <code>.</code> and <code>..</code> entries.\n */\nVector<std::string> listDirectory(const std::string& path);\n\n/**\n * Determines whether the filename matches the specified pattern.  The\n * pattern string is interpreted in much the same way that a Unix shell\n * expands filenames and supports the following wildcard options:\n *\n *<pre>\n *    ?      Matches any single character\n *    *      Matches any sequence of characters\n *    [...]  Matches any of the specified characters\n *    [^...] Matches any character <i>except</i> the specified ones\n *</pre>\n *\n * The last two options allow a range of characters to be specified in the\n * form <code>a-z</code>.\n */\nbool matchFilenamePattern(const std::string& filename, const std::string& pattern);\n\n/**\n * Opens the file input stream <code>stream</code> using the specified\n * filename.  This function is similar to the <code>open</code>\n * method of the stream classes, but uses a C++ <code>string</code>\n * object instead of the older C-style string.  If the operation\n * succeeds, <code>openFile</code> returns <code>true</code>;\n * if it fails, <code>openFile</code> sets the failure flag in the\n * stream and returns <code>false</code>.\n */\nbool openFile(std::ifstream& stream, const std::string& filename);\n\n/**\n * Opens the file output stream <code>stream</code> using the specified\n * filename.  This function is similar to the <code>open</code>\n * method of the stream classes, but uses a C++ <code>string</code>\n * object instead of the older C-style string.  If the operation\n * succeeds, <code>openFile</code> returns <code>true</code>;\n * if it fails, <code>openFile</code> sets the failure flag in the\n * stream and returns <code>false</code>.\n */\nbool openFile(std::ofstream& stream, const std::string& filename);\n\n/**\n * Opens a dialog that allows the user to choose a file to read.\n * The dialog begins in the current directory.\n */\nstd::string openFileDialog(std::ifstream& stream);\n\n/**\n * Opens a dialog that allows the user to choose a file to read.\n * The <code>title</code> parameter is displayed in the dialog title.\n * The dialog begins in the current directory.\n */\nstd::string openFileDialog(std::ifstream& stream,\n                           const std::string& title);\n\n/**\n * Opens a dialog that allows the user to choose a file to read.\n * The <code>title</code> parameter is displayed in the dialog title.\n * The <code>path</code> parameter is used to set the working directory.\n */\nstd::string openFileDialog(std::ifstream& stream,\n                           const std::string& title,\n                           const std::string& path);\n\n/**\n * Opens a dialog that allows the user to choose a file to write.\n * The dialog begins in the current directory.\n */\nstd::string openFileDialog(std::ofstream& stream);\n\n/**\n * Opens a dialog that allows the user to choose a file to write.\n * The <code>title</code> parameter is displayed in the dialog title.\n * The dialog begins in the current directory.\n */\nstd::string openFileDialog(std::ofstream& stream,\n                           const std::string& title);\n\n/**\n * Opens a dialog that allows the user to choose a file to write.\n * The <code>title</code> parameter is displayed in the dialog title.\n * The <code>path</code> parameter is used to set the working directory.\n */\nstd::string openFileDialog(std::ofstream& stream,\n                           const std::string& title,\n                           const std::string& path);\n\n/**\n * Opens a dialog that allows the user to choose a file name to read or write.\n * The <code>title</code> parameter is displayed in the dialog title.\n * The <code>path</code> parameter is used to set the working directory.\n * If the <code>path</code> is omitted, the dialog begins in the current directory.\n */\nstd::string openFileDialog(const std::string& title = \"Open File ...\",\n                           const std::string& path = \"\");\n\n/**\n * Opens a file to read using a search path.  If <code>openOnPath</code>\n * is successful, it returns the first path name on the search path\n * for which <code>stream.open</code> succeeds.  The <code>path</code>\n * argument consists of a list of directories that are prepended to the\n * filename, unless <code>filename</code> begins with an absolute\n * directory marker, such as <code>/</code> or <code>~</code>.\n * The directories in the search path may be separated either\n * by colons (Unix or Mac OS) or semicolons (Windows).  If the file\n * cannot be opened, the failure bit is set in the <code>stream</code>\n * parameter, and the <code>openOnPath</code> function returns the\n * empty string.\n */\nstd::string openOnPath(std::ifstream& stream,\n                       const std::string& path,\n                       const std::string& filename);\n\n/**\n * Opens a file to write using a search path.  If <code>openOnPath</code>\n * is successful, it returns the first path name on the search path\n * for which <code>stream.open</code> succeeds.  The <code>path</code>\n * argument consists of a list of directories that are prepended to the\n * filename, unless <code>filename</code> begins with an absolute\n * directory marker, such as <code>/</code> or <code>~</code>.\n * The directories in the search path may be separated either\n * by colons (Unix or Mac OS) or semicolons (Windows).  If the file\n * cannot be opened, the failure bit is set in the <code>stream</code>\n * parameter, and the <code>openOnPath</code> function returns the\n * empty string.\n */\nstd::string openOnPath(std::ofstream& stream,\n                       const std::string& path,\n                       const std::string& filename);\n\n/**\n * Asks the user for the name of a file to read.\n * The file is opened using the reference parameter <code>stream</code>.\n * The function returns the name of the file.\n * If the requested file cannot be opened, the user is given additional chances\n * to type a valid file name.\n *\n * The optional <code>prompt</code> argument provides an input prompt\n * for the user.\n *\n * The also optional <code>reprompt</code> argument provides an output message\n * displayed each time if the user types a file that is not found.\n * If no value is passed, defaults to, \"Unable to open that file.  Try again.\".\n */\nstd::string promptUserForFile(std::ifstream& stream,\n                              const std::string& prompt = \"\",\n                              const std::string& reprompt = \"\");\n\n/**\n * Asks the user for the name of a file to read.\n * The file is opened using the reference parameter <code>stream</code>.\n * The function returns the name of the file.\n * If the requested file cannot be opened, the user is given additional chances\n * to type a valid file name.\n *\n * The optional <code>prompt</code> argument provides an input prompt\n * for the user.\n *\n * The also optional <code>reprompt</code> argument provides an output message\n * displayed each time if the user types a file that is not found.\n * If no value is passed, defaults to, \"Unable to open that file.  Try again.\".\n */\nstd::string promptUserForFile(std::ofstream& stream,\n                              const std::string& prompt = \"\",\n                              const std::string& reprompt = \"\");\n\n/**\n * Asks the user for the name of a file to read.\n * The function returns the name of the file.\n * If the requested file cannot be opened, the user is given additional chances\n * to type a valid file name.\n *\n * The optional <code>prompt</code> argument provides an input prompt\n * for the user.\n *\n * The also optional <code>reprompt</code> argument provides an output message\n * displayed each time if the user types a file that is not found.\n * If no value is passed, defaults to, \"Unable to open that file.  Try again.\".\n */\nstd::string promptUserForFile(const std::string& prompt = \"\",\n                              const std::string& reprompt = \"\");\n\n/**\n * Reads the entire contents of the specified input stream into the\n * string vector <code>lines</code>.  The client is responsible for\n * opening and closing the stream.  The vector can be either an STL\n * <code>vector</code> or a <code>Vector</code> as defined in the\n * Stanford C++ libraries.\n */\nvoid readEntireFile(std::istream& is, Vector<std::string>& lines);\n\n/**\n * Reads the entire contents of the specified input stream into the\n * string STL vector <code>lines</code>.  The client is responsible for\n * opening and closing the stream.  The vector can be either an STL\n * <code>vector</code> or a <code>Vector</code> as defined in the\n * Stanford C++ libraries.\n */\nvoid readEntireFile(std::istream& is, Vector<std::string>& lines);\n\n/**\n * An overload of readEntireFile that just returns the whole file as a very\n * long single string, rather than a vector of lines.\n * @throw ErrorException if the file is not found or cannot be read.\n */\nstd::string readEntireFile(const std::string& filename);\n\n/**\n * An overload of readEntireFile that just reads the whole file as a very\n * long single string, rather than a vector of lines.\n *\n * This version fills an output reference with the text read.\n * Returns true if the read was successful or false if the file was not found\n * or unable to be opened for reading.\n */\nbool readEntireFile(const std::string& filename, std::string& out);\n\n/**\n * Reads the contents of the given stream until its end and returns them as\n * a string.\n */\nstd::string readEntireStream(std::istream& input);\n\n/**\n * Reads the contents of the given stream until its end and stores them\n * in the given string 'out' by reference.\n */\nvoid readEntireStream(std::istream& input, std::string& out);\n\n/**\n * Renames a file.\n * @throw ErrorException if the old file does not exist, cannot be read,\n *        the new file name already exists,\n *        or the old file cannot otherwise be renamed to the new file name\n */\nvoid renameFile(const std::string& oldname, const std::string& newname);\n\n/**\n * Moves the given input stream back to its beginning, so that it can\n * be read again from start to finish.\n */\nvoid rewindStream(std::istream& input);\n\n/**\n * Changes the current directory to the specified path.\n */\nvoid setCurrentDirectory(const std::string& path);\n\n/**\n * Opens the given file and writes the given text into it.\n * Normally this function replaces any previous contents of the file, but\n * if the optional 'append' parameter is passed, the given text is added\n * at the end of the file, retaining any previous contents.\n * Returns true if the write was successful and false if the file was unable\n * to be opened for writing.\n */\nbool writeEntireFile(const std::string& filename,\n                     const std::string& text,\n                     bool append = false);\n\n/**\n * Platform-dependent functions that differ by operating system.\n * @private\n */\nnamespace platform {\n    std::string file_openFileDialog(const std::string& title, const std::string& mode, const std::string& path);\n    void filelib_createDirectory(const std::string& path);\n    void filelib_deleteFile(const std::string& path);\n    std::string filelib_expandPathname(const std::string& filename);\n    bool filelib_fileExists(const std::string& filename);\n    std::string filelib_getAbsolutePath(const std::string& path);\n    std::string filelib_getCurrentDirectory();\n    std::string filelib_getDirectoryPathSeparator();\n    std::string filelib_getSearchPathSeparator();\n    std::string filelib_getTempDirectory();\n    bool filelib_isDirectory(const std::string& filename);\n    bool filelib_isFile(const std::string& filename);\n    bool filelib_isSymbolicLink(const std::string& filename);\n    void filelib_listDirectory(const std::string& path, Vector<std::string>& list);\n    void filelib_setCurrentDirectory(const std::string& path);\n}\n\n#endif // _filelib_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/io/plainconsole.h",
    "content": "/*\n * File: plainconsole.h\n * --------------------\n * This file declares functions to add utility to the\n * C++ plain text console streams, cin/cout/cerr.\n * See plainconsole.cpp for implementation of each function.\n *\n * @author Marty Stepp\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2015/10/21\n * @since 2015/10/21\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _plainconsole_h\n#define _plainconsole_h\n\nnamespace plainconsole {\n/**\n * Sets the cout console to throw an error if more than the given number of\n * total characters are ever printed to it.\n * This can be used to stop student programs that try to print infinite output.\n */\nvoid setOutputLimit(int limit);\n\n/**\n * Sets whether user input values read from cin are echoed back to cout.\n * This is useful when capturing output dialogues for comparison/diffing.\n */\nvoid setEcho(bool value);\n} // namespace plainconsole\n\n#endif // _plainconsole_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/io/rapidxml.h",
    "content": "/*\n * @version 2016/10/14\n * - changed NULL to nullptr as appropriate\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef RAPIDXML_H_INCLUDED\n#define RAPIDXML_H_INCLUDED\n\n// Copyright (C) 2006, 2009 Marcin Kalicinski\n// Version 1.13\n// Revision $DateTime: 2009/05/13 01:46:17 $\n//! \\file rapidxml.h This file contains rapidxml parser and DOM implementation\n\n// If standard library is disabled, user must provide implementations of required functions and typedefs\n#if !defined(RAPIDXML_NO_STDLIB)\n    #include <cstdlib>      // For std::size_t\n    #include <cassert>      // For assert\n    #include <new>          // For placement new\n#endif\n\n// On MSVC, disable \"conditional expression is constant\" warning (level 4).\n// This warning is almost impossible to avoid with certain types of templated code\n#ifdef _MSC_VER\n    #pragma warning(push)\n    #pragma warning(disable:4127)   // Conditional expression is constant\n#endif\n\n///////////////////////////////////////////////////////////////////////////\n// RAPIDXML_PARSE_ERROR\n\n#if defined(RAPIDXML_NO_EXCEPTIONS)\n\n#define RAPIDXML_PARSE_ERROR(what, where) { parse_error_handler(what, where); assert(0); }\n\nnamespace rapidxml\n{\n    //! When exceptions are disabled by defining RAPIDXML_NO_EXCEPTIONS,\n    //! this function is called to notify user about the error.\n    //! It must be defined by the user.\n    //! <br><br>\n    //! This function cannot return. If it does, the results are undefined.\n    //! <br><br>\n    //! A very simple definition might look like that:\n    //! <pre>\n    //! void %rapidxml::%parse_error_handler(const char *what, void *where)\n    //! {\n    //!     std::cout << \"Parse error: \" << what << \"\\n\";\n    //!     std::abort();\n    //! }\n    //! </pre>\n    //! \\param what Human readable description of the error.\n    //! \\param where Pointer to character data where error was detected.\n    void parse_error_handler(const char *what, void *where);\n}\n\n#else\n\n#include <exception>    // For std::exception\n\n#define RAPIDXML_PARSE_ERROR(what, where) throw parse_error(what, where)\n\nnamespace rapidxml\n{\n\n    //! Parse error exception.\n    //! This exception is thrown by the parser when an error occurs.\n    //! Use what() function to get human-readable error message.\n    //! Use where() function to get a pointer to position within source text where error was detected.\n    //! <br><br>\n    //! If throwing exceptions by the parser is undesirable,\n    //! it can be disabled by defining RAPIDXML_NO_EXCEPTIONS macro before rapidxml.h is included.\n    //! This will cause the parser to call rapidxml::parse_error_handler() function instead of throwing an exception.\n    //! This function must be defined by the user.\n    //! <br><br>\n    //! This class derives from <code>std::exception</code> class.\n    class parse_error: public std::exception\n    {\n\n    public:\n\n        //! Constructs parse error\n        parse_error(const char *what, void *where)\n            : m_what(what)\n            , m_where(where)\n        {\n        }\n\n        //! Gets human readable description of error.\n        //! \\return Pointer to null terminated description of the error.\n        virtual const char *what() const throw()\n        {\n            return m_what;\n        }\n\n        //! Gets pointer to character data where error happened.\n        //! Ch should be the same as char type of xml_document that produced the error.\n        //! \\return Pointer to location within the parsed string where error occured.\n        template<class Ch>\n        Ch *where() const\n        {\n            return reinterpret_cast<Ch *>(m_where);\n        }\n\n    private:\n\n        const char *m_what;\n        void *m_where;\n\n    };\n}\n\n#endif\n\n///////////////////////////////////////////////////////////////////////////\n// Pool sizes\n\n#ifndef RAPIDXML_STATIC_POOL_SIZE\n    // Size of static memory block of memory_pool.\n    // Define RAPIDXML_STATIC_POOL_SIZE before including rapidxml.h if you want to override the default value.\n    // No dynamic memory allocations are performed by memory_pool until static memory is exhausted.\n    #define RAPIDXML_STATIC_POOL_SIZE (64 * 1024)\n#endif\n\n#ifndef RAPIDXML_DYNAMIC_POOL_SIZE\n    // Size of dynamic memory block of memory_pool.\n    // Define RAPIDXML_DYNAMIC_POOL_SIZE before including rapidxml.h if you want to override the default value.\n    // After the static block is exhausted, dynamic blocks with approximately this size are allocated by memory_pool.\n    #define RAPIDXML_DYNAMIC_POOL_SIZE (64 * 1024)\n#endif\n\n#ifndef RAPIDXML_ALIGNMENT\n    // Memory allocation alignment.\n    // Define RAPIDXML_ALIGNMENT before including rapidxml.h if you want to override the default value, which is the size of pointer.\n    // All memory allocations for nodes, attributes and strings will be aligned to this value.\n    // This must be a power of 2 and at least 1, otherwise memory_pool will not work.\n    #define RAPIDXML_ALIGNMENT sizeof(void *)\n#endif\n\nnamespace rapidxml\n{\n    // Forward declarations\n    template<class Ch> class xml_node;\n    template<class Ch> class xml_attribute;\n    template<class Ch> class xml_document;\n\n    //! Enumeration listing all node types produced by the parser.\n    //! Use xml_node::type() function to query node type.\n    enum node_type\n    {\n        node_document,      //!< A document node. Name and value are empty.\n        node_element,       //!< An element node. Name contains element name. Value contains text of first data node.\n        node_data,          //!< A data node. Name is empty. Value contains data text.\n        node_cdata,         //!< A CDATA node. Name is empty. Value contains data text.\n        node_comment,       //!< A comment node. Name is empty. Value contains comment text.\n        node_declaration,   //!< A declaration node. Name and value are empty. Declaration parameters (version, encoding and standalone) are in node attributes.\n        node_doctype,       //!< A DOCTYPE node. Name is empty. Value contains DOCTYPE text.\n        node_pi             //!< A PI node. Name contains target. Value contains instructions.\n    };\n\n    ///////////////////////////////////////////////////////////////////////\n    // Parsing flags\n\n    //! Parse flag instructing the parser to not create data nodes.\n    //! Text of first data node will still be placed in value of parent element, unless rapidxml::parse_no_element_values flag is also specified.\n    //! Can be combined with other flags by use of | operator.\n    //! <br><br>\n    //! See xml_document::parse() function.\n    const int parse_no_data_nodes = 0x1;\n\n    //! Parse flag instructing the parser to not use text of first data node as a value of parent element.\n    //! Can be combined with other flags by use of | operator.\n    //! Note that child data nodes of element node take precendence over its value when printing.\n    //! That is, if element has one or more child data nodes <em>and</em> a value, the value will be ignored.\n    //! Use rapidxml::parse_no_data_nodes flag to prevent creation of data nodes if you want to manipulate data using values of elements.\n    //! <br><br>\n    //! See xml_document::parse() function.\n    const int parse_no_element_values = 0x2;\n\n    //! Parse flag instructing the parser to not place zero terminators after strings in the source text.\n    //! By default zero terminators are placed, modifying source text.\n    //! Can be combined with other flags by use of | operator.\n    //! <br><br>\n    //! See xml_document::parse() function.\n    const int parse_no_string_terminators = 0x4;\n\n    //! Parse flag instructing the parser to not translate entities in the source text.\n    //! By default entities are translated, modifying source text.\n    //! Can be combined with other flags by use of | operator.\n    //! <br><br>\n    //! See xml_document::parse() function.\n    const int parse_no_entity_translation = 0x8;\n\n    //! Parse flag instructing the parser to disable UTF-8 handling and assume plain 8 bit characters.\n    //! By default, UTF-8 handling is enabled.\n    //! Can be combined with other flags by use of | operator.\n    //! <br><br>\n    //! See xml_document::parse() function.\n    const int parse_no_utf8 = 0x10;\n\n    //! Parse flag instructing the parser to create XML declaration node.\n    //! By default, declaration node is not created.\n    //! Can be combined with other flags by use of | operator.\n    //! <br><br>\n    //! See xml_document::parse() function.\n    const int parse_declaration_node = 0x20;\n\n    //! Parse flag instructing the parser to create comments nodes.\n    //! By default, comment nodes are not created.\n    //! Can be combined with other flags by use of | operator.\n    //! <br><br>\n    //! See xml_document::parse() function.\n    const int parse_comment_nodes = 0x40;\n\n    //! Parse flag instructing the parser to create DOCTYPE node.\n    //! By default, doctype node is not created.\n    //! Although W3C specification allows at most one DOCTYPE node, RapidXml will silently accept documents with more than one.\n    //! Can be combined with other flags by use of | operator.\n    //! <br><br>\n    //! See xml_document::parse() function.\n    const int parse_doctype_node = 0x80;\n\n    //! Parse flag instructing the parser to create PI nodes.\n    //! By default, PI nodes are not created.\n    //! Can be combined with other flags by use of | operator.\n    //! <br><br>\n    //! See xml_document::parse() function.\n    const int parse_pi_nodes = 0x100;\n\n    //! Parse flag instructing the parser to validate closing tag names.\n    //! If not set, name inside closing tag is irrelevant to the parser.\n    //! By default, closing tags are not validated.\n    //! Can be combined with other flags by use of | operator.\n    //! <br><br>\n    //! See xml_document::parse() function.\n    const int parse_validate_closing_tags = 0x200;\n\n    //! Parse flag instructing the parser to trim all leading and trailing whitespace of data nodes.\n    //! By default, whitespace is not trimmed.\n    //! This flag does not cause the parser to modify source text.\n    //! Can be combined with other flags by use of | operator.\n    //! <br><br>\n    //! See xml_document::parse() function.\n    const int parse_trim_whitespace = 0x400;\n\n    //! Parse flag instructing the parser to condense all whitespace runs of data nodes to a single space character.\n    //! Trimming of leading and trailing whitespace of data is controlled by rapidxml::parse_trim_whitespace flag.\n    //! By default, whitespace is not normalized.\n    //! If this flag is specified, source text will be modified.\n    //! Can be combined with other flags by use of | operator.\n    //! <br><br>\n    //! See xml_document::parse() function.\n    const int parse_normalize_whitespace = 0x800;\n\n    // Compound flags\n\n    //! Parse flags which represent default behaviour of the parser.\n    //! This is always equal to 0, so that all other flags can be simply ored together.\n    //! Normally there is no need to inconveniently disable flags by anding with their negated (~) values.\n    //! This also means that meaning of each flag is a <i>negation</i> of the default setting.\n    //! For example, if flag name is rapidxml::parse_no_utf8, it means that utf-8 is <i>enabled</i> by default,\n    //! and using the flag will disable it.\n    //! <br><br>\n    //! See xml_document::parse() function.\n    const int parse_default = 0;\n\n    //! A combination of parse flags that forbids any modifications of the source text.\n    //! This also results in faster parsing. However, note that the following will occur:\n    //! <ul>\n    //! <li>names and values of nodes will not be zero terminated, you have to use xml_base::name_size() and xml_base::value_size() functions to determine where name and value ends</li>\n    //! <li>entities will not be translated</li>\n    //! <li>whitespace will not be normalized</li>\n    //! </ul>\n    //! See xml_document::parse() function.\n    const int parse_non_destructive = parse_no_string_terminators | parse_no_entity_translation;\n\n    //! A combination of parse flags resulting in fastest possible parsing, without sacrificing important data.\n    //! <br><br>\n    //! See xml_document::parse() function.\n    const int parse_fastest = parse_non_destructive | parse_no_data_nodes;\n\n    //! A combination of parse flags resulting in largest amount of data being extracted.\n    //! This usually results in slowest parsing.\n    //! <br><br>\n    //! See xml_document::parse() function.\n    const int parse_full = parse_declaration_node | parse_comment_nodes | parse_doctype_node | parse_pi_nodes | parse_validate_closing_tags;\n\n    ///////////////////////////////////////////////////////////////////////\n    // Internals\n\n    //! \\cond internal\n    namespace internal\n    {\n\n        // Struct that contains lookup tables for the parser\n        // It must be a template to allow correct linking (because it has static data members, which are defined in a header file).\n        template<int Dummy>\n        struct lookup_tables\n        {\n            static const unsigned char lookup_whitespace[256];              // Whitespace table\n            static const unsigned char lookup_node_name[256];               // Node name table\n            static const unsigned char lookup_text[256];                    // Text table\n            static const unsigned char lookup_text_pure_no_ws[256];         // Text table\n            static const unsigned char lookup_text_pure_with_ws[256];       // Text table\n            static const unsigned char lookup_attribute_name[256];          // Attribute name table\n            static const unsigned char lookup_attribute_data_1[256];        // Attribute data table with single quote\n            static const unsigned char lookup_attribute_data_1_pure[256];   // Attribute data table with single quote\n            static const unsigned char lookup_attribute_data_2[256];        // Attribute data table with double quotes\n            static const unsigned char lookup_attribute_data_2_pure[256];   // Attribute data table with double quotes\n            static const unsigned char lookup_digits[256];                  // Digits\n            static const unsigned char lookup_upcase[256];                  // To uppercase conversion table for ASCII characters\n        };\n\n        // Find length of the string\n        template<class Ch>\n        inline std::size_t measure(const Ch *p)\n        {\n            const Ch *tmp = p;\n            while (*tmp)\n                ++tmp;\n            return tmp - p;\n        }\n\n        // Compare strings for equality\n        template<class Ch>\n        inline bool compare(const Ch *p1, std::size_t size1, const Ch *p2, std::size_t size2, bool case_sensitive)\n        {\n            if (size1 != size2)\n                return false;\n            if (case_sensitive)\n            {\n                for (const Ch *end = p1 + size1; p1 < end; ++p1, ++p2)\n                    if (*p1 != *p2)\n                        return false;\n            }\n            else\n            {\n                for (const Ch *end = p1 + size1; p1 < end; ++p1, ++p2)\n                    if (lookup_tables<0>::lookup_upcase[static_cast<unsigned char>(*p1)] != lookup_tables<0>::lookup_upcase[static_cast<unsigned char>(*p2)])\n                        return false;\n            }\n            return true;\n        }\n    }\n    //! \\endcond\n\n    ///////////////////////////////////////////////////////////////////////\n    // Memory pool\n\n    //! This class is used by the parser to create new nodes and attributes, without overheads of dynamic memory allocation.\n    //! In most cases, you will not need to use this class directly.\n    //! However, if you need to create nodes manually or modify names/values of nodes,\n    //! you are encouraged to use memory_pool of relevant xml_document to allocate the memory.\n    //! Not only is this faster than allocating them by using <code>new</code> operator,\n    //! but also their lifetime will be tied to the lifetime of document,\n    //! possibly simplyfing memory management.\n    //! <br><br>\n    //! Call allocate_node() or allocate_attribute() functions to obtain new nodes or attributes from the pool.\n    //! You can also call allocate_string() function to allocate strings.\n    //! Such strings can then be used as names or values of nodes without worrying about their lifetime.\n    //! Note that there is no <code>free()</code> function -- all allocations are freed at once when clear() function is called,\n    //! or when the pool is destroyed.\n    //! <br><br>\n    //! It is also possible to create a standalone memory_pool, and use it\n    //! to allocate nodes, whose lifetime will not be tied to any document.\n    //! <br><br>\n    //! Pool maintains <code>RAPIDXML_STATIC_POOL_SIZE</code> bytes of statically allocated memory.\n    //! Until static memory is exhausted, no dynamic memory allocations are done.\n    //! When static memory is exhausted, pool allocates additional blocks of memory of size <code>RAPIDXML_DYNAMIC_POOL_SIZE</code> each,\n    //! by using global <code>new[]</code> and <code>delete[]</code> operators.\n    //! This behaviour can be changed by setting custom allocation routines.\n    //! Use set_allocator() function to set them.\n    //! <br><br>\n    //! Allocations for nodes, attributes and strings are aligned at <code>RAPIDXML_ALIGNMENT</code> bytes.\n    //! This value defaults to the size of pointer on target architecture.\n    //! <br><br>\n    //! To obtain absolutely top performance from the parser,\n    //! it is important that all nodes are allocated from a single, contiguous block of memory.\n    //! Otherwise, cache misses when jumping between two (or more) disjoint blocks of memory can slow down parsing quite considerably.\n    //! If required, you can tweak <code>RAPIDXML_STATIC_POOL_SIZE</code>, <code>RAPIDXML_DYNAMIC_POOL_SIZE</code> and <code>RAPIDXML_ALIGNMENT</code>\n    //! to obtain best wasted memory to performance compromise.\n    //! To do it, define their values before rapidxml.h file is included.\n    //! \\param Ch Character type of created nodes.\n    template<class Ch = char>\n    class memory_pool\n    {\n\n    public:\n\n        //! \\cond internal\n        typedef void *(alloc_func)(std::size_t);       // Type of user-defined function used to allocate memory\n        typedef void (free_func)(void *);              // Type of user-defined function used to free memory\n        //! \\endcond\n\n        //! Constructs empty pool with default allocator functions.\n        memory_pool()\n            : m_alloc_func(nullptr)\n            , m_free_func(nullptr)\n        {\n            init();\n        }\n\n        //! Destroys pool and frees all the memory.\n        //! This causes memory occupied by nodes allocated by the pool to be freed.\n        //! Nodes allocated from the pool are no longer valid.\n        ~memory_pool()\n        {\n            clear();\n        }\n\n        //! Allocates a new node from the pool, and optionally assigns name and value to it.\n        //! If the allocation request cannot be accomodated, this function will throw <code>std::bad_alloc</code>.\n        //! If exceptions are disabled by defining RAPIDXML_NO_EXCEPTIONS, this function\n        //! will call rapidxml::parse_error_handler() function.\n        //! \\param type Type of node to create.\n        //! \\param name Name to assign to the node, or 0 to assign no name.\n        //! \\param value Value to assign to the node, or 0 to assign no value.\n        //! \\param name_size Size of name to assign, or 0 to automatically calculate size from name string.\n        //! \\param value_size Size of value to assign, or 0 to automatically calculate size from value string.\n        //! \\return Pointer to allocated node. This pointer will never be NULL.\n        xml_node<Ch> *allocate_node(node_type type,\n                                    const Ch *name = nullptr, const Ch *value = nullptr,\n                                    std::size_t name_size = 0, std::size_t value_size = 0)\n        {\n            void *memory = allocate_aligned(sizeof(xml_node<Ch>));\n            xml_node<Ch> *node = new(memory) xml_node<Ch>(type);\n            if (name)\n            {\n                if (name_size > 0)\n                    node->name(name, name_size);\n                else\n                    node->name(name);\n            }\n            if (value)\n            {\n                if (value_size > 0)\n                    node->value(value, value_size);\n                else\n                    node->value(value);\n            }\n            return node;\n        }\n\n        //! Allocates a new attribute from the pool, and optionally assigns name and value to it.\n        //! If the allocation request cannot be accomodated, this function will throw <code>std::bad_alloc</code>.\n        //! If exceptions are disabled by defining RAPIDXML_NO_EXCEPTIONS, this function\n        //! will call rapidxml::parse_error_handler() function.\n        //! \\param name Name to assign to the attribute, or 0 to assign no name.\n        //! \\param value Value to assign to the attribute, or 0 to assign no value.\n        //! \\param name_size Size of name to assign, or 0 to automatically calculate size from name string.\n        //! \\param value_size Size of value to assign, or 0 to automatically calculate size from value string.\n        //! \\return Pointer to allocated attribute. This pointer will never be NULL.\n        xml_attribute<Ch> *allocate_attribute(const Ch *name = nullptr, const Ch *value = nullptr,\n                                              std::size_t name_size = 0, std::size_t value_size = 0)\n        {\n            void *memory = allocate_aligned(sizeof(xml_attribute<Ch>));\n            xml_attribute<Ch> *attribute = new(memory) xml_attribute<Ch>;\n            if (name)\n            {\n                if (name_size > 0)\n                    attribute->name(name, name_size);\n                else\n                    attribute->name(name);\n            }\n            if (value)\n            {\n                if (value_size > 0)\n                    attribute->value(value, value_size);\n                else\n                    attribute->value(value);\n            }\n            return attribute;\n        }\n\n        //! Allocates a char array of given size from the pool, and optionally copies a given string to it.\n        //! If the allocation request cannot be accomodated, this function will throw <code>std::bad_alloc</code>.\n        //! If exceptions are disabled by defining RAPIDXML_NO_EXCEPTIONS, this function\n        //! will call rapidxml::parse_error_handler() function.\n        //! \\param source String to initialize the allocated memory with, or 0 to not initialize it.\n        //! \\param size Number of characters to allocate, or zero to calculate it automatically from source string length; if size is 0, source string must be specified and null terminated.\n        //! \\return Pointer to allocated char array. This pointer will never be NULL.\n        Ch *allocate_string(const Ch *source = nullptr, std::size_t size = 0)\n        {\n            assert(source || size);     // Either source or size (or both) must be specified\n            if (size == 0)\n                size = internal::measure(source) + 1;\n            Ch *result = static_cast<Ch *>(allocate_aligned(size * sizeof(Ch)));\n            if (source)\n                for (std::size_t i = 0; i < size; ++i)\n                    result[i] = source[i];\n            return result;\n        }\n\n        //! Clones an xml_node and its hierarchy of child nodes and attributes.\n        //! Nodes and attributes are allocated from this memory pool.\n        //! Names and values are not cloned, they are shared between the clone and the source.\n        //! Result node can be optionally specified as a second parameter,\n        //! in which case its contents will be replaced with cloned source node.\n        //! This is useful when you want to clone entire document.\n        //! \\param source Node to clone.\n        //! \\param result Node to put results in, or 0 to automatically allocate result node\n        //! \\return Pointer to cloned node. This pointer will never be NULL.\n        xml_node<Ch> *clone_node(const xml_node<Ch> *source, xml_node<Ch> *result = nullptr)\n        {\n            // Prepare result node\n            if (result)\n            {\n                result->remove_all_attributes();\n                result->remove_all_nodes();\n                result->type(source->type());\n            }\n            else\n                result = allocate_node(source->type());\n\n            // Clone name and value\n            result->name(source->name(), source->name_size());\n            result->value(source->value(), source->value_size());\n\n            // Clone child nodes and attributes\n            for (xml_node<Ch> *child = source->first_node(); child; child = child->next_sibling())\n                result->append_node(clone_node(child));\n            for (xml_attribute<Ch> *attr = source->first_attribute(); attr; attr = attr->next_attribute())\n                result->append_attribute(allocate_attribute(attr->name(), attr->value(), attr->name_size(), attr->value_size()));\n\n            return result;\n        }\n\n        //! Clears the pool.\n        //! This causes memory occupied by nodes allocated by the pool to be freed.\n        //! Any nodes or strings allocated from the pool will no longer be valid.\n        void clear()\n        {\n            while (m_begin != m_static_memory)\n            {\n                char *previous_begin = reinterpret_cast<header *>(align(m_begin))->previous_begin;\n                if (m_free_func)\n                    m_free_func(m_begin);\n                else\n                    delete[] m_begin;\n                m_begin = previous_begin;\n            }\n            init();\n        }\n\n        //! Sets or resets the user-defined memory allocation functions for the pool.\n        //! This can only be called when no memory is allocated from the pool yet, otherwise results are undefined.\n        //! Allocation function must not return invalid pointer on failure. It should either throw,\n        //! stop the program, or use <code>longjmp()</code> function to pass control to other place of program.\n        //! If it returns invalid pointer, results are undefined.\n        //! <br><br>\n        //! User defined allocation functions must have the following forms:\n        //! <br><code>\n        //! <br>void *allocate(std::size_t size);\n        //! <br>void free(void *pointer);\n        //! </code><br>\n        //! \\param af Allocation function, or 0 to restore default function\n        //! \\param ff Free function, or 0 to restore default function\n        void set_allocator(alloc_func *af, free_func *ff)\n        {\n            assert(m_begin == m_static_memory && m_ptr == align(m_begin));    // Verify that no memory is allocated yet\n            m_alloc_func = af;\n            m_free_func = ff;\n        }\n\n    private:\n\n        struct header\n        {\n            char *previous_begin;\n        };\n\n        void init()\n        {\n            m_begin = m_static_memory;\n            m_ptr = align(m_begin);\n            m_end = m_static_memory + sizeof(m_static_memory);\n        }\n\n        char *align(char *ptr)\n        {\n            std::size_t alignment = ((RAPIDXML_ALIGNMENT - (std::size_t(ptr) & (RAPIDXML_ALIGNMENT - 1))) & (RAPIDXML_ALIGNMENT - 1));\n            return ptr + alignment;\n        }\n\n        char *allocate_raw(std::size_t size)\n        {\n            // Allocate\n            void *memory;\n            if (m_alloc_func)   // Allocate memory using either user-specified allocation function or global operator new[]\n            {\n                memory = m_alloc_func(size);\n                assert(memory); // Allocator is not allowed to return 0, on failure it must either throw, stop the program or use longjmp\n            }\n            else\n            {\n                memory = new char[size]();\n#ifdef RAPIDXML_NO_EXCEPTIONS\n                if (!memory)            // If exceptions are disabled, verify memory allocation, because new will not be able to throw bad_alloc\n                    RAPIDXML_PARSE_ERROR(\"out of memory\", 0);\n#endif\n            }\n            return static_cast<char *>(memory);\n        }\n\n        void *allocate_aligned(std::size_t size)\n        {\n            // Calculate aligned pointer\n            char *result = align(m_ptr);\n\n            // If not enough memory left in current pool, allocate a new pool\n            if (result + size > m_end)\n            {\n                // Calculate required pool size (may be bigger than RAPIDXML_DYNAMIC_POOL_SIZE)\n                std::size_t pool_size = RAPIDXML_DYNAMIC_POOL_SIZE;\n                if (pool_size < size)\n                    pool_size = size;\n\n                // Allocate\n                std::size_t alloc_size = sizeof(header) + (2 * RAPIDXML_ALIGNMENT - 2) + pool_size;     // 2 alignments required in worst case: one for header, one for actual allocation\n                char *raw_memory = allocate_raw(alloc_size);\n\n                // Setup new pool in allocated memory\n                char *pool = align(raw_memory);\n                header *new_header = reinterpret_cast<header *>(pool);\n                new_header->previous_begin = m_begin;\n                m_begin = raw_memory;\n                m_ptr = pool + sizeof(header);\n                m_end = raw_memory + alloc_size;\n\n                // Calculate aligned pointer again using new pool\n                result = align(m_ptr);\n            }\n\n            // Update pool and return aligned pointer\n            m_ptr = result + size;\n            return result;\n        }\n\n        char *m_begin;                                      // Start of raw memory making up current pool\n        char *m_ptr;                                        // First free byte in current pool\n        char *m_end;                                        // One past last available byte in current pool\n        char m_static_memory[RAPIDXML_STATIC_POOL_SIZE];    // Static raw memory\n        alloc_func *m_alloc_func;                           // Allocator function, or 0 if default is to be used\n        free_func *m_free_func;                             // Free function, or 0 if default is to be used\n    };\n\n    ///////////////////////////////////////////////////////////////////////////\n    // XML base\n\n    //! Base class for xml_node and xml_attribute implementing common functions:\n    //! name(), name_size(), value(), value_size() and parent().\n    //! \\param Ch Character type to use\n    template<class Ch = char>\n    class xml_base\n    {\n\n    public:\n\n        ///////////////////////////////////////////////////////////////////////////\n        // Construction & destruction\n\n        // Construct a base with empty name, value and parent\n        xml_base()\n            : m_name(nullptr)\n            , m_value(nullptr)\n            , m_name_size(0)\n            , m_value_size(0)\n            , m_parent(nullptr)\n        {\n        }\n\n        ///////////////////////////////////////////////////////////////////////////\n        // Node data access\n\n        //! Gets name of the node.\n        //! Interpretation of name depends on type of node.\n        //! Note that name will not be zero-terminated if rapidxml::parse_no_string_terminators option was selected during parse.\n        //! <br><br>\n        //! Use name_size() function to determine length of the name.\n        //! \\return Name of node, or empty string if node has no name.\n        Ch *name() const\n        {\n            return m_name ? m_name : nullstr();\n        }\n\n        //! Gets size of node name, not including terminator character.\n        //! This function works correctly irrespective of whether name is or is not zero terminated.\n        //! \\return Size of node name, in characters.\n        std::size_t name_size() const\n        {\n            return m_name ? m_name_size : 0;\n        }\n\n        //! Gets value of node.\n        //! Interpretation of value depends on type of node.\n        //! Note that value will not be zero-terminated if rapidxml::parse_no_string_terminators option was selected during parse.\n        //! <br><br>\n        //! Use value_size() function to determine length of the value.\n        //! \\return Value of node, or empty string if node has no value.\n        Ch *value() const\n        {\n            return m_value ? m_value : nullstr();\n        }\n\n        //! Gets size of node value, not including terminator character.\n        //! This function works correctly irrespective of whether value is or is not zero terminated.\n        //! \\return Size of node value, in characters.\n        std::size_t value_size() const\n        {\n            return m_value ? m_value_size : 0;\n        }\n\n        ///////////////////////////////////////////////////////////////////////////\n        // Node modification\n\n        //! Sets name of node to a non zero-terminated string.\n        //! See \\ref ownership_of_strings.\n        //! <br><br>\n        //! Note that node does not own its name or value, it only stores a pointer to it.\n        //! It will not delete or otherwise free the pointer on destruction.\n        //! It is reponsibility of the user to properly manage lifetime of the string.\n        //! The easiest way to achieve it is to use memory_pool of the document to allocate the string -\n        //! on destruction of the document the string will be automatically freed.\n        //! <br><br>\n        //! Size of name must be specified separately, because name does not have to be zero terminated.\n        //! Use name(const Ch *) function to have the length automatically calculated (string must be zero terminated).\n        //! \\param name Name of node to set. Does not have to be zero terminated.\n        //! \\param size Size of name, in characters. This does not include zero terminator, if one is present.\n        void name(const Ch *name, std::size_t size)\n        {\n            m_name = const_cast<Ch *>(name);\n            m_name_size = size;\n        }\n\n        //! Sets name of node to a zero-terminated string.\n        //! See also \\ref ownership_of_strings and xml_node::name(const Ch *, std::size_t).\n        //! \\param name Name of node to set. Must be zero terminated.\n        void name(const Ch *name)\n        {\n            this->name(name, internal::measure(name));\n        }\n\n        //! Sets value of node to a non zero-terminated string.\n        //! See \\ref ownership_of_strings.\n        //! <br><br>\n        //! Note that node does not own its name or value, it only stores a pointer to it.\n        //! It will not delete or otherwise free the pointer on destruction.\n        //! It is reponsibility of the user to properly manage lifetime of the string.\n        //! The easiest way to achieve it is to use memory_pool of the document to allocate the string -\n        //! on destruction of the document the string will be automatically freed.\n        //! <br><br>\n        //! Size of value must be specified separately, because it does not have to be zero terminated.\n        //! Use value(const Ch *) function to have the length automatically calculated (string must be zero terminated).\n        //! <br><br>\n        //! If an element has a child node of type node_data, it will take precedence over element value when printing.\n        //! If you want to manipulate data of elements using values, use parser flag rapidxml::parse_no_data_nodes to prevent creation of data nodes by the parser.\n        //! \\param value value of node to set. Does not have to be zero terminated.\n        //! \\param size Size of value, in characters. This does not include zero terminator, if one is present.\n        void value(const Ch *value, std::size_t size)\n        {\n            m_value = const_cast<Ch *>(value);\n            m_value_size = size;\n        }\n\n        //! Sets value of node to a zero-terminated string.\n        //! See also \\ref ownership_of_strings and xml_node::value(const Ch *, std::size_t).\n        //! \\param value Vame of node to set. Must be zero terminated.\n        void value(const Ch *value)\n        {\n            this->value(value, internal::measure(value));\n        }\n\n        ///////////////////////////////////////////////////////////////////////////\n        // Related nodes access\n\n        //! Gets node parent.\n        //! \\return Pointer to parent node, or 0 if there is no parent.\n        xml_node<Ch> *parent() const\n        {\n            return m_parent;\n        }\n\n    protected:\n\n        // Return empty string\n        static Ch *nullstr()\n        {\n            static Ch zero = Ch('\\0');\n            return &zero;\n        }\n\n        Ch *m_name;                         // Name of node, or 0 if no name\n        Ch *m_value;                        // Value of node, or 0 if no value\n        std::size_t m_name_size;            // Length of node name, or undefined of no name\n        std::size_t m_value_size;           // Length of node value, or undefined if no value\n        xml_node<Ch> *m_parent;             // Pointer to parent node, or 0 if none\n\n    };\n\n    //! Class representing attribute node of XML document.\n    //! Each attribute has name and value strings, which are available through name() and value() functions (inherited from xml_base).\n    //! Note that after parse, both name and value of attribute will point to interior of source text used for parsing.\n    //! Thus, this text must persist in memory for the lifetime of attribute.\n    //! \\param Ch Character type to use.\n    template<class Ch = char>\n    class xml_attribute: public xml_base<Ch>\n    {\n\n        friend class xml_node<Ch>;\n\n    public:\n\n        ///////////////////////////////////////////////////////////////////////////\n        // Construction & destruction\n\n        //! Constructs an empty attribute with the specified type.\n        //! Consider using memory_pool of appropriate xml_document if allocating attributes manually.\n        xml_attribute()\n        {\n        }\n\n        ///////////////////////////////////////////////////////////////////////////\n        // Related nodes access\n\n        //! Gets document of which attribute is a child.\n        //! \\return Pointer to document that contains this attribute, or 0 if there is no parent document.\n        xml_document<Ch> *document() const\n        {\n            if (xml_node<Ch> *node = this->parent())\n            {\n                while (node->parent())\n                    node = node->parent();\n                return node->type() == node_document ? static_cast<xml_document<Ch> *>(node) : 0;\n            }\n            else\n                return 0;\n        }\n\n        //! Gets previous attribute, optionally matching attribute name.\n        //! \\param name Name of attribute to find, or 0 to return previous attribute regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero\n        //! \\param name_size Size of name, in characters, or 0 to have size calculated automatically from string\n        //! \\param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters\n        //! \\return Pointer to found attribute, or 0 if not found.\n        xml_attribute<Ch> *previous_attribute(const Ch *name = nullptr, std::size_t name_size = 0, bool case_sensitive = true) const\n        {\n            if (name)\n            {\n                if (name_size == 0)\n                    name_size = internal::measure(name);\n                for (xml_attribute<Ch> *attribute = m_prev_attribute; attribute; attribute = attribute->m_prev_attribute)\n                    if (internal::compare(attribute->name(), attribute->name_size(), name, name_size, case_sensitive))\n                        return attribute;\n                return 0;\n            }\n            else\n                return this->m_parent ? m_prev_attribute : 0;\n        }\n\n        //! Gets next attribute, optionally matching attribute name.\n        //! \\param name Name of attribute to find, or 0 to return next attribute regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero\n        //! \\param name_size Size of name, in characters, or 0 to have size calculated automatically from string\n        //! \\param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters\n        //! \\return Pointer to found attribute, or 0 if not found.\n        xml_attribute<Ch> *next_attribute(const Ch *name = nullptr, std::size_t name_size = 0, bool case_sensitive = true) const\n        {\n            if (name)\n            {\n                if (name_size == 0)\n                    name_size = internal::measure(name);\n                for (xml_attribute<Ch> *attribute = m_next_attribute; attribute; attribute = attribute->m_next_attribute)\n                    if (internal::compare(attribute->name(), attribute->name_size(), name, name_size, case_sensitive))\n                        return attribute;\n                return 0;\n            }\n            else\n                return this->m_parent ? m_next_attribute : 0;\n        }\n\n    private:\n\n        xml_attribute<Ch> *m_prev_attribute;        // Pointer to previous sibling of attribute, or 0 if none; only valid if parent is non-zero\n        xml_attribute<Ch> *m_next_attribute;        // Pointer to next sibling of attribute, or 0 if none; only valid if parent is non-zero\n\n    };\n\n    ///////////////////////////////////////////////////////////////////////////\n    // XML node\n\n    //! Class representing a node of XML document.\n    //! Each node may have associated name and value strings, which are available through name() and value() functions.\n    //! Interpretation of name and value depends on type of the node.\n    //! Type of node can be determined by using type() function.\n    //! <br><br>\n    //! Note that after parse, both name and value of node, if any, will point interior of source text used for parsing.\n    //! Thus, this text must persist in the memory for the lifetime of node.\n    //! \\param Ch Character type to use.\n    template<class Ch = char>\n    class xml_node: public xml_base<Ch>\n    {\n\n    public:\n\n        ///////////////////////////////////////////////////////////////////////////\n        // Construction & destruction\n\n        //! Constructs an empty node with the specified type.\n        //! Consider using memory_pool of appropriate document to allocate nodes manually.\n        //! \\param type Type of node to construct.\n        xml_node(node_type type)\n            : m_type(type)\n            , m_first_node(nullptr)\n            , m_first_attribute(nullptr)\n        {\n        }\n\n        ///////////////////////////////////////////////////////////////////////////\n        // Node data access\n\n        //! Gets type of node.\n        //! \\return Type of node.\n        node_type type() const\n        {\n            return m_type;\n        }\n\n        ///////////////////////////////////////////////////////////////////////////\n        // Related nodes access\n\n        //! Gets document of which node is a child.\n        //! \\return Pointer to document that contains this node, or 0 if there is no parent document.\n        xml_document<Ch> *document() const\n        {\n            xml_node<Ch> *node = const_cast<xml_node<Ch> *>(this);\n            while (node->parent())\n                node = node->parent();\n            return node->type() == node_document ? static_cast<xml_document<Ch> *>(node) : 0;\n        }\n\n        //! Gets first child node, optionally matching node name.\n        //! \\param name Name of child to find, or 0 to return first child regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero\n        //! \\param name_size Size of name, in characters, or 0 to have size calculated automatically from string\n        //! \\param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters\n        //! \\return Pointer to found child, or 0 if not found.\n        xml_node<Ch> *first_node(const Ch *name = nullptr, std::size_t name_size = 0, bool case_sensitive = true) const\n        {\n            if (name)\n            {\n                if (name_size == 0)\n                    name_size = internal::measure(name);\n                for (xml_node<Ch> *child = m_first_node; child; child = child->next_sibling())\n                    if (internal::compare(child->name(), child->name_size(), name, name_size, case_sensitive))\n                        return child;\n                return nullptr;\n            }\n            else\n                return m_first_node;\n        }\n\n        //! Gets last child node, optionally matching node name.\n        //! Behaviour is undefined if node has no children.\n        //! Use first_node() to test if node has children.\n        //! \\param name Name of child to find, or 0 to return last child regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero\n        //! \\param name_size Size of name, in characters, or 0 to have size calculated automatically from string\n        //! \\param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters\n        //! \\return Pointer to found child, or 0 if not found.\n        xml_node<Ch> *last_node(const Ch *name = nullptr, std::size_t name_size = 0, bool case_sensitive = true) const\n        {\n            assert(m_first_node);  // Cannot query for last child if node has no children\n            if (name)\n            {\n                if (name_size == 0)\n                    name_size = internal::measure(name);\n                for (xml_node<Ch> *child = m_last_node; child; child = child->previous_sibling())\n                    if (internal::compare(child->name(), child->name_size(), name, name_size, case_sensitive))\n                        return child;\n                return 0;\n            }\n            else\n                return m_last_node;\n        }\n\n        //! Gets previous sibling node, optionally matching node name.\n        //! Behaviour is undefined if node has no parent.\n        //! Use parent() to test if node has a parent.\n        //! \\param name Name of sibling to find, or 0 to return previous sibling regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero\n        //! \\param name_size Size of name, in characters, or 0 to have size calculated automatically from string\n        //! \\param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters\n        //! \\return Pointer to found sibling, or 0 if not found.\n        xml_node<Ch> *previous_sibling(const Ch *name = nullptr, std::size_t name_size = 0, bool case_sensitive = true) const\n        {\n            assert(this->m_parent);     // Cannot query for siblings if node has no parent\n            if (name)\n            {\n                if (name_size == 0)\n                    name_size = internal::measure(name);\n                for (xml_node<Ch> *sibling = m_prev_sibling; sibling; sibling = sibling->m_prev_sibling)\n                    if (internal::compare(sibling->name(), sibling->name_size(), name, name_size, case_sensitive))\n                        return sibling;\n                return 0;\n            }\n            else\n                return m_prev_sibling;\n        }\n\n        //! Gets next sibling node, optionally matching node name.\n        //! Behaviour is undefined if node has no parent.\n        //! Use parent() to test if node has a parent.\n        //! \\param name Name of sibling to find, or 0 to return next sibling regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero\n        //! \\param name_size Size of name, in characters, or 0 to have size calculated automatically from string\n        //! \\param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters\n        //! \\return Pointer to found sibling, or 0 if not found.\n        xml_node<Ch> *next_sibling(const Ch *name = nullptr, std::size_t name_size = 0, bool case_sensitive = true) const\n        {\n            assert(this->m_parent);     // Cannot query for siblings if node has no parent\n            if (name)\n            {\n                if (name_size == 0)\n                    name_size = internal::measure(name);\n                for (xml_node<Ch> *sibling = m_next_sibling; sibling; sibling = sibling->m_next_sibling)\n                    if (internal::compare(sibling->name(), sibling->name_size(), name, name_size, case_sensitive))\n                        return sibling;\n                return nullptr;\n            }\n            else\n                return m_next_sibling;\n        }\n\n        //! Gets first attribute of node, optionally matching attribute name.\n        //! \\param name Name of attribute to find, or 0 to return first attribute regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero\n        //! \\param name_size Size of name, in characters, or 0 to have size calculated automatically from string\n        //! \\param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters\n        //! \\return Pointer to found attribute, or 0 if not found.\n        xml_attribute<Ch> *first_attribute(const Ch *name = nullptr, std::size_t name_size = 0, bool case_sensitive = true) const\n        {\n            if (name)\n            {\n                if (name_size == 0)\n                    name_size = internal::measure(name);\n                for (xml_attribute<Ch> *attribute = m_first_attribute; attribute; attribute = attribute->m_next_attribute)\n                    if (internal::compare(attribute->name(), attribute->name_size(), name, name_size, case_sensitive))\n                        return attribute;\n                return nullptr;\n            }\n            else\n                return m_first_attribute;\n        }\n\n        //! Gets last attribute of node, optionally matching attribute name.\n        //! \\param name Name of attribute to find, or 0 to return last attribute regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero\n        //! \\param name_size Size of name, in characters, or 0 to have size calculated automatically from string\n        //! \\param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters\n        //! \\return Pointer to found attribute, or 0 if not found.\n        xml_attribute<Ch> *last_attribute(const Ch *name = nullptr, std::size_t name_size = 0, bool case_sensitive = true) const\n        {\n            if (name)\n            {\n                if (name_size == 0)\n                    name_size = internal::measure(name);\n                for (xml_attribute<Ch> *attribute = m_last_attribute; attribute; attribute = attribute->m_prev_attribute)\n                    if (internal::compare(attribute->name(), attribute->name_size(), name, name_size, case_sensitive))\n                        return attribute;\n                return 0;\n            }\n            else\n                return m_first_attribute ? m_last_attribute : 0;\n        }\n\n        ///////////////////////////////////////////////////////////////////////////\n        // Node modification\n\n        //! Sets type of node.\n        //! \\param type Type of node to set.\n        void type(node_type type)\n        {\n            m_type = type;\n        }\n\n        ///////////////////////////////////////////////////////////////////////////\n        // Node manipulation\n\n        //! Prepends a new child node.\n        //! The prepended child becomes the first child, and all existing children are moved one position back.\n        //! \\param child Node to prepend.\n        void prepend_node(xml_node<Ch> *child)\n        {\n            assert(child && !child->parent() && child->type() != node_document);\n            if (first_node())\n            {\n                child->m_next_sibling = m_first_node;\n                m_first_node->m_prev_sibling = child;\n            }\n            else\n            {\n                child->m_next_sibling = nullptr;\n                m_last_node = child;\n            }\n            m_first_node = child;\n            child->m_parent = this;\n            child->m_prev_sibling = nullptr;\n        }\n\n        //! Appends a new child node.\n        //! The appended child becomes the last child.\n        //! \\param child Node to append.\n        void append_node(xml_node<Ch> *child)\n        {\n            assert(child && !child->parent() && child->type() != node_document);\n            if (first_node())\n            {\n                child->m_prev_sibling = m_last_node;\n                m_last_node->m_next_sibling = child;\n            }\n            else\n            {\n                child->m_prev_sibling = nullptr;\n                m_first_node = child;\n            }\n            m_last_node = child;\n            child->m_parent = this;\n            child->m_next_sibling = nullptr;\n        }\n\n        //! Inserts a new child node at specified place inside the node.\n        //! All children after and including the specified node are moved one position back.\n        //! \\param where Place where to insert the child, or 0 to insert at the back.\n        //! \\param child Node to insert.\n        void insert_node(xml_node<Ch> *where, xml_node<Ch> *child)\n        {\n            assert(!where || where->parent() == this);\n            assert(child && !child->parent() && child->type() != node_document);\n            if (where == m_first_node)\n                prepend_node(child);\n            else if (where == 0)\n                append_node(child);\n            else\n            {\n                child->m_prev_sibling = where->m_prev_sibling;\n                child->m_next_sibling = where;\n                where->m_prev_sibling->m_next_sibling = child;\n                where->m_prev_sibling = child;\n                child->m_parent = this;\n            }\n        }\n\n        //! Removes first child node.\n        //! If node has no children, behaviour is undefined.\n        //! Use first_node() to test if node has children.\n        void remove_first_node()\n        {\n            assert(first_node());\n            xml_node<Ch> *child = m_first_node;\n            m_first_node = child->m_next_sibling;\n            if (child->m_next_sibling)\n                child->m_next_sibling->m_prev_sibling = nullptr;\n            else\n                m_last_node = nullptr;\n            child->m_parent = nullptr;\n        }\n\n        //! Removes last child of the node.\n        //! If node has no children, behaviour is undefined.\n        //! Use first_node() to test if node has children.\n        void remove_last_node()\n        {\n            assert(first_node());\n            xml_node<Ch> *child = m_last_node;\n            if (child->m_prev_sibling)\n            {\n                m_last_node = child->m_prev_sibling;\n                child->m_prev_sibling->m_next_sibling = nullptr;\n            }\n            else\n                m_first_node = nullptr;\n            child->m_parent = nullptr;\n        }\n\n        //! Removes specified child from the node\n        // \\param where Pointer to child to be removed.\n        void remove_node(xml_node<Ch> *where)\n        {\n            assert(where && where->parent() == this);\n            assert(first_node());\n            if (where == m_first_node)\n                remove_first_node();\n            else if (where == m_last_node)\n                remove_last_node();\n            else\n            {\n                where->m_prev_sibling->m_next_sibling = where->m_next_sibling;\n                where->m_next_sibling->m_prev_sibling = where->m_prev_sibling;\n                where->m_parent = nullptr;\n            }\n        }\n\n        //! Removes all child nodes (but not attributes).\n        void remove_all_nodes()\n        {\n            for (xml_node<Ch> *node = first_node(); node; node = node->m_next_sibling)\n                node->m_parent = nullptr;\n            m_first_node = nullptr;\n        }\n\n        //! Prepends a new attribute to the node.\n        //! \\param attribute Attribute to prepend.\n        void prepend_attribute(xml_attribute<Ch> *attribute)\n        {\n            assert(attribute && !attribute->parent());\n            if (first_attribute())\n            {\n                attribute->m_next_attribute = m_first_attribute;\n                m_first_attribute->m_prev_attribute = attribute;\n            }\n            else\n            {\n                attribute->m_next_attribute = nullptr;\n                m_last_attribute = attribute;\n            }\n            m_first_attribute = attribute;\n            attribute->m_parent = this;\n            attribute->m_prev_attribute = nullptr;\n        }\n\n        //! Appends a new attribute to the node.\n        //! \\param attribute Attribute to append.\n        void append_attribute(xml_attribute<Ch> *attribute)\n        {\n            assert(attribute && !attribute->parent());\n            if (first_attribute())\n            {\n                attribute->m_prev_attribute = m_last_attribute;\n                m_last_attribute->m_next_attribute = attribute;\n            }\n            else\n            {\n                attribute->m_prev_attribute = nullptr;\n                m_first_attribute = attribute;\n            }\n            m_last_attribute = attribute;\n            attribute->m_parent = this;\n            attribute->m_next_attribute = nullptr;\n        }\n\n        //! Inserts a new attribute at specified place inside the node.\n        //! All attributes after and including the specified attribute are moved one position back.\n        //! \\param where Place where to insert the attribute, or 0 to insert at the back.\n        //! \\param attribute Attribute to insert.\n        void insert_attribute(xml_attribute<Ch> *where, xml_attribute<Ch> *attribute)\n        {\n            assert(!where || where->parent() == this);\n            assert(attribute && !attribute->parent());\n            if (where == m_first_attribute)\n                prepend_attribute(attribute);\n            else if (where == 0)\n                append_attribute(attribute);\n            else\n            {\n                attribute->m_prev_attribute = where->m_prev_attribute;\n                attribute->m_next_attribute = where;\n                where->m_prev_attribute->m_next_attribute = attribute;\n                where->m_prev_attribute = attribute;\n                attribute->m_parent = this;\n            }\n        }\n\n        //! Removes first attribute of the node.\n        //! If node has no attributes, behaviour is undefined.\n        //! Use first_attribute() to test if node has attributes.\n        void remove_first_attribute()\n        {\n            assert(first_attribute());\n            xml_attribute<Ch> *attribute = m_first_attribute;\n            if (attribute->m_next_attribute)\n            {\n                attribute->m_next_attribute->m_prev_attribute = nullptr;\n            }\n            else\n                m_last_attribute = nullptr;\n            attribute->m_parent = nullptr;\n            m_first_attribute = attribute->m_next_attribute;\n        }\n\n        //! Removes last attribute of the node.\n        //! If node has no attributes, behaviour is undefined.\n        //! Use first_attribute() to test if node has attributes.\n        void remove_last_attribute()\n        {\n            assert(first_attribute());\n            xml_attribute<Ch> *attribute = m_last_attribute;\n            if (attribute->m_prev_attribute)\n            {\n                attribute->m_prev_attribute->m_next_attribute = nullptr;\n                m_last_attribute = attribute->m_prev_attribute;\n            }\n            else\n                m_first_attribute = nullptr;\n            attribute->m_parent = nullptr;\n        }\n\n        //! Removes specified attribute from node.\n        //! \\param where Pointer to attribute to be removed.\n        void remove_attribute(xml_attribute<Ch> *where)\n        {\n            assert(first_attribute() && where->parent() == this);\n            if (where == m_first_attribute)\n                remove_first_attribute();\n            else if (where == m_last_attribute)\n                remove_last_attribute();\n            else\n            {\n                where->m_prev_attribute->m_next_attribute = where->m_next_attribute;\n                where->m_next_attribute->m_prev_attribute = where->m_prev_attribute;\n                where->m_parent = nullptr;\n            }\n        }\n\n        //! Removes all attributes of node.\n        void remove_all_attributes()\n        {\n            for (xml_attribute<Ch> *attribute = first_attribute(); attribute; attribute = attribute->m_next_attribute)\n                attribute->m_parent = nullptr;\n            m_first_attribute = nullptr;\n        }\n\n    private:\n\n        ///////////////////////////////////////////////////////////////////////////\n        // Restrictions\n\n        // No copying\n        xml_node(const xml_node &);\n        void operator =(const xml_node &);\n\n        ///////////////////////////////////////////////////////////////////////////\n        // Data members\n\n        // Note that some of the pointers below have UNDEFINED values if certain other pointers are 0.\n        // This is required for maximum performance, as it allows the parser to omit initialization of\n        // unneded/redundant values.\n        //\n        // The rules are as follows:\n        // 1. first_node and first_attribute contain valid pointers, or 0 if node has no children/attributes respectively\n        // 2. last_node and last_attribute are valid only if node has at least one child/attribute respectively, otherwise they contain garbage\n        // 3. prev_sibling and next_sibling are valid only if node has a parent, otherwise they contain garbage\n\n        node_type m_type;                       // Type of node; always valid\n        xml_node<Ch> *m_first_node;             // Pointer to first child node, or 0 if none; always valid\n        xml_node<Ch> *m_last_node;              // Pointer to last child node, or 0 if none; this value is only valid if m_first_node is non-zero\n        xml_attribute<Ch> *m_first_attribute;   // Pointer to first attribute of node, or 0 if none; always valid\n        xml_attribute<Ch> *m_last_attribute;    // Pointer to last attribute of node, or 0 if none; this value is only valid if m_first_attribute is non-zero\n        xml_node<Ch> *m_prev_sibling;           // Pointer to previous sibling of node, or 0 if none; this value is only valid if m_parent is non-zero\n        xml_node<Ch> *m_next_sibling;           // Pointer to next sibling of node, or 0 if none; this value is only valid if m_parent is non-zero\n\n    };\n\n    ///////////////////////////////////////////////////////////////////////////\n    // XML document\n\n    //! This class represents root of the DOM hierarchy.\n    //! It is also an xml_node and a memory_pool through public inheritance.\n    //! Use parse() function to build a DOM tree from a zero-terminated XML text string.\n    //! parse() function allocates memory for nodes and attributes by using functions of xml_document,\n    //! which are inherited from memory_pool.\n    //! To access root node of the document, use the document itself, as if it was an xml_node.\n    //! \\param Ch Character type to use.\n    template<class Ch = char>\n    class xml_document: public xml_node<Ch>, public memory_pool<Ch>\n    {\n\n    public:\n\n        //! Constructs empty XML document\n        xml_document()\n            : xml_node<Ch>(node_document)\n        {\n        }\n\n        //! Parses zero-terminated XML string according to given flags.\n        //! Passed string will be modified by the parser, unless rapidxml::parse_non_destructive flag is used.\n        //! The string must persist for the lifetime of the document.\n        //! In case of error, rapidxml::parse_error exception will be thrown.\n        //! <br><br>\n        //! If you want to parse contents of a file, you must first load the file into the memory, and pass pointer to its beginning.\n        //! Make sure that data is zero-terminated.\n        //! <br><br>\n        //! Document can be parsed into multiple times.\n        //! Each new call to parse removes previous nodes and attributes (if any), but does not clear memory pool.\n        //! \\param text XML data to parse; pointer is non-const to denote fact that this data may be modified by the parser.\n        template<int Flags>\n        void parse(Ch *text)\n        {\n            assert(text);\n\n            // Remove current contents\n            this->remove_all_nodes();\n            this->remove_all_attributes();\n\n            // Parse BOM, if any\n            parse_bom<Flags>(text);\n\n            // Parse children\n            while (1)\n            {\n                // Skip whitespace before node\n                skip<whitespace_pred, Flags>(text);\n                if (*text == 0)\n                    break;\n\n                // Parse and append new child\n                if (*text == Ch('<'))\n                {\n                    ++text;     // Skip '<'\n                    if (xml_node<Ch> *node = parse_node<Flags>(text))\n                        this->append_node(node);\n                }\n                else\n                    RAPIDXML_PARSE_ERROR(\"expected <\", text);\n            }\n\n        }\n\n        //! Clears the document by deleting all nodes and clearing the memory pool.\n        //! All nodes owned by document pool are destroyed.\n        void clear()\n        {\n            this->remove_all_nodes();\n            this->remove_all_attributes();\n            memory_pool<Ch>::clear();\n        }\n\n    private:\n\n        ///////////////////////////////////////////////////////////////////////\n        // Internal character utility functions\n\n        // Detect whitespace character\n        struct whitespace_pred\n        {\n            static unsigned char test(Ch ch)\n            {\n                return internal::lookup_tables<0>::lookup_whitespace[static_cast<unsigned char>(ch)];\n            }\n        };\n\n        // Detect node name character\n        struct node_name_pred\n        {\n            static unsigned char test(Ch ch)\n            {\n                return internal::lookup_tables<0>::lookup_node_name[static_cast<unsigned char>(ch)];\n            }\n        };\n\n        // Detect attribute name character\n        struct attribute_name_pred\n        {\n            static unsigned char test(Ch ch)\n            {\n                return internal::lookup_tables<0>::lookup_attribute_name[static_cast<unsigned char>(ch)];\n            }\n        };\n\n        // Detect text character (PCDATA)\n        struct text_pred\n        {\n            static unsigned char test(Ch ch)\n            {\n                return internal::lookup_tables<0>::lookup_text[static_cast<unsigned char>(ch)];\n            }\n        };\n\n        // Detect text character (PCDATA) that does not require processing\n        struct text_pure_no_ws_pred\n        {\n            static unsigned char test(Ch ch)\n            {\n                return internal::lookup_tables<0>::lookup_text_pure_no_ws[static_cast<unsigned char>(ch)];\n            }\n        };\n\n        // Detect text character (PCDATA) that does not require processing\n        struct text_pure_with_ws_pred\n        {\n            static unsigned char test(Ch ch)\n            {\n                return internal::lookup_tables<0>::lookup_text_pure_with_ws[static_cast<unsigned char>(ch)];\n            }\n        };\n\n        // Detect attribute value character\n        template<Ch Quote>\n        struct attribute_value_pred\n        {\n            static unsigned char test(Ch ch)\n            {\n                if (Quote == Ch('\\''))\n                    return internal::lookup_tables<0>::lookup_attribute_data_1[static_cast<unsigned char>(ch)];\n                if (Quote == Ch('\\\"'))\n                    return internal::lookup_tables<0>::lookup_attribute_data_2[static_cast<unsigned char>(ch)];\n                return 0;       // Should never be executed, to avoid warnings on Comeau\n            }\n        };\n\n        // Detect attribute value character\n        template<Ch Quote>\n        struct attribute_value_pure_pred\n        {\n            static unsigned char test(Ch ch)\n            {\n                if (Quote == Ch('\\''))\n                    return internal::lookup_tables<0>::lookup_attribute_data_1_pure[static_cast<unsigned char>(ch)];\n                if (Quote == Ch('\\\"'))\n                    return internal::lookup_tables<0>::lookup_attribute_data_2_pure[static_cast<unsigned char>(ch)];\n                return 0;       // Should never be executed, to avoid warnings on Comeau\n            }\n        };\n\n        // Insert coded character, using UTF8 or 8-bit ASCII\n        template<int Flags>\n        static void insert_coded_character(Ch *&text, unsigned long code)\n        {\n            if (Flags & parse_no_utf8)\n            {\n                // Insert 8-bit ASCII character\n                // Todo: possibly verify that code is less than 256 and use replacement char otherwise?\n                text[0] = static_cast<unsigned char>(code);\n                text += 1;\n            }\n            else\n            {\n                // Insert UTF8 sequence\n                if (code < 0x80)    // 1 byte sequence\n                {\n                    text[0] = static_cast<unsigned char>(code);\n                    text += 1;\n                }\n                else if (code < 0x800)  // 2 byte sequence\n                {\n                    text[1] = static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6;\n                    text[0] = static_cast<unsigned char>(code | 0xC0);\n                    text += 2;\n                }\n                else if (code < 0x10000)    // 3 byte sequence\n                {\n                    text[2] = static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6;\n                    text[1] = static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6;\n                    text[0] = static_cast<unsigned char>(code | 0xE0);\n                    text += 3;\n                }\n                else if (code < 0x110000)   // 4 byte sequence\n                {\n                    text[3] = static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6;\n                    text[2] = static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6;\n                    text[1] = static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6;\n                    text[0] = static_cast<unsigned char>(code | 0xF0);\n                    text += 4;\n                }\n                else    // Invalid, only codes up to 0x10FFFF are allowed in Unicode\n                {\n                    RAPIDXML_PARSE_ERROR(\"invalid numeric character entity\", text);\n                }\n            }\n        }\n\n        // Skip characters until predicate evaluates to true\n        template<class StopPred, int Flags>\n        static void skip(Ch *&text)\n        {\n            Ch *tmp = text;\n            while (StopPred::test(*tmp))\n                ++tmp;\n            text = tmp;\n        }\n\n        // Skip characters until predicate evaluates to true while doing the following:\n        // - replacing XML character entity references with proper characters (&apos; &amp; &quot; &lt; &gt; &#...;)\n        // - condensing whitespace sequences to single space character\n        template<class StopPred, class StopPredPure, int Flags>\n        static Ch *skip_and_expand_character_refs(Ch *&text)\n        {\n            // If entity translation, whitespace condense and whitespace trimming is disabled, use plain skip\n            if (Flags & parse_no_entity_translation &&\n                !(Flags & parse_normalize_whitespace) &&\n                !(Flags & parse_trim_whitespace))\n            {\n                skip<StopPred, Flags>(text);\n                return text;\n            }\n\n            // Use simple skip until first modification is detected\n            skip<StopPredPure, Flags>(text);\n\n            // Use translation skip\n            Ch *src = text;\n            Ch *dest = src;\n            while (StopPred::test(*src))\n            {\n                // If entity translation is enabled\n                if (!(Flags & parse_no_entity_translation))\n                {\n                    // Test if replacement is needed\n                    if (src[0] == Ch('&'))\n                    {\n                        switch (src[1])\n                        {\n\n                        // &amp; &apos;\n                        case Ch('a'):\n                            if (src[2] == Ch('m') && src[3] == Ch('p') && src[4] == Ch(';'))\n                            {\n                                *dest = Ch('&');\n                                ++dest;\n                                src += 5;\n                                continue;\n                            }\n                            if (src[2] == Ch('p') && src[3] == Ch('o') && src[4] == Ch('s') && src[5] == Ch(';'))\n                            {\n                                *dest = Ch('\\'');\n                                ++dest;\n                                src += 6;\n                                continue;\n                            }\n                            break;\n\n                        // &quot;\n                        case Ch('q'):\n                            if (src[2] == Ch('u') && src[3] == Ch('o') && src[4] == Ch('t') && src[5] == Ch(';'))\n                            {\n                                *dest = Ch('\"');\n                                ++dest;\n                                src += 6;\n                                continue;\n                            }\n                            break;\n\n                        // &gt;\n                        case Ch('g'):\n                            if (src[2] == Ch('t') && src[3] == Ch(';'))\n                            {\n                                *dest = Ch('>');\n                                ++dest;\n                                src += 4;\n                                continue;\n                            }\n                            break;\n\n                        // &lt;\n                        case Ch('l'):\n                            if (src[2] == Ch('t') && src[3] == Ch(';'))\n                            {\n                                *dest = Ch('<');\n                                ++dest;\n                                src += 4;\n                                continue;\n                            }\n                            break;\n\n                        // &#...; - assumes ASCII\n                        case Ch('#'):\n                            if (src[2] == Ch('x'))\n                            {\n                                unsigned long code = 0;\n                                src += 3;   // Skip &#x\n                                while (1)\n                                {\n                                    unsigned char digit = internal::lookup_tables<0>::lookup_digits[static_cast<unsigned char>(*src)];\n                                    if (digit == 0xFF)\n                                        break;\n                                    code = code * 16 + digit;\n                                    ++src;\n                                }\n                                insert_coded_character<Flags>(dest, code);    // Put character in output\n                            }\n                            else\n                            {\n                                unsigned long code = 0;\n                                src += 2;   // Skip &#\n                                while (1)\n                                {\n                                    unsigned char digit = internal::lookup_tables<0>::lookup_digits[static_cast<unsigned char>(*src)];\n                                    if (digit == 0xFF)\n                                        break;\n                                    code = code * 10 + digit;\n                                    ++src;\n                                }\n                                insert_coded_character<Flags>(dest, code);    // Put character in output\n                            }\n                            if (*src == Ch(';'))\n                                ++src;\n                            else\n                                RAPIDXML_PARSE_ERROR(\"expected ;\", src);\n                            continue;\n\n                        // Something else\n                        default:\n                            // Ignore, just copy '&' verbatim\n                            break;\n\n                        }\n                    }\n                }\n\n                // If whitespace condensing is enabled\n                if (Flags & parse_normalize_whitespace)\n                {\n                    // Test if condensing is needed\n                    if (whitespace_pred::test(*src))\n                    {\n                        *dest = Ch(' '); ++dest;    // Put single space in dest\n                        ++src;                      // Skip first whitespace char\n                        // Skip remaining whitespace chars\n                        while (whitespace_pred::test(*src))\n                            ++src;\n                        continue;\n                    }\n                }\n\n                // No replacement, only copy character\n                *dest++ = *src++;\n\n            }\n\n            // Return new end\n            text = src;\n            return dest;\n\n        }\n\n        ///////////////////////////////////////////////////////////////////////\n        // Internal parsing functions\n\n        // Parse BOM, if any\n        template<int Flags>\n        void parse_bom(Ch *&text)\n        {\n            // UTF-8?\n            if (static_cast<unsigned char>(text[0]) == 0xEF &&\n                static_cast<unsigned char>(text[1]) == 0xBB &&\n                static_cast<unsigned char>(text[2]) == 0xBF)\n            {\n                text += 3;      // Skup utf-8 bom\n            }\n        }\n\n        // Parse XML declaration (<?xml...)\n        template<int Flags>\n        xml_node<Ch> *parse_xml_declaration(Ch *&text)\n        {\n            // If parsing of declaration is disabled\n            if (!(Flags & parse_declaration_node))\n            {\n                // Skip until end of declaration\n                while (text[0] != Ch('?') || text[1] != Ch('>'))\n                {\n                    if (!text[0])\n                        RAPIDXML_PARSE_ERROR(\"unexpected end of data\", text);\n                    ++text;\n                }\n                text += 2;    // Skip '?>'\n                return nullptr;\n            }\n\n            // Create declaration\n            xml_node<Ch> *declaration = this->allocate_node(node_declaration);\n\n            // Skip whitespace before attributes or ?>\n            skip<whitespace_pred, Flags>(text);\n\n            // Parse declaration attributes\n            parse_node_attributes<Flags>(text, declaration);\n\n            // Skip ?>\n            if (text[0] != Ch('?') || text[1] != Ch('>'))\n                RAPIDXML_PARSE_ERROR(\"expected ?>\", text);\n            text += 2;\n\n            return declaration;\n        }\n\n        // Parse XML comment (<!--...)\n        template<int Flags>\n        xml_node<Ch> *parse_comment(Ch *&text)\n        {\n            // If parsing of comments is disabled\n            if (!(Flags & parse_comment_nodes))\n            {\n                // Skip until end of comment\n                while (text[0] != Ch('-') || text[1] != Ch('-') || text[2] != Ch('>'))\n                {\n                    if (!text[0])\n                        RAPIDXML_PARSE_ERROR(\"unexpected end of data\", text);\n                    ++text;\n                }\n                text += 3;     // Skip '-->'\n                return nullptr;      // Do not produce comment node\n            }\n\n            // Remember value start\n            Ch *value = text;\n\n            // Skip until end of comment\n            while (text[0] != Ch('-') || text[1] != Ch('-') || text[2] != Ch('>'))\n            {\n                if (!text[0])\n                    RAPIDXML_PARSE_ERROR(\"unexpected end of data\", text);\n                ++text;\n            }\n\n            // Create comment node\n            xml_node<Ch> *comment = this->allocate_node(node_comment);\n            comment->value(value, text - value);\n\n            // Place zero terminator after comment value\n            if (!(Flags & parse_no_string_terminators))\n                *text = Ch('\\0');\n\n            text += 3;     // Skip '-->'\n            return comment;\n        }\n\n        // Parse DOCTYPE\n        template<int Flags>\n        xml_node<Ch> *parse_doctype(Ch *&text)\n        {\n            // Remember value start\n            Ch *value = text;\n\n            // Skip to >\n            while (*text != Ch('>'))\n            {\n                // Determine character type\n                switch (*text)\n                {\n\n                // If '[' encountered, scan for matching ending ']' using naive algorithm with depth\n                // This works for all W3C test files except for 2 most wicked\n                case Ch('['):\n                {\n                    ++text;     // Skip '['\n                    int depth = 1;\n                    while (depth > 0)\n                    {\n                        switch (*text)\n                        {\n                            case Ch('['): ++depth; break;\n                            case Ch(']'): --depth; break;\n                            case 0: RAPIDXML_PARSE_ERROR(\"unexpected end of data\", text);\n                        }\n                        ++text;\n                    }\n                    break;\n                }\n\n                // Error on end of text\n                case Ch('\\0'):\n                    RAPIDXML_PARSE_ERROR(\"unexpected end of data\", text);\n\n                // Other character, skip it\n                default:\n                    ++text;\n\n                }\n            }\n\n            // If DOCTYPE nodes enabled\n            if (Flags & parse_doctype_node)\n            {\n                // Create a new doctype node\n                xml_node<Ch> *doctype = this->allocate_node(node_doctype);\n                doctype->value(value, text - value);\n\n                // Place zero terminator after value\n                if (!(Flags & parse_no_string_terminators))\n                    *text = Ch('\\0');\n\n                text += 1;      // skip '>'\n                return doctype;\n            }\n            else\n            {\n                text += 1;      // skip '>'\n                return nullptr;\n            }\n\n        }\n\n        // Parse PI\n        template<int Flags>\n        xml_node<Ch> *parse_pi(Ch *&text)\n        {\n            // If creation of PI nodes is enabled\n            if (Flags & parse_pi_nodes)\n            {\n                // Create pi node\n                xml_node<Ch> *pi = this->allocate_node(node_pi);\n\n                // Extract PI target name\n                Ch *name = text;\n                skip<node_name_pred, Flags>(text);\n                if (text == name)\n                    RAPIDXML_PARSE_ERROR(\"expected PI target\", text);\n                pi->name(name, text - name);\n\n                // Skip whitespace between pi target and pi\n                skip<whitespace_pred, Flags>(text);\n\n                // Remember start of pi\n                Ch *value = text;\n\n                // Skip to '?>'\n                while (text[0] != Ch('?') || text[1] != Ch('>'))\n                {\n                    if (*text == Ch('\\0'))\n                        RAPIDXML_PARSE_ERROR(\"unexpected end of data\", text);\n                    ++text;\n                }\n\n                // Set pi value (verbatim, no entity expansion or whitespace normalization)\n                pi->value(value, text - value);\n\n                // Place zero terminator after name and value\n                if (!(Flags & parse_no_string_terminators))\n                {\n                    pi->name()[pi->name_size()] = Ch('\\0');\n                    pi->value()[pi->value_size()] = Ch('\\0');\n                }\n\n                text += 2;                          // Skip '?>'\n                return pi;\n            }\n            else\n            {\n                // Skip to '?>'\n                while (text[0] != Ch('?') || text[1] != Ch('>'))\n                {\n                    if (*text == Ch('\\0'))\n                        RAPIDXML_PARSE_ERROR(\"unexpected end of data\", text);\n                    ++text;\n                }\n                text += 2;    // Skip '?>'\n                return nullptr;\n            }\n        }\n\n        // Parse and append data\n        // Return character that ends data.\n        // This is necessary because this character might have been overwritten by a terminating 0\n        template<int Flags>\n        Ch parse_and_append_data(xml_node<Ch> *node, Ch *&text, Ch *contents_start)\n        {\n            // Backup to contents start if whitespace trimming is disabled\n            if (!(Flags & parse_trim_whitespace))\n                text = contents_start;\n\n            // Skip until end of data\n            Ch *value = text, *end;\n            if (Flags & parse_normalize_whitespace)\n                end = skip_and_expand_character_refs<text_pred, text_pure_with_ws_pred, Flags>(text);\n            else\n                end = skip_and_expand_character_refs<text_pred, text_pure_no_ws_pred, Flags>(text);\n\n            // Trim trailing whitespace if flag is set; leading was already trimmed by whitespace skip after >\n            if (Flags & parse_trim_whitespace)\n            {\n                if (Flags & parse_normalize_whitespace)\n                {\n                    // Whitespace is already condensed to single space characters by skipping function, so just trim 1 char off the end\n                    if (*(end - 1) == Ch(' '))\n                        --end;\n                }\n                else\n                {\n                    // Backup until non-whitespace character is found\n                    while (whitespace_pred::test(*(end - 1)))\n                        --end;\n                }\n            }\n\n            // If characters are still left between end and value (this test is only necessary if normalization is enabled)\n            // Create new data node\n            if (!(Flags & parse_no_data_nodes))\n            {\n                xml_node<Ch> *data = this->allocate_node(node_data);\n                data->value(value, end - value);\n                node->append_node(data);\n            }\n\n            // Add data to parent node if no data exists yet\n            if (!(Flags & parse_no_element_values))\n                if (*node->value() == Ch('\\0'))\n                    node->value(value, end - value);\n\n            // Place zero terminator after value\n            if (!(Flags & parse_no_string_terminators))\n            {\n                Ch ch = *text;\n                *end = Ch('\\0');\n                return ch;      // Return character that ends data; this is required because zero terminator overwritten it\n            }\n\n            // Return character that ends data\n            return *text;\n        }\n\n        // Parse CDATA\n        template<int Flags>\n        xml_node<Ch> *parse_cdata(Ch *&text)\n        {\n            // If CDATA is disabled\n            if (Flags & parse_no_data_nodes)\n            {\n                // Skip until end of cdata\n                while (text[0] != Ch(']') || text[1] != Ch(']') || text[2] != Ch('>'))\n                {\n                    if (!text[0])\n                        RAPIDXML_PARSE_ERROR(\"unexpected end of data\", text);\n                    ++text;\n                }\n                text += 3;      // Skip ]]>\n                return nullptr;       // Do not produce CDATA node\n            }\n\n            // Skip until end of cdata\n            Ch *value = text;\n            while (text[0] != Ch(']') || text[1] != Ch(']') || text[2] != Ch('>'))\n            {\n                if (!text[0])\n                    RAPIDXML_PARSE_ERROR(\"unexpected end of data\", text);\n                ++text;\n            }\n\n            // Create new cdata node\n            xml_node<Ch> *cdata = this->allocate_node(node_cdata);\n            cdata->value(value, text - value);\n\n            // Place zero terminator after value\n            if (!(Flags & parse_no_string_terminators))\n                *text = Ch('\\0');\n\n            text += 3;      // Skip ]]>\n            return cdata;\n        }\n\n        // Parse element node\n        template<int Flags>\n        xml_node<Ch> *parse_element(Ch *&text)\n        {\n            // Create element node\n            xml_node<Ch> *element = this->allocate_node(node_element);\n\n            // Extract element name\n            Ch *name = text;\n            skip<node_name_pred, Flags>(text);\n            if (text == name)\n                RAPIDXML_PARSE_ERROR(\"expected element name\", text);\n            element->name(name, text - name);\n\n            // Skip whitespace between element name and attributes or >\n            skip<whitespace_pred, Flags>(text);\n\n            // Parse attributes, if any\n            parse_node_attributes<Flags>(text, element);\n\n            // Determine ending type\n            if (*text == Ch('>'))\n            {\n                ++text;\n                parse_node_contents<Flags>(text, element);\n            }\n            else if (*text == Ch('/'))\n            {\n                ++text;\n                if (*text != Ch('>'))\n                    RAPIDXML_PARSE_ERROR(\"expected >\", text);\n                ++text;\n            }\n            else\n                RAPIDXML_PARSE_ERROR(\"expected >\", text);\n\n            // Place zero terminator after name\n            if (!(Flags & parse_no_string_terminators))\n                element->name()[element->name_size()] = Ch('\\0');\n\n            // Return parsed element\n            return element;\n        }\n\n        // Determine node type, and parse it\n        template<int Flags>\n        xml_node<Ch> *parse_node(Ch *&text)\n        {\n            // Parse proper node type\n            switch (text[0])\n            {\n\n            // <...\n            default:\n                // Parse and append element node\n                return parse_element<Flags>(text);\n\n            // <?...\n            case Ch('?'):\n                ++text;     // Skip ?\n                if ((text[0] == Ch('x') || text[0] == Ch('X')) &&\n                    (text[1] == Ch('m') || text[1] == Ch('M')) &&\n                    (text[2] == Ch('l') || text[2] == Ch('L')) &&\n                    whitespace_pred::test(text[3]))\n                {\n                    // '<?xml ' - xml declaration\n                    text += 4;      // Skip 'xml '\n                    return parse_xml_declaration<Flags>(text);\n                }\n                else\n                {\n                    // Parse PI\n                    return parse_pi<Flags>(text);\n                }\n\n            // <!...\n            case Ch('!'):\n\n                // Parse proper subset of <! node\n                switch (text[1])\n                {\n\n                // <!-\n                case Ch('-'):\n                    if (text[2] == Ch('-'))\n                    {\n                        // '<!--' - xml comment\n                        text += 3;     // Skip '!--'\n                        return parse_comment<Flags>(text);\n                    }\n                    break;\n\n                // <![\n                case Ch('['):\n                    if (text[2] == Ch('C') && text[3] == Ch('D') && text[4] == Ch('A') &&\n                        text[5] == Ch('T') && text[6] == Ch('A') && text[7] == Ch('['))\n                    {\n                        // '<![CDATA[' - cdata\n                        text += 8;     // Skip '![CDATA['\n                        return parse_cdata<Flags>(text);\n                    }\n                    break;\n\n                // <!D\n                case Ch('D'):\n                    if (text[2] == Ch('O') && text[3] == Ch('C') && text[4] == Ch('T') &&\n                        text[5] == Ch('Y') && text[6] == Ch('P') && text[7] == Ch('E') &&\n                        whitespace_pred::test(text[8]))\n                    {\n                        // '<!DOCTYPE ' - doctype\n                        text += 9;      // skip '!DOCTYPE '\n                        return parse_doctype<Flags>(text);\n                    }\n\n                }   // switch\n\n                // Attempt to skip other, unrecognized node types starting with <!\n                ++text;     // Skip !\n                while (*text != Ch('>'))\n                {\n                    if (*text == 0)\n                        RAPIDXML_PARSE_ERROR(\"unexpected end of data\", text);\n                    ++text;\n                }\n                ++text;     // Skip '>'\n                return nullptr;   // No node recognized\n\n            }\n        }\n\n        // Parse contents of the node - children, data etc.\n        template<int Flags>\n        void parse_node_contents(Ch *&text, xml_node<Ch> *node)\n        {\n            // For all children and text\n            while (1)\n            {\n                // Skip whitespace between > and node contents\n                Ch *contents_start = text;      // Store start of node contents before whitespace is skipped\n                skip<whitespace_pred, Flags>(text);\n                Ch next_char = *text;\n\n            // After data nodes, instead of continuing the loop, control jumps here.\n            // This is because zero termination inside parse_and_append_data() function\n            // would wreak havoc with the above code.\n            // Also, skipping whitespace after data nodes is unnecessary.\n            after_data_node:\n\n                // Determine what comes next: node closing, child node, data node, or 0?\n                switch (next_char)\n                {\n\n                // Node closing or child node\n                case Ch('<'):\n                    if (text[1] == Ch('/'))\n                    {\n                        // Node closing\n                        text += 2;      // Skip '</'\n                        if (Flags & parse_validate_closing_tags)\n                        {\n                            // Skip and validate closing tag name\n                            Ch *closing_name = text;\n                            skip<node_name_pred, Flags>(text);\n                            if (!internal::compare(node->name(), node->name_size(), closing_name, text - closing_name, true))\n                                RAPIDXML_PARSE_ERROR(\"invalid closing tag name\", text);\n                        }\n                        else\n                        {\n                            // No validation, just skip name\n                            skip<node_name_pred, Flags>(text);\n                        }\n                        // Skip remaining whitespace after node name\n                        skip<whitespace_pred, Flags>(text);\n                        if (*text != Ch('>'))\n                            RAPIDXML_PARSE_ERROR(\"expected >\", text);\n                        ++text;     // Skip '>'\n                        return;     // Node closed, finished parsing contents\n                    }\n                    else\n                    {\n                        // Child node\n                        ++text;     // Skip '<'\n                        if (xml_node<Ch> *child = parse_node<Flags>(text))\n                            node->append_node(child);\n                    }\n                    break;\n\n                // End of data - error\n                case Ch('\\0'):\n                    RAPIDXML_PARSE_ERROR(\"unexpected end of data\", text);\n\n                // Data node\n                default:\n                    next_char = parse_and_append_data<Flags>(node, text, contents_start);\n                    goto after_data_node;   // Bypass regular processing after data nodes\n\n                }\n            }\n        }\n\n        // Parse XML attributes of the node\n        template<int Flags>\n        void parse_node_attributes(Ch *&text, xml_node<Ch> *node)\n        {\n            // For all attributes\n            while (attribute_name_pred::test(*text))\n            {\n                // Extract attribute name\n                Ch *name = text;\n                ++text;     // Skip first character of attribute name\n                skip<attribute_name_pred, Flags>(text);\n                if (text == name)\n                    RAPIDXML_PARSE_ERROR(\"expected attribute name\", name);\n\n                // Create new attribute\n                xml_attribute<Ch> *attribute = this->allocate_attribute();\n                attribute->name(name, text - name);\n                node->append_attribute(attribute);\n\n                // Skip whitespace after attribute name\n                skip<whitespace_pred, Flags>(text);\n\n                // Skip =\n                if (*text != Ch('='))\n                    RAPIDXML_PARSE_ERROR(\"expected =\", text);\n                ++text;\n\n                // Add terminating zero after name\n                if (!(Flags & parse_no_string_terminators))\n                    attribute->name()[attribute->name_size()] = 0;\n\n                // Skip whitespace after =\n                skip<whitespace_pred, Flags>(text);\n\n                // Skip quote and remember if it was ' or \"\n                Ch quote = *text;\n                if (quote != Ch('\\'') && quote != Ch('\"'))\n                    RAPIDXML_PARSE_ERROR(\"expected ' or \\\"\", text);\n                ++text;\n\n                // Extract attribute value and expand char refs in it\n                Ch *value = text, *end;\n                const int AttFlags = Flags & ~parse_normalize_whitespace;   // No whitespace normalization in attributes\n                if (quote == Ch('\\''))\n                    end = skip_and_expand_character_refs<attribute_value_pred<Ch('\\'')>, attribute_value_pure_pred<Ch('\\'')>, AttFlags>(text);\n                else\n                    end = skip_and_expand_character_refs<attribute_value_pred<Ch('\"')>, attribute_value_pure_pred<Ch('\"')>, AttFlags>(text);\n\n                // Set attribute value\n                attribute->value(value, end - value);\n\n                // Make sure that end quote is present\n                if (*text != quote)\n                    RAPIDXML_PARSE_ERROR(\"expected ' or \\\"\", text);\n                ++text;     // Skip quote\n\n                // Add terminating zero after value\n                if (!(Flags & parse_no_string_terminators))\n                    attribute->value()[attribute->value_size()] = 0;\n\n                // Skip whitespace after attribute value\n                skip<whitespace_pred, Flags>(text);\n            }\n        }\n\n    };\n\n    //! \\cond internal\n    namespace internal\n    {\n\n        // Whitespace (space \\n \\r \\t)\n        template<int Dummy>\n        const unsigned char lookup_tables<Dummy>::lookup_whitespace[256] =\n        {\n          // 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\n             0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  0,  0,  1,  0,  0,  // 0\n             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 1\n             1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 2\n             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 3\n             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 4\n             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 5\n             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 6\n             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 7\n             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 8\n             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 9\n             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // A\n             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // B\n             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // C\n             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // D\n             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // E\n             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0   // F\n        };\n\n        // Node name (anything but space \\n \\r \\t / > ? \\0)\n        template<int Dummy>\n        const unsigned char lookup_tables<Dummy>::lookup_node_name[256] =\n        {\n          // 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\n             0,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  1,  1,  0,  1,  1,  // 0\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 1\n             0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  // 2\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  // 3\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 4\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 5\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 6\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 7\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 8\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 9\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // A\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // B\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // C\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // D\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // E\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1   // F\n        };\n\n        // Text (i.e. PCDATA) (anything but < \\0)\n        template<int Dummy>\n        const unsigned char lookup_tables<Dummy>::lookup_text[256] =\n        {\n          // 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\n             0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 0\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 1\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 2\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  1,  1,  1,  // 3\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 4\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 5\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 6\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 7\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 8\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 9\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // A\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // B\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // C\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // D\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // E\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1   // F\n        };\n\n        // Text (i.e. PCDATA) that does not require processing when ws normalization is disabled\n        // (anything but < \\0 &)\n        template<int Dummy>\n        const unsigned char lookup_tables<Dummy>::lookup_text_pure_no_ws[256] =\n        {\n          // 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\n             0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 0\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 1\n             1,  1,  1,  1,  1,  1,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 2\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  1,  1,  1,  // 3\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 4\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 5\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 6\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 7\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 8\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 9\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // A\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // B\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // C\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // D\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // E\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1   // F\n        };\n\n        // Text (i.e. PCDATA) that does not require processing when ws normalizationis is enabled\n        // (anything but < \\0 & space \\n \\r \\t)\n        template<int Dummy>\n        const unsigned char lookup_tables<Dummy>::lookup_text_pure_with_ws[256] =\n        {\n          // 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\n             0,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  1,  1,  0,  1,  1,  // 0\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 1\n             0,  1,  1,  1,  1,  1,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 2\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  1,  1,  1,  // 3\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 4\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 5\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 6\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 7\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 8\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 9\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // A\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // B\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // C\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // D\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // E\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1   // F\n        };\n\n        // Attribute name (anything but space \\n \\r \\t / < > = ? ! \\0)\n        template<int Dummy>\n        const unsigned char lookup_tables<Dummy>::lookup_attribute_name[256] =\n        {\n          // 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\n             0,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  1,  1,  0,  1,  1,  // 0\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 1\n             0,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  // 2\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  0,  0,  // 3\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 4\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 5\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 6\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 7\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 8\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 9\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // A\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // B\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // C\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // D\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // E\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1   // F\n        };\n\n        // Attribute data with single quote (anything but ' \\0)\n        template<int Dummy>\n        const unsigned char lookup_tables<Dummy>::lookup_attribute_data_1[256] =\n        {\n          // 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\n             0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 0\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 1\n             1,  1,  1,  1,  1,  1,  1,  0,  1,  1,  1,  1,  1,  1,  1,  1,  // 2\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 3\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 4\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 5\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 6\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 7\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 8\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 9\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // A\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // B\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // C\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // D\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // E\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1   // F\n        };\n\n        // Attribute data with single quote that does not require processing (anything but ' \\0 &)\n        template<int Dummy>\n        const unsigned char lookup_tables<Dummy>::lookup_attribute_data_1_pure[256] =\n        {\n          // 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\n             0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 0\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 1\n             1,  1,  1,  1,  1,  1,  0,  0,  1,  1,  1,  1,  1,  1,  1,  1,  // 2\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 3\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 4\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 5\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 6\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 7\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 8\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 9\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // A\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // B\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // C\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // D\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // E\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1   // F\n        };\n\n        // Attribute data with double quote (anything but \" \\0)\n        template<int Dummy>\n        const unsigned char lookup_tables<Dummy>::lookup_attribute_data_2[256] =\n        {\n          // 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\n             0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 0\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 1\n             1,  1,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 2\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 3\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 4\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 5\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 6\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 7\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 8\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 9\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // A\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // B\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // C\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // D\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // E\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1   // F\n        };\n\n        // Attribute data with double quote that does not require processing (anything but \" \\0 &)\n        template<int Dummy>\n        const unsigned char lookup_tables<Dummy>::lookup_attribute_data_2_pure[256] =\n        {\n          // 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\n             0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 0\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 1\n             1,  1,  0,  1,  1,  1,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 2\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 3\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 4\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 5\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 6\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 7\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 8\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 9\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // A\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // B\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // C\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // D\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // E\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1   // F\n        };\n\n        // Digits (dec and hex, 255 denotes end of numeric character reference)\n        template<int Dummy>\n        const unsigned char lookup_tables<Dummy>::lookup_digits[256] =\n        {\n          // 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\n           255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  // 0\n           255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  // 1\n           255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  // 2\n             0,  1,  2,  3,  4,  5,  6,  7,  8,  9,255,255,255,255,255,255,  // 3\n           255, 10, 11, 12, 13, 14, 15,255,255,255,255,255,255,255,255,255,  // 4\n           255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  // 5\n           255, 10, 11, 12, 13, 14, 15,255,255,255,255,255,255,255,255,255,  // 6\n           255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  // 7\n           255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  // 8\n           255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  // 9\n           255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  // A\n           255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  // B\n           255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  // C\n           255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  // D\n           255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  // E\n           255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255   // F\n        };\n\n        // Upper case conversion\n        template<int Dummy>\n        const unsigned char lookup_tables<Dummy>::lookup_upcase[256] =\n        {\n          // 0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  A   B   C   D   E   F\n           0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15,   // 0\n           16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,   // 1\n           32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,   // 2\n           48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,   // 3\n           64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,   // 4\n           80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,   // 5\n           96, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,   // 6\n           80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 123,124,125,126,127,  // 7\n           128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,  // 8\n           144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,  // 9\n           160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,  // A\n           176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,  // B\n           192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,  // C\n           208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,  // D\n           224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,  // E\n           240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255   // F\n        };\n    }\n    //! \\endcond\n\n}\n\n// Undefine internal macros\n#undef RAPIDXML_PARSE_ERROR\n\n// On MSVC, restore warnings state\n#ifdef _MSC_VER\n    #pragma warning(pop)\n#endif\n\n#endif\n\n#ifndef RAPIDXML_H_INCLUDED\n#define RAPIDXML_H_INCLUDED\n\n// Copyright (C) 2006, 2009 Marcin Kalicinski\n// Version 1.13\n// Revision $DateTime: 2009/05/13 01:46:17 $\n//! \\file rapidxml.h This file contains rapidxml parser and DOM implementation\n\n// If standard library is disabled, user must provide implementations of required functions and typedefs\n#if !defined(RAPIDXML_NO_STDLIB)\n#include <cstdlib>      // For std::size_t\n#include <cassert>      // For assert\n#include <new>          // For placement new\n#endif\n\n// On MSVC, disable \"conditional expression is constant\" warning (level 4).\n// This warning is almost impossible to avoid with certain types of templated code\n#ifdef _MSC_VER\n#pragma warning(push)\n#pragma warning(disable:4127)   // Conditional expression is constant\n#endif\n\n///////////////////////////////////////////////////////////////////////////\n// RAPIDXML_PARSE_ERROR\n\n#if defined(RAPIDXML_NO_EXCEPTIONS)\n\n#define RAPIDXML_PARSE_ERROR(what, where) { parse_error_handler(what, where); assert(0); }\n\nnamespace rapidxml\n{\n//! When exceptions are disabled by defining RAPIDXML_NO_EXCEPTIONS,\n//! this function is called to notify user about the error.\n//! It must be defined by the user.\n//! <br><br>\n//! This function cannot return. If it does, the results are undefined.\n//! <br><br>\n//! A very simple definition might look like that:\n//! <pre>\n//! void %rapidxml::%parse_error_handler(const char *what, void *where)\n//! {\n//!     std::cout << \"Parse error: \" << what << \"\\n\";\n//!     std::abort();\n//! }\n//! </pre>\n//! \\param what Human readable description of the error.\n//! \\param where Pointer to character data where error was detected.\nvoid parse_error_handler(const char *what, void *where);\n}\n\n#else\n\n#include <exception>    // For std::exception\n\n#define RAPIDXML_PARSE_ERROR(what, where) throw parse_error(what, where)\n\nnamespace rapidxml\n{\n\n//! Parse error exception.\n//! This exception is thrown by the parser when an error occurs.\n//! Use what() function to get human-readable error message.\n//! Use where() function to get a pointer to position within source text where error was detected.\n//! <br><br>\n//! If throwing exceptions by the parser is undesirable,\n//! it can be disabled by defining RAPIDXML_NO_EXCEPTIONS macro before rapidxml.h is included.\n//! This will cause the parser to call rapidxml::parse_error_handler() function instead of throwing an exception.\n//! This function must be defined by the user.\n//! <br><br>\n//! This class derives from <code>std::exception</code> class.\nclass parse_error: public std::exception\n{\n\npublic:\n\n    //! Constructs parse error\n    parse_error(const char *what, void *where)\n        : m_what(what)\n        , m_where(where)\n    {\n    }\n\n    //! Gets human readable description of error.\n    //! \\return Pointer to null terminated description of the error.\n    virtual const char *what() const throw()\n    {\n        return m_what;\n    }\n\n    //! Gets pointer to character data where error happened.\n    //! Ch should be the same as char type of xml_document that produced the error.\n    //! \\return Pointer to location within the parsed string where error occured.\n    template<class Ch>\n    Ch *where() const\n    {\n        return reinterpret_cast<Ch *>(m_where);\n    }\n\nprivate:\n\n    const char *m_what;\n    void *m_where;\n\n};\n}\n\n#endif\n\n///////////////////////////////////////////////////////////////////////////\n// Pool sizes\n\n#ifndef RAPIDXML_STATIC_POOL_SIZE\n// Size of static memory block of memory_pool.\n// Define RAPIDXML_STATIC_POOL_SIZE before including rapidxml.h if you want to override the default value.\n// No dynamic memory allocations are performed by memory_pool until static memory is exhausted.\n#define RAPIDXML_STATIC_POOL_SIZE (64 * 1024)\n#endif\n\n#ifndef RAPIDXML_DYNAMIC_POOL_SIZE\n// Size of dynamic memory block of memory_pool.\n// Define RAPIDXML_DYNAMIC_POOL_SIZE before including rapidxml.h if you want to override the default value.\n// After the static block is exhausted, dynamic blocks with approximately this size are allocated by memory_pool.\n#define RAPIDXML_DYNAMIC_POOL_SIZE (64 * 1024)\n#endif\n\n#ifndef RAPIDXML_ALIGNMENT\n// Memory allocation alignment.\n// Define RAPIDXML_ALIGNMENT before including rapidxml.h if you want to override the default value, which is the size of pointer.\n// All memory allocations for nodes, attributes and strings will be aligned to this value.\n// This must be a power of 2 and at least 1, otherwise memory_pool will not work.\n#define RAPIDXML_ALIGNMENT sizeof(void *)\n#endif\n\nnamespace rapidxml\n{\n// Forward declarations\ntemplate<class Ch> class xml_node;\ntemplate<class Ch> class xml_attribute;\ntemplate<class Ch> class xml_document;\n\n//! Enumeration listing all node types produced by the parser.\n//! Use xml_node::type() function to query node type.\nenum node_type\n{\n    node_document,      //!< A document node. Name and value are empty.\n    node_element,       //!< An element node. Name contains element name. Value contains text of first data node.\n    node_data,          //!< A data node. Name is empty. Value contains data text.\n    node_cdata,         //!< A CDATA node. Name is empty. Value contains data text.\n    node_comment,       //!< A comment node. Name is empty. Value contains comment text.\n    node_declaration,   //!< A declaration node. Name and value are empty. Declaration parameters (version, encoding and standalone) are in node attributes.\n    node_doctype,       //!< A DOCTYPE node. Name is empty. Value contains DOCTYPE text.\n    node_pi             //!< A PI node. Name contains target. Value contains instructions.\n};\n\n///////////////////////////////////////////////////////////////////////\n// Parsing flags\n\n//! Parse flag instructing the parser to not create data nodes.\n//! Text of first data node will still be placed in value of parent element, unless rapidxml::parse_no_element_values flag is also specified.\n//! Can be combined with other flags by use of | operator.\n//! <br><br>\n//! See xml_document::parse() function.\nconst int parse_no_data_nodes = 0x1;\n\n//! Parse flag instructing the parser to not use text of first data node as a value of parent element.\n//! Can be combined with other flags by use of | operator.\n//! Note that child data nodes of element node take precendence over its value when printing.\n//! That is, if element has one or more child data nodes <em>and</em> a value, the value will be ignored.\n//! Use rapidxml::parse_no_data_nodes flag to prevent creation of data nodes if you want to manipulate data using values of elements.\n//! <br><br>\n//! See xml_document::parse() function.\nconst int parse_no_element_values = 0x2;\n\n//! Parse flag instructing the parser to not place zero terminators after strings in the source text.\n//! By default zero terminators are placed, modifying source text.\n//! Can be combined with other flags by use of | operator.\n//! <br><br>\n//! See xml_document::parse() function.\nconst int parse_no_string_terminators = 0x4;\n\n//! Parse flag instructing the parser to not translate entities in the source text.\n//! By default entities are translated, modifying source text.\n//! Can be combined with other flags by use of | operator.\n//! <br><br>\n//! See xml_document::parse() function.\nconst int parse_no_entity_translation = 0x8;\n\n//! Parse flag instructing the parser to disable UTF-8 handling and assume plain 8 bit characters.\n//! By default, UTF-8 handling is enabled.\n//! Can be combined with other flags by use of | operator.\n//! <br><br>\n//! See xml_document::parse() function.\nconst int parse_no_utf8 = 0x10;\n\n//! Parse flag instructing the parser to create XML declaration node.\n//! By default, declaration node is not created.\n//! Can be combined with other flags by use of | operator.\n//! <br><br>\n//! See xml_document::parse() function.\nconst int parse_declaration_node = 0x20;\n\n//! Parse flag instructing the parser to create comments nodes.\n//! By default, comment nodes are not created.\n//! Can be combined with other flags by use of | operator.\n//! <br><br>\n//! See xml_document::parse() function.\nconst int parse_comment_nodes = 0x40;\n\n//! Parse flag instructing the parser to create DOCTYPE node.\n//! By default, doctype node is not created.\n//! Although W3C specification allows at most one DOCTYPE node, RapidXml will silently accept documents with more than one.\n//! Can be combined with other flags by use of | operator.\n//! <br><br>\n//! See xml_document::parse() function.\nconst int parse_doctype_node = 0x80;\n\n//! Parse flag instructing the parser to create PI nodes.\n//! By default, PI nodes are not created.\n//! Can be combined with other flags by use of | operator.\n//! <br><br>\n//! See xml_document::parse() function.\nconst int parse_pi_nodes = 0x100;\n\n//! Parse flag instructing the parser to validate closing tag names.\n//! If not set, name inside closing tag is irrelevant to the parser.\n//! By default, closing tags are not validated.\n//! Can be combined with other flags by use of | operator.\n//! <br><br>\n//! See xml_document::parse() function.\nconst int parse_validate_closing_tags = 0x200;\n\n//! Parse flag instructing the parser to trim all leading and trailing whitespace of data nodes.\n//! By default, whitespace is not trimmed.\n//! This flag does not cause the parser to modify source text.\n//! Can be combined with other flags by use of | operator.\n//! <br><br>\n//! See xml_document::parse() function.\nconst int parse_trim_whitespace = 0x400;\n\n//! Parse flag instructing the parser to condense all whitespace runs of data nodes to a single space character.\n//! Trimming of leading and trailing whitespace of data is controlled by rapidxml::parse_trim_whitespace flag.\n//! By default, whitespace is not normalized.\n//! If this flag is specified, source text will be modified.\n//! Can be combined with other flags by use of | operator.\n//! <br><br>\n//! See xml_document::parse() function.\nconst int parse_normalize_whitespace = 0x800;\n\n// Compound flags\n\n//! Parse flags which represent default behaviour of the parser.\n//! This is always equal to 0, so that all other flags can be simply ored together.\n//! Normally there is no need to inconveniently disable flags by anding with their negated (~) values.\n//! This also means that meaning of each flag is a <i>negation</i> of the default setting.\n//! For example, if flag name is rapidxml::parse_no_utf8, it means that utf-8 is <i>enabled</i> by default,\n//! and using the flag will disable it.\n//! <br><br>\n//! See xml_document::parse() function.\nconst int parse_default = 0;\n\n//! A combination of parse flags that forbids any modifications of the source text.\n//! This also results in faster parsing. However, note that the following will occur:\n//! <ul>\n//! <li>names and values of nodes will not be zero terminated, you have to use xml_base::name_size() and xml_base::value_size() functions to determine where name and value ends</li>\n//! <li>entities will not be translated</li>\n//! <li>whitespace will not be normalized</li>\n//! </ul>\n//! See xml_document::parse() function.\nconst int parse_non_destructive = parse_no_string_terminators | parse_no_entity_translation;\n\n//! A combination of parse flags resulting in fastest possible parsing, without sacrificing important data.\n//! <br><br>\n//! See xml_document::parse() function.\nconst int parse_fastest = parse_non_destructive | parse_no_data_nodes;\n\n//! A combination of parse flags resulting in largest amount of data being extracted.\n//! This usually results in slowest parsing.\n//! <br><br>\n//! See xml_document::parse() function.\nconst int parse_full = parse_declaration_node | parse_comment_nodes | parse_doctype_node | parse_pi_nodes | parse_validate_closing_tags;\n\n///////////////////////////////////////////////////////////////////////\n// Internals\n\n//! \\cond internal\nnamespace internal\n{\n\n// Struct that contains lookup tables for the parser\n// It must be a template to allow correct linking (because it has static data members, which are defined in a header file).\ntemplate<int Dummy>\nstruct lookup_tables\n{\n    static const unsigned char lookup_whitespace[256];              // Whitespace table\n    static const unsigned char lookup_node_name[256];               // Node name table\n    static const unsigned char lookup_text[256];                    // Text table\n    static const unsigned char lookup_text_pure_no_ws[256];         // Text table\n    static const unsigned char lookup_text_pure_with_ws[256];       // Text table\n    static const unsigned char lookup_attribute_name[256];          // Attribute name table\n    static const unsigned char lookup_attribute_data_1[256];        // Attribute data table with single quote\n    static const unsigned char lookup_attribute_data_1_pure[256];   // Attribute data table with single quote\n    static const unsigned char lookup_attribute_data_2[256];        // Attribute data table with double quotes\n    static const unsigned char lookup_attribute_data_2_pure[256];   // Attribute data table with double quotes\n    static const unsigned char lookup_digits[256];                  // Digits\n    static const unsigned char lookup_upcase[256];                  // To uppercase conversion table for ASCII characters\n};\n\n// Find length of the string\ntemplate<class Ch>\ninline std::size_t measure(const Ch *p)\n{\n    const Ch *tmp = p;\n    while (*tmp)\n        ++tmp;\n    return tmp - p;\n}\n\n// Compare strings for equality\ntemplate<class Ch>\ninline bool compare(const Ch *p1, std::size_t size1, const Ch *p2, std::size_t size2, bool case_sensitive)\n{\n    if (size1 != size2)\n        return false;\n    if (case_sensitive)\n    {\n        for (const Ch *end = p1 + size1; p1 < end; ++p1, ++p2)\n            if (*p1 != *p2)\n                return false;\n    }\n    else\n    {\n        for (const Ch *end = p1 + size1; p1 < end; ++p1, ++p2)\n            if (lookup_tables<0>::lookup_upcase[static_cast<unsigned char>(*p1)] != lookup_tables<0>::lookup_upcase[static_cast<unsigned char>(*p2)])\n                return false;\n    }\n    return true;\n}\n}\n//! \\endcond\n\n///////////////////////////////////////////////////////////////////////\n// Memory pool\n\n//! This class is used by the parser to create new nodes and attributes, without overheads of dynamic memory allocation.\n//! In most cases, you will not need to use this class directly.\n//! However, if you need to create nodes manually or modify names/values of nodes,\n//! you are encouraged to use memory_pool of relevant xml_document to allocate the memory.\n//! Not only is this faster than allocating them by using <code>new</code> operator,\n//! but also their lifetime will be tied to the lifetime of document,\n//! possibly simplyfing memory management.\n//! <br><br>\n//! Call allocate_node() or allocate_attribute() functions to obtain new nodes or attributes from the pool.\n//! You can also call allocate_string() function to allocate strings.\n//! Such strings can then be used as names or values of nodes without worrying about their lifetime.\n//! Note that there is no <code>free()</code> function -- all allocations are freed at once when clear() function is called,\n//! or when the pool is destroyed.\n//! <br><br>\n//! It is also possible to create a standalone memory_pool, and use it\n//! to allocate nodes, whose lifetime will not be tied to any document.\n//! <br><br>\n//! Pool maintains <code>RAPIDXML_STATIC_POOL_SIZE</code> bytes of statically allocated memory.\n//! Until static memory is exhausted, no dynamic memory allocations are done.\n//! When static memory is exhausted, pool allocates additional blocks of memory of size <code>RAPIDXML_DYNAMIC_POOL_SIZE</code> each,\n//! by using global <code>new[]</code> and <code>delete[]</code> operators.\n//! This behaviour can be changed by setting custom allocation routines.\n//! Use set_allocator() function to set them.\n//! <br><br>\n//! Allocations for nodes, attributes and strings are aligned at <code>RAPIDXML_ALIGNMENT</code> bytes.\n//! This value defaults to the size of pointer on target architecture.\n//! <br><br>\n//! To obtain absolutely top performance from the parser,\n//! it is important that all nodes are allocated from a single, contiguous block of memory.\n//! Otherwise, cache misses when jumping between two (or more) disjoint blocks of memory can slow down parsing quite considerably.\n//! If required, you can tweak <code>RAPIDXML_STATIC_POOL_SIZE</code>, <code>RAPIDXML_DYNAMIC_POOL_SIZE</code> and <code>RAPIDXML_ALIGNMENT</code>\n//! to obtain best wasted memory to performance compromise.\n//! To do it, define their values before rapidxml.h file is included.\n//! \\param Ch Character type of created nodes.\ntemplate<class Ch = char>\nclass memory_pool\n{\n\npublic:\n\n    //! \\cond internal\n    typedef void *(alloc_func)(std::size_t);       // Type of user-defined function used to allocate memory\n    typedef void (free_func)(void *);              // Type of user-defined function used to free memory\n    //! \\endcond\n\n    //! Constructs empty pool with default allocator functions.\n    memory_pool()\n        : m_alloc_func(0)\n        , m_free_func(0)\n    {\n        init();\n    }\n\n    //! Destroys pool and frees all the memory.\n    //! This causes memory occupied by nodes allocated by the pool to be freed.\n    //! Nodes allocated from the pool are no longer valid.\n    ~memory_pool()\n    {\n        clear();\n    }\n\n    //! Allocates a new node from the pool, and optionally assigns name and value to it.\n    //! If the allocation request cannot be accomodated, this function will throw <code>std::bad_alloc</code>.\n    //! If exceptions are disabled by defining RAPIDXML_NO_EXCEPTIONS, this function\n    //! will call rapidxml::parse_error_handler() function.\n    //! \\param type Type of node to create.\n    //! \\param name Name to assign to the node, or 0 to assign no name.\n    //! \\param value Value to assign to the node, or 0 to assign no value.\n    //! \\param name_size Size of name to assign, or 0 to automatically calculate size from name string.\n    //! \\param value_size Size of value to assign, or 0 to automatically calculate size from value string.\n    //! \\return Pointer to allocated node. This pointer will never be NULL.\n    xml_node<Ch> *allocate_node(node_type type,\n                                const Ch *name = nullptr, const Ch *value = nullptr,\n                                std::size_t name_size = 0, std::size_t value_size = 0)\n    {\n        void *memory = allocate_aligned(sizeof(xml_node<Ch>));\n        xml_node<Ch> *node = new(memory) xml_node<Ch>(type);\n        if (name)\n        {\n            if (name_size > 0)\n                node->name(name, name_size);\n            else\n                node->name(name);\n        }\n        if (value)\n        {\n            if (value_size > 0)\n                node->value(value, value_size);\n            else\n                node->value(value);\n        }\n        return node;\n    }\n\n    //! Allocates a new attribute from the pool, and optionally assigns name and value to it.\n    //! If the allocation request cannot be accomodated, this function will throw <code>std::bad_alloc</code>.\n    //! If exceptions are disabled by defining RAPIDXML_NO_EXCEPTIONS, this function\n    //! will call rapidxml::parse_error_handler() function.\n    //! \\param name Name to assign to the attribute, or 0 to assign no name.\n    //! \\param value Value to assign to the attribute, or 0 to assign no value.\n    //! \\param name_size Size of name to assign, or 0 to automatically calculate size from name string.\n    //! \\param value_size Size of value to assign, or 0 to automatically calculate size from value string.\n    //! \\return Pointer to allocated attribute. This pointer will never be NULL.\n    xml_attribute<Ch> *allocate_attribute(const Ch *name = nullptr, const Ch *value = nullptr,\n                                          std::size_t name_size = 0, std::size_t value_size = 0)\n    {\n        void *memory = allocate_aligned(sizeof(xml_attribute<Ch>));\n        xml_attribute<Ch> *attribute = new(memory) xml_attribute<Ch>;\n        if (name)\n        {\n            if (name_size > 0)\n                attribute->name(name, name_size);\n            else\n                attribute->name(name);\n        }\n        if (value)\n        {\n            if (value_size > 0)\n                attribute->value(value, value_size);\n            else\n                attribute->value(value);\n        }\n        return attribute;\n    }\n\n    //! Allocates a char array of given size from the pool, and optionally copies a given string to it.\n    //! If the allocation request cannot be accomodated, this function will throw <code>std::bad_alloc</code>.\n    //! If exceptions are disabled by defining RAPIDXML_NO_EXCEPTIONS, this function\n    //! will call rapidxml::parse_error_handler() function.\n    //! \\param source String to initialize the allocated memory with, or 0 to not initialize it.\n    //! \\param size Number of characters to allocate, or zero to calculate it automatically from source string length; if size is 0, source string must be specified and null terminated.\n    //! \\return Pointer to allocated char array. This pointer will never be NULL.\n    Ch *allocate_string(const Ch *source = nullptr, std::size_t size = 0)\n    {\n        assert(source || size);     // Either source or size (or both) must be specified\n        if (size == 0)\n            size = internal::measure(source) + 1;\n        Ch *result = static_cast<Ch *>(allocate_aligned(size * sizeof(Ch)));\n        if (source)\n            for (std::size_t i = 0; i < size; ++i)\n                result[i] = source[i];\n        return result;\n    }\n\n    //! Clones an xml_node and its hierarchy of child nodes and attributes.\n    //! Nodes and attributes are allocated from this memory pool.\n    //! Names and values are not cloned, they are shared between the clone and the source.\n    //! Result node can be optionally specified as a second parameter,\n    //! in which case its contents will be replaced with cloned source node.\n    //! This is useful when you want to clone entire document.\n    //! \\param source Node to clone.\n    //! \\param result Node to put results in, or 0 to automatically allocate result node\n    //! \\return Pointer to cloned node. This pointer will never be NULL.\n    xml_node<Ch> *clone_node(const xml_node<Ch> *source, xml_node<Ch> *result = nullptr)\n    {\n        // Prepare result node\n        if (result)\n        {\n            result->remove_all_attributes();\n            result->remove_all_nodes();\n            result->type(source->type());\n        }\n        else\n            result = allocate_node(source->type());\n\n        // Clone name and value\n        result->name(source->name(), source->name_size());\n        result->value(source->value(), source->value_size());\n\n        // Clone child nodes and attributes\n        for (xml_node<Ch> *child = source->first_node(); child; child = child->next_sibling())\n            result->append_node(clone_node(child));\n        for (xml_attribute<Ch> *attr = source->first_attribute(); attr; attr = attr->next_attribute())\n            result->append_attribute(allocate_attribute(attr->name(), attr->value(), attr->name_size(), attr->value_size()));\n\n        return result;\n    }\n\n    //! Clears the pool.\n    //! This causes memory occupied by nodes allocated by the pool to be freed.\n    //! Any nodes or strings allocated from the pool will no longer be valid.\n    void clear()\n    {\n        while (m_begin != m_static_memory)\n        {\n            char *previous_begin = reinterpret_cast<header *>(align(m_begin))->previous_begin;\n            if (m_free_func)\n                m_free_func(m_begin);\n            else\n                delete[] m_begin;\n            m_begin = previous_begin;\n        }\n        init();\n    }\n\n    //! Sets or resets the user-defined memory allocation functions for the pool.\n    //! This can only be called when no memory is allocated from the pool yet, otherwise results are undefined.\n    //! Allocation function must not return invalid pointer on failure. It should either throw,\n    //! stop the program, or use <code>longjmp()</code> function to pass control to other place of program.\n    //! If it returns invalid pointer, results are undefined.\n    //! <br><br>\n    //! User defined allocation functions must have the following forms:\n    //! <br><code>\n    //! <br>void *allocate(std::size_t size);\n    //! <br>void free(void *pointer);\n    //! </code><br>\n    //! \\param af Allocation function, or 0 to restore default function\n    //! \\param ff Free function, or 0 to restore default function\n    void set_allocator(alloc_func *af, free_func *ff)\n    {\n        assert(m_begin == m_static_memory && m_ptr == align(m_begin));    // Verify that no memory is allocated yet\n        m_alloc_func = af;\n        m_free_func = ff;\n    }\n\nprivate:\n\n    struct header\n    {\n        char *previous_begin;\n    };\n\n    void init()\n    {\n        m_begin = m_static_memory;\n        m_ptr = align(m_begin);\n        m_end = m_static_memory + sizeof(m_static_memory);\n    }\n\n    char *align(char *ptr)\n    {\n        std::size_t alignment = ((RAPIDXML_ALIGNMENT - (std::size_t(ptr) & (RAPIDXML_ALIGNMENT - 1))) & (RAPIDXML_ALIGNMENT - 1));\n        return ptr + alignment;\n    }\n\n    char *allocate_raw(std::size_t size)\n    {\n        // Allocate\n        void *memory;\n        if (m_alloc_func)   // Allocate memory using either user-specified allocation function or global operator new[]\n        {\n            memory = m_alloc_func(size);\n            assert(memory); // Allocator is not allowed to return 0, on failure it must either throw, stop the program or use longjmp\n        }\n        else\n        {\n            memory = new char[size]();\n#ifdef RAPIDXML_NO_EXCEPTIONS\n            if (!memory)            // If exceptions are disabled, verify memory allocation, because new will not be able to throw bad_alloc\n                RAPIDXML_PARSE_ERROR(\"out of memory\", 0);\n#endif\n        }\n        return static_cast<char *>(memory);\n    }\n\n    void *allocate_aligned(std::size_t size)\n    {\n        // Calculate aligned pointer\n        char *result = align(m_ptr);\n\n        // If not enough memory left in current pool, allocate a new pool\n        if (result + size > m_end)\n        {\n            // Calculate required pool size (may be bigger than RAPIDXML_DYNAMIC_POOL_SIZE)\n            std::size_t pool_size = RAPIDXML_DYNAMIC_POOL_SIZE;\n            if (pool_size < size)\n                pool_size = size;\n\n            // Allocate\n            std::size_t alloc_size = sizeof(header) + (2 * RAPIDXML_ALIGNMENT - 2) + pool_size;     // 2 alignments required in worst case: one for header, one for actual allocation\n            char *raw_memory = allocate_raw(alloc_size);\n\n            // Setup new pool in allocated memory\n            char *pool = align(raw_memory);\n            header *new_header = reinterpret_cast<header *>(pool);\n            new_header->previous_begin = m_begin;\n            m_begin = raw_memory;\n            m_ptr = pool + sizeof(header);\n            m_end = raw_memory + alloc_size;\n\n            // Calculate aligned pointer again using new pool\n            result = align(m_ptr);\n        }\n\n        // Update pool and return aligned pointer\n        m_ptr = result + size;\n        return result;\n    }\n\n    char *m_begin;                                      // Start of raw memory making up current pool\n    char *m_ptr;                                        // First free byte in current pool\n    char *m_end;                                        // One past last available byte in current pool\n    char m_static_memory[RAPIDXML_STATIC_POOL_SIZE];    // Static raw memory\n    alloc_func *m_alloc_func;                           // Allocator function, or 0 if default is to be used\n    free_func *m_free_func;                             // Free function, or 0 if default is to be used\n};\n\n///////////////////////////////////////////////////////////////////////////\n// XML base\n\n//! Base class for xml_node and xml_attribute implementing common functions:\n//! name(), name_size(), value(), value_size() and parent().\n//! \\param Ch Character type to use\ntemplate<class Ch = char>\nclass xml_base\n{\n\npublic:\n\n    ///////////////////////////////////////////////////////////////////////////\n    // Construction & destruction\n\n    // Construct a base with empty name, value and parent\n    xml_base()\n        : m_name(0)\n        , m_value(0)\n        , m_name_size(0)\n        , m_value_size(0)\n        , m_parent(0)\n    {\n    }\n\n    ///////////////////////////////////////////////////////////////////////////\n    // Node data access\n\n    //! Gets name of the node.\n    //! Interpretation of name depends on type of node.\n    //! Note that name will not be zero-terminated if rapidxml::parse_no_string_terminators option was selected during parse.\n    //! <br><br>\n    //! Use name_size() function to determine length of the name.\n    //! \\return Name of node, or empty string if node has no name.\n    Ch *name() const\n    {\n        return m_name ? m_name : nullstr();\n    }\n\n    //! Gets size of node name, not including terminator character.\n    //! This function works correctly irrespective of whether name is or is not zero terminated.\n    //! \\return Size of node name, in characters.\n    std::size_t name_size() const\n    {\n        return m_name ? m_name_size : 0;\n    }\n\n    //! Gets value of node.\n    //! Interpretation of value depends on type of node.\n    //! Note that value will not be zero-terminated if rapidxml::parse_no_string_terminators option was selected during parse.\n    //! <br><br>\n    //! Use value_size() function to determine length of the value.\n    //! \\return Value of node, or empty string if node has no value.\n    Ch *value() const\n    {\n        return m_value ? m_value : nullstr();\n    }\n\n    //! Gets size of node value, not including terminator character.\n    //! This function works correctly irrespective of whether value is or is not zero terminated.\n    //! \\return Size of node value, in characters.\n    std::size_t value_size() const\n    {\n        return m_value ? m_value_size : 0;\n    }\n\n    ///////////////////////////////////////////////////////////////////////////\n    // Node modification\n\n    //! Sets name of node to a non zero-terminated string.\n    //! See \\ref ownership_of_strings.\n    //! <br><br>\n    //! Note that node does not own its name or value, it only stores a pointer to it.\n    //! It will not delete or otherwise free the pointer on destruction.\n    //! It is reponsibility of the user to properly manage lifetime of the string.\n    //! The easiest way to achieve it is to use memory_pool of the document to allocate the string -\n    //! on destruction of the document the string will be automatically freed.\n    //! <br><br>\n    //! Size of name must be specified separately, because name does not have to be zero terminated.\n    //! Use name(const Ch *) function to have the length automatically calculated (string must be zero terminated).\n    //! \\param name Name of node to set. Does not have to be zero terminated.\n    //! \\param size Size of name, in characters. This does not include zero terminator, if one is present.\n    void name(const Ch *name, std::size_t size)\n    {\n        m_name = const_cast<Ch *>(name);\n        m_name_size = size;\n    }\n\n    //! Sets name of node to a zero-terminated string.\n    //! See also \\ref ownership_of_strings and xml_node::name(const Ch *, std::size_t).\n    //! \\param name Name of node to set. Must be zero terminated.\n    void name(const Ch *name)\n    {\n        this->name(name, internal::measure(name));\n    }\n\n    //! Sets value of node to a non zero-terminated string.\n    //! See \\ref ownership_of_strings.\n    //! <br><br>\n    //! Note that node does not own its name or value, it only stores a pointer to it.\n    //! It will not delete or otherwise free the pointer on destruction.\n    //! It is reponsibility of the user to properly manage lifetime of the string.\n    //! The easiest way to achieve it is to use memory_pool of the document to allocate the string -\n    //! on destruction of the document the string will be automatically freed.\n    //! <br><br>\n    //! Size of value must be specified separately, because it does not have to be zero terminated.\n    //! Use value(const Ch *) function to have the length automatically calculated (string must be zero terminated).\n    //! <br><br>\n    //! If an element has a child node of type node_data, it will take precedence over element value when printing.\n    //! If you want to manipulate data of elements using values, use parser flag rapidxml::parse_no_data_nodes to prevent creation of data nodes by the parser.\n    //! \\param value value of node to set. Does not have to be zero terminated.\n    //! \\param size Size of value, in characters. This does not include zero terminator, if one is present.\n    void value(const Ch *value, std::size_t size)\n    {\n        m_value = const_cast<Ch *>(value);\n        m_value_size = size;\n    }\n\n    //! Sets value of node to a zero-terminated string.\n    //! See also \\ref ownership_of_strings and xml_node::value(const Ch *, std::size_t).\n    //! \\param value Vame of node to set. Must be zero terminated.\n    void value(const Ch *value)\n    {\n        this->value(value, internal::measure(value));\n    }\n\n    ///////////////////////////////////////////////////////////////////////////\n    // Related nodes access\n\n    //! Gets node parent.\n    //! \\return Pointer to parent node, or 0 if there is no parent.\n    xml_node<Ch> *parent() const\n    {\n        return m_parent;\n    }\n\nprotected:\n\n    // Return empty string\n    static Ch *nullstr()\n    {\n        static Ch zero = Ch('\\0');\n        return &zero;\n    }\n\n    Ch *m_name;                         // Name of node, or 0 if no name\n    Ch *m_value;                        // Value of node, or 0 if no value\n    std::size_t m_name_size;            // Length of node name, or undefined of no name\n    std::size_t m_value_size;           // Length of node value, or undefined if no value\n    xml_node<Ch> *m_parent;             // Pointer to parent node, or 0 if none\n\n};\n\n//! Class representing attribute node of XML document.\n//! Each attribute has name and value strings, which are available through name() and value() functions (inherited from xml_base).\n//! Note that after parse, both name and value of attribute will point to interior of source text used for parsing.\n//! Thus, this text must persist in memory for the lifetime of attribute.\n//! \\param Ch Character type to use.\ntemplate<class Ch = char>\nclass xml_attribute: public xml_base<Ch>\n{\n\n    friend class xml_node<Ch>;\n\npublic:\n\n    ///////////////////////////////////////////////////////////////////////////\n    // Construction & destruction\n\n    //! Constructs an empty attribute with the specified type.\n    //! Consider using memory_pool of appropriate xml_document if allocating attributes manually.\n    xml_attribute()\n    {\n    }\n\n    ///////////////////////////////////////////////////////////////////////////\n    // Related nodes access\n\n    //! Gets document of which attribute is a child.\n    //! \\return Pointer to document that contains this attribute, or 0 if there is no parent document.\n    xml_document<Ch> *document() const\n    {\n        if (xml_node<Ch> *node = this->parent())\n        {\n            while (node->parent())\n                node = node->parent();\n            return node->type() == node_document ? static_cast<xml_document<Ch> *>(node) : 0;\n        }\n        else\n            return 0;\n    }\n\n    //! Gets previous attribute, optionally matching attribute name.\n    //! \\param name Name of attribute to find, or 0 to return previous attribute regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero\n    //! \\param name_size Size of name, in characters, or 0 to have size calculated automatically from string\n    //! \\param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters\n    //! \\return Pointer to found attribute, or 0 if not found.\n    xml_attribute<Ch> *previous_attribute(const Ch *name = nullptr, std::size_t name_size = 0, bool case_sensitive = true) const\n    {\n        if (name)\n        {\n            if (name_size == 0)\n                name_size = internal::measure(name);\n            for (xml_attribute<Ch> *attribute = m_prev_attribute; attribute; attribute = attribute->m_prev_attribute)\n                if (internal::compare(attribute->name(), attribute->name_size(), name, name_size, case_sensitive))\n                    return attribute;\n            return 0;\n        }\n        else\n            return this->m_parent ? m_prev_attribute : 0;\n    }\n\n    //! Gets next attribute, optionally matching attribute name.\n    //! \\param name Name of attribute to find, or 0 to return next attribute regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero\n    //! \\param name_size Size of name, in characters, or 0 to have size calculated automatically from string\n    //! \\param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters\n    //! \\return Pointer to found attribute, or 0 if not found.\n    xml_attribute<Ch> *next_attribute(const Ch *name = nullptr, std::size_t name_size = 0, bool case_sensitive = true) const\n    {\n        if (name)\n        {\n            if (name_size == 0)\n                name_size = internal::measure(name);\n            for (xml_attribute<Ch> *attribute = m_next_attribute; attribute; attribute = attribute->m_next_attribute)\n                if (internal::compare(attribute->name(), attribute->name_size(), name, name_size, case_sensitive))\n                    return attribute;\n            return 0;\n        }\n        else\n            return this->m_parent ? m_next_attribute : 0;\n    }\n\nprivate:\n\n    xml_attribute<Ch> *m_prev_attribute;        // Pointer to previous sibling of attribute, or 0 if none; only valid if parent is non-zero\n    xml_attribute<Ch> *m_next_attribute;        // Pointer to next sibling of attribute, or 0 if none; only valid if parent is non-zero\n\n};\n\n///////////////////////////////////////////////////////////////////////////\n// XML node\n\n//! Class representing a node of XML document.\n//! Each node may have associated name and value strings, which are available through name() and value() functions.\n//! Interpretation of name and value depends on type of the node.\n//! Type of node can be determined by using type() function.\n//! <br><br>\n//! Note that after parse, both name and value of node, if any, will point interior of source text used for parsing.\n//! Thus, this text must persist in the memory for the lifetime of node.\n//! \\param Ch Character type to use.\ntemplate<class Ch = char>\nclass xml_node: public xml_base<Ch>\n{\n\npublic:\n\n    ///////////////////////////////////////////////////////////////////////////\n    // Construction & destruction\n\n    //! Constructs an empty node with the specified type.\n    //! Consider using memory_pool of appropriate document to allocate nodes manually.\n    //! \\param type Type of node to construct.\n    xml_node(node_type type)\n        : m_type(type)\n        , m_first_node(nullptr)\n        , m_first_attribute(nullptr)\n    {\n    }\n\n    ///////////////////////////////////////////////////////////////////////////\n    // Node data access\n\n    //! Gets type of node.\n    //! \\return Type of node.\n    node_type type() const\n    {\n        return m_type;\n    }\n\n    ///////////////////////////////////////////////////////////////////////////\n    // Related nodes access\n\n    //! Gets document of which node is a child.\n    //! \\return Pointer to document that contains this node, or 0 if there is no parent document.\n    xml_document<Ch> *document() const\n    {\n        xml_node<Ch> *node = const_cast<xml_node<Ch> *>(this);\n        while (node->parent())\n            node = node->parent();\n        return node->type() == node_document ? static_cast<xml_document<Ch> *>(node) : 0;\n    }\n\n    //! Gets first child node, optionally matching node name.\n    //! \\param name Name of child to find, or 0 to return first child regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero\n    //! \\param name_size Size of name, in characters, or 0 to have size calculated automatically from string\n    //! \\param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters\n    //! \\return Pointer to found child, or 0 if not found.\n    xml_node<Ch> *first_node(const Ch *name = nullptr, std::size_t name_size = 0, bool case_sensitive = true) const\n    {\n        if (name)\n        {\n            if (name_size == 0)\n                name_size = internal::measure(name);\n            for (xml_node<Ch> *child = m_first_node; child; child = child->next_sibling())\n                if (internal::compare(child->name(), child->name_size(), name, name_size, case_sensitive))\n                    return child;\n            return nullptr;\n        }\n        else\n            return m_first_node;\n    }\n\n    //! Gets last child node, optionally matching node name.\n    //! Behaviour is undefined if node has no children.\n    //! Use first_node() to test if node has children.\n    //! \\param name Name of child to find, or 0 to return last child regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero\n    //! \\param name_size Size of name, in characters, or 0 to have size calculated automatically from string\n    //! \\param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters\n    //! \\return Pointer to found child, or 0 if not found.\n    xml_node<Ch> *last_node(const Ch *name = nullptr, std::size_t name_size = 0, bool case_sensitive = true) const\n    {\n        assert(m_first_node);  // Cannot query for last child if node has no children\n        if (name)\n        {\n            if (name_size == 0)\n                name_size = internal::measure(name);\n            for (xml_node<Ch> *child = m_last_node; child; child = child->previous_sibling())\n                if (internal::compare(child->name(), child->name_size(), name, name_size, case_sensitive))\n                    return child;\n            return 0;\n        }\n        else\n            return m_last_node;\n    }\n\n    //! Gets previous sibling node, optionally matching node name.\n    //! Behaviour is undefined if node has no parent.\n    //! Use parent() to test if node has a parent.\n    //! \\param name Name of sibling to find, or 0 to return previous sibling regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero\n    //! \\param name_size Size of name, in characters, or 0 to have size calculated automatically from string\n    //! \\param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters\n    //! \\return Pointer to found sibling, or 0 if not found.\n    xml_node<Ch> *previous_sibling(const Ch *name = nullptr, std::size_t name_size = 0, bool case_sensitive = true) const\n    {\n        assert(this->m_parent);     // Cannot query for siblings if node has no parent\n        if (name)\n        {\n            if (name_size == 0)\n                name_size = internal::measure(name);\n            for (xml_node<Ch> *sibling = m_prev_sibling; sibling; sibling = sibling->m_prev_sibling)\n                if (internal::compare(sibling->name(), sibling->name_size(), name, name_size, case_sensitive))\n                    return sibling;\n            return 0;\n        }\n        else\n            return m_prev_sibling;\n    }\n\n    //! Gets next sibling node, optionally matching node name.\n    //! Behaviour is undefined if node has no parent.\n    //! Use parent() to test if node has a parent.\n    //! \\param name Name of sibling to find, or 0 to return next sibling regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero\n    //! \\param name_size Size of name, in characters, or 0 to have size calculated automatically from string\n    //! \\param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters\n    //! \\return Pointer to found sibling, or 0 if not found.\n    xml_node<Ch> *next_sibling(const Ch *name = nullptr, std::size_t name_size = 0, bool case_sensitive = true) const\n    {\n        assert(this->m_parent);     // Cannot query for siblings if node has no parent\n        if (name)\n        {\n            if (name_size == 0)\n                name_size = internal::measure(name);\n            for (xml_node<Ch> *sibling = m_next_sibling; sibling; sibling = sibling->m_next_sibling)\n                if (internal::compare(sibling->name(), sibling->name_size(), name, name_size, case_sensitive))\n                    return sibling;\n            return nullptr;\n        }\n        else\n            return m_next_sibling;\n    }\n\n    //! Gets first attribute of node, optionally matching attribute name.\n    //! \\param name Name of attribute to find, or 0 to return first attribute regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero\n    //! \\param name_size Size of name, in characters, or 0 to have size calculated automatically from string\n    //! \\param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters\n    //! \\return Pointer to found attribute, or 0 if not found.\n    xml_attribute<Ch> *first_attribute(const Ch *name = nullptr, std::size_t name_size = 0, bool case_sensitive = true) const\n    {\n        if (name)\n        {\n            if (name_size == 0)\n                name_size = internal::measure(name);\n            for (xml_attribute<Ch> *attribute = m_first_attribute; attribute; attribute = attribute->m_next_attribute)\n                if (internal::compare(attribute->name(), attribute->name_size(), name, name_size, case_sensitive))\n                    return attribute;\n            return nullptr;\n        }\n        else\n            return m_first_attribute;\n    }\n\n    //! Gets last attribute of node, optionally matching attribute name.\n    //! \\param name Name of attribute to find, or 0 to return last attribute regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero\n    //! \\param name_size Size of name, in characters, or 0 to have size calculated automatically from string\n    //! \\param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters\n    //! \\return Pointer to found attribute, or 0 if not found.\n    xml_attribute<Ch> *last_attribute(const Ch *name = nullptr, std::size_t name_size = 0, bool case_sensitive = true) const\n    {\n        if (name)\n        {\n            if (name_size == 0)\n                name_size = internal::measure(name);\n            for (xml_attribute<Ch> *attribute = m_last_attribute; attribute; attribute = attribute->m_prev_attribute)\n                if (internal::compare(attribute->name(), attribute->name_size(), name, name_size, case_sensitive))\n                    return attribute;\n            return 0;\n        }\n        else\n            return m_first_attribute ? m_last_attribute : 0;\n    }\n\n    ///////////////////////////////////////////////////////////////////////////\n    // Node modification\n\n    //! Sets type of node.\n    //! \\param type Type of node to set.\n    void type(node_type type)\n    {\n        m_type = type;\n    }\n\n    ///////////////////////////////////////////////////////////////////////////\n    // Node manipulation\n\n    //! Prepends a new child node.\n    //! The prepended child becomes the first child, and all existing children are moved one position back.\n    //! \\param child Node to prepend.\n    void prepend_node(xml_node<Ch> *child)\n    {\n        assert(child && !child->parent() && child->type() != node_document);\n        if (first_node())\n        {\n            child->m_next_sibling = m_first_node;\n            m_first_node->m_prev_sibling = child;\n        }\n        else\n        {\n            child->m_next_sibling = nullptr;\n            m_last_node = child;\n        }\n        m_first_node = child;\n        child->m_parent = this;\n        child->m_prev_sibling = nullptr;\n    }\n\n    //! Appends a new child node.\n    //! The appended child becomes the last child.\n    //! \\param child Node to append.\n    void append_node(xml_node<Ch> *child)\n    {\n        assert(child && !child->parent() && child->type() != node_document);\n        if (first_node())\n        {\n            child->m_prev_sibling = m_last_node;\n            m_last_node->m_next_sibling = child;\n        }\n        else\n        {\n            child->m_prev_sibling = nullptr;\n            m_first_node = child;\n        }\n        m_last_node = child;\n        child->m_parent = this;\n        child->m_next_sibling = nullptr;\n    }\n\n    //! Inserts a new child node at specified place inside the node.\n    //! All children after and including the specified node are moved one position back.\n    //! \\param where Place where to insert the child, or 0 to insert at the back.\n    //! \\param child Node to insert.\n    void insert_node(xml_node<Ch> *where, xml_node<Ch> *child)\n    {\n        assert(!where || where->parent() == this);\n        assert(child && !child->parent() && child->type() != node_document);\n        if (where == m_first_node)\n            prepend_node(child);\n        else if (where == 0)\n            append_node(child);\n        else\n        {\n            child->m_prev_sibling = where->m_prev_sibling;\n            child->m_next_sibling = where;\n            where->m_prev_sibling->m_next_sibling = child;\n            where->m_prev_sibling = child;\n            child->m_parent = this;\n        }\n    }\n\n    //! Removes first child node.\n    //! If node has no children, behaviour is undefined.\n    //! Use first_node() to test if node has children.\n    void remove_first_node()\n    {\n        assert(first_node());\n        xml_node<Ch> *child = m_first_node;\n        m_first_node = child->m_next_sibling;\n        if (child->m_next_sibling)\n            child->m_next_sibling->m_prev_sibling = nullptr;\n        else\n            m_last_node = nullptr;\n        child->m_parent = nullptr;\n    }\n\n    //! Removes last child of the node.\n    //! If node has no children, behaviour is undefined.\n    //! Use first_node() to test if node has children.\n    void remove_last_node()\n    {\n        assert(first_node());\n        xml_node<Ch> *child = m_last_node;\n        if (child->m_prev_sibling)\n        {\n            m_last_node = child->m_prev_sibling;\n            child->m_prev_sibling->m_next_sibling = nullptr;\n        }\n        else\n            m_first_node = nullptr;\n        child->m_parent = nullptr;\n    }\n\n    //! Removes specified child from the node\n    // \\param where Pointer to child to be removed.\n    void remove_node(xml_node<Ch> *where)\n    {\n        assert(where && where->parent() == this);\n        assert(first_node());\n        if (where == m_first_node)\n            remove_first_node();\n        else if (where == m_last_node)\n            remove_last_node();\n        else\n        {\n            where->m_prev_sibling->m_next_sibling = where->m_next_sibling;\n            where->m_next_sibling->m_prev_sibling = where->m_prev_sibling;\n            where->m_parent = nullptr;\n        }\n    }\n\n    //! Removes all child nodes (but not attributes).\n    void remove_all_nodes()\n    {\n        for (xml_node<Ch> *node = first_node(); node; node = node->m_next_sibling)\n            node->m_parent = nullptr;\n        m_first_node = nullptr;\n    }\n\n    //! Prepends a new attribute to the node.\n    //! \\param attribute Attribute to prepend.\n    void prepend_attribute(xml_attribute<Ch> *attribute)\n    {\n        assert(attribute && !attribute->parent());\n        if (first_attribute())\n        {\n            attribute->m_next_attribute = m_first_attribute;\n            m_first_attribute->m_prev_attribute = attribute;\n        }\n        else\n        {\n            attribute->m_next_attribute = nullptr;\n            m_last_attribute = attribute;\n        }\n        m_first_attribute = attribute;\n        attribute->m_parent = this;\n        attribute->m_prev_attribute = nullptr;\n    }\n\n    //! Appends a new attribute to the node.\n    //! \\param attribute Attribute to append.\n    void append_attribute(xml_attribute<Ch> *attribute)\n    {\n        assert(attribute && !attribute->parent());\n        if (first_attribute())\n        {\n            attribute->m_prev_attribute = m_last_attribute;\n            m_last_attribute->m_next_attribute = attribute;\n        }\n        else\n        {\n            attribute->m_prev_attribute = nullptr;\n            m_first_attribute = attribute;\n        }\n        m_last_attribute = attribute;\n        attribute->m_parent = this;\n        attribute->m_next_attribute = nullptr;\n    }\n\n    //! Inserts a new attribute at specified place inside the node.\n    //! All attributes after and including the specified attribute are moved one position back.\n    //! \\param where Place where to insert the attribute, or 0 to insert at the back.\n    //! \\param attribute Attribute to insert.\n    void insert_attribute(xml_attribute<Ch> *where, xml_attribute<Ch> *attribute)\n    {\n        assert(!where || where->parent() == this);\n        assert(attribute && !attribute->parent());\n        if (where == m_first_attribute)\n            prepend_attribute(attribute);\n        else if (where == 0)\n            append_attribute(attribute);\n        else\n        {\n            attribute->m_prev_attribute = where->m_prev_attribute;\n            attribute->m_next_attribute = where;\n            where->m_prev_attribute->m_next_attribute = attribute;\n            where->m_prev_attribute = attribute;\n            attribute->m_parent = this;\n        }\n    }\n\n    //! Removes first attribute of the node.\n    //! If node has no attributes, behaviour is undefined.\n    //! Use first_attribute() to test if node has attributes.\n    void remove_first_attribute()\n    {\n        assert(first_attribute());\n        xml_attribute<Ch> *attribute = m_first_attribute;\n        if (attribute->m_next_attribute)\n        {\n            attribute->m_next_attribute->m_prev_attribute = nullptr;\n        }\n        else\n            m_last_attribute = nullptr;\n        attribute->m_parent = nullptr;\n        m_first_attribute = attribute->m_next_attribute;\n    }\n\n    //! Removes last attribute of the node.\n    //! If node has no attributes, behaviour is undefined.\n    //! Use first_attribute() to test if node has attributes.\n    void remove_last_attribute()\n    {\n        assert(first_attribute());\n        xml_attribute<Ch> *attribute = m_last_attribute;\n        if (attribute->m_prev_attribute)\n        {\n            attribute->m_prev_attribute->m_next_attribute = nullptr;\n            m_last_attribute = attribute->m_prev_attribute;\n        }\n        else\n            m_first_attribute = nullptr;\n        attribute->m_parent = nullptr;\n    }\n\n    //! Removes specified attribute from node.\n    //! \\param where Pointer to attribute to be removed.\n    void remove_attribute(xml_attribute<Ch> *where)\n    {\n        assert(first_attribute() && where->parent() == this);\n        if (where == m_first_attribute)\n            remove_first_attribute();\n        else if (where == m_last_attribute)\n            remove_last_attribute();\n        else\n        {\n            where->m_prev_attribute->m_next_attribute = where->m_next_attribute;\n            where->m_next_attribute->m_prev_attribute = where->m_prev_attribute;\n            where->m_parent = nullptr;\n        }\n    }\n\n    //! Removes all attributes of node.\n    void remove_all_attributes()\n    {\n        for (xml_attribute<Ch> *attribute = first_attribute(); attribute; attribute = attribute->m_next_attribute)\n            attribute->m_parent = nullptr;\n        m_first_attribute = nullptr;\n    }\n\nprivate:\n\n    ///////////////////////////////////////////////////////////////////////////\n    // Restrictions\n\n    // No copying\n    xml_node(const xml_node &);\n    void operator =(const xml_node &);\n\n    ///////////////////////////////////////////////////////////////////////////\n    // Data members\n\n    // Note that some of the pointers below have UNDEFINED values if certain other pointers are 0.\n    // This is required for maximum performance, as it allows the parser to omit initialization of\n    // unneded/redundant values.\n    //\n    // The rules are as follows:\n    // 1. first_node and first_attribute contain valid pointers, or 0 if node has no children/attributes respectively\n    // 2. last_node and last_attribute are valid only if node has at least one child/attribute respectively, otherwise they contain garbage\n    // 3. prev_sibling and next_sibling are valid only if node has a parent, otherwise they contain garbage\n\n    node_type m_type;                       // Type of node; always valid\n    xml_node<Ch> *m_first_node;             // Pointer to first child node, or 0 if none; always valid\n    xml_node<Ch> *m_last_node;              // Pointer to last child node, or 0 if none; this value is only valid if m_first_node is non-zero\n    xml_attribute<Ch> *m_first_attribute;   // Pointer to first attribute of node, or 0 if none; always valid\n    xml_attribute<Ch> *m_last_attribute;    // Pointer to last attribute of node, or 0 if none; this value is only valid if m_first_attribute is non-zero\n    xml_node<Ch> *m_prev_sibling;           // Pointer to previous sibling of node, or 0 if none; this value is only valid if m_parent is non-zero\n    xml_node<Ch> *m_next_sibling;           // Pointer to next sibling of node, or 0 if none; this value is only valid if m_parent is non-zero\n\n};\n\n///////////////////////////////////////////////////////////////////////////\n// XML document\n\n//! This class represents root of the DOM hierarchy.\n//! It is also an xml_node and a memory_pool through public inheritance.\n//! Use parse() function to build a DOM tree from a zero-terminated XML text string.\n//! parse() function allocates memory for nodes and attributes by using functions of xml_document,\n//! which are inherited from memory_pool.\n//! To access root node of the document, use the document itself, as if it was an xml_node.\n//! \\param Ch Character type to use.\ntemplate<class Ch = char>\nclass xml_document: public xml_node<Ch>, public memory_pool<Ch>\n{\n\npublic:\n\n    //! Constructs empty XML document\n    xml_document()\n        : xml_node<Ch>(node_document)\n    {\n    }\n\n    //! Parses zero-terminated XML string according to given flags.\n    //! Passed string will be modified by the parser, unless rapidxml::parse_non_destructive flag is used.\n    //! The string must persist for the lifetime of the document.\n    //! In case of error, rapidxml::parse_error exception will be thrown.\n    //! <br><br>\n    //! If you want to parse contents of a file, you must first load the file into the memory, and pass pointer to its beginning.\n    //! Make sure that data is zero-terminated.\n    //! <br><br>\n    //! Document can be parsed into multiple times.\n    //! Each new call to parse removes previous nodes and attributes (if any), but does not clear memory pool.\n    //! \\param text XML data to parse; pointer is non-const to denote fact that this data may be modified by the parser.\n    template<int Flags>\n    void parse(Ch *text)\n    {\n        assert(text);\n\n        // Remove current contents\n        this->remove_all_nodes();\n        this->remove_all_attributes();\n\n        // Parse BOM, if any\n        parse_bom<Flags>(text);\n\n        // Parse children\n        while (1)\n        {\n            // Skip whitespace before node\n            skip<whitespace_pred, Flags>(text);\n            if (*text == 0)\n                break;\n\n            // Parse and append new child\n            if (*text == Ch('<'))\n            {\n                ++text;     // Skip '<'\n                if (xml_node<Ch> *node = parse_node<Flags>(text))\n                    this->append_node(node);\n            }\n            else\n                RAPIDXML_PARSE_ERROR(\"expected <\", text);\n        }\n\n    }\n\n    //! Clears the document by deleting all nodes and clearing the memory pool.\n    //! All nodes owned by document pool are destroyed.\n    void clear()\n    {\n        this->remove_all_nodes();\n        this->remove_all_attributes();\n        memory_pool<Ch>::clear();\n    }\n\nprivate:\n\n    ///////////////////////////////////////////////////////////////////////\n    // Internal character utility functions\n\n    // Detect whitespace character\n    struct whitespace_pred\n    {\n        static unsigned char test(Ch ch)\n        {\n            return internal::lookup_tables<0>::lookup_whitespace[static_cast<unsigned char>(ch)];\n        }\n    };\n\n    // Detect node name character\n    struct node_name_pred\n    {\n        static unsigned char test(Ch ch)\n        {\n            return internal::lookup_tables<0>::lookup_node_name[static_cast<unsigned char>(ch)];\n        }\n    };\n\n    // Detect attribute name character\n    struct attribute_name_pred\n    {\n        static unsigned char test(Ch ch)\n        {\n            return internal::lookup_tables<0>::lookup_attribute_name[static_cast<unsigned char>(ch)];\n        }\n    };\n\n    // Detect text character (PCDATA)\n    struct text_pred\n    {\n        static unsigned char test(Ch ch)\n        {\n            return internal::lookup_tables<0>::lookup_text[static_cast<unsigned char>(ch)];\n        }\n    };\n\n    // Detect text character (PCDATA) that does not require processing\n    struct text_pure_no_ws_pred\n    {\n        static unsigned char test(Ch ch)\n        {\n            return internal::lookup_tables<0>::lookup_text_pure_no_ws[static_cast<unsigned char>(ch)];\n        }\n    };\n\n    // Detect text character (PCDATA) that does not require processing\n    struct text_pure_with_ws_pred\n    {\n        static unsigned char test(Ch ch)\n        {\n            return internal::lookup_tables<0>::lookup_text_pure_with_ws[static_cast<unsigned char>(ch)];\n        }\n    };\n\n    // Detect attribute value character\n    template<Ch Quote>\n    struct attribute_value_pred\n    {\n        static unsigned char test(Ch ch)\n        {\n            if (Quote == Ch('\\''))\n                return internal::lookup_tables<0>::lookup_attribute_data_1[static_cast<unsigned char>(ch)];\n            if (Quote == Ch('\\\"'))\n                return internal::lookup_tables<0>::lookup_attribute_data_2[static_cast<unsigned char>(ch)];\n            return 0;       // Should never be executed, to avoid warnings on Comeau\n        }\n    };\n\n    // Detect attribute value character\n    template<Ch Quote>\n    struct attribute_value_pure_pred\n    {\n        static unsigned char test(Ch ch)\n        {\n            if (Quote == Ch('\\''))\n                return internal::lookup_tables<0>::lookup_attribute_data_1_pure[static_cast<unsigned char>(ch)];\n            if (Quote == Ch('\\\"'))\n                return internal::lookup_tables<0>::lookup_attribute_data_2_pure[static_cast<unsigned char>(ch)];\n            return 0;       // Should never be executed, to avoid warnings on Comeau\n        }\n    };\n\n    // Insert coded character, using UTF8 or 8-bit ASCII\n    template<int Flags>\n    static void insert_coded_character(Ch *&text, unsigned long code)\n    {\n        if (Flags & parse_no_utf8)\n        {\n            // Insert 8-bit ASCII character\n            // Todo: possibly verify that code is less than 256 and use replacement char otherwise?\n            text[0] = static_cast<unsigned char>(code);\n            text += 1;\n        }\n        else\n        {\n            // Insert UTF8 sequence\n            if (code < 0x80)    // 1 byte sequence\n            {\n                text[0] = static_cast<unsigned char>(code);\n                text += 1;\n            }\n            else if (code < 0x800)  // 2 byte sequence\n            {\n                text[1] = static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6;\n                text[0] = static_cast<unsigned char>(code | 0xC0);\n                text += 2;\n            }\n            else if (code < 0x10000)    // 3 byte sequence\n            {\n                text[2] = static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6;\n                text[1] = static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6;\n                text[0] = static_cast<unsigned char>(code | 0xE0);\n                text += 3;\n            }\n            else if (code < 0x110000)   // 4 byte sequence\n            {\n                text[3] = static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6;\n                text[2] = static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6;\n                text[1] = static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6;\n                text[0] = static_cast<unsigned char>(code | 0xF0);\n                text += 4;\n            }\n            else    // Invalid, only codes up to 0x10FFFF are allowed in Unicode\n            {\n                RAPIDXML_PARSE_ERROR(\"invalid numeric character entity\", text);\n            }\n        }\n    }\n\n    // Skip characters until predicate evaluates to true\n    template<class StopPred, int Flags>\n    static void skip(Ch *&text)\n    {\n        Ch *tmp = text;\n        while (StopPred::test(*tmp))\n            ++tmp;\n        text = tmp;\n    }\n\n    // Skip characters until predicate evaluates to true while doing the following:\n    // - replacing XML character entity references with proper characters (&apos; &amp; &quot; &lt; &gt; &#...;)\n    // - condensing whitespace sequences to single space character\n    template<class StopPred, class StopPredPure, int Flags>\n    static Ch *skip_and_expand_character_refs(Ch *&text)\n    {\n        // If entity translation, whitespace condense and whitespace trimming is disabled, use plain skip\n        if (Flags & parse_no_entity_translation &&\n                !(Flags & parse_normalize_whitespace) &&\n                !(Flags & parse_trim_whitespace))\n        {\n            skip<StopPred, Flags>(text);\n            return text;\n        }\n\n        // Use simple skip until first modification is detected\n        skip<StopPredPure, Flags>(text);\n\n        // Use translation skip\n        Ch *src = text;\n        Ch *dest = src;\n        while (StopPred::test(*src))\n        {\n            // If entity translation is enabled\n            if (!(Flags & parse_no_entity_translation))\n            {\n                // Test if replacement is needed\n                if (src[0] == Ch('&'))\n                {\n                    switch (src[1])\n                    {\n\n                    // &amp; &apos;\n                    case Ch('a'):\n                        if (src[2] == Ch('m') && src[3] == Ch('p') && src[4] == Ch(';'))\n                        {\n                            *dest = Ch('&');\n                            ++dest;\n                            src += 5;\n                            continue;\n                        }\n                        if (src[2] == Ch('p') && src[3] == Ch('o') && src[4] == Ch('s') && src[5] == Ch(';'))\n                        {\n                            *dest = Ch('\\'');\n                            ++dest;\n                            src += 6;\n                            continue;\n                        }\n                        break;\n\n                        // &quot;\n                    case Ch('q'):\n                        if (src[2] == Ch('u') && src[3] == Ch('o') && src[4] == Ch('t') && src[5] == Ch(';'))\n                        {\n                            *dest = Ch('\"');\n                            ++dest;\n                            src += 6;\n                            continue;\n                        }\n                        break;\n\n                        // &gt;\n                    case Ch('g'):\n                        if (src[2] == Ch('t') && src[3] == Ch(';'))\n                        {\n                            *dest = Ch('>');\n                            ++dest;\n                            src += 4;\n                            continue;\n                        }\n                        break;\n\n                        // &lt;\n                    case Ch('l'):\n                        if (src[2] == Ch('t') && src[3] == Ch(';'))\n                        {\n                            *dest = Ch('<');\n                            ++dest;\n                            src += 4;\n                            continue;\n                        }\n                        break;\n\n                        // &#...; - assumes ASCII\n                    case Ch('#'):\n                        if (src[2] == Ch('x'))\n                        {\n                            unsigned long code = 0;\n                            src += 3;   // Skip &#x\n                            while (1)\n                            {\n                                unsigned char digit = internal::lookup_tables<0>::lookup_digits[static_cast<unsigned char>(*src)];\n                                if (digit == 0xFF)\n                                    break;\n                                code = code * 16 + digit;\n                                ++src;\n                            }\n                            insert_coded_character<Flags>(dest, code);    // Put character in output\n                        }\n                        else\n                        {\n                            unsigned long code = 0;\n                            src += 2;   // Skip &#\n                            while (1)\n                            {\n                                unsigned char digit = internal::lookup_tables<0>::lookup_digits[static_cast<unsigned char>(*src)];\n                                if (digit == 0xFF)\n                                    break;\n                                code = code * 10 + digit;\n                                ++src;\n                            }\n                            insert_coded_character<Flags>(dest, code);    // Put character in output\n                        }\n                        if (*src == Ch(';'))\n                            ++src;\n                        else\n                            RAPIDXML_PARSE_ERROR(\"expected ;\", src);\n                        continue;\n\n                        // Something else\n                    default:\n                        // Ignore, just copy '&' verbatim\n                        break;\n\n                    }\n                }\n            }\n\n            // If whitespace condensing is enabled\n            if (Flags & parse_normalize_whitespace)\n            {\n                // Test if condensing is needed\n                if (whitespace_pred::test(*src))\n                {\n                    *dest = Ch(' '); ++dest;    // Put single space in dest\n                    ++src;                      // Skip first whitespace char\n                    // Skip remaining whitespace chars\n                    while (whitespace_pred::test(*src))\n                        ++src;\n                    continue;\n                }\n            }\n\n            // No replacement, only copy character\n            *dest++ = *src++;\n\n        }\n\n        // Return new end\n        text = src;\n        return dest;\n\n    }\n\n    ///////////////////////////////////////////////////////////////////////\n    // Internal parsing functions\n\n    // Parse BOM, if any\n    template<int Flags>\n    void parse_bom(Ch *&text)\n    {\n        // UTF-8?\n        if (static_cast<unsigned char>(text[0]) == 0xEF &&\n                static_cast<unsigned char>(text[1]) == 0xBB &&\n                static_cast<unsigned char>(text[2]) == 0xBF)\n        {\n            text += 3;      // Skup utf-8 bom\n        }\n    }\n\n    // Parse XML declaration (<?xml...)\n    template<int Flags>\n    xml_node<Ch> *parse_xml_declaration(Ch *&text)\n    {\n        // If parsing of declaration is disabled\n        if (!(Flags & parse_declaration_node))\n        {\n            // Skip until end of declaration\n            while (text[0] != Ch('?') || text[1] != Ch('>'))\n            {\n                if (!text[0])\n                    RAPIDXML_PARSE_ERROR(\"unexpected end of data\", text);\n                ++text;\n            }\n            text += 2;    // Skip '?>'\n            return 0;\n        }\n\n        // Create declaration\n        xml_node<Ch> *declaration = this->allocate_node(node_declaration);\n\n        // Skip whitespace before attributes or ?>\n        skip<whitespace_pred, Flags>(text);\n\n        // Parse declaration attributes\n        parse_node_attributes<Flags>(text, declaration);\n\n        // Skip ?>\n        if (text[0] != Ch('?') || text[1] != Ch('>'))\n            RAPIDXML_PARSE_ERROR(\"expected ?>\", text);\n        text += 2;\n\n        return declaration;\n    }\n\n    // Parse XML comment (<!--...)\n    template<int Flags>\n    xml_node<Ch> *parse_comment(Ch *&text)\n    {\n        // If parsing of comments is disabled\n        if (!(Flags & parse_comment_nodes))\n        {\n            // Skip until end of comment\n            while (text[0] != Ch('-') || text[1] != Ch('-') || text[2] != Ch('>'))\n            {\n                if (!text[0])\n                    RAPIDXML_PARSE_ERROR(\"unexpected end of data\", text);\n                ++text;\n            }\n            text += 3;     // Skip '-->'\n            return 0;      // Do not produce comment node\n        }\n\n        // Remember value start\n        Ch *value = text;\n\n        // Skip until end of comment\n        while (text[0] != Ch('-') || text[1] != Ch('-') || text[2] != Ch('>'))\n        {\n            if (!text[0])\n                RAPIDXML_PARSE_ERROR(\"unexpected end of data\", text);\n            ++text;\n        }\n\n        // Create comment node\n        xml_node<Ch> *comment = this->allocate_node(node_comment);\n        comment->value(value, text - value);\n\n        // Place zero terminator after comment value\n        if (!(Flags & parse_no_string_terminators))\n            *text = Ch('\\0');\n\n        text += 3;     // Skip '-->'\n        return comment;\n    }\n\n    // Parse DOCTYPE\n    template<int Flags>\n    xml_node<Ch> *parse_doctype(Ch *&text)\n    {\n        // Remember value start\n        Ch *value = text;\n\n        // Skip to >\n        while (*text != Ch('>'))\n        {\n            // Determine character type\n            switch (*text)\n            {\n\n            // If '[' encountered, scan for matching ending ']' using naive algorithm with depth\n            // This works for all W3C test files except for 2 most wicked\n            case Ch('['):\n            {\n                ++text;     // Skip '['\n                int depth = 1;\n                while (depth > 0)\n                {\n                    switch (*text)\n                    {\n                    case Ch('['): ++depth; break;\n                    case Ch(']'): --depth; break;\n                    case 0: RAPIDXML_PARSE_ERROR(\"unexpected end of data\", text);\n                    }\n                    ++text;\n                }\n                break;\n            }\n\n                // Error on end of text\n            case Ch('\\0'):\n                RAPIDXML_PARSE_ERROR(\"unexpected end of data\", text);\n\n                // Other character, skip it\n            default:\n                ++text;\n\n            }\n        }\n\n        // If DOCTYPE nodes enabled\n        if (Flags & parse_doctype_node)\n        {\n            // Create a new doctype node\n            xml_node<Ch> *doctype = this->allocate_node(node_doctype);\n            doctype->value(value, text - value);\n\n            // Place zero terminator after value\n            if (!(Flags & parse_no_string_terminators))\n                *text = Ch('\\0');\n\n            text += 1;      // skip '>'\n            return doctype;\n        }\n        else\n        {\n            text += 1;      // skip '>'\n            return nullptr;\n        }\n\n    }\n\n    // Parse PI\n    template<int Flags>\n    xml_node<Ch> *parse_pi(Ch *&text)\n    {\n        // If creation of PI nodes is enabled\n        if (Flags & parse_pi_nodes)\n        {\n            // Create pi node\n            xml_node<Ch> *pi = this->allocate_node(node_pi);\n\n            // Extract PI target name\n            Ch *name = text;\n            skip<node_name_pred, Flags>(text);\n            if (text == name)\n                RAPIDXML_PARSE_ERROR(\"expected PI target\", text);\n            pi->name(name, text - name);\n\n            // Skip whitespace between pi target and pi\n            skip<whitespace_pred, Flags>(text);\n\n            // Remember start of pi\n            Ch *value = text;\n\n            // Skip to '?>'\n            while (text[0] != Ch('?') || text[1] != Ch('>'))\n            {\n                if (*text == Ch('\\0'))\n                    RAPIDXML_PARSE_ERROR(\"unexpected end of data\", text);\n                ++text;\n            }\n\n            // Set pi value (verbatim, no entity expansion or whitespace normalization)\n            pi->value(value, text - value);\n\n            // Place zero terminator after name and value\n            if (!(Flags & parse_no_string_terminators))\n            {\n                pi->name()[pi->name_size()] = Ch('\\0');\n                pi->value()[pi->value_size()] = Ch('\\0');\n            }\n\n            text += 2;                          // Skip '?>'\n            return pi;\n        }\n        else\n        {\n            // Skip to '?>'\n            while (text[0] != Ch('?') || text[1] != Ch('>'))\n            {\n                if (*text == Ch('\\0'))\n                    RAPIDXML_PARSE_ERROR(\"unexpected end of data\", text);\n                ++text;\n            }\n            text += 2;    // Skip '?>'\n            return 0;\n        }\n    }\n\n    // Parse and append data\n    // Return character that ends data.\n    // This is necessary because this character might have been overwritten by a terminating 0\n    template<int Flags>\n    Ch parse_and_append_data(xml_node<Ch> *node, Ch *&text, Ch *contents_start)\n    {\n        // Backup to contents start if whitespace trimming is disabled\n        if (!(Flags & parse_trim_whitespace))\n            text = contents_start;\n\n        // Skip until end of data\n        Ch *value = text, *end;\n        if (Flags & parse_normalize_whitespace)\n            end = skip_and_expand_character_refs<text_pred, text_pure_with_ws_pred, Flags>(text);\n        else\n            end = skip_and_expand_character_refs<text_pred, text_pure_no_ws_pred, Flags>(text);\n\n        // Trim trailing whitespace if flag is set; leading was already trimmed by whitespace skip after >\n        if (Flags & parse_trim_whitespace)\n        {\n            if (Flags & parse_normalize_whitespace)\n            {\n                // Whitespace is already condensed to single space characters by skipping function, so just trim 1 char off the end\n                if (*(end - 1) == Ch(' '))\n                    --end;\n            }\n            else\n            {\n                // Backup until non-whitespace character is found\n                while (whitespace_pred::test(*(end - 1)))\n                    --end;\n            }\n        }\n\n        // If characters are still left between end and value (this test is only necessary if normalization is enabled)\n        // Create new data node\n        if (!(Flags & parse_no_data_nodes))\n        {\n            xml_node<Ch> *data = this->allocate_node(node_data);\n            data->value(value, end - value);\n            node->append_node(data);\n        }\n\n        // Add data to parent node if no data exists yet\n        if (!(Flags & parse_no_element_values))\n            if (*node->value() == Ch('\\0'))\n                node->value(value, end - value);\n\n        // Place zero terminator after value\n        if (!(Flags & parse_no_string_terminators))\n        {\n            Ch ch = *text;\n            *end = Ch('\\0');\n            return ch;      // Return character that ends data; this is required because zero terminator overwritten it\n        }\n\n        // Return character that ends data\n        return *text;\n    }\n\n    // Parse CDATA\n    template<int Flags>\n    xml_node<Ch> *parse_cdata(Ch *&text)\n    {\n        // If CDATA is disabled\n        if (Flags & parse_no_data_nodes)\n        {\n            // Skip until end of cdata\n            while (text[0] != Ch(']') || text[1] != Ch(']') || text[2] != Ch('>'))\n            {\n                if (!text[0])\n                    RAPIDXML_PARSE_ERROR(\"unexpected end of data\", text);\n                ++text;\n            }\n            text += 3;      // Skip ]]>\n            return 0;       // Do not produce CDATA node\n        }\n\n        // Skip until end of cdata\n        Ch *value = text;\n        while (text[0] != Ch(']') || text[1] != Ch(']') || text[2] != Ch('>'))\n        {\n            if (!text[0])\n                RAPIDXML_PARSE_ERROR(\"unexpected end of data\", text);\n            ++text;\n        }\n\n        // Create new cdata node\n        xml_node<Ch> *cdata = this->allocate_node(node_cdata);\n        cdata->value(value, text - value);\n\n        // Place zero terminator after value\n        if (!(Flags & parse_no_string_terminators))\n            *text = Ch('\\0');\n\n        text += 3;      // Skip ]]>\n        return cdata;\n    }\n\n    // Parse element node\n    template<int Flags>\n    xml_node<Ch> *parse_element(Ch *&text)\n    {\n        // Create element node\n        xml_node<Ch> *element = this->allocate_node(node_element);\n\n        // Extract element name\n        Ch *name = text;\n        skip<node_name_pred, Flags>(text);\n        if (text == name)\n            RAPIDXML_PARSE_ERROR(\"expected element name\", text);\n        element->name(name, text - name);\n\n        // Skip whitespace between element name and attributes or >\n        skip<whitespace_pred, Flags>(text);\n\n        // Parse attributes, if any\n        parse_node_attributes<Flags>(text, element);\n\n        // Determine ending type\n        if (*text == Ch('>'))\n        {\n            ++text;\n            parse_node_contents<Flags>(text, element);\n        }\n        else if (*text == Ch('/'))\n        {\n            ++text;\n            if (*text != Ch('>'))\n                RAPIDXML_PARSE_ERROR(\"expected >\", text);\n            ++text;\n        }\n        else\n            RAPIDXML_PARSE_ERROR(\"expected >\", text);\n\n        // Place zero terminator after name\n        if (!(Flags & parse_no_string_terminators))\n            element->name()[element->name_size()] = Ch('\\0');\n\n        // Return parsed element\n        return element;\n    }\n\n    // Determine node type, and parse it\n    template<int Flags>\n    xml_node<Ch> *parse_node(Ch *&text)\n    {\n        // Parse proper node type\n        switch (text[0])\n        {\n\n        // <...\n        default:\n            // Parse and append element node\n            return parse_element<Flags>(text);\n\n            // <?...\n        case Ch('?'):\n            ++text;     // Skip ?\n            if ((text[0] == Ch('x') || text[0] == Ch('X')) &&\n                    (text[1] == Ch('m') || text[1] == Ch('M')) &&\n                    (text[2] == Ch('l') || text[2] == Ch('L')) &&\n                    whitespace_pred::test(text[3]))\n            {\n                // '<?xml ' - xml declaration\n                text += 4;      // Skip 'xml '\n                return parse_xml_declaration<Flags>(text);\n            }\n            else\n            {\n                // Parse PI\n                return parse_pi<Flags>(text);\n            }\n\n            // <!...\n        case Ch('!'):\n\n            // Parse proper subset of <! node\n            switch (text[1])\n            {\n\n            // <!-\n            case Ch('-'):\n                if (text[2] == Ch('-'))\n                {\n                    // '<!--' - xml comment\n                    text += 3;     // Skip '!--'\n                    return parse_comment<Flags>(text);\n                }\n                break;\n\n                // <![\n            case Ch('['):\n                if (text[2] == Ch('C') && text[3] == Ch('D') && text[4] == Ch('A') &&\n                        text[5] == Ch('T') && text[6] == Ch('A') && text[7] == Ch('['))\n                {\n                    // '<![CDATA[' - cdata\n                    text += 8;     // Skip '![CDATA['\n                    return parse_cdata<Flags>(text);\n                }\n                break;\n\n                // <!D\n            case Ch('D'):\n                if (text[2] == Ch('O') && text[3] == Ch('C') && text[4] == Ch('T') &&\n                        text[5] == Ch('Y') && text[6] == Ch('P') && text[7] == Ch('E') &&\n                        whitespace_pred::test(text[8]))\n                {\n                    // '<!DOCTYPE ' - doctype\n                    text += 9;      // skip '!DOCTYPE '\n                    return parse_doctype<Flags>(text);\n                }\n\n            }   // switch\n\n            // Attempt to skip other, unrecognized node types starting with <!\n            ++text;     // Skip !\n            while (*text != Ch('>'))\n            {\n                if (*text == 0)\n                    RAPIDXML_PARSE_ERROR(\"unexpected end of data\", text);\n                ++text;\n            }\n            ++text;     // Skip '>'\n            return 0;   // No node recognized\n\n        }\n    }\n\n    // Parse contents of the node - children, data etc.\n    template<int Flags>\n    void parse_node_contents(Ch *&text, xml_node<Ch> *node)\n    {\n        // For all children and text\n        while (1)\n        {\n            // Skip whitespace between > and node contents\n            Ch *contents_start = text;      // Store start of node contents before whitespace is skipped\n            skip<whitespace_pred, Flags>(text);\n            Ch next_char = *text;\n\n            // After data nodes, instead of continuing the loop, control jumps here.\n            // This is because zero termination inside parse_and_append_data() function\n            // would wreak havoc with the above code.\n            // Also, skipping whitespace after data nodes is unnecessary.\nafter_data_node:\n\n            // Determine what comes next: node closing, child node, data node, or 0?\n            switch (next_char)\n            {\n\n            // Node closing or child node\n            case Ch('<'):\n                if (text[1] == Ch('/'))\n                {\n                    // Node closing\n                    text += 2;      // Skip '</'\n                    if (Flags & parse_validate_closing_tags)\n                    {\n                        // Skip and validate closing tag name\n                        Ch *closing_name = text;\n                        skip<node_name_pred, Flags>(text);\n                        if (!internal::compare(node->name(), node->name_size(), closing_name, text - closing_name, true))\n                            RAPIDXML_PARSE_ERROR(\"invalid closing tag name\", text);\n                    }\n                    else\n                    {\n                        // No validation, just skip name\n                        skip<node_name_pred, Flags>(text);\n                    }\n                    // Skip remaining whitespace after node name\n                    skip<whitespace_pred, Flags>(text);\n                    if (*text != Ch('>'))\n                        RAPIDXML_PARSE_ERROR(\"expected >\", text);\n                    ++text;     // Skip '>'\n                    return;     // Node closed, finished parsing contents\n                }\n                else\n                {\n                    // Child node\n                    ++text;     // Skip '<'\n                    if (xml_node<Ch> *child = parse_node<Flags>(text))\n                        node->append_node(child);\n                }\n                break;\n\n                // End of data - error\n            case Ch('\\0'):\n                RAPIDXML_PARSE_ERROR(\"unexpected end of data\", text);\n\n                // Data node\n            default:\n                next_char = parse_and_append_data<Flags>(node, text, contents_start);\n                goto after_data_node;   // Bypass regular processing after data nodes\n\n            }\n        }\n    }\n\n    // Parse XML attributes of the node\n    template<int Flags>\n    void parse_node_attributes(Ch *&text, xml_node<Ch> *node)\n    {\n        // For all attributes\n        while (attribute_name_pred::test(*text))\n        {\n            // Extract attribute name\n            Ch *name = text;\n            ++text;     // Skip first character of attribute name\n            skip<attribute_name_pred, Flags>(text);\n            if (text == name)\n                RAPIDXML_PARSE_ERROR(\"expected attribute name\", name);\n\n            // Create new attribute\n            xml_attribute<Ch> *attribute = this->allocate_attribute();\n            attribute->name(name, text - name);\n            node->append_attribute(attribute);\n\n            // Skip whitespace after attribute name\n            skip<whitespace_pred, Flags>(text);\n\n            // Skip =\n            if (*text != Ch('='))\n                RAPIDXML_PARSE_ERROR(\"expected =\", text);\n            ++text;\n\n            // Add terminating zero after name\n            if (!(Flags & parse_no_string_terminators))\n                attribute->name()[attribute->name_size()] = 0;\n\n            // Skip whitespace after =\n            skip<whitespace_pred, Flags>(text);\n\n            // Skip quote and remember if it was ' or \"\n            Ch quote = *text;\n            if (quote != Ch('\\'') && quote != Ch('\"'))\n                RAPIDXML_PARSE_ERROR(\"expected ' or \\\"\", text);\n            ++text;\n\n            // Extract attribute value and expand char refs in it\n            Ch *value = text, *end;\n            const int AttFlags = Flags & ~parse_normalize_whitespace;   // No whitespace normalization in attributes\n            if (quote == Ch('\\''))\n                end = skip_and_expand_character_refs<attribute_value_pred<Ch('\\'')>, attribute_value_pure_pred<Ch('\\'')>, AttFlags>(text);\n            else\n                end = skip_and_expand_character_refs<attribute_value_pred<Ch('\"')>, attribute_value_pure_pred<Ch('\"')>, AttFlags>(text);\n\n            // Set attribute value\n            attribute->value(value, end - value);\n\n            // Make sure that end quote is present\n            if (*text != quote)\n                RAPIDXML_PARSE_ERROR(\"expected ' or \\\"\", text);\n            ++text;     // Skip quote\n\n            // Add terminating zero after value\n            if (!(Flags & parse_no_string_terminators))\n                attribute->value()[attribute->value_size()] = 0;\n\n            // Skip whitespace after attribute value\n            skip<whitespace_pred, Flags>(text);\n        }\n    }\n\n};\n\n//! \\cond internal\nnamespace internal\n{\n\n// Whitespace (space \\n \\r \\t)\ntemplate<int Dummy>\nconst unsigned char lookup_tables<Dummy>::lookup_whitespace[256] =\n{\n    // 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\n    0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  0,  0,  1,  0,  0,  // 0\n    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 1\n    1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 2\n    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 3\n    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 4\n    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 5\n    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 6\n    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 7\n    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 8\n    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 9\n    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // A\n    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // B\n    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // C\n    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // D\n    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // E\n    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0   // F\n};\n\n// Node name (anything but space \\n \\r \\t / > ? \\0)\ntemplate<int Dummy>\nconst unsigned char lookup_tables<Dummy>::lookup_node_name[256] =\n{\n    // 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\n    0,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  1,  1,  0,  1,  1,  // 0\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 1\n    0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  // 2\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  // 3\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 4\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 5\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 6\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 7\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 8\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 9\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // A\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // B\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // C\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // D\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // E\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1   // F\n};\n\n// Text (i.e. PCDATA) (anything but < \\0)\ntemplate<int Dummy>\nconst unsigned char lookup_tables<Dummy>::lookup_text[256] =\n{\n    // 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\n    0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 0\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 1\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 2\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  1,  1,  1,  // 3\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 4\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 5\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 6\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 7\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 8\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 9\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // A\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // B\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // C\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // D\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // E\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1   // F\n};\n\n// Text (i.e. PCDATA) that does not require processing when ws normalization is disabled\n// (anything but < \\0 &)\ntemplate<int Dummy>\nconst unsigned char lookup_tables<Dummy>::lookup_text_pure_no_ws[256] =\n{\n    // 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\n    0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 0\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 1\n    1,  1,  1,  1,  1,  1,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 2\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  1,  1,  1,  // 3\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 4\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 5\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 6\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 7\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 8\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 9\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // A\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // B\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // C\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // D\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // E\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1   // F\n};\n\n// Text (i.e. PCDATA) that does not require processing when ws normalizationis is enabled\n// (anything but < \\0 & space \\n \\r \\t)\ntemplate<int Dummy>\nconst unsigned char lookup_tables<Dummy>::lookup_text_pure_with_ws[256] =\n{\n    // 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\n    0,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  1,  1,  0,  1,  1,  // 0\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 1\n    0,  1,  1,  1,  1,  1,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 2\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  1,  1,  1,  // 3\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 4\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 5\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 6\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 7\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 8\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 9\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // A\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // B\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // C\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // D\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // E\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1   // F\n};\n\n// Attribute name (anything but space \\n \\r \\t / < > = ? ! \\0)\ntemplate<int Dummy>\nconst unsigned char lookup_tables<Dummy>::lookup_attribute_name[256] =\n{\n    // 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\n    0,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  1,  1,  0,  1,  1,  // 0\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 1\n    0,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  // 2\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  0,  0,  // 3\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 4\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 5\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 6\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 7\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 8\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 9\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // A\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // B\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // C\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // D\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // E\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1   // F\n};\n\n// Attribute data with single quote (anything but ' \\0)\ntemplate<int Dummy>\nconst unsigned char lookup_tables<Dummy>::lookup_attribute_data_1[256] =\n{\n    // 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\n    0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 0\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 1\n    1,  1,  1,  1,  1,  1,  1,  0,  1,  1,  1,  1,  1,  1,  1,  1,  // 2\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 3\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 4\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 5\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 6\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 7\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 8\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 9\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // A\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // B\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // C\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // D\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // E\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1   // F\n};\n\n// Attribute data with single quote that does not require processing (anything but ' \\0 &)\ntemplate<int Dummy>\nconst unsigned char lookup_tables<Dummy>::lookup_attribute_data_1_pure[256] =\n{\n    // 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\n    0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 0\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 1\n    1,  1,  1,  1,  1,  1,  0,  0,  1,  1,  1,  1,  1,  1,  1,  1,  // 2\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 3\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 4\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 5\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 6\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 7\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 8\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 9\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // A\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // B\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // C\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // D\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // E\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1   // F\n};\n\n// Attribute data with double quote (anything but \" \\0)\ntemplate<int Dummy>\nconst unsigned char lookup_tables<Dummy>::lookup_attribute_data_2[256] =\n{\n    // 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\n    0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 0\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 1\n    1,  1,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 2\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 3\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 4\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 5\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 6\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 7\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 8\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 9\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // A\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // B\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // C\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // D\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // E\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1   // F\n};\n\n// Attribute data with double quote that does not require processing (anything but \" \\0 &)\ntemplate<int Dummy>\nconst unsigned char lookup_tables<Dummy>::lookup_attribute_data_2_pure[256] =\n{\n    // 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\n    0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 0\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 1\n    1,  1,  0,  1,  1,  1,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 2\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 3\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 4\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 5\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 6\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 7\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 8\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 9\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // A\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // B\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // C\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // D\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // E\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1   // F\n};\n\n// Digits (dec and hex, 255 denotes end of numeric character reference)\ntemplate<int Dummy>\nconst unsigned char lookup_tables<Dummy>::lookup_digits[256] =\n{\n    // 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\n    255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  // 0\n    255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  // 1\n    255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  // 2\n    0,  1,  2,  3,  4,  5,  6,  7,  8,  9,255,255,255,255,255,255,  // 3\n    255, 10, 11, 12, 13, 14, 15,255,255,255,255,255,255,255,255,255,  // 4\n    255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  // 5\n    255, 10, 11, 12, 13, 14, 15,255,255,255,255,255,255,255,255,255,  // 6\n    255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  // 7\n    255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  // 8\n    255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  // 9\n    255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  // A\n    255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  // B\n    255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  // C\n    255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  // D\n    255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  // E\n    255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255   // F\n};\n\n// Upper case conversion\ntemplate<int Dummy>\nconst unsigned char lookup_tables<Dummy>::lookup_upcase[256] =\n{\n    // 0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  A   B   C   D   E   F\n    0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15,   // 0\n    16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,   // 1\n    32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,   // 2\n    48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,   // 3\n    64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,   // 4\n    80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,   // 5\n    96, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,   // 6\n    80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 123,124,125,126,127,  // 7\n    128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,  // 8\n    144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,  // 9\n    160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,  // A\n    176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,  // B\n    192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,  // C\n    208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,  // D\n    224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,  // E\n    240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255   // F\n};\n}\n//! \\endcond\n\n}\n\n// Undefine internal macros\n#undef RAPIDXML_PARSE_ERROR\n\n// On MSVC, restore warnings state\n#ifdef _MSC_VER\n#pragma warning(pop)\n#endif\n\n#endif\n#ifndef RAPIDXML_H_INCLUDED\n#define RAPIDXML_H_INCLUDED\n\n// Copyright (C) 2006, 2009 Marcin Kalicinski\n// Version 1.13\n// Revision $DateTime: 2009/05/13 01:46:17 $\n//! \\file rapidxml.h This file contains rapidxml parser and DOM implementation\n\n// If standard library is disabled, user must provide implementations of required functions and typedefs\n#if !defined(RAPIDXML_NO_STDLIB)\n    #include <cstdlib>      // For std::size_t\n    #include <cassert>      // For assert\n    #include <new>          // For placement new\n#endif\n\n// On MSVC, disable \"conditional expression is constant\" warning (level 4). \n// This warning is almost impossible to avoid with certain types of templated code\n#ifdef _MSC_VER\n    #pragma warning(push)\n    #pragma warning(disable:4127)   // Conditional expression is constant\n#endif\n\n///////////////////////////////////////////////////////////////////////////\n// RAPIDXML_PARSE_ERROR\n    \n#if defined(RAPIDXML_NO_EXCEPTIONS)\n\n#define RAPIDXML_PARSE_ERROR(what, where) { parse_error_handler(what, where); assert(0); }\n\nnamespace rapidxml\n{\n    //! When exceptions are disabled by defining RAPIDXML_NO_EXCEPTIONS, \n    //! this function is called to notify user about the error.\n    //! It must be defined by the user.\n    //! <br><br>\n    //! This function cannot return. If it does, the results are undefined.\n    //! <br><br>\n    //! A very simple definition might look like that:\n    //! <pre>\n    //! void %rapidxml::%parse_error_handler(const char *what, void *where)\n    //! {\n    //!     std::cout << \"Parse error: \" << what << \"\\n\";\n    //!     std::abort();\n    //! }\n    //! </pre>\n    //! \\param what Human readable description of the error.\n    //! \\param where Pointer to character data where error was detected.\n    void parse_error_handler(const char *what, void *where);\n}\n\n#else\n    \n#include <exception>    // For std::exception\n\n#define RAPIDXML_PARSE_ERROR(what, where) throw parse_error(what, where)\n\nnamespace rapidxml\n{\n\n    //! Parse error exception. \n    //! This exception is thrown by the parser when an error occurs. \n    //! Use what() function to get human-readable error message. \n    //! Use where() function to get a pointer to position within source text where error was detected.\n    //! <br><br>\n    //! If throwing exceptions by the parser is undesirable, \n    //! it can be disabled by defining RAPIDXML_NO_EXCEPTIONS macro before rapidxml.h is included.\n    //! This will cause the parser to call rapidxml::parse_error_handler() function instead of throwing an exception.\n    //! This function must be defined by the user.\n    //! <br><br>\n    //! This class derives from <code>std::exception</code> class.\n    class parse_error: public std::exception\n    {\n    \n    public:\n    \n        //! Constructs parse error\n        parse_error(const char *what, void *where)\n            : m_what(what)\n            , m_where(where)\n        {\n        }\n\n        //! Gets human readable description of error.\n        //! \\return Pointer to null terminated description of the error.\n        virtual const char *what() const throw()\n        {\n            return m_what;\n        }\n\n        //! Gets pointer to character data where error happened.\n        //! Ch should be the same as char type of xml_document that produced the error.\n        //! \\return Pointer to location within the parsed string where error occured.\n        template<class Ch>\n        Ch *where() const\n        {\n            return reinterpret_cast<Ch *>(m_where);\n        }\n\n    private:  \n\n        const char *m_what;\n        void *m_where;\n\n    };\n}\n\n#endif\n\n///////////////////////////////////////////////////////////////////////////\n// Pool sizes\n\n#ifndef RAPIDXML_STATIC_POOL_SIZE\n    // Size of static memory block of memory_pool.\n    // Define RAPIDXML_STATIC_POOL_SIZE before including rapidxml.h if you want to override the default value.\n    // No dynamic memory allocations are performed by memory_pool until static memory is exhausted.\n    #define RAPIDXML_STATIC_POOL_SIZE (64 * 1024)\n#endif\n\n#ifndef RAPIDXML_DYNAMIC_POOL_SIZE\n    // Size of dynamic memory block of memory_pool.\n    // Define RAPIDXML_DYNAMIC_POOL_SIZE before including rapidxml.h if you want to override the default value.\n    // After the static block is exhausted, dynamic blocks with approximately this size are allocated by memory_pool.\n    #define RAPIDXML_DYNAMIC_POOL_SIZE (64 * 1024)\n#endif\n\n#ifndef RAPIDXML_ALIGNMENT\n    // Memory allocation alignment.\n    // Define RAPIDXML_ALIGNMENT before including rapidxml.h if you want to override the default value, which is the size of pointer.\n    // All memory allocations for nodes, attributes and strings will be aligned to this value.\n    // This must be a power of 2 and at least 1, otherwise memory_pool will not work.\n    #define RAPIDXML_ALIGNMENT sizeof(void *)\n#endif\n\nnamespace rapidxml\n{\n    // Forward declarations\n    template<class Ch> class xml_node;\n    template<class Ch> class xml_attribute;\n    template<class Ch> class xml_document;\n    \n    //! Enumeration listing all node types produced by the parser.\n    //! Use xml_node::type() function to query node type.\n    enum node_type\n    {\n        node_document,      //!< A document node. Name and value are empty.\n        node_element,       //!< An element node. Name contains element name. Value contains text of first data node.\n        node_data,          //!< A data node. Name is empty. Value contains data text.\n        node_cdata,         //!< A CDATA node. Name is empty. Value contains data text.\n        node_comment,       //!< A comment node. Name is empty. Value contains comment text.\n        node_declaration,   //!< A declaration node. Name and value are empty. Declaration parameters (version, encoding and standalone) are in node attributes.\n        node_doctype,       //!< A DOCTYPE node. Name is empty. Value contains DOCTYPE text.\n        node_pi             //!< A PI node. Name contains target. Value contains instructions.\n    };\n\n    ///////////////////////////////////////////////////////////////////////\n    // Parsing flags\n\n    //! Parse flag instructing the parser to not create data nodes. \n    //! Text of first data node will still be placed in value of parent element, unless rapidxml::parse_no_element_values flag is also specified.\n    //! Can be combined with other flags by use of | operator.\n    //! <br><br>\n    //! See xml_document::parse() function.\n    const int parse_no_data_nodes = 0x1;            \n\n    //! Parse flag instructing the parser to not use text of first data node as a value of parent element.\n    //! Can be combined with other flags by use of | operator.\n    //! Note that child data nodes of element node take precendence over its value when printing. \n    //! That is, if element has one or more child data nodes <em>and</em> a value, the value will be ignored.\n    //! Use rapidxml::parse_no_data_nodes flag to prevent creation of data nodes if you want to manipulate data using values of elements.\n    //! <br><br>\n    //! See xml_document::parse() function.\n    const int parse_no_element_values = 0x2;\n    \n    //! Parse flag instructing the parser to not place zero terminators after strings in the source text.\n    //! By default zero terminators are placed, modifying source text.\n    //! Can be combined with other flags by use of | operator.\n    //! <br><br>\n    //! See xml_document::parse() function.\n    const int parse_no_string_terminators = 0x4;\n    \n    //! Parse flag instructing the parser to not translate entities in the source text.\n    //! By default entities are translated, modifying source text.\n    //! Can be combined with other flags by use of | operator.\n    //! <br><br>\n    //! See xml_document::parse() function.\n    const int parse_no_entity_translation = 0x8;\n    \n    //! Parse flag instructing the parser to disable UTF-8 handling and assume plain 8 bit characters.\n    //! By default, UTF-8 handling is enabled.\n    //! Can be combined with other flags by use of | operator.\n    //! <br><br>\n    //! See xml_document::parse() function.\n    const int parse_no_utf8 = 0x10;\n    \n    //! Parse flag instructing the parser to create XML declaration node.\n    //! By default, declaration node is not created.\n    //! Can be combined with other flags by use of | operator.\n    //! <br><br>\n    //! See xml_document::parse() function.\n    const int parse_declaration_node = 0x20;\n    \n    //! Parse flag instructing the parser to create comments nodes.\n    //! By default, comment nodes are not created.\n    //! Can be combined with other flags by use of | operator.\n    //! <br><br>\n    //! See xml_document::parse() function.\n    const int parse_comment_nodes = 0x40;\n    \n    //! Parse flag instructing the parser to create DOCTYPE node.\n    //! By default, doctype node is not created.\n    //! Although W3C specification allows at most one DOCTYPE node, RapidXml will silently accept documents with more than one.\n    //! Can be combined with other flags by use of | operator.\n    //! <br><br>\n    //! See xml_document::parse() function.\n    const int parse_doctype_node = 0x80;\n    \n    //! Parse flag instructing the parser to create PI nodes.\n    //! By default, PI nodes are not created.\n    //! Can be combined with other flags by use of | operator.\n    //! <br><br>\n    //! See xml_document::parse() function.\n    const int parse_pi_nodes = 0x100;\n    \n    //! Parse flag instructing the parser to validate closing tag names. \n    //! If not set, name inside closing tag is irrelevant to the parser.\n    //! By default, closing tags are not validated.\n    //! Can be combined with other flags by use of | operator.\n    //! <br><br>\n    //! See xml_document::parse() function.\n    const int parse_validate_closing_tags = 0x200;\n    \n    //! Parse flag instructing the parser to trim all leading and trailing whitespace of data nodes.\n    //! By default, whitespace is not trimmed. \n    //! This flag does not cause the parser to modify source text.\n    //! Can be combined with other flags by use of | operator.\n    //! <br><br>\n    //! See xml_document::parse() function.\n    const int parse_trim_whitespace = 0x400;\n\n    //! Parse flag instructing the parser to condense all whitespace runs of data nodes to a single space character.\n    //! Trimming of leading and trailing whitespace of data is controlled by rapidxml::parse_trim_whitespace flag.\n    //! By default, whitespace is not normalized. \n    //! If this flag is specified, source text will be modified.\n    //! Can be combined with other flags by use of | operator.\n    //! <br><br>\n    //! See xml_document::parse() function.\n    const int parse_normalize_whitespace = 0x800;\n\n    // Compound flags\n    \n    //! Parse flags which represent default behaviour of the parser. \n    //! This is always equal to 0, so that all other flags can be simply ored together.\n    //! Normally there is no need to inconveniently disable flags by anding with their negated (~) values.\n    //! This also means that meaning of each flag is a <i>negation</i> of the default setting. \n    //! For example, if flag name is rapidxml::parse_no_utf8, it means that utf-8 is <i>enabled</i> by default,\n    //! and using the flag will disable it.\n    //! <br><br>\n    //! See xml_document::parse() function.\n    const int parse_default = 0;\n    \n    //! A combination of parse flags that forbids any modifications of the source text. \n    //! This also results in faster parsing. However, note that the following will occur:\n    //! <ul>\n    //! <li>names and values of nodes will not be zero terminated, you have to use xml_base::name_size() and xml_base::value_size() functions to determine where name and value ends</li>\n    //! <li>entities will not be translated</li>\n    //! <li>whitespace will not be normalized</li>\n    //! </ul>\n    //! See xml_document::parse() function.\n    const int parse_non_destructive = parse_no_string_terminators | parse_no_entity_translation;\n    \n    //! A combination of parse flags resulting in fastest possible parsing, without sacrificing important data.\n    //! <br><br>\n    //! See xml_document::parse() function.\n    const int parse_fastest = parse_non_destructive | parse_no_data_nodes;\n    \n    //! A combination of parse flags resulting in largest amount of data being extracted. \n    //! This usually results in slowest parsing.\n    //! <br><br>\n    //! See xml_document::parse() function.\n    const int parse_full = parse_declaration_node | parse_comment_nodes | parse_doctype_node | parse_pi_nodes | parse_validate_closing_tags;\n\n    ///////////////////////////////////////////////////////////////////////\n    // Internals\n\n    //! \\cond internal\n    namespace internal\n    {\n\n        // Struct that contains lookup tables for the parser\n        // It must be a template to allow correct linking (because it has static data members, which are defined in a header file).\n        template<int Dummy>\n        struct lookup_tables\n        {\n            static const unsigned char lookup_whitespace[256];              // Whitespace table\n            static const unsigned char lookup_node_name[256];               // Node name table\n            static const unsigned char lookup_text[256];                    // Text table\n            static const unsigned char lookup_text_pure_no_ws[256];         // Text table\n            static const unsigned char lookup_text_pure_with_ws[256];       // Text table\n            static const unsigned char lookup_attribute_name[256];          // Attribute name table\n            static const unsigned char lookup_attribute_data_1[256];        // Attribute data table with single quote\n            static const unsigned char lookup_attribute_data_1_pure[256];   // Attribute data table with single quote\n            static const unsigned char lookup_attribute_data_2[256];        // Attribute data table with double quotes\n            static const unsigned char lookup_attribute_data_2_pure[256];   // Attribute data table with double quotes\n            static const unsigned char lookup_digits[256];                  // Digits\n            static const unsigned char lookup_upcase[256];                  // To uppercase conversion table for ASCII characters\n        };\n\n        // Find length of the string\n        template<class Ch>\n        inline std::size_t measure(const Ch *p)\n        {\n            const Ch *tmp = p;\n            while (*tmp) \n                ++tmp;\n            return tmp - p;\n        }\n\n        // Compare strings for equality\n        template<class Ch>\n        inline bool compare(const Ch *p1, std::size_t size1, const Ch *p2, std::size_t size2, bool case_sensitive)\n        {\n            if (size1 != size2)\n                return false;\n            if (case_sensitive)\n            {\n                for (const Ch *end = p1 + size1; p1 < end; ++p1, ++p2)\n                    if (*p1 != *p2)\n                        return false;\n            }\n            else\n            {\n                for (const Ch *end = p1 + size1; p1 < end; ++p1, ++p2)\n                    if (lookup_tables<0>::lookup_upcase[static_cast<unsigned char>(*p1)] != lookup_tables<0>::lookup_upcase[static_cast<unsigned char>(*p2)])\n                        return false;\n            }\n            return true;\n        }\n    }\n    //! \\endcond\n\n    ///////////////////////////////////////////////////////////////////////\n    // Memory pool\n    \n    //! This class is used by the parser to create new nodes and attributes, without overheads of dynamic memory allocation.\n    //! In most cases, you will not need to use this class directly. \n    //! However, if you need to create nodes manually or modify names/values of nodes, \n    //! you are encouraged to use memory_pool of relevant xml_document to allocate the memory. \n    //! Not only is this faster than allocating them by using <code>new</code> operator, \n    //! but also their lifetime will be tied to the lifetime of document, \n    //! possibly simplyfing memory management. \n    //! <br><br>\n    //! Call allocate_node() or allocate_attribute() functions to obtain new nodes or attributes from the pool. \n    //! You can also call allocate_string() function to allocate strings.\n    //! Such strings can then be used as names or values of nodes without worrying about their lifetime.\n    //! Note that there is no <code>free()</code> function -- all allocations are freed at once when clear() function is called, \n    //! or when the pool is destroyed.\n    //! <br><br>\n    //! It is also possible to create a standalone memory_pool, and use it \n    //! to allocate nodes, whose lifetime will not be tied to any document.\n    //! <br><br>\n    //! Pool maintains <code>RAPIDXML_STATIC_POOL_SIZE</code> bytes of statically allocated memory. \n    //! Until static memory is exhausted, no dynamic memory allocations are done.\n    //! When static memory is exhausted, pool allocates additional blocks of memory of size <code>RAPIDXML_DYNAMIC_POOL_SIZE</code> each,\n    //! by using global <code>new[]</code> and <code>delete[]</code> operators. \n    //! This behaviour can be changed by setting custom allocation routines. \n    //! Use set_allocator() function to set them.\n    //! <br><br>\n    //! Allocations for nodes, attributes and strings are aligned at <code>RAPIDXML_ALIGNMENT</code> bytes.\n    //! This value defaults to the size of pointer on target architecture.\n    //! <br><br>\n    //! To obtain absolutely top performance from the parser,\n    //! it is important that all nodes are allocated from a single, contiguous block of memory.\n    //! Otherwise, cache misses when jumping between two (or more) disjoint blocks of memory can slow down parsing quite considerably.\n    //! If required, you can tweak <code>RAPIDXML_STATIC_POOL_SIZE</code>, <code>RAPIDXML_DYNAMIC_POOL_SIZE</code> and <code>RAPIDXML_ALIGNMENT</code> \n    //! to obtain best wasted memory to performance compromise.\n    //! To do it, define their values before rapidxml.h file is included.\n    //! \\param Ch Character type of created nodes. \n    template<class Ch = char>\n    class memory_pool\n    {\n        \n    public:\n\n        //! \\cond internal\n        typedef void *(alloc_func)(std::size_t);       // Type of user-defined function used to allocate memory\n        typedef void (free_func)(void *);              // Type of user-defined function used to free memory\n        //! \\endcond\n        \n        //! Constructs empty pool with default allocator functions.\n        memory_pool()\n            : m_alloc_func(0)\n            , m_free_func(0)\n        {\n            init();\n        }\n\n        //! Destroys pool and frees all the memory. \n        //! This causes memory occupied by nodes allocated by the pool to be freed.\n        //! Nodes allocated from the pool are no longer valid.\n        ~memory_pool()\n        {\n            clear();\n        }\n\n        //! Allocates a new node from the pool, and optionally assigns name and value to it. \n        //! If the allocation request cannot be accomodated, this function will throw <code>std::bad_alloc</code>.\n        //! If exceptions are disabled by defining RAPIDXML_NO_EXCEPTIONS, this function\n        //! will call rapidxml::parse_error_handler() function.\n        //! \\param type Type of node to create.\n        //! \\param name Name to assign to the node, or 0 to assign no name.\n        //! \\param value Value to assign to the node, or 0 to assign no value.\n        //! \\param name_size Size of name to assign, or 0 to automatically calculate size from name string.\n        //! \\param value_size Size of value to assign, or 0 to automatically calculate size from value string.\n        //! \\return Pointer to allocated node. This pointer will never be NULL.\n        xml_node<Ch> *allocate_node(node_type type, \n                                    const Ch *name = nullptr, const Ch *value = nullptr,\n                                    std::size_t name_size = 0, std::size_t value_size = 0)\n        {\n            void *memory = allocate_aligned(sizeof(xml_node<Ch>));\n            xml_node<Ch> *node = new(memory) xml_node<Ch>(type);\n            if (name)\n            {\n                if (name_size > 0)\n                    node->name(name, name_size);\n                else\n                    node->name(name);\n            }\n            if (value)\n            {\n                if (value_size > 0)\n                    node->value(value, value_size);\n                else\n                    node->value(value);\n            }\n            return node;\n        }\n\n        //! Allocates a new attribute from the pool, and optionally assigns name and value to it.\n        //! If the allocation request cannot be accomodated, this function will throw <code>std::bad_alloc</code>.\n        //! If exceptions are disabled by defining RAPIDXML_NO_EXCEPTIONS, this function\n        //! will call rapidxml::parse_error_handler() function.\n        //! \\param name Name to assign to the attribute, or 0 to assign no name.\n        //! \\param value Value to assign to the attribute, or 0 to assign no value.\n        //! \\param name_size Size of name to assign, or 0 to automatically calculate size from name string.\n        //! \\param value_size Size of value to assign, or 0 to automatically calculate size from value string.\n        //! \\return Pointer to allocated attribute. This pointer will never be NULL.\n        xml_attribute<Ch> *allocate_attribute(const Ch *name = nullptr, const Ch *value = nullptr,\n                                              std::size_t name_size = 0, std::size_t value_size = 0)\n        {\n            void *memory = allocate_aligned(sizeof(xml_attribute<Ch>));\n            xml_attribute<Ch> *attribute = new(memory) xml_attribute<Ch>;\n            if (name)\n            {\n                if (name_size > 0)\n                    attribute->name(name, name_size);\n                else\n                    attribute->name(name);\n            }\n            if (value)\n            {\n                if (value_size > 0)\n                    attribute->value(value, value_size);\n                else\n                    attribute->value(value);\n            }\n            return attribute;\n        }\n\n        //! Allocates a char array of given size from the pool, and optionally copies a given string to it.\n        //! If the allocation request cannot be accomodated, this function will throw <code>std::bad_alloc</code>.\n        //! If exceptions are disabled by defining RAPIDXML_NO_EXCEPTIONS, this function\n        //! will call rapidxml::parse_error_handler() function.\n        //! \\param source String to initialize the allocated memory with, or 0 to not initialize it.\n        //! \\param size Number of characters to allocate, or zero to calculate it automatically from source string length; if size is 0, source string must be specified and null terminated.\n        //! \\return Pointer to allocated char array. This pointer will never be NULL.\n        Ch *allocate_string(const Ch *source = nullptr, std::size_t size = 0)\n        {\n            assert(source || size);     // Either source or size (or both) must be specified\n            if (size == 0)\n                size = internal::measure(source) + 1;\n            Ch *result = static_cast<Ch *>(allocate_aligned(size * sizeof(Ch)));\n            if (source)\n                for (std::size_t i = 0; i < size; ++i)\n                    result[i] = source[i];\n            return result;\n        }\n\n        //! Clones an xml_node and its hierarchy of child nodes and attributes.\n        //! Nodes and attributes are allocated from this memory pool.\n        //! Names and values are not cloned, they are shared between the clone and the source.\n        //! Result node can be optionally specified as a second parameter, \n        //! in which case its contents will be replaced with cloned source node.\n        //! This is useful when you want to clone entire document.\n        //! \\param source Node to clone.\n        //! \\param result Node to put results in, or 0 to automatically allocate result node\n        //! \\return Pointer to cloned node. This pointer will never be NULL.\n        xml_node<Ch> *clone_node(const xml_node<Ch> *source, xml_node<Ch> *result = nullptr)\n        {\n            // Prepare result node\n            if (result)\n            {\n                result->remove_all_attributes();\n                result->remove_all_nodes();\n                result->type(source->type());\n            }\n            else\n                result = allocate_node(source->type());\n\n            // Clone name and value\n            result->name(source->name(), source->name_size());\n            result->value(source->value(), source->value_size());\n\n            // Clone child nodes and attributes\n            for (xml_node<Ch> *child = source->first_node(); child; child = child->next_sibling())\n                result->append_node(clone_node(child));\n            for (xml_attribute<Ch> *attr = source->first_attribute(); attr; attr = attr->next_attribute())\n                result->append_attribute(allocate_attribute(attr->name(), attr->value(), attr->name_size(), attr->value_size()));\n\n            return result;\n        }\n\n        //! Clears the pool. \n        //! This causes memory occupied by nodes allocated by the pool to be freed.\n        //! Any nodes or strings allocated from the pool will no longer be valid.\n        void clear()\n        {\n            while (m_begin != m_static_memory)\n            {\n                char *previous_begin = reinterpret_cast<header *>(align(m_begin))->previous_begin;\n                if (m_free_func)\n                    m_free_func(m_begin);\n                else\n                    delete[] m_begin;\n                m_begin = previous_begin;\n            }\n            init();\n        }\n\n        //! Sets or resets the user-defined memory allocation functions for the pool.\n        //! This can only be called when no memory is allocated from the pool yet, otherwise results are undefined.\n        //! Allocation function must not return invalid pointer on failure. It should either throw,\n        //! stop the program, or use <code>longjmp()</code> function to pass control to other place of program. \n        //! If it returns invalid pointer, results are undefined.\n        //! <br><br>\n        //! User defined allocation functions must have the following forms:\n        //! <br><code>\n        //! <br>void *allocate(std::size_t size);\n        //! <br>void free(void *pointer);\n        //! </code><br>\n        //! \\param af Allocation function, or 0 to restore default function\n        //! \\param ff Free function, or 0 to restore default function\n        void set_allocator(alloc_func *af, free_func *ff)\n        {\n            assert(m_begin == m_static_memory && m_ptr == align(m_begin));    // Verify that no memory is allocated yet\n            m_alloc_func = af;\n            m_free_func = ff;\n        }\n\n    private:\n\n        struct header\n        {\n            char *previous_begin;\n        };\n\n        void init()\n        {\n            m_begin = m_static_memory;\n            m_ptr = align(m_begin);\n            m_end = m_static_memory + sizeof(m_static_memory);\n        }\n        \n        char *align(char *ptr)\n        {\n            std::size_t alignment = ((RAPIDXML_ALIGNMENT - (std::size_t(ptr) & (RAPIDXML_ALIGNMENT - 1))) & (RAPIDXML_ALIGNMENT - 1));\n            return ptr + alignment;\n        }\n        \n        char *allocate_raw(std::size_t size)\n        {\n            // Allocate\n            void *memory;   \n            if (m_alloc_func)   // Allocate memory using either user-specified allocation function or global operator new[]\n            {\n                memory = m_alloc_func(size);\n                assert(memory); // Allocator is not allowed to return 0, on failure it must either throw, stop the program or use longjmp\n            }\n            else\n            {\n                memory = new char[size]();\n#ifdef RAPIDXML_NO_EXCEPTIONS\n                if (!memory)            // If exceptions are disabled, verify memory allocation, because new will not be able to throw bad_alloc\n                    RAPIDXML_PARSE_ERROR(\"out of memory\", 0);\n#endif\n            }\n            return static_cast<char *>(memory);\n        }\n        \n        void *allocate_aligned(std::size_t size)\n        {\n            // Calculate aligned pointer\n            char *result = align(m_ptr);\n\n            // If not enough memory left in current pool, allocate a new pool\n            if (result + size > m_end)\n            {\n                // Calculate required pool size (may be bigger than RAPIDXML_DYNAMIC_POOL_SIZE)\n                std::size_t pool_size = RAPIDXML_DYNAMIC_POOL_SIZE;\n                if (pool_size < size)\n                    pool_size = size;\n                \n                // Allocate\n                std::size_t alloc_size = sizeof(header) + (2 * RAPIDXML_ALIGNMENT - 2) + pool_size;     // 2 alignments required in worst case: one for header, one for actual allocation\n                char *raw_memory = allocate_raw(alloc_size);\n                    \n                // Setup new pool in allocated memory\n                char *pool = align(raw_memory);\n                header *new_header = reinterpret_cast<header *>(pool);\n                new_header->previous_begin = m_begin;\n                m_begin = raw_memory;\n                m_ptr = pool + sizeof(header);\n                m_end = raw_memory + alloc_size;\n\n                // Calculate aligned pointer again using new pool\n                result = align(m_ptr);\n            }\n\n            // Update pool and return aligned pointer\n            m_ptr = result + size;\n            return result;\n        }\n\n        char *m_begin;                                      // Start of raw memory making up current pool\n        char *m_ptr;                                        // First free byte in current pool\n        char *m_end;                                        // One past last available byte in current pool\n        char m_static_memory[RAPIDXML_STATIC_POOL_SIZE];    // Static raw memory\n        alloc_func *m_alloc_func;                           // Allocator function, or 0 if default is to be used\n        free_func *m_free_func;                             // Free function, or 0 if default is to be used\n    };\n\n    ///////////////////////////////////////////////////////////////////////////\n    // XML base\n\n    //! Base class for xml_node and xml_attribute implementing common functions: \n    //! name(), name_size(), value(), value_size() and parent().\n    //! \\param Ch Character type to use\n    template<class Ch = char>\n    class xml_base\n    {\n\n    public:\n        \n        ///////////////////////////////////////////////////////////////////////////\n        // Construction & destruction\n    \n        // Construct a base with empty name, value and parent\n        xml_base()\n            : m_name(0)\n            , m_value(0)\n            , m_name_size(0)\n            , m_value_size(0)\n            , m_parent(0)\n        {\n        }\n\n        ///////////////////////////////////////////////////////////////////////////\n        // Node data access\n    \n        //! Gets name of the node. \n        //! Interpretation of name depends on type of node.\n        //! Note that name will not be zero-terminated if rapidxml::parse_no_string_terminators option was selected during parse.\n        //! <br><br>\n        //! Use name_size() function to determine length of the name.\n        //! \\return Name of node, or empty string if node has no name.\n        Ch *name() const\n        {\n            return m_name ? m_name : nullstr();\n        }\n\n        //! Gets size of node name, not including terminator character.\n        //! This function works correctly irrespective of whether name is or is not zero terminated.\n        //! \\return Size of node name, in characters.\n        std::size_t name_size() const\n        {\n            return m_name ? m_name_size : 0;\n        }\n\n        //! Gets value of node. \n        //! Interpretation of value depends on type of node.\n        //! Note that value will not be zero-terminated if rapidxml::parse_no_string_terminators option was selected during parse.\n        //! <br><br>\n        //! Use value_size() function to determine length of the value.\n        //! \\return Value of node, or empty string if node has no value.\n        Ch *value() const\n        {\n            return m_value ? m_value : nullstr();\n        }\n\n        //! Gets size of node value, not including terminator character.\n        //! This function works correctly irrespective of whether value is or is not zero terminated.\n        //! \\return Size of node value, in characters.\n        std::size_t value_size() const\n        {\n            return m_value ? m_value_size : 0;\n        }\n\n        ///////////////////////////////////////////////////////////////////////////\n        // Node modification\n    \n        //! Sets name of node to a non zero-terminated string.\n        //! See \\ref ownership_of_strings.\n        //! <br><br>\n        //! Note that node does not own its name or value, it only stores a pointer to it. \n        //! It will not delete or otherwise free the pointer on destruction.\n        //! It is reponsibility of the user to properly manage lifetime of the string.\n        //! The easiest way to achieve it is to use memory_pool of the document to allocate the string -\n        //! on destruction of the document the string will be automatically freed.\n        //! <br><br>\n        //! Size of name must be specified separately, because name does not have to be zero terminated.\n        //! Use name(const Ch *) function to have the length automatically calculated (string must be zero terminated).\n        //! \\param name Name of node to set. Does not have to be zero terminated.\n        //! \\param size Size of name, in characters. This does not include zero terminator, if one is present.\n        void name(const Ch *name, std::size_t size)\n        {\n            m_name = const_cast<Ch *>(name);\n            m_name_size = size;\n        }\n\n        //! Sets name of node to a zero-terminated string.\n        //! See also \\ref ownership_of_strings and xml_node::name(const Ch *, std::size_t).\n        //! \\param name Name of node to set. Must be zero terminated.\n        void name(const Ch *name)\n        {\n            this->name(name, internal::measure(name));\n        }\n\n        //! Sets value of node to a non zero-terminated string.\n        //! See \\ref ownership_of_strings.\n        //! <br><br>\n        //! Note that node does not own its name or value, it only stores a pointer to it. \n        //! It will not delete or otherwise free the pointer on destruction.\n        //! It is reponsibility of the user to properly manage lifetime of the string.\n        //! The easiest way to achieve it is to use memory_pool of the document to allocate the string -\n        //! on destruction of the document the string will be automatically freed.\n        //! <br><br>\n        //! Size of value must be specified separately, because it does not have to be zero terminated.\n        //! Use value(const Ch *) function to have the length automatically calculated (string must be zero terminated).\n        //! <br><br>\n        //! If an element has a child node of type node_data, it will take precedence over element value when printing.\n        //! If you want to manipulate data of elements using values, use parser flag rapidxml::parse_no_data_nodes to prevent creation of data nodes by the parser.\n        //! \\param value value of node to set. Does not have to be zero terminated.\n        //! \\param size Size of value, in characters. This does not include zero terminator, if one is present.\n        void value(const Ch *value, std::size_t size)\n        {\n            m_value = const_cast<Ch *>(value);\n            m_value_size = size;\n        }\n\n        //! Sets value of node to a zero-terminated string.\n        //! See also \\ref ownership_of_strings and xml_node::value(const Ch *, std::size_t).\n        //! \\param value Vame of node to set. Must be zero terminated.\n        void value(const Ch *value)\n        {\n            this->value(value, internal::measure(value));\n        }\n\n        ///////////////////////////////////////////////////////////////////////////\n        // Related nodes access\n    \n        //! Gets node parent.\n        //! \\return Pointer to parent node, or 0 if there is no parent.\n        xml_node<Ch> *parent() const\n        {\n            return m_parent;\n        }\n\n    protected:\n\n        // Return empty string\n        static Ch *nullstr()\n        {\n            static Ch zero = Ch('\\0');\n            return &zero;\n        }\n\n        Ch *m_name;                         // Name of node, or 0 if no name\n        Ch *m_value;                        // Value of node, or 0 if no value\n        std::size_t m_name_size;            // Length of node name, or undefined of no name\n        std::size_t m_value_size;           // Length of node value, or undefined if no value\n        xml_node<Ch> *m_parent;             // Pointer to parent node, or 0 if none\n\n    };\n\n    //! Class representing attribute node of XML document. \n    //! Each attribute has name and value strings, which are available through name() and value() functions (inherited from xml_base).\n    //! Note that after parse, both name and value of attribute will point to interior of source text used for parsing. \n    //! Thus, this text must persist in memory for the lifetime of attribute.\n    //! \\param Ch Character type to use.\n    template<class Ch = char>\n    class xml_attribute: public xml_base<Ch>\n    {\n\n        friend class xml_node<Ch>;\n    \n    public:\n\n        ///////////////////////////////////////////////////////////////////////////\n        // Construction & destruction\n    \n        //! Constructs an empty attribute with the specified type. \n        //! Consider using memory_pool of appropriate xml_document if allocating attributes manually.\n        xml_attribute()\n        {\n        }\n\n        ///////////////////////////////////////////////////////////////////////////\n        // Related nodes access\n    \n        //! Gets document of which attribute is a child.\n        //! \\return Pointer to document that contains this attribute, or 0 if there is no parent document.\n        xml_document<Ch> *document() const\n        {\n            if (xml_node<Ch> *node = this->parent())\n            {\n                while (node->parent())\n                    node = node->parent();\n                return node->type() == node_document ? static_cast<xml_document<Ch> *>(node) : 0;\n            }\n            else\n                return 0;\n        }\n\n        //! Gets previous attribute, optionally matching attribute name. \n        //! \\param name Name of attribute to find, or 0 to return previous attribute regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero\n        //! \\param name_size Size of name, in characters, or 0 to have size calculated automatically from string\n        //! \\param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters\n        //! \\return Pointer to found attribute, or 0 if not found.\n        xml_attribute<Ch> *previous_attribute(const Ch *name = nullptr, std::size_t name_size = 0, bool case_sensitive = true) const\n        {\n            if (name)\n            {\n                if (name_size == 0)\n                    name_size = internal::measure(name);\n                for (xml_attribute<Ch> *attribute = m_prev_attribute; attribute; attribute = attribute->m_prev_attribute)\n                    if (internal::compare(attribute->name(), attribute->name_size(), name, name_size, case_sensitive))\n                        return attribute;\n                return 0;\n            }\n            else\n                return this->m_parent ? m_prev_attribute : 0;\n        }\n\n        //! Gets next attribute, optionally matching attribute name. \n        //! \\param name Name of attribute to find, or 0 to return next attribute regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero\n        //! \\param name_size Size of name, in characters, or 0 to have size calculated automatically from string\n        //! \\param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters\n        //! \\return Pointer to found attribute, or 0 if not found.\n        xml_attribute<Ch> *next_attribute(const Ch *name = nullptr, std::size_t name_size = 0, bool case_sensitive = true) const\n        {\n            if (name)\n            {\n                if (name_size == 0)\n                    name_size = internal::measure(name);\n                for (xml_attribute<Ch> *attribute = m_next_attribute; attribute; attribute = attribute->m_next_attribute)\n                    if (internal::compare(attribute->name(), attribute->name_size(), name, name_size, case_sensitive))\n                        return attribute;\n                return 0;\n            }\n            else\n                return this->m_parent ? m_next_attribute : 0;\n        }\n\n    private:\n\n        xml_attribute<Ch> *m_prev_attribute;        // Pointer to previous sibling of attribute, or 0 if none; only valid if parent is non-zero\n        xml_attribute<Ch> *m_next_attribute;        // Pointer to next sibling of attribute, or 0 if none; only valid if parent is non-zero\n    \n    };\n\n    ///////////////////////////////////////////////////////////////////////////\n    // XML node\n\n    //! Class representing a node of XML document. \n    //! Each node may have associated name and value strings, which are available through name() and value() functions. \n    //! Interpretation of name and value depends on type of the node.\n    //! Type of node can be determined by using type() function.\n    //! <br><br>\n    //! Note that after parse, both name and value of node, if any, will point interior of source text used for parsing. \n    //! Thus, this text must persist in the memory for the lifetime of node.\n    //! \\param Ch Character type to use.\n    template<class Ch = char>\n    class xml_node: public xml_base<Ch>\n    {\n\n    public:\n\n        ///////////////////////////////////////////////////////////////////////////\n        // Construction & destruction\n    \n        //! Constructs an empty node with the specified type. \n        //! Consider using memory_pool of appropriate document to allocate nodes manually.\n        //! \\param type Type of node to construct.\n        xml_node(node_type type)\n            : m_type(type)\n            , m_first_node(nullptr)\n            , m_first_attribute(nullptr)\n        {\n        }\n\n        ///////////////////////////////////////////////////////////////////////////\n        // Node data access\n    \n        //! Gets type of node.\n        //! \\return Type of node.\n        node_type type() const\n        {\n            return m_type;\n        }\n\n        ///////////////////////////////////////////////////////////////////////////\n        // Related nodes access\n    \n        //! Gets document of which node is a child.\n        //! \\return Pointer to document that contains this node, or 0 if there is no parent document.\n        xml_document<Ch> *document() const\n        {\n            xml_node<Ch> *node = const_cast<xml_node<Ch> *>(this);\n            while (node->parent())\n                node = node->parent();\n            return node->type() == node_document ? static_cast<xml_document<Ch> *>(node) : 0;\n        }\n\n        //! Gets first child node, optionally matching node name.\n        //! \\param name Name of child to find, or 0 to return first child regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero\n        //! \\param name_size Size of name, in characters, or 0 to have size calculated automatically from string\n        //! \\param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters\n        //! \\return Pointer to found child, or 0 if not found.\n        xml_node<Ch> *first_node(const Ch *name = nullptr, std::size_t name_size = 0, bool case_sensitive = true) const\n        {\n            if (name)\n            {\n                if (name_size == 0)\n                    name_size = internal::measure(name);\n                for (xml_node<Ch> *child = m_first_node; child; child = child->next_sibling())\n                    if (internal::compare(child->name(), child->name_size(), name, name_size, case_sensitive))\n                        return child;\n                return nullptr;\n            }\n            else\n                return m_first_node;\n        }\n\n        //! Gets last child node, optionally matching node name. \n        //! Behaviour is undefined if node has no children.\n        //! Use first_node() to test if node has children.\n        //! \\param name Name of child to find, or 0 to return last child regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero\n        //! \\param name_size Size of name, in characters, or 0 to have size calculated automatically from string\n        //! \\param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters\n        //! \\return Pointer to found child, or 0 if not found.\n        xml_node<Ch> *last_node(const Ch *name = nullptr, std::size_t name_size = 0, bool case_sensitive = true) const\n        {\n            assert(m_first_node);  // Cannot query for last child if node has no children\n            if (name)\n            {\n                if (name_size == 0)\n                    name_size = internal::measure(name);\n                for (xml_node<Ch> *child = m_last_node; child; child = child->previous_sibling())\n                    if (internal::compare(child->name(), child->name_size(), name, name_size, case_sensitive))\n                        return child;\n                return 0;\n            }\n            else\n                return m_last_node;\n        }\n\n        //! Gets previous sibling node, optionally matching node name. \n        //! Behaviour is undefined if node has no parent.\n        //! Use parent() to test if node has a parent.\n        //! \\param name Name of sibling to find, or 0 to return previous sibling regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero\n        //! \\param name_size Size of name, in characters, or 0 to have size calculated automatically from string\n        //! \\param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters\n        //! \\return Pointer to found sibling, or 0 if not found.\n        xml_node<Ch> *previous_sibling(const Ch *name = nullptr, std::size_t name_size = 0, bool case_sensitive = true) const\n        {\n            assert(this->m_parent);     // Cannot query for siblings if node has no parent\n            if (name)\n            {\n                if (name_size == 0)\n                    name_size = internal::measure(name);\n                for (xml_node<Ch> *sibling = m_prev_sibling; sibling; sibling = sibling->m_prev_sibling)\n                    if (internal::compare(sibling->name(), sibling->name_size(), name, name_size, case_sensitive))\n                        return sibling;\n                return 0;\n            }\n            else\n                return m_prev_sibling;\n        }\n\n        //! Gets next sibling node, optionally matching node name. \n        //! Behaviour is undefined if node has no parent.\n        //! Use parent() to test if node has a parent.\n        //! \\param name Name of sibling to find, or 0 to return next sibling regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero\n        //! \\param name_size Size of name, in characters, or 0 to have size calculated automatically from string\n        //! \\param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters\n        //! \\return Pointer to found sibling, or 0 if not found.\n        xml_node<Ch> *next_sibling(const Ch *name = nullptr, std::size_t name_size = 0, bool case_sensitive = true) const\n        {\n            assert(this->m_parent);     // Cannot query for siblings if node has no parent\n            if (name)\n            {\n                if (name_size == 0)\n                    name_size = internal::measure(name);\n                for (xml_node<Ch> *sibling = m_next_sibling; sibling; sibling = sibling->m_next_sibling)\n                    if (internal::compare(sibling->name(), sibling->name_size(), name, name_size, case_sensitive))\n                        return sibling;\n                return nullptr;\n            }\n            else\n                return m_next_sibling;\n        }\n\n        //! Gets first attribute of node, optionally matching attribute name.\n        //! \\param name Name of attribute to find, or 0 to return first attribute regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero\n        //! \\param name_size Size of name, in characters, or 0 to have size calculated automatically from string\n        //! \\param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters\n        //! \\return Pointer to found attribute, or 0 if not found.\n        xml_attribute<Ch> *first_attribute(const Ch *name = nullptr, std::size_t name_size = 0, bool case_sensitive = true) const\n        {\n            if (name)\n            {\n                if (name_size == 0)\n                    name_size = internal::measure(name);\n                for (xml_attribute<Ch> *attribute = m_first_attribute; attribute; attribute = attribute->m_next_attribute)\n                    if (internal::compare(attribute->name(), attribute->name_size(), name, name_size, case_sensitive))\n                        return attribute;\n                return nullptr;\n            }\n            else\n                return m_first_attribute;\n        }\n\n        //! Gets last attribute of node, optionally matching attribute name.\n        //! \\param name Name of attribute to find, or 0 to return last attribute regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero\n        //! \\param name_size Size of name, in characters, or 0 to have size calculated automatically from string\n        //! \\param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters\n        //! \\return Pointer to found attribute, or 0 if not found.\n        xml_attribute<Ch> *last_attribute(const Ch *name = nullptr, std::size_t name_size = 0, bool case_sensitive = true) const\n        {\n            if (name)\n            {\n                if (name_size == 0)\n                    name_size = internal::measure(name);\n                for (xml_attribute<Ch> *attribute = m_last_attribute; attribute; attribute = attribute->m_prev_attribute)\n                    if (internal::compare(attribute->name(), attribute->name_size(), name, name_size, case_sensitive))\n                        return attribute;\n                return 0;\n            }\n            else\n                return m_first_attribute ? m_last_attribute : 0;\n        }\n\n        ///////////////////////////////////////////////////////////////////////////\n        // Node modification\n    \n        //! Sets type of node.\n        //! \\param type Type of node to set.\n        void type(node_type type)\n        {\n            m_type = type;\n        }\n\n        ///////////////////////////////////////////////////////////////////////////\n        // Node manipulation\n\n        //! Prepends a new child node.\n        //! The prepended child becomes the first child, and all existing children are moved one position back.\n        //! \\param child Node to prepend.\n        void prepend_node(xml_node<Ch> *child)\n        {\n            assert(child && !child->parent() && child->type() != node_document);\n            if (first_node())\n            {\n                child->m_next_sibling = m_first_node;\n                m_first_node->m_prev_sibling = child;\n            }\n            else\n            {\n                child->m_next_sibling = nullptr;\n                m_last_node = child;\n            }\n            m_first_node = child;\n            child->m_parent = this;\n            child->m_prev_sibling = nullptr;\n        }\n\n        //! Appends a new child node. \n        //! The appended child becomes the last child.\n        //! \\param child Node to append.\n        void append_node(xml_node<Ch> *child)\n        {\n            assert(child && !child->parent() && child->type() != node_document);\n            if (first_node())\n            {\n                child->m_prev_sibling = m_last_node;\n                m_last_node->m_next_sibling = child;\n            }\n            else\n            {\n                child->m_prev_sibling = nullptr;\n                m_first_node = child;\n            }\n            m_last_node = child;\n            child->m_parent = this;\n            child->m_next_sibling = nullptr;\n        }\n\n        //! Inserts a new child node at specified place inside the node. \n        //! All children after and including the specified node are moved one position back.\n        //! \\param where Place where to insert the child, or 0 to insert at the back.\n        //! \\param child Node to insert.\n        void insert_node(xml_node<Ch> *where, xml_node<Ch> *child)\n        {\n            assert(!where || where->parent() == this);\n            assert(child && !child->parent() && child->type() != node_document);\n            if (where == m_first_node)\n                prepend_node(child);\n            else if (where == 0)\n                append_node(child);\n            else\n            {\n                child->m_prev_sibling = where->m_prev_sibling;\n                child->m_next_sibling = where;\n                where->m_prev_sibling->m_next_sibling = child;\n                where->m_prev_sibling = child;\n                child->m_parent = this;\n            }\n        }\n\n        //! Removes first child node. \n        //! If node has no children, behaviour is undefined.\n        //! Use first_node() to test if node has children.\n        void remove_first_node()\n        {\n            assert(first_node());\n            xml_node<Ch> *child = m_first_node;\n            m_first_node = child->m_next_sibling;\n            if (child->m_next_sibling)\n                child->m_next_sibling->m_prev_sibling = nullptr;\n            else\n                m_last_node = nullptr;\n            child->m_parent = nullptr;\n        }\n\n        //! Removes last child of the node. \n        //! If node has no children, behaviour is undefined.\n        //! Use first_node() to test if node has children.\n        void remove_last_node()\n        {\n            assert(first_node());\n            xml_node<Ch> *child = m_last_node;\n            if (child->m_prev_sibling)\n            {\n                m_last_node = child->m_prev_sibling;\n                child->m_prev_sibling->m_next_sibling = nullptr;\n            }\n            else\n                m_first_node = nullptr;\n            child->m_parent = nullptr;\n        }\n\n        //! Removes specified child from the node\n        // \\param where Pointer to child to be removed.\n        void remove_node(xml_node<Ch> *where)\n        {\n            assert(where && where->parent() == this);\n            assert(first_node());\n            if (where == m_first_node)\n                remove_first_node();\n            else if (where == m_last_node)\n                remove_last_node();\n            else\n            {\n                where->m_prev_sibling->m_next_sibling = where->m_next_sibling;\n                where->m_next_sibling->m_prev_sibling = where->m_prev_sibling;\n                where->m_parent = nullptr;\n            }\n        }\n\n        //! Removes all child nodes (but not attributes).\n        void remove_all_nodes()\n        {\n            for (xml_node<Ch> *node = first_node(); node; node = node->m_next_sibling)\n                node->m_parent = nullptr;\n            m_first_node = nullptr;\n        }\n\n        //! Prepends a new attribute to the node.\n        //! \\param attribute Attribute to prepend.\n        void prepend_attribute(xml_attribute<Ch> *attribute)\n        {\n            assert(attribute && !attribute->parent());\n            if (first_attribute())\n            {\n                attribute->m_next_attribute = m_first_attribute;\n                m_first_attribute->m_prev_attribute = attribute;\n            }\n            else\n            {\n                attribute->m_next_attribute = nullptr;\n                m_last_attribute = attribute;\n            }\n            m_first_attribute = attribute;\n            attribute->m_parent = this;\n            attribute->m_prev_attribute = nullptr;\n        }\n\n        //! Appends a new attribute to the node.\n        //! \\param attribute Attribute to append.\n        void append_attribute(xml_attribute<Ch> *attribute)\n        {\n            assert(attribute && !attribute->parent());\n            if (first_attribute())\n            {\n                attribute->m_prev_attribute = m_last_attribute;\n                m_last_attribute->m_next_attribute = attribute;\n            }\n            else\n            {\n                attribute->m_prev_attribute = nullptr;\n                m_first_attribute = attribute;\n            }\n            m_last_attribute = attribute;\n            attribute->m_parent = this;\n            attribute->m_next_attribute = nullptr;\n        }\n\n        //! Inserts a new attribute at specified place inside the node. \n        //! All attributes after and including the specified attribute are moved one position back.\n        //! \\param where Place where to insert the attribute, or 0 to insert at the back.\n        //! \\param attribute Attribute to insert.\n        void insert_attribute(xml_attribute<Ch> *where, xml_attribute<Ch> *attribute)\n        {\n            assert(!where || where->parent() == this);\n            assert(attribute && !attribute->parent());\n            if (where == m_first_attribute)\n                prepend_attribute(attribute);\n            else if (where == 0)\n                append_attribute(attribute);\n            else\n            {\n                attribute->m_prev_attribute = where->m_prev_attribute;\n                attribute->m_next_attribute = where;\n                where->m_prev_attribute->m_next_attribute = attribute;\n                where->m_prev_attribute = attribute;\n                attribute->m_parent = this;\n            }\n        }\n\n        //! Removes first attribute of the node. \n        //! If node has no attributes, behaviour is undefined.\n        //! Use first_attribute() to test if node has attributes.\n        void remove_first_attribute()\n        {\n            assert(first_attribute());\n            xml_attribute<Ch> *attribute = m_first_attribute;\n            if (attribute->m_next_attribute)\n            {\n                attribute->m_next_attribute->m_prev_attribute = nullptr;\n            }\n            else\n                m_last_attribute = nullptr;\n            attribute->m_parent = nullptr;\n            m_first_attribute = attribute->m_next_attribute;\n        }\n\n        //! Removes last attribute of the node. \n        //! If node has no attributes, behaviour is undefined.\n        //! Use first_attribute() to test if node has attributes.\n        void remove_last_attribute()\n        {\n            assert(first_attribute());\n            xml_attribute<Ch> *attribute = m_last_attribute;\n            if (attribute->m_prev_attribute)\n            {\n                attribute->m_prev_attribute->m_next_attribute = nullptr;\n                m_last_attribute = attribute->m_prev_attribute;\n            }\n            else\n                m_first_attribute = nullptr;\n            attribute->m_parent = nullptr;\n        }\n\n        //! Removes specified attribute from node.\n        //! \\param where Pointer to attribute to be removed.\n        void remove_attribute(xml_attribute<Ch> *where)\n        {\n            assert(first_attribute() && where->parent() == this);\n            if (where == m_first_attribute)\n                remove_first_attribute();\n            else if (where == m_last_attribute)\n                remove_last_attribute();\n            else\n            {\n                where->m_prev_attribute->m_next_attribute = where->m_next_attribute;\n                where->m_next_attribute->m_prev_attribute = where->m_prev_attribute;\n                where->m_parent = nullptr;\n            }\n        }\n\n        //! Removes all attributes of node.\n        void remove_all_attributes()\n        {\n            for (xml_attribute<Ch> *attribute = first_attribute(); attribute; attribute = attribute->m_next_attribute)\n                attribute->m_parent = nullptr;\n            m_first_attribute = nullptr;\n        }\n        \n    private:\n\n        ///////////////////////////////////////////////////////////////////////////\n        // Restrictions\n\n        // No copying\n        xml_node(const xml_node &);\n        void operator =(const xml_node &);\n    \n        ///////////////////////////////////////////////////////////////////////////\n        // Data members\n    \n        // Note that some of the pointers below have UNDEFINED values if certain other pointers are 0.\n        // This is required for maximum performance, as it allows the parser to omit initialization of \n        // unneded/redundant values.\n        //\n        // The rules are as follows:\n        // 1. first_node and first_attribute contain valid pointers, or 0 if node has no children/attributes respectively\n        // 2. last_node and last_attribute are valid only if node has at least one child/attribute respectively, otherwise they contain garbage\n        // 3. prev_sibling and next_sibling are valid only if node has a parent, otherwise they contain garbage\n\n        node_type m_type;                       // Type of node; always valid\n        xml_node<Ch> *m_first_node;             // Pointer to first child node, or 0 if none; always valid\n        xml_node<Ch> *m_last_node;              // Pointer to last child node, or 0 if none; this value is only valid if m_first_node is non-zero\n        xml_attribute<Ch> *m_first_attribute;   // Pointer to first attribute of node, or 0 if none; always valid\n        xml_attribute<Ch> *m_last_attribute;    // Pointer to last attribute of node, or 0 if none; this value is only valid if m_first_attribute is non-zero\n        xml_node<Ch> *m_prev_sibling;           // Pointer to previous sibling of node, or 0 if none; this value is only valid if m_parent is non-zero\n        xml_node<Ch> *m_next_sibling;           // Pointer to next sibling of node, or 0 if none; this value is only valid if m_parent is non-zero\n\n    };\n\n    ///////////////////////////////////////////////////////////////////////////\n    // XML document\n    \n    //! This class represents root of the DOM hierarchy. \n    //! It is also an xml_node and a memory_pool through public inheritance.\n    //! Use parse() function to build a DOM tree from a zero-terminated XML text string.\n    //! parse() function allocates memory for nodes and attributes by using functions of xml_document, \n    //! which are inherited from memory_pool.\n    //! To access root node of the document, use the document itself, as if it was an xml_node.\n    //! \\param Ch Character type to use.\n    template<class Ch = char>\n    class xml_document: public xml_node<Ch>, public memory_pool<Ch>\n    {\n    \n    public:\n\n        //! Constructs empty XML document\n        xml_document()\n            : xml_node<Ch>(node_document)\n        {\n        }\n\n        //! Parses zero-terminated XML string according to given flags.\n        //! Passed string will be modified by the parser, unless rapidxml::parse_non_destructive flag is used.\n        //! The string must persist for the lifetime of the document.\n        //! In case of error, rapidxml::parse_error exception will be thrown.\n        //! <br><br>\n        //! If you want to parse contents of a file, you must first load the file into the memory, and pass pointer to its beginning.\n        //! Make sure that data is zero-terminated.\n        //! <br><br>\n        //! Document can be parsed into multiple times. \n        //! Each new call to parse removes previous nodes and attributes (if any), but does not clear memory pool.\n        //! \\param text XML data to parse; pointer is non-const to denote fact that this data may be modified by the parser.\n        template<int Flags>\n        void parse(Ch *text)\n        {\n            assert(text);\n            \n            // Remove current contents\n            this->remove_all_nodes();\n            this->remove_all_attributes();\n            \n            // Parse BOM, if any\n            parse_bom<Flags>(text);\n            \n            // Parse children\n            while (1)\n            {\n                // Skip whitespace before node\n                skip<whitespace_pred, Flags>(text);\n                if (*text == 0)\n                    break;\n\n                // Parse and append new child\n                if (*text == Ch('<'))\n                {\n                    ++text;     // Skip '<'\n                    if (xml_node<Ch> *node = parse_node<Flags>(text))\n                        this->append_node(node);\n                }\n                else\n                    RAPIDXML_PARSE_ERROR(\"expected <\", text);\n            }\n\n        }\n\n        //! Clears the document by deleting all nodes and clearing the memory pool.\n        //! All nodes owned by document pool are destroyed.\n        void clear()\n        {\n            this->remove_all_nodes();\n            this->remove_all_attributes();\n            memory_pool<Ch>::clear();\n        }\n        \n    private:\n\n        ///////////////////////////////////////////////////////////////////////\n        // Internal character utility functions\n        \n        // Detect whitespace character\n        struct whitespace_pred\n        {\n            static unsigned char test(Ch ch)\n            {\n                return internal::lookup_tables<0>::lookup_whitespace[static_cast<unsigned char>(ch)];\n            }\n        };\n\n        // Detect node name character\n        struct node_name_pred\n        {\n            static unsigned char test(Ch ch)\n            {\n                return internal::lookup_tables<0>::lookup_node_name[static_cast<unsigned char>(ch)];\n            }\n        };\n\n        // Detect attribute name character\n        struct attribute_name_pred\n        {\n            static unsigned char test(Ch ch)\n            {\n                return internal::lookup_tables<0>::lookup_attribute_name[static_cast<unsigned char>(ch)];\n            }\n        };\n\n        // Detect text character (PCDATA)\n        struct text_pred\n        {\n            static unsigned char test(Ch ch)\n            {\n                return internal::lookup_tables<0>::lookup_text[static_cast<unsigned char>(ch)];\n            }\n        };\n\n        // Detect text character (PCDATA) that does not require processing\n        struct text_pure_no_ws_pred\n        {\n            static unsigned char test(Ch ch)\n            {\n                return internal::lookup_tables<0>::lookup_text_pure_no_ws[static_cast<unsigned char>(ch)];\n            }\n        };\n\n        // Detect text character (PCDATA) that does not require processing\n        struct text_pure_with_ws_pred\n        {\n            static unsigned char test(Ch ch)\n            {\n                return internal::lookup_tables<0>::lookup_text_pure_with_ws[static_cast<unsigned char>(ch)];\n            }\n        };\n\n        // Detect attribute value character\n        template<Ch Quote>\n        struct attribute_value_pred\n        {\n            static unsigned char test(Ch ch)\n            {\n                if (Quote == Ch('\\''))\n                    return internal::lookup_tables<0>::lookup_attribute_data_1[static_cast<unsigned char>(ch)];\n                if (Quote == Ch('\\\"'))\n                    return internal::lookup_tables<0>::lookup_attribute_data_2[static_cast<unsigned char>(ch)];\n                return 0;       // Should never be executed, to avoid warnings on Comeau\n            }\n        };\n\n        // Detect attribute value character\n        template<Ch Quote>\n        struct attribute_value_pure_pred\n        {\n            static unsigned char test(Ch ch)\n            {\n                if (Quote == Ch('\\''))\n                    return internal::lookup_tables<0>::lookup_attribute_data_1_pure[static_cast<unsigned char>(ch)];\n                if (Quote == Ch('\\\"'))\n                    return internal::lookup_tables<0>::lookup_attribute_data_2_pure[static_cast<unsigned char>(ch)];\n                return 0;       // Should never be executed, to avoid warnings on Comeau\n            }\n        };\n\n        // Insert coded character, using UTF8 or 8-bit ASCII\n        template<int Flags>\n        static void insert_coded_character(Ch *&text, unsigned long code)\n        {\n            if (Flags & parse_no_utf8)\n            {\n                // Insert 8-bit ASCII character\n                // Todo: possibly verify that code is less than 256 and use replacement char otherwise?\n                text[0] = static_cast<unsigned char>(code);\n                text += 1;\n            }\n            else\n            {\n                // Insert UTF8 sequence\n                if (code < 0x80)    // 1 byte sequence\n                {\n\t                text[0] = static_cast<unsigned char>(code);\n                    text += 1;\n                }\n                else if (code < 0x800)  // 2 byte sequence\n                {\n\t                text[1] = static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6;\n\t                text[0] = static_cast<unsigned char>(code | 0xC0);\n                    text += 2;\n                }\n\t            else if (code < 0x10000)    // 3 byte sequence\n                {\n\t                text[2] = static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6;\n\t                text[1] = static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6;\n\t                text[0] = static_cast<unsigned char>(code | 0xE0);\n                    text += 3;\n                }\n\t            else if (code < 0x110000)   // 4 byte sequence\n                {\n\t                text[3] = static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6;\n\t                text[2] = static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6;\n\t                text[1] = static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6;\n\t                text[0] = static_cast<unsigned char>(code | 0xF0);\n                    text += 4;\n                }\n                else    // Invalid, only codes up to 0x10FFFF are allowed in Unicode\n                {\n                    RAPIDXML_PARSE_ERROR(\"invalid numeric character entity\", text);\n                }\n            }\n        }\n\n        // Skip characters until predicate evaluates to true\n        template<class StopPred, int Flags>\n        static void skip(Ch *&text)\n        {\n            Ch *tmp = text;\n            while (StopPred::test(*tmp))\n                ++tmp;\n            text = tmp;\n        }\n\n        // Skip characters until predicate evaluates to true while doing the following:\n        // - replacing XML character entity references with proper characters (&apos; &amp; &quot; &lt; &gt; &#...;)\n        // - condensing whitespace sequences to single space character\n        template<class StopPred, class StopPredPure, int Flags>\n        static Ch *skip_and_expand_character_refs(Ch *&text)\n        {\n            // If entity translation, whitespace condense and whitespace trimming is disabled, use plain skip\n            if (Flags & parse_no_entity_translation && \n                !(Flags & parse_normalize_whitespace) &&\n                !(Flags & parse_trim_whitespace))\n            {\n                skip<StopPred, Flags>(text);\n                return text;\n            }\n            \n            // Use simple skip until first modification is detected\n            skip<StopPredPure, Flags>(text);\n\n            // Use translation skip\n            Ch *src = text;\n            Ch *dest = src;\n            while (StopPred::test(*src))\n            {\n                // If entity translation is enabled    \n                if (!(Flags & parse_no_entity_translation))\n                {\n                    // Test if replacement is needed\n                    if (src[0] == Ch('&'))\n                    {\n                        switch (src[1])\n                        {\n\n                        // &amp; &apos;\n                        case Ch('a'): \n                            if (src[2] == Ch('m') && src[3] == Ch('p') && src[4] == Ch(';'))\n                            {\n                                *dest = Ch('&');\n                                ++dest;\n                                src += 5;\n                                continue;\n                            }\n                            if (src[2] == Ch('p') && src[3] == Ch('o') && src[4] == Ch('s') && src[5] == Ch(';'))\n                            {\n                                *dest = Ch('\\'');\n                                ++dest;\n                                src += 6;\n                                continue;\n                            }\n                            break;\n\n                        // &quot;\n                        case Ch('q'): \n                            if (src[2] == Ch('u') && src[3] == Ch('o') && src[4] == Ch('t') && src[5] == Ch(';'))\n                            {\n                                *dest = Ch('\"');\n                                ++dest;\n                                src += 6;\n                                continue;\n                            }\n                            break;\n\n                        // &gt;\n                        case Ch('g'): \n                            if (src[2] == Ch('t') && src[3] == Ch(';'))\n                            {\n                                *dest = Ch('>');\n                                ++dest;\n                                src += 4;\n                                continue;\n                            }\n                            break;\n\n                        // &lt;\n                        case Ch('l'): \n                            if (src[2] == Ch('t') && src[3] == Ch(';'))\n                            {\n                                *dest = Ch('<');\n                                ++dest;\n                                src += 4;\n                                continue;\n                            }\n                            break;\n\n                        // &#...; - assumes ASCII\n                        case Ch('#'): \n                            if (src[2] == Ch('x'))\n                            {\n                                unsigned long code = 0;\n                                src += 3;   // Skip &#x\n                                while (1)\n                                {\n                                    unsigned char digit = internal::lookup_tables<0>::lookup_digits[static_cast<unsigned char>(*src)];\n                                    if (digit == 0xFF)\n                                        break;\n                                    code = code * 16 + digit;\n                                    ++src;\n                                }\n                                insert_coded_character<Flags>(dest, code);    // Put character in output\n                            }\n                            else\n                            {\n                                unsigned long code = 0;\n                                src += 2;   // Skip &#\n                                while (1)\n                                {\n                                    unsigned char digit = internal::lookup_tables<0>::lookup_digits[static_cast<unsigned char>(*src)];\n                                    if (digit == 0xFF)\n                                        break;\n                                    code = code * 10 + digit;\n                                    ++src;\n                                }\n                                insert_coded_character<Flags>(dest, code);    // Put character in output\n                            }\n                            if (*src == Ch(';'))\n                                ++src;\n                            else\n                                RAPIDXML_PARSE_ERROR(\"expected ;\", src);\n                            continue;\n\n                        // Something else\n                        default:\n                            // Ignore, just copy '&' verbatim\n                            break;\n\n                        }\n                    }\n                }\n                \n                // If whitespace condensing is enabled\n                if (Flags & parse_normalize_whitespace)\n                {\n                    // Test if condensing is needed                 \n                    if (whitespace_pred::test(*src))\n                    {\n                        *dest = Ch(' '); ++dest;    // Put single space in dest\n                        ++src;                      // Skip first whitespace char\n                        // Skip remaining whitespace chars\n                        while (whitespace_pred::test(*src))\n                            ++src;\n                        continue;\n                    }\n                }\n\n                // No replacement, only copy character\n                *dest++ = *src++;\n\n            }\n\n            // Return new end\n            text = src;\n            return dest;\n\n        }\n\n        ///////////////////////////////////////////////////////////////////////\n        // Internal parsing functions\n        \n        // Parse BOM, if any\n        template<int Flags>\n        void parse_bom(Ch *&text)\n        {\n            // UTF-8?\n            if (static_cast<unsigned char>(text[0]) == 0xEF && \n                static_cast<unsigned char>(text[1]) == 0xBB && \n                static_cast<unsigned char>(text[2]) == 0xBF)\n            {\n                text += 3;      // Skup utf-8 bom\n            }\n        }\n\n        // Parse XML declaration (<?xml...)\n        template<int Flags>\n        xml_node<Ch> *parse_xml_declaration(Ch *&text)\n        {\n            // If parsing of declaration is disabled\n            if (!(Flags & parse_declaration_node))\n            {\n                // Skip until end of declaration\n                while (text[0] != Ch('?') || text[1] != Ch('>'))\n                {\n                    if (!text[0])\n                        RAPIDXML_PARSE_ERROR(\"unexpected end of data\", text);\n                    ++text;\n                }\n                text += 2;    // Skip '?>'\n                return 0;\n            }\n\n            // Create declaration\n            xml_node<Ch> *declaration = this->allocate_node(node_declaration);\n\n            // Skip whitespace before attributes or ?>\n            skip<whitespace_pred, Flags>(text);\n\n            // Parse declaration attributes\n            parse_node_attributes<Flags>(text, declaration);\n            \n            // Skip ?>\n            if (text[0] != Ch('?') || text[1] != Ch('>'))\n                RAPIDXML_PARSE_ERROR(\"expected ?>\", text);\n            text += 2;\n            \n            return declaration;\n        }\n\n        // Parse XML comment (<!--...)\n        template<int Flags>\n        xml_node<Ch> *parse_comment(Ch *&text)\n        {\n            // If parsing of comments is disabled\n            if (!(Flags & parse_comment_nodes))\n            {\n                // Skip until end of comment\n                while (text[0] != Ch('-') || text[1] != Ch('-') || text[2] != Ch('>'))\n                {\n                    if (!text[0])\n                        RAPIDXML_PARSE_ERROR(\"unexpected end of data\", text);\n                    ++text;\n                }\n                text += 3;     // Skip '-->'\n                return 0;      // Do not produce comment node\n            }\n\n            // Remember value start\n            Ch *value = text;\n\n            // Skip until end of comment\n            while (text[0] != Ch('-') || text[1] != Ch('-') || text[2] != Ch('>'))\n            {\n                if (!text[0])\n                    RAPIDXML_PARSE_ERROR(\"unexpected end of data\", text);\n                ++text;\n            }\n\n            // Create comment node\n            xml_node<Ch> *comment = this->allocate_node(node_comment);\n            comment->value(value, text - value);\n            \n            // Place zero terminator after comment value\n            if (!(Flags & parse_no_string_terminators))\n                *text = Ch('\\0');\n            \n            text += 3;     // Skip '-->'\n            return comment;\n        }\n\n        // Parse DOCTYPE\n        template<int Flags>\n        xml_node<Ch> *parse_doctype(Ch *&text)\n        {\n            // Remember value start\n            Ch *value = text;\n\n            // Skip to >\n            while (*text != Ch('>'))\n            {\n                // Determine character type\n                switch (*text)\n                {\n                \n                // If '[' encountered, scan for matching ending ']' using naive algorithm with depth\n                // This works for all W3C test files except for 2 most wicked\n                case Ch('['):\n                {\n                    ++text;     // Skip '['\n                    int depth = 1;\n                    while (depth > 0)\n                    {\n                        switch (*text)\n                        {\n                            case Ch('['): ++depth; break;\n                            case Ch(']'): --depth; break;\n                            case 0: RAPIDXML_PARSE_ERROR(\"unexpected end of data\", text);\n                        }\n                        ++text;\n                    }\n                    break;\n                }\n                \n                // Error on end of text\n                case Ch('\\0'):\n                    RAPIDXML_PARSE_ERROR(\"unexpected end of data\", text);\n                \n                // Other character, skip it\n                default:\n                    ++text;\n\n                }\n            }\n            \n            // If DOCTYPE nodes enabled\n            if (Flags & parse_doctype_node)\n            {\n                // Create a new doctype node\n                xml_node<Ch> *doctype = this->allocate_node(node_doctype);\n                doctype->value(value, text - value);\n                \n                // Place zero terminator after value\n                if (!(Flags & parse_no_string_terminators))\n                    *text = Ch('\\0');\n\n                text += 1;      // skip '>'\n                return doctype;\n            }\n            else\n            {\n                text += 1;      // skip '>'\n                return nullptr;\n            }\n\n        }\n\n        // Parse PI\n        template<int Flags>\n        xml_node<Ch> *parse_pi(Ch *&text)\n        {\n            // If creation of PI nodes is enabled\n            if (Flags & parse_pi_nodes)\n            {\n                // Create pi node\n                xml_node<Ch> *pi = this->allocate_node(node_pi);\n\n                // Extract PI target name\n                Ch *name = text;\n                skip<node_name_pred, Flags>(text);\n                if (text == name)\n                    RAPIDXML_PARSE_ERROR(\"expected PI target\", text);\n                pi->name(name, text - name);\n                \n                // Skip whitespace between pi target and pi\n                skip<whitespace_pred, Flags>(text);\n\n                // Remember start of pi\n                Ch *value = text;\n                \n                // Skip to '?>'\n                while (text[0] != Ch('?') || text[1] != Ch('>'))\n                {\n                    if (*text == Ch('\\0'))\n                        RAPIDXML_PARSE_ERROR(\"unexpected end of data\", text);\n                    ++text;\n                }\n\n                // Set pi value (verbatim, no entity expansion or whitespace normalization)\n                pi->value(value, text - value);     \n                \n                // Place zero terminator after name and value\n                if (!(Flags & parse_no_string_terminators))\n                {\n                    pi->name()[pi->name_size()] = Ch('\\0');\n                    pi->value()[pi->value_size()] = Ch('\\0');\n                }\n                \n                text += 2;                          // Skip '?>'\n                return pi;\n            }\n            else\n            {\n                // Skip to '?>'\n                while (text[0] != Ch('?') || text[1] != Ch('>'))\n                {\n                    if (*text == Ch('\\0'))\n                        RAPIDXML_PARSE_ERROR(\"unexpected end of data\", text);\n                    ++text;\n                }\n                text += 2;    // Skip '?>'\n                return 0;\n            }\n        }\n\n        // Parse and append data\n        // Return character that ends data.\n        // This is necessary because this character might have been overwritten by a terminating 0\n        template<int Flags>\n        Ch parse_and_append_data(xml_node<Ch> *node, Ch *&text, Ch *contents_start)\n        {\n            // Backup to contents start if whitespace trimming is disabled\n            if (!(Flags & parse_trim_whitespace))\n                text = contents_start;     \n            \n            // Skip until end of data\n            Ch *value = text, *end;\n            if (Flags & parse_normalize_whitespace)\n                end = skip_and_expand_character_refs<text_pred, text_pure_with_ws_pred, Flags>(text);   \n            else\n                end = skip_and_expand_character_refs<text_pred, text_pure_no_ws_pred, Flags>(text);\n\n            // Trim trailing whitespace if flag is set; leading was already trimmed by whitespace skip after >\n            if (Flags & parse_trim_whitespace)\n            {\n                if (Flags & parse_normalize_whitespace)\n                {\n                    // Whitespace is already condensed to single space characters by skipping function, so just trim 1 char off the end\n                    if (*(end - 1) == Ch(' '))\n                        --end;\n                }\n                else\n                {\n                    // Backup until non-whitespace character is found\n                    while (whitespace_pred::test(*(end - 1)))\n                        --end;\n                }\n            }\n            \n            // If characters are still left between end and value (this test is only necessary if normalization is enabled)\n            // Create new data node\n            if (!(Flags & parse_no_data_nodes))\n            {\n                xml_node<Ch> *data = this->allocate_node(node_data);\n                data->value(value, end - value);\n                node->append_node(data);\n            }\n\n            // Add data to parent node if no data exists yet\n            if (!(Flags & parse_no_element_values)) \n                if (*node->value() == Ch('\\0'))\n                    node->value(value, end - value);\n\n            // Place zero terminator after value\n            if (!(Flags & parse_no_string_terminators))\n            {\n                Ch ch = *text;\n                *end = Ch('\\0');\n                return ch;      // Return character that ends data; this is required because zero terminator overwritten it\n            }\n\n            // Return character that ends data\n            return *text;\n        }\n\n        // Parse CDATA\n        template<int Flags>\n        xml_node<Ch> *parse_cdata(Ch *&text)\n        {\n            // If CDATA is disabled\n            if (Flags & parse_no_data_nodes)\n            {\n                // Skip until end of cdata\n                while (text[0] != Ch(']') || text[1] != Ch(']') || text[2] != Ch('>'))\n                {\n                    if (!text[0])\n                        RAPIDXML_PARSE_ERROR(\"unexpected end of data\", text);\n                    ++text;\n                }\n                text += 3;      // Skip ]]>\n                return 0;       // Do not produce CDATA node\n            }\n\n            // Skip until end of cdata\n            Ch *value = text;\n            while (text[0] != Ch(']') || text[1] != Ch(']') || text[2] != Ch('>'))\n            {\n                if (!text[0])\n                    RAPIDXML_PARSE_ERROR(\"unexpected end of data\", text);\n                ++text;\n            }\n\n            // Create new cdata node\n            xml_node<Ch> *cdata = this->allocate_node(node_cdata);\n            cdata->value(value, text - value);\n\n            // Place zero terminator after value\n            if (!(Flags & parse_no_string_terminators))\n                *text = Ch('\\0');\n\n            text += 3;      // Skip ]]>\n            return cdata;\n        }\n        \n        // Parse element node\n        template<int Flags>\n        xml_node<Ch> *parse_element(Ch *&text)\n        {\n            // Create element node\n            xml_node<Ch> *element = this->allocate_node(node_element);\n\n            // Extract element name\n            Ch *name = text;\n            skip<node_name_pred, Flags>(text);\n            if (text == name)\n                RAPIDXML_PARSE_ERROR(\"expected element name\", text);\n            element->name(name, text - name);\n            \n            // Skip whitespace between element name and attributes or >\n            skip<whitespace_pred, Flags>(text);\n\n            // Parse attributes, if any\n            parse_node_attributes<Flags>(text, element);\n\n            // Determine ending type\n            if (*text == Ch('>'))\n            {\n                ++text;\n                parse_node_contents<Flags>(text, element);\n            }\n            else if (*text == Ch('/'))\n            {\n                ++text;\n                if (*text != Ch('>'))\n                    RAPIDXML_PARSE_ERROR(\"expected >\", text);\n                ++text;\n            }\n            else\n                RAPIDXML_PARSE_ERROR(\"expected >\", text);\n\n            // Place zero terminator after name\n            if (!(Flags & parse_no_string_terminators))\n                element->name()[element->name_size()] = Ch('\\0');\n\n            // Return parsed element\n            return element;\n        }\n\n        // Determine node type, and parse it\n        template<int Flags>\n        xml_node<Ch> *parse_node(Ch *&text)\n        {\n            // Parse proper node type\n            switch (text[0])\n            {\n\n            // <...\n            default: \n                // Parse and append element node\n                return parse_element<Flags>(text);\n\n            // <?...\n            case Ch('?'): \n                ++text;     // Skip ?\n                if ((text[0] == Ch('x') || text[0] == Ch('X')) &&\n                    (text[1] == Ch('m') || text[1] == Ch('M')) && \n                    (text[2] == Ch('l') || text[2] == Ch('L')) &&\n                    whitespace_pred::test(text[3]))\n                {\n                    // '<?xml ' - xml declaration\n                    text += 4;      // Skip 'xml '\n                    return parse_xml_declaration<Flags>(text);\n                }\n                else\n                {\n                    // Parse PI\n                    return parse_pi<Flags>(text);\n                }\n            \n            // <!...\n            case Ch('!'): \n\n                // Parse proper subset of <! node\n                switch (text[1])    \n                {\n                \n                // <!-\n                case Ch('-'):\n                    if (text[2] == Ch('-'))\n                    {\n                        // '<!--' - xml comment\n                        text += 3;     // Skip '!--'\n                        return parse_comment<Flags>(text);\n                    }\n                    break;\n\n                // <![\n                case Ch('['):\n                    if (text[2] == Ch('C') && text[3] == Ch('D') && text[4] == Ch('A') && \n                        text[5] == Ch('T') && text[6] == Ch('A') && text[7] == Ch('['))\n                    {\n                        // '<![CDATA[' - cdata\n                        text += 8;     // Skip '![CDATA['\n                        return parse_cdata<Flags>(text);\n                    }\n                    break;\n\n                // <!D\n                case Ch('D'):\n                    if (text[2] == Ch('O') && text[3] == Ch('C') && text[4] == Ch('T') && \n                        text[5] == Ch('Y') && text[6] == Ch('P') && text[7] == Ch('E') && \n                        whitespace_pred::test(text[8]))\n                    {\n                        // '<!DOCTYPE ' - doctype\n                        text += 9;      // skip '!DOCTYPE '\n                        return parse_doctype<Flags>(text);\n                    }\n\n                }   // switch\n\n                // Attempt to skip other, unrecognized node types starting with <!\n                ++text;     // Skip !\n                while (*text != Ch('>'))\n                {\n                    if (*text == 0)\n                        RAPIDXML_PARSE_ERROR(\"unexpected end of data\", text);\n                    ++text;\n                }\n                ++text;     // Skip '>'\n                return 0;   // No node recognized\n\n            }\n        }\n\n        // Parse contents of the node - children, data etc.\n        template<int Flags>\n        void parse_node_contents(Ch *&text, xml_node<Ch> *node)\n        {\n            // For all children and text\n            while (1)\n            {\n                // Skip whitespace between > and node contents\n                Ch *contents_start = text;      // Store start of node contents before whitespace is skipped\n                skip<whitespace_pred, Flags>(text);\n                Ch next_char = *text;\n\n            // After data nodes, instead of continuing the loop, control jumps here.\n            // This is because zero termination inside parse_and_append_data() function\n            // would wreak havoc with the above code.\n            // Also, skipping whitespace after data nodes is unnecessary.\n            after_data_node:    \n                \n                // Determine what comes next: node closing, child node, data node, or 0?\n                switch (next_char)\n                {\n                \n                // Node closing or child node\n                case Ch('<'):\n                    if (text[1] == Ch('/'))\n                    {\n                        // Node closing\n                        text += 2;      // Skip '</'\n                        if (Flags & parse_validate_closing_tags)\n                        {\n                            // Skip and validate closing tag name\n                            Ch *closing_name = text;\n                            skip<node_name_pred, Flags>(text);\n                            if (!internal::compare(node->name(), node->name_size(), closing_name, text - closing_name, true))\n                                RAPIDXML_PARSE_ERROR(\"invalid closing tag name\", text);\n                        }\n                        else\n                        {\n                            // No validation, just skip name\n                            skip<node_name_pred, Flags>(text);\n                        }\n                        // Skip remaining whitespace after node name\n                        skip<whitespace_pred, Flags>(text);\n                        if (*text != Ch('>'))\n                            RAPIDXML_PARSE_ERROR(\"expected >\", text);\n                        ++text;     // Skip '>'\n                        return;     // Node closed, finished parsing contents\n                    }\n                    else\n                    {\n                        // Child node\n                        ++text;     // Skip '<'\n                        if (xml_node<Ch> *child = parse_node<Flags>(text))\n                            node->append_node(child);\n                    }\n                    break;\n\n                // End of data - error\n                case Ch('\\0'):\n                    RAPIDXML_PARSE_ERROR(\"unexpected end of data\", text);\n\n                // Data node\n                default:\n                    next_char = parse_and_append_data<Flags>(node, text, contents_start);\n                    goto after_data_node;   // Bypass regular processing after data nodes\n\n                }\n            }\n        }\n        \n        // Parse XML attributes of the node\n        template<int Flags>\n        void parse_node_attributes(Ch *&text, xml_node<Ch> *node)\n        {\n            // For all attributes \n            while (attribute_name_pred::test(*text))\n            {\n                // Extract attribute name\n                Ch *name = text;\n                ++text;     // Skip first character of attribute name\n                skip<attribute_name_pred, Flags>(text);\n                if (text == name)\n                    RAPIDXML_PARSE_ERROR(\"expected attribute name\", name);\n\n                // Create new attribute\n                xml_attribute<Ch> *attribute = this->allocate_attribute();\n                attribute->name(name, text - name);\n                node->append_attribute(attribute);\n\n                // Skip whitespace after attribute name\n                skip<whitespace_pred, Flags>(text);\n\n                // Skip =\n                if (*text != Ch('='))\n                    RAPIDXML_PARSE_ERROR(\"expected =\", text);\n                ++text;\n\n                // Add terminating zero after name\n                if (!(Flags & parse_no_string_terminators))\n                    attribute->name()[attribute->name_size()] = 0;\n\n                // Skip whitespace after =\n                skip<whitespace_pred, Flags>(text);\n\n                // Skip quote and remember if it was ' or \"\n                Ch quote = *text;\n                if (quote != Ch('\\'') && quote != Ch('\"'))\n                    RAPIDXML_PARSE_ERROR(\"expected ' or \\\"\", text);\n                ++text;\n\n                // Extract attribute value and expand char refs in it\n                Ch *value = text, *end;\n                const int AttFlags = Flags & ~parse_normalize_whitespace;   // No whitespace normalization in attributes\n                if (quote == Ch('\\''))\n                    end = skip_and_expand_character_refs<attribute_value_pred<Ch('\\'')>, attribute_value_pure_pred<Ch('\\'')>, AttFlags>(text);\n                else\n                    end = skip_and_expand_character_refs<attribute_value_pred<Ch('\"')>, attribute_value_pure_pred<Ch('\"')>, AttFlags>(text);\n                \n                // Set attribute value\n                attribute->value(value, end - value);\n                \n                // Make sure that end quote is present\n                if (*text != quote)\n                    RAPIDXML_PARSE_ERROR(\"expected ' or \\\"\", text);\n                ++text;     // Skip quote\n\n                // Add terminating zero after value\n                if (!(Flags & parse_no_string_terminators))\n                    attribute->value()[attribute->value_size()] = 0;\n\n                // Skip whitespace after attribute value\n                skip<whitespace_pred, Flags>(text);\n            }\n        }\n\n    };\n\n    //! \\cond internal\n    namespace internal\n    {\n\n        // Whitespace (space \\n \\r \\t)\n        template<int Dummy>\n        const unsigned char lookup_tables<Dummy>::lookup_whitespace[256] = \n        {\n          // 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\n             0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  0,  0,  1,  0,  0,  // 0\n             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 1\n             1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 2\n             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 3\n             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 4\n             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 5\n             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 6\n             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 7\n             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 8\n             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 9\n             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // A\n             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // B\n             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // C\n             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // D\n             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // E\n             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0   // F\n        };\n\n        // Node name (anything but space \\n \\r \\t / > ? \\0)\n        template<int Dummy>\n        const unsigned char lookup_tables<Dummy>::lookup_node_name[256] = \n        {\n          // 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\n             0,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  1,  1,  0,  1,  1,  // 0\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 1\n             0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  // 2\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  // 3\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 4\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 5\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 6\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 7\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 8\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 9\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // A\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // B\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // C\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // D\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // E\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1   // F\n        };\n\n        // Text (i.e. PCDATA) (anything but < \\0)\n        template<int Dummy>\n        const unsigned char lookup_tables<Dummy>::lookup_text[256] = \n        {\n          // 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\n             0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 0\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 1\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 2\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  1,  1,  1,  // 3\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 4\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 5\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 6\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 7\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 8\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 9\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // A\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // B\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // C\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // D\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // E\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1   // F\n        };\n\n        // Text (i.e. PCDATA) that does not require processing when ws normalization is disabled \n        // (anything but < \\0 &)\n        template<int Dummy>\n        const unsigned char lookup_tables<Dummy>::lookup_text_pure_no_ws[256] = \n        {\n          // 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\n             0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 0\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 1\n             1,  1,  1,  1,  1,  1,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 2\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  1,  1,  1,  // 3\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 4\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 5\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 6\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 7\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 8\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 9\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // A\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // B\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // C\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // D\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // E\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1   // F\n        };\n\n        // Text (i.e. PCDATA) that does not require processing when ws normalizationis is enabled\n        // (anything but < \\0 & space \\n \\r \\t)\n        template<int Dummy>\n        const unsigned char lookup_tables<Dummy>::lookup_text_pure_with_ws[256] = \n        {\n          // 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\n             0,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  1,  1,  0,  1,  1,  // 0\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 1\n             0,  1,  1,  1,  1,  1,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 2\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  1,  1,  1,  // 3\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 4\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 5\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 6\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 7\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 8\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 9\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // A\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // B\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // C\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // D\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // E\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1   // F\n        };\n\n        // Attribute name (anything but space \\n \\r \\t / < > = ? ! \\0)\n        template<int Dummy>\n        const unsigned char lookup_tables<Dummy>::lookup_attribute_name[256] = \n        {\n          // 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\n             0,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  1,  1,  0,  1,  1,  // 0\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 1\n             0,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  // 2\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  0,  0,  // 3\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 4\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 5\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 6\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 7\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 8\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 9\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // A\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // B\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // C\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // D\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // E\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1   // F\n        };\n\n        // Attribute data with single quote (anything but ' \\0)\n        template<int Dummy>\n        const unsigned char lookup_tables<Dummy>::lookup_attribute_data_1[256] = \n        {\n          // 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\n             0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 0\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 1\n             1,  1,  1,  1,  1,  1,  1,  0,  1,  1,  1,  1,  1,  1,  1,  1,  // 2\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 3\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 4\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 5\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 6\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 7\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 8\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 9\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // A\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // B\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // C\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // D\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // E\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1   // F\n        };\n\n        // Attribute data with single quote that does not require processing (anything but ' \\0 &)\n        template<int Dummy>\n        const unsigned char lookup_tables<Dummy>::lookup_attribute_data_1_pure[256] = \n        {\n          // 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\n             0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 0\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 1\n             1,  1,  1,  1,  1,  1,  0,  0,  1,  1,  1,  1,  1,  1,  1,  1,  // 2\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 3\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 4\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 5\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 6\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 7\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 8\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 9\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // A\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // B\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // C\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // D\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // E\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1   // F\n        };\n\n        // Attribute data with double quote (anything but \" \\0)\n        template<int Dummy>\n        const unsigned char lookup_tables<Dummy>::lookup_attribute_data_2[256] = \n        {\n          // 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\n             0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 0\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 1\n             1,  1,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 2\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 3\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 4\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 5\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 6\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 7\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 8\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 9\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // A\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // B\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // C\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // D\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // E\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1   // F\n        };\n\n        // Attribute data with double quote that does not require processing (anything but \" \\0 &)\n        template<int Dummy>\n        const unsigned char lookup_tables<Dummy>::lookup_attribute_data_2_pure[256] = \n        {\n          // 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\n             0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 0\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 1\n             1,  1,  0,  1,  1,  1,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 2\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 3\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 4\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 5\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 6\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 7\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 8\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // 9\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // A\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // B\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // C\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // D\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  // E\n             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1   // F\n        };\n\n        // Digits (dec and hex, 255 denotes end of numeric character reference)\n        template<int Dummy>\n        const unsigned char lookup_tables<Dummy>::lookup_digits[256] = \n        {\n          // 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\n           255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  // 0\n           255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  // 1\n           255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  // 2\n             0,  1,  2,  3,  4,  5,  6,  7,  8,  9,255,255,255,255,255,255,  // 3\n           255, 10, 11, 12, 13, 14, 15,255,255,255,255,255,255,255,255,255,  // 4\n           255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  // 5\n           255, 10, 11, 12, 13, 14, 15,255,255,255,255,255,255,255,255,255,  // 6\n           255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  // 7\n           255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  // 8\n           255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  // 9\n           255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  // A\n           255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  // B\n           255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  // C\n           255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  // D\n           255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  // E\n           255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255   // F\n        };\n    \n        // Upper case conversion\n        template<int Dummy>\n        const unsigned char lookup_tables<Dummy>::lookup_upcase[256] = \n        {\n          // 0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  A   B   C   D   E   F\n           0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15,   // 0\n           16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,   // 1\n           32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,   // 2\n           48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,   // 3\n           64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,   // 4\n           80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,   // 5\n           96, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,   // 6\n           80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 123,124,125,126,127,  // 7\n           128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,  // 8\n           144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,  // 9\n           160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,  // A\n           176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,  // B\n           192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,  // C\n           208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,  // D\n           224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,  // E\n           240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255   // F\n        };\n    }\n    //! \\endcond\n\n}\n\n// Undefine internal macros\n#undef RAPIDXML_PARSE_ERROR\n\n// On MSVC, restore warnings state\n#ifdef _MSC_VER\n    #pragma warning(pop)\n#endif\n\n#endif // RAPIDXML_H_INCLUDED\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/io/server.h",
    "content": "/*\n * File: server.h\n * --------------\n * This file exports a set of functions that implement a simple HTTP server\n * that can listen for connections.\n * \n * @version 2016/03/16\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _server_h\n#define _server_h\n\n#include <iostream>\n#include <string>\n\n#define INTERNAL_INCLUDE 1\n#include \"gevents.h\"\n#undef INTERNAL_INCLUDE\n\nnamespace HttpServer {\nconst int DEFAULT_PORT = 8080;\nconst int HTTP_ERROR_OK = 200;\n\nstd::string getContentType(const std::string& extension);\nstd::string getErrorMessage(int httpErrorCode);\nstd::string getUrlExtension(const std::string& url);\nbool isRunning();\nvoid sendResponse(const GEvent& event, const std::string& responseText,\n                  const std::string& contentType = \"\");\nvoid sendResponseError(const GEvent& event, int httpErrorCode,\n                  const std::string& errorMessage = \"\");\nvoid sendResponseFile(const GEvent& event, const std::string& responseFilePath,\n                      const std::string& contentType = \"\" /* auto */);\nvoid startServer(int port = DEFAULT_PORT);\nvoid stopServer();\n} // namespace HttpServer\n\n#endif // _server_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/io/simpio.h",
    "content": "/*\n * File: simpio.h\n * --------------\n * This file exports a set of functions that simplify input/output\n * operations in C++ and provide some error-checking on console input.\n * \n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2016/09/29\n * - added getDouble method\n * @version 2015/07/05\n * - increased visibility of appendSpace function used by various IO\n *   prompting functions (no longer static)\n * @version 2014/10/19\n * - alphabetized functions\n * - converted many funcs to take const string& rather than string for efficiency\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _simpio_h\n#define _simpio_h\n\n#include <iostream>\n#include <string>\n\n/**\n * Adds a space at the end of the given string by reference if none is present.\n * @private\n */\nvoid appendSpace(std::string& prompt);\n\n/**\n * Reads a complete line from <code>cin</code>, expecting the user to type a\n * single character. If this is the case, that character value is returned.\n * If the user types anything other than a one-character line of input,\n * the user is given a chance to reenter the value.\n *\n * If supplied, the optional <code>prompt</code> string is printed before\n * reading the value.\n *\n * The also optional <code>reprompt</code> argument provides an output message\n * displayed each time if the user types a file that is not found.\n * If no value is passed, defaults to, \"You must type a single character. Try again.\".\n */\nchar getChar(const std::string& prompt = \"\",\n             const std::string& reprompt = \"\");\n\n/**\n * Reads a complete line from <code>cin</code> and scans it as a\n * floating-point number. If the scan succeeds, the floating-point\n * value is returned.  If the input is not a legal number or if\n * extraneous characters (other than whitespace) appear in the string,\n * the user is given a chance to reenter the value.\n *\n * If supplied, the optional <code>prompt</code> string is printed before\n * reading the value.\n *\n * The also optional <code>reprompt</code> argument provides an output message\n * displayed each time if the user types a file that is not found.\n * If no value is passed, defaults to, \"Illegal numeric format. Try again.\".\n *\n * Equivalent to getReal.\n */\ndouble getDouble(const std::string& prompt = \"\",\n                 const std::string& reprompt = \"\");\n\n/**\n * Reads a complete line from <code>cin</code> and scans it as a\n * floating-point number. If the scan succeeds, the floating-point\n * value is returned.  If the input is not a legal number or if\n * it is not between min and max, or if extraneous characters\n * (other than whitespace) appear in the string,\n * the user is given a chance to reenter the value.\n *\n * The required <code>prompt</code> string is printed before reading the value.\n *\n * Equivalent to getRealBetween.\n */\ndouble getDoubleBetween(const std::string& prompt, double min, double max);\n\n\n/**\n * Reads a complete line from <code>cin</code> and scans it as an\n * integer. If the scan succeeds, the integer value is returned. If\n * the argument is not a legal integer or if extraneous characters\n * (other than whitespace) appear in the string, the user is given\n * a chance to reenter the value.\n *\n * If supplied, the optional <code>prompt</code> string is printed before\n * reading the value.\n *\n * The also optional <code>reprompt</code> argument provides an output message\n * displayed each time if the user types a file that is not found.\n * If no value is passed, defaults to, \"Illegal integer format. Try again.\".\n */\nint getInteger(const std::string& prompt = \"\",\n               const std::string& reprompt = \"\");\n\n/**\n * Reads a complete line from <code>cin</code> and scans it as an\n * integer. If the scan succeeds, the integer value is returned. If\n * the argument is not a legal integer, if it is not between min and max,\n * or if extraneous characters (other than whitespace) appear in the string,\n * the user is given a chance to reenter the value.\n *\n * The required <code>prompt</code> string is printed before reading the value.\n */\nint getIntegerBetween(const std::string& prompt, int min, int max);\n\n/**\n * Reads a line of text from <code>cin</code> and returns that line\n * as a string.  The newline character that terminates the input is\n * not stored as part of the return value.  If supplied, the optional\n * <code>prompt</code> string is printed before reading the value.\n */\nstd::string getLine(const std::string& prompt = \"\");\n\n/**\n * Alternate version of getLine that accepts a prompt and fills a given output\n * variable with its result.\n */\nvoid getLine(const std::string& prompt,\n             std::string& out);\n\n/**\n * Alternate version of getLine that accepts an input stream to read from.\n * Meant as a drop-in replacement for the standard C++ getline (lowercase L)\n * function.\n */\nvoid getLine(std::istream& input,\n             std::string& out);\n\n/**\n * Reads a complete line from <code>cin</code> and scans it as a\n * floating-point number. If the scan succeeds, the floating-point\n * value is returned.  If the input is not a legal number or if\n * extraneous characters (other than whitespace) appear in the string,\n * the user is given a chance to reenter the value.\n *\n * If supplied, the optional <code>prompt</code> string is printed before\n * reading the value.\n *\n * The also optional <code>reprompt</code> argument provides an output message\n * displayed each time if the user types a file that is not found.\n * If no value is passed, defaults to, \"Illegal numeric format. Try again.\".\n *\n * Equivalent to getDouble.\n */\ndouble getReal(const std::string& prompt = \"\",\n               const std::string& reprompt = \"\");\n\n/**\n * Reads a complete line from <code>cin</code> and scans it as a\n * floating-point number. If the scan succeeds, the floating-point\n * value is returned.  If the input is not a legal number or if\n * it is not between min and max, or if extraneous characters\n * (other than whitespace) appear in the string,\n * the user is given a chance to reenter the value.\n *\n * The required <code>prompt</code> string is printed before reading the value.\n *\n * Equivalent to getDoubleBetween.\n */\ndouble getRealBetween(const std::string& prompt, double min, double max);\n\n/**\n * Reads a complete line from <code>cin</code> and treats it as a\n * yes-or-no answer to a question.  Returns <code>true</code> if the line\n * typed begins with a 'y' or 'Y', and returns <code>false</code> if it begins\n * with a 'n' or 'N'.  Otherwise the user is given a chance to reenter the\n * value.\n *\n * If supplied, the optional <code>prompt</code> string is printed before\n * reading the value.\n *\n * The also optional <code>reprompt</code> argument provides an output message\n * displayed each time if the user types a file that is not found.\n * If no value is passed, defaults to,\n * \"Please type a word that starts with 'Y' or 'N'.\".\n * \n * The also also optional <code>defaultValue</code> argument indicates what\n * should happen if the user just presses Enter rather than typing Y or N.\n * By default, the user is re-prompted, but if a defaultValue is passed here,\n * pressing Enter will be equivalent to having typed that value.\n * This is useful where the default Y/N answer is Yes or No and you want to\n * let the user avoid typing.\n */\nbool getYesOrNo(const std::string& prompt = \"\",\n                const std::string& reprompt = \"\",\n                const std::string& defaultValue = \"\");\n\n#endif // _simpio_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/io/tokenscanner.h",
    "content": "/*\n * File: tokenscanner.h\n * --------------------\n * This file exports a <code>TokenScanner</code> class that divides\n * a string into individual logical units called <b><i>tokens</i></b>.\n *\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2018/09/23\n * - moved TokenType enum to inside TokenScanner class to avoid namespace conflicts\n *   (may break some client code)\n * - remove private/tokenpatch.h\n * @version 2016/11/26\n * - added getInput method\n * - replaced occurrences of string with const string& for efficiency\n * - alphabetized method ordering\n * - added operator << for printing a scanner\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _tokenscanner_h\n#define _tokenscanner_h\n\n#include <iostream>\n#include <string>\n\n/**\n * This class divides a string into individual tokens.  The typical\n * use of the <code>TokenScanner</code> class is illustrated by the\n * following pattern, which reads the tokens in the string variable\n * <code>input</code>:\n *\n *<pre>\n *    TokenScanner scanner(input);\n *    while (scanner.hasMoreTokens()) {\n *       string token = scanner.nextToken();\n *       ... process the token ...\n *    }\n *</pre>\n *\n * The <code>TokenScanner</code> class exports several additional methods\n * that give clients more control over its behavior.  Those methods are\n * described individually in the documentation.\n */\nclass TokenScanner {\npublic:\n    /**\n     * This enumerated type defines the values of the\n     * <code>getTokenType</code> method.\n     */\n    enum TokenType {SEPARATOR, WORD, NUMBER, STRING, OPERATOR};\n\n    /**\n     * Initializes a scanner object with an empty token stream.\n     */\n    TokenScanner();\n\n    /**\n     * Initializes a scanner object.  The initial token stream comes from\n     * the specified input stream.\n     */\n    TokenScanner(std::istream& infile);\n\n    /**\n     * Initializes a scanner object.  The initial token stream comes from\n     * the specified string.\n     */\n    TokenScanner(const std::string& str);\n\n    /**\n     * Deallocates the storage associated with this scanner.\n     */\n    virtual ~TokenScanner();\n\n    /**\n     * Defines a new multicharacter operator.  Whenever you call\n     * <code>nextToken</code> when the input stream contains operator\n     * characters, the scanner returns the longest possible operator\n     * string that can be read at that point.\n     */\n    void addOperator(const std::string& op);\n\n    /**\n     * Adds the characters in <code>str</code> to the set of characters\n     * legal in a <code>WORD</code> token.  For example, calling\n     * <code>addWordCharacters(\"_\")</code> adds the underscore to the\n     * set of characters that are accepted as part of a word.\n     */\n    void addWordCharacters(const std::string& str);\n\n    /**\n     * Reads the next character from the scanner input stream.\n     */\n    int getChar();\n\n    /**\n     * Returns the string that is used as the input buffer for this scanner,\n     * if any. If this scanner was created using an istream instead of a\n     * string, returns an empty string.\n     */\n    std::string getInput() const;\n\n    /**\n     * Returns the current position of the scanner in the input stream.\n     * If <code>saveToken</code> has been called, this position corresponds\n     * to the beginning of the saved token.  If <code>saveToken</code> is\n     * called more than once, <code>getPosition</code> returns -1.\n     */\n    int getPosition() const;\n\n    /**\n     * Returns the string value of a token.  This value is formed by removing\n     * any surrounding quotation marks and replacing escape sequences by the\n     * appropriate characters.\n     */\n    std::string getStringValue(const std::string& token) const;\n\n    /**\n     * Returns the type of this token.  This type will match one of the\n     * following enumerated type constants: <code>EOF</code>,\n     * <code>SEPARATOR</code>, <code>WORD</code>, <code>NUMBER</code>,\n     * <code>STRING</code>, or <code>OPERATOR</code>.\n     */\n    TokenType getTokenType(const std::string& token) const;\n\n    /**\n     * Returns <code>true</code> if there are additional tokens for this\n     * scanner to read.\n     */\n    bool hasMoreTokens();\n\n    /**\n     * Tells the scanner to ignore comments.  The scanner package recognizes\n     * both the slash-star and slash-slash comment format from the C-based\n     * family of languages.  Calling:\n     *\n     *<pre>\n     *    scanner.ignoreComments();\n     *</pre>\n     *\n     * sets the parser to ignore comments.\n     */\n    void ignoreComments();\n\n    /**\n     * Tells the scanner to ignore whitespace characters.  By default,\n     * the <code>nextToken</code> method treats whitespace characters\n     * (typically spaces and tabs) just like any other punctuation mark\n     * and returns them as single-character tokens.\n     * Calling:\n     *\n     *<pre>\n     *    scanner.ignoreWhitespace();\n     *</pre>\n     *\n     * changes this behavior so that the scanner ignore whitespace characters.\n     */\n    void ignoreWhitespace();\n\n    /**\n     * Returns <code>true</code> if the character is valid in a word.\n     */\n    bool isWordCharacter(char ch) const;\n\n    /**\n     * Returns the next token from this scanner.  If <code>nextToken</code>\n     * is called when no tokens are available, it returns the empty string.\n     */\n    std::string nextToken();\n\n    /**\n     * Pushes the specified token back into this scanner's input stream.\n     * On the next call to <code>nextToken</code>, the scanner will return\n     * the saved token without reading any additional characters from the\n     * token stream.\n     */\n    void saveToken(const std::string& token);\n\n    /**\n     * Controls how the scanner treats tokens that begin with a digit.  By\n     * default, the <code>nextToken</code> method treats numbers and letters\n     * identically and therefore does not provide any special processing for\n     * numbers.  Calling:\n     *\n     *<pre>\n     *    scanner.scanNumbers();\n     *</pre>\n     *\n     * changes this behavior so that <code>nextToken</code> returns the\n     * longest substring that can be interpreted as a real number.\n     */\n    void scanNumbers();\n\n    /**\n     * Controls how the scanner treats tokens enclosed in quotation marks.  By\n     * default, quotation marks (either single or double) are treated just like\n     * any other punctuation character.  Calling:\n     *\n     *<pre>\n     *    scanner.scanStrings();\n     *</pre>\n     *\n     * changes this assumption so that <code>nextToken</code> returns a single\n     * token consisting of all characters through the matching quotation mark.\n     * The quotation marks are returned as part of the scanned token so that\n     * clients can differentiate strings from other token types.\n     */\n    void scanStrings();\n\n    /**\n     * Sets the token stream for this scanner to the specified input stream.\n     * Any previous token stream is discarded.\n     */\n    void setInput(std::istream& infile);\n\n    /**\n     * Sets the token stream for this scanner to the specified string.\n     * Any previous token stream is discarded.\n     */\n    void setInput(const std::string& str);\n\n    /**\n     * Pushes the character <code>ch</code> back into the scanner stream.\n     * The character must match the one that was read.\n     */\n    void ungetChar(int ch);\n\n    /**\n     * Reads the next token and makes sure it matches the string\n     * <code>expected</code>.  If it does not, <code>verifyToken</code>\n     * throws an error.\n     * @throw ErrorException if the next token does not match the given string\n     */\n    void verifyToken(const std::string& expected);\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\nprivate:\n    /*\n     * Private type: StringCell\n     * ------------------------\n     * This type is used to construct linked lists of cells, which are used\n     * to represent both the stack of saved tokens and the set of defined\n     * operators.  These types cannot use the Stack and Lexicon classes\n     * directly because tokenscanner.h is an extremely low-level interface,\n     * and doing so would create circular dependencies in the .h files.\n     */\n    struct StringCell {\n        std::string str;\n        StringCell *link;\n    };\n\n    enum NumberScannerState {\n        INITIAL_STATE,\n        BEFORE_DECIMAL_POINT,\n        AFTER_DECIMAL_POINT,\n        STARTING_EXPONENT,\n        FOUND_EXPONENT_SIGN,\n        SCANNING_EXPONENT,\n        FINAL_STATE\n    };\n\n    std::string buffer;              /* The original argument string */\n    std::istream* isp;               /* The input stream for tokens  */\n    bool stringInputFlag;            /* Flag indicating string input */\n    bool ignoreWhitespaceFlag;       /* Scanner ignores whitespace   */\n    bool ignoreCommentsFlag;         /* Scanner ignores comments     */\n    bool scanNumbersFlag;            /* Scanner parses numbers       */\n    bool scanStringsFlag;            /* Scanner parses strings       */\n    std::string wordChars;           /* Additional word characters   */\n    StringCell* savedTokens;         /* Stack of saved tokens        */\n    StringCell* operators;           /* List of multichar operators  */\n\n    /* Private method prototypes */\n    void initScanner();\n    bool isOperator(const std::string& op);\n    bool isOperatorPrefix(const std::string& op);\n    std::string scanNumber();\n    std::string scanString();\n    std::string scanWord();\n    void skipSpaces();\n\n    friend std::ostream& operator <<(std::ostream& out, const TokenScanner& scanner);\n};\n\n/**\n * Prints the token scanner to the given output stream.\n */\nstd::ostream& operator <<(std::ostream& out, const TokenScanner& scanner);\n\n#endif // _tokenscanner_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/io/urlstream.h",
    "content": "/*\n * File: urlstream.h\n * -----------------\n * This file exports the <code>iurlstream</code> class, which\n * implements an input stream for reading data from URLs.\n * It is implemented as a thin wrapper around a standard C++ stringstream.\n * The implementation downloads the URL's data into a memory buffer, then\n * exposes that memory buffer for reading.\n * \n * @author Marty Stepp\n * @version 2018/10/02\n * - added close() method for backward compatibility (does nothing)\n * @version 2018/09/18\n * - refactored to integrate with pure-C++ GDownloader implementation\n * - added getErrorMessage method\n * @version 2018/06/20\n * - support for setting headers such as user agent\n * - https URL support\n * - changed string to const string&\n * @version 2014/10/08\n * - initial version\n * @since 2014/10/08\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _urlstream_h\n#define _urlstream_h\n\n#include <fstream>\n#include <iostream>\n#include <sstream>\n#include <string>\n\n#define INTERNAL_INCLUDE 1\n#include \"map.h\"\n#undef INTERNAL_INCLUDE\n\n/**\n * An <code>iurlstream</code> is an input stream for reading data from URLs.\n * It is implemented as a thin wrapper around a standard C++ stringstream.\n * The data from the given URL is downloaded into a memory buffer, from which\n * you can read it as you would any other input stream.\n */\nclass iurlstream : public std::stringstream {\npublic:\n    /**\n     * Initializes a new iurlstream that is not attached to any source.\n     * Use this constructor if you want to set various properties of the URL\n     * connection (such as user agent or other headers) before downloading.\n     */\n    iurlstream();\n\n    /**\n     * Initializes a new iurlstream that is attached to the given source URL.\n     * The data from that URL is downloaded immediately.\n     */\n    iurlstream(const std::string& url);\n\n    /**\n     * Closes the stream.\n     * This function actually does nothing and is left in only for legacy\n     * compatibility purposes.  You do not need to call it.\n     */\n    void close();\n\n    /**\n     * Returns the most recent error code received, if any.\n     * Returns 0 if no error codes have been issued.\n     */\n    int getErrorCode() const;\n\n    /**\n     * Returns a message about the most recent error, if any.\n     * Returns \"\" if no errors have occurred.\n     */\n    std::string getErrorMessage() const;\n\n    /**\n     * Returns the most recent HTTP status code, which may be a successful\n     * code (e.g. 200) or an error (e.g 404). If there is no HTTP status\n     * code to return, returns 0.\n     */\n    int getHttpStatusCode() const;\n\n    /**\n     * Returns the value of the given HTTP header for this URL request.\n     * If the given header is not defined, returns an empty string.\n     */\n    std::string getHeader(const std::string& name) const;\n\n    /**\n     * Returns the URL sent to the stream's constructor or to the last call\n     * to open(...).\n     */\n    std::string getUrl() const;\n\n    /**\n     * Returns the value of the HTTP \"User-Agent\" header for this URL request,\n     * or an empty string if the user agent has not been set.\n     */\n    std::string getUserAgent() const;\n\n    /**\n     * Opens the given URL for reading.\n     * If no URL is passed, uses the URL passed to the constructor.\n     */\n    void open(const std::string& url = \"\");\n\n    /**\n     * Sets the value of the given HTTP header for this URL request.\n     * Must be called before open(), and the stream must have been created\n     * with the parameterless constructor.\n     *\n     * @example stream.setHeader(\"Referer\", \"http://cs106b.stanford.edu/\");\n     */\n    void setHeader(const std::string& name, const std::string& value);\n\n    /**\n     * Sets the value of the HTTP \"User-Agent\" header for this URL request.\n     * Must be called before open(), and the stream must have been created\n     * with the parameterless constructor.\n     * Equivalent to calling setHeader with \"User-Agent\" as the header's name.\n     *\n     * @example stream.setUserAgent(\"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2\");\n     */\n    void setUserAgent(const std::string& userAgent);\n\nprivate:\n    std::string _url;                         // URL to be opened\n    int _httpStatusCode;                      // most recent HTTP error seen, if any (initially 0)\n    Map<std::string, std::string> _headers;   // HTTP headers to send (name => value)\n    std::string _errorMessage;                // error message of what went wrong, if anything\n};\n\n/**\n * Constants for HTTP return codes.\n * @private\n */\ntypedef enum {\n    // client side errors\n    ERRHOST = -1,    // no such host\n    ERRSOCK = -2,    // can't create socket\n    ERRCONN = -3,    // can't connect to host\n    ERRWRHD = -4,    // write error on socket while writing header\n    ERRWRDT = -5,    // write error on socket while writing data\n    ERRRDHD = -6,    // read error on socket while reading result\n    ERRPAHD = -7,    // invalid answer from data server\n    ERRNULL = -8,    // null data pointer\n    ERRNOLG = -9,    // no/bad length in header\n    ERRMEM  = -10,   // can't allocate memory\n    ERRRDDT = -11,   // read error while reading data\n    ERRURLH = -12,   // invalid url - must start with 'http://'\n    ERRURLP = -13,   // invalid port in url\n    \n    ERR_MALFORMED_URL = -42,\n    ERR_IO_EXCEPTION = -43,\n\n\n    // return code by the server\n    ERR400 = 400,   // invalid query\n    ERR403 = 403,   // forbidden\n    ERR408 = 408,   // request timeout\n    ERR500 = 500,   // server error\n    ERR501 = 501,   // not implemented\n    ERR503 = 503,   // service overloaded\n\n    // successful results\n    OK0 = 0,     // successful parse\n    OK201 = 201, // resource succesfully created\n    OK200 = 200  // resource succesfully read\n\n} http_retcode;\n\n#endif // _urlstream_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/io/xmlutils.h",
    "content": "/*\n * File: xmlutils.h\n * ----------------\n * This file contains declarations of utility functions related to processing\n * and extracting information from XML documents.\n * It is a thin wrapper around the third-party RapidXML library (rapidxml*.{h,cpp})\n * so that we don't have to use or remember its unusual templatey syntax.\n * \n * @author Marty Stepp\n * @version 2014/10/14\n * @since 2014/03/01\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _xmlutils_h\n#define _xmlutils_h\n\n#include <string>\n\n#define INTERNAL_INCLUDE 1\n#include \"rapidxml.h\"\n#define INTERNAL_INCLUDE 1\n#include \"vector.h\"\n#undef INTERNAL_INCLUDE\n\n/**\n * @private\n */\nnamespace xmlutils {\n    int getAttributeInt(rapidxml::xml_node<>* node, const std::string& attrName, int defaultValue = 0);\n    bool getAttributeBool(rapidxml::xml_node<>* node, const std::string& attrName, bool defaultValue = false);\n    std::string getAttribute(rapidxml::xml_node<>* node, const std::string& attrName, const std::string& defaultValue = \"\");\n    Vector<rapidxml::xml_node<>*> getChildNodes(rapidxml::xml_node<>* node, const std::string& nodeName = \"*\");\n    bool hasAttribute(rapidxml::xml_node<>* node, const std::string& attrName);\n    rapidxml::xml_node<>* openXmlDocument(const std::string& filename, const std::string& documentNode = \"*\");\n} // namespace xmlutils\n\n#endif // _xmlutils_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/private/consolestreambuf.h",
    "content": "/*\n * File: consolestreambuf.h\n * --------------------------\n * This file defines the <code>ConsoleStreambuf</code> class, which\n * represents a stream buffer that reads/writes to the Stanford graphical console\n * using a process pipe to a Java back-end process.\n *\n * @version 2016/10/04\n * - initial version\n */\n\n#ifndef _consolestreambuf_h\n#define _consolestreambuf_h\n\n#include <iostream>\n#include <streambuf>\n\nnamespace stanfordcpplib {\n\nclass ConsoleStreambuf : public std::streambuf {\nprotected:\n    /* Constants */\n    static const int BUFFER_SIZE = 4096;\n\n    /* Instance variables */\n    char inBuffer[BUFFER_SIZE];\n    char outBuffer[BUFFER_SIZE];\n    int blocked;\n\n    // to be overridden in subclasses\n    virtual void myEndLineConsole(bool isStderr) = 0;\n\n    virtual std::string myGetLineConsole() = 0;\n\n    virtual void myPutConsole(const std::string& str, bool isStderr) = 0;\n\npublic:\n    ConsoleStreambuf() {\n        setg(inBuffer, inBuffer, inBuffer);\n        setp(outBuffer, outBuffer + BUFFER_SIZE);\n        blocked = 0;\n    }\n\n    ~ConsoleStreambuf() {\n        /* Empty */\n    }\n\n    virtual bool isBlocked() {\n        return blocked > 0;\n    }\n\n    virtual int overflow(int ch = EOF) {\n        return overflow(ch, /* isStderr */ false);\n    }\n\n    virtual int overflow(int ch, bool isStderr) {\n        std::string line = \"\";\n        for (char *cp = pbase(); cp < pptr(); cp++) {\n            if (*cp == '\\n') {\n                myPutConsole(line, isStderr);\n                myEndLineConsole(isStderr);\n                line = \"\";\n            } else {\n                line += *cp;\n            }\n        }\n        if (line != \"\") {\n            myPutConsole(line, isStderr);\n        }\n        setp(outBuffer, outBuffer + BUFFER_SIZE);\n        if (ch != EOF) {\n            outBuffer[0] = ch;\n            pbump(1);\n        }\n        return ch != EOF;\n    }\n\n    virtual int sync() {\n        return overflow();\n    }\n\n    virtual int sync(bool isStderr) {\n        return overflow(EOF, isStderr);\n    }\n\n    virtual int underflow() {\n        // Allow long strings at some point\n        blocked++;\n        std::string line = myGetLineConsole();\n        blocked--;\n\n        bool eof = std::cin.eof();\n        fflush(stdout);\n\n        if (eof) {\n            return EOF;\n        }\n\n        int n = line.length();\n        if (n + 1 >= BUFFER_SIZE) {\n            error(\"ConsoleStreambuf::underflow: String too long\");\n        }\n        for (int i = 0; i < n; i++) {\n            inBuffer[i] = line[i];\n        }\n        inBuffer[n++] = '\\n';\n        inBuffer[n] = '\\0';\n        setg(inBuffer, inBuffer, inBuffer + n);\n        return inBuffer[0];\n    }\n};\n\nnamespace qtgui {\n\nextern void endLineConsoleQt(bool isStderr);\nextern std::string getLineConsoleQt();\nextern void putConsoleQt(const std::string& str, bool isStderr);\n\n/*\n * The following class is an exact copy of the ConsoleStreambuf class above,\n * except using different Qt-related functions for output.\n */\nclass ConsoleStreambufQt : public ::stanfordcpplib::ConsoleStreambuf {\npublic:\n    ConsoleStreambufQt(bool isStderr = false)\n            : ConsoleStreambuf(),\n              _isStderr(isStderr) {\n        // empty\n    }\n\n    ~ConsoleStreambufQt() {\n        /* Empty */\n    }\n\nprotected:\n    virtual void myEndLineConsole(bool /* isStderr */) {\n        endLineConsoleQt(_isStderr);\n    }\n\n    virtual std::string myGetLineConsole() {\n        return getLineConsoleQt();\n    }\n\n    virtual void myPutConsole(const std::string& str, bool /* isStderr */) {\n        return putConsoleQt(str, _isStderr);\n    }\n\nprivate:\n    bool _isStderr;\n};\n\n} // namespace qtgui\n\n} // namespace stanfordcpplib\n\n#endif // _consolestreambuf_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/private/echoinputstreambuf.h",
    "content": "/*\n * File: echoinputstreambuf.h\n * --------------------------\n * This file defines the <code>EchoInputStreambuf</code> class, which\n * represents a stream buffer that echoes to stdout any user input.\n * We mostly use this to display console input when redirecting in from a file.\n *\n * @version 2016/10/30\n * - added constructor that takes a string of input\n * @version 2016/10/04\n * - initial version\n */\n\n#ifndef _echoinputstreambuf_h\n#define _echoinputstreambuf_h\n\n#include <iostream>\n#include <sstream>\n#include <streambuf>\n\nnamespace stanfordcpplib {\n\n/*\n * An input stream buffer that echoes characters as they are read.\n * Used to echo cin console input for capturing for test case diffing\n * when fixed input has been fed to cin by autograders.\n *\n * inspired by: http://gabisoft.free.fr/articles/fltrsbf1.html\n */\nclass EchoInputStreambuf : public std::streambuf {\npublic:\n    EchoInputStreambuf(std::streambuf* source) : m_source(source), m_buffer('\\0') {\n        // empty\n    }\n\n    EchoInputStreambuf(const std::string& input) : m_buffer('\\0') {\n        std::istringstream* istream = new std::istringstream(input);\n        m_source = istream->rdbuf();\n    }\n\n    virtual ~EchoInputStreambuf() {\n        sync();\n    }\n\n    virtual int overflow(int) {\n        return EOF;\n    }\n\n    /*\n     * This is the crucial function; called to read a character from the\n     * underlying stream buffer (cin).  We capture it in a one-char m_buffer\n     * so we can return it later.\n     */\n    virtual int underflow() {\n        int result(EOF);\n        if (gptr() < egptr()) {\n            result = *gptr();\n        } else {\n            result = m_source->sbumpc();\n            if (result != EOF) {\n                m_buffer = result;\n                setg(&m_buffer, &m_buffer, &m_buffer + 1);\n\n                // echo the character to stdout\n                std::cout.put(result);\n                std::cout.flush();\n            }\n        }\n        return result;\n    }\n\n    virtual int sync() {\n        int result(0);\n        if (gptr() < egptr()) {\n            result = m_source->sputbackc(*gptr());\n            setg(nullptr, nullptr, nullptr);\n        }\n        if (m_source->pubsync() == EOF) {\n            result = EOF;\n        }\n        return result;\n    }\n\n    virtual std::streambuf* setbuf(char* p, std::streamsize len) {\n        return m_source->pubsetbuf(p, len);\n    }\n\nprivate:\n    std::streambuf* m_source;\n    char m_buffer;\n};\n\n} // namespace stanfordcpplib\n\n#endif // _echoinputstreambuf_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/private/foreachpatch.h",
    "content": "/*\n * File: foreachpatch.h\n * --------------------\n * This file defines an internal-use-only special version of\n * the <code>foreach</code> keyword, which implements\n * a substitute for the range-based <code>for</code> loop from C++11.\n * All iterable classes in the Stanford libraries import this file, so\n * clients don't ordinarily need to do so explicitly.  This version of\n * <code>foreach</code> also supports C++ strings and arrays.\n *\n * The main difference between this file and foreach.h in the non-private\n * directory is that this file exports __foreach__ and __in__ rather than\n * foreach and in, which keeps the global namespace cleaner and allows the\n * student to use 'in' as a variable name without confusing errors.\n * It also helps avoid forcing the foreach and in macros to be defined in\n * every student program by their inclusion within Stanford C++ lib headers.\n * With the C++11 range-based for loop, foreach/in are no longer needed.\n * \n * @version 2014/10/08\n * - removed 'using namespace' statement\n */\n\n#ifndef _foreachpatch_h\n#define _foreachpatch_h\n\n/*\n * Statement: foreach\n * Usage: foreach (type var in collection) { ... }\n * -----------------------------------------------\n * The <code>foreach</code> statement steps through the elements in\n * a collection.  It works correctly with the collection classes in\n * both the Standard Template Library and the Stanford C++ libraries,\n * but can also be used with C++ strings and statically initialized\n * arrays.\n *\n * <p>The following code, for example, prints every element in the\n * string vector <code>lines</code>:\n *\n *<pre>\n *    foreach (string str in lines) {\n *       cout &lt;&lt; str &lt;&lt; endl;\n *    }\n *</pre>\n *\n * Similarly, the following function calculates the sum of the character\n * codes in a string:\n *\n *<pre>\n *    int sumCharacterCodes(string str) {\n *       int sum = 0;\n *       foreach (char ch in str) sum += ch;\n *       return sum;\n *    }\n *</pre>\n *\n * As a simplification when iterating over maps, the <code>foreach</code>\n * macro iterates through the keys rather than the key/value pairs.\n */\n\n/* Private section */\n\n/**********************************************************************/\n/* Note: Everything below this point in the file is logically part    */\n/* of the implementation and should not be of interest to clients.    */\n/**********************************************************************/\n\n#include <iterator>\n#include <map>\n#include <cstddef>\n#include <cstring>\n\n/* These #includes are for files that contain \"in\" as a token */\n\n#include <ios>\n#include <fstream>\n#include <sstream>\n// using namespace std;\n\n/* Redefine the ios constants (one of which is \"in\") */\n\nstatic const std::ios::openmode __IOS_APP__    = std::ios::app;\nstatic const std::ios::openmode __IOS_ATE__    = std::ios::ate;\nstatic const std::ios::openmode __IOS_BINARY__ = std::ios::binary;\n#ifdef _foreach_h\n//extern const std::ios::openmode IOS_IN;\n//static const std::ios::openmode __IOS_IN__     = IOS_IN;\nstatic const std::ios::openmode __IOS_IN__     = std::ios::in;\n#else\nstatic const std::ios::openmode __IOS_IN__     = std::ios::in;\n#endif\nstatic const std::ios::openmode __IOS_OUT__    = std::ios::out;\nstatic const std::ios::openmode __IOS_TRUNC__  = std::ios::trunc;\n\n/* Private implementation namespace */\n\nnamespace _fepatch {\nstruct Range {\n    virtual ~Range() { }\n};\n\ntemplate <typename T>\nstruct ArrayRange : Range {\n    ArrayRange(const T *begin, const T *end) : iter(begin), end(end) { }\n    const T *iter;\n    const T *end;\n};\n\ntemplate <typename CType>\nstruct CRange : Range {\n    CRange(const CType& c) :\n        cont(c), iter(cont.begin()), end(cont.end()) { }\n    CType cont;\n    typename CType::iterator iter, end;\n};\n\ntemplate <typename KT, typename VT, typename CT, typename AT>\nstruct MapRange : Range {\n    MapRange(const std::map<KT,VT,CT,AT> & c) :\n        cont(c), iter(cont.begin()), end(cont.end()) { }\n    std::map<KT,VT,CT,AT> cont;\n    typename std::map<KT,VT,CT,AT>::iterator iter, end;\n};\n\n/*\n * The State struct glues together all of these pieces and\n * stores all of the information throughout the loops.\n */\n\nstruct State {\n    State() : state(0), itr(nullptr) { }\n    ~State() { delete itr; }\n    int state;\n    Range *itr;\n};\n\n/* General hook function */\n\ntemplate <typename DowncastType, typename ValueType>\nValueType HookImpl(State& fe) {\n    DowncastType *ip = (DowncastType *) fe.itr;\n    if (ip->iter == ip->end) {\n        fe.state = 2;\n        return ValueType();\n    }\n    fe.state = 1;\n    ValueType vp = *ip->iter;     /* Subtle implementation note:    */\n    ++ip->iter;                   /* Using *ip->iter++ here would   */\n    return vp;                    /* require copying the iterator.  */\n}\n\n/* Foreach implementation for containers */\n\ntemplate <typename CType>\nCRange<CType> *Init(State & fe, const CType & collection) {\n    fe.itr = new CRange<CType>(collection);\n    return (CRange<CType>*) fe.itr;\n}\n\ntemplate <typename CType>\ntypename std::iterator_traits<typename CType::iterator>::value_type\nHook(State & fe, CRange<CType> *) {\n    return HookImpl<CRange<CType>,\n            typename std::iterator_traits<typename CType::iterator>::value_type>(fe);\n}\n\n/* For maps */\n\ntemplate <typename K, typename V, typename C, typename A>\nMapRange<K,V,C,A> *Init(State & fe, const std::map<K,V,C,A> & collection) {\n    fe.itr = new MapRange<K,V,C,A>(collection);\n    return (MapRange<K,V,C,A>*) fe.itr;\n}\n\ntemplate <typename DowncastType, typename ValueType>\nValueType MapHookImpl(State & fe) {\n    DowncastType *ip = (DowncastType *) fe.itr;\n    if (ip->iter == ip->end) {\n        fe.state = 2;\n        return ValueType();\n    }\n    fe.state = 1;\n    ValueType key = ip->iter->first;\n    ++ip->iter;\n    return key;\n}\n\ntemplate <typename K, typename V, typename C, typename A>\nK Hook(State & fe, MapRange<K,V,C,A> *) {\n    return MapHookImpl<MapRange<K,V,C,A>,K>(fe);\n}\n\n/* For C strings */\n\ntemplate <size_t n>\nArrayRange<char> *Init(State & fe, char (&str)[n]) {\n    fe.itr = new ArrayRange<char>(str, str + strlen(str));\n    return (ArrayRange<char>*) fe.itr;\n}\n\ntemplate <size_t n>\nArrayRange<char> *Init(State & fe, const char (&str)[n]) {\n    fe.itr = new ArrayRange<char>(str, str + strlen(str));\n    return (ArrayRange<char>*) fe.itr;\n}\n\n/* For arrays */\n\ntemplate <typename T, size_t n>\nArrayRange<T> *Init(State & fe, T (&arr)[n]) {\n    fe.itr = new ArrayRange<T>(arr, arr + n);\n    return (ArrayRange<T>*) fe.itr;\n}\n\ntemplate <typename T, size_t n>\nArrayRange<T> *Init(State & fe, const T (&arr)[n]) {\n    fe.itr = new ArrayRange<T>(arr, arr + n);\n    return (ArrayRange<T>*) fe.itr;\n}\n\ntemplate <typename T>\nT Hook(State& fe, ArrayRange<T>*) {\n    return HookImpl<ArrayRange<T>, T>(fe);\n}\n\n}\n\n/*\n * mirror macros '__foreach__' and '__in__' to be used internally\n * (words 'foreach' and 'in' are sacred cows to some C++ IDEs;\n *  let's not clobber them in the global name space if we don't have to)\n */\n#define __foreach__(arg) \\\n    for (_fepatch::State _fes; _fes.state < 2; ) \\\n    for (arg)); _fes.state++ == 1; _fes.state = 0)\n\n#define __in__ = _fepatch::Hook(_fes, _fes.state != 0 ? nullptr : _fepatch::Init(_fes,\n\n#endif\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/private/forwardingstreambuf.h",
    "content": "/*\n * File: forwardingstreambuf.h\n * ---------------------------\n * This file defines the <code>ForwardingStreambuf</code> class, which\n * represents a stream buffer that just wraps another stream buffer.\n * We mostly use this to merge cout and cerr into a single output target.\n *\n * @version 2016/10/04\n * - initial version\n */\n\n#ifndef _forwardingstreambuf_h\n#define _forwardingstreambuf_h\n\n#include <ios>\n#include <iostream>\n#include <locale>\n#include <streambuf>\n\n#define INTERNAL_INCLUDE 1\n#include \"private/consolestreambuf.h\"\n#undef INTERNAL_INCLUDE\n\nnamespace stanfordcpplib {\n/*\n * A stream buffer that just \"wraps\" another stream buffer.\n * This is used here to distinguish cout (black text) from cerr (red text).\n */\nclass ForwardingStreambuf : public std::streambuf {\nprivate:\n    ConsoleStreambuf& delegate;\n    bool isStderr;\n\npublic:\n    ForwardingStreambuf(ConsoleStreambuf& del, bool err = false)\n            : delegate(del), isStderr(err) {\n        // empty\n    }\n\n    virtual bool isBlocked() {\n        return delegate.isBlocked();\n    }\n\n    virtual int overflow(int ch = EOF) {\n        return delegate.overflow(ch, isStderr);\n    }\n\n    virtual int overflow(int ch, bool isStderr) {\n        return delegate.overflow(ch, isStderr);\n    }\n\n    virtual int sync() {\n        return delegate.sync(isStderr);\n    }\n\n    virtual int sync(bool isStderr) {\n        return delegate.sync(isStderr);\n    }\n\n    virtual int underflow() {\n        return delegate.underflow();\n    }\n\n    // functions below are overridden for completeness,\n    // but all just delegate to underlying ConsoleStreambuf\n    virtual std::streamsize in_avail() {\n        return delegate.in_avail();\n    }\n\n    virtual int snextc() {\n        return delegate.snextc();\n    }\n\n    virtual int sbumpc() {\n        return delegate.sbumpc();\n    }\n\n    virtual int sgetc() {\n        return delegate.sgetc();\n    }\n\n    virtual std::streamsize sgetn(char* s, std::streamsize n) {\n        return delegate.sgetn(s, n);\n    }\n\n    virtual int sputbackc(char c) {\n        return delegate.sputbackc(c);\n    }\n\n    virtual int sungetc() {\n        return delegate.sungetc();\n    }\n\n    virtual int sputc(char c) {\n        return delegate.sputc(c);\n    }\n\n    virtual std::streamsize sputn(const char* s, std::streamsize n) {\n        return delegate.sputn(s, n);\n    }\n\n    virtual std::locale pubimbue(const std::locale& loc) {\n        return delegate.pubimbue(loc);\n    }\n\n    virtual std::locale getloc() const {\n        return delegate.getloc();\n    }\n\n    virtual std::streambuf* pubsetbuf(char* s, std::streamsize n) {\n        return delegate.pubsetbuf(s, n);\n    }\n\n    virtual std::streampos pubseekoff(std::streamoff off, std::ios_base::seekdir way,\n                          std::ios_base::openmode which = std::ios_base::in | std::ios_base::out) {\n        return delegate.pubseekoff(off, way, which);\n    }\n\n    virtual std::streampos pubseekpos(std::streampos pos, std::ios_base::openmode which = std::ios_base::in | std::ios_base::out) {\n        return delegate.pubseekpos(pos, which);\n    }\n\n    virtual int pubsync() {\n        return delegate.pubsync();\n    }\n};\n} // namespace stanfordcpplib\n\n#endif // _forwardingstreambuf_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/private/headless.h",
    "content": "/*\n * File: headless.h\n * ----------------\n * This file contains some code for running in \"headless\" mode with no GUI.\n *\n * @version 2018/11/22\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef _headless_h\n#define _headless_h\n\n#ifdef SPL_HEADLESS_MODE\n\n// make up a Qt version\n#define QT_VERSION 5110\n\n// make Qt version macro produce a version less than this\n#define QT_VERSION_CHECK(a, b, c) 5090\n\n#endif // SPL_HEADLESS_MODE\n\n#endif // _headless_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/private/init.h",
    "content": "/*\n * File: init.h\n * ------------\n * This file contains code to check whether the Stanford C++ library has been\n * initialized, and if not, to initialize it.\n * This file must be included by every student-facing header in the Stanford\n * C++ library to make sure that the library is initialized before it is used.\n *\n * There used to be a group of files such as private/main.h, main.cpp, and\n * startup.cpp that contained various initialization code.  These were removed\n * and replaced with this style of initialization for the following reasons:\n *\n * - simplicity/consolidation\n * - allow student to NOT include console.h and use plain text console\n *\n * @version 2018/08/28\n * - refactor to use stanfordcpplib namespace and init.cpp\n * @version 2018/07/03\n * - add code to handle Qt GUI library initialization\n * @version 2017/04/25\n * - wrap library initializer in an #ifndef to avoid multiple declaration\n *\n * TODO: figure out how to support both 0-arg and 2-arg main()\n */\n\n#ifndef _init_h\n#define _init_h\n\n#include <cstdlib>\n#include <functional>\n#include <stdio.h>\n\nnamespace stanfordcpplib {\n\n/**\n * Returns true if the std::exit function is enabled.\n * This will be true unless disabled by, say, an autograder.\n */\nbool exitEnabled();\n\n/**\n * Initializes the Stanford C++ library.\n * A call to this function is inserted before the student's main() runs.\n * This should be run from the Qt GUI (main) thread.\n */\nvoid initializeLibrary(int argc, char** argv);\n\n/**\n * This is for any initialization that needs to be done in the student's thread\n * rather than on the Qt GUI main thread.\n * Currently this is used primarily to set up exception handlers for the\n * student's thread so we can print usable stack traces.\n */\nvoid initializeLibraryStudentThread();\n\n/**\n * Runs the student's main function in its own thread, creating that thread\n * as an object of type GThread.\n */\nvoid runMainInThread(int (* mainFunc)(void));\n\n/**\n * Runs the student's main function in its own thread, creating that thread\n * as an object of type GThread.\n */\nvoid runMainInThread(std::function<int()> mainFunc);\n\n/**\n * Runs the student's main function in its own thread, creating that thread\n * as an object of type GThread.\n */\nvoid runMainInThreadVoid(void (* mainFuncVoid)(void));\n\n/**\n * Runs the student's main function in its own thread, creating that thread\n * as an object of type GThread.\n */\nvoid runMainInThreadVoid(std::function<void()> mainFuncVoid);\n\n/**\n * Sets whether the std::exit function will be enabled or not.\n * If disabled, an error() will be thrown if student tries to exit().\n */\nvoid setExitEnabled(bool enabled);\n\n/**\n * Shuts down the Stanford C++ library.\n * A call to this function is inserted after the student's main().\n */\nvoid shutdownLibrary();\n\n/**\n * Performs any initialization needed by the library during static-init phase,\n * which occurs before main() is launched.\n * The StanfordCppLibraryInitializer class below helps us do this properly.\n */\nvoid staticInitializeLibrary();\n\n#ifndef StanfordCppLibraryInitializer_created\n#define StanfordCppLibraryInitializer_created\nclass StanfordCppLibraryInitializer {\npublic:\n    /*\n     * Code to initialize the library.\n     * Implemented as a class constructor so that it will run before the\n     * student's main function.\n     * Here we put anything that we need to initialize during the static\n     * phase before main() runs.\n     * Presently there is nothing that requires such initialization,\n     * so this is blank.\n     */\n    StanfordCppLibraryInitializer() {\n        staticInitializeLibrary();\n    }\n};\nstatic StanfordCppLibraryInitializer __stanfordcpplib_init;\n#endif // __StanfordCppLibraryInitializer_created\n\n} // namespace stanfordcpplib\n\n// bypass std::exit function\nnamespace std {\nvoid __stanfordcpplib__exitLibrary(int status);\n} // namespace std\n\n#define STD_EXIT __std_exit_function_\n#define exit __stanfordcpplib__exitLibrary\n\n#ifdef SPL_HEADLESS_MODE\n#include \"headless.h\"\n#endif // SPL_HEADLESS_MODE\n\n#ifdef SPL_OVERLOAD_PROBLEMATIC_POINTER_ARITHMETIC\n#include \"pointers.h\"\n#endif // SPL_OVERLOAD_PROBLEMATIC_POINTER_ARITHMETIC\n\n#endif // _init_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/private/initstudent.h",
    "content": "/*\n * File: initstudent.h\n * -------------------\n * This file helps initialize the Stanford C++ library if necessary.\n * The library needs an explicit initialization step if either or both\n * of the following are true:\n *\n * - The student #includes console.h to use the graphical console.\n * - The student uses any of the graphical classes based on Qt.\n *\n * We initialize the library by inserting a main function that wraps around\n * the student's main (renaming theirs to qMain).\n *\n * @version 2018/10/18\n * - added multi-main support macros\n * @version 2018/09/25\n * - initial version\n */\n\n#include \"multimain.h\"\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/private/limitoutputstreambuf.h",
    "content": "/*\n * File: limitoutputstreambuf.h\n * ----------------------------\n * This file defines the <code>LimitOutputStreambuf</code> class, which\n * represents a stream buffer that counts how much output has been produced\n * and throws an exception if a given maximum is exceeded.\n * We mostly use this in grading programs to halt runaway student code.\n *\n * @version 2016/10/04\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _limitoutputstreambuf_h\n#define _limitoutputstreambuf_h\n\n#include <exception>\n#include <iostream>\n#include <streambuf>\n\nnamespace stanfordcpplib {\n\n/*\n * An output stream buffer that counts the number of characters written to it.\n * Used to limit cout console output by autograders for naughty students who\n * print too much output.\n *\n * inspired by: http://gabisoft.free.fr/articles/fltrsbf1.html\n */\nclass LimitOutputStreambuf : public std::streambuf {\npublic:\n    LimitOutputStreambuf(std::streambuf* source, int max) : m_source(source), m_count(0), m_max(max) {\n        // empty\n    }\n\n    virtual ~LimitOutputStreambuf() {\n        sync();\n    }\n\n    /*\n     * This is the crucial function; called to write a character to the\n     * underlying stream buffer (cout).  We count them so we can throw\n     * an error if too many are printed.\n     */\n    virtual int overflow(int ch) {\n        if (m_count >= 0) {\n            m_count++;\n            if (m_count > m_max) {\n                m_count = -1;   // disable checking on further calls so I can print again\n                std::ostringstream os;\n                os << std::endl;\n                os << \"*** ERROR: Excessive output produced! (over \" << m_max << \" chars)\" << std::endl;\n                os << \"***        Halting program.\" << std::endl;\n                std::string str = os.str();\n                m_source->sputn(str.c_str(), (int) str.length());\n                throw std::exception();\n            }\n        }\n\n        return m_source->sputc(ch);\n    }\n\n    virtual int underflow() {\n        return EOF;\n    }\n\n    virtual int sync() {\n        return m_source->pubsync();\n    }\n\n    virtual std::streambuf* setbuf(char* p, std::streamsize len) {\n        return m_source->pubsetbuf(p, len);\n    }\n\nprivate:\n    std::streambuf* m_source;\n    int m_count;\n    int m_max;\n};\n\n} // namespace stanfordcpplib\n\n#endif // _limitoutputstreambuf_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/private/multimain.h",
    "content": "/*\n * File: multimain.h\n * -----------------\n * ...\n *\n * @version 2018/10/18\n * - initial version\n */\n\n#ifndef _multimain_h\n#define _multimain_h\n\n#include <string>\n\nnamespace stanfordcpplib {\n\n/**\n * Adds a new main() function with the given name to the list of multi-mains\n * that will be presented when the program runs.\n */\nint registerMainFunction(const std::string& name, int (*mainFunc)());\nint selectMainFunction();\n\n/**\n * A class for registering a main function at static initialization time,\n * before the real main() runs.\n */\nclass MultiMainRegisterStaticInitializer {\npublic:\n    MultiMainRegisterStaticInitializer(const std::string& name, int (* mainFunc)(), bool graphical = false);\n};\n\n} // namespace stanfordcpplib\n\n#endif // _multimain_h\n\n\n// only define initstudent if needed by SPL QT GUI or graphical console\n//#if defined(SPL_QT_GUI_IN_USE) || defined(SPL_GRAPHICAL_CONSOLE_IN_USE)\n#ifndef QT_NEEDS_QMAIN\n#ifdef SPL_REPLACE_MAIN_FUNCTION\n\n#ifndef main\n#define main qMain\n#endif // main\n\n#endif // SPL_REPLACE_MAIN_FUNCTION\n#endif // QT_NEEDS_QMAIN\n\n// replace \"multimain(foo)\" definition with:\n//   1) prototype of multimain_foo()\n//   2) call to MainRegisterStaticInitializer that maps \"foo\" to multimain_foo function\n//   3) definition of multimain_foo()\n#undef multimain\n#if defined(SPL_QT_GUI_IN_USE)\n#define multimain(name) \\\n    main_##name (); \\\n    static ::stanfordcpplib::MultiMainRegisterStaticInitializer _main_init_##name ((#name), main_##name, true); \\\nint main_##name ()\n#else\n#define multimain(name) \\\n    main_##name (); \\\n    static ::stanfordcpplib::MultiMainRegisterStaticInitializer _main_init_##name ((#name), main_##name); \\\nint main_##name ()\n#endif // defined(SPL_QT_GUI_IN_USE)\n\n//#endif // defined(SPL_QT_GUI_IN_USE) || defined(SPL_GRAPHICAL_CONSOLE_IN_USE)\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/private/precompiled.h",
    "content": "#include <algorithm>\n#include <cctype>\n#include <climits>\n#include <cmath>\n#include <csignal>\n#include <cstddef>\n#include <cstdio>\n#include <cstdlib>\n#include <cstring>\n#include <deque>\n#include <exception>\n#include <fstream>\n#include <initializer_list>\n#include <iostream>\n#include <iomanip>\n#include <iterator>\n#include <limits>\n#include <map>\n#include <queue>\n#include <set>\n#include <sstream>\n#include <stack>\n#include <streambuf>\n#include <string>\n#include <utility>\n#include <vector>\n#include \"filelib.h\"\n#include \"map.h\"\n#include \"strlib.h\"\n#include \"vector.h\"\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/private/randompatch.h",
    "content": "/*\n * File: private/randompatch.h\n * ---------------------------\n * This file patches the implementation of the random number library\n * to avoid some serious bugs in standard implementations of rand,\n * particularly on Mac OS X.  It also includes a hack to set the\n * seed from the RANDOM_SEED environment variable, which makes it\n * possible to produce repeatable figures.\n */\n\n/*\n * Implementation notes: rand, srand\n * ---------------------------------\n * To ensure that this package works the same way on all platforms,\n * this file completely reimplements the rand and srand methods.  The\n * algorithm is a conventional linear congruential generator with the\n * parameters used in GNU's gclib.  RAND_MAX for this implementation\n * is 2147483647 (2^31 - 1).\n */\n\n#define MULTIPLIER 1103515245\n#define OFFSET 12345\n\nstatic int _seed = 1;\n\n#undef rand\n#define rand() ((_seed = MULTIPLIER * _seed + OFFSET) & 0x7FFFFFFF)\n\n#undef srand\n#define srand(seed) (_seed = int(seed), _seed = (_seed <= 0) ? 1 : _seed)\n\n#undef RAND_MAX\n#define RAND_MAX 2147483647\n\n/*\n * Implementation notes: Windows patch\n * -----------------------------------\n * On some versions of Windows, the time function is too coarse to use\n * as a random seed.  On those versions, this definition substitutes the\n * GetTickCount function.\n */\n\n#if defined (_MSC_VER) && (_MSC_VER >= 1200)\n#  include <windows.h>\n#  define time(dummy) (GetTickCount())\n#endif\n\n#ifdef __APPLE__\n\n#  include <cstdlib>\n\n   static time_t patchedTime(time_t *) {\n      char *str = getenv(\"RANDOM_SEED\");\n      if (!str) {\n         return time(nullptr);\n      } else {\n         return atoi(str);\n      }\n   }\n\n#  define time(dummy) patchedTime(dummy)\n\n#endif\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/private/static.h",
    "content": "/*\n * File: static.h\n * --------------\n * This file provides several macros for declaring static variables and functions\n * in ways that are safe for usage during the C++ static initiialization phase.\n * These macros should be used to declare all not-inside-function static data\n * used by the library, since a lot of library code runs during the\n * static initialization phase.\n *\n * @version 2017/10/05\n * - added STATIC_VARIABLE_NAMESPACE\n */\n\n#ifndef _static_h\n#define _static_h\n\n// macros for concatenating two macros\n#ifndef CONCAT_IMPL\n#define MACRO_CONCAT(a, ...) PRIMITIVE_CONCAT(a, __VA_ARGS__)\n#define PRIMITIVE_CONCAT(a, ...) a ## __VA_ARGS__\n#define MACRO_IDENT(x) x\n#endif // CONCAT_IMPL\n\n// declare static var/func and assign it the given value\n#define STATIC_VARIABLE_DECLARE(type, name, value) \\\n    static type & s_##name() { \\\n        static type __##name = (value); \\\n        return __##name; \\\n    }\n\n// declare but don't assign a value (use type's default value)\n#define STATIC_VARIABLE_DECLARE_BLANK(type, name) \\\n    static type & s_##name() { \\\n        static type __##name; \\\n        return __##name; \\\n    }\n\n// declare static const var/func and assign it the given value\n#define STATIC_CONST_VARIABLE_DECLARE(type, name, value) \\\n    static const type & s_##name() { \\\n        static const type __##name = (value); \\\n        return __##name; \\\n    }\n\n// declare static var/func collection and assign it the given elements\n// (these seem to not work for multi-template collections like Map<K, V>  :-/\n//  but they work for single-template collections like Vector<E>)\n#define STATIC_VARIABLE_DECLARE_COLLECTION(type, name, ...) \\\n    static type & s_##name() { \\\n        static type __##name = { __VA_ARGS__ }; \\\n        return __##name; \\\n    }\n\n// declare static var/func collection and leave it empty\n#define STATIC_VARIABLE_DECLARE_COLLECTION_EMPTY(type, name) \\\n    static type & s_##name() { \\\n        static type __##name; \\\n        return __##name; \\\n    }\n\n#define STATIC_VARIABLE_DECLARE_MAP_EMPTY(maptype, keytype, valuetype, name) \\\n    static maptype < keytype , valuetype > & s_##name() { \\\n        static maptype < keytype , valuetype > __##name; \\\n        return __##name; \\\n    }\n\n// declare static const var/func collection and assign it the given elements\n#define STATIC_CONST_VARIABLE_DECLARE_COLLECTION(type, name, ...) \\\n    static const type & s_##name() { \\\n        static const type __##name { __VA_ARGS__ }; \\\n        return __##name; \\\n    }\n\n// look up the value of the given static variable (by calling its static s_ function)\n#define STATIC_VARIABLE(name) \\\n    (s_##name())\n\n// look up the value of the given static variable in another namespace\n#define STATIC_VARIABLE_NAMESPACE(namespacename, name) \\\n    (namespacename::s_##name())\n\n#endif // _static_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/private/version.h",
    "content": "/*\n * File: version.h\n * ---------------\n * This file contains declarations of the version number of the\n * Stanford C++ library.\n *\n * @author Marty Stepp\n * @version 2019/10/12\n */\n\n#ifndef _version_h\n#define _version_h\n\n#include <string>\n\n/*\n * Current version of the Stanford C++ library.\n * NOTE: This value and the other date values here all\n *       *MUST* be zero-padded to YYYY/MM/DD format;\n *       if month or day is < 10, insert a preceding 0\n */\n#define STANFORD_CPP_LIB_VERSION \"2019/10/12\"\n\n/*\n * Minimum version of your IDE's project that is supported.\n * platform.cpp checks this and exits if project .pro is older than\n * this to avoid incompatible versions.\n *\n * NOTE: This value and the other date values here all\n *       *MUST* be zero-padded to YYYY/MM/DD format;\n *       if month or day is < 10, insert a preceding 0\n */\n#define STANFORD_CPP_PROJECT_MINIMUM_VERSION \"2019/04/22\"\n\n/*\n * URL at which documentation about the libraries can be found.\n */\n#define STANFORD_CPP_LIB_DOCS_URL \"http://stanford.edu/~stepp/cppdoc/\"\n\n\nnamespace version {\nvoid ensureJavaBackEndVersion(std::string minVersion = \"\") /* deprecated */;\nvoid ensureProjectVersion(std::string minVersion = \"\");\nstd::string getCppLibraryDocsUrl();\nstd::string getCppLibraryVersion();\nstd::string getJavaBackEndVersion() /* deprecated */;\nstd::string getProjectVersion();\n} // namespace version\n\n#endif // _version_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/spl.cpp",
    "content": "/******************************************************************\n * The Stanford C++ Library                                       *\n * spl.cpp                                                        *\n * -------------------------------------------------------------- *\n * This file contains the C++ code to implement the functionality *\n * of the Stanford C++ Library.                                   *\n * The library has been packed into a single very large .cpp file *\n * for speed of compilation and ease of distribution.             *\n * Do not edit this file; if you want to fix bugs or make changes *\n * to the library, please contribute to the project's original    *\n * source on GitHub by talking to its current maintainers.        *\n ******************************************************************/\n\n/*\n * File: os.cpp\n * ------------\n * This file implements the OS class declared in os.h.\n * \n * @author Marty Stepp\n * @version 2018/11/22\n * - added headless (non-Qt) mode support\n * @version 2018/09/23\n * - bug fix for isMac\n * @version 2018/09/17\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"os.h\"\n#ifndef SPL_HEADLESS_MODE\n#include <QString>\n#include <QSysInfo>\n#endif // SPL_HEADLESS_MODE\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#undef INTERNAL_INCLUDE\n\n#if !defined(SPL_HEADLESS_MODE) && QT_VERSION >= QT_VERSION_CHECK(5, 9, 0)\n/*static*/ std::string OS::getName() {\n    std::string productName = QSysInfo::prettyProductName().toStdString();\n    return productName;\n}\n\n/*static*/ std::string OS::getVersion() {\n    std::string productVersion = QSysInfo::productVersion().toStdString();\n    return productVersion;\n}\n\nbool OS::isLinux() {\n    std::string kernelType = toLowerCase(QSysInfo::kernelType().toStdString());\n    std::string productType = toLowerCase(QSysInfo::productType().toStdString());\n    return kernelType == \"linux\" || productType == \"linux\";\n}\n\nbool OS::isMac() {\n    std::string kernelType = toLowerCase(QSysInfo::kernelType().toStdString());\n    std::string productType = toLowerCase(QSysInfo::productType().toStdString());\n    return stringContains(kernelType, \"apple\")\n            || stringContains(kernelType, \"darwin\")\n            || stringContains(kernelType, \"mac\")\n            || stringContains(kernelType, \"ios\")\n            || stringContains(productType, \"apple\")\n            || stringContains(productType, \"ios\")\n            || stringContains(productType, \"mac\")\n            || stringContains(productType, \"osx\");\n}\n\nbool OS::isWindows() {\n    std::string kernelType = toLowerCase(QSysInfo::kernelType().toStdString());\n    std::string productType = toLowerCase(QSysInfo::productType().toStdString());\n    return stringContains(kernelType, \"windows\")\n            || stringContains(productType, \"windows\");\n}\n#else\n/*static*/ std::string OS::getName() {\n    return \"unknown\";\n}\n\n/*static*/ std::string OS::getVersion() {\n    return \"unknown\";\n}\n\nbool OS::isLinux() {\n    return false;\n}\n\nbool OS::isMac() {\n    return false;\n}\n\nbool OS::isWindows() {\n    return true;   // most old versions of Qt occur on old Windows installs\n}\n#endif // QT_VERSION\n\nOS::OS() {\n    // empty\n}\n\n/*\n * File: error.cpp\n * ---------------\n * Implementation of the error function.\n * \n * @version 2016/11/23\n * - added operator << to print ErrorExceptions\n * @version 2014/10/08\n * - removed 'using namespace' statement\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"exceptions.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#include <sstream>\n#undef INTERNAL_INCLUDE\n\n/* Definitions for the ErrorException class */\n\nErrorException::ErrorException(std::string msg)\n        : _kind(\"error\") {\n    _msg = msg;\n\n#if defined(SPL_CONSOLE_PRINT_EXCEPTIONS)\n    std::ostringstream out;\n    exceptions::printStackTrace(out);\n    _stackTrace = out.str();\n#endif // SPL_CONSOLE_PRINT_EXCEPTIONS\n}\n\nvoid ErrorException::dump() const {\n    dump(std::cerr);\n}\n\nvoid ErrorException::dump(std::ostream& out) const {\n    out << std::endl;\n    out << \"***\" << std::endl;\n    out << \"*** STANFORD C++ LIBRARY\" << std::endl;\n    out << \"*** An ErrorException occurred during program execution:\" << std::endl;\n    if (!_msg.empty()) {\n        out << (\"*** \" + _msg) << std::endl;\n    }\n    out << \"***\" << std::endl;\n    out << insertStarsBeforeEachLine(getStackTrace()) << std::endl;\n    // out << \"***\" << std::endl;\n    // out << \"*** To learn more about the crash, we strongly\" << std::endl;\n    // out << \"*** suggest running your program under the debugger.\" << std::endl;\n    // out << \"***\" << std::endl;\n    out.flush();\n}\n\nstd::string ErrorException::getKind() const {\n    return _kind;\n}\n\nstd::string ErrorException::getMessage() const {\n    return _msg;\n}\n\nbool ErrorException::hasStackTrace() const {\n    return !_stackTrace.empty();\n}\n\nstd::string ErrorException::getStackTrace() const {\n    return _stackTrace;\n}\n\nstd::string ErrorException::insertStarsBeforeEachLine(const std::string& s) {\n    std::string result;\n    for (std::string line : stringSplit(s, \"\\n\")) {\n        if (!result.empty()) {\n            if (!startsWith(line, \"***\")) {\n                line = \"*** \" + line;\n            }\n            result += \"\\n\";\n        }\n        result += line;\n    }\n    return result;\n}\n\nvoid ErrorException::setKind(const std::string& kind) {\n    _kind = kind;\n}\n\nvoid ErrorException::setStackTrace(const std::string& stackTrace) {\n    _stackTrace = stackTrace;\n}\n\nconst char* ErrorException::what() const noexcept {\n    // stepp : The original \"Error: \" prefix is commented out here,\n    // because in many error cases, the attempt to do the string concatenation\n    // ends up garbling the string and leading to garbage exception text\n    // return (\"Error: \" + msg).c_str();\n    return _msg.c_str();\n}\n\nstd::ostream& operator <<(std::ostream& out, const ErrorException& ex) {\n    out << \"ErrorException: \" << ex.what();\n    std::string stack = ex.getStackTrace();\n    if (!stack.empty()) {\n        out << \"Stack trace:\" << std::endl;\n        out << stack;\n        out.flush();\n    }\n    return out;\n}\n\n/*\n * Implementation notes: error\n * ---------------------------\n * Earlier implementations of error made it possible, at least on the\n * Macintosh, to help the debugger generate a backtrace at the point\n * of the error.  Unfortunately, doing so is no longer possible if\n * the errors are catchable.\n */\n\n/* [[noreturn]] */ void error(const std::string& msg) {\n    throw ErrorException(msg);\n}\n\n/*\n * File: call_stack_gcc.cpp\n * ------------------------\n * Linux/gcc implementation of the call_stack class.\n *\n * @author Marty Stepp, based on code from Fredrik Orderud\n * @version 2019/04/16\n * - bug fix for stack trace line numbers on some Mac systems (thanks to Julie Zelenski)\n * @version 2018/10/22\n * - bug fix for STL vector vs Stanford Vector\n * @version 2018/10/18\n * - added addr2line_functionName to resolve some function names not in backtrace\n * - improved calculation of function offsets for better stack trace resolving\n * @version 2017/10/18\n * - small bug fix for pointer comparison\n * @version 2017/09/02\n * - small bug fix for new clang warning about ordered comparison between pointer and zero\n * @version 2016/12/01\n * - bug fixes for call stack line number retrieval\n * @version 2016/10/14\n * - modified floating-point equality tests to use floatingPointEqual function\n * @version 2016/10/04\n * - removed all static variables (replaced with STATIC_VARIABLE macros)\n * @version 2015/05/28\n */\n\n/* Copyright (c) 2009, Fredrik Orderud\n   License: BSD licence (http://www.opensource.org/licenses/bsd-license.php)\n   Based on: http://stupefydeveloper.blogspot.com/2008/10/cc-call-stack.html */\n\n#define INTERNAL_INCLUDE 1\n#ifdef __GNUC__\n#include <stdio.h>\n#include <cxxabi.h>\n#ifdef _WIN32\n#include <windows.h>\n#include <tchar.h>\n#include <stdio.h>\n#include <strsafe.h>\n#undef MOUSE_EVENT\n#undef KEY_EVENT\n#undef MOUSE_MOVED\n#undef HELP_KEY\n#else // _WIN32\n#include <execinfo.h>\n#include <dlfcn.h>\n#include <cstring>\n#endif // _WIN32\n#endif // __GNUC__\n#if defined(__APPLE__)\n#include <mach-o/dyld.h>   // for _dyld_get_image_header\n#endif // __APPLE__\n#include <iomanip>\n#include <iostream>\n#include <sstream>\n#include <stdlib.h>\n#define INTERNAL_INCLUDE 1\n#include \"call_stack.h\"\n#define INTERNAL_INCLUDE 1\n#include \"exceptions.h\"\n#define INTERNAL_INCLUDE 1\n#include \"filelib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gthread.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"vector.h\"\n#define INTERNAL_INCLUDE 1\n#include \"private/static.h\"\n#undef INTERNAL_INCLUDE\n\nnamespace platform {\nstd::string os_getLastError() {\n#ifdef _WIN32\n    // Windows error-reporting code\n    DWORD lastErrorCode = ::GetLastError();\n    char* errorMsg = nullptr;\n    // Ask Windows to prepare a standard message for a GetLastError() code:\n    ::FormatMessageA(\n                   /* dwFlags */ FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,\n                   /* lpSource */ nullptr,\n                   /* dwMessageId */ lastErrorCode,\n                   /* dwLanguageId */ LANG_NEUTRAL,\n                   /* lpBuffer */ reinterpret_cast<LPSTR>(&errorMsg),\n                   /* dwSize */ 0,\n                   /* arguments */ nullptr);\n    if (errorMsg) {\n        return std::string(errorMsg);\n    } else {\n        return \"\";\n    }\n#else\n    // Linux/Mac error-reporting code\n    return std::string(strerror(errno));\n#endif // _WIN32\n}\n} // namespace platform\n\nnamespace stacktrace {\n\n/*\n * Run a sub-process and capture its output.\n */\nint execAndCapture(std::string cmd, std::string& output) {\n#ifdef _WIN32\n    // Windows code for external process (ugly)\n    HANDLE g_hChildStd_IN_Rd = nullptr;\n    HANDLE g_hChildStd_IN_Wr = nullptr;\n    HANDLE g_hChildStd_OUT_Rd = nullptr;\n    HANDLE g_hChildStd_OUT_Wr = nullptr;\n    SECURITY_ATTRIBUTES saAttr;\n    saAttr.nLength = sizeof(SECURITY_ATTRIBUTES);\n    saAttr.bInheritHandle = TRUE;\n    saAttr.lpSecurityDescriptor = nullptr;\n    if (!CreatePipe(&g_hChildStd_OUT_Rd, &g_hChildStd_OUT_Wr, &saAttr, 0)) {\n        return 1;   // fail\n    }\n    if (!SetHandleInformation(g_hChildStd_OUT_Rd, HANDLE_FLAG_INHERIT, 0)) {\n        return 1;   // fail\n    }\n    if (!CreatePipe(&g_hChildStd_IN_Rd, &g_hChildStd_IN_Wr, &saAttr, 0)) {\n        return 1;   // fail\n    }\n    if (!SetHandleInformation(g_hChildStd_IN_Wr, HANDLE_FLAG_INHERIT, 0) ) {\n        return 1;   // fail\n    }\n\n    // CreateChildProcess();\n    PROCESS_INFORMATION piProcInfo;\n    STARTUPINFOA siStartInfo;\n    ZeroMemory(&piProcInfo, sizeof(PROCESS_INFORMATION));\n    ZeroMemory( &siStartInfo, sizeof(STARTUPINFOA) );\n    siStartInfo.cb = sizeof(STARTUPINFO);\n    siStartInfo.hStdError = g_hChildStd_OUT_Wr;\n    siStartInfo.hStdOutput = g_hChildStd_OUT_Wr;\n    siStartInfo.hStdInput = g_hChildStd_IN_Rd;\n    siStartInfo.dwFlags |= STARTF_USESTDHANDLES;\n\n    if (!CreateProcessA(\n            nullptr,\n            const_cast<char*>(cmd.c_str()),    // command line\n            nullptr,                           // process security attributes\n            nullptr,                           // primary thread security attributes\n            TRUE,                              // handles are inherited\n            CREATE_NO_WINDOW,                  // creation flags\n            nullptr,                           // use parent's environment\n            nullptr,                           // use parent's current directory\n            &siStartInfo,                      // STARTUPINFO pointer\n            &piProcInfo)) {                    // receives PROCESS_INFORMATION\n        std::cerr << \"CREATE PROCESS FAIL: \" << platform::os_getLastError() << std::endl;\n        std::cerr << cmd << std::endl;\n        return 1;   // fail\n    }\n\n    // close the subprocess's handles (waits for it to finish)\n    WaitForSingleObject(piProcInfo.hProcess, INFINITE);\n    CloseHandle(piProcInfo.hProcess);\n    CloseHandle(piProcInfo.hThread);\n\n    // ReadFromPipe();\n    DWORD dwRead;\n    const int BUFSIZE = 65536;\n    CHAR chBuf[BUFSIZE] = {0};\n    if (!ReadFile(g_hChildStd_OUT_Rd, chBuf, BUFSIZE, &dwRead, nullptr) || dwRead == 0) {\n        return 1;\n    }\n    std::ostringstream out;\n    for (int i = 0; i < static_cast<int>(dwRead); i++) {\n        out.put(chBuf[i]);\n    }\n\n    output = out.str();\n    return 0;\n#else\n    // Linux / Mac code for external process\n    cmd += \" 2>&1\";\n    FILE* pipe = popen(cmd.c_str(), \"r\");\n    if (!pipe) {\n        return -1;\n    }\n    char buffer[65536] = {0};\n    output = \"\";\n    while (!feof(pipe)) {\n        if (fgets(buffer, 65536, pipe) != nullptr) {\n            output += buffer;\n        }\n    }\n    return pclose(pipe);\n#endif // _WIN32\n}\n\nstd::string addr2line_clean(std::string line) {\n#if defined(_WIN32)\n    // TODO: implement on Windows\n    // \"ZN10stacktrace25print_stack_trace_windowsEv at C:\\Users\\stepp\\Documents\\StanfordCPPLib\\build\\stanfordcpplib-windows-Desktop_Qt_5_3_MinGW_32bit-Debug/../../StanfordCPPLib/stacktrace/call_stack_windows.cpp:126\"\n#elif defined(__APPLE__)\n    // Mac OS X version (atos)\n    // \"Vector<int>::checkIndex(int) const (in Autograder_QtCreatorProject) (vector.h:764)\"\n    if (line.find(\" (\") != std::string::npos) {\n        line = line.substr(line.rfind(\" (\") + 2);\n    }\n    if (line.find(')') != std::string::npos) {\n        line = line.substr(0, line.rfind(')'));\n    }\n    line = trim(line);\n#elif defined(__GNUC__)\n    // Linux version (addr2line)\n    // \"_Z4Mainv at /home/stepp/.../FooProject/src/mainfunc.cpp:131\"\n    if (line.find(\" at \") != std::string::npos) {\n        line = line.substr(line.rfind(\" at \") + 4);\n    }\n    if (line.find('/') != std::string::npos) {\n        line = line.substr(line.rfind('/') + 1);\n    }\n\n    // strip extra parenthesized info from the end\n    if (line.find(\" (\") != std::string::npos) {\n        line = line.substr(0, line.rfind(\" (\"));\n    }\n    line = trim(line);\n#endif\n    return line;\n}\n\nstd::string addr2line_functionName(std::string line) {\n#if defined(_WIN32)\n    // TODO: implement on Windows\n    // \"ZN10stacktrace25print_stack_trace_windowsEv at C:\\Users\\stepp\\Documents\\StanfordCPPLib\\build\\stanfordcpplib-windows-Desktop_Qt_5_3_MinGW_32bit-Debug/../../StanfordCPPLib/stacktrace/call_stack_windows.cpp:126\"\n#elif defined(__APPLE__)\n    // Mac OS X version (atos)\n    // \"Vector<int>::checkIndex(int) const (in Autograder_QtCreatorProject) (vector.h:764)\"\n    if (line.find(\" (\") != std::string::npos) {\n        line = line.substr(0, line.rfind(\" (\") - 1);\n    }\n    if (line.find(\"(in \") != std::string::npos) {\n        line = line.substr(0, line.rfind(\"(in \"));\n    }\n    line = trim(line);\n#elif defined(__GNUC__)\n    // Linux version (addr2line)\n    // \"_Z4Mainv at /home/stepp/.../FooProject/src/mainfunc.cpp:131\"\n    // \"std::_Function_handler<void (), stanfordcpplib::autograder::GuiAutograder::runTest(stanfordcpplib::autograder::AutograderTest*)::{lambda()#1}>::_M_invoke(std::_Any_data const&) at std_function.h:318\"\n    if (line.find(\" at \") != std::string::npos) {\n        line = line.substr(0, line.rfind(\" at \"));\n    }\n    line = trim(line);\n#endif\n    return line;\n}\n\nint addr2line_all(Vector<void*> addrsVector, std::string& output) {\n    int length = static_cast<int>(addrsVector.size());\n    void* addrs[length];\n    for (int i = 0; i < length; i++) {\n        addrs[i] = addrsVector[i];\n    }\n    return addr2line_all(addrs, length, output);\n}\n\nint addr2line_all(void** addrs, int length, std::string& output) {\n    // turn the addresses into a space-separated string\n    std::ostringstream out;\n    for (int i = 0; i < length; i++) {\n        out << \" \" << std::hex << std::setfill('0') << addrs[i];\n    }\n    std::string addrsStr = out.str();\n    out.str(\"\");\n\n    // have addr2line map the address to the relevant line in the code\n#if defined(__APPLE__)\n    // Mac OS X\n    // JL : change \"atos\" to \"xcrun atos\"?\n    void *base = (void *) _dyld_get_image_header(0);\n    if (base) {\n        out << \"atos -l \" << base << \" -o \" << exceptions::getProgramNameForStackTrace() << addrsStr;\n    } else {\n        out << \"atos -o \" << exceptions::getProgramNameForStackTrace() << addrsStr;\n    }\n#elif defined(_WIN64)\n    // Windows\n    if (fileExists(\"addr2line64.exe\")) {\n        out << \"addr2line64.exe -f -i -C -s -p -e \\\"\" << exceptions::getProgramNameForStackTrace() << \"\\\"\" << addrsStr;\n    } else {\n        out << \"(addr2line64.exe unavailable; no stack trace produced)\";\n    }\n#elif defined(_WIN32)\n    // Windows\n    if (fileExists(\"addr2line.exe\")) {\n        out << \"addr2line.exe -f -i -C -s -p -e \\\"\" << exceptions::getProgramNameForStackTrace() << \"\\\"\" << addrsStr;\n    } else {\n        out << \"(addr2line.exe unavailable; no stack trace produced)\";\n    }\n#else\n    // Linux\n    out << \"addr2line -f -i -C -s -p -e \" << exceptions::getProgramNameForStackTrace() << addrsStr;\n#endif\n    std::string command = out.str();\n    int result = execAndCapture(command, output);\n    return result;\n}\n\n/*\n * Resolve symbol name and source location given the path to the executable\n * and an address\n */\nint addr2line(void* addr, std::string& line) {\n    void* addrs[1] = {addr};\n    return addr2line_all(addrs, 1, line);\n}\n\nvoid*& fakeCallStackPointer() {\n    static void* fakeCallStackPointer = nullptr;\n    return fakeCallStackPointer;\n}\n} // namespace stacktrace\n\n\n/*\n * Below is the Linux/Mac-specific stack trace code.\n */\n#ifndef _WIN32\n\nnamespace stacktrace {\nSTATIC_CONST_VARIABLE_DECLARE(int, STACK_FRAMES_TO_SKIP, 0)\nSTATIC_CONST_VARIABLE_DECLARE(int, STACK_FRAMES_MAX, 50)\n\nstd::ostream& operator <<(std::ostream& out, const entry& ent) {\n    return out << ent.toString();\n}\n\ncall_stack::call_stack(const size_t /*num_discard = 0*/) {\n    // retrieve call-stack as an array of void* pointers to each function on stack\n    void* trace[STATIC_VARIABLE(STACK_FRAMES_MAX)];\n    for (int i = 0; i < STATIC_VARIABLE(STACK_FRAMES_MAX); i++) {\n        trace[i] = nullptr;\n    }\n\n    int stack_depth = backtrace(trace, STATIC_VARIABLE(STACK_FRAMES_MAX));\n\n    // First pass: read linker symbol info and get address offsets.\n    for (int i = STATIC_VARIABLE(STACK_FRAMES_TO_SKIP); i < stack_depth; i++) {\n        // DL* = programmer API to dynamic linking loader\n\n        // https://linux.die.net/man/3/dladdr\n        // const char *dli_fname;   // pathname of shared object (file) that contains address\n        // void       *dli_fbase;   // address at which shared object is loaded in system memory\n        // const char *dli_sname;   // name of nearest symbol with address lower than addr\n        // void       *dli_saddr;   // exact address of symbol named in dli_sname\n\n        Dl_info dlinfo;\n        if (!dladdr(trace[i], &dlinfo)) {\n            continue;\n        }\n\n        const char* symname = dlinfo.dli_sname;\n\n        int   status;\n        char* demangled = abi::__cxa_demangle(symname, /* buffer */ nullptr,\n                                              /* length pointer */ nullptr, &status);\n        if (status == 0 && demangled) {\n            symname = demangled;\n        }\n\n        // debug code left in because we occasionally need to debug stack traces\n//        std::cout << \"call_stack: I am thread \" << GThread::getCurrentThread()->objectName().toStdString() << std::endl;\n//        std::cout << \"info for \" << trace[i] << \":\" << std::endl;\n//        std::cout << \"dlinfo \" << i << \":\"\n//                  << \" fbase=\" << dlinfo.dli_fbase\n//                  << \" fname=\" << (dlinfo.dli_fname ? dlinfo.dli_fname : \"NULL\")\n//                  << \" sname=\" << (dlinfo.dli_sname ? dlinfo.dli_sname : \"NULL\")\n//                  << \" saddr=\" << dlinfo.dli_saddr\n//                  << std::endl;\n//        if (demangled) {\n//            std::cout << \"demangled name \" << i << \": \" << std::string(demangled) << \" (status \" << status << \")\" << std::endl;\n//        } else {\n//            std::cout << \"demangled name \" << i << \": NULL\" << \" (status \" << status << \")\" << std::endl;\n//        }\n//        std::cout << std::endl;\n        \n        // store entry to stack\n        if (dlinfo.dli_fname) {\n            entry e;\n            e.file     = dlinfo.dli_fname;\n            e.line     = 0;   // unsupported; use lineStr instead (later)\n            e.function = symname ? symname : \"(unknown)\";\n            e.address  = trace[i];\n\n            // The dli_fbase gives an overall offset into the file itself;\n            // the dli_saddr is the offset of that symbol/function/line.\n            // by subtracting them we get the offset of the function within the file\n            // which addr2line can use to look up function line numbers.\n\n            if (dlinfo.dli_fbase) {\n                // subtract smaller address from larger one to get offset\n                if (trace[i] >= dlinfo.dli_fbase) {\n                    e.address2 = (void*) ((long) trace[i] - (long) dlinfo.dli_fbase);\n                } else {\n                    e.address2 = (void*) ((long) dlinfo.dli_fbase - (long) trace[i]);\n                }\n            } else {\n                e.address2 = dlinfo.dli_saddr;\n            }\n            stack.push_back(e);\n        }\n\n        if (demangled) {\n            free(demangled);\n        }\n    }\n\n    if (stack_depth == 0 || stack.isEmpty()) {\n        return;\n    }\n\n    // Second pass: try to look up line numbers.\n    //\n    // let's also try to get the line numbers via an 'addr2line' external process\n    // (for max compatibility with GCC and Clang, we look up the addresses 2 ways:\n    // 1) by the raw void* given to us from backtrace(), and\n    // 2) by the offsetted pointer where we subtract the addr of the exe file.\n    // Option 1 used to work for all compilers, but sometime around summer 2016\n    // GCC started failing unless we use option 2.\n    // Clang and other compilers still need option 1 and fail with option 2,\n    // and to avoid running external addr2line process twice, we just look it up\n    // both ways and then figure out which one is best by string length.\n    // The failing one will emit a lot of short \"??:?? 0\" lines.\n\n    Vector<void*> addrsToLookup;\n    for (const entry& e : stack) {\n        addrsToLookup.add(e.address);\n        addrsToLookup.add(e.address2);\n    }\n\n    std::string addr2lineOutput;\n    addr2line_all(addrsToLookup, addr2lineOutput);\n\n    Vector<std::string> addr2lineLines = stringSplit(addr2lineOutput, \"\\n\");\n    int numAddrLines = (int) addr2lineLines.size();\n    for (int i = 0, size = (int) stack.size(); i < size; i++) {\n        std::string opt1 = (2 * i < numAddrLines ? addr2lineLines[2 * i] : std::string());\n        std::string opt2 = (2 * i + 1 < numAddrLines ? addr2lineLines[2 * i + 1] : std::string());\n        std::string best = opt1.length() > opt2.length() ? opt1 : opt2;\n        stack[i].lineStr = addr2line_clean(best);\n        if (stack[i].function.empty() || stack[i].function == \"(unknown)\") {\n            stack[i].function = addr2line_functionName(best);\n        }\n    }\n}\n\ncall_stack::~call_stack() throw() {\n    // automatic cleanup\n}\n\n} // namespace stacktrace\n\n#endif // _WIN32\n\n/*\n * File: exceptions.cpp\n * --------------------\n * This file contains a top-level exception handler to print exceptions thrown\n * by student code on the console.\n * \n * @author Marty Stepp\n * @version 2019/05/16\n * - added more function names to filter from stack trace\n * @version 2019/04/16\n * - filter Qt/std thread methods from stack trace\n * @version 2019/04/02\n * - small fix for warning about -Wreturn-std-move on string exception\n * @version 2018/10/18\n * - added set_unexpected handler (used by autograders when errors are thrown)\n * - added some new function names to filter from stack traces\n * @version 2018/09/27\n * - bug fixes to print better stack traces when used with threads\n * @version 2018/09/25\n * - modify setTopLevelExceptionHandlerEnabled to work better with threads\n * @version 2016/12/23\n * - added more function names for stack trace filtering (mainly thread stuff)\n * @version 2016/12/09\n * - added insertStarsBeforeEachLine\n * @version 2016/11/07\n * - added cleanupFunctionNameForStackTrace\n * - slight refactor of shouldFilterOutFromStackTrace\n * @version 2016/10/30\n * - moved recursion functions to recursion.h/cpp\n * @version 2016/10/04\n * - removed all static variables (replaced with STATIC_VARIABLE macros)\n * @version 2016/08/02\n * - added some new cxx11 filters to stack traces\n * - fixed spacing on *** messages from exception handlers\n * @version 2015/10/13\n * - bug fix in terminate handler to turn off signal handler at end\n * @version 2015/05/28\n * - tiny bug fix to exception stack trace printing format on Windows\n * @version 2014/11/19\n * - disabled SetThreadErrorMode to avoid compiler errors on Windows systems\n * @version 2014/11/18\n * - fixed minor bug with filtering out nested <> template args from stack traces\n * @version 2014/11/14\n * - fixed bug with SIGABRT handling in autograder mode (was muffling unit test failures)\n * @version 2014/11/12\n * - made printStackTrace function publicly available\n * - added top-level signal handler (for null-pointer derefs etc.)\n * @since 2014/11/05\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"exceptions.h\"\n#include <csignal>\n#include <cstdlib>\n#include <iomanip>\n#include <iostream>\n#include <string>\n#define INTERNAL_INCLUDE 1\n#include \"call_stack.h\"\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"filelib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"vector.h\"\n#define INTERNAL_INCLUDE 1\n#include \"private/static.h\"\n#ifdef _WIN32\n#include <windows.h>\n#  undef MOUSE_EVENT\n#  undef KEY_EVENT\n#  undef MOUSE_MOVED\n#  undef HELP_KEY\n#endif\n#undef INTERNAL_INCLUDE\n\n// uncomment the definition below to use an alternative 'signal stack'\n// which helps in handling stack overflow errors\n// (disabled because it currently breaks stack traces for other errors)\n// #define SHOULD_USE_SIGNAL_STACK\n\nnamespace exceptions {\n// just some value that is not any existing signal\n#define SIGSTACK (static_cast<int>(0xdeadbeef))\n#define SIGUNKNOWN (static_cast<int>(0xcafebabe))\n#define SIGTIMEOUT (static_cast<int>(0xf00df00d))\n\n// static 'variables' (as functions to avoid initialization ordering bugs)\nSTATIC_CONST_VARIABLE_DECLARE(bool, STACK_TRACE_SHOULD_FILTER, true)\nSTATIC_CONST_VARIABLE_DECLARE(bool, STACK_TRACE_SHOW_TOP_BOTTOM_BARS, false)\n\nSTATIC_VARIABLE_DECLARE(std::string, programNameForStackTrace, \"\")\nSTATIC_VARIABLE_DECLARE(bool, topLevelExceptionHandlerEnabled, false)\n\n// handle SIGABRT in normal mode, but not autograder mode\n// (Google Test uses SIGABRT internally so we can't catch it)\n#ifdef SPL_AUTOGRADER_MODE\nSTATIC_CONST_VARIABLE_DECLARE_COLLECTION(Vector<int>, SIGNALS_HANDLED, SIGSEGV, SIGILL, SIGFPE, SIGINT)\n#else\nSTATIC_CONST_VARIABLE_DECLARE_COLLECTION(Vector<int>, SIGNALS_HANDLED, SIGSEGV, SIGILL, SIGFPE, SIGABRT)\n#endif // SPL_AUTOGRADER_MODE\n\nstatic void signalHandlerDisable();\nstatic void signalHandlerEnable();\nstatic void stanfordCppLibSignalHandler(int sig);\n[[noreturn]] static void stanfordCppLibTerminateHandler();\nstatic void stanfordCppLibUnexpectedHandler();\n\nstd::string cleanupFunctionNameForStackTrace(std::string function) {\n    // remove references to std:: namespace\n    stringReplaceInPlace(function, \"std::\", \"\");\n    stringReplaceInPlace(function, \"__cxx11::\", \"\");\n    stringReplaceInPlace(function, \"__cxxabi::\", \"\");\n    stringReplaceInPlace(function, \"__cxxabiv1::\", \"\");\n    stringReplaceInPlace(function, \"[abi:cxx11]\", \"\");\n    stringReplaceInPlace(function, \"__1::\", \"\");   // on Mac\n\n    // a few substitutions related to predefined types for simplicity\n    stringReplaceInPlace(function, \"basic_ostream\", \"ostream\");\n    stringReplaceInPlace(function, \"basic_istream\", \"istream\");\n    stringReplaceInPlace(function, \"basic_ofstream\", \"ofstream\");\n    stringReplaceInPlace(function, \"basic_ifstream\", \"ifstream\");\n    stringReplaceInPlace(function, \"basic_string\", \"string\");\n    stringReplaceInPlace(function, \"stanfordcpplib::collections::GenericSet\", \"Set\");\n\n    // remove empty/unknown function names\n    stringReplaceInPlace(function, \"?? ??:0\", \"\");\n\n    // cleanup autograder test case names\n    stringReplaceInPlace(function, \"_Test::TestRealBody\", \"\");\n    stringReplaceInPlace(function, \"_Test::TestBody\", \"\");\n\n    // remove template arguments\n    // TODO: does not work well for nested templates\n    int lessThan = stringIndexOf(function, \"<\");\n    while (lessThan >= 0) {\n        // see if there is a matching > for this <\n        int greaterThan = lessThan + 1;\n        int count = 1;\n        while (greaterThan < (int) function.length()) {\n            if (function[greaterThan] == '<') {\n                count++;\n            } else if (function[greaterThan] == '>') {\n                count--;\n                if (count == 0) {\n                    break;\n                }\n            }\n            greaterThan++;\n        }\n        if (count == 0 && lessThan >= 0 && greaterThan > lessThan) {\n            function.erase(lessThan, greaterThan - lessThan + 1);\n        } else {\n            // look for the next < in the string, if any, to see if it has a matching >\n            lessThan = stringIndexOf(function, \"<\", lessThan + 1);\n        }\n    }\n\n    // addr2line oddly writes \"const Foo&\" as \"Foo const&\"\n    stringReplaceInPlace(function, \"string const&\", \"const string&\");\n\n    // small patch for renamed main function\n    if (function == \"_main_\") {\n        function = \"main\";\n    }\n\n    return function;\n}\n\nstd::string& getProgramNameForStackTrace() {\n    return STATIC_VARIABLE(programNameForStackTrace);\n}\n\nbool getTopLevelExceptionHandlerEnabled() {\n    return STATIC_VARIABLE(topLevelExceptionHandlerEnabled);\n}\n\nvoid setProgramNameForStackTrace(char* programName) {\n    STATIC_VARIABLE(programNameForStackTrace) = programName;\n}\n\n#ifdef _WIN32\nvoid myInvalidParameterHandler(const wchar_t* expression,\n        const wchar_t* function,\n        const wchar_t* file,\n        unsigned int line,\n        uintptr_t /*pReserved*/) {\n    wprintf(L\"Invalid parameter detected in function %s.\"\n            L\" File: %s Line: %d\\n\", function, file, line);\n    wprintf(L\"Expression: %s\\n\", expression);\n}\n\nLONG WINAPI UnhandledException(LPEXCEPTION_POINTERS exceptionInfo) {\n    // dear student: if you get a compiler error about 'Eip' not being found here,\n    // it means you're using a 64-bit compiler like the MS Visual C++ compiler,\n    // and not the 32-bit MinGW compiler we instructed you to install.\n    // Please re-install Qt Creator with the proper compiler (MinGW 32-bit) enabled.\n#if _WIN64\n    if (exceptionInfo && exceptionInfo->ContextRecord && exceptionInfo->ContextRecord->Rip) {\n        stacktrace::fakeCallStackPointer() = (void*) exceptionInfo;\n    }\n#else\n    if (exceptionInfo && exceptionInfo->ContextRecord && exceptionInfo->ContextRecord->Eip) {\n        stacktrace::fakeCallStackPointer() = (void*) exceptionInfo;\n    }\n#endif // _WIN64\n    DWORD code = exceptionInfo->ExceptionRecord->ExceptionCode;\n    if (code == EXCEPTION_STACK_OVERFLOW || code == EXCEPTION_FLT_STACK_CHECK) {\n        stanfordCppLibSignalHandler(SIGSTACK);\n    } else if (code == EXCEPTION_IN_PAGE_ERROR || code == EXCEPTION_ACCESS_VIOLATION) {\n        stanfordCppLibSignalHandler(SIGSEGV);\n    } else if (code == EXCEPTION_FLT_DENORMAL_OPERAND || code == EXCEPTION_FLT_DIVIDE_BY_ZERO\n               || code == EXCEPTION_FLT_INEXACT_RESULT || code == EXCEPTION_FLT_INVALID_OPERATION\n               || code == EXCEPTION_FLT_OVERFLOW || code == EXCEPTION_FLT_UNDERFLOW\n               || code == EXCEPTION_INT_DIVIDE_BY_ZERO || code == EXCEPTION_INT_OVERFLOW) {\n        stanfordCppLibSignalHandler(SIGFPE);\n    } else if (code == EXCEPTION_ILLEGAL_INSTRUCTION || code == EXCEPTION_PRIV_INSTRUCTION) {\n        stanfordCppLibSignalHandler(SIGILL);\n    } else {\n        stanfordCppLibSignalHandler(SIGUNKNOWN);\n    }\n    return EXCEPTION_EXECUTE_HANDLER;\n}\n#endif // _WIN32\n\nvoid setTopLevelExceptionHandlerEnabled(bool enabled, bool force) {\n    static void (* old_terminate)() = nullptr;\n    static void (* old_unexpected)() = nullptr;\n\n    if ((!STATIC_VARIABLE(topLevelExceptionHandlerEnabled) || force) && enabled) {\n        if (!old_terminate) {\n            old_terminate = std::set_terminate(stanfordCppLibTerminateHandler);\n            old_unexpected = std::set_unexpected(stanfordCppLibUnexpectedHandler);\n        } else {\n            std::set_terminate(stanfordCppLibTerminateHandler);\n            std::set_unexpected(stanfordCppLibUnexpectedHandler);\n        }\n#ifdef _WIN32\n        // disabling this code for now because it messes with the\n        // newly added uncaught signal handler\n        // SetErrorMode(SEM_NOGPFAULTERRORBOX);\n        SetErrorMode(SEM_FAILCRITICALERRORS);\n        // SetThreadErrorMode(SEM_FAILCRITICALERRORS, nullptr);\n        SetUnhandledExceptionFilter(UnhandledException);\n        // _invalid_parameter_handler newHandler;\n        // newHandler = myInvalidParameterHandler;\n        // _set_invalid_parameter_handler(newHandler);\n        //_set_error_mode(_OUT_TO_STDERR);\n#endif // _WIN32\n        \n        // also set up a signal handler for things like segfaults / null-pointer-dereferences\n        signalHandlerEnable();\n    } else if ((STATIC_VARIABLE(topLevelExceptionHandlerEnabled) || force) && !enabled) {\n        std::set_terminate(old_terminate);\n        std::set_unexpected(old_unexpected);\n    }\n    STATIC_VARIABLE(topLevelExceptionHandlerEnabled) = enabled;\n}\n\n/*\n * Some lines from the stack trace are filtered out because they come from\n * private library code or OS code and would confuse the student.\n */\nbool shouldFilterOutFromStackTrace(const std::string& function) {\n    // exact names that should be matched and filtered\n    static const Vector<std::string> FORBIDDEN_NAMES {\n        \"\",\n        \"??\",\n        \"call_stack\",\n        \"_clone\",\n        \"clone\",\n        \"error\",\n        \"error(const string&)\",\n        \"error(string)\",\n        \"ErrorException\",\n        \"__libc_start_main\",\n        \"_start\",\n        \"startupMain(int, char**)\",\n        \"(unknown)\",\n        \"_Unwind_Resume\"\n    };\n\n    // substrings to filter (don't show any func whose name contains these)\n    static const Vector<std::string> FORBIDDEN_SUBSTRINGS {\n        \" error(\",\n        \"__cxa_rethrow\",\n        \"__cxa_call_terminate\",\n        \"__cxa_call_unexpected\",\n        \"__func::\",\n        \"__function::\",\n        \"_endthreadex\",\n        \"_Function_base::_Base_manager::\",\n        \"_Function_handler\",\n        \"_Internal_\",\n        \"__invoke_impl\",\n        \"__invoke_result::type\",\n        \"__invoke_void\",\n        \"__unexpected\",\n        \"thread::_Invoker\",\n        \"thread::_State_impl\",\n        \"_M_invoke\",\n        \"_sigtramp\",\n        \"autograderMain\",\n        \"BaseThreadInitThunk\",\n        \"call_stack_gcc.cpp\",\n        \"call_stack_windows.cpp\",\n        \"CFRunLoopDoSource\",\n        \"CFRunLoopRun\",\n        \"CFRUNLOOP_IS\",\n        \"crtexe.c\",\n        \"decltype(forward\",\n        \"ErrorException::ErrorException\",\n        \"exceptions.cpp\",\n        \"function::operator\",\n        \"GetModuleFileName\",\n        \"GetProfileString\",\n        // \"GStudentThread::run\",\n        \"GThreadQt::run\",\n        \"GThreadQt::start\",\n        \"GThreadStd::run\",\n        \"GThreadStd::start\",\n        \"InitializeExceptionChain\",\n        \"KnownExceptionFilter\",\n        \"M_invoke\",\n        \"multimain.cpp\",\n        // \"operator\",\n        \"pthread_body\",\n        \"pthread_start\",\n        \"printStackTrace\",\n        // \"QAbstractItemModel::\",\n        // \"QAbstractProxyModel::\",\n        \"QApplication::notify\",\n        \"QApplicationPrivate::\",\n        \"QCoreApplication::\",\n        \"QGuiApplicationPrivate::\",\n        \"QMetaMethod::\",\n        \"QMetaObject::\",\n        \"QObjectPrivate::\",\n        \"qt_plugin_instance\",\n        \"QtGui::startBackgroundEventLoop\",\n        // \"QWidget::\",\n        \"QWidgetBackingStore::\",\n        \"QWindowSystemInterface::\",\n        \"require::_errorMessage\",\n        \"RunCurrentEventLoopInMode\",\n        \"shouldFilterOutFromStackTrace\",\n        \"stacktrace::\",\n        \"stanfordCppLibPosixSignalHandler\",\n        \"stanfordCppLibSignalHandler\",\n        \"stanfordCppLibTerminateHandler\",\n        \"stanfordCppLibUnexpectedHandler\",\n        \"testing::\",\n        \"UnhandledException\",\n        \"WinMain@\"\n    };\n\n    // prefixes to filter (don't show any func whose name starts with these)\n    static const Vector<std::string> FORBIDDEN_PREFIXES {\n        // \"__\"\n    };\n\n    for (const std::string& name : FORBIDDEN_NAMES) {\n        if (function == name) {\n            return true;\n        }\n    }\n\n    for (const std::string& name : FORBIDDEN_SUBSTRINGS) {\n        if (function.find(name) != std::string::npos) {\n            return true;\n        }\n    }\n\n    for (const std::string& name : FORBIDDEN_PREFIXES) {\n        if (function.find(name) == 0) {\n            return true;\n        }\n    }\n\n    return false;\n}\n\nvoid printStackTrace() {\n    printStackTrace(std::cerr);\n}\n\nvoid printStackTrace(std::ostream& out) {\n    // constructing the following object jumps into fancy code in call_stack_gcc/windows.cpp\n    // to rebuild the stack trace; implementation differs for each operating system\n    stacktrace::call_stack trace;\n    Vector<stacktrace::entry> entries = trace.stack;\n    \n    // get longest line string length to line up stack traces\n    void* fakeStackPtr = stacktrace::fakeCallStackPointer();\n    int entriesToShowCount = 0;\n    int funcNameLength = 0;\n    int lineStrLength = 0;\n    for (int i = 0; i < entries.size(); ++i) {\n        entries[i].function = cleanupFunctionNameForStackTrace(entries[i].function);\n        if (!STATIC_VARIABLE(STACK_TRACE_SHOULD_FILTER)\n                || (!shouldFilterOutFromStackTrace(entries[i].function)\n                    && !shouldFilterOutFromStackTrace(entries[i].file)\n                    && !shouldFilterOutFromStackTrace(entries[i].lineStr))) {\n            lineStrLength = std::max(lineStrLength, (int) entries[i].lineStr.length());\n            funcNameLength = std::max(funcNameLength, (int) entries[i].function.length());\n            entriesToShowCount++;\n        }\n    }\n    \n    if (entries.isEmpty() || entriesToShowCount == 0) {\n        return;   // couldn't get a stack trace, or had no useful data  :-(\n    }\n    \n    if (lineStrLength > 0) {\n        out << \"*** Stack trace (line numbers are approximate):\" << std::endl;\n        if (STATIC_VARIABLE(STACK_TRACE_SHOW_TOP_BOTTOM_BARS)) {\n            std::ostringstream lineout;\n            lineout << \"*** \" << std::setw(lineStrLength) << std::left\n                    << \"file:line\" << \"  \" << \"function\" << std::endl\n                    << \"*** \" << std::string(lineStrLength + 2 + funcNameLength, '=') << std::endl;\n            out << lineout.str() << std::endl;\n        }\n    } else {\n        out << \"*** Stack trace:\" << std::endl;\n    }\n    \n    for (int i = 0; i < entries.size(); ++i) {\n        stacktrace::entry entry = entries[i];\n        entry.file = getTail(entry.file);\n        \n        // skip certain entries for clarity\n        if (STATIC_VARIABLE(STACK_TRACE_SHOULD_FILTER)\n                && (shouldFilterOutFromStackTrace(entry.function)\n                    || shouldFilterOutFromStackTrace(entry.file)\n                    || shouldFilterOutFromStackTrace(entry.lineStr))) {\n            continue;\n        }\n        \n        // show Main() as main() to hide hidden case-change by Stanford C++ lib internals\n        if (startsWith(entry.function, \"Main(\")) {\n            entry.function.replace(0, 5, \"main(\");\n        }\n\n        // for some reason, some functions don't show () parens after; add them\n        if (!entry.function.empty() && !stringContains(entry.function, \"(\")) {\n            entry.function += \"()\";\n        }\n\n        // fix main to hide int/char**\n        if (entry.function == \"main(int, char**)\") {\n            entry.function = \"main()\";\n        }\n\n        // fix qMain => main to hide Qt main renaming\n        if (entry.function == \"qMain()\") {\n            entry.function = \"main()\";\n        }\n\n        std::string lineStr = \"\";\n        if (!entry.lineStr.empty()) {\n            lineStr = trimEnd(entry.lineStr);\n            if (lineStr == \"?? ??:0\") {\n                lineStr = \"(unknown)\";\n            }\n\n            if (entry.line == 0 && stringContains(lineStr, \":\")) {\n                Vector<std::string> tokens = stringSplit(lineStr, \":\");\n                if (stringIsInteger(tokens[tokens.size() - 1])) {\n                    entry.line = stringToInteger(tokens[tokens.size() - 1]);\n                }\n            }\n        }\n        if (entry.lineStr.empty() && entry.line > 0) {\n            lineStr = \"line \" + std::to_string(entry.line);\n        }\n        \n        // we use a temporary 'lineout' because cerr aggressively flushes on <<,\n        // leading to awkward line breaks in the output pane\n        std::ostringstream lineout;\n        lineout << \"*** \" << std::left << std::setw(lineStrLength) << lineStr\n                  << \"  \" << entry.function;\n        out << lineout.str() << std::endl;\n        \n        // don't show entries beneath the student's main() function, for simplicity\n        if (entry.function == \"main\"\n                || entry.function == \"main()\"\n                || entry.function == \"main(int, char**)\"\n                || entry.function == \"qMain\"\n                || entry.function == \"qMain()\") {\n            break;\n        }\n    }\n    if (entries.size() == 1 && fakeStackPtr && entries[0].address == fakeStackPtr) {\n        out << \"*** (partial stack due to crash)\" << std::endl;\n    }\n\n    if (STATIC_VARIABLE(STACK_TRACE_SHOW_TOP_BOTTOM_BARS) && lineStrLength > 0) {\n        std::ostringstream lineout;\n        lineout << \"*** \" << std::string(lineStrLength + 2 + funcNameLength, '=');\n        out << lineout.str() << std::endl;\n    }\n    \n    out << \"***\" << std::endl;\n    out << \"*** To learn more about the crash, we strongly\" << std::endl;\n    out << \"*** suggest running your program under the debugger.\" << std::endl;\n    out << \"***\" << std::endl;\n}\n\n// macro to avoid lots of redundancy in catch statements below\n#ifdef _WIN32\n#define THROW_NOT_ON_WINDOWS(ex)\n#else\n#define THROW_NOT_ON_WINDOWS(ex) throw(ex)\n#endif // _WIN32\n\n#define FILL_IN_EXCEPTION_TRACE(ex, kind, desc) \\\n    {\\\n    std::string __kind = (kind); \\\n    std::string __desc = (desc); \\\n    if ((!__kind.empty())) { stringReplaceInPlace(msg, DEFAULT_EXCEPTION_KIND, __kind); } \\\n    if ((!__desc.empty())) { stringReplaceInPlace(msg, DEFAULT_EXCEPTION_DETAILS, __desc); } \\\n    out << msg; \\\n    out.flush(); \\\n    printStackTrace(out); \\\n    THROW_NOT_ON_WINDOWS(ex); \\\n    }\n\n#define FILL_IN_EXCEPTION_TRACE_AND_THROW_ERROREXCEPTION(ex, kind, desc) \\\n    {\\\n    std::string __kind = (kind); \\\n    std::string __desc = (desc); \\\n    if ((!__kind.empty())) { stringReplaceInPlace(msg, DEFAULT_EXCEPTION_KIND, __kind); } \\\n    if ((!__desc.empty())) { stringReplaceInPlace(msg, DEFAULT_EXCEPTION_DETAILS, __desc); } \\\n    out << msg; \\\n    printStackTrace(out); \\\n    ErrorException errorEx(out.str()); \\\n    errorEx.setKind(kind); \\\n    THROW_NOT_ON_WINDOWS(errorEx); \\\n    }\n\nstatic void signalHandlerDisable() {\n    for (int sig : STATIC_VARIABLE(SIGNALS_HANDLED)) {\n        signal(sig, SIG_DFL);\n    }\n}\n\n#ifndef _WIN32\nvoid stanfordCppLibPosixSignalHandler(int sig, siginfo_t* /*siginfo*/, void* /*context*/) {\n    stanfordCppLibSignalHandler(sig);\n}\n#endif\n\nstatic void signalHandlerEnable() {\n    bool handled = false;\n#ifdef SHOULD_USE_SIGNAL_STACK\n#if !defined(_WIN32)\n    // alternate stack on Linux for stack overflows\n    static uint8_t alternate_stack[SIGSTKSZ];\n    stack_t ss = {};\n    ss.ss_sp = (void*) alternate_stack;\n    ss.ss_size = SIGSTKSZ;\n    ss.ss_flags = 0;\n    sigaltstack(&ss, nullptr);\n    \n    struct sigaction sig_action = {};\n    sig_action.sa_sigaction = stanfordCppLibPosixSignalHandler;\n    sigemptyset(&sig_action.sa_mask);\n#ifdef __APPLE__\n    // backtrace() doesn't work on OS X when we use an alternate stack\n    sig_action.sa_flags = SA_SIGINFO;\n#else\n    sig_action.sa_flags = SA_SIGINFO | SA_ONSTACK;\n#endif // __APPLE__\n    sigaction(SIGSEGV, &sig_action, nullptr);\n    sigaction(SIGFPE,  &sig_action, nullptr);\n    sigaction(SIGILL,  &sig_action, nullptr);\n    sigaction(SIGTERM, &sig_action, nullptr);\n    sigaction(SIGUSR1, &sig_action, nullptr);\n#ifdef SPL_AUTOGRADER_MODE\n    sigaction(SIGINT,  &sig_action, nullptr);\n#else // not SPL_AUTOGRADER_MODE\n    sigaction(SIGABRT, &sig_action, nullptr);\n#endif // SPL_AUTOGRADER_MODE\n    handled = true;\n#endif\n#endif // SHOULD_USE_SIGNAL_STACK\n\n    if (!handled) {\n        for (int sig : STATIC_VARIABLE(SIGNALS_HANDLED)) {\n            signal(sig, stanfordCppLibSignalHandler);\n        }\n    }\n}\n\n/*\n * A general handler for process signals.\n * Prints details about the signal and then tries to print a stack trace.\n */\nstatic void stanfordCppLibSignalHandler(int sig) {\n#ifndef SPL_AUTOGRADER_MODE\n    // turn the signal handler off (should run only once; avoid infinite cycle)\n    signalHandlerDisable();\n#endif // SPL_AUTOGRADER_MODE\n\n    // tailor the error message to the kind of signal that occurred\n    std::string SIGNAL_KIND = \"A fatal error\";\n    std::string SIGNAL_DETAILS = \"No details were provided about the error.\";\n    if (sig == SIGSEGV) {\n        SIGNAL_KIND = \"A segmentation fault (SIGSEGV)\";\n        SIGNAL_DETAILS = \"This typically happens when you try to dereference a pointer\\n*** that is null or invalid.\";\n    } else if (sig == SIGABRT) {\n        SIGNAL_KIND = \"An abort error (SIGABRT)\";\n        SIGNAL_DETAILS = \"This error is thrown by system functions that detect corrupt state.\";\n    } else if (sig == SIGILL) {\n        SIGNAL_KIND = \"An illegal instruction error (SIGILL)\";\n        SIGNAL_DETAILS = \"This typically happens when you have corrupted your program's memory.\";\n    } else if (sig == SIGFPE) {\n        SIGNAL_KIND = \"An arithmetic error (SIGFPE)\";\n        SIGNAL_DETAILS = \"This typically happens when you divide by 0 or produce an overflow.\";\n    } else if (sig == SIGINT) {\n        SIGNAL_KIND = \"An interrupt error (SIGINT)\";\n        SIGNAL_DETAILS = \"This typically happens when your code timed out because it was stuck in an infinite loop.\";\n    } else if (sig == SIGSTACK) {\n        SIGNAL_KIND = \"A stack overflow\";\n        SIGNAL_DETAILS = \"This can happen when you have a function that calls itself infinitely.\";\n    } else if (sig == SIGUSR1) {\n        SIGNAL_KIND = \"Custom signal 1\";\n        SIGNAL_DETAILS = \"This can happen when you produce infinite output in your code.\";\n    }\n    \n#ifndef SPL_AUTOGRADER_MODE\n    std::cerr << std::endl;\n    std::cerr << \"***\" << std::endl;\n    std::cerr << \"*** STANFORD C++ LIBRARY\" << std::endl;\n    std::cerr << (std::string(\"*** \") + SIGNAL_KIND + \" occurred during program execution.\") << std::endl;\n    std::cerr << (std::string(\"*** \") + SIGNAL_DETAILS) << std::endl;\n    std::cerr << \"***\" << std::endl;\n    \n//    if (sig != SIGSTACK) {\n        exceptions::printStackTrace();\n//    } else {\n//        std::string line;\n//        stacktrace::addr2line(stacktrace::getFakeCallStackPointer(), line);\n//        std::cerr << \"*** (unable to print stack trace because of stack memory corruption.)\" << std::endl;\n//        std::cerr << \"*** \" << line << std::endl;\n//    }\n    std::cerr.flush();\n\n    // if in autograder mode, swallow the signal;\n    // if in student code, let it bubble out to crash the app\n    raise(sig == SIGSTACK ? SIGABRT : sig);\n#else // SPL_AUTOGRADER_MODE\n    // throw an exception\n    std::ostringstream out;\n    out << SIGNAL_KIND << \".\" << std::endl;\n    out << SIGNAL_DETAILS << std::endl;\n    error(out.str());\n#endif // SPL_AUTOGRADER_MODE\n}\n\n// puts \"*** \" before each line for multi-line error messages\nstatic std::string insertStarsBeforeEachLine(const std::string& s) {\n    std::string result;\n    for (std::string line : stringSplit(s, \"\\n\")) {\n        if (!result.empty()) {\n            if (!startsWith(line, \"***\")) {\n                line = \"*** \" + line;\n            }\n            result += \"\\n\";\n        }\n        result += line;\n    }\n    return result;\n}\n\n/*\n * A general handler for any uncaught exception.\n * Prints details about the exception and then tries to print a stack trace.\n */\n[[noreturn]] static void stanfordCppLibTerminateHandler() {\n    std::string DEFAULT_EXCEPTION_KIND = \"An exception\";\n    std::string DEFAULT_EXCEPTION_DETAILS = \"(unknown exception details)\";\n    \n    std::string msg;\n    msg += \"\\n\";\n    msg += \"***\\n\";\n    msg += \"*** STANFORD C++ LIBRARY \\n\";\n    msg += \"*** \" + DEFAULT_EXCEPTION_KIND + \" occurred during program execution: \\n\";\n    msg += \"*** \" + DEFAULT_EXCEPTION_DETAILS + \"\\n\";\n    msg += \"***\\n\";\n    \n    std::ostream& out = std::cerr;   // used by FILL_IN_EXCEPTION_TRACE macro\n    try {\n        signalHandlerDisable();   // don't want both a signal AND a terminate() call\n        throw;   // re-throws the exception that already occurred\n    } catch (const ErrorException& ex) {\n        if (ex.hasStackTrace()) {\n            ex.dump();\n        } else {\n            FILL_IN_EXCEPTION_TRACE(ex, \"An ErrorException\", insertStarsBeforeEachLine(ex.what()));\n        }\n    } catch (const std::exception& ex) {\n        FILL_IN_EXCEPTION_TRACE(ex, \"A C++ exception\", insertStarsBeforeEachLine(ex.what()));\n    } catch (const std::string& str) {\n        FILL_IN_EXCEPTION_TRACE(str, \"A string exception\", insertStarsBeforeEachLine(str));\n    } catch (char const* str) {\n        FILL_IN_EXCEPTION_TRACE(str, \"A string exception\", insertStarsBeforeEachLine(str));\n    } catch (int n) {\n        FILL_IN_EXCEPTION_TRACE(n, \"An int exception\", std::to_string(n));\n    } catch (long l) {\n        FILL_IN_EXCEPTION_TRACE(l, \"A long exception\", std::to_string(l));\n    } catch (char c) {\n        FILL_IN_EXCEPTION_TRACE(c, \"A char exception\", charToString(c));\n    } catch (bool b) {\n        FILL_IN_EXCEPTION_TRACE(b, \"A bool exception\", boolToString(b));\n    } catch (double d) {\n        FILL_IN_EXCEPTION_TRACE(d, \"A double exception\", realToString(d));\n    } catch (...) {\n        std::string ex = \"Unknown\";\n        FILL_IN_EXCEPTION_TRACE(ex, \"An exception\", std::string());\n    }\n\n    abort();   // terminate the program with a SIGABRT signal\n}\n\n/*\n * A general handler for any exception thrown that is missing from the throw()\n * clause of a function header.\n * Prints details about the exception and then tries to print a stack trace.\n */\nstatic void stanfordCppLibUnexpectedHandler() {\n    std::string DEFAULT_EXCEPTION_KIND = \"An exception\";\n    std::string DEFAULT_EXCEPTION_DETAILS = \"(unknown exception details)\";\n\n    std::string msg;\n    msg += \"\\n\";\n    msg += \"***\\n\";\n    msg += \"*** STANFORD C++ LIBRARY \\n\";\n    msg += \"*** \" + DEFAULT_EXCEPTION_KIND + \" occurred during program execution: \\n\";\n    msg += \"*** \" + DEFAULT_EXCEPTION_DETAILS + \"\\n\";\n    msg += \"***\\n\";\n\n    std::string kind = \"error\";\n    std::string message = \"\";\n    try {\n        throw;   // re-throws the exception that already occurred\n    } catch (bool b) {\n        kind = \"bool\";\n        message = boolToString(b);\n    } catch (char c) {\n        kind = \"char\";\n        message = charToString(c);\n    } catch (char const* str) {\n        kind = \"string\";\n        message = str;\n    } catch (double d) {\n        kind = \"double\";\n        message = realToString(d);\n    } catch (const ErrorException& ex) {\n        kind = \"error\";\n        message = ex.what();\n    } catch (const std::exception& ex) {\n        kind = \"exception\";\n        message = ex.what();\n    } catch (int n) {\n        kind = \"int\";\n        message = std::to_string(n);\n    } catch (long l) {\n        kind = \"long\";\n        message = std::to_string(l);\n    } catch (std::string str) {\n        kind = \"string\";\n        message = str;\n    } catch (...) {\n        kind = \"unknown\";\n    }\n\n    ErrorException errorEx(message);\n    errorEx.setKind(kind);\n    throw errorEx;\n}\n\n} // namespace exceptions\n\n\n/*\n * File: call_stack_windows.cpp\n * ----------------------------\n * Windows implementation of the call_stack class.\n *\n * @author Marty Stepp\n * @version 2019/04/03\n * - fixed compiler errors for 64-bit Windows MinGW compiler (context struct)\n * @version 2018/10/22\n * - bug fix for STL vector vs Stanford Vector\n * @version 2018/09/12\n * - fixed compiler errors with os_getLastError and other misc warnings\n * @version 2017/10/24\n * - removed SYMOPT_DEBUG from SymSetOptions to avoid spurious console output\n * @version 2017/10/20\n * - changed null/0s to nullptr to remove compiler warnings\n * @version 2016/10/04\n * - removed all static variables (replaced with STATIC_VARIABLE macros)\n * @version 2015/07/05\n * - removed static global Platform variable, replaced by getPlatform as needed\n * @version 2015/05/28\n */\n\n#ifdef _WIN32\n#define INTERNAL_INCLUDE 1\n#include \"call_stack.h\"\n#include <windows.h>\n#  undef MOUSE_EVENT\n#  undef KEY_EVENT\n#  undef MOUSE_MOVED\n#  undef HELP_KEY\n#include <tchar.h>\n#include <assert.h>\n#include <errno.h>\n#include <fstream>\n#include <iomanip>\n#include <iostream>\n#include <signal.h>\n#include <sstream>\n#include <stdlib.h>\n#include <stdbool.h>\n#include <stdint.h>\n#include <string>\n#include <windows.h>\n#include <tchar.h>\n#define _NO_CVCONST_H\n#include <dbghelp.h>\n#include <imagehlp.h>\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"exceptions.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"vector.h\"\n#include <cxxabi.h>\n#define INTERNAL_INCLUDE 1\n#include \"private/static.h\"\n#undef INTERNAL_INCLUDE\n\nnamespace stacktrace {\nSTATIC_CONST_VARIABLE_DECLARE(int, STACK_FRAMES_TO_SKIP, 0)\nSTATIC_CONST_VARIABLE_DECLARE(int, STACK_FRAMES_MAX, 20)\n\n// line = \"ZNK6VectorIiE3getEi at vector.h:587\"\n//         <FUNCTION> at <LINESTR>\nvoid injectAddr2lineInfo(entry& ent, const std::string& line) {\n    ent.line     = 0;\n    int atIndex = stringIndexOf(line, \" at \");\n    if (atIndex >= 0) {\n        if (ent.function.empty()) {\n            ent.function = line.substr(0, atIndex);\n        }\n        ent.lineStr  = line.substr(atIndex + 4);\n\n        int colonIndex = stringIndexOf(ent.lineStr, \":\");\n        if (colonIndex >= 0) {\n            ent.file = ent.lineStr.substr(0, colonIndex);\n            std::string rest = ent.lineStr.substr(colonIndex + 1);\n            if (stringIsInteger(rest)) {\n                ent.line = stringToInteger(rest);\n            }\n        }\n    } else {\n        if (ent.function.empty()) {\n            ent.function = line;\n        }\n    }\n\n    // demangle function name if necessary\n    if (startsWith(ent.function, \"Z\")) {\n        ent.function = \"_\" + ent.function;\n    }\n\n    if (startsWith(ent.function, \"_Z\")) {\n        int status;\n        char* demangled = abi::__cxa_demangle(ent.function.c_str(), nullptr, nullptr, &status);\n        if (status == 0 && demangled) {\n            ent.function = demangled;\n        }\n    }\n}\n\nstd::ostream& operator <<(std::ostream& out, const entry& ent) {\n    return out << ent.toString();\n}\n\ncall_stack::call_stack(const size_t /*num_discard = 0*/) {\n    // getting a stack trace on Windows / MinGW is loads of fun (not)\n    Vector<void*> traceVector;\n    HANDLE process = GetCurrentProcess();\n    HANDLE thread = GetCurrentThread();\n\n    // dear student: if you get a compiler error about 'Eip' not being found here,\n    // it means you're using a 64-bit compiler like the MS Visual C++ compiler,\n    // and not the 32-bit MinGW compiler we instructed you to install.\n    // Please re-install Qt Creator with the proper compiler (MinGW 32-bit) enabled.\n\n    void* fakeStackPtr = stacktrace::fakeCallStackPointer();\n    if (fakeStackPtr) {\n        // set up fake stack for partial trace\n        LPEXCEPTION_POINTERS exceptionInfo = (LPEXCEPTION_POINTERS) fakeStackPtr;\n        if (exceptionInfo->ExceptionRecord->ExceptionCode == EXCEPTION_STACK_OVERFLOW) {\n            // can't do stack walking in Windows when a stack overflow happens :-/\n#if _WIN64\n            traceVector.push_back((void*) exceptionInfo->ContextRecord->Rip);\n#else\n            traceVector.push_back((void*) exceptionInfo->ContextRecord->Eip);\n#endif // _WIN64\n        } else {\n            SymInitialize(GetCurrentProcess(), nullptr, TRUE);\n            STACKFRAME frame = {0};\n#if _WIN64\n            frame.AddrPC.Offset    = exceptionInfo->ContextRecord->Rip;\n            frame.AddrStack.Offset = exceptionInfo->ContextRecord->Rsp;\n            frame.AddrFrame.Offset = exceptionInfo->ContextRecord->Rbp;\n#else\n            frame.AddrPC.Offset    = exceptionInfo->ContextRecord->Eip;\n            frame.AddrStack.Offset = exceptionInfo->ContextRecord->Esp;\n            frame.AddrFrame.Offset = exceptionInfo->ContextRecord->Ebp;\n#endif // _WIN64\n            frame.AddrPC.Mode      = AddrModeFlat;\n            frame.AddrStack.Mode   = AddrModeFlat;\n            frame.AddrFrame.Mode   = AddrModeFlat;\n            while ((int) traceVector.size() < STATIC_VARIABLE(STACK_FRAMES_MAX) &&\n                   StackWalk(IMAGE_FILE_MACHINE_I386,\n                             process,\n                             thread,\n                             &frame,\n                             exceptionInfo->ContextRecord,\n                             nullptr,\n                             SymFunctionTableAccess,\n                             SymGetModuleBase,\n                             nullptr)) {\n                traceVector.push_back((void*) frame.AddrPC.Offset);\n            }\n        }\n    } else {\n        if (!::SymSetOptions(\n                             // ::SymGetOptions()\n                             // SYMOPT_DEBUG\n                               SYMOPT_DEFERRED_LOADS\n                             | SYMOPT_INCLUDE_32BIT_MODULES\n                             // | SYMOPT_UNDNAME\n                             | SYMOPT_CASE_INSENSITIVE\n                             | SYMOPT_LOAD_LINES)) {\n            // std::cout << \"SymSetOptions failed!\" << std::endl;\n            // return;\n        }\n        if (!::SymInitialize(\n                /* process */ process,\n                /* user-defined search path */ nullptr,\n                /* include current process */ TRUE)) {\n            // std::cout << \"SymInitialize failed!\" << std::endl;\n            // return;\n        }\n\n        void* trace[STATIC_VARIABLE(STACK_FRAMES_MAX)];\n        USHORT frameCount = ::CaptureStackBackTrace(\n                    /* framesToSkip */ STATIC_VARIABLE(STACK_FRAMES_TO_SKIP),\n                    /* framesToCapture; must be < 63 */ STATIC_VARIABLE(STACK_FRAMES_MAX),\n                    trace,\n                    /* hash */ nullptr\n                    );\n        for (int i = 0; i < frameCount; i++) {\n            traceVector.push_back(trace[i]);\n        }\n\n        // try to load module symbol information; this always fails for me  :-/\n        DWORD BaseAddr = 0;\n        DWORD FileSize = 0;\n        const char* progFileC = exceptions::getProgramNameForStackTrace().c_str();\n        char* progFile = const_cast<char*>(progFileC);\n        if (!::SymLoadModule(\n                process,      // Process handle of the current process\n                nullptr,      // Handle to the module's image file (not needed)\n                progFile,     // Path/name of the file\n                nullptr,      // User-defined short name of the module (it can be null)\n                BaseAddr,     // Base address of the module (cannot be null if .PDB file is used, otherwise it can be null)\n                FileSize)) {      // Size of the file (cannot be null if .PDB file is used, otherwise it can be null)\n            // std::cerr << \"Error: SymLoadModule() failed: \" << platform::os_getLastError() << std::endl;\n            // return;\n        }\n    }\n\n    // let's also try to get the line numbers via an external command-line process 'addr2line'\n    // (ought to be able to get this information through C function 'backtrace', but for some\n    // reason, Qt Creator's shipped version of MinGW does not include this functionality, argh)\n    std::string addr2lineOutput;\n    Vector<std::string> addr2lineLines;\n    if (!traceVector.isEmpty()) {\n        int result = addr2line_all(traceVector, addr2lineOutput);\n        if (result == 0) {\n            addr2lineLines = stringSplit(addr2lineOutput, \"\\n\");\n        }\n    }\n\n    SYMBOL_INFO* symbol = (SYMBOL_INFO*) calloc(sizeof(SYMBOL_INFO) + 1024 * sizeof(char), 1);\n    symbol->MaxNameLen   = 1020;\n    symbol->SizeOfStruct = sizeof(SYMBOL_INFO);\n    for (int i = 0; i < (int) traceVector.size(); ++i) {\n        entry ent;\n        ent.address = traceVector[i];\n        if (process && ::SymFromAddr(process, (DWORD64) traceVector[i], nullptr, symbol)) {\n            ent.function = symbol->Name;\n        }\n        // internal stuff failed, so load from external process\n        if (i < addr2lineLines.size()) {\n            injectAddr2lineInfo(ent, addr2line_clean(addr2lineLines[i]));\n        } else {\n            injectAddr2lineInfo(ent, \"\");\n        }\n\n        if (!ent.function.empty() || ent.line > 0) {\n            stack.push_back(ent);\n        }\n    }\n    free(symbol);\n}\n\ncall_stack::~call_stack() throw() {\n    // automatic cleanup\n}\n\n} // namespace stacktrace\n\n#endif // _WIN32\n\n/*\n * File: timer.cpp\n * ---------------\n * Implementation of the Timer class as declared in timer.h.\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"timer.h\"\n#include <sys/time.h>\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#undef INTERNAL_INCLUDE\n\nTimer::Timer(bool autostart) {\n    _startMS = 0;\n    _stopMS = 0;\n    _isStarted = false;\n    if (autostart) {\n        start();\n    }\n}\n\nlong Timer::elapsed() const {\n    return _stopMS - _startMS;\n}\n\nbool Timer::isStarted() const {\n    return _isStarted;\n}\n\nvoid Timer::start() {\n    _startMS = currentTimeMS();\n    _isStarted = true;\n}\n\nlong Timer::stop() {\n    _stopMS = currentTimeMS();\n    if (!_isStarted) {\n        // error(\"Timer is not started\");\n        _startMS = _stopMS;\n    }\n    _isStarted = false;\n    return elapsed();\n}\n\nlong Timer::currentTimeMS() {\n    timeval time;\n    gettimeofday(&time, nullptr);\n    return (time.tv_sec * 1000000 + time.tv_usec) / 1000;\n}\n\n/*\n * File: note.cpp\n * --------------\n * This file implements the body of each member of the Note class.\n *\n * @author Marty Stepp\n * @version 2017/09/29\n * - updated to use composite hashCode function\n * @version 2016/10/14\n * - modified floating-point equality tests to use floatingPointEqual function\n * @version 2016/09/26\n * - initial version\n * @since 2016/09/26\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"note.h\"\n#include <sstream>\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gmath.h\"\n#define INTERNAL_INCLUDE 1\n#include \"hashcode.h\"\n#undef INTERNAL_INCLUDE\n\n// line e.g. \"1.5 G 5 NATURAL false\"\nNote::Note(std::string line) {\n    std::istringstream input(line);\n\n    // parse duration\n    double dur;\n    if (!(input >> dur)) {\n        error(\"illegal/missing duration\");\n    }\n    setDuration(dur);\n\n    // parse pitch\n    std::string pit;\n    if (!(input >> pit)) {\n        error(\"illegal/missing pitch\");\n    }\n    if (pit == \"A\") {\n        setPitch(A);\n    } else if (pit == \"B\") {\n        setPitch(B);\n    } else if (pit == \"C\") {\n        setPitch(C);\n    } else if (pit == \"D\") {\n        setPitch(D);\n    } else if (pit == \"E\") {\n        setPitch(E);\n    } else if (pit == \"F\") {\n        setPitch(F);\n    } else if (pit == \"G\") {\n        setPitch(G);\n    } else if (pit == \"R\") {\n        setPitch(R);\n    } else {\n        error(\"illegal pitch\");\n    }\n\n    if (isRest()) {\n        // rests always have fixed octave and accidental values\n        setOctave(OCTAVE_MIN + 1);\n        setAccidental(NATURAL);\n    } else {\n        // parse octave\n        int oct;\n        if (!(input >> oct)) {\n            error(\"illegal/missing octave\");\n        }\n        setOctave(oct);\n\n        // parse accidental\n        std::string acc;\n        if (!(input >> acc)) {\n            error(\"illegal/missing accidental\");\n        }\n        if (acc == \"SHARP\") {\n            setAccidental(SHARP);\n        } else if (acc == \"NATURAL\") {\n            setAccidental(NATURAL);\n        } else if (acc == \"FLAT\") {\n            setAccidental(FLAT);\n        } else {\n            error(\"illegal accidental\");\n        }\n    }\n\n    // parse repeat\n    std::string repStr;\n    if (!(input >> repStr)) {\n        error(\"illegal/missing repeat\");\n    }\n    if (repStr == \"true\") {\n        setRepeat(true);\n    } else if (repStr == \"false\") {\n        setRepeat(false);\n    } else {\n        error(\"illegal repeat\");\n    }\n}\n\nNote::Note(double duration, Pitch pitch, int octave, Accidental accidental, bool repeat) {\n    setDuration(duration);\n    setPitch(pitch);\n    setOctave(octave);\n    setAccidental(accidental);\n    setRepeat(repeat);\n}\n\nbool Note::equals(const Note& note2) const {\n    return floatingPointEqual(duration, note2.duration)\n            && pitch == note2.pitch\n            && octave == note2.octave\n            && accidental == note2.accidental\n            && repeat == note2.repeat;\n}\n\nNote::Accidental Note::getAccidental() const {\n    return accidental;\n}\n\ndouble Note::getDuration() const {\n    return duration;\n}\n\nint Note::getOctave() const {\n    return octave;\n}\n\nNote::Pitch Note::getPitch() const {\n    return pitch;\n}\n\nbool Note::isRepeat() const {\n    return repeat;\n}\n\nbool Note::isRest() const {\n    return pitch == R;\n}\n\nvoid Note::play() const {\n#ifdef NOTE_DEBUG\n    if (NOTE_DEBUG) {\n        printf(\"%s\\n\", toString().c_str());\n    }\n#endif // NOTE_DEBUG\n    // TODO\n    // stanfordcpplib::getPlatform()->note_play(toString());\n}\n\nvoid Note::setAccidental(Note::Accidental accidental) {\n    if (accidental != NATURAL && accidental != SHARP && accidental != FLAT) {\n        error(\"ilegal accidental value\");\n    }\n    if (isRest()) {\n        this->accidental = NATURAL;\n    } else {\n        this->accidental = accidental;\n    }\n}\n\nvoid Note::setDuration(double duration) {\n    if (duration < 0.0) {\n        error(\"ilegal negative duration\");\n    }\n    this->duration = duration;\n}\n\nvoid Note::setOctave(int octave) {\n    if (octave < OCTAVE_MIN || octave > OCTAVE_MAX) {\n        error(\"illegal octave\");\n    }\n    if (isRest()) {\n        this->octave = OCTAVE_MIN + 1;\n    } else {\n        this->octave = octave;\n    }\n}\n\nvoid Note::setPitch(Note::Pitch pitch) {\n    if (pitch != A && pitch != B && pitch != C && pitch != D && pitch != E\n            && pitch != F && pitch != G && pitch != R) {\n        error(\"illegal pitch\");\n    }\n    this->pitch = pitch;\n}\n\nvoid Note::setRepeat(bool repeat) {\n    this->repeat = repeat;\n}\n\nstd::string Note::toString() const {\n    std::ostringstream out;\n    out << *this;\n    return out.str();\n}\n\nbool operator ==(const Note& note1, const Note& note2) {\n    return note1.equals(note2);\n}\n\nbool operator !=(const Note& note1, const Note& note2) {\n    return !note1.equals(note2);\n}\n\nstd::ostream& operator <<(std::ostream& out, const Note& note) {\n    static std::string PITCH_STR[] {\"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"R\"};\n    static std::string ACCIDENTAL_STR[] {\"SHARP\", \"NATURAL\", \"FLAT\"};\n\n    out << note.getDuration() << \" \" << PITCH_STR[note.getPitch()] << \" \";\n    if (!note.isRest()) {\n        out << note.getOctave() << \" \" << ACCIDENTAL_STR[note.getAccidental()] << \" \";\n    }\n    return out << std::boolalpha << note.isRepeat();\n}\n\nint hashCode(const Note& note) {\n    return hashCode(\n            note.getDuration(),\n            note.getPitch(),\n            note.getOctave(),\n            note.getAccidental(),\n            note.isRepeat());\n}\n\n/*\n * File: sound.cpp\n * ---------------\n * Implementation of the Sound class.\n * \n * @version 2015/07/05\n * - removed static global Platform variable, replaced by getPlatform as needed\n * @version 2014/10/08\n * - removed 'using namespace' statement\n * - removed unused include statements\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"sound.h\"\n#include <QUrl>\n#define INTERNAL_INCLUDE 1\n#include \"filelib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gthread.h\"\n#define INTERNAL_INCLUDE 1\n#include \"require.h\"\n#undef INTERNAL_INCLUDE\n\n/*static*/ QMediaPlayer* Sound::_qmediaPlayer = nullptr;\n\n/*static*/ long Sound::getDuration() {\n    initialize();\n    return _qmediaPlayer->duration();\n}\n\n/*static*/ int Sound::getVolume() {\n    initialize();\n    return _qmediaPlayer->volume();\n}\n\n/*static*/ void Sound::initialize() {\n    if (!_qmediaPlayer) {\n        GThread::runOnQtGuiThread([]() {\n            if (!_qmediaPlayer) {\n                _qmediaPlayer = new QMediaPlayer;\n            }\n        });\n    }\n}\n\n/*static*/ void Sound::pause() {\n    initialize();\n    _qmediaPlayer->pause();\n}\n\n/*static*/ void Sound::playSound(const std::string& filename) {\n    initialize();\n    std::string absPath = getAbsolutePath(filename);\n    if (!fileExists(absPath)) {\n        error(\"Sound::playSound: file not found: \" + filename);\n    }\n\n    GThread::runOnQtGuiThreadAsync([absPath]() {\n        _qmediaPlayer->setMedia(QUrl::fromLocalFile(QString::fromStdString(absPath)));\n        _qmediaPlayer->play();\n    });\n}\n\n/*static*/ void Sound::stop() {\n    initialize();\n    _qmediaPlayer->stop();\n}\n\n/*static*/ void Sound::setVolume(int volume) {\n    initialize();\n    require::inRange(volume, 0, 100, \"Sound::setVolume\", \"volume\");\n    _qmediaPlayer->setVolume(volume);\n}\n\nSound::Sound(std::string filename)\n        : _filename(filename) {\n    initialize();\n}\n\nSound::~Sound() {\n    // TODO\n}\n\nvoid Sound::play() {\n    playSound(_filename);\n}\n\n/*\n * memory.cpp\n * ----------\n * This file defines utility functions dealing with memory regions and\n * allocation.\n *\n * @author Marty Stepp\n * @version 2019/04/16\n * - bug fixes for WIN64\n * @version 2018/12/04\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"memory.h\"\n#include <cstddef>\n#undef INTERNAL_INCLUDE\n\nnamespace stanfordcpplib {\nnamespace memory {\n\nvoid computeMemoryDistances(\n        void* const p,\n        uintptr_t& stackDist,\n        uintptr_t& heapDist,\n        uintptr_t& staticDist) {\n    static int si = 0;\n    int i = 0;\n    int* pi = new int(0);\n\n    // don't use abs/subtraction here because it can over/underflow with very large integers\n    stackDist = p > &i ?\n            reinterpret_cast<uintptr_t>(p) - reinterpret_cast<uintptr_t>(&i) :\n            reinterpret_cast<uintptr_t>(&i) - reinterpret_cast<uintptr_t>(p);\n    heapDist = p > pi ?\n            reinterpret_cast<uintptr_t>(p) - reinterpret_cast<uintptr_t>(pi) :\n            reinterpret_cast<uintptr_t>(pi) - reinterpret_cast<uintptr_t>(p);\n    staticDist = p > &si ?\n            reinterpret_cast<uintptr_t>(p) - reinterpret_cast<uintptr_t>(&si) :\n            reinterpret_cast<uintptr_t>(&si) - reinterpret_cast<uintptr_t>(p);\n    delete pi;\n}\n\nbool isOnHeap(void* const p) {\n    uintptr_t stackDist, heapDist, staticDist;\n    computeMemoryDistances(p, stackDist, heapDist, staticDist);\n    return heapDist < stackDist && heapDist < staticDist;\n}\n\nbool isOnStack(void* const p) {\n    uintptr_t stackDist, heapDist, staticDist;\n    computeMemoryDistances(p, stackDist, heapDist, staticDist);\n    return stackDist < heapDist && stackDist < staticDist;\n}\n\nbool isOnStatic(void* const p) {\n    uintptr_t stackDist, heapDist, staticDist;\n    computeMemoryDistances(p, stackDist, heapDist, staticDist);\n    return staticDist < stackDist && staticDist < heapDist;\n}\n\n} // namespace memory\n} // namespace stanfordcpplib\n\n/*\n * File: random.cpp\n * ----------------\n * This file implements the random.h interface.\n * \n * @version 2019/05/16\n * - added randomColor that takes min/max RGB\n * @version 2017/10/05\n * - added randomFeedClear\n * @version 2017/09/28\n * - moved random 'feed' functions into autograder namespace\n * - ensure that randomly fed integers are within the specified range\n * @version 2016/10/04\n * - removed all static variables (replaced with STATIC_VARIABLE macros)\n * @version 2016/08/02\n * - added randomColor, randomColorString\n * @version 2014/10/19\n * - alphabetized functions\n * @version 2014/10/08\n * - removed 'using namespace' statement\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"random.h\"\n#include <cstdlib>\n#include <cmath>\n#include <ctime>\n#include <iostream>\n#include <iomanip>\n#include <queue>\n#include <sstream>\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"private/static.h\"\n#undef INTERNAL_INCLUDE\n\n/* Private function prototype */\n\nstatic void initRandomSeed();\n\n/* internal buffer of fixed random numbers to return; used by autograders */\nSTATIC_VARIABLE_DECLARE_COLLECTION_EMPTY(std::queue<bool>, fixedBools)\nSTATIC_VARIABLE_DECLARE_COLLECTION_EMPTY(std::queue<int>, fixedInts)\nSTATIC_VARIABLE_DECLARE_COLLECTION_EMPTY(std::queue<double>, fixedReals)\n\nnamespace autograder {\nvoid randomFeedBool(bool value) {\n    STATIC_VARIABLE(fixedBools).push(value);\n}\n\nvoid randomFeedClear() {\n    STATIC_VARIABLE(fixedBools) = std::queue<bool>();\n    STATIC_VARIABLE(fixedInts) = std::queue<int>();\n    STATIC_VARIABLE(fixedReals) = std::queue<double>();\n}\n\nvoid randomFeedInteger(int value) {\n    STATIC_VARIABLE(fixedInts).push(value);\n}\n\nvoid randomFeedReal(double value) {\n    STATIC_VARIABLE(fixedReals).push(value);\n}\n}\n/* end 'fixed' internal stuff */\n\nbool randomBool() {\n    return randomChance(0.5);\n}\n\n/*\n * Implementation notes: randomChance\n * ----------------------------------\n * The code for randomChance calls randomReal(0, 1) and then checks\n * whether the result is less than the requested probability.\n */\nbool randomChance(double p) {\n    if (!STATIC_VARIABLE(fixedBools).empty()) {\n        bool top = STATIC_VARIABLE(fixedBools).front();\n        STATIC_VARIABLE(fixedBools).pop();\n        return top;\n    }\n    initRandomSeed();\n    return randomReal(0, 1) < p;\n}\n\nint randomColor() {\n    if (!STATIC_VARIABLE(fixedInts).empty()) {\n        int top = STATIC_VARIABLE(fixedInts).front();\n        STATIC_VARIABLE(fixedInts).pop();\n        return top & 0x00ffffff;\n    }\n    initRandomSeed();\n    return rand() & 0x00ffffff;\n}\n\nint randomColor(int minRGB, int maxRGB) {\n    if (!STATIC_VARIABLE(fixedInts).empty()) {\n        return randomColor();\n    }\n    if (minRGB < 0 || minRGB > 255 || maxRGB < 0 || maxRGB > 255\n            || minRGB > maxRGB) {\n        error(\"randomColor: min/max values out of range\");\n    }\n    int r = randomInteger(minRGB, maxRGB);\n    int g = randomInteger(minRGB, maxRGB);\n    int b = randomInteger(minRGB, maxRGB);\n    return r << 16 | g << 8 | b;\n}\n\n// see convertRGBToColor in gcolor.h (repeated here to avoid Qt dependency)\nstd::string randomColorString() {\n    int rgb = randomColor();\n    std::ostringstream os;\n    os << std::hex << std::uppercase << \"#\";\n    os << std::setw(2) << std::setfill('0') << (rgb >> 16 & 0xFF);\n    os << std::setw(2) << std::setfill('0') << (rgb >> 8 & 0xFF);\n    os << std::setw(2) << std::setfill('0') << (rgb & 0xFF);\n    return os.str();\n}\n\nstd::string randomColorString(int minRGB, int maxRGB) {\n    int rgb = randomColor(minRGB, maxRGB);\n    std::ostringstream os;\n    os << std::hex << std::uppercase << \"#\";\n    os << std::setw(2) << std::setfill('0') << (rgb >> 16 & 0xFF);\n    os << std::setw(2) << std::setfill('0') << (rgb >> 8 & 0xFF);\n    os << std::setw(2) << std::setfill('0') << (rgb & 0xFF);\n    return os.str();\n}\n\n/*\n * Implementation notes: randomInteger\n * -----------------------------------\n * The code for randomInteger produces the number in four steps:\n *\n * 1. Generate a random real number d in the range [0 .. 1).\n * 2. Scale the number to the range [0 .. N) where N is the number of values.\n * 3. Translate the number so that the range starts at the appropriate value.\n * 4. Convert the result to the next lower integer.\n *\n * The implementation is complicated by the fact that both the expression\n *\n *     RAND_MAX + 1\n *\n * and the expression for the number of values\n *\n *     high - low + 1\n *\n * can overflow the integer range.  These calculations must therefore be\n * performed using doubles instead of ints.\n */\nint randomInteger(int low, int high) {\n    if (!STATIC_VARIABLE(fixedInts).empty()) {\n        int top = STATIC_VARIABLE(fixedInts).front();\n        STATIC_VARIABLE(fixedInts).pop();\n        if (top < low || top > high) {\n            // make sure the value is in the given range\n            // (assumes that low/high don't overflow int range)\n            int range = high - low + 1;\n            top = low + std::abs(top) % range;\n        }\n        return top;\n    }\n    initRandomSeed();\n    double d = rand() / (double(RAND_MAX) + 1);\n    double s = d * (double(high) - low + 1);\n    return int(floor(low + s));\n}\n\n/*\n * Implementation notes: randomReal\n * --------------------------------\n * The code for randomReal is similar to that for randomInteger,\n * without the final conversion step.\n */\ndouble randomReal(double low, double high) {\n    if (!STATIC_VARIABLE(fixedReals).empty()) {\n        double top = STATIC_VARIABLE(fixedReals).front();\n        STATIC_VARIABLE(fixedReals).pop();\n        return top;\n    }\n    initRandomSeed();\n    double d = rand() / (double(RAND_MAX) + 1);\n    double s = d * (high - low);\n    return low + s;\n}\n\n/*\n * Implementation notes: setRandomSeed\n * -----------------------------------\n * The setRandomSeed function simply forwards its argument to srand.\n * The call to initRandomSeed is required to set the initialized flag.\n */\nvoid setRandomSeed(int seed) {\n    initRandomSeed();\n    srand(seed);\n}\n\n/*\n * Implementation notes: initRandomSeed\n * ------------------------------------\n * The initRandomSeed function declares a static variable that keeps track\n * of whether the seed has been initialized.  The first time initRandomSeed\n * is called, initialized is false, so the seed is set to the current time.\n */\nstatic void initRandomSeed() {\n    static bool _initialized = false;\n    if (!_initialized) {\n        srand(int(time(nullptr)));\n        rand();   // BUGFIX: throwaway call to get randomness going\n        _initialized = true;\n    }\n}\n\n/*\n * File: recursion.cpp\n * -------------------\n * This file implements the recursion.h interface.\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"recursion.h\"\n#define INTERNAL_INCLUDE 1\n#include \"exceptions.h\"\n#define INTERNAL_INCLUDE 1\n#include \"call_stack.h\"\n#undef INTERNAL_INCLUDE\n\nint getRecursionIndentLevel() {\n    // constructing the following object jumps into fancy code in call_stack_gcc/windows.cpp\n    // to rebuild the stack trace; implementation differs for each operating system\n    stacktrace::call_stack trace;\n    Vector<stacktrace::entry> entries = trace.stack;\n\n    std::string currentFunction = \"\";\n    int currentFunctionCount = 0;\n    for (int i = 0; i < entries.size(); ++i) {\n        // remove references to std:: namespace\n        if (exceptions::shouldFilterOutFromStackTrace(entries[i].function)\n                || entries[i].function.find(\"recursionIndent(\") != std::string::npos\n                || entries[i].function.find(\"getRecursionIndentLevel(\") != std::string::npos) {\n            continue;\n        } else if (currentFunction.empty()) {\n            currentFunction = entries[i].function;\n            currentFunctionCount = 1;\n        } else if (entries[i].function == currentFunction) {\n            currentFunctionCount++;\n        } else {\n            break;\n        }\n    }\n    return currentFunctionCount;\n}\n\nstd::string recursionIndent(const std::string& indenter) {\n    int indent = getRecursionIndentLevel();\n    std::string result = \"\";\n    for (int i = 0; i < indent - 1; i++) {\n        result += indenter;\n    }\n    return result;\n}\n\n/*\n * File: direction.cpp\n * -------------------\n * This file implements the direction.h interface.\n * \n * @version 2016/08/04\n * - fixed operator >> to not throw errors\n * @version 2014/10/08\n * - removed 'using namespace' statement\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"direction.h\"\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"tokenscanner.h\"\n#undef INTERNAL_INCLUDE\n\n/*\n * Implementation notes: leftFrom, rightFrom, opposite\n * ---------------------------------------------------\n * These functions use the remainder operator to cycle through the\n * internal values of the enumeration type.  Note that the leftFrom\n * function cannot subtract 1 from the direction because the result\n * might then be negative; adding 3 achieves the same effect but\n * ensures that the values remain positive.\n */\n\nDirection leftFrom(Direction dir) {\n    return Direction((dir + 3) % 4);\n}\n\nDirection rightFrom(Direction dir) {\n    return Direction((dir + 1) % 4);\n}\n\nDirection opposite(Direction dir) {\n    return Direction((dir + 2) % 4);\n}\n\n/*\n * Implementation notes: directionToString\n * ---------------------------------------\n * The C++ compiler requires the default clause to ensure that this\n * function always returns a string, even if the direction is not one\n * of the legal values.\n */\n\nstd::string directionToString(Direction dir) {\n    switch (dir) {\n    case NORTH:\n        return \"NORTH\";\n    case EAST:\n        return \"EAST\";\n    case SOUTH:\n        return \"SOUTH\";\n    default:\n    // case WEST:\n        return \"WEST\";   // BUGFIX 2014/07/09: removed unreachable 'default' case\n    }\n}\n\n/*\n * Implementation notes: <<\n * ------------------------\n * This operator must return the stream by reference after printing\n * the value.  The operator << returns this stream, so the function\n * can be implemented as a single line.\n */\n\nstd::ostream& operator <<(std::ostream& os, const Direction& dir) {\n    return os << directionToString(dir);\n}\n\n/*\n * Implementation notes: >>\n * ------------------------\n * This implementation uses the TokenScanner to read tokens from the\n * stream.\n */\n\nstd::istream& operator >>(std::istream& is, Direction& dir) {\n    TokenScanner scanner(is);\n    scanner.ignoreWhitespace();\n    std::string token = toUpperCase(scanner.nextToken());\n    if (token == \"\") {\n        dir = Direction(-1);\n    } else if (startsWith(\"NORTH\", token)) {\n        dir = NORTH;\n    } else if (startsWith(\"EAST\", token)) {\n        dir = EAST;\n    } else if (startsWith(\"SOUTH\", token)) {\n        dir = SOUTH;\n    } else if (startsWith(\"WEST\", token)) {\n        dir = WEST;\n    } else {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n        error(\"Direction::operator >>: Unrecognized direction \\\"\" + token + \"\\\"\");\n#endif\n        is.setstate(std::ios_base::failbit);\n        return is;\n    }\n    return is;\n}\n\n/*\n * Implementation notes: ++\n * ------------------------\n * The int parameter in the signature for this operator is a marker used\n * by the C++ compiler to identify the suffix form of the operator.  Note\n * that the value after incrementing a variable containing WEST will be\n * out of the Direction range.  That fact will not cause a problem if\n * this operator is used only in the for loop idiom for which it is defined.\n */\n\nDirection operator ++(Direction& dir, int) {\n    Direction old = dir;\n    dir = Direction(dir + 1);\n    return old;\n}\n\n/*\n * File: stringutils.cpp\n * ---------------------\n * This file contains implementations of utility functions related to strings.\n * See stringutils.h for documentation of each member.\n * \n * @author Marty Stepp\n * @version 2017/10/20\n * - changed string to const string& in all functions\n * @version 2016/11/09\n * - added trimToSize function\n * @version 2014/10/31\n * - fixed bug in string trimToHeight function\n * @since 2014/03/01\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"stringutils.h\"\n#include <algorithm>\n#include <cctype>\n#include <cmath>\n#include <sstream>\n#undef INTERNAL_INCLUDE\n\nnamespace stringutils {\nint charsDifferent(const std::string& s1, const std::string& s2) {\n    int length = std::min(s1.length(), s2.length());\n    int count = 0;\n    for (int i = 0; i < length; i++) {\n        if (s1[i] != s2[i]) {\n            count++;\n        }\n    }\n    return count;\n}\n\nstd::string collapseSpaces(const std::string& s) {\n    std::ostringstream result;\n    char last = '\\0';\n    for (int i = 0; i < (int) s.length(); i++) {\n        if (s[i] == ' ' && last == ' ') {\n            continue;\n        }\n        last = s[i];\n        result << last;\n    }\n    return result.str();\n}\n\nVector<std::string> explodeLines(const std::string& s) {\n    Vector<std::string> result;\n    std::string line;\n    for (size_t i = 0; i < s.length(); i++) {\n        char ch = s[i];\n        if (ch == '\\n') {\n            // end of line\n            result.push_back(trimR(line));\n            line = \"\";\n        } else if (ch != '\\r') {\n            line += ch;\n        }\n    }\n    if ((int) line.length() > 0 || s.empty()) {\n        result.push_back(line);\n    }\n    return result;\n}\n\nint height(const std::string& s) {\n    std::string line;\n    int height = 0;\n    for (size_t i = 0; i < s.length(); i++) {\n        char ch = s[i];\n        if (ch == '\\n') {\n            // end of line\n            height++;\n            line = \"\";\n        } else if (ch != '\\r') {\n            line += ch;\n        }\n    }\n    if ((int) line.length() > 0) {\n        height++;\n    }\n    return height;\n}\n\nstd::string implode(const Vector<std::string>& v, const std::string& delimiter) {\n    if (v.isEmpty()) {\n        return \"\";\n    } else {\n        std::string result = v[0];\n        for (int i = 1; i < v.size(); i++) {\n            result += delimiter;\n            result += v[i];\n        }\n        return result;\n    }\n}\n\nstd::string indent(const std::string& s, int spaces) {\n    Vector<std::string> lines = explodeLines(s);\n    Vector<std::string> newLines;\n    std::string indentStr = \"\";\n    for (int i = 0; i < spaces; i++) {\n        indentStr += \" \";\n    }\n    for (const std::string& line : lines) {\n        newLines.add(indentStr + line);\n    }\n    return implode(newLines);\n}\n\nstd::string makeSloppy(const std::string& s) {\n    return collapseSpaces(removeBlankLines(s));\n}\n\nstd::string removeBlankLines(const std::string& s) {\n    Vector<std::string> lines = explodeLines(s);\n    Vector<std::string> newLines;\n    for (std::string line : lines) {\n        line = trimR(line);\n        if (line.length() > 0) {\n            newLines.add(line);\n        }\n    }\n    return implode(newLines, \"\\n\");\n}\n\nstd::string stripWhitespace(const std::string& s) {\n    std::ostringstream result;\n    for (size_t i = 0; i < s.length(); i++) {\n        if (!isspace(s[i])) {\n            result << tolower(s[i]);\n        }\n    }\n    return result.str();\n}\n\nstd::string toLowerCase(const std::string& s) {\n    std::string result;\n    for (size_t i = 0; i < s.length(); i++) {\n        result += tolower(s[i]);\n    }\n    return result;\n}\n\nstd::string toPrintable(int ch) {\n    if (ch == '\\n') {\n        return \"'\\\\n'\";\n    } else if (ch == '\\t') {\n        return \"'\\\\t'\";\n    } else if (ch == '\\r') {\n        return \"'\\\\r'\";\n    } else if (ch == '\\f') {\n        return \"'\\\\f'\";\n    } else if (ch == '\\b') {\n        return \"'\\\\b'\";\n    } else if (ch == '\\0') {\n        return \"'\\\\0'\";\n    } else if (ch == ' ') {\n        return \"' '\";\n    } else if (!isgraph(ch)) {\n        return \"???\";\n    } else {\n        return std::string(\"'\") + (char) ch + std::string(\"'\");\n    }\n}\n\nstd::string trimR(const std::string& s) {\n    std::string trimmed = s;\n    while (!trimmed.empty() && isspace(trimmed[trimmed.length() - 1])) {\n        trimmed.erase(trimmed.length() - 1, 1);\n    }\n    return trimmed;\n}\n\nstd::string trimToHeight(const std::string& s, int height, const std::string& suffix) {\n    Vector<std::string> lines = explodeLines(s);\n    int lineCount = lines.size();\n    bool wasTooTall = lineCount > height;\n    while (lines.size() > height) {\n        lines.remove(lines.size() - 1);\n    }\n    if (wasTooTall && !suffix.empty()) {\n        lines.add(suffix + \" (\" + std::to_string(lineCount - height) + \" line(s) truncated)\");\n    }\n    return implode(lines);\n}\n\nstd::string trimToSize(const std::string& s, int width, int height, const std::string& suffix) {\n    std::string trimmed = trimToHeight(s, height, suffix);\n    trimmed = trimToWidth(trimmed, width, suffix);\n    return trimmed;\n}\n\nstd::string trimToWidth(const std::string& s, int width, const std::string& suffix) {\n    Vector<std::string> lines = explodeLines(s);\n    for (int i = 0; i < lines.size(); i++) {\n        if ((int) lines[i].length() > width) {\n            lines[i] = lines[i].substr(0, width);\n            if (!suffix.empty()) {\n                lines[i] += suffix;\n            }\n        }\n    }\n    return implode(lines);\n}\n\n// truncate string with ... between\nstd::string truncate(const std::string& s, int length, const std::string& suffix) {\n    int slength = s.length();\n    if (slength > length) {\n        return s.substr(0, length) + suffix;\n    } else {\n        return s;\n    }\n}\n\nint width(const std::string& s) {\n    std::string line;\n    size_t width = 0;\n    for (size_t i = 0; i < s.length(); i++) {\n        char ch = s[i];\n        if (ch == '\\n') {\n            // end of line\n            if (line.length() > width) {\n                width = line.length();\n            }\n            line = \"\";\n        } else if (ch != '\\r') {\n            line += ch;\n        }\n    }\n    if ((int) line.length() > 0) {\n        if (line.length() > width) {\n            width = line.length();\n        }\n    }\n    return width;\n}\n} // namespace stringutils\n\n/*\n * File: diff.cpp\n * --------------\n * This file contains implementations of functions that perform a text 'diff'\n * operation to compare two strings and output the differences.\n * See diff.h for documentation of each function.\n * \n * @author Marty Stepp\n * @version 2016/10/30\n * - fixed diff flags; added punctuation flag\n * @version 2016/10/22\n * - added diffPass (for autograder assertDiff)\n * @version 2014/10/14\n * - initial version\n * @since 2014/10/14\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"diff.h\"\n#include <algorithm>\n#define INTERNAL_INCLUDE 1\n#include \"map.h\"\n#define INTERNAL_INCLUDE 1\n#include \"regexpr.h\"\n#define INTERNAL_INCLUDE 1\n#include \"set.h\"\n#define INTERNAL_INCLUDE 1\n#include \"stringutils.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"vector.h\"\n#undef INTERNAL_INCLUDE\n\nnamespace diff {\nstd::string diff(std::string s1, std::string s2, int flags) {\n    Vector<std::string> lines1 = stringutils::explodeLines(s1);\n    Vector<std::string> lines2 = stringutils::explodeLines(s2);\n    Vector<std::string> lines1Original = lines1;\n    Vector<std::string> lines2Original = lines2;\n\n    if (flags & IGNORE_NUMBERS) {\n        s1 = regexReplace(s1, \"[0-9]+\", \"###\");\n        s2 = regexReplace(s2, \"[0-9]+\", \"###\");\n        lines1 = stringutils::explodeLines(s1);\n        lines2 = stringutils::explodeLines(s2);\n    }\n    if (flags & IGNORE_NONNUMBERS) {\n        s1 = regexReplace(s1, \"[^0-9\\n]+\", \" \");\n        s2 = regexReplace(s2, \"[^0-9\\n]+\", \" \");\n        lines1 = stringutils::explodeLines(s1);\n        lines2 = stringutils::explodeLines(s2);\n    }\n    if (flags & IGNORE_PUNCTUATION) {\n        std::string punct = \"[.,?!'\\\"()\\\\/#$%@^&*_\\\\[\\\\]{}|<>:;-]+\";\n        s1 = regexReplace(s1, punct, \"\");\n        s2 = regexReplace(s2, punct, \"\");\n        lines1 = stringutils::explodeLines(s1);\n        lines2 = stringutils::explodeLines(s2);\n    }\n    if (flags & IGNORE_AFTERDECIMAL) {\n        s1 = regexReplace(s1, \"\\\\.[0-9]+\", \".#\");\n        s2 = regexReplace(s2, \"\\\\.[0-9]+\", \".#\");\n        lines1 = stringutils::explodeLines(s1);\n        lines2 = stringutils::explodeLines(s2);\n    }\n    if (flags & IGNORE_CASE) {\n        s1 = stringutils::toLowerCase(s1);\n        s2 = stringutils::toLowerCase(s2);\n        lines1 = stringutils::explodeLines(s1);\n        lines2 = stringutils::explodeLines(s2);\n    }\n    if (flags & IGNORE_CHARORDER) {\n        Vector<std::string> lines1Sorted;\n        for (std::string line : lines1) {\n            sort(line.begin(), line.end());\n            lines1Sorted.push_back(line);\n        }\n        lines1 = lines1Sorted;\n        s1 = stringutils::implode(lines1);\n\n        Vector<std::string> lines2Sorted;\n        for (std::string line : lines2) {\n            sort(line.begin(), line.end());\n            lines2Sorted.push_back(line);\n        }\n        lines2 = lines2Sorted;\n        s2 = stringutils::implode(lines2);\n    }\n    if (flags & IGNORE_LINEORDER) {\n        sort(lines1.begin(), lines1.end());\n        sort(lines2.begin(), lines2.end());\n        s1 = stringutils::implode(lines1);\n        s2 = stringutils::implode(lines2);\n    }\n    if (flags & IGNORE_WHITESPACE) {\n        for (int i = 0; i < lines1.size(); i++) {\n            lines1[i] = stringutils::stripWhitespace(lines1[i]);\n        }\n        for (int i = 0; i < lines2.size(); i++) {\n            lines2[i] = stringutils::stripWhitespace(lines2[i]);\n        }\n    }\n\n    if (stringutils::trimR(s1) == stringutils::trimR(s2)) {\n        return NO_DIFFS_MESSAGE;\n    }\n\n    // build a reverse-index array using the line as key and line number as value\n    // don't store blank lines, so they won't be targets of the shortest distance\n    // search\n    Map<std::string, Set<int>> reverse1;\n    Map<std::string, Set<int>> reverse2;\n    for (int i = 0; i < lines1.size(); i++) {\n        std::string line = lines1[i];\n        if ((int) line.length() > 0) {\n            reverse1[line].add(i);\n        }\n    }\n    for (int i = 0; i < lines2.size(); i++) {\n        std::string line = lines2[i];\n        if ((int) line.length() > 0) {\n            reverse2[line].add(i);\n        }\n    }\n\n    // indexes of current lines within each file\n    // (start at beginning of each list)\n    int index1 = 0;\n    int index2 = 0;\n    Vector<int> actions;\n\n    // walk this loop until we reach the end of one of the lists of lines\n    while (index1 < lines1.size() && index2 < lines2.size()) {\n        // if we have a common line, save it and go to the next\n        if (lines1[index1] == lines2[index2]) {\n            actions += 4;\n            index1++;\n            index2++;\n            continue;\n        }\n        // otherwise, find the shortest move (Manhattan-distance) from the\n        // current location\n        int best1 = lines1.size();\n        int best2 = lines2.size();\n        int s1 = index1;\n        int s2 = index2;\n        while ((s1 + s2 - index1 - index2) < (best1 + best2 - index1 - index2)) {\n            int d = -1;\n            if (lines2.size() > s2 && reverse1.containsKey(lines2[s2])) {\n                for (int lineNumber : reverse1[lines2[s2]]) {\n                    if (lineNumber >= s1) {\n                        d = lineNumber;\n                        break;\n                    }\n                }\n            }\n            if (d >= s1 && (d + s2 - index1 - index2) < (best1 + best2 - index1 - index2)) {\n                best1 = d;\n                best2 = s2;\n            }\n\n            d = -1;\n            if (lines1.size() > s1 && reverse2.containsKey(lines1[s1])) {\n                for (int lineNumber : reverse2[lines1[s1]]) {\n                    if (lineNumber >= s2) {\n                        d = lineNumber;\n                        break;\n                    }\n                }\n            }\n            if (d >= s2 && (d + s1 - index1 - index2) < (best1 + best2 - index1 - index2)) {\n                best1 = s1;\n                best2 = d;\n            }\n\n            s1++;\n            s2++;\n        }\n\n        while (index1 < best1) {\n            actions += 1;\n            index1++;\n        }  // deleted elements\n\n        while (index2 < best2) {\n            actions += 2;\n            index2++;\n        }  // added elements\n    }\n\n    // we've reached the end of one list, now walk to the end of the other\n    while (index1 < lines1.size()) {\n        actions += 1;\n        index1++;\n    }  // deleted elements\n\n    if (flags & IGNORE_TRAILING) {\n        while (index2 < lines2.size()) {\n            actions += 2;\n            index2++;\n        }  // added elements\n    }\n\n    // and this marks our ending point\n    actions += 8;\n\n    int op = 0;\n    int x0 = 0;\n    int x1 = 0;\n    int y0 = 0;\n    int y1 = 0;\n    Vector<std::string> out;\n\n    for (int action : actions) {\n        if (action == 1) {\n            op |= action;\n            x1++;\n            continue;\n        } else if (action == 2) {\n            op |= action;\n            y1++;\n            continue;\n        }\n\n        if (op > 0) {\n            bool multipleLines = (x1 != x0 + 1);\n            std::string xstr = std::string(\"\") + (multipleLines ? (std::to_string(x0 + 1) + \"-\" + std::to_string(x1)) : std::to_string(x1));\n            std::string ystr = std::string(\"\") + ((y1 != y0 + 1) ? (std::to_string(y0 + 1) + \"-\" + std::to_string(y1)) : std::to_string(y1));\n            std::string linesStr = std::string(\"\\nLine\") + (multipleLines ? \"s \" : \" \");\n            std::string doStr = std::string(\"do\") + (multipleLines ? \"\" : \"es\");\n            if (op == 1) {\n                out += linesStr + xstr + \" deleted near student line \" + std::to_string(y1);\n            } else if (op == 3) {\n                if (xstr == ystr) {\n                    out += linesStr + xstr + \" \" + doStr + \" not match\";\n                } else {\n                    out += linesStr + xstr + \" changed to student line \" + ystr;\n                }\n            }\n\n            while (x0 < x1) {\n                out += \"EXPECTED < \" + lines1Original[x0];\n                x0++;\n            }   // deleted elems\n\n            if (op == 2) {\n                if (!(flags & IGNORE_LEADING) || x1 > 0) {\n                    out += linesStr + std::to_string(x1) + \" added at student line \" + ystr;\n                }\n            } else if (op == 3) {\n                // out += \"---\";\n            }\n\n            while (y0 < y1) {\n                if (!(flags & IGNORE_LEADING) || op != 2 || x1 > 0) {\n                    out += \"STUDENT  > \" + lines2Original[y0];\n                }\n                y0++;\n            }   // added elems\n        }\n        x1++;\n        x0 = x1;\n        y1++;\n        y0 = y1;\n        op = 0;\n    }\n\n    if (out.size() > 0) {\n        out += \"\";\n        return trim(stringutils::implode(out, \"\\n\"));\n    } else {\n        return NO_DIFFS_MESSAGE;\n    }\n}\n\nbool diffPass(const std::string& s1, const std::string& s2, int flags) {\n    std::string diffs = diff(s1, s2, flags);\n    bool result = trim(diffs) == NO_DIFFS_MESSAGE;\n    return result;\n}\n\nbool isDiffMatch(const std::string& diffs) {\n    return trim(diffs) == NO_DIFFS_MESSAGE;\n}\n} // namespace diff\n\n/*\n * File: regexpr.cpp\n * -----------------\n * Implementation of the functions in regexpr.h.\n * See regexpr.h for documentation of each function.\n *\n * @author Marty Stepp\n * @version 2018/12/16\n * - added CodeStepByStep disabling of regexes\n * @version 2018/11/22\n * - added headless (non-Qt) mode support\n * @version 2015/07/05\n * - removed static global Platform variable, replaced by getPlatform as needed\n * @version 2014/10/14\n * - removed regexMatchCountWithLines for simplicity\n * 2014/10/08\n * - removed 'using namespace' statement\n * @since 2014/03/01\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"regexpr.h\"\n#ifndef SPL_HEADLESS_MODE\n#include <QtGlobal>\n#endif // SPL_HEADLESS_MODE\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"stringutils.h\"\n#undef INTERNAL_INCLUDE\n\n#if defined(SPL_CODESTEPBYSTEP) || QT_VERSION < QT_VERSION_CHECK(5, 9, 0)\nbool regexMatch(const std::string& /*s*/, const std::string& /*regexp*/) {\n    return false;   // not supported\n}\n\nint regexMatchCount(const std::string& /*s*/, const std::string& /*regexp*/) {\n    return 0;   // not supported\n}\n\nvoid regexMatchCountWithLines(const std::string& /*s*/, const std::string& /*regexp*/,\n                             Vector<int>& /*linesOut*/) {\n    // empty; not supported\n}\n\nstd::string regexReplace(const std::string& s, const std::string& /*regexp*/, const std::string& /*replacement*/, int /*limit*/) {\n    return s;   // not supported\n}\n\n#else // QT_VERSION\n\n// C++ regex support\n#include <iterator>\n#include <regex>\n\nbool regexMatch(const std::string& s, const std::string& regexp) {\n    std::regex reg(regexp);\n    std::smatch match;\n    return std::regex_search(s, match, reg);\n}\n\nint regexMatchCount(const std::string& s, const std::string& regexp) {\n    std::regex reg(regexp);\n    auto it1 = std::sregex_iterator(s.begin(), s.end(), reg);\n    auto it2 = std::sregex_iterator();\n    return std::distance(it1, it2);\n}\n\nvoid regexMatchCountWithLines(const std::string& s, const std::string& regexp,\n                             Vector<int>& linesOut) {\n    linesOut.clear();\n\n    // keep a running index and line#, and each time we find a regex match,\n    // \"walk\" forward to its index.  when we see a \\n, increment line number\n    int currentIndex = 0;\n    int currentLine = 1;\n\n    // get all regex matches by character position/index\n    std::regex reg(regexp);\n    for (std::sregex_iterator itr = std::sregex_iterator(s.begin(), s.end(), reg),\n            end = std::sregex_iterator();\n            itr != end;\n            ++itr) {\n        std::smatch match = *itr;\n        int matchIndex = (int) match.position();\n        while (currentIndex < (int) s.length() && currentIndex < matchIndex) {\n            if (s[currentIndex] == '\\n') {\n                currentLine++;\n            }\n            currentIndex++;\n        }\n        linesOut.add(currentLine);\n    }\n}\n\nstd::string regexReplace(const std::string& s, const std::string& regexp, const std::string& replacement, int limit) {\n    std::regex reg(regexp);\n    std::string result;\n    if (limit == 1) {\n        // replace single occurrence\n        result = std::regex_replace(s, reg, replacement,\n                                    std::regex_constants::format_first_only);\n    } else if (limit <= 0) {\n        // replace all\n        result = std::regex_replace(s, reg, replacement);\n    } else {\n        error(\"regexReplace: given limit not supported.\");\n    }\n    return result;\n}\n#endif // QT_VERSION\n\n// this function can be implemented the same way whether regexes are available or not\nint regexMatchCountWithLines(const std::string& s, const std::string& regexp, std::string& linesOut) {\n    Vector<int> linesOutVec;\n    regexMatchCountWithLines(s, regexp, linesOutVec);\n\n    // concatenate the vector into a string like \"1, 4, 7, 7, 19\"\n    linesOut = \"\";\n    if (!linesOutVec.isEmpty()) {\n        linesOut += std::to_string(linesOutVec[0]);\n        for (int i = 1; i < linesOutVec.size(); i++) {\n            linesOut += \", \" + std::to_string(linesOutVec[i]);\n        }\n    }\n    return linesOutVec.size();\n}\n\n//#define INTERNAL_INCLUDE 1\n//#include \"bigfloat.h\"\n//#undef INTERNAL_INCLUDE\n//#include <limits>\n\n//bool BigFloatCache::_isInitialized = false;\n//BigFloat BigFloatCache::_e;\n//BigFloat BigFloatCache::_zero;\n//BigFloat* BigFloatCache::_ePower;\n//s8 BigFloatCache::_ePowerLen;\n//BigFloat* BigFloatCache::_eInvPower;\n//BigFloat BigFloatCache::_pi;\n//BigFloat BigFloatCache::_twoPi;\n//BigFloat BigFloatCache::_overTwoPi;\n//BigFloat BigFloatCache::_piOverTwo;\n//BigFloat BigFloatCache::_threePiOverTwo;\n//BigFloat BigFloatCache::_piOverFour;\n//s8 BigFloatCache::_overFactLen;\n//BigFloat* BigFloatCache::_overFact;\n\n//void BigFloatCache::Init()\n//{\n//    s8 i;\n//    const int c_maxIter = 1000;\n\n//    // fill _pi using Brent-Salamin algorithm\n//    BigFloat a(1);\n\n//    BigFloat b(2);\n//    b.Sqrt();\n//    b.Invert();\n\n//    BigFloat t(4);\n//    t.Invert();\n\n//    BigFloat p(1);\n\n//    BigFloat oldPi(3);\n//    BigFloat newPi;\n\n//    // for 32 32-bit digits, this stops after 8 iterations\n//    for (i=0; i<c_maxIter; ++i)\n//    {\n//        BigFloat a2(a);\n//        a2.Add(b);\n//        a2.Div(2);\n\n//        b.Mult(a);\n//        b.Sqrt();\n\n//        BigFloat t2(a);\n//        t2.Sub(a2);\n//        t2.Mult(t2);\n//        t2.Mult(p);\n//        t.Sub(t2);\n        \n//        p.Mult(2);\n\n//        a.Copy(a2);\n\n//        newPi.Copy(a);\n//        newPi.Add(b);\n//        newPi.Mult(newPi);\n//        newPi.Div(t);\n//        newPi.Div(4);\n\n//        if (newPi.Compare(oldPi) == 0)\n//            break;\n\n//        oldPi.Copy(newPi);\n//    }\n//    ASSERT(i < c_maxIter);\n\n//    oldPi.Copy(a);\n//    oldPi.Add(b);\n//    oldPi.Mult(oldPi);\n//    BigFloat piDivisor(t);\n\n//    piDivisor.Mult(2);\n//    newPi.Copy(oldPi);\n//    newPi.Div(piDivisor);\n//    _twoPi.Copy(newPi);\n\n//    piDivisor.Mult(2);\n//    newPi.Copy(oldPi);\n//    newPi.Div(piDivisor);\n//    _pi.Copy(newPi);\n\n//    piDivisor.Mult(2);\n//    newPi.Copy(oldPi);\n//    newPi.Div(piDivisor);\n//    _piOverTwo.Copy(newPi);\n\n//    piDivisor.Mult(2);\n//    newPi.Copy(oldPi);\n//    newPi.Div(piDivisor);\n//    _piOverFour.Copy(newPi);  // higher precision than pi/2 or pi or 2pi\n\n//    _threePiOverTwo.Copy(_pi);\n//    _threePiOverTwo.Mult(3);\n//    _threePiOverTwo.Div(2);\n//    _overTwoPi.Copy(_twoPi);\n//    _overTwoPi.Invert();\n\n//    // fill _e using Brother's formula (7)\n//    BigFloat e(0);\n//    BigFloat oldE(-1);\n//    BigFloat denom(1);\n\n//    // for 32 32-bit digits, this takes 42 iterations\n//    for (i=0; i<c_maxIter; ++i)\n//    {\n//        BigFloat term((8*i*i+1) * (8*i-4) + 5);\n//        term.Div(denom);\n//        e.Add(term);\n//        if (e.Compare(oldE) == 0)\n//        {\n//            break;\n//        }\n//        oldE.Copy(e);\n//        denom.Mult((4*i+1) * (4*i+2) * (4*i+3) * (4*i+4));\n//    }\n//    ASSERT(i < c_maxIter);\n//    _e.Copy(e);\n    \n//    // precompute 1/n!, to reduce the cost of sin cos tan exp, etc.\n//    _overFactLen = 4*i+32;\n//    _overFact = new BigFloat[static_cast<unsigned int>(_overFactLen)];\n//    BigFloat fact(1);\n//    _overFact[0].Copy(1);\n//    for (i = 1; i < _overFactLen; ++i)\n//    {\n//        fact.Mult(i);\n//        _overFact[i].Copy(fact);\n//        _overFact[i].Invert();\n//    }\n\n//    BigFloat power(_e);\n//    for (i = 1; !power.IsSpecial(); ++i)\n//    {\n//        power.Mult(power);\n//    }\n//    _ePowerLen = i;\n//    BigFloat* ePowerBuf = new BigFloat[static_cast<unsigned int>(_ePowerLen-_ePowerNeg)];\n//    _ePower = &ePowerBuf[-_ePowerNeg];\n//    _ePower[0].Copy(_e);\n//    BigFloat* eInvPowerBuf = new BigFloat[static_cast<unsigned int>(_ePowerLen-_ePowerNeg)];\n//    _eInvPower = &eInvPowerBuf[-_ePowerNeg];\n//    _eInvPower[0].Copy(_e);\n//    _eInvPower[0].Invert();\n\n//    for (int i=1; i<_ePowerLen; ++i)\n//    {\n//        _ePower[i].Copy(_ePower[i-1]);\n//        _ePower[i].Mult(_ePower[i]);\n//        _eInvPower[i].Copy(_eInvPower[i-1]);\n//        _eInvPower[i].Mult(_eInvPower[i]);\n//    }\n\n//    for (int i=-1; i>_ePowerNeg; --i)\n//    {\n//        _ePower[i].Copy(_ePower[1+i]);\n//        _ePower[i].Sqrt();\n//        _eInvPower[i].Copy(_eInvPower[1+i]);\n//        _eInvPower[i].Sqrt();\n//    }\n\n//    _isInitialized = true;\n//}\n\n\n//// Do Gaussian elimination on m[rows][cols+1] (destructively).\n//// Put the results in m[*][cols].\n//void BigFloat::GaussianElimination(BigFloat** m, s8 rows, s8 cols)\n//{\n//    s8 i;  // currently working on ith column\n//    s8 k;  // eliminating m[i] from m[k]\n//    s8 j;  // eliminating m[i][j] from m[k][j]\n\n//    // build a triangular matrix\n//    for (i=0; i<cols; ++i)\n//    {\n//        // swap a row to i such that m[i][i] is nonzero\n//        for (k=i; k<rows; ++k)\n//        {\n//            if (!m[k][i].IsZero())\n//            {\n//                break;\n//            }\n//        }\n//        ASSERT(k < rows);\n//        if (k != i)\n//        {\n//            BigFloat* temp = m[i];\n//            m[i] = m[k];\n//            m[k] = temp;\n//        }\n\n//        // do the elimination\n//        for (k=i+1; k<rows; ++k)\n//        {\n//            BigFloat c(m[k][i]);\n//            c.Div(m[i][i]);\n//            for (j=i; j<cols+1; ++j)\n//            {\n//                BigFloat temp(m[i][j]);\n//                temp.Mult(c);\n//                m[k][j].Sub(temp);\n//            }\n//        }\n//    }\n\n//    // use the triangular matrix to find the results\n//    for (i=cols; i--; )\n//    {\n//        for (j=i+1; j<cols; ++j)\n//        {\n//            BigFloat temp(m[i][j]);\n//            temp.Mult(m[j][cols]);\n//            m[i][cols].Sub(temp);\n//        }\n//        m[i][cols].Div(m[i][i]);\n//    }\n//}\n\n\n//BigFloat& BigFloat::FromInteger(s8 origNum, s8 exponent)\n//{\n//    if (origNum == 0)\n//    {\n//        return Zero();\n//    }\n\n//    _isNegative = (origNum < 0);\n//    u8 num = (u8)(_isNegative ? -origNum : origNum);\n\n//    u8 shift = 64 - c_log;\n//    _exponent = shift / c_log;\n//    u8 mask = (c_range-1) << shift;\n//    while (!(num & mask))\n//    {\n//        --_exponent;\n//        num <<= c_log;\n//    }\n\n//    _length = 0;\n//    _exponent += exponent;\n//    while (num && _length < c_digits)\n//    {\n//        _d[_length++] = static_cast<u4>((num & mask) >> shift);\n//        num <<= c_log;\n//    }\n\n//    // this shows up in test mode: allow truncation if too much precision\n//    // ASSERT(!num, \"integer had too much precision\\n\");\n\n//    return *this;\n//}\n\n\n//// truncate if there is a fraction\n//// throw an exception if it is bigger than an 8-byte signed integer\n//// ignore the sign\n//s8 BigFloat::ToInteger() const\n//{\n//    if (IsZero())\n//        return 0;\n    \n//    ASSERT((_exponent < ((64-c_log)/c_log)) ||\n//           (_exponent == (64-c_log)/c_log && _d[0] < c_range/2),\n//           \"exponent unsuitable for integer conversion\");\n    \n//    s8 result = 0;\n//    u8 pos = 0;\n//    while (pos < _length)\n//    {\n//        result <<= c_log;\n//        result += _d[pos++];\n//    }\n//    s8 shift = c_log * (_exponent + 1 - _length);\n//    if (shift > 0)\n//        result <<= shift;\n//    else if (shift < 0)\n//        result >>= -shift;\n//    if (_isNegative)\n//        result = -result;\n//    return result;\n//}\n\n\n//// Ignore sign and exponent.\n//// Stick the digits in a u8.\n//// The highest digit is multiplied by (((u8)1) << (64-c_log))\n//u8 BigFloat::ToDigits() const\n//{\n//    u8 result = 0;\n//    for (int pos=_length; pos--; )\n//    {\n//        result >>= c_log;\n//        result += (u8)_d[pos] << (64 - c_log);\n//    }\n//    return result;\n//}\n\n\n//// convert bigfloat to double\n//double BigFloat::ToDouble() const\n//{\n//    if (IsSpecial())\n//    {\n//        if (IsZero())\n//            return _isNegative ? -0.0 : 0.0;\n//        else if (IsInf())\n//            return _isNegative ? -std::numeric_limits<double>::infinity() : std::numeric_limits<double>::infinity();\n//        else\n//            return std::numeric_limits<double>::quiet_NaN();\n//    }\n\n//    double x = 0.0;\n\n//    // handle the digits\n//    for (int i=_length; i--; )\n//    {\n//        x /= (((u8)1) << c_log);\n//        x += _d[i];\n//    }\n\n//    // handle the exponent\n//    for (int i=0; i<_exponent; ++i)\n//        x *= (((u8)1) << c_log);\n//    for (int i=0; i>_exponent; --i)\n//        x /= (((u8)1) << c_log);\n\n//    // sign\n//    if (_isNegative)\n//        x = -x;\n    \n//    return x;\n//}\n\n\n//// print an accurate initializer for a double: (n / d) * 2^^x, where 1 <= n/d < 2\n//void BigFloat::PrintContinuedFraction() const\n//{\n//    BigFloat n1; // numerator #1\n//    BigFloat n2; // numerator #2\n//    BigFloat d1; // denominator #1\n//    BigFloat d2; // denominator #2\n//    BigFloat r;  // remainder\n\n//    if (IsZero())\n//    {\n//        printf(\"0.0\");\n//        return;\n//    }\n    \n//    // find the power of 2 to put *this in [1.0, 2.0)\n//    n1.Copy(*this);\n//    s8 x = 0;\n//    char sign[2] = {0, 0};\n//    if (n1.IsNegative())\n//    {\n//        sign[0] = '-';\n//        n1.Negate();\n//    }\n\n//    while (n1.Compare(2) >= 0)\n//    {\n//        n1.Div(2);\n//        x += 1;\n//    }\n//    while (n1.Compare(1) < 0)\n//    {\n//        n1.Mult(2);\n//        x -= 1;\n//    }\n\n//    if (x < -400)\n//    {\n//        printf(\"0.0\");\n//        return;\n//    }\n    \n//    printf(\"(\");\n    \n//    // fill n1/d1 with the first approximation\n//    r.Copy(n1);\n//    n1.Trunc();\n//    d1.Copy(1);\n\n//    // fill n2/d2 with the second approximation\n//    r.Sub(n1);\n//    if (r.IsZero())\n//    {\n//        printf(\"0x%llx)\", n1.ToInteger());\n//        return;\n//    }\n//    r.Invert();\n//    d2.Copy(r).Trunc();\n//    r.Sub(d2);\n//    n2.Copy(n1).Mult(d2).Add(1);\n\n//    // recurse until we get too precise: 1/r2 = c + r3, and n3/d3 = (c*n2 + n1)/(c*d2 + d1)\n//    for (;;)\n//    {\n//        r.Invert();\n//        BigFloat c(r);\n//        c.Trunc();\n//        r.Sub(c);\n\n//        BigFloat temp(n2);\n//        temp.Mult(c);\n//        n1.Add(temp);\n\n//        temp.Copy(d2);\n//        temp.Mult(c);\n//        d1.Add(temp);\n\n//        if (r.IsZero() || n1._exponent*c_log >= 32)\n//        {\n//            printf(\"%sstatic_cast<double>(%llu) / %llu\", sign, n2.ToInteger(), d2.ToInteger());\n//            break;\n//        }\n\n//        r.Invert();\n//        c.Copy(r).Trunc();\n//        r.Sub(c);\n\n//        temp.Copy(n1);\n//        temp.Mult(c);\n//        n2.Add(temp);\n\n//        temp.Copy(d1);\n//        temp.Mult(c);\n//        d2.Add(temp);\n\n//        if (r.IsZero() || n2._exponent*c_log >= 32)\n//        {\n//            printf(\"%sstatic_cast<double>(%llu) / %llu\", sign, n1.ToInteger(), d1.ToInteger());\n//            break;\n//        }\n//    }\n\n//    if (0 < x && x < 32)\n//    {\n//        printf(\" * 0x%llx\", ((u8)1)<<x);\n//    }\n//    else if (0 > x && x > -32)\n//    {\n//        printf(\" / 0x%llx\", ((u8)1)<<(-x));\n//    }\n//    else\n//    {\n//        printf(\" * PowerOfTwo(%d)\", x);\n//    }\n\n//    printf(\")\");\n\n//}\n\n\n//void BigFloat::PrintDouble() const\n//{\n//    double x = ToDouble();\n//    printf(\"%.19g\", x);\n//}\n\n\n//// use continued fractions to convert this number to a ratio\n//void BigFloat::ToFraction(BigFloat& num, BigFloat& denom, int iter) const\n//{\n//    BigFloat remainder(*this);\n//    remainder._isNegative = false;\n//    num.Copy(*this);\n//    num.Trunc();\n//    remainder.Sub(num);\n//    if (remainder.IsZero() ||\n//        remainder._exponent < -c_digits/2 ||\n//        iter>=0)\n//    {\n//        denom.FromInteger(1);\n//    }\n//    else\n//    {\n//        remainder.Invert();\n//        BigFloat subDenom;\n//        remainder.ToFraction(denom, subDenom, iter-1);\n//        num.Mult(denom);\n//        num.Add(subDenom);\n//    }\n//    num._isNegative = this->_isNegative;\n//}\n\n\n//void BigFloat::Print() const\n//{\n//    printf(\"exp=%lld, %c \", _exponent, _isNegative ? '-' : '+');\n//    for (int iPos=0; iPos < _length; ++iPos)\n//        printf(\"%x \", _d[iPos]);\n//    printf(\"\\n\");\n//}\n\n\n//void BigFloat::PrintHex() const\n//{\n//    if (_isNegative)\n//        printf(\"-\");\n//    if (IsSpecial())\n//    {\n//        if (IsZero())\n//            printf(\"0\");\n//        else if (IsInf())\n//            printf(\"inf\");\n//        else if (IsNaN())\n//            printf(\"NaN\");\n//    }\n//    else if (_exponent+1 > _length || _exponent < 0)\n//    {\n//        printf(\"0x\");\n//        for (int i=0; i<_length; ++i)\n//        {\n//            if (i==0)\n//            {\n//                printf(\"%lx\", _d[0]);\n//            }\n//            else\n//            {\n//                if (i==1)\n//                    printf(\".\");\n//                printf(\"%.8lx\", _d[i]);\n//            }\n//        }\n//        printf(\":e%lld\", _exponent);\n//    }\n//    else\n//    {\n//        printf(\"0x\");\n//        for (int i=0; i<_length; ++i)\n//        {\n//            if (i==0)\n//            {\n//                printf(\"%lx\", _d[0]);\n//            }\n//            else\n//            {\n//                if (i == _exponent+1)\n//                    printf(\".\");\n//                printf(\"%.8lx\", _d[i]);\n//            }\n//        }\n//    }\n//}\n\n\n//BigFloat& BigFloat::Copy(const BigFloat& n)\n//{\n//    _exponent = n._exponent;\n//    _isNegative = n._isNegative;\n//    _length = n._length;\n//    for (int iPos=_length; iPos--; )\n//        _d[iPos] = n._d[iPos];\n//    return *this;\n//}\n\n\n//BigFloat& BigFloat::Negate()\n//{\n//    _isNegative = !_isNegative;\n//    return *this;\n//}\n\n\n//// -1 if |this|<|n|, 0 if |this|==|n|, 1 if |this|>|n|\n//int BigFloat::CompareAbsolute(const BigFloat& n) const\n//{\n//    if (IsSpecial() || n.IsSpecial())\n//    {\n//        if (IsInf())\n//            return n.IsInf() ? 0 : 1;\n//        else if (n.IsInf())\n//            return -1;\n//        else if (IsZero())\n//            return n.IsZero() ? 0 : -1;\n//        else if (n.IsZero())\n//            return 1;\n//        else\n//            return -1;\n//    }\n//    else if (_exponent > n._exponent)\n//        return 1;\n//    else if (_exponent < n._exponent)\n//        return -1;\n//    else // n._exponent == _exponent\n//    {\n//        u2 length = _length;\n//        if (n._length < length)\n//            length = n._length;\n//        for (int iPos = 0;  iPos < length;  ++iPos)\n//        {\n//            u4 bd = n._d[iPos];\n//            u4 ad = _d[iPos];\n//            if (ad > bd)\n//                return 1;\n//            else if (ad < bd)\n//                return -1;\n//        }\n//        if (_length > n._length)\n//            return 1;\n//        else if (_length < n._length)\n//            return -1;\n//    }\n//    return 0;\n//}\n\n//// -1 if this<n, 0 if this==n, 1 if this>n\n//int BigFloat::Compare(const BigFloat& n) const\n//{\n//    if (_isNegative != n._isNegative)\n//        return _isNegative ? -1 : 1;\n//    else if (_isNegative)\n//        return -CompareAbsolute(n);\n//    else\n//        return CompareAbsolute(n);\n//}\n\n\n//BigFloat& BigFloat::Trunc()\n//{\n//    if (_exponent + 1 - _length >= 0)\n//        ;\n//    else if (_exponent < 0)\n//        Zero();\n//    else\n//        _length = static_cast<u2>(_exponent + 1);\n\n//    return *this;\n//}\n\n//// lots of operations want to round to c_digits digits of precision\n//BigFloat& BigFloat::Round(bool carry, s8 previousDigit)\n//{\n//    s8 iPos;\n//    bool round;\n\n//    ASSERT(previousDigit == 0 || _length == c_digits);\n\n//    if (-previousDigit > (s8)c_range/2)\n//    {\n//        iPos = c_digits-1;\n//        round = true;\n//        previousDigit += c_range;\n//        while (round && iPos >= 0)\n//        {\n//            s8 sum = (u8)_d[iPos] - round;\n//            round = (sum < 0);\n//            if (round)\n//                sum += c_range;\n//            _d[iPos] = (u4)sum;\n//            iPos--;\n//        }\n//        if (round)\n//        {\n//            ASSERT(carry);\n//            carry = false;\n//        }\n//    }\n\n//    if (carry)\n//    {\n//        bool round = false;\n//        // need to shift all digits over by one and add a top digit\n//        if (_length == c_digits)\n//        {\n//            // First, round bottom digit up if needed.\n//            // Since the top digit carried already, it won't\n//            // carry again.\n//            iPos = c_digits-1;\n//            round = (_d[iPos] > c_range/2 ||\n//                     (_d[iPos] == c_range/2 && previousDigit >= 0));\n//            iPos--;\n//            while (round && iPos >= 0)\n//            {\n//                u8 sum = (u8)_d[iPos] + round;\n//                round = (sum >= c_range);\n//                if (round)\n//                    sum -= c_range;\n//                _d[iPos] = (u4)sum;\n//                iPos--;\n//            }\n//        }\n//        else\n//        {\n//            ++_length;\n//        }\n        \n//        // now shift everyone over by one.\n//        for (iPos = _length;  iPos-- > 1; )\n//            _d[iPos] = _d[iPos-1];\n        \n//        // add the carry as the top new digit.\n//        _d[0] = (u8)carry + (u8)round;\n        \n//        // increase the exponent by one.\n//        if (_exponent == c_maxExponent)\n//            return _isNegative ? NInf() : Inf();\n//        ++_exponent;\n//    }\n//    else if (previousDigit >= (s8)c_range/2)\n//    {\n//        ASSERT(_length == c_digits);\n        \n//        // post-round only: 950+95 = 1000 not 1100 to 2 digits\n//        round = true;\n//        iPos = c_digits-1;\n//        while (round && iPos >= 0)\n//        {\n//            u8 sum = (u8)_d[iPos] + round;\n//            round = (sum >= c_range);\n//            if (round)\n//                sum -= c_range;\n//            _d[iPos] = (u4)sum;\n//            iPos--;\n//        }\n//        if (round)\n//        {\n//            _length = 1;\n//            _d[0] = 1;\n//            if (_exponent == c_maxExponent)\n//            {\n//                return _isNegative ? NInf() : Inf();\n//            }\n//            ++_exponent;\n//        }\n//    }\n    \n//    // remove trailing zeros\n//    if (_length)\n//    {\n//        while (_d[_length-1] == 0)\n//        {\n//            if (--_length == 0)\n//            {\n//                Zero(_isNegative);\n//            }\n//        }\n//    }\n    \n//    // final postchecks\n//    if (_exponent < c_minExponent)\n//    {\n//        return Zero(_isNegative);\n//    }\n//    else if (_exponent > c_maxExponent)\n//    {\n//        return Inf(_isNegative);\n//    }\n\n//    return *this;\n//}\n\n\n//// round up, no carry, 0 or positive previous digit\n//BigFloat& BigFloat::Round(u8 previousDigit)\n//{\n//    s8 iPos;\n//    bool round;\n\n//    ASSERT(previousDigit == 0 || _length == c_digits);\n\n//    if (previousDigit >= c_range/2)\n//    {\n//        ASSERT(_length == c_digits);\n        \n//        // post-round only: 950+95 = 1000 not 1100 to 2 digits\n//        round = true;\n//        iPos = c_digits-1;\n//        while (round && iPos >= 0)\n//        {\n//            u8 sum = (u8)_d[iPos] + round;\n//            round = (sum >= c_range);\n//            if (round)\n//                sum -= c_range;\n//            _d[iPos] = (u4)sum;\n//            iPos--;\n//        }\n//        if (round)\n//        {\n//            _length = 1;\n//            _d[0] = 1;\n//            if (_exponent == c_maxExponent)\n//            {\n//                return _isNegative ? NInf() : Inf();\n//            }\n//            ++_exponent;\n//        }\n//    }\n    \n//    // remove trailing zeros\n//    while (_length && _d[_length-1] == 0)\n//    {\n//        if (--_length == 0)\n//\t\t{\n//\t\t\tZero(_isNegative);\n//        }\n//    }\n\n//    // final postchecks\n//    if (_exponent < c_minExponent)\n//    {\n//        return Zero(_isNegative);\n//    }\n//    else if (_exponent > c_maxExponent)\n//    {\n//        return Inf(_isNegative);\n//    }\n\n//    return *this;\n//}\n\n\n//// Ye gods, how could addition possibly be so complicated?\n//BigFloat& BigFloat::AddOrSubtract(const BigFloat& n, bool minus)\n//{\n//    BigFloat m(*this);  // cache of this\n\n//    if (IsSpecial() || n.IsSpecial())\n//    {\n//        BigFloat n2(n);\n//        if (minus)\n//            n2.Negate();\n\n//        if (n2.IsZero())\n//            return *this;\n//        else if (IsZero())\n//            return Copy(n2);\n//        else if (IsNaN() || n.IsNaN())\n//            return NaN();\n//        else if (IsPInf())\n//            return n2.IsNInf() ? NaN() : *this;\n//        else if (IsNInf())\n//            return n2.IsPInf() ? NaN() : *this;\n//        else if (n2.IsPInf())\n//            return PInf();\n//        else if (n2.IsNInf())\n//            return NInf();\n//        else\n//            ASSERT(false);\n//    }\n    \n//    // make sure the absolute largest number of (a,b) is in a\n//    const BigFloat* a = &m;\n//    const BigFloat* b = &n;\n//    bool signA = a->_isNegative;\n//    bool signB = (b->_isNegative != minus);\n\n//    // make sure a has the bigger absolute value\n//    if (CompareAbsolute(n) < 0)\n//    {\n//        const BigFloat* temp = b;\n//        b = a;\n//        a = temp;\n//        bool tempSign = signB;\n//        signB = signA;\n//        signA = tempSign;\n//    }\n//    bool add = (signA == signB);\n//    _isNegative = signA;\n\n//    // actually do the addition now\n//    s8 delta = a->_exponent - b->_exponent;\n//    if (delta > c_digits+1)\n//    {\n//        // b is too small to matter, just copy a\n//        if (this != a)\n//            Copy(*a);\n//        _isNegative = signA;\n//        return *this;\n//    }\n        \n//    s8 previousDigit = 0;\n    \n//    _exponent = a->_exponent;\n//    // do we need to carry one to the next digit?\n//    bool carry = false;\n    \n//    // assume subtraction shifts the set of significant digits down by one?\n//    bool shift = false;\n    \n//    // these digit positions are relative to the result assuming no carry\n//    s8 iPos; // which digit position we are looking at right now\n//    s8 leastA = a->_length; // least significant A position + 1\n//    s8 leastB = b->_length + delta; // least signficant B position + 1\n        \n//    if (leastA > leastB)\n//    {\n//        iPos = leastA-1;\n//        _length = static_cast<u2>(leastA);\n        \n//        // copy low-order digits from a\n//        while (iPos >= leastB)\n//        {\n//            _d[iPos] = a->_d[iPos];\n//            iPos--;\n//        }\n//    }\n//    else\n//    {\n//        // assume we will have digits 1..digits not 0..digits-1.\n//        if (!add && leastB > c_digits && a->_d[0]==1)\n//        {\n//            shift = true;\n//            _exponent--;\n//            leastB--;\n//            leastA--;\n//            delta--;\n//        }\n        \n//        // copy low-order digits from b\n//        s8 leastBUsed = leastB;\n//        if (leastB > c_digits)\n//        {\n//            leastBUsed = c_digits;\n//        }\n        \n//        iPos = leastBUsed-1;\n//        _length = static_cast<u2>(leastBUsed);\n        \n//        if (iPos >= leastA) // either > or ==, we know not <\n//        {\n//            s8 stopB = delta > leastA ? delta : leastA;\n//            if (add)\n//            {\n//                while (iPos >= stopB)\n//                {\n//                    _d[iPos] = b->_d[iPos-delta] + carry;\n//                    if (carry && _d[iPos] != 0)\n//                        carry = false;\n//                    iPos--;\n//                }\n//            }\n//            else\n//            {\n//                while (iPos >= stopB)\n//                {\n//\t\t\t\t\t// the low-order digit is nonzero, and carry==false, so it is going to be in range.\n//\t\t\t\t\t// all the other digits might be zero, but they have carry==true, so they will also be in range.\n//                    _d[iPos] = static_cast<u4>(c_range - b->_d[iPos-delta] - carry);\n//                    carry = true;\n//                    iPos--;\n//                }\n//            }\n            \n//            if (stopB > leastA)\n//            {\n//                // the biggest b is smaller than the smallest a\n//                // fill in the digits in the gap\n//                if (carry)\n//                {\n//                    if (add)\n//                    {\n//                        while (iPos >= leastA)\n//                        {\n//                            _d[iPos] = carry;\n//                            carry = false;\n//                            iPos--;\n//                        }\n//                    }\n//                    else\n//                    {\n//                        while (iPos >= leastA)\n//                        {\n//                            _d[iPos] = c_range-1;\n//                            iPos--;\n//                        }\n//                    }\n//                }\n//                else\n//                {\n//                    while (iPos >= leastA)\n//                    {\n//                        _d[iPos] = 0;\n//                        iPos--;\n//                    }\n//                }\n//            }\n//        }\n        \n//        ASSERT(iPos == leastA-1);\n//    }\n        \n    \n//    if (add)\n//    {\n//        // do the sum\n//        while (iPos-delta >= 0)\n//        {\n//            u8 sum = (u8)a->_d[iPos] + (u8)b->_d[iPos-delta] + carry;\n//            carry = (sum >= c_range);\n//            if (carry)\n//                sum -= c_range;\n//            _d[iPos] = (u4)sum;\n//            iPos--;\n//        }\n        \n//        // ran out of digits, finish copying the rest of the digits\n//        while (iPos >= 0)\n//        {\n//            u8 sum = (u8)a->_d[iPos] + carry;\n//            carry = (sum >= c_range);\n//            if (carry)\n//                sum -= c_range;\n//            _d[iPos] = (u4)sum;\n//            iPos--;\n//        }\n\n//        if (leastB >= c_digits+1)\n//        {\n//            previousDigit = b->_d[c_digits-delta];\n//        }\n//    }\n//    else  // subtract, not add\n//    {\n//        // do the subtraction\n//        while (iPos-delta >= 0)\n//        {\n//            s8 sum = (u8)a->_d[iPos+shift] - (u8)b->_d[iPos-delta] - carry;\n//            carry = (sum < 0);\n//            if (carry)\n//                sum += c_range;\n//            _d[iPos] = (u4)sum;\n//            iPos--;\n//        }\n        \n//        // ran out of digits in b, finish the addition\n//        while (iPos >= 0)\n//        {\n//            s8 sum = (u8)a->_d[iPos+shift] - carry;\n//            carry = (sum < 0);\n//            if (carry)\n//                sum += c_range;\n//            _d[iPos] = (u4)sum;\n//            iPos--;\n//        }\n        \n//        // remember what the first dropped digit would have been\n//        if (leastB >= c_digits+1)\n//        {\n//            previousDigit = -(s8)b->_d[c_digits-delta];\n//            if (leastB > c_digits+1)\n//                --previousDigit;\n//        }\n        \n//        if (shift)\n//        {\n//            // we pre-carried, convert lack of negative carry to\n//            // a positive carry\n//            carry = !carry;\n//        }\n//        else\n//        {\n//            // |a|>|b|, so there should be no way to get a final carry\n//            ASSERT(!carry);\n//        }\n        \n//        if (!carry)\n//        {\n//\t\t\tu2 pos;\n//            // find out how many leading digits are zero\n//            for (pos = 0;  pos < _length; ++pos)\n//                if (_d[pos] > 0)\n//                    break;\n//            u2 adjust = pos;\n            \n//            // adjust the exponent and promote remaining nonzero digits\n//            if (adjust == _length || _exponent - adjust < -c_maxExponent)\n//            {\n//                return Zero(_isNegative);\n//            }\n//            else if (adjust > 0)\n//            {\n//                _exponent -= adjust;\n//                _length -= adjust;\n//                for (pos = 0;  pos < _length;  pos++)\n//                    _d[pos] = _d[pos+adjust];\n//            }\n//        }\n//    }\n\n//    return Round(carry, previousDigit);\n//}\n\n\n\n//// Either do the multiplication, or raise an exception.\n//BigFloat& BigFloat::Mult(const BigFloat& n)\n//{\n//    // actually exponent will be exponent or exponent+1\n//    s8 exponent = _exponent + n._exponent + 1;\n//    _isNegative ^= n._isNegative;\n\n//    // do rough prechecks\n//    if (IsSpecial() || n.IsSpecial())\n//    {\n//        if (IsNaN() || n.IsNaN())\n//            return NaN();\n//        else if (IsZero() || n.IsZero())\n//            return Zero(_isNegative);\n//        else\n//            return Inf(_isNegative);\n//    }\n//    else if (exponent < c_minExponent)\n//    {\n//        return Zero(_isNegative);\n//    }\n//    else if (exponent > c_maxExponent+1)\n//    {\n//        return Inf(_isNegative);\n//    }\n    \n//    u8 length = _length + n._length;\n//    if (length > c_digits)\n//    {\n//        length = c_digits+3;\n//    }\n\n//    u8 temp[2*c_digits];\n//    for (int i=0; i<length; ++i)\n//        temp[i] = 0;\n\n//    // multiplications\n//    for (int i=_length; i--; )\n//    {\n//        u8 result;\n//        u8 start = n._length;\n//        if (n._length > length - i)\n//        {\n//            start = length - i;\n//                }\n//        for (int j=start; j--; )\n//        {\n//            result = (u8)_d[i] * (u8)n._d[j];\n//            temp[i + j + 1] += result & (c_range-1);\n//            temp[i + j] += result >> c_log;\n//        }\n//    }\n\n//    // carries\n//    for (u8 i=length; i-- > 1; )\n//    {\n//        temp[i-1] += (temp[i] >> c_log);\n//        temp[i] &= (c_range-1);\n//    }\n//    ASSERT(length > 0 && temp[0] < c_range);\n\n//    u8* result = temp;\n//    if (temp[0] == 0)\n//    {\n//        result = &temp[1];\n//        --exponent;\n//        --length;\n//    }\n//    u8 previousDigit = 0;\n//    if (length > c_digits)\n//    {\n//        length = c_digits;\n//        previousDigit = result[length];\n//    }\n\n//    // record the result\n//    for (int i=0; i<length; ++i)\n//        _d[i] = static_cast<u4>(result[i]);\n//    _length = static_cast<u2>(length);\n//    _exponent = exponent;\n    \n//    return Round(previousDigit);\n//}\n\n\n//BigFloat& BigFloat::Div(const BigFloat& n)\n//{\n//    // actually exponent will be exponent or exponent+1\n//    s8 exponent = _exponent - n._exponent;\n\n//    _isNegative = _isNegative ^ n._isNegative;\n\n//    // do rough prechecks\n//    if (IsSpecial() || n.IsSpecial())\n//    {\n//        if (IsNaN() || n.IsNaN() || n.IsZero())\n//            return NaN();\n//        else if (IsZero() || n.IsInf())\n//            return Zero(_isNegative);\n//        else\n//            return Inf(_isNegative);\n//    }\n//    else if (exponent+1 < c_minExponent)\n//    {\n//        return Zero(_isNegative);\n//    }\n//    else if (exponent > c_maxExponent+1)\n//    {\n//        return Inf(_isNegative);\n//    }\n\n//    ASSERT((c_log/2)*2 == c_log);\n//\tASSERT(_length > 0);\n\n//    // approximate result to only to this many half-digits, then round\n//\t// need at least one full previous digit, and one full digit of zeros in front\n//    static const u8 limit = 2*(c_digits+2);\n\n//    // numerator\n//\tstatic const u8 numerLimit = 2 * limit + 2;\n//    s8 t[numerLimit];\n//    for (int i=0; i<_length; ++i)\n//    {\n//        t[2*i] = _d[i]>>(c_log/2);\n//        t[2*i+1] = _d[i]&((((s8)1)<<(c_log/2))-1);\n//    }\n//    for (int i=2*_length; i<numerLimit; ++i)\n//        t[i] = 0;\n\n//    // denominator (overallocate; only 2*n._length of this will be used)\n//    s8 d[limit];\n//    s8 ad = n._d[0];\n//    s8 length = 2*n._length;\n//    s8 shift = (ad < (1<<(c_log/2))) ? 1 : 0;\n//    if (shift)\n//    {\n//        --length;\n//        d[0] = ad;\n//        ad <<= c_log/2;\n//        for (int i=2; i<2*n._length; i+=2)\n//        {\n//            d[i-1] = n._d[i/2] >> (c_log/2);\n//            d[i] = n._d[i/2] & ((1<<(c_log/2))-1);\n//        }\n//        if (n._length > 1)\n//        {\n//            ad += d[1];\n//        }\n//    }\n//    else\n//    {\n//        for (int i=0; i<2*n._length; i+=2)\n//        {\n//            d[i] = n._d[i/2] >> (c_log/2);\n//            d[i+1] = n._d[i/2] & ((1<<(c_log/2))-1);\n//        }\n//    }\n\n//    // divide\n//    s8 r[limit];\n//    s8 an = t[0];\n//    for (int i=0; i<limit; ++i)\n//    {\n//        an <<= c_log/2;\n//        an += t[i+1];\n//        s8 q = an/ad;\n//        if (q)\n//        {\n//            // first 2 digits of d are already accounted for by ad\n//            if (2 < length)\n//            {\n//                t[i+2] -= q*d[2];\n//                for (int j=length; j-- > 3; )\n//                {\n//                    s8 p = t[i+j] - q*d[j];\n//                    ASSERT(p < (((s8)1)<<(3*c_log/2)) && p > -(((s8)1)<<(3*c_log/2)));\n//                    t[i+j-1] += p >> (c_log/2);\n//                    t[i+j] = p & ((1<<(c_log/2))-1);\n//                }\n//            }\n//        }\n//        ASSERT(ad*q + (an%ad) == an);\n//        an %= ad;\n        \n//        r[i] = q;\n//    }\n\n//    // carry\n//    for (int i=limit; i-- > 1;)\n//    {\n//        s8 carry = r[i] >> (c_log/2);\n//        if (carry != 0)\n//        {\n//            r[i] &= (1<<(c_log/2)) - 1;\n//            r[i-1] += carry;\n//        }\n//    }\n//    ASSERT((r[0] >> (c_log/2)) == 0);\n\n//    s8* pr = r;\n//    while (pr[0] == 0)\n//    {\n//        ++pr;\n//        --shift;\n//    }\n\n//    // combine the half-digits and round\n//    s8 previousDigit = 0;\n//    if (!(shift & 1))\n//    {\n//        _d[0] = static_cast<u4>(pr[0]);\n//        for (int i=1; i<c_digits; ++i)\n//        {\n//            _d[i] = static_cast<u4>((pr[2*i-1] << (c_log/2)) + pr[2*i]);\n//        }\n//        previousDigit = (pr[2*c_digits-1] << (c_log/2)) + pr[2*c_digits];\n//    }\n//    else\n//    {\n//        for (int i=0; i<c_digits; ++i)\n//        {\n//            _d[i] = static_cast<u4>((pr[2*i] << (c_log/2)) + pr[2*i+1]);\n//        }\n//        previousDigit = (pr[2*c_digits] << (c_log/2)) + pr[2*c_digits+1];\n//    }\n//    _length = c_digits;\n//    _exponent = exponent + (shift>>1);\n//    return Round(previousDigit);\n//}\n\n\n//int BigFloat::Compare(s8 n, s8 exponent)\n//{\n//    BigFloat b(n, exponent);\n//    return Compare(b);\n//}\n\n\n//BigFloat& BigFloat::Add(s8 n, s8 exponent)\n//{\n//    BigFloat b(n, exponent);\n//    return Add(b);\n//}\n\n\n//BigFloat& BigFloat::Sub(s8 n, s8 exponent)\n//{\n//    BigFloat b(n, exponent);\n//    return Sub(b);\n//}\n\n\n//BigFloat& BigFloat::Mult(s8 n, s8 exponent)\n//{\n//    BigFloat b(n, exponent);\n//    return Mult(b);\n//}\n\n\n//BigFloat& BigFloat::Div(s8 n, s8 exponent)\n//{\n//    BigFloat b(n, exponent);\n//    return Div(b);\n//}\n\n\n//BigFloat& BigFloat::Invert()\n//{\n//    BigFloat i(1);\n//    i.Div(*this);\n//    return Copy(i);\n//}\n\n\n//BigFloat& BigFloat::Sqrt()\n//{\n//    if (_isNegative)\n//    {\n//        return NaN();\n//    }\n//    else if (IsSpecial())\n//    {\n//        return *this;\n//    }\n\n//    static const int c_intermediate = 2*c_digits+2;\n//    static const int c_remainder = 2*c_intermediate;\n\n//    // remainder stores the original value in half-digits\n//    s8 r[c_remainder];\n\n//    // answer is also in half-digits\n//    s8 abuf[c_intermediate+1];\n//    bool odd = (_exponent & 1);\n\n//    s8* a = abuf;\n//    if (!odd)\n//    {\n//        abuf[0] = 0;\n//        a = &abuf[1];\n//    }\n    \n//    for (int i=0; i<_length; ++i)\n//    {\n//        r[2*i] = _d[i]>>(c_log/2);\n//        r[2*i+1] = _d[i] & ((1<<(c_log/2))-1);\n//    }\n//    for (int i=_length*2; i<c_remainder; ++i)\n//        r[i] = 0;\n//    for (int i=0; i<c_intermediate; ++i)\n//        a[i] = 0;\n\n//    // Find the first two half-digits of the root using integer arithmetic.\n//    //\n//    // This method sometimes gives an answer one too high, which is not\n//    // important usually, but would cause the answer to not fit in two\n//    // half-digits in the case of 1<<(2*c_log)-1.  I chose the starting\n//    // root so that that doesn't happen.\n//    u8 first =\n//        (((u8)r[0])<<(3*c_log/2)) +\n//        (((u8)r[1])<<(2*c_log/2)) +\n//        (((u8)r[2])<<(1*c_log/2)) +\n//        ((u8)r[3]);\n//    r[0] = 0;\n//    r[1] = 0;\n//    r[2] = 0;\n//    r[3] = 0;\n//    u8 root = ((u8)1) << c_log;\n//    for (;;)\n//    {\n//        u8 oldroot = root;\n//        root = (root + (first/root)) / 2;\n//        if (oldroot == root || oldroot == root+1)\n//            break;\n//    }\n//    a[0] = root >> (c_log/2);\n//    ASSERT(a[0] >= 1);\n//    ASSERT(a[0] < (1<<(c_log/2)));\n//    a[1] = root & ((1<<(c_log/2))-1);\n\n//    u8 square = root*root;\n//    s8 remainder = (s8)(first - root*root);\n//    ASSERT(remainder < ((s8)2)<<c_log);\n//    ASSERT(remainder > ((s8)-2)<<c_log);\n//    s8 denominator = -2*(s8)root;\n//    for (int i=2; i<c_intermediate; i++)\n//    {\n//        // new approximate remainder\n//        remainder <<= c_log/2;\n//        remainder += r[i+2];\n//        r[i+2] = 0;\n\n//        // new approximate delta\n//        s8 delta = remainder/denominator;\n\n//        // adjust the remainder\n//        remainder -= denominator * delta;\n//        ASSERT(remainder < ((s8)2)<<c_log);\n//        ASSERT(remainder > ((s8)-2)<<c_log);\n//        ASSERT(r[i] == 0);\n\n//        if (2*i+1 < c_intermediate)\n//        {\n//            square = delta*delta;\n//            r[2*i+1] -= square;\n//        }\n//        int j = (2*i+1 >= c_intermediate) ? c_intermediate-i : i;\n//        if (j > 2)\n//        {\n//            while (j-- > 3)\n//            {\n//                s8 p = r[i+j+1] + 2 * a[j] * delta;\n//                r[i+j+1] = p & ((1<<(c_log/2))-1);\n//                r[i+j] += p >> (c_log/2);\n//            }\n//            r[i+j+1] += 2 * a[j] * delta;\n//        }\n\n//        a[i] = -delta;\n//    }\n\n//    // carries, make all the digits between 0 and 1<<(c_log/2)\n//    for (int i=c_intermediate; i-- > 1; )\n//    {\n//        s8 top = a[i] >> c_log/2;\n//        a[i-1] += top;\n//        a[i] -= top << c_log/2;\n//    }\n\n//    // combine the half digits into the final answer\n//    _exponent >>= 1;\n//    _length = c_digits;\n//    s8 previousDigit = (a[2*c_digits] << (c_log/2)) + a[2*c_digits+1];\n//\ts8 x = (abuf[0] << (c_log/2)) + abuf[1];\n//    ASSERT(x >= 1);\n//    ASSERT(x < (((s8)1)<<c_log));\n//\t_d[0] = static_cast<u4>(x);\n//    for (int i=1; i<c_digits; ++i)\n//    {\n//        x = (abuf[2*i] << c_log/2) + abuf[2*i+1];\n//        ASSERT(x >= 0);\n//        ASSERT(x < (((s8)1)<<c_log));\n//\t\t_d[i] = static_cast<u4>(x);\n//    }\n//    return Round(previousDigit);\n//}\n\n\n//const BigFloat& BigFloat::Pi()\n//{\n//    if (!BigFloatCache::_isInitialized)\n//        BigFloatCache::Init();\n//    return BigFloatCache::_pi;\n//}\n\n\n//const BigFloat& BigFloat::E()\n//{\n//    if (!BigFloatCache::_isInitialized)\n//        BigFloatCache::Init();\n//    return BigFloatCache::_e;\n//}\n\n\n//const BigFloat& BigFloat::ConstZero()\n//{\n//    if (!BigFloatCache::_isInitialized)\n//        BigFloatCache::Init();\n//    return BigFloatCache::_zero;\n//}\n\n\n//// given x in [-pi/4, pi/4], replace it with sin(x)\n//BigFloat& BigFloat::PartialSin()\n//{\n//    if (!BigFloatCache::_isInitialized)\n//        BigFloatCache::Init();\n//    BigFloat x2(*this);\n//    x2.Mult(*this);\n\n//    BigFloat x4(x2);\n//    x4.Mult(x2);\n\n//    BigFloat x6(x4);\n//    x6.Mult(x2);\n\n//    BigFloat x8(x6);\n//    x8.Mult(x2);\n\n//    BigFloat sin(0);\n//    BigFloat oldSin(0);\n//    BigFloat power(*this);\n//    s8 i = 7;\n//    ASSERT(BigFloatCache::_overFactLen < (1<<(63/6)));\n//    for (; i<BigFloatCache::_overFactLen; i+=8)\n//    {\n//        BigFloat sum(i*(i-1)*(i-2)*(i-3)*(i-4)*(i-5));\n\n//        BigFloat term(x2);\n//        term.Mult(i*(i-1)*(i-2)*(i-3));\n//        sum.Sub(term);\n\n//        term.Copy(x4);\n//        term.Mult(i*(i-1));\n//        sum.Add(term);\n\n//        sum.Sub(x6);\n            \n\n//        sum.Mult(BigFloatCache::_overFact[i]);\n//        sum.Mult(power);\n//        sin.Add(sum);\n\n//        if (sin.Compare(oldSin) == 0)\n//            break;\n\n//        oldSin.Copy(sin);\n//        power.Mult(x8);\n//    }\n\n//    ASSERT(i < BigFloatCache::_overFactLen);\n//    return Copy(sin);\n//}\n\n\n\n//// given x in [-pi/4, pi/4], replace it with cos(x)\n//BigFloat& BigFloat::PartialCos()\n//{\n//    if (!BigFloatCache::_isInitialized)\n//        BigFloatCache::Init();\n//    BigFloat x2(*this);\n//    x2.Mult(*this);\n\n//    BigFloat x4(x2);\n//    x4.Mult(x2);\n\n//    BigFloat x6(x4);\n//    x6.Mult(x2);\n\n//    BigFloat x8(x6);\n//    x8.Mult(x2);\n\n//    BigFloat cos(0);\n//    BigFloat oldCos(0);\n//    BigFloat power(1);\n//    s8 i = 6;\n//    ASSERT(BigFloatCache::_overFactLen < (1<<(63/6)));\n//    for (; i<BigFloatCache::_overFactLen; i+=8)\n//    {\n//        BigFloat sum(i*(i-1)*(i-2)*(i-3)*(i-4)*(i-5));\n\n//        BigFloat term(x2);\n//        term.Mult(i*(i-1)*(i-2)*(i-3));\n//        sum.Sub(term);\n\n//        term.Copy(x4);\n//        term.Mult(i*(i-1));\n//        sum.Add(term);\n\n//        sum.Sub(x6);\n            \n//        sum.Mult(BigFloatCache::_overFact[i]);\n//        sum.Mult(power);\n//        cos.Add(sum);\n\n//        if (cos.Compare(oldCos) == 0)\n//            break;\n\n//        oldCos.Copy(cos);\n//        power.Mult(x8);\n//    }\n\n//    ASSERT(i < BigFloatCache::_overFactLen);\n//    return Copy(cos);\n//}\n\n\n//// Lots of functions would prefer inputs only in [-pi/4, pi/4).\n//s8 BigFloat::Quadrant()\n//{\n//    if (!BigFloatCache::_isInitialized)\n//        BigFloatCache::Init();\n//    BigFloat div2pi(*this);\n\n//    // modulo 2pi, don't care about the rest\n//    div2pi.Mult(BigFloatCache::_overTwoPi);\n//    BigFloat extra(div2pi);\n//    extra.Trunc();\n//    div2pi.Sub(extra);\n//    extra.Mult(BigFloatCache::_twoPi);\n//    Sub(extra);\n\n//    div2pi.Mult(8);\n//    div2pi.Trunc();\n//    s8 quadrant = div2pi.ToInteger();\n//    switch (quadrant)\n//    {\n//    case 7:\n//        Sub(BigFloatCache::_twoPi);\n//        break;\n//    case 6:\n//    case 5:\n//        Sub(BigFloatCache::_threePiOverTwo);\n//        break;\n//    case 4:\n//    case 3:\n//        Sub(BigFloatCache::_pi);\n//        break;\n//    case 2:\n//    case 1:\n//        Sub(BigFloatCache::_piOverTwo);\n//        break;\n//    case 0:\n//        if (_isNegative)\n//            quadrant += 7;\n//        break;\n//    case -1:\n//    case -2:\n//        quadrant += 7;\n//        Add(BigFloatCache::_piOverTwo);\n//        break;\n//    case -3:\n//    case -4:\n//        quadrant += 7;\n//        Add(BigFloatCache::_pi);\n//        break;\n//    case -5:\n//    case -6:\n//        quadrant += 7;\n//        Add(BigFloatCache::_threePiOverTwo);\n//        break;\n//    case -7:\n//        quadrant += 7;\n//        Add(BigFloatCache::_twoPi);\n//        break;\n//    default:\n//        ASSERT(false, \"bad quadrant %d\", quadrant);\n//    }\n\n//    BigFloat limit(3217);\n//    limit.Div(4096);    // limit is a little bigger than pi/4, there are sometimes rounding issues\n//    ASSERT(CompareAbsolute(limit) <= 0);\n//    return quadrant;\n//}\n\n\n//BigFloat& BigFloat::Sin()\n//{\n//    if (IsSpecial())\n//    {\n//        if (IsZero())\n//            return Copy(0);\n//        else\n//            return NaN();\n//    }\n\n//    s8 quadrant = Quadrant();\n//    switch (quadrant)\n//    {\n//    case 7:\n//    case 0:\n//        PartialSin();\n//        break;\n//    case 1:\n//    case 2:\n//        PartialCos();\n//        break;\n//    case 3:\n//    case 4:\n//        PartialSin();\n//        Negate();\n//        break;\n//    case 5:\n//    case 6:\n//        PartialCos();\n//        Negate();\n//        break;\n//    }\n//    return *this;\n//}\n\n\n//BigFloat& BigFloat::Csc()\n//{\n//    Sin();\n//    Invert();\n//    return *this;\n//}\n\n\n//BigFloat& BigFloat::Cos()\n//{\n//    if (IsSpecial())\n//    {\n//        if (IsZero())\n//            return Copy(1);\n//        else\n//            return NaN();\n//    }\n    \n//    s8 quadrant = Quadrant();\n//    switch (quadrant)\n//    {\n//    case 7:\n//    case 0:\n//        PartialCos();\n//        break;\n//    case 1:\n//    case 2:\n//        PartialSin();\n//        Negate();\n//        break;\n//    case 3:\n//    case 4:\n//        PartialCos();\n//        Negate();\n//        break;\n//    case 5:\n//    case 6:\n//        PartialSin();\n//        break;\n//    }\n//    return *this;\n//}\n\n\n//BigFloat& BigFloat::Sec()\n//{\n//    Cos();\n//    Invert();\n//    return *this;\n//}\n\n\n//BigFloat& BigFloat::Tan()\n//{\n//    if (IsSpecial())\n//    {\n//        if (IsZero())\n//            return Copy(0);\n//        else\n//            return NaN();\n//    }\n\n//    s8 quadrant = Quadrant();\n//    BigFloat sin2;\n//    BigFloat cos;\n//    BigFloat cos2;\n//    BigFloat sin;\n//    bool negate = false;\n//    switch (quadrant)\n//    {\n//    case 7:\n//    case 0:\n//    case 3:\n//    case 4:\n//        // sine is more accurate, derive cosine\n//        PartialSin();\n//        sin2.Copy(*this);\n//        sin2.Mult(sin2);\n//        cos.Copy(1);\n//        cos.Sub(sin2);\n//        cos.Sqrt();\n//        Div(cos);\n//        break;\n//    case 2:\n//    case 6:\n//        negate = true;\n//    case 1:\n//    case 5:\n//        // cosine is more accurate, derive sine\n//        PartialCos();\n//        cos2.Copy(*this);\n//        cos2.Mult(cos2);\n//        sin.Copy(1);\n//        sin.Sub(cos2);\n//        sin.Sqrt();\n//        if (negate)\n//            sin._isNegative = !sin._isNegative;\n//        Div(sin);\n//        break;\n//    }\n//    return *this;\n//}\n\n\n//BigFloat& BigFloat::Exp()\n//{\n//    if (!BigFloatCache::_isInitialized)\n//        BigFloatCache::Init();\n//    if (IsSpecial())\n//    {\n//        if (IsNaN())\n//            return *this;\n//        else if (IsZero())\n//            return Copy(1);\n//        else if (IsPInf())\n//            return *this;\n//        else if (IsNInf())\n//            return Zero();\n//    }\n\n//    // only calculate e on [-1/16, 1/16].\n//    // For the rest use multiples of e^^-16.\n//    BigFloat whole(*this);\n//    whole.Mult(1<<(-BigFloatCache::_ePowerNeg-1));\n//    whole.Trunc();\n//    whole.Div(1<<(-BigFloatCache::_ePowerNeg-1));\n//    Sub(whole);\n\n//    BigFloat x2(*this);\n//    x2.Mult(*this);\n\n//    BigFloat x4(x2);\n//    x4.Mult(x2);\n\n//    BigFloat x8(x4);\n//    x8.Mult(x4);\n\n//    // sum the series (8 terms at a time, to reduce bignum multiplications)\n//    // calculating only the fractional part mod 1/16\n//    BigFloat exp(1);\n//    BigFloat oldExp(1);\n//    BigFloat power(*this);\n//    for (s8 i=8; i<BigFloatCache::_overFactLen; i+=8)\n//    {\n//        BigFloat even(i*(i-1)*(i-2)*(i-3)*(i-4));\n\n//        BigFloat term(i);\n//        term.Mult(x4);\n//        even.Add(term);\n//        even.Mult(x2);\n\n//        even.Add(i*(i-1)*(i-2)*(i-3)*(i-4)*(i-5)*(i-6));\n\n//        term.Copy(i*(i-1)*(i-2));\n//        term.Mult(x4);\n//        even.Add(term);\n\n//        BigFloat odd(i*(i-1)*(i-2)*(i-3));\n\n//        term.Copy(1);\n//        term.Mult(x4);\n//        odd.Add(term);\n//        odd.Mult(x2);\n        \n//        odd.Add(i*(i-1)*(i-2)*(i-3)*(i-4)*(i-5));\n\n//        term.Copy(i*(i-1));\n//        term.Mult(x4);\n//        odd.Add(term);\n\n//        odd.Mult(*this);\n\n//        odd.Add(even);\n//        odd.Mult(BigFloatCache::_overFact[i]);\n//        odd.Mult(power);\n\n//        exp.Add(odd);\n\n//        if (exp.Compare(oldExp) == 0)\n//            break;\n\n//        oldExp.Copy(exp);\n//        power.Mult(x8);\n        \n//    }\n \n//    // now handle the whole number multiple of 1/16\n//    if (!whole._isNegative)\n//    {\n//        for (s8 i=0; i<whole._length; ++i)\n//        {\n//            for (s8 j=0; j<c_log; ++j)\n//            {\n//                if (whole._d[i] & (1<<j))\n//                {\n//                    s8 index = c_log*(whole._exponent-i)+j;\n//                    if (index < BigFloatCache::_ePowerLen)\n//                    {\n//                        ASSERT(index > BigFloatCache::_ePowerNeg);\n//                        exp.Mult(BigFloatCache::_ePower[index]);\n//                    }\n//                    else\n//                        exp.Inf();\n//                }\n//            }\n//        }\n//    }\n//    else if (whole._isNegative)\n//    {\n//        for (s8 i=0; i<whole._length; ++i)\n//        {\n//            for (s8 j=0; j<c_log; ++j)\n//            {\n//                if (whole._d[i] & (1<<j))\n//                {\n//                    s8 index = c_log*(whole._exponent-i)+j;\n//                    if (index < BigFloatCache::_ePowerLen)\n//                    {\n//                        ASSERT(index > BigFloatCache::_ePowerNeg);\n//                        exp.Mult(BigFloatCache::_eInvPower[index]);\n//                    }\n//                    else\n//                        exp.Zero();\n//                }\n//            }\n//        }\n//    }\n    \n//    return Copy(exp);\n//}\n\n\n//BigFloat& BigFloat::ASin()\n//{\n//    BigFloat denom(*this);\n//    denom.Mult(denom);\n//    denom.Sub(1);\n//    denom.Negate();\n//    denom.Sqrt();\n//    denom.Add(1);\n//    Div(denom);\n//    ATan();\n//    return Mult(2);\n//}\n\n\n//BigFloat& BigFloat::ACos()\n//{\n//    BigFloat num(*this);\n//    num.Mult(num);\n//    num.Sub(1);\n//    num.Negate();\n//    num.Sqrt();\n//    BigFloat denom(*this);\n//    denom.Add(1);\n//    num.Div(denom);\n//    num.ATan();\n//    num.Mult(2);\n//    return Copy(num);\n//}\n\n\n//BigFloat& BigFloat::ATan()\n//{\n//    if (IsNaN())\n//        return *this;\n\n//    if (!BigFloatCache::_isInitialized)\n//        BigFloatCache::Init();\n\n//    bool flip = (CompareAbsolute(1) > 0);\n//    if (flip)\n//    {\n//        Invert();\n//    }\n\n//    bool reduce = false;\n\n//    // tan(x) = 2x/(1+sqrt(1+xx))\n//    static const int c_iter = 2;\n//    for (int i=0; i<c_iter; ++i)\n//    {\n//        BigFloat denom(*this);\n//        denom.Mult(denom);\n//        denom.Add(1);\n//        denom.Sqrt();\n//        denom.Add(1);\n//        Div(denom);\n//    }\n\n//    BigFloat x2(*this);\n//    x2.Mult(*this);\n\n//    BigFloat x4(x2);\n//    x4.Mult(x2);\n    \n//    BigFloat aTan(0);\n//    BigFloat oldATan(0);\n//    BigFloat power(*this);\n//    for (s8 i=1; ; i+=4)\n//    {\n//        BigFloat term(i);\n//        term.Mult(x2);\n//        term.Sub(i+2);\n//        term.Mult(power);\n//        term.Div(i*(i+2));\n//        aTan.Sub(term);\n\n//        if (aTan.Compare(oldATan) == 0)\n//            break;\n\n//        oldATan.Copy(aTan);\n//        power.Mult(x4);\n//    }\n//    Copy(aTan);\n\n//    // multiply the result by 1<<c_iter to make up for all those half-angle reductions earlier\n//    Mult(1<<c_iter);\n//    if (flip)\n//    {\n//        Negate();\n//        if (_isNegative)\n//        {\n//            Sub(BigFloatCache::_piOverTwo);\n//        }\n//        else\n//        {\n//            Add(BigFloatCache::_piOverTwo);\n//        }\n//    }\n\n//    return *this;\n//}\n\n\n//BigFloat& BigFloat::Ln()\n//{\n//    if (!BigFloatCache::_isInitialized)\n//        BigFloatCache::Init();\n    \n//    if (_isNegative)\n//        return NaN();\n//    else if (IsSpecial())\n//    {\n//        if (IsZero())\n//            return NInf();\n//        else if (IsInf())\n//            return Inf();\n//        else\n//            return NaN();\n//    }\n\n//    // get a remainder in [1-delta, delta] for some small delta\n//    BigFloat whole;\n//    static const s8 minDigit = BigFloatCache::_ePowerNeg/c_log - 2;\n//    static const s8 offset = minDigit * c_log;  // offset to keep i positive\n//    if (_exponent >= 0)\n//    {\n//        s8 i=BigFloatCache::_ePowerNeg+1;\n//        while (i < BigFloatCache::_ePowerLen && Compare(BigFloatCache::_ePower[i]) >= 0)\n//            ++i;\n//        whole._exponent = minDigit + (i-1-offset)/c_log;\n//        whole._length = (u2)(whole._exponent - minDigit);\n//        if (whole._length > c_digits)\n//            whole._length = c_digits;\n//        for (int j=0; j<whole._length; ++j)\n//            whole._d[j] = 0;\n//        while (i-- > BigFloatCache::_ePowerNeg+1)\n//        {\n//            if (Compare(BigFloatCache::_ePower[i]) >= 0)\n//            {\n//                Mult(BigFloatCache::_eInvPower[i]);\n//                whole._d[whole._exponent - (i-offset)/c_log - minDigit] += (1 << ((i+offset)%c_log));\n//            }\n//        }\n//    }\n//    else\n//    {\n//        whole._isNegative = true;\n//        s8 i=BigFloatCache::_ePowerNeg+1;\n//        while (i < BigFloatCache::_ePowerLen && Compare(BigFloatCache::_eInvPower[i]) <= 0)\n//            ++i;\n//        whole._exponent = minDigit + (i-1-offset)/c_log;\n//\t\ts8 len = whole._exponent - minDigit;\n//\t\tASSERT(len >= 0);\n//\t\tASSERT(len < (u2)~0);\n//        whole._length = static_cast<u2>(len);\n//        if (whole._length > c_digits)\n//            whole._length = c_digits;\n//        for (int j=0; j<whole._length; ++j)\n//            whole._d[j] = 0;\n        \n//        while (i-- > BigFloatCache::_ePowerNeg+1)\n//        {\n//            if (Compare(BigFloatCache::_eInvPower[i]) <= 0)\n//            {\n//                Mult(BigFloatCache::_ePower[i]);\n//                whole._d[whole._exponent - (i-offset)/c_log - minDigit] += (1 << ((i+offset)%c_log));\n//            }\n//        }\n//    }\n\n//    // ok here goes\n//    BigFloat x(*this);\n//    x.Sub(1);\n//    BigFloat x2(x);\n//    x2.Mult(x);\n//    BigFloat power(x);\n//    BigFloat oldLn(1);\n//    BigFloat ln(0);\n//    for (s8 i=1; ; i+= 2)\n//    {\n//        BigFloat term(i);\n//        term.Mult(x);\n//        term.Sub(i+1);\n//        term.Div(i*(i+1));\n//        term.Mult(power);\n//        ln.Sub(term);\n//        if (oldLn.Compare(ln) == 0)\n//            break;\n\n//        oldLn.Copy(ln);\n//        power.Mult(x2);\n//    }\n    \n//    // add in whole\n//    ln.Add(whole);\n    \n//    return Copy(ln);\n//}\n\n\n//BigFloat& BigFloat::Power(const BigFloat& n)\n//{\n//    Ln();\n//    Mult(n);\n//    return Exp();\n//}\n\n\n//BigFloat& BigFloat::Log(const BigFloat& n)\n//{\n//    BigFloat lnn(n);\n//    lnn.Ln();\n\n//    Ln();\n//    Invert();\n    \n//    return Mult(lnn);\n//}\n\n\n//s8 BigFloat::RoundInteger(s8 value)\n//{\n//    u8 x;\n\n//    // find if it is negative\n//    bool negative = (value < 0);\n\n//    x = (u8)(negative ? -value : value);\n\n//    // find the exponent\n//    int exp=0;\n//    for (; exp<64; exp+=c_log)\n//    {\n//        if (x < ((u8)c_range)<<exp)\n//            break;\n//    }\n\n//    // round to the nearest legal int\n//    u8 precision = c_log*(c_digits-1);\n//    if (exp > precision)\n//    {\n//        // add 1/2 so it rounds right\n//        x += ((u8)1)<<(exp - precision - 1);\n\n//        // truncate x to the legal precision\n//        x >>= (exp - precision);\n//        x <<= (exp - precision);\n//    }\n\n//    return negative ? -(s8)x : (s8)x;\n//}\n\n\n//void BigFloat::TestInteger(const BigFloat& n, s8 value)\n//{\n//    s8 x = RoundInteger(value);\n//    ASSERT(n.ToInteger() == x, \"n=%d, x=%d\", (s4)n.ToInteger(), (s4)x);\n//}\n\n\n//void BigFloat::TestAdd(s8 x, s8 y)\n//{\n//    BigFloat bx(x);\n//    BigFloat by(y);\n//    BigFloat bz(bx);\n\n//    TestInteger(bz.Add(by), x+y);\n//    TestInteger(bz.Copy(bx).Sub(by), x-y);\n//}\n\n\n//void BigFloat::TestMult(s8 x, s8 ex, s8 y, s8 ey)\n//{\n//    s8 px = x<0 ? -x : x;\n//    s8 py = y<0 ? -y : y;\n//    ASSERT(px < (((s8)1)<<31));\n//    ASSERT(py < (((s8)1)<<31));\n//    s8 pz = RoundInteger(px*py);\n\n//    BigFloat bx(x, ex);\n//    BigFloat by(y, ey);\n//    BigFloat bz(bx);\n\n//    if (pz == 0)\n//    {\n//        bz.Mult(by);\n//        ASSERT(bz.ToInteger() == 0);\n//        return;\n//    }\n\n//    int i;\n//    for (i=0; pz < (((u8)1)<<(64-c_log)) && i<64; ++i)\n//    {\n//        pz <<= c_log;\n//    }\n//    s8 exponent = ex+ey+(64/c_log - i - 1);\n\n//    if (exponent > c_maxExponent)\n//        return;  // doing the multiplication would have raised an exception\n\n//    bz.Mult(by);\n//    if (exponent < c_minExponent)\n//    {\n//        ASSERT(bz.CompareAbsolute(0) == 0);\n//    }\n//    else\n//    {\n//        ASSERT(bz.ToDigits() == pz);\n//        ASSERT(bz.ToExponent() == exponent);\n//        ASSERT(bz.IsNegative() == ((x<0) != (y<0)));\n//    }\n//}\n\n//void BigFloat::TestInverse(s8 x, s8 ex)\n//{\n//    BigFloat bx(x, ex);\n\n//    BigFloat bi(bx);\n//    bi.Invert();\n\n//    BigFloat bq(bi);\n//    bq.Mult(bx);\n//    if (bx.ToExponent() >= -c_maxExponent && bi.IsZero())\n//        return;\n\n//    bq.Sub(1);\n//    ASSERT(bq.Compare(0) == 0 ||\n//           bq.ToExponent() <= 1-c_digits);\n//}\n\n\n//void BigFloat::TestSqrt(s8 x, s8 ex)\n//{\n//    BigFloat bx(x, ex);\n\n//    BigFloat br(bx);  // root\n//    br.Sqrt();\n\n//    // check (bx-br*br)/bx\n//    BigFloat bd(br);  // delta\n//    bd.Mult(bd);\n//    bd.Sub(bx);\n//    BigFloat bo(bx);  // ratio of delta to original\n//    bo.Invert();\n//    bo.Mult(bd);\n//    ASSERT(bo.Compare(0) == 0 ||\n//           bo.ToExponent() <= 1-c_digits);\n\n\n//    // check (br-bx/br)/br\n//    // this tests division in interesting ways too\n//    bd.Copy(bx);  // delta\n//    bd.Div(br);\n//    bd.Sub(br);\n//    bo.Copy(br);  // ratio of delta to original\n//    bo.Invert();\n//    bo.Mult(bd);\n//    ASSERT(bo.Compare(0) == 0 ||\n//           bo.ToExponent() <= 1-c_digits);\n//}\n\n\n//#ifdef BIGFLOAT_TEST\n//void BigFloat::UnitTest()\n//{\n//    BigFloat b;\n//    BigFloat zero;\n//    ASSERT(b.Compare(zero) == 0);\n\n//    // b is 1\n//    b.FromInteger(1);\n//    ASSERT(b.Compare(zero) == 1);\n//    ASSERT(b.Compare(b) == 0);\n\n//    // b is -1\n//    b.FromInteger(-1);\n//    ASSERT(b.Compare(zero) == -1);\n//    ASSERT(b.Compare(b) == 0);\n//    BigFloat c;\n\n//    // c is -c_range\n//    c.FromInteger(-(s8)c_range);\n//    TestInteger(c, -(s8)c_range);\n\n//    TestSqrt(2, 0);\n\n//    static const u8 c_maxInt = ((u8)1) << (c_log * c_digits);\n\n//    // check if inverse works\n//    for (s8 ex=(s8)(c_minExponent-c_digits+1);\n//         ex<=(s8)(c_maxExponent-c_digits+1);\n//         ++ex)\n//    {\n//        for (s8 x=(((s8)1)<<(c_log*(c_digits-1))); x<c_maxInt; x++)\n//        {\n//            TestInverse(x, ex);\n//            TestInverse(-x, ex);\n//        }\n//    }\n//    printf(\"Inverse works\\n\");\n\n\n//    // check if square root works\n//    for (s8 ex = (s8)(c_minExponent-c_digits+1);\n//         ex < (s8)(c_maxExponent-c_digits+1);\n//         ++ex)\n//    {\n//        for (s8 x=(((s8)1)<<(c_log*(c_digits-1))); x<c_maxInt; x++)\n//        {\n//            TestSqrt(x, ex);\n//        }\n//    }\n//    printf(\"Square root works\\n\");\n\n//    // check if addition and subtraction work\n//    u4 coef = 1;\n//    for (int q=0; q<2*c_digits; ++q)\n//    {\n//        for (s8 x=0; x<coef*c_maxInt; x += coef)\n//        {\n//            for (s8 y=0; y<c_maxInt; ++y)\n//            {\n//                TestAdd(x,y);\n//                TestAdd(x,-y);\n//                TestAdd(-x,y);\n//                TestAdd(-x,-y);\n//            }\n//        }\n//        coef *= c_range;\n//    }\n//    printf(\"Addition and Subtraction work\\n\");\n\n//    // check if multiplication works\n//    TestMult(0, 0, 1, 0);\n//    TestMult(-1, 0, 0, 0);\n//    for (s8 ex=(s8)(c_minExponent-c_digits+1);\n//         ex<=(s8)(c_maxExponent-c_digits+1);\n//         ++ex)\n//    {\n//        for (s8 x=(((s8)1)<<(c_log*(c_digits-1))); x<c_maxInt; x++)\n//        {\n//            for (s8 ey=(s8)(c_minExponent-c_digits+1);\n//                 ey<=(s8)(c_maxExponent-c_digits+1);\n//                 ++ey)\n//            {\n//                for (s8 y=(((s8)1)<<(c_log*(c_digits-1))); y<c_maxInt; y++)\n//                {\n//                    TestMult(x, ex, y, ey);\n//                    TestMult(x, ex, -y, ey);\n//                    TestMult(-x, ex, y, ey);\n//                    TestMult(-x, ex, -y, ey);\n//                }\n//            }\n//        }\n//    }\n//    printf(\"Multiplication works\\n\");\n//}\n\n//int main(int argc, const char **argv)\n//{\n//    BigFloat* m[2];\n//    m[0] = new BigFloat[3];\n//    m[1] = new BigFloat[3];\n//    m[0][1].Copy(1);\n//    m[1][0].Copy(1);\n//    m[1][1].Copy(1);\n//    m[0][2].Copy(1);\n//    m[1][2].Copy(2);\n//    BigFloat::GaussianElimination(m, 2, 2);\n//    printf(\"%d, %d\\n\", (s4)m[0][2].ToInteger(), (s4)m[1][2].ToInteger());\n\n\n//    printf(\"%f\\n\", BigFloat::Pi().ToDouble());\n    \n//    try\n//    {\n//        BigFloat::UnitTest();\n//    }\n//    catch( const std::exception & ex )\n//    {\n//        fprintf(stderr, \"%s\\n\", ex.what());\n//    }\n\n//    return 0;\n//}\n//#endif\n\n/*\n * File: biginteger.cpp\n * --------------------\n * This file implements members of a class for arbitrary-size integer arithmetic.\n * It is meant to help get around the max/min value limit for types\n * such as int and long.\n * See biginteger.h for declarations and documentation of each member.\n *\n * @version 2017/11/05\n * - fixed compiler error on some older clang versions about string insert call\n * @version 2017/10/28\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"biginteger.h\"\n#include <algorithm>\n#include <cctype>\n#include <climits>\n#include <cmath>\n#include <iomanip>\n#include <iostream>\n#include <sstream>\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#undef INTERNAL_INCLUDE\n\nstatic int STRING_SIZE_MAX = 10000;   // for strings\n\nconst BigInteger BigInteger::NEGATIVE_ONE(\"-1\");\nconst BigInteger BigInteger::ZERO(\"0\");\nconst BigInteger BigInteger::ONE(\"1\");\nconst BigInteger BigInteger::TWO(\"2\");\nconst BigInteger BigInteger::TEN(\"10\");\nconst BigInteger BigInteger::MAX_INT(\"2147483647\");\nconst BigInteger BigInteger::MIN_INT(\"-2147483648\");\nconst BigInteger BigInteger::MAX_UINT(\"4294967295\");\nconst BigInteger BigInteger::MAX_LONG(\"9223372036854775807\");\nconst BigInteger BigInteger::MIN_LONG(\"-9223372036854775808\");\nconst BigInteger BigInteger::MAX_ULONG(\"18446744073709551615\");\nconst BigInteger BigInteger::MAX_SHORT(\"32767\");\nconst BigInteger BigInteger::MIN_SHORT(\"-32768\");\nconst BigInteger BigInteger::MAX_USHORT(\"65535\");\n\nBigInteger::BigInteger()\n    : number(\"0\"),\n      sign(false) {\n    // empty\n}\n\nBigInteger::BigInteger(const BigInteger& other)\n    : number(other.number),\n      sign(other.sign) {\n    // empty\n}\n\nBigInteger::BigInteger(const std::string& s, int radix) {\n    setValue(s, radix);\n}\n\nBigInteger::BigInteger(const std::string& s, bool sin) {\n    setValue(s);\n    setSign(sin);\n}\n\nBigInteger::BigInteger(long n) {\n    setValue(toString(n));\n}\n\nBigInteger BigInteger::abs() const {\n    return BigInteger(getNumber());\n}\n\nstd::string BigInteger::add(const std::string& n1, const std::string& n2) {\n    // sum variable to store result;\n    // left-pad numbers with 0s to be the same length as needed\n    int digits = (int) (n1.length() > n2.length() ? n1.length() : n2.length());\n    std::string sum = padLeft(\"\", digits);\n    std::string n1copy = padLeft(n1, digits);\n    std::string n2copy = padLeft(n2, digits);\n\n    // add each digit pair\n    int carry = 0;\n    for (int i = n1copy.length() - 1; i >= 0; --i) {\n        sum[i] = (carry + (n1copy[i] - '0') + (n2copy[i] - '0')) + '0';\n        if (i != 0) {\n            if (sum[i] > '9') {\n                sum[i] -= 10;\n                carry = 1;\n            } else {\n                carry = 0;\n            }\n        }\n    }\n\n    if (sum[0] > '9') {\n        // top digit carried over; make an additional digit at front\n        sum[0] -= 10;\n        sum.insert(0, (size_t) 1, '1');\n    }\n\n    return sum;\n}\n\nvoid BigInteger::checkStringIsNumeric(const std::string& s, int radix) {\n    std::string scopy = stripNumberPrefix(s, radix);\n\n    // first char can optionally be + or - sign\n    if (scopy.empty()) {\n        error(\"Empty string cannot be converted into an integer\");\n    }\n\n    int start = 0;\n    if (scopy[0] == '+' || scopy[0] == '-') {\n        start++;\n    }\n    for (int i = start, len = (int) scopy.length(); i < len; i++) {\n        char ch = tolower(scopy[i]);\n        bool good = false;\n        if (radix == 1) {\n            good = ch == '1';\n        } else if (radix <= 10) {\n            good = ch >= '0' && ch < '0' + radix;\n        } else if (radix <= 16) {\n            good = isdigit(ch) || (ch >= 'a' && ch < radix - 10 + 'a');\n        } else {\n            // don't know how to verify other bases very well\n            good = isalnum(ch);\n        }\n\n        if (!good) {\n            error(\"Non-numeric string passed: \\\"\" + scopy + \"\\\"\");\n        }\n    }\n}\n\nstd::pair<std::string, long> BigInteger::divide(const std::string& n, long den) {\n    if (den == 0) {\n        error(\"Cannot divide by zero\");\n    }\n\n    long rem = 0;\n    std::string result;\n    result.resize(STRING_SIZE_MAX);\n\n    for (int indx = 0, len = (int) n.length(); indx < len; ++indx) {\n        rem = (rem * 10) + (n[indx] - '0');\n        result[indx] = rem / den + '0';\n        rem %= den;\n    }\n\n    result.resize(n.length());\n    result = removeLeadingZeros(result);\n\n    return make_pair(result, rem);\n}\n\n// Returns (quotient, remainder) as a pair 2-tuple.\n// Implementation note: This is a stupid implementation.\n// It is quite slow and there are much better algorithms.  But it works.\n// see also:\n// https://en.wikipedia.org/wiki/Division_algorithm#Division_by_repeated_subtraction\n// pre: b2 != 0\nstd::pair<BigInteger, BigInteger> BigInteger::divideBig(const BigInteger& numerator, const BigInteger& denominator) {\n    if (denominator == ZERO) {\n        error(\"Cannot divide by zero\");\n    } else if (denominator.isNegative()) {\n        std::pair<BigInteger, BigInteger> result = divideBig(numerator, -denominator);\n        result.second = -result.second;\n        return result;\n    } else if (numerator.isNegative()) {\n        std::pair<BigInteger, BigInteger> result = divideBig(-numerator, denominator);\n        if (result.second == ZERO) {\n            result.first = -result.first;\n        } else {\n            result.first = -result.first - 1;\n            result.second = denominator - result.second;\n        }\n        return result;\n    } else {\n        // TODO: implement a proper division algorithm\n        error(\"Denominator too large to divide: \" + denominator.toString());\n    }\n\n    /* TODO: Uncomment this section and properly implement it.\n    // now b1 >= 0 && b2 > 0\n    BigInteger quotient(ZERO);\n    BigInteger remainder(numerator);\n    while (remainder >= denominator) {\n        ++quotient;\n        remainder -= denominator;\n    }\n    std::pair<BigInteger, BigInteger> result {quotient, remainder};\n    return result;\n    */\n}\n\nbool BigInteger::equals(const BigInteger& n1, const BigInteger& n2) {\n    return n1.getNumber() == n2.getNumber()\n        && n1.getSign() == n2.getSign();\n}\n\nvoid BigInteger::fixNegativeZero() {\n    if (number == \"0\") {\n        // avoid (-0) problem\n        sign = false;\n    }\n}\n\nBigInteger BigInteger::gcd(const BigInteger& other) const {\n    BigInteger a(*this);\n    BigInteger b(other);\n    while (b != ZERO) {\n        BigInteger temp(b);\n        b = a % b;\n        a = temp;\n    }\n    return a;\n}\n\nconst std::string& BigInteger::getNumber() const {\n    return number;\n}\n\nbool BigInteger::getSign() const {\n    return sign;\n}\n\nbool BigInteger::greater(const BigInteger& n1, const BigInteger& n2) {\n    return less(n2, n1);\n}\n\nbool BigInteger::isInt() const {\n    return stringIsInteger(toString());\n}\n\nbool BigInteger::isLong() const {\n    return stringIsLong(toString());\n}\n\nbool BigInteger::isNegative() const {\n    return sign;   // true means negative\n}\n\nbool BigInteger::isNonNegative() const {\n    return !sign;   // true means negative\n}\n\nbool BigInteger::isPositive() const {\n    return !sign && number[0] != '0';\n}\n\nbool BigInteger::less(const BigInteger& n1, const BigInteger& n2) {\n    bool sign1 = n1.getSign();\n    bool sign2 = n2.getSign();\n\n    if (sign1 && ! sign2) {\n        // n1 is -ve and n2 is +ve\n        return true;\n    } else if (!sign1 && sign2) {\n        // n1 is +ve and n2 is -ve\n        return false;\n    } else if (!sign1) {\n        // both +ve\n        if (n1.getNumber().length() < n2.getNumber().length()) {\n            return true;\n        } else if (n1.getNumber().length() > n2.getNumber().length()) {\n            return false;\n        } else {\n            return n1.getNumber() < n2.getNumber();\n        }\n    } else {\n        // both -ve\n        if (n1.getNumber().length() > n2.getNumber().length()) {\n            return true;\n        } else if (n1.getNumber().length() < n2.getNumber().length()) {\n            return false;\n        } else {\n            // greater with -ve sign is LESS\n            return n1.getNumber().compare(n2.getNumber()) > 0;\n        }\n    }\n}\n\nconst BigInteger& BigInteger::max(const BigInteger& other) const {\n    if (*this < other) {\n        return other;\n    } else {\n        return *this;\n    }\n}\n\nconst BigInteger& BigInteger::min(const BigInteger& other) const {\n    if (*this > other) {\n        return other;\n    } else {\n        return *this;\n    }\n}\n\nBigInteger BigInteger::modPow(const BigInteger& exp, const BigInteger& m) const {\n    BigInteger result = ONE;\n    for (BigInteger i = ZERO; i < exp; i++) {\n        result = (result * *this) % m;\n    }\n    return result;\n}\n\nstd::string BigInteger::multiply(const std::string& n1, const std::string& n2) {\n    std::string n1copy = n1;\n    std::string n2copy = n2;\n\n    if (n1copy.length() > n2copy.length()) {\n        n1copy.swap(n2copy);\n    }\n\n    std::string product = \"0\";\n    for (int i = n1copy.length() - 1; i >= 0; --i) {\n        std::string temp = n2copy;\n        int currentDigit = n1copy[i] - '0';\n        int carry = 0;\n        for (int j = temp.length() - 1; j >= 0; --j) {\n            temp[j] = ((temp[j] - '0') * currentDigit) + carry;\n            if (temp[j] > 9) {\n                carry = (temp[j] / 10);\n                temp[j] -= (carry * 10);\n            } else {\n                carry = 0;\n            }\n\n            temp[j] += '0';   // back to string mode\n        }\n\n        if (carry > 0) {\n            temp.insert(0, (size_t) 1, (char) (carry + '0'));\n        }\n\n        // as like mult by 10, 100, 1000, 10000 and so on\n        temp.append((n1copy.length() - i - 1), '0');\n\n        product = add(product, temp);   // O(n)\n    }\n\n    // erase leading zeros\n    product = removeLeadingZeros(product);\n    return product;\n}\n\nBigInteger BigInteger::pow(long exp) const {\n    if (exp < 0) {\n        error(\"negative exponent: \" + std::to_string(exp));\n    } else if (exp == 0) {\n        return ONE;\n    } else if (exp == 1) {\n        return *this;\n    }\n\n    // optimization for even exponents\n    BigInteger thisCopy(*this);\n    BigInteger result(ONE);\n    while (exp > 0) {\n        if (exp % 2 == 0) {\n            thisCopy *= thisCopy;\n            exp /= 2;\n        } else {\n            result *= thisCopy;\n            exp--;\n        }\n    }\n    return result;\n}\n\nBigInteger BigInteger::pow(const BigInteger& exp) const {\n    if (exp < ZERO) {\n        error(\"negative exponent: \" + exp.toString());\n    } else if (exp == ZERO) {\n        return ONE;\n    } else if (exp == ONE) {\n        return *this;\n    }\n\n    // optimization for even exponents\n    BigInteger thisCopy(*this);\n    BigInteger expCopy(exp);\n    BigInteger result(ONE);\n    while (expCopy > ZERO) {\n        if (expCopy % TWO == ZERO) {\n            thisCopy *= thisCopy;\n            expCopy /= TWO;\n        } else {\n            result *= thisCopy;\n            expCopy--;\n        }\n    }\n    return result;\n}\n\nstd::string BigInteger::removeLeadingZeros(const std::string& s) {\n    std::string result = s;\n    while (result[0] == '0' && (int) result.length() > 1) {\n        result.erase(0, 1);\n    }\n    if ((int) result.length() == 0) {\n        result = \"0\";\n    }\n    return result;\n}\n\nvoid BigInteger::setValue(const std::string& s, int radix) {\n    std::string scopy = stripNumberPrefix(s, radix);\n    checkStringIsNumeric(scopy, radix);\n    if (scopy[0] == '+' || scopy[0] == '-') {\n        // signed value; separate sign from number\n        setNumber(scopy.substr(1), radix);\n        sign = (scopy[0] == '-');\n    } else {\n        // not signed; positive value\n        setNumber(scopy, radix);\n        sign = false;\n    }\n    fixNegativeZero();\n}\n\n// TODO: throw error on negative/too-large radixes\n\nvoid BigInteger::setNumber(const std::string& s, int radix) {\n    // accept hex as 0x???, bin as 0b???, oct as 0o???\n    std::string scopy = stripNumberPrefix(s, radix);\n    checkStringIsNumeric(scopy, radix);\n    if (radix == 10) {\n        number = scopy;\n    } else if (scopy == \"0\") {\n        number = scopy;   // 0 is 0 in any base\n    } else if (radix == 1) {\n        std::ostringstream out;\n        for (int i = 0; i < radix; i++) {\n            out << '1';\n        }\n        *this = BigInteger(out.str());\n    } else {\n        // convert to base-10 by plucking off a \"digit\" char,\n        // and adding it to a cumulative sum BigInteger variable\n        BigInteger result(ZERO);\n        BigInteger power(ONE);\n        BigInteger biRadix(std::to_string(radix));\n        for (int i = (int) scopy.length() - 1; i >= 0; i--) {\n            std::string ch = scopy.substr(i, 1);\n            int val = stringToInteger(ch, radix);\n            result += power * BigInteger(std::to_string(val));\n            power *= biRadix;\n        }\n        *this = result;\n    }\n    fixNegativeZero();\n}\n\nvoid BigInteger::setSign(bool s) {\n    sign = s;\n    fixNegativeZero();\n}\n\nstd::string BigInteger::stripNumberPrefix(const std::string& num, int radix) {\n    std::string result;\n    if (radix == 2 && (int) num.length() >= 2 && num[0] == '0' && tolower(num[1]) == 'b') {\n        result = num.substr(2);\n    } else if (radix == 8 && (int) num.length() >= 2 && num[0] == '0' && tolower(num[1]) == 'o') {\n        result = num.substr(2);\n    } else if (radix == 16 && (int) num.length() >= 2 && num[0] == '0' && tolower(num[1]) == 'x') {\n        result = num.substr(2);\n    } else {\n        result = num;\n    }\n    result = stringReplace(result, \",\", \"\");\n    result = stringReplace(result, \"_\", \"\");\n    result = stringReplace(result, \" \", \"\");\n    return result;\n}\n\nstd::string BigInteger::subtract(const std::string& n1, const std::string& n2) {\n    // sub variable to store result;\n    // left-pad numbers with 0s to be the same length as needed\n    int digits = (int) (n1.length() > n2.length() ? n1.length() : n2.length());\n    std::string sub = padLeft(\"\", digits);\n    std::string n1copy = padLeft(n1, digits);\n    std::string n2copy = padLeft(n2, digits);\n\n    for (int i = (int) n1copy.length() - 1; i >= 0; --i) {\n        if (n1copy[i] < n2copy[i]) {\n            n1copy[i] += 10;\n            n1copy[i - 1]--;\n        }\n        sub[i] = ((n1copy[i] - '0') - (n2copy[i] - '0')) + '0';\n    }\n\n    // erase leading zeros\n    sub = removeLeadingZeros(sub);\n\n    return sub;\n}\n\nlong BigInteger::toLong(const std::string& s) {\n    long sum = 0;\n    long prevSum = 0;\n    for (int i = 0; i < (int) s.length(); i++) {\n        prevSum = sum;\n        sum = (sum * 10) + (s[i] - '0');\n        if (sum < prevSum) {\n            error(\"numeric overflow when converting string to long: \\\"\" + s + \"\\\"\");\n        }\n    }\n    return sum;\n}\n\nint BigInteger::toInt() const {\n    return (int) toLong(number);\n}\n\nlong BigInteger::toLong() const {\n    return toLong(number);\n}\n\nstd::string BigInteger::toString(int radix) const {\n    if (radix == 10) {\n        return std::string(*this);\n    } else if (radix <= 0) {\n        error(\"Illegal radix value: \" + std::to_string(radix));\n    } else if (number == \"0\") {\n        return \"0\";\n    } else if (radix == 1) {\n        std::ostringstream out;\n        for (BigInteger i = ZERO; i < *this; i++) {\n            out << \"1\";\n        }\n        return out.str();\n    } else {\n        // write string (reversed) into an output stream, digit by digit\n        std::ostringstream out;\n        out << std::setbase(radix);\n        BigInteger copy(this->abs());\n        BigInteger biRadix(std::to_string(radix));\n        while (copy.isPositive()) {\n            int lastDigit = (copy % biRadix).toInt();\n            out << lastDigit;\n            copy /= biRadix;\n        }\n        if (isNegative()) {\n            out << '-';\n        }\n\n        // reverse and return the string\n        std::string str = out.str();\n        std::reverse(str.begin(), str.end());\n        return str;\n    }\n    return \"0\";\n}\n\nstd::string BigInteger::toString(long n) {\n    std::stringstream ss;\n    std::string temp;\n    ss << n;\n    ss >> temp;\n    return temp;\n}\n\nBigInteger& BigInteger::operator =(const BigInteger& b) {\n    setNumber(b.getNumber());\n    setSign(b.getSign());\n    return *this;\n}\n\nBigInteger& BigInteger::operator ++() {\n    (*this) = (*this) + ONE;\n    return (*this);\n}\n\nBigInteger BigInteger::operator ++(int) {\n    BigInteger before = (*this);\n    (*this) = (*this) + ONE;\n    return before;\n}\n\nBigInteger& BigInteger::operator --() {\n    (*this) = (*this) - ONE;\n    return (*this);\n}\n\nBigInteger BigInteger::operator --(int) {\n    BigInteger before = (*this);\n    (*this) = (*this) - ONE;\n    return before;\n}\n\nBigInteger& BigInteger::operator +=(const BigInteger& b) {\n    (*this) = (*this) + b;\n    return (*this);\n}\n\nBigInteger& BigInteger::operator -=(const BigInteger& b) {\n    (*this) = (*this) - b;\n    return (*this);\n}\n\nBigInteger& BigInteger::operator *=(const BigInteger& b) {\n    (*this) = (*this) * b;\n    return (*this);\n}\n\nBigInteger& BigInteger::operator /=(const BigInteger& b) {\n    (*this) = (*this) / b;\n    return (*this);\n}\n\nBigInteger& BigInteger::operator %=(const BigInteger& b) {\n    (*this) = (*this) % b;\n    return (*this);\n}\n\nBigInteger& BigInteger::operator &=(const BigInteger& b) {\n    *this = (*this & b);\n    return *this;\n}\n\nBigInteger& BigInteger::operator |=(const BigInteger& b) {\n    *this = (*this | b);\n    return *this;\n}\n\nBigInteger& BigInteger::operator ^=(const BigInteger& b) {\n    *this = (*this ^ b);\n    return *this;\n}\n\nBigInteger BigInteger::operator ~() const {\n    std::string s1 = this->toString(2);\n\n    // loop over each bit, performing ~ operation\n    for (int i = 0, len = (int) s1.length(); i < len; i++) {\n        bool b1 = s1[i] == '1';\n        s1[i] = b1 ? '0' : '1';\n    }\n    s1 = removeLeadingZeros(s1);\n\n    return BigInteger(s1, 2);\n}\n\nBigInteger BigInteger::operator !() const {\n    if (*this == ZERO) {\n        return ONE;\n    } else {\n        return ZERO;\n    }\n}\n\nBigInteger& BigInteger::operator [](int n) {\n    return *(this + (n * sizeof(BigInteger)));\n}\n\nBigInteger BigInteger::operator -() const {\n    return BigInteger(getNumber(), !getSign());\n}\n\n//BigInteger& BigInteger::operator =(const BigInteger& other) {\n//    this->number = other.number;\n//    this->sign = other.sign;\n//}\n\nBigInteger BigInteger::operator <<(unsigned int shift) const {\n    BigInteger result(*this);\n    for (unsigned int i = 0; i < shift; i++) {\n        result *= TWO;\n    }\n    return result;\n}\n\nBigInteger& BigInteger::operator <<=(unsigned int shift) {\n    (*this) = (*this) << shift;\n    return *this;\n}\n\nBigInteger BigInteger::operator >>(unsigned int shift) const {\n    BigInteger result(*this);\n    for (unsigned int i = 0; i < shift; i++) {\n        result /= TWO;\n    }\n    return result;\n}\n\nBigInteger& BigInteger::operator >>=(unsigned int shift) {\n    (*this) = (*this) >> shift;\n    return *this;\n}\n\nBigInteger::operator bool() const {\n    return *this != ZERO;\n}\n\n//BigInteger::operator double() const {\n//    return (double) toLong();\n//}\n\n//BigInteger::operator float() const {\n//    return (float) toLong();\n//}\n\nBigInteger::operator int() const {\n    return toInt();\n}\n\nBigInteger::operator long() const {\n    return toLong();\n}\n\nBigInteger::operator std::string() const {\n    // if positive, don't print + sign\n    std::string signedString = (getSign()) ? \"-\" : \"\";\n    signedString += number;\n    return signedString;\n}\n\nstd::string bigIntegerToString(const BigInteger& bi, int radix) {\n    return bi.toString(radix);\n}\n\nint hashCode(const BigInteger& b) {\n    return hashCode(b.getNumber(), b.getSign());\n}\n\nBigInteger operator +(const BigInteger& b1, const BigInteger& b2) {\n    BigInteger sum;\n    if (b1.getSign() == b2.getSign()) {\n        // both +ve or -ve\n        sum.setNumber(BigInteger::add(b1.getNumber(), b2.getNumber()));\n        sum.setSign(b1.getSign());\n    } else {\n        // sign different\n        if (b1.abs() > b2.abs()) {\n            sum.setNumber(BigInteger::subtract(b1.getNumber(), b2.getNumber()));\n            sum.setSign(b1.getSign());\n        } else {\n            sum.setNumber(BigInteger::subtract(b2.getNumber(), b1.getNumber()));\n            sum.setSign(b2.getSign());\n        }\n    }\n    if (sum.getNumber() == \"0\") {\n        // avoid (-0) problem\n        sum.setSign(false);\n    }\n    return sum;\n}\n\nBigInteger operator -(const BigInteger& b1, const BigInteger& b2) {\n    // x - y = x + (-y)\n    BigInteger bcopy = b2;\n    bcopy.setSign(!b2.getSign());\n    return b1 + bcopy;\n}\n\nBigInteger operator *(const BigInteger& b1, const BigInteger& b2) {\n    BigInteger product;\n    product.setNumber(BigInteger::multiply(b1.getNumber(), b2.getNumber()));\n    product.setSign(b1.getSign() != b2.getSign());\n    return product;\n}\n\nBigInteger operator /(const BigInteger& b1, const BigInteger& b2) {\n    if (b2 == BigInteger::ZERO) {\n        error(\"Division by zero\");\n    } else if (BigInteger::MIN_LONG <= b2 && b2 <= BigInteger::MAX_LONG) {\n        long den = BigInteger::toLong(b2.getNumber());\n        BigInteger div;\n        div.setNumber(BigInteger::divide(b1.getNumber(), den).first);\n        div.setSign(b1.getSign() != b2.getSign());\n        return div;\n    }\n\n    // else large denominator; compute through naive repeated subtraction\n    // (this is not a smart way to do large integer division, but this\n    // library is not meant to be particularly clever or performant)\n    std::pair<BigInteger, BigInteger> result = BigInteger::divideBig(b1, b2);\n    return result.first;\n}\n\nBigInteger operator %(const BigInteger& b1, const BigInteger& b2) {\n    if (b2 == BigInteger::ZERO) {\n        error(\"Division by zero\");\n    } else if (BigInteger::MIN_LONG <= b2 && b2 <= BigInteger::MAX_LONG) {\n        long den = BigInteger::toLong(b2.getNumber());\n        BigInteger div;\n        div.setNumber(BigInteger::divide(b1.getNumber(), den).first);\n        div.setSign(b1.getSign() != b2.getSign());\n        return div;\n    }\n\n    // else large denominator; compute through naive repeated subtraction\n    // (this is not a smart way to do large integer division, but this\n    // library is not meant to be particularly clever or performant)\n    std::pair<BigInteger, BigInteger> result = BigInteger::divideBig(b1, b2);\n    return result.second;\n}\n\nBigInteger operator &(const BigInteger& b1, const BigInteger& b2) {\n    // build same-length binary strings for both numbers\n    std::string s1 = b1.toString(2);\n    std::string s2 = b2.toString(2);\n    int len = (int) (s1.length() > s2.length() ? s1.length() : s2.length());\n    s1 = padLeft(s1, len);\n    s2 = padLeft(s2, len);\n\n    // loop over each bit, performing & operation; store into s1\n    for (int i = 0; i < len; i++) {\n        bool b1 = s1[i] == '1';\n        bool b2 = s2[i] == '1';\n        s1[i] = (b1 && b2) ? '1' : '0';\n    }\n    s1 = BigInteger::removeLeadingZeros(s1);\n\n    return BigInteger(s1, 2);\n}\n\nBigInteger operator |(const BigInteger& b1, const BigInteger& b2) {\n    // build same-length binary strings for both numbers\n    std::string s1 = b1.toString(2);\n    std::string s2 = b2.toString(2);\n    int len = (int) (s1.length() > s2.length() ? s1.length() : s2.length());\n    s1 = padLeft(s1, len);\n    s2 = padLeft(s2, len);\n\n    // loop over each bit, performing | operation; store into s1\n    for (int i = 0; i < len; i++) {\n        bool b1 = s1[i] == '1';\n        bool b2 = s2[i] == '1';\n        s1[i] = (b1 || b2) ? '1' : '0';\n    }\n    // don't need to check for leading 0s because | can only make more 1s than before\n    // s1 = removeLeadingZeros(s1);\n\n    return BigInteger(s1, 2);\n}\n\nBigInteger operator ^(const BigInteger& b1, const BigInteger& b2) {\n    // build same-length binary strings for both numbers\n    std::string s1 = b1.toString(2);\n    std::string s2 = b2.toString(2);\n    int len = (int) (s1.length() > s2.length() ? s1.length() : s2.length());\n    s1 = padLeft(s1, len);\n    s2 = padLeft(s2, len);\n\n    // loop over each bit, performing ^ operation; store into s1\n    for (int i = 0; i < len; i++) {\n        bool b1 = s1[i] == '1';\n        bool b2 = s2[i] == '1';\n        s1[i] = (b1 ^ b2) ? '1' : '0';\n    }\n    s1 = BigInteger::removeLeadingZeros(s1);\n\n    return BigInteger(s1, 2);\n}\n\nbool operator ==(const BigInteger& b1, const BigInteger& b2) {\n    return BigInteger::equals(b1, b2);\n}\n\nbool operator !=(const BigInteger& b1, const BigInteger& b2) {\n    return !BigInteger::equals(b1, b2);\n}\n\nbool operator >(const BigInteger& b1, const BigInteger& b2) {\n    return BigInteger::greater(b1, b2);\n}\n\nbool operator <(const BigInteger& b1, const BigInteger& b2) {\n    return BigInteger::less(b1, b2);\n}\n\nbool operator >=(const BigInteger& b1, const BigInteger& b2) {\n    return BigInteger::equals(b1, b2)\n            || BigInteger::greater(b1, b2);\n}\n\nbool operator <=(const BigInteger& b1, const BigInteger& b2) {\n    return BigInteger::equals(b1, b2)\n            || BigInteger::less(b1, b2);\n}\n\nstd::istream& operator >>(std::istream& input, BigInteger& b) {\n    std::string s;\n    input >> s;\n    b.setValue(s);\n    return input;\n}\n\nstd::ostream& operator <<(std::ostream& out, const BigInteger& b) {\n    return out << std::string(b);\n}\n\n//BigInteger operator +(int n, const BigInteger& b) {\n//    return BigInteger(n) + b;\n//}\n\n//BigInteger operator -(int n, const BigInteger& b) {\n//    return BigInteger(n) - b;\n//}\n\n//BigInteger operator *(int n, const BigInteger& b) {\n//    return BigInteger(n) * b;\n//}\n\n//BigInteger operator /(int n, const BigInteger& b) {\n//    return BigInteger(n) / b;\n//}\n\n//BigInteger operator %(int n, const BigInteger& b) {\n//    return BigInteger(n) % b;\n//}\n\n/*\n * File: require.cpp\n * -----------------\n * This file implements the require.h interface.\n *\n * @version 2018/09/05\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"require.h\"\n#include <string>\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#undef INTERNAL_INCLUDE\n\nnamespace require {\n\nstatic void _errorMessage(const std::string& caller, const std::string& valueName, const std::string& details) {\n    std::string overallMessage = \"\";\n    if (!caller.empty()) {\n        overallMessage += caller;\n    }\n    if (!valueName.empty() || !details.empty()) {\n        if (!overallMessage.empty()) {\n            overallMessage += \": \";\n        }\n        if (!valueName.empty()) {\n            if (!overallMessage.empty()) {\n                overallMessage += \" \";\n            }\n            overallMessage += valueName;\n            if (!details.empty()) {\n                overallMessage + \" \";\n            }\n        }\n        overallMessage += details;\n    }\n    error(overallMessage);\n}\n\n#define _spl_assert(test, caller, valueName, details) \\\n    if (!(test)) { \\\n        _errorMessage((caller), _default((valueName), \"value\"), (details)); \\\n    }\n\n#define _default(value, defaultValue) ((value) == std::string(\"\") ? (defaultValue) : (value))\n\nvoid inRange(double value, double min, double max, const std::string& caller, const std::string& valueName, const std::string& details) {\n    _spl_assert(min <= value && value <= max, caller, _default(valueName, \"value\"), _default(details, \" must be between \" + std::to_string(min) + \" and \" + std::to_string(max) + \" inclusive but was \" + std::to_string(value)));\n}\n\nvoid inRange(int value, int min, int max, const std::string& caller, const std::string& valueName, const std::string& details) {\n    _spl_assert(min <= value && value <= max, caller, _default(valueName, \"value\"), _default(details, \" must be between \" + std::to_string(min) + \" and \" + std::to_string(max) + \" inclusive but was \" + std::to_string(value)));\n}\n\nvoid inRange2D(double x, double y, double maxX, double maxY, const std::string& caller, const std::string& xValueName, const std::string& yValueName, const std::string& details) {\n    inRange2D(x, y, /* minX */ 0.0, /* minY */ 0.0, maxX, maxY, caller, xValueName, yValueName, details);\n}\n\nvoid inRange2D(double x, double y, double minX, double minY, double maxX, double maxY, const std::string& caller, const std::string& xValueName, const std::string& yValueName, const std::string& details) {\n    inRange(x, minX, maxX, caller, xValueName, _default(details, \" must be between (\" + std::to_string(minX) + \",\" + std::to_string(minY) + \")-\" + std::to_string(maxX) + \",\" + std::to_string(maxY) + \") inclusive but was (\" + std::to_string(x) + \",\" + std::to_string(y) + \")\"));\n    inRange(y, minY, maxY, caller, yValueName, _default(details, \" must be between (\" + std::to_string(minX) + \",\" + std::to_string(minY) + \")-\" + std::to_string(maxX) + \",\" + std::to_string(maxY) + \") inclusive but was (\" + std::to_string(x) + \",\" + std::to_string(y) + \")\"));\n}\n\nvoid inRange2D(int x, int y, int maxX, int maxY, const std::string& caller, const std::string& xValueName, const std::string& yValueName, const std::string& details) {\n    inRange2D(x, y, /* minX */ 0, /* minY */ 0, maxX, maxY, caller, xValueName, yValueName, details);\n}\n\nvoid inRange2D(int x, int y, int minX, int minY, int maxX, int maxY, const std::string& caller, const std::string& xValueName, const std::string& yValueName, const std::string& details) {\n    inRange(x, minX, maxX, caller, xValueName, _default(details, \" must be between (\" + std::to_string(minX) + \",\" + std::to_string(minY) + \")-\" + std::to_string(maxX) + \",\" + std::to_string(maxY) + \") inclusive but was (\" + std::to_string(x) + \",\" + std::to_string(y) + \")\"));\n    inRange(y, minY, maxY, caller, yValueName, _default(details, \" must be between (\" + std::to_string(minX) + \",\" + std::to_string(minY) + \")-\" + std::to_string(maxX) + \",\" + std::to_string(maxY) + \") inclusive but was (\" + std::to_string(x) + \",\" + std::to_string(y) + \")\"));\n}\n\nvoid nonEmpty(const std::string& str, const std::string& caller, const std::string& valueName, const std::string& details) {\n    _spl_assert(!str.empty(), caller, _default(valueName, \"string\"), _default(details, \" must not be empty\"));\n}\n\nvoid nonNegative(double value, const std::string& caller, const std::string& valueName, const std::string& details) {\n    _spl_assert(value >= 0.0, caller, _default(valueName, \"value\"), _default(details, \" must be non-negative but was \" + std::to_string(value)));\n}\n\nvoid nonNegative(int value, const std::string& caller, const std::string& valueName, const std::string& details) {\n    _spl_assert(value >= 0, caller, _default(valueName, \"value\"), _default(details, \" must be non-negative but was \" + std::to_string(value)));\n}\n\nvoid nonNegative(long value, const std::string& caller, const std::string& valueName, const std::string& details) {\n    _spl_assert(value >= 0, caller, _default(valueName, \"value\"), _default(details, \" must be non-negative but was \" + std::to_string(value)));\n}\n\nvoid nonNegative2D(double x, double y, const std::string& caller, const std::string& xValueName, const std::string& yValueName, const std::string& details) {\n    nonNegative(x, caller, xValueName, details);\n    nonNegative(y, caller, yValueName, details);\n}\n\nvoid nonNegative2D(int x, int y, const std::string& caller, const std::string& xValueName, const std::string& yValueName, const std::string& details) {\n    nonNegative(x, caller, xValueName, details);\n    nonNegative(y, caller, yValueName, details);\n}\n\nvoid nonNull(const void* ptr, const std::string& caller, const std::string& valueName, const std::string& details) {\n    _spl_assert(ptr != nullptr, caller, _default(valueName, \"value\"), _default(details, \" must be non-null\"));\n}\n\nvoid positive(double value, const std::string& caller, const std::string& valueName, const std::string& details) {\n    _spl_assert(value > 0.0, caller, _default(valueName, \"value\"), _default(details, \" must be positive but was \" + std::to_string(value)));\n}\n\nvoid positive(int value, const std::string& caller, const std::string& valueName, const std::string& details) {\n    _spl_assert(value > 0, caller, _default(valueName, \"value\"), _default(details, \" must be positive but was \" + std::to_string(value)));\n}\n\nvoid require(bool test, const std::string& caller, const std::string& details) {\n    _spl_assert(test, caller, \"\", details);\n}\n\n} // namespace require\n\n/*\n * File: gmath.cpp\n * ---------------\n * This file implements the gmath.h interface.  In all cases, the\n * implementation for each function requires only one line of code,\n * which makes detailed documentation unnecessary.\n *\n * @version 2018/11/22\n * - added headless mode support\n * - alphabetized methods\n * @version 2016/10/14\n * - modified floating-point equality tests to use floatingPointEqual function\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"gmath.h\"\n#include <cmath>\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gtypes.h\"\n#undef INTERNAL_INCLUDE\n\nextern const double PI = 3.14159265358979323846;\nextern const double E  = 2.71828182845904523536;\n\ndouble cosDegrees(double angle) {\n    return cos(toRadians(angle));\n}\n\nint countDigits(int n, int base) {\n    if (base <= 0) {\n        error(\"countDigits: base must be 1 or greater\");\n    }\n    if (n == 0) {\n        return 0;\n    } else if (n < 0) {\n        n = -n;\n    }\n\n    int digits = 0;\n    for (int temp = n; temp > 0 && digits < 65; temp /= base) {\n        digits++;\n    }\n    return digits;\n}\n\ndouble sinDegrees(double angle) {\n    return sin(toRadians(angle));\n}\n\ndouble tanDegrees(double angle) {\n    return tan(toRadians(angle));\n}\n\ndouble toDegrees(double radians) {\n    return radians * 180 / PI;\n}\n\ndouble toRadians(double degrees) {\n    return degrees * PI / 180;\n}\n\ndouble vectorAngle(double x, double y) {\n    return floatingPointEqual(x, 0) && floatingPointEqual(y, 0)\n            ? 0 : toDegrees(atan2(-y, x));\n}\n\n#ifndef SPL_HEADLESS_MODE\ndouble vectorAngle(const GPoint& pt) {\n    return vectorAngle(pt.getX(), pt.getY());\n}\n#endif // SPL_HEADLESS_MODE\n\ndouble vectorAngle(const Point& pt) {\n    return vectorAngle(pt.getX(), pt.getY());\n}\n\ndouble vectorDistance(double x, double y) {\n    return sqrt(x * x + y * y);\n}\n\n#ifndef SPL_HEADLESS_MODE\ndouble vectorDistance(const GPoint& pt) {\n    return vectorDistance(pt.getX(), pt.getY());\n}\n#endif // SPL_HEADLESS_MODE\n\ndouble vectorDistance(const Point& pt) {\n    return vectorDistance(pt.getX(), pt.getY());\n}\n\n/*\n * File: complex.cpp\n * -----------------\n * This file defines a type representing complex numbers.\n * See complex.h for declarations and documentation of class and members.\n *\n * @version 2017/10/18\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"complex.h\"\n#include <cctype>\n#include <cmath>\n#include <sstream>\n#define INTERNAL_INCLUDE 1\n#include \"gmath.h\"\n#define INTERNAL_INCLUDE 1\n#include \"hashcode.h\"\n#undef INTERNAL_INCLUDE\n\nComplex::Complex(double a, double b) {\n    this->a = a;\n    this->b = b;\n}\n\ndouble Complex::abs() const {\n   return sqrt(a*a + b*b);\n}\n\ndouble Complex::imag() const {\n    return b;\n}\n\ndouble Complex::real() const {\n    return a;\n}\n\nstd::string Complex::toString() const {\n    std::ostringstream out;\n    out << *this;\n    return out.str();\n}\n\nint hashCode(const Complex& c) {\n    return hashCode(c.real(), c.imag());\n}\n\nComplex operator *(const Complex& m, const Complex& n) {\n   double realP = m.a * n.a - m.b * n.b;\n   double imagP = m.b * n.a + m.a * n.b;\n   return Complex(realP, imagP);\n}\n\nComplex operator +(const Complex& m, const Complex& n) {\n   double realP = m.a + n.a;\n   double imagP = m.b + n.b;\n   return Complex(realP, imagP);\n}\n\nComplex operator -(const Complex& m, const Complex& n) {\n   double realP = m.a - n.a;\n   double imagP = m.b - n.b;\n   return Complex(realP, imagP);\n}\n\nbool operator <(const Complex& c1, const Complex& c2) {\n    return c1.real() < c2.real() ||\n            (floatingPointEqual(c1.real(), c2.real()) && c1.imag() < c2.imag());\n}\n\nbool operator <=(const Complex& c1, const Complex& c2) {\n    return c1 < c2 || c1 == c2;\n}\n\nbool operator >(const Complex& c1, const Complex& c2) {\n    return c2 < c1;\n}\n\nbool operator >=(const Complex& c1, const Complex& c2) {\n    return c2 < c1 || c2 == c1;\n}\n\nbool operator ==(const Complex& c1, const Complex& c2) {\n    return floatingPointEqual(c1.real(), c2.real())\n            && floatingPointEqual(c1.imag(), c2.imag());\n}\n\nbool operator !=(const Complex& c1, const Complex& c2) {\n    return !(c1 == c2);\n}\n\nstd::ostream& operator <<(std::ostream& out, const Complex& c) {\n    out << c.real();\n    if (!floatingPointEqual(c.imag(), 0.0)) {\n        out << (c.imag() > 0 ? \"+\" : \"\") << c.imag() << \"i\";\n    }\n    return out;\n}\n\n// This code is pretty ugly.\n// I don't remember some of the ins and outs of the istream API.\n// Oh, well.\nstd::istream& operator >>(std::istream& input, Complex& c) {\n    input >> std::ws;   // skip whitespace\n\n    // optional '('\n    bool needClosingParen = false;\n    if (input.peek() == '(') {\n        input.get();\n        needClosingParen = true;\n    }\n\n    // read real part\n    input >> std::ws;\n    double real = 0.0;\n    bool readReal = false;\n\n    std::streampos pos = input.tellg();\n    if (input >> real) {\n        readReal = true;\n    } else {\n        input.clear();\n        input.seekg(pos);\n    }\n\n    // read imag part\n    input >> std::ws;\n    double imag = 0.0;\n    bool readImag = false;\n\n    pos = input.tellg();\n    if (input >> imag) {\n        readImag = true;\n    } else {\n        input.clear();\n        input.seekg(pos);\n        if (input.peek() == 'i') {\n            imag = 1.0;\n            readImag = true;\n        } else if (input.peek() == '-' || input.peek() == '+') {\n            bool isNegative = input.peek() == '-';\n            input.get();\n            input >> std::ws;\n            pos = input.tellg();\n\n            if (input >> imag) {\n                if (isNegative) {\n                    imag = -imag;\n                }\n                readImag = true;\n            } else {\n                input.clear();\n                input.seekg(pos);\n                if (input.peek() == 'i') {\n                    imag = isNegative ? -1.0 : 1.0;\n                    readImag = true;\n                } else {\n                    input.clear();\n                    input.unget();\n                }\n            }\n        }\n    }\n\n    // read 'i'\n    input >> std::ws;\n    if (input.peek() == 'i') {\n        input.get();\n    }\n\n    // optional ')'\n    input >> std::ws;\n    if (input.peek() == ')') {\n        input.get();\n    } else if (needClosingParen) {\n        // invalid input; saw opening ( but no closing )\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n\n    if (readReal || readImag) {\n        input.clear();   // unset fail state\n        c.a = real;\n        c.b = imag;\n    } else {\n        input.setstate(std::ios_base::failbit);\n    }\n\n    return input;\n}\n\n/*\n * File: strlib.cpp\n * ----------------\n * This file implements the strlib.h interface.\n * \n * @version 2018/11/14\n * - added std::to_string for bool, char, pointer, and generic template type T\n * - bug fix for pointerToString (was putting two \"0x\" prefixes)\n * @version 2018/09/02\n * - added padLeft, padRight\n * @version 2017/10/24\n * - print nullptr instead of null in uppercase\n * @version 2016/11/07\n * - bug fix: urlDecode throws error on invalid encodings (courtesy GitHub @scinart)\n * @version 2016/10/30\n * - alphabetized functions\n * - added overloads that take type char instead of string:\n *   stringContains, stringIndexOf, stringJoin, stringLastIndexOf, stringReplace,\n *   stringSplit, toLowerCase, toUpperCase\n * @version 2016/10/13\n * - modified writeQuotedString to return ostream\n * @version 2016/08/03\n * - modified readQuotedString not to throw error() on parse failures\n *   (needed to support idiomatic silent-failing >> operators)\n * @version 2015/11/07\n * - fixed bugs in urlDecode (wasn't decoding % sequences properly, oops)\n * @version 2015/10/26\n * - added charToInteger/integerToChar functions\n * @version 2015/06/19\n * - slight bug fix to make stringToInteger functions compile with int radix\n * @version 2015/05/22\n * - slight bug fix in stringToBool function\n * @version 2014/10/31\n * - fixed infinite loop bug in stringReplace function\n * @version 2014/10/19\n * - alphabetized functions\n * - added several 'inPlace' variants of existing functions that return strings\n * @version 2014/10/08\n * - removed 'using namespace' statement\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#include <cctype>\n#include <iomanip>\n#include <iostream>\n#include <sstream>\n\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"vector.h\"\n#undef INTERNAL_INCLUDE\n\n/* Function prototypes */\n\nstd::string boolToString(bool b) {\n    return (b ? \"true\" : \"false\");\n}\n\nstd::string boolToString(int b) {\n    return (b ? \"true\" : \"false\");\n}\n\nint charToInteger(char c) {\n    if (c < '0' || c > '9') {\n        std::ostringstream out;\n        out << \"charToInteger: character is not numeric: '\" << c\n            << \"' (ASCII value \" << (int) c << \")\";\n        error(out.str());\n    }\n    return c - '0';\n}\n\nstd::string charToString(char c) {\n    std::string s;\n    s += c;\n    return s;\n}\n\nstd::string doubleToString(double d) {\n    return realToString(d);\n}\n\nbool endsWith(const std::string& str, char suffix) {\n    return str.length() > 0 && str[str.length() - 1] == suffix;\n}\n\nbool endsWith(const std::string& str, const std::string& suffix) {\n    int nChars = suffix.length();\n    int start = str.length() - nChars;\n    if (start < 0) return false;\n    for (int i = 0; i < nChars; i++) {\n        if (str[start + i] != suffix[i]) return false;\n    }\n    return true;\n}\n\n/*\n * Implementation notes: equalsIgnoreCase\n * --------------------------------------\n * This implementation uses a for loop to cycle through the characters in\n * each string.  Converting each string to uppercase and then comparing\n * the results makes for a shorter but less efficient implementation.\n */\nbool equalsIgnoreCase(const std::string& s1, const std::string& s2) {\n    if (s1.length() != s2.length()) return false;\n    int nChars = s1.length();\n    for (int i = 0; i < nChars; i++) {\n        if (tolower(s1[i]) != tolower(s2[i])) return false;\n    }\n    return true;\n}\n\nstd::string htmlDecode(const std::string& s) {\n    std::string result = s;\n    stringReplaceInPlace(result, \"&lt;\", \"<\");\n    stringReplaceInPlace(result, \"&gt;\", \">\");\n    stringReplaceInPlace(result, \"&quot;\", \"\\\"\");\n    stringReplaceInPlace(result, \"&amp;\", \"&\");\n    return result;\n}\n\nstd::string htmlEncode(const std::string& s) {\n    std::string result = s;\n    stringReplaceInPlace(result, \"&\", \"&amp;\");\n    stringReplaceInPlace(result, \"<\", \"&lt;\");\n    stringReplaceInPlace(result, \">\", \"&gt;\");\n    stringReplaceInPlace(result, \"\\\"\", \"&quot;\");\n    return result;\n}\n\nchar integerToChar(int n) {\n    if (n < 0 || n > 9) {\n        std::ostringstream out;\n        out << \"integerToChar: number must be between 0-9: \" << n;\n        error(out.str());\n    }\n    return (char) (n + '0');\n}\n\n/*\n * Implementation notes: numeric conversion\n * ----------------------------------------\n * These functions use the <sstream> library to perform the conversion.\n */\nstd::string integerToString(int n, int radix) {\n    if (radix <= 0) {\n        error(\"integerToString: Illegal radix: \" + std::to_string(radix));\n    }\n    std::ostringstream stream;\n    if (radix != 10) {\n        stream << std::setbase(radix);\n    }\n    stream << n;\n    return stream.str();\n}\n\nstd::string longToString(long n, int radix) {\n    if (radix <= 0) {\n        error(\"longToString: Illegal radix: \" + std::to_string(radix));\n    }\n    std::ostringstream stream;\n    if (radix != 10) {\n        stream << std::setbase(radix);\n    }\n    stream << n;\n    return stream.str();\n}\n\nstd::string padLeft(const std::string& s, int length, char fill) {\n    if ((int) s.length() >= length) {\n        return s;\n    } else {\n        std::ostringstream out;\n        for (int i = 0, count = length - (int) s.length(); i < count; i++) {\n            out << fill;\n        }\n        out << s;\n        return out.str();\n    }\n}\n\nstd::string padRight(const std::string& s, int length, char fill) {\n    if ((int) s.length() >= length) {\n        return s;\n    } else {\n        std::ostringstream out;\n        out << s;\n        for (int i = 0, count = length - (int) s.length(); i < count; i++) {\n            out << fill;\n        }\n        return out.str();\n    }\n}\n\nstd::string pointerToString(void* p) {\n    if (p) {\n        std::ostringstream stream;\n        stream << std::hex;\n        stream << p;\n        return stream.str();\n    } else {\n        return \"nullptr\";\n    }\n}\n\nstd::string realToString(double d) {\n    std::ostringstream stream;\n    stream << std::uppercase << d;\n    return stream.str();\n}\n\nbool startsWith(const std::string& str, char prefix) {\n    return str.length() > 0 && str[0] == prefix;\n}\n\nbool startsWith(const std::string& str, const std::string& prefix) {\n    if (str.length() < prefix.length()) return false;\n    int nChars = prefix.length();\n    for (int i = 0; i < nChars; i++) {\n        if (str[i] != prefix[i]) return false;\n    }\n    return true;\n}\n\nbool stringIsBool(const std::string& str) {\n    return str == \"true\" || str == \"false\";\n}\n\nbool stringIsDouble(const std::string& str) {\n    return stringIsReal(str);\n}\n\nbool stringIsInteger(const std::string& str, int radix) {\n    if (radix <= 0) {\n        error(\"stringIsInteger: Illegal radix: \" + std::to_string(radix));\n    }\n    std::istringstream stream(trim(str));\n    stream >> std::setbase(radix);\n    int value;\n    stream >> value;\n    return !(stream.fail() || !stream.eof());\n}\n\nbool stringIsLong(const std::string& str, int radix) {\n    if (radix <= 0) {\n        error(\"stringIsLong: Illegal radix: \" + std::to_string(radix));\n    }\n    std::istringstream stream(trim(str));\n    stream >> std::setbase(radix);\n    long value;\n    stream >> value;\n    return !(stream.fail() || !stream.eof());\n}\n\nbool stringIsReal(const std::string& str) {\n    std::istringstream stream(trim(str));\n    double value;\n    stream >> value;\n    return !(stream.fail() || !stream.eof());\n}\n\nbool stringContains(const std::string& s, char ch) {\n    return s.find(ch) != std::string::npos;\n}\n\nbool stringContains(const std::string& s, const std::string& substring) {\n    return s.find(substring) != std::string::npos;\n}\n\nint stringIndexOf(const std::string& s, char ch, int startIndex) {\n    size_t index = s.find(ch, (size_t) startIndex);\n    if (index == std::string::npos) {\n        return -1;\n    } else {\n        return index;\n    }\n}\n\nint stringIndexOf(const std::string& s, const std::string& substring, int startIndex) {\n    size_t index = s.find(substring, (size_t) startIndex);\n    if (index == std::string::npos) {\n        return -1;\n    } else {\n        return index;\n    }\n}\n\nstd::string stringJoin(const Vector<std::string>& v, char delimiter) {\n    std::string delim = charToString(delimiter);\n    return stringJoin(v, delim);\n}\n\nstd::string stringJoin(const Vector<std::string>& v, const std::string& delimiter) {\n    if (v.isEmpty()) {\n        return \"\";\n    } else {\n        std::ostringstream out;\n        out << v[0];\n        for (int i = 1; i < (int) v.size(); i++) {\n            out << delimiter;\n            out << v[i];\n        }\n        return out.str();\n    }\n}\n\nint stringLastIndexOf(const std::string& s, char ch, int startIndex) {\n    size_t index = s.rfind(ch, (size_t) startIndex);\n    if (index == std::string::npos) {\n        return -1;\n    } else {\n        return index;\n    }\n}\n\nint stringLastIndexOf(const std::string& s, const std::string& substring, int startIndex) {\n    size_t index = s.rfind(substring, (size_t) startIndex);\n    if (index == std::string::npos) {\n        return -1;\n    } else {\n        return index;\n    }\n}\n\nstd::string stringReplace(const std::string& str, char old, char replacement, int limit) {\n    std::string str2 = str;\n    stringReplaceInPlace(str2, old, replacement, limit);\n    return str2;\n}\n\nstd::string stringReplace(const std::string& str, const std::string& old, const std::string& replacement, int limit) {\n    std::string str2 = str;\n    stringReplaceInPlace(str2, old, replacement, limit);\n    return str2;\n}\n\nint stringReplaceInPlace(std::string& str, char old, char replacement, int limit) {\n    int count = 0;\n    for (size_t i = 0, len = str.length(); i < len; i++) {\n        if (str[i] == old) {\n            str[i] = replacement;\n            count++;\n            if (limit > 0 && count >= limit) {\n                break;\n            }\n        }\n    }\n    return count;\n}\n\nint stringReplaceInPlace(std::string& str, const std::string& old, const std::string& replacement, int limit) {\n    int count = 0;\n    size_t startIndex = 0;\n    size_t rlen = replacement.length();\n    while (limit <= 0 || count < limit) {\n        size_t index = str.find(old, startIndex);\n        if (index == std::string::npos) {\n            break;\n        }\n        str.replace(index, old.length(), replacement);\n        startIndex = index + rlen;\n        count++;\n    }\n    return count;\n}\n\nVector<std::string> stringSplit(const std::string& str, char delimiter, int limit) {\n    std::string delim = charToString(delimiter);\n    return stringSplit(str, delim, limit);\n}\n\nVector<std::string> stringSplit(const std::string& str, const std::string& delimiter, int limit) {\n    std::string str2 = str;\n    Vector<std::string> result;\n    int count = 0;\n    size_t index = 0;\n    while (limit < 0 || count < limit) {\n        index = str2.find(delimiter);\n        if (index == std::string::npos) {\n            break;\n        }\n        result.add(str2.substr(0, index));\n        str2.erase(str2.begin(), str2.begin() + index + delimiter.length());\n        count++;\n    }\n    if ((int) str2.length() > 0) {\n        result.add(str2);\n    }\n\n    return result;\n}\n\nbool stringToBool(const std::string& str) {\n    if (str == \"true\" || str == \"1\") {\n        return true;\n    } else if (str == \"false\" || str == \"0\") {\n        return false;\n    }\n    std::istringstream stream(trim(str));\n    bool value;\n    stream >> std::boolalpha >> value;\n    if (stream.fail() || !stream.eof()) {\n        error(\"stringToBool: Illegal bool format (\" + str + \")\");\n    }\n    return value;\n}\n\nchar stringToChar(const std::string& str) {\n    std::string str2 = trim(str);\n    if ((int) str2.length() != 1) {\n        error(\"stringToChar: string must contain exactly 1 non-whitespace character\");\n    }\n    return str2[0];\n}\n\ndouble stringToDouble(const std::string& str) {\n    return stringToReal(str);\n}\n\nint stringToInteger(const std::string& str, int radix) {\n    if (radix <= 0) {\n        error(\"stringToInteger: Illegal radix: \" + std::to_string(radix));\n    }\n    std::istringstream stream(trim(str));\n    stream >> std::setbase(radix);\n    int value;\n    stream >> value;\n    if (stream.fail() || !stream.eof()) {\n        error(\"stringToInteger: Illegal integer format: \\\"\" + str + \"\\\"\");\n    }\n    return value;\n}\n\nlong stringToLong(const std::string& str, int radix) {\n    if (radix <= 0) {\n        error(\"stringToLong: Illegal radix: \" + std::to_string(radix));\n    }\n    std::istringstream stream(trim(str));\n    stream >> std::setbase(radix);\n    long value;\n    stream >> value;\n    if (stream.fail() || !stream.eof()) {\n        error(\"stringToLong: Illegal long format \\\"\" + str + \"\\\"\");\n    }\n    return value;\n}\n\ndouble stringToReal(const std::string& str) {\n    std::istringstream stream(trim(str));\n    double value;\n    stream >> value;\n    if (stream.fail() || !stream.eof()) {\n        error(\"stringToReal: Illegal floating-point format (\" + str + \")\");\n    }\n    return value;\n}\n\nchar toLowerCase(char ch) {\n    return (char) tolower(ch);\n}\n\nstd::string toLowerCase(const std::string& str) {\n    std::string str2 = str;\n    toLowerCaseInPlace(str2);\n    return str2;\n}\n\nvoid toLowerCaseInPlace(std::string& str) {\n    int nChars = str.length();\n    for (int i = 0; i < nChars; i++) {\n        str[i] = tolower(str[i]);\n    }\n}\n\nchar toUpperCase(char ch) {\n    return (char) toupper(ch);\n}\n\nstd::string toUpperCase(const std::string& str) {\n    std::string str2 = str;\n    toUpperCaseInPlace(str2);\n    return str2;\n}\n\nvoid toUpperCaseInPlace(std::string& str) {\n    int nChars = str.length();\n    for (int i = 0; i < nChars; i++) {\n        str[i] = toupper(str[i]);\n    }\n}\n\nstd::string trim(const std::string& str) {\n    std::string str2 = str;\n    trimInPlace(str2);\n    return str2;\n}\n\nvoid trimInPlace(std::string& str) {\n    trimEndInPlace(str);\n    trimStartInPlace(str);\n}\n\nstd::string trimEnd(const std::string& str) {\n    std::string str2 = str;\n    trimEndInPlace(str2);\n    return str2;\n}\n\nvoid trimEndInPlace(std::string& str) {\n    int end = (int) str.length();\n    int finish = end;\n    while (finish > 0 && isspace(str[finish - 1])) {\n        finish--;\n    }\n    if (finish < end) {\n        str.erase(finish, end - finish);\n    }\n}\n\nstd::string trimStart(const std::string& str) {\n    std::string str2 = str;\n    trimStartInPlace(str2);\n    return str2;\n}\n\nvoid trimStartInPlace(std::string& str) {\n    int start = 0;\n    int finish = (int) str.length() - 1;\n    while (start <= finish && isspace(str[start])) {\n        start++;\n    }\n    if (start > 0) {\n        str.erase(0, start);\n    }\n}\n\nstd::string urlDecode(const std::string& str) {\n    std::ostringstream unescaped;\n    for (std::string::const_iterator i = str.begin(), n = str.end(); i != n; ++i) {\n        std::string::value_type c = (*i);\n        if (isalnum(c) || c == '-' || c == '_' || c == '.' || c == '~' || c == '*') {\n            unescaped << c;\n        } else if (c == '+')  {\n            unescaped << ' ';\n        } else if (c == '%') {\n            // throw error if string is invalid and doesn't have 2 char after,\n            // or if it has non-hex chars here (courtesy GitHub @scinart)\n            if (i + 2 >= n || !isxdigit(*(i + 1)) || !isxdigit(*(i + 2))) {\n                error(\"urlDecode: Invalid percent-encoding\");\n            }\n\n            // decode a URL-encoded ASCII character, e.g. %40 => &\n            char ch1 = *(i + 1);\n            char ch2 = *(i + 2);\n            int hex1 = (isdigit(ch1) ? (ch1 - '0') : (toupper(ch1) - 'A' + 10));\n            int hex2 = (isdigit(ch2) ? (ch2 - '0') : (toupper(ch2) - 'A' + 10));\n            int decodedChar = (hex1 << 4) + hex2;\n            unescaped << (char) decodedChar;\n            i += 2;\n        } else {\n            std::ostringstream msg;\n            msg << \"urlDecode: Unexpected character in string: \"\n                << (int) c << \" (\" << c << \")\";\n            error(msg.str());\n        }\n    }\n\n    return unescaped.str();\n}\n\nvoid urlDecodeInPlace(std::string& str) {\n    str = urlDecode(str);   // no real efficiency gain here\n}\n\nstd::string urlEncode(const std::string& str) {\n    std::ostringstream escaped;\n    escaped.fill('0');\n    escaped << std::hex << std::uppercase;\n\n    for (std::string::const_iterator i = str.begin(), n = str.end(); i != n; ++i) {\n        std::string::value_type c = (*i);\n        if (isalnum(c) || c == '-' || c == '_' || c == '.' || c == '~' || c == '*') {\n            escaped << c;\n        } else if (c == ' ')  {\n            escaped << '+';\n        } else {\n            escaped << '%' << std::setw(2) << ((int) c) << std::setw(0);\n        }\n    }\n\n    return escaped.str();\n}\n\nvoid urlEncodeInPlace(std::string& str) {\n    str = urlEncode(str);   // no real efficiency gain here\n}\n\nnamespace std {\nbool stob(const std::string& str) {\n    return ::stringToBool(str);\n}\n\nchar stoc(const std::string& str) {\n    return ::stringToChar(str);\n}\n\nstd::string to_string(bool b) {\n    return ::boolToString(b);\n}\n\nstd::string to_string(char c) {\n    return ::charToString(c);\n}\n\nstd::string to_string(void* p) {\n    return ::pointerToString(p);\n}\n} // namespace std\n\n/*\n * File: point.cpp\n * ---------------\n * This file implements the point.h interface.\n * \n * @version 2018/11/22\n * - added headless mode support\n * @version 2017/09/29\n * - updated to use composite hashCode function\n * @version 2014/10/08\n * - removed 'using namespace' statement\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"point.h\"\n#include <string>\n#define INTERNAL_INCLUDE 1\n#include \"gtypes.h\"\n#define INTERNAL_INCLUDE 1\n#include \"hashcode.h\"\n#undef INTERNAL_INCLUDE\n\nPoint::Point() {\n    x = 0;\n    y = 0;\n}\n\nPoint::Point(int x, int y) {\n    this->x = x;\n    this->y = y;\n}\n\n#ifndef SPL_HEADLESS_MODE\nPoint::Point(const GPoint& point) {\n    this->x = (int) point.getX();\n    this->y = (int) point.getY();\n}\n#endif // SPL_HEADLESS_MODE\n\nint Point::getX() const {\n    return x;\n}\n\nint Point::getY() const {\n    return y;\n}\n\nstd::string Point::toString() const {\n    return \"(\" + std::to_string(x) + \",\" + std::to_string(y) + \")\";\n}\n\nbool Point::operator ==(const Point& p2) const {\n    return (x == p2.x) && (y == p2.y);\n}\n\nbool Point::operator !=(const Point& p2) const {\n    return (x != p2.x) || (y != p2.y);\n}\n\nstd::ostream& operator <<(std::ostream& os, const Point& pt) {\n    return os << pt.toString();\n}\n\nint hashCode(const Point& pt) {\n    return hashCode(pt.getX(), pt.getY());\n}\n\n/*\n * File: intrange.cpp\n * ------------------\n * This file implements the <code>IntRange</code> class.\n * See intrange.h for the declarations of each member.\n *\n * @version 2018/08/25\n * - renamed from range.cpp to intrange.cpp\n * @version 2018/03/12\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"intrange.h\"\n#include <sstream>\n#define INTERNAL_INCLUDE 1\n#include \"hashcode.h\"\n#undef INTERNAL_INCLUDE\n\nIntRange::IntRange(int length)\n    : _min(0),\n      _max(length - 1) {\n    // empty\n}\n\nIntRange::IntRange(int minValue, int maxValue)\n    : _min(minValue),\n      _max(maxValue) {\n    // empty\n}\n\nIntRange::IntRangeIterator IntRange::begin() const {\n    return IntRangeIterator(this, /* end */ false);\n}\n\nbool IntRange::contains(int n) const {\n    return _min <= n && n <= _max;\n}\n\nbool IntRange::contains(const IntRange& r) const {\n    return _min <= r._min && _max >= r._max;\n}\n\nbool IntRange::empty() const {\n    return _max < _min;\n}\n\nIntRange::IntRangeIterator IntRange::end() const {\n    return IntRangeIterator(this, /* end */ true);\n}\n\n//bool IntRange::intersects(const IntRange& r) const {\n//    return (_min <= r._min && r._min <= _max)\n//            || (_min <= r._max && r._max <= _max);\n//}\n\nbool IntRange::isEmpty() const {\n    return _max < _min;\n}\n\nint IntRange::length() const {\n    if (isEmpty()) {\n        return 0;\n    } else {\n        return _max - _min + 1;\n    }\n}\n\nint IntRange::max() const {\n    return _max;\n}\n\nint IntRange::min() const {\n    return _min;\n}\n\nint IntRange::size() const {\n    return length();\n}\n\nstd::string IntRange::toString() const {\n    std::ostringstream out;\n    out << *this;\n    return out.str();\n}\n\nint hashCode(const IntRange& r) {\n    return hashCode(r.min(), r.max());\n}\n\nIntRange range(int length) {\n    return IntRange(length);\n}\n\nIntRange range(int min, int max) {\n    return IntRange(min, max);\n}\n\nbool operator <(const IntRange& r1, const IntRange& r2) {\n    return r1.min() < r2.min() ||\n            (r1.min() == r2.min() && r1.max() < r2.max());\n}\n\nbool operator <=(const IntRange& r1, const IntRange& r2) {\n    return r1 < r2 || r1 == r2;\n}\n\nbool operator ==(const IntRange& r1, const IntRange& r2) {\n    return r1.min() == r2.min() && r1.max() == r2.max();\n}\n\nbool operator !=(const IntRange& r1, const IntRange& r2) {\n    return !(r1 == r2);\n}\n\nbool operator >(const IntRange& r1, const IntRange& r2) {\n    return r2 < r1;\n}\n\nbool operator >=(const IntRange& r1, const IntRange& r2) {\n    return !(r1 < r2);\n}\n\nstd::ostream& operator <<(std::ostream& out, const IntRange& r) {\n    return out << \"[\" << r.min() << \" .. \" << r.max() << \"]\";\n}\n\nstd::istream& operator >>(std::istream& input, IntRange& r) {\n    // read '['\n    input.get();\n    if (!input) {\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n\n    // read min\n    int min;\n    if (!(input >> min)) {\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n\n    // read ' .. '\n    input.get();\n    input.get();\n    input.get();\n    input.get();\n    if (!input) {\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n\n    // read max\n    int max;\n    if (!(input >> max)) {\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n\n    // read ']'\n    input.get();\n    if (!input) {\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n\n    // success!\n    r._min = min;\n    r._max = max;\n    return input;\n}\n\n/////////////////////////////////////////////////////////////////////\n// IntRange2D\n/////////////////////////////////////////////////////////////////////\n\nIntRange2D::IntRange2D(int width, int height, bool yMajor)\n    : _minX(0),\n      _minY(0),\n      _maxX(width - 1),\n      _maxY(height - 1),\n      _yMajor(yMajor) {\n    // empty\n}\n\nIntRange2D::IntRange2D(int minX, int minY, int maxX, int maxY, bool yMajor)\n    : _minX(minX),\n      _minY(minY),\n      _maxX(maxX),\n      _maxY(maxY),\n      _yMajor(yMajor) {\n    // empty\n}\n\nIntRange2D::IntRange2DIterator IntRange2D::begin() const {\n    return IntRange2DIterator(this, /* end */ false);\n}\n\nbool IntRange2D::contains(int x, int y) const {\n    return _minX <= x && x <= _maxX\n            && _minY <= y && y <= _maxY;\n}\n\nbool IntRange2D::contains(const IntRange2D& r) const {\n    return contains(r._minX, r._minY) && contains(r._maxX, r._maxY);\n}\n\nbool IntRange2D::empty() const {\n    return _maxX < _minX || _maxY < _minY;\n}\n\nIntRange2D::IntRange2DIterator IntRange2D::end() const {\n    return IntRange2DIterator(this, /* end */ true);\n}\n\nint IntRange2D::height() const {\n    if (_maxY < _minY) {\n        return 0;\n    } else {\n        return _maxY - _minY + 1;\n    }\n}\n\n//bool IntRange2D::intersects(const IntRange2D& r) const {\n//    // TODO\n//}\n\nbool IntRange2D::isEmpty() const {\n    return _maxX < _minX || _maxY < _minY;\n}\n\nbool IntRange2D::isYMajor() const {\n    return _yMajor;\n}\n\nint IntRange2D::maxX() const {\n    return _maxX;\n}\n\nint IntRange2D::maxY() const {\n    return _maxY;\n}\n\nint IntRange2D::minX() const {\n    return _minX;\n}\n\nint IntRange2D::minY() const {\n    return _minY;\n}\n\nint IntRange2D::size() const {\n    return width() * height();\n}\n\nstd::string IntRange2D::toString() const {\n    std::ostringstream out;\n    out << *this;\n    return out.str();\n}\n\nint IntRange2D::width() const {\n    if (_maxX < _minX) {\n        return 0;\n    } else {\n        return _maxX - _minX + 1;\n    }\n}\n\nint hashCode(const IntRange2D& r) {\n    return hashCode(r.minX(), r.minY(), r.maxX(), r.maxY());\n}\n\nIntRange2D range2d(int width, int height, bool yMajor) {\n    return IntRange2D(width, height, yMajor);\n}\n\nIntRange2D range2d(int minX, int minY, int maxX, int maxY, bool yMajor) {\n    return IntRange2D(minX, minY, maxX, maxY, yMajor);\n}\n\nbool operator <(const IntRange2D& r1, const IntRange2D& r2) {\n    if (r1.minX() != r2.minX()) {\n        return r1.minX() < r2.minX();\n    } else if (r1.minY() != r2.minY()) {\n        return r1.minY() < r2.minY();\n    } else if (r1.maxX() != r2.maxX()) {\n        return r1.maxX() < r2.maxX();\n    } else if (r1.maxY() != r2.maxY()) {\n        return r1.maxY() < r2.maxY();\n    } else if (r1.isYMajor() != r2.isYMajor()) {\n        return (int) r1.isYMajor() < (int) r2.isYMajor();\n    } else {\n        return false;\n    }\n}\n\nbool operator <=(const IntRange2D& r1, const IntRange2D& r2) {\n    return r1 < r2 || r1 == r2;\n}\n\nbool operator ==(const IntRange2D& r1, const IntRange2D& r2) {\n    return r1.minX() == r2.minX()\n            && r1.minY() == r2.minY()\n            && r1.maxX() == r2.maxX()\n            && r1.maxY() == r2.maxY()\n            && r1.isYMajor() == r2.isYMajor();\n}\n\nbool operator !=(const IntRange2D& r1, const IntRange2D& r2) {\n    return !(r1 == r2);\n}\n\nbool operator >(const IntRange2D& r1, const IntRange2D& r2) {\n    return r2 < r1;\n}\n\nbool operator >=(const IntRange2D& r1, const IntRange2D& r2) {\n    return !(r1 < r2);\n}\n\nstd::ostream& operator <<(std::ostream& out, const IntRange2D& r) {\n    return out << \"[\"\n               << r.minX() << \",\" << r.minY()\n               << \" .. \"\n               << r.maxX() << \",\" << r.maxY()\n               << \"]\";\n}\n\nstd::istream& operator >>(std::istream& input, IntRange2D& r) {\n    // read '['\n    input.get();\n    if (!input) {\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n\n    // read minX\n    int minX;\n    if (!(input >> minX)) {\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n\n    // read ','\n    input.get();\n    if (!input) {\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n\n    // read minY\n    int minY;\n    if (!(input >> minY)) {\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n\n    // read ' .. '\n    input.get();\n    input.get();\n    input.get();\n    input.get();\n    if (!input) {\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n\n    // read maxX\n    int maxX;\n    if (!(input >> maxX)) {\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n\n    // read ','\n    input.get();\n    if (!input) {\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n\n    // read maxY\n    int maxY;\n    if (!(input >> maxY)) {\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n\n    // read ']'\n    input.get();\n    if (!input) {\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n\n    // success!\n    r._minX = minX;\n    r._minY = minY;\n    r._maxX = maxX;\n    r._maxY = maxY;\n    return input;\n}\n\n/*\n * File: gchooser.cpp\n * ------------------\n *\n * @author Marty Stepp\n * @version 2019/04/23\n * - added key event support\n * @version 2019/02/02\n * - destructor now stops event processing\n * @version 2018/08/23\n * - renamed to gchooser.cpp to replace Java version\n * @version 2018/06/28\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"gchooser.h\"\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gthread.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gwindow.h\"\n#define INTERNAL_INCLUDE 1\n#include \"require.h\"\n#undef INTERNAL_INCLUDE\n\nGChooser::GChooser(QWidget* parent) {\n    GThread::runOnQtGuiThread([this, parent]() {\n        _iqcomboBox = new _Internal_QComboBox(this, getInternalParent(parent));\n    });\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGChooser::GChooser(const std::initializer_list<std::string>& items, QWidget* parent) {\n    GThread::runOnQtGuiThread([this, parent]() {\n        _iqcomboBox = new _Internal_QComboBox(this, getInternalParent(parent));\n    });\n    addItems(items);\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGChooser::GChooser(const Vector<std::string>& items, QWidget* parent) {\n    GThread::runOnQtGuiThread([this, parent]() {\n        _iqcomboBox = new _Internal_QComboBox(this, getInternalParent(parent));\n    });\n    addItems(items);\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGChooser::~GChooser() {\n    // TODO: delete _iqcomboBox;\n    _iqcomboBox->detach();\n    _iqcomboBox = nullptr;\n}\n\nvoid GChooser::addItem(const std::string& item) {\n    require::nonEmpty(item, \"GChooser::addItem\", \"item\");\n    GThread::runOnQtGuiThread([this, item]() {\n        _iqcomboBox->addItem(QString::fromStdString(item));\n    });\n}\n\nvoid GChooser::addItems(const std::initializer_list<std::string>& items) {\n    GThread::runOnQtGuiThread([this, &items]() {\n        for (const std::string& item : items) {\n            if (!item.empty()) {\n                _iqcomboBox->addItem(QString::fromStdString(item));\n            }\n        }\n    });\n}\n\nvoid GChooser::addItems(const Vector<std::string>& items) {\n    GThread::runOnQtGuiThread([this, &items]() {\n        for (const std::string& item : items) {\n            if (!item.empty()) {\n                _iqcomboBox->addItem(QString::fromStdString(item));\n            }\n        }\n    });\n}\n\nvoid GChooser::checkIndex(const std::string& member, int index, int min, int max) const {\n    if (max < 0) {\n        max = size() - 1;\n    }\n    require::inRange(index, min, max, member, \"index\");\n}\n\nvoid GChooser::clearItems() {\n    GThread::runOnQtGuiThread([this]() {\n        _iqcomboBox->clear();\n    });\n}\n\nstd::string GChooser::getActionCommand() const {\n    if (_actionCommand.empty()) {\n        return getSelectedItem();\n    } else {\n        return _actionCommand;\n    }\n}\n\nstd::string GChooser::getActionEventType() const {\n    return \"change\";\n}\n\n_Internal_QWidget* GChooser::getInternalWidget() const {\n    return _iqcomboBox;\n}\n\nstd::string GChooser::getItem(int index) const {\n    checkIndex(\"GChooser::getItem\", index);\n    return _iqcomboBox->itemText(index).toStdString();\n}\n\nint GChooser::getItemCount() const {\n    return _iqcomboBox->count();\n}\n\nint GChooser::getSelectedIndex() const {\n    return _iqcomboBox->currentIndex();\n}\n\nstd::string GChooser::getSelectedItem() const {\n    return _iqcomboBox->currentText().toStdString();\n}\n\nstd::string GChooser::getType() const {\n    return \"GChooser\";\n}\n\nQWidget* GChooser::getWidget() const {\n    return static_cast<QWidget*>(_iqcomboBox);\n}\n\nbool GChooser::isEditable() const {\n    return _iqcomboBox->isEditable();\n}\n\nbool GChooser::isEmpty() const {\n    return getItemCount() == 0;\n}\n\nvoid GChooser::setItem(int index, const std::string& item) {\n    checkIndex(\"GChooser::setItem\", index);\n    GThread::runOnQtGuiThread([this, index, item]() {\n        _iqcomboBox->setItemText(index, QString::fromStdString(item));\n    });\n}\n\nvoid GChooser::setSelectedIndex(int index) {\n    checkIndex(\"GChooser::setSelectedIndex\", index);\n    GThread::runOnQtGuiThread([this, index]() {\n        _iqcomboBox->setCurrentIndex(index);\n    });\n}\n\nvoid GChooser::setEditable(bool editable) {\n    GThread::runOnQtGuiThread([this, editable]() {\n        _iqcomboBox->setEditable(editable);\n    });\n}\n\nvoid GChooser::setSelectedItem(const std::string& item) {\n    for (int i = 0, len = getItemCount(); i < len; i++) {\n        std::string thisItem = _iqcomboBox->itemText(i).toStdString();\n        if (thisItem == item) {\n            setSelectedIndex(i);\n            break;\n        }\n    }\n}\n\nint GChooser::size() const {\n    return _iqcomboBox->count();\n}\n\n\n_Internal_QComboBox::_Internal_QComboBox(GChooser* gchooser, QWidget* parent)\n        : QComboBox(parent),\n          _gchooser(gchooser) {\n    require::nonNull(gchooser, \"_Internal_QComboBox::constructor\");\n    setObjectName(QString::fromStdString(\"_Internal_QComboBox_\" + std::to_string(gchooser->getID())));\n    connect(this, SIGNAL(currentIndexChanged(int)), this, SLOT(handleChange()));\n}\n\nvoid _Internal_QComboBox::detach() {\n    _gchooser = nullptr;\n}\n\nvoid _Internal_QComboBox::handleChange() {\n    if (!_gchooser) {\n        return;\n    }\n    GEvent changeEvent(\n                /* class  */ CHANGE_EVENT,\n                /* type   */ STATE_CHANGED,\n                /* name   */ \"change\",\n                /* source */ _gchooser);\n    changeEvent.setActionCommand(_gchooser->getActionCommand());\n    _gchooser->fireEvent(changeEvent);\n}\n\nvoid _Internal_QComboBox::keyPressEvent(QKeyEvent* event) {\n    require::nonNull(event, \"_Internal_QComboBox::keyPressEvent\", \"event\");\n    if (_gchooser && _gchooser->isAcceptingEvent(\"keypress\")) {\n        event->accept();\n        _gchooser->fireGEvent(event, KEY_PRESSED, \"keypress\");\n        if (event->isAccepted()) {\n            QComboBox::keyPressEvent(event);   // call super\n        }\n    } else {\n        QComboBox::keyPressEvent(event);   // call super\n    }\n}\n\nvoid _Internal_QComboBox::keyReleaseEvent(QKeyEvent* event) {\n    require::nonNull(event, \"_Internal_QComboBox::keyReleaseEvent\", \"event\");\n    if (_gchooser && _gchooser->isAcceptingEvent(\"keyrelease\")) {\n        event->accept();\n        _gchooser->fireGEvent(event, KEY_RELEASED, \"keyrelease\");\n        if (event->isAccepted()) {\n            QComboBox::keyReleaseEvent(event);   // call super\n        }\n    } else {\n        QComboBox::keyReleaseEvent(event);   // call super\n    }\n}\n\nQSize _Internal_QComboBox::sizeHint() const {\n    if (hasPreferredSize()) {\n        return getPreferredSize();\n    } else {\n        return QComboBox::sizeHint();\n    }\n}\n\n#ifdef SPL_PRECOMPILE_QT_MOC_FILES\n#define INTERNAL_INCLUDE 1\n#include \"moc_gchooser.cpp\"   // speeds up compilation of auto-generated Qt files\n#undef INTERNAL_INCLUDE\n#endif // SPL_PRECOMPILE_QT_MOC_FILES\n\n/*\n * File: gtextfield.cpp\n * --------------------\n *\n * @author Marty Stepp\n * @version 2019/04/23\n * - added key events\n * @version 2019/02/02\n * - destructor now stops event processing\n * @version 2019/02/01\n * - emit CHANGE_EVENT on key presses when text changes\n * @version 2018/08/23\n * - renamed to gtextfield.cpp to replace Java version\n * @version 2018/06/29\n * - added textChange event\n * - added autocompletion\n * @version 2018/06/25\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"gtextfield.h\"\n#include <QCompleter>\n#include <QFontMetrics>\n#include <QString>\n#include <QStringList>\n#include <QStringListModel>\n#define INTERNAL_INCLUDE 1\n#include \"gthread.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gwindow.h\"\n#define INTERNAL_INCLUDE 1\n#include \"require.h\"\n#undef INTERNAL_INCLUDE\n\nGTextField::GTextField(const std::string& text, int charsWide, QWidget* parent)\n        : _iqlineedit(nullptr),\n          _iqspinbox(nullptr),\n          _iqdoublespinbox(nullptr) {\n    GThread::runOnQtGuiThread([this, parent]() {\n        _iqlineedit = new _Internal_QLineEdit(this, getInternalParent(parent));\n        _inputType = GTextField::INPUT_TYPE_TEXT;\n    });\n    if (!text.empty()) {\n        setText(text);\n    }\n    if (charsWide > 0) {\n        setCharsWide(charsWide);\n    }\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGTextField::GTextField(int charsWide, QWidget* parent)\n        : _iqlineedit(nullptr),\n          _iqspinbox(nullptr),\n          _iqdoublespinbox(nullptr) {\n    GThread::runOnQtGuiThread([this, parent]() {\n        _iqlineedit = new _Internal_QLineEdit(this, getInternalParent(parent));\n        _inputType = GTextField::INPUT_TYPE_TEXT;\n    });\n    if (charsWide > 0) {\n        setCharsWide(charsWide);\n    }\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGTextField::GTextField(int value, int min, int max, int step, QWidget* parent) {\n    require::require(min <= max, \"GTextField::constructor\", \"min (\" + std::to_string(min) + \") cannot be greater than max (\" + std::to_string(max) + \")\");\n    require::inRange(value, min, max, \"GTextField::constructor\", \"value\");\n    GThread::runOnQtGuiThread([this, value, min, max, step, parent]() {\n        _iqspinbox = new _Internal_QSpinBox(this, min, max, step, getInternalParent(parent));\n        _iqspinbox->setValue(value);\n        _inputType = GTextField::INPUT_TYPE_INTEGER;\n    });\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGTextField::GTextField(double value, double min, double max, double step, QWidget* parent) {\n    require::require(min <= max, \"GTextField::constructor\", \"min (\" + std::to_string(min) + \") cannot be greater than max (\" + std::to_string(max) + \")\");\n    require::inRange(value, min, max, \"GTextField::constructor\", \"value\");\n    GThread::runOnQtGuiThread([this, value, min, max, step, parent]() {\n        _iqdoublespinbox = new _Internal_QDoubleSpinBox(this, min, max, step, getInternalParent(parent));\n        _iqdoublespinbox->setValue(value);\n        _inputType = GTextField::INPUT_TYPE_REAL;\n    });\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGTextField::~GTextField() {\n    // TODO: delete _iqlineedit;\n    if (_iqlineedit) {\n        _iqlineedit->detach();\n        _iqlineedit = nullptr;\n    }\n    if (_iqspinbox) {\n        _iqspinbox->detach();\n        _iqspinbox = nullptr;\n    }\n    if (_iqdoublespinbox) {\n        _iqdoublespinbox->detach();\n        _iqdoublespinbox = nullptr;\n    }\n}\n\nstd::string GTextField::getActionEventType() const {\n    return \"change\";\n}\n\nint GTextField::getCharsWide() const {\n    QFontMetrics fm(getWidget()->font());\n    int mWidth = fm.width(QString::fromStdString(\"m\"));\n    return (int) (getWidth() / mWidth);\n}\n\nGTextField::InputType GTextField::getInputType() const {\n    return _inputType;\n}\n\n_Internal_QWidget* GTextField::getInternalWidget() const {\n    if (_inputType == GTextField::INPUT_TYPE_TEXT) {\n        return _iqlineedit;\n    } else if (_inputType == GTextField::INPUT_TYPE_INTEGER) {\n        return _iqspinbox;\n    } else {\n        return _iqdoublespinbox;\n    }\n}\n\nint GTextField::getMaxLength() const {\n    int maxLength = _iqlineedit->maxLength();\n\n    // Qt has default max text length of 32767\n    maxLength = maxLength == 32767 ? 0 : maxLength;\n\n    if (_inputType == GTextField::INPUT_TYPE_TEXT) {\n        // empty\n    } else if (_inputType == GTextField::INPUT_TYPE_INTEGER) {\n        std::string maxStr = std::to_string(_iqspinbox->maximum());\n        maxLength = std::max(maxLength, (int) maxStr.length());\n    } else {\n        std::string maxStr = std::to_string(_iqdoublespinbox->maximum());\n        maxLength = std::max(maxLength, (int) maxStr.length());   // TODO: may be incorrect w/ decimal value\n    }\n\n    return maxLength;\n}\n\nstd::string GTextField::getPlaceholder() const {\n    if (_inputType == GTextField::INPUT_TYPE_TEXT) {\n        return _iqlineedit->placeholderText().toStdString();\n    } else if (_inputType == GTextField::INPUT_TYPE_INTEGER) {\n        return _iqspinbox->lineEdit()->placeholderText().toStdString();\n    } else {\n        return _iqdoublespinbox->lineEdit()->placeholderText().toStdString();\n    }\n}\n\nstd::string GTextField::getText() const {\n    if (_inputType == GTextField::INPUT_TYPE_TEXT) {\n        return _iqlineedit->text().toStdString();\n    } else if (_inputType == GTextField::INPUT_TYPE_INTEGER) {\n        return _iqspinbox->lineEdit()->text().toStdString();\n    } else {\n        return _iqdoublespinbox->lineEdit()->text().toStdString();\n    }\n}\n\nstd::string GTextField::getType() const {\n    return \"GTextField\";\n}\n\nstd::string GTextField::getValue() const {\n    return getText();\n}\n\nbool GTextField::getValueAsBool() const {\n    std::string text = trim(getText());\n    return stringToBool(text);\n}\n\nchar GTextField::getValueAsChar() const {\n    std::string text = getText();\n    if (text.empty()) {\n        return '\\0';\n    } else {\n        return text[0];\n    }\n}\n\ndouble GTextField::getValueAsDouble() const {\n    std::string text = trim(getText());\n    return stringToDouble(text);\n}\n\nint GTextField::getValueAsInt() const {\n    return getValueAsInteger();\n}\n\nint GTextField::getValueAsInteger() const {\n    std::string text = trim(getText());\n    return stringToInteger(text);\n}\n\nQWidget* GTextField::getWidget() const {\n    if (_inputType == GTextField::INPUT_TYPE_TEXT) {\n        return static_cast<QWidget*>(_iqlineedit);\n    } else if (_inputType == GTextField::INPUT_TYPE_INTEGER) {\n        return static_cast<QWidget*>(_iqspinbox);\n    } else {\n        return static_cast<QWidget*>(_iqdoublespinbox);\n    }\n}\n\nbool GTextField::isAutocompleteEnabled() const {\n    if (_inputType == GTextField::INPUT_TYPE_TEXT) {\n        return _iqlineedit->completer() != nullptr;\n    } else if (_inputType == GTextField::INPUT_TYPE_INTEGER) {\n        return _iqspinbox->lineEdit()->completer() != nullptr;\n    } else {\n        return _iqdoublespinbox->lineEdit()->completer() != nullptr;\n    }\n}\n\nbool GTextField::isEditable() const {\n    if (_inputType == GTextField::INPUT_TYPE_TEXT) {\n        return !_iqlineedit->isReadOnly();\n    } else if (_inputType == GTextField::INPUT_TYPE_INTEGER) {\n        return !_iqspinbox->lineEdit()->isReadOnly();\n    } else {\n        return !_iqdoublespinbox->lineEdit()->isReadOnly();\n    }\n}\n\nvoid GTextField::removeTextChangeListener() {\n    removeEventListener(\"textchange\");\n}\n\nvoid GTextField::setAutocompleteList(std::initializer_list<std::string> strings) {\n    Vector<std::string> v(strings);\n    setAutocompleteList(v);\n}\n\nvoid GTextField::setAutocompleteList(const Vector<std::string>& strings) {\n    GThread::runOnQtGuiThread([this, &strings]() {\n        QStringList stringList;\n        for (std::string s : strings) {\n            if (!s.empty()) {\n                stringList.push_back(QString::fromStdString(s));\n            }\n        }\n        QStringListModel* model = new QStringListModel(stringList, _iqlineedit);   // TODO: MEMORY LEAK\n        QCompleter* completer = new QCompleter(model, _iqlineedit);                // TODO: MEMORY LEAK\n        completer->setModelSorting(QCompleter::CaseInsensitivelySortedModel);\n        completer->setCaseSensitivity(Qt::CaseInsensitive);\n        completer->setCompletionMode(QCompleter::PopupCompletion);\n\n        if (_inputType == GTextField::INPUT_TYPE_TEXT) {\n            _iqlineedit->setCompleter(completer);\n        } else if (_inputType == GTextField::INPUT_TYPE_INTEGER) {\n            _iqspinbox->lineEdit()->setCompleter(completer);\n        } else {\n            _iqdoublespinbox->lineEdit()->setCompleter(completer);\n        }\n    });\n}\n\nvoid GTextField::setAutocompleteEnabled(bool enabled) {\n    GThread::runOnQtGuiThread([this, enabled]() {\n        if (!enabled) {\n            if (_inputType == GTextField::INPUT_TYPE_TEXT) {\n                _iqlineedit->setCompleter(nullptr);\n            } else if (_inputType == GTextField::INPUT_TYPE_INTEGER) {\n                _iqspinbox->lineEdit()->setCompleter(nullptr);\n            } else {\n                _iqdoublespinbox->lineEdit()->setCompleter(nullptr);\n            }\n        }\n    });\n    // TODO: ability to set back to false\n}\n\nvoid GTextField::setCharsWide(int charsWide) {\n    require::nonNegative(charsWide, \"GTextField::setCharsWide\");\n    GThread::runOnQtGuiThread([this, charsWide]() {\n        QFontMetrics fm(getWidget()->font());\n        int mWidth = fm.width(QString::fromStdString(\"m\"));\n        getWidget()->setFixedWidth(mWidth * charsWide);\n        getWidget()->updateGeometry();\n    });\n}\n\nvoid GTextField::setEditable(bool value) {\n    GThread::runOnQtGuiThread([this, value]() {\n        if (_inputType == GTextField::INPUT_TYPE_TEXT) {\n            _iqlineedit->setReadOnly(!value);\n        } else if (_inputType == GTextField::INPUT_TYPE_INTEGER) {\n            _iqspinbox->setReadOnly(!value);\n        } else {\n            _iqdoublespinbox->setReadOnly(!value);\n        }\n    });\n}\n\nvoid GTextField::setMaxLength(int maxLength) {\n    GThread::runOnQtGuiThread([this, maxLength]() {\n        if (_inputType == GTextField::INPUT_TYPE_TEXT) {\n            _iqlineedit->setMaxLength(maxLength);\n        } else if (_inputType == GTextField::INPUT_TYPE_INTEGER) {\n            _iqspinbox->lineEdit()->setMaxLength(maxLength);\n        } else {\n            _iqdoublespinbox->lineEdit()->setMaxLength(maxLength);\n        }\n    });\n}\n\nvoid GTextField::setPlaceholder(const std::string& text) {\n    GThread::runOnQtGuiThread([this, text]() {\n        if (_inputType == GTextField::INPUT_TYPE_TEXT) {\n            _iqlineedit->setPlaceholderText(QString::fromStdString(text));\n        } else if (_inputType == GTextField::INPUT_TYPE_INTEGER) {\n            _iqspinbox->lineEdit()->setPlaceholderText(QString::fromStdString(text));\n        } else {\n            _iqdoublespinbox->lineEdit()->setPlaceholderText(QString::fromStdString(text));\n        }\n    });\n}\n\nvoid GTextField::setText(const std::string& text) {\n    GThread::runOnQtGuiThread([this, text]() {\n        if (_inputType == GTextField::INPUT_TYPE_TEXT) {\n            _iqlineedit->setText(QString::fromStdString(text));\n        } else if (_inputType == GTextField::INPUT_TYPE_INTEGER) {\n            _iqspinbox->lineEdit()->setText(QString::fromStdString(text));\n        } else {\n            _iqdoublespinbox->lineEdit()->setText(QString::fromStdString(text));\n        }\n    });\n}\n\nvoid GTextField::setTextChangeListener(GEventListener func) {\n    setEventListener(\"textchange\", func);\n}\n\nvoid GTextField::setTextChangeListener(GEventListenerVoid func) {\n    setEventListener(\"textchange\", func);\n}\n\nvoid GTextField::setValue(bool value) {\n    setText(boolToString(value));\n}\n\nvoid GTextField::setValue(char value) {\n    setText(charToString(value));\n}\n\nvoid GTextField::setValue(double value) {\n    setText(realToString(value));\n}\n\nvoid GTextField::setValue(int value) {\n    setText(std::to_string(value));\n}\n\nvoid GTextField::setValue(const std::string& value) {\n    setText(value);\n}\n\nbool GTextField::valueIsBool() const {\n    return stringIsBool(trim(getText()));\n}\n\nbool GTextField::valueIsChar() const {\n    return (int) getText().length() == 1;\n}\n\nbool GTextField::valueIsDouble() const {\n    return stringIsDouble(trim(getText()));\n}\n\nbool GTextField::valueIsInt() const {\n    return stringIsInteger(trim(getText()));\n}\n\nbool GTextField::valueIsInteger() const {\n    return stringIsInteger(trim(getText()));\n}\n\nbool GTextField::valueIsReal() const {\n    return stringIsReal(trim(getText()));\n}\n\n\n_Internal_QLineEdit::_Internal_QLineEdit(GTextField* gtextField, QWidget* parent)\n        : QLineEdit(parent),\n          _gtextfield(gtextField) {\n    require::nonNull(gtextField, \"_Internal_QLineEdit::constructor\");\n    setObjectName(QString::fromStdString(\"_Internal_QLineEdit_\" + std::to_string(gtextField->getID())));\n    connect(this, SIGNAL(textChanged(QString)), this, SLOT(handleTextChange(const QString&)));\n}\n\nvoid _Internal_QLineEdit::detach() {\n    _gtextfield = nullptr;\n}\n\nvoid _Internal_QLineEdit::handleTextChange(const QString&) {\n    if (!_gtextfield) {\n        return;\n    }\n    GEvent textChangeEvent(\n                /* class  */ KEY_EVENT,\n                /* type   */ KEY_TYPED,\n                /* name   */ \"textchange\",\n                /* source */ _gtextfield);\n    textChangeEvent.setActionCommand(_gtextfield->getActionCommand());\n    _gtextfield->fireEvent(textChangeEvent);\n\n    // BUGFIX: for backward compatibility, also fire a CHANGE_EVENT\n    // (emits only to the old-style waitForEvent function)\n    GEvent changeEvent(\n                /* class  */ CHANGE_EVENT,\n                /* type   */ STATE_CHANGED,\n                /* name   */ \"statechange\",\n                /* source */ _gtextfield);\n    changeEvent.setActionCommand(_gtextfield->getActionCommand());\n    _gtextfield->fireEvent(changeEvent);\n}\n\nvoid _Internal_QLineEdit::keyPressEvent(QKeyEvent* event) {\n    require::nonNull(event, \"_Internal_QLineEdit::keyPressEvent\", \"event\");\n    if (_gtextfield && _gtextfield->isAcceptingEvent(\"action\")) {\n        QLineEdit::keyPressEvent(event);   // call super\n        if (event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return) {\n            GEvent actionEvent(\n                        /* class  */ ACTION_EVENT,\n                        /* type   */ ACTION_PERFORMED,\n                        /* name   */ \"action\",\n                        /* source */ _gtextfield);\n            actionEvent.setActionCommand(_gtextfield->getActionCommand());\n            _gtextfield->fireEvent(actionEvent);\n        }\n    } else if (_gtextfield && _gtextfield->isAcceptingEvent(\"keypress\")) {\n        event->accept();\n        _gtextfield->fireGEvent(event, KEY_PRESSED, \"keypress\");\n        if (event->isAccepted()) {\n            QLineEdit::keyPressEvent(event);   // call super\n        }\n    } else {\n        QLineEdit::keyPressEvent(event);   // call super\n    }\n}\n\nvoid _Internal_QLineEdit::keyReleaseEvent(QKeyEvent* event) {\n    require::nonNull(event, \"_Internal_QLineEdit::keyReleaseEvent\", \"event\");\n    if (_gtextfield && _gtextfield->isAcceptingEvent(\"keyrelease\")) {\n        event->accept();\n        _gtextfield->fireGEvent(event, KEY_RELEASED, \"keyrelease\");\n        if (event->isAccepted()) {\n            QLineEdit::keyReleaseEvent(event);   // call super\n        }\n    } else {\n        QLineEdit::keyReleaseEvent(event);   // call super\n    }\n}\n\nQSize _Internal_QLineEdit::sizeHint() const {\n    if (hasPreferredSize()) {\n        return getPreferredSize();\n    } else {\n        return QLineEdit::sizeHint();\n    }\n}\n\n_Internal_QSpinBox::_Internal_QSpinBox(GTextField* gtextField, int min, int max, int step, QWidget* parent)\n        : QSpinBox(parent),\n          _gtextfield(gtextField) {\n    require::nonNull(gtextField, \"_Internal_QSpinBox::constructor\");\n    setObjectName(QString::fromStdString(\"_Internal_QSpinBox_\" + std::to_string(gtextField->getID())));\n    setRange(min, max);\n    setSingleStep(step);\n}\n\nvoid _Internal_QSpinBox::detach() {\n    _gtextfield = nullptr;\n}\n\nvoid _Internal_QSpinBox::handleTextChange(const QString&) {\n    if (!_gtextfield) {\n        return;\n    }\n    GEvent textChangeEvent(\n                /* class  */ KEY_EVENT,\n                /* type   */ KEY_TYPED,\n                /* name   */ \"textchange\",\n                /* source */ _gtextfield);\n    textChangeEvent.setActionCommand(_gtextfield->getActionCommand());\n    _gtextfield->fireEvent(textChangeEvent);\n}\n\nvoid _Internal_QSpinBox::keyPressEvent(QKeyEvent* event) {\n    require::nonNull(event, \"_Internal_QSpinBox::keyPressEvent\", \"event\");\n    if (_gtextfield && _gtextfield->isAcceptingEvent(\"action\")) {\n        QSpinBox::keyPressEvent(event);   // call super\n        if (event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return) {\n            GEvent actionEvent(\n                        /* class  */ ACTION_EVENT,\n                        /* type   */ ACTION_PERFORMED,\n                        /* name   */ \"action\",\n                        /* source */ _gtextfield);\n            actionEvent.setActionCommand(_gtextfield->getActionCommand());\n            _gtextfield->fireEvent(actionEvent);\n        }\n    } else if (_gtextfield && _gtextfield->isAcceptingEvent(\"keypress\")) {\n        event->accept();\n        _gtextfield->fireGEvent(event, KEY_PRESSED, \"keypress\");\n        if (event->isAccepted()) {\n            QSpinBox::keyPressEvent(event);   // call super\n        }\n    } else {\n        QSpinBox::keyPressEvent(event);   // call super\n    }\n}\n\nvoid _Internal_QSpinBox::keyReleaseEvent(QKeyEvent* event) {\n    require::nonNull(event, \"_Internal_QSpinBox::keyReleaseEvent\", \"event\");\n    if (_gtextfield && _gtextfield->isAcceptingEvent(\"keyrelease\")) {\n        event->accept();\n        _gtextfield->fireGEvent(event, KEY_RELEASED, \"keyrelease\");\n        if (event->isAccepted()) {\n            QSpinBox::keyReleaseEvent(event);   // call super\n        }\n    } else {\n        QSpinBox::keyReleaseEvent(event);   // call super\n    }\n}\n\nQLineEdit* _Internal_QSpinBox::lineEdit() const {\n    return QSpinBox::lineEdit();\n}\n\nQSize _Internal_QSpinBox::sizeHint() const {\n    if (hasPreferredSize()) {\n        return getPreferredSize();\n    } else {\n        return QSpinBox::sizeHint();\n    }\n}\n\n_Internal_QDoubleSpinBox::_Internal_QDoubleSpinBox(GTextField* gtextField, double min, double max, double step, QWidget* parent)\n        : QDoubleSpinBox(parent),\n          _gtextfield(gtextField) {\n    require::nonNull(gtextField, \"_Internal_QDoubleSpinBox::constructor\");\n    setObjectName(QString::fromStdString(\"_Internal_QDoubleSpinBox_\" + std::to_string(gtextField->getID())));\n    setRange(min, max);\n    setSingleStep(step);\n}\n\nvoid _Internal_QDoubleSpinBox::detach() {\n    _gtextfield = nullptr;\n}\n\nvoid _Internal_QDoubleSpinBox::handleTextChange(const QString&) {\n    if (!_gtextfield) {\n        return;\n    }\n    GEvent textChangeEvent(\n                /* class  */ KEY_EVENT,\n                /* type   */ KEY_TYPED,\n                /* name   */ \"textchange\",\n                /* source */ _gtextfield);\n    textChangeEvent.setActionCommand(_gtextfield->getActionCommand());\n    _gtextfield->fireEvent(textChangeEvent);\n}\n\nvoid _Internal_QDoubleSpinBox::keyPressEvent(QKeyEvent* event) {\n    require::nonNull(event, \"_Internal_QDoubleSpinBox::keyPressEvent\", \"event\");\n    if (_gtextfield && _gtextfield->isAcceptingEvent(\"action\")) {\n        QDoubleSpinBox::keyPressEvent(event);   // call super\n        if (event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return) {\n            GEvent actionEvent(\n                        /* class  */ ACTION_EVENT,\n                        /* type   */ ACTION_PERFORMED,\n                        /* name   */ \"action\",\n                        /* source */ _gtextfield);\n            actionEvent.setActionCommand(_gtextfield->getActionCommand());\n            _gtextfield->fireEvent(actionEvent);\n        }\n    } else if (_gtextfield && _gtextfield->isAcceptingEvent(\"keypress\")) {\n        event->accept();\n        _gtextfield->fireGEvent(event, KEY_PRESSED, \"keypress\");\n        if (event->isAccepted()) {\n            QDoubleSpinBox::keyPressEvent(event);   // call super\n        }\n    } else {\n        QDoubleSpinBox::keyPressEvent(event);   // call super\n    }\n}\n\nvoid _Internal_QDoubleSpinBox::keyReleaseEvent(QKeyEvent* event) {\n    require::nonNull(event, \"_Internal_QDoubleSpinBox::keyReleaseEvent\", \"event\");\n    if (_gtextfield && _gtextfield->isAcceptingEvent(\"keyrelease\")) {\n        event->accept();\n        _gtextfield->fireGEvent(event, KEY_RELEASED, \"keyrelease\");\n        if (event->isAccepted()) {\n            QDoubleSpinBox::keyReleaseEvent(event);   // call super\n        }\n    } else {\n        QDoubleSpinBox::keyReleaseEvent(event);   // call super\n    }\n}\n\nQLineEdit* _Internal_QDoubleSpinBox::lineEdit() const {\n    return QDoubleSpinBox::lineEdit();\n}\n\nQSize _Internal_QDoubleSpinBox::sizeHint() const {\n    if (hasPreferredSize()) {\n        return getPreferredSize();\n    } else {\n        return QDoubleSpinBox::sizeHint();\n    }\n}\n\n#ifdef SPL_PRECOMPILE_QT_MOC_FILES\n#define INTERNAL_INCLUDE 1\n#include \"moc_gtextfield.cpp\"   // speeds up compilation of auto-generated Qt files\n#undef INTERNAL_INCLUDE\n#endif // SPL_PRECOMPILE_QT_MOC_FILES\n\n/*\n * File: geventqueue.cpp\n * ---------------------\n *\n * @author Marty Stepp\n * @version 2019/01/08\n * - bug fix in waitForClick function (was never returning!)\n * @version 2018/08/23\n * - renamed to geventqueue.cpp\n * @version 2018/07/03\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"qtgui.h\"\n#include <QEvent>\n#include <QThread>\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"exceptions.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gwindow.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#undef INTERNAL_INCLUDE\n\n#ifdef _WIN32\n#  include <direct.h>   // for chdir\n#else // _WIN32\n#  include <unistd.h>   // for chdir\n#endif // _WIN32\n\nGEventQueue* GEventQueue::_instance = nullptr;\n\nGEventQueue::GEventQueue()\n        : _eventMask(0) {\n    // empty\n}\n\nGThunk GEventQueue::dequeue() {\n    _functionQueueMutex.lockForWrite();\n    GThunk thunk = _functionQueue.dequeue();\n    _functionQueueMutex.unlock();\n    return thunk;\n}\n\nvoid GEventQueue::enqueueEvent(const GEvent& event) {\n    if (isAcceptingEvent(event.getEventClass())) {\n        _eventQueueMutex.lockForWrite();\n        _eventQueue.enqueue(event);\n        _eventQueueMutex.unlock();\n    }\n}\n\nint GEventQueue::getEventMask() const {\n    return _eventMask;\n}\n\nGEvent GEventQueue::getNextEvent(int mask) {\n    setEventMask(mask);\n\n    // check if any events have arrived\n    _eventQueueMutex.lockForRead();\n    bool empty = _eventQueue.isEmpty();\n    _eventQueueMutex.unlock();\n\n    if (!empty) {\n        // grab the event and return it\n        _eventQueueMutex.lockForWrite();\n        while (!_eventQueue.isEmpty()) {\n            GEvent event = _eventQueue.dequeue();\n            if (isAcceptingEvent(event)) {\n                _eventQueueMutex.unlock();\n                return event;\n            }\n        }\n        _eventQueueMutex.unlock();\n    }\n\n    GEvent bogusEvent;\n    return bogusEvent;\n}\n\nGEventQueue* GEventQueue::instance() {\n    if (!_instance) {\n        _instance = new GEventQueue();\n    }\n    return _instance;\n}\n\nbool GEventQueue::isAcceptingEvent(const GEvent& event) const {\n    return isAcceptingEvent(event.getEventClass());\n}\n\nbool GEventQueue::isAcceptingEvent(int eventClass) const {\n    return (_eventMask & eventClass) != 0;\n}\n\nbool GEventQueue::isEmpty() const {\n    return _functionQueue.isEmpty();\n}\n\nGThunk GEventQueue::peek() {\n    _functionQueueMutex.lockForRead();\n    GThunk thunk = _functionQueue.peek();\n    _functionQueueMutex.unlock();\n    return thunk;\n}\n\nvoid GEventQueue::runOnQtGuiThreadAsync(GThunk thunk) {\n    _functionQueueMutex.lockForWrite();\n    _functionQueue.add(thunk);\n    _functionQueueMutex.unlock();\n    emit eventReady();\n}\n\nvoid GEventQueue::runOnQtGuiThreadSync(GThunk thunk) {\n    _functionQueueMutex.lockForWrite();\n    _functionQueue.add(thunk);\n    _functionQueueMutex.unlock();\n    emit eventReady();\n\n    // TODO: \"empty\" is not quite right condition\n    while (true) {\n        _functionQueueMutex.lockForRead();\n        bool empty = _functionQueue.isEmpty();\n        _functionQueueMutex.unlock();\n        if (empty) {\n            break;\n        } else {\n            GThread::getCurrentThread()->sleep(1);\n        }\n    }\n}\n\nvoid GEventQueue::setEventMask(int mask) {\n    _eventMask = mask;\n}\n\nGEvent GEventQueue::waitForEvent(int mask) {\n    setEventMask(mask);\n    while (true) {\n        // check if any events have arrived\n        _eventQueueMutex.lockForRead();\n        bool empty = _eventQueue.isEmpty();\n        _eventQueueMutex.unlock();\n\n        if (!empty) {\n            // grab the event and return it\n            _eventQueueMutex.lockForWrite();\n            while (!_eventQueue.isEmpty()) {\n                GEvent event = _eventQueue.dequeue();\n                if (isAcceptingEvent(event)) {\n                    _eventQueueMutex.unlock();\n                    return event;\n                }\n            }\n            _eventQueueMutex.unlock();\n        }\n\n        GThread::getCurrentThread()->sleep(1);\n    }\n}\n\nGEvent getNextEvent(int mask) {\n    return GEventQueue::instance()->getNextEvent(mask);\n}\n\nGMouseEvent waitForClick() {\n    while (true) {\n        GMouseEvent event = GEventQueue::instance()->waitForEvent(MOUSE_EVENT);\n        if (event.getEventType() == MOUSE_CLICKED) {\n            return event;\n        }\n    }\n}\n\nGEvent waitForEvent(int mask) {\n    return GEventQueue::instance()->waitForEvent(mask);\n}\n\n#ifdef SPL_PRECOMPILE_QT_MOC_FILES\n#define INTERNAL_INCLUDE 1\n#include \"moc_geventqueue.cpp\"   // speeds up compilation of auto-generated Qt files\n#undef INTERNAL_INCLUDE\n#endif // SPL_PRECOMPILE_QT_MOC_FILES\n\n/*\n * File: gbrowserpane.cpp\n * ----------------------\n * This file contains the implementation of the <code>GBrowserPane</code> class\n * as declared in gbrowserpane.h.\n *\n * @version 2019/04/23\n * - moved some event-handling code to GInteractor superclass\n * @version 2018/12/28\n * - added methods for text selection, scrolling, cursor position, key/mouse listeners\n * @version 2018/09/17\n * - fixed thread safety bugs\n * - added link listener events\n * @version 2018/08/23\n * - renamed to gbrowserpane.h to replace Java version\n * @version 2018/07/15\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"gbrowserpane.h\"\n#include <QScrollBar>\n#include <QTextCursor>\n#include <fstream>\n#include <iostream>\n#define INTERNAL_INCLUDE 1\n#include \"filelib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gthread.h\"\n#define INTERNAL_INCLUDE 1\n#include \"require.h\"\n#define INTERNAL_INCLUDE 1\n#include \"server.h\"\n#undef INTERNAL_INCLUDE\n\nGBrowserPane::GBrowserPane(const std::string& url, QWidget* parent) {\n    GThread::runOnQtGuiThread([this, url, parent]() {\n        _iqtextbrowser = new _Internal_QTextBrowser(this, getInternalParent(parent));\n    });\n    if (!url.empty()) {\n        readTextFromUrl(url);\n    }\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGBrowserPane::~GBrowserPane() {\n    // TODO: delete _iqtextbrowser;\n    _iqtextbrowser->detach();\n    _iqtextbrowser = nullptr;\n}\n\nvoid GBrowserPane::clearSelection() {\n    GThread::runOnQtGuiThread([this]() {\n        QTextCursor cursor = _iqtextbrowser->textCursor();\n        cursor.clearSelection();\n        _iqtextbrowser->setTextCursor(cursor);\n    });\n}\n\nvoid GBrowserPane::clearText() {\n    GThread::runOnQtGuiThread([this]() {\n        _iqtextbrowser->clear();\n    });\n}\n\nstd::string GBrowserPane::getContentType() const {\n    return _contentType;\n}\n\nint GBrowserPane::getCursorPosition() const {\n    return _iqtextbrowser->textCursor().position();\n}\n\n_Internal_QWidget* GBrowserPane::getInternalWidget() const {\n    return _iqtextbrowser;\n}\n\nstd::string GBrowserPane::getPageUrl() const {\n    return _pageUrl;\n}\n\nstd::string GBrowserPane::getSelectedText() const {\n    QTextCursor cursor = _iqtextbrowser->textCursor();\n    int start = cursor.selectionStart();\n    int end = cursor.selectionEnd();\n    if (end > start) {\n        return getText().substr(start, end - start);\n    } else {\n        return \"\";\n    }\n}\n\nint GBrowserPane::getSelectionEnd() const {\n    QTextCursor cursor = _iqtextbrowser->textCursor();\n    int start = cursor.selectionStart();\n    int end = cursor.selectionEnd();\n    if (end > start) {\n        return end;\n    } else {\n        // no selection; cursor sets selection start/end to be equal\n        return -1;\n    }\n}\n\nint GBrowserPane::getSelectionLength() const {\n    QTextCursor cursor = _iqtextbrowser->textCursor();\n    int start = cursor.selectionStart();\n    int end = cursor.selectionEnd();\n    return end - start;\n}\n\nint GBrowserPane::getSelectionStart() const {\n    QTextCursor cursor = _iqtextbrowser->textCursor();\n    int start = cursor.selectionStart();\n    int end = cursor.selectionEnd();\n    if (end > start) {\n        return start;\n    } else {\n        return -1;\n    }\n}\n\nstd::string GBrowserPane::getText() const {\n    return _iqtextbrowser->toHtml().toStdString();\n}\n\nstd::string GBrowserPane::getType() const {\n    return \"GBrowserPane\";\n}\n\nQWidget* GBrowserPane::getWidget() const {\n    return static_cast<QWidget*>(_iqtextbrowser);\n}\n\nbool GBrowserPane::isEditable() const {\n    return !_iqtextbrowser->isReadOnly();\n}\n\nbool GBrowserPane::isLineWrap() const {\n    return _iqtextbrowser->lineWrapMode() != QTextEdit::NoWrap;\n}\n\nvoid GBrowserPane::moveCursorToEnd() {\n    GThread::runOnQtGuiThread([this]() {\n        QTextCursor cursor = _iqtextbrowser->textCursor();\n        cursor.movePosition(QTextCursor::End, QTextCursor::MoveAnchor, 1);\n        _iqtextbrowser->setTextCursor(cursor);\n        _iqtextbrowser->ensureCursorVisible();\n    });\n}\n\nvoid GBrowserPane::moveCursorToStart() {\n    GThread::runOnQtGuiThread([this]() {\n        QTextCursor cursor = _iqtextbrowser->textCursor();\n        cursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor, 1);\n        _iqtextbrowser->setTextCursor(cursor);\n        _iqtextbrowser->ensureCursorVisible();\n    });\n}\n\nvoid GBrowserPane::readTextFromFile(std::istream& file) {\n    std::string fileText = readEntireStream(file);\n    setText(fileText);\n}\n\nvoid GBrowserPane::readTextFromFile(const std::string& filename) {\n    std::ifstream input;\n    input.open(filename.c_str());\n    if (!input.fail()) {\n        _pageUrl = filename;\n        std::string extension = getExtension(filename);\n        std::string contentType = HttpServer::getContentType(extension);\n        if (!contentType.empty()) {\n            setContentType(contentType);\n        }\n        readTextFromFile(input);\n    }\n}\n\nvoid GBrowserPane::readTextFromUrl(const std::string& url) {\n    this->_pageUrl = url;\n    GThread::runOnQtGuiThread([this, url]() {\n        QUrl qurl(QString::fromStdString(url));\n        _iqtextbrowser->setSource(qurl);\n    });\n}\n\nvoid GBrowserPane::removeLinkListener() {\n    removeEventListener(\"linkclick\");\n}\n\nvoid GBrowserPane::removeTextChangeListener() {\n    removeEventListener(\"textchange\");\n}\n\nvoid GBrowserPane::scrollToBottom() {\n    GThread::runOnQtGuiThread([this]() {\n        QScrollBar* scrollbar = _iqtextbrowser->verticalScrollBar();\n        scrollbar->setValue(scrollbar->maximum());\n        scrollbar->setSliderPosition(scrollbar->maximum());\n    });\n}\n\nvoid GBrowserPane::scrollToTop() {\n    GThread::runOnQtGuiThread([this]() {\n        QScrollBar* scrollbar = _iqtextbrowser->verticalScrollBar();\n        scrollbar->setValue(0);\n        scrollbar->setSliderPosition(0);\n    });\n}\n\nvoid GBrowserPane::select(int startIndex, int length) {\n    require::nonNegative(startIndex, 0, \"GBrowserPane::select\", \"startIndex\");\n    require::nonNegative(length, 0, \"GBrowserPane::select\", \"length\");\n    GThread::runOnQtGuiThread([this, startIndex, length]() {\n        QTextCursor cursor = _iqtextbrowser->textCursor();\n        cursor.setPosition(startIndex);\n        cursor.movePosition(QTextCursor::Right, QTextCursor::KeepAnchor, length);\n        _iqtextbrowser->setTextCursor(cursor);\n    });\n}\n\nvoid GBrowserPane::selectAll() {\n    GThread::runOnQtGuiThread([this]() {\n        _iqtextbrowser->selectAll();\n    });\n}\n\nvoid GBrowserPane::setContentType(const std::string& contentType) {\n    _contentType = contentType;\n}\n\nvoid GBrowserPane::setCursorPosition(int index, bool keepAnchor) {\n    require::nonNegative(index, \"TextArea::setCursorPosition\", \"index\");\n    GThread::runOnQtGuiThread([this, index, keepAnchor]() {\n        QTextCursor cursor(_iqtextbrowser->textCursor());\n        cursor.setPosition(index, keepAnchor ? QTextCursor::KeepAnchor : QTextCursor::MoveAnchor);\n        _iqtextbrowser->setTextCursor(cursor);\n        _iqtextbrowser->ensureCursorVisible();\n    });\n}\n\nvoid GBrowserPane::setEditable(bool value) {\n    GThread::runOnQtGuiThread([this, value]() {\n        _iqtextbrowser->setReadOnly(!value);\n    });\n}\n\nvoid GBrowserPane::setMouseListener(GEventListener func) {\n    setEventListeners({\"mousepress\",\n                       \"mouserelease\"}, func);\n}\n\nvoid GBrowserPane::setMouseListener(GEventListenerVoid func) {\n    setEventListeners({\"mousepress\",\n                       \"mouserelease\"}, func);\n}\n\nvoid GBrowserPane::setLineWrap(bool wrap) {\n    GThread::runOnQtGuiThread([this, wrap]() {\n        _iqtextbrowser->setLineWrapMode(wrap ? QTextEdit::WidgetWidth : QTextEdit::NoWrap);\n    });\n}\n\nvoid GBrowserPane::setLinkListener(GEventListener func) {\n    setEventListener(\"linkclick\", func);\n}\n\nvoid GBrowserPane::setLinkListener(GEventListenerVoid func) {\n    setEventListener(\"linkclick\", func);\n}\n\nvoid GBrowserPane::setText(const std::string& text) {\n    GThread::runOnQtGuiThread([this, text]() {\n        _iqtextbrowser->setText(QString::fromStdString(text));\n    });\n}\n\nvoid GBrowserPane::setTextChangeListener(GEventListener func) {\n    setEventListener(\"textchange\", func);\n}\n\nvoid GBrowserPane::setTextChangeListener(GEventListenerVoid func) {\n    setEventListener(\"textchange\", func);\n}\n\n\n_Internal_QTextBrowser::_Internal_QTextBrowser(GBrowserPane* gbrowserpane, QWidget* parent)\n        : QTextBrowser(parent),\n          _gbrowserpane(gbrowserpane) {\n    require::nonNull(gbrowserpane, \"_Internal_QTextBrowser::constructor\");\n    setObjectName(QString::fromStdString(\"_Internal_QTextBrowser_\" + std::to_string(gbrowserpane->getID())));\n    setFocusPolicy(Qt::StrongFocus);\n}\n\nvoid _Internal_QTextBrowser::detach() {\n    _gbrowserpane = nullptr;\n}\n\nQVariant _Internal_QTextBrowser::loadResource(int type, const QUrl &url) {\n    // patch to work properly for data:... URLs\n    if (type == QTextDocument::ImageResource && url.scheme() == QLatin1String(\"data\")) {\n        QRegExp regex(\"^image/[^;]+;base64,(.+)={0,2}$\");\n        if (regex.indexIn(url.path()) >= 0) {\n            QImage img;\n            if (img.loadFromData(QByteArray::fromBase64(regex.cap(1).toLatin1()))) {\n                return QVariant::fromValue(img);\n            }\n        }\n    }\n    return QTextBrowser::loadResource(type, url);\n}\n\nvoid _Internal_QTextBrowser::mousePressEvent(QMouseEvent* event) {\n    QTextBrowser::mousePressEvent(event);\n    if (!_gbrowserpane->isAcceptingEvent(\"linkclick\")) {\n        return;\n    }\n    if (!(event->button() & Qt::LeftButton)) {\n        return;\n    }\n    QString clickedAnchor = anchorAt(event->pos());\n    if (clickedAnchor.isEmpty()) {\n        return;\n    }\n    _clickedLink = clickedAnchor;\n}\n\nvoid _Internal_QTextBrowser::mouseReleaseEvent(QMouseEvent* event) {\n    if (!_gbrowserpane->isAcceptingEvent(\"linkclick\")) {\n        QTextBrowser::mouseReleaseEvent(event);   // call super\n        return;\n    }\n    if (!(event->button() & Qt::LeftButton)) {\n        QTextBrowser::mouseReleaseEvent(event);   // call super\n        return;\n    }\n    QString clickedAnchor = anchorAt(event->pos());\n    if (clickedAnchor.isEmpty() || _clickedLink.isEmpty()\n            || clickedAnchor != _clickedLink) {\n        QTextBrowser::mouseReleaseEvent(event);   // call super\n        return;\n    }\n\n    _clickedLink = QString::fromStdString(\"\");   // clear\n\n    GEvent linkEvent(\n                /* class  */ HYPERLINK_EVENT,\n                /* type   */ HYPERLINK_CLICKED,\n                /* name   */ \"linkclick\",\n                /* source */ _gbrowserpane);\n    linkEvent.setButton(static_cast<int>(event->button()));\n    linkEvent.setX(event->x());\n    linkEvent.setY(event->y());\n    linkEvent.setModifiers(event->modifiers());\n    linkEvent.setRequestURL(clickedAnchor.toStdString());\n    linkEvent.setActionCommand(_gbrowserpane->getActionCommand());\n    linkEvent.setInternalEvent(event);\n    _gbrowserpane->fireEvent(linkEvent);\n}\n\nQSize _Internal_QTextBrowser::sizeHint() const {\n    if (hasPreferredSize()) {\n        return getPreferredSize();\n    } else {\n        return QTextBrowser::sizeHint();\n    }\n}\n\n#ifdef SPL_PRECOMPILE_QT_MOC_FILES\n#define INTERNAL_INCLUDE 1\n#include \"moc_gbrowserpane.cpp\"   // speeds up compilation of auto-generated Qt files\n#undef INTERNAL_INCLUDE\n#endif // SPL_PRECOMPILE_QT_MOC_FILES\n\n/*\n * File: ginputpanel.cpp\n * ---------------------\n * This file contains declarations of functions that can pop up an\n * \"input panel\" of easy clickable buttons on the screen.\n * See ginputpanel.h for documentation of each function.\n * \n * @author Marty Stepp\n * @version 2018/08/28\n * - refactored from free functions to GInputPanel class\n * @version 2016/10/04\n * - removed all static variables (replaced with STATIC_VARIABLE macros)\n * @version 2014/10/14\n * - initial version\n * @since 2014/10/14\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"ginputpanel.h\"\n#define INTERNAL_INCLUDE 1\n#include \"filelib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"xmlutils.h\"\n#define INTERNAL_INCLUDE 1\n#include \"private/static.h\"\n#undef INTERNAL_INCLUDE\n\nGInputPanel* GInputPanel::_instance = nullptr;\n\nGInputPanel* GInputPanel::instance() {\n    if (!_instance) {\n        _instance = new GInputPanel();\n    }\n    return _instance;\n}\n\nGInputPanel::GInputPanel()\n        : _loaded(false) {\n    // empty\n}\n\nvoid GInputPanel::addButton(const std::string& /*text*/, const std::string& /*input*/) {\n    // TODO\n}\n\nvoid GInputPanel::addCategory(const std::string& /*name*/) {\n    // TODO\n}\n\nvoid GInputPanel::removeCategory(const std::string& /*name*/) {\n    // TODO\n}\n\nvoid GInputPanel::removeButton(const std::string& /*text*/) {\n    // TODO\n}\n\nvoid GInputPanel::setVisible(bool /*value*/) {\n    // TODO\n}\n\nbool GInputPanel::isLoaded() const {\n    return _loaded;\n}\n\nvoid GInputPanel::load(const std::string& xmlFilename) {\n    if (isLoaded() || !fileExists(xmlFilename)) {\n        return;\n    }\n\n    _loaded = true;\n    rapidxml::xml_node<>* doc = xmlutils::openXmlDocument(xmlFilename, \"inputpanel\");\n    for (rapidxml::xml_node<>* category : xmlutils::getChildNodes(doc, \"category\")) {\n        std::string categoryName = xmlutils::getAttribute(category, \"name\");\n        addCategory(categoryName);\n        for (rapidxml::xml_node<>* button : xmlutils::getChildNodes(category, \"button\")) {\n            std::string text = xmlutils::getAttribute(button, \"text\");\n            std::string input = text;\n            if (xmlutils::hasAttribute(button, \"input\")) {\n                input = xmlutils::getAttribute(button, \"input\");\n                \n                // preprocess text to allow stuff like \\n, \\\\, &quot; from XML to C++\n                input = stringReplace(input, \"\\\\n\", \"\\n\");\n                input = stringReplace(input, \"\\\\t\", \"\\t\");\n                input = stringReplace(input, \"\\\\r\", \"\\r\");\n                input = stringReplace(input, \"\\\\f\", \"\\f\");\n                input = stringReplace(input, \"\\\\\\\\\", \"\\\\\");\n                input = stringReplace(input, \"&nbsp;\", \" \");\n                input = stringReplace(input, \"&lt;\", \"<\");\n                input = stringReplace(input, \"&gt;\", \">\");\n                input = stringReplace(input, \"&amp;\", \"&\");\n                input = stringReplace(input, \"&quot;\", \"\\\"\");\n            }\n            addButton(text, input);\n        }\n    }\n}\n\n/*\n * File: gfont.cpp\n * ---------------\n *\n * @author Marty Stepp\n * @version 2019/04/30\n * - added changeFontSize for a GText*\n * @version 2018/09/23\n * - added macro checks to improve compatibility with old Qt versions\n * @version 2018/09/14\n * - added boldFont, italicFont\n * @version 2018/08/23\n * - renamed to gfont.cpp to replace Java version\n * @version 2018/07/05\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"gfont.h\"\n#include <algorithm>\n#include <iomanip>\n#include <iostream>\n#include <QtGlobal>\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"require.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"vector.h\"\n#undef INTERNAL_INCLUDE\n\nGFont::GFont() {\n    // empty\n}\n\nvoid GFont::boldFont(GInteractor* interactor) {\n    require::nonNull(interactor, \"GFont::boldFont\", \"interactor\");\n    QFont newFont = deriveQFont(toQFont(interactor->getFont()), /* weight */ QFont::Bold);\n    interactor->setFont(newFont);\n}\n\nvoid GFont::changeFontSize(GInteractor* interactor, int dsize) {\n    require::nonNull(interactor, \"GFont::changeFontSize\", \"interactor\");\n    QFont newFont = changeFontSize(toQFont(interactor->getFont()), dsize);\n    interactor->setFont(newFont);\n}\n\nvoid GFont::changeFontSize(GText* label, int dsize) {\n    require::nonNull(label, \"GFont::changeFontSize\", \"label\");\n    QFont newFont = changeFontSize(toQFont(label->getFont()), dsize);\n    label->setFont(newFont);\n}\n\nQFont GFont::changeFontSize(const QFont& font, int dsize) {\n    int newSize = std::max(1, font.pointSize() + dsize);\n    return QFont(font.family(), newSize, font.weight(), font.italic());\n}\n\nQFont GFont::deriveQFont(const QFont& font, QFont::Weight weight, int size) {\n    return QFont(font.family(), size, weight, /* italic */ font.italic());\n}\n\nQFont GFont::deriveQFont(const QFont& font, const std::string& fontFamily, QFont::Weight weight, int size) {\n    return QFont(QString::fromStdString(fontFamily), size, weight, /* italic */ font.italic());\n}\n\nQFont GFont::deriveQFont(const std::string& font, QFont::Weight weight, int size) {\n    return deriveQFont(toQFont(font), weight, size);\n}\n\nQFont GFont::deriveQFont(const std::string& font, const std::string& fontFamily, QFont::Weight weight, int size) {\n    return deriveQFont(toQFont(font), fontFamily, weight, size);\n}\n\n// http://doc.qt.io/qt-5/qfont.html#StyleHint-enum\nQFont::StyleHint GFont::getStyleHint(const std::string& fontFamily) {\n    std::string fontFamilyStr = toLowerCase(trim(fontFamily));\n    if (fontFamilyStr == \"arial\"\n            || fontFamilyStr == \"helvetica\"\n            || fontFamilyStr == \"sansserif\"\n            || fontFamilyStr == \"sans-serif\") {\n        return QFont::Helvetica;\n    } else if (fontFamilyStr == \"serif\"\n            || fontFamilyStr == \"times\"\n            || fontFamilyStr == \"times roman\"\n            || fontFamilyStr == \"times new roman\") {\n        return QFont::Times;\n    } else if (fontFamilyStr == \"courier\"\n            || fontFamilyStr == \"courier new\"\n            || fontFamilyStr == \"consolas\"\n            || fontFamilyStr == \"monospace\"\n            || fontFamilyStr == \"monospaced\"\n            || endsWith(fontFamilyStr, \" mono\")) {\n        return QFont::Monospace;\n    } else if (fontFamilyStr == \"comic sans\"\n            || fontFamilyStr == \"comic sans ms\"\n            || fontFamilyStr == \"fantasy\") {\n        return QFont::Fantasy;\n    } else if (fontFamilyStr == \"cursive\") {\n        return QFont::Cursive;\n    } else if (fontFamilyStr == \"system\") {\n        return QFont::System;\n    } else {\n        return QFont::AnyStyle;\n    }\n}\n\nvoid GFont::italicFont(GInteractor* interactor) {\n    require::nonNull(interactor, \"GFont::boldFont\", \"interactor\");\n    QFont oldFont = toQFont(interactor->getFont());\n    QFont newFont(oldFont.family(), oldFont.pointSize(), oldFont.weight(), /* italic */ true);\n    interactor->setFont(newFont);\n}\n\n// example font string:\n// \"Courier New-Bold-12\"\nstd::string GFont::toFontString(const QFont& font) {\n    std::ostringstream out;\n    out << font.family().toStdString();\n\n    // http://doc.qt.io/qt-5/qfont.html#Weight-enum\n    bool dashPrinted = false;\n    switch (font.weight()) {\n        case QFont::DemiBold:\n        case QFont::Bold:\n#if QT_VERSION >= QT_VERSION_CHECK(5, 9, 0)\n        case QFont::ExtraBold:\n#endif // QT_VERSION\n        case QFont::Black:\n            out << \"-bold\";\n            dashPrinted = true;\n            break;\n#if QT_VERSION >= QT_VERSION_CHECK(5, 9, 0)\n        case QFont::Thin:\n        case QFont::ExtraLight:\n#endif // QT_VERSION\n        case QFont::Light:\n        case QFont::Normal:\n#if QT_VERSION >= QT_VERSION_CHECK(5, 9, 0)\n        case QFont::Medium:\n#endif // QT_VERSION\n        default:\n            // not bold\n            break;\n    }\n    if (font.italic()) {\n        if (!dashPrinted) {\n            // dashPrinted = true;\n            out << \"-\";\n        }\n        out << \"italic\";\n    }\n\n    out << \"-\" << font.pointSize();\n    return out.str();\n}\n\n// example font string:\n// \"Courier New-Bold-12\"\nQFont GFont::toQFont(const std::string& fontString) {\n    Vector<std::string> tokens = stringSplit(trim(fontString), \"-\");\n    if (tokens.isEmpty()) {\n        return QFont();\n    }\n\n    std::string fontFamily = \"\";\n    bool fontBold = false;\n    bool fontItalic = false;\n    int fontSize = 12;   // 12pt standard font size\n\n    if (!tokens.isEmpty()) {\n        fontFamily = trim(tokens.removeFront());\n        if (fontFamily == \"*\") {\n            fontFamily = \"SansSerif\";\n        }\n    }\n    for (int i = 0; i < 2; i++) {\n        if (!tokens.isEmpty()) {\n            // tokens 2-3 can be size-style or style-size\n            std::string fontWeightStr = toLowerCase(trim(tokens.removeFront()));\n            if (stringIsInteger(fontWeightStr)) {\n                fontSize = stringToInteger(fontWeightStr);\n            }\n            if (stringContains(fontWeightStr, \"bold\")) {\n                fontBold = true;\n            }\n            if (stringContains(fontWeightStr, \"italic\")) {\n                fontItalic = true;\n            }\n        }\n    }\n\n    QFont font = QFont(QString::fromStdString(fontFamily),\n                       fontSize,\n                       fontBold ? QFont::Bold : QFont::Normal,\n                       fontItalic);\n    font.setStyleHint(getStyleHint(fontFamily));\n    return font;\n}\n\nQFont GFont::toQFont(const QFont& basisFont, const std::string& fontString) {\n    Vector<std::string> tokens = stringSplit(trim(fontString), \"-\");\n    if (tokens.isEmpty()) {\n        return QFont();\n    }\n\n    std::string fontFamily = \"\";\n    bool fontBold = basisFont.bold();\n    bool fontItalic = basisFont.italic();\n    int fontSize = basisFont.pointSize();   // 12pt standard font size\n\n    if (!tokens.isEmpty()) {\n        fontFamily = trim(tokens.removeFront());\n        if (fontFamily == \"*\") {\n            fontFamily = basisFont.family().toStdString();\n        }\n    }\n    for (int i = 0; i < 2; i++) {\n        if (!tokens.isEmpty()) {\n            // tokens 2-3 can be size-style or style-size\n            std::string fontWeightStr = toLowerCase(trim(tokens.removeFront()));\n            if (stringIsInteger(fontWeightStr)) {\n                fontSize = stringToInteger(fontWeightStr);\n            } else if (stringContains(fontWeightStr, \"bold\")) {\n                fontBold = true;\n            } else if (stringContains(fontWeightStr, \"italic\")) {\n                fontItalic = true;\n            }\n        }\n    }\n\n    QFont font = QFont(QString::fromStdString(fontFamily),\n                       fontSize,\n                       fontBold ? QFont::Bold : QFont::Normal,\n                       fontItalic);\n    font.setStyleHint(getStyleHint(fontFamily));\n    return font;\n}\n\n/*\n * File: gtypes.cpp\n * ----------------\n * This file implements the classes in the gtypes.h interface.\n *\n * @version 2019/05/16\n * - added GRectangle contains(GRectangle), intersects\n * @version 2018/07/14\n * - initial version, based on gtypes.cpp\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"gtypes.h\"\n#include <cmath>\n#include <sstream>\n#include <string>\n#define INTERNAL_INCLUDE 1\n#include \"collections.h\"\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gmath.h\"\n#define INTERNAL_INCLUDE 1\n#include \"hashcode.h\"\n#define INTERNAL_INCLUDE 1\n#include \"point.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#undef INTERNAL_INCLUDE\n\n/*\n * Implementation notes: GDimension class\n * --------------------------------------\n * The GDimension class itself is entirely straightforward.  The\n * relational operators compare the width first, followed by the height.\n * The hashCode function computes the exclusive-or of the individual words.\n */\n\nGDimension::GDimension(double width, double height)\n        : _width(width),\n          _height(height) {\n    // empty\n}\n\ndouble GDimension::getWidth() const {\n    return _width;\n}\n\ndouble GDimension::getHeight() const {\n    return _height;\n}\n\nstd::string GDimension::toString() const {\n    std::ostringstream out;\n    out << *this;\n    return out.str();\n}\n\nstd::ostream& operator <<(std::ostream& os, const GDimension& dim) {\n    return os << \"(\" << dim._width << \", \" << dim._height << \")\";\n}\n\nbool operator ==(const GDimension& d1, const GDimension& d2) {\n    return floatingPointEqual(d1._width, d2._width)\n            && floatingPointEqual(d1._height, d2._height);\n}\n\nbool operator !=(const GDimension& d1, const GDimension& d2) {\n    return !(d1 == d2);\n}\n\nbool operator <(const GDimension& d1, const GDimension& d2) {\n    return d1._width < d2._width\n            || (floatingPointEqual(d1._width, d2._width) && d1._height < d2._height);\n}\n\nbool operator <=(const GDimension& d1, const GDimension& d2) {\n    return d1 < d2 || d1 == d2;\n}\n\nbool operator >(const GDimension& d1, const GDimension& d2) {\n    return d2 < d1;\n}\n\nbool operator >=(const GDimension& d1, const GDimension& d2) {\n    return d1 > d2 || d1 == d2;\n}\n\nGDimension operator *(const GDimension& d, double scale) {\n    return GDimension(d._width * scale, d._height * scale);\n}\n\nint hashCode(const GDimension& dim) {\n    return hashCode(dim._width, dim._height);\n}\n\nstd::string toString(HorizontalAlignment alignment) {\n    if (alignment == ALIGN_CENTER) {\n        return \"Center\";\n    } else if (alignment == ALIGN_LEFT) {\n        return \"Left\";\n    } else {   // if (alignment == ALIGN_RIGHT)\n        return \"Right\";\n    }\n}\n\nstd::string toString(VerticalAlignment alignment) {\n    if (alignment == ALIGN_MIDDLE) {\n        return \"Middle\";\n    } else if (alignment == ALIGN_TOP) {\n        return \"Top\";\n    } else {   // if (alignment == ALIGN_BOTTOM)\n        return \"Bottom\";\n    }\n}\n\nHorizontalAlignment toHorizontalAlignment(const std::string& alignmentStr) {\n    std::string alignLC = toLowerCase(trim(alignmentStr));\n    if (stringContains(alignLC, \"left\") || stringContains(alignLC, \"west\")) {\n        return ALIGN_LEFT;\n    } else if (stringContains(alignLC, \"right\") || stringContains(alignLC, \"east\")) {\n        return ALIGN_RIGHT;\n    } else if (stringContains(alignLC, \"stretch\") || stringContains(alignLC, \"justify\")) {\n        return ALIGN_HORIZONTAL_STRETCH;\n    } else {\n        return ALIGN_CENTER;\n    }\n}\n\nQt::Alignment toQtAlignment(HorizontalAlignment alignment) {\n    return alignment == ALIGN_LEFT ? Qt::AlignLeft\n            : alignment == ALIGN_CENTER ? Qt::AlignHCenter\n            : alignment == ALIGN_HORIZONTAL_STRETCH ? Qt::AlignJustify\n            : Qt::AlignRight;\n}\n\nQt::Alignment toQtAlignment(VerticalAlignment alignment) {\n    return alignment == ALIGN_TOP ? Qt::AlignTop\n            : alignment == ALIGN_MIDDLE ? Qt::AlignVCenter\n            : alignment == ALIGN_VERTICAL_STRETCH ? Qt::AlignTop\n            : Qt::AlignBottom;\n}\n\nVerticalAlignment toVerticalAlignment(const std::string& alignmentStr) {\n    std::string alignLC = toLowerCase(trim(alignmentStr));\n    if (stringContains(alignLC, \"top\") || stringContains(alignLC, \"north\")) {\n        return ALIGN_TOP;\n    } else if (stringContains(alignLC, \"bottom\") || stringContains(alignLC, \"south\")) {\n        return ALIGN_BOTTOM;\n    } else if (stringContains(alignLC, \"stretch\") || stringContains(alignLC, \"justify\")) {\n        return ALIGN_VERTICAL_STRETCH;\n    } else {\n        return ALIGN_MIDDLE;\n    }\n}\n\n/*\n * Implementation notes: GPoint class\n * ----------------------------------\n * The GPoint class itself is entirely straightforward.  The relational\n * operators compare the x components first, followed by the y component.\n * The hashCode function computes the exclusive-or of the individual words.\n */\n\nGPoint::GPoint(double x, double y)\n        : _x(x),\n          _y(y) {\n    // empty\n}\n\nGPoint::GPoint(const Point& point) {\n    _x = point.getX();\n    _y = point.getY();\n}\n\ndouble GPoint::getX() const {\n    return _x;\n}\n\ndouble GPoint::getY() const {\n    return _y;\n}\n\nstd::string GPoint::toString() const {\n    std::ostringstream out;\n    out << *this;\n    return out.str();\n}\n\nstd::ostream& operator <<(std::ostream& os, const GPoint& pt) {\n    return os << \"(\" << pt._x << \", \" << pt._y << \")\";\n}\n\nbool operator ==(const GPoint& p1, const GPoint& p2) {\n    return floatingPointEqual(p1._x, p2._x)\n            && floatingPointEqual(p1._y, p2._y);\n}\n\nbool operator !=(const GPoint& p1, const GPoint& p2) {\n    return !(p1 == p2);\n}\n\nbool operator <(const GPoint& p1, const GPoint& p2) {\n    return p1._x < p2._x || (floatingPointEqual(p1._x, p2._x) && p1._y < p2._y);\n}\n\nbool operator <=(const GPoint& p1, const GPoint& p2) {\n    return p1 < p2 || p1 == p2;\n}\n\nbool operator >(const GPoint& p1, const GPoint& p2) {\n    return p2 < p1;\n}\n\nbool operator >=(const GPoint& p1, const GPoint& p2) {\n    return p1 > p2 || p1 == p2;\n}\n\nGPoint operator *(const GPoint& p, double scale) {\n    return GPoint(p._x * scale, p._y * scale);\n}\n\nint hashCode(const GPoint& pt) {\n    return hashCode(pt._x, pt._y);\n}\n\n/*\n * Implementation notes: GRectangle class\n * --------------------------------------\n * The GRectangle class itself is entirely straightforward.  The\n * relational operators compare the components in the following order:\n * x, y, width, height.  The hashCode function computes the exclusive-or\n * of the individual words.\n */\n\nGRectangle::GRectangle(double x, double y, double width, double height)\n        : _x(x),\n          _y(y),\n          _width(width),\n          _height(height) {\n    // empty\n}\n\nGRectangle::GRectangle(double x, double y, const GDimension& size)\n        : _x(x),\n          _y(y),\n          _width(size.getWidth()),\n          _height(size.getHeight()) {\n    // empty\n}\n\nGRectangle::GRectangle(const GPoint& p, double width, double height)\n        : _x(p.getX()),\n          _y(p.getY()),\n          _width(width),\n          _height(height) {\n    // empty\n}\n\nGRectangle::GRectangle(const GPoint& p, const GDimension& size)\n        : _x(p.getX()),\n          _y(p.getY()),\n          _width(size.getWidth()),\n          _height(size.getHeight()) {\n    // empty\n}\n\nbool GRectangle::contains(double x, double y) const {\n    return x >= this->_x && y >= this->_y\n            && x < this->_x + _width\n            && y < this->_y + _height;\n}\n\nbool GRectangle::contains(const GPoint& pt) const {\n    return contains(pt.getX(), pt.getY());\n}\n\nbool GRectangle::contains(const GRectangle& rect) const {\n    return contains(rect.getX(), rect.getY())\n            && contains(rect.getX() + rect.getWidth() - 1, rect.getY() + rect.getHeight() - 1);\n}\n\nGRectangle GRectangle::enlargedBy(double amount) {\n    return GRectangle(_x - amount, _y - amount, _width + 2 * amount, _height + 2 * amount);\n}\n\ndouble GRectangle::getX() const {\n    return _x;\n}\n\ndouble GRectangle::getY() const {\n    return _y;\n}\n\ndouble GRectangle::getWidth() const {\n    return _width;\n}\n\ndouble GRectangle::getHeight() const {\n    return _height;\n}\n\nbool GRectangle::intersects(const GRectangle& other) const {\n    // check for non-intersecting x coordinates\n    return !(getX() + getWidth() < other.getX()            // I am entirely left of him\n          || getX() > other.getX() + other.getWidth()      // I am entirely right of him\n          || getY() + getHeight() < other.getY()           // I am entirely above him\n          || getY() > other.getY() + other.getHeight());   // I am entirely below him\n}\n\nbool GRectangle::isEmpty() const {\n    return _width <= 0 || _height <= 0;\n}\n\nstd::string GRectangle::toString() const {\n    std::ostringstream out;\n    out << *this;\n    return out.str();\n}\n\nstd::ostream& operator <<(std::ostream& os, const GRectangle& rect) {\n    return os << \"(\" << rect.getX() << \", \" << rect.getY() << \", \"\n              << rect.getWidth() << \", \" << rect.getHeight() << \")\";\n}\n\nbool operator ==(const GRectangle& r1, const GRectangle& r2) {\n    return floatingPointEqual(r1._x, r2._x)\n            && floatingPointEqual(r1._y, r2._y)\n            && floatingPointEqual(r1._width, r2._width)\n            && floatingPointEqual(r1._height, r2._height);\n}\n\nbool operator !=(const GRectangle& r1, const GRectangle& r2) {\n    return !(r1 == r2);\n}\n\nbool operator <(const GRectangle& r1, const GRectangle& r2) {\n    return stanfordcpplib::collections::compareTo(\n            r1._x, r2._x, r1._y, r2._y, r1._width, r2._width, r1._height, r2._height) < 0;\n}\n\nbool operator <=(const GRectangle& r1, const GRectangle& r2) {\n    return r1 < r2 || r1 == r2;\n}\n\nbool operator >(const GRectangle& r1, const GRectangle& r2) {\n    return r2 < r1;\n}\n\nbool operator >=(const GRectangle& r1, const GRectangle& r2) {\n    return r1 > r2 || r1 == r2;\n}\n\nint hashCode(const GRectangle& r) {\n    return hashCode(r._x, r._y, r._width, r._height);\n}\n\n/*\n * File: gconsolewindow.cpp\n * ------------------------\n * This file implements the gconsolewindow.h interface.\n *\n * @author Marty Stepp\n * @version 2019/04/25\n * - added hasInputScript\n * @version 2019/04/16\n * - bug fix for wrong text color on Mac dark mode\n * @version 2019/04/10\n * - toolbar support with icons from icon strip image\n * @version 2019/04/09\n * - bug fix for premature input script / compare output popup\n * - changed default Mac font to Courier New from Menlo\n * @version 2018/12/27\n * - bug fix for endless waitForEvent queued events caused by printing text\n *   to console (bug reported by Keith Schwarz)\n * @version 2018/10/11\n * - bug fixes for shutdown flag, input script hotkeys (e.g. Ctrl+1)\n * @version 2018/10/04\n * - changed default line wrap to true\n * @version 2018/09/27\n * - bug fix for printing strings with line breaks (remove \\r, favor \\n)\n * @version 2018/09/23\n * - added getFont\n * - bug fix for loading input scripts\n * - bug fix for default font on Mac\n * @version 2018/09/18\n * - window size/location fixes\n * @version 2018/09/17\n * - fixes for monospaced font on Mac OS X\n * @version 2018/08/23\n * - initial version, separated out from console.cpp\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"gconsolewindow.h\"\n#include <cstdio>\n#include <QAction>\n#include <QTextDocumentFragment>\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"exceptions.h\"\n#define INTERNAL_INCLUDE 1\n#include \"filelib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gclipboard.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gcolor.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gcolorchooser.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gdiffgui.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gdownloader.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gfilechooser.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gfont.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gfontchooser.h\"\n#define INTERNAL_INCLUDE 1\n#include \"goptionpane.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gthread.h\"\n#define INTERNAL_INCLUDE 1\n#include \"os.h\"\n#define INTERNAL_INCLUDE 1\n#include \"qtgui.h\"\n#define INTERNAL_INCLUDE 1\n#include \"private/static.h\"\n#define INTERNAL_INCLUDE 1\n#include \"private/version.h\"\n#undef INTERNAL_INCLUDE\n\nvoid setConsolePropertiesQt();\n\n/*static*/ const bool GConsoleWindow::GConsoleWindow::ALLOW_RICH_INPUT_EDITING = true;\n/*static*/ const double GConsoleWindow::DEFAULT_WIDTH = 900;\n/*static*/ const double GConsoleWindow::DEFAULT_HEIGHT = 550;\n/*static*/ const double GConsoleWindow::DEFAULT_X = 10;\n/*static*/ const double GConsoleWindow::DEFAULT_Y = 40;\n/*static*/ const std::string GConsoleWindow::CONFIG_FILE_NAME = \"spl-jar-settings.txt\";\n/*static*/ const std::string GConsoleWindow::DEFAULT_WINDOW_TITLE = \"Console\";\n/*static*/ const std::string GConsoleWindow::DEFAULT_FONT_FAMILY = \"Monospace\";\n/*static*/ const std::string GConsoleWindow::DEFAULT_FONT_WEIGHT = \"\";\n/*static*/ const int GConsoleWindow::DEFAULT_FONT_SIZE = 12;\n/*static*/ const int GConsoleWindow::MIN_FONT_SIZE = 4;\n/*static*/ const int GConsoleWindow::MAX_FONT_SIZE = 255;\n/*static*/ const std::string GConsoleWindow::DEFAULT_ERROR_COLOR = \"#cc0000\";\n/*static*/ const std::string GConsoleWindow::DEFAULT_ERROR_COLOR_DARK_MODE = \"#f47862\";\n/*static*/ const std::string GConsoleWindow::DEFAULT_USER_INPUT_COLOR = \"#0000cc\";\n/*static*/ const std::string GConsoleWindow::DEFAULT_USER_INPUT_COLOR_DARK_MODE = \"#2c90e5\";\n/*static*/ GConsoleWindow* GConsoleWindow::_instance = nullptr;\n/*static*/ bool GConsoleWindow::_consoleEnabled = false;\n\n/*static*/ bool GConsoleWindow::consoleEnabled() {\n    return _consoleEnabled;\n}\n\n/*static*/ std::string GConsoleWindow::getDefaultFont() {\n    if (OS::isMac()) {\n        // for some reason, using \"Monospace\" doesn't work for me on Mac testing\n        return \"Courier New-\"\n                + std::to_string(DEFAULT_FONT_SIZE + 1)\n                + (DEFAULT_FONT_WEIGHT.empty() ? \"\" : (\"-\" + DEFAULT_FONT_WEIGHT));\n    } else {\n        return DEFAULT_FONT_FAMILY\n                + \"-\" + std::to_string(DEFAULT_FONT_SIZE)\n                + (DEFAULT_FONT_WEIGHT.empty() ? \"\" : (\"-\" + DEFAULT_FONT_WEIGHT));\n    }\n}\n\n/*static*/ GConsoleWindow* GConsoleWindow::instance() {\n    if (!_instance) {\n        // initialize Qt system and Qt Console window\n        GThread::runOnQtGuiThread([]() {\n            if (!_instance) {\n                QtGui::instance()->initializeQt();\n                _instance = new GConsoleWindow();\n                setConsolePropertiesQt();\n            }\n        });\n    }\n    return _instance;\n}\n\n/*static*/ bool GConsoleWindow::isInitialized() {\n    return _instance != nullptr;\n}\n\n/*static*/ void GConsoleWindow::setConsoleEnabled(bool enabled) {\n    _consoleEnabled = enabled;\n}\n\nGConsoleWindow::GConsoleWindow()\n        : GWindow(/* visible */ false),\n          _textArea(nullptr),\n          _clearEnabled(true),\n          _echo(false),\n          _locationSaved(false),\n          _locked(false),\n          _promptActive(false),\n          _shutdown(false),\n          _commandHistoryIndex(-1),\n          _errorColor(\"\"),\n          _outputColor(\"\"),\n          _userInputColor(\"\"),\n          _inputBuffer(\"\"),\n          _lastSaveFileName(\"\"),\n          _cinout_new_buf(nullptr),\n          _cerr_new_buf(nullptr),\n          _cin_old_buf(nullptr),\n          _cout_old_buf(nullptr),\n          _cerr_old_buf(nullptr) {\n    _initMenuBar();\n    _initWidgets();\n    _initStreams();\n    loadConfiguration();\n}\n\n/*static*/ Map<std::string, QPixmap> GConsoleWindow::unpackImageStrip(\n        const std::string& imageStripFileName,\n        const Vector<std::string>& imageFiles,\n        int imageSize) {\n    // all images are the same size\n    Vector<GDimension> imageSizes;\n    for (int i = 0; i < imageFiles.size(); i++) {\n        imageSizes.add(GDimension(imageSize, imageSize));\n    }\n    return unpackImageStrip(imageStripFileName, imageFiles, imageSizes);\n}\n\n/*static*/ Map<std::string, QPixmap> GConsoleWindow::unpackImageStrip(\n        const std::string& imageStripFileName,\n        const Vector<std::string>& imageFiles,\n        const Vector<GDimension>& imageSizes) {\n    int iconOffsetX = 0;\n    Map<std::string, QPixmap> imageMap;\n    if (fileExists(imageStripFileName)) {\n        QPixmap pixmap(QString::fromStdString(imageStripFileName));\n        for (int i = 0; i < imageFiles.size(); i++) {\n            std::string imageFile = imageFiles[i];\n            GDimension imageSize = imageSizes[i];\n            QPixmap pixcopy = pixmap.copy(iconOffsetX, 0, static_cast<int>(imageSize.getWidth()), static_cast<int>(imageSize.getHeight()));\n            imageMap[imageFile] = pixcopy;\n            iconOffsetX += static_cast<int>(imageSize.getWidth());\n        }\n    }\n    return imageMap;\n}\n\nvoid GConsoleWindow::_initMenuBar() {\n    addToolbar();\n\n    const std::string ICON_STRIP_FILE = \"iconstrip.png\";\n    const int ICON_SIZE = 16;\n    Vector<std::string> IMAGES {\n        \"save.gif\",\n        \"save_as.gif\",\n        \"print.gif\",\n        \"script.gif\",\n        \"compare_output.gif\",\n        \"quit.gif\",\n        \"cut.gif\",\n        \"copy.gif\",\n        \"paste.gif\",\n        \"select_all.gif\",\n        \"clear_console.gif\",\n        \"font.gif\",\n        \"background_color.gif\",\n        \"text_color.gif\",\n        \"about.gif\",\n        \"check_for_updates.gif\"\n    };\n    Map<std::string, QPixmap> imageMap = unpackImageStrip(ICON_STRIP_FILE, IMAGES, ICON_SIZE);\n\n    // File menu\n    addMenu(\"&File\");\n    addMenuItem(\"File\", \"&Save\", imageMap[\"save.gif\"],\n                [this]() { this->save(); })\n                ->setShortcut(QKeySequence::Save);\n\n    addMenuItem(\"File\", \"Save &As...\", imageMap[\"save_as.gif\"],\n                [this]() { this->saveAs(); })\n                ->setShortcut(QKeySequence::SaveAs);\n    addMenuSeparator(\"File\");\n\n    addMenuItem(\"File\", \"&Print\", imageMap[\"print.gif\"],\n                [this]() { this->showPrintDialog(); })\n                ->setShortcut(QKeySequence::Print);\n    setMenuItemEnabled(\"File\", \"Print\", false);\n    addMenuSeparator(\"File\");\n\n    addMenuItem(\"File\", \"&Load Input Script...\", imageMap[\"script.gif\"],\n                [this]() { this->showInputScriptDialog(); });\n    if (!imageMap.isEmpty()) {\n        addToolbarItem(\"Load Input Script...\", imageMap[\"script.gif\"],\n                       [this]() { this->showInputScriptDialog(); });\n    }\n\n    addMenuItem(\"File\", \"&Compare Output...\", imageMap[\"compare_output.gif\"],\n                [this]() { this->showCompareOutputDialog(); });\n    if (!imageMap.isEmpty()) {\n        addToolbarItem(\"Compare Output...\", imageMap[\"compare_output.gif\"],\n                       [this]() { this->showCompareOutputDialog(); });\n    }\n\n    addMenuItem(\"File\", \"&Quit\", imageMap[\"quit.gif\"],\n                [this]() { this->close(); /* TODO: exit app */ })\n                ->setShortcut(QKeySequence::Quit);\n    if (!imageMap.isEmpty()) {\n        addToolbarSeparator();\n    }\n\n    // Edit menu\n    addMenu(\"&Edit\");\n    addMenuItem(\"Edit\", \"Cu&t\", imageMap[\"cut.gif\"],\n                [this]() { this->clipboardCut(); })\n                ->setShortcut(QKeySequence::Cut);\n//    if (!imageMap.isEmpty()) {\n//        addToolbarItem(\"Cut\", imageMap[\"cut.gif\"],\n//                       [this]() { this->clipboardCut(); });\n//    }\n\n    addMenuItem(\"Edit\", \"&Copy\", imageMap[\"copy.gif\"],\n                [this]() { this->clipboardCopy(); })\n                ->setShortcut(QKeySequence::Copy);\n    if (!imageMap.isEmpty()) {\n        addToolbarItem(\"Copy\", imageMap[\"copy.gif\"],\n                       [this]() { this->clipboardCopy(); });\n    }\n\n    addMenuItem(\"Edit\", \"&Paste\", imageMap[\"paste.gif\"],\n                [this]() { this->clipboardPaste(); })\n                ->setShortcut(QKeySequence::Paste);\n    if (!imageMap.isEmpty()) {\n        addToolbarItem(\"Paste\", imageMap[\"paste.gif\"],\n                       [this]() { this->clipboardPaste(); });\n    }\n\n    addMenuItem(\"Edit\", \"Select &All\", imageMap[\"select_all.gif\"],\n                [this]() { this->selectAll(); })\n                ->setShortcut(QKeySequence::SelectAll);\n\n    addMenuItem(\"Edit\", \"C&lear Console\", imageMap[\"clear_console.gif\"],\n                [this]() { this->clearConsole(); })\n                ->setShortcut(QKeySequence(QString::fromStdString(\"Ctrl+L\")));\n    if (!imageMap.isEmpty()) {\n        addToolbarItem(\"Clear Console\", imageMap[\"clear_console.gif\"],\n                       [this]() { this->clearConsole(); });\n        addToolbarSeparator();\n    }\n\n    // Options menu\n    addMenu(\"&Options\");\n    addMenuItem(\"Options\", \"&Font...\", imageMap[\"font.gif\"],\n                [this]() { this->showFontDialog(); });\n    if (!imageMap.isEmpty()) {\n        addToolbarItem(\"Font...\", imageMap[\"font.gif\"],\n                       [this]() { this->showFontDialog(); });\n    }\n\n    addMenuItem(\"Options\", \"&Background Color...\", imageMap[\"background_color.gif\"],\n                [this]() { this->showColorDialog(/* background */ true); });\n    if (!imageMap.isEmpty()) {\n        addToolbarItem(\"Background Color...\", imageMap[\"background_color.gif\"],\n                       [this]() { this->showColorDialog(/* background */ true); });\n    }\n\n    addMenuItem(\"Options\", \"&Text Color...\", imageMap[\"text_color.gif\"],\n                [this]() { this->showColorDialog(/* background */ false); });\n    if (!imageMap.isEmpty()) {\n        addToolbarItem(\"Text Color...\", imageMap[\"text_color.gif\"],\n                       [this]() { this->showColorDialog(/* background */ false); });\n        addToolbarSeparator();\n    }\n\n    // Help menu\n    addMenu(\"&Help\");\n    addMenuItem(\"Help\", \"&About...\", imageMap[\"about.gif\"],\n                [this]() { this->showAboutDialog(); })\n                ->setShortcut(QKeySequence::HelpContents);\n    if (!imageMap.isEmpty()) {\n        addToolbarItem(\"About...\", imageMap[\"about.gif\"],\n                       [this]() { this->showAboutDialog(); });\n    }\n\n    addMenuItem(\"Help\", \"&Check for Updates\", imageMap[\"check_for_updates.gif\"],\n                [this]() { this->checkForUpdates(); });\n    if (!imageMap.isEmpty()) {\n        addToolbarItem(\"Check for Updates\", imageMap[\"check_for_updates.gif\"],\n                       [this]() { this->checkForUpdates(); });\n    }\n}\n\nvoid GConsoleWindow::_initStreams() {\n    // buffer C-style stderr\n    static char stderrBuf[BUFSIZ + 10] = {'\\0'};\n    std::ios::sync_with_stdio(false);\n    setbuf(stderr, stderrBuf);\n\n    // redirect cin/cout/cerr\n    _cinout_new_buf = new stanfordcpplib::qtgui::ConsoleStreambufQt();\n    _cerr_new_buf = new stanfordcpplib::qtgui::ConsoleStreambufQt(/* isStderr */ true);\n    _cin_old_buf = std::cin.rdbuf(_cinout_new_buf);\n    _cout_old_buf = std::cout.rdbuf(_cinout_new_buf);\n    _cerr_old_buf = std::cerr.rdbuf(_cerr_new_buf);\n}\n\nvoid GConsoleWindow::_initWidgets() {\n    _textArea = new GTextArea();\n    _outputColor = _textArea->getColor();\n\n    // BUGFIX: use OS defaults for BG/FG colors (helps w/ Mac dark mode)\n    _textArea->setBackground(GWindow::getDefaultInteractorBackgroundColorInt());\n    _textArea->setColor(GWindow::getDefaultInteractorTextColorInt());\n    _textArea->setContextMenuEnabled(false);\n    _textArea->setLineWrap(true);\n    _textArea->setFont(getDefaultFont());\n    QTextEdit* rawTextEdit = static_cast<QTextEdit*>(_textArea->getWidget());\n    rawTextEdit->setTabChangesFocus(false);\n    _textArea->setKeyListener([this](GEvent event) {\n        if (event.getEventType() == KEY_PRESSED) {\n            this->processKeyPress(event);\n        } else if (event.getEventType() == KEY_RELEASED\n                   || event.getEventType() == KEY_TYPED) {\n            event.ignore();\n        }\n    });\n    _textArea->setMouseListener([](GEvent event) {\n        // snuff out mouse-based operations:\n        // - popping up context menu by right-clicking\n        // - Linux-style copy/paste operations using selection plus middle-click\n        if (event.getButton() > 1\n                || event.getEventType() == MOUSE_RELEASED) {\n            event.ignore();\n        }\n    });\n    addToRegion(_textArea, \"Center\");\n\n    // tell window to shut down when it is closed\n    setWindowListener([this](GEvent event) {\n        if (event.getEventType() == WINDOW_CLOSING) {\n            shutdown();\n        }\n    });\n\n    setTitle(DEFAULT_WINDOW_TITLE);\n    setCloseOperation(GWindow::CLOSE_HIDE);\n    setLocation(DEFAULT_X, DEFAULT_Y);\n    setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);\n    setVisible(true);\n}\n\n\nGConsoleWindow::~GConsoleWindow() {\n    // TODO: delete?\n    _cinout_new_buf = nullptr;\n    _cerr_new_buf = nullptr;\n    _cin_old_buf = nullptr;\n    _cout_old_buf = nullptr;\n    _cerr_old_buf = nullptr;\n}\n\nvoid GConsoleWindow::checkForUpdates() {\n    GThread::runInNewThreadAsync([this]() {\n        static const std::string CPP_ZIP_VERSION_URL = version::getCppLibraryDocsUrl() + \"CURRENTVERSION_CPPLIB.txt\";\n        std::string currentVersion = version::getCppLibraryVersion();\n\n        GDownloader downloader;\n        std::string latestVersion = trim(downloader.downloadAsString(CPP_ZIP_VERSION_URL));\n\n        if (latestVersion.empty()) {\n            GOptionPane::showMessageDialog(\n                    /* parent  */ getWidget(),\n                    /* message */ \"Unable to look up latest library version from web.\",\n                    /* title   */ \"Network error\",\n                    /* type    */ GOptionPane::MESSAGE_ERROR);\n            return;\n        }\n\n        std::string message;\n        if (currentVersion >= latestVersion) {\n                message = \"This project already has the latest version \\nof the Stanford libraries (\" + currentVersion + \").\";\n        } else {\n                message = \"<html>There is an updated version of the Stanford libraries available.\\n\\n\"\n                   \"This project's library version: \" + currentVersion + \"\\n\"\n                   \"Current newest library version: \" + latestVersion + \"\\n\\n\"\n                   \"Go to <a href=\\\"\" + version::getCppLibraryDocsUrl() + \"\\\">\"\n                   + version::getCppLibraryDocsUrl() + \"</a> to get the new version.</html>\";\n        }\n        GOptionPane::showMessageDialog(\n                    /* parent  */ getWidget(),\n                    /* message */ message);\n    }, \"Check for Updates\");\n}\n\nvoid GConsoleWindow::clearConsole() {\n    std::string msg = \"==================== (console cleared) ====================\";\n    if (_clearEnabled) {\n        // print to standard console (not Stanford graphical console)\n        printf(\"%s\\n\", msg.c_str());\n\n        // clear the graphical console window\n        _coutMutex.lock();\n        _textArea->clearText();\n        _coutMutex.unlock();\n    } else {\n        // don't actually clear the window, just display 'cleared' message on it\n        println(msg);\n    }\n}\n\nvoid GConsoleWindow::clipboardCopy() {\n    std::string selectedText = _textArea->getSelectedText();\n    if (!selectedText.empty()) {\n        GClipboard::set(selectedText);\n    }\n}\n\nvoid GConsoleWindow::clipboardCut() {\n    if (_shutdown || !_promptActive || !ALLOW_RICH_INPUT_EDITING) {\n        return;\n    }\n\n    // if selection is entirely within the user input area, cut out of user input area\n    int userInputStart = getUserInputStart();\n    int userInputEnd   = getUserInputEnd();\n    int selectionStart = _textArea->getSelectionStart();\n    int selectionEnd = _textArea->getSelectionEnd();\n    if (selectionEnd > selectionStart\n            && selectionStart >= userInputStart\n            && selectionEnd <= userInputEnd) {\n        // selection is entirely user input! cut it!\n        QTextFragment frag = getUserInputFragment();\n        if (frag.isValid()) {\n            std::string selectedText = _textArea->getSelectedText();\n            QTextEdit* textArea = static_cast<QTextEdit*>(this->_textArea->getWidget());\n            QTextCursor cursor(textArea->textCursor());\n\n            int indexStart = selectionStart - userInputStart;\n            int selectionLength = _textArea->getSelectionLength();\n            _cinMutex.lockForWrite();\n            _inputBuffer.erase(indexStart, selectionLength);\n            cursor.beginEditBlock();\n            cursor.removeSelectedText();\n            cursor.endEditBlock();\n            textArea->setTextCursor(cursor);\n            _cinMutex.unlock();\n            GClipboard::set(selectedText);\n        }\n    }\n}\n\nvoid GConsoleWindow::clipboardPaste() {\n    if (_shutdown) {\n        return;\n    }\n\n    _textArea->clearSelection();\n    if (!isCursorInUserInputArea()) {\n        _textArea->moveCursorToEnd();\n    }\n\n    std::string clipboardText = GClipboard::get();\n    for (int i = 0; i < (int) clipboardText.length(); i++) {\n        if (clipboardText[i] == '\\r') {\n            continue;\n        } else if (clipboardText[i] == '\\n') {\n            processUserInputEnterKey();\n        } else {\n            processUserInputKey(clipboardText[i]);\n        }\n    }\n}\n\nvoid GConsoleWindow::close() {\n    shutdown();\n    GWindow::close();   // call super\n}\n\nvoid GConsoleWindow::compareOutput(const std::string& filename) {\n    std::string expectedOutput;\n    if (!filename.empty() && fileExists(filename)) {\n        expectedOutput = readEntireFile(filename);\n    } else {\n        expectedOutput = \"File not found: \" + filename;\n    }\n\n    std::string studentOutput = getAllOutput();\n\n    GDiffGui::showDialog(\"Expected Output\", expectedOutput,\n                         \"Your Output\", studentOutput,\n                         /* showCheckBoxes */ false);\n}\n\nstd::string GConsoleWindow::getAllOutput() const {\n    GConsoleWindow* thisHack = const_cast<GConsoleWindow*>(this);\n    thisHack->_coutMutex.lock();\n    std::string allOutput = thisHack->_allOutputBuffer.str();\n    thisHack->_coutMutex.unlock();\n    return allOutput;\n}\n\nstd::string GConsoleWindow::getBackground() const {\n    return _textArea->getBackground();\n}\n\nint GConsoleWindow::getBackgroundInt() const {\n    return _textArea->getBackgroundInt();\n}\n\nstd::string GConsoleWindow::getColor() const {\n    return getOutputColor();\n}\n\nint GConsoleWindow::getColorInt() const {\n    return GColor::convertColorToRGB(getOutputColor());\n}\n\nstd::string GConsoleWindow::getErrorColor() const {\n    if (!_errorColor.empty()) {\n        return _errorColor;\n    } else {\n        return GWindow::isDarkMode() ? DEFAULT_ERROR_COLOR_DARK_MODE : DEFAULT_ERROR_COLOR;\n    }\n}\n\nstd::string GConsoleWindow::getFont() const {\n    return _textArea->getFont();\n}\n\nstd::string GConsoleWindow::getForeground() const {\n    return getOutputColor();\n}\n\nint GConsoleWindow::getForegroundInt() const {\n    return GColor::convertColorToRGB(getOutputColor());\n}\n\nstd::string GConsoleWindow::getOutputColor() const {\n    return _outputColor.empty() ? GWindow::getDefaultInteractorTextColor() : _outputColor;\n}\n\nstd::string GConsoleWindow::getUserInputColor() const {\n    if (!_userInputColor.empty()) {\n        return _userInputColor;\n    } else {\n        return GWindow::isDarkMode() ? DEFAULT_USER_INPUT_COLOR_DARK_MODE : DEFAULT_USER_INPUT_COLOR;\n    }\n}\n\nQTextFragment GConsoleWindow::getUserInputFragment() const {\n    if (!_inputBuffer.empty()) {\n        QTextEdit* textArea = static_cast<QTextEdit*>(this->_textArea->getWidget());\n        QTextBlock block = textArea->document()->end().previous();\n        while (block.isValid()) {\n            QTextBlock::iterator it;\n            for (it = block.begin(); !(it.atEnd()); ++it) {\n                QTextFragment frag = it.fragment();\n                if (frag.isValid()) {\n                    std::string fragText = frag.text().toStdString();\n\n                    // see if it is the given user input\n                    if (fragText == _inputBuffer) {\n                        return frag;\n                    }\n                }\n            }\n            block = block.previous();\n        }\n    }\n\n    // didn't find the fragment; this will return an 'invalid' fragment\n    QTextFragment notFound;\n    return notFound;\n}\n\nint GConsoleWindow::getUserInputStart() const {\n    QTextFragment frag = getUserInputFragment();\n    if (frag.isValid()) {\n        return frag.position();\n    } else if (_promptActive) {\n        // at end of text\n        return (int) _textArea->getText().length();\n    } else {\n        return -1;\n    }\n}\n\nint GConsoleWindow::getUserInputEnd() const {\n    QTextFragment frag = getUserInputFragment();\n    if (frag.isValid()) {\n        return frag.position() + frag.length();\n    } else if (_promptActive) {\n        // at end of text\n        return (int) _textArea->getText().length();\n    } else {\n        return -1;\n    }\n}\n\nbool GConsoleWindow::hasInputScript() const {\n    return !_inputScript.isEmpty();\n}\n\nbool GConsoleWindow::isClearEnabled() const {\n    return _clearEnabled;\n}\n\nbool GConsoleWindow::isCursorInUserInputArea() const {\n    int cursorPosition = _textArea->getCursorPosition();\n    int userInputStart = getUserInputStart();\n    int userInputEnd   = getUserInputEnd();\n    return _promptActive\n            && userInputStart <= cursorPosition\n            && cursorPosition <= userInputEnd;\n}\n\nbool GConsoleWindow::isEcho() const {\n    return _echo;\n}\n\nbool GConsoleWindow::isLocationSaved() const {\n    return _locationSaved;\n}\n\nbool GConsoleWindow::isLocked() const {\n    return _locked;\n}\n\nbool GConsoleWindow::isSelectionInUserInputArea() const {\n    int userInputStart = getUserInputStart();\n    int userInputEnd   = getUserInputEnd();\n    int selectionStart = _textArea->getSelectionStart();\n    int selectionEnd = _textArea->getSelectionEnd();\n    return userInputStart >= 0 && userInputEnd >= 0\n            && selectionStart >= userInputStart\n            && selectionEnd <= userInputEnd;\n}\n\nvoid GConsoleWindow::loadConfiguration() {\n    std::string configFile = getTempDirectory() + \"/\" + CONFIG_FILE_NAME;\n    if (fileExists(configFile)) {\n        std::ifstream infile;\n        infile.open(configFile.c_str());\n        if (!infile) {\n                return;\n        }\n        std::string line;\n        while (getline(infile, line)) {\n            line = trim(line);\n            if (line.empty() || line[0] == '#') {\n                continue;\n            }\n            Vector<std::string> tokens = stringSplit(line, \"=\");\n            if (tokens.size() < 2) {\n                continue;\n            }\n            std::string key   = toLowerCase(tokens[0]);\n            std::string value = tokens[1];\n            if (key == \"font\") {\n                setFont(value);\n            } else if (key == \"background\") {\n                setBackground(value);\n            } else if (key == \"foreground\") {\n                setForeground(value);\n            }\n        }\n    }\n}\n\nvoid GConsoleWindow::loadInputScript(int number) {\n    std::string sep = getDirectoryPathSeparator();\n    static std::initializer_list<std::string> directoriesToCheck {\n            \".\",\n            \".\" + sep + \"input\",\n            \".\" + sep + \"output\"\n    };\n    std::string inputFile;\n    std::string expectedOutputFile;\n    for (std::string dir : directoriesToCheck) {\n        if (!isDirectory(dir)) {\n            continue;\n        }\n\n        for (std::string filename : listDirectory(dir)) {\n            filename = dir + sep + filename;\n            if (inputFile.empty()\n                    && stringContains(filename, \"input-\" + std::to_string(number))\n                    && endsWith(filename, \".txt\")) {\n                inputFile = filename;\n            } else if (expectedOutputFile.empty()\n                       && stringContains(filename, \"expected-output-\" + std::to_string(number))\n                       && endsWith(filename, \".txt\")) {\n                expectedOutputFile = filename;\n            }\n        }\n    }\n\n    if (!_shutdown && !inputFile.empty()) {\n        loadInputScript(inputFile);\n        pause(50);\n    }\n    if (!expectedOutputFile.empty()) {\n        GThread::runInNewThreadAsync([this, expectedOutputFile]() {\n            GThread* currentThread = GThread::getCurrentThread();\n            GThread* studentThread = GThread::getStudentThread();\n            if (!studentThread) {\n                return;\n            }\n            const long MAX_TIME_TO_WAIT = 20000;\n            long timeWaited = 0;\n            while (timeWaited < MAX_TIME_TO_WAIT && studentThread->isRunning()) {\n                currentThread->sleep(50);\n                timeWaited += 50;\n            }\n            if (!studentThread->isRunning()) {\n                compareOutput(expectedOutputFile);\n            }\n        }, \"Compare Output\");\n    }\n}\n\nvoid GConsoleWindow::loadInputScript(const std::string& filename) {\n    if (_shutdown) {\n        return;\n    }\n    if (!filename.empty() && fileExists(filename)) {\n        std::ifstream infile;\n        infile.open(filename.c_str());\n        Vector<std::string> lines;\n        readEntireFile(infile, lines);\n\n        _cinQueueMutex.lockForWrite();\n        _inputScript.clear();\n        for (std::string line : lines) {\n            _inputScript.enqueue(line);\n        }\n        _cinQueueMutex.unlock();\n    }\n}\n\nvoid GConsoleWindow::print(const std::string& str, bool isStdErr) {\n    if (_echo) {\n        fflush(isStdErr ? stdout : stderr);\n        fflush(isStdErr ? stderr : stdout);\n        fprintf(isStdErr ? stderr : stdout, \"%s\", str.c_str());\n        if (str.find(\"\\n\") != std::string::npos) {\n            fflush(isStdErr ? stderr : stdout);\n            fflush(isStdErr ? stdout : stderr);\n        }\n    }\n\n    // clean up line breaks (remove \\r)\n    std::string strToPrint = str;\n    stringReplaceInPlace(strToPrint, \"\\r\\n\", \"\\n\");\n    stringReplaceInPlace(strToPrint, \"\\r\", \"\\n\");\n\n    GThread::runOnQtGuiThread([this, strToPrint, isStdErr]() {\n        _coutMutex.lock();\n        _allOutputBuffer << strToPrint;\n        if (!this->_textArea) {\n            return;\n        }\n        this->_textArea->setEventsEnabled(false);\n        this->_textArea->appendFormattedText(strToPrint, isStdErr ? getErrorColor() : getOutputColor());\n        this->_textArea->moveCursorToEnd();\n        this->_textArea->scrollToBottom();\n        this->_textArea->setEventsEnabled(true);\n        _coutMutex.unlock();\n    });\n}\n\nvoid GConsoleWindow::println(bool isStdErr) {\n    print(\"\\n\", isStdErr);\n}\n\nvoid GConsoleWindow::println(const std::string& str, bool isStdErr) {\n    print(str + \"\\n\", isStdErr);\n}\n\nvoid GConsoleWindow::processKeyPress(GEvent event) {\n    char key = event.getKeyChar();\n    int keyCode = event.getKeyCode();\n\n    if (event.isCtrlOrCommandKeyDown()) {\n        if (keyCode == Qt::Key_Plus || keyCode == Qt::Key_Equal) {\n            // increase font size\n            event.ignore();\n            QFont font = GFont::toQFont(_textArea->getFont());\n            if (font.pointSize() + 1 <= MAX_FONT_SIZE) {\n                font.setPointSize(font.pointSize() + 1);\n                setFont(GFont::toFontString(font));\n            }\n        } else if (keyCode == Qt::Key_Minus) {\n            // decrease font size\n            event.ignore();\n            QFont font = GFont::toQFont(_textArea->getFont());\n            if (font.pointSize() - 1 >= MIN_FONT_SIZE) {\n                font.setPointSize(font.pointSize() - 1);\n                setFont(GFont::toFontString(font));\n            }\n        } else if (keyCode == Qt::Key_Insert) {\n            // Ctrl+Ins => Copy\n            event.ignore();\n            clipboardCopy();\n        } else if (keyCode == Qt::Key_0) {\n            // normalize font size\n            event.ignore();\n            setFont(DEFAULT_FONT_FAMILY + \"-\" + std::to_string(DEFAULT_FONT_SIZE));\n        } else if (keyCode >= Qt::Key_1 && keyCode <= Qt::Key_9) {\n            // load input script 1-9\n            loadInputScript(keyCode - Qt::Key_0);\n        } else if (keyCode == Qt::Key_C) {\n            event.ignore();\n            clipboardCopy();\n        } else if (event.isCtrlKeyDown() && keyCode == Qt::Key_D) {\n            event.ignore();\n            processEof();\n        } else if (keyCode == Qt::Key_L) {\n            event.ignore();\n            clearConsole();\n        } else if (keyCode == Qt::Key_Q || keyCode == Qt::Key_W) {\n            event.ignore();\n            close();\n        } else if (keyCode == Qt::Key_S) {\n            event.ignore();\n            if (event.isShiftKeyDown()) {\n                saveAs();\n            } else {\n                save();\n            }\n        } else if (keyCode == Qt::Key_V) {\n            event.ignore();\n            clipboardPaste();\n        } else if (keyCode == Qt::Key_X) {\n            event.ignore();\n            clipboardCut();\n        }\n    }\n\n    if (_shutdown) {\n        return;\n    }\n\n    if (event.isCtrlOrCommandKeyDown() || event.isAltKeyDown()) {\n        // system hotkey; let the normal keyboard handler process this event\n        event.ignore();\n        return;\n    }\n\n    switch (keyCode) {\n        case GEvent::PAGE_UP_KEY:\n        case GEvent::PAGE_DOWN_KEY:\n            // don't ignore event\n            break;\n        case GEvent::BACKSPACE_KEY: {\n            event.ignore();\n            processBackspace(keyCode);\n            break;\n        }\n        case GEvent::DELETE_KEY: {\n            event.ignore();\n            if (event.isShiftKeyDown()) {\n                clipboardCut();   // Shift+Del => Cut\n            } else {\n                processBackspace(keyCode);\n            }\n            break;\n        }\n        case GEvent::INSERT_KEY: {\n            event.ignore();\n            if (event.isShiftKeyDown()) {\n                clipboardPaste();   // Shift+Ins => Paste\n            }\n            break;\n        }\n        case GEvent::HOME_KEY:\n            if (ALLOW_RICH_INPUT_EDITING) {\n                // move to start of input buffer\n                if (_promptActive) {\n                    event.ignore();\n                    int start = getUserInputStart();\n                    if (start >= 0) {\n                        _textArea->setCursorPosition(\n                                start,\n                                /* keepAnchor */ event.isShiftKeyDown() && isCursorInUserInputArea());\n                    } else {\n                        _textArea->moveCursorToEnd();\n                    }\n                }\n            } else {\n                event.ignore();\n            }\n            break;\n        case GEvent::END_KEY:\n            if (ALLOW_RICH_INPUT_EDITING) {\n                // move to end of input buffer\n                if (_promptActive) {\n                    event.ignore();\n                    int end = getUserInputEnd();\n                    if (end >= 0) {\n                        _textArea->setCursorPosition(\n                                end,\n                                /* keepAnchor */ event.isShiftKeyDown() && isCursorInUserInputArea());\n                    } else {\n                        _textArea->moveCursorToEnd();\n                    }\n                }\n            } else {\n                event.ignore();\n            }\n            break;\n        case GEvent::LEFT_ARROW_KEY: {\n            // bound within user input area if a prompt is active\n            if (ALLOW_RICH_INPUT_EDITING) {\n                if (isCursorInUserInputArea()) {\n                    int cursorPosition = _textArea->getCursorPosition();\n                    int userInputStart = getUserInputStart();\n                    if (cursorPosition <= userInputStart) {\n                        event.ignore();\n                        if (!event.isShiftKeyDown()) {\n                            _textArea->clearSelection();\n                        }\n                    }\n                }\n            } else {\n                event.ignore();\n            }\n            break;\n        }\n        case GEvent::RIGHT_ARROW_KEY:\n            // bound within user input area if a prompt is active\n            if (ALLOW_RICH_INPUT_EDITING) {\n                if (isCursorInUserInputArea()) {\n                    int cursorPosition = _textArea->getCursorPosition();\n                    int userInputEnd   = getUserInputEnd();\n                    if (cursorPosition >= userInputEnd) {\n                        event.ignore();\n                        if (!event.isShiftKeyDown()) {\n                            _textArea->clearSelection();\n                        }\n                    }\n                }\n            } else {\n                event.ignore();\n            }\n            break;\n        case GEvent::UP_ARROW_KEY:\n            if (isCursorInUserInputArea()) {\n                event.ignore();\n                processCommandHistory(/* delta */ -1);\n            }\n            break;\n        case GEvent::DOWN_ARROW_KEY:\n            if (isCursorInUserInputArea()) {\n                event.ignore();\n                processCommandHistory(/* delta */ 1);\n            }\n            break;\n        case GEvent::TAB_KEY:\n            // TODO: tab completion?\n        case GEvent::CLEAR_KEY:\n            break;\n        case GEvent::F1_KEY: {\n            event.ignore();\n            showAboutDialog();\n            break;\n        }\n        case GEvent::F2_KEY:\n        case GEvent::F3_KEY:\n        case GEvent::F4_KEY:\n        case GEvent::F5_KEY:\n        case GEvent::F6_KEY:\n        case GEvent::F7_KEY:\n        case GEvent::F8_KEY:\n        case GEvent::F9_KEY:\n        case GEvent::F10_KEY:\n        case GEvent::F11_KEY:\n        case GEvent::F12_KEY:\n        case GEvent::HELP_KEY: {\n            // various control/modifier keys: do nothing / consume event\n            event.ignore();\n            break;\n        }\n        case GEvent::SHIFT_KEY:\n        case GEvent::CTRL_KEY:\n        case GEvent::ALT_KEY:\n        case GEvent::PAUSE_KEY:\n        case GEvent::CAPS_LOCK_KEY:\n        case GEvent::ESCAPE_KEY:\n        case GEvent::NUM_LOCK_KEY:\n        case GEvent::SCROLL_LOCK_KEY:\n        case GEvent::PRINT_SCREEN_KEY:\n        case GEvent::META_KEY:\n        case GEvent::WINDOWS_KEY:\n        case GEvent::MENU_KEY: {\n            // various other control/modifier keys: let OS have the event (don't call ignore())\n            break;\n        }\n        case GEvent::RETURN_KEY:\n        case GEvent::ENTER_KEY: {\n            // \\n end line\n            event.ignore();\n            processUserInputEnterKey();\n            break;\n        }\n        default: {\n            event.ignore();\n            processUserInputKey(key);\n            break;\n        }\n    }\n}\n\nvoid GConsoleWindow::processBackspace(int key) {\n    if (_shutdown || !_promptActive) {\n        return;\n    }\n\n    // check whether it is a backspace or a delete\n    bool isBackspace = key == GEvent::BACKSPACE_KEY /* TODO: or computer is Mac */;\n\n    _cinMutex.lockForWrite();\n    if (!_inputBuffer.empty()) {\n        // remove last char from onscreen text editor:\n        // - find last blue area\n        QTextFragment frag = getUserInputFragment();\n        if (frag.isValid()) {\n            // remove last char from onscreen document fragment\n            QTextEdit* textArea = static_cast<QTextEdit*>(this->_textArea->getWidget());\n            QTextCursor cursor(textArea->textCursor());\n\n            int oldCursorPosition = cursor.position();\n            int indexToDelete = (int) _inputBuffer.length() - 1;\n            int userInputIndexMin = frag.position();\n            int userInputIndexMax = frag.position() + frag.length() - (isBackspace ? 0 : 1);\n\n            if (oldCursorPosition >= userInputIndexMin && oldCursorPosition < userInputIndexMax) {\n                // cursor is inside the user input fragment;\n                // figure out which character it's on so we can delete it\n                indexToDelete = oldCursorPosition - frag.position() - (isBackspace ? 1 : 0);\n            } else {\n                // cursor is outside of the user input fragment; move it there\n                cursor.setPosition(frag.position() + frag.length());\n            }\n\n            if (indexToDelete >= 0 && indexToDelete < (int) _inputBuffer.length()) {\n                if (isBackspace || indexToDelete == (int) _inputBuffer.length() - 1) {\n                    cursor.deletePreviousChar();\n                } else {\n                    cursor.deleteChar();   // Delete\n                }\n\n                // remove last char from internal input buffer\n                _inputBuffer.erase(indexToDelete, 1);\n            }\n        }\n    }\n    _cinMutex.unlock();\n}\n\nvoid GConsoleWindow::processCommandHistory(int delta) {\n    if (_shutdown) {\n        return;\n    }\n    _cinMutex.lockForRead();\n    std::string oldCommand = \"\";\n    _commandHistoryIndex += delta;\n    _commandHistoryIndex = std::max(-1, _commandHistoryIndex);\n    _commandHistoryIndex = std::min(_commandHistoryIndex, _inputCommandHistory.size());\n    if (0 <= _commandHistoryIndex && _commandHistoryIndex < _inputCommandHistory.size()) {\n        oldCommand = _inputCommandHistory[_commandHistoryIndex];\n    }\n    _cinMutex.unlock();\n    setUserInput(oldCommand);\n}\n\nvoid GConsoleWindow::processEof() {\n    if (_shutdown) {\n        return;\n    }\n    // only set EOF if input buffer is empty; this is the behavior on most *nix consoles\n    if (_inputBuffer.empty()) {\n        std::cin.setstate(std::ios_base::eofbit);\n    }\n}\n\nvoid GConsoleWindow::processUserInputEnterKey() {\n    if (_shutdown) {\n        return;\n    }\n    _cinMutex.lockForWrite();\n    _cinQueueMutex.lockForWrite();\n    _inputLines.enqueue(_inputBuffer);\n    _inputCommandHistory.add(_inputBuffer);\n    _commandHistoryIndex = _inputCommandHistory.size();\n    _cinQueueMutex.unlock();\n    _allOutputBuffer << _inputBuffer << std::endl;\n    _inputBuffer = \"\";   // clear input buffer\n    this->_textArea->appendFormattedText(\"\\n\", getUserInputColor());\n    _cinMutex.unlock();\n}\n\nvoid GConsoleWindow::processUserInputKey(int key) {\n    if (_shutdown) {\n        return;\n    }\n    if (key != '\\0' && isprint(key)) {\n        // normal key: append to user input buffer\n        _cinMutex.lockForWrite();\n\n        std::string keyStr = charToString((char) key);\n\n        bool inserted = false;\n        if (ALLOW_RICH_INPUT_EDITING && isCursorInUserInputArea()) {\n            QTextFragment frag = getUserInputFragment();\n            if (frag.isValid()) {\n                QTextEdit* textArea = static_cast<QTextEdit*>(this->_textArea->getWidget());\n                QTextCursor cursor(textArea->textCursor());\n\n                // BUGFIX: if there is any selected text, remove it first\n                int fragStart = frag.position();\n                int selectionStart = cursor.selectionStart() - fragStart;\n                int selectionEnd = cursor.selectionEnd() - fragStart;\n                if (selectionEnd > selectionStart\n                        && selectionStart >= 0\n                        && selectionEnd <= (int) _inputBuffer.length()) {\n                    cursor.removeSelectedText();\n                    _inputBuffer.erase(selectionStart, selectionEnd - selectionStart);\n                }\n\n                int cursorPosition = cursor.position();\n                int indexToInsert = cursorPosition - frag.position();\n                if (indexToInsert == 0) {\n                    // special case for inserting at start of fragment.\n                    // example: fragment is \"abcde\", cursor at start, user types \"x\".\n                    // if we just insert the \"x\" in the document, it won't be part of\n                    // the same fragment and won't have the blue bold format.\n                    // So what we do is temporarily insert it after the first character,\n                    // then delete the first character, so that everything is inside\n                    // the formatted span.\n                    // \"abcde\"\n                    //  ^\n                    //   ^          move right by 1\n                    // \"axabcde\"    insert \"xa\" at index 1\n                    //     ^\n                    //   ^          move left by 2\n                    // \"xabcde\"     delete previous character \"a\" from index 0\n                    //  ^\n                    //   ^          move right by 1\n                    cursor.beginEditBlock();\n\n                    cursor.movePosition(QTextCursor::Right, QTextCursor::MoveAnchor, 1);             // move to index 1\n                    cursor.insertText(QString::fromStdString(keyStr + _inputBuffer.substr(0, 1)));   // insert new char + old first char\n                    cursor.movePosition(QTextCursor::Left, QTextCursor::MoveAnchor, 2);              // delete old copy of first char\n                    cursor.deletePreviousChar();\n                    cursor.movePosition(QTextCursor::Right, QTextCursor::MoveAnchor, 1);             // move to index 1\n                    cursor.endEditBlock();\n                    textArea->setTextCursor(cursor);\n                } else {\n                    cursor.beginEditBlock();\n                    cursor.insertText(QString::fromStdString(keyStr));\n                    cursor.endEditBlock();\n                    textArea->setTextCursor(cursor);\n                }\n                _inputBuffer.insert(indexToInsert, keyStr);\n                inserted = true;\n            }\n        }\n\n        if (!inserted) {\n            // append to end of buffer/fragment\n            _inputBuffer += keyStr;\n            // display in blue highlighted text\n            this->_textArea->appendFormattedText(keyStr, getUserInputColor(), \"*-*-Bold\");\n        }\n\n        _cinMutex.unlock();\n    }\n}\n\nstd::string GConsoleWindow::readLine() {\n    // TODO: threads/locking\n    // wait for a line to be available in queue\n    std::string line;\n    if (_shutdown) {\n        return line;\n    }\n\n    this->_textArea->moveCursorToEnd();\n    this->_textArea->scrollToBottom();\n    this->toFront();   // move window to front on prompt for input\n    this->_textArea->requestFocus();\n\n    _cinMutex.lockForWrite();\n    _promptActive = true;\n    _cinMutex.unlock();\n\n    while (!_shutdown && !std::cin.eof()) {\n        bool lineRead = false;\n        if (!_inputScript.isEmpty()) {\n            _cinQueueMutex.lockForWrite();\n            line = _inputScript.dequeue();\n            lineRead = true;\n            _cinQueueMutex.unlock();\n\n            // echo user input, as if the user had just typed it\n            GThread::runOnQtGuiThreadAsync([this, line]() {\n                _coutMutex.lock();\n                _allOutputBuffer << line << std::endl;\n                _textArea->appendFormattedText(line + \"\\n\", getUserInputColor(), \"*-*-Bold\");\n                _coutMutex.unlock();\n            });\n        }\n\n        if (!_inputLines.isEmpty()) {\n            _cinQueueMutex.lockForWrite();\n            if (!_inputLines.isEmpty()) {\n                line = _inputLines.dequeue();\n                lineRead = true;\n            }\n\n            _cinQueueMutex.unlock();\n        }\n\n        if (lineRead) {\n            break;\n        } else {\n            sleep(20);\n        }\n    }\n\n    _cinMutex.lockForWrite();\n    _promptActive = false;\n    _cinMutex.unlock();\n    this->_textArea->scrollToBottom();\n\n    if (_echo) {\n        fprintf(stdout, \"%s\\n\", line.c_str());\n    }\n    return line;\n}\n\nvoid GConsoleWindow::save() {\n    saveAs(_lastSaveFileName);\n}\n\nvoid GConsoleWindow::saveAs(const std::string& filename) {\n    std::string filenameToUse;\n    if (filename.empty()) {\n        filenameToUse = GFileChooser::showSaveDialog(\n                /* parent */ this->getWidget(),\n                /* title */ \"\",\n                getHead(_lastSaveFileName));\n    } else {\n        filenameToUse = filename;\n    }\n    if (filenameToUse.empty()) {\n        return;\n    }\n\n    std::string consoleText = _textArea->getText();\n    writeEntireFile(filenameToUse, consoleText);\n    _lastSaveFileName = filenameToUse;\n}\n\nvoid GConsoleWindow::saveConfiguration(bool prompt) {\n    if (prompt && !GOptionPane::showConfirmDialog(\n            /* parent  */  getWidget(),\n            /* message */  \"Make this the default for future console windows?\",\n            /* title   */  \"Save configuration?\")) {\n        return;\n    }\n    std::string configFile = getTempDirectory() + \"/\" + CONFIG_FILE_NAME;\n    std::string configText = \"# Stanford C++ library configuration file\\n\"\n            \"background=\" + _textArea->getBackground() + \"\\n\"\n            \"foreground=\" + getOutputColor() + \"\\n\"\n            \"font=\" + _textArea->getFont() + \"\\n\";\n    writeEntireFile(configFile, configText);\n}\n\nvoid GConsoleWindow::selectAll() {\n    _textArea->selectAll();\n}\n\nvoid GConsoleWindow::setBackground(int color) {\n    GWindow::setBackground(color);   // call super\n    _textArea->setBackground(color);\n}\n\nvoid GConsoleWindow::setBackground(const std::string& color) {\n    GWindow::setBackground(color);   // call super\n    _textArea->setBackground(color);\n}\n\nvoid GConsoleWindow::setClearEnabled(bool clearEnabled) {\n    if (_locked || _shutdown) {\n        return;\n    }\n    _clearEnabled = clearEnabled;\n}\n\nvoid GConsoleWindow::setConsoleSize(double width, double height) {\n    // TODO: base on text area's preferred size / packing window\n    // _textArea->setPreferredSize(width, height);\n    // pack();\n    setSize(width, height);\n}\n\nvoid GConsoleWindow::setColor(int color) {\n    setOutputColor(color);\n}\n\nvoid GConsoleWindow::setColor(const std::string& color) {\n    setOutputColor(color);\n}\n\nvoid GConsoleWindow::setEcho(bool echo) {\n    if (_locked || _shutdown) {\n        return;\n    }\n    _echo = echo;\n}\n\nvoid GConsoleWindow::setFont(const QFont& font) {\n    GWindow::setFont(font);   // call super\n    _textArea->setFont(font);\n}\n\nvoid GConsoleWindow::setFont(const std::string& font) {\n    GWindow::setFont(font);   // call super\n    _textArea->setFont(font);\n}\n\nvoid GConsoleWindow::setForeground(int color) {\n    setOutputColor(color);\n}\n\nvoid GConsoleWindow::setForeground(const std::string& color) {\n    setOutputColor(color);\n}\n\nvoid GConsoleWindow::setLocationSaved(bool locationSaved) {\n    _locationSaved = locationSaved;\n}\n\nvoid GConsoleWindow::setLocked(bool locked) {\n    _locked = locked;\n}\n\nvoid GConsoleWindow::setErrorColor(const std::string& errorColor) {\n    _errorColor = errorColor;\n}\n\nvoid GConsoleWindow::setOutputColor(int rgb) {\n    setOutputColor(GColor::convertRGBToColor(rgb));\n}\n\nvoid GConsoleWindow::setOutputColor(const std::string& outputColor) {\n    _outputColor = outputColor;\n    _textArea->setForeground(outputColor);\n    if (_shutdown) {\n        return;\n    }\n\n    // go through any past fragments and recolor them to this color\n\n    // select all previous text and change its color\n    // (BUG?: also changes user input text to be that color; desired?)\n    QTextEdit* textArea = static_cast<QTextEdit*>(this->_textArea->getWidget());\n    QTextCursor cursor = textArea->textCursor();\n    cursor.beginEditBlock();\n    cursor.setPosition(0);\n    QTextCharFormat format = cursor.charFormat();\n    cursor.movePosition(QTextCursor::End, QTextCursor::KeepAnchor);\n    format.setForeground(QBrush(GColor::toQColor(outputColor)));\n    textArea->setTextCursor(cursor);\n    cursor.setCharFormat(format);\n    cursor.endEditBlock();\n    _textArea->moveCursorToEnd();\n}\n\nvoid GConsoleWindow::setSize(double width, double height) {\n    if (isHighDpiScalingEnabled() && isHighDensityScreen()) {\n        double ratio = getScreenDpiScaleRatio();\n        width = std::min(getScreenWidth(), width * ratio);\n        height = std::min(getScreenHeight(), height * ratio);;\n    }\n\n    // call super\n    GWindow::setSize(width, height);\n}\n\nvoid GConsoleWindow::setUserInput(const std::string& userInput) {\n    if (_shutdown) {\n        return;\n    }\n    _cinMutex.lockForWrite();\n    QTextEdit* textArea = static_cast<QTextEdit*>(_textArea->getWidget());\n\n    // delete any current user input\n    QTextFragment frag = getUserInputFragment();\n    if (frag.isValid()) {\n        QTextCursor cursor = textArea->textCursor();\n        cursor.beginEditBlock();\n        cursor.setPosition(frag.position(), QTextCursor::MoveAnchor);\n        cursor.movePosition(QTextCursor::Right, QTextCursor::KeepAnchor, frag.length());\n        cursor.removeSelectedText();\n        cursor.endEditBlock();\n        textArea->setTextCursor(cursor);\n    }\n    _inputBuffer.clear();\n    _cinMutex.unlock();\n\n    // insert the given user input\n    for (int i = 0; i < (int) userInput.length(); i++) {\n        processUserInputKey(userInput[i]);\n    }\n}\n\nvoid GConsoleWindow::setUserInputColor(const std::string& userInputColor) {\n    _userInputColor = userInputColor;\n}\n\nvoid GConsoleWindow::showAboutDialog() {\n    // this text roughly matches that from old spl.jar message\n    static const std::string ABOUT_MESSAGE =\n            \"<html><p>\"\n            \"Stanford C++ Library version <b>\" + version::getCppLibraryVersion() + \"</b><br>\\n\"\n            \"<br>\\n\"\n            \"Libraries originally written by <b>Eric Roberts</b>,<br>\\n\"\n            \"with assistance from Julie Zelenski, Keith Schwarz, et al.<br>\\n\"\n            \"This version of the library is unofficially maintained by <b>Marty Stepp</b>.<br>\\n\"\n            \"<br>\\n\"\n            \"See <a href=\\\"\" + version::getCppLibraryDocsUrl() + \"\\\">\" + version::getCppLibraryDocsUrl() + \"</a> for documentation.\"\n            \"</p></html>\";\n    GOptionPane::showMessageDialog(\n                /* parent */   getWidget(),\n                /* message */  ABOUT_MESSAGE,\n                /* title */    \"About Stanford C++ Library\",\n                /* type */     GOptionPane::MESSAGE_ABOUT);\n}\n\nvoid GConsoleWindow::showColorDialog(bool background) {\n    std::string color = GColorChooser::showDialog(\n                /* parent */   getWidget(),\n                /* title */    \"\",\n                /* initial */  background ? _textArea->getBackground() : _textArea->getForeground());\n    if (!color.empty()) {\n        if (background) {\n            setBackground(color);\n        } else {\n            setOutputColor(color);\n        }\n        saveConfiguration();   // prompt to save configuration\n    }\n}\n\nvoid GConsoleWindow::showCompareOutputDialog() {\n    std::string filename = GFileChooser::showOpenDialog(\n                /* parent */ getWidget(),\n                /* title  */ \"Select an expected output file\");\n    if (!filename.empty() && fileExists(filename)) {\n        compareOutput(filename);\n    }\n}\n\nvoid GConsoleWindow::showFontDialog() {\n    std::string font = GFontChooser::showDialog(\n                /* parent */ getWidget(),\n                /* title  */ \"\",\n                /* initialFont */ _textArea->getFont());\n    if (!font.empty()) {\n        _textArea->setFont(font);\n        saveConfiguration();   // prompt to save configuration\n    }\n}\n\nvoid GConsoleWindow::showInputScriptDialog() {\n    if (_shutdown) {\n        return;\n    }\n    std::string filename = GFileChooser::showOpenDialog(\n                /* parent */ getWidget(),\n                /* title  */ \"Select an input script file\");\n    if (!filename.empty() && fileExists(filename)) {\n        loadInputScript(filename);\n    }\n}\n\nvoid GConsoleWindow::showPrintDialog() {\n    // TODO\n}\n\nvoid GConsoleWindow::shutdown() {\n    const std::string PROGRAM_COMPLETED_TITLE_SUFFIX = \" [completed]\";\n    _shutdown = true;\n    std::cout.flush();\n    std::cerr.flush();\n\n    // restore old cin, cout, cerr\n    if (_cin_old_buf) {\n        _coutMutex.lock();\n        std::cin.rdbuf(_cin_old_buf);\n        std::cout.rdbuf(_cout_old_buf);\n        std::cerr.rdbuf(_cerr_old_buf);\n        _cin_old_buf = nullptr;\n        _cout_old_buf = nullptr;\n        _cerr_old_buf = nullptr;\n        std::cout.flush();\n        std::cerr.flush();\n        _coutMutex.unlock();\n    }\n\n    _textArea->setEditable(false);\n    std::string title = getTitle();\n    if (title.find(PROGRAM_COMPLETED_TITLE_SUFFIX) == std::string::npos) {\n        setTitle(title + PROGRAM_COMPLETED_TITLE_SUFFIX);\n    }\n\n    // TODO: disable some menu items\n}\n\n// global functions used by ConsoleStreambufQt\n\nnamespace stanfordcpplib {\nnamespace qtgui {\n\nvoid endLineConsoleQt(bool isStderr) {\n    GConsoleWindow::instance()->println(isStderr);\n}\n\nstd::string getLineConsoleQt() {\n    return GConsoleWindow::instance()->readLine();\n}\n\nvoid putConsoleQt(const std::string& str, bool isStderr) {\n    GConsoleWindow::instance()->print(str, isStderr);\n}\n\n} // namespace qtgui\n} // namespace stanfordcpplib\n\n/*\n * File: gevent.cpp\n * ----------------\n *\n * @author Marty Stepp\n * @version 2018/08/23\n * - renamed to gevent.cpp to replace Java version\n * @version 2018/07/06\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"gevent.h\"\n#include <iostream>\n#include <sys/time.h>\n#define INTERNAL_INCLUDE 1\n#include \"ginteractor.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#undef INTERNAL_INCLUDE\n\nstatic void __emptyEventListener(GEvent) {\n    // empty\n}\n\nstatic void __logEventListener(GEvent event) {\n    std::cout << \"log event: \" << event << std::endl;\n}\n\nGEventListener GEvent::EMPTY_EVENT_LISTENER = __emptyEventListener;\nGEventListener GEvent::LOG_EVENT = __logEventListener;\n\n\nGEvent::GEvent(EventClass eventClass,\n                 EventType eventType,\n                 const std::string& eventName,\n                 GObservable* source)\n        :\n          _actionCommand(\"\"),\n          _class(eventClass),\n          _keyChar('\\0'),\n          _keyCode(0),\n          _modifiers(0),\n          _name(eventName),\n          _source(source),\n          _time(getCurrentTimeMS()),\n          _type(eventType),\n          _x(0),\n          _y(0),\n          _row(0),\n          _col(0),\n          _internalQtEvent(nullptr) {\n    // empty\n}\n\nGEvent::~GEvent() {\n    _source = nullptr;\n}\n\nstd::string GEvent::classToString(EventClass eventClass) {\n    switch (eventClass) {\n    case NULL_EVENT:      return \"NULL_EVENT\";\n    case ACTION_EVENT:    return \"ACTION_EVENT\";\n    case KEY_EVENT:       return \"KEY_EVENT\";\n    case TIMER_EVENT:     return \"TIMER_EVENT\";\n    case WINDOW_EVENT:    return \"WINDOW_EVENT\";\n    case MOUSE_EVENT:     return \"MOUSE_EVENT\";\n    case CLICK_EVENT:     return \"CLICK_EVENT\";\n    case TABLE_EVENT:     return \"TABLE_EVENT\";\n    case SERVER_EVENT:    return \"SERVER_EVENT\";\n    case CHANGE_EVENT:    return \"CHANGE_EVENT\";\n    case HYPERLINK_EVENT: return \"HYPERLINK_EVENT\";\n    case SCROLL_EVENT:    return \"SCROLL_EVENT\";\n    default:              return \"UNKNOWN\";\n    }\n}\n\nstd::string GEvent::typeToString(EventType eventType) {\n    switch (eventType) {\n    case NULL_TYPE:            return \"NULL_TYPE\";\n    case WINDOW_CLOSED:        return \"WINDOW_CLOSED\";\n    case WINDOW_RESIZED:       return \"WINDOW_RESIZED\";\n    case CONSOLE_CLOSED:       return \"CONSOLE_CLOSED\";\n    case WINDOW_CLOSING:       return \"WINDOW_CLOSING\";\n    case WINDOW_MINIMIZED:     return \"WINDOW_MINIMIZED\";\n    case WINDOW_RESTORED:      return \"WINDOW_RESTORED\";\n    case WINDOW_MAXIMIZED:     return \"WINDOW_MAXIMIZED\";\n    case ACTION_PERFORMED:     return \"ACTION_PERFORMED\";\n    case ACTION_MENU:          return \"ACTION_MENU\";\n    case MOUSE_CLICKED:        return \"MOUSE_CLICKED\";\n    case MOUSE_PRESSED:        return \"MOUSE_PRESSED\";\n    case MOUSE_RELEASED:       return \"MOUSE_RELEASED\";\n    case MOUSE_MOVED:          return \"MOUSE_MOVED\";\n    case MOUSE_DRAGGED:        return \"MOUSE_DRAGGED\";\n    case MOUSE_ENTERED:        return \"MOUSE_ENTERED\";\n    case MOUSE_EXITED:         return \"MOUSE_EXITED\";\n    case MOUSE_WHEEL_DOWN:     return \"MOUSE_WHEEL_DOWN\";\n    case MOUSE_WHEEL_UP:       return \"MOUSE_WHEEL_UP\";\n    case MOUSE_DOUBLE_CLICKED: return \"MOUSE_DOUBLE_CLICKED\";\n    case KEY_PRESSED:          return \"KEY_PRESSED\";\n    case KEY_RELEASED:         return \"KEY_RELEASED\";\n    case KEY_TYPED:            return \"KEY_TYPED\";\n    case TIMER_TICKED:         return \"TIMER_TICKED\";\n    case TABLE_UPDATED:        return \"TABLE_UPDATED\";\n    case TABLE_SELECTED:       return \"TABLE_SELECTED\";\n    case TABLE_EDIT_BEGIN:     return \"TABLE_EDIT_BEGIN\";\n    case TABLE_REPLACE_BEGIN:  return \"TABLE_REPLACE_BEGIN\";\n    case TABLE_EDIT_CANCEL:    return \"TABLE_EDIT_CANCEL\";\n    case TABLE_CUT:            return \"TABLE_CUT\";\n    case TABLE_COPY:           return \"TABLE_COPY\";\n    case TABLE_PASTE:          return \"TABLE_PASTE\";\n    case SERVER_REQUEST:       return \"SERVER_REQUEST\";\n    case STATE_CHANGED:        return \"STATE_CHANGED\";\n    case HYPERLINK_CLICKED:    return \"HYPERLINK_CLICKED\";\n    case SCROLL_SCROLLED:      return \"SCROLL_SCROLLED\";\n    default:                   return \"UNKNOWN\";\n    }\n}\n\n\nstd::string GEvent::getActionCommand() const {\n    return _actionCommand;\n}\n\nint GEvent::getButton() const {\n    return _button;\n}\n\nEventClass GEvent::getClass() const {\n    return _class;\n}\n\nint GEvent::getColumn() const {\n    return _col;\n}\n\nlong GEvent::getCurrentTimeMS() {\n    struct timeval tp;\n    gettimeofday(&tp, nullptr);\n    long int ms = tp.tv_sec * 1000 + tp.tv_usec / 1000;\n    return ms;\n}\n\nEventClass GEvent::getEventClass() const {\n    return _class;\n}\n\nEventType GEvent::getEventType() const {\n    return _type;\n}\n\nchar GEvent::getKeyChar() const {\n    return _keyChar;\n}\n\nint GEvent::getKeyCode() const {\n    return _keyCode;\n}\n\nint GEvent::getModifiers() const {\n    return _modifiers;\n}\n\nstd::string GEvent::getName() const {\n    return _name;\n}\n\nstd::string GEvent::getRequestURL() const {\n    return _requestUrl;\n}\n\nGInteractor* GEvent::getInteractor() const {\n    return static_cast<GInteractor*>(_source);\n}\n\nQEvent* GEvent::getInternalEvent() const {\n    return _internalQtEvent;\n}\n\nGPoint GEvent::getLocation() const {\n    return GPoint(getX(), getY());\n}\n\nint GEvent::getRow() const {\n    return _row;\n}\n\nGObservable* GEvent::getSource() const {\n    return _source;\n}\n\nlong GEvent::getTime() const {\n    return _time;\n}\n\nEventType GEvent::getType() const {\n    return _type;\n}\n\ndouble GEvent::getX() const {\n    return _x;\n}\n\ndouble GEvent::getY() const {\n    return _y;\n}\n\nvoid GEvent::ignore() {\n    if (_internalQtEvent) {\n        _internalQtEvent->ignore();\n    }\n}\n\nbool GEvent::isAltKeyDown() const {\n    return (_modifiers & ALT_DOWN) != 0;\n}\n\nbool GEvent::isCtrlKeyDown() const {\n    return (_modifiers & CTRL_DOWN) != 0;\n}\n\nbool GEvent::isCtrlOrCommandKeyDown() const {\n    return isCtrlKeyDown() || isMetaKeyDown();\n}\n\nbool GEvent::isDoubleClick() const {\n    return _type == MOUSE_DOUBLE_CLICKED || _name == \"doubleclick\";\n}\n\nbool GEvent::isLeftClick() const {\n    return !isMiddleClick() && !isRightClick();\n}\n\nbool GEvent::isMiddleClick() const {\n    return _button == 4 || ((_modifiers & BUTTON3_DOWN) != 0);\n}\n\nbool GEvent::isRightClick() const {\n    return _button == 2 || ((_modifiers & BUTTON2_DOWN) != 0);\n}\n\nbool GEvent::isMetaKeyDown() const {\n    return (_modifiers & META_DOWN) != 0;\n}\n\nbool GEvent::isShiftKeyDown() const {\n    return (_modifiers & SHIFT_DOWN) != 0;\n}\n\nstd::string GEvent::keyCodeToString(int keyCode) {\n    switch (keyCode) {\n    case ALT_KEY: return \"Alt\";\n    case BACKSPACE_KEY: return \"Bksp\";\n    case CAPS_LOCK_KEY: return \"CapsLock\";\n    case CLEAR_KEY: return \"Clear\";\n    case CTRL_KEY: return \"Ctrl\";\n    case DELETE_KEY: return \"Del\";\n    case DOWN_ARROW_KEY: return \"Down\";\n    case END_KEY: return \"End\";\n    case ENTER_KEY: return \"Enter\";\n    case ESCAPE_KEY: return \"Esc\";\n    case F10_KEY: return \"F10\";\n    case F11_KEY: return \"F11\";\n    case F12_KEY: return \"F12\";\n    case F1_KEY: return \"F1\";\n    case F2_KEY: return \"F2\";\n    case F3_KEY: return \"F3\";\n    case F4_KEY: return \"F4\";\n    case F5_KEY: return \"F5\";\n    case F6_KEY: return \"F6\";\n    case F7_KEY: return \"F7\";\n    case F8_KEY: return \"F8\";\n    case F9_KEY: return \"F9\";\n    case HELP_KEY: return \"Help\";\n    case HOME_KEY: return \"Home\";\n    case INSERT_KEY: return \"Ins\";\n    case LEFT_ARROW_KEY: return \"Left\";\n    case MENU_KEY: return \"Menu\";\n    case META_KEY: return \"Meta\";\n    case NUM_LOCK_KEY: return \"NumLock\";\n    case PAGE_DOWN_KEY: return \"PgDn\";\n    case PAGE_UP_KEY: return \"PgUp\";\n    case PAUSE_KEY: return \"Pause\";\n    case PRINT_SCREEN_KEY: return \"PrtSc\";\n    case RIGHT_ARROW_KEY: return \"Right\";\n    case SCROLL_LOCK_KEY: return \"ScrollLock\";\n    case SHIFT_KEY: return \"Shift\";\n    case TAB_KEY: return \"Tab\";\n    case UP_ARROW_KEY: return \"Up\";\n    case WINDOWS_KEY: return \"Win\";\n    case '\\r': return \"Enter\";\n    case '\\\\': return \"\\\\\";\n    default: return charToString((char) keyCode);\n    }\n}\n\nvoid GEvent::setActionCommand(const std::string& actionCommand) {\n    _actionCommand = actionCommand;\n}\n\nvoid GEvent::setButton(int button) {\n    _button = button;\n}\n\nvoid GEvent::setInternalEvent(QEvent* event) {\n    _internalQtEvent = event;\n}\n\nvoid GEvent::setKeyChar(char keyChar) {\n    if (keyChar == '\\r') {\n        keyChar = '\\n';\n    }\n    _keyChar = keyChar;\n}\n\nvoid GEvent::setKeyChar(const std::string& keyCharString) {\n    if (!keyCharString.empty()) {\n        setKeyChar(keyCharString[0]);\n    }\n}\n\nvoid GEvent::setKeyCode(int keyCode) {\n    if (keyCode == (int) '\\r') {\n        keyCode = (int) '\\n';\n    }\n    _keyCode = keyCode;\n    if (keyCode > 0 && keyCode < 255) {\n        _keyChar = (char) keyCode;\n    } else {\n        switch (keyCode) {\n        case Qt::Key_Alt:\n        case Qt::Key_AltGr:\n            _keyChar = _keyCode = ALT_KEY;\n            break;\n        case Qt::Key_Backspace:\n            _keyChar = _keyCode = BACKSPACE_KEY;\n            break;\n        case Qt::Key_CapsLock:\n            _keyChar = _keyCode = CAPS_LOCK_KEY;\n            break;\n        case Qt::Key_Control:\n            _keyChar = _keyCode = CTRL_KEY;\n            break;\n        case Qt::Key_Delete:\n            _keyChar = _keyCode = DELETE_KEY;\n            break;\n        case Qt::Key_Down:\n            _keyChar = _keyCode = DOWN_ARROW_KEY;\n            break;\n        case Qt::Key_End:\n            _keyChar = _keyCode = END_KEY;\n            break;\n        case Qt::Key_Enter:\n            _keyChar = _keyCode = ENTER_KEY;\n            break;\n        case Qt::Key_Escape:\n            _keyChar = _keyCode = ESCAPE_KEY;\n            break;\n        case Qt::Key_F1:\n            _keyChar = _keyCode = F1_KEY;\n            break;\n        case Qt::Key_F2:\n            _keyChar = _keyCode = F2_KEY;\n            break;\n        case Qt::Key_F3:\n            _keyChar = _keyCode = F3_KEY;\n            break;\n        case Qt::Key_F4:\n            _keyChar = _keyCode = F4_KEY;\n            break;\n        case Qt::Key_F5:\n            _keyChar = _keyCode = F5_KEY;\n            break;\n        case Qt::Key_F6:\n            _keyChar = _keyCode = F6_KEY;\n            break;\n        case Qt::Key_F7:\n            _keyChar = _keyCode = F7_KEY;\n            break;\n        case Qt::Key_F8:\n            _keyChar = _keyCode = F8_KEY;\n            break;\n        case Qt::Key_F9:\n            _keyChar = _keyCode = F9_KEY;\n            break;\n        case Qt::Key_F10:\n            _keyChar = _keyCode = F10_KEY;\n            break;\n        case Qt::Key_F11:\n            _keyChar = _keyCode = F11_KEY;\n            break;\n        case Qt::Key_F12:\n            _keyChar = _keyCode = F12_KEY;\n            break;\n        case Qt::Key_Home:\n            _keyChar = _keyCode = HOME_KEY;\n            break;\n        case Qt::Key_Insert:\n            _keyChar = _keyCode = INSERT_KEY;\n            break;\n        case Qt::Key_Left:\n            _keyChar = _keyCode = LEFT_ARROW_KEY;\n            break;\n        case Qt::Key_Menu:\n            _keyChar = _keyCode = MENU_KEY;\n            break;\n        case Qt::Key_Meta:\n            _keyChar = _keyCode = META_KEY;\n            break;\n        case Qt::Key_NumLock:\n            _keyChar = _keyCode = NUM_LOCK_KEY;\n            break;\n        case Qt::Key_PageDown:\n            _keyChar = _keyCode = PAGE_DOWN_KEY;\n            break;\n        case Qt::Key_PageUp:\n            _keyChar = _keyCode = PAGE_UP_KEY;\n            break;\n        case Qt::Key_Pause:\n            _keyChar = _keyCode = PAUSE_KEY;\n            break;\n        case Qt::Key_Print:\n            _keyChar = _keyCode = PRINT_SCREEN_KEY;\n            break;\n        case Qt::Key_Return:\n            _keyChar = _keyCode = ENTER_KEY;\n            break;\n        case Qt::Key_Right:\n            _keyChar = _keyCode = RIGHT_ARROW_KEY;\n            break;\n        case Qt::Key_ScrollLock:\n            _keyChar = _keyCode = SCROLL_LOCK_KEY;\n            break;\n        case Qt::Key_Shift:\n            _keyChar = _keyCode = SHIFT_KEY;\n            break;\n        case Qt::Key_Super_L:\n        case Qt::Key_Super_R:\n            _keyChar = _keyCode = WINDOWS_KEY;\n            break;\n        case Qt::Key_Tab:\n            _keyChar = _keyCode = TAB_KEY;\n            break;\n        case Qt::Key_Up:\n            _keyChar = _keyCode = UP_ARROW_KEY;\n            break;\n        }\n    }\n}\n\nvoid GEvent::setModifiers(Qt::KeyboardModifiers modifiers) {\n    _modifiers = 0;\n    if (modifiers & Qt::AltModifier) {\n        _modifiers |= ALT_DOWN;\n    }\n    if (modifiers & Qt::ControlModifier) {\n        _modifiers |= CTRL_DOWN;\n    }\n    if (modifiers & Qt::MetaModifier) {\n        _modifiers |= META_DOWN;\n    }\n    if (modifiers & Qt::ShiftModifier) {\n        _modifiers |= SHIFT_DOWN;\n    }\n}\n\nvoid GEvent::setRequestURL(const std::string& requestUrl) {\n    _requestUrl = requestUrl;\n}\n\nvoid GEvent::setRowAndColumn(int row, int col) {\n    _row = row;\n    _col = col;\n}\n\nvoid GEvent::setSource(GObservable* source) {\n    _source = source;\n}\n\nvoid GEvent::setX(double x) {\n    _x = x;\n}\n\nvoid GEvent::setY(double y) {\n    _y = y;\n}\n\nstd::string GEvent::toString() const {\n    std::ostringstream out;\n    out << *this;\n    return out.str();\n}\n\nstd::ostream& operator <<(std::ostream& out, const GEvent& event) {\n    out << \"GEvent(\";\n    out << \"class=\" << GEvent::classToString(event.getClass());\n    out << \",type=\" << GEvent::typeToString(event.getType());\n    out << \",name=\" << event.getName();\n    out << \",time=\" << event.getTime();\n    if (event.getSource()) {\n        out << \",source=\" << event.getSource()->toString();\n    }\n    if (!event.getActionCommand().empty()) {\n        out << \",actionCommand=\\\"\" << event.getActionCommand() << \"\\\"\";\n    }\n    if (event.getEventClass() == KEY_EVENT) {\n        out << \",key=\" << event.getKeyCode()\n            << \"(\" << GEvent::keyCodeToString(event.getKeyCode()) << \")\";\n    } else if (event.getEventClass() == MOUSE_EVENT) {\n        out << \",x=\" << event.getX() << \",y=\" << event.getY() << \",button=\" << event.getButton();\n    } else if (event.getEventClass() == TABLE_EVENT) {\n        out << \",row=\" << event.getRow() << \",col=\" << event.getColumn();\n    }\n    out << \")\";\n    return out;\n}\n\n/*\n * File: glayout.cpp\n * -----------------\n *\n * @author Marty Stepp\n * @version 2018/08/23\n * - renamed to glayout.cpp to replace Java version\n * @version 2018/06/25\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"glayout.h\"\n#define INTERNAL_INCLUDE 1\n#include \"require.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#undef INTERNAL_INCLUDE\n\nGLayout::GLayout() {\n    // empty\n}\n\nvoid GLayout::clearLayout(QLayout* layout) {\n    if (!layout) {\n        return;\n    }\n\n    // http://doc.qt.io/qt-5/qlayout.html#takeAt\n    QLayoutItem* child;\n    while ((child = layout->takeAt(0))) {\n        // TODO: delete child;\n    }\n    layout->update();\n}\n\nbool GLayout::contains(QLayout* layout, QWidget* widget) {\n    if (!layout || !widget) {\n        return false;\n    }\n\n    for (int i = 0; i < layout->count(); i++) {\n        QLayoutItem* child = layout->itemAt(i);\n        QWidget* childWidget = child->widget();\n        if (childWidget == widget) {\n            return true;\n        }\n    }\n\n    return false;\n}\n\nvoid GLayout::forceUpdate(GInteractor* interactor) {\n    if (interactor) {\n        forceUpdate(interactor->getWidget());\n    }\n}\n\n/**\n * Forces the given widget to update, even if it's hidden.\n * from https://stackoverflow.com/questions/2427103/qt-how-to-force-a-hidden-widget-to-calculate-its-layout\n */\nvoid GLayout::forceUpdate(QWidget* widget) {\n    if (!widget) {\n        return;\n    }\n\n    // Update all child widgets.\n    for (int i = 0; i < widget->children().size(); i++) {\n        QObject* child = widget->children()[i];\n        if (child->isWidgetType()) {\n            forceUpdate((QWidget*) child);\n        }\n    }\n\n    widget->updateGeometry();\n    widget->update();\n\n    // Invalidate the layout of the widget.\n    if (widget->layout()) {\n        invalidateLayout(widget->layout());\n    }\n\n    widget->setAttribute(Qt::WA_DontShowOnScreen, true);   // TODO: remove?\n    widget->setAttribute(Qt::WA_DontShowOnScreen, false);\n    widget->show();\n}\n\nQSize GLayout::getPreferredSize(QWidget* widget) {\n    require::nonNull(widget, \"GLayout::getPreferredSize\", \"widget\");\n    QRect geom = widget->geometry();\n    QSize hint = widget->sizeHint();\n    int height = hint.height() > 0 ? hint.height() : geom.height();\n    int width = hint.width() > 0 ? hint.width() : geom.width();\n    return QSize(width, height);\n}\n\nQSize GLayout::getProperSize(QLayout* layout) {\n    require::nonNull(layout, \"GLayout::getProperSize\", \"layout\");\n    QRect geom = layout->geometry();\n    QSize hint = layout->sizeHint();\n    int height = geom.height() > 0 ? geom.height() : hint.height();\n    int width = geom.width() > 0 ? geom.width() : hint.width();\n    return QSize(width, height);\n}\n\nQSize GLayout::getProperSize(QWidget* widget) {\n    require::nonNull(widget, \"GLayout::getProperSize\", \"widget\");\n    QRect geom = widget->geometry();\n    QSize hint = widget->sizeHint();\n    int height = geom.height() > 0 ? geom.height() : hint.height();\n    int width = geom.width() > 0 ? geom.width() : hint.width();\n    return QSize(width, height);\n}\n\n/**\n * Helper function for forceUpdate(). Not self-sufficient!\n * from https://stackoverflow.com/questions/2427103/qt-how-to-force-a-hidden-widget-to-calculate-its-layout\n */\nvoid GLayout::invalidateLayout(QLayout* layout) {\n    if (!layout) {\n        return;\n    }\n\n    // Recompute the given layout and all its child layouts.\n    for (int i = 0; i < layout->count(); i++) {\n        QLayoutItem* item = layout->itemAt(i);\n        if (item->layout()) {\n            invalidateLayout(item->layout());\n        } else {\n            item->invalidate();\n        }\n    }\n    layout->invalidate();\n    layout->activate();\n}\n\nGLayout::Position GLayout::toPosition(const std::string& positionName) {\n    std::string regionU = toUpperCase(positionName);\n    if (regionU == \"NORTH\" || regionU == \"TOP\") {\n        return GLayout::North;\n    } else if (regionU == \"SOUTH\" || regionU == \"BOTTOM\") {\n        return GLayout::South;\n    } else if (regionU == \"EAST\" || regionU == \"RIGHT\") {\n        return GLayout::East;\n    } else if (regionU == \"WEST\" || regionU == \"LEFT\") {\n        return GLayout::West;\n    } else {\n        // \"CENTER\" or \"MIDDLE\" or \"NONE\"\n        return GLayout::Center;\n    }\n}\n\nGBorderLayout::GBorderLayout(QWidget* parent, int margin, int spacing)\n        : QLayout(parent) {\n    setMargin(margin);\n    setSpacing(spacing);\n}\n\nGBorderLayout::GBorderLayout(int spacing) {\n    setSpacing(spacing);\n}\n\nGBorderLayout::~GBorderLayout() {\n    QLayoutItem* l;\n    while ((l = takeAt(0))) {\n        delete l;\n    }\n}\n\nvoid GBorderLayout::addItem(QLayoutItem* item) {\n    require::nonNull(item, \"GBorderLayout::addItem\");\n    add(item, GLayout::North);\n}\n\nvoid GBorderLayout::addWidget(QWidget* widget) {\n    addWidget(widget, GLayout::Center);\n}\n\nvoid GBorderLayout::addWidget(QWidget* widget, GLayout::Position position) {\n    require::nonNull(widget, \"GBorderLayout::addWidget\", \"widget\");\n    add(new QWidgetItem(widget), position);\n}\n\nQt::Orientations GBorderLayout::expandingDirections() const {\n    return Qt::Horizontal | Qt::Vertical;\n}\n\nbool GBorderLayout::hasHeightForWidth() const {\n    return false;\n}\n\nint GBorderLayout::count() const {\n    return list.size();\n}\n\nQLayoutItem* GBorderLayout::itemAt(int index) const {\n    ItemWrapper* wrapper = list.value(index);\n    if (wrapper) {\n        return wrapper->item;\n    } else {\n        return nullptr;\n    }\n}\n\nQSize GBorderLayout::minimumSize() const {\n    return calculateSize(MinimumSize);\n}\n\nvoid GBorderLayout::setGeometry(const QRect& rect) {\n    ItemWrapper* center = nullptr;\n    int eastWidth = 0;\n    int westWidth = 0;\n    int northHeight = 0;\n    int southHeight = 0;\n    int centerHeight = 0;\n\n    QLayout::setGeometry(rect);\n\n    // size/place north/south widgets first\n    for (int i = 0; i < list.size(); ++i) {\n        ItemWrapper* wrapper = list.at(i);\n        QLayoutItem* item = wrapper->item;\n        GLayout::Position position = wrapper->position;\n\n        if (position == GLayout::North) {\n            QRect geom(rect.x(),\n                       northHeight,\n                       rect.width(),\n                       item->sizeHint().height());\n            item->setGeometry(geom);\n            northHeight += item->geometry().height() + spacing();\n        } else if (position == GLayout::South) {\n            QRect geom(item->geometry().x(),\n                       item->geometry().y(),\n                       rect.width(),\n                       item->sizeHint().height());\n            item->setGeometry(geom);\n\n            southHeight += item->geometry().height() + spacing();\n            geom = QRect(rect.x(),\n                         rect.y() + rect.height() - southHeight + spacing(),\n                         item->geometry().width(),\n                         item->geometry().height());\n            item->setGeometry(geom);\n        } else if (position == GLayout::Center) {\n            center = wrapper;\n        }\n    }\n\n    centerHeight = rect.height() - northHeight - southHeight;\n\n    // size/place west/east widgets second\n    for (int i = 0; i < list.size(); ++i) {\n        ItemWrapper* wrapper = list.at(i);\n        QLayoutItem* item = wrapper->item;\n        GLayout::Position position = wrapper->position;\n\n        if (position == GLayout::West) {\n            QRect geom(rect.x() + westWidth,\n                       northHeight,\n                       item->sizeHint().width(),\n                       centerHeight);\n            item->setGeometry(geom);\n            westWidth += item->geometry().width() + spacing();\n        } else if (position == GLayout::East) {\n            QRect geom(item->geometry().x(),\n                       item->geometry().y(),\n                       item->sizeHint().width(),\n                       centerHeight);\n            item->setGeometry(geom);\n\n            eastWidth += item->geometry().width() + spacing();\n            geom = QRect(rect.x() + rect.width() - eastWidth + spacing(),\n                       northHeight,\n                       item->geometry().width(),\n                       item->geometry().height());\n            item->setGeometry(geom);\n        }\n    }\n\n    // size/place central widget last\n    if (center) {\n        QRect geom(westWidth,\n                   northHeight,\n                   rect.width() - eastWidth - westWidth,\n                   centerHeight);\n        center->item->setGeometry(geom);\n    }\n}\n\nQSize GBorderLayout::sizeHint() const {\n    return calculateSize(SizeHint);\n}\n\nQLayoutItem* GBorderLayout::takeAt(int index) {\n    if (index >= 0 && index < list.size()) {\n        ItemWrapper* layoutStruct = list.takeAt(index);\n        return layoutStruct->item;\n    } else {\n        return nullptr;\n    }\n}\n\nvoid GBorderLayout::add(QLayoutItem* item, GLayout::Position position) {\n    require::nonNull(item, \"GBorderLayout::add\");\n    list.append(new ItemWrapper(item, position));\n}\n\nQSize GBorderLayout::calculateSize(SizeType sizeType) const {\n    QSize totalSize;\n    for (int i = 0; i < list.size(); ++i) {\n        ItemWrapper* wrapper = list.at(i);\n        GLayout::Position position = wrapper->position;\n        QSize itemSize;\n\n        if (sizeType == MinimumSize) {\n            itemSize = wrapper->item->minimumSize();\n        } else { // (sizeType == SizeHint)\n            itemSize = wrapper->item->sizeHint();\n        }\n\n        if (position == GLayout::North || position == GLayout::South || position == GLayout::Center) {\n            totalSize.rheight() += itemSize.height();\n        }\n\n        if (position == GLayout::West || position == GLayout::East || position == GLayout::Center) {\n            totalSize.rwidth() += itemSize.width();\n        }\n    }\n    return totalSize;\n}\n\n/*\n * File: gcanvas.cpp\n * -----------------\n *\n * @author Marty Stepp\n * @version 2019/05/01\n * - added createArgbPixel\n * - bug fixes related to save / setPixels with alpha transparency\n * @version 2019/04/23\n * - bug fix for loading canvas from file on Windows related to istream change\n * - moved most event listener code to GInteractor superclass\n * @version 2019/03/07\n * - added support for loading canvas directly from istream (htiek)\n * @version 2019/02/06\n * - fixed mouse wheel listeners to work even if no actual scroll area exists\n * @version 2019/02/02\n * - destructor now stops event processing\n * @version 2018/09/20\n * - added read/write lock for canvas contents to avoid race conditions\n * @version 2018/09/04\n * - added double-click event support\n * @version 2018/08/23\n * - renamed to gcanvas.cpp to replace Java version\n * @version 2018/06/30\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"gcanvas.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gcolor.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gthread.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gwindow.h\"\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"filelib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"require.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#undef INTERNAL_INCLUDE\n\n#define CHAR_TO_HEX(ch) ((ch >= '0' && ch <= '9') ? (ch - '0') : (ch - 'a' + 10))\n\nconst int GCanvas::WIDTH_HEIGHT_MAX = 65535;\n\nint GCanvas::createArgbPixel(int alpha, int red, int green, int blue) {\n    if (alpha < 0 || alpha > 255 || red < 0 || red > 255 || green < 0 || green > 255 || blue < 0 || blue > 255) {\n        error(\"ARGB values must be between 0-255\");\n    }\n    return (alpha << 24 & 0xff000000) | (red << 16 & 0xff0000) | (green << 8 & 0x00ff00) | (blue & 0x0000ff);\n}\n\nint GCanvas::createRgbPixel(int red, int green, int blue) {\n    if (red < 0 || red > 255 || green < 0 || green > 255 || blue < 0 || blue > 255) {\n        error(\"RGB values must be between 0-255\");\n    }\n    return ((red << 16 & 0xff0000) | (green << 8 & 0x00ff00) | (blue & 0x0000ff)) & 0xffffff;\n}\n\nint GCanvas::getAlpha(int argb) {\n    // have to & a second time because of sign-extension on >> shift\n    return ((static_cast<unsigned int>(argb) & 0xff000000) >> 24) & 0x000000ff;\n}\n\nint GCanvas::getBlue(int rgb) {\n    return rgb & 0x0000ff;\n}\n\nint GCanvas::getGreen(int rgb) {\n    return (rgb & 0x00ff00) >> 8;\n}\n\nint GCanvas::getRed(int rgb) {\n    return (rgb & 0xff0000) >> 16;\n}\n\nvoid GCanvas::getRedGreenBlue(int rgb, int& red, int& green, int& blue) {\n    red = getRed(rgb);\n    green = getGreen(rgb);\n    blue = getBlue(rgb);\n}\n\n\nGCanvas::GCanvas(QWidget* parent)\n        : _backgroundImage(nullptr),\n          _filename(\"\") {\n    init(/* width */ -1, /* height */ -1, /* background */ 0xffffff, parent);\n}\n\nGCanvas::GCanvas(const std::string& filename, QWidget* parent)\n        : _backgroundImage(nullptr),\n          _filename(filename) {\n    init(/* width */ -1, /* height */ -1, /* background */ 0xffffff, parent);\n    load(filename);\n}\n\nGCanvas::GCanvas(std::istream& source, QWidget* parent)\n        : _backgroundImage(nullptr),\n          _filename(\"std::istream data\") {\n    init(/* width */ -1, /* height */ -1, /* background */ 0xffffff, parent);\n    if (!loadFromStream(source)) {\n        error(\"GCanvas::constructor: could not load image from input stream\");\n    }\n}\n\nGCanvas::GCanvas(double width, double height, int rgbBackground, QWidget* parent)\n        : _backgroundImage(nullptr),\n          _filename(\"\") {\n    init(width, height, rgbBackground, parent);\n}\n\nGCanvas::GCanvas(double width, double height, const std::string& rgbBackground, QWidget* parent)\n        : _backgroundImage(nullptr),\n          _filename(\"\") {\n    _backgroundColor = rgbBackground;\n    init(width, height,\n         GColor::hasAlpha(rgbBackground)\n                ? GColor::convertColorToARGB(rgbBackground)\n                : GColor::convertColorToRGB(rgbBackground),\n         parent);\n}\n\nvoid GCanvas::init(double width, double height, int rgbBackground, QWidget* parent) {\n    checkSize(\"GCanvas::constructor\", width, height);\n    checkColor(\"GCanvas::constructor\", rgbBackground);\n\n    GThread::runOnQtGuiThread([this, rgbBackground, parent]() {\n        _iqcanvas = new _Internal_QCanvas(this, getInternalParent(parent));\n        _gcompound.setWidget(_iqcanvas);\n        int alpha = getAlpha(rgbBackground);\n        if (GColor::hasAlpha(_backgroundColor)) {\n            // empty\n        } else if (alpha > 0 && alpha < 255) {\n            _backgroundColor = GColor::convertARGBToColor(rgbBackground);\n        } else {\n            _backgroundColor = GColor::convertRGBToColor(rgbBackground);\n        }\n        _backgroundColorInt = rgbBackground;\n    });\n\n    if (width > 0 && height > 0) {\n        setSize(width, height);\n        if (rgbBackground != 0) {\n            fill(rgbBackground);\n        }\n    }\n\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGCanvas::~GCanvas() {\n    // TODO: delete _iqcanvas;\n    _iqcanvas->detach();\n    _iqcanvas = nullptr;\n}\n\nvoid GCanvas::add(GObject* gobj) {\n    GThread::runOnQtGuiThread([this, gobj]() {\n        lockForWrite();\n        _gcompound.add(gobj);   // calls conditionalRepaint\n        unlock();\n    });\n}\n\nvoid GCanvas::add(GObject* gobj, double x, double y) {\n    GThread::runOnQtGuiThread([this, gobj, x, y]() {\n        lockForWrite();\n        _gcompound.add(gobj, x, y);   // calls conditionalRepaint\n        unlock();\n    });\n}\n\nvoid GCanvas::add(GObject& gobj) {\n    GThread::runOnQtGuiThread([this, &gobj]() {\n        lockForWrite();\n        _gcompound.add(gobj);   // calls conditionalRepaint\n        unlock();\n    });\n}\n\nvoid GCanvas::add(GObject& gobj, double x, double y) {\n    GThread::runOnQtGuiThread([this, &gobj, x, y]() {\n        lockForWrite();\n        _gcompound.add(gobj, x, y);   // calls conditionalRepaint\n        unlock();\n    });\n}\n\nvoid GCanvas::clear() {\n    clearObjects();\n    clearPixels();   // calls conditionalRepaint\n}\n\nvoid GCanvas::clearObjects() {\n    GThread::runOnQtGuiThread([this]() {\n        lockForWrite();\n        _gcompound.clear();   // calls conditionalRepaint\n        unlock();\n    });\n}\n\nvoid GCanvas::clearPixels() {\n    GThread::runOnQtGuiThread([this]() {\n        lockForWrite();\n        if (_backgroundImage) {\n            // delete _backgroundImage;\n            // _backgroundImage = nullptr;\n            // keep background image buffer but fill with background color instead\n            GThread::runOnQtGuiThread([this]() {\n                if (GColor::hasAlpha(_backgroundColor)) {\n                    _backgroundImage->fill(static_cast<unsigned int>(_backgroundColorInt));\n                } else {\n                    _backgroundImage->fill(static_cast<unsigned int>(_backgroundColorInt) | 0xff000000);\n                }\n            });\n        }\n        unlock();\n    });\n    conditionalRepaint();\n}\n\nbool GCanvas::contains(double x, double y) const {\n    lockForReadConst();\n    bool result = _gcompound.contains(x, y);\n    unlockConst();\n    return result;\n}\n\nint GCanvas::countDiffPixels(const GCanvas& image) const {\n    lockForReadConst();\n    int w1 = static_cast<int>(getWidth());\n    int h1 = static_cast<int>(getHeight());\n    int w2 = static_cast<int>(image.getWidth());\n    int h2 = static_cast<int>(image.getHeight());\n\n    int wmin = std::min(w1, w2);\n    int hmin = std::min(h1, h2);\n\n    int overlap = std::min(w1, w2) * std::min(h1, h2);\n    int diffPxCount = (w1 * h1 - overlap) + (w2 * h2 - overlap);\n\n    for (int y = 0; y < hmin; y++) {\n        for (int x = 0; x < wmin; x++) {\n            int px1 = _backgroundImage->pixel(static_cast<int>(x), static_cast<int>(y)) & 0x00ffffff;\n            int px2 = image._backgroundImage->pixel(static_cast<int>(x), static_cast<int>(y)) & 0x00ffffff;\n            if (px1 != px2) {\n                diffPxCount++;\n            }\n        }\n    }\n\n    unlockConst();\n    return diffPxCount;\n}\n\nint GCanvas::countDiffPixels(const GCanvas& image, int xmin, int ymin, int xmax, int ymax) const {\n    lockForReadConst();\n    int w1 = static_cast<int>(getWidth());\n    int h1 = static_cast<int>(getHeight());\n    int w2 = static_cast<int>(image.getWidth());\n    int h2 = static_cast<int>(image.getHeight());\n    int diffPxCount = 0;\n\n    for (int y = ymin; y < ymax; y++) {\n        for (int x = xmin; x < xmax; x++) {\n            int px1 = x < w1 && y < h1 ? (_backgroundImage->pixel(static_cast<int>(x), static_cast<int>(y)) & 0x00ffffff) : -1;\n            int px2 = x < w2 && y < h2 ? (image._backgroundImage->pixel(static_cast<int>(x), static_cast<int>(y)) & 0x00ffffff) : -1;\n            if (px1 != px2) {\n                diffPxCount++;\n            }\n        }\n    }\n\n    unlockConst();\n    return diffPxCount;\n}\n\nint GCanvas::countDiffPixels(const GCanvas* image) const {\n    require::nonNull(image, \"GCanvas::countDiffPixels\");\n    return countDiffPixels(*image);\n}\n\nint GCanvas::countDiffPixels(const GCanvas* image, int xmin, int ymin, int xmax, int ymax) const {\n    require::nonNull(image, \"GCanvas::countDiffPixels\");\n    return countDiffPixels(*image, xmin, ymin, xmax, ymax);\n}\n\nGCanvas* GCanvas::diff(const GCanvas& image, int diffPixelColor) const {\n    lockForReadConst();\n    int w1 = static_cast<int>(getWidth());\n    int h1 = static_cast<int>(getHeight());\n    int w2 = static_cast<int>(image.getWidth());\n    int h2 = static_cast<int>(image.getHeight());\n    int wmin = std::min(w1, w2);\n    int hmin = std::min(h1, h2);\n    int wmax = std::max(w1, w2);\n    int hmax = std::max(h1, h2);\n\n    Grid<int> resultGrid;\n    resultGrid.resize(hmax, wmax);\n    resultGrid.fill(diffPixelColor);\n    for (int r = 0; r < h1; r++) {\n        for (int c = 0; c < w1; c++) {\n            resultGrid[r][c] = _backgroundColorInt;\n        }\n    }\n    for (int y = 0; y < hmin; y++) {\n        for (int x = 0; x < wmin; x++) {\n            int px1 = _backgroundImage->pixel(static_cast<int>(x), static_cast<int>(y)) & 0x00ffffff;\n            int px2 = image._backgroundImage->pixel(static_cast<int>(x), static_cast<int>(y)) & 0x00ffffff;\n            if (px1 != px2) {\n                resultGrid[y][x] = diffPixelColor;\n            }\n        }\n    }\n    GCanvas* result = new GCanvas(wmax, hmax);\n    result->fromGrid(resultGrid);\n    unlockConst();\n    return result;\n}\n\nGCanvas* GCanvas::diff(const GCanvas* image, int diffPixelColor) const {\n    require::nonNull(image, \"GCanvas::diff\");\n    return diff(*image, diffPixelColor);\n}\n\nvoid GCanvas::draw(QPainter* painter) {\n    if (!painter) {\n        return;\n    }\n    // lockForRead();\n    if (_backgroundImage) {\n        painter->drawImage(/* x */ 0, /* y */ 0, *_backgroundImage);\n    }\n    _gcompound.draw(painter);   // calls conditionalRepaint\n    // unlock();\n}\n\nvoid GCanvas::draw(GObject* gobj) {\n    require::nonNull(gobj, \"GCanvas::draw\");\n    ensureBackgroundImage();\n    if (_backgroundImage && _backgroundImage->paintEngine()) {\n        GThread::runOnQtGuiThread([this, gobj]() {\n            lockForWrite();\n            if (gobj->isVisible()) {\n                QPainter painter(_backgroundImage);\n                painter.setRenderHint(QPainter::Antialiasing, GObject::isAntiAliasing());\n                painter.setRenderHint(QPainter::TextAntialiasing, GObject::isAntiAliasing());\n                gobj->draw(&painter);\n                painter.end();\n            }\n            unlock();\n        });\n        conditionalRepaintRegion(gobj->getBounds().enlargedBy((gobj->getLineWidth() + 1) / 2));\n    }\n}\n\nvoid GCanvas::ensureBackgroundImage() {\n    if (!_backgroundImage) {\n        GThread::runOnQtGuiThread([this]() {\n            lockForWrite();\n            _backgroundImage = new QImage(\n                        static_cast<int>(getWidth()),\n                        static_cast<int>(getHeight()),\n                        QImage::Format_ARGB32);\n            if (!_backgroundColor.empty()) {\n                if (GColor::hasAlpha(_backgroundColor)) {\n                    _backgroundImage->fill(static_cast<unsigned int>(_backgroundColorInt));\n                } else {\n                    _backgroundImage->fill(static_cast<unsigned int>(_backgroundColorInt) | 0xff000000);\n                }\n            }\n            unlock();\n        });\n    }\n}\n\nvoid GCanvas::ensureBackgroundImageConstHack() const {\n    if (!_backgroundImage) {\n        // Your whole life has been a lie.\n        // Also, this code is bad and I should feel bad.\n        GCanvas* hack = const_cast<GCanvas*>(this);\n        hack->ensureBackgroundImage();\n    }\n}\n\nbool GCanvas::equals(const GCanvas& other) const {\n    if (getSize() != other.getSize()) {\n        return false;\n    }\n    // TODO: compare pixels\n    return true;\n}\n\nvoid GCanvas::fill(int rgb) {\n    checkColor(\"GCanvas::fill\", rgb);\n    fillRegion(/* x */ 0,\n               /* y */ 0,\n               /* width */ getWidth(),\n               /* height */ getHeight(),\n               rgb);\n}\n\nvoid GCanvas::fill(const std::string& rgb) {\n    fill(GColor::convertColorToRGB(rgb));\n}\n\nvoid GCanvas::fillRegion(double x, double y, double width, double height, int rgb) {\n    checkBounds(\"GCanvas::fillRegion\", x, y, getWidth(), getHeight());\n    checkBounds(\"GCanvas::fillRegion\", x + width - 1, y + height - 1, getWidth(), getHeight());\n    checkColor(\"GCanvas::fillRegion\", rgb);\n    bool wasAutoRepaint = isAutoRepaint();\n    setAutoRepaint(false);\n    GThread::runOnQtGuiThread([this, x, y, width, height, rgb]() {\n        ensureBackgroundImage();\n        lockForWrite();\n        int argb = rgb | 0xff000000;\n        for (int yy = static_cast<int>(y); yy < y + height; yy++) {\n            for (int xx = static_cast<int>(x); xx < x + width; xx++) {\n                _backgroundImage->setPixel(xx, yy, static_cast<unsigned int>(argb));\n            }\n        }\n        unlock();\n    });\n    setAutoRepaint(wasAutoRepaint);\n    conditionalRepaint();\n}\n\nvoid GCanvas::fillRegion(double x, double y, double width, double height, const std::string& rgb) {\n    fillRegion(x, y, width, height, GColor::convertColorToRGB(rgb));\n}\n\nvoid GCanvas::flatten() {\n    GThread::runOnQtGuiThread([this]() {\n        ensureBackgroundImage();\n        lockForWrite();\n        QPainter painter(_backgroundImage);\n        painter.setRenderHint(QPainter::Antialiasing, GObject::isAntiAliasing());\n        painter.setRenderHint(QPainter::TextAntialiasing, GObject::isAntiAliasing());\n        _gcompound.draw(&painter);\n        painter.end();\n        _gcompound.clear();   // calls conditionalRepaint\n        unlock();\n    });\n}\n\nvoid GCanvas::fromGrid(const Grid<int>& grid) {\n    checkSize(\"GCanvas::fromGrid\", grid.width(), grid.height());\n    setSize(grid.width(), grid.height());\n\n    bool wasAutoRepaint = isAutoRepaint();\n    setAutoRepaint(false);\n\n    GThread::runOnQtGuiThread([this, &grid]() {\n        ensureBackgroundImage();\n        lockForWrite();\n        for (int row = 0, width = grid.width(), height = grid.height(); row < height; row++) {\n            for (int col = 0; col < width; col++) {\n                int argb = GColor::fixAlpha(grid[row][col]);\n                _backgroundImage->setPixel(col, row, static_cast<unsigned int>(argb));\n            }\n        }\n        unlock();\n    });\n\n    if (wasAutoRepaint) {\n        setAutoRepaint(wasAutoRepaint);\n        conditionalRepaint();\n    }\n}\n\nstd::string GCanvas::getBackground() const {\n    return GDrawingSurface::getBackground();\n}\n\nint GCanvas::getBackgroundInt() const {\n    return GDrawingSurface::getBackgroundInt();\n}\n\nGObject* GCanvas::getElement(int index) const {\n    lockForReadConst();\n    GObject* result = _gcompound.getElement(index);\n    unlockConst();\n    return result;\n}\n\nGObject* GCanvas::getElementAt(double x, double y) const {\n    lockForReadConst();\n    GObject* result = _gcompound.getElementAt(x, y);\n    unlockConst();\n    return result;\n}\n\nint GCanvas::getElementCount() const {\n    lockForReadConst();\n    int result = _gcompound.getElementCount();\n    unlockConst();\n    return result;\n}\n\nstd::string GCanvas::getFilename() const {\n    return _filename;\n}\n\nstd::string GCanvas::getFont() const {\n    return GDrawingSurface::getFont();\n}\n\n_Internal_QWidget* GCanvas::getInternalWidget() const {\n    return _iqcanvas;\n}\n\nint GCanvas::getPixel(double x, double y) const {\n    checkBounds(\"GCanvas::getPixel\", x, y, getWidth(), getHeight());\n    ensureBackgroundImageConstHack();\n    lockForReadConst();\n    int pixel = _backgroundImage->pixel(static_cast<int>(x), static_cast<int>(y)) & 0x00ffffff;\n    unlockConst();\n    return pixel;\n}\n\nint GCanvas::getPixelARGB(double x, double y) const {\n    checkBounds(\"GCanvas::getPixelARGB\", x, y, getWidth(), getHeight());\n    ensureBackgroundImageConstHack();\n    lockForReadConst();\n    int pixel = static_cast<int>(_backgroundImage->pixel(static_cast<int>(x), static_cast<int>(y)));\n    unlockConst();\n    return pixel;\n}\n\nGrid<int> GCanvas::getPixels() const {\n    ensureBackgroundImageConstHack();\n    lockForReadConst();\n    int w = static_cast<int>(getWidth());\n    int h = static_cast<int>(getHeight());\n    Grid<int> grid(h, w);\n    for (int y = 0; y < h; y++) {\n        for (int x = 0; x < w; x++) {\n            grid[y][x] = _backgroundImage->pixel(x, y) & 0x00ffffff;\n        }\n    }\n    unlockConst();\n    return grid;\n}\n\nGrid<int> GCanvas::getPixelsARGB() const {\n    ensureBackgroundImageConstHack();\n    lockForReadConst();\n    Grid<int> grid(static_cast<int>(getHeight()), static_cast<int>(getWidth()));\n    for (int y = 0; y < static_cast<int>(getHeight()); y++) {\n        for (int x = 0; x < static_cast<int>(getWidth()); x++) {\n            grid[y][x] = static_cast<int>(_backgroundImage->pixel(x, y));\n        }\n    }\n    unlockConst();\n    return grid;\n}\n\nstd::string GCanvas::getType() const {\n    return \"GCanvas\";\n}\n\nQWidget* GCanvas::getWidget() const {\n    return static_cast<QWidget*>(_iqcanvas);\n}\n\nbool GCanvas::isAutoRepaint() const {\n    return _gcompound.isAutoRepaint();\n}\n\nvoid GCanvas::load(const std::string& filename) {\n    // for efficiency, let's at least check whether the file exists\n    // and throw error immediately rather than contacting the back-end\n    if (!fileExists(filename)) {\n        error(\"GCanvas::load: file not found: \" + filename);\n    }\n\n    bool hasError = false;\n    GThread::runOnQtGuiThread([this, filename, &hasError]() {\n        ensureBackgroundImage();\n        lockForWrite();\n        if (!_backgroundImage->load(QString::fromStdString(filename))) {\n            hasError = true;\n            unlock();\n            return;\n        }\n\n        _filename = filename;\n        GInteractor::setSize(_backgroundImage->width(), _backgroundImage->height());\n        // setSize(_qimage->width(), _qimage->height());\n        unlock();\n        conditionalRepaint();\n    });\n\n    if (hasError) {\n        error(\"GCanvas::load: failed to load from \" + filename);\n    }\n}\n\nbool GCanvas::loadFromStream(std::istream& input) {\n    // buffer bytes into a std::string\n    std::ostringstream byteStream;\n    byteStream << input.rdbuf();\n    std::string bytes = byteStream.str();\n\n    bool hasError = false;\n    GThread::runOnQtGuiThread([&, this]() {\n        ensureBackgroundImage();\n        lockForWrite();\n        if (!_backgroundImage->loadFromData(reinterpret_cast<const uchar *>(bytes.data()), bytes.length())) {\n            hasError = true;\n            unlock();\n            return;\n        }\n\n        GInteractor::setSize(_backgroundImage->width(), _backgroundImage->height());\n        // setSize(_qimage->width(), _qimage->height());\n        unlock();\n        conditionalRepaint();\n    });\n\n    return !hasError;\n}\n\nvoid GCanvas::notifyOfResize(double width, double height) {\n    if (_backgroundImage) {\n        GThread::runOnQtGuiThread([this, width, height]() {\n            // make new image buffer of the new size\n            lockForWrite();\n            QImage* newImage = new QImage(\n                        static_cast<int>(width),\n                        static_cast<int>(height), QImage::Format_ARGB32);\n            if (!_backgroundColor.empty()) {\n                if (GColor::hasAlpha(_backgroundColor)) {\n                    newImage->fill(static_cast<unsigned int>(_backgroundColorInt));\n                } else {\n                    newImage->fill(static_cast<unsigned int>(_backgroundColorInt) | 0xff000000);\n                }\n            }\n\n            // draw any previous contents onto it\n            if (newImage->paintEngine()) {\n                QPainter painter(newImage);\n                painter.drawImage(0, 0, *_backgroundImage);\n            }\n\n            // TODO: delete _backgroundImage;\n            _backgroundImage = newImage;\n            unlock();\n            conditionalRepaint();\n        });\n    }\n}\n\nvoid GCanvas::remove(GObject* gobj) {\n    GThread::runOnQtGuiThread([this, gobj]() {\n        lockForWrite();\n        _gcompound.remove(gobj);\n        unlock();\n    });\n}\n\nvoid GCanvas::remove(GObject& gobj) {\n    GThread::runOnQtGuiThread([this, &gobj]() {\n        lockForWrite();\n        _gcompound.remove(gobj);\n        unlock();\n    });\n}\n\nvoid GCanvas::removeAll() {\n    GThread::runOnQtGuiThread([this]() {\n        lockForWrite();\n        _gcompound.removeAll();\n        unlock();\n    });\n}\n\nvoid GCanvas::repaint() {\n    GThread::runOnQtGuiThreadAsync([this]() {\n        lockForRead();\n        getWidget()->repaint();\n        unlock();\n        // _gcompound.repaint();   // runs on Qt GUI thread\n    });\n}\n\nvoid GCanvas::repaintRegion(int x, int y, int width, int height) {\n    GThread::runOnQtGuiThreadAsync([this, x, y, width, height]() {\n        lockForRead();\n        getWidget()->repaint(x, y, width, height);\n        unlock();\n    });\n}\n\nvoid GCanvas::resize(double width, double height, bool /* retain */) {\n    checkSize(\"GCanvas::resize\", width, height);\n\n    // TODO\n    setSize(width, height);\n\n    conditionalRepaint();\n}\n\nvoid GCanvas::save(const std::string& filename) {\n    GThread::runOnQtGuiThread([this, filename]() {\n        ensureBackgroundImage();\n        lockForRead();\n        if (!_gcompound.isEmpty()) {\n            // flatten image in a copy object, then save\n            QImage imageCopy = this->_backgroundImage->copy(\n                        0, 0,\n                        static_cast<int>(getWidth()), static_cast<int>(getHeight()));\n            QPainter painter(&imageCopy);\n            painter.setRenderHint(QPainter::Antialiasing, GObject::isAntiAliasing());\n            painter.setRenderHint(QPainter::TextAntialiasing, GObject::isAntiAliasing());\n            _gcompound.draw(&painter);\n            painter.end();\n            bool result = imageCopy.save(QString::fromStdString(filename));\n            unlock();\n            if (!result) {\n                error(\"GCanvas::save: failed to save to \" + filename);\n            }\n        } else {\n            // save it myself\n            bool result = _backgroundImage->save(QString::fromStdString(filename));\n            unlock();\n            if (!result) {\n                error(\"GCanvas::save: failed to save to \" + filename);\n            }\n        }\n    });\n    _filename = filename;\n}\n\nvoid GCanvas::setAutoRepaint(bool autoRepaint) {\n    GThread::runOnQtGuiThread([this, autoRepaint]() {\n        lockForWrite();\n        _gcompound.setAutoRepaint(autoRepaint);\n        unlock();\n    });\n}\n\nvoid GCanvas::setBackground(int color) {\n    GDrawingSurface::setBackground(color);\n    GInteractor::setBackground(color);\n    if (_backgroundImage) {\n        // Slightly confusing semantics here;\n        // if you draw some shapes on a canvas (with draw() variants) and then set its background,\n        // the shapes will get wiped out.\n        // The lesson is, set the background first before drawing stuff.\n        // Or add your shapes using add() rather than draw() so they sit atop the background.\n        GThread::runOnQtGuiThread([this, color]() {\n            lockForWrite();\n            _backgroundImage->fill(static_cast<unsigned int>(color));\n            unlock();\n        });\n        conditionalRepaint();\n    }\n}\n\nvoid GCanvas::setBackground(const std::string& color) {\n    setBackground(GColor::convertColorToRGB(color));\n}\n\nvoid GCanvas::setColor(int color) {\n    GDrawingSurface::setColor(color);\n}\n\nvoid GCanvas::setColor(const std::string& color) {\n    setColor(GColor::convertColorToRGB(color));\n}\n\nvoid GCanvas::setFont(const QFont& font) {\n    GDrawingSurface::setFont(font);\n}\n\nvoid GCanvas::setFont(const std::string& font) {\n    GDrawingSurface::setFont(font);\n}\n\nvoid GCanvas::setForeground(int color) {\n    GDrawingSurface::setForeground(color);\n}\n\nvoid GCanvas::setForeground(const std::string& color) {\n    setForeground(GColor::convertColorToRGB(color));\n}\n\nvoid GCanvas::setKeyListener(GEventListener func) {\n    GThread::runOnQtGuiThread([this]() {\n        lockForWrite();\n        _iqcanvas->setFocusPolicy(Qt::StrongFocus);\n        unlock();\n    });\n    GInteractor::setKeyListener(func);   // call super\n}\n\nvoid GCanvas::setKeyListener(GEventListenerVoid func) {\n    GThread::runOnQtGuiThread([this]() {\n        lockForWrite();\n        _iqcanvas->setFocusPolicy(Qt::StrongFocus);\n        unlock();\n    });\n    GInteractor::setKeyListener(func);   // call super\n}\n\nvoid GCanvas::setPixel(double x, double y, int rgb) {\n    require::inRange2D(x, y, getWidth(), getHeight(), \"GCanvas::setPixel\", \"x\", \"y\");\n    checkColor(\"GCanvas::setPixel\", rgb);\n    GThread::runOnQtGuiThread([this, x, y, rgb]() {\n        ensureBackgroundImage();\n        lockForWrite();\n        int argb = GColor::fixAlpha(rgb);\n        _backgroundImage->setPixel(\n                static_cast<int>(x),\n                static_cast<int>(y),\n                static_cast<unsigned int>(argb));\n        unlock();\n        conditionalRepaintRegion(\n                static_cast<int>(x),\n                static_cast<int>(y),\n                /* width */ 1,\n                /* height */ 1);\n    });\n}\n\nvoid GCanvas::setPixel(double x, double y, int r, int g, int b) {\n    int rgb = GColor::convertRGBToRGB(r, g, b);\n    int argb = rgb | 0xff000000;\n    setPixel(x, y, argb);\n}\n\nvoid GCanvas::setPixelARGB(double x, double y, int argb) {\n    require::inRange2D(x, y, getWidth(), getHeight(), \"GCanvas::setPixelARGB\", \"x\", \"y\");\n    checkColor(\"GCanvas::setPixel\", argb);\n    GThread::runOnQtGuiThread([this, x, y, argb]() {\n        ensureBackgroundImage();\n        lockForWrite();\n        _backgroundImage->setPixel((int) x, (int) y, argb);\n        unlock();\n        conditionalRepaintRegion((int) x, (int) y, /* width */ 1, /* height */ 1);\n    });\n}\n\nvoid GCanvas::setPixelARGB(double x, double y, int a, int r, int g, int b) {\n    setPixelARGB(x, y, GColor::convertARGBToARGB(a, r, g, b));\n}\n\nvoid GCanvas::setPixels(const Grid<int>& pixels) {\n    // TODO: is this redundant with fromGrid?\n    ensureBackgroundImage();\n    if (pixels.width() != (int) getWidth() || pixels.height() != (int) getHeight()) {\n        // TODO\n        // resize(pixels.width(), pixels.height());\n        error(\"GCanvas::setPixels: wrong size\");\n    }\n    GThread::runOnQtGuiThread([this, &pixels]() {\n        lockForWrite();\n        for (int y = 0, w = pixels.width(), h = pixels.height(); y < h; y++) {\n            for (int x = 0; x < w; x++) {\n                int argb = pixels[y][x] | 0xff000000;\n                _backgroundImage->setPixel(x, y, static_cast<unsigned int>(argb));\n            }\n        }\n        unlock();\n        conditionalRepaint();\n    });\n}\n\nvoid GCanvas::setPixelsARGB(const Grid<int>& pixels) {\n    ensureBackgroundImage();\n    if (pixels.width() != (int) getWidth() || pixels.height() != (int) getHeight()) {\n        // TODO\n        // resize(pixels.width(), pixels.height());\n        error(\"GCanvas::setPixels: wrong size\");\n    }\n\n    GThread::runOnQtGuiThread([this, &pixels]() {\n        lockForWrite();\n        for (int y = 0; y < pixels.height(); y++) {\n            for (int x = 0; x < pixels.width(); x++) {\n                _backgroundImage->setPixel(x, y, pixels[y][x]);\n            }\n        }\n        unlock();\n        conditionalRepaint();\n    });\n}\n\nGImage* GCanvas::toGImage() const {\n    ensureBackgroundImageConstHack();\n    lockForReadConst();\n    GImage* image = new GImage(_backgroundImage);\n    unlockConst();\n    return image;\n\n//    GCanvas* that = const_cast<GCanvas*>(this);\n//    QImage* backgroundImage = _backgroundImage;\n//    GImage* gimage = nullptr;\n//    GThread::runOnQtGuiThread([that, backgroundImage, &gimage]() {\n//        QImage* copy = new QImage((int) that->getWidth(), (int) that->getHeight(), QImage::Format_ARGB32);\n//        *copy = backgroundImage->copy();\n//        QPainter painter(copy);\n//        painter.setRenderHint(QPainter::Antialiasing, GObject::isAntiAliasing());\n//        painter.setRenderHint(QPainter::TextAntialiasing, GObject::isAntiAliasing());\n//        that->_gcompound.draw(&painter);\n//        painter.end();\n\n//        gimage = new GImage(copy);\n//    });\n//    return gimage;\n}\n\nGrid<int> GCanvas::toGrid() const {\n    Grid<int> grid;\n    toGrid(grid);\n    return grid;\n}\n\nvoid GCanvas::toGrid(Grid<int>& grid) const {\n    grid.resize(getHeight(), getWidth());\n    lockForReadConst();\n    for (int row = 0, width = (int) getWidth(), height = (int) getHeight(); row < height; row++) {\n        for (int col = 0; col < width; col++) {\n            grid[row][col] = _backgroundImage->pixel(col, row);\n        }\n    }\n    unlockConst();\n}\n\n\n_Internal_QCanvas::_Internal_QCanvas(GCanvas* gcanvas, QWidget* parent)\n        : QWidget(parent),\n          _gcanvas(gcanvas) {\n    require::nonNull(gcanvas, \"_Internal_QCanvas::constructor\");\n    setObjectName(QString::fromStdString(\"_Internal_QCanvas_\" + std::to_string(gcanvas->getID())));\n\n    // set default white background color\n//    QPalette pal = palette();\n//    pal.setColor(QPalette::Background, Qt::white);\n//    setAutoFillBackground(true);\n//    setPalette(pal);\n    setMouseTracking(true);   // causes mouse move events to occur\n}\n\nvoid _Internal_QCanvas::detach() {\n    _gcanvas = nullptr;\n}\n\nvoid _Internal_QCanvas::enterEvent(QEvent* event) {\n    QWidget::enterEvent(event);   // call super\n    if (!_gcanvas || !_gcanvas->isAcceptingEvent(\"mouseenter\")) {\n        return;\n    }\n    _gcanvas->fireGEvent(event, MOUSE_ENTERED, \"mouseenter\");\n}\n\nvoid _Internal_QCanvas::keyPressEvent(QKeyEvent* event) {\n    QWidget::keyPressEvent(event);   // call super\n    if (!_gcanvas || !_gcanvas->isAcceptingEvent(\"keypress\")) {\n        return;\n    }\n    _gcanvas->fireGEvent(event, KEY_PRESSED, \"keypress\");\n}\n\nvoid _Internal_QCanvas::keyReleaseEvent(QKeyEvent* event) {\n    QWidget::keyReleaseEvent(event);   // call super\n    if (!_gcanvas) {\n        return;\n    }\n\n    if (_gcanvas->isAcceptingEvent(\"keyrelease\")) {\n        _gcanvas->fireGEvent(event, KEY_RELEASED, \"keyrelease\");\n    }\n    if (_gcanvas->isAcceptingEvent(\"keytype\")) {\n        _gcanvas->fireGEvent(event, KEY_TYPED, \"keytype\");\n    }\n}\n\nvoid _Internal_QCanvas::leaveEvent(QEvent* event) {\n    QWidget::leaveEvent(event);   // call super\n    if (!_gcanvas || !_gcanvas->isAcceptingEvent(\"mouseexit\")) {\n        return;\n    }\n    _gcanvas->fireGEvent(event, MOUSE_EXITED, \"mouseexit\");\n}\n\nvoid _Internal_QCanvas::mouseDoubleClickEvent(QMouseEvent* event) {\n    QWidget::mouseDoubleClickEvent(event);   // call super\n    emit doubleClicked();\n    if (!_gcanvas || !_gcanvas->isAcceptingEvent(\"doubleclick\")) {\n        return;\n    }\n    GEvent mouseEvent(\n                /* class  */ MOUSE_EVENT,\n                /* type   */ MOUSE_DOUBLE_CLICKED,\n                /* name   */ \"doubleclick\",\n                /* source */ _gcanvas);\n    mouseEvent.setActionCommand(_gcanvas->getActionCommand());\n    mouseEvent.setButton((int) event->button());\n    mouseEvent.setX(event->x());\n    mouseEvent.setY(event->y());\n    _gcanvas->fireEvent(mouseEvent);\n}\n\nvoid _Internal_QCanvas::mouseMoveEvent(QMouseEvent* event) {\n    QWidget::mouseMoveEvent(event);   // call super\n    if (!_gcanvas) {\n        return;\n    }\n    if (!_gcanvas->isAcceptingEvent(\"mousemove\")\n            && !_gcanvas->isAcceptingEvent(\"mousedrag\")) {\n        return;\n    }\n    _gcanvas->fireGEvent(event, MOUSE_MOVED, \"mousemove\");\n    if (event->buttons() != 0) {\n        // mouse drag\n        _gcanvas->fireGEvent(event, MOUSE_DRAGGED, \"mousedrag\");\n    }\n}\n\nvoid _Internal_QCanvas::mousePressEvent(QMouseEvent* event) {\n    QWidget::mousePressEvent(event);   // call super\n    if (!_gcanvas || !_gcanvas->isAcceptingEvent(\"mousepress\")) {\n        return;\n    }\n    _gcanvas->fireGEvent(event, MOUSE_PRESSED, \"mousepress\");\n}\n\nvoid _Internal_QCanvas::mouseReleaseEvent(QMouseEvent* event) {\n    QWidget::mouseReleaseEvent(event);   // call super\n    if (!_gcanvas) {\n        return;\n    }\n    if (_gcanvas->isAcceptingEvent(\"mouserelease\")) {\n        _gcanvas->fireGEvent(event, MOUSE_RELEASED, \"mouserelease\");\n    }\n\n    if (_gcanvas->isAcceptingEvent(\"click\")) {\n        _gcanvas->fireGEvent(event, MOUSE_CLICKED, \"click\");\n    }\n}\n\nvoid _Internal_QCanvas::paintEvent(QPaintEvent* event) {\n    QWidget::paintEvent(event);   // call super\n    if (!_gcanvas) {\n        return;\n    }\n\n    QPainter painter(this);\n    // g.setCompositionMode(QPainter::CompositionMode_DestinationOver);\n    // g.setRenderHints(QPainter::HighQualityAntialiasing);\n    painter.setRenderHint(QPainter::Antialiasing, GObject::isAntiAliasing());\n    painter.setRenderHint(QPainter::TextAntialiasing, GObject::isAntiAliasing());\n    _gcanvas->draw(&painter);\n    painter.end();\n}\n\nvoid _Internal_QCanvas::resizeEvent(QResizeEvent* event) {\n    QWidget::resizeEvent(event);   // call super\n    if (!_gcanvas) {\n        return;\n    }\n    QSize size = event->size();\n    _gcanvas->notifyOfResize(size.width(), size.height());\n}\n\nvoid _Internal_QCanvas::setCanvasSize(double width, double height) {\n    QWidget::setMinimumSize(QSize((int) width, (int) height));\n}\n\nQSize _Internal_QCanvas::sizeHint() const {\n    if (hasPreferredSize()) {\n        return getPreferredSize();\n    } else {\n        return QWidget::sizeHint();\n    }\n}\n\nvoid _Internal_QCanvas::wheelEvent(QWheelEvent* event) {\n    QWidget::wheelEvent(event);   // call super\n    if (!_gcanvas) {\n        return;\n    }\n    QPoint delta = event->angleDelta();\n    if (delta.y() < 0) {\n        // scroll down\n        if (_gcanvas->isAcceptingEvent(\"mousewheeldown\")) {\n            _gcanvas->fireGEvent(event, MOUSE_WHEEL_DOWN, \"mousewheeldown\");\n        }\n    } else if (delta.y() > 0) {\n        // scroll up\n        if (_gcanvas->isAcceptingEvent(\"mousewheelup\")) {\n            _gcanvas->fireGEvent(event, MOUSE_WHEEL_UP, \"mousewheelup\");\n        }\n    }\n}\n\n#ifdef SPL_PRECOMPILE_QT_MOC_FILES\n#define INTERNAL_INCLUDE 1\n#include \"moc_gcanvas.cpp\"   // speeds up compilation of auto-generated Qt files\n#undef INTERNAL_INCLUDE\n#endif // SPL_PRECOMPILE_QT_MOC_FILES\n\n/*\n * File: ginteractor.cpp\n * ---------------------\n *\n * @author Marty Stepp\n * @version 2019/04/23\n * - added set/removeActionListener\n * - added set/removeClickListener\n * - added set/removeDoubleClickListener\n * - added set/removeKeyListener\n * - added set/removeMouseListener\n * @version 2019/04/22\n * - added setIcon with QIcon and QPixmap\n * @version 2019/04/10\n * - bug fix for setBackground on GTextArea and GBrowserPane\n * @version 2018/09/20\n * - bug fix for requestFocus threading\n * @version 2018/09/04\n * - added get/setName, getID\n * @version 2018/08/23\n * - renamed to ginteractor.cpp to replace Java version\n * @version 2018/06/29\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"ginteractor.h\"\n#include <iostream>\n#include <sstream>\n#define INTERNAL_INCLUDE 1\n#include \"gcolor.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gfont.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gthread.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gwindow.h\"\n#define INTERNAL_INCLUDE 1\n#include \"qtgui.h\"\n#define INTERNAL_INCLUDE 1\n#include \"require.h\"\n#undef INTERNAL_INCLUDE\n\nint GInteractor::_interactorCount = 0;\n\nGInteractor::GInteractor()\n        : _actionCommand(\"\"),\n          _actionEventType(\"click\"),\n          _icon(\"\"),\n          _name(\"\"),\n          _id(-1),\n          _container(nullptr),\n          _lock(QReadWriteLock::Recursive) {\n    QtGui::instance()->initializeQt();   // make sure Qt system is initialized\n    _id = ++_interactorCount;            // set ID to number of interactors + 1\n}\n\nGInteractor::~GInteractor() {\n    // empty\n}\n\nvoid GInteractor::addActionListener() {\n    // empty\n}\n\nbool GInteractor::eventsEnabled() const {\n    return GObservable::eventsEnabled() && getWidget() != nullptr && isVisible();\n}\n\nstd::string GInteractor::getAccelerator() const {\n    // override in subclasses\n    return \"\";\n}\n\nstd::string GInteractor::getActionCommand() const {\n    return _actionCommand;\n}\n\nstd::string GInteractor::getActionEventType() const {\n    return _actionEventType;\n}\n\nstd::string GInteractor::getBackground() const {\n    int rgb = getBackgroundInt();\n    return GColor::convertRGBToColor(rgb);\n}\n\nint GInteractor::getBackgroundInt() const {\n    QColor color = getWidget()->palette().color(getWidget()->backgroundRole());\n    return GColor::convertQColorToRGB(color);\n}\n\nGRectangle GInteractor::getBounds() const {\n    return GRectangle(getX(), getY(), getWidth(), getHeight());\n}\n\nstd::string GInteractor::getColor() const {\n    int rgb = getColorInt();\n    return GColor::convertRGBToColor(rgb);\n}\n\nint GInteractor::getColorInt() const {\n    QColor color = getWidget()->palette().color(getWidget()->foregroundRole());\n    return GColor::convertQColorToRGB(color);\n}\n\nGContainer* GInteractor::getContainer() const {\n    return _container;\n}\n\nstd::string GInteractor::getDefaultInteractorName() const {\n    return getType() + \"_\" + std::to_string(getID());\n}\n\nstd::string GInteractor::getFont() const {\n    return GFont::toFontString(getWidget()->font());\n}\n\nstd::string GInteractor::getForeground() const {\n    int rgb = getForegroundInt();\n    return GColor::convertRGBToColor(rgb);\n}\n\nint GInteractor::getForegroundInt() const {\n    QColor color = getWidget()->palette().color(getWidget()->foregroundRole());\n    return GColor::convertQColorToRGB(color);\n}\n\ndouble GInteractor::getHeight() const {\n    return getWidget()->height();\n}\n\nint GInteractor::getID() const {\n    return _id;\n}\n\nstd::string GInteractor::getIcon() const {\n    return _icon;\n}\n\nGPoint GInteractor::getLocation() const {\n    return GPoint(getX(), getY());\n}\n\n/* static */ QWidget* GInteractor::getInternalParent(QWidget* parent) {\n    return parent ? parent : (QWidget*) GWindow::getLastWindow();\n}\n\ndouble GInteractor::getMinimumHeight() const {\n    return getMinimumSize().getHeight();\n}\n\nGDimension GInteractor::getMinimumSize() const {\n    QSize size = getInternalWidget()->getMinimumSize();\n    return GDimension(size.width(), size.height());\n}\n\ndouble GInteractor::getMinimumWidth() const {\n    return getMinimumSize().getWidth();\n}\n\nchar GInteractor::getMnemonic() const {\n    // TODO\n    return '?';\n}\n\nstd::string GInteractor::getName() const {\n    if (_name.empty()) {\n        return getDefaultInteractorName();\n    } else {\n        return _name;\n    }\n}\n\ndouble GInteractor::getPreferredHeight() const {\n    return getPreferredSize().getHeight();\n}\n\nGDimension GInteractor::getPreferredSize() const {\n    QSize size;\n    if (getInternalWidget()->hasPreferredSize()) {\n        size = getInternalWidget()->getPreferredSize();\n    } else {\n        size = getWidget()->sizeHint();\n    }\n    return GDimension(size.width(), size.height());\n}\n\ndouble GInteractor::getPreferredWidth() const {\n    return getPreferredSize().getWidth();\n}\n\nGDimension GInteractor::getSize() const {\n    return GDimension(getWidth(), getHeight());\n}\n\ndouble GInteractor::getWidth() const {\n    return getWidget()->width();\n}\n\ndouble GInteractor::getX() const {\n    return getWidget()->x();\n}\n\ndouble GInteractor::getY() const {\n    return getWidget()->y();\n}\n\nbool GInteractor::inBounds(double x, double y) const {\n    return 0 <= x && x < getWidth() && 0 <= y && y < getHeight();\n}\n\nbool GInteractor::inBounds(int x, int y) const {\n    return 0 <= x && x < (int) getWidth() && 0 <= y && y < (int) getHeight();\n}\n\nbool GInteractor::isEnabled() const {\n    return getWidget()->isEnabled();\n}\n\nbool GInteractor::isVisible() const {\n    return getWidget()->isVisible();\n}\n\nvoid GInteractor::lockForRead() {\n    _lock.lockForRead();\n}\n\nvoid GInteractor::lockForReadConst() const {\n    GInteractor* that = const_cast<GInteractor*>(this);\n    that->lockForRead();\n}\n\nvoid GInteractor::lockForWrite() {\n    _lock.lockForWrite();\n}\n\nvoid GInteractor::lockForWriteConst() const {\n    GInteractor* that = const_cast<GInteractor*>(this);\n    that->lockForWrite();\n}\n\nstd::string GInteractor::normalizeAccelerator(const std::string& accelerator) {\n    std::string acceleratorStr = stringReplace(accelerator, \"Alt-\", \"Alt+\");\n    acceleratorStr = stringReplace(acceleratorStr, \"Command-\", \"Command+\");\n    acceleratorStr = stringReplace(acceleratorStr, \"Ctrl-\", \"Ctrl+\");\n    acceleratorStr = stringReplace(acceleratorStr, \"Meta-\", \"Meta+\");\n    acceleratorStr = stringReplace(acceleratorStr, \"Shift-\", \"Shift+\");\n    return acceleratorStr;\n}\n\nvoid GInteractor::removeActionListener() {\n    removeEventListener(getActionEventType());\n}\n\nvoid GInteractor::removeClickListener() {\n    removeEventListener(\"click\");\n}\n\nvoid GInteractor::removeDoubleClickListener() {\n    removeEventListener(\"doubleclick\");\n}\n\nvoid GInteractor::removeKeyListener() {\n    removeEventListeners({\"keypress\",\n                         \"keyrelease\",\n                         \"keytype\"});\n}\n\nvoid GInteractor::removeMouseListener() {\n    removeEventListeners({\"click\",\n                         \"mousedrag\",\n                         \"mouseenter\",\n                         \"mouseexit\",\n                         \"mousemove\",\n                         \"mousepress\",\n                         \"mouserelease\",\n                         \"mousewheeldown\",\n                         \"mousewheelup\"});\n}\n\nvoid GInteractor::requestFocus() {\n    GThread::runOnQtGuiThread([this]() {\n        getWidget()->setFocus();\n    });\n}\n\nvoid GInteractor::setActionCommand(const std::string& actionCommand) {\n    _actionCommand = actionCommand;\n}\n\nvoid GInteractor::setAccelerator(const std::string& /* accelerator */) {\n    // override in subclasses\n}\n\nvoid GInteractor::setActionListener(GEventListener func) {\n    setEventListener(getActionEventType(), func);\n}\n\nvoid GInteractor::setActionListener(GEventListenerVoid func) {\n    setEventListener(getActionEventType(), func);\n}\n\nvoid GInteractor::setBackground(int rgb) {\n    GThread::runOnQtGuiThread([this, rgb]() {\n        QPalette palette(getWidget()->palette());\n        palette.setColor(getWidget()->backgroundRole(), QColor(rgb));\n\n        // additional palette color settings for GChooser and other widgets\n        // TODO: does not totally work for some widgets, e.g. GChooser popup menu\n        if (getType() == \"GChooser\") {\n            palette.setColor(QPalette::Base, QColor(rgb));\n            palette.setColor(QPalette::Active, QPalette::Button, QColor(rgb));\n            palette.setColor(QPalette::Inactive, QPalette::Button, QColor(rgb));\n        } else if (getType() == \"GTextArea\"\n                   || getType() == \"GBrowserPane\") {\n            palette.setColor(QPalette::Base, QColor(rgb));\n        }\n\n        getWidget()->setAutoFillBackground(true);\n        getWidget()->setPalette(palette);\n    });\n}\n\nvoid GInteractor::setBackground(const std::string& color) {\n    if (GColor::hasAlpha(color)) {\n        int argb = GColor::convertColorToARGB(color);\n        GThread::runOnQtGuiThread([this, argb]() {\n            QColor qcolor = GColor::toQColorARGB(argb);\n            QPalette palette(getWidget()->palette());\n            palette.setColor(getWidget()->backgroundRole(), qcolor);\n\n            // additional palette color settings for GChooser and other widgets\n            // TODO: does not totally work for some widgets, e.g. GChooser popup menu\n            if (getType() == \"GChooser\") {\n                palette.setColor(QPalette::Base, qcolor);\n                palette.setColor(QPalette::Active, QPalette::Button, qcolor);\n                palette.setColor(QPalette::Inactive, QPalette::Button, qcolor);\n            } else if (getType() == \"GTextArea\"\n                       || getType() == \"GBrowserPane\") {\n                palette.setColor(QPalette::Base, qcolor);\n            }\n\n            getWidget()->setAutoFillBackground(true);\n            getWidget()->setPalette(palette);\n        });\n    } else {\n        int rgb = GColor::convertColorToRGB(color);\n        setBackground(rgb);\n    }\n}\n\nvoid GInteractor::setBounds(double x, double y, double width, double height) {\n    GThread::runOnQtGuiThread([this, x, y, width, height]() {\n        getWidget()->setGeometry((int) x, (int) y, (int) width, (int) height);\n        getWidget()->setFixedSize((int) width, (int) height);\n    });\n}\n\nvoid GInteractor::setBounds(const GRectangle& size) {\n    setBounds(size.getX(), size.getY(), size.getWidth(), size.getHeight());\n}\n\nvoid GInteractor::setClickListener(GEventListener func) {\n    setEventListener(\"click\", func);\n}\n\nvoid GInteractor::setClickListener(GEventListenerVoid func) {\n    setEventListener(\"click\", func);\n}\n\nvoid GInteractor::setColor(int rgb) {\n    setForeground(rgb);\n}\n\nvoid GInteractor::setColor(const std::string& color) {\n    setForeground(color);\n}\n\nvoid GInteractor::setContainer(GContainer* container) {\n    _container = container;\n    if (!container) {\n        // widgets that are not in any container should not be shown on screen\n        // (they will awkwardly hover at (0, 0) if they are shown)\n        QWidget* widget = getWidget();\n        GThread::runOnQtGuiThread([widget]() {\n            widget->setParent(nullptr);\n        });\n        setVisible(false);\n    }\n}\n\nvoid GInteractor::setDoubleClickListener(GEventListener func) {\n    setEventListener(\"doubleclick\", func);\n}\n\nvoid GInteractor::setDoubleClickListener(GEventListenerVoid func) {\n    setEventListener(\"doubleclick\", func);\n}\n\nvoid GInteractor::setEnabled(bool value) {\n    GThread::runOnQtGuiThread([this, value]() {\n        getWidget()->setEnabled(value);\n    });\n}\n\nvoid GInteractor::setForeground(int rgb) {\n    GThread::runOnQtGuiThread([this, rgb]() {\n        QPalette palette(getWidget()->palette());\n        palette.setColor(getWidget()->foregroundRole(), QColor(rgb));\n        // TODO: does not totally work for some widgets, e.g. GChooser popup menu\n        getWidget()->setPalette(palette);\n    });\n}\n\nvoid GInteractor::setForeground(const std::string& color) {\n    if (GColor::hasAlpha(color)) {\n        int argb = GColor::convertColorToARGB(color);\n        GThread::runOnQtGuiThread([this, argb]() {\n            QPalette palette(getWidget()->palette());\n            palette.setColor(getWidget()->foregroundRole(), GColor::toQColorARGB(argb));\n            // TODO: does not totally work for some widgets, e.g. GChooser popup menu\n            getWidget()->setPalette(palette);\n        });\n    } else {\n        int rgb = GColor::convertColorToRGB(color);\n        setForeground(rgb);\n    }\n}\n\nvoid GInteractor::setFont(const QFont& font) {\n    GThread::runOnQtGuiThread([this, font]() {\n        getWidget()->setFont(font);\n    });\n}\n\nvoid GInteractor::setFont(const std::string& font) {\n    setFont(GFont::toQFont(font));\n}\n\nvoid GInteractor::setHeight(double height) {\n    require::nonNegative(height, \"GInteractor::setHeight\", \"height\");\n    GThread::runOnQtGuiThread([this, height]() {\n        getWidget()->setFixedHeight((int) height);\n    });\n}\n\nvoid GInteractor::setIcon(const QIcon& /*icon*/) {\n    // override in subclasses as appropriate\n}\n\nvoid GInteractor::setIcon(const QPixmap& /*icon*/) {\n    // override in subclasses as appropriate\n}\n\nvoid GInteractor::setIcon(const std::string& filename, bool /* retainIconSize */) {\n    _icon = filename;\n\n    // override in subclasses as appropriate; make sure to call super\n}\n\nvoid GInteractor::setKeyListener(GEventListener func) {\n    setEventListeners({\"keypress\",\n                       \"keyrelease\",\n                       \"keytype\"}, func);\n}\n\nvoid GInteractor::setKeyListener(GEventListenerVoid func) {\n    setEventListeners({\"keypress\",\n                       \"keyrelease\",\n                       \"keytype\"}, func);\n}\n\nvoid GInteractor::setLocation(double x, double y) {\n    GThread::runOnQtGuiThread([this, x, y]() {\n        getWidget()->setGeometry(x, y, getWidth(), getHeight());\n    });\n}\n\nvoid GInteractor::setMinimumSize(double width, double height) {\n    require::nonNegative(width, \"GInteractor::setMinimumSize\", \"width\");\n    require::nonNegative(height, \"GInteractor::setMinimumSize\", \"height\");\n    GThread::runOnQtGuiThread([this, width, height]() {\n        getInternalWidget()->setMinimumSize(width, height);\n    });\n}\n\nvoid GInteractor::setMinimumSize(const GDimension& size) {\n    setMinimumSize(size.getWidth(), size.getHeight());\n}\n\nvoid GInteractor::setMnemonic(char /* mnemonic */) {\n    // empty; use an & before mnemonic character in interactor's text instead\n}\n\nvoid GInteractor::setMouseListener(GEventListener func) {\n    setEventListeners({\"click\",\n                       \"mousedrag\",\n                       \"mouseenter\",\n                       \"mouseexit\",\n                       \"mousemove\",\n                       \"mousepress\",\n                       \"mouserelease\",\n                       \"mousewheeldown\",\n                       \"mousewheelup\"}, func);\n}\n\nvoid GInteractor::setMouseListener(GEventListenerVoid func) {\n    setEventListeners({\"click\",\n                       \"mousedrag\",\n                       \"mouseenter\",\n                       \"mouseexit\",\n                       \"mousemove\",\n                       \"mousepress\",\n                       \"mouserelease\",\n                       \"mousewheeldown\",\n                       \"mousewheelup\"}, func);\n}\n\nvoid GInteractor::setName(const std::string& name) {\n    _name = name;\n    // TODO: getWidget()->setObjectName() ?\n}\n\nvoid GInteractor::setPreferredHeight(double height) {\n    setPreferredSize(getPreferredWidth(), height);\n}\n\nvoid GInteractor::setPreferredSize(double width, double height) {\n    require::nonNegative(width, \"GInteractor::setPreferredSize\", \"width\");\n    require::nonNegative(height, \"GInteractor::setPreferredSize\", \"height\");\n    GThread::runOnQtGuiThread([this, width, height]() {\n        getInternalWidget()->setPreferredSize(width, height);\n    });\n}\n\nvoid GInteractor::setPreferredSize(const GDimension& size) {\n    GThread::runOnQtGuiThread([this, size]() {\n        getInternalWidget()->setPreferredSize(size.getWidth(), size.getHeight());\n    });\n}\n\nvoid GInteractor::setPreferredWidth(double width) {\n    setPreferredSize(width, getPreferredHeight());\n}\n\nvoid GInteractor::setSize(double width, double height) {\n    require::nonNegative(width, \"GInteractor::setSize\", \"width\");\n    require::nonNegative(height, \"GInteractor::setSize\", \"height\");\n    GThread::runOnQtGuiThread([this, width, height]() {\n        // setBounds(GRectangle(getX(), getY(), width, height));\n        getWidget()->setGeometry((int) getX(), (int) getY(), (int) width, (int) height);\n        getWidget()->setFixedSize((int) width, (int) height);\n        getWidget()->setMinimumSize((int) width, (int) height);\n    });\n}\n\nvoid GInteractor::setSize(const GDimension& size) {\n    setSize(size.getWidth(), size.getHeight());\n}\n\nvoid GInteractor::setTooltip(const std::string& tooltipText) {\n    GThread::runOnQtGuiThread([this, tooltipText]() {\n        getWidget()->setToolTip(QString::fromStdString(tooltipText));\n    });\n}\n\nvoid GInteractor::setVisible(bool visible) {\n    // don't allow setting visible to true unless widget is in a container\n    if (!visible || _container) {\n        GThread::runOnQtGuiThread([this, visible]() {\n            getWidget()->setVisible(visible);\n        });\n    }\n}\n\nvoid GInteractor::setWidth(double width) {\n    GThread::runOnQtGuiThread([this, width]() {\n        getWidget()->setFixedWidth((int) width);\n    });\n}\n\nvoid GInteractor::setX(double x) {\n    setLocation(x, getY());\n}\n\nvoid GInteractor::setY(double y) {\n    setLocation(getX(), y);\n}\n\nvoid GInteractor::unlock() {\n    _lock.unlock();\n}\n\nvoid GInteractor::unlockConst() const {\n    GInteractor* that = const_cast<GInteractor*>(this);\n    that->unlock();\n}\n\n\n_Internal_QWidget::_Internal_QWidget()\n        : _minimumSize(-1, -1),\n          _preferredSize(-1, -1) {\n    // empty\n}\n\n_Internal_QWidget::~_Internal_QWidget() {\n    detach();\n}\n\nvoid _Internal_QWidget::detach() {\n    // empty\n}\n\nQSize _Internal_QWidget::getMinimumSize() const {\n    return QSize((int) _minimumSize.getWidth(), (int) _minimumSize.getHeight());\n}\n\nbool _Internal_QWidget::hasMinimumSize() const {\n    return _minimumSize.getWidth() >= 0 && _minimumSize.getHeight() >= 0;\n}\n\nQSize _Internal_QWidget::getPreferredSize() const {\n    return QSize((int) _preferredSize.getWidth(), (int) _preferredSize.getHeight());\n}\n\nbool _Internal_QWidget::hasPreferredSize() const {\n    return _preferredSize.getWidth() >= 0 && _preferredSize.getHeight() >= 0;\n}\n\nvoid _Internal_QWidget::setMinimumSize(double width, double height) {\n    _minimumSize = GDimension(width, height);\n}\n\nvoid _Internal_QWidget::setMinimumSize(const QSize& size) {\n    setMinimumSize(size.width(), size.height());\n}\n\nvoid _Internal_QWidget::setPreferredSize(double width, double height) {\n    _preferredSize = GDimension(width, height);\n}\n\nvoid _Internal_QWidget::setPreferredSize(const QSize& size) {\n    setPreferredSize(size.width(), size.height());\n}\n\n/*\n * File: gwindow.cpp\n * -----------------\n *\n * @author Marty Stepp\n * @version 2019/05/05\n * - added static method for isDarkMode checking support\n * - added static methods to ask for system default widget bg/fg color\n * @version 2019/04/27\n * - fixed more bugs with getting/setting window size and location\n * @version 2019/04/25\n * - fixed bugs with getting window geometry and requesting focus\n * @version 2019/04/12\n * - moved pause() headless mode implementation (empty) to console.cpp\n * @version 2019/04/09\n * - added toolbar support\n * @version 2019/02/02\n * - destructor now stops event processing\n * @version 2018/10/20\n * - added high-density screen features\n * @version 2018/10/11\n * - bug fix for compareToImage function\n * @version 2018/09/23\n * - bug fixes for Windows/MinGW compatibility\n * @version 2018/09/19\n * - bug fix for clear() method\n * @version 2018/09/13\n * - updated cast syntax to remove warnings in new compiler versions\n * - updated window parent semantics\n * @version 2018/09/05\n * - refactored to use a border layout GContainer \"content pane\" for storing all interactors\n * @version 2018/08/23\n * - renamed to gwindow.h to replace Java version\n * @version 2018/07/03\n * - thread safety code\n * @version 2018/07/01\n * - 2D graphics/painting functions\n * @version 2018/06/25\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"gwindow.h\"\n#include <QDesktopWidget>\n#include <QMenu>\n#include <QMenuBar>\n#include <QSizePolicy>\n#include <QStatusBar>\n#include <QThread>\n#include <QTimer>\n#include <QToolBar>\n#define INTERNAL_INCLUDE 1\n#include \"filelib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gcolor.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gdiffgui.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gdiffimage.h\"\n#define INTERNAL_INCLUDE 1\n#include \"glabel.h\"\n#define INTERNAL_INCLUDE 1\n#include \"glayout.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gtextfield.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gthread.h\"\n#define INTERNAL_INCLUDE 1\n#include \"qtgui.h\"\n#define INTERNAL_INCLUDE 1\n#include \"require.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#undef INTERNAL_INCLUDE\n\n_Internal_QMainWindow* GWindow::_lastWindow = nullptr;\n/*static*/ const int GWindow::DEFAULT_WIDTH = 500;\n/*static*/ const int GWindow::DEFAULT_HEIGHT = 300;\n/*static*/ const int GWindow::HIGH_DPI_SCREEN_THRESHOLD = 200;\n/*static*/ const int GWindow::STANDARD_SCREEN_DPI = 96;\n/*static*/ const std::string GWindow::DEFAULT_ICON_FILENAME = \"splicon-large.png\";\n\nGWindow::GWindow(bool visible)\n        : _iqmainwindow(nullptr),\n          _contentPane(nullptr),\n          _canvas(nullptr),\n          _resizable(true),\n          _closeOperation(GWindow::CLOSE_DISPOSE),\n          _toolbar(nullptr) {\n    _init(DEFAULT_WIDTH, DEFAULT_HEIGHT, visible);\n}\n\nGWindow::GWindow(double width, double height, bool visible)\n        : _iqmainwindow(nullptr),\n          _contentPane(nullptr),\n          _canvas(nullptr),\n          _resizable(true),\n          _closeOperation(GWindow::CLOSE_DISPOSE),\n          _toolbar(nullptr) {\n    _init(width, height, visible);\n}\n\nGWindow::GWindow(double x, double y, double width, double height, bool visible)\n        : _iqmainwindow(nullptr),\n          _contentPane(nullptr),\n          _canvas(nullptr),\n          _resizable(true),\n          _closeOperation(GWindow::CLOSE_DISPOSE),\n          _toolbar(nullptr) {\n    _init(width, height, visible);\n    setLocation(x, y);\n}\n\nvoid GWindow::_init(double width, double height, bool visible) {\n    require::nonNegative2D(width, height, \"GWindow::constructor\", \"width\", \"height\");\n    if (static_cast<int>(width) == 0) {\n        width = DEFAULT_WIDTH;\n    }\n    if (static_cast<int>(height) == 0) {\n        height = DEFAULT_HEIGHT;\n    }\n\n    GThread::runOnQtGuiThread([this]() {\n        QtGui::instance()->initializeQt();\n        _iqmainwindow = new _Internal_QMainWindow(this);\n        _iqmainwindow->setAttribute(Qt::WA_QuitOnClose, false);\n        _lastWindow = _iqmainwindow;\n        _contentPane = new GContainer(GContainer::LAYOUT_BORDER);\n        _iqmainwindow->setCentralWidget(_contentPane->getWidget());\n    });\n\n    ensureForwardTarget();\n    setCanvasSize(width, height);\n    setWindowIcon(DEFAULT_ICON_FILENAME);\n    setVisible(visible);\n}\n\nGWindow::~GWindow() {\n    if (_lastWindow == _iqmainwindow) {\n        _lastWindow = nullptr;\n    }\n    // TODO: delete _iqmainwindow;\n    if (_iqmainwindow) {\n        _iqmainwindow->_gwindow = nullptr;\n        _iqmainwindow = nullptr;\n    }\n}\n\nvoid GWindow::_autograder_setIsAutograderWindow(bool /*isAutograderWindow*/) {\n    // TODO\n}\n\nvoid GWindow::_autograder_setExitGraphicsEnabled(bool /*enabled*/) {\n    // TODO\n}\n\nvoid GWindow::_autograder_setPauseEnabled(bool /*enabled*/) {\n    // TODO\n}\n\nvoid GWindow::add(GInteractor* interactor) {\n    require::nonNull(interactor, \"GWindow::add\");\n    addToRegion(interactor, REGION_CENTER);\n}\n\nvoid GWindow::add(GInteractor* interactor, double x, double y) {\n    require::nonNull(interactor, \"GWindow::add\");\n    interactor->setLocation(x, y);\n    addToRegion(interactor, REGION_CENTER);\n}\n\nvoid GWindow::add(GInteractor& interactor) {\n    addToRegion(&interactor, REGION_CENTER);\n}\n\nvoid GWindow::add(GInteractor& interactor, double x, double y) {\n    interactor.setLocation(x, y);\n    addToRegion(&interactor, REGION_CENTER);\n}\n\nvoid GWindow::add(GObject* obj) {\n    require::nonNull(obj, \"GWindow::add\");\n    ensureForwardTarget();\n    _canvas->add(obj);\n}\n\nvoid GWindow::add(GObject* obj, double x, double y) {\n    require::nonNull(obj, \"GWindow::add\");\n    ensureForwardTarget();\n    _canvas->add(obj, x, y);\n}\n\nvoid GWindow::add(GObject& obj) {\n    ensureForwardTarget();\n    _canvas->add(obj);\n}\n\nvoid GWindow::add(GObject& obj, double x, double y) {\n    ensureForwardTarget();\n    _canvas->add(obj, x, y);\n}\n\nQMenu* GWindow::addMenu(const std::string& menu) {\n    std::string menuKey = toLowerCase(stringReplace(menu, \"&\", \"\"));\n    if (_menuMap.containsKey(menuKey)) {\n        // duplicate; do not create again\n        return _menuMap[menuKey];\n    }\n\n    QMenu* qmenu = nullptr;\n    GThread::runOnQtGuiThread([this, menu, &qmenu]() {\n        qmenu = _iqmainwindow->menuBar()->addMenu(QString::fromStdString(menu));\n        std::string menuKey = toLowerCase(stringReplace(stringReplace(menu, \"/\", \"\"), \"&\", \"\"));\n        _menuMap[menuKey] = qmenu;\n    });\n    return qmenu;\n}\n\nQAction* GWindow::addMenuItem(const std::string& menu, const std::string& item, const std::string& icon) {\n    GEventListenerVoid func = [this, menu, item]() {\n        this->_iqmainwindow->handleMenuAction(menu, item);\n    };\n    return addMenuItem(menu, item, icon, func);\n}\n\nQAction* GWindow::addMenuItem(const std::string& menu, const std::string& item, const std::string& icon, GEventListenerVoid func) {\n    std::string menuKey = toLowerCase(stringReplace(menu, \"&\", \"\"));\n    if (!_menuMap.containsKey(menuKey)) {\n        error(\"GWindow::addMenuItem: menu \\\"\" + menu + \"\\\" does not exist\");\n        return nullptr;\n    }\n\n    std::string itemKey = toLowerCase(stringReplace(item, \"&\", \"\"));\n    std::string menuItemKey = menuKey + \"/\" + itemKey;\n    if (_menuActionMap.containsKey(menuItemKey)) {\n        // duplicate; do not create again\n        return _menuActionMap[menuItemKey];\n    }\n\n    QAction* action = nullptr;\n    GThread::runOnQtGuiThread([this, menu, item, icon, func, menuKey, menuItemKey, &action]() {\n        QMenu* qmenu = _menuMap[menuKey];\n        action = qmenu->addAction(QString::fromStdString(item));\n        if (!icon.empty() && fileExists(icon)) {\n            QIcon qicon(QString::fromStdString(icon));\n            action->setIcon(qicon);\n        }\n\n        // when menu item is clicked, call the function the user gave us\n        _iqmainwindow->connect(action, &QAction::triggered, _iqmainwindow, [func]() {\n            func();\n        });\n        _menuActionMap[menuItemKey] = action;\n    });\n    return action;\n}\n\nQAction* GWindow::addMenuItem(const std::string& menu, const std::string& item, const QIcon& icon, GEventListenerVoid func) {\n    std::string menuKey = toLowerCase(stringReplace(menu, \"&\", \"\"));\n    if (!_menuMap.containsKey(menuKey)) {\n        error(\"GWindow::addMenuItem: menu \\\"\" + menu + \"\\\" does not exist\");\n        return nullptr;\n    }\n\n    std::string itemKey = toLowerCase(stringReplace(item, \"&\", \"\"));\n    std::string menuItemKey = menuKey + \"/\" + itemKey;\n    if (_menuActionMap.containsKey(menuItemKey)) {\n        // duplicate; do not create again\n        return _menuActionMap[menuItemKey];\n    }\n\n    QAction* action = nullptr;\n    GThread::runOnQtGuiThread([this, menu, item, &icon, func, menuKey, menuItemKey, &action]() {\n        QMenu* qmenu = _menuMap[menuKey];\n        action = qmenu->addAction(QString::fromStdString(item));\n        action->setIcon(icon);\n\n        // when menu item is clicked, call the function the user gave us\n        _iqmainwindow->connect(action, &QAction::triggered, _iqmainwindow, [func]() {\n            func();\n        });\n        _menuActionMap[menuItemKey] = action;\n    });\n    return action;\n}\n\nQAction* GWindow::addMenuItem(const std::string& menu, const std::string& item, const QPixmap& icon, GEventListenerVoid func) {\n    std::string menuKey = toLowerCase(stringReplace(menu, \"&\", \"\"));\n    if (!_menuMap.containsKey(menuKey)) {\n        error(\"GWindow::addMenuItem: menu \\\"\" + menu + \"\\\" does not exist\");\n        return nullptr;\n    }\n\n    std::string itemKey = toLowerCase(stringReplace(item, \"&\", \"\"));\n    std::string menuItemKey = menuKey + \"/\" + itemKey;\n    if (_menuActionMap.containsKey(menuItemKey)) {\n        // duplicate; do not create again\n        return _menuActionMap[menuItemKey];\n    }\n\n    QAction* action = nullptr;\n    GThread::runOnQtGuiThread([this, menu, item, &icon, func, menuKey, menuItemKey, &action]() {\n        QMenu* qmenu = _menuMap[menuKey];\n        action = qmenu->addAction(QString::fromStdString(item));\n        action->setIcon(icon);\n\n        // when menu item is clicked, call the function the user gave us\n        _iqmainwindow->connect(action, &QAction::triggered, _iqmainwindow, [func]() {\n            func();\n        });\n        _menuActionMap[menuItemKey] = action;\n    });\n    return action;\n}\n\nQAction* GWindow::addMenuItemCheckBox(const std::string& menu,\n                                      const std::string& item,\n                                      bool checked,\n                                      const std::string& icon) {\n    GEventListenerVoid func = [this, menu, item]() {\n        this->_iqmainwindow->handleMenuAction(menu, item);\n    };\n    return addMenuItemCheckBox(menu, item, checked, icon, func);\n}\n\nQAction* GWindow::addMenuItemCheckBox(const std::string& menu,\n                                      const std::string& item,\n                                      bool checked,\n                                      const std::string& icon,\n                                      GEventListenerVoid func) {\n    QAction* action = nullptr;\n    std::string menuKey = toLowerCase(stringReplace(menu, \"&\", \"\"));\n    if (!_menuMap.containsKey(menuKey)) {\n        error(\"GWindow::addMenuItem: menu \\\"\" + menu + \"\\\" does not exist\");\n        return nullptr;\n    }\n\n    GThread::runOnQtGuiThread([this, menu, item, icon, checked, func, menuKey, &action]() {\n        QMenu* qmenu = _menuMap[menuKey];\n        action = qmenu->addAction(QString::fromStdString(item));\n        action->setCheckable(true);\n        action->setChecked(checked);\n        if (!icon.empty() && fileExists(icon)) {\n            QIcon qicon(QString::fromStdString(icon));\n            action->setIcon(qicon);\n        }\n\n        // when menu item is clicked, call the function the user gave us\n        _iqmainwindow->connect(action, &QAction::triggered, _iqmainwindow, [func]() {\n            func();\n        });\n\n        std::string itemKey = toLowerCase(stringReplace(item, \"&\", \"\"));\n        _menuActionMap[menuKey + \"/\" + itemKey] = action;\n    });\n    return action;\n}\n\n\nQAction* GWindow::addMenuSeparator(const std::string& menu) {\n    std::string menuKey = toLowerCase(stringReplace(menu, \"&\", \"\"));\n    if (!_menuMap.containsKey(menuKey)) {\n        error(\"GWindow::addMenuItem: menu \\\"\" + menu + \"\\\" does not exist\");\n        return nullptr;\n    }\n\n    QAction* separator = nullptr;\n    GThread::runOnQtGuiThread([this, menuKey, &separator]() {\n        QMenu* qmenu = _menuMap[menuKey];\n        separator = qmenu->addSeparator();\n    });\n    return separator;\n}\n\nQMenu* GWindow::addSubMenu(const std::string& menu, const std::string& submenu) {\n    std::string menuKey = toLowerCase(stringReplace(menu, \"&\", \"\"));\n    if (!_menuMap.containsKey(menuKey)) {\n        error(\"GWindow::addMenuItem: menu \\\"\" + menu + \"\\\" does not exist\");\n        return nullptr;\n    }\n\n    QMenu* qsubmenu = nullptr;\n    GThread::runOnQtGuiThread([this, menu, menuKey, submenu, &qsubmenu]() {\n        QMenu* qmenu = _menuMap[menuKey];\n        qsubmenu = qmenu->addMenu(QString::fromStdString(submenu));\n        std::string subMenuKey = menuKey + \"/\"\n                + toLowerCase(stringReplace(submenu, \"&\", \"\"));\n        _menuMap[subMenuKey] = qsubmenu;\n    });\n    return qsubmenu;\n}\n\nvoid GWindow::addToRegion(GInteractor* interactor, Region region) {\n    require::nonNull(interactor, \"GWindow::addToRegion\");\n    if (region == REGION_CENTER) {\n        // labels in \"GText mode\" are added as GText objects to canvas\n        if (interactor->getType() == \"GLabel\") {\n            GLabel* label = static_cast<GLabel*>(interactor);\n            if (label->hasGText()) {\n                add(label->getGText());\n                return;\n            }\n        }\n    }\n    _contentPane->addToRegion(interactor, static_cast<GContainer::Region>(region));\n}\n\nvoid GWindow::addToRegion(GInteractor* interactor, const std::string& region) {\n    addToRegion(interactor, stringToRegion(region));\n}\n\nvoid GWindow::addToRegion(GInteractor& interactor, Region region) {\n    addToRegion(&interactor, region);\n}\n\nvoid GWindow::addToRegion(GInteractor& interactor, const std::string& region) {\n    addToRegion(&interactor, region);\n}\n\nvoid GWindow::addToolbar(const std::string& title) {\n    if (_toolbar) {\n        return;\n    }\n    GThread::runOnQtGuiThread([this, title]() {\n        _toolbar = _iqmainwindow->addToolBar(QString::fromStdString(title));\n        _toolbar->setFloatable(false);\n        _toolbar->setMovable(false);\n        _toolbar->setBaseSize(0, 0);\n    });\n}\n\nQAction* GWindow::addToolbarItem(const std::string& item,\n                                 const std::string& icon) {\n    GEventListenerVoid func = [this, item]() {\n        this->_iqmainwindow->handleMenuAction(/* menu */ \"toolbar\", item);\n    };\n    return addToolbarItem(item, icon, func);\n}\n\nQAction* GWindow::addToolbarItem(const std::string& item,\n                                 const std::string& icon,\n                                 GEventListenerVoid func) {\n    if (!_toolbar) {\n        addToolbar();\n    }\n\n    std::string itemKey = toLowerCase(stringReplace(item, \"&\", \"\"));\n    std::string menuItemKey = \"toolbar/\" + itemKey;\n    if (_menuActionMap.containsKey(menuItemKey)) {\n        // duplicate; do not create again\n        return _menuActionMap[menuItemKey];\n    }\n\n    QAction* action = nullptr;\n    GThread::runOnQtGuiThread([this, item, icon, func, menuItemKey, &action]() {\n        if (icon.empty()) {\n            action = _toolbar->addAction(QString::fromStdString(item));\n        } else {\n            // toolbar item with icon doesn't show text\n            QIcon qicon(QString::fromStdString(icon));\n            action = _toolbar->addAction(qicon, QString::fromStdString(\"\"));\n            action->setToolTip(QString::fromStdString(item));\n        }\n\n        // when menu item is clicked, call the function the user gave us\n        _iqmainwindow->connect(action, &QAction::triggered, _iqmainwindow, [func]() {\n            func();\n        });\n        _menuActionMap[menuItemKey] = action;\n\n    });\n    return action;\n}\n\nQAction* GWindow::addToolbarItem(const std::string& item,\n                                 const QIcon& icon,\n                                 GEventListenerVoid func) {\n    if (!_toolbar) {\n        addToolbar();\n    }\n\n    std::string itemKey = toLowerCase(stringReplace(item, \"&\", \"\"));\n    std::string menuItemKey = \"toolbar/\" + itemKey;\n    if (_menuActionMap.containsKey(menuItemKey)) {\n        // duplicate; do not create again\n        return _menuActionMap[menuItemKey];\n    }\n\n    QAction* action = nullptr;\n    GThread::runOnQtGuiThread([this, item, &icon, func, menuItemKey, &action]() {\n        // toolbar item with icon doesn't show text\n        action = _toolbar->addAction(icon, QString::fromStdString(\"\"));\n        action->setToolTip(QString::fromStdString(item));\n\n        // when menu item is clicked, call the function the user gave us\n        _iqmainwindow->connect(action, &QAction::triggered, _iqmainwindow, [func]() {\n            func();\n        });\n        _menuActionMap[menuItemKey] = action;\n\n    });\n    return action;\n}\n\nQAction* GWindow::addToolbarItem(const std::string& item,\n                                 const QPixmap& icon,\n                                 GEventListenerVoid func) {\n    if (!_toolbar) {\n        addToolbar();\n    }\n\n    std::string itemKey = toLowerCase(stringReplace(item, \"&\", \"\"));\n    std::string menuItemKey = \"toolbar/\" + itemKey;\n    if (_menuActionMap.containsKey(menuItemKey)) {\n        // duplicate; do not create again\n        return _menuActionMap[menuItemKey];\n    }\n\n    QAction* action = nullptr;\n    GThread::runOnQtGuiThread([this, item, &icon, func, menuItemKey, &action]() {\n        // toolbar item with icon doesn't show text\n        action = _toolbar->addAction(icon, QString::fromStdString(\"\"));\n        action->setToolTip(QString::fromStdString(item));\n\n        // when menu item is clicked, call the function the user gave us\n        _iqmainwindow->connect(action, &QAction::triggered, _iqmainwindow, [func]() {\n            func();\n        });\n        _menuActionMap[menuItemKey] = action;\n\n    });\n    return action;\n}\n\nQAction* GWindow::addToolbarSeparator() {\n    if (!_toolbar) {\n        addToolbar();\n    }\n\n    QAction* action = nullptr;\n    GThread::runOnQtGuiThread([this, &action]() {\n        action = _toolbar->addSeparator();\n    });\n    return action;\n}\n\nvoid GWindow::clear() {\n    // TODO: reimplement to clear out widgets rather than just canvas\n    clearCanvas();\n\n//    bool hasCanvas = _canvas && _contentPane->regionContains(_canvas, GContainer::REGION_CENTER);\n//    _contentPane->clearRegion(GContainer::REGION_NORTH);\n//    _contentPane->clearRegion(GContainer::REGION_SOUTH);\n//    _contentPane->clearRegion(GContainer::REGION_WEST);\n//    _contentPane->clearRegion(GContainer::REGION_EAST);\n//    if (hasCanvas) {\n//        clearCanvas();\n//    } else {\n//        // don't remove canvas, but do remove any other widgets in center\n//        _contentPane->clearRegion(GContainer::REGION_CENTER);\n//        ensureForwardTarget();\n//    }\n}\n\nvoid GWindow::clearCanvas() {\n    if (_canvas) {\n        _canvas->clear();\n    }\n}\n\nvoid GWindow::clearCanvasObjects() {\n    if (_canvas) {\n        _canvas->clearObjects();   // runs on Qt GUI thread\n    }\n}\n\nvoid GWindow::clearCanvasPixels() {\n    if (_canvas) {\n        _canvas->clearPixels();   // runs on Qt GUI thread\n    }\n}\n\nvoid GWindow::clearRegion(Region region) {\n    _contentPane->clearRegion(static_cast<GContainer::Region>(region));\n}\n\nvoid GWindow::clearRegion(const std::string& region) {\n    clearRegion(stringToRegion(region));\n}\n\nvoid GWindow::clearToolbarItems() {\n    if (!_toolbar) {\n        return;\n    }\n    GThread::runOnQtGuiThread([this]() {\n        _toolbar->clear();\n    });\n}\n\nvoid GWindow::center() {\n    GDimension screenSize = getScreenSize();\n    GDimension windowSize = getSize();\n    setLocation(screenSize.getWidth()  / 2 - windowSize.getWidth()  / 2,\n                screenSize.getHeight() / 2 - windowSize.getHeight() / 2);\n}\n\n/*static*/ std::string GWindow::chooseLightDarkModeColor(\n        const std::string& lightColor, const std::string& darkColor) {\n    return isDarkMode() ? darkColor : lightColor;\n}\n\n/*static*/ int GWindow::chooseLightDarkModeColorInt(int lightColor, int darkColor) {\n    return isDarkMode() ? darkColor : lightColor;\n}\n\nvoid GWindow::close() {\n    GThread::runOnQtGuiThread([this]() {\n        _iqmainwindow->close();\n    });\n}\n\nvoid GWindow::compareToImage(const std::string& filename, bool /*ignoreWindowSize*/) const {\n    ensureForwardTargetConstHack();\n    GCanvas* fileCanvas = new GCanvas(filename);\n    GDiffImage::showDialog(\"expected output\", fileCanvas,\n                           \"your output\", _canvas);\n\n    // TODO\n    // delete fileCanvas;\n}\n\nvoid GWindow::ensureForwardTarget() {\n    if (!_canvas) {\n        // tell canvas to take any unclaimed space in the window\n        GThread::runOnQtGuiThread([this]() {\n            _canvas = new GCanvas(_iqmainwindow);\n            _canvas->setBackground(GColor::WHITE);\n            setDrawingForwardTarget(_canvas);\n            addToRegion(_canvas, REGION_CENTER);\n        });\n    }\n//    else if (!_canvas->isVisible()) {\n//        // put canvas back in center region\n//        GThread::runOnQtGuiThread([this]() {\n//            QLayout* centerLayout = layoutForRegion(REGION_CENTER);\n//            if (!GLayout::contains(centerLayout, _canvas->getWidget())) {\n//                GLayout::clearLayout(centerLayout);\n//                addToRegion(_canvas, \"Center\");\n//                _canvas->setVisible(true);\n//            }\n//        });\n//    }\n}\n\nbool GWindow::eventsEnabled() const {\n    return getWidget() != nullptr && isVisible();\n}\n\nGCanvas* GWindow::getCanvas() const {\n    ensureForwardTargetConstHack();\n    return _canvas;\n}\n\ndouble GWindow::getCanvasHeight() const {\n    ensureForwardTargetConstHack();\n    return _canvas->getHeight();\n}\n\nGDimension GWindow::getCanvasSize() const {\n    ensureForwardTargetConstHack();\n    return GDimension(_canvas->getWidth(), _canvas->getHeight());\n}\n\ndouble GWindow::getCanvasWidth() const {\n    ensureForwardTargetConstHack();\n    return _canvas->getWidth();\n}\n\nGWindow::CloseOperation GWindow::getCloseOperation() const {\n    return _closeOperation;\n}\n\n/*static*/ std::string GWindow::getDefaultInteractorBackgroundColor() {\n    return GColor::convertRGBToColor(getDefaultInteractorBackgroundColorInt());\n}\n\n/*static*/ int GWindow::getDefaultInteractorBackgroundColorInt() {\n    static bool everCheckedBefore = false;\n    static int previousBg = 0;\n    if (!everCheckedBefore) {\n        GTextField* tempTextField = new GTextField();\n        previousBg = tempTextField->getBackgroundInt();\n        everCheckedBefore = true;\n    }\n    return previousBg;\n}\n\n/*static*/ std::string GWindow::getDefaultInteractorTextColor() {\n    return GColor::convertRGBToColor(getDefaultInteractorTextColorInt());\n}\n\n/*static*/ int GWindow::getDefaultInteractorTextColorInt() {\n    static bool everCheckedBefore = false;\n    static int previousFg = 0;\n    if (!everCheckedBefore) {\n        GTextField* tempTextField = new GTextField();\n        previousFg = tempTextField->getForegroundInt();\n        everCheckedBefore = true;\n    }\n    return previousFg;\n}\n\nGObject* GWindow::getGObject(int index) const {\n    if (_canvas) {\n        return _canvas->getElement(index);\n    } else {\n        return nullptr;\n    }\n}\n\nGObject* GWindow::getGObjectAt(double x, double y) const {\n    if (_canvas) {\n        return _canvas->getElementAt(x, y);\n    } else {\n        return nullptr;\n    }\n}\n\nint GWindow::getGObjectCount() const {\n    if (_canvas) {\n        return _canvas->getElementCount();\n    } else {\n        return 0;\n    }\n}\n\n/* static */ QMainWindow* GWindow::getLastWindow() {\n    return _lastWindow;\n}\n\ndouble GWindow::getHeight() const {\n    return _iqmainwindow->height();\n}\n\nGPoint GWindow::getLocation() const {\n    return GPoint(_iqmainwindow->x(), _iqmainwindow->y());\n}\n\nGDimension GWindow::getPreferredSize() const {\n    return _contentPane->getPreferredSize();\n}\n\ndouble GWindow::getRegionHeight(Region region) const {\n    return _contentPane->getRegionHeight(static_cast<GContainer::Region>(region));\n}\n\ndouble GWindow::getRegionHeight(const std::string& region) const {\n    return _contentPane->getRegionHeight(region);\n}\n\nGDimension GWindow::getRegionSize(Region region) const {\n    return _contentPane->getRegionSize(static_cast<GContainer::Region>(region));\n}\n\nGDimension GWindow::getRegionSize(const std::string& region) const {\n    return _contentPane->getRegionSize(region);\n}\n\ndouble GWindow::getRegionWidth(Region region) const {\n    return _contentPane->getRegionWidth(static_cast<GContainer::Region>(region));\n}\n\ndouble GWindow::getRegionWidth(const std::string& region) const {\n    return _contentPane->getRegionWidth(region);\n}\n\n/*static*/ int GWindow::getScreenDpi() {\n    return QtGui::instance()->getApplication()->desktop()->logicalDpiX();\n}\n\n/*static*/ double GWindow::getScreenDpiScaleRatio() {\n    double ratio = (double) getScreenDpi() / STANDARD_SCREEN_DPI;\n    return (ratio >= 1.0) ? ratio : 1.0;\n}\n\n/*static*/ double GWindow::getScreenHeight() {\n    return getScreenSize().getHeight();\n}\n\n/*static*/ GDimension GWindow::getScreenSize() {\n    QRect rec;\n    GThread::runOnQtGuiThread([&rec]() {\n        rec = QApplication::desktop()->availableGeometry();\n    });\n    return GDimension(rec.width(), rec.height());\n}\n\n/*static*/ double GWindow::getScreenWidth() {\n    return getScreenSize().getWidth();\n}\n\nGDimension GWindow::getSize() const {\n    return GDimension(_iqmainwindow->width(), _iqmainwindow->height());\n}\n\nstd::string GWindow::getTitle() const {\n    return _iqmainwindow->windowTitle().toStdString();\n}\n\nstd::string GWindow::getType() const {\n    return \"GWindow\";\n}\n\nQWidget* GWindow::getWidget() const {\n    return static_cast<QWidget*>(_iqmainwindow);\n}\n\ndouble GWindow::getWidth() const {\n    return _iqmainwindow->width();\n}\n\ndouble GWindow::getX() const {\n    return _iqmainwindow->x();\n}\n\ndouble GWindow::getY() const {\n    return _iqmainwindow->y();\n}\n\nbool GWindow::hasToolbar() const {\n    return _toolbar != nullptr;\n}\n\nvoid GWindow::hide() {\n    setVisible(false);\n}\n\nbool GWindow::inBounds(double x, double y) const {\n    return 0 <= x && x < getWidth() && 0 <= y && y < getHeight();\n}\n\nbool GWindow::inCanvasBounds(double x, double y) const {\n    return 0 <= x && x < getCanvasWidth() && 0 <= y && y < getCanvasHeight();\n}\n\n/*static*/ bool GWindow::isDarkMode() {\n    if (!getLastWindow()) {\n        // cannot check yet\n        return false;\n    }\n    int bg = getDefaultInteractorBackgroundColorInt();\n    int fg = getDefaultInteractorTextColorInt();\n\n    // our heuristic: if the text is brighter than the background,\n    // we'll assume they are in dark mode\n    double bgLum = GColor::getLuminance(bg);\n    double fgLum = GColor::getLuminance(fg);\n    return fgLum > bgLum;\n}\n\n/*static*/ bool GWindow::isHighDensityScreen() {\n    return getScreenDpi() >= HIGH_DPI_SCREEN_THRESHOLD;\n}\n\n/*static*/ bool GWindow::isHighDpiScalingEnabled() {\n#ifdef SPL_SCALE_HIGH_DPI_SCREEN\n    return true;\n#else\n    return false;\n#endif // SPL_SCALE_HIGH_DPI_SCREEN\n}\n\nbool GWindow::isMaximized() const {\n    return (_iqmainwindow->windowState() & Qt::WindowMaximized) != 0\n            || (_iqmainwindow->windowState() & Qt::WindowFullScreen) != 0;\n}\n\nbool GWindow::isMinimized() const {\n    return (_iqmainwindow->windowState() & Qt::WindowMinimized) != 0;\n}\n\nbool GWindow::isOpen() const {\n    return isVisible();\n}\n\nbool GWindow::isRepaintImmediately() const {\n    return _canvas && _canvas->isRepaintImmediately();\n}\n\nbool GWindow::isResizable() const {\n    return _resizable;\n}\n\nbool GWindow::isVisible() const {\n    return _iqmainwindow->isVisible();\n}\n\nvoid GWindow::loadCanvasPixels(const std::string& filename) {\n    ensureForwardTarget();\n    _canvas->load(filename);   // runs on Qt GUI thread\n}\n\nvoid GWindow::maximize() {\n    GThread::runOnQtGuiThread([this]() {\n        _iqmainwindow->setWindowState(Qt::WindowMaximized);\n    });\n}\n\nvoid GWindow::minimize() {\n    GThread::runOnQtGuiThread([this]() {\n        _iqmainwindow->setWindowState(Qt::WindowMinimized);\n    });\n}\n\nvoid GWindow::pack() {\n    setSize(getPreferredSize());\n}\n\nvoid GWindow::pause(double ms) {\n    require::nonNegative(ms, \"GWindow::pause\", \"milliseconds\");\n    GThread::getCurrentThread()->sleep(ms);\n}\n\nvoid GWindow::processKeyPressEventInternal(QKeyEvent* /* event */) {\n    // empty; override me\n}\n\nvoid GWindow::rememberPosition() {\n    // TODO\n}\n\nvoid GWindow::remove(GObject* obj) {\n    require::nonNull(obj, \"GWindow::remove\");\n    if (_canvas) {\n        _canvas->remove(obj);\n    }\n}\n\nvoid GWindow::remove(GObject& obj) {\n    if (_canvas) {\n        _canvas->remove(&obj);   // runs on Qt GUI thread\n    }\n}\n\nvoid GWindow::remove(GInteractor* interactor) {\n    require::nonNull(interactor, \"GWindow::remove\");\n    _contentPane->remove(interactor);\n}\n\nvoid GWindow::remove(GInteractor& interactor) {\n    remove(&interactor);\n}\n\nvoid GWindow::removeClickListener() {\n    if (_canvas) {\n        _canvas->removeClickListener();   // runs on Qt GUI thread\n    }\n}\n\nvoid GWindow::removeFromRegion(GInteractor* interactor, Region region) {\n    require::nonNull(interactor, \"GWindow::removeFromRegion\");\n\n    // special case: labels in \"GText mode\" are added to canvas\n    if (region == REGION_CENTER && interactor->getType() == \"GLabel\") {\n        GLabel* label = static_cast<GLabel*>(interactor);\n        if (label->hasGText()) {\n            remove(label->getGText());\n            return;\n        }\n    }\n\n    _contentPane->removeFromRegion(interactor, static_cast<GContainer::Region>(region));\n}\n\nvoid GWindow::removeFromRegion(GInteractor* interactor, const std::string& region) {\n    removeFromRegion(interactor, stringToRegion(region));\n}\n\nvoid GWindow::removeFromRegion(GInteractor& interactor, Region region) {\n    removeFromRegion(&interactor, region);\n}\n\nvoid GWindow::removeFromRegion(GInteractor& interactor, const std::string& region) {\n    removeFromRegion(&interactor, region);\n}\n\nvoid GWindow::removeKeyListener() {\n    if (_canvas) {\n        _canvas->removeKeyListener();   // runs on Qt GUI thread\n    }\n}\n\nvoid GWindow::removeMenuListener() {\n    removeEventListener(\"actionMenu\");\n}\n\nvoid GWindow::removeMouseListener() {\n    if (_canvas) {\n        _canvas->removeMouseListener();   // runs on Qt GUI thread\n    }\n}\n\nvoid GWindow::removeTimerListener() {\n    removeEventListener(\"timer\");\n}\n\nvoid GWindow::removeToolbar() {\n    if (!_toolbar) {\n        return;\n    }\n    GThread::runOnQtGuiThread([this]() {\n        _iqmainwindow->removeToolBar(_toolbar);\n        _toolbar = nullptr;\n    });\n}\n\nvoid GWindow::removeWindowListener() {\n    removeEventListeners({\"close\",\n                         \"closing\",\n                         \"maximize\",\n                         \"minimize\",\n                         \"open\",\n                         \"resize\",\n                         \"restore\"});\n}\n\nvoid GWindow::requestFocus() {\n    GThread::runOnQtGuiThread([this]() {\n        _iqmainwindow->setFocus();\n        _iqmainwindow->activateWindow();\n    });\n}\n\nvoid GWindow::restore() {\n    GThread::runOnQtGuiThread([this]() {\n        _iqmainwindow->setWindowState(Qt::WindowActive);\n    });\n}\n\nvoid GWindow::saveCanvasPixels(const std::string& filename) {\n    ensureForwardTarget();\n    _canvas->save(filename);   // runs on Qt GUI thread\n}\n\nvoid GWindow::setBackground(int color) {\n    _contentPane->setBackground(color);\n    GThread::runOnQtGuiThread([this, color]() {\n        GForwardDrawingSurface::setBackground(color);\n    });\n}\n\nvoid GWindow::setBackground(const std::string& color) {\n    _contentPane->setBackground(color);\n    GThread::runOnQtGuiThread([this, color]() {\n        GForwardDrawingSurface::setBackground(color);\n        // TODO: set background of N/S/E/W regions and central region?\n    });\n}\n\nvoid GWindow::setCanvasHeight(double height) {\n    ensureForwardTarget();\n    setCanvasSize(getCanvasWidth(), height);\n}\n\nvoid GWindow::setCanvasSize(double width, double height) {\n    require::nonNegative2D(width, height, \"GWindow::setCanvasSize\", \"width\", \"height\");\n    ensureForwardTarget();\n    _canvas->setMinimumSize(width, height);    // runs on Qt GUI thread\n    _canvas->setPreferredSize(width, height);\n    pack();\n}\n\nvoid GWindow::setCanvasSize(const GDimension& size) {\n    setCanvasSize(size.getWidth(), size.getHeight());\n}\n\nvoid GWindow::setCanvasWidth(double width) {\n    ensureForwardTarget();\n    setCanvasSize(width, getCanvasHeight());\n}\n\nvoid GWindow::setCloseOperation(CloseOperation op) {\n    GThread::runOnQtGuiThread([this, op]() {\n        _closeOperation = op;\n        _iqmainwindow->setAttribute(Qt::WA_QuitOnClose, op == GWindow::CLOSE_EXIT);\n    });\n}\n\nvoid GWindow::setExitOnClose(bool exitOnClose) {\n    if (exitOnClose) {\n        setCloseOperation(GWindow::CLOSE_EXIT);\n    } else {\n        setCloseOperation(_closeOperation == GWindow::CLOSE_EXIT ? GWindow::CLOSE_HIDE : _closeOperation);\n    }\n}\n\nvoid GWindow::setHeight(double height) {\n    setSize(getWidth(), height);\n}\n\nvoid GWindow::setLocation(double x, double y) {\n    GThread::runOnQtGuiThread([this, x, y]() {\n        _iqmainwindow->move(static_cast<int>(x), static_cast<int>(y));\n    });\n}\n\nvoid GWindow::setLocation(const GPoint& p) {\n    setLocation(p.getX(), p.getY());\n}\n\nvoid GWindow::setLocation(const Point& p) {\n    setLocation(p.getX(), p.getY());\n}\n\nvoid GWindow::setMenuItemEnabled(const std::string& menu, const std::string& item, bool enabled) {\n    std::string menuKey = toLowerCase(stringReplace(menu, \"&\", \"\"));\n    std::string itemKey = toLowerCase(stringReplace(item, \"&\", \"\"));\n    std::string menuItemKey = menuKey + \"/\" + itemKey;\n    if (!_menuMap.containsKey(menuKey)) {\n        error(\"GWindow::setMenuItemEnabled: menu \\\"\" + menu + \"\\\" does not exist\");\n    } else if (!_menuActionMap.containsKey(menuItemKey)) {\n        error(\"GWindow::setMenuItemEnabled: menu item \\\"\" + item + \"\\\" does not exist\");\n    }\n\n    QAction* action = _menuActionMap[menuItemKey];\n    GThread::runOnQtGuiThread([action, enabled]() {\n        action->setEnabled(enabled);\n    });\n}\n\nvoid GWindow::setClickListener(GEventListener func) {\n    _canvas->setClickListener(func);   // runs on Qt GUI thread\n}\n\nvoid GWindow::setClickListener(GEventListenerVoid func) {\n    _canvas->setClickListener(func);   // runs on Qt GUI thread\n}\n\nvoid GWindow::setKeyListener(GEventListener func) {\n    _canvas->setKeyListener(func);   // runs on Qt GUI thread\n}\n\nvoid GWindow::setKeyListener(GEventListenerVoid func) {\n    _canvas->setKeyListener(func);   // runs on Qt GUI thread\n}\n\nvoid GWindow::setMenuListener(GEventListener func) {\n    setEventListener(\"actionMenu\", func);   // runs on Qt GUI thread\n}\n\nvoid GWindow::setMenuListener(GEventListenerVoid func) {\n    setEventListener(\"actionMenu\", func);   // runs on Qt GUI thread\n}\n\nvoid GWindow::setMouseListener(GEventListener func) {\n    _canvas->setMouseListener(func);   // runs on Qt GUI thread\n}\n\nvoid GWindow::setMouseListener(GEventListenerVoid func) {\n    _canvas->setMouseListener(func);   // runs on Qt GUI thread\n}\n\nvoid GWindow::setRegionAlignment(Region region, HorizontalAlignment halign) {\n    _contentPane->setRegionAlignment(static_cast<GContainer::Region>(region), halign);\n}\n\nvoid GWindow::setRegionAlignment(Region region, VerticalAlignment valign) {\n    _contentPane->setRegionAlignment(static_cast<GContainer::Region>(region), valign);\n}\n\nvoid GWindow::setRegionAlignment(Region region, HorizontalAlignment halign, VerticalAlignment valign) {\n    _contentPane->setRegionAlignment(static_cast<GContainer::Region>(region), halign, valign);\n}\n\nvoid GWindow::setRegionAlignment(const std::string& region, const std::string& align) {\n    _contentPane->setRegionAlignment(region, align);\n}\n\nvoid GWindow::setRegionAlignment(const std::string& region, const std::string& halign, const std::string& valign) {\n    _contentPane->setRegionAlignment(region, halign, valign);\n}\n\nvoid GWindow::setRegionHorizontalAlignment(Region region, HorizontalAlignment halign) {\n    _contentPane->setRegionHorizontalAlignment(static_cast<GContainer::Region>(region), halign);\n}\n\nvoid GWindow::setRegionHorizontalAlignment(const std::string& region, const std::string& halign) {\n    _contentPane->setRegionHorizontalAlignment(region, halign);\n}\n\nvoid GWindow::setRegionVerticalAlignment(Region region, VerticalAlignment valign) {\n    _contentPane->setRegionVerticalAlignment(static_cast<GContainer::Region>(region), valign);\n}\n\nvoid GWindow::setRegionVerticalAlignment(const std::string& region, const std::string& valign) {\n    _contentPane->setRegionVerticalAlignment(region, valign);\n}\n\nvoid GWindow::setResizable(bool resizable) {\n    GThread::runOnQtGuiThread([this, resizable]() {\n        if (resizable) {\n            if (!_resizable) {\n                _iqmainwindow->resize(static_cast<int>(getWidth()),\n                                      static_cast<int>(getHeight()));\n                _iqmainwindow->setMinimumSize(_iqmainwindow->minimumSizeHint());\n                GDimension screenSize = getScreenSize();\n                _iqmainwindow->setMaximumSize(static_cast<int>(screenSize.getWidth()),\n                                              static_cast<int>(screenSize.getHeight()));\n                _iqmainwindow->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);\n            }\n        } else {\n            if (_resizable) {\n                _iqmainwindow->setFixedSize(_iqmainwindow->size());\n                _iqmainwindow->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);\n            }\n        }\n        _resizable = resizable;\n    });\n}\n\nvoid GWindow::setSize(double width, double height) {\n    require::nonNegative2D(width, height, \"GWindow::setSize\", \"width\", \"height\");\n    GThread::runOnQtGuiThread([this, width, height]() {\n        if (isResizable()) {\n            _iqmainwindow->resize(static_cast<int>(width),\n                                  static_cast<int>(height));\n        } else {\n            _iqmainwindow->setFixedSize(static_cast<int>(width),\n                                        static_cast<int>(height));\n        }\n    });\n}\n\nvoid GWindow::setSize(const GDimension& size) {\n    setSize(size.getWidth(), size.getHeight());\n}\n\nvoid GWindow::setTimerListener(double ms, GEventListener func) {\n    require::nonNegative(ms, \"GWindow::setTimerListener\", \"delay (ms)\");\n    setEventListener(\"timer\", func);\n    GThread::runOnQtGuiThread([this, ms]() {\n        _iqmainwindow->timerStart(ms);\n    });\n}\n\nvoid GWindow::setTimerListener(double ms, GEventListenerVoid func) {\n    require::nonNegative(ms, \"GWindow::setTimerListener\", \"delay (ms)\");\n    setEventListener(\"timer\", func);\n    GThread::runOnQtGuiThread([this, ms]() {\n        _iqmainwindow->timerStart(ms);\n    });\n}\n\nvoid GWindow::setTitle(const std::string& title) {\n    GThread::runOnQtGuiThread([this, title]() {\n        _iqmainwindow->setWindowTitle(QString::fromStdString(title));\n    });\n}\n\nvoid GWindow::setVisible(bool visible) {\n    GThread::runOnQtGuiThread([this, visible]() {\n        _iqmainwindow->setVisible(visible);\n    });\n}\n\nvoid GWindow::setWidth(double width) {\n    setSize(width, getHeight());\n}\n\nvoid GWindow::setWindowIcon(const std::string& iconFile) {\n    if (fileExists(iconFile)) {\n        GThread::runOnQtGuiThread([this, iconFile]() {\n            QIcon qicon(QString::fromStdString(iconFile));\n            _iqmainwindow->setWindowIcon(qicon);\n        });\n    }\n}\n\nvoid GWindow::setWindowListener(GEventListener func) {\n    setEventListeners({\"close\",\n                      \"closing\",\n                      \"maximize\",\n                      \"minimize\",\n                      \"open\",\n                      \"resize\",\n                      \"restore\"}, func);\n}\n\nvoid GWindow::setWindowListener(GEventListenerVoid func) {\n    setEventListeners({\"close\",\n                      \"closing\",\n                      \"maximize\",\n                      \"minimize\",\n                      \"open\",\n                      \"resize\",\n                      \"restore\"}, func);\n}\n\nvoid GWindow::setWindowTitle(const std::string& title) {\n    setTitle(title);\n}\n\nvoid GWindow::setX(double x) {\n    setLocation(x, getY());\n}\n\nvoid GWindow::setY(double y) {\n    setLocation(getX(), y);\n}\n\nvoid GWindow::show() {\n    setVisible(true);\n}\n\nvoid GWindow::sleep(double ms) {\n    require::nonNegative(ms, \"GWindow::sleep\", \"delay (ms)\");\n    GThread::getCurrentThread()->sleep(ms);\n}\n\nGWindow::Region GWindow::stringToRegion(const std::string& regionStr) {\n    std::string regionLC = toLowerCase(trim(regionStr));\n    if (stringContains(regionLC, \"north\") || stringContains(regionLC, \"top\")) {\n        return GWindow::REGION_NORTH;\n    } else if (stringContains(regionLC, \"south\") || stringContains(regionLC, \"bottom\")) {\n        return GWindow::REGION_SOUTH;\n    } else if (stringContains(regionLC, \"west\") || stringContains(regionLC, \"left\")) {\n        return GWindow::REGION_WEST;\n    } else if (stringContains(regionLC, \"east\") || stringContains(regionLC, \"right\")) {\n        return GWindow::REGION_EAST;\n    } else {\n        return GWindow::REGION_CENTER;\n    }\n}\n\nvoid GWindow::toBack() {\n    GThread::runOnQtGuiThread([this]() {\n        _iqmainwindow->lower();\n    });\n}\n\nvoid GWindow::toFront() {\n    GThread::runOnQtGuiThread([this]() {\n        _iqmainwindow->raise();\n        _iqmainwindow->setFocus();\n    });\n}\n\n\n// global functions for compatibility\n\nint convertColorToRGB(const std::string& colorName) {\n    return GColor::convertColorToRGB(colorName);\n}\n\nstd::string convertRGBToColor(int rgb) {\n    return GColor::convertRGBToColor(rgb);\n}\n\nvoid exitGraphics() {\n    QtGui::instance()->exitGraphics();\n}\n\ndouble getScreenHeight() {\n    return GWindow::getScreenHeight();\n}\n\nGDimension getScreenSize() {\n    return GWindow::getScreenSize();\n}\n\ndouble getScreenWidth() {\n    return GWindow::getScreenWidth();\n}\n\n#ifndef SPL_HEADLESS_MODE\nvoid pause(double milliseconds) {\n    GThread::getCurrentThread()->sleep(milliseconds);\n}\n#endif // SPL_HEADLESS_MODE\n\nvoid repaint() {\n    QMainWindow* lastWindow = GWindow::getLastWindow();\n    if (lastWindow) {\n        lastWindow->repaint();\n    }\n    // TODO: other windows?\n}\n\n\n_Internal_QMainWindow::_Internal_QMainWindow(GWindow* gwindow, QWidget* parent)\n        : QMainWindow(parent),\n          _gwindow(gwindow) {\n    require::nonNull(gwindow, \"_Internal_QMainWindow::constructor\");\n    GThread::ensureThatThisIsTheQtGuiThread(\"GWindow internal initialization\");\n    setObjectName(QString::fromStdString(\"_Internal_QMainWindow\"));\n}\n\nvoid _Internal_QMainWindow::changeEvent(QEvent* event) {\n    require::nonNull(event, \"_Internal_QMainWindow::changeEvent\", \"event\");\n    QMainWindow::changeEvent(event);   // call super\n    if (!_gwindow || event->type() != QEvent::WindowStateChange) {\n        return;\n    }\n\n    // https://doc.qt.io/Qt-5/qt.html#WindowState-enum\n    QWindowStateChangeEvent* stateChangeEvent = static_cast<QWindowStateChangeEvent*>(event);\n    Qt::WindowStates state = windowState();\n    bool wasMaximized = (stateChangeEvent->oldState() & Qt::WindowMaximized) != 0;\n    bool wasMinimized = (stateChangeEvent->oldState() & Qt::WindowMinimized) != 0;\n    bool isMaximized = (state & Qt::WindowMaximized) != 0;\n    bool isMinimized = (state & Qt::WindowMinimized) != 0;\n    if (!wasMaximized && isMaximized) {\n        _gwindow->fireGEvent(stateChangeEvent, WINDOW_MAXIMIZED, \"maximize\");\n    } else if (!wasMinimized && isMinimized) {\n        _gwindow->fireGEvent(stateChangeEvent, WINDOW_MINIMIZED, \"minimize\");\n    } else if ((wasMinimized || wasMaximized) && !isMinimized && !isMaximized) {\n        _gwindow->fireGEvent(stateChangeEvent, WINDOW_RESTORED, \"restore\");\n    }\n}\n\nvoid _Internal_QMainWindow::closeEvent(QCloseEvent* event) {\n    require::nonNull(event, \"_Internal_QMainWindow::closeEvent\", \"event\");\n    if (!_gwindow) {\n        QMainWindow::closeEvent(event);   // call super\n        return;\n    }\n\n    // send \"closing\" event before window closes\n    _gwindow->fireGEvent(event, WINDOW_CLOSING, \"closing\");\n\n    GWindow::CloseOperation closeOp = _gwindow->getCloseOperation();\n    if (closeOp == GWindow::CLOSE_DO_NOTHING) {\n        event->ignore();\n        return;\n    }\n\n    // send \"close\" event after window closes\n    event->accept();\n    QMainWindow::closeEvent(event);   // call super\n    _gwindow->fireGEvent(event, WINDOW_CLOSED, \"close\");\n\n    if (closeOp == GWindow::CLOSE_EXIT) {\n        // exit app\n        QtGui::instance()->exitGraphics();\n    }\n}\n\nvoid _Internal_QMainWindow::handleMenuAction(const std::string& menu, const std::string& item) {\n    GEvent actionEvent(\n                /* class  */ ACTION_EVENT,\n                /* type   */ ACTION_MENU,\n                /* name   */ \"actionMenu\",\n                /* source */ _gwindow);\n    actionEvent.setActionCommand(menu + \"/\" + item);\n    _gwindow->fireEvent(actionEvent);\n}\n\nvoid _Internal_QMainWindow::keyPressEvent(QKeyEvent* event) {\n    require::nonNull(event, \"_Internal_QMainWindow::keyPressEvent\", \"event\");\n    QMainWindow::keyPressEvent(event);   // call super\n    if (!_gwindow) {\n        return;\n    }\n    _gwindow->processKeyPressEventInternal(event);\n}\n\nvoid _Internal_QMainWindow::resizeEvent(QResizeEvent* event) {\n    require::nonNull(event, \"_Internal_QMainWindow::resizeEvent\", \"event\");\n    QMainWindow::resizeEvent(event);   // call super\n    if (!_gwindow) {\n        return;\n    }\n    _gwindow->fireGEvent(event, WINDOW_RESIZED, \"resize\");\n}\n\nvoid _Internal_QMainWindow::timerEvent(QTimerEvent* event) {\n    require::nonNull(event, \"_Internal_QMainWindow::timerEvent\", \"event\");\n    QMainWindow::timerEvent(event);   // call super\n    if (!_gwindow) {\n        return;\n    }\n    _gwindow->fireGEvent(event, TIMER_TICKED, \"timer\");\n}\n\nbool _Internal_QMainWindow::timerExists(int id) {\n    if (id >= 0) {\n        return _timerIDs.contains(id);\n    } else {\n        return !_timerIDs.isEmpty();\n    }\n}\n\nint _Internal_QMainWindow::timerStart(double ms) {\n    require::nonNegative(ms, \"_Internal_QMainWindow::timerStart\", \"delay (ms)\");\n    int timerID = startTimer(static_cast<int>(ms));\n    _timerIDs.add(timerID);\n    return timerID;\n}\n\nvoid _Internal_QMainWindow::timerStop(int id) {\n    if (id < 0 && timerExists()) {\n        id = _timerIDs.first();\n    }\n\n    if (timerExists(id)) {\n        killTimer(id);\n        _timerIDs.remove(id);\n    }\n}\n\n#ifdef SPL_PRECOMPILE_QT_MOC_FILES\n#define INTERNAL_INCLUDE 1\n#include \"moc_gwindow.cpp\"   // speeds up compilation of auto-generated Qt files\n#undef INTERNAL_INCLUDE\n#endif // SPL_PRECOMPILE_QT_MOC_FILES\n\n/*\n * File: gobservable.cpp\n * ---------------------\n *\n * @author Marty Stepp\n * @version 2018/08/23\n * - renamed to gobservable.cpp to replace Java version\n * @version 2018/07/11\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"gobservable.h\"\n#include <iostream>\n#include <sstream>\n#define INTERNAL_INCLUDE 1\n#include \"geventqueue.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gthread.h\"\n#define INTERNAL_INCLUDE 1\n#include \"require.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#undef INTERNAL_INCLUDE\n\nGObservable::GObservable()\n        : _eventsEnabled(true) {\n    // empty\n}\n\nGObservable::~GObservable() {\n    // empty\n}\n\nvoid GObservable::clearEventListeners() {\n    _eventMap.clear();\n}\n\nvoid GObservable::ensureThreadSafety(const std::string& memberName) {\n    GThread::ensureThatThisIsTheQtGuiThread(memberName);\n}\n\nbool GObservable::eventsEnabled() const {\n    return _eventsEnabled;\n}\n\nvoid GObservable::fireEvent(GEvent& event) {\n    if (eventsEnabled()) {\n        event.setSource(this);\n        if (hasEventListener(event.getName())) {\n            _eventMap[event.getName()].fireEvent(event);\n        } else {\n            // put into global queue for waitForEvent calls\n            GEventQueue::instance()->enqueueEvent(event);\n        }\n    }\n}\n\nvoid GObservable::fireGEvent(QEvent* event,\n                             EventType eventType,\n                             const std::string& eventName) {\n    require::nonNull(event, \"GObservable::fireGEvent\", \"event\");\n    GEvent generalEvent(\n                /* class  */ MOUSE_EVENT,\n                /* type   */ eventType,\n                /* name   */ eventName,\n                /* source */ this);\n    generalEvent.setInternalEvent(event);\n    fireEvent(generalEvent);\n}\n\nvoid GObservable::fireGEvent(QCloseEvent* event,\n                             EventType eventType,\n                             const std::string& eventName) {\n    require::nonNull(event, \"GObservable::fireGEvent\", \"event\");\n    GEvent windowEvent(\n                /* class  */ WINDOW_EVENT,\n                /* type   */ eventType,\n                /* name   */ eventName,\n                /* source */ this);\n    windowEvent.setInternalEvent(event);\n    fireEvent(windowEvent);\n}\n\nvoid GObservable::fireGEvent(QKeyEvent* event,\n                             EventType eventType,\n                             const std::string& eventName) {\n    require::nonNull(event, \"GObservable::fireGEvent\", \"event\");\n    GEvent keyEvent(\n                /* class  */ KEY_EVENT,\n                /* type   */ eventType,\n                /* name   */ eventName,\n                /* source */ this);\n    keyEvent.setKeyCode(event->key());\n    std::string text = event->text().toStdString();\n    if (!text.empty()) {\n        keyEvent.setKeyChar(text);\n    } else {\n        // int keyChar = event->key() & 0x0000ffff & ~Qt::KeyboardModifierMask;\n        // keyEvent.setKeyChar((char) keyChar);\n    }\n    keyEvent.setModifiers(event->modifiers());\n    keyEvent.setInternalEvent(event);\n    fireEvent(keyEvent);\n}\n\nvoid GObservable::fireGEvent(QMouseEvent* event,\n                             EventType eventType,\n                             const std::string& eventName,\n                             const std::string& actionCommand) {\n    require::nonNull(event, \"GObservable::fireGEvent\", \"event\");\n    GEvent mouseEvent(\n                /* class  */ MOUSE_EVENT,\n                /* type   */ eventType,\n                /* name   */ eventName,\n                /* source */ this);\n    mouseEvent.setButton((int) event->button());\n    mouseEvent.setX(event->x());\n    mouseEvent.setY(event->y());\n    mouseEvent.setModifiers(event->modifiers());\n    mouseEvent.setActionCommand(actionCommand);\n    mouseEvent.setInternalEvent(event);\n    fireEvent(mouseEvent);\n}\n\nvoid GObservable::fireGEvent(QResizeEvent* event,\n                             EventType /* eventType */,\n                             const std::string& eventName) {\n    require::nonNull(event, \"GObservable::fireGEvent\", \"event\");\n    GEvent windowEvent(\n                /* class  */ WINDOW_EVENT,\n                /* type   */ WINDOW_RESIZED,\n                /* name   */ eventName,\n                /* source */ this);\n    windowEvent.setInternalEvent(event);\n    fireEvent(windowEvent);\n}\n\nvoid GObservable::fireGEvent(QTimerEvent* event,\n                             EventType /* eventType */,\n                             const std::string& /* eventName */) {\n    require::nonNull(event, \"GObservable::fireGEvent\", \"event\");\n    GEvent timerEvent(\n                /* class  */ TIMER_EVENT,\n                /* type   */ TIMER_TICKED,\n                /* name   */ \"timer\",\n                /* source */ this);\n    timerEvent.setInternalEvent(event);\n    fireEvent(timerEvent);\n}\n\nvoid GObservable::fireGEvent(QWheelEvent* event,\n                             EventType eventType,\n                             const std::string& eventName) {\n    require::nonNull(event, \"GObservable::fireGEvent\", \"event\");\n    GEvent wheelEvent(\n                /* class  */ MOUSE_EVENT,\n                /* type   */ eventType,\n                /* name   */ eventName,\n                /* source */ this);\n    wheelEvent.setButton((int) event->buttons());\n    wheelEvent.setX(event->x());\n    wheelEvent.setY(event->y());\n    wheelEvent.setModifiers(event->modifiers());\n    wheelEvent.setInternalEvent(event);\n    fireEvent(wheelEvent);\n}\n\nvoid GObservable::fireGEvent(QWindowStateChangeEvent* event,\n                             EventType eventType,\n                             const std::string& eventName) {\n    require::nonNull(event, \"GObservable::fireGEvent\", \"event\");\n    GEvent windowEvent(\n                /* class  */ WINDOW_EVENT,\n                /* type   */ eventType,\n                /* name   */ eventName,\n                /* source */ this);\n    windowEvent.setInternalEvent(event);\n    fireEvent(windowEvent);\n}\n\nbool GObservable::isAcceptingEvent(const std::string& eventType) const {\n    if (hasEventListener(eventType)) {\n        return true;\n    }\n    int eventMask = ANY_EVENT;\n    if (startsWith(eventType, \"action\")) {\n        eventMask = ACTION_EVENT;\n    } else if (startsWith(eventType, \"change\")) {\n        eventMask = CHANGE_EVENT;\n    } else if (startsWith(eventType, \"key\")) {\n        eventMask = KEY_EVENT;\n    } else if (startsWith(eventType, \"mouse\")) {\n        eventMask = MOUSE_EVENT;\n    } else if (startsWith(eventType, \"server\")) {\n        eventMask = SERVER_EVENT;\n    } else if (startsWith(eventType, \"table\")) {\n        eventMask = TABLE_EVENT;\n    } else if (startsWith(eventType, \"timer\")) {\n        eventMask = TIMER_EVENT;\n    } else if (startsWith(eventType, \"window\")) {\n        eventMask = WINDOW_EVENT;\n    }\n    return isAcceptingEvent(eventMask);\n}\n\nbool GObservable::isAcceptingEvent(const GEvent& event) const {\n    return isAcceptingEvent(event.getName());\n}\n\nbool GObservable::hasEventListener(const std::string& eventName) const {\n    return _eventMap.containsKey(eventName);\n}\n\nbool GObservable::isAcceptingEvent(int eventMask) const {\n    return GEventQueue::instance()->isAcceptingEvent(eventMask);\n}\n\nvoid GObservable::removeEventListener(const std::string& eventName) {\n    _eventMap.remove(eventName);\n}\n\nvoid GObservable::removeEventListeners(std::initializer_list<std::string> eventNames) {\n    for (std::string eventName : eventNames) {\n        removeEventListener(eventName);\n    }\n}\n\nvoid GObservable::setEventListener(const std::string& eventName, GEventListener func) {\n    GEvent::EventListenerWrapper wrapper;\n    wrapper.type = GEvent::HANDLER_EVENT;\n    wrapper.handler = func;\n    _eventMap[eventName] = wrapper;\n}\n\nvoid GObservable::setEventListener(const std::string& eventName, GEventListenerVoid func) {\n    GEvent::EventListenerWrapper wrapper;\n    wrapper.type = GEvent::HANDLER_VOID;\n    wrapper.handlerVoid = func;\n    _eventMap[eventName] = wrapper;\n}\n\nvoid GObservable::setEventListeners(std::initializer_list<std::string> eventNames, GEventListener func) {\n    for (std::string eventName : eventNames) {\n        setEventListener(eventName, func);\n    }\n}\n\nvoid GObservable::setEventListeners(std::initializer_list<std::string> eventNames, GEventListenerVoid func) {\n    for (std::string eventName : eventNames) {\n        setEventListener(eventName, func);\n    }\n}\n\nvoid GObservable::setEventsEnabled(bool eventsEnabled) {\n    _eventsEnabled = eventsEnabled;\n}\n\nstd::string GObservable::toString() const {\n    std::ostringstream out;\n    out << getType() << \"@\" << this;\n    return out.str();\n}\n\n/*\n * File: gclipboard.cpp\n * --------------------\n *\n * @author Marty Stepp\n * @version 2018/08/23\n * - renamed to gclipboard.cpp to replace Java version\n * @version 2018/07/19\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"gclipboard.h\"\n#include <QApplication>\n#include <QClipboard>\n#include <QString>\n#define INTERNAL_INCLUDE 1\n#include \"require.h\"\n#undef INTERNAL_INCLUDE\n\nGClipboard::GClipboard() {\n    // empty\n}\n\nvoid GClipboard::set(const std::string& text) {\n    QClipboard* clipboard = QApplication::clipboard();\n    require::nonNull(clipboard, \"GClipboard::set\", \"clipboard\");\n    clipboard->setText(QString::fromStdString(text));\n}\n\nstd::string GClipboard::get() {\n    QClipboard* clipboard = QApplication::clipboard();\n    require::nonNull(clipboard, \"GClipboard::get\", \"clipboard\");\n    return clipboard->text().toStdString();\n}\n\nbool GClipboard::isCopy(QKeyEvent* event) {\n    require::nonNull(event, \"GClipboard::isCopy\", \"event\");\n    bool ctrlOrMeta = (event->modifiers() & Qt::ControlModifier) != 0\n            || (event->modifiers() & Qt::MetaModifier) != 0;\n    return ctrlOrMeta && (event->key() == Qt::Key_C || event->key() == Qt::Key_Insert);\n}\n\nbool GClipboard::isCut(QKeyEvent* event) {\n    require::nonNull(event, \"GClipboard::isCopy\", \"event\");\n    bool shift = (event->modifiers() & Qt::ShiftModifier) != 0;\n    bool ctrlOrMeta = (event->modifiers() & Qt::ControlModifier) != 0\n            || (event->modifiers() & Qt::MetaModifier) != 0;\n    return (ctrlOrMeta && event->key() == Qt::Key_X)\n            || (shift && event->key() == Qt::Key_Delete);\n}\n\nbool GClipboard::isPaste(QKeyEvent* event) {\n    require::nonNull(event, \"GClipboard::isCopy\", \"event\");\n    bool shift = (event->modifiers() & Qt::ShiftModifier) != 0;\n    bool ctrlOrMeta = (event->modifiers() & Qt::ControlModifier) != 0\n            || (event->modifiers() & Qt::MetaModifier) != 0;\n    return (ctrlOrMeta && event->key() == Qt::Key_V)\n            || (shift && event->key() == Qt::Key_Insert);\n}\n\n/*\n * File: gtimer.cpp\n * ----------------\n * This file implements the gtimer.h interface.\n * \n * @version 2019/01/23\n * - added destructor\n * @version 2015/07/05\n * - removed static global Platform variable, replaced by getPlatform as needed\n * @version 2014/10/08\n * - removed 'using namespace' statement\n * - removed unneeded include statements\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"gtimer.h\"\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gthread.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gwindow.h\"\n#define INTERNAL_INCLUDE 1\n#include \"require.h\"\n#undef INTERNAL_INCLUDE\n\n/* Implementation of the GTimer class */\n\nGTimer::GTimer(double milliseconds)\n        : _ms(0),\n          _id(-1) {\n    setDelay(milliseconds);\n}\n\nGTimer::~GTimer() {\n    stop();\n}\n\ndouble GTimer::getDelay() const {\n    return _ms;\n}\n\nbool GTimer::isStarted() const {\n    return _id >= 0;\n}\n\nvoid GTimer::restart() {\n    stop();\n    start();\n}\n\nvoid GTimer::setDelay(double ms) {\n    require::positive(ms, \"GTimer::setDelay\", \"delay (ms)\");\n    _ms = ms;\n    if (isStarted()) {\n        restart();\n    }\n}\n\nvoid GTimer::start() {\n    _Internal_QMainWindow* lastWindow = static_cast<_Internal_QMainWindow*>(GWindow::getLastWindow());\n    if (!lastWindow) {\n        error(\"GTimer::start: You must create at least one GWindow before starting a GTimer.\");\n        return;\n    }\n    GThread::runOnQtGuiThreadAsync([this, lastWindow]() {\n        _id = lastWindow->timerStart(_ms);\n    });\n}\n\nvoid GTimer::stop() {\n    if (isStarted()) {\n        _Internal_QMainWindow* lastWindow = static_cast<_Internal_QMainWindow*>(GWindow::getLastWindow());\n        if (!lastWindow) {\n            error(\"GTimer::constructor: You must create at least one GWindow before stopping a GTimer.\");\n            return;\n        }\n        GThread::runOnQtGuiThreadAsync([this, lastWindow]() {\n            lastWindow->timerStop(_id);\n            _id = -1;\n        });\n    }\n}\n\n/*\n * File: gcontainer.cpp\n * --------------------\n *\n * @author Marty Stepp\n * @version 2019/02/02\n * - destructor now stops event processing\n * @version 2018/11/27\n * - added code to set a widget visible after adding/inserting it to flow container\n *   (needed to see widgets added to container after window is showing on screen)\n * @version 2018/09/19\n * - added contains, regionContains methods\n * - added argument checking with require.h\n * @version 2018/09/05\n * - thread safety improvements\n * - added setContainer logic to child interactors\n * @version 2018/08/29\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"gcontainer.h\"\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"glabel.h\"\n#define INTERNAL_INCLUDE 1\n#include \"glayout.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gthread.h\"\n#define INTERNAL_INCLUDE 1\n#include \"require.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#undef INTERNAL_INCLUDE\n\n// margin  - around container, but outside of its background color area (like CSS)\n// padding - around container, but within its background color area (like CSS)\n// spacing - between neighboring widgets in container\n\nconst int GContainer::MARGIN_DEFAULT = 5;\nconst int GContainer::SPACING_DEFAULT = 8;\n\n\nGContainer::GContainer(Layout layout, QWidget* parent)\n        : _iqcontainer(nullptr),\n          _layout(layout) {\n    GThread::runOnQtGuiThread([this, layout, parent]() {\n        _iqcontainer = new _Internal_QContainer(this, layout, getInternalParent(parent));\n    });\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGContainer::GContainer(Layout /*layout*/, int rows, int cols, QWidget* parent)\n        : _iqcontainer(nullptr),\n          _layout(LAYOUT_GRID) {\n    GThread::runOnQtGuiThread([this, rows, cols, parent]() {\n        _iqcontainer = new _Internal_QContainer(this, rows, cols, getInternalParent(parent));\n    });\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGContainer::~GContainer() {\n    // TODO: delete _iqcontainer;\n    _iqcontainer->detach();\n    _iqcontainer = nullptr;\n}\n\nvoid GContainer::add(GInteractor* interactor) {\n    require::nonNull(interactor, \"GContainer::add\");\n    QWidget* widget = interactor->getWidget();\n    if (!widget) {\n        return;\n    }\n\n    interactor->setContainer(this);\n    _interactors.add(interactor);\n\n    GThread::runOnQtGuiThread([this, widget]() {\n        widget->setParent(_iqcontainer);\n        _iqcontainer->add(widget);\n    });\n}\n\nvoid GContainer::add(GInteractor& interactor) {\n    add(&interactor);\n}\n\nvoid GContainer::addToGrid(GInteractor* interactor, int row, int col, int rowspan, int colspan) {\n    require::nonNull(interactor, \"GContainer::addToGrid\");\n    QWidget* widget = interactor->getWidget();\n    if (!widget) {\n        return;\n    }\n\n    GThread::runOnQtGuiThread([this, widget, row, col, rowspan, colspan]() {\n        _iqcontainer->addToGrid(widget, row, col, rowspan, colspan);\n    });\n}\n\nvoid GContainer::addToGrid(GInteractor& interactor, int row, int col, int rowspan, int colspan) {\n    addToGrid(&interactor, row, col, rowspan, colspan);\n}\n\nvoid GContainer::addToRegion(GInteractor* interactor, Region region) {\n    require::nonNull(interactor, \"GContainer::addToRegion\");\n    QWidget* widget = interactor->getWidget();\n    if (!widget) {\n        return;\n    }\n\n    // special case: if center, remove all other widgets in that region first\n    if (region == REGION_CENTER) {\n        clearRegion(region);\n    }\n\n    interactor->setContainer(this);\n    _interactors.add(interactor);\n    _interactorsByRegion[region].add(interactor);\n\n    GThread::runOnQtGuiThread([this, widget, region]() {\n        _iqcontainer->addToRegion(widget, region);\n    });\n}\n\nvoid GContainer::addToRegion(GInteractor* interactor, const std::string& region) {\n    addToRegion(interactor, stringToRegion(region));\n}\n\nvoid GContainer::addToRegion(GInteractor& interactor, Region region) {\n    addToRegion(&interactor, region);\n}\n\nvoid GContainer::addToRegion(GInteractor& interactor, const std::string& region) {\n    addToRegion(&interactor, region);\n}\n\nvoid GContainer::clear() {\n    for (GInteractor* interactor : _interactors) {\n        interactor->setContainer(nullptr);\n    }\n    _interactors.clear();\n    _interactorsByRegion.clear();\n\n    GThread::runOnQtGuiThread([this]() {\n        _iqcontainer->clear();\n    });\n}\n\nvoid GContainer::clearRegion(Region region) {\n    for (GInteractor* interactor : _interactorsByRegion[region]) {\n        interactor->setContainer(nullptr);\n        interactor->setVisible(false);\n        _interactors.removeValue(interactor);\n    }\n    _interactorsByRegion.remove(region);\n\n    GThread::runOnQtGuiThread([this, region]() {\n        _iqcontainer->clearRegion(region);\n    });\n}\n\nvoid GContainer::clearRegion(const std::string& region) {\n    clearRegion(stringToRegion(region));\n}\n\nbool GContainer::contains(GInteractor* interactor) const {\n    if (!interactor) {\n        return false;\n    } else {\n        return _iqcontainer->contains(interactor->getWidget());\n    }\n}\n\nbool GContainer::contains(GInteractor& interactor) const {\n    return contains(&interactor);\n}\n\nVector<GInteractor*> GContainer::getDescendents(const std::string& type) const {\n    Vector<GInteractor*> result;\n    for (GInteractor* interactor : _interactors) {\n        // pre-order traversal; add parent and then visit children\n        if (type.empty() || type == \"*\" || equalsIgnoreCase(type, interactor->getType())) {\n            result.add(interactor);\n        }\n\n        if (equalsIgnoreCase(interactor->getType(), \"GContainer\")) {\n            // recursively get all descendents of this child\n            GContainer* subcontainer = static_cast<GContainer*>(interactor);\n            Vector<GInteractor*> descendents = subcontainer->getDescendents(type);\n            result.addAll(descendents);\n        }\n    }\n    return result;\n}\n\nGInteractor* GContainer::getInteractor(int i) const {\n    return _interactors[i];\n}\n\nconst Vector<GInteractor*>& GContainer::getInteractors() const {\n    return _interactors;\n}\n\nint GContainer::getInteractorCount() const {\n    return _interactors.size();\n}\n\nGInteractor* GContainer::getInteractorByRegion(int i, Region region) const {\n    return _interactorsByRegion[region][i];\n}\n\nGInteractor* GContainer::getInteractorByRegion(int i, const std::string& region) const {\n    return getInteractorByRegion(i, stringToRegion(region));\n}\n\nint GContainer::getInteractorCountByRegion(Region region) const {\n    return _interactorsByRegion[region].size();\n}\n\nint GContainer::getInteractorCountByRegion(const std::string& region) const {\n    return getInteractorCountByRegion(stringToRegion(region));\n}\n\n\n_Internal_QWidget* GContainer::getInternalWidget() const {\n    return _iqcontainer;\n}\n\nGContainer::Layout GContainer::getLayout() const {\n    return _layout;\n}\n\ndouble GContainer::getMargin() const {\n    return _iqcontainer->getMargin();\n}\n\ndouble GContainer::getPadding() const {\n    int left, right, top, bottom;\n    _iqcontainer->getContentsMargins(&left, &top, &right, &bottom);\n    return (left + top + right + bottom) / 4.0;\n}\n\ndouble GContainer::getPaddingBottom() const {\n    int left, right, top, bottom;\n    _iqcontainer->getContentsMargins(&left, &top, &right, &bottom);\n    return bottom;\n}\n\ndouble GContainer::getPaddingLeft() const {\n    int left, right, top, bottom;\n    _iqcontainer->getContentsMargins(&left, &top, &right, &bottom);\n    return left;\n}\n\ndouble GContainer::getPaddingRight() const {\n    int left, right, top, bottom;\n    _iqcontainer->getContentsMargins(&left, &top, &right, &bottom);\n    return right;\n}\n\ndouble GContainer::getPaddingTop() const {\n    int left, right, top, bottom;\n    _iqcontainer->getContentsMargins(&left, &top, &right, &bottom);\n    return top;\n}\n\nGDimension GContainer::getPreferredSize() const {\n    QSize qsize = _iqcontainer->getPreferredSize();\n    return GDimension(qsize.width(), qsize.height());\n}\n\ndouble GContainer::getRegionHeight(Region region) const {\n    return getRegionSize(region).getHeight();\n}\n\ndouble GContainer::getRegionHeight(const std::string& region) const {\n    return getRegionHeight(stringToRegion(region));\n}\n\nGDimension GContainer::getRegionSize(Region region) const {\n    QLayout* layout = _iqcontainer->layoutForRegion(region);\n    if (!layout) {\n        return GDimension();\n    } else {\n        QRect geom = layout->geometry();\n        return GDimension(geom.width(), geom.height());\n    }\n}\n\nGDimension GContainer::getRegionSize(const std::string& region) const {\n    return getRegionSize(stringToRegion(region));\n}\n\ndouble GContainer::getRegionWidth(Region region) const {\n    return getRegionSize(region).getWidth();\n}\n\ndouble GContainer::getRegionWidth(const std::string& region) const {\n    return getRegionWidth(stringToRegion(region));\n}\n\ndouble GContainer::getSpacing() const {\n    return _iqcontainer->getSpacing();\n}\n\nstd::string GContainer::getType() const {\n    return \"GContainer\";\n}\n\nQWidget* GContainer::getWidget() const {\n    return static_cast<QWidget*>(_iqcontainer);\n}\n\nvoid GContainer::insert(int index, GInteractor* interactor) {\n    require::nonNull(interactor, \"GContainer::insert\");\n    QWidget* widget = interactor->getWidget();\n    if (!widget) {\n        return;\n    }\n\n    interactor->setContainer(this);\n    _interactors.insert(index, interactor);\n\n    GThread::runOnQtGuiThread([this, index, widget]() {\n        _iqcontainer->insert(index, widget);\n    });\n}\n\nvoid GContainer::insert(int index, GInteractor& interactor) {\n    insert(index, &interactor);\n}\n\nvoid GContainer::insertToRegion(int index, GInteractor* interactor, Region region) {\n    require::nonNull(interactor, \"GContainer::insertToRegion\");\n    QWidget* widget = interactor->getWidget();\n    if (!widget) {\n        return;\n    }\n\n    interactor->setContainer(this);\n    _interactors.add(interactor);\n    _interactorsByRegion[region].insert(index, interactor);\n\n    GThread::runOnQtGuiThread([this, index, widget, region]() {\n        _iqcontainer->insertToRegion(index, widget, region);\n    });\n}\n\nvoid GContainer::insertToRegion(int index, GInteractor* interactor, const std::string& region) {\n    insertToRegion(index, interactor, stringToRegion(region));\n}\n\nvoid GContainer::insertToRegion(int index, GInteractor& interactor, Region region) {\n    insertToRegion(index, &interactor, region);\n}\n\nvoid GContainer::insertToRegion(int index, GInteractor& interactor, const std::string& region) {\n    insertToRegion(index, &interactor, stringToRegion(region));\n}\n\nbool GContainer::isEmpty() const {\n    return getInteractorCount() == 0;\n}\n\nbool GContainer::regionContains(GInteractor* interactor, GContainer::Region region) const {\n    if (!interactor) {\n        return false;\n    } else {\n        return _iqcontainer->regionContains(interactor->getWidget(), region);\n    }\n}\n\nbool GContainer::regionContains(GInteractor* interactor, const std::string& region) const {\n    return regionContains(interactor, stringToRegion(region));\n}\n\nbool GContainer::regionContains(GInteractor& interactor, GContainer::Region region) const {\n    return regionContains(&interactor, region);\n}\n\nbool GContainer::regionContains(GInteractor& interactor, const std::string& region) const {\n    return regionContains(interactor, stringToRegion(region));\n}\n\n\nvoid GContainer::remove(GInteractor* interactor) {\n    require::nonNull(interactor, \"GContainer::remove\");\n    QWidget* widget = interactor->getWidget();\n    if (!widget) {\n        return;\n    }\n\n    interactor->setContainer(nullptr);\n    _interactors.removeValue(interactor);\n\n    GThread::runOnQtGuiThread([this, widget]() {\n        _iqcontainer->remove(widget);\n    });\n}\n\nvoid GContainer::remove(GInteractor& interactor) {\n    remove(&interactor);\n}\n\nvoid GContainer::remove(int index) {\n    GInteractor* interactor = _interactors[index];\n    interactor->setContainer(nullptr);\n    _interactors.remove(index);\n\n    GThread::runOnQtGuiThread([this, index]() {\n        _iqcontainer->remove(index);\n    });\n}\n\nvoid GContainer::removeFromRegion(GInteractor* interactor, Region region) {\n    require::nonNull(interactor, \"GContainer::removeFromRegion\");\n    QWidget* widget = interactor->getWidget();\n    if (!widget) {\n        return;\n    }\n\n    interactor->setContainer(nullptr);\n    _interactors.removeValue(interactor);\n    _interactorsByRegion[region].removeValue(interactor);\n\n    GThread::runOnQtGuiThread([this, widget, region]() {\n        _iqcontainer->removeFromRegion(widget, region);\n    });\n}\n\nvoid GContainer::removeFromRegion(GInteractor* interactor, const std::string& region) {\n    removeFromRegion(interactor, stringToRegion(region));\n}\n\nvoid GContainer::removeFromRegion(GInteractor& interactor, Region region) {\n    removeFromRegion(&interactor, region);\n}\n\nvoid GContainer::removeFromRegion(GInteractor& interactor, const std::string& region) {\n    removeFromRegion(&interactor, region);\n}\n\nvoid GContainer::removeFromRegion(int index, Region region) {\n    GInteractor* interactor = _interactorsByRegion[region][index];\n    interactor->setContainer(nullptr);\n    _interactors.removeValue(interactor);\n    _interactorsByRegion[region].remove(index);\n\n    GThread::runOnQtGuiThread([this, index, region]() {\n        _iqcontainer->removeFromRegion(index, region);\n    });\n}\n\nvoid GContainer::removeFromRegion(int index, const std::string& region) {\n    removeFromRegion(index, stringToRegion(region));\n}\n\nvoid GContainer::setAlignment(HorizontalAlignment halign, VerticalAlignment valign) {\n    setHorizontalAlignment(halign);\n    setVerticalAlignment(valign);\n}\n\nvoid GContainer::setHorizontalAlignment(HorizontalAlignment halign) {\n    GThread::runOnQtGuiThread([this, halign]() {\n        _iqcontainer->setHorizontalAlignment(halign);\n    });\n}\n\nvoid GContainer::setMargin(double px) {\n    GThread::runOnQtGuiThread([this, px]() {\n        _iqcontainer->setMargin((int) px);\n    });\n}\n\nvoid GContainer::setPadding(double px) {\n    setPadding(px, px, px, px);\n}\n\nvoid GContainer::setPadding(double topBottom, double leftRight) {\n    setPadding(topBottom, leftRight, topBottom, leftRight);\n}\n\nvoid GContainer::setPadding(double top, double right, double bottom, double left) {\n    GThread::runOnQtGuiThread([this, top, right, bottom, left]() {\n        _iqcontainer->setPadding((int) top, (int) right, (int) bottom, (int) left);\n    });\n}\n\nvoid GContainer::setRegionAlignment(Region region, HorizontalAlignment halign) {\n    setRegionHorizontalAlignment(region, halign);\n}\n\nvoid GContainer::setRegionAlignment(Region region, VerticalAlignment valign) {\n    setRegionVerticalAlignment(region, valign);\n}\n\nvoid GContainer::setRegionAlignment(Region region, HorizontalAlignment halign, VerticalAlignment valign) {\n    GThread::runOnQtGuiThread([this, region, halign, valign]() {\n        _iqcontainer->setRegionAlignment(region, halign, valign);\n    });\n}\n\nvoid GContainer::setRegionAlignment(const std::string& region, const std::string& align) {\n    HorizontalAlignment halignment = toHorizontalAlignment(align);\n    VerticalAlignment valignment = toVerticalAlignment(align);\n    setRegionAlignment(stringToRegion(region), halignment, valignment);\n}\n\nvoid GContainer::setRegionAlignment(const std::string& region, const std::string& halign, const std::string& valign) {\n    HorizontalAlignment halignment = toHorizontalAlignment(halign);\n    VerticalAlignment valignment = toVerticalAlignment(valign);\n    setRegionAlignment(stringToRegion(region), halignment, valignment);\n}\n\nvoid GContainer::setRegionHorizontalAlignment(Region region, HorizontalAlignment halign) {\n    GThread::runOnQtGuiThread([this, region, halign]() {\n        _iqcontainer->setRegionHorizontalAlignment(region, halign);\n    });\n}\n\nvoid GContainer::setRegionHorizontalAlignment(const std::string& region, const std::string& halign) {\n    setRegionHorizontalAlignment(stringToRegion(region), toHorizontalAlignment(halign));\n}\n\nvoid GContainer::setRegionVerticalAlignment(Region region, VerticalAlignment valign) {\n    GThread::runOnQtGuiThread([this, region, valign]() {\n        _iqcontainer->setRegionVerticalAlignment(region, valign);\n    });\n}\n\nvoid GContainer::setRegionVerticalAlignment(const std::string& region, const std::string& valign) {\n    setRegionVerticalAlignment(stringToRegion(region), toVerticalAlignment(valign));\n}\n\nvoid GContainer::setSpacing(double px) {\n    GThread::runOnQtGuiThread([this, px]() {\n        _iqcontainer->setSpacing((int) px);\n    });\n}\n\nvoid GContainer::setVerticalAlignment(VerticalAlignment valign) {\n    GThread::runOnQtGuiThread([this, valign]() {\n        _iqcontainer->setVerticalAlignment(valign);\n    });\n}\n\nGContainer::Region GContainer::stringToRegion(const std::string& regionStr) {\n    std::string regionLC = toLowerCase(trim(regionStr));\n    if (stringContains(regionLC, \"north\") || stringContains(regionLC, \"top\")) {\n        return REGION_NORTH;\n    } else if (stringContains(regionLC, \"south\") || stringContains(regionLC, \"bottom\")) {\n        return REGION_SOUTH;\n    } else if (stringContains(regionLC, \"west\") || stringContains(regionLC, \"left\")) {\n        return REGION_WEST;\n    } else if (stringContains(regionLC, \"east\") || stringContains(regionLC, \"right\")) {\n        return REGION_EAST;\n    } else {\n        return REGION_CENTER;\n    }\n}\n\n\n_Internal_QContainer::_Internal_QContainer(GContainer* gcontainer, GContainer::Layout layoutType, QWidget* parent)\n        : QWidget(parent),\n          _gcontainer(gcontainer),\n          _layoutType(GContainer::LAYOUT_NONE),\n          _halign(ALIGN_CENTER),\n          _valign(ALIGN_MIDDLE),\n          _margin(GContainer::MARGIN_DEFAULT),\n          _spacing(GContainer::SPACING_DEFAULT),\n          // _rows(0),\n          _cols(0),\n          _currentIndex(-1),\n          _overallLayout(nullptr),\n          _northLayout(nullptr),\n          _southLayout(nullptr),\n          _westLayout(nullptr),\n          _eastLayout(nullptr),\n          _centerLayout(nullptr),\n          _middleLayout(nullptr) {\n    require::nonNull(gcontainer, \"_Internal_QContainer::constructor\");\n    setLayoutType(layoutType);\n    if (layout()) {\n        setSpacing(GContainer::SPACING_DEFAULT);\n    }\n}\n\n_Internal_QContainer::_Internal_QContainer(GContainer* gcontainer, int /*rows*/, int cols, QWidget* parent)\n        : QWidget(parent),\n          _gcontainer(gcontainer),\n          _layoutType(GContainer::LAYOUT_NONE),\n          _halign(ALIGN_CENTER),\n          _valign(ALIGN_MIDDLE),\n          _margin(GContainer::MARGIN_DEFAULT),\n          _spacing(GContainer::SPACING_DEFAULT),\n          // _rows(rows),\n          _cols(cols),\n          _currentIndex(-1),\n          _overallLayout(nullptr),\n          _northLayout(nullptr),\n          _southLayout(nullptr),\n          _westLayout(nullptr),\n          _eastLayout(nullptr),\n          _centerLayout(nullptr),\n          _middleLayout(nullptr) {\n    setObjectName(QString::fromStdString(\"_Internal_QContainer_\" + std::to_string(gcontainer->getID())));\n    setLayoutType(GContainer::LAYOUT_GRID);\n    if (layout()) {\n        setMargin(GContainer::MARGIN_DEFAULT);\n        setSpacing(GContainer::SPACING_DEFAULT);\n    }\n}\n\nvoid _Internal_QContainer::add(QWidget* widget) {\n    switch (_layoutType) {\n        case GContainer::LAYOUT_BORDER: {\n            addToRegion(widget, GContainer::REGION_CENTER);\n            break;\n        }\n        case GContainer::LAYOUT_GRID: {\n            _currentIndex++;\n            int row = _cols <= 0 ? 0 : _currentIndex / _cols;\n            int col = _cols <= 0 ? 0 : _currentIndex % _cols;\n            QGridLayout* gridLayout = (QGridLayout*) getQLayout();\n            gridLayout->addWidget(widget, row, col);\n            widget->setVisible(true);\n            GLayout::forceUpdate(this);\n            break;\n        }\n        case GContainer::LAYOUT_FLOW_HORIZONTAL:\n        case GContainer::LAYOUT_FLOW_VERTICAL: {\n            // add to end of the list of widgets in this region\n            QBoxLayout* boxLayout = (QBoxLayout*) getQLayout();\n            boxLayout->insertWidget(/* index */ boxLayout->count() - 1, widget);\n            widget->setVisible(true);\n            GLayout::forceUpdate(this);\n            break;\n        }\n        default: {\n            error(\"GContainer::add: no layout has been set\");\n            break;\n        }\n    }\n}\n\nvoid _Internal_QContainer::addToGrid(QWidget* widget, int row, int col, int rowspan, int colspan) {\n    if (_layoutType == GContainer::LAYOUT_GRID) {\n        QGridLayout* gridLayout = (QGridLayout*) getQLayout();\n        gridLayout->addWidget(widget, row, col, rowspan, colspan);\n        _currentIndex = row * _cols + col;   // approximate\n        widget->setVisible(true);\n        GLayout::forceUpdate(this);\n    } else {\n        add(widget);\n    }\n}\n\nvoid _Internal_QContainer::addToRegion(QWidget* widget, GContainer::Region region) {\n    if (_layoutType == GContainer::LAYOUT_BORDER) {\n        QBoxLayout* layout = (QBoxLayout*) layoutForRegion(region);\n        if (region == GContainer::REGION_CENTER) {\n            // center holds at most one widget\n            GLayout::clearLayout(layout);\n\n            // http://doc.qt.io/qt-5/qsizepolicy.html\n            QSizePolicy sizePolicy;\n            sizePolicy.setHorizontalPolicy(QSizePolicy::Ignored);\n            sizePolicy.setVerticalPolicy(QSizePolicy::Ignored);\n            sizePolicy.setHorizontalStretch(999);\n            sizePolicy.setVerticalStretch(999);\n            widget->setSizePolicy(sizePolicy);\n\n            layout->addWidget(widget, /* stretch */ 999);\n        } else {\n            // add to end of the list of widgets in this region\n            widget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);\n            layout->insertWidget(/* index */ layout->count() - 1, widget, /* stretch */ 0);\n        }\n        widget->setVisible(true);\n\n        // set alignment of widget\n        fixAlignment(widget, region);\n        fixMargin(layout, /* hasStretch */ region != GContainer::REGION_CENTER);\n        GLayout::forceUpdate(this);\n    } else {\n        add(widget);\n    }\n}\n\nvoid _Internal_QContainer::clear() {\n    if (_layoutType == GContainer::LAYOUT_BORDER) {\n        clearRegion(GContainer::REGION_NORTH);\n        clearRegion(GContainer::REGION_SOUTH);\n        clearRegion(GContainer::REGION_WEST);\n        clearRegion(GContainer::REGION_EAST);\n        clearRegion(GContainer::REGION_CENTER);\n    } else {\n        GLayout::clearLayout(layout());\n        _currentIndex = -1;\n        setHorizontalAlignment(getHorizontalAlignment());\n        setVerticalAlignment(getVerticalAlignment());\n    }\n}\n\nvoid _Internal_QContainer::clearRegion(GContainer::Region region) {\n    if (_layoutType == GContainer::LAYOUT_BORDER) {\n        QLayout* layout = layoutForRegion(region);\n        GLayout::clearLayout(layout);\n        fixMargin(layout, /* hasStretch */ region != GContainer::REGION_CENTER);\n        GLayout::forceUpdate(this);\n    } else {\n        clear();\n    }\n}\n\nbool _Internal_QContainer::contains(QWidget* widget) const {\n    if (_layoutType == GContainer::LAYOUT_BORDER) {\n        return GLayout::contains(_northLayout, widget)\n                || GLayout::contains(_southLayout, widget)\n                || GLayout::contains(_westLayout, widget)\n                || GLayout::contains(_eastLayout, widget)\n                || GLayout::contains(_centerLayout, widget);\n    } else {\n        return GLayout::contains(getQLayout(), widget);\n    }\n}\n\nvoid _Internal_QContainer::detach() {\n    // TODO: nullify/delete regions\n    _gcontainer = nullptr;\n}\n\nvoid _Internal_QContainer::fixAlignment(QWidget* widget, GContainer::Region region) {\n    // needs to be run on GUI thread\n    if (_layoutType == GContainer::LAYOUT_BORDER) {\n        QLayout* layout = layoutForRegion(region);\n        if (_halignMap.containsKey(region) && _valignMap.containsKey(region)) {\n            layout->setAlignment(widget, toQtAlignment(_halignMap[region]) | toQtAlignment(_valignMap[region]));\n        } else if (_halignMap.containsKey(region)) {\n            layout->setAlignment(widget, toQtAlignment(_halignMap[region]));\n        } else if (_valignMap.containsKey(region)) {\n            layout->setAlignment(widget, toQtAlignment(_valignMap[region]));\n        }\n    } else {\n        layout()->setAlignment(widget, toQtAlignment(_halign) | toQtAlignment(_valign));\n    }\n}\n\nvoid _Internal_QContainer::fixMargin(QLayout* layout, bool hasStretch) {\n    if (!hasStretch) {\n        return;\n    }\n    int emptyCount = hasStretch ? 2 : 0;\n    if (layout->count() <= emptyCount) {\n        layout->setMargin(0);\n    } else {\n        layout->setMargin(getMargin());\n    }\n    GLayout::invalidateLayout(layout);\n}\n\nHorizontalAlignment _Internal_QContainer::getHorizontalAlignment() const {\n    return _halign;\n}\n\nGContainer::Layout _Internal_QContainer::getLayoutType() const {\n    return _layoutType;\n}\n\nint _Internal_QContainer::getMargin() const {\n    return _margin;\n}\n\nQSize _Internal_QContainer::getPreferredSize() const {\n    // make sure the layout has calculated everybody's position/size\n    // GLayout::forceUpdate((QWidget*) this);\n\n    if (_layoutType == GContainer::LAYOUT_BORDER) {\n        QSize north = GLayout::getProperSize(_northLayout);\n        QSize south = GLayout::getProperSize(_southLayout);\n        QSize west = GLayout::getProperSize(_westLayout);\n        QSize east = GLayout::getProperSize(_eastLayout);\n\n        QSize center(0, 0);\n        if (!_centerLayout->isEmpty()) {\n            QWidget* centerWidget = _centerLayout->itemAt(0)->widget();\n            center = GLayout::getPreferredSize(centerWidget);\n        }\n\n        int preferredWidth = center.width() + west.width() + east.width();\n        int preferredHeight = center.height() + north.height() + south.height();\n        return QSize(preferredWidth, preferredHeight);\n    } else {\n        return layout()->sizeHint();\n    }\n}\n\nQLayout* _Internal_QContainer::getQLayout() const {\n    return layout();\n}\n\nint _Internal_QContainer::getSpacing() const {\n    return _spacing;\n}\n\nVerticalAlignment _Internal_QContainer::getVerticalAlignment() const {\n    return _valign;\n}\n\nvoid _Internal_QContainer::insert(int i, QWidget* widget) {\n    switch (_layoutType) {\n        case GContainer::LAYOUT_BORDER: {\n            insertToRegion(i, widget, GContainer::REGION_CENTER);\n            break;\n        }\n        case GContainer::LAYOUT_GRID: {\n            int row = _cols <= 0 ? 0 : i / _cols;\n            int col = _cols <= 0 ? 0 : i % _cols;\n            QGridLayout* gridLayout = (QGridLayout*) getQLayout();\n            gridLayout->addWidget(widget, row, col);\n            widget->setVisible(true);\n            GLayout::forceUpdate(this);\n            break;\n        }\n        case GContainer::LAYOUT_FLOW_HORIZONTAL:\n        case GContainer::LAYOUT_FLOW_VERTICAL:\n        default: {\n            // index is off by 1 because of 'stretch' widgets at start/end\n            QBoxLayout* boxLayout = (QBoxLayout*) getQLayout();\n            boxLayout->insertWidget(/* index */ i - 1, widget);\n            widget->setVisible(true);\n            GLayout::forceUpdate(this);\n            break;\n        }\n    }\n}\n\nvoid _Internal_QContainer::insertToRegion(int i, QWidget* widget, GContainer::Region region) {\n    if (_layoutType == GContainer::LAYOUT_BORDER) {\n        QLayout* layout = layoutForRegion(region);\n        if (region == GContainer::REGION_CENTER) {\n            // center holds at most one widget\n            GLayout::clearLayout(layout);\n            layout->addWidget(widget);\n            widget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);\n        } else {\n            // index is off by 1 because of 'stretch' widgets at start/end\n            ((QBoxLayout*) layout)->insertWidget(/* index */ i + 1, widget);\n            widget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);\n        }\n        widget->setVisible(true);\n\n        // set alignment of widget\n        fixAlignment(widget, region);\n        fixMargin(layout, /* hasStretch */ region != GContainer::REGION_CENTER);\n\n        GLayout::forceUpdate(this);\n    } else {\n        insert(i, widget);\n    }\n}\n\nbool _Internal_QContainer::isRegionStretch(GContainer::Region region) const {\n    return _regionStretchMap[region];\n}\n\nQLayout* _Internal_QContainer::layoutForRegion(GContainer::Region region) const {\n    if (region == GContainer::REGION_NORTH) {\n        return _northLayout;\n    } else if (region == GContainer::REGION_SOUTH) {\n        return _southLayout;\n    } else if (region == GContainer::REGION_WEST) {\n        return _westLayout;\n    } else if (region == GContainer::REGION_EAST) {\n        return _eastLayout;\n    } else {\n        return _centerLayout;\n    }\n}\n\nbool _Internal_QContainer::regionContains(QWidget* widget, GContainer::Region region) const {\n    if (_layoutType == GContainer::LAYOUT_BORDER) {\n        QLayout* layout = layoutForRegion(region);\n        return GLayout::contains(layout, widget);\n    } else {\n        return contains(widget);\n    }\n}\n\nvoid _Internal_QContainer::remove(QWidget* widget) {\n    if (_layoutType == GContainer::LAYOUT_BORDER) {\n        removeFromRegion(widget, GContainer::REGION_CENTER);\n        removeFromRegion(widget, GContainer::REGION_NORTH);\n        removeFromRegion(widget, GContainer::REGION_SOUTH);\n        removeFromRegion(widget, GContainer::REGION_WEST);\n        removeFromRegion(widget, GContainer::REGION_EAST);\n    } else if (layout()) {\n        layout()->removeWidget(widget);\n        GLayout::forceUpdate(this);\n    }\n}\n\nvoid _Internal_QContainer::removeFromRegion(QWidget* widget, GContainer::Region region) {\n    if (_layoutType == GContainer::LAYOUT_BORDER) {\n        QLayout* layout = layoutForRegion(region);\n        if (GLayout::contains(layout, widget)) {\n            widget->setVisible(false);\n            layout->removeWidget(widget);\n            layout->update();\n            fixMargin(layout, /* hasStretch */ region != GContainer::REGION_CENTER);\n            GLayout::forceUpdate(this);\n        }\n    } else {\n        remove(widget);\n    }\n}\n\nvoid _Internal_QContainer::remove(int i) {\n    if (_layoutType == GContainer::LAYOUT_BORDER) {\n        removeFromRegion(i, GContainer::REGION_CENTER);\n    } else {\n        QWidget* widget = layout()->itemAt(i)->widget();\n        if (widget) {\n            widget->setVisible(false);\n        }\n        // add +1 to the index to account for the 'stretch' at start\n        layout()->removeItem(layout()->itemAt(i + 1));\n        layout()->update();\n        GLayout::forceUpdate(this);\n    }\n}\n\nvoid _Internal_QContainer::removeFromRegion(int i, GContainer::Region region) {\n    if (_layoutType == GContainer::LAYOUT_BORDER) {\n        QLayout* layout = layoutForRegion(region);\n        QWidget* widget = layout->itemAt(i)->widget();\n        widget->setVisible(false);\n        if (layout == _centerLayout) {\n            layout->removeItem(layout->itemAt(i));\n        } else {\n            // add +1 to the index to account for the 'stretch' at start\n            layout->removeItem(layout->itemAt(i + 1));\n        }\n        layout->update();\n        fixMargin(layout, /* hasStretch */ region != GContainer::REGION_CENTER);\n        GLayout::forceUpdate(this);\n    } else {\n        remove(i);\n    }\n}\n\nvoid _Internal_QContainer::setPadding(int padding) {\n    setPadding(padding, padding, padding, padding);\n}\n\nvoid _Internal_QContainer::setPadding(int top, int right, int bottom, int left) {\n    QWidget::setContentsMargins(left, top, right, bottom);   // call super\n    if (_layoutType == GContainer::LAYOUT_BORDER) {\n        _northLayout->setContentsMargins(left, top, right, bottom);\n        _southLayout->setContentsMargins(left, top, right, bottom);\n        _westLayout->setContentsMargins(left, top, right, bottom);\n        _eastLayout->setContentsMargins(left, top, right, bottom);\n        // _centerLayout->setContentsMargins(left, top, right, bottom);\n        // _overallLayout->setContentsMargins(left, top, right, bottom);\n        // _middleLayout->setContentsMargins(left, top, right, bottom);\n    }\n    GLayout::forceUpdate(this);\n}\n\nvoid _Internal_QContainer::setHorizontalAlignment(HorizontalAlignment halign) {\n    switch (_layoutType) {\n        case GContainer::LAYOUT_FLOW_HORIZONTAL: {\n            // to align \"left\", limit first stretch;\n            // to align \"right\", limit last stretch\n            QHBoxLayout* layout = (QHBoxLayout*) getQLayout();\n            if (layout->count() >= 2) {\n                layout->removeItem(layout->itemAt(0));\n                layout->removeItem(layout->itemAt(layout->count() - 1));\n            }\n            if (halign == ALIGN_LEFT) {\n                layout->insertStretch(0, /* stretch */ 0);\n                layout->addStretch(/* stretch */ 99);\n            } else if (halign == ALIGN_RIGHT) {\n                layout->insertStretch(0, /* stretch */ 99);\n                layout->addStretch(/* stretch */ 0);\n            } else {   // halign == ALIGN_CENTER\n                layout->insertStretch(0, /* stretch */ 99);\n                layout->addStretch(/* stretch */ 99);\n            }\n            break;\n        }\n        case GContainer::LAYOUT_FLOW_VERTICAL: {\n            // set each widget's horizontal alignment individually\n            QVBoxLayout* layout = (QVBoxLayout*) getQLayout();\n            Qt::Alignment qtAlign = toQtAlignment(halign);\n            for (int i = 1; i < layout->count() - 1; i++) {\n                QWidget* widget = layout->itemAt(i)->widget();\n                if (widget) {\n                    layout->setAlignment(widget, qtAlign);\n                }\n            }\n            break;\n        }\n        case GContainer::LAYOUT_GRID: {\n            // set each widget's horizontal alignment individually\n            QGridLayout* layout = (QGridLayout*) getQLayout();\n            Qt::Alignment qtAlign = toQtAlignment(halign);\n            for (int i = 0; i < layout->count(); i++) {\n                QWidget* widget = layout->itemAt(i)->widget();\n                if (widget) {\n                    layout->setAlignment(widget, qtAlign);\n                }\n            }\n            break;\n        }\n        case GContainer::LAYOUT_BORDER: {\n            // - set align of ALL regions in align map\n            setRegionHorizontalAlignment(GContainer::REGION_CENTER, halign);\n            setRegionHorizontalAlignment(GContainer::REGION_NORTH, halign);\n            setRegionHorizontalAlignment(GContainer::REGION_SOUTH, halign);\n            setRegionHorizontalAlignment(GContainer::REGION_EAST, halign);\n            setRegionHorizontalAlignment(GContainer::REGION_WEST, halign);\n            break;\n        }\n        default: {\n            break;\n        }\n    }\n}\n\nvoid _Internal_QContainer::setLayoutType(GContainer::Layout layoutType) {\n    if (layoutType == _layoutType) {\n        return;   // don't do work if it's the same layout\n    }\n\n    if (_layoutType == GContainer::LAYOUT_BORDER\n            && layoutType != GContainer::LAYOUT_BORDER) {\n        // get rid of the now-unneeded inner layouts\n        _overallLayout = nullptr;\n        _northLayout   = nullptr;\n        _southLayout   = nullptr;\n        _westLayout    = nullptr;\n        _eastLayout    = nullptr;\n        _centerLayout  = nullptr;\n        _middleLayout  = nullptr;\n    }\n\n    _layoutType = layoutType;\n    switch (layoutType) {\n        case GContainer::LAYOUT_BORDER: {\n            // set up border regions\n            _overallLayout = new QVBoxLayout;\n            _overallLayout->setObjectName(QString::fromStdString(\"_overallLayout_\" + std::to_string(_gcontainer->getID())));\n            _northLayout   = new QHBoxLayout;\n            _northLayout->setObjectName(QString::fromStdString(\"_northLayout_\" + std::to_string(_gcontainer->getID())));\n            _southLayout   = new QHBoxLayout;\n            _southLayout->setObjectName(QString::fromStdString(\"_southLayout_\" + std::to_string(_gcontainer->getID())));\n            _westLayout    = new QVBoxLayout;\n            _westLayout->setObjectName(QString::fromStdString(\"_westLayout_\" + std::to_string(_gcontainer->getID())));\n            _eastLayout    = new QVBoxLayout;\n            _eastLayout->setObjectName(QString::fromStdString(\"_eastLayout_\" + std::to_string(_gcontainer->getID())));\n            _centerLayout  = new QHBoxLayout;\n            _centerLayout->setObjectName(QString::fromStdString(\"_centerLayout_\" + std::to_string(_gcontainer->getID())));\n            _middleLayout  = new QHBoxLayout;\n            _middleLayout->setObjectName(QString::fromStdString(\"_middleLayout_\" + std::to_string(_gcontainer->getID())));\n\n            // squish margins/padding\n            _overallLayout->setSpacing(0);\n            _northLayout->setSpacing(getSpacing());\n            _southLayout->setSpacing(getSpacing());\n            _westLayout->setSpacing(getSpacing());\n            _eastLayout->setSpacing(getSpacing());\n            _centerLayout->setSpacing(0);\n            _middleLayout->setSpacing(0);\n\n            _overallLayout->setMargin(0);\n            _overallLayout->setContentsMargins(0, 0, 0, 0);\n//            _northLayout->setMargin(getMargin());\n//            _southLayout->setMargin(getMargin());\n//            _westLayout->setMargin(getMargin());\n//            _eastLayout->setMargin(getMargin());\n            _northLayout->setMargin(0);\n            _northLayout->setContentsMargins(0, 0, 0, 0);\n            _southLayout->setMargin(0);\n            _southLayout->setContentsMargins(0, 0, 0, 0);\n            _westLayout->setMargin(0);\n            _westLayout->setContentsMargins(0, 0, 0, 0);\n            _eastLayout->setMargin(0);\n            _eastLayout->setContentsMargins(0, 0, 0, 0);\n            _centerLayout->setMargin(0);\n            _centerLayout->setContentsMargins(0, 0, 0, 0);\n            _middleLayout->setMargin(0);\n            _middleLayout->setContentsMargins(0, 0, 0, 0);\n\n            // add \"stretches\" at start and end of N/S/W/E regions\n            // to center and un-space the actual widgets in each\n            _northLayout->addStretch(99);\n            _northLayout->addStretch(99);\n            _southLayout->addStretch(99);\n            _southLayout->addStretch(99);\n            _westLayout->addStretch(99);\n            _westLayout->addStretch(99);\n            _eastLayout->addStretch(99);\n            _eastLayout->addStretch(99);\n\n            // fake empty central widget as placeholder until center widget added\n            _centerLayout->addStretch(999);\n\n            _overallLayout->addLayout(_northLayout, /* stretch */ 0);\n            _middleLayout->addLayout(_westLayout, /* stretch */ 0);\n            _middleLayout->addLayout(_centerLayout, /* stretch */ 99);\n            _middleLayout->addLayout(_eastLayout, /* stretch */ 0);\n            _overallLayout->addLayout(_middleLayout, /* stretch */ 99);\n            _overallLayout->addLayout(_southLayout, /* stretch */ 0);\n            setLayout(_overallLayout);\n            if (layout()) {\n                layout()->setSpacing(0);\n                layout()->setMargin(0);\n            }\n            setRegionAlignment(GContainer::REGION_NORTH, ALIGN_CENTER, ALIGN_MIDDLE);\n            setRegionAlignment(GContainer::REGION_SOUTH, ALIGN_CENTER, ALIGN_MIDDLE);\n            setRegionAlignment(GContainer::REGION_WEST, ALIGN_LEFT, ALIGN_MIDDLE);\n            setRegionAlignment(GContainer::REGION_EAST, ALIGN_LEFT, ALIGN_MIDDLE);\n            break;\n        }\n        case GContainer::LAYOUT_GRID: {\n            QGridLayout* qlayout = new QGridLayout;\n            if (layout()) {\n                // transfer over from previous layout\n                for (int i = 1; i < layout()->count() - 1; i++) {\n//                    QWidget* widget = layout()->itemAt(i)->widget();\n//                    qlayout->addWidget(widget);\n                }\n            }\n            setLayout(qlayout);\n            break;\n        }\n        case GContainer::LAYOUT_FLOW_VERTICAL: {\n            QVBoxLayout* qlayout = new QVBoxLayout;\n            qlayout->setSpacing(getSpacing());\n            qlayout->setMargin(getMargin());\n            qlayout->addStretch(99);   // top side stretch\n            if (layout()) {\n                // transfer over from previous layout\n                for (int i = 1; i < layout()->count() - 1; i++) {\n                    QWidget* widget = layout()->itemAt(i)->widget();\n                    if (widget) {\n                        qlayout->addWidget(widget);\n                    }\n                }\n            }\n            qlayout->addStretch(99);   // bottom side stretch\n            setLayout(qlayout);\n            setHorizontalAlignment(getHorizontalAlignment());\n            setVerticalAlignment(getVerticalAlignment());\n            break;\n        }\n        case GContainer::LAYOUT_FLOW_HORIZONTAL:\n        default: {\n            QHBoxLayout* qlayout = new QHBoxLayout;\n            qlayout->setSpacing(getSpacing());\n            qlayout->setMargin(getMargin());\n            qlayout->addStretch(99);   // left side stretch\n            if (layout()) {\n                // transfer over from previous layout\n                for (int i = 1; i < layout()->count() - 1; i++) {\n                    QWidget* widget = layout()->itemAt(i)->widget();\n                    qlayout->addWidget(widget);\n                }\n            }\n            qlayout->addStretch(99);   // right side stretch\n            setLayout(qlayout);\n            setHorizontalAlignment(getHorizontalAlignment());\n            setVerticalAlignment(getVerticalAlignment());\n            break;\n        }\n    }\n}\n\nvoid _Internal_QContainer::setMargin(int margin) {\n    _margin = margin;\n    if (layout()) {\n        if (_layoutType == GContainer::LAYOUT_BORDER) {\n            fixMargin(_northLayout, /* hasStretch */ true);\n            fixMargin(_southLayout, /* hasStretch */ true);\n            fixMargin(_westLayout, /* hasStretch */ true);\n            fixMargin(_eastLayout, /* hasStretch */ true);\n            // fixMargin(_centerLayout, /* hasStretch */ false);\n            // _centerLayout->setMargin(margin);\n        } else {\n            layout()->setMargin(margin);\n        }\n    }\n}\n\nvoid _Internal_QContainer::setRegionAlignment(GContainer::Region region,\n                                              HorizontalAlignment halign,\n                                              VerticalAlignment valign) {\n    setRegionHorizontalAlignment(region, halign);\n    setRegionVerticalAlignment(region, valign);\n}\n\nvoid _Internal_QContainer::setRegionHorizontalAlignment(GContainer::Region region,\n                                                        HorizontalAlignment halign) {\n    _halignMap[region] = halign;\n    if (_layoutType != GContainer::LAYOUT_BORDER) {\n        setHorizontalAlignment(halign);\n        return;\n    }\n\n    QLayout* layout = layoutForRegion(region);\n    if (!layout) {\n        return;\n    }\n\n    if (layout == _westLayout || layout == _eastLayout || layout == _centerLayout) {\n        // set each widget's horizontal alignment individually\n        Qt::Alignment qtAlign = toQtAlignment(halign);\n        QSizePolicy::Policy hSizePolicy = ((qtAlign & Qt::AlignJustify) != 0) ? QSizePolicy::Expanding : QSizePolicy::Preferred;\n        for (int i = 0; i < layout->count(); i++) {\n            QWidget* widget = layout->itemAt(i)->widget();\n            if (!widget) {\n                continue;\n            }\n            layout->setAlignment(widget, qtAlign);\n            widget->setSizePolicy(\n                    /* horizontal */ hSizePolicy,\n                    /* vertical */   widget->sizePolicy().verticalPolicy());\n        }\n    } else if (layout == _northLayout || layout == _southLayout) {\n        // to align \"left\", limit first stretch;\n        // to align \"right\", limit last stretch\n        QHBoxLayout* boxLayout = (QHBoxLayout*) layout;\n        boxLayout->removeItem(layout->itemAt(0));\n        boxLayout->removeItem(layout->itemAt(layout->count() - 1));\n        int beforeStretch = (halign == ALIGN_CENTER || halign == ALIGN_RIGHT)  ? 99 : 0;\n        int afterStretch  = (halign == ALIGN_LEFT   || halign == ALIGN_CENTER) ? 99 : 0;\n        boxLayout->insertStretch(0, beforeStretch);\n        boxLayout->addStretch(afterStretch);\n    }\n\n    layout->update();\n    GLayout::forceUpdate(this);\n}\n\nvoid _Internal_QContainer::setRegionStretch(GContainer::Region region, bool stretch) {\n    _regionStretchMap[region] = stretch;\n\n    // stretch / de-stretch any widgets in that region\n\n}\n\nvoid _Internal_QContainer::setRegionVerticalAlignment(GContainer::Region region,\n                                                      VerticalAlignment valign) {\n    _valignMap[region] = valign;\n    if (_layoutType != GContainer::LAYOUT_BORDER) {\n        setVerticalAlignment(valign);\n        return;\n    }\n\n    QLayout* layout = layoutForRegion(region);\n    if (!layout) {\n        return;\n    }\n\n    if (layout == _westLayout || layout == _eastLayout) {\n        // to align \"top\", limit first stretch;\n        // to align \"bottom\", limit last stretch\n        QVBoxLayout* boxLayout = (QVBoxLayout*) layout;\n        boxLayout->removeItem(layout->itemAt(0));\n        boxLayout->removeItem(layout->itemAt(layout->count() - 1));\n        int beforeStretch = (valign == ALIGN_MIDDLE || valign == ALIGN_BOTTOM) ? 99 : 0;\n        int afterStretch  = (valign == ALIGN_TOP    || valign == ALIGN_MIDDLE) ? 99 : 0;\n        boxLayout->insertStretch(0, beforeStretch);\n        boxLayout->addStretch(afterStretch);\n    } else if (layout == _northLayout || layout == _southLayout || layout == _centerLayout) {\n        // set each widget's vertical alignment individually\n        Qt::Alignment qtAlign = toQtAlignment(valign);\n        QSizePolicy::Policy vSizePolicy = ((qtAlign & Qt::AlignJustify) != 0) ? QSizePolicy::Expanding : QSizePolicy::Preferred;\n        for (int i = 0; i < layout->count(); i++) {\n            QWidget* widget = layout->itemAt(i)->widget();\n            if (!widget) {\n                continue;\n            }\n            layout->setAlignment(widget, qtAlign);\n            widget->setSizePolicy(\n                    /* horizontal */ widget->sizePolicy().horizontalPolicy(),\n                    /* vertical */   vSizePolicy);\n        }\n    }\n\n    layout->update();\n    GLayout::forceUpdate(this);\n}\n\nvoid _Internal_QContainer::setSpacing(int spacing) {\n    _spacing = spacing;\n    if (layout()) {\n        if (_layoutType == GContainer::LAYOUT_BORDER) {\n            _northLayout->setSpacing(spacing);\n            _southLayout->setSpacing(spacing);\n            _westLayout->setSpacing(spacing);\n            _eastLayout->setSpacing(spacing);\n            _centerLayout->setSpacing(spacing);\n        } else {\n            layout()->setSpacing(spacing);\n        }\n    }\n}\n\nvoid _Internal_QContainer::setVerticalAlignment(VerticalAlignment valign) {\n    switch (_layoutType) {\n        case GContainer::LAYOUT_FLOW_HORIZONTAL: {\n            // set each widget's vertical alignment individually\n            QVBoxLayout* layout = (QVBoxLayout*) getQLayout();\n            Qt::Alignment qtAlign = toQtAlignment(valign);\n            for (int i = 1; i < layout->count() - 1; i++) {\n                QWidget* widget = layout->itemAt(i)->widget();\n                if (!widget) {\n                    continue;\n                }\n                layout->setAlignment(widget, qtAlign);\n            }\n            break;\n        }\n        case GContainer::LAYOUT_FLOW_VERTICAL: {\n            // to align \"left\", limit first stretch;\n            // to align \"right\", limit last stretch\n            QVBoxLayout* layout = (QVBoxLayout*) getQLayout();\n            if (layout->count() >= 2) {\n                layout->removeItem(layout->itemAt(0));\n                layout->removeItem(layout->itemAt(layout->count() - 1));\n            }\n            if (valign == ALIGN_TOP) {\n                layout->insertStretch(0, /* stretch */ 0);\n                layout->addStretch(/* stretch */ 99);\n            } else if (valign == ALIGN_BOTTOM) {\n                layout->insertStretch(0, /* stretch */ 99);\n                layout->addStretch(/* stretch */ 0);\n            } else {   // halign == ALIGN_MIDDLE\n                layout->insertStretch(0, /* stretch */ 99);\n                layout->addStretch(/* stretch */ 99);\n            }\n            break;\n        }\n        case GContainer::LAYOUT_GRID: {\n            // set each widget's vertical alignment individually\n            QGridLayout* layout = (QGridLayout*) getQLayout();\n            Qt::Alignment qtAlign = toQtAlignment(valign);\n            for (int i = 0; i < layout->count(); i++) {\n                QWidget* widget = layout->itemAt(i)->widget();\n                if (!widget) {\n                    continue;\n                }\n                layout->setAlignment(widget, qtAlign);\n            }\n            break;\n        }\n        case GContainer::LAYOUT_BORDER: {\n            // - set align of ALL regions in align map\n            setRegionVerticalAlignment(GContainer::REGION_CENTER, valign);\n            setRegionVerticalAlignment(GContainer::REGION_NORTH, valign);\n            setRegionVerticalAlignment(GContainer::REGION_SOUTH, valign);\n            setRegionVerticalAlignment(GContainer::REGION_EAST, valign);\n            setRegionVerticalAlignment(GContainer::REGION_WEST, valign);\n            break;\n        }\n        default: {\n            break;\n        }\n    }\n}\n\nQSize _Internal_QContainer::sizeHint() const {\n    if (hasPreferredSize()) {\n        return getPreferredSize();\n    } else {\n        return QWidget::sizeHint();\n    }\n}\n\n#ifdef SPL_PRECOMPILE_QT_MOC_FILES\n#define INTERNAL_INCLUDE 1\n#include \"moc_gcontainer.cpp\"   // speeds up compilation of auto-generated Qt files\n#undef INTERNAL_INCLUDE\n#endif // SPL_PRECOMPILE_QT_MOC_FILES\n\n/*\n * File: gscrollbar.cpp\n * --------------------\n *\n * @author Marty Stepp\n * @version 2019/02/02\n * - destructor now stops event processing\n * @version 2018/08/23\n * - renamed to gscrollbar.cpp to replace Java version\n * @version 2018/07/16\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"gscrollbar.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gthread.h\"\n#define INTERNAL_INCLUDE 1\n#include \"require.h\"\n#undef INTERNAL_INCLUDE\n\nGScrollBar::GScrollBar(GScrollBar::Orientation orientation,\n                         int value,\n                         int extent,\n                         int min,\n                         int max,\n                         QWidget* parent) {\n    GThread::runOnQtGuiThread([this, orientation, parent]() {\n        _iqscrollbar = new _Internal_QScrollBar(this, orientation == VERTICAL ? Qt::Vertical : Qt::Horizontal, getInternalParent(parent));\n    });\n    setState(value, extent, min, max);\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGScrollBar::~GScrollBar() {\n    // TODO: delete _iqscrollbar;\n    _iqscrollbar->detach();\n    _iqscrollbar = nullptr;\n}\n\nstd::string GScrollBar::getActionEventType() const {\n    return \"change\";\n}\n\nint GScrollBar::getExtent() const {\n    return _iqscrollbar->pageStep();\n}\n\n_Internal_QWidget* GScrollBar::getInternalWidget() const {\n    return _iqscrollbar;\n}\n\nint GScrollBar::getMax() const {\n    return _iqscrollbar->maximum();\n}\n\nint GScrollBar::getMin() const {\n    return _iqscrollbar->minimum();\n}\n\nGScrollBar::Orientation GScrollBar::getOrientation() const {\n    return _iqscrollbar->orientation() == Qt::Vertical ? VERTICAL : HORIZONTAL;\n}\n\nstd::string GScrollBar::getType() const {\n    return \"QGScrollBar\";\n}\n\nint GScrollBar::getValue() const {\n    return _iqscrollbar->value();\n}\n\nQWidget* GScrollBar::getWidget() const {\n    return static_cast<QWidget*>(_iqscrollbar);\n}\n\nvoid GScrollBar::setExtent(int extent) {\n    GThread::runOnQtGuiThread([this, extent]() {\n        _iqscrollbar->setPageStep(extent);\n    });\n}\n\nvoid GScrollBar::setMax(int max) {\n    int min = getMin();\n    require::require(min <= max, \"GScrollBar::setMax\", \"max (\" + std::to_string(max) + \") cannot be less than min (\" + std::to_string(min) + \")\");\n    GThread::runOnQtGuiThread([this, max]() {\n        _iqscrollbar->setMaximum(max);\n    });\n    updateSize();\n}\n\nvoid GScrollBar::setMin(int min) {\n    int max = getMax();\n    require::require(min <= max, \"GScrollBar::setMin\", \"min (\" + std::to_string(min) + \") cannot be greater than max (\" + std::to_string(max) + \")\");\n    GThread::runOnQtGuiThread([this, min]() {\n        _iqscrollbar->setMinimum(min);\n    });\n    updateSize();\n}\n\nvoid GScrollBar::setState(int value, int extent, int min, int max) {\n    require::require(min <= max, \"GScrollBar::setState\", \"min (\" + std::to_string(min) + \") cannot be greater than max (\" + std::to_string(max) + \")\");\n    require::inRange(value, min, max, \"GScrollBar::setState\", \"value\");\n    GThread::runOnQtGuiThread([this, value, extent, min, max]() {\n        _iqscrollbar->setRange(min, max);\n        _iqscrollbar->setValue(value);\n        _iqscrollbar->setPageStep(extent);\n    });\n    updateSize();\n}\n\nvoid GScrollBar::setValue(int value) {\n    require::inRange(value, getMin(), getMax(), \"GScrollBar::setValue\", \"value\");\n    GThread::runOnQtGuiThread([this, value]() {\n        _iqscrollbar->setValue(value);\n    });\n}\n\nvoid GScrollBar::updateSize() {\n    GThread::runOnQtGuiThread([this]() {\n        _iqscrollbar->update();\n        _iqscrollbar->updateGeometry();\n        if (getOrientation() == VERTICAL) {\n            _iqscrollbar->setPreferredSize(_iqscrollbar->sizeHint().width(), getMax() - getMin() + 1);\n        } else {\n            _iqscrollbar->setPreferredSize(getMax() - getMin() + 1, _iqscrollbar->sizeHint().height());\n        }\n    });\n}\n\n\n_Internal_QScrollBar::_Internal_QScrollBar(GScrollBar* gscrollbar, Qt::Orientation orientation, QWidget* parent)\n        : QScrollBar(orientation, parent),\n          _gscrollbar(gscrollbar) {\n    require::nonNull(gscrollbar, \"_Internal_QScrollBar::constructor\");\n    setObjectName(QString::fromStdString(\"_Internal_QScrollBar_\" + std::to_string(gscrollbar->getID())));\n    connect(this, SIGNAL(valueChanged(int)), this, SLOT(handleValueChange(int)));\n}\n\nvoid _Internal_QScrollBar::detach() {\n    _gscrollbar = nullptr;\n}\n\nvoid _Internal_QScrollBar::handleValueChange(int /* value */) {\n    if (!_gscrollbar) {\n        return;\n    }\n    GEvent changeEvent(\n                /* class  */ CHANGE_EVENT,\n                /* type   */ STATE_CHANGED,\n                /* name   */ \"change\",\n                /* source */ _gscrollbar);\n    changeEvent.setActionCommand(_gscrollbar->getActionCommand());\n    _gscrollbar->fireEvent(changeEvent);\n}\n\nQSize _Internal_QScrollBar::sizeHint() const {\n    if (hasPreferredSize()) {\n        return getPreferredSize();\n    } else {\n        return QScrollBar::sizeHint();\n    }\n}\n\n#ifdef SPL_PRECOMPILE_QT_MOC_FILES\n#define INTERNAL_INCLUDE 1\n#include \"moc_gscrollbar.cpp\"   // speeds up compilation of auto-generated Qt files\n#undef INTERNAL_INCLUDE\n#endif // SPL_PRECOMPILE_QT_MOC_FILES\n\n/*\n * File: glabel.cpp\n * ----------------\n *\n * @author Marty Stepp\n * @version 2019/04/23\n * - moved some event-handling code to GInteractor superclass\n * @version 2019/04/22\n * - added setIcon with QIcon and QPixmap\n * @version 2019/02/02\n * - destructor now stops event processing\n * @version 2018/10/04\n * - added get/setWordWrap\n * @version 2018/09/04\n * - added double-click event support\n * @version 2018/09/03\n * - added addActionListener methods for clickable labels\n * @version 2018/08/23\n * - renamed to glabel.cpp to replace Java version\n * @version 2018/06/25\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"glabel.h\"\n#include <iostream>\n#define INTERNAL_INCLUDE 1\n#include \"filelib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"glayout.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gthread.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gwindow.h\"\n#define INTERNAL_INCLUDE 1\n#include \"require.h\"\n#undef INTERNAL_INCLUDE\n\nGLabel::GLabel(const std::string& text, const std::string& iconFileName, QWidget* parent)\n        : _gtext(nullptr) {\n    GThread::runOnQtGuiThread([this, parent]() {\n        _iqlabel = new _Internal_QLabel(this, getInternalParent(parent));\n    });\n    setText(text);\n    if (!iconFileName.empty()) {\n        setIcon(iconFileName);\n    }\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGLabel::GLabel(const std::string& text, const QIcon& icon, QWidget* parent)\n        : _gtext(nullptr) {\n    GThread::runOnQtGuiThread([this, parent]() {\n        _iqlabel = new _Internal_QLabel(this, getInternalParent(parent));\n    });\n    setText(text);\n    setIcon(icon);\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGLabel::GLabel(const std::string& text, const QPixmap& icon, QWidget* parent)\n        : _gtext(nullptr) {\n    GThread::runOnQtGuiThread([this, parent]() {\n        _iqlabel = new _Internal_QLabel(this, getInternalParent(parent));\n    });\n    setText(text);\n    setIcon(icon);\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGLabel::~GLabel() {\n    // TODO: if (_gtext) { delete _gtext; }\n    // TODO: delete _iqlabel;\n    _iqlabel->detach();\n    _iqlabel = nullptr;\n}\n\nvoid GLabel::ensureGText() {\n    _gtext = new GText(getText());\n    _gtext->setColor(getColor());\n    _gtext->setFont(getFont());\n}\n\nGText* GLabel::getGText() const {\n    return _gtext;\n}\n\n_Internal_QWidget* GLabel::getInternalWidget() const {\n    return _iqlabel;\n}\n\nstd::string GLabel::getLabel() const {\n    return getText();\n}\n\nstd::string GLabel::getText() const {\n    return _iqlabel->text().toStdString();\n}\n\nGInteractor::TextPosition GLabel::getTextPosition() const {\n    // TODO\n//    switch (_iqlabel->toolButtonStyle()) {\n//    case Qt::ToolButtonTextBesideIcon:\n//        return GInteractor::TEXT_BESIDE_ICON;\n//    case Qt::ToolButtonTextUnderIcon:\n//        return GInteractor::TEXT_UNDER_ICON;\n//    case Qt::ToolButtonTextOnly:\n//    default:\n//        return GInteractor::TEXT_ONLY;\n//    }\n\n    return GInteractor::TEXT_BESIDE_ICON;\n}\n\nstd::string GLabel::getType() const {\n    return \"GLabel\";\n}\n\nQWidget* GLabel::getWidget() const {\n    return static_cast<QWidget*>(_iqlabel);\n}\n\nbool GLabel::hasGText() const {\n    return _gtext != nullptr;\n}\n\nbool GLabel::isWordWrap() const {\n    return _iqlabel->wordWrap();\n}\n\nvoid GLabel::setBounds(double x, double y, double width, double height) {\n    if (_gtext) {\n        _gtext->setBounds(x, y, width, height);\n    }\n    GInteractor::setBounds(x, y, width, height);\n}\n\nvoid GLabel::setBounds(const GRectangle& size) {\n    if (_gtext) {\n        _gtext->setBounds(size);\n    }\n    GInteractor::setBounds(size);\n}\n\nvoid GLabel::setColor(int rgb) {\n    if (_gtext) {\n        _gtext->setColor(rgb);\n    }\n    GInteractor::setColor(rgb);   // call super\n}\n\nvoid GLabel::setColor(const std::string& color) {\n    if (_gtext) {\n        _gtext->setColor(color);\n    }\n    GInteractor::setColor(color);   // call super\n}\n\nvoid GLabel::setFont(const QFont& font) {\n    if (_gtext) {\n        _gtext->setFont(font);\n    }\n    GInteractor::setFont(font);   // call super\n}\n\nvoid GLabel::setFont(const std::string& font) {\n    if (_gtext) {\n        _gtext->setFont(font);\n    }\n    GInteractor::setFont(font);   // call super\n}\n\nvoid GLabel::setForeground(int rgb) {\n    if (_gtext) {\n        _gtext->setForeground(rgb);\n    }\n    GInteractor::setForeground(rgb);   // call super\n}\n\nvoid GLabel::setForeground(const std::string& color) {\n    if (_gtext) {\n        _gtext->setForeground(color);\n    }\n    GInteractor::setForeground(color);   // call super\n}\n\nvoid GLabel::setHeight(double height) {\n    ensureGText();   // setting size triggers GText mode\n    _gtext->setHeight(height);\n    GInteractor::setHeight(height);\n}\n\nvoid GLabel::setIcon(const QIcon& icon) {\n    GInteractor::setIcon(icon);\n    GThread::runOnQtGuiThread([this, &icon]() {\n        QSize size(16, 16);   // default size\n        if (!icon.availableSizes().empty()) {\n            size = icon.availableSizes()[0];\n        }\n        QPixmap pixmap = icon.pixmap(size);\n        _iqlabel->setPixmap(pixmap);\n        _iqlabel->updateGeometry();\n        _iqlabel->update();\n\n        // TODO: loses text; how to have both icon and text in same label?\n        if (!getText().empty()) {\n            std::cerr << \"Warning: a GLabel cannot currently have both text and icon.\" << std::endl;\n        }\n    });\n}\n\nvoid GLabel::setIcon(const QPixmap& icon) {\n    GInteractor::setIcon(icon);\n    GThread::runOnQtGuiThread([this, &icon]() {\n        _iqlabel->setPixmap(icon);\n        _iqlabel->updateGeometry();\n        _iqlabel->update();\n\n        // TODO: loses text; how to have both icon and text in same label?\n        if (!getText().empty()) {\n            std::cerr << \"Warning: a GLabel cannot currently have both text and icon.\" << std::endl;\n        }\n    });\n}\n\nvoid GLabel::setIcon(const std::string& filename, bool retainIconSize) {\n    GInteractor::setIcon(filename, retainIconSize);\n    if (!filename.empty() && fileExists(filename)) {\n        GThread::runOnQtGuiThread([this, filename, retainIconSize]() {\n            if (filename.empty()) {\n                _iqlabel->setPixmap(QPixmap());\n            } else {\n                QPixmap pixmap(QString::fromStdString(filename));\n                _iqlabel->setPixmap(pixmap);\n                if (retainIconSize) {\n                    // TODO\n                    // _iqlabel->setIconSize(pixmap.size());\n                    _iqlabel->updateGeometry();\n                    _iqlabel->update();\n                }\n\n                // TODO: loses text; how to have both icon and text in same label?\n                if (!getText().empty()) {\n                    std::cerr << \"Warning: a GLabel cannot currently have both text and icon.\" << std::endl;\n                }\n            }\n        });\n    }\n}\n\nvoid GLabel::setLabel(const std::string& text) {\n    setText(text);\n}\n\nvoid GLabel::setLocation(double x, double y) {\n    ensureGText();   // setting location triggers GText mode\n    _gtext->setLocation(x, y);\n    GInteractor::setLocation(x, y);\n}\n\nvoid GLabel::setSize(double width, double height) {\n    ensureGText();   // setting size triggers GText mode\n    _gtext->setSize(width, height);\n    GInteractor::setSize(width, height);\n}\n\nvoid GLabel::setSize(const GDimension& size) {\n    ensureGText();   // setting size triggers GText mode\n    _gtext->setSize(size);\n    GInteractor::setSize(size);\n}\n\nvoid GLabel::setText(const std::string& text) {\n    if (_gtext) {\n        _gtext->setText(text);\n    }\n    GThread::runOnQtGuiThread([this, text]() {\n        _iqlabel->setText(QString::fromStdString(text));\n        GLayout::forceUpdate(_iqlabel);\n    });\n}\n\nvoid GLabel::setTextPosition(GInteractor::TextPosition position) {\n    // TODO: doesn't really work because a label can't have both text and icon in Qt\n    if (position == GInteractor::TEXT_UNDER_ICON) {\n        // _iqpushbutton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);\n    } else if (position == GInteractor::TEXT_BESIDE_ICON) {\n        // _iqpushbutton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);\n    } else if (position == GInteractor::TEXT_ONLY) {\n        // _iqpushbutton->setToolButtonStyle(Qt::ToolButtonTextOnly);\n    }\n}\n\nvoid GLabel::setVisible(bool visible) {\n    if (_gtext) {\n        _gtext->setVisible(visible);\n    }\n    GInteractor::setVisible(visible);   // call super\n}\n\nvoid GLabel::setWidth(double width) {\n    ensureGText();   // setting size triggers GText mode\n    _gtext->setWidth(width);\n    GInteractor::setWidth(width);\n}\n\nvoid GLabel::setWordWrap(bool wrap) {\n    GThread::runOnQtGuiThread([this, wrap]() {\n        _iqlabel->setWordWrap(wrap);\n    });\n}\n\nvoid GLabel::setX(double x) {\n    ensureGText();   // setting location triggers GText mode\n    _gtext->setX(x);\n    GInteractor::setX(x);\n}\n\nvoid GLabel::setY(double y) {\n    ensureGText();   // setting location triggers GText mode\n    _gtext->setY(y);\n    GInteractor::setY(y);\n}\n\n\n_Internal_QLabel::_Internal_QLabel(GLabel* glabel, QWidget* parent)\n        : QLabel(parent),\n          _glabel(glabel) {\n    require::nonNull(glabel, \"_Internal_QLabel::constructor\");\n    setObjectName(QString::fromStdString(\"_Internal_QLabel_\" + std::to_string(glabel->getID())));\n}\n\nvoid _Internal_QLabel::detach() {\n    _glabel = nullptr;\n}\n\nvoid _Internal_QLabel::mouseDoubleClickEvent(QMouseEvent* event) {\n    require::nonNull(event, \"_Internal_QLabel::mouseDoubleClickEvent\", \"event\");\n    QWidget::mouseDoubleClickEvent(event);   // call super\n    if (!_glabel) {\n        return;\n    }\n    emit doubleClicked();\n    if (!_glabel->isAcceptingEvent(\"doubleclick\")) {\n        return;\n    }\n    GEvent mouseEvent(\n                /* class  */ MOUSE_EVENT,\n                /* type   */ MOUSE_DOUBLE_CLICKED,\n                /* name   */ \"doubleclick\",\n                /* source */ _glabel);\n    mouseEvent.setActionCommand(_glabel->getActionCommand());\n    mouseEvent.setButton((int) event->button());\n    mouseEvent.setX(event->x());\n    mouseEvent.setY(event->y());\n    _glabel->fireEvent(mouseEvent);\n}\n\nvoid _Internal_QLabel::mousePressEvent(QMouseEvent* event) {\n    require::nonNull(event, \"_Internal_QLabel::mousePressEvent\", \"event\");\n    QWidget::mousePressEvent(event);   // call super\n    if (!_glabel) {\n        return;\n    }\n\n    // fire the signal/event only for left-clicks\n    if (!(event->button() & Qt::LeftButton)) {\n        return;\n    }\n\n    emit clicked();\n\n    if (!_glabel->isAcceptingEvent(\"click\")) {\n        return;\n    }\n\n    GEvent actionEvent(\n                /* class  */ ACTION_EVENT,\n                /* type   */ ACTION_PERFORMED,\n                /* name   */ \"click\",\n                /* source */ _glabel);\n    actionEvent.setActionCommand(_glabel->getActionCommand());\n    actionEvent.setButton((int) event->button());\n    actionEvent.setX(event->x());\n    actionEvent.setY(event->y());\n    _glabel->fireEvent(actionEvent);\n}\n\nQSize _Internal_QLabel::sizeHint() const {\n    if (hasPreferredSize()) {\n        return getPreferredSize();\n    } else {\n        return QLabel::sizeHint();\n    }\n}\n\n#ifdef SPL_PRECOMPILE_QT_MOC_FILES\n#define INTERNAL_INCLUDE 1\n#include \"moc_glabel.cpp\"   // speeds up compilation of auto-generated Qt files\n#undef INTERNAL_INCLUDE\n#endif // SPL_PRECOMPILE_QT_MOC_FILES\n\n/*\n * File: gobjects.cpp\n * ------------------\n * This file implements the gobjects.h interface.\n *\n * @author Marty Stepp\n * @version 2019/08/13\n * - bug fix for loading GImage (hasError -> !hasError) - thanks to Tyler Conklin\n * @version 2019/05/05\n * - added predictable GLine point ordering * @version 2019/04/23\n * - bug fix for loading GImage from file on Windows related to istream change\n * @version 2019/03/07\n * - added support for loading a GImage directly from istream (htiek)\n * @version 2018/09/14\n * - added opacity support\n * - added GCanvas-to-GImage conversion support\n * @version 2018/08/23\n * - renamed to gobjects.cpp to replace Java version\n * @version 2018/06/30\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"gobjects.h\"\n#include <algorithm>\n#include <cmath>\n#include <iomanip>\n#include <iostream>\n#include <QBrush>\n#include <QFont>\n#include <QPointF>\n#include <QPolygon>\n#include <QVector>\n#include <sstream>\n#include <string>\n#define INTERNAL_INCLUDE 1\n#include \"filelib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gmath.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gcolor.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gfont.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gthread.h\"\n#define INTERNAL_INCLUDE 1\n#include \"require.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"private/static.h\"\n#undef INTERNAL_INCLUDE\n\nconst double GRoundRect::DEFAULT_CORNER = 10.0;\nconst std::string GText::DEFAULT_FONT = \"Dialog-13\";\n\n// static constants\nSTATIC_CONST_VARIABLE_DECLARE(double, LINE_TOLERANCE, 1.5)\nSTATIC_CONST_VARIABLE_DECLARE(double, ARC_TOLERANCE, 2.5)\nSTATIC_VARIABLE_DECLARE_BLANK(QBrush, DEFAULT_BRUSH)\nSTATIC_VARIABLE_DECLARE_BLANK(QFont, DEFAULT_QFONT)\nSTATIC_VARIABLE_DECLARE(bool, DEFAULT_QFONT_SET, false)\n\n/**\n * Returns the square of the distance between two points.\n * Used when checking to see if a line touches a given point.\n * @private\n */\nstatic double dsq(double x0, double y0, double x1, double y1);\n\n\n/* GObject class */\n\nbool GObject::_sAntiAliasing = true;\n\nGObject::GObject(double x, double y, double width, double height)\n        : _x(x),\n          _y(y),\n          _width(width),\n          _height(height),\n          _lineWidth(1),\n          _opacity(1.0),\n          _lineStyle(GObject::LINE_SOLID),\n          _color(\"\"),\n          _colorInt(0),\n          _fillColor(\"\"),\n          _fillColorInt(0),\n          _font(\"\"),\n          _fillFlag(false),\n          _visible(true),\n          _transformed(false),\n          _parent(nullptr) {\n    // http://doc.qt.io/qt-5/qpen.html#cap-style\n    _pen.setJoinStyle(Qt::MiterJoin);   // don't round corners of line edges\n    _pen.setMiterLimit(99.0);\n    _pen.setCapStyle(Qt::FlatCap);      // don't overextend line endpoint\n    _brush.setStyle(Qt::SolidPattern);\n}\n\nGObject::~GObject() {\n    // empty\n}\n\nbool GObject::contains(double x, double y) const {\n    if (isTransformed()) {\n        // TODO\n        return getBounds().contains(x, y);\n    } else {\n        return getBounds().contains(x, y);\n    }\n}\n\nbool GObject::contains(const GPoint& pt) const {\n    return contains(pt.getX(), pt.getY());\n}\n\nGPoint GObject::getBottomRightLocation() const {\n    return GPoint(getRightX(), getBottomY());\n}\n\ndouble GObject::getBottomY() const {\n    return getY() + getHeight();\n}\n\nGRectangle GObject::getBounds() const {\n    if (isTransformed()) {\n        // TODO\n        return GRectangle(getX(), getY(), getWidth(), getHeight());\n    } else {\n        return GRectangle(getX(), getY(), getWidth(), getHeight());\n    }\n}\n\nGPoint GObject::getCenterLocation() const {\n    return GPoint(getCenterX(), getCenterY());\n}\n\ndouble GObject::getCenterX() const {\n    return getX() + getWidth() / 2;\n}\n\ndouble GObject::getCenterY() const {\n    return getY() + getHeight() / 2;\n}\n\nstd::string GObject::getColor() const {\n    return _color;\n}\n\nstd::string GObject::getFillColor() const {\n    return _fillColor;\n}\n\ndouble GObject::getHeight() const {\n    return _height;\n}\n\nGObject::LineStyle GObject::getLineStyle() const {\n    return _lineStyle;\n}\n\ndouble GObject::getLineWidth() const {\n    return _lineWidth;\n}\n\nGPoint GObject::getLocation() const {\n    return GPoint(getX(), getY());\n}\n\ndouble GObject::getOpacity() const {\n    return _opacity;\n}\n\nGCompound* GObject::getParent() const {\n    return _parent;\n}\n\ndouble GObject::getRightX() const {\n    return getX() + getWidth();\n}\n\nGDimension GObject::getSize() const {\n    GRectangle bounds = getBounds();\n    return GDimension(bounds.getWidth(), bounds.getHeight());\n}\n\ndouble GObject::getWidth() const {\n    return _width;\n}\n\ndouble GObject::getX() const {\n    return _x;\n}\n\ndouble GObject::getY() const {\n    return _y;\n}\n\nvoid GObject::initializeBrushAndPen(QPainter* painter) {\n    if (!painter) {\n        return;\n    }\n    if (GColor::hasAlpha(_color)) {\n        _pen.setColor(GColor::toQColorARGB(_colorInt));   // allow alpha\n    } else {\n        _pen.setColor(QColor(_colorInt));\n    }\n    _pen.setWidth((int) _lineWidth);\n    _pen.setStyle(toQtPenStyle(_lineStyle));\n\n    // http://doc.qt.io/qt-5/qpen.html#join-style\n    painter->setPen(_pen);\n\n    // font\n    if (!STATIC_VARIABLE(DEFAULT_QFONT_SET)) {\n        STATIC_VARIABLE(DEFAULT_QFONT) = painter->font();\n        STATIC_VARIABLE(DEFAULT_BRUSH).setColor(QColor(0x00ffffff));\n    }\n    if (_font.empty()) {\n        painter->setFont(STATIC_VARIABLE(DEFAULT_QFONT));\n    } else {\n        painter->setFont(GFont::toQFont(_font));\n    }\n\n\n    // fill color\n    if (_fillFlag) {\n        if (GColor::hasAlpha(_fillColor)) {\n            _brush.setColor(GColor::toQColorARGB(_fillColorInt));   // allow alpha\n        } else {\n            _brush.setColor(QColor(_fillColorInt));\n        }\n        painter->setBrush(_brush);\n    } else {\n        painter->setBrush(STATIC_VARIABLE(DEFAULT_BRUSH));\n    }\n\n    // anti-aliasing\n    painter->setRenderHint(QPainter::Antialiasing, GObject::isAntiAliasing());\n    painter->setRenderHint(QPainter::TextAntialiasing, GObject::isAntiAliasing());\n\n    // opacity\n    painter->setOpacity(_opacity);\n\n    // transform\n    painter->setTransform(_transform, /* combine */ false);\n}\n\nbool GObject::isAntiAliasing() {\n    return _sAntiAliasing;\n}\n\nbool GObject::isFilled() const {\n    return _fillFlag;\n}\n\nbool GObject::isTransformed() const {\n    return _transformed;\n}\n\nbool GObject::isVisible() const {\n    return _visible;\n}\n\nvoid GObject::move(double dx, double dy) {\n    setLocation(getX() + dx, getY() + dy);   // calls repaint\n}\n\nvoid GObject::repaint() {\n    // really instructs the GCompound parent to redraw itself\n    GCompound* parent = getParent();\n    while (parent && parent->getParent()) {\n        parent = parent->getParent();\n    }\n    if (parent) {\n        parent->conditionalRepaint();\n    }\n}\n\nvoid GObject::resetTransform() {\n    _transform = QTransform();\n    _transformed = false;\n    repaint();\n}\n\nvoid GObject::rotate(double theta) {\n    _transformed = true;\n    _transform = _transform.rotate(theta);\n    repaint();\n}\n\nvoid GObject::scale(double sf) {\n    scale(sf, sf);   // calls repaint\n}\n\nvoid GObject::scale(double sx, double sy) {\n    _transformed = true;\n    _transform = _transform.scale(sx, sy);\n    repaint();\n}\n\nvoid GObject::sendBackward() {\n    GCompound* parent = getParent();\n    if (parent) {\n        parent->sendBackward(this);\n    }\n}\n\nvoid GObject::sendForward() {\n    GCompound* parent = getParent();\n    if (parent) {\n        parent->sendForward(this);\n    }\n}\n\nvoid GObject::sendToBack() {\n    GCompound* parent = getParent();\n    if (parent) {\n        parent->sendToBack(this);\n    }\n}\n\nvoid GObject::sendToFront() {\n    GCompound* parent = getParent();\n    if (parent) {\n        parent->sendToFront(this);\n    }\n}\n\nvoid GObject::setAntiAliasing(bool value) {\n    _sAntiAliasing = value;\n}\n\nvoid GObject::setBottomY(double y) {\n    setBottomRightLocation(getRightX(), y);   // calls repaint\n}\n\nvoid GObject::setRightX(double x) {\n    setBottomRightLocation(x, getBottomY());   // calls repaint\n}\n\nvoid GObject::setBottomRightLocation(double x, double y) {\n    setLocation(x - getWidth(), y - getHeight());   // calls repaint\n}\n\nvoid GObject::setBottomRightLocation(const GPoint& pt) {\n    setBottomRightLocation(pt.getX(), pt.getY());   // calls repaint\n}\n\nvoid GObject::setBounds(double x, double y, double width, double height) {\n    _x = x;\n    _y = y;\n    _width = width;\n    _height = height;\n    repaint();\n}\n\nvoid GObject::setBounds(const GRectangle& bounds) {\n    setBounds(bounds.getX(), bounds.getY(), bounds.getWidth(), bounds.getHeight());\n}\n\nvoid GObject::setCenterX(double x) {\n    setCenterLocation(x, getCenterY());   // calls repaint\n}\n\nvoid GObject::setCenterY(double y) {\n    setCenterLocation(getCenterX(), y);   // calls repaint\n}\n\nvoid GObject::setCenterLocation(double x, double y) {\n    setLocation(x - getWidth() / 2, y - getHeight() / 2);   // calls repaint\n}\n\nvoid GObject::setCenterLocation(const GPoint& pt) {\n    setCenterLocation(pt.getX(), pt.getY());   // calls repaint\n}\n\nvoid GObject::setColor(int r, int g, int b) {\n    _color = GColor::convertRGBToColor(r, g, b);\n    _colorInt = GColor::convertRGBToRGB(r, g, b);\n    repaint();\n}\n\nvoid GObject::setColor(int rgb) {\n    _color = GColor::convertRGBToColor(rgb);\n    _colorInt = rgb;\n    repaint();\n}\n\nvoid GObject::setColor(const std::string& color) {\n    if (GColor::hasAlpha(color)) {\n        _color = color;\n        _colorInt = GColor::convertColorToRGB(color);\n        repaint();\n    } else {\n        setColor(GColor::convertColorToRGB(color));\n    }\n}\n\nvoid GObject::setFillColor(int r, int g, int b) {\n    _fillColor = GColor::convertRGBToColor(r, g, b);\n    _fillColorInt = GColor::convertRGBToRGB(r, g, b);\n    repaint();\n}\n\nvoid GObject::setFillColor(int rgb) {\n    _fillColor = GColor::convertRGBToColor(rgb);\n    _fillColorInt = rgb;\n    repaint();\n}\n\nvoid GObject::setFillColor(const std::string& color) {\n    _fillColor = color;\n    _fillColorInt = GColor::convertColorToRGB(color);\n    if (_fillColor == \"\") {\n        _fillFlag = false;\n    } else {\n        if (!GColor::hasAlpha(color)) {\n            _fillColor = GColor::convertRGBToColor(_fillColorInt);\n        }\n        _fillFlag = true;\n    }\n    repaint();\n}\n\nvoid GObject::setFilled(bool flag) {\n    _fillFlag = flag;\n    repaint();\n}\n\nvoid GObject::setFont(const QFont& font) {\n    setFont(GFont::toFontString(font));\n}\n\nvoid GObject::setFont(const std::string& font) {\n    _font = font;\n    repaint();\n}\n\nvoid GObject::setForeground(int r, int g, int b) {\n    setColor(r, g, b);\n}\n\nvoid GObject::setForeground(int rgb) {\n    setColor(rgb);\n}\n\nvoid GObject::setForeground(const std::string& color) {\n    setColor(color);\n}\n\nvoid GObject::setHeight(double height) {\n    setSize(getWidth(), height);\n}\n\nvoid GObject::setLineStyle(GObject::LineStyle lineStyle) {\n    _lineStyle = lineStyle;\n    repaint();\n}\n\nvoid GObject::setLineWidth(double lineWidth) {\n    _lineWidth = lineWidth;\n    repaint();\n}\n\nvoid GObject::setLocation(double x, double y) {\n    _x = x;\n    _y = y;\n    repaint();\n}\n\nvoid GObject::setLocation(const GPoint& pt) {\n    setLocation(pt.getX(), pt.getY());   // calls repaint\n}\n\nvoid GObject::setOpacity(double opacity) {\n    require::inRange(opacity, 0.0, 1.0, \"GObject::setOpacity\");\n    _opacity = opacity;\n    repaint();\n}\n\nvoid GObject::setSize(double width, double height) {\n    if (isTransformed()) {\n        error(\"GObject::setSize: Object has been transformed\");\n    }\n    _width = width;\n    _height = height;\n    repaint();\n}\n\nvoid GObject::setSize(const GDimension& size) {\n    setSize(size.getWidth(), size.getHeight());   // calls repaint\n}\n\nvoid GObject::setVisible(bool flag) {\n    _visible = flag;\n    repaint();\n}\n\nvoid GObject::setWidth(double width) {\n    setSize(width, getHeight());\n}\n\nvoid GObject::setX(double x) {\n    setLocation(x, getY());   // calls repaint\n}\n\nvoid GObject::setY(double y) {\n    setLocation(getX(), y);   // calls repaint\n}\n\nstd::string GObject::toString() const {\n    std::string extra = toStringExtra();\n    return getType()\n            + \"(\"\n            + \"x=\" + std::to_string(_x)\n            + \",y=\" + std::to_string(_y)\n            + \",w=\" + std::to_string(_width)\n            + \",h=\" + std::to_string(_height)\n            + (_lineWidth <= 1 ? \"\" : (\",lineWidth=\" + std::to_string(_lineWidth)))\n            + (_color.empty() ? \"\" : (\",color=\" + _color))\n            + (_fillColor.empty() ? \"\" : (\",fillColor=\" + _fillColor))\n            + (_font.empty() ? \"\" : (\",font=\" + _font))\n            + (_visible ? \"\" : (\",visible=\" + boolToString(_visible)))\n            + (extra.empty() ? \"\" : (\",\" + extra))\n            + \")\";\n}\n\nQt::PenStyle GObject::toQtPenStyle(GObject::LineStyle lineStyle) {\n    switch (lineStyle) {\n    case GObject::LINE_DASH:\n        return Qt::DashLine;\n    case GObject::LINE_DASH_DOT:\n        return Qt::DashDotLine;\n    case GObject::LINE_DASH_DOT_DOT:\n        return Qt::DashDotDotLine;\n    case GObject::LINE_DOT:\n        return Qt::DotLine;\n    case GObject::LINE_NONE:\n        return Qt::NoPen;\n    case GObject::LINE_SOLID:\n    default:\n        return Qt::SolidLine;\n    }\n}\n\nstd::string GObject::toStringExtra() const {\n    return \"\";\n}\n\n\nGArc::GArc(double width, double height, double start, double sweep)\n        : GObject(/* x */ 0, /* y */ 0, width, height),\n          _start(start),\n          _sweep(sweep) {\n    // empty\n}\n\nGArc::GArc(double x, double y, double width, double height, double start, double sweep)\n        : GObject(x, y, width, height),\n          _start(start),\n          _sweep(sweep) {\n    // empty\n}\n\nbool GArc::contains(double x, double y) const {\n    if (isTransformed()) {\n        // TODO\n        // return stanfordcpplib::getPlatform()->gobject_contains(this, x, y);\n    }\n    double rx = getWidth() / 2;\n    double ry = getHeight() / 2;\n    if (floatingPointEqual(rx, 0) || floatingPointEqual(ry, 0)) {\n        return false;\n    }\n    double dx = x - (getX() + rx);\n    double dy = y - (getY() + ry);\n    double r = (dx * dx) / (rx * rx) + (dy * dy) / (ry * ry);\n    if (isFilled()) {\n        if (r > 1.0) {\n            return false;\n        }\n    } else {\n        double t = STATIC_VARIABLE(ARC_TOLERANCE) / ((rx + ry) / 2);\n        if (std::fabs(1.0 - r) > t) {\n            return false;\n        }\n    }\n\n    // JL BUGFIX: must scale by ry, rx.\n    return containsAngle(atan2(-dy/ry, dx/rx) * 180 / PI);\n}\n\nbool GArc::containsAngle(double theta) const {\n    double start = std::min(_start, _start + _sweep);\n    double sweep = std::abs(_sweep);\n    if (sweep >= 360) {\n        return true;\n    }\n    theta = (theta < 0) ? 360 - fmod(-theta, 360) : fmod(theta, 360);\n    start = (start < 0) ? 360 - fmod(-start, 360) : fmod(start, 360);\n    if (start + sweep > 360) {\n        return theta >= start || theta <= start + sweep - 360;\n    } else {\n        return theta >= start && theta <= start + sweep;\n    }\n}\n\nvoid GArc::draw(QPainter* painter) {\n    // for some reason, Qt's arc-drawing functionality asks for angles in\n    // 1/16ths of a degree. okay sure whatever\n    static const int QT_ANGLE_SCALE_FACTOR = 16;\n    initializeBrushAndPen(painter);\n    painter->drawChord((int) getX(), (int) getY(),\n                       (int) getWidth(), (int) getHeight(),\n                       (int) (_start * QT_ANGLE_SCALE_FACTOR),\n                       (int) (_sweep * QT_ANGLE_SCALE_FACTOR));\n}\n\nGPoint GArc::getArcPoint(double theta) const {\n    double rx = getWidth() / 2;\n    double ry = getHeight() / 2;\n    double cx = getX() + rx;\n    double cy = getY() + ry;\n    double radians = theta * PI / 180;\n    return GPoint(cx + rx * cos(radians), cy - ry * sin(radians));\n}\n\nGRectangle GArc::getBounds() const {\n    if (isTransformed()) {\n        // TODO\n        // return stanfordcpplib::getPlatform()->gobject_getBounds(this);\n    }\n    double rx = getWidth() / 2;\n    double ry = getHeight() / 2;\n    double cx = getX() + rx;\n    double cy = getY() + ry;\n    double startRadians = _start * PI / 180;\n    double sweepRadians = _sweep * PI / 180;\n    double p1x = cx + cos(startRadians) * rx;\n    double p1y = cy - sin(startRadians) * ry;\n    double p2x = cx + cos(startRadians + sweepRadians) * rx;\n    double p2y = cy - sin(startRadians + sweepRadians) * ry;\n    double xMin = std::min(p1x, p2x);\n    double xMax = std::max(p1x, p2x);\n    double yMin = std::min(p1y, p2y);\n    double yMax = std::max(p1y, p2y);\n    if (containsAngle(0)) xMax = cx + rx;\n    if (containsAngle(90)) yMin = cy - ry;\n    if (containsAngle(180)) xMin = cx - rx;\n    if (containsAngle(270)) yMax = cy + ry;\n    if (isFilled()) {\n        xMin = std::min(xMin, cx);\n        yMin = std::min(yMin, cy);\n        xMax = std::max(xMax, cx);\n        yMax = std::max(yMax, cy);\n    }\n    return GRectangle(xMin, yMin, xMax - xMin, yMax - yMin);\n}\n\nGPoint GArc::getEndPoint() const {\n    return getArcPoint(_start + _sweep);\n}\n\nGRectangle GArc::getFrameRectangle() const {\n    return getBounds();\n}\n\ndouble GArc::getStartAngle() const {\n    return _start;\n}\n\nGPoint GArc::getStartPoint() const {\n    return getArcPoint(_start);\n}\n\ndouble GArc::getSweepAngle() const {\n    return _sweep;\n}\n\nstd::string GArc::getType() const {\n    return \"GArc\";\n}\n\nvoid GArc::setFrameRectangle(double x, double y, double width, double height) {\n    setBounds(x, y, width, height);   // calls repaint\n}\n\nvoid GArc::setFrameRectangle(const GRectangle& rect) {\n    setFrameRectangle(rect.getX(), rect.getY(), rect.getWidth(), rect.getHeight());   // calls repaint\n}\n\nvoid GArc::setStartAngle(double start) {\n    _start = start;\n    repaint();\n}\n\nvoid GArc::setSweepAngle(double sweep) {\n    _sweep = sweep;\n    repaint();\n}\n\nstd::string GArc::toStringExtra() const {\n    std::ostringstream oss;\n    oss << \" start=\" << _start << \" sweep=\" << _sweep;\n    return oss.str();\n}\n\n\nGCompound::GCompound()\n        : _autoRepaint(true) {\n    // empty\n}\n\nvoid GCompound::add(GObject* gobj) {\n    require::nonNull(gobj, \"GCompound::add\");\n    for (int i = _contents.size() - 1; i >= 0; i--) {   // avoid duplicates\n        if (_contents[i] == gobj) {\n            return;\n        }\n    }\n    _contents.add(gobj);\n    gobj->_parent = this;\n    if (gobj->isTransformed()) {\n        conditionalRepaint();\n    } else {\n        conditionalRepaintRegion(gobj->getBounds().enlargedBy((gobj->getLineWidth() + 1) / 2));\n    }\n}\n\nvoid GCompound::add(GObject* gobj, double x, double y) {\n    require::nonNull(gobj, \"GCompound::add\");\n    gobj->setLocation(x, y);\n    add(gobj);   // calls conditionalRepaint\n}\n\nvoid GCompound::add(GObject& gobj) {\n    add(&gobj);\n}\n\nvoid GCompound::add(GObject& gobj, double x, double y) {\n    add(&gobj, x, y);\n}\n\nvoid GCompound::clear() {\n    removeAll();   // calls conditionalRepaint\n}\n\nvoid GCompound::conditionalRepaint() {\n    if (_autoRepaint) {\n        repaint();\n    }\n}\n\nvoid GCompound::conditionalRepaintRegion(int x, int y, int width, int height) {\n    if (_autoRepaint) {\n        repaintRegion(x, y, width, height);\n    }\n}\n\nvoid GCompound::conditionalRepaintRegion(const GRectangle& bounds) {\n    if (_autoRepaint) {\n        repaintRegion(bounds);\n    }\n}\n\nbool GCompound::contains(double x, double y) const {\n    if (isTransformed()) {\n        // TODO\n        // return stanfordcpplib::getPlatform()->gobject_contains(this, x, y);\n    }\n    for (int i = 0, sz = _contents.size(); i < sz; i++) {\n        if (_contents[i]->contains(x, y)) {\n            return true;\n        }\n    }\n    return false;\n}\n\nvoid GCompound::draw(QPainter* painter) {\n    if (!painter) {\n        return;\n    }\n    // TODO: uncomment this? need settings to apply to every shape\n    // initializeBrushAndPen(painter);   //\n    for (GObject* obj : _contents) {\n        if (obj->isVisible()) {\n            obj->draw(painter);\n        }\n    }\n}\n\nint GCompound::findGObject(GObject* gobj) const {\n    int n = _contents.size();\n    for (int i = 0; i < n; i++) {\n        if (_contents.get(i) == gobj) {\n            return i;\n        }\n    }\n    return -1;\n}\n\nGRectangle GCompound::getBounds() const {\n    if (isTransformed()) {\n        // TODO\n        // return stanfordcpplib::getPlatform()->gobject_getBounds(this);\n    }\n    double xMin = +1E20;\n    double yMin = +1E20;\n    double xMax = -1E20;\n    double yMax = -1E20;\n    for (int i = 0; i < _contents.size(); i++) {\n        GRectangle bounds = _contents.get(i)->getBounds();\n        xMin = std::min(xMin, bounds.getX());\n        yMin = std::min(yMin, bounds.getY());\n        xMax = std::max(xMax, bounds.getX());\n        yMax = std::max(yMax, bounds.getY());   // JL BUGFIX 2016/10/11\n    }\n    // JL BUGFIX: shifted anchor point\n    return GRectangle(xMin + getX(), yMin + getY(), xMax - xMin, yMax - yMin);\n}\n\nGObject* GCompound::getElement(int index) const {\n    return _contents.get(index);\n}\n\nGObject* GCompound::getElementAt(double x, double y) const {\n    for (GObject* gobj : _contents) {\n        if (gobj && gobj->contains(x, y)) {\n            return gobj;\n        }\n    }\n    return nullptr;\n}\n\nint GCompound::getElementCount() const {\n    return _contents.size();\n}\n\nstd::string GCompound::getType() const {\n    return \"GCompound\";\n}\n\nQWidget* GCompound::getWidget() const {\n    return _widget;\n}\n\nbool GCompound::isAutoRepaint() const {\n    return _autoRepaint;\n}\n\nbool GCompound::isEmpty() const {\n    return _contents.size() == 0;\n}\n\nvoid GCompound::remove(GObject* gobj) {\n    require::nonNull(gobj, \"GCompound::remove\");\n    int index = findGObject(gobj);\n    if (index != -1) {\n        removeAt(index);   // calls conditionalRepaint\n    }\n}\n\nvoid GCompound::remove(GObject& gobj) {\n    remove(&gobj);\n}\n\nvoid GCompound::removeAll() {\n    bool wasEmpty = _contents.isEmpty();\n    Vector<GObject*> contentsCopy = _contents;\n    _contents.clear();\n    for (GObject* obj : contentsCopy) {\n        obj->_parent = nullptr;\n        // TODO: delete obj;\n    }\n    if (!wasEmpty) {\n        conditionalRepaint();\n    }\n}\n\nvoid GCompound::removeAt(int index) {\n    GObject* gobj = _contents[index];\n    _contents.remove(index);\n    gobj->_parent = nullptr;\n    if (gobj->isTransformed()) {\n        conditionalRepaint();\n    } else {\n        conditionalRepaintRegion(gobj->getBounds().enlargedBy((gobj->getLineWidth() + 1) / 2));\n    }\n}\n\nvoid GCompound::repaint() {\n    if (!_widget) {\n        return;\n    }\n\n    // actual repainting must be done in the Qt GUI thread\n    if (GThread::iAmRunningOnTheQtGuiThread()) {\n        _widget->repaint();   // TODO: change to update()?\n    } else {\n        GThread::runOnQtGuiThread([this]() {\n            _widget->repaint();   // TODO: change to update()?\n        });\n    }\n}\n\nvoid GCompound::repaintRegion(int x, int y, int width, int height) {\n    if (!_widget) {\n        return;\n    }\n\n    // actual repainting must be done in the Qt GUI thread\n    if (GThread::iAmRunningOnTheQtGuiThread()) {\n        _widget->repaint(x, y, width, height);\n    } else {\n        GThread::runOnQtGuiThread([this, x, y, width, height]() {\n            _widget->repaint(x, y, width, height);\n        });\n    }\n}\n\nvoid GCompound::repaintRegion(const GRectangle& bounds) {\n    repaintRegion((int) bounds.getX(), (int) bounds.getY(),\n                  (int) bounds.getWidth(), (int) bounds.getHeight());\n}\n\nvoid GCompound::sendBackward(GObject* gobj) {\n    require::nonNull(gobj, \"GCompound::sendBackward\");\n    int index = findGObject(gobj);\n    if (index == -1) {\n        return;\n    }\n    if (index != 0) {\n        _contents.remove(index);\n        _contents.insert(index - 1, gobj);\n        // stanfordcpplib::getPlatform()->gobject_sendBackward(gobj);\n        conditionalRepaint();\n    }\n}\n\nvoid GCompound::sendForward(GObject* gobj) {\n    require::nonNull(gobj, \"GCompound::sendForward\");\n    int index = findGObject(gobj);\n    if (index == -1) {\n        return;\n    }\n    if (index != _contents.size() - 1) {\n        _contents.remove(index);\n        _contents.insert(index + 1, gobj);\n        // stanfordcpplib::getPlatform()->gobject_sendForward(gobj);\n        conditionalRepaint();\n    }\n}\n\nvoid GCompound::sendToBack(GObject* gobj) {\n    require::nonNull(gobj, \"GCompound::sendToBack\");\n    int index = findGObject(gobj);\n    if (index == -1) {\n        return;\n    }\n    if (index != 0) {\n        _contents.remove(index);\n        _contents.insert(0, gobj);\n        // stanfordcpplib::getPlatform()->gobject_sendToBack(gobj);\n        conditionalRepaint();\n    }\n}\n\nvoid GCompound::sendToFront(GObject* gobj) {\n    require::nonNull(gobj, \"GCompound::sendToFront\");\n    int index = findGObject(gobj);\n    if (index == -1) {\n        return;\n    }\n    if (index != _contents.size() - 1) {\n        _contents.remove(index);\n        _contents.add(gobj);\n        conditionalRepaint();\n    }\n}\n\nvoid GCompound::setAutoRepaint(bool autoRepaint) {\n    _autoRepaint = autoRepaint;\n}\n\nvoid GCompound::setWidget(QWidget* widget) {\n    _widget = widget;\n}\n\nstd::string GCompound::toString() const {\n    return \"GCompound(...)\";\n}\n\n\nGImage::GImage(const std::string& filename, double x, double y)\n        : GObject(x, y),\n          _filename(filename),\n          _qimage(nullptr) {\n    if (!load(filename)) {\n        error(\"GImage::constructor: unable to load image from: \\\"\" + filename + \"\\\"\");\n    }\n}\n\nGImage::GImage(std::istream& source, double x, double y)\n        : GObject(x, y),\n          _filename(\"std::istream source\"),\n          _qimage(nullptr) {\n    if (!loadFromStream(source)) {\n        error(\"GImage::constructor: unable to load image from stream input\");\n    }\n}\n\nGImage::GImage(double width, double height) {\n    require::nonNegative2D(width, height, \"GImage::constructor\", \"width\", \"height\");\n    _width = width;\n    _height = height;\n    GThread::runOnQtGuiThread([this]() {\n        _qimage = new QImage(static_cast<int>(_width), static_cast<int>(_height), QImage::Format_ARGB32);\n    });\n}\n\nGImage::GImage(QImage* qimage) {\n    require::nonNull(qimage, \"GImage::constructor\");\n    _qimage = qimage;\n    _width = _qimage->width();\n    _height = _qimage->height();\n}\n\nGImage::~GImage() {\n    // TODO: delete _image;\n    _qimage = nullptr;\n}\n\nbool GImage::load(const std::string& filename) {\n    if (filename.empty() || !fileExists(filename)) {\n        return false;\n    }\n    bool hasError = false;\n    GThread::runOnQtGuiThread([this, filename, &hasError]() {\n        _qimage = new QImage;\n        if (_qimage->load(QString::fromStdString(_filename))) {\n            _width = _qimage->width();\n            _height = _qimage->height();\n        } else {\n            hasError = true;\n        }\n    });\n    return !hasError;   // *** BUGFIX thanks to Tyler Conklin\n}\n\nbool GImage::loadFromStream(std::istream& input) {\n    // transfer bytes to a string through std::stringstream\n    std::ostringstream byteStream;\n    byteStream << input.rdbuf();\n    std::string bytes = byteStream.str();\n\n    // load image\n    bool hasError = false;\n    GThread::runOnQtGuiThread([&, this]() {\n        _qimage = new QImage;\n        if (_qimage->loadFromData(reinterpret_cast<const uchar *>(bytes.data()), bytes.size())) {\n            _width = _qimage->width();\n            _height = _qimage->height();\n        } else {\n            hasError = true;\n        }\n    });\n\n    return !hasError;\n}\n\nvoid GImage::draw(QPainter* painter) {\n    if (!painter) {\n        return;\n    }\n    double myX = getX();\n    double myY = getY();\n    double myWidth = getWidth();\n    double myHeight = getHeight();\n    double imgWidth = _qimage->width();\n    double imgHeight = _qimage->height();\n    painter->setOpacity(_opacity);\n    painter->setTransform(_transform, /* combine */ false);\n    if (floatingPointEqual(myWidth, imgWidth) && floatingPointEqual(myHeight, imgHeight)) {\n        // draw unscaled\n        painter->drawImage((int) myX, (int) myY, *_qimage);\n    } else {\n        // draw scaled\n        QRectF rect(myX, myY, myWidth, myHeight);\n        painter->drawImage(rect, *_qimage);\n    }\n}\n\nstd::string GImage::getFileName() const {\n    return _filename;\n}\n\nint GImage::getPixel(int x, int y) const {\n    require::inRange2D(x, y, (int) getWidth() - 1, (int) getHeight() - 1, \"GImage::getPixel\", \"x\", \"y\");\n    return (int) _qimage->pixel(x, y);\n}\n\nQImage* GImage::getQImage() const {\n    return _qimage;\n}\n\nstd::string GImage::getType() const {\n    return \"GImage\";\n}\n\nvoid GImage::setPixel(int x, int y, int rgb) {\n    _qimage->setPixel(x, y, rgb);\n}\n\nstd::string GImage::toStringExtra() const {\n    return \"filename=\\\"\" + _filename + \"\\\"\";\n}\n\n\nGLine::GLine(double x0, double y0, double x1, double y1, GObject::LineStyle lineStyle)\n        : GObject(x0, y0),\n          _dx(x1 - x0),\n          _dy(y1 - y0) {\n    setPoints(x0, y0, x1, y1);   // checks if point swap is needed\n    setLineStyle(lineStyle);\n}\n\nGLine::GLine(const GPoint& p0, const GPoint& p1)\n        : GObject(p0.getX(), p0.getY()),\n          _dx(p1.getX() - p0.getX()),\n          _dy(p1.getY() - p0.getY()) {\n    // empty\n}\n\nbool GLine::contains(double x, double y) const {\n    if (isTransformed()) {\n        // TODO\n        // return stanfordcpplib::getPlatform()->gobject_contains(this, x, y);\n    }\n    double x0 = getStartX();\n    double y0 = getStartY();\n    double x1 = getEndX();\n    double y1 = getEndY();\n    double tSquared = STATIC_VARIABLE(LINE_TOLERANCE) * STATIC_VARIABLE(LINE_TOLERANCE);\n    if (dsq(x, y, x0, y0) < tSquared) {\n        return true;\n    }\n    if (dsq(x, y, x1, y1) < tSquared) {\n        return true;\n    }\n    if (x < std::min(x0, x1) - STATIC_VARIABLE(LINE_TOLERANCE)) {\n        return false;\n    }\n    if (x > std::max(x0, x1) + STATIC_VARIABLE(LINE_TOLERANCE)) {\n        return false;\n    }\n    if (y < std::min(y0, y1) - STATIC_VARIABLE(LINE_TOLERANCE)) {\n        return false;\n    }\n    if (y > std::max(y0, y1) + STATIC_VARIABLE(LINE_TOLERANCE)) {\n        return false;\n    }\n    if (floatingPointEqual(x0 - x1, 0) && floatingPointEqual(y0 - y1, 0)) {\n        return false;\n    }\n    double u = ((x - x0) * (x1 - x0) + (y - y0) * (y1 - y0))\n            / dsq(x0, y0, x1, y1);\n    return dsq(x, y, x0 + u * (x1 - x0), y0 + u * (y1 - y0)) < tSquared;\n}\n\nvoid GLine::draw(QPainter* painter) {\n    if (!painter) {\n        return;\n    }\n    initializeBrushAndPen(painter);\n    painter->drawLine(static_cast<int>(getStartX()),\n                      static_cast<int>(getStartY()),\n                      static_cast<int>(getEndX()),\n                      static_cast<int>(getEndY()));\n}\n\nGRectangle GLine::getBounds() const {\n    if (isTransformed()) {\n        // TODO\n        // return stanfordcpplib::getPlatform()->gobject_getBounds(this);\n    }\n    double minX = std::min(getStartX(), getEndX());\n    double minY = std::min(getStartY(), getEndY());\n    return GRectangle(minX, minY, getWidth(), getHeight());\n}\n\nGPoint GLine::getEndPoint() const {\n    return GPoint(getX() + _dx, getY() + _dy);\n}\n\ndouble GLine::getEndX() const {\n    return getX() + _dx;\n}\n\ndouble GLine::getEndY() const {\n    return getY() + _dy;\n}\n\ndouble GLine::getHeight() const {\n    return std::fabs(_dy);\n}\n\nGPoint GLine::getStartPoint() const {\n    return getLocation();\n}\n\ndouble GLine::getStartX() const {\n    return getX();\n}\n\ndouble GLine::getStartY() const {\n    return getY();\n}\n\nstd::string GLine::getType() const {\n    return \"GLine\";\n}\n\ndouble GLine::getWidth() const {\n    return std::fabs(_dx);\n}\n\nvoid GLine::setEndPoint(double x1, double y1) {\n    setPoints(getStartX(), getStartY(), x1, y1);\n}\n\nvoid GLine::setEndPoint(const GPoint& p) {\n    setEndPoint(p.getX(), p.getY());\n}\n\nvoid GLine::setPoints(double x0, double y0, double x1, double y1) {\n    if (x1 < x0 || (floatingPointEqual(x1, x0) && y1 < y0)) {\n        // points are out of order; swap\n        std::swap(x0, x1);\n        std::swap(y0, y1);\n    }\n    _x = x0;\n    _y = y0;\n    _dx = x1 - x0;\n    _dy = y1 - y0;\n    repaint();\n}\n\nvoid GLine::setPoints(const GPoint& p0, const GPoint& p1) {\n    setPoints(p0.getX(), p0.getY(), p1.getX(), p1.getY());\n}\n\nvoid GLine::setStartPoint(double x0, double y0) {\n    setPoints(x0, y0, getEndX(), getEndY());\n}\n\nvoid GLine::setStartPoint(const GPoint& p) {\n    setStartPoint(p.getX(), p.getY());\n}\n\nstd::string GLine::toStringExtra() const {\n    std::ostringstream oss;\n    oss << \"x2=\" << getEndX() << \" y2=\" << getEndY();\n    return oss.str();\n}\n\n\nGOval::GOval(double x, double y, double width, double height)\n        : GObject(x, y, width, height) {\n    // empty\n}\n\nbool GOval::contains(double x, double y) const {\n    if (isTransformed()) {\n        // TODO\n        // return stanfordcpplib::getPlatform()->gobject_contains(this, x, y);\n    }\n    double rx = getWidth() / 2;\n    double ry = getHeight() / 2;\n    if (floatingPointEqual(rx, 0) || floatingPointEqual(ry, 0)) {\n        return false;\n    }\n    double dx = x - (getX() + rx);\n    double dy = y - (getY() + ry);\n    return (dx * dx) / (rx * rx) + (dy * dy) / (ry * ry) <= 1.0;\n}\n\nvoid GOval::draw(QPainter* painter) {\n    if (!painter) {\n        return;\n    }\n    initializeBrushAndPen(painter);\n    painter->drawEllipse((int) getX(), (int) getY(), (int) getWidth(), (int) getHeight());\n}\n\nstd::string GOval::getType() const {\n    return \"GOval\";\n}\n\n\nGPolygon::GPolygon() {\n    // empty\n}\n\nGPolygon::GPolygon(std::initializer_list<double> coords) {\n    addVertexes(coords);\n}\n\nGPolygon::GPolygon(std::initializer_list<GPoint> points) {\n    addVertexes(points);\n}\n\nvoid GPolygon::addEdge(double dx, double dy) {\n    addVertex(_cx + dx, _cy + dy);\n}\n\nvoid GPolygon::addEdge(const GPoint& pt) {\n    addEdge(pt.getX(), pt.getY());\n}\n\nvoid GPolygon::addEdges(std::initializer_list<double> coords) {\n    int i = 0;\n    double dx = 0;\n    double dy = 0;\n    for (double d : coords) {\n        if (i % 2 == 0) {\n            dx = d;\n        } else {\n            dy = d;\n            addEdge(dx, dy);\n        }\n        i++;\n    }\n}\n\nvoid GPolygon::addEdges(std::initializer_list<GPoint> points) {\n    for (GPoint pt : points) {\n        addEdge(pt);\n    }\n}\n\nvoid GPolygon::addPolarEdge(double r, double theta) {\n    addEdge(r * cos(theta * PI / 180), -r * sin(theta * PI / 180));\n}\n\nvoid GPolygon::addVertex(double x, double y) {\n    _cx = x;\n    _cy = y;\n    _vertices.append(QPointF(_cx, _cy));\n    repaint();\n}\n\nvoid GPolygon::addVertex(const GPoint& pt) {\n    addVertex(pt.getX(), pt.getY());\n}\n\nvoid GPolygon::addVertexes(std::initializer_list<double> coords) {\n    int i = 0;\n    double x = 0;\n    double y = 0;\n    for (double d : coords) {\n        if (i % 2 == 0) {\n            x = d;\n        } else {\n            y = d;\n            addVertex(x, y);\n        }\n        i++;\n    }\n}\n\nvoid GPolygon::addVertexes(std::initializer_list<GPoint> points) {\n    for (GPoint pt : points) {\n        addVertex(pt);\n    }\n}\n\nvoid GPolygon::clear() {\n    _vertices.clear();\n    repaint();\n}\n\nbool GPolygon::contains(double x, double y) const {\n    if (isTransformed()) {\n        // TODO\n        // return stanfordcpplib::getPlatform()->gobject_contains(this, x, y);\n    }\n    int crossings = 0;\n    int n = _vertices.size();\n    if (n < 2) {\n        return false;\n    }\n    if (_vertices[0] == _vertices[n - 1]) {\n        n--;\n    }\n    double x0 = _vertices[0].x();\n    double y0 = _vertices[0].y();\n    for (int i = 1; i <= n; i++) {\n        double x1 = _vertices[i % n].x();\n        double y1 = _vertices[i % n].y();\n        if ((y0 > y) != (y1 > y) && x - x0 < (x1 - x0) * (y - y0) / (y1 - y0)) {\n            crossings++;\n        }\n        x0 = x1;\n        y0 = y1;\n    }\n    return (crossings % 2 == 1);\n}\n\nvoid GPolygon::draw(QPainter* painter) {\n    if (!painter) {\n        return;\n    }\n    initializeBrushAndPen(painter);\n    painter->drawPolygon(QPolygonF(_vertices));\n}\n\nGRectangle GPolygon::getBounds() const {\n    if (isTransformed()) {\n        // TODO\n        // return stanfordcpplib::getPlatform()->gobject_getBounds(this);\n    }\n    double xMin = 0;\n    double yMin = 0;\n    double xMax = 0;\n    double yMax = 0;\n    for (int i = 0; i < _vertices.size(); i++) {\n        double x = _vertices[i].x();\n        double y = _vertices[i].y();\n        if (i == 0 || x < xMin) xMin = x;\n        if (i == 0 || y < yMin) yMin = y;\n        if (i == 0 || x > xMax) xMax = x;\n        if (i == 0 || y > yMax) yMax = y;\n    }\n    // JL BUGFIX: add getX, getY\n    return GRectangle(xMin + getX(), yMin + getY(), xMax - xMin, yMax - yMin);\n}\n\ndouble GPolygon::getHeight() const {\n    return getBounds().getHeight();\n}\n\nstd::string GPolygon::getType() const {\n    return \"GPolygon\";\n}\n\nGPoint GPolygon::getVertex(int i) const {\n    return GPoint(_vertices[i].x(), _vertices[i].y());\n}\n\nint GPolygon::getVertexCount() const {\n    return _vertices.size();\n}\n\nVector<GPoint> GPolygon::getVertices() const {\n    Vector<GPoint> vec;\n    for (const QPointF& point : _vertices) {\n        vec.add(GPoint(point.x(), point.y()));\n    }\n    return vec;\n}\n\ndouble GPolygon::getWidth() const {\n    return getBounds().getHeight();\n}\n\nvoid GPolygon::setVertex(int i, GPoint point) {\n    _vertices[i].setX(point.getX());\n    _vertices[i].setY(point.getY());\n    repaint();\n}\n\nstd::string GPolygon::toStringExtra() const {\n    std::ostringstream oss;\n    oss << \"vertices=\" << _vertices.size();\n    return oss.str();\n}\n\n\nGRect::GRect(double x, double y, double width, double height)\n        : GObject(x, y, width, height) {\n    // empty\n}\n\nvoid GRect::draw(QPainter* painter) {\n    if (!painter) {\n        return;\n    }\n    initializeBrushAndPen(painter);\n    painter->setRenderHint(QPainter::Antialiasing, false);\n    painter->drawRect((int) getX(), (int) getY(), (int) getWidth(), (int) getHeight());\n    painter->setRenderHint(QPainter::Antialiasing, GObject::isAntiAliasing());\n}\n\nstd::string GRect::getType() const {\n    return \"GRect\";\n}\n\n\n/*\n * Implementation notes: GRoundRect class\n * ---------------------------------------\n * Most of the GRoundRect class is inherited from the GRect class.\n */\n\nGRoundRect::GRoundRect(double width, double height, double corner)\n        : GRect(/* x */ 0, /* y */ 0, width, height),\n          _corner(corner) {\n    require::nonNegative(corner, \"GRoundRect::constructor\", \"corner\");\n}\n\nGRoundRect::GRoundRect(double x, double y, double width, double height, double corner)\n        : GRect(x, y, width, height),\n          _corner(corner) {\n    require::nonNegative(corner, \"GRoundRect::constructor\", \"corner\");\n}\n\nbool GRoundRect::contains(double x, double y) const {\n    if (isTransformed()) {\n        // TODO\n        // return stanfordcpplib::getPlatform()->gobject_contains(this, x, y);\n    }\n\n    // JL BUGFIX: The rest of this is code to return correct result in non-transformed case\n    // (accounting for corners)\n    if (!getBounds().contains(x, y)) {\n        return false;\n    }\n\n    // If corner diameter is too big, the largest sensible value is used by Java back end.\n    double a = std::min(_corner, getWidth()) / 2;\n    double b = std::min(_corner, getHeight()) / 2;\n\n    // Get distances from nearest edges of bounding rectangle\n    double dx = std::min(std::abs(x - getX()), std::abs(x - getRightX()));\n    double dy = std::min(std::abs(y - getY()), std::abs(y - getBottomY()));\n\n    if (dx > a || dy > b) {\n        return true;   // in \"central cross\" of rounded rect\n    }\n\n    return (dx - a) * (dx - a) / (a * a) + (dy - b) * (dy - b) / (b * b) <= 1;\n}\n\nvoid GRoundRect::draw(QPainter* painter) {\n    if (!painter) {\n        return;\n    }\n    initializeBrushAndPen(painter);\n    painter->drawRoundRect((int) getX(), (int) getY(),\n                           (int) getWidth(), (int) getHeight(),\n                           (int) _corner, (int) _corner);\n}\n\ndouble GRoundRect::getCorner() const {\n    return _corner;\n}\n\nstd::string GRoundRect::getType() const {\n    return \"GRoundRect\";\n}\n\nvoid GRoundRect::setCorner(double corner) {\n    require::nonNegative(corner, \"GRoundRect::setCorner\", \"corner\");\n    _corner = corner;\n    repaint();\n}\n\nstd::string GRoundRect::toStringExtra() const {\n    return \"corner=\" + std::to_string(_corner);\n}\n\n\nGText::GText(const std::string& str, double x, double y)\n        : GObject(x, y),\n          _text(str) {\n    _font = DEFAULT_FONT;\n    updateSize();\n}\n\nvoid GText::draw(QPainter* painter) {\n    if (!painter) {\n        return;\n    }\n    initializeBrushAndPen(painter);\n    painter->drawText((int) getX(), (int) getY(), QString::fromStdString(_text));\n}\n\nGRectangle GText::getBounds() const {\n    if (isTransformed()) {\n        // TODO\n        // return stanfordcpplib::getPlatform()->gobject_getBounds(this);\n    }\n    return GRectangle(getX(), getY() - getFontAscent(), getWidth(), getHeight());\n}\n\nstd::string GText::getFont() const {\n    return _font;\n}\n\ndouble GText::getFontAscent() const {\n    QFontMetrics metrics(GFont::toQFont(_font));\n    return metrics.ascent();\n}\n\ndouble GText::getFontDescent() const {\n    QFontMetrics metrics(GFont::toQFont(_font));\n    return metrics.descent();\n}\n\nstd::string GText::getLabel() const {\n    return _text;\n}\n\nstd::string GText::getText() const {\n    return _text;\n}\n\nstd::string GText::getType() const {\n    return \"GText\";\n}\n\nvoid GText::setFont(const QFont& font) {\n    setFont(GFont::toFontString(font));\n}\n\nvoid GText::setFont(const std::string& font) {\n    _font = font;\n    updateSize();\n    repaint();\n}\n\nvoid GText::setLabel(const std::string& str) {\n    _text = str;\n    updateSize();\n    repaint();\n}\n\nvoid GText::setText(const std::string& str) {\n    setLabel(str);\n}\n\nstd::string GText::toStringExtra() const {\n    return \"text=\\\"\" + _text + \"\\\"\";\n}\n\nvoid GText::updateSize() {\n    QFontMetrics metrics(GFont::toQFont(_font));\n    _width = metrics.width(QString::fromStdString(_text));\n    _height = metrics.height();\n}\n\nstd::ostream& operator <<(std::ostream& out, const GObject& obj) {\n    return out << obj.toString();\n}\n\nstatic double dsq(double x0, double y0, double x1, double y1) {\n    return (x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0);\n}\n\n/*\n * File: gbutton.cpp\n * ------------------\n *\n * @author Marty Stepp\n * @version 2019/04/23\n * - moved some event-handling code to GInteractor superclass\n * @version 2019/04/22\n * - added setIcon with QIcon and QPixmap\n * @version 2019/02/02\n * - destructor now stops event processing\n * @version 2018/09/04\n * - added double-click event support\n * @version 2018/08/23\n * - renamed to gbutton.cpp to replace Java version\n * @version 2018/06/25\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"gbutton.h\"\n#include <QKeySequence>\n#define INTERNAL_INCLUDE 1\n#include \"filelib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gthread.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gwindow.h\"\n#define INTERNAL_INCLUDE 1\n#include \"require.h\"\n#undef INTERNAL_INCLUDE\n\nGButton::GButton(const std::string& text, const std::string& iconFileName, QWidget* parent) {\n    GThread::runOnQtGuiThread([this, parent]() {\n        _iqpushbutton = new _Internal_QPushButton(this, getInternalParent(parent));\n    });\n    setText(text);\n    if (!iconFileName.empty()) {\n        setIcon(iconFileName);\n    }\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGButton::GButton(const std::string& text, const QIcon& icon, QWidget* parent) {\n    GThread::runOnQtGuiThread([this, parent]() {\n        _iqpushbutton = new _Internal_QPushButton(this, getInternalParent(parent));\n    });\n    setText(text);\n    setIcon(icon);\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGButton::GButton(const std::string& text, const QPixmap& icon, QWidget* parent) {\n    GThread::runOnQtGuiThread([this, parent]() {\n        _iqpushbutton = new _Internal_QPushButton(this, getInternalParent(parent));\n    });\n    setText(text);\n    setIcon(icon);\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGButton::~GButton() {\n    // TODO: delete _iqpushbutton;\n    _iqpushbutton->detach();\n    _iqpushbutton = nullptr;\n}\n\nstd::string GButton::getAccelerator() const {\n    return _iqpushbutton->shortcut().toString().toStdString();\n}\n\nstd::string GButton::getActionCommand() const {\n    if (_actionCommand.empty()) {\n        return getText();\n    } else {\n        return _actionCommand;\n    }\n}\n\n_Internal_QWidget* GButton::getInternalWidget() const {\n    return _iqpushbutton;\n}\n\nstd::string GButton::getText() const {\n    return _iqpushbutton->text().toStdString();\n}\n\nGInteractor::TextPosition GButton::getTextPosition() const {\n    switch (_iqpushbutton->toolButtonStyle()) {\n    case Qt::ToolButtonTextBesideIcon:\n        return GInteractor::TEXT_BESIDE_ICON;\n    case Qt::ToolButtonTextUnderIcon:\n        return GInteractor::TEXT_UNDER_ICON;\n    case Qt::ToolButtonTextOnly:\n    default:\n        return GInteractor::TEXT_ONLY;\n    }\n}\n\nstd::string GButton::getType() const {\n    return \"GButton\";\n}\n\nQWidget* GButton::getWidget() const {\n    return static_cast<QWidget*>(_iqpushbutton);\n}\n\nvoid GButton::setAccelerator(const std::string& accelerator) {\n    GThread::runOnQtGuiThread([this, accelerator]() {\n        QKeySequence keySeq(QString::fromStdString(normalizeAccelerator(accelerator)));\n        _iqpushbutton->setShortcut(keySeq);\n    });\n}\n\nvoid GButton::setIcon(const QIcon& icon) {\n    GInteractor::setIcon(icon);\n    GThread::runOnQtGuiThread([this, &icon]() {\n        _iqpushbutton->setIcon(icon);\n        _iqpushbutton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);\n        if (!icon.availableSizes().empty()) {\n            _iqpushbutton->setIconSize(icon.availableSizes()[0]);\n        }\n        _iqpushbutton->updateGeometry();\n        _iqpushbutton->update();\n    });\n}\n\nvoid GButton::setIcon(const QPixmap& icon) {\n    GInteractor::setIcon(icon);\n    GThread::runOnQtGuiThread([this, &icon]() {\n        _iqpushbutton->setIcon(icon);\n        _iqpushbutton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);\n        _iqpushbutton->setIconSize(icon.size());\n        _iqpushbutton->updateGeometry();\n        _iqpushbutton->update();\n    });\n}\n\nvoid GButton::setIcon(const std::string& filename, bool retainIconSize) {\n    GInteractor::setIcon(filename, retainIconSize);\n    if (!filename.empty() && fileExists(filename)) {\n        GThread::runOnQtGuiThread([this, filename, retainIconSize]() {\n            if (filename.empty()) {\n                _iqpushbutton->setIcon(QIcon());\n            } else {\n                QPixmap pixmap(QString::fromStdString(filename));\n                QIcon icon(pixmap);\n                _iqpushbutton->setIcon(icon);\n                _iqpushbutton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);\n                if (retainIconSize) {\n                    _iqpushbutton->setIconSize(pixmap.size());\n                    _iqpushbutton->updateGeometry();\n                    _iqpushbutton->update();\n                }\n            }\n        });\n    }\n}\n\nvoid GButton::setText(const std::string& text) {\n    GThread::runOnQtGuiThread([this, text]() {\n        _iqpushbutton->setText(QString::fromStdString(text));\n    });\n    setActionCommand(text);\n}\n\nvoid GButton::setTextPosition(GInteractor::TextPosition position) {\n    GThread::runOnQtGuiThread([this, position]() {\n        if (position == GInteractor::TEXT_UNDER_ICON) {\n            _iqpushbutton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);\n        } else if (position == GInteractor::TEXT_BESIDE_ICON) {\n            _iqpushbutton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);\n        } else if (position == GInteractor::TEXT_ONLY) {\n            _iqpushbutton->setToolButtonStyle(Qt::ToolButtonTextOnly);\n        }\n    });\n}\n\nvoid GButton::setTextPosition(SwingConstants /*horizontal*/, SwingConstants /*vertical*/) {\n    // TODO: not really supported\n    setTextPosition(GInteractor::TEXT_UNDER_ICON);\n}\n\n\n_Internal_QPushButton::_Internal_QPushButton(GButton* button, QWidget* parent)\n        : QToolButton(parent),\n          _gbutton(button) {\n    require::nonNull(button, \"_Internal_QPushButton::constructor\");\n    setObjectName(QString::fromStdString(\"_Internal_QPushButton_\" + std::to_string(button->getID())));\n    setToolButtonStyle(Qt::ToolButtonTextUnderIcon);\n    connect(this, SIGNAL(clicked()), this, SLOT(handleClick()));\n}\n\nvoid _Internal_QPushButton::detach() {\n    _gbutton = nullptr;\n}\n\nvoid _Internal_QPushButton::handleClick() {\n    if (!_gbutton || !_gbutton->isAcceptingEvent(\"click\")) {\n        return;\n    }\n    GEvent actionEvent(\n                /* class  */ ACTION_EVENT,\n                /* type   */ ACTION_PERFORMED,\n                /* name   */ \"click\",\n                /* source */ _gbutton);\n    actionEvent.setActionCommand(_gbutton->getActionCommand());\n    _gbutton->fireEvent(actionEvent);\n}\n\nvoid _Internal_QPushButton::mouseDoubleClickEvent(QMouseEvent* event) {\n    require::nonNull(event, \"_Internal_QPushButton::mouseDoubleClickEvent\", \"event\");\n    QWidget::mouseDoubleClickEvent(event);   // call super\n    if (!_gbutton || !_gbutton->isAcceptingEvent(\"doubleclick\")) {\n        return;\n    }\n    emit doubleClicked();\n    GEvent mouseEvent(\n                /* class  */ MOUSE_EVENT,\n                /* type   */ MOUSE_DOUBLE_CLICKED,\n                /* name   */ \"doubleclick\",\n                /* source */ _gbutton);\n    mouseEvent.setActionCommand(_gbutton->getActionCommand());\n    mouseEvent.setButton((int) event->button());\n    mouseEvent.setX(event->x());\n    mouseEvent.setY(event->y());\n    _gbutton->fireEvent(mouseEvent);\n}\n\nQSize _Internal_QPushButton::sizeHint() const {\n    if (hasPreferredSize()) {\n        return getPreferredSize();\n    } else {\n        return QToolButton::sizeHint();\n    }\n}\n\n#ifdef SPL_PRECOMPILE_QT_MOC_FILES\n#define INTERNAL_INCLUDE 1\n#include \"moc_gbutton.cpp\"   // speeds up compilation of auto-generated Qt files\n#undef INTERNAL_INCLUDE\n#endif // SPL_PRECOMPILE_QT_MOC_FILES\n\n/*\n * File: gcolorchooser.cpp\n * -----------------------\n * This file implements the operations declared in the gfilechooser.h file.\n * See gfilechooser.h for documentation of each member.\n * \n * @author Marty Stepp\n * @version 2018/09/07\n * - added overloads that accept GWindow* parent\n * @version 2018/08/23\n * - renamed to gfontchooser.cpp to replace Java version\n * @version 2018/07/29\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"gfontchooser.h\"\n#include <QFontDialog>\n#define INTERNAL_INCLUDE 1\n#include \"gfont.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gthread.h\"\n#undef INTERNAL_INCLUDE\n\nGFontChooser::GFontChooser() {\n    // empty\n}\n\nstd::string GFontChooser::showDialog(const std::string& title, const std::string& initialFont) {\n    return showDialog(/* parent */ (QWidget*) nullptr, title, initialFont);\n}\n\nstd::string GFontChooser::showDialog(GWindow* parent, const std::string& title, const std::string& initialFont) {\n    return showDialog(parent ? parent->getWidget() : nullptr, title, initialFont);\n}\n\nstd::string GFontChooser::showDialog(QWidget* parent, const std::string& title, const std::string& initialFont) {\n    QFont initialQFont = GFont::toQFont(initialFont);\n    std::string result = \"\";\n    GThread::runOnQtGuiThread([parent, title, initialQFont, &result]() {\n        bool ok = false;\n        QFont font = QFontDialog::getFont(&ok, initialQFont, parent, QString::fromStdString(title));\n        if (ok) {\n            result = GFont::toFontString(font);\n        }\n    });\n    return result;\n}\n\n/*\n * File: gfilechooser.cpp\n * ----------------------\n * This file implements the operations declared in the gfilechooser.h file.\n * See gfilechooser.h for documentation of each member.\n * \n * @author Marty Stepp\n * @version 2018/09/07\n * - added overloads that accept GWindow* parent\n * @version 2018/08/23\n * - renamed to gfilechooser.cpp to replace Java version\n * @version 2018/06/28\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"gfilechooser.h\"\n#include <QFileDialog>\n#define INTERNAL_INCLUDE 1\n#include \"gthread.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"vector.h\"\n#undef INTERNAL_INCLUDE\n\nGFileChooser::GFileChooser() {\n    // empty\n}\n\nstd::string GFileChooser::showOpenDialog(const std::string& title, const std::string& currentDir, const std::string& fileFilter) {\n    return showOpenDialog(/* parent */ (QWidget*) nullptr, title, currentDir, fileFilter);\n}\n\nstd::string GFileChooser::showOpenDialog(GWindow* parent, const std::string& title, const std::string& currentDir, const std::string& fileFilter) {\n    return showOpenDialog(parent ? parent->getWidget() : nullptr, title, currentDir, fileFilter);\n}\n\nstd::string GFileChooser::showOpenDialog(QWidget* parent, const std::string& title, const std::string& currentDir, const std::string& fileFilter) {\n    // Qt filter spec:\n    // If you want multiple filters, separate them with ';;', for example:\n    // \"Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)\"\n\n    std::string result = \"\";\n    GThread::runOnQtGuiThread([parent, title, currentDir, fileFilter, &result]() {\n        result = QFileDialog::getOpenFileName(parent,\n                QString::fromStdString(title),\n                QString::fromStdString(currentDir),\n                QString::fromStdString(normalizeFileFilter(fileFilter))).toStdString();\n    });\n    return result;\n}\n\nstd::string GFileChooser::showSaveDialog(const std::string& title, const std::string& currentDir, const std::string& fileFilter) {\n    return showSaveDialog(/* parent */ (QWidget*) nullptr, title, currentDir, fileFilter);\n}\n\nstd::string GFileChooser::showSaveDialog(GWindow* parent, const std::string& title, const std::string& currentDir, const std::string& fileFilter) {\n    return showSaveDialog(parent ? parent->getWidget() : nullptr, title, currentDir, fileFilter);\n}\n\nstd::string GFileChooser::showSaveDialog(QWidget* parent, const std::string& title, const std::string& currentDir, const std::string& fileFilter) {\n    std::string result = \"\";\n    GThread::runOnQtGuiThread([parent, title, currentDir, fileFilter, &result]() {\n        result = QFileDialog::getSaveFileName(parent,\n                QString::fromStdString(title),\n                QString::fromStdString(currentDir),\n                QString::fromStdString(normalizeFileFilter(fileFilter))).toStdString();\n    });\n    return result;\n}\n\nstd::string GFileChooser::normalizeFileFilter(const std::string& fileFilter) {\n    Vector<std::string> tokens = stringSplit(fileFilter, \",\");\n    for (int i = 0; i < tokens.size(); i++) {\n        std::string token = tokens[i];\n        token = trim(token);\n        // TODO: more processing\n        tokens[i] = token;\n    }\n    return stringJoin(tokens, \";;\");\n}\n\n/*\n * File: gdiffgui.cpp\n * ------------------\n * \n * @author Marty Stepp\n * @version 2019/04/20\n * - display expected/actual values using toPrintable to show non-printable characters better\n * @version 2018/10/06\n * - allow passing diff flags\n * @version 2018/09/27\n * - bug fix for allocating on heap rather than stack\n * @version 2018/08/23\n * - renamed to gdiffgui.cpp to replace Java version\n * @version 2018/07/31\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"gdiffgui.h\"\n#include <iostream>\n#include <QScrollBar>\n#include <string>\n#define INTERNAL_INCLUDE 1\n#include \"bitstream.h\"\n#define INTERNAL_INCLUDE 1\n#include \"consoletext.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gthread.h\"\n#undef INTERNAL_INCLUDE\n\n/*static*/ const std::string GDiffGui::COLOR_EXPECTED = \"#009900\";\n/*static*/ const std::string GDiffGui::COLOR_EXPECTED_DARK_MODE = \"#55ff44\";\n/*static*/ const std::string GDiffGui::COLOR_LINE_NUMBERS = \"#888888\";\n/*static*/ const std::string GDiffGui::COLOR_LINE_NUMBERS_DARK_MODE = \"#aaaaaa\";\n/*static*/ const std::string GDiffGui::COLOR_STUDENT  = \"#bb0000\";\n/*static*/ const std::string GDiffGui::COLOR_STUDENT_DARK_MODE = \"#f47862\";\n/*static*/ const bool GDiffGui::LINE_NUMBERS = true;\n\nvoid GDiffGui::showDialog(const std::string& name1,\n                          const std::string& text1,\n                          const std::string& name2,\n                          const std::string& text2,\n                          int diffFlags,\n                          bool showCheckBoxes) {\n    /* GDiffGui* diffGui = */ new GDiffGui(name1, text1, name2, text2, diffFlags, showCheckBoxes);\n    // TODO: delete diffGui;\n    // but don't do it too quickly or the lambda functions won't be able to\n    // work on the window\n}\n\nGDiffGui::GDiffGui(const std::string& name1,\n                   const std::string& text1,\n                   const std::string& name2,\n                   const std::string& text2,\n                   int diffFlags,\n                   bool /*showCheckBoxes*/) {\n    GThread::runOnQtGuiThread([this, name1, text1, name2, text2, diffFlags]() {\n        std::string diffs = diff::diff(text1, text2, diffFlags);\n\n        _window = new GWindow(800, 600);\n        _window->setTitle(\"Compare Output\");\n        _hsplitter = new QSplitter(/* orientation */ Qt::Horizontal, /* parent */ _window->getWidget());\n        _window->setCloseOperation(GWindow::CLOSE_HIDE);\n\n        // function to close the window when Escape is pressed\n        // (similar to code in gdiffimage.cpp)\n        auto windowCloseLambda = [this](GEvent event) {\n            if (event.getType() == KEY_PRESSED && event.getKeyChar() == GEvent::ESCAPE_KEY) {\n                _window->close();\n            }\n        };\n\n        std::string font = getConsoleFont();\n        _textAreaLeft  = new GTextArea();\n        setupLeftRightText(_textAreaLeft, name1 + \":\\n\" + text1);\n        _textAreaLeft->setEditable(false);\n        _textAreaLeft->setFont(font);\n        _textAreaLeft->setLineWrap(false);\n        _textAreaLeft->setKeyListener(windowCloseLambda);\n        _textAreaLeft->setEventListener(\"scroll\", [this]() {\n            syncScrollBars(/* left */ true);\n        });\n\n        _textAreaRight = new GTextArea();\n        setupLeftRightText(_textAreaRight, name2 + \":\\n\" + text2);\n        _textAreaRight->setEditable(false);\n        _textAreaRight->setFont(font);\n        _textAreaRight->setLineWrap(false);\n        _textAreaRight->setKeyListener(windowCloseLambda);\n        _textAreaRight->setEventListener(\"scroll\", [this]() {\n            syncScrollBars(/* left */ false);\n        });\n\n        _textAreaBottom = new GTextArea(\"Differences:\\n\");\n        _textAreaBottom->setEditable(false);\n        _textAreaBottom->setFont(font);\n        _textAreaBottom->setLineWrap(false);\n        _textAreaBottom->setKeyListener(windowCloseLambda);\n        setupDiffText(diffs);\n        _hsplitter->addWidget(_textAreaLeft->getWidget());\n        _hsplitter->addWidget(_textAreaRight->getWidget());\n        _hsplitter->setStretchFactor(0, 1);\n        _hsplitter->setStretchFactor(1, 1);\n        _hsplitter->setSizes(QList<int>({INT_MAX, INT_MAX}));   // evenly size the two halves\n        _hsplitterInteractor = new GGenericInteractor<QSplitter>(_hsplitter);\n\n        _vsplitter = new QSplitter(/* orientation */ Qt::Vertical, /* parent */ _window->getWidget());\n        _vsplitter->addWidget(_hsplitter);\n        _vsplitter->addWidget(_textAreaBottom->getWidget());\n        _vsplitter->setStretchFactor(0, 1);\n        _vsplitter->setStretchFactor(1, 1);\n        _vsplitter->setSizes(QList<int>({INT_MAX, INT_MAX}));   // evenly size the two halves\n        _vsplitterInteractor = new GGenericInteractor<QSplitter>(_vsplitter);\n\n        _window->addToRegion(_vsplitterInteractor, GWindow::REGION_CENTER);\n        _window->setKeyListener(windowCloseLambda);\n        _window->center();\n        _window->show();\n    });\n}\n\nGDiffGui::~GDiffGui() {\n    // TODO: delete\n    _window = nullptr;\n    _hsplitter = nullptr;\n    _vsplitter = nullptr;\n    _textAreaLeft = nullptr;\n    _textAreaRight = nullptr;\n    _textAreaBottom = nullptr;\n    _hsplitterInteractor = nullptr;\n    _vsplitterInteractor = nullptr;\n}\n\nvoid GDiffGui::setupDiffText(const std::string& diffs) {\n    Vector<std::string> lines = stringSplit(diffs, \"\\n\");\n    const std::string COLOR_NORMAL = _textAreaBottom->getColor();\n    for (std::string line : lines) {\n        std::string color;\n        if (startsWith(line, \"EXPECTED <\")) {\n            color = GWindow::chooseLightDarkModeColor(COLOR_EXPECTED, COLOR_EXPECTED_DARK_MODE);\n        } else if (startsWith(line, \"STUDENT  >\")) {\n            color = GWindow::chooseLightDarkModeColor(COLOR_STUDENT, COLOR_STUDENT_DARK_MODE);\n        } else {\n            color = COLOR_NORMAL;\n        }\n\n        // BUGFIX: display special characters with extra printable character info\n        line = toPrintable(line);\n\n        _textAreaBottom->appendFormattedText(line + \"\\n\", color);\n    }\n}\n\nvoid GDiffGui::setupLeftRightText(GTextArea* textArea, const std::string& text) {\n    if (!LINE_NUMBERS) {\n        textArea->setText(text);\n        return;\n    }\n\n    Vector<std::string> lines = stringSplit(text, \"\\n\");\n\n    const std::string COLOR_NORMAL = textArea->getColor();\n    for (int i = 0; i < lines.size(); i++) {\n        std::string line = lines[i];\n\n        // insert a gray line number at start of each line\n        int digits = static_cast<int>(std::to_string(lines.size()).length());\n        std::string lineNumberString =\n                padLeft(i == 0 ? std::string(\"\") : std::to_string(i), digits) + \"  \";\n        textArea->appendFormattedText(lineNumberString, GWindow::chooseLightDarkModeColor(COLOR_LINE_NUMBERS, COLOR_LINE_NUMBERS_DARK_MODE));\n        textArea->appendFormattedText(toPrintable(line) + \"\\n\", COLOR_NORMAL);\n    }\n}\n\nvoid GDiffGui::syncScrollBars(bool left) {\n    QTextEdit* qleft  = static_cast<QTextEdit*>(_textAreaLeft->getWidget());\n    QTextEdit* qright = static_cast<QTextEdit*>(_textAreaRight->getWidget());\n    if (left) {\n        // adjust the right scrollbar to match the left one\n        GThread::runOnQtGuiThreadAsync([qleft, qright]() {\n            int lval = qleft->verticalScrollBar()->value();\n            int rmax = qright->verticalScrollBar()->maximum();\n            int rval = std::max(0, std::min(lval, rmax));\n            qright->verticalScrollBar()->setValue(rval);\n        });\n    } else {\n        // adjust the left scrollbar to match the right one\n        GThread::runOnQtGuiThreadAsync([qleft, qright]() {\n            int rval = qright->verticalScrollBar()->value();\n            int lmax = qleft->verticalScrollBar()->maximum();\n            int lval = std::max(0, std::min(rval, lmax));\n            qleft->verticalScrollBar()->setValue(lval);\n        });\n    }\n}\n\n/*\n * File: goptionpane.cpp\n * ---------------------\n *\n * This code is largely copied from goptionpane.cpp and modified to use\n * Qt's QMessageBox and QInputDialog classes.\n *\n * @author Marty Stepp\n * @version 2019/04/23\n * - can press Esc to close a TextFileDialog\n * @version 2018/12/28\n * - bug fix for auto mnemonics/hotkeys in showOptionDialog\n * @version 2018/11/14\n * - added mnemonics/hotkey to showOptionDialog window option buttons\n * - added Cancel logic to Escape out of showOptionDialog window\n * @version 2018/10/18\n * - bug fix for showOptionDialog to run on Qt GUI thread\n * @version 2018/08/23\n * - renamed to goptionpane.cpp to replace Java version\n * @version 2018/06/28\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"goptionpane.h\"\n#include <QInputDialog>\n#include <QMessageBox>\n#include <QWidget>\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gbutton.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gtextarea.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gthread.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gwindow.h\"\n#define INTERNAL_INCLUDE 1\n#include \"set.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#undef INTERNAL_INCLUDE\n\nGOptionPane::GOptionPane() {\n    // empty\n}\n\nGOptionPane::ConfirmResult GOptionPane::showConfirmDialog(const std::string& message,\n                                                          const std::string& title,\n                                                          ConfirmType type) {\n    return showConfirmDialog(/* parent */ static_cast<QWidget*>(nullptr), message, title, type);\n}\n\nGOptionPane::ConfirmResult GOptionPane::showConfirmDialog(GWindow* parent,\n                                                          const std::string& message,\n                                                          const std::string& title,\n                                                          ConfirmType type) {\n    return showConfirmDialog(parent ? parent->getWidget() : nullptr, message, title, type);\n}\n\nGOptionPane::ConfirmResult GOptionPane::showConfirmDialog(QWidget* parent,\n                                                          const std::string& message,\n                                                          const std::string& title,\n                                                          ConfirmType type) {\n    if (type != GOptionPane::ConfirmType::CONFIRM_YES_NO\n            && type != GOptionPane::ConfirmType::CONFIRM_YES_NO_CANCEL\n            && type != GOptionPane::ConfirmType::CONFIRM_OK_CANCEL) {\n        error(\"GOptionPane::showConfirmDialog: Illegal dialog type\");\n    }\n    std::string titleToUse = title.empty() ? std::string(\"Select an option\") : title;\n\n    // convert our enum types to Qt's button enum type\n    QMessageBox::StandardButtons buttons;\n    QMessageBox::StandardButton defaultButton = QMessageBox::Cancel;\n    if (type == GOptionPane::ConfirmType::CONFIRM_YES_NO) {\n        buttons = QMessageBox::Yes | QMessageBox::No;\n        defaultButton = QMessageBox::No;\n    } else if (type == GOptionPane::ConfirmType::CONFIRM_YES_NO_CANCEL) {\n        buttons = QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel;\n    } else if (type == GOptionPane::ConfirmType::CONFIRM_OK_CANCEL) {\n        buttons = QMessageBox::Ok | QMessageBox::Cancel;\n    }\n\n    GOptionPane::ConfirmResult confirmResult = GOptionPane::CONFIRM_CANCEL;\n    GThread::runOnQtGuiThread([parent, titleToUse, message, buttons, defaultButton, &confirmResult]() {\n        int dialogResult = QMessageBox::question(parent,\n                QString::fromStdString(titleToUse),\n                QString::fromStdString(message),\n                buttons,\n                defaultButton);\n        switch (dialogResult) {\n            case QMessageBox::Yes:\n                confirmResult = GOptionPane::ConfirmResult::CONFIRM_YES;\n                break;\n            case QMessageBox::No:\n                confirmResult = GOptionPane::ConfirmResult::CONFIRM_NO;\n                break;\n            case QMessageBox::Cancel:\n            default:\n                confirmResult = GOptionPane::ConfirmResult::CONFIRM_CANCEL;\n                break;\n        }\n    });\n    return confirmResult;\n}\n\nstd::string GOptionPane::showInputDialog(const std::string& message,\n                                         const std::string& title,\n                                         const std::string& initialValue) {\n    return showInputDialog(/* parent */ static_cast<QWidget*>(nullptr), message, title, initialValue);\n}\n\nstd::string GOptionPane::showInputDialog(GWindow* parent,\n                                         const std::string& message,\n                                         const std::string& title,\n                                         const std::string& initialValue) {\n    return showInputDialog(parent ? parent->getWidget() : nullptr, message, title, initialValue);\n}\n\nstd::string GOptionPane::showInputDialog(QWidget* parent,\n                                         const std::string& message,\n                                         const std::string& title,\n                                         const std::string& initialValue) {\n    std::string titleToUse = title.empty() ? std::string(\"Type a value\") : title;\n    std::string result = \"\";\n    GThread::runOnQtGuiThread([parent, titleToUse, message, initialValue, &result]() {\n        result = QInputDialog::getText(parent,\n                QString::fromStdString(titleToUse),\n                QString::fromStdString(message),\n                QLineEdit::Normal,\n                QString::fromStdString(initialValue)).toStdString();\n    });\n    return result;\n}\n\nvoid GOptionPane::showMessageDialog(const std::string& message,\n                                    const std::string& title,\n                                    MessageType type) {\n    showMessageDialog(/* parent */ static_cast<QWidget*>(nullptr), message, title, type);\n}\n\nvoid GOptionPane::showMessageDialog(GWindow* parent,\n                                    const std::string& message,\n                                    const std::string& title,\n                                    MessageType type) {\n    showMessageDialog(parent ? parent->getWidget() : nullptr, message, title, type);\n}\n\nvoid GOptionPane::showMessageDialog(QWidget* parent,\n                                    const std::string& message,\n                                    const std::string& title,\n                                    MessageType type) {\n    if (type != GOptionPane::MessageType::MESSAGE_PLAIN\n            && type != GOptionPane::MessageType::MESSAGE_INFORMATION\n            && type != GOptionPane::MessageType::MESSAGE_ERROR\n            && type != GOptionPane::MessageType::MESSAGE_WARNING\n            && type != GOptionPane::MessageType::MESSAGE_QUESTION\n            && type != GOptionPane::MessageType::MESSAGE_ABOUT) {\n        error(\"GOptionPane::showMessageDialog: Illegal dialog type\");\n    }\n    std::string titleToUse = title.empty() ? std::string(\"Message\") : title;\n\n    GThread::runOnQtGuiThread([parent, message, titleToUse, type]() {\n        if (type == GOptionPane::MessageType::MESSAGE_PLAIN\n                || type == GOptionPane::MessageType::MESSAGE_INFORMATION\n                || type == GOptionPane::MessageType::MESSAGE_QUESTION) {\n            QMessageBox::information(parent, QString::fromStdString(titleToUse), QString::fromStdString(message));\n        } else if (type == GOptionPane::MessageType::MESSAGE_WARNING) {\n            QMessageBox::warning(parent, QString::fromStdString(titleToUse), QString::fromStdString(message));\n        } else if (type == GOptionPane::MessageType::MESSAGE_ERROR) {\n            QMessageBox::critical(parent, QString::fromStdString(titleToUse), QString::fromStdString(message));\n        } else if (type == GOptionPane::MessageType::MESSAGE_ABOUT) {\n            QMessageBox::about(parent, QString::fromStdString(titleToUse), QString::fromStdString(message));\n        }\n    });\n}\n\nstd::string GOptionPane::showOptionDialog(const std::string& message,\n                                          const Vector<std::string>& options,\n                                          const std::string& title,\n                                          const std::string& initiallySelected) {\n    return showOptionDialog(/* parent */ static_cast<QWidget*>(nullptr), message, options, title, initiallySelected);\n}\n\nstd::string GOptionPane::showOptionDialog(GWindow* parent,\n                                          const std::string& message,\n                                          const Vector<std::string>& options,\n                                          const std::string& title,\n                                          const std::string& initiallySelected) {\n    return showOptionDialog(parent ? parent->getWidget() : nullptr, message, options, title, initiallySelected);\n}\n\nstd::string GOptionPane::showOptionDialog(QWidget* parent,\n                                          const std::string& message,\n                                          const Vector<std::string>& options,\n                                          const std::string& title,\n                                          const std::string& initiallySelected) {\n    std::string titleToUse = title.empty() ? std::string(\"Select an option\") : title;\n    std::string result = \"\";\n    GThread::runOnQtGuiThread([parent, message, &options, titleToUse, initiallySelected, &result]() {\n        QMessageBox box;\n        if (parent) {\n            box.setParent(parent);\n        }\n        box.setText(QString::fromStdString(message));\n        box.setWindowTitle(QString::fromStdString(titleToUse));\n        box.setAttribute(Qt::WA_QuitOnClose, false);\n\n        for (std::string option : options) {\n            box.addButton(QString::fromStdString(option), QMessageBox::ActionRole);\n        }\n\n        if (!initiallySelected.empty()) {\n            // TODO: dunno how to set initially selected button properly\n            // box.setDefaultButton(QString::fromStdString(initiallySelected));\n        }\n\n        // give each button a unique hotkey; listen to key presses on buttons\n        // (try to set char at index 0, 1, 2 as the mnemonic)\n        Set<QAbstractButton*> buttonsUsed;\n        Set<std::string> charsUsed;\n        QAbstractButton* escapeButton = nullptr;\n        int escapeButtonIndex = -1;\n\n        for (int i = 0; i <= 2; i++) {\n            int buttonIndex = 0;\n            for (QAbstractButton* button : box.buttons()) {\n                if (buttonsUsed.contains(button)) {\n                    buttonIndex++;\n                    continue;\n                }\n\n                std::string text = button->text().toStdString();\n                if (!escapeButton && text == \"Cancel\") {\n                    escapeButton = button;\n                    escapeButtonIndex = buttonIndex;\n                }\n                if (static_cast<int>(text.length()) <= i) {\n                    buttonIndex++;\n                    continue;\n                }\n                std::string letter = text.substr(i, 1);\n                if (charsUsed.contains(letter)) {\n                    buttonIndex++;\n                    continue;\n                }\n\n                buttonsUsed.add(button);\n                charsUsed.add(letter);\n                button->setText(QString::fromStdString(text.substr(0, i) + \"&\" + text.substr(i)));\n                button->setShortcut(QKeySequence::fromString(QString::fromStdString(letter)));\n                buttonIndex++;\n            }\n        }\n\n        // set listener to close window when Esc is pressed\n        if (escapeButton) {\n            box.setEscapeButton(escapeButton);\n        }\n\n        int index = box.exec();\n        if (index == GOptionPane::InternalResult::INTERNAL_CLOSED_OPTION\n                || index < 0 || index >= options.size()\n                || (escapeButtonIndex >= 0 && index == escapeButtonIndex)) {\n            result = \"\";\n        } else {\n            result = options[index];\n        }\n    });\n    return result;\n}\n\nvoid GOptionPane::showTextFileDialog(const std::string& fileText,\n                                     const std::string& title,\n                                     int rows,\n                                     int cols) {\n    showTextFileDialog(static_cast<QWidget*>(nullptr), fileText, title, rows, cols);\n}\n\nvoid GOptionPane::showTextFileDialog(GWindow* parent,\n                                     const std::string& fileText,\n                                     const std::string& title,\n                                     int rows,\n                                     int cols) {\n    showTextFileDialog(parent ? parent->getWidget() : nullptr, fileText, title, rows, cols);\n}\n\nvoid GOptionPane::showTextFileDialog(QWidget* /*parent*/,\n                                     const std::string& fileText,\n                                     const std::string& title,\n                                     int rows,\n                                     int cols) {\n    static const std::string DEFAULT_FONT = \"Monospaced-*-*\";\n    static const int DEFAULT_ROWS    = 20;\n    static const int DEFAULT_COLUMNS = 80;\n    if (rows <= 0) {\n        rows = DEFAULT_ROWS;\n    }\n    if (cols <= 0) {\n        cols = DEFAULT_COLUMNS;\n    }\n\n    std::string titleToUse = title.empty() ? std::string(\"Text file contents\") : title;\n    GWindow* window = new GWindow;\n    window->setTitle(title);\n\n    GTextArea* textArea = new GTextArea(fileText);\n    textArea->setFont(DEFAULT_FONT);\n    textArea->setRowsColumns(DEFAULT_ROWS, DEFAULT_COLUMNS);\n    window->addToRegion(textArea, GWindow::REGION_CENTER);\n\n    GButton* button = new GButton(\"&OK\");\n    button->setActionListener([window]() {\n        window->close();\n    });\n    window->addToRegion(button, GWindow::REGION_SOUTH);\n\n    // function to close the window when Escape is pressed\n    // (similar to code in gdiffgui.cpp and gdiffimage.cpp)\n    auto windowCloseLambda = [window](GEvent event) {\n        if (event.getType() == KEY_PRESSED && event.getKeyChar() == GEvent::ESCAPE_KEY) {\n            window->close();\n        }\n    };\n    window->setKeyListener(windowCloseLambda);\n    textArea->setKeyListener(windowCloseLambda);\n    button->setKeyListener(windowCloseLambda);\n\n    window->pack();\n    window->center();\n    window->show();\n}\n\n/*\n * File: qtgui.cpp\n * ---------------\n *\n * @author Marty Stepp\n * @version 2018/08/23\n * - renamed to qtgui.cpp\n * @version 2018/07/03\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"qtgui.h\"\n#include <QEvent>\n#include <QtGlobal>\n#include <QThread>\n#define INTERNAL_INCLUDE 1\n#include \"consoletext.h\"\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"exceptions.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gconsolewindow.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gthread.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"private/static.h\"\n#undef INTERNAL_INCLUDE\n\n#ifdef _WIN32\n#  include <direct.h>   // for chdir\n#else // _WIN32\n#  include <unistd.h>   // for chdir\n#endif // _WIN32\n\n// QSPLApplication members\nQSPLApplication::QSPLApplication(int& argc, char *argv[])\n        : QApplication(argc, argv) {\n    // empty\n}\n\nbool QSPLApplication::notify(QObject* receiver, QEvent* e) {\n#if defined(SPL_CONSOLE_PRINT_EXCEPTIONS)\n    try {\n        return QApplication::notify(receiver, e);\n    } catch (ErrorException& ex) {\n        ex.dump();\n        return false;\n    }\n#else\n    return QApplication::notify(receiver, e);   // call super\n#endif\n}\n\n\n// QtGui members\nQSPLApplication* QtGui::_app = nullptr;\nQtGui* QtGui::_instance = nullptr;\n\nQtGui::QtGui()\n        : _initialized(false) {\n    connect(GEventQueue::instance(), SIGNAL(eventReady()), this, SLOT(processEventFromQueue()));\n}\n\nvoid QtGui::exitGraphics(int exitCode) {\n    if (_app) {\n// need to temporarily turn off C++ lib exit macro to call QApplication's exit method\n// (NOTE: must keep in sync with exit definition in init.h)\n#undef exit\n        _app->quit();\n        _app = nullptr;\n        std::exit(exitCode);\n#define exit __stanfordcpplib__exitLibrary\n    } else {\n        std::exit(exitCode);\n    }\n}\n\nQSPLApplication* QtGui::getApplication() {\n    return _app;\n}\n\nint QtGui::getArgc() const {\n    return _argc;\n}\n\nchar** QtGui::getArgv() const {\n    return _argv;\n}\n\nvoid QtGui::initializeQt() {\n    if (_app) return;\n\n    GThread::runOnQtGuiThread([this]() {\n        if (!_app) {\n            qSetMessagePattern(\n                    \"Qt internal warning: %{message}\\n\"\n                    \"  - pid: %{pid}\\n\"\n                    \"  - thread: %{threadid}\\n\"\n\n                    // backtrace doesn't work on windows and some other builds\n#ifndef _WIN32\n                    \"  - stack:\\n\"\n                    \"      %{backtrace depth=20 separator=\\\"\\n      \\\"}\"\n#endif // _WIN32\n            );\n            _app = new QSPLApplication(_argc, _argv);\n            _initialized = true;\n        }\n    });\n}\n\nQtGui* QtGui::instance() {\n    if (!_instance) {\n        _instance = new QtGui();\n        GEventQueue::instance();   // create event queue on Qt GUI main thread\n    }\n    return _instance;\n}\n\nvoid QtGui::processEventFromQueue() {\n    if (!GEventQueue::instance()->isEmpty()) {\n        GThunk thunk = GEventQueue::instance()->peek();\n        thunk();\n        GEventQueue::instance()->dequeue();\n    }\n}\n\nvoid QtGui::setArgs(int argc, char** argv) {\n    _argc = argc;\n    _argv = argv;\n}\n\n// this should be called by the Qt main thread\nvoid QtGui::startBackgroundEventLoop(GThunkInt mainFunc, bool exitAfter) {\n    GThread::ensureThatThisIsTheQtGuiThread(\"QtGui::startBackgroundEventLoop\");\n\n    // start student's main function in its own second thread\n    if (!GThread::studentThreadExists()) {\n        GThread::startStudentThread([&]() -> int {\n            stanfordcpplib::initializeLibraryStudentThread();\n            int result = mainFunc();\n            stanfordcpplib::endOfLibraryStudentThread();\n            stanfordcpplib::endOfLibraryStudentThread();\n            return result;\n        });\n\n        startEventLoop(exitAfter);   // begin Qt event loop on main thread\n    }\n}\n\n// this should be called by the Qt main thread\nvoid QtGui::startBackgroundEventLoopVoid(GThunk mainFunc, bool exitAfter) {\n    GThread::ensureThatThisIsTheQtGuiThread(\"QtGui::startBackgroundEventLoop\");\n\n    // start student's main function in its own second thread\n    if (!GThread::studentThreadExists()) {\n        GThread::startStudentThreadVoid([&]() {\n            stanfordcpplib::initializeLibraryStudentThread();\n            mainFunc();\n            stanfordcpplib::endOfLibraryStudentThread();\n        });\n        startEventLoop(exitAfter);   // begin Qt event loop on main thread\n    }\n}\n\n// this should be called by the Qt main thread\nvoid QtGui::startEventLoop(bool exitAfter) {\n    GThread::ensureThatThisIsTheQtGuiThread(\"QtGui::startEventLoop\");\n    if (!_app) {\n        error(\"QtGui::startEventLoop: need to initialize Qt first\");\n    }\n\n    // start Qt event loop on main thread;\n    // Qt GUI main thread blocks here until student main() is done\n    int exitCode = _app->exec();\n\n    // if I get here, it means an \"exit on close\" window was just closed;\n    // it's time to shut down the Qt system and exit the C++ program\n    if (exitAfter) {\n        exitGraphics(exitCode);\n    }\n}\n\nnamespace stanfordcpplib {\nvoid endOfLibraryStudentThread() {\n    // briefly wait for the console to finish printing any/all output\n    GThread::getCurrentThread()->yield();\n    GThread::getCurrentThread()->sleep(1);\n\n    int result = 0;\n    if (GThread::getStudentThread() != nullptr) {\n        result = GThread::getStudentThread()->getResult();\n    }\n    static_cast<void>(result);   // so it won't be unused\n\n    // if I get here, student's main() has finished running;\n    // indicate this by showing a completed title on the graphical console\n    if (getConsoleEnabled()) {\n#ifndef SPL_HEADLESS_MODE\n        GConsoleWindow* console = getConsoleWindow();\n        if (console) {\n            console->shutdown();\n        }\n#endif // SPL_HEADLESS_MODE\n    } else {\n        // need to exit here else program will not terminate\n        // BUGFIX: no, this is not needed and is bad; it exits the window too soon; disable\n        // QtGui::instance()->exitGraphics(result);\n    }\n}\n} // namespace stanfordcpplib\n\n#ifdef SPL_PRECOMPILE_QT_MOC_FILES\n#define INTERNAL_INCLUDE 1\n#include \"moc_qtgui.cpp\"   // speeds up compilation of auto-generated Qt files\n#undef INTERNAL_INCLUDE\n#endif // SPL_PRECOMPILE_QT_MOC_FILES\n\n/*\n * File: console.cpp\n * -----------------\n * This file implements the console .h interface.\n *\n * @author Marty Stepp\n * @version 2019/04/12\n * - added pause() implementation (empty) in headless mode\n * @version 2018/11/22\n * - added headless mode support\n * @version 2018/10/01\n * - bug fix for graphical console popping up even if not included\n * @version 2018/08/23\n * - renamed to console .cpp/h to replace Java version\n * - separated out gconsolewindow.h/cpp\n * @version 2018/07/15\n * - initial version, based on io/console .cpp\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"consoletext.h\"\n#include <cstdio>\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"exceptions.h\"\n#define INTERNAL_INCLUDE 1\n#include \"filelib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gconsolewindow.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gthread.h\"\n#define INTERNAL_INCLUDE 1\n#include \"private/static.h\"\n#define INTERNAL_INCLUDE 1\n#include \"private/version.h\"\n#undef INTERNAL_INCLUDE\n\n#ifdef SPL_HEADLESS_MODE\n\nvoid clearConsole() {\n    // empty\n}\n\nbool getConsoleClearEnabled() {\n    return true;\n}\n\n/* GWindow::CloseOperation */ int getConsoleCloseOperation() {\n    return 0;\n}\n\nbool getConsoleEcho() {\n    return true;\n}\n\nbool getConsoleEnabled() {\n    return true;\n}\n\nbool getConsoleEventOnClose() {\n    return true;\n}\n\nbool getConsoleExitProgramOnClose() {\n    return true;\n}\n\nstd::string getConsoleFont() {\n    return \"\";\n}\n\ndouble getConsoleHeight() {\n    return 0;\n}\n\nbool getConsoleLocationSaved() {\n    return false;\n}\n\nbool getConsolePrintExceptions() {\n    return exceptions::getTopLevelExceptionHandlerEnabled();\n}\n\nbool getConsoleSettingsLocked() {\n    return false;\n}\n\ndouble getConsoleWidth() {\n    return 0;\n}\n\nstd::string getConsoleWindowTitle() {\n    return \"\";\n}\n\nvoid pause(double /*milliseconds*/) {\n    // empty\n}\n\nvoid setConsoleClearEnabled(bool /*value*/) {\n    // empty\n}\n\nvoid setConsoleCloseOperation(int /*op*/) {\n    // empty\n}\n\nvoid setConsoleEcho(bool /*echo*/) {\n    // empty\n}\n\nvoid setConsoleEnabled(bool /*enabled*/) {\n    // empty\n}\n\nvoid setConsoleErrorColor(const std::string& /*color*/) {\n    // empty\n}\n\nvoid setConsoleEventOnClose(bool /*eventOnClose*/) {\n    // empty\n}\n\nvoid setConsoleExitProgramOnClose(bool /*exitOnClose*/) {\n    // empty\n}\n\nvoid setConsoleFont(const std::string& /*font*/) {\n    // empty\n}\n\nvoid setConsoleLocation(double /*x*/, double /*y*/) {\n    // empty\n}\n\nvoid setConsoleLocationSaved(bool /*value*/) {\n    // empty\n}\n\nvoid setConsoleOutputColor(const std::string& /*color*/) {\n    // empty\n}\n\nvoid setConsolePrintExceptions(bool printExceptions, bool force) {\n    if (getConsoleSettingsLocked()) { return; }\n    exceptions::setTopLevelExceptionHandlerEnabled(printExceptions, force);\n}\n\nvoid setConsoleSettingsLocked(bool /*value*/) {\n    // empty\n}\n\nvoid setConsoleSize(double /*width*/, double /*height*/) {\n    // empty\n}\n\nvoid setConsoleWindowTitle(const std::string& /*title*/) {\n    // empty\n}\n\nvoid shutdownConsole() {\n    // empty\n}\n\n#else // SPL_HEADLESS_MODE\n\nvoid clearConsole() {\n    GConsoleWindow::instance()->clearConsole();\n}\n\nbool getConsoleClearEnabled() {\n    return GConsoleWindow::instance()->isClearEnabled();\n}\n\n/* GWindow::CloseOperation */ int getConsoleCloseOperation() {\n    return GConsoleWindow::instance()->getCloseOperation();\n}\n\nbool getConsoleEcho() {\n    return GConsoleWindow::instance()->isEcho();\n}\n\nbool getConsoleEnabled() {\n#ifdef __DONT_ENABLE_QT_GRAPHICAL_CONSOLE\n    return false;\n#else\n    return GConsoleWindow::consoleEnabled();\n#endif\n}\n\nbool getConsoleEventOnClose() {\n    return true;\n}\n\nbool getConsoleExitProgramOnClose() {\n    return GConsoleWindow::instance()->getCloseOperation() == GWindow::CLOSE_EXIT;\n}\n\nstd::string getConsoleFont() {\n#ifdef __DONT_ENABLE_QT_GRAPHICAL_CONSOLE\n    return GConsoleWindow::getDefaultFont();\n#else\n    return GConsoleWindow::instance()->getFont();\n#endif\n}\n\ndouble getConsoleHeight() {\n    return GConsoleWindow::instance()->getHeight();\n}\n\nGPoint getConsoleLocation() {\n    return GConsoleWindow::instance()->getLocation();\n}\n\nbool getConsoleLocationSaved() {\n    return GConsoleWindow::instance()->isLocationSaved();\n}\n\nbool getConsolePrintExceptions() {\n    return exceptions::getTopLevelExceptionHandlerEnabled();\n}\n\nbool getConsoleSettingsLocked() {\n    return GConsoleWindow::isInitialized()\n            && GConsoleWindow::instance()->isLocked();\n}\n\nGDimension getConsoleSize() {\n    return GConsoleWindow::instance()->getSize();\n}\n\ndouble getConsoleWidth() {\n    return GConsoleWindow::instance()->getWidth();\n}\n\nGConsoleWindow* getConsoleWindow() {\n    return GConsoleWindow::instance();\n}\n\nstd::string getConsoleWindowTitle() {\n    return GConsoleWindow::instance()->getTitle();\n}\n\nvoid setConsoleClearEnabled(bool value) {\n    if (getConsoleSettingsLocked()) { return; }\n    GConsoleWindow::instance()->setClearEnabled(value);\n}\n\nvoid setConsoleCloseOperation(/*GWindow::CloseOperation*/ int op) {\n    GWindow::CloseOperation gwcop = static_cast<GWindow::CloseOperation>(op);\n    if (getConsoleSettingsLocked()) { return; }\n    GConsoleWindow::instance()->setCloseOperation(gwcop);\n}\n\nvoid setConsoleEcho(bool echo) {\n    if (getConsoleSettingsLocked()) { return; }\n    GConsoleWindow::instance()->setEcho(echo);\n}\n\nvoid setConsoleEnabled(bool enabled) {\n    GConsoleWindow::setConsoleEnabled(enabled);\n}\n\nvoid setConsoleErrorColor(const std::string& color) {\n    if (getConsoleSettingsLocked()) { return; }\n    GConsoleWindow::instance()->setErrorColor(color);\n}\n\nvoid setConsoleEventOnClose(bool /*eventOnClose*/) {\n    // empty\n}\n\nvoid setConsoleExitProgramOnClose(bool exitOnClose) {\n    if (getConsoleSettingsLocked()) { return; }\n    GConsoleWindow::instance()->setExitOnClose(exitOnClose);\n}\n\nvoid setConsoleFont(const std::string& font) {\n    if (getConsoleSettingsLocked()) { return; }\n    GConsoleWindow::instance()->setFont(font);\n}\n\nvoid setConsoleLocation(double x, double y) {\n    if (getConsoleSettingsLocked()) { return; }\n    if (floatingPointEqual(x, -1) && floatingPointEqual(y, -1)) {\n        GConsoleWindow::instance()->center();\n    } else {\n        GConsoleWindow::instance()->setLocation(x, y);\n    }\n}\n\nvoid setConsoleLocationSaved(bool value) {\n    GConsoleWindow::instance()->setLocationSaved(value);\n}\n\nvoid setConsoleOutputColor(const std::string& color) {\n    GConsoleWindow::instance()->setOutputColor(color);\n}\n\nvoid setConsolePrintExceptions(bool printExceptions, bool force) {\n    if (getConsoleSettingsLocked()) { return; }\n    exceptions::setTopLevelExceptionHandlerEnabled(printExceptions, force);\n}\n\nvoid setConsoleSettingsLocked(bool value) {\n    GConsoleWindow::instance()->setLocked(value);\n}\n\nvoid setConsoleSize(double width, double height) {\n    if (getConsoleSettingsLocked()) { return; }\n    GConsoleWindow::instance()->setConsoleSize(width, height);\n}\n\nvoid setConsoleWindowTitle(const std::string& title) {\n    if (getConsoleSettingsLocked()) { return; }\n    GConsoleWindow::instance()->setTitle(title);\n}\n\nvoid shutdownConsole() {\n    if (getConsoleEnabled() && !GConsoleWindow::instance()->isLocked()) {\n        GConsoleWindow::instance()->shutdown();\n    }\n}\n\n#endif // SPL_HEADLESS_MODE\n\n/*\n * Sets up console settings like window size, location, exit-on-close, etc.\n * based on compiler options set in the .pro file.\n */\nvoid setConsolePropertiesQt() {\n#if defined(SPL_CONSOLE_FONTSIZE)\n    std::string fontStr = std::string(\"Monospaced-Bold-\") + std::to_string(SPL_CONSOLE_FONTSIZE);\n    setConsoleFont(fontStr);\n#endif\n\n#if defined(SPL_CONSOLE_WIDTH) && defined(SPL_CONSOLE_HEIGHT)\n    setConsoleSize(SPL_CONSOLE_WIDTH, SPL_CONSOLE_HEIGHT);\n#endif\n\n#if defined(SPL_CONSOLE_X) && defined(SPL_CONSOLE_Y)\n    setConsoleLocation(SPL_CONSOLE_X, SPL_CONSOLE_Y);\n#endif\n\n#if defined(SPL_CONSOLE_ECHO)\n    setConsoleEcho(true);\n#endif\n\n#if defined(SPL_CONSOLE_EXIT_ON_CLOSE)\n    setConsoleExitProgramOnClose(true);\n#endif\n\n#if defined(SPL_CONSOLE_LOCATION_SAVED)\n    setConsoleLocationSaved(true);\n#endif\n\n#if defined(SPL_CONSOLE_PRINT_EXCEPTIONS)\n    setConsolePrintExceptions(true);\n#endif\n\n#if defined(SPL_VERIFY_PROJECT_VERSION)\n    version::ensureProjectVersion();\n#endif\n}\n\nvoid initializeQtGraphicalConsole() {\n#ifndef __DONT_ENABLE_QT_GRAPHICAL_CONSOLE\n    // ensure that console is initialized only once\n    static bool _initialized = false;\n    if (_initialized) {\n        return;\n    }\n    _initialized = true;\n\n    // declaring this object ensures that std::cin, cout, cerr are initialized\n    // properly before our lib tries to mess with them / redirect them\n    static std::ios_base::Init ios_base_init;\n\n#ifndef SPL_HEADLESS_MODE\n    if (GConsoleWindow::consoleEnabled()) {\n        GConsoleWindow::instance();   // ensure that console window is ready\n        setConsolePropertiesQt();\n    }\n#endif // SPL_HEADLESS_MODE\n\n#endif // __DONT_ENABLE_QT_GRAPHICAL_CONSOLE\n}\n\n/*\n * File: gdrawingsurface.cpp\n * -------------------------\n *\n * @author Marty Stepp\n * @version 2018/08/23\n * - renamed to gdrawingsurface.cpp to replace Java version\n * @version 2018/07/11\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"gdrawingsurface.h\"\n#include <QPainter>\n#define INTERNAL_INCLUDE 1\n#include \"gcolor.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gfont.h\"\n#define INTERNAL_INCLUDE 1\n#include \"require.h\"\n#undef INTERNAL_INCLUDE\n\nGDrawingSurface::GDrawingSurface()\n        : _forwardTarget(nullptr),\n          _backgroundColor(\"0xffffffff\"),\n          _color(\"\"),\n          _fillColor(\"\"),\n          _font(\"\"),\n          _backgroundColorInt(0xffffffff),\n          _colorInt(0),\n          _fillColorInt(0),\n          _lineStyle(GObject::LINE_SOLID),\n          _lineWidth(1),\n          _autoRepaint(true) {\n    // empty\n}\n\nGDrawingSurface::~GDrawingSurface() {\n    _forwardTarget = nullptr;\n}\n\nvoid GDrawingSurface::checkBounds(const std::string& member, double x, double y, double width, double height) const {\n    require::inRange2D(x, y, width - 1, height - 1, member);\n}\n\nvoid GDrawingSurface::checkColor(const std::string& /* member */, int /* rgb */) const {\n    // I think this code is wrong; it ignores the possibility of alpha values\n    // or of the top bits being set to 255 (all 1) by default by Qt libraries\n//    if (rgb < 0x0 || rgb > 0xffffff) {\n//        error(member + \": color is outside of range 0x000000 through 0xffffff\");\n//    }\n}\n\nvoid GDrawingSurface::checkSize(const std::string& /* member */, double /* width */, double /* height */) const {\n//    if (width < 0 || height < 0) {\n//        error(member + \": width/height cannot be negative\");\n//    }\n//    if (width > GCanvas::WIDTH_HEIGHT_MAX\n//            || height > GCanvas::WIDTH_HEIGHT_MAX) {\n//        error(getType() + \"::\" + member + \": width/height too large (cannot exceed \"\n//              + std::to_string(GCanvas::WIDTH_HEIGHT_MAX));\n//    }\n}\n\nvoid GDrawingSurface::conditionalRepaint() {\n    if (_forwardTarget) {\n        _forwardTarget->conditionalRepaint();\n    } else {\n        if (isAutoRepaint()) {\n            repaint();\n        }\n    }\n}\n\nvoid GDrawingSurface::conditionalRepaintRegion(int x, int y, int width, int height) {\n    if (isAutoRepaint()) {\n        repaintRegion(x, y, width, height);\n    }\n}\n\nvoid GDrawingSurface::conditionalRepaintRegion(const GRectangle& bounds) {\n    if (isAutoRepaint()) {\n        repaintRegion(bounds);\n    }\n}\n\nvoid GDrawingSurface::draw(GObject* gobj, double x, double y) {\n    require::nonNull(gobj, \"GDrawingSurface::draw\");\n    gobj->setLocation(x, y);\n    draw(gobj);\n}\n\nvoid GDrawingSurface::draw(GObject& gobj) {\n    draw(&gobj);\n}\n\nvoid GDrawingSurface::draw(GObject& gobj, double x, double y) {\n    gobj.setLocation(x, y);\n    draw(&gobj);\n}\n\nvoid GDrawingSurface::drawArc(double x, double y, double width, double height, double start, double sweep) {\n    GArc arc(x, y, width, height, start, sweep);\n    initializeGObject(arc);\n    draw(arc);\n}\n\nvoid GDrawingSurface::drawImage(const std::string& filename, double x, double y) {\n    GImage image(filename, x, y);\n    draw(image);\n}\n\nvoid GDrawingSurface::drawLine(const GPoint& p0, const GPoint& p1) {\n    drawLine(p0.getX(), p0.getY(), p1.getX(), p1.getY());\n}\n\nvoid GDrawingSurface::drawLine(double x0, double y0, double x1, double y1) {\n    GLine line(x0, y0, x1, y1);\n    initializeGObject(line);\n    draw(line);\n}\n\nvoid GDrawingSurface::drawOval(const GRectangle& bounds) {\n    drawOval(bounds.getX(), bounds.getY(), bounds.getWidth(), bounds.getHeight());\n}\n\nvoid GDrawingSurface::drawOval(double x, double y, double width, double height) {\n    GOval oval(x, y, width, height);\n    initializeGObject(oval);\n    draw(oval);\n}\n\nGPoint GDrawingSurface::drawPolarLine(const GPoint& p0, double r, double theta) {\n    return drawPolarLine(p0.getX(), p0.getY(), r, theta);\n}\n\nGPoint GDrawingSurface::drawPolarLine(double x0, double y0, double r, double theta) {\n    double x1 = x0 + r * cosDegrees(theta);\n    double y1 = y0 - r * sinDegrees(theta);\n    drawLine(x0, y0, x1, y1);\n    return GPoint(x1, y1);\n}\n\nvoid GDrawingSurface::drawPixel(double x, double y) {\n    setPixel(x, y, _colorInt);\n}\n\nvoid GDrawingSurface::drawPixel(double x, double y, int color) {\n    setPixel(x, y, color);\n}\n\nvoid GDrawingSurface::drawPixel(double x, double y, const std::string& color) {\n    setPixel(x, y, color);\n}\n\nvoid GDrawingSurface::drawPolygon(std::initializer_list<double> coords) {\n    GPolygon polygon(coords);\n    initializeGObject(polygon);\n    draw(polygon);\n}\n\nvoid GDrawingSurface::drawPolygon(std::initializer_list<GPoint> points) {\n    GPolygon polygon(points);\n    initializeGObject(polygon);\n    draw(polygon);\n}\n\nvoid GDrawingSurface::drawRect(const GRectangle& bounds) {\n    drawRect(bounds.getX(), bounds.getY(), bounds.getWidth(), bounds.getHeight());\n}\n\nvoid GDrawingSurface::drawRect(double x, double y, double width, double height) {\n    GRect rect(x, y, width, height);\n    initializeGObject(rect);\n    draw(rect);\n}\n\nvoid GDrawingSurface::drawString(const std::string& text, double x, double y) {\n    GText str(text, x, y);\n    initializeGObject(str);\n    draw(str);\n}\n\nvoid GDrawingSurface::fillArc(double x, double y, double width, double height, double start, double sweep) {\n    GArc arc(x, y, width, height, start, sweep);\n    initializeGObject(arc, /* filled */ true);\n    draw(arc);\n}\n\nvoid GDrawingSurface::fillOval(const GRectangle& bounds) {\n    fillOval(bounds.getX(), bounds.getY(), bounds.getWidth(), bounds.getHeight());\n}\n\nvoid GDrawingSurface::fillOval(double x, double y, double width, double height) {\n    GOval oval(x, y, width, height);\n    initializeGObject(oval, /* filled */ true);\n    draw(oval);\n}\n\nvoid GDrawingSurface::fillPolygon(std::initializer_list<double> coords) {\n    GPolygon polygon(coords);\n    initializeGObject(polygon, /* filled */ true);\n    draw(polygon);\n}\n\nvoid GDrawingSurface::fillRect(const GRectangle& bounds) {\n    fillRect(bounds.getX(), bounds.getY(), bounds.getWidth(), bounds.getHeight());\n}\n\nvoid GDrawingSurface::fillRect(double x, double y, double width, double height) {\n    GRect rect(x, y, width, height);\n    initializeGObject(rect, /* filled */ true);\n    draw(rect);\n}\n\nint GDrawingSurface::getARGB(double x, double y) const {\n    return getPixelARGB(x, y);\n}\n\nstd::string GDrawingSurface::getBackground() const {\n    if (_forwardTarget) {\n        return _forwardTarget->getBackground();\n    } else {\n        return _backgroundColor;\n    }\n}\n\nint GDrawingSurface::getBackgroundInt() const {\n    if (_forwardTarget) {\n        return _forwardTarget->getBackgroundInt();\n    } else {\n        return _backgroundColorInt;\n    }\n}\n\nstd::string GDrawingSurface::getColor() const {\n    if (_forwardTarget) {\n        return _forwardTarget->getColor();\n    } else {\n        return _color;\n    }\n}\n\nint GDrawingSurface::getColorInt() const {\n    if (_forwardTarget) {\n        return _forwardTarget->getColorInt();\n    } else {\n        return _colorInt;\n    }\n}\n\nstd::string GDrawingSurface::getFillColor() const {\n    if (_forwardTarget) {\n        return _forwardTarget->getFillColor();\n    } else {\n        return _fillColor;\n    }\n}\n\nint GDrawingSurface::getFillColorInt() const {\n    if (_forwardTarget) {\n        return _forwardTarget->getFillColorInt();\n    } else {\n        return _fillColorInt;\n    }\n}\n\nstd::string GDrawingSurface::getFont() const {\n    if (_forwardTarget) {\n        return _forwardTarget->getFont();\n    } else {\n        return _font;\n    }\n}\n\nstd::string GDrawingSurface::getForeground() const {\n    return getColor();\n}\n\nint GDrawingSurface::getForegroundInt() const {\n    return getColorInt();\n}\n\nGObject::LineStyle GDrawingSurface::getLineStyle() const {\n    if (_forwardTarget) {\n        return _forwardTarget->getLineStyle();\n    } else {\n        return _lineStyle;\n    }\n}\n\ndouble GDrawingSurface::getLineWidth() const {\n    if (_forwardTarget) {\n        return _forwardTarget->getLineWidth();\n    } else {\n        return _lineWidth;\n    }\n}\n\nstd::string GDrawingSurface::getPixelString(double x, double y) const {\n    return GColor::convertRGBToColor(getPixel(x, y));\n}\n\nint GDrawingSurface::getRGB(double x, double y) const {\n    return getPixel(x, y);\n}\n\nstd::string GDrawingSurface::getRGBString(double x, double y) const {\n    return GColor::convertRGBToColor(getPixel(x, y));\n}\n\nvoid GDrawingSurface::initializeGObject(GObject& obj, bool fill) {\n    initializeGObject(&obj, fill);\n}\n\nvoid GDrawingSurface::initializeGObject(GObject* obj, bool fill) {\n    if (!obj) {\n        return;\n    }\n    obj->setColor(getColor());\n    if (fill) {\n        obj->setFilled(true);\n        obj->setFillColor(getFillColor());\n    }\n    obj->setFont(getFont());\n    obj->setLineStyle(getLineStyle());\n    obj->setLineWidth(getLineWidth());\n}\n\nbool GDrawingSurface::isAutoRepaint() const {\n    if (_forwardTarget) {\n        return _forwardTarget->isAutoRepaint();\n    } else {\n        return _autoRepaint;\n    }\n}\n\nbool GDrawingSurface::isRepaintImmediately() const {\n    return isAutoRepaint();\n}\n\nvoid GDrawingSurface::repaintRegion(const GRectangle& bounds) {\n    repaintRegion((int) bounds.getX(), (int) bounds.getY(),\n                  (int) bounds.getWidth(), (int) bounds.getHeight());\n}\n\nvoid GDrawingSurface::setAutoRepaint(bool autoRepaint) {\n    if (_forwardTarget) {\n        _forwardTarget->setAutoRepaint(autoRepaint);\n    } else {\n        _autoRepaint = autoRepaint;\n    }\n}\n\nvoid GDrawingSurface::setBackground(int color) {\n    if (_forwardTarget) {\n        _forwardTarget->setBackground(color);\n    } else {\n        _backgroundColorInt = color;\n        _backgroundColor = GColor::convertRGBToColor(color);\n    }\n}\n\nvoid GDrawingSurface::setBackground(const std::string& color) {\n    if (_forwardTarget) {\n        _forwardTarget->setBackground(color);\n    } else {\n        _backgroundColor = color;\n        _backgroundColorInt = GColor::convertColorToRGB(color);\n    }\n}\n\nvoid GDrawingSurface::setColor(int color) {\n    // sets both color and fillColor\n    if (_forwardTarget) {\n        _forwardTarget->setColor(color);\n        _forwardTarget->setFillColor(color);\n    } else {\n        _colorInt = color;\n        _color = GColor::convertRGBToColor(color);\n        _fillColorInt = color;\n        _fillColor = _color;\n    }\n}\n\nvoid GDrawingSurface::setColor(const std::string& color) {\n    // sets both color and fillColor\n    if (_forwardTarget) {\n        _forwardTarget->setColor(color);\n        _forwardTarget->setFillColor(color);\n    } else {\n        _color = color;\n        _colorInt = GColor::convertColorToRGB(color);\n        _fillColor = color;\n        _fillColorInt = _colorInt;\n    }\n}\n\nvoid GDrawingSurface::setDrawingForwardTarget(GDrawingSurface* forwardTarget) {\n    _forwardTarget = forwardTarget;\n}\n\nvoid GDrawingSurface::setFillColor(int color) {\n    if (_forwardTarget) {\n        _forwardTarget->setFillColor(color);\n    } else {\n        _fillColorInt = color;\n        _fillColor = GColor::convertRGBToColor(color);\n    }\n}\n\nvoid GDrawingSurface::setFillColor(const std::string& color) {\n    if (_forwardTarget) {\n        _forwardTarget->setFillColor(color);\n    } else {\n        _fillColor = color;\n        _fillColorInt = GColor::convertColorToRGB(color);\n    }\n}\n\nvoid GDrawingSurface::setFont(const QFont& font) {\n    if (_forwardTarget) {\n        _forwardTarget->setFont(font);\n    } else {\n        _font = GFont::toFontString(font);\n    }\n}\n\nvoid GDrawingSurface::setFont(const std::string& font) {\n    if (_forwardTarget) {\n        _forwardTarget->setFont(font);\n    } else {\n        _font = font;\n    }\n}\n\nvoid GDrawingSurface::setForeground(int color) {\n    setColor(color);\n}\n\nvoid GDrawingSurface::setForeground(const std::string& color) {\n    setColor(color);\n}\n\nvoid GDrawingSurface::setLineStyle(GObject::LineStyle lineStyle) {\n    if (_forwardTarget) {\n        _forwardTarget->setLineStyle(lineStyle);\n    } else {\n        _lineStyle = lineStyle;\n    }\n}\n\nvoid GDrawingSurface::setLineWidth(double lineWidth) {\n    if (_forwardTarget) {\n        _forwardTarget->setLineWidth(lineWidth);\n    } else {\n        _lineWidth = lineWidth;\n    }\n}\n\nvoid GDrawingSurface::setPixel(double x, double y, int r, int g, int b) {\n    setPixel(x, y, GColor::convertRGBToRGB(r, g, b));\n}\n\nvoid GDrawingSurface::setPixel(double x, double y, const std::string& color) {\n    setPixel(x, y, GColor::convertColorToRGB(color));\n}\n\nvoid GDrawingSurface::setPixelARGB(double x, double y, int a, int r, int g, int b) {\n    setPixelARGB(x, y, GColor::convertARGBToARGB(a, r, g, b));\n}\n\nvoid GDrawingSurface::setRepaintImmediately(bool autoRepaint) {\n    setAutoRepaint(autoRepaint);\n}\n\nvoid GDrawingSurface::setRGB(double x, double y, int rgb) {\n    setPixel(x, y, rgb);\n}\n\nvoid GDrawingSurface::setRGB(double x, double y, int r, int g, int b) {\n    this->setPixel(x, y, r, g, b);\n}\n\nvoid GDrawingSurface::setRGB(double x, double y, const std::string& color) {\n    setPixel(x, y, GColor::convertColorToRGB(color));\n}\n\n\nvoid GForwardDrawingSurface::clear() {\n    if (_forwardTarget) {\n        _forwardTarget->clear();\n    }\n}\n\nvoid GForwardDrawingSurface::draw(GObject* obj) {\n    ensureForwardTarget();\n    _forwardTarget->draw(obj);\n}\n\nvoid GForwardDrawingSurface::draw(GObject* obj, double x, double y) {\n    ensureForwardTarget();\n    _forwardTarget->draw(obj, x, y);\n}\n\nvoid GForwardDrawingSurface::draw(GObject& obj) {\n    ensureForwardTarget();\n    _forwardTarget->draw(obj);\n}\n\nvoid GForwardDrawingSurface::draw(GObject& obj, double x, double y) {\n    ensureForwardTarget();\n    _forwardTarget->draw(obj, x, y);\n}\n\nvoid GForwardDrawingSurface::draw(QPainter* painter) {\n    ensureForwardTarget();\n    _forwardTarget->draw(painter);\n}\n\nvoid GForwardDrawingSurface::ensureForwardTargetConstHack() const {\n    if (!_forwardTarget) {\n        // Your whole life has been a lie.\n        // Also, this code is bad and I should feel bad.\n        GForwardDrawingSurface* hack = (GForwardDrawingSurface*) this;\n        hack->ensureForwardTarget();\n    }\n}\n\nint GForwardDrawingSurface::getPixel(double x, double y) const {\n    ensureForwardTargetConstHack();\n    return _forwardTarget->getPixel(x, y);\n}\n\nint GForwardDrawingSurface::getPixelARGB(double x, double y) const {\n    ensureForwardTargetConstHack();\n    return _forwardTarget->getPixelARGB(x, y);\n}\n\nGrid<int> GForwardDrawingSurface::getPixels() const {\n    ensureForwardTargetConstHack();\n    return _forwardTarget->getPixels();\n}\n\nGrid<int> GForwardDrawingSurface::getPixelsARGB() const {\n    ensureForwardTargetConstHack();\n    return _forwardTarget->getPixelsARGB();\n}\n\nbool GForwardDrawingSurface::isAutoRepaint() const {\n    ensureForwardTargetConstHack();\n    return _forwardTarget->isAutoRepaint();\n}\n\nvoid GForwardDrawingSurface::repaint() {\n    if (_forwardTarget) {\n        _forwardTarget->repaint();\n    }\n}\n\nvoid GForwardDrawingSurface::repaintRegion(int x, int y, int width, int height) {\n    if (_forwardTarget) {\n        _forwardTarget->repaintRegion(x, y, width, height);\n    }\n}\n\nvoid GForwardDrawingSurface::setAutoRepaint(bool autoRepaint) {\n    ensureForwardTarget();\n    _forwardTarget->setAutoRepaint(autoRepaint);\n}\n\nvoid GForwardDrawingSurface::setBackground(int color) {\n    ensureForwardTarget();\n    _forwardTarget->setBackground(color);\n}\n\nvoid GForwardDrawingSurface::setBackground(const std::string& color) {\n    ensureForwardTarget();\n    _forwardTarget->setBackground(color);\n}\n\nvoid GForwardDrawingSurface::setColor(int color) {\n    ensureForwardTarget();\n    _forwardTarget->setColor(color);\n}\n\nvoid GForwardDrawingSurface::setColor(const std::string& color) {\n    ensureForwardTarget();\n    _forwardTarget->setColor(color);\n}\n\nvoid GForwardDrawingSurface::setFillColor(int color) {\n    ensureForwardTarget();\n    _forwardTarget->setFillColor(color);\n}\n\nvoid GForwardDrawingSurface::setFillColor(const std::string& color) {\n    ensureForwardTarget();\n    _forwardTarget->setFillColor(color);\n}\n\nvoid GForwardDrawingSurface::setFont(const QFont& font) {\n    ensureForwardTarget();\n    _forwardTarget->setFont(font);\n}\n\nvoid GForwardDrawingSurface::setFont(const std::string& font) {\n    ensureForwardTarget();\n    _forwardTarget->setFont(font);\n}\n\nvoid GForwardDrawingSurface::setLineWidth(double lineWidth) {\n    ensureForwardTarget();\n    _forwardTarget->setLineWidth(lineWidth);\n}\n\nvoid GForwardDrawingSurface::setPixel(double x, double y, int rgb) {\n    ensureForwardTarget();\n    _forwardTarget->setPixel(x, y, rgb);\n}\n\nvoid GForwardDrawingSurface::setPixel(double x, double y, int r, int g, int b) {\n    ensureForwardTarget();\n    _forwardTarget->setPixel(x, y, r, g, b);\n}\n\nvoid GForwardDrawingSurface::setPixelARGB(double x, double y, int argb) {\n    ensureForwardTarget();\n    _forwardTarget->setPixelARGB(x, y, argb);\n}\n\nvoid GForwardDrawingSurface::setPixelARGB(double x, double y, int a, int r, int g, int b) {\n    ensureForwardTarget();\n    _forwardTarget->setPixelARGB(x, y, a, r, g, b);\n}\n\nvoid GForwardDrawingSurface::setPixels(const Grid<int>& pixels) {\n    ensureForwardTarget();\n    _forwardTarget->setPixels(pixels);\n}\n\nvoid GForwardDrawingSurface::setPixelsARGB(const Grid<int>& pixelsARGB) {\n    ensureForwardTarget();\n    _forwardTarget->setPixelsARGB(pixelsARGB);\n}\n\nvoid GForwardDrawingSurface::setRepaintImmediately(bool repaintImmediately) {\n    ensureForwardTarget();\n    _forwardTarget->setAutoRepaint(repaintImmediately);\n}\n\n/*\n * File: gthread.cpp\n * -----------------\n *\n * This file implements the members declared in gthread.h.\n *\n * @version 2019/04/13\n * - reimplement GThread to wrap either QThread or std::thread\n * - add GThread abstract base class for thread abstractions\n * - add GThreadQt and GThreadStd subclasses\n * - rename GFunctionThread to QFunctionThread to reduce name confusion\n * - remove GStudentThread subclass and combine functionality into GThread\n * @version 2018/10/18\n * - improved thread names\n * @version 2018/10/01\n * - bug fix where output wasn't showing up on the console if main ended too soon\n * @version 2018/09/23\n * - bug fix to shut down console at end of program\n * @version 2018/08/23\n * - renamed to gthread.h to replace Java version\n * @version 2018/07/28\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"gthread.h\"\n#define INTERNAL_INCLUDE 1\n#include \"consoletext.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gevent.h\"\n#define INTERNAL_INCLUDE 1\n#include \"geventqueue.h\"\n#define INTERNAL_INCLUDE 1\n#include \"qtgui.h\"\n#define INTERNAL_INCLUDE 1\n#include \"require.h\"\n#undef INTERNAL_INCLUDE\n#include <chrono>\n\nQFunctionThread::QFunctionThread(GThunk func)\n        : _func(func),\n          _hasReturn(false),\n          _returnValue(0) {\n    // empty\n}\n\nQFunctionThread::QFunctionThread(GThunkInt func)\n        : _funcInt(func),\n          _hasReturn(true),\n          _returnValue(0) {\n    // empty\n}\n\nint QFunctionThread::returnValue() const {\n    return _returnValue;\n}\n\nvoid QFunctionThread::run() {\n    if (_hasReturn) {\n        _returnValue = _funcInt();\n    } else {\n        _func();\n    }\n}\n\n\n/*static*/ GThread* GThread::_qtMainThread = nullptr;\n/*static*/ GThread* GThread::_studentThread = nullptr;\nMap<QThread*, GThread*> GThread::_allGThreadsQt;\nMap<std::thread*, GThread*> GThread::_allGThreadsStd;\n\nGThread::GThread() {\n    // empty\n}\n\n/*static*/ void GThread::ensureThatThisIsTheQtGuiThread(const std::string& message) {\n    if (!iAmRunningOnTheQtGuiThread()) {\n        error((message.empty() ? \"\" : (message + \": \"))\n              + \"Qt GUI system must be initialized from the application's main thread.\");\n    }\n}\n\n/*static*/ GThread* GThread::getCurrentThread() {\n    QThread* currentQtThread = QThread::currentThread();\n    if (_allGThreadsQt.containsKey(currentQtThread)) {\n        return _allGThreadsQt[currentQtThread];\n    } else {\n        return new GThreadQt(currentQtThread);\n    }\n}\n\n/*static*/ GThread* GThread::getQtMainThread() {\n    return _qtMainThread;\n}\n\n/*static*/ GThread* GThread::getStudentThread() {\n    return _studentThread;\n}\n\n/*static*/ bool GThread::iAmRunningOnTheQtGuiThread() {\n    return _qtMainThread && _qtMainThread == getCurrentThread();\n}\n\n/*static*/ bool GThread::qtGuiThreadExists() {\n    return _qtMainThread != nullptr;\n}\n\n/*static*/ void GThread::runInNewThread(GThunk func, const std::string& threadName) {\n    GThread* currentThread = getCurrentThread();\n    GThreadQt* thread = new GThreadQt(func, threadName);\n    thread->start();\n    while (thread->isRunning()) {\n        currentThread->sleep(10);\n    }\n    delete thread;\n}\n\n/*static*/ GThread* GThread::runInNewThreadAsync(GThunk func, const std::string& threadName) {\n    GThreadQt* thread = new GThreadQt(func, threadName);\n    thread->start();\n    return thread;\n}\n\n/*static*/ void GThread::runOnQtGuiThread(GThunk func) {\n    if (iAmRunningOnTheQtGuiThread()) {\n        // already on Qt GUI thread; just run the function!\n        func();\n    } else if (qtGuiThreadExists()) {\n        GEventQueue::instance()->runOnQtGuiThreadSync(func);\n    } else {\n        error(\"GThread::runOnQtGuiThread: Qt GUI thread has not been initialized properly. \\n\"\n              \"Make sure that the file containing your main() function #includes at least \\n\"\n              \"one .h header from the Stanford C++ library.\");\n    }\n}\n\n/*static*/ void GThread::runOnQtGuiThreadAsync(GThunk func) {\n    if (iAmRunningOnTheQtGuiThread()) {\n        // already on Qt GUI thread; just run the function!\n        func();\n    } else if (qtGuiThreadExists()) {\n        GEventQueue::instance()->runOnQtGuiThreadAsync(func);\n    } else {\n        error(\"GThread::runOnQtGuiThreadAsync: Qt GUI thread has not been initialized properly. \\n\"\n              \"Make sure that the file containing your main() function #includes at least \\n\"\n              \"one .h header from the Stanford C++ library.\");\n    }\n}\n\n/*static*/ void GThread::setMainThread() {\n    if (!_qtMainThread) {\n        _qtMainThread = new GThreadQt(QThread::currentThread());\n        _qtMainThread->setName(\"Qt GUI Thread\");\n    }\n}\n\n/*static*/ void GThread::startStudentThread(GThunkInt mainFunc) {\n    if (!_studentThread) {\n        _studentThread = new GThreadStd(mainFunc);\n        _studentThread->start();\n    }\n}\n\n/*static*/ void GThread::startStudentThreadVoid(GThunk mainFunc) {\n    if (!_studentThread) {\n        _studentThread = new GThreadQt(mainFunc);\n        _studentThread->start();\n    }\n}\n\n/*static*/ bool GThread::studentThreadExists() {\n    return _studentThread != nullptr;\n}\n\n/*static*/ bool GThread::wait(GThread* thread, long ms) {\n    GThread* currentThread = getCurrentThread();\n    if (currentThread == thread) {\n        error(\"GThread::wait: a thread cannot wait for itself\");\n    }\n\n    long startTime = GEvent::getCurrentTimeMS();\n    unsigned long msToSleep = static_cast<unsigned long>(ms > 10 ? 10 : ms);\n    while (thread && thread->isRunning()) {\n        currentThread->sleep(msToSleep);\n\n        // stop if we have waited at least the given amount of time\n        if (ms > 0 && GEvent::getCurrentTimeMS() - startTime >= ms) {\n            break;\n        }\n    }\n    return thread->isRunning();\n}\n\nvoid GThread::yield() {\n    QThread::yieldCurrentThread();\n}\n\n\nGThreadQt::GThreadQt(GThunk func, const std::string& threadName)\n        : _qThread(nullptr) {\n    _func = func;\n    _hasReturn = false;\n    _returnValue = 0;\n    _qThread = new QFunctionThread(func);\n    if (!threadName.empty()) {\n        setName(threadName);\n    }\n    _allGThreadsQt[_qThread] = this;\n}\n\nGThreadQt::GThreadQt(GThunkInt func, const std::string& threadName)\n        : _qThread(nullptr) {\n    _funcInt = func;\n    _hasReturn = true;\n    _returnValue = 0;\n    _qThread = new QFunctionThread(func);\n    if (!threadName.empty()) {\n        setName(threadName);\n    }\n    _allGThreadsQt[_qThread] = this;\n}\n\nGThreadQt::GThreadQt(QThread* qthread)\n        : _qThread(qthread) {\n    _hasReturn = false;\n    _returnValue = 0;\n    _allGThreadsQt[_qThread] = this;\n}\n\nGThreadQt::~GThreadQt() {\n    // TODO: delete _qThread;\n    _allGThreadsQt.remove(_qThread);\n    _qThread = nullptr;\n}\n\nint GThreadQt::getResult() const {\n    return _returnValue;\n}\n\nbool GThreadQt::isRunning() const {\n    return _qThread->isRunning();\n}\n\nvoid GThreadQt::join() {\n    if (_qThread->isRunning()) {\n        _qThread->wait();\n    }\n}\n\n// Implementation note: This may be the wrong behavior.\n// I think the current behavior tells this thread to pause itself,\n// while the desired behavior is to have the calling thread wait for this thread.\nbool GThreadQt::join(long ms) {\n    require::nonNegative(ms, \"GThread::join\", \"ms\");\n    return _qThread->wait(ms);\n}\n\nstd::string GThreadQt::name() const {\n    return _qThread->objectName().toStdString();\n}\n\nint GThreadQt::priority() const {\n    return static_cast<int>(_qThread->priority());\n}\n\nvoid GThreadQt::run() {\n    if (_hasReturn) {\n        _returnValue = _funcInt();\n    } else {\n        _func();\n    }\n}\n\nvoid GThreadQt::setName(const std::string& name) {\n    _qThread->setObjectName(QString::fromStdString(name));\n}\n\nvoid GThreadQt::setPriority(int priority) {\n    QThread::Priority priorityEnum;\n    switch (priority) {\n        case 0: priorityEnum = QThread::IdlePriority; break;\n        case 1: priorityEnum = QThread::LowestPriority; break;\n        case 2: priorityEnum = QThread::LowPriority; break;\n        case 3: priorityEnum = QThread::NormalPriority; break;\n        case 4: priorityEnum = QThread::HighPriority; break;\n        case 5: priorityEnum = QThread::HighestPriority; break;\n        case 6: priorityEnum = QThread::TimeCriticalPriority; break;\n        case 7: priorityEnum = QThread::InheritPriority; break;\n        default: priorityEnum = QThread::NormalPriority; break;\n    }\n    _qThread->setPriority(priorityEnum);\n}\n\nvoid GThreadQt::sleep(double ms) {\n    require::nonNegative(ms, \"GThread::sleep\", \"delay (ms)\");\n    _qThread->msleep(static_cast<unsigned long>(ms));\n}\n\nvoid GThreadQt::start() {\n    _qThread->start();\n}\n\nvoid GThreadQt::stop() {\n    _qThread->terminate();   // note: don't call this if possible!\n}\n\nvoid GThreadQt::yield() {\n    QThread::yieldCurrentThread();   // meh\n}\n\n\nGThreadStd::GThreadStd(GThunk func, const std::string& threadName)\n        : _stdThread(nullptr) {\n    _func = func;\n    _hasReturn = false;\n    _returnValue = 0;\n    _running = false;\n    if (!threadName.empty()) {\n        setName(threadName);\n    }\n    _allGThreadsStd[_stdThread] = this;\n}\n\nGThreadStd::GThreadStd(GThunkInt func, const std::string& threadName)\n        : _stdThread(nullptr) {\n    _funcInt = func;\n    _hasReturn = true;\n    _returnValue = 0;\n    _running = false;\n    if (!threadName.empty()) {\n        setName(threadName);\n    }\n    _allGThreadsStd[_stdThread] = this;\n}\n\nGThreadStd::GThreadStd(std::thread* stdThread)\n        : _stdThread(stdThread) {\n    _hasReturn = false;\n    _returnValue = 0;\n    _allGThreadsStd[_stdThread] = this;\n}\n\nGThreadStd::~GThreadStd() {\n    // TODO: delete _stdThread;\n    _allGThreadsStd.remove(_stdThread);\n    _running = false;\n    _stdThread = nullptr;\n}\n\nint GThreadStd::getResult() const {\n    return _returnValue;\n}\n\nbool GThreadStd::isRunning() const {\n    return _stdThread != nullptr && _running;\n}\n\n// Implementation note: This may be the wrong behavior.\n// I think the current behavior tells this thread to pause itself,\n// while the desired behavior is to have the calling thread wait for this thread.\nvoid GThreadStd::join() {\n    if (isRunning() && _stdThread->joinable()) {\n        _stdThread->join();\n    }\n}\n\n// Implementation note: This may be the wrong behavior.\n// I think the current behavior tells this thread to pause itself,\n// while the desired behavior is to have the calling thread wait for this thread.\nbool GThreadStd::join(long ms) {\n    require::nonNegative(ms, \"GThread::join\", \"ms\");\n    long elapsed = 0;\n    long amountToSleep = ms >= 50 ? 50 : ms;\n    while (elapsed < ms && isRunning()) {\n        sleep(amountToSleep);\n        elapsed += amountToSleep;\n    }\n    return !isRunning();\n}\n\nstd::string GThreadStd::name() const {\n    return _name;\n}\n\nint GThreadStd::priority() const {\n    return static_cast<int>(QThread::NormalPriority);\n}\n\nvoid GThreadStd::run() {\n    // run the given function\n    _running = true;\n    if (_hasReturn) {\n        _returnValue = _funcInt();\n    } else {\n        _func();\n    }\n    _running = false;\n}\n\nvoid GThreadStd::setName(const std::string& name) {\n    _name = name;\n}\n\nvoid GThreadStd::setPriority(int /*priority*/) {\n    // unsupported\n}\n\nvoid GThreadStd::sleep(double ms) {\n    require::nonNegative(ms, \"GThread::sleep\", \"delay (ms)\");\n    std::this_thread::sleep_for(std::chrono::milliseconds(static_cast<long>(ms)));\n}\n\nvoid GThreadStd::start() {\n    // not needed; std::thread implicitly auto-starts on creation\n    _stdThread = new std::thread([&] {\n        run();\n    });\n}\n\nvoid GThreadStd::stop() {\n    // not supported\n}\n\nvoid GThreadStd::yield() {\n    std::this_thread::yield();\n}\n\n/*\n * File: gdiffimage.cpp\n * --------------------\n * \n * @author Marty Stepp\n * @version 2019/04/23\n * - can press Escape key to close window\n * @version 2018/10/12\n * - added \"highlight diffs in color\" checkbox and functionality\n * @version 2018/09/15\n * - initial version, converted from Java back-end DiffImage class\n */\n\n// TODO: free memory\n\n#define INTERNAL_INCLUDE 1\n#include \"gdiffimage.h\"\n#include <iostream>\n#include <string>\n#define INTERNAL_INCLUDE 1\n#include \"gcolor.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gcolorchooser.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gfont.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gspacer.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gthread.h\"\n#define INTERNAL_INCLUDE 1\n#include \"require.h\"\n#undef INTERNAL_INCLUDE\n\n/*static*/ const std::string GDiffImage::HIGHLIGHT_COLOR_DEFAULT = \"#e000e0\";   // 224, 0, 224\n\n/*static*/ void GDiffImage::showDialog(\n        const std::string& name1,\n        GCanvas* image1,\n        const std::string& name2,\n        GCanvas* image2) {\n    // TODO: free memory on close\n    new GDiffImage(name1, image1, name2, image2);\n}\n\n/*static*/ void GDiffImage::showDialog(\n        const std::string& name1,\n        const std::string& imageFile1,\n        const std::string& name2,\n        const std::string& imageFile2) {\n    GCanvas* image1 = new GCanvas(imageFile1);\n    GCanvas* image2 = new GCanvas(imageFile2);\n    showDialog(name1, image1, name2, image2);\n}\n\nGDiffImage::GDiffImage(\n        const std::string& name1,\n        GCanvas* image1,\n        const std::string& name2,\n        GCanvas* image2) {\n    require::nonNull(image1, \"GDiffImage::constructor\", \"image1\");\n    require::nonNull(image2, \"GDiffImage::constructor\", \"image2\");\n\n    _image1 = image1->toGImage();\n    _image2 = image2->toGImage();\n    _imageDiffs = nullptr;\n    int diffPixelsCount = image1->countDiffPixels(image2);\n    _image2->setOpacity(0.5);\n\n    // set up window and widgets\n    _window = new GWindow(800, 600);\n    _window->setTitle(\"Compare Graphical Output\");\n    // _window->setResizable(false);\n    _window->setAutoRepaint(false);\n\n    // function to close the window when Escape is pressed\n    // (similar to code in gdiffgui.cpp)\n    auto windowCloseLambda = [this](GEvent event) {\n        if (event.getType() == KEY_PRESSED && event.getKeyChar() == GEvent::ESCAPE_KEY) {\n            _window->close();\n        }\n    };\n    _window->setKeyListener(windowCloseLambda);\n\n    _slider = new GSlider();\n    _slider->setActionListener([this]() {\n        _image2->setOpacity(_slider->getValue() / 100.0);\n        drawImages();\n    });\n    _slider->setKeyListener(windowCloseLambda);\n\n    _highlightDiffsBox = new GCheckBox(\"&Highlight diffs in color: \");\n    _highlightDiffsBox->setActionListener([this]() {\n        _slider->setEnabled(!_highlightDiffsBox->isChecked());\n        drawImages();\n    });\n    _highlightDiffsBox->setKeyListener(windowCloseLambda);\n\n    _highlightColor = HIGHLIGHT_COLOR_DEFAULT;\n    _colorButton = new GButton(\"&X\");\n    _colorButton->setBackground(_highlightColor);\n    _colorButton->setForeground(_highlightColor);\n    _colorButton->setActionListener([this]() {\n        chooseHighlightColor();\n    });\n    _colorButton->setKeyListener(windowCloseLambda);\n\n    _diffPixelsLabel = new GLabel(\"(\" + std::to_string(diffPixelsCount) + \" pixels differ)\");\n    GFont::boldFont(_diffPixelsLabel);\n\n    _imageLabel1 = new GLabel(name1);\n    _imageLabel2 = new GLabel(name2);\n    _southPixelLabel = new GLabel(\"\");\n\n    // TODO?\n    // setupMenuBar();\n\n    // do layout\n    GContainer* south = new GContainer(GContainer::LAYOUT_FLOW_VERTICAL);\n    GContainer* south1 = new GContainer();\n    south1->add(_imageLabel1);\n    south1->add(_slider);\n    south1->add(_imageLabel2);\n    south->add(south1);\n    // 20px strut?\n\n    GContainer* south2 = new GContainer();\n    south2->add(_diffPixelsLabel);\n    south2->add(new GSpacer(20, 1));\n    south2->add(_highlightDiffsBox);\n    south2->add(_colorButton);\n    south->add(south2);\n\n    GContainer* south3 = new GContainer();\n    south3->add(_southPixelLabel);\n    south->add(south3);\n\n    _window->addToRegion(south, GWindow::REGION_SOUTH);\n\n    // poke the canvas\n    double canvasWidth  = std::max(_image1->getWidth(),  _image2->getWidth());\n    double canvasHeight = std::max(_image1->getHeight(), _image2->getHeight());\n    // _window->add(_image1);\n    // _window->add(_image2);\n\n    _window->getCanvas()->setMouseListener([this](GEvent event) {\n        if (event.getType() != MOUSE_MOVED) {\n            return;\n        }\n        int x = static_cast<int>(event.getX());\n        int y = static_cast<int>(event.getY());\n        _southPixelLabel->setText(\n                \"(x=\" + std::to_string(x)\n                + \", y=\" + std::to_string(y)\n                + \") expected: \" + getPixelString(_image1, x, y)\n                + \" actual: \" + getPixelString(_image2, x, y));\n    });\n\n    // set up events\n    _window->setCanvasSize(canvasWidth, canvasHeight);\n    _window->drawPixel(0, 0, 0xffffff);\n    drawImages();\n\n    _window->center();\n    _window->show();\n}\n\nGDiffImage::~GDiffImage() {\n    // TODO: delete\n    _window = nullptr;\n    _slider = nullptr;\n    _highlightDiffsBox = nullptr;\n    _colorButton = nullptr;\n}\n\nvoid GDiffImage::chooseHighlightColor() {\n    std::string color = GColorChooser::showDialog(\n            /* parent */ _window,\n            /* title */ \"Choose a highlight color\",\n            /* initial color */ _highlightColor);\n    if (color.empty()) {\n        return;\n    }\n    _highlightColor = color;\n    _colorButton->setBackground(color);\n    _colorButton->setForeground(color);\n    drawImages();\n}\n\nvoid GDiffImage::drawImages() {\n    _window->clearCanvas();\n    if (_highlightDiffsBox->isChecked()) {\n        GThread::runOnQtGuiThreadAsync([this]() {\n            // draw the highlighted diffs (if so desired)\n            int w1 = _image1->getWidth();\n            int h1 = _image1->getHeight();\n            int w2 = _image2->getWidth();\n            int h2 = _image2->getHeight();\n\n            int wmax = std::max(w1, w2);\n            int hmax = std::max(h1, h2);\n\n            if (!_imageDiffs) {\n                _imageDiffs = new GImage(wmax, hmax);\n            }\n            QImage* imgDiff = _imageDiffs->getQImage();\n\n            // check each pair of pixels\n            // (access raw QImages for speed)\n            int highlightColor = GColor::convertColorToRGB(_highlightColor) | 0xff000000;\n            QImage* img1 = _image1->getQImage();\n            QImage* img2 = _image2->getQImage();\n            for (int y = 0; y < hmax; y++) {\n                for (int x = 0; x < wmax; x++) {\n                    int pixel1 = (x < w1 && y < h1) ? (img1->pixel(x, y) & 0xffffffff) : 0;\n                    int pixel2 = (x < w2 && y < h2) ? (img2->pixel(x, y) & 0xffffffff) : 0;\n                    imgDiff->setPixel(x, y, (pixel1 == pixel2) ? pixel1 : highlightColor);\n                }\n            }\n            _window->draw(_imageDiffs);\n        });\n    } else {\n        _window->draw(_image1);\n        _window->draw(_image2);   // possibly at sub-1 opacity\n    }\n\n    _window->repaint();\n}\n\nstd::string GDiffImage::getPixelString(GImage* image, int x, int y) const {\n    if (x >= 0 && x < image->getWidth()\n            && y >= 0 && y < image->getHeight()) {\n        int rgb = image->getPixel(x, y);\n        return GColor::convertRGBToColor(rgb);\n    } else {\n        return \"(none)\";\n    }\n}\n\n/*\n * File: gradiobutton.cpp\n * ----------------------\n *\n * @author Marty Stepp\n * @version 2019/04/23\n * - added key event support\n * @version 2019/02/02\n * - destructor now stops event processing\n * @version 2018/10/06\n * - added toggle()\n * @version 2018/09/04\n * - added double-click event support\n * @version 2018/08/23\n * - renamed to gradiobutton.cpp to replace Java version\n * @version 2018/06/25\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"gradiobutton.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gthread.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gwindow.h\"\n#define INTERNAL_INCLUDE 1\n#include \"require.h\"\n#undef INTERNAL_INCLUDE\n\nMap<std::string, QButtonGroup*> GRadioButton::_buttonGroups;\n\nGRadioButton::GRadioButton(const std::string& text, const std::string& group, bool checked, QWidget* parent) {\n    GThread::runOnQtGuiThread([this, text, group, checked, parent]() {\n        _iqradioButton = new _Internal_QRadioButton(this, checked, getInternalParent(parent));\n        QButtonGroup* buttonGroup = getButtonGroup(group);\n        buttonGroup->addButton(_iqradioButton);\n    });\n    setText(text);\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGRadioButton::~GRadioButton() {\n    // TODO: delete _iqradioButton;\n    _iqradioButton->detach();\n    _iqradioButton = nullptr;\n}\n\nstd::string GRadioButton::getActionCommand() const {\n    if (_actionCommand.empty()) {\n        return getText();\n    } else {\n        return _actionCommand;\n    }\n}\n\nstd::string GRadioButton::getActionEventType() const {\n    return \"change\";\n}\n\n_Internal_QWidget* GRadioButton::getInternalWidget() const {\n    return _iqradioButton;\n}\n\nstd::string GRadioButton::getText() const {\n    return _iqradioButton->text().toStdString();\n}\n\nstd::string GRadioButton::getType() const {\n    return \"GRadioButton\";\n}\n\nQWidget* GRadioButton::getWidget() const {\n    return static_cast<QWidget*>(_iqradioButton);\n}\n\nbool GRadioButton::isChecked() const {\n    return _iqradioButton->isChecked();\n}\n\nbool GRadioButton::isSelected() const {\n    return _iqradioButton->isChecked();\n}\n\nvoid GRadioButton::setChecked(bool checked) {\n    GThread::runOnQtGuiThread([this, checked]() {\n        _iqradioButton->setChecked(checked);\n    });\n}\n\nvoid GRadioButton::setSelected(bool selected) {\n    setChecked(selected);\n}\n\nvoid GRadioButton::setText(const std::string& text) {\n    GThread::runOnQtGuiThread([this, text]() {\n        _iqradioButton->setText(QString::fromStdString(text));\n    });\n}\n\nvoid GRadioButton::toggle() {\n    setChecked(!isChecked());\n}\n\n/* static */ QButtonGroup* GRadioButton::getButtonGroup(const std::string& group) {\n    if (!_buttonGroups.containsKey(group)) {\n        GThread::runOnQtGuiThread([group]() {\n            _buttonGroups.put(group, new QButtonGroup());\n        });\n    }\n    return _buttonGroups[group];\n}\n\n\n_Internal_QRadioButton::_Internal_QRadioButton(GRadioButton* gradioButton, bool checked, QWidget* parent)\n        : QRadioButton(parent),\n          _gradioButton(gradioButton) {\n    require::nonNull(gradioButton, \"_Internal_QRadioButton::constructor\");\n    setObjectName(QString::fromStdString(\"_Internal_QRadioButton_\" + std::to_string(gradioButton->getID())));\n    setChecked(checked);\n    // We handle the clicked signal rather than toggled because, in a radio button group,\n    // the toggled signal will fire twice: once for the radio button clicked, and once\n    // for the other button that was unchecked.\n    connect(this, SIGNAL(clicked()), this, SLOT(handleClick()));\n}\n\nvoid _Internal_QRadioButton::detach() {\n    _gradioButton = nullptr;\n}\n\nvoid _Internal_QRadioButton::handleClick() {\n    GEvent changeEvent(\n                /* class  */ CHANGE_EVENT,\n                /* type   */ STATE_CHANGED,\n                /* name   */ \"change\",\n                /* source */ _gradioButton);\n    changeEvent.setActionCommand(_gradioButton->getActionCommand());\n    _gradioButton->fireEvent(changeEvent);\n}\n\nvoid _Internal_QRadioButton::keyPressEvent(QKeyEvent* event) {\n    require::nonNull(event, \"_Internal_QRadioButton::keyPressEvent\", \"event\");\n    if (_gradioButton && _gradioButton->isAcceptingEvent(\"keypress\")) {\n        event->accept();\n        _gradioButton->fireGEvent(event, KEY_PRESSED, \"keypress\");\n        if (event->isAccepted()) {\n            QRadioButton::keyPressEvent(event);   // call super\n        }\n    } else {\n        QRadioButton::keyPressEvent(event);   // call super\n    }\n}\n\nvoid _Internal_QRadioButton::keyReleaseEvent(QKeyEvent* event) {\n    require::nonNull(event, \"_Internal_QRadioButton::keyReleaseEvent\", \"event\");\n    if (_gradioButton && _gradioButton->isAcceptingEvent(\"keyrelease\")) {\n        event->accept();\n        _gradioButton->fireGEvent(event, KEY_RELEASED, \"keyrelease\");\n        if (event->isAccepted()) {\n            QRadioButton::keyReleaseEvent(event);   // call super\n        }\n    } else {\n        QRadioButton::keyReleaseEvent(event);   // call super\n    }\n}\n\nvoid _Internal_QRadioButton::mouseDoubleClickEvent(QMouseEvent* event) {\n    require::nonNull(event, \"_Internal_QRadioButton::mouseDoubleClickEvent\");\n    QWidget::mouseDoubleClickEvent(event);   // call super\n    if (!_gradioButton) {\n        return;\n    }\n\n    emit doubleClicked();\n    if (!_gradioButton->isAcceptingEvent(\"doubleclick\")) {\n        return;\n    }\n    GEvent mouseEvent(\n                /* class  */ MOUSE_EVENT,\n                /* type   */ MOUSE_DOUBLE_CLICKED,\n                /* name   */ \"doubleclick\",\n                /* source */ _gradioButton);\n    mouseEvent.setActionCommand(_gradioButton->getActionCommand());\n    mouseEvent.setButton((int) event->button());\n    mouseEvent.setX(event->x());\n    mouseEvent.setY(event->y());\n    _gradioButton->fireEvent(mouseEvent);\n}\n\nQSize _Internal_QRadioButton::sizeHint() const {\n    if (hasPreferredSize()) {\n        return getPreferredSize();\n    } else {\n        return QRadioButton::sizeHint();\n    }\n}\n\n#ifdef SPL_PRECOMPILE_QT_MOC_FILES\n#define INTERNAL_INCLUDE 1\n#include \"moc_gradiobutton.cpp\"   // speeds up compilation of auto-generated Qt files\n#undef INTERNAL_INCLUDE\n#endif // SPL_PRECOMPILE_QT_MOC_FILES\n\n/*\n * File: gcheckbox.cpp\n * -------------------\n *\n * @author Marty Stepp\n * @version 2019/04/23\n * - added key event support\n * @version 2019/02/02\n * - destructor now stops event processing\n * @version 2018/10/06\n * - added toggle()\n * @version 2018/09/04\n * - added double-click event support\n * @version 2018/08/23\n * - renamed to gcheckbox.cpp to replace Java version\n * @version 2018/06/25\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"gcheckbox.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gthread.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gwindow.h\"\n#define INTERNAL_INCLUDE 1\n#include \"require.h\"\n#undef INTERNAL_INCLUDE\n\nGCheckBox::GCheckBox(const std::string& text, bool checked, QWidget* parent) {\n    GThread::runOnQtGuiThread([this, checked, parent]() {\n        _iqcheckBox = new _Internal_QCheckBox(this, checked, getInternalParent(parent));\n    });\n    setText(text);\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGCheckBox::~GCheckBox() {\n    // TODO: delete _iqcheckBox;\n    _iqcheckBox->detach();\n    _iqcheckBox = nullptr;\n}\n\nstd::string GCheckBox::getActionCommand() const {\n    if (_actionCommand.empty()) {\n        return getText();\n    } else {\n        return _actionCommand;\n    }\n}\n\nstd::string GCheckBox::getActionEventType() const {\n    return \"change\";\n}\n\n_Internal_QWidget* GCheckBox::getInternalWidget() const {\n    return _iqcheckBox;\n}\n\nstd::string GCheckBox::getText() const {\n    return _iqcheckBox->text().toStdString();\n}\n\nstd::string GCheckBox::getType() const {\n    return \"GCheckBox\";\n}\n\nQWidget* GCheckBox::getWidget() const {\n    return static_cast<QWidget*>(_iqcheckBox);\n}\n\nbool GCheckBox::isChecked() const {\n    return _iqcheckBox->isChecked();\n}\n\nbool GCheckBox::isSelected() const {\n    return _iqcheckBox->isChecked();\n}\n\nvoid GCheckBox::setChecked(bool checked) {\n    GThread::runOnQtGuiThread([this, checked]() {\n        _iqcheckBox->setChecked(checked);\n    });\n}\n\nvoid GCheckBox::setSelected(bool selected) {\n    setChecked(selected);\n}\n\nvoid GCheckBox::setText(const std::string& text) {\n    GThread::runOnQtGuiThread([this, text]() {\n        _iqcheckBox->setText(QString::fromStdString(text));\n    });\n}\n\nvoid GCheckBox::toggle() {\n    setChecked(!isChecked());\n}\n\n\n_Internal_QCheckBox::_Internal_QCheckBox(GCheckBox* gcheckBox, bool checked, QWidget* parent)\n        : QCheckBox(parent),\n          _gcheckBox(gcheckBox) {\n    require::nonNull(gcheckBox, \"_Internal_QCheckBox::constructor\");\n    setObjectName(QString::fromStdString(\"_Internal_QCheckBox_\" + std::to_string(gcheckBox->getID())));\n    setChecked(checked);\n    connect(this, SIGNAL(stateChanged(int)), this, SLOT(handleStateChange(int)));\n}\n\nvoid _Internal_QCheckBox::detach() {\n    _gcheckBox = nullptr;\n}\n\nvoid _Internal_QCheckBox::handleStateChange(int /* state */) {\n    if (!_gcheckBox) {\n        return;\n    }\n    GEvent changeEvent(\n                /* class  */ CHANGE_EVENT,\n                /* type   */ STATE_CHANGED,\n                /* name   */ \"change\",\n                /* source */ _gcheckBox);\n    changeEvent.setActionCommand(_gcheckBox->getActionCommand());\n    _gcheckBox->fireEvent(changeEvent);\n}\n\nvoid _Internal_QCheckBox::keyPressEvent(QKeyEvent* event) {\n    require::nonNull(event, \"_Internal_QCheckBox::keyPressEvent\", \"event\");\n    if (_gcheckBox && _gcheckBox->isAcceptingEvent(\"keypress\")) {\n        event->accept();\n        _gcheckBox->fireGEvent(event, KEY_PRESSED, \"keypress\");\n        if (event->isAccepted()) {\n            QCheckBox::keyPressEvent(event);   // call super\n        }\n    } else {\n        QCheckBox::keyPressEvent(event);   // call super\n    }\n}\n\nvoid _Internal_QCheckBox::keyReleaseEvent(QKeyEvent* event) {\n    require::nonNull(event, \"_Internal_QCheckBox::keyReleaseEvent\", \"event\");\n    if (_gcheckBox && _gcheckBox->isAcceptingEvent(\"keyrelease\")) {\n        event->accept();\n        _gcheckBox->fireGEvent(event, KEY_RELEASED, \"keyrelease\");\n        if (event->isAccepted()) {\n            QCheckBox::keyReleaseEvent(event);   // call super\n        }\n    } else {\n        QCheckBox::keyReleaseEvent(event);   // call super\n    }\n}\n\nvoid _Internal_QCheckBox::mouseDoubleClickEvent(QMouseEvent* event) {\n    require::nonNull(event, \"_Internal_QCheckBox::mouseDoubleClickEvent\");\n    QWidget::mouseDoubleClickEvent(event);   // call super\n    emit doubleClicked();\n\n    if (!_gcheckBox || !_gcheckBox->isAcceptingEvent(\"doubleclick\")) {\n        return;\n    }\n    GEvent mouseEvent(\n                /* class  */ MOUSE_EVENT,\n                /* type   */ MOUSE_DOUBLE_CLICKED,\n                /* name   */ \"doubleclick\",\n                /* source */ _gcheckBox);\n    mouseEvent.setActionCommand(_gcheckBox->getActionCommand());\n    mouseEvent.setButton((int) event->button());\n    mouseEvent.setX(event->x());\n    mouseEvent.setY(event->y());\n    _gcheckBox->fireEvent(mouseEvent);\n}\n\nQSize _Internal_QCheckBox::sizeHint() const {\n    if (hasPreferredSize()) {\n        return getPreferredSize();\n    } else {\n        return QCheckBox::sizeHint();\n    }\n}\n\n#ifdef SPL_PRECOMPILE_QT_MOC_FILES\n#define INTERNAL_INCLUDE 1\n#include \"moc_gcheckbox.cpp\"   // speeds up compilation of auto-generated Qt files\n#undef INTERNAL_INCLUDE\n#endif // SPL_PRECOMPILE_QT_MOC_FILES\n\n/*\n * File: gtable.cpp\n * ----------------\n * This file implements the GTable.h interface.\n * See that file for documentation of each member.\n *\n * @author Marty Stepp\n * @version 2019/02/02\n * - destructor now stops event processing\n * @version 2018/09/06\n * - added bounds-checking and require() calls\n * @version 2018/08/23\n * - renamed to gtable.cpp to replace Java version\n * @version 2018/07/21\n * - rich formatting on cell, row, column, table\n * - improved event handling\n * @version 2018/07/17\n * - initial version, based on gtable.h\n * @since 2018/07/17\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"gtable.h\"\n#include <cstring>\n#include <iostream>\n#include <iomanip>\n#include <QBrush>\n#include <QColor>\n#include <QHeaderView>\n#include <QLineEdit>\n#include <sstream>\n#define INTERNAL_INCLUDE 1\n#include \"gclipboard.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gcolor.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gevent.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gfont.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gthread.h\"\n#define INTERNAL_INCLUDE 1\n#include \"require.h\"\n#undef INTERNAL_INCLUDE\n\nGTable::TableStyle GTable::_defaultCellStyle = GTable::TableStyle::unset();\n\nGTable::GTable(int rows, int columns, double width, double height, QWidget* parent)\n        : _iqtableview(nullptr),\n          _columnHeaderStyle(GTable::COLUMN_HEADER_NONE) {\n    GThread::runOnQtGuiThread([this, rows, columns, parent]() {\n        _iqtableview = new _Internal_QTableWidget(this, rows, columns, getInternalParent(parent));\n        _iqtableview->setSelectionMode(QAbstractItemView::SingleSelection);\n        _globalCellStyle = TableStyle::unset();\n    });\n    require::nonNegative2D(rows, columns, \"GTable::constructor\", \"rows\", \"columns\");\n    require::nonNegative2D(width, height, \"GTable::constructor\", \"width\", \"height\");\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGTable::~GTable() {\n    // TODO: delete _iqtableview;\n    _iqtableview->detach();\n    _iqtableview = nullptr;\n}\n\nvoid GTable::applyStyleToCell(int row, int column, const TableStyle& style) {\n    setCellAlignmentInternal(row, column, style.alignment);\n    setCellBackgroundInternal(row, column, style.background);\n    setCellFontInternal(row, column, style.font);\n    setCellForegroundInternal(row, column, style.foreground);\n}\n\nvoid GTable::autofitColumnWidths() {\n    GThread::runOnQtGuiThread([this]() {\n        _iqtableview->resizeColumnsToContents();\n    });\n}\n\nvoid GTable::checkColumn(const std::string& member, int column) const {\n    require::inRange(column, 0, numCols(), \"GTable::\" + member, \"column\");\n}\n\nvoid GTable::checkIndex(const std::string& member, int row, int column) const {\n    require::inRange2D(row, column, 0, 0, numRows(), numCols(), \"GTable::\" + member, \"row\", \"column\");\n}\n\nvoid GTable::checkRow(const std::string& member, int row) const {\n    require::inRange(row, 0, numRows(), \"GTable::\" + member, \"row\");\n}\n\nvoid GTable::clear() {\n    GThread::runOnQtGuiThread([this]() {\n        _iqtableview->clear();\n        // for some reason, clearing a table also wipes the Excel-style column headers\n        updateColumnHeaders();\n    });\n}\n\nvoid GTable::clearCell(int row, int column) {\n    checkIndex(\"clearCell\", row, column);\n    set(row, column, /* text */ \"\");\n}\n\nvoid GTable::clearFormatting() {\n    GThread::runOnQtGuiThread([this]() {\n        // clear out all records of row, column, and global table styles\n        _columnStyles.clear();\n        _rowStyles.clear();\n        _globalCellStyle = TableStyle::unset();\n\n        // set the formatting on each cell\n        for (int row = 0, nr = numRows(), nc = numCols(); row < nr; row++) {\n            for (int col = 0; col < nc; col++) {\n                clearCellFormatting(row, col);\n            }\n        }\n    });\n}\n\nvoid GTable::clearCellFormatting(int row, int column) {\n    checkIndex(\"clearCellFormatting\", row, column);\n    GThread::runOnQtGuiThread([this, row, column]() {\n        ensureDefaultFormatting();\n        TableStyle style = _defaultCellStyle;\n        if (style.background >= 0) {\n            setCellBackgroundInternal(row, column, style.background);\n        }\n        if (!style.font.empty()) {\n            setCellFontInternal(row, column, style.font);\n        }\n        if (style.foreground >= 0) {\n            setCellForegroundInternal(row, column, style.foreground);\n        }\n        if (style.alignment >= 0) {\n            setCellAlignmentInternal(row, column, style.alignment);\n        }\n    });\n}\n\nvoid GTable::clearSelection() {\n    GThread::runOnQtGuiThread([this]() {\n        _iqtableview->clearSelection();\n    });\n}\n\nvoid GTable::ensureColumnStyle(int column) {\n    ensureDefaultFormatting();\n    if (!_columnStyles.containsKey(column)) {\n        _columnStyles[column] = TableStyle::unset();\n    }\n}\n\nvoid GTable::ensureDefaultFormatting() const {\n    GTable* thisHack = (GTable*) this;\n    if (!_defaultCellStyle.isSet()) {\n        QPalette palette = thisHack->_iqtableview->palette();\n        _defaultCellStyle.background = palette.base().color().rgb() & 0x00ffffff;\n        _defaultCellStyle.foreground = palette.text().color().rgb() & 0x00ffffff;\n        _defaultCellStyle.font       = GFont::toFontString(thisHack->_iqtableview->font());\n        _defaultCellStyle.alignment  = ALIGN_LEFT;   // TODO: ask cell for its alignment\n    }\n}\n\nvoid GTable::ensureRowStyle(int row) {\n    ensureDefaultFormatting();\n    if (!_rowStyles.containsKey(row)) {\n        _rowStyles[row] = TableStyle::unset();\n    }\n}\n\nvoid GTable::fill(const std::string& text) {\n    GThread::runOnQtGuiThread([this, text]() {\n        int nr = numRows();\n        int nc = numCols();\n        for (int r = 0; r < nr; r++) {\n            for (int c = 0; c < nc; c++) {\n                set(r, c, text);\n            }\n        }\n    });\n}\n\nstd::string GTable::get(int row, int column) const {\n    checkIndex(\"get\", row, column);\n    return _iqtableview->model()->data(_iqtableview->model()->index(row, column)).toString().toStdString();\n}\n\nGTable::ColumnHeaderStyle GTable::getColumnHeaderStyle() const {\n    return _columnHeaderStyle;\n}\n\ndouble GTable::getColumnWidth(int column) const {\n    checkColumn(\"getColumnWidth\", column);\n    return _iqtableview->columnWidth(column);\n}\n\n_Internal_QWidget* GTable::getInternalWidget() const {\n    return _iqtableview;\n}\n\nGTable::TableStyle GTable::getMergedStyleForCell(int row, int column) {\n    // style precedence: cell > column > row > global\n    ensureDefaultFormatting();\n    TableStyle style = _defaultCellStyle;\n    style.mergeWith(_globalCellStyle);\n    if (_rowStyles.containsKey(row)) {\n        style.mergeWith(_rowStyles[row]);\n    }\n    if (_columnStyles.containsKey(column)) {\n        style.mergeWith(_columnStyles[column]);\n    }\n    return style;\n}\n\ndouble GTable::getRowHeight(int row) const {\n    checkRow(\"getRowHeight\", row);\n    return _iqtableview->rowHeight(row);\n}\n\nGridLocation GTable::getSelectedCell() const {\n    QModelIndexList list = _iqtableview->selectionModel()->selectedIndexes();\n    if (list.empty()) {\n        return GridLocation(-1, -1);\n    } else {\n        QModelIndex index = list.at(0);\n        return GridLocation(index.row(), index.column());\n    }\n}\n\nvoid GTable::getSelectedCell(int& row, int& column) const {\n    GridLocation loc = getSelectedCell();\n    row = loc.row;\n    column = loc.col;\n}\n\nstd::string GTable::getSelectedCellValue() const {\n    if (hasSelectedCell()) {\n        GridLocation loc = getSelectedCell();\n        return get(loc.row, loc.col);\n    } else {\n        return \"\";\n    }\n}\n\nint GTable::getSelectedColumn() const {\n    return getSelectedCell().col;\n}\n\nint GTable::getSelectedRow() const {\n    return getSelectedCell().row;\n}\n\nstd::string GTable::getType() const {\n    return \"GTable\";\n}\n\nQWidget* GTable::getWidget() const {\n    return static_cast<QWidget*>(_iqtableview);\n}\n\nbool GTable::hasSelectedCell() const {\n    GridLocation loc = getSelectedCell();\n    return loc.row >= 0 && loc.col >= 0;\n}\n\nint GTable::height() const {\n    return numRows();\n}\n\nbool GTable::inTableBounds(int row, int column) const {\n    return 0 <= row && row < height() && 0 <= column && column < width();\n}\n\nbool GTable::isEditable() const {\n    return (_iqtableview->editTriggers() & QAbstractItemView::NoEditTriggers) != 0;\n}\n\nint GTable::numCols() const {\n    return _iqtableview->model()->columnCount();\n}\n\nint GTable::numRows() const {\n    return _iqtableview->model()->rowCount();\n}\n\nvoid GTable::removeTableListener() {\n    removeEventListeners({\"table\",\n                          \"tableupdate\",\n                          \"tableselect\",\n                          \"tableeditbegin\",\n                          \"tablereplacebegin\",\n                          \"tablecut\",\n                          \"tablecopy\",\n                          \"tablepaste\"});\n}\n\nvoid GTable::requestFocus() {\n    bool wasEditing = _iqtableview->isEditing();\n    GInteractor::requestFocus();\n    if (!wasEditing && hasSelectedCell()) {\n        GThread::runOnQtGuiThread([this]() {\n            GridLocation loc = getSelectedCell();\n            _iqtableview->closePersistentEditor(_iqtableview->item(loc.row, loc.col));\n        });\n    }\n}\n\nvoid GTable::resize(int newNumRows, int newNumCols) {\n    require::nonNegative2D(newNumRows, newNumCols, \"GTable::resize\", \"rows\", \"columns\");\n    GThread::runOnQtGuiThread([this, newNumRows, newNumCols]() {\n        int oldNumRows = numRows();\n        int oldNumCols = numCols();\n        _iqtableview->setRowCount(newNumRows);\n        _iqtableview->setColumnCount(newNumCols);\n\n        // make sure proper headers showing on each column\n        if (newNumCols > oldNumCols) {\n            updateColumnHeaders();\n        }\n\n        // apply appropriate styles to newly added cells\n        if (newNumRows > oldNumRows || newNumCols > oldNumCols) {\n            for (int row = 0; row < newNumRows; row++) {\n                for (int col = 0; col < newNumCols; col++) {\n                    if (row >= oldNumRows || col >= oldNumCols) {\n                        // figure out appropriate style (row, col, global, etc.) and apply it\n                        TableStyle style = getMergedStyleForCell(row, col);\n                        applyStyleToCell(row, col, style);\n                    }\n                }\n            }\n        }\n    });\n}\n\nbool GTable::rowColumnHeadersVisible() const {\n    return _iqtableview->horizontalHeader()->isVisible()\n            && _iqtableview->verticalHeader()->isVisible();\n}\n\nvoid GTable::select(int row, int column) {\n    checkIndex(\"select\", row, column);\n    GThread::runOnQtGuiThread([this, row, column]() {\n        QModelIndex index = _iqtableview->model()->index(row, column);\n        _iqtableview->selectionModel()->select(index, QItemSelectionModel::ClearAndSelect);\n    });\n}\n\nvoid GTable::set(int row, int column, const std::string& text) {\n    checkIndex(\"set\", row, column);\n    GThread::runOnQtGuiThread([this, row, column, text]() {\n        QModelIndex index = _iqtableview->model()->index(row, column);\n        _iqtableview->model()->setData(index, QVariant(text.c_str()));\n    });\n}\n\nvoid GTable::setBackground(int rgb) {\n    // GInteractor::setBackground(rgb);\n    // (don't call super; that will set the BG of the headers and everything)\n\n    GThread::runOnQtGuiThread([this, rgb]() {\n        // save this background color in the global cell style (for later cells on resize() etc)\n        ensureDefaultFormatting();\n        _globalCellStyle.background = rgb;\n\n        // remove background colors from any row/column styles because they are\n        // now overridden by this global background color style\n        TableStyle unset = TableStyle::unset();\n        for (int row : _rowStyles) {\n            _rowStyles[row].background = unset.background;\n        }\n        for (int col : _columnStyles) {\n            _columnStyles[col].background = unset.background;\n        }\n\n        // set each cell's background color\n        for (int row = 0, nr = numRows(); row < nr; row++) {\n            for (int col = 0, nc = numCols(); col < nc; col++) {\n                setCellBackgroundInternal(row, col, rgb);\n            }\n        }\n    });\n}\n\nvoid GTable::setBackground(const std::string& color) {\n    setBackground(GColor::convertColorToRGB(color));\n}\n\nvoid GTable::setCellAlignment(int row, int column, HorizontalAlignment alignment) {\n    checkIndex(\"setCellAlignment\", row, column);\n    GThread::runOnQtGuiThread([this, row, column, alignment]() {\n        setCellAlignmentInternal(row, column, alignment);   // do the actual work\n    });\n}\n\nvoid GTable::setCellAlignmentInternal(int row, int column, HorizontalAlignment alignment) {\n    Qt::Alignment align = Qt::AlignVCenter | toQtAlignment(alignment);\n    _iqtableview->model()->setData(_iqtableview->model()->index(row, column),\n                                   QVariant(align), Qt::TextAlignmentRole);\n}\n\nvoid GTable::setCellBackground(int row, int column, int rgb) {\n    checkIndex(\"setCellBackground\", row, column);\n    GThread::runOnQtGuiThread([this, row, column, rgb]() {\n        setCellBackgroundInternal(row, column, rgb);   // do the actual work\n    });\n}\n\nvoid GTable::setCellBackground(int row, int column, const std::string& color) {\n    setCellBackground(row, column, GColor::convertColorToRGB(color));\n}\n\nvoid GTable::setCellBackgroundInternal(int row, int column, int rgb) {\n    _iqtableview->item(row, column)->setBackground(QBrush(QColor(rgb)));\n}\n\nvoid GTable::setCellFont(int row, int column, const std::string& font) {\n    checkIndex(\"setCellFont\", row, column);\n    GThread::runOnQtGuiThread([this, row, column, font]() {\n        setCellFontInternal(row, column, font);   // do the actual work\n    });\n}\n\nvoid GTable::setCellFontInternal(int row, int column, const std::string& font) {\n    _iqtableview->item(row, column)->setFont(GFont::toQFont(_iqtableview->font(), font));\n}\n\nvoid GTable::setCellForeground(int row, int column, int rgb) {\n    checkIndex(\"setCellForeground\", row, column);\n    GThread::runOnQtGuiThread([this, row, column, rgb]() {\n        setCellForegroundInternal(row, column, rgb);   // do the actual work\n    });\n}\n\nvoid GTable::setCellForegroundInternal(int row, int column, int rgb) {\n    ensureDefaultFormatting();\n    _iqtableview->item(row, column)->setForeground(QBrush(QColor(rgb)));\n}\n\nvoid GTable::setCellForeground(int row, int column, const std::string& color) {\n    checkIndex(\"setCellForeground\", row, column);\n    setCellForeground(row, column, GColor::convertColorToRGB(color));\n}\n\nvoid GTable::setColor(int rgb) {\n    setForeground(rgb);\n}\n\nvoid GTable::setColor(const std::string& color) {\n    setForeground(color);\n}\n\nvoid GTable::setColumnAlignment(int column, HorizontalAlignment alignment) {\n    checkColumn(\"setColumnAlignment\", column);\n\n    GThread::runOnQtGuiThread([this, column, alignment]() {\n        // save this alignment in the column style (for later cells on resize() etc)\n        ensureColumnStyle(column);\n        _columnStyles[column].alignment = alignment;\n\n        // set each cell's alignment in that column\n        for (int row = 0, nr = numRows(); row < nr; row++) {\n            setCellAlignmentInternal(row, column, alignment);\n        }\n    });\n}\n\nvoid GTable::setColumnBackground(int column, int rgb) {\n    checkColumn(\"setColumnBackground\", column);\n\n    GThread::runOnQtGuiThread([this, column, rgb]() {\n        // save this background color in the column style (for later cells on resize() etc)\n        ensureColumnStyle(column);\n        _columnStyles[column].background = rgb;\n\n        // set each cell's background color in that column\n        for (int row = 0, nr = numRows(); row < nr; row++) {\n            setCellBackgroundInternal(row, column, rgb);\n        }\n    });\n}\n\nvoid GTable::setColumnBackground(int column, const std::string& color) {\n    setColumnBackground(column, GColor::convertColorToRGB(color));\n}\n\nvoid GTable::setColumnFont(int column, const std::string& font) {\n    checkColumn(\"setColumnFont\", column);\n\n    GThread::runOnQtGuiThread([this, column, font]() {\n        // save this font in the column style (for later cells on resize() etc)\n        ensureColumnStyle(column);\n        _columnStyles[column].font = font;\n\n        // set each cell's font in that column\n        for (int row = 0, nr = numRows(); row < nr; row++) {\n            setCellFontInternal(row, column, font);\n        }\n    });\n}\n\nvoid GTable::setColumnForeground(int column, int rgb) {\n    checkColumn(\"setColumnForeground\", column);\n\n    GThread::runOnQtGuiThread([this, column, rgb]() {\n        // save this foreground color in the column style (for later cells on resize() etc)\n        ensureColumnStyle(column);\n        _columnStyles[column].foreground = rgb;\n\n        // set each cell's foreground color in that column\n        for (int row = 0, nr = numRows(); row < nr; row++) {\n            setCellForegroundInternal(row, column, rgb);\n        }\n    });\n}\n\nvoid GTable::setColumnForeground(int column, const std::string& color) {\n    setColumnForeground(column, GColor::convertColorToRGB(color));\n}\n\nvoid GTable::setColumnHeaderStyle(GTable::ColumnHeaderStyle style) {\n    GThread::runOnQtGuiThread([this, style]() {\n        _columnHeaderStyle = style;\n        if (style == GTable::COLUMN_HEADER_NONE) {\n            // no headers\n            setRowColumnHeadersVisible(false);\n            return;\n        } else {\n            // build list of column names to display\n            updateColumnHeaders();\n            _iqtableview->horizontalHeader()->setVisible(true);\n            _iqtableview->verticalHeader()->setVisible(true);\n        }\n    });\n}\n\nvoid GTable::setColumnWidth(int column, double width) {\n    checkColumn(\"setColumnWidth\", column);\n    if (width < 0) {\n        error(\"GTable::setColumnWidth: width cannot be negative\");\n    }\n    GThread::runOnQtGuiThread([this, column, width]() {\n        _iqtableview->setColumnWidth(column, (int) width);\n    });\n}\n\nvoid GTable::setEditable(bool editable) {\n    GThread::runOnQtGuiThread([this, editable]() {\n        if (editable) {\n            _iqtableview->setEditTriggers(\n                        QAbstractItemView::CurrentChanged\n                        | QAbstractItemView::DoubleClicked\n                        | QAbstractItemView::EditKeyPressed\n                        | QAbstractItemView::AnyKeyPressed);\n        } else {\n            _iqtableview->setEditTriggers(QAbstractItemView::NoEditTriggers);\n        }\n    });\n}\n\nvoid GTable::setEditorValue(int row, int column, const std::string& text) {\n    checkIndex(\"setEditorValue\", row, column);\n    GThread::runOnQtGuiThread([this, text]() {\n        _Internal_QItemDelegate* delegate = _iqtableview->getItemDelegate();\n        if (delegate != nullptr) {\n            QWidget* editor = delegate->getEditor();\n            if (QLineEdit* lineEdit = qobject_cast<QLineEdit*>(editor)) {\n                lineEdit->setText(QString::fromStdString(text));\n            }\n        }\n    });\n}\n\nvoid GTable::setFont(const QFont& font) {\n    setFont(GFont::toFontString(font));\n}\n\nvoid GTable::setFont(const std::string& font) {\n    GInteractor::setFont(font);   // call super\n\n    GThread::runOnQtGuiThread([this, font]() {\n        // save this font in the global cell style (for later cells on resize() etc)\n        ensureDefaultFormatting();\n        _globalCellStyle.font = font;\n\n        // remove fonts from any row/column styles because they are\n        // now overridden by this global font style\n        TableStyle unset = TableStyle::unset();\n        for (int row : _rowStyles) {\n            _rowStyles[row].font = unset.font;\n        }\n        for (int col : _columnStyles) {\n            _columnStyles[col].font = unset.font;\n        }\n\n        // set each cell's foreground color\n        for (int row = 0, nr = numRows(); row < nr; row++) {\n            for (int col = 0, nc = numCols(); col < nc; col++) {\n                setCellFontInternal(row, col, font);\n            }\n        }\n    });\n}\n\nvoid GTable::setForeground(int rgb) {\n    GThread::runOnQtGuiThread([this, rgb]() {\n        // GInteractor::setForeground(rgb);\n        // (don't call super; that will set the FG of the scrollbars and everything)\n\n        // save this foreground color in the global cell style (for later cells on resize() etc)\n        ensureDefaultFormatting();\n        _globalCellStyle.foreground = rgb;\n\n        // remove foreground colors from any row/column styles because they are\n        // now overridden by this global foreground color style\n        TableStyle unset = TableStyle::unset();\n        for (int row : _rowStyles) {\n            _rowStyles[row].foreground = unset.foreground;\n        }\n        for (int col : _columnStyles) {\n            _columnStyles[col].foreground = unset.foreground;\n        }\n\n        // set each cell's foreground color\n        for (int row = 0, nr = numRows(); row < nr; row++) {\n            for (int col = 0, nc = numCols(); col < nc; col++) {\n                setCellForegroundInternal(row, col, rgb);\n            }\n        }\n    });\n}\n\nvoid GTable::setForeground(const std::string& color) {\n    setForeground(GColor::convertColorToRGB(color));\n}\n\nvoid GTable::setHorizontalAlignment(HorizontalAlignment alignment) {\n    GThread::runOnQtGuiThread([this, alignment]() {\n        // save this alignment in the global cell style (for later cells on resize() etc)\n        ensureDefaultFormatting();\n\n        _globalCellStyle.alignment = alignment;\n\n        // remove alignment from any row/column styles because they are\n        // now overridden by this global alignment style\n        TableStyle unset = TableStyle::unset();\n        for (int row : _rowStyles) {\n            _rowStyles[row].alignment = unset.alignment;\n        }\n        for (int col : _columnStyles) {\n            _columnStyles[col].alignment = unset.alignment;\n        }\n\n        // set each cell's horizontal alignment\n        for (int row = 0, nr = numRows(), nc = numCols(); row < nr; row++) {\n            for (int col = 0; col < nc; col++) {\n                setCellAlignmentInternal(row, col, alignment);\n            }\n        }\n    });\n}\n\nvoid GTable::setRowAlignment(int row, HorizontalAlignment alignment) {\n    checkRow(\"setRowAlignment\", row);\n\n    // save this alignment in the row style (for later cells on resize() etc)\n    GThread::runOnQtGuiThread([this, row, alignment]() {\n        ensureRowStyle(row);\n        _rowStyles[row].alignment = alignment;\n\n        // set each cell's alignment in that row\n        for (int col = 0, nc = numCols(); col < nc; col++) {\n            setCellAlignmentInternal(row, col, alignment);\n        }\n    });\n}\n\nvoid GTable::setRowBackground(int row, int rgb) {\n    checkRow(\"setRowBackground\", row);\n\n    // save this background color in the row style (for later cells on resize() etc)\n    GThread::runOnQtGuiThread([this, row, rgb]() {\n        ensureRowStyle(row);\n        _rowStyles[row].background = rgb;\n\n        // set each cell's background color in that row\n        for (int col = 0, nc = numCols(); col < nc; col++) {\n            setCellBackgroundInternal(row, col, rgb);\n        }\n    });\n}\n\nvoid GTable::setRowBackground(int row, const std::string& color) {\n    setRowBackground(row, GColor::convertColorToRGB(color));\n}\n\nvoid GTable::setRowFont(int row, const std::string& font) {\n    checkRow(\"setRowFont\", row);\n\n    // save this font in the row style (for later cells on resize() etc)\n    GThread::runOnQtGuiThread([this, row, font]() {\n        ensureRowStyle(row);\n        _rowStyles[row].font = font;\n\n        // set each cell's font in that row\n        for (int col = 0, nc = numCols(); col < nc; col++) {\n            setCellFontInternal(row, col, font);\n        }\n    });\n}\n\nvoid GTable::setRowForeground(int row, int rgb) {\n    checkRow(\"setRowForeground\", row);\n\n    // save this foreground color in the row style (for later cells on resize() etc)\n    GThread::runOnQtGuiThread([this, row, rgb]() {\n        ensureRowStyle(row);\n        _rowStyles[row].foreground = rgb;\n\n        // set each cell's foreground color in that row\n        for (int col = 0, nc = numCols(); col < nc; col++) {\n            setCellForegroundInternal(row, col, rgb);\n        }\n    });\n}\n\nvoid GTable::setRowForeground(int row, const std::string& color) {\n    checkRow(\"setRowForeground\", row);\n    setRowForeground(row, GColor::convertColorToRGB(color));\n}\n\nvoid GTable::setRowColumnHeadersVisible(bool visible) {\n    GThread::runOnQtGuiThread([this, visible]() {\n        _iqtableview->horizontalHeader()->setVisible(visible);\n        _iqtableview->verticalHeader()->setVisible(visible);\n    });\n}\n\nvoid GTable::setRowHeight(int row, double height) {\n    checkRow(\"setRowHeight\", row);\n    if (height < 0) {\n        error(\"GTable::setRowHeight: height cannot be negative\");\n    }\n    GThread::runOnQtGuiThread([this, row, height]() {\n        _iqtableview->setRowHeight(row, (int) height);\n    });\n}\n\nvoid GTable::setSelectedCellValue(const std::string& text) {\n    if (hasSelectedCell()) {\n        GridLocation loc = getSelectedCell();\n        set(loc.row, loc.col, text);\n    }\n}\n\nvoid GTable::setTableListener(GEventListener func) {\n    setEventListeners({\"table\",\n                       \"tableupdate\",\n                       \"tableselect\",\n                       \"tableeditbegin\",\n                       \"tablereplacebegin\",\n                       \"tablecut\",\n                       \"tablecopy\",\n                       \"tablepaste\"}, func);\n}\n\nvoid GTable::setTableListener(GEventListenerVoid func) {\n    setEventListeners({\"table\",\n                       \"tableupdate\",\n                       \"tableselect\",\n                       \"tableeditbegin\",\n                       \"tablereplacebegin\",\n                       \"tablecut\",\n                       \"tablecopy\",\n                       \"tablepaste\"}, func);\n}\n\nstd::string GTable::toExcelColumnName(int col) {\n    // convert column into a roughly base-26 Excel column name,\n    // e.g. 0 -> \"A\", 1 -> \"B\", 26 -> \"AA\", ...\n    std::string colStr;\n    col = col + 1;   // 1-based\n    while (col-- > 0) {\n        colStr = charToString((char) ('A' + (col % 26))) + colStr;\n        col /= 26;\n    }\n    return colStr;\n}\n\nvoid GTable::updateColumnHeaders() {\n    GThread::runOnQtGuiThread([this]() {\n        if (_columnHeaderStyle == GTable::COLUMN_HEADER_NONE) {\n            return;\n        }\n\n        // Qt wants me to put the headers into a string list, and apparently\n        // you add things to the list using << like it was a ostream (bleh)\n        QStringList columnHeaders;\n        for (int col = 0, nc = numCols(); col < nc; col++) {\n            if (_columnHeaderStyle == GTable::COLUMN_HEADER_EXCEL) {\n                columnHeaders << QString::fromStdString(toExcelColumnName(col));\n            } else {\n                // style == GTable::COLUMN_HEADER_NUMERIC\n                columnHeaders << QString::fromStdString(std::to_string(col));\n            }\n        }\n        _iqtableview->setHorizontalHeaderLabels(columnHeaders);\n    });\n}\n\nint GTable::width() const {\n    return numCols();\n}\n\n\n_Internal_QItemDelegate::_Internal_QItemDelegate(QObject* parent)\n        : QStyledItemDelegate(parent),\n          _editor(nullptr) {\n    // empty\n}\n\nQWidget* _Internal_QItemDelegate::createEditor(QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const {\n    QWidget* editor = QStyledItemDelegate::createEditor(parent, option, index);\n    _Internal_QItemDelegate* hack = (_Internal_QItemDelegate*) this;\n    hack->_editor = editor;\n    return editor;\n}\n\nvoid _Internal_QItemDelegate::destroyEditor(QWidget* editor, const QModelIndex& index) const {\n    _Internal_QItemDelegate* hack = (_Internal_QItemDelegate*) this;\n    hack->_editor = nullptr;\n    QStyledItemDelegate::destroyEditor(editor, index);\n}\n\nQWidget* _Internal_QItemDelegate::getEditor() const {\n    return _editor;\n}\n\n\n_Internal_QTableWidget::_Internal_QTableWidget(GTable* gtable, int rows, int columns, QWidget* parent)\n        : QTableWidget(rows, columns, parent),\n          _gtable(gtable),\n          _delegate(nullptr) {\n    require::nonNull(gtable, \"_Internal_QTableWidget::constructor\");\n    setObjectName(QString::fromStdString(\"_Internal_QTableWidget_\" + std::to_string(gtable->getID())));\n    _delegate = new _Internal_QItemDelegate();\n    setItemDelegate(_delegate);\n    horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);\n    connect(this, SIGNAL(cellChanged(int, int)), this, SLOT(handleCellChange(int, int)));\n    connect(this, SIGNAL(cellDoubleClicked(int, int)), this, SLOT(handleCellDoubleClick(int, int)));\n    connect(this->selectionModel(), SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)), this, SLOT(handleSelectionChange(const QItemSelection&, const QItemSelection&)));\n}\n\nvoid _Internal_QTableWidget::detach() {\n    _gtable = nullptr;\n}\n\nbool _Internal_QTableWidget::edit(const QModelIndex& index, QAbstractItemView::EditTrigger trigger, QEvent* event) {\n    bool result = QAbstractItemView::edit(index, trigger, event);   // call super\n    if (!_gtable) {\n        return result;\n    }\n    if (result) {\n        bool isEdit = _lastKeyPressed == 0 || _lastKeyPressed == Qt::Key_F2 || _lastKeyPressed == Qt::Key_Tab;\n        _lastKeyPressed = 0;\n        if (isEdit) {\n            fireTableEvent(TABLE_EDIT_BEGIN, \"tableeditbegin\", index.row(), index.column());\n        } else {\n            fireTableEvent(TABLE_REPLACE_BEGIN, \"tablereplacebegin\", index.row(), index.column());\n        }\n    }\n    return result;\n}\n\nvoid _Internal_QTableWidget::fireTableEvent(EventType eventType, const std::string& eventName, int row, int col) {\n    if (!_gtable) {\n        return;\n    }\n    GEvent tableEvent(\n                /* class  */ TABLE_EVENT,\n                /* type   */ eventType,\n                /* name   */ eventName,\n                /* source */ _gtable);\n    if (row < 0 && col < 0) {\n        tableEvent.setRowAndColumn(_gtable->getSelectedRow(), _gtable->getSelectedColumn());\n    } else {\n        tableEvent.setRowAndColumn(row, col);\n    }\n    tableEvent.setActionCommand(_gtable->getActionCommand());\n    _gtable->fireEvent(tableEvent);\n}\n\nQWidget* _Internal_QTableWidget::getEditor() const {\n    return _delegate->getEditor();\n}\n\n_Internal_QItemDelegate* _Internal_QTableWidget::getItemDelegate() const {\n    return _delegate;\n}\n\nbool _Internal_QTableWidget::isEditing() const {\n    return getEditor() != nullptr;\n}\n\nvoid _Internal_QTableWidget::closeEditor(QWidget* editor, QAbstractItemDelegate::EndEditHint hint) {\n    QTableWidget::closeEditor(editor, hint);\n    if (!_gtable) {\n        return;\n    }\n    // TODO: doesn't this fire even if the edit is committed?\n    fireTableEvent(TABLE_EDIT_CANCEL, \"tableeditcancel\");\n}\n\nvoid _Internal_QTableWidget::handleCellChange(int row, int column) {\n    if (!_gtable) {\n        return;\n    }\n    fireTableEvent(TABLE_UPDATED, \"tableupdate\", row, column);\n}\n\nvoid _Internal_QTableWidget::handleCellDoubleClick(int /*row*/, int /*column*/) {\n    if (!_gtable) {\n        return;\n    }\n    _lastKeyPressed = Qt::Key_F2;   // pretend we pressed F2\n    // edit/replace begin event will be fired by edit()\n    // fireTableEvent(GEvent::TABLE_EDIT_BEGIN, \"tableeditbegin\", row, column);\n}\n\nvoid _Internal_QTableWidget::handleSelectionChange(const QItemSelection& selected, const QItemSelection& /*deselected*/) {\n    if (!_gtable) {\n        return;\n    }\n    QItemSelectionRange range;\n    if (!selected.empty()) {\n        range = selected.at(0);\n        QPersistentModelIndex index = range.topLeft();\n        fireTableEvent(TABLE_SELECTED, \"tableselect\", index.row(), index.column());\n    }\n}\n\nvoid _Internal_QTableWidget::keyPressEvent(QKeyEvent* event) {\n    require::nonNull(event, \"_Internal_QTableWidget::keyPressEvent\", \"event\");\n    if (!_gtable) {\n        QTableWidget::keyPressEvent(event);   // call super\n        return;\n    }\n    _lastKeyPressed = event->key();\n    bool wasEditing = isEditing();\n    if (!wasEditing && event->key() == Qt::Key_Delete) {\n        // clear data from selected cell\n        if (_gtable->hasSelectedCell()) {\n            GridLocation loc = _gtable->getSelectedCell();\n            _gtable->clearCell(loc.row, loc.col);\n            return;\n        }\n    }\n\n    // any other key\n    if (wasEditing || !_gtable->hasSelectedCell()) {\n        QTableWidget::keyPressEvent(event);   // call super\n        return;\n    }\n\n    bool nowEditing = isEditing();\n\n    if (GClipboard::isCut(event)) {\n        // keyboard \"cut\" command; remove data from cell into clipboard\n        GridLocation loc = _gtable->getSelectedCell();\n        std::string cellValue = _gtable->get(loc.row, loc.col);\n        GClipboard::set(cellValue);\n        _gtable->clearCell(loc.row, loc.col);\n        QTableWidget::keyPressEvent(event);   // call super\n        fireTableEvent(TABLE_CUT, \"tablecut\");\n        return;\n    }\n\n    if (GClipboard::isCopy(event)) {\n        // keyboard \"copy\" command; copy data from cell into clipboard\n        std::string cellValue = _gtable->getSelectedCellValue();\n        GClipboard::set(cellValue);\n        QTableWidget::keyPressEvent(event);   // call super\n        fireTableEvent(TABLE_COPY, \"tablecopy\");\n        return;\n    }\n\n    if (GClipboard::isPaste(event)) {\n        // keyboard \"paste\" command; copy data from clipboard into cell\n        std::string cellValue = GClipboard::get();\n        _gtable->setSelectedCellValue(cellValue);\n        QTableWidget::keyPressEvent(event);   // call super\n        fireTableEvent(TABLE_PASTE, \"tablepaste\");\n        return;\n    }\n\n    // if cell went from non-editing state to editing state, edit has begun\n    if (nowEditing) {\n        if (event->key() == Qt::Key_F2) {\n            // F2 key begins editing existing value for a cell\n            // edit_begin will be fired by edit() method\n            // fireTableEvent(GEvent::TABLE_EDIT_BEGIN, \"tableeditbegin\");\n        } else if (event->key() == Qt::Key_Tab) {\n            // Tab key jumps to edit the neighboring cell\n        } else {\n            // any other text starts replacing the value with a new value\n            // replace_begin will be fired by edit() method\n            // fireTableEvent(GEvent::TABLE_REPLACE_BEGIN, \"tablereplacebegin\");\n        }\n    }\n    QTableWidget::keyPressEvent(event);   // call super\n}\n\nQSize _Internal_QTableWidget::sizeHint() const {\n    if (hasPreferredSize()) {\n        return getPreferredSize();\n    } else {\n        return QTableWidget::sizeHint();\n    }\n}\n\n#ifdef SPL_PRECOMPILE_QT_MOC_FILES\n#define INTERNAL_INCLUDE 1\n#include \"moc_gtable.cpp\"   // speeds up compilation of auto-generated Qt files\n#undef INTERNAL_INCLUDE\n#endif // SPL_PRECOMPILE_QT_MOC_FILES\n\n/*\n * File: gcolorchooser.cpp\n * -----------------------\n * This file implements the operations declared in the gfilechooser.h file.\n * See gfilechooser.h for documentation of each member.\n * \n * @author Marty Stepp\n * @version 2018/09/07\n * - added overloads that accept GWindow* parent\n * @version 2018/08/23\n * - renamed to gcolorchooser.cpp to replace Java version\n * @version 2018/07/29\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"gcolorchooser.h\"\n#include <QColorDialog>\n#define INTERNAL_INCLUDE 1\n#include \"gcolor.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gthread.h\"\n#undef INTERNAL_INCLUDE\n\nGColorChooser::GColorChooser() {\n    // empty\n}\n\nstd::string GColorChooser::showDialog(const std::string& title, int initialColor) {\n    return showDialog(/* parent */ (QWidget*) nullptr, title, initialColor);\n}\n\nstd::string GColorChooser::showDialog(GWindow* parent, const std::string& title, int initialColor) {\n    return showDialog(parent ? parent->getWidget() : nullptr, title, GColor::convertRGBToColor(initialColor));\n}\n\nstd::string GColorChooser::showDialog(QWidget* parent, const std::string& title, int initialColor) {\n    return showDialog(parent, title, GColor::convertRGBToColor(initialColor));\n}\n\nstd::string GColorChooser::showDialog(const std::string& title, const std::string& initialColor) {\n    return showDialog(/* parent */ (QWidget*) nullptr, title, initialColor);\n}\n\nstd::string GColorChooser::showDialog(GWindow* parent, const std::string& title, const std::string& initialColor) {\n    return showDialog(parent ? parent->getWidget() : nullptr, title, initialColor);\n}\n\nstd::string GColorChooser::showDialog(QWidget* parent, const std::string& title, const std::string& initialColor) {\n    QColor initialQColor = initialColor.empty() ? Qt::white : GColor::toQColor(initialColor);\n    std::string result = \"\";\n    GThread::runOnQtGuiThread([parent, title, initialQColor, &result]() {\n        QColor selectedColor = QColorDialog::getColor(initialQColor, parent, QString::fromStdString(title));\n        if (selectedColor.isValid()) {\n            result = GColor::convertQColorToColor(selectedColor);\n        }\n    });\n    return result;\n}\n\n/*\n * File: gtextarea.cpp\n * -------------------\n *\n * @author Marty Stepp\n * @version 2019/04/23\n * - moved some event listener code to GInteractor superclass\n * @version 2019/02/02\n * - destructor now stops event processing\n * @version 2018/08/23\n * - renamed to gtextarea.cpp to replace Java version\n * @version 2018/06/25\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"gtextarea.h\"\n#include <QScrollBar>\n#include <QTextCursor>\n#define INTERNAL_INCLUDE 1\n#include \"gcolor.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gfont.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gthread.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gwindow.h\"\n#define INTERNAL_INCLUDE 1\n#include \"require.h\"\n#undef INTERNAL_INCLUDE\n\nGTextArea::GTextArea(int rows, int columns, QWidget* parent)\n        : _contextMenuEnabled(true) {\n    GThread::runOnQtGuiThread([this, parent]() {\n        _iqtextedit = new _Internal_QTextEdit(this, getInternalParent(parent));\n    });\n    setRowsColumns(rows, columns);\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGTextArea::GTextArea(const std::string& text, QWidget* parent)\n        : _contextMenuEnabled(true) {\n    GThread::runOnQtGuiThread([this, parent]() {\n        _iqtextedit = new _Internal_QTextEdit(this, getInternalParent(parent));\n    });\n    setText(text);\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGTextArea::~GTextArea() {\n    // TODO: delete _iqtextedit;\n    _iqtextedit->detach();\n    _iqtextedit = nullptr;\n}\n\nvoid GTextArea::appendFormattedText(const std::string& text, const std::string& color, const std::string& font) {\n    moveCursorToEnd();\n\n    // create a formatted block with the font and color\n    QTextCharFormat format;\n    if (!color.empty()) {\n        format.setForeground(QBrush(GColor::convertColorToRGB(color)));\n    }\n    if (!font.empty()) {\n        // carry over only the font's weight, not size/face\n        QFont qfont = GFont::toQFont(_iqtextedit->font(), font);\n        format.setFontWeight(qfont.weight());\n    }\n\n    QTextCursor cursor = _iqtextedit->textCursor();\n    cursor.beginEditBlock();\n    cursor.movePosition(QTextCursor::End, QTextCursor::MoveAnchor, 1);\n    cursor.insertText(QString::fromStdString(text), format);\n    cursor.endEditBlock();\n    GThread::runOnQtGuiThread([this, cursor]() {\n        _iqtextedit->setTextCursor(cursor);\n        _iqtextedit->ensureCursorVisible();\n    });\n\n    moveCursorToEnd();\n}\n\nvoid GTextArea::appendHtml(const std::string& html) {\n    // TODO: use insertHtml for speed?\n    setHtml(getHtml() + html);\n}\n\nvoid GTextArea::appendText(const std::string& text) {\n    QTextCursor cursor = _iqtextedit->textCursor();\n    cursor.movePosition(QTextCursor::End, QTextCursor::MoveAnchor, 1);\n    cursor.insertText(QString::fromStdString(text));\n    moveCursorToEnd();\n}\n\nvoid GTextArea::clearSelection() {\n    GThread::runOnQtGuiThread([this]() {\n        QTextCursor cursor = _iqtextedit->textCursor();\n        cursor.clearSelection();\n        _iqtextedit->setTextCursor(cursor);\n    });\n}\n\nvoid GTextArea::clearText() {\n    GThread::runOnQtGuiThread([this]() {\n        _iqtextedit->clear();\n    });\n}\n\nint GTextArea::getColumns() const {\n    return (int) (getHeight() / getRowColumnSize().getWidth());\n}\n\nint GTextArea::getCursorPosition() const {\n    return _iqtextedit->textCursor().position();\n}\n\nstd::string GTextArea::getHtml() const {\n    return _iqtextedit->toHtml().toStdString();\n}\n\n_Internal_QWidget* GTextArea::getInternalWidget() const {\n    return _iqtextedit;\n}\n\nstd::string GTextArea::getPlaceholder() const {\n    return _iqtextedit->placeholderText().toStdString();\n}\n\nGDimension GTextArea::getRowColumnSize() const {\n    QFontMetrics metrics(_iqtextedit->font());\n    return GDimension(metrics.width(QString::fromStdString(\"mmmmmmmmmm\")) / 10.0, metrics.lineSpacing() + 2);\n}\n\nint GTextArea::getRows() const {\n    return (int) (getHeight() / getRowColumnSize().getHeight());\n}\n\nstd::string GTextArea::getSelectedText() const {\n    QTextCursor cursor = _iqtextedit->textCursor();\n    int start = cursor.selectionStart();\n    int end = cursor.selectionEnd();\n    if (end > start) {\n        return getText().substr(start, end - start);\n    } else {\n        return \"\";\n    }\n}\n\nint GTextArea::getSelectionEnd() const {\n    QTextCursor cursor = _iqtextedit->textCursor();\n    int start = cursor.selectionStart();\n    int end = cursor.selectionEnd();\n    if (end > start) {\n        return end;\n    } else {\n        // no selection; cursor sets selection start/end to be equal\n        return -1;\n    }\n}\n\nint GTextArea::getSelectionLength() const {\n    QTextCursor cursor = _iqtextedit->textCursor();\n    int start = cursor.selectionStart();\n    int end = cursor.selectionEnd();\n    return end - start;\n}\n\nint GTextArea::getSelectionStart() const {\n    QTextCursor cursor = _iqtextedit->textCursor();\n    int start = cursor.selectionStart();\n    int end = cursor.selectionEnd();\n    if (end > start) {\n        return start;\n    } else {\n        return -1;\n    }\n}\n\nstd::string GTextArea::getText() const {\n    return _iqtextedit->toPlainText().toStdString();\n}\n\nstd::string GTextArea::getType() const {\n    return \"GTextArea\";\n}\n\nQWidget* GTextArea::getWidget() const {\n    return static_cast<QWidget*>(_iqtextedit);\n}\n\nbool GTextArea::isContextMenuEnabled() const {\n    return _contextMenuEnabled;\n}\n\nbool GTextArea::isEditable() const {\n    return !_iqtextedit->isReadOnly();\n}\n\nbool GTextArea::isLineWrap() const {\n    return _iqtextedit->lineWrapMode() != QTextEdit::NoWrap;\n}\n\nvoid GTextArea::moveCursorToEnd() {\n    GThread::runOnQtGuiThread([this]() {\n        QTextCursor cursor = _iqtextedit->textCursor();\n        cursor.movePosition(QTextCursor::End, QTextCursor::MoveAnchor, 1);\n        _iqtextedit->setTextCursor(cursor);\n        _iqtextedit->ensureCursorVisible();\n    });\n}\n\nvoid GTextArea::moveCursorToStart() {\n    GThread::runOnQtGuiThread([this]() {\n        QTextCursor cursor = _iqtextedit->textCursor();\n        cursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor, 1);\n        _iqtextedit->setTextCursor(cursor);\n        _iqtextedit->ensureCursorVisible();\n    });\n}\n\nvoid GTextArea::removeTextChangeListener() {\n    removeEventListener(\"textchange\");\n}\n\nvoid GTextArea::scrollToBottom() {\n    GThread::runOnQtGuiThread([this]() {\n        QScrollBar* scrollbar = _iqtextedit->verticalScrollBar();\n        scrollbar->setValue(scrollbar->maximum());\n        scrollbar->setSliderPosition(scrollbar->maximum());\n    });\n}\n\nvoid GTextArea::scrollToTop() {\n    GThread::runOnQtGuiThread([this]() {\n        QScrollBar* scrollbar = _iqtextedit->verticalScrollBar();\n        scrollbar->setValue(0);\n        scrollbar->setSliderPosition(0);\n    });\n}\n\nvoid GTextArea::select(int startIndex, int length) {\n    require::nonNegative(startIndex, 0, \"GTextArea::select\", \"startIndex\");\n    require::nonNegative(length, 0, \"GTextArea::select\", \"length\");\n    GThread::runOnQtGuiThread([this, startIndex, length]() {\n        QTextCursor cursor = _iqtextedit->textCursor();\n        cursor.setPosition(startIndex);\n        cursor.movePosition(QTextCursor::Right, QTextCursor::KeepAnchor, length);\n        _iqtextedit->setTextCursor(cursor);\n    });\n}\n\nvoid GTextArea::selectAll() {\n    GThread::runOnQtGuiThread([this]() {\n        _iqtextedit->selectAll();\n    });\n}\n\nvoid GTextArea::setColumns(int columns) {\n    require::nonNegative(columns, \"GTextArea::setColumns\");\n    double desiredWidth = getRowColumnSize().getWidth() * columns;\n    setPreferredSize(desiredWidth, getHeight());\n    setSize(desiredWidth, getHeight());\n}\n\nvoid GTextArea::setContextMenuEnabled(bool enabled) {\n    _contextMenuEnabled = enabled;\n}\n\nvoid GTextArea::setCursorPosition(int index, bool keepAnchor) {\n    require::nonNegative(index, \"TextArea::setCursorPosition\", \"index\");\n    GThread::runOnQtGuiThread([this, index, keepAnchor]() {\n        QTextCursor cursor(_iqtextedit->textCursor());\n        cursor.setPosition(index, keepAnchor ? QTextCursor::KeepAnchor : QTextCursor::MoveAnchor);\n        _iqtextedit->setTextCursor(cursor);\n        _iqtextedit->ensureCursorVisible();\n    });\n}\n\nvoid GTextArea::setEditable(bool value) {\n    GThread::runOnQtGuiThread([this, value]() {\n        _iqtextedit->setReadOnly(!value);\n    });\n}\n\nvoid GTextArea::setHtml(const std::string& html) {\n    GThread::runOnQtGuiThread([this, html]() {\n        _iqtextedit->setHtml(QString::fromStdString(html));\n    });\n}\n\nvoid GTextArea::setLineWrap(bool wrap) {\n    GThread::runOnQtGuiThread([this, wrap]() {\n        _iqtextedit->setLineWrapMode(wrap ? QTextEdit::WidgetWidth : QTextEdit::NoWrap);\n    });\n}\n\nvoid GTextArea::setMouseListener(GEventListener func) {\n    setEventListeners({\"mousepress\",\n                       \"mouserelease\"}, func);\n}\n\nvoid GTextArea::setMouseListener(GEventListenerVoid func) {\n    setEventListeners({\"mousepress\",\n                       \"mouserelease\"}, func);\n}\n\nvoid GTextArea::setPlaceholder(const std::string& text) {\n    GThread::runOnQtGuiThread([this, text]() {\n        _iqtextedit->setPlaceholderText(QString::fromStdString(text));\n    });\n}\n\nvoid GTextArea::setRows(int rows) {\n    require::nonNegative(rows, \"GTextArea::setRows\");\n    double desiredHeight = getRowColumnSize().getHeight() * rows;\n    setPreferredSize(getWidth(), desiredHeight);\n    setSize(getWidth(), desiredHeight);\n}\n\nvoid GTextArea::setRowsColumns(int rows, int columns) {\n    require::nonNegative2D(rows, columns, \"GTextArea::setRowsColumns\", \"rows\", \"columns\");\n    double desiredWidth = getRowColumnSize().getWidth() * columns;\n    double desiredHeight = getRowColumnSize().getHeight() * rows;\n    setPreferredSize(desiredWidth, desiredHeight);\n    setSize(desiredWidth, desiredHeight);\n}\n\nvoid GTextArea::setText(const std::string& text) {\n    GThread::runOnQtGuiThread([this, text]() {\n        _iqtextedit->setText(QString::fromStdString(text));\n    });\n}\n\nvoid GTextArea::setTextChangeListener(GEventListener func) {\n    setEventListener(\"textchange\", func);\n}\n\nvoid GTextArea::setTextChangeListener(GEventListenerVoid func) {\n    setEventListener(\"textchange\", func);\n}\n\n\n_Internal_QTextEdit::_Internal_QTextEdit(GTextArea* gtextArea, QWidget* parent)\n        : QTextEdit(parent),\n          _gtextarea(gtextArea) {\n    require::nonNull(gtextArea, \"_Internal_QTextEdit::constructor\");\n    setObjectName(QString::fromStdString(\"_Internal_QTextEdit_\" + std::to_string(gtextArea->getID())));\n    ensureCursorVisible();\n    setFocusPolicy(Qt::StrongFocus);\n    setTabChangesFocus(false);\n    document()->setUndoRedoEnabled(false);\n    connect(this, SIGNAL(textChanged()), this, SLOT(handleTextChange()));\n    connect(this->verticalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(handleScroll(int)));\n}\n\nvoid _Internal_QTextEdit::contextMenuEvent(QContextMenuEvent* event) {\n    if (!_gtextarea) {\n        QTextEdit::contextMenuEvent(event);   // call super\n        return;\n    }\n    if (_gtextarea->isContextMenuEnabled()) {\n        event->accept();\n    } else {\n        event->ignore();\n    }\n}\n\nvoid _Internal_QTextEdit::detach() {\n    _gtextarea = nullptr;\n}\n\nvoid _Internal_QTextEdit::handleScroll(int value) {\n    if (_gtextarea && _gtextarea->isAcceptingEvent(\"scroll\")) {\n        GEvent scrollEvent(\n                    /* class  */ SCROLL_EVENT,\n                    /* type   */ SCROLL_SCROLLED,\n                    /* name   */ \"scroll\",\n                    /* source */ _gtextarea);\n        scrollEvent.setActionCommand(_gtextarea->getActionCommand());\n        scrollEvent.setY(value);   // approximate\n        _gtextarea->fireEvent(scrollEvent);\n    }\n}\n\nvoid _Internal_QTextEdit::handleTextChange() {\n    if (_gtextarea && _gtextarea->isAcceptingEvent(\"textchange\")) {\n        GEvent textChangeEvent(\n                    /* class  */ KEY_EVENT,\n                    /* type   */ KEY_TYPED,\n                    /* name   */ \"textchange\",\n                    /* source */ _gtextarea);\n        textChangeEvent.setActionCommand(_gtextarea->getActionCommand());\n        _gtextarea->fireEvent(textChangeEvent);\n    }\n}\n\nvoid _Internal_QTextEdit::keyPressEvent(QKeyEvent* event) {\n    require::nonNull(event, \"_Internal_QTextEdit::keyPressEvent\", \"event\");\n    if (_gtextarea && _gtextarea->isAcceptingEvent(\"keypress\")) {\n        event->accept();\n        _gtextarea->fireGEvent(event, KEY_PRESSED, \"keypress\");\n        if (event->isAccepted()) {\n            QTextEdit::keyPressEvent(event);   // call super\n        }\n    } else {\n        QTextEdit::keyPressEvent(event);   // call super\n    }\n}\n\nvoid _Internal_QTextEdit::keyReleaseEvent(QKeyEvent* event) {\n    require::nonNull(event, \"_Internal_QTextEdit::keyReleaseEvent\", \"event\");\n    if (_gtextarea && _gtextarea->isAcceptingEvent(\"keyrelease\")) {\n        event->accept();\n        _gtextarea->fireGEvent(event, KEY_RELEASED, \"keyrelease\");\n        if (event->isAccepted()) {\n            QTextEdit::keyReleaseEvent(event);   // call super\n        }\n    } else {\n        QTextEdit::keyReleaseEvent(event);   // call super\n    }\n}\n\nvoid _Internal_QTextEdit::mousePressEvent(QMouseEvent* event) {\n    require::nonNull(event, \"_Internal_QTextEdit::mousePressEvent\", \"event\");\n    if (_gtextarea && _gtextarea->isAcceptingEvent(\"mousepress\")) {\n        event->accept();\n        _gtextarea->fireGEvent(event, MOUSE_PRESSED, \"mousepress\");\n        if (event->isAccepted()) {\n            QTextEdit::mousePressEvent(event);   // call super\n        }\n    } else {\n        QTextEdit::mousePressEvent(event);   // call super\n    }\n}\n\nvoid _Internal_QTextEdit::mouseReleaseEvent(QMouseEvent* event) {\n    require::nonNull(event, \"_Internal_QTextEdit::mouseReleaseEvent\", \"event\");\n    if (_gtextarea && _gtextarea->isAcceptingEvent(\"mouserelease\")) {\n        event->accept();\n        _gtextarea->fireGEvent(event, MOUSE_RELEASED, \"mouserelease\");\n        if (event->isAccepted()) {\n            QTextEdit::mouseReleaseEvent(event);   // call super\n        }\n    } else {\n        QTextEdit::mouseReleaseEvent(event);   // call super\n    }\n}\n\nQSize _Internal_QTextEdit::sizeHint() const {\n    if (hasPreferredSize()) {\n        return getPreferredSize();\n    } else {\n        return QTextEdit::sizeHint();\n    }\n}\n\n#ifdef SPL_PRECOMPILE_QT_MOC_FILES\n#define INTERNAL_INCLUDE 1\n#include \"moc_gtextarea.cpp\"   // speeds up compilation of auto-generated Qt files\n#undef INTERNAL_INCLUDE\n#endif // SPL_PRECOMPILE_QT_MOC_FILES\n\n/*\n * File: gscrollpane.cpp\n * ---------------------\n *\n * @author Marty Stepp\n * @version 2018/09/01\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"gscrollpane.h\"\n#define INTERNAL_INCLUDE 1\n#include \"glayout.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gthread.h\"\n#define INTERNAL_INCLUDE 1\n#include \"require.h\"\n#undef INTERNAL_INCLUDE\n\nGScrollPane::GScrollPane(GInteractor* interactor, QWidget* parent)\n        : _iqscrollarea(nullptr),\n          _interactor(interactor),\n          _horizontalScrollBarPolicy(GScrollPane::SCROLLBAR_AS_NEEDED),\n          _verticalScrollBarPolicy(GScrollPane::SCROLLBAR_AS_NEEDED) {\n    require::nonNull(interactor, \"GScrollPane::constructor\", \"interactor\");\n    GThread::runOnQtGuiThread([this, interactor, parent]() {\n        _iqscrollarea = new _Internal_QScrollArea(this, getInternalParent(parent));\n        _iqscrollarea->setWidget(interactor->getWidget());\n    });\n    setInteractorStretch(true);\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGScrollPane::~GScrollPane() {\n    // TODO: delete _iqscrollarea;\n    _iqscrollarea->detach();\n    _iqscrollarea = nullptr;\n}\n\nGScrollPane::ScrollBarPolicy GScrollPane::getHorizontalScrollBarPolicy() const {\n    return _horizontalScrollBarPolicy;\n}\n\nGInteractor* GScrollPane::getInteractor() const {\n    return _interactor;\n}\n\n_Internal_QWidget* GScrollPane::getInternalWidget() const {\n    return _iqscrollarea;\n}\n\nstd::string GScrollPane::getType() const {\n    return \"GScrollPane\";\n}\n\nGScrollPane::ScrollBarPolicy GScrollPane::getVerticalScrollBarPolicy() const {\n    return _verticalScrollBarPolicy;\n}\n\nQWidget* GScrollPane::getWidget() const {\n    return static_cast<QWidget*>(_iqscrollarea);\n}\n\nbool GScrollPane::isInteractorStretch() const {\n    return _iqscrollarea->widgetResizable();\n}\n\nvoid GScrollPane::setHorizontalScrollBarPolicy(ScrollBarPolicy policy) {\n    GThread::runOnQtGuiThread([this, policy]() {\n        Qt::ScrollBarPolicy qtScrollBarPolicy = toQtScrollBarPolicy(policy);\n        _iqscrollarea->setHorizontalScrollBarPolicy(qtScrollBarPolicy);\n    });\n}\n\nvoid GScrollPane::setInteractorStretch(bool stretch) {\n    GThread::runOnQtGuiThread([this, stretch]() {\n        _iqscrollarea->setWidgetResizable(stretch);\n        GLayout::forceUpdate(_iqscrollarea);\n    });\n}\n\nvoid GScrollPane::setScrollBarPolicy(ScrollBarPolicy policy) {\n    setHorizontalScrollBarPolicy(policy);\n    setVerticalScrollBarPolicy(policy);\n}\n\nvoid GScrollPane::setVerticalScrollBarPolicy(ScrollBarPolicy policy) {\n    GThread::runOnQtGuiThread([this, policy]() {\n        Qt::ScrollBarPolicy qtScrollBarPolicy = toQtScrollBarPolicy(policy);\n        _iqscrollarea->setVerticalScrollBarPolicy(qtScrollBarPolicy);\n    });\n}\n\nQt::ScrollBarPolicy GScrollPane::toQtScrollBarPolicy(ScrollBarPolicy policy) {\n    switch (policy) {\n        case GScrollPane::SCROLLBAR_ALWAYS:\n            return Qt::ScrollBarAlwaysOn;\n        case GScrollPane::SCROLLBAR_NEVER:\n            return Qt::ScrollBarAlwaysOff;\n        case GScrollPane::SCROLLBAR_AS_NEEDED:\n        default:\n            return Qt::ScrollBarAsNeeded;\n    }\n}\n\n\n_Internal_QScrollArea::_Internal_QScrollArea(GScrollPane* gscrollpane, QWidget* parent)\n        : QScrollArea(parent)\n          /*_gscrollpane(gscrollpane)*/ {\n    require::nonNull(gscrollpane, \"_Internal_QScrollArea::constructor\");\n    setObjectName(QString::fromStdString(\"_Internal_QScrollArea_\" + std::to_string(gscrollpane->getID())));\n}\n\nQSize _Internal_QScrollArea::sizeHint() const {\n    if (hasPreferredSize()) {\n        return getPreferredSize();\n    } else {\n        return QScrollArea::sizeHint();\n    }\n}\n\n#ifdef SPL_PRECOMPILE_QT_MOC_FILES\n#define INTERNAL_INCLUDE 1\n#include \"moc_gscrollpane.cpp\"   // speeds up compilation of auto-generated Qt files\n#undef INTERNAL_INCLUDE\n#endif // SPL_PRECOMPILE_QT_MOC_FILES\n\n/*\n * File: gdownloader.cpp\n * ---------------------\n * This file implements the GDownloader class as declared in gdownloader.h.\n * See the .h file for the declarations of each member and comments.\n *\n * @author Marty Stepp\n * @version 2018/09/23\n * - added macro checks to improve compatibility with old Qt versions\n * @version 2018/09/18\n * - working version; had to fix various threading / Qt signal issues\n * @version 2018/08/23\n * - renamed to gdownloader.cpp to replace Java version\n * @version 2018/08/03\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"gdownloader.h\"\n#include <iomanip>\n#include <iostream>\n#include <QtGlobal>\n#include <QFile>\n#include <QIODevice>\n#include <QTimer>\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gthread.h\"\n#undef INTERNAL_INCLUDE\n\nGDownloader::GDownloader()\n        : _manager(nullptr),\n          _reply(nullptr),\n          _httpStatusCode(0),\n          _downloadComplete(false) {\n}\n\nGDownloader::~GDownloader() {\n    // TODO: delete\n    _manager = nullptr;\n    _reply = nullptr;\n}\n\nstd::string GDownloader::downloadAsString(const std::string& url) {\n    _url = url;\n    _filename = \"\";\n    _httpStatusCode = 0;\n    _lastErrorMessage = \"\";\n\n    // actually download the file (block/wait for it to finish)\n    downloadInternal();\n\n    // save download to string\n    saveDownloadedData(\"downloadAsString\");\n\n    // return downloaded text as string (saved in member variable)\n    return _filedata;\n}\n\nvoid GDownloader::downloadToFile(const std::string& url, const std::string& file) {\n    _url = url;\n    _filename = file;\n    _httpStatusCode = 0;\n    _lastErrorMessage = \"\";\n\n    // actually download the file (block/wait for it to finish)\n    downloadInternal();\n\n    // save download to file\n    saveDownloadedData(\"downloadToFile\", file);\n}\n\nvoid GDownloader::downloadInternal() {\n    GThread::runOnQtGuiThreadAsync([this]() {\n        if (!_manager) {\n            _manager = new QNetworkAccessManager();\n            // disabling Qt signal-handling because it doesn't seem to work at all\n            // connect(_manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(fileDownloaded(QNetworkReply*)));\n        }\n        QNetworkRequest* request = new QNetworkRequest(QUrl(QString::fromStdString(_url)));\n\n        // set up SSL / HTTPS settings, if possible\n#if QT_VERSION >= QT_VERSION_CHECK(5, 9, 0)\n#if QT_CONFIG(ssl)\n        request->setSslConfiguration(QSslConfiguration::defaultConfiguration());\n#endif // QT_CONFIG(ssl)\n#endif // QT_VERSION\n\n        for (std::string headerKey : _headers) {\n            request->setRawHeader(QByteArray(headerKey.c_str()), QByteArray(_headers[headerKey].c_str()));\n        }\n\n        _reply = _manager->get(*request);\n\n        // disabling Qt signal-handling because it doesn't seem to work at all\n        // _reply->connect(\n        //         _reply, SIGNAL(finished()),\n        //         this, SLOT(fileDownloadFinished()));\n\n        // this seemingly won't be called ever (thanks, useless Qt networking tutorials!)\n        _reply->connect(\n                _reply, SIGNAL(error(QNetworkReply::NetworkError)),\n                this, SLOT(fileDownloadError(QNetworkReply::NetworkError)));\n\n#if QT_VERSION >= QT_VERSION_CHECK(5, 9, 0)\n#if QT_CONFIG(ssl)\n        _reply->connect(\n                _reply, SIGNAL(sslErrors(QList<QSslError>)),\n                this, SLOT(sslErrors(QList<QSslError>)));\n#endif // QT_CONFIG(ssl)\n#endif // QT_VERSION\n    });\n\n    // wait for download to finish (in student thread)\n    waitForDownload();\n}\n\nvoid GDownloader::fileDownloadError(QNetworkReply::NetworkError nerror) {\n    error(\"file download error: \" + std::to_string(nerror));\n}\n\nstd::string GDownloader::getErrorMessage() const {\n    return _lastErrorMessage;\n}\n\nint GDownloader::getHttpStatusCode() const {\n    // all HTTP status codes are between 1xx and 5xx, inclusive\n    return _httpStatusCode >= 100 && _httpStatusCode <= 599 ? _httpStatusCode : 0;\n}\n\nstd::string GDownloader::getHeader(const std::string& name) const {\n    return _headers[name];\n}\n\nstd::string GDownloader::getUserAgent() const {\n    if (_headers.containsKey(\"User-Agent\")) {\n        return _headers[\"User-Agent\"];\n    } else {\n        return \"\";\n    }\n}\n\nbool GDownloader::hasError() const {\n    if (_httpStatusCode != 0) {\n        // values 2xx indicate success\n        return _httpStatusCode < 200 || _httpStatusCode > 299;\n    } else {\n        return _lastErrorMessage.empty();\n    }\n}\n\nstd::string GDownloader::qtNetworkErrorToString(QNetworkReply::NetworkError nerror) {\n    // http://doc.qt.io/qt-5/qnetworkreply.html#NetworkError-enum\n    switch (nerror) {\n    case QNetworkReply::ConnectionRefusedError: return \"the remote server refused the connection (the server is not accepting requests)\";\n    case QNetworkReply::RemoteHostClosedError: return \"the remote server closed the connection prematurely, before the entire reply was received and processed\";\n    case QNetworkReply::HostNotFoundError: return \"the remote host name was not found (invalid hostname)\";\n    case QNetworkReply::TimeoutError: return \"the connection to the remote server timed out\";\n    case QNetworkReply::OperationCanceledError: return \"the operation was canceled via calls to abort() or close() before it was finished.\";\n    case QNetworkReply::SslHandshakeFailedError: return \"the SSL/TLS handshake failed and the encrypted channel could not be established. The sslErrors() signal should have been emitted.\";\n    case QNetworkReply::TemporaryNetworkFailureError: return \"the connection was broken due to disconnection from the network, however the system has initiated roaming to another access point. The request should be resubmitted and will be processed as soon as the connection is re-established.\";\n    case QNetworkReply::NetworkSessionFailedError: return \"the connection was broken due to disconnection from the network or failure to start the network.\";\n    case QNetworkReply::BackgroundRequestNotAllowedError: return \"the background request is not currently allowed due to platform policy.\";\n#if QT_VERSION >= QT_VERSION_CHECK(5, 9, 0)\n    case QNetworkReply::TooManyRedirectsError: return \"while following redirects, the maximum limit was reached. The limit is by default set to 50 or as set by QNetworkRequest::setMaxRedirectsAllowed(). (This value was introduced in 5.6.)\";\n    case QNetworkReply::InsecureRedirectError: return \"while following redirects, the network access API detected a redirect from a encrypted protocol (https) to an unencrypted one (http). (This value was introduced in 5.6.)\";\n#endif // QT_VERSION\n    case QNetworkReply::ProxyConnectionRefusedError: return \"the connection to the proxy server was refused (the proxy server is not accepting requests)\";\n    case QNetworkReply::ProxyConnectionClosedError: return \"the proxy server closed the connection prematurely, before the entire reply was received and processed\";\n    case QNetworkReply::ProxyNotFoundError: return \"the proxy host name was not found (invalid proxy hostname)\";\n    case QNetworkReply::ProxyTimeoutError: return \"the connection to the proxy timed out or the proxy did not reply in time to the request sent\";\n    case QNetworkReply::ProxyAuthenticationRequiredError: return \"the proxy requires authentication in order to honour the request but did not accept any credentials offered (if any)\";\n    case QNetworkReply::ContentAccessDenied: return \"access denied\";\n    case QNetworkReply::ContentOperationNotPermittedError: return \"the operation requested on the remote content is not permitted\";\n    case QNetworkReply::ContentNotFoundError: return \"the remote content was not found at the server\";\n    case QNetworkReply::AuthenticationRequiredError: return \"the remote server requires authentication to serve the content but the credentials provided were not accepted (if any)\";\n    case QNetworkReply::ContentReSendError: return \"the request needed to be sent again, but this failed for example because the upload data could not be read a second time.\";\n    case QNetworkReply::ContentConflictError: return \"the request could not be completed due to a conflict with the current state of the resource.\";\n    case QNetworkReply::ContentGoneError: return \"the requested resource is no longer available at the server.\";\n    case QNetworkReply::InternalServerError: return \"the server encountered an unexpected condition which prevented it from fulfilling the request.\";\n    case QNetworkReply::OperationNotImplementedError: return \"the server does not support the functionality required to fulfill the request.\";\n    case QNetworkReply::ServiceUnavailableError: return \"the server is unable to handle the request at this time.\";\n    case QNetworkReply::ProtocolUnknownError: return \"the Network Access API cannot honor the request because the protocol is not known\";\n    case QNetworkReply::ProtocolInvalidOperationError: return \"the requested operation is invalid for this protocol\";\n    case QNetworkReply::UnknownNetworkError: return \"an unknown network-related error was detected\";\n    case QNetworkReply::UnknownProxyError: return \"an unknown proxy-related error was detected\";\n    case QNetworkReply::UnknownContentError: return \"an unknown error related to the remote content was detected\";\n    case QNetworkReply::ProtocolFailure: return \"a breakdown in protocol was detected (parsing error, invalid or unexpected responses, etc.)\";\n    case QNetworkReply::UnknownServerError: return \"unknown server error\";\n    case QNetworkReply::NoError:\n        break;\n    }\n    return \"\";\n}\n\nvoid GDownloader::saveDownloadedData(const std::string& member, const std::string& filename) {\n    if (_reply) {\n        QNetworkReply::NetworkError nerror = _reply->error();\n        if (nerror) {\n            // connection failed; log the error message\n            _lastErrorMessage = qtNetworkErrorToString(nerror);\n        } else if (filename.empty()) {\n            // save to a string\n#if QT_VERSION >= QT_VERSION_CHECK(5, 9, 0)\n            _filedata = _reply->readAll().toStdString();\n#endif // QT_VERSION\n        } else {\n            // save to a file\n            QFile outfile(QString::fromStdString(filename));\n            if (!outfile.open(QIODevice::WriteOnly)) {\n                error(\"GDownloader::\" + member + \": cannot open file \" + filename + \" for writing\");\n            }\n            outfile.write(_reply->readAll());\n            outfile.close();\n        }\n\n        // clean up the connection\n        _reply->deleteLater();\n        _reply = nullptr;\n        _downloadComplete = true;\n    }\n}\n\nvoid GDownloader::setHeader(const std::string& name, const std::string& value) {\n    _headers[name] = value;\n}\n\nvoid GDownloader::setUserAgent(const std::string& userAgent) {\n    setHeader(\"User-Agent\", userAgent);\n}\n\nvoid GDownloader::sslErrors(QList<QSslError>) {\n    std::cout << \"  DEBUG: sslErrors\" << std::endl;\n}\n\nvoid GDownloader::waitForDownload() {\n    // wait for download to finish\n    while (!_downloadComplete) {\n        GThread::getCurrentThread()->sleep(10);\n        if (_reply && _reply->isFinished()) {\n            _downloadComplete = true;\n            break;\n        }\n    }\n\n    // grab the HTTP status code\n    QVariant statusCode = _reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);\n    if (statusCode.isValid()) {\n        _httpStatusCode = statusCode.toInt();\n        _lastErrorMessage = _reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toString().toStdString();\n    } else {\n        _httpStatusCode = -1;\n        _lastErrorMessage = \"Unable to connect to URL\";\n    }\n}\n\n#ifdef SPL_PRECOMPILE_QT_MOC_FILES\n#define INTERNAL_INCLUDE 1\n#include \"moc_gdownloader.cpp\"   // speeds up compilation of auto-generated Qt files\n#undef INTERNAL_INCLUDE\n#endif // SPL_PRECOMPILE_QT_MOC_FILES\n\n/*\n * File: GSlider.cpp\n * ------------------\n *\n * @author Marty Stepp\n * @version 2019/04/23\n * - added key events\n * @version 2019/02/02\n * - destructor now stops event processing\n * @version 2018/08/23\n * - renamed to gslider.cpp to replace Java version\n * @version 2018/06/25\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"gslider.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gthread.h\"\n#define INTERNAL_INCLUDE 1\n#include \"require.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gwindow.h\"\n#undef INTERNAL_INCLUDE\n\nconst int GSlider::DEFAULT_MIN_VALUE = 0;\nconst int GSlider::DEFAULT_MAX_VALUE = 100;\nconst int GSlider::DEFAULT_INITIAL_VALUE = 50;\n\nGSlider::GSlider(int min, int max, int value, QWidget* parent) {\n    require::require(min <= max, \"GSlider::constructor\", \"min (\" + std::to_string(min) + \") cannot be greater than max (\" + std::to_string(max) + \")\");\n    require::inRange(value, min, max, \"GSlider::constructor\", \"value\");\n    GThread::runOnQtGuiThread([this, min, max, value, parent]() {\n        _iqslider = new _Internal_QSlider(this,\n                                          Qt::Horizontal,\n                                          getInternalParent(parent));\n        _iqslider->setRange(min, max);\n        _iqslider->setValue(value);\n    });\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGSlider::GSlider(Orientation orientation, int min, int max, int value, QWidget* parent) {\n    require::require(min <= max, \"GSlider::constructor\", \"min (\" + std::to_string(min) + \") cannot be greater than max (\" + std::to_string(max) + \")\");\n    require::inRange(value, min, max, \"GSlider::constructor\", \"value\");\n    GThread::runOnQtGuiThread([this, orientation, min, max, value, parent]() {\n        _iqslider = new _Internal_QSlider(this,\n                                          orientation == HORIZONTAL ? Qt::Horizontal : Qt::Vertical,\n                                          getInternalParent(parent));\n        _iqslider->setRange(min, max);\n        _iqslider->setValue(value);\n    });\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGSlider::~GSlider() {\n    // TODO: delete _iqslider;\n    _iqslider->detach();\n    _iqslider = nullptr;\n}\n\nstd::string GSlider::getActionEventType() const {\n    return \"change\";\n}\n\n_Internal_QWidget* GSlider::getInternalWidget() const {\n    return _iqslider;\n}\n\nint GSlider::getMajorTickSpacing() const {\n    return _iqslider->tickInterval();\n}\n\nint GSlider::getMax() const {\n    return _iqslider->maximum();\n}\n\nint GSlider::getMin() const {\n    return _iqslider->minimum();\n}\n\nint GSlider::getMinorTickSpacing() const {\n    return _iqslider->tickInterval();\n}\n\nGSlider::Orientation GSlider::getOrientation() const {\n    return _iqslider->orientation() == Qt::Horizontal ? HORIZONTAL : VERTICAL;\n}\n\nbool GSlider::getPaintLabels() const {\n    // TODO\n    return false;\n}\n\nbool GSlider::getPaintTicks() const {\n    // TODO\n    return true;\n}\n\nbool GSlider::getSnapToTicks() const {\n    // TODO\n    return true;\n}\n\nstd::string GSlider::getType() const {\n    return \"GSlider\";\n}\n\nint GSlider::getValue() const {\n    return _iqslider->value();\n}\n\nQWidget* GSlider::getWidget() const {\n    return static_cast<QWidget*>(_iqslider);\n}\n\nvoid GSlider::setMajorTickSpacing(int value) {\n    GThread::runOnQtGuiThread([this, value]() {\n        _iqslider->setTickInterval(value);\n    });\n}\n\nvoid GSlider::setMax(int max) {\n    int min = getMin();\n    require::require(min <= max, \"GSlider::setMax\", \"max (\" + std::to_string(max) + \") cannot be less than min (\" + std::to_string(min) + \")\");\n    GThread::runOnQtGuiThread([this, max]() {\n        _iqslider->setMaximum(max);\n    });\n}\n\nvoid GSlider::setMin(int min) {\n    int max = getMax();\n    require::require(min <= max, \"GSlider::setMin\", \"min (\" + std::to_string(min) + \") cannot be greater than max (\" + std::to_string(max) + \")\");\n    GThread::runOnQtGuiThread([this, min]() {\n        _iqslider->setMinimum(min);\n    });\n}\n\nvoid GSlider::setMinorTickSpacing(int value) {\n    GThread::runOnQtGuiThread([this, value]() {\n        _iqslider->setTickInterval(value);\n    });\n}\n\nvoid GSlider::setPaintLabels(bool /* value */) {\n    // not supported\n}\n\nvoid GSlider::setPaintTicks(bool value) {\n    GThread::runOnQtGuiThread([this, value]() {\n        _iqslider->setTickPosition(value ? QSlider::TicksBothSides : QSlider::NoTicks);\n    });\n}\n\nvoid GSlider::setRange(int min, int max) {\n    require::require(min <= max, \"GSlider::setRange\", \"min (\" + std::to_string(min) + \") cannot be greater than max (\" + std::to_string(max) + \")\");\n    GThread::runOnQtGuiThread([this, min, max]() {\n        _iqslider->setRange(min, max);\n    });\n}\n\nvoid GSlider::setSnapToTicks(bool /* value */) {\n    // TODO\n}\n\nvoid GSlider::setState(int min, int max, int value) {\n    require::require(min <= max, \"GSlider::setState\", \"min (\" + std::to_string(min) + \") cannot be greater than max (\" + std::to_string(max) + \")\");\n    require::inRange(value, min, max, \"GSlider::setState\", \"value\");\n    GThread::runOnQtGuiThread([this, min, max, value]() {\n        _iqslider->setRange(min, max);\n        _iqslider->setValue(value);\n    });\n}\n\nvoid GSlider::setValue(int value) {\n    require::inRange(value, getMin(), getMax(), \"GSlider::setValue\", \"value\");\n    GThread::runOnQtGuiThread([this, value]() {\n        _iqslider->setValue(value);\n    });\n}\n\n\n_Internal_QSlider::_Internal_QSlider(GSlider* gslider, Qt::Orientation orientation, QWidget* parent)\n        : QSlider(orientation, parent),\n          _gslider(gslider) {\n    require::nonNull(gslider, \"_Internal_QSlider::constructor\");\n    setObjectName(QString::fromStdString(\"_Internal_QSlider_\" + std::to_string(gslider->getID())));\n    connect(this, SIGNAL(valueChanged(int)), this, SLOT(handleChange(int)));\n}\n\nvoid _Internal_QSlider::detach() {\n    _gslider = nullptr;\n}\n\nvoid _Internal_QSlider::handleChange(int /* value */) {\n    if (!_gslider) {\n        return;\n    }\n    GEvent changeEvent(\n                /* class  */ CHANGE_EVENT,\n                /* type   */ STATE_CHANGED,\n                /* name   */ \"change\",\n                /* source */ _gslider);\n    changeEvent.setActionCommand(_gslider->getActionCommand());\n    _gslider->fireEvent(changeEvent);\n}\n\nvoid _Internal_QSlider::keyPressEvent(QKeyEvent* event) {\n    require::nonNull(event, \"_Internal_QSlider::keyPressEvent\", \"event\");\n    if (_gslider && _gslider->isAcceptingEvent(\"keypress\")) {\n        event->accept();\n        _gslider->fireGEvent(event, KEY_PRESSED, \"keypress\");\n        if (event->isAccepted()) {\n            QSlider::keyPressEvent(event);   // call super\n        }\n    } else {\n        QSlider::keyPressEvent(event);   // call super\n    }\n}\n\nvoid _Internal_QSlider::keyReleaseEvent(QKeyEvent* event) {\n    require::nonNull(event, \"_Internal_QSlider::keyPressEvent\", \"event\");\n    if (_gslider && _gslider->isAcceptingEvent(\"keyrelease\")) {\n        event->accept();\n        _gslider->fireGEvent(event, KEY_RELEASED, \"keyrelease\");\n        if (event->isAccepted()) {\n            QSlider::keyReleaseEvent(event);   // call super\n        }\n    } else {\n        QSlider::keyReleaseEvent(event);   // call super\n    }\n}\n\nQSize _Internal_QSlider::sizeHint() const {\n    if (hasPreferredSize()) {\n        return getPreferredSize();\n    } else {\n        return QSlider::sizeHint();\n    }\n}\n\n#ifdef SPL_PRECOMPILE_QT_MOC_FILES\n#define INTERNAL_INCLUDE 1\n#include \"moc_gslider.cpp\"   // speeds up compilation of auto-generated Qt files\n#undef INTERNAL_INCLUDE\n#endif // SPL_PRECOMPILE_QT_MOC_FILES\n\n/*\n * File: gcolor.cpp\n * ----------------\n *\n * @author Marty Stepp\n * @version 2019/05/05\n * - added getLuminance\n * @version 2018/09/16\n * - added splitRGB/ARGB, hasAlpha; better ARGB support\n * @version 2018/08/23\n * - renamed to gcolor.cpp to replace Java version\n * @version 2018/06/30\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"gcolor.h\"\n#include <iomanip>\n#include <iostream>\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#undef INTERNAL_INCLUDE\n\nMap<std::string, int> GColor::_colorTable;\nMap<std::string, std::string> GColor::_colorNameTable;\n\nGColor::GColor() {\n    // empty\n}\n\n/*static*/ std::string GColor::canonicalColorName(const std::string& str) {\n    std::string result = \"\";\n    int nChars = static_cast<int>(str.length());\n    for (int i = 0; i < nChars; i++) {\n        char ch = str[i];\n        if (!isspace(ch) && ch != '_') result += tolower(ch);\n    }\n    return result;\n}\n\n/*static*/ const Map<std::string, int>& GColor::colorTable() {\n    if (_colorTable.isEmpty()) {\n        _colorTable[\"black\"] = 0x000000;\n        _colorTable[\"blue\"] = 0x0000FF;\n        _colorTable[\"brown\"] = 0x926239;\n        _colorTable[\"cyan\"] = 0x00FFFF;\n        _colorTable[\"darkgray\"] = 0x595959;\n        _colorTable[\"gray\"] = 0x999999;\n        _colorTable[\"green\"] = 0x00FF00;\n        _colorTable[\"lightgray\"] = 0xBFBFBF;\n        _colorTable[\"magenta\"] = 0xFF00FF;\n        _colorTable[\"orange\"] = 0xFFC800;\n        _colorTable[\"pink\"] = 0xFFAFAF;\n        _colorTable[\"purple\"] = 0xFF00FF;\n        _colorTable[\"red\"] = 0xFF0000;\n        _colorTable[\"white\"] = 0xFFFFFF;\n        _colorTable[\"yellow\"] = 0xFFFF00;\n    }\n    return _colorTable;\n}\n\n/*static*/ const Map<std::string, std::string>& GColor::colorNameTable() {\n    if (_colorNameTable.isEmpty()) {\n        _colorNameTable[\"#000000\"] = \"black\";\n        _colorNameTable[\"#ff000000\"] = \"black\";\n        _colorNameTable[\"#0000ff\"] = \"blue\";\n        _colorNameTable[\"#ff0000ff\"] = \"blue\";\n        _colorNameTable[\"#926239\"] = \"brown\";\n        _colorNameTable[\"#ff926239\"] = \"brown\";\n        _colorNameTable[\"#00ffff\"] = \"cyan\";\n        _colorNameTable[\"#ff00ffff\"] = \"cyan\";\n        _colorNameTable[\"#595959\"] = \"darkgray\";\n        _colorNameTable[\"#ff595959\"] = \"darkgray\";\n        _colorNameTable[\"#999999\"] = \"gray\";\n        _colorNameTable[\"#ff999999\"] = \"gray\";\n        _colorNameTable[\"#00ff00\"] = \"green\";\n        _colorNameTable[\"#ff00ff00\"] = \"green\";\n        _colorNameTable[\"#bfbfbf\"] = \"lightgray\";\n        _colorNameTable[\"#ffbfbfbf\"] = \"lightgray\";\n        _colorNameTable[\"#ff00ff\"] = \"magenta\";\n        _colorNameTable[\"#ffff00ff\"] = \"magenta\";\n        _colorNameTable[\"#ffc800\"] = \"orange\";\n        _colorNameTable[\"#ffffc800\"] = \"orange\";\n        _colorNameTable[\"#ffafaf\"] = \"pink\";\n        _colorNameTable[\"#ffffafaf\"] = \"pink\";\n        _colorNameTable[\"#ff00ff\"] = \"purple\";\n        _colorNameTable[\"#ffff00ff\"] = \"purple\";\n        _colorNameTable[\"#ff0000\"] = \"red\";\n        _colorNameTable[\"#ffff0000\"] = \"red\";\n        _colorNameTable[\"#ffffff\"] = \"white\";\n        _colorNameTable[\"#ffffffff\"] = \"white\";\n        _colorNameTable[\"#ffff00\"] = \"yellow\";\n        _colorNameTable[\"#ffffff00\"] = \"yellow\";\n    }\n    return _colorNameTable;\n}\n\n/*static*/ int GColor::convertARGBToARGB(int a, int r, int g, int b) {\n    return (a << 24) | (r << 16) | (g << 8) | b;\n}\n\n/*static*/ std::string GColor::convertARGBToColor(int a, int r, int g, int b) {\n    if (a < 0 || a > 255 || r < 0 || r > 255 || g < 0 || g > 255 || b < 0 || b > 255) {\n        error(\"GColor::convertARGBToColor: invalid ARGB value (must be 0-255)\");\n    }\n    std::ostringstream os;\n    os << std::hex << std::setfill('0') << std::uppercase << \"#\";\n    os << std::setw(2) << (a & 0xFF);\n    os << std::setw(2) << (r & 0xFF);\n    os << std::setw(2) << (g & 0xFF);\n    os << std::setw(2) << (b & 0xFF);\n    return os.str();\n}\n\n/*static*/ std::string GColor::convertARGBToColor(int argb) {\n    int a, r, g, b;\n    splitARGB(argb, a, r, g, b);\n    return convertARGBToColor(a, r, g, b);\n}\n\n/*static*/ int GColor::convertColorToARGB(const std::string& colorName) {\n    return convertColorToRGB(colorName);\n}\n\n/*static*/ int GColor::convertColorToRGB(const std::string& colorName) {\n    if (colorName == \"\") return -1;\n    if (colorName[0] == '#') {\n        std::istringstream is(colorName.substr(1) + \"@\");\n        unsigned int rgb;\n        char terminator = '\\0';\n        is >> std::hex >> rgb >> terminator;\n        if (terminator != '@') {\n            error(\"GColor::convertColorToRGB: Illegal color - \\\"\" + colorName + \"\\\"\");\n        }\n        return static_cast<int>(rgb & 0xffffffff);\n    }\n    std::string name = canonicalColorName(colorName);\n    if (!colorTable().containsKey(name)) {\n        error(\"GColor::convertColorToRGB: Undefined color - \\\"\" + colorName + \"\\\"\");\n    }\n    return colorTable()[name];\n}\n\n/*static*/ std::string GColor::convertQColorToColor(const QColor& color) {\n    return convertRGBToColor(color.red(), color.green(), color.blue());\n}\n\n/*static*/ int GColor::convertQColorToRGB(const QColor& color) {\n    return convertRGBToRGB(color.red(), color.green(), color.blue());\n}\n\n/*static*/ std::string GColor::convertRGBToColor(int rgb) {\n    std::ostringstream os;\n    os << std::hex << std::setfill('0') << std::uppercase << \"#\";\n    os << std::setw(2) << (rgb >> 16 & 0xFF);\n    os << std::setw(2) << (rgb >> 8 & 0xFF);\n    os << std::setw(2) << (rgb & 0xFF);\n    std::string color = os.str();\n    if (colorNameTable().containsKey(toLowerCase(color))) {\n        return colorNameTable()[toLowerCase(color)];\n    } else {\n        return color;\n    }\n}\n\n/*static*/ std::string GColor::convertRGBToColor(int r, int g, int b) {\n    if (r < 0 || r > 255 || g < 0 || g > 255 || b < 0 || b > 255) {\n        error(\"GColor::convertRGBToColor: invalid RGB value (must be 0-255)\");\n    }\n    std::ostringstream os;\n    os << std::hex << std::setfill('0') << std::uppercase << \"#\";\n    os << std::setw(2) << (r & 0xFF);\n    os << std::setw(2) << (g & 0xFF);\n    os << std::setw(2) << (b & 0xFF);\n    std::string color = os.str();\n    if (colorNameTable().containsKey(toLowerCase(color))) {\n        return colorNameTable()[toLowerCase(color)];\n    } else {\n        return color;\n    }\n}\n\n/*static*/ int GColor::convertRGBToRGB(int r, int g, int b) {\n    return (r << 16) | (g << 8) | b;\n}\n\n/*static*/ int GColor::fixAlpha(int argb) {\n    int alpha = ((argb & 0xff000000) >> 24) & 0x000000ff;\n    if (alpha == 0 && (argb & 0x00ffffff) != 0) {\n        argb = argb | 0xff000000;   // set full 255 alpha\n    }\n    return argb;\n}\n\n/*static*/ double GColor::getLuminance(int rgb) {\n    // https://en.wikipedia.org/wiki/Relative_luminance\n    int r, g, b;\n    splitRGB(rgb, r, g, b);\n    return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n}\n\n/*static*/ double GColor::getLuminance(const std::string& color) {\n    return getLuminance(convertColorToRGB(color));\n}\n\n/*static*/ bool GColor::hasAlpha(const std::string& color) {\n    return static_cast<int>(color.length()) == 9\n            && color[0] == '#';\n}\n\n/*static*/ void GColor::splitARGB(int argb, int& a, int& r, int& g, int& b) {\n    a = ((static_cast<unsigned int>(argb) & 0xff000000) >> 24) & 0x000000ff;\n    r = (argb & 0x00ff0000) >> 16;\n    g = (argb & 0x0000ff00) >> 8;\n    b = (argb & 0x000000ff);\n}\n\n/*static*/ void GColor::splitRGB(int rgb, int& r, int& g, int& b) {\n    r = (rgb & 0x00ff0000) >> 16;\n    g = (rgb & 0x0000ff00) >> 8;\n    b = (rgb & 0x000000ff);\n}\n\n/*static*/ QColor GColor::toQColor(const std::string& color) {\n    if (hasAlpha(color)) {\n        int argb = convertColorToARGB(color);\n        int a, r, g, b;\n        splitARGB(argb, a, r, g, b);\n        return QColor(r, g, b, a);\n    } else {\n        int rgb = convertColorToRGB(color);\n        return QColor(rgb | 0xff000000);\n    }\n}\n\n/*static*/ QColor GColor::toQColorARGB(int argb) {\n    int a, r, g, b;\n    splitARGB(argb, a, r, g, b);\n    return QColor(r, g, b, a);\n}\n\n/*\n * File: gspacer.cpp\n * -----------------\n *\n * @author Marty Stepp\n * @version 2018/10/06\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"gspacer.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gthread.h\"\n#define INTERNAL_INCLUDE 1\n#include \"require.h\"\n#undef INTERNAL_INCLUDE\n\nGSpacer::GSpacer(double width, double height, QWidget* parent)\n        : _iqspacer(nullptr) {\n    require::nonNegative2D(width, height, \"GSpacer::constructor\", \"width\", \"height\");\n    GThread::runOnQtGuiThread([this, width, height, parent]() {\n        _iqspacer = new _Internal_QSpacer(this, width, height, getInternalParent(parent));\n    });\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGSpacer::~GSpacer() {\n    // TODO: delete _iqspacer;\n    _iqspacer->detach();\n    _iqspacer = nullptr;\n}\n\n_Internal_QWidget* GSpacer::getInternalWidget() const {\n    return _iqspacer;\n}\n\nstd::string GSpacer::getType() const {\n    return \"GSpacer\";\n}\n\nQWidget* GSpacer::getWidget() const {\n    return static_cast<QWidget*>(_iqspacer);\n}\n\n\n_Internal_QSpacer::_Internal_QSpacer(GSpacer* gspacer, double width, double height, QWidget* parent)\n        : QWidget(parent) {\n    require::nonNull(gspacer, \"_Internal_QSpacer::constructor\");\n    setObjectName(QString::fromStdString(\"_Internal_QSpacer_\" + std::to_string(gspacer->getID())));\n    setFixedSize(static_cast<int>(width), static_cast<int>(height));\n}\n\nQSize _Internal_QSpacer::sizeHint() const {\n    if (hasPreferredSize()) {\n        return getPreferredSize();\n    } else {\n        return QWidget::sizeHint();\n    }\n}\n\n#ifdef SPL_PRECOMPILE_QT_MOC_FILES\n#define INTERNAL_INCLUDE 1\n#include \"moc_gspacer.cpp\"   // speeds up compilation of auto-generated Qt files\n#undef INTERNAL_INCLUDE\n#endif // SPL_PRECOMPILE_QT_MOC_FILES\n\n/*\n * File: basicgraph.cpp\n * --------------------\n * This file implements any non-template functionality used by\n * the BasicGraph class.\n *\n * @version 2016/12/01\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"basicgraph.h\"\n#undef INTERNAL_INCLUDE\n\nint hashCode(const BasicGraph& graph) {\n    int code = hashSeed();\n    for (Vertex* v : graph) {\n        code = hashMultiplier() * code + hashCode(v->name);\n    }\n    for (Edge* e : graph.getEdgeSet()) {\n        code = hashMultiplier() * code + hashCode(e->start->name);\n        code = hashMultiplier() * code + hashCode(e->finish->name);\n    }\n    return (code & hashMask());\n}\n\n/*\n * File: shuffle.cpp\n * -----------------\n * Implementation of the functions in shuffle.h.\n * See shuffle.h for documentation of each function.\n *\n * @author Marty Stepp\n * @version 2014/10/08\n * - removed 'using namespace' statement\n * @since 2014/02/01\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"shuffle.h\"\n#undef INTERNAL_INCLUDE\n\n/*\n * Randomly rearranges the characters of the given string and returns the\n * rearranged version.\n */\nstd::string shuffle(std::string s) {\n    for (int i = 0, length = s.length(); i < length; i++) {\n        int j = randomInteger(i, length - 1);\n        if (i != j) {\n            std::string::value_type temp = s[i];\n            s[i] = s[j];\n            s[j] = temp;\n        }\n    }\n    return s;\n}\n\n/*\n * File: stl.cpp\n * -------------\n * Implements bodies of functions declared in stl.h.\n *\n * @author Marty Stepp\n * @version 2018/10/19\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"stl.h\"\n#undef INTERNAL_INCLUDE\n\nstd::set<std::string> toStlSet(const DawgLexicon& lex) {\n    std::set<std::string> result;\n    for (const std::string& s : lex) {\n        result.insert(s);\n    }\n    return result;\n}\n\n/**\n * Returns an STL set object with the same elements as this Lexicon.\n */\nstd::set<std::string> toStlSet(const Lexicon& lex) {\n    std::set<std::string> result;\n    for (const std::string& s : lex) {\n        result.insert(s);\n    }\n    return result;\n}\n\n/*\n * File: gridlocation.cpp\n * ----------------------\n * This file implements the members of the <code>GridLocation</code> structure\n * and the <code>GridLocationRange</code> class.\n * See gridlocation.h for the declarations of each member.\n *\n * @version 2018/03/12\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"gridlocation.h\"\n#include <sstream>\n#define INTERNAL_INCLUDE 1\n#include \"hashcode.h\"\n#undef INTERNAL_INCLUDE\n\nGridLocation::GridLocation(int row, int col) {\n    this->row = row;\n    this->col = col;\n}\n\nGridLocationRange GridLocation::neighbors(int range, bool rowMajor) const {\n    return GridLocationRange(row - range, col - range, row + range, col + range, rowMajor);\n}\n\nstd::string GridLocation::toString() const {\n    std::ostringstream out;\n    out << *this;\n    return out.str();\n}\n\nint hashCode(const GridLocation& loc) {\n    return hashCode(loc.row, loc.col);\n}\n\nbool operator <(const GridLocation& loc1, const GridLocation& loc2) {\n    return loc1.row < loc2.row ||\n            (loc1.row == loc2.row && loc1.col < loc2.col);\n}\n\nbool operator <=(const GridLocation& loc1, const GridLocation& loc2) {\n    return loc1 < loc2 || loc1 == loc2;\n}\n\nbool operator ==(const GridLocation& loc1, const GridLocation& loc2) {\n    return loc1.row == loc2.row && loc1.col == loc2.col;\n}\n\nbool operator !=(const GridLocation& loc1, const GridLocation& loc2) {\n    return !(loc1 == loc2);\n}\n\nbool operator >(const GridLocation& loc1, const GridLocation& loc2) {\n    return loc2 < loc1;\n}\n\nbool operator >=(const GridLocation& loc1, const GridLocation& loc2) {\n    return !(loc1 < loc2);\n}\n\nstd::ostream& operator <<(std::ostream& out, const GridLocation& loc) {\n    return out << \"r\" << loc.row << \"c\" << loc.col;\n}\n\nstd::istream& operator >>(std::istream& input, GridLocation& loc) {\n    // read 'r'\n    input.get();\n    if (!input) {\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n\n    // read row\n    int row;\n    if (!(input >> row)) {\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n\n    // read 'c'\n    input.get();\n    if (!input) {\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n\n    // read row\n    int col;\n    if (!(input >> col)) {\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n\n    // success!\n    loc.row = row;\n    loc.col = col;\n    return input;\n}\n\nGridLocationRange::GridLocationRange(int startRow, int startCol, int endRow, int endCol, bool isRowMajor)\n        : _start(startRow, startCol),\n          _end(endRow, endCol),\n          _isRowMajor(isRowMajor) {\n    // empty\n}\n\nGridLocationRange::GridLocationRange(const GridLocation& startLoc, const GridLocation& endLoc, bool isRowMajor)\n        : _start(startLoc),\n          _end(endLoc),\n          _isRowMajor(isRowMajor) {\n    // empty\n}\n\nGridLocationRange::GridLocationRangeIterator GridLocationRange::begin() const {\n    return GridLocationRangeIterator(this, /* end */ false);\n}\n\nbool GridLocationRange::contains(const GridLocation& loc) const {\n    return _start <= loc && loc <= _end;\n}\n\nGridLocationRange::GridLocationRangeIterator GridLocationRange::end() const {\n    return GridLocationRangeIterator(this, /* end */ true);\n}\n\nint GridLocationRange::endCol() const {\n    return _end.col;\n}\n\nconst GridLocation& GridLocationRange::endLocation() const {\n    return _end;\n}\n\nint GridLocationRange::endRow() const {\n    return _end.row;\n}\n\nbool GridLocationRange::isEmpty() const {\n    return _start > _end;\n}\n\nbool GridLocationRange::isRowMajor() const {\n    return _isRowMajor;\n}\n\nint GridLocationRange::startCol() const {\n    return _start.col;\n}\n\nconst GridLocation& GridLocationRange::startLocation() const {\n    return _start;\n}\n\nint GridLocationRange::startRow() const {\n    return _start.row;\n}\n\nstd::string GridLocationRange::toString() const {\n    std::ostringstream out;\n    out << *this;\n    return out.str();\n}\n\nstd::ostream& operator <<(std::ostream& out, const GridLocationRange& range) {\n    return out << range.startLocation() << \" .. \" << range.endLocation();\n}\n\n/*\n * File: collections.cpp\n * ---------------------\n * This file implements the collections.h interface.\n * \n * @version 2019/04/11\n * - added functions to read/write quoted char values\n * @version 2018/10/20\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"collections.h\"\n#define INTERNAL_INCLUDE 1\n#include \"private/static.h\"\n#undef INTERNAL_INCLUDE\n#include <iomanip>\n#include <iostream>\n\n/*\n * Implementation notes: readQuotedString and writeQuotedString\n * ------------------------------------------------------------\n * Most of the work in these functions has to do with escape sequences.\n */\n\nSTATIC_CONST_VARIABLE_DECLARE(std::string, STRING_DELIMITERS, \",:)}]\\n\")\n\nbool stringNeedsQuoting(const std::string& str) {\n    int n = str.length();\n    for (int i = 0; i < n; i++) {\n        char ch = str[i];\n        if (isspace(ch)) return false;\n        if (STATIC_VARIABLE(STRING_DELIMITERS).find(ch) != std::string::npos) return true;\n    }\n    return false;\n}\n\nbool readQuotedChar(std::istream& is, char& ch, bool throwOnError) {\n    // skip whitespace\n    char temp;\n    while (is.get(temp) && isspace(temp)) {\n        // empty\n    }\n    if (is.fail()) {\n        return true;\n    }\n\n    // now we are either at a character, like X, or at the start of a quoted\n    // character such as 'X' or '\\n'\n    if (temp == '\\'' || temp == '\"') {\n        // quoted character; defer to string-reading code\n        is.unget();\n        std::string s;\n        bool result = readQuotedString(is, s, throwOnError);\n        if (result && !s.empty()) {\n            ch = s[0];\n        }\n        return result;\n    } else {\n        // unquoted character; read it ourselves\n        // special case: \\ (e.g. \\n, \\t)\n        if (temp == '\\\\') {\n            // TODO\n            char temp2;\n            if (is.get(temp2)) {\n                switch (temp2) {\n                    case 'a':  ch = '\\a'; break;\n                    case 'b':  ch = '\\b'; break;\n                    case 'f':  ch = '\\f'; break;\n                    case 'n':  ch = '\\n'; break;\n                    case 'r':  ch = '\\r'; break;\n                    case 't':  ch = '\\t'; break;\n                    case 'v':  ch = '\\v'; break;\n                    case '0':  ch = '\\0'; break;\n                    case '\\\\': ch = '\\\\'; break;\n                    case '\\'': ch = '\\''; break;\n                    case '\"':  ch = '\"'; break;\n                    default:   ch = '\\0'; break;\n                }\n            }\n        } else {\n            ch = temp;\n        }\n        return true;\n    }\n}\n\nbool readQuotedString(std::istream& is, std::string& str, bool throwOnError) {\n    str = \"\";\n    char ch;\n    while (is.get(ch) && isspace(ch)) {\n        /* Empty */\n    }\n    if (is.fail()) {\n        return true;   // empty string?\n    }\n    if (ch == '\\'' || ch == '\"') {\n        char delim = ch;\n        while (is.get(ch) && ch != delim) {\n            if (is.fail()) {\n                if (throwOnError) {\n                    error(\"Unterminated string\");\n                }\n                return false;\n            }\n            if (ch == '\\\\') {\n                if (!is.get(ch)) {\n                    if (throwOnError) {\n                        error(\"Unterminated string\");\n                    }\n                    is.setstate(std::ios_base::failbit);\n                    return false;\n                }\n                if (isdigit(ch) || ch == 'x') {\n                    int maxDigits = 3;\n                    int base = 8;\n                    if (ch == 'x') {\n                        base = 16;\n                        maxDigits = 2;\n                    }\n                    int result = 0;\n                    int digit = 0;\n                    for (int i = 0; i < maxDigits && ch != delim; i++) {\n                        if (isdigit(ch)) {\n                            digit = ch - '0';\n                        } else if (base == 16 && isxdigit(ch)) {\n                            digit = toupper(ch) - 'A' + 10;\n                        } else {\n                            break;\n                        }\n                        result = base * result + digit;\n                        if (!is.get(ch)) {\n                            if (throwOnError) {\n                                error(\"Unterminated string\");\n                            }\n                            is.setstate(std::ios_base::failbit);\n                            return false;\n                        }\n                    }\n                    ch = char(result);\n                    is.unget();\n                } else {\n                    switch (ch) {\n                    case 'a': ch = '\\a'; break;\n                    case 'b': ch = '\\b'; break;\n                    case 'f': ch = '\\f'; break;\n                    case 'n': ch = '\\n'; break;\n                    case 'r': ch = '\\r'; break;\n                    case 't': ch = '\\t'; break;\n                    case 'v': ch = '\\v'; break;\n                    case '\"': ch = '\"'; break;\n                    case '\\'': ch = '\\''; break;\n                    case '\\\\': ch = '\\\\'; break;\n                    }\n                }\n            }\n            str += ch;\n        }\n    } else {\n        str += ch;\n        int endTrim = 0;\n        while (is.get(ch) && STATIC_VARIABLE(STRING_DELIMITERS).find(ch) == std::string::npos) {\n            str += ch;\n            if (!isspace(ch)) {\n                endTrim = str.length();\n            }\n        }\n        if (is) is.unget();\n        str = str.substr(0, endTrim);\n    }\n    return true;   // read successfully\n}\n\nstd::ostream& writeQuotedChar(std::ostream& os, char ch, bool forceQuotes) {\n    if (forceQuotes) {\n        os << '\\'';\n    }\n    switch (ch) {\n    case '\\a': os << \"\\\\a\"; break;\n    case '\\b': os << \"\\\\b\"; break;\n    case '\\f': os << \"\\\\f\"; break;\n    case '\\n': os << \"\\\\n\"; break;\n    case '\\r': os << \"\\\\r\"; break;\n    case '\\t': os << \"\\\\t\"; break;\n    case '\\v': os << \"\\\\v\"; break;\n    case '\\\\': os << \"\\\\\\\\\"; break;\n    default:\n        if (isprint(ch) && ch != '\\'') {\n            os << ch;\n        } else {\n            std::ostringstream oss;\n            oss << std::oct << std::setw(3) << std::setfill('0') << (int(ch) & 0xFF);\n            os << \"\\\\\" << oss.str();\n        }\n    }\n    if (forceQuotes) {\n        os << '\\'';\n    }\n    return os;\n}\n\nstd::ostream& writeQuotedString(std::ostream& os, const std::string& str, bool forceQuotes) {\n    if (!forceQuotes && stringNeedsQuoting(str)) {\n        forceQuotes = true;\n    }\n    if (forceQuotes) {\n        os << '\"';\n    }\n    int len = str.length();\n    for (int i = 0; i < len; i++) {\n        char ch = str.at(i);\n        switch (ch) {\n        case '\\a': os << \"\\\\a\"; break;\n        case '\\b': os << \"\\\\b\"; break;\n        case '\\f': os << \"\\\\f\"; break;\n        case '\\n': os << \"\\\\n\"; break;\n        case '\\r': os << \"\\\\r\"; break;\n        case '\\t': os << \"\\\\t\"; break;\n        case '\\v': os << \"\\\\v\"; break;\n        case '\\\\': os << \"\\\\\\\\\"; break;\n        default:\n            if (isprint(ch) && ch != '\"') {\n                os << ch;\n            } else {\n                std::ostringstream oss;\n                oss << std::oct << std::setw(3) << std::setfill('0') << (int(ch) & 0xFF);\n                os << \"\\\\\" << oss.str();\n            }\n        }\n    }\n    if (forceQuotes) {\n        os << '\"';\n    }\n    return os;\n}\n\n/*\n * File: dawglexicon.cpp\n * ---------------------\n * A lexicon is a word list. This lexicon is backed by two separate data\n * structures for storing the words in the list:\n *\n * 1) a DAWG (directed acyclic word graph)\n * 2) a Set<string> of other words.\n *\n * Typically the DAWG is used for a large list read from a file in binary\n * format.  The STL set is for words added piecemeal at runtime.\n *\n * The DAWG idea comes from an article by Appel & Jacobson, CACM May 1988.\n * This lexicon implementation only has the code to load/search the DAWG.\n * The DAWG builder code is quite a bit more intricate, see Julie Zelenski\n * if you need it.\n * \n * @version 2018/03/10\n * - added method front\n * @version 2017/11/14\n * - added iterator version checking support\n * @version 2016/08/10\n * - added constructor support for std initializer_list usage, such as {\"a\", \"b\", \"c\"}\n * @version 2016/08/04\n * - added operator >>\n * @version 2015/07/05\n * - using global hashing functions rather than global variables\n * @version 2014/11/13\n * - added comparison operators <, >=, etc.\n * - added hashCode function\n * @version 2014/10/10\n * - removed 'using namespace' statement\n * - added equals method, ==, != operators\n * - fixed inclusion of foreach macro to avoid errors\n * - BUGFIX: operator << now shows \"\" marks around words to match Lexicon\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"dawglexicon.h\"\n#include <algorithm>\n#include <cstdlib>\n#include <cstring>\n#include <fstream>\n#include <iostream>\n#include <sstream>\n#include <stdint.h>\n#include <string>\n#define INTERNAL_INCLUDE 1\n#include \"collections.h\"\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"hashcode.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#undef INTERNAL_INCLUDE\n\nstatic uint32_t my_ntohl(uint32_t arg);\n\n/*\n * The DAWG is stored as an array of edges. Each edge is represented by\n * one 32-bit struct.  The 5 \"letter\" bits indicate the character on this\n * transition (expressed as integer from 1 to 26), the  \"accept\" bit indicates\n * if you accept after appending that char (current path forms word), and the\n * \"lastEdge\" bit marks this as the last edge in a sequence of childeren.\n * The bulk of the bits (24) are used for the index within the edge array for\n * the children of this node. The children are laid out contiguously in\n * alphabetical order.  Since we read edges as binary bits from a file in\n * a big-endian format, we have to swap the struct order for little-endian\n * machines.\n */\n\nDawgLexicon::DawgLexicon() :\n        _edges(nullptr),\n        _start(nullptr),\n        _edgeCount(0),\n        _dawgWordsCount(0) {\n    // empty\n}\n\nDawgLexicon::DawgLexicon(std::istream& input) :\n        _edges(nullptr),\n        _start(nullptr),\n        _edgeCount(0),\n        _dawgWordsCount(0) {\n    addWordsFromFile(input);\n}\n\nDawgLexicon::DawgLexicon(const std::string& filename) :\n        _edges(nullptr),\n        _start(nullptr),\n        _edgeCount(0),\n        _dawgWordsCount(0) {\n    addWordsFromFile(filename);\n}\n\nDawgLexicon::DawgLexicon(const DawgLexicon& src) :\n        _edges(nullptr),\n        _start(nullptr),\n        _edgeCount(0),\n        _dawgWordsCount(0) {\n    deepCopy(src);\n}\n\nDawgLexicon::DawgLexicon(std::initializer_list<std::string> list) :\n        _edges(nullptr),\n        _start(nullptr),\n        _edgeCount(0),\n        _dawgWordsCount(0) {\n    addAll(list);\n}\n\nDawgLexicon::~DawgLexicon() {\n    if (_edges) {\n        delete[] _edges;\n    }\n}\n\nvoid DawgLexicon::add(const std::string& word) {\n    std::string copy = word;\n    toLowerCaseInPlace(copy);\n    if (!contains(copy)) {\n        _otherWords.add(copy);\n    }\n}\n\nDawgLexicon& DawgLexicon::addAll(const DawgLexicon& lex) {\n    for (const std::string& word : lex) {\n        add(word);\n    }\n    return *this;\n}\n\nDawgLexicon& DawgLexicon::addAll(std::initializer_list<std::string> list) {\n    for (const std::string& word : list) {\n        add(word);\n    }\n    return *this;\n}\n\n/*\n * Check for DAWG in first 4 to identify as special binary format,\n * otherwise assume ASCII, one word per line\n */\nvoid DawgLexicon::addWordsFromFile(std::istream& input) {\n    char firstFour[4], expected[] = \"DAWG\";\n    if (input.fail()) {\n        error(\"DawgLexicon::addWordsFromFile: Couldn't read input\");\n    }\n    input.read(firstFour, 4);\n    if (strncmp(firstFour, expected, 4) == 0) {\n        if (_otherWords.size() != 0) {\n            error(\"DawgLexicon::addWordsFromFile: Binary files require an empty lexicon\");\n        }\n        readBinaryFile(input);\n    } else {\n        // plain text file\n        input.seekg(0);\n        std::string line;\n        while (getline(input, line)) {\n            add(line);\n        }\n    }\n}\n\n/*\n * Check for DAWG in first 4 to identify as special binary format,\n * otherwise assume ASCII, one word per line\n */\nvoid DawgLexicon::addWordsFromFile(const std::string& filename) {\n    std::ifstream input(filename.c_str());\n    if (input.fail()) {\n        error(\"DawgLexicon::addWordsFromFile: Couldn't open lexicon file \" + filename);\n    }\n    addWordsFromFile(input);\n    input.close();\n}\n\nvoid DawgLexicon::clear() {\n    if (_edges) {\n        delete[] _edges;\n    }\n    _edges = _start = nullptr;\n    _edgeCount = _dawgWordsCount = 0;\n    _otherWords.clear();\n}\n\nbool DawgLexicon::contains(const std::string& word) const {\n    std::string copy = word;\n    toLowerCaseInPlace(copy);\n    Edge* lastEdge = traceToLastEdge(copy);\n    if (lastEdge && lastEdge->accept) {\n        return true;\n    }\n    return _otherWords.contains(copy);\n}\n\nbool DawgLexicon::containsAll(const DawgLexicon& lex2) const {\n    for (const std::string& word : lex2) {\n        if (!contains(word)) {\n            return false;\n        }\n    }\n    return true;\n}\n\nbool DawgLexicon::containsAll(std::initializer_list<std::string> list) const {\n    for (const std::string& word : list) {\n        if (!contains(word)) {\n            return false;\n        }\n    }\n    return true;\n}\n\nbool DawgLexicon::containsPrefix(const std::string& prefix) const {\n    if (prefix.empty()) {\n        return true;\n    }\n    std::string copy = prefix;\n    toLowerCaseInPlace(copy);\n    if (traceToLastEdge(copy)) {\n        return true;\n    }\n    for (std::string word : _otherWords) {\n        if (startsWith(word, copy)) {\n            return true;\n        }\n        if (copy < word) {\n            return false;\n        }\n    }\n    return false;\n}\n\nbool DawgLexicon::equals(const DawgLexicon& lex2) const {\n    return stanfordcpplib::collections::equals(*this, lex2);\n}\n\nstd::string DawgLexicon::front() const {\n    if (isEmpty()) {\n        error(\"DawgLexicon::front: lexicon is empty\");\n    }\n    auto it = begin();\n    return *it;\n}\n\nvoid DawgLexicon::insert(const std::string& word) {\n    add(word);\n}\n\nbool DawgLexicon::isEmpty() const {\n    return size() == 0;\n}\n\nbool DawgLexicon::isSubsetOf(const DawgLexicon& lex2) const {\n    auto it = begin();\n    auto end = this->end();\n    while (it != end) {\n        if (!lex2.contains(*it)) {\n            return false;\n        }\n        ++it;\n    }\n    return true;\n}\n\nbool DawgLexicon::isSubsetOf(std::initializer_list<std::string> list) const {\n    DawgLexicon lex2(list);\n    return isSubsetOf(lex2);\n}\n\nbool DawgLexicon::isSupersetOf(const DawgLexicon& lex2) const {\n    return containsAll(lex2);\n}\n\nbool DawgLexicon::isSupersetOf(std::initializer_list<std::string> list) const {\n    return containsAll(list);\n}\n\nvoid DawgLexicon::mapAll(void (*fn)(std::string)) const {\n    for (std::string word : *this) {\n        fn(word);\n    }\n}\n\nvoid DawgLexicon::mapAll(void (*fn)(const std::string &)) const {\n    for (std::string word : *this) {\n        fn(word);\n    }\n}\n\nint DawgLexicon::size() const {\n    return _dawgWordsCount + _otherWords.size();\n}\n\nstd::string DawgLexicon::toString() const {\n    std::ostringstream out;\n    out << *this;\n    return out.str();\n}\n\n/*\n * Operators\n */\nbool DawgLexicon::operator ==(const DawgLexicon& lex2) const {\n    return equals(lex2);\n}\n\nbool DawgLexicon::operator !=(const DawgLexicon& lex2) const {\n    return !equals(lex2);\n}\n\nbool DawgLexicon::operator <(const DawgLexicon& lex2) const {\n    return stanfordcpplib::collections::compare(*this, lex2) < 0;\n}\n\nbool DawgLexicon::operator <=(const DawgLexicon& lex2) const {\n    return stanfordcpplib::collections::compare(*this, lex2) <= 0;\n}\n\nbool DawgLexicon::operator >(const DawgLexicon& lex2) const {\n    return stanfordcpplib::collections::compare(*this, lex2) > 0;\n}\n\nbool DawgLexicon::operator >=(const DawgLexicon& lex2) const {\n    return stanfordcpplib::collections::compare(*this, lex2) >= 0;\n}\n\nDawgLexicon DawgLexicon::operator +(const DawgLexicon& lex2) const {\n    DawgLexicon lex = *this;\n    lex.addAll(lex2);\n    return lex;\n}\n\nDawgLexicon DawgLexicon::operator +(std::initializer_list<std::string> list) const {\n    DawgLexicon lex = *this;\n    lex.addAll(list);\n    return lex;\n}\n\nDawgLexicon DawgLexicon::operator +(const std::string& word) const {\n    DawgLexicon lex = *this;\n    lex.add(word);\n    return lex;\n}\n\nDawgLexicon& DawgLexicon::operator +=(const DawgLexicon& lex2) {\n    return addAll(lex2);\n}\n\nDawgLexicon& DawgLexicon::operator +=(std::initializer_list<std::string> list) {\n    return addAll(list);\n}\n\nDawgLexicon& DawgLexicon::operator +=(const std::string& word) {\n    add(word);\n    return *this;\n}\n\n/*\n * Private methods and helpers\n */\n\nDawgLexicon& DawgLexicon::operator ,(const std::string& word) {\n    add(word);\n    return *this;\n}\n\nint DawgLexicon::countDawgWords(Edge* ep) const {\n    int count = 0;\n    while (true) {\n        if (ep->accept) count++;\n        if (ep->children != 0) {\n            count += countDawgWords(&_edges[ep->children]);\n        }\n        if (ep->lastEdge) break;\n        ep++;\n    }\n    return count;\n}\n\nvoid DawgLexicon::deepCopy(const DawgLexicon& src) {\n    if (!src._edges) {\n        _edges = nullptr;\n        _start = nullptr;\n    } else {\n        _edgeCount = src._edgeCount;\n        _edges = new Edge[src._edgeCount];\n        memcpy(_edges, src._edges, sizeof(Edge)*src._edgeCount);\n        _start = _edges + (src._start - src._edges);\n    }\n    _dawgWordsCount = src._dawgWordsCount;\n    _otherWords = src._otherWords;\n}\n\n/*\n * Implementation notes: findEdgeForChar\n * -------------------------------------\n * Iterate over sequence of children to find one that\n * matches the given char.  Returns nullptr if we get to\n * last child without finding a match (thus no such\n * child edge exists).\n */\nDawgLexicon::Edge* DawgLexicon::findEdgeForChar(Edge* children, char ch) const {\n    Edge* curEdge = children;\n    while (true) {\n        if (curEdge->letter == charToOrd(ch)) {\n            return curEdge;\n        }\n        if (curEdge->lastEdge) {\n            return nullptr;\n        }\n        curEdge++;\n    }\n}\n\n/*\n * Implementation notes: readBinaryFile\n * ------------------------------------\n * The binary lexicon file format must follow this pattern:\n * DAWG:<startnode index>:<num bytes>:<num bytes block of edge data>\n */\nvoid DawgLexicon::readBinaryFile(std::istream& input) {\n    input.clear();\n    input.seekg(0, std::ios::beg);\n    long startIndex, numBytes;\n    char firstFour[4], expected[] = \"DAWG\";\n    if (input.fail()) {\n        error(\"DawgLexicon::addWordsFromFile: Couldn't read input\");\n    }\n    input.read(firstFour, 4);\n    input.get();\n    input >> startIndex;\n    input.get();\n    input >> numBytes;\n    input.get();\n    if (input.fail() || strncmp(firstFour, expected, 4) != 0\n            || startIndex < 0 || numBytes < 0) {\n        error(\"DawgLexicon::addWordsFromFile: Improperly formed lexicon file\");\n    }\n    _edgeCount = numBytes / sizeof(Edge);\n    _edges = new Edge[_edgeCount];\n    _start = &_edges[startIndex];\n    input.read((char*) _edges, numBytes);\n    if (input.fail() && !input.eof()) {\n        error(\"DawgLexicon::addWordsFromFile: Improperly formed lexicon file\");\n    }\n\n#if defined(BYTE_ORDER) && BYTE_ORDER == LITTLE_ENDIAN\n    // uint32_t* cur = (uint32_t*) edges;\n    uint32_t* cur = reinterpret_cast<uint32_t*>(_edges);\n    for (int i = 0; i < _edgeCount; i++, cur++) {\n        *cur = my_ntohl(*cur);\n    }\n#endif\n\n    _dawgWordsCount = countDawgWords(_start);\n}\n\n/*\n * Implementation notes: readBinaryFile\n * ------------------------------------\n * The binary lexicon file format must follow this pattern:\n * DAWG:<startnode index>:<num bytes>:<num bytes block of edge data>\n */\nvoid DawgLexicon::readBinaryFile(const std::string& filename) {\n#ifdef _foreachpatch_h\n    std::ifstream input(filename.c_str(), __IOS_IN__ | __IOS_BINARY__);\n#else\n    std::ifstream input(filename.c_str(), std::ios::in | std::ios::binary);\n#endif // _foreachpatch_h\n    if (input.fail()) {\n        error(\"DawgLexicon::addWordsFromFile: Couldn't open lexicon file \" + filename);\n    }\n    readBinaryFile(input);\n    input.close();\n}\n\n/*\n * Implementation notes: traceToLastEdge\n * -------------------------------------\n * Given a string, trace out path through the DAWG edge-by-edge.\n * If a path exists, return last edge; otherwise return nullptr.\n */\n\nDawgLexicon::Edge* DawgLexicon::traceToLastEdge(const std::string& s) const {\n    if (!_start) {\n        return nullptr;\n    }\n    Edge* curEdge = findEdgeForChar(_start, s[0]);\n    int len = (int) s.length();\n    for (int i = 1; i < len; i++) {\n        if (!curEdge || !curEdge->children) {\n            return nullptr;\n        }\n        curEdge = findEdgeForChar(&_edges[curEdge->children], s[i]);\n    }\n    return curEdge;\n}\n\nDawgLexicon& DawgLexicon::operator =(const DawgLexicon& src) {\n    if (this != &src) {\n        if (_edges) {\n            delete[] _edges;\n        }\n        deepCopy(src);\n    }\n    return *this;\n}\n\nvoid DawgLexicon::iterator::advanceToNextWordInSet() {\n    if (setIterator == setEnd) {\n        currentSetWord = \"\";\n    } else {\n        currentSetWord = *setIterator;\n        ++setIterator;\n    }\n}\n\nvoid DawgLexicon::iterator::advanceToNextEdge() {\n    Edge *ep = edgePtr;\n    if (ep->children == 0) {\n        while (ep && ep->lastEdge) {\n            if (stack.isEmpty()) {\n                edgePtr = nullptr;\n                return;\n            } else {\n                ep = stack.pop();\n                currentDawgPrefix.resize(currentDawgPrefix.length() - 1);\n            }\n        }\n        edgePtr = ep + 1;\n    } else {\n        stack.push(ep);\n        currentDawgPrefix.push_back(lp->ordToChar(ep->letter));\n        edgePtr = &lp->_edges[ep->children];\n    }\n}\n\nvoid DawgLexicon::iterator::advanceToNextWordInDawg() {\n    if (!edgePtr) {\n        edgePtr = lp->_start;\n    } else {\n        advanceToNextEdge();\n    }\n    while (edgePtr && !edgePtr->accept) {\n        advanceToNextEdge();\n    }\n}\n\nstd::ostream& operator <<(std::ostream& os, const DawgLexicon& lex) {\n    return stanfordcpplib::collections::writeCollection(os, lex);\n}\n\nstd::istream& operator >>(std::istream& is, DawgLexicon& lex) {\n    std::string element;\n    return stanfordcpplib::collections::readCollection(is, lex, element, /* descriptor */ \"DawgLexicon::operator >>\");\n}\n\nint hashCode(const DawgLexicon& lex) {\n    return stanfordcpplib::collections::hashCodeCollection(lex);\n}\n\n/*\n * Swaps a 4-byte long from big to little endian byte order\n */\nstatic uint32_t my_ntohl(uint32_t arg) {\n    uint32_t result = ((arg & 0xff000000) >> 24) |\n            ((arg & 0x00ff0000) >> 8) |\n            ((arg & 0x0000ff00) << 8) |\n            ((arg & 0x000000ff) << 24);\n    return result;\n}\n\n/*\n * File: hashcode.cpp\n * ------------------\n * This file implements the interface declared in hashcode.h.\n *\n * @version 2019/04/16\n * - bugfix for win64 involving hashCode for void* pointers\n * @version 2018/08/10\n * - bugfixes involving negative hash codes, unified string hashing\n * @version 2017/10/21\n * - added hash codes for short, unsigned integers\n * @version 2015/07/05\n * - using global hashing functions rather than global variables\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"hashcode.h\"\n#undef INTERNAL_INCLUDE\n#include <cstddef>       // For size_t\n#include <cstdint>       // For uintptr_t\n#include <cstring>       // For strlen\n\nstatic const int HASH_SEED = 5381;               // Starting point for first cycle\nstatic const int HASH_MULTIPLIER = 33;           // Multiplier for each cycle\nstatic const int HASH_MASK = unsigned(-1) >> 1;  // All 1 bits except the sign\n\nint hashSeed() {\n    return HASH_SEED;\n}\n\nint hashMultiplier() {\n    return HASH_MULTIPLIER;\n}\n\nint hashMask() {\n    return HASH_MASK;\n}\n\n/* \n * Implementation notes: hashCode(int)\n * -----------------------------------\n * Hash code for integers masks off the sign bit, guaranteeing a nonnegative value.\n */\nint hashCode(int key) {\n    return key & HASH_MASK;\n}\n\n/* \n * Implementation notes: hashCode(other primitive types)\n * -----------------------------------------------------\n * Hash codes for all other primitive types forward to the hash code for integers.\n * This ensures that all hash codes get the proper masking treatment.\n *\n * Thanks to Jeremy Barenholtz for identifying that the original versions of these\n * functions, which just cast their arguments to integers, could lead to negative\n * results.\n */\nint hashCode(bool key) {\n    return hashCode(static_cast<int>(key));\n}\n\nint hashCode(char key) {\n    return hashCode(static_cast<int>(key));\n}\n\nint hashCode(unsigned int key) {\n    return hashCode(static_cast<int>(key));\n}\n\nint hashCode(long key) {\n    return hashCode(static_cast<int>(key));\n}\n\nint hashCode(unsigned long key) {\n    return hashCode(static_cast<int>(key));\n}\n\nint hashCode(short key) {\n    return hashCode(static_cast<int>(key));\n}\n\nint hashCode(unsigned short key) {\n    return hashCode(static_cast<int>(key));\n}\n\n#ifdef _WIN64\nint hashCode(uintptr_t key) {\n    return hashCode(static_cast<unsigned long>(key));\n}\n#endif // _WIN64\n\n/* \n * Implementation notes: hashCode(void*)\n * -----------------------------------------------------\n * Catch-all handler for pointers not matched by other\n * overloads just treats the pointer value numerically.\n */\nint hashCode(void* key) {\n    return hashCode(reinterpret_cast<uintptr_t>(key));\n}\n\n/*\n * Implementation notes: hashCode(string), hashCode(double)\n * --------------------------------------------------------\n * This function takes a string key and uses it to derive a hash code,\n * which is a nonnegative integer related to the key by a deterministic\n * function that distributes keys well across the space of integers.\n * The general method is called linear congruence, which is also used\n * in random-number generators.  The specific algorithm used here is\n * called djb2 after the initials of its inventor, Daniel J. Bernstein,\n * Professor of Mathematics at the University of Illinois at Chicago.\n */\nint hashCode(const char* base, size_t numBytes) {\n    unsigned hash = HASH_SEED;\n    for (size_t i = 0; i < numBytes; i++) {\n        hash = HASH_MULTIPLIER * hash + base[i];\n    }\n    return hashCode(hash);\n} \n\nint hashCode(const char* str) {\n    return hashCode(str, strlen(str));\n}\n\nint hashCode(const std::string& str) {\n    return hashCode(str.data(), str.length());\n}\n\nint hashCode(double key) {\n    return hashCode(reinterpret_cast<const char *>(&key), sizeof(double));\n}\n\nint hashCode(float key) {\n    return hashCode(reinterpret_cast<const char *>(&key), sizeof(float));\n}\n\nint hashCode(long double key) {\n    return hashCode(reinterpret_cast<const char *>(&key), sizeof(long double));\n}\n\n/*\n * File: lexicon.cpp\n * -----------------\n * A Lexicon is a word list. This Lexicon is backed by a data\n * structure called a prefix tree or trie (\"try\").\n *\n * This is a re-implementation of Lexicon.  Its previous implementation used\n * a pair of structures: a directed acyclic word graph (DAWG) and an STL set.\n * That implementation was discarded because of several reasons:\n *\n * - It relied on binary file formats that were not readable by students.\n * - It did not provide for expected class members like remove.\n * - It had a clunky pair of data structures that had to be searched separately.\n * - It was optimized for space usage over ease of use and maintenance.\n *\n * The original DAWG implementation is retained as dawglexicon.h/cpp.\n * \n * @version 2018/03/10\n * - added method front\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * @version 2016/08/11\n * - added operators +, +=, -, -=, *, *= to better match Set/HashSet\n * @version 2016/08/10\n * - added constructor support for std initializer_list usage, such as {\"a\", \"b\", \"c\"}\n * @version 2016/08/04\n * - fixed operator >> to not throw errors\n * @version 2015/07/05\n * - using global hashing functions rather than global variables\n * @version 2014/11/13\n * - added comparison operators <, >=, etc.\n * - added hashCode function\n * @version 2014/10/10\n * - added comparison operators ==, !=\n * - removed 'using namespace' statement\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"lexicon.h\"\n#undef INTERNAL_INCLUDE\n#include <cctype>\n#include <cstdlib>\n#include <cstring>\n#include <fstream>\n#include <iostream>\n#include <sstream>\n#include <string>\n\n#define INTERNAL_INCLUDE 1\n#include \"collections.h\"\n#define INTERNAL_INCLUDE 1\n#include \"dawglexicon.h\"\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"filelib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"hashcode.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#undef INTERNAL_INCLUDE\n\nstatic bool scrub(std::string& str);\n\nLexicon::Lexicon() :\n        _root(nullptr),\n        _size(0),\n        _removeFlag(false) {\n    // empty\n}\n\nLexicon::Lexicon(std::istream& input) :\n        _root(nullptr),\n        _size(0),\n        _removeFlag(false) {\n    addWordsFromFile(input);\n}\n\nLexicon::Lexicon(const std::string& filename) :\n        _root(nullptr),\n        _size(0),\n        _removeFlag(false) {\n    addWordsFromFile(filename);\n}\n\nLexicon::Lexicon(std::initializer_list<std::string> list) :\n        _root(nullptr),\n        _size(0),\n        _removeFlag(false) {\n    addAll(list);\n}\n\nLexicon::Lexicon(const Lexicon& src) :\n        _root(nullptr),\n        _size(0),\n        _removeFlag(false) {\n    deepCopy(src);\n}\n\nLexicon::~Lexicon() {\n    clear();\n}\n\nbool Lexicon::add(const std::string& word) {\n    if (word.empty()) {\n        return false;\n    }\n    std::string scrubbed = word;\n    if (!scrub(scrubbed)) {\n        return false;\n    }\n    return addHelper(_root, scrubbed, /* originalWord */ scrubbed);\n}\n\nLexicon& Lexicon::addAll(const Lexicon& lex) {\n    for (const std::string& word : lex) {\n        add(word);\n    }\n    return *this;\n}\n\nLexicon& Lexicon::addAll(std::initializer_list<std::string> list) {\n    for (const std::string& word : list) {\n        add(word);\n    }\n    return *this;\n}\n\nvoid Lexicon::addWordsFromFile(std::istream& input) {\n    bool isDAWG = isDAWGFile(input);\n    rewindStream(input);\n    if (isDAWG) {\n        readBinaryFile(input);\n    } else {\n        if (input.fail()) {\n            error(\"Lexicon::addWordsFromFile: Couldn't read from input\");\n        }\n        std::string line;\n        while (getline(input, line)) {\n            add(trim(line));\n        }\n    }\n}\n\nvoid Lexicon::addWordsFromFile(const std::string& filename) {\n    std::ifstream input(filename.c_str());\n    if (input.fail()) {\n        error(\"Lexicon::addWordsFromFile: Couldn't read from input file \" + filename);\n    }\n    addWordsFromFile(input);\n    input.close();\n}\n\nstd::string Lexicon::back() const {\n    if (isEmpty()) {\n        error(\"Lexicon::back: lexicon is empty\");\n    }\n    return _allWords.back();\n}\n\nvoid Lexicon::clear() {\n    _size = 0;\n    _allWords.clear();\n    deleteTree(_root);\n    _root = nullptr;\n}\n\nbool Lexicon::contains(const std::string& word) const {\n    if (word.empty()) {\n        return false;\n    }\n    std::string scrubbed = word;\n    if (!scrub(scrubbed)) {\n        return false;\n    }\n    return containsHelper(_root, scrubbed, /* isPrefix */ false);\n}\n\nbool Lexicon::containsAll(const Lexicon& lex2) const {\n    for (const std::string& word : lex2) {\n        if (!contains(word)) {\n            return false;\n        }\n    }\n    return true;\n}\n\nbool Lexicon::containsAll(std::initializer_list<std::string> list) const {\n    for (const std::string& word : list) {\n        if (!contains(word)) {\n            return false;\n        }\n    }\n    return true;\n}\n\nbool Lexicon::containsPrefix(const std::string& prefix) const {\n    if (prefix.empty()) {\n        return true;\n    }\n    std::string scrubbed = prefix;\n    if (!scrub(scrubbed)) {\n        return false;\n    }\n    return containsHelper(_root, scrubbed, /* isPrefix */ true);\n}\n\nbool Lexicon::equals(const Lexicon& lex2) const {\n    return stanfordcpplib::collections::equals(*this, lex2);\n}\n\nstd::string Lexicon::first() const {\n    if (isEmpty()) {\n        error(\"Lexicon::first: lexicon is empty\");\n    }\n    return _allWords.front();\n}\n\nstd::string Lexicon::front() const {\n    if (isEmpty()) {\n        error(\"Lexicon::front: lexicon is empty\");\n    }\n    return _allWords.front();\n}\n\nvoid Lexicon::insert(const std::string& word) {\n    add(word);\n}\n\nbool Lexicon::isEmpty() const {\n    return size() == 0;\n}\n\nbool Lexicon::isSubsetOf(const Lexicon& lex2) const {\n    auto it = begin();\n    auto end = this->end();\n    while (it != end) {\n        if (!lex2.contains(*it)) {\n            return false;\n        }\n        ++it;\n    }\n    return true;\n}\n\nbool Lexicon::isSubsetOf(std::initializer_list<std::string> list) const {\n    Lexicon lex2(list);\n    return isSubsetOf(lex2);\n}\n\nbool Lexicon::isSupersetOf(const Lexicon& lex2) const {\n    return containsAll(lex2);\n}\n\nbool Lexicon::isSupersetOf(std::initializer_list<std::string> list) const {\n    return containsAll(list);\n}\n\nvoid Lexicon::mapAll(void (*fn)(std::string)) const {\n    for (std::string word : _allWords) {\n        fn(word);\n    }\n}\n\nvoid Lexicon::mapAll(void (*fn)(const std::string&)) const {\n    for (std::string word : _allWords) {\n        fn(word);\n    }\n}\n\nbool Lexicon::remove(const std::string& word) {\n    if (word.empty()) {\n        return false;\n    }\n    std::string scrubbed = word;\n    if (!scrub(scrubbed)) {\n        return false;\n    }\n    return removeHelper(_root, scrubbed, /* originalWord */ scrubbed, /* isPrefix */ false);\n}\n\nLexicon& Lexicon::removeAll(const Lexicon& lex2) {\n    Vector<std::string> toRemove;\n    for (const std::string& word : *this) {\n        if (lex2.contains(word)) {\n            toRemove.add(word);\n        }\n    }\n    for (const std::string& word : toRemove) {\n        remove(word);\n    }\n    return *this;\n}\n\nLexicon& Lexicon::removeAll(std::initializer_list<std::string> list) {\n    for (const std::string& word : list) {\n        remove(word);\n    }\n    return *this;\n}\n\nbool Lexicon::removePrefix(const std::string& prefix) {\n    if (prefix.empty()) {\n        bool result = !isEmpty();\n        clear();\n        return result;\n    }\n    std::string scrubbed = prefix;\n    if (!scrub(scrubbed)) {\n        return false;\n    }\n    \n    return removeHelper(_root, scrubbed, /* originalWord */ scrubbed, /* isPrefix */ true);\n}\n\nLexicon& Lexicon::retainAll(const Lexicon& lex2) {\n    Vector<std::string> toRemove;\n    for (const std::string& word : *this) {\n        if (!lex2.contains(word)) {\n            toRemove.add(word);\n        }\n    }\n    for (const std::string& word : toRemove) {\n        remove(word);\n    }\n    return *this;\n}\n\nLexicon& Lexicon::retainAll(std::initializer_list<std::string> list) {\n    Lexicon lex2(list);\n    return retainAll(lex2);\n}\n\nint Lexicon::size() const {\n    return _size;\n}\n\nstd::string Lexicon::toString() const {\n    std::ostringstream out;\n    out << *this;\n    return out.str();\n}\n\n/*\n * Operators\n */\nbool Lexicon::operator ==(const Lexicon& lex2) const {\n    return equals(lex2);\n}\n\nbool Lexicon::operator !=(const Lexicon& lex2) const {\n    return !equals(lex2);\n}\n\nbool Lexicon::operator <(const Lexicon& lex2) const {\n    return stanfordcpplib::collections::compare(*this, lex2) < 0;\n}\n\nbool Lexicon::operator <=(const Lexicon& lex2) const {\n    return stanfordcpplib::collections::compare(*this, lex2) <= 0;\n}\n\nbool Lexicon::operator >(const Lexicon& lex2) const {\n    return stanfordcpplib::collections::compare(*this, lex2) > 0;\n}\n\nbool Lexicon::operator >=(const Lexicon& lex2) const {\n    return stanfordcpplib::collections::compare(*this, lex2) >= 0;\n}\n\nLexicon Lexicon::operator +(const Lexicon& lex2) const {\n    Lexicon lex = *this;\n    lex.addAll(lex2);\n    return lex;\n}\n\nLexicon Lexicon::operator +(std::initializer_list<std::string> list) const {\n    Lexicon lex = *this;\n    lex.addAll(list);\n    return lex;\n}\n\nLexicon Lexicon::operator +(const std::string& word) const {\n    Lexicon lex = *this;\n    lex.add(word);\n    return lex;\n}\n\nLexicon Lexicon::operator *(const Lexicon& lex2) const {\n    Lexicon lex = *this;\n    return lex.retainAll(lex2);\n}\n\nLexicon Lexicon::operator *(std::initializer_list<std::string> list) const {\n    Lexicon lex = *this;\n    return lex.retainAll(list);\n}\n\nLexicon Lexicon::operator -(const Lexicon& lex2) const {\n    Lexicon lex = *this;\n    return lex.removeAll(lex2);\n}\n\nLexicon Lexicon::operator -(std::initializer_list<std::string> list) const {\n    Lexicon lex = *this;\n    return lex.removeAll(list);\n}\n\nLexicon Lexicon::operator -(const std::string& word) const {\n    Lexicon lex = *this;\n    lex.remove(word);\n    return lex;\n}\n\nLexicon& Lexicon::operator +=(const Lexicon& lex2) {\n    return addAll(lex2);\n}\n\nLexicon& Lexicon::operator +=(std::initializer_list<std::string> list) {\n    return addAll(list);\n}\n\nLexicon& Lexicon::operator +=(const std::string& word) {\n    add(word);\n    _removeFlag = false;\n    return *this;\n}\n\nLexicon& Lexicon::operator *=(const Lexicon& lex2) {\n    return retainAll(lex2);\n}\n\nLexicon& Lexicon::operator *=(std::initializer_list<std::string> list) {\n    return retainAll(list);\n}\n\nLexicon& Lexicon::operator -=(const Lexicon& lex2) {\n    return removeAll(lex2);\n}\n\nLexicon& Lexicon::operator -=(std::initializer_list<std::string> list) {\n    return removeAll(list);\n}\n\nLexicon& Lexicon::operator -=(const std::string& word) {\n    remove(word);\n    _removeFlag = true;\n    return *this;\n}\n\n/* private helpers implementation */\n\nLexicon& Lexicon::operator ,(const std::string& word) {\n    if (_removeFlag) {\n        remove(word);\n    } else {\n        add(word);\n    }\n    return *this;\n}\n\n// pre: word is scrubbed to contain only lowercase a-z letters\nbool Lexicon::addHelper(TrieNode*& node, const std::string& word, const std::string& originalWord) {\n    if (!node) {\n        // create nodes all the way down, one for each letter of the word\n        node = new TrieNode();\n    }\n\n    if (word.empty()) {\n        // base case: we have added all of the letters of this word\n        if (node->isWord()) {\n            return false;   // duplicate word; already present\n        } else {\n            // new word; add it\n            node->setWord(true);\n            _size++;\n            _allWords.add(originalWord);\n            return true;\n        }\n    } else {\n        // recursive case: chop off first letter, traverse the rest\n        return addHelper(node->child(word[0]), word.substr(1), originalWord);\n    }\n}\n\n// pre: word is scrubbed to contain only lowercase a-z letters\nbool Lexicon::containsHelper(TrieNode* node, const std::string& word, bool isPrefix) const {\n    if (!node) {\n        // base case: no pointer down to here, so prefix must not exist\n        return false;\n    } else if (word.length() == 0) {\n        // base case: Found nodes all the way down.\n        // If we are looking for a prefix, this means this path IS a prefix,\n        // so we should return true.\n        // If we are looking for an exact word match rather than a prefix,\n        // we must check the isWord flag to see that this word was added\n        return (isPrefix ? true : node->isWord());\n    } else {\n        // recursive case: follow appropriate child pointer for one letter\n        return containsHelper(node->child(word[0]), word.substr(1), isPrefix);\n    }\n}\n\n// pre: word is scrubbed to contain only lowercase a-z letters\nbool Lexicon::removeHelper(TrieNode*& node, const std::string& word, const std::string& originalWord, bool isPrefix) {\n    if (!node) {\n        // base case: dead end; this word/prefix must not be contained\n        return false;\n    } else if (word.empty()) {\n        // base case: we have walked all of the letters of this word/prefix\n        // and now we must do the removal\n        if (isPrefix) {\n            // remove this node and all of its descendents\n            removeSubtreeHelper(node, originalWord);   // removes from m_allWords, sets m_size\n            node = nullptr;\n        } else {\n            // found this word in the lexicon;\n            if (node->isLeaf()) {\n                // remove this leaf node only\n                delete node;\n                node = nullptr;\n            } else {\n                // de-word-ify this node, but leave it because it may\n                // still have children that are valid words\n                if (node->isWord()) {\n                    node->setWord(false);\n                }\n            }\n            _allWords.remove(originalWord);\n            _size--;\n        }\n        return true;\n    } else {\n        // recursive case: chop off first letter, traverse the rest\n        bool wasLeaf = node->isLeaf();\n        bool result = removeHelper(node->child(word[0]), word.substr(1), originalWord, isPrefix);\n\n        // memory cleanup: if I wasn't a leaf but now am, and am not a word,\n        // then I am now unneeded, so remove me too\n        if (result && !wasLeaf && node\n                && node->isLeaf() && !node->isWord()) {\n            delete node;\n            node = nullptr;\n        }\n        return result;\n    }\n}\n\n// remove/free this node and all descendents\nvoid Lexicon::removeSubtreeHelper(TrieNode*& node, const std::string& originalWord) {\n    if (node) {\n        for (char letter = 'a'; letter <= 'z'; letter++) {\n            removeSubtreeHelper(node->child(letter), originalWord + letter);\n        }\n        if (node->isWord()) {\n            _allWords.remove(originalWord);\n            _size--;\n        }\n        delete node;\n        node = nullptr;\n    }\n}\n\nvoid Lexicon::deepCopy(const Lexicon& src) {\n    for (std::string word : src._allWords) {\n        add(word);\n    }\n}\n\nvoid Lexicon::deleteTree(TrieNode* node) {\n    if (node) {\n        for (char letter = 'a'; letter <= 'z'; letter++) {\n            deleteTree(node->child(letter));\n        }\n        delete node;\n    }\n}\n\n/*\n * Returns true if the given file (probably) represents a\n * binary DAWG lexicon data file.\n */\nbool Lexicon::isDAWGFile(std::istream& input) const {\n    char firstFour[4], expected[] = \"DAWG\";\n    if (input.fail()) {\n        error(std::string(\"Lexicon::addWordsFromFile: Couldn't read input\"));\n    }\n    input.read(firstFour, 4);\n    bool result = strncmp(firstFour, expected, 4) == 0;\n    return result;\n}\n\n/*\n * Returns true if the given file (probably) represents a\n * binary DAWG lexicon data file.\n */\nbool Lexicon::isDAWGFile(const std::string& filename) const {\n    std::ifstream input(filename.c_str());\n    if (input.fail()) {\n        error(std::string(\"Lexicon::addWordsFromFile: Couldn't open lexicon file \") + filename);\n    }\n    bool result = isDAWGFile(input);\n    input.close();\n    return result;\n}\n\n/*\n * We just delegate to DawgLexicon, the old implementation, to read a binary\n * lexicon data file, and then we extract its yummy data into our trie.\n */\nvoid Lexicon::readBinaryFile(std::istream& input) {\n    DawgLexicon ldawg(input);\n    for (std::string word : ldawg) {\n        add(word);\n    }\n}\n\n/*\n * We just delegate to DawgLexicon, the old implementation, to read a binary\n * lexicon data file, and then we extract its yummy data into our trie.\n */\nvoid Lexicon::readBinaryFile(const std::string& filename) {\n    DawgLexicon ldawg(filename);\n    for (std::string word : ldawg) {\n        add(word);\n    }\n}\n\nLexicon& Lexicon::operator =(const Lexicon& src) {\n    if (this != &src) {\n        clear();\n        deepCopy(src);\n    }\n    return *this;\n}\n\nstd::ostream& operator <<(std::ostream& out, const Lexicon& lex) {\n    out << lex._allWords;\n    return out;\n}\n\nstd::istream& operator >>(std::istream& is, Lexicon& lex) {\n    std::string element;\n    return stanfordcpplib::collections::readCollection(is, lex, element, /* descriptor */ \"Lexicon::operator >>\");\n}\n\n/*\n * Hash function for lexicons.\n */\nint hashCode(const Lexicon& lex) {\n    return stanfordcpplib::collections::hashCodeCollection(lex);\n}\n\nstatic bool scrub(std::string& str) {\n    size_t nChars = str.length();\n    size_t outIndex = 0;\n    for (size_t i = 0; i < nChars; i++) {\n        std::string::value_type ch = tolower(str[i]);\n        if (ch < 'a' || ch > 'z') {\n            return false;   // illegal string\n        } else {\n            str[outIndex] = ch;\n            outIndex++;\n        }\n    }\n    if (outIndex != nChars) {\n        str.erase(outIndex, nChars - outIndex);\n    }\n    return true;\n}\n\n/*\n * File: server.cpp\n * ----------------\n * This file exports a set of functions that implement a simple HTTP server\n * that can listen for connections.\n *\n * @version 2016/10/04\n * - removed all static variables (replaced with STATIC_VARIABLE macros)\n * @version 2016/03/16\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"server.h\"\n#define INTERNAL_INCLUDE 1\n#include \"filelib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"map.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"private/static.h\"\n#undef INTERNAL_INCLUDE\n\nnamespace HttpServer {\nSTATIC_CONST_VARIABLE_DECLARE(std::string, CONTENT_TYPE_DEFAULT, \"text/html\")\n// STATIC_CONST_VARIABLE_DECLARE(std::string, CONTENT_TYPE_ERROR, \"text/plain\")\nSTATIC_VARIABLE_DECLARE(bool, isRunning, false)\n\nbool isRunning() {\n    return STATIC_VARIABLE(isRunning);\n}\n\nstd::string getContentType(const std::string& extension) {\n    static Map<std::string, std::string> CONTENT_TYPE_MAP;   // extension => MIME type\n\n    if (extension.empty()) {\n        return STATIC_VARIABLE(CONTENT_TYPE_DEFAULT);\n    }\n\n    // populate map of content types, if needed\n    if (CONTENT_TYPE_MAP.isEmpty()) {\n        CONTENT_TYPE_MAP[\"bmp\"] = \"image/bmp\";\n        CONTENT_TYPE_MAP[\"bz\"] = \"application/x-bzip\";\n        CONTENT_TYPE_MAP[\"bz2\"] = \"application/x-bzip2\";\n        CONTENT_TYPE_MAP[\"c\"] = \"text/plain\";\n        CONTENT_TYPE_MAP[\"cc\"] = \"text/plain\";\n        CONTENT_TYPE_MAP[\"com\"] = \"application/octet-stream\";\n        CONTENT_TYPE_MAP[\"cpp\"] = \"text/plain\";\n        CONTENT_TYPE_MAP[\"css\"] = \"text/css\";\n        CONTENT_TYPE_MAP[\"doc\"] = \"application/msword\";\n        CONTENT_TYPE_MAP[\"dot\"] = \"application/msword\";\n        CONTENT_TYPE_MAP[\"exe\"] = \"application/octet-stream\";\n        CONTENT_TYPE_MAP[\"gif\"] = \"image/gif\";\n        CONTENT_TYPE_MAP[\"gz\"] = \"application/x-gzip\";\n        CONTENT_TYPE_MAP[\"gzip\"] = \"application/x-gzip\";\n        CONTENT_TYPE_MAP[\"h\"] = \"text/plain\";\n        CONTENT_TYPE_MAP[\"hh\"] = \"text/plain\";\n        CONTENT_TYPE_MAP[\"hpp\"] = \"text/plain\";\n        CONTENT_TYPE_MAP[\"htm\"] = \"text/html\";\n        CONTENT_TYPE_MAP[\"html\"] = \"text/html\";\n        CONTENT_TYPE_MAP[\"htmls\"] = \"text/html\";\n        CONTENT_TYPE_MAP[\"ico\"] = \"image/x-icon\";\n        CONTENT_TYPE_MAP[\"inf\"] = \"text/plain\";\n        CONTENT_TYPE_MAP[\"jar\"] = \"application/octet-stream\";\n        CONTENT_TYPE_MAP[\"jav\"] = \"text/plain\";\n        CONTENT_TYPE_MAP[\"java\"] = \"text/plain\";\n        CONTENT_TYPE_MAP[\"jpe\"] = \"image/jpeg\";\n        CONTENT_TYPE_MAP[\"jpeg\"] = \"image/jpeg\";\n        CONTENT_TYPE_MAP[\"jpg\"] = \"image/jpeg\";\n        CONTENT_TYPE_MAP[\"mid\"] = \"audio/midi\";\n        CONTENT_TYPE_MAP[\"midi\"] = \"audio/midi\";\n        CONTENT_TYPE_MAP[\"mod\"] = \"audio/mod\";\n        CONTENT_TYPE_MAP[\"mov\"] = \"video/quicktime\";\n        CONTENT_TYPE_MAP[\"mp3\"] = \"text/plain\";\n        CONTENT_TYPE_MAP[\"mpg\"] = \"video/mpeg\";\n        CONTENT_TYPE_MAP[\"o\"] = \"application/octet-stream\";\n        CONTENT_TYPE_MAP[\"odc\"] = \"application/vnd.oasis.opendocument.chart\";\n        CONTENT_TYPE_MAP[\"odp\"] = \"application/vnd.oasis.opendocument.presentation\";\n        CONTENT_TYPE_MAP[\"ods\"] = \"application/vnd.oasis.opendocument.spreadsheet\";\n        CONTENT_TYPE_MAP[\"odt\"] = \"application/vnd.oasis.opendocument.text\";\n        CONTENT_TYPE_MAP[\"pct\"] = \"image/x-pict\";\n        CONTENT_TYPE_MAP[\"pcx\"] = \"image/x-pcx\";\n        CONTENT_TYPE_MAP[\"pdf\"] = \"application/pdf\";\n        CONTENT_TYPE_MAP[\"pl\"] = \"text/plain\";\n        CONTENT_TYPE_MAP[\"pm\"] = \"text/plain\";\n        CONTENT_TYPE_MAP[\"ppt\"] = \"application/powerpoint\";\n        CONTENT_TYPE_MAP[\"ps\"] = \"application/postscript\";\n        CONTENT_TYPE_MAP[\"psd\"] = \"application/octet-stream\";\n        CONTENT_TYPE_MAP[\"py\"] = \"text/plain\";\n        CONTENT_TYPE_MAP[\"qt\"] = \"video/quicktime\";\n        CONTENT_TYPE_MAP[\"ra\"] = \"audio/x-realaudio\";\n        CONTENT_TYPE_MAP[\"rb\"] = \"text/plain\";\n        CONTENT_TYPE_MAP[\"rm\"] = \"application/vnd.rn-realmedia\";\n        CONTENT_TYPE_MAP[\"rtf\"] = \"application/rtf\";\n        CONTENT_TYPE_MAP[\"s\"] = \"text/x-asm\";\n        CONTENT_TYPE_MAP[\"sh\"] = \"text/plain\";\n        CONTENT_TYPE_MAP[\"shtml\"] = \"text/html\";\n        CONTENT_TYPE_MAP[\"swf\"] = \"application/x-shockwave-flash\";\n        CONTENT_TYPE_MAP[\"tcl\"] = \"application/x-tcl\";\n        CONTENT_TYPE_MAP[\"tex\"] = \"application/x-tex\";\n        CONTENT_TYPE_MAP[\"tgz\"] = \"application/x-compressed\";\n        CONTENT_TYPE_MAP[\"tif\"] = \"image/tiff\";\n        CONTENT_TYPE_MAP[\"tiff\"] = \"image/tiff\";\n        CONTENT_TYPE_MAP[\"txt\"] = \"text/plain\";\n        CONTENT_TYPE_MAP[\"voc\"] = \"audio/voc\";\n        CONTENT_TYPE_MAP[\"wav\"] = \"audio/wav\";\n        CONTENT_TYPE_MAP[\"xls\"] = \"application/excel\";\n        CONTENT_TYPE_MAP[\"xlt\"] = \"application/excel\";\n        CONTENT_TYPE_MAP[\"xpm\"] = \"image/xpm\";\n        CONTENT_TYPE_MAP[\"z\"] = \"application/x-compressed\";\n        CONTENT_TYPE_MAP[\"zip\"] = \"application/zip\";\n    }\n\n    // \"foo.BAZ.BaR\" => \"bar\"\n    std::string ext = toLowerCase(extension);\n    int dot = stringLastIndexOf(ext, \".\");\n    if (dot >= 0) {\n        ext = ext.substr(dot + 1);\n    }\n\n    if (CONTENT_TYPE_MAP.containsKey(ext)) {\n        return CONTENT_TYPE_MAP[ext];\n    } else {\n        return STATIC_VARIABLE(CONTENT_TYPE_DEFAULT);\n    }\n}\n\nstd::string getErrorMessage(int httpErrorCode) {\n    static Map<int, std::string> ERROR_MESSAGE_MAP;   // 404 => \"File not found\"\n\n    // populate map of content types, if needed\n    if (ERROR_MESSAGE_MAP.isEmpty()) {\n        ERROR_MESSAGE_MAP[200] = \"HTTP ERROR 200: OK\";\n        ERROR_MESSAGE_MAP[201] = \"HTTP ERROR 201: Created\";\n        ERROR_MESSAGE_MAP[202] = \"HTTP ERROR 202: Accepted\";\n        ERROR_MESSAGE_MAP[204] = \"HTTP ERROR 204: No content\";\n        ERROR_MESSAGE_MAP[301] = \"HTTP ERROR 301: Moved permanently\";\n        ERROR_MESSAGE_MAP[302] = \"HTTP ERROR 302: Found\";\n        ERROR_MESSAGE_MAP[303] = \"HTTP ERROR 303: See other\";\n        ERROR_MESSAGE_MAP[304] = \"HTTP ERROR 304: Not modified\";\n        ERROR_MESSAGE_MAP[305] = \"HTTP ERROR 305: Use proxy\";\n        ERROR_MESSAGE_MAP[307] = \"HTTP ERROR 307: Temporary redirect\";\n        ERROR_MESSAGE_MAP[308] = \"HTTP ERROR 308: Permanent redirect\";\n        ERROR_MESSAGE_MAP[400] = \"HTTP ERROR 400: Bad request\";\n        ERROR_MESSAGE_MAP[401] = \"HTTP ERROR 401: Unauthorized\";\n        ERROR_MESSAGE_MAP[402] = \"HTTP ERROR 402: Payment required\";\n        ERROR_MESSAGE_MAP[403] = \"HTTP ERROR 403: Forbidden\";\n        ERROR_MESSAGE_MAP[404] = \"HTTP ERROR 404: Not found\";\n        ERROR_MESSAGE_MAP[405] = \"HTTP ERROR 405: Request method not allowed\";\n        ERROR_MESSAGE_MAP[406] = \"HTTP ERROR 406: Not acceptable\";\n        ERROR_MESSAGE_MAP[407] = \"HTTP ERROR 407: Proxy authentication failed\";\n        ERROR_MESSAGE_MAP[408] = \"HTTP ERROR 408: Request timeout\";\n        ERROR_MESSAGE_MAP[409] = \"HTTP ERROR 409: Conflict\";\n        ERROR_MESSAGE_MAP[410] = \"HTTP ERROR 410: Gone\";\n        ERROR_MESSAGE_MAP[413] = \"HTTP ERROR 413: Payload too large\";\n        ERROR_MESSAGE_MAP[415] = \"HTTP ERROR 415: Unsupported media type\";\n        ERROR_MESSAGE_MAP[420] = \"HTTP ERROR 420: Enhance your calm; hey whatever man\";\n        ERROR_MESSAGE_MAP[429] = \"HTTP ERROR 429: Too many requests\";\n        ERROR_MESSAGE_MAP[500] = \"HTTP ERROR 500: Internal server error\";\n        ERROR_MESSAGE_MAP[501] = \"HTTP ERROR 501: Not implemented\";\n        ERROR_MESSAGE_MAP[502] = \"HTTP ERROR 502: Bad gateway\";\n        ERROR_MESSAGE_MAP[503] = \"HTTP ERROR 503: Service unavailable\";\n        ERROR_MESSAGE_MAP[504] = \"HTTP ERROR 504: Gateway timeout\";\n        ERROR_MESSAGE_MAP[508] = \"HTTP ERROR 508: Loop detected\";\n        ERROR_MESSAGE_MAP[511] = \"HTTP ERROR 511: Network authentication required\";\n    }\n\n    if (ERROR_MESSAGE_MAP.containsKey(httpErrorCode)) {\n        return ERROR_MESSAGE_MAP[httpErrorCode];\n    } else {\n        return \"HTTP ERROR \" + std::to_string(httpErrorCode) + \": Unknown error\";\n    }\n}\n\n// \"http://foo.bar.com/a/b/c.txt?a=b&c=d#lol\" => \"txt\"\n// \"http://foo.bar.com/index.html\" => \"html\"\n// \"http://foo.bar.com/a/b/\" => \"\"\nstd::string getUrlExtension(const std::string& url) {\n    std::string url2 = toLowerCase(trim(url));\n    int questionMark = stringIndexOf(url2, \"?\");\n    if (questionMark >= 0) {\n        url2 = url2.substr(0, questionMark);\n    }\n    int hash = stringIndexOf(url2, \"#\");\n    if (hash >= 0) {\n        url2 = url2.substr(0, hash);\n    }\n    int slash = stringLastIndexOf(url2, \"/\");\n    if (slash >= 0) {\n        url2 = url2.substr(slash + 1);\n    }\n    int dot = stringLastIndexOf(url2, \".\");\n    if (dot >= 0) {\n        url2 = url2.substr(dot + 1);\n    }\n    return url2;\n}\n\nvoid sendResponse(const GEvent& /*event*/, const std::string& /* responseText */,\n                  const std::string& contentType) {\n    if (!isRunning()) {\n        error(\"HttpServer::sendResponse: server is not running\");\n    }\n    std::string contentTypeActual = contentType;\n    if (contentTypeActual.empty()) {\n        // TODO\n        // contentTypeActual = getContentType(getUrlExtension(event.getRequestURL()));\n    }\n    // TODO\n    // stanfordcpplib::getPlatform()->httpserver_sendResponse(event.getRequestID(), HTTP_ERROR_OK, contentTypeActual, responseText);\n}\n\nvoid sendResponseError(const GEvent& /*event*/, int httpErrorCode,\n                       const std::string& errorMessage) {\n    std::string errorMessageActual = errorMessage;\n    if (errorMessageActual.empty()) {\n        errorMessageActual = getErrorMessage(httpErrorCode);\n    }\n    // TODO\n    // stanfordcpplib::getPlatform()->httpserver_sendResponse(event.getRequestID(), httpErrorCode, STATIC_VARIABLE(CONTENT_TYPE_ERROR), errorMessageActual);\n}\n\nvoid sendResponseFile(const GEvent& /*event*/, const std::string& responseFilePath,\n                      const std::string& contentType) {\n    if (!isRunning()) {\n        error(\"HttpServer::sendResponse: server is not running\");\n    }\n    std::string contentTypeActual = contentType;\n    if (contentTypeActual.empty()) {\n        contentTypeActual = getContentType(getExtension(responseFilePath));\n    }\n    // TODO\n    // stanfordcpplib::getPlatform()->httpserver_sendResponseFile(event.getRequestID(), contentType, responseFilePath);\n}\n\n\nvoid startServer(int /*port*/) {\n    if (!STATIC_VARIABLE(isRunning)) {\n        // stanfordcpplib::getPlatform()->httpserver_start(port);\n        STATIC_VARIABLE(isRunning) = true;\n    }\n}\n\nvoid stopServer() {\n    if (STATIC_VARIABLE(isRunning)) {\n        STATIC_VARIABLE(isRunning) = false;\n        // stanfordcpplib::getPlatform()->httpserver_stop();\n    }\n}\n} // namespace HttpServer\n\n/*\n * File: plainconsole.cpp\n * ----------------------\n * This file defines the implementation of functions to add utility to the\n * C++ plain text console streams, cin/cout/cerr.\n * See plainconsole.h for documentation of each function.\n *\n * @author Marty Stepp\n * @version 2017/11/12\n * - changed limited stream to throw error rather than raise SIGABRT for better displaying\n * @version 2017/10/20\n * - fixed compiler warning about 0 vs nullptr\n * @version 2015/10/21\n * @since 2015/10/21\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"plainconsole.h\"\n#include <csignal>\n#include <iostream>\n#include <string>\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#undef INTERNAL_INCLUDE\n\nnamespace plainconsole {\n/*\n * A stream buffer that just forwards everything to a delegate,\n * but echoes any user input read from it.\n * Used to (sometimes) echo console input when redirected in from a file.\n * http://www.cplusplus.com/reference/streambuf/streambuf/\n */\nclass EchoingStreambuf : public std::streambuf {\nprivate:\n    /* Constants */\n    static const int BUFFER_SIZE = 4096;\n\n    /* Instance variables */\n    char inBuffer[BUFFER_SIZE];\n    char outBuffer[BUFFER_SIZE];\n    std::istream instream;\n    std::ostream& outstream;\n    int outputLimit;\n    int outputPrinted;\n\npublic:\n    EchoingStreambuf(std::streambuf& buf, std::ostream& out)\n            : instream(&buf),\n              outstream(out),\n              outputLimit(0),\n              outputPrinted(0) {\n        // outstream.rdbuf(&buf);\n        setg(inBuffer, inBuffer, inBuffer);\n        setp(outBuffer, outBuffer + BUFFER_SIZE);\n    }\n\n    ~EchoingStreambuf() {\n        /* Empty */\n    }\n    \n    virtual void setOutputLimit(int limit) {\n        outputLimit = limit;\n    }\n\n    virtual int underflow() {\n        // 'return 0' handles end-of-input from stdin redirect\n        std::string line;\n        if (!getline(instream, line)) {\n            return 0;\n        }\n        \n        int n = line.length();\n        if (n + 1 >= BUFFER_SIZE) {\n            error(\"EchoingStreambuf::underflow: String too long\");\n        }\n        for (int i = 0; i < n; i++) {\n            inBuffer[i] = line[i];\n        }\n        inBuffer[n++] = '\\n';\n        inBuffer[n] = '\\0';\n        setg(inBuffer, inBuffer, inBuffer + n);\n        \n        // this is the place to echo the input\n        // fprintf(stdout, \"inBuffer: \\\"%s\\\"\\n\", inBuffer);\n        // fflush(stdout);\n        outstream << inBuffer;\n        outstream.flush();\n        \n        return inBuffer[0];\n    }\n\n    virtual int overflow(int ch = EOF) {\n        std::string line = \"\";\n        for (char *cp = pbase(); cp < pptr(); cp++) {\n            if (*cp == '\\n') {\n                // puts(line.c_str());\n                outputPrinted += line.length();\n                if (outputLimit > 0 && outputPrinted > outputLimit) {\n                    error(\"excessive output printed\");\n                }\n                line = \"\";\n            } else {\n                line += *cp;\n            }\n        }\n        if (line != \"\") {\n            // puts(line.c_str());\n            outputPrinted += line.length();\n            if (outputLimit > 0 && outputPrinted > outputLimit) {\n                error(\"excessive output printed\");\n            }\n        }\n        setp(outBuffer, outBuffer + BUFFER_SIZE);\n        if (ch != EOF) {\n            outBuffer[0] = ch;\n            pbump(1);\n        }\n        return ch != EOF;\n    }\n    \n    virtual int sync() {\n        return overflow();\n    }\n};\n\n/*\n * A stream buffer that limits how many characters you can print to it.\n * If you exceed that many, it throws an ErrorException.\n */\nclass LimitedStreambuf : public std::streambuf {\nprivate:\n    std::ostream outstream;\n    int outputLimit;\n    int outputPrinted;\n\npublic:\n    LimitedStreambuf(std::streambuf& buf, int limit)\n            : outstream(&buf),\n              outputLimit(limit),\n              outputPrinted(0) {\n        setp(nullptr, nullptr);   // // no buffering, overflow on every char\n    }\n\n    virtual void setOutputLimit(int limit) {\n        outputLimit = limit;\n    }\n\n    virtual int overflow(int ch = EOF) {\n        outputPrinted++;\n        if (outputLimit > 0 && outputPrinted > outputLimit) {\n            // error(\"excessive output printed\");\n            // outstream.setstate(std::ios::failbit | std::ios::badbit | std::ios::eofbit);\n            // kill the program\n            // (use a signal rather than error/exception\n            // so student won't try to catch it)\n            // error(\"Excessive output printed; you may have an infinite loop in your code.\");\n            raise(SIGUSR1);\n        } else {\n            outstream.put(ch);\n        }\n        return ch;\n    }\n};\n\nvoid setOutputLimit(int limit) {\n    if (limit <= 0) {\n        error(\"Platform::setConsoleOutputLimit: limit must be a positive integer\");\n    }\n    LimitedStreambuf* limitedbufOut = new LimitedStreambuf(*std::cout.rdbuf(), limit);\n    LimitedStreambuf* limitedbufErr = new LimitedStreambuf(*std::cerr.rdbuf(), limit);\n    std::cout.rdbuf(limitedbufOut);\n    std::cerr.rdbuf(limitedbufErr);\n}\n\nvoid setEcho(bool value) {\n    static EchoingStreambuf* echobufIn = nullptr;\n    static std::streambuf* oldBuf = nullptr;\n    \n    if (!echobufIn && value) {\n        // start to echo user input pulled from cin\n        oldBuf = std::cin.rdbuf();\n        echobufIn = new EchoingStreambuf(*std::cin.rdbuf(), std::cout);\n        std::cin.rdbuf(echobufIn);\n    } else if (echobufIn && !value) {\n        // stop echo\n        std::cin.rdbuf(oldBuf);\n        oldBuf = nullptr;\n        echobufIn = nullptr;\n    }\n}\n\n} // namespace plainconsole\n\n/*\n * File: urlstream.cpp\n * -------------------\n * This file contains the implementation of the iurlstream class.\n * Please see urlstream.h for information about how to use these classes.\n *\n * @author Marty Stepp\n * @version 2018/10/02\n * - added close() method for backward compatibility (does nothing)\n * @version 2018/09/18\n * - refactored to integrate with pure-C++ GDownloader implementation\n * - added getErrorMessage method\n * @version 2018/06/20\n * - support for setting headers such as user agent\n * - https URL support\n * - changed string to const string&\n * @version 2015/07/05\n * - removed static global Platform variable, replaced by getPlatform as needed\n * @version 2014/10/14\n * - fixed .c_str() Mac bug on ifstream::open() call\n * @since 2014/10/08\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"urlstream.h\"\n#include <sstream>\n#include <string>\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"filelib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gdownloader.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#undef INTERNAL_INCLUDE\n\nnamespace {\n    /*\n     * Given a status code, determines whether it's successful.\n     * All successful HTTP status codes are of the form 2xx.\n     */\n    bool isHttpSuccess(int code) {\n        return code >= 200 && code <= 299;\n    }\n}\n\niurlstream::iurlstream()\n        : _url(\"\"),\n          _httpStatusCode(0) {\n    // empty\n}\n\niurlstream::iurlstream(const std::string& url)\n        : _url(url),\n          _httpStatusCode(0) {\n    open(url);\n}\n\nvoid iurlstream::close() {\n    // empty\n}\n\nint iurlstream::getErrorCode() const {\n    return isHttpSuccess(_httpStatusCode)? 0 : _httpStatusCode;\n}\n\nstd::string iurlstream::getErrorMessage() const {\n    return _errorMessage;\n}\n\nint iurlstream::getHttpStatusCode() const {\n    /* All HTTP status codes are between 1xx and 5xx, inclusive. */\n    return _httpStatusCode >= 100 && _httpStatusCode <= 599? _httpStatusCode : 0;\n}\n\nstd::string iurlstream::getHeader(const std::string& name) const {\n    return _headers[name];\n}\n\nstd::string iurlstream::getUrl() const {\n    return _url;\n}\n\nstd::string iurlstream::getUserAgent() const {\n    if (_headers.containsKey(\"User-Agent\")) {\n        return _headers[\"User-Agent\"];\n    } else {\n        return \"\";\n    }\n}\n\nvoid iurlstream::open(const std::string& url) {\n    if (!url.empty()) {\n        _url = url;\n    }\n    _errorMessage = \"\";\n    \n    // GDownloader does the heavy lifting of downloading the file for us\n    GDownloader downloader;\n\n    // insert/send headers if needed\n    if (!_headers.isEmpty()) {\n        for (std::string headerName : _headers) {\n            downloader.setHeader(headerName, _headers[headerName]);\n        }\n    }\n    std::string urlData = downloader.downloadAsString(_url);\n    _httpStatusCode = downloader.getHttpStatusCode();\n\n    if (downloader.hasError()) {\n        setstate(std::ios::failbit);\n        _errorMessage = downloader.getErrorMessage();\n    } else {\n        clear();\n        this->write(urlData.c_str(), static_cast<std::streamsize>(urlData.length()));\n        this->seekg(0);\n    }\n}\n\nvoid iurlstream::setHeader(const std::string& name, const std::string& value) {\n    _headers[name] = value;\n}\n\nvoid iurlstream::setUserAgent(const std::string& userAgent) {\n    setHeader(\"User-Agent\", userAgent);\n}\n\n/*\n * File: filelib.cpp\n * -----------------\n * This file implements the filelib.h interface.\n * Platform-dependent functions are handled through filelib_* functions\n * defined in filelibunix.cpp and filelibwindows.cpp.\n * \n * @version 2016/11/20\n * - small bug fix in readEntireStream method (failed for non-text files)\n * @version 2016/11/12\n * - added fileSize, readEntireStream\n * @version 2016/08/12\n * - added second overload of openFileDialog that accepts path parameter\n * @version 2015/07/05\n * - removed static global Platform variable, replaced by getPlatform as needed\n * - moved appendSpace function to simpio\n * @version 2015/04/12\n * - added promptUserForFile overload without stream parameter\n * @version 2014/10/19\n * - alphabetized function declarations\n * - converted many funcs to take const string& rather than string for efficiency\n * - added listDirectory overload that returns a Vector\n * @version 2014/10/08\n * - removed 'using namespace' statement\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"filelib.h\"\n#include <algorithm>\n#include <cctype>\n#include <cstdio>\n#define INTERNAL_INCLUDE 1\n#include \"simpio.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#undef INTERNAL_INCLUDE\n\n/* Prototypes */\n\nstatic void splitPath(const std::string& path, Vector<std::string> list);\nstatic bool recursiveMatch(const std::string& str, int sx, const std::string& pattern, int px);\n\n/* Implementations */\n\nvoid createDirectory(const std::string& path) {\n    return platform::filelib_createDirectory(expandPathname(path));\n}\n\nvoid createDirectoryPath(const std::string& path) {\n    size_t cp = 0;\n    if (path == \"\") return;\n    std::string expandedPath = expandPathname(path);\n    char sep = getDirectoryPathSeparator()[0];\n    if (expandedPath.substr(1, 2) == \":\\\\\") { // Windows drive letter followed by ':\\'\n        cp = 2;\n    }\n    while ((cp = expandedPath.find(sep, cp + 1)) != std::string::npos) {\n       createDirectory(expandedPath.substr(0, cp));\n    }\n    createDirectory(expandedPath);\n}\n\nstd::string defaultExtension(const std::string& filename, const std::string& ext) {\n    std::string extCopy = ext;\n    bool force = (extCopy[0] == '*');\n    if (force) extCopy = extCopy.substr(1);\n    int dot = -1;\n    int len = filename.length();\n    for (int i = 0; i < len; i++) {\n        char ch = filename[i];\n        if (ch == '.') dot = i;\n        if (ch == '/' || ch == '\\\\') dot = -1;\n    }\n    if (dot == -1) {\n        force = true;\n        dot = len;\n    }\n    if (force) {\n        return filename.substr(0, dot) + extCopy;\n    } else {\n        return filename;\n    }\n}\n\nvoid deleteFile(const std::string& filename) {\n    platform::filelib_deleteFile(expandPathname(filename));\n}\n\nstd::string expandPathname(const std::string& filename) {\n    return platform::filelib_expandPathname(filename);\n}\n\nbool fileExists(const std::string& filename) {\n    return platform::filelib_fileExists(filename);\n}\n\nint fileSize(const std::string& filename) {\n    std::ifstream input;\n    input.open(filename.c_str(), std::ifstream::binary);\n    if (input.fail()) {\n        return -1;\n    } else {\n        input.seekg(0, std::ifstream::end);\n        return (int) input.tellg();\n    }\n}\n\nstd::string findOnPath(const std::string& path, const std::string& filename) {\n    std::ifstream stream;\n    std::string result = openOnPath(stream, path, filename);\n    if (result != \"\") stream.close();\n    return result;\n}\n\nstd::string getAbsolutePath(const std::string& path) {\n    return platform::filelib_getAbsolutePath(path);\n}\n\nstd::string getCurrentDirectory() {\n    return platform::filelib_getCurrentDirectory();\n}\n\nstd::string getDirectoryPathSeparator() {\n    return platform::filelib_getDirectoryPathSeparator();\n}\n\nstd::string getExtension(const std::string& filename) {\n    int dot = -1;\n    int len = filename.length();\n    for (int i = 0; i < len; i++) {\n        char ch = filename[i];\n        if (ch == '.') dot = i;\n        if (ch == '/' || ch == '\\\\') dot = -1;\n    }\n    if (dot == -1) {\n        return \"\";\n    } else {\n        return filename.substr(dot);\n    }\n}\n\nstd::string getHead(const std::string& filename) {\n    size_t slash = std::string::npos;\n    size_t len = filename.length();\n    for (size_t i = 0; i < len; i++) {\n        char ch = filename[i];\n        if (ch == '/' || ch == '\\\\') slash = i;\n    }\n    if (slash == std::string::npos) {\n        return \"\";\n    } else if (slash == 0) {\n        return \"/\";\n    } else {\n        return filename.substr(0, slash);\n    }\n}\n\nstd::string getRoot(const std::string& filename) {\n    int dot = -1;\n    int len = filename.length();\n    for (int i = 0; i < len; i++) {\n        char ch = filename[i];\n        if (ch == '.') dot = i;\n        if (ch == '/' || ch == '\\\\') dot = -1;\n    }\n    if (dot == -1) {\n        return filename;\n    } else {\n        return filename.substr(0, dot);\n    }\n}\n\nstd::string getSearchPathSeparator() {\n    return platform::filelib_getSearchPathSeparator();\n}\n\nstd::string getTail(const std::string& filename) {\n    size_t slash = std::string::npos;\n    size_t len = filename.length();\n    for (size_t i = 0; i < len; i++) {\n        char ch = filename[i];\n        if (ch == '/' || ch == '\\\\') slash = i;\n    }\n    if (slash == std::string::npos) {\n        return filename;\n    } else {\n        return filename.substr(slash + 1);\n    }\n}\n\nstd::string getTempDirectory() {\n    return platform::filelib_getTempDirectory();\n}\n\nbool isDirectory(const std::string& filename) {\n    return platform::filelib_isDirectory(expandPathname(filename));\n}\n\nbool isFile(const std::string& filename) {\n    return platform::filelib_isFile(expandPathname(filename));\n}\n\nbool isSymbolicLink(const std::string& filename) {\n    return platform::filelib_isSymbolicLink(filename);\n}\n\nvoid listDirectory(const std::string& path, Vector<std::string>& list) {\n    list.clear();\n    return platform::filelib_listDirectory(expandPathname(path), list);\n}\n\nVector<std::string> listDirectory(const std::string& path) {\n    Vector<std::string> vec;\n    listDirectory(path, vec);\n    return vec;\n}\n\nbool matchFilenamePattern(const std::string& filename, const std::string& pattern) {\n    return recursiveMatch(filename, 0, pattern, 0);\n}\n\nbool openFile(std::ifstream& stream, const std::string& filename) {\n    stream.clear();\n    stream.open(expandPathname(filename).c_str());\n    return !stream.fail();\n}\n\nbool openFile(std::ofstream& stream, const std::string& filename) {\n    stream.clear();\n    stream.open(expandPathname(filename).c_str());\n    return !stream.fail();\n}\n\nstd::string openFileDialog(std::ifstream& stream) {\n    return openFileDialog(stream, \"Open File\", \"\");\n}\n\nstd::string openFileDialog(std::ifstream& stream,\n                           const std::string& title) {\n    return openFileDialog(stream, title, \"\");\n}\n\nstd::string openFileDialog(std::ifstream& stream,\n                           const std::string& title,\n                           const std::string& path) {\n    std::string filename = platform::file_openFileDialog(title, \"load\", path);\n    if (filename == \"\") return \"\";\n    stream.open(filename.c_str());\n    return (stream.fail()) ? \"\" : filename;\n}\n\nstd::string openFileDialog(const std::string& title,\n                           const std::string& path) {\n    std::string filename = platform::file_openFileDialog(title, \"load\", path);\n    if (filename == \"\") return \"\";\n    return (fileExists(filename)) ? filename : \"\";\n}\n\nstd::string openFileDialog(std::ofstream& stream) {\n    return openFileDialog(stream, \"Open File\", \"\");\n}\n\nstd::string openFileDialog(std::ofstream& stream,\n                           const std::string& title) {\n    return openFileDialog(stream, title, \"\");\n}\n\nstd::string openFileDialog(std::ofstream& stream,\n                           const std::string& title,\n                           const std::string& path) {\n    std::string filename = platform::file_openFileDialog(title, \"save\", path);\n    if (filename == \"\") return \"\";\n    stream.open(filename.c_str());\n    return (stream.fail()) ? \"\" : filename;\n}\n\nstd::string openOnPath(std::ifstream& stream,\n                       const std::string& path,\n                       const std::string& filename) {\n    Vector<std::string> paths;\n    splitPath(path, paths);\n    for (std::string dir : paths) {\n        std::string pathname = dir + \"/\" + filename;\n        if (openFile(stream, pathname)) return pathname;\n    }\n    return \"\";\n}\n\nstd::string openOnPath(std::ofstream& stream,\n                       const std::string& path,\n                       const std::string& filename) {\n    Vector<std::string> paths;\n    splitPath(path, paths);\n    for (std::string dir : paths) {\n        std::string pathname = dir + \"/\" + filename;\n        if (openFile(stream, pathname)) return pathname;\n    }\n    return \"\";\n}\n\nstd::string promptUserForFile(std::ifstream& stream,\n                              const std::string& prompt,\n                              const std::string& reprompt) {\n    std::string promptCopy = prompt;\n    std::string repromptCopy = reprompt;\n    if (reprompt == \"\") {\n        repromptCopy = \"Unable to open that file.  Try again.\";\n    }\n    appendSpace(promptCopy);\n    while (true) {\n        std::cout << promptCopy;\n        std::string filename;\n        getline(std::cin, filename);\n        if (!filename.empty()) {\n            openFile(stream, filename);\n            if (!stream.fail()) return filename;\n            stream.clear();\n        }\n        std::cout << repromptCopy << std::endl;\n        if (promptCopy == \"\") promptCopy = \"Input file: \";\n    }\n}\n\nstd::string promptUserForFile(std::ofstream& stream,\n                              const std::string& prompt,\n                              const std::string& reprompt) {\n    std::string promptCopy = prompt;\n    std::string repromptCopy = reprompt;\n    if (reprompt == \"\") {\n        repromptCopy = \"Unable to open that file.  Try again.\";\n    }\n    appendSpace(promptCopy);\n    while (true) {\n        std::cout << promptCopy;\n        std::string filename;\n        getline(std::cin, filename);\n        if (!filename.empty()) {\n            openFile(stream, filename);\n            if (!stream.fail()) return filename;\n            stream.clear();\n        }\n        std::cout << repromptCopy << std::endl;\n        if (promptCopy == \"\") promptCopy = \"Output file: \";\n    }\n}\n\nstd::string promptUserForFile(const std::string& prompt,\n                              const std::string& reprompt) {\n    std::string promptCopy = prompt;\n    std::string repromptCopy = reprompt;\n    if (reprompt == \"\") {\n        repromptCopy = \"Unable to open that file.  Try again.\";\n    }\n    appendSpace(promptCopy);\n    while (true) {\n        std::cout << promptCopy;\n        std::string filename;\n        getline(std::cin, filename);\n        if (!filename.empty()) {\n            std::ifstream stream;\n            openFile(stream, filename);\n            if (!stream.fail()) {\n                stream.close();\n                return filename;\n            }\n        }\n        std::cout << repromptCopy << std::endl;\n        if (promptCopy == \"\") promptCopy = \"Input file: \";\n    }\n}\n\nvoid readEntireFile(std::istream& is, Vector<std::string>& lines) {\n    lines.clear();\n    while (true) {\n        std::string line;\n        getline(is, line);\n        if (is.fail()) break;\n        lines.add(line);\n    }\n}\n\nstd::string readEntireFile(const std::string& filename) {\n    std::string out;\n    if (readEntireFile(filename, out)) {\n        return out;\n    } else {\n        error(std::string(\"input file not found or cannot be opened: \") + filename);\n        return \"\";\n    }\n}\n\nbool readEntireFile(const std::string& filename, std::string& out) {\n    std::ifstream input;\n    input.open(filename.c_str());\n    if (input.fail()) {\n        return false;\n    }\n    readEntireStream(input, out);\n    input.close();\n    return true;\n}\n\nstd::string readEntireStream(std::istream& input) {\n    std::string out;\n    readEntireStream(input, out);\n    return out;\n}\n\nvoid readEntireStream(std::istream& input, std::string& out) {\n    std::ostringstream output;\n    while (true) {\n        int ch = input.get();\n        if (input.fail()) {\n            break;\n        }\n        output.put(ch);\n    }\n    out = output.str();\n}\n\nvoid renameFile(const std::string& oldname, const std::string& newname) {\n    std::string oldExpand = expandPathname(oldname);\n    std::string newExpand = expandPathname(newname);\n    rename(oldExpand.c_str(), newExpand.c_str());\n}\n\nvoid rewindStream(std::istream& input) {\n    input.clear();                  // removes any current eof/failure flags\n    input.seekg(0, std::ios::beg);  // tells the stream to seek back to the beginning\n}\n\nvoid setCurrentDirectory(const std::string& path) {\n    return platform::filelib_setCurrentDirectory(path);\n}\n\nbool writeEntireFile(const std::string& filename,\n                     const std::string& text,\n                     bool append) {\n    std::ofstream output;\n    if (append) {\n        output.open(filename.c_str(), std::ios_base::out | std::ios_base::app);\n    } else {\n        output.open(filename.c_str());\n    }\n    if (output.fail()) {\n        return false;\n    }\n    output << text;\n    output.close();\n    return !output.fail();\n}\n\n/* Private functions */\n\nstatic void splitPath(const std::string& path, Vector<std::string> list) {\n    char sep = (path.find(';') == std::string::npos) ? ':' : ';';\n    std::string pathCopy = path + sep;\n    size_t start = 0;\n    while (true) {\n        size_t finish = pathCopy.find(sep, start);\n        if (finish == std::string::npos) break;\n        if (finish > start + 1) {\n            list.add(pathCopy.substr(start, finish - start - 1));\n        }\n        start = finish + 1;\n    }\n}\n\nstatic bool recursiveMatch(const std::string& str, int sx, const std::string& pattern, int px) {\n    int slen = str.length();\n    int plen = pattern.length();\n    if (px == plen) return (sx == slen);\n    char pch = pattern[px];\n    if (pch == '*') {\n        for (int i = sx; i <= slen; i++) {\n            if (recursiveMatch(str, i, pattern, px + 1)) return true;\n        }\n        return false;\n    }\n    if (sx == slen) return false;\n    char sch = str[sx];\n    if (pch == '[') {\n        bool match = false;\n        bool invert = false;\n        px++;\n        if (px == plen) {\n            error(\"matchFilenamePattern: missing ]\");\n        }\n        if (pattern[px] == '^') {\n            px++;\n            invert = true;\n        }\n        while (px < plen && pattern[px] != ']') {\n            if (px + 2 < plen && pattern[px + 1] == '-') {\n                match |= (sch >= pattern[px] && sch <= pattern[px + 2]);\n                px += 3;\n            } else {\n                match |= (sch == pattern[px]);\n                px++;\n            }\n        }\n        if (px == plen) {\n            error(\"matchFilenamePattern: missing ]\");\n        }\n        if (match == invert) return false;\n    } else if (pch != '?') {\n        if (pch != sch) return false;\n    }\n    return recursiveMatch(str, sx + 1, pattern, px + 1);\n}\n\n/*\n * File: bitstream.cpp\n * -------------------\n * This file contains the implementation of ibitstream and obitstream classes.\n * These classes are patterned after (and, in fact, inherit from) the standard\n * ifstream and ofstream classes.  Please see bitstream.h for information about\n * how a client properly uses these classes.\n *\n * @author Keith Schwarz, Eric Roberts, Marty Stepp\n * @version 2019/04/20\n * - added toPrintable(string)\n * @version 2016/11/12\n * - made toPrintable non-static and visible\n * @version 2014/10/08\n * - removed 'using namespace' statement\n * 2014/01/23\n * - added slightly more descriptive error messages e.g. in writeBit\n * - whitespace reformatting\n * Previously last modified on Mon May 21 19:50:00 PST 2012 by Keith Schwarz\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"bitstream.h\"\n#include <iostream>\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#undef INTERNAL_INCLUDE\n\nstatic const int NUM_BITS_IN_BYTE = 8;\n\ninline int GetNthBit(int n, int fromByte) {\n    return ((fromByte & (1 << n)) != 0);\n}\n\ninline void SetNthBit(int n, int & inByte) {\n    inByte |= (1 << n);\n}\n\nstd::string toPrintable(int ch) {\n    if (ch == '\\n') {\n        return \"'\\\\n'\";\n    } else if (ch == '\\t') {\n        return \"'\\\\t'\";\n    } else if (ch == '\\r') {\n        return \"'\\\\r'\";\n    } else if (ch == '\\f') {\n        return \"'\\\\f'\";\n    } else if (ch == '\\b') {\n        return \"'\\\\b'\";\n    } else if (ch == '\\0') {\n        return \"'\\\\0'\";\n    } else if (ch == ' ') {\n        return \"' '\";\n    } else if (ch == (int) PSEUDO_EOF) {\n        return \"EOF\";\n    } else if (ch == (int) NOT_A_CHAR) {\n        return \"NONE\";\n    } else if (!isgraph(ch)) {\n        return \"???\";\n    } else {\n        return std::string(\"'\") + (char) ch + std::string(\"'\");\n    }\n}\n\nstd::string toPrintable(const std::string& s) {\n    std::ostringstream out;\n    for (char ch : s) {\n        if (ch == '\\n') {\n            out << \"\\\\n\";\n        } else if (ch == '\\t') {\n            out << \"\\\\t\";\n        } else if (ch == '\\r') {\n            out << \"\\\\r\";\n        } else if (ch == '\\f') {\n            out << \"\\\\f\";\n        } else if (ch == '\\b') {\n            out << \"\\\\b\";\n        } else if (ch == '\\0') {\n            out << \"\\\\0\";\n        } else if (ch == ' ') {\n            out << ' ';\n        } else if (isgraph(ch)) {\n            out << ch;\n        } else {\n            out << '\\\\';\n            out << (static_cast<int>(ch & 0xff));\n        }\n    }\n    return out.str();\n}\n\n/* Constructor ibitstream::ibitstream\n * ----------------------------------\n * Each ibitstream tracks 3 integers as private data.\n * \"lastTell\" is streampos of the last byte that was read (this is used\n * to detect when other non-readBit activity has changed the tell)\n * \"curByte\" contains contents of byte currently being read\n * \"pos\" is the bit position within curByte that is next to read\n * We set initial state for lastTell and curByte to 0, then pos is\n * set at 8 so that next readBit will trigger a fresh read.\n */\nibitstream::ibitstream() : std::istream(nullptr), lastTell(0), curByte(0), pos(NUM_BITS_IN_BYTE) {\n    this->fake = false;\n}\n\n/* Member function ibitstream::readBit\n * -----------------------------------\n * If bits remain in curByte, retrieve next and increment pos\n * Else if end of curByte (or some other read happened), then read next byte\n * and start reading from bit position 0 of that byte.\n * If read byte from file at EOF, return EOF.\n */\nint ibitstream::readBit() {\n    if (!is_open()) {\n        error(\"ibitstream::readBit: Cannot read a bit from a stream that is not open.\");\n    }\n\n    if (this->fake) {\n        int bit = get();\n        if (bit == 0 || bit == '0') {\n            return 0;\n        } else {\n            return 1;\n        }\n    } else {\n        // if just finished bits from curByte or if data read from stream after last readBit()\n        if (lastTell != tellg() || pos == NUM_BITS_IN_BYTE) {\n            if ((curByte = get()) == EOF) {\n                // read next single byte from file\n                return EOF;\n            }\n            pos = 0; // start reading from first bit of new byte\n            lastTell = tellg();\n        }\n        int result = GetNthBit(pos, curByte);\n        pos++;   // advance bit position for next call to readBit\n        return result;\n    }\n}\n\n/* Member function ibitstream::rewind\n * ----------------------------------\n * Simply seeks back to beginning of file, so reading begins again\n * from start.\n */\nvoid ibitstream::rewind() {\n    if (!is_open()) {\n        error(\"ibitstream::rewind: Cannot rewind stream that is not open.\");\n    }\n    clear();\n    seekg(0, std::ios::beg);\n}\n\nvoid ibitstream::setFake(bool fake) {\n    this->fake = fake;\n}\n\n/* Member function ibitstream::size\n * --------------------------------\n * Seek to file end and use tell to retrieve position.\n * In order to not disrupt reading, we also record cur streampos and\n * re-seek to there before returning.\n */\nlong ibitstream::size() {\n    if (!is_open()) {\n        error(\"ibitstream::size: Cannot get size of stream which is not open.\");\n    }\n    clear();                    // clear any error state\n    streampos cur = tellg();    // save current streampos\n    seekg(0, std::ios::end);    // seek to end\n    streampos end = tellg();    // get offset\n    seekg(cur);                 // seek back to original pos\n    return long(end);\n}\n\n/* Member function ibitstream::is_open\n * -----------------------------------\n * Default implementation of is_open has the stream always\n * open.  Subclasses can customize this if they'd like.\n */\nbool ibitstream::is_open() {\n    return true;\n}\n\n/* Constructor obitstream::obitstream\n * ----------------------------------\n * Each obitstream tracks 3 integers as private data.\n * \"lastTell\" is streampos of the last byte that was written (this is used\n * to detect when other non-writeBit activity has changed the tell)\n * \"curByte\" contains contents of byte currently being written\n * \"pos\" is the bit position within curByte that is next to write\n * We set initial state for lastTell and curByte to 0, then pos is\n * set at 8 so that next writeBit will start a new byte.\n */\nobitstream::obitstream() : std::ostream(nullptr), lastTell(0), curByte(0), pos(NUM_BITS_IN_BYTE) {\n    this->fake = false;\n}\n\n/* Member function obitstream::writeBit\n * ------------------------------------\n * If bits remain to be written in curByte, add bit into byte and increment pos\n * Else if end of curByte (or some other write happened), then start a fresh\n * byte at position 0.\n * We write the byte out for each bit (backing up to overwrite as needed), rather\n * than waiting for 8 bits.  This is because the client might make\n * 3 writeBit calls and then start using << so we can't wait til full-byte\n * boundary to flush any partial-byte bits.\n */\nvoid obitstream::writeBit(int bit) {\n    if (bit != 0 && bit != 1) {\n        error(std::string(\"obitstream::writeBit: must pass an integer argument of 0 or 1. You passed the integer \")\n              + toPrintable(bit) + \" (\" + std::to_string(bit) + \").\");\n    }\n    if (!is_open()) {\n        error(\"obitstream::writeBit: stream is not open\");\n    }\n\n    if (this->fake) {\n        put(bit == 1 ? '1' : '0');\n    } else {\n        // if just filled curByte or if data written to stream after last writeBit()\n        if (lastTell != tellp() || pos == NUM_BITS_IN_BYTE) {\n            curByte = 0;   // zero out byte for next writes\n            pos = 0;       // start writing to first bit of new byte\n        }\n\n        if (bit) {\n            // only need to change if bit needs to be 1 (byte starts already zeroed)\n            SetNthBit(pos, curByte);\n        }\n\n        if (pos == 0 || bit) {   // only write if first bit in byte or changing 0 to 1\n            if (pos != 0) {\n                seekp(-1, std::ios::cur);   // back up to overwite if pos > 0\n            }\n            put(curByte);\n        }\n\n        pos++; // advance to next bit position for next write\n        lastTell = tellp();\n    }\n}\n\nvoid obitstream::setFake(bool fake) {\n    this->fake = fake;\n}\n\n/* Member function obitstream::size\n * --------------------------------\n * Seek to file end and use tell to retrieve position.\n * In order to not disrupt writing, we also record cur streampos and\n * re-seek to there before returning.\n */\nlong obitstream::size() {\n    if (!is_open()) {\n        error(\"obitstream::size: stream is not open\");\n    }\n    clear();                    // clear any error state\n    streampos cur = tellp();    // save current streampos\n    seekp(0, std::ios::end);    // seek to end\n    streampos end = tellp();    // get offset\n    seekp(cur);                 // seek back to original pos\n    return long(end);\n}\n\n/* Member function obitstream::is_open\n * -----------------------------------\n * Default implementation of is_open has the stream always\n * open.  Subclasses can customize this if they'd like.\n */\nbool obitstream::is_open() {\n    return true;\n}\n\n/* Constructor ifbitstream::ifbitstream\n * ------------------------------------\n * Wires up the stream class so that it knows to read data\n * from disk.\n */\nifbitstream::ifbitstream() {\n    init(&fb);\n}\n\n/* Constructor ifbitstream::ifbitstream\n * ------------------------------------\n * Wires up the stream class so that it knows to read data\n * from disk, then opens the given file.\n */\nifbitstream::ifbitstream(const char* filename) {\n    init(&fb);\n    open(filename);\n}\nifbitstream::ifbitstream(const std::string& filename) {\n    init(&fb);\n    open(filename);\n}\n\n/* Member function ifbitstream::open\n * ---------------------------------\n * Attempts to open the specified file, failing if unable\n * to do so.\n */\nvoid ifbitstream::open(const char* filename) {\n    if (!fb.open(filename, std::ios::in | std::ios::binary)) {\n        setstate(std::ios::failbit);\n    }\n}\n\nvoid ifbitstream::open(const std::string& filename) {\n    open(filename.c_str());\n}\n\n/* Member function ifbitstream::is_open\n * ------------------------------------\n * Determines whether the file stream is open.\n */\nbool ifbitstream::is_open() {\n    return fb.is_open();\n}\n\n/* Member function ifbitstream::close\n * ----------------------------------\n * Closes the file stream, if one is open.\n */\nvoid ifbitstream::close() {\n    if (!fb.close()) {\n        setstate(std::ios::failbit);\n    }\n}\n\n/* Constructor ofbitstream::ofbitstream\n * ------------------------------------\n * Wires up the stream class so that it knows to write data\n * to disk.\n */\nofbitstream::ofbitstream() {\n    init(&fb);\n}\n\n/* Constructor ofbitstream::ofbitstream\n * ------------------------------------\n * Wires up the stream class so that it knows to write data\n * to disk, then opens the given file.\n */\nofbitstream::ofbitstream(const char* filename) {\n    init(&fb);\n    open(filename);\n}\n\nofbitstream::ofbitstream(const std::string& filename) {\n    init(&fb);\n    open(filename);\n}\n\n/* Member function ofbitstream::open\n * ---------------------------------\n * Attempts to open the specified file, failing if unable\n * to do so.\n */\nvoid ofbitstream::open(const char* filename) {\n    // Confirm we aren't about to do something that could potentially be a\n    // Very Bad Idea.\n    if (endsWith(filename, \".cpp\") || endsWith(filename, \".h\") ||\n            endsWith(filename, \".hh\") || endsWith(filename, \".cc\")) {\n        setstate(std::ios::failbit);\n        error(std::string(\"ofbitstream::open: It is potentially dangerous to write to file \")\n              + filename + \", because that might be your own source code.  \"\n              + \"We are explicitly disallowing this operation.  Please choose a \"\n              + \"different filename.\");\n    } else {\n        if (!fb.open(filename, std::ios::out | std::ios::binary)) {\n            setstate(std::ios::failbit);\n        }\n    }\n}\nvoid ofbitstream::open(const std::string& filename) {\n    open(filename.c_str());\n}\n\n/* Member function ofbitstream::is_open\n * ------------------------------------\n * Determines whether the file stream is open.\n */\nbool ofbitstream::is_open() {\n    return fb.is_open();\n}\n\n/* Member function ofbitstream::close\n * ----------------------------------\n * Closes the given file.\n */\nvoid ofbitstream::close() {\n    if (!fb.close()) {\n        setstate(std::ios::failbit);\n    }\n}\n\n/* Constructor istringbitstream::istringbitstream\n * ----------------------------------------------\n * Sets the stream to use the string buffer, then sets\n * the initial string to the specified value.\n */\nistringbitstream::istringbitstream(const std::string& s) {\n    init(&sb);\n    sb.str(s);\n}\n\n/* Member function istringbitstream::str\n * -------------------------------------\n * Sets the underlying string in the buffer to the\n * specified string.\n */\nvoid istringbitstream::str(const std::string& s) {\n    sb.str(s);\n}\n\n/* Member function ostringbitstream::ostringbitstream\n * --------------------------------------------------\n * Sets the stream to use the string buffer.\n */\nostringbitstream::ostringbitstream() {\n    init(&sb);\n}\n\n/* Member function ostringbitstream::str\n * -------------------------------------\n * Retrives the underlying string data.\n */\nstd::string ostringbitstream::str() {\n    return sb.str();\n}\n\n/*\n * File: tokenscanner.cpp\n * ----------------------\n * Implementation for the TokenScanner class.\n * \n * @version 2016/11/26\n * - added getInput method\n * - replaced occurrences of string with const string& for efficiency\n * - alphabetized method ordering\n * - added operator << for printing a scanner\n * @version 2014/10/08\n * - removed 'using namespace' statement\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"tokenscanner.h\"\n#include <cctype>\n#include <iostream>\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"stack.h\"\n#undef INTERNAL_INCLUDE\n\nTokenScanner::TokenScanner() {\n    initScanner();\n    setInput(\"\");\n}\n\nTokenScanner::TokenScanner(std::istream& infile) {\n    initScanner();\n    setInput(infile);\n}\n\nTokenScanner::TokenScanner(const std::string& str) {\n    initScanner();\n    setInput(str);\n}\n\nTokenScanner::~TokenScanner() {\n    if (stringInputFlag) {\n        delete isp;\n    }\n}\n\nvoid TokenScanner::addOperator(const std::string& op) {\n    StringCell* cp = new StringCell;\n    cp->str = op;\n    cp->link = operators;\n    operators = cp;\n}\n\nvoid TokenScanner::addWordCharacters(const std::string& str) {\n    wordChars += str;\n}\n\nint TokenScanner::getChar() {\n    return isp->get();\n}\n\nstd::string TokenScanner::getInput() const {\n    return buffer;\n}\n\nint TokenScanner::getPosition() const {\n    if (!savedTokens) {\n        return int(isp->tellg());\n    } else {\n        return int(isp->tellg()) - savedTokens->str.length();\n    }\n}\n\nstd::string TokenScanner::getStringValue(const std::string& token) const {\n    std::string str = \"\";\n    int start = 0;\n    int finish = token.length();\n    if (finish > 1 && (token[0] == '\"' || token[0] == '\\'')) {\n        start = 1;\n        finish--;\n    }\n    for (int i = start; i < finish; i++) {\n        char ch = token[i];\n        if (ch == '\\\\') {\n            ch = token[++i];\n            if (isdigit(ch) || ch == 'x') {\n                int base = 8;\n                if (ch == 'x') {\n                    base = 16;\n                    i++;\n                }\n                int result = 0;\n                int digit = 0;\n                while (i < finish) {\n                    ch = token[i];\n                    if (isdigit(ch)) {\n                        digit = ch - '0';\n                    } else if (isalpha(ch)) {\n                        digit = toupper(ch) - 'A' + 10;\n                    } else {\n                        digit = base;\n                    }\n                    if (digit >= base) {\n                        break;\n                    }\n                    result = base * result + digit;\n                    i++;\n                }\n                ch = char(result);\n                i--;\n            } else {\n                switch (ch) {\n                case 'a': ch = '\\a'; break;\n                case 'b': ch = '\\b'; break;\n                case 'f': ch = '\\f'; break;\n                case 'n': ch = '\\n'; break;\n                case 'r': ch = '\\r'; break;\n                case 't': ch = '\\t'; break;\n                case 'v': ch = '\\v'; break;\n                case '\"': ch = '\"'; break;\n                case '\\'': ch = '\\''; break;\n                case '\\\\': ch = '\\\\'; break;\n                }\n            }\n        }\n        str += ch;\n    }\n    return str;\n}\n\nTokenScanner::TokenType TokenScanner::getTokenType(const std::string& token) const {\n    if (token.empty()) {\n        return TokenType(EOF);\n    }\n\n    char ch = token[0];\n    if (isspace(ch)) {\n        return SEPARATOR;\n    } else if (ch == '\"' || (ch == '\\'' && token.length() > 1)) {\n        return STRING;\n    } else if (isdigit(ch)) {\n        return NUMBER;\n    } else if (isWordCharacter(ch)) {\n        return WORD;\n    } else {\n        return OPERATOR;\n    }\n}\n\nbool TokenScanner::hasMoreTokens() {\n    std::string token = nextToken();\n    saveToken(token);\n    return !token.empty();\n}\n\nvoid TokenScanner::ignoreComments() {\n    ignoreCommentsFlag = true;\n}\n\nvoid TokenScanner::ignoreWhitespace() {\n    ignoreWhitespaceFlag = true;\n}\n\nbool TokenScanner::isWordCharacter(char ch) const {\n    return isalnum(ch) || wordChars.find(ch) != std::string::npos;\n}\n\nstd::string TokenScanner::nextToken() {\n    if (savedTokens) {\n        StringCell* cp = savedTokens;\n        std::string token = cp->str;\n        savedTokens = cp->link;\n        delete cp;\n        return token;\n    }\n\n    while (true) {\n        if (ignoreWhitespaceFlag) {\n            skipSpaces();\n        }\n        int ch = isp->get();\n        if (ch == '/' && ignoreCommentsFlag) {\n            ch = isp->get();\n            if (ch == '/') {\n                while (true) {\n                    ch = isp->get();\n                    if (ch == '\\n' || ch == '\\r' || ch == EOF) {\n                        break;\n                    }\n                }\n                continue;\n            } else if (ch == '*') {\n                int prev = EOF;\n                while (true) {\n                    ch = isp->get();\n                    if (ch == EOF || (prev == '*' && ch == '/')) {\n                        break;\n                    }\n                    prev = ch;\n                }\n                continue;\n            }\n            if (ch != EOF) {\n                isp->unget();\n            }\n            ch = '/';\n        }\n        if (ch == EOF) {\n            return \"\";\n        }\n        if ((ch == '\"' || ch == '\\'') && scanStringsFlag) {\n            isp->unget();\n            return scanString();\n        }\n        if (isdigit(ch) && scanNumbersFlag) {\n            isp->unget();\n            return scanNumber();\n        }\n        if (isWordCharacter(ch)) {\n            isp->unget();\n            return scanWord();\n        }\n        std::string op = std::string(1, ch);\n        while (isOperatorPrefix(op)) {\n            ch = isp->get();\n            if (ch == EOF) {\n                break;\n            }\n            op += ch;\n        }\n        while (op.length() > 1 && !isOperator(op)) {\n            isp->unget();\n            op.erase(op.length() - 1, 1);\n        }\n        return op;\n    }\n}\n\nvoid TokenScanner::saveToken(const std::string& token) {\n    StringCell* cp = new StringCell;\n    cp->str = token;\n    cp->link = savedTokens;\n    savedTokens = cp;\n}\n\nvoid TokenScanner::scanNumbers() {\n    scanNumbersFlag = true;\n}\n\nvoid TokenScanner::scanStrings() {\n    scanStringsFlag = true;\n}\n\nvoid TokenScanner::setInput(std::istream& infile) {\n    stringInputFlag = false;\n    isp = &infile;\n    savedTokens = nullptr;\n}\n\nvoid TokenScanner::setInput(const std::string& str) {\n    stringInputFlag = true;\n    buffer = str;\n    isp = new std::istringstream(buffer);\n    savedTokens = nullptr;\n}\n\nvoid TokenScanner::ungetChar(int) {\n    isp->unget();\n}\n\nvoid TokenScanner::verifyToken(const std::string& expected) {\n    std::string token = nextToken();\n    if (token != expected) {\n        std::string msg = \"TokenScanner::verifyToken: Found \\\"\" + token + \"\\\"\"\n                + \" when expecting \\\"\" + expected + \"\\\"\";\n        if (!buffer.empty()) {\n            msg += \"\\ninput = \\\"\" + buffer + \"\\\"\";\n        }\n        error(msg);\n    }\n}\n\n/* Private methods */\n\nvoid TokenScanner::initScanner() {\n    ignoreWhitespaceFlag = false;\n    ignoreCommentsFlag = false;\n    scanNumbersFlag = false;\n    scanStringsFlag = false;\n    operators = nullptr;\n}\n\n/*\n * Implementation notes: isOperator, isOperatorPrefix\n * --------------------------------------------------\n * These methods search the list of operators and return true if the\n * specified operator is either in the list or a prefix of an operator\n * in the list, respectively.  This code could be made considerably more\n * efficient by implementing operators as a trie.\n */\nbool TokenScanner::isOperator(const std::string& op) {\n    for (StringCell *cp = operators; cp != nullptr; cp = cp->link) {\n        if (op == cp->str) {\n            return true;\n        }\n    }\n    return false;\n}\n\nbool TokenScanner::isOperatorPrefix(const std::string& op) {\n    for (StringCell* cp = operators; cp != nullptr; cp = cp->link) {\n        if (startsWith(cp->str, op)) {\n            return true;\n        }\n    }\n    return false;\n}\n\n/*\n * Implementation notes: scanNumber\n * --------------------------------\n * Reads characters until the scanner reaches the end of a legal number.\n * The function operates by simulating what computer scientists\n * call a finite-state machine.  The program uses the variable\n * <code>state</code> to record the history of the process and\n * determine what characters would be legal at this point in time.\n */\nstd::string TokenScanner::scanNumber() {\n    std::string token = \"\";\n    NumberScannerState state = INITIAL_STATE;\n    while (state != FINAL_STATE) {\n        int ch = isp->get();\n        switch (state) {\n        case INITIAL_STATE:\n            if (!isdigit(ch)) {\n                error(\"TokenScanner::scanNumber: internal error: illegal call\");\n            }\n            state = BEFORE_DECIMAL_POINT;\n            break;\n        case BEFORE_DECIMAL_POINT:\n            if (ch == '.') {\n                state = AFTER_DECIMAL_POINT;\n            } else if (ch == 'E' || ch == 'e') {\n                state = STARTING_EXPONENT;\n            } else if (!isdigit(ch)) {\n                if (ch != EOF) {\n                    isp->unget();\n                }\n                state = FINAL_STATE;\n            }\n            break;\n        case AFTER_DECIMAL_POINT:\n            if (ch == 'E' || ch == 'e') {\n                state = STARTING_EXPONENT;\n            } else if (!isdigit(ch)) {\n                if (ch != EOF) {\n                    isp->unget();\n                }\n                state = FINAL_STATE;\n            }\n            break;\n        case STARTING_EXPONENT:\n            if (ch == '+' || ch == '-') {\n                state = FOUND_EXPONENT_SIGN;\n            } else if (isdigit(ch)) {\n                state = SCANNING_EXPONENT;\n            } else {\n                if (ch != EOF) {\n                    isp->unget();\n                }\n                isp->unget();\n                state = FINAL_STATE;\n            }\n            break;\n        case FOUND_EXPONENT_SIGN:\n            if (isdigit(ch)) {\n                state = SCANNING_EXPONENT;\n            } else {\n                if (ch != EOF) {\n                    isp->unget();\n                }\n                isp->unget();\n                isp->unget();\n                state = FINAL_STATE;\n            }\n            break;\n        case SCANNING_EXPONENT:\n            if (!isdigit(ch)) {\n                if (ch != EOF) {\n                    isp->unget();\n                }\n                state = FINAL_STATE;\n            }\n            break;\n        default:\n            state = FINAL_STATE;\n            break;\n        }\n        if (state != FINAL_STATE) {\n            token += char(ch);\n        }\n    }\n    return token;\n}\n\n/*\n * Implementation notes: scanString\n * --------------------------------\n * Reads and returns a quoted string from the scanner, continuing until\n * it scans the matching delimiter.  The scanner generates an error if\n * there is no closing quotation mark before the end of the input.\n */\nstd::string TokenScanner::scanString() {\n    std::string token = \"\";\n    char delim = isp->get();\n    token += delim;\n    bool escape = false;\n    while (true) {\n        int ch = isp->get();\n        if (ch == EOF) {\n            error(\"TokenScanner::scanString: found unterminated string\");\n        }\n        if (ch == delim && !escape) {\n            break;\n        }\n        escape = (ch == '\\\\') && !escape;\n        token += ch;\n    }\n    return token + delim;\n}\n\n/*\n * Implementation notes: scanWord\n * ------------------------------\n * Reads characters until the scanner reaches the end of a sequence\n * of word characters.\n */\nstd::string TokenScanner::scanWord() {\n    std::string token = \"\";\n    while (true) {\n        int ch = isp->get();\n        if (ch == EOF) {\n            break;\n        }\n        if (!isWordCharacter(ch)) {\n            isp->unget();\n            break;\n        }\n        token += char(ch);\n    }\n    return token;\n}\n\n/*\n * Implementation notes: skipSpaces\n * --------------------------------\n * Advances the position of the scanner until the current character is\n * not a whitespace character.\n */\nvoid TokenScanner::skipSpaces() {\n    while (true) {\n        int ch = isp->get();\n        if (ch == EOF) {\n            return;\n        }\n        if (!isspace(ch)) {\n            isp->unget();\n            return;\n        }\n    }\n}\n\nstd::ostream& operator <<(std::ostream& out, const TokenScanner& scanner) {\n    out << \"TokenScanner{\";\n    bool first = true;\n    if (!scanner.buffer.empty()) {\n        out << \"input=\\\"\" << scanner.buffer << \"\\\"\";\n        first = false;\n    }\n    out << (first ? \"\" : \",\") << \"position=\" << scanner.getPosition();\n    first = false;\n\n    if (scanner.scanNumbersFlag) {\n        out << (first ? \"\" : \",\") << \"scanNumbers\";\n        first = false;\n    }\n    if (scanner.scanStringsFlag) {\n        out << (first ? \"\" : \",\") << \"scanStrings\";\n        first = false;\n    }\n    if (!scanner.wordChars.empty()) {\n        out << (first ? \"\" : \",\") << \"wordChars=[\" << scanner.wordChars << \"]\";\n        first = false;\n    }\n    if (scanner.ignoreWhitespaceFlag) {\n        out << (first ? \"\" : \",\") << \"ignoreWhitespace\";\n        first = false;\n    }\n    if (scanner.ignoreCommentsFlag) {\n        out << (first ? \"\" : \",\") << \"ignoreComments\";\n        // first = false;\n    }\n    out << \"}\";\n    return out;\n}\n\n/*\n * File: base64.cpp\n * ----------------\n * This file defines a set of functions for encoding and decoding binary data\n * in the base64 format, as declared in base64.h.  See:\n * http://en.wikipedia.org/wiki/Base64\n *\n * @author Marty Stepp, based upon open-source Apache Base64 en/decoder\n * @version 2017/10/18\n * - fixed compiler warnings\n * @version 2014/10/08\n * - removed 'using namespace' statement\n * 2014/08/14\n * - Fixed bug with variables declared with deprecated 'register' keyword.\n * @since 2014/08/03\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"base64.h\"\n#undef INTERNAL_INCLUDE\n#include <cstring>\n#include <sstream>\n\n/* aaaack but it's fast and const should make it shared text page. */\nstatic const unsigned char pr2six[256] = {\n    /* ASCII table */\n    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,\n    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,\n    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 62, 64, 64, 64, 63,\n    52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 64, 64, 64, 64, 64, 64,\n    64,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,\n    15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 64, 64, 64, 64, 64,\n    64, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,\n    41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 64, 64, 64, 64, 64,\n    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,\n    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,\n    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,\n    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,\n    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,\n    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,\n    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,\n    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64\n};\n\nint Base64decode_len(const char *bufcoded) {\n    int nbytesdecoded;\n    const unsigned char *bufin;\n    int nprbytes;\n\n    bufin = (const unsigned char *) bufcoded;\n    while (pr2six[*(bufin++)] <= 63);\n\n    nprbytes = (bufin - (const unsigned char *) bufcoded) - 1;\n    nbytesdecoded = ((nprbytes + 3) / 4) * 3;\n\n    return nbytesdecoded + 1;\n}\n\nint Base64decode(char *bufplain, const char *bufcoded) {\n    int nbytesdecoded;\n    const unsigned char *bufin;\n    unsigned char *bufout;\n    int nprbytes;\n\n    bufin = (const unsigned char *) bufcoded;\n    while (pr2six[*(bufin++)] <= 63);\n    nprbytes = (bufin - (const unsigned char *) bufcoded) - 1;\n    nbytesdecoded = ((nprbytes + 3) / 4) * 3;\n\n    bufout = (unsigned char *) bufplain;\n    bufin = (const unsigned char *) bufcoded;\n\n    while (nprbytes > 4) {\n        *(bufout++) =\n                (unsigned char) (pr2six[*bufin] << 2 | pr2six[bufin[1]] >> 4);\n        *(bufout++) =\n                (unsigned char) (pr2six[bufin[1]] << 4 | pr2six[bufin[2]] >> 2);\n        *(bufout++) =\n                (unsigned char) (pr2six[bufin[2]] << 6 | pr2six[bufin[3]]);\n        bufin += 4;\n        nprbytes -= 4;\n    }\n\n    /* Note: (nprbytes == 1) would be an error, so just ingore that case */\n    if (nprbytes > 1) {\n        *(bufout++) =\n                (unsigned char) (pr2six[*bufin] << 2 | pr2six[bufin[1]] >> 4);\n    }\n    if (nprbytes > 2) {\n        *(bufout++) =\n                (unsigned char) (pr2six[bufin[1]] << 4 | pr2six[bufin[2]] >> 2);\n    }\n    if (nprbytes > 3) {\n        *(bufout++) =\n                (unsigned char) (pr2six[bufin[2]] << 6 | pr2six[bufin[3]]);\n    }\n\n    *(bufout++) = '\\0';\n    nbytesdecoded -= (4 - nprbytes) & 3;\n    return nbytesdecoded;\n}\n\nstatic const char basis_64[] =\n        \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\nint Base64encode_len(int len) {\n    return ((len + 2) / 3 * 4) + 1;\n}\n\nint Base64encode(char *encoded, const char *string, int len) {\n    int i;\n    char *p;\n\n    p = encoded;\n    for (i = 0; i < len - 2; i += 3) {\n        *p++ = basis_64[(string[i] >> 2) & 0x3F];\n        *p++ = basis_64[((string[i] & 0x3) << 4) | ((string[i + 1] & 0xF0) >> 4)];\n        *p++ = basis_64[((string[i + 1] & 0xF) << 2) | ((string[i + 2] & 0xC0) >> 6)];\n        *p++ = basis_64[string[i + 2] & 0x3F];\n    }\n    if (i < len) {\n        *p++ = basis_64[(string[i] >> 2) & 0x3F];\n        if (i == (len - 1)) {\n            *p++ = basis_64[((string[i] & 0x3) << 4)];\n            *p++ = '=';\n        }\n        else {\n            *p++ = basis_64[((string[i] & 0x3) << 4) | ((string[i + 1] & 0xF0) >> 4)];\n            *p++ = basis_64[((string[i + 1] & 0xF) << 2)];\n        }\n        *p++ = '=';\n    }\n\n    *p++ = '\\0';\n    return p - encoded;\n}\n\nnamespace Base64 {\nstd::string encode(const std::string& s) {\n    // make C char* buffer to store the encoded output (for compatibility)\n    int len = Base64encode_len(s.length());\n    char* buf = (char*) malloc(len);\n    memset(buf, 0, len);\n    Base64encode(buf, s.c_str(), s.length());\n    \n    // convert back into a C++ string, and return it\n    // (unlike below in decode(), I can just directly construct the C++\n    // string from the C one, because the Base64-encoded C string will\n    // not contain any intermediate null bytes by definition)\n    std::string result(buf);\n    free(buf);\n    return result;\n}\n\nstd::string decode(const std::string& s) {\n    // convert into C string and decode into that char* buffer\n    const char* cstr = s.c_str();\n    int len = Base64decode_len(cstr);\n    char* buf = (char*) malloc(len);\n    memset(buf, 0, len);\n    Base64decode(buf, cstr);\n    \n    // read bytes from that buffer into a C++ string\n    // (cannot just construct/assign C++ string from C char* buffer,\n    // because that will terminate the string at the first null \\0 byte)\n    std::ostringstream out;\n    for (int i = 0; i < len; i++) {\n        out << buf[i];\n    }\n    std::string result = out.str();\n    \n    free(buf);\n    return result;\n}\n\n} // namespace Base64\n\n/*\n * File: simpio.cpp\n * ----------------\n * This file implements the simpio.h interface.\n * \n * @version 2016/09/29\n * - added getDouble method\n * @version 2015/07/05\n * - increased visibility of appendSpace function used by various IO\n *   prompting functions (no longer static)\n * @version 2014/10/19\n * - alphabetized functions\n * - converted many funcs to take const string& rather than string for efficiency\n * @version 2014/10/08\n * - removed 'using namespace' statement\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"simpio.h\"\n#include <cctype>\n#include <fstream>\n#include <iostream>\n#include <sstream>\n#include <string>\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"private/static.h\"\n#undef INTERNAL_INCLUDE\n\nSTATIC_CONST_VARIABLE_DECLARE(std::string, GETCHAR_DEFAULT_PROMPT, \"Enter a character: \")\nSTATIC_CONST_VARIABLE_DECLARE(std::string, GETCHAR_DEFAULT_REPROMPT, \"You must type a single character. Try again.\")\nSTATIC_CONST_VARIABLE_DECLARE(std::string, GETINTEGER_DEFAULT_PROMPT, \"Enter an integer: \")\nSTATIC_CONST_VARIABLE_DECLARE(std::string, GETINTEGER_DEFAULT_REPROMPT, \"Illegal integer format. Try again.\")\nSTATIC_CONST_VARIABLE_DECLARE(std::string, GETREAL_DEFAULT_PROMPT, \"Enter a number: \")\nSTATIC_CONST_VARIABLE_DECLARE(std::string, GETREAL_DEFAULT_REPROMPT, \"Illegal numeric format. Try again.\")\nSTATIC_CONST_VARIABLE_DECLARE(std::string, GETYESORNO_DEFAULT_PROMPT, \"Try again: \")\nSTATIC_CONST_VARIABLE_DECLARE(std::string, GETYESORNO_DEFAULT_REPROMPT, \"Please type a word that starts with 'Y' or 'N'.\")\n\n/*\n * Implementation notes: getChar, getDouble, getInteger, getReal\n * -------------------------------------------------------------\n * Each of these functions reads a complete input line and then uses the\n * <sstream> library to parse that line into a value of the desired type.\n * If that fails, the implementation asks the user for a new value.\n */\n\nchar getChar(const std::string& prompt,\n             const std::string& reprompt) {\n    std::string promptCopy = prompt;\n    appendSpace(promptCopy);\n    char value = '\\0';\n    while (true) {\n        std::cout << promptCopy;\n        std::string line;\n        if (!getline(std::cin, line)) {\n            error(\"getChar: End of input reached while waiting for character value.\");\n        }\n        if (line.length() == 1) {\n            value = line[0];\n            break;\n        }\n\n        std::cout.flush();\n        std::cerr << (reprompt.empty() ? STATIC_VARIABLE(GETCHAR_DEFAULT_REPROMPT) : reprompt) << std::endl;\n        std::cerr.flush();\n        if (promptCopy.empty()) {\n            promptCopy = STATIC_VARIABLE(GETCHAR_DEFAULT_PROMPT);\n        }\n    }\n    return value;\n}\n\ndouble getDouble(const std::string& prompt,\n                 const std::string& reprompt) {\n    return getReal(prompt, reprompt);\n}\n\ndouble getDoubleBetween(const std::string& prompt, double min, double max) {\n    return getRealBetween(prompt, min, max);\n}\n\nint getInteger(const std::string& prompt,\n               const std::string& reprompt) {\n    std::string promptCopy = prompt;\n    appendSpace(promptCopy);\n    int value = 0;\n    while (true) {\n        std::cout << promptCopy;\n        std::string line;\n        if (!getline(std::cin, line)) {\n            error(\"getInteger: End of input reached while waiting for integer value.\");\n        }\n        trimInPlace(line);\n        std::istringstream stream(line);\n        stream >> value;\n        if (!stream.fail() && stream.eof()) {\n            break;\n        }\n        std::cout.flush();\n        std::cerr << (reprompt.empty() ? STATIC_VARIABLE(GETINTEGER_DEFAULT_REPROMPT) : reprompt) << std::endl;\n        std::cerr.flush();\n        if (promptCopy.empty()) {\n            promptCopy = STATIC_VARIABLE(GETINTEGER_DEFAULT_PROMPT);\n        }\n    }\n    return value;\n}\n\nint getIntegerBetween(const std::string& prompt, int min, int max) {\n    int value = 0;\n    while (true) {\n        value = getInteger(prompt);\n        if (value < min || value > max) {\n            std::cout.flush();\n            std::cerr << \"Please type a value between \" << min\n                      << \" and \" << max << \".\" << std::endl;\n            std::cerr.flush();\n        } else {\n            break;\n        }\n    }\n    return value;\n}\n\n/*\n * Implementation notes: getLine\n * -----------------------------\n * The getLine function simply combines the process of displaying a\n * prompt and reading an input line into a single call.  The primary\n * reason for including this function in the library is to ensure\n * that the process of reading integers, floating-point numbers, and\n * strings remains as consistent as possible.\n */\nstd::string getLine(const std::string& prompt) {\n    std::string line;\n    getLine(prompt, line);\n    return line;\n}\n\nvoid getLine(const std::string& prompt,\n             std::string& out) {\n    std::string promptCopy = prompt;\n    appendSpace(promptCopy);\n    std::cout << promptCopy;\n    if (!getline(std::cin, out)) {\n        error(\"getLine: End of input reached while waiting for line.\");\n    }\n}\n\nvoid getLine(std::istream& input,\n             std::string& out) {\n    if (!getline(input, out)) {\n        error(\"getLine: End of input reached while waiting for line.\");\n    }\n}\n\ndouble getReal(const std::string& prompt,\n               const std::string& reprompt) {\n    std::string promptCopy = prompt;\n    appendSpace(promptCopy);\n    double value = 0.0;\n    while (true) {\n        std::cout << promptCopy;\n        std::string line;\n        if (!getline(std::cin, line)) {\n            error(\"getReal: End of input reached while waiting for real value.\");\n        }\n        trimInPlace(line);\n        std::istringstream stream(line);\n        stream >> value;\n        if (!stream.fail() && stream.eof()) {\n            break;\n        }\n        std::cout.flush();\n        std::cerr << (reprompt.empty() ? STATIC_VARIABLE(GETREAL_DEFAULT_REPROMPT) : reprompt) << std::endl;\n        std::cerr.flush();\n        if (promptCopy.empty()) {\n            promptCopy = STATIC_VARIABLE(GETREAL_DEFAULT_PROMPT);\n        }\n    }\n    return value;\n}\n\ndouble getRealBetween(const std::string& prompt, double min, double max) {\n    double value = 0;\n    while (true) {\n        value = getReal(prompt);\n        if (value < min || value > max) {\n            std::cout.flush();\n            std::cerr << \"Please type a value between \" << min\n                      << \" and \" << max << \".\" << std::endl;\n            std::cerr.flush();\n        } else {\n            break;\n        }\n    }\n    return value;\n}\n\nbool getYesOrNo(const std::string& prompt,\n                const std::string& reprompt,\n                const std::string& defaultValue) {\n    std::string promptCopy = prompt;\n    appendSpace(promptCopy);\n    bool value = false;\n    while (true) {\n        std::cout << promptCopy;\n        std::string line;\n        if (!getline(std::cin, line)) {\n            error(\"getYesOrNo: End of input reached while waiting for yes/no value.\");\n        }\n        if (line.empty()) {\n            line = defaultValue;\n        }\n        if ((int) line.length() > 0) {\n            char first = tolower(line[0]);\n            if (first == 'y') {\n                value = true;\n                break;\n            } else if (first == 'n') {\n                value = false;\n                break;\n            }\n        }\n        std::cout.flush();\n        std::cerr << (reprompt.empty() ? STATIC_VARIABLE(GETYESORNO_DEFAULT_REPROMPT) : reprompt) << std::endl;\n        std::cerr.flush();\n        if (promptCopy.empty()) {\n            promptCopy = STATIC_VARIABLE(GETYESORNO_DEFAULT_PROMPT);\n        }\n    }\n    return value;\n}\n\nvoid appendSpace(std::string& prompt) {\n    if (!prompt.empty() && !isspace(prompt[prompt.length() - 1])) {\n        prompt += ' ';\n    }\n}\n\n/*\n * File: xmlutils.cpp\n * ------------------\n * This file contains implementations of utility functions related to processing\n * and extracting information from XML documents.\n * See xmlutils.h for documentation of each function.\n * \n * @author Marty Stepp\n * @version 2016/10/22\n * - changed openXmlDocument to print error message rather than crash on file-not-found\n * @version 2016/10/14\n * - changed NULL to nullptr as appropriate\n * @version 2014/10/14\n * @since 2014/03/01\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"xmlutils.h\"\n#include <cstring>\n#define INTERNAL_INCLUDE 1\n#include \"filelib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"rapidxml.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#undef INTERNAL_INCLUDE\n\nnamespace xmlutils {\nint getAttributeInt(rapidxml::xml_node<>* node, const std::string& attrName, int defaultValue) {\n    std::string value = getAttribute(node, attrName, std::to_string(defaultValue));\n    return stringToInteger(value);\n}\n\nbool getAttributeBool(rapidxml::xml_node<>* node, const std::string& attrName, bool defaultValue) {\n    std::string value = toLowerCase(getAttribute(node, attrName, boolToString(defaultValue)));\n    return value == \"true\" || value == \"t\" || value == \"1\" || value == \"on\";\n}\n\nstd::string getAttribute(rapidxml::xml_node<>* node, const std::string& attrName, const std::string& defaultValue) {\n    rapidxml::xml_attribute<>* attr = node->first_attribute(attrName.c_str());\n    if (!attr) {\n        return defaultValue;\n    } else {\n        // RapidXML stores its value strings in a funny way, as non-zero-terminated\n        // strings indexed into the original char buffer you passed it,\n        // along with a size field.\n        char* cstrVal = attr->value();\n        return std::string(cstrVal);\n    }\n}\n\nVector<rapidxml::xml_node<>*> getChildNodes(rapidxml::xml_node<>* node, const std::string& nodeName) {\n    Vector<rapidxml::xml_node<>*> v;\n    for (rapidxml::xml_node<>* childNode = node->first_node(nodeName.c_str());\n         childNode != nullptr;\n         childNode = childNode->next_sibling(nodeName.c_str())) {\n        v.push_back(childNode);\n    }\n    return v;\n}\n\nbool hasAttribute(rapidxml::xml_node<>* node, const std::string& attrName) {\n    rapidxml::xml_attribute<>* attr = node->first_attribute(attrName.c_str());\n    return (attr != nullptr);\n}\n\nrapidxml::xml_node<>* openXmlDocument(const std::string& filename, const std::string& documentNode) {\n    std::string xmlFileText = readEntireFile(filename);\n    char* buf = new char[xmlFileText.length() + 1024]();   // *** memory leak (but MUST be heap-allocated)\n    memset(buf, 0, xmlFileText.length() + 1024);\n    strcpy(buf, xmlFileText.c_str());\n    rapidxml::xml_document<char>* xmlDoc = new rapidxml::xml_document<char>;   // *** memory leak (but MUST be heap-allocated)\n    xmlDoc->parse<NULL>(buf);\n    rapidxml::xml_node<>* node = xmlDoc->first_node(documentNode.c_str());\n    return node;\n}\n} // namespace xmlutils\n\n/*\n * File: version.cpp\n * -----------------\n * This file implements functions for checking the version number of the\n * Stanford C++ library, its Java back-end, and the project properties\n * file (.pro).\n *\n * @author Marty Stepp \n * @version 2016/09/24\n * - bug fix for std::quick_exit function\n * @version 2015/07/05\n * - removed static global Platform variable, replaced by getPlatform as needed\n * @version 2014/11/13\n * - ifdef'd out macroIntegerToDate function to remove unused function warning on some platforms\n * @since 2014/10/31\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"private/version.h\"\n#undef INTERNAL_INCLUDE\n#include <cstdio>\n#include <iomanip>\n#include <iostream>\n#include <sstream>\n#include <string>\n\nnamespace version {\n#ifdef SPL_PROJECT_VERSION\n/*\n * converts an 8-digit integer into a YYYY/MM/DD date string,\n * e.g. 20140907 -> \"2014/09/07\"\n * needed because I can't have a string as a -D command-line defined flag\n */\nstatic std::string macroIntegerToDate(int macroInteger) {\n    int year = (macroInteger / 10000);          // 2014\n    int month = (macroInteger % 10000 / 100);   // 09\n    int day = (macroInteger % 100);             // 07\n    std::ostringstream out;\n    out << std::setw(4) << std::setfill('0') << year\n        << \"/\" << std::setw(2) << std::setfill('0') << month\n        << \"/\" << std::setw(2) << std::setfill('0') << day;\n    return out.str();\n}\n#endif // SPL_PROJECT_VERSION\n\nstatic void ensureProjectVersionHelper(std::string minVersion) {\n#ifdef SPL_PROJECT_VERSION\n    std::string projectVersion = macroIntegerToDate(SPL_PROJECT_VERSION);\n#else\n    std::string projectVersion = \"\";\n#endif\n\n    if (projectVersion < minVersion) {\n        fputs(\"\\n\", stderr);\n        fputs(\"***\\n\", stderr);\n        fputs(\"*** STANFORD C++ LIBRARY ERROR:\\n\", stderr);\n        fputs(\"*** Your project's properties (from your .pro file) are too old\\n\", stderr);\n        fputs(\"*** and are not compatible with this version of the C++ library.\\n\", stderr);\n        fputs(\"*** Exiting immediately to avoid compatibility errors.\\n\", stderr);\n        fputs(\"*** Please update your .pro to a newer compatible version.\\n\", stderr);\n        fprintf(stderr, \"*** Your .pro version found : %s\\n\", projectVersion.c_str());\n        fprintf(stderr, \"*** Minimum version accepted: %s\\n\", minVersion.c_str());\n        fputs(\"***\\n\", stderr);\n        fputs(\"\\n\", stderr);\n        fflush(stderr);\n        \n        std::exit(1);\n    }\n}\n\nvoid ensureJavaBackEndVersion(std::string /*minVersion*/) {\n    // empty\n}\n\nvoid ensureProjectVersion(std::string minVersion) {\n    if (minVersion.empty()) {\n#ifdef SPL_MINIMUM_PROJECT_VERSION\n        minVersion = SPL_MINIMUM_PROJECT_VERSION;\n#else\n        minVersion = STANFORD_CPP_PROJECT_MINIMUM_VERSION;\n#endif\n    }\n    ensureProjectVersionHelper(minVersion);\n}\n\nstd::string getCppLibraryDocsUrl() {\n    return STANFORD_CPP_LIB_DOCS_URL;\n}\n\nstd::string getCppLibraryVersion() {\n    return STANFORD_CPP_LIB_VERSION;\n}\n\nstd::string getJavaBackEndVersion() {\n    return \"?\";\n}\n\n/*\n * Returns version of project properties as defined in .pro file.\n */\nstd::string getProjectVersion() {\n#ifdef SPL_PROJECT_VERSION\n    // 20141031 -> \"2014/10/31\"\n    std::ostringstream out;\n    out << (SPL_PROJECT_VERSION / 10000);         // 2014\n    out << \"/\";\n    out << (SPL_PROJECT_VERSION % 10000 / 100);   // 10\n    out << \"/\";\n    out << (SPL_PROJECT_VERSION % 100);           // 31\n    return out.str();\n#endif\n    return \"\";\n}\n\n} // namespace version\n\n/*\n * File: filelibwindows.cpp\n * ------------------------\n * This file contains Windows implementations of filelib.h primitives.\n * This code used to live in platform.cpp before the Java back-end was retired.\n *\n * @version 2018/10/23\n * - added getAbsolutePath\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"filelib.h\"\n\n// define all of the following only on Windows OS\n// (see filelibunix.cpp for non-Windows versions)\n#ifdef _WIN32\n#include <direct.h>\n#include <windows.h>\n#include <tchar.h>\n#undef MOUSE_EVENT\n#undef KEY_EVENT\n#undef MOUSE_MOVED\n#undef HELP_KEY\n#include <cctype>\n#include <cstdio>\n#include <cstdlib>\n#include <cstring>\n#include <fstream>\n#include <iomanip>\n#include <iostream>\n#include <ios>\n#include <string>\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#undef INTERNAL_INCLUDE\n\nnamespace platform {\n\nvoid filelib_createDirectory(const std::string& path) {\n    std::string pathStr = path;\n    if (endsWith(path, \"\\\\\")) {\n        pathStr = path.substr(0, path.length() - 1);\n    }\n    if (CreateDirectoryA(path.c_str(), nullptr) == 0) {\n        if (GetLastError() == ERROR_ALREADY_EXISTS && filelib_isDirectory(pathStr)) {\n            return;\n        }\n        error(\"createDirectory: Can't create \" + path);\n    }\n}\n\nvoid filelib_deleteFile(const std::string& path) {\n    if(filelib_isDirectory(path)) {\n        RemoveDirectoryA(path.c_str());\n    } else {\n        DeleteFileA(path.c_str());\n    }\n}\n\nstd::string filelib_expandPathname(const std::string& filename) {\n    if (filename.empty()) {\n        return \"\";\n    }\n    std::string filenameStr = filename;\n    for (int i = 0, len = filename.length(); i < len; i++) {\n        if (filenameStr[i] == '/') {\n            filenameStr[i] = '\\\\';\n        }\n    }\n    return filenameStr;\n}\n\nbool filelib_fileExists(const std::string& filename) {\n    return GetFileAttributesA(filename.c_str()) != INVALID_FILE_ATTRIBUTES;\n}\n\nstd::string filelib_getAbsolutePath(const std::string& path) {\n    char realpathOut[4096];\n    if (_fullpath(realpathOut, path.c_str(), 4095)) {\n        std::string absPath(realpathOut);\n        return absPath;\n    } else {\n        return path;\n    }\n}\n\nstd::string filelib_getCurrentDirectory() {\n    char path[MAX_PATH + 1];\n    int n = GetCurrentDirectoryA(MAX_PATH + 1, path);\n    return std::string(path, n);\n}\n\nstd::string filelib_getDirectoryPathSeparator() {\n    return \"\\\\\";\n}\n\nstd::string filelib_getSearchPathSeparator() {\n    return \";\";\n}\n\nstd::string filelib_getTempDirectory() {\n    char path[MAX_PATH + 1];\n    int n = GetTempPathA(MAX_PATH + 1, path);\n    return std::string(path, n);\n}\n\nbool filelib_isDirectory(const std::string& filename) {\n    DWORD attr = GetFileAttributesA(filename.c_str());\n    return attr != INVALID_FILE_ATTRIBUTES && (attr & FILE_ATTRIBUTE_DIRECTORY);\n}\n\n// https://msdn.microsoft.com/en-us/library/windows/desktop/gg258117(v=vs.85).aspx\nbool filelib_isFile(const std::string& filename) {\n    DWORD attr = GetFileAttributesA(filename.c_str());\n    return attr != INVALID_FILE_ATTRIBUTES && !(attr & FILE_ATTRIBUTE_DIRECTORY);\n}\n\nbool filelib_isSymbolicLink(const std::string& filename) {\n    DWORD attr = GetFileAttributesA(filename.c_str());\n    return attr != INVALID_FILE_ATTRIBUTES\n            && (attr & FILE_ATTRIBUTE_REPARSE_POINT);\n}\n\nvoid filelib_listDirectory(const std::string& path, Vector<std::string> & list) {\n    std::string pathStr = path;\n    if (pathStr == \"\") {\n        pathStr = \".\";\n    }\n    std::string pattern = pathStr + \"\\\\*.*\";\n    WIN32_FIND_DATAA fd;\n    HANDLE h = FindFirstFileA(pattern.c_str(), &fd);\n    if (h == INVALID_HANDLE_VALUE) {\n        error(\"listDirectory: Can't list directory \\\"\" + pathStr + \"\\\"\");\n    }\n    list.clear();\n    while (true) {\n        std::string name = std::string(fd.cFileName);\n        if (name != \".\" && name != \"..\") {\n            list.push_back(name);\n        }\n        if (!FindNextFileA(h, &fd)) {\n            break;\n        }\n    }\n    FindClose(h);\n    sort(list.begin(), list.end());\n}\n\nstd::string file_openFileDialog(const std::string& /*title*/,\n                                const std::string& /*mode*/,\n                                const std::string& /*path*/) {\n    // TODO\n    return \"\";\n}\n\nvoid filelib_setCurrentDirectory(const std::string& path) {\n    if (!filelib_isDirectory(path) || !SetCurrentDirectoryA(path.c_str())) {\n        error(\"setCurrentDirectory: Can't change to \" + path);\n    }\n}\n\n} // namespace platform\n\n#endif // _WIN32\n\n/*\n * File: multimain.cpp\n * -------------------\n * ...\n *\n * @version 2018/11/14\n * - added Cancel option to multimain popup dialog\n * @version 2018/10/18\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"private/multimain.h\"\n#include <iomanip>\n#include <iostream>\n#define INTERNAL_INCLUDE 1\n#include \"private/static.h\"\n#define INTERNAL_INCLUDE 1\n#include \"filelib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"goptionpane.h\"\n#define INTERNAL_INCLUDE 1\n#include \"map.h\"\n#define INTERNAL_INCLUDE 1\n#include \"simpio.h\"\n#undef INTERNAL_INCLUDE\n\n// helper to store [name => main func pointer]\nSTATIC_VARIABLE_DECLARE_MAP_EMPTY(Map, std::string, GThunkInt, funcMap);\n\nextern int main();\n\nnamespace stanfordcpplib {\n\n// whether the popup list of mains should be graphical\nstatic bool& mainSelectorIsGraphical() {\n    static bool _isGraphical = false;\n    return _isGraphical;\n}\n\nint registerMainFunction(const std::string& name, int (*mainFunc)()) {\n    GThunkInt mainThunk = mainFunc;\n    STATIC_VARIABLE(funcMap)[name] = mainThunk;\n    return 0;\n}\n\nMultiMainRegisterStaticInitializer::MultiMainRegisterStaticInitializer(\n        const std::string& name, int (* mainFunc)(), bool graphical) {\n    STATIC_VARIABLE(funcMap)[name] = mainFunc;\n    mainSelectorIsGraphical() |= graphical;\n}\n\n#ifndef SPL_AUTOGRADER_MODE\n\n// function prototype declarations;\n// I declare these rather than including init.h to avoid\n// triggering library initialization if lib is not used\n// (keep in sync with init.h/cpp)\nextern void initializeLibrary(int argc, char** argv);\nextern void runMainInThread(int (* mainFunc)(void));\nextern void shutdownLibrary();\n\nint selectMainFunction() {\n    Map<std::string, GThunkInt>& funcMap = STATIC_VARIABLE(funcMap);\n    if (funcMap.isEmpty()) {\n\n        //////////////////////////////////////////////////////////////////////////\n        /// NOTE TO STUDENT!                                                   ///\n        /// If you are directed here by a compiler error,                      ///\n        /// it means that you have not written a main function or that it      ///\n        /// has the wrong parameters.                                          ///\n        /// The heading of your main function must be:                         ///\n        ///                                                                    ///\n        /// int main() { ... }                                                 ///\n        ///                                                                    ///\n        /// (Our library secretly renames your main function to \"qMain\"        ///\n        ///  so that we can actually control the main flow of execution.)      ///\n        ///                                                                    ///\n        /// You may also need to include a .h header from the Stanford         ///\n        /// C++ library in the file of your project that contains the          ///\n        /// 'main' function.                                                   ///\n        //////////////////////////////////////////////////////////////////////////\n        stanfordcpplib::runMainInThread(main);\n\n    } else if (funcMap.size() == 1) {\n        // just one main, so just run it\n        std::string mainFuncName = funcMap.front();\n        GThunkInt mainFunc = funcMap[mainFuncName];\n        stanfordcpplib::runMainInThread(mainFunc);\n    } else {\n        // multiple mains; ask user which one to run\n        if (stanfordcpplib::mainSelectorIsGraphical()) {\n            GThunkInt mainFuncWrapper = [&funcMap]() {\n                Vector<std::string> options;\n                for (std::string functionName : funcMap) {\n                    options.add(functionName);\n                }\n\n                // add a \"Cancel\" option so we can press Escape to abort\n                options.add(\"Cancel\");\n\n                std::string choice = \"\";\n                choice = GOptionPane::showOptionDialog(\n                        /* message */ \"main functions available:\",\n                        /* options */ options,\n                        /* title   */ \"Choose main function to run\");\n                if (choice.empty()) {\n                    return 0;\n                }\n                GThunkInt mainFunc = funcMap[choice];\n                if (mainFunc) {\n                    return mainFunc();\n                } else {\n                    return 0;\n                }\n            };\n            stanfordcpplib::runMainInThread(mainFuncWrapper);\n        } else {\n            // plain text console\n            GThunkInt mainFuncWrapper = [&funcMap]() {\n                // print list of mains\n                std::cout << \"main functions available:\" << std::endl;\n                int i = 1;\n                Map<int, std::string> numberToName;\n                for (std::string functionName : funcMap) {\n                    std::cout << std::setw(2) << i << \") \" << functionName << std::endl;\n                    numberToName[i] = functionName;\n                    i++;\n                }\n                int choice = getIntegerBetween(\"Your choice? \", 0, funcMap.size());\n                if (choice == 0) {\n                    return 0;\n                }\n                GThunkInt mainFunc = funcMap[numberToName[choice]];\n                return mainFunc();\n            };\n            stanfordcpplib::runMainInThread(mainFuncWrapper);\n        }\n    }\n\n    stanfordcpplib::shutdownLibrary();\n    return 0;\n}\n#endif // SPL_AUTOGRADER_MODE\n\n} // namespace stanfordcpplib\n\n/*\n * File: init.cpp\n * --------------\n *\n * TODO\n *\n * @author Marty Stepp\n * @version 2018/11/22\n * - added headless mode support\n * @version 2018/08/28\n * - refactor to use stanfordcpplib namespace\n * @version 2018/08/27\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"private/init.h\"\n#define INTERNAL_INCLUDE 1\n#include \"consoletext.h\"\n#define INTERNAL_INCLUDE 1\n#include \"exceptions.h\"\n#define INTERNAL_INCLUDE 1\n#include \"qtgui.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"private/static.h\"\n#undef INTERNAL_INCLUDE\n\n#ifdef _WIN32\n#  include <direct.h>   // for chdir\n#else // _WIN32\n#  include <unistd.h>   // for chdir\n#endif // _WIN32\n\n\nnamespace stanfordcpplib {\n\nnamespace qtgui {\nextern void initializeQtGraphicalConsole();\nextern void shutdownConsole();\n}\n\nstatic void parseArgsQt(int argc, char** argv);\n\nSTATIC_VARIABLE_DECLARE(bool, isExitEnabled, true)\n\nbool exitEnabled() {\n    return STATIC_VARIABLE(isExitEnabled);\n}\n\n// called automatically by real main() function;\n// call to this is inserted by library init.h\n// to be run in Qt GUI main thread\nvoid initializeLibrary(int argc, char** argv) {\n    // ensure that library is initialized only once\n    static bool _initialized = false;\n    if (_initialized) {\n        return;\n    }\n    _initialized = true;\n\n#ifndef SPL_HEADLESS_MODE\n    GThread::setMainThread();\n#endif // SPL_HEADLESS_MODE\n\n    parseArgsQt(argc, argv);\n\n#ifndef SPL_HEADLESS_MODE\n    // initialize the main Qt graphics subsystem\n    QtGui::instance()->setArgs(argc, argv);\n    QtGui::instance()->initializeQt();\n\n    // initialize Qt graphical console (if student #included it)\n    initializeQtGraphicalConsole();\n#endif // SPL_HEADLESS_MODE\n}\n\nvoid initializeLibraryStudentThread() {\n#if defined(SPL_CONSOLE_PRINT_EXCEPTIONS)\n    setConsolePrintExceptions(true, /* force */ true);\n#endif\n}\n\n// this should be roughly the same code as platform.cpp's parseArgs function\nstatic void parseArgsQt(int argc, char** argv) {\n    if (argc <= 0) {\n        return;\n    }\n    std::string arg0 = argv[0];\n    exceptions::setProgramNameForStackTrace(argv[0]);\n    // programName() = getRoot(getTail(arg0));\n\n#ifndef _WIN32\n    // on Mac only, may need to change folder because of app's nested dir structure\n    size_t ax = arg0.find(\".app/Contents/\");\n    if (ax != std::string::npos) {\n        while (ax > 0 && arg0[ax] != '/') {\n            ax--;\n        }\n        if (ax > 0) {\n            std::string cwd = arg0.substr(0, ax);\n            chdir(cwd.c_str());\n        }\n    }\n#endif // _WIN32\n\n    char* noConsoleFlag = getenv(\"NOCONSOLE\");\n    if (noConsoleFlag && startsWith(std::string(noConsoleFlag), \"t\")) {\n        return;\n    }\n}\n\n// called automatically by real main() function;\n// call to this is inserted by library init.h\n// to be run in Qt main thread\n#ifdef SPL_HEADLESS_MODE\nvoid runMainInThread(int (* mainFunc)(void)) {\n    mainFunc();\n}\n\nvoid runMainInThread(std::function<int()> mainFunc) {\n    mainFunc();\n}\n\nvoid runMainInThreadVoid(void (* mainFuncVoid)(void)) {\n    mainFuncVoid();\n}\n\nvoid runMainInThreadVoid(std::function<void()> mainFuncVoid) {\n    mainFuncVoid();\n}\n#else // SPL_HEADLESS_MODE\nvoid runMainInThread(int (* mainFunc)(void)) {\n    QtGui::instance()->startBackgroundEventLoop(mainFunc);\n}\n\nvoid runMainInThread(std::function<int()> mainFunc) {\n    QtGui::instance()->startBackgroundEventLoop(mainFunc);\n}\n\nvoid runMainInThreadVoid(void (* mainFuncVoid)(void)) {\n    QtGui::instance()->startBackgroundEventLoopVoid(mainFuncVoid);\n}\n\nvoid runMainInThreadVoid(std::function<void()> mainFuncVoid) {\n    QtGui::instance()->startBackgroundEventLoopVoid(mainFuncVoid);\n}\n#endif // SPL_HEADLESS_MODE\n\nvoid setExitEnabled(bool enabled) {\n    STATIC_VARIABLE(isExitEnabled) = enabled;\n    // TODO: notify GConsoleWindow?\n}\n\n// shut down the Qt graphical console window;\n// to be run in Qt main thread\nvoid shutdownLibrary() {\n#ifdef SPL_HEADLESS_MODE\n    // empty\n#else\n    shutdownConsole();\n#endif // SPL_HEADLESS_MODE\n}\n\nvoid staticInitializeLibrary() {\n    // empty\n}\n\n} // namespace stanfordcpplib\n\nnamespace std {\nvoid __stanfordcpplib__exitLibrary(int status) {\n    if (stanfordcpplib::exitEnabled()) {\n        // call std::exit (has been renamed)\n\n#ifdef exit\n#undef exit\n        std::exit(status);\n#define exit __stanfordcpplib__exitLibrary\n#endif // exit\n\n    } else {\n        // not allowed to call exit(); produce error message\n        std::ostringstream out;\n        out << \"Program tried to call exit(\" << status << \") to quit. \" << std::endl;\n        out << \"*** This function has been disabled; main should end through \" << std::endl;\n        out << \"*** normal program control flow.\" << std::endl;\n        error(out.str());\n    }\n}\n\n} // namespace std\n\n/*\n * File: filelibunix.cpp\n * ---------------------\n * This file contains Unix implementations of filelib.h primitives.\n * This code used to live in platform.cpp before the Java back-end was retired.\n *\n * @version 2018/10/23\n * - added getAbsolutePath\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"filelib.h\"\n\n// define all of the following only on non-Windows OS\n// (see filelibwindows.cpp for Windows versions)\n#ifndef _WIN32\n#include <sys/types.h>\n#include <sys/stat.h>\n#include <sys/resource.h>\n#include <dirent.h>\n#include <errno.h>\n#include <pwd.h>\n#include <stdint.h>\n#include <unistd.h>\n#include <cstdio>\n#include <cstdlib>\n#include <cstring>\n#include <fstream>\n#include <iomanip>\n#include <iostream>\n#include <ios>\n#include <string>\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#undef INTERNAL_INCLUDE\n\nnamespace platform {\n\nvoid filelib_createDirectory(const std::string& path) {\n    std::string pathStr = path;\n    if (endsWith(path, \"/\")) {\n        pathStr = path.substr(0, path.length() - 1);\n    }\n    if (mkdir(pathStr.c_str(), 0777) != 0) {\n        if (errno == EEXIST && filelib_isDirectory(pathStr)) {\n            return;\n        }\n        std::string msg = \"createDirectory: \";\n        std::string err = std::string(strerror(errno));\n        error(msg + err);\n    }\n}\n\nvoid filelib_deleteFile(const std::string& path) {\n    remove(path.c_str());\n}\n\nstd::string filelib_expandPathname(const std::string& filename) {\n    if (filename == \"\") {\n        return \"\";\n    }\n    int len = filename.length();\n    std::string expanded = filename;\n    if (expanded[0] == '~') {\n        int spos = 1;\n        while (spos < len && expanded[spos] != '\\\\' && expanded[spos] != '/') {\n            spos++;\n        }\n        char *homedir = nullptr;\n        if (spos == 1) {\n            homedir = getenv(\"HOME\");\n            if (!homedir) {\n                homedir = getpwuid(getuid())->pw_dir;\n            }\n        } else {\n            struct passwd *pw = getpwnam(expanded.substr(1, spos - 1).c_str());\n            if (!pw) {\n                error(\"expandPathname: No such user\");\n            } else {\n                homedir = pw->pw_dir;\n            }\n        }\n        expanded = std::string(homedir) + expanded.substr(spos);\n        len = expanded.length();\n    }\n    for (int i = 0; i < len; i++) {\n        if (expanded[i] == '\\\\') {\n            expanded[i] = '/';\n        }\n    }\n    return expanded;\n}\n\nbool filelib_fileExists(const std::string& filename) {\n    struct stat fileInfo;\n    return stat(filename.c_str(), &fileInfo) == 0;\n}\n\nstd::string filelib_getAbsolutePath(const std::string& path) {\n    char realpathOut[4096];\n    realpath(path.c_str(), realpathOut);\n    std::string absPath(realpathOut);\n    return absPath;\n}\n\nstd::string filelib_getCurrentDirectory() {\n    char currentDirBuf[4096] = {'\\0'};\n    char* cwd = getcwd(currentDirBuf, 4096 - 1);\n    std::string result;\n    if (cwd) {\n        result = std::string(cwd);\n    } else {\n        error(\"getCurrentDirectory: \" + std::string(strerror(errno)));\n    }\n    return result;\n}\n\nstd::string filelib_getDirectoryPathSeparator() {\n    return \"/\";\n}\n\nstd::string filelib_getSearchPathSeparator() {\n    return \":\";\n}\n\n// http://stackoverflow.com/questions/8087805/\n// how-to-get-system-or-user-temp-folder-in-unix-and-windows\nstd::string filelib_getTempDirectory() {\n    char* dir = getenv(\"TMPDIR\");\n    if (!dir) dir = getenv(\"TMP\");\n    if (!dir) dir = getenv(\"TEMP\");\n    if (!dir) dir = getenv(\"TEMPDIR\");\n    if (!dir) return \"/tmp\";\n    return dir;\n}\n\nbool filelib_isDirectory(const std::string& filename) {\n    struct stat fileInfo;\n    if (stat(filename.c_str(), &fileInfo) != 0) {\n        return false;\n    }\n    return S_ISDIR(fileInfo.st_mode) != 0;\n}\n\nbool filelib_isFile(const std::string& filename) {\n    struct stat fileInfo;\n    if (stat(filename.c_str(), &fileInfo) != 0) {\n        return false;\n    }\n    return S_ISREG(fileInfo.st_mode) != 0;\n}\n\nbool filelib_isSymbolicLink(const std::string& filename) {\n    struct stat fileInfo;\n    if (lstat(filename.c_str(), &fileInfo) != 0) {\n        return false;\n    }\n    return S_ISLNK(fileInfo.st_mode) != 0;\n}\n\nvoid filelib_listDirectory(const std::string& path, Vector<std::string>& list) {\n    DIR* dir = opendir(path.empty() ? \".\" : path.c_str());\n    if (!dir) {\n        error(std::string(\"listDirectory: Can't open \\\"\") + path + \"\\\"\");\n    }\n    list.clear();\n    while (true) {\n        struct dirent* ep = readdir(dir);\n        if (!ep) {\n            break;\n        }\n        std::string name = std::string(ep->d_name);\n        if (name != \".\" && name != \"..\") {\n            list.push_back(name);\n        }\n    }\n    closedir(dir);\n    sort(list.begin(), list.end());\n}\n\nstd::string file_openFileDialog(const std::string& /*title*/,\n                                const std::string& /*mode*/,\n                                const std::string& /*path*/) {\n    // TODO\n    return \"\";\n}\n\nvoid filelib_setCurrentDirectory(const std::string& path) {\n    if (chdir(path.c_str()) != 0) {\n        std::string msg = \"setCurrentDirectory: \";\n        std::string err = std::string(strerror(errno));\n        error(msg + err);\n    }\n}\n\n} // namespace platform\n\n#endif // _WIN32\n\n/*\n * File: mainwrapper.cpp\n * ---------------------\n * This file contains a 'main' function definition that renames the student's\n * main function to 'qMain' and wraps it with a real 'main' function that\n * initializes the Stanford C++ library, then runs the student's main function\n * in its own thread.  This is necessary for the Qt version of the library to\n * function properly.\n *\n * If you receive compiler errors that direct you to this file, you may need to\n * include a .h header from the Stanford C++ library in the file of your project\n * that contains the 'main' function.\n *\n * @version 2018/10/18\n * - multi-main initial implementation\n * @version 2018/10/07\n * - bug fixes for autograder mode\n * @version 2018/09/23\n * - bug fixes for windows Qt main wrapper\n * @version 2018/09/17\n * - initial version\n */\n\n#include \"private/init.h\"\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef SPL_AUTOGRADER_MODE\nint qMain(int argc, char** argv);\n\n// function prototype declarations;\n// I declare these rather than including init.h to avoid\n// triggering library initialization if lib is not used\n// (keep in sync with init.h/cpp)\nnamespace stanfordcpplib {\nextern void initializeLibrary(int argc, char** argv);\nextern void runMainInThread(int (* mainFunc)(void));\nextern int selectMainFunction();\nextern void shutdownLibrary();\n}\n\n#ifndef QT_NEEDS_QMAIN\n#undef main\nint main(int argc, char** argv) {\n    return qMain(argc, argv);\n}\n// keep in sync with definition in .pro file\n#ifdef SPL_REPLACE_MAIN_FUNCTION\n#define main qMain\n#endif // SPL_REPLACE_MAIN_FUNCTION\n#endif // QT_NEEDS_QMAIN\n\n// initializes the Qt GUI library subsystems and Qt graphical console as needed\n// (autograders will insert their own main wrapper)\nint qMain(int argc, char** argv) {\n    extern int main();\n    stanfordcpplib::initializeLibrary(argc, argv);\n    int result = stanfordcpplib::selectMainFunction();\n    stanfordcpplib::shutdownLibrary();\n    return result;\n}\n#endif // SPL_AUTOGRADER_MODE\n\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/splautograder.cpp",
    "content": "/******************************************************************\n * The Stanford C++ Autograder Library                            *\n * splautograder.cpp                                              *\n * -------------------------------------------------------------- *\n * This file contains the C++ code to implement the functionality *\n * of the Stanford C++ Autograder Library.                        *\n * The library has been packed into a single very large .cpp file *\n * for speed of compilation and ease of distribution.             *\n * Do not edit this file; if you want to fix bugs or make changes *\n * to the library, please contribute to the project's original    *\n * source on GitHub by talking to its current maintainers.        *\n ******************************************************************/\n\n/*\n * File: autogradercompat.cpp\n * --------------------------\n * See autogradercompat.h for documentation of each member.\n * \n * @author Marty Stepp\n * @version 2018/10/04\n * - initial version, copied from autograder.cpp\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"autogradercompat.h\"\n#define INTERNAL_INCLUDE 1\n#include \"guiautograder.h\"\n#undef INTERNAL_INCLUDE\n\nnamespace autograder {\n\nvoid addCallbackButton(void (* func)(),\n                       const std::string& text,\n                       const std::string& icon) {\n    if (isGraphicalUI()) {\n        stanfordcpplib::autograder::GuiAutograder::instance()->addCallbackButton(func, text, icon);\n    } else {\n        // empty\n    }\n}\n\nvoid displayDiffs(const std::string& expectedOutput, const std::string& studentOutput,\n                  const std::string& diffs, const std::string& diffFile, int truncateHeight) {\n    stanfordcpplib::autograder::GuiAutograder::instance()->displayDiffs(\n            expectedOutput, studentOutput, diffs, diffFile, truncateHeight);\n}\n\nstd::string getCurrentCategoryName() {\n    return stanfordcpplib::autograder::GuiAutograder::instance()->getCurrentCategoryName();\n}\n\nstd::string getCurrentTestCaseName() {\n    return stanfordcpplib::autograder::GuiAutograder::instance()->getCurrentTestCaseName();\n}\n\nbool currentTestShouldRun() {\n    return stanfordcpplib::autograder::GuiAutograder::instance()->currentTestShouldRun();\n}\n\nstanfordcpplib::autograder::AutograderFlags& getFlags() {\n    return stanfordcpplib::autograder::GuiAutograder::instance()->getFlags();\n}\n\nbool isGraphicalUI() {\n    return stanfordcpplib::autograder::GuiAutograder::instance()->isGraphicalUI();\n}\n\nstd::string runAndCapture(int (* mainFunc)(),\n                          const std::string& cinInput,\n                          const std::string& outputFileName) {\n    return stanfordcpplib::autograder::GuiAutograder::instance()->runAndCapture(\n            mainFunc, cinInput, outputFileName);\n}\n\n\nvoid setAboutMessage(const std::string& message) {\n    stanfordcpplib::autograder::GuiAutograder::instance()->setAboutMessage(message);\n}\n\nvoid setAssignmentName(const std::string& name) {\n    stanfordcpplib::autograder::GuiAutograder::instance()->setAssignmentName(name);\n}\n\nvoid setCallbackEnd(void (*func)()) {\n    stanfordcpplib::autograder::GuiAutograder::instance()->setCallbackEnd(func);\n}\n\nvoid setCallbackStart(void (*func)()) {\n    stanfordcpplib::autograder::GuiAutograder::instance()->setCallbackStart(func);\n}\n\nvoid setCurrentCategoryName(const std::string& categoryName) {\n    stanfordcpplib::autograder::GuiAutograder::instance()->setCurrentCategoryName(categoryName);\n}\n\nvoid setCurrentTestCaseName(const std::string& testFullName) {\n    stanfordcpplib::autograder::GuiAutograder::instance()->setCurrentTestCaseName(testFullName);\n}\n\nvoid setCurrentTestShouldRun(bool shouldRun) {\n    stanfordcpplib::autograder::GuiAutograder::instance()->setCurrentTestShouldRun(shouldRun);\n}\n\nbool exitEnabled() {\n    return stanfordcpplib::exitEnabled();\n}\n\nvoid setExitEnabled(bool enabled) {\n    stanfordcpplib::setExitEnabled(enabled);\n}\n\nvoid setFailDetails(stanfordcpplib::autograder::AutograderTest& test,\n                    const stanfordcpplib::autograder::UnitTestDetails& deets) {\n    stanfordcpplib::autograder::GuiAutograder::instance()->setFailDetails(test, deets);\n}\n\nvoid setFailDetails(const stanfordcpplib::autograder::UnitTestDetails& deets) {\n    stanfordcpplib::autograder::GuiAutograder::instance()->setFailDetails(deets);\n}\n\nvoid setFailsToPrintPerTest(int count) {\n    stanfordcpplib::autograder::GuiAutograder::instance()->setFailsToPrintPerTest(count);\n}\n\nvoid setGraphicalUI(bool value) {\n    stanfordcpplib::autograder::GuiAutograder::instance()->setGraphicalUI(value);\n}\n\nvoid setShowInputPanel(bool show, const std::string& filename) {\n    stanfordcpplib::autograder::GuiAutograder::instance()->setShowInputPanel(show, filename);\n}\n\nvoid setShowLateDays(bool show) {\n    stanfordcpplib::autograder::GuiAutograder::instance()->setShowLateDays(show);\n}\n\nvoid setShowTestCaseFailDetails(bool show) {\n    stanfordcpplib::autograder::GuiAutograder::instance()->setShowTestCaseFailDetails(show);\n}\n\nvoid setStartMessage(const std::string& startMessage) {\n    stanfordcpplib::autograder::GuiAutograder::instance()->setStartMessage(startMessage);\n}\n\nvoid setStudentProgramFileName(const std::string& filename) {\n    stanfordcpplib::autograder::GuiAutograder::instance()->setStudentProgramFileName(filename);\n}\n\nvoid setTestCounts(int passCount, int testCount, bool isStyleCheck) {\n    stanfordcpplib::autograder::GuiAutograder::instance()->setTestCounts(\n            passCount, testCount, isStyleCheck);\n}\n\nvoid setTestNameWidth(int width) {\n    stanfordcpplib::autograder::GuiAutograder::instance()->setTestNameWidth(width);\n}\n\nvoid setTestShouldRun(const std::string& testFullName, bool shouldRun) {\n    stanfordcpplib::autograder::GuiAutograder::instance()->setTestShouldRun(\n            testFullName, shouldRun);\n}\n\n/*\n * student_submission_time: 13/Oct/2014 10:31:15\n * assignment_due_time: 13/Oct/2014 23:59:00\n * calendar_days_late: 0\n */\nvoid showLateDays(const std::string& filename) {\n    stanfordcpplib::autograder::GuiAutograder::instance()->showLateDays(filename);\n}\n\nvoid showOutput(const std::string& output, bool showIfGraphical, bool showIfConsole) {\n    stanfordcpplib::autograder::GuiAutograder::instance()->showOutput(output, showIfGraphical, showIfConsole);\n}\n\nvoid showOutput(std::ostringstream& output, bool showIfGraphical, bool showIfConsole) {\n    showOutput(output.str(), showIfGraphical, showIfConsole);\n    output.str(\"\");   // clear output\n}\n\nvoid showStudentTextFile(const std::string& filename, int maxWidth, int maxHeight) {\n    stanfordcpplib::autograder::GuiAutograder::instance()->showStudentTextFile(\n            filename, maxWidth, maxHeight);\n}\n\nvoid styleCheckAddFile(const std::string& filename, const std::string& styleCheckXmlFileName) {\n    stanfordcpplib::autograder::GuiAutograder::instance()->styleCheckAddFile(\n            filename, styleCheckXmlFileName);\n}\n\nbool testShouldRun(const std::string& testFullName) {\n    return stanfordcpplib::autograder::GuiAutograder::instance()->testShouldRun(testFullName);\n}\n\nbool autograderYesOrNo(std::string prompt, std::string reprompt = \"\", std::string defaultValue = \"\") {\n    return stanfordcpplib::autograder::GuiAutograder::instance()->autograderYesOrNo(\n            prompt, reprompt, defaultValue);\n}\n\n} // namespace autograder\n\n/*\n * File: unittestdetails.cpp\n * -------------------------\n * This file contains implementation of a structure of details about a test\n * that is passed through the Java back-end to the autograder GUI to display.\n * See unittestdetails.h for declarations and documentation.\n *\n * @author Marty Stepp\n * @version 2016/08/01\n * - added ASSERT_DIFF_IMAGE\n * @version 2014/11/24\n * - initial version\n * @since 2014/11/24\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"unittestdetails.h\"\n#undef INTERNAL_INCLUDE\n\nstatic std::string UNIT_TEST_TYPE_NAMES[14] = {\n    \"ASSERT_EQUALS\",\n    \"ASSERT_NOT_EQUALS\",\n    \"ASSERT_NEAR\",\n    \"ASSERT_DIFF\",\n    \"ASSERT_DIFF_IMAGE\",\n    \"ASSERT_TRUE\",\n    \"ASSERT_FALSE\",\n    \"ASSERT_NOT_NULL\",\n    \"ASSERT_NULL\",\n    \"EXCEPTION\",\n    \"NOT_EXCEPTION\",\n    \"PASS\",\n    \"FAIL\",\n    \"STYLE_CHECK\",\n};\n\nnamespace stanfordcpplib {\nnamespace autograder {\n\nUnitTestDetails::UnitTestDetails()\n    : testType(autograder::UnitTestType::TEST_ASSERT_EQUALS),\n      message(\"\"),\n      expected(\"\"),\n      student(\"\"),\n      passed(false),\n      overwrite(false),\n      result(TEST_RESULT_UNKNOWN) {\n    // empty\n}\n\nUnitTestDetails::UnitTestDetails(\n        autograder::UnitTestType tp,\n        const std::string& msg,\n        bool pass)\n    : testType(tp),\n      message(msg),\n      expected(\"\"),\n      student(\"\"),\n      diffFlags(0),\n      passed(pass),\n      overwrite(false),\n      result(pass ? TEST_RESULT_PASS : TEST_RESULT_FAIL) {\n    // empty\n}\n\nUnitTestDetails::UnitTestDetails(autograder::UnitTestType tp,\n                                 const std::string& msg,\n                                 const std::string& exp,\n                                 const std::string& stu,\n                                 const std::string& vtype,\n                                 bool pass)\n    : testType(tp),\n      message(msg),\n      expected(exp),\n      student(stu),\n      valueType(vtype),\n      diffFlags(0),\n      passed(pass),\n      overwrite(false),\n      result(pass ? TEST_RESULT_PASS : TEST_RESULT_FAIL) {\n    // empty\n}\n\nUnitTestDetails::UnitTestDetails(autograder::UnitTestType tp,\n                                 const std::string& msg,\n                                 const std::string& exp,\n                                 const std::string& stu,\n                                 const std::string& vtype,\n                                 int theDiffFlags,\n                                 bool pass)\n    : testType(tp),\n      message(msg),\n      expected(exp),\n      student(stu),\n      valueType(vtype),\n      diffFlags(theDiffFlags),\n      passed(pass),\n      overwrite(false),\n      result(pass ? TEST_RESULT_PASS : TEST_RESULT_FAIL) {\n    // empty\n}\n\nUnitTestDetails::UnitTestDetails(autograder::UnitTestType tp,\n                                 const std::string& msg,\n                                 bool exp,\n                                 bool stu,\n                                 const std::string& /*vtype*/,\n                                 bool pass)\n    : testType(tp),\n      message(msg),\n      valueType(\"bool\"),\n      diffFlags(0),\n      passed(pass),\n      overwrite(false),\n      result(pass ? TEST_RESULT_PASS : TEST_RESULT_FAIL) {\n    expected = boolToString(exp);\n    student = boolToString(stu);\n}\n\nUnitTestDetails::UnitTestDetails(autograder::UnitTestType tp,\n                                 const std::string& msg,\n                                 char exp,\n                                 char stu,\n                                 const std::string& /*vtype*/,\n                                 bool pass)\n    : testType(tp),\n      message(msg),\n      valueType(\"char\"),\n      diffFlags(0),\n      passed(pass),\n      overwrite(false),\n      result(pass ? TEST_RESULT_PASS : TEST_RESULT_FAIL) {\n    expected = charToString(exp);\n    student = charToString(stu);\n}\n\nUnitTestDetails::UnitTestDetails(autograder::UnitTestType tp,\n                                 const std::string& msg,\n                                 double exp,\n                                 double stu,\n                                 const std::string& /*vtype*/,\n                                 bool pass)\n    : testType(tp),\n      message(msg),\n      valueType(\"double\"),\n      diffFlags(0),\n      passed(pass),\n      overwrite(false),\n      result(pass ? TEST_RESULT_PASS : TEST_RESULT_FAIL) {\n    expected = realToString(exp);\n    student = realToString(stu);\n}\n\nUnitTestDetails::UnitTestDetails(autograder::UnitTestType tp,\n                                 const std::string& msg,\n                                 int exp,\n                                 int stu,\n                                 const std::string& /*vtype*/,\n                                 bool pass)\n    : testType(tp),\n      message(msg),\n      valueType(\"int\"),\n      diffFlags(0),\n      passed(pass),\n      overwrite(false),\n      result(pass ? TEST_RESULT_PASS : TEST_RESULT_FAIL) {\n    expected = std::to_string(exp);\n    student = std::to_string(stu);\n}\n\nUnitTestDetails::UnitTestDetails(autograder::UnitTestType tp,\n                                 const std::string& msg,\n                                 const char* const exp,\n                                 const char* const stu,\n                                 const std::string& /*vtype*/,\n                                 bool pass)\n    : testType(tp),\n      message(msg),\n      expected(exp),\n      student(stu),\n      valueType(\"string\"),\n      diffFlags(0),\n      passed(pass),\n      overwrite(false),\n      result(pass ? TEST_RESULT_PASS : TEST_RESULT_FAIL) {\n    // empty\n}\nUnitTestDetails::UnitTestDetails(autograder::UnitTestType tp,\n                                 const std::string& msg,\n                                 void* exp,\n                                 void* stu,\n                                 const std::string& /*vtype*/,\n                                 bool pass)\n    : testType(tp),\n      message(msg),\n      valueType(\"pointer\"),\n      diffFlags(0),\n      passed(pass),\n      overwrite(false),\n      result(pass ? TEST_RESULT_PASS : TEST_RESULT_FAIL) {\n    expected = std::to_string(exp);\n    student = std::to_string(stu);\n}\n\n\nstd::string UnitTestDetails::toString() const {\n    std::ostringstream out;\n    out << *this;\n    return out.str();\n}\n\nstd::ostream& operator <<(std::ostream& out, const UnitTestDetails& deets) {\n    out << \"UnitTestDetails{\"\n        << \"testType=\" << UNIT_TEST_TYPE_NAMES[deets.testType]\n        << \",message=\" << urlEncode(deets.message)\n        << \",expected=\" << urlEncode(deets.expected)\n        << \",student=\" << urlEncode(deets.student)\n        << \",valueType=\" << urlEncode(deets.valueType)\n        << \",diffFlags=\" << deets.diffFlags\n        << \",passed=\" << std::boolalpha << deets.passed\n        << \",overwrite=\" << std::boolalpha << deets.overwrite\n        << \"}\";\n    return out;\n}\n\n} // namespace autograder\n} // namespace stanfordcpplib\n\n/*\n * File: autograder.cpp\n * --------------------\n * This file contains implementations of utility code used to help implement\n * autograder programs for grading student assignments.\n * See autograder.h for documentation of each member.\n * \n * @author Marty Stepp\n * @version 2019/04/23\n * - reset std::cout/cerr flags on every test run\n * @version 2018/10/07\n * - moved main/qMain code out to autogradermainwrapper.cpp\n * @version 2018/08/27\n * - refactored to use AutograderUnitTestGui cpp class\n * @version 2017/10/05\n * - avoid error on file-not-found in showStudentTextFile\n * - made autograder window remember position\n * @version 2016/12/01\n * - fixed memory leak from autograder buttons\n * - removed most \"current test case\" logic and replaced with testcase-specific logic\n * @version 2016/11/09\n * - added mnemonics and accelerators for autograder panel buttons\n * @version 2016/10/28\n * - added assertSimilarImage\n * @version 2016/10/13\n * - refactored exitEnabled/setExitEnabled to use new Platform version\n * @version 2016/10/04\n * - removed all static variables (replaced with STATIC_VARIABLE macros)\n * @version 2016/09/22\n * - fixed small bugs with exit()\n * @version 2016/08/02\n * - added setExitEnabled(bool) function and exitEnabled flag\n * - added assertEqualsImage\n * @version 2015/10/26\n * - added wrapped version of exit(int) to alert grader when students\n *   try to call exit() in their code to quit the program\n * @version 2014/11/27\n * - bug fix with shutting down program during manual testing\n * - bug fix with style checker not showing and having unwanted checkboxes\n * @version 2014/11/20\n * - bug fix with style checker spinner GIF image remaining at end\n * - bug fix with date/time printing \"2:0 PM\"\n * @version 2014/11/15\n * - improvements to autograder unit test GUI\n * @version 2014/11/13\n * - fixed bug with \"false negative\" tests where early assert failed then later assert passed\n * @version 2014/11/04\n * - made showLateDays dialog be 'plain' (no icon)\n * @version 2014/10/31\n * - added graphical autograder support (setGraphicalUI)\n * @since 2014/10/14\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"autograder.h\"\n#include <cstdio>\n#define INTERNAL_INCLUDE 1\n#include \"consoleautograder.h\"\n#define INTERNAL_INCLUDE 1\n#include \"consoletext.h\"\n#define INTERNAL_INCLUDE 1\n#include \"exceptions.h\"\n#define INTERNAL_INCLUDE 1\n#include \"filelib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gbufferedimage.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gevents.h\"\n#define INTERNAL_INCLUDE 1\n#include \"ginputpanel.h\"\n#define INTERNAL_INCLUDE 1\n#include \"ginteractors.h\"\n#define INTERNAL_INCLUDE 1\n#include \"goptionpane.h\"\n#define INTERNAL_INCLUDE 1\n#include \"guiautograder.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gwindow.h\"\n#define INTERNAL_INCLUDE 1\n#include \"map.h\"\n#define INTERNAL_INCLUDE 1\n#include \"qtgui.h\"\n#define INTERNAL_INCLUDE 1\n#include \"simpio.h\"\n#define INTERNAL_INCLUDE 1\n#include \"versionautograder.h\"\n#define INTERNAL_INCLUDE 1\n#include \"private/static.h\"\n#define INTERNAL_INCLUDE 1\n#include \"date.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gtest-marty.h\"\n#define INTERNAL_INCLUDE 1\n#include \"ioutils.h\"\n#define INTERNAL_INCLUDE 1\n#include \"stringutils.h\"\n#define INTERNAL_INCLUDE 1\n#include \"stylecheck.h\"\n#define INTERNAL_INCLUDE 1\n#include \"testresultprinter.h\"\n#undef INTERNAL_INCLUDE\n\n// to be written by TA/instructor for each assignment\nextern void autograderMain();\n\n// student's main function\nextern int main();\n\nnamespace stanfordcpplib {\nnamespace autograder {\n\nstd::string formatDate(const std::string& dateStr) {\n    // date = \"13/Oct/2014 10:31:15\"\n    int day;\n    char cmonth[16];\n    int year;\n    int hour;\n    int minute;\n    int second;\n    if (sscanf(dateStr.c_str(), \"%2d/%3s/%4d %2d:%2d:%2d\", &day, cmonth, &year, &hour, &minute, &second) < 6) {\n        return \"INVALID DATE STRING\";\n    }\n    std::string monthStr = cmonth;\n    std::string amPm = (hour < 12) ? \"AM\" : \"PM\";\n    if (hour > 12) {\n        hour -= 12;\n    }\n    if (hour == 0) {\n        hour = 12;\n    }\n    Date date(year, Date::parseMonth(monthStr), day);\n\n    std::ostringstream out;\n    out << date.getDayOfWeekName().substr(0, 3) << \", \"\n        << monthStr << \" \" << day << \", \" << year << \", \"\n        << hour << \":\" << std::setw(2) << std::setfill('0') << minute << \" \" << amPm;\n    return out.str();\n}\n\n\nAutograderFlags::AutograderFlags() {\n    assignmentName = \"\";\n    studentProgramFileName = \"\";\n    currentCategoryName = \"\";\n    currentTestCaseName = \"\";\n    startMessage = \"\";\n    aboutText = \"\";\n    failsToPrintPerTest = 1;\n    testNameWidth = -1;\n    showInputPanel = false;\n    inputPanelFilename = INPUT_PANE_FILENAME;\n    showLateDays = true;\n    graphicalUI = false;\n    callbackStart = nullptr;\n    callbackEnd = nullptr;\n    currentTestShouldRun = true;\n}\n\n\n/*static*/ Autograder* Autograder::_instance = nullptr;\n\n/*static*/ Autograder* Autograder::instance() {\n    return _instance;\n}\n\n/*static*/ void Autograder::setInstance(Autograder* autograder) {\n    _instance = autograder;\n}\n\nAutograder::Autograder()\n        : _iosCoutBackup(nullptr),\n          _iosCerrBackup(nullptr) {\n    _iosCerrBackup.copyfmt(std::cerr);\n    _iosCoutBackup.copyfmt(std::cout);\n    setAboutMessage(AUTOGRADER_DEFAULT_ABOUT_TEXT);\n}\n\nAutograder::~Autograder() {\n    // empty\n}\n\nbool Autograder::currentTestShouldRun() const {\n    return _flags.currentTestShouldRun;\n}\n\nstd::string Autograder::getCurrentCategoryName() const {\n    return _flags.currentCategoryName;\n}\n\nstd::string Autograder::getCurrentTestCaseName() const {\n    return _flags.currentTestCaseName;\n}\n\nAutograderFlags& Autograder::getFlags() {\n    return _flags;\n}\n\nvoid Autograder::resetStandardInputStreams() {\n    std::cerr.copyfmt(_iosCerrBackup);\n    std::cout.copyfmt(_iosCoutBackup);\n}\n\nstd::string Autograder::runAndCapture(int (* mainFunc)(),\n                          const std::string& cinInput,\n                          const std::string& outputFileName) {\n    // run the 'main' function, possibly feeding it cin, input, and capture its cout output\n    resetStandardInputStreams();\n    if (!cinInput.empty()) {\n        ioutils::redirectStdinBegin(cinInput);\n    }\n\n    ioutils::setConsoleOutputLimit(MAX_STUDENT_OUTPUT);   // prevent infinite output by student\n    ioutils::captureStdoutBegin();\n\n    mainFunc();\n\n    std::string output = ioutils::captureStdoutEnd();\n    if (!cinInput.empty()) {\n        ioutils::redirectStdinEnd();\n    }\n    resetStandardInputStreams();\n\n    // return the output as a string (and also possibly write it to a file)\n    if (!outputFileName.empty()) {\n        writeEntireFile(outputFileName, output);\n    }\n    return output;\n}\n\nvoid Autograder::setAboutMessage(const std::string& message) {\n    _flags.aboutText = AUTOGRADER_DEFAULT_ABOUT_TEXT + \"\\n\"\n            + \"Version: \" + AUTOGRADER_LIB_VERSION\n            + \"\\n==================================\\n\"\n            + message;\n}\n\nvoid Autograder::setAssignmentName(const std::string& name) {\n    _flags.assignmentName = name;\n}\n\nvoid Autograder::setCallbackEnd(void (*func)()) {\n    _flags.callbackEnd = func;\n}\n\nvoid Autograder::setCallbackStart(void (*func)()) {\n    _flags.callbackStart = func;\n}\n\nvoid Autograder::setCurrentCategoryName(const std::string& categoryName) {\n    _flags.currentCategoryName = categoryName;\n}\n\nvoid Autograder::setCurrentTestCaseName(const std::string& testFullName) {\n    _flags.currentTestCaseName = testFullName;\n}\n\nvoid Autograder::setCurrentTestShouldRun(bool shouldRun) {\n    _flags.currentTestShouldRun = shouldRun;\n}\n\nvoid Autograder::setFailsToPrintPerTest(int count) {\n    _flags.failsToPrintPerTest = count;\n}\n\nvoid Autograder::setGraphicalUI(bool value) {\n    _flags.graphicalUI = value;\n}\n\nvoid Autograder::setShowInputPanel(bool show, const std::string& filename) {\n    _flags.showInputPanel = show;\n    if (!filename.empty()) {\n        _flags.inputPanelFilename = filename;\n    }\n}\n\nvoid Autograder::setShowLateDays(bool show) {\n    _flags.showLateDays = show;\n}\n\nvoid Autograder::setShowTestCaseFailDetails(bool /*show*/) {\n    // showTestCaseFailDetails = show;\n    // empty\n}\n\nvoid Autograder::setStartMessage(const std::string& startMessage) {\n    _flags.startMessage = startMessage;\n}\n\nvoid Autograder::setStudentProgramFileName(const std::string& filename) {\n    _flags.studentProgramFileName = filename;\n}\n\nvoid Autograder::setTestNameWidth(int width) {\n    _flags.testNameWidth = width;\n}\n\nvoid Autograder::setTestShouldRun(const std::string& testFullName, bool shouldRun) {\n    if (shouldRun) {\n        _flags.testsThatShouldRun.add(testFullName);\n    } else {\n        _flags.testsThatShouldRun.remove(testFullName);\n    }\n}\n\nvoid Autograder::showOutput(std::ostringstream& output, bool showIfGraphical, bool showIfConsole) {\n    showOutput(output.str(), showIfGraphical, showIfConsole);\n    output.str(\"\");   // clear output\n}\n\nvoid Autograder::styleCheckAddFile(const std::string& filename, const std::string& styleCheckXmlFileName) {\n    std::string styleFile = styleCheckXmlFileName;\n    if (styleCheckXmlFileName.empty()) {\n        // \"Foo.cpp\" -> \"stylecheck-foo-cpp.xml\"\n        styleFile = toLowerCase(filename);\n        styleFile = stringReplace(styleFile, \".\", \"-\");\n        styleFile = \"stylecheck-\" + styleFile + \".xml\";\n    }\n    _flags.styleCheckFiles.add(filename);\n    _flags.styleCheckFileMap.put(filename, styleFile);\n}\n\nbool Autograder::testShouldRun(const std::string& testFullName) const {\n    return _flags.testsThatShouldRun.contains(testFullName);\n}\n\n} // namespace autograder\n} // namespace stanfordcpplib\n\n/*\n * File: autogradermainwrapper.cpp\n * -------------------------------\n * This file contains the main/qMain function to initiate the program.\n * It overrides/replaces the one from mainwrapper.cpp for the normal\n * Stanford C++ library project.\n *\n * @author Marty Stepp\n * @version 2018/10/07\n * - initial version; refactored from autograder.cpp\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"autograder.h\"\n#define INTERNAL_INCLUDE 1\n#include \"consoleautograder.h\"\n#define INTERNAL_INCLUDE 1\n#include \"guiautograder.h\"\n#define INTERNAL_INCLUDE 1\n#include \"qtgui.h\"\n#include <string>\n#undef INTERNAL_INCLUDE\n\n#ifdef SPL_AUTOGRADER_MODE\n// to be written by TA/instructor for each assignment\nextern void autograderMain();\n\nint qMain(int argc, char** argv);\n\n// function prototype declarations;\n// I declare these rather than including init.h to avoid\n// triggering library initialization if lib is not used\n// (keep in sync with init.h/cpp)\nnamespace stanfordcpplib {\nextern void initializeLibrary(int argc, char** argv);\nextern void runMainInThread(int (* mainFunc)(void));\nextern void shutdownLibrary();\n}\n\n#ifndef QT_NEEDS_QMAIN\n#undef main\nint main(int argc, char** argv) {\n    return qMain(argc, argv);\n}\n// keep in sync with definition in .pro file\n#ifdef SPL_REPLACE_MAIN_FUNCTION\n#define main qMain\n#endif // SPL_REPLACE_MAIN_FUNCTION\n#endif // QT_NEEDS_QMAIN\n\n// initializes the Qt GUI library subsystems and Qt graphical console as needed\n// (autograders will insert their own main wrapper)\nint qMain(int argc, char** argv) {\n    extern int main();\n\n    // initialize Stanford libraries and graphical console\n    stanfordcpplib::initializeLibrary(argc, argv);\n\n//    setConsoleLocationSaved(true);\n//    setConsoleCloseOperation(GWindow::CLOSE_HIDE);\n\n    // set which kind of autograder to use (GUI or console) based on .pro flags\n#if defined(SPL_GRAPHICAL_AUTOGRADER) || !defined(SPL_CONSOLE_AUTOGRADER)\n    stanfordcpplib::autograder::Autograder::setInstance(stanfordcpplib::autograder::GuiAutograder::instance());\n#else\n    stanfordcpplib::autograder::Autograder::setInstance(stanfordcpplib::autograder::ConsoleAutograder::instance());\n#endif\n    \n    // tell the GUI the names of all tests so that it can display them\n    stanfordcpplib::autograder::Autograder* autograder = stanfordcpplib::autograder::Autograder::instance();\n    for (std::string category : stanfordcpplib::autograder::AutograderTest::getAllCategories()) {\n        for (std::string test : stanfordcpplib::autograder::AutograderTest::getAllTests(category)) {\n            autograder->addTest(test, category);\n        }\n    }\n\n    // your assignment-specific autograder main runs here\n    ::autograderMain();\n    autograder->mainFunc();\n\n    // start GUI event processing\n    QtGui::instance()->startEventLoop();\n\n    stanfordcpplib::shutdownLibrary();\n    return 0;\n}\n#endif // SPL_AUTOGRADER_MODE\n\n/*\n * File: guiautograder.cpp\n * -----------------------\n * This file contains the implementation of the AutograderUnitTestGui class.\n * See autograderunittestgui.h for declarations and documentation.\n *\n * @author Marty Stepp\n * @version 2019/05/05\n * - dark mode support\n * @version 2019/04/23\n * - reset std::cout/cerr flags on every test run\n * @version 2019/04/22\n * - now uses image strip file for icons\n * @version 2019/04/20\n * - display expected/actual values using toPrintable to show non-printable characters better\n * @version 2018/12/01\n * - added printf messages to indicate each test as it runs/finishes\n * @version 2018/10/07\n * - icon constants and path fixes; start message word wrap\n * @version 2018/10/06\n * - initial version for 18au; clickable test cases with expanding details\n * @version 2018/10/03\n * - renamed to AutograderGUI; various windows/UI merged into one window\n * @version 2018/09/03\n * - basic implementation completed; runnable tests with clickable interactors\n * @version 2018/08/27\n * - initial incomplete version\n * @since 2018/08/27\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"guiautograder.h\"\n#define INTERNAL_INCLUDE 1\n#include \"autogradertest.h\"\n#define INTERNAL_INCLUDE 1\n#include \"bitstream.h\"\n#define INTERNAL_INCLUDE 1\n#include \"consoletext.h\"\n#define INTERNAL_INCLUDE 1\n#include \"filelib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gconsolewindow.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gdiffgui.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gdiffimage.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gfont.h\"\n#define INTERNAL_INCLUDE 1\n#include \"ginputpanel.h\"\n#define INTERNAL_INCLUDE 1\n#include \"glayout.h\"\n#define INTERNAL_INCLUDE 1\n#include \"goptionpane.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gscrollpane.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gspacer.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gthread.h\"\n#define INTERNAL_INCLUDE 1\n#include \"ioutils.h\"\n#define INTERNAL_INCLUDE 1\n#include \"qtgui.h\"\n#define INTERNAL_INCLUDE 1\n#include \"regexpr.h\"\n#define INTERNAL_INCLUDE 1\n#include \"stringutils.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"stylecheck.h\"\n#define INTERNAL_INCLUDE 1\n#include \"testresultprinter.h\"\n#define INTERNAL_INCLUDE 1\n#include \"unittestdetails.h\"\n#undef INTERNAL_INCLUDE\n#include <sstream>\n\n// student's main function\nextern int main();\n\nnamespace stanfordcpplib {\nnamespace autograder {\n\n/*static*/ GuiAutograder* GuiAutograder::_instance = nullptr;\n/*static*/ GuiAutograder* GuiAutograder::_instanceStyleCheck = nullptr;\n/*static*/ const bool GuiAutograder::AUTO_EXPAND_FAILED_TESTS = false;\n/*static*/ const int GuiAutograder::DEFAULT_WINDOW_WIDTH  = 500;\n/*static*/ const int GuiAutograder::DEFAULT_WINDOW_HEIGHT = 700;\n/*static*/ const int GuiAutograder::MAX_VALUE_DISPLAY_LENGTH = 150;\n/*static*/ int GuiAutograder::MAX_WINDOW_HEIGHT = -1;\n/*static*/ const std::string GuiAutograder::COLOR_PASS                     = \"#006600\";\n/*static*/ const std::string GuiAutograder::COLOR_PASS_DARK_MODE           = \"#55ff44\";\n/*static*/ const std::string GuiAutograder::COLOR_FAIL                     = \"#660000\";\n/*static*/ const std::string GuiAutograder::COLOR_FAIL_DARK_MODE           = \"#f47862\";\n/*static*/ const std::string GuiAutograder::COLOR_WARN                     = \"#999900\";\n/*static*/ const std::string GuiAutograder::COLOR_WARN_DARK_MODE           = \"#eeee22\";\n/*static*/ const std::string GuiAutograder::COLOR_ZEBRA_STRIPE_1           = \"#fafafa\";\n/*static*/ const std::string GuiAutograder::COLOR_ZEBRA_STRIPE_1_DARK_MODE = \"#1e1e1e\";\n/*static*/ const std::string GuiAutograder::COLOR_ZEBRA_STRIPE_2           = \"#ebebeb\";\n/*static*/ const std::string GuiAutograder::COLOR_ZEBRA_STRIPE_2_DARK_MODE = \"#2d2d2d\";\n/*static*/ const std::string GuiAutograder::ICON_FOLDER = \"\";\n/*static*/ const std::string GuiAutograder::ICON_ABOUT_FILENAME        = GuiAutograder::ICON_FOLDER + \"helpbig.gif\";\n/*static*/ const std::string GuiAutograder::ICON_AUTOGRADE_FILENAME    = GuiAutograder::ICON_FOLDER + \"check.gif\";\n/*static*/ const std::string GuiAutograder::ICON_DESELECT_ALL_FILENAME = GuiAutograder::ICON_FOLDER + \"checkbox-unchecked.gif\";\n/*static*/ const std::string GuiAutograder::ICON_EXIT_FILENAME         = GuiAutograder::ICON_FOLDER + \"stop.gif\";\n/*static*/ const std::string GuiAutograder::ICON_FAIL_FILENAME         = GuiAutograder::ICON_FOLDER + \"fail.gif\";\n/*static*/ const std::string GuiAutograder::ICON_LATE_DAYS_FILENAME    = GuiAutograder::ICON_FOLDER + \"calendar.gif\";\n/*static*/ const std::string GuiAutograder::ICON_MANUAL_FILENAME       = GuiAutograder::ICON_FOLDER + \"play.gif\";\n/*static*/ const std::string GuiAutograder::ICON_MINIMIZE_FILENAME     = GuiAutograder::ICON_FOLDER + \"minus.gif\";\n/*static*/ const std::string GuiAutograder::ICON_PASS_FILENAME         = GuiAutograder::ICON_FOLDER + \"pass.gif\";\n/*static*/ const std::string GuiAutograder::ICON_PROGRESS_FILENAME     = GuiAutograder::ICON_FOLDER + \"progress.gif\";\n/*static*/ const std::string GuiAutograder::ICON_RUNNING_FILENAME      = GuiAutograder::ICON_FOLDER + \"running.gif\";\n/*static*/ const std::string GuiAutograder::ICON_SELECT_ALL_FILENAME   = GuiAutograder::ICON_FOLDER + \"checkbox-checked.gif\";\n/*static*/ const std::string GuiAutograder::ICON_STYLE_CHECK_FILENAME  = GuiAutograder::ICON_FOLDER + \"magnifier.gif\";\n/*static*/ const std::string GuiAutograder::ICON_UNKNOWN_FILENAME      = GuiAutograder::ICON_FOLDER + \"unknown.gif\";\n/*static*/ const std::string GuiAutograder::ICON_WARNING_FILENAME      = GuiAutograder::ICON_FOLDER + \"warn.gif\";\n\nGuiAutograder* GuiAutograder::instance() {\n    if (!_instance) {\n        _instance = new GuiAutograder();\n    }\n    return _instance;\n}\n\nGuiAutograder::GuiAutograder()\n        : Autograder(),\n          _window(nullptr),\n          _autogradeButton(nullptr),\n          _manualButton(nullptr),\n          _styleCheckButton(nullptr),\n          _lateDayButton(nullptr),\n          _aboutButton(nullptr),\n          _exitButton(nullptr),\n          _center(nullptr),\n          _catchErrorsBox(nullptr),\n          // _descriptionLabel(nullptr),\n          _startLabel(nullptr),\n          _southLabel(nullptr),\n          _bigButtons(nullptr),\n          _currentCategory(nullptr),\n          _passCount(0),\n          _testCount(0),\n          _catchExceptions(true),\n          _checkboxesShown(true),\n          _testingIsInProgress(false) {\n    GThread::runOnQtGuiThread([this]() {\n        _window = new GWindow(DEFAULT_WINDOW_WIDTH, DEFAULT_WINDOW_HEIGHT);   // TODO: fix size\n        // _window->setCloseOperation(GWindow::CLOSE_HIDE);\n        _window->setVisible(false);\n        _window->setExitOnClose(true);\n        _window->setTitle(\"Autograder Tests\");\n\n        if (MAX_WINDOW_HEIGHT < 0) {\n            // make it nearly the entire screen height\n            MAX_WINDOW_HEIGHT = static_cast<int>(GWindow::getScreenHeight() - 80);\n        }\n\n        // read and unpack autograder icon image strip\n        const std::string ICON_STRIP_FILE = \"iconstrip-autograder.png\";\n        const Vector<std::string> IMAGES {\n            \"calendar.gif\",\n            \"check.gif\",\n            \"helpbig.gif\",\n            \"magnifier.gif\",\n            \"play.gif\",\n            \"pause.gif\",\n            \"stop.gif\",\n            \"textfile.gif\",\n\n            \"fail.gif\",\n            \"help.gif\",\n            \"pass.gif\",\n            \"running.gif\",\n            \"warn.gif\",\n            \"checkbox-checked.gif\",\n            \"checkbox-unchecked.gif\",\n            \"minus.gif\"\n        };\n        const GDimension LARGE_SIZE(32, 32);\n        const GDimension SMALL_SIZE(16, 16);\n        Vector<GDimension> IMAGE_SIZES = {\n            LARGE_SIZE,\n            LARGE_SIZE,\n            LARGE_SIZE,\n            LARGE_SIZE,\n            LARGE_SIZE,\n            LARGE_SIZE,\n            LARGE_SIZE,\n            LARGE_SIZE,\n\n            SMALL_SIZE,\n            SMALL_SIZE,\n            SMALL_SIZE,\n            SMALL_SIZE,\n            SMALL_SIZE,\n            SMALL_SIZE,\n            SMALL_SIZE,\n            SMALL_SIZE\n        };\n        _iconStrip = GConsoleWindow::unpackImageStrip(ICON_STRIP_FILE, IMAGES, IMAGE_SIZES);\n        if (_iconStrip.isEmpty()) {\n            error(\"GuiAutograder::constructor: could not find autograder image strip file \" + ICON_STRIP_FILE);\n        }\n\n        _catchErrorsBox = new GCheckBox(\"&Catch exceptions in tests\", /* checked */ true);\n        _catchErrorsBox->setActionListener([this]() {\n            setCatchExceptions(_catchErrorsBox->isChecked());\n        });\n\n        _startLabel = new GLabel(\" \");\n        // _startLabel->setWidth(DEFAULT_WINDOW_WIDTH - 20);\n        _startLabel->setWordWrap(true);\n\n        _southLabel = new GLabel(\" \", _iconStrip[ICON_PROGRESS_FILENAME]);\n        _southLabel->setTextPosition(GInteractor::TEXT_BESIDE_ICON);\n        _window->addToRegion(_southLabel, GWindow::REGION_SOUTH);\n        // _southLabel->getWidget()->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);\n        _window->setRegionHorizontalAlignment(GWindow::REGION_SOUTH, ALIGN_LEFT);\n\n        // container of big buttons to click to run the autograder\n        _bigButtons = new GContainer();\n\n        _autogradeButton = new GButton(\"Automated\\ntests\", _iconStrip[ICON_AUTOGRADE_FILENAME]);\n        _autogradeButton->setActionListener([this]() {\n            onClick_autograde();\n        });\n        _bigButtons->add(_autogradeButton);\n\n        _manualButton = new GButton(\"Run\\nmanually\", _iconStrip[ICON_MANUAL_FILENAME]);\n        _manualButton->setActionListener([this]() {\n            onClick_runManually();\n        });\n        _bigButtons->add(_manualButton);\n\n        _styleCheckButton = new GButton(\"Style\\nchecker\", _iconStrip[ICON_STYLE_CHECK_FILENAME]);\n        _styleCheckButton->setActionListener([this]() {\n            runStyleChecker();\n        });\n\n        for (int i = 0; i < _flags.callbackButtons.size(); i++) {\n            GButton* callbackButton = new GButton(_flags.callbackButtons[i].text, _flags.callbackButtons[i].icon);\n            callbackButton->setActionListener([this, i]() {\n                _flags.callbackButtons[i].func();\n            });\n            _callbackButtons.add(callbackButton);\n            _bigButtons->add(callbackButton);\n        }\n\n        _lateDayButton = new GButton(\"Late days\\ninfo\", _iconStrip[ICON_LATE_DAYS_FILENAME]);\n        _lateDayButton->setActionListener([this]() {\n            showLateDays();\n        });\n        _bigButtons->add(_lateDayButton);\n\n        _aboutButton = new GButton(\"About\\nGrader\", _iconStrip[ICON_ABOUT_FILENAME]);\n        _aboutButton->setActionListener([this]() {\n            GOptionPane::showMessageDialog(_flags.aboutText, \"About Autograder\",\n                                   GOptionPane::MessageType::MESSAGE_INFORMATION);\n        });\n        _bigButtons->add(_aboutButton);\n\n        _exitButton = new GButton(\"Exit\\nGrader\", _iconStrip[ICON_EXIT_FILENAME]);\n        _exitButton->setActionListener([this]() {\n            stanfordcpplib::setExitEnabled(true);   // don't block exit() call\n\n            // TODO: free up memory used by graphical interactors\n            _window->close();   // exits program; will not return\n        });\n        _bigButtons->add(_exitButton);\n\n        // layout\n        GContainer* north = new GContainer(GContainer::LAYOUT_FLOW_VERTICAL);\n        north->add(_startLabel);\n        north->add(_bigButtons);\n        north->add(_catchErrorsBox);\n        _window->addToRegion(north, GWindow::REGION_NORTH);\n        // _window->setRegionHorizontalAlignment(GWindow::REGION_NORTH, ALIGN_LEFT);\n\n        // center container will hold the test cases themselves\n        _center = new GContainer(GContainer::LAYOUT_FLOW_VERTICAL);\n        _center->setPadding(0);\n        _center->setMargin(0);\n        _center->setSpacing(1);\n        GScrollPane* scroll = new GScrollPane(_center);\n        _window->addToRegion(scroll, GWindow::REGION_CENTER);\n\n        // _window->center();\n        _window->toFront();\n    });\n}\n\nGuiAutograder::~GuiAutograder() {\n    // TODO: delete\n    _window = nullptr;\n    _autogradeButton = nullptr;\n    _manualButton = nullptr;\n    _styleCheckButton = nullptr;\n    _lateDayButton = nullptr;\n    _aboutButton = nullptr;\n    _exitButton = nullptr;\n    _center = nullptr;\n    _catchErrorsBox = nullptr;\n    _startLabel = nullptr;\n    _southLabel = nullptr;\n    _currentCategory = nullptr;\n}\n\nvoid GuiAutograder::addCallbackButton(void (* func)(),\n                       const std::string& text,\n                       const std::string& icon) {\n    GButton* button = new GButton(text);\n    if (_iconStrip.containsKey(getTail(icon))) {\n        button->setIcon(_iconStrip[getTail(icon)]);\n    } else {\n        button->setIcon(icon);\n    }\n    button->setActionListener(func);\n    _bigButtons->add(button);\n}\n\nvoid GuiAutograder::addCategory(const std::string& categoryName, const std::string& categoryDescription) {\n    if (_allCategories.containsKey(categoryName)) {\n        return;\n    }\n\n    GContainer* category = new GContainer(GContainer::LAYOUT_FLOW_VERTICAL);\n    category->setName(\"category\");\n    category->setMargin(0);\n    category->setPadding(0);\n    category->setSpacing(0);\n    _currentCategory = category;\n    _allCategories[categoryName] = category;\n\n    if (!isStyleCheck()) {\n        // top row of 'select/deselect all' buttons\n        GContainer* top = new GContainer(GContainer::LAYOUT_FLOW_HORIZONTAL);\n        top->setHorizontalAlignment(ALIGN_LEFT);\n\n        GButton* selectAllButton = new GButton(\"All\", _iconStrip[ICON_SELECT_ALL_FILENAME]);\n        selectAllButton->setTextPosition(GInteractor::TEXT_BESIDE_ICON);\n        GFont::changeFontSize(selectAllButton, -2);\n        selectAllButton->setTooltip(\"Double-click to select all tests from all categories.\");\n        selectAllButton->setActionListener([this, category]() {\n            selectAll(category, /* selected */ true);\n        });\n        selectAllButton->setDoubleClickListener([this]() {\n            selectAll(_center, /* selected */ true);\n        });\n\n        GButton* deselectAllButton = new GButton(\"None\", _iconStrip[ICON_DESELECT_ALL_FILENAME]);\n        deselectAllButton->setTextPosition(GInteractor::TEXT_BESIDE_ICON);\n        GFont::changeFontSize(deselectAllButton, -2);\n        deselectAllButton->setTooltip(\"Double-click to deselect all tests from all categories.\");\n        deselectAllButton->setActionListener([this, category]() {\n            selectAll(category, /* selected */ false);\n        });\n        deselectAllButton->setDoubleClickListener([this]() {\n            selectAll(_center, /* selected */ false);\n        });\n\n        GButton* minimizeButton = new GButton(\"Hide\", _iconStrip[ICON_MINIMIZE_FILENAME]);\n        minimizeButton->setTextPosition(GInteractor::TEXT_BESIDE_ICON);\n        GFont::changeFontSize(minimizeButton, -2);\n        minimizeButton->setTooltip(\"Double-click to minimize all categories.\");\n        minimizeButton->setActionListener([this, category]() {\n            minimize(category);\n        });\n        minimizeButton->setDoubleClickListener([this]() {\n            GThread::runOnQtGuiThreadAsync([this]() {\n                minimizeAll(true);\n            });\n        });\n\n        if (_checkboxesShown) {\n            top->add(selectAllButton);\n            top->add(deselectAllButton);\n        }\n        top->add(minimizeButton);\n\n        if (!categoryName.empty()) {\n            GLabel* nameLabel = new GLabel(categoryName);\n            GFont::changeFontSize(nameLabel, -1);\n            top->add(nameLabel);\n        }\n\n        category->add(top);\n\n        if (!categoryDescription.empty()) {\n            GLabel* descriptionLabel = new GLabel(categoryDescription);\n            descriptionLabel->setName(\"description\");\n            descriptionLabel->setWordWrap(true);\n            GFont::changeFontSize(descriptionLabel, -1);\n            category->add(descriptionLabel);\n        }\n    }\n\n    _center->add(category);\n    GLayout::forceUpdate(category);\n}\n\nvoid GuiAutograder::addTest(const std::string& testName, const std::string& categoryName) {\n    if (!containsCategory(categoryName)) {\n        addCategory(categoryName);\n    }\n\n    _testCount++;\n    GContainer* category = _allCategories[categoryName];\n    category->setName(\"category\");\n    _currentCategory = category;\n\n    GContainer* test = new GContainer(GContainer::LAYOUT_BORDER);\n    test->setName(\"testPanel\");\n    test->setMargin(0);\n    test->setPadding(0);\n    test->setSpacing(0);\n    std::string bgColor = _testCount % 2 == 0\n            ? GWindow::chooseLightDarkModeColor(COLOR_ZEBRA_STRIPE_1, COLOR_ZEBRA_STRIPE_1_DARK_MODE)\n            : GWindow::chooseLightDarkModeColor(COLOR_ZEBRA_STRIPE_2, COLOR_ZEBRA_STRIPE_2_DARK_MODE);\n    test->setBackground(bgColor);\n    GContainer* testWest = new GContainer;\n    testWest->setBackground(bgColor);\n    testWest->setPadding(0);\n\n    TestInfo* testInfo = new TestInfo;\n    testInfo->name = testName;\n    testInfo->category = categoryName;\n    testInfo->completed = false;\n    testInfo->checkbox = new GCheckBox(\"\", /* checked */ true);\n    testInfo->checkbox->setActionListener([this, testInfo]() {\n        this->setTestShouldRun(testInfo->getFullName(), testInfo->checkbox->isChecked());\n    });\n    if (!isStyleCheck() && _checkboxesShown) {\n        testWest->add(testInfo->checkbox);\n    }\n    std::string testFullName = testInfo->getFullName();\n    _allTestInfo[testFullName] = testInfo;\n\n    GLabel* testNumberLabel = new GLabel(padLeft(std::to_string(_testCount), /* digits */ 3, /* fill */ '0') + \". \");\n    // TODO: align test number right?\n    testNumberLabel->setFont(GFont::deriveQFont(testNumberLabel->getFont(), QFont::Bold));\n    testNumberLabel->setActionListener([testInfo]() {\n        testInfo->checkbox->toggle();\n    });\n    testWest->add(testNumberLabel);\n    test->addToRegion(testWest, GContainer::REGION_WEST);\n\n    std::string testNameShort = regexReplace(testName, \"Test_(?:[0-9]{1,5}_)?\", \"\");\n    testInfo->descriptionLabel = new GLabel(testNameShort);\n    testInfo->descriptionLabel->setTooltip(\"Click to see detailed results from this test.\");\n    GFont::changeFontSize(testInfo->descriptionLabel, -1);\n    testInfo->descriptionLabel->setFont(GFont::deriveQFont(testInfo->descriptionLabel->getFont(), QFont::Bold));\n    auto showDetailsFunc = [this, testFullName]() {\n        showTestDetails(testFullName);\n    };\n    testInfo->descriptionLabel->setActionListener(showDetailsFunc);\n    test->addToRegion(testInfo->descriptionLabel, GContainer::REGION_CENTER);\n\n    // have to separate runtime from result icon because the Qt GLabel doesn't\n    // support a label that has both an icon and text (oops)\n    testInfo->runtimeLabel = new GLabel;\n    testInfo->runtimeLabel->setText(\" \");\n    GFont::changeFontSize(testInfo->runtimeLabel, -2);\n    testInfo->runtimeLabel->setTooltip(\"Click to see detailed results from this test.\");\n    testInfo->runtimeLabel->setActionListener(showDetailsFunc);\n    testInfo->resultIconLabel = new GLabel;\n    testInfo->resultIconLabel->setIcon(_iconStrip[ICON_RUNNING_FILENAME]);\n    testInfo->resultIconLabel->setTooltip(\"Click to see detailed results from this test.\");\n    testInfo->resultIconLabel->setActionListener(showDetailsFunc);\n\n    GContainer* east = new GContainer();\n    east->add(testInfo->runtimeLabel);\n    east->add(testInfo->resultIconLabel);\n    test->addToRegion(east, GContainer::REGION_EAST);\n\n    testInfo->detailsLabel = new GLabel;\n    testInfo->detailsLabel->setText(\"        \");\n    // GFont::changeFontSize(testInfo->detailsLabel, -1);\n    testInfo->detailsLabel->setTooltip(\"Detailed results of the test\");\n    // testInfo->detailsLabel->setWidth(DEFAULT_WINDOW_WIDTH - 20);\n    testInfo->detailsLabel->setHeight(0);\n    testInfo->detailsLabel->setVisible(false);   // hidden until clicked\n    testInfo->detailsLabel->setActionListener(showDetailsFunc);\n    test->addToRegion(new GSpacer(20, 1), GContainer::REGION_SOUTH);\n    test->addToRegion(testInfo->detailsLabel, GContainer::REGION_SOUTH);\n    test->setRegionHorizontalAlignment(GContainer::REGION_SOUTH, ALIGN_LEFT);\n\n    _currentCategory->add(test);\n\n    // initially every test should be run unless later unchecked\n    setTestShouldRun(testFullName, true);\n}\n\nbool GuiAutograder::autograderYesOrNo(std::string prompt, std::string /*reprompt*/, std::string /*defaultValue*/) {\n    prompt = stringReplace(prompt, \" (Y/n)\", \"\");\n    prompt = stringReplace(prompt, \" (y/N)\", \"\");\n    prompt = stringReplace(prompt, \" (y/n)\", \"\");\n    prompt = stringReplace(prompt, \" (Y/N)\", \"\");\n    return GOptionPane::showConfirmDialog(prompt) == GOptionPane::ConfirmResult::CONFIRM_YES;\n}\n\nbool GuiAutograder::catchExceptions() const {\n    return _catchExceptions;\n}\n\nvoid GuiAutograder::clearTestResults() {\n    _passCount = 0;\n    for (TestInfo* testInfo : _allTestInfo.values()) {\n        if (!testInfo) {\n            continue;\n        }\n        UnitTestDetails deets;   // clear it out\n        testInfo->details = deets;\n        testInfo->completed = false;   // JDZ: must reset! if not, default/empty result treated as valid\n        testInfo->descriptionLabel->setForeground(GWindow::getDefaultInteractorTextColorInt());\n        testInfo->resultIconLabel->setText(\"\");\n        testInfo->resultIconLabel->setIcon(_iconStrip[ICON_RUNNING_FILENAME]);\n    }\n    updateSouthText();\n}\n\nvoid GuiAutograder::clearTests() {\n    // TODO\n}\n\nbool GuiAutograder::containsCategory(const std::string& categoryName) {\n    return _allCategories.containsKey(categoryName);\n}\n\nvoid GuiAutograder::displayDiffs(const std::string& /*expectedOutput*/,\n                                 const std::string& /*studentOutput*/,\n                                 const std::string& /*diffs*/,\n                                 const std::string& /*diffFile*/,\n                                 int /*truncateHeight*/) {\n    // empty\n}\n\nvoid GuiAutograder::failWithException(const std::string& testFullName,\n                                      const std::string& kind,\n                                      const std::string& desc,\n                                      const std::string& stackTrace) {\n    std::ostringstream out;\n    out << kind << \" was thrown during test execution:\" << std::endl;\n    out << desc << std::endl << std::endl;\n\n    if (stackTrace.empty()) {\n        out << \"<small>(Sorry; stack trace cannot be shown in this view.\" << std::endl;\n        out << \" To see a stack trace, Run/Debug again\" << std::endl;\n        out << \" with the 'Catch exceptions' box unchecked.)</small>\" << std::endl;\n    } else {\n        out << \"Stack trace:\" << std::endl;\n        out << \"<pre><font color='\"\n               + GWindow::chooseLightDarkModeColor(GDiffGui::COLOR_STUDENT, GDiffGui::COLOR_STUDENT_DARK_MODE)\n               + \"'>\" << stackTrace << \"</font></pre>\" << std::endl;\n    }\n    // TODO: can I get this stack trace?\n\n    // can't really get a stack trace of an exception here; would need to get it\n    // at the moment that the exception was generated\n    // exceptions::printStackTrace(out);\n\n\n    std::string errorMessage = out.str();\n    setTestDetails(testFullName, UnitTestDetails(\n        TEST_EXCEPTION,\n        errorMessage));\n    setTestResult(testFullName, TEST_RESULT_FAIL);\n}\n\nint GuiAutograder::getCheckedTestCount() const {\n    int checkedCount = 0;\n    Vector<GInteractor*> checkboxes = _center->getDescendents(\"GCheckBox\");\n    for (GInteractor* interactor : checkboxes) {\n        GCheckBox* checkbox = static_cast<GCheckBox*>(interactor);\n        if (checkbox->isChecked()) {\n            checkedCount++;\n        }\n    }\n    return checkedCount;\n}\n\nstanfordcpplib::autograder::TestResult GuiAutograder::getTestResult(const std::string& testFullName) const {\n    if (!_allTestInfo.containsKey(testFullName)) {\n        return TEST_RESULT_UNKNOWN;\n    }\n    TestInfo* testInfo = _allTestInfo[testFullName];\n    std::string fg = testInfo->descriptionLabel->getForeground();\n    if (fg == COLOR_FAIL || fg == COLOR_FAIL_DARK_MODE) {\n        return TEST_RESULT_FAIL;\n    } else if (fg == COLOR_WARN || fg == COLOR_WARN_DARK_MODE) {\n        return TEST_RESULT_WARN;\n    } else if (fg == COLOR_PASS || fg == COLOR_PASS_DARK_MODE) {\n        return TEST_RESULT_PASS;\n    } else if (testInfo->completed) {\n        return testInfo->details.passed ? TEST_RESULT_PASS : TEST_RESULT_FAIL;\n    } else {\n        return TEST_RESULT_UNKNOWN;\n    }\n}\n\nbool GuiAutograder::isChecked(const std::string& testFullName) const {\n    return _allTestInfo.containsKey(testFullName)\n            && _allTestInfo[testFullName]->checkbox->isChecked();\n}\n\nbool GuiAutograder::isGraphicalUI() const {\n    return true;\n}\n\nbool GuiAutograder::isStyleCheck() const {\n    return this == _instanceStyleCheck;\n}\n\nint GuiAutograder::mainFunc() {\n    // TODO: don't really need this?\n    _window->setTitle(_flags.assignmentName + \" Autograder\");\n    _window->_autograder_setIsAutograderWindow(true);\n    _window->rememberPosition();\n    _window->setVisible(true);\n    setConsoleExitProgramOnClose(true);\n\n    if (!_flags.startMessage.empty()) {\n        std::string startMessage = _flags.startMessage;\n        if (!stringContains(startMessage, \"<html>\")) {\n            startMessage = stringReplace(startMessage, \"Note:\", \"<b>Note:</b>\");\n            startMessage = stringReplace(startMessage, \"NOTE:\", \"<b>NOTE:</b>\");\n            startMessage = \"<html><body>\"\n                    + startMessage\n                    + \"</body></html>\";\n        }\n\n        _startLabel->setText(startMessage);\n    }\n\n    int result = 0;\n\n    // _window->pack();\n    _window->show();\n\n    return result;\n}\n\nvoid GuiAutograder::minimize(GContainer* category) {\n    minimize(category, category->getName() != \"categoryHidden\");\n}\n\nvoid GuiAutograder::minimize(GContainer* category, bool minimized) {\n    if (minimized) {\n        category->setName(\"categoryHidden\");\n    } else {\n        category->setName(\"category\");\n    }\n\n    for (GInteractor* interactor : category->getInteractors()) {\n        if ((interactor->getType() == \"GContainer\" && interactor->getName() == \"testPanel\")\n                || (interactor->getType() == \"GLabel\" && interactor->getName() == \"description\")) {\n            interactor->setVisible(!minimized);\n        }\n    }\n}\n\nvoid GuiAutograder::minimizeAll(bool minimized) {\n    for (GContainer* category : _allCategories.values()) {\n        minimize(category, minimized);\n    }\n}\n\nvoid GuiAutograder::onClick_autograde() {\n    if (_flags.callbackStart) {\n        _flags.callbackStart();\n    }\n\n    clearTestResults();\n    setTestingCompleted(false);\n    setVisible(true);\n\n    // rest must be async so that the GUI event thread goes back into its event\n    // loop and doesn't get \"stuck\" here waiting for test cases to finish\n    /*int result =*/\n    GThread::runInNewThreadAsync([this]() {\n        runAllTestCases();\n        setTestingCompleted(true);\n\n        // if style checker is merged, also run it now\n        if (stylecheck::isStyleCheckMergedWithUnitTests()) {\n            runStyleChecker();\n        }\n\n        if (_flags.callbackEnd) {\n            _flags.callbackEnd();\n        }\n    }, \"RunAllTestCases\");\n}\n\nvoid GuiAutograder::onClick_runManually() {\n    // set up buttons to automatically enter user input\n    if (_flags.showInputPanel) {\n        GInputPanel::instance()->load(_flags.inputPanelFilename);\n    }\n\n    // actually run the student's program\n    // (While program is running, if we close console, exit entire\n    // autograder program because we might be blocked on console I/O.\n    // But after it's done running, set behavior to just hide the\n    // console, since the grader will probably try to close it and then\n    // proceed with more grading and tests afterward.\n    // A little wonky, but it avoids most of the surprise cases of\n    // \"I closed the student's console and it killed the autograder\".\n    GConsoleWindow* console = getConsoleWindow();\n    console->clearConsole();\n    console->setVisible(true);\n    console->toFront();\n    console->setCloseOperation(GWindow::CLOSE_HIDE);\n    stanfordcpplib::setExitEnabled(false);   // block exit() call\n\n    GThread::runInNewThreadAsync([]() {\n        main();   // run student's main function\n    }, \"Main (student)\");\n}\n\nint GuiAutograder::runAllTestCases() {\n    static bool gtestInitialized = false;   // static OK\n\n    // set up a few initial settings and lock-down the program\n    ioutils::setConsoleEchoUserInput(true);\n    setConsoleClearEnabled(false);\n    GWindow::_autograder_setPauseEnabled(false);\n    GWindow::_autograder_setExitGraphicsEnabled(false);\n    setConsoleSettingsLocked(true);\n\n    if (!gtestInitialized) {\n        gtestInitialized = true;\n        int argc = QtGui::instance()->getArgc();\n        char** argv = QtGui::instance()->getArgv();\n        ::testing::InitGoogleTest(&argc, argv);\n\n        // set up 'test result printer' to better format test results and errors\n        ::testing::TestEventListeners& listeners =\n            ::testing::UnitTest::GetInstance()->listeners();\n        delete listeners.Release(listeners.default_result_printer());\n        MartyGraphicalTestResultPrinter* graphicalPrinter = new autograder::MartyGraphicalTestResultPrinter();\n        listeners.Append(graphicalPrinter);\n    }\n\n    // run Google Test framework now;\n    // this call burrows deep down into gtest-all.cpp and does crazy stuff with\n    // Google Test macros and stuff that I don't really understand, so have fun\n    int result = RUN_ALL_TESTS();\n\n    // un-lock-down\n    setConsoleSettingsLocked(false);\n    ioutils::setConsoleEchoUserInput(false);\n    setConsoleClearEnabled(true);\n    GWindow::_autograder_setPauseEnabled(true);\n    GWindow::_autograder_setExitGraphicsEnabled(true);\n\n    return result;\n}\n\nstd::string GuiAutograder::runAndCapture(int (* mainFunc)(),\n                                         const std::string& cinInput,\n                                         const std::string& outputFileName) {\n    // run the 'main' function, possibly feeding it cin, input, and capture its cout output\n    if (!cinInput.empty()) {\n        ioutils::redirectStdinBegin(cinInput);\n    }\n\n    ioutils::setConsoleOutputLimit(MAX_STUDENT_OUTPUT);   // prevent infinite output by student\n    ioutils::captureStdoutBegin(/* alsoStdErr */ true);\n\n    mainFunc();\n\n    std::string output = ioutils::captureStdoutEnd();\n    if (!cinInput.empty()) {\n        ioutils::redirectStdinEnd();\n    }\n\n    // return the output as a string (and also possibly write it to a file)\n    if (!outputFileName.empty()) {\n        writeEntireFile(outputFileName, output);\n    }\n    return output;\n}\n\nvoid GuiAutograder::runStyleChecker() {\n    setTestingCompleted(false);\n    int styleCheckCount = 0;\n    for (std::string filename : _flags.styleCheckFiles) {\n        stylecheck::styleCheck(\n                    filename,\n                    _flags.styleCheckFileMap[filename],\n                     /* printWarning */ styleCheckCount == 0);\n        styleCheckCount++;\n    }\n    setTestingCompleted(true);\n}\n\nvoid GuiAutograder::runTest(stanfordcpplib::autograder::AutograderTest* test) {\n    resetStandardInputStreams();\n    int timeoutMS = test->getTestTimeout();\n    std::string testName = test->getName();\n    std::string testFullName = test->getFullName();\n    GThread* thread = GThread::runInNewThreadAsync([this, test, testFullName]() {\n        setCurrentTestCaseName(testFullName);\n        if (catchExceptions()) {\n            try {\n                // echo test's name to plain-text console for logging purposes\n                printf(\"running test \\\"%s\\\"\\n\", testFullName.c_str()); fflush(stdout);\n\n                // run and catch exceptions/errors thrown during test execution\n                test->TestRealBody();\n\n                printf(\"  complete.\\n\"); fflush(stdout);\n            } catch (const ErrorException& ex) {\n                printf(\"  threw ErrorException: \\\"%s\\\"\\n\", ex.what()); fflush(stdout);\n                failWithException(testFullName, \"An ErrorException\", ex.what(), ex.getStackTrace());\n            }\n\n//            catch (const std::exception& ex) {\n//                failWithException(testFullName, \"A C++ exception\", ex.what());\n//            } catch (std::string str) {\n//                failWithException(testFullName, \"A string exception\", str);\n//            } catch (char const* str) {\n//                failWithException(testFullName, \"A string exception\", str);\n//            } catch (int n) {\n//                failWithException(testFullName, \"An int exception\", std::to_string(n));\n//            } catch (long l) {\n//                failWithException(testFullName, \"A long exception\", longToString(l));\n//            } catch (char c) {\n//                failWithException(testFullName, \"A char exception\", charToString(c));\n//            } catch (bool b) {\n//                failWithException(testFullName, \"A bool exception\", boolToString(b));\n//            } catch (double d) {\n//                failWithException(testFullName, \"A double exception\", realToString(d));\n//            }\n\n            // BUGFIX: don't catch '...' because it blocks necessary error\n            // propagation on thread timeout/shutdown\n            // catch (...) {\n            //     failWithException(testFullName, \"An unknown exception\", \"...\");\n            // }\n\n        } else {\n            test->TestRealBody();\n            printf(\"  complete.\\n\"); fflush(stdout);\n        }\n    }, /* threadName */ testName);\n\n    resetStandardInputStreams();\n    if (GThread::wait(thread, timeoutMS)) {\n        // thread is still running; timed out\n        printf(\"  timed out after %d ms.\\n\", timeoutMS); fflush(stdout);\n        thread->stop();\n        setFailDetails(*test, autograder::UnitTestDetails(\n            autograder::UnitTestType::TEST_FAIL,\n            TIMEOUT_ERROR_MESSAGE));\n        error(TIMEOUT_ERROR_MESSAGE);\n    }\n}\n\nvoid GuiAutograder::selectAll(GContainer* category, bool selected) {\n    for (GInteractor* interactor : category->getDescendents(\"GCheckBox\")) {\n        GCheckBox* checkbox = static_cast<GCheckBox*>(interactor);\n        checkbox->setChecked(selected);\n    }\n}\n\nvoid GuiAutograder::setCatchExceptions(bool catchExceptions) {\n    _catchExceptions = catchExceptions;\n}\n\nvoid GuiAutograder::setTestCounts(int passCount, int testCount, bool /*isStyleCheck*/) {\n    _passCount = passCount;\n    _testCount = testCount;\n    updateSouthText();\n}\n\nvoid GuiAutograder::setTestDetails(const std::string& testFullName, UnitTestDetails deets) {\n    if (!_allTestInfo.containsKey(testFullName)) {\n        return;\n    }\n\n    TestInfo* testInfo = _allTestInfo[testFullName];\n\n    // don't replace test details if a test already failed here\n    TestResult existingResult = getTestResult(testFullName);\n    if (existingResult == TEST_RESULT_FAIL || existingResult == TEST_RESULT_WARN) {\n        if (!deets.overwrite) {\n            return;\n        }\n    }\n\n    testInfo->details = deets;\n    testInfo->completed = true;\n\n    // also open up\n    if (AUTO_EXPAND_FAILED_TESTS\n            && !deets.passed\n            && showTestDetailsInSameWindow(testFullName)) {\n        showTestDetails(testFullName, /* force */ true);\n    }\n}\n\nvoid GuiAutograder::setTestingCompleted(bool completed) {\n    _testingIsInProgress = !completed;\n    updateSouthText();\n}\n\nbool GuiAutograder::setTestResult(const std::string& testFullName, TestResult result) {\n    if (!_allTestInfo.containsKey(testFullName)) {\n        return false;   // test not found\n    }\n\n    // if test already failed previously, don't set back to passed\n    TestResult existingResult = getTestResult(testFullName);\n    if ((existingResult == TEST_RESULT_FAIL || existingResult == TEST_RESULT_WARN)\n            && result != TEST_RESULT_FAIL) {\n        return true;\n    }\n\n    TestInfo* testInfo = _allTestInfo[testFullName];\n    if (result != TEST_RESULT_UNKNOWN) {\n        testInfo->completed = true;\n    }\n\n    std::string iconFile;\n    std::string labelForegroundColor;\n    switch (result) {\n    case TEST_RESULT_FAIL:\n        iconFile = ICON_FAIL_FILENAME;\n        labelForegroundColor = GWindow::chooseLightDarkModeColor(COLOR_FAIL, COLOR_FAIL_DARK_MODE);\n        break;\n    case TEST_RESULT_PASS:\n        iconFile = ICON_PASS_FILENAME;\n        labelForegroundColor = GWindow::chooseLightDarkModeColor(COLOR_PASS, COLOR_PASS_DARK_MODE);\n        _passCount++;\n        break;\n    case TEST_RESULT_WARN:\n        iconFile = ICON_WARNING_FILENAME;\n        labelForegroundColor = GWindow::chooseLightDarkModeColor(COLOR_WARN, COLOR_WARN_DARK_MODE);\n        break;\n    case TEST_RESULT_UNKNOWN:\n        iconFile = ICON_UNKNOWN_FILENAME;\n        labelForegroundColor = GWindow::getDefaultInteractorTextColor();\n        break;\n    }\n\n    testInfo->resultIconLabel->setIcon(_iconStrip[iconFile]);\n    testInfo->descriptionLabel->setForeground(labelForegroundColor);\n    updateSouthText();\n    return true;\n}\n\nbool GuiAutograder::setTestRuntime(const std::string& testFullName, long ms) {\n    if (!_allTestInfo.containsKey(testFullName)) {\n        return false;   // test not found\n    }\n\n    std::string text = \" (\" + longToString(ms) + \" ms)\";\n    TestInfo* testInfo = _allTestInfo[testFullName];\n    testInfo->runtimeLabel->setText(text);\n    return true;\n}\n\nvoid GuiAutograder::setVisible(bool visible) {\n    _window->setVisible(visible);\n}\n\nvoid GuiAutograder::setWindowDescription(const std::string& /*description*/) {\n    // TODO: set text of _descriptionLabel\n}\n\nvoid GuiAutograder::showLateDays(const std::string& filename) {\n    Map<std::string, std::string> lineMap;\n    std::string text;\n    if (fileExists(filename)) {\n        text = readEntireFile(filename);\n    } else {\n        text = std::string(\"student_submission_time: unknown\\n\")\n                + \"assignment_due_time: unknown\\n\"\n                + \"calendar_days_late: unknown\\n\"\n                + \"details: \" + filename + \" not found!\";\n    }\n\n    for (std::string line : stringSplit(text, \"\\n\")) {\n        if (stringContains(line, \": \")) {\n            std::string key = line.substr(0, line.find(\": \"));\n            std::string value = line.substr(line.find(\": \") + 2);\n            lineMap.put(key, value);\n        }\n    }\n\n    std::string message;\n    std::string dueTime = lineMap[\"assignment_due_time\"];\n    std::string submitTime = lineMap[\"student_submission_time\"];\n    std::string daysLate = lineMap[\"calendar_days_late\"];\n    std::string details = lineMap[\"details\"];\n    if (dueTime != \"unknown\") {\n        dueTime = formatDate(dueTime);\n    }\n    if (submitTime != \"unknown\") {\n        submitTime = formatDate(submitTime);\n    }\n    message += \"<html><table>\";\n    if (!details.empty()) {\n        message += \"<tr><td><b>NOTE:</b></td><td>\" + details + \"</td></tr>\";\n    }\n    message += \"<tr><td><b>due</b></td><td>\" + dueTime + \"</td></tr>\";\n    message += \"<tr><td><b>submitted</b></td><td>\" + submitTime + \"</td></tr>\";\n    message += \"<tr><td><b>cal.days late</b></td><td>\" + daysLate + \"</td></tr>\";\n    message += \"</table></html>\";\n    GOptionPane::showMessageDialog(message, filename, GOptionPane::MESSAGE_PLAIN);\n}\n\nvoid GuiAutograder::showOutput(const std::string& output, bool showIfGraphical, bool /*showIfConsole*/) {\n    if (showIfGraphical) {\n        GOptionPane::showMessageDialog(output);\n    }\n}\n\nvoid GuiAutograder::showTestDetails(const std::string& testFullName, bool force) {\n    TestInfo* testInfo = _allTestInfo[testFullName];\n    if (!testInfo || !testInfo->completed) {\n        return;\n    }\n\n    // toggle between showing and visible\n    if (force || static_cast<int>(testInfo->detailsLabel->getHeight()) == 0) {\n        const UnitTestDetails& deets = testInfo->details;\n\n        std::string message = deets.message;\n\n        // customize message based on its assertion type\n        switch (deets.testType) {\n            case TEST_ASSERT_EQUALS:\n                message += \" (must be equal)\";\n                break;\n            case TEST_ASSERT_NOT_EQUALS:\n                message += \" (must be non-equal)\";\n                break;\n            case TEST_ASSERT_NEAR:\n                message += \" (must be nearly equal)\";\n                break;\n            case TEST_ASSERT_DIFF:\n                message += \" (program output must match)\";\n                break;\n            case TEST_ASSERT_DIFF_IMAGE:\n                message += \" (images must match)\";\n                break;\n            case TEST_ASSERT_TRUE:\n            case TEST_ASSERT_FALSE:\n            case TEST_ASSERT_NOT_NULL:\n            case TEST_ASSERT_NULL:\n                break;\n            case TEST_EXCEPTION:\n                // message += \" (threw exception)\";\n                break;\n            case TEST_NOT_EXCEPTION:\n                message += \" (didn't throw expected exception)\";\n                break;\n            case TEST_PASS:\n                message += \" (passed)\";\n                break;\n            case TEST_FAIL:\n                message += \" (failed)\";\n                break;\n            case TEST_STYLE_CHECK:\n                // message += \" (style checker warning)\";\n                break;\n        }\n\n        std::string expected = deets.expected;\n        std::string student  = deets.student;\n        if (deets.valueType == \"string\") {\n            expected = \"\\\"\" + expected + \"\\\"\";\n            student  = \"\\\"\" + student + \"\\\"\";\n        } else if (deets.valueType == \"char\") {\n            expected = \"'\" + expected + \"'\";\n            student  = \"'\" + student + \"'\";\n        }\n        expected = toPrintable(expected);\n        student  = toPrintable(student);\n\n        // insert \"expected\"/\"student\" messages for some assert types for clarity\n        switch (deets.testType) {\n            case TEST_EXCEPTION:\n                expected = \"do not throw an exception\";\n                student  = (deets.passed ? \"did not throw an exception\" : \"threw an exception\");\n                break;\n            case TEST_NOT_EXCEPTION:\n                expected = \"throw an exception\";\n                student  = (deets.passed ? \"threw an exception\" : \"did not throw an exception\");\n                break;\n            default:\n                break;\n        }\n\n        // decide whether to show a details label or pop up an external window\n        // (external window for full-program text diffs or graphical image diffs)\n        std::string htmlMessage = \"\";\n        std::string expectedTruncated;\n        std::string studentTruncated;\n        switch (deets.testType) {\n            case TEST_ASSERT_EQUALS:\n            case TEST_ASSERT_NOT_EQUALS:\n            case TEST_ASSERT_NEAR:\n            case TEST_ASSERT_NULL:\n            case TEST_ASSERT_NOT_NULL:\n            case TEST_ASSERT_TRUE:\n            case TEST_ASSERT_FALSE:\n            case TEST_STYLE_CHECK:\n            case TEST_EXCEPTION:\n            case TEST_NOT_EXCEPTION:\n            case TEST_PASS:\n            case TEST_FAIL: {\n                // details label\n                expectedTruncated = stringutils::truncate(expected, MAX_VALUE_DISPLAY_LENGTH, \" ...\");\n                studentTruncated  = stringutils::truncate(student, MAX_VALUE_DISPLAY_LENGTH, \" ...\");\n                message = stringReplace(message, \"\\n\\n\", \"<br>\\n<br>\\n\");\n                htmlMessage += \"<p>\" + message + \"</p>\";\n\n                if (!expected.empty() || !student.empty()) {\n                    std::string expectedHtml = stringReplace(expectedTruncated, \" \", \"&nbsp;\");\n                    std::string studentHtml  = stringReplace(studentTruncated, \" \", \"&nbsp;\");\n                    htmlMessage += \"<ul>\";\n                    htmlMessage += \"<li><code><font color='\" + GWindow::chooseLightDarkModeColor(GDiffGui::COLOR_EXPECTED, GDiffGui::COLOR_EXPECTED_DARK_MODE) + \"'>expected:</font></code><code>&nbsp;\" + expectedHtml + \"</code></li>\";\n                    htmlMessage += \"<li><code><font color='\" + GWindow::chooseLightDarkModeColor(GDiffGui::COLOR_STUDENT, GDiffGui::COLOR_STUDENT_DARK_MODE)  + \"'>student&nbsp;:</font></code><code>&nbsp;\" + studentHtml + \"</code></li>\";\n                    htmlMessage += \"</ul>\";\n                }\n\n                std::string resultColor = GWindow::chooseLightDarkModeColor(COLOR_PASS, COLOR_PASS_DARK_MODE);\n                std::string resultText = \"PASS\";\n                if (!deets.passed) {\n                    if (deets.result == TEST_RESULT_WARN) {\n                        resultColor = GWindow::chooseLightDarkModeColor(COLOR_WARN, COLOR_WARN_DARK_MODE);\n                        resultText = \"WARNING\";\n                    } else {\n                        resultColor = GWindow::chooseLightDarkModeColor(COLOR_FAIL, COLOR_FAIL_DARK_MODE);\n                        resultText = \"FAIL\";\n                    }\n                }\n                htmlMessage += std::string(\"<p>result: \")\n                        + \"<font color='\" + resultColor + \"'><b>\" + resultText\n                        + \"</b></font></p>\";\n\n                // if (!stack.isEmpty()) {\n                //     htmlMessage += \"<div style='margin-top: 5px;'><b>Stack trace:</b></div><pre>\" + stack + \"</pre>\";\n                // }\n\n                message = \"<html><body>\" + htmlMessage + \"</body></html>\";\n                testInfo->detailsLabel->setText(message);\n                testInfo->detailsLabel->setWordWrap(true);\n                testInfo->detailsLabel->setVisible(true);\n                testInfo->detailsLabel->setHeight(testInfo->detailsLabel->getPreferredHeight());\n                // TODO: stretch\n                break;\n            }\n            case TEST_ASSERT_DIFF: {\n                // DiffGui external window\n                GDiffGui::showDialog(\"Expected output\", deets.expected, \"Student output\", deets.student, deets.diffFlags);\n                break;\n            }\n            case TEST_ASSERT_DIFF_IMAGE: {\n                // DiffImage external window\n                GDiffImage::showDialog(\"Expected output\", /* expectedImageFile */ deets.expected,\n                                       \"Student output\", /* studentImageFile */ deets.student);\n                break;\n            }\n        }\n    } else {\n        // hide\n        testInfo->detailsLabel->setHeight(0);\n        testInfo->detailsLabel->setVisible(false);\n    }\n}\n\nbool GuiAutograder::showTestDetailsInSameWindow(const std::string& testFullName) const {\n    TestInfo* testInfo = _allTestInfo[testFullName];\n    if (!testInfo || !testInfo->completed) {\n        return false;\n    }\n    const UnitTestDetails& deets = testInfo->details;\n    switch (deets.testType) {\n        case TEST_ASSERT_EQUALS:\n        case TEST_ASSERT_NOT_EQUALS:\n        case TEST_ASSERT_NEAR:\n        case TEST_ASSERT_NULL:\n        case TEST_ASSERT_NOT_NULL:\n        case TEST_ASSERT_TRUE:\n        case TEST_ASSERT_FALSE:\n        case TEST_STYLE_CHECK:\n        case TEST_EXCEPTION:\n        case TEST_NOT_EXCEPTION:\n        case TEST_PASS:\n        case TEST_FAIL:\n            return true;\n        default:\n            return false;\n    }\n}\n\nvoid GuiAutograder::updateSouthText() {\n    std::string text = \"passed \" + std::to_string(_passCount)\n            + \" / \" + std::to_string(getCheckedTestCount()) + \" tests\";\n    if (_testingIsInProgress) {\n        text += \" (running ...)\";\n        if (_southLabel->getIcon() == \"\") {\n            _southLabel->setIcon(_iconStrip[ICON_PROGRESS_FILENAME]);\n        }\n    } else {\n        text += \" (complete)\";\n        _southLabel->setIcon(\"\");\n    }\n    _southLabel->setText(text);\n}\n\nvoid GuiAutograder::setFailDetails(AutograderTest& test, const autograder::UnitTestDetails& deets) {\n    setTestDetails(test.getFullName(), deets);\n}\n\nvoid GuiAutograder::setFailDetails(const autograder::UnitTestDetails& deets) {\n    std::string curTest = getCurrentTestCaseName();\n    setTestDetails(curTest, deets);\n}\n\nvoid GuiAutograder::showStudentTextFile(const std::string& filename, int maxWidth, int maxHeight) {\n    std::string myText;\n    if (fileExists(filename)) {\n        myText = readEntireFile(filename);\n    } else {\n        myText = \"file not found: \" + filename;\n    }\n    if (maxWidth > 0) {\n        myText = stringutils::trimToWidth(myText, maxWidth);\n    }\n    if (maxHeight > 0) {\n        myText = stringutils::trimToHeight(myText, maxHeight);\n    }\n    if (!endsWith(myText, \"\\n\")) {\n        myText += \"\\n\";\n    }\n    GOptionPane::showTextFileDialog(\n            myText,\n            /* title */ \"Contents of \" + filename,\n            maxHeight, maxWidth);\n}\n\n} // namespace autograder\n} // namespace stanfordcpplib\n\n/*\n * File: autogradertest.cpp\n * ------------------------\n * This file contains the implementation of the AutograderTest class.\n * See autogradertest.h for declarations and documentation.\n *\n * @author Marty Stepp\n * @version 2016/10/04\n * - slight refactor of static variables\n * @version 2014/11/24\n * - initial version\n * @since 2014/11/24\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"autogradertest.h\"\n#define INTERNAL_INCLUDE 1\n#include \"autograder.h\"\n//#include \"autogradergui.h\"\n#undef INTERNAL_INCLUDE\n\nnamespace stanfordcpplib {\nnamespace autograder {\n\nint AutograderTest::TIMEOUT_MS_DEFAULT = 10000;\nint AutograderTest::TIMEOUT_MS_MIN = 100;\nbool AutograderTest::RUN_EACH_TEST_IN_THREAD_DEFAULT = true;\n\nstatic std::vector<std::string>& allCategories() {\n    static std::vector<std::string> v;   // static OK\n    return v;\n}\nstd::map<std::string, std::vector<std::string> >& allTests() {\n    static std::map<std::string, std::vector<std::string> > __allTests;   // static OK\n    return __allTests;\n}\n\nvoid AutograderTest::addTestToList(const std::string& categoryName, const std::string& testName) {\n    if (allTests().find(categoryName) == allTests().end()) {\n        allCategories().push_back(categoryName);\n    }\n    allTests()[categoryName].push_back(testName);\n}\n\nconst std::vector<std::string>& AutograderTest::getAllCategories() {\n    return allCategories();\n}\n\nconst std::vector<std::string>& AutograderTest::getAllTests(const std::string& categoryName) {\n    return allTests()[categoryName];\n}\n\nint AutograderTest::getDefaultTimeout() {\n    return TIMEOUT_MS_DEFAULT;\n}\n\nvoid AutograderTest::setDefaultTimeout(int timeoutMS) {\n    AutograderTest::TIMEOUT_MS_DEFAULT = timeoutMS;\n}\n\nint AutograderTest::getTestTimeout() const {\n    return timeoutMS;\n}\n\nvoid AutograderTest::setTestTimeout(int ms) {\n    if (timeoutMS > 0) {\n        timeoutMS = std::max(TIMEOUT_MS_MIN, ms);\n    } else {\n        timeoutMS = ms;\n    }\n}\n\nstd::string AutograderTest::getName() const {\n    return this->name;\n}\n\nstd::string AutograderTest::getCategory() const {\n    return this->category;\n}\n\nstd::string AutograderTest::getFullName() const {\n    return this->category.empty() ? this->name : (this->category + \"_\" + this->name);\n}\n\nbool AutograderTest::shouldRun() {\n    stanfordcpplib::autograder::Autograder* autograder = stanfordcpplib::autograder::Autograder::instance();\n    return autograder->testShouldRun(this->getFullName());\n}\n\nbool AutograderTest::shouldRunInOwnThread() {\n    return runInThread && timeoutMS > 0;\n}\n\nvoid AutograderTest::setShouldRunInOwnThread(bool runInThread) {\n    this->runInThread = runInThread;\n}\n\n\nvoid AutograderTest::SetUp() {\n    timeoutMS = TIMEOUT_MS_DEFAULT;\n    runInThread = RUN_EACH_TEST_IN_THREAD_DEFAULT;\n}\n \nvoid AutograderTest::TearDown() {\n    // empty\n}\n\nvoid AutograderTest::TestBody() {\n    // empty; override me\n}\n\nvoid AutograderTest::TestRealBody() throw (ErrorException) {\n    // empty; override me\n}\n\n} // namespace autograder\n} // namespace stanfordcpplib\n\n/*\n * File: testresultprinter.cpp\n * ---------------------------\n * This file contains implementation of classes used by GoogleTest to print and\n * format test case results differently than GTest's default format.\n * See testresultprinter.h for declarations and documentation.\n *\n * @author Marty Stepp\n * @version 2018/08/27\n * - refactored to use AutograderUnitTestGui cpp class\n * @version 2018/01/23\n * - fixed bug with not overwriting bad/vague test output on diffs (\"expected true, got false\" etc.)\n * @version 2016/12/01\n * - fixed bugs with badly displayed / wrong test results\n * - clarified assertion output\n * @version 2016/10/22\n * - removed all static variables (replaced with STATIC_VARIABLE macros)\n * @version 2015/10/08\n * - fixes for printing of failed non-timeout tests\n * @version 2014/11/24\n * @since 2014/11/24\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"testresultprinter.h\"\n#define INTERNAL_INCLUDE 1\n#include \"autograder.h\"\n#define INTERNAL_INCLUDE 1\n#include \"stringutils.h\"\n#define INTERNAL_INCLUDE 1\n#include \"private/static.h\"\n#undef INTERNAL_INCLUDE\n\nnamespace stanfordcpplib {\nnamespace autograder {\nstd::string MartyTestResultPrinter::failMessage = \"\";\n\nSTATIC_CONST_VARIABLE_DECLARE(int, TEST_OUTPUT_INDENT, 8)\nSTATIC_CONST_VARIABLE_DECLARE(std::string, TEST_OUTPUT_INDENT_SPACES, \"        \")\n\nstatic std::string gtest_result_reformat(std::string msg) {\n    bool hasActualLine = stringContains(msg, \"Actual:\");\n    bool hasWhichIsLine = stringContains(msg, \"Which is:\");\n    Vector<std::string> lines = stringutils::explodeLines(msg);\n    for (int i = 0; i < lines.size(); i++) {\n        if ((hasActualLine && startsWith(trim(lines[i]), \"Value of:\")) ||\n            (hasWhichIsLine && startsWith(trim(lines[i]), \"Expected:\"))) {\n            lines.remove(i);\n            i--;\n        }\n    }\n    msg = stringutils::implode(lines);\n    msg = stringReplace(msg, \"  Actual:\", \"Student :\");\n    msg = stringReplace(msg, \"Which is:\", \"Expected:\");\n    return msg;\n}\n\nMartyTestResultPrinter::MartyTestResultPrinter() {\n    testInProgress = false;\n    failCountThisTest = 0;\n    failCountToPrintPerTest = 0;  // no limit\n    testCount = 0;\n    failMessage = \"\";\n    testNameWidth = 64;  // default 64 chars wide\n}\n\nint MartyTestResultPrinter::getTestNameWidth() const {\n    return testNameWidth;\n}\n\nvoid MartyTestResultPrinter::OnTestStart(const ::testing::TestInfo& test_info) {\n    testInProgress = true;\n    testCount++;\n    std::string testFullName = test_info.full_name();\n    stanfordcpplib::autograder::Autograder* autograder = stanfordcpplib::autograder::Autograder::instance();\n    autograder->getFlags().currentTestCaseName = testFullName;\n    std::cout << std::setw(4) << std::right << testCount << \") \"\n         << std::setw(testNameWidth) << std::left << test_info.name() << \" ... \";\n    std::cout.flush();\n}\n\nvoid MartyTestResultPrinter::OnTestPartResult(const ::testing::TestPartResult& test_part_result) {\n    if (test_part_result.failed()) {\n        failCountThisTest++;\n        if (failCountThisTest == 1) {\n            if (!failMessage.empty()) {\n                std::cout << \"FAIL!\" << std::endl;\n            } else {\n                std::string msg = test_part_result.message();\n                if (msg.find(\"C++ exception with description \") != std::string::npos) {\n                    std::cout << \"EXCEPTION!\" << std::endl;\n                }\n            }\n        }\n        if (failCountToPrintPerTest > 0 && failCountThisTest <= failCountToPrintPerTest) {\n            if (!failMessage.empty()) {\n                std::cout << STATIC_VARIABLE(TEST_OUTPUT_INDENT_SPACES) << failMessage << std::endl;\n            }\n            std::cout << stringutils::indent(gtest_result_reformat(test_part_result.summary()), STATIC_VARIABLE(TEST_OUTPUT_INDENT)) << std::endl;\n        }\n    }\n}\n\nvoid MartyTestResultPrinter::OnTestEnd(const ::testing::TestInfo& test_info) {\n    stanfordcpplib::autograder::Autograder* autograder = stanfordcpplib::autograder::Autograder::instance();\n    if (autograder->getFlags().testTimers[test_info.full_name()].isStarted()) {\n        autograder->getFlags().testTimers[test_info.full_name()].stop();\n    }\n    if (test_info.result()->Failed()) {\n        if (failCountToPrintPerTest > 0 && failCountThisTest > failCountToPrintPerTest) {\n            int extraFails = failCountThisTest - failCountToPrintPerTest;\n            std::cout << STATIC_VARIABLE(TEST_OUTPUT_INDENT_SPACES) << \"(\" << extraFails << \" additional assertion failure(s) not printed)\" << std::endl;\n        }\n    } else {\n        std::cout << \"pass, \" << std::setw(5) << std::right\n                  << autograder->getFlags().testTimers[test_info.full_name()].elapsed()\n                  << \"ms\" << std::endl;\n    }\n    testInProgress = false;\n    failCountThisTest = 0;\n}\n\nvoid MartyTestResultPrinter::OnTestProgramEnd(const ::testing::UnitTest& unit_test) {\n    std::cout << \"====================================================================\" << std::endl;\n    int testCount = unit_test.total_test_count();\n    int failCount = unit_test.failed_test_count();\n    int passCount = testCount - failCount;\n    std::cout << \"Total tests: \" << testCount << \", passed: \" << passCount << \", failed: \" << failCount << std::endl;\n    if (failCount == 0) {\n        std::cout << \"The student passed all functionality tests. Hooray!\" << std::endl;\n    } else {\n        std::cout << \"The student failed \" << failCount << \" functionality tests. Please investigate.\" << std::endl;\n    }\n}\n\nvoid MartyTestResultPrinter::setFailDetails(AutograderTest& /* test */, const UnitTestDetails& deets) {\n    setFailDetails(deets);\n}\n\nvoid MartyTestResultPrinter::setFailDetails(const UnitTestDetails& deets) {\n    failMessage = FAIL_PREFIX + deets.message;\n    switch (deets.testType) {\n    case autograder::UnitTestType::TEST_ASSERT_EQUALS:\n        failMessage += \"  (must be equal)\";  break;\n    case autograder::UnitTestType::TEST_ASSERT_NOT_EQUALS:\n        failMessage += \"  (must be non-equal)\";  break;\n    case autograder::UnitTestType::TEST_ASSERT_NEAR:\n        failMessage += \"  (must be nearly equal)\";  break;\n    case autograder::UnitTestType::TEST_ASSERT_TRUE:\n        failMessage += \"  (must be true)\";  break;\n    case autograder::UnitTestType::TEST_ASSERT_FALSE:\n        failMessage += \"  (must be false)\";  break;\n    default:  break;\n    }\n}\n\nvoid MartyTestResultPrinter::setFailsToPrintPerTest(int fails) {\n    failCountToPrintPerTest = fails;\n}\n\nvoid MartyTestResultPrinter::setTestNameWidth(int width) {\n    testNameWidth = width;\n}\n\n// ===========================================================================\n\nconst int MartyGraphicalTestResultPrinter::TEST_RUNTIME_MIN_TO_DISPLAY_MS = 100;\n\nvoid MartyGraphicalTestResultPrinter::setFailDetails(AutograderTest& test, const UnitTestDetails& deets) {\n    stanfordcpplib::autograder::Autograder* autograder = stanfordcpplib::autograder::Autograder::instance();\n    autograder->setTestDetails(test.getFullName(), deets);\n}\n\nvoid MartyGraphicalTestResultPrinter::setFailDetails(const UnitTestDetails& deets) {\n    stanfordcpplib::autograder::Autograder* autograder = stanfordcpplib::autograder::Autograder::instance();\n    std::string curTest = autograder->getCurrentTestCaseName();\n    autograder->setTestDetails(curTest, deets);\n}\n\nvoid MartyGraphicalTestResultPrinter::OnTestStart(const ::testing::TestInfo& test_info) {\n    stanfordcpplib::autograder::Autograder* autograder = stanfordcpplib::autograder::Autograder::instance();\n    std::string testFullName = test_info.full_name();\n    autograder->getFlags().testTimers[testFullName].start();   // starts timer\n    if (autograder->testShouldRun(testFullName)) {\n        autograder->setCurrentTestCaseName(testFullName);\n    }\n}\n\nvoid MartyGraphicalTestResultPrinter::OnTestEnd(const ::testing::TestInfo& test_info) {\n    stanfordcpplib::autograder::Autograder* autograder = stanfordcpplib::autograder::Autograder::instance();\n    std::string testFullName = test_info.full_name();\n    if (!autograder->testShouldRun(testFullName)) {\n        return;\n    }\n\n    if (test_info.result()->Failed()) {\n        autograder->setTestResult(testFullName, stanfordcpplib::autograder::TEST_RESULT_FAIL);\n        for (int i = 0; i < test_info.result()->total_part_count(); i++) {\n            testing::TestPartResult part = test_info.result()->GetTestPartResult(i);\n            if (part.failed()) {\n                UnitTestDetails deets(autograder::UnitTestType::TEST_FAIL, part.message());\n                deets.overwrite = false;   // BUGFIX for bad test details on Windows\n                autograder->setTestDetails(testFullName, deets);\n                break;\n            }\n        }\n    } else {\n        autograder->setTestResult(testFullName, stanfordcpplib::autograder::TEST_RESULT_PASS);\n    }\n\n    if (autograder->getFlags().testTimers.containsKey(testFullName)) {\n        autograder->getFlags().testTimers[testFullName].stop();\n        long runtimeMS = autograder->getFlags().testTimers[testFullName].elapsed();\n        if (runtimeMS >= TEST_RUNTIME_MIN_TO_DISPLAY_MS) {\n            autograder->setTestRuntime(testFullName, runtimeMS);\n        }\n    }\n}\n\n} // namespace autograder\n} // namespace stanfordcpplib\n\n/*\n * @author see below; slight modifications made by Marty Stepp\n * @version 2018/10/06\n * - renamed variable 'forever' to avoid conflict with Qt 'forever' pseudokeyword\n * @version 2016/10/14\n * - changed NULL to nullptr as appropriate\n * @version 2014/11/08\n */\n\n// Copyright 2008, Google Inc.\n// All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n// Author: mheule@google.com (Markus Heule)\n//\n// Google C++ Testing Framework (Google Test)\n//\n// Sometimes it's desirable to build Google Test by compiling a single file.\n// This file serves this purpose.\n\n// This line ensures that gtest.h can be compiled on its own, even\n// when it's fused.\n#define INTERNAL_INCLUDE 1\n#include \"gtest.h\"\n#include <iostream>\n#define INTERNAL_INCLUDE 1\n#include \"autogradertest.h\"\n#undef INTERNAL_INCLUDE\n\n// The following lines pull in the real gtest *.cc files.\n// Copyright 2005, Google Inc.\n// All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n// Author: wan@google.com (Zhanyong Wan)\n//\n// The Google C++ Testing Framework (Google Test)\n\n// Copyright 2007, Google Inc.\n// All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n// Author: wan@google.com (Zhanyong Wan)\n//\n// Utilities for testing Google Test itself and code that uses Google Test\n// (e.g. frameworks built on top of Google Test).\n\n#ifndef GTEST_INCLUDE_GTEST_GTEST_SPI_H_\n#define GTEST_INCLUDE_GTEST_GTEST_SPI_H_\n\n\nnamespace testing {\n\n// This helper class can be used to mock out Google Test failure reporting\n// so that we can test Google Test or code that builds on Google Test.\n//\n// An object of this class appends a TestPartResult object to the\n// TestPartResultArray object given in the constructor whenever a Google Test\n// failure is reported. It can either intercept only failures that are\n// generated in the same thread that created this object or it can intercept\n// all generated failures. The scope of this mock object can be controlled with\n// the second argument to the two arguments constructor.\nclass GTEST_API_ ScopedFakeTestPartResultReporter\n    : public TestPartResultReporterInterface {\n public:\n  // The two possible mocking modes of this object.\n  enum InterceptMode {\n    INTERCEPT_ONLY_CURRENT_THREAD,  // Intercepts only thread local failures.\n    INTERCEPT_ALL_THREADS           // Intercepts all failures.\n  };\n\n  // The c'tor sets this object as the test part result reporter used\n  // by Google Test.  The 'result' parameter specifies where to report the\n  // results. This reporter will only catch failures generated in the current\n  // thread. DEPRECATED\n  explicit ScopedFakeTestPartResultReporter(TestPartResultArray* result);\n\n  // Same as above, but you can choose the interception scope of this object.\n  ScopedFakeTestPartResultReporter(InterceptMode intercept_mode,\n                                   TestPartResultArray* result);\n\n  // The d'tor restores the previous test part result reporter.\n  virtual ~ScopedFakeTestPartResultReporter();\n\n  // Appends the TestPartResult object to the TestPartResultArray\n  // received in the constructor.\n  //\n  // This method is from the TestPartResultReporterInterface\n  // interface.\n  virtual void ReportTestPartResult(const TestPartResult& result);\n private:\n  void Init();\n\n  const InterceptMode intercept_mode_;\n  TestPartResultReporterInterface* old_reporter_;\n  TestPartResultArray* const result_;\n\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(ScopedFakeTestPartResultReporter);\n};\n\nnamespace internal {\n\n// A helper class for implementing EXPECT_FATAL_FAILURE() and\n// EXPECT_NONFATAL_FAILURE().  Its destructor verifies that the given\n// TestPartResultArray contains exactly one failure that has the given\n// type and contains the given substring.  If that's not the case, a\n// non-fatal failure will be generated.\nclass GTEST_API_ SingleFailureChecker {\n public:\n  // The constructor remembers the arguments.\n  SingleFailureChecker(const TestPartResultArray* results,\n                       TestPartResult::Type type,\n                       const std::string& substr);\n  ~SingleFailureChecker();\n private:\n  const TestPartResultArray* const results_;\n  const TestPartResult::Type type_;\n  const std::string substr_;\n\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(SingleFailureChecker);\n};\n\n}  // namespace internal\n\n}  // namespace testing\n\n// A set of macros for testing Google Test assertions or code that's expected\n// to generate Google Test fatal failures.  It verifies that the given\n// statement will cause exactly one fatal Google Test failure with 'substr'\n// being part of the failure message.\n//\n// There are two different versions of this macro. EXPECT_FATAL_FAILURE only\n// affects and considers failures generated in the current thread and\n// EXPECT_FATAL_FAILURE_ON_ALL_THREADS does the same but for all threads.\n//\n// The verification of the assertion is done correctly even when the statement\n// throws an exception or aborts the current function.\n//\n// Known restrictions:\n//   - 'statement' cannot reference local non-static variables or\n//     non-static members of the current object.\n//   - 'statement' cannot return a value.\n//   - You cannot stream a failure message to this macro.\n//\n// Note that even though the implementations of the following two\n// macros are much alike, we cannot refactor them to use a common\n// helper macro, due to some peculiarity in how the preprocessor\n// works.  The AcceptsMacroThatExpandsToUnprotectedComma test in\n// gtest_unittest.cc will fail to compile if we do that.\n#define EXPECT_FATAL_FAILURE(statement, substr) \\\n  do { \\\n    class GTestExpectFatalFailureHelper {\\\n     public:\\\n      static void Execute() { statement; }\\\n    };\\\n    ::testing::TestPartResultArray gtest_failures;\\\n    ::testing::internal::SingleFailureChecker gtest_checker(\\\n        &gtest_failures, ::testing::TestPartResult::kFatalFailure, (substr));\\\n    {\\\n      ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\\\n          ::testing::ScopedFakeTestPartResultReporter:: \\\n          INTERCEPT_ONLY_CURRENT_THREAD, &gtest_failures);\\\n      GTestExpectFatalFailureHelper::Execute();\\\n    }\\\n  } while (::testing::internal::AlwaysFalse())\n\n#define EXPECT_FATAL_FAILURE_ON_ALL_THREADS(statement, substr) \\\n  do { \\\n    class GTestExpectFatalFailureHelper {\\\n     public:\\\n      static void Execute() { statement; }\\\n    };\\\n    ::testing::TestPartResultArray gtest_failures;\\\n    ::testing::internal::SingleFailureChecker gtest_checker(\\\n        &gtest_failures, ::testing::TestPartResult::kFatalFailure, (substr));\\\n    {\\\n      ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\\\n          ::testing::ScopedFakeTestPartResultReporter:: \\\n          INTERCEPT_ALL_THREADS, &gtest_failures);\\\n      GTestExpectFatalFailureHelper::Execute();\\\n    }\\\n  } while (::testing::internal::AlwaysFalse())\n\n// A macro for testing Google Test assertions or code that's expected to\n// generate Google Test non-fatal failures.  It asserts that the given\n// statement will cause exactly one non-fatal Google Test failure with 'substr'\n// being part of the failure message.\n//\n// There are two different versions of this macro. EXPECT_NONFATAL_FAILURE only\n// affects and considers failures generated in the current thread and\n// EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS does the same but for all threads.\n//\n// 'statement' is allowed to reference local variables and members of\n// the current object.\n//\n// The verification of the assertion is done correctly even when the statement\n// throws an exception or aborts the current function.\n//\n// Known restrictions:\n//   - You cannot stream a failure message to this macro.\n//\n// Note that even though the implementations of the following two\n// macros are much alike, we cannot refactor them to use a common\n// helper macro, due to some peculiarity in how the preprocessor\n// works.  If we do that, the code won't compile when the user gives\n// EXPECT_NONFATAL_FAILURE() a statement that contains a macro that\n// expands to code containing an unprotected comma.  The\n// AcceptsMacroThatExpandsToUnprotectedComma test in gtest_unittest.cc\n// catches that.\n//\n// For the same reason, we have to write\n//   if (::testing::internal::AlwaysTrue()) { statement; }\n// instead of\n//   GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement)\n// to avoid an MSVC warning on unreachable code.\n#define EXPECT_NONFATAL_FAILURE(statement, substr) \\\n  do {\\\n    ::testing::TestPartResultArray gtest_failures;\\\n    ::testing::internal::SingleFailureChecker gtest_checker(\\\n        &gtest_failures, ::testing::TestPartResult::kNonFatalFailure, \\\n        (substr));\\\n    {\\\n      ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\\\n          ::testing::ScopedFakeTestPartResultReporter:: \\\n          INTERCEPT_ONLY_CURRENT_THREAD, &gtest_failures);\\\n      if (::testing::internal::AlwaysTrue()) { statement; }\\\n    }\\\n  } while (::testing::internal::AlwaysFalse())\n\n#define EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS(statement, substr) \\\n  do {\\\n    ::testing::TestPartResultArray gtest_failures;\\\n    ::testing::internal::SingleFailureChecker gtest_checker(\\\n        &gtest_failures, ::testing::TestPartResult::kNonFatalFailure, \\\n        (substr));\\\n    {\\\n      ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\\\n          ::testing::ScopedFakeTestPartResultReporter::INTERCEPT_ALL_THREADS, \\\n          &gtest_failures);\\\n      if (::testing::internal::AlwaysTrue()) { statement; }\\\n    }\\\n  } while (::testing::internal::AlwaysFalse())\n\n#endif  // GTEST_INCLUDE_GTEST_GTEST_SPI_H_\n\n#include <ctype.h>\n#include <math.h>\n#include <stdarg.h>\n#include <stdio.h>\n#include <stdlib.h>\n#include <time.h>\n#include <wchar.h>\n#include <wctype.h>\n\n#include <algorithm>\n#include <iomanip>\n#include <limits>\n#include <ostream>  // NOLINT\n#include <sstream>\n#include <vector>\n\n#if GTEST_OS_LINUX\n\n// TODO(kenton@google.com): Use autoconf to detect availability of\n// gettimeofday().\n# define GTEST_HAS_GETTIMEOFDAY_ 1\n\n# include <fcntl.h>  // NOLINT\n# include <limits.h>  // NOLINT\n# include <sched.h>  // NOLINT\n// Declares vsnprintf().  This header is not available on Windows.\n# include <strings.h>  // NOLINT\n# include <sys/mman.h>  // NOLINT\n# include <sys/time.h>  // NOLINT\n# include <unistd.h>  // NOLINT\n# include <string>\n\n#elif GTEST_OS_SYMBIAN\n# define GTEST_HAS_GETTIMEOFDAY_ 1\n# include <sys/time.h>  // NOLINT\n\n#elif GTEST_OS_ZOS\n# define GTEST_HAS_GETTIMEOFDAY_ 1\n# include <sys/time.h>  // NOLINT\n\n// On z/OS we additionally need strings.h for strcasecmp.\n# include <strings.h>  // NOLINT\n\n#elif GTEST_OS_WINDOWS_MOBILE  // We are on Windows CE.\n\n# include <windows.h>  // NOLINT\n\n#elif GTEST_OS_WINDOWS  // We are on Windows proper.\n\n# include <io.h>  // NOLINT\n# include <sys/timeb.h>  // NOLINT\n# include <sys/types.h>  // NOLINT\n# include <sys/stat.h>  // NOLINT\n\n# if GTEST_OS_WINDOWS_MINGW\n// MinGW has gettimeofday() but not _ftime64().\n// TODO(kenton@google.com): Use autoconf to detect availability of\n//   gettimeofday().\n// TODO(kenton@google.com): There are other ways to get the time on\n//   Windows, like GetTickCount() or GetSystemTimeAsFileTime().  MinGW\n//   supports these.  consider using them instead.\n#  define GTEST_HAS_GETTIMEOFDAY_ 1\n#  include <sys/time.h>  // NOLINT\n# endif  // GTEST_OS_WINDOWS_MINGW\n\n// cpplint thinks that the header is already included, so we want to\n// silence it.\n# include <windows.h>  // NOLINT\n\n#else\n\n// Assume other platforms have gettimeofday().\n// TODO(kenton@google.com): Use autoconf to detect availability of\n//   gettimeofday().\n# define GTEST_HAS_GETTIMEOFDAY_ 1\n\n// cpplint thinks that the header is already included, so we want to\n// silence it.\n# include <sys/time.h>  // NOLINT\n# include <unistd.h>  // NOLINT\n\n#endif  // GTEST_OS_LINUX\n\n#if GTEST_HAS_EXCEPTIONS\n# include <stdexcept>\n#endif\n\n#if GTEST_CAN_STREAM_RESULTS_\n# include <arpa/inet.h>  // NOLINT\n# include <netdb.h>  // NOLINT\n#endif\n\n// Indicates that this translation unit is part of Google Test's\n// implementation.  It must come before gtest-internal-inl.h is\n// included, or there will be a compiler error.  This trick is to\n// prevent a user from accidentally including gtest-internal-inl.h in\n// his code.\n#define GTEST_IMPLEMENTATION_ 1\n// Copyright 2005, Google Inc.\n// All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n// Utility functions and classes used by the Google C++ testing framework.\n//\n// Author: wan@google.com (Zhanyong Wan)\n//\n// This file contains purely Google Test's internal implementation.  Please\n// DO NOT #INCLUDE IT IN A USER PROGRAM.\n\n#ifndef GTEST_SRC_GTEST_INTERNAL_INL_H_\n#define GTEST_SRC_GTEST_INTERNAL_INL_H_\n\n// GTEST_IMPLEMENTATION_ is defined to 1 iff the current translation unit is\n// part of Google Test's implementation; otherwise it's undefined.\n#if !GTEST_IMPLEMENTATION_\n// A user is trying to include this from his code - just say no.\n# error \"gtest-internal-inl.h is part of Google Test's internal implementation.\"\n# error \"It must not be included except by Google Test itself.\"\n#endif  // GTEST_IMPLEMENTATION_\n\n#ifndef _WIN32_WCE\n# include <errno.h>\n#endif  // !_WIN32_WCE\n#include <stddef.h>\n#include <stdlib.h>  // For strtoll/_strtoul64/malloc/free.\n#include <string.h>  // For memmove.\n\n#include <algorithm>\n#include <string>\n#include <vector>\n\n\n#if GTEST_CAN_STREAM_RESULTS_\n# include <arpa/inet.h>  // NOLINT\n# include <netdb.h>  // NOLINT\n#endif\n\n#if GTEST_OS_WINDOWS\n# include <windows.h>  // NOLINT\n#endif  // GTEST_OS_WINDOWS\n\n\nnamespace testing {\n\n// Declares the flags.\n//\n// We don't want the users to modify this flag in the code, but want\n// Google Test's own unit tests to be able to access it. Therefore we\n// declare it here as opposed to in gtest.h.\nGTEST_DECLARE_bool_(death_test_use_fork);\n\nnamespace internal {\n\n// The value of GetTestTypeId() as seen from within the Google Test\n// library.  This is solely for testing GetTestTypeId().\nGTEST_API_ extern const TypeId kTestTypeIdInGoogleTest;\n\n// Names of the flags (needed for parsing Google Test flags).\nconst char kAlsoRunDisabledTestsFlag[] = \"also_run_disabled_tests\";\nconst char kBreakOnFailureFlag[] = \"break_on_failure\";\nconst char kCatchExceptionsFlag[] = \"catch_exceptions\";\nconst char kColorFlag[] = \"color\";\nconst char kFilterFlag[] = \"filter\";\nconst char kListTestsFlag[] = \"list_tests\";\nconst char kOutputFlag[] = \"output\";\nconst char kPrintTimeFlag[] = \"print_time\";\nconst char kRandomSeedFlag[] = \"random_seed\";\nconst char kRepeatFlag[] = \"repeat\";\nconst char kShuffleFlag[] = \"shuffle\";\nconst char kStackTraceDepthFlag[] = \"stack_trace_depth\";\nconst char kStreamResultToFlag[] = \"stream_result_to\";\nconst char kThrowOnFailureFlag[] = \"throw_on_failure\";\n\n// A valid random seed must be in [1, kMaxRandomSeed].\nconst int kMaxRandomSeed = 99999;\n\n// g_help_flag is true iff the --help flag or an equivalent form is\n// specified on the command line.\nGTEST_API_ extern bool g_help_flag;\n\n// Returns the current time in milliseconds.\nGTEST_API_ TimeInMillis GetTimeInMillis();\n\n// Returns true iff Google Test should use colors in the output.\nGTEST_API_ bool ShouldUseColor(bool stdout_is_tty);\n\n// Formats the given time in milliseconds as seconds.\nGTEST_API_ std::string FormatTimeInMillisAsSeconds(TimeInMillis ms);\n\n// Converts the given time in milliseconds to a date string in the ISO 8601\n// format, without the timezone information.  N.B.: due to the use the\n// non-reentrant localtime() function, this function is not thread safe.  Do\n// not use it in any code that can be called from multiple threads.\nGTEST_API_ std::string FormatEpochTimeInMillisAsIso8601(TimeInMillis ms);\n\n// Parses a string for an Int32 flag, in the form of \"--flag=value\".\n//\n// On success, stores the value of the flag in *value, and returns\n// true.  On failure, returns false without changing *value.\nGTEST_API_ bool ParseInt32Flag(\n    const char* str, const char* flag, Int32* value);\n\n// Returns a random seed in range [1, kMaxRandomSeed] based on the\n// given --gtest_random_seed flag value.\ninline int GetRandomSeedFromFlag(Int32 random_seed_flag) {\n  const unsigned int raw_seed = (random_seed_flag == 0) ?\n      static_cast<unsigned int>(GetTimeInMillis()) :\n      static_cast<unsigned int>(random_seed_flag);\n\n  // Normalizes the actual seed to range [1, kMaxRandomSeed] such that\n  // it's easy to type.\n  const int normalized_seed =\n      static_cast<int>((raw_seed - 1U) %\n                       static_cast<unsigned int>(kMaxRandomSeed)) + 1;\n  return normalized_seed;\n}\n\n// Returns the first valid random seed after 'seed'.  The behavior is\n// undefined if 'seed' is invalid.  The seed after kMaxRandomSeed is\n// considered to be 1.\ninline int GetNextRandomSeed(int seed) {\n  GTEST_CHECK_(1 <= seed && seed <= kMaxRandomSeed)\n      << \"Invalid random seed \" << seed << \" - must be in [1, \"\n      << kMaxRandomSeed << \"].\";\n  const int next_seed = seed + 1;\n  return (next_seed > kMaxRandomSeed) ? 1 : next_seed;\n}\n\n// This class saves the values of all Google Test flags in its c'tor, and\n// restores them in its d'tor.\nclass GTestFlagSaver {\n public:\n  // The c'tor.\n  GTestFlagSaver() {\n    also_run_disabled_tests_ = GTEST_FLAG(also_run_disabled_tests);\n    break_on_failure_ = GTEST_FLAG(break_on_failure);\n    catch_exceptions_ = GTEST_FLAG(catch_exceptions);\n    color_ = GTEST_FLAG(color);\n    death_test_style_ = GTEST_FLAG(death_test_style);\n    death_test_use_fork_ = GTEST_FLAG(death_test_use_fork);\n    filter_ = GTEST_FLAG(filter);\n    internal_run_death_test_ = GTEST_FLAG(internal_run_death_test);\n    list_tests_ = GTEST_FLAG(list_tests);\n    output_ = GTEST_FLAG(output);\n    print_time_ = GTEST_FLAG(print_time);\n    random_seed_ = GTEST_FLAG(random_seed);\n    repeat_ = GTEST_FLAG(repeat);\n    shuffle_ = GTEST_FLAG(shuffle);\n    stack_trace_depth_ = GTEST_FLAG(stack_trace_depth);\n    stream_result_to_ = GTEST_FLAG(stream_result_to);\n    throw_on_failure_ = GTEST_FLAG(throw_on_failure);\n  }\n\n  // The d'tor is not virtual.  DO NOT INHERIT FROM THIS CLASS.\n  ~GTestFlagSaver() {\n    GTEST_FLAG(also_run_disabled_tests) = also_run_disabled_tests_;\n    GTEST_FLAG(break_on_failure) = break_on_failure_;\n    GTEST_FLAG(catch_exceptions) = catch_exceptions_;\n    GTEST_FLAG(color) = color_;\n    GTEST_FLAG(death_test_style) = death_test_style_;\n    GTEST_FLAG(death_test_use_fork) = death_test_use_fork_;\n    GTEST_FLAG(filter) = filter_;\n    GTEST_FLAG(internal_run_death_test) = internal_run_death_test_;\n    GTEST_FLAG(list_tests) = list_tests_;\n    GTEST_FLAG(output) = output_;\n    GTEST_FLAG(print_time) = print_time_;\n    GTEST_FLAG(random_seed) = random_seed_;\n    GTEST_FLAG(repeat) = repeat_;\n    GTEST_FLAG(shuffle) = shuffle_;\n    GTEST_FLAG(stack_trace_depth) = stack_trace_depth_;\n    GTEST_FLAG(stream_result_to) = stream_result_to_;\n    GTEST_FLAG(throw_on_failure) = throw_on_failure_;\n  }\n\n private:\n  // Fields for saving the original values of flags.\n  bool also_run_disabled_tests_;\n  bool break_on_failure_;\n  bool catch_exceptions_;\n  std::string color_;\n  std::string death_test_style_;\n  bool death_test_use_fork_;\n  std::string filter_;\n  std::string internal_run_death_test_;\n  bool list_tests_;\n  std::string output_;\n  bool print_time_;\n  internal::Int32 random_seed_;\n  internal::Int32 repeat_;\n  bool shuffle_;\n  internal::Int32 stack_trace_depth_;\n  std::string stream_result_to_;\n  bool throw_on_failure_;\n} GTEST_ATTRIBUTE_UNUSED_;\n\n// Converts a Unicode code point to a narrow string in UTF-8 encoding.\n// code_point parameter is of type UInt32 because wchar_t may not be\n// wide enough to contain a code point.\n// If the code_point is not a valid Unicode code point\n// (i.e. outside of Unicode range U+0 to U+10FFFF) it will be converted\n// to \"(Invalid Unicode 0xXXXXXXXX)\".\nGTEST_API_ std::string CodePointToUtf8(UInt32 code_point);\n\n// Converts a wide string to a narrow string in UTF-8 encoding.\n// The wide string is assumed to have the following encoding:\n//   UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin, Symbian OS)\n//   UTF-32 if sizeof(wchar_t) == 4 (on Linux)\n// Parameter str points to a null-terminated wide string.\n// Parameter num_chars may additionally limit the number\n// of wchar_t characters processed. -1 is used when the entire string\n// should be processed.\n// If the string contains code points that are not valid Unicode code points\n// (i.e. outside of Unicode range U+0 to U+10FFFF) they will be output\n// as '(Invalid Unicode 0xXXXXXXXX)'. If the string is in UTF16 encoding\n// and contains invalid UTF-16 surrogate pairs, values in those pairs\n// will be encoded as individual Unicode characters from Basic Normal Plane.\nGTEST_API_ std::string WideStringToUtf8(const wchar_t* str, int num_chars);\n\n// Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file\n// if the variable is present. If a file already exists at this location, this\n// function will write over it. If the variable is present, but the file cannot\n// be created, prints an error and exits.\nvoid WriteToShardStatusFileIfNeeded();\n\n// Checks whether sharding is enabled by examining the relevant\n// environment variable values. If the variables are present,\n// but inconsistent (e.g., shard_index >= total_shards), prints\n// an error and exits. If in_subprocess_for_death_test, sharding is\n// disabled because it must only be applied to the original test\n// process. Otherwise, we could filter out death tests we intended to execute.\nGTEST_API_ bool ShouldShard(const char* total_shards_str,\n                            const char* shard_index_str,\n                            bool in_subprocess_for_death_test);\n\n// Parses the environment variable var as an Int32. If it is unset,\n// returns default_val. If it is not an Int32, prints an error and\n// and aborts.\nGTEST_API_ Int32 Int32FromEnvOrDie(const char* env_var, Int32 default_val);\n\n// Given the total number of shards, the shard index, and the test id,\n// returns true iff the test should be run on this shard. The test id is\n// some arbitrary but unique non-negative integer assigned to each test\n// method. Assumes that 0 <= shard_index < total_shards.\nGTEST_API_ bool ShouldRunTestOnShard(\n    int total_shards, int shard_index, int test_id);\n\n// STL container utilities.\n\n// Returns the number of elements in the given container that satisfy\n// the given predicate.\ntemplate <class Container, typename Predicate>\ninline int CountIf(const Container& c, Predicate predicate) {\n  // Implemented as an explicit loop since std::count_if() in libCstd on\n  // Solaris has a non-standard signature.\n  int count = 0;\n  for (typename Container::const_iterator it = c.begin(); it != c.end(); ++it) {\n    if (predicate(*it))\n      ++count;\n  }\n  return count;\n}\n\n// Applies a function/functor to each element in the container.\ntemplate <class Container, typename Functor>\nvoid ForEach(const Container& c, Functor functor) {\n  std::for_each(c.begin(), c.end(), functor);\n}\n\n// Returns the i-th element of the vector, or default_value if i is not\n// in range [0, v.size()).\ntemplate <typename E>\ninline E GetElementOr(const std::vector<E>& v, int i, E default_value) {\n  return (i < 0 || i >= static_cast<int>(v.size())) ? default_value : v[i];\n}\n\n// Performs an in-place shuffle of a range of the vector's elements.\n// 'begin' and 'end' are element indices as an STL-style range;\n// i.e. [begin, end) are shuffled, where 'end' == size() means to\n// shuffle to the end of the vector.\ntemplate <typename E>\nvoid ShuffleRange(internal::Random* random, int begin, int end,\n                  std::vector<E>* v) {\n  const int size = static_cast<int>(v->size());\n  GTEST_CHECK_(0 <= begin && begin <= size)\n      << \"Invalid shuffle range start \" << begin << \": must be in range [0, \"\n      << size << \"].\";\n  GTEST_CHECK_(begin <= end && end <= size)\n      << \"Invalid shuffle range finish \" << end << \": must be in range [\"\n      << begin << \", \" << size << \"].\";\n\n  // Fisher-Yates shuffle, from\n  // http://en.wikipedia.org/wiki/Fisher-Yates_shuffle\n  for (int range_width = end - begin; range_width >= 2; range_width--) {\n    const int last_in_range = begin + range_width - 1;\n    const int selected = begin + random->Generate(range_width);\n    std::swap((*v)[selected], (*v)[last_in_range]);\n  }\n}\n\n// Performs an in-place shuffle of the vector's elements.\ntemplate <typename E>\ninline void Shuffle(internal::Random* random, std::vector<E>* v) {\n  ShuffleRange(random, 0, static_cast<int>(v->size()), v);\n}\n\n// A function for deleting an object.  Handy for being used as a\n// functor.\ntemplate <typename T>\nstatic void Delete(T* x) {\n  delete x;\n}\n\n// A predicate that checks the key of a TestProperty against a known key.\n//\n// TestPropertyKeyIs is copyable.\nclass TestPropertyKeyIs {\n public:\n  // Constructor.\n  //\n  // TestPropertyKeyIs has NO default constructor.\n  explicit TestPropertyKeyIs(const std::string& key) : key_(key) {}\n\n  // Returns true iff the test name of test property matches on key_.\n  bool operator()(const TestProperty& test_property) const {\n    return test_property.key() == key_;\n  }\n\n private:\n  std::string key_;\n};\n\n// Class UnitTestOptions.\n//\n// This class contains functions for processing options the user\n// specifies when running the tests.  It has only static members.\n//\n// In most cases, the user can specify an option using either an\n// environment variable or a command line flag.  E.g. you can set the\n// test filter using either GTEST_FILTER or --gtest_filter.  If both\n// the variable and the flag are present, the latter overrides the\n// former.\nclass GTEST_API_ UnitTestOptions {\n public:\n  // Functions for processing the gtest_output flag.\n\n  // Returns the output format, or \"\" for normal printed output.\n  static std::string GetOutputFormat();\n\n  // Returns the absolute path of the requested output file, or the\n  // default (test_detail.xml in the original working directory) if\n  // none was explicitly specified.\n  static std::string GetAbsolutePathToOutputFile();\n\n  // Functions for processing the gtest_filter flag.\n\n  // Returns true iff the wildcard pattern matches the string.  The\n  // first ':' or '\\0' character in pattern marks the end of it.\n  //\n  // This recursive algorithm isn't very efficient, but is clear and\n  // works well enough for matching test names, which are short.\n  static bool PatternMatchesString(const char *pattern, const char *str);\n\n  // Returns true iff the user-specified filter matches the test case\n  // name and the test name.\n  static bool FilterMatchesTest(const std::string &test_case_name,\n                                const std::string &test_name);\n\n#if GTEST_OS_WINDOWS\n  // Function for supporting the gtest_catch_exception flag.\n\n  // Returns EXCEPTION_EXECUTE_HANDLER if Google Test should handle the\n  // given SEH exception, or EXCEPTION_CONTINUE_SEARCH otherwise.\n  // This function is useful as an __except condition.\n  static int GTestShouldProcessSEH(DWORD exception_code);\n#endif  // GTEST_OS_WINDOWS\n\n  // Returns true if \"name\" matches the ':' separated list of glob-style\n  // filters in \"filter\".\n  static bool MatchesFilter(const std::string& name, const char* filter);\n};\n\n// Returns the current application's name, removing directory path if that\n// is present.  Used by UnitTestOptions::GetOutputFile.\nGTEST_API_ FilePath GetCurrentExecutableName();\n\n// The role interface for getting the OS stack trace as a string.\nclass OsStackTraceGetterInterface {\n public:\n  OsStackTraceGetterInterface() {}\n  virtual ~OsStackTraceGetterInterface() {}\n\n  // Returns the current OS stack trace as an std::string.  Parameters:\n  //\n  //   max_depth  - the maximum number of stack frames to be included\n  //                in the trace.\n  //   skip_count - the number of top frames to be skipped; doesn't count\n  //                against max_depth.\n  virtual std::string CurrentStackTrace(int max_depth, int skip_count) = 0;\n\n  // UponLeavingGTest() should be called immediately before Google Test calls\n  // user code. It saves some information about the current stack that\n  // CurrentStackTrace() will use to find and hide Google Test stack frames.\n  virtual void UponLeavingGTest() = 0;\n\n private:\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(OsStackTraceGetterInterface);\n};\n\n// A working implementation of the OsStackTraceGetterInterface interface.\nclass OsStackTraceGetter : public OsStackTraceGetterInterface {\n public:\n  OsStackTraceGetter() : caller_frame_(nullptr) {}\n\n  virtual std::string CurrentStackTrace(int max_depth, int skip_count)\n      GTEST_LOCK_EXCLUDED_(mutex_);\n\n  virtual void UponLeavingGTest() GTEST_LOCK_EXCLUDED_(mutex_);\n\n  // This string is inserted in place of stack frames that are part of\n  // Google Test's implementation.\n  static const char* const kElidedFramesMarker;\n\n private:\n  Mutex mutex_;  // protects all internal state\n\n  // We save the stack frame below the frame that calls user code.\n  // We do this because the address of the frame immediately below\n  // the user code changes between the call to UponLeavingGTest()\n  // and any calls to CurrentStackTrace() from within the user code.\n  void* caller_frame_;\n\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(OsStackTraceGetter);\n};\n\n// Information about a Google Test trace point.\nstruct TraceInfo {\n  const char* file;\n  int line;\n  std::string message;\n};\n\n// This is the default global test part result reporter used in UnitTestImpl.\n// This class should only be used by UnitTestImpl.\nclass DefaultGlobalTestPartResultReporter\n  : public TestPartResultReporterInterface {\n public:\n  explicit DefaultGlobalTestPartResultReporter(UnitTestImpl* unit_test);\n  // Implements the TestPartResultReporterInterface. Reports the test part\n  // result in the current test.\n  virtual void ReportTestPartResult(const TestPartResult& result);\n\n private:\n  UnitTestImpl* const unit_test_;\n\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultGlobalTestPartResultReporter);\n};\n\n// This is the default per thread test part result reporter used in\n// UnitTestImpl. This class should only be used by UnitTestImpl.\nclass DefaultPerThreadTestPartResultReporter\n    : public TestPartResultReporterInterface {\n public:\n  explicit DefaultPerThreadTestPartResultReporter(UnitTestImpl* unit_test);\n  // Implements the TestPartResultReporterInterface. The implementation just\n  // delegates to the current global test part result reporter of *unit_test_.\n  virtual void ReportTestPartResult(const TestPartResult& result);\n\n private:\n  UnitTestImpl* const unit_test_;\n\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultPerThreadTestPartResultReporter);\n};\n\n// The private implementation of the UnitTest class.  We don't protect\n// the methods under a mutex, as this class is not accessible by a\n// user and the UnitTest class that delegates work to this class does\n// proper locking.\nclass GTEST_API_ UnitTestImpl {\n public:\n  explicit UnitTestImpl(UnitTest* parent);\n  virtual ~UnitTestImpl();\n\n  // There are two different ways to register your own TestPartResultReporter.\n  // You can register your own repoter to listen either only for test results\n  // from the current thread or for results from all threads.\n  // By default, each per-thread test result repoter just passes a new\n  // TestPartResult to the global test result reporter, which registers the\n  // test part result for the currently running test.\n\n  // Returns the global test part result reporter.\n  TestPartResultReporterInterface* GetGlobalTestPartResultReporter();\n\n  // Sets the global test part result reporter.\n  void SetGlobalTestPartResultReporter(\n      TestPartResultReporterInterface* reporter);\n\n  // Returns the test part result reporter for the current thread.\n  TestPartResultReporterInterface* GetTestPartResultReporterForCurrentThread();\n\n  // Sets the test part result reporter for the current thread.\n  void SetTestPartResultReporterForCurrentThread(\n      TestPartResultReporterInterface* reporter);\n\n  virtual int getTestTimeout() const {\n      return 0;   // override me\n  }\n\n  // Gets the number of successful test cases.\n  int successful_test_case_count() const;\n\n  // Gets the number of failed test cases.\n  int failed_test_case_count() const;\n\n  // Gets the number of all test cases.\n  int total_test_case_count() const;\n\n  // Gets the number of all test cases that contain at least one test\n  // that should run.\n  int test_case_to_run_count() const;\n\n  // Gets the number of successful tests.\n  int successful_test_count() const;\n\n  // Gets the number of failed tests.\n  int failed_test_count() const;\n\n  // Gets the number of disabled tests that will be reported in the XML report.\n  int reportable_disabled_test_count() const;\n\n  // Gets the number of disabled tests.\n  int disabled_test_count() const;\n\n  // Gets the number of tests to be printed in the XML report.\n  int reportable_test_count() const;\n\n  // Gets the number of all tests.\n  int total_test_count() const;\n\n  // Gets the number of tests that should run.\n  int test_to_run_count() const;\n\n  // Gets the time of the test program start, in ms from the start of the\n  // UNIX epoch.\n  TimeInMillis start_timestamp() const { return start_timestamp_; }\n\n  // Gets the elapsed time, in milliseconds.\n  TimeInMillis elapsed_time() const { return elapsed_time_; }\n\n  // Returns true iff the unit test passed (i.e. all test cases passed).\n  bool Passed() const { return !Failed(); }\n\n  // Returns true iff the unit test failed (i.e. some test case failed\n  // or something outside of all tests failed).\n  bool Failed() const {\n    return failed_test_case_count() > 0 || ad_hoc_test_result()->Failed();\n  }\n\n  // Gets the i-th test case among all the test cases. i can range from 0 to\n  // total_test_case_count() - 1. If i is not in that range, returns nullptr.\n  const TestCase* GetTestCase(int i) const {\n    const int index = GetElementOr(test_case_indices_, i, -1);\n    return index < 0 ? nullptr : test_cases_[i];\n  }\n\n  // Gets the i-th test case among all the test cases. i can range from 0 to\n  // total_test_case_count() - 1. If i is not in that range, returns nullptr.\n  TestCase* GetMutableTestCase(int i) {\n    const int index = GetElementOr(test_case_indices_, i, -1);\n    return index < 0 ? nullptr : test_cases_[index];\n  }\n\n  // Provides access to the event listener list.\n  TestEventListeners* listeners() { return &listeners_; }\n\n  // Returns the TestResult for the test that's currently running, or\n  // the TestResult for the ad hoc test if no test is running.\n  TestResult* current_test_result();\n\n  // Returns the TestResult for the ad hoc test.\n  const TestResult* ad_hoc_test_result() const { return &ad_hoc_test_result_; }\n\n  // Sets the OS stack trace getter.\n  //\n  // Does nothing if the input and the current OS stack trace getter\n  // are the same; otherwise, deletes the old getter and makes the\n  // input the current getter.\n  void set_os_stack_trace_getter(OsStackTraceGetterInterface* getter);\n\n  // Returns the current OS stack trace getter if it is not null;\n  // otherwise, creates an OsStackTraceGetter, makes it the current\n  // getter, and returns it.\n  OsStackTraceGetterInterface* os_stack_trace_getter();\n\n  // Returns the current OS stack trace as an std::string.\n  //\n  // The maximum number of stack frames to be included is specified by\n  // the gtest_stack_trace_depth flag.  The skip_count parameter\n  // specifies the number of top frames to be skipped, which doesn't\n  // count against the number of frames to be included.\n  //\n  // For example, if Foo() calls Bar(), which in turn calls\n  // CurrentOsStackTraceExceptTop(1), Foo() will be included in the\n  // trace but Bar() and CurrentOsStackTraceExceptTop() won't.\n  std::string CurrentOsStackTraceExceptTop(int skip_count) GTEST_NO_INLINE_;\n\n  // Finds and returns a TestCase with the given name.  If one doesn't\n  // exist, creates one and returns it.\n  //\n  // Arguments:\n  //\n  //   test_case_name: name of the test case\n  //   type_param:     the name of the test's type parameter, or nullptr if\n  //                   this is not a typed or a type-parameterized test.\n  //   set_up_tc:      pointer to the function that sets up the test case\n  //   tear_down_tc:   pointer to the function that tears down the test case\n  TestCase* GetTestCase(const char* test_case_name,\n                        const char* type_param,\n                        Test::SetUpTestCaseFunc set_up_tc,\n                        Test::TearDownTestCaseFunc tear_down_tc);\n\n  // Adds a TestInfo to the unit test.\n  //\n  // Arguments:\n  //\n  //   set_up_tc:    pointer to the function that sets up the test case\n  //   tear_down_tc: pointer to the function that tears down the test case\n  //   test_info:    the TestInfo object\n  void AddTestInfo(Test::SetUpTestCaseFunc set_up_tc,\n                   Test::TearDownTestCaseFunc tear_down_tc,\n                   TestInfo* test_info) {\n    // In order to support thread-safe death tests, we need to\n    // remember the original working directory when the test program\n    // was first invoked.  We cannot do this in RUN_ALL_TESTS(), as\n    // the user may have changed the current directory before calling\n    // RUN_ALL_TESTS().  Therefore we capture the current directory in\n    // AddTestInfo(), which is called to register a TEST or TEST_F\n    // before main() is reached.\n    if (original_working_dir_.IsEmpty()) {\n      original_working_dir_.Set(FilePath::GetCurrentDir());\n      GTEST_CHECK_(!original_working_dir_.IsEmpty())\n          << \"Failed to get the current working directory.\";\n    }\n\n    GetTestCase(test_info->test_case_name(),\n                test_info->type_param(),\n                set_up_tc,\n                tear_down_tc)->AddTestInfo(test_info);\n  }\n\n#if GTEST_HAS_PARAM_TEST\n  // Returns ParameterizedTestCaseRegistry object used to keep track of\n  // value-parameterized tests and instantiate and register them.\n  internal::ParameterizedTestCaseRegistry& parameterized_test_registry() {\n    return parameterized_test_registry_;\n  }\n#endif  // GTEST_HAS_PARAM_TEST\n\n  // Sets the TestCase object for the test that's currently running.\n  void set_current_test_case(TestCase* a_current_test_case) {\n    current_test_case_ = a_current_test_case;\n  }\n\n  // Sets the TestInfo object for the test that's currently running.  If\n  // current_test_info is null, the assertion results will be stored in\n  // ad_hoc_test_result_.\n  void set_current_test_info(TestInfo* a_current_test_info) {\n    current_test_info_ = a_current_test_info;\n  }\n\n  // Registers all parameterized tests defined using TEST_P and\n  // INSTANTIATE_TEST_CASE_P, creating regular tests for each test/parameter\n  // combination. This method can be called more then once; it has guards\n  // protecting from registering the tests more then once.  If\n  // value-parameterized tests are disabled, RegisterParameterizedTests is\n  // present but does nothing.\n  void RegisterParameterizedTests();\n\n  // Runs all tests in this UnitTest object, prints the result, and\n  // returns true if all tests are successful.  If any exception is\n  // thrown during a test, this test is considered to be failed, but\n  // the rest of the tests will still be run.\n  bool RunAllTests();\n\n  // Clears the results of all tests, except the ad hoc tests.\n  void ClearNonAdHocTestResult() {\n    ForEach(test_cases_, TestCase::ClearTestCaseResult);\n  }\n\n  // Clears the results of ad-hoc test assertions.\n  void ClearAdHocTestResult() {\n    ad_hoc_test_result_.Clear();\n  }\n\n  // Adds a TestProperty to the current TestResult object when invoked in a\n  // context of a test or a test case, or to the global property set. If the\n  // result already contains a property with the same key, the value will be\n  // updated.\n  void RecordProperty(const TestProperty& test_property);\n\n  enum ReactionToSharding {\n    HONOR_SHARDING_PROTOCOL,\n    IGNORE_SHARDING_PROTOCOL\n  };\n\n  // Matches the full name of each test against the user-specified\n  // filter to decide whether the test should run, then records the\n  // result in each TestCase and TestInfo object.\n  // If shard_tests == HONOR_SHARDING_PROTOCOL, further filters tests\n  // based on sharding variables in the environment.\n  // Returns the number of tests that should run.\n  int FilterTests(ReactionToSharding shard_tests);\n\n  // Prints the names of the tests matching the user-specified filter flag.\n  void ListTestsMatchingFilter();\n\n  const TestCase* current_test_case() const { return current_test_case_; }\n  TestInfo* current_test_info() { return current_test_info_; }\n  const TestInfo* current_test_info() const { return current_test_info_; }\n\n  // Returns the vector of environments that need to be set-up/torn-down\n  // before/after the tests are run.\n  std::vector<Environment*>& environments() { return environments_; }\n\n  // Getters for the per-thread Google Test trace stack.\n  std::vector<TraceInfo>& gtest_trace_stack() {\n    return *(gtest_trace_stack_.pointer());\n  }\n  const std::vector<TraceInfo>& gtest_trace_stack() const {\n    return gtest_trace_stack_.get();\n  }\n\n#if GTEST_HAS_DEATH_TEST\n  void InitDeathTestSubprocessControlInfo() {\n    internal_run_death_test_flag_.reset(ParseInternalRunDeathTestFlag());\n  }\n  // Returns a pointer to the parsed --gtest_internal_run_death_test\n  // flag, or nullptr if that flag was not specified.\n  // This information is useful only in a death test child process.\n  // Must not be called before a call to InitGoogleTest.\n  const InternalRunDeathTestFlag* internal_run_death_test_flag() const {\n    return internal_run_death_test_flag_.get();\n  }\n\n  // Returns a pointer to the current death test factory.\n  internal::DeathTestFactory* death_test_factory() {\n    return death_test_factory_.get();\n  }\n\n  void SuppressTestEventsIfInSubprocess();\n\n  friend class ReplaceDeathTestFactory;\n#endif  // GTEST_HAS_DEATH_TEST\n\n  // Initializes the event listener performing XML output as specified by\n  // UnitTestOptions. Must not be called before InitGoogleTest.\n  void ConfigureXmlOutput();\n\n#if GTEST_CAN_STREAM_RESULTS_\n  // Initializes the event listener for streaming test results to a socket.\n  // Must not be called before InitGoogleTest.\n  void ConfigureStreamingOutput();\n#endif\n\n  // Performs initialization dependent upon flag values obtained in\n  // ParseGoogleTestFlagsOnly.  Is called from InitGoogleTest after the call to\n  // ParseGoogleTestFlagsOnly.  In case a user neglects to call InitGoogleTest\n  // this function is also called from RunAllTests.  Since this function can be\n  // called more than once, it has to be idempotent.\n  void PostFlagParsingInit();\n\n  // Gets the random seed used at the start of the current test iteration.\n  int random_seed() const { return random_seed_; }\n\n  // Gets the random number generator.\n  internal::Random* random() { return &random_; }\n\n  // Shuffles all test cases, and the tests within each test case,\n  // making sure that death tests are still run first.\n  void ShuffleTests();\n\n  // Restores the test cases and tests to their order before the first shuffle.\n  void UnshuffleTests();\n\n  // Returns the value of GTEST_FLAG(catch_exceptions) at the moment\n  // UnitTest::Run() starts.\n  bool catch_exceptions() const { return catch_exceptions_; }\n\n private:\n  friend class ::testing::UnitTest;\n\n  // Used by UnitTest::Run() to capture the state of\n  // GTEST_FLAG(catch_exceptions) at the moment it starts.\n  void set_catch_exceptions(bool value) { catch_exceptions_ = value; }\n\n  // The UnitTest object that owns this implementation object.\n  UnitTest* const parent_;\n\n  // The working directory when the first TEST() or TEST_F() was\n  // executed.\n  internal::FilePath original_working_dir_;\n\n  // The default test part result reporters.\n  DefaultGlobalTestPartResultReporter default_global_test_part_result_reporter_;\n  DefaultPerThreadTestPartResultReporter\n      default_per_thread_test_part_result_reporter_;\n\n  // Points to (but doesn't own) the global test part result reporter.\n  TestPartResultReporterInterface* global_test_part_result_repoter_;\n\n  // Protects read and write access to global_test_part_result_reporter_.\n  internal::Mutex global_test_part_result_reporter_mutex_;\n\n  // Points to (but doesn't own) the per-thread test part result reporter.\n  internal::ThreadLocal<TestPartResultReporterInterface*>\n      per_thread_test_part_result_reporter_;\n\n  // The vector of environments that need to be set-up/torn-down\n  // before/after the tests are run.\n  std::vector<Environment*> environments_;\n\n  // The vector of TestCases in their original order.  It owns the\n  // elements in the vector.\n  std::vector<TestCase*> test_cases_;\n\n  // Provides a level of indirection for the test case list to allow\n  // easy shuffling and restoring the test case order.  The i-th\n  // element of this vector is the index of the i-th test case in the\n  // shuffled order.\n  std::vector<int> test_case_indices_;\n\n#if GTEST_HAS_PARAM_TEST\n  // ParameterizedTestRegistry object used to register value-parameterized\n  // tests.\n  internal::ParameterizedTestCaseRegistry parameterized_test_registry_;\n\n  // Indicates whether RegisterParameterizedTests() has been called already.\n  bool parameterized_tests_registered_;\n#endif  // GTEST_HAS_PARAM_TEST\n\n  // Index of the last death test case registered.  Initially -1.\n  int last_death_test_case_;\n\n  // This points to the TestCase for the currently running test.  It\n  // changes as Google Test goes through one test case after another.\n  // When no test is running, this is set to nullptr and Google Test\n  // stores assertion results in ad_hoc_test_result_.  Initially nullptr.\n  TestCase* current_test_case_;\n\n  // This points to the TestInfo for the currently running test.  It\n  // changes as Google Test goes through one test after another.  When\n  // no test is running, this is set to nullptr and Google Test stores\n  // assertion results in ad_hoc_test_result_.  Initially nullptr.\n  TestInfo* current_test_info_;\n\n  // Normally, a user only writes assertions inside a TEST or TEST_F,\n  // or inside a function called by a TEST or TEST_F.  Since Google\n  // Test keeps track of which test is current running, it can\n  // associate such an assertion with the test it belongs to.\n  //\n  // If an assertion is encountered when no TEST or TEST_F is running,\n  // Google Test attributes the assertion result to an imaginary \"ad hoc\"\n  // test, and records the result in ad_hoc_test_result_.\n  TestResult ad_hoc_test_result_;\n\n  // The list of event listeners that can be used to track events inside\n  // Google Test.\n  TestEventListeners listeners_;\n\n  // The OS stack trace getter.  Will be deleted when the UnitTest\n  // object is destructed.  By default, an OsStackTraceGetter is used,\n  // but the user can set this field to use a custom getter if that is\n  // desired.\n  OsStackTraceGetterInterface* os_stack_trace_getter_;\n\n  // True iff PostFlagParsingInit() has been called.\n  bool post_flag_parse_init_performed_;\n\n  // The random number seed used at the beginning of the test run.\n  int random_seed_;\n\n  // Our random number generator.\n  internal::Random random_;\n\n  // The time of the test program start, in ms from the start of the\n  // UNIX epoch.\n  TimeInMillis start_timestamp_;\n\n  // How long the test took to run, in milliseconds.\n  TimeInMillis elapsed_time_;\n\n#if GTEST_HAS_DEATH_TEST\n  // The decomposed components of the gtest_internal_run_death_test flag,\n  // parsed when RUN_ALL_TESTS is called.\n  internal::scoped_ptr<InternalRunDeathTestFlag> internal_run_death_test_flag_;\n  internal::scoped_ptr<internal::DeathTestFactory> death_test_factory_;\n#endif  // GTEST_HAS_DEATH_TEST\n\n  // A per-thread stack of traces created by the SCOPED_TRACE() macro.\n  internal::ThreadLocal<std::vector<TraceInfo> > gtest_trace_stack_;\n\n  // The value of GTEST_FLAG(catch_exceptions) at the moment RunAllTests()\n  // starts.\n  bool catch_exceptions_;\n\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(UnitTestImpl);\n};  // class UnitTestImpl\n\n// Convenience function for accessing the global UnitTest\n// implementation object.\ninline UnitTestImpl* GetUnitTestImpl() {\n  return UnitTest::GetInstance()->impl();\n}\n\n#if GTEST_USES_SIMPLE_RE\n\n// Internal helper functions for implementing the simple regular\n// expression matcher.\nGTEST_API_ bool IsInSet(char ch, const char* str);\nGTEST_API_ bool IsAsciiDigit(char ch);\nGTEST_API_ bool IsAsciiPunct(char ch);\nGTEST_API_ bool IsRepeat(char ch);\nGTEST_API_ bool IsAsciiWhiteSpace(char ch);\nGTEST_API_ bool IsAsciiWordChar(char ch);\nGTEST_API_ bool IsValidEscape(char ch);\nGTEST_API_ bool AtomMatchesChar(bool escaped, char pattern, char ch);\nGTEST_API_ bool ValidateRegex(const char* regex);\nGTEST_API_ bool MatchRegexAtHead(const char* regex, const char* str);\nGTEST_API_ bool MatchRepetitionAndRegexAtHead(\n    bool escaped, char ch, char repeat, const char* regex, const char* str);\nGTEST_API_ bool MatchRegexAnywhere(const char* regex, const char* str);\n\n#endif  // GTEST_USES_SIMPLE_RE\n\n// Parses the command line for Google Test flags, without initializing\n// other parts of Google Test.\nGTEST_API_ void ParseGoogleTestFlagsOnly(int* argc, char** argv);\nGTEST_API_ void ParseGoogleTestFlagsOnly(int* argc, wchar_t** argv);\n\n#if GTEST_HAS_DEATH_TEST\n\n// Returns the message describing the last system error, regardless of the\n// platform.\nGTEST_API_ std::string GetLastErrnoDescription();\n\n# if GTEST_OS_WINDOWS\n// Provides leak-safe Windows kernel handle ownership.\nclass AutoHandle {\n public:\n  AutoHandle() : handle_(INVALID_HANDLE_VALUE) {}\n  explicit AutoHandle(HANDLE handle) : handle_(handle) {}\n\n  ~AutoHandle() { Reset(); }\n\n  HANDLE Get() const { return handle_; }\n  void Reset() { Reset(INVALID_HANDLE_VALUE); }\n  void Reset(HANDLE handle) {\n    if (handle != handle_) {\n      if (handle_ != INVALID_HANDLE_VALUE)\n        ::CloseHandle(handle_);\n      handle_ = handle;\n    }\n  }\n\n private:\n  HANDLE handle_;\n\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(AutoHandle);\n};\n# endif  // GTEST_OS_WINDOWS\n\n// Attempts to parse a string into a positive integer pointed to by the\n// number parameter.  Returns true if that is possible.\n// GTEST_HAS_DEATH_TEST implies that we have ::std::string, so we can use\n// it here.\ntemplate <typename Integer>\nbool ParseNaturalNumber(const ::std::string& str, Integer* number) {\n  // Fail fast if the given string does not begin with a digit;\n  // this bypasses strtoXXX's \"optional leading whitespace and plus\n  // or minus sign\" semantics, which are undesirable here.\n  if (str.empty() || !IsDigit(str[0])) {\n    return false;\n  }\n  errno = 0;\n\n  char* end;\n  // BiggestConvertible is the largest integer type that system-provided\n  // string-to-number conversion routines can return.\n\n# if GTEST_OS_WINDOWS && !defined(__GNUC__)\n\n  // MSVC and C++ Builder define __int64 instead of the standard long long.\n  typedef unsigned __int64 BiggestConvertible;\n  const BiggestConvertible parsed = _strtoui64(str.c_str(), &end, 10);\n\n# else\n\n  typedef unsigned long BiggestConvertible;  // NOLINT\n  const BiggestConvertible parsed = strtoull(str.c_str(), &end, 10);\n\n# endif  // GTEST_OS_WINDOWS && !defined(__GNUC__)\n\n  const bool parse_success = *end == '\\0' && errno == 0;\n\n  // TODO(vladl@google.com): Convert this to compile time assertion when it is\n  // available.\n  GTEST_CHECK_(sizeof(Integer) <= sizeof(parsed));\n\n  const Integer result = static_cast<Integer>(parsed);\n  if (parse_success && static_cast<BiggestConvertible>(result) == parsed) {\n    *number = result;\n    return true;\n  }\n  return false;\n}\n#endif  // GTEST_HAS_DEATH_TEST\n\n// TestResult contains some private methods that should be hidden from\n// Google Test user but are required for testing. This class allow our tests\n// to access them.\n//\n// This class is supplied only for the purpose of testing Google Test's own\n// constructs. Do not use it in user tests, either directly or indirectly.\nclass TestResultAccessor {\n public:\n  static void RecordProperty(TestResult* test_result,\n                             const std::string& xml_element,\n                             const TestProperty& property) {\n    test_result->RecordProperty(xml_element, property);\n  }\n\n  static void ClearTestPartResults(TestResult* test_result) {\n    test_result->ClearTestPartResults();\n  }\n\n  static const std::vector<testing::TestPartResult>& test_part_results(\n      const TestResult& test_result) {\n    return test_result.test_part_results();\n  }\n};\n\n#if GTEST_CAN_STREAM_RESULTS_\n\n// Streams test results to the given port on the given host machine.\nclass StreamingListener : public EmptyTestEventListener {\n public:\n  // Abstract base class for writing strings to a socket.\n  class AbstractSocketWriter {\n   public:\n    virtual ~AbstractSocketWriter() {}\n\n    // Sends a string to the socket.\n    virtual void Send(const std::string& message) = 0;\n\n    // Closes the socket.\n    virtual void CloseConnection() {}\n\n    // Sends a string and a newline to the socket.\n    void SendLn(const std::string& message) {\n      Send(message + \"\\n\");\n    }\n  };\n\n  // Concrete class for actually writing strings to a socket.\n  class SocketWriter : public AbstractSocketWriter {\n   public:\n    SocketWriter(const std::string& host, const std::string& port)\n        : sockfd_(-1), host_name_(host), port_num_(port) {\n      MakeConnection();\n    }\n\n    virtual ~SocketWriter() {\n      if (sockfd_ != -1)\n        CloseConnection();\n    }\n\n    // Sends a string to the socket.\n    virtual void Send(const std::string& message) {\n      GTEST_CHECK_(sockfd_ != -1)\n          << \"Send() can be called only when there is a connection.\";\n\n      const int len = static_cast<int>(message.length());\n      if (write(sockfd_, message.c_str(), len) != len) {\n        GTEST_LOG_(WARNING)\n            << \"stream_result_to: failed to stream to \"\n            << host_name_ << \":\" << port_num_;\n      }\n    }\n\n   private:\n    // Creates a client socket and connects to the server.\n    void MakeConnection();\n\n    // Closes the socket.\n    void CloseConnection() {\n      GTEST_CHECK_(sockfd_ != -1)\n          << \"CloseConnection() can be called only when there is a connection.\";\n\n      close(sockfd_);\n      sockfd_ = -1;\n    }\n\n    int sockfd_;  // socket file descriptor\n    const std::string host_name_;\n    const std::string port_num_;\n\n    GTEST_DISALLOW_COPY_AND_ASSIGN_(SocketWriter);\n  };  // class SocketWriter\n\n  // Escapes '=', '&', '%', and '\\n' characters in str as \"%xx\".\n  static std::string UrlEncode(const char* str);\n\n  StreamingListener(const std::string& host, const std::string& port)\n      : socket_writer_(new SocketWriter(host, port)) { Start(); }\n\n  explicit StreamingListener(AbstractSocketWriter* socket_writer)\n      : socket_writer_(socket_writer) { Start(); }\n\n  void OnTestProgramStart(const UnitTest& /* unit_test */) {\n    SendLn(\"event=TestProgramStart\");\n  }\n\n  void OnTestProgramEnd(const UnitTest& unit_test) {\n    // Note that Google Test current only report elapsed time for each\n    // test iteration, not for the entire test program.\n    SendLn(\"event=TestProgramEnd&passed=\" + FormatBool(unit_test.Passed()));\n\n    // Notify the streaming server to stop.\n    socket_writer_->CloseConnection();\n  }\n\n  void OnTestIterationStart(const UnitTest& /* unit_test */, int iteration) {\n    SendLn(\"event=TestIterationStart&iteration=\" +\n           StreamableToString(iteration));\n  }\n\n  void OnTestIterationEnd(const UnitTest& unit_test, int /* iteration */) {\n    SendLn(\"event=TestIterationEnd&passed=\" +\n           FormatBool(unit_test.Passed()) + \"&elapsed_time=\" +\n           StreamableToString(unit_test.elapsed_time()) + \"ms\");\n  }\n\n  void OnTestCaseStart(const TestCase& test_case) {\n    SendLn(std::string(\"event=TestCaseStart&name=\") + test_case.name());\n  }\n\n  void OnTestCaseEnd(const TestCase& test_case) {\n    SendLn(\"event=TestCaseEnd&passed=\" + FormatBool(test_case.Passed())\n           + \"&elapsed_time=\" + StreamableToString(test_case.elapsed_time())\n           + \"ms\");\n  }\n\n  void OnTestStart(const TestInfo& test_info) {\n    SendLn(std::string(\"event=TestStart&name=\") + test_info.name());\n  }\n\n  void OnTestEnd(const TestInfo& test_info) {\n    SendLn(\"event=TestEnd&passed=\" +\n           FormatBool((test_info.result())->Passed()) +\n           \"&elapsed_time=\" +\n           StreamableToString((test_info.result())->elapsed_time()) + \"ms\");\n  }\n\n  void OnTestPartResult(const TestPartResult& test_part_result) {\n    const char* file_name = test_part_result.file_name();\n    if (file_name == nullptr)\n      file_name = \"\";\n    SendLn(\"event=TestPartResult&file=\" + UrlEncode(file_name) +\n           \"&line=\" + StreamableToString(test_part_result.line_number()) +\n           \"&message=\" + UrlEncode(test_part_result.message()));\n  }\n\n private:\n  // Sends the given message and a newline to the socket.\n  void SendLn(const std::string& message) { socket_writer_->SendLn(message); }\n\n  // Called at the start of streaming to notify the receiver what\n  // protocol we are using.\n  void Start() { SendLn(\"gtest_streaming_protocol_version=1.0\"); }\n\n  std::string FormatBool(bool value) { return value ? \"1\" : \"0\"; }\n\n  const scoped_ptr<AbstractSocketWriter> socket_writer_;\n\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(StreamingListener);\n};  // class StreamingListener\n\n#endif  // GTEST_CAN_STREAM_RESULTS_\n\n}  // namespace internal\n}  // namespace testing\n\n#endif  // GTEST_SRC_GTEST_INTERNAL_INL_H_\n#undef GTEST_IMPLEMENTATION_\n\n#if GTEST_OS_WINDOWS\n# define vsnprintf _vsnprintf\n#endif  // GTEST_OS_WINDOWS\n\nnamespace testing {\n\nusing internal::CountIf;\nusing internal::ForEach;\nusing internal::GetElementOr;\nusing internal::Shuffle;\n\n// Constants.\n\n// A test whose test case name or test name matches this filter is\n// disabled and not run.\nstatic const char kDisableTestFilter[] = \"DISABLED_*:*/DISABLED_*\";\n\n// A test case whose name matches this filter is considered a death\n// test case and will be run before test cases whose name doesn't\n// match this filter.\nstatic const char kDeathTestCaseFilter[] = \"*DeathTest:*DeathTest/*\";\n\n// A test filter that matches everything.\nstatic const char kUniversalFilter[] = \"*\";\n\n// The default output file for XML output.\nstatic const char kDefaultOutputFile[] = \"test_detail.xml\";\n\n// The environment variable name for the test shard index.\nstatic const char kTestShardIndex[] = \"GTEST_SHARD_INDEX\";\n// The environment variable name for the total number of test shards.\nstatic const char kTestTotalShards[] = \"GTEST_TOTAL_SHARDS\";\n// The environment variable name for the test shard status file.\nstatic const char kTestShardStatusFile[] = \"GTEST_SHARD_STATUS_FILE\";\n\nnamespace internal {\n\n// The text used in failure messages to indicate the start of the\n// stack trace.\nconst char kStackTraceMarker[] = \"\\nStack trace:\\n\";\n\n// g_help_flag is true iff the --help flag or an equivalent form is\n// specified on the command line.\nbool g_help_flag = false;\n\n}  // namespace internal\n\nstatic const char* GetDefaultFilter() {\n  return kUniversalFilter;\n}\n\nGTEST_DEFINE_bool_(\n    also_run_disabled_tests,\n    internal::BoolFromGTestEnv(\"also_run_disabled_tests\", false),\n    \"Run disabled tests too, in addition to the tests normally being run.\");\n\nGTEST_DEFINE_bool_(\n    break_on_failure,\n    internal::BoolFromGTestEnv(\"break_on_failure\", false),\n    \"True iff a failed assertion should be a debugger break-point.\");\n\nGTEST_DEFINE_bool_(\n    catch_exceptions,\n    internal::BoolFromGTestEnv(\"catch_exceptions\", true),\n    \"True iff \" GTEST_NAME_\n    \" should catch exceptions and treat them as test failures.\");\n\nGTEST_DEFINE_string_(\n    color,\n    internal::StringFromGTestEnv(\"color\", \"auto\"),\n    \"Whether to use colors in the output.  Valid values: yes, no, \"\n    \"and auto.  'auto' means to use colors if the output is \"\n    \"being sent to a terminal and the TERM environment variable \"\n    \"is set to a terminal type that supports colors.\");\n\nGTEST_DEFINE_string_(\n    filter,\n    internal::StringFromGTestEnv(\"filter\", GetDefaultFilter()),\n    \"A colon-separated list of glob (not regex) patterns \"\n    \"for filtering the tests to run, optionally followed by a \"\n    \"'-' and a : separated list of negative patterns (tests to \"\n    \"exclude).  A test is run if it matches one of the positive \"\n    \"patterns and does not match any of the negative patterns.\");\n\nGTEST_DEFINE_bool_(list_tests, false,\n                   \"List all tests without running them.\");\n\nGTEST_DEFINE_string_(\n    output,\n    internal::StringFromGTestEnv(\"output\", \"\"),\n    \"A format (currently must be \\\"xml\\\"), optionally followed \"\n    \"by a colon and an output file name or directory. A directory \"\n    \"is indicated by a trailing pathname separator. \"\n    \"Examples: \\\"xml:filename.xml\\\", \\\"xml::directoryname/\\\". \"\n    \"If a directory is specified, output files will be created \"\n    \"within that directory, with file-names based on the test \"\n    \"executable's name and, if necessary, made unique by adding \"\n    \"digits.\");\n\nGTEST_DEFINE_bool_(\n    print_time,\n    internal::BoolFromGTestEnv(\"print_time\", true),\n    \"True iff \" GTEST_NAME_\n    \" should display elapsed time in text output.\");\n\nGTEST_DEFINE_int32_(\n    random_seed,\n    internal::Int32FromGTestEnv(\"random_seed\", 0),\n    \"Random number seed to use when shuffling test orders.  Must be in range \"\n    \"[1, 99999], or 0 to use a seed based on the current time.\");\n\nGTEST_DEFINE_int32_(\n    repeat,\n    internal::Int32FromGTestEnv(\"repeat\", 1),\n    \"How many times to repeat each test.  Specify a negative number \"\n    \"for repeating forever.  Useful for shaking out flaky tests.\");\n\nGTEST_DEFINE_bool_(\n    show_internal_stack_frames, false,\n    \"True iff \" GTEST_NAME_ \" should include internal stack frames when \"\n    \"printing test failure stack traces.\");\n\nGTEST_DEFINE_bool_(\n    shuffle,\n    internal::BoolFromGTestEnv(\"shuffle\", false),\n    \"True iff \" GTEST_NAME_\n    \" should randomize tests' order on every run.\");\n\nGTEST_DEFINE_int32_(\n    stack_trace_depth,\n    internal::Int32FromGTestEnv(\"stack_trace_depth\", kMaxStackTraceDepth),\n    \"The maximum number of stack frames to print when an \"\n    \"assertion fails.  The valid range is 0 through 100, inclusive.\");\n\nGTEST_DEFINE_string_(\n    stream_result_to,\n    internal::StringFromGTestEnv(\"stream_result_to\", \"\"),\n    \"This flag specifies the host name and the port number on which to stream \"\n    \"test results. Example: \\\"localhost:555\\\". The flag is effective only on \"\n    \"Linux.\");\n\nGTEST_DEFINE_bool_(\n    throw_on_failure,\n    internal::BoolFromGTestEnv(\"throw_on_failure\", false),\n    \"When this flag is specified, a failed assertion will throw an exception \"\n    \"if exceptions are enabled or exit the program with a non-zero code \"\n    \"otherwise.\");\n\nnamespace internal {\n\n// Generates a random number from [0, range), using a Linear\n// Congruential Generator (LCG).  Crashes if 'range' is 0 or greater\n// than kMaxRange.\nUInt32 Random::Generate(UInt32 range) {\n  // These constants are the same as are used in glibc's rand(3).\n  state_ = (1103515245U*state_ + 12345U) % kMaxRange;\n\n  GTEST_CHECK_(range > 0)\n      << \"Cannot generate a number in the range [0, 0).\";\n  GTEST_CHECK_(range <= kMaxRange)\n      << \"Generation of a number in [0, \" << range << \") was requested, \"\n      << \"but this can only generate numbers in [0, \" << kMaxRange << \").\";\n\n  // Converting via modulus introduces a bit of downward bias, but\n  // it's simple, and a linear congruential generator isn't too good\n  // to begin with.\n  return state_ % range;\n}\n\n// GTestIsInitialized() returns true iff the user has initialized\n// Google Test.  Useful for catching the user mistake of not initializing\n// Google Test before calling RUN_ALL_TESTS().\n//\n// A user must call testing::InitGoogleTest() to initialize Google\n// Test.  g_init_gtest_count is set to the number of times\n// InitGoogleTest() has been called.  We don't protect this variable\n// under a mutex as it is only accessed in the main thread.\nGTEST_API_ int g_init_gtest_count = 0;\nstatic bool GTestIsInitialized() { return g_init_gtest_count != 0; }\n\n// Iterates over a vector of TestCases, keeping a running sum of the\n// results of calling a given int-returning method on each.\n// Returns the sum.\nstatic int SumOverTestCaseList(const std::vector<TestCase*>& case_list,\n                               int (TestCase::*method)() const) {\n  int sum = 0;\n  for (size_t i = 0; i < case_list.size(); i++) {\n    sum += (case_list[i]->*method)();\n  }\n  return sum;\n}\n\n// Returns true iff the test case passed.\nstatic bool TestCasePassed(const TestCase* test_case) {\n  return test_case->should_run() && test_case->Passed();\n}\n\n// Returns true iff the test case failed.\nstatic bool TestCaseFailed(const TestCase* test_case) {\n  return test_case->should_run() && test_case->Failed();\n}\n\n// Returns true iff test_case contains at least one test that should\n// run.\nstatic bool ShouldRunTestCase(const TestCase* test_case) {\n  return test_case->should_run();\n}\n\n// AssertHelper constructor.\nAssertHelper::AssertHelper(TestPartResult::Type type,\n                           const char* file,\n                           int line,\n                           const char* message)\n    : data_(new AssertHelperData(type, file, line, message)) {\n}\n\nAssertHelper::~AssertHelper() {\n  delete data_;\n}\n\n// Message assignment, for assertion streaming support.\nvoid AssertHelper::operator=(const Message& message) const {\n  UnitTest::GetInstance()->\n    AddTestPartResult(data_->type, data_->file, data_->line,\n                      AppendUserMessage(data_->message, message),\n                      UnitTest::GetInstance()->impl()\n                      ->CurrentOsStackTraceExceptTop(1)\n                      // Skips the stack frame for this function itself.\n                      );  // NOLINT\n}\n\n// Mutex for linked pointers.\nGTEST_API_ GTEST_DEFINE_STATIC_MUTEX_(g_linked_ptr_mutex);\n\n// Application pathname gotten in InitGoogleTest.\nstd::string g_executable_path;\n\n// Returns the current application's name, removing directory path if that\n// is present.\nFilePath GetCurrentExecutableName() {\n  FilePath result;\n\n#if GTEST_OS_WINDOWS\n  result.Set(FilePath(g_executable_path).RemoveExtension(\"exe\"));\n#else\n  result.Set(FilePath(g_executable_path));\n#endif  // GTEST_OS_WINDOWS\n\n  return result.RemoveDirectoryName();\n}\n\n// Functions for processing the gtest_output flag.\n\n// Returns the output format, or \"\" for normal printed output.\nstd::string UnitTestOptions::GetOutputFormat() {\n  const char* const gtest_output_flag = GTEST_FLAG(output).c_str();\n  if (gtest_output_flag == nullptr) return std::string(\"\");\n\n  const char* const colon = strchr(gtest_output_flag, ':');\n  return (colon == nullptr) ?\n      std::string(gtest_output_flag) :\n      std::string(gtest_output_flag, colon - gtest_output_flag);\n}\n\n// Returns the name of the requested output file, or the default if none\n// was explicitly specified.\nstd::string UnitTestOptions::GetAbsolutePathToOutputFile() {\n  const char* const gtest_output_flag = GTEST_FLAG(output).c_str();\n  if (gtest_output_flag == nullptr)\n    return \"\";\n\n  const char* const colon = strchr(gtest_output_flag, ':');\n  if (colon == nullptr)\n    return internal::FilePath::ConcatPaths(\n        internal::FilePath(\n            UnitTest::GetInstance()->original_working_dir()),\n        internal::FilePath(kDefaultOutputFile)).string();\n\n  internal::FilePath output_name(colon + 1);\n  if (!output_name.IsAbsolutePath())\n    // TODO(wan@google.com): on Windows \\some\\path is not an absolute\n    // path (as its meaning depends on the current drive), yet the\n    // following logic for turning it into an absolute path is wrong.\n    // Fix it.\n    output_name = internal::FilePath::ConcatPaths(\n        internal::FilePath(UnitTest::GetInstance()->original_working_dir()),\n        internal::FilePath(colon + 1));\n\n  if (!output_name.IsDirectory())\n    return output_name.string();\n\n  internal::FilePath result(internal::FilePath::GenerateUniqueFileName(\n      output_name, internal::GetCurrentExecutableName(),\n      GetOutputFormat().c_str()));\n  return result.string();\n}\n\n// Returns true iff the wildcard pattern matches the string.  The\n// first ':' or '\\0' character in pattern marks the end of it.\n//\n// This recursive algorithm isn't very efficient, but is clear and\n// works well enough for matching test names, which are short.\nbool UnitTestOptions::PatternMatchesString(const char *pattern,\n                                           const char *str) {\n  switch (*pattern) {\n    case '\\0':\n    case ':':  // Either ':' or '\\0' marks the end of the pattern.\n      return *str == '\\0';\n    case '?':  // Matches any single character.\n      return *str != '\\0' && PatternMatchesString(pattern + 1, str + 1);\n    case '*':  // Matches any string (possibly empty) of characters.\n      return (*str != '\\0' && PatternMatchesString(pattern, str + 1)) ||\n          PatternMatchesString(pattern + 1, str);\n    default:  // Non-special character.  Matches itself.\n      return *pattern == *str &&\n          PatternMatchesString(pattern + 1, str + 1);\n  }\n}\n\nbool UnitTestOptions::MatchesFilter(\n    const std::string& name, const char* filter) {\n  const char *cur_pattern = filter;\n  for (;;) {\n    if (PatternMatchesString(cur_pattern, name.c_str())) {\n      return true;\n    }\n\n    // Finds the next pattern in the filter.\n    cur_pattern = strchr(cur_pattern, ':');\n\n    // Returns if no more pattern can be found.\n    if (cur_pattern == nullptr) {\n      return false;\n    }\n\n    // Skips the pattern separater (the ':' character).\n    cur_pattern++;\n  }\n}\n\n// Returns true iff the user-specified filter matches the test case\n// name and the test name.\nbool UnitTestOptions::FilterMatchesTest(const std::string &test_case_name,\n                                        const std::string &test_name) {\n  const std::string& full_name = test_case_name + \".\" + test_name.c_str();\n\n  // Split --gtest_filter at '-', if there is one, to separate into\n  // positive filter and negative filter portions\n  const char* const p = GTEST_FLAG(filter).c_str();\n  const char* const dash = strchr(p, '-');\n  std::string positive;\n  std::string negative;\n  if (dash == nullptr) {\n    positive = GTEST_FLAG(filter).c_str();  // Whole string is a positive filter\n    negative = \"\";\n  } else {\n    positive = std::string(p, dash);   // Everything up to the dash\n    negative = std::string(dash + 1);  // Everything after the dash\n    if (positive.empty()) {\n      // Treat '-test1' as the same as '*-test1'\n      positive = kUniversalFilter;\n    }\n  }\n\n  // A filter is a colon-separated list of patterns.  It matches a\n  // test if any pattern in it matches the test.\n  return (MatchesFilter(full_name, positive.c_str()) &&\n          !MatchesFilter(full_name, negative.c_str()));\n}\n\n#if GTEST_HAS_SEH\n// Returns EXCEPTION_EXECUTE_HANDLER if Google Test should handle the\n// given SEH exception, or EXCEPTION_CONTINUE_SEARCH otherwise.\n// This function is useful as an __except condition.\nint UnitTestOptions::GTestShouldProcessSEH(DWORD exception_code) {\n  // Google Test should handle a SEH exception if:\n  //   1. the user wants it to, AND\n  //   2. this is not a breakpoint exception, AND\n  //   3. this is not a C++ exception (VC++ implements them via SEH,\n  //      apparently).\n  //\n  // SEH exception code for C++ exceptions.\n  // (see http://support.microsoft.com/kb/185294 for more information).\n  const DWORD kCxxExceptionCode = 0xe06d7363;\n\n  bool should_handle = true;\n\n  if (!GTEST_FLAG(catch_exceptions))\n    should_handle = false;\n  else if (exception_code == EXCEPTION_BREAKPOINT)\n    should_handle = false;\n  else if (exception_code == kCxxExceptionCode)\n    should_handle = false;\n\n  return should_handle ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH;\n}\n#endif  // GTEST_HAS_SEH\n\n}  // namespace internal\n\n// The c'tor sets this object as the test part result reporter used by\n// Google Test.  The 'result' parameter specifies where to report the\n// results. Intercepts only failures from the current thread.\nScopedFakeTestPartResultReporter::ScopedFakeTestPartResultReporter(\n    TestPartResultArray* result)\n    : intercept_mode_(INTERCEPT_ONLY_CURRENT_THREAD),\n      result_(result) {\n  Init();\n}\n\n// The c'tor sets this object as the test part result reporter used by\n// Google Test.  The 'result' parameter specifies where to report the\n// results.\nScopedFakeTestPartResultReporter::ScopedFakeTestPartResultReporter(\n    InterceptMode intercept_mode, TestPartResultArray* result)\n    : intercept_mode_(intercept_mode),\n      result_(result) {\n  Init();\n}\n\nvoid ScopedFakeTestPartResultReporter::Init() {\n  internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();\n  if (intercept_mode_ == INTERCEPT_ALL_THREADS) {\n    old_reporter_ = impl->GetGlobalTestPartResultReporter();\n    impl->SetGlobalTestPartResultReporter(this);\n  } else {\n    old_reporter_ = impl->GetTestPartResultReporterForCurrentThread();\n    impl->SetTestPartResultReporterForCurrentThread(this);\n  }\n}\n\n// The d'tor restores the test part result reporter used by Google Test\n// before.\nScopedFakeTestPartResultReporter::~ScopedFakeTestPartResultReporter() {\n  internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();\n  if (intercept_mode_ == INTERCEPT_ALL_THREADS) {\n    impl->SetGlobalTestPartResultReporter(old_reporter_);\n  } else {\n    impl->SetTestPartResultReporterForCurrentThread(old_reporter_);\n  }\n}\n\n// Increments the test part result count and remembers the result.\n// This method is from the TestPartResultReporterInterface interface.\nvoid ScopedFakeTestPartResultReporter::ReportTestPartResult(\n    const TestPartResult& result) {\n  result_->Append(result);\n}\n\nnamespace internal {\n\n// Returns the type ID of ::testing::Test.  We should always call this\n// instead of GetTypeId< ::testing::Test>() to get the type ID of\n// testing::Test.  This is to work around a suspected linker bug when\n// using Google Test as a framework on Mac OS X.  The bug causes\n// GetTypeId< ::testing::Test>() to return different values depending\n// on whether the call is from the Google Test framework itself or\n// from user test code.  GetTestTypeId() is guaranteed to always\n// return the same value, as it always calls GetTypeId<>() from the\n// gtest.cc, which is within the Google Test framework.\nTypeId GetTestTypeId() {\n  return GetTypeId<Test>();\n}\n\n// The value of GetTestTypeId() as seen from within the Google Test\n// library.  This is solely for testing GetTestTypeId().\nextern const TypeId kTestTypeIdInGoogleTest = GetTestTypeId();\n\n// This predicate-formatter checks that 'results' contains a test part\n// failure of the given type and that the failure message contains the\n// given substring.\nAssertionResult HasOneFailure(const char* /* results_expr */,\n                              const char* /* type_expr */,\n                              const char* /* substr_expr */,\n                              const TestPartResultArray& results,\n                              TestPartResult::Type type,\n                              const std::string& substr) {\n  const std::string expected(type == TestPartResult::kFatalFailure ?\n                        \"1 fatal failure\" :\n                        \"1 non-fatal failure\");\n  Message msg;\n  if (results.size() != 1) {\n    msg << \"Expected: \" << expected << \"\\n\"\n        << \"  Actual: \" << results.size() << \" failures\";\n    for (int i = 0; i < results.size(); i++) {\n      msg << \"\\n\" << results.GetTestPartResult(i);\n    }\n    return AssertionFailure() << msg;\n  }\n\n  const TestPartResult& r = results.GetTestPartResult(0);\n  if (r.type() != type) {\n    return AssertionFailure() << \"Expected: \" << expected << \"\\n\"\n                              << \"  Actual:\\n\"\n                              << r;\n  }\n\n  if (strstr(r.message(), substr.c_str()) == nullptr) {\n    return AssertionFailure() << \"Expected: \" << expected << \" containing \\\"\"\n                              << substr << \"\\\"\\n\"\n                              << \"  Actual:\\n\"\n                              << r;\n  }\n\n  return AssertionSuccess();\n}\n\n// The constructor of SingleFailureChecker remembers where to look up\n// test part results, what type of failure we expect, and what\n// substring the failure message should contain.\nSingleFailureChecker:: SingleFailureChecker(\n    const TestPartResultArray* results,\n    TestPartResult::Type type,\n    const std::string& substr)\n    : results_(results),\n      type_(type),\n      substr_(substr) {}\n\n// The destructor of SingleFailureChecker verifies that the given\n// TestPartResultArray contains exactly one failure that has the given\n// type and contains the given substring.  If that's not the case, a\n// non-fatal failure will be generated.\nSingleFailureChecker::~SingleFailureChecker() {\n  EXPECT_PRED_FORMAT3(HasOneFailure, *results_, type_, substr_);\n}\n\nDefaultGlobalTestPartResultReporter::DefaultGlobalTestPartResultReporter(\n    UnitTestImpl* unit_test) : unit_test_(unit_test) {}\n\nvoid DefaultGlobalTestPartResultReporter::ReportTestPartResult(\n    const TestPartResult& result) {\n  unit_test_->current_test_result()->AddTestPartResult(result);\n  unit_test_->listeners()->repeater()->OnTestPartResult(result);\n}\n\nDefaultPerThreadTestPartResultReporter::DefaultPerThreadTestPartResultReporter(\n    UnitTestImpl* unit_test) : unit_test_(unit_test) {}\n\nvoid DefaultPerThreadTestPartResultReporter::ReportTestPartResult(\n    const TestPartResult& result) {\n  unit_test_->GetGlobalTestPartResultReporter()->ReportTestPartResult(result);\n}\n\n// Returns the global test part result reporter.\nTestPartResultReporterInterface*\nUnitTestImpl::GetGlobalTestPartResultReporter() {\n  internal::MutexLock lock(&global_test_part_result_reporter_mutex_);\n  return global_test_part_result_repoter_;\n}\n\n// Sets the global test part result reporter.\nvoid UnitTestImpl::SetGlobalTestPartResultReporter(\n    TestPartResultReporterInterface* reporter) {\n  internal::MutexLock lock(&global_test_part_result_reporter_mutex_);\n  global_test_part_result_repoter_ = reporter;\n}\n\n// Returns the test part result reporter for the current thread.\nTestPartResultReporterInterface*\nUnitTestImpl::GetTestPartResultReporterForCurrentThread() {\n  return per_thread_test_part_result_reporter_.get();\n}\n\n// Sets the test part result reporter for the current thread.\nvoid UnitTestImpl::SetTestPartResultReporterForCurrentThread(\n    TestPartResultReporterInterface* reporter) {\n  per_thread_test_part_result_reporter_.set(reporter);\n}\n\n// Gets the number of successful test cases.\nint UnitTestImpl::successful_test_case_count() const {\n  return CountIf(test_cases_, TestCasePassed);\n}\n\n// Gets the number of failed test cases.\nint UnitTestImpl::failed_test_case_count() const {\n  return CountIf(test_cases_, TestCaseFailed);\n}\n\n// Gets the number of all test cases.\nint UnitTestImpl::total_test_case_count() const {\n  return static_cast<int>(test_cases_.size());\n}\n\n// Gets the number of all test cases that contain at least one test\n// that should run.\nint UnitTestImpl::test_case_to_run_count() const {\n  return CountIf(test_cases_, ShouldRunTestCase);\n}\n\n// Gets the number of successful tests.\nint UnitTestImpl::successful_test_count() const {\n  return SumOverTestCaseList(test_cases_, &TestCase::successful_test_count);\n}\n\n// Gets the number of failed tests.\nint UnitTestImpl::failed_test_count() const {\n  return SumOverTestCaseList(test_cases_, &TestCase::failed_test_count);\n}\n\n// Gets the number of disabled tests that will be reported in the XML report.\nint UnitTestImpl::reportable_disabled_test_count() const {\n  return SumOverTestCaseList(test_cases_,\n                             &TestCase::reportable_disabled_test_count);\n}\n\n// Gets the number of disabled tests.\nint UnitTestImpl::disabled_test_count() const {\n  return SumOverTestCaseList(test_cases_, &TestCase::disabled_test_count);\n}\n\n// Gets the number of tests to be printed in the XML report.\nint UnitTestImpl::reportable_test_count() const {\n  return SumOverTestCaseList(test_cases_, &TestCase::reportable_test_count);\n}\n\n// Gets the number of all tests.\nint UnitTestImpl::total_test_count() const {\n  return SumOverTestCaseList(test_cases_, &TestCase::total_test_count);\n}\n\n// Gets the number of tests that should run.\nint UnitTestImpl::test_to_run_count() const {\n  return SumOverTestCaseList(test_cases_, &TestCase::test_to_run_count);\n}\n\n// Returns the current OS stack trace as an std::string.\n//\n// The maximum number of stack frames to be included is specified by\n// the gtest_stack_trace_depth flag.  The skip_count parameter\n// specifies the number of top frames to be skipped, which doesn't\n// count against the number of frames to be included.\n//\n// For example, if Foo() calls Bar(), which in turn calls\n// CurrentOsStackTraceExceptTop(1), Foo() will be included in the\n// trace but Bar() and CurrentOsStackTraceExceptTop() won't.\nstd::string UnitTestImpl::CurrentOsStackTraceExceptTop(int skip_count) {\n  (void)skip_count;\n  return \"\";\n}\n\n// Returns the current time in milliseconds.\nTimeInMillis GetTimeInMillis() {\n#if GTEST_OS_WINDOWS_MOBILE || defined(__BORLANDC__)\n  // Difference between 1970-01-01 and 1601-01-01 in milliseconds.\n  // http://analogous.blogspot.com/2005/04/epoch.html\n  const TimeInMillis kJavaEpochToWinFileTimeDelta =\n    static_cast<TimeInMillis>(116444736UL) * 100000UL;\n  const DWORD kTenthMicrosInMilliSecond = 10000;\n\n  SYSTEMTIME now_systime;\n  FILETIME now_filetime;\n  ULARGE_INTEGER now_int64;\n  // TODO(kenton@google.com): Shouldn't this just use\n  //   GetSystemTimeAsFileTime()?\n  GetSystemTime(&now_systime);\n  if (SystemTimeToFileTime(&now_systime, &now_filetime)) {\n    now_int64.LowPart = now_filetime.dwLowDateTime;\n    now_int64.HighPart = now_filetime.dwHighDateTime;\n    now_int64.QuadPart = (now_int64.QuadPart / kTenthMicrosInMilliSecond) -\n      kJavaEpochToWinFileTimeDelta;\n    return now_int64.QuadPart;\n  }\n  return 0;\n#elif GTEST_OS_WINDOWS && !GTEST_HAS_GETTIMEOFDAY_\n  __timeb64 now;\n\n# ifdef _MSC_VER\n\n  // MSVC 8 deprecates _ftime64(), so we want to suppress warning 4996\n  // (deprecated function) there.\n  // TODO(kenton@google.com): Use GetTickCount()?  Or use\n  //   SystemTimeToFileTime()\n#  pragma warning(push)          // Saves the current warning state.\n#  pragma warning(disable:4996)  // Temporarily disables warning 4996.\n  _ftime64(&now);\n#  pragma warning(pop)           // Restores the warning state.\n# else\n\n  _ftime64(&now);\n\n# endif  // _MSC_VER\n\n  return static_cast<TimeInMillis>(now.time) * 1000 + now.millitm;\n#elif GTEST_HAS_GETTIMEOFDAY_\n  struct timeval now;\n  gettimeofday(&now, nullptr);\n  return static_cast<TimeInMillis>(now.tv_sec) * 1000 + now.tv_usec / 1000;\n#else\n# error \"Don't know how to get the current time on your system.\"\n#endif\n}\n\n// Utilities\n\n// class String.\n\n#if GTEST_OS_WINDOWS_MOBILE\n// Creates a UTF-16 wide string from the given ANSI string, allocating\n// memory using new. The caller is responsible for deleting the return\n// value using delete[]. Returns the wide string, or nullptr if the\n// input is null.\nLPCWSTR String::AnsiToUtf16(const char* ansi) {\n  if (!ansi) return nullptr;\n  const int length = strlen(ansi);\n  const int unicode_length =\n      MultiByteToWideChar(CP_ACP, 0, ansi, length,\n                          nullptr, 0);\n  WCHAR* unicode = new WCHAR[unicode_length + 1];\n  MultiByteToWideChar(CP_ACP, 0, ansi, length,\n                      unicode, unicode_length);\n  unicode[unicode_length] = 0;\n  return unicode;\n}\n\n// Creates an ANSI string from the given wide string, allocating\n// memory using new. The caller is responsible for deleting the return\n// value using delete[]. Returns the ANSI string, or nullptr if the\n// input is null.\nconst char* String::Utf16ToAnsi(LPCWSTR utf16_str)  {\n  if (!utf16_str) return nullptr;\n  const int ansi_length =\n      WideCharToMultiByte(CP_ACP, 0, utf16_str, -1,\n                          nullptr, 0, nullptr, nullptr);\n  char* ansi = new char[ansi_length + 1];\n  WideCharToMultiByte(CP_ACP, 0, utf16_str, -1,\n                      ansi, ansi_length, nullptr, nullptr);\n  ansi[ansi_length] = 0;\n  return ansi;\n}\n\n#endif  // GTEST_OS_WINDOWS_MOBILE\n\n// Compares two C strings.  Returns true iff they have the same content.\n//\n// Unlike strcmp(), this function can handle null argument(s).  A null\n// C string is considered different to any non-null C string,\n// including the empty string.\nbool String::CStringEquals(const char * lhs, const char * rhs) {\n  if ( lhs == nullptr ) return rhs == nullptr;\n\n  if ( rhs == nullptr ) return false;\n\n  return strcmp(lhs, rhs) == 0;\n}\n\n#if GTEST_HAS_STD_WSTRING || GTEST_HAS_GLOBAL_WSTRING\n\n// Converts an array of wide chars to a narrow string using the UTF-8\n// encoding, and streams the result to the given Message object.\nstatic void StreamWideCharsToMessage(const wchar_t* wstr, size_t length,\n                                     Message* msg) {\n  for (size_t i = 0; i != length; ) {  // NOLINT\n    if (wstr[i] != L'\\0') {\n      *msg << WideStringToUtf8(wstr + i, static_cast<int>(length - i));\n      while (i != length && wstr[i] != L'\\0')\n        i++;\n    } else {\n      *msg << '\\0';\n      i++;\n    }\n  }\n}\n\n#endif  // GTEST_HAS_STD_WSTRING || GTEST_HAS_GLOBAL_WSTRING\n\n}  // namespace internal\n\n// Constructs an empty Message.\n// We allocate the stringstream separately because otherwise each use of\n// ASSERT/EXPECT in a procedure adds over 200 bytes to the procedure's\n// stack frame leading to huge stack frames in some cases; gcc does not reuse\n// the stack space.\nMessage::Message() : ss_(new ::std::stringstream) {\n  // By default, we want there to be enough precision when printing\n  // a double to a Message.\n  *ss_ << std::setprecision(std::numeric_limits<double>::digits10 + 2);\n}\n\n// These two overloads allow streaming a wide C string to a Message\n// using the UTF-8 encoding.\nMessage& Message::operator <<(const wchar_t* wide_c_str) {\n  return *this << internal::String::ShowWideCString(wide_c_str);\n}\nMessage& Message::operator <<(wchar_t* wide_c_str) {\n  return *this << internal::String::ShowWideCString(wide_c_str);\n}\n\n#if GTEST_HAS_STD_WSTRING\n// Converts the given wide string to a narrow string using the UTF-8\n// encoding, and streams the result to this Message object.\nMessage& Message::operator <<(const ::std::wstring& wstr) {\n  internal::StreamWideCharsToMessage(wstr.c_str(), wstr.length(), this);\n  return *this;\n}\n#endif  // GTEST_HAS_STD_WSTRING\n\n#if GTEST_HAS_GLOBAL_WSTRING\n// Converts the given wide string to a narrow string using the UTF-8\n// encoding, and streams the result to this Message object.\nMessage& Message::operator <<(const ::wstring& wstr) {\n  internal::StreamWideCharsToMessage(wstr.c_str(), wstr.length(), this);\n  return *this;\n}\n#endif  // GTEST_HAS_GLOBAL_WSTRING\n\n// Gets the text streamed to this object so far as an std::string.\n// Each '\\0' character in the buffer is replaced with \"\\\\0\".\nstd::string Message::GetString() const {\n  return internal::StringStreamToString(ss_.get());\n}\n\n// AssertionResult constructors.\n// Used in EXPECT_TRUE/FALSE(assertion_result).\nAssertionResult::AssertionResult(const AssertionResult& other)\n    : success_(other.success_),\n      message_(other.message_.get() != nullptr ?\n               new ::std::string(*other.message_) :\n               static_cast< ::std::string*>(nullptr)) {\n}\n\n// Returns the assertion's negation. Used with EXPECT/ASSERT_FALSE.\nAssertionResult AssertionResult::operator!() const {\n  AssertionResult negation(!success_);\n  if (message_.get() != nullptr)\n    negation << *message_;\n  return negation;\n}\n\n// Makes a successful assertion result.\nAssertionResult AssertionSuccess() {\n  return AssertionResult(true);\n}\n\n// Makes a failed assertion result.\nAssertionResult AssertionFailure() {\n  return AssertionResult(false);\n}\n\n// Makes a failed assertion result with the given failure message.\n// Deprecated; use AssertionFailure() << message.\nAssertionResult AssertionFailure(const Message& message) {\n  return AssertionFailure() << message;\n}\n\nnamespace internal {\n\n// Constructs and returns the message for an equality assertion\n// (e.g. ASSERT_EQ, EXPECT_STREQ, etc) failure.\n//\n// The first four parameters are the expressions used in the assertion\n// and their values, as strings.  For example, for ASSERT_EQ(foo, bar)\n// where foo is 5 and bar is 6, we have:\n//\n//   expected_expression: \"foo\"\n//   actual_expression:   \"bar\"\n//   expected_value:      \"5\"\n//   actual_value:        \"6\"\n//\n// The ignoring_case parameter is true iff the assertion is a\n// *_STRCASEEQ*.  When it's true, the string \" (ignoring case)\" will\n// be inserted into the message.\nAssertionResult EqFailure(const char* expected_expression,\n                          const char* actual_expression,\n                          const std::string& expected_value,\n                          const std::string& actual_value,\n                          bool ignoring_case) {\n  Message msg;\n  msg << \"Value of: \" << actual_expression;\n  if (actual_value != actual_expression) {\n    msg << \"\\n  Actual: \" << actual_value;\n  }\n\n  msg << \"\\nExpected: \" << expected_expression;\n  if (ignoring_case) {\n    msg << \" (ignoring case)\";\n  }\n  if (expected_value != expected_expression) {\n    msg << \"\\nWhich is: \" << expected_value;\n  }\n\n  return AssertionFailure() << msg;\n}\n\n// Constructs a failure message for Boolean assertions such as EXPECT_TRUE.\nstd::string GetBoolAssertionFailureMessage(\n    const AssertionResult& assertion_result,\n    const char* expression_text,\n    const char* actual_predicate_value,\n    const char* expected_predicate_value) {\n  const char* actual_message = assertion_result.message();\n  Message msg;\n  msg << \"Value of: \" << expression_text\n      << \"\\n  Actual: \" << actual_predicate_value;\n  if (actual_message[0] != '\\0')\n    msg << \" (\" << actual_message << \")\";\n  msg << \"\\nExpected: \" << expected_predicate_value;\n  return msg.GetString();\n}\n\n// Helper function for implementing ASSERT_NEAR.\nAssertionResult DoubleNearPredFormat(const char* expr1,\n                                     const char* expr2,\n                                     const char* abs_error_expr,\n                                     double val1,\n                                     double val2,\n                                     double abs_error) {\n  const double diff = fabs(val1 - val2);\n  if (diff <= abs_error) return AssertionSuccess();\n\n  // TODO(wan): do not print the value of an expression if it's\n  // already a literal.\n  return AssertionFailure()\n      << \"The difference between \" << expr1 << \" and \" << expr2\n      << \" is \" << diff << \", which exceeds \" << abs_error_expr << \", where\\n\"\n      << expr1 << \" evaluates to \" << val1 << \",\\n\"\n      << expr2 << \" evaluates to \" << val2 << \", and\\n\"\n      << abs_error_expr << \" evaluates to \" << abs_error << \".\";\n}\n\n\n// Helper template for implementing FloatLE() and DoubleLE().\ntemplate <typename RawType>\nAssertionResult FloatingPointLE(const char* expr1,\n                                const char* expr2,\n                                RawType val1,\n                                RawType val2) {\n  // Returns success if val1 is less than val2,\n  if (val1 < val2) {\n    return AssertionSuccess();\n  }\n\n  // or if val1 is almost equal to val2.\n  const FloatingPoint<RawType> lhs(val1), rhs(val2);\n  if (lhs.AlmostEquals(rhs)) {\n    return AssertionSuccess();\n  }\n\n  // Note that the above two checks will both fail if either val1 or\n  // val2 is NaN, as the IEEE floating-point standard requires that\n  // any predicate involving a NaN must return false.\n\n  ::std::stringstream val1_ss;\n  val1_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)\n          << val1;\n\n  ::std::stringstream val2_ss;\n  val2_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)\n          << val2;\n\n  return AssertionFailure()\n      << \"Expected: (\" << expr1 << \") <= (\" << expr2 << \")\\n\"\n      << \"  Actual: \" << StringStreamToString(&val1_ss) << \" vs \"\n      << StringStreamToString(&val2_ss);\n}\n\n}  // namespace internal\n\n// Asserts that val1 is less than, or almost equal to, val2.  Fails\n// otherwise.  In particular, it fails if either val1 or val2 is NaN.\nAssertionResult FloatLE(const char* expr1, const char* expr2,\n                        float val1, float val2) {\n  return internal::FloatingPointLE<float>(expr1, expr2, val1, val2);\n}\n\n// Asserts that val1 is less than, or almost equal to, val2.  Fails\n// otherwise.  In particular, it fails if either val1 or val2 is NaN.\nAssertionResult DoubleLE(const char* expr1, const char* expr2,\n                         double val1, double val2) {\n  return internal::FloatingPointLE<double>(expr1, expr2, val1, val2);\n}\n\nnamespace internal {\n\n// The helper function for {ASSERT|EXPECT}_EQ with int or enum\n// arguments.\nAssertionResult CmpHelperEQ(const char* expected_expression,\n                            const char* actual_expression,\n                            BiggestInt expected,\n                            BiggestInt actual) {\n  if (expected == actual) {\n    return AssertionSuccess();\n  }\n\n  return EqFailure(expected_expression,\n                   actual_expression,\n                   FormatForComparisonFailureMessage(expected, actual),\n                   FormatForComparisonFailureMessage(actual, expected),\n                   false);\n}\n\n// A macro for implementing the helper functions needed to implement\n// ASSERT_?? and EXPECT_?? with integer or enum arguments.  It is here\n// just to avoid copy-and-paste of similar code.\n#define GTEST_IMPL_CMP_HELPER_(op_name, op)\\\nAssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \\\n                                   BiggestInt val1, BiggestInt val2) {\\\n  if (val1 op val2) {\\\n    return AssertionSuccess();\\\n  } else {\\\n    return AssertionFailure() \\\n        << \"  Expected: (\" << expr1 << \") \" #op \" (\" << expr2\\\n        << \"), Actual: \" << FormatForComparisonFailureMessage(val1, val2)\\\n        << \" vs \" << FormatForComparisonFailureMessage(val2, val1);\\\n  }\\\n}\n\n// Implements the helper function for {ASSERT|EXPECT}_NE with int or\n// enum arguments.\nGTEST_IMPL_CMP_HELPER_(NE, !=)\n// Implements the helper function for {ASSERT|EXPECT}_LE with int or\n// enum arguments.\nGTEST_IMPL_CMP_HELPER_(LE, <=)\n// Implements the helper function for {ASSERT|EXPECT}_LT with int or\n// enum arguments.\nGTEST_IMPL_CMP_HELPER_(LT, < )\n// Implements the helper function for {ASSERT|EXPECT}_GE with int or\n// enum arguments.\nGTEST_IMPL_CMP_HELPER_(GE, >=)\n// Implements the helper function for {ASSERT|EXPECT}_GT with int or\n// enum arguments.\nGTEST_IMPL_CMP_HELPER_(GT, > )\n\n#undef GTEST_IMPL_CMP_HELPER_\n\n// The helper function for {ASSERT|EXPECT}_STREQ.\nAssertionResult CmpHelperSTREQ(const char* expected_expression,\n                               const char* actual_expression,\n                               const char* expected,\n                               const char* actual) {\n  if (String::CStringEquals(expected, actual)) {\n    return AssertionSuccess();\n  }\n\n  return EqFailure(expected_expression,\n                   actual_expression,\n                   PrintToString(expected),\n                   PrintToString(actual),\n                   false);\n}\n\n// The helper function for {ASSERT|EXPECT}_STRCASEEQ.\nAssertionResult CmpHelperSTRCASEEQ(const char* expected_expression,\n                                   const char* actual_expression,\n                                   const char* expected,\n                                   const char* actual) {\n  if (String::CaseInsensitiveCStringEquals(expected, actual)) {\n    return AssertionSuccess();\n  }\n\n  return EqFailure(expected_expression,\n                   actual_expression,\n                   PrintToString(expected),\n                   PrintToString(actual),\n                   true);\n}\n\n// The helper function for {ASSERT|EXPECT}_STRNE.\nAssertionResult CmpHelperSTRNE(const char* s1_expression,\n                               const char* s2_expression,\n                               const char* s1,\n                               const char* s2) {\n  if (!String::CStringEquals(s1, s2)) {\n    return AssertionSuccess();\n  } else {\n    return AssertionFailure() << \"  Expected: (\" << s1_expression << \") != (\"\n                              << s2_expression << \"), Actual: \\\"\"\n                              << s1 << \"\\\" vs \\\"\" << s2 << \"\\\"\";\n  }\n}\n\n// The helper function for {ASSERT|EXPECT}_STRCASENE.\nAssertionResult CmpHelperSTRCASENE(const char* s1_expression,\n                                   const char* s2_expression,\n                                   const char* s1,\n                                   const char* s2) {\n  if (!String::CaseInsensitiveCStringEquals(s1, s2)) {\n    return AssertionSuccess();\n  } else {\n    return AssertionFailure()\n        << \"  Expected: (\" << s1_expression << \") != (\"\n        << s2_expression << \") (ignoring case), Actual: \\\"\"\n        << s1 << \"\\\" vs \\\"\" << s2 << \"\\\"\";\n  }\n}\n\n}  // namespace internal\n\nnamespace {\n\n// Helper functions for implementing IsSubString() and IsNotSubstring().\n\n// This group of overloaded functions return true iff needle is a\n// substring of haystack.  nullptr is considered a substring of itself\n// only.\n\nbool IsSubstringPred(const char* needle, const char* haystack) {\n  if (needle == nullptr || haystack == nullptr)\n    return needle == haystack;\n\n  return strstr(haystack, needle) != nullptr;\n}\n\nbool IsSubstringPred(const wchar_t* needle, const wchar_t* haystack) {\n  if (needle == nullptr || haystack == nullptr)\n    return needle == haystack;\n\n  return wcsstr(haystack, needle) != nullptr;\n}\n\n// StringType here can be either ::std::string or ::std::wstring.\ntemplate <typename StringType>\nbool IsSubstringPred(const StringType& needle,\n                     const StringType& haystack) {\n  return haystack.find(needle) != StringType::npos;\n}\n\n// This function implements either IsSubstring() or IsNotSubstring(),\n// depending on the value of the expected_to_be_substring parameter.\n// StringType here can be const char*, const wchar_t*, ::std::string,\n// or ::std::wstring.\ntemplate <typename StringType>\nAssertionResult IsSubstringImpl(\n    bool expected_to_be_substring,\n    const char* needle_expr, const char* haystack_expr,\n    const StringType& needle, const StringType& haystack) {\n  if (IsSubstringPred(needle, haystack) == expected_to_be_substring)\n    return AssertionSuccess();\n\n  const bool is_wide_string = sizeof(needle[0]) > 1;\n  const char* const begin_string_quote = is_wide_string ? \"L\\\"\" : \"\\\"\";\n  return AssertionFailure()\n      << \"Value of: \" << needle_expr << \"\\n\"\n      << \"  Actual: \" << begin_string_quote << needle << \"\\\"\\n\"\n      << \"Expected: \" << (expected_to_be_substring ? \"\" : \"not \")\n      << \"a substring of \" << haystack_expr << \"\\n\"\n      << \"Which is: \" << begin_string_quote << haystack << \"\\\"\";\n}\n\n}  // namespace\n\n// IsSubstring() and IsNotSubstring() check whether needle is a\n// substring of haystack (nullptr is considered a substring of itself\n// only), and return an appropriate error message when they fail.\n\nAssertionResult IsSubstring(\n    const char* needle_expr, const char* haystack_expr,\n    const char* needle, const char* haystack) {\n  return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack);\n}\n\nAssertionResult IsSubstring(\n    const char* needle_expr, const char* haystack_expr,\n    const wchar_t* needle, const wchar_t* haystack) {\n  return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack);\n}\n\nAssertionResult IsNotSubstring(\n    const char* needle_expr, const char* haystack_expr,\n    const char* needle, const char* haystack) {\n  return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack);\n}\n\nAssertionResult IsNotSubstring(\n    const char* needle_expr, const char* haystack_expr,\n    const wchar_t* needle, const wchar_t* haystack) {\n  return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack);\n}\n\nAssertionResult IsSubstring(\n    const char* needle_expr, const char* haystack_expr,\n    const ::std::string& needle, const ::std::string& haystack) {\n  return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack);\n}\n\nAssertionResult IsNotSubstring(\n    const char* needle_expr, const char* haystack_expr,\n    const ::std::string& needle, const ::std::string& haystack) {\n  return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack);\n}\n\n#if GTEST_HAS_STD_WSTRING\nAssertionResult IsSubstring(\n    const char* needle_expr, const char* haystack_expr,\n    const ::std::wstring& needle, const ::std::wstring& haystack) {\n  return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack);\n}\n\nAssertionResult IsNotSubstring(\n    const char* needle_expr, const char* haystack_expr,\n    const ::std::wstring& needle, const ::std::wstring& haystack) {\n  return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack);\n}\n#endif  // GTEST_HAS_STD_WSTRING\n\nnamespace internal {\n\n#if GTEST_OS_WINDOWS\n\nnamespace {\n\n// Helper function for IsHRESULT{SuccessFailure} predicates\nAssertionResult HRESULTFailureHelper(const char* expr,\n                                     const char* expected,\n                                     long hr) {  // NOLINT\n# if GTEST_OS_WINDOWS_MOBILE\n\n  // Windows CE doesn't support FormatMessage.\n  const char error_text[] = \"\";\n\n# else\n\n  // Looks up the human-readable system message for the HRESULT code\n  // and since we're not passing any params to FormatMessage, we don't\n  // want inserts expanded.\n  const DWORD kFlags = FORMAT_MESSAGE_FROM_SYSTEM |\n                       FORMAT_MESSAGE_IGNORE_INSERTS;\n  const DWORD kBufSize = 4096;\n  // Gets the system's human readable message string for this HRESULT.\n  char error_text[kBufSize] = { '\\0' };\n  DWORD message_length = ::FormatMessageA(kFlags,\n                                          0,  // no source, we're asking system\n                                          hr,  // the error\n                                          0,  // no line width restrictions\n                                          error_text,  // output buffer\n                                          kBufSize,  // buf size\n                                          nullptr);  // no arguments for inserts\n  // Trims tailing white space (FormatMessage leaves a trailing CR-LF)\n  for (; message_length && IsSpace(error_text[message_length - 1]);\n          --message_length) {\n    error_text[message_length - 1] = '\\0';\n  }\n\n# endif  // GTEST_OS_WINDOWS_MOBILE\n\n  const std::string error_hex(\"0x\" + String::FormatHexInt(hr));\n  return ::testing::AssertionFailure()\n      << \"Expected: \" << expr << \" \" << expected << \".\\n\"\n      << \"  Actual: \" << error_hex << \" \" << error_text << \"\\n\";\n}\n\n}  // namespace\n\nAssertionResult IsHRESULTSuccess(const char* expr, long hr) {  // NOLINT\n  if (SUCCEEDED(hr)) {\n    return AssertionSuccess();\n  }\n  return HRESULTFailureHelper(expr, \"succeeds\", hr);\n}\n\nAssertionResult IsHRESULTFailure(const char* expr, long hr) {  // NOLINT\n  if (FAILED(hr)) {\n    return AssertionSuccess();\n  }\n  return HRESULTFailureHelper(expr, \"fails\", hr);\n}\n\n#endif  // GTEST_OS_WINDOWS\n\n// Utility functions for encoding Unicode text (wide strings) in\n// UTF-8.\n\n// A Unicode code-point can have upto 21 bits, and is encoded in UTF-8\n// like this:\n//\n// Code-point length   Encoding\n//   0 -  7 bits       0xxxxxxx\n//   8 - 11 bits       110xxxxx 10xxxxxx\n//  12 - 16 bits       1110xxxx 10xxxxxx 10xxxxxx\n//  17 - 21 bits       11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n\n// The maximum code-point a one-byte UTF-8 sequence can represent.\nconst UInt32 kMaxCodePoint1 = (static_cast<UInt32>(1) <<  7) - 1;\n\n// The maximum code-point a two-byte UTF-8 sequence can represent.\nconst UInt32 kMaxCodePoint2 = (static_cast<UInt32>(1) << (5 + 6)) - 1;\n\n// The maximum code-point a three-byte UTF-8 sequence can represent.\nconst UInt32 kMaxCodePoint3 = (static_cast<UInt32>(1) << (4 + 2*6)) - 1;\n\n// The maximum code-point a four-byte UTF-8 sequence can represent.\nconst UInt32 kMaxCodePoint4 = (static_cast<UInt32>(1) << (3 + 3*6)) - 1;\n\n// Chops off the n lowest bits from a bit pattern.  Returns the n\n// lowest bits.  As a side effect, the original bit pattern will be\n// shifted to the right by n bits.\ninline UInt32 ChopLowBits(UInt32* bits, int n) {\n  const UInt32 low_bits = *bits & ((static_cast<UInt32>(1) << n) - 1);\n  *bits >>= n;\n  return low_bits;\n}\n\n// Converts a Unicode code point to a narrow string in UTF-8 encoding.\n// code_point parameter is of type UInt32 because wchar_t may not be\n// wide enough to contain a code point.\n// If the code_point is not a valid Unicode code point\n// (i.e. outside of Unicode range U+0 to U+10FFFF) it will be converted\n// to \"(Invalid Unicode 0xXXXXXXXX)\".\nstd::string CodePointToUtf8(UInt32 code_point) {\n  if (code_point > kMaxCodePoint4) {\n    return \"(Invalid Unicode 0x\" + String::FormatHexInt(code_point) + \")\";\n  }\n\n  char str[5];  // Big enough for the largest valid code point.\n  if (code_point <= kMaxCodePoint1) {\n    str[1] = '\\0';\n    str[0] = static_cast<char>(code_point);                          // 0xxxxxxx\n  } else if (code_point <= kMaxCodePoint2) {\n    str[2] = '\\0';\n    str[1] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6));  // 10xxxxxx\n    str[0] = static_cast<char>(0xC0 | code_point);                   // 110xxxxx\n  } else if (code_point <= kMaxCodePoint3) {\n    str[3] = '\\0';\n    str[2] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6));  // 10xxxxxx\n    str[1] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6));  // 10xxxxxx\n    str[0] = static_cast<char>(0xE0 | code_point);                   // 1110xxxx\n  } else {  // code_point <= kMaxCodePoint4\n    str[4] = '\\0';\n    str[3] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6));  // 10xxxxxx\n    str[2] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6));  // 10xxxxxx\n    str[1] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6));  // 10xxxxxx\n    str[0] = static_cast<char>(0xF0 | code_point);                   // 11110xxx\n  }\n  return str;\n}\n\n// The following two functions only make sense if the the system\n// uses UTF-16 for wide string encoding. All supported systems\n// with 16 bit wchar_t (Windows, Cygwin, Symbian OS) do use UTF-16.\n\n// Determines if the arguments constitute UTF-16 surrogate pair\n// and thus should be combined into a single Unicode code point\n// using CreateCodePointFromUtf16SurrogatePair.\ninline bool IsUtf16SurrogatePair(wchar_t first, wchar_t second) {\n  return sizeof(wchar_t) == 2 &&\n      (first & 0xFC00) == 0xD800 && (second & 0xFC00) == 0xDC00;\n}\n\n// Creates a Unicode code point from UTF16 surrogate pair.\ninline UInt32 CreateCodePointFromUtf16SurrogatePair(wchar_t first,\n                                                    wchar_t second) {\n  const UInt32 mask = (1 << 10) - 1;\n  return (sizeof(wchar_t) == 2) ?\n      (((first & mask) << 10) | (second & mask)) + 0x10000 :\n      // This function should not be called when the condition is\n      // false, but we provide a sensible default in case it is.\n      static_cast<UInt32>(first);\n}\n\n// Converts a wide string to a narrow string in UTF-8 encoding.\n// The wide string is assumed to have the following encoding:\n//   UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin, Symbian OS)\n//   UTF-32 if sizeof(wchar_t) == 4 (on Linux)\n// Parameter str points to a null-terminated wide string.\n// Parameter num_chars may additionally limit the number\n// of wchar_t characters processed. -1 is used when the entire string\n// should be processed.\n// If the string contains code points that are not valid Unicode code points\n// (i.e. outside of Unicode range U+0 to U+10FFFF) they will be output\n// as '(Invalid Unicode 0xXXXXXXXX)'. If the string is in UTF16 encoding\n// and contains invalid UTF-16 surrogate pairs, values in those pairs\n// will be encoded as individual Unicode characters from Basic Normal Plane.\nstd::string WideStringToUtf8(const wchar_t* str, int num_chars) {\n  if (num_chars == -1)\n    num_chars = static_cast<int>(wcslen(str));\n\n  ::std::stringstream stream;\n  for (int i = 0; i < num_chars; ++i) {\n    UInt32 unicode_code_point;\n\n    if (str[i] == L'\\0') {\n      break;\n    } else if (i + 1 < num_chars && IsUtf16SurrogatePair(str[i], str[i + 1])) {\n      unicode_code_point = CreateCodePointFromUtf16SurrogatePair(str[i],\n                                                                 str[i + 1]);\n      i++;\n    } else {\n      unicode_code_point = static_cast<UInt32>(str[i]);\n    }\n\n    stream << CodePointToUtf8(unicode_code_point);\n  }\n  return StringStreamToString(&stream);\n}\n\n// Converts a wide C string to an std::string using the UTF-8 encoding.\n// nullptr will be converted to \"(null)\".\nstd::string String::ShowWideCString(const wchar_t * wide_c_str) {\n  if (wide_c_str == nullptr)  return \"(null)\";\n\n  return internal::WideStringToUtf8(wide_c_str, -1);\n}\n\n// Compares two wide C strings.  Returns true iff they have the same\n// content.\n//\n// Unlike wcscmp(), this function can handle null argument(s).  A null\n// C string is considered different to any non-null C string,\n// including the empty string.\nbool String::WideCStringEquals(const wchar_t * lhs, const wchar_t * rhs) {\n  if (lhs == nullptr) return rhs == nullptr;\n\n  if (rhs == nullptr) return false;\n\n  return wcscmp(lhs, rhs) == 0;\n}\n\n// Helper function for *_STREQ on wide strings.\nAssertionResult CmpHelperSTREQ(const char* expected_expression,\n                               const char* actual_expression,\n                               const wchar_t* expected,\n                               const wchar_t* actual) {\n  if (String::WideCStringEquals(expected, actual)) {\n    return AssertionSuccess();\n  }\n\n  return EqFailure(expected_expression,\n                   actual_expression,\n                   PrintToString(expected),\n                   PrintToString(actual),\n                   false);\n}\n\n// Helper function for *_STRNE on wide strings.\nAssertionResult CmpHelperSTRNE(const char* s1_expression,\n                               const char* s2_expression,\n                               const wchar_t* s1,\n                               const wchar_t* s2) {\n  if (!String::WideCStringEquals(s1, s2)) {\n    return AssertionSuccess();\n  }\n\n  return AssertionFailure() << \"  Expected: (\" << s1_expression << \") != (\"\n                            << s2_expression << \"), Actual: \"\n                            << PrintToString(s1)\n                            << \" vs \" << PrintToString(s2);\n}\n\n// Compares two C strings, ignoring case.  Returns true iff they have\n// the same content.\n//\n// Unlike strcasecmp(), this function can handle null argument(s).  A\n// null C string is considered different to any non-null C string,\n// including the empty string.\nbool String::CaseInsensitiveCStringEquals(const char * lhs, const char * rhs) {\n  if (lhs == nullptr)\n    return rhs == nullptr;\n  if (rhs == nullptr)\n    return false;\n  return posix::StrCaseCmp(lhs, rhs) == 0;\n}\n\n  // Compares two wide C strings, ignoring case.  Returns true iff they\n  // have the same content.\n  //\n  // Unlike wcscasecmp(), this function can handle null argument(s).\n  // A null C string is considered different to any non-null wide C string,\n  // including the empty string.\n  // NB: The implementations on different platforms slightly differ.\n  // On windows, this method uses _wcsicmp which compares according to LC_CTYPE\n  // environment variable. On GNU platform this method uses wcscasecmp\n  // which compares according to LC_CTYPE category of the current locale.\n  // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the\n  // current locale.\nbool String::CaseInsensitiveWideCStringEquals(const wchar_t* lhs,\n                                              const wchar_t* rhs) {\n  if (lhs == nullptr) return rhs == nullptr;\n\n  if (rhs == nullptr) return false;\n\n#if GTEST_OS_WINDOWS\n  return _wcsicmp(lhs, rhs) == 0;\n#elif GTEST_OS_LINUX && !GTEST_OS_LINUX_ANDROID\n  return wcscasecmp(lhs, rhs) == 0;\n#else\n  // Android, Mac OS X and Cygwin don't define wcscasecmp.\n  // Other unknown OSes may not define it either.\n  wint_t left, right;\n  do {\n    left = towlower(*lhs++);\n    right = towlower(*rhs++);\n  } while (left && left == right);\n  return left == right;\n#endif  // OS selector\n}\n\n// Returns true iff str ends with the given suffix, ignoring case.\n// Any string is considered to end with an empty suffix.\nbool String::EndsWithCaseInsensitive(\n    const std::string& str, const std::string& suffix) {\n  const size_t str_len = str.length();\n  const size_t suffix_len = suffix.length();\n  return (str_len >= suffix_len) &&\n         CaseInsensitiveCStringEquals(str.c_str() + str_len - suffix_len,\n                                      suffix.c_str());\n}\n\n// Formats an int value as \"%02d\".\nstd::string String::FormatIntWidth2(int value) {\n  std::stringstream ss;\n  ss << std::setfill('0') << std::setw(2) << value;\n  return ss.str();\n}\n\n// Formats an int value as \"%X\".\nstd::string String::FormatHexInt(int value) {\n  std::stringstream ss;\n  ss << std::hex << std::uppercase << value;\n  return ss.str();\n}\n\n// Formats a byte as \"%02X\".\nstd::string String::FormatByte(unsigned char value) {\n  std::stringstream ss;\n  ss << std::setfill('0') << std::setw(2) << std::hex << std::uppercase\n     << static_cast<unsigned int>(value);\n  return ss.str();\n}\n\n// Converts the buffer in a stringstream to an std::string, converting NUL\n// bytes to \"\\\\0\" along the way.\nstd::string StringStreamToString(::std::stringstream* ss) {\n  const ::std::string& str = ss->str();\n  const char* const start = str.c_str();\n  const char* const end = start + str.length();\n\n  std::string result;\n  result.reserve(2 * (end - start));\n  for (const char* ch = start; ch != end; ++ch) {\n    if (*ch == '\\0') {\n      result += \"\\\\0\";  // Replaces NUL with \"\\\\0\";\n    } else {\n      result += *ch;\n    }\n  }\n\n  return result;\n}\n\n// Appends the user-supplied message to the Google-Test-generated message.\nstd::string AppendUserMessage(const std::string& gtest_msg,\n                              const Message& user_msg) {\n  // Appends the user message if it's non-empty.\n  const std::string user_msg_string = user_msg.GetString();\n  if (user_msg_string.empty()) {\n    return gtest_msg;\n  }\n\n  return gtest_msg + \"\\n\" + user_msg_string;\n}\n\n}  // namespace internal\n\n// class TestResult\n\n// Creates an empty TestResult.\nTestResult::TestResult()\n    : everHadResults_(false),\n      death_test_count_(0),\n      elapsed_time_(0) {\n    // empty\n}\n\n// D'tor.\nTestResult::~TestResult() {\n    // empty\n}\n\n// Returns the i-th test part result among all the results. i can\n// range from 0 to total_part_count() - 1. If i is not in that range,\n// aborts the program.\nconst TestPartResult& TestResult::GetTestPartResult(int i) const {\n  if (i < 0 || i >= total_part_count())\n    internal::posix::Abort();\n  return test_part_results_.at(i);\n}\n\n// Returns the i-th test property. i can range from 0 to\n// test_property_count() - 1. If i is not in that range, aborts the\n// program.\nconst TestProperty& TestResult::GetTestProperty(int i) const {\n  if (i < 0 || i >= test_property_count())\n    internal::posix::Abort();\n  return test_properties_.at(i);\n}\n\n// Clears the test part results.\nvoid TestResult::ClearTestPartResults() {\n  test_part_results_.clear();\n}\n\n// Adds a test part result to the list.\nvoid TestResult::AddTestPartResult(const TestPartResult& test_part_result) {\n  test_part_results_.push_back(test_part_result);\n  everHadResults_ = true;\n}\n\n// Adds a test property to the list. If a property with the same key as the\n// supplied property is already represented, the value of this test_property\n// replaces the old value for that key.\nvoid TestResult::RecordProperty(const std::string& xml_element,\n                                const TestProperty& test_property) {\n  if (!ValidateTestProperty(xml_element, test_property)) {\n    return;\n  }\n  internal::MutexLock lock(&test_properites_mutex_);\n  const std::vector<TestProperty>::iterator property_with_matching_key =\n      std::find_if(test_properties_.begin(), test_properties_.end(),\n                   internal::TestPropertyKeyIs(test_property.key()));\n  if (property_with_matching_key == test_properties_.end()) {\n    test_properties_.push_back(test_property);\n    return;\n  }\n  property_with_matching_key->SetValue(test_property.value());\n}\n\n// The list of reserved attributes used in the <testsuites> element of XML\n// output.\nstatic const char* const kReservedTestSuitesAttributes[] = {\n  \"disabled\",\n  \"errors\",\n  \"failures\",\n  \"name\",\n  \"random_seed\",\n  \"tests\",\n  \"time\",\n  \"timestamp\"\n};\n\n// The list of reserved attributes used in the <testsuite> element of XML\n// output.\nstatic const char* const kReservedTestSuiteAttributes[] = {\n  \"disabled\",\n  \"errors\",\n  \"failures\",\n  \"name\",\n  \"tests\",\n  \"time\"\n};\n\n// The list of reserved attributes used in the <testcase> element of XML output.\nstatic const char* const kReservedTestCaseAttributes[] = {\n  \"classname\",\n  \"name\",\n  \"status\",\n  \"time\",\n  \"type_param\",\n  \"value_param\"\n};\n\ntemplate <int kSize>\nstd::vector<std::string> ArrayAsVector(const char* const (&array)[kSize]) {\n  return std::vector<std::string>(array, array + kSize);\n}\n\nstatic std::vector<std::string> GetReservedAttributesForElement(\n    const std::string& xml_element) {\n  if (xml_element == \"testsuites\") {\n    return ArrayAsVector(kReservedTestSuitesAttributes);\n  } else if (xml_element == \"testsuite\") {\n    return ArrayAsVector(kReservedTestSuiteAttributes);\n  } else if (xml_element == \"testcase\") {\n    return ArrayAsVector(kReservedTestCaseAttributes);\n  } else {\n    GTEST_CHECK_(false) << \"Unrecognized xml_element provided: \" << xml_element;\n  }\n  // This code is unreachable but some compilers may not realizes that.\n  return std::vector<std::string>();\n}\n\nstatic std::string FormatWordList(const std::vector<std::string>& words) {\n  Message word_list;\n  for (size_t i = 0; i < words.size(); ++i) {\n    if (i > 0 && words.size() > 2) {\n      word_list << \", \";\n    }\n    if (i == words.size() - 1) {\n      word_list << \"and \";\n    }\n    word_list << \"'\" << words[i] << \"'\";\n  }\n  return word_list.GetString();\n}\n\nbool ValidateTestPropertyName(const std::string& property_name,\n                              const std::vector<std::string>& reserved_names) {\n  if (std::find(reserved_names.begin(), reserved_names.end(), property_name) !=\n          reserved_names.end()) {\n    ADD_FAILURE() << \"Reserved key used in RecordProperty(): \" << property_name\n                  << \" (\" << FormatWordList(reserved_names)\n                  << \" are reserved by \" << GTEST_NAME_ << \")\";\n    return false;\n  }\n  return true;\n}\n\n// Adds a failure if the key is a reserved attribute of the element named\n// xml_element.  Returns true if the property is valid.\nbool TestResult::ValidateTestProperty(const std::string& xml_element,\n                                      const TestProperty& test_property) {\n  return ValidateTestPropertyName(test_property.key(),\n                                  GetReservedAttributesForElement(xml_element));\n}\n\n// Clears the object.\nvoid TestResult::Clear() {\n  test_part_results_.clear();\n  test_properties_.clear();\n  death_test_count_ = 0;\n  elapsed_time_ = 0;\n}\n\n// Returns true iff the test failed.\nbool TestResult::Failed() const {\n  for (int i = 0; i < total_part_count(); ++i) {\n    if (GetTestPartResult(i).failed())\n      return true;\n  }\n  return false;\n}\n\n// Returns true iff the test part fatally failed.\nstatic bool TestPartFatallyFailed(const TestPartResult& result) {\n  return result.fatally_failed();\n}\n\n// Returns true iff the test fatally failed.\nbool TestResult::HasFatalFailure() const {\n  return CountIf(test_part_results_, TestPartFatallyFailed) > 0;\n}\n\n// Returns true iff the test part non-fatally failed.\nstatic bool TestPartNonfatallyFailed(const TestPartResult& result) {\n  return result.nonfatally_failed();\n}\n\n// Returns true iff the test has a non-fatal failure.\nbool TestResult::HasNonfatalFailure() const {\n  return CountIf(test_part_results_, TestPartNonfatallyFailed) > 0;\n}\n\n// Gets the number of all test parts.  This is the sum of the number\n// of successful test parts and the number of failed test parts.\nint TestResult::total_part_count() const {\n  return static_cast<int>(test_part_results_.size());\n}\n\n// Returns the number of the test properties.\nint TestResult::test_property_count() const {\n  return static_cast<int>(test_properties_.size());\n}\n\n// class Test\n\n// Creates a Test object.\n\n// The c'tor saves the values of all Google Test flags.\nTest::Test()\n    : gtest_flag_saver_(new internal::GTestFlagSaver) {\n}\n\n// The d'tor restores the values of all Google Test flags.\nTest::~Test() {\n  delete gtest_flag_saver_;\n}\n\n// Sets up the test fixture.\n//\n// A sub-class may override this.\nvoid Test::SetUp() {\n}\n\n// Tears down the test fixture.\n//\n// A sub-class may override this.\nvoid Test::TearDown() {\n}\n\n// Allows user supplied key value pairs to be recorded for later output.\nvoid Test::RecordProperty(const std::string& key, const std::string& value) {\n  UnitTest::GetInstance()->RecordProperty(key, value);\n}\n\n// Allows user supplied key value pairs to be recorded for later output.\nvoid Test::RecordProperty(const std::string& key, int value) {\n  Message value_message;\n  value_message << value;\n  RecordProperty(key, value_message.GetString().c_str());\n}\n\nnamespace internal {\n\nvoid ReportFailureInUnknownLocation(TestPartResult::Type result_type,\n                                    const std::string& message) {\n  // This function is a friend of UnitTest and as such has access to\n  // AddTestPartResult.\n  UnitTest::GetInstance()->AddTestPartResult(\n      result_type,\n      nullptr,  // No info about the source file where the exception occurred.\n      -1,    // We have no info on which line caused the exception.\n      message,\n      \"\");   // No stack trace, either.\n}\n\n}  // namespace internal\n\n// Google Test requires all tests in the same test case to use the same test\n// fixture class.  This function checks if the current test has the\n// same fixture class as the first test in the current test case.  If\n// yes, it returns true; otherwise it generates a Google Test failure and\n// returns false.\nbool Test::HasSameFixtureClass() {\n  internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();\n  const TestCase* const test_case = impl->current_test_case();\n\n  // Info about the first test in the current test case.\n  const TestInfo* const first_test_info = test_case->test_info_list()[0];\n  const internal::TypeId first_fixture_id = first_test_info->fixture_class_id_;\n  const char* const first_test_name = first_test_info->name();\n\n  // Info about the current test.\n  const TestInfo* const this_test_info = impl->current_test_info();\n  const internal::TypeId this_fixture_id = this_test_info->fixture_class_id_;\n  const char* const this_test_name = this_test_info->name();\n\n  if (this_fixture_id != first_fixture_id) {\n    // Is the first test defined using TEST?\n    const bool first_is_TEST = first_fixture_id == internal::GetTestTypeId();\n    // Is this test defined using TEST?\n    const bool this_is_TEST = this_fixture_id == internal::GetTestTypeId();\n\n    if (first_is_TEST || this_is_TEST) {\n      // The user mixed TEST and TEST_F in this test case - we'll tell\n      // him/her how to fix it.\n\n      // Gets the name of the TEST and the name of the TEST_F.  Note\n      // that first_is_TEST and this_is_TEST cannot both be true, as\n      // the fixture IDs are different for the two tests.\n      const char* const TEST_name =\n          first_is_TEST ? first_test_name : this_test_name;\n      const char* const TEST_F_name =\n          first_is_TEST ? this_test_name : first_test_name;\n\n      ADD_FAILURE()\n          << \"All tests in the same test case must use the same test fixture\\n\"\n          << \"class, so mixing TEST_F and TEST in the same test case is\\n\"\n          << \"illegal.  In test case \" << this_test_info->test_case_name()\n          << \",\\n\"\n          << \"test \" << TEST_F_name << \" is defined using TEST_F but\\n\"\n          << \"test \" << TEST_name << \" is defined using TEST.  You probably\\n\"\n          << \"want to change the TEST to TEST_F or move it to another test\\n\"\n          << \"case.\";\n    } else {\n      // The user defined two fixture classes with the same name in\n      // two namespaces - we'll tell him/her how to fix it.\n      ADD_FAILURE()\n          << \"All tests in the same test case must use the same test fixture\\n\"\n          << \"class.  However, in test case \"\n          << this_test_info->test_case_name() << \",\\n\"\n          << \"you defined test \" << first_test_name\n          << \" and test \" << this_test_name << \"\\n\"\n          << \"using two different test fixture classes.  This can happen if\\n\"\n          << \"the two classes are from different namespaces or translation\\n\"\n          << \"units and have the same name.  You should probably rename one\\n\"\n          << \"of the classes to put the tests into different test cases.\";\n    }\n    return false;\n  }\n\n  return true;\n}\n\n#if GTEST_HAS_SEH\n\n// Adds an \"exception thrown\" fatal failure to the current test.  This\n// function returns its result via an output parameter pointer because VC++\n// prohibits creation of objects with destructors on stack in functions\n// using __try (see error C2712).\nstatic std::string* FormatSehExceptionMessage(DWORD exception_code,\n                                              const char* location) {\n  Message message;\n  message << \"SEH exception with code 0x\" << std::setbase(16) <<\n    exception_code << std::setbase(10) << \" thrown in \" << location << \".\";\n\n  return new std::string(message.GetString());\n}\n\n#endif  // GTEST_HAS_SEH\n\nnamespace internal {\n\n#if GTEST_HAS_EXCEPTIONS\n\n// Adds an \"exception thrown\" fatal failure to the current test.\nstatic std::string FormatCxxExceptionMessage(const char* description,\n                                             const char* location) {\n  Message message;\n  if (description != nullptr) {\n    message << \"C++ exception with description \\\"\" << description << \"\\\"\";\n  } else {\n    message << \"Unknown C++ exception\";\n  }\n  message << \" thrown in \" << location << \".\";\n\n  return message.GetString();\n}\n\nstatic std::string PrintTestPartResultToString(\n    const TestPartResult& test_part_result);\n\nGoogleTestFailureException::GoogleTestFailureException(\n    const TestPartResult& failure)\n    : ::std::runtime_error(PrintTestPartResultToString(failure).c_str()) {}\n\n#endif  // GTEST_HAS_EXCEPTIONS\n\n// We put these helper functions in the internal namespace as IBM's xlC\n// compiler rejects the code if they were declared static.\n\n// Runs the given method and handles SEH exceptions it throws, when\n// SEH is supported; returns the 0-value for type Result in case of an\n// SEH exception.  (Microsoft compilers cannot handle SEH and C++\n// exceptions in the same function.  Therefore, we provide a separate\n// wrapper function for handling SEH exceptions.)\ntemplate <class T, typename Result>\nResult HandleSehExceptionsInMethodIfSupported(\n    T* object, Result (T::*method)(), const char* location) {\n#if GTEST_HAS_SEH\n  __try {\n    return (object->*method)();\n  } __except (internal::UnitTestOptions::GTestShouldProcessSEH(  // NOLINT\n      GetExceptionCode())) {\n    // We create the exception message on the heap because VC++ prohibits\n    // creation of objects with destructors on stack in functions using __try\n    // (see error C2712).\n    std::string* exception_message = FormatSehExceptionMessage(\n        GetExceptionCode(), location);\n    internal::ReportFailureInUnknownLocation(TestPartResult::kFatalFailure,\n                                             *exception_message);\n    delete exception_message;\n    return static_cast<Result>(0);\n  }\n#else\n  (void)location;\n  return (object->*method)();\n#endif  // GTEST_HAS_SEH\n}\n\n// Runs the given method and catches and reports C++ and/or SEH-style\n// exceptions, if they are supported; returns the 0-value for type\n// Result in case of an SEH exception.\ntemplate <class T, typename Result>\nResult HandleExceptionsInMethodIfSupported(\n    T* object, Result (T::*method)(), const char* location) {\n  // NOTE: The user code can affect the way in which Google Test handles\n  // exceptions by setting GTEST_FLAG(catch_exceptions), but only before\n  // RUN_ALL_TESTS() starts. It is technically possible to check the flag\n  // after the exception is caught and either report or re-throw the\n  // exception based on the flag's value:\n  //\n  // try {\n  //   // Perform the test method.\n  // } catch (...) {\n  //   if (GTEST_FLAG(catch_exceptions))\n  //     // Report the exception as failure.\n  //   else\n  //     throw;  // Re-throws the original exception.\n  // }\n  //\n  // However, the purpose of this flag is to allow the program to drop into\n  // the debugger when the exception is thrown. On most platforms, once the\n  // control enters the catch block, the exception origin information is\n  // lost and the debugger will stop the program at the point of the\n  // re-throw in this function -- instead of at the point of the original\n  // throw statement in the code under test.  For this reason, we perform\n  // the check early, sacrificing the ability to affect Google Test's\n  // exception handling in the method where the exception is thrown.\n  if (internal::GetUnitTestImpl()->catch_exceptions()) {\n#if GTEST_HAS_EXCEPTIONS\n    try {\n      return HandleSehExceptionsInMethodIfSupported(object, method, location);\n    } catch (const internal::GoogleTestFailureException&) {  // NOLINT\n      // This exception type can only be thrown by a failed Google\n      // Test assertion with the intention of letting another testing\n      // framework catch it.  Therefore we just re-throw it.\n      throw;\n    } catch (const std::exception& e) {  // NOLINT\n      internal::ReportFailureInUnknownLocation(\n          TestPartResult::kFatalFailure,\n          FormatCxxExceptionMessage(e.what(), location));\n    } catch (...) {  // NOLINT\n      internal::ReportFailureInUnknownLocation(\n          TestPartResult::kFatalFailure,\n          FormatCxxExceptionMessage(nullptr, location));\n    }\n    return static_cast<Result>(nullptr);\n#else\n    return HandleSehExceptionsInMethodIfSupported(object, method, location);\n#endif  // GTEST_HAS_EXCEPTIONS\n  } else {\n    return (object->*method)();\n  }\n}\n\n}  // namespace internal\n\n// Runs the test and updates the test result.\nvoid Test::Run() {\n  if (!HasSameFixtureClass()) return;\n\n  internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();\n  impl->os_stack_trace_getter()->UponLeavingGTest();\n  internal::HandleExceptionsInMethodIfSupported(this, &Test::SetUp, \"SetUp()\");\n\n  // We will run the test only if SetUp() was successful.\n  if (!HasFatalFailure()) {\n    impl->os_stack_trace_getter()->UponLeavingGTest();\n    internal::HandleExceptionsInMethodIfSupported(\n        this, &Test::TestBody, \"the test body\");\n  }\n\n  // However, we want to clean up as much as possible.  Hence we will\n  // always call TearDown(), even if SetUp() or the test body has\n  // failed.\n  impl->os_stack_trace_getter()->UponLeavingGTest();\n  internal::HandleExceptionsInMethodIfSupported(\n      this, &Test::TearDown, \"TearDown()\");\n}\n\n// Returns true iff the current test has a fatal failure.\nbool Test::HasFatalFailure() {\n  return internal::GetUnitTestImpl()->current_test_result()->HasFatalFailure();\n}\n\n// Returns true iff the current test has a non-fatal failure.\nbool Test::HasNonfatalFailure() {\n  return internal::GetUnitTestImpl()->current_test_result()->\n      HasNonfatalFailure();\n}\n\n// class TestInfo\n\n// Constructs a TestInfo object. It assumes ownership of the test factory\n// object.\nTestInfo::TestInfo(const std::string& a_test_case_name,\n                   const std::string& a_name,\n                   const char* a_type_param,\n                   const char* a_value_param,\n                   internal::TypeId fixture_class_id,\n                   internal::TestFactoryBase* factory)\n    : test_case_name_(a_test_case_name),\n      name_(a_name),\n      type_param_(a_type_param ? new std::string(a_type_param) : nullptr),\n      value_param_(a_value_param ? new std::string(a_value_param) : nullptr),\n      fixture_class_id_(fixture_class_id),\n      should_run_(false),\n      is_disabled_(false),\n      matches_filter_(false),\n      factory_(factory),\n      result_() {}\n\n// Destructs a TestInfo object.\nTestInfo::~TestInfo() { delete factory_; }\n\nnamespace internal {\n\n// Creates a new TestInfo object and registers it with Google Test;\n// returns the created object.\n//\n// Arguments:\n//\n//   test_case_name:   name of the test case\n//   name:             name of the test\n//   type_param:       the name of the test's type parameter, or nullptr if\n//                     this is not a typed or a type-parameterized test.\n//   value_param:      text representation of the test's value parameter,\n//                     or nullptr if this is not a value-parameterized test.\n//   fixture_class_id: ID of the test fixture class\n//   set_up_tc:        pointer to the function that sets up the test case\n//   tear_down_tc:     pointer to the function that tears down the test case\n//   factory:          pointer to the factory that creates a test object.\n//                     The newly created TestInfo instance will assume\n//                     ownership of the factory object.\nTestInfo* MakeAndRegisterTestInfo(\n    const char* test_case_name,\n    const char* name,\n    const char* type_param,\n    const char* value_param,\n    TypeId fixture_class_id,\n    SetUpTestCaseFunc set_up_tc,\n    TearDownTestCaseFunc tear_down_tc,\n    TestFactoryBase* factory) {\n  TestInfo* const test_info =\n      new TestInfo(test_case_name, name, type_param, value_param,\n                   fixture_class_id, factory);\n  GetUnitTestImpl()->AddTestInfo(set_up_tc, tear_down_tc, test_info);\n  stanfordcpplib::autograder::AutograderTest::addTestToList(test_case_name, name);   // register test in list of names\n  return test_info;\n}\n\n#if GTEST_HAS_PARAM_TEST\nvoid ReportInvalidTestCaseType(const char* test_case_name,\n                               const char* file, int line) {\n  Message errors;\n  errors\n      << \"Attempted redefinition of test case \" << test_case_name << \".\\n\"\n      << \"All tests in the same test case must use the same test fixture\\n\"\n      << \"class.  However, in test case \" << test_case_name << \", you tried\\n\"\n      << \"to define a test using a fixture class different from the one\\n\"\n      << \"used earlier. This can happen if the two fixture classes are\\n\"\n      << \"from different namespaces and have the same name. You should\\n\"\n      << \"probably rename one of the classes to put the tests into different\\n\"\n      << \"test cases.\";\n\n  std::cerr << FormatFileLocation(file, line) << \" \" << errors.GetString();\n}\n#endif  // GTEST_HAS_PARAM_TEST\n\n}  // namespace internal\n\nnamespace {\n\n// A predicate that checks the test name of a TestInfo against a known\n// value.\n//\n// This is used for implementation of the TestCase class only.  We put\n// it in the anonymous namespace to prevent polluting the outer\n// namespace.\n//\n// TestNameIs is copyable.\nclass TestNameIs {\n public:\n  // Constructor.\n  //\n  // TestNameIs has NO default constructor.\n  explicit TestNameIs(const char* name)\n      : name_(name) {}\n\n  // Returns true iff the test name of test_info matches name_.\n  bool operator()(const TestInfo * test_info) const {\n    return test_info && test_info->name() == name_;\n  }\n\n private:\n  std::string name_;\n};\n\n}  // namespace\n\nnamespace internal {\n\n// This method expands all parameterized tests registered with macros TEST_P\n// and INSTANTIATE_TEST_CASE_P into regular tests and registers those.\n// This will be done just once during the program runtime.\nvoid UnitTestImpl::RegisterParameterizedTests() {\n#if GTEST_HAS_PARAM_TEST\n  if (!parameterized_tests_registered_) {\n    parameterized_test_registry_.RegisterTests();\n    parameterized_tests_registered_ = true;\n  }\n#endif\n}\n\n}  // namespace internal\n\n// Creates the test object, runs it, records its result, and then\n// deletes it.\nvoid TestInfo::Run() {\n  if (!should_run_) return;\n\n  // Tells UnitTest where to store test result.\n  internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();\n  impl->set_current_test_info(this);\n\n  TestEventListener* repeater = UnitTest::GetInstance()->listeners().repeater();\n\n  // Notifies the unit test event listeners that a test is about to start.\n  repeater->OnTestStart(*this);\n\n  const TimeInMillis start = internal::GetTimeInMillis();\n\n  impl->os_stack_trace_getter()->UponLeavingGTest();\n\n  // Creates the test object.\n  Test* const test = internal::HandleExceptionsInMethodIfSupported(\n      factory_, &internal::TestFactoryBase::CreateTest,\n      \"the test fixture's constructor\");\n\n  // Runs the test only if the test object was created and its\n  // constructor didn't generate a fatal failure.\n  if ((test != nullptr) && !Test::HasFatalFailure()) {\n    // This doesn't throw as all user code that can throw are wrapped into\n    // exception handling code.\n    test->Run();\n  }\n\n  // Deletes the test object.\n  impl->os_stack_trace_getter()->UponLeavingGTest();\n  internal::HandleExceptionsInMethodIfSupported(\n      test, &Test::DeleteSelf_, \"the test fixture's destructor\");\n\n  result_.set_elapsed_time(internal::GetTimeInMillis() - start);\n\n  // Notifies the unit test event listener that a test has just finished.\n  repeater->OnTestEnd(*this);\n\n  // Tells UnitTest to stop associating assertion results to this\n  // test.\n  impl->set_current_test_info(nullptr);\n}\n\n// class TestCase\n\n// Gets the number of successful tests in this test case.\nint TestCase::successful_test_count() const {\n  return CountIf(test_info_list_, TestPassed);\n}\n\n// Gets the number of failed tests in this test case.\nint TestCase::failed_test_count() const {\n  return CountIf(test_info_list_, TestFailed);\n}\n\n// Gets the number of disabled tests that will be reported in the XML report.\nint TestCase::reportable_disabled_test_count() const {\n  return CountIf(test_info_list_, TestReportableDisabled);\n}\n\n// Gets the number of disabled tests in this test case.\nint TestCase::disabled_test_count() const {\n  return CountIf(test_info_list_, TestDisabled);\n}\n\n// Gets the number of tests to be printed in the XML report.\nint TestCase::reportable_test_count() const {\n  return CountIf(test_info_list_, TestReportable);\n}\n\n// Get the number of tests in this test case that should run.\nint TestCase::test_to_run_count() const {\n  return CountIf(test_info_list_, ShouldRunTest);\n}\n\n// Gets the number of all tests.\nint TestCase::total_test_count() const {\n  return static_cast<int>(test_info_list_.size());\n}\n\n// Creates a TestCase with the given name.\n//\n// Arguments:\n//\n//   name:         name of the test case\n//   a_type_param: the name of the test case's type parameter, or nullptr if\n//                 this is not a typed or a type-parameterized test case.\n//   set_up_tc:    pointer to the function that sets up the test case\n//   tear_down_tc: pointer to the function that tears down the test case\nTestCase::TestCase(const char* a_name, const char* a_type_param,\n                   Test::SetUpTestCaseFunc set_up_tc,\n                   Test::TearDownTestCaseFunc tear_down_tc)\n    : name_(a_name),\n      type_param_(a_type_param ? new std::string(a_type_param) : nullptr),\n      set_up_tc_(set_up_tc),\n      tear_down_tc_(tear_down_tc),\n      should_run_(false),\n      elapsed_time_(0) {\n}\n\n// Destructor of TestCase.\nTestCase::~TestCase() {\n  // Deletes every Test in the collection.\n  ForEach(test_info_list_, internal::Delete<TestInfo>);\n}\n\n// Returns the i-th test among all the tests. i can range from 0 to\n// total_test_count() - 1. If i is not in that range, returns nullptr.\nconst TestInfo* TestCase::GetTestInfo(int i) const {\n  const int index = GetElementOr(test_indices_, i, -1);\n  return index < 0 ? nullptr : test_info_list_[index];\n}\n\n// Returns the i-th test among all the tests. i can range from 0 to\n// total_test_count() - 1. If i is not in that range, returns nullptr.\nTestInfo* TestCase::GetMutableTestInfo(int i) {\n  const int index = GetElementOr(test_indices_, i, -1);\n  return index < 0 ? nullptr : test_info_list_[index];\n}\n\n// Adds a test to this test case.  Will delete the test upon\n// destruction of the TestCase object.\nvoid TestCase::AddTestInfo(TestInfo * test_info) {\n  test_info_list_.push_back(test_info);\n  test_indices_.push_back(static_cast<int>(test_indices_.size()));\n}\n\n// Runs every test in this TestCase.\nvoid TestCase::Run() {\n  if (!should_run_) return;\n\n  internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();\n  impl->set_current_test_case(this);\n\n  TestEventListener* repeater = UnitTest::GetInstance()->listeners().repeater();\n\n  repeater->OnTestCaseStart(*this);\n  impl->os_stack_trace_getter()->UponLeavingGTest();\n  internal::HandleExceptionsInMethodIfSupported(\n      this, &TestCase::RunSetUpTestCase, \"SetUpTestCase()\");\n\n  const internal::TimeInMillis start = internal::GetTimeInMillis();\n  for (int i = 0; i < total_test_count(); i++) {\n    GetMutableTestInfo(i)->Run();\n  }\n  elapsed_time_ = internal::GetTimeInMillis() - start;\n\n  impl->os_stack_trace_getter()->UponLeavingGTest();\n  internal::HandleExceptionsInMethodIfSupported(\n      this, &TestCase::RunTearDownTestCase, \"TearDownTestCase()\");\n\n  repeater->OnTestCaseEnd(*this);\n  impl->set_current_test_case(nullptr);\n}\n\n// Clears the results of all tests in this test case.\nvoid TestCase::ClearResult() {\n  ad_hoc_test_result_.Clear();\n  ForEach(test_info_list_, TestInfo::ClearTestResult);\n}\n\n// Shuffles the tests in this test case.\nvoid TestCase::ShuffleTests(internal::Random* random) {\n  Shuffle(random, &test_indices_);\n}\n\n// Restores the test order to before the first shuffle.\nvoid TestCase::UnshuffleTests() {\n  for (size_t i = 0; i < test_indices_.size(); i++) {\n    test_indices_[i] = static_cast<int>(i);\n  }\n}\n\n// Formats a countable noun.  Depending on its quantity, either the\n// singular form or the plural form is used. e.g.\n//\n// FormatCountableNoun(1, \"formula\", \"formuli\") returns \"1 formula\".\n// FormatCountableNoun(5, \"book\", \"books\") returns \"5 books\".\nstatic std::string FormatCountableNoun(int count,\n                                       const char * singular_form,\n                                       const char * plural_form) {\n  return internal::StreamableToString(count) + \" \" +\n      (count == 1 ? singular_form : plural_form);\n}\n\n// Formats the count of tests.\nstatic std::string FormatTestCount(int test_count) {\n  return FormatCountableNoun(test_count, \"test\", \"tests\");\n}\n\n// Formats the count of test cases.\nstatic std::string FormatTestCaseCount(int test_case_count) {\n  return FormatCountableNoun(test_case_count, \"test case\", \"test cases\");\n}\n\n// Converts a TestPartResult::Type enum to human-friendly string\n// representation.  Both kNonFatalFailure and kFatalFailure are translated\n// to \"Failure\", as the user usually doesn't care about the difference\n// between the two when viewing the test result.\nstatic const char * TestPartResultTypeToString(TestPartResult::Type type) {\n  switch (type) {\n    case TestPartResult::kSuccess:\n      return \"Success\";\n\n    case TestPartResult::kNonFatalFailure:\n    case TestPartResult::kFatalFailure:\n#ifdef _MSC_VER\n      return \"error: \";\n#else\n      return \"Failure\\n\";\n#endif\n    default:\n      return \"Unknown result type\";\n  }\n}\n\nnamespace internal {\n\n// Prints a TestPartResult to an std::string.\nstatic std::string PrintTestPartResultToString(\n    const TestPartResult& test_part_result) {\n  return (Message()\n          << internal::FormatFileLocation(test_part_result.file_name(),\n                                          test_part_result.line_number())\n          << \" \" << TestPartResultTypeToString(test_part_result.type())\n          << test_part_result.message()).GetString();\n}\n\n// Prints a TestPartResult.\nstatic void PrintTestPartResult(const TestPartResult& test_part_result) {\n  const std::string& result =\n      PrintTestPartResultToString(test_part_result);\n  std::cout << result << std::endl;\n  std::cout.flush();\n  // If the test program runs in Visual Studio or a debugger, the\n  // following statements add the test part result message to the Output\n  // window such that the user can double-click on it to jump to the\n  // corresponding source code location; otherwise they do nothing.\n#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE\n  // We don't call OutputDebugString*() on Windows Mobile, as printing\n  // to stdout is done by OutputDebugString() there already - we don't\n  // want the same message printed twice.\n  ::OutputDebugStringA(result.c_str());\n  ::OutputDebugStringA(\"\\n\");\n#endif\n}\n\n// class PrettyUnitTestResultPrinter\n\nenum GTestColor {\n  COLOR_DEFAULT,\n  COLOR_RED,\n  COLOR_GREEN,\n  COLOR_YELLOW\n};\n\n#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE\n\n// Returns the character attribute for the given color.\nWORD GetColorAttribute(GTestColor color) {\n  switch (color) {\n    case COLOR_RED:    return FOREGROUND_RED;\n    case COLOR_GREEN:  return FOREGROUND_GREEN;\n    case COLOR_YELLOW: return FOREGROUND_RED | FOREGROUND_GREEN;\n    default:           return 0;\n  }\n}\n\n#else\n\n// Returns the ANSI color code for the given color.  COLOR_DEFAULT is\n// an invalid input.\nconst char* GetAnsiColorCode(GTestColor color) {\n  switch (color) {\n    case COLOR_RED:     return \"1\";\n    case COLOR_GREEN:   return \"2\";\n    case COLOR_YELLOW:  return \"3\";\n    default:            return nullptr;\n  };\n}\n\n#endif  // GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE\n\n// Returns true iff Google Test should use colors in the output.\nbool ShouldUseColor(bool stdout_is_tty) {\n  const char* const gtest_color = GTEST_FLAG(color).c_str();\n\n  if (String::CaseInsensitiveCStringEquals(gtest_color, \"auto\")) {\n#if GTEST_OS_WINDOWS\n    // On Windows the TERM variable is usually not set, but the\n    // console there does support colors.\n    return stdout_is_tty;\n#else\n    // On non-Windows platforms, we rely on the TERM variable.\n    const char* const term = posix::GetEnv(\"TERM\");\n    const bool term_supports_color =\n        String::CStringEquals(term, \"xterm\") ||\n        String::CStringEquals(term, \"xterm-color\") ||\n        String::CStringEquals(term, \"xterm-256color\") ||\n        String::CStringEquals(term, \"screen\") ||\n        String::CStringEquals(term, \"screen-256color\") ||\n        String::CStringEquals(term, \"linux\") ||\n        String::CStringEquals(term, \"cygwin\");\n    return stdout_is_tty && term_supports_color;\n#endif  // GTEST_OS_WINDOWS\n  }\n\n  return String::CaseInsensitiveCStringEquals(gtest_color, \"yes\") ||\n      String::CaseInsensitiveCStringEquals(gtest_color, \"true\") ||\n      String::CaseInsensitiveCStringEquals(gtest_color, \"t\") ||\n      String::CStringEquals(gtest_color, \"1\");\n  // We take \"yes\", \"true\", \"t\", and \"1\" as meaning \"yes\".  If the\n  // value is neither one of these nor \"auto\", we treat it as \"no\" to\n  // be conservative.\n}\n\n// Helpers for printing colored strings to stdout. Note that on Windows, we\n// cannot simply emit special characters and have the terminal change colors.\n// This routine must actually emit the characters rather than return a string\n// that would be colored when printed, as can be done on Linux.\nvoid ColoredPrintf(GTestColor color, const char* fmt, ...) {\n  va_list args;\n  va_start(args, fmt);\n\n#if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN || GTEST_OS_ZOS || GTEST_OS_IOS\n  const bool use_color = false;\n#else\n  static const bool in_color_mode =\n      ShouldUseColor(posix::IsATTY(posix::FileNo(stdout)) != 0);\n  const bool use_color = in_color_mode && (color != COLOR_DEFAULT);\n#endif  // GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN || GTEST_OS_ZOS\n  // The '!= 0' comparison is necessary to satisfy MSVC 7.1.\n\n  if (!use_color) {\n//    vprintf(fmt, args);\n//    va_end(args);\n    char buf[65536] = {0};\n    vsnprintf(buf, 65535, fmt, args);\n    std::cout << buf;\n    return;\n  }\n\n#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE\n  const HANDLE stdout_handle = GetStdHandle(STD_OUTPUT_HANDLE);\n\n  // Gets the current text color.\n  CONSOLE_SCREEN_BUFFER_INFO buffer_info;\n  GetConsoleScreenBufferInfo(stdout_handle, &buffer_info);\n  const WORD old_color_attrs = buffer_info.wAttributes;\n\n  // We need to flush the stream buffers into the console before each\n  // SetConsoleTextAttribute call lest it affect the text that is already\n  // printed but has not yet reached the console.\n  // fflush(stdout);\n  SetConsoleTextAttribute(stdout_handle,\n                          GetColorAttribute(color) | FOREGROUND_INTENSITY);\n  char buf[65536] = {0};\n  vsnprintf(buf, 65535, fmt, args);\n  std::cout << buf;\n\n  // fflush(stdout);\n  // Restores the text color.\n  SetConsoleTextAttribute(stdout_handle, old_color_attrs);\n#else\n  printf(\"\\033[0;3%sm\", GetAnsiColorCode(color));\n  vprintf(fmt, args);\n  printf(\"\\033[m\");  // Resets the terminal to default.\n#endif  // GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE\n  va_end(args);\n}\n\n// Text printed in Google Test's text output and --gunit_list_tests\n// output to label the type parameter and value parameter for a test.\nstatic const char kTypeParamLabel[] = \"TypeParam\";\nstatic const char kValueParamLabel[] = \"GetParam()\";\n\nvoid PrintFullTestCommentIfPresent(const TestInfo& test_info) {\n  const char* const type_param = test_info.type_param();\n  const char* const value_param = test_info.value_param();\n\n  if (type_param != nullptr || value_param != nullptr) {\n    std::cout << \", where \";\n    if (type_param != nullptr) {\n      std::cout << kTypeParamLabel << \" = \" << type_param;\n      if (value_param != nullptr)\n        std::cout << \" and \";\n    }\n    if (value_param != nullptr) {\n      std::cout << kValueParamLabel << \" and \" << value_param;\n    }\n  }\n}\n\n// This class implements the TestEventListener interface.\n//\n// Class PrettyUnitTestResultPrinter is copyable.\nclass PrettyUnitTestResultPrinter : public TestEventListener {\n public:\n  PrettyUnitTestResultPrinter() {}\n  static void PrintTestName(const char * /* test_case */, const char * test) {\n      // *** changed by Marty to not print out test case class name prefix (e.g. \"TrailblazerTest.\")\n      // std::cout << test_case << \".\" << test;\n      std::cout << test;\n  }\n\n  // The following methods override what's in the TestEventListener class.\n  virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) {}\n  virtual void OnTestIterationStart(const UnitTest& unit_test, int iteration);\n  virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test);\n  virtual void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) {}\n  virtual void OnTestCaseStart(const TestCase& test_case);\n  virtual void OnTestStart(const TestInfo& test_info);\n  virtual void OnTestPartResult(const TestPartResult& result);\n  virtual void OnTestEnd(const TestInfo& test_info);\n  virtual void OnTestCaseEnd(const TestCase& test_case);\n  virtual void OnEnvironmentsTearDownStart(const UnitTest& unit_test);\n  virtual void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) {}\n  virtual void OnTestIterationEnd(const UnitTest& unit_test, int iteration);\n  virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) {}\n\n private:\n  static void PrintFailedTests(const UnitTest& unit_test);\n};\n\n  // Fired before each iteration of tests starts.\nvoid PrettyUnitTestResultPrinter::OnTestIterationStart(\n    const UnitTest& unit_test, int iteration) {\n  if (GTEST_FLAG(repeat) != 1)\n    std::cout << \"\\nRepeating all tests (iteration \" << (iteration + 1) << \") . . .\\n\\n\";\n\n  const char* const filter = GTEST_FLAG(filter).c_str();\n\n  // Prints the filter if it's not *.  This reminds the user that some\n  // tests may be skipped.\n  if (!String::CStringEquals(filter, kUniversalFilter)) {\n    ColoredPrintf(COLOR_YELLOW,\n                  \"Note: %s filter = %s\\n\", GTEST_NAME_, filter);\n  }\n\n  if (internal::ShouldShard(kTestTotalShards, kTestShardIndex, false)) {\n    const Int32 shard_index = Int32FromEnvOrDie(kTestShardIndex, -1);\n    ColoredPrintf(COLOR_YELLOW,\n                  \"Note: This is test shard %d of %s.\\n\",\n                  static_cast<int>(shard_index) + 1,\n                  internal::posix::GetEnv(kTestTotalShards));\n  }\n\n  if (GTEST_FLAG(shuffle)) {\n    ColoredPrintf(COLOR_YELLOW,\n                  \"Note: Randomizing tests' orders with a seed of %d .\\n\",\n                  unit_test.random_seed());\n  }\n\n  ColoredPrintf(COLOR_GREEN,  \"[==========] \");\n  std::cout << \"Running \"\n       << FormatTestCount(unit_test.test_to_run_count())\n       << \" from \"\n       << FormatTestCaseCount(unit_test.test_case_to_run_count())\n       << \".\\n\";\n  std::cout.flush();\n}\n\nvoid PrettyUnitTestResultPrinter::OnEnvironmentsSetUpStart(\n    const UnitTest& /*unit_test*/) {\n//  ColoredPrintf(COLOR_GREEN,  \"[----------] \");\n//  std::cout << \"Global test environment set-up.\\n\";\n//  std::cout.flush();\n}\n\nvoid PrettyUnitTestResultPrinter::OnTestCaseStart(const TestCase& /*test_case*/) {\n//  const std::string counts =\n//      FormatCountableNoun(test_case.test_to_run_count(), \"test\", \"tests\");\n//  ColoredPrintf(COLOR_GREEN, \"[----------] \");\n//  std::cout << counts << \" from \" << test_case.name();\n//  if (test_case.type_param() == nullptr) {\n//    std::cout << \"\\n\";\n//  } else {\n//    std::cout << \", where \" << kTypeParamLabel << \" = \" << test_case.type_param() << std::endl;\n//  }\n//  std::cout.flush();\n}\n\nvoid PrettyUnitTestResultPrinter::OnTestStart(const TestInfo& test_info) {\n  ColoredPrintf(COLOR_GREEN,  \"[ RUN      ] \");\n  PrintTestName(test_info.test_case_name(), test_info.name());\n  std::cout << std::endl;\n  std::cout.flush();\n}\n\n// Called after an assertion failure.\nvoid PrettyUnitTestResultPrinter::OnTestPartResult(\n    const TestPartResult& result) {\n  // If the test part succeeded, we don't need to do anything.\n  if (result.type() == TestPartResult::kSuccess)\n    return;\n\n  // Print failure message from the assertion (e.g. expected this and got that).\n  PrintTestPartResult(result);\n  fflush(stdout);\n}\n\nvoid PrettyUnitTestResultPrinter::OnTestEnd(const TestInfo& test_info) {\n  if (test_info.result()->Passed()) {\n    ColoredPrintf(COLOR_GREEN, \"[       OK ] \");\n  } else {\n    ColoredPrintf(COLOR_RED, \"[  FAILED  ] \");\n  }\n  PrintTestName(test_info.test_case_name(), test_info.name());\n  if (test_info.result()->Failed())\n    PrintFullTestCommentIfPresent(test_info);\n\n  if (GTEST_FLAG(print_time)) {\n    std::cout << \" (\" << internal::StreamableToString(\n           test_info.result()->elapsed_time())\n         << \" ms)\" << std::endl;\n  } else {\n    std::cout << std::endl;\n  }\n  std::cout.flush();\n}\n\nvoid PrettyUnitTestResultPrinter::OnTestCaseEnd(const TestCase& /*test_case*/) {\n  if (!GTEST_FLAG(print_time)) return;\n\n//  const std::string counts =\n//      FormatCountableNoun(test_case.test_to_run_count(), \"test\", \"tests\");\n//  ColoredPrintf(COLOR_GREEN, \"[----------] \");\n//  std::cout << counts << \" from \"\n//       << test_case.name()\n//       << \" (\" << internal::StreamableToString(test_case.elapsed_time()) << \" ms total)\" << std::endl;\n//  std::cout.flush();\n}\n\nvoid PrettyUnitTestResultPrinter::OnEnvironmentsTearDownStart(\n    const UnitTest& /*unit_test*/) {\n//  ColoredPrintf(COLOR_GREEN,  \"[----------] \");\n//  std::cout << \"Global test environment tear-down\" << std::endl;\n//  std::cout.flush();\n}\n\n// Internal helper for printing the list of failed tests.\nvoid PrettyUnitTestResultPrinter::PrintFailedTests(const UnitTest& unit_test) {\n  const int failed_test_count = unit_test.failed_test_count();\n  if (failed_test_count == 0) {\n    return;\n  }\n\n  for (int i = 0; i < unit_test.total_test_case_count(); ++i) {\n    const TestCase& test_case = *unit_test.GetTestCase(i);\n    if (!test_case.should_run() || (test_case.failed_test_count() == 0)) {\n      continue;\n    }\n    for (int j = 0; j < test_case.total_test_count(); ++j) {\n      const TestInfo& test_info = *test_case.GetTestInfo(j);\n      if (!test_info.should_run() || test_info.result()->Passed()) {\n        continue;\n      }\n      ColoredPrintf(COLOR_RED, \"[  FAILED  ] \");\n      std::cout << test_case.name() << \".\" << test_info.name();\n      PrintFullTestCommentIfPresent(test_info);\n      std::cout << std::endl;\n    }\n  }\n}\n\nvoid PrettyUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,\n                                                     int /*iteration*/) {\n  ColoredPrintf(COLOR_GREEN,  \"[==========] \");\n  std::cout << FormatTestCount(unit_test.test_to_run_count()) << \" from \"\n       << FormatTestCaseCount(unit_test.test_case_to_run_count())\n       << \" ran.\";\n  if (GTEST_FLAG(print_time)) {\n    std::cout << \" (\" << internal::StreamableToString(unit_test.elapsed_time()) << \" ms total)\";\n  }\n  std::cout << std::endl;\n  ColoredPrintf(COLOR_GREEN,  \"[  PASSED  ] \");\n  std::cout << FormatTestCount(unit_test.successful_test_count()) << \".\" << std::endl;\n\n  int num_failures = unit_test.failed_test_count();\n  if (!unit_test.Passed()) {\n    const int failed_test_count = unit_test.failed_test_count();\n    ColoredPrintf(COLOR_RED,  \"[  FAILED  ] \");\n    std::cout << FormatTestCount(failed_test_count) << \", listed below:\" << std::endl;\n    PrintFailedTests(unit_test);\n    // std::cout << std::endl << std::setw(2) << num_failures << \" \" << (num_failures == 1 ? \"TEST\" : \"TESTS\") << std::endl;\n  }\n\n  int num_disabled = unit_test.reportable_disabled_test_count();\n  if (num_disabled && !GTEST_FLAG(also_run_disabled_tests)) {\n    if (!num_failures) {\n      std::cout << std::endl;  // Add a spacer if no FAILURE banner is displayed.\n    }\n    ColoredPrintf(COLOR_YELLOW,\n                  \"  YOU HAVE %d DISABLED %s\\n\\n\",\n                  num_disabled,\n                  num_disabled == 1 ? \"TEST\" : \"TESTS\");\n  }\n  // Ensure that Google Test output is printed before, e.g., heapchecker output.\n  std::cout.flush();\n}\n\n// End PrettyUnitTestResultPrinter\n\n// class TestEventRepeater\n//\n// This class forwards events to other event listeners.\nclass TestEventRepeater : public TestEventListener {\n public:\n  TestEventRepeater() : forwarding_enabled_(true) {}\n  virtual ~TestEventRepeater();\n  void Append(TestEventListener *listener);\n  TestEventListener* Release(TestEventListener* listener);\n\n  // Controls whether events will be forwarded to listeners_. Set to false\n  // in death test child processes.\n  bool forwarding_enabled() const { return forwarding_enabled_; }\n  void set_forwarding_enabled(bool enable) { forwarding_enabled_ = enable; }\n\n  virtual void OnTestProgramStart(const UnitTest& unit_test);\n  virtual void OnTestIterationStart(const UnitTest& unit_test, int iteration);\n  virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test);\n  virtual void OnEnvironmentsSetUpEnd(const UnitTest& unit_test);\n  virtual void OnTestCaseStart(const TestCase& test_case);\n  virtual void OnTestStart(const TestInfo& test_info);\n  virtual void OnTestPartResult(const TestPartResult& result);\n  virtual void OnTestEnd(const TestInfo& test_info);\n  virtual void OnTestCaseEnd(const TestCase& test_case);\n  virtual void OnEnvironmentsTearDownStart(const UnitTest& unit_test);\n  virtual void OnEnvironmentsTearDownEnd(const UnitTest& unit_test);\n  virtual void OnTestIterationEnd(const UnitTest& unit_test, int iteration);\n  virtual void OnTestProgramEnd(const UnitTest& unit_test);\n\n private:\n  // Controls whether events will be forwarded to listeners_. Set to false\n  // in death test child processes.\n  bool forwarding_enabled_;\n  // The list of listeners that receive events.\n  std::vector<TestEventListener*> listeners_;\n\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(TestEventRepeater);\n};\n\nTestEventRepeater::~TestEventRepeater() {\n  ForEach(listeners_, Delete<TestEventListener>);\n}\n\nvoid TestEventRepeater::Append(TestEventListener *listener) {\n  listeners_.push_back(listener);\n}\n\n// TODO(vladl@google.com): Factor the search functionality into Vector::Find.\nTestEventListener* TestEventRepeater::Release(TestEventListener *listener) {\n  for (size_t i = 0; i < listeners_.size(); ++i) {\n    if (listeners_[i] == listener) {\n      listeners_.erase(listeners_.begin() + i);\n      return listener;\n    }\n  }\n\n  return nullptr;\n}\n\n// Since most methods are very similar, use macros to reduce boilerplate.\n// This defines a member that forwards the call to all listeners.\n#define GTEST_REPEATER_METHOD_(Name, Type) \\\nvoid TestEventRepeater::Name(const Type& parameter) { \\\n  if (forwarding_enabled_) { \\\n    for (size_t i = 0; i < listeners_.size(); i++) { \\\n      listeners_[i]->Name(parameter); \\\n    } \\\n  } \\\n}\n// This defines a member that forwards the call to all listeners in reverse\n// order.\n#define GTEST_REVERSE_REPEATER_METHOD_(Name, Type) \\\nvoid TestEventRepeater::Name(const Type& parameter) { \\\n  if (forwarding_enabled_) { \\\n    for (int i = static_cast<int>(listeners_.size()) - 1; i >= 0; i--) { \\\n      listeners_[i]->Name(parameter); \\\n    } \\\n  } \\\n}\n\nGTEST_REPEATER_METHOD_(OnTestProgramStart, UnitTest)\nGTEST_REPEATER_METHOD_(OnEnvironmentsSetUpStart, UnitTest)\nGTEST_REPEATER_METHOD_(OnTestCaseStart, TestCase)\nGTEST_REPEATER_METHOD_(OnTestStart, TestInfo)\nGTEST_REPEATER_METHOD_(OnTestPartResult, TestPartResult)\nGTEST_REPEATER_METHOD_(OnEnvironmentsTearDownStart, UnitTest)\nGTEST_REVERSE_REPEATER_METHOD_(OnEnvironmentsSetUpEnd, UnitTest)\nGTEST_REVERSE_REPEATER_METHOD_(OnEnvironmentsTearDownEnd, UnitTest)\nGTEST_REVERSE_REPEATER_METHOD_(OnTestEnd, TestInfo)\nGTEST_REVERSE_REPEATER_METHOD_(OnTestCaseEnd, TestCase)\nGTEST_REVERSE_REPEATER_METHOD_(OnTestProgramEnd, UnitTest)\n\n#undef GTEST_REPEATER_METHOD_\n#undef GTEST_REVERSE_REPEATER_METHOD_\n\nvoid TestEventRepeater::OnTestIterationStart(const UnitTest& unit_test,\n                                             int iteration) {\n  if (forwarding_enabled_) {\n    for (size_t i = 0; i < listeners_.size(); i++) {\n      listeners_[i]->OnTestIterationStart(unit_test, iteration);\n    }\n  }\n}\n\nvoid TestEventRepeater::OnTestIterationEnd(const UnitTest& unit_test,\n                                           int iteration) {\n  if (forwarding_enabled_) {\n    for (int i = static_cast<int>(listeners_.size()) - 1; i >= 0; i--) {\n      listeners_[i]->OnTestIterationEnd(unit_test, iteration);\n    }\n  }\n}\n\n// End TestEventRepeater\n\n// This class generates an XML output file.\nclass XmlUnitTestResultPrinter : public EmptyTestEventListener {\n public:\n  explicit XmlUnitTestResultPrinter(const char* output_file);\n\n  virtual void OnTestIterationEnd(const UnitTest& unit_test, int iteration);\n\n private:\n  // Is c a whitespace character that is normalized to a space character\n  // when it appears in an XML attribute value?\n  static bool IsNormalizableWhitespace(char c) {\n    return c == 0x9 || c == 0xA || c == 0xD;\n  }\n\n  // May c appear in a well-formed XML document?\n  static bool IsValidXmlCharacter(char c) {\n    return IsNormalizableWhitespace(c) || c >= 0x20;\n  }\n\n  // Returns an XML-escaped copy of the input string str.  If\n  // is_attribute is true, the text is meant to appear as an attribute\n  // value, and normalizable whitespace is preserved by replacing it\n  // with character references.\n  static std::string EscapeXml(const std::string& str, bool is_attribute);\n\n  // Returns the given string with all characters invalid in XML removed.\n  static std::string RemoveInvalidXmlCharacters(const std::string& str);\n\n  // Convenience wrapper around EscapeXml when str is an attribute value.\n  static std::string EscapeXmlAttribute(const std::string& str) {\n    return EscapeXml(str, true);\n  }\n\n  // Convenience wrapper around EscapeXml when str is not an attribute value.\n  static std::string EscapeXmlText(const char* str) {\n    return EscapeXml(str, false);\n  }\n\n  // Verifies that the given attribute belongs to the given element and\n  // streams the attribute as XML.\n  static void OutputXmlAttribute(std::ostream* stream,\n                                 const std::string& element_name,\n                                 const std::string& name,\n                                 const std::string& value);\n\n  // Streams an XML CDATA section, escaping invalid CDATA sequences as needed.\n  static void OutputXmlCDataSection(::std::ostream* stream, const char* data);\n\n  // Streams an XML representation of a TestInfo object.\n  static void OutputXmlTestInfo(::std::ostream* stream,\n                                const char* test_case_name,\n                                const TestInfo& test_info);\n\n  // Prints an XML representation of a TestCase object\n  static void PrintXmlTestCase(::std::ostream* stream,\n                               const TestCase& test_case);\n\n  // Prints an XML summary of unit_test to output stream out.\n  static void PrintXmlUnitTest(::std::ostream* stream,\n                               const UnitTest& unit_test);\n\n  // Produces a string representing the test properties in a result as space\n  // delimited XML attributes based on the property key=\"value\" pairs.\n  // When the std::string is not empty, it includes a space at the beginning,\n  // to delimit this attribute from prior attributes.\n  static std::string TestPropertiesAsXmlAttributes(const TestResult& result);\n\n  // The output file.\n  const std::string output_file_;\n\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(XmlUnitTestResultPrinter);\n};\n\n// Creates a new XmlUnitTestResultPrinter.\nXmlUnitTestResultPrinter::XmlUnitTestResultPrinter(const char* output_file)\n    : output_file_(output_file) {\n  if (output_file_.c_str() == nullptr || output_file_.empty()) {\n    std::cerr << \"XML output file may not be null\" << std::endl;\n    std::cerr.flush();\n    std::exit(EXIT_FAILURE);\n  }\n}\n\n// Called after the unit test ends.\nvoid XmlUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,\n                                                  int /*iteration*/) {\n  FILE* xmlout = nullptr;\n  FilePath output_file(output_file_);\n  FilePath output_dir(output_file.RemoveFileName());\n\n  if (output_dir.CreateDirectoriesRecursively()) {\n    xmlout = posix::FOpen(output_file_.c_str(), \"w\");\n  }\n  if (xmlout == nullptr) {\n    // TODO(wan): report the reason of the failure.\n    //\n    // We don't do it for now as:\n    //\n    //   1. There is no urgent need for it.\n    //   2. It's a bit involved to make the errno variable thread-safe on\n    //      all three operating systems (Linux, Windows, and Mac OS).\n    //   3. To interpret the meaning of errno in a thread-safe way,\n    //      we need the strerror_r() function, which is not available on\n    //      Windows.\n    std::cerr << \"Unable to open file \\\"\" << output_file_ << \"\\\"\" << std::endl;\n    std::cerr.flush();\n    std::exit(EXIT_FAILURE);\n  }\n  std::stringstream stream;\n  PrintXmlUnitTest(&stream, unit_test);\n  fprintf(xmlout, \"%s\", StringStreamToString(&stream).c_str());\n  fclose(xmlout);\n}\n\n// Returns an XML-escaped copy of the input string str.  If is_attribute\n// is true, the text is meant to appear as an attribute value, and\n// normalizable whitespace is preserved by replacing it with character\n// references.\n//\n// Invalid XML characters in str, if any, are stripped from the output.\n// It is expected that most, if not all, of the text processed by this\n// module will consist of ordinary English text.\n// If this module is ever modified to produce version 1.1 XML output,\n// most invalid characters can be retained using character references.\n// TODO(wan): It might be nice to have a minimally invasive, human-readable\n// escaping scheme for invalid characters, rather than dropping them.\nstd::string XmlUnitTestResultPrinter::EscapeXml(\n    const std::string& str, bool is_attribute) {\n  Message m;\n\n  for (size_t i = 0; i < str.size(); ++i) {\n    const char ch = str[i];\n    switch (ch) {\n      case '<':\n        m << \"&lt;\";\n        break;\n      case '>':\n        m << \"&gt;\";\n        break;\n      case '&':\n        m << \"&amp;\";\n        break;\n      case '\\'':\n        if (is_attribute)\n          m << \"&apos;\";\n        else\n          m << '\\'';\n        break;\n      case '\"':\n        if (is_attribute)\n          m << \"&quot;\";\n        else\n          m << '\"';\n        break;\n      default:\n        if (IsValidXmlCharacter(ch)) {\n          if (is_attribute && IsNormalizableWhitespace(ch))\n            m << \"&#x\" << String::FormatByte(static_cast<unsigned char>(ch))\n              << \";\";\n          else\n            m << ch;\n        }\n        break;\n    }\n  }\n\n  return m.GetString();\n}\n\n// Returns the given string with all characters invalid in XML removed.\n// Currently invalid characters are dropped from the string. An\n// alternative is to replace them with certain characters such as . or ?.\nstd::string XmlUnitTestResultPrinter::RemoveInvalidXmlCharacters(\n    const std::string& str) {\n  std::string output;\n  output.reserve(str.size());\n  for (std::string::const_iterator it = str.begin(); it != str.end(); ++it)\n    if (IsValidXmlCharacter(*it))\n      output.push_back(*it);\n\n  return output;\n}\n\n// The following routines generate an XML representation of a UnitTest\n// object.\n//\n// This is how Google Test concepts map to the DTD:\n//\n// <testsuites name=\"AllTests\">        <-- corresponds to a UnitTest object\n//   <testsuite name=\"testcase-name\">  <-- corresponds to a TestCase object\n//     <testcase name=\"test-name\">     <-- corresponds to a TestInfo object\n//       <failure message=\"...\">...</failure>\n//       <failure message=\"...\">...</failure>\n//       <failure message=\"...\">...</failure>\n//                                     <-- individual assertion failures\n//     </testcase>\n//   </testsuite>\n// </testsuites>\n\n// Formats the given time in milliseconds as seconds.\nstd::string FormatTimeInMillisAsSeconds(TimeInMillis ms) {\n  ::std::stringstream ss;\n  ss << ms/1000.0;\n  return ss.str();\n}\n\n// Converts the given epoch time in milliseconds to a date string in the ISO\n// 8601 format, without the timezone information.\nstd::string FormatEpochTimeInMillisAsIso8601(TimeInMillis ms) {\n  // Using non-reentrant version as localtime_r is not portable.\n  time_t seconds = static_cast<time_t>(ms / 1000);\n#ifdef _MSC_VER\n# pragma warning(push)          // Saves the current warning state.\n# pragma warning(disable:4996)  // Temporarily disables warning 4996\n                                // (function or variable may be unsafe).\n  const struct tm* const time_struct = localtime(&seconds);  // NOLINT\n# pragma warning(pop)           // Restores the warning state again.\n#else\n  const struct tm* const time_struct = localtime(&seconds);  // NOLINT\n#endif\n  if (time_struct == nullptr)\n    return \"\";  // Invalid ms value\n\n  // YYYY-MM-DDThh:mm:ss\n  return StreamableToString(time_struct->tm_year + 1900) + \"-\" +\n      String::FormatIntWidth2(time_struct->tm_mon + 1) + \"-\" +\n      String::FormatIntWidth2(time_struct->tm_mday) + \"T\" +\n      String::FormatIntWidth2(time_struct->tm_hour) + \":\" +\n      String::FormatIntWidth2(time_struct->tm_min) + \":\" +\n      String::FormatIntWidth2(time_struct->tm_sec);\n}\n\n// Streams an XML CDATA section, escaping invalid CDATA sequences as needed.\nvoid XmlUnitTestResultPrinter::OutputXmlCDataSection(::std::ostream* stream,\n                                                     const char* data) {\n  const char* segment = data;\n  *stream << \"<![CDATA[\";\n  for (;;) {\n    const char* const next_segment = strstr(segment, \"]]>\");\n    if (next_segment != nullptr) {\n      stream->write(\n          segment, static_cast<std::streamsize>(next_segment - segment));\n      *stream << \"]]>]]&gt;<![CDATA[\";\n      segment = next_segment + strlen(\"]]>\");\n    } else {\n      *stream << segment;\n      break;\n    }\n  }\n  *stream << \"]]>\";\n}\n\nvoid XmlUnitTestResultPrinter::OutputXmlAttribute(\n    std::ostream* stream,\n    const std::string& element_name,\n    const std::string& name,\n    const std::string& value) {\n  const std::vector<std::string>& allowed_names =\n      GetReservedAttributesForElement(element_name);\n\n  GTEST_CHECK_(std::find(allowed_names.begin(), allowed_names.end(), name) !=\n                   allowed_names.end())\n      << \"Attribute \" << name << \" is not allowed for element <\" << element_name\n      << \">.\";\n\n  *stream << \" \" << name << \"=\\\"\" << EscapeXmlAttribute(value) << \"\\\"\";\n}\n\n// Prints an XML representation of a TestInfo object.\n// TODO(wan): There is also value in printing properties with the plain printer.\nvoid XmlUnitTestResultPrinter::OutputXmlTestInfo(::std::ostream* stream,\n                                                 const char* test_case_name,\n                                                 const TestInfo& test_info) {\n  const TestResult& result = *test_info.result();\n  const std::string kTestcase = \"testcase\";\n\n  *stream << \"    <testcase\";\n  OutputXmlAttribute(stream, kTestcase, \"name\", test_info.name());\n\n  if (test_info.value_param() != nullptr) {\n    OutputXmlAttribute(stream, kTestcase, \"value_param\",\n                       test_info.value_param());\n  }\n  if (test_info.type_param() != nullptr) {\n    OutputXmlAttribute(stream, kTestcase, \"type_param\", test_info.type_param());\n  }\n\n  OutputXmlAttribute(stream, kTestcase, \"status\",\n                     test_info.should_run() ? \"run\" : \"notrun\");\n  OutputXmlAttribute(stream, kTestcase, \"time\",\n                     FormatTimeInMillisAsSeconds(result.elapsed_time()));\n  OutputXmlAttribute(stream, kTestcase, \"classname\", test_case_name);\n  *stream << TestPropertiesAsXmlAttributes(result);\n\n  int failures = 0;\n  for (int i = 0; i < result.total_part_count(); ++i) {\n    const TestPartResult& part = result.GetTestPartResult(i);\n    if (part.failed()) {\n      if (++failures == 1) {\n        *stream << \">\\n\";\n      }\n      const std::string location = internal::FormatCompilerIndependentFileLocation(\n          part.file_name(), part.line_number());\n      const std::string summary = location + \"\\n\" + part.summary();\n      *stream << \"      <failure message=\\\"\"\n              << EscapeXmlAttribute(summary.c_str())\n              << \"\\\" type=\\\"\\\">\";\n      const std::string detail = location + \"\\n\" + part.message();\n      OutputXmlCDataSection(stream, RemoveInvalidXmlCharacters(detail).c_str());\n      *stream << \"</failure>\\n\";\n    }\n  }\n\n  if (failures == 0)\n    *stream << \" />\\n\";\n  else\n    *stream << \"    </testcase>\\n\";\n}\n\n// Prints an XML representation of a TestCase object\nvoid XmlUnitTestResultPrinter::PrintXmlTestCase(std::ostream* stream,\n                                                const TestCase& test_case) {\n  const std::string kTestsuite = \"testsuite\";\n  *stream << \"  <\" << kTestsuite;\n  OutputXmlAttribute(stream, kTestsuite, \"name\", test_case.name());\n  OutputXmlAttribute(stream, kTestsuite, \"tests\",\n                     StreamableToString(test_case.reportable_test_count()));\n  OutputXmlAttribute(stream, kTestsuite, \"failures\",\n                     StreamableToString(test_case.failed_test_count()));\n  OutputXmlAttribute(\n      stream, kTestsuite, \"disabled\",\n      StreamableToString(test_case.reportable_disabled_test_count()));\n  OutputXmlAttribute(stream, kTestsuite, \"errors\", \"0\");\n  OutputXmlAttribute(stream, kTestsuite, \"time\",\n                     FormatTimeInMillisAsSeconds(test_case.elapsed_time()));\n  *stream << TestPropertiesAsXmlAttributes(test_case.ad_hoc_test_result())\n          << \">\\n\";\n\n  for (int i = 0; i < test_case.total_test_count(); ++i) {\n    if (test_case.GetTestInfo(i)->is_reportable())\n      OutputXmlTestInfo(stream, test_case.name(), *test_case.GetTestInfo(i));\n  }\n  *stream << \"  </\" << kTestsuite << \">\\n\";\n}\n\n// Prints an XML summary of unit_test to output stream out.\nvoid XmlUnitTestResultPrinter::PrintXmlUnitTest(std::ostream* stream,\n                                                const UnitTest& unit_test) {\n  const std::string kTestsuites = \"testsuites\";\n\n  *stream << \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\\n\";\n  *stream << \"<\" << kTestsuites;\n\n  OutputXmlAttribute(stream, kTestsuites, \"tests\",\n                     StreamableToString(unit_test.reportable_test_count()));\n  OutputXmlAttribute(stream, kTestsuites, \"failures\",\n                     StreamableToString(unit_test.failed_test_count()));\n  OutputXmlAttribute(\n      stream, kTestsuites, \"disabled\",\n      StreamableToString(unit_test.reportable_disabled_test_count()));\n  OutputXmlAttribute(stream, kTestsuites, \"errors\", \"0\");\n  OutputXmlAttribute(\n      stream, kTestsuites, \"timestamp\",\n      FormatEpochTimeInMillisAsIso8601(unit_test.start_timestamp()));\n  OutputXmlAttribute(stream, kTestsuites, \"time\",\n                     FormatTimeInMillisAsSeconds(unit_test.elapsed_time()));\n\n  if (GTEST_FLAG(shuffle)) {\n    OutputXmlAttribute(stream, kTestsuites, \"random_seed\",\n                       StreamableToString(unit_test.random_seed()));\n  }\n\n  *stream << TestPropertiesAsXmlAttributes(unit_test.ad_hoc_test_result());\n\n  OutputXmlAttribute(stream, kTestsuites, \"name\", \"AllTests\");\n  *stream << \">\\n\";\n\n  for (int i = 0; i < unit_test.total_test_case_count(); ++i) {\n    if (unit_test.GetTestCase(i)->reportable_test_count() > 0)\n      PrintXmlTestCase(stream, *unit_test.GetTestCase(i));\n  }\n  *stream << \"</\" << kTestsuites << \">\\n\";\n}\n\n// Produces a string representing the test properties in a result as space\n// delimited XML attributes based on the property key=\"value\" pairs.\nstd::string XmlUnitTestResultPrinter::TestPropertiesAsXmlAttributes(\n    const TestResult& result) {\n  Message attributes;\n  for (int i = 0; i < result.test_property_count(); ++i) {\n    const TestProperty& property = result.GetTestProperty(i);\n    attributes << \" \" << property.key() << \"=\"\n        << \"\\\"\" << EscapeXmlAttribute(property.value()) << \"\\\"\";\n  }\n  return attributes.GetString();\n}\n\n// End XmlUnitTestResultPrinter\n\n#if GTEST_CAN_STREAM_RESULTS_\n\n// Checks if str contains '=', '&', '%' or '\\n' characters. If yes,\n// replaces them by \"%xx\" where xx is their hexadecimal value. For\n// example, replaces \"=\" with \"%3D\".  This algorithm is O(strlen(str))\n// in both time and space -- important as the input str may contain an\n// arbitrarily long test failure message and stack trace.\nstring StreamingListener::UrlEncode(const char* str) {\n  std::string result;\n  result.reserve(strlen(str) + 1);\n  for (char ch = *str; ch != '\\0'; ch = *++str) {\n    switch (ch) {\n      case '%':\n      case '=':\n      case '&':\n      case '\\n':\n        result.append(\"%\" + String::FormatByte(static_cast<unsigned char>(ch)));\n        break;\n      default:\n        result.push_back(ch);\n        break;\n    }\n  }\n  return result;\n}\n\nvoid StreamingListener::SocketWriter::MakeConnection() {\n  GTEST_CHECK_(sockfd_ == -1)\n      << \"MakeConnection() can't be called when there is already a connection.\";\n\n  addrinfo hints;\n  memset(&hints, 0, sizeof(hints));\n  hints.ai_family = AF_UNSPEC;    // To allow both IPv4 and IPv6 addresses.\n  hints.ai_socktype = SOCK_STREAM;\n  addrinfo* servinfo = nullptr;\n\n  // Use the getaddrinfo() to get a linked list of IP addresses for\n  // the given host name.\n  const int error_num = getaddrinfo(\n      host_name_.c_str(), port_num_.c_str(), &hints, &servinfo);\n  if (error_num != 0) {\n    GTEST_LOG_(WARNING) << \"stream_result_to: getaddrinfo() failed: \"\n                        << gai_strerror(error_num);\n  }\n\n  // Loop through all the results and connect to the first we can.\n  for (addrinfo* cur_addr = servinfo; sockfd_ == -1 && cur_addr != nullptr;\n       cur_addr = cur_addr->ai_next) {\n    sockfd_ = socket(\n        cur_addr->ai_family, cur_addr->ai_socktype, cur_addr->ai_protocol);\n    if (sockfd_ != -1) {\n      // Connect the client socket to the server socket.\n      if (connect(sockfd_, cur_addr->ai_addr, cur_addr->ai_addrlen) == -1) {\n        close(sockfd_);\n        sockfd_ = -1;\n      }\n    }\n  }\n\n  freeaddrinfo(servinfo);  // all done with this structure\n\n  if (sockfd_ == -1) {\n    GTEST_LOG_(WARNING) << \"stream_result_to: failed to connect to \"\n                        << host_name_ << \":\" << port_num_;\n  }\n}\n\n// End of class Streaming Listener\n#endif  // GTEST_CAN_STREAM_RESULTS__\n\n// Class ScopedTrace\n\n// Pushes the given source file location and message onto a per-thread\n// trace stack maintained by Google Test.\nScopedTrace::ScopedTrace(const char* file, int line, const Message& message)\n    GTEST_LOCK_EXCLUDED_(&UnitTest::mutex_) {\n  TraceInfo trace;\n  trace.file = file;\n  trace.line = line;\n  trace.message = message.GetString();\n\n  UnitTest::GetInstance()->PushGTestTrace(trace);\n}\n\n// Pops the info pushed by the c'tor.\nScopedTrace::~ScopedTrace()\n    GTEST_LOCK_EXCLUDED_(&UnitTest::mutex_) {\n  UnitTest::GetInstance()->PopGTestTrace();\n}\n\n\n// class OsStackTraceGetter\n\n// Returns the current OS stack trace as an std::string.  Parameters:\n//\n//   max_depth  - the maximum number of stack frames to be included\n//                in the trace.\n//   skip_count - the number of top frames to be skipped; doesn't count\n//                against max_depth.\n//\nstring OsStackTraceGetter::CurrentStackTrace(int /* max_depth */,\n                                             int /* skip_count */)\n    GTEST_LOCK_EXCLUDED_(mutex_) {\n  return \"\";\n}\n\nvoid OsStackTraceGetter::UponLeavingGTest()\n    GTEST_LOCK_EXCLUDED_(mutex_) {\n}\n\nconst char* const\nOsStackTraceGetter::kElidedFramesMarker =\n    \"... \" GTEST_NAME_ \" internal frames ...\";\n\n// A helper class that creates the premature-exit file in its\n// constructor and deletes the file in its destructor.\nclass ScopedPrematureExitFile {\n public:\n  explicit ScopedPrematureExitFile(const char* premature_exit_filepath)\n      : premature_exit_filepath_(premature_exit_filepath) {\n    // If a path to the premature-exit file is specified...\n    if (premature_exit_filepath != nullptr && *premature_exit_filepath != '\\0') {\n      // create the file with a single \"0\" character in it.  I/O\n      // errors are ignored as there's nothing better we can do and we\n      // don't want to fail the test because of this.\n      FILE* pfile = posix::FOpen(premature_exit_filepath, \"w\");\n      fwrite(\"0\", 1, 1, pfile);\n      fclose(pfile);\n    }\n  }\n\n  ~ScopedPrematureExitFile() {\n    if (premature_exit_filepath_ != nullptr && *premature_exit_filepath_ != '\\0') {\n      remove(premature_exit_filepath_);\n    }\n  }\n\n private:\n  const char* const premature_exit_filepath_;\n\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(ScopedPrematureExitFile);\n};\n\n}  // namespace internal\n\n// class TestEventListeners\n\nTestEventListeners::TestEventListeners()\n    : repeater_(new internal::TestEventRepeater()),\n      default_result_printer_(nullptr),\n      default_xml_generator_(nullptr) {\n}\n\nTestEventListeners::~TestEventListeners() { delete repeater_; }\n\n// Returns the standard listener responsible for the default console\n// output.  Can be removed from the listeners list to shut down default\n// console output.  Note that removing this object from the listener list\n// with Release transfers its ownership to the user.\nvoid TestEventListeners::Append(TestEventListener* listener) {\n  repeater_->Append(listener);\n}\n\n// Removes the given event listener from the list and returns it.  It then\n// becomes the caller's responsibility to delete the listener. Returns\n// nullptr if the listener is not found in the list.\nTestEventListener* TestEventListeners::Release(TestEventListener* listener) {\n  if (listener == default_result_printer_)\n    default_result_printer_ = nullptr;\n  else if (listener == default_xml_generator_)\n    default_xml_generator_ = nullptr;\n  return repeater_->Release(listener);\n}\n\n// Returns repeater that broadcasts the TestEventListener events to all\n// subscribers.\nTestEventListener* TestEventListeners::repeater() { return repeater_; }\n\n// Sets the default_result_printer attribute to the provided listener.\n// The listener is also added to the listener list and previous\n// default_result_printer is removed from it and deleted. The listener can\n// also be nullptr in which case it will not be added to the list. Does\n// nothing if the previous and the current listener objects are the same.\nvoid TestEventListeners::SetDefaultResultPrinter(TestEventListener* listener) {\n  if (default_result_printer_ != listener) {\n    // It is an error to pass this method a listener that is already in the\n    // list.\n    delete Release(default_result_printer_);\n    default_result_printer_ = listener;\n    if (listener != nullptr)\n      Append(listener);\n  }\n}\n\n// Sets the default_xml_generator attribute to the provided listener.  The\n// listener is also added to the listener list and previous\n// default_xml_generator is removed from it and deleted. The listener can\n// also be nullptr in which case it will not be added to the list. Does\n// nothing if the previous and the current listener objects are the same.\nvoid TestEventListeners::SetDefaultXmlGenerator(TestEventListener* listener) {\n  if (default_xml_generator_ != listener) {\n    // It is an error to pass this method a listener that is already in the\n    // list.\n    delete Release(default_xml_generator_);\n    default_xml_generator_ = listener;\n    if (listener != nullptr)\n      Append(listener);\n  }\n}\n\n// Controls whether events will be forwarded by the repeater to the\n// listeners in the list.\nbool TestEventListeners::EventForwardingEnabled() const {\n  return repeater_->forwarding_enabled();\n}\n\nvoid TestEventListeners::SuppressEventForwarding() {\n  repeater_->set_forwarding_enabled(false);\n}\n\n// class UnitTest\n\n// Gets the singleton UnitTest object.  The first time this method is\n// called, a UnitTest object is constructed and returned.  Consecutive\n// calls will return the same object.\n//\n// We don't protect this under mutex_ as a user is not supposed to\n// call this before main() starts, from which point on the return\n// value will never change.\nUnitTest* UnitTest::GetInstance() {\n  // When compiled with MSVC 7.1 in optimized mode, destroying the\n  // UnitTest object upon exiting the program messes up the exit code,\n  // causing successful tests to appear failed.  We have to use a\n  // different implementation in this case to bypass the compiler bug.\n  // This implementation makes the compiler happy, at the cost of\n  // leaking the UnitTest object.\n\n  // CodeGear C++Builder insists on a public destructor for the\n  // default implementation.  Use this implementation to keep good OO\n  // design with private destructor.\n\n#if (_MSC_VER == 1310 && !defined(_DEBUG)) || defined(__BORLANDC__)\n  static UnitTest* const instance = new UnitTest;\n  return instance;\n#else\n  static UnitTest instance;\n  return &instance;\n#endif  // (_MSC_VER == 1310 && !defined(_DEBUG)) || defined(__BORLANDC__)\n}\n\n// Gets the number of successful test cases.\nint UnitTest::successful_test_case_count() const {\n  return impl()->successful_test_case_count();\n}\n\n// Gets the number of failed test cases.\nint UnitTest::failed_test_case_count() const {\n  return impl()->failed_test_case_count();\n}\n\n// Gets the number of all test cases.\nint UnitTest::total_test_case_count() const {\n  return impl()->total_test_case_count();\n}\n\n// Gets the number of all test cases that contain at least one test\n// that should run.\nint UnitTest::test_case_to_run_count() const {\n  return impl()->test_case_to_run_count();\n}\n\n// Gets the number of successful tests.\nint UnitTest::successful_test_count() const {\n  return impl()->successful_test_count();\n}\n\n// Gets the number of failed tests.\nint UnitTest::failed_test_count() const { return impl()->failed_test_count(); }\n\n// Gets the number of disabled tests that will be reported in the XML report.\nint UnitTest::reportable_disabled_test_count() const {\n  return impl()->reportable_disabled_test_count();\n}\n\n// Gets the number of disabled tests.\nint UnitTest::disabled_test_count() const {\n  return impl()->disabled_test_count();\n}\n\n// Gets the number of tests to be printed in the XML report.\nint UnitTest::reportable_test_count() const {\n  return impl()->reportable_test_count();\n}\n\n// Gets the number of all tests.\nint UnitTest::total_test_count() const { return impl()->total_test_count(); }\n\n// Gets the number of tests that should run.\nint UnitTest::test_to_run_count() const { return impl()->test_to_run_count(); }\n\n// Gets the time of the test program start, in ms from the start of the\n// UNIX epoch.\ninternal::TimeInMillis UnitTest::start_timestamp() const {\n    return impl()->start_timestamp();\n}\n\n// Gets the elapsed time, in milliseconds.\ninternal::TimeInMillis UnitTest::elapsed_time() const {\n  return impl()->elapsed_time();\n}\n\n// Returns true iff the unit test passed (i.e. all test cases passed).\nbool UnitTest::Passed() const { return impl()->Passed(); }\n\n// Returns true iff the unit test failed (i.e. some test case failed\n// or something outside of all tests failed).\nbool UnitTest::Failed() const { return impl()->Failed(); }\n\n// Gets the i-th test case among all the test cases. i can range from 0 to\n// total_test_case_count() - 1. If i is not in that range, returns nullptr.\nconst TestCase* UnitTest::GetTestCase(int i) const {\n  return impl()->GetTestCase(i);\n}\n\n// Returns the TestResult containing information on test failures and\n// properties logged outside of individual test cases.\nconst TestResult& UnitTest::ad_hoc_test_result() const {\n  return *impl()->ad_hoc_test_result();\n}\n\n// Gets the i-th test case among all the test cases. i can range from 0 to\n// total_test_case_count() - 1. If i is not in that range, returns nullptr.\nTestCase* UnitTest::GetMutableTestCase(int i) {\n  return impl()->GetMutableTestCase(i);\n}\n\n// Returns the list of event listeners that can be used to track events\n// inside Google Test.\nTestEventListeners& UnitTest::listeners() {\n  return *impl()->listeners();\n}\n\n// Registers and returns a global test environment.  When a test\n// program is run, all global test environments will be set-up in the\n// order they were registered.  After all tests in the program have\n// finished, all global test environments will be torn-down in the\n// *reverse* order they were registered.\n//\n// The UnitTest object takes ownership of the given environment.\n//\n// We don't protect this under mutex_, as we only support calling it\n// from the main thread.\nEnvironment* UnitTest::AddEnvironment(Environment* env) {\n  if (env == nullptr) {\n    return nullptr;\n  }\n\n  impl_->environments().push_back(env);\n  return env;\n}\n\n// Adds a TestPartResult to the current TestResult object.  All Google Test\n// assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc) eventually call\n// this to report their results.  The user code should use the\n// assertion macros instead of calling this directly.\nvoid UnitTest::AddTestPartResult(\n    TestPartResult::Type result_type,\n    const char* file_name,\n    int line_number,\n    const std::string& message,\n    const std::string& os_stack_trace) GTEST_LOCK_EXCLUDED_(mutex_) {\n  Message msg;\n  msg << message;\n\n  internal::MutexLock lock(&mutex_);\n  if (impl_->gtest_trace_stack().size() > 0) {\n    msg << \"\\n\" << GTEST_NAME_ << \" trace:\";\n\n    for (int i = static_cast<int>(impl_->gtest_trace_stack().size());\n         i > 0; --i) {\n      const internal::TraceInfo& trace = impl_->gtest_trace_stack()[i - 1];\n      msg << \"\\n\" << internal::FormatFileLocation(trace.file, trace.line)\n          << \" \" << trace.message;\n    }\n  }\n\n  if (os_stack_trace.c_str() != nullptr && !os_stack_trace.empty()) {\n    msg << internal::kStackTraceMarker << os_stack_trace;\n  }\n\n  const TestPartResult result =\n    TestPartResult(result_type, file_name, line_number,\n                   msg.GetString().c_str());\n  impl_->GetTestPartResultReporterForCurrentThread()->\n      ReportTestPartResult(result);\n\n  if (result_type != TestPartResult::kSuccess) {\n    // gtest_break_on_failure takes precedence over\n    // gtest_throw_on_failure.  This allows a user to set the latter\n    // in the code (perhaps in order to use Google Test assertions\n    // with another testing framework) and specify the former on the\n    // command line for debugging.\n    if (GTEST_FLAG(break_on_failure)) {\n#if GTEST_OS_WINDOWS\n      // Using DebugBreak on Windows allows gtest to still break into a debugger\n      // when a failure happens and both the --gtest_break_on_failure and\n      // the --gtest_catch_exceptions flags are specified.\n      DebugBreak();\n#else\n      // Dereference nullptr through a volatile pointer to prevent the compiler\n      // from removing. We use this rather than abort() or __builtin_trap() for\n      // portability: Symbian doesn't implement abort() well, and some debuggers\n      // don't correctly trap abort().\n      *static_cast<volatile int*>(nullptr) = 1;\n#endif  // GTEST_OS_WINDOWS\n    } else if (GTEST_FLAG(throw_on_failure)) {\n#if GTEST_HAS_EXCEPTIONS\n      throw internal::GoogleTestFailureException(result);\n#else\n      // We cannot call abort() as it generates a pop-up in debug mode\n      // that cannot be suppressed in VC 7.1 or below.\n      std::exit(1);\n#endif\n    }\n  }\n}\n\n// Adds a TestProperty to the current TestResult object when invoked from\n// inside a test, to current TestCase's ad_hoc_test_result_ when invoked\n// from SetUpTestCase or TearDownTestCase, or to the global property set\n// when invoked elsewhere.  If the result already contains a property with\n// the same key, the value will be updated.\nvoid UnitTest::RecordProperty(const std::string& key,\n                              const std::string& value) {\n  impl_->RecordProperty(TestProperty(key, value));\n}\n\n// Runs all tests in this UnitTest object and prints the result.\n// Returns 0 if successful, or 1 otherwise.\n//\n// We don't protect this under mutex_, as we only support calling it\n// from the main thread.\nint UnitTest::Run() {\n  const bool in_death_test_child_process =\n      internal::GTEST_FLAG(internal_run_death_test).length() > 0;\n\n  // Google Test implements this protocol for catching that a test\n  // program exits before returning control to Google Test:\n  //\n  //   1. Upon start, Google Test creates a file whose absolute path\n  //      is specified by the environment variable\n  //      TEST_PREMATURE_EXIT_FILE.\n  //   2. When Google Test has finished its work, it deletes the file.\n  //\n  // This allows a test runner to set TEST_PREMATURE_EXIT_FILE before\n  // running a Google-Test-based test program and check the existence\n  // of the file at the end of the test execution to see if it has\n  // exited prematurely.\n\n  // If we are in the child process of a death test, don't\n  // create/delete the premature exit file, as doing so is unnecessary\n  // and will confuse the parent process.  Otherwise, create/delete\n  // the file upon entering/leaving this function.  If the program\n  // somehow exits before this function has a chance to return, the\n  // premature-exit file will be left undeleted, causing a test runner\n  // that understands the premature-exit-file protocol to report the\n  // test as having failed.\n  const internal::ScopedPrematureExitFile premature_exit_file(\n      in_death_test_child_process ?\n      nullptr : internal::posix::GetEnv(\"TEST_PREMATURE_EXIT_FILE\"));\n\n  // Captures the value of GTEST_FLAG(catch_exceptions).  This value will be\n  // used for the duration of the program.\n  impl()->set_catch_exceptions(GTEST_FLAG(catch_exceptions));\n\n#if GTEST_HAS_SEH\n  // Either the user wants Google Test to catch exceptions thrown by the\n  // tests or this is executing in the context of death test child\n  // process. In either case the user does not want to see pop-up dialogs\n  // about crashes - they are expected.\n  if (impl()->catch_exceptions() || in_death_test_child_process) {\n# if !GTEST_OS_WINDOWS_MOBILE\n    // SetErrorMode doesn't exist on CE.\n    SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOALIGNMENTFAULTEXCEPT |\n                 SEM_NOGPFAULTERRORBOX | SEM_NOOPENFILEERRORBOX);\n# endif  // !GTEST_OS_WINDOWS_MOBILE\n\n# if (defined(_MSC_VER) || GTEST_OS_WINDOWS_MINGW) && !GTEST_OS_WINDOWS_MOBILE\n    // Death test children can be terminated with _abort().  On Windows,\n    // _abort() can show a dialog with a warning message.  This forces the\n    // abort message to go to stderr instead.\n    _set_error_mode(_OUT_TO_STDERR);\n# endif\n\n# if _MSC_VER >= 1400 && !GTEST_OS_WINDOWS_MOBILE\n    // In the debug version, Visual Studio pops up a separate dialog\n    // offering a choice to debug the aborted program. We need to suppress\n    // this dialog or it will pop up for every EXPECT/ASSERT_DEATH statement\n    // executed. Google Test will notify the user of any unexpected\n    // failure via stderr.\n    //\n    // VC++ doesn't define _set_abort_behavior() prior to the version 8.0.\n    // Users of prior VC versions shall suffer the agony and pain of\n    // clicking through the countless debug dialogs.\n    // TODO(vladl@google.com): find a way to suppress the abort dialog() in the\n    // debug mode when compiled with VC 7.1 or lower.\n    if (!GTEST_FLAG(break_on_failure))\n      _set_abort_behavior(\n          0x0,                                    // Clear the following flags:\n          _WRITE_ABORT_MSG | _CALL_REPORTFAULT);  // pop-up window, core dump.\n# endif\n  }\n#endif  // GTEST_HAS_SEH\n\n  return internal::HandleExceptionsInMethodIfSupported(\n      impl(),\n      &internal::UnitTestImpl::RunAllTests,\n      \"auxiliary test code (environments or event listeners)\") ? 0 : 1;\n}\n\n// Returns the working directory when the first TEST() or TEST_F() was\n// executed.\nconst char* UnitTest::original_working_dir() const {\n  return impl_->original_working_dir_.c_str();\n}\n\n// Returns the TestCase object for the test that's currently running,\n// or nullptr if no test is running.\nconst TestCase* UnitTest::current_test_case() const\n    GTEST_LOCK_EXCLUDED_(mutex_) {\n  internal::MutexLock lock(&mutex_);\n  return impl_->current_test_case();\n}\n\n// Returns the TestInfo object for the test that's currently running,\n// or nullptr if no test is running.\nconst TestInfo* UnitTest::current_test_info() const\n    GTEST_LOCK_EXCLUDED_(mutex_) {\n  internal::MutexLock lock(&mutex_);\n  return impl_->current_test_info();\n}\n\n// Returns the random seed used at the start of the current test run.\nint UnitTest::random_seed() const { return impl_->random_seed(); }\n\n#if GTEST_HAS_PARAM_TEST\n// Returns ParameterizedTestCaseRegistry object used to keep track of\n// value-parameterized tests and instantiate and register them.\ninternal::ParameterizedTestCaseRegistry&\n    UnitTest::parameterized_test_registry()\n        GTEST_LOCK_EXCLUDED_(mutex_) {\n  return impl_->parameterized_test_registry();\n}\n#endif  // GTEST_HAS_PARAM_TEST\n\n// Creates an empty UnitTest.\nUnitTest::UnitTest() {\n  impl_ = new internal::UnitTestImpl(this);\n}\n\n// Destructor of UnitTest.\nUnitTest::~UnitTest() {\n  delete impl_;\n}\n\n// Pushes a trace defined by SCOPED_TRACE() on to the per-thread\n// Google Test trace stack.\nvoid UnitTest::PushGTestTrace(const internal::TraceInfo& trace)\n    GTEST_LOCK_EXCLUDED_(mutex_) {\n  internal::MutexLock lock(&mutex_);\n  impl_->gtest_trace_stack().push_back(trace);\n}\n\n// Pops a trace from the per-thread Google Test trace stack.\nvoid UnitTest::PopGTestTrace()\n    GTEST_LOCK_EXCLUDED_(mutex_) {\n  internal::MutexLock lock(&mutex_);\n  impl_->gtest_trace_stack().pop_back();\n}\n\nnamespace internal {\n\nUnitTestImpl::UnitTestImpl(UnitTest* parent)\n    : parent_(parent),\n#ifdef _MSC_VER\n# pragma warning(push)                    // Saves the current warning state.\n# pragma warning(disable:4355)            // Temporarily disables warning 4355\n                                         // (using this in initializer).\n      default_global_test_part_result_reporter_(this),\n      default_per_thread_test_part_result_reporter_(this),\n# pragma warning(pop)                     // Restores the warning state again.\n#else\n      default_global_test_part_result_reporter_(this),\n      default_per_thread_test_part_result_reporter_(this),\n#endif  // _MSC_VER\n      global_test_part_result_repoter_(\n          &default_global_test_part_result_reporter_),\n      per_thread_test_part_result_reporter_(\n          &default_per_thread_test_part_result_reporter_),\n#if GTEST_HAS_PARAM_TEST\n      parameterized_test_registry_(),\n      parameterized_tests_registered_(false),\n#endif  // GTEST_HAS_PARAM_TEST\n      last_death_test_case_(-1),\n      current_test_case_(nullptr),\n      current_test_info_(nullptr),\n      ad_hoc_test_result_(),\n      os_stack_trace_getter_(nullptr),\n      post_flag_parse_init_performed_(false),\n      random_seed_(0),  // Will be overridden by the flag before first use.\n      random_(0),  // Will be reseeded before first use.\n      start_timestamp_(0),\n      elapsed_time_(0),\n#if GTEST_HAS_DEATH_TEST\n      death_test_factory_(new DefaultDeathTestFactory),\n#endif\n      // Will be overridden by the flag before first use.\n      catch_exceptions_(false) {\n  listeners()->SetDefaultResultPrinter(new PrettyUnitTestResultPrinter);\n}\n\nUnitTestImpl::~UnitTestImpl() {\n  // Deletes every TestCase.\n  ForEach(test_cases_, internal::Delete<TestCase>);\n\n  // Deletes every Environment.\n  ForEach(environments_, internal::Delete<Environment>);\n\n  delete os_stack_trace_getter_;\n}\n\n// Adds a TestProperty to the current TestResult object when invoked in a\n// context of a test, to current test case's ad_hoc_test_result when invoke\n// from SetUpTestCase/TearDownTestCase, or to the global property set\n// otherwise.  If the result already contains a property with the same key,\n// the value will be updated.\nvoid UnitTestImpl::RecordProperty(const TestProperty& test_property) {\n  std::string xml_element;\n  TestResult* test_result;  // TestResult appropriate for property recording.\n\n  if (current_test_info_ != nullptr) {\n    xml_element = \"testcase\";\n    test_result = &(current_test_info_->result_);\n  } else if (current_test_case_ != nullptr) {\n    xml_element = \"testsuite\";\n    test_result = &(current_test_case_->ad_hoc_test_result_);\n  } else {\n    xml_element = \"testsuites\";\n    test_result = &ad_hoc_test_result_;\n  }\n  test_result->RecordProperty(xml_element, test_property);\n}\n\n#if GTEST_HAS_DEATH_TEST\n// Disables event forwarding if the control is currently in a death test\n// subprocess. Must not be called before InitGoogleTest.\nvoid UnitTestImpl::SuppressTestEventsIfInSubprocess() {\n  if (internal_run_death_test_flag_.get() != nullptr)\n    listeners()->SuppressEventForwarding();\n}\n#endif  // GTEST_HAS_DEATH_TEST\n\n// Initializes event listeners performing XML output as specified by\n// UnitTestOptions. Must not be called before InitGoogleTest.\nvoid UnitTestImpl::ConfigureXmlOutput() {\n  const std::string& output_format = UnitTestOptions::GetOutputFormat();\n  if (output_format == \"xml\") {\n    listeners()->SetDefaultXmlGenerator(new XmlUnitTestResultPrinter(\n        UnitTestOptions::GetAbsolutePathToOutputFile().c_str()));\n  } else if (output_format != \"\") {\n    std::cout << \"WARNING: unrecognized output format \\\"\" << output_format\n         << \"\\\" ignored.\" << std::endl;\n    std::cout.flush();\n  }\n}\n\n#if GTEST_CAN_STREAM_RESULTS_\n// Initializes event listeners for streaming test results in string form.\n// Must not be called before InitGoogleTest.\nvoid UnitTestImpl::ConfigureStreamingOutput() {\n  const std::string& target = GTEST_FLAG(stream_result_to);\n  if (!target.empty()) {\n    const size_t pos = target.find(':');\n    if (pos != std::string::npos) {\n      listeners()->Append(new StreamingListener(target.substr(0, pos),\n                                                target.substr(pos+1)));\n    } else {\n      std::cout << \"WARNING: unrecognized streaming target \\\"\" << target << \"\\\" ignored.\" << std::endl;\n      std::cout.flush();\n    }\n  }\n}\n#endif  // GTEST_CAN_STREAM_RESULTS_\n\n// Performs initialization dependent upon flag values obtained in\n// ParseGoogleTestFlagsOnly.  Is called from InitGoogleTest after the call to\n// ParseGoogleTestFlagsOnly.  In case a user neglects to call InitGoogleTest\n// this function is also called from RunAllTests.  Since this function can be\n// called more than once, it has to be idempotent.\nvoid UnitTestImpl::PostFlagParsingInit() {\n  // Ensures that this function does not execute more than once.\n  if (!post_flag_parse_init_performed_) {\n    post_flag_parse_init_performed_ = true;\n\n#if GTEST_HAS_DEATH_TEST\n    InitDeathTestSubprocessControlInfo();\n    SuppressTestEventsIfInSubprocess();\n#endif  // GTEST_HAS_DEATH_TEST\n\n    // Registers parameterized tests. This makes parameterized tests\n    // available to the UnitTest reflection API without running\n    // RUN_ALL_TESTS.\n    RegisterParameterizedTests();\n\n    // Configures listeners for XML output. This makes it possible for users\n    // to shut down the default XML output before invoking RUN_ALL_TESTS.\n    ConfigureXmlOutput();\n\n#if GTEST_CAN_STREAM_RESULTS_\n    // Configures listeners for streaming test results to the specified server.\n    ConfigureStreamingOutput();\n#endif  // GTEST_CAN_STREAM_RESULTS_\n  }\n}\n\n// A predicate that checks the name of a TestCase against a known\n// value.\n//\n// This is used for implementation of the UnitTest class only.  We put\n// it in the anonymous namespace to prevent polluting the outer\n// namespace.\n//\n// TestCaseNameIs is copyable.\nclass TestCaseNameIs {\n public:\n  // Constructor.\n  explicit TestCaseNameIs(const std::string& name)\n      : name_(name) {}\n\n  // Returns true iff the name of test_case matches name_.\n  bool operator()(const TestCase* test_case) const {\n    return test_case != nullptr && strcmp(test_case->name(), name_.c_str()) == 0;\n  }\n\n private:\n  std::string name_;\n};\n\n// Finds and returns a TestCase with the given name.  If one doesn't\n// exist, creates one and returns it.  It's the CALLER'S\n// RESPONSIBILITY to ensure that this function is only called WHEN THE\n// TESTS ARE NOT SHUFFLED.\n//\n// Arguments:\n//\n//   test_case_name: name of the test case\n//   type_param:     the name of the test case's type parameter, or nullptr if\n//                   this is not a typed or a type-parameterized test case.\n//   set_up_tc:      pointer to the function that sets up the test case\n//   tear_down_tc:   pointer to the function that tears down the test case\nTestCase* UnitTestImpl::GetTestCase(const char* test_case_name,\n                                    const char* type_param,\n                                    Test::SetUpTestCaseFunc set_up_tc,\n                                    Test::TearDownTestCaseFunc tear_down_tc) {\n  // Can we find a TestCase with the given name?\n  const std::vector<TestCase*>::const_iterator test_case =\n      std::find_if(test_cases_.begin(), test_cases_.end(),\n                   TestCaseNameIs(test_case_name));\n\n  if (test_case != test_cases_.end())\n    return *test_case;\n\n  // No.  Let's create one.\n  TestCase* const new_test_case =\n      new TestCase(test_case_name, type_param, set_up_tc, tear_down_tc);\n\n  // Is this a death test case?\n  if (internal::UnitTestOptions::MatchesFilter(test_case_name,\n                                               kDeathTestCaseFilter)) {\n    // Yes.  Inserts the test case after the last death test case\n    // defined so far.  This only works when the test cases haven't\n    // been shuffled.  Otherwise we may end up running a death test\n    // after a non-death test.\n    ++last_death_test_case_;\n    test_cases_.insert(test_cases_.begin() + last_death_test_case_,\n                       new_test_case);\n  } else {\n    // No.  Appends to the end of the list.\n    test_cases_.push_back(new_test_case);\n  }\n\n  test_case_indices_.push_back(static_cast<int>(test_case_indices_.size()));\n  return new_test_case;\n}\n\n// Helpers for setting up / tearing down the given environment.  They\n// are for use in the ForEach() function.\nstatic void SetUpEnvironment(Environment* env) { env->SetUp(); }\nstatic void TearDownEnvironment(Environment* env) { env->TearDown(); }\n\n// Runs all tests in this UnitTest object, prints the result, and\n// returns true if all tests are successful.  If any exception is\n// thrown during a test, the test is considered to be failed, but the\n// rest of the tests will still be run.\n//\n// When parameterized tests are enabled, it expands and registers\n// parameterized tests first in RegisterParameterizedTests().\n// All other functions called from RunAllTests() may safely assume that\n// parameterized tests are ready to be counted and run.\nbool UnitTestImpl::RunAllTests() {\n  // Makes sure InitGoogleTest() was called.\n  if (!GTestIsInitialized()) {\n    std::cout << std::endl;\n    std::cout << \"This test program did NOT call ::testing::InitGoogleTest before calling RUN_ALL_TESTS().  Please fix it.\" << std::endl;\n    return false;\n  }\n\n  // Do not run any test if the --help flag was specified.\n  if (g_help_flag)\n    return true;\n\n  // Repeats the call to the post-flag parsing initialization in case the\n  // user didn't call InitGoogleTest.\n  PostFlagParsingInit();\n\n  // Even if sharding is not on, test runners may want to use the\n  // GTEST_SHARD_STATUS_FILE to query whether the test supports the sharding\n  // protocol.\n  internal::WriteToShardStatusFileIfNeeded();\n\n  // True iff we are in a subprocess for running a thread-safe-style\n  // death test.\n  bool in_subprocess_for_death_test = false;\n\n#if GTEST_HAS_DEATH_TEST\n  in_subprocess_for_death_test = (internal_run_death_test_flag_.get() != nullptr);\n#endif  // GTEST_HAS_DEATH_TEST\n\n  const bool should_shard = ShouldShard(kTestTotalShards, kTestShardIndex,\n                                        in_subprocess_for_death_test);\n\n  // Compares the full test names with the filter to decide which\n  // tests to run.\n  const bool has_tests_to_run = FilterTests(should_shard\n                                              ? HONOR_SHARDING_PROTOCOL\n                                              : IGNORE_SHARDING_PROTOCOL) > 0;\n\n  // Lists the tests and exits if the --gtest_list_tests flag was specified.\n  if (GTEST_FLAG(list_tests)) {\n    // This must be called *after* FilterTests() has been called.\n    ListTestsMatchingFilter();\n    return true;\n  }\n\n  random_seed_ = GTEST_FLAG(shuffle) ?\n      GetRandomSeedFromFlag(GTEST_FLAG(random_seed)) : 0;\n\n  // True iff at least one test has failed.\n  bool failed = false;\n\n  TestEventListener* repeater = listeners()->repeater();\n\n  start_timestamp_ = GetTimeInMillis();\n  repeater->OnTestProgramStart(*parent_);\n\n  // How many times to repeat the tests?  We don't want to repeat them\n  // when we are inside the subprocess of a death test.\n  const int repeat = in_subprocess_for_death_test ? 1 : GTEST_FLAG(repeat);\n  // Repeats forever if the repeat count is negative.\n  const bool _forever = repeat < 0;\n  for (int i = 0; _forever || i != repeat; i++) {\n    // We want to preserve failures generated by ad-hoc test\n    // assertions executed before RUN_ALL_TESTS().\n    ClearNonAdHocTestResult();\n\n    const TimeInMillis start = GetTimeInMillis();\n\n    // Shuffles test cases and tests if requested.\n    if (has_tests_to_run && GTEST_FLAG(shuffle)) {\n      random()->Reseed(random_seed_);\n      // This should be done before calling OnTestIterationStart(),\n      // such that a test event listener can see the actual test order\n      // in the event.\n      ShuffleTests();\n    }\n\n    // Tells the unit test event listeners that the tests are about to start.\n    repeater->OnTestIterationStart(*parent_, i);\n\n    // Runs each test case if there is at least one test to run.\n    if (has_tests_to_run) {\n      // Sets up all environments beforehand.\n      repeater->OnEnvironmentsSetUpStart(*parent_);\n      ForEach(environments_, SetUpEnvironment);\n      repeater->OnEnvironmentsSetUpEnd(*parent_);\n\n      // Runs the tests only if there was no fatal failure during global\n      // set-up.\n      if (!Test::HasFatalFailure()) {\n        for (int test_index = 0; test_index < total_test_case_count();\n             test_index++) {\n          GetMutableTestCase(test_index)->Run();\n        }\n      }\n\n      // Tears down all environments in reverse order afterwards.\n      repeater->OnEnvironmentsTearDownStart(*parent_);\n      std::for_each(environments_.rbegin(), environments_.rend(),\n                    TearDownEnvironment);\n      repeater->OnEnvironmentsTearDownEnd(*parent_);\n    }\n\n    elapsed_time_ = GetTimeInMillis() - start;\n\n    // Tells the unit test event listener that the tests have just finished.\n    repeater->OnTestIterationEnd(*parent_, i);\n\n    // Gets the result and clears it.\n    if (!Passed()) {\n      failed = true;\n    }\n\n    // Restores the original test order after the iteration.  This\n    // allows the user to quickly repro a failure that happens in the\n    // N-th iteration without repeating the first (N - 1) iterations.\n    // This is not enclosed in \"if (GTEST_FLAG(shuffle)) { ... }\", in\n    // case the user somehow changes the value of the flag somewhere\n    // (it's always safe to unshuffle the tests).\n    UnshuffleTests();\n\n    if (GTEST_FLAG(shuffle)) {\n      // Picks a new random seed for each iteration.\n      random_seed_ = GetNextRandomSeed(random_seed_);\n    }\n  }\n\n  repeater->OnTestProgramEnd(*parent_);\n\n  return !failed;\n}\n\n// Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file\n// if the variable is present. If a file already exists at this location, this\n// function will write over it. If the variable is present, but the file cannot\n// be created, prints an error and exits.\nvoid WriteToShardStatusFileIfNeeded() {\n  const char* const test_shard_file = posix::GetEnv(kTestShardStatusFile);\n  if (test_shard_file != nullptr) {\n    FILE* const file = posix::FOpen(test_shard_file, \"w\");\n    if (file == nullptr) {\n      ColoredPrintf(COLOR_RED,\n                    \"Could not write to the test shard status file \\\"%s\\\" \"\n                    \"specified by the %s environment variable.\\n\",\n                    test_shard_file, kTestShardStatusFile);\n      std::cout.flush();\n      std::exit(EXIT_FAILURE);\n    }\n    fclose(file);\n  }\n}\n\n// Checks whether sharding is enabled by examining the relevant\n// environment variable values. If the variables are present,\n// but inconsistent (i.e., shard_index >= total_shards), prints\n// an error and exits. If in_subprocess_for_death_test, sharding is\n// disabled because it must only be applied to the original test\n// process. Otherwise, we could filter out death tests we intended to execute.\nbool ShouldShard(const char* total_shards_env,\n                 const char* shard_index_env,\n                 bool in_subprocess_for_death_test) {\n  if (in_subprocess_for_death_test) {\n    return false;\n  }\n\n  const Int32 total_shards = Int32FromEnvOrDie(total_shards_env, -1);\n  const Int32 shard_index = Int32FromEnvOrDie(shard_index_env, -1);\n\n  if (total_shards == -1 && shard_index == -1) {\n    return false;\n  } else if (total_shards == -1 && shard_index != -1) {\n    const Message msg = Message()\n      << \"Invalid environment variables: you have \"\n      << kTestShardIndex << \" = \" << shard_index\n      << \", but have left \" << kTestTotalShards << \" unset.\\n\";\n    ColoredPrintf(COLOR_RED, msg.GetString().c_str());\n    fflush(stdout);\n    std::exit(EXIT_FAILURE);\n  } else if (total_shards != -1 && shard_index == -1) {\n    const Message msg = Message()\n      << \"Invalid environment variables: you have \"\n      << kTestTotalShards << \" = \" << total_shards\n      << \", but have left \" << kTestShardIndex << \" unset.\\n\";\n    ColoredPrintf(COLOR_RED, msg.GetString().c_str());\n    fflush(stdout);\n    std::exit(EXIT_FAILURE);\n  } else if (shard_index < 0 || shard_index >= total_shards) {\n    const Message msg = Message()\n      << \"Invalid environment variables: we require 0 <= \"\n      << kTestShardIndex << \" < \" << kTestTotalShards\n      << \", but you have \" << kTestShardIndex << \"=\" << shard_index\n      << \", \" << kTestTotalShards << \"=\" << total_shards << \".\\n\";\n    ColoredPrintf(COLOR_RED, msg.GetString().c_str());\n    fflush(stdout);\n    std::exit(EXIT_FAILURE);\n  }\n\n  return total_shards > 1;\n}\n\n// Parses the environment variable var as an Int32. If it is unset,\n// returns default_val. If it is not an Int32, prints an error\n// and aborts.\nInt32 Int32FromEnvOrDie(const char* var, Int32 default_val) {\n  const char* str_val = posix::GetEnv(var);\n  if (str_val == nullptr) {\n    return default_val;\n  }\n\n  Int32 result;\n  if (!ParseInt32(Message() << \"The value of environment variable \" << var,\n                  str_val, &result)) {\n    std::exit(EXIT_FAILURE);\n  }\n  return result;\n}\n\n// Given the total number of shards, the shard index, and the test id,\n// returns true iff the test should be run on this shard. The test id is\n// some arbitrary but unique non-negative integer assigned to each test\n// method. Assumes that 0 <= shard_index < total_shards.\nbool ShouldRunTestOnShard(int total_shards, int shard_index, int test_id) {\n  return (test_id % total_shards) == shard_index;\n}\n\n// Compares the name of each test with the user-specified filter to\n// decide whether the test should be run, then records the result in\n// each TestCase and TestInfo object.\n// If shard_tests == true, further filters tests based on sharding\n// variables in the environment - see\n// http://code.google.com/p/googletest/wiki/GoogleTestAdvancedGuide.\n// Returns the number of tests that should run.\nint UnitTestImpl::FilterTests(ReactionToSharding shard_tests) {\n  const Int32 total_shards = shard_tests == HONOR_SHARDING_PROTOCOL ?\n      Int32FromEnvOrDie(kTestTotalShards, -1) : -1;\n  const Int32 shard_index = shard_tests == HONOR_SHARDING_PROTOCOL ?\n      Int32FromEnvOrDie(kTestShardIndex, -1) : -1;\n\n  // num_runnable_tests are the number of tests that will\n  // run across all shards (i.e., match filter and are not disabled).\n  // num_selected_tests are the number of tests to be run on\n  // this shard.\n  int num_runnable_tests = 0;\n  int num_selected_tests = 0;\n  for (size_t i = 0; i < test_cases_.size(); i++) {\n    TestCase* const test_case = test_cases_[i];\n    const std::string &test_case_name = test_case->name();\n    test_case->set_should_run(false);\n\n    for (size_t j = 0; j < test_case->test_info_list().size(); j++) {\n      TestInfo* const test_info = test_case->test_info_list()[j];\n      const std::string test_name(test_info->name());\n      // A test is disabled if test case name or test name matches\n      // kDisableTestFilter.\n      const bool is_disabled =\n          internal::UnitTestOptions::MatchesFilter(test_case_name,\n                                                   kDisableTestFilter) ||\n          internal::UnitTestOptions::MatchesFilter(test_name,\n                                                   kDisableTestFilter);\n      test_info->is_disabled_ = is_disabled;\n\n      const bool matches_filter =\n          internal::UnitTestOptions::FilterMatchesTest(test_case_name,\n                                                       test_name);\n      test_info->matches_filter_ = matches_filter;\n\n      const bool is_runnable =\n          (GTEST_FLAG(also_run_disabled_tests) || !is_disabled) &&\n          matches_filter;\n\n      const bool is_selected = is_runnable &&\n          (shard_tests == IGNORE_SHARDING_PROTOCOL ||\n           ShouldRunTestOnShard(total_shards, shard_index,\n                                num_runnable_tests));\n\n      num_runnable_tests += is_runnable;\n      num_selected_tests += is_selected;\n\n      test_info->should_run_ = is_selected;\n      test_case->set_should_run(test_case->should_run() || is_selected);\n    }\n  }\n  return num_selected_tests;\n}\n\n// Prints the given C-string on a single line by replacing all '\\n'\n// characters with string \"\\\\n\".  If the output takes more than\n// max_length characters, only prints the first max_length characters\n// and \"...\".\nstatic void PrintOnOneLine(const char* str, int max_length) {\n  if (str != nullptr) {\n    for (int i = 0; *str != '\\0'; ++str) {\n      if (i >= max_length) {\n        std::cout << \"...\";\n        break;\n      }\n      if (*str == '\\n') {\n        std::cout << \"\\\\n\";\n        i += 2;\n      } else {\n        std::cout.put(*str);\n        ++i;\n      }\n    }\n  }\n}\n\n// Prints the names of the tests matching the user-specified filter flag.\nvoid UnitTestImpl::ListTestsMatchingFilter() {\n  // Print at most this many characters for each type/value parameter.\n  const int kMaxParamLength = 250;\n\n  for (size_t i = 0; i < test_cases_.size(); i++) {\n    const TestCase* const test_case = test_cases_[i];\n    bool printed_test_case_name = false;\n\n    for (size_t j = 0; j < test_case->test_info_list().size(); j++) {\n      const TestInfo* const test_info =\n          test_case->test_info_list()[j];\n      if (test_info->matches_filter_) {\n        if (!printed_test_case_name) {\n          printed_test_case_name = true;\n          std::cout << test_case->name() << \".\";\n          if (test_case->type_param() != nullptr) {\n            std::cout << \"  # \" << kTypeParamLabel << \" = \";\n            // We print the type parameter on a single line to make\n            // the output easy to parse by a program.\n            PrintOnOneLine(test_case->type_param(), kMaxParamLength);\n          }\n          std::cout << std::endl;\n        }\n        std::cout << \"  \" << test_info->name();\n        if (test_info->value_param() != nullptr) {\n          std::cout << \"  # \" << kValueParamLabel << \" = \";\n          // We print the value parameter on a single line to make the\n          // output easy to parse by a program.\n          PrintOnOneLine(test_info->value_param(), kMaxParamLength);\n        }\n        std::cout << std::endl;\n      }\n    }\n  }\n  std::cout.flush();\n}\n\n// Sets the OS stack trace getter.\n//\n// Does nothing if the input and the current OS stack trace getter are\n// the same; otherwise, deletes the old getter and makes the input the\n// current getter.\nvoid UnitTestImpl::set_os_stack_trace_getter(\n    OsStackTraceGetterInterface* getter) {\n  if (os_stack_trace_getter_ != getter) {\n    delete os_stack_trace_getter_;\n    os_stack_trace_getter_ = getter;\n  }\n}\n\n// Returns the current OS stack trace getter if it is not null;\n// otherwise, creates an OsStackTraceGetter, makes it the current\n// getter, and returns it.\nOsStackTraceGetterInterface* UnitTestImpl::os_stack_trace_getter() {\n  if (os_stack_trace_getter_ == nullptr) {\n    os_stack_trace_getter_ = new OsStackTraceGetter;\n  }\n\n  return os_stack_trace_getter_;\n}\n\n// Returns the TestResult for the test that's currently running, or\n// the TestResult for the ad hoc test if no test is running.\nTestResult* UnitTestImpl::current_test_result() {\n  return current_test_info_ ?\n      &(current_test_info_->result_) : &ad_hoc_test_result_;\n}\n\n// Shuffles all test cases, and the tests within each test case,\n// making sure that death tests are still run first.\nvoid UnitTestImpl::ShuffleTests() {\n  // Shuffles the death test cases.\n  ShuffleRange(random(), 0, last_death_test_case_ + 1, &test_case_indices_);\n\n  // Shuffles the non-death test cases.\n  ShuffleRange(random(), last_death_test_case_ + 1,\n               static_cast<int>(test_cases_.size()), &test_case_indices_);\n\n  // Shuffles the tests inside each test case.\n  for (size_t i = 0; i < test_cases_.size(); i++) {\n    test_cases_[i]->ShuffleTests(random());\n  }\n}\n\n// Restores the test cases and tests to their order before the first shuffle.\nvoid UnitTestImpl::UnshuffleTests() {\n  for (size_t i = 0; i < test_cases_.size(); i++) {\n    // Unshuffles the tests in each test case.\n    test_cases_[i]->UnshuffleTests();\n    // Resets the index of each test case.\n    test_case_indices_[i] = static_cast<int>(i);\n  }\n}\n\n// Returns the current OS stack trace as an std::string.\n//\n// The maximum number of stack frames to be included is specified by\n// the gtest_stack_trace_depth flag.  The skip_count parameter\n// specifies the number of top frames to be skipped, which doesn't\n// count against the number of frames to be included.\n//\n// For example, if Foo() calls Bar(), which in turn calls\n// GetCurrentOsStackTraceExceptTop(..., 1), Foo() will be included in\n// the trace but Bar() and GetCurrentOsStackTraceExceptTop() won't.\nstd::string GetCurrentOsStackTraceExceptTop(UnitTest* /*unit_test*/,\n                                            int skip_count) {\n  // We pass skip_count + 1 to skip this wrapper function in addition\n  // to what the user really wants to skip.\n  return GetUnitTestImpl()->CurrentOsStackTraceExceptTop(skip_count + 1);\n}\n\n// Used by the GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_ macro to\n// suppress unreachable code warnings.\nnamespace {\nclass ClassUniqueToAlwaysTrue {};\n}\n\nbool IsTrue(bool condition) { return condition; }\n\nbool AlwaysTrue() {\n#if GTEST_HAS_EXCEPTIONS\n  // This condition is always false so AlwaysTrue() never actually throws,\n  // but it makes the compiler think that it may throw.\n  if (IsTrue(false))\n    throw ClassUniqueToAlwaysTrue();\n#endif  // GTEST_HAS_EXCEPTIONS\n  return true;\n}\n\n// If *pstr starts with the given prefix, modifies *pstr to be right\n// past the prefix and returns true; otherwise leaves *pstr unchanged\n// and returns false.  None of pstr, *pstr, and prefix can be null.\nbool SkipPrefix(const char* prefix, const char** pstr) {\n  const size_t prefix_len = strlen(prefix);\n  if (strncmp(*pstr, prefix, prefix_len) == 0) {\n    *pstr += prefix_len;\n    return true;\n  }\n  return false;\n}\n\n// Parses a string as a command line flag.  The string should have\n// the format \"--flag=value\".  When def_optional is true, the \"=value\"\n// part can be omitted.\n//\n// Returns the value of the flag, or nullptr if the parsing failed.\nconst char* ParseFlagValue(const char* str,\n                           const char* flag,\n                           bool def_optional) {\n  // str and flag must not be null.\n  if (str == nullptr || flag == nullptr) return nullptr;\n\n  // The flag must start with \"--\" followed by GTEST_FLAG_PREFIX_.\n  const std::string flag_str = std::string(\"--\") + GTEST_FLAG_PREFIX_ + flag;\n  const size_t flag_len = flag_str.length();\n  if (strncmp(str, flag_str.c_str(), flag_len) != 0) return nullptr;\n\n  // Skips the flag name.\n  const char* flag_end = str + flag_len;\n\n  // When def_optional is true, it's OK to not have a \"=value\" part.\n  if (def_optional && (flag_end[0] == '\\0')) {\n    return flag_end;\n  }\n\n  // If def_optional is true and there are more characters after the\n  // flag name, or if def_optional is false, there must be a '=' after\n  // the flag name.\n  if (flag_end[0] != '=') return nullptr;\n\n  // Returns the string after \"=\".\n  return flag_end + 1;\n}\n\n// Parses a string for a bool flag, in the form of either\n// \"--flag=value\" or \"--flag\".\n//\n// In the former case, the value is taken as true as long as it does\n// not start with '0', 'f', or 'F'.\n//\n// In the latter case, the value is taken as true.\n//\n// On success, stores the value of the flag in *value, and returns\n// true.  On failure, returns false without changing *value.\nbool ParseBoolFlag(const char* str, const char* flag, bool* value) {\n  // Gets the value of the flag as a string.\n  const char* const value_str = ParseFlagValue(str, flag, true);\n\n  // Aborts if the parsing failed.\n  if (value_str == nullptr) return false;\n\n  // Converts the string value to a bool.\n  *value = !(*value_str == '0' || *value_str == 'f' || *value_str == 'F');\n  return true;\n}\n\n// Parses a string for an Int32 flag, in the form of\n// \"--flag=value\".\n//\n// On success, stores the value of the flag in *value, and returns\n// true.  On failure, returns false without changing *value.\nbool ParseInt32Flag(const char* str, const char* flag, Int32* value) {\n  // Gets the value of the flag as a string.\n  const char* const value_str = ParseFlagValue(str, flag, false);\n\n  // Aborts if the parsing failed.\n  if (value_str == nullptr) return false;\n\n  // Sets *value to the value of the flag.\n  return ParseInt32(Message() << \"The value of flag --\" << flag,\n                    value_str, value);\n}\n\n// Parses a string for a string flag, in the form of\n// \"--flag=value\".\n//\n// On success, stores the value of the flag in *value, and returns\n// true.  On failure, returns false without changing *value.\nbool ParseStringFlag(const char* str, const char* flag, std::string* value) {\n  // Gets the value of the flag as a string.\n  const char* const value_str = ParseFlagValue(str, flag, false);\n\n  // Aborts if the parsing failed.\n  if (value_str == nullptr) return false;\n\n  // Sets *value to the value of the flag.\n  *value = value_str;\n  return true;\n}\n\n// Determines whether a string has a prefix that Google Test uses for its\n// flags, i.e., starts with GTEST_FLAG_PREFIX_ or GTEST_FLAG_PREFIX_DASH_.\n// If Google Test detects that a command line flag has its prefix but is not\n// recognized, it will print its help message. Flags starting with\n// GTEST_INTERNAL_PREFIX_ followed by \"internal_\" are considered Google Test\n// internal flags and do not trigger the help message.\nstatic bool HasGoogleTestFlagPrefix(const char* str) {\n  return (SkipPrefix(\"--\", &str) ||\n          SkipPrefix(\"-\", &str) ||\n          SkipPrefix(\"/\", &str)) &&\n         !SkipPrefix(GTEST_FLAG_PREFIX_ \"internal_\", &str) &&\n         (SkipPrefix(GTEST_FLAG_PREFIX_, &str) ||\n          SkipPrefix(GTEST_FLAG_PREFIX_DASH_, &str));\n}\n\n// Prints a string containing code-encoded text.  The following escape\n// sequences can be used in the string to control the text color:\n//\n//   @@    prints a single '@' character.\n//   @R    changes the color to red.\n//   @G    changes the color to green.\n//   @Y    changes the color to yellow.\n//   @D    changes to the default terminal text color.\n//\n// TODO(wan@google.com): Write tests for this once we add stdout\n// capturing to Google Test.\nstatic void PrintColorEncoded(const char* str) {\n  GTestColor color = COLOR_DEFAULT;  // The current color.\n\n  // Conceptually, we split the string into segments divided by escape\n  // sequences.  Then we print one segment at a time.  At the end of\n  // each iteration, the str pointer advances to the beginning of the\n  // next segment.\n  for (;;) {\n    const char* p = strchr(str, '@');\n    if (p == nullptr) {\n      ColoredPrintf(color, \"%s\", str);\n      return;\n    }\n\n    ColoredPrintf(color, \"%s\", std::string(str, p).c_str());\n\n    const char ch = p[1];\n    str = p + 2;\n    if (ch == '@') {\n      ColoredPrintf(color, \"@\");\n    } else if (ch == 'D') {\n      color = COLOR_DEFAULT;\n    } else if (ch == 'R') {\n      color = COLOR_RED;\n    } else if (ch == 'G') {\n      color = COLOR_GREEN;\n    } else if (ch == 'Y') {\n      color = COLOR_YELLOW;\n    } else {\n      --str;\n    }\n  }\n}\n\nstatic const char kColorEncodedHelpMessage[] =\n\"This program contains tests written using \" GTEST_NAME_ \". You can use the\\n\"\n\"following command line flags to control its behavior:\\n\"\n\"\\n\"\n\"Test Selection:\\n\"\n\"  @G--\" GTEST_FLAG_PREFIX_ \"list_tests@D\\n\"\n\"      List the names of all tests instead of running them. The name of\\n\"\n\"      TEST(Foo, Bar) is \\\"Foo.Bar\\\".\\n\"\n\"  @G--\" GTEST_FLAG_PREFIX_ \"filter=@YPOSTIVE_PATTERNS\"\n    \"[@G-@YNEGATIVE_PATTERNS]@D\\n\"\n\"      Run only the tests whose name matches one of the positive patterns but\\n\"\n\"      none of the negative patterns. '?' matches any single character; '*'\\n\"\n\"      matches any substring; ':' separates two patterns.\\n\"\n\"  @G--\" GTEST_FLAG_PREFIX_ \"also_run_disabled_tests@D\\n\"\n\"      Run all disabled tests too.\\n\"\n\"\\n\"\n\"Test Execution:\\n\"\n\"  @G--\" GTEST_FLAG_PREFIX_ \"repeat=@Y[COUNT]@D\\n\"\n\"      Run the tests repeatedly; use a negative count to repeat forever.\\n\"\n\"  @G--\" GTEST_FLAG_PREFIX_ \"shuffle@D\\n\"\n\"      Randomize tests' orders on every iteration.\\n\"\n\"  @G--\" GTEST_FLAG_PREFIX_ \"random_seed=@Y[NUMBER]@D\\n\"\n\"      Random number seed to use for shuffling test orders (between 1 and\\n\"\n\"      99999, or 0 to use a seed based on the current time).\\n\"\n\"\\n\"\n\"Test Output:\\n\"\n\"  @G--\" GTEST_FLAG_PREFIX_ \"color=@Y(@Gyes@Y|@Gno@Y|@Gauto@Y)@D\\n\"\n\"      Enable/disable colored output. The default is @Gauto@D.\\n\"\n\"  -@G-\" GTEST_FLAG_PREFIX_ \"print_time=0@D\\n\"\n\"      Don't print the elapsed time of each test.\\n\"\n\"  @G--\" GTEST_FLAG_PREFIX_ \"output=xml@Y[@G:@YDIRECTORY_PATH@G\"\n    GTEST_PATH_SEP_ \"@Y|@G:@YFILE_PATH]@D\\n\"\n\"      Generate an XML report in the given directory or with the given file\\n\"\n\"      name. @YFILE_PATH@D defaults to @Gtest_details.xml@D.\\n\"\n#if GTEST_CAN_STREAM_RESULTS_\n\"  @G--\" GTEST_FLAG_PREFIX_ \"stream_result_to=@YHOST@G:@YPORT@D\\n\"\n\"      Stream test results to the given server.\\n\"\n#endif  // GTEST_CAN_STREAM_RESULTS_\n\"\\n\"\n\"Assertion Behavior:\\n\"\n#if GTEST_HAS_DEATH_TEST && !GTEST_OS_WINDOWS\n\"  @G--\" GTEST_FLAG_PREFIX_ \"death_test_style=@Y(@Gfast@Y|@Gthreadsafe@Y)@D\\n\"\n\"      Set the default death test style.\\n\"\n#endif  // GTEST_HAS_DEATH_TEST && !GTEST_OS_WINDOWS\n\"  @G--\" GTEST_FLAG_PREFIX_ \"break_on_failure@D\\n\"\n\"      Turn assertion failures into debugger break-points.\\n\"\n\"  @G--\" GTEST_FLAG_PREFIX_ \"throw_on_failure@D\\n\"\n\"      Turn assertion failures into C++ exceptions.\\n\"\n\"  @G--\" GTEST_FLAG_PREFIX_ \"catch_exceptions=0@D\\n\"\n\"      Do not report exceptions as test failures. Instead, allow them\\n\"\n\"      to crash the program or throw a pop-up (on Windows).\\n\"\n\"\\n\"\n\"Except for @G--\" GTEST_FLAG_PREFIX_ \"list_tests@D, you can alternatively set \"\n    \"the corresponding\\n\"\n\"environment variable of a flag (all letters in upper-case). For example, to\\n\"\n\"disable colored text output, you can either specify @G--\" GTEST_FLAG_PREFIX_\n    \"color=no@D or set\\n\"\n\"the @G\" GTEST_FLAG_PREFIX_UPPER_ \"COLOR@D environment variable to @Gno@D.\\n\"\n\"\\n\"\n\"For more information, please read the \" GTEST_NAME_ \" documentation at\\n\"\n\"@G\" GTEST_PROJECT_URL_ \"@D. If you find a bug in \" GTEST_NAME_ \"\\n\"\n\"(not one in your own code or tests), please report it to\\n\"\n\"@G<\" GTEST_DEV_EMAIL_ \">@D.\\n\";\n\n// Parses the command line for Google Test flags, without initializing\n// other parts of Google Test.  The type parameter CharType can be\n// instantiated to either char or wchar_t.\ntemplate <typename CharType>\nvoid ParseGoogleTestFlagsOnlyImpl(int* argc, CharType** argv) {\n  for (int i = 1; i < *argc; i++) {\n    const std::string arg_string = StreamableToString(argv[i]);\n    const char* const arg = arg_string.c_str();\n\n    using internal::ParseBoolFlag;\n    using internal::ParseInt32Flag;\n    using internal::ParseStringFlag;\n\n    // Do we see a Google Test flag?\n    if (ParseBoolFlag(arg, kAlsoRunDisabledTestsFlag,\n                      &GTEST_FLAG(also_run_disabled_tests)) ||\n        ParseBoolFlag(arg, kBreakOnFailureFlag,\n                      &GTEST_FLAG(break_on_failure)) ||\n        ParseBoolFlag(arg, kCatchExceptionsFlag,\n                      &GTEST_FLAG(catch_exceptions)) ||\n        ParseStringFlag(arg, kColorFlag, &GTEST_FLAG(color)) ||\n        ParseStringFlag(arg, kDeathTestStyleFlag,\n                        &GTEST_FLAG(death_test_style)) ||\n        ParseBoolFlag(arg, kDeathTestUseFork,\n                      &GTEST_FLAG(death_test_use_fork)) ||\n        ParseStringFlag(arg, kFilterFlag, &GTEST_FLAG(filter)) ||\n        ParseStringFlag(arg, kInternalRunDeathTestFlag,\n                        &GTEST_FLAG(internal_run_death_test)) ||\n        ParseBoolFlag(arg, kListTestsFlag, &GTEST_FLAG(list_tests)) ||\n        ParseStringFlag(arg, kOutputFlag, &GTEST_FLAG(output)) ||\n        ParseBoolFlag(arg, kPrintTimeFlag, &GTEST_FLAG(print_time)) ||\n        ParseInt32Flag(arg, kRandomSeedFlag, &GTEST_FLAG(random_seed)) ||\n        ParseInt32Flag(arg, kRepeatFlag, &GTEST_FLAG(repeat)) ||\n        ParseBoolFlag(arg, kShuffleFlag, &GTEST_FLAG(shuffle)) ||\n        ParseInt32Flag(arg, kStackTraceDepthFlag,\n                       &GTEST_FLAG(stack_trace_depth)) ||\n        ParseStringFlag(arg, kStreamResultToFlag,\n                        &GTEST_FLAG(stream_result_to)) ||\n        ParseBoolFlag(arg, kThrowOnFailureFlag,\n                      &GTEST_FLAG(throw_on_failure))\n        ) {\n      // Yes.  Shift the remainder of the argv list left by one.  Note\n      // that argv has (*argc + 1) elements, the last one always being\n      // nullptr.  The following loop moves the trailing null element as\n      // well.\n      for (int j = i; j != *argc; j++) {\n        argv[j] = argv[j + 1];\n      }\n\n      // Decrements the argument count.\n      (*argc)--;\n\n      // We also need to decrement the iterator as we just removed\n      // an element.\n      i--;\n    } else if (arg_string == \"--help\" || arg_string == \"-h\" ||\n               arg_string == \"-?\" || arg_string == \"/?\" ||\n               HasGoogleTestFlagPrefix(arg)) {\n      // Both help flag and unrecognized Google Test flags (excluding\n      // internal ones) trigger help display.\n      g_help_flag = true;\n    }\n  }\n\n  if (g_help_flag) {\n    // We print the help here instead of in RUN_ALL_TESTS(), as the\n    // latter may not be called at all if the user is using Google\n    // Test with another testing framework.\n    PrintColorEncoded(kColorEncodedHelpMessage);\n  }\n}\n\n// Parses the command line for Google Test flags, without initializing\n// other parts of Google Test.\nvoid ParseGoogleTestFlagsOnly(int* argc, char** argv) {\n  ParseGoogleTestFlagsOnlyImpl(argc, argv);\n}\nvoid ParseGoogleTestFlagsOnly(int* argc, wchar_t** argv) {\n  ParseGoogleTestFlagsOnlyImpl(argc, argv);\n}\n\n// The internal implementation of InitGoogleTest().\n//\n// The type parameter CharType can be instantiated to either char or\n// wchar_t.\ntemplate <typename CharType>\nvoid InitGoogleTestImpl(int* argc, CharType** argv) {\n  g_init_gtest_count++;\n\n  // We don't want to run the initialization code twice.\n  if (g_init_gtest_count != 1) return;\n\n  if (*argc <= 0) return;\n\n  internal::g_executable_path = internal::StreamableToString(argv[0]);\n\n#if GTEST_HAS_DEATH_TEST\n\n  g_argvs.clear();\n  for (int i = 0; i != *argc; i++) {\n    g_argvs.push_back(StreamableToString(argv[i]));\n  }\n\n#endif  // GTEST_HAS_DEATH_TEST\n\n  ParseGoogleTestFlagsOnly(argc, argv);\n  GetUnitTestImpl()->PostFlagParsingInit();\n}\n\n}  // namespace internal\n\n// Initializes Google Test.  This must be called before calling\n// RUN_ALL_TESTS().  In particular, it parses a command line for the\n// flags that Google Test recognizes.  Whenever a Google Test flag is\n// seen, it is removed from argv, and *argc is decremented.\n//\n// No value is returned.  Instead, the Google Test flag variables are\n// updated.\n//\n// Calling the function for the second time has no user-visible effect.\nvoid InitGoogleTest(int* argc, char** argv) {\n  internal::InitGoogleTestImpl(argc, argv);\n}\n\n// This overloaded version can be used in Windows programs compiled in\n// UNICODE mode.\nvoid InitGoogleTest(int* argc, wchar_t** argv) {\n  internal::InitGoogleTestImpl(argc, argv);\n}\n\n}  // namespace testing\n// Copyright 2005, Google Inc.\n// All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n// Author: wan@google.com (Zhanyong Wan), vladl@google.com (Vlad Losev)\n//\n// This file implements death tests.\n\n\n#if GTEST_HAS_DEATH_TEST\n\n# if GTEST_OS_MAC\n#  include <crt_externs.h>\n# endif  // GTEST_OS_MAC\n\n# include <errno.h>\n# include <fcntl.h>\n# include <limits.h>\n\n# if GTEST_OS_LINUX\n#  include <signal.h>\n# endif  // GTEST_OS_LINUX\n\n# include <stdarg.h>\n\n# if GTEST_OS_WINDOWS\n#  include <windows.h>\n# else\n#  include <sys/mman.h>\n#  include <sys/wait.h>\n# endif  // GTEST_OS_WINDOWS\n\n# if GTEST_OS_QNX\n#  include <spawn.h>\n# endif  // GTEST_OS_QNX\n\n#endif  // GTEST_HAS_DEATH_TEST\n\n\n// Indicates that this translation unit is part of Google Test's\n// implementation.  It must come before gtest-internal-inl.h is\n// included, or there will be a compiler error.  This trick is to\n// prevent a user from accidentally including gtest-internal-inl.h in\n// his code.\n#define GTEST_IMPLEMENTATION_ 1\n#undef GTEST_IMPLEMENTATION_\n\nnamespace testing {\n\n// Constants.\n\n// The default death test style.\nstatic const char kDefaultDeathTestStyle[] = \"fast\";\n\nGTEST_DEFINE_string_(\n    death_test_style,\n    internal::StringFromGTestEnv(\"death_test_style\", kDefaultDeathTestStyle),\n    \"Indicates how to run a death test in a forked child process: \"\n    \"\\\"threadsafe\\\" (child process re-executes the test binary \"\n    \"from the beginning, running only the specific death test) or \"\n    \"\\\"fast\\\" (child process runs the death test immediately \"\n    \"after forking).\");\n\nGTEST_DEFINE_bool_(\n    death_test_use_fork,\n    internal::BoolFromGTestEnv(\"death_test_use_fork\", false),\n    \"Instructs to use fork()/_exit() instead of clone() in death tests. \"\n    \"Ignored and always uses fork() on POSIX systems where clone() is not \"\n    \"implemented. Useful when running under valgrind or similar tools if \"\n    \"those do not support clone(). Valgrind 3.3.1 will just fail if \"\n    \"it sees an unsupported combination of clone() flags. \"\n    \"It is not recommended to use this flag w/o valgrind though it will \"\n    \"work in 99% of the cases. Once valgrind is fixed, this flag will \"\n    \"most likely be removed.\");\n\nnamespace internal {\nGTEST_DEFINE_string_(\n    internal_run_death_test, \"\",\n    \"Indicates the file, line number, temporal index of \"\n    \"the single death test to run, and a file descriptor to \"\n    \"which a success code may be sent, all separated by \"\n    \"the '|' characters.  This flag is specified if and only if the current \"\n    \"process is a sub-process launched for running a thread-safe \"\n    \"death test.  FOR INTERNAL USE ONLY.\");\n}  // namespace internal\n\n#if GTEST_HAS_DEATH_TEST\n\nnamespace internal {\n\n# if GTEST_OS_WINDOWS\n# else\n// Valid only for fast death tests. Indicates the code is running in the\n// child process of a fast style death test.\nstatic bool g_in_fast_death_test_child = false;\n#endif\n\n// Returns a Boolean value indicating whether the caller is currently\n// executing in the context of the death test child process.  Tools such as\n// Valgrind heap checkers may need this to modify their behavior in death\n// tests.  IMPORTANT: This is an internal utility.  Using it may break the\n// implementation of death tests.  User code MUST NOT use it.\nbool InDeathTestChild() {\n# if GTEST_OS_WINDOWS\n\n  // On Windows, death tests are thread-safe regardless of the value of the\n  // death_test_style flag.\n  return !GTEST_FLAG(internal_run_death_test).empty();\n\n# else\n\n  if (GTEST_FLAG(death_test_style) == \"threadsafe\")\n    return !GTEST_FLAG(internal_run_death_test).empty();\n  else\n    return g_in_fast_death_test_child;\n#endif\n}\n\n}  // namespace internal\n\n// ExitedWithCode constructor.\nExitedWithCode::ExitedWithCode(int exit_code) : exit_code_(exit_code) {\n}\n\n// ExitedWithCode function-call operator.\nbool ExitedWithCode::operator()(int exit_status) const {\n# if GTEST_OS_WINDOWS\n\n  return exit_status == exit_code_;\n\n# else\n\n  return WIFEXITED(exit_status) && WEXITSTATUS(exit_status) == exit_code_;\n\n# endif  // GTEST_OS_WINDOWS\n}\n\n# if !GTEST_OS_WINDOWS\n// KilledBySignal constructor.\nKilledBySignal::KilledBySignal(int signum) : signum_(signum) {\n}\n\n// KilledBySignal function-call operator.\nbool KilledBySignal::operator()(int exit_status) const {\n  return WIFSIGNALED(exit_status) && WTERMSIG(exit_status) == signum_;\n}\n# endif  // !GTEST_OS_WINDOWS\n\nnamespace internal {\n\n// Utilities needed for death tests.\n\n// Generates a textual description of a given exit code, in the format\n// specified by wait(2).\nstatic std::string ExitSummary(int exit_code) {\n  Message m;\n\n# if GTEST_OS_WINDOWS\n\n  m << \"Exited with exit status \" << exit_code;\n\n# else\n\n  if (WIFEXITED(exit_code)) {\n    m << \"Exited with exit status \" << WEXITSTATUS(exit_code);\n  } else if (WIFSIGNALED(exit_code)) {\n    m << \"Terminated by signal \" << WTERMSIG(exit_code);\n  }\n#  ifdef WCOREDUMP\n  if (WCOREDUMP(exit_code)) {\n    m << \" (core dumped)\";\n  }\n#  endif\n# endif  // GTEST_OS_WINDOWS\n\n  return m.GetString();\n}\n\n// Returns true if exit_status describes a process that was terminated\n// by a signal, or exited normally with a nonzero exit code.\nbool ExitedUnsuccessfully(int exit_status) {\n  return !ExitedWithCode(0)(exit_status);\n}\n\n# if !GTEST_OS_WINDOWS\n// Generates a textual failure message when a death test finds more than\n// one thread running, or cannot determine the number of threads, prior\n// to executing the given statement.  It is the responsibility of the\n// caller not to pass a thread_count of 1.\nstatic std::string DeathTestThreadWarning(size_t thread_count) {\n  Message msg;\n  msg << \"Death tests use fork(), which is unsafe particularly\"\n      << \" in a threaded context. For this test, \" << GTEST_NAME_ << \" \";\n  if (thread_count == 0)\n    msg << \"couldn't detect the number of threads.\";\n  else\n    msg << \"detected \" << thread_count << \" threads.\";\n  return msg.GetString();\n}\n# endif  // !GTEST_OS_WINDOWS\n\n// Flag characters for reporting a death test that did not die.\nstatic const char kDeathTestLived = 'L';\nstatic const char kDeathTestReturned = 'R';\nstatic const char kDeathTestThrew = 'T';\nstatic const char kDeathTestInternalError = 'I';\n\n// An enumeration describing all of the possible ways that a death test can\n// conclude.  DIED means that the process died while executing the test\n// code; LIVED means that process lived beyond the end of the test code;\n// RETURNED means that the test statement attempted to execute a return\n// statement, which is not allowed; THREW means that the test statement\n// returned control by throwing an exception.  IN_PROGRESS means the test\n// has not yet concluded.\n// TODO(vladl@google.com): Unify names and possibly values for\n// AbortReason, DeathTestOutcome, and flag characters above.\nenum DeathTestOutcome { IN_PROGRESS, DIED, LIVED, RETURNED, THREW };\n\n// Routine for aborting the program which is safe to call from an\n// exec-style death test child process, in which case the error\n// message is propagated back to the parent process.  Otherwise, the\n// message is simply printed to stderr.  In either case, the program\n// then exits with status 1.\nvoid DeathTestAbort(const std::string& message) {\n  // On a POSIX system, this function may be called from a threadsafe-style\n  // death test child process, which operates on a very small stack.  Use\n  // the heap for any additional non-minuscule memory requirements.\n  const InternalRunDeathTestFlag* const flag =\n      GetUnitTestImpl()->internal_run_death_test_flag();\n  if (flag != nullptr) {\n    FILE* parent = posix::FDOpen(flag->write_fd(), \"w\");\n    fputc(kDeathTestInternalError, parent);\n    fprintf(parent, \"%s\", message.c_str());\n    fflush(parent);\n    _exit(1);\n  } else {\n    std::cerr << std::endl << message;\n    std::cerr.flush();\n    posix::Abort();\n  }\n}\n\n// A replacement for CHECK that calls DeathTestAbort if the assertion\n// fails.\n# define GTEST_DEATH_TEST_CHECK_(expression) \\\n  do { \\\n    if (!::testing::internal::IsTrue(expression)) { \\\n      DeathTestAbort( \\\n          ::std::string(\"CHECK failed: File \") + __FILE__ +  \", line \" \\\n          + ::testing::internal::StreamableToString(__LINE__) + \": \" \\\n          + #expression); \\\n    } \\\n  } while (::testing::internal::AlwaysFalse())\n\n// This macro is similar to GTEST_DEATH_TEST_CHECK_, but it is meant for\n// evaluating any system call that fulfills two conditions: it must return\n// -1 on failure, and set errno to EINTR when it is interrupted and\n// should be tried again.  The macro expands to a loop that repeatedly\n// evaluates the expression as long as it evaluates to -1 and sets\n// errno to EINTR.  If the expression evaluates to -1 but errno is\n// something other than EINTR, DeathTestAbort is called.\n# define GTEST_DEATH_TEST_CHECK_SYSCALL_(expression) \\\n  do { \\\n    int gtest_retval; \\\n    do { \\\n      gtest_retval = (expression); \\\n    } while (gtest_retval == -1 && errno == EINTR); \\\n    if (gtest_retval == -1) { \\\n      DeathTestAbort( \\\n          ::std::string(\"CHECK failed: File \") + __FILE__ + \", line \" \\\n          + ::testing::internal::StreamableToString(__LINE__) + \": \" \\\n          + #expression + \" != -1\"); \\\n    } \\\n  } while (::testing::internal::AlwaysFalse())\n\n// Returns the message describing the last system error in errno.\nstd::string GetLastErrnoDescription() {\n    return errno == 0 ? \"\" : posix::StrError(errno);\n}\n\n// This is called from a death test parent process to read a failure\n// message from the death test child process and log it with the FATAL\n// severity. On Windows, the message is read from a pipe handle. On other\n// platforms, it is read from a file descriptor.\nstatic void FailFromInternalError(int fd) {\n  Message error;\n  char buffer[256];\n  int num_read;\n\n  do {\n    while ((num_read = posix::Read(fd, buffer, 255)) > 0) {\n      buffer[num_read] = '\\0';\n      error << buffer;\n    }\n  } while (num_read == -1 && errno == EINTR);\n\n  if (num_read == 0) {\n    GTEST_LOG_(FATAL) << error.GetString();\n  } else {\n    const int last_error = errno;\n    GTEST_LOG_(FATAL) << \"Error while reading death test internal: \"\n                      << GetLastErrnoDescription() << \" [\" << last_error << \"]\";\n  }\n}\n\n// Death test constructor.  Increments the running death test count\n// for the current test.\nDeathTest::DeathTest() {\n  TestInfo* const info = GetUnitTestImpl()->current_test_info();\n  if (info == nullptr) {\n    DeathTestAbort(\"Cannot run a death test outside of a TEST or \"\n                   \"TEST_F construct\");\n  }\n}\n\n// Creates and returns a death test by dispatching to the current\n// death test factory.\nbool DeathTest::Create(const char* statement, const RE* regex,\n                       const char* file, int line, DeathTest** test) {\n  return GetUnitTestImpl()->death_test_factory()->Create(\n      statement, regex, file, line, test);\n}\n\nconst char* DeathTest::LastMessage() {\n  return last_death_test_message_.c_str();\n}\n\nvoid DeathTest::set_last_death_test_message(const std::string& message) {\n  last_death_test_message_ = message;\n}\n\nstd::string DeathTest::last_death_test_message_;\n\n// Provides cross platform implementation for some death functionality.\nclass DeathTestImpl : public DeathTest {\n protected:\n  DeathTestImpl(const char* a_statement, const RE* a_regex)\n      : statement_(a_statement),\n        regex_(a_regex),\n        spawned_(false),\n        status_(-1),\n        outcome_(IN_PROGRESS),\n        read_fd_(-1),\n        write_fd_(-1) {}\n\n  // read_fd_ is expected to be closed and cleared by a derived class.\n  ~DeathTestImpl() { GTEST_DEATH_TEST_CHECK_(read_fd_ == -1); }\n\n  void Abort(AbortReason reason);\n  virtual bool Passed(bool status_ok);\n\n  const char* statement() const { return statement_; }\n  const RE* regex() const { return regex_; }\n  bool spawned() const { return spawned_; }\n  void set_spawned(bool is_spawned) { spawned_ = is_spawned; }\n  int status() const { return status_; }\n  void set_status(int a_status) { status_ = a_status; }\n  DeathTestOutcome outcome() const { return outcome_; }\n  void set_outcome(DeathTestOutcome an_outcome) { outcome_ = an_outcome; }\n  int read_fd() const { return read_fd_; }\n  void set_read_fd(int fd) { read_fd_ = fd; }\n  int write_fd() const { return write_fd_; }\n  void set_write_fd(int fd) { write_fd_ = fd; }\n\n  // Called in the parent process only. Reads the result code of the death\n  // test child process via a pipe, interprets it to set the outcome_\n  // member, and closes read_fd_.  Outputs diagnostics and terminates in\n  // case of unexpected codes.\n  void ReadAndInterpretStatusByte();\n\n private:\n  // The textual content of the code this object is testing.  This class\n  // doesn't own this string and should not attempt to delete it.\n  const char* const statement_;\n  // The regular expression which test output must match.  DeathTestImpl\n  // doesn't own this object and should not attempt to delete it.\n  const RE* const regex_;\n  // True if the death test child process has been successfully spawned.\n  bool spawned_;\n  // The exit status of the child process.\n  int status_;\n  // How the death test concluded.\n  DeathTestOutcome outcome_;\n  // Descriptor to the read end of the pipe to the child process.  It is\n  // always -1 in the child process.  The child keeps its write end of the\n  // pipe in write_fd_.\n  int read_fd_;\n  // Descriptor to the child's write end of the pipe to the parent process.\n  // It is always -1 in the parent process.  The parent keeps its end of the\n  // pipe in read_fd_.\n  int write_fd_;\n};\n\n// Called in the parent process only. Reads the result code of the death\n// test child process via a pipe, interprets it to set the outcome_\n// member, and closes read_fd_.  Outputs diagnostics and terminates in\n// case of unexpected codes.\nvoid DeathTestImpl::ReadAndInterpretStatusByte() {\n  char flag;\n  int bytes_read;\n\n  // The read() here blocks until data is available (signifying the\n  // failure of the death test) or until the pipe is closed (signifying\n  // its success), so it's okay to call this in the parent before\n  // the child process has exited.\n  do {\n    bytes_read = posix::Read(read_fd(), &flag, 1);\n  } while (bytes_read == -1 && errno == EINTR);\n\n  if (bytes_read == 0) {\n    set_outcome(DIED);\n  } else if (bytes_read == 1) {\n    switch (flag) {\n      case kDeathTestReturned:\n        set_outcome(RETURNED);\n        break;\n      case kDeathTestThrew:\n        set_outcome(THREW);\n        break;\n      case kDeathTestLived:\n        set_outcome(LIVED);\n        break;\n      case kDeathTestInternalError:\n        FailFromInternalError(read_fd());  // Does not return.\n        break;\n      default:\n        GTEST_LOG_(FATAL) << \"Death test child process reported \"\n                          << \"unexpected status byte (\"\n                          << static_cast<unsigned int>(flag) << \")\";\n    }\n  } else {\n    GTEST_LOG_(FATAL) << \"Read from death test child process failed: \"\n                      << GetLastErrnoDescription();\n  }\n  GTEST_DEATH_TEST_CHECK_SYSCALL_(posix::Close(read_fd()));\n  set_read_fd(-1);\n}\n\n// Signals that the death test code which should have exited, didn't.\n// Should be called only in a death test child process.\n// Writes a status byte to the child's status file descriptor, then\n// calls _exit(1).\nvoid DeathTestImpl::Abort(AbortReason reason) {\n  // The parent process considers the death test to be a failure if\n  // it finds any data in our pipe.  So, here we write a single flag byte\n  // to the pipe, then exit.\n  const char status_ch =\n      reason == TEST_DID_NOT_DIE ? kDeathTestLived :\n      reason == TEST_THREW_EXCEPTION ? kDeathTestThrew : kDeathTestReturned;\n\n  GTEST_DEATH_TEST_CHECK_SYSCALL_(posix::Write(write_fd(), &status_ch, 1));\n  // We are leaking the descriptor here because on some platforms (i.e.,\n  // when built as Windows DLL), destructors of global objects will still\n  // run after calling _exit(). On such systems, write_fd_ will be\n  // indirectly closed from the destructor of UnitTestImpl, causing double\n  // close if it is also closed here. On debug configurations, double close\n  // may assert. As there are no in-process buffers to flush here, we are\n  // relying on the OS to close the descriptor after the process terminates\n  // when the destructors are not run.\n  _exit(1);  // Exits w/o any normal exit hooks (we were supposed to crash)\n}\n\n// Returns an indented copy of stderr output for a death test.\n// This makes distinguishing death test output lines from regular log lines\n// much easier.\nstatic ::std::string FormatDeathTestOutput(const ::std::string& output) {\n  ::std::string ret;\n  for (size_t at = 0; ; ) {\n    const size_t line_end = output.find('\\n', at);\n    ret += \"[  DEATH   ] \";\n    if (line_end == ::std::string::npos) {\n      ret += output.substr(at);\n      break;\n    }\n    ret += output.substr(at, line_end + 1 - at);\n    at = line_end + 1;\n  }\n  return ret;\n}\n\n// Assesses the success or failure of a death test, using both private\n// members which have previously been set, and one argument:\n//\n// Private data members:\n//   outcome:  An enumeration describing how the death test\n//             concluded: DIED, LIVED, THREW, or RETURNED.  The death test\n//             fails in the latter three cases.\n//   status:   The exit status of the child process. On *nix, it is in the\n//             in the format specified by wait(2). On Windows, this is the\n//             value supplied to the ExitProcess() API or a numeric code\n//             of the exception that terminated the program.\n//   regex:    A regular expression object to be applied to\n//             the test's captured standard error output; the death test\n//             fails if it does not match.\n//\n// Argument:\n//   status_ok: true if exit_status is acceptable in the context of\n//              this particular death test, which fails if it is false\n//\n// Returns true iff all of the above conditions are met.  Otherwise, the\n// first failing condition, in the order given above, is the one that is\n// reported. Also sets the last death test message string.\nbool DeathTestImpl::Passed(bool status_ok) {\n  if (!spawned())\n    return false;\n\n  const std::string error_message = GetCapturedStderr();\n\n  bool success = false;\n  Message buffer;\n\n  buffer << \"Death test: \" << statement() << \"\\n\";\n  switch (outcome()) {\n    case LIVED:\n      buffer << \"    Result: failed to die.\\n\"\n             << \" Error msg:\\n\" << FormatDeathTestOutput(error_message);\n      break;\n    case THREW:\n      buffer << \"    Result: threw an exception.\\n\"\n             << \" Error msg:\\n\" << FormatDeathTestOutput(error_message);\n      break;\n    case RETURNED:\n      buffer << \"    Result: illegal return in test statement.\\n\"\n             << \" Error msg:\\n\" << FormatDeathTestOutput(error_message);\n      break;\n    case DIED:\n      if (status_ok) {\n        const bool matched = RE::PartialMatch(error_message.c_str(), *regex());\n        if (matched) {\n          success = true;\n        } else {\n          buffer << \"    Result: died but not with expected error.\\n\"\n                 << \"  Expected: \" << regex()->pattern() << \"\\n\"\n                 << \"Actual msg:\\n\" << FormatDeathTestOutput(error_message);\n        }\n      } else {\n        buffer << \"    Result: died but not with expected exit code:\\n\"\n               << \"            \" << ExitSummary(status()) << \"\\n\"\n               << \"Actual msg:\\n\" << FormatDeathTestOutput(error_message);\n      }\n      break;\n    case IN_PROGRESS:\n    default:\n      GTEST_LOG_(FATAL)\n          << \"DeathTest::Passed somehow called before conclusion of test\";\n  }\n\n  DeathTest::set_last_death_test_message(buffer.GetString());\n  return success;\n}\n\n# if GTEST_OS_WINDOWS\n// WindowsDeathTest implements death tests on Windows. Due to the\n// specifics of starting new processes on Windows, death tests there are\n// always threadsafe, and Google Test considers the\n// --gtest_death_test_style=fast setting to be equivalent to\n// --gtest_death_test_style=threadsafe there.\n//\n// A few implementation notes:  Like the Linux version, the Windows\n// implementation uses pipes for child-to-parent communication. But due to\n// the specifics of pipes on Windows, some extra steps are required:\n//\n// 1. The parent creates a communication pipe and stores handles to both\n//    ends of it.\n// 2. The parent starts the child and provides it with the information\n//    necessary to acquire the handle to the write end of the pipe.\n// 3. The child acquires the write end of the pipe and signals the parent\n//    using a Windows event.\n// 4. Now the parent can release the write end of the pipe on its side. If\n//    this is done before step 3, the object's reference count goes down to\n//    0 and it is destroyed, preventing the child from acquiring it. The\n//    parent now has to release it, or read operations on the read end of\n//    the pipe will not return when the child terminates.\n// 5. The parent reads child's output through the pipe (outcome code and\n//    any possible error messages) from the pipe, and its stderr and then\n//    determines whether to fail the test.\n//\n// Note: to distinguish Win32 API calls from the local method and function\n// calls, the former are explicitly resolved in the global namespace.\n//\nclass WindowsDeathTest : public DeathTestImpl {\n public:\n  WindowsDeathTest(const char* a_statement,\n                   const RE* a_regex,\n                   const char* file,\n                   int line)\n      : DeathTestImpl(a_statement, a_regex), file_(file), line_(line) {}\n\n  // All of these virtual functions are inherited from DeathTest.\n  virtual int Wait();\n  virtual TestRole AssumeRole();\n\n private:\n  // The name of the file in which the death test is located.\n  const char* const file_;\n  // The line number on which the death test is located.\n  const int line_;\n  // Handle to the write end of the pipe to the child process.\n  AutoHandle write_handle_;\n  // Child process handle.\n  AutoHandle child_handle_;\n  // Event the child process uses to signal the parent that it has\n  // acquired the handle to the write end of the pipe. After seeing this\n  // event the parent can release its own handles to make sure its\n  // ReadFile() calls return when the child terminates.\n  AutoHandle event_handle_;\n};\n\n// Waits for the child in a death test to exit, returning its exit\n// status, or 0 if no child process exists.  As a side effect, sets the\n// outcome data member.\nint WindowsDeathTest::Wait() {\n  if (!spawned())\n    return 0;\n\n  // Wait until the child either signals that it has acquired the write end\n  // of the pipe or it dies.\n  const HANDLE wait_handles[2] = { child_handle_.Get(), event_handle_.Get() };\n  switch (::WaitForMultipleObjects(2,\n                                   wait_handles,\n                                   FALSE,  // Waits for any of the handles.\n                                   INFINITE)) {\n    case WAIT_OBJECT_0:\n    case WAIT_OBJECT_0 + 1:\n      break;\n    default:\n      GTEST_DEATH_TEST_CHECK_(false);  // Should not get here.\n  }\n\n  // The child has acquired the write end of the pipe or exited.\n  // We release the handle on our side and continue.\n  write_handle_.Reset();\n  event_handle_.Reset();\n\n  ReadAndInterpretStatusByte();\n\n  // Waits for the child process to exit if it haven't already. This\n  // returns immediately if the child has already exited, regardless of\n  // whether previous calls to WaitForMultipleObjects synchronized on this\n  // handle or not.\n  GTEST_DEATH_TEST_CHECK_(\n      WAIT_OBJECT_0 == ::WaitForSingleObject(child_handle_.Get(),\n                                             INFINITE));\n  DWORD status_code;\n  GTEST_DEATH_TEST_CHECK_(\n      ::GetExitCodeProcess(child_handle_.Get(), &status_code) != FALSE);\n  child_handle_.Reset();\n  set_status(static_cast<int>(status_code));\n  return status();\n}\n\n// The AssumeRole process for a Windows death test.  It creates a child\n// process with the same executable as the current process to run the\n// death test.  The child process is given the --gtest_filter and\n// --gtest_internal_run_death_test flags such that it knows to run the\n// current death test only.\nDeathTest::TestRole WindowsDeathTest::AssumeRole() {\n  const UnitTestImpl* const impl = GetUnitTestImpl();\n  const InternalRunDeathTestFlag* const flag =\n      impl->internal_run_death_test_flag();\n  const TestInfo* const info = impl->current_test_info();\n  const int death_test_index = info->result()->death_test_count();\n\n  if (flag != nullptr) {\n    // ParseInternalRunDeathTestFlag() has performed all the necessary\n    // processing.\n    set_write_fd(flag->write_fd());\n    return EXECUTE_TEST;\n  }\n\n  // WindowsDeathTest uses an anonymous pipe to communicate results of\n  // a death test.\n  SECURITY_ATTRIBUTES handles_are_inheritable = {\n    sizeof(SECURITY_ATTRIBUTES), nullptr, TRUE };\n  HANDLE read_handle, write_handle;\n  GTEST_DEATH_TEST_CHECK_(\n      ::CreatePipe(&read_handle, &write_handle, &handles_are_inheritable,\n                   0)  // Default buffer size.\n      != FALSE);\n  set_read_fd(::_open_osfhandle(reinterpret_cast<intptr_t>(read_handle),\n                                O_RDONLY));\n  write_handle_.Reset(write_handle);\n  event_handle_.Reset(::CreateEvent(\n      &handles_are_inheritable,\n      TRUE,    // The event will automatically reset to non-signaled state.\n      FALSE,   // The initial state is non-signalled.\n      nullptr));  // The even is unnamed.\n  GTEST_DEATH_TEST_CHECK_(event_handle_.Get() != nullptr);\n  const std::string filter_flag =\n      std::string(\"--\") + GTEST_FLAG_PREFIX_ + kFilterFlag + \"=\" +\n      info->test_case_name() + \".\" + info->name();\n  const std::string internal_flag =\n      std::string(\"--\") + GTEST_FLAG_PREFIX_ + kInternalRunDeathTestFlag +\n      \"=\" + file_ + \"|\" + StreamableToString(line_) + \"|\" +\n      StreamableToString(death_test_index) + \"|\" +\n      StreamableToString(static_cast<unsigned int>(::GetCurrentProcessId())) +\n      // size_t has the same width as pointers on both 32-bit and 64-bit\n      // Windows platforms.\n      // See http://msdn.microsoft.com/en-us/library/tcxf1dw6.aspx.\n      \"|\" + StreamableToString(reinterpret_cast<size_t>(write_handle)) +\n      \"|\" + StreamableToString(reinterpret_cast<size_t>(event_handle_.Get()));\n\n  char executable_path[_MAX_PATH + 1];  // NOLINT\n  GTEST_DEATH_TEST_CHECK_(\n      _MAX_PATH + 1 != ::GetModuleFileNameA(nullptr,\n                                            executable_path,\n                                            _MAX_PATH));\n\n  std::string command_line =\n      std::string(::GetCommandLineA()) + \" \" + filter_flag + \" \\\"\" +\n      internal_flag + \"\\\"\";\n\n  DeathTest::set_last_death_test_message(\"\");\n\n  CaptureStderr();\n  // Flush the log buffers since the log streams are shared with the child.\n  FlushInfoLog();\n\n  // The child process will share the standard handles with the parent.\n  STARTUPINFOA startup_info;\n  memset(&startup_info, 0, sizeof(STARTUPINFO));\n  startup_info.dwFlags = STARTF_USESTDHANDLES;\n  startup_info.hStdInput = ::GetStdHandle(STD_INPUT_HANDLE);\n  startup_info.hStdOutput = ::GetStdHandle(STD_OUTPUT_HANDLE);\n  startup_info.hStdError = ::GetStdHandle(STD_ERROR_HANDLE);\n\n  PROCESS_INFORMATION process_info;\n  GTEST_DEATH_TEST_CHECK_(::CreateProcessA(\n      executable_path,\n      const_cast<char*>(command_line.c_str()),\n      nullptr,   // Retuned process handle is not inheritable.\n      nullptr,   // Retuned thread handle is not inheritable.\n      TRUE,   // Child inherits all inheritable handles (for write_handle_).\n      0x0,    // Default creation flags.\n      nullptr,   // Inherit the parent's environment.\n      UnitTest::GetInstance()->original_working_dir(),\n      &startup_info,\n      &process_info) != FALSE);\n  child_handle_.Reset(process_info.hProcess);\n  ::CloseHandle(process_info.hThread);\n  set_spawned(true);\n  return OVERSEE_TEST;\n}\n# else  // We are not on Windows.\n\n// ForkingDeathTest provides implementations for most of the abstract\n// methods of the DeathTest interface.  Only the AssumeRole method is\n// left undefined.\nclass ForkingDeathTest : public DeathTestImpl {\n public:\n  ForkingDeathTest(const char* statement, const RE* regex);\n\n  // All of these virtual functions are inherited from DeathTest.\n  virtual int Wait();\n\n protected:\n  void set_child_pid(pid_t child_pid) { child_pid_ = child_pid; }\n\n private:\n  // PID of child process during death test; 0 in the child process itself.\n  pid_t child_pid_;\n};\n\n// Constructs a ForkingDeathTest.\nForkingDeathTest::ForkingDeathTest(const char* a_statement, const RE* a_regex)\n    : DeathTestImpl(a_statement, a_regex),\n      child_pid_(-1) {}\n\n// Waits for the child in a death test to exit, returning its exit\n// status, or 0 if no child process exists.  As a side effect, sets the\n// outcome data member.\nint ForkingDeathTest::Wait() {\n  if (!spawned())\n    return 0;\n\n  ReadAndInterpretStatusByte();\n\n  int status_value;\n  GTEST_DEATH_TEST_CHECK_SYSCALL_(waitpid(child_pid_, &status_value, 0));\n  set_status(status_value);\n  return status_value;\n}\n\n// A concrete death test class that forks, then immediately runs the test\n// in the child process.\nclass NoExecDeathTest : public ForkingDeathTest {\n public:\n  NoExecDeathTest(const char* a_statement, const RE* a_regex) :\n      ForkingDeathTest(a_statement, a_regex) { }\n  virtual TestRole AssumeRole();\n};\n\n// The AssumeRole process for a fork-and-run death test.  It implements a\n// straightforward fork, with a simple pipe to transmit the status byte.\nDeathTest::TestRole NoExecDeathTest::AssumeRole() {\n  const size_t thread_count = GetThreadCount();\n  if (thread_count != 1) {\n    GTEST_LOG_(WARNING) << DeathTestThreadWarning(thread_count);\n  }\n\n  int pipe_fd[2];\n  GTEST_DEATH_TEST_CHECK_(pipe(pipe_fd) != -1);\n\n  DeathTest::set_last_death_test_message(\"\");\n  CaptureStderr();\n  // When we fork the process below, the log file buffers are copied, but the\n  // file descriptors are shared.  We flush all log files here so that closing\n  // the file descriptors in the child process doesn't throw off the\n  // synchronization between descriptors and buffers in the parent process.\n  // This is as close to the fork as possible to avoid a race condition in case\n  // there are multiple threads running before the death test, and another\n  // thread writes to the log file.\n  FlushInfoLog();\n\n  const pid_t child_pid = fork();\n  GTEST_DEATH_TEST_CHECK_(child_pid != -1);\n  set_child_pid(child_pid);\n  if (child_pid == 0) {\n    GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[0]));\n    set_write_fd(pipe_fd[1]);\n    // Redirects all logging to stderr in the child process to prevent\n    // concurrent writes to the log files.  We capture stderr in the parent\n    // process and append the child process' output to a log.\n    LogToStderr();\n    // Event forwarding to the listeners of event listener API mush be shut\n    // down in death test subprocesses.\n    GetUnitTestImpl()->listeners()->SuppressEventForwarding();\n    g_in_fast_death_test_child = true;\n    return EXECUTE_TEST;\n  } else {\n    GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[1]));\n    set_read_fd(pipe_fd[0]);\n    set_spawned(true);\n    return OVERSEE_TEST;\n  }\n}\n\n// A concrete death test class that forks and re-executes the main\n// program from the beginning, with command-line flags set that cause\n// only this specific death test to be run.\nclass ExecDeathTest : public ForkingDeathTest {\n public:\n  ExecDeathTest(const char* a_statement, const RE* a_regex,\n                const char* file, int line) :\n      ForkingDeathTest(a_statement, a_regex), file_(file), line_(line) { }\n  virtual TestRole AssumeRole();\n private:\n  static ::std::vector<testing::internal::string>\n  GetArgvsForDeathTestChildProcess() {\n    ::std::vector<testing::internal::string> args = GetInjectableArgvs();\n    return args;\n  }\n  // The name of the file in which the death test is located.\n  const char* const file_;\n  // The line number on which the death test is located.\n  const int line_;\n};\n\n// Utility class for accumulating command-line arguments.\nclass Arguments {\n public:\n  Arguments() {\n    args_.push_back(nullptr);\n  }\n\n  ~Arguments() {\n    for (std::vector<char*>::iterator i = args_.begin(); i != args_.end();\n         ++i) {\n      free(*i);\n    }\n  }\n  void AddArgument(const char* argument) {\n    args_.insert(args_.end() - 1, posix::StrDup(argument));\n  }\n\n  template <typename Str>\n  void AddArguments(const ::std::vector<Str>& arguments) {\n    for (typename ::std::vector<Str>::const_iterator i = arguments.begin();\n         i != arguments.end();\n         ++i) {\n      args_.insert(args_.end() - 1, posix::StrDup(i->c_str()));\n    }\n  }\n  char* const* Argv() {\n    return &args_[0];\n  }\n\n private:\n  std::vector<char*> args_;\n};\n\n// A struct that encompasses the arguments to the child process of a\n// threadsafe-style death test process.\nstruct ExecDeathTestArgs {\n  char* const* argv;  // Command-line arguments for the child's call to exec\n  int close_fd;       // File descriptor to close; the read end of a pipe\n};\n\n#  if GTEST_OS_MAC\ninline char** GetEnviron() {\n  // When Google Test is built as a framework on MacOS X, the environ variable\n  // is unavailable. Apple's documentation (man environ) recommends using\n  // _NSGetEnviron() instead.\n  return *_NSGetEnviron();\n}\n#  else\n// Some POSIX platforms expect you to declare environ. extern \"C\" makes\n// it reside in the global namespace.\nextern \"C\" char** environ;\ninline char** GetEnviron() { return environ; }\n#  endif  // GTEST_OS_MAC\n\n#  if !GTEST_OS_QNX\n// The main function for a threadsafe-style death test child process.\n// This function is called in a clone()-ed process and thus must avoid\n// any potentially unsafe operations like malloc or libc functions.\nstatic int ExecDeathTestChildMain(void* child_arg) {\n  ExecDeathTestArgs* const args = static_cast<ExecDeathTestArgs*>(child_arg);\n  GTEST_DEATH_TEST_CHECK_SYSCALL_(close(args->close_fd));\n\n  // We need to execute the test program in the same environment where\n  // it was originally invoked.  Therefore we change to the original\n  // working directory first.\n  const char* const original_dir =\n      UnitTest::GetInstance()->original_working_dir();\n  // We can safely call chdir() as it's a direct system call.\n  if (chdir(original_dir) != 0) {\n    DeathTestAbort(std::string(\"chdir(\\\"\") + original_dir + \"\\\") failed: \" +\n                   GetLastErrnoDescription());\n    return EXIT_FAILURE;\n  }\n\n  // We can safely call execve() as it's a direct system call.  We\n  // cannot use execvp() as it's a libc function and thus potentially\n  // unsafe.  Since execve() doesn't search the PATH, the user must\n  // invoke the test program via a valid path that contains at least\n  // one path separator.\n  execve(args->argv[0], args->argv, GetEnviron());\n  DeathTestAbort(std::string(\"execve(\") + args->argv[0] + \", ...) in \" +\n                 original_dir + \" failed: \" +\n                 GetLastErrnoDescription());\n  return EXIT_FAILURE;\n}\n#  endif  // !GTEST_OS_QNX\n\n// Two utility routines that together determine the direction the stack\n// grows.\n// This could be accomplished more elegantly by a single recursive\n// function, but we want to guard against the unlikely possibility of\n// a smart compiler optimizing the recursion away.\n//\n// GTEST_NO_INLINE_ is required to prevent GCC 4.6 from inlining\n// StackLowerThanAddress into StackGrowsDown, which then doesn't give\n// correct answer.\nvoid StackLowerThanAddress(const void* ptr, bool* result) GTEST_NO_INLINE_;\nvoid StackLowerThanAddress(const void* ptr, bool* result) {\n  int dummy;\n  *result = (&dummy < ptr);\n}\n\nbool StackGrowsDown() {\n  int dummy;\n  bool result;\n  StackLowerThanAddress(&dummy, &result);\n  return result;\n}\n\n// Spawns a child process with the same executable as the current process in\n// a thread-safe manner and instructs it to run the death test.  The\n// implementation uses fork(2) + exec.  On systems where clone(2) is\n// available, it is used instead, being slightly more thread-safe.  On QNX,\n// fork supports only single-threaded environments, so this function uses\n// spawn(2) there instead.  The function dies with an error message if\n// anything goes wrong.\nstatic pid_t ExecDeathTestSpawnChild(char* const* argv, int close_fd) {\n  ExecDeathTestArgs args = { argv, close_fd };\n  pid_t child_pid = -1;\n\n#  if GTEST_OS_QNX\n  // Obtains the current directory and sets it to be closed in the child\n  // process.\n  const int cwd_fd = open(\".\", O_RDONLY);\n  GTEST_DEATH_TEST_CHECK_(cwd_fd != -1);\n  GTEST_DEATH_TEST_CHECK_SYSCALL_(fcntl(cwd_fd, F_SETFD, FD_CLOEXEC));\n  // We need to execute the test program in the same environment where\n  // it was originally invoked.  Therefore we change to the original\n  // working directory first.\n  const char* const original_dir =\n      UnitTest::GetInstance()->original_working_dir();\n  // We can safely call chdir() as it's a direct system call.\n  if (chdir(original_dir) != 0) {\n    DeathTestAbort(std::string(\"chdir(\\\"\") + original_dir + \"\\\") failed: \" +\n                   GetLastErrnoDescription());\n    return EXIT_FAILURE;\n  }\n\n  int fd_flags;\n  // Set close_fd to be closed after spawn.\n  GTEST_DEATH_TEST_CHECK_SYSCALL_(fd_flags = fcntl(close_fd, F_GETFD));\n  GTEST_DEATH_TEST_CHECK_SYSCALL_(fcntl(close_fd, F_SETFD,\n                                        fd_flags | FD_CLOEXEC));\n  struct inheritance inherit = {0};\n  // spawn is a system call.\n  child_pid = spawn(args.argv[0], 0, nullptr, &inherit, args.argv, GetEnviron());\n  // Restores the current working directory.\n  GTEST_DEATH_TEST_CHECK_(fchdir(cwd_fd) != -1);\n  GTEST_DEATH_TEST_CHECK_SYSCALL_(close(cwd_fd));\n\n#  else   // GTEST_OS_QNX\n#   if GTEST_OS_LINUX\n  // When a SIGPROF signal is received while fork() or clone() are executing,\n  // the process may hang. To avoid this, we ignore SIGPROF here and re-enable\n  // it after the call to fork()/clone() is complete.\n  struct sigaction saved_sigprof_action;\n  struct sigaction ignore_sigprof_action;\n  memset(&ignore_sigprof_action, 0, sizeof(ignore_sigprof_action));\n  sigemptyset(&ignore_sigprof_action.sa_mask);\n  ignore_sigprof_action.sa_handler = SIG_IGN;\n  GTEST_DEATH_TEST_CHECK_SYSCALL_(sigaction(\n      SIGPROF, &ignore_sigprof_action, &saved_sigprof_action));\n#   endif  // GTEST_OS_LINUX\n\n#   if GTEST_HAS_CLONE\n  const bool use_fork = GTEST_FLAG(death_test_use_fork);\n\n  if (!use_fork) {\n    static const bool stack_grows_down = StackGrowsDown();\n    const size_t stack_size = getpagesize();\n    // MMAP_ANONYMOUS is not defined on Mac, so we use MAP_ANON instead.\n    void* const stack = mmap(nullptr, stack_size, PROT_READ | PROT_WRITE,\n                             MAP_ANON | MAP_PRIVATE, -1, 0);\n    GTEST_DEATH_TEST_CHECK_(stack != MAP_FAILED);\n\n    // Maximum stack alignment in bytes:  For a downward-growing stack, this\n    // amount is subtracted from size of the stack space to get an address\n    // that is within the stack space and is aligned on all systems we care\n    // about.  As far as I know there is no ABI with stack alignment greater\n    // than 64.  We assume stack and stack_size already have alignment of\n    // kMaxStackAlignment.\n    const size_t kMaxStackAlignment = 64;\n    void* const stack_top =\n        static_cast<char*>(stack) +\n            (stack_grows_down ? stack_size - kMaxStackAlignment : 0);\n    GTEST_DEATH_TEST_CHECK_(stack_size > kMaxStackAlignment &&\n        reinterpret_cast<intptr_t>(stack_top) % kMaxStackAlignment == 0);\n\n    child_pid = clone(&ExecDeathTestChildMain, stack_top, SIGCHLD, &args);\n\n    GTEST_DEATH_TEST_CHECK_(munmap(stack, stack_size) != -1);\n  }\n#   else\n  const bool use_fork = true;\n#   endif  // GTEST_HAS_CLONE\n\n  if (use_fork && (child_pid = fork()) == 0) {\n      ExecDeathTestChildMain(&args);\n      _exit(0);\n  }\n#  endif  // GTEST_OS_QNX\n#  if GTEST_OS_LINUX\n  GTEST_DEATH_TEST_CHECK_SYSCALL_(\n      sigaction(SIGPROF, &saved_sigprof_action, nullptr));\n#  endif  // GTEST_OS_LINUX\n\n  GTEST_DEATH_TEST_CHECK_(child_pid != -1);\n  return child_pid;\n}\n\n// The AssumeRole process for a fork-and-exec death test.  It re-executes the\n// main program from the beginning, setting the --gtest_filter\n// and --gtest_internal_run_death_test flags to cause only the current\n// death test to be re-run.\nDeathTest::TestRole ExecDeathTest::AssumeRole() {\n  const UnitTestImpl* const impl = GetUnitTestImpl();\n  const InternalRunDeathTestFlag* const flag =\n      impl->internal_run_death_test_flag();\n  const TestInfo* const info = impl->current_test_info();\n  const int death_test_index = info->result()->death_test_count();\n\n  if (flag != nullptr) {\n    set_write_fd(flag->write_fd());\n    return EXECUTE_TEST;\n  }\n\n  int pipe_fd[2];\n  GTEST_DEATH_TEST_CHECK_(pipe(pipe_fd) != -1);\n  // Clear the close-on-exec flag on the write end of the pipe, lest\n  // it be closed when the child process does an exec:\n  GTEST_DEATH_TEST_CHECK_(fcntl(pipe_fd[1], F_SETFD, 0) != -1);\n\n  const std::string filter_flag =\n      std::string(\"--\") + GTEST_FLAG_PREFIX_ + kFilterFlag + \"=\"\n      + info->test_case_name() + \".\" + info->name();\n  const std::string internal_flag =\n      std::string(\"--\") + GTEST_FLAG_PREFIX_ + kInternalRunDeathTestFlag + \"=\"\n      + file_ + \"|\" + StreamableToString(line_) + \"|\"\n      + StreamableToString(death_test_index) + \"|\"\n      + StreamableToString(pipe_fd[1]);\n  Arguments args;\n  args.AddArguments(GetArgvsForDeathTestChildProcess());\n  args.AddArgument(filter_flag.c_str());\n  args.AddArgument(internal_flag.c_str());\n\n  DeathTest::set_last_death_test_message(\"\");\n\n  CaptureStderr();\n  // See the comment in NoExecDeathTest::AssumeRole for why the next line\n  // is necessary.\n  FlushInfoLog();\n\n  const pid_t child_pid = ExecDeathTestSpawnChild(args.Argv(), pipe_fd[0]);\n  GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[1]));\n  set_child_pid(child_pid);\n  set_read_fd(pipe_fd[0]);\n  set_spawned(true);\n  return OVERSEE_TEST;\n}\n\n# endif  // !GTEST_OS_WINDOWS\n\n// Creates a concrete DeathTest-derived class that depends on the\n// --gtest_death_test_style flag, and sets the pointer pointed to\n// by the \"test\" argument to its address.  If the test should be\n// skipped, sets that pointer to nullptr.  Returns true, unless the\n// flag is set to an invalid value.\nbool DefaultDeathTestFactory::Create(const char* statement, const RE* regex,\n                                     const char* file, int line,\n                                     DeathTest** test) {\n  UnitTestImpl* const impl = GetUnitTestImpl();\n  const InternalRunDeathTestFlag* const flag =\n      impl->internal_run_death_test_flag();\n  const int death_test_index = impl->current_test_info()\n      ->increment_death_test_count();\n\n  if (flag != nullptr) {\n    if (death_test_index > flag->index()) {\n      DeathTest::set_last_death_test_message(\n          \"Death test count (\" + StreamableToString(death_test_index)\n          + \") somehow exceeded expected maximum (\"\n          + StreamableToString(flag->index()) + \")\");\n      return false;\n    }\n\n    if (!(flag->file() == file && flag->line() == line &&\n          flag->index() == death_test_index)) {\n      *test = nullptr;\n      return true;\n    }\n  }\n\n# if GTEST_OS_WINDOWS\n\n  if (GTEST_FLAG(death_test_style) == \"threadsafe\" ||\n      GTEST_FLAG(death_test_style) == \"fast\") {\n    *test = new WindowsDeathTest(statement, regex, file, line);\n  }\n\n# else\n\n  if (GTEST_FLAG(death_test_style) == \"threadsafe\") {\n    *test = new ExecDeathTest(statement, regex, file, line);\n  } else if (GTEST_FLAG(death_test_style) == \"fast\") {\n    *test = new NoExecDeathTest(statement, regex);\n  }\n\n# endif  // GTEST_OS_WINDOWS\n\n  else {  // NOLINT - this is more readable than unbalanced brackets inside #if.\n    DeathTest::set_last_death_test_message(\n        \"Unknown death test style \\\"\" + GTEST_FLAG(death_test_style)\n        + \"\\\" encountered\");\n    return false;\n  }\n\n  return true;\n}\n\n// Splits a given string on a given delimiter, populating a given\n// vector with the fields.  GTEST_HAS_DEATH_TEST implies that we have\n// ::std::string, so we can use it here.\nstatic void SplitString(const ::std::string& str, char delimiter,\n                        ::std::vector< ::std::string>* dest) {\n  ::std::vector< ::std::string> parsed;\n  ::std::string::size_type pos = 0;\n  while (::testing::internal::AlwaysTrue()) {\n    const ::std::string::size_type colon = str.find(delimiter, pos);\n    if (colon == ::std::string::npos) {\n      parsed.push_back(str.substr(pos));\n      break;\n    } else {\n      parsed.push_back(str.substr(pos, colon - pos));\n      pos = colon + 1;\n    }\n  }\n  dest->swap(parsed);\n}\n\n# if GTEST_OS_WINDOWS\n// Recreates the pipe and event handles from the provided parameters,\n// signals the event, and returns a file descriptor wrapped around the pipe\n// handle. This function is called in the child process only.\nint GetStatusFileDescriptor(unsigned int parent_process_id,\n                            size_t write_handle_as_size_t,\n                            size_t event_handle_as_size_t) {\n  AutoHandle parent_process_handle(::OpenProcess(PROCESS_DUP_HANDLE,\n                                                   FALSE,  // Non-inheritable.\n                                                   parent_process_id));\n  if (parent_process_handle.Get() == INVALID_HANDLE_VALUE) {\n    DeathTestAbort(\"Unable to open parent process \" +\n                   StreamableToString(parent_process_id));\n  }\n\n  // TODO(vladl@google.com): Replace the following check with a\n  // compile-time assertion when available.\n  GTEST_CHECK_(sizeof(HANDLE) <= sizeof(size_t));\n\n  const HANDLE write_handle =\n      reinterpret_cast<HANDLE>(write_handle_as_size_t);\n  HANDLE dup_write_handle;\n\n  // The newly initialized handle is accessible only in in the parent\n  // process. To obtain one accessible within the child, we need to use\n  // DuplicateHandle.\n  if (!::DuplicateHandle(parent_process_handle.Get(), write_handle,\n                         ::GetCurrentProcess(), &dup_write_handle,\n                         0x0,    // Requested privileges ignored since\n                                 // DUPLICATE_SAME_ACCESS is used.\n                         FALSE,  // Request non-inheritable handler.\n                         DUPLICATE_SAME_ACCESS)) {\n    DeathTestAbort(\"Unable to duplicate the pipe handle \" +\n                   StreamableToString(write_handle_as_size_t) +\n                   \" from the parent process \" +\n                   StreamableToString(parent_process_id));\n  }\n\n  const HANDLE event_handle = reinterpret_cast<HANDLE>(event_handle_as_size_t);\n  HANDLE dup_event_handle;\n\n  if (!::DuplicateHandle(parent_process_handle.Get(), event_handle,\n                         ::GetCurrentProcess(), &dup_event_handle,\n                         0x0,\n                         FALSE,\n                         DUPLICATE_SAME_ACCESS)) {\n    DeathTestAbort(\"Unable to duplicate the event handle \" +\n                   StreamableToString(event_handle_as_size_t) +\n                   \" from the parent process \" +\n                   StreamableToString(parent_process_id));\n  }\n\n  const int write_fd =\n      ::_open_osfhandle(reinterpret_cast<intptr_t>(dup_write_handle), O_APPEND);\n  if (write_fd == -1) {\n    DeathTestAbort(\"Unable to convert pipe handle \" +\n                   StreamableToString(write_handle_as_size_t) +\n                   \" to a file descriptor\");\n  }\n\n  // Signals the parent that the write end of the pipe has been acquired\n  // so the parent can release its own write end.\n  ::SetEvent(dup_event_handle);\n\n  return write_fd;\n}\n# endif  // GTEST_OS_WINDOWS\n\n// Returns a newly created InternalRunDeathTestFlag object with fields\n// initialized from the GTEST_FLAG(internal_run_death_test) flag if\n// the flag is specified; otherwise returns nullptr.\nInternalRunDeathTestFlag* ParseInternalRunDeathTestFlag() {\n  if (GTEST_FLAG(internal_run_death_test) == \"\") return nullptr;\n\n  // GTEST_HAS_DEATH_TEST implies that we have ::std::string, so we\n  // can use it here.\n  int line = -1;\n  int index = -1;\n  ::std::vector< ::std::string> fields;\n  SplitString(GTEST_FLAG(internal_run_death_test).c_str(), '|', &fields);\n  int write_fd = -1;\n\n# if GTEST_OS_WINDOWS\n\n  unsigned int parent_process_id = 0;\n  size_t write_handle_as_size_t = 0;\n  size_t event_handle_as_size_t = 0;\n\n  if (fields.size() != 6\n      || !ParseNaturalNumber(fields[1], &line)\n      || !ParseNaturalNumber(fields[2], &index)\n      || !ParseNaturalNumber(fields[3], &parent_process_id)\n      || !ParseNaturalNumber(fields[4], &write_handle_as_size_t)\n      || !ParseNaturalNumber(fields[5], &event_handle_as_size_t)) {\n    DeathTestAbort(\"Bad --gtest_internal_run_death_test flag: \" +\n                   GTEST_FLAG(internal_run_death_test));\n  }\n  write_fd = GetStatusFileDescriptor(parent_process_id,\n                                     write_handle_as_size_t,\n                                     event_handle_as_size_t);\n# else\n\n  if (fields.size() != 4\n      || !ParseNaturalNumber(fields[1], &line)\n      || !ParseNaturalNumber(fields[2], &index)\n      || !ParseNaturalNumber(fields[3], &write_fd)) {\n    DeathTestAbort(\"Bad --gtest_internal_run_death_test flag: \"\n        + GTEST_FLAG(internal_run_death_test));\n  }\n\n# endif  // GTEST_OS_WINDOWS\n\n  return new InternalRunDeathTestFlag(fields[0], line, index, write_fd);\n}\n\n}  // namespace internal\n\n#endif  // GTEST_HAS_DEATH_TEST\n\n}  // namespace testing\n// Copyright 2008, Google Inc.\n// All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n// Authors: keith.ray@gmail.com (Keith Ray)\n\n\n#include <stdlib.h>\n\n#if GTEST_OS_WINDOWS_MOBILE\n# include <windows.h>\n#elif GTEST_OS_WINDOWS\n# include <direct.h>\n# include <io.h>\n#elif GTEST_OS_SYMBIAN\n// Symbian OpenC has PATH_MAX in sys/syslimits.h\n# include <sys/syslimits.h>\n#else\n# include <limits.h>\n# include <climits>  // Some Linux distributions define PATH_MAX here.\n#endif  // GTEST_OS_WINDOWS_MOBILE\n\n#if GTEST_OS_WINDOWS\n# define GTEST_PATH_MAX_ _MAX_PATH\n#elif defined(PATH_MAX)\n# define GTEST_PATH_MAX_ PATH_MAX\n#elif defined(_XOPEN_PATH_MAX)\n# define GTEST_PATH_MAX_ _XOPEN_PATH_MAX\n#else\n# define GTEST_PATH_MAX_ _POSIX_PATH_MAX\n#endif  // GTEST_OS_WINDOWS\n\n\nnamespace testing {\nnamespace internal {\n\n#if GTEST_OS_WINDOWS\n// On Windows, '\\\\' is the standard path separator, but many tools and the\n// Windows API also accept '/' as an alternate path separator. Unless otherwise\n// noted, a file path can contain either kind of path separators, or a mixture\n// of them.\nconst char kPathSeparator = '\\\\';\nconst char kAlternatePathSeparator = '/';\n//const char kPathSeparatorString[] = \"\\\\\";   // commented out by Marty because unused (2014/11/08)\n//const char kAlternatePathSeparatorString[] = \"/\";   // commented out by Marty because unused (2014/11/08)\n# if GTEST_OS_WINDOWS_MOBILE\n// Windows CE doesn't have a current directory. You should not use\n// the current directory in tests on Windows CE, but this at least\n// provides a reasonable fallback.\nconst char kCurrentDirectoryString[] = \"\\\\\";\n// Windows CE doesn't define INVALID_FILE_ATTRIBUTES\nconst DWORD kInvalidFileAttributes = 0xffffffff;\n# else\nconst char kCurrentDirectoryString[] = \".\\\\\";\n# endif  // GTEST_OS_WINDOWS_MOBILE\n#else\nconst char kPathSeparator = '/';\n//const char kPathSeparatorString[] = \"/\";   // commented out by Marty because unused (2014/11/08)\nconst char kCurrentDirectoryString[] = \"./\";\n#endif  // GTEST_OS_WINDOWS\n\n// Returns whether the given character is a valid path separator.\nstatic bool IsPathSeparator(char c) {\n#if GTEST_HAS_ALT_PATH_SEP_\n  return (c == kPathSeparator) || (c == kAlternatePathSeparator);\n#else\n  return c == kPathSeparator;\n#endif\n}\n\n// Returns the current working directory, or \"\" if unsuccessful.\nFilePath FilePath::GetCurrentDir() {\n#if GTEST_OS_WINDOWS_MOBILE\n  // Windows CE doesn't have a current directory, so we just return\n  // something reasonable.\n  return FilePath(kCurrentDirectoryString);\n#elif GTEST_OS_WINDOWS\n  char cwd[GTEST_PATH_MAX_ + 1] = { '\\0' };\n  return FilePath(_getcwd(cwd, sizeof(cwd)) == nullptr ? \"\" : cwd);\n#else\n  char cwd[GTEST_PATH_MAX_ + 1] = { '\\0' };\n  return FilePath(getcwd(cwd, sizeof(cwd)) == nullptr ? \"\" : cwd);\n#endif  // GTEST_OS_WINDOWS_MOBILE\n}\n\n// Returns a copy of the FilePath with the case-insensitive extension removed.\n// Example: FilePath(\"dir/file.exe\").RemoveExtension(\"EXE\") returns\n// FilePath(\"dir/file\"). If a case-insensitive extension is not\n// found, returns a copy of the original FilePath.\nFilePath FilePath::RemoveExtension(const char* extension) const {\n  const std::string dot_extension = std::string(\".\") + extension;\n  if (String::EndsWithCaseInsensitive(pathname_, dot_extension)) {\n    return FilePath(pathname_.substr(\n        0, pathname_.length() - dot_extension.length()));\n  }\n  return *this;\n}\n\n// Returns a pointer to the last occurence of a valid path separator in\n// the FilePath. On Windows, for example, both '/' and '\\' are valid path\n// separators. Returns nullptr if no path separator was found.\nconst char* FilePath::FindLastPathSeparator() const {\n  const char* const last_sep = strrchr(c_str(), kPathSeparator);\n#if GTEST_HAS_ALT_PATH_SEP_\n  const char* const last_alt_sep = strrchr(c_str(), kAlternatePathSeparator);\n  // Comparing two pointers of which only one is null is undefined.\n  if (last_alt_sep != nullptr &&\n      (last_sep == nullptr || last_alt_sep > last_sep)) {\n    return last_alt_sep;\n  }\n#endif\n  return last_sep;\n}\n\n// Returns a copy of the FilePath with the directory part removed.\n// Example: FilePath(\"path/to/file\").RemoveDirectoryName() returns\n// FilePath(\"file\"). If there is no directory part (\"just_a_file\"), it returns\n// the FilePath unmodified. If there is no file part (\"just_a_dir/\") it\n// returns an empty FilePath (\"\").\n// On Windows platform, '\\' is the path separator, otherwise it is '/'.\nFilePath FilePath::RemoveDirectoryName() const {\n  const char* const last_sep = FindLastPathSeparator();\n  return last_sep ? FilePath(last_sep + 1) : *this;\n}\n\n// RemoveFileName returns the directory path with the filename removed.\n// Example: FilePath(\"path/to/file\").RemoveFileName() returns \"path/to/\".\n// If the FilePath is \"a_file\" or \"/a_file\", RemoveFileName returns\n// FilePath(\"./\") or, on Windows, FilePath(\".\\\\\"). If the filepath does\n// not have a file, like \"just/a/dir/\", it returns the FilePath unmodified.\n// On Windows platform, '\\' is the path separator, otherwise it is '/'.\nFilePath FilePath::RemoveFileName() const {\n  const char* const last_sep = FindLastPathSeparator();\n  std::string dir;\n  if (last_sep) {\n    dir = std::string(c_str(), last_sep + 1 - c_str());\n  } else {\n    dir = kCurrentDirectoryString;\n  }\n  return FilePath(dir);\n}\n\n// Helper functions for naming files in a directory for xml output.\n\n// Given directory = \"dir\", base_name = \"test\", number = 0,\n// extension = \"xml\", returns \"dir/test.xml\". If number is greater\n// than zero (e.g., 12), returns \"dir/test_12.xml\".\n// On Windows platform, uses \\ as the separator rather than /.\nFilePath FilePath::MakeFileName(const FilePath& directory,\n                                const FilePath& base_name,\n                                int number,\n                                const char* extension) {\n  std::string file;\n  if (number == 0) {\n    file = base_name.string() + \".\" + extension;\n  } else {\n    file = base_name.string() + \"_\" + StreamableToString(number)\n        + \".\" + extension;\n  }\n  return ConcatPaths(directory, FilePath(file));\n}\n\n// Given directory = \"dir\", relative_path = \"test.xml\", returns \"dir/test.xml\".\n// On Windows, uses \\ as the separator rather than /.\nFilePath FilePath::ConcatPaths(const FilePath& directory,\n                               const FilePath& relative_path) {\n  if (directory.IsEmpty())\n    return relative_path;\n  const FilePath dir(directory.RemoveTrailingPathSeparator());\n  return FilePath(dir.string() + kPathSeparator + relative_path.string());\n}\n\n// Returns true if pathname describes something findable in the file-system,\n// either a file, directory, or whatever.\nbool FilePath::FileOrDirectoryExists() const {\n#if GTEST_OS_WINDOWS_MOBILE\n  LPCWSTR unicode = String::AnsiToUtf16(pathname_.c_str());\n  const DWORD attributes = GetFileAttributes(unicode);\n  delete [] unicode;\n  return attributes != kInvalidFileAttributes;\n#else\n  posix::StatStruct file_stat;\n  return posix::Stat(pathname_.c_str(), &file_stat) == 0;\n#endif  // GTEST_OS_WINDOWS_MOBILE\n}\n\n// Returns true if pathname describes a directory in the file-system\n// that exists.\nbool FilePath::DirectoryExists() const {\n  bool result = false;\n#if GTEST_OS_WINDOWS\n  // Don't strip off trailing separator if path is a root directory on\n  // Windows (like \"C:\\\\\").\n  const FilePath& path(IsRootDirectory() ? *this :\n                                           RemoveTrailingPathSeparator());\n#else\n  const FilePath& path(*this);\n#endif\n\n#if GTEST_OS_WINDOWS_MOBILE\n  LPCWSTR unicode = String::AnsiToUtf16(path.c_str());\n  const DWORD attributes = GetFileAttributes(unicode);\n  delete [] unicode;\n  if ((attributes != kInvalidFileAttributes) &&\n      (attributes & FILE_ATTRIBUTE_DIRECTORY)) {\n    result = true;\n  }\n#else\n  posix::StatStruct file_stat;\n  result = posix::Stat(path.c_str(), &file_stat) == 0 &&\n      posix::IsDir(file_stat);\n#endif  // GTEST_OS_WINDOWS_MOBILE\n\n  return result;\n}\n\n// Returns true if pathname describes a root directory. (Windows has one\n// root directory per disk drive.)\nbool FilePath::IsRootDirectory() const {\n#if GTEST_OS_WINDOWS\n  // TODO(wan@google.com): on Windows a network share like\n  // \\\\server\\share can be a root directory, although it cannot be the\n  // current directory.  Handle this properly.\n  return pathname_.length() == 3 && IsAbsolutePath();\n#else\n  return pathname_.length() == 1 && IsPathSeparator(pathname_.c_str()[0]);\n#endif\n}\n\n// Returns true if pathname describes an absolute path.\nbool FilePath::IsAbsolutePath() const {\n  const char* const name = pathname_.c_str();\n#if GTEST_OS_WINDOWS\n  return pathname_.length() >= 3 &&\n     ((name[0] >= 'a' && name[0] <= 'z') ||\n      (name[0] >= 'A' && name[0] <= 'Z')) &&\n     name[1] == ':' &&\n     IsPathSeparator(name[2]);\n#else\n  return IsPathSeparator(name[0]);\n#endif\n}\n\n// Returns a pathname for a file that does not currently exist. The pathname\n// will be directory/base_name.extension or\n// directory/base_name_<number>.extension if directory/base_name.extension\n// already exists. The number will be incremented until a pathname is found\n// that does not already exist.\n// Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'.\n// There could be a race condition if two or more processes are calling this\n// function at the same time -- they could both pick the same filename.\nFilePath FilePath::GenerateUniqueFileName(const FilePath& directory,\n                                          const FilePath& base_name,\n                                          const char* extension) {\n  FilePath full_pathname;\n  int number = 0;\n  do {\n    full_pathname.Set(MakeFileName(directory, base_name, number++, extension));\n  } while (full_pathname.FileOrDirectoryExists());\n  return full_pathname;\n}\n\n// Returns true if FilePath ends with a path separator, which indicates that\n// it is intended to represent a directory. Returns false otherwise.\n// This does NOT check that a directory (or file) actually exists.\nbool FilePath::IsDirectory() const {\n  return !pathname_.empty() &&\n         IsPathSeparator(pathname_.c_str()[pathname_.length() - 1]);\n}\n\n// Create directories so that path exists. Returns true if successful or if\n// the directories already exist; returns false if unable to create directories\n// for any reason.\nbool FilePath::CreateDirectoriesRecursively() const {\n  if (!this->IsDirectory()) {\n    return false;\n  }\n\n  if (pathname_.length() == 0 || this->DirectoryExists()) {\n    return true;\n  }\n\n  const FilePath parent(this->RemoveTrailingPathSeparator().RemoveFileName());\n  return parent.CreateDirectoriesRecursively() && this->CreateFolder();\n}\n\n// Create the directory so that path exists. Returns true if successful or\n// if the directory already exists; returns false if unable to create the\n// directory for any reason, including if the parent directory does not\n// exist. Not named \"CreateDirectory\" because that's a macro on Windows.\nbool FilePath::CreateFolder() const {\n#if GTEST_OS_WINDOWS_MOBILE\n  FilePath removed_sep(this->RemoveTrailingPathSeparator());\n  LPCWSTR unicode = String::AnsiToUtf16(removed_sep.c_str());\n  int result = CreateDirectory(unicode, nullptr) ? 0 : -1;\n  delete [] unicode;\n#elif GTEST_OS_WINDOWS\n  int result = _mkdir(pathname_.c_str());\n#else\n  int result = mkdir(pathname_.c_str(), 0777);\n#endif  // GTEST_OS_WINDOWS_MOBILE\n\n  if (result == -1) {\n    return this->DirectoryExists();  // An error is OK if the directory exists.\n  }\n  return true;  // No error.\n}\n\n// If input name has a trailing separator character, remove it and return the\n// name, otherwise return the name string unmodified.\n// On Windows platform, uses \\ as the separator, other platforms use /.\nFilePath FilePath::RemoveTrailingPathSeparator() const {\n  return IsDirectory()\n      ? FilePath(pathname_.substr(0, pathname_.length() - 1))\n      : *this;\n}\n\n// Removes any redundant separators that might be in the pathname.\n// For example, \"bar///foo\" becomes \"bar/foo\". Does not eliminate other\n// redundancies that might be in a pathname involving \".\" or \"..\".\n// TODO(wan@google.com): handle Windows network shares (e.g. \\\\server\\share).\nvoid FilePath::Normalize() {\n  if (pathname_.c_str() == nullptr) {\n    pathname_ = \"\";\n    return;\n  }\n  const char* src = pathname_.c_str();\n  char* const dest = new char[pathname_.length() + 1];\n  char* dest_ptr = dest;\n  memset(dest_ptr, 0, pathname_.length() + 1);\n\n  while (*src != '\\0') {\n    *dest_ptr = *src;\n    if (!IsPathSeparator(*src)) {\n      src++;\n    } else {\n#if GTEST_HAS_ALT_PATH_SEP_\n      if (*dest_ptr == kAlternatePathSeparator) {\n        *dest_ptr = kPathSeparator;\n      }\n#endif\n      while (IsPathSeparator(*src))\n        src++;\n    }\n    dest_ptr++;\n  }\n  *dest_ptr = '\\0';\n  pathname_ = dest;\n  delete[] dest;\n}\n\n}  // namespace internal\n}  // namespace testing\n// Copyright 2008, Google Inc.\n// All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n// Author: wan@google.com (Zhanyong Wan)\n\n\n#include <limits.h>\n#include <stdlib.h>\n#include <stdio.h>\n#include <string.h>\n\n#if GTEST_OS_WINDOWS_MOBILE\n# include <windows.h>  // For TerminateProcess()\n#elif GTEST_OS_WINDOWS\n# include <io.h>\n# include <sys/stat.h>\n#else\n# include <unistd.h>\n#endif  // GTEST_OS_WINDOWS_MOBILE\n\n#if GTEST_OS_MAC\n# include <mach/mach_init.h>\n# include <mach/task.h>\n# include <mach/vm_map.h>\n#endif  // GTEST_OS_MAC\n\n#if GTEST_OS_QNX\n# include <devctl.h>\n# include <sys/procfs.h>\n#endif  // GTEST_OS_QNX\n\n\n// Indicates that this translation unit is part of Google Test's\n// implementation.  It must come before gtest-internal-inl.h is\n// included, or there will be a compiler error.  This trick is to\n// prevent a user from accidentally including gtest-internal-inl.h in\n// his code.\n#define GTEST_IMPLEMENTATION_ 1\n#undef GTEST_IMPLEMENTATION_\n\nnamespace testing {\nnamespace internal {\n\n#if defined(_MSC_VER) || defined(__BORLANDC__)\n// MSVC and C++Builder do not provide a definition of STDERR_FILENO.\nconst int kStdOutFileno = 1;\nconst int kStdErrFileno = 2;\n#else\nconst int kStdOutFileno = STDOUT_FILENO;\nconst int kStdErrFileno = STDERR_FILENO;\n#endif  // _MSC_VER\n\n#if GTEST_OS_MAC\n\n// Returns the number of threads running in the process, or 0 to indicate that\n// we cannot detect it.\nsize_t GetThreadCount() {\n  const task_t task = mach_task_self();\n  mach_msg_type_number_t thread_count;\n  thread_act_array_t thread_list;\n  const kern_return_t status = task_threads(task, &thread_list, &thread_count);\n  if (status == KERN_SUCCESS) {\n    // task_threads allocates resources in thread_list and we need to free them\n    // to avoid leaks.\n    vm_deallocate(task,\n                  reinterpret_cast<vm_address_t>(thread_list),\n                  sizeof(thread_t) * thread_count);\n    return static_cast<size_t>(thread_count);\n  } else {\n    return 0;\n  }\n}\n\n#elif GTEST_OS_QNX\n\n// Returns the number of threads running in the process, or 0 to indicate that\n// we cannot detect it.\nsize_t GetThreadCount() {\n  const int fd = open(\"/proc/self/as\", O_RDONLY);\n  if (fd < 0) {\n    return 0;\n  }\n  procfs_info process_info;\n  const int status =\n      devctl(fd, DCMD_PROC_INFO, &process_info, sizeof(process_info), nullptr);\n  close(fd);\n  if (status == EOK) {\n    return static_cast<size_t>(process_info.num_threads);\n  } else {\n    return 0;\n  }\n}\n\n#else\n\nsize_t GetThreadCount() {\n  // There's no portable way to detect the number of threads, so we just\n  // return 0 to indicate that we cannot detect it.\n  return 0;\n}\n\n#endif  // GTEST_OS_MAC\n\n#if GTEST_USES_POSIX_RE\n\n// Implements RE.  Currently only needed for death tests.\n\nRE::~RE() {\n  if (is_valid_) {\n    // regfree'ing an invalid regex might crash because the content\n    // of the regex is undefined. Since the regex's are essentially\n    // the same, one cannot be valid (or invalid) without the other\n    // being so too.\n    regfree(&partial_regex_);\n    regfree(&full_regex_);\n  }\n  free(const_cast<char*>(pattern_));\n}\n\n// Returns true iff regular expression re matches the entire str.\nbool RE::FullMatch(const char* str, const RE& re) {\n  if (!re.is_valid_) return false;\n\n  regmatch_t match;\n  return regexec(&re.full_regex_, str, 1, &match, 0) == 0;\n}\n\n// Returns true iff regular expression re matches a substring of str\n// (including str itself).\nbool RE::PartialMatch(const char* str, const RE& re) {\n  if (!re.is_valid_) return false;\n\n  regmatch_t match;\n  return regexec(&re.partial_regex_, str, 1, &match, 0) == 0;\n}\n\n// Initializes an RE from its string representation.\nvoid RE::Init(const char* regex) {\n  pattern_ = posix::StrDup(regex);\n\n  // Reserves enough bytes to hold the regular expression used for a\n  // full match.\n  const size_t full_regex_len = strlen(regex) + 10;\n  char* const full_pattern = new char[full_regex_len];\n\n  snprintf(full_pattern, full_regex_len, \"^(%s)$\", regex);\n  is_valid_ = regcomp(&full_regex_, full_pattern, REG_EXTENDED) == 0;\n  // We want to call regcomp(&partial_regex_, ...) even if the\n  // previous expression returns false.  Otherwise partial_regex_ may\n  // not be properly initialized can may cause trouble when it's\n  // freed.\n  //\n  // Some implementation of POSIX regex (e.g. on at least some\n  // versions of Cygwin) doesn't accept the empty string as a valid\n  // regex.  We change it to an equivalent form \"()\" to be safe.\n  if (is_valid_) {\n    const char* const partial_regex = (*regex == '\\0') ? \"()\" : regex;\n    is_valid_ = regcomp(&partial_regex_, partial_regex, REG_EXTENDED) == 0;\n  }\n  EXPECT_TRUE(is_valid_)\n      << \"Regular expression \\\"\" << regex\n      << \"\\\" is not a valid POSIX Extended regular expression.\";\n\n  delete[] full_pattern;\n}\n\n#elif GTEST_USES_SIMPLE_RE\n\n// Returns true iff ch appears anywhere in str (excluding the\n// terminating '\\0' character).\nbool IsInSet(char ch, const char* str) {\n  return ch != '\\0' && strchr(str, ch) != nullptr;\n}\n\n// Returns true iff ch belongs to the given classification.  Unlike\n// similar functions in <ctype.h>, these aren't affected by the\n// current locale.\nbool IsAsciiDigit(char ch) { return '0' <= ch && ch <= '9'; }\nbool IsAsciiPunct(char ch) {\n  return IsInSet(ch, \"^-!\\\"#$%&'()*+,./:;<=>?@[\\\\]_`{|}~\");\n}\nbool IsRepeat(char ch) { return IsInSet(ch, \"?*+\"); }\nbool IsAsciiWhiteSpace(char ch) { return IsInSet(ch, \" \\f\\n\\r\\t\\v\"); }\nbool IsAsciiWordChar(char ch) {\n  return ('a' <= ch && ch <= 'z') || ('A' <= ch && ch <= 'Z') ||\n      ('0' <= ch && ch <= '9') || ch == '_';\n}\n\n// Returns true iff \"\\\\c\" is a supported escape sequence.\nbool IsValidEscape(char c) {\n  return (IsAsciiPunct(c) || IsInSet(c, \"dDfnrsStvwW\"));\n}\n\n// Returns true iff the given atom (specified by escaped and pattern)\n// matches ch.  The result is undefined if the atom is invalid.\nbool AtomMatchesChar(bool escaped, char pattern_char, char ch) {\n  if (escaped) {  // \"\\\\p\" where p is pattern_char.\n    switch (pattern_char) {\n      case 'd': return IsAsciiDigit(ch);\n      case 'D': return !IsAsciiDigit(ch);\n      case 'f': return ch == '\\f';\n      case 'n': return ch == '\\n';\n      case 'r': return ch == '\\r';\n      case 's': return IsAsciiWhiteSpace(ch);\n      case 'S': return !IsAsciiWhiteSpace(ch);\n      case 't': return ch == '\\t';\n      case 'v': return ch == '\\v';\n      case 'w': return IsAsciiWordChar(ch);\n      case 'W': return !IsAsciiWordChar(ch);\n    }\n    return IsAsciiPunct(pattern_char) && pattern_char == ch;\n  }\n\n  return (pattern_char == '.' && ch != '\\n') || pattern_char == ch;\n}\n\n// Helper function used by ValidateRegex() to format error messages.\nstd::string FormatRegexSyntaxError(const char* regex, int index) {\n  return (Message() << \"Syntax error at index \" << index\n          << \" in simple regular expression \\\"\" << regex << \"\\\": \").GetString();\n}\n\n// Generates non-fatal failures and returns false if regex is invalid;\n// otherwise returns true.\nbool ValidateRegex(const char* regex) {\n  if (regex == nullptr) {\n    // TODO(wan@google.com): fix the source file location in the\n    // assertion failures to match where the regex is used in user\n    // code.\n    ADD_FAILURE() << \"NULL is not a valid simple regular expression.\";\n    return false;\n  }\n\n  bool is_valid = true;\n\n  // True iff ?, *, or + can follow the previous atom.\n  bool prev_repeatable = false;\n  for (int i = 0; regex[i]; i++) {\n    if (regex[i] == '\\\\') {  // An escape sequence\n      i++;\n      if (regex[i] == '\\0') {\n        ADD_FAILURE() << FormatRegexSyntaxError(regex, i - 1)\n                      << \"'\\\\' cannot appear at the end.\";\n        return false;\n      }\n\n      if (!IsValidEscape(regex[i])) {\n        ADD_FAILURE() << FormatRegexSyntaxError(regex, i - 1)\n                      << \"invalid escape sequence \\\"\\\\\" << regex[i] << \"\\\".\";\n        is_valid = false;\n      }\n      prev_repeatable = true;\n    } else {  // Not an escape sequence.\n      const char ch = regex[i];\n\n      if (ch == '^' && i > 0) {\n        ADD_FAILURE() << FormatRegexSyntaxError(regex, i)\n                      << \"'^' can only appear at the beginning.\";\n        is_valid = false;\n      } else if (ch == '$' && regex[i + 1] != '\\0') {\n        ADD_FAILURE() << FormatRegexSyntaxError(regex, i)\n                      << \"'$' can only appear at the end.\";\n        is_valid = false;\n      } else if (IsInSet(ch, \"()[]{}|\")) {\n        ADD_FAILURE() << FormatRegexSyntaxError(regex, i)\n                      << \"'\" << ch << \"' is unsupported.\";\n        is_valid = false;\n      } else if (IsRepeat(ch) && !prev_repeatable) {\n        ADD_FAILURE() << FormatRegexSyntaxError(regex, i)\n                      << \"'\" << ch << \"' can only follow a repeatable token.\";\n        is_valid = false;\n      }\n\n      prev_repeatable = !IsInSet(ch, \"^$?*+\");\n    }\n  }\n\n  return is_valid;\n}\n\n// Matches a repeated regex atom followed by a valid simple regular\n// expression.  The regex atom is defined as c if escaped is false,\n// or \\c otherwise.  repeat is the repetition meta character (?, *,\n// or +).  The behavior is undefined if str contains too many\n// characters to be indexable by size_t, in which case the test will\n// probably time out anyway.  We are fine with this limitation as\n// std::string has it too.\nbool MatchRepetitionAndRegexAtHead(\n    bool escaped, char c, char repeat, const char* regex,\n    const char* str) {\n  const size_t min_count = (repeat == '+') ? 1 : 0;\n  const size_t max_count = (repeat == '?') ? 1 :\n      static_cast<size_t>(-1) - 1;\n  // We cannot call numeric_limits::max() as it conflicts with the\n  // max() macro on Windows.\n\n  for (size_t i = 0; i <= max_count; ++i) {\n    // We know that the atom matches each of the first i characters in str.\n    if (i >= min_count && MatchRegexAtHead(regex, str + i)) {\n      // We have enough matches at the head, and the tail matches too.\n      // Since we only care about *whether* the pattern matches str\n      // (as opposed to *how* it matches), there is no need to find a\n      // greedy match.\n      return true;\n    }\n    if (str[i] == '\\0' || !AtomMatchesChar(escaped, c, str[i]))\n      return false;\n  }\n  return false;\n}\n\n// Returns true iff regex matches a prefix of str.  regex must be a\n// valid simple regular expression and not start with \"^\", or the\n// result is undefined.\nbool MatchRegexAtHead(const char* regex, const char* str) {\n  if (*regex == '\\0')  // An empty regex matches a prefix of anything.\n    return true;\n\n  // \"$\" only matches the end of a string.  Note that regex being\n  // valid guarantees that there's nothing after \"$\" in it.\n  if (*regex == '$')\n    return *str == '\\0';\n\n  // Is the first thing in regex an escape sequence?\n  const bool escaped = *regex == '\\\\';\n  if (escaped)\n    ++regex;\n  if (IsRepeat(regex[1])) {\n    // MatchRepetitionAndRegexAtHead() calls MatchRegexAtHead(), so\n    // here's an indirect recursion.  It terminates as the regex gets\n    // shorter in each recursion.\n    return MatchRepetitionAndRegexAtHead(\n        escaped, regex[0], regex[1], regex + 2, str);\n  } else {\n    // regex isn't empty, isn't \"$\", and doesn't start with a\n    // repetition.  We match the first atom of regex with the first\n    // character of str and recurse.\n    return (*str != '\\0') && AtomMatchesChar(escaped, *regex, *str) &&\n        MatchRegexAtHead(regex + 1, str + 1);\n  }\n}\n\n// Returns true iff regex matches any substring of str.  regex must be\n// a valid simple regular expression, or the result is undefined.\n//\n// The algorithm is recursive, but the recursion depth doesn't exceed\n// the regex length, so we won't need to worry about running out of\n// stack space normally.  In rare cases the time complexity can be\n// exponential with respect to the regex length + the string length,\n// but usually it's must faster (often close to linear).\nbool MatchRegexAnywhere(const char* regex, const char* str) {\n  if (regex == nullptr || str == nullptr)\n    return false;\n\n  if (*regex == '^')\n    return MatchRegexAtHead(regex + 1, str);\n\n  // A successful match can be anywhere in str.\n  do {\n    if (MatchRegexAtHead(regex, str))\n      return true;\n  } while (*str++ != '\\0');\n  return false;\n}\n\n// Implements the RE class.\n\nRE::~RE() {\n  free(const_cast<char*>(pattern_));\n  free(const_cast<char*>(full_pattern_));\n}\n\n// Returns true iff regular expression re matches the entire str.\nbool RE::FullMatch(const char* str, const RE& re) {\n  return re.is_valid_ && MatchRegexAnywhere(re.full_pattern_, str);\n}\n\n// Returns true iff regular expression re matches a substring of str\n// (including str itself).\nbool RE::PartialMatch(const char* str, const RE& re) {\n  return re.is_valid_ && MatchRegexAnywhere(re.pattern_, str);\n}\n\n// Initializes an RE from its string representation.\nvoid RE::Init(const char* regex) {\n  pattern_ = full_pattern_ = nullptr;\n  if (regex != nullptr) {\n    pattern_ = posix::StrDup(regex);\n  }\n\n  is_valid_ = ValidateRegex(regex);\n  if (!is_valid_) {\n    // No need to calculate the full pattern when the regex is invalid.\n    return;\n  }\n\n  const size_t len = strlen(regex);\n  // Reserves enough bytes to hold the regular expression used for a\n  // full match: we need space to prepend a '^', append a '$', and\n  // terminate the string with '\\0'.\n  char* buffer = static_cast<char*>(malloc(len + 3));\n  full_pattern_ = buffer;\n\n  if (*regex != '^')\n    *buffer++ = '^';  // Makes sure full_pattern_ starts with '^'.\n\n  // We don't use snprintf or strncpy, as they trigger a warning when\n  // compiled with VC++ 8.0.\n  memcpy(buffer, regex, len);\n  buffer += len;\n\n  if (len == 0 || regex[len - 1] != '$')\n    *buffer++ = '$';  // Makes sure full_pattern_ ends with '$'.\n\n  *buffer = '\\0';\n}\n\n#endif  // GTEST_USES_POSIX_RE\n\nconst char kUnknownFile[] = \"unknown file\";\n\n// Formats a source file path and a line number as they would appear\n// in an error message from the compiler used to compile this code.\nGTEST_API_ ::std::string FormatFileLocation(const char* file, int line) {\n  const std::string file_name(file == nullptr ? kUnknownFile : file);\n\n  if (line < 0) {\n    return file_name + \":\";\n  }\n#ifdef _MSC_VER\n  return file_name + \"(\" + StreamableToString(line) + \"):\";\n#else\n  return file_name + \":\" + StreamableToString(line) + \":\";\n#endif  // _MSC_VER\n}\n\n// Formats a file location for compiler-independent XML output.\n// Although this function is not platform dependent, we put it next to\n// FormatFileLocation in order to contrast the two functions.\n// Note that FormatCompilerIndependentFileLocation() does NOT append colon\n// to the file location it produces, unlike FormatFileLocation().\nGTEST_API_ ::std::string FormatCompilerIndependentFileLocation(\n    const char* file, int line) {\n  const std::string file_name(file == nullptr ? kUnknownFile : file);\n\n  if (line < 0)\n    return file_name;\n  else\n    return file_name + \":\" + StreamableToString(line);\n}\n\n\nGTestLog::GTestLog(GTestLogSeverity severity, const char* file, int line)\n    : severity_(severity) {\n  const char* const marker =\n      severity == GTEST_INFO ?    \"[  INFO ]\" :\n      severity == GTEST_WARNING ? \"[WARNING]\" :\n      severity == GTEST_ERROR ?   \"[ ERROR ]\" : \"[ FATAL ]\";\n  GetStream() << ::std::endl << marker << \" \"\n              << FormatFileLocation(file, line).c_str() << \": \";\n}\n\n// Flushes the buffers and, if severity is GTEST_FATAL, aborts the program.\nGTestLog::~GTestLog() {\n  GetStream() << ::std::endl;\n  if (severity_ == GTEST_FATAL) {\n    fflush(stderr);\n    posix::Abort();\n  }\n}\n// Disable Microsoft deprecation warnings for POSIX functions called from\n// this class (creat, dup, dup2, and close)\n#ifdef _MSC_VER\n# pragma warning(push)\n# pragma warning(disable: 4996)\n#endif  // _MSC_VER\n\n#if GTEST_HAS_STREAM_REDIRECTION\n\n// Object that captures an output stream (stdout/stderr).\nclass CapturedStream {\n public:\n  // The ctor redirects the stream to a temporary file.\n  explicit CapturedStream(int fd) : fd_(fd), uncaptured_fd_(dup(fd)) {\n# if GTEST_OS_WINDOWS\n    char temp_dir_path[MAX_PATH + 1] = { '\\0' };  // NOLINT\n    char temp_file_path[MAX_PATH + 1] = { '\\0' };  // NOLINT\n\n    ::GetTempPathA(sizeof(temp_dir_path), temp_dir_path);\n    const UINT success = ::GetTempFileNameA(temp_dir_path,\n                                            \"gtest_redir\",\n                                            0,  // Generate unique file name.\n                                            temp_file_path);\n    GTEST_CHECK_(success != 0)\n        << \"Unable to create a temporary file in \" << temp_dir_path;\n    const int captured_fd = creat(temp_file_path, _S_IREAD | _S_IWRITE);\n    GTEST_CHECK_(captured_fd != -1) << \"Unable to open temporary file \"\n                                    << temp_file_path;\n    filename_ = temp_file_path;\n# else\n    // There's no guarantee that a test has write access to the current\n    // directory, so we create the temporary file in the /tmp directory\n    // instead. We use /tmp on most systems, and /sdcard on Android.\n    // That's because Android doesn't have /tmp.\n#  if GTEST_OS_LINUX_ANDROID\n    // Note: Android applications are expected to call the framework's\n    // Context.getExternalStorageDirectory() method through JNI to get\n    // the location of the world-writable SD Card directory. However,\n    // this requires a Context handle, which cannot be retrieved\n    // globally from native code. Doing so also precludes running the\n    // code as part of a regular standalone executable, which doesn't\n    // run in a Dalvik process (e.g. when running it through 'adb shell').\n    //\n    // The location /sdcard is directly accessible from native code\n    // and is the only location (unofficially) supported by the Android\n    // team. It's generally a symlink to the real SD Card mount point\n    // which can be /mnt/sdcard, /mnt/sdcard0, /system/media/sdcard, or\n    // other OEM-customized locations. Never rely on these, and always\n    // use /sdcard.\n    char name_template[] = \"/sdcard/gtest_captured_stream.XXXXXX\";\n#  else\n    char name_template[] = \"/tmp/captured_stream.XXXXXX\";\n#  endif  // GTEST_OS_LINUX_ANDROID\n    const int captured_fd = mkstemp(name_template);\n    filename_ = name_template;\n# endif  // GTEST_OS_WINDOWS\n    fflush(nullptr);\n    dup2(captured_fd, fd_);\n    close(captured_fd);\n  }\n\n  ~CapturedStream() {\n    remove(filename_.c_str());\n  }\n\n  std::string GetCapturedString() {\n    if (uncaptured_fd_ != -1) {\n      // Restores the original stream.\n      fflush(nullptr);\n      dup2(uncaptured_fd_, fd_);\n      close(uncaptured_fd_);\n      uncaptured_fd_ = -1;\n    }\n\n    FILE* const file = posix::FOpen(filename_.c_str(), \"r\");\n    const std::string content = ReadEntireFile(file);\n    posix::FClose(file);\n    return content;\n  }\n\n private:\n  // Reads the entire content of a file as an std::string.\n  static std::string ReadEntireFile(FILE* file);\n\n  // Returns the size (in bytes) of a file.\n  static size_t GetFileSize(FILE* file);\n\n  const int fd_;  // A stream to capture.\n  int uncaptured_fd_;\n  // Name of the temporary file holding the stderr output.\n  ::std::string filename_;\n\n  GTEST_DISALLOW_COPY_AND_ASSIGN_(CapturedStream);\n};\n\n// Returns the size (in bytes) of a file.\nsize_t CapturedStream::GetFileSize(FILE* file) {\n  fseek(file, 0, SEEK_END);\n  return static_cast<size_t>(ftell(file));\n}\n\n// Reads the entire content of a file as a string.\nstd::string CapturedStream::ReadEntireFile(FILE* file) {\n  const size_t file_size = GetFileSize(file);\n  char* const buffer = new char[file_size];\n\n  size_t bytes_last_read = 0;  // # of bytes read in the last fread()\n  size_t bytes_read = 0;       // # of bytes read so far\n\n  fseek(file, 0, SEEK_SET);\n\n  // Keeps reading the file until we cannot read further or the\n  // pre-determined file size is reached.\n  do {\n    bytes_last_read = fread(buffer+bytes_read, 1, file_size-bytes_read, file);\n    bytes_read += bytes_last_read;\n  } while (bytes_last_read > 0 && bytes_read < file_size);\n\n  const std::string content(buffer, bytes_read);\n  delete[] buffer;\n\n  return content;\n}\n\n# ifdef _MSC_VER\n#  pragma warning(pop)\n# endif  // _MSC_VER\n\nstatic CapturedStream* g_captured_stderr = nullptr;\nstatic CapturedStream* g_captured_stdout = nullptr;\n\n// Starts capturing an output stream (stdout/stderr).\nvoid CaptureStream(int fd, const char* stream_name, CapturedStream** stream) {\n  if (*stream != nullptr) {\n    GTEST_LOG_(FATAL) << \"Only one \" << stream_name\n                      << \" capturer can exist at a time.\";\n  }\n  *stream = new CapturedStream(fd);\n}\n\n// Stops capturing the output stream and returns the captured string.\nstd::string GetCapturedStream(CapturedStream** captured_stream) {\n  const std::string content = (*captured_stream)->GetCapturedString();\n\n  delete *captured_stream;\n  *captured_stream = nullptr;\n\n  return content;\n}\n\n// Starts capturing stdout.\nvoid CaptureStdout() {\n  CaptureStream(kStdOutFileno, \"stdout\", &g_captured_stdout);\n}\n\n// Starts capturing stderr.\nvoid CaptureStderr() {\n  CaptureStream(kStdErrFileno, \"stderr\", &g_captured_stderr);\n}\n\n// Stops capturing stdout and returns the captured string.\nstd::string GetCapturedStdout() {\n  return GetCapturedStream(&g_captured_stdout);\n}\n\n// Stops capturing stderr and returns the captured string.\nstd::string GetCapturedStderr() {\n  return GetCapturedStream(&g_captured_stderr);\n}\n\n#endif  // GTEST_HAS_STREAM_REDIRECTION\n\n#if GTEST_HAS_DEATH_TEST\n\n// A copy of all command line arguments.  Set by InitGoogleTest().\n::std::vector<testing::internal::string> g_argvs;\n\nstatic const ::std::vector<testing::internal::string>* g_injected_test_argvs =\n                                        nullptr;  // Owned.\n\nvoid SetInjectableArgvs(const ::std::vector<testing::internal::string>* argvs) {\n  if (g_injected_test_argvs != argvs)\n    delete g_injected_test_argvs;\n  g_injected_test_argvs = argvs;\n}\n\nconst ::std::vector<testing::internal::string>& GetInjectableArgvs() {\n  if (g_injected_test_argvs != nullptr) {\n    return *g_injected_test_argvs;\n  }\n  return g_argvs;\n}\n#endif  // GTEST_HAS_DEATH_TEST\n\n#if GTEST_OS_WINDOWS_MOBILE\nnamespace posix {\nvoid Abort() {\n  DebugBreak();\n  TerminateProcess(GetCurrentProcess(), 1);\n}\n}  // namespace posix\n#endif  // GTEST_OS_WINDOWS_MOBILE\n\n// Returns the name of the environment variable corresponding to the\n// given flag.  For example, FlagToEnvVar(\"foo\") will return\n// \"GTEST_FOO\" in the open-source version.\nstatic std::string FlagToEnvVar(const char* flag) {\n  const std::string full_flag =\n      (Message() << GTEST_FLAG_PREFIX_ << flag).GetString();\n\n  Message env_var;\n  for (size_t i = 0; i != full_flag.length(); i++) {\n    env_var << ToUpper(full_flag.c_str()[i]);\n  }\n\n  return env_var.GetString();\n}\n\n// Parses 'str' for a 32-bit signed integer.  If successful, writes\n// the result to *value and returns true; otherwise leaves *value\n// unchanged and returns false.\nbool ParseInt32(const Message& src_text, const char* str, Int32* value) {\n  // Parses the environment variable as a decimal integer.\n  char* end = nullptr;\n  const long long_value = strtol(str, &end, 10);  // NOLINT\n\n  // Has strtol() consumed all characters in the string?\n  if (*end != '\\0') {\n    // No - an invalid character was encountered.\n    Message msg;\n    msg << \"WARNING: \" << src_text\n        << \" is expected to be a 32-bit integer, but actually\"\n        << \" has value \\\"\" << str << \"\\\".\\n\";\n    std::cout << msg.GetString();\n    std::cout.flush();\n    return false;\n  }\n\n  // Is the parsed value in the range of an Int32?\n  const Int32 result = static_cast<Int32>(long_value);\n  if (long_value == LONG_MAX || long_value == LONG_MIN ||\n      // The parsed value overflows as a long.  (strtol() returns\n      // LONG_MAX or LONG_MIN when the input overflows.)\n      result != long_value\n      // The parsed value overflows as an Int32.\n      ) {\n    Message msg;\n    msg << \"WARNING: \" << src_text\n        << \" is expected to be a 32-bit integer, but actually\"\n        << \" has value \" << str << \", which overflows.\\n\";\n    std::cout << msg.GetString();\n    std::cout.flush();\n    return false;\n  }\n\n  *value = result;\n  return true;\n}\n\n// Reads and returns the Boolean environment variable corresponding to\n// the given flag; if it's not set, returns default_value.\n//\n// The value is considered true iff it's not \"0\".\nbool BoolFromGTestEnv(const char* flag, bool default_value) {\n  const std::string env_var = FlagToEnvVar(flag);\n  const char* const string_value = posix::GetEnv(env_var.c_str());\n  return string_value == nullptr ?\n      default_value : strcmp(string_value, \"0\") != 0;\n}\n\n// Reads and returns a 32-bit integer stored in the environment\n// variable corresponding to the given flag; if it isn't set or\n// doesn't represent a valid 32-bit integer, returns default_value.\nInt32 Int32FromGTestEnv(const char* flag, Int32 default_value) {\n  const std::string env_var = FlagToEnvVar(flag);\n  const char* const string_value = posix::GetEnv(env_var.c_str());\n  if (string_value == nullptr) {\n    // The environment variable is not set.\n    return default_value;\n  }\n\n  Int32 result = default_value;\n  if (!ParseInt32(Message() << \"Environment variable \" << env_var,\n                  string_value, &result)) {\n    std::cout << \"The default value \" << (Message() << default_value).GetString() << \" is used.\" << std::endl;\n    std::cout.flush();\n    return default_value;\n  }\n\n  return result;\n}\n\n// Reads and returns the string environment variable corresponding to\n// the given flag; if it's not set, returns default_value.\nconst char* StringFromGTestEnv(const char* flag, const char* default_value) {\n  const std::string env_var = FlagToEnvVar(flag);\n  const char* const value = posix::GetEnv(env_var.c_str());\n  return value == nullptr ? default_value : value;\n}\n\n}  // namespace internal\n}  // namespace testing\n// Copyright 2007, Google Inc.\n// All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n// Author: wan@google.com (Zhanyong Wan)\n\n// Google Test - The Google C++ Testing Framework\n//\n// This file implements a universal value printer that can print a\n// value of any type T:\n//\n//   void ::testing::internal::UniversalPrinter<T>::Print(value, ostream_ptr);\n//\n// It uses the << operator when possible, and prints the bytes in the\n// object otherwise.  A user can override its behavior for a class\n// type Foo by defining either operator<<(::std::ostream&, const Foo&)\n// or void PrintTo(const Foo&, ::std::ostream*) in the namespace that\n// defines Foo.\n\n#include <ctype.h>\n#include <stdio.h>\n#include <ostream>  // NOLINT\n#include <string>\n\nnamespace testing {\n\nnamespace {\n\nusing ::std::ostream;\n\n// Prints a segment of bytes in the given object.\nvoid PrintByteSegmentInObjectTo(const unsigned char* obj_bytes, size_t start,\n                                size_t count, ostream* os) {\n  char text[5] = \"\";\n  for (size_t i = 0; i != count; i++) {\n    const size_t j = start + i;\n    if (i != 0) {\n      // Organizes the bytes into groups of 2 for easy parsing by\n      // human.\n      if ((j % 2) == 0)\n        *os << ' ';\n      else\n        *os << '-';\n    }\n    GTEST_SNPRINTF_(text, sizeof(text), \"%02X\", obj_bytes[j]);\n    *os << text;\n  }\n}\n\n// Prints the bytes in the given value to the given ostream.\nvoid PrintBytesInObjectToImpl(const unsigned char* obj_bytes, size_t count,\n                              ostream* os) {\n  // Tells the user how big the object is.\n  *os << count << \"-byte object <\";\n\n  const size_t kThreshold = 132;\n  const size_t kChunkSize = 64;\n  // If the object size is bigger than kThreshold, we'll have to omit\n  // some details by printing only the first and the last kChunkSize\n  // bytes.\n  // TODO(wan): let the user control the threshold using a flag.\n  if (count < kThreshold) {\n    PrintByteSegmentInObjectTo(obj_bytes, 0, count, os);\n  } else {\n    PrintByteSegmentInObjectTo(obj_bytes, 0, kChunkSize, os);\n    *os << \" ... \";\n    // Rounds up to 2-byte boundary.\n    const size_t resume_pos = (count - kChunkSize + 1)/2*2;\n    PrintByteSegmentInObjectTo(obj_bytes, resume_pos, count - resume_pos, os);\n  }\n  *os << \">\";\n}\n\n}  // namespace\n\nnamespace internal2 {\n\n// Delegates to PrintBytesInObjectToImpl() to print the bytes in the\n// given object.  The delegation simplifies the implementation, which\n// uses the << operator and thus is easier done outside of the\n// ::testing::internal namespace, which contains a << operator that\n// sometimes conflicts with the one in STL.\nvoid PrintBytesInObjectTo(const unsigned char* obj_bytes, size_t count,\n                          ostream* os) {\n  PrintBytesInObjectToImpl(obj_bytes, count, os);\n}\n\n}  // namespace internal2\n\nnamespace internal {\n\n// Depending on the value of a char (or wchar_t), we print it in one\n// of three formats:\n//   - as is if it's a printable ASCII (e.g. 'a', '2', ' '),\n//   - as a hexidecimal escape sequence (e.g. '\\x7F'), or\n//   - as a special escape sequence (e.g. '\\r', '\\n').\nenum CharFormat {\n  kAsIs,\n  kHexEscape,\n  kSpecialEscape\n};\n\n// Returns true if c is a printable ASCII character.  We test the\n// value of c directly instead of calling isprint(), which is buggy on\n// Windows Mobile.\ninline bool IsPrintableAscii(wchar_t c) {\n  return 0x20 <= c && c <= 0x7E;\n}\n\n// Prints a wide or narrow char c as a character literal without the\n// quotes, escaping it when necessary; returns how c was formatted.\n// The template argument UnsignedChar is the unsigned version of Char,\n// which is the type of c.\ntemplate <typename UnsignedChar, typename Char>\nstatic CharFormat PrintAsCharLiteralTo(Char c, ostream* os) {\n  switch (static_cast<wchar_t>(c)) {\n    case L'\\0':\n      *os << \"\\\\0\";\n      break;\n    case L'\\'':\n      *os << \"\\\\'\";\n      break;\n    case L'\\\\':\n      *os << \"\\\\\\\\\";\n      break;\n    case L'\\a':\n      *os << \"\\\\a\";\n      break;\n    case L'\\b':\n      *os << \"\\\\b\";\n      break;\n    case L'\\f':\n      *os << \"\\\\f\";\n      break;\n    case L'\\n':\n      *os << \"\\\\n\";\n      break;\n    case L'\\r':\n      *os << \"\\\\r\";\n      break;\n    case L'\\t':\n      *os << \"\\\\t\";\n      break;\n    case L'\\v':\n      *os << \"\\\\v\";\n      break;\n    default:\n      if (IsPrintableAscii(c)) {\n        *os << static_cast<char>(c);\n        return kAsIs;\n      } else {\n        *os << \"\\\\x\" + String::FormatHexInt(static_cast<UnsignedChar>(c));\n        return kHexEscape;\n      }\n  }\n  return kSpecialEscape;\n}\n\n// Prints a wchar_t c as if it's part of a string literal, escaping it when\n// necessary; returns how c was formatted.\nstatic CharFormat PrintAsStringLiteralTo(wchar_t c, ostream* os) {\n  switch (c) {\n    case L'\\'':\n      *os << \"'\";\n      return kAsIs;\n    case L'\"':\n      *os << \"\\\\\\\"\";\n      return kSpecialEscape;\n    default:\n      return PrintAsCharLiteralTo<wchar_t>(c, os);\n  }\n}\n\n// Prints a char c as if it's part of a string literal, escaping it when\n// necessary; returns how c was formatted.\nstatic CharFormat PrintAsStringLiteralTo(char c, ostream* os) {\n  return PrintAsStringLiteralTo(\n      static_cast<wchar_t>(static_cast<unsigned char>(c)), os);\n}\n\n// Prints a wide or narrow character c and its code.  '\\0' is printed\n// as \"'\\\\0'\", other unprintable characters are also properly escaped\n// using the standard C++ escape sequence.  The template argument\n// UnsignedChar is the unsigned version of Char, which is the type of c.\ntemplate <typename UnsignedChar, typename Char>\nvoid PrintCharAndCodeTo(Char c, ostream* os) {\n  // First, print c as a literal in the most readable form we can find.\n  *os << ((sizeof(c) > 1) ? \"L'\" : \"'\");\n  const CharFormat format = PrintAsCharLiteralTo<UnsignedChar>(c, os);\n  *os << \"'\";\n\n  // To aid user debugging, we also print c's code in decimal, unless\n  // it's 0 (in which case c was printed as '\\\\0', making the code\n  // obvious).\n  if (c == 0)\n    return;\n  *os << \" (\" << static_cast<int>(c);\n\n  // For more convenience, we print c's code again in hexidecimal,\n  // unless c was already printed in the form '\\x##' or the code is in\n  // [1, 9].\n  if (format == kHexEscape || (1 <= c && c <= 9)) {\n    // Do nothing.\n  } else {\n    *os << \", 0x\" << String::FormatHexInt(static_cast<UnsignedChar>(c));\n  }\n  *os << \")\";\n}\n\nvoid PrintTo(unsigned char c, ::std::ostream* os) {\n  PrintCharAndCodeTo<unsigned char>(c, os);\n}\nvoid PrintTo(signed char c, ::std::ostream* os) {\n  PrintCharAndCodeTo<unsigned char>(c, os);\n}\n\n// Prints a wchar_t as a symbol if it is printable or as its internal\n// code otherwise and also as its code.  L'\\0' is printed as \"L'\\\\0'\".\nvoid PrintTo(wchar_t wc, ostream* os) {\n  PrintCharAndCodeTo<wchar_t>(wc, os);\n}\n\n// Prints the given array of characters to the ostream.  CharType must be either\n// char or wchar_t.\n// The array starts at begin, the length is len, it may include '\\0' characters\n// and may not be NUL-terminated.\ntemplate <typename CharType>\nstatic void PrintCharsAsStringTo(\n    const CharType* begin, size_t len, ostream* os) {\n  const char* const kQuoteBegin = sizeof(CharType) == 1 ? \"\\\"\" : \"L\\\"\";\n  *os << kQuoteBegin;\n  bool is_previous_hex = false;\n  for (size_t index = 0; index < len; ++index) {\n    const CharType cur = begin[index];\n    if (is_previous_hex && IsXDigit(cur)) {\n      // Previous character is of '\\x..' form and this character can be\n      // interpreted as another hexadecimal digit in its number. Break string to\n      // disambiguate.\n      *os << \"\\\" \" << kQuoteBegin;\n    }\n    is_previous_hex = PrintAsStringLiteralTo(cur, os) == kHexEscape;\n  }\n  *os << \"\\\"\";\n}\n\n// Prints a (const) char/wchar_t array of 'len' elements, starting at address\n// 'begin'.  CharType must be either char or wchar_t.\ntemplate <typename CharType>\nstatic void UniversalPrintCharArray(\n    const CharType* begin, size_t len, ostream* os) {\n  // The code\n  //   const char kFoo[] = \"foo\";\n  // generates an array of 4, not 3, elements, with the last one being '\\0'.\n  //\n  // Therefore when printing a char array, we don't print the last element if\n  // it's '\\0', such that the output matches the string literal as it's\n  // written in the source code.\n  if (len > 0 && begin[len - 1] == '\\0') {\n    PrintCharsAsStringTo(begin, len - 1, os);\n    return;\n  }\n\n  // If, however, the last element in the array is not '\\0', e.g.\n  //    const char kFoo[] = { 'f', 'o', 'o' };\n  // we must print the entire array.  We also print a message to indicate\n  // that the array is not NUL-terminated.\n  PrintCharsAsStringTo(begin, len, os);\n  *os << \" (no terminating NUL)\";\n}\n\n// Prints a (const) char array of 'len' elements, starting at address 'begin'.\nvoid UniversalPrintArray(const char* begin, size_t len, ostream* os) {\n  UniversalPrintCharArray(begin, len, os);\n}\n\n// Prints a (const) wchar_t array of 'len' elements, starting at address\n// 'begin'.\nvoid UniversalPrintArray(const wchar_t* begin, size_t len, ostream* os) {\n  UniversalPrintCharArray(begin, len, os);\n}\n\n// Prints the given C string to the ostream.\nvoid PrintTo(const char* s, ostream* os) {\n  if (s == nullptr) {\n    *os << \"NULL\";\n  } else {\n    *os << ImplicitCast_<const void*>(s) << \" pointing to \";\n    PrintCharsAsStringTo(s, strlen(s), os);\n  }\n}\n\n// MSVC compiler can be configured to define whar_t as a typedef\n// of unsigned short. Defining an overload for const wchar_t* in that case\n// would cause pointers to unsigned shorts be printed as wide strings,\n// possibly accessing more memory than intended and causing invalid\n// memory accesses. MSVC defines _NATIVE_WCHAR_T_DEFINED symbol when\n// wchar_t is implemented as a native type.\n#if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED)\n// Prints the given wide C string to the ostream.\nvoid PrintTo(const wchar_t* s, ostream* os) {\n  if (s == nullptr) {\n    *os << \"NULL\";\n  } else {\n    *os << ImplicitCast_<const void*>(s) << \" pointing to \";\n    PrintCharsAsStringTo(s, wcslen(s), os);\n  }\n}\n#endif  // wchar_t is native\n\n// Prints a ::string object.\n#if GTEST_HAS_GLOBAL_STRING\nvoid PrintStringTo(const ::string& s, ostream* os) {\n  PrintCharsAsStringTo(s.data(), s.size(), os);\n}\n#endif  // GTEST_HAS_GLOBAL_STRING\n\nvoid PrintStringTo(const ::std::string& s, ostream* os) {\n  PrintCharsAsStringTo(s.data(), s.size(), os);\n}\n\n// Prints a ::wstring object.\n#if GTEST_HAS_GLOBAL_WSTRING\nvoid PrintWideStringTo(const ::wstring& s, ostream* os) {\n  PrintCharsAsStringTo(s.data(), s.size(), os);\n}\n#endif  // GTEST_HAS_GLOBAL_WSTRING\n\n#if GTEST_HAS_STD_WSTRING\nvoid PrintWideStringTo(const ::std::wstring& s, ostream* os) {\n  PrintCharsAsStringTo(s.data(), s.size(), os);\n}\n#endif  // GTEST_HAS_STD_WSTRING\n\n}  // namespace internal\n\n}  // namespace testing\n// Copyright 2008, Google Inc.\n// All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n// Author: mheule@google.com (Markus Heule)\n//\n// The Google C++ Testing Framework (Google Test)\n\n\n// Indicates that this translation unit is part of Google Test's\n// implementation.  It must come before gtest-internal-inl.h is\n// included, or there will be a compiler error.  This trick is to\n// prevent a user from accidentally including gtest-internal-inl.h in\n// his code.\n#define GTEST_IMPLEMENTATION_ 1\n#undef GTEST_IMPLEMENTATION_\n\nnamespace testing {\n\nusing internal::GetUnitTestImpl;\n\n// Gets the summary of the failure message by omitting the stack trace\n// in it.\nstd::string TestPartResult::ExtractSummary(const char* message) {\n  const char* const stack_trace = strstr(message, internal::kStackTraceMarker);\n  return stack_trace == nullptr ? message :\n      std::string(message, stack_trace);\n}\n\n// Prints a TestPartResult object.\nstd::ostream& operator<<(std::ostream& os, const TestPartResult& result) {\n  return os\n      << result.file_name() << \":\" << result.line_number() << \": \"\n      << (result.type() == TestPartResult::kSuccess ? \"Success\" :\n          result.type() == TestPartResult::kFatalFailure ? \"Fatal failure\" :\n          \"Non-fatal failure\") << \":\\n\"\n      << result.message() << std::endl;\n}\n\n// Appends a TestPartResult to the array.\nvoid TestPartResultArray::Append(const TestPartResult& result) {\n  array_.push_back(result);\n}\n\n// Returns the TestPartResult at the given index (0-based).\nconst TestPartResult& TestPartResultArray::GetTestPartResult(int index) const {\n  if (index < 0 || index >= size()) {\n    std::cout << std::endl;\n    std::cout << \"Invalid index (\" << index << \") into TestPartResultArray.\" << std::endl;\n    internal::posix::Abort();\n  }\n\n  return array_[index];\n}\n\n// Returns the number of TestPartResult objects in the array.\nint TestPartResultArray::size() const {\n  return static_cast<int>(array_.size());\n}\n\nnamespace internal {\n\nHasNewFatalFailureHelper::HasNewFatalFailureHelper()\n    : has_new_fatal_failure_(false),\n      original_reporter_(GetUnitTestImpl()->\n                         GetTestPartResultReporterForCurrentThread()) {\n  GetUnitTestImpl()->SetTestPartResultReporterForCurrentThread(this);\n}\n\nHasNewFatalFailureHelper::~HasNewFatalFailureHelper() {\n  GetUnitTestImpl()->SetTestPartResultReporterForCurrentThread(\n      original_reporter_);\n}\n\nvoid HasNewFatalFailureHelper::ReportTestPartResult(\n    const TestPartResult& result) {\n  if (result.fatally_failed())\n    has_new_fatal_failure_ = true;\n  original_reporter_->ReportTestPartResult(result);\n}\n\n}  // namespace internal\n\n}  // namespace testing\n// Copyright 2008 Google Inc.\n// All Rights Reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n// Author: wan@google.com (Zhanyong Wan)\n\n\nnamespace testing {\nnamespace internal {\n\n#if GTEST_HAS_TYPED_TEST_P\n\n// Skips to the first non-space char in str. Returns an empty string if str\n// contains only whitespace characters.\nstatic const char* SkipSpaces(const char* str) {\n  while (IsSpace(*str))\n    str++;\n  return str;\n}\n\n// Verifies that registered_tests match the test names in\n// defined_test_names_; returns registered_tests if successful, or\n// aborts the program otherwise.\nconst char* TypedTestCasePState::VerifyRegisteredTestNames(\n    const char* file, int line, const char* registered_tests) {\n  typedef ::std::set<const char*>::const_iterator DefinedTestIter;\n  registered_ = true;\n\n  // Skip initial whitespace in registered_tests since some\n  // preprocessors prefix stringizied literals with whitespace.\n  registered_tests = SkipSpaces(registered_tests);\n\n  Message errors;\n  ::std::set<std::string> tests;\n  for (const char* names = registered_tests; names != nullptr;\n       names = SkipComma(names)) {\n    const std::string name = GetPrefixUntilComma(names);\n    if (tests.count(name) != 0) {\n      errors << \"Test \" << name << \" is listed more than once.\\n\";\n      continue;\n    }\n\n    bool found = false;\n    for (DefinedTestIter it = defined_test_names_.begin();\n         it != defined_test_names_.end();\n         ++it) {\n      if (name == *it) {\n        found = true;\n        break;\n      }\n    }\n\n    if (found) {\n      tests.insert(name);\n    } else {\n      errors << \"No test named \" << name\n             << \" can be found in this test case.\\n\";\n    }\n  }\n\n  for (DefinedTestIter it = defined_test_names_.begin();\n       it != defined_test_names_.end();\n       ++it) {\n    if (tests.count(*it) == 0) {\n      errors << \"You forgot to list test \" << *it << \".\\n\";\n    }\n  }\n\n  const std::string& errors_str = errors.GetString();\n  if (errors_str != \"\") {\n    std::cerr << FormatFileLocation(file, line) << \" \" << errors_str;\n    std::cerr.flush();\n    posix::Abort();\n  }\n\n  return registered_tests;\n}\n\n#endif  // GTEST_HAS_TYPED_TEST_P\n\n}  // namespace internal\n}  // namespace testing\n\n/*\n * date.cpp\n * ========\n * This file provides the implementation of the bodies of the member functions,\n * constructor, and overloaded operators for the Date class declared in date.h.\n * @version 2015/04/18\n * - fixed year-wrap bug in nextDay\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"date.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#undef INTERNAL_INCLUDE\n\nconst int Date::DAYS_PER_WEEK = 7;\nconst int Date::MONTHS_PER_YEAR = 12;\n\nint Date::parseMonth(const std::string& month) {\n    std::string monthl = toLowerCase(month);\n    if (monthl == \"jan\" || monthl == \"january\") { return JANUARY; }\n    if (monthl == \"feb\" || monthl == \"february\") { return FEBRUARY; }\n    if (monthl == \"mar\" || monthl == \"march\") { return MARCH; }\n    if (monthl == \"apr\" || monthl == \"april\") { return APRIL; }\n    if (monthl == \"may\") { return MAY; }\n    if (monthl == \"jun\" || monthl == \"june\") { return JUNE; }\n    if (monthl == \"jul\" || monthl == \"july\") { return JULY; }\n    if (monthl == \"aug\" || monthl == \"august\") { return AUGUST; }\n    if (monthl == \"sep\" || monthl == \"september\") { return SEPTEMBER; }\n    if (monthl == \"oct\" || monthl == \"october\") { return OCTOBER; }\n    if (monthl == \"nov\" || monthl == \"november\") { return NOVEMBER; }\n    if (monthl == \"dec\" || monthl == \"december\") { return DECEMBER; }\n    return -1;\n}\n\nint Date::parseDay(const std::string& day) {\n    std::string dayl = toLowerCase(day);\n    if (dayl == \"sun\" || dayl == \"sunday\") { return SUNDAY; }\n    if (dayl == \"mon\" || dayl == \"monday\") { return MONDAY; }\n    if (dayl == \"tue\" || dayl == \"tues\" || dayl == \"tuesday\") { return TUESDAY; }\n    if (dayl == \"wed\" || dayl == \"weds\" || dayl == \"wednesday\") { return WEDNESDAY; }\n    if (dayl == \"thu\" || dayl == \"thurs\" || dayl == \"thursday\") { return THURSDAY; }\n    if (dayl == \"fri\" || dayl == \"friday\") { return FRIDAY; }\n    if (dayl == \"sat\" || dayl == \"saturday\") { return SATURDAY; }\n    return -1;\n}\n\n/*\n * This constructor initializes the state of newly created Date objects.\n * Precondition: year >= 0\n * Precondition: 1 <= month <= 12\n * Precondition: 1 <= day <= number of days in that month that year\n * Throws an int exception if bad year/month/day is passed.\n */\nDate::Date(int y, int m, int d) {\n    year = y;\n    month = m;\n    day = d;\n    \n    // crash the client program if they passed invalid parameters\n    if (m < JANUARY || m > DECEMBER) {\n        throw m;\n    }\n    if (d < 1 || d > daysInMonth()) {\n        throw d;\n    }\n}\n\n/*\n * Returns the year stored in this Date object.\n */\nint Date::getYear() const {\n    return year;\n}\n\n/*\n * Returns the month stored in this Date object.\n */\nint Date::getMonth() const {\n    return month;\n}\n\n/*\n * Returns the day stored in this Date object.\n */\nint Date::getDay() const {\n    return day;\n}\n\nint Date::getDayOfWeek() const {\n    // Jan 1, 2014 was a Wednesday (3)\n    Date temp(2014, JANUARY, 1);\n    int dayIndex = WEDNESDAY;\n    if (*this < temp) {\n        // Jan 1, 1753 was a Monday\n        temp = Date(1753, JANUARY, 1);\n        dayIndex = MONDAY;\n    }\n    while (temp < *this) {\n        ++temp;\n        dayIndex = (dayIndex + 1) % DAYS_PER_WEEK;\n    }\n    return dayIndex;\n}\n\nstd::string Date::getDayOfWeekName() const {\n    switch (getDayOfWeek()) {\n    case SUNDAY: return \"Sunday\";\n    case MONDAY: return \"Monday\";\n    case TUESDAY: return \"Tuesday\";\n    case WEDNESDAY: return \"Wednesday\";\n    case THURSDAY: return \"Thursday\";\n    case FRIDAY: return \"Friday\";\n    case SATURDAY: return \"Saturday\";\n    default: return \"?\";\n    }\n}\n\nstd::string Date::getMonthName() const {\n    switch (month) {\n    case JANUARY: return \"January\";\n    case FEBRUARY: return \"February\";\n    case MARCH: return \"March\";\n    case APRIL: return \"April\";\n    case MAY: return \"May\";\n    case JUNE: return \"June\";\n    case JULY: return \"July\";\n    case AUGUST: return \"August\";\n    case SEPTEMBER: return \"September\";\n    case OCTOBER: return \"October\";\n    case NOVEMBER: return \"November\";\n    case DECEMBER: return \"December\";\n    default: return \"?\";\n    }\n}\n\n\n/*\n * Returns the number of days in this Date's month.\n */\nint Date::daysInMonth() const {\n    if (month == SEPTEMBER || month == APRIL || month == JUNE || month == NOVEMBER) {\n        return 30;\n    } else if (month == FEBRUARY) {\n        return isLeapYear() ? 29 : 28;\n    } else {\n        return 31;\n    }\n}\n\nint Date::daysInYear() const {\n    return isLeapYear() ? 366 : 365;\n}\n\nbool Date::isLeapYear() const {\n    return year % 400 == 0 || (year % 4 == 0 && year % 100 != 0);\n}\n\n/*\n * Advances this Date object to the following day, wrapping to the\n * next month/year if necessary.\n */\nvoid Date::nextDay() {\n    day++;                       // e.g. 9/19 -> 9/20\n    if (day > daysInMonth()) {\n        day = 1;                 // wrap to next month, e.g. 10/31 -> 11/1\n        month++;\n        if (month > DECEMBER) {\n            month = JANUARY;     // wrap to next year, e.g. 12/31 -> 1/1\n            year++;\n        }\n    }\n}\n\n/*\n * Advances this Date object to the following day, wrapping to the\n * next month/year if necessary.\n */\nvoid Date::previousDay() {\n    day--;\n    if (day < 1) {\n        month--;\n        if (month < JANUARY) {\n            month = DECEMBER;\n            year--;\n            if (year < 0) {\n                throw year;\n            }\n        }\n        day = daysInMonth();\n    }\n}\n\n/*\n * Allows comparing Date objects to see if one comes before the other.\n */\nbool operator <(const Date& d1, const Date& d2) {\n    return (d1.getYear() < d2.getYear())\n            || (d1.getYear() == d2.getYear() && d1.getMonth() < d2.getMonth())\n            || (d1.getYear() == d2.getYear() && d1.getMonth() == d2.getMonth() && d1.getDay() < d2.getDay());\n}\n\n/*\n * Allows comparing Date objects to see if one comes after the other.\n */\nbool operator >(const Date& d1, const Date& d2) {\n    return d2 < d1;\n}\n\n/*\n * Allows comparing Date objects to see if one comes after the other.\n */\nbool operator <=(const Date& d1, const Date& d2) {\n    return d1 < d2 || d1 == d2;\n}\n\n/*\n * Allows comparing Date objects to see if one comes after the other.\n */\nbool operator >=(const Date& d1, const Date& d2) {\n    return d1 > d2 || d1 == d2;\n}\n\n/*\n * Allows comparing Date objects to see if one comes after the other.\n */\nbool operator ==(const Date& d1, const Date& d2) {\n    return d1.getYear() == d2.getYear()\n            && d1.getMonth() == d2.getMonth()\n            && d1.getDay() == d2.getDay();\n}\n\n/*\n * Allows comparing Date objects to see if one comes after the other.\n */\nbool operator !=(const Date& d1, const Date& d2) {\n    return !(d1 == d2);\n}\n\n/*\n * Allows Date objects to be printed to cout and other streams using <<.\n */\nstd::ostream& operator <<(std::ostream& out, const Date& d) {\n    out << d.getYear() << \"/\" << d.getMonth() << \"/\" << d.getDay();\n    return out;\n}\n\nstd::istream& operator >>(std::istream& /*out*/, Date& /*d*/) {\n    throw \"unsupported for now\";\n}\n\nDate& operator++(Date& d) {\n    d.nextDay();\n    return d;\n}\n\nDate operator++(const Date& d, int) {\n    Date copy = d;\n    copy.nextDay();\n    return copy;\n}\n\nDate& operator--(Date& d) {\n    d.previousDay();\n    return d;\n}\n\nDate operator--(const Date& d, int) {\n    Date copy = d;\n    copy.previousDay();\n    return copy;\n}\n\n/*\n * File: consoleautograder.cpp\n * ---------------------------\n * @version 2018/10/03\n * - initial version, refactored from autograder.h/cpp\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"consoleautograder.h\"\n#include <cstdio>\n#define INTERNAL_INCLUDE 1\n#include \"consoletext.h\"\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"exceptions.h\"\n#define INTERNAL_INCLUDE 1\n#include \"filelib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gconsolewindow.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gwindow.h\"\n#define INTERNAL_INCLUDE 1\n#include \"map.h\"\n#define INTERNAL_INCLUDE 1\n#include \"simpio.h\"\n#define INTERNAL_INCLUDE 1\n#include \"private/static.h\"\n#define INTERNAL_INCLUDE 1\n#include \"date.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gtest-marty.h\"\n#define INTERNAL_INCLUDE 1\n#include \"ioutils.h\"\n#define INTERNAL_INCLUDE 1\n#include \"qtgui.h\"\n#define INTERNAL_INCLUDE 1\n#include \"stringutils.h\"\n#define INTERNAL_INCLUDE 1\n#include \"stylecheck.h\"\n#define INTERNAL_INCLUDE 1\n#include \"testresultprinter.h\"\n#undef INTERNAL_INCLUDE\n\n// to be written by TA/instructor for each assignment\nextern void autograderMain();\n\n// student's main function\nextern int main();\n\nnamespace stanfordcpplib {\nnamespace autograder {\n\nConsoleAutograder::ConsoleAutograder()\n        : Autograder() {\n    // TODO\n}\n\nConsoleAutograder::~ConsoleAutograder() {\n    // TODO\n}\n\nvoid ConsoleAutograder::addCategory(const std::string& /*categoryName*/, const std::string& /*categoryDescription*/) {\n    // empty\n}\n\nvoid ConsoleAutograder::addTest(const std::string& /*testName*/, const std::string& /*categoryName*/) {\n    // empty\n}\n\nbool ConsoleAutograder::autograderYesOrNo(std::string prompt, std::string reprompt, std::string defaultValue) {\n    return getYesOrNo(prompt, reprompt, defaultValue);\n}\n\nbool ConsoleAutograder::containsCategory(const std::string& /*categoryName*/) {\n    // empty\n    return false;\n}\n\nvoid ConsoleAutograder::displayDiffs(const std::string& expectedOutput,\n                                     const std::string& studentOutput,\n                                     const std::string& diffs,\n                                     const std::string& diffFile,\n                                     int truncateHeight) {\n    std::cout << \"FAIL!\" << std::endl;\n    int expectedHeight = stringutils::height(expectedOutput);\n    int studentHeight  = stringutils::height(studentOutput);\n    if (expectedHeight != studentHeight) {\n        std::cout << \"  Expected \" << expectedHeight << \" lines,\"\n                  << \"found \" << studentHeight << \" lines.\" << std::endl;\n    }\n    std::cout << \"      DIFFS:\";\n    if (!diffFile.empty()) {\n        std::cout << \" (see complete output in \" << diffFile << \" in build folder)\";\n    }\n    std::cout << std::endl;\n    std::string diffsToShow = diffs;\n    if (truncateHeight > 0) {\n        diffsToShow = stringutils::trimToHeight(diffsToShow, truncateHeight);\n    }\n    std::cout << stringutils::indent(diffsToShow, 8) << std::endl;\n}\n\nbool ConsoleAutograder::isGraphicalUI() const {\n    return false;\n}\n\nint ConsoleAutograder::runAllTestCases() {\n    static bool gtestInitialized = false;   // static OK\n\n    // set up a few initial settings and lock-down the program\n    ioutils::setConsoleEchoUserInput(true);\n    setConsoleClearEnabled(false);\n    GWindow::_autograder_setPauseEnabled(false);\n    GWindow::_autograder_setExitGraphicsEnabled(false);\n    setConsoleSettingsLocked(true);\n\n    if (!gtestInitialized) {\n        gtestInitialized = true;\n        int argc = QtGui::instance()->getArgc();\n        char** argv = QtGui::instance()->getArgv();\n        ::testing::InitGoogleTest(&argc, argv);\n\n        // set up 'test result printer' to better format test results and errors\n        ::testing::TestEventListeners& listeners =\n            ::testing::UnitTest::GetInstance()->listeners();\n        delete listeners.Release(listeners.default_result_printer());\n        MartyTestResultPrinter* printer = new MartyTestResultPrinter();\n        if (_flags.testNameWidth > 0) {\n            printer->setTestNameWidth(_flags.testNameWidth);\n        }\n        if (_flags.failsToPrintPerTest > 0) {\n            printer->setFailsToPrintPerTest(_flags.failsToPrintPerTest);\n        }\n        listeners.Append(printer);\n    }\n\n    int result = RUN_ALL_TESTS();   // run Google Test framework now\n\n    // un-lock-down\n    setConsoleSettingsLocked(false);\n    ioutils::setConsoleEchoUserInput(false);\n    setConsoleClearEnabled(true);\n    GWindow::_autograder_setPauseEnabled(true);\n    GWindow::_autograder_setExitGraphicsEnabled(true);\n\n    if (!_flags.graphicalUI) {\n        std::cout << AUTOGRADER_OUTPUT_SEPARATOR << std::endl;\n        getLine(\"Press Enter to continue . . .\");\n    }\n\n    return result;\n}\n\nvoid ConsoleAutograder::runStyleChecker() {\n    getConsoleWindow()->toFront();\n    int styleCheckCount = 0;\n    for (std::string filename : _flags.styleCheckFiles) {\n        stylecheck::styleCheck(\n                    filename,\n                    _flags.styleCheckFileMap[filename],\n                     /* printWarning */ styleCheckCount == 0);\n        std::cout << AUTOGRADER_OUTPUT_SEPARATOR << std::endl;\n        styleCheckCount++;\n    }\n}\n\nvoid ConsoleAutograder::runTest(stanfordcpplib::autograder::AutograderTest* /*test*/) {\n    // TODO\n    resetStandardInputStreams();\n    error(\"oops! not implemented\");\n}\n\nvoid ConsoleAutograder::setFailDetails(AutograderTest& test, const autograder::UnitTestDetails& deets) {\n    MartyTestResultPrinter::setFailDetails(test, deets);\n}\n\nvoid ConsoleAutograder::setFailDetails(const autograder::UnitTestDetails& deets) {\n    MartyTestResultPrinter::setFailDetails(deets);\n}\n\nvoid ConsoleAutograder::setTestCounts(int /*passCount*/, int /*testCount*/, bool /*isStyleCheck*/) {\n//    stanfordcpplib::autograder::AutograderGui::instance(/*isStyleCheck*/)->setTestCounts(\n//                passCount, testCount);\n    // TODO\n}\n\nvoid ConsoleAutograder::setTestDetails(const std::string& /*testFullName*/, UnitTestDetails /*deets*/) {\n    // empty\n}\n\nbool ConsoleAutograder::setTestResult(const std::string& /*testFullName*/, TestResult /*result*/) {\n    // empty\n    return true;\n}\n\nbool ConsoleAutograder::setTestRuntime(const std::string& /*testFullName*/, long /*ms*/) {\n    // empty\n    return true;\n}\n\n/*\n * student_submission_time: 13/Oct/2014 10:31:15\n * assignment_due_time: 13/Oct/2014 23:59:00\n * calendar_days_late: 0\n */\nvoid ConsoleAutograder::showLateDays(const std::string& filename) {\n    Map<std::string, std::string> lineMap;\n    std::string text;\n    if (fileExists(filename)) {\n        text = readEntireFile(filename);\n    } else {\n        text = std::string(\"student_submission_time: unknown\\n\")\n                + \"assignment_due_time: unknown\\n\"\n                + \"calendar_days_late: unknown\\n\"\n                + \"details: \" + filename + \" not found!\";\n    }\n    \n    std::cout << AUTOGRADER_OUTPUT_SEPARATOR << std::endl;\n    std::cout << \"Contents of \" << filename << \":\" << std::endl;\n    std::cout << text;\n    if (!endsWith(text, '\\n')) {\n        std::cout << std::endl;\n    }\n    std::cout << AUTOGRADER_OUTPUT_SEPARATOR << std::endl;\n}\n\nvoid ConsoleAutograder::showOutput(const std::string& output, bool /*showIfGraphical*/, bool showIfConsole) {\n    if (showIfConsole) {\n        std::cout << output << std::endl;\n    }\n}\n\nvoid ConsoleAutograder::showStudentTextFile(const std::string& filename, int maxWidth, int maxHeight) {\n    std::string myText;\n    if (fileExists(filename)) {\n        myText = readEntireFile(filename);\n    } else {\n        myText = \"file not found: \" + filename;\n    }\n    int height = stringutils::height(myText);\n    if (maxWidth > 0) {\n        myText = stringutils::trimToWidth(myText, maxWidth);\n    }\n    if (maxWidth > 0) {\n        myText = stringutils::trimToHeight(myText, maxHeight);\n    }\n    if (!endsWith(myText, \"\\n\")) {\n        myText += \"\\n\";\n    }\n    // these begin/end markers are kept to the same width\n    // as AUTOGRADER_OUTPUT_SEPARATOR from autograder.h\n    std::cout << \"Here are the contents of the student's \" << filename << \" file\"\n              << \" (\" << height << \" lines):\" << std::endl\n              << \"============================== BEGIN ===============================\" << std::endl\n              << myText\n              << \"=============================== END ================================\" << std::endl;\n}\n\nint ConsoleAutograder::mainFunc() {\n    std::cout << _flags.assignmentName << \" Autograder\" << std::endl\n              << AUTOGRADER_OUTPUT_SEPARATOR << std::endl;\n    \n    std::string autogradeYesNoMessage = _flags.startMessage;\n    if (!autogradeYesNoMessage.empty()) {\n        autogradeYesNoMessage += \"\\n\\n\";\n    }\n    autogradeYesNoMessage += \"Attempt auto-grading (Y/n)? \";\n    \n    int result = 0;\n    bool autograde = autograderYesOrNo(autogradeYesNoMessage, \"\", \"y\");\n    if (autograde) {\n        if (_flags.callbackStart) {\n            _flags.callbackStart();\n        }\n        \n        // TODO\n        // result = mainRunAutograderTestCases();\n        \n        // a hook to allow per-assignment code to run at the start\n        if (_flags.callbackEnd) {\n            _flags.callbackEnd();\n        }\n    }\n    \n    // manual testing\n    bool manualGrade = autograderYesOrNo(\"Run program for manual testing (y/N)? \", \"\", \"n\");\n    if (manualGrade) {\n        GWindow::_autograder_setExitGraphicsEnabled(false);\n        while (manualGrade) {\n            main();   // run student's main function\n            std::cout << AUTOGRADER_OUTPUT_SEPARATOR << std::endl;\n            manualGrade = autograderYesOrNo(\"Run program again (y/N)? \", \"\", \"n\");\n        }\n        GWindow::_autograder_setExitGraphicsEnabled(true);\n    }\n    std::cout << AUTOGRADER_OUTPUT_SEPARATOR << std::endl;\n    \n    // run any custom callbacks that the assignment's autograder added\n    for (int i = 0; i < _flags.callbackButtons.size(); i++) {\n        std::string buttonText = _flags.callbackButtons[i].text;\n        buttonText = stringReplace(buttonText, \"\\n\", \" \");   // GUI often uses multi-line button text strings; strip\n        if (autograderYesOrNo(buttonText + \" (Y/n)? \", \"\", \"y\")) {\n            _flags.callbackButtons[i].func();\n        }\n    }\n    \n    // run Style Checker to point out common possible style issues\n    if (!_flags.styleCheckFiles.isEmpty()) {\n        if (autograderYesOrNo(\"Run style checker (Y/n)? \", \"\", \"y\")) {\n            // TODO\n            // mainRunStyleChecker();\n        }\n    }\n    \n    // display turnin time information to decide late days used\n    if (_flags.showLateDays) {\n        showLateDays();\n    }\n    \n    std::cout << \"COMPLETE: Autograder terminated successfully. Exiting.\" << std::endl;\n    return result;\n}\n\n} // namespace autograder\n} // namespace stanfordcpplib\n\n/*\n * File: ioutils.cpp\n * ---------------\n * This file contains implementations of functions to help capture, redirect,\n * and feed input to cin/cout/err.\n * See ioutils.h for documentation of each function.\n * \n * @author Marty Stepp\n * @version 2016/10/28\n * - bug fix for output limit static var\n * @version 2016/10/22\n * - removed all static variables (replaced with STATIC_VARIABLE macros)\n * @version 2014/10/14\n * @since 2014/03/01\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"ioutils.h\"\n#include <fstream>\n#include <iostream>\n#include <sstream>\n#define INTERNAL_INCLUDE 1\n#include \"consoletext.h\"\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"private/echoinputstreambuf.h\"\n#define INTERNAL_INCLUDE 1\n#include \"private/limitoutputstreambuf.h\"\n#define INTERNAL_INCLUDE 1\n#include \"private/static.h\"\n#undef INTERNAL_INCLUDE\n\nnamespace ioutils {\nSTATIC_VARIABLE_DECLARE_BLANK(std::stringstream, bufferOut)\nSTATIC_VARIABLE_DECLARE(std::streambuf*, oldOut, nullptr)\nSTATIC_VARIABLE_DECLARE_BLANK(std::stringstream, bufferErr)\nSTATIC_VARIABLE_DECLARE(std::streambuf*, oldErr, nullptr)\nSTATIC_VARIABLE_DECLARE_BLANK(std::stringstream, bufferIn)\nSTATIC_VARIABLE_DECLARE(std::streambuf*, oldIn, nullptr)\nSTATIC_VARIABLE_DECLARE(bool, consoleEchoUserInput, false)\nSTATIC_VARIABLE_DECLARE(int, consoleOutputLimit, 0)\n\n\n\nvoid captureStderrBegin() {\n    STATIC_VARIABLE(bufferErr).str(std::string());\n    std::streambuf* newBuf;\n    int limit = getConsoleOutputLimit();\n    if (limit > 0) {\n        newBuf = new stanfordcpplib::LimitOutputStreambuf(STATIC_VARIABLE(bufferErr).rdbuf(), limit);\n    } else {\n        newBuf = STATIC_VARIABLE(bufferErr).rdbuf();\n    }\n    STATIC_VARIABLE(oldErr) = std::cerr.rdbuf(newBuf);\n}\n\nstd::string captureStderrEnd() {\n    std::cerr.flush();\n    if (STATIC_VARIABLE(oldErr)) {\n        std::cerr.rdbuf(STATIC_VARIABLE(oldErr));\n        STATIC_VARIABLE(oldErr) = nullptr;\n    }\n    return STATIC_VARIABLE(bufferErr).str();\n}\n\nvoid captureStdoutBegin(bool alsoStderr) {\n    STATIC_VARIABLE(bufferOut).str(std::string());\n    std::streambuf* newBuf;\n    int limit = getConsoleOutputLimit();\n    if (limit > 0) {\n        newBuf = new stanfordcpplib::LimitOutputStreambuf(STATIC_VARIABLE(bufferOut).rdbuf(), limit);\n    } else {\n        newBuf = STATIC_VARIABLE(bufferOut).rdbuf();\n    }\n    \n    STATIC_VARIABLE(oldOut) = std::cout.rdbuf(newBuf);\n    if (alsoStderr) {\n        STATIC_VARIABLE(bufferErr).str(std::string());\n        STATIC_VARIABLE(oldErr) = std::cerr.rdbuf(newBuf);\n    }\n}\n\nstd::string captureStdoutEnd() {\n    std::cout.flush();\n    if (STATIC_VARIABLE(oldOut)) {\n        std::cout.rdbuf(STATIC_VARIABLE(oldOut));\n        STATIC_VARIABLE(oldOut) = nullptr;\n    }\n    std::cerr.flush();\n    if (STATIC_VARIABLE(oldErr)) {\n        std::cerr.rdbuf(STATIC_VARIABLE(oldErr));\n        STATIC_VARIABLE(oldErr) = nullptr;\n    }\n    return STATIC_VARIABLE(bufferOut).str();\n}\n\nbool getConsoleEchoUserInput() {\n    return STATIC_VARIABLE(consoleEchoUserInput);\n}\n\nint getConsoleOutputLimit() {\n    return STATIC_VARIABLE(consoleOutputLimit);\n}\n        \nvoid redirectStdinBegin(std::string userInput) {\n    STATIC_VARIABLE(bufferIn).str(std::string());\n    std::streambuf* newBuf;\n    if (getConsoleEchoUserInput()) {\n        newBuf = new stanfordcpplib::EchoInputStreambuf(STATIC_VARIABLE(bufferIn).rdbuf());\n    } else {\n        newBuf = STATIC_VARIABLE(bufferIn).rdbuf();\n    }\n    STATIC_VARIABLE(oldIn) = std::cin.rdbuf(newBuf);\n    redirectStdinFeedInput(userInput);\n}\n\nvoid redirectStdinFeedInput(std::string userInput) {\n    if (!userInput.empty()) {\n        STATIC_VARIABLE(bufferIn) << userInput << std::endl;\n    }\n}\n\nvoid redirectStdinEnd() {\n    if (STATIC_VARIABLE(oldIn)) {\n        std::cin.rdbuf(STATIC_VARIABLE(oldIn));\n        STATIC_VARIABLE(oldIn) = nullptr;\n    }\n}\n\nvoid setConsoleEchoUserInput(bool echo) {\n    STATIC_VARIABLE(consoleEchoUserInput) = echo;\n}\n\nvoid setConsoleOutputLimit(int limit) {\n    STATIC_VARIABLE(consoleOutputLimit) = limit;\n}\n} // namespace ioutils\n\n/*\n * File: assertions.cpp\n * --------------------\n * \n * @author Marty Stepp\n * @version 2018/10/04\n * - initial version (code moved from autograder.cpp)\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"assertions.h\"\n#undef INTERNAL_INCLUDE\n\nvoid assertEqualsImage(const std::string& msg,\n                       GBufferedImage& image1,\n                       GBufferedImage& image2) {\n    bool imagesAreEqual = image1.equals(image2);\n\n    stanfordcpplib::autograder::Autograder* autograder = stanfordcpplib::autograder::Autograder::instance();\n    autograder->setFailDetails(stanfordcpplib::autograder::UnitTestDetails(\n            stanfordcpplib::autograder::UnitTestType::TEST_ASSERT_DIFF_IMAGE,\n            msg,\n            image1.getFilename().empty() ? std::string(\"image 1\") : image1.getFilename(),\n            image2.getFilename().empty() ? std::string(\"image 2\") : image2.getFilename(),\n            \"image\",\n            imagesAreEqual));\n    EXPECT_TRUE(imagesAreEqual);\n}\n\nvoid assertEqualsImage(const std::string& msg,\n                       const std::string& imagefile1,\n                       const std::string& imagefile2) {\n    GBufferedImage image1(imagefile1);\n    GBufferedImage image2(imagefile2);\n    assertEqualsImage(msg, image1, image2);\n}\n\nvoid assertSimilarImage(const std::string& msg,\n                        GBufferedImage& image1,\n                        GBufferedImage& image2,\n                        int diffPixelTolerance,\n                        int xmin, int ymin,\n                        int xmax, int ymax) {\n    int diffPixels;\n    if (xmin >= 0 && ymin >= 0 && xmax >= xmin && ymax >= ymin) {\n        diffPixels = image1.countDiffPixels(image2, xmin, ymin, xmax, ymax);\n    } else {\n        diffPixels = image1.countDiffPixels(image2);\n    }\n    bool imagesAreEqual = diffPixels <= diffPixelTolerance;\n\n    stanfordcpplib::autograder::Autograder* autograder = stanfordcpplib::autograder::Autograder::instance();\n    autograder->setFailDetails(stanfordcpplib::autograder::UnitTestDetails(\n            stanfordcpplib::autograder::UnitTestType::TEST_ASSERT_DIFF_IMAGE,\n            msg,\n            image1.getFilename().empty() ? std::string(\"image 1\") : image1.getFilename(),\n            image2.getFilename().empty() ? std::string(\"image 2\") : image2.getFilename(),\n            \"image\",\n            imagesAreEqual));\n    EXPECT_TRUE(imagesAreEqual);\n}\n\nvoid assertSimilarImage(const std::string& msg,\n                        const std::string& imagefile1,\n                        const std::string& imagefile2,\n                        int diffPixelTolerance,\n                        int xmin, int ymin,\n                        int xmax, int ymax) {\n    GBufferedImage image1(imagefile1);\n    GBufferedImage image2(imagefile2);\n    assertSimilarImage(msg, image1, image2, diffPixelTolerance, xmin, ymin, xmax, ymax);\n}\n\n/*\n * File: stylecheck.cpp\n * --------------------\n * This file contains declarations of code to perform regex-based rough style\n * checking on C++ code.\n * See sylecheck.h for documentation of each function.\n * \n * @author Marty Stepp\n * @version 2019/05/08\n * - changed \"should occur\" strings to remove < char (HTML tag encoding issues)\n * @version 2018/08/27\n * - refactored to use AutograderUnitTestGui cpp class\n * @version 2016/12/01\n * - fixed bugs with full test names to match 12/01 versions\n * @version 2016/10/28\n * - improved category merging on stylecheck when merged with autograder tests\n * @version 2016/10/22\n * - removed all static variables (replaced with STATIC_VARIABLE macros)\n * - changed styleCheck function to return rather than crash on file-not-found\n * - fixed colons on merged style check category prefixes\n * @version 2016/10/08\n * - added setStyleCheckMergedWithUnitTests;\n *   ability to merge style checks with regular unit tests\n * @version 2014/11/15\n * - added warning description to top of window if 'omitOnPass' is turned on\n * @version 2014/10/31\n * - added support for graphical style checker output\n * @since 2014/10/14\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"stylecheck.h\"\n#include <cstring>\n#define INTERNAL_INCLUDE 1\n#include \"autograder.h\"\n#define INTERNAL_INCLUDE 1\n#include \"filelib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"gtest-marty.h\"\n#define INTERNAL_INCLUDE 1\n#include \"rapidxml.h\"\n#define INTERNAL_INCLUDE 1\n#include \"regexpr.h\"\n#define INTERNAL_INCLUDE 1\n#include \"stringutils.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#define INTERNAL_INCLUDE 1\n#include \"unittestdetails.h\"\n#define INTERNAL_INCLUDE 1\n#include \"xmlutils.h\"\n#define INTERNAL_INCLUDE 1\n#include \"private/static.h\"\n#undef INTERNAL_INCLUDE\n\nnamespace stylecheck {\n\nSTATIC_CONST_VARIABLE_DECLARE(int, DEFAULT_MIN_COUNT, 0)\nSTATIC_CONST_VARIABLE_DECLARE(int, DEFAULT_MAX_COUNT, 999999999)\nSTATIC_VARIABLE_DECLARE(bool, styleChecksMerged, false)\n\nstatic bool processPatternNode(const std::string& codeFileName,\n                               rapidxml::xml_node<>* patternNode,\n                               std::string categoryName,\n                               const std::string& codeFileText,\n                               bool omitOnPass) {\n    std::ostringstream out;\n    std::string patternRegex = xmlutils::getAttribute(patternNode, \"regex\");\n    patternRegex = stringReplace(patternRegex, \"(:IDENTIFIER:)\", \"(?:[a-zA-Z_$][a-zA-Z0-9_$]{0,255})\");\n    patternRegex = stringReplace(patternRegex, \"(:IDENT:)\", \"(?:[a-zA-Z_$][a-zA-Z0-9_$]{0,255})\");\n    patternRegex = stringReplace(patternRegex, \"(:SPACES:)\", \"(?:[ \\\\t]{0,999})\");\n    patternRegex = stringReplace(patternRegex, \"(:SPACE:)\", \"(?:[ \\\\t])\");\n    patternRegex = stringReplace(patternRegex, \"(:TEMPLATE:)\", \"(?:&lt;[ \\t]{0,255}[a-zA-Z_$][a-zA-Z0-9_$]{0,255}[ \\t]{0,255}&gt;)\");\n\n    std::string patternDescription = xmlutils::getAttribute(patternNode, \"description\", patternRegex);\n    int patternMinCount = xmlutils::getAttributeInt(patternNode, \"mincount\", STATIC_VARIABLE(DEFAULT_MIN_COUNT));\n    int patternMaxCount = xmlutils::getAttributeInt(patternNode, \"maxcount\", STATIC_VARIABLE(DEFAULT_MAX_COUNT));\n    int patternCount = xmlutils::getAttributeInt(patternNode, \"count\", -1);\n    if (patternCount != -1) {\n        patternMinCount = patternMaxCount = patternCount;\n    }\n    bool patternList = xmlutils::getAttributeBool(patternNode, \"list\", true);\n    bool showCounts = xmlutils::getAttributeBool(patternNode, \"showcounts\", true);\n    \n    stanfordcpplib::autograder::TestResult failResult =\n            stanfordcpplib::autograder::TEST_RESULT_WARN;   // default\n    if (xmlutils::hasAttribute(patternNode, \"failtype\")) {\n        std::string failTypeStr = trim(xmlutils::getAttribute(patternNode, \"failtype\"));\n        failResult = failTypeStr == \"fail\" ? stanfordcpplib::autograder::TEST_RESULT_FAIL\n                                           : stanfordcpplib::autograder::TEST_RESULT_WARN;\n    }\n\n    // see if student's code text matches the regex\n    std::string linesStr;\n    int matchCount;\n    if (patternList) {\n        matchCount = regexMatchCountWithLines(codeFileText, patternRegex, linesStr);\n    } else {\n        matchCount = regexMatchCount(codeFileText, patternRegex);\n    }\n    \n    std::string rangeStr = \"\";\n    if (patternMinCount == patternMaxCount) {\n        rangeStr = \"should occur exactly \" + std::to_string(patternMinCount) + \" times\";\n    } else if (patternMinCount == 0 && patternMaxCount > 0 && patternMaxCount != STATIC_VARIABLE(DEFAULT_MAX_COUNT)) {\n        rangeStr = \"should occur at most \" + std::to_string(patternMaxCount) + \" times\";\n    } else if (patternMaxCount == STATIC_VARIABLE(DEFAULT_MAX_COUNT) && patternMinCount > 0) {\n        rangeStr = \"should occur at least \" + std::to_string(patternMinCount) + \" times\";\n    } else {\n        rangeStr = \"should be between \" + std::to_string(patternMinCount) + \"-\" + std::to_string(patternMaxCount) + \" times\";\n    }\n    bool pass = true;\n    if (patternMinCount > 0 && matchCount <= 0) {\n        pass = false;\n    } else if (patternMaxCount == 0 && matchCount > 0) {\n        pass = false;\n    } else if (!(patternMinCount <= matchCount && matchCount <= patternMaxCount)) {\n        pass = false;\n    }\n    \n    std::string prefix = \"\";\n    std::string testName = patternDescription;\n    if (STATIC_VARIABLE(styleChecksMerged)) {\n        // merge categories; one \"category\" per file\n        prefix += \"Style Checker: \" + codeFileName;\n        if (!categoryName.empty()) {\n            testName = \"[\" + categoryName + \"] \" + testName;\n        }\n        categoryName = \"\";\n    } else {\n        prefix += \"[\" + codeFileName + \"] \";\n        testName = prefix + patternDescription;\n    }\n    std::string testFullName = prefix + categoryName + \"_\" + testName;\n\n    if (!pass || !omitOnPass) {\n        out << \"    STYLE CHECK \" << (pass ? \"PASSED : \" : \"WARNING: \") << patternDescription << std::endl;\n        stanfordcpplib::autograder::Autograder* autograder = stanfordcpplib::autograder::Autograder::instance();\n        stanfordcpplib::autograder::TestResult result = pass\n                ? stanfordcpplib::autograder::TEST_RESULT_PASS : failResult;\n        if (!autograder->containsCategory(prefix + categoryName)) {\n            autograder->addCategory(prefix + categoryName,\n                                    \"Note: the style checker does not check all aspects of the student's code, and it is merely offering suggestions based on code text patterns. A warning here does not necessarily mean that there should be a deduction, merely that there may be an issue to investigate.\");\n        }\n        autograder->addTest(testName, prefix + categoryName);\n        autograder->setTestResult(testFullName, result);\n        stanfordcpplib::autograder::UnitTestDetails deets;\n        deets.message = patternDescription;\n        deets.passed = pass;\n        deets.expected = rangeStr;\n        deets.student = \"actually occurs \" + std::to_string(matchCount) + \" time(s)\";\n        if (!linesStr.empty()) {\n            deets.student += \" on line \" + linesStr;\n        }\n        deets.testType = stanfordcpplib::autograder::UnitTestType::TEST_STYLE_CHECK;\n        deets.valueType = \"T\";\n        deets.overwrite = true;\n        deets.result = pass ? stanfordcpplib::autograder::TEST_RESULT_PASS\n                            : stanfordcpplib::autograder::TEST_RESULT_WARN;\n        out.str(\"\");\n        out << deets;\n        autograder->setTestDetails(testFullName, deets);\n        out.str(\"\");\n\n        if (showCounts) {\n            out << \"         \" << rangeStr << std::endl;\n            out << \"         actually occurs \" << matchCount << \" time(s)\";\n            if (!linesStr.empty()) {\n                out << \" on line \" << linesStr;\n            }\n            autograder->showOutput(out, /* graphical */ false, /* console */ true);\n        }\n    }\n    \n    return pass;\n}\n\nvoid setStyleCheckMergedWithUnitTests(bool merged) {\n    STATIC_VARIABLE(styleChecksMerged) = merged;\n}\n\nbool isStyleCheckMergedWithUnitTests() {\n    return STATIC_VARIABLE(styleChecksMerged);\n}\n\n/*\n * <stylecheck type=\"text\" filename=\"life.cpp\" omitonpass=\"true\">\n *     <pattern regex=\"(\\/\\/.*)|(\\/\\*([^*]|([*][^\\/])\\r?\\n?)*\\*\\/)\" mincount=\"18\" description=\"comments\" list=\"false\" />\n *      ...\n * </stylecheck>\n */\nvoid styleCheck(const std::string& codeFileName, const std::string& styleXmlFileName, bool printWarning) {\n    if (!fileExists(codeFileName)) {\n        std::cerr << \"Warning: file not found: \" << codeFileName << std::endl;\n        std::cerr << \"Cannot perform style check. Aborting. \" << std::endl;\n        return;\n    }\n\n    std::string codeFileText = readEntireFile(codeFileName);\n    rapidxml::xml_node<>* styleCheckNode = xmlutils::openXmlDocument(styleXmlFileName, \"stylecheck\");\n    if (!styleCheckNode) {\n        // file was not found or could not be parsed\n        return;\n    }\n\n    bool omitOnPass = xmlutils::getAttributeBool(styleCheckNode, \"omitonpass\", true);\n\n    std::ostringstream out;\n    out << \"STYLE CHECK for \" << codeFileName << \" based on rules in \"\n        << styleXmlFileName << \":\" << std::endl;\n    stanfordcpplib::autograder::Autograder* autograder = stanfordcpplib::autograder::Autograder::instance();\n    autograder->showOutput(out, /* graphical */ false, /* console */ true);\n    if (printWarning) {\n        out << \"  (Note: These are just heuristics and suggestions, not hard rules.\" << std::endl;\n        out << \"         The style checker isn't able to check everything.\" << std::endl;\n        out << \"         Please look at the student's code and don't penalize them\" << std::endl;\n        out << \"         unless you actually see a problem with their coding style.)\" << std::endl;\n        out << std::endl;\n        if (omitOnPass) {\n            out << \"<br><br>(Note: Showing only the output of style checks that fail. Passing checks are omitted.)\" << std::endl;\n            out << std::endl;\n        }\n    }\n    autograder->showOutput(out, /* graphical */ false, /* console */ true);\n\n    if (!fileExists(codeFileName)) {\n        out << \"*** ERROR: Student code file \\\"\" << codeFileName\n            << \"\\\" not found in build folder. Exiting.\" << std::endl;\n        autograder->showOutput(out);\n        return;\n    }\n    if (!fileExists(styleXmlFileName)) {\n        out << \"*** ERROR: XML style checklist file \\\"\" << styleXmlFileName\n            << \"\\\" not found in build folder. Exiting.\" << std::endl;\n        autograder->showOutput(out);\n        return;\n    }\n\n    // loop over each pattern node\n    // handle each pattern node embedded directly within the document element of 'stylecheck'\n    int testCount = 0;\n    int passCount = 0;\n    for (rapidxml::xml_node<>* patternNode : xmlutils::getChildNodes(styleCheckNode, \"pattern\")) {\n        testCount++;\n        if (processPatternNode(codeFileName, patternNode, /* categoryName */ \"\", codeFileText, omitOnPass)) {\n            passCount++;\n        }\n    }\n\n    // handle each pattern node embedded within a 'category' node\n    for (rapidxml::xml_node<>* categoryNode : xmlutils::getChildNodes(styleCheckNode, \"category\")) {\n        std::string categoryName = xmlutils::getAttribute(categoryNode, \"name\");\n        for (rapidxml::xml_node<>* patternNode : xmlutils::getChildNodes(categoryNode, \"pattern\")) {\n            testCount++;\n            if (processPatternNode(codeFileName, patternNode, categoryName, codeFileText, omitOnPass)) {\n                passCount++;\n            }\n//            if (!STATIC_VARIABLE(styleChecksMerged)) {\n//                autograder::setTestCounts(passCount, testCount, /* isStyleCheck */ true);\n//            }\n        }\n    }\n\n    out << \"    STYLE CHECK: passed \" << passCount << \" of \" << testCount << \" checks.\" << std::endl;\n    autograder->showOutput(out, /* graphical */ false, /* console */ true);\n}\n} // namespace stylecheck\n\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/system/call_stack.h",
    "content": "/*\n * Copyright (c) 2009, Fredrik Orderud\n * License: BSD licence (http://www.opensource.org/licenses/bsd-license.php)\n *\n * @author Marty Stepp (made changes to F.Orderud version)\n * @version 2018/10/22\n * - bug fix for STL vector vs Stanford Vector\n * @version 2018/10/18\n * - added addr2line_functionName to resolve some function names not in backtrace\n * @version 2016/12/01\n * - bug fixes for call stack line number retrieval\n * - slight refactor of entry class\n * @version 2015/07/05\n * - replaced pragma once with ifndef/define for greater compatibility\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _call_stack_h\n#define _call_stack_h\n#include <string>\n#include <sstream>\n#define INTERNAL_INCLUDE 1\n#include \"vector.h\"\n#undef INTERNAL_INCLUDE\n\nnamespace stacktrace {\n\nint execAndCapture(std::string cmd, std::string& output);\nint addr2line(void* addr, std::string& line);\nint addr2line_all(Vector<void*> addrsVector, std::string& output);\nint addr2line_all(void** addrs, int length, std::string& output);\nstd::string addr2line_clean(std::string line);\nstd::string addr2line_functionName(std::string line);\n\n/*\n * Function to get/set a fake call stack pointer for use in printing a stack trace.\n * Called on Windows only after a signal / SEH handler is invoked to get a stack pointer.\n */\nvoid*& fakeCallStackPointer();\n\n/** Call-stack entry datastructure. */\nstruct entry {\npublic:\n    /** Default constructor that clears all fields. */\n    entry() : line(0), address(nullptr) {\n        // empty\n    }\n\n    std::string file;       // filename\n    size_t      line;       // line number\n    std::string lineStr;    // line number string (not always set)\n    std::string function;   // name of function or method\n    void* address;          // memory address of stack pointer (raw)\n    void* address2;         // memory address of stack pointer (from dladdr; data segment offset subtracted)\n\n    /** Serialize entry into a text string. */\n    std::string toString() const {\n        std::ostringstream os;\n        os << \"file=\\\"\" << file << \"\\\"\";\n        if (line > 0) {\n            os << \" (line=\" << line << \")\";\n        } else if (!lineStr.empty()) {\n            os << \" (lineStr=\\\"\" << lineStr << \"\\\")\";\n        }\n        os << \" function=\\\"\" << function << \"\\\"\";\n        return os.str();\n    }\n};\n\nstd::ostream& operator <<(std::ostream& out, const entry& ent);\n\n/** Stack-trace base class, for retrieving the current call-stack. */\nclass call_stack {\npublic:\n    /** Stack-trace consructor.\n     \\param num_discard - number of stack entries to discard at the top. */\n    call_stack(const size_t num_discard = 0);\n\n    virtual ~call_stack() throw();\n\n    /** Serializes the entire call-stack into a text string. */\n    std::string to_string() const {\n        std::ostringstream os;\n        for (int i = 0; i < stack.size(); i++)\n            os << stack[i].toString() << std::endl;\n        return os.str();\n    }\n\n    /** Call stack. */\n    Vector<entry> stack;\n};\n\n} // namespace stacktrace\n\n#endif // _call_stack_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/system/error.h",
    "content": "/*\n * File: error.h\n * -------------\n * This file defines the <code>ErrorException</code> class and the\n * <code>error</code> function.\n *\n * @version 2018/10/18\n * - added getKind for ErrorExceptions that wrap other types of errors\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2017/11/29\n * - fix for undefined SIGUSR1 on Windows systems\n * @version 2016/11/29\n * - changed error() to accept const string& instead of string\n * @version 2016/11/23\n * - added operator << to print ErrorExceptions\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _error_h\n#define _error_h\n\n#include <csignal>\n#include <exception>\n#include <iostream>\n#include <string>\n\n// bug fix for missing SIGUSR1 on some Windows systems\n#ifndef SIGUSR1\n#define SIGUSR1 10\n#endif // SIGUSR2\n\n/**\n * This exception is thrown by calls to the <code>error</code>\n * function.  Typical code for catching errors looks like this:\n *\n *<pre>\n *    try {\n *       ... code in which an error might occur ...\n *    } catch (ErrorException& ex) {\n *       ... code to handle the error condition ...\n *    }\n *</pre>\n *\n * If an <code>ErrorException</code> is thrown at any point in the\n * range of the <code>try</code> (including in functions called from\n * that code), control will jump immediately to the error handler.\n */\nclass ErrorException : public std::exception {\npublic:\n    /**\n     * Creates a new ErrorException with the given error message.\n     */\n    ErrorException(std::string msg);\n\n    /**\n     * Frees any memory allocated by the exception.\n     */\n    virtual ~ErrorException() noexcept = default;\n\n    /**\n     * Prints the exception to the standard error stream (cerr),\n     * including its message and stack trace if any.\n     */\n    virtual void dump() const;\n\n    /**\n     * Prints the exception to the given output stream,\n     * including its message and stack trace if any.\n     */\n    virtual void dump(std::ostream& out) const;\n\n    /**\n     * Returns what kind of exception this is.\n     * In general this returns \"error\", but in some cases we catch other kinds\n     * of exceptions (like thrown ints or strings) and wrap them up as\n     * ErrorExceptions. In such cases, the kind will be \"int\" or \"string\" etc.\n     */\n    virtual std::string getKind() const;\n\n    /**\n     * Returns the exception's error message as passed to its constructor.\n     */\n    virtual std::string getMessage() const;\n\n    /**\n     * Returns a stack trace for this exception as a multi-line string.\n     * See exceptions.h/cpp for descriptions of the format.\n     * Not every exception has a proper stack trace, based on when/why it was\n     * thrown, platform incompatibilities, and other issues; use hasStackTrace to\n     * check if a given exception's stack trace is populated.\n     */\n    virtual std::string getStackTrace() const;\n\n    /**\n     * Returns whether this exception has a non-empty stack trace.\n     * Not every exception has a proper stack trace, based on when/why it was\n     * thrown, platform incompatibilities, and other issues; use hasStackTrace to\n     * check if a given exception's stack trace is populated.\n     */\n    virtual bool hasStackTrace() const;\n\n    /**\n     * Sets what kind of exception this is.\n     * Default is \"error\".\n     */\n    void setKind(const std::string& kind);\n\n    /**\n     * Returns the exception's error message as a C string.\n     */\n    virtual const char* what() const noexcept;\n\nprotected:\n    /**\n     * Sets this exception's stack trace to the given multi-line string.\n     */\n    void setStackTrace(const std::string& stackTrace);\n\nprivate:\n    std::string _kind;\n    std::string _msg;\n    std::string _stackTrace;\n\n    /**\n     * Prepends \"*** \" to each line of the given string.\n     * Used to format stack traces that print to the console.\n     */\n    static std::string insertStarsBeforeEachLine(const std::string& s);\n};\n\n/**\n * Prints the error exception to the given output stream.\n */\nstd::ostream& operator <<(std::ostream& out, const ErrorException& ex);\n\n/**\n * Signals an error condition in a program by throwing an\n * <code>ErrorException</code> with the specified message.\n */\n[[noreturn]] void error(const std::string& msg);\n\n#endif // _error_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/system/exceptions.h",
    "content": "/*\n * File: exceptions.h\n * ------------------\n * This file contains a top-level exception handler to print exceptions thrown\n * by student code on the console.\n * It also contains some wizardry to try to retrieve a stack trace when the\n * exception is thrown, though it is hard to consistently do this on all platforms.\n * \n * @author Marty Stepp\n * @version 2018/09/25\n * - add 'force' parameter to setTopLevelExceptionHandlerEnabled\n *   (helps it to work better with threads)\n * - added doc comments for new documentation generation\n * @version 2016/11/07\n * - added cleanupFunctionNameForStackTrace\n * @version 2016/10/30\n * - moved recursion functions to recursion.h/cpp\n * @version 2014/11/12\n * - made printStackTrace function publicly available\n * - added top-level signal handler (for null-pointer derefs etc.)\n * @since 2014/11/05\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _exceptions_h\n#define _exceptions_h\n\n#include <iostream>\n\nnamespace exceptions {\n/**\n * Strips some extraneous text from a function's name/header to make it look\n * better when printed in a stack trace.\n * e.g. basic_string -> string, removes std::, removes some weird compiler gibberish.\n */\nstd::string cleanupFunctionNameForStackTrace(std::string function);\n\n/**\n * Called by C++ lib's main wrapper so that the stack trace knows the program's name.\n * (Taken from argv[0].)\n */\nstd::string& getProgramNameForStackTrace();\n\n/**\n * Returns whether the top-level exception handler is enabled.\n * Initially false.\n */\nbool getTopLevelExceptionHandlerEnabled();\n\n/**\n * Prints a stack trace to the system standard error console (cerr).\n * (Stack traces are highly OS- and compiler-dependent, so this function\n *  may not work perfectly on all platforms.  It has been tested to work\n *  on Linux with GCC/G++, Mac OS X with clang++, and Windows with MinGW.)\n */\nvoid printStackTrace();\n\n/**\n * Prints a stack trace to the given output stream.\n * Defaults to the system standard error console (cerr).\n * (Stack traces are highly OS- and compiler-dependent, so this function\n *  may not work perfectly on all platforms.  It has been tested to work\n *  on Linux with GCC/G++, Mac OS X with clang++, and Windows with MinGW.)\n */\nvoid printStackTrace(std::ostream& out);\n\n/**\n * Called by C++ lib's main wrapper so that the stack trace knows the program's name.\n * (Taken from argv[0].)\n */\nvoid setProgramNameForStackTrace(char* programName);\n\n/**\n * Sets whether the top-level exception handler is enabled.\n * If the optional 'force' parameter is passed, will set the handler again\n * even if it was set before.\n */\nvoid setTopLevelExceptionHandlerEnabled(bool enabled, bool force = false);\n\n/**\n * Whether the given function should be filtered out when displaying a stack trace.\n * Not meant to be called by clients.\n */\nbool shouldFilterOutFromStackTrace(const std::string& function);\n}\n\n#endif // _exceptions_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/system/os.h",
    "content": "/*\n * File: os.h\n * ----------\n * This file exports a class with static member functions related to the\n * current operating system.\n *\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2018/09/16\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _os_h\n#define _os_h\n\n#include <string>\n\n/**\n * This class contains useful static methods for asking about what operating\n * system the program is currently running on.\n */\nclass OS {\npublic:\n    /**\n     * Returns a string representing the name of the current operating system.\n     */\n    static std::string getName();\n\n    /**\n     * Returns a string representing the current version or release of the\n     * current operating system.\n     */\n    static std::string getVersion();\n\n    /**\n     * Returns true if the current operating system appears to be Linux.\n     */\n    static bool isLinux();\n\n    /**\n     * Returns true if the current operating system appears to be Mac OS X.\n     */\n    static bool isMac();\n\n    /**\n     * Returns true if the current operating system appears to be Windows.\n     */\n    static bool isWindows();\n\nprivate:\n    OS();   // prevent construction\n};\n\n#endif // _os_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/util/bigfloat.h",
    "content": "///// BEGIN BASE.H\n//#pragma once\n\n//#ifndef INTERNAL_INCLUDE\n//#include \"private/initstudent.h\"   // insert necessary included code by student\n//#endif // INTERNAL_INCLUDE\n\n//#include <stddef.h>\n//#include <stdio.h>\n//#include <stdarg.h>\n//#include <vector>\n//#include <map>\n//#include <stdexcept>\n//#include <string>\n//#include <sstream>\n\n//#ifdef _MSC_VER\n//# define INLINE __forceinline\n//  typedef  unsigned __int64 u8;\n//  typedef  unsigned __int32 u4;\n//  typedef  unsigned __int16 u2;\n//  typedef  unsigned __int8  u1;\n//  typedef  __int64 s8;\n//  typedef  __int32 s4;\n//  typedef  __int16 s2;\n//  typedef  __int8  s1;\n//#else\n//# include <stdint.h>\n//# define INLINE inline\n//  typedef  uint64_t  u8;\n//  typedef  uint32_t  u4;\n//  typedef  uint16_t  u2;\n//  typedef  uint8_t   u1;\n//  typedef  int64_t  s8;\n//  typedef  int32_t  s4;\n//  typedef  int16_t  s2;\n//  typedef  int8_t   s1;\n//#endif\n\n//class CosmosException : public std::exception\n//{\n//public:\n//    CosmosException(const char* m) : _msg(m) {}\n//    CosmosException(const std::string& m) : _msg(m) {}\n//    virtual ~CosmosException() throw() {}\n//    virtual const char* what() const throw()\n//    {\n//        return _msg.c_str();\n//    }\n//protected:\n//    std::string _msg;\n//};\n\n/*#define ASSERT(condition, ...) do { \\\n  if (!(condition)) Assert(__LINE__, __FILE__, #condition, ##__VA_ARGS__); \\\n} while(0) */\n\n/*#define ASSERTFG(f,g) do { \\\n  double fr = (f); double gr = (g); double diff = (fr-gr); \\\n  if (diff > 1.0e-10 || diff < -1.0e-10) \\\n  Assert(__LINE__, __FILE__, #f \",\" #g, \"%f, %f, %f\", fr, gr, diff); \\\n} while(0) */\n\n//static void Assert(\n//    int line,\n//    const char* filename,\n//    const char* condition)\n//{\n//\tstatic const int bufSize = 4000;\n//    char y[bufSize];\n//    sprintf(y, \"line=[%d], file=[%s], condition=[%s]\",\n//            line, filename, condition);\n//    throw CosmosException(y);\n//}\n\n//static void Assert(\n//    int line,\n//    const char* filename,\n//    const char* condition,\n//    const char* fmt,\n//    ...)\n//{\n//\tstatic const int bufSize = 4000;\n//    char x[bufSize];\n//    char y[bufSize];\n//    va_list args;\n//    va_start(args, fmt);\n//    vsprintf(x, fmt, args);\n//    va_end(args);\n//    sprintf(y, \"line=[%d], file=[%s], condition=[%s], %s\",\n//            line, filename, condition, x);\n//    throw CosmosException(y);\n//}\n\n///// END BASE.H\n\n\n\n\n\n\n////#pragma once\n////#include \"base.h\"\n\n\n//// This is not fast, but it has good accuracy.\n//// I need this because orbital problems have a lot of nth-degree\n//// polynomial approximations, and the coefficients of those polynomial\n//// approximations are things like 48471792742212/237758976000.  The only\n//// way to get the definitions of coefficients right is to do Gaussian\n//// elimination on at least n equations with n unknowns, and a precision\n//// about twice as great as the coefficients I want to end up with,\n//// followed by continued fractions on the result to find the proper\n//// fractional representation.\n//class BigFloat\n//{\n//public:\n//    BigFloat() { Zero(); }\n//    BigFloat(const BigFloat& n) { Copy(n); }\n//    BigFloat(s8 n) { FromInteger(n); }\n//    BigFloat(s8 n, s8 exponent) { FromInteger(n, exponent); }\n//    ~BigFloat() {}\n\n//    // translation\n//    BigFloat& FromInteger(s8 num, s8 exponent=0);\n//    s8 ToInteger() const;  // it will truncate, but not overflow\n//    static s8 RoundInteger(s8 value);  // round an s8 to right precision\n//    double ToDouble() const;\n//    bool IsNegative() const { return _isNegative; }\n//    s8 ToExponent() const { return _exponent; }\n//    u8 ToDigits() const;  // return digits filling an integer\n//    void ToFraction(BigFloat& num, BigFloat& denom, int iter=1024) const;\n//    void Print() const;\n//    void PrintHex() const;\n//    void PrintContinuedFraction() const;\n//    void PrintDouble() const;\n\n//    // arithmetic\n//    BigFloat& PZero()\n//    {\n//        _exponent = c_zeroExponent;\n//        _length = 0;\n//        _isNegative = false;\n//        return *this;\n//    }\n//    BigFloat& NZero()\n//    {\n//        _exponent = c_zeroExponent;\n//        _length = 0;\n//        _isNegative = true;\n//        return *this;\n//    }\n//    BigFloat& Zero( bool neg = false) { return neg ? NZero() : PZero(); }\n//    BigFloat& PInf()\n//    {\n//        _exponent = c_zeroExponent;\n//        _length = 1;\n//        _isNegative = false;\n//        return *this;\n//    }\n//    BigFloat& NInf()\n//    {\n//        _exponent = c_zeroExponent;\n//        _length = 1;\n//        _isNegative = true;\n//        return *this;\n//    }\n//    BigFloat& Inf( bool negative = false) { return negative ? NInf() : PInf(); }\n//    BigFloat& NaN()\n//    {\n//        _exponent = c_zeroExponent;\n//        _length = 2;\n//        _isNegative = false;\n//        return *this;\n//    }\n\n//    BigFloat& Copy(const BigFloat& n);\n//    BigFloat& Negate();\n\n//    // round to c_digits digits\n//    //   carry=true: there should be an additional top digit of 1\n//    //   previousDigit: what _d[c_digits] would have been, or 0\n//    BigFloat& Round(bool carry, s8 previousDigit);\n//    BigFloat& Round(u8 previousDigit);\n\n//    // truncate to the nearest integer, towards zero\n//    BigFloat& Trunc();\n\n//    // -1 if |this|<|n|, 0 if |this|==|n|, 1 if |this|>|n|\n//    int CompareAbsolute(const BigFloat& n) const;\n\n\n//    // -1 if this<n, 0 if this==n, 1 if this>n\n//    int Compare(const BigFloat& n) const;\n\n//    bool IsZero() const\n//    {\n//        return\n//            _exponent == c_zeroExponent &&\n//            _length == 0;\n//    }\n//    bool IsPZero() const\n//    {\n//        return\n//            _exponent == c_zeroExponent &&\n//            _length == 0 &&\n//            _isNegative == false;\n//    }\n//    bool IsNZero() const\n//    {\n//        return\n//            _exponent == c_zeroExponent &&\n//            _length == 0 &&\n//            _isNegative == true;\n//    }\n//    bool IsInf() const\n//    {\n//        return\n//            _exponent == c_zeroExponent &&\n//            _length == 1;\n//    }\n//    bool IsPInf() const\n//    {\n//        return\n//            _exponent == c_zeroExponent &&\n//            _length == 1 &&\n//            _isNegative == false;\n//    }\n//    bool IsNInf() const\n//    {\n//        return\n//            _exponent == c_zeroExponent &&\n//            _length == 1 &&\n//            _isNegative == true;\n//    }\n//    bool IsNaN() const\n//    {\n//        return\n//            _exponent == c_zeroExponent &&\n//            _length == 2;\n//    }\n//    bool IsSpecial() const\n//    {\n//        return _exponent == c_zeroExponent;\n//    }\n\n//    BigFloat& Add(const BigFloat& n) { return AddOrSubtract(n, false); }\n//    BigFloat& Sub(const BigFloat& n) { return AddOrSubtract(n, true); }\n//    BigFloat& Mult(const BigFloat& n); // x => x*n\n//    BigFloat& Div(const BigFloat& n); // x => x/n\n//    BigFloat& Invert(); // x => 1/x\n//    BigFloat& Sqrt(); // x => positive square root of x\n//    BigFloat& Cos(); // x => cosine of x (x in radians)\n//    BigFloat& Sin(); // x => sine of x (x in radians)\n//    BigFloat& Sec(); // x => secant of x (x in radians)\n//    BigFloat& Csc(); // x => cosecant of x (x in radians)\n//    BigFloat& Tan(); // x => tangent of x (x in radians)\n//    BigFloat& Exp(); // x => e to the xth power\n//    BigFloat& ASin(); // x => arcsin of x (-1 => -pi/2, 1 => pi/2)\n//    BigFloat& ACos(); // x => arccos of x (-1 => pi, 1 => 0)\n//    BigFloat& ATan(); // x => arctan of x (-inf => -pi/2, inf => pi/2)\n//    BigFloat& Ln();  // replaces x with the natural log of x\n//    BigFloat& Log(const BigFloat& n);  // x => natural log of n base x\n//    BigFloat& Power(const BigFloat& n); // replaces x with x to the nth\n//    BigFloat& Rand(); // not impl: uniformly distributed value in [0,1)\n//    BigFloat& RandNorm(); // not impl: pseudorandom normally-distributed value\n\n//    // constants\n//    static const BigFloat& Pi();  // length of unit circle, 3.14159...\n//    static const BigFloat& E();  // the natural base for exponents, 2.71828...\n//    static const BigFloat& ConstZero();\n//    static const BigFloat& ConstOne();\n//    static const BigFloat& ConstMinusOne();\n\n//    // variations where arguments are signed integers\n//    int Compare(s8 n, s8 exponent=0);\n//    BigFloat& Add(s8 n, s8 exponent=0);\n//    BigFloat& Sub(s8 n, s8 exponent=0);\n//    BigFloat& Mult(s8 n, s8 exponent=0);\n//    BigFloat& Div(s8 n, s8 exponent=0);\n//    BigFloat& Power(s8 n, s8 exponent=0);  // not implemented\n\n//    // Given an m*(m+1) matrix of BigFloat where the last col means =const,\n//    // solve, and fill m[i][m] with the value for the ith variable.\n//    static void GaussianElimination(BigFloat** m, s8 rows, s8 cols);\n    \n//    // assure that it works as expected\n//    static void UnitTest();\n        \n//private:\n//    // First, this => this mod 2pi.\n//    // Return the quadrant (int)(this / (pi/4)), value 0..7\n//    // this => (this + pi/4) mod pi/2 (positive), - pi/4.\n//    // That means a negative value for odd quadrants and positive for even.\n//    s8 Quadrant();\n//    BigFloat& PartialSin();  // sin, but only for -pi/4 to pi/4\n//    BigFloat& PartialCos();  // cos, but only for -pi/4 to pi/4\n    \n//    // this+n, or this-n if minus==true\n//    BigFloat& AddOrSubtract(const BigFloat& n, bool minus);\n\n//    // test whether this is the right representation of this integer\n//    static void TestInteger(const BigFloat& n, s8 x);\n\n//    // test addition and subtraction of two integers\n//    static void TestAdd(s8 x, s8 y);\n\n//    // test multiplication of two numbers\n//    static void TestMult(s8 x, s8 ex, s8 y, s8 ey);\n\n//    // test inverse of one number\n//    static void TestInverse(s8 x, s8 ex);\n\n//    // test sqrt of one number\n//    static void TestSqrt(s8 x, s8 ex);\n\n//    // representation: c_digits digits, each with range 0..c_range-1\n//    // _d[0] is the most significant digit\n//#ifdef BIGFLOAT_TEST\n//    static const s8 c_digits = 4;\n//    static const s8 c_log = 2;\n//    static const s8 c_zeroExponent = -(((s8)1) << 4);\n//#else\n//    static const s8 c_digits = 10;\n//    static const s8 c_log = 32;\n\n//    // -1<<63 is a signed value, but 1<<63 is not, so 1<<62 then\n//    static const s8 c_zeroExponent = -(((s8)1) << 62);\n//#endif\n//    static const s8 c_minExponent = c_zeroExponent + c_digits;\n//    static const s8 c_maxExponent =  -c_zeroExponent;\n//    static const u8 c_range = (((u8)1)<<c_log);\n\n//    s8 _exponent;\n//    u4 _d[c_digits];\n//    bool _isNegative;\n//    u2 _length; // number of digits used\n//};\n\n//class BigFloatCache\n//{\n//public:\n//    static bool _isInitialized;\n//    static BigFloat _zero;\n//    static BigFloat _e;\n//    static BigFloat *_ePower; // [i] is e^^(2^^i), i in -6..ePowerLen-1\n//    static BigFloat *_eInvPower; // [i] is e^^-(2^^i), i in -6..ePowerLen-1\n//    static s8 _ePowerLen;\n//    static const s8 _ePowerNeg = -7;\n//    static BigFloat _pi;\n//    static BigFloat _twoPi;\n//    static BigFloat _overTwoPi;\n//    static BigFloat _piOverTwo;\n//    static BigFloat _threePiOverTwo;\n//    static BigFloat _piOverFour;\n//    static s8 _overFactLen;\n//    static BigFloat* _overFact;\n\n//    // fill in _pi, _e, and various cached arrays\n//    static void Init();\n//};\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/util/biginteger.h",
    "content": "/*\n * File: biginteger.h\n * ------------------\n * This file exports a class for arbitrary-size integer arithmetic.\n * It is meant to help get around the max/min value limit for types\n * such as int and long.\n *\n * In general, a BigInteger supports the standard operators and operations\n * that you would expect to be able to use on an int or long value.\n *\n * Example usage:\n *\n * BigInteger bi(\"1234567890123456789\");\n * for (int i = 0; i < 10; i++) {\n *     bi *= 12345678;\n * }\n * cout << \"really big number is: \" << bi << endl;\n *\n * Implementation notes:\n * This code is heavily based on a BigInteger library taken from:\n * https://github.com/panks/BigInteger\n *\n * The implementation stores the big integer as a string of base-10 digits\n * along with a sign bit represented as a bool.\n * In general the operations are not heavily optimized; this class should not\n * be used in situations where performance is critical.\n * Note that better Big Integer libraries exist in other places for more\n * serious work and can be found using your favorite search engine.\n *\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2017/10/28\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _biginteger_h\n#define _biginteger_h\n\n#include <iostream>\n#include <string>\n\n#define INTERNAL_INCLUDE 1\n#include \"hashcode.h\"\n#undef INTERNAL_INCLUDE\n\nclass BigInteger {\npublic:\n    /**\n     * Constants to represent very commonly used big integer values\n     */\n    static const BigInteger NEGATIVE_ONE;\n    static const BigInteger ZERO;\n    static const BigInteger ONE;\n    static const BigInteger TWO;\n    static const BigInteger TEN;\n    static const BigInteger MAX_INT;\n    static const BigInteger MIN_INT;\n    static const BigInteger MAX_UINT;\n    static const BigInteger MAX_LONG;\n    static const BigInteger MIN_LONG;\n    static const BigInteger MAX_ULONG;\n    static const BigInteger MAX_SHORT;\n    static const BigInteger MIN_SHORT;\n    static const BigInteger MAX_USHORT;\n\n    /**\n     * Constructs a new big integer set to zero.\n     *\n     * @example BigInteger bi;\n     */\n    BigInteger();\n\n    /**\n     * Constructs a new big integer whose value is a copy of another big integer.\n     *\n     * @example BigInteger bi1(bi2);\n     */\n    BigInteger(const BigInteger& other);\n\n    /**\n     * Constructs a new big integer set to the given value.\n     *\n     * @example BigInteger bi(\"1234567890123456789\");\n     */\n    BigInteger(const std::string& s, int radix = 10);\n\n    /**\n     * Constructs a new big integer set to the given value.\n     *\n     * @example BigInteger bi(12345);\n     * @example BigInteger bi2(-42);\n     */\n    BigInteger(long n);\n\n    /**\n     * Returns a new BigInteger whose value is the absolute value of this one.\n     */\n    BigInteger abs() const;\n\n    /**\n     * Returns the greatest common divisor of this and the given other big integer.\n     * For example, gcd(24, 16) is 8.\n     */\n    BigInteger gcd(const BigInteger& other) const;\n\n    /**\n     * Returns true if this BigInteger's value is within the range of values\n     * that can be stored as an int.\n     */\n    bool isInt() const;\n\n    /**\n     * Returns true if this BigInteger's value is within the range of values\n     * that can be stored as a long.\n     */\n    bool isLong() const;\n\n    /**\n     * Returns true if this BigInteger represents a negative number < 0.\n     * You could just perform the check yourself by testing whether number > 0,\n     * but this member is faster because it doesn't need to create a temporary\n     * BigInteger instance for doing the comparison.\n     */\n    bool isNegative() const;\n\n    /**\n     * Returns true if this BigInteger represents a non-negative number >= 0.\n     * You could just perform the check yourself by testing whether number > 0,\n     * but this member is faster because it doesn't need to create a temporary\n     * BigInteger instance for doing the comparison.\n     */\n    bool isNonNegative() const;\n\n    /**\n     * Returns true if this BigInteger represents a positive number > 0.\n     * You could just perform the check yourself by testing whether number > 0,\n     * but this member is faster because it doesn't need to create a temporary\n     * BigInteger instance for doing the comparison.\n     */\n    bool isPositive() const;\n\n    /**\n     * Returns whichever is larger between this big integer and the given\n     * other big integer.\n     */\n    const BigInteger& max(const BigInteger& other) const;\n\n    /**\n     * Returns whichever is smaller between this big integer and the given\n     * other big integer.\n     */\n    const BigInteger& min(const BigInteger& other) const;\n\n    /**\n     * Returns a new BigInteger whose value is (this ^^ exp) % m.\n     * @throw ErrorException if exp is negative or if m is 0.\n     */\n    BigInteger modPow(const BigInteger& exp, const BigInteger& m) const;\n\n    /**\n     * Returns a new BigInteger whose value is the value of this BigInteger\n     * raised to the given exponent.\n     * @throw ErrorException if the exponent is negative.\n     */\n    BigInteger pow(long exp) const;\n\n    /**\n     * Returns a new BigInteger whose value is the value of this BigInteger\n     * raised to the given exponent.\n     * @throw ErrorException if the exponent is negative.\n     */\n    BigInteger pow(const BigInteger& exp) const;\n\n    /**\n     * Returns an int representation of this BigInteger, such as\n     * -12345678.\n     * @throw ErrorException if this BigInteger is out of the range of int.\n     */\n    int toInt() const;\n\n    /**\n     * Returns a long representation of this BigInteger, such as\n     * -123456789.\n     * @throw ErrorException if this BigInteger is out of the range of long.\n     */\n    long toLong() const;\n\n    /**\n     * Returns a string representation of this BigInteger, such as\n     * \"-1234567890123456789\".\n     */\n    std::string toString(int radix = 10) const;\n\n    /**\n     * Increases the value of this BigInteger by 1 (prefix).\n     */\n    BigInteger& operator ++(); // prefix\n\n    /**\n     * Increases the value of this BigInteger by 1 (posfix).\n     */\n    BigInteger  operator ++(int); // postfix\n\n    /**\n     * Decreases the value of this BigInteger by 1 (prefix).\n     */\n    BigInteger& operator --(); // prefix\n\n    /**\n     * Decreases the value of this BigInteger by 1 (postfix).\n     */\n    BigInteger  operator --(int); // postfix\n\n    /**\n     * Assigns this BigInteger to store the sum of itself\n     * and the given other BigInteger.\n     */\n    BigInteger& operator +=(const BigInteger& b);\n\n    /**\n     * Assigns this BigInteger to store the result of subtracting\n     * the given other BigInteger from this BigInteger.\n     */\n    BigInteger& operator -=(const BigInteger& b);\n\n    /**\n     * Assigns this BigInteger to store the product of itself\n     * and the given other BigInteger.\n     */\n    BigInteger& operator *=(const BigInteger& b);\n\n    /**\n     * Assigns this BigInteger to store the quotient of dividing\n     * itself by the given other BigInteger.\n     * @throw ErrorException if denominator is 0.\n     * @throw ErrorException if denominator is not within the range of type long.\n     */\n    BigInteger& operator /=(const BigInteger& b);\n\n    /**\n     * Assigns this BigInteger to store the remainder of dividing\n     * itself by the given other BigInteger.\n     * @throw ErrorException if denominator is 0.\n     * @throw ErrorException if denominator is not within the range of type long.\n     */\n    BigInteger& operator %=(const BigInteger& b);\n\n    /**\n     * Sets this big integer to a bitwise AND between this integer and the given other integer,\n     * retaining only bits that are set in both.\n     */\n    BigInteger& operator &=(const BigInteger& b);\n\n    /**\n     * Sets this big integer to a bitwise OR between this integer and the given other integer,\n     * retaining bits that are set in this integer or the other integer or both.\n     */\n    BigInteger& operator |=(const BigInteger& b);\n\n    /**\n     * Sets this big integer to a bitwise XOR between this integer and the given other integer,\n     * retaining bits that are set in this integer or the other integer but not both.\n     */\n    BigInteger& operator ^=(const BigInteger& b);\n\n    /**\n     * Performs a bitwise NOT on this integer,\n     * inverting the values of all of its bits.\n     */\n    BigInteger operator ~() const;\n\n    /**\n     * Performs a logical NOT on this integer,\n     * setting it to 0 if non-zero, or to 1 if zero.\n     */\n    BigInteger operator !() const;\n\n    /**\n     * Sets this BigInteger to store the same value as the given other big integer.\n     */\n    BigInteger& operator =(const BigInteger& other);\n\n    /**\n     * Unary negation; returns a new BigInteger that is\n     * the negative of this BigInteger.\n     */\n    BigInteger operator -() const;\n\n    /**\n     * Returns a new big integer whose value is equal to the value of\n     * this big integer bit-shifted left by the given number of bits.\n     * Equivalent to multiplying by 2 ^ shift.\n     */\n    BigInteger operator <<(unsigned int shift) const;\n\n    /**\n     * Modifies this big integer to be bit-shifted left by the given number of bits.\n     * Equivalent to multiplying by 2 ^ shift.\n     */\n    BigInteger& operator <<=(unsigned int shift);\n\n    /**\n     * Returns a new big integer whose value is equal to the value of\n     * this big integer bit-shifted right by the given number of bits.\n     * Equivalent to dividing by 2 ^ shift.\n     */\n    BigInteger operator >>(unsigned int shift) const;\n\n    /**\n     * Modifies this big integer to be bit-shifted right by the given number of bits.\n     * Equivalent to dividing by 2 ^ shift.\n     */\n    BigInteger& operator >>=(unsigned int shift);\n\n    /**\n     * Converts this BigInteger into a boolean value.\n     * The value will be false if this BigInteger stores 0, or true otherwise.\n     */\n    explicit operator bool() const;\n\n    /**\n     * Converts this BigInteger into a double.\n     * @throw ErrorException if this big integer is not within the range of type long.\n     */\n    // explicit operator double() const;\n\n    /**\n     * Converts this BigInteger into a float.\n     * @throw ErrorException if this big integer is not within the range of type long.\n     */\n    // explicit operator float() const;\n\n    /**\n     * Converts this BigInteger into an integer.\n     * @throw ErrorException if this big integer is not within the range of type int.\n     */\n    explicit operator int() const;\n\n    /**\n     * Converts this BigInteger into a long.\n     * @throw ErrorException if this big integer is not within the range of type long.\n     */\n    explicit operator long() const;\n\n    /**\n     * Converts this BigInteger into a string.\n     */\n    explicit operator std::string() const;\n\nprivate:\n    /*\n     * Constructs a new big integer set to the given value,\n     * with optional sign (true=negative, false=positive).\n     *\n     * Example:\n     * BigInteger bi(\"1234567890123456789\", true);   // negative\n     */\n    BigInteger(const std::string& s, bool sin); // \"string\" constructor\n\n    // add two big integers as string and return result; used by operator +\n    static std::string add(const std::string& number1, const std::string& number2);\n\n    // checks that the given string is in the proper format that it could be\n    // interpreted as an integer in the given base; if not, issues an error()\n    static void checkStringIsNumeric(const std::string& s, int radix = 10);\n\n    // TODO: make work for big integer division\n    // divide n by den and return result; used by operator /\n    static std::pair<std::string, long> divide(const std::string& n, long den);\n    static std::pair<BigInteger, BigInteger> divideBig(const BigInteger& numer, const BigInteger& denom);\n\n    // return true if two BigIntegers are equal; used by operator ==\n    static bool equals(const BigInteger& n1, const BigInteger& n2);\n\n    // checks for -0 case and changes to 0\n    void fixNegativeZero();\n\n    /*\n     * Returns the number stored by this BigInteger as a string.\n     * If this BigInteger represents a negative number, the sign will be omitted.\n     * Example: \"1234567890123456789\"\n     */\n    const std::string& getNumber() const; // retrieves the number\n\n    /*\n     * Returns the sign of this BigInteger; true if negative, false if not.\n     */\n    bool getSign() const;\n\n    // return true if n1 > n2; used by operator >\n    static bool greater(const BigInteger& n1, const BigInteger& n2);\n\n    // return true if n1 < n2; used by operator <\n    static bool less(const BigInteger& n1, const BigInteger& n2);\n\n    // multiply two big integers as string and return result; used by operator *\n    static std::string multiply(const std::string& n1, const std::string& n2);\n\n    // removes leading 0s except one from given number\n    static std::string removeLeadingZeros(const std::string& s);\n\n    /*\n     * Sets the number and the sign stored by this BigInteger.\n     */\n    void setValue(const std::string& s, int radix = 10);\n\n    /*\n     * Sets the number stored by this BigInteger.\n     */\n    void setNumber(const std::string& s, int radix = 10);\n\n    /*\n     * Sets the sign stored by this BigInteger.\n     * The value true means negative; false means positive.\n     */\n    void setSign(bool s);\n\n    // e.g. \"0xfff\" => \"fff\"\n    static std::string stripNumberPrefix(const std::string& num, int radix = 10);\n\n    // subtract num2 from num1 as string and return result; used by operator -\n    static std::string subtract(const std::string& number1, const std::string& number2);\n\n    // convert a string value into a long\n    static long toLong(const std::string& s);\n\n    // convert a long value to a string\n    static std::string toString(long n);\n\n    // TODO: remove?\n    BigInteger& operator [](int n);\n\n    friend int hashCode(const BigInteger& b);\n    friend BigInteger operator +(const BigInteger& b1, const BigInteger& b2);\n    friend BigInteger operator -(const BigInteger& b1, const BigInteger& b2);\n    friend BigInteger operator *(const BigInteger& b1, const BigInteger& b2);\n    friend BigInteger operator /(const BigInteger& b1, const BigInteger& b2);\n    friend BigInteger operator %(const BigInteger& b1, const BigInteger& b2);\n    friend BigInteger operator &(const BigInteger& b1, const BigInteger& b2);\n    friend BigInteger operator |(const BigInteger& b1, const BigInteger& b2);\n    friend BigInteger operator ^(const BigInteger& b1, const BigInteger& b2);\n    friend bool operator ==(const BigInteger& b1, const BigInteger& b2);\n    friend bool operator !=(const BigInteger& b1, const BigInteger& b2);\n    friend bool operator >(const BigInteger& b1, const BigInteger& b2);\n    friend bool operator <(const BigInteger& b1, const BigInteger& b2);\n    friend bool operator >=(const BigInteger& b1, const BigInteger& b2);\n    friend bool operator <=(const BigInteger& b1, const BigInteger& b2);\n    friend std::istream& operator >>(std::istream& input, BigInteger& b);\n    friend std::ostream& operator <<(std::ostream& out, const BigInteger& b);\n\n    // member variables\n    std::string number;   // string representation of this big integer in base-10, e.g. \"1234567890123456789\"\n    bool sign;            // true if number is negative\n};\n\n/**\n * Returns a string representation of the given big integer.\n * Equivalent to calling bi.toString().\n * Provided for consistency with the other lib functions like integerToString.\n */\nstd::string bigIntegerToString(const BigInteger& bi, int radix = 10);\n\n/**\n * Returns an integer hash code for the given BigInteger.\n */\nint hashCode(const BigInteger& b);\n\n/**\n * Returns a new BigInteger that is the sum of this BigInteger\n * and the given other BigInteger.\n */\nBigInteger operator +(const BigInteger& b1, const BigInteger& b2);\n\n/**\n * Returns a new BigInteger that is the result of subtracting\n * the given other BigInteger from this BigInteger.\n */\nBigInteger operator -(const BigInteger& b1, const BigInteger& b2);\n\n/**\n * Returns a new BigInteger that is the product of this BigInteger\n * and the given other BigInteger.\n */\nBigInteger operator *(const BigInteger& b1, const BigInteger& b2);\n\n/**\n * Returns a new BigInteger that is the quotient of dividing\n * this BigInteger by the given other BigInteger.\n * @throw ErrorException if denominator is 0.\n * @throw ErrorException if denominator is not within the range of type long.\n */\nBigInteger operator /(const BigInteger& b1, const BigInteger& b2);\n\n/**\n * Returns a new BigInteger that is the remainder of dividing\n * this BigInteger by the given other BigInteger.\n * @throw ErrorException if denominator is 0.\n * @throw ErrorException if denominator is not within the range of type long.\n */\nBigInteger operator %(const BigInteger& b1, const BigInteger& b2);\n\n/**\n * Performs a bitwise AND between this integer and the given other integer,\n * retaining only bits that are set in both.\n */\nBigInteger operator &(const BigInteger& b1, const BigInteger& b2);\n\n/**\n * Performs a bitwise OR between this integer and the given other integer,\n * retaining bits that are set in this integer or the other integer or both.\n */\nBigInteger operator |(const BigInteger& b1, const BigInteger& b2);\n\n/**\n * Performs a bitwise XOR between this integer and the given other integer,\n * retaining bits that are set in this integer or the other integer but not both.\n */\nBigInteger operator ^(const BigInteger& b1, const BigInteger& b2);\n\n/**\n * Returns true if two BigIntegers store the same value.\n */\nbool operator ==(const BigInteger& b1, const BigInteger& b2);\n\n/**\n * Returns true if two BigIntegers do not store the same value.\n */\nbool operator !=(const BigInteger& b1, const BigInteger& b2);\n\n/**\n * Returns true if this BigInteger stores a larger value than the given other one.\n */\nbool operator >(const BigInteger& b1, const BigInteger& b2);\n\n/**\n * Returns true if this BigInteger stores a smaller value than the given other one.\n */\nbool operator <(const BigInteger& b1, const BigInteger& b2);\n\n/**\n * Returns true if this BigInteger stores a value that is\n * greater than or equal to the given other one.\n */\nbool operator >=(const BigInteger& b1, const BigInteger& b2);\n\n/**\n * Returns true if this BigInteger stores a value that is\n * less than or equal to the given other one.\n */\nbool operator <=(const BigInteger& b1, const BigInteger& b2);\n\n/**\n * Reads a BigInteger from the given input stream.\n */\nstd::istream& operator >>(std::istream& input, BigInteger& b);\n\n/**\n * Writes this BigInteger to the given output stream.\n */\nstd::ostream& operator <<(std::ostream& out, const BigInteger& b);\n\n/*\n * Free-standing arithmetic operators between int/long and BigInteger.\n * (Commenting these out because when present they seem to also match double,\n * producing bad results.)\n */\n//BigInteger operator +(long n, const BigInteger& b);\n//BigInteger operator -(long n, const BigInteger& b);\n//BigInteger operator *(long n, const BigInteger& b);\n//BigInteger operator /(long n, const BigInteger& b);\n//BigInteger operator %(long n, const BigInteger& b);\n\n// aliases for BigInteger for those who like abbreviations and lowercase\ntypedef BigInteger BigInt;\ntypedef BigInteger bigint;\n\n#endif // _biginteger_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/util/complex.h",
    "content": "/*\n * File: complex.h\n * ---------------\n * This file exports a type representing complex numbers.\n *\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2017/10/18\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _complex_h\n#define _complex_h\n\n#include <iostream>\n#include <string>\n\n/**\n * A Complex object represents a complex number of the form a + bi.\n */\nclass Complex {\npublic:\n    /**\n     * Constructs a new imaginary number: (a + b * i).\n     */\n    Complex(double a = 0.0, double b = 0.0);\n\n    /**\n     * Returns the absolute value of the complex number.\n     */\n    double abs() const;\n\n    /**\n     * Returns the imaginary value of the complex number.\n     */\n    double imag() const;\n\n    /**\n     * Returns the real value of the complex number.\n     */\n    double real() const;\n\n    /**\n     * Returns a string representation of this complex number,\n     * such as \"4+3i\" or \"-2-4i\" or \"0\".\n     */\n    std::string toString() const;\n\n    /**\n     * Adds two complex numbers and returns\n     * the result as a new complex number.\n     */\n    friend Complex operator +(const Complex& m, const Complex& n);\n\n    /**\n     * Subtracts two complex numbers and returns\n     * the result as a new complex number.\n     */\n    friend Complex operator -(const Complex& m, const Complex& n);\n\n    /**\n     * Multiplies two complex numbers and returns\n     * the result as a new complex number.\n     */\n    friend Complex operator *(const Complex& m, const Complex& n);\n\n    friend std::istream& operator >>(std::istream& out, Complex& c);\n\nprivate:\n    double a;   // real value\n    double b;   // imag value\n};\n\n/**\n * Returns an integer hash code for complex numbers so that they\n * can be stored in HashSet and HashMap collections.\n */\nint hashCode(const Complex& c);\n\n/**\n * These relational operators define a total ordering for complex numbers.\n * Mathematically this is not well-defined, but we provide this simply so\n * that Complex objects can be stored in a Set or Map collection.\n */\nbool operator <(const Complex& c1, const Complex& c2);\nbool operator <=(const Complex& c1, const Complex& c2);\nbool operator >(const Complex& c1, const Complex& c2);\nbool operator >=(const Complex& c1, const Complex& c2);\nbool operator ==(const Complex& c1, const Complex& c2);\nbool operator !=(const Complex& c1, const Complex& c2);\n\n/**\n * Writes the complex number to an output stream.\n */\nstd::ostream& operator <<(std::ostream& out, const Complex& c);\n\n/**\n * Reads a complex number from an output stream.\n */\nstd::istream& operator >>(std::istream& input, Complex& c);\n\n#endif // _complex_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/util/diff.h",
    "content": "/*\n * File: diff.h\n * ------------\n * This file contains declarations of functions that perform a text 'diff'\n * operation to compare two strings and output the differences.\n * \n * @author Marty Stepp\n * @version 2016/10/30\n * - fixed diff flags; added punctuation flag\n * @version 2016/10/28\n * - added DEFAULT_STRICT_FLAGS\n * @version 2016/10/22\n * - added diffPass (for autograder assertDiff)\n * @version 2014/10/14\n * - initial version\n * @since 2014/10/14\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _diff_h\n#define _diff_h\n\n#include <string>\n\nnamespace diff {\nconst std::string NO_DIFFS_MESSAGE = \"No differences found\";\n\nenum DiffFlags {\n    IGNORE_NONE         = 0x0,\n    IGNORE_LEADING      = 0x1,\n    IGNORE_TRAILING     = 0x2,\n    IGNORE_WHITESPACE   = 0x4,\n    IGNORE_BLANKLINES   = 0x8,\n    IGNORE_CASE         = 0x10,\n    IGNORE_NUMBERS      = 0x20,\n    IGNORE_NONNUMBERS   = 0x40,\n    IGNORE_PUNCTUATION  = 0x80,\n    IGNORE_AFTERDECIMAL = 0x100,\n    IGNORE_CHARORDER    = 0x200,\n    IGNORE_LINEORDER    = 0x400,\n    IGNORE_EVERYTHING   = 0x100000\n};\n\nconst int DIFF_STRICT_FLAGS = IGNORE_TRAILING;\nconst int DIFF_DEFAULT_FLAGS = IGNORE_CASE | IGNORE_TRAILING | IGNORE_WHITESPACE | IGNORE_PUNCTUATION;\n\nstd::string diff(std::string s1, std::string s2, int flags = DIFF_DEFAULT_FLAGS);\nbool diffPass(const std::string& s1, const std::string& s2, int flags = DIFF_DEFAULT_FLAGS);\nbool isDiffMatch(const std::string& diffs);\n} // namespace diff\n\n#endif // _diff_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/util/direction.h",
    "content": "/*\n * File: direction.h\n * -----------------\n * This file exports an enumerated type called <code>Direction</code>\n * whose elements are the four compass points: <code>NORTH</code>,\n * <code>EAST</code>, <code>SOUTH</code>, and <code>WEST</code>.\n *\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _direction_h\n#define _direction_h\n\n#include <iostream>\n#include <string>\n\n/**\n * This enumerated type is used to represent the four compass directions.\n */\nenum Direction { NORTH, EAST, SOUTH, WEST };\n\n/**\n * Returns the direction that is to the left of the argument.\n */\nDirection leftFrom(Direction dir);\n\n/**\n * Returns the direction that is to the right of the argument.\n */\nDirection rightFrom(Direction dir);\n\n/**\n * Returns the direction that is opposite to the argument.\n */\nDirection opposite(Direction dir);\n\n/**\n * Returns the name of the direction as a string.\n */\nstd::string directionToString(Direction dir);\n\n/**\n * Overloads the <code>&lt;&lt;</code> operator so that it is able\n * to display <code>Direction</code> values.\n */\nstd::ostream& operator <<(std::ostream& os, const Direction& dir);\n\n/**\n * Overloads the <code>&gt;&gt;</code> operator so that it is able\n * to read <code>Direction</code> values.\n */\nstd::istream& operator >>(std::istream& os, Direction& dir);\n\n/**\n * Overloads the suffix version of the <code>++</code> operator to\n * work with <code>Direction</code> values.  The sole purpose of this\n * definition is to support the idiom\n *\n *<pre>\n *    for (Direction dir = NORTH; dir &lt;= WEST; dir++) ...\n *</pre>\n */\nDirection operator ++(Direction& dir, int);\n\n#endif // _direction_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/util/foreach.h",
    "content": "/*\n * File: foreach.h\n * ---------------\n * This file defines the <code>foreach</code> keyword, which implements\n * a substitute for the range-based <code>for</code> loop from C++11.\n * All iterable classes in the Stanford libraries import this file, so\n * clients don't ordinarily need to do so explicitly.  This version of\n * <code>foreach</code> also supports C++ strings and arrays.\n * \n * @deprecated\n * We do not recommend that clients include this header any more.\n * It is replaced by the better for (type name : collection) syntax in C++11.\n *\n * @version 2014/10/08\n * - removed 'using namespace' statement\n */\n\n#ifndef _foreach_h\n#define _foreach_h\n\n/*\n * Statement: foreach\n * Usage: foreach (type var in collection) { ... }\n * -----------------------------------------------\n * The <code>foreach</code> statement steps through the elements in\n * a collection.  It works correctly with the collection classes in\n * both the Standard Template Library and the Stanford C++ libraries,\n * but can also be used with C++ strings and statically initialized\n * arrays.\n *\n * <p>The following code, for example, prints every element in the\n * string vector <code>lines</code>:\n *\n *<pre>\n *    foreach (string str in lines) {\n *       cout &lt;&lt; str &lt;&lt; endl;\n *    }\n *</pre>\n *\n * Similarly, the following function calculates the sum of the character\n * codes in a string:\n *\n *<pre>\n *    int sumCharacterCodes(string str) {\n *       int sum = 0;\n *       foreach (char ch in str) sum += ch;\n *       return sum;\n *    }\n *</pre>\n *\n * As a simplification when iterating over maps, the <code>foreach</code>\n * macro iterates through the keys rather than the key/value pairs.\n */\n\n/* Private section */\n\n/**********************************************************************/\n/* Note: Everything below this point in the file is logically part    */\n/* of the implementation and should not be of interest to clients.    */\n/**********************************************************************/\n\n#include <iterator>\n#include <map>\n#include <cstddef>\n#include <cstring>\n\n/* These #includes are for files that contain \"in\" as a token */\n\n#include <ios>\n#include <fstream>\n#include <sstream>\n#include \"private/foreachpatch.h\"\n\n/* Redefine the ios constants (one of which is \"in\") */\n\nstatic const std::ios::openmode IOS_APP = std::ios::app;\nstatic const std::ios::openmode IOS_ATE = std::ios::ate;\nstatic const std::ios::openmode IOS_BINARY = std::ios::binary;\nstatic const std::ios::openmode IOS_IN = std::ios::in;\nstatic const std::ios::openmode IOS_OUT = std::ios::out;\nstatic const std::ios::openmode IOS_TRUNC = std::ios::trunc;\n\n/* Private implementation namespace */\n\nnamespace _fe {\nstruct Range {\n    virtual ~Range() { }\n};\n\ntemplate <typename T>\nstruct ArrayRange : Range {\n    ArrayRange(const T *begin, const T *end) : iter(begin), end(end) { }\n    const T *iter;\n    const T *end;\n};\n\ntemplate <typename CType>\nstruct CRange : Range {\n    CRange(const CType& c) :\n        cont(c), iter(cont.begin()), end(cont.end()) { }\n    CType cont;\n    typename CType::iterator iter, end;\n};\n\ntemplate <typename KT, typename VT, typename CT, typename AT>\nstruct MapRange : Range {\n    MapRange(const std::map<KT,VT,CT,AT> & c) :\n        cont(c), iter(cont.begin()), end(cont.end()) { }\n    std::map<KT,VT,CT,AT> cont;\n    typename std::map<KT,VT,CT,AT>::iterator iter, end;\n};\n\n/*\n * The State struct glues together all of these pieces and\n * stores all of the information throughout the loops.\n */\n\nstruct State {\n    State() : state(0), itr(nullptr) { }\n    ~State() { delete itr; }\n    int state;\n    Range *itr;\n};\n\n/* General hook function */\n\ntemplate <typename DowncastType, typename ValueType>\nValueType HookImpl(State& fe) {\n    DowncastType *ip = (DowncastType *) fe.itr;\n    if (ip->iter == ip->end) {\n        fe.state = 2;\n        return ValueType();\n    }\n    fe.state = 1;\n    ValueType vp = *ip->iter;     /* Subtle implementation note:    */\n    ++ip->iter;                   /* Using *ip->iter++ here would   */\n    return vp;                    /* require copying the iterator.  */\n}\n\n/* Foreach implementation for containers */\n\ntemplate <typename CType>\nCRange<CType> *Init(State & fe, const CType & collection) {\n    fe.itr = new CRange<CType>(collection);\n    return (CRange<CType>*) fe.itr;\n}\n\ntemplate <typename CType>\ntypename std::iterator_traits<typename CType::iterator>::value_type\nHook(State & fe, CRange<CType> *) {\n    return HookImpl<CRange<CType>,\n            typename std::iterator_traits<typename CType::iterator>::value_type>(fe);\n}\n\n/* For maps */\n\ntemplate <typename K, typename V, typename C, typename A>\nMapRange<K,V,C,A> *Init(State & fe, const std::map<K,V,C,A> & collection) {\n    fe.itr = new MapRange<K,V,C,A>(collection);\n    return (MapRange<K,V,C,A>*) fe.itr;\n}\n\ntemplate <typename DowncastType, typename ValueType>\nValueType MapHookImpl(State & fe) {\n    DowncastType *ip = (DowncastType *) fe.itr;\n    if (ip->iter == ip->end) {\n        fe.state = 2;\n        return ValueType();\n    }\n    fe.state = 1;\n    ValueType key = ip->iter->first;\n    ++ip->iter;\n    return key;\n}\n\ntemplate <typename K, typename V, typename C, typename A>\nK Hook(State & fe, MapRange<K,V,C,A> *) {\n    return MapHookImpl<MapRange<K,V,C,A>,K>(fe);\n}\n\n/* For C strings */\n\ntemplate <size_t n>\nArrayRange<char> *Init(State & fe, char (&str)[n]) {\n    fe.itr = new ArrayRange<char>(str, str + strlen(str));\n    return (ArrayRange<char>*) fe.itr;\n}\n\ntemplate <size_t n>\nArrayRange<char> *Init(State & fe, const char (&str)[n]) {\n    fe.itr = new ArrayRange<char>(str, str + strlen(str));\n    return (ArrayRange<char>*) fe.itr;\n}\n\n/* For arrays */\n\ntemplate <typename T, size_t n>\nArrayRange<T> *Init(State & fe, T (&arr)[n]) {\n    fe.itr = new ArrayRange<T>(arr, arr + n);\n    return (ArrayRange<T>*) fe.itr;\n}\n\ntemplate <typename T, size_t n>\nArrayRange<T> *Init(State & fe, const T (&arr)[n]) {\n    fe.itr = new ArrayRange<T>(arr, arr + n);\n    return (ArrayRange<T>*) fe.itr;\n}\n\ntemplate <typename T>\nT Hook(State& fe, ArrayRange<T>*) {\n    return HookImpl<ArrayRange<T>, T>(fe);\n}\n\n}\n\n/* The actual foreach and in macros */\n\n#define foreach(arg) \\\n    for (_fe::State _fe; _fe.state < 2; ) \\\n    for (arg)); _fe.state++ == 1; _fe.state = 0)\n\n#define in = _fe::Hook(_fe, _fe.state != 0 ? nullptr : _fe::Init(_fe,\n\n#endif // _foreach_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/util/gmath.h",
    "content": "/*\n * File: gmath.h\n * -------------\n * This file exports several functions for working with graphical\n * geometry along with the mathematical constants <code>PI</code>\n * and <code>E</code>.\n *\n * @version 2018/11/22\n * - added headless mode support\n * - alphabetized methods\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2017/12/12\n * - added floatingPointEqual(a, b, tolerance)\n * @version 2016/10/14\n * - added floatingPointEqual method for comparing floats and doubles\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _gmath_h\n#define _gmath_h\n\n#include <cmath>\n#include <limits>\n\n#ifndef SPL_HEADLESS_MODE\n#define INTERNAL_INCLUDE 1\n#include \"gtypes.h\"\n#endif // SPL_HEADLESS_MODE\n\n#define INTERNAL_INCLUDE 1\n#include \"point.h\"\n#undef INTERNAL_INCLUDE\n\n/**\n * The mathematical constant pi, which is the ratio of the circumference\n * of a circle to its diameter.\n */\nextern const double PI;\n\n/**\n * Constant: E\n * -----------\n * The mathematical constant e, which is the base of natural logarithms.\n */\nextern const double E;\n\n/**\n * Returns the trigonometric cosine of <code>angle</code>, which is\n * expressed in degrees.\n */\ndouble cosDegrees(double angle);\n\n\n/**\n * Returns the number of digits in the given integer in the given base.\n * Defaults to base-10, decimal.\n * @example countDigits(3456) returns 4.\n * @example countDigits(0)    returns 1.\n * @example countDigits(-778) returns 3.\n * @throw ErrorException if base is 0 or negative.\n */\nint countDigits(int n, int base = 10);\n\n/**\n * Returns true if the two given floating-point numbers are \"equal\" to each other,\n * within a given tolerance.\n * Floating-point equality is tricky because of round-off errors, which can cause\n * the numbers to be nearly the same but not identical.\n *\n * See also:\n * http://stackoverflow.com/questions/4548004/how-to-correctly-and-standardly-compare-floats\n */\ntemplate<typename T>\nbool floatingPointEqual(T f1, T f2, T tolerance) {\n    return (std::fabs(f1 - f2) <= tolerance);\n}\n\n/**\n * Returns true if the two given floating-point numbers are \"equal\" to each other.\n * Floating-point equality is tricky because of round-off errors, which can cause\n * the numbers to be nearly the same but not identical.\n *\n * See also:\n * http://stackoverflow.com/questions/4548004/how-to-correctly-and-standardly-compare-floats\n */\ntemplate<typename T>\nbool floatingPointEqual(T f1, T f2) {\n    return floatingPointEqual(f1, f2, /* tolerance */ (T) std::numeric_limits<T>::epsilon() * std::fmax(fabs(f1), fabs(f2)));\n}\n\n/**\n * Returns true if the given floating-point number is \"equal\" to the given integer.\n * Floating-point equality is tricky because of round-off errors, which can cause\n * the numbers to be nearly the same but not identical.\n *\n * See also:\n * http://stackoverflow.com/questions/4548004/how-to-correctly-and-standardly-compare-floats\n */\ntemplate<typename T>\nbool floatingPointEqual(T f1, int f2) {\n    return floatingPointEqual(f1, (T) f2);\n}\n\n/**\n * Returns true if the given floating-point number is \"equal\" to the given integer.\n * Floating-point equality is tricky because of round-off errors, which can cause\n * the numbers to be nearly the same but not identical.\n *\n * See also:\n * http://stackoverflow.com/questions/4548004/how-to-correctly-and-standardly-compare-floats\n */\ntemplate<typename T>\nbool floatingPointEqual(int f1, T f2) {\n    return floatingPointEqual((T) f1, f2);\n}\n\n/**\n * Returns true if the given floating-point number is \"equal\" to the given integer.\n * Floating-point equality is tricky because of round-off errors, which can cause\n * the numbers to be nearly the same but not identical.\n *\n * See also:\n * http://stackoverflow.com/questions/4548004/how-to-correctly-and-standardly-compare-floats\n */\ntemplate<typename T>\nbool floatingPointEqual(T f1, long int f2) {\n    return floatingPointEqual(f1, (T) f2);\n}\n\n/**\n * Returns true if the given floating-point number is \"equal\" to the given integer.\n * Floating-point equality is tricky because of round-off errors, which can cause\n * the numbers to be nearly the same but not identical.\n *\n * See also:\n * http://stackoverflow.com/questions/4548004/how-to-correctly-and-standardly-compare-floats\n */\ntemplate<typename T>\nbool floatingPointEqual(long int f1, T f2) {\n    return floatingPointEqual((T) f1, f2);\n}\n\n/**\n * Returns the trigonometric sine of <code>angle</code>, which is\n * expressed in degrees.\n */\ndouble sinDegrees(double angle);\n\n/**\n * Returns the trigonometric tangent of <code>angle</code>, which is\n * expressed in degrees.\n */\ndouble tanDegrees(double angle);\n\n/**\n * Converts an angle from radians to degrees.\n */\ndouble toDegrees(double radians);\n\n/**\n * Converts an angle from degrees to radians.\n */\ndouble toRadians(double degrees);\n\n/**\n * Returns the angle in degrees from the origin to the specified point.\n * This function takes account of the fact that the graphics coordinate\n * system is flipped in the <i>y</i> direction from the traditional\n * Cartesian plane.\n */\ndouble vectorAngle(double x, double y);\n\n/**\n * Returns the angle in degrees from the origin to the specified point.\n * This function takes account of the fact that the graphics coordinate\n * system is flipped in the <i>y</i> direction from the traditional\n * Cartesian plane.\n */\n#ifndef SPL_HEADLESS_MODE\ndouble vectorAngle(const GPoint& pt);\n#endif // SPL_HEADLESS_MODE\ndouble vectorAngle(const Point& pt);\n\n/**\n * Computes the distance between the origin and the specified point.\n */\ndouble vectorDistance(double x, double y);\n\n/**\n * Computes the distance between the origin and the specified point.\n */\n#ifndef SPL_HEADLESS_MODE\ndouble vectorDistance(const GPoint& pt);\n#endif // SPL_HEADLESS_MODE\ndouble vectorDistance(const Point& pt);\n\n#endif // _gmath_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/util/intrange.h",
    "content": "/*\n * File: intrange.h\n * ----------------\n * This file exports the <code>IntRange</code> class, which represents an iterable\n * contiguous range of integers that can be processed using a for-each loop.\n * The range is not stored all in memory, so it does not require O(N) space.\n *\n * See intrange.cpp for the implementation of each member.\n *\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2018/08/25\n * - renamed from range.h to intrange.h\n * @version 2018/03/12\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _intrange_h\n#define _intrange_h\n\n#include <iostream>\n#include <iterator>\n#include <limits>\n\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"point.h\"\n#undef INTERNAL_INCLUDE\n\n/**\n * An IntRange is an iterable contiguous range of integers.\n * It can be processed using a for-each loop.\n * The integers are not actually all stored in this object, so it does not\n * require O(N) memory usage.\n */\nclass IntRange {\nprivate:\n    /**\n     * Internal iterator for looping over a range.\n     */\n    class IntRangeIterator : public std::iterator<std::random_access_iterator_tag, int> {\n    private:\n        const IntRange* r;\n        int val;\n\n    public:\n        IntRangeIterator(const IntRange* r, bool end) {\n            this->r = r;\n            this->val = (end ? r->max() + 1 : r->min());\n        }\n\n        IntRangeIterator(const IntRangeIterator& itr)\n            : r(itr.r),\n              val(itr.val) {\n            // empty\n        }\n\n        IntRangeIterator& operator ++() {\n            val++;\n            if (!r->contains(val)) {\n                val = r->max() + 1;\n            }\n            return *this;\n        }\n\n        IntRangeIterator operator ++(int) {\n            IntRangeIterator copy(*this);\n            operator++();\n            return copy;\n        }\n\n        IntRangeIterator& operator --() {\n            val--;\n            return *this;\n        }\n\n        IntRangeIterator operator --(int) {\n            IntRangeIterator copy(*this);\n            operator--();\n            return copy;\n        }\n\n        bool operator ==(const IntRangeIterator& rhs) {\n            return r == rhs.r && val == rhs.val;\n        }\n\n        bool operator !=(const IntRangeIterator& rhs) {\n            return !(*this == rhs);\n        }\n\n        bool operator <(const IntRangeIterator& rhs) {\n            if (r != rhs.r) {\n                error(\"Range Iterator::operator <: Iterators are in different ranges\");\n            }\n            return val < rhs.val;\n        }\n\n        bool operator <=(const IntRangeIterator& rhs) {\n            if (r != rhs.r) {\n                error(\"Range Iterator::operator <=: Iterators are in different ranges\");\n            }\n            return val <= rhs.val;\n        }\n\n        bool operator >(const IntRangeIterator& rhs) {\n            if (r != rhs.r) {\n                error(\"Range Iterator::operator >: Iterators are in different ranges\");\n            }\n            return val > rhs.val;\n        }\n\n        bool operator >=(const IntRangeIterator& rhs) {\n            if (r != rhs.r) {\n                error(\"Range Iterator::operator >=: Iterators are in different ranges\");\n            }\n            return val >= rhs.val;\n        }\n\n        IntRangeIterator operator +(const int& rhs) {\n            return IntRangeIterator(r, val + rhs);\n        }\n\n        IntRangeIterator operator +=(const int& rhs) {\n            val += rhs;\n            return *this;\n        }\n\n        IntRangeIterator operator -(const int& rhs) {\n            return IntRangeIterator(r, val - rhs);\n        }\n\n        IntRangeIterator operator -=(const int& rhs) {\n            val -= rhs;\n            return *this;\n        }\n\n        int operator -(const IntRangeIterator& rhs) {\n            if (r != rhs.r) {\n                error(\"Range Iterator::operator -: Iterators are in different ranges\");\n            }\n            return val - rhs.val;\n        }\n\n        int operator *() {\n            return val;\n        }\n\n        int* operator ->() {\n            return &val;\n        }\n\n        int operator [](int k) {\n            return val + k;\n        }\n    };\n\n    int _min;\n    int _max;\n\n    friend std::istream& operator >>(std::istream& input, IntRange& r);\n\npublic:\n    /**\n     * Constructs a range from 0 (inclusive) of the given length.\n     * Its endpoints are [0 .. length-1].\n     */\n    IntRange(int length = 0);\n\n    /**\n     * Constructs a range from minValue to maxValue (inclusive).\n     */\n    IntRange(int minValue, int maxValue);\n\n    /**\n     * Returns an iterator over the elements of this range.\n     */\n    IntRangeIterator begin() const;\n\n    /**\n     * Returns true if the given integer is within the bounds of this range.\n     */\n    bool contains(int n) const;\n\n    /**\n     * Returns true if the given range is entirely contained within this range.\n     */\n    bool contains(const IntRange& r) const;\n\n    /**\n     * Returns true if this range contains no integers, meaning that its max\n     * is less than its min.\n     * Equivalent to isEmpty.\n     */\n    bool empty() const;\n\n    IntRangeIterator end() const;\n\n//    bool intersects(const Range& r) const;\n\n    /**\n     * Returns true if this range contains no integers, meaning that its max\n     * is less than its min.\n     * Equivalent to empty.\n     */\n    bool isEmpty() const;\n\n    /**\n     * Returns the number of integers in the range.\n     * Equivalent to size.\n     */\n    int length() const;\n\n    /**\n     * Returns the maximum value in the range, inclusive.\n     */\n    int max() const;\n\n    /**\n     * Returns the minimum value in the range.\n     */\n    int min() const;\n\n    /**\n     * Returns the number of integers in the range.\n     * Equivalent to length.\n     */\n    int size() const;\n\n    /**\n     * Returns a string representation of this range,\n     * such as \"[1 .. 10]\".\n     */\n    std::string toString() const;\n};\n\n/**\n * Returns an integer hash code for this range.\n */\nint hashCode(const IntRange& r);\n\n/**\n * Convenience functions for constructing a range.\n * See Range constructor.\n */\nIntRange range(int length = 0);\nIntRange range(int min, int max);\n\n/**\n * Relational operators for comparing ranges.\n * Ranges are ordered by their min values with ties broken by max values.\n */\nbool operator <(const IntRange& r1, const IntRange& r2);\nbool operator <=(const IntRange& r1, const IntRange& r2);\nbool operator ==(const IntRange& r1, const IntRange& r2);\nbool operator !=(const IntRange& r1, const IntRange& r2);\nbool operator >(const IntRange& r1, const IntRange& r2);\nbool operator >=(const IntRange& r1, const IntRange& r2);\n\n/**\n * Writes the given range to the given output stream in its toString format.\n */\nstd::ostream& operator <<(std::ostream& out, const IntRange& r);\n\n/**\n * Reads the given range to the given input stream in its toString format.\n */\nstd::istream& operator >>(std::istream& input, IntRange& r);\n\n\n/////////////////////////////////////////////////////////////////////\n// IntRange2D\n/////////////////////////////////////////////////////////////////////\n\n/**\n * An IntRange2D is an iterable contiguous 2-dimensional range of integers.\n * It can be processed using a for-each loop to emit the range as a series\n * of Point objects in y-major (default) or x-major order.\n * The points are not actually all stored in this object, so it does not\n * require O(WxH) memory usage.\n */\nclass IntRange2D {\nprivate:\n    /**\n     * Internal iterator for looping over a 2D range.\n     */\n    class IntRange2DIterator : public std::iterator<std::input_iterator_tag, Point> {\n    private:\n        const IntRange2D* r;\n        int x;\n        int y;\n\n    public:\n        IntRange2DIterator(const IntRange2D* r, bool end) {\n            this->r = r;\n            if (end) {\n                this->x = r->maxX() + 1;\n                this->y = r->maxY() + 1;\n            } else {\n                this->x = r->minX();\n                this->y = r->minY();\n            }\n        }\n\n        IntRange2DIterator(const IntRange2DIterator& itr)\n            : r(itr.r),\n              x(itr.x),\n              y(itr.y) {\n            // empty\n        }\n\n        IntRange2DIterator& operator ++() {\n            if (r->isYMajor()) {\n                x++;\n                if (x > r->maxX()) {\n                    x = r->minX();\n                    y++;\n                }\n            } else {\n                y++;\n                if (y > r->maxY()) {\n                    y = r->minY();\n                    x++;\n                }\n            }\n            if (!r->contains(x, y)) {\n                x = r->maxX() + 1;\n                y = r->maxY() + 1;\n            }\n            return *this;\n        }\n\n        IntRange2DIterator operator ++(int) {\n            IntRange2DIterator copy(*this);\n            operator++();\n            return copy;\n        }\n\n        IntRange2DIterator& operator --() {\n            if (r->isYMajor()) {\n                x--;\n                if (x < r->minX()) {\n                    x = r->maxX();\n                    y--;\n                }\n            } else {\n                y--;\n                if (y < r->minY()) {\n                    y = r->maxY();\n                    x--;\n                }\n            }\n            return *this;\n        }\n\n        IntRange2DIterator operator --(int) {\n            IntRange2DIterator copy(*this);\n            operator--();\n            return copy;\n        }\n\n        bool operator ==(const IntRange2DIterator& rhs) const {\n            return r == rhs.r && x == rhs.x && y == rhs.y;\n        }\n\n        bool operator !=(const IntRange2DIterator& rhs) const {\n            return !(*this == rhs);\n        }\n\n        bool operator <(const IntRange2DIterator& rhs) const {\n            if (r != rhs.r) {\n                error(\"Range2D Iterator::operator <: Iterators are in different ranges\");\n            }\n            return x < rhs.x || (x == rhs.x && y < rhs.y);\n        }\n\n        bool operator <=(const IntRange2DIterator& rhs) const {\n            if (r != rhs.r) {\n                error(\"Range2D Iterator::operator <=: Iterators are in different ranges\");\n            }\n            return (*this < rhs) || (*this == rhs);\n        }\n\n        bool operator >(const IntRange2DIterator& rhs) const {\n            if (r != rhs.r) {\n                error(\"Range2D Iterator::operator >: Iterators are in different ranges\");\n            }\n            return (rhs < *this);\n        }\n\n        bool operator >=(const IntRange2DIterator& rhs) const {\n            if (r != rhs.r) {\n                error(\"Range2D Iterator::operator >=: Iterators are in different ranges\");\n            }\n            return (*this > rhs) || (*this == rhs);\n        }\n\n        Point operator *() const {\n            return Point(x, y);\n        }\n\n        Point* operator ->() const {\n            return new Point(x, y);\n        }\n    };\n\n    int _minX;\n    int _minY;\n    int _maxX;\n    int _maxY;\n    bool _yMajor;\n\n    friend std::istream& operator >>(std::istream& input, IntRange2D& r);\n\npublic:\n    /**\n     * Constructs a 2D range of the given width and height, default 0.\n     * Its bounds will be [0,0 .. w-1,h-1] inclusive.\n     * The yMajor parameter indicates whether the range will emit its members\n     * in y-major (default) or x-major order.\n     */\n    IntRange2D(int width = 0, int height = 0, bool yMajor = true);\n\n    /**\n     * Constructs a 2D range between the given min/max locations, inclusive.\n     * The yMajor parameter indicates whether the range will emit its members\n     * in y-major (default) or x-major order.\n     */\n    IntRange2D(int minX, int minY, int maxX, int maxY, bool yMajor = true);\n\n    /**\n     * Returns an iterator over the elements of this 2D range.\n     */\n    IntRange2DIterator begin() const;\n\n    /**\n     * Returns true if the given x/y location is contained in this 2D range.\n     */\n    bool contains(int x, int y) const;\n\n    /**\n     * Returns true if the given 2D range is entirely contained in this 2D range.\n     */\n    bool contains(const IntRange2D& r) const;\n\n    /**\n     * Returns true if this range does not contain any integers in one dimension\n     * or the other or both (if max X/Y is less than min X/Y).\n     * Equivalent to isEmpty.\n     */\n    bool empty() const;\n\n    /**\n     * Returns an iterator at the end of the elements of this 2D range.\n     */\n    IntRange2DIterator end() const;\n\n    /**\n     * Returns the range of y-values in this 2D range.\n     * For example, in the range [0,0 .. 4,7], the height is 8.\n     */\n    int height() const;\n\n//    bool intersects(const Range2D& r) const;\n\n    /**\n     * Returns true if this range does not contain any integers in one dimension\n     * or the other or both (if max X/Y is less than min X/Y).\n     * Equivalent to empty.\n     */\n    bool isEmpty() const;\n\n    /**\n     * Returns true if this range should emit its integers in y-major order\n     * as passed to the constructor (default true).\n     */\n    bool isYMajor() const;\n\n    /**\n     * Returns the maximum x-value in this 2D range.\n     */\n    int maxX() const;\n\n    /**\n     * Returns the maximum y-value in this 2D range.\n     */\n    int maxY() const;\n\n    /**\n     * Returns the minimum x-value in this 2D range.\n     */\n    int minX() const;\n\n    /**\n     * Returns the minimum y-value in this 2D range.\n     */\n    int minY() const;\n\n    /**\n     * Returns the total number of integers in this 2D range.\n     * For example, in the range [0,0 .. 4,7], the size is 5x8 = 40.\n     */\n    int size() const;\n\n    /**\n     * Returns the range of x-values in this 2D range.\n     * For example, in the range [0,0 .. 4,7], the height is 5.\n     */\n    int width() const;\n\n    /**\n     * Returns a string representation of this 2D range,\n     * such as \"[0,0 .. 4,7]\".\n     */\n    std::string toString() const;\n};\n\n/**\n * Returns an integer hash code of this 2D range.\n */\nint hashCode(const IntRange2D& r);\n\n/**\n * Convenience function for constructing a 2D range.\n * See Range2D constructors.\n */\nIntRange2D range2d(int width = 0, int height = 0, bool yMajor = false);\n\n/**\n * Convenience function for constructing a 2D range.\n * See Range2D constructors.\n */\nIntRange2D range2d(int minX, int minY, int maxX, int maxY, bool yMajor = false);\n\n/**\n * Relational operators for comparing 2D ranges.\n * Ranges are ordered by their minX values, then minY, then maxX, then maxY.\n */\nbool operator <(const IntRange2D& r1, const IntRange2D& r2);\nbool operator <=(const IntRange2D& r1, const IntRange2D& r2);\nbool operator ==(const IntRange2D& r1, const IntRange2D& r2);\nbool operator !=(const IntRange2D& r1, const IntRange2D& r2);\nbool operator >(const IntRange2D& r1, const IntRange2D& r2);\nbool operator >=(const IntRange2D& r1, const IntRange2D& r2);\n\n/**\n * Writes the given 2D range to the given output stream in its toString format.\n */\nstd::ostream& operator <<(std::ostream& out, const IntRange2D& r);\n\n/**\n * Reads the given 2D range to the given input stream in its toString format.\n */\nstd::istream& operator >>(std::istream& input, IntRange2D& r);\n\n#endif // _intrange_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/util/managed.h",
    "content": "/*\n * managed.h\n * ---------\n * This file defines a template class named Managed that can be used to define\n * classes that perform checks on how their objects are allocated.\n * This can be used to write, for example, node classes that give better\n * error messages to the user when double-freed or stack-allocated.\n *\n * @author Marty Stepp\n * @version 2019/05/13\n * - better error output; default false for stack/non-new allocation\n * @version 2019/04/16\n * - bug fixes for WIN64\n * @version 2019/04/13\n * - bug fix for s_freed compiler error\n * - fixed internal includes\n * @version 2018/12/04\n * - initial version\n */\n\n#ifndef _managed_h\n#define _managed_h\n\n#include <cstddef>\n#include <typeinfo>\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#define INTERNAL_INCLUDE 1\n#include \"map.h\"\n#define INTERNAL_INCLUDE 1\n#include \"memory.h\"\n#define INTERNAL_INCLUDE 1\n#include \"set.h\"\n#define INTERNAL_INCLUDE 1\n#include \"strlib.h\"\n#undef INTERNAL_INCLUDE\n\n/**\n * The Managed template class can be used to define classes that perform checks\n * on how their objects are allocated. For example, in a Managed subclass you\n * can forbid objects from being allocated on the stack\n */\ntemplate <typename T>\nclass Managed {\npublic:\n    /**\n     * Overloaded new operator tracks heap memory allocated to newly created\n     * objects.\n     */\n    void* operator new(size_t n) {\n        void* p = ::operator new(n);\n        s_allocatedUsingNew().add(p);\n        s_deleted().remove(p);\n        return p;\n    }\n\n    /**\n     * Overloaded delete operator tracks what pointers were deleted and can\n     * print errors if the client, for example, tries to delete the same pointer\n     * twice by mistake.\n     */\n    void operator delete(void* p) {\n        ::operator delete(p);\n        if (s_deleted().contains(p)) {\n            error(\"You are trying to delete the same pointer twice: \" + pointerToString(p));\n        }\n//        if (!s_allocated().contains(p)) {\n//            error(\"You are trying to delete a pointer that was never allocated: \" + pointerToString(p));\n//        }\n        s_allocated().remove(p);\n        s_deleted().add(p);\n        s_deleteCount()++;\n    }\n\nprotected:\n    /**\n     * Returns the total number of objects of this type that have been created.\n     */\n    static int getInstanceCount() {\n        return s_instanceCount();\n    }\n\n    /**\n     * Returns the total number of objects of this type that have been deleted.\n     */\n    static int getDeleteCount() {\n        return s_deleteCount();\n    }\n\n    /**\n     * Returns the total number of objects of this type that seem to be memory\n     * leaks (the number of objects created minus the number deleted).\n     */\n    static int getLeakCount() {\n        return getInstanceCount() - getDeleteCount();\n    }\n\n    /**\n     * Returns true if this type has a probable memory leak\n     * (seems to have some objects that have been created but not freed).\n     */\n    static bool hasMemoryLeak() {\n        return getLeakCount() > 0;\n    }\n\n    /**\n     * Sets the numbers of objects created and deleted back to zero.\n     * This would be used by autograder programs between leak tests.\n     */\n    static void resetInstanceAndFreeCounts() {\n        s_instanceCount() = 0;\n        s_deleteCount() = 0;\n    }\n\n    /**\n     * Sets whether this type allows its objects to be allocated on the heap.\n     * Default true.\n     */\n    static void setHeapAllocationAllowed(bool allowed = true) {\n        s_heapAllowed() = allowed;\n    }\n\n    /**\n     * Sets whether this type allows its objects to be allocated on the heap\n     * but without the use of the 'new' operator.\n     * This is to handle the subtle case of an outer object containing this\n     * object, where the outer object is heap-allocated but the inner object\n     * is declared as an object rather than as a pointer.\n     * Setting this to false ensures that all uses of this class must be done\n     * via pointers and new rather than declaring objects directly.\n     * Default true.\n     */\n    static void setHeapAllocationWithoutNewAllowed(bool allowed = true) {\n        s_heapWithoutNewAllowed() = allowed;\n    }\n\n    /**\n     * Sets whether this type allows its objects to be allocated on the stack,\n     * such as local variables declared in functions.\n     */\n    static void setStackAllocationAllowed(bool allowed) {\n        s_stackAllowed() = allowed;\n    }\n\n    /**\n     * Sets whether this type allows its objects to be allocated in static\n     * storage, such as static variables declared in functions.\n     */\n    static void setStaticAllocationAllowed(bool allowed) {\n        s_staticAllowed() = allowed;\n    }\n\n    /**\n     * Constructor that logs the construction of this object for later use.\n     */\n    Managed() {\n        notifyOfConstruction(this);\n    }\n\n    /**\n     * Called when a new object is constructed.\n     * @throw ErrorException if this object is created in an illegal way.\n     */\n    static void notifyOfConstruction(void* const p) {\n        checkAllocation(p);\n        s_allocated().add(p);\n        s_instanceCount()++;\n    }\n\n    /**\n     * Called when an object is deleted.\n     */\n    static void notifyOfDelete(T* const /*p*/) {\n        // empty\n    }\n\nprivate:\n    /**\n     * Checks how this object was allocated.\n     * @throw ErrorException if object was allocated in an illegal way.\n     */\n    static void checkAllocation(void* const p) {\n        if (s_allocatedUsingNew().contains(p)) {\n            // this must be a heap/new-allocated pointer; always allowed\n            return;\n        }\n\n        // figure out which region this object was allocated into\n        uintptr_t stackDist, heapDist, staticDist;\n        stanfordcpplib::memory::computeMemoryDistances(p, stackDist, heapDist, staticDist);\n        if (stackDist < heapDist && stackDist < staticDist) {\n            // closest to stack pointer; probably a stack-allocated object\n            if (!s_stackAllowed()) {\n                std::string type = typeName();\n                error(std::string(\"Stack allocation not allowed for type: \") + type\n                      + \" (must allocate objects of this type using pointers and 'new')\");\n            }\n        } else if (heapDist < stackDist && heapDist < staticDist) {\n            // closest to various heap allocations; probably a heap-allocated object\n            if (!s_heapAllowed()) {\n                std::string type = typeName();\n                error(std::string(\"Heap allocation not allowed for type: \") + type\n                      + \" (must allocate objects of this type on the stack, without pointers or 'new')\");\n            } else if (!s_heapWithoutNewAllowed() && !s_allocatedUsingNew().contains(p)) {\n                std::string type = typeName();\n                error(std::string(\"Invalid allocation for type: \") + type\n                      + \" (must allocate objects of this type using pointers and 'new')\");\n            }\n        } else {\n            // closest to static storage; probably a statically-allocated object\n            if (!s_staticAllowed()) {\n                std::string type = typeName();\n                error(std::string(\"Static/global variable allocation not allowed for type: \") + type\n                      + \" (must allocate objects of this type using pointers and 'new')\");\n            }\n        }\n    }\n\n    /**\n     * A set of pointers of this type that are currently allocated.\n     * @private\n     */\n    static Set<void*>& s_allocated() {\n        static Set<void*> _s_allocated;\n        return _s_allocated;\n    }\n\n    /**\n     * A set of pointers of this type that are currently allocated using the\n     * 'new' operator.\n     * @private\n     */\n    static Set<void*>& s_allocatedUsingNew() {\n        static Set<void*> _s_allocatedUsingNew;\n        return _s_allocatedUsingNew;\n    }\n\n    /**\n     * A set of pointers of this type that have been deleted.\n     * @private\n     */\n    static Set<void*>& s_deleted() {\n        static Set<void*> _s_deleted;\n        return _s_deleted;\n    }\n\n    /**\n     * A count of how many pointers of this type have been deleted.\n     * @private\n     */\n    static int& s_deleteCount() {\n        static int _s_deleteCount = 0;\n        return _s_deleteCount;\n    }\n\n    /**\n     * A count of how many objects of this type have been allocated.\n     * @private\n     */\n    static int& s_instanceCount() {\n        static int _s_instanceCount = 0;\n        return _s_instanceCount;\n    }\n\n    /**\n     * Whether this type allows allocating objects on the heap.\n     * @private\n     */\n    static bool& s_heapAllowed() {\n        static bool _s_heapAllowed = true;\n        return _s_heapAllowed;\n    }\n\n    /**\n     * Whether this type allows allocating objects on the heap\n     * without the 'new' operator.\n     * @private\n     */\n    static bool& s_heapWithoutNewAllowed() {\n        static bool _s_heapWithoutNewAllowed = false;\n        return _s_heapWithoutNewAllowed;\n    }\n\n    /**\n     * Whether this type allows allocating objects on the stack.\n     * @private\n     */\n    static bool& s_stackAllowed() {\n        static bool _s_stackAllowed = false;\n        return _s_stackAllowed;\n    }\n\n    /**\n     * Whether this type allows allocating objects in static storage.\n     * @private\n     */\n    static bool& s_staticAllowed() {\n        static bool _s_staticAllowed = false;\n        return _s_staticAllowed;\n    }\n\n    /**\n     * Returns a string representing the name of this type.\n     * @private\n     */\n    static std::string typeName() {\n        const std::type_info& type = typeid(T);\n        std::string name = type.name();\n\n// TODO: demangle names using the function below\n//       (I didn't implement this yet because the platform-dependent issues are tricky)\n//        int status;\n//        char* demangled = abi::__cxa_demangle(name, /* buffer */ nullptr,\n//                                              /* length pointer */ nullptr, &status);\n//        if (status == 0 && demangled) {\n//            symname = demangled;\n//        }\n\n        // some type names start with weird chars like underscores or numbers\n        while (!name.empty() && !isalpha(name[0])) {\n            name.erase(0, 1);\n        }\n\n        return name;\n    }\n};\n\n#endif // _managed_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/util/memory.h",
    "content": "/*\n * memory.h\n * --------\n * This file declares utility functions dealing with memory regions and\n * allocation.\n *\n * @author Marty Stepp\n * @version 2019/04/16\n * - bug fixes for WIN64\n * @version 2018/12/04\n * - initial version\n */\n\n#ifndef _memory_h\n#define _memory_h\n\n#include <cstdint>\n\nnamespace stanfordcpplib {\nnamespace memory {\n\n/**\n * Fills in the given long int parameters with the distance from the given\n * pointer p to the stack, the heap, and the static storage area.\n * We work under the assumption that the smallest of these distances\n * represents the area in which p was allocated.\n */\nvoid computeMemoryDistances(\n        void* const p,\n        uintptr_t& stackDist,\n        uintptr_t& heapDist,\n        uintptr_t& staticDist);\n\n/**\n * Returns true if the given pointer points to memory on the heap.\n * (Note that this is not really possible to do in a cross-platform way for\n * all general cases; we provide a best effort that should work for most\n * common allocation cases.)\n */\nbool isOnHeap(void* const p);\n\n/**\n * Returns true if the given pointer points to memory on the stack.\n * (Note that this is not really possible to do in a cross-platform way for\n * all general cases; we provide a best effort that should work for most\n * common allocation cases.)\n */\nbool isOnStack(void* const p);\n\n/**\n * Returns true if the given pointer points to memory in static storage.\n * (Note that this is not really possible to do in a cross-platform way for\n * all general cases; we provide a best effort that should work for most\n * common allocation cases.)\n */\nbool isOnStatic(void* const p);\n\n} // namespace memory\n} // namespace stanfordcpplib\n\n#endif // _memory_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/util/note.h",
    "content": "/*\n * File: note.h\n * ------------\n * This file defines a class named Note that can play musical notes.\n *\n * @author Marty Stepp\n * @version 2016/09/26\n * - initial version\n * @since 2016/09/26\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _note_h\n#define _note_h\n\n#include <iostream>\n#include <string>\n\n/**\n * Constant for the minimum legal value that an octave can have.\n */\n#define OCTAVE_MIN 1\n\n/**\n * Constant for the maximum legal value that an octave can have.\n */\n#define OCTAVE_MAX 10\n\n/**\n * Should Note objects print a message to the console as they play?\n */\n#define NOTE_DEBUG false\n\n/**\n * Each Note object represents a musical note or rest.\n * A Note encapsulates a pitch (A-G), a duration in seconds, an octave,\n * an accidental (sharp, flat, or natural), and a flag of whether it is the\n * start/end of a repeated section or not.\n * A song or melody can be thought of as a list or array of Note objects.\n */\nclass Note {\npublic:\n    /**\n     * Represents a musical pitch from A-G or rest.\n     */\n    enum Pitch {A, B, C, D, E, F, G, R};\n\n    /**\n     * Represents a musical accidental: sharp, natural, or flat.\n     */\n    enum Accidental {SHARP, NATURAL, FLAT};\n\n    /**\n     * Constructs a Note with the information contained in the given line.\n     * @param line a line of input data such as \"0.2 C 4 NATURAL false\" or \"0.4 R false\" for a rest\n     * @throws an error if line is empty.\n     * @throws an error if duration is negative or octave is not\n     *         between OCTAVE_MIN and OCTAVE_MAX inclusive.\n     */\n    Note(std::string line);\n\n    /**\n     * Constructs a Note with the given information.\n     * @param duration Note's duration in seconds.\n     * @param pitch Note's pitch from A through G, or R for a rest.\n     * @param octave Note's octave from OCTAVE_MIN through OCTAVE_MAX inclusive.\n     * @param accidental Note's accidental from SHARP, FLAT, or NATURAL.\n     * @param repeat true if this note starts/ends a repeated section.\n     * @throws an error if any value passed is illegal.\n     */\n    Note(double duration = 0.0, Pitch pitch = R, int octave = OCTAVE_MIN, Accidental accidental = NATURAL, bool repeat = false);\n\n    /**\n     * Returns true if note2 has the same state as this Note object; otherwise false.\n     * @param o the object to compare against\n     */\n    bool equals(const Note& note2) const;\n\n    /**\n     * Returns this Note's accidental value of SHARP, FLAT, or NATURAL.\n     * The accidental value is meaningless for a rest; this method will\n     * return NATURAL by default if called on a rest.\n     * @return this Note's accidental value of SHARP, FLAT, or NATURAL.\n     */\n    Accidental getAccidental() const;\n\n    /**\n     * Returns this Note's duration in seconds.\n     * @return this Note's duration in seconds.\n     */\n    double getDuration() const;\n\n    /**\n     * Returns this Note's octave.\n     * The octave value is meaningless for a rest; this method will return\n     * OCTAVE_MIN + 1 by default if called on a rest.\n     * @return this Note's octave from OCTAVE_MIN to OCTAVE_MAX.\n     */\n    int getOctave() const;\n\n    /**\n     * Returns this Note's pitch value of A-G or R for a rest.\n     * @return this Note's pitch value of A-G or R for a rest.\n     */\n    Pitch getPitch() const;\n\n    /**\n     * Returns true if this Note is the start or end of a repeated section.\n     * @return true if this Note is the start or end of a repeated section,\n     *         otherwise false.\n     */\n    bool isRepeat() const;\n\n    /**\n     * Returns true if this Note is a rest.  Equivalent to checking whether\n     * this note's pitch is Pitch.R.  Provided for convenience.\n     * @return true if this Note is a rest, otherwise false.\n     */\n    bool isRest() const;\n\n    /**\n     * Plays this note through the underlying audio system.\n     * Also may print a message to the system console for debugging.\n     * If the audio system is muted or paused, the note may not play.\n     */\n    void play() const;\n\n    /**\n     * Sets this Note's accidental value to be the given value: SHARP, FLAT, or NATURAL.\n     * The accidental value is meaningless for a rest, but the Note object still\n     * maintains an accidental value internally (initially NATURAL)\n     * which is ignored.\n     * @param accidental Note's accidental from SHARP, FLAT, or NATURAL.\n     * @throws an error if the accidental value passed is illegal.\n     */\n    void setAccidental(Accidental accidental);\n\n    /**\n     * Sets this Note's duration in seconds to be the given value.\n     * @param duration Note's duration in seconds.\n     * @throws an error if duration is negative.\n     */\n    void setDuration(double duration);\n\n    /**\n     * Sets this Note's octave to be the given value.\n     * The octave value is meaningless for a rest, but the Note object still\n     * maintains an octave value internally (initially OCTAVE_MIN + 1)\n     * which is ignored.\n     * @param octave Note's octave from OCTAVE_MIN through OCTAVE_MAX inclusive.\n     * @throws an error if octave is not between OCTAVE_MIN and OCTAVE_MAX inclusive.\n     */\n    void setOctave(int octave);\n\n    /**\n     * Sets this Note's pitch to be the given value.\n     * @param pitch Note's pitch from A through G, or R for a rest.\n     * @throws an error if pitch is invalid.\n     */\n    void setPitch(Pitch pitch);\n\n    /**\n     * Sets this Note's repeat flag to be the given value.\n     * @param repeat true to indicate that this note is the start/end of a\n     *               repeated section, or false if not.\n     */\n    void setRepeat(bool repeat);\n\n    /**\n     * Returns a string representation of this note.\n     * @return A string such as \"0.4 C 5 NATURAL false\".\n     */\n    std::string toString() const;\n\nprivate:\n    // member variables (a.k.a. instance variables; fields)\n    double duration;\n    Pitch pitch;\n    int octave;\n    Accidental accidental;\n    bool repeat;\n};\n\n/**\n * Compares the given two Note objects for equality.\n */\nbool operator ==(const Note& note1, const Note& note2);\n\n/**\n * Compares the given two Note objects for inequality.\n */\nbool operator !=(const Note& note1, const Note& note2);\n\nstd::ostream& operator <<(std::ostream& out, const Note& note);\n\n/**\n * Returns a unique integer hash code for the given Note object.\n */\nint hashCode(const Note& note);\n\n#endif // _note_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/util/observable.h",
    "content": "/*\n * File: observable.h\n * ------------------\n * This file defines an abstract superclass named <code>Observable</code> that\n * allows objects to store lists of observers, which are other objects that are\n * notified when some part of the state of the observable object changes.\n * This is an example of the classic Observer/Observable design pattern.\n *\n * @author Marty Stepp\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2017/10/25\n * - added addObserver/removeObserver overloads that accept reference param\n * @version 2016/11/20\n * - refactored to use template for event type\n * @version 2014/10/08\n * - removed 'using namespace' statement\n * - fixed bug in error string on removeObserver (said 'addObserver')\n * @version 2014/03/09\n * - initial version\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _observable_h\n#define _observable_h\n\n#include <set>\n\n#define INTERNAL_INCLUDE 1\n#include \"error.h\"\n#undef INTERNAL_INCLUDE\n\n// forward declarations\ntemplate <class T>\nclass Observer;\n\n/**\n * This abstract superclass allows objects to store lists of observers,\n * which are other objects that would like to be notified when some part of the\n * state of the observable object changes.\n *\n * The intended usage is that you should extend Observable in the object you\n * want to be watched, then call notifyObservers in its code at appropriate\n * places.  Then create some other object that extends Observer and defines an\n * update method, and attach it to the Observable so it will be notified.\n */\ntemplate <typename T>\nclass Observable {\npublic:\n    /**\n     * Adds the given observer object to this observable object's internal list\n     * of observers.  The observer's update method will be called when the\n     * notifyObservers method is called afterward.\n     * Precondition: obs != nullptr\n     */\n    void addObserver(Observer<T>* obs);\n\n    /**\n     * Adds the given observer object to this observable object's internal list\n     * of observers.  The observer's update method will be called when the\n     * notifyObservers method is called afterward.\n     */\n    void addObserver(Observer<T>& obs);\n\n    /**\n     * Calls the update method of all observers that have been added previously\n     * to this observable object.\n     * The given argument can be passed to provide extra information to the\n     * observers if necessary.  If no argument is passed, nullptr is used.\n     */\n    void notifyObservers(T arg = T());\n\n    /**\n     * Removes the given observer object from this observable object's internal\n     * list of observers.  The observer will no longer be notified.\n     */\n    void removeObserver(Observer<T>* obs);\n\n    /**\n     * Removes the given observer object from this observable object's internal\n     * list of observers.  The observer will no longer be notified.\n     */\n    void removeObserver(Observer<T>& obs);\n\nprivate:\n    // a list of observers to notify when notifyObservers is called\n    std::set<Observer<T>*> m_observers;\n};\n\n/**\n * An object that wishes to be notified when the state of an observable object\n * changes.\n */\ntemplate <typename T>\nclass Observer {\npublic:\n    /**\n     * Called by an Observable to inform this observer that its state changed.\n     * The 'obs' parameter will be a pointer to the observable object itself\n     * on which the state change occurred.  The 'arg' parameter will be\n     * the extra information passed by the Observable when it called\n     * notifyObservers, if any.\n     */\n    virtual void update(Observable<T>* obs, const T& arg = T()) = 0;\n};\n\ntemplate <typename T>\nvoid Observable<T>::addObserver(Observer<T>* obs) {\n    if (!obs) {\n        error(\"Observable::addObserver: null observer passed\");\n    }\n    m_observers.insert(obs);\n}\n\ntemplate <typename T>\nvoid Observable<T>::addObserver(Observer<T>& obs) {\n    addObserver(&obs);\n}\n\ntemplate <typename T>\nvoid Observable<T>::notifyObservers(T arg) {\n    for (Observer<T>* obs : m_observers) {\n        obs->update(this, arg);\n    }\n}\n\ntemplate <typename T>\nvoid Observable<T>::removeObserver(Observer<T>* obs) {\n    if (!obs) {\n        error(\"Observable::removeObserver: null observer passed\");\n    }\n    m_observers.erase(obs);\n}\n\ntemplate <typename T>\nvoid Observable<T>::removeObserver(Observer<T>& obs) {\n    removeObserver(&obs);\n}\n\n#endif // _observable_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/util/point.h",
    "content": "/*\n * File: point.h\n * -------------\n * This file exports a class representing an integer-valued <i>x</i>-<i>y</i>\n * pair.\n *\n * @version 2018/11/22\n * - added headless mode support\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _point_h\n#define _point_h\n\n#include <string>\n\n#ifndef SPL_HEADLESS_MODE\nclass GPoint;   // forward declaration\n#endif // SPL_HEADLESS_MODE\n\n/**\n * This class represents an <i>x</i>-<i>y</i> coordinate point on a\n * two-dimensional integer grid.  If you need to work with real-valued points,\n * you should use the <a href=\"gtypes.html\"><code>gtypes.h</code></a>\n * interface instead.\n */\nclass Point {\npublic:\n    /**\n     * Creates a <code>Point</code> object at (0, 0).\n     */\n    Point();\n\n    /**\n     * Creates a <code>Point</code> object with the specified x and y coordinates.\n     */\n    Point(int x, int y);\n\n#ifndef SPL_HEADLESS_MODE\n    /**\n     * Creates a <code>Point</code> object with the same x and y coordinates\n     * as the given other point.\n     */\n    Point(const GPoint& point);\n#endif // SPL_HEADLESS_MODE\n\n    /**\n     * Returns the <i>x</i>-coordinate of the point.\n     */\n    int getX() const;\n\n    /**\n     * Returns the <i>y</i>-coordinate of the point.\n     */\n    int getY() const;\n\n    /**\n     * Returns a string representation of the <code>Point</code> in the form\n     * <code>\"(x, y)\"</code>.\n     */\n    std::string toString() const;\n\n    /**\n     * Returns <code>true</code> if <code>p1</code> and <code>p2</code>\n     * are the same point.\n     */\n    bool operator ==(const Point& p2) const;\n\n    /**\n     * Returns <code>true</code> if <code>p1</code> and <code>p2</code>\n     * are different.\n     */\n    bool operator !=(const Point& p2) const;\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\nprivate:\n    // instance variables\n    int x;                         // the x-coordinate of the point\n    int y;                         // the y-coordinate of the point\n};\n\n/**\n * Overloads the <code>&lt;&lt;</code> operator so that it is able\n * to display <code>Point</code> values.\n */\nstd::ostream& operator <<(std::ostream& os, const Point& pt);\n\n/**\n * Hash code function for Point objects.\n */\nint hashCode(const Point& pt);\n\n#endif // _point_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/util/random.h",
    "content": "/*\n * File: random.h\n * --------------\n * This file exports functions for generating pseudorandom numbers.\n * \n * @version 2019/05/16\n * - added randomColor that takes min/max RGB\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2017/10/05\n * - added randomFeedClear\n * @version 2017/09/28\n * - moved random 'feed' functions into autograder namespace\n * @version 2016/08/02\n * - added randomColor, randomColorString\n * @version 2014/10/19\n * - alphabetized functions\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _random_h\n#define _random_h\n\n#include <string>\n\n/**\n * Returns <code>true</code> with 50% probability.\n */\nbool randomBool();\n\n/**\n * Returns <code>true</code> with the probability indicated by <code>p</code>.\n * The argument <code>p</code> must be a floating-point number between\n * 0 (never) and 1 (always).  For example, calling\n * <code>randomChance(.30)</code> returns <code>true</code> 30 percent\n * of the time.\n */\nbool randomChance(double p);\n\n/**\n * Returns a random RGB color as an integer.\n * See also: gwindow.h convertRGBToColor()\n */\nint randomColor();\n\n/**\n * Returns a random RGB color as an integer, with the value of the RGB components\n * bounded between the given minimum and maximum.\n * @throw ErrorException if min or max is not in [0..255] or min > max\n * See also: gwindow.h convertRGBToColor()\n */\nint randomColor(int minRGB, int maxRGB);\n\n/**\n * Returns a random RGB color as a hex string like \"#ff00ff\" for magenta.\n * See also: gwindow.h convertColorToRGB()\n */\nstd::string randomColorString();\n\n/**\n * Returns a random RGB color as a hex string like \"#ff00ff\" for magenta,\n * with the value of the RGB components bounded between the given minimum and maximum.\n * @throw ErrorException if min or max is not in [0..255] or min > max\n * See also: gwindow.h convertColorToRGB()\n */\nstd::string randomColorString(int minRGB, int maxRGB);\n\n/**\n * Returns a random integer in the range <code>low</code> to\n * <code>high</code>, inclusive.\n */\nint randomInteger(int low, int high);\n\n/**\n * Returns a random real number in the half-open interval\n * [<code>low</code>&nbsp;..&nbsp;<code>high</code>).  A half-open\n * interval includes the first endpoint but not the second, which\n * means that the result is always greater than or equal to\n * <code>low</code> but strictly less than <code>high</code>.\n */\ndouble randomReal(double low, double high);\n\n/**\n * Sets the internal random number seed to the specified value.  You\n * can use this function to set a specific starting point for the\n * pseudorandom sequence or to ensure that program behavior is\n * repeatable during the debugging phase.\n */\nvoid setRandomSeed(int seed);\n\n/**\n * Extra functions to facilitate creation of autograder programs.\n * @private\n */\nnamespace autograder {\n/**\n * Inserts the given boolean value to be returned by the random number\n * generator, rather than truly random choices.\n */\nvoid randomFeedBool(bool value);\n\n/**\n * Removes any previously 'fed' random integers so that future calls\n * to random functions will return truly random values.\n */\nvoid randomFeedClear();\n\n/**\n * Inserts the given integer to be returned by the random number generator,\n * rather than truly random numbers.\n */\nvoid randomFeedInteger(int value);\n\n/**\n * Inserts the given real number to be returned by the random number generator,\n * rather than truly random numbers.\n */\nvoid randomFeedReal(double value);\n}\n\n#endif // _random_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/util/recursion.h",
    "content": "/*\n * File: recursion.h\n * -----------------\n * This file includes a few utility functions related to recursion.\n * You can use them to print a debug message that is indented relative\n * to the level of recursion you are currently nested in.\n *\n * @author Marty Stepp\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2016/10/30\n * - initial version (extracted from exceptions.h)\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _recursion_h\n#define _recursion_h\n\n#include <string>\n\n/**\n * Returns number of calls deep we are in the current recursive function.\n * For example, if f() calls f() calls f(), this function returns 3.\n *\n * NOTE: Doesn't usually work when used with 'static' functions, because their names\n * are not exported or revealed to the internal stack trace grabber.\n * So if you want to use this function, make your function non-static.\n */\nint getRecursionIndentLevel();\n\n/**\n * Returns a string of indentation that can be used to pretty-print recursive calls\n * at their corresponding level of nesting.\n * Indents by 4 spaces per level but can be overridden by passing 'indenter' param.\n *\n * NOTE: Doesn't usually work when used with static functions, because their names\n * are not exported or revealed to the internal stack trace grabber.\n * So if you want to use this function, make your function non-static.\n */\nstd::string recursionIndent(const std::string& indenter = \"    \");\n\n#endif // _recursion_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/util/regexpr.h",
    "content": "/*\n * File: regexpr.h\n * ---------------\n * This file exports functions for performing regular expression operations\n * on C++ strings.  It will be unnecessary once the C++11 regex library\n * is widely available, but as of this writing the regex library is not\n * supported on gcc and other major C++ compilers.\n * \n * The regular expression functions are implemented by sending the strings and\n * regexes to the Java Back-End to run the operations in Java.  This is a bit\n * kludgy but we don't want to write our own regex parser from scratch.\n * Using Java's is a compromise for now.\n *\n * @author Marty Stepp\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2018/09/20\n * - added Qt version checking around some regex functions for compatibility\n * @version 2014/10/14\n * - removed regexMatchCountWithLines for simplicity\n * @since 2014/03/01\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _regexpr_h\n#define _regexpr_h\n\n#include <string>\n\n#define INTERNAL_INCLUDE 1\n#include \"vector.h\"\n#undef INTERNAL_INCLUDE\n\n/**\n * Returns true if the given string s matches the given regular expression\n * as a substring.\n * For an exact match instead, put \"^\" and \"$\" in your regex as start/end anchors.\n */\nbool regexMatch(const std::string& s, const std::string& regexp);\n\n/**\n * Returns the number of times the given regular expression is found inside\n * the given string s.\n * Returns 0 if there are no matches for the regexp.\n */\nint regexMatchCount(const std::string& s, const std::string& regexp);\n\n/**\n * Finds all matches of the given regular expression in the given string s\n * and fills 'linesOut' with a comma-separated string representing the line\n * numbers within the string at which the matches occur, such as \"2,14,27,36\".\n * This is mainly useful for grading programs.\n * Returns the number of times the given regular expression is found inside\n * the given string s.  Returns 0 if there are no matches for the regexp.\n */\nint regexMatchCountWithLines(const std::string& s, const std::string& regexp,\n                             std::string& linesOut);\n\n/**\n * Finds all matches of the given regular expression in the given string s\n * and fills 'linesOut' with the line numbers within the string at which the\n * matches occur, such as [2, 14, 27, 36].\n * This is mainly useful for grading programs.\n * Returns the number of times the given regular expression is found inside\n * the given string s.  Returns 0 if there are no matches for the regexp.\n */\nvoid regexMatchCountWithLines(const std::string& s, const std::string& regexp,\n                              Vector<int>& linesOut);\n\n/**\n * Replaces occurrences of the given regular expression in s with the given\n * replacement text, and returns the resulting string.\n * If limit >  0 is passed, replaces that many occurrences of the regex.\n * If limit <= 0 is passed (or omitted), all occurrences are replaced.\n */\nstd::string regexReplace(const std::string& s, const std::string& regexp,\n                         const std::string& replacement, int limit = -1);\n\n#endif // _regexpr_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/util/require.h",
    "content": "/*\n * File: require.h\n * ---------------\n *\n * This file contains assertion functions for argument checking within the\n * code of the Stanford C++ library itself.\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _require_h\n#define _require_h\n\n#include <string>\n\n/**\n * @private\n */\nnamespace require {\n\nvoid inRange(double value, double min, double max, const std::string& caller = \"\", const std::string& valueName = \"\", const std::string& details = \"\");\nvoid inRange(int value, int min, int max, const std::string& caller = \"\", const std::string& valueName = \"\", const std::string& details = \"\");\nvoid inRange2D(double x, double y, double maxX, double maxY, const std::string& caller = \"\", const std::string& xValueName = \"\", const std::string& yValueName = \"\", const std::string& details = \"\");\nvoid inRange2D(double x, double y, double minX, double minY, double maxX, double maxY, const std::string& caller = \"\", const std::string& xValueName = \"\", const std::string& yValueName = \"\", const std::string& details = \"\");\nvoid inRange2D(int x, int y, int maxX, int maxY, const std::string& caller = \"\", const std::string& xValueName = \"\", const std::string& yValueName = \"\", const std::string& details = \"\");\nvoid inRange2D(int x, int y, int minX, int minY, int maxX, int maxY, const std::string& caller = \"\", const std::string& xValueName = \"\", const std::string& yValueName = \"\", const std::string& details = \"\");\nvoid nonEmpty(const std::string& str, const std::string& caller = \"\", const std::string& valueName = \"\", const std::string& details = \"\");\nvoid nonNegative(double value, const std::string& caller = \"\", const std::string& valueName = \"\", const std::string& details = \"\");\nvoid nonNegative(int value, const std::string& caller = \"\", const std::string& valueName = \"\", const std::string& details = \"\");\nvoid nonNegative(long value, const std::string& caller = \"\", const std::string& valueName = \"\", const std::string& details = \"\");\nvoid nonNegative2D(double x, double y, const std::string& caller = \"\", const std::string& xValueName = \"\", const std::string& yValueName = \"\", const std::string& details = \"\");\nvoid nonNegative2D(int x, int y, const std::string& caller = \"\", const std::string& xValueName = \"\", const std::string& yValueName = \"\", const std::string& details = \"\");\nvoid nonNull(const void* ptr, const std::string& caller = \"\", const std::string& valueName = \"\", const std::string& details = \"\");\nvoid positive(double value, const std::string& caller = \"\", const std::string& valueName = \"\", const std::string& details = \"\");\nvoid positive(int value, const std::string& caller = \"\", const std::string& valueName = \"\", const std::string& details = \"\");\nvoid require(bool test, const std::string& caller = \"\", const std::string& details = \"\");\n\n} // namespace require\n\n#endif // _require_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/util/sound.h",
    "content": "/*\n * File: sound.h\n * -------------\n * This file defines a class that represents a sound.\n *\n * @version 2018/10/23\n * - reimplemented in C++ using QSound class\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _sound_h\n#define _sound_h\n\n#include <string>\n#include <QMediaPlayer>\n#include <QMediaPlaylist>\n#include <QSound>\n\n#define INTERNAL_INCLUDE 1\n#include \"map.h\"\n#undef INTERNAL_INCLUDE\n\n/**\n * This class encapsulates a sound file.  The sound file is specified in the\n * constructor and must be a file in either the current directory or a\n * subdirectory named <code>sounds</code>.\n *\n * The following code, for example, plays the sound file\n * <code>ringtone.wav</code>:\n *\n *<pre>\n *    Sound ringtone(\"ringtone.wav\");\n *    ringtone.play();\n *</pre>\n *\n * You can also use the static <code>playSound</code> method:\n *\n *<pre>\n *    Sound::playSound(\"ringtone.wav\");\n *</pre>\n */\nclass Sound {\npublic:\n    /**\n     * Returns the duration of the sound clip that is currently playing.\n     * If no clip is playing, returns 0.\n     */\n    static long getDuration();\n\n    /**\n     * Returns the overall audio volume from 0 (silence) to 100 (full volume).\n     * The default volume is 100.\n     */\n    static int getVolume();\n\n    /**\n     * Pauses playing the sound, if it is playing.\n     * If paused, calling play() again will unpause.\n     */\n    static void pause();\n\n    /**\n     * Starts playing the sound if not playing, or unpauses if paused.\n     * This call returns immediately without waiting for the sound to finish.\n     */\n    static void playSound(const std::string& filename);\n\n    /**\n     * Sets the overall audio volume from 0 (silence) to 100 (full volume).\n     * The default volume is 100.\n     */\n    static void setVolume(int volume);\n\n    /**\n     * Stops playing the sound, if it is playing.\n     */\n    static void stop();\n\n\n    // begin old object-oriented interface (kept for backward compatibility)\n\n    /**\n     * Creates a <code>Sound</code> object by reading in the contents of the\n     * specified file or URL.\n     */\n    Sound(std::string filename);\n\n    /**\n     * Frees the memory associated with the sound.\n     */\n    virtual ~Sound();\n\n    /**\n     * Starts playing the sound.\n     * This call returns immediately without waiting for the sound to finish.\n     */\n    void play();\n\nprivate:\n    static QMediaPlayer* _qmediaPlayer;\n\n    static void initialize();\n\n    std::string _filename;\n};\n\n#endif // _sound_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/util/stringutils.h",
    "content": "/*\n * File: stringutils.h\n * -------------------\n * This file contains declarations of utility functions related to strings.\n * Arguably some of this functionality could be moved into strlib.{h,cpp},\n * but it is mostly written to support autograders so it is placed here.\n * \n * @author Marty Stepp\n * @version 2017/10/20\n * - changed string to const string& in all functions\n * @version 2016/11/09\n * - added trimToSize function\n * @since 2014/03/01\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _stringutils_h\n#define _stringutils_h\n\n#include <string>\n\n#define INTERNAL_INCLUDE 1\n#include \"vector.h\"\n#undef INTERNAL_INCLUDE\n\n/**\n * @private\n */\nnamespace stringutils {\nint charsDifferent(const std::string& s1, const std::string& s2);\nstd::string collapseSpaces(const std::string& s);\nVector<std::string> explodeLines(const std::string& s);\nint height(const std::string& s);\nstd::string implode(const Vector<std::string>& v, const std::string& delimiter = \"\\n\");\nstd::string indent(const std::string& s, int spaces);\n\n/*\n * Removes blank lines and collapses multiple spaces into one.\n * Used to facilitate approximate output matching.\n */\nstd::string makeSloppy(const std::string& s);\nstd::string removeBlankLines(const std::string& s);\nstd::string toLowerCase(const std::string& s);\nstd::string trimR(const std::string& s);\nstd::string trimToHeight(const std::string& s, int height, const std::string& suffix = \"...\");\nstd::string trimToSize(const std::string& s, int width, int height, const std::string& suffix = \" ...\");\nstd::string trimToWidth(const std::string& s, int width, const std::string& suffix = \" ...\");\nstd::string stripWhitespace(const std::string& s);\nstd::string truncate(const std::string& s, int length, const std::string& suffix = \" ...\");\nstd::string toPrintable(int ch);\nint width(const std::string& s);\n} // namespace stringutils\n\n#endif // _stringutils_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/util/strlib.h",
    "content": "/*\n * File: strlib.h\n * --------------\n * This file exports several useful string functions that are not\n * included in the C++ string library.\n * \n * @version 2018/11/14\n * - added std::to_string for bool, char, pointer, and generic template type T\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2018/09/02\n * - added padLeft, padRight\n * @version 2016/11/09\n * - added boolalpha to writeGenericValue (improves bool printing in\n *   collection toString output)\n * @version 2016/10/30\n * - added overloads that take type char instead of string:\n *   stringContains, stringIndexOf, stringJoin, stringLastIndexOf, stringReplace,\n *   stringSplit, toLowerCase, toUpperCase\n * @version 2016/10/26\n * - bug fix for stringLastIndexOf default index arg\n * @version 2016/10/13\n * - modified writeGenericValue, writeQuotedString to return ostream\n * @version 2016/08/03\n * - modified readGenericValue not to throw error() on parse failures\n *   (needed to support idiomatic silent-failing >> operators)\n * @version 2015/10/26\n * - added charToInteger/integerToChar functions\n * @version 2015/08/02\n * - added htmlEncode/Decode functions (not 100% perfect but works for common cases)\n * @version 2014/10/19\n * - alphabetized functions\n * - added several 'inPlace' variants of existing functions that return strings\n * @version 2014/10/08\n * - removed dependency on 'using namespace' statement\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _strlib_h\n#define _strlib_h\n\n#include <iostream>\n#include <sstream>\n#include <string>\n\n#define INTERNAL_INCLUDE 1\n#include \"vector.h\"\n#undef INTERNAL_INCLUDE\n\n/**\n * Returns the string \"true\" if b is true, or \"false\" if b is false.\n */\nstd::string boolToString(bool b);\n\n/**\n * Returns the string \"true\" if b is nonzero, or \"false\" if b is 0.\n */\nstd::string boolToString(int b);\n\n/**\n * Returns an integer equivalent of the given numeric character.\n * For example, charToInteger('3') returns the int 3.\n * If the character is not '0' through '9', throws an error.\n */\nint charToInteger(char c);\n\n/**\n * Returns a single-character string containing the given character.\n * For example, charToString('Q') returns the string \"Q\".\n */\nstd::string charToString(char c);\n\n/**\n * Converts a floating-point number into the corresponding string form.\n * For example, calling <code>doubleToString(23.45)</code> returns\n * the string <code>\"23.45\"</code>.\n * Equivalent to realToString.\n */\nstd::string doubleToString(double d);\n\n/**\n * Returns <code>true</code> if the string <code>str</code> ends with\n * the specified suffix.\n */\nbool endsWith(const std::string& str, const std::string& suffix);\n\n/**\n * Returns <code>true</code> if the string <code>str</code> ends with\n * the specified character.\n */\nbool endsWith(const std::string& str, char suffix);\n\n/**\n * Returns <code>true</code> if <code>s1</code> and <code>s2</code> are\n * equal discounting differences in case.\n */\nbool equalsIgnoreCase(const std::string& s1, const std::string& s2);\n\n/**\n * Converts the given string from an HTML-encoded version to its decoded\n * equivalent; the opposite of htmlEncode. Any escaped HTML character entities\n * will be replaced by their unescaped equivalents.\n * For example, <code>htmlEncode(\"&lt;p class=&quot;abc&quot;&gt;I love you &amp; me&lt;/p&gt;\")\n * returns \"<p class=\\\"abc\\\">I love you & me</p>\".\n */\nstd::string htmlDecode(const std::string& s);\n\n/**\n * Converts the given string into an HTML-encoded equivalent version, with\n * any relevant HTML character entities replaced by escaped equivalents.\n * For example, <code>htmlEncode(\"<p class=\\\"abc\\\">I love you & me</p>\") returns\n * \"&lt;p class=&quot;abc&quot;&gt;I love you &amp; me&lt;/p&gt;\".\n */\nstd::string htmlEncode(const std::string& s);\n\n/**\n * Converts an integer into the corresponding numeric character.\n * For example, calling <code>integerToChar(3)</code> returns\n * the char <code>'3'</code>.\n * @throw ErrorException if the given integer is not a single-digit number from 0-9 inclusive\n */\nchar integerToChar(int n);\n\n/**\n * Converts an integer into the corresponding string of digits.\n * For example, calling <code>integerToString(123)</code> returns\n * the string <code>\"123\"</code>.\n */\nstd::string integerToString(int n, int radix = 10);\n\n/**\n * Converts an integer into the corresponding string of digits.\n * For example, calling <code>longToString(123)</code> returns\n * the string <code>\"123\"</code>.\n */\nstd::string longToString(long n, int radix = 10);\n\n/**\n * Inserts spaces at the start of the given string until it is at least\n * the given length.\n * You can optionally pass a fill character (other than space) as a third parameter.\n *\n * Note that if you are printing strings and want your output to line up\n * at a given number of characters, you may be better served using the built-in\n * C++ ostream manipulators such as setw(int), left, and right, as defined in\n * the iomanip library.\n */\nstd::string padLeft(const std::string& s, int length, char fill = ' ');\n\n/**\n * Inserts spaces at the end of the given string until it is at least\n * the given length.\n * You can optionally pass a fill character (other than space) as a third parameter.\n *\n * Note that if you are printing strings and want your output to line up\n * at a given number of characters, you may be better served using the built-in\n * C++ ostream manipulators such as setw(int), left, and right, as defined in\n * the iomanip library.\n */\nstd::string padRight(const std::string& s, int length);\n\n/**\n * Returns a hexadecimal string for the given pointer, such as \"0x3f0427b\".\n * Returns \"nullptr\" if p is a null pointer.\n */\nstd::string pointerToString(void* p);\n\n/**\n * Converts a floating-point number into the corresponding string form.\n * For example, calling <code>realToString(23.45)</code> returns\n * the string <code>\"23.45\"</code>.\n */\nstd::string realToString(double d);\n\n/**\n * Returns <code>true</code> if the string <code>str</code> starts with\n * the specified prefix.\n */\nbool startsWith(const std::string& str, char prefix);\n\n/**\n * Returns <code>true</code> if the string <code>str</code> starts with\n * the specified character.\n */\nbool startsWith(const std::string& str, const std::string& prefix);\n\n/**\n * Returns true if the given character occurs somewhere in s.\n */\nbool stringContains(const std::string& s, char ch);\n\n/**\n * Returns true if the given substring occurs somewhere in s.\n */\nbool stringContains(const std::string& s, const std::string& substring);\n\n/**\n * Returns the index of the start of the first occurrence of the given character\n * in s, if it occurs in s.  If it does not occur, returns -1.\n * This function is very similar to string.find, but find returns string::npos\n * when the string is not found.\n */\nint stringIndexOf(const std::string& s, char ch, int startIndex = 0);\n\n/**\n * Returns the index of the start of the first occurrence of the given substring\n * in s, if it occurs in s.  If it does not occur, returns -1.\n * This function is very similar to string.find, but find returns string::npos\n * when the string is not found.\n */\nint stringIndexOf(const std::string& s, const std::string& substring, int startIndex = 0);\n\n/**\n * Returns true if the given string is either \"true\" or \"false\".\n */\nbool stringIsBool(const std::string& str);\n\n/**\n * Returns true if the given string could be converted to an real number\n * successfully by the stringToReal function, which will be true if\n * the string has the format of a real number such as \"3.14\" or \"-46\".\n * Equivalent to stringIsReal.\n */\nbool stringIsDouble(const std::string& str);   // alias\n\n/**\n * Returns true if the given string could be converted to an integer\n * successfully by the stringToInteger function, which will be true if\n * the string has the format of an integer such as \"1234\" or \"-8\".\n * Optionally accepts a radix (base) parameter if base-10 is not desired.\n */\nbool stringIsInteger(const std::string& str, int radix = 10);\n\n/**\n * Returns true if the given string could be converted to a long\n * successfully by the stringToLong function, which will be true if\n * the string has the format of an integer such as \"1234\" or \"-8\".\n * Optionally accepts a radix (base) parameter if base-10 is not desired.\n */\nbool stringIsLong(const std::string& str, int radix = 10);\n\n/**\n * Returns true if the given string could be converted to an real number\n * successfully by the stringToReal function, which will be true if\n * the string has the format of a real number such as \"3.14\" or \"-46\".\n */\nbool stringIsReal(const std::string& str);\n\n/**\n * Combines the elements of the given vector into a single string,\n * with the given delimiter separating neighboring elements, and returns it.\n * For example, joining the elements of the vector\n * {\"Hi\", \"there\", \"\", \"Jim\"} with the delimiter '?' returns \"Hi?there??Jim\".\n */\nstd::string stringJoin(const Vector<std::string>& v, char delimiter = '\\n');\n\n/**\n * Combines the elements of the given STL vector into a single string,\n * with the given delimiter separating neighboring elements, and returns it.\n * For example, joining the elements of the vector\n * {\"Hi\", \"there\", \"\", \"Jim\"} with the delimiter \"??\" returns \"Hi??there????Jim\".\n */\nstd::string stringJoin(const Vector<std::string>& v, const std::string& delimiter = \"\\n\");\n\n/**\n * Returns the index of the start of the last occurrence of the given character\n * in s, if it occurs in s.  If it does not occur, returns -1.\n * This function is very similar to string.rfind, but rfind returns string::npos\n * when the string is not found.\n */\nint stringLastIndexOf(const std::string& s, char ch, int startIndex = (int) std::string::npos);\n\n/**\n * Returns the index of the start of the last occurrence of the given substring\n * in s, if it occurs in s.  If it does not occur, returns -1.\n * This function is very similar to string.rfind, but rfind returns string::npos\n * when the string is not found.\n */\nint stringLastIndexOf(const std::string& s, const std::string& substring, int startIndex = (int) std::string::npos);\n\n/**\n * Returns a new string formed by replacing any occurrences of the given 'old'\n * character with the given replacement character in 'str'.\n * Note that this is NOT a regular expression replacement; it looks for the\n * 'old' string literally.  If you want regular expressions, see regexpr.h.\n * The 'inPlace' variant modifies an existing string rather than returning a new one,\n * and returns the number of occurrences of 'old' were replaced.\n */\nstd::string stringReplace(const std::string& str, char old, char replacement, int limit = -1);\n\n/**\n * Returns a new string formed by replacing any occurrences of the given 'old'\n * text with the given replacement text in 'str'.\n * Note that this is NOT a regular expression replacement; it looks for the\n * 'old' string literally.  If you want regular expressions, see regexpr.h.\n * The 'inPlace' variant modifies an existing string rather than returning a new one,\n * and returns the number of occurrences of 'old' were replaced.\n */\nstd::string stringReplace(const std::string& str, const std::string& old, const std::string& replacement, int limit = -1);\n\n/**\n * A variant of stringReplace, except that it accepts the string as a reference\n * and modifies it in-place rather than returning a new string.\n */\nint stringReplaceInPlace(std::string& str, char old, char replacement, int limit = -1);\n\n/**\n * A variant of stringReplace, except that it accepts the string as a reference\n * and modifies it in-place rather than returning a new string.\n */\nint stringReplaceInPlace(std::string& str, const std::string& old, const std::string& replacement, int limit = -1);\n\n/**\n * Returns a vector whose elements are strings formed by splitting the\n * given string 'str' by the given separator character.\n * For example, splitting \"Hi there  Jim!\" on \" \" returns\n * {\"Hi\", \"there\", \"\", \"Jim!\"}.\n */\nVector<std::string> stringSplit(const std::string& str, char delimiter, int limit = -1);\n\n/**\n * Returns a vector whose elements are strings formed by splitting the\n * given string 'str' by the given separator text.\n * For example, splitting \"Hi there  Jim!\" on \" \" returns\n * {\"Hi\", \"there\", \"\", \"Jim!\"}.\n */\nVector<std::string> stringSplit(const std::string& str, const std::string& delimiter, int limit = -1);\n\n/**\n * If str is \"true\", returns the bool value true.\n * If str is \"false\", returns the bool value false.\n * @throw ErrorException if str is any other value than \"true\" or \"false\"\n */\nbool stringToBool(const std::string& str);\n\n/**\n * Converts a single-character string into its corresponding char value.\n * For example, stringToChar(\"hello\") returns the char 'h'.\n * @throw ErrorException if the given string does not contain exactly 1 character\n */\nchar stringToChar(const std::string& str);\n\n/**\n * Converts a string representing a real number into its corresponding\n * value.\n * Equivalent to stringToReal.\n * @throw ErrorException if the string is not a legal floating-point number\n *        or contains extraneous characters other than whitespace\n */\ndouble stringToDouble(const std::string& str);   // alias\n\n/**\n * Converts a string of digits into an integer.\n * The function accepts an optional radix (base); for example,\n * stringToInteger(\"234\", 16) assumes that the string is in base-16 and\n * returns 2*16*16 + 3*16 + 4 = 564.\n * @throw ErrorException if the string is not a legal integer or contains\n *        extraneous characters other than whitespace\n */\nint stringToInteger(const std::string& str, int radix = 10);\n\n/**\n * Converts a string of digits into a long.\n * The function accepts an optional radix (base); for example,\n * stringToLong(\"234\", 16) assumes that the string is in base-16 and\n * returns 2*16*16 + 3*16 + 4 = 564.\n * @throw ErrorException if the string is not a legal long or contains\n *        extraneous characters other than whitespace\n */\nlong stringToLong(const std::string& str, int radix = 10);\n\n/**\n * Converts a string representing a real number into its corresponding\n * value.\n * Equivalent to stringToDouble.\n * @throw ErrorException if the string is not a legal floating-point number or\n * contains extraneous characters other than whitespace\n */\ndouble stringToReal(const std::string& str);\n\n/**\n * Returns a new character in which the given uppercase character has been\n * converted into its lowercase equivalent.\n */\nchar toLowerCase(char ch);\n\n/**\n * Returns a new string in which all uppercase characters have been converted\n * into their lowercase equivalents.\n */\nstd::string toLowerCase(const std::string& str);\n\n/**\n * Modifies the given string in-place such that all uppercase characters have\n * been converted into their lowercase equivalents.\n */\nvoid toLowerCaseInPlace(std::string& str);\n\n/**\n * Returns a new character in which the given lowercase character has been\n * converted into its uppercase equivalent.\n */\nchar toUpperCase(char ch);\n\n/**\n * Returns a new string in which all lowercase characters have been converted\n * into their uppercase equivalents.\n */\nstd::string toUpperCase(const std::string& str);\n\n/**\n * Modifies the given string in-place such that all lowercase characters have\n * been converted into their uppercase equivalents.\n */\nvoid toUpperCaseInPlace(std::string& str);\n\n/**\n * Returns a new string after removing any whitespace characters\n * from the beginning and end of the argument.\n */\nstd::string trim(const std::string& str);\n\n/**\n * Modifies the given string in-place where any whitespace characters\n * from the beginning and end of the argument are removed.\n */\nvoid trimInPlace(std::string& str);\n\n/**\n * Returns a new string after removing any whitespace characters\n * from the end of the argument.\n */\nstd::string trimEnd(const std::string& str);\n\n/**\n * Modifies the given string in-place to remove any whitespace characters\n * from its end.\n */\nvoid trimEndInPlace(std::string& str);\n\n/**\n * Returns a new string after removing any whitespace characters\n * from the beginning of the argument.\n */\nstd::string trimStart(const std::string& str);\n\n/**\n * Modifies the given string in-place to remove removing any whitespace characters\n * from the beginning of it.\n */\nvoid trimStartInPlace(std::string& str);\n\n/**\n * Returns a URL-decoded version of the given string, where any %xx character\n * codes are converted back to the equivalent characters.\n */\nstd::string urlDecode(const std::string& str);\n\n/**\n * Modifies the given string in-place into a URL-decoded version of itself,\n * where any %xx character codes are converted back to the equivalent characters.\n */\nvoid urlDecodeInPlace(std::string& str);\n\n/**\n * Returns a URL-encoded version of the given string, where most non-\n * alphabetic characters are replaced by %xx character codes.\n */\nstd::string urlEncode(const std::string& str);\n\n/**\n * Modifies the given string in-place into a URL-encoded version of itself,\n * where most non- alphabetic characters are replaced by %xx character codes.\n */\nvoid urlEncodeInPlace(std::string& str);\n\n// add to_string overloads for some common types missing from C++ standard\nnamespace std {\n/**\n * String-to-bool conversion function.\n * If str is \"true\", returns the bool value true.\n * If str is \"false\", returns the bool value false.\n * @throw ErrorException if str is any other value than \"true\" or \"false\"\n */\nbool stob(const std::string& str);\n\n/**\n * String-to-char conversion function.\n * Converts a single-character string into its corresponding char value.\n * For example, stringToChar(\"hello\") returns the char 'h'.\n * @throw ErrorException if the given string does not contain exactly 1 character\n */\nchar stoc(const std::string& str);\n\n/**\n * Returns the string \"true\" if b is true, or \"false\" if b is false.\n */\nstd::string to_string(bool b);\n\n/**\n * Returns a single-character string containing the given character.\n * For example, charToString('Q') returns the string \"Q\".\n */\nstd::string to_string(char c);\n\n/**\n * Returns a hexadecimal string for the given pointer, such as \"0x3f0427b\".\n * Returns \"nullptr\" if p is a null pointer.\n */\nstd::string to_string(void* p);\n\n/**\n * Generic to_string function for any type that has an operator <<.\n */\ntemplate <typename T>\nstd::string to_string(const T& value) {\n    std::ostringstream out;\n    out << value;   // if you get an error here, your type might not have a << operator\n    return out.str();\n}\n} // namespace std\n\n#endif // _strlib_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/lib/StanfordCPPLib/util/timer.h",
    "content": "/*\n * File: timer.h\n * -------------\n * This file exports a Timer class that is useful for measuring the elapsed\n * time of a program in milliseconds over a given interval.\n *\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n */\n\n#include \"private/init.h\"   // ensure that Stanford C++ lib is initialized\n\n#ifndef INTERNAL_INCLUDE\n#include \"private/initstudent.h\"   // insert necessary included code by student\n#endif // INTERNAL_INCLUDE\n\n#ifndef _timer_h\n#define _timer_h\n\n/**\n * A Timer object is useful for measuring the elapsed\n * time of a program in milliseconds over a given interval.\n * Usage example:\n *\n *<pre>\n * Timer tim;\n * tim.start();\n * ... code that takes a while ...\n * tim.stop();\n * cout << \"That took \" << tim.elapsed() << \"ms.\" << endl;\n *</pre>\n */\nclass Timer {\npublic:\n    /**\n     * Constructs a new timer.\n     * If an optional bool parameter of true is passed, also starts the timer.\n     */\n    Timer(bool autostart = false);\n\n    /**\n     * Returns the number of milliseconds that have elapsed since this timer\n     * was started.\n     * Returns 0 if the timer was never started.\n     */\n    long elapsed() const;\n\n    /**\n     * Returns true if the timer has been started.\n     */\n    bool isStarted() const;\n\n    /**\n     * Starts the timer.\n     * If the timer was already started, restarts it such that its 'elapsed'\n     * time will be 0 at the moment of the call.\n     */\n    void start();\n\n    /**\n     * Stops the timer and returns the number of elapsed milliseconds.\n     * If the timer was never started, 0 ms will be considered to have elapsed.\n     */\n    long stop();\n\n    /**\n     * A static utility function for getting the current time as a Unix\n     * timestamp of milliseconds since the epoch.\n     */\n    static long currentTimeMS();\n\nprivate:\n    // instance variables\n    long _startMS;\n    long _stopMS;\n    bool _isStarted;\n};\n\n#endif // _timer_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/output/expected-output-1.txt",
    "content": "Hello, cout 1!\nHello, cerr 1!\nHello, cout 2!\nHello, cerr 2!\n\nThis is stderr!\nSo is this.\nCOUT IN THIS PART ... BUT IT ALTERNATES TO CERR! \nCOUT CERR COUT CERR COUT CERR COUT CERR COUT CERR \n    0    1    2    3    4    5    6    7    8    9   10\n   11   12   13   14   15   16   17   18   19   20\n   21   22   23   24   25   26   27   28   29   30\n   31   32   33   34   35   36   37   38   39   40\n   41   42   43   44   45   46   47   48   49   50\n   51   52   53   54   55   56   57   58   59   60\n   61   62   63   64   65   66   67   68   69   70\n   71   72   73   74   75   76   77   78   79   80\n   81   82   83   84   85   86   87   88   89   90\n   91   92   93   94   95   96   97   98   99  100\n  101  102  103  104  105  106  107  108  109  110\n  111  112  113  114  115  116  117  118  119  120\n  121  122  123  124  125  126  127  128  129  130\n  131  132  133  134  135  136  137  138  139  140\n  141  142  143  144  145  146  147  148  149  150\n  151  152  153  154  155  156  157  158  159  160\n  161  162  163  164  165  166  167  168  169  170\n  171  172  173  174  175  176  177  178  179  180\n  181  182  183  184  185  186  187  188  189  190\n  191  192  193  194  195  196  197  198  199  200\n  201  202  203  204  205  206  207  208  209  210\n  211  212  213  214  215  216  217  218  219  220\n  221  222  223  224  225  226  227  228  229  230\n  231  232  233  234  235  236  237  238  239  240\n  241  242  243  244  245  246  247  248  249  250\n  251  252  253  254  255  256  257  258  259  260\n  261  262  263  264  265  266  267  268  269  270\n  271  272  273  274  275  276  277  278  279  280\n  281  282  283  284  285  286  287  288  289  290\n  291  292  293  294  295  296  297  298  299  300\n  301  302  303  304  305  306  307  308  309  310\n  311  312  313  314  315  316  317  318  319  320\n  321  322  323  324  325  326  327  328  329  330\n  331  332  333  334  335  336  337  338  339  340\n  341  342  343  344  345  346  347  348  349  350\n  351  352  353  354  355  356  357  358  359  360\n  361  362  363  364  365  366  367  368  369  370\n  371  372  373  374  375  376  377  378  379  380\n  381  382  383  384  385  386  387  388  389  390\n  391  392  393  394  395  396  397  398  399  400\n  401  402  403  404  405  406  407  408  409  410\n  411  412  413  414  415  416  417  418  419  420\n  421  422  423  424  425  426  427  428  429  430\n  431  432  433  434  435  436  437  438  439  440\n  441  442  443  444  445  446  447  448  449  450\n  451  452  453  454  455  456  457  458  459  460\n  461  462  463  464  465  466  467  468  469  470\n  471  472  473  474  475  476  477  478  479  480\n  481  482  483  484  485  486  487  488  489  490\n  491  492  493  494  495  496  497  498  499  500\n  501  502  503  504  505  506  507  508  509  510\n  511  512  513  514  515  516  517  518  519  520\n  521  522  523  524  525  526  527  528  529  530\n  531  532  533  534  535  536  537  538  539  540\n  541  542  543  544  545  546  547  548  549  550\n  551  552  553  554  555  556  557  558  559  560\n  561  562  563  564  565  566  567  568  569  570\n  571  572  573  574  575  576  577  578  579  580\n  581  582  583  584  585  586  587  588  589  590\n  591  592  593  594  595  596  597  598  599  600\n  601  602  603  604  605  606  607  608  609  610\n  611  612  613  614  615  616  617  618  619  620\n  621  622  623  624  625  626  627  628  629  630\n  631  632  633  634  635  636  637  638  639  640\n  641  642  643  644  645  646  647  648  649  650\n  651  652  653  654  655  656  657  658  659  660\n  661  662  663  664  665  666  667  668  669  670\n  671  672  673  674  675  676  677  678  679  680\n  681  682  683  684  685  686  687  688  689  690\n  691  692  693  694  695  696  697  698  699  700\n  701  702  703  704  705  706  707  708  709  710\n  711  712  713  714  715  716  717  718  719  720\n  721  722  723  724  725  726  727  728  729  730\n  731  732  733  734  735  736  737  738  739  740\n  741  742  743  744  745  746  747  748  749  750\n  751  752  753  754  755  756  757  758  759  760\n  761  762  763  764  765  766  767  768  769  770\n  771  772  773  774  775  776  777  778  779  780\n  781  782  783  784  785  786  787  788  789  790\n  791  792  793  794  795  796  797  798  799  800\n  801  802  803  804  805  806  807  808  809  810\n  811  812  813  814  815  816  817  818  819  820\n  821  822  823  824  825  826  827  828  829  830\n  831  832  833  834  835  836  837  838  839  840\n  841  842  843  844  845  846  847  848  849  850\n  851  852  853  854  855  856  857  858  859  860\n  861  862  863  864  865  866  867  868  869  870\n  871  872  873  874  875  876  877  878  879  880\n  881  882  883  884  885  886  887  888  889  890\n  891  892  893  894  895  896  897  898  899  900\n  901  902  903  904  905  906  907  908  909  910\n  911  912  913  914  915  916  917  918  919  920\n  921  922  923  924  925  926  927  928  929  930\n  931  932  933  934  935  936  937  938  939  940\n  941  942  943  944  945  946  947  948  949  950\n  951  952  953  954  955  956  957  958  959  960\n  961  962  963  964  965  966  967  968  969  970\n  971  972  973  974  975  976  977  978  979  980\n  981  982  983  984  985  986  987  988  989  990\n  991  992  993  994  995  996  997  998  999 1000\nTook 1ms\nType: abc\nYou typed: \"abc\"\nType an integer: hi\nIllegal integer format. Try again.\nType an integer: 123\nYou typed: 123\nType a real number: oops\nIllegal numeric format. Try again.\nType a real number: 3.25\nYou typed: 3.25\nPartial line; what about me? :-("
  },
  {
    "path": "Archived/autograder-empty-project/output/input-1.txt",
    "content": "abc\nhi\n123\noops\n3.25\n"
  },
  {
    "path": "Archived/autograder-empty-project/res/readme.txt",
    "content": "This is a random resource file.\r\nWhen student code gets executed, you can open \nit by loading \"readme.txt\" in code.\r\nThis will work with subdirectories as \nwell:\r\n\n\nIf you create a subdirectory called \"images\", and place picture-of-kitten.jpg\n in it,\r\nthen students can load that file by loading\n \"images/picture-of-kitten.jpg\".\n\r\nThis will work for arbitrarily named files, directories, and subdirectories.\n"
  },
  {
    "path": "Archived/autograder-empty-project/src/ArrayIntList.cpp",
    "content": "/*\n * CS 106B, Marty Stepp\n * ArrayIntList.cpp implements the ArrayIntList class behavior declared in ArrayIntList.h.\n * \n * @version 2016/08/23\n * - added initializer_list support to match other lib collections\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"ArrayIntList.h\"\n#include \"error.h\"\n#include \"strlib.h\"\n#undef INTERNAL_INCLUDE\n\n/*\n * Constructs a new empty list (capacity 10).\n */\nArrayIntList::ArrayIntList() {\n    elements = new int[10]();\n    mysize = 0;\n    capacity = 10;\n}\n\n/*\n * Constructs a new empty list with the given capacity.\n */\nArrayIntList::ArrayIntList(int cap) {\n    elements = new int[cap]();\n    mysize = 0;\n    capacity = cap;\n}\n\n/*\n * Constructs a new empty list storing the given elements.\n */\nArrayIntList::ArrayIntList(std::initializer_list<int> list) {\n    elements = new int[list.size()]();\n    mysize = 0;\n    capacity = list.size();\n    for (int n : list) {\n        add(n);\n    }\n}\n\n/*\n * Destructor is called when an ArrayIntList object is destroyed\n * (when the closing } brace is reached in the function where\n * it is declared).\n */\nArrayIntList::~ArrayIntList() {\n    delete[] elements;\n}\n\n/*\n * Appends the given value to the end of the list.\n */\nvoid ArrayIntList::add(int value) {\n    ensureCapacity(mysize + 1);\n    elements[mysize] = value;\n    mysize++;\n}\n\n/*\n * Removes all elements from the list.\n */\nvoid ArrayIntList::clear() {\n    mysize = 0;\n}\n\n/*\n * Returns the value at the given 0-based index of the list.\n */\nint ArrayIntList::get(int index) const {\n    checkIndex(index, 0, mysize - 1);\n    return elements[index];\n}\n\n/*\n * Adds the given value just before the given 0-based index in the list,\n * shifting subsequent elements right as necessary to make room.\n * Throws a string exception if the index is out of bounds.\n */\nvoid ArrayIntList::insert(int index, int value) {\n    checkIndex(index, 0, mysize);\n    ensureCapacity(mysize + 1);\n    for (int i = mysize; i > index; i--) {\n        elements[i] = elements[i - 1];\n    }\n    elements[index] = value;\n    mysize++;\n}\n\n/*\n * Returns true if there are no elements in the list.\n */\nbool ArrayIntList::isEmpty() const {\n    return mysize == 0;\n}\n\n/*\n * Removes the element at the given index from the list,\n * shifting elements left to make room.\n * Throws a string exception if the index is out of bounds.\n */\nvoid ArrayIntList::remove(int index) {\n    checkIndex(index, 0, mysize - 1);\n    for (int i = index; i < mysize - 1; i++) {\n        elements[i] = elements[i + 1];\n    }\n    mysize--;\n}\n\n/*\n * Stores the given value at the given index in the list.\n * Throws a string exception if the index is out of bounds.\n */\nvoid ArrayIntList::set(int index, int value) {\n    checkIndex(index, 0, mysize - 1);\n    elements[index] = value;\n}\n\n/*\n * Returns the number of elements in the list.\n */\nint ArrayIntList::size() const {\n    return mysize;\n}\n\n/*\n * Prints the list to the given output stream, in a format such as:\n * {42, -7, 19, 106}\n */\nostream& operator <<(ostream& out, const ArrayIntList& list) {\n    out << \"{\";\n    if (!list.isEmpty()) {\n        out << list.get(0);   // fencepost\n        for (int i = 1; i < list.size(); i++) {\n            out << \", \" << list.get(i);\n        }\n    }\n    out << \"}\";\n    return out;\n}\n\nistream& operator >>(istream& input, ArrayIntList& list) {\n    char ch = '\\0';\n    input >> ch;\n    if (ch != '{') {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n        error(\"ArrayIntList::operator >>: Missing {\");\n#endif\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n    list.clear();\n    input >> ch;\n    if (ch != '}') {\n        input.unget();\n        while (true) {\n            int value;\n            if (!readGenericValue(input, value)) {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n                error(\"ArrayIntList::operator >>: parse error\");\n#endif\n                return input;\n            }\n            list.add(value);\n            input >> ch;\n            if (ch == '}') {\n                break;\n            } else if (ch != ',') {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n                error(std::string(\"ArrayIntList::operator >>: Unexpected character \") + ch);\n#endif\n                input.setstate(std::ios_base::failbit);\n                return input;\n            }\n        }\n    }\n    return input;\n}\n\n/*\n * Throws a string exception if the given index is not between\n * min and max, inclusive.\n */\nvoid ArrayIntList::checkIndex(int index, int min, int max) const {\n    if (index < min || index > max) {\n        throw \"Index out of bounds: \" + integerToString(index);\n    }\n}\n\n/*\n * Grows the internal array to be at least as large as the given capacity.\n * Resizes by factors of 2 to ensure amortized O(1) add performance.\n */\nvoid ArrayIntList::ensureCapacity(int cap) {\n    if (capacity < cap) {\n        while (capacity < cap) {\n            capacity *= 2;\n        }\n        \n        // copy all elements into a bigger array\n        int* bigger = new int[capacity];\n        for (int i = 0; i < mysize; i++) {\n            bigger[i] = elements[i];\n        }\n        \n        // swap in the new bigger array for the old one\n        delete[] elements;\n        elements = bigger;\n    }\n}\n\nArrayIntList& ArrayIntList::operator =(const ArrayIntList& src) {\n    if (this != &src) {\n        // deep copy\n        clear();\n        ensureCapacity(src.size());\n        for (int i = 0; i < src.size(); i++) {\n            add(src.get(i));\n        }\n    }\n    return *this;\n}\n"
  },
  {
    "path": "Archived/autograder-empty-project/src/ArrayIntList.h",
    "content": "/*\n * CS 106B, Marty Stepp\n * ArrayIntList is our example of implementing a basic data structure.\n * The list can store only ints for now.\n * See ArrayIntList.cpp for documentation of each member.\n *\n * @version 2016/08/23\n * - added initializer_list support to match other lib collections\n * @version 2016/07/10\n * - added removeDuplicates() declaration\n */\n\n#ifndef _arrayintlist_h\n#define _arrayintlist_h\n\n#include <fstream>\n#include <initializer_list>\n#include <iostream>\n#include <string>\n#include \"set.h\"\nusing namespace std;\n\nclass ArrayIntList {\npublic:\n    // constructor\n    ArrayIntList();\n    ArrayIntList(int capacity);\n    ArrayIntList(std::initializer_list<int> list);\n    ~ArrayIntList();\n    \n    // member functions (methods)\n    void add(int value);\n    void clear();\n    void ensureCapacity(int capacity);\n    int get(int index) const;\n    void insert(int index, int value);\n    bool isEmpty() const;\n    void remove(int index);\n    void set(int index, int value);\n    int size() const;\n    void debug() const;\n    \n    // section problems\n    int maxCount() const;\n    \n    // exam problems\n    void stretch(int k);\n    void mirror();\n    int longestSortedSequence() const;\n    bool filter(const Set<int>& set);\n    void removeDuplicates();\n\n    ArrayIntList& operator =(const ArrayIntList& src);\n\nprivate:\n    // member variables (fields)\n    int* elements;   // array storing element data\n    int mysize;      // number of elements in the array\n    int capacity;    // array's length\n    \n    void checkIndex(int index, int min, int max) const;\n};\n\n// overloaded operators\nostream& operator <<(ostream& out, const ArrayIntList& list);\nistream& operator >>(istream& in, ArrayIntList& list);\n\n#endif\n\n\n\n\n\n\n\n"
  },
  {
    "path": "Archived/autograder-empty-project/src/BinaryTree.cpp",
    "content": "/*\n * This file contains the implementation of members of the BinaryTree class,\n * which defines a binary tree of integers.\n * See BinaryTree.h for a description of each member.\n *\n * @version 2015/07/21\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"BinaryTree.h\"\n#undef INTERNAL_INCLUDE\n\nBinaryTree::BinaryTree(BinaryTreeNode* root) {\n    this->root = root;\n}\n\nBinaryTree::~BinaryTree() {\n    // TODO: free memory\n    root = nullptr;\n}\n\nstatic void binaryTreeClearHelper(BinaryTreeNode*& node) {\n    if (node) {\n        binaryTreeClearHelper(node->left);\n        binaryTreeClearHelper(node->right);\n        delete node;\n        node = nullptr;\n    }\n}\n\nvoid BinaryTree::clear() {\n    binaryTreeClearHelper(root);\n}\n\nstd::string BinaryTree::toString() {\n    return toString(root);\n}\nstd::string BinaryTree::toString(BinaryTreeNode* node) {\n    if (!node) {\n        return \"/\";\n    } else if (node->left == nullptr && node->right == nullptr) {\n        return integerToString(node->data);\n    } else {\n        return \"(\" + integerToString(node->data) + \", \"\n             + toString(node->left) + \", \" + toString(node->right) + \")\";\n    }\n}\n\nvoid BinaryTree::deleteTree(BinaryTreeNode* node) {\n    if (node) {\n        deleteTree(node->left);\n        deleteTree(node->right);\n        delete node;\n    }\n}\n\nstd::ostream& operator <<(std::ostream& out, const BinaryTree& tree) {\n    return binaryTreeOpLtLtHelper(out, tree.root);\n}\n\nstd::istream& operator >>(std::istream& input, BinaryTree& tree) {\n    tree.clear();\n    std::string line;\n    if (getline(input, line)) {\n        makeTreeFromString(line, tree.root);\n    }\n    return input;\n}\n"
  },
  {
    "path": "Archived/autograder-empty-project/src/BinaryTree.h",
    "content": "/*\n * This file contains the declaration of the BinaryTree class,\n * which defines a binary tree of integers.\n * See BinaryTree.cpp for implementation of each member.\n *\n * @version 2017/10/20\n * - replaced nulls with nullptr\n * @version 2015/07/21\n */\n\n#ifndef _binarytree_h\n#define _binarytree_h\n\n#include <iostream>\n#include <string>\n#include \"BinaryTreeNode.h\"\n#include \"queue.h\"\nusing namespace std;\n\nclass BinaryTree {\npublic:\n    // public just for exam testing\n    BinaryTreeNode* root;   // topmost node in the tree (null if empty)\n\n    BinaryTree(BinaryTreeNode* root = nullptr);\n    virtual ~BinaryTree();\n    \n    void clear();\n    // int height();\n    string toString();\n    \n    // lecture problems\n    void print() const;\n    int size() const;\n    void printSideways() const;\n    bool contains(int value) const;\n\n    // section problems\n    int height() const;\n    int countLeftNodes() const;\n    bool isBalanced() const;\n    bool isBST() const;\n    void removeLeaves();\n    void completeToLevel(int k);\n    void tighten();\n    void limitPathSum(int max);\n    \n    // exam problems\n    bool hasPath(int start, int end) const;\n    bool isConsecutive() const;\n    void limitLeaves(int n);\n    int makeFull();\n    int range(int min, int max);\n    void removeMatchingLeaves(const BinaryTree& other);\n    void swapChildrenAtLevel(int level);\n\n    // operators for reading/writing trees based on a root pointer\n    // (these are used by the CodeStepByStep tool)\n    friend ostream& operator <<(ostream& out, BinaryTreeNode* node);\n    friend istream& operator >>(istream& input, BinaryTreeNode*& node);\n\nprivate:\n    int size(BinaryTreeNode* node);\n    string toString(BinaryTreeNode* node);\n    void deleteTree(BinaryTreeNode* node);\n};\n\nostream& operator <<(ostream& out, const BinaryTree& tree);\nistream& operator >>(istream& input, BinaryTree& tree);\n\nenum Order {PRE_ORDER, IN_ORDER, POST_ORDER};\n\ntemplate <typename T>\nclass TreeSet {\npublic:\n    TreeSet(BinaryTreeNodeGen<T>* root = nullptr);\n    virtual ~TreeSet();\n    \n    void add(T value);\n    bool contains(T value);\n    T getMin() const;\n    int height() const;\n    bool isBalanced() const;\n    void print(int order = IN_ORDER);\n    void printSideways();\n    void remove(T value);\n    \nprivate:\n    BinaryTreeNodeGen<T>* root;   // topmost node in the tree (nullptr if empty)\n\n    void add(BinaryTreeNodeGen<T>*& node, T value);\n    bool contains(BinaryTreeNodeGen<T>* node, T value);\n    T getMin(BinaryTreeNodeGen<T>* node) const;\n    int height(BinaryTreeNodeGen<T>* node) const;\n    bool isBalanced(BinaryTreeNodeGen<T>* node) const;\n    void print(BinaryTreeNodeGen<T>* node, int order = IN_ORDER);\n    void printSideways(BinaryTreeNodeGen<T>* node, string indent);\n    void remove(BinaryTreeNodeGen<T>*& node, T value);\n};\n\n// method bodies must be in .h file for template classes\n\ntemplate <typename T>\nTreeSet<T>::TreeSet(BinaryTreeNodeGen<T>* root) {\n    this->root = root;\n}\n\ntemplate <typename T>\nTreeSet<T>::~TreeSet() {\n    // TODO\n    root = nullptr;\n}\n\ntemplate <typename T>\nvoid TreeSet<T>::add(T value) {\n    add(root, value);\n}\n\ntemplate <typename T>\nvoid TreeSet<T>::add(BinaryTreeNodeGen<T>*& node, T value) {\n    if (!node) {\n        node = new BinaryTreeNodeGen<T>(value);\n    } else if (value < node->data) {\n        add(node->left, value);\n    } else if (value > node->data) {\n        add(node->right, value);\n    }\n}\n\ntemplate <typename T>\nbool TreeSet<T>::contains(T value) {\n    return contains(root, value);\n}\n\ntemplate <typename T>\nbool TreeSet<T>::contains(BinaryTreeNodeGen<T>* node, T value) {\n    if (!node) {\n        return false;\n    } else if (value == node->data) {\n        return true;\n    } else if (value < node->data) {\n        return contains(node->left, value);\n    } else {\n        return contains(node->right, value);\n    }\n}\n\ntemplate <typename T>\nT TreeSet<T>::getMin() const {\n    return getMin(root);\n}\n\ntemplate <typename T>\nT TreeSet<T>::getMin(BinaryTreeNodeGen<T>* node) const {\n    if (!node) {\n        throw \":-(\";\n    } else if (!node->left) {\n        return node->data;\n    } else {\n        return getMin(node->left);\n    }\n}\n\ntemplate <typename T>\nint TreeSet<T>::height() const {\n    return height(root);\n}\n\ntemplate <typename T>\nint TreeSet<T>::height(BinaryTreeNodeGen<T>* node) const {\n    if (!node) {\n        return 0;\n    } else {\n        int l = height(node->left);\n        int r = height(node->right);\n        return max(l, r) + 1;\n    }\n}\n\ntemplate <typename T>\nbool TreeSet<T>::isBalanced() const {\n    return isBalanced(root);\n}\n\ntemplate <typename T>\nbool TreeSet<T>::isBalanced(BinaryTreeNodeGen<T>* node) const {\n    if (!node) {\n        return true;\n    } else {\n        int l = height(node->left);\n        int r = height(node->right);\n        int bf = r - l;\n        if (abs(bf) > 1) {\n            cout << \"imbalanced: \" << node->data << \" (balance factor: \" << bf << \")\" << endl;\n        }\n        // inefficient because we want to print ALL imbalanced nodes\n        bool balL = isBalanced(node->left);\n        bool balR = isBalanced(node->right);\n        return abs(l - r) <= 1 && balL && balR;\n    }\n}\n\ntemplate <typename T>\nvoid TreeSet<T>::print(int order) {\n    print(root, order);\n    cout << endl;\n}\n\ntemplate <typename T>\nvoid TreeSet<T>::print(BinaryTreeNodeGen<T>* node, int order) {\n    if (node) {\n        if (order == PRE_ORDER) {\n            cout << node->data << \" \";\n            cout.flush();\n        }\n        print(node->left, order);\n        if (order == IN_ORDER) {\n            cout << node->data << \" \";\n            cout.flush();\n        }\n        print(node->right, order);\n        if (order == POST_ORDER) {\n            cout << node->data << \" \";\n            cout.flush();\n        }\n    }\n}\n\ntemplate <typename T>\nvoid TreeSet<T>::printSideways() {\n    printSideways(root, \"\");\n}\n\ntemplate <typename T>\nvoid TreeSet<T>::printSideways(BinaryTreeNodeGen<T>* node, string indent) {\n    if (node) {\n        printSideways(node->right, indent + \"  \");\n        cout << indent << node->data << endl;\n        printSideways(node->left, indent + \"  \");\n    }\n}\n\ntemplate <typename T>\nvoid TreeSet<T>::remove(T value) {\n    remove(root, value);\n}\n\ntemplate <typename T>\nvoid TreeSet<T>::remove(BinaryTreeNodeGen<T>*& node, T value) {\n    if (!node) {\n        // do nothing\n    } else if (value < node->data) {\n        remove(node->left, value);\n    } else if (value > node->data) {\n        remove(node->right, value);\n    } else {\n        // remove this node\n        if (!node->left && !node->right) {\n            delete node;\n            node = nullptr;\n        } else if (!node->left) {\n            BinaryTreeNodeGen<T>* trash = node;\n            node = node->right;\n            delete trash;\n        } else if (!node->right) {\n            BinaryTreeNodeGen<T>* trash = node;\n            node = node->left;\n            delete trash;\n        } else {\n            T min = getMin(node->right);\n            remove(node->right, min);\n            node->data = min;\n        }\n    }\n}\n\n#endif // _binarytree_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/src/BinaryTreeMap.cpp",
    "content": "/*\n * CS 106B, Marty Stepp\n * This file contains the implementation of the BinaryTreeMap class,\n * which defines a map from string->integer using a binary search tree.\n * See BinaryTreeMap.h for a description of each member.\n *\n * @version 2015/07/21\n */\n\n#define INTERNAL_INCLUDE 1\n#include <string>\n#include \"BinaryTreeMap.h\"\n#include \"strlib.h\"\n#undef INTERNAL_INCLUDE\n\nBinaryTreeMap::BinaryTreeMap() {\n    m_root = nullptr;\n}\n\nBinaryTreeMap::~BinaryTreeMap() {\n    // TODO: implement\n\n}\n\nbool BinaryTreeMap::containsKey(string key) const {\n    return containsKey(m_root, key);\n}\n\nbool BinaryTreeMap::containsKey(BinaryTreeMapNode* node, string key) const {\n    if (!node) {\n        return false;\n    } else if (key == node->key) {\n        return true;\n    } else if (key < node->key) {\n        return containsKey(node->left, key);\n    } else {  // key > node->key\n        return containsKey(node->right, key);\n    }\n}\n\nint BinaryTreeMap::get(string key) const {\n    return get(m_root, key);\n}\n\nint BinaryTreeMap::get(BinaryTreeMapNode* node, string key) const {\n    if (!node) {\n        return 0;\n    } else if (key == node->key) {\n        return node->value;\n    } else if (key < node->key) {\n        return get(node->left, key);\n    } else {  // key > node->key\n        return get(node->right, key);\n    }\n}\n\nbool BinaryTreeMap::isEmpty() const {\n    return m_size == 0;\n}\n\nvoid BinaryTreeMap::put(string key, int value) {\n    put(m_root, key, value);\n}\n\nvoid BinaryTreeMap::put(BinaryTreeMapNode*& node, string key, int value) {\n    if (!node) {\n        node = new BinaryTreeMapNode(key, value);\n        m_size++;\n    } else if (node->key == key) {\n        node->value = value;\n    } else if (key < node->key) {\n        put(node->left, key, value);\n    } else {  // key > node->key\n        put(node->right, key, value);\n    }\n}\n\nvoid BinaryTreeMap::remove(string key) {\n    remove(m_root, key);\n}\n\nvoid BinaryTreeMap::remove(BinaryTreeMapNode*& node, string key) {\n    if (!node) {\n        // not here, nothing to do\n    } else if (key == node->key) {\n        // remove THIS node\n        BinaryTreeMapNode* trash = nullptr;\n        if (node->isLeaf()) {\n            trash = node;\n            node = nullptr;\n        } else if (!node->right) {\n            // left child only; replace me with left\n            trash = node;\n            node = node->left;\n        } else if (!node->left) {\n            // right child only; replace me with right\n            trash = node;\n            node = node->right;\n        } else {\n            // :-( both children alive\n            BinaryTreeMapNode* rightMinNode = getMin(node->right);\n            node->key = rightMinNode->key;\n            node->value = rightMinNode->value;\n            remove(node->right, rightMinNode->key);\n        }\n\n        m_size--;\n        if (trash) {\n            delete trash;\n        }\n    } else if (key < node->key) {\n        remove(node->left, key);\n    } else {  // key > node->key\n        remove(node->right, key);\n    }\n}\n\nBinaryTreeMapNode* BinaryTreeMap::getMin(BinaryTreeMapNode* node) const {\n    if (!node || !node->left) {\n        return node;\n    } else {\n        return getMin(node->left);\n    }\n}\n\nint BinaryTreeMap::size() const {\n    return m_size;\n}\n"
  },
  {
    "path": "Archived/autograder-empty-project/src/BinaryTreeMap.h",
    "content": "/*\n * CS 106B, Marty Stepp\n * This file contains the declaration of the BinaryTreeMap class,\n * which defines a map from string->integer using a binary search tree.\n * See BinaryTreeMap.cpp for implementation of each member.\n *\n * @version 2015/07/21\n */\n\n#ifndef _binarytreemap_h\n#define _binarytreemap_h\n\n#include <iostream>\n#include <string>\n#include \"BinaryTreeMapNode.h\"\nusing namespace std;\n\nclass BinaryTreeMap {\npublic:\n    /*\n     * Constructs a new tree map.\n     */\n    BinaryTreeMap();\n\n    /*\n     * Frees memory that was allocated by this tree map.\n     */\n    ~BinaryTreeMap();\n    \n    /*\n     * Returns true if the given key is contained in this map.\n     */\n    bool containsKey(string key) const;\n\n    /*\n     * Returns the value associated with the given key in this map.\n     * If the given key is not associated with any value, returns 0.\n     */\n    int get(string key) const;\n\n    /*\n     * Returns true if this map does not contain any key/value pairs.\n     */\n    bool isEmpty() const;\n\n    /*\n     * Adds the given key/value pair to this tree map, if not already present.\n     */\n    void put(string key, int value);\n\n    /*\n     * Removes the given key and its associated value from this tree map, if it was present.\n     */\n    void remove(string key);\n\n    /*\n     * Returns the number of key/value pairs in this map.\n     */\n    int size() const;\n    \nprivate:\n    BinaryTreeMapNode* m_root;   // topmost node in the tree (null if empty)\n    int m_size;            // # of k/v pairs in map (0 if empty)\n\n    /*\n     * Recursive helpers to implement the above public members.\n     * Each helper accepts a pointer to the part of the tree to process.\n     */\n    bool containsKey(BinaryTreeMapNode* node, string key) const;\n    int get(BinaryTreeMapNode* node, string key) const;\n    BinaryTreeMapNode* getMin(BinaryTreeMapNode* node) const;\n    void put(BinaryTreeMapNode*& node, string key, int value);\n    void remove(BinaryTreeMapNode*& node, string key);\n};\n\n#endif\n"
  },
  {
    "path": "Archived/autograder-empty-project/src/BinaryTreeMapNode.h",
    "content": "/*\n * CS 106B, Marty Stepp\n * This file contains the declaration of the TreeMapNode structure.\n * A TreeMapNode stores one string/integer key/value pair in a tree map.\n *\n * @version 2015/07/21\n */\n\n#ifndef _binarytreemapnode_h\n#define _binarytreemapnode_h\n\n#include <string>\nusing namespace std;\n\nstruct BinaryTreeMapNode {\n    string key;\n    int value;\n    BinaryTreeMapNode* left;\n    BinaryTreeMapNode* right;\n\n    /*\n     * Constructs a new tree node with the given key/value and left/right links.\n     */\n    BinaryTreeMapNode(string key, int value, BinaryTreeMapNode* left = nullptr, BinaryTreeMapNode* right = nullptr) {\n        this->key = key;\n        this->value = value;\n        this->left = left;\n        this->right = right;\n    }\n    \n    /*\n     * Returns true if this node has no children.\n     */\n    bool isLeaf() {\n        return !left && !right;\n    }\n};\n\n#endif\n"
  },
  {
    "path": "Archived/autograder-empty-project/src/BinaryTreeNode.h",
    "content": "/*\n * This file contains the declaration of the BinaryTreeNode structure.\n * A BinaryTreeNode stores one integer piece of data in a binary tree of integers.\n *\n * @version 2015/11/10\n * - added nodes for char, double, string\n * @version 2015/07/21\n * - initial version\n */\n\n#ifndef _binarytreenode_h\n#define _binarytreenode_h\n\n#include <iostream>\n#include <string>\n#include \"queue.h\"\n#include \"strlib.h\"\n\ntemplate <typename T>\nclass BinaryTreeNodeGen {\npublic:\n    static int s_allocated;\n    static int s_freed;\n    T data;\n    BinaryTreeNodeGen<T>* left;\n    BinaryTreeNodeGen<T>* right;\n\n    /*\n     * Constructs a new tree node with the given data and left/right links.\n     */\n    BinaryTreeNodeGen<T>(const T& data = T(), BinaryTreeNodeGen* left = nullptr, BinaryTreeNodeGen* right = nullptr);\n    ~BinaryTreeNodeGen<T>();\n    bool isLeaf() const;\n};\n\n// define various node types so that some students need not learn C++ templates\ntypedef BinaryTreeNodeGen<int> BinaryTreeNode;\ntypedef BinaryTreeNodeGen<char> BinaryTreeNodeChar;\ntypedef BinaryTreeNodeGen<double> BinaryTreeNodeDouble;\ntypedef BinaryTreeNodeGen<std::string> BinaryTreeNodeString;\n\ntemplate <typename T>\nstd::ostream& operator <<(std::ostream& out, BinaryTreeNodeGen<T>* node);\n\ntemplate <typename T>\nstd::istream& operator >>(std::istream& input, BinaryTreeNodeGen<T>*& node);\n\n\n// begin \".cpp\" section\n\ntemplate <typename T>\nint BinaryTreeNodeGen<T>::s_allocated = 0;\n\ntemplate <typename T>\nint BinaryTreeNodeGen<T>::s_freed = 0;\n\n/*\n * Constructs a new tree node with the given data and left/right links.\n */\ntemplate <typename T>\nBinaryTreeNodeGen<T>::BinaryTreeNodeGen(const T& data, BinaryTreeNodeGen* left, BinaryTreeNodeGen* right) {\n    this->data = data;\n    this->left = left;\n    this->right = right;\n    s_allocated++;\n}\n\ntemplate <typename T>\nBinaryTreeNodeGen<T>::~BinaryTreeNodeGen() {\n    s_freed++;\n    this->left = nullptr;\n    this->right = nullptr;\n}\n\ntemplate <typename T>\nbool BinaryTreeNodeGen<T>::isLeaf() const {\n    return left == nullptr && right == nullptr;\n}\n\ntemplate <typename T>\nvoid parseBinaryTreeNodeFromQueue(Queue<std::string>& tokenQueue, BinaryTreeNodeGen<T>*& node) {\n    if (tokenQueue.isEmpty()) {\n        node = nullptr;\n    } else if (tokenQueue.peek() == \"(\") {\n        // start of a new node\n        tokenQueue.dequeue();   // the \"(\" token\n        T data;\n        std::istringstream isstr(tokenQueue.dequeue());\n        readGenericValue(isstr, data);\n        node = new BinaryTreeNodeGen<T>(data);\n        parseBinaryTreeNodeFromQueue(tokenQueue, node->left);\n        parseBinaryTreeNodeFromQueue(tokenQueue, node->right);\n        tokenQueue.dequeue();   // the \")\" token\n    } else if (tokenQueue.peek() == \"NULL\" || tokenQueue.peek() == \"null\"\n               || tokenQueue.peek() == \"nullptr\" || tokenQueue.peek() == \"/\") {\n        tokenQueue.dequeue();\n        node = nullptr;\n    } else {\n        node = nullptr;\n    }\n}\n\ntemplate <typename T>\nvoid makeTreeFromString(std::string s, BinaryTreeNodeGen<T>*& node) {\n    // make easier for tokenizing\n    s = stringReplace(s, \"(\", \"( \");\n    s = stringReplace(s, \"[\", \"( \");\n    s = stringReplace(s, \")\", \" ) \");\n    s = stringReplace(s, \"]\", \" ) \");\n    s = stringReplace(s, \", \", \" , \");\n    s = stringReplace(s, \"  \", \" \");\n    s = stringReplace(s, \"  \", \" \");\n    s = stringReplace(s, \"  \", \" \");\n    s = stringReplace(s, \"  \", \" \");\n    Vector<std::string> tokens = stringSplit(s, \" \");\n    Queue<std::string> tokenQueue;\n    for (const std::string& token : tokens) {\n        tokenQueue.enqueue(token);\n    }\n\n    parseBinaryTreeNodeFromQueue(tokenQueue, node);\n}\n\ntemplate <typename T>\nstd::ostream& binaryTreeOpLtLtHelper(std::ostream& out, BinaryTreeNodeGen<T>* node) {\n    if (!node) {\n        out << \"/\";\n    } else {\n        out << \"(\";\n        writeGenericValue(out, node->data, /* forceQuotes */ true);\n        if (!node->isLeaf()) {\n            out << \" \";\n            binaryTreeOpLtLtHelper(out, node->left);\n            if (node->right) {\n                out << \" \";\n                binaryTreeOpLtLtHelper(out, node->right);\n            }\n        }\n        out << \")\";\n    }\n    return out;\n}\n\ntemplate <typename T>\nstd::ostream& operator <<(std::ostream& out, BinaryTreeNodeGen<T>* node) {\n    binaryTreeOpLtLtHelper(out, node);\n    return out;\n}\n\ntemplate <typename T>\nstd::istream& operator >>(std::istream& input, BinaryTreeNodeGen<T>*& node) {\n    std::string line;\n    if (getline(input, line)) {\n        makeTreeFromString(line, node);\n    } else {\n        node = nullptr;\n    }\n    return input;\n}\n\n#endif // _binarytreenode_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/src/HashTableMap.h",
    "content": "/*\n * CS 106B, Marty Stepp\n * This file contains the declaration of the HashTableMap class, which implements\n * a map using a hash table.\n * The hash table uses separate chaining (a linked list of values in each\n * hash bucket) to resolve hash collisions.\n *\n * @version 2015/07/21\n */\n\n#ifndef _hashtablemap_h\n#define _hashtablemap_h\n\n#include <iomanip>\n#include <iostream>\n#include <string>\n\n/*\n * A HashNode stores a single integer of data and a link to another node.\n */\ntemplate <typename K, typename V>\nstruct HashTableMapNode {\n    K key;\n    V value;\n    HashTableMapNode* next;\n    HashTableMapNode(K key, V value, HashTableMapNode* next = nullptr) {\n        this->key = key;\n        this->value = value;\n        this->next = next;\n    }\n};\n\ntemplate <typename K, typename V>\nclass HashTableMap {\npublic:\n    HashTableMap(int capacity = 10, double rehashLoadFactor = 0.5);\n    void put(K key, V value);\n    bool containsKey(K key) const;\n    V get(K key) const;\n    double loadFactor() const;\n    void printStructure() const;\n    void remove(K key);\n    void setRehashLoadFactor(double loadFactor);\n\nprivate:\n    HashTableMapNode<K, V>** elements;\n    int mysize;\n    int capacity;\n    double rehashLoadFactor;\n    int __hashCode(int n) const;\n    int __hashCode(double d) const;\n    int __hashCode(string s) const;\n    int _hashCode(K key) const;\n\n    void rehash();\n};\n\ntemplate <typename K, typename V>\nHashTableMap<K, V>::HashTableMap(int capacity, double rehashLoadFactor) {\n    mysize = 0;\n    this->capacity = capacity;\n    elements = new HashTableMapNode<K, V>*[capacity]();\n    this->rehashLoadFactor = rehashLoadFactor;\n}\n\ntemplate <typename K, typename V>\nvoid HashTableMap<K, V>::put(K key, V value) {\n    int index = _hashCode(key);\n    if (containsKey(key)) {\n        // already has a pair for this key; replace the value\n        HashTableMapNode<K, V>* current = elements[index];\n        while (current) {\n            if (current->key == key) {\n                current->value = value;\n                break;\n            }\n            current = current->next;\n        }\n    } else {\n        // add a new pair to the front of the chain\n        elements[index] = new HashTableMapNode<K, V>(key, value, elements[index]);\n        mysize++;\n        if (loadFactor() >= rehashLoadFactor) {\n            rehash();\n        }\n    }\n}\n\ntemplate <typename K, typename V>\nbool HashTableMap<K, V>::containsKey(K key) const {\n    int index = _hashCode(key);\n    HashTableMapNode<K, V>* current = elements[index];\n    while (current) {\n        if (current->key == key) {\n            return true;\n        }\n        current = current->next;\n    }\n    return false;\n}\n\ntemplate <typename K, typename V>\nV HashTableMap<K, V>::get(K key) const {\n    int index = _hashCode(key);\n    HashTableMapNode<K, V>* current = elements[index];\n    while (current) {\n        if (current->key == key) {\n            return current->value;\n        }\n        current = current->next;\n    }\n    return V();\n}\n\ntemplate <typename K, typename V>\nint HashTableMap<K, V>::__hashCode(int n) const {\n    return n;\n}\n\ntemplate <typename K, typename V>\nint HashTableMap<K, V>::__hashCode(double d) const {\n    return hashCode(d);\n}\n\ntemplate <typename K, typename V>\nint HashTableMap<K, V>::__hashCode(string s) const {\n    return hashCode(s);\n}\n\ntemplate <typename K, typename V>\nint HashTableMap<K, V>::_hashCode(K key) const {\n    return abs(__hashCode(key)) % capacity;\n}\n\ntemplate <typename K, typename V>\ndouble HashTableMap<K, V>::loadFactor() const {\n    return (double) mysize / capacity;\n}\n\ntemplate <typename K, typename V>\nvoid HashTableMap<K, V>::printStructure() const {\n    for (int i = 0; i < capacity; i++) {\n        cout << \"[\" << setw(2) << i << \"]:\";\n        HashTableMapNode<K, V>* curr = elements[i];\n        while (curr) {\n            cout << \" -> \" << setw(2) << curr->key << \":\" << curr->value;\n            curr = curr->next;\n        }\n        cout << endl;\n    }\n    cout << \"size        = \" << mysize << endl;\n    cout << \"capacity    = \" << capacity << endl;\n    cout << \"load factor = \" << loadFactor() << endl;\n}\n\ntemplate <typename K, typename V>\nvoid HashTableMap<K, V>::rehash() {\n    HashTableMapNode<K, V>** oldElements = elements;\n    elements = new HashTableMapNode<K, V>*[capacity * 2]();\n    capacity *= 2;\n    mysize = 0;\n    \n    for (int i = 0; i < capacity/2; i++) {\n        HashTableMapNode<K, V>* curr = oldElements[i];\n        while (curr) {\n            put(curr->key, curr->value);\n            HashTableMapNode<K, V>* trash = curr;\n            curr = curr->next;\n            delete trash;\n        }\n    }\n    \n    delete oldElements;\n}\n\ntemplate <typename K, typename V>\nvoid HashTableMap<K, V>::remove(K key) {\n    int index = _hashCode(key);\n    if (!elements[index]) {\n        return;\n    } else if (elements[index]->key == key) {\n        // remove from front\n        HashTableMapNode<K, V>* trash = elements[index];\n        elements[index] = elements[index]->next;\n        delete trash;\n        mysize--;\n    } else {\n        // remove from later in the chain\n        HashTableMapNode<K, V>* current = elements[index];\n        while (current->next) {\n            if (current->next->key == key) {\n                HashTableMapNode<K, V>* trash = current->next;\n                current->next = current->next->next;\n                delete trash;\n                mysize--;\n                break;\n            }\n            current = current->next;\n        }\n    }\n}\n\ntemplate <typename K, typename V>\nvoid HashTableMap<K, V>::setRehashLoadFactor(double loadFactor) {\n    this->rehashLoadFactor = loadFactor;\n}\n\n#endif\n"
  },
  {
    "path": "Archived/autograder-empty-project/src/HashTableSet.cpp",
    "content": "/*\n * CS 106B, Marty Stepp\n * This file contains the implementation of the HashTableSet class, which implements\n * a set of integers using a hash table.\n * See HashTableSet.h for the declarations of each member.\n *\n * @version 2015/07/21\n */\n\n#define INTERNAL_INCLUDE 1\n#include <iostream>\n#include <iomanip>\n#include \"HashTableSet.h\"\n#undef INTERNAL_INCLUDE\n\nHashTableSet::HashTableSet() {\n    m_size = 0;\n    m_capacity = 10;\n    m_elements = new HashTableNode*[m_capacity]();   // all null\n}\n\nvoid HashTableSet::add(int value) {\n    if (!contains(value)) {\n        int index = hashCode(value);\n        HashTableNode* node = new HashTableNode(value);\n        node->next = m_elements[index];\n        m_elements[index] = node;\n        m_size++;\n    }\n}\n\nbool HashTableSet::contains(int value) const {\n    int index = hashCode(value);\n    HashTableNode* current = m_elements[index];\n    while (current) {\n        if (current->data == value) {\n            return true;\n        }\n        current = current->next;\n    }\n    return false;\n}\n\nint HashTableSet::hashCode(int value) const {\n    return abs(value) % m_capacity;\n}\n\nvoid HashTableSet::remove(int /*value*/) {\n    // not implemented\n}\n\nvoid HashTableSet::printStructure() const {\n    for (int i = 0; i < m_capacity; i++) {\n        std::cout << \"[\" << std::setw(2) << i << \"]:\";\n        HashTableNode* curr = m_elements[i];\n        while (curr) {\n            std::cout << \" -> \" << std::setw(2) << curr->data;\n            curr = curr->next;\n        }\n        std::cout << \" /\" << std::endl;\n    }\n    // cout << \"size = \" << m_size << \", load factor = \" << loadFactor() << endl;\n}\n"
  },
  {
    "path": "Archived/autograder-empty-project/src/HashTableSet.h",
    "content": "/*\n * CS 106B, Marty Stepp\n * This file contains the declaration of the HashTableSet class, which implements\n * a set of integers using a hash table.\n * The hash table uses separate chaining (a linked list of values in each\n * hash bucket) to resolve hash collisions.\n * See HashTableSet.cpp for the implementation of each member.\n *\n * @version 2015/07/21\n */\n\n#ifndef _hashtableset_h\n#define _hashtableset_h\n\n#include <iostream>\n#include <string>\n\n/*\n * A HashNode stores a single integer of data and a link to another node.\n */\nstruct HashTableNode {\n    int data;\n    HashTableNode* next;\n    HashTableNode(int data = 0, HashTableNode* next = nullptr) {\n        this->data = data;\n        this->next = next;\n    }\n};\n\nclass HashTableSet {\npublic:\n    HashTableSet();\n    void add(int value);\n    bool contains(int value) const;\n    void remove(int value);\n    void printStructure() const;\n\n    void trimChains(int k);\n\nprivate:\n    HashTableNode** m_elements;\n    int m_size;\n    int m_capacity;\n    int hashCode(int value) const;\n};\n\n#endif\n\n\n\n\n\n"
  },
  {
    "path": "Archived/autograder-empty-project/src/HeapPriorityQueue.cpp",
    "content": "/*\n * CS 106B, Marty Stepp\n * This file implements the HeapPriorityQueue class.\n *\n * @version 2015/07/29\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"HeapPriorityQueue.h\"\n#include <string>\n#include \"error.h\"\n#include \"strlib.h\"\n#include \"vector.h\"\n#undef INTERNAL_INCLUDE\n\nHeapPriorityQueue::HeapPriorityQueue(PQEntry* elements, int capacity, int mysize) {\n    this->elements = elements;\n    this->capacity = capacity;\n    this->mysize = mysize;\n    this->hackPQ = new PriorityQueue<string>();\n}\n\nHeapPriorityQueue::~HeapPriorityQueue() {\n    if (elements) {\n        delete[] elements;\n    }\n    delete hackPQ;\n}\n\nvoid HeapPriorityQueue::changePriority(string value, double newPriority) {\n    hackPQ->changePriority(value, newPriority);\n}\n\nvoid HeapPriorityQueue::clear() {\n    hackPQ->clear();\n    mysize = hackPQ->size();\n}\n\nstring HeapPriorityQueue::dequeue() {\n    string result = hackPQ->dequeue();\n    mysize = hackPQ->size();\n    return result;\n}\n\nvoid HeapPriorityQueue::enqueue(string value, double priority) {\n    hackPQ->enqueue(value, priority);\n    mysize = hackPQ->size();\n}\n\nbool HeapPriorityQueue::isEmpty() const {\n    return hackPQ->isEmpty();\n}\n\nstring HeapPriorityQueue::peek() const {\n    return hackPQ->peek();\n}\n\ndouble HeapPriorityQueue::peekPriority() const {\n    return hackPQ->peekPriority();\n}\n\nvoid HeapPriorityQueue::printSideways(int index, string indent) const {\n    if (index <= size()) {\n        printSideways(index*2+1, indent + \"    \");   // right\n        string value    = hackPQ->__getValueFromHeap(index-1);\n        double priority = hackPQ->__getPriorityFromHeap(index-1);\n        cout << indent << value << \":\" << priority << endl;\n        printSideways(index*2, indent + \"    \");     // left\n    }\n}\n\nint HeapPriorityQueue::size() const {\n    return mysize;\n}\n\nstring HeapPriorityQueue::toString() const {\n    ostringstream out;\n    out << *this;\n    return out.str();\n}\n\nostream& operator <<(ostream& out, const HeapPriorityQueue& pq) {\n    out << *pq.hackPQ;\n    return out;\n}\n\nistream& operator >>(istream& input, HeapPriorityQueue& pq) {\n    char ch = '\\0';\n    input >> ch;\n    if (ch != '{') {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n        error(\"HeapPriorityQueue::operator >>: Missing {\");\n#endif\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n    pq.clear();\n    input >> ch;\n    if (ch != '}') {\n        input.unget();\n        while (true) {\n            std::string value;\n            if (!readGenericValue(input, value)) {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n                error(\"HeapPriorityQueue::operator >>: parse error\");\n#endif\n                return input;\n            }\n            input >> ch;\n            if (ch != ':') {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n                error(\"HeapPriorityQueue::operator >>: Missing colon after priority\");\n#endif\n                input.setstate(std::ios_base::failbit);\n                return input;\n            }\n            double priority = 0.0;\n            input >> priority;\n            pq.enqueue(value, priority);\n            \n            input >> ch;\n            if (ch == '}') {\n                break;\n            }\n            if (ch != ',') {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n                error(std::string(\"HeapPriorityQueue::operator >>: Unexpected character \") + ch);\n#endif\n                input.setstate(std::ios_base::failbit);\n                return input;\n            }\n        }\n    }\n    return input;\n}\n\nvoid stringToPQ(HeapPriorityQueue& pq, string elements) {\n    Vector<string> pairs = stringSplit(elements, \", \");\n    for (string pair : pairs) {\n        Vector<string> parts = stringSplit(pair, \":\");\n        string value = parts[0];\n        int priority = stringToInteger(parts[1]);\n        pq.enqueue(value, priority);\n    }\n}\n"
  },
  {
    "path": "Archived/autograder-empty-project/src/HeapPriorityQueue.h",
    "content": "/*\n * CS 106B, Marty Stepp\n * This file declares the HeapPriorityQueue class.\n *\n * @version 2015/07/29\n */\n\n#ifndef _heappriorityqueue_h\n#define _heappriorityqueue_h\n\n#include <fstream>\n#include <iostream>\n#include <string>\n#include \"pqueue.h\"\n\nusing namespace std;\n\nstruct PQEntry {\n    string data;\n    double priority;\n};\n\nclass HeapPriorityQueue {\npublic:\n    HeapPriorityQueue(PQEntry* elements = nullptr, int capacity = 10, int mysize = 0);\n    ~HeapPriorityQueue();\n    void changePriority(string value, double newPriority);\n    void clear();\n    string dequeue();\n    void enqueue(string value, double priority);\n    bool isEmpty() const;\n    string peek() const;\n    double peekPriority() const;\n    void printSideways(int index = 1, string indent = \"\") const;\n    int size() const;\n    string toString() const;\n    \n    friend ostream& operator <<(ostream& out, const HeapPriorityQueue& pq);\n    friend istream& operator >>(istream& input, HeapPriorityQueue& pq);\n    \n    // exam problems\n    int atLevel(int level) const;\n\nprivate:\n    PQEntry* elements;   // array of element data\n    int capacity;        // length of elements array\n    int mysize;          // number of elements that have been added\n    \n    PriorityQueue<string>* hackPQ;\n};\n\n// \"a:4, b:16, c:7\" => PQ\nvoid stringToPQ(HeapPriorityQueue& pq, string elements);\n\n#endif\n"
  },
  {
    "path": "Archived/autograder-empty-project/src/LinkedIntList.cpp",
    "content": "/*\n * LinkedIntList.cpp implements the LinkedIntList class behavior declared in LinkedIntList.h.\n *\n * @version 2016/11/11\n * - made into template class\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"LinkedIntList.h\"\n#undef INTERNAL_INCLUDE\n\nLinkedIntList::LinkedIntList()\n        : front(nullptr), m_locked(false) {\n    // empty\n}\n\n/*\n * Constructs a new empty list storing the given elements.\n */\nLinkedIntList::LinkedIntList(std::initializer_list<int> list)\n        : front(nullptr), m_locked(false) {\n    for (int n : list) {\n        add(n);\n    }\n}\n\nLinkedIntList::~LinkedIntList() {\n    m_locked = false;\n    clear();\n}\n\nvoid LinkedIntList::add(int value) {\n    checkLocked(\"add\");\n    if (!front) {\n        // empty list: add this node as the new front\n        front = new ListNode(value);\n    } else {\n        // non-empty list: move to end, attach new node\n        ListNode* current = front;\n        while (current->next) {\n            current = current->next;\n        }\n        current->next = new ListNode(value);\n    }\n}\n\nvoid LinkedIntList::clear() {\n    checkLocked(\"clear\");\n    while (front) {\n        ListNode* temp = front;\n        front = front->next;\n        delete temp;\n    }\n}\n\nint LinkedIntList::get(int index) const {\n    checkLocked(\"get\");\n    checkIndex(index, 0, size() - 1);\n    ListNode* current = front;\n    for (int i = 0; i < index; i++) {\n        current = current->next;\n    }\n    return current->data;\n}\n\nvoid LinkedIntList::insert(int index, int value) {\n    checkLocked(\"insert\");\n    checkIndex(index, 0, size());\n    if (index == 0) {\n        ListNode* temp = front;\n        front = new ListNode(value, temp);\n    } else {\n        ListNode* current = front;\n        for (int i = 0; i < index - 1; i++) {\n            current = current->next;\n        }\n        ListNode* temp = current->next;\n        current->next = new ListNode(value, temp);\n    }\n}\n\nbool LinkedIntList::isEmpty() const {\n    return front == nullptr;\n}\n\nvoid LinkedIntList::remove(int index) {\n    checkLocked(\"remove\");\n    checkIndex(index, 0, size() - 1);\n    ListNode* trash;\n    if (index == 0) {\n        trash = front;\n        front = front->next;\n    } else {\n        ListNode* curr = front;\n        for (int i = 0; i < index-1; i++) {\n            curr = curr->next;\n        }\n        trash = curr->next;\n        curr->next = curr->next->next;\n    }\n    delete trash;\n}\n\nvoid LinkedIntList::set(int index, int value) {\n    checkLocked(\"set\");\n    checkIndex(index, 0, size() - 1);\n    ListNode* current = front;\n    for (int i = 0; i < index; i++) {\n        current = current->next;\n    }\n    current->data = value;\n}\n\nint LinkedIntList::size() const {\n    checkLocked(\"size\");\n    int count = 0;\n    ListNode* current = front;\n    while (current) {\n        count++;\n        current = current->next;\n    }\n    return count;\n}\n\n// TODO: put printing code into operator <<, call that from toString\nstd::string LinkedIntList::toString() const {\n    std::ostringstream out;\n    out << *this;\n    return out.str();\n}\n\nvoid LinkedIntList::setLocked(bool locked) {\n    m_locked = locked;\n}\n\nvoid LinkedIntList::checkIndex(int index, int min, int max) const {\n    if (index < min || index > max) {\n        throw std::string(\"Invalid index\");\n    }\n}\n\nvoid LinkedIntList::checkLocked(std::string memberName) const {\n    if (m_locked) {\n        error(\"LinkedIntList forbidden from calling member function \" + memberName);\n    }\n}\n\nLinkedIntList& LinkedIntList::operator =(const LinkedIntList& src) {\n    if (this != &src) {\n        // deep copy\n        clear();\n        for (int i = 0; i < src.size(); i++) {\n            add(src.get(i));\n        }\n    }\n    return *this;\n}\n\nstd::ostream& operator <<(std::ostream& out, const LinkedIntList& list) {\n    if (list.isEmpty()) {\n        out << \"{}\";\n    } else {\n        out << list.front;\n    }\n    return out;\n}\n\nstd::istream& operator >>(std::istream& input, LinkedIntList& list) {\n    char ch = '\\0';\n    input >> ch;\n    if (ch != '{') {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n        error(\"LinkedIntList::operator >>: Missing {\");\n#endif\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n    list.clear();\n    input >> ch;\n    if (ch != '}') {\n        input.unget();\n        while (true) {\n            int value;\n            if (!readGenericValue(input, value)) {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n                error(\"LinkedIntList::operator >>: parse error\");\n#endif\n                return input;\n            }\n            list.add(value);\n            input >> ch;\n            if (ch == '}') {\n                break;\n            } else if (ch != ',') {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n                error(std::string(\"LinkedIntList::operator >>: Unexpected character \") + ch);\n#endif\n                input.setstate(std::ios_base::failbit);\n                return input;\n            }\n        }\n    }\n    return input;\n}\n"
  },
  {
    "path": "Archived/autograder-empty-project/src/LinkedIntList.h",
    "content": "/*\n * LinkedIntList is an example of a second implementation of a basic data structure.\n * A LinkedIntList is a sequential collection of integers stored with 0-based integer\n * indexes and internally represented as a list of linked node structures.\n *\n * @version 2018/03/19\n * - changed nullptr output to {}\n * @version 2016/11/11\n * - made into template class\n * @version 2016/08/23\n * - added initializer_list support to match other lib collections\n */\n\n#ifndef _linkedintlist_h\n#define _linkedintlist_h\n\n#include <initializer_list>\n#include <iostream>\n#include <string>\n#include \"collections.h\"\n#include \"error.h\"\n#include \"hashset.h\"\n#include \"strlib.h\"\n#include \"vector.h\"\n\n/*\n * The internal structure representing a single node.\n */\ntemplate <typename T>\nclass ListNodeGen {\npublic:\n    // global count of how many nodes have been created/destroyed\n    static int s_allocated;\n    static int s_freed;\n\n    T data;           // element stored in each node\n    ListNodeGen<T>* next;   // pointer to the next node (null if none)\n\n    ListNodeGen(T d = T(), ListNodeGen<T>* n = nullptr);\n    ~ListNodeGen();\n\n    static void printChain(ListNodeGen<T>* list, std::string name = \"list\", int maxLength = 10);\n};\n\ntemplate <typename T>\nstd::ostream& operator <<(std::ostream& out, ListNodeGen<T>* front);\n\ntemplate <typename T>\nstd::istream& operator >>(std::istream& input, ListNodeGen<T>*& front);\n\n\n// begin \"cpp\" section of ListNode\n\ntemplate <typename T>\nint ListNodeGen<T>::s_allocated = 0;\n\ntemplate <typename T>\nint ListNodeGen<T>::s_freed = 0;\n\ntemplate <typename T>\nListNodeGen<T>::ListNodeGen(T d, ListNodeGen<T>* n) {\n    data = d;\n    next = n;\n    s_allocated++;\n}\n\ntemplate <typename T>\nListNodeGen<T>::~ListNodeGen() {\n    s_freed++;\n    next = nullptr;\n}\n\ntemplate <typename T>\nvoid ListNodeGen<T>::printChain(ListNodeGen<T>* list, std::string name, int maxLength) {\n    std::cout << name << \": \";\n    if (!list) {\n        std::cout << \"nullptr\" << std::endl;\n    } else {\n        ListNodeGen<T>* curr = list;\n        bool hasCycle = false;\n        for (int i = 0; curr && (maxLength <= 0 || i < maxLength); i++, curr = curr->next) {\n            std::cout << curr->data;\n            if (curr->next) {\n                std::cout << \" -> \";\n            }\n            if (i == maxLength - 1) {\n                std::cout << \" ... (cycle)\";\n                hasCycle = true;\n            }\n        }\n        if (!hasCycle) {\n            std::cout << \" /\";\n        }\n        std::cout << std::endl;\n    }\n}\n\ntemplate <typename T>\nstd::ostream& operator <<(std::ostream& out, ListNodeGen<T>* front) {\n    if (!front) {\n        // out << \"nullptr\";\n        out << \"{}\";\n    } else {\n        out << \"{\";\n        if (front) {\n            HashSet<ListNodeGen<T>*> visited;\n            writeGenericValue(out, front->data, /* forceQuotes */ true);\n            visited.add(front);\n\n            ListNodeGen<T>* curr = front->next;\n            while (curr) {\n                out << \", \";\n                writeGenericValue(out, curr->data, /* forceQuotes */ true);\n                if (visited.contains(curr)) {\n                    out << \" (cycle!)\";\n                    break;\n                }\n\n                visited.add(curr);\n                curr = curr->next;\n            }\n        }\n        out << \"}\";\n    }\n    return out;\n}\n\ntemplate <typename T>\nstd::istream& operator >>(std::istream& input, ListNodeGen<T>*& front) {\n    // read into a vector first (yeah yeah, wastes some space, oh well)\n    Vector<T> vec;\n    T element;\n    stanfordcpplib::collections::readCollection(input, vec, element, /* descriptor */ \"ListNode::operator >>\");\n\n    // now convert into a linked list\n    if (vec.isEmpty()) {\n        front = nullptr;\n    } else {\n        front = new ListNodeGen<T>(vec[0]);\n        ListNodeGen<T>* curr = front;\n        for (int i = 1; i < vec.size(); i++) {\n            curr->next = new ListNodeGen<T>(vec[i]);\n            curr = curr->next;\n        }\n    }\n\n    return input;\n}\n\ntypedef ListNodeGen<int> ListNode;\ntypedef ListNodeGen<int> ListNodeInt;\ntypedef ListNodeGen<double> ListNodeDouble;\ntypedef ListNodeGen<std::string> ListNodeString;\n\n// end \"cpp\" section of ListNode\n\n\nclass LinkedIntList {\npublic:\n    LinkedIntList();\n    LinkedIntList(std::initializer_list<int> list);\n    ~LinkedIntList();\n\n    void add(int value);\n    void clear();\n    int get(int index) const;\n    void insert(int index, int value);\n    bool isEmpty() const;\n    void remove(int index);\n    void set(int index, int value);\n    int size() const;\n    std::string toString() const;\n\n    // section problems\n    void setLocked(bool locked);\n    int min() const;\n    bool isSorted() const;\n    int countDuplicates() const;\n    void stutter();\n    int deleteBack();\n    void split();\n    void removeAll(int value);\n    void doubleList();\n    void rotate();\n    void reverse();\n    void consume(LinkedIntList& list2);\n    void transferEvens(LinkedIntList& list2);\n\n    // exam questions\n    void chopBothSides(int k);\n    void combineDuplicates();\n    void expand(int k);\n    bool isSortedBy(int k) const;\n    void mergeUpTo(int max);\n    void partitionSort();\n    bool removeRange(int min, int max);\n\n    LinkedIntList& operator =(const LinkedIntList& src);\n\n    // declared here so they can access front\n    friend std::ostream& operator <<(std::ostream& out, const LinkedIntList& list);\n    friend std::istream& operator >>(std::istream& input, LinkedIntList& list);\n\nprivate:\n    ListNode* front;   // pointer to front node in list;  null if empty\n\n    bool m_locked;     // whether to forbid method calls (for problems)\n\n    void checkIndex(int index, int min, int max) const;\n    void checkLocked(std::string memberName = \"\") const;\n};\n\n#endif // _linkedintlist_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/src/codestepbystep.cpp",
    "content": "/*\n * @version 2017/11/12\n * - added output limit of 100k chars to avoid infinite student solution output\n * @version 2017/10/06\n * - hid POSIX signal handler behind preprocessor macro\n * @version 2016/12/07\n * - added assert* methods\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"codestepbystep.h\"\n#include \"exceptions.h\"\n#include \"plainconsole.h\"\n#undef INTERNAL_INCLUDE\n\nextern void startupMainDontRunMain(int argc, char** argv);\n\nnamespace CodeStepByStep {\nstatic std::string __testToRun = \"\";\nstatic bool __runAllTests = false;\nstatic std::string __xmlOutFilename;\nstatic std::ofstream* __xout = nullptr;\nstatic void (*old_terminate)() = nullptr;\n\n// only use these if we can't use __getXmlOut (e.g. in a signal handler)\nstatic FILE* __xfout = nullptr;\n\nstd::string testToRun() {\n    return __testToRun;\n}\n\nbool runAllTests() {\n    return __runAllTests;\n}\n\nstd::string htmlDecode(const std::string& s) {\n    return ::htmlDecode(s);\n}\n\nstd::string htmlEncode(const std::string& s) {\n    return ::htmlEncode(s);\n}\n\nstd::ofstream& __getXmlOut() {\n    if (!__xout) {\n        __xout = new std::ofstream();\n    }\n    return *__xout;\n}\n\nvoid printXml(const std::string& s) {\n    __getXmlOut() << s;\n}\n\nvoid printlnXml(const std::string& s) {\n    __getXmlOut() << s << std::endl;\n}\n\nvoid printXml(bool b) {\n    __getXmlOut() << std::boolalpha << b;\n}\n\nvoid printlnXml(bool b) {\n    __getXmlOut() << std::boolalpha << b << std::endl;\n}\n\nstd::string __stackTraceToString() {\n    std::ostringstream out;\n    exceptions::printStackTrace(out);\n    return out.str();\n}\n\nvoid __printException(const std::string& type, const std::string& message,\n                      const std::string& stacktrace, int lineNumber) {\n    CodeStepByStep::__getXmlOut() << \"<exception>\\n\"\n            << \"<type>\" << type << \"</type>\" << std::endl\n            << \"<message>\" << htmlEncode(message) << \"</message>\" << std::endl\n            << \"<line>\" << lineNumber << \"</line>\" << std::endl\n            << \"<stacktrace>\" << htmlEncode(stacktrace) << \"</stacktrace>\" << std::endl\n            << \"</exception>\" << std::endl;\n    CodeStepByStep::__getXmlOut().flush();\n}\n\nvoid __openXmlOldWay(const std::string& filename) {\n    if (__xout) {\n        __getXmlOut().flush();\n        __getXmlOut().close();\n        __xout = nullptr;\n    }\n    __xfout = fopen(filename.c_str(), \"a+\");   // open for appending\n}\n\nvoid __closeXml() {\n    if (__xout) {\n        __getXmlOut().close();\n    }\n    if (__xfout) {\n        fclose(__xfout);\n        __xfout = nullptr;\n    }\n}\n\nvoid __printXml(const char* s) {\n    fputs(s, __xfout);\n    fflush(__xfout);\n}\n\nvoid __printXml(const std::string& s) {\n    fputs(s.c_str(), __xfout);\n    fflush(__xfout);\n}\n\nvoid __printlnXml(const char* s) {\n    fputs(s, __xfout);\n    fputs(\"\\n\", __xfout);\n    fflush(__xfout);\n}\n\nvoid __printlnXml(const std::string& s) {\n    fputs(s.c_str(), __xfout);\n    fputs(\"\\n\", __xfout);\n    fflush(__xfout);\n}\n\n\n// functions to parse various collections from strings\nvoid ArrayIntList_fromString(ArrayIntList& list, const std::string& str) {\n    std::istringstream input(str);\n    input >> list;\n}\n\nvoid BasicGraph_fromString(BasicGraph& graph, const std::string& str) {\n    std::istringstream input(str);\n    input >> graph;\n}\n\nvoid BinaryTree_fromString(BinaryTree& tree, const std::string& str) {\n    std::istringstream input(str);\n    input >> tree;\n}\n\nvoid BinaryTreeNode_fromString(BinaryTreeNode*& root, const std::string& str) {\n    std::istringstream input(str);\n    input >> root;\n}\n\nvoid BinaryTreeNodeptr_fromString(BinaryTreeNode*& root, const std::string& str) {\n    std::istringstream input(str);\n    input >> root;\n}\n\nvoid BinaryTreeNodeChar_fromString(BinaryTreeNodeChar*& root, const std::string& str) {\n    std::istringstream input(str);\n    input >> root;\n}\n\nvoid BinaryTreeNodeCharptr_fromString(BinaryTreeNodeChar*& root, const std::string& str) {\n    std::istringstream input(str);\n    input >> root;\n}\n\nvoid BinaryTreeNodeDouble_fromString(BinaryTreeNodeDouble*& root, const std::string& str) {\n    std::istringstream input(str);\n    input >> root;\n}\n\nvoid BinaryTreeNodeString_fromString(BinaryTreeNodeString*& root, const std::string& str) {\n    std::istringstream input(str);\n    input >> root;\n}\n\nvoid HeapPriorityQueue_fromString(HeapPriorityQueue& pqueue, const std::string& str) {\n    std::istringstream input(str);\n    input >> pqueue;\n}\n\nvoid LinkedIntList_fromString(LinkedIntList& list, const std::string& str) {\n    std::istringstream input(str);\n    input >> list;\n}\n\nvoid ListNode_fromString(ListNode*& ptr, const std::string& str) {\n    std::istringstream input(str);\n    input >> ptr;\n}\n\nvoid ListNodeptr_fromString(ListNode*& ptr, const std::string& str) {\n    std::istringstream input(str);\n    input >> ptr;\n}\n\nvoid ListNodeDouble_fromString(ListNodeDouble*& ptr, const std::string& str) {\n    std::istringstream input(str);\n    input >> ptr;\n}\n\nvoid ListNodeDoubleptr_fromString(ListNodeDouble*& ptr, const std::string& str) {\n    std::istringstream input(str);\n    input >> ptr;\n}\n\nvoid ListNodeString_fromString(ListNodeString*& ptr, const std::string& str) {\n    std::istringstream input(str);\n    input >> ptr;\n}\n\nvoid ListNodeStringptr_fromString(ListNodeString*& ptr, const std::string& str) {\n    std::istringstream input(str);\n    input >> ptr;\n}\n\n\n// CODE FOR HANDLING SIGNALS (VARIOUS PROGRAM CRASHES)\nvoid __codeStepByStepSignalHandler(int sig) {\n    signal(sig, SIG_DFL);   // turn signal handler off\n\n    // tailor the error message to the kind of signal that occurred\n    CodeStepByStep::__closeXml();\n    __openXmlOldWay(__xmlOutFilename);\n    if (sig == SIGSEGV) {\n        __printXml(\"<exception>\\n<type>SIGSEGV</type>\\n<message>segmentation fault</message>\\n</exception>\\n\");\n    } else if (sig == SIGABRT) {\n        __printXml(\"<exception>\\n<type>SIGABRT</type>\\n<message>abort</message>\\n</exception>\\n\");\n    } else if (sig == SIGILL) {\n        __printXml(\"<exception>\\n<type>SIGILL</type>\\n<message>illegal instruction</message>\\n</exception>\\n\");\n    } else if (sig == SIGFPE) {\n        __printXml(\"<exception>\\n<type>SIGFPE</type>\\n<message>arithmetic error</message>\\n</exception>\\n\");\n    } else if (sig == SIGINT) {\n        __printXml(\"<exception>\\n<type>SIGINT</type>\\n<message>interrupt error</message>\\n</exception>\\n\");\n    } else if (sig == SIGSTACK) {\n        __printXml(\"<exception>\\n<type>SIGSTACK</type>\\n<message>stack overflow</message>\\n</exception>\\n\");\n    } else if (sig == SIGTERM) {\n        __printXml(\"<exception>\\n<type>SIGTERM</type>\\n<message>terminated</message>\\n</exception>\\n\");\n    } else if (sig == SIGUSR1) {\n        __printXml(\"<exception>\\n<type>SIGUSR1</type>\\n<message>Excessive output printed; you may have an infinite loop in your code.</message>\\n</exception>\\n\");\n    } else {\n        __printXml(\"<exception>\\n<type>SIGFATAL</type>\\n<message>fatal error</message>\\n</exception>\\n\");\n    }\n\n    if (__runAllTests) {\n        __printXml(\"</test>\\n\");\n        __printXml(\"</tests>\\n\");\n    }\n\n    __closeXml();\n    std::exit(1);\n}\n\n#if !defined(_WIN32)\nvoid __posixSignalHandler(int sig, siginfo_t* /*siginfo*/, void* /*context*/) {\n    __codeStepByStepSignalHandler(sig);\n}\n#endif // !defined(_WIN32)\n\nstatic void __setupSignalHandler() {\n    bool handled = false;\n#ifdef SHOULD_USE_SIGNAL_STACK\n#if !defined(_WIN32)\n    // alternate stack on Linux for stack overflows\n    static uint8_t alternate_stack[SIGSTKSZ];\n    stack_t ss = {};\n    ss.ss_sp = (void*) alternate_stack;\n    ss.ss_size = SIGSTKSZ;\n    ss.ss_flags = 0;\n    sigaltstack(&ss, nullptr);\n\n    struct sigaction sig_action = {};\n    sig_action.sa_sigaction = __posixSignalHandler;\n    sigemptyset(&sig_action.sa_mask);\n#ifdef __APPLE__\n    // backtrace() doesn't work on OS X when we use an alternate stack\n    sig_action.sa_flags = SA_SIGINFO;\n#else\n    sig_action.sa_flags = SA_SIGINFO | SA_ONSTACK;\n#endif // __APPLE__\n    sigaction(SIGSEGV, &sig_action, nullptr);\n    sigaction(SIGFPE,  &sig_action, nullptr);\n    sigaction(SIGILL,  &sig_action, nullptr);\n    sigaction(SIGTERM, &sig_action, nullptr);\n    sigaction(SIGINT,  &sig_action, nullptr);\n    sigaction(SIGABRT, &sig_action, nullptr);\n    sigaction(SIGUSR1, &sig_action, nullptr);\n    handled = true;\n#endif\n#endif // SHOULD_USE_SIGNAL_STACK\n\n    if (!handled) {\n        signal(SIGABRT, CodeStepByStep::__codeStepByStepSignalHandler);\n        signal(SIGFPE,  CodeStepByStep::__codeStepByStepSignalHandler);\n        signal(SIGILL,  CodeStepByStep::__codeStepByStepSignalHandler);\n        signal(SIGINT,  CodeStepByStep::__codeStepByStepSignalHandler);\n        signal(SIGSEGV, CodeStepByStep::__codeStepByStepSignalHandler);\n        signal(SIGTERM, CodeStepByStep::__codeStepByStepSignalHandler);\n        signal(SIGUSR1, CodeStepByStep::__codeStepByStepSignalHandler);\n    }\n}\n\nstatic void __disableSignalHandler() {\n    signal(SIGABRT, SIG_DFL);\n    signal(SIGFPE,  SIG_DFL);\n    signal(SIGILL,  SIG_DFL);\n    signal(SIGINT,  SIG_DFL);\n    signal(SIGSEGV, SIG_DFL);\n    signal(SIGTERM, SIG_DFL);\n    signal(SIGUSR1, SIG_DFL);\n}\n\nstatic void __terminateHandler() {\n    __disableSignalHandler();   // don't want both a signal AND a terminate() call\n\n    std::string stackTrace;\n    try {\n        std::ostringstream out;\n        exceptions::printStackTrace(out);\n        stackTrace = out.str();\n        throw;   // re-throws the exception that already occurred\n    } catch (int value) {\n        CodeStepByStep::__printException(\"int\", integerToString(value), stackTrace);\n    } catch (long value) {\n        CodeStepByStep::__printException(\"long\", longToString(value), stackTrace);\n    } catch (float value) {\n        CodeStepByStep::__printException(\"float\", doubleToString((double) value), stackTrace);\n    } catch (double value) {\n        CodeStepByStep::__printException(\"double\", doubleToString(value), stackTrace);\n    } catch (bool value) {\n        CodeStepByStep::__printException(\"bool\", boolToString(value), stackTrace);\n    } catch (char value) {\n        CodeStepByStep::__printException(\"char\", \"'\" + charToString(value) + \"'\", stackTrace);\n    } catch (std::string value) {\n        CodeStepByStep::__printException(\"string\", value, stackTrace);\n    } catch (const char* value) {\n        CodeStepByStep::__printException(\"string\", value, stackTrace);\n    } catch (ErrorException value) {\n        CodeStepByStep::__printException(\"ErrorException\", value.what(), stackTrace);\n    } catch (std::exception& value) {\n        CodeStepByStep::__printException(\"exception\", value.what(), stackTrace);\n    } catch (...) {\n        CodeStepByStep::__printException(\"unknown\", \"\", stackTrace);\n    }\n\n    if (CodeStepByStep::__runAllTests) {\n        CodeStepByStep::__getXmlOut() << \"</test>\" << std::endl;\n        CodeStepByStep::__getXmlOut() << \"</tests>\" << std::endl;\n    }\n    CodeStepByStep::__closeXml();\n}\n\n\nvoid main_begin(int argc, char** argv) {\n    // initialize Stanford library\n    // TODO\n    // __initializeStanfordCppLibrary(argc, argv);\n\n    // set up signal handler to process serious errors\n    CodeStepByStep::__setupSignalHandler();\n    CodeStepByStep::old_terminate = std::set_terminate(CodeStepByStep::__terminateHandler);\n\n    // echo console input\n    plainconsole::setEcho(true);\n\n    // max amount of output a solution can print before it should be halted\n    const int __OUTPUT_PRINT_MAX = 100000;\n    plainconsole::setOutputLimit(__OUTPUT_PRINT_MAX);\n\n    // parse command-line args\n    CodeStepByStep::__testToRun = \"\";\n    for (int i = 1; i < argc; i++) {\n        std::string arg = argv[i];\n        if (i < argc - 1 && arg == \"--test\") {\n            CodeStepByStep::__testToRun = argv[i + 1];\n        } else if (arg == \"--all\") {\n            CodeStepByStep::__testToRun = \"--all\";\n            CodeStepByStep::__runAllTests = true;\n        } else if (i < argc - 1 && arg == \"--xml\") {\n            CodeStepByStep::__xmlOutFilename = argv[i + 1];\n            CodeStepByStep::__getXmlOut().open(argv[i + 1]);\n            // CodeStepByStep::__openXml(__xmlOutFilename);\n        }\n    }\n\n    if (CodeStepByStep::__runAllTests) {\n        // output XML prolog\n        CodeStepByStep::__getXmlOut() << \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\" << std::endl\n                << \"<tests>\" << std::endl;\n        CodeStepByStep::__getXmlOut().flush();\n    }\n}\n\nvoid main_end() {\n    if (CodeStepByStep::__runAllTests) {\n        CodeStepByStep::__getXmlOut() << \"</tests>\" << std::endl;\n        CodeStepByStep::__getXmlOut().flush();\n    }\n\n    CodeStepByStep::__closeXml();\n}\n\n\nnamespace Assertions {\nvoid assertEqualsBool(const std::string& msg, bool expected, bool actual) {\n    assertEquals(msg, \"bool\", boolToString(expected), boolToString(actual));\n}\n\nvoid assertEqualsChar(const std::string& msg, char expected, char actual) {\n    assertEquals(msg, \"char\", charToString(expected), charToString(actual));\n}\n\nvoid assertEqualsDouble(const std::string& msg, double expected, double actual, double tolerance) {\n    Map<std::string, std::string> attrs;\n    attrs[\"tolerance\"] = doubleToString(tolerance);\n    assertEquals(msg, \"double\", doubleToString(expected), doubleToString(actual), attrs);\n}\n\nvoid assertEqualsInt(const std::string& msg, int expected, int actual) {\n    assertEquals(msg, \"int\", integerToString(expected), integerToString(actual));\n}\n\nvoid assertEqualsString(const std::string& msg, std::string expected, std::string actual) {\n    assertEquals(msg, \"string\", expected, actual);\n}\n\nvoid assertTrue(const std::string& msg, bool test) {\n    assertionPrint(msg, \"assertTrue\", \"bool\", \"true\", boolToString(test));\n}\n\nvoid assertFalse(const std::string& msg, bool test) {\n    assertionPrint(msg, \"assertFalse\", \"bool\", \"false\", boolToString(test));\n}\n\nvoid assertFail(const std::string& msg) {\n    assertionPrint(msg, \"assertFail\", \"bool\", /* expected */ \"pass\", /* actual */ \"fail\");\n}\n\nvoid setTestName(const std::string& name) {\n    assertionPrint(/* message */ name, \"setTestName\", \"string\", /* expected */ \"\", /* actual */ \"\");\n}\n\nvoid assertionPrint(const std::string& msg,\n                    const std::string& assertType,\n                    const std::string& valueType,\n                    const std::string& expected,\n                    const std::string& actual,\n                    Map<std::string, std::string> attrs) {\n    CodeStepByStep::__getXmlOut() << \"<assertion type=\\\"\" << htmlEncode(assertType) << \"\\\"\";\n    for (std::string attr : attrs) {\n        CodeStepByStep::__getXmlOut() << \" \" << attr << \"=\\\"\" << htmlEncode(attrs[attr]) << \"\\\"\";\n    }\n    CodeStepByStep::__getXmlOut() << \">\" << std::endl;\n    CodeStepByStep::__getXmlOut() << \"<message>\" << htmlEncode(msg) << \"</message>\" << std::endl;\n    CodeStepByStep::__getXmlOut() << \"<type>\" << htmlEncode(valueType) << \"</type>\" << std::endl;\n    CodeStepByStep::__getXmlOut() << \"<expected>\" << htmlEncode(expected) << \"</expected>\" << std::endl;\n    CodeStepByStep::__getXmlOut() << \"<actual>\" << htmlEncode(actual) << \"</actual>\" << std::endl;\n    CodeStepByStep::__getXmlOut() << \"</assertion>\" << std::endl;\n}\n} // namespace CodeStepByStep::Assertions\n\n} // namespace CodeStepByStep\n"
  },
  {
    "path": "Archived/autograder-empty-project/src/codestepbystep.h",
    "content": "/*\n * @version 2017/10/06\n * - hid POSIX signal handler behind preprocessor macro\n * @version 2016/12/07\n * - added assert* methods\n */\n\n#ifndef _codestepbystep_h\n#define _codestepbystep_h\n\n// basic standard library stuff\n#include <cctype>\n#include <climits>\n#include <cmath>\n#include <csignal>\n#include <fstream>\n#include <iomanip>\n#include <iostream>\n#include <sstream>\n#include <string>\n\n// STL\n#include <algorithm>\n#include <deque>\n#include <list>\n#include <map>\n#include <queue>\n#include <set>\n#include <stack>\n#include <vector>\n\n// Stanford lib stuff\n#include \"strlib.h\"\n#include \"ArrayIntList.h\"\n#include \"basicgraph.h\"\n#include \"BinaryTree.h\"\n#include \"HashTableMap.h\"\n#include \"HashTableSet.h\"\n#include \"HeapPriorityQueue.h\"\n#include \"LinkedIntList.h\"\n\nnamespace CodeStepByStep {\n\nstd::string testToRun();\nbool runAllTests();\n\nstd::string htmlDecode(const std::string& s);\nstd::string htmlEncode(const std::string& s);\n\ntemplate <typename T>\nstd::string htmlEncode(const T& obj) {\n    std::ostringstream out;\n    out << obj;\n    std::string s = out.str();\n    return ::htmlEncode(s);\n}\n\nstd::ofstream& __getXmlOut();\n\nvoid printXml(const std::string& s);\n\nvoid printlnXml(const std::string& s);\n\nvoid printXml(bool b);\n\nvoid printlnXml(bool b);\n\ntemplate <typename T>\nvoid printXml(const T& value) {\n    __getXmlOut() << value;\n}\n\ntemplate <typename T>\nvoid printlnXml(const T& value) {\n    __getXmlOut() << value << std::endl;\n}\n\nstd::string __stackTraceToString();\n\nvoid __printException(const std::string& type, const std::string& message = \"\",\n                      const std::string& stacktrace = \"\", int lineNumber = -1);\n\nvoid __openXmlOldWay(const std::string& filename);\n\nvoid __closeXml();\n\nvoid __printXml(const char* s);\n\nvoid __printXml(const std::string& s);\n\nvoid __printlnXml(const char* s);\n\nvoid __printlnXml(const std::string& s);\n\n// CODE FOR HANDLING SIGNALS (VARIOUS PROGRAM CRASHES)\n#define SIGSTACK ((int) 0xdeadbeef)\n#define SIGUNKNOWN ((int) 0xcafebabe)\n#define SIGTIMEOUT ((int) 0xf00df00d)\n\nvoid __codeStepByStepSignalHandler(int sig);\n#if !defined(_WIN32)\nvoid __posixSignalHandler(int sig, siginfo_t* /*siginfo*/, void* /*context*/);\n#endif // !defined(_WIN32)\n\n// functions to parse various collections from strings\nvoid ArrayIntList_fromString(ArrayIntList& list, const std::string& str);\nvoid BasicGraph_fromString(BasicGraph& graph, const std::string& str);\nvoid BinaryTree_fromString(BinaryTree& tree, const std::string& str);\nvoid BinaryTreeNode_fromString(BinaryTreeNode*& root, const std::string& str);\nvoid BinaryTreeNodeptr_fromString(BinaryTreeNode*& root, const std::string& str);\nvoid BinaryTreeNodeChar_fromString(BinaryTreeNodeChar*& root, const std::string& str);\nvoid BinaryTreeNodeCharptr_fromString(BinaryTreeNodeChar*& root, const std::string& str);\nvoid BinaryTreeNodeDouble_fromString(BinaryTreeNodeDouble*& root, const std::string& str);\nvoid BinaryTreeNodeString_fromString(BinaryTreeNodeString*& root, const std::string& str);\nvoid HeapPriorityQueue_fromString(HeapPriorityQueue& pqueue, const std::string& str);\nvoid LinkedIntList_fromString(LinkedIntList& list, const std::string& str);\nvoid ListNode_fromString(ListNode*& ptr, const std::string& str);\nvoid ListNodeptr_fromString(ListNode*& ptr, const std::string& str);\nvoid ListNodeDouble_fromString(ListNodeDouble*& ptr, const std::string& str);\nvoid ListNodeDoubleptr_fromString(ListNodeDouble*& ptr, const std::string& str);\nvoid ListNodeString_fromString(ListNodeString*& ptr, const std::string& str);\nvoid ListNodeStringptr_fromString(ListNodeString*& ptr, const std::string& str);\n\n// this one's body must be here in .h file because it's a template\ntemplate <typename T>\nvoid Vector_fromString(Vector<T>& v, const std::string& str) {\n    std::istringstream input(str);\n    input >> v;\n}\n\n// helpers for parts of main() function\nvoid main_begin(int argc, char** argv);\nvoid main_end();\n\n// code for assertions (used in classes+objects problems)\n#ifndef _codestepbystep_assertions\n#define _codestepbystep_assertions\nnamespace Assertions {\nvoid assertionPrint(const std::string& msg,\n                    const std::string& assertType,\n                    const std::string& valueType,\n                    const std::string& expected,\n                    const std::string& actual,\n                    Map<std::string, std::string> attrs = {});\n\ntemplate <typename T>\nvoid assertEquals(const std::string& msg, const std::string& type, T expected, T actual,\n                  Map<std::string, std::string> attrs = {}) {\n    std::string expStr = genericValueToString(expected);\n    std::string actStr = genericValueToString(actual);\n    assertionPrint(msg, \"assertEquals\", type, expStr, actStr, attrs);\n}\n\ntemplate <typename T>\nvoid assertEquals(const std::string& msg, T expected, T actual,\n                  Map<std::string, std::string> attrs = {}) {\n    assertEquals(msg, \"T\", expected, actual, attrs);\n}\n\nvoid assertEqualsBool(const std::string& msg, bool expected, bool actual);\nvoid assertEqualsChar(const std::string& msg, char expected, char actual);\nvoid assertEqualsDouble(const std::string& msg, double expected, double actual, double tolerance = 0.0001);\nvoid assertEqualsInt(const std::string& msg, int expected, int actual);\nvoid assertEqualsString(const std::string& msg, std::string expected, std::string actual);\nvoid assertTrue(const std::string& msg, bool test);\nvoid assertFalse(const std::string& msg, bool test);\nvoid assertFail(const std::string& msg);\nvoid setTestName(const std::string& name);\n} // namespace CodeStepByStep::Assertions\n#endif // _codestepbystep_assertions\n\n} // namespace CodeStepByStep\n\n\n#endif // _codestepbystep_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/src/cppdoc.c",
    "content": "/*\n * File: cppdoc.c\n * --------------\n * A quick-and-dirty HTML documentation system for StanfordCPPLib.\n */\n\n#include <stdio.h>\n#include <string.h>\n#include <ctype.h>\n#include <unistd.h>\n#include \"cslib.h\"\n#include \"filelib.h\"\n#include \"foreach.h\"\n#include \"hashmap.h\"\n#include \"options.h\"\n#include \"tokenscanner.h\"\n#include \"simpio.h\"\n#include \"strlib.h\"\n#include \"vector.h\"\n\n/* Constants */\n\n#define DEFAULT_TITLE \"C++ Library Documentation\"\n\n/* Option table */\n\nstatic string OPTION_SPEC[] = {\n   \"-help\",\n   \"-list\",\n   \"-include <header>\",\n   \"-module <name>\",\n   \"-title <str>\",\n   \"-icon <filename>\",\n   \"-description <filename>\",\n   \"-out <directory>\",\n   \"-stylesheet <file>\",\n   \"-elide <cumulative>\",\n   \"-sortindex\",\n   \"-classonly\",\n   \"-generic\",\n   \"-noconst\",\n   \"-nostd\",\n   \"-novirtual\",\n   \"-notemplate\",\n   NULL\n};\n\n/* Types */\n\ntypedef struct {\n   string name;\n   string kind;\n   string module;\n   string type;\n   string superclass;\n   string *usage;\n   string *html;\n   string *code;\n} *entryT;\n\n/* Private variables */\n\nstatic FILE *outfile;\nstatic HashMap options;\nstatic HashMap moduleTable;\nstatic string stylesheet;\nstatic bool noConstFlag;\nstatic bool noStdFlag;\nstatic bool noTemplateFlag;\nstatic bool noVirtualFlag;\nstatic bool classOnlyFlag;\n\n/* Private function prototypes */\n\nstatic void initStructures();\nstatic void readDirectory(string dirname);\nstatic void scanHeaderFile(string dirname, string filename);\nstatic void dumpHTML(string dirname);\nstatic void dumpHTMLIndex(void);\nstatic void dumpModule(string module);\nstatic void dumpClasses(string module);\nstatic void dumpClass(entryT entry, Vector entries);\nstatic void dumpHeader(string module, string href);\nstatic void dumpTrailer(string module);\nstatic void dumpBodyHeader(void);\nstatic void dumpComment(entryT entry);\nstatic void dumpIndexHeader(void);\nstatic void dumpIndexTrailer(void);\nstatic void dumpIndex(Vector entries, string kind, string type);\nstatic void dumpIndexEntry(entryT entry);\nstatic void dumpDetail(Vector entries, string kind, string type);\nstatic void dumpDetailEntry(entryT entry);\nstatic string getIndexKey(entryT entry);\nstatic string getFirstSentence(entryT entry);\nstatic int findSentenceEnd(string line);\nstatic entryT findEntryOfKind(Vector entries, string kind, string type);\nstatic int countEntriesOfKind(Vector entries, string kind, string type);\nstatic void sortEntryVector(Vector entries);\nstatic void listModules(void);\nstatic void listEntry(entryT entry);\nstatic void includeFile(Vector html, string filename);\nstatic string makePlural(string word);\nstatic bool isVowel(char ch);\nstatic bool takesArguments(string kind);\nstatic bool isStatementMacro(string kind);\nstatic bool isEndOfCode(string line);\nstatic string blueComments(string str);\nstatic string quoteSpaces(string str);\nstatic string replaceAll(string str, string pattern, string replacement);\n\n/* Main entry point */\n\nmain(int argc, string argv[]) {\n   string *files;\n   int nFiles;\n\n   options = parseOptions(argv + 1, OPTION_SPEC);\n   files = getArgList(options);\n   nFiles = stringArrayLength(files);\n   stylesheet = getOption(options, \"-stylesheet\", \"cppdoc.css\");\n   noStdFlag = containsKey(options, \"-nostd\");\n   noConstFlag = containsKey(options, \"-noconst\");\n   noTemplateFlag = containsKey(options, \"-notemplate\");\n   noVirtualFlag = containsKey(options, \"-novirtual\");\n   classOnlyFlag = containsKey(options, \"-classonly\");\n   if (containsKey(options, \"-help\") || nFiles != 1) {\n      showUsage(\"cppdoc <options> <dir>\", OPTION_SPEC);\n   } else {\n      initStructures();\n      readDirectory(files[0]);\n      if (containsKey(options, \"-list\")) {\n         listModules();\n      } else {\n         dumpHTML(files[0]);\n         dumpHTMLIndex();\n      }\n   }\n}\n\nstatic void initStructures() {\n   moduleTable = newHashMap();\n}\n\nstatic void readDirectory(string dirname) {\n   string *list, name, key, elide;\n   int i;\n\n   list = listDirectory(dirname);\n   elide = concat(\"+\", concat(getOption(options, \"-elide\", \"\"), \"+\"));\n   for (i = 0; list[i] != NULL; i++) {\n      name = list[i];\n      key = concat(\"+\", concat(name, \"+\"));\n      if (endsWith(name, \".h\") && findString(key, elide, 0) == -1) {\n         scanHeaderFile(dirname, list[i]);\n      }\n   }\n}\n\n#define INITIAL_STATE 0\n#define COMMENT_START 1\n#define USAGE_START   2\n#define IN_USAGE      3\n#define IN_HTML       4\n#define IN_CODE       5\n\nstatic void scanHeaderFile(string dirname, string filename) {\n   FILE *infile;\n   entryT entry;\n   TokenScanner scanner;\n   Vector entries, usage, html, code;\n   string type, kind, name, line, superclass;\n   int state, colon, start, finish, level, n;\n\n   infile = fopen(concat(dirname, concat(\"/\", filename)), \"r\");\n   if (infile == NULL) error(\"Can't open file %s\", filename);\n   state = INITIAL_STATE;\n   entries = newVector();\n   usage = NULL;\n   html = NULL;\n   code = NULL;\n   type = \"\";\n   while (true) {\n      line = readLine(infile);\n      if (line == NULL) break;\n      switch (state) {\n       case INITIAL_STATE:\n         if (stringEqual(line, \"/*\")) state = COMMENT_START;\n         break;\n       case COMMENT_START:\n         colon = findString(\": \", line, 0);\n         if (colon < 0 || !startsWith(line, \" * \")) {\n            state = INITIAL_STATE;\n         } else {\n            name = substring(line, colon + 2, strlen(line));\n            kind = substring(line, 3, colon - 1);\n            if (stringEqual(kind, \"Class\") || stringEqual(kind, \"Type\")) {\n               type = name;\n            }\n            entry = newBlock(entryT);\n            entry->name = name;\n            entry->kind = kind;\n            entry->type = type;\n            entry->module = filename;\n            entry->superclass = NULL;\n            add(entries, entry);\n            state = USAGE_START;\n         }\n         break;\n       case USAGE_START:\n         if (startsWith(line, \" */\")) {\n            state = INITIAL_STATE;\n         } else if (startsWith(line, \" * -----\")) {\n            html = newVector();\n            state = IN_HTML;\n         } else if (startsWith(line, \" * Usage: \")) {\n            usage = newVector();\n            add(usage, trim(substring(line, 10, strlen(line))));\n            state = IN_USAGE;\n         }\n         break;\n       case IN_USAGE:\n         if (startsWith(line, \" * -----\")) {\n            html = newVector();\n            state = IN_HTML;\n         } else if (startsWith(line, \" */\")) {\n            entry->usage = (string *) vectorToArray(usage);\n            state = INITIAL_STATE;\n         } else {\n            add(usage, trim(substring(line, 10, strlen(line))));\n         }\n         break;\n       case IN_HTML:\n         if (startsWith(line, \" */\")) {\n            entry->usage = (string *) vectorToArray(usage);\n            entry->html = (string *) vectorToArray(html);\n            code = newVector();\n            state = IN_CODE;\n            level = 0;\n         } else if (findString(\"<include src=\\\"\", line, 0) != -1) {\n            start = findChar('\"', line, 0) + 1;\n            finish = findChar('\"', line, start + 1) - 1;\n            includeFile(html, substring(line, start, finish));\n         } else {\n            start = (line[2] == ' ') ? 3 : 2;\n            add(html, substring(line, start, strlen(line)));\n         }\n         break;\n       case IN_CODE:\n         if (isEndOfCode(line) || (startsWith(line, \"}\") && level == 0)) {\n            entry->code = (string *) vectorToArray(code);\n            state = startsWith(line, \"/*\") ? COMMENT_START : INITIAL_STATE;\n         } else if (startsWith(line, \"class \")) {\n            scanner = newTokenScanner();\n            setInputString(scanner, line);\n            ignoreWhitespace(scanner);\n            nextToken(scanner);\n            name = nextToken(scanner);\n            if (stringEqual(nextToken(scanner), \":\")) {\n               if (stringEqual(nextToken(scanner), \"public\")) {\n                  superclass = nextToken(scanner);\n                  if (stringEqual(nextToken(scanner), \"{\")) {\n                     entry->superclass = superclass;\n                  }\n               }\n            }\n            freeTokenScanner(scanner);\n         } else {\n            n = size(code);\n            if (n > 0 && startsWith(line, \"                \")) {\n               line = concat(\" \", trim(line));\n               set(code, n - 1, concat(get(code, n - 1), line));\n            } else {\n               add(code, line);\n            }\n            if (endsWith(line, \"{\")) level++;\n            if (startsWith(trim(line), \"}\")) level--;\n         }\n         break;\n      }\n   }\n   put(moduleTable, filename, entries);\n}\n\nstatic void dumpHTML(string dirname) {\n   string out, module, requestedModule, filename, cmd;\n\n   out = getOption(options, \"-out\", \"doc\");\n   createDirectoryPath(out);\n   requestedModule = getOption(options, \"-module\", NULL);\n   foreach (module in moduleTable) {\n      if (requestedModule == NULL || stringEqual(module, requestedModule)) {\n         filename = concat(getRoot(module), \"-h.html\");\n         filename = concat(out, concat(\"/\", filename));\n         cmd = concat(\"fillcomments -html -out \", filename);\n         if (containsKey(options, \"-stylesheet\")) {\n            cmd = concat(cmd, concat(\" -stylesheet \", stylesheet));\n         }\n         if (!classOnlyFlag) {\n            filename = concat(dirname, concat(\"/\", module));\n            cmd = concat(cmd, concat(\" \", filename));\n            system(cmd);\n            dumpModule(module);\n         }\n         dumpClasses(module);\n      }\n   }\n}\n\nstatic void dumpHTMLIndex() {\n   int ch;\n   string out, name, filename, description, title;\n   Vector classes, modules, entries;\n   FILE *infile;\n   entryT entry;\n\n   out = getOption(options, \"-out\", \"doc\");\n   filename = concat(out, \"/index.html\");\n   outfile = fopen(filename, \"w\");\n   if (outfile == NULL) error(\"Can't open %s\", getTail(filename));\n   title = getOption(options, \"-title\", DEFAULT_TITLE);\n   fprintf(outfile, \"<html>\\n\");\n   fprintf(outfile, \"<head>\\n\");\n   fprintf(outfile, \"<title>%s</title>\\n\", title);\n   if (stylesheet != NULL) {\n      fprintf(outfile, \"<link rel=\\\"stylesheet\\\" type=\\\"text/css\\\"\");\n      fprintf(outfile, \" href=\\\"%s\\\" />\\n\", stylesheet);\n   }\n   fprintf(outfile, \"</head>\\n\");\n   fprintf(outfile, \"<body>\\n\");\n   dumpBodyHeader();\n   description = getOption(options, \"-description\", \"\");\n   if (stringLength(description) != 0) {\n      infile = fopen(description, \"r\");\n      if (infile == NULL) error(\"Can't find file %s\", description);\n      while ((ch = getc(infile)) != EOF) {\n         putc(ch, outfile);\n      }\n      fclose(infile);\n   }\n   classes = newVector();\n   modules = newVector();\n   foreach (name in moduleTable) {\n      entries = (Vector) get(moduleTable, name);\n      entry = findEntryOfKind(entries, \"File\", NULL);\n      if (entry != NULL) add(modules, entry);\n      foreach (entry in entries) {\n         if (stringEqual(entry->kind, \"Class\")) {\n            add(classes, entry);\n         }\n      }\n   }\n   sortEntryVector(classes);\n   sortEntryVector(modules);\n   dumpIndexHeader();\n   dumpIndex(classes, \"Class\", NULL);\n   dumpIndexTrailer();\n   dumpIndexHeader();\n   dumpIndex(modules, \"File\", NULL);\n   dumpIndexTrailer();\n   fprintf(outfile, \"</body>\\n\");\n   fprintf(outfile, \"</html>\\n\");\n   fclose(outfile);\n}\n\nstatic void dumpModule(string module) {\n   string out, filename;\n   Vector entries;\n\n   out = getOption(options, \"-out\", \"doc\");\n   filename = defaultExtension(module, \"*.html\");\n   filename = concat(out, concat(\"/\", filename));\n   outfile = fopen(filename, \"w\");\n   if (outfile == NULL) error(\"Can't open %s\", getTail(filename));\n   entries = get(moduleTable, module);\n   filename = concat(getRoot(module), \"-h.html\");\n   dumpHeader(module, filename);\n   dumpComment(findEntryOfKind(entries, \"File\", NULL));\n   dumpIndexHeader();\n   dumpIndex(entries, \"Class\", NULL);\n   dumpIndex(entries, \"Type\", NULL);\n   dumpIndex(entries, \"Constant\", NULL);\n   dumpIndex(entries, \"Statement\", NULL);\n   dumpIndex(entries, \"Function\", NULL);\n   dumpIndexTrailer();\n   dumpDetail(entries, \"Type\", NULL);\n   dumpDetail(entries, \"Statement\", NULL);\n   dumpDetail(entries, \"Function\", NULL);\n   dumpTrailer(module);\n   fclose(outfile);\n}\n\nstatic void dumpClasses(string module) {\n   Vector entries;\n   entryT entry;\n\n   entries = get(moduleTable, module);\n   foreach (entry in entries) {\n      if (stringEqual(entry->kind, \"Class\")) {\n         dumpClass(entry, entries);\n      }\n   }\n}\n\nstatic void dumpClass(entryT entry, Vector entries) {\n   string className, out, filename, module, href;\n   int angle;\n\n   className = entry->name;\n   out = getOption(options, \"-out\", \"doc\");\n   angle = findChar('<', entry->name, 0);\n   filename = (angle == -1) ? className : substring(className, 0, angle - 1);\n   filename = concat(out, concat(\"/\", concat(filename, \"-class.html\")));\n   outfile = fopen(filename, \"w\");\n   if (outfile == NULL) error(\"Can't open %s\", getTail(filename));\n   filename = concat(getRoot(entry->module), \"-h.html\");\n   module = concat(\"class \", className);\n   if (entry->superclass != NULL) {\n      href = concat(\"<a href=\\\"\", entry->superclass);\n      href = concat(href, \"-class.html\\\">\");\n      href = concat(href, entry->superclass);\n      href = concat(href, \"</a>\");\n      module = concat(module, concat(\" : public \", href));\n   }\n   dumpHeader(module, filename);\n   dumpComment(findEntryOfKind(entries, \"Class\", className));\n   dumpIndexHeader();\n   dumpIndex(entries, \"Constructor\", className);\n   dumpIndex(entries, \"Method\", className);\n   dumpIndex(entries, \"Operator\", className);\n   dumpIndex(entries, \"Function\", className);\n   dumpIndex(entries, \"Statement\", className);\n   dumpIndex(entries, \"Macro\", className);\n   dumpIndexTrailer();\n   dumpDetail(entries, \"Constructor\", className);\n   dumpDetail(entries, \"Method\", className);\n   dumpDetail(entries, \"Operator\", className);\n   dumpDetail(entries, \"Function\", className);\n   dumpDetail(entries, \"Statement\", className);\n   dumpDetail(entries, \"Macro\", className);\n   dumpTrailer(className);\n   fclose(outfile);\n}\n\nstatic void dumpHeader(string module, string href) {\n   string header, title;\n\n   if (findChar(':', module, 0) == -1) module = quoteHTML(module);\n   title = module;\n   if (startsWith(title, \"class \")) title = title + 6;\n   fprintf(outfile, \"<html>\\n\");\n   fprintf(outfile, \"<head>\\n\");\n   fprintf(outfile, \"<title>%s</title>\\n\", title);\n   if (stylesheet != NULL) {\n      fprintf(outfile, \"<link rel=\\\"stylesheet\\\" type=\\\"text/css\\\"\");\n      fprintf(outfile, \" href=\\\"%s\\\" />\\n\", stylesheet);\n   }\n   fprintf(outfile, \"</head>\\n\");\n   fprintf(outfile, \"<body>\\n\");\n   dumpBodyHeader();\n   if (startsWith(module, \"class \")) {\n      header = concat(substring(href, 0, strlen(href) - 8), \".h\");\n      href = concat(substring(header, 0, strlen(header) - 3), \".html\");\n      if (containsKey(options, \"-include\")) {\n         header = getOption(options, \"-include\", NULL);\n         href = concat(getRoot(header), \".html\");\n      }\n      fprintf(outfile, \"<div class=include><a href=\\\"%s\\\">\", href);\n      fprintf(outfile, \"#include \\\"%s\\\"</a></div>\\n\", header);\n      fprintf(outfile, \"<h1 class=header><code>%s</code></h1>\\n\", module);\n   } else {\n      fprintf(outfile, \"<h1 class=header><a href=\\\"%s\\\">\", href);\n      fprintf(outfile, \"<code>%s</code></a></h1>\\n\", module);\n   }\n}\n\nstatic void dumpTrailer(string module) {\n   fprintf(outfile, \"</body>\\n\");\n   fprintf(outfile, \"</html>\\n\");\n}\n\nstatic void dumpBodyHeader() {\n   string icon, title;\n\n   fprintf(outfile, \"<table class=banner>\\n\");\n   fprintf(outfile, \"<tr>\\n\");\n   icon = getOption(options, \"-icon\", \"\");\n   title = getOption(options, \"-title\", DEFAULT_TITLE);\n   if (stringLength(icon) > 0) {\n      fprintf(outfile, \"<td valign=middle>\");\n      fprintf(outfile, \"<image src=\\\"%s\\\" height=32>\", icon);\n      fprintf(outfile, \"</td>\\n\");\n   }\n   fprintf(outfile, \"<td valign=middle><div class=bannerText>\\n\");\n   fprintf(outfile, \"%s\\n\", title);\n   fprintf(outfile, \"</div></td>\\n\");\n   fprintf(outfile, \"</tr></table>\\n\");\n   fprintf(outfile, \"<hr>\\n\");\n}\n\nstatic void dumpComment(entryT entry) {\n   string *html;\n   int i;\n\n   if (entry == NULL) return;\n   html = entry->html;\n   for (i = 0; html[i] != NULL; i++) {\n      fprintf(outfile, \"%s\\n\", html[i]);\n   }\n}\n\nstatic void dumpIndexHeader(void) {\n   fprintf(outfile, \"<table class=index width=100%%>\\n\");\n}\n\nstatic void dumpIndexTrailer(void) {\n   fprintf(outfile, \"</table>\\n\");\n}\n\nstatic void dumpIndex(Vector entries, string kind, string type) {\n   Vector vec;\n   entryT entry;\n   string label;\n   int nItems;\n\n\n   nItems = countEntriesOfKind(entries, kind, type);\n   if (nItems == 0) return;\n   if (stringEqual(kind, \"File\")) {\n      label = \"Interface files\";\n   } else {\n      label = (nItems == 1) ? kind : makePlural(kind);\n   }\n   fprintf(outfile, \"<tr><td class=indexHead colspan=2>%s</td></tr>\\n\", label);\n   vec = entries;\n   if (containsKey(options, \"-sortindex\")) {\n      vec = clone(entries);\n      sortEntryVector(vec);\n   }\n   foreach (entry in vec) {\n      if (stringEqual(kind, entry->kind)) {\n         if (type == NULL || stringEqual(entry->type, type)) {\n            dumpIndexEntry(entry);\n         }\n      }\n   }\n}\n\nstatic void dumpIndexEntry(entryT entry) {\n   string tag, synopsis;\n\n   tag = getIndexKey(entry);\n   synopsis = getFirstSentence(entry);\n   fprintf(outfile, \"<tr><td class=indexKey><nobr>%s&nbsp;</nobr></td>\", tag);\n   fprintf(outfile, \"<td class=indexSynopsis width=100%%>\");\n   fprintf(outfile, \"%s</td></tr>\\n\", synopsis);\n}\n\nstatic void dumpDetail(Vector entries, string kind, string type) {\n   entryT entry;\n   int nItems;\n\n   nItems = countEntriesOfKind(entries, kind, type);\n   if (nItems == 0) return;\n   fprintf(outfile, \"<h2>%s detail</h2>\\n\", kind);\n   fprintf(outfile, \"<hr>\\n\");\n   foreach (entry in entries) {\n      if (stringEqual(kind, entry->kind)) {\n         if (type == NULL || stringEqual(entry->type, type)) {\n            dumpDetailEntry(entry);\n            fprintf(outfile, \"<hr>\\n\");\n         }\n      }\n   }\n   fprintf(outfile, \"</table>\\n\");\n}\n\nstatic void dumpDetailEntry(entryT entry) {\n   string line;\n   int i, start, finish, indent, pos, args, paren, cp;\n\n   fprintf(outfile, \"<a name=\\\"%s:%s\\\"></a>\\n\", entry->kind, entry->name);\n   fprintf(outfile, \"<pre class=detailCode>\\n\");\n   if (isStatementMacro(entry->kind)) {\n      for (i = 0; entry->usage[i] != NULL; i++) {\n         fprintf(outfile, \"%s\\n\", quoteHTML(entry->usage[i]));\n      }\n   } else {\n      finish = stringArrayLength(entry->code) - 1;\n      while (finish >= 0 && strlen(entry->code[finish]) == 0) {\n         finish--;\n      }\n      start = 0;\n      while (start <= finish && strlen(entry->code[start]) == 0) {\n         start++;\n      }\n      if (start <= finish) {\n         indent = 0;\n         while (entry->code[start][indent] == ' ') {\n            indent++;\n         }\n         for (i = start; i <= finish; i++) {\n            line = entry->code[i];\n            line = substring(line, indent, strlen(line));\n            paren = findChar('(', line, 0);\n            if (i == start && paren > 0 && containsKey(options, \"-generic\")) {\n               for (cp = paren - 1; cp >= 0 && isalnum(line[cp]); cp--) {\n                  /* Empty */\n               }\n               line = concat(substring(line, 0, cp),\n                             concat(entry->name,\n                                    substring(line, paren, 9999)));\n            }\n            if (noTemplateFlag) {\n               if (strlen(line) == 0 || startsWith(line, \"template \")) {\n                  continue;\n               }\n            }\n            line = replaceAll(line, \"explicit \", \"\");\n            if (noStdFlag) {\n               line = replaceAll(line, \"std::\", \"\");\n            }\n            if (noVirtualFlag) {\n               line = replaceAll(line, \"virtual \", \"\");\n               line = replaceAll(line, \" = 0\", \"\");\n            }\n            if (noConstFlag) {\n               if (endsWith(line, \" const;\")) {\n                  line = concat(substring(line, 0, strlen(line) - 8), \";\");\n               }\n               args = (startsWith(line, \"    \")) ? 4 : findChar('(', line, 0);\n               while (start > 0) {\n                  pos = findString(\"const \", line, start);\n                  if (pos == -1) break;\n                  line = concat(substring(line, 0, pos - 1),\n                                substring(line, pos + 6, 9999));\n                  pos = findChar('&', line, pos);\n                  if (pos == -1) error(\"Expected &\");\n                  if (line[pos - 1] == ' ' && line[pos + 1] == ' ') {\n                     line = concat(substring(line, 0, pos - 1),\n                                   substring(line, pos + 2, 9999));\n                  } else {\n                     line = concat(substring(line, 0, pos - 1),\n                                   substring(line, pos + 1, 9999));\n                  }\n               }\n            }\n            fprintf(outfile, \"%s\\n\", blueComments(quoteHTML(line)));\n         }\n      }\n   }\n   fprintf(outfile, \"</pre>\\n\");\n   fprintf(outfile, \"<div class=detailHTML>\\n\");\n   for (i = 0; entry->html[i] != NULL; i++) {\n      fprintf(outfile, \"%s\\n\", entry->html[i]);\n   }\n   if (entry->usage == NULL || isStatementMacro(entry->kind)) {\n      fprintf(outfile, \"</div>\\n\");\n   } else {\n      fprintf(outfile, \"<p>Usage:<br>\\n\");\n      fprintf(outfile, \"</div>\\n\");\n      fprintf(outfile, \"<pre class=usageCode>\\n\");\n      for (i = 0; entry->usage[i] != NULL; i++) {\n         fprintf(outfile, \"%s\\n\", quoteHTML(entry->usage[i]));\n      }\n      fprintf(outfile, \"</pre>\\n\");\n   }\n}\n\nstatic string getIndexKey(entryT entry) {\n   string name, key, line, href;\n   int i, dot, start, finish;\n\n   name = quoteHTML(entry->name);\n   if (stringEqual(entry->kind, \"Class\")) {\n      finish = findChar('<', entry->name, 0);\n      if (finish == -1) finish = strlen(entry->name);\n      href = concat(\"<a href=\\\"\", substring(entry->name, 0, finish - 1));\n      href = concat(href, \"-class.html\\\">\");\n   } else if (stringEqual(entry->kind, \"Constant\")) {\n      href = NULL;\n   } else if (stringEqual(entry->kind, \"File\")) {\n      dot = findChar('.', entry->name, 0);\n      href = concat(\"<a href=\\\"\", substring(entry->name, 0, dot - 1));\n      href = concat(href, \".html\\\">\");\n   } else {\n      href = concat(\"<a href=\\\"#\", entry->kind);\n      href = concat(href, concat(\":\", concat(name, \"\\\">\")));\n   }\n   if (takesArguments(entry->kind) && entry->usage != NULL) {\n      key = \"\";\n      for (i = 0; entry->usage[i] != NULL; i++) {\n         line = entry->usage[i];\n         start = findString(entry->name, line, 0);\n         if (start == -1) {\n            printf(\"No %s in usage line: %s\\n\", entry->name, line);\n         }\n         start = findChar('(', line, start);\n         if (start == -1) {\n            start = strlen(line);\n            line = concat(line, \"()\");\n         }\n         finish = findChar(')', line, start);\n         if (finish == -1) error(\"Illegal usage line: %s\", line);\n         if (strlen(key) > 0) key = concat(key, \"<br>\");\n         key = concat(key, href);\n         key = concat(key, name);\n         key = concat(key, quoteSpaces(substring(line, start, finish)));\n         key = concat(key, \"</a>\");\n      }\n      return key;\n   }\n   if (stringEqual(entry->kind, \"Operator\")) {\n      name = entry->usage[0];\n   }\n   return (href == NULL) ? name : concat(href, concat(name, \"</a>\"));\n}\n\nstatic string getFirstSentence(entryT entry) {\n   string str, line;\n   int i, end;\n\n   str = \"\";\n   for (i = 0; entry->html[i] != NULL; i++) {\n      line = entry->html[i];\n      end = findSentenceEnd(line);\n      if (end >= 0) return concat(str, substring(line, 0, end));\n      str = concat(str, concat(line, \" \"));\n   }\n   return str;\n}\n\nstatic int findSentenceEnd(string line) {\n   int i;\n\n   for (i = 0; line[i] != '\\0'; i++) {\n      switch (line[i]) {\n       case '.': case '!': case '?':\n         if (line[i + 1] == '\\0' || isspace(line[i + 1])) return i;\n      }\n   }\n   return -1;\n}\n\nstatic entryT findEntryOfKind(Vector entries, string kind, string type) {\n   entryT entry;\n\n   foreach (entry in entries) {\n      if (stringEqual(entry->kind, kind)) {\n         if (type == NULL || stringEqual(entry->type, type)) {\n            return entry;\n         }\n      }\n   }\n   return NULL;\n}\n\nstatic int countEntriesOfKind(Vector entries, string kind, string type) {\n   entryT entry;\n   int count;\n\n   count = 0;\n   foreach (entry in entries) {\n      if (stringEqual(entry->kind, kind)) {\n         if (type == NULL || stringEqual(entry->type, type)) {\n            count++;\n         }\n      }\n   }\n   return count;\n}\n\nstatic void sortEntryVector(Vector entries) {\n   int lh, rh, n, i;\n   string s1, s2;\n   entryT tmp;\n\n   n = size(entries);\n   for (lh = 0; lh < n; lh++) {\n      rh = lh;\n      for (i = lh + 1; i < n; i++) {\n         s1 = toUpperCase(((entryT) get(entries, i))->name);\n         s2 = toUpperCase(((entryT) get(entries, rh))->name);\n         if (stringCompare(s1, s2) < 0) rh = i;\n      }\n      tmp = (entryT) get(entries, lh);\n      set(entries, lh, (entryT) get(entries, rh));\n      set(entries, rh, tmp);\n   }\n}\n\nstatic void listModules(void) {\n   string str, module;\n   Vector entries;\n   entryT entry;\n\n   module = getOption(options, \"-module\", NULL);\n   foreach (str in moduleTable) {\n      if (module == NULL || stringEqual(str, module)) {\n         printf(\"%s: \\n\", str);\n         entries = (Vector) get(moduleTable, str);\n         foreach (entry in entries) {\n            listEntry(entry);\n         }\n         printf(\"\\n\");\n      }\n   }\n}\n\nstatic void listEntry(entryT entry) {\n   printf(\"  %s: %s\\n\", entry->kind, entry->name);\n}\n\nstatic void includeFile(Vector html, string filename) {\n   FILE *infile;\n   string line;\n\n   infile = fopen(filename, \"r\");\n   if (infile == NULL) error(\"Can't open %s\", filename);\n   while (true) {\n      line = readLine(infile);\n      if (line == NULL) break;\n      add(html, line);\n   }\n   fclose(infile);\n}\n\nstatic string makePlural(string word) {\n   int len;\n\n   len = strlen(word);\n   if (endsWith(word, \"s\") || endsWith(word, \"x\")\n               || endsWith(word, \"z\") || endsWith(word, \"ch\")\n               || endsWith(word, \"sh\")) {\n      return concat(word, \"es\");\n   } else if (endsWith(word, \"y\") && len > 1\n               && !isVowel(word[len - 2])) {\n      return concat(substring(word, 0, len - 2), \"ies\");\n   } else {\n      return concat(word, \"s\");\n   }\n}\n\nstatic bool isVowel(char ch) {\n   switch (ch) {\n    case 'A': case 'E': case 'I': case 'O': case 'U':\n    case 'a': case 'e': case 'i': case 'o': case 'u':\n      return true;\n    default:\n      return false;\n   }\n}\n\nstatic bool takesArguments(string kind) {\n   if (stringEqual(kind, \"Function\")) return true;\n   if (stringEqual(kind, \"Method\")) return true;\n   if (stringEqual(kind, \"Macro\")) return true;\n   if (stringEqual(kind, \"Statement\")) return true;\n   if (stringEqual(kind, \"Constructor\")) return true;\n   if (stringEqual(kind, \"Destructor\")) return true;\n   return false;\n}\n\nstatic bool isStatementMacro(string kind) {\n   if (stringEqual(kind, \"Statement\")) return true;\n   if (stringEqual(kind, \"Macro\")) return true;\n   return false;\n}\n\nstatic bool isEndOfCode(string line) {\n   if (startsWith(line, \"#\")) return true;\n   if (startsWith(line, \"public:\")) return true;\n   if (startsWith(line, \"private:\")) return true;\n   if (startsWith(line, \"/*\")) return true;\n   return false;\n}\n\nstatic string quoteSpaces(string str) {\n   string result;\n   int start, space;\n\n   start = 0;\n   result = \"\";\n   while (true) {\n      space = findChar(' ', str, start);\n      if (space == -1) break;\n      result = concat(result, substring(str, start, space - 1));\n      result = concat(result, \"&nbsp;\");\n      start = space + 1;\n   }\n   return concat(result, substring(str, start, strlen(str) - 1));\n}\n\nstatic string blueComments(string str) {\n   string result;\n   int start, index, finish;\n\n   start = 0;\n   result = \"\";\n   while (true) {\n      index = findString(\"/\" \"*\", str, start);\n      if (index == -1) break;\n      finish = findString(\"*\" \"/\", str, index);\n      if (finish == -1) error(\"Illegal internal comment: %s\", str);\n      result = concat(result, substring(str, start, index - 1));\n      result = concat(result, \"<span class=comment>\");\n      result = concat(result, substring(str, index, finish + 1));\n      result = concat(result, \"</span>\");\n      start = finish + 2;\n   }\n   return concat(result, substring(str, start, strlen(str) - 1));\n}\n\nstatic string replaceAll(string str, string pattern, string replacement) {\n   int pos;\n\n   pos = 0;\n   while (true) {\n      pos = findString(pattern, str, pos);\n      if (pos == -1) break;\n      str = concat(substring(str, 0, pos - 1),\n                   concat(replacement,\n                          substring(str, pos + stringLength(pattern), 9999)));\n      pos += stringLength(replacement);\n   }\n   return str;\n}\n"
  },
  {
    "path": "Archived/autograder-empty-project/src/cppdoc.css",
    "content": "body {\n   font-size:100%;\n}\n\nh1 {\n   font-family:\"Arial\", \"Helvetica\", \"sansserif\"; \n   font-size:1.5em;\n   font-weight:bold;\n}\n\nh2 {\n   font-family:\"Times New Roman\", \"Times\", \"serif\";\n   font-size:1.4em;\n   font-weight:bold;\n   margin-bottom:0px;\n}\n\n.header {\n   font-size:125%;\n}\n\npre, code, .code {\n   font-family:\"Courier New\", \"Courier\", \"monospace\";\n   font-weight:bold;\n   font-size:90%;\n}\n\n.comment {\n   color:blue;\n}\n\n.it {\n   font-family:\"Times New Roman\", \"Times\", \"serif\";\n   font-weight:normal;\n   font-style:italic;\n   font-size:90%;\n}\n   \n.banner {\n   border:0;\n}\n\n.sansserif {\n   font-family:\"Helvetica Neue\", \"Helvetica\", \"Arial\", \"sansserif\";\n}\n\n.bannerText {\n   font-family:\"Helvetica Neue\", \"Helvetica\", \"Arial\", \"sansserif\";\n   font-size:1.6em;\n   font-weight:bold;\n}\n\n.index {\n   border-collapse:collapse;\n   margin-top:1px;\n}\n\n.indexHead {\n   font-family:\"Times New Roman\", \"Times\", \"serif\";\n   font-size:1.4em;\n   font-weight:bold;\n   padding-top:1em;\n}\n\n.indexKey {\n   border:1px solid black; \n   padding:3px 5px;\n   font-family:\"Courier New\", \"Courier\", \"monospace\";\n   font-weight:bold;\n   font-size:90%;\n   vertical-align: top;\n}\n\n.indexSynopsis {\n   border:1px solid black; \n   padding:3px 5px;\n   vertical-align: top;\n}\n\n.include {\n   font-family:\"Courier New\", \"Courier\", \"monospace\";\n   font-weight:bold;\n   font-size:100%;\n}\n\n.detailCode {\n   padding:0px;\n   font-family:\"Courier New\", \"Courier\", \"monospace\";\n   font-weight:bold;\n   font-size:100%;\n}\n\n.detailHTML {\n   font-family:\"Times New Roman\", \"Times\", \"serif\";\n   font-size:1em;\n   margin-left:20px;\n}\n\n.inset {\n   margin-left:36px;\n}\n\n.usageCode {\n   font-family:\"Courier New\", \"Courier\", \"monospace\";\n   font-weight:bold;\n   font-size:90%;\n   margin-left:40px;\n}   \n"
  },
  {
    "path": "Archived/autograder-empty-project/src/fillcomments.c",
    "content": "/*\n * File: fillcomments.c\n * Last modified on Mon Jun  9 18:57:29 2014 by eroberts\n * -----------------------------------------------------\n * This program removes HTML tags from javadoc/cppdoc comment lines but\n * refills those lines to ensure that lines don't end up looking choppy.\n * It also implements the -html option, which writes an HTML file\n * containing the text of the file.\n */\n\n#include <stdio.h>\n#include <ctype.h>\n#include <string.h>\n#include \"cslib.h\"\n#include \"hashmap.h\"\n#include \"options.h\"\n#include \"simpio.h\"\n#include \"strlib.h\"\n\n/* Constants */\n\n#define MAX_COMMENT_LINE 75\n#define NBSP '\\001'\n\n#define NORMAL 0\n#define TAGMODE 1\n#define ANDMODE 2\n#define FIRST_COMMENT 1\n#define IN_COMMENT 2\n#define IN_EXTENDED_COMMENT 3\n#define IN_PREFORMATTED_BLOCK 4\n\n/* Option specifications */\n\nstatic string OPTION_SPEC[] = {\n   \"-help\",\n   \"-html\",\n   \"-output <name>\",\n   \"-stylesheet <file>\",\n   \"-hide <file>\",\n   NULL\n};\n\n/* Private variables */\n\nstring buffer;\nstring stylesheet;\nHashMap options;\nbool sentenceBreak;\nbool html;\n\n/* Private function prototypes */\n\nstatic void convertStream(FILE *infile, FILE *outfile);\nstatic void flushBuffer(FILE *outfile);\nstatic void commentLine(string line, FILE *outfile);\nstatic string standardLine(string line);\nstatic bool dumpChar(int ch, FILE *outfile);\nstatic void dumpHTMLHeader(string hName, FILE *outfile);\nstatic void dumpHTMLTrailer(FILE *outfile);\nstatic bool isBreak(string line);\nstatic bool isDeletedLine(string line);\nstatic string fixHTML(string line);\n\n/* Main program */\n\nmain(int argc, string argv[]) {\n   FILE *infile, *outfile;\n   string *files, outName, hName;\n   int nFiles;\n\n   options = parseOptions(argv + 1, OPTION_SPEC);\n   files = getArgList(options);\n   nFiles = stringArrayLength(files);\n   if (containsKey(options, \"-help\") || nFiles > 1) {\n      showUsage(\"fillcomments <options> <infile>\", OPTION_SPEC);\n      return;\n   }\n   html = containsKey(options, \"-html\");\n   stylesheet = getOption(options, \"-stylesheet\", \"cppdoc.css\");\n   if (nFiles == 0) {\n      infile = stdin;\n      hName = \"-----.h\";\n   } else {\n      infile = fopen(files[0], \"r\");\n      hName = files[0];\n      if (infile == NULL) error(\"Can't open %s\", files[0]);\n   }\n   if (containsKey(options, \"-output\")) {\n      outName = getOption(options, \"-output\", \"\");\n      outfile = fopen(outName, \"w\");\n      if (outfile == NULL) error(\"Can't open %s\", outName);\n   } else {\n      outfile = stdout;\n   }\n   if (html) dumpHTMLHeader(hName, outfile);\n   convertStream(infile, outfile);\n   if (html) dumpHTMLTrailer(outfile);\n   if (infile != stdin) fclose(infile);\n   if (outfile != stdout) fclose(outfile);\n   exit(0);\n}\n\n/* Private functions */\n\nstatic void convertStream(FILE *infile, FILE *outfile) {\n   string line, kind, name;\n   int state, colon;\n   bool afterBlank, skipBlank;\n\n   buffer = NULL;\n   sentenceBreak = false;\n   state = NORMAL;\n   afterBlank = false;\n   skipBlank = false;\n   while (true) {\n      line = readLine(infile);\n      if (line == NULL) break;\n      if (isDeletedLine(line)) {\n         skipBlank = afterBlank;\n         continue;\n      }\n      switch (state) {\n       case NORMAL:\n         if (stringEqual(line, \"/*\")) {\n            state = FIRST_COMMENT;\n         } else if (stringEqual(line, \"/**\")) {\n            state = IN_EXTENDED_COMMENT;\n            fprintf(outfile, \"%s\\n\", line);\n         } else {\n            if (strlen(line) == 0) {\n               if (skipBlank) {\n                  skipBlank = false;\n               } else {\n                  fprintf(outfile, \"\\n\");\n                  afterBlank = true;\n               }\n            } else {\n               fprintf(outfile, \"%s\\n\", standardLine(line));\n               afterBlank = skipBlank = false;\n            }\n         }\n         break;\n       case FIRST_COMMENT:\n         if (html) {\n            colon = findString(\": \", line, 0);\n            if (colon > 0) {\n               kind = substring(line, 3, colon - 1);\n               if (!stringEqual(kind, \"File\")) {\n                  name = substring(line, colon + 2, strlen(line));\n                  fprintf(outfile, \"<a name=\\\"%s:%s\\\">\", kind, name);\n               }\n            }\n            if (stringEqual(stylesheet, \"none\")) {\n               fprintf(outfile, \"<scan style=\\\"color:blue;\\\">\");\n            } else {\n               fprintf(outfile, \"<scan class=comment>\");\n            }\n         }\n         fprintf(outfile, \"/*\\n\");\n         fprintf(outfile, \"%s\\n\", fixHTML(line));\n         state = IN_COMMENT;\n         break;\n       case IN_COMMENT:\n         if (startsWith(line, \" * -----\")) state = IN_EXTENDED_COMMENT;\n         if (startsWith(line, \" */\")) state = NORMAL;\n         if (state == NORMAL && html) {\n            fprintf(outfile, \"%s</scan>\\n\", fixHTML(line));\n         } else {\n            fprintf(outfile, \"%s\\n\", fixHTML(line));\n         }\n         skipBlank = afterBlank = false;\n         break;\n       case IN_EXTENDED_COMMENT:\n         if (startsWith(line, \" *<pre>\")) {\n            flushBuffer(outfile);\n            state = IN_PREFORMATTED_BLOCK;\n         } else {\n            if (startsWith(line, \" * \") && !isBreak(line)) {\n               if (buffer == NULL) {\n                  buffer = \" * \";\n               } else {\n                  buffer = concat(buffer, (sentenceBreak) ? \"  \" : \" \");\n                  sentenceBreak = false;\n               }\n               commentLine(line + 3, outfile);\n               sentenceBreak = endsWith(line, \".\");\n            } else {\n               flushBuffer(outfile);\n               buffer = \"\";\n               commentLine(line, outfile);\n               flushBuffer(outfile);\n            }\n            if (stringEqual(line, \" */\")) {\n               flushBuffer(outfile);\n               if (html) {\n                  fprintf(outfile, \"</scan>\");\n               }\n               skipBlank = afterBlank = false;\n               state = NORMAL;\n            }\n         }\n         break;\n       case IN_PREFORMATTED_BLOCK:\n         if (startsWith(line, \" *</pre>\")) {\n            state = IN_EXTENDED_COMMENT;\n         } else {\n            commentLine(line, outfile);\n            flushBuffer(outfile);\n            fprintf(outfile, \"\\n\");\n         }\n         break;\n      }\n   }\n   flushBuffer(outfile);\n}\n\nstatic void flushBuffer(FILE *outfile) {\n   int i;\n\n   if (buffer != NULL) {\n      for (i = 0; buffer[i] != '\\0'; i++) {\n         if (buffer[i] == NBSP) buffer[i] = ' ';\n      }\n      fprintf(outfile, \"%s\\n\", fixHTML(buffer));\n      buffer = NULL;\n   }\n}\n\nstatic void commentLine(string line, FILE *outfile) {\n   int index, ch, state;\n   string tag;\n\n   state = NORMAL;\n   for (index = 0; line[index] != '\\0'; index++) {\n      ch = line[index];\n      switch (state) {\n       case NORMAL:\n         switch (ch) {\n          case '<':\n            if (startsWith(line, \"#include\")) {\n               dumpChar(ch, outfile);\n            } else {\n               state = TAGMODE;\n               tag = \"\";\n            }\n            break;\n          case '&':\n            state = ANDMODE;\n            tag = \"\";\n            break;\n          default:\n            if (dumpChar(ch, outfile)) {\n               while (line[index + 1] == ' ') index++;\n            }\n            break;\n         }\n         break;\n       case TAGMODE:\n         if (ch == '>') {\n            state = NORMAL;\n         } else if (tag[0] == 0 && (ch == ' ' || ch == '>' || ch == '<')) {\n            dumpChar('<', outfile);\n            dumpChar(ch, outfile);\n            state = NORMAL;\n         } else {\n            tag = concat(tag, charToString(ch));\n         }\n         break;\n       case ANDMODE:\n         if (ch == ' ' || ch == '&') {\n            dumpChar('&', outfile);\n            dumpChar(ch, outfile);\n            state = NORMAL;\n         } else if (ch == ';') {\n            if (stringEqual(tag, \"nbsp\")) {\n               dumpChar(NBSP, outfile);\n            } else if (stringEqual(tag, \"amp\")) {\n               dumpChar('&', outfile);\n            } else if (stringEqual(tag, \"gt\")) {\n               dumpChar('>', outfile);\n            } else if (stringEqual(tag, \"lt\")) {\n               dumpChar('<', outfile);\n            }\n            state = NORMAL;\n         } else {\n            tag = concat(tag, charToString(ch));\n         }\n         break;\n      }\n   }\n}\n\nstatic string standardLine(string line) {\n   string str;\n   int start, finish;\n\n   if (!html) return line;\n   line = quoteHTML(line);\n   start = findString(\"/\" \"/\", line, 0);\n   if (start >= 0) {\n      str = substring(line, 0, start - 1);\n      if (stringEqual(stylesheet, \"none\")) {\n         str = concat(str, \"<scan style=\\\"color:blue;\\\">\");\n      } else {\n         str = concat(str, \"<scan class=comment>\");\n      }\n      str = concat(str, substring(line, start, strlen(line)));\n      str = concat(str, \"</scan>\");\n      return str;\n   }\n   start = findString(\"/\" \"*\", line, 0);\n   if (start == -1) return line;\n   finish = findString(\"*\" \"/\", line, start);\n   if (finish == -1) error(\"Multiline internal comment not supported\");\n   str = substring(line, 0, start - 1);\n   if (stringEqual(stylesheet, \"none\")) {\n      str = concat(str, \"<scan style=\\\"color:blue;\\\">\");\n   } else {\n      str = concat(str, \"<scan class=comment>\");\n   }\n   str = concat(str, substring(line, start, finish + 1));\n   str = concat(str, \"</scan>\");\n   str = concat(str, substring(line, finish + 2, strlen(line)));\n   return str;\n}\n\nstatic bool dumpChar(int ch, FILE *outfile) {\n   string str;\n   int i, index;\n\n   str = charToString(ch);\n   switch (ch) {\n     case 0x92:\n       str = \"'\";\n       break;\n     case 0x93: case 0x94:\n       str = \"\\\"\";\n       break;\n     case 0x95:\n       str = \"-\";\n       break;\n     case 0x96:\n       str = \"--\";\n       break;\n   }\n   if (buffer != NULL) {\n      buffer = concat(buffer, str);\n      if (stringLength(buffer) > MAX_COMMENT_LINE) {\n         index = stringLength(buffer) - 1;\n         while (buffer[index] != ' ') index--;\n         for (i = 0; i < index; i++) {\n            if (buffer[i] == NBSP) buffer[i] = ' ';\n         }\n         fprintf(outfile, \"%s\\n\", fixHTML(substring(buffer, 0, index - 1)));\n         buffer = concat(\" *\", buffer + index);\n         return stringLength(buffer) < 4;\n      }\n   } else {\n      fprintf(outfile, \"%s\", fixHTML(str));\n   }\n   return false;\n}\n\nstatic void dumpHTMLHeader(string hName, FILE *outfile) {\n   fprintf(outfile, \"<html>\\n\");\n   fprintf(outfile, \"<head>\\n\");\n   fprintf(outfile, \"<title>%s</title>\\n\", hName);\n   if (!stringEqual(stylesheet, \"none\")) {\n      fprintf(outfile, \"<link rel=\\\"stylesheet\\\" type=\\\"text/css\\\"\");\n      fprintf(outfile, \" href=\\\"%s\\\" />\\n\", stylesheet);\n   }\n   fprintf(outfile, \"</head>\\n\");\n   fprintf(outfile, \"<body>\\n\");\n   fprintf(outfile, \"<pre class=code>\\n\");\n}\n\nstatic void dumpHTMLTrailer(FILE *outfile) {\n   fprintf(outfile, \"</pre>\\n\");\n   fprintf(outfile, \"</body>\\n\");\n   fprintf(outfile, \"</html>\\n\");\n}\n\nstatic bool isBreak(string line) {\n   return startsWith(line, \" *  \")\n       || startsWith(line, \" * Macro: \")\n       || startsWith(line, \" * Statement: \")\n       || startsWith(line, \" * Function: \")\n       || startsWith(line, \" * Functions: \")\n       || startsWith(line, \" * Method: \")\n       || startsWith(line, \" * Methods: \")\n       || startsWith(line, \" * Type: \")\n       || startsWith(line, \" * Types: \")\n       || startsWith(line, \" * Operator: \")\n       || startsWith(line, \" * Operators: \")\n       || startsWith(line, \" * Constant: \")\n       || startsWith(line, \" * Usage: \")\n       || startsWith(line, \" * -----\")\n       || startsWith(line, \" * @\");\n}\n\nstatic bool isDeletedLine(string line) {\n   return stringEqual(line, \" * <ul>\")\n       || stringEqual(line, \" * </ul>\")\n       || stringEqual(line, \" * <ol>\")\n       || stringEqual(line, \" * </ol>\")\n       || stringEqual(line, \" * <table>\")\n       || stringEqual(line, \" * </table>\")\n       || stringEqual(line, \"#include \\\"foreach.h\\\"\")\n       || findString(\"<include src=\\\"\", line, 0) != -1\n       || startsWith(line, \"#include \\\"private/\");\n};\n\nstatic string fixHTML(string line) {\n   return (html) ? quoteHTML(line) : line;\n}\n"
  },
  {
    "path": "Archived/autograder-empty-project/src/graphsupport.cpp",
    "content": "/*\n * @version 2017/10/24\n * - replaced null in uppercase with nullptr\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"graphsupport.h\"\n#include <iomanip>\n#include \"gmath.h\"\n#undef INTERNAL_INCLUDE\n\n// definitions for colors\nconst int NUM_COLORS = 7;\n\nconst Color UNCOLORED = 0;\nconst Color WHITE = 1;\nconst Color GRAY = 2;\nconst Color YELLOW = 3;\nconst Color GREEN = 4;\nconst Color RED = 5;\nconst Color BLUE = 6;\n\nconst Color COLORS[7] = {\n    UNCOLORED,\n    WHITE,\n    GRAY,\n    YELLOW,\n    GREEN,\n    RED,\n    BLUE\n};\n\nconst string COLOR_NAMES[7] = {\n    \"uncolored\",\n    \"white\",\n    \"gray\",\n    \"yellow\",\n    \"green\",\n    \"red\",\n    \"blue\"\n};\n\nbool graph_canReach(BasicGraph& graph, Vertex* start, Vertex* end, Set<Vertex*>& visited, Vector<Vertex*>* path) {\n    // cout << \"    canReach(graph, start=\" << start->name << \", end=\" << end->name << \")\" << endl;\n    if (start == end) {\n        return true;\n    } else if (visited.contains(start)) {\n        return false;\n    } else {\n        visited.add(start);\n        if (path) {\n            path->add(start);\n        }\n        for (Vertex* neighbor : graph.getNeighbors(start->name)) {\n            if (graph_canReach(graph, neighbor, end, visited, path)) {\n                return true;\n            }\n        }\n        visited.remove(start);\n        if (path) {\n            path->remove(path->size() - 1);\n        }\n        return false;\n    }\n}\n\nbool graph_isConnected(BasicGraph& graph, bool checkWeak) {\n    bool weak = false;\n    for (Vertex* v1 : graph.getVertexSet()) {\n        for (Vertex* v2 : graph.getVertexSet()) {\n            if (v1 == v2) {\n                continue;\n            }\n            // cout << \"    \" << v1->name << \" ... \" << v2->name << endl;\n            graph.resetData();\n            Set<Vertex*> visited;\n            if (!graph_canReach(graph, v1, v2, visited)) {\n                if (checkWeak && graph_canReach(graph, v2, v1, visited)) {\n                    weak = true;\n                    continue;\n                }\n                cout << \"vertex \" << v1->name << \" cannot reach \" << v2->name << endl;\n                return false;\n            }\n        }\n    }\n    \n    if (weak) {\n        cout << \"(weakly connected)\" << endl;\n    }\n    return !weak;\n}\n\nbool graph_isCyclic(BasicGraph& graph) {\n    for (Vertex* v : graph.getVertexSet()) {\n        for (Vertex* neighbor : graph.getNeighbors(v)) {\n            Vector<Vertex*> path;\n            graph.resetData();\n            Set<Vertex*> visited;\n            if (graph_canReach(graph, neighbor, v, visited, &path)) {\n                path.insert(0, v);\n                path.add(v);\n                cout << \"cycle starting from \" << v->name << \": \" << graph_pathToString(path) << endl;\n                return true;\n            }\n        }\n    }\n    \n    return false;\n}\n\nvoid graph_printEdgeList(BasicGraph& graph) {\n    cout << \"edge list:\" << endl;\n    Vector<string> edgeList;\n    for (Edge* edge : graph.getEdgeSet()) {\n        string edgeStr = \"\" + edge->start->name + \" -> \" + edge->finish->name;\n        if (!floatingPointEqual(edge->weight, 0.0)) {\n            edgeStr += \" : \" + realToString(edge->weight);\n        }\n        cout << \"  \" << edgeStr << endl;\n    }\n}\n\nvoid graph_printAdjacencyList(BasicGraph& graph) {\n    cout << \"adjacency list:\" << endl;\n    for (Vertex* v : graph.getVertexSet()) {\n        cout << \"  \" << v->name << \" : \";\n        int count = 0;\n        for (Vertex* neighbor : graph.getNeighbors(v)) {\n            if (count > 0) {\n                cout << \", \";\n            }\n            cout << \"(\" << neighbor->name;\n            Edge* edge = graph.getEdge(v, neighbor);\n            if (!floatingPointEqual(edge->weight, 0.0)) {\n                cout << \":\" << edge->weight;\n            }\n            count++;\n            cout << \")\";\n        }\n        cout << endl;\n    }\n}\n\nvoid graph_printAdjacencyMatrix(BasicGraph& graph) {\n    cout << \"adjacency matrix:\" << endl;\n    \n    const int COL_WIDTH = 5;\n    \n    // column headers\n    cout << setw(COL_WIDTH) << \"\";\n    for (Vertex* v1 : graph.getVertexSet()) {\n        cout << setw(COL_WIDTH) << v1->name;\n    }\n    cout << endl;\n    \n    for (Vertex* v1 : graph.getVertexSet()) {\n        // row header\n        cout << setw(COL_WIDTH) << v1->name;\n        \n        for (Vertex* v2 : graph.getVertexSet()) {\n            double toPrint = 0;\n            if (graph.isNeighbor(v1, v2)) {\n                Edge* edge = graph.getEdge(v1, v2);\n                if (!floatingPointEqual(edge->weight, 0.0)) {\n                    toPrint = edge->weight;\n                } else {\n                    toPrint = 1;\n                }\n            }\n            cout << setw(COL_WIDTH) << toPrint;\n        }\n        cout << endl;\n    }\n}\n\nvoid graph_printVertexDegrees(BasicGraph& graph) {\n    cout << \"vertex degrees:\" << endl;\n    for (Vertex* v : graph.getVertexSet()) {\n        cout << \"  \" << v->name << \" : \";\n        int inDegree = 0;\n        for (Vertex* v2 : graph.getVertexSet()) {\n            if (graph.isNeighbor(v2, v)) {\n                inDegree++;\n            }\n        }\n        cout << \"in-degree: \" << inDegree;\n        cout << \", out-degree: \" << v->edges.size() << endl;\n    }\n}\n\nstring graph_pathToString(const Vector<Vertex*>& path) {\n    Vector<string> path2;\n    for (Vertex* v : path) {\n        if (v) {\n            path2.add(v->name);\n        } else {\n            path2.add(\"nullptr\");\n        }\n    }\n    return path2.toString();\n}\n\nvoid graph_printPath(const Vector<Vertex*>& path) {\n    cout << \"{\";\n    int i = 0;\n    for (Vertex* v : path) {\n        if (i > 0) {\n            cout << \", \";\n        }\n        if (!v) {\n            cout << \"nullptr\";\n        } else {\n            cout << v->name;\n        }\n        i++;\n    }\n    cout << \"}\" << endl;\n}\n\nvoid BasicGraph_fromString(BasicGraph& obj, string str) {\n    istringstream input(str);\n    input >> obj;\n}\n\nostream& operator <<(ostream& out, const Vector<Vertex*>& path) {\n    out << \"{\";\n    int i = 0;\n    for (Vertex* v : path) {\n        if (i > 0) {\n            out << \", \";\n        }\n        if (!v) {\n            out << \"nullptr\";\n        } else {\n            out << v->name;\n        }\n        i++;\n    }\n    out << \"}\";\n    return out;\n}\n\nostream& operator <<(ostream& out, const Set<Vertex*>& set) {\n    out << \"{\";\n    int i = 0;\n    for (Vertex* v : set) {\n        if (i > 0) {\n            out << \", \";\n        }\n        if (!v) {\n            out << \"nullptr\";\n        } else {\n            out << v->name;\n        }\n        i++;\n    }\n    out << \"}\";\n    return out;\n}\n"
  },
  {
    "path": "Archived/autograder-empty-project/src/graphsupport.h",
    "content": "#ifndef _graphsupport_h\n#define _graphsupport_h\n\n#include <iostream>\n#include <sstream>\n#include \"basicgraph.h\"\n#include \"vector.h\"\nusing namespace std;\n\n// colors for graph problems\ntypedef int Color;\nextern const Color UNCOLORED, WHITE, GRAY, YELLOW, GREEN, RED, BLUE;\nextern const int NUM_COLORS;\nextern const Color COLORS[7];\nextern const std::string COLOR_NAMES[7];\n\nbool graph_canReach(BasicGraph& graph, Vertex* start, Vertex* end, Set<Vertex*>& visited, Vector<Vertex*>* path = nullptr);\nbool graph_isConnected(BasicGraph& graph, bool checkWeak = false);\nbool graph_isCyclic(BasicGraph& graph);\nvoid graph_printEdgeList(BasicGraph& graph);\nvoid graph_printAdjacencyList(BasicGraph& graph);\nvoid graph_printAdjacencyMatrix(BasicGraph& graph);\nvoid graph_printVertexDegrees(BasicGraph& graph);\nstring graph_pathToString(const Vector<Vertex*>& path);\nvoid graph_printPath(const Vector<Vertex*>& path);\nvoid BasicGraph_fromString(BasicGraph& obj, string str);\nostream& operator <<(ostream& out, const Vector<Vertex*>& path);\nostream& operator <<(ostream& out, const Set<Vertex*>& set);\n\n#endif //_graphsupport_h\n"
  },
  {
    "path": "Archived/autograder-empty-project/src/mainfunc-biginteger.cpp",
    "content": "///*\n// * Test file for verifying the Stanford C++ lib functionality.\n// */\n\n//#include <iostream>\n//#include <iomanip>\n//#include \"bigfloat.h\"\n//#include \"biginteger.h\"\n//#include \"console.h\"\n//#include \"error.h\"\n//#include \"strlib.h\"\n//using namespace std;\n\n//void testBigInteger();\n\n//int mainBigInteger() {\n//    cout << \"Stanford C++ lib tester\" << endl;\n//    testBigInteger();\n//    return 0;\n//}\n\n//bigint fact(int n) {\n//    bigint result(\"1\");\n//    for (int i = 2; i <= n; i++) {\n//        result *= BigInteger(integerToString(i));\n//    }\n//    return result;\n//}\n\n//void testBigInteger() {\n//    {\n//        BigInteger bi(\"-24\");\n//        cout << \"abs = \" << bi.abs() << endl;\n//        cout << \"pos: \" << boolalpha << bi.isPositive() << \", neg: \" << bi.isNegative() << \", nonneg: \" << bi.isNonNegative() << endl;\n//        bi = bi.abs();\n//        cout << \"pos: \" << boolalpha << bi.isPositive() << \", neg: \" << bi.isNegative() << \", nonneg: \" << bi.isNonNegative() << endl;\n//        cout << \"pos: \" << boolalpha << BigInteger::ZERO.isPositive() << \", neg: \" << BigInteger::ZERO.isNegative() << \", nonneg: \" << BigInteger::ZERO.isNonNegative() << endl;\n\n//        BigInteger bi2(\"16\");\n//        cout << \"gcd = \" << bi.gcd(bi2) << endl << endl;\n\n//        do {\n//            cout << \"int bi2 = \" << bi2 << \", hex = \" << bi2.toString(16) << \", oct = \" << bi2.toString(8) << \", bin = \" << bi2.toString(2) << endl;\n//            bi2 *= BigInteger::TWO;\n//        } while (bi2.isInt());\n\n//        do {\n//            cout << \"long bi2 = \" << bi2 << endl;\n//            bi2 *= BigInteger::TEN;\n//        } while (bi2.isLong());\n\n//        cout << \"max = \" << bi.max(bi2) << \", min = \" << bi.min(bi2) << endl;\n\n//        cout << \"modPow = \" << BigInteger::TWO.modPow(10, 100) << endl;\n\n//        cout << \"pow = \" << endl;\n//        for (int i = 0; i < 20; i++) {\n//            cout << \"2 ^ \" << i << \" = \" << BigInteger::TWO.pow(i) << endl;\n//        }\n\n//        // radix stuff\n//        BigInteger biHex(\"0xff00\", 16);\n//        cout << \"bihex = \" << biHex << \", hex = \" << biHex.toString(16) << endl;\n//        BigInteger biBin(\"0b101010\", 2);\n//        cout << \"bibin = \" << biBin << \", bin = \" << biBin.toString(2) << endl;\n\n//        BigInteger biUnary(\"1111111\", 1);\n//        cout << \"biunary = \" << biUnary << \", unary \" << biUnary.toString(1) << endl;\n\n//        for (BigInteger bi = 1; bi <= 100; bi++) {\n//            cout << \"int bi = \" << bi << \", hex = \" << bi.toString(16) << \", oct = \" << bi.toString(8) << \", bin = \" << bi.toString(2) << endl;\n//        }\n\n//        // various int/long/double x BigInteger binary operations\n//        cout << \"bitwise stuff:\" << endl;\n//        BigInteger binary1(\"10100011\", 2);\n//        BigInteger binary2(\"01110110\", 2);\n//        cout << \"a     = \" << binary1.toString(2) << endl;\n//        cout << \"b     = \" << setw(8) << binary2.toString(2) << endl;\n//        cout << \"a & b = \" << setw(8) << (binary1 & binary2).toString(2) << endl;\n//        cout << \"a | b = \" << setw(8) << (binary1 | binary2).toString(2) << endl;\n//        cout << \"a ^ b = \" << setw(8) << (binary1 ^ binary2).toString(2) << endl;\n//        cout << \"~a    = \" << setw(8) << (~binary1).toString(2) << endl;\n//        cout << \"!a    = \" << setw(8) << (!binary1).toString(2) << endl;\n//        cout << endl;\n\n//        cout << \"int +: \" << (42 + bi) << endl;\n//        cout << \"int -: \" << (42 - bi) << endl;\n//        cout << \"int *: \" << (42 * bi) << endl;\n//        cout << \"int /: \" << (42 / bi) << endl;\n//        cout << \"int %: \" << (42 % bi) << endl;\n\n//        cout << \"long +: \" << ((long)42 + bi) << endl;\n//        cout << \"long -: \" << ((long)42 - bi) << endl;\n//        cout << \"long *: \" << ((long)42 * bi) << endl;\n//        cout << \"long /: \" << ((long)42 / bi) << endl;\n//        cout << \"long %: \" << ((long)42 % bi) << endl;\n\n////        cout << \"double +: \" << (42.5 + bi) << endl;\n////        cout << \"double -: \" << (42.5 - bi) << endl;\n////        cout << \"double *: \" << (42.5 * bi) << endl;\n////        cout << \"double /: \" << (42.5 / bi) << endl;\n////        cout << \"double %: \" << (42.5 % bi) << endl;\n//    }\n\n//    try {\n//        BigInteger bad(\"-845lol098\");\n//        cout << bad << endl;\n//    } catch (ErrorException& ex) {\n//        cout << \"correctly threw exception when creating bad integer: \" << ex.getMessage() << endl;\n//    }\n\n//    // big division\n//    BigInteger realbig(1000);\n//    realbig *= realbig;\n//    realbig *= realbig;\n//    realbig *= realbig;\n//    realbig *= realbig;\n//    BigInteger almostAsBig(realbig);\n//    realbig *= realbig;\n//    cout << \"realbig: \" << realbig << endl;\n//    cout << \"almost : \" << almostAsBig << endl;\n\n//    try {\n//        BigInteger quotient = realbig / almostAsBig;\n//        cout << \"quotient: \" << quotient << endl;\n//    } catch (ErrorException& ex) {\n//        cout << \"correctly threw exception when dividing by large integer\" << endl;\n//    }\n\n\n//    cout << \"Fib:\" << endl;\n//    BigInteger a(1);\n//    BigInteger b(1);\n//    for (int i = 0; i < 100; i++) {\n//        BigInteger c = a + b;\n//        cout << \"#\" << i << \": \" << c << endl;\n//        a = b;\n//        b = c;\n//    }\n\n//    cout << \"Fact:\" << endl;\n//    bigint f;\n//    for (int i = 0; i < 50; i++) {\n//        f = fact(i);\n//        cout << \"fact(\" << i << \") = \" << f << endl;\n//    }\n\n//    for (int i = 0; i < 19; i++) {\n//        bigint g = fact(i);\n//        bigint quotient = f / g;\n//        bigint mod = f / g;\n\n//        cout << \"i = \" << i << \", fact = \" << g << \", quot = \" << quotient << \", mod = \" << mod << endl;\n//    }\n//}\n"
  },
  {
    "path": "Archived/autograder-empty-project/src/mainfunc-functional.cpp",
    "content": "///*\n// * Test file for verifying the Stanford C++ lib functionality.\n// */\n\n//#include <iostream>\n//#include <string>\n//#include \"functional.h\"\n//#include \"vector.h\"\n//using namespace std;\n\n//void testFunctional();\n\n//int mainFunctional() {\n//    testFunctional();\n//    return 0;\n//}\n\n//bool is_even(int n) {\n//    return n % 2 == 0;\n//}\n\n//int add(int a, int b) {\n//    return a + b;\n//}\n\n//int squared(int n) {\n//    return n * n;\n//}\n\n//int len(string s) {\n//    return (int) s.length();\n//}\n\n//bool strLenLess(const string& s1, const string& s2) {\n//    return s1.length() < s2.length() ||\n//            (s1.length() == s2.length() && s1 < s2);\n//}\n\n//void testFunctional() {\n//    Vector<int> v {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};\n//    Vector<int> v2 = functional::filter(v, is_even);\n//    cout << \"v  : \" << v << endl;\n//    cout << \"v2 : \" << v2 << endl;\n\n//    Vector<int> v3 = functional::map(v, squared);\n//    cout << \"v3 : \" << v3 << endl;\n\n//    Vector<string> names {\"Cynthia\", \"Marty\", \"Ed\", \"\", \"Bob\"};\n//    Vector<int> lengths;\n//    functional::map(names, len, lengths);\n//    cout << \"names  : \" << names << endl;\n//    cout << \"lengths: \" << lengths << endl;\n\n////    int result = functional::reduce(v, add);\n////    cout << \"sum: \" << result << endl;\n//}\n"
  },
  {
    "path": "Archived/autograder-empty-project/src/mainfunc-iurlstream.cpp",
    "content": "///*\n// * Test file for verifying the Stanford C++ lib functionality.\n// */\n\n//#include <iostream>\n//#include <string>\n//#include \"gdownloader.h\"\n//#include \"urlstream.h\"\n\n//void testAllUrls();\n\n//int mainUrlStream() {\n//    std::cout << \"Downloading ...\" << std::endl;\n//    testAllUrls();\n//    std::cout << \"Downloads complete.\" << std::endl;\n//    return 0;\n//}\n\n//void testURL(const std::string& url) {\n////    GDownloader* downloader = new GDownloader();\n////    string text = downloader->downloadAsString(url);\n////    if (downloader->hasError()) {\n////        cout << \"error downloading \" << url << \":\" << endl << downloader->getErrorMessage() << endl;\n////    } else {\n////        cout << \"text of \" << url << \":\" << endl\n////             << text << endl\n////             << \"=======================================================\" << endl;\n////    }\n\n//    iurlstream input;\n//    input.setHeader(\"User-Agent\",\n//            \"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2\");\n//    input.open(url);\n//    if (!input) {\n//        std::cerr << \"An error occurred: \" << input.getErrorCode() << \" \" << input.getErrorMessage() << std::endl;\n//    } else {\n//        std::cout << input.str() << std::endl;\n//    }\n//}\n\n//void testAllUrls() {\n//    testURL(\"http://www.martystepp.com/\");\n//    testURL(\"https://en.wikipedia.org/w/index.php?title=Quokka&action=edit\");\n//    testURL(\"https://en.wikipedia.org/w/api.php?action=query&format=json&titles=Quokka&prop=extracts&explaintext&exlimit=1\");\n//    testURL(\"https://en.wikipedia.org/w/api.php?action=query&format=json&titles=Quokka&redirects\");\n//    testURL(\"http://www.bogusbogus.com/bogusbogus.html\");\n//    testURL(\"http://www.google.com/bogusbogus.html\");\n//}\n"
  },
  {
    "path": "Archived/autograder-empty-project/src/mainfunc-menu.cpp",
    "content": "///*\n// * Test file for verifying the Stanford C++ lib functionality.\n// */\n\n//#include <iostream>\n//#include \"console.h\"\n//#include \"simpio.h\"\n//using namespace std;\n\n//int mainMenu() {\n//    cout << \"Stanford C++ lib tester\" << endl;\n\n////    while (true) {\n////        cout << \"   DATA STRUCTURES::\" << endl;\n////        cout << \"c) collections\" << endl;\n////        cout << \"cs) collection stream extraction\" << endl;\n////        cout << \"ci) collection initializer lists\" << endl;\n////        cout << \"csh) collection shuffle\" << endl;\n\n////        cout << \"   STUFF RELATED TO INPUT/OUTPUT:\" << endl;\n////        cout << \"e) cout / cerr mix\" << endl;\n////        cout << \"i) cin / cout\" << endl;\n////        cout << \"an) animation\" << endl;\n////        cout << \"p) pipe\" << endl;\n////        cout << \"s) strings\" << endl;\n////        cout << \"u) urlstream\" << endl;\n        \n////        cout << \"   GRAPHICS:\" << endl;\n////        cout << \"fd) file dialog\" << endl;\n////        cout << \"bi) buffered image\" << endl;\n////        cout << \"op) optionpane\" << endl;\n////        cout << \"rb) radio buttons\" << endl;\n////        cout << \"ta) table\" << endl;\n\n////        cout << \"   HTTP SERVER:\" << endl;\n////        cout << \"ss) start server\" << endl;\n\n////        cout << \"   ERROR HANDLING AND STACK TRACES:\" << endl;\n////        cout << \"   (Try all 3 to make sure stack trace prints.)\" << endl;\n////        cout << \"   (Current configuration shows no trace on stack overflow.)\" << endl;\n////        cout << \"n) segfault (NULL ptr)\" << endl;\n////        cout << \"t) throw exception\" << endl;\n////        cout << \"o) stack overflow\" << endl;\n////        cout << \"ri) recursion indent\" << endl;\n////        cout << endl;\n////        string cmd = getLine(\"Command (Enter to quit)?\");\n////        if (cmd.empty()) {\n////            break;\n////        } else if (cmd == \"an\") {\n////            animationTest();\n////        } else if (cmd == \"c\") {\n////            randomElementTest();\n////            compareTest();\n////            foreachTest();\n////            hashCodeTest();\n////        } else if (cmd == \"cs\") {\n////            streamExtractTest();\n////        } else if (cmd == \"csh\") {\n////            shuffleTest();\n////        } else if (cmd == \"ci\") {\n////            initializerListTest();\n////        } else if (cmd == \"e\") {\n////            coutCerrMixTest();\n////        } else if (cmd == \"fd\") {\n////            fileDialogTest();\n////        } else if (cmd == \"bi\") {\n////            gbufferedImageTest();\n////        } else if (cmd == \"op\") {\n////            goptionpaneTest();\n////        } else if (cmd == \"rb\") {\n////            radioButtonTest();\n////        } else if (cmd == \"i\") {\n////            // cinOutTest();\n////            killProcessTest();\n////        } else if (cmd == \"n\") {\n////            segfaultTest();\n////        } else if (cmd == \"p\") {\n////            outputColorTest();\n////            cinOutTest();\n////            coutCerrMixTest();\n////            getIntegerTest();\n////            longStringTest();\n////            // killProcessTest();\n////        } else if (cmd == \"o\") {\n////            //getPlatform()->setStackSize(1024*1024*128);\n////            stackOverflowTest();\n////        } else if (cmd == \"ri\") {\n////            recursionIndentTest();\n////        } else if (cmd == \"s\") {\n////            stringToIntegerTest();\n////        } else if (cmd == \"ss\") {\n////            serverTest();\n////        } else if (cmd == \"t\") {\n////            exceptionTest();\n////        } else if (cmd == \"ta\") {\n////            gtableTest();\n////        } else if (cmd == \"u\") {\n////            urlstreamTest();\n////        }\n////    }\n    \n//    cout << \"Done.\" << endl;\n//    return 0;\n//}\n"
  },
  {
    "path": "Archived/autograder-empty-project/src/mainfunc-process.cpp",
    "content": "///*\n// * Test file for verifying the Stanford C++ lib functionality.\n// */\n\n//#include <iostream>\n//#include \"console.h\"\n//#include \"process.h\"\n//using namespace std;\n\n//void testProcess();\n\n//int mainProcess() {\n//    cout << \"Stanford C++ lib tester\" << endl;\n//    testProcess();\n//    return 0;\n//}\n\n//void testProcess() {\n//#ifdef PROCESS_H_ENABLED   // won't be enabled\n//    Process proc;\n//    proc.addCommandLineArgs({\n////        \"/bin/uname\",\n////        \"-a\"\n//        // \"/home/stepp/Dropbox/data/docs/stanford/StanfordCPPLib/test_programs/exitcode42\"\n//        // \"/home/stepp/Dropbox/data/docs/stanford/StanfordCPPLib/test_programs/delayed_output\"\n//        \"/home/stepp/Dropbox/data/docs/stanford/StanfordCPPLib/test_programs/infinite_loop\"\n//    });\n//    cout << \"my process is: \" << proc << endl << endl;\n//    cout << \"About to call startAndWait ...\" << endl;\n\n//    proc.setTimeout(1000);\n//    proc.startAndWait();\n\n//    cout << \"Done with startAndWait\" << endl << endl;\n//    cout << \"my process is: \" << proc << endl << endl;\n\n//    cout << \"About to call stop ...\" << endl;\n//    proc.stop();\n//    cout << \"Done with stop\" << endl << endl;\n\n//    cout << \"exit code:\" << proc.exitCode() << endl;\n\n//    cout << \"output (length \" << proc.output().length() << \"):\" << endl\n//         << proc.output() << endl << endl;\n//    cout << \"my process is: \" << proc << endl << endl;\n//#endif // PROCESS_H_ENABLED\n//}\n"
  },
  {
    "path": "Archived/autograder-empty-project/src/mainfunc-qt-2dgraphics.cpp",
    "content": "///*\n// * Test file for verifying the Stanford C++ lib functionality.\n// */\n\n//#include <iostream>\n//#include \"gcolor.h\"\n//#include \"gobjects.h\"\n//#include \"ginteractors.h\"\n//#include \"gtimer.h\"\n//#include \"random.h\"\n//#include \"timer.h\"\n//using namespace std;\n\n//void testQwindowDrawing();\n\n//int mainQt2dGraphics() {\n//    testQwindowDrawing();\n//    return 0;\n//}\n\n//void grayscale(GBufferedImage* image) {\n//    // convert image to grayscale\n//    image->setAutoRepaint(false);\n//    Timer tim;\n//    tim.start();\n//    for (int x = 0; x < image->getWidth(); x++) {\n//        for (int y = 0; y < image->getHeight(); y++) {\n//            int rgb = image->getRGB(x, y);\n//            int r = GBufferedImage::getRed(rgb);\n//            int g = GBufferedImage::getGreen(rgb);\n//            int b = GBufferedImage::getBlue(rgb);\n//            int avg = (r + g + b) / 3;\n//            rgb = GBufferedImage::createRgbPixel(avg, avg, avg);\n//            image->setRGB(x, y, rgb);\n//        }\n//    }\n//    image->repaint();\n//    tim.stop();\n//    cout << \"took \" << tim.elapsed() << \"ms\" << endl;\n//}\n\n//void testQwindowDrawing() {\n//    static const bool TEST_BACKGROUND = true;\n//    static const bool TEST_FOREGROUND = true;\n//    static const bool TEST_LAYOUT_WIDGETS = true;\n\n//    static GWindow* window = nullptr;\n//    static GOval* ball = nullptr;\n//    static GButton* button = nullptr;\n//    static GButton* button2 = nullptr;\n//    static GButton* button3 = nullptr;\n//    static GButton* button4 = nullptr;\n//    static GButton* button5 = nullptr;\n//    static GButton* clearButton = nullptr;\n//    static GButton* saveButton = nullptr;\n//    static GButton* scaleButton = nullptr;\n//    static GButton* rotateButton = nullptr;\n//    static GButton* setSizeButton = nullptr;\n//    static GLabel* label = nullptr;\n//    static GLabel* label2 = nullptr;\n//    static double dx = 5;\n//    static double dy = 3;\n\n//    window = new GWindow(900, 500);\n//    // window->setCanvasSize(900, 500);\n//    window->setTitle(\"QtGui Drawing Window\");\n//    // window->setResizable(false);\n//    // window->setBackground(\"yellow\");\n//    window->setExitOnClose(true);\n//    window->center();\n\n//    if (TEST_LAYOUT_WIDGETS) {\n//        label = new GLabel(\"QtGui <b>AWESOME</b> <i>cool</i> window\");\n//        label2 = new GLabel(\"????????????\");\n//        window->addToRegion(label2, \"North\");\n//        window->addToRegion(label, \"North\");\n\n//        window->setRegionAlignment(\"North\", \"Left\");\n//        window->setRegionAlignment(\"South\", \"Right\");\n\n//        button = new GButton(\"Tick\");\n//        button2 = new GButton(\"Pixels\");\n//        button3 = new GButton(\"Repaint\");\n//        button4 = new GButton(\"Clear PX\");\n//        button5 = new GButton(\"BG\");\n//        button5->setBackground(\"#77ff00ff\");\n//        button5->setColor(\"#77000000\");\n//        clearButton = new GButton(\"Clear\");\n//        saveButton = new GButton(\"Save\");\n//        scaleButton = new GButton(\"Scale\");\n//        rotateButton = new GButton(\"Rotate\");\n//        setSizeButton = new GButton(\"setSize\");\n\n//        window->addToRegion(button, \"South\");\n//        window->addToRegion(button2, \"South\");\n//        window->addToRegion(button3, \"South\");\n//        window->addToRegion(button4, \"South\");\n//        window->addToRegion(button5, \"South\");\n//        window->addToRegion(saveButton, \"South\");\n//        window->addToRegion(clearButton, \"South\");\n//        window->addToRegion(scaleButton, \"South\");\n//        window->addToRegion(rotateButton, \"South\");\n//        window->addToRegion(setSizeButton, \"South\");\n//    }\n\n////        window->setBackground(\"yellow\");\n////        window->setColor(\"red\");\n////        window->setFillColor(\"red\");\n\n//    // drawing directly onto window\n////    window->setColor(\"blue\");\n////    window->setFillColor(\"yellow\");\n////    window->fillOval(20, 120, 40, 60);\n////    window->setColor(\"red\");\n////    window->setFillColor(\"green\");\n////    window->setLineWidth(3);\n////    window->fillRect(10, 30, 120, 70);\n////    window->drawLine(100, 100, 200, 150);\n\n//    // pixely stuff\n\n//    // background layer\n//    if (TEST_BACKGROUND) {\n//        window->setColor(\"black\");\n//        window->drawRect(400, 200, 50, 50);\n\n//        window->setFillColor(\"red\");\n//        window->setLineWidth(5);   // BUG: affects later shapes\n//        window->setLineStyle(GObject::LINE_DASH);\n//        window->drawRect(20, 220, 100, 100);\n//        window->fillArc(20, 220, 100, 100, 45, 120);\n\n//        window->setFillColor(\"purple\");\n//        window->setFont(\"Monospaced-bold-16\");\n//        window->fillPolygon({200, 200, 250, 300, 150, 300});\n//    }\n\n//    // foreground layer\n//    static GImage* gimage = nullptr;\n//    if (TEST_FOREGROUND) {\n//        ball = new GOval(20, 20, 50, 50);\n//        ball->setFillColor(\"#aaff0033\");\n//        ball->setLineWidth(2);\n//        ball->scale(1.5);\n//        ball->setLineStyle(GObject::LINE_DOT);\n//        window->add(ball);\n\n//        window->add(new GRect(400, 100, 50, 50));\n\n//        window->setColor(\"green\");\n//        GText* gtext = new GText(\"Hello, Qt!\", 200, 80);\n//        gtext->setColor(\"green\");\n//        gtext->rotate(10);\n//        window->add(gtext);\n\n//        GText* gtext2 = new GText(\"Bye, Felicia!\", 220, 100);\n//        gtext2->setColor(\"red\");\n//        gtext2->scale(1.5);\n//        window->add(gtext2);\n\n//        gimage = new GImage(\"triangle-icon.png\", 200, 40);\n//        gimage->setOpacity(0.6);\n//        window->add(gimage);\n\n//        window->setColor(\"blue\");\n//        GText* gtext3 = new GText(\"Third string\", 240, 120);\n//        gtext3->setColor(\"blue\");\n//        window->add(gtext3);\n//    }\n\n//    if (TEST_LAYOUT_WIDGETS) {\n//        std::function<void()> tickFunc = []() {\n//            window->pause(20);\n//            ball->move(dx, dy);\n//            double cw = window->getCanvasWidth();\n//            double ch = window->getCanvasHeight();\n//            if (ball->getX() < 0 || ball->getRightX() >= cw) {\n//                dx = -dx;\n//            }\n//            if (ball->getY() < 0 || ball->getBottomY() >= ch) {\n//                dy = -dy;\n//            }\n//            // cout << \"ball loc is now: \" << ball->getLocation() << endl;\n//        };\n//        button->setActionListener(tickFunc);\n\n//        button2->setActionListener([]() {\n//            for (int y = 3*window->getCanvasHeight()/4; y < window->getCanvasHeight(); y++) {\n//                for (int x = 3*window->getCanvasWidth()/4; x < window->getCanvasWidth(); x++) {\n//                    int r = (x * 2) % 256;\n//                    int g = (y * 2) % 256;\n//                    int b = ((x+y) * 2) % 256;\n//                    window->setPixel(x, y, r, g, b);\n//                }\n//            }\n//        });\n\n//        button3->setActionListener([]() {\n//            window->repaint();\n//        });\n\n//        button4->setActionListener([]() {\n//            window->clearCanvasPixels();\n//        });\n\n//        button5->setActionListener([]() {\n//            window->setBackground(\"yellow\");\n//        });\n\n//        clearButton->setActionListener([]() {\n//            window->clear();\n//        });\n\n//        saveButton->setActionListener([]() {\n//            string filename = GFileChooser::showSaveDialog();\n//            window->saveCanvasPixels(filename);\n//        });\n\n//        scaleButton->setActionListener([]() {\n//            gimage->scale(1.2);\n//        });\n\n//        rotateButton->setActionListener([]() {\n//            gimage->rotate(1);\n//        });\n\n//        setSizeButton->setActionListener([]() {\n//            gimage->setSize(gimage->getWidth() * 1.1, gimage->getHeight() * 1.1);\n//        });\n//    }\n\n//    if (TEST_LAYOUT_WIDGETS && TEST_BACKGROUND) {\n//        window->setMouseListener([](GEvent event) {\n//            // cout << \"mouse! event=\" << event << endl;\n//            // cout << \"mouse handler: What thread am I? \" << QGui::instance()->getCurrentThread() << endl;\n//            if (event.getType() == MOUSE_DRAGGED) {\n//                window->setColor(\"blue\");\n//                window->setFillColor(\"blue\");\n//                window->setLineStyle(GObject::LINE_SOLID);\n//                window->setLineWidth(1);\n//                window->fillOval(event.getX() - 5, event.getY() - 5, 10, 10);\n//            } else if (event.getType() == MOUSE_MOVED) {\n//                label->setText(event.getLocation().toString()\n//                               + \" \" + window->getPixelString(event.getX(), event.getY()));\n//                cout << \"mouse moved: \" << event.getLocation().toString() << endl;\n//            }\n//        });\n//    }\n\n//    if (TEST_FOREGROUND) {\n//        window->setKeyListener([](GEvent event) {\n//            // cout << \"key! event=\" << event << endl;\n//            double balldx = 0;\n//            double balldy = 0;\n//            if (event.getKeyCode() == GEvent::LEFT_ARROW_KEY) {\n//                balldx = -2;\n//            } else if (event.getKeyCode() == GEvent::RIGHT_ARROW_KEY) {\n//                balldx = 2;\n//            } else if (event.getKeyCode() == GEvent::UP_ARROW_KEY) {\n//                balldy = -2;\n//            } else if (event.getKeyCode() == GEvent::DOWN_ARROW_KEY) {\n//                balldy = 2;\n//            } else if (event.getKeyCode() == 'f') {\n//                ball->sendToFront();\n//            }\n//            ball->move(balldx, balldy);\n//        });\n//    }\n\n////    window->setWindowHandler([](GEvent /* event */) {\n////        // cout << \"window! event=\" << event << endl;\n////    });\n\n////    for (int i = 0; i < 1000; i++) {\n////        tickFunc();\n////    }\n\n////    GTimer timer(2);\n////    timer.start();\n////    while (true) {\n////        GEvent event = waitForEvent(MOUSE_EVENT | TIMER_EVENT);\n////        int x = randomInteger(0, 800);\n////        int y = randomInteger(0, 400);\n////        GOval* oval = new GOval(x, y, 10, 20);\n////        window->add(oval);\n////    }\n//}\n"
  },
  {
    "path": "Archived/autograder-empty-project/src/mainfunc-qt-console.cpp",
    "content": "///*\n// * Test file for verifying the Stanford C++ lib functionality.\n// */\n\n//#include <iostream>\n//#include <iomanip>\n//#include \"error.h\"\n//#include \"consoletext.h\"\n//#include \"regexpr.h\"\n//#include \"simpio.h\"\n//#include \"timer.h\"\n//using namespace std;\n\n//void testQtConsole();\n\n//int mainQtConsole() {\n//    testQtConsole();\n//    return 0;\n//}\n\n//void testQtConsole() {\n//    cout << \"Hello, cout 1!\" << endl;\n//    cerr << \"Hello, cerr 1!\" << endl;\n//    cout << \"Hello, cout 2!\" << endl;\n//    cerr << \"Hello, cerr 2!\" << endl;\n//    cout << endl;\n//    cerr << \"This is stderr!\" << endl;\n//    cerr << \"So is this.\" << endl;\n//    cout << \"COUT IN THIS PART \";\n//    // cout.flush();\n//    cerr << \"... BUT IT ALTERNATES TO CERR! \";\n//    // cerr.flush();\n//    cout << endl;\n//    cout << \"COUT \";\n//    cerr << \"CERR \";\n//    cout << \"COUT \";\n//    cerr << \"CERR \";\n//    cout << \"COUT \";\n//    cerr << \"CERR \";\n//    cout << \"COUT \";\n//    cerr << \"CERR \";\n//    cout << \"COUT \";\n//    cerr << \"CERR \";\n//    cout << endl;\n\n//    Timer tim;\n//    tim.start();\n//    for (int i = 0; i < 1001; i++) {\n//        cout << setw(5) << i;\n//        if (i > 0 && i % 10 == 0) {\n//            cout << endl;\n//            // stanfordcpplib::qtgui::getConsoleWindow()->pause(10);\n//        }\n//    }\n//    tim.stop();\n//    cout << \"Took \" << tim.elapsed() << \"ms\" << endl;\n\n//    // user input\n//    std::string line = getLine(\"Type: \");\n//    cout << \"You typed: \\\"\" << line << \"\\\"\" << endl;\n\n//    int num = getInteger(\"Type an integer: \");\n//    cout << \"You typed: \" << num << endl;\n\n//    double realnum = getDouble(\"Type a real number: \");\n//    cout << \"You typed: \" << realnum << endl;\n\n//    cout << \"Partial line; what about me? :-(\";   // no endl\n\n////    cout << \"How about a nasty error?!\" << endl;\n////    error(\"oooooooooops\");\n//}\n"
  },
  {
    "path": "Archived/autograder-empty-project/src/mainfunc-qt-layout.cpp",
    "content": "///*\n// * Test file for verifying the Stanford C++ lib functionality.\n// */\n\n//#include <iostream>\n//#include \"gcolor.h\"\n//#include \"gobjects.h\"\n//#include \"ginteractors.h\"\n//using namespace std;\n\n//void testQlayout();\n\n//int mainQtLayout() {\n//    testQlayout();\n//    return 0;\n//}\n\n//void testQlayout() {\n//    static GWindow* window = new GWindow(700, 500);\n//    window->setTitle(\"QtLayout Window\");\n//    window->setBackground(\"yellow\");\n//    window->setResizable(true);\n//    window->setExitOnClose(true);\n//    window->center();\n\n//    // northern area of overall window tests vertical flow layout\n//    GContainer* north = new GContainer(GContainer::LAYOUT_FLOW_VERTICAL);\n//    north->setBackground(\"red\");\n//    GButton* button1 = new GButton(\"Button 1\");\n//    north->add(button1);\n//    GButton* button2 = new GButton(\"Button Number 2\");\n//    north->add(button2);\n//    GButton* button3 = new GButton(\"B3\");\n//    north->add(button3);\n//    north->setHorizontalAlignment(ALIGN_RIGHT);\n//    north->setVerticalAlignment(ALIGN_TOP);\n//    window->addToRegion(north, \"North\");\n\n//    // central area of overall window tests border layout\n//    GContainer* center = new GContainer(GContainer::LAYOUT_BORDER);\n//    center->setBackground(\"green\");\n//    center->addToRegion(new GButton(\"CN1\"), \"North\");\n//    center->addToRegion(new GButton(\"CN2\"), \"North\");\n//    center->addToRegion(new GButton(\"CN3\"), \"North\");\n//    center->addToRegion(new GButton(\"CW1\"), \"North\");\n//    center->setRegionHorizontalAlignment(\"North\", \"Left\");\n\n//    center->addToRegion(new GButton(\"CWest1\"), \"West\");\n//    center->addToRegion(new GButton(\"CW2\"), \"West\");\n//    center->setRegionAlignment(\"West\", \"Right\", \"Top\");\n\n//    center->addToRegion(new GButton(\"CEast1\"), \"East\");\n//    center->addToRegion(new GButton(\"CE2\"), \"East\");\n//    center->addToRegion(new GButton(\"CEs3\"), \"East\");\n//    center->setRegionAlignment(\"East\", \"Center\", \"Bottom\");\n\n//    center->addToRegion(new GButton(\"CS1\"), \"South\");\n//    center->addToRegion(new GButton(\"CSouth2\"), \"South\");\n//    center->setRegionHorizontalAlignment(\"South\", \"Right\");\n\n//    center->addToRegion(new GButton(\"CCenter\"), \"Center\");\n//    window->addToRegion(center, \"Center\");\n\n//    GContainer* east = new GContainer(GContainer::LAYOUT_FLOW_VERTICAL);\n//    east->setBackground(\"cyan\");\n//    GContainer* east1 = new GContainer(GContainer::LAYOUT_FLOW_HORIZONTAL);\n//    GContainer* east2 = new GContainer(GContainer::LAYOUT_FLOW_HORIZONTAL);\n//    east->add(east1);\n//    east->add(east2);\n//    window->addToRegion(east, \"East\");\n//    east1->add(new GButton(\"E11\"));\n//    east1->add(new GButton(\"East12\"));\n//    east1->add(new GButton(\"E13\"));\n//    east2->add(new GButton(\"East11\"));\n//    east2->add(new GButton(\"E12\"));\n\n//    // southern area of overall window tests grid layout\n//    int rows = 4;\n//    int cols = 3;\n//    GContainer* south = new GContainer(GContainer::LAYOUT_GRID, rows, cols);\n//    south->setBackground(\"blue\");\n//    south->add(new GButton(\"r0 long c0\"));\n//    south->add(new GButton(\"r0c1\"));\n//    south->add(new GButton(\"r0c2\"));\n//    south->add(new GButton(\"r1c0\"));\n//    south->addToGrid(new GButton(\"r1 c1 row/colspan\\ntall BOOYAH\\nYAY!!!!!\"), 1, 1, 2, 2);\n////    south->add(new GButton(\"r1c2\"));\n//    south->addToGrid(new GButton(\"r2c0\"), 2, 0);\n////    south->add(new GButton(\"r2 long c1\"));\n////    south->add(new GButton(\"r2 ok c2\"));\n//    south->addToGrid(new GButton(\"r3 ok c0\\ntall\\ntall!\"), 3, 0);\n//    south->add(new GButton(\"r3 ok c1\"));\n//    south->add(new GButton(\"r3 ok c2\"));\n//    south->setHorizontalAlignment(ALIGN_RIGHT);\n//    south->setVerticalAlignment(ALIGN_TOP);\n//    window->addToRegion(south, \"South\");\n//    window->setRegionHorizontalAlignment(GWindow::REGION_SOUTH, ALIGN_RIGHT);\n\n//    window->show();\n//}\n"
  },
  {
    "path": "Archived/autograder-empty-project/src/mainfunc-qt-table.cpp",
    "content": "///*\n// * Test file for verifying the Stanford C++ lib functionality.\n// */\n\n//#include <iostream>\n//#include \"gcolor.h\"\n//#include \"gobjects.h\"\n//#include \"ginteractors.h\"\n//#include \"timer.h\"\n//using namespace std;\n\n//void testQtable();\n\n//int mainQtTable() {\n//    testQtable();\n//    return 0;\n//}\n\n//void testQtable() {\n//    static GWindow* window = new GWindow(900, 300);\n//    window->setTitle(\"QtGui Window\");\n//    window->setResizable(true);\n//    window->setExitOnClose(true);\n//    window->center();\n\n\n//    GButton* button = new GButton(\"Triforce\");\n//    button->setColor(GColor::RED);\n//    button->setBackground(GColor::YELLOW);\n//    // button->setIcon(\"triangle-icon.png\");\n//    button->setTextPosition(GInteractor::TEXT_BESIDE_ICON);\n//    button->setActionListener([](GEvent event) {\n//        cout << \"button click! event = \" << event << endl;\n//    });\n\n//    button->setDoubleClickListener([](GEvent event) {\n//        cout << \"button double-click! event = \" << event << endl;\n//    });\n\n//    button->setAccelerator(\"Ctrl-T\");\n//    window->addToRegion(button, \"South\");\n//    cout << \"button:    \" << button->toString() << endl;\n//    cout << \"button accelerator: \" << button->getAccelerator() << endl;\n//    cout << \"button font: \" << button->getFont() << endl;\n//    button->setFont(\"Monospaced-Bold-14\");\n\n//    int rows = 7;\n//    int cols = 5;\n//    static GTable* table = new GTable(rows, cols);\n//    table->setColumnHeaderStyle(GTable::COLUMN_HEADER_EXCEL);\n//    for (int r = 0; r < rows; r++) {\n//        for (int c = 0; c < cols; c++) {\n//            table->set(r, c, \"hello\");\n//        }\n//    }\n\n//    // styles\n//    // 1) global\n//    table->setColor(\"magenta\");\n\n//    // 2) row\n//    table->setRowBackground(1, \"green\");\n//    table->setRowFont(1, \"Monospaced-12-Bold\");\n//    table->setRowForeground(3, \"Blue\");\n\n//    // 3) column\n//    table->setColumnAlignment(1, ALIGN_RIGHT);\n//    table->setColumnBackground(1, \"Cyan\");\n//    table->setColumnFont(2, \"*-*-Italic\");\n//    table->setColumnForeground(3, \"Red\");\n\n//    // 4) cell\n//    table->setCellForeground(0, 0, \"Red\");\n//    table->setCellAlignment(1, 1, ALIGN_CENTER);\n//    table->setCellBackground(2, 2, \"Blue\");\n\n//    // 1) global (again) - should override 2)-4)\n//    table->setBackground(\"yellow\");\n\n//    // 2) row (again) - should set cell (1,1) to bold, not italic\n//    // table->setRowFont(1, \"Monospaced-12-Bold\");\n\n//    table->setTableListener([](GEvent event) {\n//        cout << \"table event: \" << event.toString() << endl;\n//    });\n//    window->addToRegion(table, \"Center\");\n//    // window->pack();\n\n//    GButton* button2 = new GButton(\"Resize\");\n//    button2->setActionListener([]() {\n//        table->resize(table->numRows() + 1, table->numCols() + 1);\n//    });\n//    window->addToRegion(button2, \"South\");\n\n//    GButton* button3 = new GButton(\"ClearF\");\n//    button3->setActionListener([]() {\n//        // table->clearCellFormatting(1, 1);\n//        table->clearFormatting();\n//    });\n//    window->addToRegion(button3, \"South\");\n//}\n"
  },
  {
    "path": "Archived/autograder-empty-project/src/mainfunc-qt-widgets.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib functionality.\n */\n\n#include <iostream>\n#include \"gcolor.h\"\n#include \"gdiffimage.h\"\n#include \"gobjects.h\"\n#include \"ginteractors.h\"\n#include \"gtimer.h\"\n#include \"timer.h\"\nusing namespace std;\n\nvoid testDiffImage();\nvoid testQwindow();\n\nint mainQtWidgets() {\n    testQwindow();\n    // testDiffImage();\n    return 0;\n}\n\nvoid c() {\n    Vector<int> v;\n    v[5];   // will crash\n}\n\nvoid b() {\n    c();\n}\n\nvoid a() {\n    b();\n}\n\nvoid testQwindow() {\n    static GWindow* window = new GWindow(900, 300);\n    window->setTitle(\"QtGui Window\");\n    window->setResizable(true);\n    window->setExitOnClose(true);\n    window->center();\n\n//    window->setColor(\"red\");\n//    window->fillRect(0, 0, 900, 300);\n\n    // NORTH AREA\n\n    GLabel* label = new GLabel(\"Type <b>stuff</b> <i>now</i> (North):\");\n    // label->setIcon(\"triangle-icon.png\");\n    label->setColor(GColor::GREEN);\n    // label->setBackground(GColor::YELLOW);\n    label->setActionListener([=]() {\n        std::cout << \"label clicked!\" << std::endl;\n        label->setBackground(label->getBackground() == \"cyan\" ? \"yellow\" : \"cyan\");\n    });\n    label->setDoubleClickListener(GEvent::LOG_EVENT);\n    window->addToRegion(label, GWindow::REGION_NORTH);\n    cout << \"label:     \" << label->toString() << endl;\n\n    //        static GTextField* textField = new GTextField(42.0);\n    static GTextField* textField = new GTextField(\"Marty\");\n    textField->setPlaceholder(\"type your name\");\n    // textField->setEditable(false);\n    textField->setAutocompleteList({\"matt\", \"Marty\", \"Stuart\", \"steve\", \"yana\", \"yes\", \"no\"});\n    textField->setTextChangeListener([]() {\n        cout << \"textfield text changed! text is:\" << endl << textField->getText() << endl;\n    });\n    textField->setActionListener([]() {\n        cout << \"textfield action performed! text is:\" << endl << textField->getText() << endl;\n    });\n    window->addToRegion(textField, GWindow::REGION_NORTH);\n    cout << \"textfield: \" << textField->toString() << endl;\n\n    static GSlider* slider = new GSlider();\n    slider->setMinorTickSpacing(20);\n    slider->setPaintLabels(true);\n    slider->setPaintTicks(true);\n    slider->setActionListener([](GEvent event) {\n        cout << \"sliderChangeHandler: slider was slid!\" << endl;\n        cout << \"value: \" << slider->getValue() << endl;\n        cout << \"event: \" << event << endl;\n        window->removeTimerListener();\n    });\n\n    window->addToRegion(slider, GWindow::REGION_NORTH);\n    cout << \"slider:    \" << slider->toString() << endl;\n\n\n    // WEST AREA\n\n    static GCheckBox* checkBox = new GCheckBox(\"Question?\", true);\n    checkBox->setActionListener([](const GEvent&) {\n        cout << \"checkbox clicked! \" << boolalpha << checkBox->isChecked() << endl;\n    });\n    window->addToRegion(checkBox, GWindow::REGION_WEST);\n    window->addToRegion(new GLabel(\"Hi!\"), GWindow::REGION_WEST);\n    window->addToRegion(new GLabel(\"^_^\"), GWindow::REGION_WEST);\n    // window->setRegionAlignment(GWindow::REGION_WEST, \"Top Right\");\n    cout << \"checkbox:  \" << checkBox->toString() << endl;\n\n\n    // EAST AREA\n\n    static GRadioButton* radio1group1 = new GRadioButton(\"A\", \"group1\");\n    static GRadioButton* radio2group1 = new GRadioButton(\"B\", \"group1\", true);\n    static GRadioButton* radio3group1 = new GRadioButton(\"C\", \"group1\");\n    static GRadioButton* radio1group2 = new GRadioButton(\"XX\", \"group2\", true);\n    static GRadioButton* radio2group2 = new GRadioButton(\"YY\", \"group2\");\n\n    GEventListenerVoid radioChangeHandler = []() {\n        cout << \"checkbox clicked! \" << boolalpha\n             << radio1group1->isChecked() << \" \"\n             << radio2group1->isChecked() << \" \"\n             << radio3group1->isChecked() << \" \"\n             << radio1group2->isChecked() << \" \"\n             << radio2group2->isChecked() << endl;\n    };\n    radio1group1->setActionListener(radioChangeHandler);\n    radio1group1->setDoubleClickListener(GEvent::LOG_EVENT);\n    radio2group1->setActionListener(radioChangeHandler);\n    radio2group1->setDoubleClickListener(GEvent::LOG_EVENT);\n    radio3group1->setActionListener(radioChangeHandler);\n    radio3group1->setDoubleClickListener(GEvent::LOG_EVENT);\n    radio1group2->setActionListener(radioChangeHandler);\n    radio2group2->setActionListener(radioChangeHandler);\n\n//    static QGScrollBar* scrollBar = new QGScrollBar(QGScrollBar::VERTICAL, 0, 10, 0, 500);\n//    scrollBar->setValueChangeHandler([]() {\n//        cout << \"value: \" << scrollBar->getValue() << endl;\n//    });\n//    window->addToRegion(scrollBar, GWindow::REGION_EAST);\n\n    window->addToRegion(radio1group1, GWindow::REGION_EAST);\n    window->addToRegion(radio2group1, GWindow::REGION_EAST);\n    window->addToRegion(radio3group1, GWindow::REGION_EAST);\n    window->addToRegion(radio1group2, GWindow::REGION_EAST);\n    window->addToRegion(radio2group2, GWindow::REGION_EAST);\n    // window->setRegionAlignment(GWindow::REGION_EAST, \"Bottom Left\");\n//    cout << \"radio:     \" << radio1group1->toString() << endl;\n\n\n    // SOUTH AREA\n\n    static GChooser* chooser = new GChooser({\"one\", \"two\", \"three four\"});\n    chooser->setColor(GColor::RED);\n    chooser->setBackground(GColor::CYAN);\n    chooser->setActionListener([]() {\n        cout << \"changeHandler: chooser was clicked!\" << endl;\n        cout << \"selected: \" << chooser->getSelectedIndex() << \" : \"\n             << chooser->getSelectedItem() << endl;\n        cout << \"size: \" << chooser->size() << endl << endl;\n    });\n    window->addToRegion(chooser, GWindow::REGION_SOUTH);\n    cout << \"chooser:   \" << chooser->toString() << endl;\n\n    GButton* button = new GButton(\"Triforce\");\n    button->setColor(GColor::RED);\n    button->setBackground(GColor::YELLOW);\n    button->setIcon(\"triangle-icon.png\");\n    button->setTextPosition(GInteractor::TEXT_BESIDE_ICON);\n    button->setActionListener([](GEvent event) {\n        cout << \"button click! event = \" << event << endl;\n        cout.flush();\n        window->restore();\n\n        a();\n\n//        window->setResizable(!window->isResizable());\n//        cout << \"clickHandler: button was clicked!\" << endl;\n//        cout << \"location:  \" << window->getLocation() << endl;\n//        cout << \"size:      \" << window->getSize() << endl;\n//        cout << \"visible:   \" << boolalpha << window->isVisible() << endl;\n//        cout << \"resizable: \" << boolalpha << window->isResizable() << endl << endl;\n\n//        // test GOptionPane\n//        GOptionPane::showMessageDialog(\"I love Yana! <3\");\n\n//        Vector<string> choices = {\"One\", \"Two\", \"Three\"};\n//        string result = GOptionPane::showOptionDialog(\"Pick a thing\", choices);\n//        cout << \"You chose: \" << result << endl;\n\n        //    int result = GOptionPane::showConfirmDialog(\"Is Yana the most beautiful?\", \"Important Question\", GOptionPane::YES_NO_CANCEL);\n        //    cout << \"You chose: \" << result << endl;\n        //    std::string answer = GOptionPane::showInputDialog(\"Who is my baby?\", \"Baby's name?\", \"bozo\");\n        //    cout << \"You typed: \" << answer << endl;\n\n        //    string filename = QGFileChooser::showOpenDialog(\"\", \"*.txt, *.cpp, *.h\");\n        //    cout << \"You chose: \" << filename << endl;\n        // window->clear();\n    });\n\n    //        button->setClickHandler([]() {\n    //            // grayscale(image);\n    //        });\n    button->setDoubleClickListener([](GEvent event) {\n        cout << \"button double-click! event = \" << event << endl;\n    });\n    button->setAccelerator(\"Ctrl-T\");\n    window->addToRegion(button, GWindow::REGION_SOUTH);\n    cout << \"button:    \" << button->toString() << endl;\n    cout << \"button accelerator: \" << button->getAccelerator() << endl;\n    cout << \"button font: \" << button->getFont() << endl;\n    button->setFont(\"Monospaced-Bold-14\");\n\n    static GButton* button4 = new GButton(\"HI!\");\n    window->addToRegion(button4, GWindow::REGION_SOUTH);\n\n    static GCheckBox* checkboxs = new GCheckBox(\"&Visible?\", /* checked */ true);\n    checkboxs->setActionListener([]() {\n        std::cout << \"checkbox clicked!\" << std::endl;\n        // button4->setVisible(checkboxs->isChecked());\n        if (checkboxs->isChecked()) {\n            window->addToRegion(button4, GWindow::REGION_SOUTH);\n        } else {\n            window->removeFromRegion(button4, GWindow::REGION_SOUTH);\n        }\n    });\n    checkboxs->setDoubleClickListener([]() {\n        std::cout << \"checkbox double-clicked!\" << std::endl;\n    });\n    window->addToRegion(checkboxs, GWindow::REGION_SOUTH);\n\n    GButton* timerButton = new GButton(\"Timer\");\n    GTimer* timer = nullptr;\n    timerButton->setActionListener([&timer]() {\n        if (timer) {\n            timer->stop();\n            delete timer;\n            timer = nullptr;\n        } else {\n            timer = new GTimer(1000);\n            timer->start();\n        }\n    });\n    window->addToRegion(timerButton, GWindow::REGION_SOUTH);\n\n//    window->setRegionAlignment(GWindow::REGION_SOUTH, \"Center\");\n\n    // GLabel* oopsButton = new GLabel(\"I should not show up!!!!!\");\n    // oopsButton->setVisible(true);\n\n\n    // CENTER AREA\n\n//    static GTextArea* textArea = new GTextArea(\"This is \\na multi-line\\n\\ntext area\");\n//    textArea->setPlaceholder(\"type some text\");\n//    textArea->setTextChangeListener([](GEvent) {\n//        cout << \"textarea text changed! text is:\" << endl << textArea->getText() << endl;\n//    });\n//    window->addToRegion(textArea, \"Center\");\n\n    GBrowserPane* pane = new GBrowserPane();\n    pane->readTextFromFile(\"resfile3.html\");\n    pane->setLinkListener([](GEvent event) {\n        cout << \"event: \" << event << \", url: \" << event.getRequestURL() << endl;\n    });\n    window->addToRegion(pane, GWindow::REGION_CENTER);\n    cout << \"browser:  \" << pane->toString() << endl;\n\n    // window->pack();\n\n//    while (true) {\n//        GEvent event = waitForEvent(TIMER_EVENT);\n//        cout << \"event: \" << event << endl;\n//    }\n\n    // will crash\n    // a();\n\n//    int* x = nullptr;\n//    (*x)++;   // boom\n}\n\nvoid testDiffImage() {\n    GDiffImage::showDialog(\"ponies1\", \"my-little-pony-small.png\", \"legos2\", \"lego.png\");\n}\n"
  },
  {
    "path": "Archived/autograder-empty-project/src/mainfunc.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib functionality.\n */\n\n//#include \"gobjects.h\"\n#include <iostream>\n//#include \"console.h\"\n\nint main() {\n//    extern int mainQt2dGraphics();\n//    return mainQt2dGraphics();\n//    extern int mainQtLayout();\n//    return mainQtLayout();\n    extern int mainQtWidgets();\n    return mainQtWidgets();\n\n//    extern int mainQtConsole();\n//    return mainQtConsole();\n//    return 0;\n}\n"
  },
  {
    "path": "Archived/autograder-empty-project/src/readme.txt",
    "content": "This directory contains the source code files (*.cpp, *.h)\r\nthat you will write as you complete the assignment.\r\nWe will also put any instructor-provided code here.\r\n"
  },
  {
    "path": "Archived/autograder-empty-project/src/searching.cpp",
    "content": "/*\n * CS 106B, Marty Stepp\n * This program contains code for the recursive binary search algorithm.\n * Included in comments below are some runtime measurements for a standard\n * sequential search (O(N)) and the recursive binary search (O(log N)).\n * Notice how the binary search can perform many more searches over a larger\n * data set in much less time than a sequential search.\n *\n * This program uses a small instructor-provided helper class called Timer\n * to make it easier to measure the runtime of each algorithm.\n *\n * @version 2015/07/21\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"searchingsorting.h\"\n#include <fstream>\n#include <iomanip>\n#include <iostream>\n#include \"filelib.h\"\n#include \"random.h\"\n#include \"vector.h\"\n#include \"timer.h\"\n#undef INTERNAL_INCLUDE\n\n/*\n * This recursive helper function implements the bulk of the\n * binary search behavior.\n */\nint binarySearchHelper(const Vector<int>& v, int target,\n                       int min, int max) {\n    int mid = (max + min) / 2;\n    if (min > max) {\n        // base case 1: exhausted all data without finding the target value\n        return -1;\n    }\n    \n    cout << \"  examine index \" << mid << endl;\n    if (target == v[mid]) {\n        // base case 2: found the target value in the middle of our current range\n        return mid;\n    } else if (target > v[mid]) {\n        // recursive case 1: target value is larger, so go right\n        return binarySearchHelper(v, target, mid + 1, max);\n    } else {\n        // recursive case 2: target value is smaller, so go left\n        return binarySearchHelper(v, target, min, mid - 1);\n    }\n}\n\n/*\n * Performs a binary search for the given target value in the given vector.\n * Precondition: The vector's elements are assumed to be in sorted order.\n * If they are not sorted, the behavior is undefined and likely incorrect.\n */\nint binarySearch(const Vector<int>& v, int target) {\n    int result = binarySearchHelper(v, target, 0, v.size() - 1);\n    cout << \"  return \" << result << endl;\n    return result;\n}\n\n// Returns the index of the given value in the given vector of integers,\n// or -1 if the value is not found in the vector.\nint sequentialSearch(const Vector<int>& v, int value) {\n    for (int i = 0; i < v.size(); i++) {\n        if (v[i] == value) {\n            return i;\n        }\n    }\n    return -1;\n}\n"
  },
  {
    "path": "Archived/autograder-empty-project/src/searchingsorting.h",
    "content": "/*\n * Functions used for searching and sorting.\n *\n * @version 2015/07/21\n */\n\n#ifndef _searchingsorting_h\n#define _searchingsorting_h\n\n#include <iostream>\n#include <string>\n#include \"vector.h\"\n\nusing namespace std;\n\nvoid fillRandomIntVector(Vector<int>& v, int length);\nvoid fillSortedIntVector(Vector<int>& v, int length);\n\nbool isSorted(const Vector<int>& v);\nvoid selectionSort(Vector<int>& v, int passes = -1);\nvoid mergeSort(Vector<int>& v, string indent = \"\");\n\nint binarySearch(const Vector<int>& v, int target);\nint sequentialSearch(const Vector<int>& v, int value);\n\n#endif\n"
  },
  {
    "path": "Archived/autograder-empty-project/src/sorting.cpp",
    "content": "/*\n * CS 106B, Marty Stepp\n * This program contains code for recursive merge sort.\n *\n * @version 2015/07/21\n */\n\n#define INTERNAL_INCLUDE 1\n#include <fstream>\n#include <iomanip>\n#include <iostream>\n#include \"filelib.h\"\n#include \"random.h\"\n#include \"searchingsorting.h\"\n#include \"vector.h\"\n#include \"timer.h\"\n#undef INTERNAL_INCLUDE\n\nvoid mergeSort(Vector<int>& v, string indent) {\n    cout << indent << v << endl;\n    if (v.size() < 2) {\n        return;   // base case; do nothing\n    }\n    \n    // else, recursive case:\n    // divide v in halves\n    Vector<int> left;\n    for (int i = 0; i < v.size() / 2; i++) {\n        left.add(v[i]);\n    }\n    Vector<int> right;\n    for (int i = v.size() / 2; i < v.size(); i++) {\n        right.add(v[i]);\n    }\n    \n    // sort the halves\n    mergeSort(left, indent + \"    \");\n    mergeSort(right, indent + \"    \");\n    \n    // merge the sorted halves together\n    v.clear();\n    int i1 = 0;\n    int i2 = 0;\n    for (int i = 0; i < left.size() + right.size(); i++) {\n        // pick smaller one, move into result\n        if (i2 >= right.size() || \n                (i1 < left.size() && left[i1] < right[i2])) {\n            v.add(left[i1]);\n            i1++;\n        } else {\n            v.add(right[i2]);\n            i2++;\n        }\n    }\n}\n\n\n// Rearranges the elements of v into sorted order using\n// the selection sort algorithm.\nvoid selectionSort(Vector<int>& v, int passes) {\n    for (int i = 0; i < v.size() - 1; i++) {\n        // find index of smallest remaining value\n        int min = i;\n        for (int j = i + 1; j < v.size(); j++) {\n            if (v[j] < v[min]) {\n                min = j;\n            }\n        }\n        // swap smallest value to its proper place, a[i]\n        int temp = v[i];\n        v[i] = v[min];\n        v[min] = temp;\n        \n        cout << \"after pass \" << (i+1) << \": \" << v << endl;\n        if (passes > 0 && (i+1) >= passes) {\n            break;\n        }\n    }\n}\n\nbool isSorted(const Vector<int>& v) {\n    for (int i = 1; i < v.size(); i++) {\n        if (v[i] < v[i - 1]) {\n            return false;\n        }\n    }\n    return true;\n}\n\n// Fills the given vector with the given number of random integers.\nvoid fillRandomIntVector(Vector<int>& v, int length) {\n    for (int i = 0; i < length; i++) {\n        v += randomInteger(0, 1000000000);\n    }\n}\n\n// Fills the given vector with the given number of sorted integers.\nvoid fillSortedIntVector(Vector<int>& v, int length) {\n    v.add(randomInteger(0, 10));\n    for (int i = 1; i < length; i++) {\n        // add another value slightly larger than the last\n        v += v[i-1] + randomInteger(0, 10);\n    }\n}\n"
  },
  {
    "path": "Archived/autograder-empty-project/src/types.cpp",
    "content": "/*\n * Various support classes and types used in practice problems.\n *\n * @version 2015/08/10\n */\n\n#define INTERNAL_INCLUDE 1\n#include \"types.h\"\n#undef INTERNAL_INCLUDE\n\nDomino::Domino(int f, int s) {\n    first = f;\n    second = s;\n}\n\nostream& operator <<(ostream& out, const Domino& d) {\n    return out << \"(\" << d.first << \":\" << d.second << \")\";\n}\n\nistream& operator >>(istream& input, Domino& d) {\n    char ch = '\\0';\n    input >> ch;   // (\n    input >> ch;   // first\n    d.first = ch - '0';\n    input >> ch;   // :\n    input >> ch;   // second\n    d.second = ch - '0';\n    input >> ch;   // )\n    return input;\n}\n"
  },
  {
    "path": "Archived/autograder-empty-project/src/types.h",
    "content": "/*\n * Various support classes and types used in practice problems.\n *\n * @version 2015/08/10\n */\n\n#ifndef _types_h\n#define _types_h\n\n#include <iostream>\nusing namespace std;\n\nstruct Domino {\n    int first;\n    int second;\n    \n    Domino(int f = 0, int s = 0);\n};\n\nostream& operator <<(ostream& out, const Domino& d);\nistream& operator >>(istream& input, Domino& d);\n\n#endif // _types_h\n"
  },
  {
    "path": "Archived/bugs/vector_race_condition_ali.txt",
    "content": "Thanks for sharing; that really is an interesting bug. I've played with it a bit and I think I know why this isn't working.\n\nI believe the bug has to do with expanding the underlying array when the vector is full, and thus invalidating any previous references to element in the old memory. \n\nWe can break down the following line: v.insert(i+1, v[i]); Here is a rough pseudocode of the insert method, with comments indicating the issue (better viewed on a laptop):\n\n\ttemplate <typename T>\n\tvoid Vector<T>::insert(size_t pos, const T& toIns) {\n\t\t\n\t    if capacity full:\n\t        reallocate array and copy over elements\n\t       /* if toIns was a reference to an element in this vector, \n\t         * that reference is now invalidated due to reallocation,  \n\t         * as per the standard:\n\t         *\n\t         * Source: \n\t         * http://en.cppreference.com/w/cpp/container/vector/insert\n\t         *\n\t         * \t\t\"Insert causes reallocation if the new size() is \n\t         * \t\tgreater than the old capacity(). If the new size()\n\t         *\t\tis greater than capacity(), all iterators and \n\t         *\t\treferences are invalidated.\" \n         \t */\n\t    insert element\n\t    ++size\n\t}\n\n\nSo really, what the student is doing could be considered buggy in some sense. Their other version, which copies the value over into a variable first, isn't relying on the invalidated reference and so the issue goes away.\n\nAfter doing some digging, it turns out this is a subtle, but known issue. From what I gather, the standard library implementers had to jump through hoops to deal with this case. The idea is to allocate new memory, put the new element in it's final place in the new memory, then move the old elements, then destroy the old memory as opposed to the obvious (and Stanford library) way of: allocate new memory, move over old elements, destroy old memory, then insert new element. Some links that talk about this:\n\nhttp://www.drdobbs.com/cpp/copying-container-elements-from-the-c-li/240155771\nhttps://www.reddit.com/r/cpp/comments/vog1p/a_commonly_unknown_stdvector_pitfall/\nhttp://www.open-std.org/jtc1/sc22/wg21/docs/lwg-closed.html#526\nhttp://stackoverflow.com/questions/18788780/is-it-safe-to-push-back-an-element-from-the-same-vector?noredirect=1&lq=1\n\nSo the standard library deals with this issue but the Stanford library doesn't. \n\n@Chris, I think the fact that it worked on our computers is just good fortune. The concurrency on codestepbystep might have contributed to the fact that the invalidated memory was more likely to have changed than on a non-concurrent system such as our computers. You can bring the issue to light on your computer too by having a Vector of a user defined class as opposed to a builtin type like int which  has no destructor. This is because the reallocation leaves the old ints untouched and thus, using a dangling reference to that old memory still might work. If you use a user defined class with a destructor, you will see that the issue is very much there. I wrote a quick Java-esque wrapper Integer class that works exactly like an int except it has a destructor that sets it's internal int value to -5 (I thought -5 would be clearer to see than 0). It outputs the following (note the -5 where the reference got destructed upon reallocation):\n\nBefore: {18, 7, 4, 24, 11}\nAfter: {9, -5, 4, 3, 2, 2, 12, 12, 6, 5}\n\nHere is the code if you want to play with it: https://ideone.com/8q2YEp\n\n\nFurther evidence: in the case of the student, the following code works just fine:\n\nvoid stretch(Vector<int>& v){\n   int n=v.size();\n   /*\n    * Initally, v's capacity is probably full since it was\n    * most likely intialized using an initializer list:\n    *   \n    *       template <typename ValueType>\n    *       Vector<ValueType>::Vector(std::initializer_list<ValueType> list) {\n    *           capacity = list.size();\n    *           count = 0;\n    *           elements = new ValueType[capacity];   \n    *           addAll(list);     // count == capacity\n    *      } \n    */\n    \n    /*\n     * Adding and removing dummy element should force array size to double\n     * so that it doesn't have to during the actual for loop in the program.\n     */\n    v.add(13);    \n    v.remove(n);\n    \n    for(int i = 0;i < 2*n; i = i+2){\n        if(v[i] % 2 == 0){\n            v[i] = v[i]/2;\n            v.insert(i+1, v[i]);  // Code will work if change this line into\n            //    int n=v[i];v.insert(i+1,n);   \n            //   SIDE NOTE: Student should avoid shadowing outside variable n \n            //            with internal n, even if it works\n        }\n        else{\n            v[i]=v[i]/2 + 1;\n            v.insert(i+1,v[i]-1);\n        } \n    }\n}\n\n\n\nHope that helps! \n\nSincerely,\n--\nAli Malik\n"
  },
  {
    "path": "Archived/cppdoc/BasicGraph-class.html",
    "content": "<html>\n\t<head>\n\t\t<title>BasicGraph</title>\n\t\t<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n\t</head>\n\n\t<body>\n\t\t<table class=banner>\n\t\t\t<tr>\n\t\t\t\t<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n\t\t\t\t<td valign=middle><div class=bannerText>\n\t\t\t\tThe Stanford <code>cslib</code> package\n\t\t\t\t</div></td>\n\t\t\t</tr>\n\t\t</table>\n\n\t\t<hr>\n\n\t\t<div class=include><a href=\"graph.html\">#include \"basicgraph.h\"</a></div>\n\t\t<h1 class=header><code>class BasicGraph : <a href=\"Graph-class.html\">Graph</a>&lt;<a href=\"Vertex-class.html\">Vertex</a>, <a href=\"Edge-class.html\">Edge</a>&gt;</code></h1>\n\n\t\t<p>\n\t\t\tThis class represents a simplified and expanded implementation of a directed, weighted graph.\n\t\t\tUnlike with the <code>Graph</code> class, you do not need to supply the vertex and edge types via templates in <code>&lt; &gt;</code>.\n\t\t\tThe vertex / node type has been set to <code>Vertex</code> and the edge / arc type has been set to <code>Edge</code>.\n\t\t</p>\n\n\t\t<p>\n\t\t\tThe <code>BasicGraph</code> also chooses to use the terminology of 'vertex' and 'edge' rather than 'node' and 'arc' in member names, though the other terminology is still supported for backward compatibility.\n\t\t\tSince <code>BasicGraph</code> is a subclass of <code>Graph</code>, it also contains all of the members of the <code>Graph</code> class, which clients can call in their code.\n\t\t\tSee the <a href=\"Graph-class.html\">Graph class documentation</a> for more details.\n\t\t</p>\n\n\t\t<p>\n\t\t\tSee also:\n\t\t\t<a href=\"Vertex-class.html\"><code>Vertex</code></a>,\n\t\t\t<a href=\"Edge-class.html\"><code>Edge</code></a>\n\t\t</p>\n\n\t\t<p>\n\t\t\tIf you want to use this class to represent an undirected graph, doubly add each edge.\n\t\t\tFor example, every time you call <code>addEdge(a, b);</code>, also call <code>addEdge(b, a);</code>.\n\t\t\tIf you want to use this class to represent a weighted graph, set each edge's <code>cost</code> field and use it in your own graph algorithms.\n\t\t</p>\n\n\t\t<p>\n\t\t\tThe internal representation of this graph is an <em>adjacency list</em>, which is very efficient for iterating over neighbors of a given vertex, but less efficient for asking whether two given vertexes are neighbors.\n\t\t</p>\n\n\t\t<p>Until the 2014/10/20 version of the library, unlike with several of the other collections, you could not directly perform a for-each loop over a <code>BasicGraph</code>.\n\t\tYou can, however, for-each over the vertexes by calling <code>getVertexSet</code> on the <code>BasicGraph</code>, or over the edges by calling <code>getEdgeSet</code> on the <code>BasicGraph</code>.\n\t\tSince 2014/10/20 version of the library, performing a for-each loop over a <code>BasicGraph</code> is supported and is equivalent to looping over the vertex set.\n\t\t</p>\n\n\t\t<p>\n\t\t\t<em>Note about pointers:</em>\n\t\t\tSeveral <code>BasicGraph</code> members return various pointers to vertexes and edges.\n\t\t\tAny such pointers returned are direct pointers to the internal structures inside of this graph.\n\t\t\tIf the graph itself falls out of scope, is cleared, etc., or if the given vertex/edge is removed from the graph, this pointer will become invalid.\n\t\t\tUndefined behavior and crashes will result if you retain pointers to vertexes/edges that live on beyond the life span of the graph.\n\t\t\tClients also should not free or <code>delete</code> any pointers to vertex or edge structures that were obtained by calling methods on a basic graph.\n\t\t</p>\n\n\t\t<p>\n\t\t\tFor the purposes of Big-Oh listing, some members are proportional to the number of vertexes V, and some are proportional to the number of edges E.\n\t\t</p>\n\n\t\t<table class=index width=100%>\n\t\t\t<tr>\n\t\t\t\t<td class=indexHead colspan=3>Constructor</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Constructor:BasicGraph\">BasicGraph()</a>&nbsp;</nobr></td>\n\t\t\t\t<td class=\"bigoh\">O(1)</td>\n\t\t\t\t<td class=indexSynopsis width=100%>Creates an empty <code>BasicGraph</code> object.</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexHead colspan=3>Methods</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Method:addEdge\">addEdge(<var>v1</var>,&nbsp;<var>v2</var>)</a><br>\n\t\t\t\t\t<a href=\"#Method:addEdge\">addEdge(<var>edge</var>)</a>&nbsp;</nobr></td>\n\t\t\t\t<td class=\"bigoh\">O(log V + log E)</td>\n\t\t\t\t<td class=indexSynopsis width=100%>Adds a directed edge to the graph from <var>v1</var> to <var>v2</var>.</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Method:addVertex\">addVertex(<var>v</var>)</a></td>\n\t\t\t\t<td class=\"bigoh\">O(log V)</td>\n\t\t\t\t<td class=indexSynopsis width=100%>Adds a vertex to the graph.</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Method:clear\">clear()</a>&nbsp;</nobr></td>\n\t\t\t\t<td class=\"bigoh\">O(V + E)</td>\n\t\t\t\t<td class=indexSynopsis width=100%>Removes all vertexes and edges from the graph.</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Method:clearEdges\">clearEdges()</a><br>\n\t\t\t\t\t<a href=\"#Method:clearEdges\">clearEdges(<var>v</var>)</a><br>\n\t\t\t\t\t</nobr></td>\n\t\t\t\t<td class=\"bigoh\">O(E)</td>\n\t\t\t\t<td class=indexSynopsis width=100%>Removes all edges from the graph, or all edges outbound from a given vertex.</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Method:containsEdge\">containsEdge(<var>v1</var>,&nbsp;<var>v2</var>)</a></td>\n\t\t\t\t<td class=\"bigoh\">O(log E)</td>\n\t\t\t\t<td class=indexSynopsis width=100%>Returns whether the graph has an edge from <var>v1</var> to <var>v2</var>.</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Method:containsVertex\">containsVertex(<var>v</var>)</a></td>\n\t\t\t\t<td class=\"bigoh\">O(log V)</td>\n\t\t\t\t<td class=indexSynopsis width=100%>Returns whether the graph contains the given vertex, and/or contains a vertex with the given name.</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Method:edgeCount\">edgeCount()</a></td>\n\t\t\t\t<td class=\"bigoh\">O(1)</td>\n\t\t\t\t<td class=indexSynopsis width=100%>Returns the number of edges in the graph.</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Method:getEdge\">getEdge(<var>v1</var>,&nbsp;<var>v2</var>)</a></td>\n\t\t\t\t<td class=\"bigoh\">O(log V + log E)</td>\n\t\t\t\t<td class=indexSynopsis width=100%>Returns the edge from <var>v1</var> to <var>v2</var>, if present.</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Method:getEdgeSet\">getEdgeSet()</a></nobr></td>\n\t\t\t\t<td class=\"bigoh\">O(1)</td>\n\t\t\t\t<td class=indexSynopsis width=100%>Returns the set of all edges in the graph.</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Method:getEdgeSet\">getEdgeSet(<var>v</var>)</a></td>\n\t\t\t\t<td class=\"bigoh\">O(log V)</td>\n\t\t\t\t<td class=indexSynopsis width=100%>Returns the set of all edges that start at the specified vertex.</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Method:getInverseEdge\">getInverseEdge(<var>e</var>)</a></td>\n\t\t\t\t<td class=\"bigoh\">O(E)</td>\n\t\t\t\t<td class=indexSynopsis width=100%>Returns the edge that is the opposite of the given edge; that is, if the specified edge <var>e</var> starts at <var>v1</var> and ends at <var>v2</var>, will return the edge that starts at <var>v2</var> and ends at <var>v1</var>, if such an edge exists in the graph.</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Method:getInverseEdgeSet\">getInverseEdgeSet(<var>v</var>)</a></td>\n\t\t\t\t<td class=\"bigoh\">O(log V)</td>\n\t\t\t\t<td class=indexSynopsis width=100%>Returns the set of all edges that end at the specified vertex.</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Method:getInverseNeighborNames\">getInverseNeighborNames(<var>v</var>)</a></td>\n\t\t\t\t<td class=\"bigoh\">O(E)</td>\n\t\t\t\t<td class=indexSynopsis width=100%>Returns a set of the names of vertexes for which <var>v</var> is a neighbor; that is, the ones for which there is an edge from that vertex to <var>v</var>.</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Method:getInverseNeighbors\">getInverseNeighbors(<var>v</var>)</a></td>\n\t\t\t\t<td class=\"bigoh\">O(E)</td>\n\t\t\t\t<td class=indexSynopsis width=100%>Returns the set of vertexes for which <var>v</var> is a neighbor; that is, the ones for which there is an edge from that vertex to <var>v</var>.</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Method:getNeighborNames\">getNeighborNames(<var>v</var>)</a></td>\n\t\t\t\t<td class=\"bigoh\">O(log V)</td>\n\t\t\t\t<td class=indexSynopsis width=100%>Returns a set of the names of all vertexes that are neighbors of the specified vertex.</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Method:getNeighbors\">getNeighbors(<var>v</var>)</a></td>\n\t\t\t\t<td class=\"bigoh\">O(log V)</td>\n\t\t\t\t<td class=indexSynopsis width=100%>Returns the set of vertexes <var>N</var> for which there is an edge from <var>v</var> to <var>N</var>.</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Method:getVertex\">getVertex(<var>name</var>)</a>&nbsp;</nobr></td>\n\t\t\t\t<td class=\"bigoh\">O(log V)</td>\n\t\t\t\t<td class=indexSynopsis width=100%>Returns a pointer to the graph's internal <code>Vertex</code> structure with information about a given vertex.</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Method:getVertexNames\">getVertexNames()</a>&nbsp;</nobr></td>\n\t\t\t\t<td class=\"bigoh\">O(V)</td>\n\t\t\t\t<td class=indexSynopsis width=100%>Returns a set of the names of all vertexes in the graph.</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Method:getVertexSet\">getVertexSet()</a>&nbsp;</nobr></td>\n\t\t\t\t<td class=\"bigoh\">O(1)</td>\n\t\t\t\t<td class=indexSynopsis width=100%>Returns the set of the graph's internal <code>Vertex</code> structures for all vertexes in the graph.</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Method:isEmpty\">isEmpty()</a>&nbsp;</nobr></td>\n\t\t\t\t<td class=\"bigoh\">O(1)</td>\n\t\t\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the graph contains no vertexes or edges.</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Method:isNeighbor\">isNeighbor(<var>v1</var>,&nbsp;<var>v2</var>)</a></td>\n\t\t\t\t<td class=\"bigoh\">O(log V)</td>\n\t\t\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the graph contains an edge from <var>v1</var> to <var>v2</var>.</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Method:removeEdge\">removeEdge(<var>v1</var>,&nbsp;<var>v2</var>)</a><br>\n\t\t\t\t\t<a href=\"#Method:removeEdge\">removeEdge(<var>edge</var>)</a>&nbsp;</nobr></td>\n\t\t\t\t<td class=\"bigoh\">O(E + log V)</td>\n\t\t\t\t<td class=indexSynopsis width=100%>Removes an edge from <var>v1</var> to <var>v2</var> from the graph.</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Method:removeVertex\">removeVertex(<var>v</var>)</a></td>\n\t\t\t\t<td class=\"bigoh\">O(E + log V)</td>\n\t\t\t\t<td class=indexSynopsis width=100%>Removes a vertex from the graph.</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Method:resetData\">resetData()</a>&nbsp;</nobr></td>\n\t\t\t\t<td class=\"bigoh\">O(V + E)</td>\n\t\t\t\t<td class=indexSynopsis width=100%>Clears any temporary internal data stored at each vertex and edge.</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Method:size\">size()</a>&nbsp;</nobr></td>\n\t\t\t\t<td class=\"bigoh\">O(1)</td>\n\t\t\t\t<td class=indexSynopsis width=100%>Returns the number of vertexes in the graph.</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td>\n\t\t\t\t<td class=\"bigoh\">O(V + E)</td>\n\t\t\t\t<td class=indexSynopsis width=100%>Converts the graph to a printable string representation.</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Method:vertexCount\">vertexCount()</a></td>\n\t\t\t\t<td class=\"bigoh\">O(1)</td>\n\t\t\t\t<td class=indexSynopsis width=100%>Returns the number of vertexes in the graph.</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexHead colspan=3>Operators</td>\n\t\t\t</tr>\n\t\t\t<!--\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Operator:==\"><var>pq1</var> == <var>pq1</var></a>&nbsp;</nobr></td>\n\t\t\t\t<td class=\"bigoh\">O(N)</td>\n\t\t\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>pq1</code> and <code>pq2</code> contain the same elements.</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Operator:!=\"><var>pq1</var> != <var>pq2</var></a>&nbsp;</nobr></td>\n\t\t\t\t<td class=\"bigoh\">O(N)</td>\n\t\t\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>pq1</code> and <code>pq2</code> are different.</td>\n\t\t\t</tr>\n\t\t\t-->\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><var>ostream</var>&nbsp;&lt;&lt;&nbsp;<var>graph</var></nobr></td>\n\t\t\t\t<td class=\"bigoh\">O(V + E)</td>\n\t\t\t\t<td class=indexSynopsis width=100%>Outputs the contents of the graph to the given output stream.</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><var>istream</var>&nbsp;&gt;&gt;&nbsp;<var>graph</var></nobr></td>\n\t\t\t\t<td class=\"bigoh\">O(V log V + E log E)</td>\n\t\t\t\t<td class=indexSynopsis width=100%>Reads the contents of the given input stream into the graph.</td>\n\t\t\t</tr>\n\t\t</table>\n\n<h2>Constructor detail</h2>\n<hr>\n\n<a name=\"Constructor:BasicGraph\"></a>\n<pre class=detailCode>\nBasicGraph();\n</pre>\n<div class=detailHTML>\nCreates an empty <code>BasicGraph</code> object.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nBasicGraph g;\n</pre>\n<hr>\n\n<h2>Method detail</h2>\n<hr>\n\n<a name=\"Method:addEdge\"></a>\n<pre class=detailCode>\nEdge* addEdge(string name1, string name2);\nEdge* addEdge(Vertex* v1, Vertex* v2);\nEdge* addEdge(Edge* edge);\n</pre>\n<div class=detailHTML>\nAdds a directed edge to the graph from vertex 1 to vertex 2.\nThe endpoints of the edge can be specified either as strings indicating the names of the vertexes, or as pointers to the vertex structures.\nAlternatively, the client can create the edge structure explicitly and pass that pointer to the <code>addEdge</code> method.\nAll three of these versions return a pointer to the edge in case the client needs to capture this value.\nNote that it is allowed to have multiple edges between the same pair of vertexes.\n<p>If either of the vertexes supplied is <code>nullptr</code>, the function will throw an error.\n<p>Otherwise, if either vertex is not found in the graph, said vertex will be added to the graph.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ng.addEdge(v1, v2);\ng.addEdge(edge);\n</pre>\n<hr>\n\n<a name=\"Method:addVertex\"></a>\n<pre class=detailCode>\nVertex* addVertex(string name);\nVertex* addVertex(Vertex* vertex);\n</pre>\n<div class=detailHTML>\nAdds a vertex to the graph, if no vertex with that name already exists in the graph.\n<p>\nOne version of this method accepts a string for the vertex's name, creates a new vertex of the appropriate type and initializes its fields.\nThe other accepts a structure representing the vertex and its data.\nBoth versions of this method return a pointer to the vertex, though clients need not store that pointer; you can get the pointer again later by calling <code>getVertex</code> and passing the same name.\n<p>The vertexes in a graph must have unique names.\nIf this graph already contains a vertex with the given name, the vertex will not be added and the graph's state will not change.\n<p>If <code>nullptr</code> is passed to the pointer version of this function, an error will be thrown.\n<p>If you use the <code>Vertex*</code> version of this function, you are relinquishing ownership of the <code>Vertex</code> structure's lifecycle to the graph; our graph will free it when done with it.\n</p>\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ng.addVertex(vertex);\n</pre>\n<hr>\n\n<a name=\"Method:clear\"></a>\n<pre class=detailCode>\nvoid clear();\n</pre>\n<div class=detailHTML>\nReinitializes the graph to be empty of all vertexes and edges, freeing any <code>Vertex</code> and <code>Edge</code> objects that were internally allocated as heap storage.\n(The heap memory associated with all vertexes and edges that have been previously added to the graph will be freed.)\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ng.clear();\n</pre>\n<hr>\n\n<a name=\"Method:clearEdges\"></a>\n<pre class=detailCode>\nvoid clearEdges();\nvoid clearEdges(string vertexName);\nvoid clearEdges(Vertex* v);\n</pre>\n<div class=detailHTML>\nThe first version removes all edges from the graph, freeing any <code>Edge</code> objects that were internally allocated as heap storage.\nThe second and third versions remove all edges that start from the given vertex.\n(The vertexes in the graph will remain.  If you want to clear the vertexes as well, use the <code>clear</code> method.)\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ng.clearEdges();\ng.clearEdges(v);\n</pre>\n<hr>\n\n<a name=\"Method:containsEdge\"></a>\n<pre class=detailCode>\nbool containsEdge(string name1, string name2) const;\nbool containsEdge(Vertex* v1, Vertex* v2) const;\n</pre>\n<div class=detailHTML>\nReturns whether the graph contains an edge from v1 to v2.\n<p>If either of the vertexes supplied is <code>nullptr</code> or is not found in the graph, this function returns <code>false</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (g.containsEdge(v1, v2)) ...\nif (g.containsEdge(edge)) ...\n</pre>\n<hr>\n\n<a name=\"Method:containsVertex\"></a>\n<pre class=detailCode>\nbool containsVertex(string name) const;\nbool containsVertex(Vertex* vertex) const;\n</pre>\n<div class=detailHTML>\nReturns whether the graph contains the given vertex.\nOne version of this method looks up the vertex by name, and the other uses the information supplied in the provided pointer.\n<p>If <code>nullptr</code> is passed to the pointer version of this function, returns <code>false</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (g.containsVertex(vertex)) ...\n</pre>\n<hr>\n\n<a name=\"Method:edgeCount\"></a>\n<pre class=detailCode>\nint edgeCount() const;\n</pre>\n<div class=detailHTML>\nReturns the number of edges in the graph.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint count = g.edgeCount();\n</pre>\n<hr>\n\n<a name=\"Method:getEdge\"></a>\n<pre class=detailCode>\nEdge* getEdge(string v1, string v2) const;\nEdge* getEdge(Vertex* v1, Vertex* v2) const;\n</pre>\n<div class=detailHTML>\nReturns the edge from v1 to v2 in the graph.\n<p>If either of the vertexes supplied is <code>nullptr</code> or is not found in the graph, the function will return <code>nullptr</code>.\n<p>If there are multiple edges between the given pair of vertexes, which of the edges will be returned is unspecified.</p>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nEdge* e = g.getEdge(v1, v2);\n</pre>\n<hr>\n\n<a name=\"Method:getEdgeSet\"></a>\n<pre class=detailCode>\nconst Set&lt;Edge*&gt;&amp; getEdgeSet() const;\nconst Set&lt;Edge*&gt;&amp; getEdgeSet(string vertexName) const;\nconst Set&lt;Edge*&gt;&amp; getEdgeSet(Vertex* vertex) const;\n</pre>\n<div class=detailHTML>\nReturns the set of all edges in the graph or, in the second and third forms, the edges that start at the specified vertex, which can be indicated either as a pointer or by name.\n<p>When calling the two versions of this function that accept a vertex parameter, if the vertex supplied is <code>nullptr</code> or is not found in the graph, the function will return an empty set.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfor (Edge* edge : g.getEdgeSet()) ...\nfor (Edge* edge : g.getEdgeSet(vertex)) ...\n</pre>\n<hr>\n\n<a name=\"Method:getInverseEdge\"></a>\n<pre class=detailCode>\nEdge* getInverseEdge(Edge* e) const;\n</pre>\n<div class=detailHTML>\nReturns the edge that is the opposite of the given edge; that is, if the specified edge <var>e</var> starts at <var>v1</var> and ends at <var>v2</var>, will return the edge that starts at <var>v2</var> and ends at <var>v1</var>, if such an edge exists in the graph.\n<p>If the edge supplied is <code>nullptr</code>, is not found in the graph, or has no inverse, the function will return <code>nullptr</code>.\n<p>If there are multiple edges between the given pair of vertexes, which of the edges will be returned is unspecified.</p>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nEdge* e2 = g.getInverseEdge(e1);\n</pre>\n<hr>\n\n<a name=\"Method:getInverseEdgeSet\"></a>\n<pre class=detailCode>\nconst Set&lt;Edge*&gt;&amp; getInverseEdgeSet(string vertexName) const;\nconst Set&lt;Edge*&gt;&amp; getInverseEdgeSet(Vertex* vertex) const;\n</pre>\n<div class=detailHTML>\nReturns the set of all edges in the graph that end at the specified vertex, which can be indicated either as a pointer or by name.\n<p>If the vertex supplied is <code>nullptr</code> or is not found in the graph, the function will return an empty set.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfor (Edge* edge : g.getInverseEdgeSet(vertex)) ...\n</pre>\n<hr>\n\n<a name=\"Method:getInverseNeighborNames\"></a>\n<pre class=detailCode>\nconst Set&lt;string&gt; getInverseNeighborNames(string vertex) const;\nconst Set&lt;string&gt; getInverseNeighborNames(Vertex* vertex) const;\n</pre>\n<div class=detailHTML>\nReturns a set of the names of vertexes for which the given vertex is a neighbor; that is, the names of all vertexes N for which there is an edge from N to the specified vertex.\nThis is essentially the opposite of <code>getNeighborNames</code>, which returns the names of all vertexes N for which there is an edge from the specified vertex to N.\n<p>If the vertex supplied is <code>nullptr</code> or is not found in the graph, the function will return an empty set.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfor (string neighbor : g.getInverseNeighborNames(vertex)) ...\n</pre>\n<hr>\n\n<a name=\"Method:getInverseNeighbors\"></a>\n<pre class=detailCode>\nconst Set&lt;Vertex*&gt; getInverseNeighbors(string vertex) const;\nconst Set&lt;Vertex*&gt; getInverseNeighbors(Vertex* vertex) const;\n</pre>\n<div class=detailHTML>\nReturns the set of vertexes for which the given vertex is a neighbor; that is, the set of all vertexes N for which there is an edge from N to the specified vertex.\nThis is essentially the opposite of <code>getNeighbors</code>, which returns all vertexes N for which there is an edge from the specified vertex to N.\n<p>If the vertex supplied is <code>nullptr</code> or is not found in the graph, the function will return an empty set.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfor (Vertex* vertex : g.getInverseNeighbors(vertex)) ...\n</pre>\n<hr>\n\n<a name=\"Method:getNeighborNames\"></a>\n<pre class=detailCode>\nconst Set&lt;string&gt; getNeighborNames(string vertex) const;\nconst Set&lt;string&gt; getNeighborNames(Vertex* vertex) const;\n</pre>\n<div class=detailHTML>\nReturns a set of the names of vertexes that are neighbors of the specified vertex, which can be indicated either as a pointer or by name.\nThe graph is directed, so this is the set of names of all vertexes N to which there is an edge from the specified vertex to N.\n<p>If the vertex supplied is <code>nullptr</code> or is not found in the graph, the function will return an empty set.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfor (string neighbor : g.getNeighborNames(vertex)) ...\n</pre>\n<hr>\n\n<a name=\"Method:getNeighbors\"></a>\n<pre class=detailCode>\nconst Set&lt;Vertex*&gt; getNeighbors(string vertex) const;\nconst Set&lt;Vertex*&gt; getNeighbors(Vertex* vertex) const;\n</pre>\n<div class=detailHTML>\nReturns the set of vertexes that are neighbors of the specified vertex, which can be indicated either as a pointer or by name.\nThe graph is directed, so this is the set of all vertexes N to which there is an edge from the specified vertex to N.\n<p>If the vertex supplied is <code>nullptr</code> or is not found in the graph, the function will return an empty set.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfor (Vertex* vertex : g.getNeighbors(vertex)) ...\n</pre>\n<hr>\n\n<a name=\"Method:getVertex\"></a>\n<pre class=detailCode>\nVertex* getVertex(string name) const;\n</pre>\n<div class=detailHTML>\nLooks up a vertex in the graph by name and returns a pointer to its internal data structure.\nIf no vertex with the specified name exists, returns <code>nullptr</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nVertex* vertex = g.getVertex(name);\n</pre>\n<hr>\n\n<a name=\"Method:getVertexNames\"></a>\n<pre class=detailCode>\nconst Set&lt;string&gt;&amp; getVertexNames() const;\n</pre>\n<div class=detailHTML>\nReturns a set of the names of all vertexes in the graph.\nThe vertexes will be sorted in case-sensitive alphabetical order.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfor (string vertex : g.getVertexNames()) ...\n</pre>\n<hr>\n\n<a name=\"Method:getVertexSet\"></a>\n<pre class=detailCode>\nconst Set&lt;Vertex*&gt;&amp; getVertexSet() const;\n</pre>\n<div class=detailHTML>\nReturns the set of all vertexes in the graph.\nThe vertexes will be sorted by name.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfor (Vertex* vertex : g.getVertexSet()) ...\n</pre>\n<hr>\n\n<a name=\"Method:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty() const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the graph contains no vertexes.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (g.isEmpty()) ...\n</pre>\n<hr>\n\n<a name=\"Method:isNeighbor\"></a>\n<pre class=detailCode>\nbool isNeighbor(string name1, string name2) const;\nbool isNeighbor(Vertex* v1, Vertex* v2) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the graph contains an edge from <code>v1</code> to <code>v2</code>.\n<p>If either of the vertexes supplied is <code>nullptr</code> or is not found in the graph, the function will return <code>false</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (g.isNeighbor(v1, v2)) ...\n</pre>\n<hr>\n\n<a name=\"Method:removeEdge\"></a>\n<pre class=detailCode>\nvoid removeEdge(string name1, string name2);\nvoid removeEdge(Vertex* v1, Vertex* v2);\nvoid removeEdge(Edge* edge);\n</pre>\n<div class=detailHTML>\nRemoves an edge from the graph, where the edge can be specified in any of three ways:\nby the names of its endpoints, by the vertex pointers at its endpoints, or as an edge pointer.\n<p>When calling the single-parameter version of <code>removeEdge</code>, only that single edge is removed.\nWhen calling either of the two-parameter versions of <code>removeEdge</code>, if more than one edge connects the specified endpoints, all of them are removed.\n<p>If any of the vertexes or edges supplied is <code>nullptr</code> or is not found in the graph, calling this function will have no effect on the graph.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ng.removeEdge(v1, v2);\ng.removeEdge(edge);\n</pre>\n<hr>\n\n<a name=\"Method:removeVertex\"></a>\n<pre class=detailCode>\nvoid removeVertex(string name);\nvoid removeVertex(Vertex* vertex);\n</pre>\n<div class=detailHTML>\nRemoves a vertex from the graph, where the vertex can be specified either by its name or as a pointer value.\nRemoving a vertex also removes all edges that touch that vertex.\n<p>If <code>nullptr</code> is passed to the pointer version of this function, or if this graph does not contain the given vertex or a vertex with the given name, the function has no effect on the graph.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ng.removeVertex(vertex);\n</pre>\n<hr>\n\n<a name=\"Method:resetData\"></a>\n<pre class=detailCode>\nvoid resetData();\n</pre>\n<div class=detailHTML>\nSets the data stored in each vertex and edge back to its original value by calling <code>resetData</code> on every vertex and edge.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ng.resetData();\n</pre>\n<hr>\n\n<a name=\"Method:size\"></a>\n<pre class=detailCode>\nint size() const;\n</pre>\n<div class=detailHTML>\nReturns the number of vertexes in the graph.\nEquivalent to <code>vertexCount</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint size = g.size();\n</pre>\n<hr>\n\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString() const;\n</pre>\n<div class=detailHTML>\nConverts the graph to a printable string representation, listing all vertex names followed by the start/finish of all edges, such as <code>&quot;{A, B, C, D, E, A -&gt; B, C -&gt; A, D -&gt; E}&quot;</code>.\nEdges will be shown in the form <code>A - B</code> if there is an edge in both directions between the given vertexes, and <code>A -&gt; B</code> if there is an edge in only one directien between them.\nYou can also use the operator <code>&lt;&lt;</code> to print a graph to an output stream.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = g.toString();\ncout &lt;&lt; g &lt;&lt; endl;\n</pre>\n<hr>\n\n<a name=\"Method:vertexCount\"></a>\n<pre class=detailCode>\nint vertexCount() const;\n</pre>\n<div class=detailHTML>\nReturns the number of vertexes in the graph.\nEquivalent to <code>size</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint count = g.vertexCount();\n</pre>\n<hr>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/DawgLexicon-class.html",
    "content": "<html>\n<head>\n<title>DawgLexicon</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"dawglexicon.html\">#include \"dawglexicon.h\"</a></div>\n<h1 class=header><code>class DawgLexicon</code></h1>\nThis class is used to represent a <b><i>lexicon,</i></b> or word list.\nThe main difference between a lexicon and a dictionary is that\na lexicon does not provide any mechanism for storing definitions;\nthe lexicon contains only words, with no associated information.\nIt is therefore similar to a set of strings, but with a more\nspace-efficient internal representation.  The <code>DawgLexicon</code>\nclass supports efficient lookup operations for words and prefixes.\n\n<p>As an example of the use of the <code>DawgLexicon</code> class, the\nfollowing program lists all the two-letter words in the lexicon\nstored in <code>EnglishWords.dat</code>:\n\n<pre>\n   int main() {\n      DawgLexicon english(&quot;EnglishWords.dat&quot;);\n      for (string word : english) {\n         if (word.length() == 2) {\n            cout &lt;&lt; word &lt;&lt; endl;\n         }\n      }\n      return 0;\n   }\n</pre>\n\n<p>\n\tNOTE: Unlike the standard <code>Lexicon</code> implementation, <code>DawgLexicon</code> is implemented internally using a directed acyclic word graph (\"DAWG\"), which allows it to have an efficient binary file representation.\n\tThe performance of this kind of lexicon is severely degraded if words are added to it individually.\n\tIf an entire binary DAWG file of words is added using the <code>addWordsFromFile</code> method, the words are represented efficiently as a directed acyclic word graph (DAWG).\n\tBut if words are added one at a time, or if the words come from a plain text input file, these are placed into a secondary internal backing <code>Set</code> which has much lower runtime performance, particularly for prefix-related operations like <code>containsPrefix</code>.\n\tAlso, because of its representation, this form of lexicon does not support certain operations such as <code>remove</code>.\n\tIf you want to be able to add words one-at-a-time or read from plain-text input files, or if you want to be able to remove words from your lexicon, consider using the <code>Lexicon</code> class rather than <code>DawgLexicon</code>.\n</p>\n\n<p class=\"since\">\n\tAvailable since: 2014/02/01 version of C++ library\n</p>\n\n<table class=index width=100%>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Constructor</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Constructor:DawgLexicon\">DawgLexicon()</a></nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Initializes a new empty lexicon.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Constructor:DawgLexicon\">DawgLexicon(<var>filename</var>)</a>&nbsp;<br>\n\t\t\t<a href=\"#Constructor:DawgLexicon\">DawgLexicon(<var>istream</var>)</a></nobr></td>\n\t\t<td class=\"bigoh\">O(N log N)</td>\n\t\t<td class=indexSynopsis width=100%>Initializes a new lexicon that reads words from the given file or stream.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Methods</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:add\">add(<var>word</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(log N)</td>\n\t\t<td class=indexSynopsis width=100%>Adds the specified word to the lexicon.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:addWordsFromFile\">addWordsFromFile(<var>filename</var>)</a>&nbsp;<br>\n\t\t\t<a href=\"#Method:addWordsFromFile\">addWordsFromFile(<var>istream</var>)</a></nobr></td>\n\t\t<td class=\"bigoh\">O(N log N)</td>\n\t\t<td class=indexSynopsis width=100%>Reads the given file/stream and adds all of its words to the lexicon.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:clear\">clear()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Removes all words from the lexicon.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:contains\">contains(<var>word</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(log N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>word</code> is contained in the lexicon.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:equals\">equals(<var>lex</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N log N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the two lexicons contain the same words.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:containsPrefix\">containsPrefix(<var>prefix</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(log N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns true if any words in the lexicon begin with <code>prefix</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:isEmpty\">isEmpty()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the lexicon contains no words.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:mapAll\">mapAll(<var>fn</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Calls the specified function on each word in the lexicon.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:size\">size()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the number of words contained in the lexicon.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Converts the lexicon to a printable string representation.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Operators</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:==\"><var>lex1</var> == <var>lex1</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N log N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>lex1</code> and <code>lex2</code> contain the same elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:!=\"><var>lex1</var> != <var>lex2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N log N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>lex1</code> and <code>lex2</code> are different.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><var>ostream</var>&nbsp;&lt;&lt;&nbsp;<var>lex</var></nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Outputs the contents of the lexicon to the given output stream.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><var>istream</var>&nbsp;&gt;&gt;&nbsp;<var>lex</var></nobr></td>\n\t\t<td class=\"bigoh\">O(N log N)</td>\n\t\t<td class=indexSynopsis width=100%>Reads the contents of the given input stream into the lexicon.</td>\n\t</tr>\n</table>\n\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:DawgLexicon\"></a>\n<pre class=detailCode>\nDawgLexicon();\nDawgLexicon(istream&amp; input);\nDawgLexicon(string filename);\n</pre>\n<div class=detailHTML>\nInitializes a new lexicon.  The default constructor creates an empty\nlexicon.  The second form reads in the contents of the lexicon from\nthe specified data file or stream.\nThe data file must be in one of two formats:\n(1) a space-efficient precompiled binary format or (2) a text file\ncontaining one word per line.  The Stanford library distribution\nincludes a binary lexicon file named <code>EnglishWords.dat</code>\ncontaining a list of words in English.  The standard code pattern\nto initialize that lexicon looks like this:\n\n<pre>\n   DawgLexicon english(\"EnglishWords.dat\");\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nDawgLexicon lex;\nDawgLexicon lex(filename);\n</pre>\n<hr>\n</table>\n\n<h2>Method detail</h2>\n\n<hr>\n<a name=\"Method:add\"></a>\n<pre class=detailCode>\nvoid add(string word);\n</pre>\n<div class=detailHTML>\nAdds the specified word to the lexicon.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlex.add(word);\n</pre>\n\n<hr>\n<a name=\"Method:addWordsFromFile\"></a>\n<pre class=detailCode>\nvoid addWordsFromFile(istream&amp; input);\nvoid addWordsFromFile(string filename);\n</pre>\n<div class=detailHTML>\nReads the given file/stream and adds all of its words to the lexicon.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlex.addWordsFromFile(filename);\n</pre>\n\n<hr>\n<a name=\"Method:clear\"></a>\n<pre class=detailCode>\nvoid clear();\n</pre>\n<div class=detailHTML>\nRemoves all words from the lexicon.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlex.clear();\n</pre>\n\n<hr>\n<a name=\"Method:contains\"></a>\n<pre class=detailCode>\nbool contains(string word) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if <code>word</code> is contained in the\nlexicon.  In the <code>DawgLexicon</code> class, the case of letters is\nignored, so \"Zoo\" is the same as \"ZOO\" or \"zoo\".\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (lex.contains(word)) ...\n</pre>\n\n<hr>\n<a name=\"Method:containsPrefix\"></a>\n<pre class=detailCode>\nbool containsPrefix(string prefix) const;\n</pre>\n<div class=detailHTML>\nReturns true if any words in the lexicon begin with <code>prefix</code>.\nLike <code>containsWord</code>, this method ignores the case of letters\nso that \"MO\" is a prefix of \"monkey\" or \"Monday\".\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (lex.containsPrefix(prefix)) ...\n</pre>\n\n<hr>\n<a name=\"Method:equals\"></a>\n<pre class=detailCode>\nbool equals(const DawgLexicon&amp; lex) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the two lexicons contain exactly the same set of words.\nIdentical in behavior to the <code>==</code> operator.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (lex.equals(lex2)) ...\n</pre>\n\n<hr>\n<a name=\"Method:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty() const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the lexicon contains no words.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (lex.isEmpty()) ...\n</pre>\n\n<hr>\n<a name=\"Method:mapAll\"></a>\n<pre class=detailCode>\nvoid mapAll(void (*fn)(string)) const;\nvoid mapAll(void (*fn)(const string &amp;)) const;\nvoid mapAll(FunctorType fn) const;\n</pre>\n<div class=detailHTML>\nCalls the specified function on each word in the lexicon.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlexicon.mapAll(fn);\n</pre>\n\n<hr>\n<a name=\"Method:size\"></a>\n<pre class=detailCode>\nint size() const;\n</pre>\n<div class=detailHTML>\nReturns the number of words contained in the lexicon.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint n = lex.size();\n</pre>\n\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString() const;\n</pre>\n<div class=detailHTML>\nConverts the map to a printable string representation, such as <code>&quot;{word1, word2, word3}&quot;</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = lexicon.toString();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/Deque-class.html",
    "content": "<html>\n<head>\n<title>Deque</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"deque.html\">#include \"deque.h\"</a></div>\n<h1 class=header><code>class Deque&lt;<var>ValueType</var>&gt;</code></h1>\nThis file exports the <code>Deque</code> class, an ordered collection with a front and back in which elements can be efficiently added and removed from both the front and the back.\nA deque combines many of the benefits of a stack and a queue.\n\n<table class=index width=100%>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Constructor</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Constructor:Deque\">Deque()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Initializes a new empty deque.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Methods</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:add\">add(<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Adds a value to the back of the deque; equivalent to <code>addBack</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:addBack\">addBack(<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Adds a value to the back of the deque.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:addFront\">addFront(<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Adds a value to the front of the deque.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:back\">back()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the last value in the deque by reference.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:clear\">clear()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Removes all elements from the deque.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:dequeue\">dequeue(<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Removes a value from the front of the deque; equivalent to <code>dequeueFront</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:dequeueBack\">dequeueBack(<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Removes a value from the back of the deque.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:dequeueFront\">dequeueFront(<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Removes a value from the front of the deque.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:enqueue\">enqueue(<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Adds a value to the end of the deque; equivalent to <code>enqueueBack</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:enqueueBack\">enqueueBack(<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Adds a value to the end of the deque.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:enqueueFront\">enqueueFront(<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Adds a value to the front of the deque.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:equals\">equals(<var>deque</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the two deques contain the same elements in the same order.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:front\">front()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the first value in the deque by reference.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:isEmpty\">isEmpty()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the deque contains no elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:peek\">peek()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the first value in the deque, without removing it; equivalent to <code>peekFront</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:peekBack\">peekBack()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the last value in the deque, without removing it.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:peekFront\">peekFront()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the first value in the deque, without removing it.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:remove\">remove(<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Removes a value from the front of the deque; equivalent to <code>removeFront</code> or <code>dequeueFront</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:removeBack\">removeBack(<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Removes a value from the back of the deque.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:removeFront\">removeFront(<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Removes a value from the front of the deque.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:size\">size()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the number of values in the deque.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Converts the deque to a printable string representation.</td>\n\t<tr>\n\n\t<tr>\n\t\t<td class=indexHead colspan=3>Operators</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:==\"><var>deque1</var> == <var>deque1</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>deque1</code> and <code>deque2</code> contain the same elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:!=\"><var>deque1</var> != <var>deque2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>deque1</code> and <code>deque2</code> are different.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><var>ostream</var>&nbsp;&lt;&lt;&nbsp;<var>deque</var></nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Outputs the contents of the deque to the given output stream.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><var>istream</var>&nbsp;&gt;&gt;&nbsp;<var>deque</var></nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Reads the contents of the given input stream into the deque.</td>\n\t</tr>\n</table>\n\n<h2>Constructor detail</h2>\n\n<hr>\n<a name=\"Constructor:Deque\"></a>\n<pre class=detailCode>\nDeque();\n</pre>\n<div class=detailHTML>\nInitializes a new empty deque.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nDeque&lt;ValueType&gt; deque;\n</pre>\n\n<hr>\n</table>\n<h2>Method detail</h2>\n\n<hr>\n<a name=\"Method:back\"></a>\n<pre class=detailCode>\nValueType&amp; back();\n</pre>\n<div class=detailHTML>\nReturns the last value in the deque by reference.\n\n<p>If the deque is empty, this function signals an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType last = deque.back();\n</pre>\n\n<hr>\n<a name=\"Method:clear\"></a>\n<pre class=detailCode>\nvoid clear();\n</pre>\n<div class=detailHTML>\nRemoves all elements from the deque.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndeque.clear();\n</pre>\n\n<hr>\n<a name=\"Method:dequeue\"></a>\n<pre class=detailCode>\nValueType dequeue();\n</pre>\n<div class=detailHTML>\nRemoves and returns the first item in the deque.\n<p>If the deque is empty, this function signals an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType first = deque.dequeue();\n</pre>\n\n<hr>\n<a name=\"Method:enqueue\"></a>\n<pre class=detailCode>\nvoid enqueue(ValueType value);\n</pre>\n<div class=detailHTML>\nAdds <code>value</code> to the end of the deque.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndeque.enqueue(value);\n</pre>\n\n<hr>\n<a name=\"Method:equals\"></a>\n<pre class=detailCode>\nbool equals(const Deque&amp; q) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the two deques contain exactly the same element values in the same order.\nIdentical in behavior to the <code>==</code> operator.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (q.equals(q2)) ...\n</pre>\n\n<hr>\n<a name=\"Method:front\"></a>\n<pre class=detailCode>\nValueType&amp; front();\n</pre>\n<div class=detailHTML>\nReturns the first value in the deque by reference.\n<p>If the deque is empty, this function signals an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType first = deque.front();\n</pre>\n\n<hr>\n<a name=\"Method:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty() const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the deque contains no elements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (deque.isEmpty()) ...\n</pre>\n\n<hr>\n<a name=\"Method:peek\"></a>\n<pre class=detailCode>\nValueType peek() const;\n</pre>\n<div class=detailHTML>\nReturns the first value in the deque, without removing it.  For\ncompatibility with the STL classes, this method is also exported\nunder the name <code>front</code>, in which case it returns the\nvalue by reference.\n<p>If the deque is empty, this function signals an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType first = deque.peek();\n</pre>\n\n<hr>\n<a name=\"Method:size\"></a>\n<pre class=detailCode>\nint size() const;\n</pre>\n<div class=detailHTML>\nReturns the number of values in the deque.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint n = deque.size();\n</pre>\n\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString() const;\n</pre>\n<div class=detailHTML>\nConverts the deque to a printable string representation, with the elements listed left-to-right from the front of the deque to the back, such as <code>&quot;{value1, value2, value3}&quot;</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = deque.toString();\n</pre>\n\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/Edge-class.html",
    "content": "<html>\n\t<head>\n\t\t<title>Edge</title>\n\t\t<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n\t</head>\n\n\t<body>\n\t\t<table class=banner>\n\t\t\t<tr>\n\t\t\t\t<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n\t\t\t\t<td valign=middle><div class=bannerText>\n\t\t\t\tThe Stanford <code>cslib</code> package\n\t\t\t\t</div></td>\n\t\t\t</tr>\n\t\t</table>\n\n\t\t<hr>\n\n\t\t<div class=include><a href=\"graph.html\">#include \"basicgraph.h\"</a></div>\n\t\t<h1 class=header>\n\t\t\t<code>class Edge</code>\n\t\t</h1>\n\n\t\t<p>\n\t\t\tEach object of this class represents a single directed edge (or arc) in a graph.\n\t\t\tThe edge object itself stores some useful data fields that can be used in various graph algorithms.\n\t\t\tIn particular, an edge stores its cost, which is important for weighted graphs.\n\t\t</p>\n\t\t\n\t\t<p>\n\t\t\tPrevious versions of this class in the library included member variables such as <code>visited</code> to help facilitate the implementation of various graph algorithms.\n\t\t\tThese were removed by the library's maintainer because we want our students to learn to manage such data themselves using collections.\n\t\t</p>\n\n\t\t<p>\n\t\t\tSee also:\n\t\t\t<a href=\"BasicGraph-class.html\"><code>BasicGraph</code></a>,\n\t\t\t<a href=\"Vertex-class.html\"><code>Vertex</code></a>\n\t\t</p>\n\n\t\t<p class=\"since\">\n\t\t\tAvailable since: 2014/02/01 version of C++ library\n\t\t</p>\n\n\t\t<table class=index width=100%>\n\t\t\t<tr><td class=indexHead colspan=2>Constructor</td></tr>\n\t\t\t<tr><td class=indexKey><nobr><a href=\"#Constructor:Edge\">Edge(<var>start</var>,&nbsp;<var>finish</var>)</a><br>\n\t\t\t<a href=\"#Constructor:Edge\">Edge(<var>start</var>,&nbsp;<var>end</var>,&nbsp;<var>cost</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a edge between the given vertices.</td></tr>\n\t\t\t<tr><td class=indexHead colspan=2>Methods</td></tr>\n\t\t\t<tr class=\"deprecated\"><td class=indexKey><nobr><a href=\"#Method:resetData\">resetData()</a></td><td class=indexSynopsis width=100%><em>Deprecated.</em>  Sets the <code>visited</code> field back to its initial value. This will be removed from the library; students should not use it.</td></tr>\n\t\t\t<tr><td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a></td><td class=indexSynopsis width=100%>Returns a string representation of this edge.</td></tr>\n\t\t\t<tr><td class=indexHead colspan=2>Fields</td></tr>\n\t\t\t<tr><td class=indexKey><nobr>double&nbsp;cost</nobr></td><td class=indexSynopsis width=100%>The cost or weight of this edge.</td></tr>\n\t\t\t<tr><td class=indexKey><nobr>Vertex*&amp;&nbsp;end</nobr></td><td class=indexSynopsis width=100%>A pointer to the finishing vertex touching this edge (alias for <code>finish</code>).</td></tr>\n\t\t\t<tr><td class=indexKey><nobr>Vertex*&nbsp;finish</nobr></td><td class=indexSynopsis width=100%>A pointer to the finishing vertex touching this edge.</td></tr>\n\t\t\t<tr><td class=indexKey><nobr>Vertex*&nbsp;start</nobr></td><td class=indexSynopsis width=100%>A pointer to the starting vertex touching this edge.</td></tr>\n\t\t\t<tr class=\"deprecated\"><td class=indexKey><nobr>bool&nbsp;visited</nobr></td><td class=indexSynopsis width=100%><em>Deprecated.</em>  Whether or not this edge has currently been visited; initially <code>false</code>. This will be removed from the library; students should not use it.</td></tr>\n\t\t\t<tr><td class=indexKey><nobr>double&amp;&nbsp;weight</nobr></td><td class=indexSynopsis width=100%>The cost or weight of this edge (alias for <code>cost</code>).</td></tr>\n\t\t</table>\n\n\t\t<h2>Constructor detail</h2>\n\t\t<hr>\n\t\t<a name=\"Constructor:Edge\"></a>\n\t\t<pre class=detailCode>\nEdge(Vertex* start, Vertex* finish, double cost = 0);\n</pre>\n\t\t<div class=detailHTML>\n\t\tCreates a edge between the given vertices.\n\t\tA cost may be optionally passed to indicate a weighted edge; if no cost is passed, 0 is used.\n\t\t<p>Usage:<br>\n\t\t</div>\n\t\t<pre class=usageCode>\nEdge e1(v1, v2);\nEdge e2(v2, v3, 4.5);\n</pre>\n\t\t<hr>\n\n\t\t<h2>Method detail</h2>\n\t\t<hr>\n\t\t<a name=\"Method:resetData\"></a>\n\t\t<pre class=detailCode>\nvoid resetData();\n</pre>\n\t\t<div class=detailHTML>\n\t\t<em>Deprecated.</em>\n\t\tSets the <code>visited</code> field back to its initial value of <code>false</code>.\n\t\t<p>Usage:<br>\n\t\t</div>\n\t\t<pre class=usageCode>\ne.resetData();\n</pre>\n\t\t<hr>\n\n\t\t<a name=\"Method:toString\"></a>\n\t\t<pre class=detailCode>\nstring toString() const;\n</pre>\n\t\t<div class=detailHTML>\n\t\tReturns a string representation of this edge, such as\n\t\t<code>\"Edge{start=r12c42, finish=r12c41, cost=0.75}\"</code>.\n\t\t<p>Usage:<br>\n\t\t</div>\n\t\t<pre class=usageCode>\nstring str = e.toString();\n</pre>\n\t\t<hr>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/ErrorException-class.html",
    "content": "<html>\n<head>\n<title>ErrorException</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"error.html\">#include \"error.h\"</a></div>\n<h1 class=header><code>class ErrorException</code></h1>\nThis exception is thrown by calls to the <code>error</code>\nfunction.  Typical code for catching errors looks like this:\n\n<pre>\n   try {\n      ... code in which an error might occur ...\n   } catch (ErrorException& ex) {\n      ... code to handle the error condition ...\n   }\n</pre>\n\nIf an <code>ErrorException</code> is thrown at any point in the\nrange of the <code>try</code> (including in functions called from\nthat code), control will jump immediately to the error handler.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Function</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:error\">error(<var>msg</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Signals an error condition in a program by throwing an <code>ErrorException</code> with the specified message.</td></tr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:error\"></a>\n<pre class=detailCode>\nvoid error(string msg);\n</pre>\n<div class=detailHTML>\nSignals an error condition in a program by throwing an\n<code>ErrorException</code> with the specified message.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nerror(msg);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/G3DRect-class-old.html",
    "content": "<html>\n<head>\n<title>G3DRect</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"gobjects.html\">#include \"gobjects.h\"</a></div>\n<h1 class=header><code>class G3DRect : public <a href=\"GRect-class.html\">GRect</a></code></h1>\nThis graphical object subclass represents a rectangular box that can\nbe raised or lowered.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Constructor</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Constructor:G3DRect\">G3DRect(<var>width</var>,&nbsp;<var>height</var>)</a><br>\n<a href=\"#Constructor:G3DRect\">G3DRect(<var>width</var>,&nbsp;<var>height</var>,&nbsp;<var>raised</var>)</a><br>\n<a href=\"#Constructor:G3DRect\">G3DRect(<var>x</var>,&nbsp;<var>y</var>,&nbsp;<var>width</var>,&nbsp;<var>height</var>)</a><br>\n<a href=\"#Constructor:G3DRect\">G3DRect(<var>x</var>,&nbsp;<var>y</var>,&nbsp;<var>width</var>,&nbsp;<var>height</var>,&nbsp;<var>raised</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Constructs a new 3D rectangle with the specified width and height.</td></tr>\n<tr><td class=indexHead colspan=2>Methods</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:isRaised\">isRaised()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if this object appears raised.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setRaised\">setRaised(<var>raised</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Indicates whether this object appears raised.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:G3DRect\"></a>\n<pre class=detailCode>\nG3DRect(double width, double height);\nG3DRect(double width, double height, bool raised);\nG3DRect(double x, double y, double width, double height);\nG3DRect(double x, double y, double width, double height, bool raised);\n</pre>\n<div class=detailHTML>\nConstructs a new 3D rectangle with the specified width and height.  If\nthe <code>x</code> and <code>y</code> parameters are specified, they\nare used to specify the origin.  The <code>raised</code> parameter\ndetermines whether the rectangle should be drawn with highlights that\nsuggest that it is raised about the background.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nG3DRect* rect = new G3DRect(width, height);\nG3DRect* rect = new G3DRect(width, height, raised);\nG3DRect* rect = new G3DRect(x, y, width, height);\nG3DRect* rect = new G3DRect(x, y, width, height, raised);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:setRaised\"></a>\n<pre class=detailCode>\nvoid setRaised(bool raised);\n</pre>\n<div class=detailHTML>\nIndicates whether this object appears raised.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nrect-&gt;setRaised(raised);\n</pre>\n<hr>\n<a name=\"Method:isRaised\"></a>\n<pre class=detailCode>\nbool isRaised() const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if this object appears raised.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (rect-&gt;isRaised()) ...\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/G3DRect-class.html",
    "content": "<html>\n\t<head>\n\t\t<meta http-equiv=\"Refresh\" content=\"0; url=doxygen/classG3DRect.html\">\n\t</head>\n\t\n\t<body>\n\t\t<p>\n\t\t\tThis page has moved to <a href=\"doxygen/classG3DRect.html\">.\n\t\t\tClick this link if you are not redirected automatically.\n\t\t</p>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GActionEvent-class-old.html",
    "content": "<html>\n<head>\n<title>GActionEvent</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"gevents.html\">#include \"gevents.h\"</a></div>\n<h1 class=header><code>class GActionEvent : public <a href=\"GEvent-class.html\">GEvent</a></code></h1>\nThis event subclass represents an action event.\nAction events are generated by the classes in the\n<a href=\"GInteractor-class.html\"><code>GInteractor</code></a>\nhierarchy.  As an example, the following program displays\na button that, when pushed, generates the message\n&ldquo;Please do not press this button again&rdquo;\n(with thanks to Douglas Adams&rsquo;s <i>Hitchhiker&rsquo;s\nGuide to the Galaxy</i>):\n\n<pre>\n   int main() {\n      GWindow gw;\n      GButton* button = new GButton(\"RED\");\n      gw.addToRegion(button, \"SOUTH\");\n      while (true) {\n         GEvent e = waitForEvent(ACTION_EVENT | CLICK_EVENT);\n         if (e.getEventType() == MOUSE_CLICKED) break;\n         cout &lt;&lt; &quot;Please do not press this button again.&quot; &lt;&lt; endl;\n      }\n      return 0;\n   }\n</pre>\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Constructor</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Constructor:GActionEvent\">GActionEvent(<var>type</var>,&nbsp;<var>source</var>,&nbsp;<var>actionCommand</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a <code>GActionEvent</code> using the specified parameters.</td></tr>\n<tr><td class=indexHead colspan=2>Methods</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getActionCommand\">getActionCommand()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the action command associated with this event.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getSource\">getSource()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a pointer to the <code>GObject</code> that generated this event.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Converts the event to a human-readable representation of the event.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:GActionEvent\"></a>\n<pre class=detailCode>\nGActionEvent(EventType type, GObject* source, string actionCommand);\n</pre>\n<div class=detailHTML>\nCreates a <code>GActionEvent</code> using the specified parameters.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGActionEvent actionEvent(type, source, actionCommand);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:getSource\"></a>\n<pre class=detailCode>\nGObject* getSource() const;\n</pre>\n<div class=detailHTML>\nReturns a pointer to the <code>GObject</code> that generated this event.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGObject *gobj = e.getSource();\n</pre>\n<hr>\n<a name=\"Method:getActionCommand\"></a>\n<pre class=detailCode>\nstring getActionCommand() const;\n</pre>\n<div class=detailHTML>\nReturns the action command associated with this event.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring cmd = e.getActionCommand();\n</pre>\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString() const;\n</pre>\n<div class=detailHTML>\nConverts the event to a human-readable representation of the event.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = e.toString();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GActionEvent.html",
    "content": "<html>\n\t<head>\n\t\t<meta http-equiv=\"Refresh\" content=\"0; url=doxygen/classG3DRect.html\">\n\t</head>\n\t\n\t<body>\n\t\t<p>\n\t\t\tThis page has moved to <a href=\"doxygen/classG3DRect.html\">.\n\t\t\tClick this link if you are not redirected automatically.\n\t\t</p>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GArc-class-old.html",
    "content": "<html>\n<head>\n<title>GArc</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"gobjects.html\">#include \"gobjects.h\"</a></div>\n<h1 class=header><code>class GArc : public <a href=\"GObject-class.html\">GObject</a></code></h1>\nThis graphical object subclass represents an elliptical arc.  The\narc is specified by the following parameters:\n\n<p><ul>\n  <li>The coordinates of the bounding rectangle (<code>x</code>,\n      <code>y</code>, <code>width</code>, <code>height</code>)\n  <li>The angle at which the arc starts (<code>start</code>)\n  <li>The number of degrees that the arc covers (<code>sweep</code>)\n</ul>\n\n<p>All angles in a <code>GArc</code> description are measured in\ndegrees moving counterclockwise from the +<i>x</i> axis.  Negative\nvalues for either <code>start</code> or <code>sweep</code> indicate\nmotion in a clockwise direction.\n<p>The following diagram illustrates the interpretation of these parameters\nfor the arc shown in <font color=red>red</font>:\n\n<p><div class=inset>\n<img src=\"images/GArcGeometry.png\" width=260 alt=\"GArcGeometry\">\n</div>\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Constructor</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Constructor:GArc\">GArc(<var>width</var>,&nbsp;<var>height</var>,&nbsp;<var>start</var>,&nbsp;<var>sweep</var>)</a><br>\n<a href=\"#Constructor:GArc\">GArc(<var>x</var>,&nbsp;<var>y</var>,&nbsp;<var>width</var>,&nbsp;<var>height</var>,&nbsp;<var>start</var>,&nbsp;<var>sweep</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a new <code>GArc</code> object consisting of an elliptical arc.</td></tr>\n<tr><td class=indexHead colspan=2>Methods</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getEndPoint\">getEndPoint()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the point at which the arc ends.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getFillColor\">getFillColor()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the color used to display the filled region of this arc.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getFrameRectangle\">getFrameRectangle()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the boundaries of the rectangle used to frame the arc.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getStartAngle\">getStartAngle()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the starting angle for this <code>GArc</code> object.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getStartPoint\">getStartPoint()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the point at which the arc starts.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getSweepAngle\">getSweepAngle()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the sweep angle for this <code>GArc</code> object.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:isFilled\">isFilled()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the arc is filled.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setFillColor\">setFillColor(<var>color</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the color used to display the filled region of this arc.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setFilled\">setFilled(<var>flag</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the fill status for the arc, where <code>false</code> is outlined and <code>true</code> is filled.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setFrameRectangle\">setFrameRectangle(<var>rect</var>)</a><br>\n<a href=\"#Method:setFrameRectangle\">setFrameRectangle(<var>x</var>,&nbsp;<var>y</var>,&nbsp;<var>width</var>,&nbsp;<var>height</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Changes the boundaries of the rectangle used to frame the arc.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setStartAngle\">setStartAngle(<var>start</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the starting angle for this <code>GArc</code> object.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setSweepAngle\">setSweepAngle(<var>start</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the sweep angle for this <code>GArc</code> object.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:GArc\"></a>\n<pre class=detailCode>\nGArc(double width, double height, double start, double sweep);\nGArc(double x, double y, double width, double height, double start, double sweep);\n</pre>\n<div class=detailHTML>\nCreates a new <code>GArc</code> object consisting of an elliptical arc.\nThe first form creates a <code>GArc</code> whose origin is the point\n(0,&nbsp;0); the second form positions the <code>GArc</code> at the\npoint (<code>x</code>, <code>y</code>).\n<p>The following screenshots show several examples of how the\n<code>GArc</code> constructor interprets the <code>start</code>\nand <code>sweep</code> parameters:\n\n<p><div class=inset>\n<img src=\"images/GArcExamples.png\" width=700 alt=\"GArcExamples\">\n</div>\n\n<p>In the code fragments underneath each of these diagrams, <code>r</code>\nis the radius of the circular arc, and <code>cx</code> and <code>cy</code>\nare the coordinates of the center or the window.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGArc* arc = new GArc(width, height, start, sweep);\nGArc* arc = new GArc(x, y, width, height, start, sweep);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:setStartAngle\"></a>\n<pre class=detailCode>\nvoid setStartAngle(double start);\n</pre>\n<div class=detailHTML>\nSets the starting angle for this <code>GArc</code> object.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\narc-&gt;setStartAngle(start);\n</pre>\n<hr>\n<a name=\"Method:getStartAngle\"></a>\n<pre class=detailCode>\ndouble getStartAngle() const;\n</pre>\n<div class=detailHTML>\nReturns the starting angle for this <code>GArc</code> object.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble angle = arc-&gt;getStartAngle();\n</pre>\n<hr>\n<a name=\"Method:setSweepAngle\"></a>\n<pre class=detailCode>\nvoid setSweepAngle(double start);\n</pre>\n<div class=detailHTML>\nSets the sweep angle for this <code>GArc</code> object.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\narc-&gt;setSweepAngle(start);\n</pre>\n<hr>\n<a name=\"Method:getSweepAngle\"></a>\n<pre class=detailCode>\ndouble getSweepAngle() const;\n</pre>\n<div class=detailHTML>\nReturns the sweep angle for this <code>GArc</code> object.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble angle = arc-&gt;getSweepAngle();\n</pre>\n<hr>\n<a name=\"Method:getStartPoint\"></a>\n<pre class=detailCode>\nGPoint getStartPoint() const;\n</pre>\n<div class=detailHTML>\nReturns the point at which the arc starts.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGPoint pt = arc-&gt;getStartPoint();\n</pre>\n<hr>\n<a name=\"Method:getEndPoint\"></a>\n<pre class=detailCode>\nGPoint getEndPoint() const;\n</pre>\n<div class=detailHTML>\nReturns the point at which the arc ends.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGPoint pt = arc-&gt;getEndPoint();\n</pre>\n<hr>\n<a name=\"Method:setFrameRectangle\"></a>\n<pre class=detailCode>\nvoid setFrameRectangle(const GRectangle &amp; rect);\nvoid setFrameRectangle(double x, double y, double width, double height);\n</pre>\n<div class=detailHTML>\nChanges the boundaries of the rectangle used to frame the arc.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\narc-&gt;setFrameRectangle(rect);\narc-&gt;setFrameRectangle(x, y, width, height);\n</pre>\n<hr>\n<a name=\"Method:getFrameRectangle\"></a>\n<pre class=detailCode>\nGRectangle getFrameRectangle() const;\n</pre>\n<div class=detailHTML>\nReturns the boundaries of the rectangle used to frame the arc.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGRectangle rect = arc-&gt;getFrameRectangle();\n</pre>\n<hr>\n<a name=\"Method:setFilled\"></a>\n<pre class=detailCode>\nvoid setFilled(bool flag);\n</pre>\n<div class=detailHTML>\nSets the fill status for the arc, where <code>false</code> is\noutlined and <code>true</code> is filled.  If a <code>GArc</code> is\nunfilled, the figure consists only of the arc itself.  If a\n<code>GArc</code> is filled, the figure consists of the\npie-shaped wedge formed by connecting the endpoints of the arc to\nthe center.  As an example, the following program draws a 270-degree\narc starting at 45 degrees, filled in yellow, much like the character\nin the PacMan video game:\n\n<pre>\n   int main() {\n      GWindow gw;\n      cout << \"This program draws the PacMan character.\" << endl;\n      double cx = gw.getWidth() / 2;\n      double cy = gw.getHeight() / 2;\n      double r = 25;\n      GArc* pacman = new GArc(cx - r, cy - r, 2 * r, 2 * r, 45, 270);\n      pacman-&gt;setFilled(true);\n      pacman-&gt;setFillColor(&quot;YELLOW&quot;);\n      gw.add(pacman);\n      return 0;\n   }\n</pre>\n<p>The program results in the following picture:\n\n<p><div class=inset>\n<img src=\"images/PacMan.png\" width=322 alt=\"PacMan\">\n</div>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\narc-&gt;setFilled(flag);\n</pre>\n<hr>\n<a name=\"Method:isFilled\"></a>\n<pre class=detailCode>\nbool isFilled() const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the arc is filled.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (arc-&gt;isFilled()) ...\n</pre>\n<hr>\n<a name=\"Method:setFillColor\"></a>\n<pre class=detailCode>\nvoid setFillColor(string color);\nvoid setFillColor(int rgb);\n</pre>\n<div class=detailHTML>\nSets the color used to display the filled region of this arc.\nColors are specified as strings as described in the notes for the\n<a href=\"GObject-class.html#Method:setColor\"><code>setColor</code></a>\nmethod.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\narc-&gt;setFillColor(color);\n</pre>\n<hr>\n<a name=\"Method:getFillColor\"></a>\n<pre class=detailCode>\nstring getFillColor() const;\n</pre>\n<div class=detailHTML>\nReturns the color used to display the filled region of this arc.  If\nnone has been set, <code>getFillColor</code> returns the empty string.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring color = arc-&gt;getFillColor();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GArc-class.html",
    "content": "<html>\n\t<head>\n\t\t<meta http-equiv=\"Refresh\" content=\"0; url=doxygen/classGArc.html\">\n\t</head>\n\t\n\t<body>\n\t\t<p>\n\t\t\tThis page has moved to <a href=\"doxygen/classGArc.html\">.\n\t\t\tClick this link if you are not redirected automatically.\n\t\t</p>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GBufferedImage-class-old.html",
    "content": "<html>\n<head>\n<title>GBufferedImage</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"gbufferedimage.html\">#include \"gbufferedimage.h\"</a></div>\n<h1 class=header><code>class GBufferedImage : public <a href=\"GInteractor-class.html\">GInteractor</a></code></h1>\nThis class implements a 2D region of colored pixels that can be read/set individually, not unlike the <code>BufferedImage</code> class in Java.\n\n<pre>\n   int main() {\n      GWindow gw;\n\n      GBufferedImage* img = new GBufferedImage(80, 60);\n      gw.add(img, 50, 50);\n      img-&gt;fill(0xff00ff);  // color all pixels in purple\n\n      // color some pixels in orange\n      for (int y = img-&gt;getHeight() / 4; y &lt; img-&gt;getHeight() * 3 / 4; y++) {\n         for (int x = img-&gt;getWidth() / 4; x &lt; img-&gt;getWidth() * 3 / 4; x++) {\n            img-&gt;setRGB(x, y, 0xffcc33);\n         }\n      }\n\n      return 0;\n   }\n</pre>\n\n<p>\n\tThe color of each pixel in a <code>GBufferedImage</code> is represented as a 32-bit integer as described by the <code>GWindow</code> function\n\t<a href=\"gwindow.html#Function:convertColorToRGB\"><code>convertRGBToColor</code></a>, where:\n</p>\n\n<ul>\n\t<li>\n\t\tbits 0-7 (most significant; <code>value &amp; 0xff000000</code>) are unused;\n\t</li>\n\t<li>\n\t\tbits 8-15 (<code>value &amp; 0x00ff0000</code>) represent the redness of the color, from 0 (none) through 255 (full);\n\t</li>\n\t<li>\n\t\tbits 16-23 (<code>value &amp; 0x0000ff00</code>) represent the greenness of the color, from 0 (none) through 255 (full);\n\t</li>\n\t<li>\n\t\tand bits 24-31 (<code>value &amp; 0x000000ff</code>) represent the blueness of the color, from 0 (none) through 255 (full).\n\t</li>\n</ul>\n\n<p>\n\tFor example, the integer <code>0xff00cc</code> is a purple color, while <code>0x770000</code> is a dark red.\n\tSeveral <code>GBufferedImage</code> methods will also let you represent colors as hex strings such as <code>\"#ff00cc\"</code> instead of as integers.\n\tString colors are always converted to integer colors internally by calling the <code>GWindow</code> function <a href=\"gwindow.html#Function:convertColorToRGB\"><code>convertColorToRGB</code></a>.\n\tTherefore some common color names like <code>&quot;black&quot;</code> can be passed successfully in lieu of the usual hex format; see that function for more details.\n</p>\n\n<p>\n\tThough the x, y, width, and height parameters to the constructor and several methods are received as type <code>double</code> for maximum compatibility with other classes in this library, they should be thought of as integer coordinates.\n\tAny real numbers passed will be internally truncated into integers by discarding any fractional component (by type-casting from <code>double</code> to <code>int</code>).\n</p>\n\n<p>\n\tNote that per-pixel graphics operations using the Stanford C++ library are relatively slow.\n\tA call to the <code>fill</code> method is relatively efficient, and a call to <code>getRGB</code> is also efficient since pixels' colors are cached locally.\n\tBut calling <code>setRGB</code> repeatedly over a large range of pixels is likely to yield poor performance.\n\tThis is due to the fact that the graphics are implemented using a background Java process to which all graphical commands are forwarded.\n\tThe <code>GBufferedImage</code> class is not performant enough to be used for rapidly advancing animations or extremely complex graphical effects.\n\tIt also does not provide any drawing primitives other than filling individual pixels.\n</p>\n\n<p class=\"since\">\n\tAvailable since: 2014/08/04 version of C++ library\n</p>\n\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Constructors</td></tr>\n<tr><td class=indexKey><a href=\"#Constructor:GBufferedImage\">GBufferedImage()</a><br>\n<a href=\"#Constructor:GBufferedImage\">GBufferedImage(<var>width</var>,&nbsp;<var>height</var>)</a><br>\n<a href=\"#Constructor:GBufferedImage\">GBufferedImage(<var>x</var>,&nbsp;<var>y</var>,&nbsp;<var>width</var>,&nbsp;<var>height</var>)</a><br>\n<a href=\"#Constructor:GBufferedImage\">GBufferedImage(<var>x</var>,&nbsp;<var>y</var>,&nbsp;<var>width</var>,&nbsp;<var>height</var>,&nbsp;<var>rgb</var>)</a>&nbsp;</td><td class=indexSynopsis width=100%>Constructs an image with the specified location, size, and optional background color (default black).</td></tr>\n<tr><td class=indexHead colspan=2>Methods</td></tr>\n<tr><td class=indexKey><a href=\"#Method:clear\">clear()</a></td><td class=indexSynopsis width=100%>Sets the color of every pixel in the image to its default color.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:createRgbPixel\">createRgbPixel(<var>r</var>,&nbsp;<var>g</var>,&nbsp;<var>b</var>)</a></td><td class=indexSynopsis width=100%>Creates and returns a single RGB integer from the given R-G-B components from 0-255.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:fill\">fill(<var>rgb</var>)</a></td><td class=indexSynopsis width=100%>Sets the color of every pixel in the image.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:fillRegion\">fillRegion(<var>x</var>,&nbsp;<var>y</var>,&nbsp;<var>width</var>,&nbsp;<var>height</var>,&nbsp;<var>rgb</var>)</a></td><td class=indexSynopsis width=100%>Sets the color of every pixel in the given rectangular range of the image.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:fromGrid\">fromGrid(<var>grid</var>)</a></td><td class=indexSynopsis width=100%>Replaces the entire contents of this image with the contents of the given grid of RGB pixel values.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:getBlue\">getBlue(<var>rgb</var>)</a></td><td class=indexSynopsis width=100%>Returns the blue component of the given R-G-B integer from 0-255.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:getGreen\">getGreen(<var>rgb</var>)</a></td><td class=indexSynopsis width=100%>Returns the green component of the given R-G-B integer from 0-255.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:getHeight\">getHeight()</a></td><td class=indexSynopsis width=100%>Returns the height of the image in pixels.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:getRed\">getRed(<var>rgb</var>)</a></td><td class=indexSynopsis width=100%>Returns the red component of the given R-G-B integer from 0-255.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:getRedGreenBlue\">getRedGreenBlue(<var>rgb</var>,&nbsp;<var>r</var>,&nbsp;<var>g</var>,&nbsp;<var>b</var>)</a></td><td class=indexSynopsis width=100%>Extracts the red, green, and blue components from 0-255 of the given RGB integer, filling by reference.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:getRGB\">getRGB(<var>x</var>,&nbsp;<var>y</var>)</a></td><td class=indexSynopsis width=100%>Returns the color of the pixel at the given x/y coordinates of the image as an integer.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:getRGBString\">getRGBString(<var>x</var>,&nbsp;<var>y</var>)</a></td><td class=indexSynopsis width=100%>Returns the color of the pixel at the given x/y coordinates of the image as a string.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:getWidth\">getWidth()</a></td><td class=indexSynopsis width=100%>Returns the width of the image in pixels.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:inBounds\">inBounds(<var>x</var>, <var>y</var>)</a></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the given x/y pixel is within the range of this image.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:load\">load(<var>filename</var>)</a></td><td class=indexSynopsis width=100%>Reads the image data from the given file.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:resize\">resize(<var>width</var>,&nbsp;<var>height</var>)<br>resize(<var>width</var>,&nbsp;<var>height</var>,&nbsp;<var>retain</var>)</a></td><td class=indexSynopsis width=100%>Changes the image's size.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:save\">save(<var>filename</var>)</a></td><td class=indexSynopsis width=100%>Writes the image data to the given file.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:setRGB\">setRGB(<var>x</var>,&nbsp;<var>y</var>,&nbsp;<var>rgb</var>)</a></td><td class=indexSynopsis width=100%>Sets the color of the pixel at the given x/y coordinates of the image to the given value.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:toGrid\">toGrid()<br>toGrid(<var>grid</var>)</a></td><td class=indexSynopsis width=100%>Converts this image into a grid of RGB pixels.</td></tr>\n</table>\n\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:GBufferedImage\"></a>\n<pre class=detailCode>\nGBufferedImage();\nGBufferedImage(double width, double height);\nGBufferedImage(double x, double y, double width, double height);\nGBufferedImage(double x, double y, double width, double height, int rgb);\nGBufferedImage(double x, double y, double width, double height, string rgb);\n</pre>\n<div class=detailHTML>\nConstructs an image with the specified location, size, and optional RGB background color.\nIf no size is passed, the default size of 0x0 pixels is used\nIf no location is passed, the default of (x=0, y=0) is used.\nIf no background color is passed, the default of black is used (integer RGB representation: 0x000000).\n\n<p>Throws an error if the given width/height ranges are negative. <br />\nThrows an error if the given rgb value is invalid or out of range.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGBufferedImage* img = new GBufferedImage(width, height);\nGBufferedImage* img = new GBufferedImage(x, y, width, height);\nGBufferedImage* img = new GBufferedImage(x, y, width, height, rgb);\n</pre>\n<hr>\n</table>\n\n<h2>Method detail</h2>\n\n<hr>\n<a name=\"Method:clear\"></a>\n<pre class=detailCode>\nvoid clear();\n</pre>\n<div class=detailHTML>\nSets the color of every pixel in the image to its default background color value (the one that was passed to the constructor).\nIf no fill color value was passed to the constructor, this sets every pixel to black (0x0).\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nimg-&gt;clear();\n</pre>\n\n<hr>\n<a name=\"Method:createRgbPixel\"></a>\n<pre class=detailCode>\nstatic int createRgbPixel(int red, int green, int blue);\n</pre>\n<div class=detailHTML>\nCreates a single RGB integer from the given R-G-B components from 0-255.\nIf any of red, green, or blue is not between 0-255 inclusive, throws an error.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint px = GBufferedImage::createRgbPixel(r, g, b);\n</pre>\n\n<hr>\n<a name=\"Method:fill\"></a>\n<pre class=detailCode>\nvoid fill(int rgb);\nvoid fill(string rgb);\n</pre>\n<div class=detailHTML>\nSets the color of every pixel in the image to the given color value.\n\n<p>Throws an error if the given rgb value is not a valid color.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint rgb = 0xff00cc;\nimg-&gt;fill(rgb);\n</pre>\n\n<hr>\n<a name=\"Method:fillRegion\"></a>\n<pre class=detailCode>\nvoid fillRegion(double x, double y, double width, double height, int rgb);\nvoid fillRegion(double x, double y, double width, double height, string rgb);\n</pre>\n<div class=detailHTML>\nSets the color of every pixel in the given rectangular range of the image to the given color value.\nSpecifically, the pixels in the rectangular range (x, y) through (x + width - 1, y + height - 1)\nbecome filled with the given color.\n\n<p>Throws an error if the given x/y/width/height range goes outside the bounds of the image. <br />\nThrows an error if the given rgb value is not a valid color.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint rgb = 0xff00cc;\nimg-&gt;fillRegion(x, y, width, height, rgb);\n</pre>\n\n<hr>\n<a name=\"Method:fromGrid\"></a>\n<pre class=detailCode>\nvoid fromGrid(const Grid&lt;int&gt;&amp; grid);\n</pre>\n<div class=detailHTML>\nReplaces the entire contents of this image with the contents of the\ngiven grid of RGB pixel values.\nIf this image is not the same size as the grid, the image is resized.\nAny existing contents of the image are lost.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nimg-&gt;fromGrid(grid);\n</pre>\n<p class=\"since\">\n\tAvailable since: 2015/08/12 version of C++ library\n</p>\n\n<hr>\n<a name=\"Method:getBlue\"></a>\n<pre class=detailCode>\nstatic int getBlue(int rgb);\n</pre>\n<div class=detailHTML>\nReturns the blue component of the given R-G-B integer from 0-255.\nThe blue component comes from bits 0-7 (least significant) of the integer.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint blue = GBufferedImage::getBlue(rgb);\n</pre>\n\n<hr>\n<a name=\"Method:getGreen\"></a>\n<pre class=detailCode>\nstatic int getGreen(int rgb);\n</pre>\n<div class=detailHTML>\nReturns the green component of the given R-G-B integer from 0-255.\nThe green component comes from bits 8-15 of the integer.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint green = GBufferedImage::getGreen(rgb);\n</pre>\n\n<hr>\n<a name=\"Method:getHeight\"></a>\n<pre class=detailCode>\ndouble getHeight() const;\n</pre>\n<div class=detailHTML>\nReturns the height of the image in pixels.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble height = img-&gt;getHeight();\n</pre>\n\n<hr>\n<a name=\"Method:getRed\"></a>\n<pre class=detailCode>\nstatic int getRed(int rgb);\n</pre>\n<div class=detailHTML>\nReturns the red component of the given R-G-B integer from 0-255.\nThe red component comes from bits 16-23 of the integer.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint red = GBufferedImage::getRed(rgb);\n</pre>\n\n<hr>\n<a name=\"Method:getRedGreenBlue\"></a>\n<pre class=detailCode>\nstatic void getRedGreenBlue(int rgb, int&amp; red, int&amp; green, int&amp; blue);\n</pre>\n<div class=detailHTML>\nExtracts the red, green, and blue components from 0-255\nof the given RGB integer, filling by reference.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint red, green, blue;\nGBufferedImage::getRedGreenBlue(rgb, red, green, blue);\n</pre>\n\n<hr>\n<a name=\"Method:getRGB\"></a>\n<pre class=detailCode>\nint getRGB(double x, double y) const;\n</pre>\n<div class=detailHTML>\nReturns the color of the pixel at the given x/y coordinates of the image as an integer such as 0xff00cc.\n\n<p>Throws an error if the given x/y values are out of bounds.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint rgb = img-&gt;getRGB(x, y);\n</pre>\n\n<hr>\n<a name=\"Method:getRGBString\"></a>\n<pre class=detailCode>\nstring getRGBString(double x, double y) const;\n</pre>\n<div class=detailHTML>\nReturns the color of the pixel at the given x/y coordinates of the image as a string such as \"#ff00cc\".\nThe string that is returned comes from the <code>GWindow</code> function <code>convertRGBToColor</code>; see documentation of that function.\n\n<p>Throws an error if the given x/y values are out of bounds.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring rgb = img-&gt;getRGBString(x, y);\n</pre>\n\n<hr>\n<a name=\"Method:getWidth\"></a>\n<pre class=detailCode>\ndouble getWidth() const;\n</pre>\n<div class=detailHTML>\nReturns the width of the image in pixels.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble width = img-&gt;getWidth();\n</pre>\n\n<hr>\n<a name=\"Method:inBounds\"></a>\n<pre class=detailCode>\nbool inBounds(double x, double y) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the given x/y pixel is within the range of this image.\nThis will be the case if the coordinates are between (0, 0) and (width-1, height-1) inclusive when cast to integers.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (img-&gt;inBounds(x, y)) {\n    ...\n}\n</pre>\n\n<hr>\n<a name=\"Method:load\"></a>\n<pre class=detailCode>\nvoid load(string filename);\n</pre>\n<div class=detailHTML>\nReads the image data from the given file.\nThe exact type of image is based on the file's name and extension.\nThis implementation delegates to Java's <code>ImageIO.read</code> method; see documentation of that method for more details about supported image formats.\nNote that loading an image could change its width/height if the size of the image in the file doesn't match the prior size of the image object.\nThis function throws an error if the image file does not exist or is unable to be read as a valid image.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nimg-&gt;load(filename);\n</pre>\n\n<p class=\"since\">\n\tAvailable since: 2014/10/22 version of C++ library\n</p>\n\n<hr>\n<a name=\"Method:resize\"></a>\n<pre class=detailCode>\nvoid resize(int width, int height, bool retain = false);\n</pre>\n<div class=detailHTML>\nChanges the image's size to be the given width and height in pixels.\nIf the <code>retain</code> parameter is omitted or <code>true</code>, this retains any existing pixel data and crops to the given width/height if necessary.\nIf the <code>retain</code> parameter is passed as <code>false</code>, this discards any existing pixel colors and resets them to the original value that was passed as the background color of the image upon construction, or black (0x0) if no color was passed to the constructor.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nimg-&gt;resize(width, height);\n</pre>\n\n<hr>\n<a name=\"Method:save\"></a>\n<pre class=detailCode>\nvoid save(string filename) const;\n</pre>\n<div class=detailHTML>\nWrites the image data to the given file.\nThe exact type of image saved is based on the file name and extension you provide.\nThis implementation delegates to Java's <code>ImageIO.write</code> method; see documentation of that method for more details about supported image formats.\nThis function throws an error if the image file is unable to be written.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nimg-&gt;save(filename);\n</pre>\n\n<p class=\"since\">\n\tAvailable since: 2014/10/22 version of C++ library\n</p>\n\n<hr>\n<a name=\"Method:setRGB\"></a>\n<pre class=detailCode>\nvoid setRGB(double x, double y, int rgb);\nvoid setRGB(double x, double y, std::string rgb);\n</pre>\n<div class=detailHTML>\nSets the color of the pixel at the given x/y coordinates of the image to the given value.\n\n<p>\nImplementation/performance note: Each call to this method produces a call to the Java graphical back-end.\nCalling this method many times in a tight loop can lead to poor performance.\nIf you need to fill a large rectangular region, consider calling fill or fillRegion instead.\n</p>\n\n<p>Throws an error if the given x/y values are out of bounds. <br />\nThrows an error if the given rgb value is not a valid color.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nimg-&gt;setRGB(x, y, rgb);\n</pre>\n\n<hr>\n<a name=\"Method:toGrid\"></a>\n<pre class=detailCode>\nGrid&lt;int&gt; toGrid() const;\nvoid toGrid(Grid&lt;int&gt;&amp; grid) const;\n</pre>\n<div class=detailHTML>\nConverts this image into a grid of RGB pixels.\nThe grid's first index is a row or y-index, and its second index\nis the column or x-index.\nSo for example, <code>grid[y][x]</code> returns the RGB int value at pixel (x, y).\nThe grid can either be returned or filled by reference.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGrid&lt;int&gt; grid = img-&gt;toGrid();   // first version\n\nGrid&lt;int&gt; grid;\nimg-&gt;toGrid(grid);                // second version\n</pre>\n\n<p class=\"since\">\n\tAvailable since: 2015/08/12 version of C++ library\n</p>\n\n<hr>\n\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GBufferedImage-class.html",
    "content": "<html>\n\t<head>\n\t\t<meta http-equiv=\"Refresh\" content=\"0; url=doxygen/classGCanvas.html\">\n\t</head>\n\t\n\t<body>\n\t\t<p>\n\t\t\tThis page has moved to <a href=\"doxygen/classGCanvas.html\">.\n\t\t\tClick this link if you are not redirected automatically.\n\t\t</p>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GButton-class-old.html",
    "content": "<html>\n<head>\n<title>GButton</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"ginteractors.html\">#include \"ginteractors.h\"</a></div>\n<h1 class=header><code>class GButton : public <a href=\"GInteractor-class.html\">GInteractor</a></code></h1>\nThis interactor subclass represents an onscreen button.  The following\nprogram displays a button that, when pressed, generates the message\n&ldquo;Please do not press this button again&rdquo;\n(with thanks to Douglas Adams&rsquo;s <i>Hitchhiker&rsquo;s\nGuide to the Galaxy</i>):\n\n<pre>\n   int main() {\n      GWindow gw;\n      GButton* button = new GButton(\"RED\");\n      gw.addToRegion(button, \"SOUTH\");\n      while (true) {\n         GEvent e = waitForEvent(ACTION_EVENT | CLICK_EVENT);\n         if (e.getEventType() == MOUSE_CLICKED) break;\n         cout &lt;&lt; &quot;Please do not press this button again.&quot; &lt;&lt; endl;\n      }\n      return 0;\n   }\n</pre>\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Constructor</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Constructor:GButton\">GButton(<var>label</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a <code>GButton</code> with the specified label.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:GButton\"></a>\n<pre class=detailCode>\nGButton(string label);\n</pre>\n<div class=detailHTML>\nCreates a <code>GButton</code> with the specified label.  This\nconstructor also sets the action command for the button to the\nlabel string.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGButton* button = new GButton(label);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GButton-class.html",
    "content": "<html>\n\t<head>\n\t\t<meta http-equiv=\"Refresh\" content=\"0; url=doxygen/classGButton.html\">\n\t</head>\n\t\n\t<body>\n\t\t<p>\n\t\t\tThis page has moved to <a href=\"doxygen/classGButton.html\">.\n\t\t\tClick this link if you are not redirected automatically.\n\t\t</p>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GCheckBox-class-old.html",
    "content": "<html>\n<head>\n<title>GCheckBox</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"ginteractors.html\">#include \"ginteractors.h\"</a></div>\n<h1 class=header><code>class GCheckBox : public <a href=\"GInteractor-class.html\">GInteractor</a></code></h1>\nThis interactor subclass represents an onscreen check box.  Clicking\nonce on the check box selects it; clicking again removes the selection.\nIf a <code>GCheckBox</code> has an action command, clicking on the box\ngenerates a <code>GActionEvent</code>.\n<p>The display image of a check box is machine-dependent, but the declaration\n\n<pre>\n    GCheckBox* traceBox = new GCheckBox(\"Trace\");\n</pre>\n\ntypically produces a check box that looks something like this:\n\n<p><div class=inset>\n<img src=\"images/GCheckBox.png\" alt=\"GCheckBox\">\n</div>\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Constructor</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Constructor:GCheckBox\">GCheckBox(<var>label</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a <code>GCheckBox</code> with the specified label.</td></tr>\n<tr><td class=indexHead colspan=2>Methods</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:isSelected\">isSelected()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the check box is selected.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setSelected\">setSelected(<var>state</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the state of the check box.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:GCheckBox\"></a>\n<pre class=detailCode>\nGCheckBox(string label);\n</pre>\n<div class=detailHTML>\nCreates a <code>GCheckBox</code> with the specified label.  In contrast\nto the <code>GButton</code> constructor, this constructor does not set\nan action command.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGCheckBox* chkbox = new GCheckBox(label);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:setSelected\"></a>\n<pre class=detailCode>\nvoid setSelected(bool state);\n</pre>\n<div class=detailHTML>\nSets the state of the check box.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nchkbox-&gt;setSelected(state);\n</pre>\n<hr>\n<a name=\"Method:isSelected\"></a>\n<pre class=detailCode>\nbool isSelected();\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the check box is selected.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (chkbox-&gt;isSelected()) ...\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GCheckBox-class.html",
    "content": "<html>\n\t<head>\n\t\t<meta http-equiv=\"Refresh\" content=\"0; url=doxygen/classGCheckBox.html\">\n\t</head>\n\t\n\t<body>\n\t\t<p>\n\t\t\tThis page has moved to <a href=\"doxygen/classGCheckBox.html\">.\n\t\t\tClick this link if you are not redirected automatically.\n\t\t</p>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GChooser-class-old.html",
    "content": "<html>\n<head>\n<title>GChooser</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"ginteractors.html\">#include \"ginteractors.h\"</a></div>\n<h1 class=header><code>class GChooser : public <a href=\"GInteractor-class.html\">GInteractor</a></code></h1>\nThis interactor subclass represents a selectable list.  The\n<code>GChooser</code> constructor creates an empty chooser.\nOnce the chooser has been created, clients can use <code>addItem</code>\nto add the options.  For example, the following code creates a\n<code>GChooser</code> containing the four strings\n<code>\"Small\"</code>, <code>\"Medium\"</code>, <code>\"Large\"</code>,\nand <code>\"X-Large\"</code>:\n\n<pre>\n   GChooser* sizeChooser = new GChooser();\n   sizeChooser->addItem(\"Small\");\n   sizeChooser->addItem(\"Medium\");\n   sizeChooser->addItem(\"Large\");\n   sizeChooser->addItem(\"X-Large\");\n</pre>\n<p>The display image of a <code>GChooser</code> is machine-dependent,\nbut the chooser generated by this code typically looks something like this:\n\n<p><div class=inset>\n<img src=\"images/GChooser.png\" alt=\"GChooser\">\n</div>\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Constructor</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Constructor:GChooser\">GChooser()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a chooser that initially contains no items, which are added using the <code>addItem</code> method.</td></tr>\n<tr><td class=indexHead colspan=2>Methods</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:addItem\">addItem(<var>item</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Adds a new item consisting of the specified string.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getSelectedItem\">getSelectedItem()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the current item selected in the chooser.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setSelectedItem\">setSelectedItem(<var>item</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the chooser so that it shows the specified item.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:GChooser\"></a>\n<pre class=detailCode>\nGChooser();\n</pre>\n<div class=detailHTML>\nCreates a chooser that initially contains no items, which are added\nusing the <code>addItem</code> method.  Assigning an action command\nto the chooser causes it to generate an action event whenever the\nuser selects an item.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGChooser* chooser = new GChooser();\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:addItem\"></a>\n<pre class=detailCode>\nvoid addItem(string item);\n</pre>\n<div class=detailHTML>\nAdds a new item consisting of the specified string.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nchooser-&gt;addItem(item);\n</pre>\n<hr>\n<a name=\"Method:setSelectedItem\"></a>\n<pre class=detailCode>\nvoid setSelectedItem(string item);\n</pre>\n<div class=detailHTML>\nSets the chooser so that it shows the specified item.  If the item\ndoes not exist in the chooser, no change occurs.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nchooser-&gt;setSelectedItem(item);\n</pre>\n<hr>\n<a name=\"Method:getSelectedItem\"></a>\n<pre class=detailCode>\nstring getSelectedItem();\n</pre>\n<div class=detailHTML>\nReturns the current item selected in the chooser.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring item = chooser-&gt;getSelectedItem();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GChooser-class.html",
    "content": "<html>\n\t<head>\n\t\t<meta http-equiv=\"Refresh\" content=\"0; url=doxygen/classGChooser.html\">\n\t</head>\n\t\n\t<body>\n\t\t<p>\n\t\t\tThis page has moved to <a href=\"doxygen/classGChooser.html\">.\n\t\t\tClick this link if you are not redirected automatically.\n\t\t</p>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GCompound-class-old.html",
    "content": "<html>\n<head>\n<title>GCompound</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"gobjects.html\">#include \"gobjects.h\"</a></div>\n<h1 class=header><code>class GCompound : public <a href=\"GObject-class.html\">GObject</a></code></h1>\nThis graphical object subclass consists of a collection\nof other graphical objects.  Once assembled, the internal objects\ncan be manipulated as a unit.  The <code>GCompound</code> keeps\ntrack of its own position, and all items within it are drawn\nrelative to that location.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Constructor</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Constructor:GCompound\">GCompound()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a <code>GCompound</code> object with no internal components.</td></tr>\n<tr><td class=indexHead colspan=2>Methods</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:add\">add(<var>gobj</var>)</a><br>\n<a href=\"#Method:add\">add(<var>gobj</var>,&nbsp;<var>x</var>,&nbsp;<var>y</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Adds a new graphical object to the <code>GCompound</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getElement\">getElement(<var>index</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a pointer to the graphical object at the specified index, numbering from back to front in the the <i>z</i> dimension.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getElementCount\">getElementCount()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the number of graphical objects stored in the <code>GCompound</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:remove\">remove(<var>gobj</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Removes the specified object from the <code>GCompound</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:removeAll\">removeAll()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Removes all graphical objects from the <code>GCompound</code>.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:GCompound\"></a>\n<pre class=detailCode>\nGCompound();\n</pre>\n<div class=detailHTML>\nCreates a <code>GCompound</code> object with no internal components.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGCompound* comp = new GCompound();\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:add\"></a>\n<pre class=detailCode>\nvoid add(GObject* gobj);\nvoid add(GObject* gobj, double x, double y);\n</pre>\n<div class=detailHTML>\nAdds a new graphical object to the <code>GCompound</code>.  The second\nform moves the object to the point (<code>x</code>, <code>y</code>) first.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncomp-&gt;add(gobj);\ncomp-&gt;add(gobj, x, y);\n</pre>\n<hr>\n<a name=\"Method:remove\"></a>\n<pre class=detailCode>\nvoid remove(GObject* gobj);\n</pre>\n<div class=detailHTML>\nRemoves the specified object from the <code>GCompound</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncomp-&gt;remove(gobj);\n</pre>\n<hr>\n<a name=\"Method:removeAll\"></a>\n<pre class=detailCode>\nvoid removeAll();\n</pre>\n<div class=detailHTML>\nRemoves all graphical objects from the <code>GCompound</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncomp-&gt;removeAll();\n</pre>\n<hr>\n<a name=\"Method:getElementCount\"></a>\n<pre class=detailCode>\nint getElementCount();\n</pre>\n<div class=detailHTML>\nReturns the number of graphical objects stored in the\n<code>GCompound</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint n = comp-&gt;getElementCount();\n</pre>\n<hr>\n<a name=\"Method:getElement\"></a>\n<pre class=detailCode>\nGObject* getElement(int index);\n</pre>\n<div class=detailHTML>\nReturns a pointer to the graphical object at the specified index,\nnumbering from back to front in the the <i>z</i> dimension.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGObject* gobj = comp-&gt;getElement(index);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GCompound-class.html",
    "content": "<html>\n\t<head>\n\t\t<meta http-equiv=\"Refresh\" content=\"0; url=doxygen/classGCompound.html\">\n\t</head>\n\t\n\t<body>\n\t\t<p>\n\t\t\tThis page has moved to <a href=\"doxygen/classGCompound.html\">.\n\t\t\tClick this link if you are not redirected automatically.\n\t\t</p>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GDimension-class-old.html",
    "content": "<html>\n<head>\n<title>GDimension</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"gtypes.html\">#include \"gtypes.h\"</a></div>\n<h1 class=header><code>class GDimension</code></h1>\nThis class contains real-valued width and height fields.  It is used\nto indicate the size of a graphical object.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Constructor</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Constructor:GDimension\">GDimension()</a><br>\n<a href=\"#Constructor:GDimension\">GDimension(<var>width</var>,&nbsp;<var>height</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a <code>GDimension</code> object with the specified <code>width</code> and <code>height</code> coordinates.</td></tr>\n<tr><td class=indexHead colspan=2>Methods</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getHeight\">getHeight()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the height component of the <code>GDimension</code> object.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getWidth\">getWidth()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the width component of the <code>GDimension</code> object.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Converts the <code>GDimension</code> to a string in the form <code>\"(</code><i>width</i><code>,</code>&nbsp;<i>height</i><code>)\"</code>.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:GDimension\"></a>\n<pre class=detailCode>\nGDimension();\nGDimension(double width, double height);\n</pre>\n<div class=detailHTML>\nCreates a <code>GDimension</code> object with the specified\n<code>width</code> and <code>height</code> coordinates.  If the\ncoordinates are not supplied, the default constructor sets these\nfields to 0.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGDimension empty;\nGDimension dim(width, height);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:getWidth\"></a>\n<pre class=detailCode>\ndouble getWidth() const;\n</pre>\n<div class=detailHTML>\nReturns the width component of the <code>GDimension</code> object.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble width = dim.getWidth();\n</pre>\n<hr>\n<a name=\"Method:getHeight\"></a>\n<pre class=detailCode>\ndouble getHeight() const;\n</pre>\n<div class=detailHTML>\nReturns the height component of the <code>GDimension</code> object.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble height = dim.getHeight();\n</pre>\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString() const;\n</pre>\n<div class=detailHTML>\nConverts the <code>GDimension</code> to a string in the form\n<code>\"(</code><i>width</i><code>,</code>&nbsp;<i>height</i><code>)\"</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = dim.toString();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GDimension-class.html",
    "content": "<html>\n\t<head>\n\t\t<meta http-equiv=\"Refresh\" content=\"0; url=doxygen/classGDimension.html\">\n\t</head>\n\t\n\t<body>\n\t\t<p>\n\t\t\tThis page has moved to <a href=\"doxygen/classGDimension.html\">.\n\t\t\tClick this link if you are not redirected automatically.\n\t\t</p>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GEvent-class-old.html",
    "content": "<html>\n<head>\n<title>GEvent</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"gevents.html\">#include \"gevents.h\"</a></div>\n<h1 class=header><code>class GEvent</code></h1>\nThis class is the root of the hierarchy for all events.\nThe structure of the <code>GEvent</code> hierarchy looks like this:\n\n<p><div class=inset>\n<img src=\"images/GEventHierarchy.png\"\n     width=558 usemap=\"#GEventMap\" alt=\"GEventHierarchy\">\n</div>\n<map name=\"GEventMap\">\n  <area shape=rect coords=\"0,132,102,159\" href=\"GWindowEvent-class.html\"\n        alt=\"GWindowEvent\">\n  <area shape=rect coords=\"114,132,216,159\" href=\"GActionEvent-class.html\"\n        alt=\"GActionEvent\">\n  <area shape=rect coords=\"228,132,330,159\" href=\"GMouseEvent-class.html\"\n        alt=\"GMouseEvent\">\n  <area shape=rect coords=\"342,132,444,159\" href=\"GKeyEvent-class.html\"\n        alt=\"GKeyEvent\">\n  <area shape=rect coords=\"456,132,558,159\" href=\"GTimerEvent-class.html\"\n        alt=\"GTimerEvent\">\n</map>\n\n<p>The standard paradigm for using <code>GEvent</code> is illustrated\nby the following program, which allows the user to draw lines on the\ngraphics window:\n\n<pre>\n   int main() {\n      GWindow gw;\n      GLine* line;\n      cout &lt;&lt; &quot;This program lets the user draw lines by dragging.&quot; &lt;&lt; endl;\n      while (true) {\n         GMouseEvent e = waitForEvent(MOUSE_EVENT);\n         if (e.getEventType() == MOUSE_PRESSED) {\n            line = new GLine(e.getX(), e.getY(), e.getX(), e.getY());\n            gw.add(line);\n         } else if (e.getEventType() == MOUSE_DRAGGED) {\n            line-&gt;setEndPoint(e.getX(), e.getY());\n         }\n      }\n   }\n</pre>\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Methods</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getEventClass\">getEventClass()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the enumerated type constant indicating the class of the event.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getEventTime\">getEventTime()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the system time in milliseconds at which the event occurred.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getEventType\">getEventType()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the enumerated type constant corresponding to the specific event type.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getModifiers\">getModifiers()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns an integer whose bits indicate what modifiers are in effect.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:isValid\">isValid()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the event is valid.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setEventTime\">setEventTime(<var>time</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the event time field for this event.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setModifiers\">setModifiers(<var>modifiers</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the modifiers field for this event.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Converts the event to a human-readable representation of the event.</td></tr>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getNextEvent\">getNextEvent(<var>mask</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Checks to see if there are any events of the desired type waiting on the event queue.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:waitForClick\">waitForClick()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Waits for a mouse click in any window, discarding any other events.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:waitForEvent\">waitForEvent(<var>mask</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Dismisses the process until an event occurs whose type is covered by the event mask.</td></tr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:getEventClass\"></a>\n<pre class=detailCode>\nEventClassType getEventClass() const;\n</pre>\n<div class=detailHTML>\nReturns the enumerated type constant indicating the class of the\nevent.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nEventClassType eventClass = e.getEventClass();\n</pre>\n<hr>\n<a name=\"Method:getEventType\"></a>\n<pre class=detailCode>\nEventType getEventType() const;\n</pre>\n<div class=detailHTML>\nReturns the enumerated type constant corresponding to the specific\nevent type.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nEventType type = e.getEventType();\n</pre>\n<hr>\n<a name=\"Method:getEventTime\"></a>\n<pre class=detailCode>\ndouble getEventTime() const;\n</pre>\n<div class=detailHTML>\nReturns the system time in milliseconds at which the event occurred.\nTo ensure portability among systems that represent time in different\nways, the StanfordCPPLib packages use type <code>double</code> to\nrepresent time, which is always encoded as the number of milliseconds\nthat have elapsed since 00:00:00 UTC on January 1, 1970, which is\nthe conventional zero point for computer-based time systems.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble time = e.getEventTime();\n</pre>\n<hr>\n<a name=\"Method:getModifiers\"></a>\n<pre class=detailCode>\nint getModifiers() const;\n</pre>\n<div class=detailHTML>\nReturns an integer whose bits indicate what modifiers are in effect.\nTo check whether the shift key is down, for example, one could use\nthe following code:\n\n<pre>\n   if (e.getModifiers() & SHIFT_DOWN) ...\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint modifiers = e.getModifiers();\n</pre>\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString() const;\n</pre>\n<div class=detailHTML>\nConverts the event to a human-readable representation of the event.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = e.toString();\n</pre>\n<hr>\n<a name=\"Method:isValid\"></a>\n<pre class=detailCode>\nbool isValid();\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the event is valid.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (e.isValid()) ...\n</pre>\n<hr>\n<a name=\"Method:setEventTime\"></a>\n<pre class=detailCode>\nvoid setEventTime(double time);\n</pre>\n<div class=detailHTML>\nSets the event time field for this event.  The event system needs\naccess to this method, but conventional clients don't.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ne.setEventTime(time);\n</pre>\n<hr>\n<a name=\"Method:setModifiers\"></a>\n<pre class=detailCode>\nvoid setModifiers(int modifiers);\n</pre>\n<div class=detailHTML>\nSets the modifiers field for this event.  The event system needs\naccess to this method, but conventional clients don't.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ne.setModifiers(modifiers);\n</pre>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:waitForClick\"></a>\n<pre class=detailCode>\nvoid waitForClick();\n</pre>\n<div class=detailHTML>\nWaits for a mouse click in any window, discarding any other events.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nwaitForClick();\n</pre>\n<hr>\n<a name=\"Function:waitForEvent\"></a>\n<pre class=detailCode>\nGEvent waitForEvent(int mask = ANY_EVENT);\n</pre>\n<div class=detailHTML>\nDismisses the process until an event occurs whose type is covered by\nthe event mask.  The mask parameter is a combination of the events of\ninterest.  For example, to wait for a mouse event or an action event,\nclients can use the following call:\n\n<pre>\n   e = waitForEvent(MOUSE_EVENT + ACTION_EVENT);\n</pre>\n\nThe <code>mask</code> parameter is optional.  If it is missing,\n<code>waitForEvent</code> accepts any event.\n\n<p>As a more sophisticated example, the following code is the canonical\nevent loop for an animated application that needs to respond to mouse,\nkey, and timer events:\n\n<pre>\n   GTimer timer(ANIMATION_DELAY_IN_MILLISECONDS);\n   timer.start();\n   while (true) {\n      GEvent e = waitForEvent(TIMER_EVENT + MOUSE_EVENT + KEY_EVENT);\n      switch (e.getEventClass()) {\n       case TIMER_EVENT:\n         takeAnimationStep();\n         break;\n       case MOUSE_EVENT:\n         handleMouseEvent(GMouseEvent(e));\n         break;\n       case KEY_EVENT:\n         handleKeyEvent(GKeyEvent(e));\n         break;\n      }\n   }\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGEvent e = waitForEvent(mask);\n</pre>\n<hr>\n<a name=\"Function:getNextEvent\"></a>\n<pre class=detailCode>\nGEvent getNextEvent(int mask = ANY_EVENT);\n</pre>\n<div class=detailHTML>\nChecks to see if there are any events of the desired type waiting on the\nevent queue.  If so, this function returns the event in exactly the same\nfashion as <code>waitForEvent</code>; if not, <code>getNextEvent</code>\nreturns an invalid event.  The <code>mask</code> parameter is optional.\nIf it is missing, <code>getNextEvent</code> accepts any event.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGEvent e = getNextEvent(mask);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GEvent-class.html",
    "content": "<html>\n\t<head>\n\t\t<meta http-equiv=\"Refresh\" content=\"0; url=doxygen/classGEvent.html\">\n\t</head>\n\t\n\t<body>\n\t\t<p>\n\t\t\tThis page has moved to <a href=\"doxygen/classGEvent.html\">.\n\t\t\tClick this link if you are not redirected automatically.\n\t\t</p>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GImage-class-old.html",
    "content": "<html>\n<head>\n<title>GImage</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"gobjects.html\">#include \"gobjects.h\"</a></div>\n<h1 class=header><code>class GImage : public <a href=\"GObject-class.html\">GObject</a></code></h1>\nThis graphical object subclass represents an image from a file.\nFor example, the following code displays a <code>GImage</code>\ncontaining the Stanford tree at the center of the window, assuming\nthat the image file <code>StanfordTree.png</code> exists, either in\nthe current directory or an <code>images</code> subdirectory:\n\n<pre>\n   int main() {\n      GWindow gw;\n      cout &lt;&lt; &quot;This program draws the Stanford tree.&quot; &lt;&lt; endl;\n      GImage* tree = new GImage(&quot;StanfordTree.png&quot;);\n      double x = (gw.getWidth() - tree->getWidth()) / 2;\n      double y = (gw.getHeight() - tree->getHeight()) / 2;\n      gw.add(tree, x, y);\n      return 0;\n   }\n</pre>\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Constructor</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Constructor:GImage\">GImage(<var>filename</var>)</a><br>\n<a href=\"#Constructor:GImage\">GImage(<var>filename</var>,&nbsp;<var>x</var>,&nbsp;<var>y</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Constructs a new image by loading the image from the specified file, which is either in the current directory or a subdirectory named <code>images</code>.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:GImage\"></a>\n<pre class=detailCode>\nGImage(string filename);\nGImage(string filename, double x, double y);\n</pre>\n<div class=detailHTML>\nConstructs a new image by loading the image from the specified\nfile, which is either in the current directory or a subdirectory named\n<code>images</code>.  By default, the upper left corner of the image\nappears at the origin; the second form automatically sets the location\nto the point (<code>x</code>, <code>y</code>).\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGImage* image = new GImage(filename);\nGImage* image = new GImage(filename, x, y);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GImage-class.html",
    "content": "<html>\n\t<head>\n\t\t<meta http-equiv=\"Refresh\" content=\"0; url=doxygen/classGImage.html\">\n\t</head>\n\t\n\t<body>\n\t\t<p>\n\t\t\tThis page has moved to <a href=\"doxygen/classGImage.html\">.\n\t\t\tClick this link if you are not redirected automatically.\n\t\t</p>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GInteractor-class-old.html",
    "content": "<html>\n<head>\n<title>GInteractor</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"ginteractors.html\">#include \"ginteractors.h\"</a></div>\n<h1 class=header><code>class GInteractor : public <a href=\"GObject-class.html\">GObject</a></code></h1>\nThis abstract class is the superclass for all graphical interactors.\nIn most applications, interactors will be added to a control strip\nalong one of the sides of the <code>GWindow</code>, but they can\nalso be placed in specific positions just like any other\n<code>GObject</code>.\nThe structure of the <code>GInteractor</code> hierarchy looks like this:\n\n<p><div class=inset>\n<img src=\"images/GInteractorHierarchy.png\"\n<img src=\"images/GInteractorHierarchy.png\"\n     width=513 usemap=\"#GInteractorMap\" alt=\"GInteractorHierarchy\">\n</div>\n<map name=\"GInteractorMap\">\n  <area shape=rect coords=\"210,0,303,27\" href=\"GObject-class.html\"\n        alt=\"GObject\">\n  <area shape=rect coords=\"0,219,93,246\" href=\"GButton-class.html\"\n        alt=\"GButton\">\n  <area shape=rect coords=\"105,219,198,246\" href=\"GCheckBox-class.html\"\n        alt=\"GCheckBox\">\n  <area shape=rect coords=\"210,219,303,246\" href=\"GChooser-class.html\"\n        alt=\"GChooser\">\n  <area shape=rect coords=\"315,219,408,246\" href=\"GSlider-class.html\"\n        alt=\"GSlider\">\n  <area shape=rect coords=\"420,219,513,246\" href=\"GTextField-class.html\"\n        alt=\"GTextField\">\n</map>\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Methods</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getActionCommand\">getActionCommand()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the action command associated with the interactor.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setActionCommand\">setActionCommand(<var>cmd</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the action command to the indicated string.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setBounds\">setBounds(<var>rect</var>)</a><br>\n<a href=\"#Method:setBounds\">setBounds(<var>x</var>,&nbsp;<var>y</var>,&nbsp;<var>width</var>,&nbsp;<var>height</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Changes the bounds of the interactor to the specified values.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setSize\">setSize(<var>size</var>)</a><br>\n<a href=\"#Method:setSize\">setSize(<var>width</var>,&nbsp;<var>height</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Changes the size of the interactor to the specified width and height.</td></tr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:setActionCommand\"></a>\n<pre class=detailCode>\nvoid setActionCommand(string cmd);\n</pre>\n<div class=detailHTML>\nSets the action command to the indicated string.  If the string is not\nempty, activating the interactor generates a <code>GActionEvent</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ninteractor.setActionCommand(cmd);\n</pre>\n<hr>\n<a name=\"Method:getActionCommand\"></a>\n<pre class=detailCode>\nstring getActionCommand();\n</pre>\n<div class=detailHTML>\nReturns the action command associated with the interactor.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring cmd = interactor.getActionCommand();\n</pre>\n<hr>\n<a name=\"Method:setSize\"></a>\n<pre class=detailCode>\nvoid setSize(const GDimension &amp; size);\nvoid setSize(double width, double height);\n</pre>\n<div class=detailHTML>\nChanges the size of the interactor to the specified width and height.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ninteractor.setSize(size);\ninteractor.setSize(width, height);\n</pre>\n<hr>\n<a name=\"Method:setBounds\"></a>\n<pre class=detailCode>\nvoid setBounds(const GRectangle &amp; size);\nvoid setBounds(double x, double y, double width, double height);\n</pre>\n<div class=detailHTML>\nChanges the bounds of the interactor to the specified values.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ninteractor.setBounds(rect);\ninteractor.setBounds(x, y, width, height);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GInteractor-class.html",
    "content": "<html>\n\t<head>\n\t\t<meta http-equiv=\"Refresh\" content=\"0; url=doxygen/classGInteractor.html\">\n\t</head>\n\t\n\t<body>\n\t\t<p>\n\t\t\tThis page has moved to <a href=\"doxygen/classGInteractor.html\">.\n\t\t\tClick this link if you are not redirected automatically.\n\t\t</p>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GKeyEvent-class-old.html",
    "content": "<html>\n<head>\n<title>GKeyEvent</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"gevents.html\">#include \"gevents.h\"</a></div>\n<h1 class=header><code>class GKeyEvent : public <a href=\"GEvent-class.html\">GEvent</a></code></h1>\nThis event subclass represents a key event.  Each key event records\nthe event type along with two representations of the key.  The\n<code>getKeyChar</code> function is more generally useful and\nreturns the character after taking into account modifier keys.\nThe <code>getKeyCode</code> function returns an integer identifying\nthe key, which can be a function key as well as a standard key.\nThe codes return by <code>getKeyCode</code> are listed in the\n<code>KeyCodes</code> enumeration.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Constructor</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Constructor:GKeyEvent\">GKeyEvent(<var>type</var>,&nbsp;<var>gw</var>,&nbsp;<var>keyChar</var>,&nbsp;<var>keyCode</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a <code>GKeyEvent</code> using the specified parameters.</td></tr>\n<tr><td class=indexHead colspan=2>Methods</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getGWindow\">getGWindow()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the graphics window in which this event occurred.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getKeyChar\">getKeyChar()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the character represented by the keystroke, taking the modifier keys into account.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getKeyCode\">getKeyCode()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the integer code associated with the key in the event.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Converts the event to a human-readable representation of the event.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:GKeyEvent\"></a>\n<pre class=detailCode>\nGKeyEvent(EventType type, const GWindow&amp; gw, int keyChar, int keyCode);\n</pre>\n<div class=detailHTML>\nCreates a <code>GKeyEvent</code> using the specified parameters.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGKeyEvent keyEvent(type, gw, keyChar, keyCode);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:getGWindow\"></a>\n<pre class=detailCode>\nGWindow getGWindow() const;\n</pre>\n<div class=detailHTML>\nReturns the graphics window in which this event occurred.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGWindow gw = e.getGWindow();\n</pre>\n<hr>\n<a name=\"Method:getKeyChar\"></a>\n<pre class=detailCode>\nchar getKeyChar() const;\n</pre>\n<div class=detailHTML>\nReturns the character represented by the keystroke, taking the modifier\nkeys into account.  For example, if the user types the <code>'a'</code>\nkey with the shift key down, <code>getKeyChar</code> will return\n<code>'A'</code>.  If the key code in the event does not correspond\nto a character, <code>getKeyChar</code> returns the null character.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nchar ch = e.getKeyChar();\n</pre>\n<hr>\n<a name=\"Method:getKeyCode\"></a>\n<pre class=detailCode>\nint getKeyCode() const;\n</pre>\n<div class=detailHTML>\nReturns the integer code associated with the key in the event.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint key = getKeyCode();\n</pre>\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString() const;\n</pre>\n<div class=detailHTML>\nConverts the event to a human-readable representation of the event.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = e.toString();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GKeyEvent-class.html",
    "content": "<html>\n\t<head>\n\t\t<meta http-equiv=\"Refresh\" content=\"0; url=doxygen/classGEvent.html\">\n\t</head>\n\t\n\t<body>\n\t\t<p>\n\t\t\tThis page has moved to <a href=\"doxygen/classGEvent.html\">.\n\t\t\tClick this link if you are not redirected automatically.\n\t\t</p>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GLabel-class-old.html",
    "content": "<html>\n<head>\n<title>GLabel</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"gobjects.html\">#include \"gobjects.h\"</a></div>\n<h1 class=header><code>class GLabel : public <a href=\"GObject-class.html\">GObject</a></code></h1>\nThis graphical object subclass represents a text string.  For\nexample, the following code adds a <code>GLabel</code> containing\nthe string <code>\"hello, world\"</code> to the center of the window:\n\n<pre>\n   int main() {\n      GWindow gw;\n      cout &lt;&lt; &quot;This program draws the 'hello, world' message.&quot; &lt;&lt; endl;\n      GLabel* label = new GLabel(&quot;hello, world&quot;);\n      label-&gt;setFont(&quot;SansSerif-18&quot;);\n      double x = (gw.getWidth() - label->getWidth()) / 2;\n      double y = (gw.getHeight() + label->getFontAscent()) / 2;\n      gw.add(label, x, y);\n      return 0;\n   }\n</pre>\n\nControlling the appearance and positioning of a <code>GLabel</code>\ndepends on understanding the following terms:\n\n<p><ul>\n  <li>The <b><i>baseline</i></b> is the horizontal line on which the\n      characters rest.\n  <li>The <b><i>origin</i></b> is the point on the baseline at which\n      the label begins.\n  <li>The <b><i>height</i></b> is the distance that separate two\n      successive lines.\n  <li>The <b><i>ascent</i></b> is the maximum distance a character\n      in this font extends above the baseline.\n  <li>The <b><i>descent</i></b> is the maximum distance a character\n      in this font extends below the baseline.\n</ul>\n<p>The following diagram illustrates the interpretation of these terms:\n\n<p><div class=inset>\n<img src=\"images/GLabelGeometry.png\" width=625 alt=\"GLabelGeometry\">\n</div>\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Constructor</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Constructor:GLabel\">GLabel(<var>str</var>)</a><br>\n<a href=\"#Constructor:GLabel\">GLabel(<var>str</var>,&nbsp;<var>x</var>,&nbsp;<var>y</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a <code>GLabel</code> object containing the specified string.</td></tr>\n<tr><td class=indexHead colspan=2>Methods</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getFont\">getFont()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the current font for the <code>GLabel</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getFontAscent\">getFontAscent()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the maximum distance strings in this font extend above the baseline.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getFontDescent\">getFontDescent()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the maximum distance strings in this font descend below the baseline.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getLabel\">getLabel()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the string displayed by this object.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setFont\">setFont(<var>font</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Changes the font used to display the <code>GLabel</code> as specified by the string <code>font</code>, which has the following format:  <pre>    family-style-size </pre>  where both <code>style</code> and <code>size</code> are optional.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setLabel\">setLabel(<var>str</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Changes the string stored within the <code>GLabel</code> object, so that a new text string appears on the display.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:GLabel\"></a>\n<pre class=detailCode>\nGLabel(string str);\nGLabel(string str, double x, double y);\n</pre>\n<div class=detailHTML>\nCreates a <code>GLabel</code> object containing the specified string.\nBy default, the baseline of the first character appears at the origin;\nthe second form automatically resets the location of the\n<code>GLabel</code> to the point (<code>x</code>, <code>y</code>).\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGLabel* label = new GLabel(str);\nGLabel* label = new GLabel(str, x, y);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:setFont\"></a>\n<pre class=detailCode>\nvoid setFont(string font);\n</pre>\n<div class=detailHTML>\nChanges the font used to display the <code>GLabel</code> as specified by\nthe string <code>font</code>, which has the following format:\n\n<pre>\n   family-style-size\n</pre>\n\nwhere both <code>style</code> and <code>size</code> are optional.\nIf any of these elements are missing or specified as an asterisk,\nthe existing value is retained.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlabel-&gt;setFont(font);\n</pre>\n<hr>\n<a name=\"Method:getFont\"></a>\n<pre class=detailCode>\nstring getFont() const;\n</pre>\n<div class=detailHTML>\nReturns the current font for the <code>GLabel</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring font = label-&gt;getFont();\n</pre>\n<hr>\n<a name=\"Method:setLabel\"></a>\n<pre class=detailCode>\nvoid setLabel(string str);\n</pre>\n<div class=detailHTML>\nChanges the string stored within the <code>GLabel</code> object, so that\na new text string appears on the display.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlabel-&gt;setLabel(str);\n</pre>\n<hr>\n<a name=\"Method:getLabel\"></a>\n<pre class=detailCode>\nstring getLabel() const;\n</pre>\n<div class=detailHTML>\nReturns the string displayed by this object.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = label-&gt;getLabel();\n</pre>\n<hr>\n<a name=\"Method:getFontAscent\"></a>\n<pre class=detailCode>\ndouble getFontAscent() const;\n</pre>\n<div class=detailHTML>\nReturns the maximum distance strings in this font extend above\nthe baseline.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble ascent = label-&gt;getFontAscent();\n</pre>\n<hr>\n<a name=\"Method:getFontDescent\"></a>\n<pre class=detailCode>\ndouble getFontDescent() const;\n</pre>\n<div class=detailHTML>\nReturns the maximum distance strings in this font descend below\nthe baseline.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble descent = label-&gt;getFontDescent();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GLabel-class.html",
    "content": "<html>\n\t<head>\n\t\t<meta http-equiv=\"Refresh\" content=\"0; url=doxygen/classGLabel.html\">\n\t</head>\n\t\n\t<body>\n\t\t<p>\n\t\t\tThis page has moved to <a href=\"doxygen/classGLabel.html\">.\n\t\t\tClick this link if you are not redirected automatically.\n\t\t</p>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GLine-class-old.html",
    "content": "<html>\n<head>\n<title>GLine</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"gobjects.html\">#include \"gobjects.h\"</a></div>\n<h1 class=header><code>class GLine : public <a href=\"GObject-class.html\">GObject</a></code></h1>\nThis graphical object subclass represents a line segment.  For\nexample, the following code adds lines that mark the diagonals\nof the graphics window:\n\n<pre>\n   int main() {\n      GWindow gw;\n      cout &lt;&lt; &quot;This program draws the diagonals on the window.&quot; &lt;&lt; endl;\n      gw.add(new GLine(0, 0, gw.getWidth(), gw.getHeight()));\n      gw.add(new GLine(0, gw.getHeight(), gw.getWidth(), 0));\n      return 0;\n   }\n</pre>\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Constructor</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Constructor:GLine\">GLine(<var>x0</var>,&nbsp;<var>y0</var>,&nbsp;<var>x1</var>,&nbsp;<var>y1</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Constructs a line segment from its endpoints.</td></tr>\n<tr><td class=indexHead colspan=2>Methods</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getEndPoint\">getEndPoint()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the point at which the line ends.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getStartPoint\">getStartPoint()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the point at which the line starts.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setEndPoint\">setEndPoint(<var>x</var>,&nbsp;<var>y</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the end point in the line to (<code>x</code>,&nbsp;<code>y</code>), leaving the start point unchanged.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setStartPoint\">setStartPoint(<var>x</var>,&nbsp;<var>y</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the initial point in the line to (<code>x</code>,&nbsp;<code>y</code>), leaving the end point unchanged.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:GLine\"></a>\n<pre class=detailCode>\nGLine(double x0, double y0, double x1, double y1);\n</pre>\n<div class=detailHTML>\nConstructs a line segment from its endpoints.  The point\n(<code>x0</code>,&nbsp;<code>y0</code>) defines the start of the\nline and the point (<code>x1</code>,&nbsp;<code>y1</code>) defines\nthe end.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGLine* gline = new GLine(x0, y0, x1, y1);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:setStartPoint\"></a>\n<pre class=detailCode>\nvoid setStartPoint(double x, double y);\n</pre>\n<div class=detailHTML>\nSets the initial point in the line to (<code>x</code>,&nbsp;<code>y</code>),\nleaving the end point unchanged.  This method is therefore different from\n<code>setLocation</code>, which moves both components of the line segment.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nline-&gt;setStartPoint(x, y);\n</pre>\n<hr>\n<a name=\"Method:getStartPoint\"></a>\n<pre class=detailCode>\nGPoint getStartPoint() const;\n</pre>\n<div class=detailHTML>\nReturns the point at which the line starts.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGPoint pt = line-&gt;getStartPoint();\n</pre>\n<hr>\n<a name=\"Method:setEndPoint\"></a>\n<pre class=detailCode>\nvoid setEndPoint(double x, double y);\n</pre>\n<div class=detailHTML>\nSets the end point in the line to (<code>x</code>,&nbsp;<code>y</code>),\nleaving the start point unchanged.  This method is therefore different from\n<code>setLocation</code>, which moves both components of the line segment.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nline-&gt;setEndPoint(x, y);\n</pre>\n<hr>\n<a name=\"Method:getEndPoint\"></a>\n<pre class=detailCode>\nGPoint getEndPoint() const;\n</pre>\n<div class=detailHTML>\nReturns the point at which the line ends.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGPoint pt = line-&gt;getEndPoint();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GLine-class.html",
    "content": "<html>\n\t<head>\n\t\t<meta http-equiv=\"Refresh\" content=\"0; url=doxygen/classGLine.html\">\n\t</head>\n\t\n\t<body>\n\t\t<p>\n\t\t\tThis page has moved to <a href=\"doxygen/classGLine.html\">.\n\t\t\tClick this link if you are not redirected automatically.\n\t\t</p>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GMouseEvent-class-old.html",
    "content": "<html>\n<head>\n<title>GMouseEvent</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"gevents.html\">#include \"gevents.h\"</a></div>\n<h1 class=header><code>class GMouseEvent : public <a href=\"GEvent-class.html\">GEvent</a></code></h1>\nThis event subclass represents a mouse event.  Each mouse event\nrecords the event type (<code>MOUSE_PRESSED</code>,\n<code>MOUSE_RELEASED</code>, <code>MOUSE_CLICKED</code>,\n<code>MOUSE_MOVED</code>, <code>MOUSE_DRAGGED</code>) along\nwith the coordinates of the event.  Clicking the mouse generates\nthree events in the following order: <code>MOUSE_PRESSED</code>,\n<code>MOUSE_RELEASED</code>, <code>MOUSE_CLICKED</code>.\n\n<p>As an example, the following program uses mouse events to let\nthe user draw rectangles on the graphics window.  The only\ncomplexity in this code is the use of the library functions\n<code>min</code> and <code>abs</code> to ensure that the\ndimensions of the rectangle are positive.\n\n<pre>\n   int main() {\n      GWindow gw;\n      cout &lt;&lt; &quot;This program lets the user draw rectangles.&quot; &lt;&lt; endl;\n      GRect* rect;\n      double startX;\n      double startY;\n      while (true) {\n         GMouseEvent e = waitForEvent();\n         if (e.getEventType() == MOUSE_PRESSED) {\n            startX = e.getX();\n            startY = e.getY();\n            rect = new GRect(startX, startY, 0, 0);\n            rect-&gt;setFilled(true);\n            gw.add(rect);\n         } else if (e.getEventType() == MOUSE_DRAGGED) {\n            double x = min(e.getX(), startX);\n            double y = min(e.getY(), startY);\n            double width = abs(e.getX() - startX);\n            double height = abs(e.getY() - startY);\n            rect-&gt;setBounds(x, y, width, height);\n         }\n      }\n   }\n</pre>\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Constructor</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Constructor:GMouseEvent\">GMouseEvent(<var>type</var>,&nbsp;<var>gw</var>,&nbsp;<var>x</var>,&nbsp;<var>y</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a <code>GMouseEvent</code> using the specified parameters.</td></tr>\n<tr><td class=indexHead colspan=2>Methods</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getGWindow\">getGWindow()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the graphics window in which this event occurred.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getX\">getX()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the <i>x</i> coordinate at which the event occurred relative to the window origin at the upper left corner of the window.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getY\">getY()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the <i>y</i> coordinate at which the event occurred relative to the window origin at the upper left corner of the window.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Converts the event to a human-readable representation of the event.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:GMouseEvent\"></a>\n<pre class=detailCode>\nGMouseEvent(EventType type, const GWindow&amp; gw, double x, double y);\n</pre>\n<div class=detailHTML>\nCreates a <code>GMouseEvent</code> using the specified parameters.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGMouseEvent mouseEvent(type, gw, x, y);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:getGWindow\"></a>\n<pre class=detailCode>\nGWindow getGWindow() const;\n</pre>\n<div class=detailHTML>\nReturns the graphics window in which this event occurred.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGWindow gw = e.getGWindow();\n</pre>\n<hr>\n<a name=\"Method:getX\"></a>\n<pre class=detailCode>\ndouble getX() const;\n</pre>\n<div class=detailHTML>\nReturns the <i>x</i> coordinate at which the event occurred relative\nto the window origin at the upper left corner of the window.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble x = getX();\n</pre>\n<hr>\n<a name=\"Method:getY\"></a>\n<pre class=detailCode>\ndouble getY() const;\n</pre>\n<div class=detailHTML>\nReturns the <i>y</i> coordinate at which the event occurred relative\nto the window origin at the upper left corner of the window.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble y = getY();\n</pre>\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString() const;\n</pre>\n<div class=detailHTML>\nConverts the event to a human-readable representation of the event.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = e.toString();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GMouseEvent-class.html",
    "content": "<html>\n\t<head>\n\t\t<meta http-equiv=\"Refresh\" content=\"0; url=doxygen/classGEvent.html\">\n\t</head>\n\t\n\t<body>\n\t\t<p>\n\t\t\tThis page has moved to <a href=\"doxygen/classGEvent.html\">.\n\t\t\tClick this link if you are not redirected automatically.\n\t\t</p>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GObject-class-old.html",
    "content": "<html>\n<head>\n<title>GObject</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"gobjects.html\">#include \"gobjects.h\"</a></div>\n<h1 class=header><code>class GObject</code></h1>\nThis class is the common superclass of all graphical objects that can\nbe displayed on a graphical window.  The class <code>GObject</code>\nitself is an <b><i>abstract class</i></b>, which means that you are not\nallowed to construct a <code>GObject</code> directly but must instead\nconstruct one of the concrete subclasses.\nThese subclasses form a hierarchy that looks like this:\n\n<p><div class=inset>\n<img src=\"images/GObjectHierarchy.png\"\n     width=768 usemap=\"#GObjectMap\" alt=\"GObjectHierarchy\">\n</div>\n<map name=\"GObjectMap\">\n  <area shape=rect coords=\"0,177,86,204\" href=\"GArc-class.html\"\n        alt=\"GArc\">\n  <area shape=rect coords=\"98,177,184,204\" href=\"GImage-class.html\"\n        alt=\"GImage\">\n  <area shape=rect coords=\"195,177,281,204\" href=\"GLabel-class.html\"\n        alt=\"GLabel\">\n  <area shape=rect coords=\"293,177,379,204\" href=\"GLine-class.html\"\n        alt=\"GLine\">\n  <area shape=rect coords=\"390,177,476,204\" href=\"GOval-class.html\"\n        alt=\"GOval\">\n  <area shape=rect coords=\"488,177,574,204\" href=\"GRect-class.html\"\n        alt=\"GRect\">\n  <area shape=rect coords=\"585,177,671,204\" href=\"GPolygon-class.html\"\n        alt=\"GPolygon\">\n  <area shape=rect coords=\"683,177,769,204\" href=\"GCompound-class.html\"\n        alt=\"GCompound\">\n  <area shape=rect coords=\"439,270,525,297\" href=\"G3DRect-class.html\"\n        alt=\"G3DRect\">\n  <area shape=rect coords=\"536,270,622,297\" href=\"GRoundRect-class.html\"\n        alt=\"GRoundRect\">\n</map>\n\n<p>Most methods used for graphics take a pointer to a <code>GObject</code>\nrather than the <code>GObject</code> itself.  Applications that use\n<code>GObject</code> pointers therefore use the arrow operator\n(<code>-&gt;</code>) to apply methods to the object pointer.\nFor examples illustrating the use of the <code>GObject</code> class, see\nthe descriptions of the individual subclasses.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Methods</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:contains\">contains(<var>pt</var>)</a><br>\n<a href=\"#Method:contains\">contains(<var>x</var>,&nbsp;<var>y</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the specified point is inside the object.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getBounds\">getBounds()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the bounding box of this object, which is defined to be the smallest rectangle that covers everything drawn by the figure.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getColor\">getColor()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the color used to display this object.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getHeight\">getHeight()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the height of this object, which is defined to be the height of the bounding box.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getLocation\">getLocation()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the location of this object as a <code>GPoint</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getParent\">getParent()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a pointer to the <code>GCompound</code> that contains this object.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getSize\">getSize()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the size of the object as a <code>GDimension</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getType\">getType()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the concrete type of the object as a string, as in <code>\"GOval\"</code> or <code>\"GRect\"</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getWidth\">getWidth()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the width of this object, which is defined to be the width of the bounding box.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getX\">getX()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the <i>x</i>-coordinate of the object.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getY\">getY()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the <i>y</i>-coordinate of the object.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:isVisible\">isVisible()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if this object is visible.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:move\">move(<var>dx</var>,&nbsp;<var>dy</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Moves the object on the screen using the displacements <code>dx</code> and <code>dy</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:sendBackward\">sendBackward()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Moves this object one step toward the back in the <i>z</i> dimension.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:sendForward\">sendForward()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Moves this object one step toward the front in the <i>z</i> dimension.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:sendToBack\">sendToBack()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Moves this object to the back of the display in the <i>z</i> dimension.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:sendToFront\">sendToFront()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Moves this object to the front of the display in the <i>z</i> dimension.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setColor\">setColor(<var>color</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the color used to display this object.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setLocation\">setLocation(<var>pt</var>)</a><br>\n<a href=\"#Method:setLocation\">setLocation(<var>x</var>,&nbsp;<var>y</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the location of this object to the specified point.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setVisible\">setVisible(<var>flag</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets whether this object is visible.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a printable representation of the object.</td></tr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:getX\"></a>\n<pre class=detailCode>\ndouble getX() const;\n</pre>\n<div class=detailHTML>\nReturns the <i>x</i>-coordinate of the object.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble x = gobj-&gt;getX();\n</pre>\n<hr>\n<a name=\"Method:getY\"></a>\n<pre class=detailCode>\ndouble getY() const;\n</pre>\n<div class=detailHTML>\nReturns the <i>y</i>-coordinate of the object.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble y = gobj-&gt;getY();\n</pre>\n<hr>\n<a name=\"Method:getLocation\"></a>\n<pre class=detailCode>\nGPoint getLocation() const;\n</pre>\n<div class=detailHTML>\nReturns the location of this object as a <code>GPoint</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGPoint pt = gobj-&gt;getLocation();\n</pre>\n<hr>\n<a name=\"Method:setLocation\"></a>\n<pre class=detailCode>\nvoid setLocation(const GPoint&amp; pt);\nvoid setLocation(double x, double y);\n</pre>\n<div class=detailHTML>\nSets the location of this object to the specified point.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngobj-&gt;setLocation(pt);\ngobj-&gt;setLocation(x, y);\n</pre>\n<hr>\n<a name=\"Method:move\"></a>\n<pre class=detailCode>\nvoid move(double dx, double dy);\n</pre>\n<div class=detailHTML>\nMoves the object on the screen using the displacements\n<code>dx</code> and <code>dy</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngobj-&gt;move(dx, dy);\n</pre>\n<hr>\n<a name=\"Method:getWidth\"></a>\n<pre class=detailCode>\ndouble getWidth() const;\n</pre>\n<div class=detailHTML>\nReturns the width of this object, which is defined to be the width of\nthe bounding box.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble width = gobj-&gt;getWidth();\n</pre>\n<hr>\n<a name=\"Method:getHeight\"></a>\n<pre class=detailCode>\ndouble getHeight() const;\n</pre>\n<div class=detailHTML>\nReturns the height of this object, which is defined to be the height\nof the bounding box.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble height = gobj-&gt;getHeight();\n</pre>\n<hr>\n<a name=\"Method:getSize\"></a>\n<pre class=detailCode>\nGDimension getSize() const;\n</pre>\n<div class=detailHTML>\nReturns the size of the object as a <code>GDimension</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGDimension size = gobj-&gt;getSize();\n</pre>\n<hr>\n<a name=\"Method:getBounds\"></a>\n<pre class=detailCode>\nGRectangle getBounds() const;\n</pre>\n<div class=detailHTML>\nReturns the bounding box of this object, which is defined to be the\nsmallest rectangle that covers everything drawn by the figure.  The\ncoordinates of this rectangle do not necessarily match the location\nreturned by <code>getLocation</code>.  Given a <code>GLabel</code>\nobject, for example, <code>getLocation</code> returns the coordinates\nof the point on the baseline at which the string begins; the\n<code>getBounds</code> method, by contrast, returns a rectangle that\ncovers the entire window area occupied by the string.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGRectangle rect = gobj-&gt;getBounds();\n</pre>\n<hr>\n<a name=\"Method:setColor\"></a>\n<pre class=detailCode>\nvoid setColor(string color);\nvoid setColor(int rgb);\n</pre>\n<div class=detailHTML>\nSets the color used to display this object.  The <code>color</code>\nstring is usually one of the predefined color names:\n\n   <code>BLACK</code>,\n   <code>BLUE</code>,\n   <code>CYAN</code>,\n   <code>DARK_GRAY</code>,\n   <code>GRAY</code>,\n   <code>GREEN</code>,\n   <code>LIGHT_GRAY</code>,\n   <code>MAGENTA</code>,\n   <code>ORANGE</code>,\n   <code>PINK</code>,\n   <code>RED</code>,\n   <code>WHITE</code>, and\n   <code>YELLOW</code>.\n\nThe case of the individual letters in the color name is ignored, as\nare spaces and underscores, so that the color <code>DARK_GRAY</code>\ncan be written as <code>\"Dark Gray\"</code>.\n\n<p>The color can also be specified as a string in the form\n<code>\"#rrggbb\"</code> where <code>rr</code>, <code>gg</code>, and\n<code>bb</code> are pairs of hexadecimal digits indicating the\nred, green, and blue components of the color, respectively.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngobj-&gt;setColor(color);\n</pre>\n<hr>\n<a name=\"Method:getColor\"></a>\n<pre class=detailCode>\nstring getColor() const;\n</pre>\n<div class=detailHTML>\nReturns the color used to display this object.  This color is\nalways returned as a string in the form <code>\"#rrggbb\"</code>,\nwhere <code>rr</code>, <code>gg</code>, and <code>bb</code> are\nthe red, green, and blue components of the color, expressed as\ntwo-digit hexadecimal values.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring color = gobj-&gt;getColor();\n</pre>\n<hr>\n<a name=\"Method:setVisible\"></a>\n<pre class=detailCode>\nvoid setVisible(bool flag);\n</pre>\n<div class=detailHTML>\nSets whether this object is visible.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngobj-&gt;setVisible(flag);\n</pre>\n<hr>\n<a name=\"Method:isVisible\"></a>\n<pre class=detailCode>\nbool isVisible() const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if this object is visible.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (gobj-&gt;isVisible()) ...\n</pre>\n<hr>\n<a name=\"Method:sendForward\"></a>\n<pre class=detailCode>\nvoid sendForward();\n</pre>\n<div class=detailHTML>\nMoves this object one step toward the front in the <i>z</i> dimension.\nIf it was already at the front of the stack, nothing happens.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngobj-&gt;sendForward();\n</pre>\n<hr>\n<a name=\"Method:sendToFront\"></a>\n<pre class=detailCode>\nvoid sendToFront();\n</pre>\n<div class=detailHTML>\nMoves this object to the front of the display in the <i>z</i> dimension.\nBy moving it to the front, this object will appear to be on top of the\nother graphical objects on the display and may hide any objects that\nare further back.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngobj-&gt;sendToFront();\n</pre>\n<hr>\n<a name=\"Method:sendBackward\"></a>\n<pre class=detailCode>\nvoid sendBackward();\n</pre>\n<div class=detailHTML>\nMoves this object one step toward the back in the <i>z</i> dimension.\nIf it was already at the back of the stack, nothing happens.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngobj-&gt;sendBackward();\n</pre>\n<hr>\n<a name=\"Method:sendToBack\"></a>\n<pre class=detailCode>\nvoid sendToBack();\n</pre>\n<div class=detailHTML>\nMoves this object to the back of the display in the <i>z</i> dimension.\nBy moving it to the back, this object will appear to be behind the other\ngraphical objects on the display and may be obscured by other objects\nin front.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngobj-&gt;sendToBack();\n</pre>\n<hr>\n<a name=\"Method:contains\"></a>\n<pre class=detailCode>\nbool contains(GPoint pt) const;\nbool contains(double x, double y) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the specified point is inside the object.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (gobj-&gt;contains(pt)) ...\nif (gobj-&gt;contains(x, y)) ...\n</pre>\n<hr>\n<a name=\"Method:getType\"></a>\n<pre class=detailCode>\nstring getType() const;\n</pre>\n<div class=detailHTML>\nReturns the concrete type of the object as a string, as in\n<code>\"GOval\"</code> or <code>\"GRect\"</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring type = gobj-&gt;getType();\n</pre>\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString() const;\n</pre>\n<div class=detailHTML>\nReturns a printable representation of the object.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngobj-&gt;toString();\n</pre>\n<hr>\n<a name=\"Method:getParent\"></a>\n<pre class=detailCode>\nGCompound* getParent() const;\n</pre>\n<div class=detailHTML>\nReturns a pointer to the <code>GCompound</code> that contains this\nobject.  Every <code>GWindow</code> is initialized to contain a single\n<code>GCompound</code> that is aligned with the window.  Adding\nobjects to the window adds them to that <code>GCompound</code>,\nwhich means that every object you add to the window has a parent.\nCalling <code>getParent</code> on the top-level <code>GCompound</code>\nreturns <code>NULL</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGCompound* parent = gobj-&gt;getParent();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GObject-class.html",
    "content": "<html>\n\t<head>\n\t\t<meta http-equiv=\"Refresh\" content=\"0; url=doxygen/classGObject.html\">\n\t</head>\n\t\n\t<body>\n\t\t<p>\n\t\t\tThis page has moved to <a href=\"doxygen/classGObject.html\">.\n\t\t\tClick this link if you are not redirected automatically.\n\t\t</p>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GOptionPane-class-old.html",
    "content": "<html>\n<head>\n<title>GOptionPane</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"GOptionPanes.html\">#include \"goptionpane.h\"</a></div>\n<h1 class=header><code>class GOptionPane</code></h1>\nThis class represents graphical input/output dialog boxes that can be popped up on the screen.\n\n<pre>\n    GOptionPane::showMessageDialog(\"Hello, world!\");\n    string input = GOptionPane::showInputDialog(\"What is your name?\");\n    if (GOptionPane::showConfirmDialog(\"Are you sure?\") == GOPTIONPANE_YES) {\n        ...\n    }\n</pre>\n</div>\n\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Static Methods</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:showConfirmDialog\">showConfirmDialog(<var>message</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Pops up a yes/no confirmation box.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:showInputDialog\">showInputDialog(<var>message</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Pops up an input box with a text field where the user can type a response.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:showMessageDialog\">showMessageDialog(<var>message</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Displays an output message dialog to the user.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:showOptionDialog\">showOptionDialog(<var>options</var>,&nbsp;<var>initial</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Shows a general input box with a set of buttons from which the user may choose one.</td></tr>\n</table>\n\n<h2>Static Method detail</h2>\n<hr>\n\n<a name=\"Method:showConfirmDialog\"></a>\n<pre class=detailCode>\nstatic GOptionPaneResult showConfirmDialog(string message);\n</pre>\n<div class=detailHTML>\nPops up a yes/no confirmation box.\nOnce the user clicks a button to close the box, one of the <code>GOptionPaneResult</code> enumeration constants is returned.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (GOptionPane::showConfirmDialog(\"Are you sure?\") == GOPTIONPANE_YES) {\n    ...\n}\n</pre>\n<hr>\n\n<a name=\"Method:showInputDialog\"></a>\n<pre class=detailCode>\nstatic string showInputDialog(string message);\n</pre>\n<div class=detailHTML>\nPops up an input box with a text field where the user can type a response, which is returned.\nIf the user cancels the box, an empty string is returned.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring input = GOptionPane::showInputDialog(message);\n</pre>\n<hr>\n\n<a name=\"Method:showMessageDialog\"></a>\n<pre class=detailCode>\nstatic void showMessageDialog(string message);\n</pre>\n<div class=detailHTML>\nDisplays an output message dialog to the user.\nThe user must click the 'OK' button to close the dialog.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGOptionPane::showMessageDialog(\"Hello, world!\");\n</pre>\n<hr>\n\n<a name=\"Method:showOptionDialog\"></a>\n<pre class=detailCode>\nstatic string showOptionDialog(const Vector&lt;string&gt;& options, string initiallySelected = &quot;&quot;);\n</pre>\n<div class=detailHTML>\nShows a general input box with a set of buttons from which the user may choose one option.\nThe button the user clicks is returned as a string.\nIf the user cancels the box, an empty string is returned.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nVector&lt;string&gt; options;\noptions += &quot;Leo&quot;, &quot;Mike&quot;, &quot;Don&quot;, &quot;Raph&quot;;\nstring fave = GOptionPane::showOptionDialog(options, &quot;Leo&quot;);\n</pre>\n<hr>\n\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GOptionPane-class.html",
    "content": "<html>\n\t<head>\n\t\t<meta http-equiv=\"Refresh\" content=\"0; url=doxygen/classGOptionPane.html\">\n\t</head>\n\t\n\t<body>\n\t\t<p>\n\t\t\tThis page has moved to <a href=\"doxygen/classGOptionPane.html\">.\n\t\t\tClick this link if you are not redirected automatically.\n\t\t</p>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GOval-class-old.html",
    "content": "<html>\n<head>\n<title>GOval</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"gobjects.html\">#include \"gobjects.h\"</a></div>\n<h1 class=header><code>class GOval : public <a href=\"GObject-class.html\">GObject</a></code></h1>\nThis graphical object subclass represents an oval inscribed in\na rectangular box.  For example, the following code displays a\nfilled green oval inscribed in the graphics window:\n\n<pre>\n   int main() {\n      GWindow gw;\n      cout &lt;&lt; &quot;This program draws a green oval filling the window.&quot; &lt;&lt; endl;\n      GOval* oval = new GOval(gw.getWidth(), gw.getHeight());\n      oval-&gt;setFilled(true);\n      oval-&gt;setColor(&quot;GREEN&quot;);\n      gw.add(oval);\n      return 0;\n   }\n</pre>\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Constructor</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Constructor:GOval\">GOval(<var>width</var>,&nbsp;<var>height</var>)</a><br>\n<a href=\"#Constructor:GOval\">GOval(<var>x</var>,&nbsp;<var>y</var>,&nbsp;<var>width</var>,&nbsp;<var>height</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Constructs a new oval inscribed in the specified rectangle.</td></tr>\n<tr><td class=indexHead colspan=2>Methods</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getFillColor\">getFillColor()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the color used to display the filled region of this oval.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:isFilled\">isFilled()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the oval is filled.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setBounds\">setBounds(<var>rect</var>)</a><br>\n<a href=\"#Method:setBounds\">setBounds(<var>x</var>,&nbsp;<var>y</var>,&nbsp;<var>width</var>,&nbsp;<var>height</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Changes the bounds of the oval to the specified values.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setFillColor\">setFillColor(<var>color</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the color used to display the filled region of this oval.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setFilled\">setFilled(<var>flag</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the fill status for the oval, where <code>false</code> is outlined and <code>true</code> is filled.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setSize\">setSize(<var>size</var>)</a><br>\n<a href=\"#Method:setSize\">setSize(<var>width</var>,&nbsp;<var>height</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Changes the size of the bounding rectangle to the specified width and height.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:GOval\"></a>\n<pre class=detailCode>\nGOval(double width, double height);\nGOval(double x, double y, double width, double height);\n</pre>\n<div class=detailHTML>\nConstructs a new oval inscribed in the specified rectangle.  The\nfirst form is positioned at the origin; the second at the coordinates\ngiven by <code>x</code> and <code>y</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGOval* oval = new GOval(width, height);\nGOval* oval = new GOval(x, y, width, height);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:setSize\"></a>\n<pre class=detailCode>\nvoid setSize(const GDimension&amp; size);\nvoid setSize(double width, double height);\n</pre>\n<div class=detailHTML>\nChanges the size of the bounding rectangle to the specified width\nand height.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\noval-&gt;setSize(size);\noval-&gt;setSize(width, height);\n</pre>\n<hr>\n<a name=\"Method:setBounds\"></a>\n<pre class=detailCode>\nvoid setBounds(const GRectangle&amp; size);\nvoid setBounds(double x, double y, double width, double height);\n</pre>\n<div class=detailHTML>\nChanges the bounds of the oval to the specified values.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\noval-&gt;setBounds(rect);\noval-&gt;setBounds(x, y, width, height);\n</pre>\n<hr>\n<a name=\"Method:setFilled\"></a>\n<pre class=detailCode>\nvoid setFilled(bool flag);\n</pre>\n<div class=detailHTML>\nSets the fill status for the oval, where <code>false</code> is\noutlined and <code>true</code> is filled.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\noval-&gt;setFilled(flag);\n</pre>\n<hr>\n<a name=\"Method:isFilled\"></a>\n<pre class=detailCode>\nbool isFilled() const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the oval is filled.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (oval-&gt;isFilled()) ...\n</pre>\n<hr>\n<a name=\"Method:setFillColor\"></a>\n<pre class=detailCode>\nvoid setFillColor(string color);\nvoid setFillColor(int rgb);\n</pre>\n<div class=detailHTML>\nSets the color used to display the filled region of this oval.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\noval-&gt;setFillColor(color);\n</pre>\n<hr>\n<a name=\"Method:getFillColor\"></a>\n<pre class=detailCode>\nstring getFillColor() const;\n</pre>\n<div class=detailHTML>\nReturns the color used to display the filled region of this oval.  If\nnone has been set, <code>getFillColor</code> returns the empty string.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring color = oval-&gt;getFillColor();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GOval-class.html",
    "content": "<html>\n\t<head>\n\t\t<meta http-equiv=\"Refresh\" content=\"0; url=doxygen/classGOval.html\">\n\t</head>\n\t\n\t<body>\n\t\t<p>\n\t\t\tThis page has moved to <a href=\"doxygen/classGOval.html\">.\n\t\t\tClick this link if you are not redirected automatically.\n\t\t</p>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GPoint-class-old.html",
    "content": "<html>\n<head>\n<title>GPoint</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"gtypes.html\">#include \"gtypes.h\"</a></div>\n<h1 class=header><code>class GPoint</code></h1>\nThis class contains real-valued x and y fields.  It is used to\nrepresent a location on the graphics plane.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Constructor</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Constructor:GPoint\">GPoint()</a><br>\n<a href=\"#Constructor:GPoint\">GPoint(<var>x</var>,&nbsp;<var>y</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a <code>GPoint</code> object with the specified <code>x</code> and <code>y</code> coordinates.</td></tr>\n<tr><td class=indexHead colspan=2>Methods</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getX\">getX()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the x component of the point.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getY\">getY()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the y component of the point.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Converts the <code>GPoint</code> to a string in the form <code>\"(</code><i>x</i><code>,</code>&nbsp;<i>y</i><code>)\"</code>.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:GPoint\"></a>\n<pre class=detailCode>\nGPoint();\nGPoint(double x, double y);\n</pre>\n<div class=detailHTML>\nCreates a <code>GPoint</code> object with the specified <code>x</code>\nand <code>y</code> coordinates.  If the coordinates are not supplied,\nthe default constructor sets these fields to 0.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGPoint origin;\nGPoint pt(x, y);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:getX\"></a>\n<pre class=detailCode>\ndouble getX() const;\n</pre>\n<div class=detailHTML>\nReturns the x component of the point.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble x = pt.getX();\n</pre>\n<hr>\n<a name=\"Method:getY\"></a>\n<pre class=detailCode>\ndouble getY() const;\n</pre>\n<div class=detailHTML>\nReturns the y component of the point.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble y = pt.getY();\n</pre>\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString() const;\n</pre>\n<div class=detailHTML>\nConverts the <code>GPoint</code> to a string in the form\n<code>\"(</code><i>x</i><code>,</code>&nbsp;<i>y</i><code>)\"</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = pt.toString();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GPoint-class.html",
    "content": "<html>\n\t<head>\n\t\t<meta http-equiv=\"Refresh\" content=\"0; url=doxygen/classGPoint.html\">\n\t</head>\n\t\n\t<body>\n\t\t<p>\n\t\t\tThis page has moved to <a href=\"doxygen/classGPoint.html\">.\n\t\t\tClick this link if you are not redirected automatically.\n\t\t</p>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GPolygon-class-old.html",
    "content": "<html>\n<head>\n<title>GPolygon</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"gobjects.html\">#include \"gobjects.h\"</a></div>\n<h1 class=header><code>class GPolygon : public <a href=\"GObject-class.html\">GObject</a></code></h1>\nThis graphical object subclass represents a polygon bounded by\nline segments.  The <code>GPolygon</code> constructor creates an\nempty polygon.  To complete the figure, you need to add vertices\nto the polygon using the methods\n<a href=\"#Method:addVertex\"><code>addVertex</code></a>,\n<a href=\"#Method:addEdge\"><code>addEdge</code></a>,\nand <a href=\"#Method:addPolarEdge\"><code>addPolarEdge</code></a>.\nAs an example, the following code adds a filled red octagon to\nthe center of the window:\n\n<pre>\n   int main() {\n      GWindow gw;\n      cout &lt;&lt; &quot;This program draws a red octagon.&quot; &lt;&lt; endl;\n      double edge = 75;\n      GPolygon* stopSign = new GPolygon();\n      stopSign-&gt;addVertex(-edge / 2, edge / 2 + edge / sqrt(2.0));\n      for (int i = 0; i &lt; 8; i++) {\n         stopSign-&gt;addPolarEdge(edge, 45 * i);\n      }\n      stopSign-&gt;setFilled(true);\n      stopSign-&gt;setColor(&quot;RED&quot;);\n      gw.add(stopSign, gw.getWidth() / 2, gw.getHeight() / 2);\n      return 0;\n   }\n</pre>\n<p>The program results in the following picture:\n\n<p><div class=inset>\n<img src=\"images/StopSign.png\" width=322 alt=\"StopSign\">\n</div>\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Constructor</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Constructor:GPolygon\">GPolygon()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Constructs a new empty polygon at the origin.</td></tr>\n<tr><td class=indexHead colspan=2>Methods</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:addEdge\">addEdge(<var>dx</var>,&nbsp;<var>dy</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Adds an edge to the polygon whose components are given by the displacements <code>dx</code> and <code>dy</code> from the last vertex.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:addPolarEdge\">addPolarEdge(<var>r</var>,&nbsp;<var>theta</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Adds an edge to the polygon specified in polar coordinates.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:addVertex\">addVertex(<var>x</var>,&nbsp;<var>y</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Adds a vertex at (<code>x</code>, <code>y</code>) relative to the polygon origin.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getFillColor\">getFillColor()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the color used to display the filled region of this polygon.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getVertices\">getVertices()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a vector of the points in the polygon.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:isFilled\">isFilled()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the polygon is filled.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setFillColor\">setFillColor(<var>color</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the color used to display the filled region of this polygon.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setFilled\">setFilled(<var>flag</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the fill status for the polygon, where <code>false</code> is outlined and <code>true</code> is filled.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:GPolygon\"></a>\n<pre class=detailCode>\nGPolygon();\n</pre>\n<div class=detailHTML>\nConstructs a new empty polygon at the origin.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGPolygon* poly = new GPolygon();\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:addVertex\"></a>\n<pre class=detailCode>\nvoid addVertex(double x, double y);\n</pre>\n<div class=detailHTML>\nAdds a vertex at (<code>x</code>, <code>y</code>) relative to the polygon\norigin.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\npoly-&gt;addVertex(x, y);\n</pre>\n<hr>\n<a name=\"Method:addEdge\"></a>\n<pre class=detailCode>\nvoid addEdge(double dx, double dy);\n</pre>\n<div class=detailHTML>\nAdds an edge to the polygon whose components are given by the displacements\n<code>dx</code> and <code>dy</code> from the last vertex.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\npoly-&gt;addEdge(dx, dy);\n</pre>\n<hr>\n<a name=\"Method:addPolarEdge\"></a>\n<pre class=detailCode>\nvoid addPolarEdge(double r, double theta);\n</pre>\n<div class=detailHTML>\nAdds an edge to the polygon specified in polar coordinates.  The length\nof the edge is given by <code>r</code>, and the edge extends in\ndirection <code>theta</code>, measured in degrees counterclockwise\nfrom the +x axis.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\npoly-&gt;addPolarEdge(r, theta);\n</pre>\n<hr>\n<a name=\"Method:getVertices\"></a>\n<pre class=detailCode>\nVector&lt;GPoint&gt; getVertices() const;\n</pre>\n<div class=detailHTML>\nReturns a vector of the points in the polygon.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nVector&lt;GPoint&gt; vec = poly-&gt;getVertices();\n</pre>\n<hr>\n<a name=\"Method:setFilled\"></a>\n<pre class=detailCode>\nvoid setFilled(bool flag);\n</pre>\n<div class=detailHTML>\nSets the fill status for the polygon, where <code>false</code> is\noutlined and <code>true</code> is filled.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\npoly-&gt;setFilled(flag);\n</pre>\n<hr>\n<a name=\"Method:isFilled\"></a>\n<pre class=detailCode>\nbool isFilled() const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the polygon is filled.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (poly-&gt;isFilled()) ...\n</pre>\n<hr>\n<a name=\"Method:setFillColor\"></a>\n<pre class=detailCode>\nvoid setFillColor(string color);\nvoid setFillColor(int rgb);\n</pre>\n<div class=detailHTML>\nSets the color used to display the filled region of this polygon.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\npoly-&gt;setFillColor(color);\n</pre>\n<hr>\n<a name=\"Method:getFillColor\"></a>\n<pre class=detailCode>\nstring getFillColor() const;\n</pre>\n<div class=detailHTML>\nReturns the color used to display the filled region of this polygon.  If\nnone has been set, <code>getFillColor</code> returns the empty string.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring color = poly-&gt;getFillColor();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GPolygon-class.html",
    "content": "<html>\n\t<head>\n\t\t<meta http-equiv=\"Refresh\" content=\"0; url=doxygen/classGPolygon.html\">\n\t</head>\n\t\n\t<body>\n\t\t<p>\n\t\t\tThis page has moved to <a href=\"doxygen/classGPolygon.html\">.\n\t\t\tClick this link if you are not redirected automatically.\n\t\t</p>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GRect-class-old.html",
    "content": "<html>\n<head>\n<title>GRect</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"gobjects.html\">#include \"gobjects.h\"</a></div>\n<h1 class=header><code>class GRect : public <a href=\"GObject-class.html\">GObject</a></code></h1>\nThis class represents a graphical object whose appearance consists of\na rectangular box.  For example, the following code adds a filled, red\n<nobr>200<font class=sansserif size=-1>x</font>100</nobr> rectangle\nat the upper left corner of the graphics window:\n\n<pre>\n   int main() {\n      GWindow gw;\n      cout &lt;&lt; &quot;This program draws a red rectangle at (0, 0).&quot; &lt;&lt; endl;\n      GRect* rect = new GRect(0, 0, 200, 100);\n      rect-&gt;setFilled(true);\n      rect-&gt;setColor(&quot;RED&quot;);\n      gw.add(rect);\n      return 0;\n   }\n</pre>\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Constructor</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Constructor:GRect\">GRect(<var>width</var>,&nbsp;<var>height</var>)</a><br>\n<a href=\"#Constructor:GRect\">GRect(<var>x</var>,&nbsp;<var>y</var>,&nbsp;<var>width</var>,&nbsp;<var>height</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Constructs a rectangle with the specified width and height.</td></tr>\n<tr><td class=indexHead colspan=2>Methods</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getFillColor\">getFillColor()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the color used to display the filled region of this rectangle.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:isFilled\">isFilled()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the rectangle is filled.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setBounds\">setBounds(<var>rect</var>)</a><br>\n<a href=\"#Method:setBounds\">setBounds(<var>x</var>,&nbsp;<var>y</var>,&nbsp;<var>width</var>,&nbsp;<var>height</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Changes the bounds of this rectangle to the specified values.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setFillColor\">setFillColor(<var>color</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the color used to display the filled region of this rectangle.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setFilled\">setFilled(<var>flag</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the fill status for the rectangle, where <code>false</code> is outlined and <code>true</code> is filled.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setSize\">setSize(<var>size</var>)</a><br>\n<a href=\"#Method:setSize\">setSize(<var>width</var>,&nbsp;<var>height</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Changes the size of this rectangle to the specified width and height.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:GRect\"></a>\n<pre class=detailCode>\nGRect(double width, double height);\nGRect(double x, double y, double width, double height);\n</pre>\n<div class=detailHTML>\nConstructs a rectangle with the specified width and height.  The first\nform is positioned at the origin; the second at the coordinates\ngiven by <code>x</code> and <code>y</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGRect* rect = new GRect(width, height);\nGRect* rect = new GRect(x, y, width, height);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:setSize\"></a>\n<pre class=detailCode>\nvoid setSize(const GDimension&amp; size);\nvoid setSize(double width, double height);\n</pre>\n<div class=detailHTML>\nChanges the size of this rectangle to the specified width and height.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nrect-&gt;setSize(size);\nrect-&gt;setSize(width, height);\n</pre>\n<hr>\n<a name=\"Method:setBounds\"></a>\n<pre class=detailCode>\nvoid setBounds(const GRectangle&amp; size);\nvoid setBounds(double x, double y, double width, double height);\n</pre>\n<div class=detailHTML>\nChanges the bounds of this rectangle to the specified values.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nrect-&gt;setBounds(rect);\nrect-&gt;setBounds(x, y, width, height);\n</pre>\n<hr>\n<a name=\"Method:setFilled\"></a>\n<pre class=detailCode>\nvoid setFilled(bool flag);\n</pre>\n<div class=detailHTML>\nSets the fill status for the rectangle, where <code>false</code> is\noutlined and <code>true</code> is filled.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nrect-&gt;setFilled(flag);\n</pre>\n<hr>\n<a name=\"Method:isFilled\"></a>\n<pre class=detailCode>\nbool isFilled() const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the rectangle is filled.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (rect-&gt;isFilled()) ...\n</pre>\n<hr>\n<a name=\"Method:setFillColor\"></a>\n<pre class=detailCode>\nvoid setFillColor(string color);\nvoid setFillColor(int rgb);\n</pre>\n<div class=detailHTML>\nSets the color used to display the filled region of this rectangle.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nrect-&gt;setFillColor(color);\n</pre>\n<hr>\n<a name=\"Method:getFillColor\"></a>\n<pre class=detailCode>\nstring getFillColor() const;\n</pre>\n<div class=detailHTML>\nReturns the color used to display the filled region of this rectangle.  If\nnone has been set, <code>getFillColor</code> returns the empty string.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring color = rect-&gt;getFillColor();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GRect-class.html",
    "content": "<html>\n\t<head>\n\t\t<meta http-equiv=\"Refresh\" content=\"0; url=doxygen/classGRect.html\">\n\t</head>\n\t\n\t<body>\n\t\t<p>\n\t\t\tThis page has moved to <a href=\"doxygen/classGRect.html\">.\n\t\t\tClick this link if you are not redirected automatically.\n\t\t</p>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GRectangle-class-old.html",
    "content": "<html>\n<head>\n<title>GRectangle</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"gtypes.html\">#include \"gtypes.h\"</a></div>\n<h1 class=header><code>class GRectangle</code></h1>\nThis type contains real-valued x, y, width, and height fields.  It is\nused to represent the bounding box of a graphical object.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Constructor</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Constructor:GRectangle\">GRectangle()</a><br>\n<a href=\"#Constructor:GRectangle\">GRectangle(<var>x</var>,&nbsp;<var>y</var>,&nbsp;<var>width</var>,&nbsp;<var>height</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a <code>GRectangle</code> object with the specified components.</td></tr>\n<tr><td class=indexHead colspan=2>Methods</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:contains\">contains(<var>pt</var>)</a><br>\n<a href=\"#Method:contains\">contains(<var>x</var>,&nbsp;<var>y</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the rectangle contains the given point, which may be specified either as a point or as distinct coordinates.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getHeight\">getHeight()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the height component of the rectangle.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getWidth\">getWidth()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the width component of the rectangle.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getX\">getX()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the x component of the rectangle.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getY\">getY()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the y component of the rectangle.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:isEmpty\">isEmpty()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the rectangle is empty.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Converts the <code>GRectangle</code> to a string in the form <code>\"(</code><i>x</i><code>,</code>&nbsp;<i>y</i><code>,</code> <i>width</i><code>,</code>&nbsp;<i>height</i><code>)\"</code>.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:GRectangle\"></a>\n<pre class=detailCode>\nGRectangle();\nGRectangle(double x, double y, double width, double height);\n</pre>\n<div class=detailHTML>\nCreates a <code>GRectangle</code> object with the specified components.\nIf these parameters are not supplied, the default constructor sets\nthese fields to 0.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGRectangle empty;\nGRectangle r(x, y, width, height);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:getX\"></a>\n<pre class=detailCode>\ndouble getX() const;\n</pre>\n<div class=detailHTML>\nReturns the x component of the rectangle.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble x = r.getX();\n</pre>\n<hr>\n<a name=\"Method:getY\"></a>\n<pre class=detailCode>\ndouble getY() const;\n</pre>\n<div class=detailHTML>\nReturns the y component of the rectangle.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble y = pt.getY();\n</pre>\n<hr>\n<a name=\"Method:getWidth\"></a>\n<pre class=detailCode>\ndouble getWidth() const;\n</pre>\n<div class=detailHTML>\nReturns the width component of the rectangle.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble width = r.getWidth();\n</pre>\n<hr>\n<a name=\"Method:getHeight\"></a>\n<pre class=detailCode>\ndouble getHeight() const;\n</pre>\n<div class=detailHTML>\nReturns the height component of the rectangle.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble height = pt.getHeight();\n</pre>\n<hr>\n<a name=\"Method:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty() const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the rectangle is empty.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (r.isEmpty()) ...\n</pre>\n<hr>\n<a name=\"Method:contains\"></a>\n<pre class=detailCode>\nbool contains(GPoint pt) const;\nbool contains(double x, double y) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the rectangle contains the given point,\nwhich may be specified either as a point or as distinct coordinates.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (r.contains(pt)) ...\nif (r.contains(x, y)) ...\n</pre>\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString() const;\n</pre>\n<div class=detailHTML>\nConverts the <code>GRectangle</code> to a string in the form\n<code>\"(</code><i>x</i><code>,</code>&nbsp;<i>y</i><code>,</code>\n<i>width</i><code>,</code>&nbsp;<i>height</i><code>)\"</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = r.toString();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GRectangle-class.html",
    "content": "<html>\n\t<head>\n\t\t<meta http-equiv=\"Refresh\" content=\"0; url=doxygen/classGRectangle.html\">\n\t</head>\n\t\n\t<body>\n\t\t<p>\n\t\t\tThis page has moved to <a href=\"doxygen/classGRectangle.html\">.\n\t\t\tClick this link if you are not redirected automatically.\n\t\t</p>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GRoundRect-class-old.html",
    "content": "<html>\n<head>\n<title>GRoundRect</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"gobjects.html\">#include \"gobjects.h\"</a></div>\n<h1 class=header><code>class GRoundRect : public <a href=\"GRect-class.html\">GRect</a></code></h1>\nThis class represents a graphical object whose appearance consists\nof a rectangular box with rounded corners.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Constructor</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Constructor:GRoundRect\">GRoundRect(<var>width</var>,&nbsp;<var>height</var>)</a><br>\n<a href=\"#Constructor:GRoundRect\">GRoundRect(<var>width</var>,&nbsp;<var>height</var>,&nbsp;<var>corner</var>)</a><br>\n<a href=\"#Constructor:GRoundRect\">GRoundRect(<var>x</var>,&nbsp;<var>y</var>,&nbsp;<var>width</var>,&nbsp;<var>height</var>)</a><br>\n<a href=\"#Constructor:GRoundRect\">GRoundRect(<var>x</var>,&nbsp;<var>y</var>,&nbsp;<var>width</var>,&nbsp;<var>height</var>,&nbsp;<var>corner</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Constructs a new rectangle with the specified width and height.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:GRoundRect\"></a>\n<pre class=detailCode>\nGRoundRect(double width, double height);\nGRoundRect(double width, double height, double corner);\nGRoundRect(double x, double y, double width, double height);\nGRoundRect(double x, double y, double width, double height, double corner);\n</pre>\n<div class=detailHTML>\nConstructs a new rectangle with the specified width and height.  If\nthe <code>x</code> and <code>y</code> parameters are specified, they\nare used to specify the origin.  The <code>corner</code> parameter\nspecifies the diameter of the arc forming the corner.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGRoundRect* rect = new GRoundRect(width, height);\nGRoundRect* rect = new GRoundRect(width, height, corner);\nGRoundRect* rect = new GRoundRect(x, y, width, height);\nGRoundRect* rect = new GRoundRect(x, y, width, height, corner);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GRoundRect-class.html",
    "content": "<html>\n\t<head>\n\t\t<meta http-equiv=\"Refresh\" content=\"0; url=doxygen/classGRoundRect.html\">\n\t</head>\n\t\n\t<body>\n\t\t<p>\n\t\t\tThis page has moved to <a href=\"doxygen/classGRoundRect.html\">.\n\t\t\tClick this link if you are not redirected automatically.\n\t\t</p>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GSlider-class-old.html",
    "content": "<html>\n<head>\n<title>GSlider</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"ginteractors.html\">#include \"ginteractors.h\"</a></div>\n<h1 class=header><code>class GSlider : public <a href=\"GInteractor-class.html\">GInteractor</a></code></h1>\nThis interactor subclass represents an onscreen slider.  Dragging\nthe slider control generates an <code>ActionEvent</code> if the\nslider has a nonempty action command.\n<p>The display image of a slider is machine-dependent, but the declaration\n\n<pre>\n    GSlider* slider = new GSlider();\n</pre>\n\ntypically produces a slider that looks something like this:\n\n<p><div class=inset>\n<img src=\"images/GSlider.png\" alt=\"GSlider\">\n</div>\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Constructor</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Constructor:GSlider\">GSlider()</a><br>\n<a href=\"#Constructor:GSlider\">GSlider(<var>min</var>,&nbsp;<var>max</var>,&nbsp;<var>value</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a horizontal <code>GSlider</code>.</td></tr>\n<tr><td class=indexHead colspan=2>Methods</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getValue\">getValue()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the current value of the slider.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setValue\">setValue(<var>value</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the current value of the slider.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:GSlider\"></a>\n<pre class=detailCode>\nGSlider();\nGSlider(int min, int max, int value);\n</pre>\n<div class=detailHTML>\nCreates a horizontal <code>GSlider</code>.  The second form allows\nthe client to specify the minimum value, maximum value, and current\nvalue of the slider.  The first form is equivalent to calling\n<code>GSlider(0, 100, 50)</code>.  Assigning an action command\nto the slider causes the slider to generate an action event whenever\nthe slider value changes.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGSlider* slider = new GSlider();\nGSlider* slider = new GSlider(min, max, value);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:setValue\"></a>\n<pre class=detailCode>\nvoid setValue(int value);\n</pre>\n<div class=detailHTML>\nSets the current value of the slider.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nslider-&gt;setValue(value);\n</pre>\n<hr>\n<a name=\"Method:getValue\"></a>\n<pre class=detailCode>\nint getValue();\n</pre>\n<div class=detailHTML>\nReturns the current value of the slider.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint value = slider-&gt;getValue();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GSlider-class.html",
    "content": "<html>\n\t<head>\n\t\t<meta http-equiv=\"Refresh\" content=\"0; url=doxygen/classGSlider.html\">\n\t</head>\n\t\n\t<body>\n\t\t<p>\n\t\t\tThis page has moved to <a href=\"doxygen/classGSlider.html\">.\n\t\t\tClick this link if you are not redirected automatically.\n\t\t</p>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GTable-class-old.html",
    "content": "<html>\n<head>\n<title>GTable</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"gtable.html\">#include \"gtable.h\"</a></div>\n<h1 class=header><code>class GTable : public <a href=\"GObject-class.html\">GInteractor</a></code></h1>\n<p>\n\tA GTable is a thin wrapper around the Java Swing component <code>JTable</code>.\n\tIt represents a graphical editable 2D table, like a mediocre facsimile\n\tof an Excel spreadsheet.\n\tAfter creating a <code>GTable</code>, you can listen for table events to be notified\n\twhen the user types a new value into a table cell:\n</p>\n\n<pre>\nwhile (true) {\n    GEvent event = waitForEvent(TABLE_EVENT);\n    GTableEvent tableEvent(event);\n    cout &lt;&lt; &quot;cell updated: &quot; &lt;&lt; tableEvent.toString() &lt;&lt; endl;\n    ...\n}\n</pre>\n\n<p>\n\tAll row/column indexes in this class are 0-based.\n</p>\n\n<p>\n\tA <code>GTable</code> allows you to perform a bit of overall formatting on the table, such as changing fonts, colors and alignment.\n\tBut this is done on a per-table level and there is currently no way to individually format a particular cell, row, or column.\n\tSuch functionality exists in the underlying <code>JTable</code> but has not been exposed into this class presently.\n</p>\n\n<p class=\"since\">\n\tAvailable since: 2015/11/07 version of C++ library\n</p>\n\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Constructors</td></tr>\n<tr><td class=indexKey><a href=\"#Constructor:GTable\">GTable(<var>rows</var>, <var>columns</var>, <var>x</var>, <var>y</var>, <var>width</var>, <var>height</var>)</a></td><td class=indexSynopsis width=100%>Constructs a new table with the given dimensions and (optional) size.</td></tr>\n<tr><td class=indexHead colspan=2>Methods</td></tr>\n<tr><td class=indexKey><a href=\"#Method:clear\">clear()</a></td><td class=indexSynopsis width=100%>Sets all cells in the table to store an empty string value.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:get\">get(<var>row</var>,&nbsp;<var>col</var>)</a></td><td class=indexSynopsis width=100%>Returns the text stored in the given cell.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:getColumnWidth\">getColumnWidth(<var>col</var>)</a></td><td class=indexSynopsis width=100%>Returns the width of the given column index in pixels.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:getFont\">getFont()</a></td><td class=indexSynopsis width=100%>Returns the font used in the cells of this table.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:getHorizontalAlignment\">getHorizontalAlignment()</a></td><td class=indexSynopsis width=100%>Returns the horizontal alignment of the text in all cells in the table.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:height\">height()</a></td><td class=indexSynopsis width=100%>Returns the number of rows in the table.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:inBounds\">inBounds()</a></td><td class=indexSynopsis width=100%>Returns true if the given 0-based row/column index is within the bounds of the table.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:numCols\">numCols()</a></td><td class=indexSynopsis width=100%>Returns the number of columns in the table.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:numRows\">numRows()</a></td><td class=indexSynopsis width=100%>Returns the number of rows in the table.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:resize\">resize(<var>numRows</var>,&nbsp;<var>numCols</var>)</a></td><td class=indexSynopsis width=100%>Modifies the table to have the given number of rows and columns, retaining any existing data.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:set\">set(<var>row</var>,&nbsp;<var>col</var>,&nbsp;<var>value</var>)</a></td><td class=indexSynopsis width=100%>Modifies the value in the given cell to store the given text.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:setColumnWidth\">setColumnWidth(<var>col</var>,&nbsp;<var>width</var>)</a></td><td class=indexSynopsis width=100%>Sets the given column index to have the given width in pixels.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:setFont\">setFont(<var>font</var>)</a></td><td class=indexSynopsis width=100%>Modifies the value in the given cell to store the given text.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:setHorizontalAlignment\">setHorizontalAlignment(<var>alignment</var>)</a></td><td class=indexSynopsis width=100%>Sets the horizontal alignment of the text in all cells in the table.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:width\">width()</a></td><td class=indexSynopsis width=100%>Returns the number of columns in the table.</td></tr>\n</table>\n\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:GTable\"></a>\n<pre class=detailCode>\nGTable(int rows = 0, int columns = 0,\n       double x = 0, double y = 0,\n       double width = 0, double height = 0);\n</pre>\n<div class=detailHTML>\n\n<p>\nConstructs a new table with the given dimensions and (optional) size.\nIf <code>x</code>, <code>y</code>, <code>width</code>, or <code>height</code> are omitted, they are set automatically by\nthe layout manager of the GWindow into which the table is placed.\nThis is often what you want.\nThrows an error if the number of rows, columns, width, or height is negative.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGTable* table = new GTable(rows, cols);\nGTable* table = new GTable(rows, cols, x, y, width, height);\n</pre>\n<hr>\n</table>\n\n<h2>Method detail</h2>\n\n\n<hr>\n<a name=\"Method:clear\"></a>\n<pre class=detailCode>\nvoid clear();\n</pre>\n<div class=detailHTML>\nSets all cells in the table to store an empty string value.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ntable-&gt;clear();\n</pre>\n\n\n<hr>\n<a name=\"Method:get\"></a>\n<pre class=detailCode>\nstring get(int row, int column) const;\n</pre>\n<div class=detailHTML>\nReturns the text stored in the given cell.\nThrows an error if the given row or column are out of bounds.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring text = table-&gt;get(row, col);\n</pre>\n\n\n<hr>\n<a name=\"Method:getColumnWidth\"></a>\n<pre class=detailCode>\ndouble getColumnWidth(int column) const;\n</pre>\n<div class=detailHTML>\nReturns the width of the given column index in pixels.\nWhen a table is constructed, all columns initially have equal width.\nThrows an error if the given column index is out of bounds.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble colWidth = table-&gt;getColumnWidth(col);\n</pre>\n\n\n<hr>\n<a name=\"Method:getFont\"></a>\n<pre class=detailCode>\nstring getFont() const;\n</pre>\n<div class=detailHTML>\nReturns the font used in the cells of this table.\nIf the font has never been explicitly set, returns <code>\"*-*-*\"</code>.\nSee also: <a href=\"GWindow-class.html\"><code>GWindow</code></a> documentation on font strings.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring font = table-&gt;getFont();\n</pre>\n\n\n<hr>\n<a name=\"Method:getHorizontalAlignment\"></a>\n<pre class=detailCode>\nGTable::Alignment getHorizontalAlignment() const;\n</pre>\n<div class=detailHTML>\nReturns the horizontal alignment of the text in all cells in the table.\nThe alignment can be <code>GTable::Alignment::LEFT</code>, <code>GTable::Alignment::CENTER</code>, or <code>GTable::Alignment::RIGHT</code> and is initially <code>LEFT</code>.\nCurrently a table's alignment is global and applies to all cells.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGTable::Alignment alignment = table-&gt;getHorizontalAlignment();\n</pre>\n\n\n<hr>\n<a name=\"Method:height\"></a>\n<pre class=detailCode>\nint height() const;\n</pre>\n<div class=detailHTML>\nReturns the number of rows in the table.\nEquivalent to <code>numRows()</code>.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint height = table-&gt;height();\n</pre>\n\n\n<hr>\n<a name=\"Method:inBounds\"></a>\n<pre class=detailCode>\nbool inBounds(int row, int column) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the given 0-based row/column index is within the bounds of the table.\nIn other words, whether the index is between (0, 0) and (numRows-1, numCols-1) inclusive.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (table-&gt;inBounds(row, col)) { ...\n</pre>\n\n\n<hr>\n<a name=\"Method:numCols\"></a>\n<pre class=detailCode>\nint numCols() const;\n</pre>\n<div class=detailHTML>\nReturns the number of columns in the table.\nEquivalent to <code>width()</code>.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint cols = table-&gt;numCols();\n</pre>\n\n\n<hr>\n<a name=\"Method:numRows\"></a>\n<pre class=detailCode>\nint numRows() const;\n</pre>\n<div class=detailHTML>\nReturns the number of rows in the table.\nEquivalent to <code>height()</code>.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint rows = table-&gt;numRows();\n</pre>\n\n\n<hr>\n<a name=\"Method:resize\"></a>\n<pre class=detailCode>\nvoid resize(int numRows, int numCols);\n</pre>\n<div class=detailHTML>\nModifies the table to have the given number of rows and columns.\nAny existing data is retained, and any new cells are empty.\nThrows an error if <code>numRows</code> or <code>numCols</code> is negative.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ntable-&gt;resize(rows, cols);\n</pre>\n\n\n<hr>\n<a name=\"Method:set\"></a>\n<pre class=detailCode>\nvoid set(int row, int column, string text);\n</pre>\n<div class=detailHTML>\nModifies the value in the given cell to store the given text.\nThrows an error if the given row or column are out of bounds.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ntable-&gt;set(row, col, text);\n</pre>\n\n\n<hr>\n<a name=\"Method:setColumnWidth\"></a>\n<pre class=detailCode>\nvoid setColumnWidth(int column, double width);\n</pre>\n<div class=detailHTML>\nSets the given column index to have the given width in pixels.\nThrows an error if the given column index is out of bounds\nor if the width is negative.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ntable-&gt;setColumnWidth(col, width);\n</pre>\n\n\n<hr>\n<a name=\"Method:setFont\"></a>\n<pre class=detailCode>\nvoid setFont(string font);\n</pre>\n<div class=detailHTML>\nSets the cells of this table to display their text in the given font.\nSee also: <a href=\"GWindow-class.html\"><code>GWindow</code></a> documentation on font strings.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ntable-&gt;setFont(font);\n</pre>\n\n\n<hr>\n<a name=\"Method:setHorizontalAlignment\"></a>\n<pre class=detailCode>\nvoid setHorizontalAlignment(GTable::Alignment alignment);\n</pre>\n<div class=detailHTML>\nSets the horizontal alignment of the text in all cells in the table.\nThe alignment can be <code>GTable::Alignment::LEFT</code>, <code>GTable::Alignment::CENTER</code>, or <code>GTable::Alignment::RIGHT</code> and is initially <code>LEFT</code>.\nCurrently a table's alignment is global and applies to all cells.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ntable-&gt;setHorizontalAlignment(alignment);\n</pre>\n\n\n<hr>\n<a name=\"Method:width\"></a>\n<pre class=detailCode>\nint width() const;\n</pre>\n<div class=detailHTML>\nReturns the number of columns in the table.\nEquivalent to <code>numCols()</code>.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint width = table-&gt;width();\n</pre>\n\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GTable-class.html",
    "content": "<html>\n\t<head>\n\t\t<meta http-equiv=\"Refresh\" content=\"0; url=doxygen/classGTable.html\">\n\t</head>\n\t\n\t<body>\n\t\t<p>\n\t\t\tThis page has moved to <a href=\"doxygen/classGTable.html\">.\n\t\t\tClick this link if you are not redirected automatically.\n\t\t</p>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GTableEvent-class-old.html",
    "content": "<html>\n<head>\n<title>GTableEvent</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"gevents.html\">#include \"gevents.h\"</a></div>\n<h1 class=header><code>class GTableEvent : public <a href=\"GEvent-class.html\">GEvent</a></code></h1>\nThis event subclass represents a table event.  Each mouse event\nrecords the event type (<code>TABLE_UPDATED</code>) along\nwith the row, column, and cell value of the event.\n\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Methods</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getColumn\">getColumn()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the column that was updated.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getRow\">getRow()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the row that was updated.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getValue\">getValue()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the text in the cell that was updated.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Converts the event to a human-readable representation of the event.</td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GTableEvent-class.html",
    "content": "<html>\n\t<head>\n\t\t<meta http-equiv=\"Refresh\" content=\"0; url=doxygen/classGEvent.html\">\n\t</head>\n\t\n\t<body>\n\t\t<p>\n\t\t\tThis page has moved to <a href=\"doxygen/classGEvent.html\">.\n\t\t\tClick this link if you are not redirected automatically.\n\t\t</p>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GText-class.html",
    "content": "<html>\n\t<head>\n\t\t<meta http-equiv=\"Refresh\" content=\"0; url=doxygen/classGText.html\">\n\t</head>\n\t\n\t<body>\n\t\t<p>\n\t\t\tThis page has moved to <a href=\"doxygen/classGText.html\">.\n\t\t\tClick this link if you are not redirected automatically.\n\t\t</p>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GTextField-class-old.html",
    "content": "<html>\n<head>\n<title>GTextField</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"ginteractors.html\">#include \"ginteractors.h\"</a></div>\n<h1 class=header><code>class GTextField : public <a href=\"GInteractor-class.html\">GInteractor</a></code></h1>\nThis interactor subclass represents a text field for entering short\ntext strings.  Hitting enter in a text field generates a\n<code>GActionEvent</code> if the text field has a nonempty action command.\n\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Constructor</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Constructor:GTextField\">GTextField()</a><br>\n<a href=\"#Constructor:GTextField\">GTextField(<var>nChars</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a text field capable of holding <code>nChars</code> characters, which defaults to 10.</td></tr>\n<tr><td class=indexHead colspan=2>Methods</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getText\">getText()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the contents of the text field.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setText\">setText(<var>str</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the text of the field to the specified string.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:GTextField\"></a>\n<pre class=detailCode>\nGTextField();\nGTextField(int nChars);\n</pre>\n<div class=detailHTML>\nCreates a text field capable of holding <code>nChars</code> characters,\nwhich defaults to 10.  Assigning an action command to the text field\ncauses it to generate an action event whenever the user types the\nENTER key.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGTextField* field = new GTextField();\nGTextField* field = new GTextField(nChars);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:setText\"></a>\n<pre class=detailCode>\nvoid setText(string str);\n</pre>\n<div class=detailHTML>\nSets the text of the field to the specified string.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfield-&gt;setText(str);\n</pre>\n<hr>\n<a name=\"Method:getText\"></a>\n<pre class=detailCode>\nstring getText();\n</pre>\n<div class=detailHTML>\nReturns the contents of the text field.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = field-&gt;getText();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GTextField-class.html",
    "content": "<html>\n\t<head>\n\t\t<meta http-equiv=\"Refresh\" content=\"0; url=doxygen/classGTextField.html\">\n\t</head>\n\t\n\t<body>\n\t\t<p>\n\t\t\tThis page has moved to <a href=\"doxygen/classGTextField.html\">.\n\t\t\tClick this link if you are not redirected automatically.\n\t\t</p>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GTimer-class-old.html",
    "content": "<html>\n<head>\n<title>GTimer</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"gtimer.html\">#include \"gtimer.h\"</a></div>\n<h1 class=header><code>class GTimer</code></h1>\nThis class implements a simple interval timer that generates a\n<code>GTimerEvent</code> with a specified frequency.  Copying\na <code>GTimer</code> object is legal and creates an object that\nrefers to the same internal timer.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Constructor</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Constructor:GTimer\">GTimer(<var>milliseconds</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a timer object that generates a <code>GTimerEvent</code> each time the specified number of milliseconds has elapsed.</td></tr>\n<tr><td class=indexHead colspan=2>Methods</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:start\">start()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Starts the timer.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:stop\">stop()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Stops the timer so that it stops generating events until it is restarted.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:GTimer\"></a>\n<pre class=detailCode>\nGTimer(double milliseconds);\n</pre>\n<div class=detailHTML>\nCreates a timer object that generates a <code>GTimerEvent</code>\neach time the specified number of milliseconds has elapsed.  No\nevents are generated until the client calls <code>start</code>\non the timer.  For more details on using timers, see the documentation\nfor the <a href=\"GTimerEvent-class.html\"><code>GTimerEvent</code></a>\nclass.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGTimer timer(milliseconds);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:start\"></a>\n<pre class=detailCode>\nvoid start();\n</pre>\n<div class=detailHTML>\nStarts the timer.  A timer continues to generate timer events until it\nis stopped; to achieve the effect of a one-shot timer, the simplest\napproach is to call the <code>stop</code> method inside the event\nhandler.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ntimer.start();\n</pre>\n<hr>\n<a name=\"Method:stop\"></a>\n<pre class=detailCode>\nvoid stop();\n</pre>\n<div class=detailHTML>\nStops the timer so that it stops generating events until it is restarted.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ntimer.stop();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GTimer-class.html",
    "content": "<html>\n\t<head>\n\t\t<meta http-equiv=\"Refresh\" content=\"0; url=doxygen/classGTimer.html\">\n\t</head>\n\t\n\t<body>\n\t\t<p>\n\t\t\tThis page has moved to <a href=\"doxygen/classGTimer.html\">.\n\t\t\tClick this link if you are not redirected automatically.\n\t\t</p>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GTimerEvent-class-old.html",
    "content": "<html>\n<head>\n<title>GTimerEvent</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"gevents.html\">#include \"gevents.h\"</a></div>\n<h1 class=header><code>class GTimerEvent : public <a href=\"GEvent-class.html\">GEvent</a></code></h1>\nThis event subclass represents a timer event.  Timer events are\ngenerated by a <a href=\"GTimer-class.html\"><code>GTimer</code></a>\nobject, which produces a new event at a fixed interval measured in\nmilliseconds.  As an example, the following program generates a\ntimer event every two seconds, stopping when the user clicks\nsomewhere in the window:\n\n<pre>\n   int main() {\n      cout &lt;&lt; &quot;This program generates timer events.&quot; &lt;&lt; endl;\n      GTimer timer(2000);\n      timer.start();\n      while (true) {\n         GEvent e = waitForEvent(CLICK_EVENT | TIMER_EVENT);\n         if (e.getEventType() == MOUSE_CLICKED) break;\n         cout << \"Timer ticked\" << endl;\n      }\n      return 0;\n   }\n</pre>\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Constructor</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Constructor:GTimerEvent\">GTimerEvent(<var>type</var>,&nbsp;<var>timer</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a <code>GTimerEvent</code> for the specified timer.</td></tr>\n<tr><td class=indexHead colspan=2>Methods</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getGTimer\">getGTimer()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the timer that generated this event.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Converts the event to a human-readable representation of the event.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:GTimerEvent\"></a>\n<pre class=detailCode>\nGTimerEvent(EventType type, const GTimer&amp; timer);\n</pre>\n<div class=detailHTML>\nCreates a <code>GTimerEvent</code> for the specified timer.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGTimerEvent timerEvent(type, timer);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:getGTimer\"></a>\n<pre class=detailCode>\nGTimer getGTimer() const;\n</pre>\n<div class=detailHTML>\nReturns the timer that generated this event.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGTimer timer = e.getGTimer();\n</pre>\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString() const;\n</pre>\n<div class=detailHTML>\nConverts the event to a human-readable representation of the event.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = e.toString();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GTimerEvent-class.html",
    "content": "<html>\n\t<head>\n\t\t<meta http-equiv=\"Refresh\" content=\"0; url=doxygen/classGEvent.html\">\n\t</head>\n\t\n\t<body>\n\t\t<p>\n\t\t\tThis page has moved to <a href=\"doxygen/classGEvent.html\">.\n\t\t\tClick this link if you are not redirected automatically.\n\t\t</p>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GWindow-class-old.html",
    "content": "<html>\n<head>\n<title>GWindow</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"gwindow.html\">#include \"gwindow.h\"</a></div>\n<h1 class=header><code>class GWindow</code></h1>\nThis class represents a graphics window that supports simple graphics.\nEach <code>GWindow</code> consists of two layers.  The background layer\nprovides a surface for drawing static pictures that involve no animation.\nGraphical objects drawn in the background layer are persistent and do\nnot require the client to update the contents of the window.  The\nforeground layer contains graphical objects that are redrawn as necessary.\n\n<p>The <code>GWindow</code> class includes several methods that draw\nlines, rectangles, and ovals on the background layer without making\nuse of the facilities of the <code>gobjects.h</code> interface.  For\nexample, the following program draws a diamond, rectangle, and oval\nat the center of the window.\n\n<pre>\n   int main() {\n      GWindow gw;\n      cout &lt;&lt; &quot;This program draws a diamond, rectangle, and oval.&quot; &lt;&lt; endl;\n      double width = gw.getWidth();\n      double height = gw.getHeight();\n      gw.drawLine(0, height / 2, width / 2, 0);\n      gw.drawLine(width / 2, 0, width, height / 2);\n      gw.drawLine(width, height / 2, width / 2, height);\n      gw.drawLine(width / 2, height, 0, height / 2);\n      gw.setColor(\"BLUE\");\n      gw.fillRect(width / 4, height / 4, width / 2, height / 2);\n      gw.setColor(\"GRAY\");\n      gw.fillOval(width / 4, height / 4, width / 2, height / 2);\n      return 0;\n   }\n</pre>\n\nA <code>GWindow</code> object may be freely copied, after which all\ncopies refer to the same window.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Constructor</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Constructor:GWindow\">GWindow()</a><br>\n<a href=\"#Constructor:GWindow\">GWindow(<var>width</var>,&nbsp;<var>height</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a window, either of the specified size or a default size.</td></tr>\n\n<tr><td class=indexHead colspan=2>Methods</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:add\">add(<var>gobj</var>)</a><br>\n<a href=\"#Method:add\">add(<var>gobj</var>,&nbsp;<var>x</var>,&nbsp;<var>y</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Adds the <code>GObject</code> to the foreground layer of the window.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:addToRegion\">addToRegion(<var>interactor</var>,&nbsp;<var>region</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Adds the interactor (which can also be a <code>GLabel</code>) to the control strip specified by the <code>region</code> parameter.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:clear\">clear()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Clears the contents of the window.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:close\">close()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Deletes the window from the screen.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:draw\">draw(<var>gobj</var>)</a><br>\n<a href=\"#Method:draw\">draw(<var>gobj</var>,&nbsp;<var>x</var>,&nbsp;<var>y</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Draws the <code>GObject</code> on the background layer.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:drawLine\">drawLine(<var>p0</var>,&nbsp;<var>p1</var>)</a><br>\n<a href=\"#Method:drawLine\">drawLine(<var>x0</var>,&nbsp;<var>y0</var>,&nbsp;<var>x1</var>,&nbsp;<var>y1</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Draws a line connecting the specified points.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:drawOval\">drawOval(<var>bounds</var>)</a><br>\n<a href=\"#Method:drawOval\">drawOval(<var>x</var>,&nbsp;<var>y</var>,&nbsp;<var>width</var>,&nbsp;<var>height</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Draws the frame of a oval with the specified bounds.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:drawPolarLine\">drawPolarLine(<var>p0</var>,&nbsp;<var>r</var>,&nbsp;<var>theta</var>)</a><br>\n<a href=\"#Method:drawPolarLine\">drawPolarLine(<var>x0</var>,&nbsp;<var>y0</var>,&nbsp;<var>r</var>,&nbsp;<var>theta</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Draws a line of length <code>r</code> in the direction <code>theta</code> from the initial point.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:drawRect\">drawRect(<var>bounds</var>)</a><br>\n<a href=\"#Method:drawRect\">drawRect(<var>x</var>,&nbsp;<var>y</var>,&nbsp;<var>width</var>,&nbsp;<var>height</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Draws the frame of a rectangle with the specified bounds.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:fillOval\">fillOval(<var>bounds</var>)</a><br>\n<a href=\"#Method:fillOval\">fillOval(<var>x</var>,&nbsp;<var>y</var>,&nbsp;<var>width</var>,&nbsp;<var>height</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Fills the frame of a oval with the specified bounds.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:fillRect\">fillRect(<var>bounds</var>)</a><br>\n<a href=\"#Method:fillRect\">fillRect(<var>x</var>,&nbsp;<var>y</var>,&nbsp;<var>width</var>,&nbsp;<var>height</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Fills the frame of a rectangle with the specified bounds.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getColor\">getColor()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the current color as a string in the form <code>\"#rrggbb\"</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getGObjectAt\">getGObjectAt(<var>x</var>,&nbsp;<var>y</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a pointer to the topmost <code>GObject</code> containing the point (<code>x</code>, <code>y</code>), or <code>NULL</code> if no such object exists.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getHeight\">getHeight()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the height of the graphics window in pixels.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getWidth\">getWidth()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the width of the graphics window in pixels.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getWindowTitle\">getWindowTitle()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the title of the graphics window.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:isVisible\">isVisible()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Tests whether the window is visible.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:remove\">remove(<var>gobj</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Removes the object from the window.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:removeFromRegion\">removeFromRegion(<var>interactor</var>,&nbsp;<var>region</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Adds the interactor (which can also be a <code>GLabel</code>) to the control strip specified by the <code>region</code> parameter.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:repaint\">repaint()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Schedule a repaint on this window.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:requestFocus\">requestFocus()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Asks the system to assign the keyboard focus to the window, which brings it to the top and ensures that key events are delivered to the window.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setColor\">setColor(<var>color</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the color used for drawing.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setLocation\">setLocation(<var>x</var>,&nbsp;<var>y</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the window's x/y location on the screen.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setRegionAlignment\">setRegionAlignment(<var>region</var>,&nbsp;<var>align</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the alignment of the specified side region as specified by the string <code>align</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setSize\">setSize(<var>width</var>,&nbsp;<var>height</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the window's size in pixels.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setVisible\">setVisible(<var>flag</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Determines whether the window is visible on the screen.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setWindowTitle\">setWindowTitle(<var>title</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the title of the graphics window.</td></tr>\n\n<tr><td class=indexHead colspan=2>Operators</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Operator:!=\"><var>w1</var> != <var>w2</var></a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Checks whether the two objects refer to different windows.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Operator:==\"><var>w1</var> == <var>w2</var></a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Checks whether the two objects refer to the same window.</td></tr>\n\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:convertColorToRGB\">convertColorToRGB(<var>colorName</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Converts a color name into an integer that encodes the red, green, and blue components of the color.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:convertRGBToColor\">convertRGBToColor(<var>rgb</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Converts an <code>rgb</code> value into a color name in the form <code>\"#rrggbb\"</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:exitGraphics\">exitGraphics()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Closes all graphics windows and exits from the application without waiting for any additional user interaction.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getScreenHeight\">getScreenHeight()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the height of the entire display screen.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getScreenWidth\">getScreenWidth()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the width of the entire display screen.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:pause\">pause(<var>milliseconds</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Pauses for the indicated number of milliseconds.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:repaint\">repaint()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Issues a request to update all graphics windows.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:waitForClick\">waitForClick()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Waits for a mouse click to occur anywhere in any window.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:GWindow\"></a>\n<pre class=detailCode>\nGWindow();\nGWindow(double width, double height);\n</pre>\n<div class=detailHTML>\nCreates a window, either of the specified size or a default size.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGWindow gw;\nGWindow gw(width, height);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:close\"></a>\n<pre class=detailCode>\nvoid close();\n</pre>\n<div class=detailHTML>\nDeletes the window from the screen.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngw.close();\n</pre>\n<hr>\n<a name=\"Method:requestFocus\"></a>\n<pre class=detailCode>\nvoid requestFocus();\n</pre>\n<div class=detailHTML>\nAsks the system to assign the keyboard focus to the window, which\nbrings it to the top and ensures that key events are delivered to\nthe window.  Clicking in the window automatically requests the focus.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngw.requestFocus();\n</pre>\n<hr>\n<a name=\"Method:clear\"></a>\n<pre class=detailCode>\nvoid clear();\n</pre>\n<div class=detailHTML>\nClears the contents of the window.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngw.clear();\n</pre>\n\n<hr>\n<a name=\"Method:setLocation\"></a>\n<pre class=detailCode>\nvoid setLocation(int x, int y);\n</pre>\n<div class=detailHTML>\nSets the window's x/y location on the screen.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngw.setLocation(x, y);\n</pre>\n\n<hr>\n<a name=\"Method:setSize\"></a>\n<pre class=detailCode>\nvoid setSize(int width, int height);\n</pre>\n<div class=detailHTML>\nSets the window's size in pixels.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngw.setSize(width, height);\n</pre>\n\n<hr>\n<a name=\"Method:setVisible\"></a>\n<pre class=detailCode>\nvoid setVisible(bool flag);\n</pre>\n<div class=detailHTML>\nDetermines whether the window is visible on the screen.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngw.setVisible(flag);\n</pre>\n<hr>\n<a name=\"Method:isVisible\"></a>\n<pre class=detailCode>\nbool isVisible();\n</pre>\n<div class=detailHTML>\nTests whether the window is visible.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (gw.isVisible()) ...\n</pre>\n<hr>\n<a name=\"Method:drawLine\"></a>\n<pre class=detailCode>\nvoid drawLine(const GPoint&amp; p0, const GPoint&amp; p1);\nvoid drawLine(double x0, double y0, double x1, double y1);\n</pre>\n<div class=detailHTML>\nDraws a line connecting the specified points.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngw.drawLine(p0, p1);\ngw.drawLine(x0, y0, x1, y1);\n</pre>\n<hr>\n<a name=\"Method:drawPolarLine\"></a>\n<pre class=detailCode>\nGPoint drawPolarLine(const GPoint&amp; p0, double r, double theta);\nGPoint drawPolarLine(double x0, double y0, double r, double theta);\n</pre>\n<div class=detailHTML>\nDraws a line of length <code>r</code> in the direction <code>theta</code>\nfrom the initial point.  The angle <code>theta</code> is measured in\ndegrees counterclockwise from the +<i>x</i> axis.  The method returns\nthe end point of the line.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGPoint p1 = gw.drawPolarLine(p0, r, theta);\nGPoint p1 = gw.drawPolarLine(x0, y0, r, theta);\n</pre>\n<hr>\n<a name=\"Method:drawOval\"></a>\n<pre class=detailCode>\nvoid drawOval(const GRectangle&amp; bounds);\nvoid drawOval(double x, double y, double width, double height);\n</pre>\n<div class=detailHTML>\nDraws the frame of a oval with the specified bounds.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngw.drawOval(bounds);\ngw.drawOval(x, y, width, height);\n</pre>\n<hr>\n<a name=\"Method:fillOval\"></a>\n<pre class=detailCode>\nvoid fillOval(const GRectangle&amp; bounds);\nvoid fillOval(double x, double y, double width, double height);\n</pre>\n<div class=detailHTML>\nFills the frame of a oval with the specified bounds.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngw.fillOval(bounds);\ngw.fillOval(x, y, width, height);\n</pre>\n<hr>\n<a name=\"Method:drawRect\"></a>\n<pre class=detailCode>\nvoid drawRect(const GRectangle&amp; bounds);\nvoid drawRect(double x, double y, double width, double height);\n</pre>\n<div class=detailHTML>\nDraws the frame of a rectangle with the specified bounds.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngw.drawRect(bounds);\ngw.drawRect(x, y, width, height);\n</pre>\n<hr>\n<a name=\"Method:fillRect\"></a>\n<pre class=detailCode>\nvoid fillRect(const GRectangle&amp; bounds);\nvoid fillRect(double x, double y, double width, double height);\n</pre>\n<div class=detailHTML>\nFills the frame of a rectangle with the specified bounds.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngw.fillRect(bounds);\ngw.fillRect(x, y, width, height);\n</pre>\n<hr>\n<a name=\"Method:setColor\"></a>\n<pre class=detailCode>\nvoid setColor(string color);\nvoid setColor(int color);\n</pre>\n<div class=detailHTML>\nSets the color used for drawing.  The <code>color</code> parameter is\nusually one of the predefined color names:\n\n   <code>BLACK</code>,\n   <code>BLUE</code>,\n   <code>CYAN</code>,\n   <code>DARK_GRAY</code>,\n   <code>GRAY</code>,\n   <code>GREEN</code>,\n   <code>LIGHT_GRAY</code>,\n   <code>MAGENTA</code>,\n   <code>ORANGE</code>,\n   <code>PINK</code>,\n   <code>RED</code>,\n   <code>WHITE</code>, and\n   <code>YELLOW</code>.\n\nThe case of the individual letters in the color name is ignored, as\nare spaces and underscores, so that the color <code>DARK_GRAY</code>\ncan be written as <code>\"Dark Gray\"</code>.\n\n<p>The color can also be specified as a string in the form\n<code>\"#rrggbb\"</code> where <code>rr</code>, <code>gg</code>, and\n<code>bb</code> are pairs of hexadecimal digits indicating the\nred, green, and blue components of the color.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngw.setColor(color);\n</pre>\n<hr>\n<a name=\"Method:getColor\"></a>\n<pre class=detailCode>\nstring getColor();\n</pre>\n<div class=detailHTML>\nReturns the current color as a string in the form <code>\"#rrggbb\"</code>.\nIn this string, the values <code>rr</code>, <code>gg</code>,\nand <code>bb</code> are two-digit hexadecimal values representing\nthe red, green, and blue components of the color, respectively.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring color = gw.getColor();\n</pre>\n<hr>\n<a name=\"Method:getWidth\"></a>\n<pre class=detailCode>\ndouble getWidth();\n</pre>\n<div class=detailHTML>\nReturns the width of the graphics window in pixels.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble width = gw.getWidth();\n</pre>\n<hr>\n<a name=\"Method:getHeight\"></a>\n<pre class=detailCode>\ndouble getHeight();\n</pre>\n<div class=detailHTML>\nReturns the height of the graphics window in pixels.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble height = gw.getHeight();\n</pre>\n<hr>\n<a name=\"Method:repaint\"></a>\n<pre class=detailCode>\nvoid repaint();\n</pre>\n<div class=detailHTML>\nSchedule a repaint on this window.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngw.repaint();\n</pre>\n<hr>\n<a name=\"Method:setWindowTitle\"></a>\n<pre class=detailCode>\nvoid setWindowTitle(string title);\n</pre>\n<div class=detailHTML>\nSets the title of the graphics window.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngw.setWindowTitle(title);\n</pre>\n<hr>\n<a name=\"Method:getWindowTitle\"></a>\n<pre class=detailCode>\nstring getWindowTitle();\n</pre>\n<div class=detailHTML>\nReturns the title of the graphics window.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring title = gw.getWindowTitle();\n</pre>\n<hr>\n<a name=\"Method:draw\"></a>\n<pre class=detailCode>\nvoid draw(const GObject&amp; gobj);\nvoid draw(GObject* gobj);\nvoid draw(const GObject* gobj);\nvoid draw(GObject&amp; gobj, double x, double y);\nvoid draw(GObject* gobj, double x, double y);\n</pre>\n<div class=detailHTML>\nDraws the <code>GObject</code> on the background layer.  For convenience,\nthe <code>gobj</code> parameter may be passed either as a constant\nreference or as a pointer.  If the <code>x</code> and <code>y</code>\nparameters are included, the object is moved to that location before\ndrawing.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngw.draw(gobj);\ngw.draw(gobj, x, y);\n</pre>\n<hr>\n<a name=\"Method:add\"></a>\n<pre class=detailCode>\nvoid add(GObject* gobj);\nvoid add(GObject* gobj, double x, double y);\n</pre>\n<div class=detailHTML>\nAdds the <code>GObject</code> to the foreground layer of the window.\nThe second form of the call sets the location of the object to\n(<code>x</code>, <code>y</code>) first.\n\n<p>In terms of memory management, adding a <code>GObject</code> pointer to\na <code>GWindow</code> transfers control of that object from the client to\nthe window manager.  Deleting a <code>GWindow</code> automatically deletes\nany <nobr><code>GObject</code><font size=-1>s</font></nobr> it contains.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngw.add(gobj);\ngw.add(gobj, x, y);\n</pre>\n<hr>\n<a name=\"Method:remove\"></a>\n<pre class=detailCode>\nvoid remove(GObject* gobj);\n</pre>\n<div class=detailHTML>\nRemoves the object from the window.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngw.remove(gobj);\n</pre>\n<hr>\n<a name=\"Method:addToRegion\"></a>\n<pre class=detailCode>\nvoid addToRegion(GInteractor* gobj, string region);\nvoid addToRegion(GLabel* gobj, string region);\n</pre>\n<div class=detailHTML>\nAdds the interactor (which can also be a <code>GLabel</code>) to\nthe control strip specified by the <code>region</code> parameter.\nThe <code>region</code> parameter must be one of the strings\n<code>\"NORTH\"</code>, <code>\"EAST\"</code>, <code>\"SOUTH\"</code>,\nor <code>\"WEST\"</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngw.addToRegion(interactor, region);\n</pre>\n<hr>\n<a name=\"Method:removeFromRegion\"></a>\n<pre class=detailCode>\nvoid removeFromRegion(GInteractor* gobj, string region);\nvoid removeFromRegion(GLabel* gobj, string region);\n</pre>\n<div class=detailHTML>\nAdds the interactor (which can also be a <code>GLabel</code>) to\nthe control strip specified by the <code>region</code> parameter.\nThe <code>region</code> parameter must be one of the strings\n<code>\"NORTH\"</code>, <code>\"EAST\"</code>, <code>\"SOUTH\"</code>,\nor <code>\"WEST\"</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngw.removeFromRegion(interactor, region);\n</pre>\n<hr>\n<a name=\"Method:getGObjectAt\"></a>\n<pre class=detailCode>\nGObject* getGObjectAt(double x, double y);\n</pre>\n<div class=detailHTML>\nReturns a pointer to the topmost <code>GObject</code> containing the\npoint (<code>x</code>, <code>y</code>), or <code>NULL</code> if no such\nobject exists.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGObject* gobj = getGObjectAt(x, y);\n</pre>\n<hr>\n<a name=\"Method:setRegionAlignment\"></a>\n<pre class=detailCode>\nvoid setRegionAlignment(string region, string align);\n</pre>\n<div class=detailHTML>\nSets the alignment of the specified side region as specified by the\nstring <code>align</code>.  The <code>region</code> parameter must be\none of the strings <code>\"NORTH\"</code>, <code>\"EAST\"</code>,\n<code>\"SOUTH\"</code>, or <code>\"WEST\"</code> and the <code>align</code>\nparameter must be <code>\"LEFT\"</code>, <code>\"RIGHT\"</code>, or\n<code>\"CENTER\"</code>.  By default, side panels use\n<code>CENTER</code> alignment.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngw.setRegionAlignment(region, align);\n</pre>\n<hr>\n</table>\n<h2>Operator detail</h2>\n<hr>\n<a name=\"Operator:==\"></a>\n<pre class=detailCode>\nbool operator==(GWindow w2);\n</pre>\n<div class=detailHTML>\nChecks whether the two objects refer to the same window.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (w1 == w2) ...\n</pre>\n<hr>\n<a name=\"Operator:!=\"></a>\n<pre class=detailCode>\nbool operator!=(GWindow w2);\n</pre>\n<div class=detailHTML>\nChecks whether the two objects refer to different windows.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (w1 != w2) ...\n</pre>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:repaint\"></a>\n<pre class=detailCode>\nvoid repaint();\n</pre>\n<div class=detailHTML>\nIssues a request to update all graphics windows.  This function\nis called automatically when the program pauses, waits for an\nevent, waits for user input on the console, or terminates.  As\na result, most clients never need to call repaint explicitly.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nrepaint();\n</pre>\n<hr>\n<a name=\"Function:pause\"></a>\n<pre class=detailCode>\nvoid pause(double milliseconds);\n</pre>\n<div class=detailHTML>\nPauses for the indicated number of milliseconds.  This function is\nuseful for animation where the motion would otherwise be too fast.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\npause(milliseconds);\n</pre>\n<hr>\n<a name=\"Function:getScreenWidth\"></a>\n<pre class=detailCode>\ndouble getScreenWidth();\n</pre>\n<div class=detailHTML>\nReturns the width of the entire display screen.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nwidth = getScreenWidth();\n</pre>\n<hr>\n<a name=\"Function:getScreenHeight\"></a>\n<pre class=detailCode>\ndouble getScreenHeight();\n</pre>\n<div class=detailHTML>\nReturns the height of the entire display screen.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nheight = getScreenHeight();\n</pre>\n<hr>\n<a name=\"Function:convertColorToRGB\"></a>\n<pre class=detailCode>\nint convertColorToRGB(string colorName);\n</pre>\n<div class=detailHTML>\nConverts a color name into an integer that encodes the\nred, green, and blue components of the color.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint rgb = convertColorToRGB(colorName);\n</pre>\n<hr>\n<a name=\"Function:convertRGBToColor\"></a>\n<pre class=detailCode>\nstring convertRGBToColor(int rgb);\n</pre>\n<div class=detailHTML>\nConverts an <code>rgb</code> value into a color name in the\nform <code>\"#rrggbb\"</code>.  Each of the <code>rr</code>,\n<code>gg</code>, and <code>bb</code> values are two-digit\nhexadecimal numbers indicating the intensity of that component.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint colorName = convertRGBToColor(rgb);\n</pre>\n<hr>\n<a name=\"Function:waitForClick\"></a>\n<pre class=detailCode>\nvoid waitForClick();\n</pre>\n<div class=detailHTML>\nWaits for a mouse click to occur anywhere in any window.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nwaitForClick();\n</pre>\n<hr>\n<a name=\"Function:exitGraphics\"></a>\n<pre class=detailCode>\nvoid exitGraphics();\n</pre>\n<div class=detailHTML>\nCloses all graphics windows and exits from the application without\nwaiting for any additional user interaction.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nexitGraphics();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GWindow-class.html",
    "content": "<html>\n\t<head>\n\t\t<meta http-equiv=\"Refresh\" content=\"0; url=doxygen/classGWindow.html\">\n\t</head>\n\t\n\t<body>\n\t\t<p>\n\t\t\tThis page has moved to <a href=\"doxygen/classGWindow.html\">.\n\t\t\tClick this link if you are not redirected automatically.\n\t\t</p>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GWindowEvent-class-old.html",
    "content": "<html>\n<head>\n<title>GWindowEvent</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"gevents.html\">#include \"gevents.h\"</a></div>\n<h1 class=header><code>class GWindowEvent : public <a href=\"GEvent-class.html\">GEvent</a></code></h1>\nThis event subclass represents a window event.\nEach <code>GWindowEvent</code> keeps track of the event type\n(<code>WINDOW_CLOSED</code>, <code>WINDOW_RESIZED</code>) along\nwith the identity of the window.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Constructor</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Constructor:GWindowEvent\">GWindowEvent(<var>type</var>,&nbsp;<var>gw</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a <code>GWindowEvent</code> using the specified parameters.</td></tr>\n<tr><td class=indexHead colspan=2>Methods</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getGWindow\">getGWindow()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the graphics window in which this event occurred.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Converts the event to a human-readable representation of the event.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:GWindowEvent\"></a>\n<pre class=detailCode>\nGWindowEvent(EventType type, const GWindow&amp; gw);\n</pre>\n<div class=detailHTML>\nCreates a <code>GWindowEvent</code> using the specified parameters.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGWindowEvent windowEvent(type, gw);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:getGWindow\"></a>\n<pre class=detailCode>\nGWindow getGWindow() const;\n</pre>\n<div class=detailHTML>\nReturns the graphics window in which this event occurred.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGWindow gw = e.getGWindow();\n</pre>\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString() const;\n</pre>\n<div class=detailHTML>\nConverts the event to a human-readable representation of the event.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = e.toString();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/GWindowEvent-class.html",
    "content": "<html>\n\t<head>\n\t\t<meta http-equiv=\"Refresh\" content=\"0; url=doxygen/classGEvent.html\">\n\t</head>\n\t\n\t<body>\n\t\t<p>\n\t\t\tThis page has moved to <a href=\"doxygen/classGEvent.html\">.\n\t\t\tClick this link if you are not redirected automatically.\n\t\t</p>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/Graph-class.html",
    "content": "<html>\n<head>\n<title>Graph</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"graph.html\">#include \"graph.h\"</a></div>\n<h1 class=header><code>class Graph&lt;<var>NodeType</var>,&nbsp;<var>ArcType</var>&gt;</code></h1>\nThis class represents a directed, unweighted graph that allows you to parameterize the type of data that is stored at each node (vertex) and arc (edge).\nThe <code>NodeType</code> and <code>ArcType</code> parameters indicate\nthe structure type or class used for nodes and arcs, respectively.\nThese types can contain any fields or methods required by the client,\nbut must contain the following fields required by the <code>Graph</code>\npackage itself:\n\n<p>The <code>NodeType</code> definition must include:\n<ul>\n  <li>A parameterless constructor</li>\n  <li>A <code>string</code> field called <code>name</code>\n  <li>A <code>Set&lt;ArcType*&gt;</code> field called <code>arcs</code>\n</ul>\n\n<p>The <code>ArcType</code> definition must include:\n<ul>\n  <li>A parameterless constructor</li>\n  <li>A <code>NodeType*</code> field called <code>start</code>\n  <li>A <code>NodeType*</code> field called <code>finish</code>\n</ul>\n\n<p>\nFor most usage, the <a href=\"BasicGraph-class.html\"><code>BasicGraph</code></a> class may be preferable to this class.\nIt contains a default implementation of the above types, named <code>Vertex</code> and <code>Edge</code> respectively, and provides additional members for convenience.\n\n<p>If you want to use this class to represent an undirected graph, doubly add each arc.  For example, every time you call <code>addArc(a, b);</code>, also call <code>addArc(b, a);</code>.  If you want to use this class to represent a weighted graph, one way to do so is to add a field such as <code>cost</code> to your <code>ArcType</code> and use it in your own graph algorithms.</p>\n\n<p>The internal representation of this graph is an <em>adjacency list</em>, which is very efficient for iterating over neighbors of a given node, but less efficient for asking whether two given nodes are neighbors.</p>\n\n<p>Until the 2014/10/20 version of the library, unlike with several of the other collections, you could not directly perform a for-each loop over a <code>Graph</code>.\nYou can, however, for-each over the nodes by calling <code>getNodeSet</code> on the <code>Graph</code>, or over the arcs\nby calling <code>getArcSet</code> on the <code>Graph</code>.\nSince 2014/10/20 version of the library, performing a for-each loop over a <code>Graph</code> is supported and is equivalent to looping over the node set.\n</p>\n\n<p>\n\t<em>Note about pointers:</em>\n\tSeveral <code>Graph</code> members return various pointers to nodes and arcs.\n\tAny such pointers returned are direct pointers to the internal structures inside of this graph.\n\tIf the graph itself falls out of scope, is cleared, etc., or if the given node/arc is removed from the graph, this pointer will become invalid.\n\tUndefined behavior and crashes will result if you retain pointers to node/arcs that live on beyond the life span of the graph.\n</p>\n\n<p>\n\tFor the purposes of Big-Oh listing, some members are proportional to the number of nodes N, and some are proportional to the number of arcs A.\n</p>\n\n<table class=index width=100%>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Constructor</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Constructor:Graph\">Graph()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Creates an empty <code>Graph</code> object.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Methods</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:addArc\">addArc(<var>s1</var>,&nbsp;<var>s2</var>)</a><br>\n\t\t\t<a href=\"#Method:addArc\">addArc(<var>node1</var>,&nbsp;<var>node2</var>)</a><br>\n\t\t\t<a href=\"#Method:addArc\">addArc(<var>arc</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(log N + log A)</td>\n\t\t<td class=indexSynopsis width=100%>Adds an arc to the graph.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:addNode\">addNode(<var>name</var>)</a><br>\n\t\t\t<a href=\"#Method:addNode\">addNode(<var>node</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(log N)</td>\n\t\t<td class=indexSynopsis width=100%>Adds a node to the graph.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:clear\">clear()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N + A)</td>\n\t\t<td class=indexSynopsis width=100%>Reinitializes the graph to be empty, freeing any heap storage.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:getArcSet\">getArcSet()</a></nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the set of all arcs in the graph.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:getArcSet\">getArcSet(<var>node</var>)</a><br>\n\t\t\t<a href=\"#Method:getArcSet\">getArcSet(<var>name</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(log N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the set of arcs that start at the specified node, which can be indicated either as a pointer or by name.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:getNeighbors\">getNeighbors(<var>node</var>)</a><br>\n\t\t\t<a href=\"#Method:getNeighbors\">getNeighbors(<var>name</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(log N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the set of nodes that are neighbors of the specified node, which can be indicated either as a pointer or by name.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:getNode\">getNode(<var>name</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(log N)</td>\n\t\t<td class=indexSynopsis width=100%>Looks up a node in the name table attached to the graph and returns a pointer to that node.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:getNodeSet\">getNodeSet()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the set of all nodes in the graph.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:isConnected\">isConnected(<var>node1</var>,&nbsp;<var>node2</var>)</a><br>\n\t\t\t<a href=\"#Method:isConnected\">isConnected(<var>s1</var>,&nbsp;<var>s2</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(log N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the graph contains an arc from <code>n1</code> to <code>n2</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:isEmpty\">isEmpty()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the graph contains no nodes or arcs.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:removeArc\">removeArc(<var>s1</var>,&nbsp;<var>s2</var>)</a><br>\n\t\t\t<a href=\"#Method:removeArc\">removeArc(<var>node1</var>,&nbsp;<var>node2</var>)</a><br>\n\t\t\t<a href=\"#Method:removeArc\">removeArc(<var>arc</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(A + log N)</td>\n\t\t<td class=indexSynopsis width=100%>Removes an arc from the graph, where the arc can be specified in any of three ways: by the names of its endpoints, by the node pointers at its endpoints, or as an arc pointer.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:removeNode\">removeNode(<var>name</var>)</a><br>\n\t\t\t<a href=\"#Method:removeNode\">removeNode(<var>node</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(A + log N)</td>\n\t\t<td class=indexSynopsis width=100%>Removes a node from the graph, where the node can be specified either by its name or as a pointer value.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:size\">size()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the number of nodes in the graph.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N + A)</td>\n\t\t<td class=indexSynopsis width=100%>Converts the graph to a printable string representation.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Operators</td>\n\t</tr>\n\t<!--\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:==\"><var>pq1</var> == <var>pq1</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>pq1</code> and <code>pq2</code> contain the same elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:!=\"><var>pq1</var> != <var>pq2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>pq1</code> and <code>pq2</code> are different.</td>\n\t</tr>\n\t-->\n\t<tr>\n\t\t<td class=indexKey><nobr><var>ostream</var>&nbsp;&lt;&lt;&nbsp;<var>graph</var></nobr></td>\n\t\t<td class=\"bigoh\">O(V + E)</td>\n\t\t<td class=indexSynopsis width=100%>Outputs the contents of the graph to the given output stream.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><var>istream</var>&nbsp;&gt;&gt;&nbsp;<var>graph</var></nobr></td>\n\t\t<td class=\"bigoh\">O(V log V + E log E)</td>\n\t\t<td class=indexSynopsis width=100%>Reads the contents of the given input stream into the graph.</td>\n\t</tr>\n</table>\n\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:Graph\"></a>\n<pre class=detailCode>\nGraph();\n</pre>\n<div class=detailHTML>\nCreates an empty <code>Graph</code> object.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGraph&lt;NodeType,ArcType&gt; g;\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:size\"></a>\n<pre class=detailCode>\nint size() const;\n</pre>\n<div class=detailHTML>\nReturns the number of nodes in the graph.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint size = g.size();\n</pre>\n<hr>\n<a name=\"Method:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty() const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the graph contains no nodes.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (g.isEmpty()) ...\n</pre>\n<hr>\n<a name=\"Method:clear\"></a>\n<pre class=detailCode>\nvoid clear();\n</pre>\n<div class=detailHTML>\nReinitializes the graph to be empty of all nodes and arcs, freeing any heap storage.\n(The heap memory associated with all nodes and arcs that have been previously added\nto the graph will be freed.)\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ng.clear();\n</pre>\n<hr>\n<a name=\"Method:addNode\"></a>\n<pre class=detailCode>\nNodeType* addNode(string name);\nNodeType* addNode(NodeType* node);\n</pre>\n<div class=detailHTML>\nAdds a node to the graph.  The first version of this method\ncreates a new node of the appropriate type and initializes its\nfields; the second assumes that the client has already created\nthe node and simply adds it to the graph.  Both versions of this\nmethod return a pointer to the node.\n<p>The nodes in a graph must have unique names.  If this graph\nalready contains a node with the given name, or if <code>NULL</code> is\npassed to the second version of this function,\n<code>addNode</code> throws an error.\n\n<p>The pointer returned is a direct pointer to the internal structure inside this graph, and will become invalid if the node is removed or if the graph itself falls out of scope.</p>\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nNodeType* node = g.addNode(name);\nNodeType* node = g.addNode(node);\n</pre>\n<hr>\n<a name=\"Method:removeNode\"></a>\n<pre class=detailCode>\nvoid removeNode(string name);\nvoid removeNode(NodeType* node);\n</pre>\n<div class=detailHTML>\nRemoves a node from the graph, where the node can be specified\neither by its name or as a pointer value.  Removing a node also\nremoves all arcs that contain that node.\n\n<p>If <code>NULL</code> is passed to the second version of this function,\nor this graph does not contain the given node or a node with the given name,\nthe function throws an error.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ng.removeNode(name);\ng.removeNode(node);\n</pre>\n<hr>\n<a name=\"Method:getNode\"></a>\n<pre class=detailCode>\nNodeType* getNode(string name) const;\n</pre>\n<div class=detailHTML>\nLooks up a node in the name table attached to the graph and\nreturns a pointer to that node.  If no node with the specified\nname exists, <code>getNode</code> returns <code>NULL</code>.\n\n<p>The pointer returned is a direct pointer to the internal structure inside this graph, and will become invalid if the node is removed or if the graph itself falls out of scope.</p>\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nNodeType* node = g.getNode(name);\n</pre>\n<hr>\n<a name=\"Method:addArc\"></a>\n<pre class=detailCode>\nArcType* addArc(string s1, string s2);\nArcType* addArc(NodeType* n1, NodeType* n2);\nArcType* addArc(ArcType* arc);\n</pre>\n<div class=detailHTML>\nAdds an arc to the graph.  The endpoints of the arc can be specified\neither as strings indicating the names of the nodes or as pointers\nto the node structures.  Alternatively, the client can create the arc\nstructure explicitly and pass that pointer to the <code>addArc</code>\nmethod.  All three of these versions return a pointer to the arc in\ncase the client needs to capture this value.  Note that it is allowed\nto have multiple arcs between the same pair of nodes.\n\n<p>When calling either of the two-parameter versions of <code>addArc</code>,\nif either of the nodes supplied is <code>NULL</code> or is not found in the graph, the function will throw an error.\n\n<p>The pointer returned is a direct pointer to the internal structure inside this graph, and will become invalid if the arc is removed or if the graph itself falls out of scope.</p>\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ng.addArc(s1, s2);\ng.addArc(n1, n2);\ng.addArc(arc);\n</pre>\n<hr>\n<a name=\"Method:removeArc\"></a>\n<pre class=detailCode>\nvoid removeArc(string s1, string s2);\nvoid removeArc(NodeType* n1, NodeType* n2);\nvoid removeArc(ArcType* arc);\n</pre>\n<div class=detailHTML>\nRemoves an arc from the graph, where the arc can be specified in any\nof three ways: by the names of its endpoints, by the node pointers\nat its endpoints, or as an arc pointer.\n\n<p>When calling the single-parameter version of <code>removeArc</code>,\nonly that single arc is removed.\nWhen calling either of the two-parameter versions of <code>removeArc</code>,\nif more than one arc connects the specified endpoints, all of them are removed.\n\n<p>When calling the single-parameter version of <code>removeArc</code>,\nif the arc supplied is <code>NULL</code> or is not found in the graph, calling this function will have no effect on the graph.\n\n<p>When calling either of the two-parameter versions of <code>removeArc</code>,\nif either of the nodes supplied is <code>NULL</code> or is not found in the graph, calling this function will have no effect on the graph.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ng.removeArc(s1, s2);\ng.removeArc(n1, n2);\ng.removeArc(arc);\n</pre>\n<hr>\n<a name=\"Method:isConnected\"></a>\n<pre class=detailCode>\nbool isConnected(NodeType* n1, NodeType* n2) const;\nbool isConnected(string s1, string s2) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the graph contains an arc from\n<code>n1</code> to <code>n2</code>.  As in the <code>addArc</code>\nmethod, nodes can be specified either as node pointers or by name.\n\n<p>If either of the nodes supplied is <code>NULL</code> or is not found in the graph, the function will return <code>false</code>.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (g.isConnected(n1, n2)) ...\nif (g.isConnected(s1, s2)) ...\n</pre>\n<hr>\n<a name=\"Method:getNodeSet\"></a>\n<pre class=detailCode>\nconst Set&lt;NodeType* &gt; &amp; getNodeSet() const;\n</pre>\n<div class=detailHTML>\nReturns the set of all nodes in the graph.\n\n<p>The pointers returned are direct pointers to the internal structures inside this graph, and will become invalid if any node is removed or if the graph itself falls out of scope.</p>\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfor (NodeType* node : g.getNodeSet()) ...\n</pre>\n<hr>\n<a name=\"Method:getArcSet\"></a>\n<pre class=detailCode>\nconst Set&lt;ArcType* &gt; &amp; getArcSet() const;\nconst Set&lt;ArcType* &gt; &amp; getArcSet(NodeType* node) const;\nconst Set&lt;ArcType* &gt; &amp; getArcSet(string name) const;\n</pre>\n<div class=detailHTML>\nReturns the set of all arcs in the graph or, in the second and\nthird forms, the arcs that start at the specified node, which\ncan be indicated either as a pointer or by name.\n\n<p>When calling the two versions of this function that accept a node parameter, if the node supplied is <code>NULL</code> or is not found in the graph, the function will throw an error.\n\n<p>The pointers returned are direct pointers to the internal structures inside this graph, and will become invalid if any arc is removed or if the graph itself falls out of scope.</p>\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfor (ArcType* arc : g.getArcSet()) ...\nfor (ArcType* arc : g.getArcSet(node)) ...\nfor (ArcType* arc : g.getArcSet(name)) ...\n</pre>\n<hr>\n<a name=\"Method:getNeighbors\"></a>\n<pre class=detailCode>\nconst Set&lt;NodeType* &gt; getNeighbors(NodeType* node) const;\nconst Set&lt;NodeType* &gt; getNeighbors(string node) const;\n</pre>\n<div class=detailHTML>\nReturns the set of nodes that are neighbors of the specified\nnode, which can be indicated either as a pointer or by name.\n\n<p>If the node supplied is <code>NULL</code> or is not found in the graph, the function will throw an error.\n\n<p>The pointers returned are direct pointers to the internal structures inside this graph, and will become invalid if any node is removed or if the graph itself falls out of scope.</p>\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfor (NodeType* node : g.getNeighbors(node)) ...\nfor (NodeType* node : g.getNeighbors(name)) ...\n</pre>\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString() const;\n</pre>\n<div class=detailHTML>\nConverts the graph to a printable string representation, listing all node names followed by the start/finish of all arcs, such as <code>&quot;{A, B, C, D, E, A -&gt; B, C -&gt; A, D -&gt; E}&quot;</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = g.toString();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/Grid-class.html",
    "content": "<html>\n<head>\n<title>Grid</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"grid.html\">#include \"grid.h\"</a></div>\n<h1 class=header><code>class Grid&lt;<var>ValueType</var>&gt;</code></h1>\nThis class stores an indexed, two-dimensional array.\nRows and columns of the grid are accessed by 0-based indexes.\n\n<p>The following code,\nfor example, creates an identity matrix of size <code>n</code>, in which\nthe elements are 1.0 along the main diagonal and 0.0 everywhere else:\n\n<pre>\n   Grid&lt;double&gt; createIdentityMatrix(int n) {\n      Grid&lt;double&gt; matrix(n, n);\n      for (int i = 0; i &lt; n; i++) {\n         matrix[i][i] = 1.0;\n      }\n      return matrix;\n   }\n</pre>\n\n<table class=index width=100%>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Constructor</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Constructor:Grid\">Grid()</a></nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Initializes a new empty 0x0 grid.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Constructor:Grid\">Grid(<var>nRows</var>,&nbsp;<var>nCols</var>)</a></nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Initializes a new grid of the given size.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Constructor:Grid\">Grid(<var>nRows</var>,&nbsp;<var>nCols</var>,&nbsp;<var>value</var>)</a></nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Initializes a new grid of the given size, with every cell set to the given value.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Methods</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:equals\">equals(<var>grid</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the two grids contain the same elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:fill\">fill(<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Sets every grid element to the given value.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:get\">get(<var>row</var>,&nbsp;<var>col</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the element at the specified <code>row</code>/<code>col</code> position in this grid.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:height\">height()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the grid's height, that is, the number of rows in the grid.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:inBounds\">inBounds(<var>row</var>,&nbsp;<var>col</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the specified row and column position is inside the bounds of the grid.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:isEmpty\">isEmpty()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns true if the grid has 0 rows and/or 0 columns.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:mapAll\">mapAll(<var>fn</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Calls the specified function on each element of the grid.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:numCols\">numCols()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the number of columns in the grid.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:numRows\">numRows()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the number of rows in the grid.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:resize\">resize(<var>nRows</var>,&nbsp;<var>nCols</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Reinitializes the grid to have the specified number of rows and columns.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:set\">set(<var>row</var>,&nbsp;<var>col</var>,&nbsp;<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Replaces the element at the specified <code>row</code>/<code>col</code> location in this grid with a new value.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:size\">size()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the total number of elements in the grid.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Converts the grid to a printable single-line string representation.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:toString2D\">toString2D()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Converts the grid to a printable 2-D string representation.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:width\">width()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the grid's width, that is, the number of columns in the grid.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Operator</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:[]\"><var>grid</var>[<var>row</var>][<var>col</var>]</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Overloads <code>[]</code> to select elements from this grid.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:==\"><var>grid1</var> == <var>grid1</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>grid1</code> and <code>grid2</code> contain the same elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:!=\"><var>grid1</var> != <var>grid2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>grid1</code> and <code>grid2</code> are different.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><var>ostream</var>&nbsp;&lt;&lt;&nbsp;<var>grid</var></nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Outputs the contents of the grid to the given output stream.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><var>istream</var>&nbsp;&gt;&gt;&nbsp;<var>grid</var></nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Reads the contents of the given input stream into the grid.</td>\n\t</tr>\n</table>\n\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:Grid\"></a>\n<pre class=detailCode>\nGrid();\nGrid(int nRows, int nCols);\nGrid(int nRows, int nCols, ValueType value);\n</pre>\n<div class=detailHTML>\nInitializes a new grid.\nThe first form of the constructor creates an empty grid that\ncontains zero rows and columns.\n\n<p>The second form of the constructor is\nmore common and creates a grid with the specified number of rows\nand columns.  Each element of the grid is initialized to the\ndefault value for the type.  The default constructor creates an\nempty grid for which the client must call <code>resize</code> to\nset the dimensions.\n\n<p>The third form also fills every cell of the grid with the given value.\n\n<p>The second and third constructors signal an error if a negative number of rows or columns is passed.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGrid&lt;ValueType&gt; grid;\nGrid&lt;ValueType&gt; grid(nRows, nCols);\nGrid&lt;ValueType&gt; grid(nRows, nCols, value);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n\n<hr>\n<a name=\"Method:equals\"></a>\n<pre class=detailCode>\nbool equals(const Grid&amp; grid) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the two grids are the same size and contain exactly the same element values.\nIdentical in behavior to the <code>==</code> operator.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (grid.equals(grid2)) ...\n</pre>\n\n<hr>\n<a name=\"Method:fill\"></a>\n<pre class=detailCode>\nvoid fill(ValueType value) const;\n</pre>\n<div class=detailHTML>\nSets every grid element to the given value.\nThe entire contents of the grid are replaced with this value in every cell.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngrid.fill(value);\n</pre>\n<p class=\"since\">\n\tAvailable since: 2014/03/01 version of C++ library\n</p>\n\n<hr>\n<a name=\"Method:get\"></a>\n<pre class=detailCode>\nValueType get(int row, int col);\nconst ValueType &amp; get(int row, int col) const;\n</pre>\n<div class=detailHTML>\nReturns the element at the specified <code>row</code>/<code>col</code>\nposition in this grid.  This method signals an error if the\n<code>row</code> and <code>col</code> arguments are outside\nthe grid boundaries.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType value = grid.get(row, col);\n</pre>\n\n<hr>\n<a name=\"Method:height\"></a>\n<pre class=detailCode>\nint height() const;\n</pre>\n<div class=detailHTML>\nReturns the grid's height, that is, the number of rows in the grid.\nThis is equivalent to <code>numRows</code> and both are provided for convenience.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint nRows = grid.height();\n</pre>\n<p class=\"since\">\n\tAvailable since: 2014/08/16 version of C++ library\n</p>\n\n<hr>\n<a name=\"Method:inBounds\"></a>\n<pre class=detailCode>\nbool inBounds(int row, int col) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the specified row and column position\nis inside the bounds of the grid.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (grid.inBounds(row, col)) ...\n</pre>\n\n<hr>\n<a name=\"Method:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty() const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the grid does not contain any rows or columns (size 0x0).\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (grid.isEmpty()) ...\n</pre>\n\n<hr>\n<a name=\"Method:mapAll\"></a>\n<pre class=detailCode>\nvoid mapAll(void (*fn)(ValueType value)) const;\nvoid mapAll(void (*fn)(const ValueType &amp; value)) const;\nvoid mapAll(FunctorType fn) const;\n</pre>\n<div class=detailHTML>\nCalls the specified function on each element of the grid.  The\nelements are processed in <b><i>row-major order,</i></b> in which\nall the elements of row 0 are processed, followed by the elements\nin row 1, and so on.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngrid.mapAll(fn);\n</pre>\n\n<hr>\n<a name=\"Method:numCols\"></a>\n<pre class=detailCode>\nint numCols() const;\n</pre>\n<div class=detailHTML>\nReturns the number of columns in the grid.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint nCols = grid.numCols();\n</pre>\n\n<hr>\n<a name=\"Method:numRows\"></a>\n<pre class=detailCode>\nint numRows() const;\n</pre>\n<div class=detailHTML>\nReturns the number of rows in the grid.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint nRows = grid.numRows();\n</pre>\n\n<hr>\n<a name=\"Method:resize\"></a>\n<pre class=detailCode>\nvoid resize(int nRows, int nCols);\n</pre>\n<div class=detailHTML>\nReinitializes the grid to have the specified number of rows\nand columns.  Each element of the newly resized grid is\ninitialized to the default value for the type.\nAny previous grid contents are discarded.\n<p>This function signals an error if a negative number of rows or columns is passed.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngrid.resize(nRows, nCols);\n</pre>\n\n<hr>\n<a name=\"Method:set\"></a>\n<pre class=detailCode>\nvoid set(int row, int col, ValueType value);\n</pre>\n<div class=detailHTML>\nReplaces the element at the specified <code>row</code>/<code>col</code>\nlocation in this grid with a new value.  This method signals an error\nif the <code>row</code> and <code>col</code> arguments are outside\nthe grid boundaries.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngrid.set(row, col, value);\n</pre>\n\n<hr>\n<a name=\"Method:size\"></a>\n<pre class=detailCode>\nint size() const;\n</pre>\n<div class=detailHTML>\nReturns the total number of elements in the grid,\nwhich is equal to the number of rows times the number of columns.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint sz = grid.size();\n</pre>\n\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString() const;\n</pre>\n<div class=detailHTML>\nConverts the grid to a printable string representation, such as <code>&quot;{{r0c0, r0c1, r0c2}, {r1c0, r1c1, r1c2}}&quot;</code> for a 2x3 grid.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = grid.toString();\n</pre>\n\n<hr>\n<a name=\"Method:toString2D\"></a>\n<pre class=detailCode>\nstring toString2D() const;\n</pre>\n<div class=detailHTML>\nConverts the grid to a printable 2-D string representation, such as the following for a 4x3 grid:\n<pre>\n&quot;{{r0c0, r0c1, r0c2},\\n\n {r1c0, r1c1, r1c2},\\n\n {r2c0, r2c1, r2c2},\\n\n {r3c0, r3c1, r3c2}}&quot;\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = grid.toString2D();\n</pre>\n\n<hr>\n<a name=\"Method:width\"></a>\n<pre class=detailCode>\nint width() const;\n</pre>\n<div class=detailHTML>\nReturns the grid's width, that is, the number of columns in the grid.\nThis is equivalent to <code>numCols</code> and both are provided for convenience.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint nCols = grid.numCols();\n</pre>\n<p class=\"since\">\n\tAvailable since: 2014/08/16 version of C++ library\n</p>\n\n<hr>\n</table>\n\n<h2>Operator detail</h2>\n<hr>\n<a name=\"Operator:[]\"></a>\n<pre class=detailCode>\nGridRow operator[](int row);\nconst GridRow operator[](int row) const;\n</pre>\n<div class=detailHTML>\nOverloads <code>[]</code> to select elements from this grid.\nThis extension enables the use of traditional array notation to\nget or set individual elements.  This method signals an error if\nthe <code>row</code> and <code>col</code> arguments are outside\nthe grid boundaries.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngrid[row][col]\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/HashMap-class.html",
    "content": "<html>\n<head>\n<title>HashMap</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"hashmap.html\">#include \"hashmap.h\"</a></div>\n<h1 class=header><code>class HashMap&lt;<var>KeyType</var>,&nbsp;<var>ValueType</var>&gt;</code></h1>\nThis class implements an efficient association between\n<b><i>keys</i></b> and <b><i>values</i></b>.  This class is\nidentical to the <a href=\"Map-class.html\"><code>Map</code></a> class\nexcept for the fact that it uses a hash table as its underlying\nrepresentation.  Although the <code>HashMap</code> class operates in\nconstant time, the iterator for <code>HashMap</code> returns the\nvalues in a seemingly random order.\n\n<table class=index width=100%>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Constructor</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Constructor:HashMap\">HashMap()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Initializes a new empty map that associates keys and values of the specified types.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Methods</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:clear\">clear()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Removes all entries from this map.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:containsKey\">containsKey(<var>key</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if there is an entry for <code>key</code> in this map.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:equals\">equals(<var>map</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N log N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the two maps contain the same elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:get\">get(<var>key</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the value associated with <code>key</code> in this map.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:isEmpty\">isEmpty()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if this map contains no entries.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:keys\">keys()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns a <code>Vector</code> copy of all keys in this map.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:mapAll\">mapAll(<var>fn</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Iterates through the map entries and calls <code>fn(key, value)</code> for each one.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:put\">put(<var>key</var>,&nbsp;<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Associates <code>key</code> with <code>value</code> in this map.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:remove\">remove(<var>key</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Removes any entry for <code>key</code> from this map.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:size\">size()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the number of entries in this map.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Converts the map to a printable string representation.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:values\">values()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns a <code>Vector</code> copy of all values in this map.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Operators</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:[]\"><var>map</var>[<var>key</var>]</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Selects the value associated with <code>key</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:==\"><var>map1</var> == <var>map1</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>map1</code> and <code>map2</code> contain the same elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:!=\"><var>map1</var> != <var>map2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>map1</code> and <code>map2</code> are different.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><var>ostream</var>&nbsp;&lt;&lt;&nbsp;<var>map</var></nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Outputs the contents of the map to the given output stream.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><var>istream</var>&nbsp;&gt;&gt;&nbsp;<var>map</var></nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Reads the contents of the given input stream into the map.</td>\n\t</tr>\n</table>\n\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:HashMap\"></a>\n<pre class=detailCode>\nHashMap();\n</pre>\n<div class=detailHTML>\nInitializes a new empty map that associates keys and values of\nthe specified types.  The type used for the key must define\nthe <code>==</code> operator, and there must be a free function\nwith the following signature:\n\n<pre>\n    int hashCode(KeyType key);\n</pre>\n\nthat returns a positive integer determined by the key.  This interface\nexports <code>hashCode</code> functions for <code>string</code> and\nthe C++ primitive types.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nHashMap&lt;KeyType, ValueType&gt; map;\n</pre>\n<hr>\n</table>\n\n<h2>Method detail</h2>\n\n<hr>\n<a name=\"Method:clear\"></a>\n<pre class=detailCode>\nvoid clear();\n</pre>\n<div class=detailHTML>\nRemoves all entries from this map.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap.clear();\n</pre>\n\n<hr>\n<a name=\"Method:containsKey\"></a>\n<pre class=detailCode>\nbool containsKey(KeyType key) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if there is an entry for <code>key</code>\nin this map.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (map.containsKey(key)) ...\n</pre>\n\n<hr>\n<a name=\"Method:equals\"></a>\n<pre class=detailCode>\nbool equals(const HashMap&amp; map) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the two maps contain exactly the same set of key/value pairs.\nIdentical in behavior to the <code>==</code> operator.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (map.equals(map2)) ...\n</pre>\n\n<hr>\n<a name=\"Method:get\"></a>\n<pre class=detailCode>\nValueType get(KeyType key) const;\n</pre>\n<div class=detailHTML>\nReturns the value associated with <code>key</code> in this map.\nIf <code>key</code> is not found, <code>get</code> returns the\ndefault value for <code>ValueType</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType value = map.get(key);\n</pre>\n\n<hr>\n<a name=\"Method:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty() const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if this map contains no entries.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (map.isEmpty()) ...\n</pre>\n\n<hr>\n<a name=\"Method:keys\"></a>\n<pre class=detailCode>\nVector&lt;KeyType&gt; keys() const;\n</pre>\n<div class=detailHTML>\nReturns a <code>Vector</code> copy of all keys in this map.\nThe elements will appear in the same order that a for-each loop over the map would produce them, though that order is seemingly random for hash maps.\nBecause a map cannot contain duplicate keys, the elements of the vector will be unique.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nVector&lt;KeyType&gt; keys = map.keys();\n</pre>\n<p class=\"since\">\n\tAvailable since: 2014/02/01 version of C++ library\n</p>\n\n<hr>\n<a name=\"Method:mapAll\"></a>\n<pre class=detailCode>\nvoid mapAll(void (*fn)(KeyType, ValueType)) const;\nvoid mapAll(void (*fn)(const KeyType&amp;, const ValueType&amp;)) const;\nvoid mapAll(FunctorType fn) const;\n</pre>\n<div class=detailHTML>\nIterates through the map entries and calls <code>fn(key, value)</code>\nfor each one.  The keys are processed in an undetermined order.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap.mapAll(fn);\n</pre>\n\n<hr>\n<a name=\"Method:put\"></a>\n<pre class=detailCode>\nvoid put(KeyType key, ValueType value);\n</pre>\n<div class=detailHTML>\nAssociates <code>key</code> with <code>value</code> in this map.\nAny previous value associated with <code>key</code> is replaced\nby the new value.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap.put(key, value);\n</pre>\n\n<hr>\n<a name=\"Method:remove\"></a>\n<pre class=detailCode>\nvoid remove(KeyType key);\n</pre>\n<div class=detailHTML>\nRemoves any entry for <code>key</code> from this map.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap.remove(key);\n</pre>\n\n<hr>\n<a name=\"Method:size\"></a>\n<pre class=detailCode>\nint size() const;\n</pre>\n<div class=detailHTML>\nReturns the number of entries in this map.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint nEntries = map.size();\n</pre>\n\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString();\n</pre>\n<div class=detailHTML>\nConverts the map to a printable string representation, such as <code>&quot;{k1:v1, k2:v2, k3:v3}&quot;</code>.\nThe key/value pairs appear in an unpredictable order.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = map.toString();\n</pre>\n\n<hr>\n<a name=\"Method:values\"></a>\n<pre class=detailCode>\nVector&lt;ValueType&gt; values() const;\n</pre>\n<div class=detailHTML>\nReturns a <code>Vector</code> copy of all values in this map.\nThe elements will appear in the same order that a for-each loop over the map would produce them, though that order is seemingly random for hash maps.\nA map can contain duplicate values, so the elements of the vector are not guaranteed to be unique.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nVector&lt;ValueType&gt; values = map.values();\n</pre>\n<p class=\"since\">\n\tAvailable since: 2014/02/01 version of C++ library\n</p>\n\n<hr>\n</table>\n<h2>Operator detail</h2>\n\n<hr>\n<a name=\"Operator:[]\"></a>\n<pre class=detailCode>\nValueType&amp; operator[](KeyType key);\nValueType operator[](KeyType key) const;\n</pre>\n<div class=detailHTML>\nSelects the value associated with <code>key</code>.  This syntax\nmakes it easy to think of a map as an \"associative array\"\nindexed by the key type.  If <code>key</code> is already present\nin the map, this function returns a reference to its associated\nvalue.  If key is not present in the map, a new entry is created\nwhose value is set to the default for the value type.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap[key]\n</pre>\n\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/HashSet-class.html",
    "content": "<html>\n<head>\n<title>HashSet</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"hashset.html\">#include \"hashset.h\"</a></div>\n<h1 class=header><code>class HashSet&lt;<var>ValueType</var>&gt;</code></h1>\nThis class implements an efficient abstraction for storing sets\nof distinct elements.  This class is identical to the <code>Set</code>\nclass except for the fact that it uses a hash table as its underlying\nrepresentation.  The advantage of the <code>HashSet</code> class is that\nit operates in constant time, as opposed to the <i>O</i>(log <i>N</i>)\ntime for the <code>Set</code> class.  The disadvantage of\n<code>HashSet</code> is that iterators return the values in a\nseemingly random order.\n\n<table class=index width=100%>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Constructor</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Constructor:HashSet\">HashSet()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Initializes an empty set of the specified element type.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Methods</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:add\">add(<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Adds an element to this set, if it was not already there.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:clear\">clear()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Removes all elements from this set.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:contains\">contains(<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the specified value is in this set.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:equals\">equals(<var>set</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the two sets contain the same elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:first\">first()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the first value in the set in the order established by a for-each loop.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:isEmpty\">isEmpty()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if this set contains no elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:isSubsetOf\">isSubsetOf(<var>set2</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Implements the subset relation on sets.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:mapAll\">mapAll(<var>fn</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Iterates through the elements of the set and calls <code>fn(value)</code> for each one.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:remove\">remove(<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Removes an element from this set.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:size\">size()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the number of elements in this set.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Converts the set to a printable string representation.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Operators</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:==\"><var>set1</var> == <var>set2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>set1</code> and <code>set2</code> contain the same elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:!=\"><var>set1</var> != <var>set2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>set1</code> and <code>set2</code> are different.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:+\"><var>set1</var> + <var>set2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the union of sets <code>set1</code> and <code>set2</code>, which is the set of elements that appear in at least one of the two sets.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:+\"><var>set</var> + <var>value</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the union of set <code>set1</code> and individual value <code>value</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:+=\"><var>set1</var> += <var>set2</var>;</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Adds all of the elements from <code>set2</code> (or the single specified value) to <code>set1</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:+=\"><var>set</var> += <var>value</var>;</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Adds the single specified value to the set.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:-\"><var>set1</var> - <var>set2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the difference of sets <code>set1</code> and <code>set2</code>, which is all of the elements that appear in <code>set1</code> but not <code>set2</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:-\"><var>set</var> - <var>value</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the set <code>set</code> with <code>value</code> removed.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:-=\"><var>set1</var> -= <var>set2</var>;</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Removes the elements from <code>set2</code> (or the single specified value) from <code>set1</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:-=\"><var>set</var> -= <var>value</var>;</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Removes the single specified value from the set.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:*\"><var>set1</var> * <var>set2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the intersection of sets <code>set1</code> and <code>set2</code>, which is the set of all elements that appear in both.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:*=\"><var>set1</var> *= <var>set2</var>;</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Removes any elements from <code>set1</code> that are not present in <code>set2</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><var>ostream</var>&nbsp;&lt;&lt;&nbsp;<var>set</var></nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Outputs the contents of the set to the given output stream.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><var>istream</var>&nbsp;&gt;&gt;&nbsp;<var>set</var></nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Reads the contents of the given input stream into the set.</td>\n\t</tr>\n</table>\n\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:HashSet\"></a>\n<pre class=detailCode>\nHashSet();\n</pre>\n<div class=detailHTML>\nInitializes an empty set of the specified element type.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nHashSet&lt;ValueType&gt; set;\n</pre>\n<hr>\n</table>\n\n<h2>Method detail</h2>\n\n<hr>\n<a name=\"Method:add\"></a>\n<pre class=detailCode>\nvoid add(ValueType value);\nvoid insert(ValueType value);\n</pre>\n<div class=detailHTML>\nAdds an element to this set, if it was not already there.  For\ncompatibility with the STL <code>set</code> class, this method\nis also exported as <code>insert</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset.add(value);\n</pre>\n\n<hr>\n<a name=\"Method:clear\"></a>\n<pre class=detailCode>\nvoid clear();\n</pre>\n<div class=detailHTML>\nRemoves all elements from this set.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset.clear();\n</pre>\n\n<hr>\n<a name=\"Method:contains\"></a>\n<pre class=detailCode>\nbool contains(ValueType value) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the specified value is in this set.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (set.contains(value)) ...\n</pre>\n\n<hr>\n<a name=\"Method:equals\"></a>\n<pre class=detailCode>\nbool equals(const HashSet&amp; grid) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the two sets contain exactly the same element values.\nIdentical in behavior to the <code>==</code> operator.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (set.equals(set2)) ...\n</pre>\n\n<hr>\n<a name=\"Method:first\"></a>\n<pre class=detailCode>\nValueType first() const;\n</pre>\n<div class=detailHTML>\nReturns the first value in the set in the order established by\na for-each loop.  If the set is empty, <code>first</code>\ngenerates an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType value = set.first();\n</pre>\n\n<hr>\n<a name=\"Method:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty() const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if this set contains no elements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (set.isEmpty()) ...\n</pre>\n\n<hr>\n<a name=\"Method:isSubsetOf\"></a>\n<pre class=detailCode>\nbool isSubsetOf(const HashSet&amp; set2) const;\n</pre>\n<div class=detailHTML>\nImplements the subset relation on sets.  It returns\n<code>true</code> if every element of this set is\ncontained in <code>set2</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (set.isSubsetOf(set2)) ...\n</pre>\n\n<hr>\n<a name=\"Method:mapAll\"></a>\n<pre class=detailCode>\nvoid mapAll(void (*fn)(ValueType)) const;\nvoid mapAll(void (*fn)(const ValueType&amp;)) const;\nvoid mapAll(FunctorType fn) const;\n</pre>\n<div class=detailHTML>\nIterates through the elements of the set and calls <code>fn(value)</code>\nfor each one.  The values are processed in ascending order, as defined\nby the comparison function.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset.mapAll(fn);\n</pre>\n\n<hr>\n<a name=\"Method:remove\"></a>\n<pre class=detailCode>\nvoid remove(ValueType value);\n</pre>\n<div class=detailHTML>\nRemoves an element from this set.  If the value was not\ncontained in the set, no error is generated and the set\nremains unchanged.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset.remove(value);\n</pre>\n\n<hr>\n<a name=\"Method:size\"></a>\n<pre class=detailCode>\nint size() const;\n</pre>\n<div class=detailHTML>\nReturns the number of elements in this set.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncount = set.size();\n</pre>\n\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString();\n</pre>\n<div class=detailHTML>\nConverts the set to a printable string representation, such as <code>&quot;{value1, value2, value3}&quot;</code>.\nThe values appear in an unpredictable order.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = set.toString();\n</pre>\n\n<hr>\n</table>\n<h2>Operator detail</h2>\n\n<hr>\n<a name=\"Operator:==\"></a>\n<pre class=detailCode>\nbool operator==(const HashSet&amp; set2) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if <code>set1</code> and <code>set2</code>\ncontain the same elements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1 == set2\n</pre>\n\n<hr>\n<a name=\"Operator:!=\"></a>\n<pre class=detailCode>\nbool operator!=(const HashSet&amp; set2) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if <code>set1</code> and <code>set2</code>\nare different.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1 != set2\n</pre>\n\n<hr>\n<a name=\"Operator:+\"></a>\n<pre class=detailCode>\nHashSet operator+(const HashSet&amp; set2) const;\nHashSet operator+(ValueType element) const;\n</pre>\n<div class=detailHTML>\nReturns the union of sets <code>set1</code> and <code>set2</code>, which\nis the set of elements that appear in at least one of the two sets.  The\nright hand set can be replaced by an element of the value type, in which\ncase the operator returns a new set formed by adding that element.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1 + set2\nset1 + element\n</pre>\n\n<hr>\n<a name=\"Operator:*\"></a>\n<pre class=detailCode>\nHashSet operator*(const HashSet&amp; set2) const;\n</pre>\n<div class=detailHTML>\nReturns the intersection of sets <code>set1</code> and <code>set2</code>,\nwhich is the set of all elements that appear in both.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1 * set2\n</pre>\n\n<hr>\n<a name=\"Operator:-\"></a>\n<pre class=detailCode>\nHashSet operator-(const HashSet&amp; set2) const;\nHashSet operator-(ValueType element) const;\n</pre>\n<div class=detailHTML>\nReturns the difference of sets <code>set1</code> and <code>set2</code>,\nwhich is all of the elements that appear in <code>set1</code> but\nnot <code>set2</code>.  The right hand set can be replaced by an\nelement of the value type, in which case the operator returns a new\nset formed by removing that element.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1 - set2\nset1 - element\n</pre>\n\n<hr>\n<a name=\"Operator:+=\"></a>\n<pre class=detailCode>\nHashSet&amp; operator+=(const HashSet&amp; set2);\nHashSet&amp; operator+=(ValueType value);\n</pre>\n<div class=detailHTML>\nAdds all of the elements from <code>set2</code> (or the single\nspecified value) to <code>set1</code>.  As a convenience, the\n<code>HashSet</code> package also overloads the comma operator so\nthat it is possible to initialize a set like this:\n\n<pre>\n   HashSet&lt;int&gt; digits;\n   digits += 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1 += set2;\nset1 += value;\n</pre>\n\n<hr>\n<a name=\"Operator:*=\"></a>\n<pre class=detailCode>\nHashSet&amp; operator*=(const HashSet&amp; set2);\n</pre>\n<div class=detailHTML>\nRemoves any elements from <code>set1</code> that are not present in\n<code>set2</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1 *= set2;\n</pre>\n\n<hr>\n<a name=\"Operator:-=\"></a>\n<pre class=detailCode>\nHashSet&amp; operator-=(const HashSet&amp; set2);\nHashSet&amp; operator-=(ValueType value);\n</pre>\n<div class=detailHTML>\nRemoves the elements from <code>set2</code> (or the single\nspecified value) from <code>set1</code>.  As a convenience, the\n<code>HashSet</code> package also overloads the comma operator so\nthat it is possible to remove multiple elements from a set\nlike this:\n\n<pre>\n   digits -= 0, 2, 4, 6, 8;\n</pre>\n\nwhich removes the values 0, 2, 4, 6, and 8 from the set\n<code>digits</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1 -= set2;\nset1 -= value;\n</pre>\n\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/Lexicon-class.html",
    "content": "<html>\n<head>\n<title>Lexicon</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"lexicon.html\">#include \"lexicon.h\"</a></div>\n<h1 class=header><code>class Lexicon</code></h1>\nThis class is used to represent a <b><i>lexicon,</i></b> or word list.\nThe main difference between a lexicon and a dictionary is that\na lexicon does not provide any mechanism for storing definitions;\nthe lexicon contains only words, with no associated information.\nIt is therefore similar to a set of strings, but with a different\ninternal representation.  The <code>Lexicon</code>\nclass supports efficient lookup operations for words and prefixes.\n\n<p>As an example of the use of the <code>Lexicon</code> class, the\nfollowing program lists all the two-letter words in the lexicon\nstored in <code>EnglishWords.txt</code>:\n\n<pre>\n   int main() {\n      Lexicon english(\"EnglishWords.txt\");\n      for (string word : english) {\n         if (word.length() == 2) {\n            cout &lt;&lt; word &lt;&lt; endl;\n         }\n      }\n      return 0;\n   }\n</pre>\n\n<p>\n\tThis version of <code>Lexicon</code> is implemented internally using a data structure called a <em>prefix tree</em> or <em>trie</em> (pronounced \"try\"), which allows for efficient prefix and word searching.\n\tSome runtimes below are expressed in terms of \"W\" where W represents the length of the word being added.\n</p>\n\n<table class=index width=100%>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Constructor</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Constructor:Lexicon\">Lexicon()</a></nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Initializes a new empty lexicon.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Constructor:Lexicon\">Lexicon(<var>filename</var>)</a>&nbsp;<br>\n\t\t\t<a href=\"#Constructor:Lexicon\">Lexicon(<var>istream</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(WN)</td>\n\t\t<td class=indexSynopsis width=100%>Initializes a new lexicon that reads words from the given file or input stream.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Methods</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:add\">add(<var>word</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(W)</td>\n\t\t<td class=indexSynopsis width=100%>Adds the specified word to the lexicon.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:addWordsFromFile\">addWordsFromFile(<var>filename</var>)</a>&nbsp;<br>\n\t\t\t<a href=\"#Method:addWordsFromFile\">addWordsFromFile(<var>istream</var>)</a></nobr></td>\n\t\t<td class=\"bigoh\">O(WN)</td>\n\t\t<td class=indexSynopsis width=100%>Reads the given file/stream and adds all of its words to the lexicon.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:clear\">clear()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Removes all words from the lexicon.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:contains\">contains(<var>word</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(W)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>word</code> is contained in the lexicon.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:containsPrefix\">containsPrefix(<var>prefix</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(W)</td>\n\t\t<td class=indexSynopsis width=100%>Returns true if any words in the lexicon begin with <code>prefix</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:equals\">equals(<var>lex</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(WN)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the two lexicons contain the same words.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:isEmpty\">isEmpty()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the lexicon contains no words.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:mapAll\">mapAll(<var>fn</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Calls the specified function on each word in the lexicon.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:remove\">remove(<var>word</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(W)</td>\n\t\t<td class=indexSynopsis width=100%>Removes the specified word from the lexicon.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:removePrefix\">removePrefix(<var>prefix</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(W)</td>\n\t\t<td class=indexSynopsis width=100%>Removes all words that begin with the specified prefix from the lexicon.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:size\">size()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the number of words contained in the lexicon.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Converts the lexicon to a printable string representation.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Operators</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:==\"><var>lex1</var> == <var>lex1</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(WN)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>lex1</code> and <code>lex2</code> contain the same elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:!=\"><var>lex1</var> != <var>lex2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(WN)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>lex1</code> and <code>lex2</code> are different.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><var>ostream</var>&nbsp;&lt;&lt;&nbsp;<var>lex</var></nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Outputs the contents of the lexicon to the given output stream.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><var>istream</var>&nbsp;&gt;&gt;&nbsp;<var>lex</var></nobr></td>\n\t\t<td class=\"bigoh\">O(WN)</td>\n\t\t<td class=indexSynopsis width=100%>Reads the contents of the given input stream into the lexicon.</td>\n\t</tr>\n</table>\n\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:Lexicon\"></a>\n<pre class=detailCode>\nLexicon();\nLexicon(istream&amp; input);\nLexicon(string filename);\n</pre>\n<div class=detailHTML>\nInitializes a new lexicon.  The default constructor creates an empty\nlexicon.  The second form reads in the contents of the lexicon from\nthe specified data file or stream.\nThe data file must be in one of two formats:\n(1) a space-efficient precompiled binary format or (2) a text file\ncontaining one word per line.  The Stanford library distribution\nincludes a binary lexicon file named <code>EnglishWords.dat</code>\ncontaining a list of words in English.  The standard code pattern\nto initialize that lexicon looks like this:\n<pre>\nLexicon english(\"EnglishWords.dat\");\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nLexicon lex;\nLexicon lex(filename);\n</pre>\n<hr>\n</table>\n\n<h2>Method detail</h2>\n\n<hr>\n<a name=\"Method:add\"></a>\n<pre class=detailCode>\nvoid add(string word);\n</pre>\n<div class=detailHTML>\nAdds the specified word to the lexicon.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlex.add(word);\n</pre>\n\n<hr>\n<a name=\"Method:addWordsFromFile\"></a>\n<pre class=detailCode>\nvoid addWordsFromFile(istream&amp; input);\nvoid addWordsFromFile(string filename);\n</pre>\n<div class=detailHTML>\nReads the given file/stream and adds all of its words to the lexicon.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlex.addWordsFromFile(filename);\n</pre>\n\n<hr>\n<a name=\"Method:clear\"></a>\n<pre class=detailCode>\nvoid clear();\n</pre>\n<div class=detailHTML>\nRemoves all words from the lexicon.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlex.clear();\n</pre>\n\n<hr>\n<a name=\"Method:contains\"></a>\n<pre class=detailCode>\nbool contains(string word) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if <code>word</code> is contained in the\nlexicon.  In the <code>Lexicon</code> class, the case of letters is\nignored, so \"Zoo\" is the same as \"ZOO\" or \"zoo\".\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (lex.contains(word)) ...\n</pre>\n\n<hr>\n<a name=\"Method:containsPrefix\"></a>\n<pre class=detailCode>\nbool containsPrefix(string prefix) const;\n</pre>\n<div class=detailHTML>\nReturns true if any words in the lexicon begin with <code>prefix</code>.\nLike <code>containsWord</code>, this method ignores the case of letters\nso that \"MO\" is a prefix of \"monkey\" or \"Monday\".\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (lex.containsPrefix(prefix)) ...\n</pre>\n\n<hr>\n<a name=\"Method:equals\"></a>\n<pre class=detailCode>\nbool equals(const Lexicon&amp; lex) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the two lexicons contain exactly the same set of words.\nIdentical in behavior to the <code>==</code> operator.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (lex.equals(lex2)) ...\n</pre>\n\n<hr>\n<a name=\"Method:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty() const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the lexicon contains no words.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (lex.isEmpty()) ...\n</pre>\n\n<hr>\n<a name=\"Method:mapAll\"></a>\n<pre class=detailCode>\nvoid mapAll(void (*fn)(string)) const;\nvoid mapAll(void (*fn)(const string&amp;)) const;\nvoid mapAll(FunctorType fn) const;\n</pre>\n<div class=detailHTML>\nCalls the specified function on each word in the lexicon.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlexicon.mapAll(fn);\n</pre>\n\n<hr>\n<a name=\"Method:remove\"></a>\n<pre class=detailCode>\nbool remove(string word);\n</pre>\n<div class=detailHTML>\nRemoves the specified word from the lexicon, if it was present.\nReturns <code>true</code> if the word was previously contained in the lexicon;\nin other words, if a word was removed.\nThe empty string cannot be contained in a lexicon, so passing the\nempty string to this method returns <code>false</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlex.remove(word);\n</pre>\n\n<hr>\n<a name=\"Method:removePrefix\"></a>\n<pre class=detailCode>\nbool removePrefix(string prefix);\n</pre>\n<div class=detailHTML>\nRemoves all words from the lexicon that begin with the given prefix.\nReturns <code>true</code> if the prefix was previously contained in the lexicon; in other words, if any words were removed.\nIf the empty string is passed, since all words begin with the empty string, all words will be removed and this method will return <code>true</code> if the lexicon was non-empty prior to the call.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlex.removePrefix(prefix);\n</pre>\n\n<hr>\n<a name=\"Method:size\"></a>\n<pre class=detailCode>\nint size() const;\n</pre>\n<div class=detailHTML>\nReturns the number of words contained in the lexicon.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint n = lex.size();\n</pre>\n\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString() const;\n</pre>\n<div class=detailHTML>\nConverts the map to a printable string representation, such as <code>&quot;{word1, word2, word3}&quot;</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = lexicon.toString();\n</pre>\n\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/LinkedHashMap-class.html",
    "content": "<html>\n<head>\n<title>LinkedHashMap</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"hashmap.html\">#include \"hashmap.h\"</a></div>\n<h1 class=header><code>class LinkedHashMap&lt;<var>KeyType</var>,&nbsp;<var>ValueType</var>&gt;</code></h1>\n\nThis class stores a set of <i>key</i>-<i>value</i> pairs.\n\nA <code>LinkedHashMap</code> is the same as a <code>HashMap</code>, except that it exposes its key/value pairs in the order they were inserted, rather than in the unpredictable order of a standard <code>HashMap</code>.\nThis is accomplished by storing the data in two ways internally: (1) in a hash table array, as in a <code>HashMap</code>; and (2) in a linear list of keys, to remember the insertion order.\nA <code>LinkedHashMap</code> provides identical lookup (<code>containsKey</code> / <code>get</code> / <code>operator []</code>) speed, nearly the same insertion (<code>add</code> / <code>put</code>) speed, and slower removal (<code>remove</code>) speed.\nIts for-each loop and iterators emit the keys in the order they were added to the map, at the cost of the additional memory usage of the internal list.\n\n<p>\n\tSince the members of <code>LinkedHashMap</code> are the same as those of <code>HashMap</code>, in the interest of avoiding redundancy, we refer you to <a href=\"HashMap-class.html\">the <code>HashMap</code> documentation</a> for descriptions of each member.\n\tThe only noteworthy difference in the documentation is that the <code>operator []</code> of a <code>LinkedHashMap</code> is currently read-only; it cannot be used for insertion.\n\tTo insert into a <code>LinkedHashMap</code>, use the <code>put</code> or <code>add</code> methods.\n</p>\n\n<hr>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/LinkedHashSet-class.html",
    "content": "<html>\n<head>\n<title>LinkedHashSet</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"hashset.html\">#include \"hashset.h\"</a></div>\n<h1 class=header><code>class LinkedHashSet&lt;<var>ValueType</var>&gt;</code></h1>\n\n<p>\nThe <code>LinkedHashSet</code> class implements an efficient abstraction for storing sets of values.\nA <code>LinkedHashSet</code> is the same as a <code>HashSet</code>, except that it exposes its values in the order they were inserted, rather than in the unpredictable order of a standard <code>HashSet</code>.\nThis is accomplished by storing the data in two ways internally: (1) in a hash table array, as in a <code>HashSet</code>; and (2) in a linear list, to remember the insertion order.\nA <code>LinkedHashSet</code> provides identical lookup (<code>contains</code>) speed, nearly the same insertion (<code>add</code>) speed, and slower removal (<code>remove</code>) speed.\nIts for-each loop and iterators emit the elements in the order they were added to the set, at the cost of the additional memory usage of the internal list.\n</p>\n\n<p>\n\tSince the members of <code>LinkedHashSet</code> are the same as those of <code>HashSet</code>, in the interest of avoiding redundancy, we refer you to <a href=\"HashSet-class.html\">the <code>HashSet</code> documentation</a> for descriptions of each member.\n</p>\n\n<hr>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/LinkedList-class.html",
    "content": "<html>\n<head>\n<title>LinkedList</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"linkedlist.html\">#include \"linkedlist.h\"</a></div>\n<h1 class=header><code>class LinkedList&lt;<var>ValueType</var>&gt;</code></h1>\nThis class stores an ordered list of values similar to an array.\nIt supports traditional array selection using square brackets, but\nalso supports inserting and deleting elements.  It is similar in\nfunction to the STL <code>list</code> type.\n\n<p class=\"since\">\n\tAvailable since: 2014/07/01 version of C++ library\n</p>\n\n<table class=index width=100%>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Constructor</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Constructor:LinkedList\">LinkedList()</a></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Initializes a new empty list.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Methods</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:add\">add(<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Adds a new value to the end of this list.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:clear\">clear()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Removes all elements from this list.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:equals\">equals(<var>list</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the two lists contain the same elements in the same order.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:get\">get(<var>index</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the element at the specified index in this list.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:insert\">insert(<var>index</var>,&nbsp;<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Inserts the element into this list before the specified index.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:isEmpty\">isEmpty()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if this list contains no elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:mapAll\">mapAll(<var>fn</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Calls the specified function on each element of the linkedlist in ascending index order.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:remove\">remove(<var>index</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Removes the element at the specified index from this list.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:set\">set(<var>index</var>,&nbsp;<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Replaces the element at the specified index in this list with a new value.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:size\">size()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the number of elements in this list.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:subList\">subList(<var>start</var>, <var>length</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns a new list containing elements from a sub-range of this list.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Converts the list to a printable string representation.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Operators</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:[]\"><var>list</var>[<var>index</var>]</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Overloads <code>[]</code> to select elements from this list.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:+\"><var>list1</var>&nbsp;+&nbsp;<var>list2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Concatenates two lists.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:+=\"><var>list1</var>&nbsp;+=&nbsp;<var>list2</var>;</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Adds all of the elements from <code>list2</code> to <code>list1</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:+=\"><var>list</var>&nbsp;+=&nbsp;<var>value</var>;</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Adds the single specified value to the list.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:,\"><var>list</var>&nbsp;+=&nbsp;<var>a</var>,&nbsp;<var>b</var>,&nbsp;<var>c</var>;</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Adds multiple values to the list.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:==\"><var>list1</var> == <var>list1</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>list1</code> and <code>list2</code> contain the same elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:!=\"><var>list1</var> != <var>list2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>list1</code> and <code>list2</code> are different.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><var>ostream</var>&nbsp;&lt;&lt;&nbsp;<var>list</var></nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Outputs the contents of the list to the given output stream.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><var>istream</var>&nbsp;&gt;&gt;&nbsp;<var>list</var></nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Reads the contents of the given input stream into the list.</td>\n\t</tr>\n</table>\n\n<h2>Constructor detail</h2>\n\n<hr>\n<a name=\"Constructor:LinkedList\"></a>\n<pre class=detailCode>\nLinkedList();\n</pre>\n<div class=detailHTML>\nInitializes a new list.  The default constructor creates an empty list.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nLinkedList&lt;ValueType&gt; list;\n</pre>\n<hr>\n</table>\n\n<h2>Method detail</h2>\n\n<hr>\n<a name=\"Method:add\"></a>\n<pre class=detailCode>\nvoid add(ValueType value);\nvoid push_back(ValueType value);\n</pre>\n<div class=detailHTML>\nAdds a new value to the end of this list.  To ensure compatibility\nwith the <code>list</code> class in the Standard Template Library,\nthis method is also called <code>push_back</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlist.add(value);\n</pre>\n\n<hr>\n<a name=\"Method:clear\"></a>\n<pre class=detailCode>\nvoid clear();\n</pre>\n<div class=detailHTML>\nRemoves all elements from this list.\n<p>O(N) because it must loop over the underlying list nodes to free their memory.</p>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlist.clear();\n</pre>\n\n<hr>\n<a name=\"Method:equals\"></a>\n<pre class=detailCode>\nbool equals(const LinkedList&amp; list) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the two lists contain exactly the same element values in the same order.\nIdentical in behavior to the <code>==</code> operator.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (list.equals(list2)) ...\n</pre>\n\n<hr>\n<a name=\"Method:get\"></a>\n<pre class=detailCode>\nconst ValueType&amp; get(int index) const;\n</pre>\n<div class=detailHTML>\nReturns the element at the specified index in this list.  This\nmethod signals an error if the index is not in the array range.\n<p>O(1) at front or end of list; O(N) average/worst case.</p>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType val = list.get(index);\n</pre>\n\n<hr>\n<a name=\"Method:insert\"></a>\n<pre class=detailCode>\nvoid insert(int index, ValueType value);\n</pre>\n<div class=detailHTML>\nInserts the element into this list before the specified index.\nAll subsequent elements are shifted one position to the right.  This\nmethod signals an error if the index is outside the range from 0\nup to and including the length of the list.\n<p>O(1) at front or end of list; O(N) average/worst case.</p>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlist.insert(0, value);\n</pre>\n\n<hr>\n<a name=\"Method:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty() const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if this list contains no elements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (list.isEmpty()) ...\n</pre>\n\n<hr>\n<a name=\"Method:mapAll\"></a>\n<pre class=detailCode>\nvoid mapAll(void (*fn)(ValueType)) const;\nvoid mapAll(void (*fn)(const ValueType&amp;)) const;\nvoid mapAll(FunctorType fn) const;\n</pre>\n<div class=detailHTML>\nCalls the specified function on each element of the list in\nascending index order.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlist.mapAll(fn);\n</pre>\n\n<hr>\n<a name=\"Method:remove\"></a>\n<pre class=detailCode>\nvoid remove(int index);\n</pre>\n<div class=detailHTML>\nRemoves the element at the specified index from this list.\nAll subsequent elements are shifted one position to the left.  This\nmethod signals an error if the index is outside the array range.\n<p>O(1) at front or end of list; O(N) average/worst case.</p>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlist.remove(index);\n</pre>\n\n<hr>\n<a name=\"Method:set\"></a>\n<pre class=detailCode>\nvoid set(int index, ValueType value);\n</pre>\n<div class=detailHTML>\nReplaces the element at the specified index in this list with\na new value.  The previous value at that index is overwritten.\nThis method signals an error if the index is not in the array range.\n<p>O(1) at front or end of list; O(N) average/worst case.</p>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlist.set(index, value);\n</pre>\n\n<hr>\n<a name=\"Method:size\"></a>\n<pre class=detailCode>\nint size() const;\n</pre>\n<div class=detailHTML>\nReturns the number of elements in this list.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint nElems = list.size();\n</pre>\n\n<hr>\n<a name=\"Method:subList\"></a>\n<pre class=detailCode>\nLinkedList subList(int start, int length) const;\n</pre>\n<div class=detailHTML>\nReturns a new list containing elements from a sub-range of this list.\nFor example, the call of subList(2, 4) would return a new list containing elements 2-5 of the original list in its indexes 0-3.\nThrows an error if the range [start, start+length) is not contained within the range [0, size()].\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nLinkedList&lt;ValueType&gt; sub = list.subList(start, length);\n</pre>\n<p class=\"since\">\n\tAvailable since: 2014/10/20 version of C++ library\n</p>\n\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString() const;\n</pre>\n<div class=detailHTML>\nConverts the list to a printable string representation, such as <code>&quot;{value1, value2, value3}&quot;</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = list.toString();\n</pre>\n\n<hr>\n</table>\n<h2>Operator detail</h2>\n\n<hr>\n<a name=\"Operator:[]\"></a>\n<pre class=detailCode>\nValueType&amp; operator[](int index);\nconst ValueType&amp; operator[](int index) const;\n</pre>\n<div class=detailHTML>\nOverloads <code>[]</code> to select elements from this list.\nThis extension enables the use of traditional array notation to\nget or set individual elements.  This method signals an error if\nthe index is outside the array range.  The file supports two\nversions of this operator, one for <code>const</code> lists and\none for mutable lists.\n\n<p>O(1) at front or end of list; O(N) average/worst case.</p>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvec[index]\n</pre>\n\n<hr>\n<a name=\"Operator:+\"></a>\n<pre class=detailCode>\nLinkedList operator+(const LinkedList&amp; v2) const;\n</pre>\n<div class=detailHTML>\nConcatenates two lists.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nv1 + v2\n</pre>\n\n<hr>\n<a name=\"Operator:+=\"></a>\n<pre class=detailCode>\nLinkedList&amp; operator+=(const LinkedList&amp; list2);\nLinkedList&amp; operator+=(ValueType value);\n</pre>\n<div class=detailHTML>\nAdds all of the elements from <code>v2</code> (or the single\nspecified value) to <code>v1</code>.  As a convenience, the\n<code>LinkedList</code> package also overloads the comma operator so\nthat it is possible to initialize a list like this:\n\n<pre>\n   LinkedList&lt;int&gt; digits;\n   digits += 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlist1 += list2;\nlist1 += value;\n</pre>\n\n<hr>\n<a name=\"Operator:,\"></a>\n<pre class=detailCode>\nLinkedList&amp; operator,(ValueType value);\n</pre>\n<div class=detailHTML>\nAdds an element to the list passed as the left-hand operatand.\nThis form makes it easier to initialize lists in old versions of C++.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlist.mapAll(fn);\n</pre>\n\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/Lock-class.html",
    "content": "<html>\n<head>\n<title>Lock</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"thread.html\">#include \"thread.h\"</a></div>\n<h1 class=header><code>class Lock</code></h1>\nThis class represents a simple lock used to control concurrency.  The\nusual strategy for using locks is to use the <code>synchronized</code>\nmacro described later in this interface.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Constructor</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Constructor:Lock\">Lock()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Initializes a lock, which is initially in the unlocked state.</td></tr>\n<tr><td class=indexHead colspan=2>Methods</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:signal\">signal()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Signals all threads waiting on the lock so that they wake up and recheck the corresponding condition.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:wait\">wait()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Waits for some other thread to call <code>signal</code> on this lock.</td></tr>\n<tr><td class=indexHead colspan=2>Statement</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Statement:synchronized\">synchronized&nbsp;(<var>lock</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Defines a critical section protected by the specified lock.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:Lock\"></a>\n<pre class=detailCode>\nLock();\n</pre>\n<div class=detailHTML>\nInitializes a lock, which is initially in the unlocked state.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nLock lock;\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:wait\"></a>\n<pre class=detailCode>\nvoid wait();\n</pre>\n<div class=detailHTML>\nWaits for some other thread to call <code>signal</code> on this lock.\nThis call requires that the lock be held by the calling thread.\nThe effect of the <code>wait</code> method is to release the lock\nand then wait until the desired <code>signal</code> operation occurs,\nat which point the lock is reacquired and control returns from the\n<code>wait</code> call.  The <code>wait</code> method is typically\nused inside a critical section containing a <code>while</code> loop\nto check for a specific condition.  The standard paradigm for using\nthe <code>waitThread</code> function looks like this:<p>\n\n<pre>\n   synchronized (lock) {\n      while (conditional test) {\n         lock.wait();\n      }\n      ... code to manipulate the locked resource ...\n   }\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlock.wait();\n</pre>\n<hr>\n<a name=\"Method:signal\"></a>\n<pre class=detailCode>\nvoid signal();\n</pre>\n<div class=detailHTML>\nSignals all threads waiting on the lock so that they wake up and\nrecheck the corresponding condition.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlock.signal();\n</pre>\n<hr>\n</table>\n<h2>Statement detail</h2>\n<hr>\n<a name=\"Statement:synchronized\"></a>\n<pre class=detailCode>\nsynchronized (lock) ...\n</pre>\n<div class=detailHTML>\nDefines a critical section protected by the specified lock.  The\ngeneral strategy for using this facility is shown in the following\nparadigmatic pattern:<p>\n\n<pre>\n   synchronized (lock) {\n      ... statements in the critical section ...\n   }\n</pre>\n</div>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/Makefile",
    "content": "# Makefile for StanfordCPPLib/doc\n# Last modified on Sat Dec 15 10:17:20 2012 by eroberts\n#****************************************************************\n\n# ***************************************************************\n# Entry to bring the package up to date\n#    The \"make all\" entry should be the first real entry\n\nall:\n\tcppdoc -title \"The Stanford <code>cslib</code> package\" \\\n               -icon \"images/StanfordTreeLogo.png\" \\\n               -description \"include/package.html\" \\\n               -stylesheet \"cppdoc.css\" -elide \"platform.h\" \\\n               -out . -sortindex -notemplate -novirtual -nostd ../include\n\n\n# ***************************************************************\n# Standard entries to remove files from the directories\n#    tidy    -- eliminate unwanted files\n#    scratch -- delete derived files in preparation for rebuild\n\ntidy:\n\trm -f ,* .,* *~ core a.out *.err\n\nscratch clean: tidy\n\t@mv rationale.html rationale.htm\n\trm -f *.o *.a *.html\n\t@mv rationale.htm rationale.html\n\n"
  },
  {
    "path": "Archived/cppdoc/Map-class.html",
    "content": "<html>\n<head>\n<title>Map</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"map.html\">#include \"map.h\"</a></div>\n<h1 class=header><code>class Map&lt;<var>KeyType</var>,&nbsp;<var>ValueType</var>&gt;</code></h1>\nThis class maintains an association between <b><i>keys</i></b> and\n<b><i>values</i></b>.  The types used for keys and values are\nspecified using templates, which makes it possible to use\nthis structure with any data type.\n\n<p>The map uses a binary search tree (BST) structure internally.\nBecause of this choice of internal representation, the <code>KeyType</code> for the keys stored in a <code>Map</code> must define a natural ordering through a <a target=\"_blank\" href=\"http://www.cplusplus.com/reference/functional/less/\"><code>less</code> function</a> and/or <code>&lt;</code> operator so that the keys can be compared and ordered.  The <code>ValueType</code> does not need to provide any such natural ordering.\n\n<table class=index width=100%>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Constructor</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Constructor:Map\">Map()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Initializes a new empty map that associates keys and values of the specified types.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=2>Methods</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:clear\">clear()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Removes all entries from this map.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:containsKey\">containsKey(<var>key</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(log N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if there is an entry for <code>key</code> in this map.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:equals\">equals(<var>map</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the two maps contain the same elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:get\">get(<var>key</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(log N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the value associated with <code>key</code> in this map.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:isEmpty\">isEmpty()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if this map contains no entries.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:keys\">keys()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns a <code>Vector</code> copy of all keys in this map.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:mapAll\">mapAll(<var>fn</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Iterates through the map entries and calls <code>fn(key, value)</code> for each one.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:put\">put(<var>key</var>,&nbsp;<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(log N)</td>\n\t\t<td class=indexSynopsis width=100%>Associates <code>key</code> with <code>value</code> in this map.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:remove\">remove(<var>key</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(log N)</td>\n\t\t<td class=indexSynopsis width=100%>Removes any entry for <code>key</code> from this map.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:size\">size()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the number of entries in this map.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Converts the map to a printable string representation.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:values\">values()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns a <code>Vector</code> copy of all values in this map.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Operators</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:[]\"><var>map</var>[<var>key</var>]</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(log N)</td>\n\t\t<td class=indexSynopsis width=100%>Selects the value associated with <code>key</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:==\"><var>map1</var> == <var>map1</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>map1</code> and <code>map2</code> contain the same elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:!=\"><var>map1</var> != <var>map2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>map1</code> and <code>map2</code> are different.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><var>ostream</var>&nbsp;&lt;&lt;&nbsp;<var>map</var></nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Outputs the contents of the map to the given output stream.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><var>istream</var>&nbsp;&gt;&gt;&nbsp;<var>map</var></nobr></td>\n\t\t<td class=\"bigoh\">O(N log N)</td>\n\t\t<td class=indexSynopsis width=100%>Reads the contents of the given input stream into the map.</td>\n\t</tr>\n</table>\n\n<h2>Constructor detail</h2>\n\n<hr>\n<a name=\"Constructor:Map\"></a>\n<pre class=detailCode>\nMap();\n</pre>\n<div class=detailHTML>\nInitializes a new empty map that associates keys and values of the\nspecified types.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nMap&lt;KeyType, ValueType&gt; map;\n</pre>\n<hr>\n</table>\n\n<h2>Method detail</h2>\n\n<hr>\n<a name=\"Method:clear\"></a>\n<pre class=detailCode>\nvoid clear();\n</pre>\n<div class=detailHTML>\nRemoves all entries from this map.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap.clear();\n</pre>\n\n<hr>\n<a name=\"Method:containsKey\"></a>\n<pre class=detailCode>\nbool containsKey(KeyType key) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if there is an entry for <code>key</code>\nin this map.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (map.containsKey(key)) ...\n</pre>\n\n<hr>\n<a name=\"Method:equals\"></a>\n<pre class=detailCode>\nbool equals(const Map&amp; map) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the two maps contain exactly the same set of key/value pairs.\nIdentical in behavior to the <code>==</code> operator.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (map.equals(map2)) ...\n</pre>\n\n<hr>\n<a name=\"Method:get\"></a>\n<pre class=detailCode>\nValueType get(KeyType key) const;\n</pre>\n<div class=detailHTML>\nReturns the value associated with <code>key</code> in this map.\nIf <code>key</code> is not found, <code>get</code> returns the\ndefault value for <code>ValueType</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType value = map.get(key);\n</pre>\n\n<hr>\n<a name=\"Method:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty() const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if this map contains no entries.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (map.isEmpty()) ...\n</pre>\n\n<hr>\n<a name=\"Method:keys\"></a>\n<pre class=detailCode>\nVector&lt;KeyType&gt; keys() const;\n</pre>\n<div class=detailHTML>\nReturns a <code>Vector</code> copy of all keys in this map.\nThe elements will appear in the same order that a for-each loop over the map would produce them.\nBecause a map cannot contain duplicate keys, the elements of the vector will be unique.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nVector&lt;KeyType&gt; keys = map.keys();\n</pre>\n<p class=\"since\">\n\tAvailable since: 2014/02/01 version of C++ library\n</p>\n\n<hr>\n<a name=\"Method:mapAll\"></a>\n<pre class=detailCode>\nvoid mapAll(void (*fn)(KeyType, ValueType)) const;\nvoid mapAll(void (*fn)(const KeyType&amp;, const ValueType&amp;)) const;\nvoid mapAll(FunctorType fn) const;\n</pre>\n<div class=detailHTML>\nIterates through the map entries and calls <code>fn(key, value)</code>\nfor each one.  The keys are processed in ascending order, as defined\nby the comparison function.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap.mapAll(fn);\n</pre>\n\n<hr>\n<a name=\"Method:put\"></a>\n<pre class=detailCode>\nvoid put(KeyType key, ValueType value);\n</pre>\n<div class=detailHTML>\nAssociates <code>key</code> with <code>value</code> in this map.\nAny previous value associated with <code>key</code> is replaced\nby the new value.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap.put(key, value);\n</pre>\n\n<hr>\n<a name=\"Method:remove\"></a>\n<pre class=detailCode>\nvoid remove(KeyType key);\n</pre>\n<div class=detailHTML>\nRemoves any entry for <code>key</code> from this map.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap.remove(key);\n</pre>\n\n<hr>\n<a name=\"Method:size\"></a>\n<pre class=detailCode>\nint size() const;\n</pre>\n<div class=detailHTML>\nReturns the number of entries in this map.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint nEntries = map.size();\n</pre>\n\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString() const;\n</pre>\n<div class=detailHTML>\nConverts the map to a printable string representation, such as <code>&quot;{k1:v1, k2:v2, k3:v3}&quot;</code>.\nThe key/value pairs will be listed in ascending order by key.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = map.toString();\n</pre>\n\n<hr>\n<a name=\"Method:values\"></a>\n<pre class=detailCode>\nVector&lt;ValueType&gt; values() const;\n</pre>\n<div class=detailHTML>\nReturns a <code>Vector</code> copy of all values in this map.\nThe elements will appear in the same order that a for-each loop over the map would produce them.\nA map can contain duplicate values, so the elements of the vector are not guaranteed to be unique.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nVector&lt;ValueType&gt; values = map.values();\n</pre>\n<p class=\"since\">\n\tAvailable since: 2014/02/01 version of C++ library\n</p>\n\n<hr>\n</table>\n<h2>Operator detail</h2>\n\n<hr>\n<a name=\"Operator:[]\"></a>\n<pre class=detailCode>\nValueType&amp; operator[](KeyType key);\nValueType operator[](KeyType key) const;\n</pre>\n<div class=detailHTML>\nSelects the value associated with <code>key</code>.  This syntax\nmakes it easy to think of a map as an \"associative array\"\nindexed by the key type.  If <code>key</code> is already present\nin the map, this function returns a reference to its associated\nvalue.  If key is not present in the map, a new entry is created\nwhose value is set to the default for the value type.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap[key]\n</pre>\n\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/Point-class.html",
    "content": "<html>\n<head>\n<title>Point</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"point.html\">#include \"point.h\"</a></div>\n<h1 class=header><code>class Point</code></h1>\nThis class represents an <i>x</i>-<i>y</i> coordinate point on a\ntwo-dimensional integer grid.  If you need to work with real-valued points,\nyou should use the <a href=\"gtypes.html\"><code>gtypes.h</code></a>\ninterface instead.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Constructor</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Constructor:Point\">Point()</a><br>\n<a href=\"#Constructor:Point\">Point(<var>x</var>,&nbsp;<var>y</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a <code>Point</code> object with the specified x and y coordinates.</td></tr>\n<tr><td class=indexHead colspan=2>Methods</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getX\">getX()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the <i>x</i>-coordinate of the point.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getY\">getY()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the <i>y</i>-coordinate of the point.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a string representation of the <code>Point</code> in the form <code>\"(x, y)\"</code>.</td></tr>\n<tr><td class=indexHead colspan=2>Operator</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Operator:&lt;&lt;\">cout &lt;&lt; pt;</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Overloads the <code>&lt;&lt;</code> operator so that it is able to display <code>Point</code> values.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:Point\"></a>\n<pre class=detailCode>\nPoint();\nPoint(int x, int y);\n</pre>\n<div class=detailHTML>\nCreates a <code>Point</code> object with the specified x and y coordinates.\nIf the coordinates are not supplied, the default constructor sets these\nfields to 0.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nPoint origin;\nPoint pt(x, y);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:getX\"></a>\n<pre class=detailCode>\nint getX() const;\n</pre>\n<div class=detailHTML>\nReturns the <i>x</i>-coordinate of the point.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint x = pt.getX();\n</pre>\n<hr>\n<a name=\"Method:getY\"></a>\n<pre class=detailCode>\nint getY() const;\n</pre>\n<div class=detailHTML>\nReturns the <i>y</i>-coordinate of the point.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint y = pt.getY();\n</pre>\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString() const;\n</pre>\n<div class=detailHTML>\nReturns a string representation of the <code>Point</code> in the form\n<code>\"(x, y)\"</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = pt.toString();\n</pre>\n<hr>\n</table>\n<h2>Operator detail</h2>\n<hr>\n<a name=\"Operator:<<\"></a>\n<pre class=detailCode>\nostream&amp; operator&lt;&lt;(ostream&amp; os, const Point&amp; pt);\n</pre>\n<div class=detailHTML>\nOverloads the <code>&lt;&lt;</code> operator so that it is able\nto display <code>Point</code> values.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncout &lt;&lt; pt;\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/PriorityQueue-class.html",
    "content": "<html>\n<head>\n<title>PriorityQueue</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"pqueue.html\">#include \"pqueue.h\"</a></div>\n<h1 class=header><code>class PriorityQueue&lt;<var>ValueType</var>&gt;</code></h1>\nThis class models a structure called a <b><i>priority&nbsp;queue</i></b>\nin which values are processed in order of priority.  As in conventional\nEnglish usage, lower priority numbers correspond to higher effective\npriorities, so that a priority 1 item takes precedence over a\npriority 2 item.\n\n<table class=index width=100%>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Constructor</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Constructor:PriorityQueue\">PriorityQueue()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Initializes a new priority queue, which is initially empty.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Methods</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:back\">back()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the last value in the queue by reference.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:changePriority\">changePriority(<var>value</var>,&nbsp;<var>newPriority</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Adjusts an existing value in the queue to have a new specified priority.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:clear\">clear()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Removes all elements from the priority queue.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:dequeue\">dequeue()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(log N)</td>\n\t\t<td class=indexSynopsis width=100%>Removes and returns the highest priority value.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:enqueue\">enqueue(<var>value</var>,&nbsp;<var>priority</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(log N)</td>\n\t\t<td class=indexSynopsis width=100%>Adds <code>value</code> to the queue with the specified priority.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:equals\">equals(<var>pq</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N log N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the two queues contain the same elements with the same priorities.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:front\">front()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the first value in the queue by reference.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:isEmpty\">isEmpty()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the priority queue contains no elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:peek\">peek()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the value of highest priority in the queue, without removing it.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:peekPriority\">peekPriority()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the priority of the first element in the queue, without removing it.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:size\">size()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the number of values in the priority queue.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Converts the queue to a printable string representation.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Operators</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:==\"><var>pq1</var> == <var>pq1</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N log N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>pq1</code> and <code>pq2</code> contain the same elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:!=\"><var>pq1</var> != <var>pq2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N log N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>pq1</code> and <code>pq2</code> are different.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><var>ostream</var>&nbsp;&lt;&lt;&nbsp;<var>pq</var></nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Outputs the contents of the queue to the given output stream.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><var>istream</var>&nbsp;&gt;&gt;&nbsp;<var>pq</var></nobr></td>\n\t\t<td class=\"bigoh\">O(N log N)</td>\n\t\t<td class=indexSynopsis width=100%>Reads the contents of the given input stream into the queue.</td>\n\t</tr>\n</table>\n\n<h2>Constructor detail</h2>\n\n<hr>\n<a name=\"Constructor:PriorityQueue\"></a>\n<pre class=detailCode>\nPriorityQueue();\n</pre>\n<div class=detailHTML>\nInitializes a new priority queue, which is initially empty.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nPriorityQueue&lt;ValueType&gt; pq;\n</pre>\n\n<hr>\n</table>\n<h2>Method detail</h2>\n\n<hr>\n<a name=\"Method:back\"></a>\n<pre class=detailCode>\nValueType&amp; back();\n</pre>\n<div class=detailHTML>\nReturns the last value in the queue by reference.\n<p>This function throws an error if the queue is empty.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType last = pq.back();\n</pre>\n\n<hr>\n<a name=\"Method:changePriority\"></a>\n<pre class=detailCode>\nvoid changePriority(ValueType value, double newPriority);\n</pre>\n<div class=detailHTML>\nAdjusts <code>value</code> in the queue to now have the specified new priority,\nwhich must be at least as urgent as (&le;) that value's previous\npriority in the queue.\n<p>This function throws an error if the element value is not present in the queue, if the\nnew priority passed is not at least as urgent as its current priority, or if NaN\n(not-a-number) is passed as the priority.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\npq.changePriority(value, newPriority);\n</pre>\n\n<hr>\n<a name=\"Method:clear\"></a>\n<pre class=detailCode>\nvoid clear();\n</pre>\n<div class=detailHTML>\nRemoves all elements from the priority queue.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\npq.clear();\n</pre>\n\n<hr>\n<a name=\"Method:dequeue\"></a>\n<pre class=detailCode>\nValueType dequeue();\n</pre>\n<div class=detailHTML>\nRemoves and returns the highest priority value.  If multiple\nentries in the queue have the same priority, those values are\ndequeued in the same order in which they were enqueued.\n<p>This function throws an error if the queue is empty.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType first = pq.dequeue();\n</pre>\n\n<hr>\n<a name=\"Method:enqueue\"></a>\n<pre class=detailCode>\nvoid enqueue(ValueType value, double priority);\n</pre>\n<div class=detailHTML>\nAdds <code>value</code> to the queue with the specified priority.\nLower priority numbers correspond to higher priorities, which\nmeans that all priority 1 elements are dequeued before any\npriority 2 elements.\n<p>Negative priorities are allowed and are not treated differently from other values.\nThat is, a priority of -1 comes before one of 0, which comes before 1, 2, 3, etc.\n<p>This function throws an error if NaN (not-a-number) is passed as the priority.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\npq.enqueue(value, priority);\n</pre>\n\n<hr>\n<a name=\"Method:equals\"></a>\n<pre class=detailCode>\nbool equals(const PriorityQueue&amp; pq) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the two queues contain exactly the same element values with the same priorities.\nIdentical in behavior to the <code>==</code> operator.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (pq.equals(pq2)) ...\n</pre>\n\n<hr>\n<a name=\"Method:front\"></a>\n<pre class=detailCode>\nValueType&amp; front();\n</pre>\n<div class=detailHTML>\nReturns the first value in the queue by reference.\n<p>This function throws an error if the queue is empty.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType first = pq.front();\n</pre>\n\n<hr>\n<a name=\"Method:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty() const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the priority queue contains no elements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (pq.isEmpty()) ...\n</pre>\n\n<hr>\n<a name=\"Method:peek\"></a>\n<pre class=detailCode>\nValueType peek() const;\n</pre>\n<div class=detailHTML>\nReturns the value of highest priority in the queue, without\nremoving it.\n<p>This function throws an error if the queue is empty.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType first = pq.peek();\n</pre>\n\n<hr>\n<a name=\"Method:peekPriority\"></a>\n<pre class=detailCode>\ndouble peekPriority() const;\n</pre>\n<div class=detailHTML>\nReturns the priority of the first element in the queue, without\nremoving it.\n<p>This function throws an error if the queue is empty.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble priority = pq.peekPriority();\n</pre>\n\n<hr>\n<a name=\"Method:size\"></a>\n<pre class=detailCode>\nint size() const;\n</pre>\n<div class=detailHTML>\nReturns the number of values in the priority queue.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint n = pq.size();\n</pre>\n\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString() const;\n</pre>\n<div class=detailHTML>\nConverts the queue to a printable string representation.\nThe elements are listed with their priorities first, such as <code>&quot;{pri1:value1, pri2:value2, pri3:value3}&quot;</code>\nIf your project sets the compiler flag <code>PQUEUE_PRINT_IN_HEAP_ORDER</code>, the elements are shown in an unpredictable order.\nIf not, they are listed in increasing order of priority.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = pq.toString();\n</pre>\n\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/Queue-class.html",
    "content": "<html>\n<head>\n<title>Queue</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"queue.html\">#include \"queue.h\"</a></div>\n<h1 class=header><code>class Queue&lt;<var>ValueType</var>&gt;</code></h1>\nThis class models a linear structure called a <b><i>queue</i></b>\nin which values are added at one end and removed from the other.\nThis discipline gives rise to a first-in/first-out behavior (FIFO)\nthat is the defining feature of queues.\nThe fundamental queue operations are <code>enqueue</code> (add to back)\nand <code>dequeue</code> (remove from front).\n\n<table class=index width=100%>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Constructor</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Constructor:Queue\">Queue()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Initializes a new empty queue.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Methods</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:back\">back()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the last value in the queue by reference.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:clear\">clear()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Removes all elements from the queue.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:dequeue\">dequeue()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Removes and returns the first item in the queue.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:enqueue\">enqueue(<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Adds <code>value</code> to the end of the queue.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:equals\">equals(<var>q</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the two queues contain the same elements in the same order.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:front\">front()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the first value in the queue by reference.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:isEmpty\">isEmpty()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the queue contains no elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:peek\">peek()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the first value in the queue, without removing it.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:size\">size()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the number of values in the queue.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Converts the queue to a printable string representation.</td>\n\t<tr>\n\n\t<tr>\n\t\t<td class=indexHead colspan=3>Operators</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:==\"><var>queue1</var> == <var>queue1</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>queue1</code> and <code>queue2</code> contain the same elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:!=\"><var>queue1</var> != <var>queue2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>queue1</code> and <code>queue2</code> are different.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><var>ostream</var>&nbsp;&lt;&lt;&nbsp;<var>queue</var></nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Outputs the contents of the queue to the given output stream.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><var>istream</var>&nbsp;&gt;&gt;&nbsp;<var>queue</var></nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Reads the contents of the given input stream into the queue.</td>\n\t</tr>\n</table>\n\n<h2>Constructor detail</h2>\n\n<hr>\n<a name=\"Constructor:Queue\"></a>\n<pre class=detailCode>\nQueue();\n</pre>\n<div class=detailHTML>\nInitializes a new empty queue.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nQueue&lt;ValueType&gt; queue;\n</pre>\n\n<hr>\n</table>\n<h2>Method detail</h2>\n\n<hr>\n<a name=\"Method:back\"></a>\n<pre class=detailCode>\nValueType&amp; back();\n</pre>\n<div class=detailHTML>\nReturns the last value in the queue by reference.\n\n<p>If the queue is empty, this function signals an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType last = queue.back();\n</pre>\n\n<hr>\n<a name=\"Method:clear\"></a>\n<pre class=detailCode>\nvoid clear();\n</pre>\n<div class=detailHTML>\nRemoves all elements from the queue.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nqueue.clear();\n</pre>\n\n<hr>\n<a name=\"Method:dequeue\"></a>\n<pre class=detailCode>\nValueType dequeue();\n</pre>\n<div class=detailHTML>\nRemoves and returns the first item in the queue.\n<p>If the queue is empty, this function signals an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType first = queue.dequeue();\n</pre>\n\n<hr>\n<a name=\"Method:enqueue\"></a>\n<pre class=detailCode>\nvoid enqueue(ValueType value);\n</pre>\n<div class=detailHTML>\nAdds <code>value</code> to the end of the queue.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nqueue.enqueue(value);\n</pre>\n\n<hr>\n<a name=\"Method:equals\"></a>\n<pre class=detailCode>\nbool equals(const Queue&amp; q) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the two queues contain exactly the same element values in the same order.\nIdentical in behavior to the <code>==</code> operator.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (q.equals(q2)) ...\n</pre>\n\n<hr>\n<a name=\"Method:front\"></a>\n<pre class=detailCode>\nValueType&amp; front();\n</pre>\n<div class=detailHTML>\nReturns the first value in the queue by reference.\n<p>If the queue is empty, this function signals an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType first = queue.front();\n</pre>\n\n<hr>\n<a name=\"Method:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty() const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the queue contains no elements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (queue.isEmpty()) ...\n</pre>\n\n<hr>\n<a name=\"Method:peek\"></a>\n<pre class=detailCode>\nValueType peek() const;\n</pre>\n<div class=detailHTML>\nReturns the first value in the queue, without removing it.  For\ncompatibility with the STL classes, this method is also exported\nunder the name <code>front</code>, in which case it returns the\nvalue by reference.\n<p>If the queue is empty, this function signals an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType first = queue.peek();\n</pre>\n\n<hr>\n<a name=\"Method:size\"></a>\n<pre class=detailCode>\nint size() const;\n</pre>\n<div class=detailHTML>\nReturns the number of values in the queue.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint n = queue.size();\n</pre>\n\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString() const;\n</pre>\n<div class=detailHTML>\nConverts the queue to a printable string representation, with the elements listed left-to-right from the front of the queue to the back, such as <code>&quot;{value1, value2, value3}&quot;</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = queue.toString();\n</pre>\n\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/Set-class.html",
    "content": "<html>\n<head>\n<title>Set</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"set.html\">#include \"set.h\"</a></div>\n<h1 class=header><code>class Set&lt;<var>ValueType</var>&gt;</code></h1>\nThis class stores a collection of distinct elements.\n\n<p>The set uses a binary search tree (BST) structure internally.\nBecause of this choice of internal representation, the <code>ValueType</code> for the type of elements stored in a <code>Set</code> must define a natural ordering through a <a target=\"_blank\" href=\"http://www.cplusplus.com/reference/functional/less/\"><code>less</code> function</a> and/or <code>&lt;</code> operator so that the elements can be compared and ordered.\n\n<table class=index width=100%>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Constructor</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Constructor:Set\">Set()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Creates an empty set of the specified element type.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Methods</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:add\">add(<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(log N)</td>\n\t\t<td class=indexSynopsis width=100%>Adds an element to this set, if it was not already there.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:clear\">clear()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Removes all elements from this set.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:contains\">contains(<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(log N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the specified value is in this set.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:equals\">equals(<var>set</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the two sets contain the same elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:first\">first()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(log N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the first value in the set in the order established by a for-each loop.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:isEmpty\">isEmpty()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if this set contains no elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:isSubsetOf\">isSubsetOf(<var>set2</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Implements the subset relation on sets.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:mapAll\">mapAll(<var>fn</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Iterates through the elements of the set and calls <code>fn(value)</code> for each one.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:remove\">remove(<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(log N)</td>\n\t\t<td class=indexSynopsis width=100%>Removes an element from this set.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:size\">size()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the number of elements in this set.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Converts the set to a printable string representation.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Operators</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:==\"><var>set1</var> == <var>set2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>set1</code> and <code>set2</code> contain the same elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:!=\"><var>set1</var> != <var>set2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>set1</code> and <code>set2</code> are different.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:+\"><var>set1</var> + <var>set2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the union of sets <code>set1</code> and <code>set2</code>, which is the set of elements that appear in at least one of the two sets.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:+\"><var>set</var> + <var>value</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the union of set <code>set1</code> and individual value <code>value</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:+=\"><var>set1</var> += <var>set2</var>;</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Adds all of the elements from <code>set2</code> (or the single specified value) to <code>set1</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:+=\"><var>set</var> += <var>value</var>;</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(log N)</td>\n\t\t<td class=indexSynopsis width=100%>Adds the single specified value to the set.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:-\"><var>set1</var> - <var>set2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the difference of sets <code>set1</code> and <code>set2</code>, which is all of the elements that appear in <code>set1</code> but not <code>set2</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:-\"><var>set</var> - <var>value</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the set <code>set</code> with <code>value</code> removed.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:-=\"><var>set1</var> -= <var>set2</var>;</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Removes the elements from <code>set2</code> (or the single specified value) from <code>set1</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:-=\"><var>set</var> -= <var>value</var>;</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(log N)</td>\n\t\t<td class=indexSynopsis width=100%>Removes the single specified value from the set.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:*\"><var>set1</var> * <var>set2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the intersection of sets <code>set1</code> and <code>set2</code>, which is the set of all elements that appear in both.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:*=\"><var>set1</var> *= <var>set2</var>;</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Removes any elements from <code>set1</code> that are not present in <code>set2</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><var>ostream</var>&nbsp;&lt;&lt;&nbsp;<var>set</var></nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Outputs the contents of the set to the given output stream.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><var>istream</var>&nbsp;&gt;&gt;&nbsp;<var>set</var></nobr></td>\n\t\t<td class=\"bigoh\">O(N log N)</td>\n\t\t<td class=indexSynopsis width=100%>Reads the contents of the given input stream into the set.</td>\n\t</tr>\n</table>\n\n<h2>Constructor detail</h2>\n\n<hr>\n<a name=\"Constructor:Set\"></a>\n<pre class=detailCode>\nSet();\n</pre>\n<div class=detailHTML>\nCreates an empty set of the specified element type.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nSet&lt;ValueType&gt; set;\n</pre>\n\n<hr>\n</table>\n<h2>Method detail</h2>\n\n<hr>\n<a name=\"Method:add\"></a>\n<pre class=detailCode>\nvoid add(ValueType value);\nvoid insert(ValueType value);\n</pre>\n<div class=detailHTML>\nAdds an element to this set, if it was not already there.  For\ncompatibility with the STL <code>set</code> class, this method\nis also exported as <code>insert</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset.add(value);\n</pre>\n\n<hr>\n<a name=\"Method:clear\"></a>\n<pre class=detailCode>\nvoid clear();\n</pre>\n<div class=detailHTML>\nRemoves all elements from this set.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset.clear();\n</pre>\n\n<hr>\n<a name=\"Method:contains\"></a>\n<pre class=detailCode>\nbool contains(ValueType value) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the specified value is in this set.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (set.contains(value)) ...\n</pre>\n\n<hr>\n<a name=\"Method:equals\"></a>\n<pre class=detailCode>\nbool equals(const Set&amp; grid) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the two sets contain exactly the same element values.\nIdentical in behavior to the <code>==</code> operator.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (set.equals(set2)) ...\n</pre>\n\n<hr>\n<a name=\"Method:first\"></a>\n<pre class=detailCode>\nValueType first() const;\n</pre>\n<div class=detailHTML>\nReturns the first value in the set in the order established by\na for-each loop.  If the set is empty, <code>first</code>\ngenerates an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType value = set.first();\n</pre>\n\n<hr>\n<a name=\"Method:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty() const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if this set contains no elements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (set.isEmpty()) ...\n</pre>\n\n<hr>\n<a name=\"Method:isSubsetOf\"></a>\n<pre class=detailCode>\nbool isSubsetOf(const Set&amp; set2) const;\n</pre>\n<div class=detailHTML>\nImplements the subset relation on sets.  It returns\n<code>true</code> if every element of this set is\ncontained in <code>set2</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (set.isSubsetOf(set2)) ...\n</pre>\n\n<hr>\n<a name=\"Method:mapAll\"></a>\n<pre class=detailCode>\nvoid mapAll(void (*fn)(ValueType)) const;\nvoid mapAll(void (*fn)(const ValueType&amp;)) const;\nvoid mapAll(FunctorType fn) const;\n</pre>\n<div class=detailHTML>\nIterates through the elements of the set and calls <code>fn(value)</code>\nfor each one.  The values are processed in ascending order, as defined\nby the comparison function.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset.mapAll(fn);\n</pre>\n\n<hr>\n<a name=\"Method:remove\"></a>\n<pre class=detailCode>\nvoid remove(ValueType value);\n</pre>\n<div class=detailHTML>\nRemoves an element from this set.  If the value was not\ncontained in the set, no error is generated and the set\nremains unchanged.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset.remove(value);\n</pre>\n\n<hr>\n<a name=\"Method:size\"></a>\n<pre class=detailCode>\nint size() const;\n</pre>\n<div class=detailHTML>\nReturns the number of elements in this set.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncount = set.size();\n</pre>\n\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString() const;\n</pre>\n<div class=detailHTML>\nConverts the set to a printable string representation, such as <code>&quot;{value1, value2, value3}&quot;</code>.\nThe values will be listed in ascending order.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = set.toString();\n</pre>\n\n<hr>\n</table>\n<h2>Operator detail</h2>\n\n<hr>\n<a name=\"Operator:==\"></a>\n<pre class=detailCode>\nbool operator==(const Set&amp; set2) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if <code>set1</code> and <code>set2</code>\ncontain the same elements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1 == set2\n</pre>\n\n<hr>\n<a name=\"Operator:!=\"></a>\n<pre class=detailCode>\nbool operator!=(const Set&amp; set2) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if <code>set1</code> and <code>set2</code>\nare different.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1 != set2\n</pre>\n\n<hr>\n<a name=\"Operator:+\"></a>\n<pre class=detailCode>\nSet operator+(const Set&amp; set2) const;\nSet operator+(ValueType element) const;\n</pre>\n<div class=detailHTML>\nReturns the union of sets <code>set1</code> and <code>set2</code>, which\nis the set of elements that appear in at least one of the two sets.  The\nright hand set can be replaced by an element of the value type, in which\ncase the operator returns a new set formed by adding that element.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1 + set2\nset1 + element\n</pre>\n\n<hr>\n<a name=\"Operator:*\"></a>\n<pre class=detailCode>\nSet operator*(const Set&amp; set2) const;\n</pre>\n<div class=detailHTML>\nReturns the intersection of sets <code>set1</code> and <code>set2</code>,\nwhich is the set of all elements that appear in both.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1 * set2\n</pre>\n\n<hr>\n<a name=\"Operator:-\"></a>\n<pre class=detailCode>\nSet operator-(const Set&amp; set2) const;\nSet operator-(ValueType element) const;\n</pre>\n<div class=detailHTML>\nReturns the difference of sets <code>set1</code> and <code>set2</code>,\nwhich is all of the elements that appear in <code>set1</code> but\nnot <code>set2</code>.  The right hand set can be replaced by an\nelement of the value type, in which case the operator returns a new\nset formed by removing that element.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1 - set2\nset1 - element\n</pre>\n\n<hr>\n<a name=\"Operator:+=\"></a>\n<pre class=detailCode>\nSet&amp; operator+=(const Set&amp; set2);\nSet&amp; operator+=(ValueType value);\n</pre>\n<div class=detailHTML>\nAdds all of the elements from <code>set2</code> (or the single\nspecified value) to <code>set1</code>.  As a convenience, the\n<code>Set</code> package also overloads the comma operator so\nthat it is possible to initialize a set like this:\n\n<pre>\n   Set&lt;int&gt; digits;\n   digits += 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1 += set2;\nset1 += value;\n</pre>\n\n<hr>\n<a name=\"Operator:*=\"></a>\n<pre class=detailCode>\nSet&amp; operator*=(const Set&amp; set2);\n</pre>\n<div class=detailHTML>\nRemoves any elements from <code>set1</code> that are not present in\n<code>set2</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1 *= set2;\n</pre>\n\n<hr>\n<a name=\"Operator:-=\"></a>\n<pre class=detailCode>\nSet&amp; operator-=(const Set&amp; set2);\nSet&amp; operator-=(ValueType value);\n</pre>\n<div class=detailHTML>\nRemoves the elements from <code>set2</code> (or the single\nspecified value) from <code>set1</code>.  As a convenience, the\n<code>Set</code> package also overloads the comma operator so\nthat it is possible to remove multiple elements from a set\nlike this:\n\n<pre>\n   digits -= 0, 2, 4, 6, 8;\n</pre>\n\nwhich removes the values 0, 2, 4, 6, and 8 from the set\n<code>digits</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1 -= set2;\nset1 -= value;\n</pre>\n\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/Sound-class.html",
    "content": "<html>\n<head>\n<title>Sound</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"sound.html\">#include \"sound.h\"</a></div>\n<h1 class=header><code>class Sound</code></h1>\nThis class encapsulates a sound file.  The sound file is specified in the\nconstructor and must be a file in either the current directory or a\nsubdirectory named <code>sounds</code>.\n\n<p>The following code, for example, plays the sound file\n<code>ringtone.wav</code>:\n\n<pre>\n   Sound ringtone(\"ringtone.wav\");\n   ringtone.play();\n</pre>\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Constructor</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Constructor:Sound\">Sound()</a><br>\n<a href=\"#Constructor:Sound\">Sound(<var>filename</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a <code>Sound</code> object.</td></tr>\n<tr><td class=indexHead colspan=2>Method</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:play\">play()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Starts playing the sound.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:Sound\"></a>\n<pre class=detailCode>\nSound(string filename);\n</pre>\n<div class=detailHTML>\nCreates a <code>Sound</code> object.  The default constructor\ncreates an empty sound that cannot be played.  The second form\ninitializes the sound by reading in the contents of the specified\nfile.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nSound sound;\nSound sound(filename);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:play\"></a>\n<pre class=detailCode>\nvoid play();\n</pre>\n<div class=detailHTML>\nStarts playing the sound.  This call returns immediately without waiting\nfor the sound to finish.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsound.play();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/SparseGrid-class.html",
    "content": "<html>\n<head>\n<title>SparseGrid</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"grid.html\">#include \"sparsegrid.h\"</a></div>\n<h1 class=header><code>class SparseGrid&lt;<var>ValueType</var>&gt;</code></h1>\nThis class stores an indexed, two-dimensional array.\nRows and columns of the grid are accessed by 0-based indexes.\n\nUnlike <code>Grid</code>, a <code>SparseGrid</code> is optimized for grids in which most of the cells are empty.  Rather than being implemented using an internal array structure, which occupies full memory for all of its rows and columns from the start, a <code>SparseGrid</code> is implemented internally using nested <code>Map</code>s and therefore only uses as much memory as the cells that have been assigned to store actual data; empty unassigned cells consume no memory.  But if the grid is expected to be mostly full of meaningful data, better performance and better memory usage will be achieved by using <code>Grid</code> rather than <code>SparseGrid</code>.\n\n<p>The following code, for example, creates an identity matrix of size <code>n</code>, in which the elements are 1.0 along the main diagonal and 0.0 everywhere else:\n\n<pre>\n   SparseGrid&lt;double&gt; createIdentityMatrix(int n) {\n      SparseGrid&lt;double&gt; matrix(n, n);\n      for (int i = 0; i &lt; n; i++) {\n         matrix[i][i] = 1.0;\n      }\n      return matrix;\n   }\n</pre>\n\n<p class=\"since\">\n\tAvailable since: 2014/07/09 version of C++ library\n</p>\n\n<table class=index width=100%>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Constructor</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Constructor:SparseGrid\">SparseGrid()</a></nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Initializes a new empty 0x0 grid.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Constructor:SparseGrid\">SparseGrid(<var>nRows</var>,&nbsp;<var>nCols</var>)</a></nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Initializes a new grid of the given size.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Constructor:SparseGrid\">SparseGrid(<var>nRows</var>,&nbsp;<var>nCols</var>,&nbsp;<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Initializes a new grid of the given size, with every cell set to the given value.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Methods</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:equals\">equals(<var>grid</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the two grids contain the same elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:fill\">fill(<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Sets every grid element to the given value.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:get\">get(<var>row</var>,&nbsp;<var>col</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O((log N)<sup>2</sup>)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the element at the specified <code>row</code>/<code>col</code> position in this grid.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:height\">height()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the grid's height, that is, the number of rows in the grid.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:inBounds\">inBounds(<var>row</var>,&nbsp;<var>col</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the specified row and column position is inside the bounds of the grid.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:isSet\">isSet(<var>row</var>,&nbsp;<var>col</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the specified row and column position stores data.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:isEmpty\">isEmpty()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns true if the grid has 0 rows and/or 0 columns.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:mapAll\">mapAll(<var>fn</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Calls the specified function on each element of the grid.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:numCols\">numCols()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the number of columns in the grid.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:numRows\">numRows()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the number of rows in the grid.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:resize\">resize(<var>nRows</var>,&nbsp;<var>nCols</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Reinitializes the grid to have the specified number of rows and columns.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:set\">set(<var>row</var>,&nbsp;<var>col</var>,&nbsp;<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O((log N)<sup>2</sup>)</td>\n\t\t<td class=indexSynopsis width=100%>Replaces the element at the specified <code>row</code>/<code>col</code> location in this grid with a new value.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:size\">size()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the total number of elements in the grid.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Converts the grid to a printable string representation.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:toString2D\">toString2D()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Converts the grid to a printable 2-D string representation.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:width\">width()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the grid's width, that is, the number of columns in the grid.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Operator</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:[]\"><var>grid</var>[<var>row</var>][<var>col</var>]</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O((log N)<sup>2</sup>)</td>\n\t\t<td class=indexSynopsis width=100%>Overloads <code>[]</code> to select elements from this grid.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:==\"><var>grid1</var> == <var>grid1</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N (log N)<sup>2</sup>)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>grid1</code> and <code>grid2</code> contain the same elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:!=\"><var>grid1</var> != <var>grid2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N (log N)<sup>2</sup>)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>grid1</code> and <code>grid2</code> are different.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><var>ostream</var>&nbsp;&lt;&lt;&nbsp;<var>grid</var></nobr></td>\n\t\t<td class=\"bigoh\">O(N (log N)<sup>2</sup>)</td>\n\t\t<td class=indexSynopsis width=100%>Outputs the contents of the grid to the given output stream.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><var>istream</var>&nbsp;&gt;&gt;&nbsp;<var>grid</var></nobr></td>\n\t\t<td class=\"bigoh\">O(N (log N)<sup>2</sup>)</td>\n\t\t<td class=indexSynopsis width=100%>Reads the contents of the given input stream into the grid.</td>\n\t</tr>\n</table>\n\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:SparseGrid\"></a>\n<pre class=detailCode>\nSparseGrid();\nSparseGrid(int nRows, int nCols);\n</pre>\n<div class=detailHTML>\nInitializes a new grid.\nThe first form of the constructor creates an empty grid that\ncontains zero rows and columns.\n\n<p>The second form of the constructor is\nmore common and creates a grid with the specified number of rows\nand columns.  Each element of the grid is initialized to the\ndefault value for the type.  The default constructor creates an\nempty grid for which the client must call <code>resize</code> to\nset the dimensions.\n\n<p>The third form also fills every cell of the grid with the given value.\n\n<p>The second and third constructors signal an error if a negative number of rows or columns is passed.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nSparseGrid&lt;ValueType&gt; grid;\nSparseGrid&lt;ValueType&gt; grid(nRows, nCols);\nSparseGrid&lt;ValueType&gt; grid(nRows, nCols, value);\n</pre>\n<hr>\n</table>\n\n<h2>Method detail</h2>\n\n<hr>\n<a name=\"Method:equals\"></a>\n<pre class=detailCode>\nbool equals(const SparseGrid&amp; grid) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the two grids are the same size and contain exactly the same element values.\nIdentical in behavior to the <code>==</code> operator.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (grid.equals(grid2)) ...\n</pre>\n\n<hr>\n<a name=\"Method:fill\"></a>\n<pre class=detailCode>\nvoid fill(ValueType value) const;\n</pre>\n<div class=detailHTML>\nSets every grid element to the given value.\nThe entire contents of the grid are replaced with this value in every cell.\nNote that using this method on a <code>SparseGrid</code> could be considered an anti-pattern.\nThat is, if you are planning to fill the entire grid, <code>SparseGrid</code> may be a poor choice for your usage.\n<code>Grid</code> is better than <code>SparseGrid</code> for full non-sparse data.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngrid.fill(value);\n</pre>\n\n<hr>\n<a name=\"Method:numRows\"></a>\n<pre class=detailCode>\nint numRows() const;\n</pre>\n<div class=detailHTML>\nReturns the number of rows in the grid.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint nRows = grid.numRows();\n</pre>\n\n<hr>\n<a name=\"Method:numCols\"></a>\n<pre class=detailCode>\nint numCols() const;\n</pre>\n<div class=detailHTML>\nReturns the number of columns in the grid.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint nCols = grid.numCols();\n</pre>\n\n<hr>\n<a name=\"Method:height\"></a>\n<pre class=detailCode>\nint height() const;\n</pre>\n<div class=detailHTML>\nReturns the grid's height, that is, the number of rows in the grid.\nThis is equivalent to <code>numRows</code> and both are provided for convenience.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint nRows = grid.height();\n</pre>\n\n<hr>\n<a name=\"Method:width\"></a>\n<pre class=detailCode>\nint width() const;\n</pre>\n<div class=detailHTML>\nReturns the grid's width, that is, the number of columns in the grid.\nThis is equivalent to <code>numCols</code> and both are provided for convenience.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint nCols = grid.numCols();\n</pre>\n\n<hr>\n<a name=\"Method:resize\"></a>\n<pre class=detailCode>\nvoid resize(int nRows, int nCols);\n</pre>\n<div class=detailHTML>\nReinitializes the grid to have the specified number of rows\nand columns.  Each element of the newly resized grid is empty.\nAny previous grid contents are discarded.\n\n<p>This function signals an error if a negative number of rows or columns is passed.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngrid.resize(nRows, nCols);\n</pre>\n<hr>\n<a name=\"Method:inBounds\"></a>\n<pre class=detailCode>\nbool inBounds(int row, int col) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the specified row and column position\nis inside the bounds of the grid.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (grid.inBounds(row, col)) ...\n</pre>\n<hr>\n<a name=\"Method:isSet\"></a>\n<pre class=detailCode>\nbool isSet(int row, int col) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the specified row and column position\nstores meaningful data; in other words, if it has had a value placed\nthere by a previous call to <code>fill</code>, <code>set</code>, <code>[]</code>, etc.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (grid.isSet(row, col)) ...\n</pre>\n<hr>\n<a name=\"Method:get\"></a>\n<pre class=detailCode>\nValueType get(int row, int col);\nconst ValueType&amp; get(int row, int col) const;\n</pre>\n<div class=detailHTML>\nReturns the element at the specified <code>row</code>/<code>col</code>\nposition in this grid.\nIf no data was set at the given row/column position, this method returns\na default value for the grid's value type.\nThis method signals an error if the\n<code>row</code> and <code>col</code> arguments are outside\nthe grid boundaries.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType value = grid.get(row, col);\n</pre>\n<hr>\n<a name=\"Method:set\"></a>\n<pre class=detailCode>\nvoid set(int row, int col, ValueType value);\n</pre>\n<div class=detailHTML>\nReplaces the element at the specified <code>row</code>/<code>col</code>\nlocation in this grid with a new value.  This method signals an error\nif the <code>row</code> and <code>col</code> arguments are outside\nthe grid boundaries.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngrid.set(row, col, value);\n</pre>\n\n<hr>\n<a name=\"Method:size\"></a>\n<pre class=detailCode>\nint size() const;\n</pre>\n<div class=detailHTML>\nReturns the total number of elements in the grid,\nwhich is equal to the number of rows times the number of columns.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint sz = grid.size();\n</pre>\n\n<hr>\n<a name=\"Method:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty() const;\n</pre>\n<div class=detailHTML>\nReturns the total number of elements in the grid,\nwhich is equal to the number of rows times the number of columns.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint sz = grid.size();\n</pre>\n\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString() const;\n</pre>\n<div class=detailHTML>\nConverts the grid to a printable string representation, such as <code>&quot;{0:{0:r0c0, 1:r0c1, 2:r0c2}, 1:{0:r1c0, 1:r1c1, 2:r1c2}}&quot;</code> for a 2x3 grid.\nNote that the format is slightly different than the format for a normal <code>Grid</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = grid.toString();\n</pre>\n<hr>\n\n<a name=\"Method:toString2D\"></a>\n<pre class=detailCode>\nstring toString2D() const;\n</pre>\n<div class=detailHTML>\nConverts the grid to a printable 2-D string representation, such as the following for a 4x3 grid:\n\n<pre>\n&quot;{{r0c0, r0c1, r0c2},\\n\n  {r1c0, r1c1, r1c2},\\n\n  {r2c0, r2c1, r2c2},\\n\n  {r3c0, r3c1, r3c2}}&quot;\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = grid.toString2D();\n</pre>\n<hr>\n\n<a name=\"Method:mapAll\"></a>\n<pre class=detailCode>\nvoid mapAll(void (*fn)(ValueType value)) const;\nvoid mapAll(void (*fn)(const ValueType&amp; value)) const;\nvoid mapAll(FunctorType fn) const;\n</pre>\n<div class=detailHTML>\nCalls the specified function on each element of the grid.  The\nelements are processed in <b><i>row-major order,</i></b> in which\nall the elements of row 0 are processed, followed by the elements\nin row 1, and so on.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngrid.mapAll(fn);\n</pre>\n<hr>\n</table>\n<h2>Operator detail</h2>\n<hr>\n<a name=\"Operator:[]\"></a>\n<pre class=detailCode>\nSparseGridRow operator[](int row);\nconst SparseGridRow operator[](int row) const;\n</pre>\n<div class=detailHTML>\nOverloads <code>[]</code> to select elements from this grid.\nThis extension enables the use of traditional array notation to\nget or set individual elements.\n\nIf no data was set at the given row/column position, this method returns\na default value for the grid's value type.\n\nThis method signals an error if\nthe <code>row</code> and <code>col</code> arguments are outside\nthe grid boundaries.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngrid[row][col]\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/Stack-class.html",
    "content": "<html>\n<head>\n<title>Stack</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"stack.html\">#include \"stack.h\"</a></div>\n<h1 class=header><code>class Stack&lt;<var>ValueType</var>&gt;</code></h1>\nThis class models a linear structure called a <b><i>stack</i></b>\nin which values are added and removed only from one end.\nThis discipline gives rise to a last-in/first-out behavior (LIFO)\nthat is the defining feature of stacks.  The fundamental stack\noperations are <code>push</code> (add to top) and <code>pop</code>\n(remove from top).\n\n<table class=index width=100%>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Constructor</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Constructor:Stack\">Stack()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Initializes a new empty stack.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Methods</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:clear\">clear()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Removes all elements from this stack.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:equals\">equals(<var>stack</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the two stacks contain the same elements in the same order.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:isEmpty\">isEmpty()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if this stack contains no elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:peek\">peek()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the value of top element from this stack, without removing it.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:pop\">pop()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Removes the top element from this stack and returns it.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:push\">push(<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Pushes the specified value onto this stack.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:size\">size()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the number of values in this stack.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Converts the stack to a printable string representation.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Operators</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:==\"><var>stack1</var> == <var>stack1</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>stack1</code> and <code>stack2</code> contain the same elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:!=\"><var>stack1</var> != <var>stack2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>stack1</code> and <code>stack2</code> are different.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><var>ostream</var>&nbsp;&lt;&lt;&nbsp;<var>stack</var></nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Outputs the contents of the stack to the given output stream.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><var>istream</var>&nbsp;&gt;&gt;&nbsp;<var>stack</var></nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Reads the contents of the given input stream into the stack.</td>\n\t</tr>\n</table>\n\n<h2>Constructor detail</h2>\n\n<hr>\n<a name=\"Constructor:Stack\"></a>\n<pre class=detailCode>\nStack();\n</pre>\n<div class=detailHTML>\nInitializes a new empty stack.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nStack&lt;ValueType&gt; stack;\n</pre>\n\n<hr>\n</table>\n<h2>Method detail</h2>\n\n<hr>\n<a name=\"Method:clear\"></a>\n<pre class=detailCode>\nvoid clear();\n</pre>\n<div class=detailHTML>\nRemoves all elements from this stack.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstack.clear();\n</pre>\n\n<hr>\n<a name=\"Method:equals\"></a>\n<pre class=detailCode>\nbool equals(const Stack&amp; stack) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the two stacks contain exactly the same element values in the same order.\nIdentical in behavior to the <code>==</code> operator.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (stack.equals(stack2)) ...\n</pre>\n\n<hr>\n<a name=\"Method:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty() const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if this stack contains no elements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (stack.isEmpty()) ...\n</pre>\n\n<hr>\n<a name=\"Method:peek\"></a>\n<pre class=detailCode>\nValueType peek() const;\nValueType&amp; top();\n</pre>\n<div class=detailHTML>\nReturns the value of top element from this stack, without removing\nit.  This method signals an error if called on an empty stack.  For\ncompatibility with the STL classes, this method is also exported\nunder the name <code>top</code>, in which case it returns the value\nby reference.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType top = stack.peek();\n</pre>\n\n<hr>\n<a name=\"Method:pop\"></a>\n<pre class=detailCode>\nValueType pop();\n</pre>\n<div class=detailHTML>\nRemoves the top element from this stack and returns it.  This\nmethod signals an error if called on an empty stack.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType top = stack.pop();\n</pre>\n\n<hr>\n<a name=\"Method:push\"></a>\n<pre class=detailCode>\nvoid push(ValueType value);\n</pre>\n<div class=detailHTML>\nPushes the specified value onto this stack.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstack.push(value);\n</pre>\n\n<hr>\n<a name=\"Method:size\"></a>\n<pre class=detailCode>\nint size() const;\n</pre>\n<div class=detailHTML>\nReturns the number of values in this stack.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint n = stack.size();\n</pre>\n\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString() const;\n</pre>\n<div class=detailHTML>\nConverts the stack to a printable string representation, with the elements listed left-to-right from the bottom of the stack to the top, such as <code>&quot;{value1, value2, value3}&quot;</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = stack.toString();\n</pre>\n\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/Thread-class.html",
    "content": "<html>\n<head>\n<title>Thread</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"thread.html\">#include \"thread.h\"</a></div>\n<h1 class=header><code>class Thread</code></h1>\nThis class encapsulates a lightweight process running in the same address\nspace as the creator.  The class itself is opaque and is manipulated by\ntop-level functions as illustrated in the following paradigm:\n\n<pre>\n   Thread child = fork(fn);\n   ... code for the parent thread ...\n   join(child);\n</pre>\n\nThis code calls <code>fn</code> so that it runs in parallel with the\nparent code.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Constructor</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Constructor:Thread\">Thread()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates an inactive thread variable that will typically be overwritten by the result of a <code>fork</code> call.</td></tr>\n<tr><td class=indexHead colspan=2>Method</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Converts the thread to a string.</td></tr>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:fork\">fork(<var>fn</var>)</a><br><a href=\"#Function:fork\">fork(fn,&nbsp;data)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a child thread that calls <code>fn</code> in an address space shared with the current thread.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getCurrentThread\">getCurrentThread()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the currently executing thread.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:join\">join(<var>thread</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Waits for the specified thread to finish before proceeding.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:yield\">yield()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Yields the processor to allow another thread to run.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:Thread\"></a>\n<pre class=detailCode>\nThread();\n</pre>\n<div class=detailHTML>\nCreates an inactive thread variable that will typically be overwritten\nby the result of a <code>fork</code> call.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nThread thread;\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString();\n</pre>\n<div class=detailHTML>\nConverts the thread to a string.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = thread.toString();\n</pre>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:fork\"></a>\n<pre class=detailCode>\nThread fork(void (*fn)());\nThread fork(void (*fn)(ClientType&amp; data), ClientType&amp; data);\n</pre>\n<div class=detailHTML>\nCreates a child thread that calls <code>fn</code> in an address space\nshared with the current thread.  The second form makes it possible to\npass an argument to <code>fn</code>, which may be of any type.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nThread child = fork(fn);\nThread child = fork(fn, data);\n</pre>\n<hr>\n<a name=\"Function:join\"></a>\n<pre class=detailCode>\nvoid join(Thread&amp; thread);\n</pre>\n<div class=detailHTML>\nWaits for the specified thread to finish before proceeding.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\njoin(thread);\n</pre>\n<hr>\n<a name=\"Function:yield\"></a>\n<pre class=detailCode>\nvoid yield();\n</pre>\n<div class=detailHTML>\nYields the processor to allow another thread to run.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nyield();\n</pre>\n<hr>\n<a name=\"Function:getCurrentThread\"></a>\n<pre class=detailCode>\nThread getCurrentThread();\n</pre>\n<div class=detailHTML>\nReturns the currently executing thread.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nThread self = getCurrentThread();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/Timer-class.html",
    "content": "<html>\n<head>\n<title>Timer</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"timer.html\">#include \"timer.h\"</a></div>\n<h1 class=header><code>class Timer</code></h1>\nThis class implements a simple start/stop timer that can tell you how much time has elapsed since it was started.\nTypical usage of this class looks like this:\n\n<pre>\n   Timer tim;\n   tim.start();\n   ... run some code that takes a while ...\n   tim.stop();\n   cout &lt;&lt; &quot;The code took &quot; &lt;&lt; tim.elapsed() &lt;&lt; &quot;ms to finish.&quot; &lt;&lt; endl;\n</pre>\n\n<p>\n\tThis class distinguishes itself from <code>GTimer</code> in that it is more of a stopwatch that can tell you how much time has elapsed since a given starting point,\n\twhile <code>GTimer</code> is a class meant for use in graphical applications that generates timer events at specified intervals.\n</p>\n\n<p class=\"since\">\n\tAvailable since: 2014/02/01 version of C++ library\n</p>\n\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Constructor</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Constructor:Timer\">Timer()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a timer object that has not yet been started.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Constructor:Timer2\">Timer(<var>autostart</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a timer object and optionally starts it.</td></tr>\n<tr><td class=indexHead colspan=2>Methods</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:elapsed\">elapsed()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the number of milliseconds since the timer was started.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:isStarted\">isStarted()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns whether the timer has been started.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:start\">start()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Starts the timer.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:stop\">stop()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Stops the timer.</td></tr>\n</table>\n\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:Timer\"></a>\n<pre class=detailCode>\nTimer();\n</pre>\n<div class=detailHTML>\nCreates a timer object that has not yet been started.\nYou can start it afterward by calling its <code>start</code> function.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nTimer timer();\n</pre>\n<hr>\n<a name=\"Constructor:Timer2\"></a>\n<pre class=detailCode>\nTimer(bool autostart);\n</pre>\n<div class=detailHTML>\nCreates a timer object and optionally starts it, if <code>true</code> is passed.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nTimer timer(true);   // timer will start immediately\n</pre>\n<hr>\n</table>\n\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:elapsed\"></a>\n<pre class=detailCode>\nlong elapsed();\n</pre>\n<div class=detailHTML>\nReturns the number of milliseconds since the last time <code>start</code> was called.\nIf the timer is still active (if <code>stop</code> has not been called), this number will be continually growing as time passes.\nIf <code>stop</code> has already been called, this function will return the number of milliseconds between when <code>start</code> was called and when <code>stop</code> was called.\nReturns 0 if the timer was never started.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlong elapsedMS = timer.elapsed();\n</pre>\n<hr>\n<a name=\"Method:isStarted\"></a>\n<pre class=detailCode>\nbool isStarted();\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if this timer has been started and has not yet been stopped.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (timer.isStarted()) { ...\n</pre>\n<hr>\n<a name=\"Method:start\"></a>\n<pre class=detailCode>\nvoid start();\n</pre>\n<div class=detailHTML>\nStarts the timer.  The timer will capture the current time and remember it so that when you later call <code>stop</code> or <code>elapsed</code>, the amount of time will be relative to this start time.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ntimer.start();\n</pre>\n<hr>\n<a name=\"Method:stop\"></a>\n<pre class=detailCode>\nvoid stop();\n</pre>\n<div class=detailHTML>\nStops the timer.  After stopping the timer, future calls to <code>elapsed</code> will return the number of milliseconds between when <code>start</code> was called and when <code>stop</code> was called.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ntimer.stop();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/TokenScanner-class.html",
    "content": "<html>\n<head>\n<title>TokenScanner</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"tokenscanner.html\">#include \"tokenscanner.h\"</a></div>\n<h1 class=header><code>class TokenScanner</code></h1>\nThis class divides a string into individual tokens.  The typical\nuse of the <code>TokenScanner</code> class is illustrated by the\nfollowing pattern, which reads the tokens in the string variable\n<code>input</code>:\n\n<pre>\n   TokenScanner scanner(input);\n   while (scanner.hasMoreTokens()) {\n      string token = scanner.nextToken();\n      ... process the token ...\n   }\n</pre>\n\nThe <code>TokenScanner</code> class exports several additional methods\nthat give clients more control over its behavior.  Those methods are\ndescribed individually in the documentation.\n\n<!--\n<p>\n\t<em>NOTE:</em> While still available for compatibility, Stanford CS 106B/X students are generally advised to avoid using <code>TokenScanner</code>.\n\tThe library now provides cleaner ways to provide most string processing tasks, such as the <code>strlib.h</code> function <code>stringSplit</code>.\n</p>\n-->\n\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Constructor</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Constructor:TokenScanner\">TokenScanner()</a><br><a href=\"#Constructor:TokenScanner\">TokenScanner(<var>str</var>)</a><br><a href=\"#Constructor:TokenScanner\">TokenScanner(<var>infile</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Initializes a scanner object.</td></tr>\n<tr><td class=indexHead colspan=2>Methods</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:addOperator\">addOperator(<var>op</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Defines a new multicharacter operator.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:addWordCharacters\">addWordCharacters(<var>str</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Adds the characters in <code>str</code> to the set of characters legal in a <code>WORD</code> token.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getChar\">getChar()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Reads the next character from the scanner input stream.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getPosition\">getPosition()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the current position of the scanner in the input stream.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getStringValue\">getStringValue(<var>token</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the string value of a token.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getTokenType\">getTokenType(<var>token</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the type of this token.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:hasMoreTokens\">hasMoreTokens()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if there are additional tokens for this scanner to read.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:ignoreComments\">ignoreComments()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Tells the scanner to ignore comments.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:ignoreWhitespace\">ignoreWhitespace()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Tells the scanner to ignore whitespace characters.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:isWordCharacter\">isWordCharacter(<var>ch</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the character is valid in a word.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:nextToken\">nextToken()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the next token from this scanner.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:saveToken\">saveToken(<var>token</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Pushes the specified token back into this scanner's input stream.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:scanNumbers\">scanNumbers()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Controls how the scanner treats tokens that begin with a digit.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:scanStrings\">scanStrings()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Controls how the scanner treats tokens enclosed in quotation marks.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setInput\">setInput(<var>str</var>)</a><br>\n<a href=\"#Method:setInput\">setInput(<var>infile</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the token stream for this scanner to the specified string or input stream.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:ungetChar\">ungetChar(<var>ch</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Pushes the character <code>ch</code> back into the scanner stream.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:verifyToken\">verifyToken(<var>expected</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Reads the next token and makes sure it matches the string <code>expected</code>.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:TokenScanner\"></a>\n<pre class=detailCode>\nTokenScanner();\nTokenScanner(string str);\nTokenScanner(istream &amp; infile);\n</pre>\n<div class=detailHTML>\nInitializes a scanner object.  The initial token stream comes from\nthe specified string or input stream, if supplied.  The default\nconstructor creates a scanner with an empty token stream.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nTokenScanner scanner;\nTokenScanner scanner(str);\nTokenScanner scanner(infile);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:setInput\"></a>\n<pre class=detailCode>\nvoid setInput(string str);\nvoid setInput(istream &amp; infile);\n</pre>\n<div class=detailHTML>\nSets the token stream for this scanner to the specified string or\ninput stream.  Any previous token stream is discarded.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nscanner.setInput(str);\nscanner.setInput(infile);\n</pre>\n<hr>\n<a name=\"Method:hasMoreTokens\"></a>\n<pre class=detailCode>\nbool hasMoreTokens();\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if there are additional tokens for this\nscanner to read.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (scanner.hasMoreTokens()) ...\n</pre>\n<hr>\n<a name=\"Method:nextToken\"></a>\n<pre class=detailCode>\nstring nextToken();\n</pre>\n<div class=detailHTML>\nReturns the next token from this scanner.  If <code>nextToken</code>\nis called when no tokens are available, it returns the empty string.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ntoken = scanner.nextToken();\n</pre>\n<hr>\n<a name=\"Method:saveToken\"></a>\n<pre class=detailCode>\nvoid saveToken(string token);\n</pre>\n<div class=detailHTML>\nPushes the specified token back into this scanner's input stream.\nOn the next call to <code>nextToken</code>, the scanner will return\nthe saved token without reading any additional characters from the\ntoken stream.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nscanner.saveToken(token);\n</pre>\n<hr>\n<a name=\"Method:getPosition\"></a>\n<pre class=detailCode>\nint getPosition() const;\n</pre>\n<div class=detailHTML>\nReturns the current position of the scanner in the input stream.\nIf <code>saveToken</code> has been called, this position corresponds\nto the beginning of the saved token.  If <code>saveToken</code> is\ncalled more than once, <code>getPosition</code> returns -1.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint pos = scanner.getPosition();\n</pre>\n<hr>\n<a name=\"Method:ignoreWhitespace\"></a>\n<pre class=detailCode>\nvoid ignoreWhitespace();\n</pre>\n<div class=detailHTML>\nTells the scanner to ignore whitespace characters.  By default,\nthe <code>nextToken</code> method treats whitespace characters\n(typically spaces and tabs) just like any other punctuation mark\nand returns them as single-character tokens.\nCalling\n\n<pre>\n   scanner.ignoreWhitespace();\n</pre>\n\nchanges this behavior so that the scanner ignore whitespace characters.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nscanner.ignoreWhitespace();\n</pre>\n<hr>\n<a name=\"Method:ignoreComments\"></a>\n<pre class=detailCode>\nvoid ignoreComments();\n</pre>\n<div class=detailHTML>\nTells the scanner to ignore comments.  The scanner package recognizes\nboth the slash-star and slash-slash comment format from the C-based\nfamily of languages.  Calling\n\n<pre>\n   scanner.ignoreComments();\n</pre>\n\nsets the parser to ignore comments.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nscanner.ignoreComments();\n</pre>\n<hr>\n<a name=\"Method:scanNumbers\"></a>\n<pre class=detailCode>\nvoid scanNumbers();\n</pre>\n<div class=detailHTML>\nControls how the scanner treats tokens that begin with a digit.  By\ndefault, the <code>nextToken</code> method treats numbers and letters\nidentically and therefore does not provide any special processing for\nnumbers.  Calling\n\n<pre>\n   scanner.scanNumbers();\n</pre>\n\nchanges this behavior so that <code>nextToken</code> returns the\nlongest substring that can be interpreted as a real number.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nscanner.scanNumbers();\n</pre>\n<hr>\n<a name=\"Method:scanStrings\"></a>\n<pre class=detailCode>\nvoid scanStrings();\n</pre>\n<div class=detailHTML>\nControls how the scanner treats tokens enclosed in quotation marks.  By\ndefault, quotation marks (either single or double) are treated just like\nany other punctuation character.  Calling\n\n<pre>\n   scanner.scanStrings();\n</pre>\n\nchanges this assumption so that <code>nextToken</code> returns a single\ntoken consisting of all characters through the matching quotation mark.\nThe quotation marks are returned as part of the scanned token so that\nclients can differentiate strings from other token types.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nscanner.scanStrings();\n</pre>\n<hr>\n<a name=\"Method:addWordCharacters\"></a>\n<pre class=detailCode>\nvoid addWordCharacters(string str);\n</pre>\n<div class=detailHTML>\nAdds the characters in <code>str</code> to the set of characters\nlegal in a <code>WORD</code> token.  For example, calling\n<code>addWordCharacters(\"_\")</code> adds the underscore to the\nset of characters that are accepted as part of a word.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nscanner.addWordCharacters(str);\n</pre>\n<hr>\n<a name=\"Method:isWordCharacter\"></a>\n<pre class=detailCode>\nbool isWordCharacter(char ch) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the character is valid in a word.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (scanner.isWordCharacter(ch)) ...\n</pre>\n<hr>\n<a name=\"Method:addOperator\"></a>\n<pre class=detailCode>\nvoid addOperator(string op);\n</pre>\n<div class=detailHTML>\nDefines a new multicharacter operator.  Whenever you call\n<code>nextToken</code> when the input stream contains operator\ncharacters, the scanner returns the longest possible operator\nstring that can be read at that point.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nscanner.addOperator(op);\n</pre>\n<hr>\n<a name=\"Method:verifyToken\"></a>\n<pre class=detailCode>\nvoid verifyToken(string expected);\n</pre>\n<div class=detailHTML>\nReads the next token and makes sure it matches the string\n<code>expected</code>.  If it does not, <code>verifyToken</code>\nthrows an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nscanner.verifyToken(expected);\n</pre>\n<hr>\n<a name=\"Method:getTokenType\"></a>\n<pre class=detailCode>\nTokenType getTokenType(string token) const;\n</pre>\n<div class=detailHTML>\nReturns the type of this token.  This type will match one of the\nfollowing enumerated type constants: <code>EOF</code>,\n<code>SEPARATOR</code>, <code>WORD</code>, <code>NUMBER</code>,\n<code>STRING</code>, or <code>OPERATOR</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nTokenType type = scanner.getTokenType(token);\n</pre>\n<hr>\n<a name=\"Method:getChar\"></a>\n<pre class=detailCode>\nint getChar();\n</pre>\n<div class=detailHTML>\nReads the next character from the scanner input stream.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint ch = scanner.getChar();\n</pre>\n<hr>\n<a name=\"Method:ungetChar\"></a>\n<pre class=detailCode>\nvoid ungetChar(int ch);\n</pre>\n<div class=detailHTML>\nPushes the character <code>ch</code> back into the scanner stream.\nThe character must match the one that was read.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nscanner.ungetChar(ch);\n</pre>\n<hr>\n<a name=\"Method:getStringValue\"></a>\n<pre class=detailCode>\nstring getStringValue(string token) const;\n</pre>\n<div class=detailHTML>\nReturns the string value of a token.  This value is formed by removing\nany surrounding quotation marks and replacing escape sequences by the\nappropriate characters.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = scanner.getStringValue(token);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/Vector-class.html",
    "content": "<html>\n<head>\n<title>Vector</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<div class=include><a href=\"vector.html\">#include \"vector.h\"</a></div>\n<h1 class=header><code>class Vector&lt;<var>ValueType</var>&gt;</code></h1>\nThis class stores an ordered list of values similar to an array.\nIt supports traditional array selection using square brackets, but\nalso supports inserting and deleting elements.  It is similar in\nfunction to the STL <code>vector</code> type, but is simpler both\nto use and to implement.\n\n<table class=index width=100%>\n\t<tr><td class=indexHead colspan=3>Constructor</td></tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Constructor:Vector\">Vector()</a></nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td><td class=indexSynopsis width=100%>Initializes a new empty vector.</td></tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Constructor:Vector\">Vector(<var>n</var>,&nbsp;<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Initializes a new vector storing <em>n</em> copies of the given value.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Methods</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:add\">add(<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Adds a new value to the end of this vector.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:clear\">clear()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Removes all elements from this vector.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:equals\">equals(<var>v</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the two vectors contain the same elements in the same order.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:get\">get(<var>index</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the element at the specified index in this vector.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:insert\">insert(<var>index</var>,&nbsp;<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Inserts the element into this vector before the specified index.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:isEmpty\">isEmpty()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if this vector contains no elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:mapAll\">mapAll(<var>fn</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Calls the specified function on each element of the vector in ascending index order.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:remove\">remove(<var>index</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Removes the element at the specified index from this vector.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:set\">set(<var>index</var>,&nbsp;<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Replaces the element at the specified index in this vector with a new value.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:size\">size()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the number of elements in this vector.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:subList\">subList(<var>start</var>, <var>length</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns a new vector containing elements from a sub-range of this vector.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Converts the vector to a printable string representation.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Operators</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:[]\"><var>v</var>[<var>index</var>]</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Overloads <code>[]</code> to select elements from this vector.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:+\"><var>v1</var>&nbsp;+&nbsp;<var>v2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Concatenates two vectors.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:+=\"><var>v1</var>&nbsp;+=&nbsp;<var>v2</var>;</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Adds all of the elements from <code>v2</code> to <code>v1</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:+=\"><var>v</var>&nbsp;+=&nbsp;<var>value</var>;</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Adds the single specified value to <code>v</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:,\"><var>v</var>&nbsp;+=&nbsp;<var>a</var>,&nbsp;<var>b</var>,&nbsp;<var>c</var>;</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Adds multiple individual values to <code>v</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:==\"><var>v1</var> == <var>v1</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>v1</code> and <code>v2</code> contain the same elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:!=\"><var>v1</var> != <var>v2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>v1</code> and <code>v2</code> are different.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><var>ostream</var>&nbsp;&lt;&lt;&nbsp;<var>v</var></nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Outputs the contents of the vector to the given output stream.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><var>istream</var>&nbsp;&gt;&gt;&nbsp;<var>v</var></nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Reads the contents of the given input stream into the vector.</td>\n\t</tr>\n</table>\n\n<h2>Constructor detail</h2>\n\n<hr>\n<a name=\"Constructor:Vector\"></a>\n<pre class=detailCode>\nVector();\nVector(int n, ValueType value = ValueType());\n</pre>\n<div class=detailHTML>\nInitializes a new vector.  The default constructor creates an\nempty vector.  The second form creates an array with <code>n</code>\nelements, each of which is initialized to <code>value</code>;\nif <code>value</code> is missing, the elements are initialized\nto the default value for the type.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nVector&lt;ValueType&gt; vec;\nVector&lt;ValueType&gt; vec(n, value);\n</pre>\n\n<hr>\n</table>\n<h2>Method detail</h2>\n\n<hr>\n<a name=\"Method:add\"></a>\n<pre class=detailCode>\nvoid add(ValueType value);\nvoid push_back(ValueType value);\n</pre>\n<div class=detailHTML>\nAdds a new value to the end of this vector.  To ensure compatibility\nwith the <code>vector</code> class in the Standard Template Library,\nthis method is also called <code>push_back</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvec.add(value);\n</pre>\n\n<hr>\n<a name=\"Method:clear\"></a>\n<pre class=detailCode>\nvoid clear();\n</pre>\n<div class=detailHTML>\nRemoves all elements from this vector.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvec.clear();\n</pre>\n\n<hr>\n<a name=\"Method:equals\"></a>\n<pre class=detailCode>\nbool equals(const Vector&amp; v) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the two vectors contain exactly the same element values in the same order.\nIdentical in behavior to the <code>==</code> operator.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (v.equals(v2)) ...\n</pre>\n\n<hr>\n<a name=\"Method:get\"></a>\n<pre class=detailCode>\nconst ValueType&amp; get(int index) const;\n</pre>\n<div class=detailHTML>\nReturns the element at the specified index in this vector.  This\nmethod signals an error if the index is not in the array range.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType val = vec.get(index);\n</pre>\n\n<hr>\n<a name=\"Method:insert\"></a>\n<pre class=detailCode>\nvoid insert(int index, ValueType value);\n</pre>\n<div class=detailHTML>\nInserts the element into this vector before the specified index.\nAll subsequent elements are shifted one position to the right.  This\nmethod signals an error if the index is outside the range from 0\nup to and including the length of the vector.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvec.insert(0, value);\n</pre>\n\n<hr>\n<a name=\"Method:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty() const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if this vector contains no elements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (vec.isEmpty()) ...\n</pre>\n\n<hr>\n<a name=\"Method:mapAll\"></a>\n<pre class=detailCode>\nvoid mapAll(void (*fn)(ValueType)) const;\nvoid mapAll(void (*fn)(const ValueType&amp;)) const;\nvoid mapAll(FunctorType fn) const;\n</pre>\n<div class=detailHTML>\nCalls the specified function on each element of the vector in\nascending index order.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvec.mapAll(fn);\n</pre>\n\n<hr>\n<a name=\"Method:remove\"></a>\n<pre class=detailCode>\nvoid remove(int index);\n</pre>\n<div class=detailHTML>\nRemoves the element at the specified index from this vector.\nAll subsequent elements are shifted one position to the left.  This\nmethod signals an error if the index is outside the array range.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvec.remove(index);\n</pre>\n\n<hr>\n<a name=\"Method:set\"></a>\n<pre class=detailCode>\nvoid set(int index, ValueType value);\n</pre>\n<div class=detailHTML>\nReplaces the element at the specified index in this vector with\na new value.  The previous value at that index is overwritten.\nThis method signals an error if the index is not in the array range.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvec.set(index, value);\n</pre>\n\n<hr>\n<a name=\"Method:size\"></a>\n<pre class=detailCode>\nint size() const;\n</pre>\n<div class=detailHTML>\nReturns the number of elements in this vector.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint nElems = vec.size();\n</pre>\n\n<hr>\n<a name=\"Method:subList\"></a>\n<pre class=detailCode>\nVector subList(int start, int length) const;\n</pre>\n<div class=detailHTML>\nReturns a new vector containing elements from a sub-range of this vector.\nFor example, the call of subList(2, 4) would return a new vector containing elements 2-5 of the original vector in its indexes 0-3.\nThrows an error if the range [start, start+length) is not contained within the range [0, size()].\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nVector&lt;ValueType&gt; sub = v.subList(start, length);\n</pre>\n<p class=\"since\">\n\tAvailable since: 2014/10/20 version of C++ library\n</p>\n\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString() const;\n</pre>\n<div class=detailHTML>\nConverts the vector to a printable string representation, such as <code>&quot;{value1, value2, value3}&quot;</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = vec.toString();\n</pre>\n\n<hr>\n</table>\n<h2>Operator detail</h2>\n\n<hr>\n<a name=\"Operator:[]\"></a>\n<pre class=detailCode>\nValueType&amp; operator[](int index);\nconst ValueType&amp; operator[](int index) const;\n</pre>\n<div class=detailHTML>\nOverloads <code>[]</code> to select elements from this vector.\nThis extension enables the use of traditional array notation to\nget or set individual elements.  This method signals an error if\nthe index is outside the array range.  The file supports two\nversions of this operator, one for <code>const</code> vectors and\none for mutable vectors.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvec[index]\n</pre>\n\n<hr>\n<a name=\"Operator:+\"></a>\n<pre class=detailCode>\nVector operator+(const Vector&amp; v2) const;\n</pre>\n<div class=detailHTML>\nConcatenates two vectors.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nv1 + v2\n</pre>\n\n<hr>\n<a name=\"Operator:+=\"></a>\n<pre class=detailCode>\nVector&amp; operator+=(const Vector&amp; v2);\nVector&amp; operator+=(ValueType value);\n</pre>\n<div class=detailHTML>\nAdds all of the elements from <code>v2</code> (or the single\nspecified value) to <code>v1</code>.  As a convenience, the\n<code>Vector</code> package also overloads the comma operator so\nthat it is possible to initialize a vector like this:\n\n<pre>\n   Vector&lt;int&gt; digits;\n   digits += 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nv1 += v2;\nv1 += value;\n</pre>\n\n<hr>\n<a name=\"Operator:,\"></a>\n<pre class=detailCode>\nVector&amp; operator,(ValueType value);\n</pre>\n<div class=detailHTML>\nAdds an element to the vector passed as the left-hand operatand.\nThis form makes it easier to initialize vectors in old versions of C++.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvec.mapAll(fn);\n</pre>\n\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/Vertex-class.html",
    "content": "<html>\n\t<head>\n\t\t<title>Vertex</title>\n\t\t<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n\t</head>\n\n\t<body>\n\t\t<table class=banner>\n\t\t\t<tr>\n\t\t\t\t<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n\t\t\t\t<td valign=middle><div class=bannerText>\n\t\t\t\tThe Stanford <code>cslib</code> package\n\t\t\t\t</div></td>\n\t\t\t</tr>\n\t\t</table>\n\n\t\t<hr>\n\n\t\t<div class=include><a href=\"graph.html\">#include \"basicgraph.h\"</a></div>\n\t\t<h1 class=header>\n\t\t\t<code>class Vertex</code>\n\t\t</h1>\n\n\t\t<p>\n\t\t\tEach object of this class represents a single vertex (or node) in a graph.\n\t\t\tPrevious versions of this class in the library included member variables such as <code>visited</code> and <code>previous</code> to help facilitate the implementation of various graph algorithms.\n\t\t\tThese were removed by the library's maintainer because we want our students to learn to manage such data themselves using collections.\n\t\t</p>\n\n\t\t<p>\n\t\t\tSee also:\n\t\t\t<a href=\"BasicGraph-class.html\"><code>BasicGraph</code></a>,\n\t\t\t<a href=\"Edge-class.html\"><code>Edge</code></a>\n\t\t</p>\n\n\t\t<p class=\"since\">\n\t\t\tAvailable since: 2014/02/01 version of C++ library\n\t\t</p>\n\n\t\t<table class=index width=100%>\n\t\t\t<tr><td class=indexHead colspan=2>Constructor</td></tr>\n\t\t\t<tr><td class=indexKey><nobr><a href=\"#Constructor:Vertex\">Vertex(<var>name</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a vertex with the given name.</td></tr>\n\t\t\t<tr><td class=indexHead colspan=2>Methods</td></tr>\n\t\t\t<tr><td class=indexKey><nobr><a href=\"#Method:getColor\">getColor()</a></td><td class=indexSynopsis width=100%>Returns the color of this vertex.</td></tr>\n\t\t\t<tr><td class=indexKey><nobr><a href=\"#Method:resetData\">resetData()</a></td><td class=indexSynopsis width=100%>Sets the vertex's color back to its initial value.</td></tr>\n\t\t\t<tr><td class=indexKey><nobr><a href=\"#Method:setColor\">setColor(<var>color</var>)</a></td><td class=indexSynopsis width=100%>Sets this vertex's color to the given color.</td></tr>\n\t\t\t<tr><td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a></td><td class=indexSynopsis width=100%>Returns a string representation of this vertex.</td></tr>\n\t\t\t<tr><td class=indexHead colspan=2>Fields</td></tr>\n\t\t\t<tr class=\"deprecated\"><td class=indexKey><nobr>Set&lt;Edge*&gt;&nbsp;arcs</nobr></td><td class=indexSynopsis width=100%><em>Deprecated.</em>  A set of pointers to all outbound arcs (edges) from this vertex.  We suggest you refer to this field as <code>edges</code> rather than <code>arcs</code>, though either will work.</td></tr>\n\t\t\t<tr class=\"deprecated\"><td class=indexKey><nobr>double&nbsp;cost</nobr></td><td class=indexSynopsis width=100%><em>Deprecated.</em>  The cost to reach this vertex; initially 0.  This will be removed from the library; students should not use it.</td></tr>\n\t\t\t<tr><td class=indexKey><nobr>Set&lt;Edge*&gt;&amp;&nbsp;edges</nobr></td><td class=indexSynopsis width=100%>A set of pointers to all outbound edges from this vertex. (An alias for <code>arcs</code>.)</td></tr>\n\t\t\t<tr><td class=indexKey><nobr>string&nbsp;name</nobr></td><td class=indexSynopsis width=100%>The name of this vertex in the graph.</td></tr>\n\t\t\t<tr class=\"deprecated\"><td class=indexKey><nobr>Vertex*&nbsp;previous</nobr></td><td class=indexSynopsis width=100%><em>Deprecated.</em>  A pointer to a previous vertex; initially <code>nullptr</code>. This will be removed from the library; students should not use it.</td></tr>\n\t\t\t<tr class=\"deprecated\"><td class=indexKey><nobr>bool&nbsp;visited</nobr></td><td class=indexSynopsis width=100%><em>Deprecated.</em>  Whether or not this vertex has currently been visited; initially <code>false</code>. This will be removed from the library; students should not use it.</td></tr>\n\t\t\t<tr class=\"deprecated\"><td class=indexKey><nobr>double&amp;&nbsp;weight</nobr></td><td class=indexSynopsis width=100%><em>Deprecated.</em>  The cost to reach this vertex (an alias for <code>cost</code>). This will be removed from the library; students should not use it.</td></tr>\n\t\t</table>\n\n\t\t<h2>Constructor detail</h2>\n\t\t<hr>\n\t\t<a name=\"Constructor:Vertex\"></a>\n\t\t<pre class=detailCode>\nVertex(string name);\n</pre>\n\t\t<div class=detailHTML>\n\t\tCreates a vertex with the given name.\n\t\tGenerally clients should not directly construct <code>Vertex</code> objects but should instead add vertexes by name to a <code>BasicGraph</code> which will then internally create the <code>Vertex</code> structure for you.\n\t\t<p>Usage:<br>\n\t\t</div>\n\t\t<pre class=usageCode>\nVertex* vp = new Vertex(name);\n</pre>\n\t\t<hr>\n\n\t\t<h2>Method detail</h2>\n\t\t<hr>\n\t\t<a name=\"Method:getColor\"></a>\n\t\t<pre class=detailCode>\nint getColor();\n</pre>\n\t\t<div class=detailHTML>\n\t\tReturns the color of the given vertex, as set previously by a call to <code>setColor</code>.\n\t\tIf <code>setColor</code> has not been called previously, the return value is unspecified.\n\t\t<p>Usage:<br>\n\t\t</div>\n\t\t<pre class=usageCode>\nint color = vp->getColor();\n</pre>\n\t\t<hr>\n\t\t<a name=\"Method:resetData\"></a>\n\t\t<pre class=detailCode>\nvoid resetData();\n</pre>\n\t\t<div class=detailHTML>\n\t\tSets the vertex's color back to its initial value.\n\t\t<p>Usage:<br>\n\t\t</div>\n\t\t<pre class=usageCode>\nvp->resetData();\n</pre>\n\t\t<hr>\n\t\t<a name=\"Method:setColor\"></a>\n\t\t<pre class=detailCode>\nvoid setColor(int color);\n</pre>\n\t\t<div class=detailHTML>\n\t\tSets the color of the given vertex to the given color.\n\t\tFuture calls to <code>getColor</code> will return this color.\n\t\t<p>Usage:<br>\n\t\t</div>\n\t\t<pre class=usageCode>\nvp->setColor(color);\n</pre>\n\t\t<hr>\n\t\t<a name=\"Method:toString\"></a>\n\t\t<pre class=detailCode>\nstring toString() const;\n</pre>\n\t\t<div class=detailHTML>\n\t\tReturns a string representation of this vertex, such as\n\t\t<code>\"Vertex{name=r13c42, neighbors={r12c41, r12c43}}\"</code>.\n\t\t<p>Usage:<br>\n\t\t</div>\n\t\t<pre class=usageCode>\nstring str = vp->toString();\n</pre>\n\t\t<hr>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/basicgraph.html",
    "content": "<html>\n<head>\n<title>basicgraph.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>basicgraph.h</code></h1>\nThis file exports a <code>BasicGraph</code> class used to represent <b><i>graphs,</i></b> which consist of a set of <b><i>vertexes</i></b> and a set of <b><i>edges</i></b>.\nThis is a subclass of <code>Graph</code>.\nThe <code>Graph</code> class is parameterized and asks the client to specify types for its nodes and arcs.\n<code>BasicGraph</code> removes the burden of doing this from the client by supplying basic default types called <code>Vertex</code> (aka (<code>Node</code>) and <code>Edge</code> (aka <code>Arc</code>).\n<code>BasicGraph</code> also supplies several convenience member functions that build on the members of <code>Graph</code> for common graph tasks like searching for the existence of a vertex or edge.\nThe <code>BasicGraph</code> class also allows you to interchangeably use the names 'vertex' or 'node', and interchangeably use 'edge' or 'arc', both in member function names and class names.\nThis is to provide compatibility with the more common graph terminology of vertexes and edges rather than nodes and arcs.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Classes</td></tr>\n<tr><td class=indexKey><nobr><a href=\"BasicGraph-class.html\">BasicGraph</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class represents a graph with <code>Vertex</code> (aka <code>Node</code>) and <code>Edge</code> (aka <code>Arc</code>) and the specified vertex and edge types respectively.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"Vertex-class.html\">Vertex</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Each object of this class represents an individual vertex (node) in a graph.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"Edge-class.html\">Edge</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Each object of this class represents an individual edge (arc) in a graph.</td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/bitstream.html",
    "content": "<html>\n<head>\n<title>bitstream.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>bitstream.h</code></h1>\nThis file exports stream classes related to reading and writing individual bits at a time from various input sources.\nEach base type <code>ibitstream</code> and <code>obitstream</code> has two concrete subclasses, one for use with files (<code>ifbitstream</code>, <code>ofbitstream</code>) and one for use with string buffers (<code>istringbitstream</code>, <code>ostringbitstream</code>).\n\n<p class=\"since\">\n\tAvailable since: 2014/02/01 version of C++ library\n</p>\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Class</td></tr>\n<tr><td class=indexKey><nobr><a href=\"ibitstream-class.html\">ibitstream</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This base class reads bits of data from various input sources.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"ifbitstream-class.html\">ifbitstream</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class reads bits of data from input files.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"istringbitstream-class.html\">istringbitstream</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class reads bits of data from the characters of a string.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"obitstream-class.html\">obitstream</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This base class writes bits of data to various output sources.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"ofbitstream-class.html\">ofbitstream</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class writes bits of data to output files.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"ostringbitstream-class.html\">ostringbitstream</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class writes bits of data into an internal string buffer.</td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/console.html",
    "content": "<html>\n<head>\n<title>console.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>console.h</code></h1>\nThis file redirects the <code>cin</code>, <code>cout</code>,\nand <code>cerr</code> channels to use a console window.  This file\nmust be included in the source file that contains the <code>main</code>\nfunction, although it may be included in other source files as well.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:clearConsole\">clearConsole()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Erases the contents of the console window.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getConsoleEcho\">getConsoleEcho()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns whether console output is also sent to the plain text console.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getConsoleExitProgramOnClose\">getConsoleExitProgramOnClose()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns whether console should shut down the entire program when it is closed.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getConsolePrintExceptions\">getConsolePrintExceptions()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns whether console should catch and display exceptions that occur when the program is running.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setConsoleEcho\">setConsoleEcho(<var>echo</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Changes whether console output is also sent to the plain text console.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setConsoleExitProgramOnClose\">setConsoleExitProgramOnClose()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Changes whether console should shut down the entire program when it is closed.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setConsoleFont\">setConsoleFont(<var>font</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Changes the font used for the console.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setConsoleLocation\">setConsoleLocation(<var>x</var>,&nbsp;<var>y</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Changes the x/y position of the console on screen.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setConsolePrintExceptions\">setConsolePrintExceptions()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Changes whether console should catch and display exceptions that occur when the program is running.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setConsoleSize\">setConsoleSize(<var>width</var>,&nbsp;<var>height</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Changes the size of the console to the specified dimensions, measured in pixels.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setConsoleWindowTitle\">setConsoleWindowTitle(<var>title</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Changes the title bar text of the console window to the specified text.</td></tr>\n</table>\n\n<h2>Function detail</h2>\n<hr>\n\n<a name=\"Function:clearConsole\"></a>\n<pre class=detailCode>\nvoid clearConsole();\n</pre>\n<div class=detailHTML>\nErases the contents of the console window.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nclearConsole();\n</pre>\n<hr>\n\n<a name=\"Function:getConsoleEcho\"></a>\n<pre class=detailCode>\nbool getConsoleEcho();\n</pre>\n<div class=detailHTML>\nReturns whether console output is also sent to the plain text console.\nThe Stanford graphical console window takes over the standard output streams <code>cin</code>, <code>cout</code>, and <code>cerr</code>, but the old plain-text versions are still available, usually as a pane at the bottom of your development environment (IDE).\nIf the console echo is <code>true</code>, any messages sent to the graphical console are also sent to the old plain text console.\nThis is generally used to assist in capturing or comparing output.\n\n<p>The console echo is initially <code>false</code> but can be changed to <code>true</code> by calling <code>setConsoleEcho</code> and/or by defining the compiler flag <code>SPL_CONSOLE_ECHO</code>.</p>\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nbool echo = getConsoleEcho();\n</pre>\n<p class=\"since\">\n\tAvailable since: 2014/02/01 version of C++ library\n</p>\n<hr>\n\n<a name=\"Function:getConsoleExitProgramOnClose\"></a>\n<pre class=detailCode>\nbool getConsoleExitProgramOnClose();\n</pre>\n<div class=detailHTML>\nReturns whether console should shut down the entire program when it is closed.\n\n<p>This value is initially <code>false</code> but can be changed to <code>true</code> by calling <code>setConsoleExitProgramOnClose</code> and/or by defining the compiler flag <code>SPL_CONSOLE_EXIT_ON_CLOSE</code>.</p>\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nbool exit = getConsoleExitProgramOnClose();\n</pre>\n<p class=\"since\">\n\tAvailable since: 2014/02/01 version of C++ library\n</p>\n<hr>\n\n<a name=\"Function:getConsolePrintExceptions\"></a>\n<pre class=detailCode>\nbool getConsolePrintExceptions();\n</pre>\n<div class=detailHTML>\nReturns whether console should catch and display exceptions that occur when the program is running.\nIf <code>true</code>, the console enables a top-level terminate signal handler that will catch and display any exception that is about to otherwise terminate the program.\nInformation about the exception will be emitted to <code>cerr</code>.\nThis is typically useful for new programmers to help them diagnose the cause of a program crash.\nThe same information could be gathered by running the program in a debugger, but many new programmers are not experienced with the debugger or are unwilling to use it, so this feature provides a middle ground.\n\n<p>This value is initially <code>false</code> but can be changed to <code>true</code> by calling <code>setConsolePrintExceptions</code> and/or by defining the compiler flag <code>SPL_CONSOLE_PRINT_EXCEPTIONS</code>.</p>\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nbool exit = getConsolePrintExceptions();\n</pre>\n<p class=\"since\">\n\tAvailable since: 2014/02/01 version of C++ library\n</p>\n<hr>\n\n<a name=\"Function:setConsoleEcho\"></a>\n<pre class=detailCode>\nvoid setConsoleEcho(bool echo);\n</pre>\n<div class=detailHTML>\nChanges whether console output is also sent to the plain text console.\nThe Stanford graphical console window takes over the standard output streams <code>cin</code>, <code>cout</code>, and <code>cerr</code>, but the old plain-text versions are still available, usually as a pane at the bottom of your development environment (IDE).\nIf the console echo is <code>true</code>, any messages sent to the graphical console are also sent to the old plain text console.\nThis is generally used to assist in capturing or comparing output.\n\n<p>The console echo is initially <code>false</code> but can be changed to <code>true</code> by calling this function and/or by defining the compiler flag <code>SPL_CONSOLE_ECHO</code>.</p>\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetConsoleEcho(echo);\n</pre>\n<p class=\"since\">\n\tAvailable since: 2014/02/01 version of C++ library\n</p>\n<hr>\n\n<a name=\"Function:setConsoleExitProgramOnClose\"></a>\n<pre class=detailCode>\nvoid setConsoleExitProgramOnClose(bool exit);\n</pre>\n<div class=detailHTML>\nChanges whether console should shut down the entire program when it is closed.\n\n<p>This value is initially <code>false</code> but can be changed to <code>true</code> by calling this function and/or by defining the compiler flag <code>SPL_CONSOLE_EXIT_ON_CLOSE</code>.</p>\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetConsoleExitProgramOnClose(exit);\n</pre>\n<p class=\"since\">\n\tAvailable since: 2014/02/01 version of C++ library\n</p>\n<hr>\n\n<a name=\"Function:setConsoleFont\"></a>\n<pre class=detailCode>\nvoid setConsoleFont(const string&amp; font);\n</pre>\n<div class=detailHTML>\nChanges the font used for the console.  The <code>font</code> parameter\nis typically a string in the form <code>family-style-size</code>.\nIn this string, <code>family</code> is the name of the font family;\n<code>style</code> is either missing (indicating a plain font) or one\nof the strings <code>Bold</code>, <code>Italic</code>, or\n<code>BoldItalic</code>; and <code>size</code> is an integer\nindicating the point size.  If any of these components is\nspecified as an asterisk, the existing value is retained.\nThe <code>font</code> parameter can also be a sequence of\nsuch specifications separated by semicolons, in which case the\nfirst available font on the system is used.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetConsoleFont(font);\n</pre>\n<hr>\n\n<a name=\"Function:setConsoleLocation\"></a>\n<pre class=detailCode>\nvoid setConsoleLocation(int x, int y);\n</pre>\n<div class=detailHTML>\nChanges the top/left corner of the console window to be located at the specified (x, y) pixel position.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetConsoleLocation(x, y);\n</pre>\n<p class=\"since\">\n\tAvailable since: 2014/02/01 version of C++ library\n</p>\n<hr>\n\n<a name=\"Function:setConsolePrintExceptions\"></a>\n<pre class=detailCode>\nvoid setConsolePrintExceptions(bool print);\n</pre>\n<div class=detailHTML>\nChanges whether console should catch and display exceptions that occur when the program is running.\nIf <code>true</code>, the console enables a top-level terminate signal handler that will catch and display any exception that is about to otherwise terminate the program.\nInformation about the exception will be emitted to <code>cerr</code>.\nThis is typically useful for new programmers to help them diagnose the cause of a program crash.\nThe same information could be gathered by running the program in a debugger, but many new programmers are not experienced with the debugger or are unwilling to use it, so this feature provides a middle ground.\n\n<p>This value is initially <code>false</code> but can be changed to <code>true</code> by calling this function and/or by defining the compiler flag <code>SPL_CONSOLE_PRINT_EXCEPTIONS</code>.</p>\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetConsolePrintExceptions(exit);\n</pre>\n<p class=\"since\">\n\tAvailable since: 2014/02/01 version of C++ library\n</p>\n<hr>\n\n<a name=\"Function:setConsoleSize\"></a>\n<pre class=detailCode>\nvoid setConsoleSize(double width, double height);\n</pre>\n<div class=detailHTML>\nChanges the size of the console to the specified dimensions, measured\nin pixels.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetConsoleSize(width, height);\n</pre>\n<hr>\n\n<a name=\"Function:setConsoleWindowTitle\"></a>\n<pre class=detailCode>\nvoid setConsoleWindowTitle(std::string title);\n</pre>\n<div class=detailHTML>\nChanges the title bar text of the console window to the specified text.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetConsoleWindowTitle(title);\n</pre>\n<p class=\"since\">\n\tAvailable since: 2014/11/13 version of C++ library\n</p>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/cppdoc.css",
    "content": "body, h1, h2, h3, h4, h5, h6 {\n\tfont-family:\"Candara\", \"Calibri\", \"Helvetica Neue\", \"Helvetica\", \"Arial\", \"sans-serif\";\n}\n\nbody {\n\tfont-size:100%;\n}\n\nh1 {\n\tfont-size:1.5em;\n\tfont-weight:bold;\n}\n\nh2 {\n\tfont-size:1.4em;\n\tfont-weight:bold;\n\tmargin-bottom:0px;\n}\n\n.header {\n\tfont-size:125%;\n}\n\n.new {\n\tcolor: #cc0000;\n\tfont-weight: bold;\n}\n\npre, code, .code, .indexKey, .include, .detailCode, .usageCode {\n\tfont-family:\"Consolas\", \"Courier New\", \"Courier\", \"monospace\";\n}\n\npre, code, .code {\n\tfont-weight:bold;\n\tfont-size:90%;\n}\n\n.comment {\n\tcolor:blue;\n}\n\n.deprecated,\n.deprecated * {\n\tbackground-color: #e0e0e0 !important;\n\tcolor: #aaa !important;\n}\n\n.detailCode {\n\tpadding:0px;\n\tfont-weight:bold;\n\tfont-size:100%;\n}\n\n.detailHTML {\n\tfont-size:1em;\n\tmargin-left:20px;\n}\n\n.it {\n\tfont-weight:normal;\n\tfont-style:italic;\n\tfont-size:90%;\n}\n\t\n.banner {\n\tborder:0;\n}\n\n.bannerText {\n\tfont-size:1.6em;\n\tfont-weight:bold;\n}\n\n.index {\n\tborder-collapse:collapse;\n\tmargin-top:1px;\n}\n\n.index tr, .index td {\n\tborder-color: #9eadc0;\n}\n\n.index tr:nth-child(2N) {\n\tbackground-color: #f6f6f6;\n}\n\n.index tbody tr:hover {\n\tbackground-color: #ffffee !important;\n}\n\n.index td.bigoh {\n\tborder:1px solid #9eadc0;\n\tvertical-align: top;\n\twhite-space: nowrap;\n}\n\n.indexHead {\n\tfont-size:1.4em;\n\tfont-weight:bold;\n\tpadding-top:1em;\n}\n\n.indexKey {\n\tborder:1px solid black; \n\tpadding:3px 5px;\n\t/* font-weight:bold; */\n\tfont-size:95%;\n\tvertical-align: top;\n}\n\n.indexKey var {\n\tfont-style: italic;\n\t/*font-weight: bold;*/\n}\n\n.indexSynopsis {\n\tborder:1px solid black; \n\tpadding:3px 5px;\n\tvertical-align: top;\n}\n\n.include {\n\tfont-weight:bold;\n\tfont-size:100%;\n}\n\n.inset {\n\tmargin-left:36px;\n}\n\n.usageCode {\n\tfont-weight:bold;\n\tfont-size:90%;\n\tmargin-left:40px;\n}\t\n\n.since {\n\tbackground-color: #ffffee;\n\tborder: 1px dotted #bbbbff;\n\tcolor: #555;\n\tfont-size: 95%;\n\tfont-style: italic;\n\tpadding: 0.2em 0.5em;\n}\n"
  },
  {
    "path": "Archived/cppdoc/dawglexicon.html",
    "content": "<html>\n<head>\n<title>dawglexicon.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>dawglexicon.h</code></h1>\nThis file exports the <code>DawgLexicon</code> class, which is a\ncompact structure for storing a list of words.\nUnlike the standard <code>Lexicon</code> implementation, <code>DawgLexicon</code> is implemented internally using a directed acyclic word graph (\"DAWG\"), which allows it to have an efficient binary file representation.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Class</td></tr>\n<tr><td class=indexKey><nobr><a href=\"DawgLexicon-class.html\">DawgLexicon</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class is used to represent a <b><i>lexicon,</i></b> or word list.</td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/deque.html",
    "content": "<html>\n<head>\n<title>deque.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>deque.h</code></h1>\nThis file exports the <code>Deque</code> class, an ordered collection with a front and back in which elements can be efficiently added and removed from both the front and the back.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Class</td></tr>\n<tr><td class=indexKey><nobr><a href=\"Deque-class.html\">Deque&lt;<var>ValueType</var>&gt;</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class models a linear structure called a <b><i>deque</i></b> in which values can be added and removed from either end.</td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/direction.html",
    "content": "<html>\n<head>\n<title>direction.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>direction.h</code></h1>\nThis file exports an enumerated type called <code>Direction</code>\nwhose elements are the four compass points: <code>NORTH</code>,\n<code>EAST</code>, <code>SOUTH</code>, and <code>WEST</code>.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Type</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:Direction\">Direction</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This enumerated type is used to represent the four compass directions.</td></tr>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:directionToString\">directionToString(<var>dir</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the name of the direction as a string.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:leftFrom\">leftFrom(<var>dir</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the direction that is to the left of the argument.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:opposite\">opposite(<var>dir</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the direction that is opposite to the argument.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:rightFrom\">rightFrom(<var>dir</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the direction that is to the right of the argument.</td></tr>\n</table>\n<h2>Type detail</h2>\n<hr>\n<a name=\"Type:Direction\"></a>\n<pre class=detailCode>\nenum Direction { NORTH, EAST, SOUTH, WEST };\n</pre>\n<div class=detailHTML>\nThis enumerated type is used to represent the four compass directions.\n</div>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:leftFrom\"></a>\n<pre class=detailCode>\nDirection leftFrom(Direction dir);\n</pre>\n<div class=detailHTML>\nReturns the direction that is to the left of the argument.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nDirection newdir = leftFrom(dir);\n</pre>\n<hr>\n<a name=\"Function:rightFrom\"></a>\n<pre class=detailCode>\nDirection rightFrom(Direction dir);\n</pre>\n<div class=detailHTML>\nReturns the direction that is to the right of the argument.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nDirection newdir = rightFrom(dir);\n</pre>\n<hr>\n<a name=\"Function:opposite\"></a>\n<pre class=detailCode>\nDirection opposite(Direction dir);\n</pre>\n<div class=detailHTML>\nReturns the direction that is opposite to the argument.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nDirection newdir = opposite(dir);\n</pre>\n<hr>\n<a name=\"Function:directionToString\"></a>\n<pre class=detailCode>\nstring directionToString(Direction dir);\n</pre>\n<div class=detailHTML>\nReturns the name of the direction as a string.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = directionToString(dir);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/dist/CURRENTVERSION_CPPLIB.txt",
    "content": "2019/08/13\n"
  },
  {
    "path": "Archived/cppdoc/dist/CURRENTVERSION_SPLJAR.txt",
    "content": "2018/07/16\n"
  },
  {
    "path": "Archived/cppdoc/dist/autograder-empty-project.pro",
    "content": "#####################################################################\n## Stanford CS 106 B/X Qt Creator project file                     ##\n#####################################################################\n#\n# This file specifies the information about your project to Qt Creator.\n# You should not need to modify this file to complete your assignment.\n#\n# @author Marty Stepp (past authors/support by Keith Schwarz, Reid Watson, etc.)\n# @version 2019/04/23\n# - revert copydata code for copying resource files\nDEFINES += SPL_PROJECT_VERSION=20190423   # kludgy YYYYMMDD constant used by lib to know its version\n\n# global Qt/project settings\nTEMPLATE = app\nPROJECT_FILTER =\nQT       += core gui multimedia network\ngreaterThan(QT_MAJOR_VERSION, 4): QT += widgets\n\n###############################################################################\n# BEGIN SECTION FOR SPECIFYING SOURCE/LIBRARY/RESOURCE FILES OF PROJECT       #\n###############################################################################\n\n# remove spaces from target executable for better Windows compatibility\nTARGET = $$replace(TARGET, \" \", _)\n\n# checks to make sure we haven't accidentally opened the project\n# from within a ZIP archive (common mistake on Windows)\n\nwin32 {\n    contains(PWD, .*\\.zip.*) | contains(PWD, .*\\.ZIP.*) {\n        message(\"\")\n        message(*******************************************************************)\n        message(*** ERROR: You are trying to open this project from within a .ZIP archive:)\n        message(*** $$PWD)\n        message(*** You need to extract the files out of the ZIP file first.)\n        message(*** Open the ZIP in your file explorer and press the Extract button.)\n        message(*******************************************************************)\n        message(\"\")\n        error(Exiting.)\n    }\n}\n\n# check for intl chars in path (common issue for intl students)\nPWD_WITHOUT_BAD_CHARS = $$PWD\nPWD_WITHOUT_BAD_CHARS ~= s|[^a-zA-Z0-9_ ().\\/:;+-]+|???\nBAD_CHARS = $$PWD\nBAD_CHARS ~= s|[a-zA-Z0-9_ ().\\/:;-]+|\n!isEmpty(BAD_CHARS) {\n    message(\"\")\n    message(*******************************************************************)\n    message(*** ERROR: Your project directory contains invalid characters:)\n    message(*** $$PWD)\n    message(***)\n    message(*** The characters that are invalid are: $$BAD_CHARS)\n    message(***)\n    message(*** You need to store your project in a directory without any punctuation)\n    message(*** marks such as commas, or international symbols such as)\n    message(*** Chinese or Korean symbols.)\n    message(*** If you keep seeing this error try creating a simple directory)\n    message(*** name such as \"C:\\Programs\\Homework1.\")\n    message(*******************************************************************)\n    message(\"\")\n    error(Exiting.)\n}\n\n# checks to ensure that the Stanford C++ library is present in this project\n!exists($$PWD/lib/StanfordCPPLib/private/version.h) {\n    message(\"\")\n    message(*******************************************************************)\n    message(*** ERROR: Stanford C++ library not found!)\n    message(*** This project cannot run without the folder lib/StanfordCPPLib/.)\n    message(*** Place that folder into your project and try again.)\n    message(*******************************************************************)\n    message(\"\")\n    error(Exiting.)\n}\n\nwin64 {\n    !exists($$PWD/lib/addr2line64.exe) {\n        message(\"\")\n        message(*******************************************************************)\n        message(*** ERROR: Stanford C++ library support file 'addr2line64.exe' not found!)\n        message(*** Our library needs this file present to produce stack traces.)\n        message(*** Place that file into your lib/ folder and try again.)\n        message(*******************************************************************)\n        message(\"\")\n        warning(Exiting.)\n    }\n}\n\nwin32 {\n    !exists($$PWD/lib/addr2line.exe) {\n        message(\"\")\n        message(*******************************************************************)\n        message(*** ERROR: Stanford C++ library support file 'addr2line.exe' not found!)\n        message(*** Our library needs this file present to produce stack traces.)\n        message(*** Place that file into your lib/ folder and try again.)\n        message(*******************************************************************)\n        message(\"\")\n        warning(Exiting.)\n    }\n}\n\n!exists($$PWD/lib/iconstrip.png) {\n    message(\"\")\n    message(*******************************************************************)\n    message(*** ERROR: Stanford library cannot find image strip file:)\n    message(*** lib/iconstrip.png)\n    message(*** This project cannot run without this file present.)\n    message(*** Place the file into your lib/ folder and try again.)\n    message(*******************************************************************)\n    message(\"\")\n    warning(Exiting.)\n}\n\n# precompiled header speeds up build times\n!win32 {\nPRECOMPILED_HEADER = $$files($$PWD/lib/StanfordCPPLib/private/precompiled.h)\n}\n\n# honeypot to trick Qt Creator so that adding files works from within IDE;\n# Qt looks for first 'SOURCES *=' line and adds newly added .cpp/h files there.\n# But then that causes the files to be added twice because of *.cpp/h rules below.\n# To get around this, we follow the first 'SOURCES *=' line by a line that clears\n# out SOURCES, so that the Qt Creator .pro modification is ineffectual.\nDISTFILES *= \"\"\nDISTFILES = \"\"\nHEADERS *= \"\"\nHEADERS = \"\"\nSOURCES *= \"\"\nSOURCES = \"\"\n\n# include various source .cpp files and header .h files in the build process\n# (student's source code can be put into project root, or src/ subfolder)\nSOURCES *= $$files($$PWD/lib/StanfordCPPLib/*.cpp, true)\nSOURCES *= $$files($$PWD/src/*.cpp, true)\nexists($$PWD/$$PROJECT_FILTER*.cpp) {\n    SOURCES *= $$files($$PWD/$$PROJECT_FILTER*.cpp)\n}\n\nexists($$PWD/lib/StanfordCPPLib/*.h) {\n    HEADERS *= $$files($$PWD/lib/StanfordCPPLib/*.h)\n}\nHEADERS *= $$files($$PWD/lib/StanfordCPPLib/*.h, true)\nHEADERS *= $$files($$PWD/src/*.h, true)\nexists($$PWD/$$PROJECT_FILTER*.h) {\n    HEADERS *= $$files($$PWD/$$PROJECT_FILTER*.h)\n}\n\n# directories examined by Qt Creator when student writes an #include statement\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/collections/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/graphics/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/io/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/system/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/util/\nexists($$PWD/lib/StanfordCPPLib/autograder/*) {\n    INCLUDEPATH *= $$PWD/lib/StanfordCPPLib/autograder/\n}\nINCLUDEPATH *= $$PWD/src/\nINCLUDEPATH *= $$PWD/\nexists($$PWD/src/autograder/$$PROJECT_FILTER/*.h) {\n    INCLUDEPATH *= $$PWD/src/autograder/$$PROJECT_FILTER/\n}\nexists($$PWD/src/test/*.h) {\n    INCLUDEPATH *= $$PWD/src/test/\n}\n\n# directories listed as \"Other files\" in left Project pane of Qt Creator\nexists($$PWD/res/*) {\n    OTHER_FILES *= $$files($$PWD/res/*, true)\n}\nexists($$PWD/*.txt) {\n    OTHER_FILES *= $$files($$PWD/*.txt)\n}\nexists($$PWD/input/*) {\n    OTHER_FILES *= $$files($$PWD/input/*, true)\n}\nexists($$PWD/output/*) {\n    OTHER_FILES *= $$files($$PWD/output/*, true)\n}\n\n###############################################################################\n# END SECTION FOR SPECIFYING SOURCE/LIBRARY/RESOURCE FILES OF PROJECT         #\n###############################################################################\n\n\n###############################################################################\n# BEGIN SECTION FOR SPECIFYING COMPILER/LINKER FLAGS AND LIBRARIES            #\n###############################################################################\n\n# set up flags for the C++ compiler\n# (In general, many warnings/errors are enabled to tighten compile-time checking.\n# A few overly pedantic/confusing errors are turned off for simplicity.)\nCONFIG += no_include_pwd         # make sure we do not accidentally #include files placed in 'resources'\nCONFIG += sdk_no_version_check   # removes spurious warnings on Mac OS X\n# CONFIG += warn_off\n\n# gives us a bit more precision about which errors are printed\nQMAKE_CFLAGS_WARN_ON -= -Wall\nQMAKE_CFLAGS_WARN_ON -= -Wextra\nQMAKE_CFLAGS_WARN_ON -= -W\nQMAKE_CXXFLAGS_WARN_ON -= -Wall\nQMAKE_CXXFLAGS_WARN_ON -= -Wextra\nQMAKE_CXXFLAGS_WARN_ON -= -W\n\nwin32 {\n    # some Windows systems have old MinGW compilers, so be safe and use C++11\n    CONFIG += c++11\n} else {\n    # Mac/Linux should support the latest C++ features\n    CONFIG += c++14\n}\n\n# uncomment this if you want to dump the preprocessor output into the .o files\n# (useful when debugging advanced preprocessor hacking)\n# QMAKE_CXXFLAGS += -E\n\nQMAKE_CXXFLAGS += -Wall\n#QMAKE_CXXFLAGS += -Wextra\nQMAKE_CXXFLAGS += -Wcast-align\n#QMAKE_CXXFLAGS += -Wfloat-equal\nQMAKE_CXXFLAGS += -Wformat=2\nQMAKE_CXXFLAGS += -Wlogical-op\nQMAKE_CXXFLAGS += -Wno-missing-field-initializers\nQMAKE_CXXFLAGS += -Wno-old-style-cast\nQMAKE_CXXFLAGS += -Wno-sign-compare\nQMAKE_CXXFLAGS += -Wno-sign-conversion\nQMAKE_CXXFLAGS += -Wno-write-strings\nQMAKE_CXXFLAGS += -Wreturn-type\nQMAKE_CXXFLAGS += -Werror=return-type\nQMAKE_CXXFLAGS += -Werror=uninitialized\nQMAKE_CXXFLAGS += -Wunreachable-code\nQMAKE_CXXFLAGS += -Wunused-parameter\nexists($$PWD/lib/autograder/*.h) | exists($$PWD/lib/StanfordCPPLib/autograder/$$PROJECT_FILTER/*.h) | exists($$PWD/lib/autograder/$$PROJECT_FILTER/*.cpp) {\n    # omit some warnings/errors in autograder projects\n    # (largely because the Google Test framework violates them a ton of times)\n    QMAKE_CXXFLAGS += -Wno-deprecated\n    QMAKE_CXXFLAGS += -Wno-reorder\n    QMAKE_CXXFLAGS += -Wno-unused-function\n    QMAKE_CXXFLAGS += -Wno-useless-cast\n}\n\n# additional flags for Windows\nwin32 {\n    LIBS += -lDbghelp\n    LIBS += -lbfd\n    LIBS += -limagehlp\n    cache()\n} else {\n    # flags that don't work on Windows MinGW compiler\n    QMAKE_CXXFLAGS += -Wno-unused-const-variable\n    LIBS += -ldl\n}\n\n# additional flags for Mac OS X\nmacx {\n    # calling cache() reduces warnings on Mac OS X systems\n    cache()\n    QMAKE_MAC_SDK = macosx\n}\n\n# additional flags for Linux\nunix:!macx {\n    cache()\n}\n\n# libraries for all OSes\nLIBS += -lpthread\n\n# additional flags for clang compiler (default on Mac)\nCOMPILERNAME = $$QMAKE_CXX\nCOMPILERNAME ~= s|.*/|\nequals(COMPILERNAME, clang++) {\n    QMAKE_CXXFLAGS += -Wempty-init-stmt\n    QMAKE_CXXFLAGS += -Wignored-qualifiers\n    QMAKE_CXXFLAGS += -Winitializer-overrides\n    QMAKE_CXXFLAGS += -Wmissing-field-initializers\n    QMAKE_CXXFLAGS += -Wmissing-method-return-type\n    QMAKE_CXXFLAGS += -Wnull-pointer-arithmetic\n    QMAKE_CXXFLAGS += -Wsemicolon-before-method-body\n    QMAKE_CXXFLAGS += -Wno-format-nonliteral\n    QMAKE_CXXFLAGS += -Wno-inconsistent-missing-override\n    QMAKE_CXXFLAGS += -Wno-overloaded-virtual\n    QMAKE_CXXFLAGS += -Wno-unknown-warning-option\n}\n\n# set up configuration flags used internally by the Stanford C++ libraries\n# These flags are all optional but can simplify project configuration.\n# (setting x/y to 999999 centers the window)\n# (see platform.cpp/h for descriptions of some of these flags)\n\n# wrapper name for 'main' function (needed so student can write 'int main'\n# but our library can grab the actual main function to initialize itself)\nDEFINES += SPL_REPLACE_MAIN_FUNCTION=1\nDEFINES += main=qMain\n\n# x/y location and w/h of the graphical console window; set to -1 to center\nDEFINES += SPL_CONSOLE_X=-1\nDEFINES += SPL_CONSOLE_Y=-1\nDEFINES += SPL_CONSOLE_WIDTH=900\nDEFINES += SPL_CONSOLE_HEIGHT=550\n\n# font size of the font in the graphical console window; can also be set via window menu\n#DEFINES += SPL_CONSOLE_FONTSIZE=18\n\n# echo graphical console onto the plain text console as well?\nDEFINES += SPL_CONSOLE_ECHO\n\n# quit the C++ program when the graphical console is closed?\nDEFINES += SPL_CONSOLE_EXIT_ON_CLOSE\n\n# crash if the .pro is older than the minimum specified in version.h? (SPL_PROJECT_VERSION)\nDEFINES += SPL_VERIFY_PROJECT_VERSION\n\n# allow clients to access the internal data inside the heap of PriorityQueue?\n# (used for some practice exam exercises/demos)\nDEFINES += SPL_PQUEUE_ALLOW_HEAP_ACCESS\n\n# should toString / << of a PriorityQueue display the elements in sorted order,\n# or in heap internal order? the former is more expected by client; the latter\n# is faster and avoids a deep-copy\nDEFINES += SPL_PQUEUE_PRINT_IN_HEAP_ORDER\n\n# flag to throw exceptions when a collection iterator is used after it has\n# been invalidated (e.g. if you remove from a Map while iterating over it)\nDEFINES += SPL_THROW_ON_INVALID_ITERATOR\n\n# flag to add members like 'cost', 'visited', etc. to BasicGraph Vertex/Edge\n# (we are going to disable these to force more interesting implementations)\n# DEFINES += SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n\n# should we throw an error() when operator >> fails on a collection?\n# for years this was true, but the C++ standard says you should just silently\n# set the fail bit on the stream and exit, so that has been made the default.\n# DEFINES += SPL_ERROR_ON_STREAM_EXTRACT\n\n# scale up the console window on high-DPI screens?\n# DEFINES += SPL_SCALE_HIGH_DPI_SCREEN\n\n# is the .cpp portion of the library merged into a single .cpp file\n# to speed up compilation?\nDEFINES += SPL_MERGED_LIBRARY_SINGLE_FILE\n\n# should we attempt to precompile the Qt moc_*.cpp files for speed?\nDEFINES += SPL_PRECOMPILE_QT_MOC_FILES\n\n# build-specific options (debug vs release)\n\n# options for the 'debug' target (default):\n# use no optimization, generate debugger symbols,\n# and catch/print to console any uncaught exceptions thrown by the program\nCONFIG(debug, debug|release) {\n    QMAKE_CXXFLAGS += -g3\n    QMAKE_CXXFLAGS += -fno-inline\n    QMAKE_CXXFLAGS += -fno-omit-frame-pointer\n\n    unix:!macx {\n        equals(COMPILERNAME, g++) {\n            # on Linux g++, these flags help us gather line numbers for stack traces\n            QMAKE_CXXFLAGS += -rdynamic\n            QMAKE_CXXFLAGS += -export-dynamic\n            QMAKE_CXXFLAGS += -Wl,--export-dynamic\n            QMAKE_LFLAGS += -export-dynamic\n            QMAKE_LFLAGS += -rdynamic\n        }\n    }\n    unix:macx {\n        equals(COMPILERNAME, clang++) {\n            QMAKE_CXXFLAGS += -Wno-unused-command-line-argument\n            QMAKE_CXXFLAGS += -Wl,-export_dynamic\n            QMAKE_CXXFLAGS += -Wl,-export-dynamic\n            QMAKE_CXXFLAGS += -Wl,--export-dynamic\n            QMAKE_LFLAGS += -rdynamic\n            QMAKE_LFLAGS += -Wl,-no_pie\n        }\n    }\n\n    # print details about uncaught exceptions with red error text / stack trace\n    DEFINES += SPL_CONSOLE_PRINT_EXCEPTIONS\n}\n\n# options for the 'release' target:\n# enable some compiler optimizations, and\n# make it statically linked so it is a stand-alone executable\nCONFIG(release, debug|release) {\n    QMAKE_CXXFLAGS += -O2\n    # commenting out -static because it doesn't link to Qt libraries properly\n    #QMAKE_LFLAGS += -static\n\n    macx {\n        QMAKE_POST_LINK += 'macdeployqt $${OUT_PWD}/$${TARGET}.app'\n    }\n    unix:!macx {\n        QMAKE_LFLAGS += -static-libgcc\n        QMAKE_LFLAGS += -static-libstdc++\n    }\n    win32 {\n        TARGET_PATH = $${OUT_PWD}/release/$${TARGET}.exe\n        TARGET_PATH ~= s,/,\\\\,g\n\n        OUT_PATH = $${OUT_PWD}/\n        OUT_PATH ~= s,/,\\\\,g\n\n        QMAKE_LFLAGS += -static-libgcc\n        QMAKE_LFLAGS += -static-libstdc++\n        QMAKE_POST_LINK += copy '\"'$${TARGET_PATH}'\"' '\"'$${OUT_PATH}'\"'\n    }\n}\n\n###############################################################################\n# END SECTION FOR SPECIFYING COMPILER/LINKER FLAGS AND LIBRARIES              #\n###############################################################################\n\n\n###############################################################################\n# BEGIN SECTION FOR CS 106B/X AUTOGRADER PROGRAMS                             #\n###############################################################################\n\n# settings specific to CS 106 B/X auto-grading programs; do not modify\nexists($$PWD/lib/autograder/*.h) | exists($$PWD/lib/StanfordCPPLib/autograder/*.h) | exists($$PWD/src/autograder/$$PROJECT_FILTER/*.cpp) {\n    # include the various autograder source code and libraries in the build process\n    exists($$PWD/lib/autograder/*.cpp) {\n        SOURCES *= $$files($$PWD/lib/autograder/*.cpp, true)\n    }\n    exists($$PWD/lib/autograder/*.h) {\n        HEADERS *= $$files($$PWD/lib/autograder/*.h, true)\n    }\n    exists($$PWD/lib/autograder/*) {\n        INCLUDEPATH *= $$PWD/lib/autograder/\n    }\n    exists($$PWD/lib/StanfordCPPLib/autograder/*) {\n        INCLUDEPATH *= $$PWD/lib/StanfordCPPLib/autograder/\n    }\n    exists($$PWD/src/autograder/*.h) {\n        INCLUDEPATH *= $$PWD/src/autograder/\n    }\n    exists($$PWD/src/autograder/$$PROJECT_FILTER/*.h) {\n        INCLUDEPATH *= $$PWD/src/autograder/$$PROJECT_FILTER/\n    }\n\n    DEFINES += SPL_AUTOGRADER_MODE\n\n    # define the style of autograder you want to use (GUI vs console)\n    DEFINES += SPL_GRAPHICAL_AUTOGRADER\n    # DEFINES += SPL_CONSOLE_AUTOGRADER\n\n    # a check to ensure that required autograder resources are present in this project\n    !exists($$PWD/lib/iconstrip-autograder.png) {\n        message(\"\")\n        message(*******************************************************************)\n        message(*** ERROR: Stanford library cannot find autograder image strip file:)\n        message(*** lib/iconstrip-autograder.png)\n        message(*** This project cannot run without this file present.)\n        message(*** Place the file into your lib/ folder and try again.)\n        message(*******************************************************************)\n        message(\"\")\n        error(Exiting.)\n    }\n}\n###############################################################################\n# END SECTION FOR CS 106B/X AUTOGRADER PROGRAMS                               #\n###############################################################################\n\n\n###############################################################################\n# BEGIN SECTION FOR DEFINING HELPER FUNCTIONS FOR RESOURCE COPYING            #\n###############################################################################\n\nCOPY_RESOURCE_FILES_INPUT = \"\"\n\nwin32 {\n    # copy addr2line exe program(s) to capture stack traces on Windows\n    exists($$PWD/lib/*.exe) {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/lib/*.exe)\n    }\n    # optional .dll files for network features on Windows\n    exists($$PWD/lib/*.dll) {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/lib/*.dll)\n    }\n}\n# copy icons and image strips for library GUI/console windows\nexists($$PWD/lib/*.png) {\n    COPY_RESOURCE_FILES_INPUT += $$files($$PWD/lib/*.png)\n}\nexists($$PWD/*.txt) {\n    COPY_RESOURCE_FILES_INPUT += $$files($$PWD/*.txt)\n}\nexists($$PWD/res/*) {\n    win32 {\n        exists($$PWD/res/*/*) {\n            # this will preserve the nested res/ directory structure on Windows,\n            # at the unfortunate cost of copying res/ to build dir on every run;\n            # recommended: avoid res subfolders to avoid this penalty on Windows\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/res)\n        } else {\n            # res/ with no subdirectories will properly be copied only on modification\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/res/*.*)\n        }\n    } else {\n        # Mac/Linux have proper recursive file-copying semantics in all cases\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/res/*, true)\n    }\n}\n# input/ and output/ have same nested subfolder issue as res/\nexists($$PWD/input/*) {\n    win32 {\n        exists($$PWD/input/*/*) {\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/input)\n        } else {\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/input/*.*)\n        }\n    } else {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/input, true)\n    }\n}\nexists($$PWD/output/*) {\n    win32 {\n        exists($$PWD/output/*/*) {\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/output)\n        } else {\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/output/*.*)\n        }\n    } else {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/output, true)\n    }\n}\nexists($$PWD/lib/autograder/*.h) | exists($$PWD/lib/StanfordCPPLib/autograder/*.h) | exists($$PWD/src/autograder/$$PROJECT_FILTER/*.cpp) {\n    # in autograder projects, copy over student's .cpp and .h files for possible style checking\n    exists($$PWD/*.cpp) {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/*.cpp)\n    }\n    exists($$PWD/*.h) {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/*.h)\n    }\n}\n\n# platform-specific commands to copy files and folders to build directory\ncopy_resource_files.name = Copy resource files to the build directory\nwin32 {\n    # https://support.microsoft.com/en-us/help/289483/switches-that-you-can-use-with-xcopy-and-xcopy32-commands\n    # /s - copy subfolders\n    # /q - quiet (no verbose output)\n    # /y - overwrite without prompting\n    # /i - if destination does not exist and copying more than one file, assumes destination is a folder\n    copy_resource_files.commands = xcopy /s /q /y ${QMAKE_FILE_IN}\n} else {\n    copy_resource_files.commands = cp -rf ${QMAKE_FILE_IN} .\n}\n# copy_resource_files.commands = ${COPY_FILE} ${QMAKE_FILE_IN} ${QMAKE_FILE_OUT}\ncopy_resource_files.input = COPY_RESOURCE_FILES_INPUT\ncopy_resource_files.output = $${OUT_PWD}/${QMAKE_FILE_BASE}${QMAKE_FILE_EXT}\ncopy_resource_files.CONFIG = no_link no_clean target_predeps\nQMAKE_EXTRA_COMPILERS += copy_resource_files\n\n###############################################################################\n# END SECTION FOR DEFINING HELPER FUNCTIONS FOR RESOURCE COPYING              #\n###############################################################################\n\n# END OF FILE (this should be line #560; if not, your .pro has been changed!)\n"
  },
  {
    "path": "Archived/cppdoc/dist/empty-project.pro",
    "content": "#####################################################################\n## Stanford CS 106 B/X Qt Creator project file                     ##\n#####################################################################\n#\n# This file specifies the information about your project to Qt Creator.\n# You should not need to modify this file to complete your assignment.\n#\n# @author Marty Stepp (past authors/support by Keith Schwarz, Reid Watson, etc.)\n# @version 2019/04/23\n# - revert copydata code for copying resource files\nDEFINES += SPL_PROJECT_VERSION=20190423   # kludgy YYYYMMDD constant used by lib to know its version\n\n# global Qt/project settings\nTEMPLATE = app\nPROJECT_FILTER =\nQT       += core gui multimedia network\ngreaterThan(QT_MAJOR_VERSION, 4): QT += widgets\n\n###############################################################################\n# BEGIN SECTION FOR SPECIFYING SOURCE/LIBRARY/RESOURCE FILES OF PROJECT       #\n###############################################################################\n\n# remove spaces from target executable for better Windows compatibility\nTARGET = $$replace(TARGET, \" \", _)\n\n# checks to make sure we haven't accidentally opened the project\n# from within a ZIP archive (common mistake on Windows)\n\nwin32 {\n    contains(PWD, .*\\.zip.*) | contains(PWD, .*\\.ZIP.*) {\n        message(\"\")\n        message(*******************************************************************)\n        message(*** ERROR: You are trying to open this project from within a .ZIP archive:)\n        message(*** $$PWD)\n        message(*** You need to extract the files out of the ZIP file first.)\n        message(*** Open the ZIP in your file explorer and press the Extract button.)\n        message(*******************************************************************)\n        message(\"\")\n        error(Exiting.)\n    }\n}\n\n# check for intl chars in path (common issue for intl students)\nPWD_WITHOUT_BAD_CHARS = $$PWD\nPWD_WITHOUT_BAD_CHARS ~= s|[^a-zA-Z0-9_ ().\\/:;+-]+|???\nBAD_CHARS = $$PWD\nBAD_CHARS ~= s|[a-zA-Z0-9_ ().\\/:;-]+|\n!isEmpty(BAD_CHARS) {\n    message(\"\")\n    message(*******************************************************************)\n    message(*** ERROR: Your project directory contains invalid characters:)\n    message(*** $$PWD)\n    message(***)\n    message(*** The characters that are invalid are: $$BAD_CHARS)\n    message(***)\n    message(*** You need to store your project in a directory without any punctuation)\n    message(*** marks such as commas, or international symbols such as)\n    message(*** Chinese or Korean symbols.)\n    message(*** If you keep seeing this error try creating a simple directory)\n    message(*** name such as \"C:\\Programs\\Homework1.\")\n    message(*******************************************************************)\n    message(\"\")\n    error(Exiting.)\n}\n\n# checks to ensure that the Stanford C++ library is present in this project\n!exists($$PWD/lib/StanfordCPPLib/private/version.h) {\n    message(\"\")\n    message(*******************************************************************)\n    message(*** ERROR: Stanford C++ library not found!)\n    message(*** This project cannot run without the folder lib/StanfordCPPLib/.)\n    message(*** Place that folder into your project and try again.)\n    message(*******************************************************************)\n    message(\"\")\n    error(Exiting.)\n}\n\nwin64 {\n    !exists($$PWD/lib/addr2line64.exe) {\n        message(\"\")\n        message(*******************************************************************)\n        message(*** ERROR: Stanford C++ library support file 'addr2line64.exe' not found!)\n        message(*** Our library needs this file present to produce stack traces.)\n        message(*** Place that file into your lib/ folder and try again.)\n        message(*******************************************************************)\n        message(\"\")\n        warning(Exiting.)\n    }\n}\n\nwin32 {\n    !exists($$PWD/lib/addr2line.exe) {\n        message(\"\")\n        message(*******************************************************************)\n        message(*** ERROR: Stanford C++ library support file 'addr2line.exe' not found!)\n        message(*** Our library needs this file present to produce stack traces.)\n        message(*** Place that file into your lib/ folder and try again.)\n        message(*******************************************************************)\n        message(\"\")\n        warning(Exiting.)\n    }\n}\n\n!exists($$PWD/lib/iconstrip.png) {\n    message(\"\")\n    message(*******************************************************************)\n    message(*** ERROR: Stanford library cannot find image strip file:)\n    message(*** lib/iconstrip.png)\n    message(*** This project cannot run without this file present.)\n    message(*** Place the file into your lib/ folder and try again.)\n    message(*******************************************************************)\n    message(\"\")\n    warning(Exiting.)\n}\n\n# precompiled header speeds up build times\n!win32 {\nPRECOMPILED_HEADER = $$files($$PWD/lib/StanfordCPPLib/private/precompiled.h)\n}\n\n# honeypot to trick Qt Creator so that adding files works from within IDE;\n# Qt looks for first 'SOURCES *=' line and adds newly added .cpp/h files there.\n# But then that causes the files to be added twice because of *.cpp/h rules below.\n# To get around this, we follow the first 'SOURCES *=' line by a line that clears\n# out SOURCES, so that the Qt Creator .pro modification is ineffectual.\nDISTFILES *= \"\"\nDISTFILES = \"\"\nHEADERS *= \"\"\nHEADERS = \"\"\nSOURCES *= \"\"\nSOURCES = \"\"\n\n# include various source .cpp files and header .h files in the build process\n# (student's source code can be put into project root, or src/ subfolder)\nSOURCES *= $$files($$PWD/lib/StanfordCPPLib/*.cpp, true)\nSOURCES *= $$files($$PWD/src/*.cpp, true)\nexists($$PWD/$$PROJECT_FILTER*.cpp) {\n    SOURCES *= $$files($$PWD/$$PROJECT_FILTER*.cpp)\n}\n\nexists($$PWD/lib/StanfordCPPLib/*.h) {\n    HEADERS *= $$files($$PWD/lib/StanfordCPPLib/*.h)\n}\nHEADERS *= $$files($$PWD/lib/StanfordCPPLib/*.h, true)\nHEADERS *= $$files($$PWD/src/*.h, true)\nexists($$PWD/$$PROJECT_FILTER*.h) {\n    HEADERS *= $$files($$PWD/$$PROJECT_FILTER*.h)\n}\n\n# directories examined by Qt Creator when student writes an #include statement\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/collections/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/graphics/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/io/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/system/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/util/\nexists($$PWD/lib/StanfordCPPLib/autograder/*) {\n    INCLUDEPATH *= $$PWD/lib/StanfordCPPLib/autograder/\n}\nINCLUDEPATH *= $$PWD/src/\nINCLUDEPATH *= $$PWD/\nexists($$PWD/src/autograder/$$PROJECT_FILTER/*.h) {\n    INCLUDEPATH *= $$PWD/src/autograder/$$PROJECT_FILTER/\n}\nexists($$PWD/src/test/*.h) {\n    INCLUDEPATH *= $$PWD/src/test/\n}\n\n# directories listed as \"Other files\" in left Project pane of Qt Creator\nexists($$PWD/res/*) {\n    OTHER_FILES *= $$files($$PWD/res/*, true)\n}\nexists($$PWD/*.txt) {\n    OTHER_FILES *= $$files($$PWD/*.txt)\n}\nexists($$PWD/input/*) {\n    OTHER_FILES *= $$files($$PWD/input/*, true)\n}\nexists($$PWD/output/*) {\n    OTHER_FILES *= $$files($$PWD/output/*, true)\n}\n\n###############################################################################\n# END SECTION FOR SPECIFYING SOURCE/LIBRARY/RESOURCE FILES OF PROJECT         #\n###############################################################################\n\n\n###############################################################################\n# BEGIN SECTION FOR SPECIFYING COMPILER/LINKER FLAGS AND LIBRARIES            #\n###############################################################################\n\n# set up flags for the C++ compiler\n# (In general, many warnings/errors are enabled to tighten compile-time checking.\n# A few overly pedantic/confusing errors are turned off for simplicity.)\nCONFIG += no_include_pwd         # make sure we do not accidentally #include files placed in 'resources'\nCONFIG += sdk_no_version_check   # removes spurious warnings on Mac OS X\n# CONFIG += warn_off\n\n# gives us a bit more precision about which errors are printed\nQMAKE_CFLAGS_WARN_ON -= -Wall\nQMAKE_CFLAGS_WARN_ON -= -Wextra\nQMAKE_CFLAGS_WARN_ON -= -W\nQMAKE_CXXFLAGS_WARN_ON -= -Wall\nQMAKE_CXXFLAGS_WARN_ON -= -Wextra\nQMAKE_CXXFLAGS_WARN_ON -= -W\n\nwin32 {\n    # some Windows systems have old MinGW compilers, so be safe and use C++11\n    CONFIG += c++11\n} else {\n    # Mac/Linux should support the latest C++ features\n    CONFIG += c++14\n}\n\n# uncomment this if you want to dump the preprocessor output into the .o files\n# (useful when debugging advanced preprocessor hacking)\n# QMAKE_CXXFLAGS += -E\n\nQMAKE_CXXFLAGS += -Wall\n#QMAKE_CXXFLAGS += -Wextra\nQMAKE_CXXFLAGS += -Wcast-align\n#QMAKE_CXXFLAGS += -Wfloat-equal\nQMAKE_CXXFLAGS += -Wformat=2\nQMAKE_CXXFLAGS += -Wlogical-op\nQMAKE_CXXFLAGS += -Wno-missing-field-initializers\nQMAKE_CXXFLAGS += -Wno-old-style-cast\nQMAKE_CXXFLAGS += -Wno-sign-compare\nQMAKE_CXXFLAGS += -Wno-sign-conversion\nQMAKE_CXXFLAGS += -Wno-write-strings\nQMAKE_CXXFLAGS += -Wreturn-type\nQMAKE_CXXFLAGS += -Werror=return-type\nQMAKE_CXXFLAGS += -Werror=uninitialized\nQMAKE_CXXFLAGS += -Wunreachable-code\nQMAKE_CXXFLAGS += -Wunused-parameter\nexists($$PWD/lib/autograder/*.h) | exists($$PWD/lib/StanfordCPPLib/autograder/$$PROJECT_FILTER/*.h) | exists($$PWD/lib/autograder/$$PROJECT_FILTER/*.cpp) {\n    # omit some warnings/errors in autograder projects\n    # (largely because the Google Test framework violates them a ton of times)\n    QMAKE_CXXFLAGS += -Wno-deprecated\n    QMAKE_CXXFLAGS += -Wno-reorder\n    QMAKE_CXXFLAGS += -Wno-unused-function\n    QMAKE_CXXFLAGS += -Wno-useless-cast\n}\n\n# additional flags for Windows\nwin32 {\n    LIBS += -lDbghelp\n    LIBS += -lbfd\n    LIBS += -limagehlp\n    cache()\n} else {\n    # flags that don't work on Windows MinGW compiler\n    QMAKE_CXXFLAGS += -Wno-unused-const-variable\n    LIBS += -ldl\n}\n\n# additional flags for Mac OS X\nmacx {\n    # calling cache() reduces warnings on Mac OS X systems\n    cache()\n    QMAKE_MAC_SDK = macosx\n}\n\n# additional flags for Linux\nunix:!macx {\n    cache()\n}\n\n# libraries for all OSes\nLIBS += -lpthread\n\n# additional flags for clang compiler (default on Mac)\nCOMPILERNAME = $$QMAKE_CXX\nCOMPILERNAME ~= s|.*/|\nequals(COMPILERNAME, clang++) {\n    QMAKE_CXXFLAGS += -Wempty-init-stmt\n    QMAKE_CXXFLAGS += -Wignored-qualifiers\n    QMAKE_CXXFLAGS += -Winitializer-overrides\n    QMAKE_CXXFLAGS += -Wmissing-field-initializers\n    QMAKE_CXXFLAGS += -Wmissing-method-return-type\n    QMAKE_CXXFLAGS += -Wnull-pointer-arithmetic\n    QMAKE_CXXFLAGS += -Wsemicolon-before-method-body\n    QMAKE_CXXFLAGS += -Wno-format-nonliteral\n    QMAKE_CXXFLAGS += -Wno-inconsistent-missing-override\n    QMAKE_CXXFLAGS += -Wno-overloaded-virtual\n    QMAKE_CXXFLAGS += -Wno-unknown-warning-option\n}\n\n# set up configuration flags used internally by the Stanford C++ libraries\n# These flags are all optional but can simplify project configuration.\n# (setting x/y to 999999 centers the window)\n# (see platform.cpp/h for descriptions of some of these flags)\n\n# wrapper name for 'main' function (needed so student can write 'int main'\n# but our library can grab the actual main function to initialize itself)\nDEFINES += SPL_REPLACE_MAIN_FUNCTION=1\nDEFINES += main=qMain\n\n# x/y location and w/h of the graphical console window; set to -1 to center\nDEFINES += SPL_CONSOLE_X=-1\nDEFINES += SPL_CONSOLE_Y=-1\nDEFINES += SPL_CONSOLE_WIDTH=900\nDEFINES += SPL_CONSOLE_HEIGHT=550\n\n# font size of the font in the graphical console window; can also be set via window menu\n#DEFINES += SPL_CONSOLE_FONTSIZE=18\n\n# echo graphical console onto the plain text console as well?\nDEFINES += SPL_CONSOLE_ECHO\n\n# quit the C++ program when the graphical console is closed?\nDEFINES += SPL_CONSOLE_EXIT_ON_CLOSE\n\n# crash if the .pro is older than the minimum specified in version.h? (SPL_PROJECT_VERSION)\nDEFINES += SPL_VERIFY_PROJECT_VERSION\n\n# allow clients to access the internal data inside the heap of PriorityQueue?\n# (used for some practice exam exercises/demos)\nDEFINES += SPL_PQUEUE_ALLOW_HEAP_ACCESS\n\n# should toString / << of a PriorityQueue display the elements in sorted order,\n# or in heap internal order? the former is more expected by client; the latter\n# is faster and avoids a deep-copy\nDEFINES += SPL_PQUEUE_PRINT_IN_HEAP_ORDER\n\n# flag to throw exceptions when a collection iterator is used after it has\n# been invalidated (e.g. if you remove from a Map while iterating over it)\nDEFINES += SPL_THROW_ON_INVALID_ITERATOR\n\n# flag to add members like 'cost', 'visited', etc. to BasicGraph Vertex/Edge\n# (we are going to disable these to force more interesting implementations)\n# DEFINES += SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n\n# should we throw an error() when operator >> fails on a collection?\n# for years this was true, but the C++ standard says you should just silently\n# set the fail bit on the stream and exit, so that has been made the default.\n# DEFINES += SPL_ERROR_ON_STREAM_EXTRACT\n\n# scale up the console window on high-DPI screens?\n# DEFINES += SPL_SCALE_HIGH_DPI_SCREEN\n\n# is the .cpp portion of the library merged into a single .cpp file\n# to speed up compilation?\nDEFINES += SPL_MERGED_LIBRARY_SINGLE_FILE\n\n# should we attempt to precompile the Qt moc_*.cpp files for speed?\nDEFINES += SPL_PRECOMPILE_QT_MOC_FILES\n\n# build-specific options (debug vs release)\n\n# options for the 'debug' target (default):\n# use no optimization, generate debugger symbols,\n# and catch/print to console any uncaught exceptions thrown by the program\nCONFIG(debug, debug|release) {\n    QMAKE_CXXFLAGS += -g3\n    QMAKE_CXXFLAGS += -fno-inline\n    QMAKE_CXXFLAGS += -fno-omit-frame-pointer\n\n    unix:!macx {\n        equals(COMPILERNAME, g++) {\n            # on Linux g++, these flags help us gather line numbers for stack traces\n            QMAKE_CXXFLAGS += -rdynamic\n            QMAKE_CXXFLAGS += -export-dynamic\n            QMAKE_CXXFLAGS += -Wl,--export-dynamic\n            QMAKE_LFLAGS += -export-dynamic\n            QMAKE_LFLAGS += -rdynamic\n        }\n    }\n    unix:macx {\n        equals(COMPILERNAME, clang++) {\n            QMAKE_CXXFLAGS += -Wno-unused-command-line-argument\n            QMAKE_CXXFLAGS += -Wl,-export_dynamic\n            QMAKE_CXXFLAGS += -Wl,-export-dynamic\n            QMAKE_CXXFLAGS += -Wl,--export-dynamic\n            QMAKE_LFLAGS += -rdynamic\n            QMAKE_LFLAGS += -Wl,-no_pie\n        }\n    }\n\n    # print details about uncaught exceptions with red error text / stack trace\n    DEFINES += SPL_CONSOLE_PRINT_EXCEPTIONS\n}\n\n# options for the 'release' target:\n# enable some compiler optimizations, and\n# make it statically linked so it is a stand-alone executable\nCONFIG(release, debug|release) {\n    QMAKE_CXXFLAGS += -O2\n    # commenting out -static because it doesn't link to Qt libraries properly\n    #QMAKE_LFLAGS += -static\n\n    macx {\n        QMAKE_POST_LINK += 'macdeployqt $${OUT_PWD}/$${TARGET}.app'\n    }\n    unix:!macx {\n        QMAKE_LFLAGS += -static-libgcc\n        QMAKE_LFLAGS += -static-libstdc++\n    }\n    win32 {\n        TARGET_PATH = $${OUT_PWD}/release/$${TARGET}.exe\n        TARGET_PATH ~= s,/,\\\\,g\n\n        OUT_PATH = $${OUT_PWD}/\n        OUT_PATH ~= s,/,\\\\,g\n\n        QMAKE_LFLAGS += -static-libgcc\n        QMAKE_LFLAGS += -static-libstdc++\n        QMAKE_POST_LINK += copy '\"'$${TARGET_PATH}'\"' '\"'$${OUT_PATH}'\"'\n    }\n}\n\n###############################################################################\n# END SECTION FOR SPECIFYING COMPILER/LINKER FLAGS AND LIBRARIES              #\n###############################################################################\n\n\n###############################################################################\n# BEGIN SECTION FOR CS 106B/X AUTOGRADER PROGRAMS                             #\n###############################################################################\n\n# settings specific to CS 106 B/X auto-grading programs; do not modify\nexists($$PWD/lib/autograder/*.h) | exists($$PWD/lib/StanfordCPPLib/autograder/*.h) | exists($$PWD/src/autograder/$$PROJECT_FILTER/*.cpp) {\n    # include the various autograder source code and libraries in the build process\n    exists($$PWD/lib/autograder/*.cpp) {\n        SOURCES *= $$files($$PWD/lib/autograder/*.cpp, true)\n    }\n    exists($$PWD/lib/autograder/*.h) {\n        HEADERS *= $$files($$PWD/lib/autograder/*.h, true)\n    }\n    exists($$PWD/lib/autograder/*) {\n        INCLUDEPATH *= $$PWD/lib/autograder/\n    }\n    exists($$PWD/lib/StanfordCPPLib/autograder/*) {\n        INCLUDEPATH *= $$PWD/lib/StanfordCPPLib/autograder/\n    }\n    exists($$PWD/src/autograder/*.h) {\n        INCLUDEPATH *= $$PWD/src/autograder/\n    }\n    exists($$PWD/src/autograder/$$PROJECT_FILTER/*.h) {\n        INCLUDEPATH *= $$PWD/src/autograder/$$PROJECT_FILTER/\n    }\n\n    DEFINES += SPL_AUTOGRADER_MODE\n\n    # define the style of autograder you want to use (GUI vs console)\n    DEFINES += SPL_GRAPHICAL_AUTOGRADER\n    # DEFINES += SPL_CONSOLE_AUTOGRADER\n\n    # a check to ensure that required autograder resources are present in this project\n    !exists($$PWD/lib/iconstrip-autograder.png) {\n        message(\"\")\n        message(*******************************************************************)\n        message(*** ERROR: Stanford library cannot find autograder image strip file:)\n        message(*** lib/iconstrip-autograder.png)\n        message(*** This project cannot run without this file present.)\n        message(*** Place the file into your lib/ folder and try again.)\n        message(*******************************************************************)\n        message(\"\")\n        error(Exiting.)\n    }\n}\n###############################################################################\n# END SECTION FOR CS 106B/X AUTOGRADER PROGRAMS                               #\n###############################################################################\n\n\n###############################################################################\n# BEGIN SECTION FOR DEFINING HELPER FUNCTIONS FOR RESOURCE COPYING            #\n###############################################################################\n\nCOPY_RESOURCE_FILES_INPUT = \"\"\n\nwin32 {\n    # copy addr2line exe program(s) to capture stack traces on Windows\n    exists($$PWD/lib/*.exe) {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/lib/*.exe)\n    }\n    # optional .dll files for network features on Windows\n    exists($$PWD/lib/*.dll) {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/lib/*.dll)\n    }\n}\n# copy icons and image strips for library GUI/console windows\nexists($$PWD/lib/*.png) {\n    COPY_RESOURCE_FILES_INPUT += $$files($$PWD/lib/*.png)\n}\nexists($$PWD/*.txt) {\n    COPY_RESOURCE_FILES_INPUT += $$files($$PWD/*.txt)\n}\nexists($$PWD/res/*) {\n    win32 {\n        exists($$PWD/res/*/*) {\n            # this will preserve the nested res/ directory structure on Windows,\n            # at the unfortunate cost of copying res/ to build dir on every run;\n            # recommended: avoid res subfolders to avoid this penalty on Windows\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/res)\n        } else {\n            # res/ with no subdirectories will properly be copied only on modification\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/res/*.*)\n        }\n    } else {\n        # Mac/Linux have proper recursive file-copying semantics in all cases\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/res/*, true)\n    }\n}\n# input/ and output/ have same nested subfolder issue as res/\nexists($$PWD/input/*) {\n    win32 {\n        exists($$PWD/input/*/*) {\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/input)\n        } else {\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/input/*.*)\n        }\n    } else {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/input, true)\n    }\n}\nexists($$PWD/output/*) {\n    win32 {\n        exists($$PWD/output/*/*) {\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/output)\n        } else {\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/output/*.*)\n        }\n    } else {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/output, true)\n    }\n}\nexists($$PWD/lib/autograder/*.h) | exists($$PWD/lib/StanfordCPPLib/autograder/*.h) | exists($$PWD/src/autograder/$$PROJECT_FILTER/*.cpp) {\n    # in autograder projects, copy over student's .cpp and .h files for possible style checking\n    exists($$PWD/*.cpp) {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/*.cpp)\n    }\n    exists($$PWD/*.h) {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/*.h)\n    }\n}\n\n# platform-specific commands to copy files and folders to build directory\ncopy_resource_files.name = Copy resource files to the build directory\nwin32 {\n    # https://support.microsoft.com/en-us/help/289483/switches-that-you-can-use-with-xcopy-and-xcopy32-commands\n    # /s - copy subfolders\n    # /q - quiet (no verbose output)\n    # /y - overwrite without prompting\n    # /i - if destination does not exist and copying more than one file, assumes destination is a folder\n    copy_resource_files.commands = xcopy /s /q /y ${QMAKE_FILE_IN}\n} else {\n    copy_resource_files.commands = cp -rf ${QMAKE_FILE_IN} .\n}\n# copy_resource_files.commands = ${COPY_FILE} ${QMAKE_FILE_IN} ${QMAKE_FILE_OUT}\ncopy_resource_files.input = COPY_RESOURCE_FILES_INPUT\ncopy_resource_files.output = $${OUT_PWD}/${QMAKE_FILE_BASE}${QMAKE_FILE_EXT}\ncopy_resource_files.CONFIG = no_link no_clean target_predeps\nQMAKE_EXTRA_COMPILERS += copy_resource_files\n\n###############################################################################\n# END SECTION FOR DEFINING HELPER FUNCTIONS FOR RESOURCE COPYING              #\n###############################################################################\n\n# END OF FILE (this should be line #560; if not, your .pro has been changed!)\n"
  },
  {
    "path": "Archived/cppdoc/dist/sample-project.pro",
    "content": "#####################################################################\n## Stanford CS 106 B/X Qt Creator project file                     ##\n#####################################################################\n#\n# This file specifies the information about your project to Qt Creator.\n# You should not need to modify this file to complete your assignment.\n#\n# @author Marty Stepp (past authors/support by Keith Schwarz, Reid Watson, etc.)\n# @version 2019/04/23\n# - revert copydata code for copying resource files\nDEFINES += SPL_PROJECT_VERSION=20190423   # kludgy YYYYMMDD constant used by lib to know its version\n\n# global Qt/project settings\nTEMPLATE = app\nPROJECT_FILTER =\nQT       += core gui multimedia network\ngreaterThan(QT_MAJOR_VERSION, 4): QT += widgets\n\n###############################################################################\n# BEGIN SECTION FOR SPECIFYING SOURCE/LIBRARY/RESOURCE FILES OF PROJECT       #\n###############################################################################\n\n# remove spaces from target executable for better Windows compatibility\nTARGET = $$replace(TARGET, \" \", _)\n\n# checks to make sure we haven't accidentally opened the project\n# from within a ZIP archive (common mistake on Windows)\n\nwin32 {\n    contains(PWD, .*\\.zip.*) | contains(PWD, .*\\.ZIP.*) {\n        message(\"\")\n        message(*******************************************************************)\n        message(*** ERROR: You are trying to open this project from within a .ZIP archive:)\n        message(*** $$PWD)\n        message(*** You need to extract the files out of the ZIP file first.)\n        message(*** Open the ZIP in your file explorer and press the Extract button.)\n        message(*******************************************************************)\n        message(\"\")\n        error(Exiting.)\n    }\n}\n\n# check for intl chars in path (common issue for intl students)\nPWD_WITHOUT_BAD_CHARS = $$PWD\nPWD_WITHOUT_BAD_CHARS ~= s|[^a-zA-Z0-9_ ().\\/:;+-]+|???\nBAD_CHARS = $$PWD\nBAD_CHARS ~= s|[a-zA-Z0-9_ ().\\/:;-]+|\n!isEmpty(BAD_CHARS) {\n    message(\"\")\n    message(*******************************************************************)\n    message(*** ERROR: Your project directory contains invalid characters:)\n    message(*** $$PWD)\n    message(***)\n    message(*** The characters that are invalid are: $$BAD_CHARS)\n    message(***)\n    message(*** You need to store your project in a directory without any punctuation)\n    message(*** marks such as commas, or international symbols such as)\n    message(*** Chinese or Korean symbols.)\n    message(*** If you keep seeing this error try creating a simple directory)\n    message(*** name such as \"C:\\Programs\\Homework1.\")\n    message(*******************************************************************)\n    message(\"\")\n    error(Exiting.)\n}\n\n# checks to ensure that the Stanford C++ library is present in this project\n!exists($$PWD/lib/StanfordCPPLib/private/version.h) {\n    message(\"\")\n    message(*******************************************************************)\n    message(*** ERROR: Stanford C++ library not found!)\n    message(*** This project cannot run without the folder lib/StanfordCPPLib/.)\n    message(*** Place that folder into your project and try again.)\n    message(*******************************************************************)\n    message(\"\")\n    error(Exiting.)\n}\n\nwin64 {\n    !exists($$PWD/lib/addr2line64.exe) {\n        message(\"\")\n        message(*******************************************************************)\n        message(*** ERROR: Stanford C++ library support file 'addr2line64.exe' not found!)\n        message(*** Our library needs this file present to produce stack traces.)\n        message(*** Place that file into your lib/ folder and try again.)\n        message(*******************************************************************)\n        message(\"\")\n        warning(Exiting.)\n    }\n}\n\nwin32 {\n    !exists($$PWD/lib/addr2line.exe) {\n        message(\"\")\n        message(*******************************************************************)\n        message(*** ERROR: Stanford C++ library support file 'addr2line.exe' not found!)\n        message(*** Our library needs this file present to produce stack traces.)\n        message(*** Place that file into your lib/ folder and try again.)\n        message(*******************************************************************)\n        message(\"\")\n        warning(Exiting.)\n    }\n}\n\n!exists($$PWD/lib/iconstrip.png) {\n    message(\"\")\n    message(*******************************************************************)\n    message(*** ERROR: Stanford library cannot find image strip file:)\n    message(*** lib/iconstrip.png)\n    message(*** This project cannot run without this file present.)\n    message(*** Place the file into your lib/ folder and try again.)\n    message(*******************************************************************)\n    message(\"\")\n    warning(Exiting.)\n}\n\n# precompiled header speeds up build times\n!win32 {\nPRECOMPILED_HEADER = $$files($$PWD/lib/StanfordCPPLib/private/precompiled.h)\n}\n\n# honeypot to trick Qt Creator so that adding files works from within IDE;\n# Qt looks for first 'SOURCES *=' line and adds newly added .cpp/h files there.\n# But then that causes the files to be added twice because of *.cpp/h rules below.\n# To get around this, we follow the first 'SOURCES *=' line by a line that clears\n# out SOURCES, so that the Qt Creator .pro modification is ineffectual.\nDISTFILES *= \"\"\nDISTFILES = \"\"\nHEADERS *= \"\"\nHEADERS = \"\"\nSOURCES *= \"\"\nSOURCES = \"\"\n\n# include various source .cpp files and header .h files in the build process\n# (student's source code can be put into project root, or src/ subfolder)\nSOURCES *= $$files($$PWD/lib/StanfordCPPLib/*.cpp, true)\nSOURCES *= $$files($$PWD/src/*.cpp, true)\nexists($$PWD/$$PROJECT_FILTER*.cpp) {\n    SOURCES *= $$files($$PWD/$$PROJECT_FILTER*.cpp)\n}\n\nexists($$PWD/lib/StanfordCPPLib/*.h) {\n    HEADERS *= $$files($$PWD/lib/StanfordCPPLib/*.h)\n}\nHEADERS *= $$files($$PWD/lib/StanfordCPPLib/*.h, true)\nHEADERS *= $$files($$PWD/src/*.h, true)\nexists($$PWD/$$PROJECT_FILTER*.h) {\n    HEADERS *= $$files($$PWD/$$PROJECT_FILTER*.h)\n}\n\n# directories examined by Qt Creator when student writes an #include statement\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/collections/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/graphics/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/io/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/system/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/util/\nexists($$PWD/lib/StanfordCPPLib/autograder/*) {\n    INCLUDEPATH *= $$PWD/lib/StanfordCPPLib/autograder/\n}\nINCLUDEPATH *= $$PWD/src/\nINCLUDEPATH *= $$PWD/\nexists($$PWD/src/autograder/$$PROJECT_FILTER/*.h) {\n    INCLUDEPATH *= $$PWD/src/autograder/$$PROJECT_FILTER/\n}\nexists($$PWD/src/test/*.h) {\n    INCLUDEPATH *= $$PWD/src/test/\n}\n\n# directories listed as \"Other files\" in left Project pane of Qt Creator\nexists($$PWD/res/*) {\n    OTHER_FILES *= $$files($$PWD/res/*, true)\n}\nexists($$PWD/*.txt) {\n    OTHER_FILES *= $$files($$PWD/*.txt)\n}\nexists($$PWD/input/*) {\n    OTHER_FILES *= $$files($$PWD/input/*, true)\n}\nexists($$PWD/output/*) {\n    OTHER_FILES *= $$files($$PWD/output/*, true)\n}\n\n###############################################################################\n# END SECTION FOR SPECIFYING SOURCE/LIBRARY/RESOURCE FILES OF PROJECT         #\n###############################################################################\n\n\n###############################################################################\n# BEGIN SECTION FOR SPECIFYING COMPILER/LINKER FLAGS AND LIBRARIES            #\n###############################################################################\n\n# set up flags for the C++ compiler\n# (In general, many warnings/errors are enabled to tighten compile-time checking.\n# A few overly pedantic/confusing errors are turned off for simplicity.)\nCONFIG += no_include_pwd         # make sure we do not accidentally #include files placed in 'resources'\nCONFIG += sdk_no_version_check   # removes spurious warnings on Mac OS X\n# CONFIG += warn_off\n\n# gives us a bit more precision about which errors are printed\nQMAKE_CFLAGS_WARN_ON -= -Wall\nQMAKE_CFLAGS_WARN_ON -= -Wextra\nQMAKE_CFLAGS_WARN_ON -= -W\nQMAKE_CXXFLAGS_WARN_ON -= -Wall\nQMAKE_CXXFLAGS_WARN_ON -= -Wextra\nQMAKE_CXXFLAGS_WARN_ON -= -W\n\nwin32 {\n    # some Windows systems have old MinGW compilers, so be safe and use C++11\n    CONFIG += c++11\n} else {\n    # Mac/Linux should support the latest C++ features\n    CONFIG += c++14\n}\n\n# uncomment this if you want to dump the preprocessor output into the .o files\n# (useful when debugging advanced preprocessor hacking)\n# QMAKE_CXXFLAGS += -E\n\nQMAKE_CXXFLAGS += -Wall\n#QMAKE_CXXFLAGS += -Wextra\nQMAKE_CXXFLAGS += -Wcast-align\n#QMAKE_CXXFLAGS += -Wfloat-equal\nQMAKE_CXXFLAGS += -Wformat=2\nQMAKE_CXXFLAGS += -Wlogical-op\nQMAKE_CXXFLAGS += -Wno-missing-field-initializers\nQMAKE_CXXFLAGS += -Wno-old-style-cast\nQMAKE_CXXFLAGS += -Wno-sign-compare\nQMAKE_CXXFLAGS += -Wno-sign-conversion\nQMAKE_CXXFLAGS += -Wno-write-strings\nQMAKE_CXXFLAGS += -Wreturn-type\nQMAKE_CXXFLAGS += -Werror=return-type\nQMAKE_CXXFLAGS += -Werror=uninitialized\nQMAKE_CXXFLAGS += -Wunreachable-code\nQMAKE_CXXFLAGS += -Wunused-parameter\nexists($$PWD/lib/autograder/*.h) | exists($$PWD/lib/StanfordCPPLib/autograder/$$PROJECT_FILTER/*.h) | exists($$PWD/lib/autograder/$$PROJECT_FILTER/*.cpp) {\n    # omit some warnings/errors in autograder projects\n    # (largely because the Google Test framework violates them a ton of times)\n    QMAKE_CXXFLAGS += -Wno-deprecated\n    QMAKE_CXXFLAGS += -Wno-reorder\n    QMAKE_CXXFLAGS += -Wno-unused-function\n    QMAKE_CXXFLAGS += -Wno-useless-cast\n}\n\n# additional flags for Windows\nwin32 {\n    LIBS += -lDbghelp\n    LIBS += -lbfd\n    LIBS += -limagehlp\n    cache()\n} else {\n    # flags that don't work on Windows MinGW compiler\n    QMAKE_CXXFLAGS += -Wno-unused-const-variable\n    LIBS += -ldl\n}\n\n# additional flags for Mac OS X\nmacx {\n    # calling cache() reduces warnings on Mac OS X systems\n    cache()\n    QMAKE_MAC_SDK = macosx\n}\n\n# additional flags for Linux\nunix:!macx {\n    cache()\n}\n\n# libraries for all OSes\nLIBS += -lpthread\n\n# additional flags for clang compiler (default on Mac)\nCOMPILERNAME = $$QMAKE_CXX\nCOMPILERNAME ~= s|.*/|\nequals(COMPILERNAME, clang++) {\n    QMAKE_CXXFLAGS += -Wempty-init-stmt\n    QMAKE_CXXFLAGS += -Wignored-qualifiers\n    QMAKE_CXXFLAGS += -Winitializer-overrides\n    QMAKE_CXXFLAGS += -Wmissing-field-initializers\n    QMAKE_CXXFLAGS += -Wmissing-method-return-type\n    QMAKE_CXXFLAGS += -Wnull-pointer-arithmetic\n    QMAKE_CXXFLAGS += -Wsemicolon-before-method-body\n    QMAKE_CXXFLAGS += -Wno-format-nonliteral\n    QMAKE_CXXFLAGS += -Wno-inconsistent-missing-override\n    QMAKE_CXXFLAGS += -Wno-overloaded-virtual\n    QMAKE_CXXFLAGS += -Wno-unknown-warning-option\n}\n\n# set up configuration flags used internally by the Stanford C++ libraries\n# These flags are all optional but can simplify project configuration.\n# (setting x/y to 999999 centers the window)\n# (see platform.cpp/h for descriptions of some of these flags)\n\n# wrapper name for 'main' function (needed so student can write 'int main'\n# but our library can grab the actual main function to initialize itself)\nDEFINES += SPL_REPLACE_MAIN_FUNCTION=1\nDEFINES += main=qMain\n\n# x/y location and w/h of the graphical console window; set to -1 to center\nDEFINES += SPL_CONSOLE_X=-1\nDEFINES += SPL_CONSOLE_Y=-1\nDEFINES += SPL_CONSOLE_WIDTH=900\nDEFINES += SPL_CONSOLE_HEIGHT=550\n\n# font size of the font in the graphical console window; can also be set via window menu\n#DEFINES += SPL_CONSOLE_FONTSIZE=18\n\n# echo graphical console onto the plain text console as well?\nDEFINES += SPL_CONSOLE_ECHO\n\n# quit the C++ program when the graphical console is closed?\nDEFINES += SPL_CONSOLE_EXIT_ON_CLOSE\n\n# crash if the .pro is older than the minimum specified in version.h? (SPL_PROJECT_VERSION)\nDEFINES += SPL_VERIFY_PROJECT_VERSION\n\n# allow clients to access the internal data inside the heap of PriorityQueue?\n# (used for some practice exam exercises/demos)\nDEFINES += SPL_PQUEUE_ALLOW_HEAP_ACCESS\n\n# should toString / << of a PriorityQueue display the elements in sorted order,\n# or in heap internal order? the former is more expected by client; the latter\n# is faster and avoids a deep-copy\nDEFINES += SPL_PQUEUE_PRINT_IN_HEAP_ORDER\n\n# flag to throw exceptions when a collection iterator is used after it has\n# been invalidated (e.g. if you remove from a Map while iterating over it)\nDEFINES += SPL_THROW_ON_INVALID_ITERATOR\n\n# flag to add members like 'cost', 'visited', etc. to BasicGraph Vertex/Edge\n# (we are going to disable these to force more interesting implementations)\n# DEFINES += SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n\n# should we throw an error() when operator >> fails on a collection?\n# for years this was true, but the C++ standard says you should just silently\n# set the fail bit on the stream and exit, so that has been made the default.\n# DEFINES += SPL_ERROR_ON_STREAM_EXTRACT\n\n# scale up the console window on high-DPI screens?\n# DEFINES += SPL_SCALE_HIGH_DPI_SCREEN\n\n# is the .cpp portion of the library merged into a single .cpp file\n# to speed up compilation?\nDEFINES += SPL_MERGED_LIBRARY_SINGLE_FILE\n\n# should we attempt to precompile the Qt moc_*.cpp files for speed?\nDEFINES += SPL_PRECOMPILE_QT_MOC_FILES\n\n# build-specific options (debug vs release)\n\n# options for the 'debug' target (default):\n# use no optimization, generate debugger symbols,\n# and catch/print to console any uncaught exceptions thrown by the program\nCONFIG(debug, debug|release) {\n    QMAKE_CXXFLAGS += -g3\n    QMAKE_CXXFLAGS += -fno-inline\n    QMAKE_CXXFLAGS += -fno-omit-frame-pointer\n\n    unix:!macx {\n        equals(COMPILERNAME, g++) {\n            # on Linux g++, these flags help us gather line numbers for stack traces\n            QMAKE_CXXFLAGS += -rdynamic\n            QMAKE_CXXFLAGS += -export-dynamic\n            QMAKE_CXXFLAGS += -Wl,--export-dynamic\n            QMAKE_LFLAGS += -export-dynamic\n            QMAKE_LFLAGS += -rdynamic\n        }\n    }\n    unix:macx {\n        equals(COMPILERNAME, clang++) {\n            QMAKE_CXXFLAGS += -Wno-unused-command-line-argument\n            QMAKE_CXXFLAGS += -Wl,-export_dynamic\n            QMAKE_CXXFLAGS += -Wl,-export-dynamic\n            QMAKE_CXXFLAGS += -Wl,--export-dynamic\n            QMAKE_LFLAGS += -rdynamic\n            QMAKE_LFLAGS += -Wl,-no_pie\n        }\n    }\n\n    # print details about uncaught exceptions with red error text / stack trace\n    DEFINES += SPL_CONSOLE_PRINT_EXCEPTIONS\n}\n\n# options for the 'release' target:\n# enable some compiler optimizations, and\n# make it statically linked so it is a stand-alone executable\nCONFIG(release, debug|release) {\n    QMAKE_CXXFLAGS += -O2\n    # commenting out -static because it doesn't link to Qt libraries properly\n    #QMAKE_LFLAGS += -static\n\n    macx {\n        QMAKE_POST_LINK += 'macdeployqt $${OUT_PWD}/$${TARGET}.app'\n    }\n    unix:!macx {\n        QMAKE_LFLAGS += -static-libgcc\n        QMAKE_LFLAGS += -static-libstdc++\n    }\n    win32 {\n        TARGET_PATH = $${OUT_PWD}/release/$${TARGET}.exe\n        TARGET_PATH ~= s,/,\\\\,g\n\n        OUT_PATH = $${OUT_PWD}/\n        OUT_PATH ~= s,/,\\\\,g\n\n        QMAKE_LFLAGS += -static-libgcc\n        QMAKE_LFLAGS += -static-libstdc++\n        QMAKE_POST_LINK += copy '\"'$${TARGET_PATH}'\"' '\"'$${OUT_PATH}'\"'\n    }\n}\n\n###############################################################################\n# END SECTION FOR SPECIFYING COMPILER/LINKER FLAGS AND LIBRARIES              #\n###############################################################################\n\n\n###############################################################################\n# BEGIN SECTION FOR CS 106B/X AUTOGRADER PROGRAMS                             #\n###############################################################################\n\n# settings specific to CS 106 B/X auto-grading programs; do not modify\nexists($$PWD/lib/autograder/*.h) | exists($$PWD/lib/StanfordCPPLib/autograder/*.h) | exists($$PWD/src/autograder/$$PROJECT_FILTER/*.cpp) {\n    # include the various autograder source code and libraries in the build process\n    exists($$PWD/lib/autograder/*.cpp) {\n        SOURCES *= $$files($$PWD/lib/autograder/*.cpp, true)\n    }\n    exists($$PWD/lib/autograder/*.h) {\n        HEADERS *= $$files($$PWD/lib/autograder/*.h, true)\n    }\n    exists($$PWD/lib/autograder/*) {\n        INCLUDEPATH *= $$PWD/lib/autograder/\n    }\n    exists($$PWD/lib/StanfordCPPLib/autograder/*) {\n        INCLUDEPATH *= $$PWD/lib/StanfordCPPLib/autograder/\n    }\n    exists($$PWD/src/autograder/*.h) {\n        INCLUDEPATH *= $$PWD/src/autograder/\n    }\n    exists($$PWD/src/autograder/$$PROJECT_FILTER/*.h) {\n        INCLUDEPATH *= $$PWD/src/autograder/$$PROJECT_FILTER/\n    }\n\n    DEFINES += SPL_AUTOGRADER_MODE\n\n    # define the style of autograder you want to use (GUI vs console)\n    DEFINES += SPL_GRAPHICAL_AUTOGRADER\n    # DEFINES += SPL_CONSOLE_AUTOGRADER\n\n    # a check to ensure that required autograder resources are present in this project\n    !exists($$PWD/lib/iconstrip-autograder.png) {\n        message(\"\")\n        message(*******************************************************************)\n        message(*** ERROR: Stanford library cannot find autograder image strip file:)\n        message(*** lib/iconstrip-autograder.png)\n        message(*** This project cannot run without this file present.)\n        message(*** Place the file into your lib/ folder and try again.)\n        message(*******************************************************************)\n        message(\"\")\n        error(Exiting.)\n    }\n}\n###############################################################################\n# END SECTION FOR CS 106B/X AUTOGRADER PROGRAMS                               #\n###############################################################################\n\n\n###############################################################################\n# BEGIN SECTION FOR DEFINING HELPER FUNCTIONS FOR RESOURCE COPYING            #\n###############################################################################\n\nCOPY_RESOURCE_FILES_INPUT = \"\"\n\nwin32 {\n    # copy addr2line exe program(s) to capture stack traces on Windows\n    exists($$PWD/lib/*.exe) {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/lib/*.exe)\n    }\n    # optional .dll files for network features on Windows\n    exists($$PWD/lib/*.dll) {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/lib/*.dll)\n    }\n}\n# copy icons and image strips for library GUI/console windows\nexists($$PWD/lib/*.png) {\n    COPY_RESOURCE_FILES_INPUT += $$files($$PWD/lib/*.png)\n}\nexists($$PWD/*.txt) {\n    COPY_RESOURCE_FILES_INPUT += $$files($$PWD/*.txt)\n}\nexists($$PWD/res/*) {\n    win32 {\n        exists($$PWD/res/*/*) {\n            # this will preserve the nested res/ directory structure on Windows,\n            # at the unfortunate cost of copying res/ to build dir on every run;\n            # recommended: avoid res subfolders to avoid this penalty on Windows\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/res)\n        } else {\n            # res/ with no subdirectories will properly be copied only on modification\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/res/*.*)\n        }\n    } else {\n        # Mac/Linux have proper recursive file-copying semantics in all cases\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/res/*, true)\n    }\n}\n# input/ and output/ have same nested subfolder issue as res/\nexists($$PWD/input/*) {\n    win32 {\n        exists($$PWD/input/*/*) {\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/input)\n        } else {\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/input/*.*)\n        }\n    } else {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/input, true)\n    }\n}\nexists($$PWD/output/*) {\n    win32 {\n        exists($$PWD/output/*/*) {\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/output)\n        } else {\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/output/*.*)\n        }\n    } else {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/output, true)\n    }\n}\nexists($$PWD/lib/autograder/*.h) | exists($$PWD/lib/StanfordCPPLib/autograder/*.h) | exists($$PWD/src/autograder/$$PROJECT_FILTER/*.cpp) {\n    # in autograder projects, copy over student's .cpp and .h files for possible style checking\n    exists($$PWD/*.cpp) {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/*.cpp)\n    }\n    exists($$PWD/*.h) {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/*.h)\n    }\n}\n\n# platform-specific commands to copy files and folders to build directory\ncopy_resource_files.name = Copy resource files to the build directory\nwin32 {\n    # https://support.microsoft.com/en-us/help/289483/switches-that-you-can-use-with-xcopy-and-xcopy32-commands\n    # /s - copy subfolders\n    # /q - quiet (no verbose output)\n    # /y - overwrite without prompting\n    # /i - if destination does not exist and copying more than one file, assumes destination is a folder\n    copy_resource_files.commands = xcopy /s /q /y ${QMAKE_FILE_IN}\n} else {\n    copy_resource_files.commands = cp -rf ${QMAKE_FILE_IN} .\n}\n# copy_resource_files.commands = ${COPY_FILE} ${QMAKE_FILE_IN} ${QMAKE_FILE_OUT}\ncopy_resource_files.input = COPY_RESOURCE_FILES_INPUT\ncopy_resource_files.output = $${OUT_PWD}/${QMAKE_FILE_BASE}${QMAKE_FILE_EXT}\ncopy_resource_files.CONFIG = no_link no_clean target_predeps\nQMAKE_EXTRA_COMPILERS += copy_resource_files\n\n###############################################################################\n# END SECTION FOR DEFINING HELPER FUNCTIONS FOR RESOURCE COPYING              #\n###############################################################################\n\n# END OF FILE (this should be line #560; if not, your .pro has been changed!)\n"
  },
  {
    "path": "Archived/cppdoc/error.html",
    "content": "<html>\n<head>\n<title>error.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>error.h</code></h1>\nThis file defines the <code>ErrorException</code> class and the\n<code>error</code> function.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Class</td></tr>\n<tr><td class=indexKey><nobr><a href=\"ErrorException-class.html\">ErrorException</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This exception is thrown by calls to the <code>error</code> function.</td></tr>\n<tr><td class=indexHead colspan=2>Function</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:error\">error(<var>msg</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Signals an error condition in a program by throwing an <code>ErrorException</code> with the specified message.</td></tr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:error\"></a>\n<pre class=detailCode>\nvoid error(string msg);\n</pre>\n<div class=detailHTML>\nSignals an error condition in a program by throwing an\n<code>ErrorException</code> with the specified message.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nerror(msg);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/filelib.html",
    "content": "<html>\n<head>\n<title>filelib.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>filelib.h</code></h1>\nThis file exports a standardized set of tools for working with\nfiles.  The library offers at least some portability across the\nfile systems used in the three supported platforms: Mac OSX,\nWindows, and Linux.  Directory and search paths are allowed to\ncontain separators in any of the supported styles, which usually\nmakes it possible to use the same code on different platforms.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:createDirectory\">createDirectory(<var>path</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a new directory for the specified path.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:createDirectoryPath\">createDirectoryPath(<var>path</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a new directory for the specified path.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:defaultExtension\">defaultExtension(<var>filename</var>,&nbsp;<var>ext</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Adds an extension to a file name if none already exists.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:deleteFile\">deleteFile(<var>filename</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Deletes the specified file.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:expandPathname\">expandPathname(<var>filename</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Expands a filename into a canonical name for the platform.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:fileExists\">fileExists(<var>filename</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the specified file exists.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:findOnPath\">findOnPath(<var>path</var>,&nbsp;<var>filename</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the canonical name of a file found using a search path.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getCurrentDirectory\">getCurrentDirectory()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns an absolute filename for the current directory.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getDirectoryPathSeparator\">getDirectoryPathSeparator()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the standard directory path separator used on this platform.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getExtension\">getExtension(<var>filename</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the extension of <code>filename</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getHead\">getHead(<var>filename</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns all but the last component of a path name.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getRoot\">getRoot(<var>filename</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the root of <code>filename</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getSearchPathSeparator\">getSearchPathSeparator()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the standard search path separator used on this platform.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getTail\">getTail(<var>filename</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the last component of a path name.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getTempDirectory\">getTempDirectory()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the operating system's temporary directory path as a string.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:isDirectory\">isDirectory(<var>filename</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the specified file is a directory.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:isFile\">isFile(<var>filename</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the specified file is a regular file.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:isSymbolicLink\">isSymbolicLink(<var>filename</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the specified file is a symbolic link.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:listDirectory\">listDirectory(<var>path</var>)</a><br/><a href=\"#Function:listDirectory\">listDirectory(<var>path</var>,&nbsp;<var>v</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns an alphabetized vector of the files in the specified directory, or adds them to the given existing vector <code>v</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:matchFilenamePattern\">matchFilenamePattern(<var>filename</var>,&nbsp;<var>pattern</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Determines whether the filename matches the specified pattern.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:openFile\">openFile(<var>stream</var>,&nbsp;<var>filename</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Opens the filestream <code>stream</code> using the specified filename.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:openFileDialog\">openFileDialog(<var>stream</var>)</a><br>\n<a href=\"#Function:openFileDialog\">openFileDialog(<var>stream</var>,&nbsp;<var>title</var>)</a><br>\n<a href=\"#Function:openFileDialog\">openFileDialog(<var>stream</var>,&nbsp;<var>title</var>,&nbsp;<var>path</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Opens a dialog that allows the user to choose the file.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:openOnPath\">openOnPath(<var>stream</var>,&nbsp;<var>path</var>,&nbsp;<var>filename</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Opens a file using a search path.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:promptUserForFile\">promptUserForFile(<var>stream</var>,&nbsp;<var>prompt</var>)</a>&nbsp;<br><a href=\"#Function:promptUserForFile\">promptUserForFile(<var>prompt</var>)</a></nobr></td><td class=indexSynopsis width=100%>Asks the user for the name of a file.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:readEntireFile\">readEntireFile(<var>is</var>,&nbsp;<var>v</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Reads the entire contents of the specified input stream into the string vector <code>lines</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:readEntireFile\">readEntireFile(<var>filename</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Reads the entire contents of the specified file and returns them as a <code>string</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:renameFile\">renameFile(<var>oldname</var>,&nbsp;<var>newname</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Renames a file.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:rewindStream\">rewindStream(<var>stream</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Moves an input stream back to its beginning so it can be read again.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setCurrentDirectory\">setCurrentDirectory(<var>filename</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Changes the current directory to the specified path.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:writeEntireFile\">writeEntireFile(<var>filename</var>,&nbsp;<var>text</var>,&nbsp;<var>append</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Writes the given text to the specified file.</td></tr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:openFile\"></a>\n<pre class=detailCode>\nbool openFile(ifstream&amp; stream, string filename);\nbool openFile(ofstream&amp; stream, string filename);\n</pre>\n<div class=detailHTML>\nOpens the filestream <code>stream</code> using the specified\nfilename.  This function is similar to the <code>open</code>\nmethod of the stream classes, but uses a C++ <code>string</code>\nobject instead of the older C-style string.  If the operation\nsucceeds, <code>openFile</code> returns <code>true</code>;\nif it fails, <code>openFile</code> sets the failure flag in the\nstream and returns <code>false</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (openFile(stream, filename)) ...\n</pre>\n<hr>\n<a name=\"Function:promptUserForFile\"></a>\n<pre class=detailCode>\nstring promptUserForFile(ifstream&amp; stream, string prompt = \"\", string reprompt = \"\");\nstring promptUserForFile(ofstream&amp; stream, string prompt = \"\", string reprompt = \"\");\nstring promptUserForFile(string prompt = \"\", string reprompt = \"\");\n</pre>\n<div class=detailHTML>\nAsks the user for the name of a file.  The file is opened using\nthe reference parameter <code>stream</code>, and the function\nreturns the name of the file.  If the requested file cannot be\nopened, the user is given additional chances to enter a valid file.\n\n\n<p>The optional <code>prompt</code> argument provides an input prompt\nfor the user.\n\n<p>The also optional <code>reprompt</code> argument provides an output message displayed each time if the user types a file that is not found.\nIf no value is passed it defaults to, \"Unable to open that file.  Try again.\".\n\n<p>If no stream reference is passed, it is up to you to create an ifstream\nobject and open it upon return from this function.</p>\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring filename = promptUserForFile(stream, prompt);\n</pre>\n<hr>\n<a name=\"Function:openFileDialog\"></a>\n<pre class=detailCode>\nstring openFileDialog(ifstream&amp; stream);\nstring openFileDialog(ifstream&amp; stream, string title);\nstring openFileDialog(ifstream&amp; stream, string title, string path);\nstring openFileDialog(ofstream&amp; stream);\nstring openFileDialog(ofstream&amp; stream, string title);\nstring openFileDialog(ofstream&amp; stream, string title, string path);\n</pre>\n<div class=detailHTML>\nOpens a dialog that allows the user to choose the file.  The\n<code>title</code> parameter is displayed in the dialog title.\nThe <code>path</code> parameter is used to set the working directory;\nif <code>path</code> does not appear, <code>openFileDialog</code>\nuses the current directory.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring filename = openFileDialog(stream);\nstring filename = openFileDialog(stream, title);\nstring filename = openFileDialog(stream, title, path);\n</pre>\n<hr>\n\n<a name=\"Function:readEntireFile\"></a>\n<pre class=detailCode>\nvoid readEntireFile(istream&amp; is, Vector&lt;string&gt;&amp; lines);\nvoid readEntireFile(istream&amp; is, vector&lt;string&gt;&amp; lines);\n</pre>\n<div class=detailHTML>\nReads the entire contents of the specified input stream into the\nstring vector <code>lines</code>.  The client is responsible for\nopening and closing the stream.  The vector can be either an STL\n<code>vector</code> or a <code>Vector</code> as defined in the\nStanford C++ libraries.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nreadEntireFile(is, lines);\n</pre>\n<hr>\n\n<a name=\"Function:readEntireFile\"></a>\n<pre class=detailCode>\nstring readEntireFile(string filename);\n</pre>\n<div class=detailHTML>\nReads the entire contents of the specified file and returns them as a <code>string</code>.\nIf the file cannot be opened or read, throws an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring text = readEntireFile(filename);\n</pre>\n<hr>\n\n<a name=\"Function:getRoot\"></a>\n<pre class=detailCode>\nstring getRoot(string filename);\n</pre>\n<div class=detailHTML>\nReturns the root of <code>filename</code>.  The root consists\nof everything in <code>filename</code> up to the last dot and\nthe subsequent extension.  If no dot appears in the final component\nof the filename, <code>getRoot</code> returns the entire name.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring root = getRoot(filename);\n</pre>\n<hr>\n<a name=\"Function:getExtension\"></a>\n<pre class=detailCode>\nstring getExtension(string filename);\n</pre>\n<div class=detailHTML>\nReturns the extension of <code>filename</code>.  The extension\nconsists of the separating dot and all subsequent characters.\nIf no dot exists in the final component, <code>getExtension</code>\nreturns the empty string.  These semantics ensure that concatenating\nthe root and the extension always returns the original filename.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\next = getExtension(filename);\n</pre>\n<hr>\n<a name=\"Function:getHead\"></a>\n<pre class=detailCode>\nstring getHead(string filename);\n</pre>\n<div class=detailHTML>\nReturns all but the last component of a path name.  The components\nof the path name can be separated by any of the directory path\nseparators (forward or reverse slashes).  The special cases are\nillustrated by the following examples:\n\n<pre>\n   getHead(\"a/b\")  = \"a\"     getTail(\"a/b\")   = \"b\"\n   getHead(\"a\")    = \"\"      getTail(\"a\")     = \"a\"\n   getHead(\"/a\")   = \"/\"     getTail(\"/a\")    = \"a\"\n   getHead(\"/\")    = \"/\"     getTail(\"/\")     = \"\"\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nhead = getHead(filename);\n</pre>\n<hr>\n<a name=\"Function:getTail\"></a>\n<pre class=detailCode>\nstring getTail(string filename);\n</pre>\n<div class=detailHTML>\nReturns the last component of a path name.  The components of the\npath name can be separated by any of the directory path separators\n(forward or reverse slashes).  For details on the interpretation of\nspecial cases, see the comments for the <code>getHead</code> function.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ntail = getTail(filename);\n</pre>\n<hr>\n\n<a name=\"Function:getTempDirectory\"></a>\n<pre class=detailCode>\nstring getTempDirectory();\n</pre>\n<div class=detailHTML>\nReturns the operating system's temporary directory path as a string.\nFor example, on a Linux system this is often <code>\"/tmp\"</code> or <code>\"/var/tmp\"</code>\nand on a Windows system it is often something like <code>\"C:\\Users\\YourUserName\\Local Settings\\Temp\"</code>.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring tempdir = getTempDirectory();\n</pre>\n<p class=\"since\">\n\tAvailable since: 2014/10/08 version of C++ library\n</p>\n<hr>\n\n<a name=\"Function:defaultExtension\"></a>\n<pre class=detailCode>\nstring defaultExtension(string filename, string ext);\n</pre>\n<div class=detailHTML>\nAdds an extension to a file name if none already exists.  If the\n<code>extension</code> argument begins with a leading <code>*</code>,\nany existing extension in <code>filename</code> is replaced by\n<code>ext</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring newname = defaultExtension(filename, ext);\n</pre>\n<hr>\n<a name=\"Function:openOnPath\"></a>\n<pre class=detailCode>\nstring openOnPath(ifstream&amp; stream, string path, string filename);\nstring openOnPath(ofstream&amp; stream, string path, string filename);\n</pre>\n<div class=detailHTML>\nOpens a file using a search path.  If <code>openOnPath</code>\nis successful, it returns the first path name on the search path\nfor which <code>stream.open</code> succeeds.  The <code>path</code>\nargument consists of a list of directories that are prepended to the\nfilename, unless <code>filename</code> begins with an absolute\ndirectory marker, such as <code>/</code> or <code>~</code>.\nThe directories in the search path may be separated either\nby colons (Unix or Mac OS) or semicolons (Windows).  If the file\ncannot be opened, the failure bit is set in the <code>stream</code>\nparameter, and the <code>openOnPath</code> function returns the\nempty string.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring pathname = openOnPath(stream, path, filename);\n</pre>\n<hr>\n<a name=\"Function:findOnPath\"></a>\n<pre class=detailCode>\nstring findOnPath(string path, string filename);\n</pre>\n<div class=detailHTML>\nReturns the canonical name of a file found using a search path.\nThe <code>findOnPath</code> function is similar to\n<code>openOnPath</code>, except that it doesn't actually\nreturn an open stream.  If no matching file is found,\n<code>findOnPath</code> returns the empty string.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring pathname = findOnPath(path, filename);\n</pre>\n<hr>\n<a name=\"Function:deleteFile\"></a>\n<pre class=detailCode>\nvoid deleteFile(string filename);\n</pre>\n<div class=detailHTML>\nDeletes the specified file.  Errors are reported by calling\n<code>error</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndeleteFile(filename);\n</pre>\n<hr>\n<a name=\"Function:renameFile\"></a>\n<pre class=detailCode>\nvoid renameFile(string oldname, string newname);\n</pre>\n<div class=detailHTML>\nRenames a file.  Errors are reported by calling\n<code>error</code> in the implementation.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nrenameFile(oldname, newname);\n</pre>\n<hr>\n<a name=\"Function:fileExists\"></a>\n<pre class=detailCode>\nbool fileExists(string filename);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the specified file exists.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (fileExists(filename)) ...\n</pre>\n<hr>\n<a name=\"Function:isFile\"></a>\n<pre class=detailCode>\nbool isFile(string filename);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the specified file is a regular file.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (isFile(filename)) ...\n</pre>\n<hr>\n<a name=\"Function:isSymbolicLink\"></a>\n<pre class=detailCode>\nbool isSymbolicLink(string filename);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the specified file is a symbolic link.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (isSymbolicLink(filename)) ...\n</pre>\n<hr>\n<a name=\"Function:isDirectory\"></a>\n<pre class=detailCode>\nbool isDirectory(string filename);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the specified file is a directory.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (isDirectory(filename)) ...\n</pre>\n<hr>\n<a name=\"Function:setCurrentDirectory\"></a>\n<pre class=detailCode>\nvoid setCurrentDirectory(string path);\n</pre>\n<div class=detailHTML>\nChanges the current directory to the specified path.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetCurrentDirectory(filename);\n</pre>\n<hr>\n<a name=\"Function:getCurrentDirectory\"></a>\n<pre class=detailCode>\nstring getCurrentDirectory();\n</pre>\n<div class=detailHTML>\nReturns an absolute filename for the current directory.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring filename = getCurrentDirectory();\n</pre>\n<hr>\n<a name=\"Function:createDirectory\"></a>\n<pre class=detailCode>\nvoid createDirectory(string path);\n</pre>\n<div class=detailHTML>\nCreates a new directory for the specified path.  The\n<code>createDirectory</code> function does not report an error if\nthe directory already exists.  Unlike <code>createDirectoryPath</code>,\n<code>createDirectory</code> does not create missing directories\nalong the path.  If some component of <code>path</code> does\nnot exist, this function signals an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncreateDirectory(path);\n</pre>\n<hr>\n<a name=\"Function:createDirectoryPath\"></a>\n<pre class=detailCode>\nvoid createDirectoryPath(string path);\n</pre>\n<div class=detailHTML>\nCreates a new directory for the specified path.   If intermediate\ncomponents of <code>path</code> do not exist, this function creates\nthem as needed.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncreateDirectoryPath(path);\n</pre>\n<hr>\n<a name=\"Function:expandPathname\"></a>\n<pre class=detailCode>\nstring expandPathname(string filename);\n</pre>\n<div class=detailHTML>\nExpands a filename into a canonical name for the platform.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring pathname = expandPathname(filename);\n</pre>\n<hr>\n<a name=\"Function:listDirectory\"></a>\n<pre class=detailCode>\nVector&lt;string&gt; listDirectory(string path);\nvoid listDirectory(string path, Vector&lt;string&gt;&amp; v);\nvoid listDirectory(string path, vector&lt;string&gt;&amp; v);\n</pre>\n<div class=detailHTML>\nAdds an alphabetized list of the names of the files in the specified directory to the string vector <code>v</code>.\nThis list excludes the entries <code>.</code> and <code>..</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\n// first form\nVector&lt;string&gt; files = listDirectory(path);\n\n// second form\nVector&lt;string&gt; files;\nlistDirectory(path, files);\n</pre>\n<hr>\n<a name=\"Function:matchFilenamePattern\"></a>\n<pre class=detailCode>\nbool matchFilenamePattern(string filename, string pattern);\n</pre>\n<div class=detailHTML>\nDetermines whether the filename matches the specified pattern.  The\npattern string is interpreted in much the same way that a Unix shell\nexpands filenames and supports the following wildcard options:\n\n<pre>\n   ?      Matches any single character\n   *      Matches any sequence of characters\n   [...]  Matches any of the specified characters\n   [^...] Matches any character <i>except</i> the specified ones\n</pre>\n\nThe last two options allow a range of characters to be specified in the\nform <code>a-z</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (matchFilenamePattern(filename, pattern)) ...\n</pre>\n<hr>\n<a name=\"Function:getDirectoryPathSeparator\"></a>\n<pre class=detailCode>\nstring getDirectoryPathSeparator();\n</pre>\n<div class=detailHTML>\nReturns the standard directory path separator used on this platform.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring sep = getDirectoryPathSeparator();\n</pre>\n<hr>\n<a name=\"Function:getSearchPathSeparator\"></a>\n<pre class=detailCode>\nstring getSearchPathSeparator();\n</pre>\n<div class=detailHTML>\nReturns the standard search path separator used on this platform.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring sep = getSearchPathSeparator();\n</pre>\n<hr>\n\n<a name=\"Function:rewindStream\"></a>\n<pre class=detailCode>\nvoid rewindStream(istream&amp; stream);\n</pre>\n<div class=detailHTML>\nMoves an input stream back to its beginning so it can be read again.\nThis function is implemented by calling the <code>clear</code> member function on the stream to reset any flags such as the <code>fail</code> flag, then calling the <code>seekg</code> member function to move the stream's internal cursor back to its beginning.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nrewindStream(stream);\n</pre>\n<p class=\"since\">\n\tAvailable since: 2014/02/01 version of C++ library\n</p>\n<hr>\n\n\n<a name=\"Function:writeEntireFile\"></a>\n<pre class=detailCode>\nbool writeEntireFile(string filename, string text, bool append = false);\n</pre>\n<div class=detailHTML>\nWrites the given text into the specified file.\nIf the <code>append</code> parameter is passed with a <code>true</code> value, adds the given text to the end of the file.\nIf <code>append</code> is omitted or <code>false</code>, overwrites any previous contents of the file.\nIf the file cannot be opened or written, returns <code>false</code>, otherwise returns <code>true</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nwriteEntireFile(filename, text);\n</pre>\n<p class=\"since\">\n\tAvailable since: 2014/02/01 version of C++ library\n</p>\n<hr>\n\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/foreach.html",
    "content": "<html>\n<head>\n<title>foreach.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>foreach.h</code></h1>\n\nThis file defines the <code>foreach</code> keyword, which implements\na substitute for the range-based <code>for</code> loop from C++11.\nAll iterable classes in the Stanford libraries import this file, so\nclients don't ordinarily need to do so explicitly.  This version of\n<code>foreach</code> also supports C++ strings and arrays.\n\n<p>\n\tNOTE: If you are using a compiler that supports C++11, you should not\n\tneed to include this header nor use its associated <code>foreach</code> syntax.\n\tYou should favor using the standard for-each loop included in C++11.\n</p>\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Statement</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Statement:foreach\">foreach(<var>type</var>&nbsp;<var>var</var>&nbsp;in&nbsp;<var>collection</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>The <code>foreach</code> statement steps through the elements in a collection.</td></tr>\n</table>\n<h2>Statement detail</h2>\n<hr>\n<a name=\"Statement:foreach\"></a>\n<pre class=detailCode>\nforeach (<var>type</var> <var>var</var> in <var>collection</var>) { ... }\n</pre>\n<div class=detailHTML>\nThe <code>foreach</code> statement steps through the elements in\na collection.  It works correctly with the collection classes in\nboth the Standard Template Library and the Stanford C++ libraries,\nbut can also be used with C++ strings and statically initialized\narrays.\n\n<p>The following code, for example, prints every element in the\nstring vector <code>lines</code>:\n\n<pre>\n   foreach (string str in lines) {\n      cout &lt;&lt; str &lt;&lt; endl;\n   }\n</pre>\n\nSimilarly, the following function calculates the sum of the character\ncodes in a string:\n\n<pre>\n   int sumCharacterCodes(string str) {\n      int sum = 0;\n      foreach (char ch in str) sum += ch;\n      return sum;\n   }\n</pre>\n\nAs a simplification when iterating over maps, the <code>foreach</code>\nmacro iterates through the keys rather than the key/value pairs.\n</div>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/functions.html",
    "content": "<html>\n<head>\n<title>Global Function List</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n\n<script src=\"sorttable.js\" type=\"text/javascript\"></script>\n\n<script type=\"text/javascript\">\n(function() {\n\t// Put functions NOT to list in the table here.\n\t// These may be ones that Marty hasn't documented yet, or ones that\n\t// are 'internal' and not meant to be called by students.\n\tvar UNDOCUMENTED_FUNCTIONS = {\n\t\t\"setConsoleEventOnClose\": true,\n\t\t\"setConsoleLocationSaved\": true,\n\t\t\"getConsoleEventOnClose\": true,\n\t\t\"getConsoleLocationSaved\": true,\n\t}\n\n\t/*\n\t*/\n\n\tvar FUNCTION_MAP = {\n\t\t\"boolToString\": \"strlib.h\",\n\t\t\"charToString\": \"strlib.h\",\n\t\t\"clearConsole\": \"console.h\",\n\t\t\"convertColorToRGB\": \"gwindow.h\",\n\t\t\"convertRGBToColor\": \"gwindow.h\",\n\t\t\"cosDegrees\": \"gmath.h\",\n\t\t\"countDigits\": \"gmath.h\",\n\t\t\"createDirectory\": \"filelib.h\",\n\t\t\"createDirectoryPath\": \"filelib.h\",\n\t\t\"defaultExtension\": \"filelib.h\",\n\t\t\"deleteFile\": \"filelib.h\",\n\t\t\"directionToString\": \"direction.h\",\n\t\t\"endsWith\": \"strlib.h\",\n\t\t\"equalsIgnoreCase\": \"strlib.h\",\n\t\t\"error\": \"error.h\",\n\t\t\"exitGraphics\": \"gwindow.h\",\n\t\t\"expandPathname\": \"filelib.h\",\n\t\t\"fileExists\": \"filelib.h\",\n\t\t\"findOnPath\": \"filelib.h\",\n\t\t\"getConsoleEcho\": \"console.h\",\n\t\t\"getConsoleEventOnClose\": \"console.h\",\n\t\t\"getConsoleExitProgramOnClose\": \"console.h\",\n\t\t\"getConsoleLocationSaved\": \"console.h\",\n\t\t\"getConsolePrintExceptions\": \"console.h\",\n\t\t\"getCurrentDirectory\": \"filelib.h\",\n\t\t\"getDirectoryPathSeparator\": \"filelib.h\",\n\t\t\"getExtension\": \"filelib.h\",\n\t\t\"getHead\": \"filelib.h\",\n\t\t\"getInteger\": \"simpio.h\",\n\t\t\"getLine\": \"simpio.h\",\n\t\t\"getNextEvent\": \"gevents.h\",\n\t\t\"getPlatform\": \"platform.h\",\n\t\t\"getReal\": \"simpio.h\",\n\t\t\"getRoot\": \"filelib.h\",\n\t\t\"getScreenHeight\": \"gwindow.h\",\n\t\t\"getScreenSize\": \"gwindow.h\",\n\t\t\"getScreenWidth\": \"gwindow.h\",\n\t\t\"getSearchPathSeparator\": \"filelib.h\",\n\t\t\"getTail\": \"filelib.h\",\n\t\t\"getYesOrNo\": \"simpio.h\",\n\t\t\"integerToString\": \"strlib.h\",\n\t\t\"isDirectory\": \"filelib.h\",\n\t\t\"isFile\": \"filelib.h\",\n\t\t\"isSymbolicLink\": \"filelib.h\",\n\t\t\"leftFrom\": \"direction.h\",\n\t\t\"listDirectory\": \"filelib.h\",\n\t\t\"matchFilenamePattern\": \"filelib.h\",\n\t\t\"openFile\": \"filelib.h\",\n\t\t\"openFileDialog\": \"filelib.h\",\n\t\t\"openOnPath\": \"filelib.h\",\n\t\t\"opposite\": \"direction.h\",\n\t\t\"pause\": \"gwindow.h\",\n\t\t\"promptUserForFile\": \"filelib.h\",\n\t\t\"randomBool\": \"random.h\",\n\t\t\"randomChance\": \"random.h\",\n\t\t\"randomInteger\": \"random.h\",\n\t\t\"randomReal\": \"random.h\",\n\t\t\"readEntireFile\": \"filelib.h\",\n\t\t\"readEntireFile\": \"filelib.h\",\n\t\t\"realToString\": \"strlib.h\",\n\t\t\"regexMatch\": \"regexpr.h\",\n\t\t\"regexMatchCount\": \"regexpr.h\",\n\t\t\"regexReplace\": \"regexpr.h\",\n\t\t\"renameFile\": \"filelib.h\",\n\t\t\"repaint\": \"gwindow.h\",\n\t\t\"rewindStream\": \"filelib.h\",\n\t\t\"rightFrom\": \"direction.h\",\n\t\t\"setConsoleEcho\": \"console.h\",\n\t\t\"setConsoleEventOnClose\": \"console.h\",\n\t\t\"setConsoleExitProgramOnClose\": \"console.h\",\n\t\t\"setConsoleFont\": \"console.h\",\n\t\t\"setConsoleLocation\": \"console.h\",\n\t\t\"setConsoleLocationSaved\": \"console.h\",\n\t\t\"setConsolePrintExceptions\": \"console.h\",\n\t\t\"setConsoleSize\": \"console.h\",\n\t\t\"setCurrentDirectory\": \"filelib.h\",\n\t\t\"setRandomSeed\": \"random.h\",\n\t\t\"sinDegrees\": \"gmath.h\",\n\t\t\"startsWith\": \"strlib.h\",\n\t\t\"stringContains\": \"strlib.h\",\n\t\t\"stringIndexOf\": \"strlib.h\",\n\t\t\"stringIsInteger\": \"strlib.h\",\n\t\t\"stringIsReal\": \"strlib.h\",\n\t\t\"stringJoin\": \"strlib.h\",\n\t\t\"stringLastIndexOf\": \"strlib.h\",\n\t\t\"stringReplace\": \"strlib.h\",\n\t\t\"stringSplit\": \"strlib.h\",\n\t\t\"stringToBool\": \"strlib.h\",\n\t\t\"stringToChar\": \"strlib.h\",\n\t\t\"stringToInteger\": \"strlib.h\",\n\t\t\"stringToReal\": \"strlib.h\",\n\t\t\"tanDegrees\": \"gmath.h\",\n\t\t\"toDegrees\": \"gmath.h\",\n\t\t\"toLowerCase\": \"strlib.h\",\n\t\t\"toRadians\": \"gmath.h\",\n\t\t\"toUpperCase\": \"strlib.h\",\n\t\t\"trim\": \"strlib.h\",\n\t\t\"trimEnd\": \"strlib.h\",\n\t\t\"trimStart\": \"strlib.h\",\n\t\t\"urlDecode\": \"strlib.h\",\n\t\t\"urlEncode\": \"strlib.h\",\n\t\t\"vectorAngle\": \"gmath.h\",\n\t\t\"vectorDistance\": \"gmath.h\",\n\t\t\"waitForClick\": \"gevents.h\",\n\t\t\"waitForClick\": \"gwindow.h\",\n\t\t\"waitForEvent\": \"gevents.h\",\n\t\t\"writeEntireFile\": \"filelib.h\"\n\t};\n\n\twindow.addEventListener(\"load\", function() {\n\t\tvar funcListTable = document.getElementById(\"functionlisttable\");\n\t\tvar funcTemplate = document.getElementById(\"functionlisttemplate\");\n\n\t\tfor (var functionName in FUNCTION_MAP) {\n\t\t\tif (!FUNCTION_MAP.hasOwnProperty(functionName)) { continue; }\n\t\t\tif (UNDOCUMENTED_FUNCTIONS[functionName]) { continue; }\n\n\t\t\tvar fileName = FUNCTION_MAP[functionName];\n\t\t\tvar fileURL = fileName.replace(\".h\", \".html\") + \"#Function:\" + functionName;\n\n\t\t\tvar funcSpan = funcTemplate.cloneNode(true);\n\t\t\tfuncSpan.style.display = \"\";\n\t\t\tfuncSpan.querySelector(\".templatefuncname\").innerHTML = functionName;\n\t\t\tfuncSpan.querySelector(\".templatefuncfile\").innerHTML = fileName;\n\t\t\tfuncSpan.querySelector(\".templatefunclink\").href = fileURL;\n\t\t\tfuncListTable.appendChild(funcSpan);\n\t\t}\n\t});\n})();\n</script>\n\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford C++ Libraries\n</div></td>\n</tr></table>\n<hr>\n\n<noscript>\n\t<p>\n\t\t<strong>This page requires JavaScript to function properly.</strong>\n\t\tPlease enable JavaScript in your browser.\n\t</p>\n</noscript>\n\n<table>\n\t<tr><td class=indexHead>Global Functions</td></tr>\n\t<tr><td>\n\t<p>\n\t\tThis section lists every global function exported by the Stanford C++ libraries, along with the name of the header file that must be included to use that function.\n\t\tNote that this page lists only functions that are exported into the default global namespace, not every method of every class, and not methods that are exported into any other namespaces.\n\t</p>\n\n\t<p>\n\t\tYou can click each column heading to sort the table by that column.\n\t\tFor detailed documentation about a given function, click the link for that header file.\n\t</p>\n\n\t<p>\n\t\t&nbsp;\n\t</p>\n\t</td></tr>\n</table>\n\n<table class=\"index sorttable\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Function Name</th>\n\t\t\t<th>Header File</th>\n\t\t</tr>\n\t</thead>\n\n\t<tbody id=\"functionlisttable\">\n\t\t<!-- this is a template piece of HTML that is cloned in JS for each function exported. -->\n\t\t<tr id=\"functionlisttemplate\" style=\"display: none\">\n\t\t\t<td class=indexKey>\n\t\t\t\t<code class=\"templatefuncname\"></code>\n\t\t\t</td>\n\t\t\t<td class=indexSynopsis>\n\t\t\t\t<a class=\"templatefunclink\" href=\"\"><code class=\"templatefuncfile\"></code></a>\n\t\t\t</td>\n\t\t</tr>\n\t<tbody>\n</table>\n\n\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/gbufferedimage.html",
    "content": "<html>\n<head>\n<title>gbufferedimage.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>gbufferedimage.h</code></h1>\nThis file defines the <code>GBufferedImage</code> class, which implements a\n2D region of colored pixels that can be read/set individually, not unlike\nthe <code>BufferedImage</code> class in Java.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Class</td></tr>\n<tr><td class=indexKey><nobr><a href=\"GBufferedImage-class.html\">GBufferedImage</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class implements a 2D region of colored pixels that can be read/set individually.</td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/gevents.html",
    "content": "<html>\n<head>\n<title>gevents.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>gevents.h</code></h1>\nThis file defines the event types used in the StanfordCPPLib\ngraphics libraries.  The structure of this package is adapted from\nthe Java event model.\nThe <code>GEvent</code> hierarchy looks like this (<code>GTableEvent</code> is not pictured):\n\n<p><div class=inset>\n<img src=\"images/GEventHierarchy-h.png\"\n     width=558 usemap=\"#GEventMap\" alt=\"GEventHierarchy\">\n</div>\n<map name=\"GEventMap\">\n  <area shape=rect coords=\"228,0,330,27\" href=\"GEvent-class.html\"\n        alt=\"GEvent\">\n  <area shape=rect coords=\"0,132,102,159\" href=\"GWindowEvent-class.html\"\n        alt=\"GWindowEvent\">\n  <area shape=rect coords=\"114,132,216,159\" href=\"GActionEvent-class.html\"\n        alt=\"GActionEvent\">\n  <area shape=rect coords=\"228,132,330,159\" href=\"GMouseEvent-class.html\"\n        alt=\"GMouseEvent\">\n  <area shape=rect coords=\"342,132,444,159\" href=\"GKeyEvent-class.html\"\n        alt=\"GKeyEvent\">\n  <area shape=rect coords=\"456,132,558,159\" href=\"GTimerEvent-class.html\"\n        alt=\"GTimerEvent\">\n</map>\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Classes</td></tr>\n<tr><td class=indexKey><nobr><a href=\"GActionEvent-class.html\">GActionEvent</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This event subclass represents an action event.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"GEvent-class.html\">GEvent</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class is the root of the hierarchy for all events.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"GKeyEvent-class.html\">GKeyEvent</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This event subclass represents a key event.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"GMouseEvent-class.html\">GMouseEvent</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This event subclass represents a mouse event.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"GTableEvent-class.html\">GTableEvent</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This event subclass represents a table event.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"GTimerEvent-class.html\">GTimerEvent</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This event subclass represents a timer event.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"GWindowEvent-class.html\">GWindowEvent</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This event subclass represents a window event.</td></tr>\n<tr><td class=indexHead colspan=2>Types</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:EventClassType\">EventClassType</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This enumeration type defines the event classes.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:EventType\">EventType</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This enumeration type defines the event types for all events.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:KeyCodes\">KeyCodes</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This type defines the names of the key codes returned in a key event.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:ModifierCodes\">ModifierCodes</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This enumeration type defines a set of constants used to check whether modifiers are in effect.</td></tr>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getNextEvent\">getNextEvent(<var>mask</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Checks to see if there are any events of the desired type waiting on the event queue.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:waitForClick\">waitForClick()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Waits for a mouse click in any window, discarding any other events.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:waitForEvent\">waitForEvent(<var>mask</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Dismisses the process until an event occurs whose type is covered by the event mask.</td></tr>\n</table>\n<h2>Type detail</h2>\n<hr>\n<a name=\"Type:EventClassType\"></a>\n<pre class=detailCode>\nenum EventClassType {\n   NULL_EVENT  x000,\n   ACTION_EVENTx010,\n   KEY_EVENT   x020,\n   TIMER_EVENT x040,\n   WINDOW_EVENTx080,\n   MOUSE_EVENT x100,\n   CLICK_EVENT x200,\n   ANY_EVENT   x3F0\n};\n</pre>\n<div class=detailHTML>\nThis enumeration type defines the event classes.  The element values\nare each a single bit and can be added or ORed together to generate\nan event mask.  The <code>CLICK_EVENT</code> class responds only to\nthe MOUSE_CLICKED event type.  The <code>ANY_EVENT</code> class\nselects any event.\n</div>\n<hr>\n<a name=\"Type:EventType\"></a>\n<pre class=detailCode>\ntypedef enum {\n   WINDOW_CLOSED    = WINDOW_EVENT + 1,\n   WINDOW_RESIZED   = WINDOW_EVENT + 2,\n   ACTION_PERFORMED = ACTION_EVENT + 1,\n   MOUSE_CLICKED    = MOUSE_EVENT + 1,\n   MOUSE_PRESSED    = MOUSE_EVENT + 2,\n   MOUSE_RELEASED   = MOUSE_EVENT + 3,\n   MOUSE_MOVED      = MOUSE_EVENT + 4,\n   MOUSE_DRAGGED    = MOUSE_EVENT + 5,\n   KEY_PRESSED      = KEY_EVENT + 1,\n   KEY_RELEASED     = KEY_EVENT + 2,\n   KEY_TYPED        = KEY_EVENT + 3,\n   TIMER_TICKED     = TIMER_EVENT + 1,\n} EventType;\n</pre>\n<div class=detailHTML>\nThis enumeration type defines the event types for all events.\n</div>\n<hr>\n<a name=\"Type:ModifierCodes\"></a>\n<pre class=detailCode>\nenum ModifierCodes {\n   SHIFT_DOWN     = 1 &lt;&lt; 0,\n   CTRL_DOWN      = 1 &lt;&lt; 1,\n   META_DOWN      = 1 &lt;&lt; 2,\n   ALT_DOWN       = 1 &lt;&lt; 3,\n   ALT_GRAPH_DOWN = 1 &lt;&lt; 4,\n   BUTTON1_DOWN   = 1 &lt;&lt; 5,\n   BUTTON2_DOWN   = 1 &lt;&lt; 6,\n   BUTTON3_DOWN   = 1 &lt;&lt; 7\n};\n</pre>\n<div class=detailHTML>\nThis enumeration type defines a set of constants used to check whether\nmodifiers are in effect.\n</div>\n<hr>\n<a name=\"Type:KeyCodes\"></a>\n<pre class=detailCode>\nenum KeyCodes {\n   BACKSPACE_KEY = 8,\n   TAB_KEY = 9,\n   ENTER_KEY = 10,\n   CLEAR_KEY = 12,\n   ESCAPE_KEY = 27,\n   PAGE_UP_KEY = 33,\n   PAGE_DOWN_KEY = 34,\n   END_KEY = 35,\n   HOME_KEY = 36,\n   LEFT_ARROW_KEY = 37,\n   UP_ARROW_KEY = 38,\n   RIGHT_ARROW_KEY = 39,\n   DOWN_ARROW_KEY = 40,\n   F1_KEY = 112,\n   F2_KEY = 113,\n   F3_KEY = 114,\n   F4_KEY = 115,\n   F5_KEY = 116,\n   F6_KEY = 117,\n   F7_KEY = 118,\n   F8_KEY = 119,\n   F9_KEY = 120,\n   F10_KEY = 121,\n   F11_KEY = 122,\n   F12_KEY = 123,\n   DELETE_KEY = 127,\n   HELP_KEY = 156\n};\n</pre>\n<div class=detailHTML>\nThis type defines the names of the key codes returned in a key event.\n</div>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:waitForClick\"></a>\n<pre class=detailCode>\nvoid waitForClick();\n</pre>\n<div class=detailHTML>\nWaits for a mouse click in any window, discarding any other events.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nwaitForClick();\n</pre>\n<hr>\n<a name=\"Function:waitForEvent\"></a>\n<pre class=detailCode>\nGEvent waitForEvent(int mask = ANY_EVENT);\n</pre>\n<div class=detailHTML>\nDismisses the process until an event occurs whose type is covered by\nthe event mask.  The mask parameter is a combination of the events of\ninterest.  For example, to wait for a mouse event or an action event,\nclients can use the following call:\n\n<pre>\n   e = waitForEvent(MOUSE_EVENT + ACTION_EVENT);\n</pre>\n\nThe <code>mask</code> parameter is optional.  If it is missing,\n<code>waitForEvent</code> accepts any event.\n\n<p>As a more sophisticated example, the following code is the canonical\nevent loop for an animated application that needs to respond to mouse,\nkey, and timer events:\n\n<pre>\n   GTimer timer(ANIMATION_DELAY_IN_MILLISECONDS);\n   timer.start();\n   while (true) {\n      GEvent e = waitForEvent(TIMER_EVENT + MOUSE_EVENT + KEY_EVENT);\n      switch (e.getEventClass()) {\n       case TIMER_EVENT:\n         takeAnimationStep();\n         break;\n       case MOUSE_EVENT:\n         handleMouseEvent(GMouseEvent(e));\n         break;\n       case KEY_EVENT:\n         handleKeyEvent(GKeyEvent(e));\n         break;\n      }\n   }\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGEvent e = waitForEvent(mask);\n</pre>\n<hr>\n<a name=\"Function:getNextEvent\"></a>\n<pre class=detailCode>\nGEvent getNextEvent(int mask = ANY_EVENT);\n</pre>\n<div class=detailHTML>\nChecks to see if there are any events of the desired type waiting on the\nevent queue.  If so, this function returns the event in exactly the same\nfashion as <code>waitForEvent</code>; if not, <code>getNextEvent</code>\nreturns an invalid event.  The <code>mask</code> parameter is optional.\nIf it is missing, <code>getNextEvent</code> accepts any event.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGEvent e = getNextEvent(mask);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/ginteractors.html",
    "content": "<html>\n<head>\n<title>ginteractors.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>ginteractors.h</code></h1>\nThis file exports a hierarchy of graphical interactors similar to those\nprovided in the Java Swing libraries.\nThe <code>GInteractor</code> hierarchy looks like this:\n\n<p><div class=inset>\n<img src=\"images/GInteractorHierarchy-h.png\"\n<img src=\"images/GInteractorHierarchy.png\"\n     width=513 usemap=\"#GInteractorMap\" alt=\"GInteractorHierarchy\">\n</div>\n<map name=\"GInteractorMap\">\n  <area shape=rect coords=\"210,0,303,27\" href=\"GObject-class.html\"\n        alt=\"GObject\">\n  <area shape=rect coords=\"210,87,303,114\" href=\"GInteractor-class.html\"\n        alt=\"GInteractor\">\n  <area shape=rect coords=\"0,219,93,246\" href=\"GButton-class.html\"\n        alt=\"GButton\">\n  <area shape=rect coords=\"105,219,198,246\" href=\"GCheckBox-class.html\"\n        alt=\"GCheckBox\">\n  <area shape=rect coords=\"210,219,303,246\" href=\"GChooser-class.html\"\n        alt=\"GChooser\">\n  <area shape=rect coords=\"315,219,408,246\" href=\"GSlider-class.html\"\n        alt=\"GSlider\">\n  <area shape=rect coords=\"420,219,513,246\" href=\"GTextField-class.html\"\n        alt=\"GTextField\">\n</map>\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Classes</td></tr>\n<tr><td class=indexKey><nobr><a href=\"GButton-class.html\">GButton</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interactor subclass represents an onscreen button.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"GCheckBox-class.html\">GCheckBox</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interactor subclass represents an onscreen check box.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"GChooser-class.html\">GChooser</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interactor subclass represents a selectable list.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"GInteractor-class.html\">GInteractor</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This abstract class is the superclass for all graphical interactors.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"GSlider-class.html\">GSlider</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interactor subclass represents an onscreen slider.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"GTextField-class.html\">GTextField</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interactor subclass represents a text field for entering short text strings.</td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/gmath.html",
    "content": "<html>\n<head>\n<title>gmath.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>gmath.h</code></h1>\nThis file exports several functions for working with graphical\ngeometry along with the mathematical constants <code>PI</code>\nand <code>E</code>.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Constants</td></tr>\n<tr><td class=indexKey><nobr>E&nbsp;</nobr></td><td class=indexSynopsis width=100%>The mathematical constant e, which is the base of natural logarithms.</td></tr>\n<tr><td class=indexKey><nobr>PI&nbsp;</nobr></td><td class=indexSynopsis width=100%>The mathematical constant pi, which is the ratio of the circumference of a circle to its diameter.</td></tr>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:cosDegrees\">cosDegrees(<var>angle</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the trigonometric cosine of <code>angle</code>, which is expressed in degrees.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:countDigits\">countDigits(<var>n</var>,&nbsp;<var>base</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the number of digits in the given number represented in the given base.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:sinDegrees\">sinDegrees(<var>angle</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the trigonometric sine of <code>angle</code>, which is expressed in degrees.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:tanDegrees\">tanDegrees(<var>angle</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the trigonometric tangent of <code>angle</code>, which is expressed in degrees.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:toDegrees\">toDegrees(<var>radians</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Converts an angle from radians to degrees.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:toRadians\">toRadians(<var>degrees</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Converts an angle from degrees to radians.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:vectorAngle\">vectorAngle(<var>pt</var>)</a><br>\n<a href=\"#Function:vectorAngle\">vectorAngle(<var>x</var>,&nbsp;<var>y</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the angle in degrees from the origin to the specified point.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:vectorDistance\">vectorDistance(<var>pt</var>)</a><br>\n<a href=\"#Function:vectorDistance\">vectorDistance(<var>x</var>,&nbsp;<var>y</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Computes the distance between the origin and the specified point.</td></tr>\n</table>\n<h2>Function detail</h2>\n<hr>\n\n<a name=\"Function:countDigits\"></a>\n<pre class=detailCode>\nint countDigits(int n, int base = 10);\n</pre>\n<div class=detailHTML>\nReturns the number of digits in the given integer in the given base.\nDefaults to base-10, decimal.\nFor example:\n\n<ul>\n<li><code>countDigits(3456)</code> returns 4.\n<li><code>countDigits(0)</code>    returns 1.\n<li><code>countDigits(-778)</code> returns 3.\n<li><code>countDigits(16, 2)</code> returns 5.\n</ul>\n\n<p>Throws an error if base is 0 or negative.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint digits = countDigits(16, 2);\n</pre>\n<hr>\n\n<a name=\"Function:sinDegrees\"></a>\n<pre class=detailCode>\ndouble sinDegrees(double angle);\n</pre>\n<div class=detailHTML>\nReturns the trigonometric sine of <code>angle</code>, which is\nexpressed in degrees.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble sine = sinDegrees(angle);\n</pre>\n<hr>\n\n<a name=\"Function:cosDegrees\"></a>\n<pre class=detailCode>\ndouble cosDegrees(double angle);\n</pre>\n<div class=detailHTML>\nReturns the trigonometric cosine of <code>angle</code>, which is\nexpressed in degrees.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble cosine = cosDegrees(angle);\n</pre>\n<hr>\n\n<a name=\"Function:tanDegrees\"></a>\n<pre class=detailCode>\ndouble tanDegrees(double angle);\n</pre>\n<div class=detailHTML>\nReturns the trigonometric tangent of <code>angle</code>, which is\nexpressed in degrees.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble tangent = tanDegrees(angle);\n</pre>\n<hr>\n<a name=\"Function:toDegrees\"></a>\n<pre class=detailCode>\ndouble toDegrees(double radians);\n</pre>\n<div class=detailHTML>\nConverts an angle from radians to degrees.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble degrees = toDegrees(radians);\n</pre>\n<hr>\n<a name=\"Function:toRadians\"></a>\n<pre class=detailCode>\ndouble toRadians(double degrees);\n</pre>\n<div class=detailHTML>\nConverts an angle from degrees to radians.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble radians = toRadians(degrees);\n</pre>\n<hr>\n<a name=\"Function:vectorDistance\"></a>\n<pre class=detailCode>\ndouble vectorDistance(const GPoint &amp; pt);\ndouble vectorDistance(double x, double y);\n</pre>\n<div class=detailHTML>\nComputes the distance between the origin and the specified point.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble r = vectorDistance(pt);\ndouble r = vectorDistance(x, y);\n</pre>\n<hr>\n<a name=\"Function:vectorAngle\"></a>\n<pre class=detailCode>\ndouble vectorAngle(const GPoint &amp; pt);\ndouble vectorAngle(double x, double y);\n</pre>\n<div class=detailHTML>\nReturns the angle in degrees from the origin to the specified point.\nThis function takes account of the fact that the graphics coordinate\nsystem is flipped in the <i>y</i> direction from the traditional\nCartesian plane.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble angle = vectorAngle(pt);\ndouble angle = vectorAngle(x, y);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/gobjects.html",
    "content": "<html>\n<head>\n<title>gobjects.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>gobjects.h</code></h1>\nThis file exports a hierarchy of graphical shapes based on\nthe model developed for the ACM Java Graphics.\nThe <code>GObject</code> hierarchy looks like this:\n\n<p><div class=inset>\n<img src=\"images/GObjectHierarchy-h.png\"\n     width=768 usemap=\"#GObjectMap\" alt=\"GObjectHierarchy\">\n</div>\n<map name=\"GObjectMap\">\n  <area shape=rect coords=\"341,0,427,27\" href=\"GObject-class.html\"\n        alt=\"GObject\">\n  <area shape=rect coords=\"0,177,86,204\" href=\"GArc-class.html\"\n        alt=\"GArc\">\n  <area shape=rect coords=\"98,177,184,204\" href=\"GImage-class.html\"\n        alt=\"GImage\">\n  <area shape=rect coords=\"195,177,281,204\" href=\"GLabel-class.html\"\n        alt=\"GLabel\">\n  <area shape=rect coords=\"293,177,379,204\" href=\"GLine-class.html\"\n        alt=\"GLine\">\n  <area shape=rect coords=\"390,177,476,204\" href=\"GOval-class.html\"\n        alt=\"GOval\">\n  <area shape=rect coords=\"488,177,574,204\" href=\"GRect-class.html\"\n        alt=\"GRect\">\n  <area shape=rect coords=\"585,177,671,204\" href=\"GPolygon-class.html\"\n        alt=\"GPolygon\">\n  <area shape=rect coords=\"683,177,769,204\" href=\"GCompound-class.html\"\n        alt=\"GCompound\">\n  <area shape=rect coords=\"439,270,525,297\" href=\"G3DRect-class.html\"\n        alt=\"G3DRect\">\n  <area shape=rect coords=\"536,270,622,297\" href=\"GRoundRect-class.html\"\n        alt=\"GRoundRect\">\n</map>\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Classes</td></tr>\n<tr><td class=indexKey><nobr><a href=\"G3DRect-class.html\">G3DRect</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This graphical object subclass represents a rectangular box that can be raised or lowered.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"GArc-class.html\">GArc</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This graphical object subclass represents an elliptical arc.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"GCompound-class.html\">GCompound</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This graphical object subclass consists of a collection of other graphical objects.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"GImage-class.html\">GImage</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This graphical object subclass represents an image from a file.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"GLabel-class.html\">GLabel</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This graphical object subclass represents a text string.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"GLine-class.html\">GLine</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This graphical object subclass represents a line segment.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"GObject-class.html\">GObject</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class is the common superclass of all graphical objects that can be displayed on a graphical window.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"GOval-class.html\">GOval</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This graphical object subclass represents an oval inscribed in a rectangular box.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"GPolygon-class.html\">GPolygon</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This graphical object subclass represents a polygon bounded by line segments.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"GRect-class.html\">GRect</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class represents a graphical object whose appearance consists of a rectangular box.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"GRoundRect-class.html\">GRoundRect</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class represents a graphical object whose appearance consists of a rectangular box with rounded corners.</td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/goptionpane.html",
    "content": "<html>\n<head>\n<title>goptionpane.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>goptionpane.h</code></h1>\nThis file exports a <code>GOptionPane</code> class representing graphical input/output dialog boxes that can be popped up on the screen.\n\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Classes</td></tr>\n<tr><td class=indexKey><nobr><a href=\"GOptionPane-class.html\">GOptionPane</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class represents graphical input/output dialog boxes that can be popped up on the screen.</td></tr>\n\n<tr><td class=indexHead colspan=2>Types</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:GOptionPaneResult\">GOptionPaneResult</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This enumeration type defines the various results that can be returned from some option dialogs.</td></tr>\n</table>\n\n<h2>Type detail</h2>\n<hr>\n<a name=\"Type:GOptionPaneResult\"></a>\n<pre class=detailCode>\nenum GOptionPaneResult {\n    GOPTIONPANE_YES,\n    GOPTIONPANE_NO,\n    GOPTIONPANE_CANCEL,\n    GOPTIONPANE_OK,\n    GOPTIONPANE_ERROR\n};\n</pre>\n<div class=detailHTML>\nThis enumeration type defines the various results that can be returned from some option dialogs.\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/graph.html",
    "content": "<html>\n<head>\n<title>graph.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>graph.h</code></h1>\nThis file exports a parameterized <code>Graph</code> class used\nto represent <b><i>graphs,</i></b> which consist of a set of\n<b><i>nodes</i></b> and a set of <b><i>arcs</i></b>.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Class</td></tr>\n<tr><td class=indexKey><nobr><a href=\"Graph-class.html\">Graph&lt;<var>NodeType</var>,&nbsp;<var>ArcType</var>&gt;</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class represents a graph with the specified node and arc types.</td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/grid.html",
    "content": "<html>\n<head>\n<title>grid.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>grid.h</code></h1>\nThis file exports the <code>Grid</code> class, which offers a\nconvenient abstraction for representing a two-dimensional array.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Class</td></tr>\n<tr><td class=indexKey><nobr><a href=\"Grid-class.html\">Grid&lt;<var>ValueType</var>&gt;</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class stores an indexed, two-dimensional array.</td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/gtable.html",
    "content": "<html>\n<head>\n<title>gtable.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>gtable.h</code></h1>\nThis file defines the <code>GTable</code> class, which implements a 2D table of rows and columns, not unlike the <code>JTable</code> class in Java.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Class</td></tr>\n<tr><td class=indexKey><nobr><a href=\"GTable-class.html\">GTable</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class represents a graphical editable 2D table, like a mediocre facsimile of an Excel spreadsheet.</td></tr>\n<tr><td class=indexHead colspan=2>Types</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:Alignment\">Alignment</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This enumeration type, declared inside the <code>GTable</code> class, defines the three supported kinds of cell alignment.</td></tr>\n</table>\n\n<h2>Type detail</h2>\n<hr>\n<a name=\"Type:Alignment\"></a>\n<pre class=detailCode>\nclass GTable {\npublic:\n    enum Alignment {\n        CENTER = 0,\n        LEFT = 2,\n        RIGHT = 4\n    };\n    ...\n};\n</pre>\n<div class=detailHTML>\nThe three supported kinds of cell alignment.\nThis enumeration is used in the <code>GTable</code> methods <code>getHorizontalAlignment</code> and <code>setHorizontalAlignment</code>.\nValues match the corresponding constants from <code>javax.swing.SwingConstants</code>.\n</div>\n<hr>\n\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/gtimer.html",
    "content": "<html>\n<head>\n<title>gtimer.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>gtimer.h</code></h1>\nThis file defines the <code>GTimer</code> class, which implements a\ngeneral interval timer.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Class</td></tr>\n<tr><td class=indexKey><nobr><a href=\"GTimer-class.html\">GTimer</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class implements a simple interval timer that generates a <code>GTimerEvent</code> with a specified frequency.</td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/gtypes.html",
    "content": "<html>\n<head>\n<title>gtypes.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>gtypes.h</code></h1>\nThis file defines classes for representing points, dimensions, and\nrectangles.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Classes</td></tr>\n<tr><td class=indexKey><nobr><a href=\"GDimension-class.html\">GDimension</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class contains real-valued width and height fields.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"GPoint-class.html\">GPoint</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class contains real-valued x and y fields.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"GRectangle-class.html\">GRectangle</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This type contains real-valued x, y, width, and height fields.</td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/gwindow.html",
    "content": "<html>\n<head>\n<title>gwindow.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>gwindow.h</code></h1>\nThis file defines the <code>GWindow</code> class which supports\ndrawing graphical objects on the screen.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Class</td></tr>\n<tr><td class=indexKey><nobr><a href=\"GWindow-class.html\">GWindow</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class represents a graphics window that supports simple graphics.</td></tr>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:convertColorToRGB\">convertColorToRGB(<var>colorName</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Converts a hexadecimal <code>\"#rrggbb\"</code> color name into an integer that encodes the red, green, and blue components of the color.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:convertRGBToColor\">convertRGBToColor(<var>rgb</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Converts an <code>rgb</code> value into a hexadecimal color name in the form <code>\"#rrggbb\"</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:exitGraphics\">exitGraphics()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Closes all graphics windows and exits from the application without waiting for any additional user interaction.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getScreenHeight\">getScreenHeight()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the height of the entire display screen.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getScreenSize\">getScreenSize()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the width/height of the entire display screen.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getScreenWidth\">getScreenWidth()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the width of the entire display screen.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:pause\">pause(<var>milliseconds</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Pauses for the indicated number of milliseconds.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:repaint\">repaint()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Issues a request to update all graphics windows.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:waitForClick\">waitForClick()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Waits for a mouse click to occur anywhere in any window.</td></tr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:repaint\"></a>\n<pre class=detailCode>\nvoid repaint();\n</pre>\n<div class=detailHTML>\nIssues a request to update all graphics windows.  This function\nis called automatically when the program pauses, waits for an\nevent, waits for user input on the console, or terminates.  As\na result, most clients never need to call repaint explicitly.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nrepaint();\n</pre>\n<hr>\n<a name=\"Function:pause\"></a>\n<pre class=detailCode>\nvoid pause(double milliseconds);\n</pre>\n<div class=detailHTML>\nPauses for the indicated number of milliseconds.  This function is\nuseful for animation where the motion would otherwise be too fast.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\npause(milliseconds);\n</pre>\n<hr>\n\n<a name=\"Function:getScreenWidth\"></a>\n<pre class=detailCode>\ndouble getScreenWidth();\n</pre>\n<div class=detailHTML>\nReturns the width of the entire display screen.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nwidth = getScreenWidth();\n</pre>\n<hr>\n\n<a name=\"Function:getScreenHeight\"></a>\n<pre class=detailCode>\ndouble getScreenHeight();\n</pre>\n<div class=detailHTML>\nReturns the height of the entire display screen.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nheight = getScreenHeight();\n</pre>\n<hr>\n\n<a name=\"Function:getScreenSize\"></a>\n<pre class=detailCode>\nGDimension getScreenSize();\n</pre>\n<div class=detailHTML>\nReturns the width/height of the entire display screen.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGDimension size = getScreenSize();\n</pre>\n<hr>\n\n<a name=\"Function:convertColorToRGB\"></a>\n<pre class=detailCode>\nint convertColorToRGB(string colorName);\n</pre>\n<div class=detailHTML>\nConverts a color name into an integer that encodes the\nred, green, and blue components of the color.\nThe color is represented in the 32-bit integer in the following way, from most-significant to least-significant bit:\n\n<ul>\n\t<li>\n\t\tbits 0-7 (most significant; <code>value &amp; 0xff000000</code>) are unused;\n\t</li>\n\t<li>\n\t\tbits 8-15 (<code>value &amp; 0x00ff0000</code>) represent the redness of the color, from 0 (none) through 255 (full);\n\t</li>\n\t<li>\n\t\tbits 16-23 (<code>value &amp; 0x0000ff00</code>) represent the greenness of the color, from 0 (none) through 255 (full);\n\t</li>\n\t<li>\n\t\tand bits 24-31 (<code>value &amp; 0x000000ff</code>) represent the blueness of the color, from 0 (none) through 255 (full).\n\t</li>\n</ul>\n\n<p>\n\tFor example, the call of <code>convertColorToRGB(\"#ff00ff\")</code> would return the integer value <code>0xff00ff</code>, which is <code>16711935</code> in base-10.\n</p>\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint rgb = convertColorToRGB(colorName);\n</pre>\n<hr>\n<a name=\"Function:convertRGBToColor\"></a>\n<pre class=detailCode>\nstring convertRGBToColor(int rgb);\n</pre>\n<div class=detailHTML>\nConverts an <code>rgb</code> value into a color name in the\nform <code>\"#rrggbb\"</code>.  Each of the <code>rr</code>,\n<code>gg</code>, and <code>bb</code> values are two-digit\nhexadecimal numbers indicating the intensity of that component, from <code>00</code> (the least amount of that color) to <code>ff</code>, the hexadecimal representation of the number 255, indicating the largest amount of that color.\n\n<p>\n\tColors are usually written as hexadecimal (base-16) integer literal values.\n\tFor example, the color black is represented as <code>0x000000</code>, white is <code>0xffffff</code>, red is <code>0xff0000</code>, green is <code>0x00ff00</code>, blue is <code>0x0000ff</code>, purple is <code>0xff00ff</code>, yellow is <code>0xffff00</code>, and so on.\n</p>\n\n<p>\n\tFor example, the call of <code>convertRGBToColor(0xff00cc)</code> would return the string <code>\"#ff00ff\"</code>.\n</p>\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring colorName = convertRGBToColor(rgb);\n</pre>\n<hr>\n<a name=\"Function:waitForClick\"></a>\n<pre class=detailCode>\nvoid waitForClick();\n</pre>\n<div class=detailHTML>\nWaits for a mouse click to occur anywhere in any window.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nwaitForClick();\n</pre>\n<hr>\n<a name=\"Function:exitGraphics\"></a>\n<pre class=detailCode>\nvoid exitGraphics();\n</pre>\n<div class=detailHTML>\nCloses all graphics windows and exits from the application without\nwaiting for any additional user interaction.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nexitGraphics();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/hashmap.html",
    "content": "<html>\n<head>\n<title>hashmap.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>hashmap.h</code></h1>\nThis file exports the <code>HashMap</code> class, which stores\na set of <i>key</i>-<i>value</i> pairs.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Class</td></tr>\n<tr><td class=indexKey><nobr><a href=\"HashMap-class.html\">HashMap&lt;<var>KeyType</var>,&nbsp;<var>ValueType</var>&gt;</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class implements an efficient association between <b><i>keys</i></b> and <b><i>values</i></b>.</td></tr>\n<tr><td class=indexHead colspan=2>Function</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:hashCode\">hashCode(<var>key</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a hash code for the specified key, which is always a nonnegative integer.</td></tr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:hashCode\"></a>\n<pre class=detailCode>\nint hashCode(const string&amp; key);\nint hashCode(int key);\nint hashCode(char key);\nint hashCode(long key);\nint hashCode(double key);\nint hashCode(void* key);\n</pre>\n<div class=detailHTML>\nReturns a hash code for the specified key, which is always a\nnonnegative integer.  This function is overloaded to support\nall of the primitive types, the C++ <code>string</code> type,\nand pointers.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint hash = hashCode(key);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/hashset.html",
    "content": "<html>\n<head>\n<title>hashset.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>hashset.h</code></h1>\nThis file exports the <code>HashSet</code> class, which\nimplements an efficient abstraction for storing sets of values.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Class</td></tr>\n<tr><td class=indexKey><nobr><a href=\"HashSet-class.html\">HashSet&lt;<var>ValueType</var>&gt;</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class implements an efficient abstraction for storing sets of distinct elements.</td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/ibitstream-class.html",
    "content": "<html>\n\t<head>\n\t\t<title>ibitstream class</title>\n\t\t<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n\t</head>\n\n\t<body>\n\t\t<table class=banner>\n\t\t\t<tr>\n\t\t\t\t<td valign=middle>\n\t\t\t\t\t<image src=\"images/StanfordTreeLogo.png\" height=32>\n\t\t\t\t</td>\n\t\t\t\t<td valign=middle>\n\t\t\t\t\t<div class=bannerText>\n\t\t\t\t\t\tThe Stanford <code>cslib</code> package\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t\t<hr>\n\t\t\n\t\t<div class=include>\n\t\t\t<a href=\"bitstream.html\">#include \"bitstream.h\"</a>\n\t\t</div>\n\n\t\t<h1 class=header>\n\t\t\t<code>class ibitstream : public <a target=\"_blank\" href=\"http://en.cppreference.com/w/cpp/io/basic_istream\">std::istream</a></code>\n\t\t</h1>\n\n\t\t<p>\n\t\t\tThis base class reads bits of data from various input sources.\n\t\t\tThis is an abstract base class that inherits from the standard C++ <code>istream</code> class.\n\t\t\tYou are not likely to want to construct an <code>ibitstream</code> directly.\n\t\t\tInstead, you should probably construct an <code>ifbitstream</code> to read from a file, or an <code>istringbitstream</code> to read from the bytes of a string buffer.\n\t\t</p>\n\t\t\n\t\t<p class=\"since\">\n\t\t\tAvailable since: 2014/02/01 version of C++ library\n\t\t</p>\n\t\t\n\t\t<table class=index width=100%>\n\t\t\t<tr>\n\t\t\t\t<td class=indexHead colspan=2>\n\t\t\t\t\tMethods\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Method:readBit\">readBit()</a>&nbsp;</nobr></td>\n\t\t\t\t<td class=indexSynopsis width=100%>\n\t\t\t\t\tReads a single bit from the bit stream and returns 0 or 1 depending on the bit value.\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\n\t\t<h2>Method detail</h2>\n\t\t<hr>\n\t\t<a name=\"Method:readBit\"></a>\n\t\t<pre class=detailCode>\nint readBit();\n</pre>\n\t\t<div class=detailHTML>\n\t\t\tReads a single bit from the bit stream and returns 0 or 1 depending on the bit value.\n\t\t\tIf the stream is exhausted, -1 is returned.\n\t\t\tRaises an error if this bit stream has not been properly opened.\n\t\t\t<p>Usage:<br>\n\t\t</div>\n\t\t<pre class=usageCode>\nint bit = stream.readBit();\n</pre>\n\t\t<hr>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/ifbitstream-class.html",
    "content": "<html>\n\t<head>\n\t\t<title>ifbitstream class</title>\n\t\t<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n\t</head>\n\n\t<body>\n\t\t<table class=banner>\n\t\t\t<tr>\n\t\t\t\t<td valign=middle>\n\t\t\t\t\t<image src=\"images/StanfordTreeLogo.png\" height=32>\n\t\t\t\t</td>\n\t\t\t\t<td valign=middle>\n\t\t\t\t\t<div class=bannerText>\n\t\t\t\t\t\tThe Stanford <code>cslib</code> package\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t\t<hr>\n\n\t\t<div class=include>\n\t\t\t<a href=\"bitstream.html\">#include \"bitstream.h\"</a>\n\t\t</div>\n\n\t\t<h1 class=header>\n\t\t\t<code>class ifbitstream : public <a href=\"ibitstream-class.html\">ibitstream</a></code>\n\t\t</h1>\n\n\t\t<p>\n\t\t\tThis class reads bits of data from input files.\n\t\t\tThis class inherits from the <code>ibitstream</code> class.\n\t\t</p>\n\n\t\t<p class=\"since\">\n\t\t\tAvailable since: 2014/02/01 version of C++ library\n\t\t</p>\n\n\t\t<table class=index width=100%>\n\t\t\t<tr>\n\t\t\t\t<td class=indexHead colspan=2>\n\t\t\t\t\tConstructors\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Constructor:ifbitstream1\">ifbitstream()</a>&nbsp;</nobr></td>\n\t\t\t\t<td class=indexSynopsis width=100%>\n\t\t\t\t\tConstructs a new bit stream that is not attached to any file.\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Constructor:ifbitstream2\">ifbitstream(<var>filename</var>)</a>&nbsp;</nobr></td>\n\t\t\t\t<td class=indexSynopsis width=100%>\n\t\t\t\t\tConstructs a new bit stream that reads the specified file.\n\t\t\t\t</td>\n\t\t\t</tr>\n\n\t\t\t<tr>\n\t\t\t\t<td class=indexHead colspan=2>\n\t\t\t\t\tMethods\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Method:close\">close()</a>&nbsp;</nobr></td>\n\t\t\t\t<td class=indexSynopsis width=100%>\n\t\t\t\t\tCloses the currently-opened file, if the stream is open.\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Method:open\">open(<var>filename</var>)</a>&nbsp;</nobr></td>\n\t\t\t\t<td class=indexSynopsis width=100%>\n\t\t\t\t\tOpens the specified file for reading.\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Method:readBit\">readBit()</a>&nbsp;</nobr></td>\n\t\t\t\t<td class=indexSynopsis width=100%>\n\t\t\t\t\tReads a single bit from the bit stream and returns 0 or 1 depending on the bit value.\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\n\t\t<h2>Constructor detail</h2>\n\t\t<hr>\n\t\t<a name=\"Constructor:ifbitstream1\"></a>\n\t\t<pre class=detailCode>\nifbitstream();\n</pre>\n\t\t<div class=detailHTML>\n\t\t\tConstructs a new bit stream that is not attached to any file.\n\t\t\tYou can open a file for reading using the <code>open</code> member function.\n\t\t\t<p>Usage:<br>\n\t\t</div>\n\t\t<pre class=usageCode>\nifbitstream stream;\n</pre>\n\t\t<hr>\n\t\t<a name=\"Constructor:ifbitstream2\"></a>\n\t\t<pre class=detailCode>\nifbitstream(const char* filename);\nifbitstream(string filename);\n</pre>\n\t\t<div class=detailHTML>\n\t\t\tConstructs a new bit stream that reads the specified file, if it exists.\n\t\t\tIf not, the stream enters an error state.\n\t\t\t<p>Usage:<br>\n\t\t</div>\n\t\t<pre class=usageCode>\nifbitstream stream(filename);\n</pre>\n\t\t<hr>\n\n\t\t<h2>Method detail</h2>\n\t\t<hr>\n\t\t<a name=\"Method:close\"></a>\n\t\t<pre class=detailCode>\nvoid close();\n</pre>\n\t\t<div class=detailHTML>\n\t\t\tCloses the currently-opened file, if the stream is open.\n\t\t\tIf the stream is not open, puts the stream into a fail state.\n\t\t\t<p>Usage:<br>\n\t\t</div>\n\t\t<pre class=usageCode>\nstream.close();\n</pre>\n\t\t<hr>\n\t\t<a name=\"Method:open\"></a>\n\t\t<pre class=detailCode>\nvoid open(const char* filename);\nvoid open(string filename);\n</pre>\n\t\t<div class=detailHTML>\n\t\t\tOpens the specified file for reading.\n\t\t\tIf an error occurs, the stream enters a failure state, which can be detected by calling the <code>fail</code> member function.\n\t\t\t<p>Usage:<br>\n\t\t</div>\n\t\t<pre class=usageCode>\nstream.open(filename);\n</pre>\n\t\t<hr>\n\t\t<a name=\"Method:readBit\"></a>\n\t\t<pre class=detailCode>\nint readBit();\n</pre>\n\t\t<div class=detailHTML>\n\t\t\tReads a single bit from the ifbitstream and returns 0 or 1 depending on the bit value.\n\t\t\tIf the stream is exhausted, -1 is returned.\n\t\t\tRaises an error if this bit stream has not been properly opened.\n\t\t\t<p>Usage:<br>\n\t\t</div>\n\t\t<pre class=usageCode>\nint bit = stream.readBit();\n</pre>\n\t\t<hr>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/index.html",
    "content": "<html>\n<head>\n<title>The Stanford C++ Libraries</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford C++ Libraries\n</div></td>\n</tr></table>\n<hr>\n\n<h2>Description:</h2>\n\n<p>\n\tThe Stanford C++ libraries were originally developed by Stanford Professor <strong>Eric Roberts</strong>, with the assistance of Julie Zelenski, Keith Schwarz, and other Stanford colleagues.\n\tThis documentation describes an unofficial modified version of the Stanford C++ libraries that is currently being used in Stanford's CS 106B/X courses.\n\tThis unofficial modified version is written and maintained by <strong>Marty Stepp</strong> (stepp AT stanford DOT edu).\n</p>\n\n<p>\n\tPrevious versions of the C++ library used a Java backend called spl.jar to implement graphics and other functionality.\n\tThe current version of the library now uses a new Qt-based GUI subsystem written by Marty Stepp that operates completely in C++.\n\tThis means that the library no longer requires a Java JDK installation or spl.jar.\n\tThe Qt C++ GUI system is new and may have some bugs as we integrate it into our project.\n\tPlease report any bugs you find and/or submit a pull request!\n</p>\n\n<hr />\n\n<h2>Support:</h2>\n\n<p>\n\tWe are sorry to say that we cannot offer support for the libraries to non-Stanford users at this time.\n\tYou are welcome to use the libraries, but we cannot help with compiler issues or answer other technical questions.\n</p>\n\n<hr />\n\n<h2>Downloads:</h2>\n\n<p>\n\tDownload the latest version of the modified C++ libraries here:\n</p>\n\n<ul>\n\t<li>\n\t\t<a href=\"dist/StanfordCPPLib.zip\"><img src=\"images/icon_zip.gif\" width=16 height=16 />\n\t\tStanfordCPPLib.zip</a> (last updated: 2019/08/13)\n\t</li>\n\t<li>\n\t\t<a href=\"dist/empty-project.zip\"><img src=\"images/icon_zip.gif\" width=16 height=16 />\n\t\tempty-project.zip</a> (last updated: 2019/08/13) - Qt Creator project .zip file containing the above libraries\n\t</li>\n\t<li>\n\t\t<a href=\"dist/empty-project.pro\"><img src=\"images/icon_pro.gif\" width=16 height=16 />\n\t\tempty-project.pro</a> (last updated: 2019/04/23) - Qt Creator project .pro file for the above libraries; also included in the .zip\n\t</li>\n\t<li>\n\t\t<a href=\"dist/spl.jar\"><img src=\"images/icon_jar.gif\" width=16 height=16 />\n\t\tspl.jar</a> (last updated: 2018/07/16) - Java back-end, also usable as Stanford Java library acm.jar / spl.jar for CS 106A Java projects\n\t</li>\n\t<li>\n\t\t<a href=\"https://github.com/stepp/stanford-cpp-library\"><span style=\"padding-right: 16px;\"></span>\n\t\tGitHub repository</a> for development of the Stanford C++ libraries\n\t\t(want to improve the libraries?  Submit a pull request!)\n\t</li>\n\t\n\t<li>\n\t\t<a class=\"popup\" href=\"https://web.stanford.edu/dept/cs_edu/qt-creator/qt-creator.shtml\">Stanford's Qt Creator installation instructions</a>\n\t\t(we recommend Qt Creator for projects based on these libraries)\n\t</li>\n</ul>\n\n<hr>\n\n<h2>Documentation:</h2>\n\nThe <code>StanfordCPPLib</code> package defines a set of libraries that make it easier to write programs in C++.\nThe facilities provided by these libraries can be broken down into the following groups:\n\n<ol>\n<li><b><i>Function libraries.</i></b>\nSeveral of the interfaces\n(<a href=\"console.html\"><code>console.h</code></a>,\n<a href=\"direction.html\"><code>direction.h</code></a>,\n<a href=\"error.html\"><code>error.h</code></a>,\n<a href=\"filelib.html\"><code>filelib.h</code></a>,\n<a href=\"gmath.html\"><code>gmath.h</code></a>,\n<a href=\"random.html\"><code>random.h</code></a>,\n<a href=\"regexpr.html\"><code>regexpr.h</code></a>,\n<a href=\"simpio.html\"><code>simpio.h</code></a>,\n<a href=\"strlib.html\"><code>strlib.h</code></a>\nexport collections of free functions instead of classes.\n\n<ul>\n\t<li>\n\t\t<a href=\"functions.html\">Complete list of global functions</a>, by file header\n\t</li>\n\t<li>\n\t\t<a href=\"variables.html\">Complete list of global variables/macros</a>, by file header\n\t</li>\n</ul>\n\n<p><li><b><i>Collection classes.</i></b>\nSeveral of the classes\n(<a href=\"BasicGraph-class.html\"><code>BasicGraph</code></a>,\n<a href=\"DawgLexicon-class.html\"><code>DawgLexicon</code></a>,\n<a href=\"Deque-class.html\"><code>Deque</code></a>,\n<a href=\"Graph-class.html\"><code>Graph</code></a>,\n<a href=\"Grid-class.html\"><code>Grid</code></a>,\n<a href=\"HashMap-class.html\"><code>HashMap</code></a>,\n<a href=\"HashSet-class.html\"><code>HashSet</code></a>,\n<a href=\"Lexicon-class.html\"><code>Lexicon</code></a>,\n<a href=\"LinkedHashMap-class.html\"><code>LinkedHashMap</code></a>,\n<a href=\"LinkedHashSet-class.html\"><code>LinkedHashSet</code></a>,\n<a href=\"LinkedList-class.html\"><code>LinkedList</code></a>,\n<a href=\"Map-class.html\"><code>Map</code></a>,\n<a href=\"PriorityQueue-class.html\"><code>PriorityQueue</code></a>,\n<a href=\"Queue-class.html\"><code>Queue</code></a>,\n<a href=\"Set-class.html\"><code>Set</code></a>,\n<a href=\"SparseGrid-class.html\"><code>SparseGrid</code></a>,\n<a href=\"Stack-class.html\"><code>Stack</code></a>,\n<a href=\"Vector-class.html\"><code>Vector</code></a>)\nrepresent collections of other objects.\nThese collections work in much the same way as the similar classes in\nthe Standard Template Library (STL).\n\n<p><li><b><i>Graphics classes.</i></b>\nMost of the classes in the <code>StanfordCPPLib</code> package are used\nto support graphics.  These classes can themselves be broken down into\nthe following categories:\n\n<ul>\n<li>The <a href=\"doxygen/classGWindow.html\"><code>GWindow</code></a> class,\nwhich represents a window that appears on the display screen\n\n<li>A collection of graphics objects, each of which is a subclass of\n<a href=\"doxygen/classGObject.html\"><code>GObject</code></a>\n(<a href=\"doxygen/classG3DRect.html\"><code>G3DRect</code></a>,\n<a href=\"doxygen/classGArc.html\"><code>GArc</code></a>,\n<a href=\"doxygen/classGCompound.html\"><code>GCompound</code></a>,\n<a href=\"doxygen/classGImage.html\"><code>GImage</code></a>,\n<a href=\"doxygen/classGLine.html\"><code>GLine</code></a>,\n<a href=\"doxygen/classGOval.html\"><code>GOval</code></a>,\n<a href=\"doxygen/classGPolygon.html\"><code>GPolygon</code></a>,\n<a href=\"doxygen/classGRect.html\"><code>GRect</code></a>,\n<a href=\"doxygen/classGRoundRect.html\"><code>GRoundRect</code></a>\n<a href=\"doxygen/classGText.html\"><code>GText</code></a>)\n\n<li>A set of onscreen interactors\n(<a href=\"doxygen/classGBrowserPane.html\"><code>GBrowserPane</code></a>,\n<a href=\"doxygen/classGButton.html\"><code>GButton</code></a>,\n<a href=\"doxygen/classGCanvas.html\"><code>GCanvas</code></a>,\n<a href=\"doxygen/classGCheckBox.html\"><code>GCheckBox</code></a>,\n<a href=\"doxygen/classGChooser.html\"><code>GChooser</code></a>,\n<a href=\"doxygen/classGColor.html\"><code>GColor</code></a>,\n<a href=\"doxygen/classGColorChooser.html\"><code>GColorChooser</code></a>,\n<a href=\"doxygen/classGConsoleWindow.html\"><code>GConsoleWindow</code></a>,\n<a href=\"doxygen/classGContainer.html\"><code>GContainer</code></a>,\n<a href=\"doxygen/classGFileChooser.html\"><code>GFileChooser</code></a>,\n<a href=\"doxygen/classGFont.html\"><code>GFont</code></a>,\n<a href=\"doxygen/classGLabel.html\"><code>GLabel</code></a>,\n<a href=\"doxygen/classGOptionPane.html\"><code>GOptionPane</code></a>,\n<a href=\"doxygen/classGRadioButton.html\"><code>GRadioButton</code></a>,\n<a href=\"doxygen/classGScrollBar.html\"><code>GScrollBar</code></a>,\n<a href=\"doxygen/classGScrollPane.html\"><code>GScrollPane</code></a>,\n<a href=\"doxygen/classGSlider.html\"><code>GSlider</code></a>,\n<a href=\"doxygen/classGTable.html\"><code>GTable</code></a>,\n<a href=\"doxygen/classGTextArea.html\"><code>GTextArea</code></a>,\n<a href=\"doxygen/classGTextField.html\"><code>GTextField</code></a>)\n\n<li>A class for fielding events\n(<a href=\"classGEvent.html\"><code>GEvent</code></a>)\n\n<li>A set of classes to encapsulate geometric information\n(<a href=\"classGDimension.html\"><code>GDimension</code></a>,\n<a href=\"classGPoint.html\"><code>GPoint</code></a>,\n<a href=\"classGRectangle.html\"><code>GRectangle</code></a>)\n</ul>\n\n<br><li><b><i>Utility classes.</i></b>\nThe libraries also export several utility classes that don&rsquo;t\nfit easily into the other categories\n(<a href=\"ErrorException-class.html\"><code>ErrorException</code></a>,\n<a href=\"Point-class.html\"><code>Point</code></a>,\n<a href=\"Sound-class.html\"><code>Sound</code></a>,\n<a href=\"TokenScanner-class.html\"><code>TokenScanner</code></a>).\n</ol>\n\n<p>Additional documentation appears in the web pages for the individual\nclasses, along with sample code.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Classes</td></tr>\n<tr><td class=indexKey><nobr><a href=\"BasicGraph-class.html\">BasicGraph</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class is used to represent a graph, building on the <code>Graph</code> class.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"DawgLexicon-class.html\">DawgLexicon</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class is used to represent a <b><i>lexicon,</i></b> or word list.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"Deque-class.html\">Deque</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class is used to represent a <b><i>deque,</i></b> or double-ended queue.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"Edge-class.html\">Edge</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class represents edges (arcs) in a graph.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"ErrorException-class.html\">ErrorException</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This exception is thrown by calls to the <code>error</code> function.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classG3DRect.html\">G3DRect</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This graphical object subclass represents a rectangular box that can be raised or lowered.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGArc.html\">GArc</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This graphical object subclass represents an elliptical arc.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGBrowserPane.html\">GBrowserPane</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interactor subclass represents a richly formatted pane that can render HTML pages.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGButton.html\">GButton</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interactor subclass represents an onscreen button.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGCanvas.html\">GCanvas</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class implements a 2D region of colored pixels that can be read/set individually.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGCheckBox.html\">GCheckBox</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interactor subclass represents an onscreen check box.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGChooser.html\">GChooser</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interactor subclass represents a selectable list.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGClipboard.html\">GClipboard</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class contains utility methods for copying and pasting text from the system clipboard.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGColor.html\">GColor</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class contains utility methods for working with colors.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGColorChooser.html\">GColorChooser</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class represents a dialog box for selecting a color from a swatch.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGCompound.html\">GCompound</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This graphical object subclass consists of a collection of other graphical objects.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGConsoleWindow.html\">GConsoleWindow</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class represents our onscreen graphical console window.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGContainer.html\">GContainer</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class represents layout containers for graphical interactors.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGDimension.html\">GDimension</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class contains real-valued width and height fields.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGDownloader.html\">GDownloader</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class helps download resources from URLs.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGEvent.html\">GEvent</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class is the root of the hierarchy for all events.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGFileChooser.html\">GFileChooser</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class represents a dialog box for selecting a file.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGFont.html\">GFont</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class contains utility methods for working with fonts.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGFontChooser.html\">GFontChooser</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class represents a dialog box for selecting a font from a list.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGImage.html\">GImage</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This graphical object subclass represents an image from a file.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGInteractor.html\">GInteractor</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This abstract class is the superclass for all graphical interactors.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGLabel.html\">GLabel</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This graphical object subclass represents a text string.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGLine.html\">GLine</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This graphical object subclass represents a line segment.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGObject.html\">GObject</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class is the common superclass of all graphical objects that can be displayed on a graphical window.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGOptionPane.html\">GOptionPane</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class represents graphical input/output dialog boxes that can be popped up on the screen.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGOval.html\">GOval</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This graphical object subclass represents an oval inscribed in a rectangular box.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGPoint.html\">GPoint</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class contains real-valued x and y fields.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGPolygon.html\">GPolygon</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This graphical object subclass represents a polygon bounded by line segments.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"Graph-class.html\">Graph&lt;<var>NodeType</var>,&nbsp;<var>ArcType</var>&gt;</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class represents a graph with the specified node and arc types.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGRadioButton.html\">GRadioButton</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class represents a checkable circle button that is part of a mutually exclusive group.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGRect.html\">GRect</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class represents a graphical object whose appearance consists of a rectangular box.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGRectangle.html\">GRectangle</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This type contains real-valued x, y, width, and height fields.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"Grid-class.html\">Grid&lt;<var>ValueType</var>&gt;</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class stores an indexed, two-dimensional array.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGRoundRect.html\">GRoundRect</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class represents a graphical object whose appearance consists of a rectangular box with rounded corners.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGScrollBar.html\">GScrollBar</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interactor subclass represents a vertical or horizontal scroll bar.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGScrollPane.html\">GScrollPane</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interactor subclass represents a container that can wrap vertical and/or horizontal scroll bars around another interactor.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGSlider.html\">GSlider</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interactor subclass represents an onscreen slider.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGTable.html\">GTable</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interactor subclass represents a 2D editable table of rows and columns.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGTextArea.html\">GTextArea</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interactor subclass represents a multi-line text field for entering long text strings.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGTextField.html\">GTextField</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interactor subclass represents a one-line text field for entering short text strings.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGThread.html\">GThread</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class represents threads used for parallel execution.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGTimer.html\">GTimer</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class implements a simple interval timer that generates a <code>GTimerEvent</code> with a specified frequency.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classGWindow.html\">GWindow</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class represents a graphics window that supports simple graphics.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"HashMap-class.html\">HashMap&lt;<var>KeyType</var>,&nbsp;<var>ValueType</var>&gt;</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class implements an efficient association between <b><i>keys</i></b> and <b><i>values</i></b>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"HashSet-class.html\">HashSet&lt;<var>ValueType</var>&gt;</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class implements an efficient abstraction for storing sets of distinct elements.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"ibitstream-class.html\">ibitstream</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This base class reads bits of data from various input sources.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"ifbitstream-class.html\">ifbitstream</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class reads bits of data from input files.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"istringbitstream-class.html\">istringbitstream</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class reads bits of data from the characters of a string.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"doxygen/classiurlstream.html\">iurlstream</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class reads bytes of data from the web using URLs.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"Lexicon-class.html\">Lexicon</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class is used to represent a <b><i>lexicon,</i></b> or word list.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"LinkedHashMap-class.html\">LinkedHashMap&lt;<var>KeyType</var>,&nbsp;<var>ValueType</var>&gt;</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class implements an efficient association between <b><i>keys</i></b> and <b><i>values</i></b> and remembers the order of insertion.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"LinkedHashSet-class.html\">LinkedHashSet&lt;<var>ValueType</var>&gt;</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class implements an efficient abstraction for storing sets of distinct elements and remembers the order of insertion.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"LinkedList-class.html\">LinkedList&lt;<var>ValueType</var>&gt;</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class stores an ordered list of values similar to an array or vector.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"Lock-class.html\">Lock</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class represents a simple lock used to control concurrency.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"Map-class.html\">Map&lt;<var>KeyType</var>,&nbsp;<var>ValueType</var>&gt;</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class maintains an association between <b><i>keys</i></b> and <b><i>values</i></b>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"obitstream-class.html\">obitstream</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This base class writes bits of data to various output sources.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"ofbitstream-class.html\">ofbitstream</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class writes bits of data to output files.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"ostringbitstream-class.html\">ostringbitstream</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class writes bits of data into an internal string buffer.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"Point-class.html\">Point</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class represents an <i>x</i>-<i>y</i> coordinate point on a two-dimensional integer grid.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"PriorityQueue-class.html\">PriorityQueue&lt;<var>ValueType</var>&gt;</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class models a structure called a <b><i>priority&nbsp;queue</i></b> in which values are processed in order of priority.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"Queue-class.html\">Queue&lt;<var>ValueType</var>&gt;</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class models a linear structure called a <b><i>queue</i></b> in which values are added at one end and removed from the other.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"Set-class.html\">Set&lt;<var>ValueType</var>&gt;</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class stores a collection of distinct elements.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"Sound-class.html\">Sound</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class encapsulates a sound file.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"SparseGrid-class.html\">SparseGrid&lt;<var>ValueType</var>&gt;</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class stores an indexed, two-dimensional array.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"Stack-class.html\">Stack&lt;<var>ValueType</var>&gt;</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class models a linear structure called a <b><i>stack</i></b> in which values are added and removed only from one end.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"Timer-class.html\">Timer</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class measures intervals of time while a program is running.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"TokenScanner-class.html\">TokenScanner</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class divides a string into individual tokens.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"Vector-class.html\">Vector&lt;<var>ValueType</var>&gt;</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class stores an ordered list of values similar to an array.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"Vertex-class.html\">Vertex</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class represents vertices (nodes) in a graph.</td></tr>\n</table>\n\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Interface files</td></tr>\n<tr><td class=indexKey><nobr><a href=\"basicgraph.html\">basicgraph.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file exports a parameterized <code>BasicGraph</code> class used to represent basic <b><i>graphs,</i></b> which consist of a set of <b><i>vertexes</i></b> and a set of <b><i>edges</i></b>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"bitstream.html\">bitstream.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file exports the bit I/O stream classes, including <code>ibitstream</code>, <code>ifbitstream</code>, <code>istringbitstream</code>, <code>obitstream</code>, <code>ofbitstream</code>, and <code>ostringbitstream</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"console.html\">console.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file redirects the <code>cin</code>, <code>cout</code>, and <code>cerr</code> channels to use a console window.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"dawglexicon.html\">dawglexicon.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file exports the <code>DawgLexicon</code> class, which is a compact structure for storing a list of words.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"deque.html\">deque.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file exports the <code>Deque</code> class, which is a double-ended queue.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"direction.html\">direction.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file exports an enumerated type called <code>Direction</code> whose elements are the four compass points: <code>NORTH</code>, <code>EAST</code>, <code>SOUTH</code>, and <code>WEST</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"error.html\">error.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file defines the <code>ErrorException</code> class and the <code>error</code> function.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"filelib.html\">filelib.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file exports a standardized set of tools for working with files.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"gevent.html\">gevent.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file defines the event types used in the StanfordCPPLib graphics libraries.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"ginteractors.html\">ginteractors.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file exports a hierarchy of graphical interactors similar to those provided in the Java Swing libraries.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"gmath.html\">gmath.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file exports several functions for working with graphical geometry along with the mathematical constants <code>PI</code> and <code>E</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"gobjects.html\">gobjects.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file exports a hierarchy of graphical shapes based on the model developed for the ACM Java Graphics.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"graph.html\">graph.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file exports a parameterized <code>Graph</code> class used to represent <b><i>graphs,</i></b> which consist of a set of <b><i>nodes</i></b> and a set of <b><i>arcs</i></b>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"grid.html\">grid.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file exports the <code>Grid</code> class, which offers a convenient abstraction for representing a two-dimensional array.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"gtimer.html\">gtimer.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file defines the <code>GTimer</code> class, which implements a general interval timer.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"gtypes.html\">gtypes.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file defines classes for representing points, dimensions, and rectangles.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"gwindow.html\">gwindow.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file defines the <code>GWindow</code> class which supports drawing graphical objects on the screen.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"hashmap.html\">hashmap.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file exports the <code>HashMap</code> class, which stores a set of <i>key</i>-<i>value</i> pairs.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"hashset.html\">hashset.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file exports the <code>HashSet</code> class, which implements an efficient abstraction for storing sets of values.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"lexicon.html\">lexicon.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file exports the <code>Lexicon</code> class, which is a compact structure for storing a list of words.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"linkedhashmap.html\">linkedhashmap.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file exports the <code>LinkedHashMap</code> class, which stores a set of <i>key</i>-<i>value</i> pairs in order of insertion.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"linkedhashset.html\">linkedhashset.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file exports the <code>LinkedHashSet</code> class, which implements an efficient abstraction for storing sets of values in order of insertion.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"linkedlist.html\">linkedlist.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file exports the <code>LinkedList</code> class, which provides an efficient, safe, convenient replacement for the array type in C++.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"map.html\">map.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file exports the template class <code>Map</code>, which maintains a collection of <i>key</i>-<i>value</i> pairs.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"point.html\">point.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file exports a class representing an integer-valued <i>x</i>-<i>y</i> pair.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"pqueue.html\">pqueue.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file exports the <code>PriorityQueue</code> class, a collection in which values are processed in priority order.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"queue.html\">queue.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file exports the <code>Queue</code> class, a collection in which values are ordinarily processed in a first-in/first-out (FIFO) order.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"random.html\">random.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file exports functions for generating pseudorandom numbers.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"regexpr.html\">regexpr.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file exports functions for processing regular expressions operations on C++ strings.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"set.html\">set.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file exports the <code>Set</code> class, which implements a collection for storing a set of distinct elements.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"shuffle.html\">shuffle.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file exports a set of functions that randomly rearrange arrays, grids, and vectors.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"simpio.html\">simpio.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file exports a set of functions that simplify input/output operations in C++ and provide some error-checking on console input.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"sound.html\">sound.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file defines a class that represents a sound.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"sparsegrid.html\">sparsegrid.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file exports the <code>SparseGrid</code> class, which offers a convenient abstraction for representing a two-dimensional array.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"stack.html\">stack.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file exports the <code>Stack</code> class, which implements a collection that processes values in a last-in/first-out (LIFO) order.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"strlib.html\">strlib.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file exports several useful string functions that are not included in the C++ string library.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"timer.html\">timer.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file exports a class for measuring intervals of time.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"tokenscanner.html\">tokenscanner.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file exports a <code>TokenScanner</code> class that divides a string into individual logical units called <b><i>tokens</i></b>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"vector.html\">vector.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file exports the <code>Vector</code> class, which provides an efficient, safe, convenient replacement for the array type in C++.</td></tr>\n</table>\n\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/istringbitstream-class.html",
    "content": "<html>\n\t<head>\n\t\t<title>istringbitstream class</title>\n\t\t<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n\t</head>\n\n\t<body>\n\t\t<table class=banner>\n\t\t\t<tr>\n\t\t\t\t<td valign=middle>\n\t\t\t\t\t<image src=\"images/StanfordTreeLogo.png\" height=32>\n\t\t\t\t</td>\n\t\t\t\t<td valign=middle>\n\t\t\t\t\t<div class=bannerText>\n\t\t\t\t\t\tThe Stanford <code>cslib</code> package\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t\t<hr>\n\n\t\t<div class=include>\n\t\t\t<a href=\"bitstream.html\">#include \"bitstream.h\"</a>\n\t\t</div>\n\n\t\t<h1 class=header>\n\t\t\t<code>class istringbitstream : public <a href=\"ibitstream-class.html\">ibitstream</a></code>\n\t\t</h1>\n\n\t\t<p>\n\t\t\tThis class reads bits of data from string buffers.\n\t\t\tThis class inherits from the <code>ibitstream</code> class.\n\t\t</p>\n\n\t\t<p class=\"since\">\n\t\t\tAvailable since: 2014/02/01 version of C++ library\n\t\t</p>\n\n\t\t<table class=index width=100%>\n\t\t\t<tr>\n\t\t\t\t<td class=indexHead colspan=2>\n\t\t\t\t\tConstructors\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Constructor:istringbitstream\">istringbitstream(<var>s</var>)</a>&nbsp;</nobr></td>\n\t\t\t\t<td class=indexSynopsis width=100%>\n\t\t\t\t\tConstructs a new bit stream that reads the bytes of the specified string as its input data.\n\t\t\t\t</td>\n\t\t\t</tr>\n\n\t\t\t<tr>\n\t\t\t\t<td class=indexHead colspan=2>\n\t\t\t\t\tMethods\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Method:readBit\">readBit()</a>&nbsp;</nobr></td>\n\t\t\t\t<td class=indexSynopsis width=100%>\n\t\t\t\t\tReads a single bit from the bit stream and returns 0 or 1 depending on the bit value.\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Method:str\">str(<var>s</var>)</a>&nbsp;</nobr></td>\n\t\t\t\t<td class=indexSynopsis width=100%>\n\t\t\t\t\tSets the underlying string of the bit stream.\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\n\t\t<h2>Constructor detail</h2>\n\t\t<hr>\n\t\t<a name=\"Constructor:istringbitstream\"></a>\n\t\t<pre class=detailCode>\nistringbitstream(string s = &quot;&quot;);\n</pre>\n\t\t<div class=detailHTML>\n\t\t\tConstructs a new bit stream that reads the bytes of the specified string as its input data.\n\t\t\t<p>Usage:<br>\n\t\t</div>\n\t\t<pre class=usageCode>\nistringbitstream stream(s);\n</pre>\n\t\t<hr>\n\n\t\t<h2>Method detail</h2>\n\t\t<hr>\n\t\t<a name=\"Method:readBit\"></a>\n\t\t<pre class=detailCode>\nint readBit();\n</pre>\n\t\t<div class=detailHTML>\n\t\t\tReads a single bit from the istringbitstream and returns 0 or 1 depending on the bit value.\n\t\t\tIf the stream is exhausted, -1 is returned.\n\t\t\tRaises an error if this bit stream has not been properly opened.\n\t\t\t<p>Usage:<br>\n\t\t</div>\n\t\t<pre class=usageCode>\nint bit = stream.readBit();\n</pre>\n\t\t<hr>\n\t\t<a name=\"Method:str\"></a>\n\t\t<pre class=detailCode>\nvoid str(string s);\n</pre>\n\t\t<div class=detailHTML>\n\t\t\tSets the underlying string of the bit stream.\n\t\t\tFuture calls to <code>readBit</code> will read bits from the bytes of this string.\n\t\t\t<p>Usage:<br>\n\t\t</div>\n\t\t<pre class=usageCode>\nstream.str(s);\n</pre>\n\t\t<hr>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/lexicon.html",
    "content": "<html>\n<head>\n<title>lexicon.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>lexicon.h</code></h1>\nThis file exports the <code>Lexicon</code> class, which is a\ncompact structure for storing a list of words.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Class</td></tr>\n<tr><td class=indexKey><nobr><a href=\"Lexicon-class.html\">Lexicon</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class is used to represent a <b><i>lexicon,</i></b> or word list.</td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/linkedhashmap.html",
    "content": "<html>\n<head>\n<title>linkedhashmap.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>linkedhashmap.h</code></h1>\nThis file exports the <code>LinkedHashMap</code> class, which stores a set of <i>key</i>-<i>value</i> pairs.\n\nA <code>LinkedHashMap</code> is the same as a <code>HashMap</code>, except that it exposes its key/value pairs in the order they were inserted, rather than in the unpredictable order of a standard <code>HashMap</code>.\nThis is accomplished by storing the data in two ways internally: (1) in a hash table array, as in a <code>HashMap</code>; and (2) in a linear list of keys, to remember the insertion order.\nA <code>LinkedHashMap</code> provides identical lookup (<code>containsKey</code> / <code>get</code> / <code>operator []</code>) speed, nearly the same insertion (<code>add</code> / <code>put</code>) speed, and slower removal (<code>remove</code>) speed.\nIts for-each loop and iterators emit the keys in the order they were added to the map, at the cost of the additional memory usage of the internal list.\n\n\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Class</td></tr>\n<tr><td class=indexKey><nobr><a href=\"LinkedHashMap-class.html\">LinkedHashMap&lt;<var>KeyType</var>,&nbsp;<var>ValueType</var>&gt;</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class implements an efficient association between <b><i>keys</i></b> and <b><i>values</i></b>.</td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/linkedhashset.html",
    "content": "<html>\n<head>\n<title>linkedhashset.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>linkedhashset.h</code></h1>\nThis file exports the <code>LinkedHashSet</code> class, which implements an efficient abstraction for storing sets of values.\nA <code>LinkedHashSet</code> is the same as a <code>HashSet</code>, except that it exposes its values in the order they were inserted, rather than in the unpredictable order of a standard <code>HashSet</code>.\nThis is accomplished by storing the data in two ways internally: (1) in a hash table array, as in a <code>HashSet</code>; and (2) in a linear list, to remember the insertion order.\nA <code>LinkedHashSet</code> provides identical lookup (<code>contains</code>) speed, nearly the same insertion (<code>add</code>) speed, and slower removal (<code>remove</code>) speed.\nIts for-each loop and iterators emit the elements in the order they were added to the set, at the cost of the additional memory usage of the internal list.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Class</td></tr>\n<tr><td class=indexKey><nobr><a href=\"LinkedHashSet-class.html\">LinkedHashSet&lt;<var>ValueType</var>&gt;</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class implements an efficient abstraction for storing sets of distinct elements and remembering insertion order.</td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/linkedlist.html",
    "content": "<html>\n<head>\n<title>linkedlist.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>linkedlist.h</code></h1>\nThis file exports the <code>LinkedList</code> class, which is an implementation of a linked list structure that provides a similar set of operations to the <code>Vector</code> class, but with a linked list as its internal representation.\nThis means that the linked list is more efficient for certain operations, such as repeatedly adding/removing at the front of the list, while it is slower for other operations, such as retrieving/modifying arbitrary indexes in the middle of the list.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Class</td></tr>\n<tr><td class=indexKey><nobr><a href=\"LinkedList-class.html\">LinkedList&lt;<var>ValueType</var>&gt;</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class stores an ordered list of values similar to an array or <code>Vector</code>.</td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/map.html",
    "content": "<html>\n<head>\n<title>map.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>map.h</code></h1>\nThis file exports the template class <code>Map</code>, which\nmaintains a collection of <i>key</i>-<i>value</i> pairs.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Class</td></tr>\n<tr><td class=indexKey><nobr><a href=\"Map-class.html\">Map&lt;<var>KeyType</var>,&nbsp;<var>ValueType</var>&gt;</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class maintains an association between <b><i>keys</i></b> and <b><i>values</i></b>.</td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/modifications.html",
    "content": "<html>\n<head>\n<title>List of Modifications</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford C++ Libraries\n</div></td>\n</tr></table>\n<hr>\n\n<h1 class=header>List of Modifications</h1>\n\n<p>\n\tThe purpose of this page is to list all of the changes that have been made to the Stanford C++ libraries over time.\n\tThese changes have been made primarily by current unofficial maintainer, Marty Stepp.\n\tListing those changes here can help current developers and users of the library track down problems or issues that arise due to new or missing functionality.\n</p>\n\n<ul>\n\t<li>\n\t\t<strong>2014/11/13:</strong>\n\t\tLibrary now prints stack traces with line numbers on exceptions / crashes on all platforms.\n\t</li>\n\t<li>\n\t\t<strong>2014/11/13:</strong>\n\t\tCollection libraries updated to contain generic hashCode functions and comparison operators like &lt; and &gt;=.\n\t\tThis will enable nested collections like Set&lt;Vector&lt;int&gt;&gt;.\n\t</li>\n</ul>\n\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/obitstream-class.html",
    "content": "<html>\n\t<head>\n\t\t<title>obitstream class</title>\n\t\t<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n\t</head>\n\n\t<body>\n\t\t<table class=banner>\n\t\t\t<tr>\n\t\t\t\t<td valign=middle>\n\t\t\t\t\t<image src=\"images/StanfordTreeLogo.png\" height=32>\n\t\t\t\t</td>\n\t\t\t\t<td valign=middle>\n\t\t\t\t\t<div class=bannerText>\n\t\t\t\t\t\tThe Stanford <code>cslib</code> package\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t\t<hr>\n\n\t\t<div class=include>\n\t\t\t<a href=\"bitstream.html\">#include \"bitstream.h\"</a>\n\t\t</div>\n\n\t\t<h1 class=header>\n\t\t\t<code>class obitstream : public <a target=\"_blank\" href=\"http://en.cppreference.com/w/cpp/io/basic_ostream\">std::ostream</a></code>\n\t\t</h1>\n\n\t\t<p>\n\t\t\tThis base class writes bits of data to various output sources.\n\t\t\tThis is an abstract base class that inherits from the standard C++ <code>ostream</code> class.\n\t\t\tYou are not likely to want to construct an <code>obitstream</code> directly.\n\t\t\tInstead, you should probably construct an <code>ofbitstream</code> to write to a file, or an <code>ostringbitstream</code> to write bits into the bytes of a string buffer.\n\t\t</p>\n\n\t\t<p class=\"since\">\n\t\t\tAvailable since: 2014/02/01 version of C++ library\n\t\t</p>\n\n\t\t<table class=index width=100%>\n\t\t\t<tr>\n\t\t\t\t<td class=indexHead colspan=2>\n\t\t\t\t\tMethods\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Method:writeBit\">writeBit(<var>bit</var>)</a>&nbsp;</nobr></td>\n\t\t\t\t<td class=indexSynopsis width=100%>\n\t\t\t\t\tWrites a single bit to the bit stream.\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\n\t\t<h2>Method detail</h2>\n\t\t<hr>\n\t\t<a name=\"Method:writeBit\"></a>\n\t\t<pre class=detailCode>\nvoid writeBit(int bit);\n</pre>\n\t\t<div class=detailHTML>\n\t\t\tWrites a single bit to the obitstream.\n\t\t\tRaises an error if this bit stream has not been properly opened.\n\t\t\tAlso raises an error if the value passed for the <code>bit</code> parameter is not <code>0</code> or <code>1</code>.\n\t\t\t(Note: A common bug is to pass a <code>char</code> value of <code>'0'</code> or <code>'1'</code>; these are character literals that have the ASCII integer values of 48 and 49 respectively.\n\t\t\tThe <code>char</code> values of <code>'0'</code> and <code>'1'</code> are not the same as the <code>int</code> values <code>0</code> and <code>1</code>.)\n\t\t\t<p>Usage:<br>\n\t\t</div>\n\t\t<pre class=usageCode>\nstream.writeBit(bit);\n</pre>\n\t\t<hr>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/ofbitstream-class.html",
    "content": "<html>\n\t<head>\n\t\t<title>ofbitstream class</title>\n\t\t<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n\t</head>\n\n\t<body>\n\t\t<table class=banner>\n\t\t\t<tr>\n\t\t\t\t<td valign=middle>\n\t\t\t\t\t<image src=\"images/StanfordTreeLogo.png\" height=32>\n\t\t\t\t</td>\n\t\t\t\t<td valign=middle>\n\t\t\t\t\t<div class=bannerText>\n\t\t\t\t\t\tThe Stanford <code>cslib</code> package\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t\t<hr>\n\n\t\t<div class=include>\n\t\t\t<a href=\"bitstream.html\">#include \"bitstream.h\"</a>\n\t\t</div>\n\n\t\t<h1 class=header>\n\t\t\t<code>class ofbitstream : public <a href=\"obitstream-class.html\">obitstream</a></code>\n\t\t</h1>\n\n\t\t<p>\n\t\t\tThis class writes bits of data to input files.\n\t\t\tThis class inherits from the <code>obitstream</code> class.\n\t\t</p>\n\n\t\t<p class=\"since\">\n\t\t\tAvailable since: 2014/02/01 version of C++ library\n\t\t</p>\n\n\t\t<table class=index width=100%>\n\t\t\t<tr>\n\t\t\t\t<td class=indexHead colspan=2>\n\t\t\t\t\tConstructors\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Constructor:ofbitstream1\">ofbitstream()</a>&nbsp;</nobr></td>\n\t\t\t\t<td class=indexSynopsis width=100%>\n\t\t\t\t\tConstructs a new bit stream that is not attached to any file.\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Constructor:ofbitstream2\">ofbitstream(<var>filename</var>)</a>&nbsp;</nobr></td>\n\t\t\t\t<td class=indexSynopsis width=100%>\n\t\t\t\t\tConstructs a new bit stream that writes to the specified file.\n\t\t\t\t</td>\n\t\t\t</tr>\n\n\t\t\t<tr>\n\t\t\t\t<td class=indexHead colspan=2>\n\t\t\t\t\tMethods\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Method:close\">close()</a>&nbsp;</nobr></td>\n\t\t\t\t<td class=indexSynopsis width=100%>\n\t\t\t\t\tCloses the currently-opened file, if the stream is open.\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Method:open\">open(<var>filename</var>)</a>&nbsp;</nobr></td>\n\t\t\t\t<td class=indexSynopsis width=100%>\n\t\t\t\t\tOpens the specified file for writing.\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Method:writeBit\">writeBit()</a>&nbsp;</nobr></td>\n\t\t\t\t<td class=indexSynopsis width=100%>\n\t\t\t\t\tWrites a single bit to the bit stream.\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\n\t\t<h2>Constructor detail</h2>\n\t\t<hr>\n\t\t<a name=\"Constructor:ofbitstream1\"></a>\n\t\t<pre class=detailCode>\nofbitstream();\n</pre>\n\t\t<div class=detailHTML>\n\t\t\tConstructs a new bit stream that is not attached to any file.\n\t\t\tYou can open a file for writing using the <code>open</code> member function.\n\t\t\t<p>Usage:<br>\n\t\t</div>\n\t\t<pre class=usageCode>\nofbitstream stream;\n</pre>\n\t\t<hr>\n\t\t<a name=\"Constructor:ofbitstream2\"></a>\n\t\t<pre class=detailCode>\nofbitstream(const char* filename);\nofbitstream(string filename);\n</pre>\n\t\t<div class=detailHTML>\n\t\t\tConstructs a new bit stream that writes to the specified file, if it exists.\n\t\t\tAny previous contents of the file are overwritten.\n\t\t\tIf the file does not exist, the stream enters an error state.\n\t\t\t<p>Usage:<br>\n\t\t</div>\n\t\t<pre class=usageCode>\nofbitstream stream(filename);\n</pre>\n\t\t<hr>\n\n\t\t<h2>Method detail</h2>\n\t\t<hr>\n\t\t<a name=\"Method:close\"></a>\n\t\t<pre class=detailCode>\nvoid close();\n</pre>\n\t\t<div class=detailHTML>\n\t\t\tCloses the currently-opened file, if the stream is open.\n\t\t\tIf the stream is not open, puts the stream into a fail state.\n\t\t\t<p>Usage:<br>\n\t\t</div>\n\t\t<pre class=usageCode>\nstream.close();\n</pre>\n\t\t<hr>\n\t\t<a name=\"Method:open\"></a>\n\t\t<pre class=detailCode>\nvoid open(const char* filename);\nvoid open(string filename);\n</pre>\n\t\t<div class=detailHTML>\n\t\t\tOpens the specified file for writing.\n\t\t\tAny previous contents of the file are overwritten.\n\t\t\tIf an error occurs, the stream enters a failure state, which can be detected by calling the <code>fail</code> member function.\n\t\t\t<p>Usage:<br>\n\t\t</div>\n\t\t<pre class=usageCode>\nstream.open(filename);\n</pre>\n\t\t<hr>\n\t\t<a name=\"Method:writeBit\"></a>\n\t\t<pre class=detailCode>\nvoid writeBit(int bit);\n</pre>\n\t\t<div class=detailHTML>\n\t\t\tWrites a single bit to the obitstream.\n\t\t\tRaises an error if this bit stream has not been properly opened.\n\t\t\tAlso raises an error if the value passed for the <code>bit</code> parameter is not <code>0</code> or <code>1</code>.\n\t\t\t(Note: A common bug is to pass a <code>char</code> value of <code>'0'</code> or <code>'1'</code>; these are character literals that have the ASCII integer values of 48 and 49 respectively.\n\t\t\tThe <code>char</code> values of <code>'0'</code> and <code>'1'</code> are not the same as the <code>int</code> values <code>0</code> and <code>1</code>.)\n\t\t\t<p>Usage:<br>\n\t\t</div>\n\t\t<pre class=usageCode>\nstream.writeBit(bit);\n</pre>\n\t\t<hr>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/ostringbitstream-class.html",
    "content": "<html>\n\t<head>\n\t\t<title>ostringbitstream class</title>\n\t\t<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n\t</head>\n\n\t<body>\n\t\t<table class=banner>\n\t\t\t<tr>\n\t\t\t\t<td valign=middle>\n\t\t\t\t\t<image src=\"images/StanfordTreeLogo.png\" height=32>\n\t\t\t\t</td>\n\t\t\t\t<td valign=middle>\n\t\t\t\t\t<div class=bannerText>\n\t\t\t\t\t\tThe Stanford <code>cslib</code> package\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t\t<hr>\n\t\t\n\t\t<div class=include>\n\t\t\t<a href=\"bitstream.html\">#include \"bitstream.h\"</a>\n\t\t</div>\n\n\t\t<h1 class=header>\n\t\t\t<code>class ostringbitstream : public <a href=\"obitstream-class.html\">obitstream</a></code>\n\t\t</h1>\n\n\t\t<p>\n\t\t\tThis class writes bits of data into an internal string buffer.\n\t\t\tThis class inherits from the <code>obitstream</code> class.\n\t\t</p>\n\t\t\n\t\t<p class=\"since\">\n\t\t\tAvailable since: 2014/02/01 version of C++ library\n\t\t</p>\n\t\t\n\t\t<table class=index width=100%>\n\t\t\t<tr>\n\t\t\t\t<td class=indexHead colspan=2>\n\t\t\t\t\tConstructors\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Constructor:ostringbitstream\">ostringbitstream()</a>&nbsp;</nobr></td>\n\t\t\t\t<td class=indexSynopsis width=100%>\n\t\t\t\t\tConstructs a new bit stream.\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t\n\t\t\t<tr>\n\t\t\t\t<td class=indexHead colspan=2>\n\t\t\t\t\tMethods\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=indexKey><nobr><a href=\"#Method:str\">str()</a>&nbsp;</nobr></td>\n\t\t\t\t<td class=indexSynopsis width=100%>\n\t\t\t\t\tRetrieves the underlying string of the bit stream.\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\n\t\t<h2>Constructor detail</h2>\n\t\t<hr>\n\t\t<a name=\"Constructor:ostringbitstream\"></a>\n\t\t<pre class=detailCode>\nostringbitstream();\n</pre>\n\t\t<div class=detailHTML>\n\t\t\tConstructs a new bit stream that writes bits into an internal string buffer.\n\t\t\t<p>Usage:<br>\n\t\t</div>\n\t\t<pre class=usageCode>\nostringbitstream stream;\n</pre>\n\t\t<hr>\n\n\t\t<h2>Method detail</h2>\n\t\t<hr>\n\t\t<a name=\"Method:str\"></a>\n\t\t<pre class=detailCode>\nstring str();\n</pre>\n\t\t<div class=detailHTML>\n\t\t\tRetrieves the underlying string of the bit stream.\n\t\t\t<p>Usage:<br>\n\t\t</div>\n\t\t<pre class=usageCode>\nstring s = stream.str();\n</pre>\n\t\t<hr>\n\t</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/point.html",
    "content": "<html>\n<head>\n<title>point.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>point.h</code></h1>\nThis file exports a class representing an integer-valued <i>x</i>-<i>y</i>\npair.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Class</td></tr>\n<tr><td class=indexKey><nobr><a href=\"Point-class.html\">Point</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class represents an <i>x</i>-<i>y</i> coordinate point on a two-dimensional integer grid.</td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/pqueue.html",
    "content": "<html>\n<head>\n<title>pqueue.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>pqueue.h</code></h1>\nThis file exports the <code>PriorityQueue</code> class, a\ncollection in which values are processed in priority order.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Class</td></tr>\n<tr><td class=indexKey><nobr><a href=\"PriorityQueue-class.html\">PriorityQueue&lt;<var>ValueType</var>&gt;</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class models a structure called a <b><i>priority&nbsp;queue</i></b> in which values are processed in order of priority.</td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/queue.html",
    "content": "<html>\n<head>\n<title>queue.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>queue.h</code></h1>\nThis file exports the <code>Queue</code> class, a collection\nin which values are ordinarily processed in a first-in/first-out\n(FIFO) order.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Class</td></tr>\n<tr><td class=indexKey><nobr><a href=\"Queue-class.html\">Queue&lt;<var>ValueType</var>&gt;</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class models a linear structure called a <b><i>queue</i></b> in which values are added at one end and removed from the other.</td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/random.html",
    "content": "<html>\n<head>\n<title>random.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>random.h</code></h1>\nThis file exports functions for generating pseudorandom numbers.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:randomBool\">randomBool()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> or <code>false</code> with 50% probability.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:randomChance\">randomChance(<var>p</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> with the probability indicated by <code>p</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:randomColor\">randomColor()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a random RGB color as an integer such as <code>0xff00ff</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:randomColorString\">randomColorString()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a random RGB color as a string such as <code>\"#ff00ff\"</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:randomElement\">randomElement(<var>grid</var>)</a>&nbsp;<br>\n\t<a href=\"#Function:randomElement\">randomElement(<var>list</var>)</a>&nbsp;<br>\n\t<a href=\"#Function:randomElement\">randomElement(<var>set</var>)</a>&nbsp;\n\t<a href=\"#Function:randomElement\">randomElement(<var>v</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a randomly chosen element from the given collection.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:randomInteger\">randomInteger(<var>low</var>,&nbsp;<var>high</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a random integer in the range <code>low</code> to <code>high</code>, inclusive.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:randomKey\">randomKey(<var>map</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a randomly chosen key from the given map.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:randomReal\">randomReal(<var>low</var>,&nbsp;<var>high</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a random real number in the half-open interval [<code>low</code>&nbsp;..&nbsp;<code>high</code>).</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setRandomSeed\">setRandomSeed(<var>seed</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the internal random number seed to the specified value.</td></tr>\n</table>\n\n<h2>Function detail</h2>\n<hr>\n\n<a name=\"Function:randomBool\"></a>\n<pre class=detailCode>\nbool randomBool();\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> or <code>false</code> with 50% probability each.\nThis is equivalent to calling <code>randomChance(0.5)</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (randomBool()) ...\n</pre>\n<hr>\n\n<a name=\"Function:randomChance\"></a>\n<pre class=detailCode>\nbool randomChance(double p);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> with the probability indicated by <code>p</code>.\nThe argument <code>p</code> must be a floating-point number between\n0 (never) and 1 (always).  For example, calling\n<code>randomChance(.30)</code> returns <code>true</code> 30 percent\nof the time.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (randomChance(p)) ...\n</pre>\n<hr>\n\n<a name=\"Function:randomColor\"></a>\n<pre class=detailCode>\nint randomColor();\n</pre>\n<div class=detailHTML>\nReturns a random RGB color as an integer such as <code>0xff00ff</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint color = randomColor();\n</pre>\n<p class=\"since\">\n\tAvailable since: 2016/08/02 version of C++ library\n</p>\n<hr>\n\n<a name=\"Function:randomColorString\"></a>\n<pre class=detailCode>\nstring randomColorString();\n</pre>\n<div class=detailHTML>\nReturns a random RGB color as a string such as <code>\"#ff00ff\"</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring color = randomColorString();\n</pre>\n<p class=\"since\">\n\tAvailable since: 2016/08/02 version of C++ library\n</p>\n<hr>\n\n<a name=\"Function:randomElement\"></a>\n<pre class=detailCode>\ntemplate &lt;typename T&gt;\nconst T&amp; randomElement(const Grid&lt;T&gt;&amp; grid)\n\ntemplate &lt;typename T&gt;\nconst T&amp; randomElement(const HashSet&lt;T&gt;&amp; set)\n\ntemplate &lt;typename T&gt;\nconst T&amp; randomElement(const LinkedList&lt;T&gt;&amp; list)\n\ntemplate &lt;typename T&gt;\nconst T&amp; randomElement(const Set&lt;T&gt;&amp; set)\n\ntemplate &lt;typename T&gt;\nconst T&amp; randomElement(const SparseGrid&lt;T&gt;&amp; grid)\n\ntemplate &lt;typename T&gt;\nconst T&amp; randomElement(const Vector&lt;T&gt;&amp; v)\n</pre>\n<div class=detailHTML>\nReturns a randomly chosen element of the given collection.\nThrows an error if the collection is empty.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nelement = randomElement(v);\n</pre>\n<p class=\"since\">\n\tAvailable since: 2015/04/15 version of C++ library\n</p>\n<hr>\n\n<a name=\"Function:randomInteger\"></a>\n<pre class=detailCode>\nint randomInteger(int low, int high);\n</pre>\n<div class=detailHTML>\nReturns a random integer in the range <code>low</code> to\n<code>high</code>, inclusive.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint n = randomInteger(low, high);\n</pre>\n<hr>\n\n<a name=\"Function:randomKey\"></a>\n<pre class=detailCode>\ntemplate &lt;typename K, typename V&gt;\nK randomKey(const HashMap&lt;K, V&gt;&amp; map)\n\ntemplate &lt;typename K, typename V&gt;\nK randomKey(const Map&lt;K, V&gt;&amp; map)\n</pre>\n<div class=detailHTML>\nReturns a randomly chosen key of the given map.\nThrows an error if the map is empty.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nkey = randomKey(map);\n</pre>\n<p class=\"since\">\n\tAvailable since: 2015/04/15 version of C++ library\n</p>\n<hr>\n\n<a name=\"Function:randomReal\"></a>\n<pre class=detailCode>\ndouble randomReal(double low, double high);\n</pre>\n<div class=detailHTML>\nReturns a random real number in the half-open interval\n[<code>low</code>&nbsp;..&nbsp;<code>high</code>).  A half-open\ninterval includes the first endpoint but not the second, which\nmeans that the result is always greater than or equal to\n<code>low</code> but strictly less than <code>high</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble d = randomReal(low, high);\n</pre>\n<hr>\n\n<a name=\"Function:setRandomSeed\"></a>\n<pre class=detailCode>\nvoid setRandomSeed(int seed);\n</pre>\n<div class=detailHTML>\nSets the internal random number seed to the specified value.  You\ncan use this function to set a specific starting point for the\npseudorandom sequence or to ensure that program behavior is\nrepeatable during the debugging phase.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetRandomSeed(seed);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/rationale.css",
    "content": "body {\n   font-size:100%;\n}\n\nh1 {\n   font-family:\"Times New Roman\", \"Times\", \"serif\";\n   font-size:1.5em;\n   font-weight:bold;\n   text-align:center;\n}\n\nh2 {\n   font-family:\"Times New Roman\", \"Times\", \"serif\";\n   font-size:1.4em;\n   font-weight:bold;\n   margin-bottom:2px;\n}\n\nh3 {\n   font-family:\"Times New Roman\", \"Times\", \"serif\";\n   font-size:1.2em;\n   font-weight:bold;\n   margin-bottom:2px;\n}\n\npre, code, .code {\n   font-family:\"Courier New\", \"Courier\", \"monospace\";\n   font-weight:bold;\n   font-size:90%;\n}\n\n.question {\n   border:2px solid blue;\n   margin-top:0.8em;\n   margin-bottom:0.8em;\n   margin-left:4em;\n   margin-right:4em;\n   pad-top:5px;\n   pad-bottom:5px;\n   pad-left:0px\n   pad-right:5px;\n}\n\n.resolved {\n   border:2px solid green;\n   margin-top:0.8em;\n   margin-bottom:0.8em;\n   margin-left:4em;\n   margin-right:4em;\n   pad-top:5px;\n   pad-bottom:5px;\n   pad-left:0px\n   pad-right:5px;\n}\n\n.codefigure {\n   font-family:\"Courier New\", \"Courier\", \"monospace\";\n   font-weight:bold;\n   font-size:90%;\n   border:solid black 1px;\n   padding:6px;\n   margin-top:0.8em;\n   margin-bottom:0.8em;\n   margin-right:0.4em;\n}\n\n.caption {\n   font-family:\"Helvetica Neue\", \"Helvetica\", \"sans-serif\";\n   font-weight:bold;\n   font-size:100%;\n   margin-top:0.8em;\n   margin-bottom:2px;\n}\n\n.comment {\n   color:blue;\n}\n"
  },
  {
    "path": "Archived/cppdoc/rationale.html",
    "content": "<html>\n<head>\n<title>The Stanford C++ Libraries -- Rationale Version 1.3</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"rationale.css\" />\n</head>\n<body>\n<p>\n<h1>The Stanford C++ Libraries -- Rationale Version 1.3</h1>\n<table width=100%>\n<tr><td align=left>Eric Roberts</td><td align=right>October 3, 2012</td></tr>\n</table>\n<hr>\nThis document is the latest in a series of design documents outlining\nchanges in the Stanford C++ libraries used for CS&nbsp;106B and\nCS&nbsp;106X.\nThe original design document appeared on July 26, 2011, and has since\nbeen modified after a series of discussions with Keith Schwarz, Steve\nCooper, and Jerry Cain, as well as with the experience of teaching these\ncourses several times in the interim.\n\n<h2>1. Overall philosophy</h2>\n\nOver the years, I&rsquo;ve become convinced that most CS\ninstructors&mdash;for reasons that are not by any means impossible to\nunderstand&mdash;are so hostile to the idea of externally developed\nlibraries that they will choose a demonstrably unsuccessful standard\napproach over a nonstandard one, no matter how successful the\nnonstandard approach has been.\nI am therefore trying to walk a fine line in the textbook.\nMy goal is to make it <i>appear</i> standard even as I provide\ninstructors with the tools they need to solve the pedagogical problems\nassociated with trying to teach in a purely standard way.\nThe programs in Chapter&nbsp;1 follow reasonably standard conventions\nFor example, the <code>HelloWorld.cpp</code> program looks pretty much\nas it would in any traditional C++ textbook:\n\n<pre class=codefigure>\n<span class=comment>/*\n * File: HelloWorld.cpp\n * --------------------\n * This file is adapted from the example\n * on page 1 of Kernighan and Ritchie's\n * book The C Programming Language.\n */</span>\n\n#include &lt;iostream&gt;\nusing namespace std;\n\nint main() {\n   cout &lt;&lt; \"hello, world\" &lt;&lt; endl;\n   return 0;\n}\n</pre>\n\nI then introduce the various libraries at different points in the text.\nWhenever possible, I introduce each new library by defining and\nimplementing at least a part of its interface.\nFor example, Chapter&nbsp;2 defines and implements the interfaces\n<a href=\"error.html\"><code>error.h</code></a> (in a slightly simpler\nform that doesn&rsquo;t involve exceptions),\n<a href=\"random.html\"><code>random.h</code></a>, and\n<a href=\"gmath.html\"><code>gmath.h</code></a>.\nOnce I&rsquo;ve introduced each new library interface, I can then use it\nin programs throughout the rest of the book.\n\n<p>The advantage of this strategy is twofold.\nFirst, given that they&rsquo;ve seen how the library works, students\n(and, of course, potential adopters) get a sense that the library is not\nsomething magical that they&rsquo;ve been given but instead something\nthat they could have built on their own.\nSecond, building only part of a library provides a ready supply of\nexercises, because you can ask students to complete the implementation\nof the interface.\n\n<p>Unfortunately, I can&rsquo;t apply this strategy to every library\ninterface.\nThe significant exceptions are the collection classes and the graphics\nlibraries.\nThe success of the Stanford approach in recent years is due, at least in\npart, to the fact that we teach students to use the collection classes\nas clients before looking at the various possible implementations.\nIt is therefore important <i>not</i> to develop implementations of these\nclasses before students have a chance to understand how to use them\neffectively.\nThe graphics libraries, by contrast, are beyond the scope of the textbook.\nIt&rsquo;s great to have them in order to create more exciting\nassignments, but it is unrealistic to think that students in\n<nobr>CS<font size=-3>&nbsp;</font>106B</nobr> can develop them on their\nown.\n\n<p>In light of the fact that collection classes and the graphics\nlibraries represent departures from the strategies used for the rest of\nthe library packages, I&rsquo;ve separated out the discussion of these\npackages.\nSection&nbsp;2 outlines the changes in the other library packages,\nsection&nbsp;3 covers the collection classes, and section&nbsp;4 looks\nat the graphics libraries.\n\n<h2>2. Changes in the basic libraries</h2>\n\nThis section and the individual subsections that follow outline the\nchanges I&rsquo;ve made in the library packages other than the\ncollection classes.\n\n<p>One change that I&rsquo;ve made systematically is to standardize the\nnaming conventions for identifiers.\nIn the old versions of the libraries, the names of methods began with\nlowercase letters, but free functions started with uppercase letters.\nIn the new versions of the libraries, all function and method names\nbegin with a lowercase letter, which follows what seems to have become\nstandard practice.\nSimilarly, constant names were sometimes spelled entirely in uppercase\nand sometimes in mixed case.\nIn the new libraries, all constant names&mdash;including the names of\nenumerated constants&mdash;are in uppercase.\n\n<p>I&rsquo;ve also abandoned the suffix-<code>T</code> convention I\nused to use for type names below the level of classes.\nIn the new version of the textbook, I use initial-uppercase names for all\ndefined types.\nThus, instead of the enumerated type <code>directionT</code>, I now use\n<code>Direction</code>.\nSimilarly, in the implementation of linked lists and trees, I use the\ntype names <code>Cell</code> and <code>Node</code> in place of\n<code>cellT</code> and <code>nodeT</code>.\n\n<p>While there may be a semantic loss here, I decided it was hard to\njustify naming structs one way and classes another, given that the two\nfacilities are implemented in essentially the same way in modern C++ (a\n<code>struct</code> is simply a <code>class</code> in which the default\nvisibility is <code>public</code>).\nOnce I took structs out of the picture, having a distinct naming\nconvention for enumerated types seemed wrong.\n\n<p>Since version 1.1, I have also made the\nlibraries <code>const</code>-correct.\nThis change makes them much more efficient, but also makes it possible\nfor instructors who want to introduce <code>const</code> early to do so.\nThe textbook now introduces <code>const</code> (other than to identify\nconstant values) in Chapter 14 and then uses it in the remaining chapters.\n\n<h3>2.1 The elimination of <code>genlib.h</code></h3>\n\nOne of the critical steps I needed to take in order to make the textbook\nmore attractive to potential adopters was eliminating the need to have a\nnonstandard library in <i>every</i> piece of code, which is true\nfor <code>genlib.h</code> under the old model.\nI&rsquo;ve adopted the simplest possible expedient in this regard and\nhave eliminated the <code>genlib.h</code> interface entirely.\nIn practical terms, the only effect on students is that they now have to\ninclude the line\n\n<pre>\n    using namespace std;\n</pre>\n\nafter their imports.\nI have thus exchanged one required line for another.\nThe difference is that the new line is part of the C++ standard.\n\n<p>One of the most difficult decisions in this design, however, has been\nthat of where to place the\n\n<pre>\n    using namespace std;\n</pre>\n\ndirective.\nMost C++ programmers write this <i>after</i> the library inclusions.\nThe text follows that convention.\n\n<p>Unfortunately, the cost of this decision is that the <code>.h</code>\nfiles the students write must explicitly qualify any identifiers that come\nfrom the <code>std</code> namespace.  For example, <code>.h</code>\nfiles need to refer to <code>std::string</code> instead of the\nunqualified type name <code>string</code>.  Students, however, write\nfewer interfaces than implementations.\nAs a result, it seems wiser to make the implementations appear more\nstandard even if doing so adds some complexity to the interfaces.\n\n<p>A more subtle issue that arises in eliminating <code>genlib.h</code>\nis that <code>genlib.h</code> also redefined <code>main</code> so as to\nexecute special initialization code before calling the student&rsquo;s\nprogram, such as bringing up the console and responding to uncaught\nerror exceptions.\nThat redefinition is now distributed across the header files that need\nit, including <code>console.h</code>, <code>gwindow.h</code>, and\n<code>error.h</code>.\nIf you include any of these header files, <code>main</code> gets\nredefined so that the right things happen.\n\n<h3>2.2 The <code>simpio.h</code> library</h3>\n\nThe <a href=\"simpio.html\"><code>simpio.h</code></a> library has been\nwith us since 1992, when it was necessary to get around the many\nproblems in C&rsquo;s <code>scanf</code> function.\nGiven my goal of avoiding libraries until I can build them, I\ndon&rsquo;t use <code>simpio.h</code> in the first two chapters of the\nbook, and instead use the C++ extraction operator, as in the\n<code>Average3</code> program from Chapter&nbsp;1:\n\n<pre class=codefigure>\n<span class=comment>/*\n * File: Average3.cpp\n * ------------------\n * This program averages three integers.\n */</span>\n\n#include &lt;iostream&gt;\nusing namespace std;\n\nint main() {\n   int n1, n2, n3;\n   cout &lt;&lt; \"This program averages three integers.\" &lt;&lt; endl;\n   cout &lt;&lt; \"1st integer: \";\n   cin &gt;&gt; n1;\n   cout &lt;&lt; \"2nd integer: \";\n   cin &gt;&gt; n2;\n   cout &lt;&lt; \"3rd integer: \";\n   cin &gt;&gt; n3;\n   double average = (n1 + n2 + n3) / 3.0;\n   cout &lt;&lt; \"The average is \" &lt;&lt; average &lt;&lt; endl;\n   return 0;\n}\n</pre>\n\nUsing the <code>&gt;&gt;</code> operator, however, raises many of the\nold <code>scanf</code> issues.\nFor one thing, <code>&gt;&gt;</code> provides no error checking and\nrecovery in the way that the <code>simpio.h</code> functions do.\nPerhaps more critically, the treatment of whitespace is extremely\nconfusing, and students have a great deal of trouble understanding why\n<code>line</code> always ends up as the empty string after executing the\nfollowing code:\n\n<pre>\n    int n;\n    string line;\n    cout &lt;&lt; \"Enter an integer: \";\n    cin &gt;&gt; n;\n    cout &lt;&lt; \"Enter a line: \";\n    cin &gt;&gt; line;\n</pre>\n\nUsing <code>simpio.h</code> makes it possible to shorten this code\nconsiderably, as follows:\n\n<pre>\n    int n = getInteger(\"Enter an integer: \");\n    string line = getLine(\"Enter a line: \");\n</pre>\n\nThis version also solves the problem of checking the numeric input for\nvalidity, because <code>getInteger</code> performs that checking internally.\n\n<p>My guess, however, is that most adopters won&rsquo;t use\n<code>simpio.h</code> even after I build it in Chapter&nbsp;4.\nIn that chapter, I talk about the problems in the use of the\n<code>&gt;&gt;</code> operator and then build <code>simpio.h</code> as a\nfix.\nI plan to stick with that strategy, but not to push the point too\nfirmly.\n\n<h3>2.3 The <code>strlib.h</code> interface</h3>\n\nIn addition to renaming this interface from <code>strutils.h</code> to\n<a href=\"strlib.html\"><code>strlib.h</code></a> to promote greater\nuniformity in my naming conventions, I&rsquo;ve also added several new\nfunctions from Java&rsquo;s string libraries that I can no longer live\nwithout (most notably <code>startsWith</code> and\n<code>endsWith</code>).\nI&rsquo;ve also shortened the names of the case-conversion functions so\nthat they match their Java counterparts (<code>toUpperCase</code> and\n<code>toLowerCase</code>).\nIn the Version&nbsp;1.0 document, I had proposed having\n<code>strlib.h</code> export the functions\n<code>toUpperCaseInPlace</code> and <code>toLowerCaseInPlace</code> that\nchanged their arguments rather than returning a new string.\nSeveral people recommended I leave these out of the interface, and I\nhave done so.\n\n<p>As most of you know, we&rsquo;ve occasionally experienced some odd\nproblems with the numeric conversion functions like\n<code>stringToInteger</code> and <code>integerToString</code> that have\nproven impossible to track down.\nThe problems occur only on the Macintosh and are characterized by a\nmemory smash inside the code for these functions that happens\n<i>before</i> the student&rsquo;s main program even starts.\nI&rsquo;m suspicious that the problem has something to do with the\nextremely clever template-based strategy used to implement these\nmethods.\nThe new version of the library reimplements these functions in a way\nthat students will easily be able to understand based on the discussion\nof strings and streams in Chapters&nbsp;3 and 4.\nWe used this implementation in the winter and spring of last year, and\nthe memory smashes indeed seemed to have disappeared.\n\n<h3>2.4 The <code>random.h</code> library</h3>\n\nI&rsquo;ve left most of the\n<a href=\"random.html\"><code>random.h</code></a> interface alone, but\nhave decided to make a rather significant semantic change in the form of\neliminating the <code>randomize</code> function.\nGiven that so many of our students come with prior knowledge of Java, it\nis confusing for them to learn a different initialization model when\nthey make the transition to C++.\nTo fix this problem, I have changed the implementation so that the\npseudorandom number generator is initialized by default to a random\npoint in the sequence.\nClients who want to work with a predictable sequence now need to call\n<code>setRandomSeed</code>.\n\n<p>In the interest of enhancing portability (and to avoid some serious\nproblems in the implementation of <code>rand</code> on several\nplatforms), I&rsquo;ve also rewritten <code>random.cpp</code> so that it\nincludes its own 32-bit linear congruential generator.\nThe effect is that the same seed now produces the same sequence on all\nplatforms.\n\n<h3>2.5 The <code>TokenScanner</code> class</h3>\n\nI&rsquo;ve made a rather large number of changes in the existing\n<code>Scanner</code> class, starting with changing its name to\n<a href=\"TokenScanner-class.html\"><code>TokenScanner</code></a>.\nThe existing version has the following problems:\n\n<ol>\n<li>Students have to learn a new syntactic feature (the <code>::</code>\noperator) when they specify options like\n<code>Scanner::IgnoreSpaces</code> (although they have arguably seen this\nalready in <code>string::npos</code>).  Particularly if I maintain\nmy convention that enumerated constants should be uppercase, calls\nlike\n\n<pre>\n    setSpaceOption(Scanner::IGNORE_SPACES);\n</pre>\n\nseem to shout across the screen.\n\n<p><li>The <code>setBracketOption</code> is a holdover from an ancient\nassignment and no longer seems relevant.\n\n<p><li>The current version lacks a number of features that we would like\nto use, such as multicharacter operators in the BASIC and Scheme\nassignments.\n</ol>\n\nWhat I&rsquo;ve done here is replace the <code>Scanner</code> class with\na new <code>TokenScanner</code> class that I&rsquo;ve got running, with\nminor adjustments as required by the language, in C, Java, and\nJavaScript.\nThis version provides simpler methods to specify the options, supports\nmulticharacter operators, and incorporates several other features\nI&rsquo;ve needed to get language parsers running.\nWhat I have seems to work well for the applications I&rsquo;ve tried\nwithout being significantly more complicated than the current model.\n\n<p>The reason for the change in name is to make it possible to use\nthe same class name in all the different languages.  The problem with\n<code>Scanner</code> is that it creates ambiguity in Java because there\nis already a <code>Scanner</code> class in <code>java.util</code>.\n\n<h3>2.6 The <code>filelib.h</code> interface</h3>\n\nThere is no current counterpart to the\n<a href=\"filelib.html\"><code>filelib.h</code></a> interface, but I have\nneeded a place to save several of the file-handling functions I use in\nthe text.\nChapter&nbsp;4 (Streams), for example,\nintroduces the functions <code>promptUserForFile</code> and\n<code>readEntireFile</code>.\nThe primary purpose of <code>filelib.h</code> is to have an interface\nin which to put those functions.\nOnce that interface exists, it seems useful to include other useful\nfunctions, many of which appear as exercises in Chapter&nbsp;4.\n\n<h2>3. The collection classes</h2>\n\nGiven that it is intended for an introductory data-structures course in\nthe style of <nobr>CS<font size=-3>&nbsp;</font>106B</nobr>, the\ntextbook spends most of its time on the fundamental structures that make\nup the collection classes.\nThe fact that the textbook uses Stanford versions of\n<a href=\"Vector-class.html\"><code>Vector</code></a>,\n<a href=\"Stack-class.html\"><code>Stack</code></a>,\n<a href=\"Queue-class.html\"><code>Queue</code></a>,\n<a href=\"Map-class.html\"><code>Map</code></a>, and\n<a href=\"Set-class.html\"><code>Set</code></a>&mdash;as opposed to the\nequally serviceable classes in the Standard Template Library&mdash;is\nlikely to represent a significant barrier to adoption for those who are\nlooking for a standard approach.\n\n<p>In the early part of the summer, I played around with the idea of\nusing the STL collection classes in the text.\n(The one extension I think is essential is <code>foreach</code>, but\nKeith and I got <code>foreach</code> working with the STL classes over a\nyear ago.)\nIn the end, I decided against that path, although the factors that\nturned out to pivotal in that decision were not the ones I had initially\nexpected.\nI was willing to live with ungainly names like <code>push_back</code>\nfor vectors or using the verbs <code>push</code> and <code>pop</code>\nfor queues.\nI also figured out that I could hide the complexity of map iteration\n(iteration in the STL steps through pairs with a\n<code>first</code> and <code>second</code> component) by specializing\n<code>foreach</code> to iterate over the keys in an STL map, just as it\ndoes with our <code>Map</code> class.\n\n<p>For me, there were three problems that seemed to be showstoppers.\nFirst, the STL classes (at least by default) do very little checking\nto ensure that arguments are valid.  Removing those checks gains some\nefficiency, but can be disastrous for students.\n\n<p>The second problem is that so many of the STL classes require the\nuse of iterators, even when no iteration is involved.  For example,\ninserting or deleting an element from a vector requires the client\nto use an iterator to indicate the position.  Similarly, the only way\nto check for the existence of a key in a map requires the use of an\niterator.  Introducing iterators early represents a huge pedagogical\nproblem.  Syntactically, iterators in C++ resemble pointers, and it\ntherefore makes sense to introduce pointers before iterators, and therefore\nbefore introducting any collection class that depends on iterators.  That\nordering, however, has proved to be problematic in the past.  When we\nintroduced the details of memory before presenting the client view of\ncollection classes, comprehension was dramatically lower than it has\nbeen in recent years.\n\nThe third problem&mdash;and the one that actually pushed me over the\nedge&mdash;is the definition of <code>pop</code> in the\n<code>stack</code> and <code>queue</code> classes.\nTo avoid having to copy the result, the STL defines <code>pop</code> as\na procedure, forcing the client to read the value of <code>top</code>\n(or <code>front</code>) prior to popping the value.\nThis design creates an asymmetry between <code>push</code> and\n<code>pop</code> and will almost certainly discourage students from\nthinking in terms of functional composition.\n\n<p>Given these problems, I decided to introduce the Stanford versions of\nthe collection classes but to defend that decision on the grounds that\nthese simplified versions are easier to implement, not that they are\neasier to understand.\nThe primary focus of the book is on understanding the implementation of\nthese structures, and I think I can convince instructors that there is\nno need to implement all the features provided by the STL.\n\n<p>As you can see in the individual descriptions that follow, I have\ntaken some steps (most notably in the <code>Map</code> class) to make\nthe STL and the Stanford versions more compatible, which should also\ndecrease the resistance to using these classes.\n\n<p>In Version&nbsp;1.0 of this document, I asked whether anyone\n&ldquo;wanted to defend the idea that I should go with the\nstandard STL plus <code>foreach</code>.&rdquo;\nThe responses I received for the most part echoed my feeling that,\nalthough such an idea initially seems attractive, it would end up\ncreating too many problems.\nJerry Cain expressed this position particularly well:\n\n<blockquote>\nI actually started to defend the idea, and I changed my mind.\n:)  Even if you were to go with the standard templates, you'd probably\nwant to avoid iterators and install <code>containsKey</code> and\n<code>contains</code> methods into the <code>map</code> and\n<code>set</code>, and that alone is enough of a breakaway from the STL\nmindset that you should just stick with the CS106 containers we know\nhave worked so wonderfully for the last 9 years.\n</blockquote>\n\n<h3>3.1 The <code>Vector</code> class</h3>\n\nI&rsquo;ve made a few changes to the\n<a href=\"Vector-class.html\"><code>Vector</code></a> class to bring it in\nline with the STL.\nFirst, I&rsquo;ve included <code>push_back</code> as a synonym for\n<code>add</code>.\nTraditionalists can therefore stick with the STL nomenclature.\nSecond, I&rsquo;ve shortened the names <code>getAt</code> and\n<code>setAt</code> to <code>get</code> and <code>set</code>,\nas suggested by several of you reviewing this document.\n\n<p>More importantly, I&rsquo;ve changed the interpretation of the\ninteger-argument constructor to match what the STL <code>vector</code>\ndoes, which is at odds with the interpretation in the existing Stanford\nlibraries.\nIn our old libraries, the declaration\n\n<pre>\n    Vector<int> vec(10);\n</pre>\n\nsets the <i>capacity</i> of the vector.\nIn the STL version, this constructor performs the far more useful\noperation of setting the <i>size.</i>\nEach element of the vector is initialized to its default value or to a\nspecific initial value passed as an optional second argument to the\nconstructor.\n\n<p>Following on a suggestion from Keith Schwarz, I&rsquo;ve added to\n<code>Vector</code> the overloaded <code>+</code> and <code>+=</code>\noperators, which I had already added to the <code>Set</code> class.\nPerhaps more importantly, I&rsquo;ve overloaded the comma operator to\nimplement Keith&rsquo;s suggestion for a new syntax for initialization\nof vectors:\n\n<pre>\n    Vector<int> digits;\n    digits += 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;\n</pre>\n\n\n<h3>3.2 The <code>Stack</code> class</h3>\n\nThe <a href=\"Stack-class.html\"><code>Stack</code></a> class is\nessentially the same as it has been.\nThe only change is that I&rsquo;ve added a <code>top</code> method that\nreturns the top element on the stack by reference, just as the STL\n<code>top</code> method does.\nI don&rsquo;t plan to cover this method in the textbook (mostly because\nI think assigning to the top of the stack will confuse students about\nthe limits of the abstraction boundary), but did want to keep it there\nfor the traditionalists.\nHaving <code>top</code> in the interface means that the STL idiom for\npopping a stack still works.\n\n<h3>3.3 The <code>Queue</code> class</h3>\n\nI&rsquo;ve made only a minor change to the\n<a href=\"Queue-class.html\"><code>Queue</code></a> class, which is to add\nthe <code>front</code> and <code>back</code> methods from STL queues.\n\n<p>Several people responded negatively to the idea of unifying the\nqueue and priority queue constructs, so I&rsquo;ve separated them again.\nThe priority queue is included in the <code>StanfordCPPLib</code>\nlibraries as the class\n<a href=\"PriorityQueue-class.html\"><code>PriorityQueue</code></a>,\nwhich is exported by the interface\n<a href=\"pqueue.html\"><code>pqueue.h</code></a>.\n\n<h3>3.4 The <code>Map</code> class</h3>\n\nThe biggest changes in the collection class libraries are in the\n<a href=\"Map-class.html\"><code>Map</code></a> class.\nAt Steve&rsquo;s suggestion, I&rsquo;ve restored the\n<code>KeyType</code> template parameter so that maps work with arbitrary\nkeys, and not just strings.\nIn the process, it made sense to change the underlying implementation\nfrom a hash table to a binary search tree (although I&rsquo;ve added\nseparate <code>HashMap</code> and <code>HashSet</code> classes to the\nlibraries as well).\nThese changes bring our version of <code>Map</code> in line with the STL\n<code>map</code> class.\n\n<p>Making these changes to the <code>Map</code> class, however, has a\nsignificant effect on the presentation in the text.\nUnlike in the hash-table implementation, iterating over a map now\nprocesses the keys in order, which lets me throw away a fair chunk of\nthe discussion of iterator order in Chapter&nbsp;5.\nMore importantly, the later chapters now approach the implementation of\nthe <code>Map</code> class through a series of approximations to the\nfinal behavior.\nThe hash-table implementation offers constant time performance at the\ncost of unordered iterators; the binary-tree implementation restores the\ndesired ordering constraint at the cost of making the time logarithmic.\nThis difference makes it possible for me to discuss tradeoffs between\nthese strategies in more detail.\n\n<h3>3.5 The <code>Set</code> class</h3>\n\nI&rsquo;ve left the low-level parts of the\n<a href=\"Set-class.html\"><code>Set</code></a> class much as they were,\nalthough the implementation is now based on the <code>Map</code> class\nrather than <code>BST</code>, which no longer exists in the libraries as\nan exported template class.\nFor compatibility with the STL, I&rsquo;ve added <code>insert</code> as\na synonym for <code>add</code>.\n\n<p>Along the same lines as described for the <code>Vector</code> class\nearlier, I&rsquo;ve overloaded the comma operator so that it works with\nthe <code>+=</code> to support a concise syntax for initializing sets:\n\n<pre>\n    Set<char> vowels;\n    vowels += 'a', 'e', 'i', 'o', 'u';\n</pre>\n\nFor sets, I&rsquo;ve also extended <code>-=</code> to remove a comma-separated\nlist of elements.\n\n<p>The changes that I&rsquo;ve made in the <code>Set</code> class are in\nthe higher-level functions that I don&rsquo;t actually introduce until I\ntalk about the implementation of sets in Chapter&nbsp;17.\nIn the old version of the interface, these facilities were implemented\nas named methods: <code>equals</code>, <code>unionWith</code>,\n<code>intersectWith</code>, and <code>subtract</code>.\nThose names were good choices when the package worked with an ADT in C,\nbut don&rsquo;t seem right for C++, where it seems more natural to use\noperators for that purpose.\n\n<p>I have therefore defined the following operators for the <code>Set</code>\nclass:\n\n<div style=\"margin-left:3em;\">\n<table>\n<tr>\n<td><i>s<sub><font size=-1>1</font></sub></i><code> == </code><i>s<sub><font size=-1>2</font></sub></i></td>\n<td>Set equality test</code></td>\n</tr>\n<tr>\n<td><i>s<sub><font size=-1>1</font></sub></i><code> != </code><i>s<sub><font size=-1>2</font></sub></i></td>\n<td>Set inequality test</code></td>\n</tr>\n<td><i>s<sub><font size=-1>1</font></sub></i><code> + </code><i>s<sub><font size=-1>2</font></sub></i></td>\n<td>Union</code></td>\n</tr>\n<tr>\n<td><i>s<sub><font size=-1>1</font></sub></i><code> * </code><i>s<sub><font size=-1>2</font></sub></i></td>\n<td>Intersection</code></td>\n</tr>\n<tr>\n<td><i>s<sub><font size=-1>1</font></sub></i><code> - </code><i>s<sub><font size=-1>2</font></sub></i></td>\n<td>Set difference</code></td>\n</tr>\n<tr>\n<td><i>s<sub><font size=-1>1</font></sub></i><code> += </code><i>s<sub><font size=-1>2</font></sub></i></td>\n<td>Union with</code></td>\n</tr>\n<tr>\n<td><i>s<sub><font size=-1>1</font></sub></i><code> *= </code><i>s<sub><font size=-1>2</font></sub></i></td>\n<td>Intersect with</code></td>\n</tr>\n<tr>\n<td><i>s<sub><font size=-1>1</font></sub></i><code> &ndash; </code><i>s<sub><font size=-1>2</font></sub></i></td>\n<td>Set difference</code></td>\n</tr>\n<tr>\n<td><i>s<sub><font size=-1>1</font></sub></i><code> += </code><i>element</i></td>\n<td>Add element</code></td>\n</tr>\n<tr>\n<td><i>s<sub><font size=-1>1</font></sub></i><code> &ndash;= </code><i>element</i>&nbsp;&nbsp;&nbsp;&nbsp;</td>\n<td>Remove element</code></td>\n</tr>\n</table>\n</div>\n\n<h3>3.6 The <code>Grid</code> and <code>Lexicon</code> classes</h3>\n\nIn terms of the facilities exported by their interfaces, the\n<a href=\"Grid-class.html\"><code>Grid</code></a> and\n<a href=\"Lexicon-class.html\"><code>Lexicon</code></a> classes have not\nchanged in any significant way.\nWhat has changed is the presentation in the textbook.\nIn the current version of the reader, each of these classes appears in\nits own section in Chapter&nbsp;5.\nThis structure has always been slightly problematic because\n<code>Lexicon</code> is not a template class in the way that the others\nare.\nMy bigger concern, however, is that foregrounding these\nclasses&mdash;neither of which has a direct counterpart in the\nSTL&mdash;will increase the likelihood that potential adopters will\nreject the presentation as nonstandard.\nAt the same time, I think that both of these classes are worth having\naround, mostly because of the wonderful exercises that they enable.\n\n<p>I believe that I can mitigate this danger by organizing\nChapter&nbsp;5 into five sections that individually cover the Stanford\nversions of the essential collection classes from the STL\n(<code>Vector</code>, <code>Stack</code>, <code>Queue</code>,\n<code>Map</code>, and <code>Set</code>).\nI then introduce <code>Grid</code> in the last subsection under\n<code>Vector</code> as a simplification of a vector of vectors and\nintroduce <code>Lexicon</code> as a special enhancement of the\n<code>Set</code> idea.\n\n<h3>3.7 Iteration and <code>foreach</code></h3>\n\nIn a revision I&rsquo;ve been planning to do for almost a year,\nI&rsquo;ve eliminated the <code>hasNext</code>/<code>next</code>\niterator model from the Stanford collection types and replaced it with\nstandard STL iterators.\nI&rsquo;ve also replaced my implementation of <code>foreach</code> with\nKeith&rsquo;s extension that also works with strings and statically\ninitialized arrays.\nStudents, of course, aren&rsquo;t likely to use the underlying iterators\ndirectly, although I do cover them in Chapter&nbsp;19.\nMaking that change, however, simplifies <code>foreach</code> because the\niterable types share a common model.\nIt also means that all of the STL algorithms work on our classes just as\nthey do on the standard ones.\nFor example, you can sort a <code>Vector</code> like this:\n\n<pre>\n    sort(vec.begin(), vec.end());\n</pre>\n\n<h2>4. The graphics libraries</h2>\n\n<p>A graphics library serves several purposes in an introductory CS\ncourse and, as a result, must fit the needs of different audiences.\nOn the one hand, students would like to build interactive graphical\napplications (such as Breakout) and therefore must be simple enough for\nthem to use.\nOn the other, we&rsquo;ve always been happy to build some scaffolding as\npart of an assignment (as in Yahtzee or Boggle) in which we, as\ninstructors, use more advanced features of the graphics packages to\ndesign the user interface we want.\nIdeally, the graphics package will be able to satisfy both needs.\n\n\n<p>In Version 1.0 of this document, I had proposed replicating the Java\n<code>GObject</code> model in C++.\nOur experience in <nobr>CS<font size=-3>&nbsp;</font>106A</nobr> shows\nthat the model works well pedagogically and is easy for students to\nunderstand.\nHaving done it, I can also attest that the model is implementable in\nC++.\nThe fact that it can be done, however, is not in itself sufficient\nreason to include it in the package.\n\n<p>Based on the comments that came back in response to my query in\nVersion&nbsp;1.0, I&rsquo;ve decided to eliminate the entire\n<code>GObject</code> hierarchy on the grounds that\n\n<ol>\n<li>It introduces too many new classes.\n<li>Its use of Java-like object semantics create too much confusion.\n</ol>\n\n<p>In the revised version of the package, the graphical capabilities are\nexported through the <a href=\"gwindow.html\"><code>gwindow.h</code></a> and\n<a href=\"gevents.html\"><code>gevents.h</code></a> interfaces.\nThe <code>GWindow</code> class uses a <i>persistent bitmap</i> to store\nthe screen image.  Under this model, the student calls graphics primitives to\ndraw on the canvas, and the implementation takes care of updating the\nscreen image on calls to <code>repaint</code> (formerly called\n<code>updateDisplay</code>) or <code>pause</code>.\nThis model is illustrated by the following graphical version of the\n&ldquo;hello,&nbsp;world&rdquo; program, which centers its message on a\nmagenta oval at the center of the window:\n\n<pre class=codefigure>\n<span class=comment>/*\n * File: HelloWorld.cpp\n * --------------------\n * This program draws the message \"hello, world\" on top of a\n * magenta oval in the center of the graphics window.  This\n * version uses the simple gwindow.h model that draws on a\n * persistent canvas.\n */</span>\n\n#include \"gwindow.h\"\nusing namespace std;\n\nint main() {\n   GWindow gw;\n   double xc = gw.getWidth() / 2;\n   double yc = gw.getHeight() / 2;\n   string msg = \"hello, world\";\n   gw.setColor(\"MAGENTA\");\n   gw.fillOval(xc - 100, yc - 50, 200, 100);\n   gw.setColor(\"BLACK\");\n   gw.setFont(\"Helvetica-24\");\n   gw.drawString(msg, xc - gw.getStringWidth(msg) / 2, yc + 0.40 * 24);\n   return 0;\n}\n</pre>\n\nWhen the student runs this program, the output looks like this:\n\n<p>\n<center>\n<img src=\"images/HelloWorld.png\" width=50%>\n</center>\n\n<p>This model of a persistent-bitmap worked extremely well in the years\nthat the <nobr>CS<font size=-3>&nbsp;</font>106</nobr> was in C.\nThe biggest problem is that animation is problematic.\nThe contents of the graphics window are painted on the offscreen buffer,\nso the strategy for animation is to erase the old image, draw the new\none, and pause.\nThat strategy is inadequate for any serious animation, but works well\nfor drawing static pictures, which is mostly what I need for the\n<nobr>CS<font size=-3>&nbsp;</font>106B</nobr> book.\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/regexpr.html",
    "content": "<html>\n<head>\n<title>regexpr.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>regexpr.h</code></h1>\nThis file exports functions for performing regular expression operations on C++ strings.\nIt will be unnecessary once the C++11 <code>regex</code> library is widely available, but as of this writing the regex library is not supported on gcc and some other major C++ compilers.\n\n<p>\nHere is a short example usage of the functions in this library:\n</p>\n\n<pre>\nstring s = \"aaaaaab\";\nif (regexMatch(s, \"a*b\")) {\n    s = regexReplace(s, \"a{3}b\", \"X\");   // returns \"aaaX\"\n}\n...\n</pre>\n\n<p>\nThe regular expression functions here are implemented by sending the strings and regexes to the Java Back-End to run the operations in Java.\nThis is a bit kludgy but we don't want to write our own regex parser from scratch.\nUsing Java's is a compromise for now.\nNote that the performance of this implementation is slow and should not be relied upon in tight loops or performance-critical code.\n</p>\n\n<p>\nThe syntax of regular expressions accepted is the same as that accepted by Java's <code>java.util.regex.Pattern</code> class and as described at the following URL:\n</p>\n\n<ul>\n\t<li>\n\t\t<a class=\"popup\" target=\"_blank\" href=\"http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html\">Java API Specification: <code>java.util.regex.Pattern</code></a>\n\t</li>\n</ul>\n\n<p class=\"since\">\n\tAvailable since: 2014/03/01 version of C++ library\n</p>\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:regexMatch\">regexMatch(<var>s</var>, <var>regexp</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the given string matches the given regular expression as a substring.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:regexMatchCount\">regexMatchCount(<var>s</var>, <var>regexp</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the number of times the given regular expression is found inside the given string.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:regexReplace\">regexReplace(<var>s</var>, <var>regexp</var>, <var>replacement</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Replaces all occurrences of the given regular expression in the given string with the given replacement text, and returns the resulting string.</td></tr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:regexMatch\"></a>\n<pre class=detailCode>\nbool regexMatch(string s, string regexp);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the given string matches the given regular expression as a substring.\nIf the regular expression is not matched, returns <code>false</code>.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (regexMatch(s, regexp)) {\n    ...\n}\n</pre>\n<hr>\n<a name=\"Function:regexMatchCount\"></a>\n<pre class=detailCode>\nint regexMatchCount(string s, string regexp);\n</pre>\n<div class=detailHTML>\nReturns the number of times the given regular expression is found inside the given string.\nReturns <code>0</code> if there are no matches for the regular expression.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint count = regexMatchCount(s, regexp);\n</pre>\n<hr>\n\n<a name=\"Function:regexReplace\"></a>\n<pre class=detailCode>\nstring regexReplace(string s, string regexp, string replacement);\n</pre>\n<div class=detailHTML>\nReplaces all occurrences of the given regular expression in the given string with the given replacement text, and returns the resulting string.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ns = regexReplace(s, regexp, replacement);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/set.html",
    "content": "<html>\n<head>\n<title>set.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>set.h</code></h1>\nThis file exports the <code>Set</code> class, which implements a\ncollection for storing a set of distinct elements.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Class</td></tr>\n<tr><td class=indexKey><nobr><a href=\"Set-class.html\">Set&lt;<var>ValueType</var>&gt;</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class stores a collection of distinct elements.</td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/shuffle.html",
    "content": "<html>\n<head>\n<title>shuffle.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>shuffle.h</code></h1>\nThis file exports functions for generating pseudorandom numbers.\n\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:shuffle1\">shuffle(<var>array</var>,&nbsp;<var>length</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Randomly rearranges the elements of the given array up to the given length.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:shuffle2\">shuffle(<var>array2d</var>,&nbsp;<var>rows</var>,&nbsp;<var>cols</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Randomly rearranges the elements of the given 2-D array up to the given number of rows and columns.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:shuffle3\">shuffle(<var>grid</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Randomly rearranges the elements of the given grid.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:shuffle4\">shuffle(<var>str</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Randomly rearranges the characters of the given string.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:shuffle5\">shuffle(<var>vector</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Randomly rearranges the elements of the given vector.</td></tr>\n</table>\n\n<h2>Function detail</h2>\n<hr>\n\n<a name=\"Function:shuffle1\"></a>\n<pre class=detailCode>\ntemplate &lt;typename T&gt;\nvoid shuffle(T* array, int length);\n</pre>\n<div class=detailHTML>\nRandomly rearranges the elements of the given array up to the given length.\nPrecondition: The array pointer points to a valid non-NULL array in memory,\nand that array contains at least 'length' elements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nshuffle(a, len);\n</pre>\n<hr>\n\n<a name=\"Function:shuffle2\"></a>\n<pre class=detailCode>\ntemplate &lt;typename T&gt;\nvoid shuffle(T** array2d, int rows, int cols);\n</pre>\n<div class=detailHTML>\nRandomly rearranges the elements of the given 2-D array up to the given number of rows and columns.\nPrecondition: The array pointer points to a valid non-NULL 2-D array in\nmemory, and that array contains at least the given number of rows/columns.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nshuffle(a2d, rows, cols);\n</pre>\n<hr>\n\n<a name=\"Function:shuffle3\"></a>\n<pre class=detailCode>\ntemplate &lt;typename ValueType&gt;\nvoid shuffle(Grid&lt;ValueType&gt;&amp; grid);\n</pre>\n<div class=detailHTML>\nRandomly rearranges the elements of the given grid.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nshuffle(myGrid);\n</pre>\n<hr>\n\n<a name=\"Function:shuffle4\"></a>\n<pre class=detailCode>\nstring shuffle(string str);\n</pre>\n<div class=detailHTML>\nRandomly rearranges the characters of the given string, returning the shuffled result.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring s2 = shuffle(str);\n</pre>\n<hr>\n\n<a name=\"Function:shuffle5\"></a>\n<pre class=detailCode>\ntemplate &lt;typename ValueType&gt;\nvoid shuffle(Vector&lt;ValueType&gt;&amp; vector);\n</pre>\n<div class=detailHTML>\nRandomly rearranges the elements of the given vector.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nshuffle(myVector);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/simpio.html",
    "content": "<html>\n<head>\n<title>simpio.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>simpio.h</code></h1>\nThis file exports a set of functions that simplify input/output\noperations in C++ and provide some error-checking on console input.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getInteger\">getInteger(<var>prompt</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Reads a complete line from <code>cin</code> and scans it as an integer.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getLine\">getLine(<var>prompt</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Reads a line of text from <code>cin</code> and returns that line as a string.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getReal\">getReal(<var>prompt</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Reads a complete line from <code>cin</code> and scans it as a floating-point number.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getYesOrNo\">getYesOrNo(<var>prompt</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Reads a complete line from <code>cin</code> and treats it as a yes-or-no answer to a question, returning a boolean value of <code>true</code> for yes and <code>false</code> for no.</td></tr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:getInteger\"></a>\n<pre class=detailCode>\nint getInteger(string prompt = \"\", string reprompt = \"\");\n</pre>\n<div class=detailHTML>\nReads a complete line from <code>cin</code> and scans it as an\ninteger. If the scan succeeds, the integer value is returned. If\nthe argument is not a legal integer or if extraneous characters\n(other than whitespace) appear in the string, the user is given\na chance to reenter the value. If supplied, the optional\n<code>prompt</code> string is printed before reading the value.\n\n<p>The also optional <code>reprompt</code> argument provides an output message\ndisplayed each time if the user types a file that is not found.\nIf no value is passed, defaults to, \"Illegal integer format. Try again.\".\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint n = getInteger(prompt);\n</pre>\n<hr>\n<a name=\"Function:getReal\"></a>\n<pre class=detailCode>\ndouble getReal(string prompt = \"\", string reprompt = \"\");\n</pre>\n<div class=detailHTML>\nReads a complete line from <code>cin</code> and scans it as a\nfloating-point number. If the scan succeeds, the floating-point\nvalue is returned.  If the input is not a legal number or if\nextraneous characters (other than whitespace) appear in the string,\nthe user is given a chance to reenter the value. If supplied, the\noptional <code>prompt</code> string is printed before reading the value.\n\n<p>The also optional <code>reprompt</code> argument provides an output message\ndisplayed each time if the user types a file that is not found.\nIf no value is passed, defaults to, \"Illegal numeric format. Try again.\".\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble x = getReal(prompt);\n</pre>\n<hr>\n<a name=\"Function:getLine\"></a>\n<pre class=detailCode>\nstring getLine(string prompt = \"\");\n</pre>\n<div class=detailHTML>\nReads a line of text from <code>cin</code> and returns that line\nas a string.  The newline character that terminates the input is\nnot stored as part of the return value.  If supplied, the optional\n<code>prompt</code> string is printed before reading the value.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring line = getLine(prompt);\n</pre>\n<hr>\n<a name=\"Function:getYesOrNo\"></a>\n<pre class=detailCode>\nbool getYesOrNo(string prompt = \"\", string reprompt = \"\");\n</pre>\n<div class=detailHTML>\nReads a complete line from <code>cin</code> and treats it as a yes-or-no answer to a question.  Returns <code>true</code> if the line typed begins with a 'y' or 'Y', and returns <code>false</code> if it begins with a 'n' or 'N'.  Otherwise the user is given a chance to reenter the value.\n\n<p>If supplied, the optional <code>prompt</code> string is printed before reading the value.\n\n<p>The also optional <code>reprompt</code> argument provides an output message\ndisplayed each time if the user types a file that is not found.\nIf no value is passed, defaults to,\n\"Please type a word that starts with 'Y' or 'N'.\".\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (getYesOrNo(prompt)) { ...\n</pre>\n<p class=\"since\">\n\tAvailable since: 2014/02/01 version of C++ library\n</p>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/sorttable.js",
    "content": "/*\n  SortTable\n  version 2\n  7th April 2007\n  Stuart Langridge, http://www.kryogenix.org/code/browser/sorttable/\n  \n  Instructions:\n  Download this file\n  Add <script src=\"sorttable.js\"></script> to your HTML\n  Add class=\"sorttable\" to any table you'd like to make sortable\n  Click on the headers to sort\n  \n  Thanks to many, many people for contributions and suggestions.\n  Licenced as X11: http://www.kryogenix.org/code/browser/licence.html\n  This basically means: do what you want with it.\n*/\n\n// Marty edit: wrap whole script in function to hide from global scope (module pattern) \n(function() {\n\tvar stIsIE = /*@cc_on!@*/false;\n\t\n\tsorttable = {\n\t  init: function() {\n\t    // quit if this function has already been called\n\t    if (arguments.callee.done) return;\n\t    // flag this function so we don't do the same thing twice\n\t    arguments.callee.done = true;\n\t    // kill the timer\n\t    if (_timer) clearInterval(_timer);\n\t    \n\t    if (!document.createElement || !document.getElementsByTagName) return;\n\t    \n\t    sorttable.DATE_RE = /^(\\d\\d?)[\\/\\.-](\\d\\d?)[\\/\\.-]((\\d\\d)?\\d\\d)$/;\n\t    \n\t    forEach(document.getElementsByTagName('table'), function(table) {\n\t      if (table.className.search(/\\bsorttable\\b/) != -1) {\n\t        sorttable.makeSortable(table);\n\t      }\n\t    });\n\t    \n\t  },\n\t  \n\t  makeSortable: function(table) {\n\t    if (table.getElementsByTagName('thead').length == 0) {\n\t      // table doesn't have a tHead. Since it should have, create one and\n\t      // put the first table row in it.\n\t      the = document.createElement('thead');\n\t      the.appendChild(table.rows[0]);\n\t      table.insertBefore(the,table.firstChild);\n\t    }\n\t    // Safari doesn't support table.tHead, sigh\n\t    if (table.tHead == null) table.tHead = table.getElementsByTagName('thead')[0];\n\t    \n\t    if (table.tHead.rows.length != 1) return; // can't cope with two header rows\n\t    \n\t    // Sorttable v1 put rows with a class of \"sortbottom\" at the bottom (as\n\t    // \"total\" rows, for example). This is B&R, since what you're supposed\n\t    // to do is put them in a tfoot. So, if there are sortbottom rows,\n\t    // for backwards compatibility, move them to tfoot (creating it if needed).\n\t    sortbottomrows = [];\n\t    for (var i=0; i<table.rows.length; i++) {\n\t      if (table.rows[i].className.search(/\\bsortbottom\\b/) != -1) {\n\t        sortbottomrows[sortbottomrows.length] = table.rows[i];\n\t      }\n\t    }\n\t    if (sortbottomrows) {\n\t      if (table.tFoot == null) {\n\t        // table doesn't have a tfoot. Create one.\n\t        tfo = document.createElement('tfoot');\n\t        table.appendChild(tfo);\n\t      }\n\t      for (var i=0; i<sortbottomrows.length; i++) {\n\t        tfo.appendChild(sortbottomrows[i]);\n\t      }\n\t      delete sortbottomrows;\n\t    }\n\t    \n\t    // work through each column and calculate its type\n\t    headrow = table.tHead.rows[0].cells;\n\t    for (var i=0; i<headrow.length; i++) {\n\t      // manually override the type with a sorttable_type attribute\n\t      if (!headrow[i].className.match(/\\bsorttable_nosort\\b/)) { // skip this col\n\t        mtch = headrow[i].className.match(/\\bsorttable_([a-z0-9]+)\\b/);\n\t        if (mtch) { override = mtch[1]; }\n\t\t      if (mtch && typeof sorttable[\"sort_\"+override] == 'function') {\n\t\t        headrow[i].sorttable_sortfunction = sorttable[\"sort_\"+override];\n\t\t      } else {\n\t\t        headrow[i].sorttable_sortfunction = sorttable.guessType(table,i);\n\t\t      }\n\t\t      // make it clickable to sort\n\t\t      headrow[i].sorttable_columnindex = i;\n\t\t      headrow[i].sorttable_tbody = table.tBodies[0];\n\t\t      dean_addEvent(headrow[i],\"click\", function(e) {\n\t\n\t          if (this.className.search(/\\bsorttable_sorted\\b/) != -1) {\n\t            // if we're already sorted by this column, just \n\t            // reverse the table, which is quicker\n\t            sorttable.reverse(this.sorttable_tbody);\n\t            this.className = this.className.replace('sorttable_sorted',\n\t                                                    'sorttable_sorted_reverse');\n\t            this.removeChild(document.getElementById('sorttable_sortfwdind'));\n\t            sortrevind = document.createElement('span');\n\t            sortrevind.id = \"sorttable_sortrevind\";\n\t            sortrevind.innerHTML = stIsIE ? '&nbsp<font face=\"webdings\">5</font>' : '&nbsp;&#x25B4;';\n\t            this.appendChild(sortrevind);\n\t            return;\n\t          }\n\t          if (this.className.search(/\\bsorttable_sorted_reverse\\b/) != -1) {\n\t            // if we're already sorted by this column in reverse, just \n\t            // re-reverse the table, which is quicker\n\t            sorttable.reverse(this.sorttable_tbody);\n\t            this.className = this.className.replace('sorttable_sorted_reverse',\n\t                                                    'sorttable_sorted');\n\t            this.removeChild(document.getElementById('sorttable_sortrevind'));\n\t            sortfwdind = document.createElement('span');\n\t            sortfwdind.id = \"sorttable_sortfwdind\";\n\t            sortfwdind.innerHTML = stIsIE ? '&nbsp<font face=\"webdings\">6</font>' : '&nbsp;&#x25BE;';\n\t            this.appendChild(sortfwdind);\n\t            return;\n\t          }\n\t          \n\t          // remove sorttable_sorted classes\n\t          theadrow = this.parentNode;\n\t          forEach(theadrow.childNodes, function(cell) {\n\t            if (cell.nodeType == 1) { // an element\n\t              cell.className = cell.className.replace('sorttable_sorted_reverse','');\n\t              cell.className = cell.className.replace('sorttable_sorted','');\n\t            }\n\t          });\n\t          sortfwdind = document.getElementById('sorttable_sortfwdind');\n\t          if (sortfwdind) { sortfwdind.parentNode.removeChild(sortfwdind); }\n\t          sortrevind = document.getElementById('sorttable_sortrevind');\n\t          if (sortrevind) { sortrevind.parentNode.removeChild(sortrevind); }\n\t          \n\t          this.className += ' sorttable_sorted';\n\t          sortfwdind = document.createElement('span');\n\t          sortfwdind.id = \"sorttable_sortfwdind\";\n\t          sortfwdind.innerHTML = stIsIE ? '&nbsp<font face=\"webdings\">6</font>' : '&nbsp;&#x25BE;';\n\t          this.appendChild(sortfwdind);\n\t\n\t\t        // build an array to sort. This is a Schwartzian transform thing,\n\t\t        // i.e., we \"decorate\" each row with the actual sort key,\n\t\t        // sort based on the sort keys, and then put the rows back in order\n\t\t        // which is a lot faster because you only do getInnerText once per row\n\t\t        row_array = [];\n\t\t        col = this.sorttable_columnindex;\n\t\t        rows = this.sorttable_tbody.rows;\n\t\t        for (var j=0; j<rows.length; j++) {\n\t\t          row_array[row_array.length] = [sorttable.getInnerText(rows[j].cells[col]), rows[j]];\n\t\t        }\n\t\t        /* If you want a stable sort, uncomment the following line */\n\t\t        //sorttable.shaker_sort(row_array, this.sorttable_sortfunction);\n\t\t        /* and comment out this one */\n\t\t        row_array.sort(this.sorttable_sortfunction);\n\t\t        \n\t\t        tb = this.sorttable_tbody;\n\t\t        for (var j=0; j<row_array.length; j++) {\n\t\t          tb.appendChild(row_array[j][1]);\n\t\t        }\n\t\t        \n\t\t        delete row_array;\n\t\t      });\n\t\t    }\n\t    }\n\t  },\n\t  \n\t  guessType: function(table, column) {\n\t    // guess the type of a column based on its first non-blank row\n\t    sortfn = sorttable.sort_alpha;\n\t    for (var i=0; i<table.tBodies[0].rows.length; i++) {\n\t      text = sorttable.getInnerText(table.tBodies[0].rows[i].cells[column]);\n\t      if (text != '') {\n\t        if (text.match(/^-?[£$¤]?[\\d,.]+%?$/)) {\n\t          return sorttable.sort_numeric;\n\t        }\n\t        // check for a date: dd/mm/yyyy or dd/mm/yy \n\t        // can have / or . or - as separator\n\t        // can be mm/dd as well\n\t        possdate = text.match(sorttable.DATE_RE)\n\t        if (possdate) {\n\t          // looks like a date\n\t          first = parseInt(possdate[1]);\n\t          second = parseInt(possdate[2]);\n\t          if (first > 12) {\n\t            // definitely dd/mm\n\t            return sorttable.sort_ddmm;\n\t          } else if (second > 12) {\n\t            return sorttable.sort_mmdd;\n\t          } else {\n\t            // looks like a date, but we can't tell which, so assume\n\t            // that it's dd/mm (English imperialism!) and keep looking\n\t            sortfn = sorttable.sort_ddmm;\n\t          }\n\t        }\n\t      }\n\t    }\n\t    return sortfn;\n\t  },\n\t  \n\t  getInnerText: function(node) {\n\t    // gets the text we want to use for sorting for a cell.\n\t    // strips leading and trailing whitespace.\n\t    // this is *not* a generic getInnerText function; it's special to sorttable.\n\t    // for example, you can override the cell text with a customkey attribute.\n\t    // it also gets .value for <input> fields.\n\t    \n\t    hasInputs = (typeof node.getElementsByTagName == 'function') &&\n\t                 node.getElementsByTagName('input').length;\n\t    \n\t    if (node.getAttribute(\"sorttable_customkey\") != null) {\n\t      return node.getAttribute(\"sorttable_customkey\");\n\t    }\n\t    else if (typeof node.textContent != 'undefined' && !hasInputs) {\n\t      return node.textContent.replace(/^\\s+|\\s+$/g, '');\n\t    }\n\t    else if (typeof node.innerText != 'undefined' && !hasInputs) {\n\t      return node.innerText.replace(/^\\s+|\\s+$/g, '');\n\t    }\n\t    else if (typeof node.text != 'undefined' && !hasInputs) {\n\t      return node.text.replace(/^\\s+|\\s+$/g, '');\n\t    }\n\t    else {\n\t      switch (node.nodeType) {\n\t        case 3:\n\t          if (node.nodeName.toLowerCase() == 'input') {\n\t            return node.value.replace(/^\\s+|\\s+$/g, '');\n\t          }\n\t        case 4:\n\t          return node.nodeValue.replace(/^\\s+|\\s+$/g, '');\n\t          break;\n\t        case 1:\n\t        case 11:\n\t          var innerText = '';\n\t          for (var i = 0; i < node.childNodes.length; i++) {\n\t            innerText += sorttable.getInnerText(node.childNodes[i]);\n\t          }\n\t          return innerText.replace(/^\\s+|\\s+$/g, '');\n\t          break;\n\t        default:\n\t          return '';\n\t      }\n\t    }\n\t  },\n\t  \n\t  reverse: function(tbody) {\n\t    // reverse the rows in a tbody\n\t    newrows = [];\n\t    for (var i=0; i<tbody.rows.length; i++) {\n\t      newrows[newrows.length] = tbody.rows[i];\n\t    }\n\t    for (var i=newrows.length-1; i>=0; i--) {\n\t       tbody.appendChild(newrows[i]);\n\t    }\n\t    delete newrows;\n\t  },\n\t  \n\t  /* sort functions\n\t     each sort function takes two parameters, a and b\n\t     you are comparing a[0] and b[0] */\n\t  sort_numeric: function(a,b) {\n\t    aa = parseFloat(a[0].replace(/[^0-9.-]/g,''));\n\t    if (isNaN(aa)) aa = 0;\n\t    bb = parseFloat(b[0].replace(/[^0-9.-]/g,'')); \n\t    if (isNaN(bb)) bb = 0;\n\t    return aa-bb;\n\t  },\n\t  sort_alpha: function(a,b) {\n\t    if (a[0]==b[0]) return 0;\n\t    if (a[0]<b[0]) return -1;\n\t    return 1;\n\t  },\n\t  sort_ddmm: function(a,b) {\n\t    mtch = a[0].match(sorttable.DATE_RE);\n\t    y = mtch[3]; m = mtch[2]; d = mtch[1];\n\t    if (m.length == 1) m = '0'+m;\n\t    if (d.length == 1) d = '0'+d;\n\t    dt1 = y+m+d;\n\t    mtch = b[0].match(sorttable.DATE_RE);\n\t    y = mtch[3]; m = mtch[2]; d = mtch[1];\n\t    if (m.length == 1) m = '0'+m;\n\t    if (d.length == 1) d = '0'+d;\n\t    dt2 = y+m+d;\n\t    if (dt1==dt2) return 0;\n\t    if (dt1<dt2) return -1;\n\t    return 1;\n\t  },\n\t  sort_mmdd: function(a,b) {\n\t    mtch = a[0].match(sorttable.DATE_RE);\n\t    y = mtch[3]; d = mtch[2]; m = mtch[1];\n\t    if (m.length == 1) m = '0'+m;\n\t    if (d.length == 1) d = '0'+d;\n\t    dt1 = y+m+d;\n\t    mtch = b[0].match(sorttable.DATE_RE);\n\t    y = mtch[3]; d = mtch[2]; m = mtch[1];\n\t    if (m.length == 1) m = '0'+m;\n\t    if (d.length == 1) d = '0'+d;\n\t    dt2 = y+m+d;\n\t    if (dt1==dt2) return 0;\n\t    if (dt1<dt2) return -1;\n\t    return 1;\n\t  },\n\t  \n\t  shaker_sort: function(list, comp_func) {\n\t    // A stable sort function to allow multi-level sorting of data\n\t    // see: http://en.wikipedia.org/wiki/Cocktail_sort\n\t    // thanks to Joseph Nahmias\n\t    var b = 0;\n\t    var t = list.length - 1;\n\t    var swap = true;\n\t\n\t    while(swap) {\n\t        swap = false;\n\t        for(var i = b; i < t; ++i) {\n\t            if ( comp_func(list[i], list[i+1]) > 0 ) {\n\t                var q = list[i]; list[i] = list[i+1]; list[i+1] = q;\n\t                swap = true;\n\t            }\n\t        } // for\n\t        t--;\n\t\n\t        if (!swap) break;\n\t\n\t        for(var i = t; i > b; --i) {\n\t            if ( comp_func(list[i], list[i-1]) < 0 ) {\n\t                var q = list[i]; list[i] = list[i-1]; list[i-1] = q;\n\t                swap = true;\n\t            }\n\t        } // for\n\t        b++;\n\t\n\t    } // while(swap)\n\t  }  \n\t}\n\t\n\t/* ******************************************************************\n\t   Supporting functions: bundled here to avoid depending on a library\n\t   ****************************************************************** */\n\t\n\t// Dean Edwards/Matthias Miller/John Resig\n\t\n\t/* for Mozilla/Opera9 */\n\tif (document.addEventListener) {\n\t    document.addEventListener(\"DOMContentLoaded\", sorttable.init, false);\n\t}\n\t\n\t/* for Internet Explorer */\n\t/*@cc_on @*/\n\t/*@if (@_win32)\n\t    document.write(\"<script id=__ie_onload defer src=javascript:void(0)><\\/script>\");\n\t    var script = document.getElementById(\"__ie_onload\");\n\t    script.onreadystatechange = function() {\n\t        if (this.readyState == \"complete\") {\n\t            sorttable.init(); // call the onload handler\n\t        }\n\t    };\n\t/*@end @*/\n\t\n\t/* for Safari */\n\tif (/WebKit/i.test(navigator.userAgent)) { // sniff\n\t    var _timer = setInterval(function() {\n\t        if (/loaded|complete/.test(document.readyState)) {\n\t            sorttable.init(); // call the onload handler\n\t        }\n\t    }, 10);\n\t}\n\t\n\t/* for other browsers */\n\twindow.onload = sorttable.init;\n\t\n\t// written by Dean Edwards, 2005\n\t// with input from Tino Zijdel, Matthias Miller, Diego Perini\n\t\n\t// http://dean.edwards.name/weblog/2005/10/add-event/\n\t\n\tfunction dean_addEvent(element, type, handler) {\n\t\tif (element.addEventListener) {\n\t\t\telement.addEventListener(type, handler, false);\n\t\t} else {\n\t\t\t// assign each event handler a unique ID\n\t\t\tif (!handler.$$guid) handler.$$guid = dean_addEvent.guid++;\n\t\t\t// create a hash table of event types for the element\n\t\t\tif (!element.events) element.events = {};\n\t\t\t// create a hash table of event handlers for each element/event pair\n\t\t\tvar handlers = element.events[type];\n\t\t\tif (!handlers) {\n\t\t\t\thandlers = element.events[type] = {};\n\t\t\t\t// store the existing event handler (if there is one)\n\t\t\t\tif (element[\"on\" + type]) {\n\t\t\t\t\thandlers[0] = element[\"on\" + type];\n\t\t\t\t}\n\t\t\t}\n\t\t\t// store the event handler in the hash table\n\t\t\thandlers[handler.$$guid] = handler;\n\t\t\t// assign a global event handler to do all the work\n\t\t\telement[\"on\" + type] = handleEvent;\n\t\t}\n\t};\n\t// a counter used to create unique IDs\n\tdean_addEvent.guid = 1;\n\t\n\tfunction removeEvent(element, type, handler) {\n\t\tif (element.removeEventListener) {\n\t\t\telement.removeEventListener(type, handler, false);\n\t\t} else {\n\t\t\t// delete the event handler from the hash table\n\t\t\tif (element.events && element.events[type]) {\n\t\t\t\tdelete element.events[type][handler.$$guid];\n\t\t\t}\n\t\t}\n\t};\n\t\n\tfunction handleEvent(event) {\n\t\tvar returnValue = true;\n\t\t// grab the event object (IE uses a global event object)\n\t\tevent = event || fixEvent(((this.ownerDocument || this.document || this).parentWindow || window).event);\n\t\t// get a reference to the hash table of event handlers\n\t\tvar handlers = this.events[event.type];\n\t\t// execute each event handler\n\t\tfor (var i in handlers) {\n\t\t\tthis.$$handleEvent = handlers[i];\n\t\t\tif (this.$$handleEvent(event) === false) {\n\t\t\t\treturnValue = false;\n\t\t\t}\n\t\t}\n\t\treturn returnValue;\n\t};\n\t\n\tfunction fixEvent(event) {\n\t\t// add W3C standard event methods\n\t\tevent.preventDefault = fixEvent.preventDefault;\n\t\tevent.stopPropagation = fixEvent.stopPropagation;\n\t\treturn event;\n\t};\n\tfixEvent.preventDefault = function() {\n\t\tthis.returnValue = false;\n\t};\n\tfixEvent.stopPropagation = function() {\n\t  this.cancelBubble = true;\n\t}\n\t\n\t// Dean's forEach: http://dean.edwards.name/base/forEach.js\n\t/*\n\t\tforEach, version 1.0\n\t\tCopyright 2006, Dean Edwards\n\t\tLicense: http://www.opensource.org/licenses/mit-license.php\n\t*/\n\t\n\t// array-like enumeration\n\tif (!Array.forEach) { // mozilla already supports this\n\t\tArray.forEach = function(array, block, context) {\n\t\t\tfor (var i = 0; i < array.length; i++) {\n\t\t\t\tblock.call(context, array[i], i, array);\n\t\t\t}\n\t\t};\n\t}\n\t\n\t// generic enumeration\n\tFunction.prototype.forEach = function(object, block, context) {\n\t\tfor (var key in object) {\n\t\t\tif (typeof this.prototype[key] == \"undefined\") {\n\t\t\t\tblock.call(context, object[key], key, object);\n\t\t\t}\n\t\t}\n\t};\n\t\n\t// character enumeration\n\tString.forEach = function(string, block, context) {\n\t\tArray.forEach(string.split(\"\"), function(chr, index) {\n\t\t\tblock.call(context, chr, index, string);\n\t\t});\n\t};\n\t\n\t// globally resolve forEach enumeration\n\tvar forEach = function(object, block, context) {\n\t\tif (object) {\n\t\t\tvar resolve = Object; // default\n\t\t\tif (object instanceof Function) {\n\t\t\t\t// functions have a \"length\" property\n\t\t\t\tresolve = Function;\n\t\t\t} else if (object.forEach instanceof Function) {\n\t\t\t\t// the object implements a custom forEach method so use that\n\t\t\t\tobject.forEach(block, context);\n\t\t\t\treturn;\n\t\t\t} else if (typeof object == \"string\") {\n\t\t\t\t// the object is a string\n\t\t\t\tresolve = String;\n\t\t\t} else if (typeof object.length == \"number\") {\n\t\t\t\t// the object is array-like\n\t\t\t\tresolve = Array;\n\t\t\t}\n\t\t\tresolve.forEach(object, block, context);\n\t\t}\n\t};\n})();\n"
  },
  {
    "path": "Archived/cppdoc/sound.html",
    "content": "<html>\n<head>\n<title>sound.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>sound.h</code></h1>\nThis file defines a class that represents a sound.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Class</td></tr>\n<tr><td class=indexKey><nobr><a href=\"Sound-class.html\">Sound</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class encapsulates a sound file.</td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/sparsegrid.html",
    "content": "<html>\n<head>\n<title>sparsegrid.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>sparsegrid.h</code></h1>\nThis file exports the <code>SparseGrid</code> class, which offers a\nconvenient abstraction for representing a sparse two-dimensional array.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Class</td></tr>\n<tr><td class=indexKey><nobr><a href=\"SparseGrid-class.html\">SparseGrid&lt;<var>ValueType</var>&gt;</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class stores an indexed, sparse two-dimensional array.</td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/stack.html",
    "content": "<html>\n<head>\n<title>stack.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>stack.h</code></h1>\nThis file exports the <code>Stack</code> class, which implements\na collection that processes values in a last-in/first-out (LIFO) order.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Class</td></tr>\n<tr><td class=indexKey><nobr><a href=\"Stack-class.html\">Stack&lt;<var>ValueType</var>&gt;</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class models a linear structure called a <b><i>stack</i></b> in which values are added and removed only from one end.</td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/strlib.html",
    "content": "<html>\n<head>\n<title>strlib.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>strlib.h</code></h1>\nThis file exports several useful string functions that are not\nincluded in the C++ string library.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n\n<tr><td class=indexKey><nobr><a href=\"#Function:boolToString\">boolToString(<var>b</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Converts a boolean value into the corresponding string form.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:charToString\">charToString(<var>c</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Converts a character value into the corresponding string form.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:endsWith\">endsWith(<var>str</var>,&nbsp;<var>suffix</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the string <code>str</code> ends with the specified suffix, which may be either a string or a character.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:equalsIgnoreCase\">equalsIgnoreCase(<var>s1</var>,&nbsp;<var>s2</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if <code>s1</code> and <code>s2</code> are equal discounting differences in case.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:integerToString\">integerToString(<var>n</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Converts an integer into the corresponding string of digits.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:realToString\">realToString(<var>d</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Converts a floating-point number into the corresponding string form.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:startsWith\">startsWith(<var>str</var>,&nbsp;<var>prefix</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the string <code>str</code> starts with the specified prefix, which may be either a string or a character.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:stringContains\">stringContains(<var>str</var>,&nbsp;<var>substr</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns whether the given substring can be found in the given string.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:stringIndexOf\">stringIndexOf(<var>str</var>,&nbsp;<var>substr</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the index of the start of the first occurrence of the given substring in the given string.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:stringIsInteger\">stringIsInteger(<var>str</var>)</a>&nbsp;<br>\n<a href=\"#Function:stringIsInteger\">stringIsInteger(<var>str</var>, <var>radix</var>)</a></nobr></td><td class=indexSynopsis width=100%>Returns whether the given string can be successfully converted into an integer.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:stringIsReal\">stringIsReal(<var>str</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns whether the given string can be successfully converted into a real number.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:stringJoin\">stringJoin(<var>v</var>,&nbsp;<var>delimiter</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Concatenates the given vector of strings into a single string using the given separator.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:stringLastIndexOf\">stringLastIndexOf(<var>str</var>,&nbsp;<var>substr</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the index of the start of the last occurrence of the given substring in the given string.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:stringReplace\">stringReplace(<var>str</var>,&nbsp;<var>old</var>,&nbsp;<var>new</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a new string with all occurrences of <var>old</var> changed into <var>new</var>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:stringSplit\">stringSplit(<var>str</var>,&nbsp;<var>delimiter</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Breaks apart the given string using the given separator.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:stringToBool\">stringToBool(<var>str</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Converts a string representing a boolean value into its corresponding value.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:stringToChar\">stringToChar(<var>str</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Converts a single-character string into its corresponding char value.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:stringToInteger\">stringToInteger(<var>str</var>)</a><br>\n<a href=\"#Function:stringToInteger\">stringToInteger(<var>str</var>, <var>radix</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Converts a string of digits into an integer.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:stringToReal\">stringToReal(<var>str</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Converts a string representing a real number into its corresponding value.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:toLowerCase\">toLowerCase(<var>str</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a new string in which all uppercase characters have been converted into their lowercase equivalents.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:toUpperCase\">toUpperCase(<var>str</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a new string in which all lowercase characters have been converted into their uppercase equivalents.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:trim\">trim(<var>str</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a new string after removing any whitespace characters from the beginning and end of the argument.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:trimEnd\">trimEnd(<var>str</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a new string after removing any whitespace characters from the end of the argument.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:trimStart\">trimStart(<var>str</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a new string after removing any whitespace characters from the beginning of the argument.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:urlDecode\">urlDecode(<var>str</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a URL-decoded version of the given string.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:urlEncode\">urlEncode(<var>str</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a URL-encoded version of the given string.</td></tr>\n</table>\n\n<h2>Function detail</h2>\n<hr>\n\n<a name=\"Function:integerToString\"></a>\n<pre class=detailCode>\nstring integerToString(int n);\n</pre>\n<div class=detailHTML>\nConverts an integer into the corresponding string of digits.\nFor example, calling <code>integerToString(123)</code> returns\nthe string <code>\"123\"</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring s = integerToString(n);\n</pre>\n<hr>\n\n<a name=\"Function:stringToInteger\"></a>\n<pre class=detailCode>\nint stringToInteger(string str);\nint stringToInteger(string str, int radix);\n</pre>\n<div class=detailHTML>\nConverts a string of digits into an integer.  If the string is not a\nlegal integer or contains extraneous characters other than whitespace,\n<code>stringToInteger</code> calls <code>error</code> with an\nappropriate message.\nThe function accepts an optional radix (base); for example,\n<code>stringToInteger(\"234\", 16)</code> assumes that the string is in base-16 and\nreturns 2*16*16 + 3*16 + 4 = 564.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint n = stringToInteger(str);\nint n2 = stringToInteger(str, radix);\n</pre>\n<p class=\"since\">\n\tSecond version of this function (with radix parameter) available since: 2015/04/26 version of C++ library\n</p>\n<hr>\n<a name=\"Function:stringIsInteger\"></a>\n<pre class=detailCode>\nbool stringIsInteger(string str);\nbool stringIsInteger(string str, int radix);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the given string can be successfully converted into an integer; that is, if it consists of digits and an optional +/- sign at the front.\nIt can be useful to call this function before calling <code>stringToInteger</code> to make sure that the conversion will not fail.\nOptionally accepts a radix (base) parameter if base-10 is not desired.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (stringIsInteger(str)) { ...\n</pre>\n<p class=\"since\">\n\tAvailable since: 2014/02/01 version of C++ library\n</p>\n<p class=\"since\">\n\tSecond version of this function (with radix parameter) available since: 2015/04/26 version of C++ library\n</p>\n<hr>\n<a name=\"Function:stringIsReal\"></a>\n<pre class=detailCode>\nbool stringIsReal(string str);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the given string can be successfully converted into a real number; that is, if it consists of digits, an optional decimal point, an optional +/- sign at the front, and so on.\nIt can be useful to call this function before calling <code>stringToReal</code> to make sure that the conversion will not fail.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (stringIsReal(str)) { ...\n</pre>\n<p class=\"since\">\n\tAvailable since: 2014/02/01 version of C++ library\n</p>\n<hr>\n<a name=\"Function:realToString\"></a>\n<pre class=detailCode>\nstring realToString(double d);\n</pre>\n<div class=detailHTML>\nConverts a floating-point number into the corresponding string form.\nFor example, calling <code>realToString(23.45)</code> returns\nthe string <code>\"23.45\"</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring s = realToString(d);\n</pre>\n<hr>\n<a name=\"Function:stringToReal\"></a>\n<pre class=detailCode>\ndouble stringToReal(string str);\n</pre>\n<div class=detailHTML>\nConverts a string representing a real number into its corresponding\nvalue.  If the string is not a legal floating-point number or contains\nextraneous characters other than whitespace, <code>stringToReal</code>\ncalls <code>error</code> with an appropriate message.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble d = stringToReal(str);\n</pre>\n<hr>\n<a name=\"Function:boolToString\"></a>\n<pre class=detailCode>\nstring boolToString(bool b);\n</pre>\n<div class=detailHTML>\nConverts a boolean value into the corresponding string form.\nFor example, calling <code>boolToString(true)</code> returns\nthe string <code>\"true\"</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring s = boolToString(b);\n</pre>\n<p class=\"since\">\n\tAvailable since: 2014/02/01 version of C++ library\n</p>\n<hr>\n<a name=\"Function:stringToBool\"></a>\n<pre class=detailCode>\nbool stringToBool(string str);\n</pre>\n<div class=detailHTML>\nConverts a string representing a boolean value into its corresponding\nvalue.  The only values recognized are the string literals <code>&quot;true&quot;</code> or <code>&quot;false&quot;</code>.\nIf the string is not <code>&quot;true&quot;</code> or <code>&quot;false&quot;</code> or contains\nextraneous characters other than whitespace, <code>stringToBool</code>\ncalls <code>error</code> with an appropriate message.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nbool b = stringToBool(str);\n</pre>\n<p class=\"since\">\n\tAvailable since: 2014/02/01 version of C++ library\n</p>\n<hr>\n<a name=\"Function:charToString\"></a>\n<pre class=detailCode>\nstring charToString(char c);\n</pre>\n<div class=detailHTML>\nConverts a character into the corresponding string form.\nFor example, calling <code>charToString('Q')</code> returns\nthe string <code>\"Q\"</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring s = charToString(c);\n</pre>\n<p class=\"since\">\n\tAvailable since: 2014/02/01 version of C++ library\n</p>\n<hr>\n<a name=\"Function:stringTochar\"></a>\n<pre class=detailCode>\nchar stringToChar(string str);\n</pre>\n<div class=detailHTML>\nConverts a single-character string into its corresponding <code>char</code>\nvalue.  Typically you can just write <code>str[0]</code> to access the\nfirst character of a string; this function is merely provided for consistency\nwith the other type-conversion functions.\n\nIf the string is not exactly 1 character in length or contains\nextraneous characters other than whitespace, <code>stringTochar</code>\ncalls <code>error</code> with an appropriate message.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nchar c = stringToChar(str);\n</pre>\n<p class=\"since\">\n\tAvailable since: 2014/02/01 version of C++ library\n</p>\n<hr>\n<a name=\"Function:stringContains\"></a>\n<pre class=detailCode>\nbool stringContains(string str, string substr);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the given substring can be found within the given string.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (stringContains(str, substr)) { ...\n</pre>\n<p class=\"since\">\n\tAvailable since: 2014/02/01 version of C++ library\n</p>\n<hr>\n<a name=\"Function:stringReplace\"></a>\n<pre class=detailCode>\nstring stringReplace(string str, string old, string replacement);\n</pre>\n<div class=detailHTML>\nReturns a new string that is the same as <code>str</code> but with all occurrences of <code>old</code> changed into <code>replacement</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring s = stringReplace(s, &quot;foo&quot;, &quot;bar&quot;);\n</pre>\n<p class=\"since\">\n\tAvailable since: 2014/02/01 version of C++ library\n</p>\n<hr>\n<a name=\"Function:toUpperCase\"></a>\n<pre class=detailCode>\nstring toUpperCase(string str);\n</pre>\n<div class=detailHTML>\nReturns a new string in which all lowercase characters have been converted\ninto their uppercase equivalents.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring s = toUpperCase(str);\n</pre>\n<hr>\n<a name=\"Function:toLowerCase\"></a>\n<pre class=detailCode>\nstring toLowerCase(string str);\n</pre>\n<div class=detailHTML>\nReturns a new string in which all uppercase characters have been converted\ninto their lowercase equivalents.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring s = toLowerCase(str);\n</pre>\n<hr>\n<a name=\"Function:equalsIgnoreCase\"></a>\n<pre class=detailCode>\nbool equalsIgnoreCase(string s1, string s2);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if <code>s1</code> and <code>s2</code> are\nequal discounting differences in case.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (equalsIgnoreCase(s1, s2)) ...\n</pre>\n<hr>\n<a name=\"Function:startsWith\"></a>\n<pre class=detailCode>\nbool startsWith(string str, string prefix);\nbool startsWith(string str, char prefix);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the string <code>str</code> starts with\nthe specified prefix, which may be either a string or a character.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (startsWith(str, prefix)) ...\n</pre>\n<hr>\n<a name=\"Function:endsWith\"></a>\n<pre class=detailCode>\nbool endsWith(string str, string suffix);\nbool endsWith(string str, char suffix);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the string <code>str</code> ends with\nthe specified suffix, which may be either a string or a character.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (endsWith(str, suffix)) ...\n</pre>\n<hr>\n<a name=\"Function:trim\"></a>\n<pre class=detailCode>\nstring trim(string str);\n</pre>\n<div class=detailHTML>\nReturns a new string after removing any whitespace characters\nfrom the beginning and end of the argument.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring trimmed = trim(str);\n</pre>\n<hr>\n<a name=\"Function:trimEnd\"></a>\n<pre class=detailCode>\nstring trimEnd(string str);\n</pre>\n<div class=detailHTML>\nReturns a new string after removing any whitespace characters\nfrom the end of the argument.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring trimmed = trimEnd(str);\n</pre>\n<hr>\n<a name=\"Function:trimStart\"></a>\n<pre class=detailCode>\nstring trimStart(string str);\n</pre>\n<div class=detailHTML>\nReturns a new string after removing any whitespace characters\nfrom the beginning of the argument.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring trimmed = trimStart(str);\n</pre>\n<hr>\n\n\n<a name=\"Function:stringIndexOf\"></a>\n<pre class=detailCode>\nint stringIndexOf(string s, string substring);\n</pre>\n<div class=detailHTML>\nReturns the index of the start of the first occurrence of the given substring in <code>s</code>, if it occurs in <code>s</code>.\nIf it does not occur, returns <code>-1</code>.\nThis function is very similar to <code>string.find</code>, but <code>find</code> returns <code>string::npos</code> when the string is not found.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint index = stringIndexOf(s, sub);\n</pre>\n<p class=\"since\">\n\tAvailable since: 2014/02/01 version of C++ library\n</p>\n<hr>\n\n<a name=\"Function:stringLastIndexOf\"></a>\n<pre class=detailCode>\nint stringLastIndexOf(string s, string substring);\n</pre>\n<div class=detailHTML>\nReturns the index of the start of the last occurrence of the given substring in <code>s</code>, if it occurs in <code>s</code>.\nIf it does not occur, returns <code>-1</code>.\nThis function is very similar to <code>string.rfind</code>, but <code>find</code> returns <code>string::npos</code> when the string is not found.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint index = stringLastIndexOf(s, sub);\n</pre>\n<p class=\"since\">\n\tAvailable since: 2014/02/01 version of C++ library\n</p>\n<hr>\n\n<a name=\"Function:stringSplit\"></a>\n<pre class=detailCode>\nvector&lt;string&gt; stringSplit(string str, string delimiter);\n</pre>\n<div class=detailHTML>\nReturns an <strong>STL vector</strong> whose elements are strings formed by splitting the given string by the given separator.\nFor example, splitting <code>\"Hi&nbsp;there&nbsp;&nbsp;Jim!\"</code> on <code>&quot;&nbsp;&quot;</code> returns <code>{&quot;Hi&quot;, &quot;there&quot;, &quot;&quot;, &quot;Jim!&quot;}</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvector&lt;string&gt; v = stringSplit(str, delimiter);\n</pre>\n<p class=\"since\">\n\tAvailable since: 2014/02/01 version of C++ library\n</p>\n<hr>\n\n<a name=\"Function:stringJoin\"></a>\n<pre class=detailCode>\nstring stringJoin(const vector&lt;string&gt;& v, string delimiter = &quot;\\n&quot;);\n</pre>\n<div class=detailHTML>\nCombines the elements of the given STL vector into a single string, with the given delimiter separating neighboring elements, and returns it.\nFor example, joining the elements of the vector <code>{&quot;Hi&quot;, &quot;there&quot;, &quot;&quot;, &quot;Jim&quot;}</code> with the delimiter <code>&quot;?&quot;</code> returns <code>&quot;Hi?there??Jim&quot;</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring s = stringJoin(v, delimiter);\n</pre>\n<p class=\"since\">\n\tAvailable since: 2014/02/01 version of C++ library\n</p>\n<hr>\n\n<a name=\"Function:urlDecode\"></a>\n<pre class=detailCode>\nstring urlDecode(string value);\n</pre>\n<div class=detailHTML>\nReturns a URL-decoded version of the given string, where any %xx character codes are converted back to the equivalent characters.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring s = urlDecode(value);\n</pre>\n<p class=\"since\">\n\tAvailable since: 2014/02/01 version of C++ library\n</p>\n<hr>\n\n<a name=\"Function:urlEncode\"></a>\n<pre class=detailCode>\nstring urlEncode(string value);\n</pre>\n<div class=detailHTML>\nReturns a URL-encoded version of the given string, where most non- alphabetic characters are replaced by %xx character codes.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring s = urlEncode(value);\n</pre>\n<p class=\"since\">\n\tAvailable since: 2014/02/01 version of C++ library\n</p>\n<hr>\n\n\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/thread.html",
    "content": "<html>\n<head>\n<title>thread.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>thread.h</code></h1>\nThis file exports a simple, platform-independent thread abstraction,\nalong with simple tools for concurrency control.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Classes</td></tr>\n<tr><td class=indexKey><nobr><a href=\"Lock-class.html\">Lock</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class represents a simple lock used to control concurrency.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"Thread-class.html\">Thread</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class encapsulates a lightweight process running in the same address space as the creator.</td></tr>\n<tr><td class=indexHead colspan=2>Statement</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Statement:synchronized\">synchronized&nbsp;(<var>lock</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Defines a critical section protected by the specified lock.</td></tr>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:fork\">fork(<var>fn</var>)</a><br><a href=\"#Function:fork\">fork(fn,&nbsp;data)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a child thread that calls <code>fn</code> in an address space shared with the current thread.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getCurrentThread\">getCurrentThread()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the currently executing thread.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:join\">join(<var>thread</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Waits for the specified thread to finish before proceeding.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:yield\">yield()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Yields the processor to allow another thread to run.</td></tr>\n</table>\n<h2>Statement detail</h2>\n<hr>\n<a name=\"Statement:synchronized\"></a>\n<pre class=detailCode>\nsynchronized (<var>lock</var>) ...\n</pre>\n<div class=detailHTML>\nDefines a critical section protected by the specified lock.  The\ngeneral strategy for using this facility is shown in the following\nparadigmatic pattern:<p>\n\n<pre>\n   synchronized (lock) {\n      ... statements in the critical section ...\n   }\n</pre>\n</div>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:fork\"></a>\n<pre class=detailCode>\nThread fork(void (*fn)());\nThread fork(void (*fn)(ClientType&amp; data), ClientType&amp; data);\n</pre>\n<div class=detailHTML>\nCreates a child thread that calls <code>fn</code> in an address space\nshared with the current thread.  The second form makes it possible to\npass an argument to <code>fn</code>, which may be of any type.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nThread child = fork(fn);\nThread child = fork(fn, data);\n</pre>\n<hr>\n<a name=\"Function:join\"></a>\n<pre class=detailCode>\nvoid join(Thread&amp; thread);\n</pre>\n<div class=detailHTML>\nWaits for the specified thread to finish before proceeding.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\njoin(thread);\n</pre>\n<hr>\n<a name=\"Function:yield\"></a>\n<pre class=detailCode>\nvoid yield();\n</pre>\n<div class=detailHTML>\nYields the processor to allow another thread to run.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nyield();\n</pre>\n<hr>\n<a name=\"Function:getCurrentThread\"></a>\n<pre class=detailCode>\nThread getCurrentThread();\n</pre>\n<div class=detailHTML>\nReturns the currently executing thread.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nThread self = getCurrentThread();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/timer.html",
    "content": "<html>\n<head>\n<title>timer.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>timer.h</code></h1>\nThis file defines the <code>Timer</code> class, which measures intervals of runtime and can be useful for timing tests.\nThis is not to be confused with <code>GTimer</code>, which fires events at regular intervals.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Class</td></tr>\n<tr><td class=indexKey><nobr><a href=\"Timer-class.html\">Timer</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class implements a simple start/stop timer that can tell you how much time has elapsed since it was started.</td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/tokenscanner.html",
    "content": "<html>\n<head>\n<title>tokenscanner.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>tokenscanner.h</code></h1>\nThis file exports a <code>TokenScanner</code> class that divides\na string into individual logical units called <b><i>tokens</i></b>.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Class</td></tr>\n<tr><td class=indexKey><nobr><a href=\"TokenScanner-class.html\">TokenScanner</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class divides a string into individual tokens.</td></tr>\n<tr><td class=indexHead colspan=2>Type</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:TokenType\">TokenType</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This enumerated type defines the values of the <code>getTokenType</code> method.</td></tr>\n</table>\n<h2>Type detail</h2>\n<hr>\n<a name=\"Type:TokenType\"></a>\n<pre class=detailCode>\nenum TokenType { SEPARATOR, WORD, NUMBER, STRING, OPERATOR };\n</pre>\n<div class=detailHTML>\nThis enumerated type defines the values of the\n<code>getTokenType</code> method.\n</div>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/variables.html",
    "content": "<html>\n<head>\n<title>Global Variable/Macro List</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n\n<script src=\"sorttable.js\" type=\"text/javascript\"></script>\n\n<script type=\"text/javascript\">\n(function() {\n\tvar GLOBAL_VARIABLE_MAP = {\n\t\t\"ACTION_EVENT\": \"gevents.h\",\n\t\t\"ACTION_PERFORMED\": \"gevents.h\",\n\t\t\"ALT_DOWN\": \"gevents.h\",\n\t\t\"ALT_GRAPH_DOWN\": \"gevents.h\",\n\t\t\"ANY_EVENT\": \"gevents.h\",\n\t\t\"BACKSPACE_KEY\": \"gevents.h\",\n\t\t\"BUTTON1_DOWN\": \"gevents.h\",\n\t\t\"BUTTON2_DOWN\": \"gevents.h\",\n\t\t\"BUTTON3_DOWN\": \"gevents.h\",\n\t\t\"CLEAR_KEY\": \"gevents.h\",\n\t\t\"CLICK_EVENT\": \"gevents.h\",\n\t\t\"CONSOLE_CLOSED\": \"gevents.h\",\n\t\t\"CTRL_DOWN\": \"gevents.h\",\n\t\t\"DELETE_KEY\": \"gevents.h\",\n\t\t\"DOWN_ARROW_KEY\": \"gevents.h\",\n\t\t\"E\": \"gmath.h\",\n\t\t\"EAST\": \"direction.h\",\n\t\t\"END_KEY\": \"gevents.h\",\n\t\t\"ENTER_KEY\": \"gevents.h\",\n\t\t\"ESCAPE_KEY\": \"gevents.h\",\n\t\t\"F10_KEY\": \"gevents.h\",\n\t\t\"F11_KEY\": \"gevents.h\",\n\t\t\"F12_KEY\": \"gevents.h\",\n\t\t\"F1_KEY\": \"gevents.h\",\n\t\t\"F2_KEY\": \"gevents.h\",\n\t\t\"F3_KEY\": \"gevents.h\",\n\t\t\"F4_KEY\": \"gevents.h\",\n\t\t\"F5_KEY\": \"gevents.h\",\n\t\t\"F6_KEY\": \"gevents.h\",\n\t\t\"F7_KEY\": \"gevents.h\",\n\t\t\"F8_KEY\": \"gevents.h\",\n\t\t\"F9_KEY\": \"gevents.h\",\n\t\t\"GOPTIONPANE_CANCEL\": \"goptionpane.h\",\n\t\t\"GOPTIONPANE_ERROR\": \"goptionpane.h\",\n\t\t\"GOPTIONPANE_NO\": \"goptionpane.h\",\n\t\t\"GOPTIONPANE_OK\": \"goptionpane.h\",\n\t\t\"GOPTIONPANE_YES\": \"goptionpane.h\",\n\t\t\"HELP_KEY\": \"gevents.h\",\n\t\t\"HOME_KEY\": \"gevents.h\",\n\t\t\"IOS_APP\": \"foreach.h\",\n\t\t\"IOS_ATE\": \"foreach.h\",\n\t\t\"IOS_BINARY\": \"foreach.h\",\n\t\t\"IOS_IN\": \"foreach.h\",\n\t\t\"IOS_OUT\": \"foreach.h\",\n\t\t\"IOS_TRUNC\": \"foreach.h\",\n\t\t\"KEY_EVENT\": \"gevents.h\",\n\t\t\"KEY_PRESSED\": \"gevents.h\",\n\t\t\"KEY_RELEASED\": \"gevents.h\",\n\t\t\"KEY_TYPED\": \"gevents.h\",\n\t\t\"LEFT_ARROW_KEY\": \"gevents.h\",\n\t\t\"META_DOWN\": \"gevents.h\",\n\t\t\"MOUSE_CLICKED\": \"gevents.h\",\n\t\t\"MOUSE_DRAGGED\": \"gevents.h\",\n\t\t\"MOUSE_EVENT\": \"gevents.h\",\n\t\t\"MOUSE_MOVED\": \"gevents.h\",\n\t\t\"MOUSE_PRESSED\": \"gevents.h\",\n\t\t\"MOUSE_RELEASED\": \"gevents.h\",\n\t\t\"NORTH\": \"direction.h\",\n\t\t\"NOT_A_CHAR\": \"bitstream.h\",\n\t\t\"NULL_EVENT\": \"gevents.h\",\n\t\t\"NUMBER\": \"tokenscanner.h\",\n\t\t\"OPERATOR\": \"tokenscanner.h\",\n\t\t\"PAGE_DOWN_KEY\": \"gevents.h\",\n\t\t\"PAGE_UP_KEY\": \"gevents.h\",\n\t\t\"PI\": \"gmath.h\",\n\t\t\"PSEUDO_EOF\": \"bitstream.h\",\n\t\t\"RIGHT_ARROW_KEY\": \"gevents.h\",\n\t\t\"SEPARATOR\": \"tokenscanner.h\",\n\t\t\"SHIFT_DOWN\": \"gevents.h\",\n\t\t\"SOUTH\": \"direction.h\",\n\t\t\"STRING\": \"tokenscanner.h\",\n\t\t\"TAB_KEY\": \"gevents.h\",\n\t\t\"TIMER_EVENT\": \"gevents.h\",\n\t\t\"TIMER_TICKED\": \"gevents.h\",\n\t\t\"UP_ARROW_KEY\": \"gevents.h\",\n\t\t\"WEST\": \"direction.h\",\n\t\t\"WINDOW_CLOSED\": \"gevents.h\",\n\t\t\"WINDOW_EVENT\": \"gevents.h\",\n\t\t\"WINDOW_RESIZED\": \"gevents.h\",\n\t\t\"WORD\": \"tokenscanner.h\"\n\t};\n\n\twindow.addEventListener(\"load\", function() {\n\t\tvar varListTable = document.getElementById(\"variablelisttable\");\n\t\tvar varTemplate = document.getElementById(\"variablelisttemplate\");\n\n\t\tfor (var variableName in GLOBAL_VARIABLE_MAP) {\n\t\t\tif (!GLOBAL_VARIABLE_MAP.hasOwnProperty(variableName)) { continue; }\n\n\t\t\tvar fileName = GLOBAL_VARIABLE_MAP[variableName];\n\t\t\tvar fileURL = fileName.replace(\".h\", \".html\") + \"#variable:\" + variableName;\n\n\t\t\tvar varSpan = varTemplate.cloneNode(true);\n\t\t\tvarSpan.style.display = \"\";\n\t\t\tvarSpan.querySelector(\".templatevarname\").innerHTML = variableName;\n\t\t\tvarSpan.querySelector(\".templatevarfile\").innerHTML = fileName;\n\t\t\tvarSpan.querySelector(\".templatevarlink\").href = fileURL;\n\t\t\tvarListTable.appendChild(varSpan);\n\t\t}\n\t});\n})();\n</script>\n\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford C++ Libraries\n</div></td>\n</tr></table>\n<hr>\n\n<noscript>\n\t<p>\n\t\t<strong>This page requires JavaScript to function properly.</strong>\n\t\tPlease enable JavaScript in your browser.\n\t</p>\n</noscript>\n\n<table>\n\t<tr><td class=indexHead>Global Variables and Macros</td></tr>\n\t<tr><td>\n\t<p>\n\t\tThis section lists every global variable, enum constant, and macro constant value exported by the Stanford C++ libraries, along with the name of the header file that must be included to use that value.\n\t\tNote that this page lists only variables that are exported into the default global namespace, not every constant member variable of every class, and not variables that are exported into any other namespaces.\n\t\tThis also does not include overloaded operators.\n\t</p>\n\n\t<p>\n\t\tYou can click each column heading to sort the table by that column.\n\t\tFor detailed documentation about a given variable, click the link for that header file.\n\t</p>\n\n\t<p>\n\t\t&nbsp;\n\t</p>\n\t</td></tr>\n</table>\n\n\n<table class=\"index sorttable\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Variable Name</th>\n\t\t\t<th>Header File</th>\n\t\t</tr>\n\t</thead>\n\n\t<tbody id=\"variablelisttable\">\n\t\t<!-- this is a template piece of HTML that is cloned in JS for each variable exported. -->\n\t\t<tr id=\"variablelisttemplate\" style=\"display: none\">\n\t\t\t<td class=indexKey>\n\t\t\t\t<code class=\"templatevarname\"></code>\n\t\t\t</td>\n\t\t\t<td class=indexSynopsis>\n\t\t\t\t<a class=\"templatevarlink\" href=\"\"><code class=\"templatevarfile\"></code></a>\n\t\t\t</td>\n\t\t</tr>\n\t<tbody>\n</table>\n\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cppdoc/vector.html",
    "content": "<html>\n<head>\n<title>vector.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>vector.h</code></h1>\nThis file exports the <code>Vector</code> class, which provides an\nefficient, safe, convenient replacement for the array type in C++.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Class</td></tr>\n<tr><td class=indexKey><nobr><a href=\"Vector-class.html\">Vector&lt;<var>ValueType</var>&gt;</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This class stores an ordered list of values similar to an array.</td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/Makefile",
    "content": "# Makefile for cppdoc\n# Last modified on Thu Jul 21 15:09:26 2011 by eroberts\n#****************************************************************\n\nPROGRAMS = \\\n    appsection \\\n    cppdoc \\\n    fillcomments\n\nEXPORTDIR = $(HOME)/bin\n\nCC = gcc -I../cslib\n\n# ***************************************************************\n# Entry to bring the package up to date\n#    The \"make all\" entry should be the first real entry\n\nall: $(PROGRAMS)\n\nexport: all\n\t@-(for x in $(PROGRAMS) ; do \\\n             echo link `pwd`/$$x $(EXPORTDIR) ; \\\n             rm -f $(EXPORTDIR)/$$x ; \\\n             ln -s `pwd`/$$x $(EXPORTDIR) ; \\\n           done)\n\nappsection.o: appsection.c\n\t$(CC) -c appsection.c\n\ncppdoc.o: cppdoc.c\n\t$(CC) -c cppdoc.c\n\n\nfillcomments.o: fillcomments.c\n\t$(CC) -c fillcomments.c\n\nappsection: appsection.o\n\t$(CC) -o appsection appsection.o\n\ncppdoc: cppdoc.o\n\t$(CC) -o cppdoc cppdoc.o\n\nfillcomments: fillcomments.o\n\t$(CC) -o fillcomments fillcomments.o\n\n\n# ***************************************************************\n# Standard entries to remove files from the directories\n#    tidy    -- eliminate unwanted files\n#    scratch -- delete derived files in preparation for rebuild\n\ntidy:\n\trm -f ,* .,* *~ core a.out *.err\n\nscratch clean: tidy\n\trm -f *.o *.a\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/appsection.c",
    "content": "/*\n * File: appsection.c\n * ------------------\n * This program numbers sections in the appendices.  All it does is\n * compute the ordinal position of this directory in its parent.\n */\n\n#include <stdio.h>\n#include \"cslib.h\"\n#include \"filelib.h\"\n#include \"strlib.h\"\n\nmain() {\n   string cwd, *list;\n   int i, count;\n\n   cwd = getTail(getCurrentDirectory());\n   list = listDirectory(\"..\");\n   count = 1;\n   for (i = 0; list[i] != NULL; i++) {\n      if (stringEqual(cwd, list[i])) {\n         printf(\"%d\\n\", count);\n         return;\n      }\n      if (isDirectory(concat(\"../\", list[i]))) count++;\n   }\n   printf(\"x\\n\");\n}\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/cppdoc.c",
    "content": "/*\n * File: cppdoc.c\n * --------------\n * A quick-and-dirty HTML documentation system for StanfordCPPLib.\n */\n\n#include <stdio.h>\n#include <string.h>\n#include <ctype.h>\n#include <unistd.h>\n#include \"cslib.h\"\n#include \"filelib.h\"\n#include \"foreach.h\"\n#include \"hashmap.h\"\n#include \"options.h\"\n#include \"tokenscanner.h\"\n#include \"simpio.h\"\n#include \"strlib.h\"\n#include \"vector.h\"\n\n/* Constants */\n\n#define DEFAULT_TITLE \"C++ Library Documentation\"\n\n/* Option table */\n\nstatic string OPTION_SPEC[] = {\n   \"-help\",\n   \"-list\",\n   \"-include <header>\",\n   \"-module <name>\",\n   \"-title <str>\",\n   \"-icon <filename>\",\n   \"-description <filename>\",\n   \"-out <directory>\",\n   \"-stylesheet <file>\",\n   \"-elide <cumulative>\",\n   \"-sortindex\",\n   \"-classonly\",\n   \"-generic\",\n   \"-noconst\",\n   \"-nostd\",\n   \"-novirtual\",\n   \"-notemplate\",\n   NULL\n};\n\n/* Types */\n\ntypedef struct {\n   string name;\n   string kind;\n   string module;\n   string type;\n   string superclass;\n   string *usage;\n   string *html;\n   string *code;\n} *entryT;\n\n/* Private variables */\n\nstatic FILE *outfile;\nstatic HashMap options;\nstatic HashMap moduleTable;\nstatic string stylesheet;\nstatic bool noConstFlag;\nstatic bool noStdFlag;\nstatic bool noTemplateFlag;\nstatic bool noVirtualFlag;\nstatic bool classOnlyFlag;\n\n/* Private function prototypes */\n\nstatic void initStructures();\nstatic void readDirectory(string dirname);\nstatic void scanHeaderFile(string dirname, string filename);\nstatic void dumpHTML(string dirname);\nstatic void dumpHTMLIndex(void);\nstatic void dumpModule(string module);\nstatic void dumpClasses(string module);\nstatic void dumpClass(entryT entry, Vector entries);\nstatic void dumpHeader(string module, string href);\nstatic void dumpTrailer(string module);\nstatic void dumpBodyHeader(void);\nstatic void dumpComment(entryT entry);\nstatic void dumpIndexHeader(void);\nstatic void dumpIndexTrailer(void);\nstatic void dumpIndex(Vector entries, string kind, string type);\nstatic void dumpIndexEntry(entryT entry);\nstatic void dumpDetail(Vector entries, string kind, string type);\nstatic void dumpDetailEntry(entryT entry);\nstatic string getIndexKey(entryT entry);\nstatic string getFirstSentence(entryT entry);\nstatic int findSentenceEnd(string line);\nstatic entryT findEntryOfKind(Vector entries, string kind, string type);\nstatic int countEntriesOfKind(Vector entries, string kind, string type);\nstatic void sortEntryVector(Vector entries);\nstatic void listModules(void);\nstatic void listEntry(entryT entry);\nstatic void includeFile(Vector html, string filename);\nstatic string makePlural(string word);\nstatic bool isVowel(char ch);\nstatic bool takesArguments(string kind);\nstatic bool isStatementMacro(string kind);\nstatic bool isEndOfCode(string line);\nstatic string blueComments(string str);\nstatic string quoteSpaces(string str);\nstatic string replaceAll(string str, string pattern, string replacement);\n\n/* Main entry point */\n\nmain(int argc, string argv[]) {\n   string *files;\n   int nFiles;\n\n   options = parseOptions(argv + 1, OPTION_SPEC);\n   files = getArgList(options);\n   nFiles = stringArrayLength(files);\n   stylesheet = getOption(options, \"-stylesheet\", \"cppdoc.css\");\n   noStdFlag = containsKey(options, \"-nostd\");\n   noConstFlag = containsKey(options, \"-noconst\");\n   noTemplateFlag = containsKey(options, \"-notemplate\");\n   noVirtualFlag = containsKey(options, \"-novirtual\");\n   classOnlyFlag = containsKey(options, \"-classonly\");\n   if (containsKey(options, \"-help\") || nFiles != 1) {\n      showUsage(\"cppdoc <options> <dir>\", OPTION_SPEC);\n   } else {\n      initStructures();\n      readDirectory(files[0]);\n      if (containsKey(options, \"-list\")) {\n         listModules();\n      } else {\n         dumpHTML(files[0]);\n         dumpHTMLIndex();\n      }\n   }\n}\n\nstatic void initStructures() {\n   moduleTable = newHashMap();\n}\n\nstatic void readDirectory(string dirname) {\n   string *list, name, key, elide;\n   int i;\n\n   list = listDirectory(dirname);\n   elide = concat(\"+\", concat(getOption(options, \"-elide\", \"\"), \"+\"));\n   for (i = 0; list[i] != NULL; i++) {\n      name = list[i];\n      key = concat(\"+\", concat(name, \"+\"));\n      if (endsWith(name, \".h\") && findString(key, elide, 0) == -1) {\n         scanHeaderFile(dirname, list[i]);\n      }\n   }\n}\n\n#define INITIAL_STATE 0\n#define COMMENT_START 1\n#define USAGE_START   2\n#define IN_USAGE      3\n#define IN_HTML       4\n#define IN_CODE       5\n\nstatic void scanHeaderFile(string dirname, string filename) {\n   FILE *infile;\n   entryT entry;\n   TokenScanner scanner;\n   Vector entries, usage, html, code;\n   string type, kind, name, line, superclass;\n   int state, colon, start, finish, level, n;\n\n   infile = fopen(concat(dirname, concat(\"/\", filename)), \"r\");\n   if (infile == NULL) error(\"Can't open file %s\", filename);\n   state = INITIAL_STATE;\n   entries = newVector();\n   usage = NULL;\n   html = NULL;\n   code = NULL;\n   type = \"\";\n   while (true) {\n      line = readLine(infile);\n      if (line == NULL) break;\n      switch (state) {\n       case INITIAL_STATE:\n         if (stringEqual(line, \"/*\")) state = COMMENT_START;\n         break;\n       case COMMENT_START:\n         colon = findString(\": \", line, 0);\n         if (colon < 0 || !startsWith(line, \" * \")) {\n            state = INITIAL_STATE;\n         } else {\n            name = substring(line, colon + 2, strlen(line));\n            kind = substring(line, 3, colon - 1);\n            if (stringEqual(kind, \"Class\") || stringEqual(kind, \"Type\")) {\n               type = name;\n            }\n            entry = newBlock(entryT);\n            entry->name = name;\n            entry->kind = kind;\n            entry->type = type;\n            entry->module = filename;\n            entry->superclass = NULL;\n            add(entries, entry);\n            state = USAGE_START;\n         }\n         break;\n       case USAGE_START:\n         if (startsWith(line, \" */\")) {\n            state = INITIAL_STATE;\n         } else if (startsWith(line, \" * -----\")) {\n            html = newVector();\n            state = IN_HTML;\n         } else if (startsWith(line, \" * Usage: \")) {\n            usage = newVector();\n            add(usage, trim(substring(line, 10, strlen(line))));\n            state = IN_USAGE;\n         }\n         break;\n       case IN_USAGE:\n         if (startsWith(line, \" * -----\")) {\n            html = newVector();\n            state = IN_HTML;\n         } else if (startsWith(line, \" */\")) {\n            entry->usage = (string *) vectorToArray(usage);\n            state = INITIAL_STATE;\n         } else {\n            add(usage, trim(substring(line, 10, strlen(line))));\n         }\n         break;\n       case IN_HTML:\n         if (startsWith(line, \" */\")) {\n            entry->usage = (string *) vectorToArray(usage);\n            entry->html = (string *) vectorToArray(html);\n            code = newVector();\n            state = IN_CODE;\n            level = 0;\n         } else if (findString(\"<include src=\\\"\", line, 0) != -1) {\n            start = findChar('\"', line, 0) + 1;\n            finish = findChar('\"', line, start + 1) - 1;\n            includeFile(html, substring(line, start, finish));\n         } else {\n            start = (line[2] == ' ') ? 3 : 2;\n            add(html, substring(line, start, strlen(line)));\n         }\n         break;\n       case IN_CODE:\n         if (isEndOfCode(line) || (startsWith(line, \"}\") && level == 0)) {\n            entry->code = (string *) vectorToArray(code);\n            state = startsWith(line, \"/*\") ? COMMENT_START : INITIAL_STATE;\n         } else if (startsWith(line, \"class \")) {\n            scanner = newTokenScanner();\n            setInputString(scanner, line);\n            ignoreWhitespace(scanner);\n            nextToken(scanner);\n            name = nextToken(scanner);\n            if (stringEqual(nextToken(scanner), \":\")) {\n               if (stringEqual(nextToken(scanner), \"public\")) {\n                  superclass = nextToken(scanner);\n                  if (stringEqual(nextToken(scanner), \"{\")) {\n                     entry->superclass = superclass;\n                  }\n               }\n            }\n            freeTokenScanner(scanner);\n         } else {\n            n = size(code);\n            if (n > 0 && startsWith(line, \"                \")) {\n               line = concat(\" \", trim(line));\n               set(code, n - 1, concat(get(code, n - 1), line));\n            } else {\n               add(code, line);\n            }\n            if (endsWith(line, \"{\")) level++;\n            if (startsWith(trim(line), \"}\")) level--;\n         }\n         break;\n      }\n   }\n   put(moduleTable, filename, entries);\n}\n\nstatic void dumpHTML(string dirname) {\n   string out, module, requestedModule, filename, cmd;\n\n   out = getOption(options, \"-out\", \"doc\");\n   createDirectoryPath(out);\n   requestedModule = getOption(options, \"-module\", NULL);\n   foreach (module in moduleTable) {\n      if (requestedModule == NULL || stringEqual(module, requestedModule)) {\n         filename = concat(getRoot(module), \"-h.html\");\n         filename = concat(out, concat(\"/\", filename));\n         cmd = concat(\"fillcomments -html -out \", filename);\n         if (containsKey(options, \"-stylesheet\")) {\n            cmd = concat(cmd, concat(\" -stylesheet \", stylesheet));\n         }\n         if (!classOnlyFlag) {\n            filename = concat(dirname, concat(\"/\", module));\n            cmd = concat(cmd, concat(\" \", filename));\n            system(cmd);\n            dumpModule(module);\n         }\n         dumpClasses(module);\n      }\n   }\n}\n\nstatic void dumpHTMLIndex() {\n   int ch;\n   string out, name, filename, description, title;\n   Vector classes, modules, entries;\n   FILE *infile;\n   entryT entry;\n\n   out = getOption(options, \"-out\", \"doc\");\n   filename = concat(out, \"/index.html\");\n   outfile = fopen(filename, \"w\");\n   if (outfile == NULL) error(\"Can't open %s\", getTail(filename));\n   title = getOption(options, \"-title\", DEFAULT_TITLE);\n   fprintf(outfile, \"<html>\\n\");\n   fprintf(outfile, \"<head>\\n\");\n   fprintf(outfile, \"<title>%s</title>\\n\", title);\n   if (stylesheet != NULL) {\n      fprintf(outfile, \"<link rel=\\\"stylesheet\\\" type=\\\"text/css\\\"\");\n      fprintf(outfile, \" href=\\\"%s\\\" />\\n\", stylesheet);\n   }\n   fprintf(outfile, \"</head>\\n\");\n   fprintf(outfile, \"<body>\\n\");\n   dumpBodyHeader();\n   description = getOption(options, \"-description\", \"\");\n   if (stringLength(description) != 0) {\n      infile = fopen(description, \"r\");\n      if (infile == NULL) error(\"Can't find file %s\", description);\n      while ((ch = getc(infile)) != EOF) {\n         putc(ch, outfile);\n      }\n      fclose(infile);\n   }\n   classes = newVector();\n   modules = newVector();\n   foreach (name in moduleTable) {\n      entries = (Vector) get(moduleTable, name);\n      entry = findEntryOfKind(entries, \"File\", NULL);\n      if (entry != NULL) add(modules, entry);\n      foreach (entry in entries) {\n         if (stringEqual(entry->kind, \"Class\")) {\n            add(classes, entry);\n         }\n      }\n   }\n   sortEntryVector(classes);\n   sortEntryVector(modules);\n   dumpIndexHeader();\n   dumpIndex(classes, \"Class\", NULL);\n   dumpIndexTrailer();\n   dumpIndexHeader();\n   dumpIndex(modules, \"File\", NULL);\n   dumpIndexTrailer();\n   fprintf(outfile, \"</body>\\n\");\n   fprintf(outfile, \"</html>\\n\");\n   fclose(outfile);\n}\n\nstatic void dumpModule(string module) {\n   string out, filename;\n   Vector entries;\n\n   out = getOption(options, \"-out\", \"doc\");\n   filename = defaultExtension(module, \"*.html\");\n   filename = concat(out, concat(\"/\", filename));\n   outfile = fopen(filename, \"w\");\n   if (outfile == NULL) error(\"Can't open %s\", getTail(filename));\n   entries = get(moduleTable, module);\n   filename = concat(getRoot(module), \"-h.html\");\n   dumpHeader(module, filename);\n   dumpComment(findEntryOfKind(entries, \"File\", NULL));\n   dumpIndexHeader();\n   dumpIndex(entries, \"Class\", NULL);\n   dumpIndex(entries, \"Type\", NULL);\n   dumpIndex(entries, \"Constant\", NULL);\n   dumpIndex(entries, \"Statement\", NULL);\n   dumpIndex(entries, \"Function\", NULL);\n   dumpIndexTrailer();\n   dumpDetail(entries, \"Type\", NULL);\n   dumpDetail(entries, \"Statement\", NULL);\n   dumpDetail(entries, \"Function\", NULL);\n   dumpTrailer(module);\n   fclose(outfile);\n}\n\nstatic void dumpClasses(string module) {\n   Vector entries;\n   entryT entry;\n\n   entries = get(moduleTable, module);\n   foreach (entry in entries) {\n      if (stringEqual(entry->kind, \"Class\")) {\n         dumpClass(entry, entries);\n      }\n   }\n}\n\nstatic void dumpClass(entryT entry, Vector entries) {\n   string className, out, filename, module, href;\n   int angle;\n\n   className = entry->name;\n   out = getOption(options, \"-out\", \"doc\");\n   angle = findChar('<', entry->name, 0);\n   filename = (angle == -1) ? className : substring(className, 0, angle - 1);\n   filename = concat(out, concat(\"/\", concat(filename, \"-class.html\")));\n   outfile = fopen(filename, \"w\");\n   if (outfile == NULL) error(\"Can't open %s\", getTail(filename));\n   filename = concat(getRoot(entry->module), \"-h.html\");\n   module = concat(\"class \", className);\n   if (entry->superclass != NULL) {\n      href = concat(\"<a href=\\\"\", entry->superclass);\n      href = concat(href, \"-class.html\\\">\");\n      href = concat(href, entry->superclass);\n      href = concat(href, \"</a>\");\n      module = concat(module, concat(\" : public \", href));\n   }\n   dumpHeader(module, filename);\n   dumpComment(findEntryOfKind(entries, \"Class\", className));\n   dumpIndexHeader();\n   dumpIndex(entries, \"Constructor\", className);\n   dumpIndex(entries, \"Method\", className);\n   dumpIndex(entries, \"Operator\", className);\n   dumpIndex(entries, \"Function\", className);\n   dumpIndex(entries, \"Statement\", className);\n   dumpIndex(entries, \"Macro\", className);\n   dumpIndexTrailer();\n   dumpDetail(entries, \"Constructor\", className);\n   dumpDetail(entries, \"Method\", className);\n   dumpDetail(entries, \"Operator\", className);\n   dumpDetail(entries, \"Function\", className);\n   dumpDetail(entries, \"Statement\", className);\n   dumpDetail(entries, \"Macro\", className);\n   dumpTrailer(className);\n   fclose(outfile);\n}\n\nstatic void dumpHeader(string module, string href) {\n   string header, title;\n\n   if (findChar(':', module, 0) == -1) module = quoteHTML(module);\n   title = module;\n   if (startsWith(title, \"class \")) title = title + 6;\n   fprintf(outfile, \"<html>\\n\");\n   fprintf(outfile, \"<head>\\n\");\n   fprintf(outfile, \"<title>%s</title>\\n\", title);\n   if (stylesheet != NULL) {\n      fprintf(outfile, \"<link rel=\\\"stylesheet\\\" type=\\\"text/css\\\"\");\n      fprintf(outfile, \" href=\\\"%s\\\" />\\n\", stylesheet);\n   }\n   fprintf(outfile, \"</head>\\n\");\n   fprintf(outfile, \"<body>\\n\");\n   dumpBodyHeader();\n   if (startsWith(module, \"class \")) {\n      header = concat(substring(href, 0, strlen(href) - 8), \".h\");\n      href = concat(substring(header, 0, strlen(header) - 3), \".html\");\n      if (containsKey(options, \"-include\")) {\n         header = getOption(options, \"-include\", NULL);\n         href = concat(getRoot(header), \".html\");\n      }\n      fprintf(outfile, \"<div class=include><a href=\\\"%s\\\">\", href);\n      fprintf(outfile, \"#include \\\"%s\\\"</a></div>\\n\", header);\n      fprintf(outfile, \"<h1 class=header><code>%s</code></h1>\\n\", module);\n   } else {\n      fprintf(outfile, \"<h1 class=header><a href=\\\"%s\\\">\", href);\n      fprintf(outfile, \"<code>%s</code></a></h1>\\n\", module);\n   }\n}\n\nstatic void dumpTrailer(string module) {\n   fprintf(outfile, \"</body>\\n\");\n   fprintf(outfile, \"</html>\\n\");\n}\n\nstatic void dumpBodyHeader() {\n   string icon, title;\n\n   fprintf(outfile, \"<table class=banner>\\n\");\n   fprintf(outfile, \"<tr>\\n\");\n   icon = getOption(options, \"-icon\", \"\");\n   title = getOption(options, \"-title\", DEFAULT_TITLE);\n   if (stringLength(icon) > 0) {\n      fprintf(outfile, \"<td valign=middle>\");\n      fprintf(outfile, \"<image src=\\\"%s\\\" height=32>\", icon);\n      fprintf(outfile, \"</td>\\n\");\n   }\n   fprintf(outfile, \"<td valign=middle><div class=bannerText>\\n\");\n   fprintf(outfile, \"%s\\n\", title);\n   fprintf(outfile, \"</div></td>\\n\");\n   fprintf(outfile, \"</tr></table>\\n\");\n   fprintf(outfile, \"<hr>\\n\");\n}\n\nstatic void dumpComment(entryT entry) {\n   string *html;\n   int i;\n\n   if (entry == NULL) return;\n   html = entry->html;\n   for (i = 0; html[i] != NULL; i++) {\n      fprintf(outfile, \"%s\\n\", html[i]);\n   }\n}\n\nstatic void dumpIndexHeader(void) {\n   fprintf(outfile, \"<table class=index width=100%%>\\n\");\n}\n\nstatic void dumpIndexTrailer(void) {\n   fprintf(outfile, \"</table>\\n\");\n}\n\nstatic void dumpIndex(Vector entries, string kind, string type) {\n   Vector vec;\n   entryT entry;\n   string label;\n   int nItems;\n\n\n   nItems = countEntriesOfKind(entries, kind, type);\n   if (nItems == 0) return;\n   if (stringEqual(kind, \"File\")) {\n      label = \"Interface files\";\n   } else {\n      label = (nItems == 1) ? kind : makePlural(kind);\n   }\n   fprintf(outfile, \"<tr><td class=indexHead colspan=2>%s</td></tr>\\n\", label);\n   vec = entries;\n   if (containsKey(options, \"-sortindex\")) {\n      vec = clone(entries);\n      sortEntryVector(vec);\n   }\n   foreach (entry in vec) {\n      if (stringEqual(kind, entry->kind)) {\n         if (type == NULL || stringEqual(entry->type, type)) {\n            dumpIndexEntry(entry);\n         }\n      }\n   }\n}\n\nstatic void dumpIndexEntry(entryT entry) {\n   string tag, synopsis;\n\n   tag = getIndexKey(entry);\n   synopsis = getFirstSentence(entry);\n   fprintf(outfile, \"<tr><td class=indexKey><nobr>%s&nbsp;</nobr></td>\", tag);\n   fprintf(outfile, \"<td class=indexSynopsis width=100%%>\");\n   fprintf(outfile, \"%s</td></tr>\\n\", synopsis);\n}\n\nstatic void dumpDetail(Vector entries, string kind, string type) {\n   entryT entry;\n   int nItems;\n\n   nItems = countEntriesOfKind(entries, kind, type);\n   if (nItems == 0) return;\n   fprintf(outfile, \"<h2>%s detail</h2>\\n\", kind);\n   fprintf(outfile, \"<hr>\\n\");\n   foreach (entry in entries) {\n      if (stringEqual(kind, entry->kind)) {\n         if (type == NULL || stringEqual(entry->type, type)) {\n            dumpDetailEntry(entry);\n            fprintf(outfile, \"<hr>\\n\");\n         }\n      }\n   }\n   fprintf(outfile, \"</table>\\n\");\n}\n\nstatic void dumpDetailEntry(entryT entry) {\n   string line;\n   int i, start, finish, indent, pos, args, paren, cp;\n\n   fprintf(outfile, \"<a name=\\\"%s:%s\\\"></a>\\n\", entry->kind, entry->name);\n   fprintf(outfile, \"<pre class=detailCode>\\n\");\n   if (isStatementMacro(entry->kind)) {\n      for (i = 0; entry->usage[i] != NULL; i++) {\n         fprintf(outfile, \"%s\\n\", quoteHTML(entry->usage[i]));\n      }\n   } else {\n      finish = stringArrayLength(entry->code) - 1;\n      while (finish >= 0 && strlen(entry->code[finish]) == 0) {\n         finish--;\n      }\n      start = 0;\n      while (start <= finish && strlen(entry->code[start]) == 0) {\n         start++;\n      }\n      if (start <= finish) {\n         indent = 0;\n         while (entry->code[start][indent] == ' ') {\n            indent++;\n         }\n         for (i = start; i <= finish; i++) {\n            line = entry->code[i];\n            line = substring(line, indent, strlen(line));\n            paren = findChar('(', line, 0);\n            if (i == start && paren > 0 && containsKey(options, \"-generic\")) {\n               for (cp = paren - 1; cp >= 0 && isalnum(line[cp]); cp--) {\n                  /* Empty */\n               }\n               line = concat(substring(line, 0, cp),\n                             concat(entry->name,\n                                    substring(line, paren, 9999)));\n            }\n            if (noTemplateFlag) {\n               if (strlen(line) == 0 || startsWith(line, \"template \")) {\n                  continue;\n               }\n            }\n            line = replaceAll(line, \"explicit \", \"\");\n            if (noStdFlag) {\n               line = replaceAll(line, \"std::\", \"\");\n            }\n            if (noVirtualFlag) {\n               line = replaceAll(line, \"virtual \", \"\");\n               line = replaceAll(line, \" = 0\", \"\");\n            }\n            if (noConstFlag) {\n               if (endsWith(line, \" const;\")) {\n                  line = concat(substring(line, 0, strlen(line) - 8), \";\");\n               }\n               args = (startsWith(line, \"    \")) ? 4 : findChar('(', line, 0);\n               while (start > 0) {\n                  pos = findString(\"const \", line, start);\n                  if (pos == -1) break;\n                  line = concat(substring(line, 0, pos - 1),\n                                substring(line, pos + 6, 9999));\n                  pos = findChar('&', line, pos);\n                  if (pos == -1) error(\"Expected &\");\n                  if (line[pos - 1] == ' ' && line[pos + 1] == ' ') {\n                     line = concat(substring(line, 0, pos - 1),\n                                   substring(line, pos + 2, 9999));\n                  } else {\n                     line = concat(substring(line, 0, pos - 1),\n                                   substring(line, pos + 1, 9999));\n                  }\n               }\n            }\n            fprintf(outfile, \"%s\\n\", blueComments(quoteHTML(line)));\n         }\n      }\n   }\n   fprintf(outfile, \"</pre>\\n\");\n   fprintf(outfile, \"<div class=detailHTML>\\n\");\n   for (i = 0; entry->html[i] != NULL; i++) {\n      fprintf(outfile, \"%s\\n\", entry->html[i]);\n   }\n   if (entry->usage == NULL || isStatementMacro(entry->kind)) {\n      fprintf(outfile, \"</div>\\n\");\n   } else {\n      fprintf(outfile, \"<p>Usage:<br>\\n\");\n      fprintf(outfile, \"</div>\\n\");\n      fprintf(outfile, \"<pre class=usageCode>\\n\");\n      for (i = 0; entry->usage[i] != NULL; i++) {\n         fprintf(outfile, \"%s\\n\", quoteHTML(entry->usage[i]));\n      }\n      fprintf(outfile, \"</pre>\\n\");\n   }\n}\n\nstatic string getIndexKey(entryT entry) {\n   string name, key, line, href;\n   int i, dot, start, finish;\n\n   name = quoteHTML(entry->name);\n   if (stringEqual(entry->kind, \"Class\")) {\n      finish = findChar('<', entry->name, 0);\n      if (finish == -1) finish = strlen(entry->name);\n      href = concat(\"<a href=\\\"\", substring(entry->name, 0, finish - 1));\n      href = concat(href, \"-class.html\\\">\");\n   } else if (stringEqual(entry->kind, \"Constant\")) {\n      href = NULL;\n   } else if (stringEqual(entry->kind, \"File\")) {\n      dot = findChar('.', entry->name, 0);\n      href = concat(\"<a href=\\\"\", substring(entry->name, 0, dot - 1));\n      href = concat(href, \".html\\\">\");\n   } else {\n      href = concat(\"<a href=\\\"#\", entry->kind);\n      href = concat(href, concat(\":\", concat(name, \"\\\">\")));\n   }\n   if (takesArguments(entry->kind) && entry->usage != NULL) {\n      key = \"\";\n      for (i = 0; entry->usage[i] != NULL; i++) {\n         line = entry->usage[i];\n         start = findString(entry->name, line, 0);\n         if (start == -1) {\n            printf(\"No %s in usage line: %s\\n\", entry->name, line);\n         }\n         start = findChar('(', line, start);\n         if (start == -1) {\n            start = strlen(line);\n            line = concat(line, \"()\");\n         }\n         finish = findChar(')', line, start);\n         if (finish == -1) error(\"Illegal usage line: %s\", line);\n         if (strlen(key) > 0) key = concat(key, \"<br>\");\n         key = concat(key, href);\n         key = concat(key, name);\n         key = concat(key, quoteSpaces(substring(line, start, finish)));\n         key = concat(key, \"</a>\");\n      }\n      return key;\n   }\n   if (stringEqual(entry->kind, \"Operator\")) {\n      name = entry->usage[0];\n   }\n   return (href == NULL) ? name : concat(href, concat(name, \"</a>\"));\n}\n\nstatic string getFirstSentence(entryT entry) {\n   string str, line;\n   int i, end;\n\n   str = \"\";\n   for (i = 0; entry->html[i] != NULL; i++) {\n      line = entry->html[i];\n      end = findSentenceEnd(line);\n      if (end >= 0) return concat(str, substring(line, 0, end));\n      str = concat(str, concat(line, \" \"));\n   }\n   return str;\n}\n\nstatic int findSentenceEnd(string line) {\n   int i;\n\n   for (i = 0; line[i] != '\\0'; i++) {\n      switch (line[i]) {\n       case '.': case '!': case '?':\n         if (line[i + 1] == '\\0' || isspace(line[i + 1])) return i;\n      }\n   }\n   return -1;\n}\n\nstatic entryT findEntryOfKind(Vector entries, string kind, string type) {\n   entryT entry;\n\n   foreach (entry in entries) {\n      if (stringEqual(entry->kind, kind)) {\n         if (type == NULL || stringEqual(entry->type, type)) {\n            return entry;\n         }\n      }\n   }\n   return NULL;\n}\n\nstatic int countEntriesOfKind(Vector entries, string kind, string type) {\n   entryT entry;\n   int count;\n\n   count = 0;\n   foreach (entry in entries) {\n      if (stringEqual(entry->kind, kind)) {\n         if (type == NULL || stringEqual(entry->type, type)) {\n            count++;\n         }\n      }\n   }\n   return count;\n}\n\nstatic void sortEntryVector(Vector entries) {\n   int lh, rh, n, i;\n   string s1, s2;\n   entryT tmp;\n\n   n = size(entries);\n   for (lh = 0; lh < n; lh++) {\n      rh = lh;\n      for (i = lh + 1; i < n; i++) {\n         s1 = toUpperCase(((entryT) get(entries, i))->name);\n         s2 = toUpperCase(((entryT) get(entries, rh))->name);\n         if (stringCompare(s1, s2) < 0) rh = i;\n      }\n      tmp = (entryT) get(entries, lh);\n      set(entries, lh, (entryT) get(entries, rh));\n      set(entries, rh, tmp);\n   }\n}\n\nstatic void listModules(void) {\n   string str, module;\n   Vector entries;\n   entryT entry;\n\n   module = getOption(options, \"-module\", NULL);\n   foreach (str in moduleTable) {\n      if (module == NULL || stringEqual(str, module)) {\n         printf(\"%s: \\n\", str);\n         entries = (Vector) get(moduleTable, str);\n         foreach (entry in entries) {\n            listEntry(entry);\n         }\n         printf(\"\\n\");\n      }\n   }\n}\n\nstatic void listEntry(entryT entry) {\n   printf(\"  %s: %s\\n\", entry->kind, entry->name);\n}\n\nstatic void includeFile(Vector html, string filename) {\n   FILE *infile;\n   string line;\n\n   infile = fopen(filename, \"r\");\n   if (infile == NULL) error(\"Can't open %s\", filename);\n   while (true) {\n      line = readLine(infile);\n      if (line == NULL) break;\n      add(html, line);\n   }\n   fclose(infile);\n}\n\nstatic string makePlural(string word) {\n   int len;\n\n   len = strlen(word);\n   if (endsWith(word, \"s\") || endsWith(word, \"x\")\n               || endsWith(word, \"z\") || endsWith(word, \"ch\")\n               || endsWith(word, \"sh\")) {\n      return concat(word, \"es\");\n   } else if (endsWith(word, \"y\") && len > 1\n               && !isVowel(word[len - 2])) {\n      return concat(substring(word, 0, len - 2), \"ies\");\n   } else {\n      return concat(word, \"s\");\n   }\n}\n\nstatic bool isVowel(char ch) {\n   switch (ch) {\n    case 'A': case 'E': case 'I': case 'O': case 'U':\n    case 'a': case 'e': case 'i': case 'o': case 'u':\n      return true;\n    default:\n      return false;\n   }\n}\n\nstatic bool takesArguments(string kind) {\n   if (stringEqual(kind, \"Function\")) return true;\n   if (stringEqual(kind, \"Method\")) return true;\n   if (stringEqual(kind, \"Macro\")) return true;\n   if (stringEqual(kind, \"Statement\")) return true;\n   if (stringEqual(kind, \"Constructor\")) return true;\n   if (stringEqual(kind, \"Destructor\")) return true;\n   return false;\n}\n\nstatic bool isStatementMacro(string kind) {\n   if (stringEqual(kind, \"Statement\")) return true;\n   if (stringEqual(kind, \"Macro\")) return true;\n   return false;\n}\n\nstatic bool isEndOfCode(string line) {\n   if (startsWith(line, \"#\")) return true;\n   if (startsWith(line, \"public:\")) return true;\n   if (startsWith(line, \"private:\")) return true;\n   if (startsWith(line, \"/*\")) return true;\n   return false;\n}\n\nstatic string quoteSpaces(string str) {\n   string result;\n   int start, space;\n\n   start = 0;\n   result = \"\";\n   while (true) {\n      space = findChar(' ', str, start);\n      if (space == -1) break;\n      result = concat(result, substring(str, start, space - 1));\n      result = concat(result, \"&nbsp;\");\n      start = space + 1;\n   }\n   return concat(result, substring(str, start, strlen(str) - 1));\n}\n\nstatic string blueComments(string str) {\n   string result;\n   int start, index, finish;\n\n   start = 0;\n   result = \"\";\n   while (true) {\n      index = findString(\"/\" \"*\", str, start);\n      if (index == -1) break;\n      finish = findString(\"*\" \"/\", str, index);\n      if (finish == -1) error(\"Illegal internal comment: %s\", str);\n      result = concat(result, substring(str, start, index - 1));\n      result = concat(result, \"<span class=comment>\");\n      result = concat(result, substring(str, index, finish + 1));\n      result = concat(result, \"</span>\");\n      start = finish + 2;\n   }\n   return concat(result, substring(str, start, strlen(str) - 1));\n}\n\nstatic string replaceAll(string str, string pattern, string replacement) {\n   int pos;\n\n   pos = 0;\n   while (true) {\n      pos = findString(pattern, str, pos);\n      if (pos == -1) break;\n      str = concat(substring(str, 0, pos - 1),\n                   concat(replacement,\n                          substring(str, pos + stringLength(pattern), 9999)));\n      pos += stringLength(replacement);\n   }\n   return str;\n}\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/cppdoc.css",
    "content": "body {\n   font-size:100%;\n}\n\nh1 {\n   font-family:\"Arial\", \"Helvetica\", \"sansserif\"; \n   font-size:1.5em;\n   font-weight:bold;\n}\n\nh2 {\n   font-family:\"Times New Roman\", \"Times\", \"serif\";\n   font-size:1.4em;\n   font-weight:bold;\n   margin-bottom:0px;\n}\n\n.header {\n   font-size:125%;\n}\n\npre, code, .code {\n   font-family:\"Courier New\", \"Courier\", \"monospace\";\n   font-weight:bold;\n   font-size:90%;\n}\n\n.comment {\n   color:blue;\n}\n\n.it {\n   font-family:\"Times New Roman\", \"Times\", \"serif\";\n   font-weight:normal;\n   font-style:italic;\n   font-size:90%;\n}\n   \n.banner {\n   border:0;\n}\n\n.sansserif {\n   font-family:\"Helvetica Neue\", \"Helvetica\", \"Arial\", \"sansserif\";\n}\n\n.bannerText {\n   font-family:\"Helvetica Neue\", \"Helvetica\", \"Arial\", \"sansserif\";\n   font-size:1.6em;\n   font-weight:bold;\n}\n\n.index {\n   border-collapse:collapse;\n   margin-top:1px;\n}\n\n.indexHead {\n   font-family:\"Times New Roman\", \"Times\", \"serif\";\n   font-size:1.4em;\n   font-weight:bold;\n   padding-top:1em;\n}\n\n.indexKey {\n   border:1px solid black; \n   padding:3px 5px;\n   font-family:\"Courier New\", \"Courier\", \"monospace\";\n   font-weight:bold;\n   font-size:90%;\n   vertical-align: top;\n}\n\n.indexSynopsis {\n   border:1px solid black; \n   padding:3px 5px;\n   vertical-align: top;\n}\n\n.include {\n   font-family:\"Courier New\", \"Courier\", \"monospace\";\n   font-weight:bold;\n   font-size:100%;\n}\n\n.detailCode {\n   padding:0px;\n   font-family:\"Courier New\", \"Courier\", \"monospace\";\n   font-weight:bold;\n   font-size:100%;\n}\n\n.detailHTML {\n   font-family:\"Times New Roman\", \"Times\", \"serif\";\n   font-size:1em;\n   margin-left:20px;\n}\n\n.inset {\n   margin-left:36px;\n}\n\n.usageCode {\n   font-family:\"Courier New\", \"Courier\", \"monospace\";\n   font-weight:bold;\n   font-size:90%;\n   margin-left:40px;\n}   \n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/EnumRange-class.html",
    "content": "<html>\n<head>\n<title>class EnumRange&lt;BaseType&gt;</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"foreach-h.html\">class EnumRange&lt;BaseType&gt;</a></h1>\nThis class is used to support iteration over enumeration types.\nCalling the <code>EnumRange</code> constructor with the first and\nlast elements produces an iterable collection of those items, as\nillustrated by the following example:\n\n<pre>\n   enum Direction { NORTH, SOUTH, EAST, WEST };\n\n   foreach (Direction dir in EnumRange<Direction>(NORTH, WEST)) . . .\n</pre>\n\nBy convention, enumerated types exported by the libraries (such as\n<code>Direction</code>) export an enumerated range as a constant\nwhose name is the type followed by an <code>\"s\"</code>.  This\nconvention makes it possible to write this loop header as follows:\n\n<pre>\n   foreach (Direction dir in Directions) . . .\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/ErrorException-class.html",
    "content": "<html>\n<head>\n<title>class ErrorException</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"error-h.html\">class ErrorException</a></h1>\nThis exception is thrown by calls to the <code>error</code>\nfunction, which makes it possible for clients to respond to error\nconditions.  Typical code for catching errors looks like this:\n\n<pre>\n   try {\n      . . . code in which an error might occur . . .\n   } catch (ErrorException & ex) {\n      . . . code to handle the error condition . . .\n   }\n</pre>\n\nIf an <code>ErrorException</code> is thrown at any point in the\nrange of the <code>try</code> (including in functions called from\nthat code), control will jump immediately to the error handler.\n<h2>Function</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Function:error\">error(msg)</a>&nbsp;</td><td class=indexSynopsis width=100%>Signals an error condition in a program by throwing an <code>ErrorException</code> with the specified message.</td></tr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:error\"></a>\n<pre class=detailCode>\nvoid error(string str);\n</pre>\n<div class=detailHTML>\nSignals an error condition in a program by throwing an\n<code>ErrorException</code> with the specified message.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nerror(msg);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/GActionEvent-class.html",
    "content": "<html>\n<head>\n<title>class GActionEvent</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"gevents-h.html\">class GActionEvent</a></h1>\nThis event subclass represents an action event.\n<h2>Constructor</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Constructor:GActionEvent\">GActionEvent()</a><br><a href=\"#Constructor:GActionEvent\">GActionEvent(e)</a><br><a href=\"#Constructor:GActionEvent\">GActionEvent(type,&nbsp;actionCommand)</a>&nbsp;</td><td class=indexSynopsis width=100%>Creates a <code>GActionEvent</code> using the specified parameters or those taken from the more general event <code>e</code>.</td></tr>\n</table>\n<h2>Methods</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Method:getEventType\">getEventType()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the enumerated type constant corresponding to the specific type of action event.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:getActionCommand\">getActionCommand()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the action command associated with this event.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:toString\">toString()</a>&nbsp;</td><td class=indexSynopsis width=100%>Converts the event to a human-readable representation of the event.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:GActionEvent\"></a>\n<pre class=detailCode>\nGActionEvent();\nGActionEvent(GEvent e);\nGActionEvent(ActionEventType type, string actionCommand);\n</pre>\n<div class=detailHTML>\nCreates a <code>GActionEvent</code> using the specified parameters or\nthose taken from the more general event <code>e</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGActionEvent actionEvent;\nGActionEvent actionEvent(e);\nGActionEvent actionEvent(type, actionCommand);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:getEventType\"></a>\n<pre class=detailCode>\nActionEventType getEventType();\n</pre>\n<div class=detailHTML>\nReturns the enumerated type constant corresponding to the specific\ntype of action event.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nActionEventType type = e.getEventType();\n</pre>\n<hr>\n<a name=\"Method:getActionCommand\"></a>\n<pre class=detailCode>\nstring getActionCommand();\n</pre>\n<div class=detailHTML>\nReturns the action command associated with this event.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring cmd = e.getActionCommand();\n</pre>\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString();\n</pre>\n<div class=detailHTML>\nConverts the event to a human-readable representation of the event.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = e.toString();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/GArc-class.html",
    "content": "<html>\n<head>\n<title>class GArc</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"gobjects-h.html\">class GArc</a></h1>\nThis class represents an elliptical arc.  In addition to the ones\nit inherits from <code>GObject</code>, the <code>GArc</code> class\ndefines the following methods:\n\n<pre>\n  GArc(double x, double y, double start, double sweep);\n  GArc(double x, double y, double width, double height,\n                           double start, double sweep);\n  void setStartAngle(double start);\n  double getStartAngle();\n  void setSweepAngle(double sweep);\n  double getSweepAngle();\n  void setFrameRectangle(GRectangle bounds);\n  void setFrameRectangle(double x, double y, double width, double height);\n  void setFilled(bool flag);\n  bool isFilled();\n  void setFillColor(string color);\n  string getFillColor();\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/GCompound-class.html",
    "content": "<html>\n<head>\n<title>class GCompound</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"gobjects-h.html\">class GCompound</a></h1>\nThis class represents a compound of other graphical objects.  In\naddition to the ones it inherits from <code>GObject</code>, the\n<code>GCompound</code> class defines the following methods:\n\n<pre>\n  GCompound();\n  void add(GObject gobj);\n  void add(GObject gobj, GPoint pt);\n  void add(GObject gobj, double x, double y);\n  void remove(GObject gobj);\n  void removeAll();\n  int getElementCount();\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/GEvent-class.html",
    "content": "<html>\n<head>\n<title>class GEvent</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"gevents-h.html\">class GEvent</a></h1>\nThis class is the root of the hierarchy for all events.  The\nprimary purpose of this general class is as the parameter to\nthe <code>waitForEvent</code> and <code>getNextEvent</code>\nfunctions.  Code that uses these functions to wait for events\nof more than one class must typically cast the event to the\nappropriate subclass, as illustrated in the sample code that\naccompanies the prototypes for those functions.\n<h2>Constructor</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Constructor:GEvent\">GEvent()</a>&nbsp;</td><td class=indexSynopsis width=100%>Ensures that an event is properly initialized to a <code>NULL</code> event.</td></tr>\n</table>\n<h2>Methods</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Method:getEventClass\">getEventClass()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the enumerated type constant indicating the class of the event.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:getEventTime\">getEventTime()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the system time in milliseconds at which the event occurred.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:getModifiers\">getModifiers()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns an integer whose bits indicate what modifiers are in effect.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:toString\">toString()</a>&nbsp;</td><td class=indexSynopsis width=100%>Converts the event to a human-readable representation of the event.</td></tr>\n</table>\n<h2>Operator</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Operator:bool\">operator bool</a>&nbsp;</td><td class=indexSynopsis width=100%>Converts the event to a Boolean value which is <code>true</code> if the event is valid.</td></tr>\n</table>\n<h2>Functions</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Function:startIntervalTimer\">startIntervalTimer(delay)</a><br><a href=\"#Function:startIntervalTimer\">startIntervalTimer(delay,&nbsp;count)</a>&nbsp;</td><td class=indexSynopsis width=100%>Starts an interval timer that fires a timer event repeatedly every <code>delay</code> milliseconds.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:stopIntervalTimer\">stopIntervalTimer()</a>&nbsp;</td><td class=indexSynopsis width=100%>Stops the interval timer.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:postEvent\">postEvent(e)</a>&nbsp;</td><td class=indexSynopsis width=100%>Adds the event to the end of the event queue.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:waitForEvent\">waitForEvent(e)</a>&nbsp;</td><td class=indexSynopsis width=100%>Dismisses the process until an event occurs.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:waitForClick\">waitForClick()</a><br><a href=\"#Function:waitForClick\">waitForClick(mouseEvent)</a>&nbsp;</td><td class=indexSynopsis width=100%>Waits for a mouse click to occur anywhere in the window, discarding any other events.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:getNextEvent\">getNextEvent(e)</a>&nbsp;</td><td class=indexSynopsis width=100%>Checks to see if there are any events waiting on the event queue.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:GEvent\"></a>\n<pre class=detailCode>\nGEvent();\n</pre>\n<div class=detailHTML>\nEnsures that an event is properly initialized to a <code>NULL</code>\nevent.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGEvent event;\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:getEventClass\"></a>\n<pre class=detailCode>\nEventClassType getEventClass();\n</pre>\n<div class=detailHTML>\nReturns the enumerated type constant indicating the class of the\nevent.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nEventClassType eventClass = e.getEventClass();\n</pre>\n<hr>\n<a name=\"Method:getEventTime\"></a>\n<pre class=detailCode>\ndouble getEventTime();\n</pre>\n<div class=detailHTML>\nReturns the system time in milliseconds at which the event occurred.\nTo ensure portability among systems that represent time in different\nways, the StanfordCPPLib packages use type <code>double</code> to\nrepresent time, which is always encoded as the number of milliseconds\nthat have elapsed since 00:00:00 UTC on January 1, 1970, which is\nthe conventional zero point for computer-based time systems.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble time = e.getEventTime();\n</pre>\n<hr>\n<a name=\"Method:getModifiers\"></a>\n<pre class=detailCode>\nint getModifiers();\n</pre>\n<div class=detailHTML>\nReturns an integer whose bits indicate what modifiers are in effect.\nTo check whether the shift key is down, for example, one could use\nthe following code:\n\n<pre>\n   if (e.getModifiers() & SHIFT_DOWN) . . .\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint modifiers = e.getModifiers();\n</pre>\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nvirtual string toString();\n</pre>\n<div class=detailHTML>\nConverts the event to a human-readable representation of the event.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = e.toString();\n</pre>\n<hr>\n</table>\n<h2>Operator detail</h2>\n<hr>\n<a name=\"Operator:bool\"></a>\n<pre class=detailCode>\noperator bool();\n</pre>\n<div class=detailHTML>\nConverts the event to a Boolean value which is <code>true</code> if the\nevent is valid.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (e) . . .\n</pre>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:startIntervalTimer\"></a>\n<pre class=detailCode>\nvoid startIntervalTimer(double delay);\nvoid startIntervalTimer(double delay, int count);\n</pre>\n<div class=detailHTML>\nStarts an interval timer that fires a timer event repeatedly every\n<code>delay</code> milliseconds.  The <code>count</code> parameter,\nif specified, indicates the maximum number of events to fire; if\nthis parameter is missing, the timer continues to fire until it is\nstopped.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstartIntervalTimer(delay);\nstartIntervalTimer(delay, count);\n</pre>\n<hr>\n<a name=\"Function:stopIntervalTimer\"></a>\n<pre class=detailCode>\nvoid stopIntervalTimer();\n</pre>\n<div class=detailHTML>\nStops the interval timer.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstopIntervalTimer();\n</pre>\n<hr>\n<a name=\"Function:postEvent\"></a>\n<pre class=detailCode>\nvoid postEvent(GEvent e);\n</pre>\n<div class=detailHTML>\nAdds the event to the end of the event queue.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\npostEvent(e);\n</pre>\n<hr>\n<a name=\"Function:waitForEvent\"></a>\n<pre class=detailCode>\nvoid waitForEvent(GEvent &amp; e);\nvoid waitForEvent(GWindowEvent &amp; e);\nvoid waitForEvent(GActionEvent &amp; e);\nvoid waitForEvent(GTimerEvent &amp; e);\nvoid waitForEvent(GMouseEvent &amp; e);\nvoid waitForEvent(GKeyEvent &amp; e);\n</pre>\n<div class=detailHTML>\nDismisses the process until an event occurs.  When it does, the\n<code>waitForEvent</code> function returns with the details of\nthe event.  The parameter <code>e</code> can be either a general\n<code>GEvent</code> variable or one of the specific subclasses.\nIn the former case, the function returns when any event occurs.\nClients should use this approach if they need to respond to more\nthan one class of event.  As an example, the following code is\nthe canonical event loop for an animated application that\nneeds to respond to mouse, key, and timer events:\n\n<pre>\n   startIntervalTimer(ANIMATION_DELAY_IN_MILLISECONDS);\n   while (true) {\n      GEvent e;\n      waitForEvent(e);\n      switch (e.getEventClass()) {\n       case TIMER_EVENT:\n         takeAnimationStep();\n         break;\n       case MOUSE_EVENT:\n         handleMouseEvent(GMouseEvent(e));\n         break;\n       case KEY_EVENT:\n         handleKeyEvent(GKeyEvent(e));\n         break;\n      }\n   }\n</pre>\n\nFor applications that are interested only in mouse events,\nfor example, this code can be simplified as follows:\n\n<pre>\n   while (true) {\n      GMouseEvent e;\n      waitForEvent(e);\n      handleMouseEvent(e);\n   }\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nwaitForEvent(e);\n</pre>\n<hr>\n<a name=\"Function:waitForClick\"></a>\n<pre class=detailCode>\nvoid waitForClick();\nvoid waitForClick(GMouseEvent &amp; mouseEvent);\n</pre>\n<div class=detailHTML>\nWaits for a mouse click to occur anywhere in the window, discarding\nany other events.  If the client passes a <code>GMouseEvent</code>\nas a reference parameter, the function will fill in the details of\nthe click event.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nwaitForClick();\nwaitForClick(mouseEvent);\n</pre>\n<hr>\n<a name=\"Function:getNextEvent\"></a>\n<pre class=detailCode>\nbool getNextEvent(GEvent &amp; e);\nbool getNextEvent(GWindowEvent &amp; e);\nbool getNextEvent(GActionEvent &amp; e);\nbool getNextEvent(GTimerEvent &amp; e);\nbool getNextEvent(GMouseEvent &amp; e);\nbool getNextEvent(GKeyEvent &amp; e);\n</pre>\n<div class=detailHTML>\nChecks to see if there are any events waiting on the event queue.\nIf so, <code>getNextEvent</code> fills in the structure of the event\nwith the first event in the queue and returns <code>true</code>.  If\nthere are no events, <code>getNextEvent</code> returns <code>false</code>.\nAs with <code>waitForEvent</code>, the parameter <code>e</code> can\nbe either a <code>GEvent</code> variable or one of the specific\nsubclasses.  Clients should use this form of the call if they\nneed to support animation in the main thread, as in the following\ncode example:\n\n<pre>\n   while (true) {\n      GEvent e;\n      if (getNextEvent(e)) {\n         switch (e.getEventClass()) {\n          case MOUSE_EVENT:\n            handleMouseEvent(GMouseEvent(e));\n            break;\n          case KEY_EVENT:\n            handleKeyEvent(GKeyEvent(e));\n            break;\n         }\n      } else {\n         takeAnimationStep();\n      }\n   }\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (getNextEvent(e)) . . .\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/GImage-class.html",
    "content": "<html>\n<head>\n<title>class GImage</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"gobjects-h.html\">class GImage</a></h1>\nThis class represents a graphical image, usually read in from a file.\nIn addition to the ones it inherits from <code>GObject</code>, the\n<code>GImage</code> class defines the following methods:\n\n<pre>\n  GImage(string filename);\n  GImage(string filename, double x, double y);\n  int getWidth();\n  int getHeight();\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/GKeyEvent-class.html",
    "content": "<html>\n<head>\n<title>class GKeyEvent</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"gevents-h.html\">class GKeyEvent</a></h1>\nThis event subclass represents a key event.\n<h2>Constructor</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Constructor:GKeyEvent\">GKeyEvent()</a><br><a href=\"#Constructor:GKeyEvent\">GKeyEvent(e)</a><br><a href=\"#Constructor:GKeyEvent\">GKeyEvent(type,&nbsp;key)</a>&nbsp;</td><td class=indexSynopsis width=100%>Creates a <code>GKeyEvent</code> using the specified parameters or those taken from the more general event <code>e</code>.</td></tr>\n</table>\n<h2>Methods</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Method:getEventType\">getEventType()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the enumerated type constant corresponding to the specific type of key event.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:getKey\">getKey()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the integer code associated with the key in the event.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:getChar\">getChar()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the character code for the key value after applying modifier keys.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:toString\">toString()</a>&nbsp;</td><td class=indexSynopsis width=100%>Converts the event to a human-readable representation of the event.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:GKeyEvent\"></a>\n<pre class=detailCode>\nGKeyEvent();\nGKeyEvent(GEvent e);\nGKeyEvent(KeyEventType type, int key);\n</pre>\n<div class=detailHTML>\nCreates a <code>GKeyEvent</code> using the specified parameters or\nthose taken from the more general event <code>e</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGKeyEvent keyEvent;\nGKeyEvent keyEvent(e);\nGKeyEvent keyEvent(type, key);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:getEventType\"></a>\n<pre class=detailCode>\nKeyEventType getEventType();\n</pre>\n<div class=detailHTML>\nReturns the enumerated type constant corresponding to the specific\ntype of key event.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nKeyEventType type = e.getEventType();\n</pre>\n<hr>\n<a name=\"Method:getKey\"></a>\n<pre class=detailCode>\nint getKey();\n</pre>\n<div class=detailHTML>\nReturns the integer code associated with the key in the event.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint key = getKey();\n</pre>\n<hr>\n<a name=\"Method:getChar\"></a>\n<pre class=detailCode>\nchar getChar();\n</pre>\n<div class=detailHTML>\nReturns the character code for the key value after applying modifier\nkeys.  For example, if the user types the <code>'a'</code> key with\nthe shift key down, <code>getChar</code> will return <code>'A'</code>.\nIf the key code in the event does not correspond to a character,\n<code>getChar</code> returns the null character (<code>'\\0'</code>).\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nchar ch = e.getChar();\n</pre>\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString();\n</pre>\n<div class=detailHTML>\nConverts the event to a human-readable representation of the event.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = e.toString();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/GLabel-class.html",
    "content": "<html>\n<head>\n<title>class GLabel</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"gobjects-h.html\">class GLabel</a></h1>\nThis class represents a text string.  In addition to the ones\nit inherits from <code>GObject</code>, the <code>GLabel</code>\nclass defines the following methods:\n\n<pre>\n  GLabel(string str);\n  GLabel(string str, double x, double y);\n  void setFont(string font);\n  string getFont();\n  void setLabel(string str);\n  string getLabel();\n  double getFontAscent();\n  double getFontDescent();\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/GLine-class.html",
    "content": "<html>\n<head>\n<title>class GLine</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"gobjects-h.html\">class GLine</a></h1>\nThis class represents a line segment.  In addition to the ones\nit inherits from <code>GObject</code>, the <code>GLine</code>\nclass defines the following methods:\n\n<pre>\n  GLine(double x0, double y0, double x1, double y1);\n  void setStartPoint(double x, double y);\n  void setEndPoint(double x, double y);\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/GMouseEvent-class.html",
    "content": "<html>\n<head>\n<title>class GMouseEvent</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"gevents-h.html\">class GMouseEvent</a></h1>\nThis event subclass represents a mouse event.\n<h2>Constructor</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Constructor:GMouseEvent\">GMouseEvent()</a><br><a href=\"#Constructor:GMouseEvent\">GMouseEvent(e)</a><br><a href=\"#Constructor:GMouseEvent\">GMouseEvent(type,&nbsp;x,&nbsp;y)</a>&nbsp;</td><td class=indexSynopsis width=100%>Creates a <code>GMouseEvent</code> using the specified parameters or those taken from the more general event <code>e</code>.</td></tr>\n</table>\n<h2>Methods</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Method:getEventType\">getEventType()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the enumerated type constant corresponding to the specific type of mouse event.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:getX\">getX()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the <i>x</i> coordinate at which the event occurred relative to the window origin at the upper left corner of the window.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:getY\">getY()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the <i>y</i> coordinate at which the event occurred relative to the window origin at the upper left corner of the window.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:toString\">toString()</a>&nbsp;</td><td class=indexSynopsis width=100%>Converts the event to a human-readable representation of the event.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:GMouseEvent\"></a>\n<pre class=detailCode>\nGMouseEvent();\nGMouseEvent(GEvent e);\nGMouseEvent(MouseEventType type, double x, double y);\n</pre>\n<div class=detailHTML>\nCreates a <code>GMouseEvent</code> using the specified parameters or\nthose taken from the more general event <code>e</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGMouseEvent mouseEvent;\nGMouseEvent mouseEvent(e);\nGMouseEvent mouseEvent(type, x, y);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:getEventType\"></a>\n<pre class=detailCode>\nMouseEventType getEventType();\n</pre>\n<div class=detailHTML>\nReturns the enumerated type constant corresponding to the specific\ntype of mouse event.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nMouseEventType type = e.getEventType();\n</pre>\n<hr>\n<a name=\"Method:getX\"></a>\n<pre class=detailCode>\ndouble getX();\n</pre>\n<div class=detailHTML>\nReturns the <i>x</i> coordinate at which the event occurred relative\nto the window origin at the upper left corner of the window.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble x = getX();\n</pre>\n<hr>\n<a name=\"Method:getY\"></a>\n<pre class=detailCode>\ndouble getY();\n</pre>\n<div class=detailHTML>\nReturns the <i>y</i> coordinate at which the event occurred relative\nto the window origin at the upper left corner of the window.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble y = getY();\n</pre>\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString();\n</pre>\n<div class=detailHTML>\nConverts the event to a human-readable representation of the event.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = e.toString();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/GObject-class.html",
    "content": "<html>\n<head>\n<title>class GObject</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"gobjects-h.html\">class GObject</a></h1>\nThis abstract class is the root of the graphics hierarchy.  All\nobject of this class and its subclasses implement the following\nmethods:\n\n<pre>\n  double getX();\n  double getY();\n  void setLocation(GPoint pt);\n  void setLocation(double x, double y);\n  void move(double dx, double dy);\n  double getWidth();\n  double getHeight();\n  string getColor();\n  void setColor(string color);\n  void setVisible(bool flag);\n  bool isVisible();\n  void sendForward();\n  void sendToFront();\n  void sendBackward();\n  void sendToBack();\n  bool contains(GPoint pt);\n  bool contains(double x, double y);\n  bool exists();\n  string getType();\n  string toString();\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/GOval-class.html",
    "content": "<html>\n<head>\n<title>class GOval</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"gobjects-h.html\">class GOval</a></h1>\nThis class represents an ellipse.  In addition to the ones\nit inherits from <code>GObject</code>, the <code>GOval</code>\nclass defines the following methods:\n\n<pre>\n  GOval(double width, double height);\n  GOval(double x, double y, double width, double height);\n  void setSize(double width, double height);\n  void setBounds(GRectangle bounds);\n  void setBounds(double x, double y, double width, double height);\n  void setFilled(bool flag);\n  bool isFilled();\n  void setFillColor(string color);\n  string getFillColor();\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/GPoint-class.html",
    "content": "<html>\n<head>\n<title>class GPoint</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"gtypes-h.html\">class GPoint</a></h1>\nThis class represents a point on the real-valued graphics plane.\n<h2>Constructor</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Constructor:GPoint\">GPoint()</a><br><a href=\"#Constructor:GPoint\">GPoint(x,&nbsp;y)</a>&nbsp;</td><td class=indexSynopsis width=100%>Creates a <code>GPoint</code> object with the specified <code>x</code> and <code>y</code> coordinates.</td></tr>\n</table>\n<h2>Methods</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Method:getX\">getX()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the <i>x</i> component of the point.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:getY\">getY()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the <i>y</i> component of the point.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:toString\">toString()</a>&nbsp;</td><td class=indexSynopsis width=100%>Converts the <code>GPoint</code> to a string in the form <code>\"(</code><i>x</i><code>,</code>&nbsp;<i>y</i><code>)\"</code>.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:GPoint\"></a>\n<pre class=detailCode>\nGPoint();\nGPoint(double x, double y);\n</pre>\n<div class=detailHTML>\nCreates a <code>GPoint</code> object with the specified <code>x</code>\nand <code>y</code> coordinates.  If the coordinates are not supplied,\nthe default constructor sets these fields to 0.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGPoint origin;\nGPoint pt(x, y);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:getX\"></a>\n<pre class=detailCode>\ndouble getX();\n</pre>\n<div class=detailHTML>\nReturns the <i>x</i> component of the point.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble x = pt.getX();\n</pre>\n<hr>\n<a name=\"Method:getY\"></a>\n<pre class=detailCode>\ndouble getY();\n</pre>\n<div class=detailHTML>\nReturns the <i>y</i> component of the point.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble y = pt.getY();\n</pre>\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString();\n</pre>\n<div class=detailHTML>\nConverts the <code>GPoint</code> to a string in the form\n<code>\"(</code><i>x</i><code>,</code>&nbsp;<i>y</i><code>)\"</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = pt.toString();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/GPolygon-class.html",
    "content": "<html>\n<head>\n<title>class GPolygon</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"gobjects-h.html\">class GPolygon</a></h1>\nThis class represents a polygon.  The constructor creates an\nempty polygon to which edges can be added.  In addition to the ones\nit inherits from <code>GObject</code>, the <code>GPolygon</code>\nclass defines the following methods:\n\n<pre>\n  GPolygon();\n  void addVertex(double x, double y);\n  void addVertex(double x, double y);\n  void addEdge(double dx, double dy);\n  void addPolarEdge(double r, double theta);\n  void setFilled(bool flag);\n  bool isFilled();\n  void setFillColor(string color);\n  string getFillColor();\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/GRect-class.html",
    "content": "<html>\n<head>\n<title>class GRect</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"gobjects-h.html\">class GRect</a></h1>\nThis class represents a rectangle.  In addition to the ones\nit inherits from <code>GObject</code>, the <code>GRect</code>\nclass defines the following methods:\n\n<pre>\n  GRect(double width, double height);\n  GRect(double x, double y, double width, double height);\n  void setSize(double width, double height);\n  void setBounds(GRectangle bounds);\n  void setBounds(double x, double y, double width, double height);\n  void setFilled(bool flag);\n  bool isFilled();\n  void setFillColor(string color);\n  string getFillColor();\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/GRectangle-class.html",
    "content": "<html>\n<head>\n<title>class GRectangle</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"gtypes-h.html\">class GRectangle</a></h1>\nThis class represents a rectangle on the graphics plane and is\nconventionally used to denote the bounding box for an object.\n<h2>Constructor</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Constructor:GRectangle\">GRectangle()</a><br><a href=\"#Constructor:GRectangle\">GRectangle(x,&nbsp;y,&nbsp;width,&nbsp;height)</a>&nbsp;</td><td class=indexSynopsis width=100%>Creates a <code>GRectangle</code> object with the specified components.</td></tr>\n</table>\n<h2>Methods</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Method:getX\">getX()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the <i>x</i> component of the rectangle.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:getY\">getY()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the <i>y</i> component of the rectangle.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:getWidth\">getWidth()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the <i>width</i> component of the rectangle.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:getHeight\">getHeight()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the <i>height</i> component of the rectangle.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:isEmpty\">isEmpty()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns <code>true</code> if the rectangle is empty.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:contains\">contains(pt)</a><br><a href=\"#Method:contains\">contains(x,&nbsp;y)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns <code>true</code> if the rectangle contains the given point, which may be specified either as a point or as distinct coordinates.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:toString\">toString()</a>&nbsp;</td><td class=indexSynopsis width=100%>Converts the <code>GRectangle</code> to a string in the form <code>\"(</code><i>x</i><code>,</code>&nbsp;<i>y</i><code>,</code> <i>width</i><code>,</code>&nbsp;<i>height</i><code>)\"</code>.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:GRectangle\"></a>\n<pre class=detailCode>\nGRectangle();\nGRectangle(double x, double y, double width, double height);\n</pre>\n<div class=detailHTML>\nCreates a <code>GRectangle</code> object with the specified components.\nIf these parameters are not supplied, the default constructor sets\nthese fields to 0.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGRectangle empty;\nGRectangle r(x, y, width, height);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:getX\"></a>\n<pre class=detailCode>\ndouble getX();\n</pre>\n<div class=detailHTML>\nReturns the <i>x</i> component of the rectangle.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble x = r.getX();\n</pre>\n<hr>\n<a name=\"Method:getY\"></a>\n<pre class=detailCode>\ndouble getY();\n</pre>\n<div class=detailHTML>\nReturns the <i>y</i> component of the rectangle.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble y = pt.getY();\n</pre>\n<hr>\n<a name=\"Method:getWidth\"></a>\n<pre class=detailCode>\ndouble getWidth();\n</pre>\n<div class=detailHTML>\nReturns the <i>width</i> component of the rectangle.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble width = r.getWidth();\n</pre>\n<hr>\n<a name=\"Method:getHeight\"></a>\n<pre class=detailCode>\ndouble getHeight();\n</pre>\n<div class=detailHTML>\nReturns the <i>height</i> component of the rectangle.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble height = pt.getHeight();\n</pre>\n<hr>\n<a name=\"Method:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty();\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the rectangle is empty.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (r.isEmpty()) . . .\n</pre>\n<hr>\n<a name=\"Method:contains\"></a>\n<pre class=detailCode>\nbool contains(GPoint pt);\nbool contains(double x, double y);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the rectangle contains the given point,\nwhich may be specified either as a point or as distinct coordinates.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (r.contains(pt)) . . .\nif (r.contains(x, y)) . . .\n</pre>\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString();\n</pre>\n<div class=detailHTML>\nConverts the <code>GRectangle</code> to a string in the form\n<code>\"(</code><i>x</i><code>,</code>&nbsp;<i>y</i><code>,</code>\n<i>width</i><code>,</code>&nbsp;<i>height</i><code>)\"</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = r.toString();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/GTimerEvent-class.html",
    "content": "<html>\n<head>\n<title>class GTimerEvent</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"gevents-h.html\">class GTimerEvent</a></h1>\nThis event subclass represents a timer event.\n<h2>Constructor</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Constructor:GTimerEvent\">GTimerEvent()</a><br><a href=\"#Constructor:GTimerEvent\">GTimerEvent(e)</a><br><a href=\"#Constructor:GTimerEvent\">GTimerEvent(type)</a>&nbsp;</td><td class=indexSynopsis width=100%>Creates a <code>GTimerEvent</code>.</td></tr>\n</table>\n<h2>Methods</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Method:getEventType\">getEventType()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the enumerated type constant corresponding to the specific type of timer event.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:toString\">toString()</a>&nbsp;</td><td class=indexSynopsis width=100%>Converts the event to a human-readable representation of the event.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:GTimerEvent\"></a>\n<pre class=detailCode>\nGTimerEvent();\nGTimerEvent(GEvent e);\nGTimerEvent(TimerEventType type);\n</pre>\n<div class=detailHTML>\nCreates a <code>GTimerEvent</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGTimerEvent timerEvent;\nGTimerEvent timerEvent(e);\nGTimerEvent timerEvent(type);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:getEventType\"></a>\n<pre class=detailCode>\nTimerEventType getEventType();\n</pre>\n<div class=detailHTML>\nReturns the enumerated type constant corresponding to the specific\ntype of timer event.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nTimerEventType type = e.getEventType();\n</pre>\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString();\n</pre>\n<div class=detailHTML>\nConverts the event to a human-readable representation of the event.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = e.toString();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/GWindow-class.html",
    "content": "<html>\n<head>\n<title>class GWindow</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"gwindow-h.html\">class GWindow</a></h1>\nThis class represents a graphics window that can be displayed on\nthe screen.  The public <code>GWindow</code> class stores only a\nreference to the internal data stored inside the machine-specific\nimplementation, so that <code>GWindow</code> objects can be freely\ncopied and continue to refer to the same window on the screen.\n<h2>Constructor</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Constructor:GWindow\">GWindow()</a><br><a href=\"#Constructor:GWindow\">GWindow(width,&nbsp;height)</a>&nbsp;</td><td class=indexSynopsis width=100%>Creates a window of the specified size but does not display it on the screen until the client calls <code>setVisible(true)</code>.</td></tr>\n</table>\n<h2>Methods</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Method:close\">close()</a>&nbsp;</td><td class=indexSynopsis width=100%>Deletes the window from the screen.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:draw\">draw(obj)</a><br><a href=\"#Method:draw\">draw(obj,&nbsp;x,&nbsp;y)</a>&nbsp;</td><td class=indexSynopsis width=100%>Draws the specified object into the window.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:add\">add(obj)</a><br><a href=\"#Method:add\">add(obj,&nbsp;x,&nbsp;y)</a>&nbsp;</td><td class=indexSynopsis width=100%>Adds the specified <code>GObject</code> to the end of the display list for this window.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:remove\">remove(obj)</a>&nbsp;</td><td class=indexSynopsis width=100%>Removes the specified <code>GObject</code> from the graphics window.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:setVisible\">setVisible(flag)</a>&nbsp;</td><td class=indexSynopsis width=100%>Determines whether the window is visible on the screen.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:isVisible\">isVisible()</a>&nbsp;</td><td class=indexSynopsis width=100%>Tests whether the window is visible.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:setColor\">setColor(color)</a>&nbsp;</td><td class=indexSynopsis width=100%>Sets the color used for drawing.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:getColor\">getColor()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the current color as a string in the form <code>\"#rrggbb\"</code> where <code>rr</code>, <code>gg</code>, and <code>bb</code> are 2-digit hexadecimal numbers.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:setFont\">setFont(font)</a>&nbsp;</td><td class=indexSynopsis width=100%>Sets a new font according to the <code>font</code> parameter, which is typically a string in the form <i>family</i><code>-</code><i>style</i><code>-</code><i>size</i>.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:getFont\">getFont()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the current font, as set by the most recent call to <code>setFont</code>.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:saveGraphicsState\">saveGraphicsState()</a>&nbsp;</td><td class=indexSynopsis width=100%>Saves the state of the graphics context.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:restoreGraphicsState\">restoreGraphicsState()</a>&nbsp;</td><td class=indexSynopsis width=100%>Restores the graphics state from the most recent call to <code>saveGraphicsState()</code>.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:getGObjectAt\">getGObjectAt(pt)</a><br><a href=\"#Method:getGObjectAt\">getGObjectAt(x,&nbsp;y)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the topmost object in the window that contains the specified point.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:getWindowWidth\">getWindowWidth()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the width of the graphics window, in pixels.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:getWindowHeight\">getWindowHeight()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the width of the graphics window, in pixels.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:repaint\">repaint()</a>&nbsp;</td><td class=indexSynopsis width=100%>Schedule a repaint on this window.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:updateDisplay\">updateDisplay()</a>&nbsp;</td><td class=indexSynopsis width=100%>Initiates an immediate update of the graphics window.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:setWindowTitle\">setWindowTitle(title)</a>&nbsp;</td><td class=indexSynopsis width=100%>Sets the title of the graphics window.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:getWindowTitle\">getWindowTitle()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the title of the graphics window.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:getTopLevelCompound\">getTopLevelCompound()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the top-level <code>GCompound</code> for this window.</td></tr>\n</table>\n<h2>Functions</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Function:getGObjectAt\">getGObjectAt(pt)</a><br><a href=\"#Function:getGObjectAt\">getGObjectAt(x,&nbsp;y)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the topmost object in the primary window containing the specified point.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:setWindowTitle\">setWindowTitle(title)</a>&nbsp;</td><td class=indexSynopsis width=100%>Sets the title of the primary graphics window.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:getWindowTitle\">getWindowTitle()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the title of the primary graphics window.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:getFullScreenWidth\">getFullScreenWidth()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the width of the entire display screen.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:getFullScreenHeight\">getFullScreenHeight()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the height of the entire display screen.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:exitGraphics\">exitGraphics()</a>&nbsp;</td><td class=indexSynopsis width=100%>Closes the graphics window and exits from the application without waiting for any additional user interaction.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:getGraphicsWindow\">getGraphicsWindow()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns a reference to the graphics window created by <code>initGraphics</code>.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:convertColorToRGB\">convertColorToRGB(colorName)</a>&nbsp;</td><td class=indexSynopsis width=100%>Converts a color name into an integer that encodes the red, green, and blue components of the color.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:convertRGBToColor\">convertRGBToColor(rgb)</a>&nbsp;</td><td class=indexSynopsis width=100%>Converts an <code>rgb</code> value into a color name in the form <code>\"#rrggbb\"</code>.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:GWindow\"></a>\n<pre class=detailCode>\nGWindow();\nGWindow(double width, double height);\n</pre>\n<div class=detailHTML>\nCreates a window of the specified size but does not display it on the\nscreen until the client calls <code>setVisible(true)</code>.  The\ndefault constructor creates a closed window that cannot be used\nuntil a valid window is assigned to it.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGWindow gw;\nGWindow gw(width, height);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:close\"></a>\n<pre class=detailCode>\nvoid close();\n</pre>\n<div class=detailHTML>\nDeletes the window from the screen.  Calling any method on a window\nthat has been closed generates an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngw.close();\n</pre>\n<hr>\n<a name=\"Method:draw\"></a>\n<pre class=detailCode>\nvoid draw(GObject obj);\nvoid draw(GObject obj, double x, double y);\n</pre>\n<div class=detailHTML>\nDraws the specified object into the window.  The second form moves\nthe object to the point (<code>x</code>,&nbsp;<code>y</code>) before\ndrawing it.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngw.draw(obj)\ngw.draw(obj, x, y);\n</pre>\n<hr>\n<a name=\"Method:add\"></a>\n<pre class=detailCode>\nvoid add(GObject obj);\nvoid add(GObject obj, double x, double y);\n</pre>\n<div class=detailHTML>\nAdds the specified <code>GObject</code> to the end of the display\nlist for this window.  The second form moves the object to the point\n(<code>x</code>,&nbsp;<code>y</code>) before adding it to the window.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngw.add(obj);\ngw.add(obj, x, y);\n</pre>\n<hr>\n<a name=\"Method:remove\"></a>\n<pre class=detailCode>\nvoid remove(GObject obj);\n</pre>\n<div class=detailHTML>\nRemoves the specified <code>GObject</code> from the graphics window.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngw.remove(obj);\n</pre>\n<hr>\n<a name=\"Method:setVisible\"></a>\n<pre class=detailCode>\nvoid setVisible(bool flag);\n</pre>\n<div class=detailHTML>\nDetermines whether the window is visible on the screen.  Windows\nare created in an invisible state and must be made visible before\nthey appear.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngw.setVisible(flag);\n</pre>\n<hr>\n<a name=\"Method:isVisible\"></a>\n<pre class=detailCode>\nbool isVisible();\n</pre>\n<div class=detailHTML>\nTests whether the window is visible.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (gw.isVisible()) . . .\n</pre>\n<hr>\n<a name=\"Method:setColor\"></a>\n<pre class=detailCode>\nvoid setColor(string color);\n</pre>\n<div class=detailHTML>\nSets the color used for drawing.  The <code>color</code> parameter\nis usually one of the predefined color names from Java:\n\n   <code>BLACK</code>,\n   <code>BLUE</code>,\n   <code>CYAN</code>,\n   <code>DARK_GRAY</code>,\n   <code>GRAY</code>,\n   <code>GREEN</code>,\n   <code>LIGHT_GRAY</code>,\n   <code>MAGENTA</code>,\n   <code>ORANGE</code>,\n   <code>PINK</code>,\n   <code>RED</code>,\n   <code>WHITE</code>, or\n   <code>YELLOW</code>.\n\nThe case of the individual letters in the color name is ignored,\nas are spaces and underscores, so that the Java color\n<code>DARK_GRAY</code> could be written as <code>\"Dark&nbsp;Gray\"</code>.\n\n<p>The color can also be specified as a string in the form\n<code>\"#rrggbb\"</code> where <code>rr</code>, <code>gg</code>, and\n<code>bb</code> are pairs of hexadecimal digits indicating the\nred, green, and blue components of the color.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngw.setColor(color);\n</pre>\n<hr>\n<a name=\"Method:getColor\"></a>\n<pre class=detailCode>\nstring getColor();\n</pre>\n<div class=detailHTML>\nReturns the current color as a string in the form <code>\"#rrggbb\"</code>\nwhere <code>rr</code>, <code>gg</code>, and <code>bb</code> are\n2-digit hexadecimal numbers.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring color = gw.getColor();\n</pre>\n<hr>\n<a name=\"Method:setFont\"></a>\n<pre class=detailCode>\nvoid setFont(string font);\n</pre>\n<div class=detailHTML>\nSets a new font according to the <code>font</code> parameter,\nwhich is typically a string in the form\n<i>family</i><code>-</code><i>style</i><code>-</code><i>size</i>.\nIn this string, <i>family</i> is the name of the font family;\n<i>style</i> is either missing (indicating a plain font) or one\nof the strings <code>Bold</code>, <code>Italic</code>, or\n<code>BoldItalic</code>; and <code>size</code> is an integer\nindicating the point size.  If any of these components is\nspecified as an asterisk, the existing value is retained.\nThe <code>font</code> parameter can also be a sequence of\nsuch specifications separated by semicolons, in which the\nfirst available font on the system is used.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngw.setFont(font);\n</pre>\n<hr>\n<a name=\"Method:getFont\"></a>\n<pre class=detailCode>\nstring getFont();\n</pre>\n<div class=detailHTML>\nReturns the current font, as set by the most recent call to\n<code>setFont</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring font = gw.getFont();\n</pre>\n<hr>\n<a name=\"Method:saveGraphicsState\"></a>\n<pre class=detailCode>\nvoid saveGraphicsState();\n</pre>\n<div class=detailHTML>\nSaves the state of the graphics context.  This method is used\nin conjunction with <code>restoreGraphicsState()</code> to avoid\nchanging the state set up by the client.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngw.saveGraphicsState();\n</pre>\n<hr>\n<a name=\"Method:restoreGraphicsState\"></a>\n<pre class=detailCode>\nvoid restoreGraphicsState();\n</pre>\n<div class=detailHTML>\nRestores the graphics state from the most recent call to\n<code>saveGraphicsState()</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngw.restoreGraphicsState();\n</pre>\n<hr>\n<a name=\"Method:getGObjectAt\"></a>\n<pre class=detailCode>\nGObject getGObjectAt(GPoint pt);\nGObject getGObjectAt(double x, double y);\n</pre>\n<div class=detailHTML>\nReturns the topmost object in the window that contains the specified\npoint.  If no such object exists, this function returns an\nuninitialized <code>GObject</code>.  The pattern for using\n<code>getGObjectAt</code> looks like this:\n\n<pre>\n   GObject obj = gw.getGObjectAt(x, y);\n   if (obj.exists()) . . .\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGObject obj = gw.getGObjectAt(pt);\nGObject obj = gw.getGObjectAt(x, y);\n</pre>\n<hr>\n<a name=\"Method:getWindowWidth\"></a>\n<pre class=detailCode>\ndouble getWindowWidth();\n</pre>\n<div class=detailHTML>\nReturns the width of the graphics window, in pixels.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble width = gw.getWindowWidth();\n</pre>\n<hr>\n<a name=\"Method:getWindowHeight\"></a>\n<pre class=detailCode>\ndouble getWindowHeight();\n</pre>\n<div class=detailHTML>\nReturns the width of the graphics window, in pixels.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble height = gw.getWindowHeight();\n</pre>\n<hr>\n<a name=\"Method:repaint\"></a>\n<pre class=detailCode>\nvoid repaint();\n</pre>\n<div class=detailHTML>\nSchedule a repaint on this window.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngw.repaint();\n</pre>\n<hr>\n<a name=\"Method:updateDisplay\"></a>\n<pre class=detailCode>\nvoid updateDisplay();\n</pre>\n<div class=detailHTML>\nInitiates an immediate update of the graphics window.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngw.updateDisplay();\n</pre>\n<hr>\n<a name=\"Method:setWindowTitle\"></a>\n<pre class=detailCode>\nvoid setWindowTitle(string title);\n</pre>\n<div class=detailHTML>\nSets the title of the graphics window.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngw.setWindowTitle(title);\n</pre>\n<hr>\n<a name=\"Method:getWindowTitle\"></a>\n<pre class=detailCode>\nstring getWindowTitle();\n</pre>\n<div class=detailHTML>\nReturns the title of the graphics window.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring title = gw.getWindowTitle();\n</pre>\n<hr>\n<a name=\"Method:getTopLevelCompound\"></a>\n<pre class=detailCode>\nGCompound getTopLevelCompound();\n</pre>\n<div class=detailHTML>\nReturns the top-level <code>GCompound</code> for this window.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGCompound compound = getTopLevelCompound();\n</pre>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:getGObjectAt\"></a>\n<pre class=detailCode>\nGObject getGObjectAt(GPoint pt);\nGObject getGObjectAt(double x, double y);\n</pre>\n<div class=detailHTML>\nReturns the topmost object in the primary window containing the\nspecified point.  If no such object exists, this function returns\nan uninitialized <code>GObject</code>.  The pattern for using\n<code>getGObjectAt</code> is:\n\n<pre>\n   GObject obj = getGObjectAt(x, y);\n   if (obj.exists()) . . .\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGObject obj = getGObjectAt(pt);\nGObject obj = getGObjectAt(x, y);\n</pre>\n<hr>\n<a name=\"Function:setWindowTitle\"></a>\n<pre class=detailCode>\nvoid setWindowTitle(string title);\n</pre>\n<div class=detailHTML>\nSets the title of the primary graphics window.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetWindowTitle(title);\n</pre>\n<hr>\n<a name=\"Function:getWindowTitle\"></a>\n<pre class=detailCode>\nstring getWindowTitle();\n</pre>\n<div class=detailHTML>\nReturns the title of the primary graphics window.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring title = getWindowTitle();\n</pre>\n<hr>\n<a name=\"Function:getFullScreenWidth\"></a>\n<pre class=detailCode>\ndouble getFullScreenWidth();\n</pre>\n<div class=detailHTML>\nReturns the width of the entire display screen.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nwidth = getFullScreenWidth();\n</pre>\n<hr>\n<a name=\"Function:getFullScreenHeight\"></a>\n<pre class=detailCode>\ndouble getFullScreenHeight();\n</pre>\n<div class=detailHTML>\nReturns the height of the entire display screen.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nheight = getFullScreenHeight();\n</pre>\n<hr>\n<a name=\"Function:exitGraphics\"></a>\n<pre class=detailCode>\nvoid exitGraphics();\n</pre>\n<div class=detailHTML>\nCloses the graphics window and exits from the application without\nwaiting for any additional user interaction.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nexitGraphics();\n</pre>\n<hr>\n<a name=\"Function:getGraphicsWindow\"></a>\n<pre class=detailCode>\nGWindow &amp; getGraphicsWindow();\n</pre>\n<div class=detailHTML>\nReturns a reference to the graphics window created by\n<code>initGraphics</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGWindow gw = getGraphicsWindow();\n</pre>\n<hr>\n<a name=\"Function:convertColorToRGB\"></a>\n<pre class=detailCode>\nint convertColorToRGB(string colorName);\n</pre>\n<div class=detailHTML>\nConverts a color name into an integer that encodes the\nred, green, and blue components of the color.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint rgb = convertColorToRGB(colorName);\n</pre>\n<hr>\n<a name=\"Function:convertRGBToColor\"></a>\n<pre class=detailCode>\nstring convertRGBToColor(int rgb);\n</pre>\n<div class=detailHTML>\nConverts an <code>rgb</code> value into a color name in the\nform <code>\"#rrggbb\"</code>.  Each of the <code>rr</code>,\n<code>gg</code>, and <code>bb</code> values are two-digit\nhexadecimal numbers indicating the intensity of that component.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint colorName = convertRGBToColor(rgb);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/GWindowEvent-class.html",
    "content": "<html>\n<head>\n<title>class GWindowEvent</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"gevents-h.html\">class GWindowEvent</a></h1>\nThis event subclass represents a window event.\n<h2>Constructor</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Constructor:GWindowEvent\">GWindowEvent()</a><br><a href=\"#Constructor:GWindowEvent\">GWindowEvent(e)</a><br><a href=\"#Constructor:GWindowEvent\">GWindowEvent(type,&nbsp;gw)</a>&nbsp;</td><td class=indexSynopsis width=100%>Creates a <code>GWindowEvent</code> using the specified parameters or those taken from the more general event <code>e</code>.</td></tr>\n</table>\n<h2>Methods</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Method:getEventType\">getEventType()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the enumerated type constant corresponding to the specific type of window event.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:getWindow\">getWindow()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the graphics window in which this event occurred.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:toString\">toString()</a>&nbsp;</td><td class=indexSynopsis width=100%>Converts the event to a human-readable representation of the event.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:GWindowEvent\"></a>\n<pre class=detailCode>\nGWindowEvent();\nGWindowEvent(GEvent e);\nGWindowEvent(WindowEventType type, GWindow gw);\n</pre>\n<div class=detailHTML>\nCreates a <code>GWindowEvent</code> using the specified parameters or\nthose taken from the more general event <code>e</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGWindowEvent windowEvent;\nGWindowEvent windowEvent(e);\nGWindowEvent windowEvent(type, gw);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:getEventType\"></a>\n<pre class=detailCode>\nWindowEventType getEventType();\n</pre>\n<div class=detailHTML>\nReturns the enumerated type constant corresponding to the specific\ntype of window event.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nWindowEventType type = e.getEventType();\n</pre>\n<hr>\n<a name=\"Method:getWindow\"></a>\n<pre class=detailCode>\nGWindow getWindow();\n</pre>\n<div class=detailHTML>\nReturns the graphics window in which this event occurred.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGWindow gw = e.getWindow();\n</pre>\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString();\n</pre>\n<div class=detailHTML>\nConverts the event to a human-readable representation of the event.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = e.toString();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/Graph-class.html",
    "content": "<html>\n<head>\n<title>class Graph&lt;NodeType,ArcType&gt;</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"graph-h.html\">class Graph&lt;NodeType,ArcType&gt;</a></h1>\nThis class represents a graph with the specified node and arc types.\nThe <code>NodeType</code> and <code>ArcType</code> parameters indicate\nthe structure type or class used for nodes and arcs, respectively.\nThese types can contain any fields or methods required by the client,\nbut must contain the following public fields required by the\n<code>Graph</code> package itself:\n\nThe <code>NodeType</code> definition must include:\n  - A <code>string</code> field called <code>name</code>\n  - A <code>Set&lt;ArcType *&gt;</code> field called <code>arcs</code>\n\nThe <code>ArcType</code> definition must include:\n  - A <code>NodeType *</code> field called <code>start</code>\n  - A <code>NodeType *</code> field called <code>finish</code>\n<h2>Constructor</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Constructor:Graph\">Graph()</a>&nbsp;</td><td class=indexSynopsis width=100%>Creates an empty <code>Graph</code> object.</td></tr>\n</table>\n<h2>Methods</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Method:size\">size()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the number of nodes in the graph.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:isEmpty\">isEmpty()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns <code>true</code> if the graph is empty.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:clear\">clear()</a>&nbsp;</td><td class=indexSynopsis width=100%>Reinitializes the graph to be empty, freeing any heap storage.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:addNode\">addNode(name)</a><br><a href=\"#Method:addNode\">addNode(node)</a>&nbsp;</td><td class=indexSynopsis width=100%>Adds a node to the graph.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:removeNode\">removeNode(name)</a><br><a href=\"#Method:removeNode\">removeNode(node)</a>&nbsp;</td><td class=indexSynopsis width=100%>Removes a node from the graph, where the node can be specified either by its name or as a pointer value.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:getNode\">getNode(name)</a>&nbsp;</td><td class=indexSynopsis width=100%>Looks up a node in the name table attached to the graph and returns a pointer to that node.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:nodeExists\">nodeExists(name)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns <code>true</code> if a node with the given name exists.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:addArc\">addArc(s1,&nbsp;s2)</a><br><a href=\"#Method:addArc\">addArc(n1,&nbsp;n2)</a><br><a href=\"#Method:addArc\">addArc(arc)</a>&nbsp;</td><td class=indexSynopsis width=100%>Adds an arc to the graph.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:removeArc\">removeArc(s1,&nbsp;s2)</a><br><a href=\"#Method:removeArc\">removeArc(n1,&nbsp;n2)</a><br><a href=\"#Method:removeArc\">removeArc(arc)</a>&nbsp;</td><td class=indexSynopsis width=100%>Removes an arc from the graph, where the arc can be specified in any of three ways: by the names of its endpoints, by the node pointers at its endpoints, or as an arc pointer.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:isConnected\">isConnected(n1,&nbsp;n2)</a><br><a href=\"#Method:isConnected\">isConnected(s1,&nbsp;s2)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns <code>true</code> if the graph contains an arc from <code>n1</code> to <code>n2</code>.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:getNodeSet\">getNodeSet()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the set of all nodes in the graph.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:getArcSet\">getArcSet()</a><br><a href=\"#Method:getArcSet\">getArcSet(node)</a><br><a href=\"#Method:getArcSet\">getArcSet(name)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the set of all arcs in the graph or, in the second and third forms, the arcs that start at the specified node, which can be indicated either as a pointer or by name.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:getNeighbors\">getNeighbors(node)</a><br><a href=\"#Method:getNeighbors\">getNeighbors(name)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the set of nodes that are neighbors of the specified node, which can be indicated either as a pointer or by name.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:Graph\"></a>\n<pre class=detailCode>\nGraph();\n</pre>\n<div class=detailHTML>\nCreates an empty <code>Graph</code> object.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGraph&lt;NodeType,ArcType&gt; g;\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:size\"></a>\n<pre class=detailCode>\nint size();\n</pre>\n<div class=detailHTML>\nReturns the number of nodes in the graph.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint size = g.size();\n</pre>\n<hr>\n<a name=\"Method:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty();\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the graph is empty.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (g.isEmpty()) . . .\n</pre>\n<hr>\n<a name=\"Method:clear\"></a>\n<pre class=detailCode>\nvoid clear();\n</pre>\n<div class=detailHTML>\nReinitializes the graph to be empty, freeing any heap storage.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ng.clear();\n</pre>\n<hr>\n<a name=\"Method:addNode\"></a>\n<pre class=detailCode>\nNodeType *addNode(string name);\nNodeType *addNode(NodeType *node);\n</pre>\n<div class=detailHTML>\nAdds a node to the graph.  The first version of this method\ncreates a new node of the appropriate type and initializes its\nfields; the second assumes that the client has already created\nthe node and simply adds it to the graph.  Both versions of this\nmethod return a pointer to the node.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nNodeType *node = g.addNode(name);\nNodeType *node = g.addNode(node);\n</pre>\n<hr>\n<a name=\"Method:removeNode\"></a>\n<pre class=detailCode>\nvoid removeNode(string name);\nvoid removeNode(NodeType *node);\n</pre>\n<div class=detailHTML>\nRemoves a node from the graph, where the node can be specified\neither by its name or as a pointer value.  Removing a node also\nremoves all arcs that contain that node.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ng.removeNode(name);\ng.removeNode(node);\n</pre>\n<hr>\n<a name=\"Method:getNode\"></a>\n<pre class=detailCode>\nNodeType *getNode(string name);\n</pre>\n<div class=detailHTML>\nLooks up a node in the name table attached to the graph and\nreturns a pointer to that node.  If no node with the specified\nname exists, <code>getNode</code> signals an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nNodeType *node = g.getNode(name);\n</pre>\n<hr>\n<a name=\"Method:nodeExists\"></a>\n<pre class=detailCode>\nbool nodeExists(string name);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if a node with the given name exists.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (g.nodeExists(name)) . . .\n</pre>\n<hr>\n<a name=\"Method:addArc\"></a>\n<pre class=detailCode>\nArcType *addArc(string s1, string s2);\nArcType *addArc(NodeType *n1, NodeType *n2);\nArcType *addArc(ArcType *arc);\n</pre>\n<div class=detailHTML>\nAdds an arc to the graph.  The endpoints of the arc can be specified\neither as strings indicating the names of the nodes or as pointers\nto the node structures.  Alternatively, the client can create the arc\nstructure explicitly and pass that pointer to the <code>addArc</code>\nmethod.  All three of these versions return a pointer to the arc in\ncase the client needs to capture this value.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ng.addArc(s1, s2);\ng.addArc(n1, n2);\ng.addArc(arc);\n</pre>\n<hr>\n<a name=\"Method:removeArc\"></a>\n<pre class=detailCode>\nvoid removeArc(string s1, string s2);\nvoid removeArc(NodeType *n1, NodeType *n2);\nvoid removeArc(ArcType *arc);\n</pre>\n<div class=detailHTML>\nRemoves an arc from the graph, where the arc can be specified in any\nof three ways: by the names of its endpoints, by the node pointers\nat its endpoints, or as an arc pointer.  If more than one arc\nconnects the specified endpoints, all of them are removed.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ng.removeArc(s1, s2);\ng.removeArc(n1, n2);\ng.removeArc(arc);\n</pre>\n<hr>\n<a name=\"Method:isConnected\"></a>\n<pre class=detailCode>\nbool isConnected(NodeType *n1, NodeType *n2);\nbool isConnected(string s1, string s2);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the graph contains an arc from\n<code>n1</code> to <code>n2</code>.  As in the <code>addArc</code>\nmethod, nodes can be specified either as node pointers or by name.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (g.isConnected(n1, n2)) . . .\nif (g.isConnected(s1, s2)) . . .\n</pre>\n<hr>\n<a name=\"Method:getNodeSet\"></a>\n<pre class=detailCode>\nSet&lt;NodeType *&gt; &amp; getNodeSet();\n</pre>\n<div class=detailHTML>\nReturns the set of all nodes in the graph.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nforeach (NodeType *node in g.getNodeSet()) . . .\n</pre>\n<hr>\n<a name=\"Method:getArcSet\"></a>\n<pre class=detailCode>\nSet&lt;ArcType *&gt; &amp; getArcSet();\nSet&lt;ArcType *&gt; &amp; getArcSet(NodeType *node);\nSet&lt;ArcType *&gt; &amp; getArcSet(string name);\n</pre>\n<div class=detailHTML>\nReturns the set of all arcs in the graph or, in the second and\nthird forms, the arcs that start at the specified node, which\ncan be indicated either as a pointer or by name.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nforeach (ArcType *arc in g.getArcSet()) . . .\nforeach (ArcType *arc in g.getArcSet(node)) . . .\nforeach (ArcType *arc in g.getArcSet(name)) . . .\n</pre>\n<hr>\n<a name=\"Method:getNeighbors\"></a>\n<pre class=detailCode>\nSet&lt;NodeType *&gt; getNeighbors(NodeType *node);\nSet&lt;NodeType *&gt; getNeighbors(string node);\n</pre>\n<div class=detailHTML>\nReturns the set of nodes that are neighbors of the specified\nnode, which can be indicated either as a pointer or by name.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nforeach (NodeType *node in g.getNeighbors(node)) . . .\nforeach (NodeType *node in g.getNeighbors(name)) . . .\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/Grid-class.html",
    "content": "<html>\n<head>\n<title>class Grid&lt;ValueType&gt;</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"grid-h.html\">class Grid&lt;ValueType&gt;</a></h1>\nThe <code>Grid</code> class stores an indexed, two-dimensional\narray.  The following function, for example, creates an identity\nmatrix of size <code>n</code>, in which the elements are 1.0\nalong the main diagonal and 0.0 everywhere else:\n\n<pre>\n   Grid<double> createIdentityMatrix(int n) {\n      Grid<double> matrix(n, n);\n      for (int i = 0; i < n; i++) {\n         matrix[i][i] = 1.0;\n      }\n      return matrix;\n   }\n</pre>\n<h2>Constructor</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Constructor:Grid\">Grid()</a><br><a href=\"#Constructor:Grid\">Grid(nRows,&nbsp;nCols)</a>&nbsp;</td><td class=indexSynopsis width=100%>Initializes a new grid.</td></tr>\n</table>\n<h2>Methods</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Method:numRows\">numRows()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the number of rows in the grid.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:numCols\">numCols()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the number of columns in the grid.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:resize\">resize(nRows,&nbsp;nCols)</a>&nbsp;</td><td class=indexSynopsis width=100%>Reinitializes the grid to have the specified number of rows and columns.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:inBounds\">inBounds(row,&nbsp;col)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns <code>true</code> if the specified row and column position is inside the bounds of the grid.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:mapAll\">mapAll(fn)</a><br><a href=\"#Method:mapAll\">mapAll(fn,&nbsp;data)</a>&nbsp;</td><td class=indexSynopsis width=100%>Calls the specified function on each element of the grid.</td></tr>\n</table>\n<h2>Operator</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Operator:[]\">operator[]</a>&nbsp;</td><td class=indexSynopsis width=100%>Overloads <code>[]</code> to select elements from this vector.</td></tr>\n</table>\n<h2>Macro</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Macro:foreach\">foreach(ValueType&nbsp;value&nbsp;in&nbsp;grid)</a>&nbsp;</td><td class=indexSynopsis width=100%>Iterates over the elements of the grid in <i>row-major order,</i> in which all the elements of row 0 are processed, followed by the elements in row 1, and so on.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:Grid\"></a>\n<pre class=detailCode>\nGrid();\nGrid(int nRows, int nCols);\n</pre>\n<div class=detailHTML>\nInitializes a new grid.  The second form of the constructor is\nmore common and creates a grid with the specified number of rows\nand columns.  Each element of the grid is initialized to the\ndefault value for the type.  The default constructor creates an\nempty grid for which the client must call <code>resize</code> to\nset the dimensions.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGrid&lt;ValueType&gt; grid;\nGrid&lt;ValueType&gt; grid(nRows, nCols);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:numRows\"></a>\n<pre class=detailCode>\nint numRows();\n</pre>\n<div class=detailHTML>\nReturns the number of rows in the grid.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint nRows = grid.numRows();\n</pre>\n<hr>\n<a name=\"Method:numCols\"></a>\n<pre class=detailCode>\nint numCols();\n</pre>\n<div class=detailHTML>\nReturns the number of columns in the grid.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint nCols = grid.numCols();\n</pre>\n<hr>\n<a name=\"Method:resize\"></a>\n<pre class=detailCode>\nvoid resize(int nRows, int nCols);\n</pre>\n<div class=detailHTML>\nReinitializes the grid to have the specified number of rows\nand columns.  Any previous grid contents are discarded.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngrid.resize(nRows, nCols);\n</pre>\n<hr>\n<a name=\"Method:inBounds\"></a>\n<pre class=detailCode>\nbool inBounds(int row, int col);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the specified row and column position\nis inside the bounds of the grid.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (grid.inBounds(row, col)) . . .\n</pre>\n<hr>\n<a name=\"Method:mapAll\"></a>\n<pre class=detailCode>\nvoid mapAll(void (*fn)(ValueType value));\n\ntemplate &lt;typename ClientDataType&gt;\nvoid mapAll(void (*fn)(ValueType value, ClientDataType &amp; data),\n            ClientDataType &amp; data);\n</pre>\n<div class=detailHTML>\nCalls the specified function on each element of the grid.  The\nelements are processed in <i>row-major order,</i> in which all\nthe elements of row 0 are processed, followed by the elements\nin row 1, and so on.  The second form of the call allows the\nclient to pass a data value of any type to the callback function.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngrid.mapAll(fn);\ngrid.mapAll(fn, data);\n</pre>\n<hr>\n</table>\n<h2>Operator detail</h2>\n<hr>\n<a name=\"Operator:[]\"></a>\n<pre class=detailCode>\nGridRow operator[](int row);\n</pre>\n<div class=detailHTML>\nOverloads <code>[]</code> to select elements from this vector.\nThis extension enables the use of traditional array notation to\nget or set individual elements.  This method signals an error if\nthe <code>row</code> and <code>col</code> arguments are outside\nthe grid boundaries.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvalue = grid[row][col];\ngrid[row][col] = value;\n</pre>\n<hr>\n</table>\n<h2>Macro detail</h2>\n<hr>\n<a name=\"Macro:foreach\"></a>\n<pre class=detailCode>\nforeach (ValueType value in grid) . . .\n</pre>\n<div class=detailHTML>\nIterates over the elements of the grid in <i>row-major order,</i>\nin which all the elements of row 0 are processed, followed by\nthe elements in row 1, and so on.\n</div>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/Lexicon-class.html",
    "content": "<html>\n<head>\n<title>class Lexicon</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"lexicon-h.html\">class Lexicon</a></h1>\nThis class is used to represent a <i>lexicon,</i> or word list.\nThe main difference between a lexicon and a dictionary is that\na lexicon does not provide any mechanism for storing definitions;\nthe lexicon contains only words, with no associated information.\nIt is therefore similar to a set of strings, but with a more\nspace-efficient internal representation.  The <code>Lexicon</code>\nclass supports efficient lookup operations for words and prefixes.\n<h2>Constructor</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Constructor:Lexicon\">Lexicon()</a><br><a href=\"#Constructor:Lexicon\">Lexicon(filename)</a>&nbsp;</td><td class=indexSynopsis width=100%>Initializes a new lexicon.</td></tr>\n</table>\n<h2>Methods</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Method:size\">size()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the number of words contained in the lexicon.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:isEmpty\">isEmpty()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns <code>true</code> if the lexicon contains no words.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:clear\">clear()</a>&nbsp;</td><td class=indexSynopsis width=100%>Removes all words from the lexicon.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:add\">add(word)</a>&nbsp;</td><td class=indexSynopsis width=100%>Adds the specified word to the lexicon.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:addWordsFromFile\">addWordsFromFile(filename)</a>&nbsp;</td><td class=indexSynopsis width=100%>Reads the file and adds all of its words to the lexicon.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:containsWord\">containsWord(word)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns <code>true</code> if <code>word</code> is contained in the lexicon.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:containsPrefix\">containsPrefix(prefix)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns true if any words in the lexicon begin with <code>prefix</code>.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:mapAll\">mapAll(fn)</a><br><a href=\"#Method:mapAll\">mapAll(fn,&nbsp;data)</a>&nbsp;</td><td class=indexSynopsis width=100%>Calls the specified function on each word in the lexicon.</td></tr>\n</table>\n<h2>Macro</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Macro:foreach\">foreach(string&nbsp;word&nbsp;in&nbsp;lexicon)</a>&nbsp;</td><td class=indexSynopsis width=100%>Iterates over the words in the lexicon in alphabetical order.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:Lexicon\"></a>\n<pre class=detailCode>\nLexicon();\nLexicon(string filename);\n</pre>\n<div class=detailHTML>\nInitializes a new lexicon.  The default constructor creates an empty\nlexicon.  The second form reads in the contents of the lexicon from\nthe specified data file.  The data file must be in one of two formats:\n(1) a space-efficient precompiled binary format or (2) a text file\ncontaining one word per line.  The Stanford library distribution\nincludes a binary lexicon file named <code>English.dat</code>\ncontaining a list of words in English.  The standard code pattern\nto initialize that lexicon looks like this:\n\n<pre>\n   Lexicon english(\"English.dat\");\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nLexicon lex;\nLexicon lex(filename);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:size\"></a>\n<pre class=detailCode>\nint size();\n</pre>\n<div class=detailHTML>\nReturns the number of words contained in the lexicon.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint n = lex.size();\n</pre>\n<hr>\n<a name=\"Method:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty();\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the lexicon contains no words.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (lex.isEmpty()) . . .\n</pre>\n<hr>\n<a name=\"Method:clear\"></a>\n<pre class=detailCode>\nvoid clear();\n</pre>\n<div class=detailHTML>\nRemoves all words from the lexicon.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlex.clear();\n</pre>\n<hr>\n<a name=\"Method:add\"></a>\n<pre class=detailCode>\nvoid add(string word);\n</pre>\n<div class=detailHTML>\nAdds the specified word to the lexicon.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlex.add(word);\n</pre>\n<hr>\n<a name=\"Method:addWordsFromFile\"></a>\n<pre class=detailCode>\nvoid addWordsFromFile(string filename);\n</pre>\n<div class=detailHTML>\nReads the file and adds all of its words to the lexicon.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlex.addWordsFromFile(filename);\n</pre>\n<hr>\n<a name=\"Method:containsWord\"></a>\n<pre class=detailCode>\nbool containsWord(string word);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if <code>word</code> is contained in the\nlexicon.  In the <code>Lexicon</code> class, the case of letters is\nignored, so \"Zoo\" is the same as \"ZOO\" or \"zoo\".\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (lex.containsWord(word)) . . .\n</pre>\n<hr>\n<a name=\"Method:containsPrefix\"></a>\n<pre class=detailCode>\nbool containsPrefix(string prefix);\n</pre>\n<div class=detailHTML>\nReturns true if any words in the lexicon begin with <code>prefix</code>.\nLike <code>containsWord</code>, this method ignores the case of letters\nso that \"MO\" is a prefix of \"monkey\" or \"Monday\".\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (lex.containsPrefix(prefix)) . . .\n</pre>\n<hr>\n<a name=\"Method:mapAll\"></a>\n<pre class=detailCode>\nvoid mapAll(void (*fn)(string value));\n\ntemplate &lt;typename ClientDataType&gt;\nvoid mapAll(void (*fn)(string value, ClientDataType &amp; data),\n            ClientDataType &amp; data);\n</pre>\n<div class=detailHTML>\nCalls the specified function on each word in the lexicon.  The second\nform of the call allows the client to pass a data value of any type\nto the callback function.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlexicon.mapAll(fn);\nlexicon.mapAll(fn, data);\n</pre>\n<hr>\n</table>\n<h2>Macro detail</h2>\n<hr>\n<a name=\"Macro:foreach\"></a>\n<pre class=detailCode>\nforeach (string word in lexicon) . . .\n</pre>\n<div class=detailHTML>\nIterates over the words in the lexicon in alphabetical order.\n</div>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/Lock-class.html",
    "content": "<html>\n<head>\n<title>class Lock</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"thread-h.html\">class Lock</a></h1>\nThis class represents a simple lock used to control concurrency.  The\nusual strategy for using locks is to use the <code>synchronized</code>\nmacro described later in this interface.\n<h2>Constructor</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Constructor:Lock\">Lock()</a>&nbsp;</td><td class=indexSynopsis width=100%>Initializes a lock, which is initially in the unlocked state.</td></tr>\n</table>\n<h2>Methods</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Method:wait\">wait()</a>&nbsp;</td><td class=indexSynopsis width=100%>Waits for some other thread to call <code>signal</code> on this lock.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:signal\">signal()</a>&nbsp;</td><td class=indexSynopsis width=100%>Signals all threads waiting on the lock so that they wake up and recheck the corresponding condition.</td></tr>\n</table>\n<h2>Statement</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Statement:synchronized\">synchronized(lock)</a>&nbsp;</td><td class=indexSynopsis width=100%>Defines a critical section protected by the specified lock.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:Lock\"></a>\n<pre class=detailCode>\nLock();\n</pre>\n<div class=detailHTML>\nInitializes a lock, which is initially in the unlocked state.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nLock lock;\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:wait\"></a>\n<pre class=detailCode>\nvoid wait();\n</pre>\n<div class=detailHTML>\nWaits for some other thread to call <code>signal</code> on this lock.\nThis call requires that the lock be held by the calling thread.\nThe effect of the <code>wait</code> method is to release the lock\nand then wait until the desired <code>signal</code> operation occurs,\nat which point the lock is reacquired and control returns from the\n<code>wait</code> call.  The <code>wait</code> method is typically\nused inside a critical section containing a <code>while</code> loop\nto check for a specific condition.  The standard paradigm for using\nthe <code>waitThread</code> function looks like this:<p>\n\n<pre>\n   synchronized (lock) {\n      while (conditional test) {\n         lock.wait();\n      }\n      . . . code to manipulate the locked resource . . .\n   }\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlock.wait();\n</pre>\n<hr>\n<a name=\"Method:signal\"></a>\n<pre class=detailCode>\nvoid signal();\n</pre>\n<div class=detailHTML>\nSignals all threads waiting on the lock so that they wake up and\nrecheck the corresponding condition.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlock.signal();\n</pre>\n<hr>\n</table>\n<h2>Statement detail</h2>\n<hr>\n<a name=\"Statement:synchronized\"></a>\n<pre class=detailCode>\nsynchronized (lock) . . .\n</pre>\n<div class=detailHTML>\nDefines a critical section protected by the specified lock.  The\ngeneral strategy for using this facility is shown in the following\nparadigmatic pattern:<p>\n\n<pre>\n   synchronized (lock) {\n      . . . statements in the critical section . . .\n   }\n</pre>\n</div>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/Map-class.html",
    "content": "<html>\n<head>\n<title>class Map&lt;KeyType,ValueType&gt;</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"map-h.html\">class Map&lt;KeyType,ValueType&gt;</a></h1>\nThe <code>Map</code> class maintains an association between\nkeys and values.  The types used for keys and values are\nspecified using templates, which makes it possible to use\nthis structure with any data type.\n<h2>Constructor</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Constructor:Map\">Map()</a><br><a href=\"#Constructor:Map\">Map(cmpFn)</a>&nbsp;</td><td class=indexSynopsis width=100%>Initializes a new empty map that associates keys and values of the specified types.</td></tr>\n</table>\n<h2>Methods</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Method:size\">size()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the number of entries in this map.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:isEmpty\">isEmpty()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns <code>true</code> if this map contains no entries.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:put\">put(key,&nbsp;value)</a>&nbsp;</td><td class=indexSynopsis width=100%>Associates <code>key</code> with <code>value</code> in this map.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:get\">get(key)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the value associated with <code>key</code> in this map.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:containsKey\">containsKey(key)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns <code>true</code> if there is an entry for <code>key</code> in this map.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:remove\">remove(key)</a>&nbsp;</td><td class=indexSynopsis width=100%>Removes any entry for <code>key</code> from this map.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:clear\">clear()</a>&nbsp;</td><td class=indexSynopsis width=100%>Removes all entries from this map.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:mapAll\">mapAll(fn)</a><br><a href=\"#Method:mapAll\">mapAll(fn,&nbsp;data)</a>&nbsp;</td><td class=indexSynopsis width=100%>Iterates through the keys in this map and calls <code>fn(key)</code> for each one.</td></tr>\n</table>\n<h2>Operator</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Operator:[]\">operator[]</a>&nbsp;</td><td class=indexSynopsis width=100%>Selects the value associated with <code>key</code>.</td></tr>\n</table>\n<h2>Macro</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Macro:foreach\">foreach(KeyType&nbsp;key&nbsp;in&nbsp;map)</a>&nbsp;</td><td class=indexSynopsis width=100%>Iterates over the keys in the map.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:Map\"></a>\n<pre class=detailCode>\nMap(int (*cmpFn)(KeyType, KeyType) = operatorCmp);\n</pre>\n<div class=detailHTML>\nInitializes a new empty map that associates keys and values of\nthe specified types.  The optional argument specifies a comparison\nfunction, which is called to compare data values.  This argument\nis typically omitted, in which case the implementation uses\nthe <code>operatorCmp</code> function from <code>cmpfn.h</code>,\nwhich applies the built-in operators <code>&lt;</code> and\n<code>==</code> to determine the ordering.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nMap&lt;KeyType,ValueType&gt; map;\nMap&lt;KeyType,ValueType&gt; map(cmpFn);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:size\"></a>\n<pre class=detailCode>\nint size();\n</pre>\n<div class=detailHTML>\nReturns the number of entries in this map.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint nEntries = map.size();\n</pre>\n<hr>\n<a name=\"Method:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty();\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if this map contains no entries.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (map.isEmpty()) . . .\n</pre>\n<hr>\n<a name=\"Method:put\"></a>\n<pre class=detailCode>\nvoid put(KeyType key, ValueType value);\n</pre>\n<div class=detailHTML>\nAssociates <code>key</code> with <code>value</code> in this map.\nAny previous value associated with <code>key</code> is replaced\nby the new value.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap.put(key, value);\n</pre>\n<hr>\n<a name=\"Method:get\"></a>\n<pre class=detailCode>\nValueType get(KeyType key);\n</pre>\n<div class=detailHTML>\nReturns the value associated with <code>key</code> in this map.\nIf <code>key</code> is not found, the <code>get</code> method\nsignals an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType value = map.get(key);\n</pre>\n<hr>\n<a name=\"Method:containsKey\"></a>\n<pre class=detailCode>\nbool containsKey(KeyType key);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if there is an entry for <code>key</code>\nin this map.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (map.containsKey(key)) . . .\n</pre>\n<hr>\n<a name=\"Method:remove\"></a>\n<pre class=detailCode>\nvoid remove(KeyType key);\n</pre>\n<div class=detailHTML>\nRemoves any entry for <code>key</code> from this map.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap.remove(key);\n</pre>\n<hr>\n<a name=\"Method:clear\"></a>\n<pre class=detailCode>\nvoid clear();\n</pre>\n<div class=detailHTML>\nRemoves all entries from this map.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap.clear();\n</pre>\n<hr>\n<a name=\"Method:mapAll\"></a>\n<pre class=detailCode>\nvoid mapAll(void (*fn)(KeyType key));\n\ntemplate &lt;typename ClientDataType&gt;\nvoid mapAll(void (*fn)(KeyType, ClientDataType &amp;), ClientDataType &amp; data);\n</pre>\n<div class=detailHTML>\nIterates through the keys in this map and calls <code>fn(key)</code>\nfor each one.  The keys are processed in ascending order, as defined\nby the comparison function.  The second form of the call allows the\nclient to pass a data value of any type to the callback function.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap.mapAll(fn);\nmap.mapAll(fn, data);\n</pre>\n<hr>\n</table>\n<h2>Operator detail</h2>\n<hr>\n<a name=\"Operator:[]\"></a>\n<pre class=detailCode>\nValueType &amp; operator[](KeyType key);\n</pre>\n<div class=detailHTML>\nSelects the value associated with <code>key</code>.  This syntax\nmakes it easy to think of a map as an \"associative array\"\nindexed by the key type.  If <code>key</code> is already present\nin the map, this function returns a reference to its associated\nvalue.  If key is not present in the map, a new entry is created\nwhose value is set to the default for the value type.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\noldValue = map[key];\nmap[key] = newValue;\n</pre>\n<hr>\n</table>\n<h2>Macro detail</h2>\n<hr>\n<a name=\"Macro:foreach\"></a>\n<pre class=detailCode>\nforeach (KeyType key in map) . . .\n</pre>\n<div class=detailHTML>\nIterates over the keys in the map. The keys are processed in\nascending order, as defined by the comparison function.\n</div>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/Point-class.html",
    "content": "<html>\n<head>\n<title>class Point</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"point-h.html\">class Point</a></h1>\nThis class represents an <i>x</i>-<i>y</i> coordinate point on a\ntwo-dimensional integer grid.  If you need to work with real-valued\npoints, you should use the <code>gtypes.h</code> interface instead.\n<h2>Constructor</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Constructor:Point\">Point()</a><br><a href=\"#Constructor:Point\">Point(x,&nbsp;y)</a>&nbsp;</td><td class=indexSynopsis width=100%>Creates a Point object with the specified x and y coordinates.</td></tr>\n</table>\n<h2>Methods</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Method:getX\">getX()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the <i>x</i>-coordinate of the point.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:getY\">getY()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the <i>y</i>-coordinate of the point.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:toString\">toString()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns a string representation of the <code>Point</code> in the form <code>\"(x, y)\"</code>.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:Point\"></a>\n<pre class=detailCode>\nPoint();\nPoint(int x, int y);\n</pre>\n<div class=detailHTML>\nCreates a Point object with the specified x and y coordinates.  If\nthe coordinates are not supplied, the default constructor sets these\nfields to 0.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nPoint origin;\nPoint pt(x, y);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:getX\"></a>\n<pre class=detailCode>\nint getX();\n</pre>\n<div class=detailHTML>\nReturns the <i>x</i>-coordinate of the point.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint x = pt.getX();\n</pre>\n<hr>\n<a name=\"Method:getY\"></a>\n<pre class=detailCode>\nint getY();\n</pre>\n<div class=detailHTML>\nReturns the <i>y</i>-coordinate of the point.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint y = pt.getY();\n</pre>\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString();\n</pre>\n<div class=detailHTML>\nReturns a string representation of the <code>Point</code> in the form\n<code>\"(x, y)\"</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = pt.toString();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/Queue-class.html",
    "content": "<html>\n<head>\n<title>class Queue&lt;ValueType&gt;</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"queue-h.html\">class Queue&lt;ValueType&gt;</a></h1>\nThis class models a linear structure called a <i>queue</i>\nin which values are added at one end and removed from the other.\nThis discipline gives rise to a first-in/first-out behavior (FIFO)\nthat is the defining feature of queues.  To provide additional\nflexibility, the <code>Queue</code> class also supports the concept\nof a <i>priority queue</i> in which elements are returned in\npriority order.  As in conventional English usage, lower priority\nnumbers correspond to higher effective priorities, so that a\npriority 1 item takes precedence over a priority 2 item.\n<h2>Constructor</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Constructor:Queue\">Queue()</a>&nbsp;</td><td class=indexSynopsis width=100%>Initializes a new empty queue.</td></tr>\n</table>\n<h2>Methods</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Method:size\">size()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the number of values in the queue.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:isEmpty\">isEmpty()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns <code>true</code> if the queue contains no elements.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:clear\">clear()</a>&nbsp;</td><td class=indexSynopsis width=100%>Removes all elements from the queue.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:enqueue\">enqueue(value,&nbsp;priority)</a>&nbsp;</td><td class=indexSynopsis width=100%>Adds <code>value</code> to the queue with the specified priority.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:dequeue\">dequeue()</a>&nbsp;</td><td class=indexSynopsis width=100%>Removes and return the highest priority value.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:peek\">peek()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the value of highest priority in the queue, without removing it.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:Queue\"></a>\n<pre class=detailCode>\nQueue();\n</pre>\n<div class=detailHTML>\nInitializes a new empty queue.  The queue operates as a standard\nfirst-in/first-out queue unless values are enqueued with a nonzero\npriority.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nQueue&lt;ValueType&gt; queue;\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:size\"></a>\n<pre class=detailCode>\nint size();\n</pre>\n<div class=detailHTML>\nReturns the number of values in the queue.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint n = queue.size();\n</pre>\n<hr>\n<a name=\"Method:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty();\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the queue contains no elements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (queue.isEmpty()) . . .\n</pre>\n<hr>\n<a name=\"Method:clear\"></a>\n<pre class=detailCode>\nvoid clear();\n</pre>\n<div class=detailHTML>\nRemoves all elements from the queue.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nqueue.clear();\n</pre>\n<hr>\n<a name=\"Method:enqueue\"></a>\n<pre class=detailCode>\nvoid enqueue(ValueType value, double priority = 0);\n</pre>\n<div class=detailHTML>\nAdds <code>value</code> to the queue with the specified priority.\nLower priority numbers correspond to higher priorities, which\nmeans that all priority 1 elements are dequeued before any\npriority 2 elements.  If the priority argument is omitted,\nelements are added at priority 0.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nqueue.enqueue(value, priority);\n</pre>\n<hr>\n<a name=\"Method:dequeue\"></a>\n<pre class=detailCode>\nValueType dequeue();\n</pre>\n<div class=detailHTML>\nRemoves and return the highest priority value.  If multiple\nentries in the queue have the same priority, those values are\ndequeued in the same order in which they were enqueued.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType first = queue.dequeue();\n</pre>\n<hr>\n<a name=\"Method:peek\"></a>\n<pre class=detailCode>\nValueType peek();\n</pre>\n<div class=detailHTML>\nReturns the value of highest priority in the queue, without\nremoving it.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType first = queue.peek();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/Set-class.html",
    "content": "<html>\n<head>\n<title>class Set&lt;ValueType&gt;</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"set-h.html\">class Set&lt;ValueType&gt;</a></h1>\nThis template class stores a collection of distinct elements.\n<h2>Constructor</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Constructor:Set\">Set()</a><br><a href=\"#Constructor:Set\">Set(cmpFn)</a><br><a href=\"#Constructor:Set\">Set(initializers)</a><br><a href=\"#Constructor:Set\">Set(initializers,&nbsp;cmpFn)</a>&nbsp;</td><td class=indexSynopsis width=100%>Initializes a set of the specified element type, which is either empty or initialized to match the elements of the C++ array passed as the <code>initializers</code> parameter.</td></tr>\n</table>\n<h2>Methods</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Method:size\">size()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the number of elements in this set.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:isEmpty\">isEmpty()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns <code>true</code> if this set contains no elements.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:add\">add(value)</a>&nbsp;</td><td class=indexSynopsis width=100%>Adds an element to this set, if it was not already there.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:remove\">remove(value)</a>&nbsp;</td><td class=indexSynopsis width=100%>Removes an element from this set.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:contains\">contains(value)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns <code>true</code> if the specified value is in this set.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:isSubsetOf\">isSubsetOf(set2)</a>&nbsp;</td><td class=indexSynopsis width=100%>Implements the subset relation on sets.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:clear\">clear()</a>&nbsp;</td><td class=indexSynopsis width=100%>Removes all elements from this set.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:mapAll\">mapAll(fn)</a><br><a href=\"#Method:mapAll\">mapAll(fn,&nbsp;data)</a>&nbsp;</td><td class=indexSynopsis width=100%>Iterates through the elements of the set and calls <code>fn(value)</code> for each one.</td></tr>\n</table>\n<h2>Operators</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Operator:==\">operator==</a>&nbsp;</td><td class=indexSynopsis width=100%>Implements the equality relation on sets.</td></tr>\n<tr><td class=indexKey><a href=\"#Operator:+\">operator+</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the union of sets <code>set1</code> and <code>set2</code>, which is the set of elements that appear in at least one of the two sets.</td></tr>\n<tr><td class=indexKey><a href=\"#Operator:*\">operator*</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the intersection of sets <code>set1</code> and <code>set2</code>, which is the set of all elements that appear in both.</td></tr>\n<tr><td class=indexKey><a href=\"#Operator:-\">operator-</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the difference of sets <code>set1</code> and <code>set2</code>, which is all of the elements that appear in <code>set1</code> but not <code>set2</code>.</td></tr>\n<tr><td class=indexKey><a href=\"#Operator:+=\">operator+=</a>&nbsp;</td><td class=indexSynopsis width=100%>Adds all of the elements from <code>set2</code> (or the single specified value) to <code>set1</code>.</td></tr>\n<tr><td class=indexKey><a href=\"#Operator:*=\">operator*=</a>&nbsp;</td><td class=indexSynopsis width=100%>Removes any elements from <code>set1</code> that are not present in <code>set2</code>.</td></tr>\n<tr><td class=indexKey><a href=\"#Operator:-=\">operator-=</a>&nbsp;</td><td class=indexSynopsis width=100%>Removes the elements from <code>set2</code> (or the single specified value) from <code>set1</code>.</td></tr>\n</table>\n<h2>Macro</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Macro:foreach\">foreach(ValueType&nbsp;value&nbsp;in&nbsp;set)</a>&nbsp;</td><td class=indexSynopsis width=100%>Iterates over the elements of the set.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:Set\"></a>\n<pre class=detailCode>\nSet(int (*cmpFn)(ValueType, ValueType) = operatorCmp);\n</pre>\n<div class=detailHTML>\nInitializes a set of the specified element type, which is either\nempty or initialized to match the elements of the C++ array\npassed as the <code>initializers</code> parameter.  The optional\n<code>cmpFn</code> argument specifies a comparison function, which\nis called to compare data values.  This argument is typically omitted,\nin which case the implementation uses the <code>operatorCmp</code>\nfunction from <code>cmpfn.h</code>, which applies the built-in\noperators <code>&lt;</code> and <code>==</code> to determine\nthe ordering.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nSet&lt;ValueType&gt; set;\nSet&lt;ValueType&gt; set(cmpFn);\nSet&lt;ValueType&gt; set(initializers);\nSet&lt;ValueType&gt; set(initializers, cmpFn);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:size\"></a>\n<pre class=detailCode>\nint size();\n</pre>\n<div class=detailHTML>\nReturns the number of elements in this set.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncount = set.size();\n</pre>\n<hr>\n<a name=\"Method:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty();\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if this set contains no elements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (set.isEmpty()) . . .\n</pre>\n<hr>\n<a name=\"Method:add\"></a>\n<pre class=detailCode>\nvoid add(const ValueType &amp; value);\nvoid insert(const ValueType &amp; value);\n</pre>\n<div class=detailHTML>\nAdds an element to this set, if it was not already there.  For\ncompatibility with the STL <code>set</code> class, this method\nis also exported as <code>insert</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset.add(value);\n</pre>\n<hr>\n<a name=\"Method:remove\"></a>\n<pre class=detailCode>\nvoid remove(const ValueType &amp; value);\n</pre>\n<div class=detailHTML>\nRemoves an element from this set.  If the value was not\ncontained in the set, no error is generated and the set\nremains unchanged.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset.remove(value);\n</pre>\n<hr>\n<a name=\"Method:contains\"></a>\n<pre class=detailCode>\nbool contains(const ValueType &amp; value);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the specified value is in this set.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (set.contains(value)) . . .\n</pre>\n<hr>\n<a name=\"Method:isSubsetOf\"></a>\n<pre class=detailCode>\nbool isSubsetOf(const Set &amp; set2);\n</pre>\n<div class=detailHTML>\nImplements the subset relation on sets.  It returns\n<code>true</code> if every element of this set is\ncontained in <code>set2</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (set.isSubsetOf(set2)) . . .\n</pre>\n<hr>\n<a name=\"Method:clear\"></a>\n<pre class=detailCode>\nvoid clear();\n</pre>\n<div class=detailHTML>\nRemoves all elements from this set.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset.clear();\n</pre>\n<hr>\n<a name=\"Method:mapAll\"></a>\n<pre class=detailCode>\nvoid mapAll(void (*fn)(ValueType value));\n\ntemplate &lt;typename ClientDataType&gt;\nvoid mapAll(void (*fn)(ValueType, ClientDataType &amp;), ClientDataType &amp; data);\n</pre>\n<div class=detailHTML>\nIterates through the elements of the set and calls <code>fn(value)</code>\nfor each one.  The values are processed in ascending order, as defined\nby the comparison function.  The second form of the call allows the\nclient to pass a data value of any type to the callback function.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset.mapAll(fn);\nset.mapAll(fn, data);\n</pre>\n<hr>\n</table>\n<h2>Operator detail</h2>\n<hr>\n<a name=\"Operator:==\"></a>\n<pre class=detailCode>\nbool operator==(const Set &amp; set2);\nbool operator!=(const Set &amp; set2);\n</pre>\n<div class=detailHTML>\nImplements the equality relation on sets.  The <code>==</code>\noperator returns <code>true</code> if <code>set1</code> and\n<code>set2</code> contain exactly the same elements; the\n<code>!=</code> returns the opposite value.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (set1 == set2) . . .\nif (set1 != set2) . . .\n</pre>\n<hr>\n<a name=\"Operator:+\"></a>\n<pre class=detailCode>\nSet operator+(const Set &amp; set2);\n</pre>\n<div class=detailHTML>\nReturns the union of sets <code>set1</code> and <code>set2</code>, which\nis the set of elements that appear in at least one of the two sets.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1 + set2;\n</pre>\n<hr>\n<a name=\"Operator:*\"></a>\n<pre class=detailCode>\nSet operator*(const Set &amp; set2);\n</pre>\n<div class=detailHTML>\nReturns the intersection of sets <code>set1</code> and <code>set2</code>,\nwhich is the set of all elements that appear in both.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1 * set2;\n</pre>\n<hr>\n<a name=\"Operator:-\"></a>\n<pre class=detailCode>\nSet operator-(const Set &amp; set2);\n</pre>\n<div class=detailHTML>\nReturns the difference of sets <code>set1</code> and <code>set2</code>,\nwhich is all of the elements that appear in <code>set1</code> but\nnot <code>set2</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1 - set2;\n</pre>\n<hr>\n<a name=\"Operator:+=\"></a>\n<pre class=detailCode>\nSet &amp; operator+=(const Set &amp; set2);\nSet &amp; operator+=(const ValueType &amp; value);\n</pre>\n<div class=detailHTML>\nAdds all of the elements from <code>set2</code> (or the single\nspecified value) to <code>set1</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1 += set2;\nset1 += value;\n</pre>\n<hr>\n<a name=\"Operator:*=\"></a>\n<pre class=detailCode>\nSet &amp; operator*=(const Set &amp; set2);\n</pre>\n<div class=detailHTML>\nRemoves any elements from <code>set1</code> that are not present in\n<code>set2</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1 *= set2;\n</pre>\n<hr>\n<a name=\"Operator:-=\"></a>\n<pre class=detailCode>\nSet &amp; operator-=(const Set &amp; set2);\nSet &amp; operator-=(const ValueType &amp; value);\n</pre>\n<div class=detailHTML>\nRemoves the elements from <code>set2</code> (or the single\nspecified value) from <code>set1</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1 -= set2;\nset1 -= value;\n</pre>\n<hr>\n</table>\n<h2>Macro detail</h2>\n<hr>\n<a name=\"Macro:foreach\"></a>\n<pre class=detailCode>\nforeach (ValueType value in set) . . .\n</pre>\n<div class=detailHTML>\nIterates over the elements of the set. The values are returned\nin ascending order, as defined by the comparison function.\n</div>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/Sound-class.html",
    "content": "<html>\n<head>\n<title>class Sound</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"sound-h.html\">class Sound</a></h1>\nThis class encapsulates a sound file, which is typically\nspecified in the constructor.\n<h2>Constructor</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Constructor:Sound\">Sound()</a><br><a href=\"#Constructor:Sound\">Sound(filename)</a>&nbsp;</td><td class=indexSynopsis width=100%>Creates a <code>Sound</code> object.</td></tr>\n</table>\n<h2>Methods</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Method:play\">play()</a>&nbsp;</td><td class=indexSynopsis width=100%>Plays the sound synchronously and waits for the sound to finish before returning.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:start\">start()</a>&nbsp;</td><td class=indexSynopsis width=100%>Starts playing the sound asynchronously.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:stop\">stop()</a>&nbsp;</td><td class=indexSynopsis width=100%>Stops playing the sound.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:Sound\"></a>\n<pre class=detailCode>\nSound();\nSound(string filename);\n</pre>\n<div class=detailHTML>\nCreates a <code>Sound</code> object.  The default constructor\ncreates an empty sound that cannot be played.  The second form\ninitializes the sound by reading in the contents of the specified\nfile.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nSound sound;\nSound sound(filename);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:play\"></a>\n<pre class=detailCode>\nvoid play();\n</pre>\n<div class=detailHTML>\nPlays the sound synchronously and waits for the sound to finish before\nreturning.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsound.play();\n</pre>\n<hr>\n<a name=\"Method:start\"></a>\n<pre class=detailCode>\nvoid start();\n</pre>\n<div class=detailHTML>\nStarts playing the sound asynchronously.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsound.start();\n</pre>\n<hr>\n<a name=\"Method:stop\"></a>\n<pre class=detailCode>\nvoid stop();\n</pre>\n<div class=detailHTML>\nStops playing the sound.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsound.stop();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/Stack-class.html",
    "content": "<html>\n<head>\n<title>class Stack&lt;ValueType&gt;</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"stack-h.html\">class Stack&lt;ValueType&gt;</a></h1>\nThis class models a linear structure called a <i>stack</i>\nin which values are added and removed only from one end.\nThis discipline gives rise to a last-in/first-out behavior (LIFO)\nthat is the defining feature of stacks.  The fundamental stack\noperations are <code>push</code> (add to top) and <code>pop</code>\n(remove from top).\n<h2>Constructor</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Constructor:Stack\">Stack()</a>&nbsp;</td><td class=indexSynopsis width=100%>Initializes a new empty stack.</td></tr>\n</table>\n<h2>Methods</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Method:size\">size()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the number of values in this stack.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:isEmpty\">isEmpty()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns <code>true</code> if this stack contains no elements.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:clear\">clear()</a>&nbsp;</td><td class=indexSynopsis width=100%>Removes all elements from this stack.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:push\">push(value)</a>&nbsp;</td><td class=indexSynopsis width=100%>Pushes the specified value onto this stack.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:pop\">pop()</a>&nbsp;</td><td class=indexSynopsis width=100%>Removes the top element from this stack and returns it.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:peek\">peek()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the value of top element from this stack, without removing it.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:Stack\"></a>\n<pre class=detailCode>\nStack();\n</pre>\n<div class=detailHTML>\nInitializes a new empty stack.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nStack&lt;ValueType&gt; stack;\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:size\"></a>\n<pre class=detailCode>\nint size();\n</pre>\n<div class=detailHTML>\nReturns the number of values in this stack.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint n = stack.size();\n</pre>\n<hr>\n<a name=\"Method:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty();\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if this stack contains no elements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (stack.isEmpty()) . . .\n</pre>\n<hr>\n<a name=\"Method:clear\"></a>\n<pre class=detailCode>\nvoid clear();\n</pre>\n<div class=detailHTML>\nRemoves all elements from this stack.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstack.clear();\n</pre>\n<hr>\n<a name=\"Method:push\"></a>\n<pre class=detailCode>\nvoid push(ValueType value);\n</pre>\n<div class=detailHTML>\nPushes the specified value onto this stack.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstack.push(value);\n</pre>\n<hr>\n<a name=\"Method:pop\"></a>\n<pre class=detailCode>\nValueType pop();\n</pre>\n<div class=detailHTML>\nRemoves the top element from this stack and returns it.  This\nmethod signals an error if called on an empty stack.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType top = stack.pop();\n</pre>\n<hr>\n<a name=\"Method:peek\"></a>\n<pre class=detailCode>\nValueType peek();\n</pre>\n<div class=detailHTML>\nReturns the value of top element from this stack, without removing\nit.  This method signals an error if called on an empty stack.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType top = stack.peek();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/Thread-class.html",
    "content": "<html>\n<head>\n<title>class Thread</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"thread-h.html\">class Thread</a></h1>\nThe <code>Thread</code> class encapsulates a lightweight process\nrunning in the same address space as the creator.  The class\nitself is opaque and is manipulated by top-level functions as\nillustrated in the following paradigm:\n\n<pre>\n   Thread child = fork(fn);\n   . . . code for the parent thread . . .\n   join(child);\n</pre>\n\nThis code calls <code>fn</code> so that it runs in parallel with the\nparent code.\n<h2>Constructor</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Constructor:Thread\">Thread()</a>&nbsp;</td><td class=indexSynopsis width=100%>Creates an inactive thread variable that will typically be overwritten by the result of a <code>fork</code> call.</td></tr>\n</table>\n<h2>Method</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Method:toString\">toString()</a>&nbsp;</td><td class=indexSynopsis width=100%>Converts the thread to a string.</td></tr>\n</table>\n<h2>Functions</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Function:fork\">fork(fn)</a><br><a href=\"#Function:fork\">fork(fn,&nbsp;data)</a>&nbsp;</td><td class=indexSynopsis width=100%>Creates a child thread that calls <code>fn</code> in an address space shared with the current thread.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:join\">join(thread)</a>&nbsp;</td><td class=indexSynopsis width=100%>Waits for the specified thread to finish before proceeding.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:yield\">yield()</a>&nbsp;</td><td class=indexSynopsis width=100%>Yields the processor to allow another thread to run.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:getCurrentThread\">getCurrentThread()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the currently executing thread.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:Thread\"></a>\n<pre class=detailCode>\nThread();\n</pre>\n<div class=detailHTML>\nCreates an inactive thread variable that will typically be overwritten\nby the result of a <code>fork</code> call.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nThread thread;\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString();\n</pre>\n<div class=detailHTML>\nConverts the thread to a string.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = thread.toString();\n</pre>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:fork\"></a>\n<pre class=detailCode>\nThread fork(void (*fn)());\n\ntemplate &lt;typename ClientType&gt;\nThread fork(void (*fn)(ClientType &amp; data), ClientType &amp; data);\n</pre>\n<div class=detailHTML>\nCreates a child thread that calls <code>fn</code> in an address space\nshared with the current thread.  The second form makes it possible to\npass an argument to <code>fn</code>, which may be of any type.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nThread child = fork(fn);\nThread child = fork(fn, data);\n</pre>\n<hr>\n<a name=\"Function:join\"></a>\n<pre class=detailCode>\nvoid join(Thread &amp; thread);\n</pre>\n<div class=detailHTML>\nWaits for the specified thread to finish before proceeding.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\njoin(thread);\n</pre>\n<hr>\n<a name=\"Function:yield\"></a>\n<pre class=detailCode>\nvoid yield();\n</pre>\n<div class=detailHTML>\nYields the processor to allow another thread to run.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nyield();\n</pre>\n<hr>\n<a name=\"Function:getCurrentThread\"></a>\n<pre class=detailCode>\nThread getCurrentThread();\n</pre>\n<div class=detailHTML>\nReturns the currently executing thread.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nThread self = getCurrentThread();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/TokenScanner-class.html",
    "content": "<html>\n<head>\n<title>class TokenScanner</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"scanner-h.html\">class TokenScanner</a></h1>\nThis class divides a string into individual tokens.  The typical\nuse of the <code>TokenScanner</code> class is illustrated by the\nfollowing pattern, which reads the tokens in the string variable\n<code>input</code>:\n\n<pre>\n   TokenScanner scanner;\n   scanner.setInput(input);\n   while (scanner.hasMoreTokens()) {\n      string token = scanner.nextToken();\n      . . . process the token . . .\n   }\n</pre>\n\nThe <code>TokenScanner</code> class exports several additional methods\nthat give clients more control over its behavior.  Those methods are\ndescribed individually in the documentation.\n<h2>Constructor</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Constructor:TokenScanner\">TokenScanner()</a><br><a href=\"#Constructor:TokenScanner\">TokenScanner(str)</a><br><a href=\"#Constructor:TokenScanner\">TokenScanner(infile)</a>&nbsp;</td><td class=indexSynopsis width=100%>Initializes a scanner object.</td></tr>\n</table>\n<h2>Methods</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Method:setInput\">setInput(str)</a><br><a href=\"#Method:setInput\">setInput(infile)</a>&nbsp;</td><td class=indexSynopsis width=100%>Sets the token stream for this scanner to the specified string or input stream.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:hasMoreTokens\">hasMoreTokens()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns <code>true</code> if there are additional tokens for this scanner to read.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:nextToken\">nextToken()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the next token from this scanner.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:saveToken\">saveToken(token)</a>&nbsp;</td><td class=indexSynopsis width=100%>Pushes the specified token back into this scanner's input stream.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:setIgnoreWhitespaceFlag\">setIgnoreWhitespaceFlag(flag)</a>&nbsp;</td><td class=indexSynopsis width=100%>Controls whether this scanner ignores whitespace characters.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:setIgnoreCommentsFlag\">setIgnoreCommentsFlag(flag)</a>&nbsp;</td><td class=indexSynopsis width=100%>Controls whether this scanner ignores comments.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:setScanNumbersFlag\">setScanNumbersFlag(flag)</a>&nbsp;</td><td class=indexSynopsis width=100%>Controls how the scanner treats tokens that begin with a digit.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:setScanStringsFlag\">setScanStringsFlag(flag)</a>&nbsp;</td><td class=indexSynopsis width=100%>Controls how the scanner treats tokens enclosed in quotation marks.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:addWordCharacters\">addWordCharacters(str)</a>&nbsp;</td><td class=indexSynopsis width=100%>Adds the characters in <code>str</code> to the set of characters legal in a word.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:defineOperator\">defineOperator(op)</a>&nbsp;</td><td class=indexSynopsis width=100%>Defines a new multicharacter operator.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:getPosition\">getPosition()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the current position of the scanner in the input stream.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:isValidIdentifier\">isValidIdentifier(token)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns <code>true</code> if the token is a valid identifier.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:isWordCharacter\">isWordCharacter(ch)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns <code>true</code> if the character is valid in a word.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:verifyToken\">verifyToken(expected)</a>&nbsp;</td><td class=indexSynopsis width=100%>Reads the next token and makes sure it matches the string <code>expected</code>.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:getTokenType\">getTokenType(token)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the type of this token.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:TokenScanner\"></a>\n<pre class=detailCode>\nTokenScanner();\nTokenScanner(string str);\nTokenScanner(istream &amp; infile);\n</pre>\n<div class=detailHTML>\nInitializes a scanner object.  The initial token stream comes from\nthe specified string or input stream, if supplied.  If no parameter\nis specified, the client must call <code>setInput</code> before\nreading tokens.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nTokenScanner scanner;\nTokenScanner scanner(str);\nTokenScanner scanner(infile);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:setInput\"></a>\n<pre class=detailCode>\nvoid setInput(string str);\nvoid setInput(istream &amp; infile);\n</pre>\n<div class=detailHTML>\nSets the token stream for this scanner to the specified string or\ninput stream.  Any previous token stream is discarded.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nscanner.setInput(str);\nscanner.setInput(infile);\n</pre>\n<hr>\n<a name=\"Method:hasMoreTokens\"></a>\n<pre class=detailCode>\nbool hasMoreTokens();\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if there are additional tokens for this\nscanner to read.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (scanner.hasMoreTokens()) . . .\n</pre>\n<hr>\n<a name=\"Method:nextToken\"></a>\n<pre class=detailCode>\nstring nextToken();\n</pre>\n<div class=detailHTML>\nReturns the next token from this scanner.  If <code>nextToken</code>\nis called when no tokens are available, it returns the empty string.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ntoken = scanner.nextToken();\n</pre>\n<hr>\n<a name=\"Method:saveToken\"></a>\n<pre class=detailCode>\nvoid saveToken(string token);\n</pre>\n<div class=detailHTML>\nPushes the specified token back into this scanner's input stream.\nOn the next call to <code>nextToken</code>, the scanner will return\nthe saved token without reading any additional characters from the\ntoken stream.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nscanner.saveToken(token);\n</pre>\n<hr>\n<a name=\"Method:setIgnoreWhitespaceFlag\"></a>\n<pre class=detailCode>\nvoid setIgnoreWhitespaceFlag(bool flag);\n</pre>\n<div class=detailHTML>\nControls whether this scanner ignores whitespace characters.  By\ndefault, the <code>nextToken</code> method treats whitespace\ncharacters (typically spaces and tabs) just like any other\npunctuation mark and returns them as single-character tokens.\nCalling\n\n<pre>\n   scanner.setIgnoreWhitespaceFlag(true);\n</pre>\n\nchanges this behavior so that the scanner ignore whitespace characters.\nClients can restore the original behavior by calling\n\n<pre>\n   scanner.setIgnoreWhitespaceFlag(false);\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nscanner.setIgnoreWhitespaceFlag(flag);\n</pre>\n<hr>\n<a name=\"Method:setIgnoreCommentsFlag\"></a>\n<pre class=detailCode>\nvoid setIgnoreCommentsFlag(bool flag);\n</pre>\n<div class=detailHTML>\nControls whether this scanner ignores comments.  This scanner recognizes\nboth the slash-star and slash-slash comment format from the C-based\nfamily of languages.  Calling\n\n<pre>\n   scanner.setIgnoreCommentsFlag(true);\n</pre>\n\nsets the parser to ignore comments.  Clients can restore the\noriginal behavior by calling\n\n<pre>\n   scanner.setIgnoreCommentsFlag(false);\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nscanner.setIgnoreCommentsFlag(flag);\n</pre>\n<hr>\n<a name=\"Method:setScanNumbersFlag\"></a>\n<pre class=detailCode>\nvoid setScanNumbersFlag(bool flag);\n</pre>\n<div class=detailHTML>\nControls how the scanner treats tokens that begin with a digit.  By\ndefault, the <code>nextToken</code> method treats numbers and letters\nidentically and therefore does not provide any special processing for\nnumbers.  Calling\n\n<pre>\n   scanner.setScanNumbersFlag(true);\n</pre>\n\nchanges this behavior so that <code>nextToken</code> returns the\nlongest substring that can be interpreted as a real number.  Clients\ncan restore the default behavior by calling\n\n<pre>\n   scanner.setScanNumbersFlag(false);\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nscanner.setScanNumbersFlag(flag);\n</pre>\n<hr>\n<a name=\"Method:setScanStringsFlag\"></a>\n<pre class=detailCode>\nvoid setScanStringsFlag(bool flag);\n</pre>\n<div class=detailHTML>\nControls how the scanner treats tokens enclosed in quotation marks.  By\ndefault, quotation marks (either single or double) are treated just like\nany other punctuation character.  Calling\n\n<pre>\n   scanner.setScanStringsFlag(true);\n</pre>\n\nchanges this assumption so that <code>nextToken</code> returns a single\ntoken consisting of all characters through the matching quotation mark.\nThe quotation marks are returned as part of the scanned token so that\nclients can differentiate strings from other token types.  Clients\ncan restore the default behavior by calling\n\n<pre>\n   scanner.setScanStringsFlag(false);\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nscanner.setScanStringsFlag(flag);\n</pre>\n<hr>\n<a name=\"Method:addWordCharacters\"></a>\n<pre class=detailCode>\nvoid addWordCharacters(string str);\n</pre>\n<div class=detailHTML>\nAdds the characters in <code>str</code> to the set of characters legal\nin a word.  For example, calling <code>addWordCharacters(\"_\")</code>\nadds the underscore to the set of word characters.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nscanner.addWordCharacters(str);\n</pre>\n<hr>\n<a name=\"Method:defineOperator\"></a>\n<pre class=detailCode>\nvoid defineOperator(string op);\n</pre>\n<div class=detailHTML>\nDefines a new multicharacter operator.  Whenever you call\n<code>nextToken</code> when the input stream contains operator\ncharacters, the scanner returns the longest possible operator\nstring that can be read at that point.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nscanner.defineOperator(op);\n</pre>\n<hr>\n<a name=\"Method:getPosition\"></a>\n<pre class=detailCode>\nint getPosition();\n</pre>\n<div class=detailHTML>\nReturns the current position of the scanner in the input stream.\nIf <code>saveToken</code> has been called, this position corresponds\nto the beginning of the saved token.  If <code>saveToken</code> is\ncalled more than once, the position is unavailable.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint pos = scanner.getPosition();\n</pre>\n<hr>\n<a name=\"Method:isValidIdentifier\"></a>\n<pre class=detailCode>\nbool isValidIdentifier(string token);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the token is a valid identifier.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (scanner.isValidIdentifier(token)) . . .\n</pre>\n<hr>\n<a name=\"Method:isWordCharacter\"></a>\n<pre class=detailCode>\nbool isWordCharacter(char ch);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the character is valid in a word.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (scanner.isWordCharacter(ch)) . . .\n</pre>\n<hr>\n<a name=\"Method:verifyToken\"></a>\n<pre class=detailCode>\nvoid verifyToken(string expected);\n</pre>\n<div class=detailHTML>\nReads the next token and makes sure it matches the string\n<code>expected</code>.  If it does not, <code>verifyToken</code>\nthrows an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nscanner.verifyToken(expected);\n</pre>\n<hr>\n<a name=\"Method:getTokenType\"></a>\n<pre class=detailCode>\nTokenType getTokenType(string token);\n</pre>\n<div class=detailHTML>\nReturns the type of this token.  This type will match one of the\nfollowing enumerated type constants:\n\n   <code>EOF</code>,\n   <code>SEPARATOR</code>,\n   <code>WORD</code>,\n   <code>NUMBER</code>,\n   <code>STRING</code>, or\n   <code>OPERATOR</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nTokenType type = scanner.getTokenType(token);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/Vector-class.html",
    "content": "<html>\n<head>\n<title>class Vector&lt;ValueType&gt;</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"vector-h.html\">class Vector&lt;ValueType&gt;</a></h1>\nThis class stores an ordered list of values similar to an array.\nIt supports traditional array selection using square brackets, but\nalso supports inserting and deleting elements.\n<h2>Constructor</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Constructor:Vector\">Vector()</a><br><a href=\"#Constructor:Vector\">Vector(n,&nbsp;value)</a><br><a href=\"#Constructor:Vector\">Vector(initializers)</a>&nbsp;</td><td class=indexSynopsis width=100%>Initializes a new vector.</td></tr>\n</table>\n<h2>Methods</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Method:size\">size()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the number of elements in this vector.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:isEmpty\">isEmpty()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns <code>true</code> if this vector contains no elements.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:clear\">clear()</a>&nbsp;</td><td class=indexSynopsis width=100%>Removes all elements from this vector.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:getAt\">getAt(index)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the element at the specified index in this vector.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:setAt\">setAt(index,&nbsp;value)</a>&nbsp;</td><td class=indexSynopsis width=100%>Replaces the element at the specified index in this vector with a new value.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:insertAt\">insertAt(0,&nbsp;value)</a>&nbsp;</td><td class=indexSynopsis width=100%>Inserts the element into this vector before the specified index.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:removeAt\">removeAt(index)</a>&nbsp;</td><td class=indexSynopsis width=100%>Removes the element at the specified index from this vector.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:add\">add(value)</a>&nbsp;</td><td class=indexSynopsis width=100%>Adds a new value to the end of this vector.</td></tr>\n<tr><td class=indexKey><a href=\"#Method:mapAll\">mapAll(fn)</a><br><a href=\"#Method:mapAll\">mapAll(fn,&nbsp;data)</a>&nbsp;</td><td class=indexSynopsis width=100%>Calls the specified function on each element of the vector in ascending index order.</td></tr>\n</table>\n<h2>Operator</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Operator:[]\">operator[]</a>&nbsp;</td><td class=indexSynopsis width=100%>Overloads <code>[]</code> to select elements from this vector.</td></tr>\n</table>\n<h2>Macro</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Macro:foreach\">foreach(ValueType&nbsp;value&nbsp;in&nbsp;vec)</a>&nbsp;</td><td class=indexSynopsis width=100%>Iterates over the elements of the vector in ascending index order.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:Vector\"></a>\n<pre class=detailCode>\nVector();\nVector(int n, ValueType value = ValueType());\n</pre>\n<div class=detailHTML>\nInitializes a new vector.  The default constructor creates an\nempty vector.  The second form creates an array with <code>n</code>\nelements, each of which is initialized to <code>value</code>;\nif <code>value</code> is missing, the elements are initialized\nto the default value for the type.  The third form sets the\nelements of the vector from an initialized C++ array, as\nillustrated by the following example:\n\n<pre>\n   int initializers[] = { 'a', 'e', 'i', 'o', 'u' };\n   Vector<char> vowels(initializers);\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nVector&lt;ValueType&gt; vec;\nVector&lt;ValueType&gt; vec(n, value);\nVector&lt;ValueType&gt; vec(initializers);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:size\"></a>\n<pre class=detailCode>\nint size();\n</pre>\n<div class=detailHTML>\nReturns the number of elements in this vector.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint nElems = vec.size();\n</pre>\n<hr>\n<a name=\"Method:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty();\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if this vector contains no elements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (vec.isEmpty()) . . .\n</pre>\n<hr>\n<a name=\"Method:clear\"></a>\n<pre class=detailCode>\nvoid clear();\n</pre>\n<div class=detailHTML>\nRemoves all elements from this vector.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvec.clear();\n</pre>\n<hr>\n<a name=\"Method:getAt\"></a>\n<pre class=detailCode>\nValueType getAt(int index);\n</pre>\n<div class=detailHTML>\nReturns the element at the specified index in this vector.  This\nmethod signals an error if the index is not in the array range.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType val = vec.getAt(index);\n</pre>\n<hr>\n<a name=\"Method:setAt\"></a>\n<pre class=detailCode>\nvoid setAt(int index, ValueType value);\n</pre>\n<div class=detailHTML>\nReplaces the element at the specified index in this vector with\na new value.  The previous value at that index is overwritten.\nThis method signals an error if the index is not in the array range.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvec.setAt(index, value);\n</pre>\n<hr>\n<a name=\"Method:insertAt\"></a>\n<pre class=detailCode>\nvoid insertAt(int index, ValueType value);\n</pre>\n<div class=detailHTML>\nInserts the element into this vector before the specified index.\nAll subsequent elements are shifted one position to the right.  This\nmethod signals an error if the index is outside the range from 0\nup to and including the length of the vector.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvec.insertAt(0, value);\n</pre>\n<hr>\n<a name=\"Method:removeAt\"></a>\n<pre class=detailCode>\nvoid removeAt(int index);\n</pre>\n<div class=detailHTML>\nRemoves the element at the specified index from this vector.\nAll subsequent elements are shifted one position to the left.  This\nmethod signals an error if the index is outside the array range.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvec.removeAt(index);\n</pre>\n<hr>\n<a name=\"Method:add\"></a>\n<pre class=detailCode>\nvoid add(ValueType value);\nvoid push_back(ValueType value);\n</pre>\n<div class=detailHTML>\nAdds a new value to the end of this vector.  To ensure compatibility\nwith the <code>vector</code> class in the Standard Template Library,\nthis method is also called <code>push_back</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvec.add(value);\n</pre>\n<hr>\n<a name=\"Method:mapAll\"></a>\n<pre class=detailCode>\nvoid mapAll(void (*fn)(ValueType value));\n\ntemplate &lt;typename ClientDataType&gt;\nvoid mapAll(void (*fn)(ValueType value, ClientDataType &amp; data),\n            ClientDataType &amp; data);\n</pre>\n<div class=detailHTML>\nCalls the specified function on each element of the vector in\nascending index order.  The second form of the call allows the\nclient to pass a data value of any type to the callback function.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvec.mapAll(fn);\nvec.mapAll(fn, data);\n</pre>\n<hr>\n</table>\n<h2>Operator detail</h2>\n<hr>\n<a name=\"Operator:[]\"></a>\n<pre class=detailCode>\nValueType &amp; operator[](int index);\n</pre>\n<div class=detailHTML>\nOverloads <code>[]</code> to select elements from this vector.\nThis extension enables the use of traditional array notation to\nget or set individual elements.  This method signals an error if\nthe index is outside the array range.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvalue = vec[index];\nvec[index] = value;\n</pre>\n<hr>\n</table>\n<h2>Macro detail</h2>\n<hr>\n<a name=\"Macro:foreach\"></a>\n<pre class=detailCode>\nforeach (ValueType value in vec) . . .\n</pre>\n<div class=detailHTML>\nIterates over the elements of the vector in ascending index order.\n</div>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/cmpfn-h.html",
    "content": "<html>\n<head>\n<title>include/cmpfn.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: cmpfn.h\n * -------------\n * This interface exports a template function for comparing values of an\n * unspecified type.  Most clients will have no need to use this interface\n * explicitly.  Its primary purpose is to provide a default comparison\n * function that allows maps and sets to use the standard operators defined\n * for their base type.\n */\n</scan>\n#ifndef _cmpfn_h\n#define _cmpfn_h\n\n<a name=\"Function:operatorCmp\"><scan class=comment>/*\n * Function: operatorCmp\n * Usage: int sign = operatorCmp(v1, v2);\n * --------------------------------------\n * This template function is a generic function that compares two values\n * using the built-in == and &lt; operators.  It is supplied as a convenience\n * for those situations where a comparison function is required, and the\n * type has a built-in ordering that you would like to use.\n */\n</scan>\ntemplate &lt;typename Type&gt;\nint operatorCmp(Type v1, Type v2);\n\n#include \"private/cmpfnimpl.cpp\"\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/cmpfn.html",
    "content": "<html>\n<head>\n<title>cmpfn.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"cmpfn-h.html\">cmpfn.h</a></h1>\nThis interface exports a template function for comparing values of\nan unspecified type.  Most clients will have no need to use this\ninterface explicitly.  Its primary purpose is to provide a default\ncomparison function that allows maps and sets to use the standard\noperators defined for their base type.\n<h2>Function</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Function:operatorCmp\">operatorCmp(v1,&nbsp;v2)</a>&nbsp;</td><td class=indexSynopsis width=100%>This template function is a generic function that compares two values using the built-in <code>==</code> and <code>&lt;</code> operators.</td></tr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:operatorCmp\"></a>\n<pre class=detailCode>\ntemplate &lt;typename Type&gt;\nint operatorCmp(Type v1, Type v2);\n</pre>\n<div class=detailHTML>\nThis template function is a generic function that compares two\nvalues using the built-in <code>==</code> and <code>&lt;</code>\noperators.  It is supplied as a convenience for those situations\nwhere a comparison function is required, and the type has a\nbuilt-in ordering that you would like to use.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint sign = operatorCmp(v1, v2);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/console-h.html",
    "content": "<html>\n<head>\n<title>include/console.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: console.h\n * ---------------\n * This header file redirects the cin, cout, and cerr channels to use a\n * console window.  This file must be included in the source file that\n * contains the main method, although it may be included in other source\n * files as well.\n */\n</scan>\n#ifndef _console_h\n#define _console_h\n\n<a name=\"Function:setConsoleFont\"><scan class=comment>/*\n * Function: setConsoleFont\n * Usage: setConsoleFont(font);\n * ----------------------------\n * Changes the font used for the console.  The font parameter is typically\n * a string in the form family-style-size.  In this string, family is the\n * name of the font family; style is either missing (indicating a plain\n * font) or one of the strings Bold, Italic, or BoldItalic; and size is an\n * integer indicating the point size.  If any of these components is\n * specified as an asterisk, the existing value is retained.  The font\n * parameter can also be a sequence of such specifications separated by\n * semicolons, in which the first available font on the system is used.\n */\n</scan>\nvoid setConsoleFont(string font);\n\n<a name=\"Function:setConsoleSize\"><scan class=comment>/*\n * Function: setConsoleSize\n * Usage: setConsoleSize(width, height);\n * -------------------------------------\n * Changes the size of the console to the specified dimensions, measured in\n * pixels.\n */\n</scan>\nvoid setConsoleSize(double width, double height);\n\n#include \"private/main.h\"\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/console.html",
    "content": "<html>\n<head>\n<title>console.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"console-h.html\">console.h</a></h1>\nThis header file redirects the <code>cin</code>, <code>cout</code>,\nand <code>cerr</code> channels to use a console window.  This file\nmust be included in the source file that contains the <code>main</code>\nmethod, although it may be included in other source files as well.\n<h2>Functions</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Function:setConsoleFont\">setConsoleFont(font)</a>&nbsp;</td><td class=indexSynopsis width=100%>Changes the font used for the console.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:setConsoleSize\">setConsoleSize(width,&nbsp;height)</a>&nbsp;</td><td class=indexSynopsis width=100%>Changes the size of the console to the specified dimensions, measured in pixels.</td></tr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:setConsoleFont\"></a>\n<pre class=detailCode>\nvoid setConsoleFont(string font);\n</pre>\n<div class=detailHTML>\nChanges the font used for the console.  The <code>font</code>\nparameter is typically a string in the form\n<i>family</i><code>-</code><i>style</i><code>-</code><i>size</i>.\nIn this string, <i>family</i> is the name of the font family;\n<i>style</i> is either missing (indicating a plain font) or one\nof the strings <code>Bold</code>, <code>Italic</code>, or\n<code>BoldItalic</code>; and <code>size</code> is an integer\nindicating the point size.  If any of these components is\nspecified as an asterisk, the existing value is retained.\nThe <code>font</code> parameter can also be a sequence of\nsuch specifications separated by semicolons, in which the\nfirst available font on the system is used.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetConsoleFont(font);\n</pre>\n<hr>\n<a name=\"Function:setConsoleSize\"></a>\n<pre class=detailCode>\nvoid setConsoleSize(double width, double height);\n</pre>\n<div class=detailHTML>\nChanges the size of the console to the specified dimensions, measured\nin pixels.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetConsoleSize(width, height);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/cppdoc.css",
    "content": "body {\n   font-size:100%;\n}\n\nh1 {\n   font-family:\"Arial\", \"Helvetica\", \"sansserif\"; \n   font-size:1.5em;\n   font-weight:bold;\n}\n\nh2 {\n   font-family:\"Times New Roman\", \"Times\", \"serif\";\n   font-size:1.4em;\n   font-weight:bold;\n   margin-bottom:0px;\n}\n\n.header {\n   font-size:125%;\n}\n\npre, code, .code {\n   font-family:\"Courier New\", \"Courier\", \"monospace\";\n   font-weight:bold;\n   font-size:90%;\n}\n\n.comment {\n   color:blue;\n}\n\n.it {\n   font-family:\"Times New Roman\", \"Times\", \"serif\";\n   font-weight:normal;\n   font-style:italic;\n   font-size:90%;\n}\n   \n.banner {\n   border:0;\n}\n\n.sansserif {\n   font-family:\"Helvetica Neue\", \"Helvetica\", \"Arial\", \"sansserif\";\n}\n\n.bannerText {\n   font-family:\"Helvetica Neue\", \"Helvetica\", \"Arial\", \"sansserif\";\n   font-size:1.6em;\n   font-weight:bold;\n}\n\n.index {\n   border-collapse:collapse;\n   margin-top:1px;\n}\n\n.indexHead {\n   font-family:\"Times New Roman\", \"Times\", \"serif\";\n   font-size:1.4em;\n   font-weight:bold;\n   padding-top:1em;\n}\n\n.indexKey {\n   border:1px solid black; \n   padding:3px 5px;\n   font-family:\"Courier New\", \"Courier\", \"monospace\";\n   font-weight:bold;\n   font-size:90%;\n   vertical-align: top;\n}\n\n.indexSynopsis {\n   border:1px solid black; \n   padding:3px 5px;\n   vertical-align: top;\n}\n\n.include {\n   font-family:\"Courier New\", \"Courier\", \"monospace\";\n   font-weight:bold;\n   font-size:100%;\n}\n\n.detailCode {\n   padding:0px;\n   font-family:\"Courier New\", \"Courier\", \"monospace\";\n   font-weight:bold;\n   font-size:100%;\n}\n\n.detailHTML {\n   font-family:\"Times New Roman\", \"Times\", \"serif\";\n   font-size:1em;\n   margin-left:20px;\n}\n\n.inset {\n   margin-left:36px;\n}\n\n.usageCode {\n   font-family:\"Courier New\", \"Courier\", \"monospace\";\n   font-weight:bold;\n   font-size:90%;\n   margin-left:40px;\n}   \n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/direction-h.html",
    "content": "<html>\n<head>\n<title>include/direction.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: direction.h\n * -----------------\n * This interface exports an enumerated type called Direction whose\n * elements are the four compass points: NORTH, EAST, SOUTH, and WEST.\n */\n</scan>\n#ifndef _direction_h\n#define _direction_h\n\nusing namespace std;\n#include &lt;string&gt;\n#include \"foreach.h\"\n\n<a name=\"Type:Direction\"><scan class=comment>/*\n * Type: Direction\n * ---------------\n * This enumerated type is used to represent the four compass directions.\n */\n</scan>\nenum Direction { NORTH, EAST, SOUTH, WEST };\n\n<a name=\"Function:leftFrom\"><scan class=comment>/*\n * Function: leftFrom\n * Usage: Direction newdir = leftFrom(dir);\n * ----------------------------------------\n * Returns the direction that is to the left of the argument.\n */\n</scan>\nDirection leftFrom(Direction dir);\n\n<a name=\"Function:rightFrom\"><scan class=comment>/*\n * Function: rightFrom\n * Usage: Direction newdir = rightFrom(dir);\n * -----------------------------------------\n * Returns the direction that is to the right of the argument.\n */\n</scan>\nDirection rightFrom(Direction dir);\n\n<a name=\"Function:opposite\"><scan class=comment>/*\n * Function: opposite\n * Usage: Direction newdir = opposite(dir);\n * ----------------------------------------\n * Returns the direction that is opposite to the argument.\n */\n</scan>\nDirection opposite(Direction dir);\n\n<a name=\"Function:toString\"><scan class=comment>/*\n * Function: toString\n * Usage: string str = toString(dir);\n * ----------------------------------\n * Returns the name of the direction as a string.\n */\n</scan>\nstring toString(Direction dir);\n\n<a name=\"Constant:Directions\"><scan class=comment>/*\n * Constant: Directions\n * Usage: foreach (Direction dir in Directions) . . .\n * --------------------------------------------------\n * This constant makes it easy for clients to iterate over the four\n * direction constants.\n */\n</scan>\nstatic const EnumRange&lt;Direction&gt; Directions =\n   EnumRange&lt;Direction&gt;(NORTH, WEST);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/direction.html",
    "content": "<html>\n<head>\n<title>direction.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"direction-h.html\">direction.h</a></h1>\nThis interface exports an enumerated type called <code>Direction</code>\nwhose elements are the four compass points: <code>NORTH</code>,\n<code>EAST</code>, <code>SOUTH</code>, and <code>WEST</code>.\n<h2>Type</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Type:Direction\">Direction</a>&nbsp;</td><td class=indexSynopsis width=100%>This enumerated type is used to represent the four compass directions.</td></tr>\n</table>\n<h2>Functions</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Function:leftFrom\">leftFrom(dir)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the direction that is to the left of the argument.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:rightFrom\">rightFrom(dir)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the direction that is to the right of the argument.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:opposite\">opposite(dir)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the direction that is opposite to the argument.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:toString\">toString(dir)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the name of the direction as a string.</td></tr>\n</table>\n<h2>Type detail</h2>\n<hr>\n<a name=\"Type:Direction\"></a>\n<pre class=detailCode>\nenum Direction { NORTH, EAST, SOUTH, WEST };\n</pre>\n<div class=detailHTML>\nThis enumerated type is used to represent the four compass directions.\n</div>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:leftFrom\"></a>\n<pre class=detailCode>\nDirection leftFrom(Direction dir);\n</pre>\n<div class=detailHTML>\nReturns the direction that is to the left of the argument.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nDirection newdir = leftFrom(dir);\n</pre>\n<hr>\n<a name=\"Function:rightFrom\"></a>\n<pre class=detailCode>\nDirection rightFrom(Direction dir);\n</pre>\n<div class=detailHTML>\nReturns the direction that is to the right of the argument.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nDirection newdir = rightFrom(dir);\n</pre>\n<hr>\n<a name=\"Function:opposite\"></a>\n<pre class=detailCode>\nDirection opposite(Direction dir);\n</pre>\n<div class=detailHTML>\nReturns the direction that is opposite to the argument.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nDirection newdir = opposite(dir);\n</pre>\n<hr>\n<a name=\"Function:toString\"></a>\n<pre class=detailCode>\nstring toString(Direction dir);\n</pre>\n<div class=detailHTML>\nReturns the name of the direction as a string.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = toString(dir);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/error-h.html",
    "content": "<html>\n<head>\n<title>include/error.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: error.h\n * -------------\n * This file defines the ErrorException class and the error function.\n */\n</scan>\n#ifndef _error_h\n#define _error_h\n\nusing namespace std;\n#include &lt;string&gt;\n#include &lt;exception&gt;\n\n<a name=\"Class:ErrorException\"><scan class=comment>/*\n * Class: ErrorException\n * ---------------------\n * This exception is thrown by calls to the error function, which makes it\n * possible for clients to respond to error conditions.  Typical code for\n * catching errors looks like this:\n *\n *    try {\n *       . . . code in which an error might occur . . .\n *    } catch (ErrorException &amp; ex) {\n *       . . . code to handle the error condition . . .\n *    }\n *\n * If an ErrorException is thrown at any point in the range of the try\n * (including in functions called from that code), control will jump\n * immediately to the error handler.\n */\n</scan>\nclass ErrorException : public exception {\npublic:\n   ErrorException(string msg);\n   virtual ~ErrorException() throw ();\n   virtual string getMessage();\nprivate:\n   string msg;\n};\n\n<a name=\"Function:error\"><scan class=comment>/*\n * Function: error\n * Usage: error(msg);\n * ------------------\n * Signals an error condition in a program by throwing an ErrorException\n * with the specified message.\n */\n</scan>\nvoid error(string str);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/error.html",
    "content": "<html>\n<head>\n<title>error.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"error-h.html\">error.h</a></h1>\nThis file defines the <code>ErrorException</code> class and the\n<code>error</code> function.\n<h2>Class</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"ErrorException-class.html\">ErrorException</a>&nbsp;</td><td class=indexSynopsis width=100%>This exception is thrown by calls to the <code>error</code> function, which makes it possible for clients to respond to error conditions.</td></tr>\n</table>\n<h2>Function</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Function:error\">error(msg)</a>&nbsp;</td><td class=indexSynopsis width=100%>Signals an error condition in a program by throwing an <code>ErrorException</code> with the specified message.</td></tr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:error\"></a>\n<pre class=detailCode>\nvoid error(string str);\n</pre>\n<div class=detailHTML>\nSignals an error condition in a program by throwing an\n<code>ErrorException</code> with the specified message.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nerror(msg);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/filelib-h.html",
    "content": "<html>\n<head>\n<title>include/filelib.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: filelib.h\n * ---------------\n * This file exports a standardized set of tools for working with files. \n * The library offers at least some portability across the file systems\n * used in the three supported platforms: Mac OSX, Windows, and Linux. \n * Directory and search paths are allowed to contain separators in any of\n * the supported styles, which usually makes it possible to use the same\n * code on different platforms.\n */\n</scan>\n#ifndef _filelib_h\n#define _filelib_h\n\nusing namespace std;\n#include &lt;fstream&gt;\n#include &lt;string&gt;\n#include &lt;vector&gt;\n#include \"vector.h\"\n\n<a name=\"Function:openFile\"><scan class=comment>/*\n * Function: openFile\n * Usage: if (openFile(stream, filename)) . . .\n * --------------------------------------------\n * Opens the filestream stream using the specified filename.  This function\n * is similar to the open method of the stream classes, but uses a C++\n * string object instead of the older C-style string.  If the operation\n * succeeds, openFile returns true; if it fails, openFile sets the failure\n * flag in the stream and returns false.\n */\n</scan>\nbool openFile(ifstream &amp; stream, string filename);\nbool openFile(ofstream &amp; stream, string filename);\n\n<a name=\"Function:getFile\"><scan class=comment>/*\n * Function: getFile\n * Usage: string filename = getFile(stream, prompt);\n * -------------------------------------------------\n * Asks the user for the name of an input file.  The file is opened using\n * the reference parameter stream, and the function returns the name of the\n * file.  If the requested file cannot be, opened the user is given\n * additional chances to enter a valid file.  The optional prompt argument\n * provides an input prompt for the user.\n */\n</scan>\nstring getFile(ifstream &amp; stream, string prompt = \"\");\nstring getFile(ofstream &amp; stream, string prompt = \"\");\n\n<a name=\"Function:getRoot\"><scan class=comment>/*\n * Function: getRoot\n * Usage: string root = getRoot(filename);\n * ---------------------------------------\n * Returns the root of filename.  The root consists of everything in\n * filename up to the last dot and the subsequent extension.  If no dot\n * appears, getRoot returns the entire name.\n */\n</scan>\nstring getRoot(string filename);\n\n<a name=\"Function:getExtension\"><scan class=comment>/*\n * Function: getExtension\n * Usage: ext = getExtension(filename);\n * ------------------------------------\n * Returns the extension of filename.  The extension consists of the\n * separating dot and all subsequent characters.  If no dot exists in the\n * final component, extension returns the empty string.  These semantics\n * ensure that concatenating the root and the extension always returns the\n * original filename.\n */\n</scan>\nstring getExtension(string filename);\n\n<a name=\"Function:getHead\"><scan class=comment>/*\n * Function: getHead\n * Usage: head = getHead(filename);\n * --------------------------------\n * Returns all but the last component of a path name.  The components of\n * the path name can be separated by any of the directory path separators\n * (forward or reverse slashes).  The special cases are illustrated by the\n * following examples:\n *\n *    getHead(\"a/b\")  = \"a\"     getTail(\"a/b\")   = \"b\"\n *    getHead(\"a\")    = \"\"      getTail(\"a\")     = \"a\"\n *    getHead(\"/a\")   = \"/\"     getTail(\"/a\")    = \"a\"\n *    getHead(\"/\")    = \"/\"     getTail(\"/\")     = \"\"\n */\n</scan>\nstring getHead(string filename);\n\n<a name=\"Function:getTail\"><scan class=comment>/*\n * Function: getTail\n * Usage: tail = getTail(filename);\n * --------------------------------\n * Returns the last component of a path name.  The components of the path\n * name can be separated by any of the directory path separators (forward\n * or reverse slashes).  For details on the interpretation of special\n * cases, see the comments for the getHead function.\n */\n</scan>\nstring getTail(string filename);\n\n<a name=\"Function:defaultExtension\"><scan class=comment>/*\n * Function: defaultExtension\n * Usage: string newname = defaultExtension(filename, ext);\n * --------------------------------------------------------\n * Adds an extension to a file name if none already exists.  If the\n * extension argument begins with a leading *, any existing extension in\n * filename is replaced by ext.\n */\n</scan>\nstring defaultExtension(string filename, string ext);\n\n<a name=\"Function:openOnPath\"><scan class=comment>/*\n * Function: openOnPath\n * Usage: string pathname = openOnPath(stream, path, filename);\n * ------------------------------------------------------------\n * Opens a file using a search path.  If openOnPath is successful, it\n * returns the first path name on the search path for which stream.open\n * succeeds.  The path argument consists of a list of directories that are\n * prepended to the filename, unless filename begins with an absolute\n * directory marker, such as / or ~.  The directories in the search path\n * may be separated either by colons (Unix or Mac OS) or semicolons\n * (Windows).  If the file cannot be opened, the failure bit is set in the\n * stream parameter, and the openOnPath function returns the empty string.\n */\n</scan>\nstring openOnPath(ifstream &amp; stream, string path, string filename);\nstring openOnPath(ofstream &amp; stream, string path, string filename);\n\n<a name=\"Function:findOnPath\"><scan class=comment>/*\n * Function: findOnPath\n * Usage: string pathname = findOnPath(path, filename);\n * ----------------------------------------------------\n * Returns the canonical name of a file found using a search path.  The\n * findOnPath function is similar to openOnPath, except that it doesn't\n * actually return an open stream.  If no matching file is found,\n * findOnPath returns the empty string.\n */\n</scan>\nstring findOnPath(string path, string filename);\n\n<a name=\"Function:deleteFile\"><scan class=comment>/*\n * Function: deleteFile\n * Usage: deleteFile(filename);\n * ----------------------------\n * Deletes the specified file.  Errors are reported by calling error in the\n * implementation.\n */\n</scan>\nvoid deleteFile(string filename);\n\n<a name=\"Function:renameFile\"><scan class=comment>/*\n * Function: renameFile\n * Usage: renameFile(oldname, newname);\n * ------------------------------------\n * Renames a file.  Errors are reported by calling error in the\n * implementation.\n */\n</scan>\nvoid deleteFile(string filename);\n\n<a name=\"Function:fileExists\"><scan class=comment>/*\n * Function: fileExists\n * Usage: if (fileExists(filename)) . . .\n * --------------------------------------\n * Returns true if the specified file exists.\n */\n</scan>\nbool fileExists(string filename);\n\n<a name=\"Function:isFile\"><scan class=comment>/*\n * Function: isFile\n * Usage: if (isFile(filename)) . . .\n * ----------------------------------\n * Returns true if the specified file is a regular file.\n */\n</scan>\nbool isFile(string filename);\n\n<a name=\"Function:isSymbolicLink\"><scan class=comment>/*\n * Function: isSymbolicLink\n * Usage: if (isSymbolicLink(filename)) . . .\n * ------------------------------------------\n * Returns true if the specified file is a symbolic link.\n */\n</scan>\nbool isSymbolicLink(string filename);\n\n<a name=\"Function:isDirectory\"><scan class=comment>/*\n * Function: isDirectory\n * Usage: if (isDirectory(filename)) . . .\n * ---------------------------------------\n * Returns true if the specified file is a directory.\n */\n</scan>\nbool isDirectory(string filename);\n\n<a name=\"Function:setCurrentDirectory\"><scan class=comment>/*\n * Function: setCurrentDirectory\n * Usage: setCurrentDirectory(filename);\n * -------------------------------------\n * Changes the current directory to the specified path.\n */\n</scan>\nvoid setCurrentDirectory(string path);\n\n<a name=\"Function:getCurrentDirectory\"><scan class=comment>/*\n * Function: getCurrentDirectory\n * Usage: string filename = getCurrentDirectory();\n * -----------------------------------------------\n * Returns an absolute filename for the current directory.\n */\n</scan>\nstring getCurrentDirectory();\n\n<a name=\"Function:createDirectory\"><scan class=comment>/*\n * Function: createDirectory\n * Usage: createDirectory(filename);\n * ---------------------------------\n * Creates a new directory for the specified filename.  The createDirectory\n * function does not report an error if the directory already exists. \n * Unlike createDirectoryPath, createDirectory does not create missing\n * directories along the path.  If some component of filename does not\n * exist, this function signals an error.\n */\n</scan>\nvoid createDirectory(string filename);\n\n<a name=\"Function:createDirectoryPath\"><scan class=comment>/*\n * Function: createDirectoryPath\n * Usage: createDirectoryPath(filename);\n * -------------------------------------\n * Creates a new directory for the specified filename.   If intermediate\n * components of the filename do not exist, this function creates them as\n * needed.\n */\n</scan>\nvoid createDirectoryPath(string filename);\n\n<a name=\"Function:expandPathname\"><scan class=comment>/*\n * Function: expandPathname\n * Usage: string pathname = expandPathname(filename);\n * --------------------------------------------------\n * Expands a filename into a canonical name for the platform.\n */\n</scan>\nstring expandPathname(string filename);\n\n<a name=\"Function:listDirectory\"><scan class=comment>/*\n * Function: listDirectory\n * Usage: listDirectory(dir, list);\n * --------------------------------\n * Adds an alphabetized list of the files in the specified directory to the\n * string vector list.  This list excludes the names . and .. entries.\n */\n</scan>\nvoid listDirectory(string dir, Vector&lt;string&gt; &amp; list);\nvoid listDirectory(string dir, vector&lt;string&gt; &amp; list);\n\n<a name=\"Function:matchFilenamePattern\"><scan class=comment>/*\n * Function: matchFilenamePattern\n * Usage: if (matchFilenamePattern(filename, pattern)) . . .\n * ---------------------------------------------------------\n * Determines whether the filename matches the specified pattern.  The\n * pattern string is interpreted in much the same way that a Unix shell\n * expands filenames and supports the following wildcard options:\n *\n *    ?      Matches any single character\n *    *      Matches any sequence of characters\n *    [...]  Matches any of the specified characters\n *    [^...] Matches any character &lt;i&gt;except&lt;/i&gt; the specified ones\n *\n * The last two options allow a range of characters to be specified in the\n * form a-z.\n */\n</scan>\nbool matchFilenamePattern(string filename, string pattern);\n\n<a name=\"Function:getDirectoryPathSeparator\"><scan class=comment>/*\n * Function: getDirectoryPathSeparator\n * Usage: string sep = getDirectoryPathSeparator();\n * ------------------------------------------------\n * Returns the standard directory path separator used on this platform.\n */\n</scan>\nstring getDirectoryPathSeparator();\n\n<a name=\"Function:getSearchPathSeparator\"><scan class=comment>/*\n * Function: getSearchPathSeparator\n * Usage: string sep = getSearchPathSeparator();\n * ---------------------------------------------\n * Returns the standard search path separator used on this platform.\n */\n</scan>\nstring getSearchPathSeparator();\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/filelib.html",
    "content": "<html>\n<head>\n<title>filelib.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"filelib-h.html\">filelib.h</a></h1>\nThis file exports a standardized set of tools for working with\nfiles.  The library offers at least some portability across the\nfile systems used in the three supported platforms: Mac OSX,\nWindows, and Linux.  Directory and search paths are allowed to\ncontain separators in any of the supported styles, which usually\nmakes it possible to use the same code on different platforms.\n<h2>Functions</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Function:openFile\">openFile(stream,&nbsp;filename)</a>&nbsp;</td><td class=indexSynopsis width=100%>Opens the filestream <code>stream</code> using the specified filename.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:getFile\">getFile(stream,&nbsp;prompt)</a>&nbsp;</td><td class=indexSynopsis width=100%>Asks the user for the name of an input file.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:getRoot\">getRoot(filename)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the root of <code>filename</code>.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:getExtension\">getExtension(filename)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the extension of <code>filename</code>.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:getHead\">getHead(filename)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns all but the last component of a path name.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:getTail\">getTail(filename)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the last component of a path name.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:defaultExtension\">defaultExtension(filename,&nbsp;ext)</a>&nbsp;</td><td class=indexSynopsis width=100%>Adds an extension to a file name if none already exists.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:openOnPath\">openOnPath(stream,&nbsp;path,&nbsp;filename)</a>&nbsp;</td><td class=indexSynopsis width=100%>Opens a file using a search path.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:findOnPath\">findOnPath(path,&nbsp;filename)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the canonical name of a file found using a search path.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:deleteFile\">deleteFile(filename)</a>&nbsp;</td><td class=indexSynopsis width=100%>Deletes the specified file.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:renameFile\">renameFile(oldname,&nbsp;newname)</a>&nbsp;</td><td class=indexSynopsis width=100%>Renames a file.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:fileExists\">fileExists(filename)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns <code>true</code> if the specified file exists.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:isFile\">isFile(filename)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns <code>true</code> if the specified file is a regular file.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:isSymbolicLink\">isSymbolicLink(filename)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns <code>true</code> if the specified file is a symbolic link.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:isDirectory\">isDirectory(filename)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns <code>true</code> if the specified file is a directory.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:setCurrentDirectory\">setCurrentDirectory(filename)</a>&nbsp;</td><td class=indexSynopsis width=100%>Changes the current directory to the specified path.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:getCurrentDirectory\">getCurrentDirectory()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns an absolute filename for the current directory.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:createDirectory\">createDirectory(filename)</a>&nbsp;</td><td class=indexSynopsis width=100%>Creates a new directory for the specified filename.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:createDirectoryPath\">createDirectoryPath(filename)</a>&nbsp;</td><td class=indexSynopsis width=100%>Creates a new directory for the specified filename.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:expandPathname\">expandPathname(filename)</a>&nbsp;</td><td class=indexSynopsis width=100%>Expands a filename into a canonical name for the platform.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:listDirectory\">listDirectory(dir,&nbsp;list)</a>&nbsp;</td><td class=indexSynopsis width=100%>Adds an alphabetized list of the files in the specified directory to the string vector <code>list</code>.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:matchFilenamePattern\">matchFilenamePattern(filename,&nbsp;pattern)</a>&nbsp;</td><td class=indexSynopsis width=100%>Determines whether the filename matches the specified pattern.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:getDirectoryPathSeparator\">getDirectoryPathSeparator()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the standard directory path separator used on this platform.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:getSearchPathSeparator\">getSearchPathSeparator()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the standard search path separator used on this platform.</td></tr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:openFile\"></a>\n<pre class=detailCode>\nbool openFile(ifstream &amp; stream, string filename);\nbool openFile(ofstream &amp; stream, string filename);\n</pre>\n<div class=detailHTML>\nOpens the filestream <code>stream</code> using the specified\nfilename.  This function is similar to the <code>open</code>\nmethod of the stream classes, but uses a C++ <code>string</code>\nobject instead of the older C-style string.  If the operation\nsucceeds, <code>openFile</code> returns <code>true</code>;\nif it fails, <code>openFile</code> sets the failure flag in the\nstream and returns <code>false</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (openFile(stream, filename)) . . .\n</pre>\n<hr>\n<a name=\"Function:getFile\"></a>\n<pre class=detailCode>\nstring getFile(ifstream &amp; stream, string prompt = \"\");\nstring getFile(ofstream &amp; stream, string prompt = \"\");\n</pre>\n<div class=detailHTML>\nAsks the user for the name of an input file.  The file is opened\nusing the reference parameter <code>stream</code>, and the function\nreturns the name of the file.  If the requested file cannot be,\nopened the user is given additional chances to enter a valid file.\nThe optional <code>prompt</code> argument provides an input prompt\nfor the user.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring filename = getFile(stream, prompt);\n</pre>\n<hr>\n<a name=\"Function:getRoot\"></a>\n<pre class=detailCode>\nstring getRoot(string filename);\n</pre>\n<div class=detailHTML>\nReturns the root of <code>filename</code>.  The root consists\nof everything in <code>filename</code> up to the last dot and\nthe subsequent extension.  If no dot appears, <code>getRoot</code>\nreturns the entire name.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring root = getRoot(filename);\n</pre>\n<hr>\n<a name=\"Function:getExtension\"></a>\n<pre class=detailCode>\nstring getExtension(string filename);\n</pre>\n<div class=detailHTML>\nReturns the extension of <code>filename</code>.  The extension\nconsists of the separating dot and all subsequent characters.\nIf no dot exists in the final component, <code>extension</code>\nreturns the empty string.  These semantics ensure that concatenating\nthe root and the extension always returns the original filename.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\next = getExtension(filename);\n</pre>\n<hr>\n<a name=\"Function:getHead\"></a>\n<pre class=detailCode>\nstring getHead(string filename);\n</pre>\n<div class=detailHTML>\nReturns all but the last component of a path name.  The components\nof the path name can be separated by any of the directory path\nseparators (forward or reverse slashes).  The special cases are\nillustrated by the following examples:\n\n<pre>\n   getHead(\"a/b\")  = \"a\"     getTail(\"a/b\")   = \"b\"\n   getHead(\"a\")    = \"\"      getTail(\"a\")     = \"a\"\n   getHead(\"/a\")   = \"/\"     getTail(\"/a\")    = \"a\"\n   getHead(\"/\")    = \"/\"     getTail(\"/\")     = \"\"\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nhead = getHead(filename);\n</pre>\n<hr>\n<a name=\"Function:getTail\"></a>\n<pre class=detailCode>\nstring getTail(string filename);\n</pre>\n<div class=detailHTML>\nReturns the last component of a path name.  The components of the\npath name can be separated by any of the directory path separators\n(forward or reverse slashes).  For details on the interpretation of\nspecial cases, see the comments for the <code>getHead</code> function.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ntail = getTail(filename);\n</pre>\n<hr>\n<a name=\"Function:defaultExtension\"></a>\n<pre class=detailCode>\nstring defaultExtension(string filename, string ext);\n</pre>\n<div class=detailHTML>\nAdds an extension to a file name if none already exists.  If the\n<code>extension</code> argument begins with a leading <code>*</code>,\nany existing extension in <code>filename</code> is replaced by\n<code>ext</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring newname = defaultExtension(filename, ext);\n</pre>\n<hr>\n<a name=\"Function:openOnPath\"></a>\n<pre class=detailCode>\nstring openOnPath(ifstream &amp; stream, string path, string filename);\nstring openOnPath(ofstream &amp; stream, string path, string filename);\n</pre>\n<div class=detailHTML>\nOpens a file using a search path.  If <code>openOnPath</code>\nis successful, it returns the first path name on the search path\nfor which <code>stream.open</code> succeeds.  The <code>path</code>\nargument consists of a list of directories that are prepended to the\nfilename, unless <code>filename</code> begins with an absolute\ndirectory marker, such as <code>/</code> or <code>~</code>.\nThe directories in the search path may be separated either\nby colons (Unix or Mac OS) or semicolons (Windows).  If the file\ncannot be opened, the failure bit is set in the <code>stream</code>\nparameter, and the <code>openOnPath</code> function returns the\nempty string.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring pathname = openOnPath(stream, path, filename);\n</pre>\n<hr>\n<a name=\"Function:findOnPath\"></a>\n<pre class=detailCode>\nstring findOnPath(string path, string filename);\n</pre>\n<div class=detailHTML>\nReturns the canonical name of a file found using a search path.\nThe <code>findOnPath</code> function is similar to\n<code>openOnPath</code>, except that it doesn't actually\nreturn an open stream.  If no matching file is found,\n<code>findOnPath</code> returns the empty string.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring pathname = findOnPath(path, filename);\n</pre>\n<hr>\n<a name=\"Function:deleteFile\"></a>\n<pre class=detailCode>\nvoid deleteFile(string filename);\n</pre>\n<div class=detailHTML>\nDeletes the specified file.  Errors are reported by calling\n<code>error</code> in the implementation.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndeleteFile(filename);\n</pre>\n<hr>\n<a name=\"Function:renameFile\"></a>\n<pre class=detailCode>\nvoid deleteFile(string filename);\n</pre>\n<div class=detailHTML>\nRenames a file.  Errors are reported by calling\n<code>error</code> in the implementation.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nrenameFile(oldname, newname);\n</pre>\n<hr>\n<a name=\"Function:fileExists\"></a>\n<pre class=detailCode>\nbool fileExists(string filename);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the specified file exists.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (fileExists(filename)) . . .\n</pre>\n<hr>\n<a name=\"Function:isFile\"></a>\n<pre class=detailCode>\nbool isFile(string filename);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the specified file is a regular file.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (isFile(filename)) . . .\n</pre>\n<hr>\n<a name=\"Function:isSymbolicLink\"></a>\n<pre class=detailCode>\nbool isSymbolicLink(string filename);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the specified file is a symbolic link.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (isSymbolicLink(filename)) . . .\n</pre>\n<hr>\n<a name=\"Function:isDirectory\"></a>\n<pre class=detailCode>\nbool isDirectory(string filename);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the specified file is a directory.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (isDirectory(filename)) . . .\n</pre>\n<hr>\n<a name=\"Function:setCurrentDirectory\"></a>\n<pre class=detailCode>\nvoid setCurrentDirectory(string path);\n</pre>\n<div class=detailHTML>\nChanges the current directory to the specified path.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetCurrentDirectory(filename);\n</pre>\n<hr>\n<a name=\"Function:getCurrentDirectory\"></a>\n<pre class=detailCode>\nstring getCurrentDirectory();\n</pre>\n<div class=detailHTML>\nReturns an absolute filename for the current directory.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring filename = getCurrentDirectory();\n</pre>\n<hr>\n<a name=\"Function:createDirectory\"></a>\n<pre class=detailCode>\nvoid createDirectory(string filename);\n</pre>\n<div class=detailHTML>\nCreates a new directory for the specified filename.  The\n<code>createDirectory</code> function does not report an error if\nthe directory already exists.  Unlike <code>createDirectoryPath</code>,\n<code>createDirectory</code> does not create missing directories\nalong the path.  If some component of <code>filename</code> does\nnot exist, this function signals an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncreateDirectory(filename);\n</pre>\n<hr>\n<a name=\"Function:createDirectoryPath\"></a>\n<pre class=detailCode>\nvoid createDirectoryPath(string filename);\n</pre>\n<div class=detailHTML>\nCreates a new directory for the specified filename.   If intermediate\ncomponents of the filename do not exist, this function creates them\nas needed.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncreateDirectoryPath(filename);\n</pre>\n<hr>\n<a name=\"Function:expandPathname\"></a>\n<pre class=detailCode>\nstring expandPathname(string filename);\n</pre>\n<div class=detailHTML>\nExpands a filename into a canonical name for the platform.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring pathname = expandPathname(filename);\n</pre>\n<hr>\n<a name=\"Function:listDirectory\"></a>\n<pre class=detailCode>\nvoid listDirectory(string dir, Vector&lt;string&gt; &amp; list);\nvoid listDirectory(string dir, vector&lt;string&gt; &amp; list);\n</pre>\n<div class=detailHTML>\nAdds an alphabetized list of the files in the specified directory\nto the string vector <code>list</code>.  This list excludes the\nnames <code>.</code> and <code>..</code> entries.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlistDirectory(dir, list);\n</pre>\n<hr>\n<a name=\"Function:matchFilenamePattern\"></a>\n<pre class=detailCode>\nbool matchFilenamePattern(string filename, string pattern);\n</pre>\n<div class=detailHTML>\nDetermines whether the filename matches the specified pattern.  The\npattern string is interpreted in much the same way that a Unix shell\nexpands filenames and supports the following wildcard options:\n\n<pre>\n   ?      Matches any single character\n   *      Matches any sequence of characters\n   [...]  Matches any of the specified characters\n   [^...] Matches any character <i>except</i> the specified ones\n</pre>\n\nThe last two options allow a range of characters to be specified in the\nform <code>a-z</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (matchFilenamePattern(filename, pattern)) . . .\n</pre>\n<hr>\n<a name=\"Function:getDirectoryPathSeparator\"></a>\n<pre class=detailCode>\nstring getDirectoryPathSeparator();\n</pre>\n<div class=detailHTML>\nReturns the standard directory path separator used on this platform.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring sep = getDirectoryPathSeparator();\n</pre>\n<hr>\n<a name=\"Function:getSearchPathSeparator\"></a>\n<pre class=detailCode>\nstring getSearchPathSeparator();\n</pre>\n<div class=detailHTML>\nReturns the standard search path separator used on this platform.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring sep = getSearchPathSeparator();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/foreach-h.html",
    "content": "<html>\n<head>\n<title>include/foreach.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: foreach.h\n * ---------------\n * This interface defines the foreach keyword, which is used to simplify\n * iteration.  All iterable classes import this interface, so clients never\n * need to do so explicitly.  This version of the interface also supports\n * C++ strings and arrays.\n */\n</scan>\n#ifndef _foreach_h\n#define _foreach_h\n\n<a name=\"Statement:foreach\"><scan class=comment>/*\n * Statement: foreach\n * Usage: foreach (type var in collection) { . . . }\n * -------------------------------------------------\n * The foreach statement steps through the elements in a collection.  It\n * works correctly with the collection classes in both the Standard\n * Template Library and the Stanford C++ libraries, but can also be used\n * with C++ strings and statically initialized arrays.\n *\n * The following code, for example, prints every element in the string\n * vector lines:\n *\n *    foreach (string str in lines) {\n *       cout &lt;&lt; str &lt;&lt; endl;\n *    }\n *\n * Similarly, the following function calculates the sum of the character\n * codes in a string:\n *\n *    int sumCharacterCodes(string str) {\n *       int sum = 0;\n *       foreach (char ch in str) sum += ch;\n *       return sum;\n *    }\n *\n * As a simplification when iterating over maps, the foreach macro iterates\n * through the keys rather than the key/value pairs.\n */\n</scan>\n   <scan class=comment>/* The foreach and in macros are defined in the foreachpriv.h file */</scan>\n\n<a name=\"Class:EnumRange<BaseType>\"><scan class=comment>/*\n * Class: EnumRange&lt;BaseType&gt;\n * --------------------------\n * This class is used to support iteration over enumeration types.  Calling\n * the EnumRange constructor with the first and last elements produces an\n * iterable collection of those items, as illustrated by the following\n * example:\n *\n *    enum Direction { NORTH, SOUTH, EAST, WEST };\n *\n *    foreach (Direction dir in EnumRange&lt;Direction&gt;(NORTH, WEST)) . . .\n *\n * By convention, enumerated types exported by the libraries (such as\n * Direction) export an enumerated range as a constant whose name is the\n * type followed by an \"s\".  This convention makes it possible to write\n * this loop header as follows:\n *\n *    foreach (Direction dir in Directions) . . .\n */\n</scan>\ntemplate &lt;typename BaseType&gt;\nclass EnumRange;\n\n#include \"private/foreachpriv.h\"\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/foreach.html",
    "content": "<html>\n<head>\n<title>foreach.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"foreach-h.html\">foreach.h</a></h1>\nThis interface defines the <code>foreach</code> keyword, which is\nused to simplify iteration.  All iterable classes import this\ninterface, so clients never need to do so explicitly.  This version\nof the interface also supports C++ strings and arrays.\n<h2>Class</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"EnumRange-class.html\">EnumRange&lt;BaseType&gt;</a>&nbsp;</td><td class=indexSynopsis width=100%>This class is used to support iteration over enumeration types.</td></tr>\n</table>\n<h2>Statement</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Statement:foreach\">foreach(type&nbsp;var&nbsp;in&nbsp;collection)</a>&nbsp;</td><td class=indexSynopsis width=100%>The <code>foreach</code> statement steps through the elements in a collection.</td></tr>\n</table>\n<h2>Statement detail</h2>\n<hr>\n<a name=\"Statement:foreach\"></a>\n<pre class=detailCode>\nforeach (type var in collection) { . . . }\n</pre>\n<div class=detailHTML>\nThe <code>foreach</code> statement steps through the elements in\na collection.  It works correctly with the collection classes in\nboth the Standard Template Library and the Stanford C++ libraries,\nbut can also be used with C++ strings and statically initialized\narrays.\n\n<p>The following code, for example, prints every element in the\nstring vector <code>lines</code>:\n\n<pre>\n   foreach (string str in lines) {\n      cout << str << endl;\n   }\n</pre>\n\nSimilarly, the following function calculates the sum of the character\ncodes in a string:\n\n<pre>\n   int sumCharacterCodes(string str) {\n      int sum = 0;\n      foreach (char ch in str) sum += ch;\n      return sum;\n   }\n</pre>\n\nAs a simplification when iterating over maps, the <code>foreach</code>\nmacro iterates through the keys rather than the key/value pairs.\n</div>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/gevents-h.html",
    "content": "<html>\n<head>\n<title>include/gevents.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: gevents.h\n * ---------------\n * This interface defines the event types used in the StanfordCPPLib\n * graphics libraries.  The structure of this package is adapted from the\n * Java event model.\n */\n</scan>\n#ifndef _gevents_h\n#define _gevents_h\n\n#include \"gwindow.h\"\n\n<a name=\"Type:EventClassType\"><scan class=comment>/*\n * Type: EventClassType\n * --------------------\n * This enumeration type defines the event classes.\n */\n</scan>\nenum EventClassType {\n   NULL_EVENT,         <scan class=comment>/* Indicates an uninitialized event              */</scan>\n   WINDOW_EVENT,       <scan class=comment>/* Indicates a window-system event               */</scan>\n   ACTION_EVENT,       <scan class=comment>/* Indicates an event with an associated action  */</scan>\n   TIMER_EVENT,        <scan class=comment>/* Indicates an interval timer event             */</scan>\n   MOUSE_EVENT,        <scan class=comment>/* Indicates a mouse event                       */</scan>\n   KEY_EVENT           <scan class=comment>/* Indicates an event generated by the keyboard  */</scan>\n};\n\n<a name=\"Type:WindowEventType\"><scan class=comment>/*\n * Type: WindowEventType\n * ---------------------\n * This enumeration type defines the event types for window events.\n */\n</scan>\nenum WindowEventType {\n   WINDOW_ACTIVATED,   <scan class=comment>/* Generated when the window gains focus         */</scan>\n   WINDOW_CLOSED,      <scan class=comment>/* Generated when the window is finally closed   */</scan>\n   WINDOW_CLOSING,     <scan class=comment>/* Generated when the user clicks the close box  */</scan>\n   WINDOW_DEACTIVATED, <scan class=comment>/* Generated when the window loses focus         */</scan>\n   WINDOW_DEICONIFIED, <scan class=comment>/* Generated when the window is expanded         */</scan>\n   WINDOW_ICONIFIED,   <scan class=comment>/* Generated when the window is minimized        */</scan>\n   WINDOW_OPENED       <scan class=comment>/* Generated when the window is opened           */</scan>\n};\n\n<a name=\"Type:ActionEventType\"><scan class=comment>/*\n * Type: ActionEventType\n * ---------------------\n * This enumeration type defines the event types for action events.\n */\n</scan>\nenum ActionEventType {\n   ACTION_PERFORMED    <scan class=comment>/* Generated when a user action is performed     */</scan>\n};\n\n<a name=\"Type:TimerEventType\"><scan class=comment>/*\n * Type: TimerEventType\n * --------------------\n * This enumeration type defines the event types for timer events.\n */\n</scan>\nenum TimerEventType {\n   TIMER_TICKED        <scan class=comment>/* Generated when the interval timer ticks       */</scan>\n};\n\n<a name=\"Type:MouseEventType\"><scan class=comment>/*\n * Type: MouseEventType\n * --------------------\n * This enumeration type defines the event types for mouse events.\n */\n</scan>\nenum MouseEventType {\n   MOUSE_PRESSED,      <scan class=comment>/* Generated when the mouse button is pressed     */</scan>\n   MOUSE_RELEASED,     <scan class=comment>/* Generated when the mouse button is released    */</scan>\n   MOUSE_CLICKED,      <scan class=comment>/* Generated on clicks after PRESSED and RELEASED */</scan>\n   MOUSE_MOVED,        <scan class=comment>/* Generated when the mouse is moved              */</scan>\n   MOUSE_DRAGGED       <scan class=comment>/* Generated on mouse motion with the button down */</scan>\n};\n\n<a name=\"Type:KeyEventType\"><scan class=comment>/*\n * Type: KeyEventType\n * ------------------\n * This enumeration type defines the event types for keyboard events.\n */\n</scan>\nenum KeyEventType {\n   KEY_PRESSED,        <scan class=comment>/* Generated when a key is pressed                */</scan>\n   KEY_RELEASED,       <scan class=comment>/* Generated when a key is released               */</scan>\n   KEY_TYPED           <scan class=comment>/* Generated after PRESSED and RELEASED on a key  */</scan>\n};\n\n<a name=\"Type:ModifierCodes\"><scan class=comment>/*\n * Type: ModifierCodes\n * -------------------\n * This enumeration type defines a set of constants used to check whether\n * modifiers are in effect.\n */\n</scan>\nenum ModifierCodes {\n   SHIFT_DOWN     = 1 &lt;&lt; 0,\n   CTRL_DOWN      = 1 &lt;&lt; 1,\n   META_DOWN      = 1 &lt;&lt; 2,\n   ALT_DOWN       = 1 &lt;&lt; 3,\n   ALT_GRAPH_DOWN = 1 &lt;&lt; 4,\n   BUTTON1_DOWN   = 1 &lt;&lt; 5,\n   BUTTON2_DOWN   = 1 &lt;&lt; 6,\n   BUTTON3_DOWN   = 1 &lt;&lt; 7\n};\n\n<a name=\"Type:KeyCodes\"><scan class=comment>/*\n * Type: KeyCodes\n * --------------\n * This enumeration type defines the constants for the special keys on the\n * keyboard.  These values begin after the char range.\n */\n</scan>\nenum KeyCodes {\n   ESCAPE_KEY = 256,\n   DELETE_KEY,\n   TAB_KEY,\n   RETURN_KEY,\n   CLEAR_KEY,\n   ENTER_KEY,\n   UP_ARROW_KEY,\n   DOWN_ARROW_KEY,\n   LEFT_ARROW_KEY,\n   RIGHT_ARROW_KEY,\n   HELP_KEY,\n   HOME_KEY,\n   PAGE_UP_KEY,\n   PAGE_DOWN_KEY,\n   FORWARD_DEL_KEY,\n   END_KEY,\n   F1_KEY,\n   F2_KEY,\n   F3_KEY,\n   F4_KEY,\n   F5_KEY,\n   F6_KEY,\n   F7_KEY,\n   F8_KEY,\n   F9_KEY,\n   F10_KEY,\n   F11_KEY,\n   F12_KEY,\n   F13_KEY,\n   F14_KEY,\n   F15_KEY,\n};\n\n<scan class=comment>/* Forward definitions */</scan>\n\nclass GWindowEvent;\nclass GActionEvent;\nclass GTimerEvent;\nclass GMouseEvent;\nclass GKeyEvent;\n\n<a name=\"Class:GEvent\"><scan class=comment>/*\n * Class: GEvent\n * -------------\n * This class is the root of the hierarchy for all events.  The primary\n * purpose of this general class is as the parameter to the waitForEvent\n * and getNextEvent functions.  Code that uses these functions to wait for\n * events of more than one class must typically cast the event to the\n * appropriate subclass, as illustrated in the sample code that accompanies\n * the prototypes for those functions.\n */\n</scan>\nclass GEvent {\n\npublic:\n\n<a name=\"Constructor:GEvent\"><scan class=comment>/*\n * Constructor: GEvent\n * Usage: GEvent event;\n * --------------------\n * Ensures that an event is properly initialized to a NULL event.\n */\n</scan>\n   GEvent();\n\n<a name=\"Method:getEventClass\"><scan class=comment>/*\n * Method: getEventClass\n * Usage: EventClassType eventClass = e.getEventClass();\n * -----------------------------------------------------\n * Returns the enumerated type constant indicating the class of the event.\n */\n</scan>\n   EventClassType getEventClass();\n\n<a name=\"Method:getEventTime\"><scan class=comment>/*\n * Method: getEventTime\n * Usage: double time = e.getEventTime();\n * --------------------------------------\n * Returns the system time in milliseconds at which the event occurred.  To\n * ensure portability among systems that represent time in different ways,\n * the StanfordCPPLib packages use type double to represent time, which is\n * always encoded as the number of milliseconds that have elapsed since\n * 00:00:00 UTC on January 1, 1970, which is the conventional zero point\n * for computer-based time systems.\n */\n</scan>\n   double getEventTime();\n\n<a name=\"Method:getModifiers\"><scan class=comment>/*\n * Method: getModifiers\n * Usage: int modifiers = e.getModifiers();\n * ----------------------------------------\n * Returns an integer whose bits indicate what modifiers are in effect.  To\n * check whether the shift key is down, for example, one could use the\n * following code:\n *\n *    if (e.getModifiers() &amp; SHIFT_DOWN) . . .\n */\n</scan>\n   int getModifiers();\n\n<a name=\"Method:toString\"><scan class=comment>/*\n * Method: toString\n * Usage: string str = e.toString();\n * ---------------------------------\n * Converts the event to a human-readable representation of the event.\n */\n</scan>\n   virtual string toString();\n\n<a name=\"Operator:bool\"><scan class=comment>/*\n * Operator: bool\n * Usage: if (e) . . .\n * -------------------\n * Converts the event to a Boolean value which is true if the event is\n * valid.\n */\n</scan>\n   operator bool();\n\n#include \"private/geventpriv.h\"\n\n};\n\n<a name=\"Function:startIntervalTimer\"><scan class=comment>/*\n * Function: startIntervalTimer\n * Usage: startIntervalTimer(delay);\n *        startIntervalTimer(delay, count);\n * ----------------------------------------\n * Starts an interval timer that fires a timer event repeatedly every delay\n * milliseconds.  The count parameter, if specified, indicates the maximum\n * number of events to fire; if this parameter is missing, the timer\n * continues to fire until it is stopped.\n */\n</scan>\nvoid startIntervalTimer(double delay);\nvoid startIntervalTimer(double delay, int count);\n\n<a name=\"Function:stopIntervalTimer\"><scan class=comment>/*\n * Function: stopIntervalTimer\n * Usage: stopIntervalTimer();\n * ---------------------------\n * Stops the interval timer.\n */\n</scan>\nvoid stopIntervalTimer();\n\n<a name=\"Function:postEvent\"><scan class=comment>/*\n * Function: postEvent\n * Usage: postEvent(e);\n * --------------------\n * Adds the event to the end of the event queue.\n */\n</scan>\nvoid postEvent(GEvent e);\n\n<a name=\"Function:waitForEvent\"><scan class=comment>/*\n * Function: waitForEvent\n * Usage: waitForEvent(e);\n * -----------------------\n * Dismisses the process until an event occurs.  When it does, the\n * waitForEvent function returns with the details of the event.  The\n * parameter e can be either a general GEvent variable or one of the\n * specific subclasses.  In the former case, the function returns when any\n * event occurs.  Clients should use this approach if they need to respond\n * to more than one class of event.  As an example, the following code is\n * the canonical event loop for an animated application that needs to\n * respond to mouse, key, and timer events:\n *\n *    startIntervalTimer(ANIMATION_DELAY_IN_MILLISECONDS);\n *    while (true) {\n *       GEvent e;\n *       waitForEvent(e);\n *       switch (e.getEventClass()) {\n *        case TIMER_EVENT:\n *          takeAnimationStep();\n *          break;\n *        case MOUSE_EVENT:\n *          handleMouseEvent(GMouseEvent(e));\n *          break;\n *        case KEY_EVENT:\n *          handleKeyEvent(GKeyEvent(e));\n *          break;\n *       }\n *    }\n *\n * For applications that are interested only in mouse events, for example,\n * this code can be simplified as follows:\n *\n *    while (true) {\n *       GMouseEvent e;\n *       waitForEvent(e);\n *       handleMouseEvent(e);\n *    }\n */\n</scan>\nvoid waitForEvent(GEvent &amp; e);\nvoid waitForEvent(GWindowEvent &amp; e);\nvoid waitForEvent(GActionEvent &amp; e);\nvoid waitForEvent(GTimerEvent &amp; e);\nvoid waitForEvent(GMouseEvent &amp; e);\nvoid waitForEvent(GKeyEvent &amp; e);\n\n<a name=\"Function:waitForClick\"><scan class=comment>/*\n * Function: waitForClick\n * Usage: waitForClick();\n *        waitForClick(mouseEvent);\n * --------------------------------\n * Waits for a mouse click to occur anywhere in the window, discarding any\n * other events.  If the client passes a GMouseEvent as a reference\n * parameter, the function will fill in the details of the click event.\n */\n</scan>\nvoid waitForClick();\nvoid waitForClick(GMouseEvent &amp; mouseEvent);\n\n<a name=\"Function:getNextEvent\"><scan class=comment>/*\n * Function: getNextEvent\n * Usage: if (getNextEvent(e)) . . .\n * ---------------------------------\n * Checks to see if there are any events waiting on the event queue.  If\n * so, getNextEvent fills in the structure of the event with the first\n * event in the queue and returns true.  If there are no events,\n * getNextEvent returns false.  As with waitForEvent, the parameter e can\n * be either a GEvent variable or one of the specific subclasses.  Clients\n * should use this form of the call if they need to support animation in\n * the main thread, as in the following code example:\n *\n *    while (true) {\n *       GEvent e;\n *       if (getNextEvent(e)) {\n *          switch (e.getEventClass()) {\n *           case MOUSE_EVENT:\n *             handleMouseEvent(GMouseEvent(e));\n *             break;\n *           case KEY_EVENT:\n *             handleKeyEvent(GKeyEvent(e));\n *             break;\n *          }\n *       } else {\n *          takeAnimationStep();\n *       }\n *    }\n */\n</scan>\nbool getNextEvent(GEvent &amp; e);\nbool getNextEvent(GWindowEvent &amp; e);\nbool getNextEvent(GActionEvent &amp; e);\nbool getNextEvent(GTimerEvent &amp; e);\nbool getNextEvent(GMouseEvent &amp; e);\nbool getNextEvent(GKeyEvent &amp; e);\n\n<a name=\"Class:GWindowEvent\"><scan class=comment>/*\n * Class: GWindowEvent\n * -------------------\n * This event subclass represents a window event.\n */\n</scan>\nclass GWindowEvent : public GEvent {\n\npublic:\n\n<a name=\"Constructor:GWindowEvent\"><scan class=comment>/*\n * Constructor: GWindowEvent\n * Usage: GWindowEvent windowEvent;\n *        GWindowEvent windowEvent(e);\n *        GWindowEvent windowEvent(type, gw);\n * ------------------------------------------\n * Creates a GWindowEvent using the specified parameters or those taken\n * from the more general event e.\n */\n</scan>\n   GWindowEvent();\n   GWindowEvent(GEvent e);\n   GWindowEvent(WindowEventType type, GWindow gw);\n\n<a name=\"Method:getEventType\"><scan class=comment>/*\n * Method: getEventType\n * Usage: WindowEventType type = e.getEventType();\n * -----------------------------------------------\n * Returns the enumerated type constant corresponding to the specific type\n * of window event.\n */\n</scan>\n   WindowEventType getEventType();\n\n<a name=\"Method:getWindow\"><scan class=comment>/*\n * Method: getWindow\n * Usage: GWindow gw = e.getWindow();\n * ----------------------------------\n * Returns the graphics window in which this event occurred.\n */\n</scan>\n   GWindow getWindow();\n\n<a name=\"Method:toString\"><scan class=comment>/*\n * Method: toString\n * Usage: string str = e.toString();\n * ---------------------------------\n * Converts the event to a human-readable representation of the event.\n */\n</scan>\n   string toString();\n\n};\n\n<a name=\"Class:GActionEvent\"><scan class=comment>/*\n * Class: GActionEvent\n * -------------------\n * This event subclass represents an action event.\n */\n</scan>\nclass GActionEvent : public GEvent {\n\npublic:\n\n<a name=\"Constructor:GActionEvent\"><scan class=comment>/*\n * Constructor: GActionEvent\n * Usage: GActionEvent actionEvent;\n *        GActionEvent actionEvent(e);\n *        GActionEvent actionEvent(type, actionCommand);\n * -----------------------------------------------------\n * Creates a GActionEvent using the specified parameters or those taken\n * from the more general event e.\n */\n</scan>\n   GActionEvent();\n   GActionEvent(GEvent e);\n   GActionEvent(ActionEventType type, string actionCommand);\n\n<a name=\"Method:getEventType\"><scan class=comment>/*\n * Method: getEventType\n * Usage: ActionEventType type = e.getEventType();\n * -----------------------------------------------\n * Returns the enumerated type constant corresponding to the specific type\n * of action event.\n */\n</scan>\n   ActionEventType getEventType();\n\n<a name=\"Method:getActionCommand\"><scan class=comment>/*\n * Method: getActionCommand\n * Usage: string cmd = e.getActionCommand();\n * -----------------------------------------\n * Returns the action command associated with this event.\n */\n</scan>\n   string getActionCommand();\n\n<a name=\"Method:toString\"><scan class=comment>/*\n * Method: toString\n * Usage: string str = e.toString();\n * ---------------------------------\n * Converts the event to a human-readable representation of the event.\n */\n</scan>\n   string toString();\n\n};\n\n<a name=\"Class:GTimerEvent\"><scan class=comment>/*\n * Class: GTimerEvent\n * ------------------\n * This event subclass represents a timer event.\n */\n</scan>\nclass GTimerEvent : public GEvent {\n\npublic:\n\n<a name=\"Constructor:GTimerEvent\"><scan class=comment>/*\n * Constructor: GTimerEvent\n * Usage: GTimerEvent timerEvent;\n *        GTimerEvent timerEvent(e);\n *        GTimerEvent timerEvent(type);\n * ------------------------------------\n * Creates a GTimerEvent.\n */\n</scan>\n   GTimerEvent();\n   GTimerEvent(GEvent e);\n   GTimerEvent(TimerEventType type);\n\n<a name=\"Method:getEventType\"><scan class=comment>/*\n * Method: getEventType\n * Usage: TimerEventType type = e.getEventType();\n * ----------------------------------------------\n * Returns the enumerated type constant corresponding to the specific type\n * of timer event.\n */\n</scan>\n   TimerEventType getEventType();\n\n<a name=\"Method:toString\"><scan class=comment>/*\n * Method: toString\n * Usage: string str = e.toString();\n * ---------------------------------\n * Converts the event to a human-readable representation of the event.\n */\n</scan>\n   string toString();\n\n};\n\n<a name=\"Class:GMouseEvent\"><scan class=comment>/*\n * Class: GMouseEvent\n * ------------------\n * This event subclass represents a mouse event.\n */\n</scan>\nclass GMouseEvent : public GEvent {\n\npublic:\n\n<a name=\"Constructor:GMouseEvent\"><scan class=comment>/*\n * Constructor: GMouseEvent\n * Usage: GMouseEvent mouseEvent;\n *        GMouseEvent mouseEvent(e);\n *        GMouseEvent mouseEvent(type, x, y);\n * ------------------------------------------\n * Creates a GMouseEvent using the specified parameters or those taken from\n * the more general event e.\n */\n</scan>\n   GMouseEvent();\n   GMouseEvent(GEvent e);\n   GMouseEvent(MouseEventType type, double x, double y);\n\n<a name=\"Method:getEventType\"><scan class=comment>/*\n * Method: getEventType\n * Usage: MouseEventType type = e.getEventType();\n * ----------------------------------------------\n * Returns the enumerated type constant corresponding to the specific type\n * of mouse event.\n */\n</scan>\n   MouseEventType getEventType();\n\n<a name=\"Method:getX\"><scan class=comment>/*\n * Method: getX\n * Usage: double x = getX();\n * -------------------------\n * Returns the x coordinate at which the event occurred relative to the\n * window origin at the upper left corner of the window.\n */\n</scan>\n   double getX();\n\n<a name=\"Method:getY\"><scan class=comment>/*\n * Method: getY\n * Usage: double y = getY();\n * -------------------------\n * Returns the y coordinate at which the event occurred relative to the\n * window origin at the upper left corner of the window.\n */\n</scan>\n   double getY();\n\n<a name=\"Method:toString\"><scan class=comment>/*\n * Method: toString\n * Usage: string str = e.toString();\n * ---------------------------------\n * Converts the event to a human-readable representation of the event.\n */\n</scan>\n   string toString();\n\n};\n\n<a name=\"Class:GKeyEvent\"><scan class=comment>/*\n * Class: GKeyEvent\n * ----------------\n * This event subclass represents a key event.\n */\n</scan>\nclass GKeyEvent : public GEvent {\n\npublic:\n\n<a name=\"Constructor:GKeyEvent\"><scan class=comment>/*\n * Constructor: GKeyEvent\n * Usage: GKeyEvent keyEvent;\n *        GKeyEvent keyEvent(e);\n *        GKeyEvent keyEvent(type, key);\n * -------------------------------------\n * Creates a GKeyEvent using the specified parameters or those taken from\n * the more general event e.\n */\n</scan>\n   GKeyEvent();\n   GKeyEvent(GEvent e);\n   GKeyEvent(KeyEventType type, int key);\n\n<a name=\"Method:getEventType\"><scan class=comment>/*\n * Method: getEventType\n * Usage: KeyEventType type = e.getEventType();\n * --------------------------------------------\n * Returns the enumerated type constant corresponding to the specific type\n * of key event.\n */\n</scan>\n   KeyEventType getEventType();\n\n<a name=\"Method:getKey\"><scan class=comment>/*\n * Method: getKey\n * Usage: int key = getKey();\n * --------------------------\n * Returns the integer code associated with the key in the event.\n */\n</scan>\n   int getKey();\n\n<a name=\"Method:getChar\"><scan class=comment>/*\n * Method: getChar\n * Usage: char ch = e.getChar();\n * -----------------------------\n * Returns the character code for the key value after applying modifier\n * keys.  For example, if the user types the 'a' key with the shift key\n * down, getChar will return 'A'.  If the key code in the event does not\n * correspond to a character, getChar returns the null character ('\\0').\n */\n</scan>\n   char getChar();\n\n<a name=\"Method:toString\"><scan class=comment>/*\n * Method: toString\n * Usage: string str = e.toString();\n * ---------------------------------\n * Converts the event to a human-readable representation of the event.\n */\n</scan>\n   string toString();\n\n};\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/gevents.html",
    "content": "<html>\n<head>\n<title>gevents.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"gevents-h.html\">gevents.h</a></h1>\nThis interface defines the event types used in the\n<code>StanfordCPPLib</code> graphics libraries.  The structure\nof this package is adapted from the Java event model.\n<h2>Classes</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"GEvent-class.html\">GEvent</a>&nbsp;</td><td class=indexSynopsis width=100%>This class is the root of the hierarchy for all events.</td></tr>\n<tr><td class=indexKey><a href=\"GWindowEvent-class.html\">GWindowEvent</a>&nbsp;</td><td class=indexSynopsis width=100%>This event subclass represents a window event.</td></tr>\n<tr><td class=indexKey><a href=\"GActionEvent-class.html\">GActionEvent</a>&nbsp;</td><td class=indexSynopsis width=100%>This event subclass represents an action event.</td></tr>\n<tr><td class=indexKey><a href=\"GTimerEvent-class.html\">GTimerEvent</a>&nbsp;</td><td class=indexSynopsis width=100%>This event subclass represents a timer event.</td></tr>\n<tr><td class=indexKey><a href=\"GMouseEvent-class.html\">GMouseEvent</a>&nbsp;</td><td class=indexSynopsis width=100%>This event subclass represents a mouse event.</td></tr>\n<tr><td class=indexKey><a href=\"GKeyEvent-class.html\">GKeyEvent</a>&nbsp;</td><td class=indexSynopsis width=100%>This event subclass represents a key event.</td></tr>\n</table>\n<h2>Types</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Type:EventClassType\">EventClassType</a>&nbsp;</td><td class=indexSynopsis width=100%>This enumeration type defines the event classes.</td></tr>\n<tr><td class=indexKey><a href=\"#Type:WindowEventType\">WindowEventType</a>&nbsp;</td><td class=indexSynopsis width=100%>This enumeration type defines the event types for window events.</td></tr>\n<tr><td class=indexKey><a href=\"#Type:ActionEventType\">ActionEventType</a>&nbsp;</td><td class=indexSynopsis width=100%>This enumeration type defines the event types for action events.</td></tr>\n<tr><td class=indexKey><a href=\"#Type:TimerEventType\">TimerEventType</a>&nbsp;</td><td class=indexSynopsis width=100%>This enumeration type defines the event types for timer events.</td></tr>\n<tr><td class=indexKey><a href=\"#Type:MouseEventType\">MouseEventType</a>&nbsp;</td><td class=indexSynopsis width=100%>This enumeration type defines the event types for mouse events.</td></tr>\n<tr><td class=indexKey><a href=\"#Type:KeyEventType\">KeyEventType</a>&nbsp;</td><td class=indexSynopsis width=100%>This enumeration type defines the event types for keyboard events.</td></tr>\n<tr><td class=indexKey><a href=\"#Type:ModifierCodes\">ModifierCodes</a>&nbsp;</td><td class=indexSynopsis width=100%>This enumeration type defines a set of constants used to check whether modifiers are in effect.</td></tr>\n<tr><td class=indexKey><a href=\"#Type:KeyCodes\">KeyCodes</a>&nbsp;</td><td class=indexSynopsis width=100%>This enumeration type defines the constants for the special keys on the keyboard.</td></tr>\n</table>\n<h2>Functions</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Function:startIntervalTimer\">startIntervalTimer(delay)</a><br><a href=\"#Function:startIntervalTimer\">startIntervalTimer(delay,&nbsp;count)</a>&nbsp;</td><td class=indexSynopsis width=100%>Starts an interval timer that fires a timer event repeatedly every <code>delay</code> milliseconds.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:stopIntervalTimer\">stopIntervalTimer()</a>&nbsp;</td><td class=indexSynopsis width=100%>Stops the interval timer.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:postEvent\">postEvent(e)</a>&nbsp;</td><td class=indexSynopsis width=100%>Adds the event to the end of the event queue.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:waitForEvent\">waitForEvent(e)</a>&nbsp;</td><td class=indexSynopsis width=100%>Dismisses the process until an event occurs.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:waitForClick\">waitForClick()</a><br><a href=\"#Function:waitForClick\">waitForClick(mouseEvent)</a>&nbsp;</td><td class=indexSynopsis width=100%>Waits for a mouse click to occur anywhere in the window, discarding any other events.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:getNextEvent\">getNextEvent(e)</a>&nbsp;</td><td class=indexSynopsis width=100%>Checks to see if there are any events waiting on the event queue.</td></tr>\n</table>\n<h2>Type detail</h2>\n<hr>\n<a name=\"Type:EventClassType\"></a>\n<pre class=detailCode>\nenum EventClassType {\n   NULL_EVENT,         <span class=comment>/* Indicates an uninitialized event              */</span>\n   WINDOW_EVENT,       <span class=comment>/* Indicates a window-system event               */</span>\n   ACTION_EVENT,       <span class=comment>/* Indicates an event with an associated action  */</span>\n   TIMER_EVENT,        <span class=comment>/* Indicates an interval timer event             */</span>\n   MOUSE_EVENT,        <span class=comment>/* Indicates a mouse event                       */</span>\n   KEY_EVENT           <span class=comment>/* Indicates an event generated by the keyboard  */</span>\n};\n</pre>\n<div class=detailHTML>\nThis enumeration type defines the event classes.\n</div>\n<hr>\n<a name=\"Type:WindowEventType\"></a>\n<pre class=detailCode>\nenum WindowEventType {\n   WINDOW_ACTIVATED,   <span class=comment>/* Generated when the window gains focus         */</span>\n   WINDOW_CLOSED,      <span class=comment>/* Generated when the window is finally closed   */</span>\n   WINDOW_CLOSING,     <span class=comment>/* Generated when the user clicks the close box  */</span>\n   WINDOW_DEACTIVATED, <span class=comment>/* Generated when the window loses focus         */</span>\n   WINDOW_DEICONIFIED, <span class=comment>/* Generated when the window is expanded         */</span>\n   WINDOW_ICONIFIED,   <span class=comment>/* Generated when the window is minimized        */</span>\n   WINDOW_OPENED       <span class=comment>/* Generated when the window is opened           */</span>\n};\n</pre>\n<div class=detailHTML>\nThis enumeration type defines the event types for window events.\n</div>\n<hr>\n<a name=\"Type:ActionEventType\"></a>\n<pre class=detailCode>\nenum ActionEventType {\n   ACTION_PERFORMED    <span class=comment>/* Generated when a user action is performed     */</span>\n};\n</pre>\n<div class=detailHTML>\nThis enumeration type defines the event types for action events.\n</div>\n<hr>\n<a name=\"Type:TimerEventType\"></a>\n<pre class=detailCode>\nenum TimerEventType {\n   TIMER_TICKED        <span class=comment>/* Generated when the interval timer ticks       */</span>\n};\n</pre>\n<div class=detailHTML>\nThis enumeration type defines the event types for timer events.\n</div>\n<hr>\n<a name=\"Type:MouseEventType\"></a>\n<pre class=detailCode>\nenum MouseEventType {\n   MOUSE_PRESSED,      <span class=comment>/* Generated when the mouse button is pressed     */</span>\n   MOUSE_RELEASED,     <span class=comment>/* Generated when the mouse button is released    */</span>\n   MOUSE_CLICKED,      <span class=comment>/* Generated on clicks after PRESSED and RELEASED */</span>\n   MOUSE_MOVED,        <span class=comment>/* Generated when the mouse is moved              */</span>\n   MOUSE_DRAGGED       <span class=comment>/* Generated on mouse motion with the button down */</span>\n};\n</pre>\n<div class=detailHTML>\nThis enumeration type defines the event types for mouse events.\n</div>\n<hr>\n<a name=\"Type:KeyEventType\"></a>\n<pre class=detailCode>\nenum KeyEventType {\n   KEY_PRESSED,        <span class=comment>/* Generated when a key is pressed                */</span>\n   KEY_RELEASED,       <span class=comment>/* Generated when a key is released               */</span>\n   KEY_TYPED           <span class=comment>/* Generated after PRESSED and RELEASED on a key  */</span>\n};\n</pre>\n<div class=detailHTML>\nThis enumeration type defines the event types for keyboard events.\n</div>\n<hr>\n<a name=\"Type:ModifierCodes\"></a>\n<pre class=detailCode>\nenum ModifierCodes {\n   SHIFT_DOWN     = 1 &lt;&lt; 0,\n   CTRL_DOWN      = 1 &lt;&lt; 1,\n   META_DOWN      = 1 &lt;&lt; 2,\n   ALT_DOWN       = 1 &lt;&lt; 3,\n   ALT_GRAPH_DOWN = 1 &lt;&lt; 4,\n   BUTTON1_DOWN   = 1 &lt;&lt; 5,\n   BUTTON2_DOWN   = 1 &lt;&lt; 6,\n   BUTTON3_DOWN   = 1 &lt;&lt; 7\n};\n</pre>\n<div class=detailHTML>\nThis enumeration type defines a set of constants used to check whether\nmodifiers are in effect.\n</div>\n<hr>\n<a name=\"Type:KeyCodes\"></a>\n<pre class=detailCode>\nenum KeyCodes {\n   ESCAPE_KEY = 256,\n   DELETE_KEY,\n   TAB_KEY,\n   RETURN_KEY,\n   CLEAR_KEY,\n   ENTER_KEY,\n   UP_ARROW_KEY,\n   DOWN_ARROW_KEY,\n   LEFT_ARROW_KEY,\n   RIGHT_ARROW_KEY,\n   HELP_KEY,\n   HOME_KEY,\n   PAGE_UP_KEY,\n   PAGE_DOWN_KEY,\n   FORWARD_DEL_KEY,\n   END_KEY,\n   F1_KEY,\n   F2_KEY,\n   F3_KEY,\n   F4_KEY,\n   F5_KEY,\n   F6_KEY,\n   F7_KEY,\n   F8_KEY,\n   F9_KEY,\n   F10_KEY,\n   F11_KEY,\n   F12_KEY,\n   F13_KEY,\n   F14_KEY,\n   F15_KEY,\n};\n</pre>\n<div class=detailHTML>\nThis enumeration type defines the constants for the special keys on the\nkeyboard.  These values begin after the <code>char</code> range.\n</div>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:startIntervalTimer\"></a>\n<pre class=detailCode>\nvoid startIntervalTimer(double delay);\nvoid startIntervalTimer(double delay, int count);\n</pre>\n<div class=detailHTML>\nStarts an interval timer that fires a timer event repeatedly every\n<code>delay</code> milliseconds.  The <code>count</code> parameter,\nif specified, indicates the maximum number of events to fire; if\nthis parameter is missing, the timer continues to fire until it is\nstopped.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstartIntervalTimer(delay);\nstartIntervalTimer(delay, count);\n</pre>\n<hr>\n<a name=\"Function:stopIntervalTimer\"></a>\n<pre class=detailCode>\nvoid stopIntervalTimer();\n</pre>\n<div class=detailHTML>\nStops the interval timer.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstopIntervalTimer();\n</pre>\n<hr>\n<a name=\"Function:postEvent\"></a>\n<pre class=detailCode>\nvoid postEvent(GEvent e);\n</pre>\n<div class=detailHTML>\nAdds the event to the end of the event queue.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\npostEvent(e);\n</pre>\n<hr>\n<a name=\"Function:waitForEvent\"></a>\n<pre class=detailCode>\nvoid waitForEvent(GEvent &amp; e);\nvoid waitForEvent(GWindowEvent &amp; e);\nvoid waitForEvent(GActionEvent &amp; e);\nvoid waitForEvent(GTimerEvent &amp; e);\nvoid waitForEvent(GMouseEvent &amp; e);\nvoid waitForEvent(GKeyEvent &amp; e);\n</pre>\n<div class=detailHTML>\nDismisses the process until an event occurs.  When it does, the\n<code>waitForEvent</code> function returns with the details of\nthe event.  The parameter <code>e</code> can be either a general\n<code>GEvent</code> variable or one of the specific subclasses.\nIn the former case, the function returns when any event occurs.\nClients should use this approach if they need to respond to more\nthan one class of event.  As an example, the following code is\nthe canonical event loop for an animated application that\nneeds to respond to mouse, key, and timer events:\n\n<pre>\n   startIntervalTimer(ANIMATION_DELAY_IN_MILLISECONDS);\n   while (true) {\n      GEvent e;\n      waitForEvent(e);\n      switch (e.getEventClass()) {\n       case TIMER_EVENT:\n         takeAnimationStep();\n         break;\n       case MOUSE_EVENT:\n         handleMouseEvent(GMouseEvent(e));\n         break;\n       case KEY_EVENT:\n         handleKeyEvent(GKeyEvent(e));\n         break;\n      }\n   }\n</pre>\n\nFor applications that are interested only in mouse events,\nfor example, this code can be simplified as follows:\n\n<pre>\n   while (true) {\n      GMouseEvent e;\n      waitForEvent(e);\n      handleMouseEvent(e);\n   }\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nwaitForEvent(e);\n</pre>\n<hr>\n<a name=\"Function:waitForClick\"></a>\n<pre class=detailCode>\nvoid waitForClick();\nvoid waitForClick(GMouseEvent &amp; mouseEvent);\n</pre>\n<div class=detailHTML>\nWaits for a mouse click to occur anywhere in the window, discarding\nany other events.  If the client passes a <code>GMouseEvent</code>\nas a reference parameter, the function will fill in the details of\nthe click event.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nwaitForClick();\nwaitForClick(mouseEvent);\n</pre>\n<hr>\n<a name=\"Function:getNextEvent\"></a>\n<pre class=detailCode>\nbool getNextEvent(GEvent &amp; e);\nbool getNextEvent(GWindowEvent &amp; e);\nbool getNextEvent(GActionEvent &amp; e);\nbool getNextEvent(GTimerEvent &amp; e);\nbool getNextEvent(GMouseEvent &amp; e);\nbool getNextEvent(GKeyEvent &amp; e);\n</pre>\n<div class=detailHTML>\nChecks to see if there are any events waiting on the event queue.\nIf so, <code>getNextEvent</code> fills in the structure of the event\nwith the first event in the queue and returns <code>true</code>.  If\nthere are no events, <code>getNextEvent</code> returns <code>false</code>.\nAs with <code>waitForEvent</code>, the parameter <code>e</code> can\nbe either a <code>GEvent</code> variable or one of the specific\nsubclasses.  Clients should use this form of the call if they\nneed to support animation in the main thread, as in the following\ncode example:\n\n<pre>\n   while (true) {\n      GEvent e;\n      if (getNextEvent(e)) {\n         switch (e.getEventClass()) {\n          case MOUSE_EVENT:\n            handleMouseEvent(GMouseEvent(e));\n            break;\n          case KEY_EVENT:\n            handleKeyEvent(GKeyEvent(e));\n            break;\n         }\n      } else {\n         takeAnimationStep();\n      }\n   }\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (getNextEvent(e)) . . .\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/gobjects-h.html",
    "content": "<html>\n<head>\n<title>include/gobjects.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: gobjects.h\n * ----------------\n * This file imports a set of header files that provide access to a\n * collection of graphical objects designed to be compatible with the ACM\n * Graphics library for Java.\n */\n</scan>\n<a name=\"Class:GObject\"><scan class=comment>/*\n * Class: GObject\n * --------------\n * This abstract class is the root of the graphics hierarchy.  All object\n * of this class and its subclasses implement the following methods:\n *\n *   double getX();\n *   double getY();\n *   void setLocation(GPoint pt);\n *   void setLocation(double x, double y);\n *   void move(double dx, double dy);\n *   double getWidth();\n *   double getHeight();\n *   string getColor();\n *   void setColor(string color);\n *   void setVisible(bool flag);\n *   bool isVisible();\n *   void sendForward();\n *   void sendToFront();\n *   void sendBackward();\n *   void sendToBack();\n *   bool contains(GPoint pt);\n *   bool contains(double x, double y);\n *   bool exists();\n *   string getType();\n *   string toString();\n */\n</scan>\n<a name=\"Class:GRect\"><scan class=comment>/*\n * Class: GRect\n * ------------\n * This class represents a rectangle.  In addition to the ones it inherits\n * from GObject, the GRect class defines the following methods:\n *\n *   GRect(double width, double height);\n *   GRect(double x, double y, double width, double height);\n *   void setSize(double width, double height);\n *   void setBounds(GRectangle bounds);\n *   void setBounds(double x, double y, double width, double height);\n *   void setFilled(bool flag);\n *   bool isFilled();\n *   void setFillColor(string color);\n *   string getFillColor();\n */\n</scan>\n<a name=\"Class:GOval\"><scan class=comment>/*\n * Class: GOval\n * ------------\n * This class represents an ellipse.  In addition to the ones it inherits\n * from GObject, the GOval class defines the following methods:\n *\n *   GOval(double width, double height);\n *   GOval(double x, double y, double width, double height);\n *   void setSize(double width, double height);\n *   void setBounds(GRectangle bounds);\n *   void setBounds(double x, double y, double width, double height);\n *   void setFilled(bool flag);\n *   bool isFilled();\n *   void setFillColor(string color);\n *   string getFillColor();\n */\n</scan>\n<a name=\"Class:GArc\"><scan class=comment>/*\n * Class: GArc\n * -----------\n * This class represents an elliptical arc.  In addition to the ones it\n * inherits from GObject, the GArc class defines the following methods:\n *\n *   GArc(double x, double y, double start, double sweep);\n *   GArc(double x, double y, double width, double height,\n *                            double start, double sweep);\n *   void setStartAngle(double start);\n *   double getStartAngle();\n *   void setSweepAngle(double sweep);\n *   double getSweepAngle();\n *   void setFrameRectangle(GRectangle bounds);\n *   void setFrameRectangle(double x, double y, double width, double height);\n *   void setFilled(bool flag);\n *   bool isFilled();\n *   void setFillColor(string color);\n *   string getFillColor();\n */\n</scan>\n<a name=\"Class:GLine\"><scan class=comment>/*\n * Class: GLine\n * ------------\n * This class represents a line segment.  In addition to the ones it\n * inherits from GObject, the GLine class defines the following methods:\n *\n *   GLine(double x0, double y0, double x1, double y1);\n *   void setStartPoint(double x, double y);\n *   void setEndPoint(double x, double y);\n */\n</scan>\n<a name=\"Class:GImage\"><scan class=comment>/*\n * Class: GImage\n * -------------\n * This class represents a graphical image, usually read in from a file. \n * In addition to the ones it inherits from GObject, the GImage class\n * defines the following methods:\n *\n *   GImage(string filename);\n *   GImage(string filename, double x, double y);\n *   int getWidth();\n *   int getHeight();\n */\n</scan>\n<a name=\"Class:GLabel\"><scan class=comment>/*\n * Class: GLabel\n * -------------\n * This class represents a text string.  In addition to the ones it\n * inherits from GObject, the GLabel class defines the following methods:\n *\n *   GLabel(string str);\n *   GLabel(string str, double x, double y);\n *   void setFont(string font);\n *   string getFont();\n *   void setLabel(string str);\n *   string getLabel();\n *   double getFontAscent();\n *   double getFontDescent();\n */\n</scan>\n<a name=\"Class:GPolygon\"><scan class=comment>/*\n * Class: GPolygon\n * ---------------\n * This class represents a polygon.  The constructor creates an empty\n * polygon to which edges can be added.  In addition to the ones it\n * inherits from GObject, the GPolygon class defines the following methods:\n *\n *   GPolygon();\n *   void addVertex(double x, double y);\n *   void addVertex(double x, double y);\n *   void addEdge(double dx, double dy);\n *   void addPolarEdge(double r, double theta);\n *   void setFilled(bool flag);\n *   bool isFilled();\n *   void setFillColor(string color);\n *   string getFillColor();\n */\n</scan>\n<a name=\"Class:GCompound\"><scan class=comment>/*\n * Class: GCompound\n * ----------------\n * This class represents a compound of other graphical objects.  In\n * addition to the ones it inherits from GObject, the GCompound class\n * defines the following methods:\n *\n *   GCompound();\n *   void add(GObject gobj);\n *   void add(GObject gobj, GPoint pt);\n *   void add(GObject gobj, double x, double y);\n *   void remove(GObject gobj);\n *   void removeAll();\n *   int getElementCount();\n */\n</scan>\n#ifndef _gobjects_h\n#define _gobjects_h\n\n#include \"graphics.h\"\n#include \"gtypes.h\"\n#include \"stack.h\"\n#include \"vector.h\"\n#include \"gobjects/gobject.h\"\n#include \"gobjects/garc.h\"\n#include \"gobjects/gcompound.h\"\n#include \"gobjects/gimage.h\"\n#include \"gobjects/glabel.h\"\n#include \"gobjects/gline.h\"\n#include \"gobjects/goval.h\"\n#include \"gobjects/gpolygon.h\"\n#include \"gobjects/grect.h\"\n#include \"gobjects/gobjectrecord.h\"\n#include \"gobjects/garcrecord.h\"\n#include \"gobjects/gcompoundrecord.h\"\n#include \"gobjects/gimagerecord.h\"\n#include \"gobjects/glabelrecord.h\"\n#include \"gobjects/glinerecord.h\"\n#include \"gobjects/govalrecord.h\"\n#include \"gobjects/gpolygonrecord.h\"\n#include \"gobjects/grectrecord.h\"\n#include \"gevents.h\"\n#include \"gwindow.h\"\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/gobjects.html",
    "content": "<html>\n<head>\n<title>gobjects.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"gobjects-h.html\">gobjects.h</a></h1>\nThis file imports a set of header files that provide access to\na collection of graphical objects designed to be compatible with\nthe ACM Graphics library for Java.\n<h2>Classes</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"GObject-class.html\">GObject</a>&nbsp;</td><td class=indexSynopsis width=100%>This abstract class is the root of the graphics hierarchy.</td></tr>\n<tr><td class=indexKey><a href=\"GRect-class.html\">GRect</a>&nbsp;</td><td class=indexSynopsis width=100%>This class represents a rectangle.</td></tr>\n<tr><td class=indexKey><a href=\"GOval-class.html\">GOval</a>&nbsp;</td><td class=indexSynopsis width=100%>This class represents an ellipse.</td></tr>\n<tr><td class=indexKey><a href=\"GArc-class.html\">GArc</a>&nbsp;</td><td class=indexSynopsis width=100%>This class represents an elliptical arc.</td></tr>\n<tr><td class=indexKey><a href=\"GLine-class.html\">GLine</a>&nbsp;</td><td class=indexSynopsis width=100%>This class represents a line segment.</td></tr>\n<tr><td class=indexKey><a href=\"GImage-class.html\">GImage</a>&nbsp;</td><td class=indexSynopsis width=100%>This class represents a graphical image, usually read in from a file.</td></tr>\n<tr><td class=indexKey><a href=\"GLabel-class.html\">GLabel</a>&nbsp;</td><td class=indexSynopsis width=100%>This class represents a text string.</td></tr>\n<tr><td class=indexKey><a href=\"GPolygon-class.html\">GPolygon</a>&nbsp;</td><td class=indexSynopsis width=100%>This class represents a polygon.</td></tr>\n<tr><td class=indexKey><a href=\"GCompound-class.html\">GCompound</a>&nbsp;</td><td class=indexSynopsis width=100%>This class represents a compound of other graphical objects.</td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/graph-h.html",
    "content": "<html>\n<head>\n<title>include/graph.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: graph.h\n * -------------\n * This interface exports a parameterized Graph class used to represent\n * graphs, which consist of a set of nodes and a set of arcs.\n */\n</scan>\n#ifndef _graph_h\n#define _graph_h\n\n#include \"error.h\"\n#include \"map.h\"\n#include \"set.h\"\n\n<a name=\"Function:nodeCompare\"><scan class=comment>/*\n * Function: nodeCompare\n * ---------------------\n * Standard comparison function for nodes.\n */\n</scan>\ntemplate &lt;typename NodeType&gt;\nint nodeCompare(NodeType *n1, NodeType *n2);\n\n<a name=\"Function:arcCompare\"><scan class=comment>/*\n * Function: arcCompare\n * --------------------\n * Standard comparison function for arcs.\n */\n</scan>\ntemplate &lt;typename NodeType,typename ArcType&gt;\nint arcCompare(ArcType *a1, ArcType *a2);\n\n<a name=\"Class:Graph<NodeType,ArcType>\"><scan class=comment>/*\n * Class: Graph&lt;NodeType,ArcType&gt;\n * ------------------------------\n * This class represents a graph with the specified node and arc types. \n * The NodeType and ArcType parameters indicate the structure type or class\n * used for nodes and arcs, respectively.  These types can contain any\n * fields or methods required by the client, but must contain the following\n * public fields required by the Graph package itself:\n *\n * The NodeType definition must include:\n *   - A string field called name\n *   - A Set&lt;ArcType *&gt; field called arcs\n *\n * The ArcType definition must include:\n *   - A NodeType * field called start\n *   - A NodeType * field called finish\n */\n</scan>\ntemplate &lt;typename NodeType,typename ArcType&gt;\nclass Graph {\n\npublic:\n\n<a name=\"Constructor:Graph\"><scan class=comment>/*\n * Constructor: Graph\n * Usage: Graph&lt;NodeType,ArcType&gt; g;\n * ---------------------------------\n * Creates an empty Graph object.\n */\n</scan>\n   Graph();\n\n<a name=\"Destructor:~Graph\"><scan class=comment>/*\n * Destructor: ~Graph\n * Usage: (usually implicit)\n * -------------------------\n * Frees the internal storage allocated to represent the graph.\n */\n</scan>\n   ~Graph();\n\n<a name=\"Method:size\"><scan class=comment>/*\n * Method: size\n * Usage: int size = g.size();\n * ---------------------------\n * Returns the number of nodes in the graph.\n */\n</scan>\n   int size();\n\n<a name=\"Method:isEmpty\"><scan class=comment>/*\n * Method: isEmpty\n * Usage: if (g.isEmpty()) . . .\n * -----------------------------\n * Returns true if the graph is empty.\n */\n</scan>\n   bool isEmpty();\n\n<a name=\"Method:clear\"><scan class=comment>/*\n * Method: clear\n * Usage: g.clear();\n * -----------------\n * Reinitializes the graph to be empty, freeing any heap storage.\n */\n</scan>\n   void clear();\n\n<a name=\"Method:addNode\"><scan class=comment>/*\n * Method: addNode\n * Usage: NodeType *node = g.addNode(name);\n *        NodeType *node = g.addNode(node);\n * ----------------------------------------\n * Adds a node to the graph.  The first version of this method creates a\n * new node of the appropriate type and initializes its fields; the second\n * assumes that the client has already created the node and simply adds it\n * to the graph.  Both versions of this method return a pointer to the\n * node.\n */\n</scan>\n   NodeType *addNode(string name);\n   NodeType *addNode(NodeType *node);\n\n<a name=\"Method:removeNode\"><scan class=comment>/*\n * Method: removeNode\n * Usage: g.removeNode(name);\n *        g.removeNode(node);\n * --------------------------\n * Removes a node from the graph, where the node can be specified either by\n * its name or as a pointer value.  Removing a node also removes all arcs\n * that contain that node.\n */\n</scan>\n   void removeNode(string name);\n   void removeNode(NodeType *node);\n\n<a name=\"Method:getNode\"><scan class=comment>/*\n * Method: getNode\n * Usage: NodeType *node = g.getNode(name);\n * ----------------------------------------\n * Looks up a node in the name table attached to the graph and returns a\n * pointer to that node.  If no node with the specified name exists,\n * getNode signals an error.\n */\n</scan>\n   NodeType *getNode(string name);\n\n<a name=\"Method:nodeExists\"><scan class=comment>/*\n * Method: nodeExists\n * Usage: if (g.nodeExists(name)) . . .\n * ------------------------------------\n * Returns true if a node with the given name exists.\n */\n</scan>\n   bool nodeExists(string name);\n\n<a name=\"Method:addArc\"><scan class=comment>/*\n * Method: addArc\n * Usage: g.addArc(s1, s2);\n *        g.addArc(n1, n2);\n *        g.addArc(arc);\n * ---------------------\n * Adds an arc to the graph.  The endpoints of the arc can be specified\n * either as strings indicating the names of the nodes or as pointers to\n * the node structures.  Alternatively, the client can create the arc\n * structure explicitly and pass that pointer to the addArc method.  All\n * three of these versions return a pointer to the arc in case the client\n * needs to capture this value.\n */\n</scan>\n   ArcType *addArc(string s1, string s2);\n   ArcType *addArc(NodeType *n1, NodeType *n2);\n   ArcType *addArc(ArcType *arc);\n\n<a name=\"Method:removeArc\"><scan class=comment>/*\n * Method: removeArc\n * Usage: g.removeArc(s1, s2);\n *        g.removeArc(n1, n2);\n *        g.removeArc(arc);\n * ------------------------\n * Removes an arc from the graph, where the arc can be specified in any of\n * three ways: by the names of its endpoints, by the node pointers at its\n * endpoints, or as an arc pointer.  If more than one arc connects the\n * specified endpoints, all of them are removed.\n */\n</scan>\n   void removeArc(string s1, string s2);\n   void removeArc(NodeType *n1, NodeType *n2);\n   void removeArc(ArcType *arc);\n\n<a name=\"Method:isConnected\"><scan class=comment>/*\n * Method: isConnected\n * Usage: if (g.isConnected(n1, n2)) . . .\n *        if (g.isConnected(s1, s2)) . . .\n * ---------------------------------------\n * Returns true if the graph contains an arc from n1 to n2.  As in the\n * addArc method, nodes can be specified either as node pointers or by\n * name.\n */\n</scan>\n   bool isConnected(NodeType *n1, NodeType *n2);\n   bool isConnected(string s1, string s2);\n\n<a name=\"Method:getNodeSet\"><scan class=comment>/*\n * Method: getNodeSet\n * Usage: foreach (NodeType *node in g.getNodeSet()) . . .\n * -------------------------------------------------------\n * Returns the set of all nodes in the graph.\n */\n</scan>\n   Set&lt;NodeType *&gt; &amp; getNodeSet();\n\n<a name=\"Method:getArcSet\"><scan class=comment>/*\n * Method: getArcSet\n * Usage: foreach (ArcType *arc in g.getArcSet()) . . .\n *        foreach (ArcType *arc in g.getArcSet(node)) . . .\n *        foreach (ArcType *arc in g.getArcSet(name)) . . .\n * --------------------------------------------------------\n * Returns the set of all arcs in the graph or, in the second and third\n * forms, the arcs that start at the specified node, which can be indicated\n * either as a pointer or by name.\n */\n</scan>\n   Set&lt;ArcType *&gt; &amp; getArcSet();\n   Set&lt;ArcType *&gt; &amp; getArcSet(NodeType *node);\n   Set&lt;ArcType *&gt; &amp; getArcSet(string name);\n\n<a name=\"Method:getNeighbors\"><scan class=comment>/*\n * Method: getNeighbors\n * Usage: foreach (NodeType *node in g.getNeighbors(node)) . . .\n *        foreach (NodeType *node in g.getNeighbors(name)) . . .\n * -------------------------------------------------------------\n * Returns the set of nodes that are neighbors of the specified node, which\n * can be indicated either as a pointer or by name.\n */\n</scan>\n   Set&lt;NodeType *&gt; getNeighbors(NodeType *node);\n   Set&lt;NodeType *&gt; getNeighbors(string node);\n\n#include \"private/graphpriv.h\"\n\n};\n\n#include \"private/graphimpl.cpp\"\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/graph.html",
    "content": "<html>\n<head>\n<title>graph.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"graph-h.html\">graph.h</a></h1>\nThis interface exports a parameterized <code>Graph</code> class used\nto represent <i>graphs,</i> which consist of a set of <i>nodes</i>\nand a set of <i>arcs</i>.\n<h2>Class</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"Graph-class.html\">Graph&lt;NodeType,ArcType&gt;</a>&nbsp;</td><td class=indexSynopsis width=100%>This class represents a graph with the specified node and arc types.</td></tr>\n</table>\n<h2>Functions</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Function:nodeCompare\">nodeCompare</a>&nbsp;</td><td class=indexSynopsis width=100%>Standard comparison function for nodes.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:arcCompare\">arcCompare</a>&nbsp;</td><td class=indexSynopsis width=100%>Standard comparison function for arcs.</td></tr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:nodeCompare\"></a>\n<pre class=detailCode>\ntemplate &lt;typename NodeType&gt;\nint nodeCompare(NodeType *n1, NodeType *n2);\n</pre>\n<div class=detailHTML>\nStandard comparison function for nodes.\n</div>\n<hr>\n<a name=\"Function:arcCompare\"></a>\n<pre class=detailCode>\ntemplate &lt;typename NodeType,typename ArcType&gt;\nint arcCompare(ArcType *a1, ArcType *a2);\n</pre>\n<div class=detailHTML>\nStandard comparison function for arcs.\n</div>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/graphics-h.html",
    "content": "<html>\n<head>\n<title>include/graphics.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: graphics.h\n * ----------------\n * This interface provides access to an extremely simple graphics library\n * that makes it possible to draw lines, rectangles, and ovals.  More\n * sophisticated operations and a wider range of graphical objects are\n * available in other libraries that extend these basic facilities, most\n * notably the graphical objects defined by the gobjects.h interface.\n */\n</scan>\n#ifndef _graphics_h\n#define _graphics_h\n\n#include &lt;string&gt;\n\n<a name=\"Function:initGraphics\"><scan class=comment>/*\n * Function: initGraphics\n * Usage: initGraphics();\n *        initGraphics(width, height);\n * -----------------------------------\n * Creates the graphics window on the screen.  The first form creates a\n * window with a default size of 500x300; the second allows the client to\n * specify the size of the window.  The call to initGraphics must precede\n * any console output or calls to other functions in this interface.\n */\n</scan>\nvoid initGraphics();\nvoid initGraphics(int width, int height);\n\n<a name=\"Function:drawArc\"><scan class=comment>/*\n * Function: drawArc\n * Usage: drawArc(x, y, width, height, start, sweep);\n * --------------------------------------------------\n * Draws an elliptical arc inscribed in a rectangle.   The parameters x, y,\n * width, and height specify the coordinates and dimensions of the bounding\n * rectangle.  The start parameter indicates the angle at which the arc\n * begins and is measured in degrees counterclockwise from the +x axis. \n * Thus, a start angle of 0 indicates an arc that begins along the line\n * running eastward from the center, a start angle of 135 begins along the\n * line running northwest, and a start angle of -90 begins along the line\n * running south.  The sweep parameter indicates the extent of the arc and\n * is also measured in degrees counterclockwise.  A sweep angle of 90\n * defines a quarter circle extending counterclockwise from the start\n * angle, and a sweep angle of -180 defines a semicircle extending\n * clockwise.\n */\n</scan>\nvoid drawArc(double x, double y, double width, double height,\n                                 double start, double sweep);\n\n<a name=\"Function:fillArc\"><scan class=comment>/*\n * Function: fillArc\n * Usage: fillArc(x, y, width, height, start, sweep);\n * --------------------------------------------------\n * Fills a wedge-shaped area of an elliptical arc.  The parameters are\n * interpreted in the same way as those for drawArc.\n */\n</scan>\nvoid fillArc(double x, double y, double width, double height,\n                                 double start, double sweep);\n\n<a name=\"Function:drawImage\"><scan class=comment>/*\n * Function: drawImage\n * Usage: drawImage(filename, x, y);\n * ---------------------------------\n * Draws the image from the specified file with its upper left corner at\n * the point (x, y).\n */\n</scan>\nvoid drawImage(string str, double x, double y);\n\n<a name=\"Function:drawLine\"><scan class=comment>/*\n * Function: drawLine\n * Usage: drawLine(x0, y0, x1, y1);\n * --------------------------------\n * Draws a line from the point (x0, y0) to the point (x1, y1).\n */\n</scan>\nvoid drawLine(double x0, double y0, double x1, double y1);\n\n<a name=\"Function:drawOval\"><scan class=comment>/*\n * Function: drawOval\n * Usage: drawOval(x, y, width, height);\n * -------------------------------------\n * Draws the frame of a oval with the specified bounds.\n */\n</scan>\nvoid drawOval(double x, double y, double width, double height);\n\n<a name=\"Function:fillOval\"><scan class=comment>/*\n * Function: fillOval\n * Usage: fillOval(x, y, width, height);\n * -------------------------------------\n * Fills the frame of a oval with the specified bounds.\n */\n</scan>\nvoid fillOval(double x, double y, double width, double height);\n\n<a name=\"Function:drawRect\"><scan class=comment>/*\n * Function: drawRect\n * Usage: drawRect(x, y, width, height);\n * -------------------------------------\n * Draws the frame of a rectangle with the specified bounds.\n */\n</scan>\nvoid drawRect(double x, double y, double width, double height);\n\n<a name=\"Function:fillRect\"><scan class=comment>/*\n * Function: fillRect\n * Usage: fillRect(x, y, width, height);\n * -------------------------------------\n * Fills the frame of a rectangle with the specified bounds.\n */\n</scan>\nvoid fillRect(double x, double y, double width, double height);\n\n<a name=\"Function:drawString\"><scan class=comment>/*\n * Function: drawString\n * Usage: drawString(str, x, y);\n * -----------------------------\n * Draws the string str so that its origin appears at the point (x, y)\n * using the current font and color.\n */\n</scan>\nvoid drawString(string str, double x, double y);\n\n<a name=\"Function:getStringWidth\"><scan class=comment>/*\n * Function: getStringWidth\n * Usage: double width = getStringWidth(str);\n * ------------------------------------------\n * Returns the width of the string str when displayed in the current font.\n */\n</scan>\n   double getStringWidth(string str);\n\n<a name=\"Function:setFont\"><scan class=comment>/*\n * Function: setFont\n * Usage: setFont(font);\n * ---------------------\n * Sets a new font.  The font parameter is a string in the form\n * family-style-size.  In this string, family is the name of the font\n * family; style is either missing (indicating a plain font) or one of the\n * strings Bold, Italic, or BoldItalic; and size is an integer indicating\n * the point size.  If any of these components is specified as an asterisk,\n * the existing value is retained.  The font parameter can also be a\n * sequence of such specifications separated by semicolons, in which the\n * first available font on the system is used.\n */\n</scan>\n   void setFont(string font);\n\n<a name=\"Function:getFont\"><scan class=comment>/*\n * Function: getFont\n * Usage: string font = getFont();\n * -------------------------------\n * Returns the current font.\n */\n</scan>\n   string getFont();\n\n<a name=\"Function:setColor\"><scan class=comment>/*\n * Function: setColor\n * Usage: setColor(color);\n * -----------------------\n * Sets the color used for drawing.  The color parameter is usually one of\n * the predefined color names from Java:\n *\n *    BLACK,\n *    BLUE,\n *    CYAN,\n *    DARK_GRAY,\n *    GRAY,\n *    GREEN,\n *    LIGHT_GRAY,\n *    MAGENTA,\n *    ORANGE,\n *    PINK,\n *    RED,\n *    WHITE, or\n *    YELLOW.\n *\n * The case of the individual letters in the color name is ignored, as are\n * spaces and underscores, so that the Java color DARK_GRAY could be\n * written as \"Dark Gray\".\n *\n * The color can also be specified as a string in the form \"#rrggbb\" where\n * rr, gg, and bb are pairs of hexadecimal digits indicating the red,\n * green, and blue components of the color.\n */\n</scan>\nvoid setColor(string color);\n\n<a name=\"Function:getColor\"><scan class=comment>/*\n * Function: getColor\n * Usage: string color = getColor();\n * ---------------------------------\n * Returns the current color as a string in the form \"#rrggbb\".  In this\n * string, the values rr, gg, and bb are two-digit hexadecimal values\n * representing the red, green, and blue components of the color,\n * respectively.\n */\n</scan>\nstring getColor();\n\n<a name=\"Function:saveGraphicsState\"><scan class=comment>/*\n * Function: saveGraphicsState\n * Usage: saveGraphicsState();\n * ---------------------------\n * Saves the state of the graphics context.  This function is used in\n * conjunction with restoreGraphicsState() to avoid changing the state set\n * up by the client.\n */\n</scan>\n   void saveGraphicsState();\n\n<a name=\"Function:restoreGraphicsState\"><scan class=comment>/*\n * Function: restoreGraphicsState\n * Usage: restoreGraphicsState();\n * ------------------------------\n * Restores the graphics state from the most recent call to\n * saveGraphicsState().\n */\n</scan>\n   void restoreGraphicsState();\n\n<a name=\"Function:getWindowWidth\"><scan class=comment>/*\n * Function: getWindowWidth\n * Usage: double width = getWindowWidth();\n * ---------------------------------------\n * Returns the width of the graphics window, in pixels.\n */\n</scan>\ndouble getWindowWidth();\n\n<a name=\"Function:getWindowHeight\"><scan class=comment>/*\n * Function: getWindowHeight\n * Usage: double height = getWindowHeight();\n * -----------------------------------------\n * Returns the width of the graphics window, in pixels.\n */\n</scan>\ndouble getWindowHeight();\n\n<a name=\"Function:updateDisplay\"><scan class=comment>/*\n * Function: updateDisplay\n * Usage: updateDisplay();\n * -----------------------\n * Initiates an immediate update of the graphics window.  This call is\n * necessary when the graphics library is used for animation.  Ordinarily,\n * the graphics window is updated only when the program waits for user\n * input.\n */\n</scan>\nvoid updateDisplay();\n\n<a name=\"Function:pause\"><scan class=comment>/*\n * Function: pause\n * Usage: pause(milliseconds);\n * ---------------------------\n * Updates the graphics window and then pauses for the indicated number of\n * milliseconds.  This function is useful for animation where the motion\n * would otherwise be too fast.\n */\n</scan>\nvoid pause(double milliseconds);\n\n#include \"console.h\"\n#include \"private/main.h\"\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/graphics.html",
    "content": "<html>\n<head>\n<title>graphics.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"graphics-h.html\">graphics.h</a></h1>\nThis interface provides access to an extremely simple graphics library\nthat makes it possible to draw lines, rectangles, and ovals.  More\nsophisticated operations and a wider range of graphical objects are\navailable in other libraries that extend these basic facilities, most\nnotably the graphical objects defined by the <code>gobjects.h</code>\ninterface.\n<h2>Functions</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Function:initGraphics\">initGraphics()</a><br><a href=\"#Function:initGraphics\">initGraphics(width,&nbsp;height)</a>&nbsp;</td><td class=indexSynopsis width=100%>Creates the graphics window on the screen.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:drawArc\">drawArc(x,&nbsp;y,&nbsp;width,&nbsp;height,&nbsp;start,&nbsp;sweep)</a>&nbsp;</td><td class=indexSynopsis width=100%>Draws an elliptical arc inscribed in a rectangle.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:fillArc\">fillArc(x,&nbsp;y,&nbsp;width,&nbsp;height,&nbsp;start,&nbsp;sweep)</a>&nbsp;</td><td class=indexSynopsis width=100%>Fills a wedge-shaped area of an elliptical arc.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:drawImage\">drawImage(filename,&nbsp;x,&nbsp;y)</a>&nbsp;</td><td class=indexSynopsis width=100%>Draws the image from the specified file with its upper left corner at the point (<code>x</code>, <code>y</code>).</td></tr>\n<tr><td class=indexKey><a href=\"#Function:drawLine\">drawLine(x0,&nbsp;y0,&nbsp;x1,&nbsp;y1)</a>&nbsp;</td><td class=indexSynopsis width=100%>Draws a line from the point <nobr>(<code>x0</code>,&nbsp;<code>y0</code>)</nobr> to the point <nobr>(<code>x1</code>,&nbsp;<code>y1</code>).</nobr> </td></tr>\n<tr><td class=indexKey><a href=\"#Function:drawOval\">drawOval(x,&nbsp;y,&nbsp;width,&nbsp;height)</a>&nbsp;</td><td class=indexSynopsis width=100%>Draws the frame of a oval with the specified bounds.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:fillOval\">fillOval(x,&nbsp;y,&nbsp;width,&nbsp;height)</a>&nbsp;</td><td class=indexSynopsis width=100%>Fills the frame of a oval with the specified bounds.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:drawRect\">drawRect(x,&nbsp;y,&nbsp;width,&nbsp;height)</a>&nbsp;</td><td class=indexSynopsis width=100%>Draws the frame of a rectangle with the specified bounds.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:fillRect\">fillRect(x,&nbsp;y,&nbsp;width,&nbsp;height)</a>&nbsp;</td><td class=indexSynopsis width=100%>Fills the frame of a rectangle with the specified bounds.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:drawString\">drawString(str,&nbsp;x,&nbsp;y)</a>&nbsp;</td><td class=indexSynopsis width=100%>Draws the string <code>str</code> so that its origin appears at the point (<code>x</code>, <code>y</code>) using the current font and color.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:getStringWidth\">getStringWidth(str)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the width of the string <code>str</code> when displayed in the current font.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:setFont\">setFont(font)</a>&nbsp;</td><td class=indexSynopsis width=100%>Sets a new font.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:getFont\">getFont()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the current font.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:setColor\">setColor(color)</a>&nbsp;</td><td class=indexSynopsis width=100%>Sets the color used for drawing.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:getColor\">getColor()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the current color as a string in the form <code>\"#rrggbb\"</code>.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:saveGraphicsState\">saveGraphicsState()</a>&nbsp;</td><td class=indexSynopsis width=100%>Saves the state of the graphics context.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:restoreGraphicsState\">restoreGraphicsState()</a>&nbsp;</td><td class=indexSynopsis width=100%>Restores the graphics state from the most recent call to <code>saveGraphicsState()</code>.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:getWindowWidth\">getWindowWidth()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the width of the graphics window, in pixels.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:getWindowHeight\">getWindowHeight()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the width of the graphics window, in pixels.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:updateDisplay\">updateDisplay()</a>&nbsp;</td><td class=indexSynopsis width=100%>Initiates an immediate update of the graphics window.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:pause\">pause(milliseconds)</a>&nbsp;</td><td class=indexSynopsis width=100%>Updates the graphics window and then pauses for the indicated number of milliseconds.</td></tr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:initGraphics\"></a>\n<pre class=detailCode>\nvoid initGraphics();\nvoid initGraphics(int width, int height);\n</pre>\n<div class=detailHTML>\nCreates the graphics window on the screen.  The first form\ncreates a window with a default size of 500x300; the second\nallows the client to specify the size of the window.  The call\nto <code>initGraphics</code> must precede any console output\nor calls to other functions in this interface.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ninitGraphics();\ninitGraphics(width, height);\n</pre>\n<hr>\n<a name=\"Function:drawArc\"></a>\n<pre class=detailCode>\nvoid drawArc(double x, double y, double width, double height,\n                                 double start, double sweep);\n</pre>\n<div class=detailHTML>\nDraws an elliptical arc inscribed in a rectangle.   The parameters\n<code>x</code>, <code>y</code>, <code>width</code>, and <code>height</code>\nspecify the coordinates and dimensions of the bounding rectangle.\nThe <code>start</code> parameter indicates the angle at which the\narc begins and is measured in degrees counterclockwise from the\n+<i>x</i> axis.  Thus, a <code>start</code> angle of 0 indicates\nan arc that begins along the line running eastward from the center,\na <code>start</code> angle of 135 begins along the line running\nnorthwest, and a <code>start</code> angle of -90 begins along\nthe line running south.  The <code>sweep</code> parameter indicates\nthe extent of the arc and is also measured in degrees counterclockwise.\nA <code>sweep</code> angle of 90 defines a quarter circle extending\ncounterclockwise from the <code>start</code> angle, and a\n<code>sweep</code> angle of -180 defines a semicircle extending\nclockwise.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndrawArc(x, y, width, height, start, sweep);\n</pre>\n<hr>\n<a name=\"Function:fillArc\"></a>\n<pre class=detailCode>\nvoid fillArc(double x, double y, double width, double height,\n                                 double start, double sweep);\n</pre>\n<div class=detailHTML>\nFills a wedge-shaped area of an elliptical arc.  The parameters are\ninterpreted in the same way as those for <code>drawArc</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfillArc(x, y, width, height, start, sweep);\n</pre>\n<hr>\n<a name=\"Function:drawImage\"></a>\n<pre class=detailCode>\nvoid drawImage(string str, double x, double y);\n</pre>\n<div class=detailHTML>\nDraws the image from the specified file with its upper left corner\nat the point (<code>x</code>, <code>y</code>).\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndrawImage(filename, x, y);\n</pre>\n<hr>\n<a name=\"Function:drawLine\"></a>\n<pre class=detailCode>\nvoid drawLine(double x0, double y0, double x1, double y1);\n</pre>\n<div class=detailHTML>\nDraws a line from the point\n<nobr>(<code>x0</code>,&nbsp;<code>y0</code>)</nobr>\nto the point\n<nobr>(<code>x1</code>,&nbsp;<code>y1</code>).</nobr>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndrawLine(x0, y0, x1, y1);\n</pre>\n<hr>\n<a name=\"Function:drawOval\"></a>\n<pre class=detailCode>\nvoid drawOval(double x, double y, double width, double height);\n</pre>\n<div class=detailHTML>\nDraws the frame of a oval with the specified bounds.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndrawOval(x, y, width, height);\n</pre>\n<hr>\n<a name=\"Function:fillOval\"></a>\n<pre class=detailCode>\nvoid fillOval(double x, double y, double width, double height);\n</pre>\n<div class=detailHTML>\nFills the frame of a oval with the specified bounds.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfillOval(x, y, width, height);\n</pre>\n<hr>\n<a name=\"Function:drawRect\"></a>\n<pre class=detailCode>\nvoid drawRect(double x, double y, double width, double height);\n</pre>\n<div class=detailHTML>\nDraws the frame of a rectangle with the specified bounds.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndrawRect(x, y, width, height);\n</pre>\n<hr>\n<a name=\"Function:fillRect\"></a>\n<pre class=detailCode>\nvoid fillRect(double x, double y, double width, double height);\n</pre>\n<div class=detailHTML>\nFills the frame of a rectangle with the specified bounds.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfillRect(x, y, width, height);\n</pre>\n<hr>\n<a name=\"Function:drawString\"></a>\n<pre class=detailCode>\nvoid drawString(string str, double x, double y);\n</pre>\n<div class=detailHTML>\nDraws the string <code>str</code> so that its origin appears at\nthe point (<code>x</code>, <code>y</code>) using the current\nfont and color.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndrawString(str, x, y);\n</pre>\n<hr>\n<a name=\"Function:getStringWidth\"></a>\n<pre class=detailCode>\ndouble getStringWidth(string str);\n</pre>\n<div class=detailHTML>\nReturns the width of the string <code>str</code> when displayed in\nthe current font.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble width = getStringWidth(str);\n</pre>\n<hr>\n<a name=\"Function:setFont\"></a>\n<pre class=detailCode>\nvoid setFont(string font);\n</pre>\n<div class=detailHTML>\nSets a new font.  The <code>font</code> parameter is a string in the\nform <i>family</i><code>-</code><i>style</i><code>-</code><i>size</i>.\nIn this string, <i>family</i> is the name of the font family;\n<i>style</i> is either missing (indicating a plain font) or one\nof the strings <code>Bold</code>, <code>Italic</code>, or\n<code>BoldItalic</code>; and <code>size</code> is an integer\nindicating the point size.  If any of these components is\nspecified as an asterisk, the existing value is retained.\nThe <code>font</code> parameter can also be a sequence of\nsuch specifications separated by semicolons, in which the\nfirst available font on the system is used.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetFont(font);\n</pre>\n<hr>\n<a name=\"Function:getFont\"></a>\n<pre class=detailCode>\nstring getFont();\n</pre>\n<div class=detailHTML>\nReturns the current font.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring font = getFont();\n</pre>\n<hr>\n<a name=\"Function:setColor\"></a>\n<pre class=detailCode>\nvoid setColor(string color);\n</pre>\n<div class=detailHTML>\nSets the color used for drawing.  The <code>color</code> parameter\nis usually one of the predefined color names from Java:\n\n   <code>BLACK</code>,\n   <code>BLUE</code>,\n   <code>CYAN</code>,\n   <code>DARK_GRAY</code>,\n   <code>GRAY</code>,\n   <code>GREEN</code>,\n   <code>LIGHT_GRAY</code>,\n   <code>MAGENTA</code>,\n   <code>ORANGE</code>,\n   <code>PINK</code>,\n   <code>RED</code>,\n   <code>WHITE</code>, or\n   <code>YELLOW</code>.\n\n<p>The case of the individual letters in the color name is ignored,\nas are spaces and underscores, so that the Java color\n<code>DARK_GRAY</code> could be written as <code>\"Dark Gray\"</code>.\n\n<p>The color can also be specified as a string in the form\n<code>\"#rrggbb\"</code> where <code>rr</code>, <code>gg</code>, and\n<code>bb</code> are pairs of hexadecimal digits indicating the\nred, green, and blue components of the color.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetColor(color);\n</pre>\n<hr>\n<a name=\"Function:getColor\"></a>\n<pre class=detailCode>\nstring getColor();\n</pre>\n<div class=detailHTML>\nReturns the current color as a string in the form <code>\"#rrggbb\"</code>.\nIn this string, the values <code>rr</code>, <code>gg</code>,\nand <code>bb</code> are two-digit hexadecimal values representing\nthe red, green, and blue components of the color, respectively.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring color = getColor();\n</pre>\n<hr>\n<a name=\"Function:saveGraphicsState\"></a>\n<pre class=detailCode>\nvoid saveGraphicsState();\n</pre>\n<div class=detailHTML>\nSaves the state of the graphics context.  This function is used\nin conjunction with <code>restoreGraphicsState()</code> to avoid\nchanging the state set up by the client.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsaveGraphicsState();\n</pre>\n<hr>\n<a name=\"Function:restoreGraphicsState\"></a>\n<pre class=detailCode>\nvoid restoreGraphicsState();\n</pre>\n<div class=detailHTML>\nRestores the graphics state from the most recent call to\n<code>saveGraphicsState()</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nrestoreGraphicsState();\n</pre>\n<hr>\n<a name=\"Function:getWindowWidth\"></a>\n<pre class=detailCode>\ndouble getWindowWidth();\n</pre>\n<div class=detailHTML>\nReturns the width of the graphics window, in pixels.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble width = getWindowWidth();\n</pre>\n<hr>\n<a name=\"Function:getWindowHeight\"></a>\n<pre class=detailCode>\ndouble getWindowHeight();\n</pre>\n<div class=detailHTML>\nReturns the width of the graphics window, in pixels.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble height = getWindowHeight();\n</pre>\n<hr>\n<a name=\"Function:updateDisplay\"></a>\n<pre class=detailCode>\nvoid updateDisplay();\n</pre>\n<div class=detailHTML>\nInitiates an immediate update of the graphics window.  This\ncall is necessary when the graphics library is used for\nanimation.  Ordinarily, the graphics window is updated only\nwhen the program waits for user input.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nupdateDisplay();\n</pre>\n<hr>\n<a name=\"Function:pause\"></a>\n<pre class=detailCode>\nvoid pause(double milliseconds);\n</pre>\n<div class=detailHTML>\nUpdates the graphics window and then pauses for the indicated number\nof milliseconds.  This function is useful for animation where the\nmotion would otherwise be too fast.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\npause(milliseconds);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/grid-h.html",
    "content": "<html>\n<head>\n<title>include/grid.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: grid.h\n * ------------\n * This interface exports the Grid template class, which provides a\n * convenient abstraction for representing two-dimensional arrays.\n */\n</scan>\n#ifndef _grid_h\n#define _grid_h\n\n#include \"error.h\"\n#include \"foreach.h\"\n#include \"strlib.h\"\n\n<a name=\"Class:Grid<ValueType>\"><scan class=comment>/*\n * Class: Grid&lt;ValueType&gt;\n * ----------------------\n * The Grid class stores an indexed, two-dimensional array.  The following\n * function, for example, creates an identity matrix of size n, in which\n * the elements are 1.0 along the main diagonal and 0.0 everywhere else:\n *\n *    Grid&lt;double&gt; createIdentityMatrix(int n) {\n *       Grid&lt;double&gt; matrix(n, n);\n *       for (int i = 0; i &lt; n; i++) {\n *          matrix[i][i] = 1.0;\n *       }\n *       return matrix;\n *    }\n */\n</scan>\ntemplate &lt;typename ValueType&gt;\nclass Grid {\n\npublic:\n\n<scan class=comment>/* Forward reference */</scan>\n   class GridRow;\n\n<a name=\"Constructor:Grid\"><scan class=comment>/*\n * Constructor: Grid\n * Usage: Grid&lt;ValueType&gt; grid;\n *        Grid&lt;ValueType&gt; grid(nRows, nCols);\n * ------------------------------------------\n * Initializes a new grid.  The second form of the constructor is more\n * common and creates a grid with the specified number of rows and columns.\n * Each element of the grid is initialized to the default value for the\n * type.  The default constructor creates an empty grid for which the\n * client must call resize to set the dimensions.\n */\n</scan>\n   Grid();\n   Grid(int nRows, int nCols);\n\n<a name=\"Destructor:~Grid\"><scan class=comment>/*\n * Destructor: ~Grid\n * Usage: (usually implicit)\n * -------------------------\n * Frees any heap storage associated with this grid.\n */\n</scan>\n   ~Grid();\n\n<a name=\"Method:numRows\"><scan class=comment>/*\n * Method: numRows\n * Usage: int nRows = grid.numRows();\n * ----------------------------------\n * Returns the number of rows in the grid.\n */\n</scan>\n   int numRows();\n\n<a name=\"Method:numCols\"><scan class=comment>/*\n * Method: numCols\n * Usage: int nCols = grid.numCols();\n * ----------------------------------\n * Returns the number of columns in the grid.\n */\n</scan>\n   int numCols();\n\n<a name=\"Method:resize\"><scan class=comment>/*\n * Method: resize\n * Usage: grid.resize(nRows, nCols);\n * ---------------------------------\n * Reinitializes the grid to have the specified number of rows and columns.\n * Any previous grid contents are discarded.\n */\n</scan>\n   void resize(int nRows, int nCols);\n\n<a name=\"Method:inBounds\"><scan class=comment>/*\n * Method: inBounds\n * Usage: if (grid.inBounds(row, col)) . . .\n * -----------------------------------------\n * Returns true if the specified row and column position is inside the\n * bounds of the grid.\n */\n</scan>\n   bool inBounds(int row, int col);\n\n<a name=\"Operator:[]\"><scan class=comment>/*\n * Operator: []\n * Usage: value = grid[row][col];\n *        grid[row][col] = value;\n * ------------------------------\n * Overloads [] to select elements from this vector.  This extension\n * enables the use of traditional array notation to get or set individual\n * elements.  This method signals an error if the row and col arguments are\n * outside the grid boundaries.\n */\n</scan>\n   GridRow operator[](int row);\n\n<a name=\"Macro:foreach\"><scan class=comment>/*\n * Macro: foreach\n * Usage: foreach (ValueType value in grid) . . .\n * ----------------------------------------------\n * Iterates over the elements of the grid in row-major order, in which all\n * the elements of row 0 are processed, followed by the elements in row 1,\n * and so on.\n */\n</scan>\n   <scan class=comment>/* The foreach macro is defined in foreach.h */</scan>\n\n<a name=\"Method:mapAll\"><scan class=comment>/*\n * Method: mapAll\n * Usage: grid.mapAll(fn);\n *        grid.mapAll(fn, data);\n * -----------------------------\n * Calls the specified function on each element of the grid.  The elements\n * are processed in row-major order, in which all the elements of row 0 are\n * processed, followed by the elements in row 1, and so on.  The second\n * form of the call allows the client to pass a data value of any type to\n * the callback function.\n */\n</scan>\n   void mapAll(void (*fn)(ValueType value));\n\n   template &lt;typename ClientDataType&gt;\n   void mapAll(void (*fn)(ValueType value, ClientDataType &amp; data),\n               ClientDataType &amp; data);\n\n#include \"private/gridpriv.h\"\n\n};\n\n#include \"private/gridimpl.cpp\"\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/grid.html",
    "content": "<html>\n<head>\n<title>grid.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"grid-h.html\">grid.h</a></h1>\nThis interface exports the <code>Grid</code> template class, which\nprovides a convenient abstraction for representing two-dimensional\narrays.\n<h2>Class</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"Grid-class.html\">Grid&lt;ValueType&gt;</a>&nbsp;</td><td class=indexSynopsis width=100%>The <code>Grid</code> class stores an indexed, two-dimensional array.</td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/gtypes-h.html",
    "content": "<html>\n<head>\n<title>include/gtypes.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: gtypes.h\n * --------------\n * This file defines two classes that are used throughout the graphics\n * library to encapsulate basic geometrical concepts:\n *\n *   GPoint     - A point containing an x and y value\n *   GRectangle - A rectangle with x, y, width, height\n */\n</scan>\n#ifndef _gtypes_h\n#define _gtypes_h\n\n<a name=\"Class:GPoint\"><scan class=comment>/*\n * Class: GPoint\n * -------------\n * This class represents a point on the real-valued graphics plane.\n */\n</scan>\nclass GPoint {\n\npublic:\n\n<a name=\"Constructor:GPoint\"><scan class=comment>/*\n * Constructor: GPoint\n * Usage: GPoint origin;\n *        GPoint pt(x, y);\n * -----------------------\n * Creates a GPoint object with the specified x and y coordinates.  If the\n * coordinates are not supplied, the default constructor sets these fields\n * to 0.\n */\n</scan>\n   GPoint();\n   GPoint(double x, double y);\n\n<a name=\"Method:getX\"><scan class=comment>/*\n * Method: getX\n * Usage: double x = pt.getX();\n * ----------------------------\n * Returns the x component of the point.\n */\n</scan>\n   double getX();\n\n<a name=\"Method:getY\"><scan class=comment>/*\n * Method: getY\n * Usage: double y = pt.getY();\n * ----------------------------\n * Returns the y component of the point.\n */\n</scan>\n   double getY();\n\n<a name=\"Method:toString\"><scan class=comment>/*\n * Method: toString\n * Usage: string str = pt.toString();\n * ----------------------------------\n * Converts the GPoint to a string in the form \"(x, y)\".\n */\n</scan>\n   string toString();\n\n#include \"private/gpointpriv.h\"\n\n};\n\n<a name=\"Class:GRectangle\"><scan class=comment>/*\n * Class: GRectangle\n * -----------------\n * This class represents a rectangle on the graphics plane and is\n * conventionally used to denote the bounding box for an object.\n */\n</scan>\nclass GRectangle {\n\npublic:\n\n<a name=\"Constructor:GRectangle\"><scan class=comment>/*\n * Constructor: GRectangle\n * Usage: GRectangle empty;\n *        GRectangle r(x, y, width, height);\n * -----------------------------------------\n * Creates a GRectangle object with the specified components.  If these\n * parameters are not supplied, the default constructor sets these fields\n * to 0.\n */\n</scan>\n   GRectangle();\n   GRectangle(double x, double y, double width, double height);\n\n<a name=\"Method:getX\"><scan class=comment>/*\n * Method: getX\n * Usage: double x = r.getX();\n * ---------------------------\n * Returns the x component of the rectangle.\n */\n</scan>\n   double getX();\n\n<a name=\"Method:getY\"><scan class=comment>/*\n * Method: getY\n * Usage: double y = pt.getY();\n * ----------------------------\n * Returns the y component of the rectangle.\n */\n</scan>\n   double getY();\n\n<a name=\"Method:getWidth\"><scan class=comment>/*\n * Method: getWidth\n * Usage: double width = r.getWidth();\n * -----------------------------------\n * Returns the width component of the rectangle.\n */\n</scan>\n   double getWidth();\n\n<a name=\"Method:getHeight\"><scan class=comment>/*\n * Method: getHeight\n * Usage: double height = pt.getHeight();\n * --------------------------------------\n * Returns the height component of the rectangle.\n */\n</scan>\n   double getHeight();\n\n<a name=\"Method:isEmpty\"><scan class=comment>/*\n * Method: isEmpty\n * Usage: if (r.isEmpty()) . . .\n * -----------------------------\n * Returns true if the rectangle is empty.\n */\n</scan>\n   bool isEmpty();\n\n<a name=\"Method:contains\"><scan class=comment>/*\n * Method: contains\n * Usage: if (r.contains(pt)) . . .\n *        if (r.contains(x, y)) . . .\n * ----------------------------------\n * Returns true if the rectangle contains the given point, which may be\n * specified either as a point or as distinct coordinates.\n */\n</scan>\n   bool contains(GPoint pt);\n   bool contains(double x, double y);\n\n<a name=\"Method:toString\"><scan class=comment>/*\n * Method: toString\n * Usage: string str = r.toString();\n * ---------------------------------\n * Converts the GRectangle to a string in the form \"(x, y, width, height)\".\n */\n</scan>\n   string toString();\n\n#include \"private/grectanglepriv.h\"\n\n};\n\n#include \"private/gtypescompare.h\"\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/gtypes.html",
    "content": "<html>\n<head>\n<title>gtypes.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"gtypes-h.html\">gtypes.h</a></h1>\nThis file defines two classes that are used throughout the graphics\nlibrary to encapsulate basic geometrical concepts:\n\n<pre>\n  GPoint     - A point containing an x and y value\n  GRectangle - A rectangle with x, y, width, height\n</pre>\n<h2>Classes</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"GPoint-class.html\">GPoint</a>&nbsp;</td><td class=indexSynopsis width=100%>This class represents a point on the real-valued graphics plane.</td></tr>\n<tr><td class=indexKey><a href=\"GRectangle-class.html\">GRectangle</a>&nbsp;</td><td class=indexSynopsis width=100%>This class represents a rectangle on the graphics plane and is conventionally used to denote the bounding box for an object.</td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/gwindow-h.html",
    "content": "<html>\n<head>\n<title>include/gwindow.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: gwindow.h\n * ---------------\n * This class defines a graphics window.\n */\n</scan>\n#ifndef _gwindow_h\n#define _gwindow_h\n\n#include &lt;string&gt;\n#include \"gobjects.h\"\n\n<a name=\"Class:GWindow\"><scan class=comment>/*\n * Class: GWindow\n * --------------\n * This class represents a graphics window that can be displayed on the\n * screen.  The public GWindow class stores only a reference to the\n * internal data stored inside the machine-specific implementation, so that\n * GWindow objects can be freely copied and continue to refer to the same\n * window on the screen.\n */\n</scan>\nclass GWindow {\n\npublic:\n\n<a name=\"Constructor:GWindow\"><scan class=comment>/*\n * Constructor: GWindow\n * Usage: GWindow gw;\n *        GWindow gw(width, height);\n * ---------------------------------\n * Creates a window of the specified size but does not display it on the\n * screen until the client calls setVisible(true).  The default constructor\n * creates a closed window that cannot be used until a valid window is\n * assigned to it.\n */\n</scan>\n   GWindow();\n   GWindow(double width, double height);\n\n<a name=\"Method:close\"><scan class=comment>/*\n * Method: close\n * Usage: gw.close();\n * ------------------\n * Deletes the window from the screen.  Calling any method on a window that\n * has been closed generates an error.\n */\n</scan>\n   void close();\n\n<a name=\"Method:draw\"><scan class=comment>/*\n * Method: draw\n * Usage: gw.draw(obj)\n *        gw.draw(obj, x, y);\n * --------------------------\n * Draws the specified object into the window.  The second form moves the\n * object to the point (x, y) before drawing it.\n */\n</scan>\n   void draw(GObject obj);\n   void draw(GObject obj, double x, double y);\n\n<a name=\"Method:add\"><scan class=comment>/*\n * Method: add\n * Usage: gw.add(obj);\n *        gw.add(obj, x, y);\n * -------------------------\n * Adds the specified GObject to the end of the display list for this\n * window.  The second form moves the object to the point (x, y) before\n * adding it to the window.\n */\n</scan>\n   void add(GObject obj);\n   void add(GObject obj, double x, double y);\n\n<a name=\"Method:remove\"><scan class=comment>/*\n * Method: remove\n * Usage: gw.remove(obj);\n * ----------------------\n * Removes the specified GObject from the graphics window.\n */\n</scan>\n   void remove(GObject obj);\n\n<a name=\"Method:setVisible\"><scan class=comment>/*\n * Method: setVisible\n * Usage: gw.setVisible(flag);\n * ---------------------------\n * Determines whether the window is visible on the screen.  Windows are\n * created in an invisible state and must be made visible before they\n * appear.\n */\n</scan>\n   void setVisible(bool flag);\n\n<a name=\"Method:isVisible\"><scan class=comment>/*\n * Method: isVisible\n * Usage: if (gw.isVisible()) . . .\n * --------------------------------\n * Tests whether the window is visible.\n */\n</scan>\n   bool isVisible();\n\n<a name=\"Method:setColor\"><scan class=comment>/*\n * Method: setColor\n * Usage: gw.setColor(color);\n * --------------------------\n * Sets the color used for drawing.  The color parameter is usually one of\n * the predefined color names from Java:\n *\n *    BLACK,\n *    BLUE,\n *    CYAN,\n *    DARK_GRAY,\n *    GRAY,\n *    GREEN,\n *    LIGHT_GRAY,\n *    MAGENTA,\n *    ORANGE,\n *    PINK,\n *    RED,\n *    WHITE, or\n *    YELLOW.\n *\n * The case of the individual letters in the color name is ignored, as are\n * spaces and underscores, so that the Java color DARK_GRAY could be\n * written as \"Dark Gray\".\n *\n * The color can also be specified as a string in the form \"#rrggbb\" where\n * rr, gg, and bb are pairs of hexadecimal digits indicating the red,\n * green, and blue components of the color.\n */\n</scan>\n   void setColor(string color);\n\n<a name=\"Method:getColor\"><scan class=comment>/*\n * Method: getColor\n * Usage: string color = gw.getColor();\n * ------------------------------------\n * Returns the current color as a string in the form \"#rrggbb\" where rr,\n * gg, and bb are 2-digit hexadecimal numbers.\n */\n</scan>\n   string getColor();\n\n<a name=\"Method:setFont\"><scan class=comment>/*\n * Method: setFont\n * Usage: gw.setFont(font);\n * ------------------------\n * Sets a new font according to the font parameter, which is typically a\n * string in the form family-style-size.  In this string, family is the\n * name of the font family; style is either missing (indicating a plain\n * font) or one of the strings Bold, Italic, or BoldItalic; and size is an\n * integer indicating the point size.  If any of these components is\n * specified as an asterisk, the existing value is retained.  The font\n * parameter can also be a sequence of such specifications separated by\n * semicolons, in which the first available font on the system is used.\n */\n</scan>\n   void setFont(string font);\n\n<a name=\"Method:getFont\"><scan class=comment>/*\n * Method: getFont\n * Usage: string font = gw.getFont();\n * ----------------------------------\n * Returns the current font, as set by the most recent call to setFont.\n */\n</scan>\n   string getFont();\n\n<a name=\"Method:saveGraphicsState\"><scan class=comment>/*\n * Method: saveGraphicsState\n * Usage: gw.saveGraphicsState();\n * ------------------------------\n * Saves the state of the graphics context.  This method is used in\n * conjunction with restoreGraphicsState() to avoid changing the state set\n * up by the client.\n */\n</scan>\n   void saveGraphicsState();\n\n<a name=\"Method:restoreGraphicsState\"><scan class=comment>/*\n * Method: restoreGraphicsState\n * Usage: gw.restoreGraphicsState();\n * ---------------------------------\n * Restores the graphics state from the most recent call to\n * saveGraphicsState().\n */\n</scan>\n   void restoreGraphicsState();\n\n<a name=\"Method:getGObjectAt\"><scan class=comment>/*\n * Method: getGObjectAt\n * Usage: GObject obj = gw.getGObjectAt(pt);\n *        GObject obj = gw.getGObjectAt(x, y);\n * -------------------------------------------\n * Returns the topmost object in the window that contains the specified\n * point.  If no such object exists, this function returns an uninitialized\n * GObject.  The pattern for using getGObjectAt looks like this:\n *\n *    GObject obj = gw.getGObjectAt(x, y);\n *    if (obj.exists()) . . .\n */\n</scan>\n   GObject getGObjectAt(GPoint pt);\n   GObject getGObjectAt(double x, double y);\n\n<a name=\"Method:getWindowWidth\"><scan class=comment>/*\n * Method: getWindowWidth\n * Usage: double width = gw.getWindowWidth();\n * ------------------------------------------\n * Returns the width of the graphics window, in pixels.\n */\n</scan>\n   double getWindowWidth();\n\n<a name=\"Method:getWindowHeight\"><scan class=comment>/*\n * Method: getWindowHeight\n * Usage: double height = gw.getWindowHeight();\n * --------------------------------------------\n * Returns the width of the graphics window, in pixels.\n */\n</scan>\n   double getWindowHeight();\n\n<a name=\"Method:repaint\"><scan class=comment>/*\n * Method: repaint\n * Usage: gw.repaint();\n * --------------------\n * Schedule a repaint on this window.\n */\n</scan>\n   void repaint();\n\n<a name=\"Method:updateDisplay\"><scan class=comment>/*\n * Method: updateDisplay\n * Usage: gw.updateDisplay();\n * --------------------------\n * Initiates an immediate update of the graphics window.\n */\n</scan>\n   void updateDisplay();\n\n<a name=\"Method:setWindowTitle\"><scan class=comment>/*\n * Method: setWindowTitle\n * Usage: gw.setWindowTitle(title);\n * --------------------------------\n * Sets the title of the graphics window.\n */\n</scan>\n   void setWindowTitle(string title);\n\n<a name=\"Method:getWindowTitle\"><scan class=comment>/*\n * Method: getWindowTitle\n * Usage: string title = gw.getWindowTitle();\n * ------------------------------------------\n * Returns the title of the graphics window.\n */\n</scan>\n   string getWindowTitle();\n\n<a name=\"Method:getTopLevelCompound\"><scan class=comment>/*\n * Method: getTopLevelCompound\n * Usage: GCompound compound = getTopLevelCompound();\n * --------------------------------------------------\n * Returns the top-level GCompound for this window.\n */\n</scan>\n   GCompound getTopLevelCompound();\n\n#include \"private/gwindowpriv.h\"\n\n};\n\n<scan class=comment>/* Global functions that operate on the primary graphics window */</scan>\n\n<a name=\"Function:getGObjectAt\"><scan class=comment>/*\n * Function: getGObjectAt\n * Usage: GObject obj = getGObjectAt(pt);\n *        GObject obj = getGObjectAt(x, y);\n * ----------------------------------------\n * Returns the topmost object in the primary window containing the\n * specified point.  If no such object exists, this function returns an\n * uninitialized GObject.  The pattern for using getGObjectAt is:\n *\n *    GObject obj = getGObjectAt(x, y);\n *    if (obj.exists()) . . .\n */\n</scan>\nGObject getGObjectAt(GPoint pt);\nGObject getGObjectAt(double x, double y);\n\n<a name=\"Function:setWindowTitle\"><scan class=comment>/*\n * Function: setWindowTitle\n * Usage: setWindowTitle(title);\n * -----------------------------\n * Sets the title of the primary graphics window.\n */\n</scan>\nvoid setWindowTitle(string title);\n\n<a name=\"Function:getWindowTitle\"><scan class=comment>/*\n * Function: getWindowTitle\n * Usage: string title = getWindowTitle();\n * ---------------------------------------\n * Returns the title of the primary graphics window.\n */\n</scan>\nstring getWindowTitle();\n\n<a name=\"Function:getFullScreenWidth\"><scan class=comment>/*\n * Function: getFullScreenWidth\n * Usage: width = getFullScreenWidth();\n * ------------------------------------\n * Returns the width of the entire display screen.\n */\n</scan>\ndouble getFullScreenWidth();\n\n<a name=\"Function:getFullScreenHeight\"><scan class=comment>/*\n * Function: getFullScreenHeight\n * Usage: height = getFullScreenHeight();\n * --------------------------------------\n * Returns the height of the entire display screen.\n */\n</scan>\ndouble getFullScreenHeight();\n\n<a name=\"Function:exitGraphics\"><scan class=comment>/*\n * Function: exitGraphics\n * Usage: exitGraphics();\n * ----------------------\n * Closes the graphics window and exits from the application without\n * waiting for any additional user interaction.\n */\n</scan>\nvoid exitGraphics();\n\n<a name=\"Function:getGraphicsWindow\"><scan class=comment>/*\n * Function: getGraphicsWindow\n * Usage: GWindow gw = getGraphicsWindow();\n * ----------------------------------------\n * Returns a reference to the graphics window created by initGraphics.\n */\n</scan>\nGWindow &amp; getGraphicsWindow();\n\n<a name=\"Function:convertColorToRGB\"><scan class=comment>/*\n * Function: convertColorToRGB\n * Usage: int rgb = convertColorToRGB(colorName);\n * ----------------------------------------------\n * Converts a color name into an integer that encodes the red, green, and\n * blue components of the color.\n */\n</scan>\nint convertColorToRGB(string colorName);\n\n<a name=\"Function:convertRGBToColor\"><scan class=comment>/*\n * Function: convertRGBToColor\n * Usage: int colorName = convertRGBToColor(rgb);\n * ----------------------------------------------\n * Converts an rgb value into a color name in the form \"#rrggbb\".  Each of\n * the rr, gg, and bb values are two-digit hexadecimal numbers indicating\n * the intensity of that component.\n */\n</scan>\nstring convertRGBToColor(int rgb);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/gwindow.html",
    "content": "<html>\n<head>\n<title>gwindow.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"gwindow-h.html\">gwindow.h</a></h1>\nThis class defines a graphics window.\n<h2>Class</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"GWindow-class.html\">GWindow</a>&nbsp;</td><td class=indexSynopsis width=100%>This class represents a graphics window that can be displayed on the screen.</td></tr>\n</table>\n<h2>Functions</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Function:getGObjectAt\">getGObjectAt(pt)</a><br><a href=\"#Function:getGObjectAt\">getGObjectAt(x,&nbsp;y)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the topmost object in the primary window containing the specified point.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:setWindowTitle\">setWindowTitle(title)</a>&nbsp;</td><td class=indexSynopsis width=100%>Sets the title of the primary graphics window.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:getWindowTitle\">getWindowTitle()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the title of the primary graphics window.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:getFullScreenWidth\">getFullScreenWidth()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the width of the entire display screen.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:getFullScreenHeight\">getFullScreenHeight()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the height of the entire display screen.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:exitGraphics\">exitGraphics()</a>&nbsp;</td><td class=indexSynopsis width=100%>Closes the graphics window and exits from the application without waiting for any additional user interaction.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:getGraphicsWindow\">getGraphicsWindow()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns a reference to the graphics window created by <code>initGraphics</code>.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:convertColorToRGB\">convertColorToRGB(colorName)</a>&nbsp;</td><td class=indexSynopsis width=100%>Converts a color name into an integer that encodes the red, green, and blue components of the color.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:convertRGBToColor\">convertRGBToColor(rgb)</a>&nbsp;</td><td class=indexSynopsis width=100%>Converts an <code>rgb</code> value into a color name in the form <code>\"#rrggbb\"</code>.</td></tr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:getGObjectAt\"></a>\n<pre class=detailCode>\nGObject getGObjectAt(GPoint pt);\nGObject getGObjectAt(double x, double y);\n</pre>\n<div class=detailHTML>\nReturns the topmost object in the primary window containing the\nspecified point.  If no such object exists, this function returns\nan uninitialized <code>GObject</code>.  The pattern for using\n<code>getGObjectAt</code> is:\n\n<pre>\n   GObject obj = getGObjectAt(x, y);\n   if (obj.exists()) . . .\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGObject obj = getGObjectAt(pt);\nGObject obj = getGObjectAt(x, y);\n</pre>\n<hr>\n<a name=\"Function:setWindowTitle\"></a>\n<pre class=detailCode>\nvoid setWindowTitle(string title);\n</pre>\n<div class=detailHTML>\nSets the title of the primary graphics window.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetWindowTitle(title);\n</pre>\n<hr>\n<a name=\"Function:getWindowTitle\"></a>\n<pre class=detailCode>\nstring getWindowTitle();\n</pre>\n<div class=detailHTML>\nReturns the title of the primary graphics window.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring title = getWindowTitle();\n</pre>\n<hr>\n<a name=\"Function:getFullScreenWidth\"></a>\n<pre class=detailCode>\ndouble getFullScreenWidth();\n</pre>\n<div class=detailHTML>\nReturns the width of the entire display screen.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nwidth = getFullScreenWidth();\n</pre>\n<hr>\n<a name=\"Function:getFullScreenHeight\"></a>\n<pre class=detailCode>\ndouble getFullScreenHeight();\n</pre>\n<div class=detailHTML>\nReturns the height of the entire display screen.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nheight = getFullScreenHeight();\n</pre>\n<hr>\n<a name=\"Function:exitGraphics\"></a>\n<pre class=detailCode>\nvoid exitGraphics();\n</pre>\n<div class=detailHTML>\nCloses the graphics window and exits from the application without\nwaiting for any additional user interaction.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nexitGraphics();\n</pre>\n<hr>\n<a name=\"Function:getGraphicsWindow\"></a>\n<pre class=detailCode>\nGWindow &amp; getGraphicsWindow();\n</pre>\n<div class=detailHTML>\nReturns a reference to the graphics window created by\n<code>initGraphics</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGWindow gw = getGraphicsWindow();\n</pre>\n<hr>\n<a name=\"Function:convertColorToRGB\"></a>\n<pre class=detailCode>\nint convertColorToRGB(string colorName);\n</pre>\n<div class=detailHTML>\nConverts a color name into an integer that encodes the\nred, green, and blue components of the color.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint rgb = convertColorToRGB(colorName);\n</pre>\n<hr>\n<a name=\"Function:convertRGBToColor\"></a>\n<pre class=detailCode>\nstring convertRGBToColor(int rgb);\n</pre>\n<div class=detailHTML>\nConverts an <code>rgb</code> value into a color name in the\nform <code>\"#rrggbb\"</code>.  Each of the <code>rr</code>,\n<code>gg</code>, and <code>bb</code> values are two-digit\nhexadecimal numbers indicating the intensity of that component.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint colorName = convertRGBToColor(rgb);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/lexicon-h.html",
    "content": "<html>\n<head>\n<title>include/lexicon.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: lexicon.h\n * ---------------\n * This interface exports the Lexicon class, which is a compact structure\n * for storing a list of words.\n */\n</scan>\n#ifndef _lexicon_h\n#define _lexicon_h\n\n#include \"foreach.h\"\n#include \"set.h\"\n#include \"stack.h\"\n\n<a name=\"Class:Lexicon\"><scan class=comment>/*\n * Class: Lexicon\n * --------------\n * This class is used to represent a lexicon, or word list.  The main\n * difference between a lexicon and a dictionary is that a lexicon does not\n * provide any mechanism for storing definitions; the lexicon contains only\n * words, with no associated information.  It is therefore similar to a set\n * of strings, but with a more space-efficient internal representation. \n * The Lexicon class supports efficient lookup operations for words and\n * prefixes.\n */\n</scan>\n#include &lt;cctype&gt;\n\nclass Lexicon {\n\npublic:\n\n<a name=\"Constructor:Lexicon\"><scan class=comment>/*\n * Constructor: Lexicon\n * Usage: Lexicon lex;\n *        Lexicon lex(filename);\n * -----------------------------\n * Initializes a new lexicon.  The default constructor creates an empty\n * lexicon.  The second form reads in the contents of the lexicon from the\n * specified data file.  The data file must be in one of two formats: (1) a\n * space-efficient precompiled binary format or (2) a text file containing\n * one word per line.  The Stanford library distribution includes a binary\n * lexicon file named English.dat containing a list of words in English. \n * The standard code pattern to initialize that lexicon looks like this:\n *\n *    Lexicon english(\"English.dat\");\n */\n</scan>\n   Lexicon();\n   Lexicon(string filename);\n\n<a name=\"Destructor:~Lexicon\"><scan class=comment>/*\n * Destructor: ~Lexicon\n * Usage: (usually implicit)\n * -------------------------\n * The destructor deallocates any storage associated with the lexicon.\n */\n</scan>\n   ~Lexicon();\n\n<a name=\"Method:size\"><scan class=comment>/*\n * Method: size\n * Usage: int n = lex.size();\n * --------------------------\n * Returns the number of words contained in the lexicon.\n */\n</scan>\n   int size();\n\n<a name=\"Method:isEmpty\"><scan class=comment>/*\n * Method: isEmpty\n * Usage: if (lex.isEmpty()) . . .\n * -------------------------------\n * Returns true if the lexicon contains no words.\n */\n</scan>\n   bool isEmpty();\n\n<a name=\"Method:clear\"><scan class=comment>/*\n * Method: clear\n * Usage: lex.clear();\n * -------------------\n * Removes all words from the lexicon.\n */\n</scan>\n   void clear();\n\n<a name=\"Method:add\"><scan class=comment>/*\n * Method: add\n * Usage: lex.add(word);\n * ---------------------\n * Adds the specified word to the lexicon.\n */\n</scan>\n   void add(string word);\n\n<a name=\"Method:addWordsFromFile\"><scan class=comment>/*\n * Method: addWordsFromFile\n * Usage: lex.addWordsFromFile(filename);\n * --------------------------------------\n * Reads the file and adds all of its words to the lexicon.\n */\n</scan>\n   void addWordsFromFile(string filename);\n\n<a name=\"Method:containsWord\"><scan class=comment>/*\n * Method: containsWord\n * Usage: if (lex.containsWord(word)) . . .\n * ----------------------------------------\n * Returns true if word is contained in the lexicon.  In the Lexicon class,\n * the case of letters is ignored, so \"Zoo\" is the same as \"ZOO\" or \"zoo\".\n */\n</scan>\n   bool containsWord(string word);\n\n<a name=\"Method:containsPrefix\"><scan class=comment>/*\n * Method: containsPrefix\n * Usage: if (lex.containsPrefix(prefix)) . . .\n * --------------------------------------------\n * Returns true if any words in the lexicon begin with prefix.  Like\n * containsWord, this method ignores the case of letters so that \"MO\" is a\n * prefix of \"monkey\" or \"Monday\".\n */\n</scan>\n   bool containsPrefix(string prefix);\n\n<a name=\"Macro:foreach\"><scan class=comment>/*\n * Macro: foreach\n * Usage: foreach (string word in lexicon) . . .\n * ---------------------------------------------\n * Iterates over the words in the lexicon in alphabetical order.\n */\n</scan>\n   <scan class=comment>/* The foreach macro is defined in foreach.h */</scan>\n\n<a name=\"Method:mapAll\"><scan class=comment>/*\n * Method: mapAll\n * Usage: lexicon.mapAll(fn);\n *        lexicon.mapAll(fn, data);\n * --------------------------------\n * Calls the specified function on each word in the lexicon.  The second\n * form of the call allows the client to pass a data value of any type to\n * the callback function.\n */\n</scan>\n   void mapAll(void (*fn)(string value));\n\n   template &lt;typename ClientDataType&gt;\n   void mapAll(void (*fn)(string value, ClientDataType &amp; data),\n               ClientDataType &amp; data);\n\n#include \"private/lexiconpriv.h\"\n\n};\n\n#include \"private/lexiconimpl.cpp\"\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/lexicon.html",
    "content": "<html>\n<head>\n<title>lexicon.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"lexicon-h.html\">lexicon.h</a></h1>\nThis interface exports the <code>Lexicon</code> class, which is a\ncompact structure for storing a list of words.\n<h2>Class</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"Lexicon-class.html\">Lexicon</a>&nbsp;</td><td class=indexSynopsis width=100%>This class is used to represent a <i>lexicon,</i> or word list.</td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/map-h.html",
    "content": "<html>\n<head>\n<title>include/map.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: map.h\n * -----------\n * This interface exports the template class Map, which maintains a\n * collection of key-value pairs.\n */\n</scan>\n#ifndef _map_h\n#define _map_h\n\n#include &lt;cstdlib&gt;\n#include \"cmpfn.h\"\n#include \"error.h\"\n#include \"foreach.h\"\n#include \"stack.h\"\n\n<a name=\"Class:Map<KeyType,ValueType>\"><scan class=comment>/*\n * Class: Map&lt;KeyType,ValueType&gt;\n * -----------------------------\n * The Map class maintains an association between keys and values.  The\n * types used for keys and values are specified using templates, which\n * makes it possible to use this structure with any data type.\n */\n</scan>\ntemplate &lt;typename KeyType, typename ValueType&gt;\nclass Map {\n\npublic:\n\n<a name=\"Constructor:Map\"><scan class=comment>/*\n * Constructor: Map\n * Usage: Map&lt;KeyType,ValueType&gt; map;\n *        Map&lt;KeyType,ValueType&gt; map(cmpFn);\n * -----------------------------------------\n * Initializes a new empty map that associates keys and values of the\n * specified types.  The optional argument specifies a comparison function,\n * which is called to compare data values.  This argument is typically\n * omitted, in which case the implementation uses the operatorCmp function\n * from cmpfn.h, which applies the built-in operators &lt; and == to determine\n * the ordering.\n */\n</scan>\n   Map(int (*cmpFn)(KeyType, KeyType) = operatorCmp);\n\n<a name=\"Destructor:~Map\"><scan class=comment>/*\n * Destructor: ~Map\n * Usage: (usually implicit)\n * -------------------------\n * Frees any heap storage associated with this map.\n */\n</scan>\n   ~Map();\n\n<a name=\"Method:size\"><scan class=comment>/*\n * Method: size\n * Usage: int nEntries = map.size();\n * ---------------------------------\n * Returns the number of entries in this map.\n */\n</scan>\n   int size();\n\n<a name=\"Method:isEmpty\"><scan class=comment>/*\n * Method: isEmpty\n * Usage: if (map.isEmpty()) . . .\n * -------------------------------\n * Returns true if this map contains no entries.\n */\n</scan>\n   bool isEmpty();\n\n<a name=\"Method:put\"><scan class=comment>/*\n * Method: put\n * Usage: map.put(key, value);\n * ---------------------------\n * Associates key with value in this map.  Any previous value associated\n * with key is replaced by the new value.\n */\n</scan>\n   void put(KeyType key, ValueType value);\n\n<a name=\"Method:get\"><scan class=comment>/*\n * Method: get\n * Usage: ValueType value = map.get(key);\n * --------------------------------------\n * Returns the value associated with key in this map.  If key is not found,\n * the get method signals an error.\n */\n</scan>\n   ValueType get(KeyType key);\n\n<a name=\"Method:containsKey\"><scan class=comment>/*\n * Method: containsKey\n * Usage: if (map.containsKey(key)) . . .\n * --------------------------------------\n * Returns true if there is an entry for key in this map.\n */\n</scan>\n   bool containsKey(KeyType key);\n\n<a name=\"Method:remove\"><scan class=comment>/*\n * Method: remove\n * Usage: map.remove(key);\n * -----------------------\n * Removes any entry for key from this map.\n */\n</scan>\n   void remove(KeyType key);\n\n<a name=\"Method:clear\"><scan class=comment>/*\n * Method: clear\n * Usage: map.clear();\n * -------------------\n * Removes all entries from this map.\n */\n</scan>\n   void clear();\n\n<a name=\"Operator:[]\"><scan class=comment>/*\n * Operator: []\n * Usage: oldValue = map[key];\n *        map[key] = newValue;\n * ---------------------------\n * Selects the value associated with key.  This syntax makes it easy to\n * think of a map as an \"associative array\" indexed by the key type.  If\n * key is already present in the map, this function returns a reference to\n * its associated value.  If key is not present in the map, a new entry is\n * created whose value is set to the default for the value type.\n */\n</scan>\n   ValueType &amp; operator[](KeyType key);\n\n<a name=\"Macro:foreach\"><scan class=comment>/*\n * Macro: foreach\n * Usage: foreach (KeyType key in map) . . .\n * -----------------------------------------\n * Iterates over the keys in the map. The keys are processed in ascending\n * order, as defined by the comparison function.\n */\n</scan>\n   <scan class=comment>/* The foreach macro is defined in foreach.h */</scan>\n\n<a name=\"Method:mapAll\"><scan class=comment>/*\n * Method: mapAll\n * Usage: map.mapAll(fn);\n *        map.mapAll(fn, data);\n * ----------------------------\n * Iterates through the keys in this map and calls fn(key) for each one. \n * The keys are processed in ascending order, as defined by the comparison\n * function.  The second form of the call allows the client to pass a data\n * value of any type to the callback function.\n */\n</scan>\n   void mapAll(void (*fn)(KeyType key));\n\n   template &lt;typename ClientDataType&gt;\n   void mapAll(void (*fn)(KeyType, ClientDataType &amp;), ClientDataType &amp; data);\n\n#include \"private/mappriv.h\"\n\n};\n\n#include \"private/mapimpl.cpp\"\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/map.html",
    "content": "<html>\n<head>\n<title>map.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"map-h.html\">map.h</a></h1>\nThis interface exports the template class <code>Map</code>, which\nmaintains a collection of <i>key</i>-<i>value</i> pairs.\n<h2>Class</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"Map-class.html\">Map&lt;KeyType,ValueType&gt;</a>&nbsp;</td><td class=indexSynopsis width=100%>The <code>Map</code> class maintains an association between keys and values.</td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/point-h.html",
    "content": "<html>\n<head>\n<title>include/point.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: point.h\n * -------------\n * This interface exports a simple class that represents an integer-valued\n * x-y pair.\n */\n</scan>\n#ifndef _point_h\n#define _point_h\n\n<a name=\"Class:Point\"><scan class=comment>/*\n * Class: Point\n * ------------\n * This class represents an x-y coordinate point on a two-dimensional\n * integer grid.  If you need to work with real-valued points, you should\n * use the gtypes.h interface instead.\n */\n</scan>\nclass Point {\n\npublic:\n\n<a name=\"Constructor:Point\"><scan class=comment>/*\n * Constructor: Point\n * Usage: Point origin;\n *        Point pt(x, y);\n * ----------------------\n * Creates a Point object with the specified x and y coordinates.  If the\n * coordinates are not supplied, the default constructor sets these fields\n * to 0.\n */\n</scan>\n   Point();\n   Point(int x, int y);\n\n<a name=\"Method:getX\"><scan class=comment>/*\n * Method: getX\n * Usage: int x = pt.getX();\n * -------------------------\n * Returns the x-coordinate of the point.\n */\n</scan>\n   int getX();\n\n<a name=\"Method:getY\"><scan class=comment>/*\n * Method: getY\n * Usage: int y = pt.getY();\n * -------------------------\n * Returns the y-coordinate of the point.\n */\n</scan>\n   int getY();\n\n<a name=\"Method:toString\"><scan class=comment>/*\n * Method: toString\n * Usage: string str = pt.toString();\n * ----------------------------------\n * Returns a string representation of the Point in the form \"(x, y)\".\n */\n</scan>\n   string toString();\n\nprivate:\n\n   int xc;                    <scan class=comment>/* The x-coordinate of the Point */</scan>\n   int yc;                    <scan class=comment>/* The y-coordinate of the Point */</scan>\n\n};\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/point.html",
    "content": "<html>\n<head>\n<title>point.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"point-h.html\">point.h</a></h1>\nThis interface exports a simple class that represents an integer-valued\nx-y pair.\n<h2>Class</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"Point-class.html\">Point</a>&nbsp;</td><td class=indexSynopsis width=100%>This class represents an <i>x</i>-<i>y</i> coordinate point on a two-dimensional integer grid.</td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/queue-h.html",
    "content": "<html>\n<head>\n<title>include/queue.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: queue.h\n * -------------\n * This interface exports the Queue class, a collection in which values are\n * ordinarily processed in a first-in/first-out (FIFO) order.  This version\n * of the queue.h interface also supports priority queues.\n */\n</scan>\n#ifndef _queue_h\n#define _queue_h\n\n#include \"error.h\"\n#include \"vector.h\"\n\n<a name=\"Class:Queue<ValueType>\"><scan class=comment>/*\n * Class: Queue&lt;ValueType&gt;\n * -----------------------\n * This class models a linear structure called a queue in which values are\n * added at one end and removed from the other.  This discipline gives rise\n * to a first-in/first-out behavior (FIFO) that is the defining feature of\n * queues.  To provide additional flexibility, the Queue class also\n * supports the concept of a priority queue in which elements are returned\n * in priority order.  As in conventional English usage, lower priority\n * numbers correspond to higher effective priorities, so that a priority 1\n * item takes precedence over a priority 2 item.\n */\n</scan>\ntemplate &lt;typename ValueType&gt;\nclass Queue {\n\npublic:\n\n<a name=\"Constructor:Queue\"><scan class=comment>/*\n * Constructor: Queue\n * Usage: Queue&lt;ValueType&gt; queue;\n * ------------------------------\n * Initializes a new empty queue.  The queue operates as a standard\n * first-in/first-out queue unless values are enqueued with a nonzero\n * priority.\n */\n</scan>\n   Queue();\n\n<a name=\"Destructor:~Queue\"><scan class=comment>/*\n * Destructor: ~Queue\n * Usage: (usually implicit)\n * -------------------------\n * Frees any heap storage associated with this queue.\n */\n</scan>\n   ~Queue();\n\n<a name=\"Method:size\"><scan class=comment>/*\n * Method: size\n * Usage: int n = queue.size();\n * ----------------------------\n * Returns the number of values in the queue.\n */\n</scan>\n   int size();\n\n<a name=\"Method:isEmpty\"><scan class=comment>/*\n * Method: isEmpty\n * Usage: if (queue.isEmpty()) . . .\n * ---------------------------------\n * Returns true if the queue contains no elements.\n */\n</scan>\n   bool isEmpty();\n\n<a name=\"Method:clear\"><scan class=comment>/*\n * Method: clear\n * Usage: queue.clear();\n * ---------------------\n * Removes all elements from the queue.\n */\n</scan>\n   void clear();\n\n<a name=\"Method:enqueue\"><scan class=comment>/*\n * Method: enqueue\n * Usage: queue.enqueue(value, priority);\n * --------------------------------------\n * Adds value to the queue with the specified priority.  Lower priority\n * numbers correspond to higher priorities, which means that all priority 1\n * elements are dequeued before any priority 2 elements.  If the priority\n * argument is omitted, elements are added at priority 0.\n */\n</scan>\n   void enqueue(ValueType value, double priority = 0);\n\n<a name=\"Method:dequeue\"><scan class=comment>/*\n * Method: dequeue\n * Usage: ValueType first = queue.dequeue();\n * -----------------------------------------\n * Removes and return the highest priority value.  If multiple entries in\n * the queue have the same priority, those values are dequeued in the same\n * order in which they were enqueued.\n */\n</scan>\n   ValueType dequeue();\n\n<a name=\"Method:peek\"><scan class=comment>/*\n * Method: peek\n * Usage: ValueType first = queue.peek();\n * --------------------------------------\n * Returns the value of highest priority in the queue, without removing it.\n */\n</scan>\n   ValueType peek();\n\n#include \"private/queuepriv.h\"\n\n};\n\n#include \"private/queueimpl.cpp\"\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/queue.html",
    "content": "<html>\n<head>\n<title>queue.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"queue-h.html\">queue.h</a></h1>\nThis interface exports the <code>Queue</code> class, a collection\nin which values are ordinarily processed in a first-in/first-out\n(FIFO) order.  This version of the <code>queue.h</code> interface\nalso supports priority queues.\n<h2>Class</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"Queue-class.html\">Queue&lt;ValueType&gt;</a>&nbsp;</td><td class=indexSynopsis width=100%>This class models a linear structure called a <i>queue</i> in which values are added at one end and removed from the other.</td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/random-h.html",
    "content": "<html>\n<head>\n<title>include/random.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: random.h\n * --------------\n * This interface exports functions for generating pseudorandom numbers.\n */\n</scan>\n#ifndef _random_h\n#define _random_h\n\n<a name=\"Function:randomInteger\"><scan class=comment>/*\n * Function: randomInteger\n * Usage: int n = randomInteger(low, high);\n * ----------------------------------------\n * Returns a random integer in the range low to high, inclusive.\n */\n</scan>\nint randomInteger(int low, int high);\n\n<a name=\"Function:randomReal\"><scan class=comment>/*\n * Function: randomReal\n * Usage: double d = randomReal(low, high);\n * ----------------------------------------\n * Returns a random real number in the half-open interval [low .. high).  A\n * half-open interval includes the first endpoint but not the second, which\n * means that the result is always greater than or equal to low but\n * strictly less than high.\n */\n</scan>\ndouble randomReal(double low, double high);\n\n<a name=\"Function:randomChance\"><scan class=comment>/*\n * Function: randomChance\n * Usage: if (randomChance(p)) . . .\n * ---------------------------------\n * Returns true with the probability indicated by p.  The argument p must\n * be a floating-point number between 0 (never) and 1 (always).  For\n * example, calling randomChance(.30) returns true 30 percent of the time.\n */\n</scan>\nbool randomChance(double p);\n\n<a name=\"Function:setRandomSeed\"><scan class=comment>/*\n * Function: setRandomSeed\n * Usage: setRandomSeed(seed);\n * ---------------------------\n * Sets the internal random number seed to the specified value.  You can\n * use this function to set a specific starting point for the pseudorandom\n * sequence or to ensure that program behavior is repeatable during the\n * debugging phase.\n */\n</scan>\nvoid setRandomSeed(int seed);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/random.html",
    "content": "<html>\n<head>\n<title>random.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"random-h.html\">random.h</a></h1>\nThis interface exports functions for generating pseudorandom numbers.\n<h2>Functions</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Function:randomInteger\">randomInteger(low,&nbsp;high)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns a random integer in the range <code>low</code> to <code>high</code>, inclusive.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:randomReal\">randomReal(low,&nbsp;high)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns a random real number in the half-open interval [<code>low</code>&nbsp;..&nbsp;<code>high</code>).</td></tr>\n<tr><td class=indexKey><a href=\"#Function:randomChance\">randomChance(p)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns <code>true</code> with the probability indicated by <code>p</code>.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:setRandomSeed\">setRandomSeed(seed)</a>&nbsp;</td><td class=indexSynopsis width=100%>Sets the internal random number seed to the specified value.</td></tr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:randomInteger\"></a>\n<pre class=detailCode>\nint randomInteger(int low, int high);\n</pre>\n<div class=detailHTML>\nReturns a random integer in the range <code>low</code> to\n<code>high</code>, inclusive.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint n = randomInteger(low, high);\n</pre>\n<hr>\n<a name=\"Function:randomReal\"></a>\n<pre class=detailCode>\ndouble randomReal(double low, double high);\n</pre>\n<div class=detailHTML>\nReturns a random real number in the half-open interval\n[<code>low</code>&nbsp;..&nbsp;<code>high</code>).  A half-open\ninterval includes the first endpoint but not the second, which\nmeans that the result is always greater than or equal to\n<code>low</code> but strictly less than <code>high</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble d = randomReal(low, high);\n</pre>\n<hr>\n<a name=\"Function:randomChance\"></a>\n<pre class=detailCode>\nbool randomChance(double p);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> with the probability indicated by <code>p</code>.\nThe argument <code>p</code> must be a floating-point number between\n0 (never) and 1 (always).  For example, calling\n<code>randomChance(.30)</code> returns <code>true</code> 30 percent\nof the time.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (randomChance(p)) . . .\n</pre>\n<hr>\n<a name=\"Function:setRandomSeed\"></a>\n<pre class=detailCode>\nvoid setRandomSeed(int seed);\n</pre>\n<div class=detailHTML>\nSets the internal random number seed to the specified value.  You\ncan use this function to set a specific starting point for the\npseudorandom sequence or to ensure that program behavior is\nrepeatable during the debugging phase.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetRandomSeed(seed);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/scanner-h.html",
    "content": "<html>\n<head>\n<title>include/scanner.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: scanner.h\n * ---------------\n * This file exports a TokenScanner class that divides a string into\n * individual logical units called tokens.\n */\n</scan>\n#ifndef _scanner_h\n#define _scanner_h\n\n#include &lt;string&gt;\n#include &lt;iostream&gt;\n#include \"lexicon.h\"\n#include \"stack.h\"\n\n<a name=\"Type:TokenType\"><scan class=comment>/*\n * Type: TokenType\n * ---------------\n * This enumerated type defines the values of the getTokenType method.\n */\n</scan>\nenum TokenType { SEPARATOR, WORD, NUMBER, STRING, OPERATOR };\n\n<a name=\"Class:TokenScanner\"><scan class=comment>/*\n * Class: TokenScanner\n * -------------------\n * This class divides a string into individual tokens.  The typical use of\n * the TokenScanner class is illustrated by the following pattern, which\n * reads the tokens in the string variable input:\n *\n *    TokenScanner scanner;\n *    scanner.setInput(input);\n *    while (scanner.hasMoreTokens()) {\n *       string token = scanner.nextToken();\n *       . . . process the token . . .\n *    }\n *\n * The TokenScanner class exports several additional methods that give\n * clients more control over its behavior.  Those methods are described\n * individually in the documentation.\n */\n</scan>\nclass TokenScanner {\n\npublic:\n\n<a name=\"Constructor:TokenScanner\"><scan class=comment>/*\n * Constructor: TokenScanner\n * Usage: TokenScanner scanner;\n *        TokenScanner scanner(str);\n *        TokenScanner scanner(infile);\n * ------------------------------------\n * Initializes a scanner object.  The initial token stream comes from the\n * specified string or input stream, if supplied.  If no parameter is\n * specified, the client must call setInput before reading tokens.\n */\n</scan>\n   TokenScanner();\n   TokenScanner(string str);\n   TokenScanner(istream &amp; infile);\n\n<a name=\"Destructor:~TokenScanner\"><scan class=comment>/*\n * Destructor: ~TokenScanner\n * Usage: (usually implicit)\n * -------------------------\n * Deallocates the storage associated with this scanner.\n */\n</scan>\n   ~TokenScanner();\n\n<a name=\"Method:setInput\"><scan class=comment>/*\n * Method: setInput\n * Usage: scanner.setInput(str);\n *        scanner.setInput(infile);\n * --------------------------------\n * Sets the token stream for this scanner to the specified string or input\n * stream.  Any previous token stream is discarded.\n */\n</scan>\n   void setInput(string str);\n   void setInput(istream &amp; infile);\n\n<a name=\"Method:hasMoreTokens\"><scan class=comment>/*\n * Method: hasMoreTokens\n * Usage: if (scanner.hasMoreTokens()) . . .\n * -----------------------------------------\n * Returns true if there are additional tokens for this scanner to read.\n */\n</scan>\n   bool hasMoreTokens();\n\n<a name=\"Method:nextToken\"><scan class=comment>/*\n * Method: nextToken\n * Usage: token = scanner.nextToken();\n * -----------------------------------\n * Returns the next token from this scanner.  If nextToken is called when\n * no tokens are available, it returns the empty string.\n */\n</scan>\n   string nextToken();\n\n<a name=\"Method:saveToken\"><scan class=comment>/*\n * Method: saveToken\n * Usage: scanner.saveToken(token);\n * --------------------------------\n * Pushes the specified token back into this scanner's input stream.  On\n * the next call to nextToken, the scanner will return the saved token\n * without reading any additional characters from the token stream.\n */\n</scan>\n   void saveToken(string token);\n\n<a name=\"Method:setIgnoreWhitespaceFlag\"><scan class=comment>/*\n * Method: setIgnoreWhitespaceFlag\n * Usage: scanner.setIgnoreWhitespaceFlag(flag);\n * ---------------------------------------------\n * Controls whether this scanner ignores whitespace characters.  By\n * default, the nextToken method treats whitespace characters (typically\n * spaces and tabs) just like any other punctuation mark and returns them\n * as single-character tokens.  Calling\n *\n *    scanner.setIgnoreWhitespaceFlag(true);\n *\n * changes this behavior so that the scanner ignore whitespace characters. \n * Clients can restore the original behavior by calling\n *\n *    scanner.setIgnoreWhitespaceFlag(false);\n */\n</scan>\n   void setIgnoreWhitespaceFlag(bool flag);\n\n<a name=\"Method:setIgnoreCommentsFlag\"><scan class=comment>/*\n * Method: setIgnoreCommentsFlag\n * Usage: scanner.setIgnoreCommentsFlag(flag);\n * -------------------------------------------\n * Controls whether this scanner ignores comments.  This scanner recognizes\n * both the slash-star and slash-slash comment format from the C-based\n * family of languages.  Calling\n *\n *    scanner.setIgnoreCommentsFlag(true);\n *\n * sets the parser to ignore comments.  Clients can restore the original\n * behavior by calling\n *\n *    scanner.setIgnoreCommentsFlag(false);\n */\n</scan>\n   void setIgnoreCommentsFlag(bool flag);\n\n<a name=\"Method:setScanNumbersFlag\"><scan class=comment>/*\n * Method: setScanNumbersFlag\n * Usage: scanner.setScanNumbersFlag(flag);\n * ----------------------------------------\n * Controls how the scanner treats tokens that begin with a digit.  By\n * default, the nextToken method treats numbers and letters identically and\n * therefore does not provide any special processing for numbers.  Calling\n *\n *    scanner.setScanNumbersFlag(true);\n *\n * changes this behavior so that nextToken returns the longest substring\n * that can be interpreted as a real number.  Clients can restore the\n * default behavior by calling\n *\n *    scanner.setScanNumbersFlag(false);\n */\n</scan>\n   void setScanNumbersFlag(bool flag);\n\n<a name=\"Method:setScanStringsFlag\"><scan class=comment>/*\n * Method: setScanStringsFlag\n * Usage: scanner.setScanStringsFlag(flag);\n * ----------------------------------------\n * Controls how the scanner treats tokens enclosed in quotation marks.  By\n * default, quotation marks (either single or double) are treated just like\n * any other punctuation character.  Calling\n *\n *    scanner.setScanStringsFlag(true);\n *\n * changes this assumption so that nextToken returns a single token\n * consisting of all characters through the matching quotation mark.  The\n * quotation marks are returned as part of the scanned token so that\n * clients can differentiate strings from other token types.  Clients can\n * restore the default behavior by calling\n *\n *    scanner.setScanStringsFlag(false);\n */\n</scan>\n   void setScanStringsFlag(bool flag);\n\n<a name=\"Method:addWordCharacters\"><scan class=comment>/*\n * Method: addWordCharacters\n * Usage: scanner.addWordCharacters(str);\n * --------------------------------------\n * Adds the characters in str to the set of characters legal in a word. \n * For example, calling addWordCharacters(\"_\") adds the underscore to the\n * set of word characters.\n */\n</scan>\n   void addWordCharacters(string str);\n\n<a name=\"Method:defineOperator\"><scan class=comment>/*\n * Method: defineOperator\n * Usage: scanner.defineOperator(op);\n * ----------------------------------\n * Defines a new multicharacter operator.  Whenever you call nextToken when\n * the input stream contains operator characters, the scanner returns the\n * longest possible operator string that can be read at that point.\n */\n</scan>\n   void defineOperator(string op);\n\n<a name=\"Method:getPosition\"><scan class=comment>/*\n * Method: getPosition\n * Usage: int pos = scanner.getPosition();\n * ---------------------------------------\n * Returns the current position of the scanner in the input stream.  If\n * saveToken has been called, this position corresponds to the beginning of\n * the saved token.  If saveToken is called more than once, the position is\n * unavailable.\n */\n</scan>\n   int getPosition();\n\n<a name=\"Method:isValidIdentifier\"><scan class=comment>/*\n * Method: isValidIdentifier\n * Usage: if (scanner.isValidIdentifier(token)) . . .\n * --------------------------------------------------\n * Returns true if the token is a valid identifier.\n */\n</scan>\n   bool isValidIdentifier(string token);\n\n<a name=\"Method:isWordCharacter\"><scan class=comment>/*\n * Method: isWordCharacter\n * Usage: if (scanner.isWordCharacter(ch)) . . .\n * ---------------------------------------------\n * Returns true if the character is valid in a word.\n */\n</scan>\n   bool isWordCharacter(char ch);\n\n<a name=\"Method:verifyToken\"><scan class=comment>/*\n * Method: verifyToken\n * Usage: scanner.verifyToken(expected);\n * -------------------------------------\n * Reads the next token and makes sure it matches the string expected.  If\n * it does not, verifyToken throws an error.\n */\n</scan>\n   void verifyToken(string expected);\n\n<a name=\"Method:getTokenType\"><scan class=comment>/*\n * Method: getTokenType\n * Usage: TokenType type = scanner.getTokenType(token);\n * ----------------------------------------------------\n * Returns the type of this token.  This type will match one of the\n * following enumerated type constants:\n *\n *    EOF,\n *    SEPARATOR,\n *    WORD,\n *    NUMBER,\n *    STRING, or\n *    OPERATOR.\n */\n</scan>\nTokenType getTokenType(string token);\n\n#include \"private/scannerpriv.h\"\n\n};\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/scanner.html",
    "content": "<html>\n<head>\n<title>scanner.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"scanner-h.html\">scanner.h</a></h1>\nThis file exports a <code>TokenScanner</code> class that divides\na string into individual logical units called <i>tokens</i>.\n<h2>Class</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"TokenScanner-class.html\">TokenScanner</a>&nbsp;</td><td class=indexSynopsis width=100%>This class divides a string into individual tokens.</td></tr>\n</table>\n<h2>Type</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Type:TokenType\">TokenType</a>&nbsp;</td><td class=indexSynopsis width=100%>This enumerated type defines the values of the <code>getTokenType</code> method.</td></tr>\n</table>\n<h2>Type detail</h2>\n<hr>\n<a name=\"Type:TokenType\"></a>\n<pre class=detailCode>\nenum TokenType { SEPARATOR, WORD, NUMBER, STRING, OPERATOR };\n</pre>\n<div class=detailHTML>\nThis enumerated type defines the values of the\n<code>getTokenType</code> method.\n</div>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/set-h.html",
    "content": "<html>\n<head>\n<title>include/set.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: set.h\n * -----------\n * This interface exports the Set class, a collection for efficiently\n * storing a set of distinct elements.\n */\n</scan>\n#ifndef _set_h\n#define _set_h\n\n#include \"cmpfn.h\"\n#include \"error.h\"\n#include \"foreach.h\"\n#include \"map.h\"\n#include \"vector.h\"\n\n<a name=\"Class:Set<ValueType>\"><scan class=comment>/*\n * Class: Set&lt;ValueType&gt;\n * ---------------------\n * This template class stores a collection of distinct elements.\n */\n</scan>\ntemplate &lt;typename ValueType&gt;\nclass Set {\n\npublic:\n\n<a name=\"Constructor:Set\"><scan class=comment>/*\n * Constructor: Set\n * Usage: Set&lt;ValueType&gt; set;\n *        Set&lt;ValueType&gt; set(cmpFn);\n *        Set&lt;ValueType&gt; set(initializers);\n *        Set&lt;ValueType&gt; set(initializers, cmpFn);\n * -----------------------------------------------\n * Initializes a set of the specified element type, which is either empty\n * or initialized to match the elements of the C++ array passed as the\n * initializers parameter.  The optional cmpFn argument specifies a\n * comparison function, which is called to compare data values.  This\n * argument is typically omitted, in which case the implementation uses the\n * operatorCmp function from cmpfn.h, which applies the built-in operators\n * &lt; and == to determine the ordering.\n */\n</scan>\n   Set(int (*cmpFn)(ValueType, ValueType) = operatorCmp);\n\n<a name=\"Destructor:~Set\"><scan class=comment>/*\n * Destructor: ~Set\n * Usage: (usually implicit)\n * -------------------------\n * Frees any heap storage associated with set.\n */\n</scan>\n   ~Set();\n\n<a name=\"Method:size\"><scan class=comment>/*\n * Method: size\n * Usage: count = set.size();\n * --------------------------\n * Returns the number of elements in this set.\n */\n</scan>\n   int size();\n\n<a name=\"Method:isEmpty\"><scan class=comment>/*\n * Method: isEmpty\n * Usage: if (set.isEmpty()) . . .\n * -------------------------------\n * Returns true if this set contains no elements.\n */\n</scan>\n   bool isEmpty();\n\n<a name=\"Method:add\"><scan class=comment>/*\n * Method: add\n * Usage: set.add(value);\n * ----------------------\n * Adds an element to this set, if it was not already there.  For\n * compatibility with the STL set class, this method is also exported as\n * insert.\n */\n</scan>\n   void add(const ValueType &amp; value);\n   void insert(const ValueType &amp; value);\n\n<a name=\"Method:remove\"><scan class=comment>/*\n * Method: remove\n * Usage: set.remove(value);\n * -------------------------\n * Removes an element from this set.  If the value was not contained in the\n * set, no error is generated and the set remains unchanged.\n */\n</scan>\n   void remove(const ValueType &amp; value);\n\n<a name=\"Method:contains\"><scan class=comment>/*\n * Method: contains\n * Usage: if (set.contains(value)) . . .\n * -------------------------------------\n * Returns true if the specified value is in this set.\n */\n</scan>\n   bool contains(const ValueType &amp; value);\n\n<a name=\"Method:isSubsetOf\"><scan class=comment>/*\n * Method: isSubsetOf\n * Usage: if (set.isSubsetOf(set2)) . . .\n * --------------------------------------\n * Implements the subset relation on sets.  It returns true if every\n * element of this set is contained in set2.\n */\n</scan>\n   bool isSubsetOf(const Set &amp; set2);\n\n<a name=\"Method:clear\"><scan class=comment>/*\n * Method: clear\n * Usage: set.clear();\n * -------------------\n * Removes all elements from this set.\n */\n</scan>\n   void clear();\n\n<a name=\"Operator:==\"><scan class=comment>/*\n * Operator: ==\n * Usage: if (set1 == set2) . . .\n *        if (set1 != set2) . . .\n * ------------------------------\n * Implements the equality relation on sets.  The == operator returns true\n * if set1 and set2 contain exactly the same elements; the != returns the\n * opposite value.\n */\n</scan>\n   bool operator==(const Set &amp; set2);\n   bool operator!=(const Set &amp; set2);\n\n<a name=\"Operator:+\"><scan class=comment>/*\n * Operator: +\n * Usage: set1 + set2;\n * -------------------\n * Returns the union of sets set1 and set2, which is the set of elements\n * that appear in at least one of the two sets.\n */\n</scan>\n   Set operator+(const Set &amp; set2);\n\n<a name=\"Operator:*\"><scan class=comment>/*\n * Operator: *\n * Usage: set1 * set2;\n * -------------------\n * Returns the intersection of sets set1 and set2, which is the set of all\n * elements that appear in both.\n */\n</scan>\n   Set operator*(const Set &amp; set2);\n\n<a name=\"Operator:-\"><scan class=comment>/*\n * Operator: -\n * Usage: set1 - set2;\n * -------------------\n * Returns the difference of sets set1 and set2, which is all of the\n * elements that appear in set1 but not set2.\n */\n</scan>\n   Set operator-(const Set &amp; set2);\n\n<a name=\"Operator:+=\"><scan class=comment>/*\n * Operator: +=\n * Usage: set1 += set2;\n *        set1 += value;\n * ---------------------\n * Adds all of the elements from set2 (or the single specified value) to\n * set1.\n */\n</scan>\n   Set &amp; operator+=(const Set &amp; set2);\n   Set &amp; operator+=(const ValueType &amp; value);\n\n<a name=\"Operator:*=\"><scan class=comment>/*\n * Operator: *=\n * Usage: set1 *= set2;\n * --------------------\n * Removes any elements from set1 that are not present in set2.\n */\n</scan>\n   Set &amp; operator*=(const Set &amp; set2);\n\n<a name=\"Operator:-=\"><scan class=comment>/*\n * Operator: -=\n * Usage: set1 -= set2;\n *        set1 -= value;\n * ---------------------\n * Removes the elements from set2 (or the single specified value) from\n * set1.\n */\n</scan>\n   Set &amp; operator-=(const Set &amp; set2);\n   Set &amp; operator-=(const ValueType &amp; value);\n\n<a name=\"Macro:foreach\"><scan class=comment>/*\n * Macro: foreach\n * Usage: foreach (ValueType value in set) . . .\n * ---------------------------------------------\n * Iterates over the elements of the set. The values are returned in\n * ascending order, as defined by the comparison function.\n */\n</scan>\n   <scan class=comment>/* The foreach macro is defined in foreach.h */</scan>\n\n<a name=\"Method:mapAll\"><scan class=comment>/*\n * Method: mapAll\n * Usage: set.mapAll(fn);\n *        set.mapAll(fn, data);\n * ----------------------------\n * Iterates through the elements of the set and calls fn(value) for each\n * one.  The values are processed in ascending order, as defined by the\n * comparison function.  The second form of the call allows the client to\n * pass a data value of any type to the callback function.\n */\n</scan>\n   void mapAll(void (*fn)(ValueType value));\n\n   template &lt;typename ClientDataType&gt;\n   void mapAll(void (*fn)(ValueType, ClientDataType &amp;), ClientDataType &amp; data);\n\n#include \"private/setpriv.h\"\n\n};\n\n#include \"private/setimpl.cpp\"\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/set.html",
    "content": "<html>\n<head>\n<title>set.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"set-h.html\">set.h</a></h1>\nThis interface exports the <code>Set</code> class, a\ncollection for efficiently storing a set of distinct elements.\n<h2>Class</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"Set-class.html\">Set&lt;ValueType&gt;</a>&nbsp;</td><td class=indexSynopsis width=100%>This template class stores a collection of distinct elements.</td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/simpio-h.html",
    "content": "<html>\n<head>\n<title>include/simpio.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: simpio.h\n * --------------\n * This interface exports a set of functions that simplify input/output\n * operations in C++ and provide some error-checking on console input.\n */\n</scan>\n#ifndef _simpio_h\n#define _simpio_h\n\n<a name=\"Function:getInteger\"><scan class=comment>/*\n * Function: getInteger\n * Usage: int n = getInteger(prompt);\n * ----------------------------------\n * Reads a complete line from cin and tries to scan it as an integer.  If\n * it succeeds, the integer value is returned.  If the input is not a legal\n * integer or if extraneous characters (other than whitespace) appear on\n * the input line, the user is given a chance to reenter the value.  If\n * supplied, the optional prompt string is printed before reading the\n * value.\n */\n</scan>\nint getInteger(string prompt = \"\");\n\n<a name=\"Function:getReal\"><scan class=comment>/*\n * Function: getReal\n * Usage: double x = getReal(prompt);\n * ----------------------------------\n * Reads a complete line from cin and tries to scan it as a floating-point\n * number.  If it succeeds, that value is returned.  If the input is not a\n * legal number or if extraneous characters (other than whitespace) appear\n * on the input line, the user is given a chance to reenter the value.  If\n * supplied, the optional prompt string is printed before reading the\n * value.\n */\n</scan>\ndouble getReal(string prompt = \"\");\n\n<a name=\"Function:getLine\"><scan class=comment>/*\n * Function: getLine\n * Usage: string line = getLine(prompt);\n * -------------------------------------\n * Reads a line of text from cin and returns that line as a string.  The\n * newline character that terminates the input is not stored as part of the\n * return value.  If supplied, the optional prompt string is printed before\n * reading the value.\n */\n</scan>\nstring getLine(string prompt = \"\");\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/simpio.html",
    "content": "<html>\n<head>\n<title>simpio.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"simpio-h.html\">simpio.h</a></h1>\nThis interface exports a set of functions that simplify input/output\noperations in C++ and provide some error-checking on console input.\n<h2>Functions</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Function:getInteger\">getInteger(prompt)</a>&nbsp;</td><td class=indexSynopsis width=100%>Reads a complete line from <code>cin</code> and tries to scan it as an integer.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:getReal\">getReal(prompt)</a>&nbsp;</td><td class=indexSynopsis width=100%>Reads a complete line from <code>cin</code> and tries to scan it as a floating-point number.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:getLine\">getLine(prompt)</a>&nbsp;</td><td class=indexSynopsis width=100%>Reads a line of text from <code>cin</code> and returns that line as a string.</td></tr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:getInteger\"></a>\n<pre class=detailCode>\nint getInteger(string prompt = \"\");\n</pre>\n<div class=detailHTML>\nReads a complete line from <code>cin</code> and tries to scan it as\nan integer.  If it succeeds, the integer value is returned.  If\nthe input is not a legal integer or if extraneous characters\n(other than whitespace) appear on the input line, the user is\ngiven a chance to reenter the value.  If supplied, the optional\n<code>prompt</code> string is printed before reading the value.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint n = getInteger(prompt);\n</pre>\n<hr>\n<a name=\"Function:getReal\"></a>\n<pre class=detailCode>\ndouble getReal(string prompt = \"\");\n</pre>\n<div class=detailHTML>\nReads a complete line from <code>cin</code> and tries to scan it as\na floating-point number.  If it succeeds, that value is returned.\nIf the input is not a legal number or if extraneous characters\n(other than whitespace) appear on the input line, the user is\ngiven a chance to reenter the value.  If supplied, the optional\n<code>prompt</code> string is printed before reading the value.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble x = getReal(prompt);\n</pre>\n<hr>\n<a name=\"Function:getLine\"></a>\n<pre class=detailCode>\nstring getLine(string prompt = \"\");\n</pre>\n<div class=detailHTML>\nReads a line of text from <code>cin</code> and returns that line\nas a string.  The newline character that terminates the input is\nnot stored as part of the return value.  If supplied, the optional\n<code>prompt</code> string is printed before reading the value.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring line = getLine(prompt);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/sound-h.html",
    "content": "<html>\n<head>\n<title>include/sound.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: sound.h\n * -------------\n * This interface defines a class that represents a sound.\n */\n</scan>\n#ifndef _sound_h\n#define _sound_h\n\n<a name=\"Class:Sound\"><scan class=comment>/*\n * Class: Sound\n * ------------\n * This class encapsulates a sound file, which is typically specified in\n * the constructor.\n */\n</scan>\nclass Sound {\n\npublic:\n\n<a name=\"Constructor:Sound\"><scan class=comment>/*\n * Constructor: Sound\n * Usage: Sound sound;\n *        Sound sound(filename);\n * -----------------------------\n * Creates a Sound object.  The default constructor creates an empty sound\n * that cannot be played.  The second form initializes the sound by reading\n * in the contents of the specified file.\n */\n</scan>\n   Sound();\n   Sound(string filename);\n\n<a name=\"Destructor:~Sound\"><scan class=comment>/*\n * Destructor: ~Sound\n * Usage: (usually implicit)\n * -------------------------\n * Frees the memory associated with the sound.\n */\n</scan>\n   ~Sound();\n\n<a name=\"Method:play\"><scan class=comment>/*\n * Method: play\n * Usage: sound.play();\n * --------------------\n * Plays the sound synchronously and waits for the sound to finish before\n * returning.\n */\n</scan>\n   void play();\n\n<a name=\"Method:start\"><scan class=comment>/*\n * Method: start\n * Usage: sound.start();\n * ---------------------\n * Starts playing the sound asynchronously.\n */\n</scan>\n   void start();\n\n<a name=\"Method:stop\"><scan class=comment>/*\n * Method: stop\n * Usage: sound.stop();\n * --------------------\n * Stops playing the sound.\n */\n</scan>\n   void stop();\n\n#include \"private/soundpriv.h\"\n\n};\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/sound.html",
    "content": "<html>\n<head>\n<title>sound.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"sound-h.html\">sound.h</a></h1>\nThis interface defines a class that represents a sound.\n<h2>Class</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"Sound-class.html\">Sound</a>&nbsp;</td><td class=indexSynopsis width=100%>This class encapsulates a sound file, which is typically specified in the constructor.</td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/stack-h.html",
    "content": "<html>\n<head>\n<title>include/stack.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: stack.h\n * -------------\n * This interface exports the Stack class, which implements a collection\n * that processes values in a last-in/first-out (LIFO) order.\n */\n</scan>\n#ifndef _stack_h\n#define _stack_h\n\n#include \"error.h\"\n#include \"vector.h\"\n\n<a name=\"Class:Stack<ValueType>\"><scan class=comment>/*\n * Class: Stack&lt;ValueType&gt;\n * -----------------------\n * This class models a linear structure called a stack in which values are\n * added and removed only from one end.  This discipline gives rise to a\n * last-in/first-out behavior (LIFO) that is the defining feature of\n * stacks.  The fundamental stack operations are push (add to top) and pop\n * (remove from top).\n */\n</scan>\ntemplate &lt;typename ValueType&gt;\nclass Stack {\n\npublic:\n\n<a name=\"Constructor:Stack\"><scan class=comment>/*\n * Constructor: Stack\n * Usage: Stack&lt;ValueType&gt; stack;\n * ------------------------------\n * Initializes a new empty stack.\n */\n</scan>\n   Stack();\n\n<a name=\"Destructor:~Stack\"><scan class=comment>/*\n * Destructor: ~Stack\n * Usage: (usually implicit)\n * -------------------------\n * Frees any heap storage associated with this stack.\n */\n</scan>\n   ~Stack();\n\n<a name=\"Method:size\"><scan class=comment>/*\n * Method: size\n * Usage: int n = stack.size();\n * ----------------------------\n * Returns the number of values in this stack.\n */\n</scan>\n   int size();\n\n<a name=\"Method:isEmpty\"><scan class=comment>/*\n * Method: isEmpty\n * Usage: if (stack.isEmpty()) . . .\n * ---------------------------------\n * Returns true if this stack contains no elements.\n */\n</scan>\n   bool isEmpty();\n\n<a name=\"Method:clear\"><scan class=comment>/*\n * Method: clear\n * Usage: stack.clear();\n * ---------------------\n * Removes all elements from this stack.\n */\n</scan>\n   void clear();\n\n<a name=\"Method:push\"><scan class=comment>/*\n * Method: push\n * Usage: stack.push(value);\n * -------------------------\n * Pushes the specified value onto this stack.\n */\n</scan>\n   void push(ValueType value);\n\n<a name=\"Method:pop\"><scan class=comment>/*\n * Method: pop\n * Usage: ValueType top = stack.pop();\n * -----------------------------------\n * Removes the top element from this stack and returns it.  This method\n * signals an error if called on an empty stack.\n */\n</scan>\n   ValueType pop();\n\n<a name=\"Method:peek\"><scan class=comment>/*\n * Method: peek\n * Usage: ValueType top = stack.peek();\n * ------------------------------------\n * Returns the value of top element from this stack, without removing it. \n * This method signals an error if called on an empty stack.\n */\n</scan>\n   ValueType peek();\n\n#include \"private/stackpriv.h\"\n\n};\n\n#include \"private/stackimpl.cpp\"\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/stack.html",
    "content": "<html>\n<head>\n<title>stack.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"stack-h.html\">stack.h</a></h1>\nThis interface exports the <code>Stack</code> class, which implements\na collection that processes values in a last-in/first-out (LIFO) order.\n<h2>Class</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"Stack-class.html\">Stack&lt;ValueType&gt;</a>&nbsp;</td><td class=indexSynopsis width=100%>This class models a linear structure called a <i>stack</i> in which values are added and removed only from one end.</td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/strlib-h.html",
    "content": "<html>\n<head>\n<title>include/strlib.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: strlib.h\n * --------------\n * This interface exports several useful string functions that are not\n * included in the C++ string library.\n */\n</scan>\n#ifndef _strlib_h\n#define _strlib_h\n\n#include &lt;string&gt;\n\n<a name=\"Function:integerToString\"><scan class=comment>/*\n * Function: integerToString\n * Usage: string s = integerToString(n);\n * -------------------------------------\n * Converts an integer into the corresponding string of digits.  For\n * example, calling integerToString(123) returns the string \"123\".\n */\n</scan>\nstring integerToString(int n);\n\n<a name=\"Function:stringToInteger\"><scan class=comment>/*\n * Function: stringToInteger\n * Usage: int n = stringToInteger(str);\n * ------------------------------------\n * Converts a string of digits into an integer.  If the string is not a\n * legal integer or contains extraneous characters other than whitespace,\n * stringToInteger calls error with an appropriate message.\n */\n</scan>\nint stringToInteger(string str);\n\n<a name=\"Function:realToString\"><scan class=comment>/*\n * Function: realToString\n * Usage: string s = realToString(d);\n * ----------------------------------\n * Converts a floating-point number into the corresponding string form. \n * For example, calling realToString(23.45) returns the string \"23.45\".\n */\n</scan>\nstring realToString(double d);\n\n<a name=\"Function:stringToReal\"><scan class=comment>/*\n * Function: stringToReal\n * Usage: double d = stringToReal(str);\n * ------------------------------------\n * Converts a string representing a real number into its corresponding\n * value.  If the string is not a legal floating-point number or contains\n * extraneous characters other than whitespace, stringToReal calls error\n * with an appropriate message.\n */\n</scan>\ndouble stringToReal(string str);\n\n<a name=\"Function:toUpperCase\"><scan class=comment>/*\n * Function: toUpperCase\n * Usage: string s = toUpperCase(str);\n * -----------------------------------\n * Returns a new string in which all lowercase characters have been\n * converted into their uppercase equivalents.\n */\n</scan>\nstring toUpperCase(string str);\n\n<a name=\"Function:toLowerCase\"><scan class=comment>/*\n * Function: toLowerCase\n * Usage: string s = toLowerCase(str);\n * -----------------------------------\n * Returns a new string in which all uppercase characters have been\n * converted into their lowercase equivalents.\n */\n</scan>\nstring toLowerCase(string str);\n\n<a name=\"Function:toUpperCaseInPlace\"><scan class=comment>/*\n * Function: toUpperCaseInPlace\n * Usage: toUpperCaseInPlace(str);\n * -------------------------------\n * Changes any lowercase characters in str to their uppercase equivalents.\n */\n</scan>\nvoid toUpperCaseInPlace(string &amp; str);\n\n<a name=\"Function:toLowerCaseInPlace\"><scan class=comment>/*\n * Function: toLowerCaseInPlace\n * Usage: toLowerCaseInPlace(str);\n * -------------------------------\n * Changes any uppercase characters in str to their lowercase equivalents.\n */\n</scan>\nvoid toLowerCaseInPlace(string &amp; str);\n\n<a name=\"Function:equalsIgnoreCase\"><scan class=comment>/*\n * Function: equalsIgnoreCase\n * Usage: if (equalsIgnoreCase(s1, s2)) . . .\n * ------------------------------------------\n * Returns true if s1 and s2 are equal discounting differences in case.\n */\n</scan>\nbool equalsIgnoreCase(string s1, string s2);\n\n<a name=\"Function:startsWith\"><scan class=comment>/*\n * Function: startsWith\n * Usage: if (startsWith(str, prefix)) . . .\n * -----------------------------------------\n * Returns true if the string str starts with the specified prefix, which\n * may be either a string or a character.\n */\n</scan>\nbool startsWith(string str, string prefix);\nbool startsWith(string str, char prefix);\n\n<a name=\"Function:endsWith\"><scan class=comment>/*\n * Function: endsWith\n * Usage: if (endsWith(str, suffix)) . . .\n * ---------------------------------------\n * Returns true if the string str ends with the specified suffix, which may\n * be either a string or a character.\n */\n</scan>\nbool endsWith(string str, string suffix);\nbool endsWith(string str, char suffix);\n\n<a name=\"Function:trim\"><scan class=comment>/*\n * Function: trim\n * Usage: string trimmed = trim(str);\n * ----------------------------------\n * Returns a new string after removing any whitespace characters from the\n * beginning and end of the argument.\n */\n</scan>\nstring trim(string str);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/strlib.html",
    "content": "<html>\n<head>\n<title>strlib.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"strlib-h.html\">strlib.h</a></h1>\nThis interface exports several useful string functions that are\nnot included in the C++ string library.\n<h2>Functions</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Function:integerToString\">integerToString(n)</a>&nbsp;</td><td class=indexSynopsis width=100%>Converts an integer into the corresponding string of digits.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:stringToInteger\">stringToInteger(str)</a>&nbsp;</td><td class=indexSynopsis width=100%>Converts a string of digits into an integer.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:realToString\">realToString(d)</a>&nbsp;</td><td class=indexSynopsis width=100%>Converts a floating-point number into the corresponding string form.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:stringToReal\">stringToReal(str)</a>&nbsp;</td><td class=indexSynopsis width=100%>Converts a string representing a real number into its corresponding value.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:toUpperCase\">toUpperCase(str)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns a new string in which all lowercase characters have been converted into their uppercase equivalents.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:toLowerCase\">toLowerCase(str)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns a new string in which all uppercase characters have been converted into their lowercase equivalents.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:toUpperCaseInPlace\">toUpperCaseInPlace(str)</a>&nbsp;</td><td class=indexSynopsis width=100%>Changes any lowercase characters in <code>str</code> to their uppercase equivalents.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:toLowerCaseInPlace\">toLowerCaseInPlace(str)</a>&nbsp;</td><td class=indexSynopsis width=100%>Changes any uppercase characters in <code>str</code> to their lowercase equivalents.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:equalsIgnoreCase\">equalsIgnoreCase(s1,&nbsp;s2)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns <code>true</code> if <code>s1</code> and <code>s2</code> are equal discounting differences in case.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:startsWith\">startsWith(str,&nbsp;prefix)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns <code>true</code> if the string <code>str</code> starts with the specified prefix, which may be either a string or a character.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:endsWith\">endsWith(str,&nbsp;suffix)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns <code>true</code> if the string <code>str</code> ends with the specified suffix, which may be either a string or a character.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:trim\">trim(str)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns a new string after removing any whitespace characters from the beginning and end of the argument.</td></tr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:integerToString\"></a>\n<pre class=detailCode>\nstring integerToString(int n);\n</pre>\n<div class=detailHTML>\nConverts an integer into the corresponding string of digits.\nFor example, calling <code>integerToString(123)</code> returns\nthe string <code>\"123\"</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring s = integerToString(n);\n</pre>\n<hr>\n<a name=\"Function:stringToInteger\"></a>\n<pre class=detailCode>\nint stringToInteger(string str);\n</pre>\n<div class=detailHTML>\nConverts a string of digits into an integer.  If the string is not a\nlegal integer or contains extraneous characters other than whitespace,\n<code>stringToInteger</code> calls <code>error</code> with an\nappropriate message.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint n = stringToInteger(str);\n</pre>\n<hr>\n<a name=\"Function:realToString\"></a>\n<pre class=detailCode>\nstring realToString(double d);\n</pre>\n<div class=detailHTML>\nConverts a floating-point number into the corresponding string form.\nFor example, calling <code>realToString(23.45)</code> returns\nthe string <code>\"23.45\"</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring s = realToString(d);\n</pre>\n<hr>\n<a name=\"Function:stringToReal\"></a>\n<pre class=detailCode>\ndouble stringToReal(string str);\n</pre>\n<div class=detailHTML>\nConverts a string representing a real number into its corresponding\nvalue.  If the string is not a legal floating-point number or contains\nextraneous characters other than whitespace, <code>stringToReal</code>\ncalls <code>error</code> with an appropriate message.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble d = stringToReal(str);\n</pre>\n<hr>\n<a name=\"Function:toUpperCase\"></a>\n<pre class=detailCode>\nstring toUpperCase(string str);\n</pre>\n<div class=detailHTML>\nReturns a new string in which all lowercase characters have been converted\ninto their uppercase equivalents.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring s = toUpperCase(str);\n</pre>\n<hr>\n<a name=\"Function:toLowerCase\"></a>\n<pre class=detailCode>\nstring toLowerCase(string str);\n</pre>\n<div class=detailHTML>\nReturns a new string in which all uppercase characters have been converted\ninto their lowercase equivalents.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring s = toLowerCase(str);\n</pre>\n<hr>\n<a name=\"Function:toUpperCaseInPlace\"></a>\n<pre class=detailCode>\nvoid toUpperCaseInPlace(string &amp; str);\n</pre>\n<div class=detailHTML>\nChanges any lowercase characters in <code>str</code> to their\nuppercase equivalents.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ntoUpperCaseInPlace(str);\n</pre>\n<hr>\n<a name=\"Function:toLowerCaseInPlace\"></a>\n<pre class=detailCode>\nvoid toLowerCaseInPlace(string &amp; str);\n</pre>\n<div class=detailHTML>\nChanges any uppercase characters in <code>str</code> to their\nlowercase equivalents.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ntoLowerCaseInPlace(str);\n</pre>\n<hr>\n<a name=\"Function:equalsIgnoreCase\"></a>\n<pre class=detailCode>\nbool equalsIgnoreCase(string s1, string s2);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if <code>s1</code> and <code>s2</code> are\nequal discounting differences in case.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (equalsIgnoreCase(s1, s2)) . . .\n</pre>\n<hr>\n<a name=\"Function:startsWith\"></a>\n<pre class=detailCode>\nbool startsWith(string str, string prefix);\nbool startsWith(string str, char prefix);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the string <code>str</code> starts with\nthe specified prefix, which may be either a string or a character.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (startsWith(str, prefix)) . . .\n</pre>\n<hr>\n<a name=\"Function:endsWith\"></a>\n<pre class=detailCode>\nbool endsWith(string str, string suffix);\nbool endsWith(string str, char suffix);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the string <code>str</code> ends with\nthe specified suffix, which may be either a string or a character.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (endsWith(str, suffix)) . . .\n</pre>\n<hr>\n<a name=\"Function:trim\"></a>\n<pre class=detailCode>\nstring trim(string str);\n</pre>\n<div class=detailHTML>\nReturns a new string after removing any whitespace characters\nfrom the beginning and end of the argument.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring trimmed = trim(str);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/thread-h.html",
    "content": "<html>\n<head>\n<title>include/thread.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: thread.h\n * --------------\n * This interface exports a simple, platform-independent thread\n * abstraction, along with simple tools for concurrency control.\n */\n</scan>\n#ifndef _thread_h\n#define _thread_h\n\n<scan class=comment>/* Forward definition */</scan>\n\nclass Lock;\n\n<a name=\"Class:Thread\"><scan class=comment>/*\n * Class: Thread\n * -------------\n * The Thread class encapsulates a lightweight process running in the same\n * address space as the creator.  The class itself is opaque and is\n * manipulated by top-level functions as illustrated in the following\n * paradigm:\n *\n *    Thread child = fork(fn);\n *    . . . code for the parent thread . . .\n *    join(child);\n *\n * This code calls fn so that it runs in parallel with the parent code.\n */\n</scan>\nclass Thread {\n\npublic:\n\n<a name=\"Constructor:Thread\"><scan class=comment>/*\n * Constructor: Thread\n * Usage: Thread thread;\n * ---------------------\n * Creates an inactive thread variable that will typically be overwritten\n * by the result of a fork call.\n */\n</scan>\n   Thread();\n\n<a name=\"Destructor:~Thread\"><scan class=comment>/*\n * Destructor: ~Thread\n * Usage: (usually implicit)\n * -------------------------\n * Frees any dynamic storage associated with the thread.\n */\n</scan>\n   ~Thread();\n\n<a name=\"Method:toString\"><scan class=comment>/*\n * Method: toString\n * Usage: string str = thread.toString();\n * --------------------------------------\n * Converts the thread to a string.\n */\n</scan>\n   string toString();\n\n#include \"private/threadpriv.h\"\n\n};\n\n<a name=\"Function:fork\"><scan class=comment>/*\n * Function: fork\n * Usage: Thread child = fork(fn);\n *        Thread child = fork(fn, data);\n * -------------------------------------\n * Creates a child thread that calls fn in an address space shared with the\n * current thread.  The second form makes it possible to pass an argument\n * to fn, which may be of any type.\n */\n</scan>\nThread fork(void (*fn)());\n\ntemplate &lt;typename ClientType&gt;\nThread fork(void (*fn)(ClientType &amp; data), ClientType &amp; data);\n\n<a name=\"Function:join\"><scan class=comment>/*\n * Function: join\n * Usage: join(thread);\n * --------------------\n * Waits for the specified thread to finish before proceeding.\n */\n</scan>\nvoid join(Thread &amp; thread);\n\n<a name=\"Function:yield\"><scan class=comment>/*\n * Function: yield\n * Usage: yield();\n * ---------------\n * Yields the processor to allow another thread to run.\n */\n</scan>\nvoid yield();\n\n<a name=\"Function:getCurrentThread\"><scan class=comment>/*\n * Function: getCurrentThread\n * Usage: Thread self = getCurrentThread();\n * ----------------------------------------\n * Returns the currently executing thread.\n */\n</scan>\nThread getCurrentThread();\n\n<a name=\"Class:Lock\"><scan class=comment>/*\n * Class: Lock\n * -----------\n * This class represents a simple lock used to control concurrency.  The\n * usual strategy for using locks is to use the synchronized macro\n * described later in this interface.\n */\n</scan>\nclass Lock {\n\npublic:\n\n<a name=\"Constructor:Lock\"><scan class=comment>/*\n * Constructor: Lock\n * Usage: Lock lock;\n * -----------------\n * Initializes a lock, which is initially in the unlocked state.\n */\n</scan>\n   Lock();\n\n<a name=\"Destructor:~Lock\"><scan class=comment>/*\n * Destructor: ~Lock\n * Usage: (usually implicit)\n * -------------------------\n * Frees any heap storage associated with the lock.\n */\n</scan>\n   ~Lock();\n\n<a name=\"Method:wait\"><scan class=comment>/*\n * Method: wait\n * Usage: lock.wait();\n * -------------------\n * Waits for some other thread to call signal on this lock.  This call\n * requires that the lock be held by the calling thread.  The effect of the\n * wait method is to release the lock and then wait until the desired\n * signal operation occurs, at which point the lock is reacquired and\n * control returns from the wait call.  The wait method is typically used\n * inside a critical section containing a while loop to check for a\n * specific condition.  The standard paradigm for using the waitThread\n * function looks like this:\n *\n *    synchronized (lock) {\n *       while (conditional test) {\n *          lock.wait();\n *       }\n *       . . . code to manipulate the locked resource . . .\n *    }\n */\n</scan>\n   void wait();\n\n<a name=\"Method:signal\"><scan class=comment>/*\n * Method: signal\n * Usage: lock.signal();\n * ---------------------\n * Signals all threads waiting on the lock so that they wake up and recheck\n * the corresponding condition.\n */\n</scan>\n   void signal();\n\n#include \"private/lockpriv.h\"\n\n};\n\n<a name=\"Statement:synchronized\"><scan class=comment>/*\n * Statement: synchronized\n * Usage: synchronized (lock) . . .\n * --------------------------------\n * Defines a critical section protected by the specified lock.  The general\n * strategy for using this facility is shown in the following paradigmatic\n * pattern:\n *\n *    synchronized (lock) {\n *       . . . statements in the critical section . . .\n *    }\n */\n</scan>\n#include \"private/synchronized.h\"\n\n#include \"private/threadimpl.cpp\"\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/thread.html",
    "content": "<html>\n<head>\n<title>thread.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"thread-h.html\">thread.h</a></h1>\nThis interface exports a simple, platform-independent thread\nabstraction, along with simple tools for concurrency control.\n<h2>Classes</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"Thread-class.html\">Thread</a>&nbsp;</td><td class=indexSynopsis width=100%>The <code>Thread</code> class encapsulates a lightweight process running in the same address space as the creator.</td></tr>\n<tr><td class=indexKey><a href=\"Lock-class.html\">Lock</a>&nbsp;</td><td class=indexSynopsis width=100%>This class represents a simple lock used to control concurrency.</td></tr>\n</table>\n<h2>Statement</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Statement:synchronized\">synchronized(lock)</a>&nbsp;</td><td class=indexSynopsis width=100%>Defines a critical section protected by the specified lock.</td></tr>\n</table>\n<h2>Functions</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"#Function:fork\">fork(fn)</a><br><a href=\"#Function:fork\">fork(fn,&nbsp;data)</a>&nbsp;</td><td class=indexSynopsis width=100%>Creates a child thread that calls <code>fn</code> in an address space shared with the current thread.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:join\">join(thread)</a>&nbsp;</td><td class=indexSynopsis width=100%>Waits for the specified thread to finish before proceeding.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:yield\">yield()</a>&nbsp;</td><td class=indexSynopsis width=100%>Yields the processor to allow another thread to run.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:getCurrentThread\">getCurrentThread()</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the currently executing thread.</td></tr>\n</table>\n<h2>Statement detail</h2>\n<hr>\n<a name=\"Statement:synchronized\"></a>\n<pre class=detailCode>\nsynchronized (lock) . . .\n</pre>\n<div class=detailHTML>\nDefines a critical section protected by the specified lock.  The\ngeneral strategy for using this facility is shown in the following\nparadigmatic pattern:<p>\n\n<pre>\n   synchronized (lock) {\n      . . . statements in the critical section . . .\n   }\n</pre>\n</div>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:fork\"></a>\n<pre class=detailCode>\nThread fork(void (*fn)());\n\ntemplate &lt;typename ClientType&gt;\nThread fork(void (*fn)(ClientType &amp; data), ClientType &amp; data);\n</pre>\n<div class=detailHTML>\nCreates a child thread that calls <code>fn</code> in an address space\nshared with the current thread.  The second form makes it possible to\npass an argument to <code>fn</code>, which may be of any type.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nThread child = fork(fn);\nThread child = fork(fn, data);\n</pre>\n<hr>\n<a name=\"Function:join\"></a>\n<pre class=detailCode>\nvoid join(Thread &amp; thread);\n</pre>\n<div class=detailHTML>\nWaits for the specified thread to finish before proceeding.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\njoin(thread);\n</pre>\n<hr>\n<a name=\"Function:yield\"></a>\n<pre class=detailCode>\nvoid yield();\n</pre>\n<div class=detailHTML>\nYields the processor to allow another thread to run.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nyield();\n</pre>\n<hr>\n<a name=\"Function:getCurrentThread\"></a>\n<pre class=detailCode>\nThread getCurrentThread();\n</pre>\n<div class=detailHTML>\nReturns the currently executing thread.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nThread self = getCurrentThread();\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/vector-h.html",
    "content": "<html>\n<head>\n<title>include/vector.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: vector.h\n * --------------\n * This interface exports the Vector template class, which provides an\n * efficient, safe, convenient replacement for the array type in C++.\n */\n</scan>\n#ifndef _vector_h\n#define _vector_h\n\n#include &lt;iterator&gt;\n#include \"error.h\"\n#include \"foreach.h\"\n\n<a name=\"Class:Vector<ValueType>\"><scan class=comment>/*\n * Class: Vector&lt;ValueType&gt;\n * ------------------------\n * This class stores an ordered list of values similar to an array.  It\n * supports traditional array selection using square brackets, but also\n * supports inserting and deleting elements.\n */\n</scan>\ntemplate &lt;typename ValueType&gt;\nclass Vector {\n\npublic:\n\n<a name=\"Constructor:Vector\"><scan class=comment>/*\n * Constructor: Vector\n * Usage: Vector&lt;ValueType&gt; vec;\n *        Vector&lt;ValueType&gt; vec(n, value);\n *        Vector&lt;ValueType&gt; vec(initializers);\n * -------------------------------------------\n * Initializes a new vector.  The default constructor creates an empty\n * vector.  The second form creates an array with n elements, each of which\n * is initialized to value; if value is missing, the elements are\n * initialized to the default value for the type.  The third form sets the\n * elements of the vector from an initialized C++ array, as illustrated by\n * the following example:\n *\n *    int initializers[] = { 'a', 'e', 'i', 'o', 'u' };\n *    Vector&lt;char&gt; vowels(initializers);\n */\n</scan>\nVector();\nexplicit Vector(int n, ValueType value = ValueType());\n\n<a name=\"Destructor:~Vector\"><scan class=comment>/*\n * Destructor: ~Vector\n * Usage: (usually implicit)\n * -------------------------\n * Frees any heap storage allocated by this vector.\n */\n</scan>\n   ~Vector();\n\n<a name=\"Method:size\"><scan class=comment>/*\n * Method: size\n * Usage: int nElems = vec.size();\n * -------------------------------\n * Returns the number of elements in this vector.\n */\n</scan>\n   int size();\n\n<a name=\"Method:isEmpty\"><scan class=comment>/*\n * Method: isEmpty\n * Usage: if (vec.isEmpty()) . . .\n * -------------------------------\n * Returns true if this vector contains no elements.\n */\n</scan>\n   bool isEmpty();\n\n<a name=\"Method:clear\"><scan class=comment>/*\n * Method: clear\n * Usage: vec.clear();\n * -------------------\n * Removes all elements from this vector.\n */\n</scan>\n   void clear();\n\n<a name=\"Method:getAt\"><scan class=comment>/*\n * Method: getAt\n * Usage: ValueType val = vec.getAt(index);\n * ----------------------------------------\n * Returns the element at the specified index in this vector.  This method\n * signals an error if the index is not in the array range.\n */\n</scan>\n   ValueType getAt(int index);\n\n<a name=\"Method:setAt\"><scan class=comment>/*\n * Method: setAt\n * Usage: vec.setAt(index, value);\n * -------------------------------\n * Replaces the element at the specified index in this vector with a new\n * value.  The previous value at that index is overwritten.  This method\n * signals an error if the index is not in the array range.\n */\n</scan>\n   void setAt(int index, ValueType value);\n\n<a name=\"Method:insertAt\"><scan class=comment>/*\n * Method: insertAt\n * Usage: vec.insertAt(0, value);\n * ------------------------------\n * Inserts the element into this vector before the specified index.  All\n * subsequent elements are shifted one position to the right.  This method\n * signals an error if the index is outside the range from 0 up to and\n * including the length of the vector.\n */\n</scan>\n   void insertAt(int index, ValueType value);\n\n<a name=\"Method:removeAt\"><scan class=comment>/*\n * Method: removeAt\n * Usage: vec.removeAt(index);\n * ---------------------------\n * Removes the element at the specified index from this vector.  All\n * subsequent elements are shifted one position to the left.  This method\n * signals an error if the index is outside the array range.\n */\n</scan>\n   void removeAt(int index);\n\n<a name=\"Method:add\"><scan class=comment>/*\n * Method: add\n * Usage: vec.add(value);\n * ----------------------\n * Adds a new value to the end of this vector.  To ensure compatibility\n * with the vector class in the Standard Template Library, this method is\n * also called push_back.\n */\n</scan>\n   void add(ValueType value);\n   void push_back(ValueType value);\n\n<a name=\"Operator:[]\"><scan class=comment>/*\n * Operator: []\n * Usage: value = vec[index];\n *        vec[index] = value;\n * --------------------------\n * Overloads [] to select elements from this vector.  This extension\n * enables the use of traditional array notation to get or set individual\n * elements.  This method signals an error if the index is outside the\n * array range.\n */\n</scan>\n   ValueType &amp; operator[](int index);\n\n<a name=\"Macro:foreach\"><scan class=comment>/*\n * Macro: foreach\n * Usage: foreach (ValueType value in vec) . . .\n * ---------------------------------------------\n * Iterates over the elements of the vector in ascending index order.\n */\n</scan>\n   <scan class=comment>/* The foreach macro is defined in foreach.h */</scan>\n\n<a name=\"Method:mapAll\"><scan class=comment>/*\n * Method: mapAll\n * Usage: vec.mapAll(fn);\n *        vec.mapAll(fn, data);\n * ----------------------------\n * Calls the specified function on each element of the vector in ascending\n * index order.  The second form of the call allows the client to pass a\n * data value of any type to the callback function.\n */\n</scan>\n   void mapAll(void (*fn)(ValueType value));\n\n   template &lt;typename ClientDataType&gt;\n   void mapAll(void (*fn)(ValueType value, ClientDataType &amp; data),\n               ClientDataType &amp; data);\n\n#include \"private/vectorpriv.h\"\n\n};\n\n#include \"private/vectorimpl.cpp\"\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/doc/vector.html",
    "content": "<html>\n<head>\n<title>vector.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<h1><a href=\"vector-h.html\">vector.h</a></h1>\nThis interface exports the <code>Vector</code> template class, which\nprovides an efficient, safe, convenient replacement for the array\ntype in C++.\n<h2>Class</h2>\n<table class=index width=100%>\n<tr><td class=indexKey><a href=\"Vector-class.html\">Vector&lt;ValueType&gt;</a>&nbsp;</td><td class=indexSynopsis width=100%>This class stores an ordered list of values similar to an array.</td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/fillcomments.c",
    "content": "/*\n * File: fillcomments.c\n * Last modified on Mon Jun  9 18:57:29 2014 by eroberts\n * -----------------------------------------------------\n * This program removes HTML tags from javadoc/cppdoc comment lines but\n * refills those lines to ensure that lines don't end up looking choppy.\n * It also implements the -html option, which writes an HTML file\n * containing the text of the file.\n */\n\n#include <stdio.h>\n#include <ctype.h>\n#include <string.h>\n#include \"cslib.h\"\n#include \"hashmap.h\"\n#include \"options.h\"\n#include \"simpio.h\"\n#include \"strlib.h\"\n\n/* Constants */\n\n#define MAX_COMMENT_LINE 75\n#define NBSP '\\001'\n\n#define NORMAL 0\n#define TAGMODE 1\n#define ANDMODE 2\n#define FIRST_COMMENT 1\n#define IN_COMMENT 2\n#define IN_EXTENDED_COMMENT 3\n#define IN_PREFORMATTED_BLOCK 4\n\n/* Option specifications */\n\nstatic string OPTION_SPEC[] = {\n   \"-help\",\n   \"-html\",\n   \"-output <name>\",\n   \"-stylesheet <file>\",\n   \"-hide <file>\",\n   NULL\n};\n\n/* Private variables */\n\nstring buffer;\nstring stylesheet;\nHashMap options;\nbool sentenceBreak;\nbool html;\n\n/* Private function prototypes */\n\nstatic void convertStream(FILE *infile, FILE *outfile);\nstatic void flushBuffer(FILE *outfile);\nstatic void commentLine(string line, FILE *outfile);\nstatic string standardLine(string line);\nstatic bool dumpChar(int ch, FILE *outfile);\nstatic void dumpHTMLHeader(string hName, FILE *outfile);\nstatic void dumpHTMLTrailer(FILE *outfile);\nstatic bool isBreak(string line);\nstatic bool isDeletedLine(string line);\nstatic string fixHTML(string line);\n\n/* Main program */\n\nmain(int argc, string argv[]) {\n   FILE *infile, *outfile;\n   string *files, outName, hName;\n   int nFiles;\n\n   options = parseOptions(argv + 1, OPTION_SPEC);\n   files = getArgList(options);\n   nFiles = stringArrayLength(files);\n   if (containsKey(options, \"-help\") || nFiles > 1) {\n      showUsage(\"fillcomments <options> <infile>\", OPTION_SPEC);\n      return;\n   }\n   html = containsKey(options, \"-html\");\n   stylesheet = getOption(options, \"-stylesheet\", \"cppdoc.css\");\n   if (nFiles == 0) {\n      infile = stdin;\n      hName = \"-----.h\";\n   } else {\n      infile = fopen(files[0], \"r\");\n      hName = files[0];\n      if (infile == NULL) error(\"Can't open %s\", files[0]);\n   }\n   if (containsKey(options, \"-output\")) {\n      outName = getOption(options, \"-output\", \"\");\n      outfile = fopen(outName, \"w\");\n      if (outfile == NULL) error(\"Can't open %s\", outName);\n   } else {\n      outfile = stdout;\n   }\n   if (html) dumpHTMLHeader(hName, outfile);\n   convertStream(infile, outfile);\n   if (html) dumpHTMLTrailer(outfile);\n   if (infile != stdin) fclose(infile);\n   if (outfile != stdout) fclose(outfile);\n   exit(0);\n}\n\n/* Private functions */\n\nstatic void convertStream(FILE *infile, FILE *outfile) {\n   string line, kind, name;\n   int state, colon;\n   bool afterBlank, skipBlank;\n\n   buffer = NULL;\n   sentenceBreak = false;\n   state = NORMAL;\n   afterBlank = false;\n   skipBlank = false;\n   while (true) {\n      line = readLine(infile);\n      if (line == NULL) break;\n      if (isDeletedLine(line)) {\n         skipBlank = afterBlank;\n         continue;\n      }\n      switch (state) {\n       case NORMAL:\n         if (stringEqual(line, \"/*\")) {\n            state = FIRST_COMMENT;\n         } else if (stringEqual(line, \"/**\")) {\n            state = IN_EXTENDED_COMMENT;\n            fprintf(outfile, \"%s\\n\", line);\n         } else {\n            if (strlen(line) == 0) {\n               if (skipBlank) {\n                  skipBlank = false;\n               } else {\n                  fprintf(outfile, \"\\n\");\n                  afterBlank = true;\n               }\n            } else {\n               fprintf(outfile, \"%s\\n\", standardLine(line));\n               afterBlank = skipBlank = false;\n            }\n         }\n         break;\n       case FIRST_COMMENT:\n         if (html) {\n            colon = findString(\": \", line, 0);\n            if (colon > 0) {\n               kind = substring(line, 3, colon - 1);\n               if (!stringEqual(kind, \"File\")) {\n                  name = substring(line, colon + 2, strlen(line));\n                  fprintf(outfile, \"<a name=\\\"%s:%s\\\">\", kind, name);\n               }\n            }\n            if (stringEqual(stylesheet, \"none\")) {\n               fprintf(outfile, \"<scan style=\\\"color:blue;\\\">\");\n            } else {\n               fprintf(outfile, \"<scan class=comment>\");\n            }\n         }\n         fprintf(outfile, \"/*\\n\");\n         fprintf(outfile, \"%s\\n\", fixHTML(line));\n         state = IN_COMMENT;\n         break;\n       case IN_COMMENT:\n         if (startsWith(line, \" * -----\")) state = IN_EXTENDED_COMMENT;\n         if (startsWith(line, \" */\")) state = NORMAL;\n         if (state == NORMAL && html) {\n            fprintf(outfile, \"%s</scan>\\n\", fixHTML(line));\n         } else {\n            fprintf(outfile, \"%s\\n\", fixHTML(line));\n         }\n         skipBlank = afterBlank = false;\n         break;\n       case IN_EXTENDED_COMMENT:\n         if (startsWith(line, \" *<pre>\")) {\n            flushBuffer(outfile);\n            state = IN_PREFORMATTED_BLOCK;\n         } else {\n            if (startsWith(line, \" * \") && !isBreak(line)) {\n               if (buffer == NULL) {\n                  buffer = \" * \";\n               } else {\n                  buffer = concat(buffer, (sentenceBreak) ? \"  \" : \" \");\n                  sentenceBreak = false;\n               }\n               commentLine(line + 3, outfile);\n               sentenceBreak = endsWith(line, \".\");\n            } else {\n               flushBuffer(outfile);\n               buffer = \"\";\n               commentLine(line, outfile);\n               flushBuffer(outfile);\n            }\n            if (stringEqual(line, \" */\")) {\n               flushBuffer(outfile);\n               if (html) {\n                  fprintf(outfile, \"</scan>\");\n               }\n               skipBlank = afterBlank = false;\n               state = NORMAL;\n            }\n         }\n         break;\n       case IN_PREFORMATTED_BLOCK:\n         if (startsWith(line, \" *</pre>\")) {\n            state = IN_EXTENDED_COMMENT;\n         } else {\n            commentLine(line, outfile);\n            flushBuffer(outfile);\n            fprintf(outfile, \"\\n\");\n         }\n         break;\n      }\n   }\n   flushBuffer(outfile);\n}\n\nstatic void flushBuffer(FILE *outfile) {\n   int i;\n\n   if (buffer != NULL) {\n      for (i = 0; buffer[i] != '\\0'; i++) {\n         if (buffer[i] == NBSP) buffer[i] = ' ';\n      }\n      fprintf(outfile, \"%s\\n\", fixHTML(buffer));\n      buffer = NULL;\n   }\n}\n\nstatic void commentLine(string line, FILE *outfile) {\n   int index, ch, state;\n   string tag;\n\n   state = NORMAL;\n   for (index = 0; line[index] != '\\0'; index++) {\n      ch = line[index];\n      switch (state) {\n       case NORMAL:\n         switch (ch) {\n          case '<':\n            if (startsWith(line, \"#include\")) {\n               dumpChar(ch, outfile);\n            } else {\n               state = TAGMODE;\n               tag = \"\";\n            }\n            break;\n          case '&':\n            state = ANDMODE;\n            tag = \"\";\n            break;\n          default:\n            if (dumpChar(ch, outfile)) {\n               while (line[index + 1] == ' ') index++;\n            }\n            break;\n         }\n         break;\n       case TAGMODE:\n         if (ch == '>') {\n            state = NORMAL;\n         } else if (tag[0] == 0 && (ch == ' ' || ch == '>' || ch == '<')) {\n            dumpChar('<', outfile);\n            dumpChar(ch, outfile);\n            state = NORMAL;\n         } else {\n            tag = concat(tag, charToString(ch));\n         }\n         break;\n       case ANDMODE:\n         if (ch == ' ' || ch == '&') {\n            dumpChar('&', outfile);\n            dumpChar(ch, outfile);\n            state = NORMAL;\n         } else if (ch == ';') {\n            if (stringEqual(tag, \"nbsp\")) {\n               dumpChar(NBSP, outfile);\n            } else if (stringEqual(tag, \"amp\")) {\n               dumpChar('&', outfile);\n            } else if (stringEqual(tag, \"gt\")) {\n               dumpChar('>', outfile);\n            } else if (stringEqual(tag, \"lt\")) {\n               dumpChar('<', outfile);\n            }\n            state = NORMAL;\n         } else {\n            tag = concat(tag, charToString(ch));\n         }\n         break;\n      }\n   }\n}\n\nstatic string standardLine(string line) {\n   string str;\n   int start, finish;\n\n   if (!html) return line;\n   line = quoteHTML(line);\n   start = findString(\"/\" \"/\", line, 0);\n   if (start >= 0) {\n      str = substring(line, 0, start - 1);\n      if (stringEqual(stylesheet, \"none\")) {\n         str = concat(str, \"<scan style=\\\"color:blue;\\\">\");\n      } else {\n         str = concat(str, \"<scan class=comment>\");\n      }\n      str = concat(str, substring(line, start, strlen(line)));\n      str = concat(str, \"</scan>\");\n      return str;\n   }\n   start = findString(\"/\" \"*\", line, 0);\n   if (start == -1) return line;\n   finish = findString(\"*\" \"/\", line, start);\n   if (finish == -1) error(\"Multiline internal comment not supported\");\n   str = substring(line, 0, start - 1);\n   if (stringEqual(stylesheet, \"none\")) {\n      str = concat(str, \"<scan style=\\\"color:blue;\\\">\");\n   } else {\n      str = concat(str, \"<scan class=comment>\");\n   }\n   str = concat(str, substring(line, start, finish + 1));\n   str = concat(str, \"</scan>\");\n   str = concat(str, substring(line, finish + 2, strlen(line)));\n   return str;\n}\n\nstatic bool dumpChar(int ch, FILE *outfile) {\n   string str;\n   int i, index;\n\n   str = charToString(ch);\n   switch (ch) {\n     case 0x92:\n       str = \"'\";\n       break;\n     case 0x93: case 0x94:\n       str = \"\\\"\";\n       break;\n     case 0x95:\n       str = \"-\";\n       break;\n     case 0x96:\n       str = \"--\";\n       break;\n   }\n   if (buffer != NULL) {\n      buffer = concat(buffer, str);\n      if (stringLength(buffer) > MAX_COMMENT_LINE) {\n         index = stringLength(buffer) - 1;\n         while (buffer[index] != ' ') index--;\n         for (i = 0; i < index; i++) {\n            if (buffer[i] == NBSP) buffer[i] = ' ';\n         }\n         fprintf(outfile, \"%s\\n\", fixHTML(substring(buffer, 0, index - 1)));\n         buffer = concat(\" *\", buffer + index);\n         return stringLength(buffer) < 4;\n      }\n   } else {\n      fprintf(outfile, \"%s\", fixHTML(str));\n   }\n   return false;\n}\n\nstatic void dumpHTMLHeader(string hName, FILE *outfile) {\n   fprintf(outfile, \"<html>\\n\");\n   fprintf(outfile, \"<head>\\n\");\n   fprintf(outfile, \"<title>%s</title>\\n\", hName);\n   if (!stringEqual(stylesheet, \"none\")) {\n      fprintf(outfile, \"<link rel=\\\"stylesheet\\\" type=\\\"text/css\\\"\");\n      fprintf(outfile, \" href=\\\"%s\\\" />\\n\", stylesheet);\n   }\n   fprintf(outfile, \"</head>\\n\");\n   fprintf(outfile, \"<body>\\n\");\n   fprintf(outfile, \"<pre class=code>\\n\");\n}\n\nstatic void dumpHTMLTrailer(FILE *outfile) {\n   fprintf(outfile, \"</pre>\\n\");\n   fprintf(outfile, \"</body>\\n\");\n   fprintf(outfile, \"</html>\\n\");\n}\n\nstatic bool isBreak(string line) {\n   return startsWith(line, \" *  \")\n       || startsWith(line, \" * Macro: \")\n       || startsWith(line, \" * Statement: \")\n       || startsWith(line, \" * Function: \")\n       || startsWith(line, \" * Functions: \")\n       || startsWith(line, \" * Method: \")\n       || startsWith(line, \" * Methods: \")\n       || startsWith(line, \" * Type: \")\n       || startsWith(line, \" * Types: \")\n       || startsWith(line, \" * Operator: \")\n       || startsWith(line, \" * Operators: \")\n       || startsWith(line, \" * Constant: \")\n       || startsWith(line, \" * Usage: \")\n       || startsWith(line, \" * -----\")\n       || startsWith(line, \" * @\");\n}\n\nstatic bool isDeletedLine(string line) {\n   return stringEqual(line, \" * <ul>\")\n       || stringEqual(line, \" * </ul>\")\n       || stringEqual(line, \" * <ol>\")\n       || stringEqual(line, \" * </ol>\")\n       || stringEqual(line, \" * <table>\")\n       || stringEqual(line, \" * </table>\")\n       || stringEqual(line, \"#include \\\"foreach.h\\\"\")\n       || findString(\"<include src=\\\"\", line, 0) != -1\n       || startsWith(line, \"#include \\\"private/\");\n};\n\nstatic string fixHTML(string line) {\n   return (html) ? quoteHTML(line) : line;\n}\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/index.txt",
    "content": "graphics.h: \n  File: graphics.h\n  Function: initGraphics\n  Function: fillArc\n  Function: drawLine\n  Function: fillOval\n  Function: fillRect\n  Function: getStringWidth\n  Function: getFont\n  Function: getColor\n  Function: restoreGraphicsState\n  Function: getWindowHeight\n  Function: pause\n\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/test.h",
    "content": "/*\n * File: thread.h\n * --------------\n * This interface exports a simple, platform-independent thread\n * abstraction, along with simple tools for concurrency control.\n */\n\n#ifndef _thread_h\n#define _thread_h\n\n/* Forward definition */\n\nclass Lock;\n\n/*\n * Class: Thread\n * -------------\n * The <code>Thread</code> class encapsulates a lightweight process\n * running in the same address space as the creator.  The class\n * itself is opaque and is manipulated by top-level functions as\n * illustrated in the following paradigm:\n *\n *<pre>\n *    Thread child = fork(fn);\n *    . . . code for the parent thread . . .\n *    join(child);\n *</pre>\n *\n * This code calls <code>fn</code> so that it runs in parallel with the\n * parent code.\n */\n\nclass Thread {\n\npublic:\n\n/*\n * Constructor: Thread\n * Usage: Thread thread;\n * ---------------------\n * Creates an inactive thread variable that will typically be overwritten\n * by the result of a <code>fork</code> call.\n */\n\n   Thread();\n\n/*\n * Destructor: ~Thread\n * Usage: (usually implicit)\n * -------------------------\n * Frees any dynamic storage associated with the thread.\n */\n\n   ~Thread();\n\n/*\n * Method: toString\n * Usage: string str = thread.toString();\n * --------------------------------------\n * Converts the thread to a string.\n */\n\n   string toString();\n\n#include \"private/threadpriv.h\"\n\n};\n\n/*\n * Function: fork\n * Usage: Thread child = fork(fn);\n *        Thread child = fork(fn, data);\n * -------------------------------------\n * Creates a child thread that calls <code>fn()</code> in an address space\n * shared with the current thread.  The second form makes it possible to\n * pass an argument to <code>fn</code>, which may be of any type.\n */\n\nThread fork(void (*fn)());\n\ntemplate <typename ClientType>\nThread fork(void (*fn)(ClientType & data), ClientType & data);\n\n/*\n * Function: join\n * Usage: join(thread);\n * --------------------\n * Waits for the specified thread to finish before proceeding.\n */\n\nvoid join(Thread & thread);\n\n/*\n * Function: yield\n * Usage: yield();\n * ---------------\n * Yields the processor to allow another thread to run.\n */\n\nvoid yield();\n\n/*\n * Function: getCurrentThread\n * Usage: Thread self = getCurrentThread();\n * ----------------------------------------\n * Returns the currently executing thread.\n */\n\nThread getCurrentThread();\n\n/*\n * Class: Lock\n * -----------\n * This class represents a simple lock used to control concurrency.  The\n * usual strategy for using locks is to use the <code>synchronized</code>\n * macro described later in this interface.\n */\n\nclass Lock {\n\npublic:\n\n/*\n * Constructor: Lock\n * Usage: Lock lock;\n * -----------------\n * Initializes a lock, which is initially in the unlocked state.\n */\n\n   Lock();\n\n/*\n * Destructor: ~Lock\n * Usage: (usually implicit)\n * -------------------------\n * Frees any heap storage associated with the lock.\n */\n\n   ~Lock();\n\n/*\n * Method: wait\n * Usage: lock.wait();\n * -------------------\n * Waits for some other thread to call <code>signal</code> on this lock.\n * This call requires that the lock be held by the calling thread.\n * The effect of the <code>wait</code> method is to release the lock\n * and then wait until the desired <code>signal</code> operation occurs,\n * at which point the lock is reacquired and control returns from the\n * <code>wait</code> call.  The <code>wait</code> method is typically\n * used inside a critical section containing a <code>while</code> loop\n * to check for a specific condition.  The standard paradigm for using\n * the <code>waitThread</code> function looks like this:<p>\n *\n *<pre>\n *    synchronized (lock) {\n *       while (conditional test) {\n *          lock.wait();\n *       }\n *       . . . code to manipulate the locked resource . . .\n *    }\n *</pre>\n */\n\n   void wait();\n\n/*\n * Method: signal\n * Usage: lock.signal();\n * ---------------------\n * Signals all threads waiting on the lock so that they wake up and\n * recheck the corresponding condition.\n */\n\n   void signal();\n\n#include \"private/lockpriv.h\"\n\n};\n\n/*\n * Macro: synchronized\n * Usage: synchronized (lock) . . .\n * --------------------------------\n * Defines a critical section protected by the specified lock.  The\n * general strategy for using this facility is shown in the following\n * paradigmatic pattern:<p>\n *\n *<pre>\n *    synchronized (lock) {\n *       . . . statements in the critical section . . .\n *    }\n *</pre>\n */\n\n#include \"private/synchronized.h\"\n\n#include \"private/threadimpl.cpp\"\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/test.html",
    "content": "<html>\n<head>\n<title>test.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: thread.h\n * --------------\n * This interface exports a simple, platform-independent thread\n * abstraction, along with simple tools for concurrency control.\n */\n</scan>\n#ifndef _thread_h\n#define _thread_h\n\n<scan class=comment>/* Forward definition */</scan>\n\nclass Lock;\n\n<a name=\"Class:Thread\"><scan class=comment>/*\n * Class: Thread\n * -------------\n * The Thread class encapsulates a lightweight process running in the same\n * address space as the creator.  The class itself is opaque and is\n * manipulated by top-level functions as illustrated in the following\n * paradigm:\n *\n *    Thread child = fork(fn);\n *    . . . code for the parent thread . . .\n *    join(child);\n *\n * This code calls fn so that it runs in parallel with the parent code.\n */\n</scan>\nclass Thread {\n\npublic:\n\n<a name=\"Constructor:Thread\"><scan class=comment>/*\n * Constructor: Thread\n * Usage: Thread thread;\n * ---------------------\n * Creates an inactive thread variable that will typically be overwritten\n * by the result of a fork call.\n */\n</scan>\n   Thread();\n\n<a name=\"Destructor:~Thread\"><scan class=comment>/*\n * Destructor: ~Thread\n * Usage: (usually implicit)\n * -------------------------\n * Frees any dynamic storage associated with the thread.\n */\n</scan>\n   ~Thread();\n\n<a name=\"Method:toString\"><scan class=comment>/*\n * Method: toString\n * Usage: string str = thread.toString();\n * --------------------------------------\n * Converts the thread to a string.\n */\n</scan>\n   string toString();\n\n#include \"private/threadpriv.h\"\n\n};\n\n<a name=\"Function:fork\"><scan class=comment>/*\n * Function: fork\n * Usage: Thread child = fork(fn);\n *        Thread child = fork(fn, data);\n * -------------------------------------\n * Creates a child thread that calls fn() in an address space shared with\n * the current thread.  The second form makes it possible to pass an\n * argument to fn, which may be of any type.\n */\n</scan>\nThread fork(void (*fn)());\n\ntemplate &lt;typename ClientType&gt;\nThread fork(void (*fn)(ClientType &amp; data), ClientType &amp; data);\n\n<a name=\"Function:join\"><scan class=comment>/*\n * Function: join\n * Usage: join(thread);\n * --------------------\n * Waits for the specified thread to finish before proceeding.\n */\n</scan>\nvoid join(Thread &amp; thread);\n\n<a name=\"Function:yield\"><scan class=comment>/*\n * Function: yield\n * Usage: yield();\n * ---------------\n * Yields the processor to allow another thread to run.\n */\n</scan>\nvoid yield();\n\n<a name=\"Function:getCurrentThread\"><scan class=comment>/*\n * Function: getCurrentThread\n * Usage: Thread self = getCurrentThread();\n * ----------------------------------------\n * Returns the currently executing thread.\n */\n</scan>\nThread getCurrentThread();\n\n<a name=\"Class:Lock\"><scan class=comment>/*\n * Class: Lock\n * -----------\n * This class represents a simple lock used to control concurrency.  The\n * usual strategy for using locks is to use the synchronized macro\n * described later in this interface.\n */\n</scan>\nclass Lock {\n\npublic:\n\n<a name=\"Constructor:Lock\"><scan class=comment>/*\n * Constructor: Lock\n * Usage: Lock lock;\n * -----------------\n * Initializes a lock, which is initially in the unlocked state.\n */\n</scan>\n   Lock();\n\n<a name=\"Destructor:~Lock\"><scan class=comment>/*\n * Destructor: ~Lock\n * Usage: (usually implicit)\n * -------------------------\n * Frees any heap storage associated with the lock.\n */\n</scan>\n   ~Lock();\n\n<a name=\"Method:wait\"><scan class=comment>/*\n * Method: wait\n * Usage: lock.wait();\n * -------------------\n * Waits for some other thread to call signal on this lock.  This call\n * requires that the lock be held by the calling thread.  The effect of the\n * wait method is to release the lock and then wait until the desired\n * signal operation occurs, at which point the lock is reacquired and\n * control returns from the wait call.  The wait method is typically used\n * inside a critical section containing a while loop to check for a\n * specific condition.  The standard paradigm for using the waitThread\n * function looks like this:\n *\n *    synchronized (lock) {\n *       while (conditional test) {\n *          lock.wait();\n *       }\n *       . . . code to manipulate the locked resource . . .\n *    }\n */\n</scan>\n   void wait();\n\n<a name=\"Method:signal\"><scan class=comment>/*\n * Method: signal\n * Usage: lock.signal();\n * ---------------------\n * Signals all threads waiting on the lock so that they wake up and recheck\n * the corresponding condition.\n */\n</scan>\n   void signal();\n\n#include \"private/lockpriv.h\"\n\n};\n\n<a name=\"Macro:synchronized\"><scan class=comment>/*\n * Macro: synchronized\n * Usage: synchronized (lock) . . .\n * --------------------------------\n * Defines a critical section protected by the specified lock.  The general\n * strategy for using this facility is shown in the following paradigmatic\n * pattern:\n *\n *    synchronized (lock) {\n *       . . . statements in the critical section . . .\n *    }\n */\n</scan>\n#include \"private/synchronized.h\"\n\n#include \"private/threadimpl.cpp\"\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cppdoc/testindex.html",
    "content": "<html>\n<head>\n<title>Index to test.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<a href=\"test.html#Class:Thread\">Class:Thread<a><br>\n<a href=\"test.html#Constructor:Thread\">Constructor:Thread<a><br>\n<a href=\"test.html#Destructor:~Thread\">Destructor:~Thread<a><br>\n<a href=\"test.html#Method:toString\">Method:toString<a><br>\n<a href=\"test.html#Function:fork\">Function:fork<a><br>\n<a href=\"test.html#Function:join\">Function:join<a><br>\n<a href=\"test.html#Function:yield\">Function:yield<a><br>\n<a href=\"test.html#Function:getCurrentThread\">Function:getCurrentThread<a><br>\n<a href=\"test.html#Class:Lock\">Class:Lock<a><br>\n<a href=\"test.html#Constructor:Lock\">Constructor:Lock<a><br>\n<a href=\"test.html#Destructor:~Lock\">Destructor:~Lock<a><br>\n<a href=\"test.html#Method:wait\">Method:wait<a><br>\n<a href=\"test.html#Method:signal\">Method:signal<a><br>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/Makefile",
    "content": "# Makefile for cslib directory\n# Last modified on Tue Jan 15 14:51:23 2013 by eroberts\n#****************************************************************\n\nSCRIPTS = \\\n    gccx\n\nTESTS = \\\n    cstest\n\nOBJECTS = \\\n    bst.o \\\n    charset.o \\\n    cmpfn.o \\\n    cslib.o \\\n    exception.o \\\n    filelib.o \\\n    foreach.o \\\n    generic.o \\\n    gevents.o \\\n    gobjects.o \\\n    gmath.o \\\n    graph.o \\\n    gtimer.o \\\n    gtransform.o \\\n    gtypes.o \\\n    gwindow.o \\\n    hashmap.o \\\n    iterator.o \\\n    loadobj.o \\\n    map.o \\\n    options.o \\\n    posixthread.o \\\n    platform.o \\\n    pqueue.o \\\n    queue.o \\\n    random.o \\\n    ref.o \\\n    set.o \\\n    simpio.o \\\n    sound.o \\\n    stack.o \\\n    strbuf.o \\\n    strlib.o \\\n    thread.o \\\n    tokenscanner.o \\\n    unittest.o \\\n    unixfile.o \\\n    vector.o\n\nHEADERS = \\\n    bst.h \\\n    charset.h \\\n    cmdscan.h \\\n    cmpfn.h \\\n    cslib.h \\\n    exception.h \\\n    filelib.h \\\n    foreach.h \\\n    gcdebug.h \\\n    gevents.h \\\n    gmath.h \\\n    gobjects.h \\\n    graph.h \\\n    gtimer.h \\\n    gtransform.h \\\n    gtypes.h \\\n    gwindow.h \\\n    hashmap.h \\\n    iterator.h \\\n    itertype.h \\\n    list.h \\\n    loadobj.h \\\n    map.h \\\n    options.h \\\n    platform.h \\\n    pqueue.h \\\n    queue.h \\\n    random.h \\\n    ref.h \\\n    set.h \\\n    simpio.h \\\n    sound.h \\\n    stack.h \\\n    strbuf.h \\\n    strlib.h \\\n    thread.h \\\n    tokenscanner.h \\\n    unittest.h \\\n    vector.h\n\nLIBRARIES = libcs.a\n\n\n# ***************************************************************\n# Entry to bring the package up to date\n#    The \"make all\" entry should be the first real entry\n#    The / separators are for parallel versions of make\n\nall: $(OBJECTS) / $(LIBRARIES) / $(TESTS)\n\nexport: all\n\t@-(if test -w /usr/local/bin ; then \\\n             target=/usr/local/bin ; \\\n           else \\\n             target=$(HOME)/bin ; \\\n           fi ; \\\n           if ! test -d $$target ; then mkdir $$target ; fi ; \\\n           for x in $(PROGRAMS) $(SCRIPTS) ; do \\\n             echo link `pwd`/$$x $$target ; \\\n             rm -f $$target/$$x ; \\\n             ln -s `pwd`/$$x $$target ; \\\n           done)\n\t@-(if test -w /usr/local/lib ; then \\\n             target=/usr/local/lib ; \\\n           else \\\n             target=$(HOME)/lib ; \\\n           fi ; \\\n           if ! test -d $$target ; then mkdir $$target ; fi ; \\\n           for x in $(LIBRARIES) ; do \\\n             echo link `pwd`/$$x $$target ; \\\n             rm -f $$target/$$x ; \\\n             ln -s `pwd`/$$x $$target ; \\\n           done)\n\t@-(if test -w /usr/local/include ; then \\\n             target=/usr/local/include ; \\\n           else \\\n             target=$(HOME)/include ; \\\n           fi ; \\\n           if ! test -d $$target ; then mkdir $$target ; fi ; \\\n           for x in $(HEADERS) private ; do \\\n             echo link `pwd`/$$x $$target ; \\\n             rm -f $$target/$$x ; \\\n             ln -s `pwd`/$$x $$target ; \\\n           done)\n\t@-(if test -w /usr/local/include ; then \\\n             target=/usr/local/include/cpph ; \\\n           else \\\n             target=$(HOME)/include/cpph ; \\\n           fi ; \\\n           if ! test -d $$target ; then mkdir $$target ; fi ; \\\n           for x in $(CPPHEADERS) ; do \\\n             echo link `pwd`/cpph/$$x $$target ; \\\n             rm -f $$target/$$x ; \\\n             ln -s `pwd`/cpph/$$x $$target ; \\\n           done)\n\n\n# ***************************************************************\n# Standard entries to remove files from the directories\n#    tidy    -- eliminate unwanted files\n#    scratch -- delete derived files in preparation for rebuild\n\ntidy:\n\trm -f ,* .,* *~ core a.out *.err *.gch\n\nscratch clean: tidy\n\trm -f -r *.o *.a *.app $(TESTS)\n\n\n# ***************************************************************\n# Tools\n\ncstest.o: cstest.c cslib.h exception.h strlib.h unittest.h\n\tgccx -c cstest.c\n\ncstest: cstest.o libcs.a\n\tgccx -o cstest cstest.o\n\n\n# ***************************************************************\n# Library compilations\n\nbst.o: bst.c bst.h cmpfn.h cslib.h exception.h foreach.h iterator.h \\\n       itertype.h strlib.h unittest.h\n\tgccx -c bst.c\n\ncharset.o: gccx charset.c cslib.h foreach.h iterator.h itertype.h strlib.h \\\n           unittest.h\n\tgccx -c charset.c\n\ncmdscan.o: gccx cmdscan.c cmdscan.h cmpfn.h cslib.h exception.h generic.h \\\n           hashmap.h iterator.h itertype.h simpio.h strlib.h tokenscanner.h\n\tgccx -c cmdscan.c\n\ncmpfn.o: gccx cmpfn.c cmpfn.h cslib.h strlib.h\n\tgccx -c cmpfn.c\n\ncslib.o: gccx cslib.c cslib.h exception.h\n\tgccx -c cslib.c\n\nexception.o: gccx exception.c cslib.h exception.h strlib.h \\\n             thread.h unittest.h\n\tgccx -c exception.c\n\nfilelib.o: gccx filelib.c cslib.h cmpfn.h exception.h filelib.h generic.h \\\n           iterator.h itertype.h strlib.h unittest.h\n\tgccx -c filelib.c\n\nforeach.o: gccx foreach.c cslib.h foreach.h iterator.h\n\tgccx -c foreach.c\n\ngeneric.o: gccx generic.c cmpfn.h cslib.h exception.h generic.h \\\n           ref.h strlib.h unittest.h\n\tgccx -c generic.c\n\ngevents.o: gccx gevents.c cslib.h gevents.h gtimer.h gtypes.h hashmap.h \\\n           platform.h\n\tgccx -c gevents.c\n\ngmath.o: gccx gmath.c gmath.h\n\tgccx -c gmath.c\n\ngobjects.o: gccx gobjects.c gobjects.h platform.h vector.h\n\tgccx -c gobjects.c\n\ngraph.o: gccx graph.c cmpfn.h cslib.h foreach.h generic.h graph.h iterator.h \\\n         itertype.h set.h\n\tgccx -c graph.c\n\ngtimer.o: gccx gtimer.c cslib.h\n\tgccx -c gtimer.c\n\ngtransform.o: gccx gtransform.c gmath.h gtransform.h gtypes.h\n\tgccx -c gtransform.c\n\ngtypes.o: gccx gtypes.c cslib.h generic.h gtypes.h\n\tgccx -c gtypes.c\n\ngwindow.o: gccx gwindow.c gobjects.h gwindow.h platform.h\n\tgccx -c gwindow.c\n\nhashmap.o: gccx hashmap.c cmpfn.h cslib.h exception.h generic.h hashmap.h \\\n          iterator.h itertype.h strlib.h unittest.h\n\tgccx -c hashmap.c\n\niterator.o: gccx iterator.c cmpfn.h cslib.h iterator.h itertype.h\n\tgccx -c iterator.c\n\nloadobj.o: gccx loadobj.c cslib.h filelib.h loadobj.h strlib.h\n\tgccx -c loadobj.c\n\nmap.o: gccx map.c bst.h cmpfn.h cslib.h exception.h foreach.h generic.h \\\n       iterator.h itertype.h map.h strlib.h unittest.h\n\tgccx -c map.c\n\noptions.o: gccx options.c cslib.h generic.h hashmap.h options.h strlib.h \\\n           unittest.h vector.h\n\tgccx -c options.c\n\nplatform.o: gccx platform.c cslib.h filelib.h gtimer.h platform.h strlib.h\n\tgccx -c platform.c\n\nposixthread.o: gccx posixthread.c cslib.h exception.h strlib.h thread.h \n\tgccx -c posixthread.c\n\npqueue.o: gccx pqueue.c cslib.h generic.h queue.h unittest.h\n\tgccx -c pqueue.c\n\nqueue.o: gccx queue.c cslib.h generic.h queue.h unittest.h\n\tgccx -c queue.c\n\nrandom.o: gccx random.c cslib.h random.h\n\tgccx -c random.c\n\nref.o: gccx ref.c cslib.h ref.h\n\tgccx -c ref.c\n\nset.o: gccx set.c bst.h cmpfn.h cslib.h generic.h iterator.h itertype.h set.h\n\tgccx -c set.c\n\nsimpio.o: gccx simpio.c cslib.h simpio.h strlib.h\n\tgccx -c simpio.c\n\nsound.o: gccx sound.c cslib.h platform.h sound.h\n\tgccx -c sound.c\n\nstack.o: gccx stack.c cslib.h generic.h stack.h unittest.h\n\tgccx -c stack.c\n\nstrbuf.o: gccx strbuf.c cslib.h exception.h strbuf.h strlib.h unittest.h\n\tgccx -c strbuf.c\n\nstrlib.o: gccx strlib.c cslib.h exception.h strlib.h unittest.h\n\tgccx -c strlib.c\n\nthread.o: gccx thread.c cslib.h exception.h thread.h unittest.h\n\tgccx -c thread.c\n\ntokenscanner.o: gccx tokenscanner.c cslib.h strlib.h tokenscanner.h\n\tgccx -c tokenscanner.c                \n\nunittest.o: gccx unittest.c cslib.h exception.h generic.h strlib.h unittest.h\n\tgccx -c unittest.c\n\nunixfile.o: gccx unixfile.c cslib.h filelib.h iterator.h strlib.h\n\tgccx -c unixfile.c\n\nvector.o: gccx vector.c cmpfn.h cslib.h generic.h iterator.h itertype.h \\\n          vector.h\n\tgccx -c vector.c\n\n\n# ***************************************************************\n# Entry to reconstruct the library archive\n\nlibcs.a: $(OBJECTS)\n\t-rm -f libcs.a\n\tar cr libcs.a $(OBJECTS)\n\tranlib libcs.a\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/bst.c",
    "content": "/*\n * File: bst.c\n * Last modified on Mon Dec 10 20:52:46 2012 by eroberts\n * -----------------------------------------------------\n * This file implements the bst.h interface, which provides a general\n * implementation of binary search trees.  It is used in the\n * implementations of the Map and Set types.\n */\n\n#include <stdarg.h>\n#include <stdio.h>\n#include <string.h>\n#include \"bst.h\"\n#include \"cmpfn.h\"\n#include \"cslib.h\"\n#include \"exception.h\"\n#include \"foreach.h\"\n#include \"generic.h\"\n#include \"iterator.h\"\n#include \"itertype.h\"\n#include \"strlib.h\"\n#include \"unittest.h\"\n\n/*\n * Type: BSTCDT\n * ------------\n * This type is the concrete type used to represent the BST.\n */\n\nstruct BSTCDT {\n   IteratorHeader header;      /* Header to enable iteration            */\n   string baseType;            /* The name of the base type             */\n   int baseTypeSize;           /* Size of the base type in bytes        */\n   CompareFn cmpFn;            /* Function to compare two keys          */\n   FetchFn fetchFn;            /* Function to fetch an argument         */\n   StoreFn storeFn;            /* Function to store a value             */\n   ToStringFn toStringFn;      /* Function to convert key to a string   */\n   BSTNode root;               /* Root of the tree                      */\n   int count;                  /* Number of entries in the BST          */\n   FILE *debugLog;             /* Debugging log                         */\n};\n\n/*\n * Type: BSTNode\n * -------------\n * This type defines the structure of a BST node.\n */\n\nstruct BSTNodeCDT {\n   GenericType key;            /* Space for the key                     */\n   void *value;                /* Value field for maps                  */\n   struct BSTNodeCDT *left;    /* Left child                            */\n   struct BSTNodeCDT *right;   /* Right child                           */\n   int bf;                     /* Balance factor for node (-1, 0, +1)   */\n   BST bst;                    /* Back pointer to the bst               */\n};\n\n/* Private function prototypes */\n\nstatic BSTNode copyTree(BST newbst, BSTNode t);\nstatic BSTNode findTreeNode(BST bst, BSTNode t, void *kp);\nstatic int insertTreeNode(BST bst, BSTNode *tp, void *kp, BSTNode *rp);\nstatic int removeTreeNode(BST bst, BSTNode *tp, void *kp);\nstatic int removeTargetNode(BST bst, BSTNode *tp);\nstatic void freeTree(BSTNode t);\nstatic void freeNode(BSTNode node);\nstatic void adjustBF(BST bst, BSTNode *tp, int delta);\nstatic void fixLeftImbalance(BST bst, BSTNode *tp);\nstatic void fixRightImbalance(BST bst, BSTNode *tp);\nstatic void rotateLeft(BST bst, BSTNode *tp);\nstatic void rotateRight(BST bst, BSTNode *tp);\nstatic void mapTree(BSTNode t, proc fn, TraversalOrder order, void *data);\nstatic void addNodeToIterator(BSTNode node, void *data);\nstatic Iterator newForeachIterator(void *collection);\n\n/* Exported entries */\n\nBST newBSTFromType(string baseType) {\n   BST bst;\n\n   bst = newBlock(BST);\n   enableIteration(bst, newForeachIterator);\n   bst->baseType = baseType;\n   bst->baseTypeSize = getTypeSizeForType(baseType);\n   bst->fetchFn = getFetchFnForType(baseType);\n   bst->storeFn = getStoreFnForType(baseType);\n   bst->cmpFn = getCompareFnForType(baseType);\n   bst->toStringFn = getToStringFn(baseType);\n   bst->count = 0;\n   bst->root = NULL;\n   bst->debugLog = NULL;\n   return bst;\n}\n\nvoid freeBST(BST bst) {\n   clearBST(bst);\n   freeBlock(bst);\n}\n\nint sizeBST(BST bst) {\n   return bst->count;\n}\n\nbool isEmptyBST(BST bst) {\n   return bst->count == 0;\n}\n\nvoid clearBST(BST bst) {\n   freeTree(bst->root);\n   bst->count = 0;\n}\n\nBST cloneBST(BST bst) {\n   BST newbst;\n\n   newbst = newBlock(BST);\n   enableIteration(newbst, newForeachIterator);\n   newbst->baseType = bst->baseType;\n   newbst->baseTypeSize = bst->baseTypeSize;\n   newbst->fetchFn = bst->fetchFn;\n   newbst->storeFn = bst->storeFn;\n   newbst->cmpFn = bst->cmpFn;\n   newbst->toStringFn = bst->toStringFn;\n   newbst->count = bst->count;\n   newbst->root = copyTree(newbst, bst->root);\n   newbst->debugLog = NULL;\n   return newbst;\n}\n\nBSTNode findBSTNode(BST bst, ...) {\n   va_list args;\n   GenericType any;\n\n   va_start(args, bst);\n   bst->fetchFn(args, &any);\n   va_end(args);\n   return findBSTNodeFromArg(bst, any);\n}\n\nBSTNode findBSTNodeFromArg(BST bst, GenericType any) {\n   return findTreeNode(bst, bst->root, &any);\n}\n\nBSTNode insertBSTNode(BST bst, ...) {\n   va_list args;\n   GenericType any;\n\n   va_start(args, bst);\n   bst->fetchFn(args, &any);\n   va_end(args);\n   return insertBSTNodeFromArg(bst, any);\n}\n\nBSTNode insertBSTNodeFromArg(BST bst, GenericType any) {\n   BSTNode node;\n\n   insertTreeNode(bst, &bst->root, &any, &node);\n   return node;\n}\n\nvoid removeBSTNode(BST bst, ...) {\n   va_list args;\n   GenericType any;\n\n   va_start(args, bst);\n   bst->fetchFn(args, &any);\n   va_end(args);\n   removeBSTNodeFromArg(bst, any);\n}\n\nvoid removeBSTNodeFromArg(BST bst, GenericType any) {\n   removeTreeNode(bst, &bst->root, &any);\n}\n\nvoid mapBST(BST bst, proc fn, TraversalOrder order, void *data) {\n   mapTree(bst->root, fn, order, data);\n}\n\n/*\n * Implementation notes: newNodeIterator\n * -------------------------------------\n * This function creates an iterator that maps over the nodes in the\n * binary search tree using the specified iteration order.  Using the bst\n * value itself in a <code>foreach</code> construct creates a key iterator\n * with an INORDER traversal.  For details on the general iterator strategy,\n * see the comments in the <code>itertype.h</code> interface.\n */\n\nIterator newNodeIterator(BST bst, TraversalOrder order) {\n   Iterator iterator;\n\n   iterator = newListIterator(sizeof(void *), NULL);\n   mapBST(bst, addNodeToIterator, order, iterator);\n   return iterator;\n}\n\nBSTNode getRootBST(BST bst) {\n   return bst->root;\n}\n\nBSTNode getLeftChild(BSTNode node) {\n   return node->left;\n}\n\nBSTNode getRightChild(BSTNode node) {\n   return node->right;\n}\n\nGenericType getKey(BSTNode node) {\n   return node->key;\n}\n\nstring getKeyString(BSTNode node) {\n   return node->bst->toStringFn(node->key);\n}\n\nint getBF(BSTNode node) {\n   return node->bf;\n}\n\nvoid setNodeValue(BSTNode node, void *value) {\n   node->value = value;\n}\n\nvoid *getNodeValue(BSTNode node) {\n   return node->value;\n}\n\nstring getBaseTypeBST(BST bst) {\n   return bst->baseType;\n}\n\nint getBaseTypeSizeBST(BST bst) {\n   return bst->baseTypeSize;\n}\n\nvoid setCompareFnBST(BST bst, CompareFn cmpFn) {\n   bst->cmpFn = cmpFn;\n}\n\nCompareFn getCompareFnBST(BST bst) {\n   return bst->cmpFn;\n}\n\nvoid setDebugLog(BST bst, FILE *outfile) {\n   bst->debugLog = outfile;\n}\n\n/* Private functions */\n\n/*\n * Implementation notes: copyTree\n * ------------------------------\n * This function implements a recursive walk on the tree to preserve the\n * structure.\n */\n\nstatic BSTNode copyTree(BST newbst, BSTNode t) {\n   BSTNode node;\n\n   if (t == NULL) return NULL;\n   node = newBlock(BSTNode);\n   node->key = t->key;\n   node->value = t->value;\n   node->left = copyTree(newbst, t->left);\n   node->right = copyTree(newbst, t->right);\n   node->bf = t->bf;\n   node->bst = newbst;\n   return node;\n}\n\n/*\n * Implementation notes: findTreeNode\n * ----------------------------------\n * Finds the specified key by walking recursively over the BST.\n */\n\nstatic BSTNode findTreeNode(BST bst, BSTNode t, void *kp) {\n   int sign;\n\n   if (t == NULL) return NULL;\n   sign = bst->cmpFn(kp, &t->key);\n   if (sign == 0) return t;\n   if (sign < 0) {\n      return findTreeNode(bst, t->left, kp);\n   } else {\n      return findTreeNode(bst, t->right, kp);\n   }\n}\n\n/*\n * Implementation notes: insertTreeNode\n * ------------------------------------\n * Enters the key into the binary search tree, starting the recursive\n * search at the tree whose address is passed as the tp parameter.\n * The rp parameter specifies the location in which the node (which may\n * be either an existing node or a newly allocated one) is stored.  The\n * return value is an integer that indicates the change in the height of\n * the subtree, which is then used to correct the balance factors in\n * ancestor nodes.\n */\n\nstatic int insertTreeNode(BST bst, BSTNode *tp, void *kp, BSTNode *rp) {\n   BSTNode t;\n   int sign;\n\n   t = *tp;\n   if (t == NULL) {\n      t = newBlock(BSTNode);\n      memcpy(&t->key, kp, bst->baseTypeSize);\n      t->bst = bst;\n      t->bf = 0;\n      t->left = t->right = NULL;\n      t->value = NULL;\n      *tp = t;\n      *rp = t;\n      bst->count++;\n      return +1;\n   }\n   sign = bst->cmpFn(kp, &t->key);\n   if (sign == 0) {\n      *rp = t;\n      return 0;\n   }\n   if (sign < 0) {\n      if (insertTreeNode(bst, &t->left, kp, rp) > 0) {\n         switch (t->bf) {\n           case +1: t->bf =  0; return 0;\n           case  0: t->bf = -1; return +1;\n           case -1: fixLeftImbalance(bst, tp); return 0;\n         }\n      }\n   } else {\n      if (insertTreeNode(bst, &t->right, kp, rp) > 0) {\n         switch (t->bf) {\n           case -1: t->bf =  0; return 0;\n           case  0: t->bf = +1; return +1;\n           case +1: fixRightImbalance(bst, tp); return 0;\n         }\n      }\n   }\n   return 0;\n}\n\n/*\n * Implementation notes: removeTreeNode\n * ------------------------------------\n * Removes the node with the specified key from the tree\n * whose address is passed as the <code>tp</code> parameter.\n * The return value is the change in height of the tree, which\n * is either 0 if the height is unchanged or -1 if the height\n * decreases by one.  This value is then used to correct the\n * balance factors in ancestor nodes.\n */\n\nstatic int removeTreeNode(BST bst, BSTNode *tp, void *kp) {\n   BSTNode t;\n   int sign, hDelta, bfDelta;\n\n   t = *tp;\n   if (t == NULL) return 0;\n   bfDelta = 0;\n   sign = bst->cmpFn(kp, &t->key);\n   if (sign == 0) return removeTargetNode(bst, tp);\n   if (sign < 0) {\n      hDelta = removeTreeNode(bst, &t->left, kp);\n      if (hDelta < 0) bfDelta = +1;\n   } else {\n      hDelta = removeTreeNode(bst, &t->right, kp);\n      if (hDelta < 0) bfDelta = -1;\n   }\n   adjustBF(bst, tp, bfDelta);\n   return ((bfDelta != 0 && t->bf == 0) ? -1 : 0);\n}\n\n/*\n * Implementation notes: removeTargetNode\n * --------------------------------------\n * Removes the node whose address is passed as the <code>tp</code>\n * parameter.  This method returns the change in height of the tree\n * rooted at that node, which is either 0 if the height is unchanged\n * or -1 if the height decreases by one.  This value is then used to\n * correct the balance factors in ancestor nodes.\n *\n * This implementation is divided into several cases.  The easy case\n * occurs when either of the children is <code>NULL</code>; in that case,\n * all you need to do is replace the node with its non-<code>NULL</code>\n * child.  If both children are non-<code>NULL</code>, this code\n * finds the rightmost descendent of the left child; this node\n * may not be a leaf, but will have no right child.  Its left\n * child replaces it in the tree, after which the replacement\n * data is moved to the position occupied by the target node.\n */\n\nstatic int removeTargetNode(BST bst, BSTNode *tp) {\n   BSTNode t, np;\n\n   t = *tp;\n   if (t->left == NULL) {\n      *tp = t->right;\n      freeNode(t);\n      bst->count--;\n      return -1;\n   } else if (t->right == NULL) {\n      *tp = t->left;\n      freeNode(t);\n      bst->count--;\n      return -1;\n   } else {\n      np = t->left;\n      while (np->right != NULL) {\n         np = np->right;\n      }\n      t->key = np->key;\n      t->value = np->value;\n      if (removeTreeNode(bst, &t->left, &t->key) < 0) {\n         adjustBF(bst, tp, +1);\n         return (t->bf == 0) ? -1 : 0;\n      } else {\n         return 0;\n      }\n   }\n}\n\n/*\n * Implementation notes: freeTree and freeNode\n * -------------------------------------------\n * The freeTree function frees all nodes by conducting a postorder walk.\n * The freeNode function makes a special-case check to free the key string.\n */\n\nstatic void freeTree(BSTNode t) {\n   if (t != NULL) {\n      freeTree(t->left);\n      freeTree(t->right);\n      freeNode(t);\n   }\n}\n\nstatic void freeNode(BSTNode node) {\n   freeBlock(node);\n}\n\n/*\n * Implementation notes: adjustBF\n * ------------------------------\n * Adjusts the balance factors in a node by the specified delta,\n * rebalancing the tree as needed.\n */\n\nstatic void adjustBF(BST bst, BSTNode *tp, int delta) {\n   BSTNode t;\n\n   t = *tp;\n   t->bf += delta;\n   if (t->bf < -1) {\n      fixLeftImbalance(bst, tp);\n   } else if (t->bf > +1) {\n      fixRightImbalance(bst, tp);\n   }\n}\n\n/*\n * Implementation notes: fixLeftImbalance\n * --------------------------------------\n * Repairs the balance factor when a node has been found that\n * is out of balance with the longer subtree on the left.\n * Depending on the balance factor of the left child, the\n * code performs a single or double rotation.\n */\n\nstatic void fixLeftImbalance(BST bst, BSTNode *tp) {\n   BSTNode t, parent, child, *cp;\n   int oldBF;\n\n   parent = *tp;\n   cp = &parent->left;\n   child = *cp;\n   if (child->bf == +1) {\n      oldBF = child->right->bf;\n      rotateLeft(bst, cp);\n      rotateRight(bst, tp);\n      t = *tp;\n      t->bf = 0;\n      switch (oldBF) {\n        case -1: t->left->bf = 0; t->right->bf = +1; break;\n        case  0: t->left->bf = t->right->bf = 0; break;\n        case +1: t->left->bf = -1; t->right->bf = 0; break;\n      }\n   } else if (child->bf == 0) {\n      rotateRight(bst, tp);\n      t = *tp;\n      t->bf = +1;\n      t->right->bf = -1;\n   } else {\n      rotateRight(bst, tp);\n      t = *tp;\n      t->right->bf = t->bf = 0;\n   }\n}\n\n/*\n * Implementation notes: fixRightImbalance\n * ---------------------------------------\n * Repairs the balance factor when a node has been found that\n * is out of balance with the longer subtree on the right.\n * Depending on the balance factor of the right child, the\n * code performs a single or double rotation.\n */\n\nstatic void fixRightImbalance(BST bst, BSTNode *tp) {\n   BSTNode t, parent, child, *cp;\n   int oldBF;\n\n   parent = *tp;\n   cp = &parent->right;\n   child = *cp;\n   if (child->bf == -1) {\n      oldBF = child->left->bf;\n      rotateRight(bst, cp);\n      rotateLeft(bst, tp);\n      t = *tp;\n      t->bf = 0;\n      switch (oldBF) {\n        case -1: t->left->bf = 0; t->right->bf = +1; break;\n        case  0: t->left->bf = t->right->bf = 0; break;\n        case +1: t->left->bf = -1; t->right->bf = 0; break;\n      }\n   } else if (child->bf == 0) {\n      rotateLeft(bst, tp);\n      t = *tp;\n      t->bf = -1;\n      t->left->bf = +1;\n   } else {\n      rotateLeft(bst, tp);\n      t = *tp;\n      t->left->bf = t->bf = 0;\n   }\n}\n\n/*\n * Implementation notes: rotateLeft\n * --------------------------------\n * Performs a single left rotation of the tree whose address is\n * passed as an argument.  The balance factors are unchanged by this\n * function and must be corrected at a higher level of the algorithm.\n */\n\nstatic void rotateLeft(BST bst, BSTNode *tp) {\n   BSTNode parent, child;\n   string key;\n\n   parent = *tp;\n   if (bst->debugLog != NULL) {\n      key = bst->toStringFn(parent->key);\n      fprintf(bst->debugLog, \"rotateLeft around %s\\n\", key);\n      freeBlock(key);\n   }\n   child = parent->right;\n   parent->right = child->left;\n   child->left = parent;\n   *tp = child;\n}\n\n/*\n * Implementation notes: rotateRight\n * ---------------------------------\n * Performs a single right rotation of the tree whose address is\n * passed as an argument.  The balance factors are unchanged by this\n * function and must be corrected at a higher level of the algorithm.\n */\n\nstatic void rotateRight(BST bst, BSTNode *tp) {\n   BSTNode parent, child;\n   string key;\n\n   parent = *tp;\n   if (bst->debugLog != NULL) {\n      key = bst->toStringFn(parent->key);\n      fprintf(bst->debugLog, \"rotateRight around %s\\n\", key);\n      freeBlock(key);\n   }\n   child = parent->left;\n   parent->left = child->right;\n   child->right = parent;\n   *tp = child;\n}\n\n/*\n * Implementation notes: mapTree\n * -----------------------------\n * Implements a recursive walk over the tree.\n */\n\nstatic void mapTree(BSTNode t, proc fn, TraversalOrder order, void *data) {\n   if (t != NULL) {\n      if (order == PREORDER) fn(t, data);\n      mapTree(t->left, fn, order, data);\n      if (order == INORDER) fn(t, data);\n      mapTree(t->right, fn, order, data);\n      if (order == POSTORDER) fn(t, data);\n   }\n}\n\n/*\n * Implementation notes: addNodeToIterator\n * ---------------------------------------\n * Adds the specified node to the iterator, which is passed as the\n * <code>data</code> parameter.\n */\n\nstatic void addNodeToIterator(BSTNode node, void *data) {\n   addToIteratorList((Iterator) data, &node);\n}\n\n/*\n * Implementation notes: newForeachIterator\n * ----------------------------------------\n * The foreach iterator always uses an INORDER walk.\n */\n\nstatic Iterator newForeachIterator(void *collection) {\n   return newNodeIterator((BST) collection, INORDER);\n}\n\n/**********************************************************************/\n/* Unit test for the bst module                                       */\n/**********************************************************************/\n\n#ifndef _NOTEST_\n\n/* Constant tables */\n\nstatic string ELEMENTS[] = {\n   \"H\", \"He\", \"Li\", \"Be\", \"B\", \"C\", \"N\", \"O\", \"F\", \"Ne\", \"Na\", \"Mg\", \"Al\",\n   \"Si\", \"P\", \"S\", \"Cl\", \"Ar\", \"K\", \"Ca\", \"Sc\", \"Ti\", \"V\", \"Cr\", \"Mn\",\n   \"Fe\", \"Co\", \"Ni\", \"Cu\", \"Zn\", \"Ga\", \"Ge\", \"As\", \"Se\", \"Br\", \"Kr\", \"Rb\",\n   \"Sr\", \"Y\", \"Zr\", \"Nb\", \"Mo\", \"Tc\", \"Ru\", \"Rh\", \"Pd\", \"Ag\", \"Cd\", \"In\",\n   \"Sn\", \"Sb\", \"Te\", \"I\", \"Xe\", \"Cs\", \"Ba\", \"La\", \"Ce\", \"Pr\", \"Nd\", \"Pm\",\n   \"Sm\", \"Eu\", \"Gd\", \"Tb\", \"Dy\", \"Ho\", \"Er\", \"Tm\", \"Yb\", \"Lu\", \"Hf\", \"Ta\",\n   \"W\", \"Re\", \"Os\", \"Ir\", \"Pt\", \"Au\", \"Hg\", \"Tl\", \"Pb\", \"Bi\", \"Po\", \"At\",\n   \"Rn\", \"Fr\", \"Ra\", \"Ac\", \"Th\", \"Pa\", \"U\", \"Np\", \"Pu\", \"Am\", \"Cm\", \"Bk\",\n   \"Cf\", \"Es\", \"Fm\", \"Md\", \"No\", \"Lr\", \"Rf\", \"Db\", \"Sg\", \"Bh\", \"Hs\", \"Mt\"\n};\nstatic int N_ELEMENTS = sizeof ELEMENTS / sizeof ELEMENTS[0];\n\nstatic string ELEMENTS_PREORDER[] = {\n   \"P\", \"H\", \"Cl\", \"Be\", \"Ar\", \"Ag\", \"Ac\", \"Al\", \"Am\", \"B\", \"At\", \"As\",\n   \"Au\", \"Ba\", \"C\", \"Bk\", \"Bi\", \"Bh\", \"Br\", \"Cd\", \"Ca\", \"Ce\", \"Cf\", \"F\",\n   \"Cu\", \"Cr\", \"Co\", \"Cm\", \"Cs\", \"Er\", \"Dy\", \"Db\", \"Eu\", \"Es\", \"Ga\", \"Fm\",\n   \"Fe\", \"Fr\", \"Ge\", \"Gd\", \"Li\", \"I\", \"Hf\", \"He\", \"Ho\", \"Hg\", \"Hs\", \"K\",\n   \"In\", \"Ir\", \"Kr\", \"La\", \"N\", \"Md\", \"Lu\", \"Lr\", \"Mn\", \"Mg\", \"Mo\", \"Mt\",\n   \"Ne\", \"Nb\", \"Na\", \"Nd\", \"O\", \"No\", \"Ni\", \"Np\", \"Os\", \"Sc\", \"Rb\", \"Pm\",\n   \"Pb\", \"Pa\", \"Pd\", \"Pr\", \"Po\", \"Pu\", \"Pt\", \"Ra\", \"Ru\", \"Rh\", \"Re\", \"Rf\",\n   \"Rn\", \"S\", \"Sb\", \"Ti\", \"Sr\", \"Si\", \"Se\", \"Sg\", \"Sn\", \"Sm\", \"Tc\", \"Tb\",\n   \"Ta\", \"Te\", \"Th\", \"Y\", \"V\", \"Tm\", \"Tl\", \"U\", \"Xe\", \"W\", \"Zn\", \"Yb\", \"Zr\"\n};\n\nstatic string ELEMENTS_INORDER[] = {\n   \"Ac\", \"Ag\", \"Al\", \"Am\", \"Ar\", \"As\", \"At\", \"Au\", \"B\", \"Ba\", \"Be\", \"Bh\",\n   \"Bi\", \"Bk\", \"Br\", \"C\", \"Ca\", \"Cd\", \"Ce\", \"Cf\", \"Cl\", \"Cm\", \"Co\", \"Cr\",\n   \"Cs\", \"Cu\", \"Db\", \"Dy\", \"Er\", \"Es\", \"Eu\", \"F\", \"Fe\", \"Fm\", \"Fr\", \"Ga\",\n   \"Gd\", \"Ge\", \"H\", \"He\", \"Hf\", \"Hg\", \"Ho\", \"Hs\", \"I\", \"In\", \"Ir\", \"K\",\n   \"Kr\", \"La\", \"Li\", \"Lr\", \"Lu\", \"Md\", \"Mg\", \"Mn\", \"Mo\", \"Mt\", \"N\", \"Na\",\n   \"Nb\", \"Nd\", \"Ne\", \"Ni\", \"No\", \"Np\", \"O\", \"Os\", \"P\", \"Pa\", \"Pb\", \"Pd\",\n   \"Pm\", \"Po\", \"Pr\", \"Pt\", \"Pu\", \"Ra\", \"Rb\", \"Re\", \"Rf\", \"Rh\", \"Rn\", \"Ru\",\n   \"S\", \"Sb\", \"Sc\", \"Se\", \"Sg\", \"Si\", \"Sm\", \"Sn\", \"Sr\", \"Ta\", \"Tb\", \"Tc\",\n   \"Te\", \"Th\", \"Ti\", \"Tl\", \"Tm\", \"U\", \"V\", \"W\", \"Xe\", \"Y\", \"Yb\", \"Zn\", \"Zr\"\n};\n\nstatic string ELEMENTS_POSTORDER[] = {\n   \"Ac\", \"Am\", \"Al\", \"Ag\", \"As\", \"Au\", \"At\", \"Ba\", \"B\", \"Ar\", \"Bh\", \"Bi\",\n   \"Br\", \"Bk\", \"Ca\", \"Cf\", \"Ce\", \"Cd\", \"C\", \"Be\", \"Cm\", \"Co\", \"Cs\", \"Cr\",\n   \"Db\", \"Dy\", \"Es\", \"Eu\", \"Er\", \"Cu\", \"Fe\", \"Fr\", \"Fm\", \"Gd\", \"Ge\", \"Ga\",\n   \"F\", \"Cl\", \"He\", \"Hg\", \"Hs\", \"Ho\", \"Hf\", \"Ir\", \"In\", \"La\", \"Kr\", \"K\",\n   \"I\", \"Lr\", \"Lu\", \"Mg\", \"Mt\", \"Mo\", \"Mn\", \"Md\", \"Na\", \"Nd\", \"Nb\", \"Ni\",\n   \"Np\", \"No\", \"Os\", \"O\", \"Ne\", \"N\", \"Li\", \"H\", \"Pa\", \"Pd\", \"Pb\", \"Po\",\n   \"Pt\", \"Ra\", \"Pu\", \"Pr\", \"Pm\", \"Rf\", \"Re\", \"Rn\", \"Rh\", \"Sb\", \"S\", \"Ru\",\n   \"Rb\", \"Sg\", \"Se\", \"Sm\", \"Sn\", \"Si\", \"Ta\", \"Tb\", \"Th\", \"Te\", \"Tc\", \"Sr\",\n   \"Tl\", \"U\", \"Tm\", \"W\", \"Xe\", \"V\", \"Yb\", \"Zr\", \"Zn\", \"Y\", \"Ti\", \"Sc\", \"P\"\n};\n\nstatic int PRIMES[] = {\n     2,   3,   5,   7,  11,  13,  17,  19,  23,  29,  31,  37,  41,\n    43,  47,  53,  59,  61,  67,  71,  73,  79,  83,  89,  97, 101,\n   103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167,\n   173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239,\n   241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313,\n   317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397,\n   401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467,\n   479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569,\n   571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643,\n   647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733,\n   739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823,\n   827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911,\n   919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997\n};\nstatic int N_PRIMES = sizeof PRIMES / sizeof PRIMES[0];\n\nstatic int PRIMES_PREORDER[] = {\n   311, 131,  53,  19,   7,   3,   2,   5,  13,  11,  17,  37,  29,\n    23,  31,  43,  41,  47,  89,  71,  61,  59,  67,  79,  73,  83,\n   107, 101,  97, 103, 113, 109, 127, 223, 173, 151, 139, 137, 149,\n   163, 157, 167, 193, 181, 179, 191, 199, 197, 211, 263, 239, 229,\n   227, 233, 251, 241, 257, 281, 271, 269, 277, 293, 283, 307, 719,\n   503, 409, 359, 337, 317, 313, 331, 349, 347, 353, 383, 373, 367,\n   379, 397, 389, 401, 457, 433, 421, 419, 431, 443, 439, 449, 479,\n   463, 461, 467, 491, 487, 499, 613, 569, 541, 521, 509, 523, 557,\n   547, 563, 593, 577, 571, 587, 601, 599, 607, 659, 641, 619, 617,\n   631, 647, 643, 653, 683, 673, 661, 677, 701, 691, 709, 827, 769,\n   743, 733, 727, 739, 757, 751, 761, 809, 787, 773, 797, 821, 811,\n   823, 941, 881, 857, 839, 829, 853, 863, 859, 877, 911, 887, 883,\n   907, 929, 919, 937, 971, 953, 947, 967, 983, 977, 991, 997\n};\n\n/* Private function prototypes */\n\nstatic void testStringBST(void);\nstatic void testIntBST(void);\nstatic void insertArray(BST bst, void *array, int n);\nstatic void checkIterator(BST bst, TraversalOrder order, void *array);\nstatic void checkOrdered(BST bst);\nstatic void checkBalanceFactors(BST bst);\nstatic void checkNodeBalance(BST bst, BSTNode t);\nstatic int treeHeight(BSTNode t);\nstatic string bfToString(int bf);\n\n/* Unit test */\n\nvoid testBSTModule(void) {\n   testStringBST();\n   testIntBST();\n}\n\n/* Private functions */\n\nstatic void testStringBST(void) {\n   BST bst, bst2;\n   string symbol;\n\n   trace(bst = newBST(string));\n   trace(insertArray(bst, ELEMENTS, N_ELEMENTS));\n   trace(checkIterator(bst, PREORDER, ELEMENTS_PREORDER));\n   trace(checkIterator(bst, INORDER, ELEMENTS_INORDER));\n   trace(checkIterator(bst, POSTORDER, ELEMENTS_POSTORDER));\n   trace(checkBalanceFactors(bst));\n   trace(bst2 = cloneBST(bst));\n   trace(removeBSTNode(bst, \"Sc\"));           /* Rotates right around Ru */\n   trace(removeBSTNode(bst, \"He\"));           /* Rotates left around Hf  */\n   trace(removeBSTNode(bst, \"I\"));            /* Double around Hf, Ho    */\n   trace(checkBalanceFactors(bst));\n   trace(checkOrdered(bst));\n   trace(checkIterator(bst2, INORDER, ELEMENTS_INORDER));\n}\n\nstatic void testIntBST(void) {\n   BST bst, bst2;\n   int value;\n\n   trace(bst = newBST(int));\n   trace(insertArray(bst, PRIMES, N_PRIMES));\n   trace(checkIterator(bst, INORDER, PRIMES));\n   trace(checkIterator(bst, PREORDER, PRIMES_PREORDER));\n   trace(checkOrdered(bst));\n   trace(checkBalanceFactors(bst));\n   trace(bst2 = cloneBST(bst));\n   trace(removeBSTNode(bst, 977));            /* Rotates left around 983 */\n   trace(removeBSTNode(bst, 311));            /* Deletes the root        */\n   trace(checkOrdered(bst));\n   trace(checkBalanceFactors(bst));\n   trace(checkIterator(bst2, INORDER, PRIMES));\n}\n\nstatic void insertArray(BST bst, void *array, int n) {\n   char *cptr;\n   string typeName;\n   GenericType key;\n   int size, i;\n\n   cptr = (char *) array;\n   typeName = getBaseTypeBST(bst);\n   size = getTypeSizeForType(typeName);\n   for (i = 0; i < n; i++) {\n      memcpy(&key, cptr, size);\n      insertBSTNode(bst, key);\n      cptr += size;\n   }\n}\n\nstatic void checkIterator(BST bst, TraversalOrder order, void *array) {\n   char *cptr;\n   CompareFn cmpFn;\n   ToStringFn toStringFn;\n   BSTNode node;\n   int size;\n\n   cptr = (char *) array;\n   cmpFn = getCompareFnBST(bst);\n   toStringFn = getToStringFn(getBaseTypeBST(bst));\n   size = getTypeSizeForType(getBaseTypeBST(bst));\n   foreach (node in newNodeIterator(bst, order)) {\n      if (cmpFn(&node->key, cptr) != 0) {\n         reportError(\"Incorrect key: %s\", toStringFn(node->key));\n      }\n      cptr += size;\n   }\n}\n\nstatic void checkOrdered(BST bst) {\n   CompareFn cmpFn;\n   BSTNode prev, node;\n   GenericType key1, key2;\n   int size;\n\n   size = getTypeSizeForType(getBaseTypeBST(bst));\n   cmpFn = getCompareFnBST(bst);\n   prev = NULL;\n   foreach (node in newNodeIterator(bst, INORDER)) {\n      if (prev != NULL) {\n         key1 = prev->key;\n         key2 = node->key;\n         if (cmpFn(&key1, &key2) >= 0) {\n            reportError(\"%s >= %s\", getKeyString(prev), getKeyString(node));\n         }\n      }\n      prev = node;\n   }\n}\n\nstatic void checkBalanceFactors(BST bst) {\n   BSTNode node;\n\n   foreach (node in newNodeIterator(bst, INORDER)) {\n      checkNodeBalance(bst, node);\n   }\n}\n\nstatic void checkNodeBalance(BST bst, BSTNode t) {\n   int actualBF, storedBF;\n\n   actualBF = treeHeight(getRightChild(t)) - treeHeight(getLeftChild(t));\n   storedBF = getBF(t);\n   if (abs(actualBF) > 1) {\n      reportError(\"Unbalanced tree at %s (%s)\", getKeyString(t),\n                  bfToString(actualBF));\n   }\n   if (storedBF != actualBF) {\n      reportError(\"bf incorrect for %s (%s should be %s)\", getKeyString(t),\n                  bfToString(storedBF), bfToString(actualBF));\n   }\n}\n\nstatic int treeHeight(BSTNode t) {\n   int lh, rh;\n\n   if (t == NULL) return 0;\n   lh = treeHeight(t->left);\n   rh = treeHeight(t->right);\n   return (lh > rh) ? lh + 1 : rh + 1;\n}\n\nstatic string bfToString(int bf) {\n   if (bf > 0) return concat(\"+\", integerToString(bf));\n   return integerToString(bf);\n}\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/bst.h",
    "content": "/*\n * File: bst.h\n * -----------\n * This interface supports a general abstraction for binary search trees.\n * A <b><i>binary search tree</i></b> (or <b><i>BST</i></b> for short) is\n * a binary tree in which the key in each node is greater than the keys\n * descending to the left and less than the keys descending to the right.\n *\n * <p>Although the <code>BST</code> and <code>BSTNode</code> types are\n * available to clients, most applications will find the <code>Set</code>\n * and <code>HashMap</code> types instead, which use the <code>BST</code>\n * type in their implementation.\n */\n\n#ifndef _bst_h\n#define _bst_h\n\n#include <stdarg.h>\n#include \"cmpfn.h\"\n#include \"cslib.h\"\n#include \"generic.h\"\n#include \"iterator.h\"\n\n/*\n * Type: BST\n * ---------\n * The abstract type for a binary search tree.\n */\n\ntypedef struct BSTCDT *BST;\n\n/*\n * Type: TraversalOrder\n * --------------------\n * This type allows clients to control the order of iteration.  Specifying\n * <code>PREORDER</code> means that the root node is processed before its\n * children, <code>INORDER</code> means that the root is processed between\n * the processing of the left and right children, and <code>POSTORDER</code>\n * means that the root is processed after its children.\n */\n\ntypedef enum {PREORDER, INORDER, POSTORDER} TraversalOrder;\n\n/*\n * Type: BSTNode\n * -------------\n * The abstract type for a tree node.\n */\n\ntypedef struct BSTNodeCDT *BSTNode;\n\n/*\n * Function: newBST\n * Usage: bst = newBST(type);\n * --------------------------\n * Creates a new empty binary search tree for keys with the specified base\n * type.  The <code>type</code> parameter must be an explicit type name\n * like <code>int</code> or <code>string</code>.\n */\n\n#define newBST(type) newBSTFromType(#type)\n\n/*\n * Function: newBSTFromType\n * Usage: bst = newBSTFromType(baseType);\n * --------------------------------------\n * Creates a new empty binary search tree for keys with the specified base\n * type expressed as a string.\n */\n\nBST newBSTFromType(string baseType);\n\n/*\n * Function: freeBST\n * Usage: freeBST(bst);\n * --------------------\n * Frees the storage for a binary search tree.  If nodes contain\n * data fields with allocated storage, the client must free this storage\n * by traversing the tree prior to calling <code>freeBST</code>.\n */\n\nvoid freeBST(BST bst);\n\n/*\n * Function: size\n * Usage: n = size(bst);\n * ---------------------\n * Returns the number of elements in the binary search tree.\n */\n\nint sizeBST(BST bst);\n\n/*\n * Function: isEmpty\n * Usage: if (isEmpty(bst)) . . .\n * ------------------------------\n * Returns <code>true</code> if the binary search tree has no entries.\n */\n\nbool isEmptyBST(BST bst);\n\n/*\n * Function: clearBST\n * Usage: clearBST(bst);\n * ---------------------\n * Removes all nodes from the BST.\n */\n\nvoid clearBST(BST bst);\n\n/*\n * Function: clone\n * Usage: newbst = clone(bst);\n * ---------------------------\n * Creates a copy of the BST.  The <code>clone</code> function copies\n * only the first level of the structure and does not copy the individual\n * elements.\n */\n\nBST cloneBST(BST bst);\n\n/*\n * Function: findBSTNode\n * Usage: node = findBSTNode(bst, key);\n * ------------------------------------\n * Applies the binary search algorithm to find a particular key\n * in the tree represented by <code>bst</code>.  If the key appears\n * in the tree, <code>findBSTNode</code> returns that node; if not,\n * <code>findBSTNode</code> returns <code>NULL</code>.\n */\n\nBSTNode findBSTNode(BST bst, ...);\n\n/*\n * Friend function: findBSTNodeFromArg\n * Usage: node = findBSTNodeFromArg(bst, any);\n * -------------------------------------------\n * Identical to <code>findBSTNode</code> except that the key is taken\n * from the generic argument.\n */\n\nBSTNode findBSTNodeFromArg(BST bst, GenericType any);\n\n/*\n * Function: insertBSTNode\n * Usage: node = insertBSTNode(bst, key);\n * --------------------------------------\n * Inserts a new node into a binary search tree, if it does not already\n * exist.  If a node already exists in the tree, <code>insertBSTNode</code>\n * returns that node; if not, <code>insertBSTNode</code> creates a new\n * node, copies the key value, and returns the newly created node.\n */\n\nBSTNode insertBSTNode(BST bst, ...);\n\n/*\n * Friend function: insertBSTNodeFromArg\n * Usage: node = insertBSTNodeFromArg(bst, any);\n * ---------------------------------------------\n * Identical to <code>insertBSTNode</code> except that the key is taken\n * from the generic argument.\n */\n\nBSTNode insertBSTNodeFromArg(BST bst, GenericType any);\n\n/*\n * Function: removeBSTNode\n * Usage: removeBSTNode(bst, key);\n * -------------------------------\n * Removes a node in the tree that matches the specified key.\n */\n\nvoid removeBSTNode(BST bst, ...);\n\n/*\n * Friend function: removeBSTNodeFromArg\n * Usage: node = removeBSTNodeFromArg(bst, any);\n * ---------------------------------------------\n * Identical to <code>removeBSTNode</code> except that the key is taken\n * from the generic argument.\n */\n\nvoid removeBSTNodeFromArg(BST bst, GenericType any);\n\n/*\n * Function: mapBST\n * Usage: mapBST(bst, fn, order, data);\n * ------------------------------------\n * Calls a function on every node in the binary search tree using the\n * specified iteration order.  The arguments to the callback function\n * are a pointer to the node and the <code>data</code> pointer.\n */\n\nvoid mapBST(BST bst, proc fn, TraversalOrder order, void *data);\n\n/*\n * Function: newNodeIterator\n * Usage: iterator = newNodeIterator(bst, order);\n * ----------------------------------------------\n * Returns an iterator for traversing the nodes in a binary search tree\n * in the specified order.  The <code>foreach</code> statement\n * automatically uses an <code>INORDER</code> traversal.\n */\n\nIterator newNodeIterator(BST bst, TraversalOrder order);\n\n/*\n * Function: getRootBST\n * Usage: root = getRootBST(bst);\n * ------------------------------\n * Returns the root node of the binary search tree.\n */\n\nBSTNode getRootBST(BST bst);\n\n/*\n * Function: getLeftChild\n * Usage: child = getLeftChild(node);\n * ----------------------------------\n * Returns the left child of the specified node in a binary search tree.\n */\n\nBSTNode getLeftChild(BSTNode node);\n\n/*\n * Function: getRightChild\n * Usage: child = getRightChild(node);\n * -----------------------------------\n * Returns the right child of the specified node in a binary search tree.\n */\n\nBSTNode getRightChild(BSTNode node);\n\n/*\n * Function: getKey\n * Usage: any = getKey(node);\n * --------------------------\n * Returns the key as a generic object\n */\n\nGenericType getKey(BSTNode node);\n\n/*\n * Function: getKeyString\n * Usage: str = getKeyString(node);\n * --------------------------------\n * Returns a string representation of the key.\n */\n\nstring getKeyString(BSTNode node);\n\n/*\n * Function: setNodeValue\n * Usage: setNodeValue(node, value);\n * ---------------------------------\n * Sets the value pointer associated with a <code>BSTNode</code>.\n */\n\nvoid setNodeValue(BSTNode node, void *value);\n\n/*\n * Function: getNodeValue\n * Usage: value = getNodeValue(node);\n * ----------------------------------\n * Returns the value pointer associated with a <code>BSTNode</code>.\n */\n\nvoid *getNodeValue(BSTNode node);\n\n/*\n * Function: getBaseTypeBST\n * Usage: baseType = getBaseTypeBST(bst);\n * --------------------------------------\n * Returns the name of the key type.\n */\n\nstring getBaseTypeBST(BST bst);\n\n/*\n * Function: getBaseTypeSizeBST\n * Usage: size = getBaseTypeSizeBST(bst);\n * --------------------------------------\n * Returns the size of the base type in bytes.\n */\n\nint getBaseTypeSizeBST(BST bst);\n\n/*\n * Function: setCompareFnBST\n * Usage: setCompareFnBST(bst, cmpFn);\n * -----------------------------------\n * Sets the comparison function for keys.  This method need not be\n * called for any of the standard types.\n */\n\nvoid setCompareFnBST(BST bst, CompareFn cmpFn);\n\n/*\n * Function: getCompareFnBST\n * Usage: cmpFn = getCompareFnBST(bst);\n * ------------------------------------\n * Returns the comparison function for keys.\n */\n\nCompareFn getCompareFnBST(BST bst);\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/charset.c",
    "content": "/*\n * File: charset.c\n * Last modified on Wed Dec 12 16:26:17 2012 by eroberts\n * -----------------------------------------------------\n * This file implements the CharSet type defined in charset.h\n */\n\n#include <stdarg.h>\n#include <stdio.h>\n#include <string.h>\n#include \"charset.h\"\n#include \"cslib.h\"\n#include \"foreach.h\"\n#include \"iterator.h\"\n#include \"itertype.h\"\n#include \"strlib.h\"\n#include \"unittest.h\"\n\n/* Constants */\n\n#ifdef _LP64\n#  define BIT_SHIFT_SIZE 6\n#  define BIT_ARRAY_SIZE 4\n#  define BIT_SHIFT_MASK 0x3F\n#else\n#  define BIT_SHIFT_SIZE 5\n#  define BIT_ARRAY_SIZE 8\n#  define BIT_SHIFT_MASK 0x1F\n#endif\n\n/*\n * Type: CharSetCDT\n * ----------------\n * This type defines the concrete structure of a character set.\n */\n\nstruct CharSetCDT {\n   IteratorHeader header;\n   long bits[BIT_ARRAY_SIZE];\n};\n\n/* Private function prototypes */\n\nstatic Iterator newCharSetIterator(void *collection);\nstatic bool stepCharSetIterator(Iterator it, void *dst);\nstatic void advanceCharSetIterator(Iterator it);\n\n/* Exported entries */\n\n/*\n * Function: newCharSet\n * Usage: set = newCharSet();\n * --------------------------\n * Creates an empty set of characters.\n */\n\nCharSet newCharSet() {\n   CharSet set;\n\n   set = newBlock(CharSet);\n   enableIteration(set, newCharSetIterator);\n   clearCharSet(set);\n   return set;\n}\n\nvoid freeCharSet(CharSet set) {\n   freeBlock(set);\n}\n\nint sizeCharSet(CharSet set) {\n   int ch, index, n;\n   long mask;\n\n   n = 0;\n   index = 0;\n   mask = 1L;\n   for (ch = 0; ch < 256; ch++) {\n      if ((set->bits[index] & mask) != 0) n++;\n      mask <<= 1;\n      if (mask == 0) {\n         index++;\n         mask = 1L;\n      }\n   }\n   return n;\n}\n\nbool isEmptyCharSet(CharSet set) {\n   int i;\n\n   for (i = 0; i < BIT_ARRAY_SIZE; i++) {\n      if (set->bits[i] != 0) return false;\n   }\n   return true;\n}\n\nvoid clearCharSet(CharSet set) {\n   int i;\n\n   for (i = 0; i < BIT_ARRAY_SIZE; i++) {\n      set->bits[i] = 0;\n   }\n}\n\nCharSet cloneCharSet(CharSet set) {\n   CharSet newset;\n   int i;\n\n   newset = newBlock(CharSet);\n   enableIteration(newset, newCharSetIterator);\n   for (i = 0; i < BIT_ARRAY_SIZE; i++) {\n      newset->bits[i] = set->bits[i];\n   }\n   return newset;\n}\n\nbool containsCharSet(CharSet set, char ch) {\n   long mask;\n\n   mask = 1L << (ch & BIT_SHIFT_MASK);\n   return (set->bits[(ch & 0xFF) >> BIT_SHIFT_SIZE] & mask) != 0;\n}\n\nvoid addCharSet(CharSet set, char ch) {\n   long mask;\n\n   mask = 1L << (ch & BIT_SHIFT_MASK);\n   set->bits[(ch & 0xFF) >> BIT_SHIFT_SIZE] |= mask;\n}\n\nvoid addString(CharSet set, string str) {\n   int i, n;\n\n   n = stringLength(str);\n   for (i = 0; i < n; i++) {\n      addCharSet(set, str[i]);\n   }\n}\n\nvoid removeCharSet(CharSet set, char ch) {\n   long mask;\n\n   mask = 1L << (ch & BIT_SHIFT_MASK);\n   set->bits[(ch & 0xFF) >> BIT_SHIFT_SIZE] &= ~mask;\n}\n\nbool equalsCharSet(CharSet s1, CharSet s2) {\n   int i;\n\n   for (i = 0; i < BIT_ARRAY_SIZE; i++) {\n      if (s1->bits[i] != s2->bits[i]) return false;\n   }\n   return true;\n}\n\nbool isSubsetCharSet(CharSet s1, CharSet s2) {\n   int i;\n\n   for (i = 0; i < BIT_ARRAY_SIZE; i++) {\n      if ((s1->bits[i] & ~s2->bits[i]) != 0) return false;\n   }\n   return true;\n}\n\nCharSet unionCharSet(CharSet s1, CharSet s2) {\n   CharSet set;\n   int i;\n\n   set = newBlock(CharSet);\n   for (i = 0; i < BIT_ARRAY_SIZE; i++) {\n      set->bits[i] = s1->bits[i] | s2->bits[i];\n   }\n   return set;\n}\n\nCharSet intersectionCharSet(CharSet s1, CharSet s2) {\n   CharSet set;\n   int i;\n\n   set = newCharSet();\n   for (i = 0; i < BIT_ARRAY_SIZE; i++) {\n      set->bits[i] = s1->bits[i] & s2->bits[i];\n   }\n   return set;\n}\n\nCharSet setDifferenceCharSet(CharSet s1, CharSet s2) {\n   CharSet set;\n   int i;\n\n   set = newCharSet();\n   for (i = 0; i < BIT_ARRAY_SIZE; i++) {\n      set->bits[i] = s1->bits[i] & ~s2->bits[i];\n   }\n   return set;\n}\n\n/* Private functions */\n\nstatic Iterator newCharSetIterator(void *collection) {\n   Iterator it;\n\n   it = newStepIterator(1, stepCharSetIterator);\n   setCollection(it, collection);\n   advanceCharSetIterator(it);\n   return it;\n}\n\nstatic bool stepCharSetIterator(Iterator it, void *dst) {\n   int *cp;\n\n   cp = (int *) getIteratorData(it);\n   if (cp == NULL) return false;\n   *((char *) dst) = (char) *cp;\n   advanceCharSetIterator(it);\n   return true;\n}\n\nstatic void advanceCharSetIterator(Iterator it) {\n   CharSet set;\n   int *cp;\n   long mask;\n\n   set = (CharSet) getCollection(it);\n   cp = (int *) getIteratorData(it);\n   if (cp == NULL) {\n      cp = newBlock(int *);\n      *cp = -1;\n   }\n   while (++(*cp) < 256) {\n      mask = 1L << (*cp & BIT_SHIFT_MASK);\n      if (set->bits[*cp >> BIT_SHIFT_SIZE] & mask) break;\n   }\n   if (*cp == 256) {\n      freeBlock(cp);\n      setIteratorData(it, NULL);\n   }\n}\n\n/**********************************************************************/\n/* Unit test for the charset module                                   */\n/**********************************************************************/\n\n#ifndef _NOTEST_\n\n/* Private function prototypes */\n\nstatic void testStringCharSet(void);\nstatic void testCharacterCharSet(void);\nstatic CharSet createCharSet(string str);\n\n/* Unit test */\n\nvoid testCharSetModule(void) {\n   CharSet vowels, consonants, lowercase, onePointTiles, onePointConsonants;\n   CharSet set;\n\n   trace(vowels = createCharSet(\"aeiou\"));\n   trace(consonants = createCharSet(\"bcdfghjklmnpqrstvwxyz\"));\n   trace(lowercase = createCharSet(\"abcdefghijklmnopqrstuvwxyz\"));\n   trace(onePointTiles = createCharSet(\"etaoinsrlu\"));\n   test(equals(onePointTiles, createCharSet(\"aeilnorstu\")), true);\n   test(isSubset(vowels, onePointTiles), true);\n   test(isSubset(consonants, onePointTiles), false);\n   test(equals(union(vowels, consonants), lowercase), true);\n   trace(onePointConsonants = intersection(consonants, onePointTiles));\n   test(equals(onePointConsonants, createCharSet(\"lnrst\")), true);\n   test(equals(setDifference(lowercase, consonants), vowels), true);\n   trace(set = clone(vowels));\n   test(equals(set, vowels), true);\n   trace(remove(set, 'o'));\n   test(equals(vowels, createCharSet(\"aeiou\")), true);\n   test(equals(set, createCharSet(\"aeiu\")), true);\n}\n\nstatic CharSet createCharSet(string str) {\n   CharSet set;\n\n   set = newCharSet();\n   addString(set, str);\n   return set;\n}\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/charset.h",
    "content": "/*\n * File: charset.h\n * ---------------\n * This interface exports an abstract type that represents sets of characters.\n */\n\n#ifndef _charset_h\n#define _charset_h\n\n#include <stdarg.h>\n#include \"cslib.h\"\n#include \"generic.h\"\n\n/*\n * Type: CharSet\n * -------------\n * Defines the abstract type used to represent sets of characters\n */\n\ntypedef struct CharSetCDT *CharSet;\n\n/* Exported entries */\n\n/*\n * Function: newCharSet\n * Usage: set = newCharSet();\n * --------------------------\n * Creates an empty set capable of holding characters.\n */\n\nCharSet newCharSet();\n\n/*\n * Function: freeCharSet\n * Usage: freeCharSet(set);\n * ------------------------\n * Frees the storage associated with a character set.\n */\n\nvoid freeCharSet(CharSet set);\n\n/*\n * Function: size\n * Usage: n = size(set);\n * ---------------------\n * Returns the number of elements in the set.\n */\n\nint sizeCharSet(CharSet set);\n\n/*\n * Function: isEmpty\n * Usage: if (isEmpty(set)) . . .\n * ------------------------------\n * Returns <code>true</code> if the set has no elements.\n */\n\nbool isEmptyCharSet(CharSet set);\n\n/*\n * Function: clear\n * Usage: clear(set);\n * ------------------\n * Removes all characters from the set.\n */\n\nvoid clearCharSet(CharSet set);\n\n/*\n * Function: clone\n * Usage: newset = clone(set);\n * ---------------------------\n * Creates a copy of the set.  The <code>clone</code> function copies\n * only the first level of the structure and does not copy the individual\n * elements.\n */\n\nCharSet cloneCharSet(CharSet set);\n\n/*\n * Function: contains\n * Usage: if (contains(set, ch)) . . .\n * -----------------------------------\n * Returns <code>true</code> if the character <code>ch</code> is a member\n * of the set.\n */\n\nbool containsCharSet(CharSet set, char ch);\n\n/*\n * Function: add\n * Usage: add(set, ch);\n * --------------------\n * Adds the character <code>ch</code> to the set.\n */\n\nvoid addCharSet(CharSet set, char ch);\n\n/*\n * Function: addString\n * Usage: addString(set, str);\n * ---------------------------\n * Adds the characters in <code>str</code> to the set.\n */\n\nvoid addString(CharSet set, string str);\n\n/*\n * Function: remove\n * Usage: remove(set, ch);\n * -----------------------\n * Removes an element from the set.\n */\n\nvoid removeCharSet(CharSet set, char ch);\n\n/*\n * Function: equals\n * Usage: if (equals(s1, s2)) . . .\n * --------------------------------\n * Returns <code>true</code> if <code>s1</code> and <code>s2</code>\n * are equal, which means that they contain the same elements.\n */\n\nbool equalsCharSet(CharSet s1, CharSet s2);\n\n/*\n * Function: isSubset\n * Usage: if (isSubset(s1, s2)) . . .\n * ----------------------------------\n * Returns <code>true</code> if <code>s1</code> is a subset of <code>s2</code>.\n */\n\nbool isSubsetCharSet(CharSet s1, CharSet s2);\n\n/*\n * Function: union\n * Usage: set = union(s1, s2);\n * ---------------------------\n * Returns a new set consisting of all elements in either <code>s1</code>\n * or <code>s2</code>.\n */\n\nCharSet unionCharSet(CharSet s1, CharSet s2);\n\n/*\n * Function: intersection\n * Usage: set = intersection(s1, s2);\n * ----------------------------------\n * Returns a new set consisting of all elements in both <code>s1</code>\n * and <code>s2</code>.\n */\n\nCharSet intersectionCharSet(CharSet s1, CharSet s2);\n\n/*\n * Function: setDifference\n * Usage: set = setDifference(s1, s2);\n * -----------------------------------\n * Returns a new set consisting of all elements in <code>s1</code> that\n * are not elements of <code>s2</code>.\n */\n\nCharSet setDifferenceCharSet(CharSet s1, CharSet s2);\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/cmdscan.c",
    "content": "/*\n * File: cmdscan.c\n * Last modified on Mon Dec  3 01:43:13 2012 by eroberts\n * -----------------------------------------------------\n * This file implements the cmdscan.h interface.\n */\n\n#include <stdio.h>\n#include \"cmdscan.h\"\n#include \"cslib.h\"\n#include \"exception.h\"\n#include \"generic.h\"\n#include \"hashmap.h\"\n#include \"iterator.h\"\n#include \"itertype.h\"\n#include \"simpio.h\"\n#include \"strlib.h\"\n#include \"tokenscanner.h\"\n\n/*\n * Type: CommandScannerCDT\n * -----------------------\n * This type defines the concrete structure of the command scanner.\n */\n\nstruct CommandScannerCDT {\n   IteratorHeader header;\n   string line;\n   string cmdName;\n   HashMap cmdTable;\n   TokenScanner scanner;\n   void *data;\n   bool quit;\n};\n\n/*\n * Type: CommandEntry\n * ------------------\n * This type defines the entry for an individual command.\n */\n\ntypedef struct {\n   string cmdName;\n   CommandFn cmdFn;\n} *CommandEntry;\n\n/* Private function prototypes */\n\nstatic Iterator newCommandIterator(void *collection);\nstatic void addCommandToIterator(string key, void *value, void *data);\n\n/* Exported entries */\n\nCommandScanner newCommandScanner(void) {\n   CommandScanner cs;\n\n   cs = newBlock(CommandScanner);\n   cs->cmdTable = newHashMap();\n   cs->scanner = newTokenScanner();\n   ignoreSpaces(cs->scanner);\n   cs->data = NULL;\n   cs->quit = false;\n   return cs;\n}\n\nvoid freeCommandScanner(CommandScanner cs) {\n   freeSymbolTable(cs->cmdTable);\n   freeTokenScanner(cs->scanner);\n   freeBlock(cs);\n}\n\nvoid defineCommand(CommandScanner cs, string cmdName, CommandFn cmdFn) {\n   CommandEntry entry;\n\n   entry = newBlock(CommandEntry);\n   entry->cmdName = copyString(cmdName);\n   entry->cmdFn = cmdFn;\n   put(cs->cmdTable, cmdName, entry);\n}\n\nvoid setCommandData(CommandScanner cs, void *data) {\n   cs->data = data;\n}\n\nvoid *getCommandData(CommandScanner cs) {\n   return cs->data;\n}\n\nstring readCommandToken(CommandScanner cs) {\n   return nextToken(cs->scanner);\n}\n\nstring getCommandLine(CommandScanner cs) {\n   return copyString(cs->line);\n}\n\nstring getCommandName(CommandScanner cs) {\n   return copyString(cs->cmdName);\n}\n\nTokenScanner getTokenScanner(CommandScanner cs) {\n   return cs->scanner;\n}\n\nvoid commandLoop(CommandScanner cs, string prompt) {\n   while (!cs->quit) {\n      printf(\"%s\", prompt);\n      try {\n         if (!executeCommand(cs, getLine())) {\n            printf(\"Illegal command: %s\\n\", cs->line);\n         }\n      } catch (ErrorException) {\n         printf(\"error: %s\\n\", (string) getExceptionValue());\n      } endtry\n   }\n}\n\nbool executeCommand(CommandScanner cs, string line) {\n   CommandEntry entry;\n\n   cs->line = line;\n   setInputString(cs->scanner, line);\n   cs->cmdName = nextToken(cs->scanner);\n   entry = (CommandEntry) get(cs->cmdTable, cs->cmdName);\n   if (entry == NULL) return false;\n   entry->cmdFn(cs);\n   return true;\n}\n\nvoid quitCommand(CommandScanner cs) {\n   cs->quit = true;\n}\n\n/* Private functions to enable iteration */\n\n/*\n * Implementation notes: newCommandIterator, addCommandToIterator\n * --------------------------------------------------------------\n * These functions implement the polymorphic iterator facility\n * for command scanners.  For details on the general strategy,\n * see the comments in itertype.h interface.\n */\n\nstatic Iterator newCommandIterator(void *collection) {\n   CommandScanner cs;\n   Iterator iterator;\n\n   cs = (CommandScanner) collection;\n   iterator = newListIterator(sizeof (string), stringCmpFn);\n   mapSymbolTable(addCommandToIterator, cs->cmdTable, iterator);\n   return iterator;\n}\n\nstatic void addCommandToIterator(string key, void *value, void *data) {\n   string newCommand;\n\n   newCommand = copyString(key);\n   addToIteratorList((Iterator) data, &newCommand);\n}\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/cmdscan.h",
    "content": "/*\n * File: cmdscan.h\n * ---------------\n * This interface exports a simple command-line scanner.\n */\n\n#ifndef _cmdscan_h\n#define _cmdscan_h\n\n#include \"cslib.h\"\n#include \"tokenscanner.h\"\n\n/*\n * Type: CommandScanner\n * --------------------\n * The <code>CommandScanner</code> type offers a simple command-scanning\n * abstraction that is primarily used to construct test programs.  The\n * typical pattern of use requires the following steps:\n *\n *<ol>\n * <li>Call <code>newCommandScanner</code> to create an empty command scanner.\n * <li>Call <code>defineCommand</code> to associate commands with functions.\n * <li>Call <code>commandLoop</code> to execute a command loop.\n *</ol>\n *\n * Command scanners are implemented as a collection type, so that\n * iterating over the scanner returns the name of each command in\n * lexicographic order.\n */\n\ntypedef struct CommandScannerCDT *CommandScanner;\n\n/*\n * Type: CommandFn\n * ---------------\n * This type represents the space of functions that can be used\n * as commands.  Each command takes the entire command scanner\n * as an argument, which gives the callback function access to\n * the various data fields associated with the scanner.\n */\n\ntypedef void (*CommandFn)(CommandScanner cs);\n\n/*\n * Function: newCommandScanner\n * Usage: cs = newCommandScanner();\n * --------------------------------\n * Allocates a new command scanner.\n */\n\nCommandScanner newCommandScanner(void);\n\n/*\n * Function: freeCommandScanner\n * Usage: freeCommandScanner(cs);\n * ------------------------------\n * Frees the specified command scanner.\n */\n\nvoid freeCommandScanner(CommandScanner cs);\n\n/*\n * Function: defineCommand\n * Usage: defineCommand(cs, cmdName, cmdFn);\n * -----------------------------------------\n * Adds an entry to the internal command table for the command scanner\n * by associating the specified command name with the corresponding function.\n */\n\nvoid defineCommand(CommandScanner cs, string cmdName, CommandFn cmdFn);\n\n/*\n * Function: commandLoop\n * Usage: commandLoop(cs, prompt);\n * -------------------------------\n * Executes a loop that reads and executes commands from the user.  On\n * each cycle, <code>commandLoop</code> performs the following operations:\n *\n * <p><ol>\n * <li>Prints the specified prompt\n * <li>Reads in a line from the user\n * <li>Checks to see if the first token on the line is a command\n * <li>Executes the function associated with that command\n * </ol><p>\n *\n * If a command is undefined, <code>commandLoop</code> displays a message\n * to that effect and allows the user to enter a new command.  If any\n * errors occur in the command processing, they are caught by the\n * command loop.\n */\n\nvoid commandLoop(CommandScanner cs, string prompt);\n\n/*\n * Function: executeCommand\n * Usage: ok = executeCommand(cs, line);\n * -------------------------------------\n * Executes a command line as if it were entered by the user.\n * The function returns <code>true</code> if the command is\n * defined, and <code>false</code> otherwise.\n */\n\nbool executeCommand(CommandScanner cs, string line);\n\n/*\n * Function: setCommandData\n * Usage: setCommandData(cs, data);\n * --------------------------------\n * Associates a data block with the command scanner.  The pointer to the\n * data block is passed to the callback functions for the various commands.\n */\n\nvoid setCommandData(CommandScanner cs, void *data);\n\n/*\n * Function: getCommandData\n * Usage: data = getCommandData(cs);\n * ---------------------------------\n * Returns the data block associated with the command scanner.\n */\n\nvoid *getCommandData(CommandScanner cs);\n\n/*\n * Function: readCommandToken\n * Usage: token = readCommandToken(cs);\n * ------------------------------------\n * Reads the next token from the command line, which is returned as a\n * string.  If no more tokens exist, <code>readCommandToken</code>\n * returns the empty string.\n */\n\nstring readCommandToken(CommandScanner cs);\n\n/*\n * Function: getCommandLine\n * Usage: line = getCommandLine(cs);\n * ---------------------------------\n * Returns the current command line.\n */\n\nstring getCommandLine(CommandScanner cs);\n\n/*\n * Function: getCommandName\n * Usage: name = getCommandName(cs);\n * ---------------------------------\n * Returns the current command name.\n */\n\nstring getCommandName(CommandScanner cs);\n\n/*\n * Function: getTokenScanner\n * Usage: scanner = getTokenScanner(cs);\n * -------------------------------------\n * Returns the <code>TokenScanner</code> used internally to parse tokens.\n */\n\nTokenScanner getTokenScanner(CommandScanner cs);\n\n/*\n * Function: quitCommand\n * Usage: defineCommand(cs, \"quit\", quitCommand);\n * ----------------------------------------------\n * This callback function exits from the command scanner.\n */\n\nvoid quitCommand(CommandScanner cs);\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/cmpfn.c",
    "content": "/*\n * File: cmpfn.c\n * Last modified on Wed Apr  9 07:29:52 2008 by eroberts\n * -----------------------------------------------------\n * This file implements the comparison functions exported by\n * the cmpfn.h interface.  The reason to centralize them in\n * a single module is to allow the same functions to be\n * shared among many different modules.\n */\n\n#include <stdio.h>\n#include \"cmpfn.h\"\n#include \"cslib.h\"\n#include \"strlib.h\"\n\n/* Exported entries */\n\nint intCmpFn(const void *p1, const void *p2) {\n   int v1, v2;\n\n   v1 = *((int *) p1);\n   v2 = *((int *) p2);\n   if (v1 == v2) return 0;\n   return (v1 < v2) ? -1 : +1;\n}\n\nint shortCmpFn(const void *p1, const void *p2) {\n   short v1, v2;\n\n   v1 = *((short *) p1);\n   v2 = *((short *) p2);\n   if (v1 == v2) return 0;\n   return (v1 < v2) ? -1 : +1;\n}\n\nint longCmpFn(const void *p1, const void *p2) {\n   long v1, v2;\n\n   v1 = *((long *) p1);\n   v2 = *((long *) p2);\n   if (v1 == v2) return 0;\n   return (v1 < v2) ? -1 : +1;\n}\n\nint charCmpFn(const void *p1, const void *p2) {\n   unsigned char v1, v2;\n\n   v1 = *((unsigned char *) p1);\n   v2 = *((unsigned char *) p2);\n   if (v1 == v2) return 0;\n   return (v1 < v2) ? -1 : +1;\n}\n\nint floatCmpFn(const void *p1, const void *p2) {\n   float v1, v2;\n\n   v1 = *((float *) p1);\n   v2 = *((float *) p2);\n   if (v1 == v2) return 0;\n   return (v1 < v2) ? -1 : +1;\n}\n\nint doubleCmpFn(const void *p1, const void *p2) {\n   double v1, v2;\n\n   v1 = *((double *) p1);\n   v2 = *((double *) p2);\n   if (v1 == v2) return 0;\n   return (v1 < v2) ? -1 : +1;\n}\n\nint unsignedCmpFn(const void *p1, const void *p2) {\n   unsigned v1, v2;\n\n   v1 = *((unsigned *) p1);\n   v2 = *((unsigned *) p2);\n   if (v1 == v2) return 0;\n   return (v1 < v2) ? -1 : +1;\n}\n\nint unsignedShortCmpFn(const void *p1, const void *p2) {\n   unsigned short v1, v2;\n\n   v1 = *((unsigned short *) p1);\n   v2 = *((unsigned short *) p2);\n   if (v1 == v2) return 0;\n   return (v1 < v2) ? -1 : +1;\n}\n\nint unsignedLongCmpFn(const void *p1, const void *p2) {\n   unsigned long v1, v2;\n\n   v1 = *((unsigned long *) p1);\n   v2 = *((unsigned long *) p2);\n   if (v1 == v2) return 0;\n   return (v1 < v2) ? -1 : +1;\n}\n\nint unsignedCharCmpFn(const void *p1, const void *p2) {\n   unsigned char v1, v2;\n\n   v1 = *((unsigned char *) p1);\n   v2 = *((unsigned char *) p2);\n   if (v1 == v2) return 0;\n   return (v1 < v2) ? -1 : +1;\n}\n\nint stringCmpFn(const void *p1, const void *p2) {\n   return stringCompare(*((string *) p1), *((string *) p2));\n}\n\nint pointerCmpFn(const void *p1, const void *p2) {\n   void *v1, *v2;\n\n   v1 = *((void **) p1);\n   v2 = *((void **) p2);\n   if (v1 == v2) return 0;\n   return (v1 < v2) ? -1 : +1;\n}\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/cmpfn.h",
    "content": "/*\n * File: cmpfn.h\n * -------------\n * This interface exports several comparison functions for use with the\n * other library packages.\n */\n\n#ifndef _cmpfn_h\n#define _cmpfn_h\n\n#include \"cslib.h\"\n\n/*\n * Type: CompareFn\n * ---------------\n * This type defines the type space of comparison functions,\n * each of which take the addresses of their arguments and\n * return an integer from the set {-1, 0, +1} depending on\n * whether the first argument is less than, equal to, or\n * greater than the second.\n */\n\ntypedef int (*CompareFn)(const void *p1, const void *p2);\n\n/*\n * Function: intCmpFn\n * ------------------\n * Compares two values of type <code>int</code> whose addresses are\n * supplied by the pointer arguments <code>p1</code> and <code>p2</code>.\n */\n\nint intCmpFn(const void *p1, const void *p2);\n\n/*\n * Function: shortCmpFn\n * --------------------\n * Compares two values of type <code>short</code> whose addresses are\n * supplied by the pointer arguments <code>p1</code> and <code>p2</code>.\n */\n\nint shortCmpFn(const void *p1, const void *p2);\n\n/*\n * Function: longCmpFn\n * -------------------\n * Compares two values of type <code>long</code> whose addresses are\n * supplied by the pointer arguments <code>p1</code> and <code>p2</code>.\n */\n\nint longCmpFn(const void *p1, const void *p2);\n\n/*\n * Function: charCmpFn\n * -------------------\n * Compares two values of type <code>char</code> whose addresses are\n * supplied by the pointer arguments <code>p1</code> and <code>p2</code>.\n */\n\nint charCmpFn(const void *p1, const void *p2);\n\n/*\n * Function: floatCmpFn\n * --------------------\n * Compares two values of type <code>float</code> whose addresses are\n * supplied by the pointer arguments <code>p1</code> and <code>p2</code>.\n */\n\nint floatCmpFn(const void *p1, const void *p2);\n\n/*\n * Function: doubleCmpFn\n * ---------------------\n * Compares two values of type <code>double</code> whose addresses are\n * supplied by the pointer arguments <code>p1</code> and <code>p2</code>.\n */\n\nint doubleCmpFn(const void *p1, const void *p2);\n\n/*\n * Function: unsignedCmpFn\n * -----------------------\n * Compares two values of type <code>unsigned</code> whose addresses are\n * supplied by the pointer arguments <code>p1</code> and <code>p2</code>.\n */\n\nint unsignedCmpFn(const void *p1, const void *p2);\n\n/*\n * Function: unsignedShortCmpFn\n * ----------------------------\n * Compares two values of type <code>unsignedshort</code> whose addresses are\n * supplied by the pointer arguments <code>p1</code> and <code>p2</code>.\n */\n\nint unsignedShortCmpFn(const void *p1, const void *p2);\n\n/*\n * Function: unsignedLongCmpFn\n * ---------------------------\n * Compares two values of type <code>unsignedlong</code> whose addresses are\n * supplied by the pointer arguments <code>p1</code> and <code>p2</code>.\n */\n\nint unsignedLongCmpFn(const void *p1, const void *p2);\n\n/*\n * Function: unsignedCharCmpFn\n * ---------------------------\n * Compares two values of type <code>unsignedchar</code> whose addresses are\n * supplied by the pointer arguments <code>p1</code> and <code>p2</code>.\n */\n\nint unsignedCharCmpFn(const void *p1, const void *p2);\n\n/*\n * Function: stringCmpFn\n * ---------------------\n * Compares two values of type <code>string</code> whose addresses are\n * supplied by the pointer arguments <code>p1</code> and <code>p2</code>.\n */\n\nint stringCmpFn(const void *p1, const void *p2);\n\n/*\n * Function: pointerCmpFn\n * ----------------------\n * Compares two values of type <code>pointer</code> whose addresses are\n * supplied by the pointer arguments <code>p1</code> and <code>p2</code>.\n * Pointer comparison is based on the numeric equivalent of the pointer.\n */\n\nint pointerCmpFn(const void *p1, const void *p2);\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/cslib.c",
    "content": "/*\n * File: cslib.c\n * Last modified on Fri Sep 26 09:35:31 2014 by eroberts\n * -----------------------------------------------------\n * This file implements the general C library package.  See the\n * interface description in cslib.h for details.\n */\n\n#include <stdio.h>\n#include <stddef.h>\n#include <string.h>\n#include <stdarg.h>\n#include \"exception.h\"\n#include \"cslib.h\"\n\n/* Constants */\n\n#define MAX_MESSAGE 500\n\n/* Section 2 -- Memory allocation */\n\n/*\n * Type: BlockHeader\n * -----------------\n * The smallest structure within the allocator is called a block and\n * consists of the actual allocated memory returned to the client, plus\n * the following header information:\n *\n *                  +---------------------+\n *     base addr -> |       password      |\n *                  +---------------------+\n *                  |  block type string  |\n *                  +---------------------+\n *                  | size of client data |\n *                  +---------------------+\n *                  | client data pointer |\n *                  +---------------------+\n *   client addr -> |          .          |\n *                  |          .          |\n *                  |          .          |\n *                  +---------------------+\n *\n * The password is a special value unlikely to appear as a data value.\n */\n\ntypedef struct BlockHeader {\n   union {\n      size_t _password;\n      struct BlockHeader *_chain;\n   } block_union;\n   char *type;\n   size_t size;\n   void *data;\n} BlockHeader;\n\n#define password block_union._password\n#define chain block_union._chain\n#define PASSWORD 314159265L\n\n/*\n * Implementation notes:\n * ---------------------\n */\n\n/* Memory allocation implementation */\n\nvoid *getBlock(size_t nbytes) {\n   return getTypedBlock(nbytes, \"?\");\n}\n\nvoid *getTypedBlock(size_t nbytes, string type) {\n   BlockHeader *base;\n\n   base = (BlockHeader *) malloc(nbytes + sizeof(BlockHeader));\n   if (base == NULL) error(\"No memory available\");\n   base->password = PASSWORD;\n   base->type = type;\n   base->size = nbytes;\n   base->data = NULL;\n   return (void *) ((char *) base + sizeof(BlockHeader));\n}\n\nvoid freeBlock(void *ptr) {\n   BlockHeader *base;\n\n   base = (BlockHeader *) ((char *) ptr - sizeof(BlockHeader));\n   if (base->password == PASSWORD) {\n      base->password = 0;\n      free(base);\n   }\n}\n\nstring getBlockType(void *ptr) {\n   BlockHeader *base;\n\n   base = (BlockHeader *) ((char *) ptr - sizeof(BlockHeader));\n   return (base->password == PASSWORD) ? base->type : \"?\";\n}\n\nvoid setBlockData(void *ptr, void *value) {\n   BlockHeader *base;\n\n   base = (BlockHeader *) ((char *) ptr - sizeof(BlockHeader));\n   if (base->password != PASSWORD) {\n      error(\"setBlockData: Block has not been allocated\");\n   }\n   base->data = value;\n}\n\nvoid *getBlockData(void *ptr) {\n   BlockHeader *base;\n\n   base = (BlockHeader *) ((char *) ptr - sizeof(BlockHeader));\n   if (base->password != PASSWORD) {\n      error(\"getBlockData: Block has not been allocated\");\n   }\n   return base->data;\n}\n\nvoid markAsPermanent(void *ptr) {\n   // Fill in when the garbage collector goes back in\n}\n\n/* Section 3 -- error handling */\n\nextern void unhandledError(string msg);\n\nvoid error(string msg, ...) {\n   va_list args;\n   char errbuf[MAX_MESSAGE + 1];\n   string errmsg;\n   int errlen;\n\n   va_start(args, msg);\n   vsnprintf(errbuf, MAX_MESSAGE, msg, args);\n   va_end(args);\n   errlen = strlen(errbuf);\n   if (errlen >= MAX_MESSAGE) {\n      unhandledError(\"error message too long\");\n   }\n   errmsg = (string) malloc(errlen + 1);\n   if (errmsg == NULL) {\n      errmsg = \"No memory available\";\n   } else {\n      strcpy(errmsg, errbuf);\n   }\n   throwException(&ErrorException, \"ErrorException\", errmsg);\n}\n\n/* Section 4 -- Redefine main */\n\n#undef main\n\nextern void main_(int argc, string argv[]);\n\nstatic proc exitHook = NULL;\nstatic int argCount;\nstatic string *argArray;\n\nint main(int argc, string argv[]) {\n   int i;\n\n   argCount = argc;\n   argArray = newArray(argc + 1, string);\n   for (i = 0; i < argc; i++) {\n      argArray[i] = argv[i];\n   }\n   argArray[argc] = NULL;\n   main_(argc, argv);\n   if (exitHook != NULL) {\n      exitHook();\n   }\n   return 0;\n}\n\n/*\n * Function: getMainArgCount\n * Usage: count = getMainArgCount();\n * ---------------------------------\n * Returns the argument count for the main program.\n */\n\nint getMainArgCount(void) {\n   return argCount;\n}\n\n/*\n * Function: getMainArgArray\n * Usage: array = getMainArgArray();\n * ---------------------------------\n * Returns a NULL-terminated copy of the argument array passed\n * to the main program.\n */\n\nstring *getMainArgArray(void) {\n   return argArray;\n}\n\n/*\n * Function: setExitHook\n * Usage: setExitHook(hook);\n * -------------------------\n * Sets the global exit hook for the process.  This mechanism\n * is used by implementations of the graphics library to gain\n * control before the process exits.\n */\n\nvoid setExitHook(proc hook) {\n   exitHook = hook;\n}\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/cslib.h",
    "content": "/*\n * File: cslib.h\n * -------------\n * This interface defines a basic set of definitions that are shared\n * among all interfaces in the package.  These basic definitions include:\n *\n *<ol>\n *  <li>Declarations for several new &ldquo;primitive&rdquo; types used\n *      throughout the libraries as fundamental types.\n *\n *  <li>A function for error handling.\n *\n *  <li>A flexible set of functions for memory allocation.\n *</ol>\n */\n\n#ifndef _cslib_h\n#define _cslib_h\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <stddef.h>\n\n/* Section 1 -- Define new \"primitive\" types */\n\n/*\n * Type: bool\n * ----------\n * This type defines the space of Boolean data using the constants\n * <code>false</code> and <code>true</code>.\n */\n\n#ifdef bool\n#  undef bool\n#endif\n\n#ifdef false\n#  undef false\n#endif\n\n#ifdef true\n#  undef true\n#endif\n\ntypedef enum {false, true} bool;\n\n/*\n * Type: string\n * ------------\n * This type is defined to be identical with <code>char *</code>.\n */\n\ntypedef char *string;\n\n/*\n * Type: proc\n * ----------\n * This function type represents an arbitrary procedure that can be passed\n * to an abstraction and then called back from the implementation.\n */\n\ntypedef void (*proc)();\n\n/* Section 2 -- Memory allocation */\n\n/*\n * General notes\n * -------------\n * These functions provide a common interface for memory allocation.\n * All functions in the library that allocate memory do so using\n * <code>getBlock</code> and <code>freeBlock</code>.  Even though the\n * ANSI standard defines <code>malloc</code> and <code>free</code> for\n * the same purpose, using <code>getBlock</code> and <code>freeBlock</code>\n * provides greater compatibility with non-ANSI implementations, automatic\n * out-of-memory error detection, limited type checking, and the possibility\n * of installing a garbage-collecting allocator.\n */\n\n/*\n * Function: getBlock\n * Usage: ptr = getBlock(nbytes);\n * ------------------------------\n * Allocates a block of memory of the given size.  If no memory is\n * available, <code>getBlock</code> generates an error.\n */\n\nvoid *getBlock(size_t nbytes);\n\n/*\n * Private function: getTypedBlock\n * -------------------------------\n * Returns a block with the indicated type marker.  This function is\n * called from the <code>newBlock</code> and <code>newArray</code>\n * macros and should not be invoked by clients.\n */\n\nvoid *getTypedBlock(size_t nbytes, string type);\n\n/*\n * Function: freeBlock\n * Usage: freeBlock(ptr);\n * ----------------------\n * Frees the memory associated with <code>ptr</code>, which must have\n * been allocated using <code>getBlock</code>, <code>newBlock</code>, or\n * <code>newArray</code>.  If the block appears to be in static memory\n * or allocated by <code>malloc</code>, the call to <code>freeBlock</code>\n * has no effect.\n */\n\nvoid freeBlock(void *ptr);\n\n/*\n * Function: getBlockType\n * Usage: type = getBlockType(ptr);\n * --------------------------------\n * Returns a string indicating the type of the block.  If the block is\n * created using the <code>newBlock</code> macro, the string is the type\n * argument.  If the block is created using <code>newArray</code>, the\n * string consists of the base type followed by the string <code>\"[]\"</code>.\n * In all other cases, the type is returned as <code>\"?\"</code>.  This\n * string is constant and should not be freed.\n */\n\nstring getBlockType(void *ptr);\n\n/*\n * Function: setBlockData\n * Usage: setBlockData(ptr, value);\n * --------------------------------\n * Sets the data field inside the block to the specified value.\n */\n\nvoid setBlockData(void *ptr, void *value);\n\n/*\n * Function: getBlockData\n * Usage: value = getBlockData(ptr);\n * ---------------------------------\n * Returns the data field inside the block.\n */\n\nvoid *getBlockData(void *ptr);\n\n/*\n * Macro: newBlock\n * Usage: ptr = (type) newBlock(type);\n * -----------------------------------\n * Allocates enough space to hold an object of the type to which\n * <code>type</code> points (note that <code>type</code> must be\n * a pointer type).  Note that <code>newBlock</code> is different from\n * the <code>new</code> operator used in C++; the former takes a\n * pointer type and the latter takes the target type.\n */\n\n#define newBlock(type) ((type) getTypedBlock(sizeof *((type) NULL), #type))\n\n/*\n * Macro: newArray\n * Usage: ptr = newArray(n, type);\n * -------------------------------\n * Allocates enough space to hold an array of <code>n</code> values\n * of the specified type.\n */\n\n#define newArray(n, type) \\\n   ((type *) getTypedBlock((n) * sizeof(type), #type \"[]\"))\n\n/* Section 3 -- error handling */\n\n/*\n * Function: error\n * Usage: error(msg, . . .);\n * -------------------------\n * Generates an error string, expanding <code>%</code> constructions\n * appearing in the error message string just as <code>printf</code> does.\n * The behavior depends on whether the call is compiled in C or C++.\n *\n * <p>In C, calling <code>error</code> first checks to see if there is a\n * handler for <code>ErrorException</code>.  If so, calling\n * <code>error</code> throws an <code>ErrorException</code>\n * exception with the expanded error string as argument.  If\n * there is no <code>ErrorException</code> handler, the program\n * prints the message to the standard error channel and exits\n * with a status code indicating failure (as given by the\n * constant <code>ERROR_EXIT_STATUS</code>).\n *\n * <p>In C++, calling <code>error</code> throws an exception with the\n * expanded error string (defined as a C++ string) as its value.\n */\n\n   void error(string msg, ...);\n\n/* Section 4 -- Redefine main */\n\n#define main void main_\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/cstest.c",
    "content": "#include <stdio.h>\n#include \"cslib.h\"\n#include \"strlib.h\"\n#include \"unittest.h\"\n\n#define PUBLIC      0\n#define PRIVATE     0x1\n#define INTERACTIVE 0x2\n\ntypedef struct {\n   string name;\n   proc fn;\n   int flags;\n} TestEntry;\n\nextern void testBSTModule(void);\nextern void testCharSetModule(void);\nextern void testExceptionModule(void);\nextern void testFilelibModule(void);\nextern void testGEventsModule(void);\nextern void testGraphModule(void);\nextern void testGTransformModule(void);\nextern void testGTypesModule(void);\nextern void testHashMapModule(void);\nextern void testMapModule(void);\nextern void testOptionsModule(void);\nextern void testPriorityQueueModule(void);\nextern void testQueueModule(void);\nextern void testRandomModule(void);\nextern void testSetModule(void);\nextern void testStackModule(void);\nextern void testStrbufModule(void);\nextern void testStrlibModule(void);\nextern void testThreadModule(void);\nextern void testTokenScannerModule(void);\nextern void testVectorModule(void);\n\nstatic TestEntry TEST_MODULES[] = {\n   { \"bst\", testBSTModule },\n   { \"charset\", testCharSetModule },\n   { \"exception\", testExceptionModule },\n   { \"filelib\", testFilelibModule },\n   { \"gevents\", testGEventsModule },\n   { \"graph\", testGraphModule },\n   { \"gtransform\", testGTransformModule },\n   { \"gtypes\", testGTypesModule },\n   { \"hashmap\", testHashMapModule },\n   { \"map\", testMapModule },\n   { \"options\", testOptionsModule },\n   { \"pqueue\", testPriorityQueueModule },\n   { \"queue\", testQueueModule },\n   { \"random\", testRandomModule },\n   { \"set\", testSetModule },\n   { \"stack\", testStackModule },\n   { \"strbuf\", testStrbufModule },\n   { \"strlib\", testStrlibModule },\n   { \"thread\", testThreadModule },\n   { \"tokenscanner\", testTokenScannerModule },\n   { \"vector\", testVectorModule },\n};\n\nstatic int N_TEST_MODULES = sizeof TEST_MODULES / sizeof TEST_MODULES[0];\n\nstatic int findTestModule(string name);\n\nmain(int argc, string argv[]) {\n   int i, index;\n   string arg;\n   bool modulesFound;\n\n   modulesFound = false;\n   for (i = 1; i < argc; i++) {\n      arg = argv[i];\n      if (startsWith(arg, \"-\")) {\n         if (stringEqual(arg, \"-v\") || stringEqual(arg, \"-verbose\")) {\n            setVerboseTestingFlag(true);\n         } else {\n            error(\"Unrecognized option %s\", arg);\n         }\n      } else {\n         index = findTestModule(arg);\n         if (index == -1) {\n            error(\"No module named %s\", arg);\n         }\n         testModule(TEST_MODULES[index].name, TEST_MODULES[index].fn);\n         modulesFound = true;\n      }\n   }\n   if (!modulesFound) {\n      for (i = 0; i < N_TEST_MODULES; i++) {\n         if ((TEST_MODULES[i].flags & (INTERACTIVE | PRIVATE)) == 0) {\n            testModule(TEST_MODULES[i].name, TEST_MODULES[i].fn);\n         }\n      }\n   }\n   exit(0);\n}\n\nstatic int findTestModule(string name) {\n   int i, index;\n\n   index = -1;\n   for (i = 0; i < N_TEST_MODULES; i++) {\n      if (startsWith(TEST_MODULES[i].name, name)) {\n         if (index != -1) return -1;\n         index = i;\n      }\n   }\n   return index;\n}\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/Makefile",
    "content": "# Makefile for StanfordCPPLib/doc\n# Last modified on Wed Dec 19 20:21:15 2012 by eroberts\n#****************************************************************\n\n# ***************************************************************\n# Entry to bring the package up to date\n#    The \"make all\" entry should be the first real entry\n\nall:\n\tcppdoc -title \"The Stanford <code>cslib</code> package\" \\\n               -icon \"images/StanfordTreeLogo.png\" \\\n               -description \"include/package.html\" \\\n               -elide \"generic.h\" -elide \"bst.h\" -elide \"platform.h\" \\\n               -elide \"iterator.h\" -elide \"itertype.h\" \\\n               -elide \"options.h\" -elide \"unittest.h\" \\\n               -out . -generic -stylesheet cppdoc.css ..\n\n\n# ***************************************************************\n# Standard entries to remove files from the directories\n#    tidy    -- eliminate unwanted files\n#    scratch -- delete derived files in preparation for rebuild\n\ntidy:\n\trm -f ,* .,* *~ core a.out *.err\n\nscratch clean: tidy\n\trm -f *.o *.a *.html\n\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/bst-h.html",
    "content": "<html>\n<head>\n<title>../bst.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: bst.h\n * -----------\n * This interface supports a general abstraction for binary search trees. \n * A binary search tree (or BST for short) is a binary tree in which the\n * key in each node is greater than the keys descending to the left and\n * less than the keys descending to the right.\n *\n * Although the BST and BSTNode types are available to clients, most\n * applications will find the Set and HashMap types instead, which use the\n * BST type in their implementation.\n */\n</scan>\n#ifndef _bst_h\n#define _bst_h\n\n#include &lt;stdarg.h&gt;\n#include \"cmpfn.h\"\n#include \"cslib.h\"\n#include \"generic.h\"\n#include \"iterator.h\"\n\n<a name=\"Type:BST\"><scan class=comment>/*\n * Type: BST\n * ---------\n * The abstract type for a binary search tree.\n */\n</scan>\ntypedef struct BSTCDT *BST;\n\n<a name=\"Type:TraversalOrder\"><scan class=comment>/*\n * Type: TraversalOrder\n * --------------------\n * This type allows clients to control the order of iteration.  Specifying\n * PREORDER means that the root node is processed before its children,\n * INORDER means that the root is processed between the processing of the\n * left and right children, and POSTORDER means that the root is processed\n * after its children.\n */\n</scan>\ntypedef enum {PREORDER, INORDER, POSTORDER} TraversalOrder;\n\n<a name=\"Type:BSTNode\"><scan class=comment>/*\n * Type: BSTNode\n * -------------\n * The abstract type for a tree node.\n */\n</scan>\ntypedef struct BSTNodeCDT *BSTNode;\n\n<a name=\"Function:newBST\"><scan class=comment>/*\n * Function: newBST\n * Usage: bst = newBST(type);\n * --------------------------\n * Creates a new empty binary search tree for keys with the specified base\n * type.  The type parameter must be an explicit type name like int or\n * string.\n */\n</scan>\n#define newBST(type) newBSTFromType(#type)\n\n<a name=\"Function:newBSTFromType\"><scan class=comment>/*\n * Function: newBSTFromType\n * Usage: bst = newBSTFromType(baseType);\n * --------------------------------------\n * Creates a new empty binary search tree for keys with the specified base\n * type expressed as a string.\n */\n</scan>\nBST newBSTFromType(string baseType);\n\n<a name=\"Function:freeBST\"><scan class=comment>/*\n * Function: freeBST\n * Usage: freeBST(bst);\n * --------------------\n * Frees the storage for a binary search tree.  If nodes contain data\n * fields with allocated storage, the client must free this storage by\n * traversing the tree prior to calling freeBST.\n */\n</scan>\nvoid freeBST(BST bst);\n\n<a name=\"Function:size\"><scan class=comment>/*\n * Function: size\n * Usage: n = size(bst);\n * ---------------------\n * Returns the number of elements in the binary search tree.\n */\n</scan>\nint sizeBST(BST bst);\n\n<a name=\"Function:isEmpty\"><scan class=comment>/*\n * Function: isEmpty\n * Usage: if (isEmpty(bst)) . . .\n * ------------------------------\n * Returns true if the binary search tree has no entries.\n */\n</scan>\nbool isEmptyBST(BST bst);\n\n<a name=\"Function:clearBST\"><scan class=comment>/*\n * Function: clearBST\n * Usage: clearBST(bst);\n * ---------------------\n * Removes all nodes from the BST.\n */\n</scan>\nvoid clearBST(BST bst);\n\n<a name=\"Function:clone\"><scan class=comment>/*\n * Function: clone\n * Usage: newbst = clone(bst);\n * ---------------------------\n * Creates a copy of the BST.  The clone function copies only the first\n * level of the structure and does not copy the individual elements.\n */\n</scan>\nBST cloneBST(BST bst);\n\n<a name=\"Function:findBSTNode\"><scan class=comment>/*\n * Function: findBSTNode\n * Usage: node = findBSTNode(bst, key);\n * ------------------------------------\n * Applies the binary search algorithm to find a particular key in the tree\n * represented by bst.  If the key appears in the tree, findBSTNode returns\n * that node; if not, findBSTNode returns NULL.\n */\n</scan>\nBSTNode findBSTNode(BST bst, ...);\n\n<a name=\"Friend function:findBSTNodeFromArg\"><scan class=comment>/*\n * Friend function: findBSTNodeFromArg\n * Usage: node = findBSTNodeFromArg(bst, any);\n * -------------------------------------------\n * Identical to findBSTNode except that the key is taken from the generic\n * argument.\n */\n</scan>\nBSTNode findBSTNodeFromArg(BST bst, GenericType any);\n\n<a name=\"Function:insertBSTNode\"><scan class=comment>/*\n * Function: insertBSTNode\n * Usage: node = insertBSTNode(bst, key);\n * --------------------------------------\n * Inserts a new node into a binary search tree, if it does not already\n * exist.  If a node already exists in the tree, insertBSTNode returns that\n * node; if not, insertBSTNode creates a new node, copies the key value,\n * and returns the newly created node.\n */\n</scan>\nBSTNode insertBSTNode(BST bst, ...);\n\n<a name=\"Friend function:insertBSTNodeFromArg\"><scan class=comment>/*\n * Friend function: insertBSTNodeFromArg\n * Usage: node = insertBSTNodeFromArg(bst, any);\n * ---------------------------------------------\n * Identical to insertBSTNode except that the key is taken from the generic\n * argument.\n */\n</scan>\nBSTNode insertBSTNodeFromArg(BST bst, GenericType any);\n\n<a name=\"Function:removeBSTNode\"><scan class=comment>/*\n * Function: removeBSTNode\n * Usage: removeBSTNode(bst, key);\n * -------------------------------\n * Removes a node in the tree that matches the specified key.\n */\n</scan>\nvoid removeBSTNode(BST bst, ...);\n\n<a name=\"Friend function:removeBSTNodeFromArg\"><scan class=comment>/*\n * Friend function: removeBSTNodeFromArg\n * Usage: node = removeBSTNodeFromArg(bst, any);\n * ---------------------------------------------\n * Identical to removeBSTNode except that the key is taken from the generic\n * argument.\n */\n</scan>\nvoid removeBSTNodeFromArg(BST bst, GenericType any);\n\n<a name=\"Function:mapBST\"><scan class=comment>/*\n * Function: mapBST\n * Usage: mapBST(bst, fn, order, data);\n * ------------------------------------\n * Calls a function on every node in the binary search tree using the\n * specified iteration order.  The arguments to the callback function are a\n * pointer to the node and the data pointer.\n */\n</scan>\nvoid mapBST(BST bst, proc fn, TraversalOrder order, void *data);\n\n<a name=\"Function:newNodeIterator\"><scan class=comment>/*\n * Function: newNodeIterator\n * Usage: iterator = newNodeIterator(bst, order);\n * ----------------------------------------------\n * Returns an iterator for traversing the nodes in a binary search tree in\n * the specified order.  The foreach statement automatically uses an\n * INORDER traversal.\n */\n</scan>\nIterator newNodeIterator(BST bst, TraversalOrder order);\n\n<a name=\"Function:getRootBST\"><scan class=comment>/*\n * Function: getRootBST\n * Usage: root = getRootBST(bst);\n * ------------------------------\n * Returns the root node of the binary search tree.\n */\n</scan>\nBSTNode getRootBST(BST bst);\n\n<a name=\"Function:getLeftChild\"><scan class=comment>/*\n * Function: getLeftChild\n * Usage: child = getLeftChild(node);\n * ----------------------------------\n * Returns the left child of the specified node in a binary search tree.\n */\n</scan>\nBSTNode getLeftChild(BSTNode node);\n\n<a name=\"Function:getRightChild\"><scan class=comment>/*\n * Function: getRightChild\n * Usage: child = getRightChild(node);\n * -----------------------------------\n * Returns the right child of the specified node in a binary search tree.\n */\n</scan>\nBSTNode getRightChild(BSTNode node);\n\n<a name=\"Function:getKey\"><scan class=comment>/*\n * Function: getKey\n * Usage: any = getKey(node);\n * --------------------------\n * Returns the key as a generic object\n */\n</scan>\nGenericType getKey(BSTNode node);\n\n<a name=\"Function:getKeyString\"><scan class=comment>/*\n * Function: getKeyString\n * Usage: str = getKeyString(node);\n * --------------------------------\n * Returns a string representation of the key.\n */\n</scan>\nstring getKeyString(BSTNode node);\n\n<a name=\"Function:setNodeValue\"><scan class=comment>/*\n * Function: setNodeValue\n * Usage: setNodeValue(node, value);\n * ---------------------------------\n * Sets the value pointer associated with a BSTNode.\n */\n</scan>\nvoid setNodeValue(BSTNode node, void *value);\n\n<a name=\"Function:getNodeValue\"><scan class=comment>/*\n * Function: getNodeValue\n * Usage: value = getNodeValue(node);\n * ----------------------------------\n * Returns the value pointer associated with a BSTNode.\n */\n</scan>\nvoid *getNodeValue(BSTNode node);\n\n<a name=\"Function:getBaseTypeBST\"><scan class=comment>/*\n * Function: getBaseTypeBST\n * Usage: baseType = getBaseTypeBST(bst);\n * --------------------------------------\n * Returns the name of the key type.\n */\n</scan>\nstring getBaseTypeBST(BST bst);\n\n<a name=\"Function:getBaseTypeSizeBST\"><scan class=comment>/*\n * Function: getBaseTypeSizeBST\n * Usage: size = getBaseTypeSizeBST(bst);\n * --------------------------------------\n * Returns the size of the base type in bytes.\n */\n</scan>\nint getBaseTypeSizeBST(BST bst);\n\n<a name=\"Function:setCompareFnBST\"><scan class=comment>/*\n * Function: setCompareFnBST\n * Usage: setCompareFnBST(bst, cmpFn);\n * -----------------------------------\n * Sets the comparison function for keys.  This method need not be called\n * for any of the standard types.\n */\n</scan>\nvoid setCompareFnBST(BST bst, CompareFn cmpFn);\n\n<a name=\"Function:getCompareFnBST\"><scan class=comment>/*\n * Function: getCompareFnBST\n * Usage: cmpFn = getCompareFnBST(bst);\n * ------------------------------------\n * Returns the comparison function for keys.\n */\n</scan>\nCompareFn getCompareFnBST(BST bst);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/bst.html",
    "content": "<html>\n<head>\n<title>bst.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><a href=\"bst-h.html\"><code>bst.h</code></a></h1>\nThis interface supports a general abstraction for binary search trees.\nA <b><i>binary search tree</i></b> (or <b><i>BST</i></b> for short) is\na binary tree in which the key in each node is greater than the keys\ndescending to the left and less than the keys descending to the right.\n\n<p>Although the <code>BST</code> and <code>BSTNode</code> types are\navailable to clients, most applications will find the <code>Set</code>\nand <code>HashMap</code> types instead, which use the <code>BST</code>\ntype in their implementation.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Types</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:BST\">BST</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>The abstract type for a binary search tree.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:BSTNode\">BSTNode</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>The abstract type for a tree node.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:TraversalOrder\">TraversalOrder</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This type allows clients to control the order of iteration.</td></tr>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:clearBST\">clearBST(bst)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Removes all nodes from the BST.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:clone\">clone(bst)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a copy of the BST.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:findBSTNode\">findBSTNode(bst,&nbsp;key)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Applies the binary search algorithm to find a particular key in the tree represented by <code>bst</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:freeBST\">freeBST(bst)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Frees the storage for a binary search tree.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getBaseTypeBST\">getBaseTypeBST(bst)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the name of the key type.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getBaseTypeSizeBST\">getBaseTypeSizeBST(bst)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the size of the base type in bytes.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getCompareFnBST\">getCompareFnBST(bst)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the comparison function for keys.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getKey\">getKey(node)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the key as a generic object </td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getKeyString\">getKeyString(node)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a string representation of the key.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getLeftChild\">getLeftChild(node)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the left child of the specified node in a binary search tree.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getNodeValue\">getNodeValue(node)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the value pointer associated with a <code>BSTNode</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getRightChild\">getRightChild(node)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the right child of the specified node in a binary search tree.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getRootBST\">getRootBST(bst)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the root node of the binary search tree.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:insertBSTNode\">insertBSTNode(bst,&nbsp;key)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Inserts a new node into a binary search tree, if it does not already exist.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:isEmpty\">isEmpty(bst)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the binary search tree has no entries.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:mapBST\">mapBST(bst,&nbsp;fn,&nbsp;order,&nbsp;data)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Calls a function on every node in the binary search tree using the specified iteration order.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newBST\">newBST(type)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a new empty binary search tree for keys with the specified base type.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newBSTFromType\">newBSTFromType(baseType)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a new empty binary search tree for keys with the specified base type expressed as a string.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newNodeIterator\">newNodeIterator(bst,&nbsp;order)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns an iterator for traversing the nodes in a binary search tree in the specified order.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:removeBSTNode\">removeBSTNode(bst,&nbsp;key)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Removes a node in the tree that matches the specified key.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setCompareFnBST\">setCompareFnBST(bst,&nbsp;cmpFn)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the comparison function for keys.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setNodeValue\">setNodeValue(node,&nbsp;value)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the value pointer associated with a <code>BSTNode</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:size\">size(bst)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the number of elements in the binary search tree.</td></tr>\n</table>\n<h2>Type detail</h2>\n<hr>\n<a name=\"Type:BST\"></a>\n<pre class=detailCode>\ntypedef struct BSTCDT *BST;\n</pre>\n<div class=detailHTML>\nThe abstract type for a binary search tree.\n</div>\n<hr>\n<a name=\"Type:TraversalOrder\"></a>\n<pre class=detailCode>\ntypedef enum {PREORDER, INORDER, POSTORDER} TraversalOrder;\n</pre>\n<div class=detailHTML>\nThis type allows clients to control the order of iteration.  Specifying\n<code>PREORDER</code> means that the root node is processed before its\nchildren, <code>INORDER</code> means that the root is processed between\nthe processing of the left and right children, and <code>POSTORDER</code>\nmeans that the root is processed after its children.\n</div>\n<hr>\n<a name=\"Type:BSTNode\"></a>\n<pre class=detailCode>\ntypedef struct BSTNodeCDT *BSTNode;\n</pre>\n<div class=detailHTML>\nThe abstract type for a tree node.\n</div>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:newBST\"></a>\n<pre class=detailCode>\n</pre>\n<div class=detailHTML>\nCreates a new empty binary search tree for keys with the specified base\ntype.  The <code>type</code> parameter must be an explicit type name\nlike <code>int</code> or <code>string</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nbst = newBST(type);\n</pre>\n<hr>\n<a name=\"Function:newBSTFromType\"></a>\n<pre class=detailCode>\nBST newBSTFromType(string baseType);\n</pre>\n<div class=detailHTML>\nCreates a new empty binary search tree for keys with the specified base\ntype expressed as a string.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nbst = newBSTFromType(baseType);\n</pre>\n<hr>\n<a name=\"Function:freeBST\"></a>\n<pre class=detailCode>\nvoid freeBST(BST bst);\n</pre>\n<div class=detailHTML>\nFrees the storage for a binary search tree.  If nodes contain\ndata fields with allocated storage, the client must free this storage\nby traversing the tree prior to calling <code>freeBST</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfreeBST(bst);\n</pre>\n<hr>\n<a name=\"Function:size\"></a>\n<pre class=detailCode>\nint size(BST bst);\n</pre>\n<div class=detailHTML>\nReturns the number of elements in the binary search tree.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nn = size(bst);\n</pre>\n<hr>\n<a name=\"Function:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty(BST bst);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the binary search tree has no entries.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (isEmpty(bst)) . . .\n</pre>\n<hr>\n<a name=\"Function:clearBST\"></a>\n<pre class=detailCode>\nvoid clearBST(BST bst);\n</pre>\n<div class=detailHTML>\nRemoves all nodes from the BST.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nclearBST(bst);\n</pre>\n<hr>\n<a name=\"Function:clone\"></a>\n<pre class=detailCode>\nBST clone(BST bst);\n</pre>\n<div class=detailHTML>\nCreates a copy of the BST.  The <code>clone</code> function copies\nonly the first level of the structure and does not copy the individual\nelements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nnewbst = clone(bst);\n</pre>\n<hr>\n<a name=\"Function:findBSTNode\"></a>\n<pre class=detailCode>\nBSTNode findBSTNode(BST bst, ...);\n</pre>\n<div class=detailHTML>\nApplies the binary search algorithm to find a particular key\nin the tree represented by <code>bst</code>.  If the key appears\nin the tree, <code>findBSTNode</code> returns that node; if not,\n<code>findBSTNode</code> returns <code>NULL</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nnode = findBSTNode(bst, key);\n</pre>\n<hr>\n<a name=\"Function:insertBSTNode\"></a>\n<pre class=detailCode>\nBSTNode insertBSTNode(BST bst, ...);\n</pre>\n<div class=detailHTML>\nInserts a new node into a binary search tree, if it does not already\nexist.  If a node already exists in the tree, <code>insertBSTNode</code>\nreturns that node; if not, <code>insertBSTNode</code> creates a new\nnode, copies the key value, and returns the newly created node.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nnode = insertBSTNode(bst, key);\n</pre>\n<hr>\n<a name=\"Function:removeBSTNode\"></a>\n<pre class=detailCode>\nvoid removeBSTNode(BST bst, ...);\n</pre>\n<div class=detailHTML>\nRemoves a node in the tree that matches the specified key.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nremoveBSTNode(bst, key);\n</pre>\n<hr>\n<a name=\"Function:mapBST\"></a>\n<pre class=detailCode>\nvoid mapBST(BST bst, proc fn, TraversalOrder order, void *data);\n</pre>\n<div class=detailHTML>\nCalls a function on every node in the binary search tree using the\nspecified iteration order.  The arguments to the callback function\nare a pointer to the node and the <code>data</code> pointer.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmapBST(bst, fn, order, data);\n</pre>\n<hr>\n<a name=\"Function:newNodeIterator\"></a>\n<pre class=detailCode>\nIterator newNodeIterator(BST bst, TraversalOrder order);\n</pre>\n<div class=detailHTML>\nReturns an iterator for traversing the nodes in a binary search tree\nin the specified order.  The <code>foreach</code> statement\nautomatically uses an <code>INORDER</code> traversal.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\niterator = newNodeIterator(bst, order);\n</pre>\n<hr>\n<a name=\"Function:getRootBST\"></a>\n<pre class=detailCode>\nBSTNode getRootBST(BST bst);\n</pre>\n<div class=detailHTML>\nReturns the root node of the binary search tree.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nroot = getRootBST(bst);\n</pre>\n<hr>\n<a name=\"Function:getLeftChild\"></a>\n<pre class=detailCode>\nBSTNode getLeftChild(BSTNode node);\n</pre>\n<div class=detailHTML>\nReturns the left child of the specified node in a binary search tree.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nchild = getLeftChild(node);\n</pre>\n<hr>\n<a name=\"Function:getRightChild\"></a>\n<pre class=detailCode>\nBSTNode getRightChild(BSTNode node);\n</pre>\n<div class=detailHTML>\nReturns the right child of the specified node in a binary search tree.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nchild = getRightChild(node);\n</pre>\n<hr>\n<a name=\"Function:getKey\"></a>\n<pre class=detailCode>\nGenericType getKey(BSTNode node);\n</pre>\n<div class=detailHTML>\nReturns the key as a generic object\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nany = getKey(node);\n</pre>\n<hr>\n<a name=\"Function:getKeyString\"></a>\n<pre class=detailCode>\nstring getKeyString(BSTNode node);\n</pre>\n<div class=detailHTML>\nReturns a string representation of the key.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstr = getKeyString(node);\n</pre>\n<hr>\n<a name=\"Function:setNodeValue\"></a>\n<pre class=detailCode>\nvoid setNodeValue(BSTNode node, void *value);\n</pre>\n<div class=detailHTML>\nSets the value pointer associated with a <code>BSTNode</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetNodeValue(node, value);\n</pre>\n<hr>\n<a name=\"Function:getNodeValue\"></a>\n<pre class=detailCode>\nvoid *getNodeValue(BSTNode node);\n</pre>\n<div class=detailHTML>\nReturns the value pointer associated with a <code>BSTNode</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvalue = getNodeValue(node);\n</pre>\n<hr>\n<a name=\"Function:getBaseTypeBST\"></a>\n<pre class=detailCode>\nstring getBaseTypeBST(BST bst);\n</pre>\n<div class=detailHTML>\nReturns the name of the key type.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nbaseType = getBaseTypeBST(bst);\n</pre>\n<hr>\n<a name=\"Function:getBaseTypeSizeBST\"></a>\n<pre class=detailCode>\nint getBaseTypeSizeBST(BST bst);\n</pre>\n<div class=detailHTML>\nReturns the size of the base type in bytes.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsize = getBaseTypeSizeBST(bst);\n</pre>\n<hr>\n<a name=\"Function:setCompareFnBST\"></a>\n<pre class=detailCode>\nvoid setCompareFnBST(BST bst, CompareFn cmpFn);\n</pre>\n<div class=detailHTML>\nSets the comparison function for keys.  This method need not be\ncalled for any of the standard types.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetCompareFnBST(bst, cmpFn);\n</pre>\n<hr>\n<a name=\"Function:getCompareFnBST\"></a>\n<pre class=detailCode>\nCompareFn getCompareFnBST(BST bst);\n</pre>\n<div class=detailHTML>\nReturns the comparison function for keys.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncmpFn = getCompareFnBST(bst);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/charset-h.html",
    "content": "<html>\n<head>\n<title>../charset.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: charset.h\n * ---------------\n * This interface exports an abstract type that represents sets of\n * characters.\n */\n</scan>\n#ifndef _charset_h\n#define _charset_h\n\n#include &lt;stdarg.h&gt;\n#include \"cslib.h\"\n#include \"generic.h\"\n\n<a name=\"Type:CharSet\"><scan class=comment>/*\n * Type: CharSet\n * -------------\n * Defines the abstract type used to represent sets of characters\n */\n</scan>\ntypedef struct CharSetCDT *CharSet;\n\n<scan class=comment>/* Exported entries */</scan>\n\n<a name=\"Function:newCharSet\"><scan class=comment>/*\n * Function: newCharSet\n * Usage: set = newCharSet();\n * --------------------------\n * Creates an empty set capable of holding characters.\n */\n</scan>\nCharSet newCharSet();\n\n<a name=\"Function:freeCharSet\"><scan class=comment>/*\n * Function: freeCharSet\n * Usage: freeCharSet(set);\n * ------------------------\n * Frees the storage associated with a character set.\n */\n</scan>\nvoid freeCharSet(CharSet set);\n\n<a name=\"Function:size\"><scan class=comment>/*\n * Function: size\n * Usage: n = size(set);\n * ---------------------\n * Returns the number of elements in the set.\n */\n</scan>\nint sizeCharSet(CharSet set);\n\n<a name=\"Function:isEmpty\"><scan class=comment>/*\n * Function: isEmpty\n * Usage: if (isEmpty(set)) . . .\n * ------------------------------\n * Returns true if the set has no elements.\n */\n</scan>\nbool isEmptyCharSet(CharSet set);\n\n<a name=\"Function:clear\"><scan class=comment>/*\n * Function: clear\n * Usage: clear(set);\n * ------------------\n * Removes all characters from the set.\n */\n</scan>\nvoid clearCharSet(CharSet set);\n\n<a name=\"Function:clone\"><scan class=comment>/*\n * Function: clone\n * Usage: newset = clone(set);\n * ---------------------------\n * Creates a copy of the set.  The clone function copies only the first\n * level of the structure and does not copy the individual elements.\n */\n</scan>\nCharSet cloneCharSet(CharSet set);\n\n<a name=\"Function:contains\"><scan class=comment>/*\n * Function: contains\n * Usage: if (contains(set, ch)) . . .\n * -----------------------------------\n * Returns true if the character ch is a member of the set.\n */\n</scan>\nbool containsCharSet(CharSet set, char ch);\n\n<a name=\"Function:add\"><scan class=comment>/*\n * Function: add\n * Usage: add(set, ch);\n * --------------------\n * Adds the character ch to the set.\n */\n</scan>\nvoid addCharSet(CharSet set, char ch);\n\n<a name=\"Function:addString\"><scan class=comment>/*\n * Function: addString\n * Usage: addString(set, str);\n * ---------------------------\n * Adds the characters in str to the set.\n */\n</scan>\nvoid addString(CharSet set, string str);\n\n<a name=\"Function:remove\"><scan class=comment>/*\n * Function: remove\n * Usage: remove(set, ch);\n * -----------------------\n * Removes an element from the set.\n */\n</scan>\nvoid removeCharSet(CharSet set, char ch);\n\n<a name=\"Function:equals\"><scan class=comment>/*\n * Function: equals\n * Usage: if (equals(s1, s2)) . . .\n * --------------------------------\n * Returns true if s1 and s2 are equal, which means that they contain the\n * same elements.\n */\n</scan>\nbool equalsCharSet(CharSet s1, CharSet s2);\n\n<a name=\"Function:isSubset\"><scan class=comment>/*\n * Function: isSubset\n * Usage: if (isSubset(s1, s2)) . . .\n * ----------------------------------\n * Returns true if s1 is a subset of s2.\n */\n</scan>\nbool isSubsetCharSet(CharSet s1, CharSet s2);\n\n<a name=\"Function:union\"><scan class=comment>/*\n * Function: union\n * Usage: set = union(s1, s2);\n * ---------------------------\n * Returns a new set consisting of all elements in either s1 or s2.\n */\n</scan>\nCharSet unionCharSet(CharSet s1, CharSet s2);\n\n<a name=\"Function:intersection\"><scan class=comment>/*\n * Function: intersection\n * Usage: set = intersection(s1, s2);\n * ----------------------------------\n * Returns a new set consisting of all elements in both s1 and s2.\n */\n</scan>\nCharSet intersectionCharSet(CharSet s1, CharSet s2);\n\n<a name=\"Function:setDifference\"><scan class=comment>/*\n * Function: setDifference\n * Usage: set = setDifference(s1, s2);\n * -----------------------------------\n * Returns a new set consisting of all elements in s1 that are not elements\n * of s2.\n */\n</scan>\nCharSet setDifferenceCharSet(CharSet s1, CharSet s2);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/charset.html",
    "content": "<html>\n<head>\n<title>charset.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><a href=\"charset-h.html\"><code>charset.h</code></a></h1>\nThis interface exports an abstract type that represents sets of characters.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Type</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:CharSet\">CharSet</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Defines the abstract type used to represent sets of characters </td></tr>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newCharSet\">newCharSet()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates an empty set capable of holding characters.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:freeCharSet\">freeCharSet(set)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Frees the storage associated with a character set.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:size\">size(set)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the number of elements in the set.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:isEmpty\">isEmpty(set)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the set has no elements.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:clear\">clear(set)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Removes all characters from the set.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:clone\">clone(set)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a copy of the set.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:contains\">contains(set,&nbsp;ch)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the character <code>ch</code> is a member of the set.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:add\">add(set,&nbsp;ch)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Adds the character <code>ch</code> to the set.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:addString\">addString(set,&nbsp;str)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Adds the characters in <code>str</code> to the set.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:remove\">remove(set,&nbsp;ch)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Removes an element from the set.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:equals\">equals(s1,&nbsp;s2)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if <code>s1</code> and <code>s2</code> are equal, which means that they contain the same elements.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:isSubset\">isSubset(s1,&nbsp;s2)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if <code>s1</code> is a subset of <code>s2</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:union\">union(s1,&nbsp;s2)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a new set consisting of all elements in either <code>s1</code> or <code>s2</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:intersection\">intersection(s1,&nbsp;s2)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a new set consisting of all elements in both <code>s1</code> and <code>s2</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setDifference\">setDifference(s1,&nbsp;s2)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a new set consisting of all elements in <code>s1</code> that are not elements of <code>s2</code>.</td></tr>\n</table>\n<h2>Type detail</h2>\n<hr>\n<a name=\"Type:CharSet\"></a>\n<pre class=detailCode>\ntypedef struct CharSetCDT *CharSet;\n</pre>\n<div class=detailHTML>\nDefines the abstract type used to represent sets of characters\n</div>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:newCharSet\"></a>\n<pre class=detailCode>\nCharSet newCharSet();\n</pre>\n<div class=detailHTML>\nCreates an empty set capable of holding characters.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset = newCharSet();\n</pre>\n<hr>\n<a name=\"Function:freeCharSet\"></a>\n<pre class=detailCode>\nvoid freeCharSet(CharSet set);\n</pre>\n<div class=detailHTML>\nFrees the storage associated with a character set.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfreeCharSet(set);\n</pre>\n<hr>\n<a name=\"Function:size\"></a>\n<pre class=detailCode>\nint size(CharSet set);\n</pre>\n<div class=detailHTML>\nReturns the number of elements in the set.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nn = size(set);\n</pre>\n<hr>\n<a name=\"Function:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty(CharSet set);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the set has no elements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (isEmpty(set)) . . .\n</pre>\n<hr>\n<a name=\"Function:clear\"></a>\n<pre class=detailCode>\nvoid clear(CharSet set);\n</pre>\n<div class=detailHTML>\nRemoves all characters from the set.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nclear(set);\n</pre>\n<hr>\n<a name=\"Function:clone\"></a>\n<pre class=detailCode>\nCharSet clone(CharSet set);\n</pre>\n<div class=detailHTML>\nCreates a copy of the set.  The <code>clone</code> function copies\nonly the first level of the structure and does not copy the individual\nelements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nnewset = clone(set);\n</pre>\n<hr>\n<a name=\"Function:contains\"></a>\n<pre class=detailCode>\nbool contains(CharSet set, char ch);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the character <code>ch</code> is a member\nof the set.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (contains(set, ch)) . . .\n</pre>\n<hr>\n<a name=\"Function:add\"></a>\n<pre class=detailCode>\nvoid add(CharSet set, char ch);\n</pre>\n<div class=detailHTML>\nAdds the character <code>ch</code> to the set.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nadd(set, ch);\n</pre>\n<hr>\n<a name=\"Function:addString\"></a>\n<pre class=detailCode>\nvoid addString(CharSet set, string str);\n</pre>\n<div class=detailHTML>\nAdds the characters in <code>str</code> to the set.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\naddString(set, str);\n</pre>\n<hr>\n<a name=\"Function:remove\"></a>\n<pre class=detailCode>\nvoid remove(CharSet set, char ch);\n</pre>\n<div class=detailHTML>\nRemoves an element from the set.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nremove(set, ch);\n</pre>\n<hr>\n<a name=\"Function:equals\"></a>\n<pre class=detailCode>\nbool equals(CharSet s1, CharSet s2);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if <code>s1</code> and <code>s2</code>\nare equal, which means that they contain the same elements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (equals(s1, s2)) . . .\n</pre>\n<hr>\n<a name=\"Function:isSubset\"></a>\n<pre class=detailCode>\nbool isSubset(CharSet s1, CharSet s2);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if <code>s1</code> is a subset of <code>s2</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (isSubset(s1, s2)) . . .\n</pre>\n<hr>\n<a name=\"Function:union\"></a>\n<pre class=detailCode>\nCharSet union(CharSet s1, CharSet s2);\n</pre>\n<div class=detailHTML>\nReturns a new set consisting of all elements in either <code>s1</code>\nor <code>s2</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset = union(s1, s2);\n</pre>\n<hr>\n<a name=\"Function:intersection\"></a>\n<pre class=detailCode>\nCharSet intersection(CharSet s1, CharSet s2);\n</pre>\n<div class=detailHTML>\nReturns a new set consisting of all elements in both <code>s1</code>\nand <code>s2</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset = intersection(s1, s2);\n</pre>\n<hr>\n<a name=\"Function:setDifference\"></a>\n<pre class=detailCode>\nCharSet setDifference(CharSet s1, CharSet s2);\n</pre>\n<div class=detailHTML>\nReturns a new set consisting of all elements in <code>s1</code> that\nare not elements of <code>s2</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset = setDifference(s1, s2);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/cmdscan-h.html",
    "content": "<html>\n<head>\n<title>../cmdscan.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: cmdscan.h\n * ---------------\n * This interface exports a simple command-line scanner.\n */\n</scan>\n#ifndef _cmdscan_h\n#define _cmdscan_h\n\n#include \"cslib.h\"\n#include \"tokenscanner.h\"\n\n<a name=\"Type:CommandScanner\"><scan class=comment>/*\n * Type: CommandScanner\n * --------------------\n * The CommandScanner type offers a simple command-scanning abstraction\n * that is primarily used to construct test programs.  The typical pattern\n * of use requires the following steps:\n *\n *\n * Call newCommandScanner to create an empty command scanner.  Call\n * defineCommand to associate commands with functions.  Call commandLoop to\n * execute a command loop.\n *\n *\n * Command scanners are implemented as a collection type, so that iterating\n * over the scanner returns the name of each command in lexicographic\n * order.\n */\n</scan>\ntypedef struct CommandScannerCDT *CommandScanner;\n\n<a name=\"Type:CommandFn\"><scan class=comment>/*\n * Type: CommandFn\n * ---------------\n * This type represents the space of functions that can be used as\n * commands.  Each command takes the entire command scanner as an argument,\n * which gives the callback function access to the various data fields\n * associated with the scanner.\n */\n</scan>\ntypedef void (*CommandFn)(CommandScanner cs);\n\n<a name=\"Function:newCommandScanner\"><scan class=comment>/*\n * Function: newCommandScanner\n * Usage: cs = newCommandScanner();\n * --------------------------------\n * Allocates a new command scanner.\n */\n</scan>\nCommandScanner newCommandScanner(void);\n\n<a name=\"Function:freeCommandScanner\"><scan class=comment>/*\n * Function: freeCommandScanner\n * Usage: freeCommandScanner(cs);\n * ------------------------------\n * Frees the specified command scanner.\n */\n</scan>\nvoid freeCommandScanner(CommandScanner cs);\n\n<a name=\"Function:defineCommand\"><scan class=comment>/*\n * Function: defineCommand\n * Usage: defineCommand(cs, cmdName, cmdFn);\n * -----------------------------------------\n * Adds an entry to the internal command table for the command scanner by\n * associating the specified command name with the corresponding function.\n */\n</scan>\nvoid defineCommand(CommandScanner cs, string cmdName, CommandFn cmdFn);\n\n<a name=\"Function:commandLoop\"><scan class=comment>/*\n * Function: commandLoop\n * Usage: commandLoop(cs, prompt);\n * -------------------------------\n * Executes a loop that reads and executes commands from the user.  On each\n * cycle, commandLoop performs the following operations:\n *\n *  Prints the specified prompt Reads in a line from the user Checks to see\n * if the first token on the line is a command Executes the function\n * associated with that command \n *\n * If a command is undefined, commandLoop displays a message to that effect\n * and allows the user to enter a new command.  If any errors occur in the\n * command processing, they are caught by the command loop.\n */\n</scan>\nvoid commandLoop(CommandScanner cs, string prompt);\n\n<a name=\"Function:executeCommand\"><scan class=comment>/*\n * Function: executeCommand\n * Usage: ok = executeCommand(cs, line);\n * -------------------------------------\n * Executes a command line as if it were entered by the user.  The function\n * returns true if the command is defined, and false otherwise.\n */\n</scan>\nbool executeCommand(CommandScanner cs, string line);\n\n<a name=\"Function:setCommandData\"><scan class=comment>/*\n * Function: setCommandData\n * Usage: setCommandData(cs, data);\n * --------------------------------\n * Associates a data block with the command scanner.  The pointer to the\n * data block is passed to the callback functions for the various commands.\n */\n</scan>\nvoid setCommandData(CommandScanner cs, void *data);\n\n<a name=\"Function:getCommandData\"><scan class=comment>/*\n * Function: getCommandData\n * Usage: data = getCommandData(cs);\n * ---------------------------------\n * Returns the data block associated with the command scanner.\n */\n</scan>\nvoid *getCommandData(CommandScanner cs);\n\n<a name=\"Function:readCommandToken\"><scan class=comment>/*\n * Function: readCommandToken\n * Usage: token = readCommandToken(cs);\n * ------------------------------------\n * Reads the next token from the command line, which is returned as a\n * string.  If no more tokens exist, readCommandToken returns the empty\n * string.\n */\n</scan>\nstring readCommandToken(CommandScanner cs);\n\n<a name=\"Function:getCommandLine\"><scan class=comment>/*\n * Function: getCommandLine\n * Usage: line = getCommandLine(cs);\n * ---------------------------------\n * Returns the current command line.\n */\n</scan>\nstring getCommandLine(CommandScanner cs);\n\n<a name=\"Function:getCommandName\"><scan class=comment>/*\n * Function: getCommandName\n * Usage: name = getCommandName(cs);\n * ---------------------------------\n * Returns the current command name.\n */\n</scan>\nstring getCommandName(CommandScanner cs);\n\n<a name=\"Function:getTokenScanner\"><scan class=comment>/*\n * Function: getTokenScanner\n * Usage: scanner = getTokenScanner(cs);\n * -------------------------------------\n * Returns the TokenScanner used internally to parse tokens.\n */\n</scan>\nTokenScanner getTokenScanner(CommandScanner cs);\n\n<a name=\"Function:quitCommand\"><scan class=comment>/*\n * Function: quitCommand\n * Usage: defineCommand(cs, \"quit\", quitCommand);\n * ----------------------------------------------\n * This callback function exits from the command scanner.\n */\n</scan>\nvoid quitCommand(CommandScanner cs);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/cmdscan.html",
    "content": "<html>\n<head>\n<title>cmdscan.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><a href=\"cmdscan-h.html\"><code>cmdscan.h</code></a></h1>\nThis interface exports a simple command-line scanner.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Types</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:CommandScanner\">CommandScanner</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>The <code>CommandScanner</code> type offers a simple command-scanning abstraction that is primarily used to construct test programs.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:CommandFn\">CommandFn</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This type represents the space of functions that can be used as commands.</td></tr>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newCommandScanner\">newCommandScanner()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Allocates a new command scanner.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:freeCommandScanner\">freeCommandScanner(cs)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Frees the specified command scanner.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:defineCommand\">defineCommand(cs,&nbsp;cmdName,&nbsp;cmdFn)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Adds an entry to the internal command table for the command scanner by associating the specified command name with the corresponding function.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:commandLoop\">commandLoop(cs,&nbsp;prompt)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Executes a loop that reads and executes commands from the user.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:executeCommand\">executeCommand(cs,&nbsp;line)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Executes a command line as if it were entered by the user.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setCommandData\">setCommandData(cs,&nbsp;data)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Associates a data block with the command scanner.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getCommandData\">getCommandData(cs)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the data block associated with the command scanner.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:readCommandToken\">readCommandToken(cs)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Reads the next token from the command line, which is returned as a string.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getCommandLine\">getCommandLine(cs)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the current command line.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getCommandName\">getCommandName(cs)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the current command name.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getTokenScanner\">getTokenScanner(cs)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the <code>TokenScanner</code> used internally to parse tokens.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:quitCommand\">quitCommand()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This callback function exits from the command scanner.</td></tr>\n</table>\n<h2>Type detail</h2>\n<hr>\n<a name=\"Type:CommandScanner\"></a>\n<pre class=detailCode>\ntypedef struct CommandScannerCDT *CommandScanner;\n</pre>\n<div class=detailHTML>\nThe <code>CommandScanner</code> type offers a simple command-scanning\nabstraction that is primarily used to construct test programs.  The\ntypical pattern of use requires the following steps:\n\n<ol>\n<li>Call <code>newCommandScanner</code> to create an empty command scanner.\n<li>Call <code>defineCommand</code> to associate commands with functions.\n<li>Call <code>commandLoop</code> to execute a command loop.\n</ol>\n\nCommand scanners are implemented as a collection type, so that\niterating over the scanner returns the name of each command in\nlexicographic order.\n</div>\n<hr>\n<a name=\"Type:CommandFn\"></a>\n<pre class=detailCode>\ntypedef void CommandFn(*CommandFn)(CommandScanner cs);\n</pre>\n<div class=detailHTML>\nThis type represents the space of functions that can be used\nas commands.  Each command takes the entire command scanner\nas an argument, which gives the callback function access to\nthe various data fields associated with the scanner.\n</div>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:newCommandScanner\"></a>\n<pre class=detailCode>\nCommandScanner newCommandScanner(void);\n</pre>\n<div class=detailHTML>\nAllocates a new command scanner.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncs = newCommandScanner();\n</pre>\n<hr>\n<a name=\"Function:freeCommandScanner\"></a>\n<pre class=detailCode>\nvoid freeCommandScanner(CommandScanner cs);\n</pre>\n<div class=detailHTML>\nFrees the specified command scanner.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfreeCommandScanner(cs);\n</pre>\n<hr>\n<a name=\"Function:defineCommand\"></a>\n<pre class=detailCode>\nvoid defineCommand(CommandScanner cs, string cmdName, CommandFn cmdFn);\n</pre>\n<div class=detailHTML>\nAdds an entry to the internal command table for the command scanner\nby associating the specified command name with the corresponding function.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndefineCommand(cs, cmdName, cmdFn);\n</pre>\n<hr>\n<a name=\"Function:commandLoop\"></a>\n<pre class=detailCode>\nvoid commandLoop(CommandScanner cs, string prompt);\n</pre>\n<div class=detailHTML>\nExecutes a loop that reads and executes commands from the user.  On\neach cycle, <code>commandLoop</code> performs the following operations:\n\n<p><ol>\n<li>Prints the specified prompt\n<li>Reads in a line from the user\n<li>Checks to see if the first token on the line is a command\n<li>Executes the function associated with that command\n</ol><p>\n\nIf a command is undefined, <code>commandLoop</code> displays a message\nto that effect and allows the user to enter a new command.  If any\nerrors occur in the command processing, they are caught by the\ncommand loop.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncommandLoop(cs, prompt);\n</pre>\n<hr>\n<a name=\"Function:executeCommand\"></a>\n<pre class=detailCode>\nbool executeCommand(CommandScanner cs, string line);\n</pre>\n<div class=detailHTML>\nExecutes a command line as if it were entered by the user.\nThe function returns <code>true</code> if the command is\ndefined, and <code>false</code> otherwise.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nok = executeCommand(cs, line);\n</pre>\n<hr>\n<a name=\"Function:setCommandData\"></a>\n<pre class=detailCode>\nvoid setCommandData(CommandScanner cs, void *data);\n</pre>\n<div class=detailHTML>\nAssociates a data block with the command scanner.  The pointer to the\ndata block is passed to the callback functions for the various commands.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetCommandData(cs, data);\n</pre>\n<hr>\n<a name=\"Function:getCommandData\"></a>\n<pre class=detailCode>\nvoid *getCommandData(CommandScanner cs);\n</pre>\n<div class=detailHTML>\nReturns the data block associated with the command scanner.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndata = getCommandData(cs);\n</pre>\n<hr>\n<a name=\"Function:readCommandToken\"></a>\n<pre class=detailCode>\nstring readCommandToken(CommandScanner cs);\n</pre>\n<div class=detailHTML>\nReads the next token from the command line, which is returned as a\nstring.  If no more tokens exist, <code>readCommandToken</code>\nreturns the empty string.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ntoken = readCommandToken(cs);\n</pre>\n<hr>\n<a name=\"Function:getCommandLine\"></a>\n<pre class=detailCode>\nstring getCommandLine(CommandScanner cs);\n</pre>\n<div class=detailHTML>\nReturns the current command line.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nline = getCommandLine(cs);\n</pre>\n<hr>\n<a name=\"Function:getCommandName\"></a>\n<pre class=detailCode>\nstring getCommandName(CommandScanner cs);\n</pre>\n<div class=detailHTML>\nReturns the current command name.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nname = getCommandName(cs);\n</pre>\n<hr>\n<a name=\"Function:getTokenScanner\"></a>\n<pre class=detailCode>\nTokenScanner getTokenScanner(CommandScanner cs);\n</pre>\n<div class=detailHTML>\nReturns the <code>TokenScanner</code> used internally to parse tokens.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nscanner = getTokenScanner(cs);\n</pre>\n<hr>\n<a name=\"Function:quitCommand\"></a>\n<pre class=detailCode>\nvoid quitCommand(CommandScanner cs);\n</pre>\n<div class=detailHTML>\nThis callback function exits from the command scanner.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndefineCommand(cs, \"quit\", quitCommand);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/cmpfn-h.html",
    "content": "<html>\n<head>\n<title>../cmpfn.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: cmpfn.h\n * -------------\n * This interface exports several comparison functions for use with the\n * other library packages.\n */\n</scan>\n#ifndef _cmpfn_h\n#define _cmpfn_h\n\n#include \"cslib.h\"\n\n<a name=\"Type:CompareFn\"><scan class=comment>/*\n * Type: CompareFn\n * ---------------\n * This type defines the type space of comparison functions, each of which\n * take the addresses of their arguments and return an integer from the set\n * {-1, 0, +1} depending on whether the first argument is less than, equal\n * to, or greater than the second.\n */\n</scan>\ntypedef int (*CompareFn)(const void *p1, const void *p2);\n\n<a name=\"Function:intCmpFn\"><scan class=comment>/*\n * Function: intCmpFn\n * ------------------\n * Compares two values of type int whose addresses are supplied by the\n * pointer arguments p1 and p2.\n */\n</scan>\nint intCmpFn(const void *p1, const void *p2);\n\n<a name=\"Function:shortCmpFn\"><scan class=comment>/*\n * Function: shortCmpFn\n * --------------------\n * Compares two values of type short whose addresses are supplied by the\n * pointer arguments p1 and p2.\n */\n</scan>\nint shortCmpFn(const void *p1, const void *p2);\n\n<a name=\"Function:longCmpFn\"><scan class=comment>/*\n * Function: longCmpFn\n * -------------------\n * Compares two values of type long whose addresses are supplied by the\n * pointer arguments p1 and p2.\n */\n</scan>\nint longCmpFn(const void *p1, const void *p2);\n\n<a name=\"Function:charCmpFn\"><scan class=comment>/*\n * Function: charCmpFn\n * -------------------\n * Compares two values of type char whose addresses are supplied by the\n * pointer arguments p1 and p2.\n */\n</scan>\nint charCmpFn(const void *p1, const void *p2);\n\n<a name=\"Function:floatCmpFn\"><scan class=comment>/*\n * Function: floatCmpFn\n * --------------------\n * Compares two values of type float whose addresses are supplied by the\n * pointer arguments p1 and p2.\n */\n</scan>\nint floatCmpFn(const void *p1, const void *p2);\n\n<a name=\"Function:doubleCmpFn\"><scan class=comment>/*\n * Function: doubleCmpFn\n * ---------------------\n * Compares two values of type double whose addresses are supplied by the\n * pointer arguments p1 and p2.\n */\n</scan>\nint doubleCmpFn(const void *p1, const void *p2);\n\n<a name=\"Function:unsignedCmpFn\"><scan class=comment>/*\n * Function: unsignedCmpFn\n * -----------------------\n * Compares two values of type unsigned whose addresses are supplied by the\n * pointer arguments p1 and p2.\n */\n</scan>\nint unsignedCmpFn(const void *p1, const void *p2);\n\n<a name=\"Function:unsignedShortCmpFn\"><scan class=comment>/*\n * Function: unsignedShortCmpFn\n * ----------------------------\n * Compares two values of type unsignedshort whose addresses are supplied\n * by the pointer arguments p1 and p2.\n */\n</scan>\nint unsignedShortCmpFn(const void *p1, const void *p2);\n\n<a name=\"Function:unsignedLongCmpFn\"><scan class=comment>/*\n * Function: unsignedLongCmpFn\n * ---------------------------\n * Compares two values of type unsignedlong whose addresses are supplied by\n * the pointer arguments p1 and p2.\n */\n</scan>\nint unsignedLongCmpFn(const void *p1, const void *p2);\n\n<a name=\"Function:unsignedCharCmpFn\"><scan class=comment>/*\n * Function: unsignedCharCmpFn\n * ---------------------------\n * Compares two values of type unsignedchar whose addresses are supplied by\n * the pointer arguments p1 and p2.\n */\n</scan>\nint unsignedCharCmpFn(const void *p1, const void *p2);\n\n<a name=\"Function:stringCmpFn\"><scan class=comment>/*\n * Function: stringCmpFn\n * ---------------------\n * Compares two values of type string whose addresses are supplied by the\n * pointer arguments p1 and p2.\n */\n</scan>\nint stringCmpFn(const void *p1, const void *p2);\n\n<a name=\"Function:pointerCmpFn\"><scan class=comment>/*\n * Function: pointerCmpFn\n * ----------------------\n * Compares two values of type pointer whose addresses are supplied by the\n * pointer arguments p1 and p2.  Pointer comparison is based on the numeric\n * equivalent of the pointer.\n */\n</scan>\nint pointerCmpFn(const void *p1, const void *p2);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/cmpfn.html",
    "content": "<html>\n<head>\n<title>cmpfn.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><a href=\"cmpfn-h.html\"><code>cmpfn.h</code></a></h1>\nThis interface exports several comparison functions for use with the\nother library packages.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Type</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:CompareFn\">CompareFn</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This type defines the type space of comparison functions, each of which take the addresses of their arguments and return an integer from the set {-1, 0, +1} depending on whether the first argument is less than, equal to, or greater than the second.</td></tr>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:intCmpFn\">intCmpFn</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Compares two values of type <code>int</code> whose addresses are supplied by the pointer arguments <code>p1</code> and <code>p2</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:shortCmpFn\">shortCmpFn</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Compares two values of type <code>short</code> whose addresses are supplied by the pointer arguments <code>p1</code> and <code>p2</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:longCmpFn\">longCmpFn</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Compares two values of type <code>long</code> whose addresses are supplied by the pointer arguments <code>p1</code> and <code>p2</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:charCmpFn\">charCmpFn</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Compares two values of type <code>char</code> whose addresses are supplied by the pointer arguments <code>p1</code> and <code>p2</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:floatCmpFn\">floatCmpFn</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Compares two values of type <code>float</code> whose addresses are supplied by the pointer arguments <code>p1</code> and <code>p2</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:doubleCmpFn\">doubleCmpFn</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Compares two values of type <code>double</code> whose addresses are supplied by the pointer arguments <code>p1</code> and <code>p2</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:unsignedCmpFn\">unsignedCmpFn</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Compares two values of type <code>unsigned</code> whose addresses are supplied by the pointer arguments <code>p1</code> and <code>p2</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:unsignedShortCmpFn\">unsignedShortCmpFn</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Compares two values of type <code>unsignedshort</code> whose addresses are supplied by the pointer arguments <code>p1</code> and <code>p2</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:unsignedLongCmpFn\">unsignedLongCmpFn</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Compares two values of type <code>unsignedlong</code> whose addresses are supplied by the pointer arguments <code>p1</code> and <code>p2</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:unsignedCharCmpFn\">unsignedCharCmpFn</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Compares two values of type <code>unsignedchar</code> whose addresses are supplied by the pointer arguments <code>p1</code> and <code>p2</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:stringCmpFn\">stringCmpFn</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Compares two values of type <code>string</code> whose addresses are supplied by the pointer arguments <code>p1</code> and <code>p2</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:pointerCmpFn\">pointerCmpFn</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Compares two values of type <code>pointer</code> whose addresses are supplied by the pointer arguments <code>p1</code> and <code>p2</code>.</td></tr>\n</table>\n<h2>Type detail</h2>\n<hr>\n<a name=\"Type:CompareFn\"></a>\n<pre class=detailCode>\ntypedef int CompareFn(*CompareFn)(const void *p1, const void *p2);\n</pre>\n<div class=detailHTML>\nThis type defines the type space of comparison functions,\neach of which take the addresses of their arguments and\nreturn an integer from the set {-1, 0, +1} depending on\nwhether the first argument is less than, equal to, or\ngreater than the second.\n</div>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:intCmpFn\"></a>\n<pre class=detailCode>\nint intCmpFn(const void *p1, const void *p2);\n</pre>\n<div class=detailHTML>\nCompares two values of type <code>int</code> whose addresses are\nsupplied by the pointer arguments <code>p1</code> and <code>p2</code>.\n</div>\n<hr>\n<a name=\"Function:shortCmpFn\"></a>\n<pre class=detailCode>\nint shortCmpFn(const void *p1, const void *p2);\n</pre>\n<div class=detailHTML>\nCompares two values of type <code>short</code> whose addresses are\nsupplied by the pointer arguments <code>p1</code> and <code>p2</code>.\n</div>\n<hr>\n<a name=\"Function:longCmpFn\"></a>\n<pre class=detailCode>\nint longCmpFn(const void *p1, const void *p2);\n</pre>\n<div class=detailHTML>\nCompares two values of type <code>long</code> whose addresses are\nsupplied by the pointer arguments <code>p1</code> and <code>p2</code>.\n</div>\n<hr>\n<a name=\"Function:charCmpFn\"></a>\n<pre class=detailCode>\nint charCmpFn(const void *p1, const void *p2);\n</pre>\n<div class=detailHTML>\nCompares two values of type <code>char</code> whose addresses are\nsupplied by the pointer arguments <code>p1</code> and <code>p2</code>.\n</div>\n<hr>\n<a name=\"Function:floatCmpFn\"></a>\n<pre class=detailCode>\nint floatCmpFn(const void *p1, const void *p2);\n</pre>\n<div class=detailHTML>\nCompares two values of type <code>float</code> whose addresses are\nsupplied by the pointer arguments <code>p1</code> and <code>p2</code>.\n</div>\n<hr>\n<a name=\"Function:doubleCmpFn\"></a>\n<pre class=detailCode>\nint doubleCmpFn(const void *p1, const void *p2);\n</pre>\n<div class=detailHTML>\nCompares two values of type <code>double</code> whose addresses are\nsupplied by the pointer arguments <code>p1</code> and <code>p2</code>.\n</div>\n<hr>\n<a name=\"Function:unsignedCmpFn\"></a>\n<pre class=detailCode>\nint unsignedCmpFn(const void *p1, const void *p2);\n</pre>\n<div class=detailHTML>\nCompares two values of type <code>unsigned</code> whose addresses are\nsupplied by the pointer arguments <code>p1</code> and <code>p2</code>.\n</div>\n<hr>\n<a name=\"Function:unsignedShortCmpFn\"></a>\n<pre class=detailCode>\nint unsignedShortCmpFn(const void *p1, const void *p2);\n</pre>\n<div class=detailHTML>\nCompares two values of type <code>unsignedshort</code> whose addresses are\nsupplied by the pointer arguments <code>p1</code> and <code>p2</code>.\n</div>\n<hr>\n<a name=\"Function:unsignedLongCmpFn\"></a>\n<pre class=detailCode>\nint unsignedLongCmpFn(const void *p1, const void *p2);\n</pre>\n<div class=detailHTML>\nCompares two values of type <code>unsignedlong</code> whose addresses are\nsupplied by the pointer arguments <code>p1</code> and <code>p2</code>.\n</div>\n<hr>\n<a name=\"Function:unsignedCharCmpFn\"></a>\n<pre class=detailCode>\nint unsignedCharCmpFn(const void *p1, const void *p2);\n</pre>\n<div class=detailHTML>\nCompares two values of type <code>unsignedchar</code> whose addresses are\nsupplied by the pointer arguments <code>p1</code> and <code>p2</code>.\n</div>\n<hr>\n<a name=\"Function:stringCmpFn\"></a>\n<pre class=detailCode>\nint stringCmpFn(const void *p1, const void *p2);\n</pre>\n<div class=detailHTML>\nCompares two values of type <code>string</code> whose addresses are\nsupplied by the pointer arguments <code>p1</code> and <code>p2</code>.\n</div>\n<hr>\n<a name=\"Function:pointerCmpFn\"></a>\n<pre class=detailCode>\nint pointerCmpFn(const void *p1, const void *p2);\n</pre>\n<div class=detailHTML>\nCompares two values of type <code>pointer</code> whose addresses are\nsupplied by the pointer arguments <code>p1</code> and <code>p2</code>.\nPointer comparison is based on the numeric equivalent of the pointer.\n</div>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/cppdoc.css",
    "content": "body {\n   font-size:100%;\n}\n\nh1 {\n   font-family:\"Arial\", \"Helvetica\", \"sansserif\"; \n   font-size:1.5em;\n   font-weight:bold;\n}\n\nh2 {\n   font-family:\"Times New Roman\", \"Times\", \"serif\";\n   font-size:1.4em;\n   font-weight:bold;\n   margin-bottom:0px;\n}\n\n.header {\n   font-size:125%;\n}\n\npre, code, .code {\n   font-family:\"Courier New\", \"Courier\", \"monospace\";\n   font-weight:bold;\n   font-size:90%;\n}\n\n.comment {\n   color:blue;\n}\n\n.it {\n   font-family:\"Times New Roman\", \"Times\", \"serif\";\n   font-weight:normal;\n   font-style:italic;\n   font-size:90%;\n}\n   \n.banner {\n   border:0;\n}\n\n.sansserif {\n   font-family:\"Helvetica Neue\", \"Helvetica\", \"Arial\", \"sansserif\";\n}\n\n.bannerText {\n   font-family:\"Helvetica Neue\", \"Helvetica\", \"Arial\", \"sansserif\";\n   font-size:1.6em;\n   font-weight:bold;\n}\n\n.index {\n   border-collapse:collapse;\n   margin-top:1px;\n}\n\n.indexHead {\n   font-family:\"Times New Roman\", \"Times\", \"serif\";\n   font-size:1.4em;\n   font-weight:bold;\n   padding-top:1em;\n}\n\n.indexKey {\n   border:1px solid black; \n   padding:3px 5px;\n   font-family:\"Courier New\", \"Courier\", \"monospace\";\n   font-weight:bold;\n   font-size:90%;\n   vertical-align: top;\n}\n\n.indexSynopsis {\n   border:1px solid black; \n   padding:3px 5px;\n   vertical-align: top;\n}\n\n.include {\n   font-family:\"Courier New\", \"Courier\", \"monospace\";\n   font-weight:bold;\n   font-size:100%;\n}\n\n.detailCode {\n   padding:0px;\n   font-family:\"Courier New\", \"Courier\", \"monospace\";\n   font-weight:bold;\n   font-size:100%;\n}\n\n.detailHTML {\n   font-family:\"Times New Roman\", \"Times\", \"serif\";\n   font-size:1em;\n   margin-left:20px;\n}\n\n.inset {\n   margin-left:36px;\n}\n\n.usageCode {\n   font-family:\"Courier New\", \"Courier\", \"monospace\";\n   font-weight:bold;\n   font-size:90%;\n   margin-left:40px;\n}   \n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/cslib-h.html",
    "content": "<html>\n<head>\n<title>../cslib.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: cslib.h\n * -------------\n * This interface defines a basic set of definitions that are shared among\n * all interfaces in the package.  These basic definitions include:\n *\n *\n *  Declarations for several new primitive types used\n *      throughout the libraries as fundamental types.\n *\n *  A function for error handling.\n *\n *  A flexible set of functions for memory allocation.\n *\n */\n</scan>\n#ifndef _cslib_h\n#define _cslib_h\n\n#include &lt;stdio.h&gt;\n#include &lt;stdlib.h&gt;\n#include &lt;stddef.h&gt;\n\n<scan class=comment>/* Section 1 -- Define new \"primitive\" types */</scan>\n\n<a name=\"Type:bool\"><scan class=comment>/*\n * Type: bool\n * ----------\n * This type defines the space of Boolean data using the constants false\n * and true.\n */\n</scan>\n#ifdef bool\n#  undef bool\n#endif\n\n#ifdef false\n#  undef false\n#endif\n\n#ifdef true\n#  undef true\n#endif\n\ntypedef enum {false, true} bool;\n\n<a name=\"Type:string\"><scan class=comment>/*\n * Type: string\n * ------------\n * This type is defined to be identical with char *.\n */\n</scan>\ntypedef char *string;\n\n<a name=\"Type:proc\"><scan class=comment>/*\n * Type: proc\n * ----------\n * This function type represents an arbitrary procedure that can be passed\n * to an abstraction and then called back from the implementation.\n */\n</scan>\ntypedef void (*proc)();\n\n<scan class=comment>/* Section 2 -- Memory allocation */</scan>\n\n<scan class=comment>/*\n * General notes\n * -------------\n * These functions provide a common interface for memory allocation.  All\n * functions in the library that allocate memory do so using getBlock and\n * freeBlock.  Even though the ANSI standard defines malloc and free for\n * the same purpose, using getBlock and freeBlock provides greater\n * compatibility with non-ANSI implementations, automatic out-of-memory\n * error detection, limited type checking, and the possibility of\n * installing a garbage-collecting allocator.\n */\n</scan>\n<a name=\"Function:getBlock\"><scan class=comment>/*\n * Function: getBlock\n * Usage: ptr = getBlock(nbytes);\n * ------------------------------\n * Allocates a block of memory of the given size.  If no memory is\n * available, getBlock generates an error.\n */\n</scan>\nvoid *getBlock(size_t nbytes);\n\n<a name=\"Private function:getTypedBlock\"><scan class=comment>/*\n * Private function: getTypedBlock\n * -------------------------------\n * Returns a block with the indicated type marker.  This function is called\n * from the newBlock and newArray macros and should not be invoked by\n * clients.\n */\n</scan>\nvoid *getTypedBlock(size_t nbytes, string type);\n\n<a name=\"Function:freeBlock\"><scan class=comment>/*\n * Function: freeBlock\n * Usage: freeBlock(ptr);\n * ----------------------\n * Frees the memory associated with ptr, which must have been allocated\n * using getBlock, newBlock, or newArray.  If the block appears to be in\n * static memory or allocated by malloc, the call to freeBlock has no\n * effect.\n */\n</scan>\nvoid freeBlock(void *ptr);\n\n<a name=\"Function:getBlockType\"><scan class=comment>/*\n * Function: getBlockType\n * Usage: type = getBlockType(ptr);\n * --------------------------------\n * Returns a string indicating the type of the block.  If the block is\n * created using the newBlock macro, the string is the type argument.  If\n * the block is created using newArray, the string consists of the base\n * type followed by the string \"[]\".  In all other cases, the type is\n * returned as \"?\".  This string is constant and should not be freed.\n */\n</scan>\nstring getBlockType(void *ptr);\n\n<a name=\"Function:setBlockData\"><scan class=comment>/*\n * Function: setBlockData\n * Usage: setBlockData(ptr, value);\n * --------------------------------\n * Sets the data field inside the block to the specified value.\n */\n</scan>\nvoid setBlockData(void *ptr, void *value);\n\n<a name=\"Function:getBlockData\"><scan class=comment>/*\n * Function: getBlockData\n * Usage: value = getBlockData(ptr);\n * ---------------------------------\n * Returns the data field inside the block.\n */\n</scan>\nvoid *getBlockData(void *ptr);\n\n<a name=\"Macro:newBlock\"><scan class=comment>/*\n * Macro: newBlock\n * Usage: ptr = (type) newBlock(type);\n * -----------------------------------\n * Allocates enough space to hold an object of the type to which type\n * points (note that type must be a pointer type).  Note that newBlock is\n * different from the new operator used in C++; the former takes a pointer\n * type and the latter takes the target type.\n */\n</scan>\n#define newBlock(type) ((type) getTypedBlock(sizeof *((type) NULL), #type))\n\n<a name=\"Macro:newArray\"><scan class=comment>/*\n * Macro: newArray\n * Usage: ptr = newArray(n, type);\n * -------------------------------\n * Allocates enough space to hold an array of n values of the specified\n * type.\n */\n</scan>\n#define newArray(n, type) \\\n   ((type *) getTypedBlock((n) * sizeof(type), #type \"[]\"))\n\n<scan class=comment>/* Section 3 -- error handling */</scan>\n\n<a name=\"Function:error\"><scan class=comment>/*\n * Function: error\n * Usage: error(msg, . . .);\n * -------------------------\n * Generates an error string, expanding % constructions appearing in the\n * error message string just as printf does.  The behavior depends on\n * whether the call is compiled in C or C++.\n *\n * In C, calling error first checks to see if there is a handler for\n * ErrorException.  If so, calling error throws an ErrorException exception\n * with the expanded error string as argument.  If there is no\n * ErrorException handler, the program prints the message to the standard\n * error channel and exits with a status code indicating failure (as given\n * by the constant ERROR_EXIT_STATUS).\n *\n * In C++, calling error throws an exception with the expanded error string\n * (defined as a C++ string) as its value.\n */\n</scan>\n   void error(string msg, ...);\n\n<scan class=comment>/* Section 4 -- Redefine main */</scan>\n\n#define main main_\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/cslib.html",
    "content": "<html>\n<head>\n<title>cslib.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><a href=\"cslib-h.html\"><code>cslib.h</code></a></h1>\nThis interface defines a basic set of definitions that are shared\namong all interfaces in the package.  These basic definitions include:\n\n<ol>\n <li>Declarations for several new &ldquo;primitive&rdquo; types used\n     throughout the libraries as fundamental types.\n\n <li>A function for error handling.\n\n <li>A flexible set of functions for memory allocation.\n</ol>\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Types</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:bool\">bool</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This type defines the space of Boolean data using the constants <code>false</code> and <code>true</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:string\">string</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This type is defined to be identical with <code>char *</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:proc\">proc</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This function type represents an arbitrary procedure that can be passed to an abstraction and then called back from the implementation.</td></tr>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getBlock\">getBlock(nbytes)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Allocates a block of memory of the given size.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:freeBlock\">freeBlock(ptr)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Frees the memory associated with <code>ptr</code>, which must have been allocated using <code>getBlock</code>, <code>newBlock</code>, or <code>newArray</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getBlockType\">getBlockType(ptr)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a string indicating the type of the block.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setBlockData\">setBlockData(ptr,&nbsp;value)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the data field inside the block to the specified value.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getBlockData\">getBlockData(ptr)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the data field inside the block.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:error\">error(msg,&nbsp;.&nbsp;.&nbsp;.)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Generates an error string, expanding <code>%</code> constructions appearing in the error message string just as <code>printf</code> does.</td></tr>\n</table>\n<h2>Type detail</h2>\n<hr>\n<a name=\"Type:bool\"></a>\n<pre class=detailCode>\n</pre>\n<div class=detailHTML>\nThis type defines the space of Boolean data using the constants\n<code>false</code> and <code>true</code>.\n</div>\n<hr>\n<a name=\"Type:string\"></a>\n<pre class=detailCode>\ntypedef char *string;\n</pre>\n<div class=detailHTML>\nThis type is defined to be identical with <code>char *</code>.\n</div>\n<hr>\n<a name=\"Type:proc\"></a>\n<pre class=detailCode>\ntypedef void proc(*proc)();\n</pre>\n<div class=detailHTML>\nThis function type represents an arbitrary procedure that can be passed\nto an abstraction and then called back from the implementation.\n</div>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:getBlock\"></a>\n<pre class=detailCode>\nvoid *getBlock(size_t nbytes);\n</pre>\n<div class=detailHTML>\nAllocates a block of memory of the given size.  If no memory is\navailable, <code>getBlock</code> generates an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nptr = getBlock(nbytes);\n</pre>\n<hr>\n<a name=\"Function:freeBlock\"></a>\n<pre class=detailCode>\nvoid freeBlock(void *ptr);\n</pre>\n<div class=detailHTML>\nFrees the memory associated with <code>ptr</code>, which must have\nbeen allocated using <code>getBlock</code>, <code>newBlock</code>, or\n<code>newArray</code>.  If the block appears to be in static memory\nor allocated by <code>malloc</code>, the call to <code>freeBlock</code>\nhas no effect.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfreeBlock(ptr);\n</pre>\n<hr>\n<a name=\"Function:getBlockType\"></a>\n<pre class=detailCode>\nstring getBlockType(void *ptr);\n</pre>\n<div class=detailHTML>\nReturns a string indicating the type of the block.  If the block is\ncreated using the <code>newBlock</code> macro, the string is the type\nargument.  If the block is created using <code>newArray</code>, the\nstring consists of the base type followed by the string <code>\"[]\"</code>.\nIn all other cases, the type is returned as <code>\"?\"</code>.  This\nstring is constant and should not be freed.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ntype = getBlockType(ptr);\n</pre>\n<hr>\n<a name=\"Function:setBlockData\"></a>\n<pre class=detailCode>\nvoid setBlockData(void *ptr, void *value);\n</pre>\n<div class=detailHTML>\nSets the data field inside the block to the specified value.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetBlockData(ptr, value);\n</pre>\n<hr>\n<a name=\"Function:getBlockData\"></a>\n<pre class=detailCode>\nvoid *getBlockData(void *ptr);\n</pre>\n<div class=detailHTML>\nReturns the data field inside the block.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvalue = getBlockData(ptr);\n</pre>\n<hr>\n<a name=\"Function:error\"></a>\n<pre class=detailCode>\nvoid error(string msg, ...);\n</pre>\n<div class=detailHTML>\nGenerates an error string, expanding <code>%</code> constructions\nappearing in the error message string just as <code>printf</code> does.\nThe behavior depends on whether the call is compiled in C or C++.\n\n<p>In C, calling <code>error</code> first checks to see if there is a\nhandler for <code>ErrorException</code>.  If so, calling\n<code>error</code> throws an <code>ErrorException</code>\nexception with the expanded error string as argument.  If\nthere is no <code>ErrorException</code> handler, the program\nprints the message to the standard error channel and exits\nwith a status code indicating failure (as given by the\nconstant <code>ERROR_EXIT_STATUS</code>).\n\n<p>In C++, calling <code>error</code> throws an exception with the\nexpanded error string (defined as a C++ string) as its value.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nerror(msg, . . .);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/exception-h.html",
    "content": "<html>\n<head>\n<title>../exception.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: exception.h\n * -----------------\n * This interface exports a portable exception-handling mechanism for C.\n *\n * The exception.h interface makes it possible for clients to specify a\n * handler for an exceptional conditions in a syntactically readable way. \n * As a client, your first step is to declare an exception condition name\n * by declaring a variable of type exception, as in\n *\n *    exception MyException;\n *\n * Normal visibility rules apply, so that you should declare the exception\n * variable at the appropriate level.  For example, if an exception is\n * local to an implementation, it should be declared statically within that\n * module.  If an exception condition is shared by many modules, the\n * exception variable should be declared in an interface and exported to\n * all clients that need it.  This package defines and exports the\n * exception ErrorException, which is likely to be sufficient for many\n * clients.\n *\n * The basic functionality of exceptions is that one piece of code can\n * \"throw\" an exception so that it can then be \"caught\" by special code in\n * a dynamically enclosing section of the program.  Exceptions are\n * triggered by calling the pseudo-function throw with the exception name,\n * as in\n *\n *    throw(MyException);\n *\n * Exceptions are handled using the try statement (actually implemented\n * using macros), which has the form:\n *\n *    try {\n *       . . . statements in the body of the block . . .\n *    } catch (exception1) {\n *       . . . statements to handle exception 1 . . .\n *    } catch (exception2) {\n *       . . . statements to handle exception 2 . . .\n *    } catch (ANY) {\n *       . . . statements to handle any exception . . .\n *    } finally {\n *       . . . statements to be executed before exit in all cases . . .\n *    } endtry\n *\n * Any number of catch clauses may appear.  The ANY and finally clauses are\n * optional.\n *\n * When the program encounters the try statement, the statements in the\n * body are executed.  If no exception conditions are thrown during that\n * execution, either in this block or by a function call nested inside this\n * block, control passes to the end of the try statement when the last\n * statement in the block is executed.  If an exception is thrown during\n * the dynamic execution of the block, control immediately passes to the\n * statements in the appropriate catch clause.  Only the statements in that\n * clause are executed; no break statement is required to exit the block.\n *\n * The try statement guarantees that the statements in the finally clause,\n * if present, will always be executed, even if an exception is thrown that\n * is caught at a higher level.\n *\n * If no handler for the exception appears anywhere in the control history,\n * the program exits with an error.\n *\n * Examples of use:\n *\n * 1.  Catching errors\n *\n * The following code fragment traps calls to error, so that the program\n * does not quit but instead returns to the top-level read-and-execute\n * loop.\n *\n *    while (true) {\n *        try {\n *            printf(\"&gt; \");\n *            cmd = readCommand();\n *            executeCommand(cmd);\n *        } catch (ErrorException) {\n *            printf(\"error: %s\\n\", (string) getExceptionValue());\n *            -- additional handling code, if any --\n *        } endtry\n *    }\n *\n * If either readCommand or executeCommand calls error, control will be\n * passed back to the main loop, after executing any additional handler\n * code.  The error message is passed as the exception value and can be\n * printed as shown in the example.\n *\n * 2.  Handling control-C (Unix systems)\n *\n * The following code extends the example above so that typing ^C also\n * returns to top-level:\n *\n *    #include \n * \u0001\n *    static exception ControlCException;\n *    static int errorCount = 0;\n *    static int controlCHandler();\n * \u0001\n *    main() {\n *        string cmd;\n * \u0001\n *        signal(SIGINT, controlCHandler);\n *        while (true) {\n *            try {\n *                printf(\"&gt; \");\n *                cmd = readCommand();\n *                executeCommand(cmd);\n *            } catch (ControlCException) {\n *                printf(\"^C\\n\");\n *                signal(SIGINT, controlCHandler);\n *            } catch (ErrorException) {\n *                errorCount++;\n *            } endtry\n *        }\n *    }\n * \u0001\n *    static int controlCHandler() {\n *        throw(ControlCException);\n *    }\n */\n</scan>\n#ifndef _exception_h\n#define _exception_h\n\n#include &lt;setjmp.h&gt;\n#include &lt;string.h&gt;\n#include \"cslib.h\"\n\n<scan class=comment>/*\n * Implementation notes\n * --------------------\n * Most of the implementation of the exception mechanism is included\n * directly within the macros defined by this file.  Clients should\n * ordinarily be able to read the general package description and ignore\n * the details of the code.\n */\n</scan>\n<scan class=comment>/* Define error status indicators */</scan>\n\n#define E_TOO_MANY_EXCEPT_CLAUSES 101\n#define E_UNHANDLED_EXCEPTION 102\n\n<scan class=comment>/* Codes to keep track of the state of the try handler */</scan>\n\n#define ES_BODY       1\n#define ES_CATCH      2\n#define ES_CAUGHT     3\n#define ES_RETRY      4\n#define ES_FINALLY    5\n#define ES_FINISHED   6\n\n<scan class=comment>/*\n * The following conditional macro definition is used to debug\n * the &lt;code&gt;try&lt;/code&gt; macro.  If __DebugTry__ is set, the\n * program traces the finite state machine operation used\n * to implement exceptions.\n */</scan>\n\n#ifdef __DebugTry__\n#   define debugTry(s) printf(s \"\\n\", _es)\n#else\n#   define debugTry(s)\n#endif\n\n<a name=\"Type:exception\"><scan class=comment>/*\n * Type: exception\n * ---------------\n * This type is used to define the general class of exceptions.  Exceptions\n * are specified by their address, so that the actual structure does not\n * matter.  Strings are used here so that exporters of exceptions can store\n * the exception name for the use of debuggers and other tools.\n */\n</scan>\ntypedef struct { string name; } exception;\n\n<scan class=comment>/*\n * This structure is used internally to maintain a chain of\n * exception scopes on the control stack.\n */</scan>\n\ntypedef struct exceptionContextBlock {\n    jmp_buf jmp;\n    exception *id;\n    void *value;\n    string name;\n    void *lock;\n    struct exceptionContextBlock *link;\n} ExceptionContextBlock;\n\n<a name=\"Type:ErrorException\"><scan class=comment>/*\n * Type: ErrorException\n * --------------------\n * Predefined exception type for the error function.\n */\n</scan>extern exception ErrorException;\n\n<a name=\"Constant:ANY\"><scan class=comment>/*\n * Constant: ANY\n * -------------\n * Predefined exception type that allows handlers to catch an arbitrary\n * exception.\n */\n</scan>extern exception ANY;\n\n<scan class=comment>/* Macros for the pseudostatement forms */</scan>\n\n#define throw(e) throwException(&amp;e, #e, NULL)\n\n#define try \\\n      { \\\n          ExceptionContextBlock _ctx; \\\n          int _es; \\\n          _es = ES_BODY; \\\n          _ctx.lock = NULL; \\\n          debugTry(\"try\"); \\\n          debugTry(\"push exception stack [es = %d]\"); \\\n          pushExceptionStack(&amp;_ctx); \\\n          if (setjmp(_ctx.jmp) != 0) { \\\n              _es = ES_CATCH; \\\n          } \\\n          debugTry(\"setjmp [es = %d]\"); \\\n          if (_es == ES_BODY)\n\n#define catch(e) \\\n          if (_es == ES_BODY || _es == ES_CAUGHT) _es = ES_FINALLY; \\\n          debugTry(\"catch (\" #e \") [es = %d]\"); \\\n          if (_es == ES_CATCH &amp;&amp; (_ctx.id == &amp;e || &amp;e == &amp;ANY)) { \\\n              _es = ES_CAUGHT; \\\n          } if (_es == ES_CAUGHT)\n\n#define finally \\\n          debugTry(\"finally [es = %d]\"); \\\n          debugTry(\"pop exception stack [es = %d]\"); \\\n          popExceptionStack(); \\\n          _es = (_es == ES_CATCH) ? ES_RETRY : ES_FINISHED;\n\n#define endtry \\\n          debugTry(\"endtry [es = %d]\"); \\\n          if (_es != ES_FINISHED &amp;&amp; _es != ES_RETRY) { \\\n              debugTry(\"pop exception stack [es = %d]\"); \\\n              popExceptionStack(); \\\n          } \\\n          if (_es == ES_RETRY) _es = ES_CATCH; \\\n          if (_es == ES_CATCH) unwindException(&amp;_ctx); \\\n      }\n\n#define getExceptionName() _ctx.name\n#define getExceptionValue() _ctx.value\n#define getCurrentException() _ctx.id\n\n<scan class=comment>/* Internal entry points -- see implementation for details */</scan>\n\nvoid throwException(exception *e, string name, void *value);\nvoid pushExceptionStack(ExceptionContextBlock *cptr);\nvoid popExceptionStack(void);\nvoid unwindException(ExceptionContextBlock *cptr);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/exception.html",
    "content": "<html>\n<head>\n<title>exception.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><a href=\"exception-h.html\"><code>exception.h</code></a></h1>\nThis interface exports a portable exception-handling mechanism for C.\n\n<p>The <code>exception.h</code> interface makes it possible for\nclients to specify a handler for an exceptional conditions in a\nsyntactically readable way.  As a client, your first step\nis to declare an exception condition name by declaring\na variable of type exception, as in\n\n<pre>\n   exception MyException;\n</pre>\n\n<p>Normal visibility rules apply, so that you should declare the\nexception variable at the appropriate level.  For example, if an\nexception is local to an implementation, it should be declared\nstatically within that module.  If an exception condition is\nshared by many modules, the exception variable should be declared\nin an interface and exported to all clients that need it.  This\npackage defines and exports the exception <code>ErrorException</code>,\nwhich is likely to be sufficient for many clients.\n\n<p>The basic functionality of exceptions is that one piece of code\ncan \"throw\" an exception so that it can then be \"caught\" by\nspecial code in a dynamically enclosing section of the program.\nExceptions are triggered by calling the pseudo-function\n<code>throw</code> with the exception name, as in\n\n<pre>\n   throw(MyException);\n</pre>\n\n<p>Exceptions are handled using the <code>try</code> statement\n(actually implemented using macros), which has the form:\n\n<pre>\n   try {\n      . . . statements in the body of the block . . .\n   } catch (exception1) {\n      . . . statements to handle exception 1 . . .\n   } catch (exception2) {\n      . . . statements to handle exception 2 . . .\n   } catch (ANY) {\n      . . . statements to handle any exception . . .\n   } finally {\n      . . . statements to be executed before exit in all cases . . .\n   } endtry\n</pre>\n\n<p>Any number of <code>catch</code> clauses may appear.  The\n<code>ANY</code> and <code>finally</code> clauses are optional.\n\n<p>When the program encounters the <code>try</code> statement, the\nstatements in the body are executed.  If no exception conditions\nare thrown during that execution, either in this block or by a\nfunction call nested inside this block, control passes to the end\nof the <code>try</code> statement when the last statement in the\nblock is executed.  If an exception is thrown during the dynamic\nexecution of the block, control immediately passes to the statements\nin the appropriate <code>catch</code> clause.  Only the statements\nin that clause are executed; no <code>break</code> statement is\nrequired to exit the block.\n\n<p>The <code>try</code> statement guarantees that the statements in\nthe <code>finally</code> clause, if present, will always be executed,\neven if an exception is thrown that is caught at a higher level.\n\n<p>If no handler for the exception appears anywhere in the\ncontrol history, the program exits with an error.\n\n<p>Examples of use:\n\n<p>1.  Catching errors\n\n<p>The following code fragment traps calls to <code>error</code>, so\nthat the program does not quit but instead returns to the top-level\nread-and-execute loop.\n\n<pre>\n   while (true) {\n       try {\n           printf(\"> \");\n           cmd = readCommand();\n           executeCommand(cmd);\n       } catch (ErrorException) {\n           printf(\"error: %s\\n\", (string) getExceptionValue());\n           -- additional handling code, if any --\n       } endtry\n   }\n</pre>\n\n<p>If either <code>readCommand</code> or <code>executeCommand</code>\ncalls <code>error</code>, control will be passed back to the main\nloop, after executing any additional handler code.  The error\nmessage is passed as the exception value and can be printed as\nshown in the example.\n\n<p>2.  Handling control-C (Unix systems)\n\n<p>The following code extends the example above so that typing\n<code>^C</code> also returns to top-level:\n\n<pre>\n   #include <signal.h>\n&nbsp;\n   static exception ControlCException;\n   static int errorCount = 0;\n   static int controlCHandler();\n&nbsp;\n   main() {\n       string cmd;\n&nbsp;\n       signal(SIGINT, controlCHandler);\n       while (true) {\n           try {\n               printf(\"> \");\n               cmd = readCommand();\n               executeCommand(cmd);\n           } catch (ControlCException) {\n               printf(\"^C\\n\");\n               signal(SIGINT, controlCHandler);\n           } catch (ErrorException) {\n               errorCount++;\n           } endtry\n       }\n   }\n&nbsp;\n   static int controlCHandler() {\n       throw(ControlCException);\n   }\n</pre>\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Types</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:exception\">exception</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This type is used to define the general class of exceptions.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:ErrorException\">ErrorException</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Predefined exception type for the <code>error</code> function.</td></tr>\n<tr><td class=indexHead colspan=2>Constant</td></tr>\n<tr><td class=indexKey><nobr>ANY&nbsp;</nobr></td><td class=indexSynopsis width=100%>Predefined exception type that allows handlers to catch an arbitrary exception.</td></tr>\n</table>\n<h2>Type detail</h2>\n<hr>\n<a name=\"Type:exception\"></a>\n<pre class=detailCode>\ntypedef struct { string name; } exception;\n</pre>\n<div class=detailHTML>\nThis type is used to define the general class of exceptions.\nExceptions are specified by their address, so that the\nactual structure does not matter.  Strings are used here\nso that exporters of exceptions can store the exception\nname for the use of debuggers and other tools.\n</div>\n<hr>\n<a name=\"Type:ErrorException\"></a>\n<pre class=detailCode>\nextern exception ErrorException;\n</pre>\n<div class=detailHTML>\nPredefined exception type for the <code>error</code> function.\n</div>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/fastsexp-h.html",
    "content": "<html>\n<head>\n<title>../fastsexp.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: fastsexp.h\n * ----------------\n * This interface provides the same facilities as \"sexp.h\" but implements\n * car and cdr as macros for efficiency.  The disadvantage of this approach\n * is that error-checking is reduced, since there is now no checking to see\n * if the arguments are in fact dotted pairs.\n */\n</scan>\n#ifndef _fastsexp_h\n#define _fastsexp_h\n\n#include \"cslib.h\"\n#include \"sexp.h\"\n#include \"sexpcdt.h\"\n\n#define car(x) ((x)-&gt;SxValue.DtprRep._Car)\n#define cdr(x) ((x)-&gt;SxValue.DtprRep._Cdr)\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/fastsexp.html",
    "content": "<html>\n<head>\n<title>fastsexp.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1><a href=\"fastsexp-h.html\"><code>fastsexp.h</code></a></h1>\nThis interface provides the same facilities as \"sexp.h\"\nbut implements car and cdr as macros for efficiency.\nThe disadvantage of this approach is that error-checking\nis reduced, since there is now no checking to see if the\narguments are in fact dotted pairs.\n<table class=index width=100%>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/filelib-h.html",
    "content": "<html>\n<head>\n<title>../filelib.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: filelib.h\n * ---------------\n * This interface exports a standardized set of tools for working with\n * files across various platforms.  It is implemented for each of the\n * following platforms: Mac OSX, Windows, and Linux.  Directory and search\n * paths are allowed to contain separators in any of the supported styles,\n * which often makes it possible to use the same code on different\n * platforms.\n */\n</scan>\n#ifndef _filelib_h\n#define _filelib_h\n\n#include \"cslib.h\"\n#include \"iterator.h\"\n\n<scan class=comment>/* Exported entries */</scan>\n\n<a name=\"Function:getDirectoryPathSeparator\"><scan class=comment>/*\n * Function: getDirectoryPathSeparator\n * Usage: sep = getDirectoryPathSeparator();\n * -----------------------------------------\n * Returns the standard directory path separator used on this platform.\n */\n</scan>\nstring getDirectoryPathSeparator(void);\n\n<a name=\"Function:getSearchPathSeparator\"><scan class=comment>/*\n * Function: getSearchPathSeparator\n * Usage: sep = getSearchPathSeparator();\n * --------------------------------------\n * Returns the standard search path separator used on this platform.\n */\n</scan>\nstring getSearchPathSeparator(void);\n\n<a name=\"Function:getRoot\"><scan class=comment>/*\n * Function: getRoot\n * Usage: root = getRoot(filename);\n * --------------------------------\n * Returns the root of a filename.ext pair, which consists of everything in\n * filename up to the last dot and the subsequent extension.  If no dot\n * appears, getRoot returns the entire name.\n *\n *         the extension\n */\n</scan>\nstring getRoot(string filename);\n\n<a name=\"Function:getExtension\"><scan class=comment>/*\n * Function: getExtension\n * Usage: ext = getExtension(filename);\n * ------------------------------------\n * Returns the extension component of filename, which consists of the\n * separating dot and all subsequent characters.  If no dot exists in the\n * final component, extension returns the empty string.  Note that this\n * interpretation is different than one used by the :e substitution in the\n * shell.  The semantics were chosen so that the expression\n *\n *    concat(getRoot(filename), getExtension(filename))\n *\n * is equal to the original filename.\n */\n</scan>\nstring getExtension(string filename);\n\n<a name=\"Function:getHead\"><scan class=comment>/*\n * Function: getHead\n * Usage: head = getHead(pathname);\n * --------------------------------\n * Returns all but the last component of a path name, where the components\n * are names separated by any of the directory path separators (forward or\n * reverse slashes).  The special cases are illustrated by the following\n * examples:\n *\n *    getHead(\"a/b\")  = \"a\"\n *    getHead(\"a\")    = \"\"\n *    getHead(\"/a\")   = \"/\"\n *    getHead(\"/\")    = \"/\"\n */\n</scan>\nstring getHead(string pathname);\n\n<a name=\"Function:getTail\"><scan class=comment>/*\n * Function: getTail\n * Usage: tail = getTail(pathname);\n * --------------------------------\n * Returns the last component of a path name, where the components are\n * names separated by any of the directory path separators (forward or\n * reverse slashes).  The special cases are illustrated by the following\n * examples:\n *\n *    getTail(\"a/b\")   = \"b\"\n *    getTail(\"a\")     = \"a\"\n *    getTail(\"/a\")    = \"a\"\n *    getTail(\"/\")     = \"\"\n */\n</scan>\nstring getTail(string pathname);\n\n<a name=\"Function:defaultExtension\"><scan class=comment>/*\n * Function: defaultExtension\n * Usage: newname = defaultExtension(filename, ext);\n * -------------------------------------------------\n * Adds an extension to a file name if none already exists.  If the\n * extension argument begins with a leading *, any existing extension in\n * filename is replaced by ext.\n */\n</scan>\nstring defaultExtension(string filename, string ext);\n\n<a name=\"Function:openOnPath\"><scan class=comment>/*\n * Function: openOnPath\n * Usage: FILE *file = openOnPath(path, filename, mode);\n * -----------------------------------------------------\n * Opens a files by searching directories in a search path for the first\n * matching file.  The openOnPath routine has the same structure as fopen\n * in the standard library and the filename and mode arguments are the same\n * as in that call.  The path argument consists of a list of directories\n * which are prepended to the filename, unless the filename begins with an\n * absolute directory marker, such as / or ~.  The directories in the\n * search path may be separated either by colons (Unix style) or semicolons\n * (Windows style).  The openOnPath function returns an open stream to the\n * indicated file, or NULL, if no existing file is found.\n */\n</scan>\nFILE *openOnPath(string path, string filename, string mode);\n\n<a name=\"Function:findOnPath\"><scan class=comment>/*\n * Function: findOnPath\n * Usage: pathname = findOnPath(path, filename);\n * ---------------------------------------------\n * Returns a canonical name of a file found using a search path.  The\n * findOnPath function is similar to openOnPath, except that it returns the\n * name of the file instead of trying to open in.  If no matching file is\n * found, findOnPath returns NULL.\n */\n</scan>\nstring findOnPath(string path, string filename);\n\n<a name=\"Function:deleteFile\"><scan class=comment>/*\n * Function: deleteFile\n * Usage: deleteFile(filename);\n * ----------------------------\n * Deletes the specified file.  Errors are reported by calling error in the\n * implementation.\n */\n</scan>\nvoid deleteFile(string filename);\n\n<a name=\"Function:renameFile\"><scan class=comment>/*\n * Function: renameFile\n * Usage: renameFile(oldname, newname);\n * ------------------------------------\n * Renames a file.  Errors are reported by calling error in the\n * implementation.\n */\n</scan>\nvoid renameFile(string oldname, string newname);\n\n<a name=\"Function:fileExists\"><scan class=comment>/*\n * Function: fileExists\n * Usage: if (fileExists(pathname)) . . .\n * --------------------------------------\n * Returns true if the specified file exists.\n */\n</scan>\nbool fileExists(string pathname);\n\n<a name=\"Function:isFile\"><scan class=comment>/*\n * Function: isFile\n * Usage: if (isFile(pathname)) . . .\n * ----------------------------------\n * Returns true if the specified file is a regular file.\n */\n</scan>\nbool isFile(string pathname);\n\n<a name=\"Function:isSymbolicLink\"><scan class=comment>/*\n * Function: isSymbolicLink\n * Usage: if (isSymbolicLink(pathname)) . . .\n * ------------------------------------------\n * Returns true if the specified file is a symbolic link.\n */\n</scan>\nbool isSymbolicLink(string pathname);\n\n<a name=\"Function:isDirectory\"><scan class=comment>/*\n * Function: isDirectory\n * Usage: if (isDirectory(pathname)) . . .\n * ---------------------------------------\n * Returns true if the specified file is a directory.\n */\n</scan>\nbool isDirectory(string pathname);\n\n<a name=\"Function:createDirectory\"><scan class=comment>/*\n * Function: createDirectory\n * Usage: createDirectory(pathname);\n * ---------------------------------\n * Creates a new directory for the specified pathname.  The createDirectory\n * function does not report an error if the directory already exists. \n * Unlike createDirectoryPath, createDirectory does not create missing\n * directories along the path.  If some component of pathname does not\n * exist, this function signals an error.\n */\n</scan>\nvoid createDirectory(string pathname);\n\n<a name=\"Function:createDirectoryPath\"><scan class=comment>/*\n * Function: createDirectoryPath\n * Usage: createDirectoryPath(pathname);\n * -------------------------------------\n * Creates a new directory for the specified pathname.   If intermediate\n * components of the pathname do not exist, this function creates them as\n * needed.\n */\n</scan>\nvoid createDirectoryPath(string pathname);\n\n<a name=\"Function:setCurrentDirectory\"><scan class=comment>/*\n * Function: setCurrentDirectory\n * Usage: setCurrentDirectory(pathname);\n * -------------------------------------\n * Changes the current directory to the specified path.\n */\n</scan>\nvoid setCurrentDirectory(string path);\n\n<a name=\"Function:getCurrentDirectory\"><scan class=comment>/*\n * Function: getCurrentDirectory\n * Usage: pathname = getCurrentDirectory();\n * ----------------------------------------\n * Returns an absolute pathname for the current directory.\n */\n</scan>\nstring getCurrentDirectory(void);\n\n<a name=\"Function:expandPathname\"><scan class=comment>/*\n * Function: expandPathname\n * Usage: fullname = expandPathname(pathname);\n * -------------------------------------------\n * Expands a pathname into a canonical name for the platform.\n */\n</scan>\nstring expandPathname(string filename);\n\n<a name=\"Function:listDirectory\"><scan class=comment>/*\n * Function: listDirectory\n * Usage: string array[] = listDirectory(dir);\n * -------------------------------------------\n * Returns an alphabetical list of all the files in the specified\n * directory, excluding the unix . and .. entries.  The array is terminated\n * with a NULL entry.\n */\n</scan>\nstring *listDirectory(string dir);\n\n<a name=\"Function:newDirectoryIterator\"><scan class=comment>/*\n * Function: newDirectoryIterator\n * Usage: foreach (name in newDirectoryIterator(dir)) . . .\n * --------------------------------------------------------\n * Creates a new directory iterator that will step through the files in the\n * specified directory.\n */\n</scan>\nIterator newDirectoryIterator(string dir);\n\n<a name=\"Function:newDirectoryTreeIterator\"><scan class=comment>/*\n * Function: newDirectoryTreeIterator\n * Usage: foreach (name in newDirectoryTreeIterator(dir)) . . .\n * ------------------------------------------------------------\n * Creates a new directory iterator that will walk recursively through the\n * files in the specified directory and its subdirectories.\n */\n</scan>\nIterator newDirectoryTreeIterator(string dir);\n\n<a name=\"Function:matchFilenamePattern\"><scan class=comment>/*\n * Function: matchFilenamePattern\n * Usage: if (matchFilenamePattern(filename, pattern)) . . .\n * ---------------------------------------------------------\n * Determines whether the filename matches the specified pattern.  The\n * pattern string is interpreted in much the same way that a Unix shell\n * expands filenames and supports the following wildcard options:\n *\n *\n * ?\n *     Matches any single character\n * *\n *     Matches any sequence of characters\n * [...]\n *     Matches any of the specified characters\n * [^...]\n *     Matches any character except the specified ones\n *\n *\n * The last two options allow a range of characters to be specified in the\n * form a-z.\n */\n</scan>\nbool matchFilenamePattern(string filename, string pattern);\n\n<a name=\"Function:getFileType\"><scan class=comment>/*\n * Function: getFileType\n * Usage: type = getFileType(filename);\n * ------------------------------------\n * Gets the file type of a Macintosh file, which is a four-character\n * string.  This function returns the string \"????\" on other platforms.\n */\n</scan>\nstring getFileType(string filename);\n\n<a name=\"Function:getFileCreator\"><scan class=comment>/*\n * Function: getFileCreator\n * Usage: type = getFileCreator(filename);\n * ---------------------------------------\n * Gets the creator code of a Macintosh file, which is a four-character\n * string.  This function returns the string \"????\" on other platforms.\n */\n</scan>\nstring getFileCreator(string filename);\n\n<a name=\"Friend function:setFileTypeAndCreator\"><scan class=comment>/*\n * Friend function: setFileTypeAndCreator\n * Usage: setFileTypeAndCreator(pathname, type, creator);\n * ------------------------------------------------------\n * Sets the Macintosh type and creator information for the specified path. \n * It has no effect on other platforms.\n */\n</scan>\nvoid setFileTypeAndCreator(string pathname, string type, string creator);\n\n<a name=\"Friend function:copyFileTypeAndCreator\"><scan class=comment>/*\n * Friend function: copyFileTypeAndCreator\n * Usage: copyFileTypeAndCreator(src, dst);\n * ----------------------------------------\n * Copies the Macintosh type and creator information from the source file\n * to the destination file.  It has no effect on other platforms.\n */\n</scan>\nvoid copyFileTypeAndCreator(string src, string dst);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/filelib.html",
    "content": "<html>\n<head>\n<title>filelib.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><a href=\"filelib-h.html\"><code>filelib.h</code></a></h1>\nThis interface exports a standardized set of tools for working with\nfiles across various platforms.  It is implemented for each of the\nfollowing platforms: Mac OSX, Windows, and Linux.  Directory and\nsearch paths are allowed to contain separators in any of the\nsupported styles, which often makes it possible to use the same\ncode on different platforms.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getDirectoryPathSeparator\">getDirectoryPathSeparator()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the standard directory path separator used on this platform.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getSearchPathSeparator\">getSearchPathSeparator()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the standard search path separator used on this platform.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getRoot\">getRoot(filename)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the root of a <code>filename.ext</code> pair, which consists of everything in <code>filename</code> up to the last dot and the subsequent extension.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getExtension\">getExtension(filename)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the extension component of <code>filename</code>, which consists of the separating dot and all subsequent characters.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getHead\">getHead(pathname)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns all but the last component of a path name, where the components are names separated by any of the directory path separators (forward or reverse slashes).</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getTail\">getTail(pathname)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the last component of a path name, where the components are names separated by any of the directory path separators (forward or reverse slashes).</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:defaultExtension\">defaultExtension(filename,&nbsp;ext)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Adds an extension to a file name if none already exists.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:openOnPath\">openOnPath(path,&nbsp;filename,&nbsp;mode)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Opens a files by searching directories in a search path for the first matching file.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:findOnPath\">findOnPath(path,&nbsp;filename)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a canonical name of a file found using a search path.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:deleteFile\">deleteFile(filename)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Deletes the specified file.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:renameFile\">renameFile(oldname,&nbsp;newname)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Renames a file.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:fileExists\">fileExists(pathname)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the specified file exists.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:isFile\">isFile(pathname)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the specified file is a regular file.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:isSymbolicLink\">isSymbolicLink(pathname)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the specified file is a symbolic link.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:isDirectory\">isDirectory(pathname)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the specified file is a directory.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:createDirectory\">createDirectory(pathname)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a new directory for the specified pathname.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:createDirectoryPath\">createDirectoryPath(pathname)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a new directory for the specified pathname.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setCurrentDirectory\">setCurrentDirectory(pathname)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Changes the current directory to the specified path.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getCurrentDirectory\">getCurrentDirectory()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns an absolute pathname for the current directory.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:expandPathname\">expandPathname(pathname)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Expands a pathname into a canonical name for the platform.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:listDirectory\">listDirectory(dir)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns an alphabetical list of all the files in the specified directory, excluding the unix <code>.</code> and <code>..</code> entries.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newDirectoryIterator\">newDirectoryIterator(dir)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a new directory iterator that will step through the files in the specified directory.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newDirectoryTreeIterator\">newDirectoryTreeIterator(dir)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a new directory iterator that will walk recursively through the files in the specified directory and its subdirectories.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:matchFilenamePattern\">matchFilenamePattern(filename,&nbsp;pattern)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Determines whether the filename matches the specified pattern.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getFileType\">getFileType(filename)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Gets the file type of a Macintosh file, which is a four-character string.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getFileCreator\">getFileCreator(filename)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Gets the creator code of a Macintosh file, which is a four-character string.</td></tr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:getDirectoryPathSeparator\"></a>\n<pre class=detailCode>\nstring getDirectoryPathSeparator(void);\n</pre>\n<div class=detailHTML>\nReturns the standard directory path separator used on this platform.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsep = getDirectoryPathSeparator();\n</pre>\n<hr>\n<a name=\"Function:getSearchPathSeparator\"></a>\n<pre class=detailCode>\nstring getSearchPathSeparator(void);\n</pre>\n<div class=detailHTML>\nReturns the standard search path separator used on this platform.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsep = getSearchPathSeparator();\n</pre>\n<hr>\n<a name=\"Function:getRoot\"></a>\n<pre class=detailCode>\nstring getRoot(string filename);\n</pre>\n<div class=detailHTML>\nReturns the root of a <code>filename.ext</code> pair, which\nconsists of everything in <code>filename</code> up to the last dot and\nthe subsequent extension.  If no dot appears, <code>getRoot</code>\nreturns the entire name.\n\n        the extension\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nroot = getRoot(filename);\n</pre>\n<hr>\n<a name=\"Function:getExtension\"></a>\n<pre class=detailCode>\nstring getExtension(string filename);\n</pre>\n<div class=detailHTML>\nReturns the extension component of <code>filename</code>, which\nconsists of the separating dot and all subsequent characters.\nIf no dot exists in the final component, <code>extension</code>\nreturns the empty string.  Note that this interpretation is\ndifferent than one used by the <code>:e</code> substitution in\nthe shell.  The semantics were chosen so that the expression\n\n<pre>\n   concat(getRoot(filename), getExtension(filename))\n</pre>\n\nis equal to the original <code>filename</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\next = getExtension(filename);\n</pre>\n<hr>\n<a name=\"Function:getHead\"></a>\n<pre class=detailCode>\nstring getHead(string pathname);\n</pre>\n<div class=detailHTML>\nReturns all but the last component of a path name, where the\ncomponents are names separated by any of the directory path\nseparators (forward or reverse slashes).  The special cases are\nillustrated by the following examples:\n\n<pre>\n   getHead(\"a/b\")  = \"a\"\n   getHead(\"a\")    = \"\"\n   getHead(\"/a\")   = \"/\"\n   getHead(\"/\")    = \"/\"\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nhead = getHead(pathname);\n</pre>\n<hr>\n<a name=\"Function:getTail\"></a>\n<pre class=detailCode>\nstring getTail(string pathname);\n</pre>\n<div class=detailHTML>\nReturns the last component of a path name, where the components\nare names separated by any of the directory path separators\n(forward or reverse slashes).  The special cases are illustrated\nby the following examples:\n\n<pre>\n   getTail(\"a/b\")   = \"b\"\n   getTail(\"a\")     = \"a\"\n   getTail(\"/a\")    = \"a\"\n   getTail(\"/\")     = \"\"\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ntail = getTail(pathname);\n</pre>\n<hr>\n<a name=\"Function:defaultExtension\"></a>\n<pre class=detailCode>\nstring defaultExtension(string filename, string ext);\n</pre>\n<div class=detailHTML>\nAdds an extension to a file name if none already exists.  If the\n<code>extension</code> argument begins with a leading <code>*</code>,\nany existing extension in <code>filename</code> is replaced by\n<code>ext</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nnewname = defaultExtension(filename, ext);\n</pre>\n<hr>\n<a name=\"Function:openOnPath\"></a>\n<pre class=detailCode>\nFILE *openOnPath(string path, string filename, string mode);\n</pre>\n<div class=detailHTML>\nOpens a files by searching directories in a search path for the\nfirst matching file.  The <code>openOnPath</code> routine has\nthe same structure as <code>fopen</code> in the standard library\nand the filename and mode arguments are the same as in that\ncall.  The path argument consists of a list of directories\nwhich are prepended to the filename, unless the filename begins\nwith an absolute directory marker, such as <code>/</code> or\n<code>~</code>.  The directories in the search path may be\nseparated either by colons (Unix style) or semicolons (Windows\nstyle).  The <code>openOnPath</code> function returns an open\nstream to the indicated file, or <code>NULL</code>, if no\nexisting file is found.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nFILE *file = openOnPath(path, filename, mode);\n</pre>\n<hr>\n<a name=\"Function:findOnPath\"></a>\n<pre class=detailCode>\nstring findOnPath(string path, string filename);\n</pre>\n<div class=detailHTML>\nReturns a canonical name of a file found using a search path.\nThe <code>findOnPath</code> function is similar to\n<code>openOnPath</code>, except that it returns the name of\nthe file instead of trying to open in.  If no matching file\nis found, findOnPath returns <code>NULL</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\npathname = findOnPath(path, filename);\n</pre>\n<hr>\n<a name=\"Function:deleteFile\"></a>\n<pre class=detailCode>\nvoid deleteFile(string filename);\n</pre>\n<div class=detailHTML>\nDeletes the specified file.  Errors are reported by calling\n<code>error</code> in the implementation.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndeleteFile(filename);\n</pre>\n<hr>\n<a name=\"Function:renameFile\"></a>\n<pre class=detailCode>\nvoid renameFile(string oldname, string newname);\n</pre>\n<div class=detailHTML>\nRenames a file.  Errors are reported by calling\n<code>error</code> in the implementation.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nrenameFile(oldname, newname);\n</pre>\n<hr>\n<a name=\"Function:fileExists\"></a>\n<pre class=detailCode>\nbool fileExists(string pathname);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the specified file exists.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (fileExists(pathname)) . . .\n</pre>\n<hr>\n<a name=\"Function:isFile\"></a>\n<pre class=detailCode>\nbool isFile(string pathname);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the specified file is a regular file.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (isFile(pathname)) . . .\n</pre>\n<hr>\n<a name=\"Function:isSymbolicLink\"></a>\n<pre class=detailCode>\nbool isSymbolicLink(string pathname);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the specified file is a symbolic link.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (isSymbolicLink(pathname)) . . .\n</pre>\n<hr>\n<a name=\"Function:isDirectory\"></a>\n<pre class=detailCode>\nbool isDirectory(string pathname);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the specified file is a directory.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (isDirectory(pathname)) . . .\n</pre>\n<hr>\n<a name=\"Function:createDirectory\"></a>\n<pre class=detailCode>\nvoid createDirectory(string pathname);\n</pre>\n<div class=detailHTML>\nCreates a new directory for the specified pathname.  The\n<code>createDirectory</code> function does not report an error if\nthe directory already exists.  Unlike <code>createDirectoryPath</code>,\n<code>createDirectory</code> does not create missing directories\nalong the path.  If some component of <code>pathname</code> does\nnot exist, this function signals an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncreateDirectory(pathname);\n</pre>\n<hr>\n<a name=\"Function:createDirectoryPath\"></a>\n<pre class=detailCode>\nvoid createDirectoryPath(string pathname);\n</pre>\n<div class=detailHTML>\nCreates a new directory for the specified pathname.   If intermediate\ncomponents of the pathname do not exist, this function creates them\nas needed.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncreateDirectoryPath(pathname);\n</pre>\n<hr>\n<a name=\"Function:setCurrentDirectory\"></a>\n<pre class=detailCode>\nvoid setCurrentDirectory(string path);\n</pre>\n<div class=detailHTML>\nChanges the current directory to the specified path.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetCurrentDirectory(pathname);\n</pre>\n<hr>\n<a name=\"Function:getCurrentDirectory\"></a>\n<pre class=detailCode>\nstring getCurrentDirectory(void);\n</pre>\n<div class=detailHTML>\nReturns an absolute pathname for the current directory.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\npathname = getCurrentDirectory();\n</pre>\n<hr>\n<a name=\"Function:expandPathname\"></a>\n<pre class=detailCode>\nstring expandPathname(string filename);\n</pre>\n<div class=detailHTML>\nExpands a pathname into a canonical name for the platform.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfullname = expandPathname(pathname);\n</pre>\n<hr>\n<a name=\"Function:listDirectory\"></a>\n<pre class=detailCode>\nstring *listDirectory(string dir);\n</pre>\n<div class=detailHTML>\nReturns an alphabetical list of all the files in the specified\ndirectory, excluding the unix <code>.</code> and <code>..</code>\nentries.  The array is terminated with a <code>NULL</code> entry.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring array[] = listDirectory(dir);\n</pre>\n<hr>\n<a name=\"Function:newDirectoryIterator\"></a>\n<pre class=detailCode>\nIterator newDirectoryIterator(string dir);\n</pre>\n<div class=detailHTML>\nCreates a new directory iterator that will step through the files\nin the specified directory.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nforeach (name in newDirectoryIterator(dir)) . . .\n</pre>\n<hr>\n<a name=\"Function:newDirectoryTreeIterator\"></a>\n<pre class=detailCode>\nIterator newDirectoryTreeIterator(string dir);\n</pre>\n<div class=detailHTML>\nCreates a new directory iterator that will walk recursively through the\nfiles in the specified directory and its subdirectories.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nforeach (name in newDirectoryTreeIterator(dir)) . . .\n</pre>\n<hr>\n<a name=\"Function:matchFilenamePattern\"></a>\n<pre class=detailCode>\nbool matchFilenamePattern(string filename, string pattern);\n</pre>\n<div class=detailHTML>\nDetermines whether the filename matches the specified pattern.  The\npattern string is interpreted in much the same way that a Unix shell\nexpands filenames and supports the following wildcard options:\n\n<p><table>\n<tr><td align=center><code>?</code></td>\n    <td>Matches any single character</td></tr>\n<tr><td align=center><code>*</code></td>\n    <td>Matches any sequence of characters</td></tr>\n<tr><td align=center><code>[...]</code></td>\n    <td>Matches any of the specified characters</td></tr>\n<tr><td align=center><code>[^...]</code></td>\n    <td>Matches any character <i>except</i> the specified ones</td></tr>\n</table><p>\n\nThe last two options allow a range of characters to be specified in the\nform <code>a-z</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (matchFilenamePattern(filename, pattern)) . . .\n</pre>\n<hr>\n<a name=\"Function:getFileType\"></a>\n<pre class=detailCode>\nstring getFileType(string filename);\n</pre>\n<div class=detailHTML>\nGets the file type of a Macintosh file, which is a four-character\nstring.  This function returns the string \"????\" on other platforms.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ntype = getFileType(filename);\n</pre>\n<hr>\n<a name=\"Function:getFileCreator\"></a>\n<pre class=detailCode>\nstring getFileCreator(string filename);\n</pre>\n<div class=detailHTML>\nGets the creator code of a Macintosh file, which is a four-character\nstring.  This function returns the string \"????\" on other platforms.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ntype = getFileCreator(filename);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/foreach-h.html",
    "content": "<html>\n<head>\n<title>../foreach.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: foreach.h\n * ---------------\n * This interface provides a simple syntactic extension for iterators that\n * makes them much easier to read.  The general form of the foreach\n * statement looks like this:\n *\n *    foreach (var in collection) {\n *       statements\n *    }\n *\n * In C, the variable var must be declared outside the loop.\n */\n</scan>\n#ifndef _foreach_h\n#define _foreach_h\n\n#include \"cslib.h\"\n\n<a name=\"Macro:foreach\"><scan class=comment>/*\n * Macro: foreach\n * Usage: foreach (element in collection) { . . . }\n * ------------------------------------------------\n * This macro definition creates a new statement form that simplifies the\n * use of iterators.  The variable element must be declared in the current\n * scope and must be compatible with the base type of the collection.\n */\n</scan>\n#define in : (void *) (\n#define foreach(arg) \\\n    for (initForEach(1 ? (void *) &amp;arg), 0 ? &amp;arg)); \\\n         stepForEach(1 ? (void *) &amp;arg)); )\n\nvoid initForEach(void *dst, void *collection);\nbool stepForEach(void *dst);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/foreach.html",
    "content": "<html>\n<head>\n<title>foreach.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><a href=\"foreach-h.html\"><code>foreach.h</code></a></h1>\nThis interface provides a simple syntactic extension for iterators\nthat makes them much easier to read.  The general form of the\n<code>foreach</code> statement looks like this:\n\n<pre>\n   foreach (<span class=it>var</span> in <span class=it>collection</span>) {\n      <span class=it>statements</span>\n   }\n</pre>\n\nIn C, the variable <i>var</i> must be declared outside the loop.\n<table class=index width=100%>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/gcalloc-h.html",
    "content": "<html>\n<head>\n<title>../gcalloc.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: gcalloc.h\n * ---------------\n * This file defines the interface for a garbage-collecting allocator. \n * This interface defines only an initialization function (initGCAllocator)\n * and facilities for protecting global variables.  The actual allocation\n * is handled by the standard getBlock and freeBlock functions defined in\n * cslib.h.  These functions use the garbage-collecting allocator if\n * initGCAllocator has been called.\n */\n</scan>\n#ifndef _gcalloc_h\n#define _gcalloc_h\n\n#include &lt;stdlib.h&gt;\n#include \"cslib.h\"\n\n<scan class=comment>/*\n * Background\n * ----------\n * In a typical application program, memory is allocated in three different\n * regions.  Static data is stored in fixed memory addresses and is\n * declared in C using the storage classes static or extern (extern is in\n * fact omitted in the defining instance).  Automatic data (the default\n * storage class for variables defined within a function) is stored on the\n * control stack, where it is allocated when a function is called and\n * deallocated on return from that function.  In addition to these two\n * classes, however, many programs will need to allocated additional memory\n * from an expandable pool called the \"heap.\"  All memory in the heap is\n * addressed via pointers, which are generated as the program runs.\n *\n * Although heap allocation is extremely convenient, particularly when used\n * in library implementations, it suffers from an important failing.  The\n * problem is not identifying what parts of the program have responsibility\n * for allocating memory.  That task is easy.  The thorny issue is who has\n * responsibility for freeing previously allocated memory when it is no\n * longer needed.\n *\n * The central problem is that the operations of allocating and freeing\n * memory are most naturally situated on opposite sides of the interface\n * boundary between an implementation and its client.  The implementation\n * knows when to allocate memory and simply returns pointers to the client.\n * The implementation, however, has no idea when the client is finished\n * with the allocated object, so that freeing the storage has to remain the\n * client's responsibility, even though the client may not understand\n * enough about the object's structure to do so.\n *\n * To get around this problem, most libraries have been designed in one of\n * two ways.  One approach is to make the client responsible for allocating\n * storage and passing a pointer to the implementation.  The alternative is\n * to provide procedures in each interface that free any storage allocated\n * by the abstraction.  Each of these approaches is decidedly non-optimal.\n *\n * A completely different alternative is to use a strategy called \"garbage\n * collection.\"  Under this strategy, implementations are free to allocate\n * memory and pass their addresses back to the client.  As long as the\n * client holds that pointer, the memory is considered to be in use.  When\n * the pointer goes away (which occurs when a different pointer is assigned\n * to the variable or when the variable holding the pointer is deallocated\n * by returning from the function declaring it), the storage to which it\n * referred is no longer accessible, and can be reallocated to new\n * purposes.\n *\n * Detecting what memory is garbage does not happen as the memory becomes\n * inaccessible.  Instead, the traditional garbage-collection strategy is\n * to wait until a memory cannot be satisfied, and then to go through\n * accessible memory to see what previously allocated blocks are no longer\n * reachable, freeing these for reuse.\n */\n</scan>\n<scan class=comment>/*\n * Client responsibilities\n * -----------------------\n * The garbage-collecting allocator imposes some important responsibilities\n * on the client who uses the package.  In particular, the client must\n * agree to obey the following rules:\n *\n *   (1)  Whenever a heap object is allocated, the client\n *        must agree to keep at least one copy of the\n *        original pointer returned by getBlock.  In C,\n *        it is common to use pointer arithmetic to adjust\n *        a pointer so that, for example, it points to the\n *        interior of an array.  The rule is that a block\n *        is protected from garbage collection only by\n *        a pointer to its beginning and not to its\n *        interior.  Note that this rule does not prohibit\n *        pointing to the interior of the block; the\n *        implication is simply that the client must\n *        also keep the original pointer around.\n *\n *   (2)  The garbage collector must be able to identify\n *        all places in which valid heap pointers might\n *        be maintained, so that it can ensure that\n *        valid data is not collected by accident.  This\n *        package (subject to the system assumptions\n *        below) is able to find pointers living in\n *        automatic variables on the stack, or in heap\n *        blocks allocated by getBlock which themselves\n *        remain accessible (see condition 3 as well).  If\n *        static variables contain allocated data, however,\n *        the client must warn the allocator of this\n *        fact by calling\n *\n *                protectVariable(variable);\n *\n *        where variable is the name of the global\n *        variable.\n *\n *   (3)  It is the client's responsibility to free\n *        explicitly any storage allocated outside of the\n *        getBlock/freeBlock mechanism.  Moreover, it is\n *        also important to remember that the garbage\n *        collector is not able to find pointers which are\n *        stored in dynamically allocated blocks unless\n *        those blocks were allocated by getBlock.  Thus,\n *        if an implementation makes direct calls to the\n *        system allocation functions in addition to\n *        getBlock, that implementation may not store the\n *        getBlock pointers in the system-allocated memory.\n */\n</scan>\n<a name=\"Function:initGCAllocator\"><scan class=comment>/*\n * Function: initGCAllocator\n * Usage: initGCAllocator(&amp;argc);\n * ------------------------------\n * Enables the garbage-collecting allocator.  This call should be made from\n * the main, and the address passed to set the stack limit should be the\n * address of the argc parameter.\n */\n</scan>\nvoid initGCAllocator(void *stackbase);\n\n<a name=\"Macro:protectVariable\"><scan class=comment>/*\n * Macro: protectVariable\n * Usage: protectVariable(v);\n * --------------------------\n * Registers a global variable with the allocation system, so that the\n * variable is traced when the garbage collector is used.  This operation\n * needs to be provided in \"cslib.h\" so that code can be written to\n * function correctly whether or not the garbage-collecting allocator is\n * loaded.\n */\n</scan>\n#define protectVariable(v) protectBlock(&amp;v, sizeof v)\n\n<a name=\"Function:protectBlock\"><scan class=comment>/*\n * Function: protectBlock\n * Usage: protectBlock(ptr, nbytes);\n * ---------------------------------\n * Mark a memory block as protected from the garbage collector.  This\n * function is not usually called by clients (who will ordinarily use\n * protectVariable instead), but has the effect of protecting the block of\n * memory beginning at ptr and extending for nbytes from the garbage\n * collector.\n */\n</scan>\nvoid protectBlock(void *ptr, size_t nbytes);\n\n<a name=\"Global variable:_acb\"><scan class=comment>/*\n * Global variable: _acb\n * ---------------------\n * This variable is used to hold the allocation control block that provides\n * the linkage between this package and the dynamic allocator.  The reason\n * for using the structure as a linkage is so that the garbage-collecting\n * allocator need not even be loaded if it is not explicitly called.\n */\n</scan>\ntypedef struct {\n    void *(*allocMethod)(size_t nbytes);\n    void (*freeMethod)(void *ptr);\n    void (*protectMethod)(void *ptr, size_t nbytes);\n} *_GCControlBlock;\n\nextern _GCControlBlock _acb;\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/gcalloc.html",
    "content": "<html>\n<head>\n<title>gcalloc.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1><a href=\"gcalloc-h.html\"><code>gcalloc.h</code></a></h1>\nThis file defines the interface for a garbage-collecting allocator.\nThis interface defines only an initialization function\n(<code>initGCAllocator</code>) and facilities for protecting\nglobal variables.  The actual allocation is handled by the standard\n<code>getBlock</code> and <code>freeBlock</code> functions defined in\n<code>cslib.h</code>.  These functions use the garbage-collecting\nallocator if <code>initGCAllocator</code> has been called.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><a href=\"#Function:initGCAllocator\">initGCAllocator(&argc)</a>&nbsp;</td><td class=indexSynopsis width=100%>Enables the garbage-collecting allocator.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:protectBlock\">protectBlock(ptr,&nbsp;nbytes)</a>&nbsp;</td><td class=indexSynopsis width=100%>Mark a memory block as protected from the garbage collector.</td></tr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:initGCAllocator\"></a>\n<pre class=detailCode>\nvoid initGCAllocator(void *stackbase);\n</pre>\n<div class=detailHTML>\nEnables the garbage-collecting allocator.  This call should be\nmade from the <code>main</code>, and the address passed to set\nthe stack limit should be the address of the argc parameter.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ninitGCAllocator(&amp;argc);\n</pre>\n<hr>\n<a name=\"Function:protectBlock\"></a>\n<pre class=detailCode>\nvoid protectBlock(void *ptr, size_t nbytes);\n</pre>\n<div class=detailHTML>\nMark a memory block as protected from the garbage collector.\nThis function is not usually called by clients (who will\nordinarily use <code>protectVariable</code> instead), but has the\neffect of protecting the block of memory beginning at\nptr and extending for nbytes from the garbage collector.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nprotectBlock(ptr, nbytes);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/gcdebug-h.html",
    "content": "<html>\n<head>\n<title>../gcdebug.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: gcdebug.h\n * ---------------\n * This file specifies various debugging functions for the\n * garbage-collecting allocator.\n */\n</scan>\n#ifndef _gcdebug_h\n#define _gcdebug_h\n\n#include \"cslib.h\"\n\n<a name=\"Type:gcStateT\"><scan class=comment>/*\n * Type: gcStateT\n * --------------\n * This enumeration type holds the possible states of blocks being managed\n * by the garbage collector:\n *\n *   GCInUseBlock is in use  GCOnFreeListBlock is on  use  GCIUnknown\n *     Block is unknown to the allocator\n */\n</scan>typedef enum { GCInUse, GCOnFreeList, GCUnknown } gcStateT;\n\n<a name=\"Function:gcTrace\"><scan class=comment>/*\n * Function: gcTrace\n * Usage: gcTrace(flag);\n * ---------------------\n * Enables a trace of garbage collection events, which is printed to\n * stderr.\n */\n</scan>\nvoid gcTrace(bool flag);\n\n<a name=\"Function:gcCheckBlock\"><scan class=comment>/*\n * Function: gcCheckBlock\n * Usage: state = gcCheckBlock(ptr);\n * ---------------------------------\n * Returns the state of the block at the specified address.\n */\n</scan>\ngcStateT gcCheckBlock(void *ptr);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/gcdebug.html",
    "content": "<html>\n<head>\n<title>gcdebug.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1><a href=\"gcdebug-h.html\"><code>gcdebug.h</code></a></h1>\nThis file specifies various debugging functions for the\ngarbage-collecting allocator.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Type</td></tr>\n<tr><td class=indexKey><a href=\"#Type:gcStateT\">gcStateT</a>&nbsp;</td><td class=indexSynopsis width=100%>This enumeration type holds the possible states of blocks being managed by the garbage collector:  <p><table> <tr><td><code>&nbsp;GCInUse</code></td><td>Block is in use</td></tr> <tr><td><code>&nbsp;GCOnFreeList</code></td><td>Block is on  use</td></tr> <tr><td><code>&nbsp;GCIUnknown</code></td>     <td>Block is unknown to the allocator</td></tr> </table> </td></tr>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><a href=\"#Function:gcTrace\">gcTrace(flag)</a>&nbsp;</td><td class=indexSynopsis width=100%>Enables a trace of garbage collection events, which is printed to stderr.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:gcCheckBlock\">gcCheckBlock(ptr)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the state of the block at the specified address.</td></tr>\n</table>\n<h2>Type detail</h2>\n<hr>\n<a name=\"Type:gcStateT\"></a>\n<pre class=detailCode>\ntypedef enum { GCInUse, GCOnFreeList, GCUnknown } gcStateT;\n</pre>\n<div class=detailHTML>\nThis enumeration type holds the possible states of blocks being\nmanaged by the garbage collector:\n\n<p><table>\n<tr><td><code>&nbsp;GCInUse</code></td><td>Block is in use</td></tr>\n<tr><td><code>&nbsp;GCOnFreeList</code></td><td>Block is on  use</td></tr>\n<tr><td><code>&nbsp;GCIUnknown</code></td>\n    <td>Block is unknown to the allocator</td></tr>\n</table>\n</div>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:gcTrace\"></a>\n<pre class=detailCode>\nvoid gcTrace(bool flag);\n</pre>\n<div class=detailHTML>\nEnables a trace of garbage collection events, which is\nprinted to stderr.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngcTrace(flag);\n</pre>\n<hr>\n<a name=\"Function:gcCheckBlock\"></a>\n<pre class=detailCode>\ngcStateT gcCheckBlock(void *ptr);\n</pre>\n<div class=detailHTML>\nReturns the state of the block at the specified address.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstate = gcCheckBlock(ptr);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/generic-h.html",
    "content": "<html>\n<head>\n<title>../generic.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: generic.h\n * ---------------\n * This interface defines those functions that apply to more than one type.\n */\n</scan>\n#ifndef _generic_h\n#define _generic_h\n\n#include \"cmpfn.h\"\n#include \"cslib.h\"\n\n<scan class=comment>/* Avoid various name conflicts */</scan>\n\n#define remove xremove\n\n#ifdef __macosx__\n#  define dequeue _dequeue\n#  define enqueue _enqueue\n#endif\n\n#define union(s1, s2) xunion(s1, s2)\n#define getX(arg) getXGeneric(sizeof arg, arg)\n#define getY(arg) getYGeneric(sizeof arg, arg)\n#define getWidth(arg) getWidthGeneric(sizeof arg, arg)\n#define getHeight(arg) getHeightGeneric(sizeof arg, arg)\n#define isEmpty(arg) isEmptyGeneric(sizeof arg, arg)\n#define contains(arg, value) containsGeneric(sizeof arg, arg, value)\n\n<a name=\"Type:GenericType\"><scan class=comment>/*\n * Type: GenericType\n * -----------------\n * Union capable of holding any of the primitive types.\n */\n</scan>\ntypedef union {\n    int intRep;\n    short shortRep;\n    long longRep;\n    float floatRep;\n    double doubleRep;\n    char charRep;\n    bool boolRep;\n    unsigned unsignedRep;\n    unsigned short unsignedShortRep;\n    unsigned long unsignedLongRep;\n    unsigned char unsignedCharRep;\n    void *pointerRep;\n} GenericType;\n\n<a name=\"Friend type:FetchFn\"><scan class=comment>/*\n * Friend type: FetchFn\n * --------------------\n * This function type fetches an argument from an argument list into the\n * address indicated by dst.\n */\n</scan>\ntypedef void (*FetchFn)(va_list args, GenericType *dst);\n\n<a name=\"Friend type:StoreFn\"><scan class=comment>/*\n * Friend type: StoreFn\n * --------------------\n * This function type stores a value from the generic object into the\n * address indicated by dst.\n */\n</scan>\ntypedef void (*StoreFn)(GenericType src, void *dst);\n\n<a name=\"Friend type:ToStringFn\"><scan class=comment>/*\n * Friend type: ToStringFn\n * -----------------------\n * This function type converts a generic argument to a string.\n */\n</scan>\ntypedef string (*ToStringFn)(GenericType dst);\n\n<a name=\"Function:size\"><scan class=comment>/*\n * Function: size\n * Usage: n = size(arg);\n * ---------------------\n * Returns the number of elements in the collection.\n */\n</scan>\nint size(void *arg);\n\n<a name=\"Function:isEmpty\"><scan class=comment>/*\n * Function: isEmpty\n * Usage: if (isEmpty(arg)) . . .\n * ------------------------------\n * Returns true if the collection is empty.\n */\n</scan>\nbool isEmptyGeneric(int size, ...);\n\n<a name=\"Function:clear\"><scan class=comment>/*\n * Function: clear\n * Usage: clear(arg);\n * ------------------\n * Removes all elements from the collection.\n */\n</scan>\nvoid clear(void *arg);\n\n<a name=\"Function:clone\"><scan class=comment>/*\n * Function: clone\n * Usage: clone(arg);\n * ------------------\n * Creates a copy of the collection.\n */\n</scan>\nvoid *clone(void *arg);\n\n<a name=\"Function:get\"><scan class=comment>/*\n * Function: get\n * Usage: value = get(arg, ...);\n * -----------------------------\n * Gets a value from the collection.  The format of the argument list\n * depends on the collection type.  See the documentation of the individual\n * type for details.\n */\n</scan>\nvoid *get(void *arg, ...);\n\n<a name=\"Function:set\"><scan class=comment>/*\n * Function: set\n * Usage: set(arg, ...);\n * ---------------------\n * Sets a specific element in the collection.  The format of the argument\n * list depends on the collection type.  See the documentation of the\n * individual type for details.\n */\n</scan>\nvoid set(void *arg, ...);\n\n<a name=\"Function:put\"><scan class=comment>/*\n * Function: put\n * Usage: put(arg, ...);\n * ---------------------\n * Puts a value into the collection.  By convention, this verb is used in\n * preference to set or add for maps.  The format of the argument list\n * depends on the collection type.  See the documentation of the individual\n * type for details.\n */\n</scan>\nvoid put(void *arg, ...);\n\n<a name=\"Function:containsKey\"><scan class=comment>/*\n * Function: containsKey\n * Usage: if (containsKey(arg, key)) . . .\n * ---------------------------------------\n * Checks whether the specified key is in the map.\n */\n</scan>\nbool containsKey(void *arg, void *key);\n\n<a name=\"Function:contains\"><scan class=comment>/*\n * Function: contains\n * Usage: if (contains(arg, ...)) . . .\n * ------------------------------------\n * Checks whether a set contains the value specified by the argument list,\n * which may vary according to the base type.\n */\n</scan>\nbool containsGeneric(int size, ...);\n\n<a name=\"Function:add\"><scan class=comment>/*\n * Function: add\n * Usage: add(arg, ...);\n * ---------------------\n * Adds a value to the collection.  The format of the argument list depends\n * on the collection type.  See the documentation of the individual type\n * for details.\n */\n</scan>\nvoid add(void *arg, ...);\n\n<a name=\"Function:remove\"><scan class=comment>/*\n * Function: remove\n * Usage: remove(arg, ...);\n * ------------------------\n * Removes a value from the collection.  The format of the argument list\n * depends on the collection type.  See the documentation of the individual\n * type for details.\n */\n</scan>\nvoid remove(void *arg, ...);\n\n<a name=\"Function:enqueue\"><scan class=comment>/*\n * Function: enqueue\n * Usage: enqueue(arg, ...);\n * -------------------------\n * Adds a new value to the queue.  The format of the argument list differs\n * slightly for the Queue and PriorityQueue types.  See the documentation\n * of the individual type for details.\n */\n</scan>\nvoid enqueue(void *arg, ...);\n\n<a name=\"Function:dequeue\"><scan class=comment>/*\n * Function: dequeue\n * Usage: value = dequeue(arg);\n * ----------------------------\n * Removes and returns the first item in the queue.\n */\n</scan>\nvoid *dequeue(void *arg);\n\n<a name=\"Function:peek\"><scan class=comment>/*\n * Function: peek\n * Usage: peek(arg);\n * -----------------\n * Returns the first item in the collection without removing it.\n */\n</scan>\nvoid *peek(void *arg);\n\n<a name=\"Function:equals\"><scan class=comment>/*\n * Function: equals\n * Usage: if (equals(s1, s2)) . . .\n * --------------------------------\n * Returns true if the sets are equal.\n */\n</scan>\nbool equals(void *s1, void *s2);\n\n<a name=\"Function:isSubset\"><scan class=comment>/*\n * Function: isSubset\n * Usage: if (isSubset(s1, s2)) . . .\n * ----------------------------------\n * Returns true if s1 is a subset of s2.\n */\n</scan>\nbool isSubset(void *s1, void *s2);\n\n<a name=\"Function:union\"><scan class=comment>/*\n * Function: union\n * Usage: set = union(s1, s2);\n * ---------------------------\n * Returns the union of s1 and s2.\n */\n</scan>\nvoid *union(void *s1, void *s2);\n\n<a name=\"Function:intersection\"><scan class=comment>/*\n * Function: intersection\n * Usage: set = intersection(s1, s2);\n * ----------------------------------\n * Returns the intersection of the s1 and s2.\n */\n</scan>\nvoid *intersection(void *s1, void *s2);\n\n<a name=\"Function:setDifference\"><scan class=comment>/*\n * Function: setDifference\n * Usage: set = setDifference(s1, s2);\n * -----------------------------------\n * Returns the set difference of s1 and s2.\n */\n</scan>\nvoid *setDifference(void *s1, void *s2);\n\n<a name=\"Function:getX\"><scan class=comment>/*\n * Function: getX\n * Usage: x = getX(any);\n * ---------------------\n * Returns the x component of the value.\n */\n</scan>\ndouble getXGeneric(int size, ...);\n\n<a name=\"Function:getY\"><scan class=comment>/*\n * Function: getY\n * Usage: y = getY(any);\n * ---------------------\n * Returns the y component of the value.\n */\n</scan>\ndouble getYGeneric(int size, ...);\n\n<a name=\"Function:getWidth\"><scan class=comment>/*\n * Function: getWidth\n * Usage: width = getWidth(any);\n * -----------------------------\n * Returns the width component of the value.\n */\n</scan>\ndouble getWidthGeneric(int size, ...);\n\n<a name=\"Function:getHeight\"><scan class=comment>/*\n * Function: getHeight\n * Usage: height = getHeight(any);\n * -------------------------------\n * Returns the height component of the value.\n */\n</scan>\ndouble getHeightGeneric(int size, ...);\n\n<a name=\"Function:setVisible\"><scan class=comment>/*\n * Function: setVisible\n * Usage: setVisible(arg, flag);\n * -----------------------------\n * Sets whether the argument is visible.\n */\n</scan>\nvoid setVisible(void *arg, bool flag);\n\n<a name=\"Function:isVisible\"><scan class=comment>/*\n * Function: isVisible\n * Usage: if (isVisible(arg)) . . .\n * --------------------------------\n * Returns true if the argument is visible.\n */\n</scan>\nbool isVisible(void *arg);\n\n<a name=\"Function:setColor\"><scan class=comment>/*\n * Function: setColor\n * Usage: setColor(arg, color);\n * ----------------------------\n * Sets the color of the argument.\n */\n</scan>\nvoid setColor(void *arg, string color);\n\n<a name=\"Friend function:getTypeSizeForType\"><scan class=comment>/*\n * Friend function: getTypeSizeForType\n * Usage: size = getTypeSizeForType(type);\n * ---------------------------------------\n * Returns the size in bytes for the specified type.\n */\n</scan>\nint getTypeSizeForType(string type);\n\n<a name=\"Friend function:getCompareFnForType\"><scan class=comment>/*\n * Friend function: getCompareFnForType\n * Usage: fn = getCompareFnForType(type);\n * --------------------------------------\n * Returns the comparison function appropriate to the type.\n */\n</scan>\nCompareFn getCompareFnForType(string type);\n\n<a name=\"Friend function:getFetchFnForType\"><scan class=comment>/*\n * Friend function: getFetchFnForType\n * Usage: fn = getFetchFnForType(type);\n * ------------------------------------\n * Returns a function that can fetch an argument of the specified type from\n * a va_list parameter.  The pattern for calling that function is\n *\n *    fn(args, \n *\n * where arg is a GenericType variable.\n */\n</scan>\nFetchFn getFetchFnForType(string type);\n\n<a name=\"Friend function:getStoreFnForType\"><scan class=comment>/*\n * Friend function: getStoreFnForType\n * Usage: fn = getStoreFnForType(type);\n * ------------------------------------\n * Returns a function that can store a generic argument through a\n * destination pointer.  The pattern for calling that function is\n *\n *    fn(src, dst);\n *\n * where src is a GenericType variable and dst is a pointer to the\n * destination.\n */\n</scan>\nStoreFn getStoreFnForType(string type);\n\n<a name=\"Friend function:getToStringFn\"><scan class=comment>/*\n * Friend function: getToStringFn\n * Usage: fn = getToStringFn(type);\n * --------------------------------\n * Returns a function that can convert a generic value of the specified\n * type to a string.  This function is used primarily for debugging.\n */\n</scan>\nToStringFn getToStringFn(string type);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/generic.html",
    "content": "<html>\n<head>\n<title>generic.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><a href=\"generic-h.html\"><code>generic.h</code></a></h1>\nThis interface defines those functions that apply to more than one type.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Type</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:GenericType\">GenericType</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Union capable of holding any of the primitive types.</td></tr>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:add\">add(arg,&nbsp;...)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Adds a value to the collection.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:clear\">clear(arg)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Removes all elements from the collection.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:clone\">clone(arg)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a copy of the collection.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:contains\">contains(arg,&nbsp;...)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Checks whether a set contains the value specified by the argument list, which may vary according to the base type.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:containsKey\">containsKey(arg,&nbsp;key)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Checks whether the specified key is in the map.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:dequeue\">dequeue(arg)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Removes and returns the first item in the queue.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:enqueue\">enqueue(arg,&nbsp;...)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Adds a new value to the queue.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:equals\">equals(s1,&nbsp;s2)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the sets are equal.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:get\">get(arg,&nbsp;...)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Gets a value from the collection.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getHeight\">getHeight(any)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the height component of the value.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getWidth\">getWidth(any)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the width component of the value.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getX\">getX(any)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the x component of the value.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getY\">getY(any)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the y component of the value.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:intersection\">intersection(s1,&nbsp;s2)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the intersection of the <code>s1</code> and <code>s2</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:isEmpty\">isEmpty(arg)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the collection is empty.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:isSubset\">isSubset(s1,&nbsp;s2)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if <code>s1</code> is a subset of <code>s2</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:isVisible\">isVisible(arg)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the argument is visible.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:peek\">peek(arg)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the first item in the collection without removing it.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:put\">put(arg,&nbsp;...)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Puts a value into the collection.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:remove\">remove(arg,&nbsp;...)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Removes a value from the collection.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:set\">set(arg,&nbsp;...)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets a specific element in the collection.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setColor\">setColor(arg,&nbsp;color)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the color of the argument.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setDifference\">setDifference(s1,&nbsp;s2)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the set difference of <code>s1</code> and <code>s2</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setVisible\">setVisible(arg,&nbsp;flag)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets whether the argument is visible.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:size\">size(arg)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the number of elements in the collection.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:union\">union(s1,&nbsp;s2)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the union of <code>s1</code> and <code>s2</code>.</td></tr>\n</table>\n<h2>Type detail</h2>\n<hr>\n<a name=\"Type:GenericType\"></a>\n<pre class=detailCode>\ntypedef union {\n    int intRep;\n    short shortRep;\n    long longRep;\n    float floatRep;\n    double doubleRep;\n    char charRep;\n    bool boolRep;\n    unsigned unsignedRep;\n    unsigned short unsignedShortRep;\n    unsigned long unsignedLongRep;\n    unsigned char unsignedCharRep;\n    void *pointerRep;\n} GenericType;\n</pre>\n<div class=detailHTML>\nUnion capable of holding any of the primitive types.\n</div>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:size\"></a>\n<pre class=detailCode>\nint size(void *arg);\n</pre>\n<div class=detailHTML>\nReturns the number of elements in the collection.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nn = size(arg);\n</pre>\n<hr>\n<a name=\"Function:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty(int size, ...);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the collection is empty.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (isEmpty(arg)) . . .\n</pre>\n<hr>\n<a name=\"Function:clear\"></a>\n<pre class=detailCode>\nvoid clear(void *arg);\n</pre>\n<div class=detailHTML>\nRemoves all elements from the collection.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nclear(arg);\n</pre>\n<hr>\n<a name=\"Function:clone\"></a>\n<pre class=detailCode>\nvoid *clone(void *arg);\n</pre>\n<div class=detailHTML>\nCreates a copy of the collection.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nclone(arg);\n</pre>\n<hr>\n<a name=\"Function:get\"></a>\n<pre class=detailCode>\nvoid *get(void *arg, ...);\n</pre>\n<div class=detailHTML>\nGets a value from the collection.  The format of the argument list\ndepends on the collection type.  See the documentation of the\nindividual type for details.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvalue = get(arg, ...);\n</pre>\n<hr>\n<a name=\"Function:set\"></a>\n<pre class=detailCode>\nvoid set(void *arg, ...);\n</pre>\n<div class=detailHTML>\nSets a specific element in the collection.  The format of the argument\nlist depends on the collection type.  See the documentation of the\nindividual type for details.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset(arg, ...);\n</pre>\n<hr>\n<a name=\"Function:put\"></a>\n<pre class=detailCode>\nvoid put(void *arg, ...);\n</pre>\n<div class=detailHTML>\nPuts a value into the collection.  By convention, this verb is used\nin preference to <code>set</code> or <code>add</code> for maps.  The\nformat of the argument list depends on the collection type.  See the\ndocumentation of the individual type for details.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nput(arg, ...);\n</pre>\n<hr>\n<a name=\"Function:containsKey\"></a>\n<pre class=detailCode>\nbool containsKey(void *arg, void *key);\n</pre>\n<div class=detailHTML>\nChecks whether the specified key is in the map.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (containsKey(arg, key)) . . .\n</pre>\n<hr>\n<a name=\"Function:contains\"></a>\n<pre class=detailCode>\nbool contains(int size, ...);\n</pre>\n<div class=detailHTML>\nChecks whether a set contains the value specified by the argument list,\nwhich may vary according to the base type.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (contains(arg, ...)) . . .\n</pre>\n<hr>\n<a name=\"Function:add\"></a>\n<pre class=detailCode>\nvoid add(void *arg, ...);\n</pre>\n<div class=detailHTML>\nAdds a value to the collection.  The format of the argument list depends\non the collection type.  See the documentation of the individual type\nfor details.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nadd(arg, ...);\n</pre>\n<hr>\n<a name=\"Function:remove\"></a>\n<pre class=detailCode>\nvoid remove(void *arg, ...);\n</pre>\n<div class=detailHTML>\nRemoves a value from the collection.  The format of the argument list\ndepends on the collection type.  See the documentation of the individual\ntype for details.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nremove(arg, ...);\n</pre>\n<hr>\n<a name=\"Function:enqueue\"></a>\n<pre class=detailCode>\nvoid enqueue(void *arg, ...);\n</pre>\n<div class=detailHTML>\nAdds a new value to the queue.  The format of the argument list differs\nslightly for the <code>Queue</code> and <code>PriorityQueue</code> types.\nSee the documentation of the individual type for details.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nenqueue(arg, ...);\n</pre>\n<hr>\n<a name=\"Function:dequeue\"></a>\n<pre class=detailCode>\nvoid *dequeue(void *arg);\n</pre>\n<div class=detailHTML>\nRemoves and returns the first item in the queue.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvalue = dequeue(arg);\n</pre>\n<hr>\n<a name=\"Function:peek\"></a>\n<pre class=detailCode>\nvoid *peek(void *arg);\n</pre>\n<div class=detailHTML>\nReturns the first item in the collection without removing it.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\npeek(arg);\n</pre>\n<hr>\n<a name=\"Function:equals\"></a>\n<pre class=detailCode>\nbool equals(void *s1, void *s2);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the sets are equal.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (equals(s1, s2)) . . .\n</pre>\n<hr>\n<a name=\"Function:isSubset\"></a>\n<pre class=detailCode>\nbool isSubset(void *s1, void *s2);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if <code>s1</code> is a subset of\n<code>s2</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (isSubset(s1, s2)) . . .\n</pre>\n<hr>\n<a name=\"Function:union\"></a>\n<pre class=detailCode>\nvoid *union(void *s1, void *s2);\n</pre>\n<div class=detailHTML>\nReturns the union of <code>s1</code> and <code>s2</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset = union(s1, s2);\n</pre>\n<hr>\n<a name=\"Function:intersection\"></a>\n<pre class=detailCode>\nvoid *intersection(void *s1, void *s2);\n</pre>\n<div class=detailHTML>\nReturns the intersection of the <code>s1</code> and <code>s2</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset = intersection(s1, s2);\n</pre>\n<hr>\n<a name=\"Function:setDifference\"></a>\n<pre class=detailCode>\nvoid *setDifference(void *s1, void *s2);\n</pre>\n<div class=detailHTML>\nReturns the set difference of <code>s1</code> and <code>s2</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset = setDifference(s1, s2);\n</pre>\n<hr>\n<a name=\"Function:getX\"></a>\n<pre class=detailCode>\ndouble getX(int size, ...);\n</pre>\n<div class=detailHTML>\nReturns the x component of the value.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nx = getX(any);\n</pre>\n<hr>\n<a name=\"Function:getY\"></a>\n<pre class=detailCode>\ndouble getY(int size, ...);\n</pre>\n<div class=detailHTML>\nReturns the y component of the value.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ny = getY(any);\n</pre>\n<hr>\n<a name=\"Function:getWidth\"></a>\n<pre class=detailCode>\ndouble getWidth(int size, ...);\n</pre>\n<div class=detailHTML>\nReturns the width component of the value.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nwidth = getWidth(any);\n</pre>\n<hr>\n<a name=\"Function:getHeight\"></a>\n<pre class=detailCode>\ndouble getHeight(int size, ...);\n</pre>\n<div class=detailHTML>\nReturns the height component of the value.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nheight = getHeight(any);\n</pre>\n<hr>\n<a name=\"Function:setVisible\"></a>\n<pre class=detailCode>\nvoid setVisible(void *arg, bool flag);\n</pre>\n<div class=detailHTML>\nSets whether the argument is visible.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetVisible(arg, flag);\n</pre>\n<hr>\n<a name=\"Function:isVisible\"></a>\n<pre class=detailCode>\nbool isVisible(void *arg);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the argument is visible.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (isVisible(arg)) . . .\n</pre>\n<hr>\n<a name=\"Function:setColor\"></a>\n<pre class=detailCode>\nvoid setColor(void *arg, string color);\n</pre>\n<div class=detailHTML>\nSets the color of the argument.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetColor(arg, color);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/gevents-h.html",
    "content": "<html>\n<head>\n<title>../gevents.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: gevents.h\n * ---------------\n * This interface defines the event structure used in the graphics\n * libraries.  The structure of this package is adapted from the Java event\n * model and is compatible with the C++ StanfordCPPLib package.\n */\n</scan>\n#ifndef _gevents_h\n#define _gevents_h\n\n#include \"cslib.h\"\n#include \"generic.h\"\n#include \"gtimer.h\"\n#include \"gwindow.h\"\n\n<a name=\"Type:EventClassType\"><scan class=comment>/*\n * Type: EventClassType\n * --------------------\n * This enumeration type defines the event classes.  The element values are\n * each a single bit and can be added or ORed together to generate an event\n * mask.  The CLICK_EVENT class responds only to the MOUSE_CLICKED event\n * type.  The ANY_EVENT class selects any event.\n */\n</scan>\ntypedef enum {\n   ACTION_EVENT = 0x010,\n   KEY_EVENT    = 0x020,\n   TIMER_EVENT  = 0x040,\n   WINDOW_EVENT = 0x080,\n   MOUSE_EVENT  = 0x100,\n   CLICK_EVENT  = 0x200,\n   ANY_EVENT    = 0x3F0\n} EventClassType;\n\n<a name=\"Type:EventType\"><scan class=comment>/*\n * Type: EventType\n * ---------------\n * This enumeration type defines the event types for all events.\n */\n</scan>\ntypedef enum {\n   WINDOW_CLOSED    = WINDOW_EVENT + 1,\n   WINDOW_RESIZED   = WINDOW_EVENT + 2,\n   ACTION_PERFORMED = ACTION_EVENT + 1,\n   MOUSE_CLICKED    = MOUSE_EVENT + 1,\n   MOUSE_PRESSED    = MOUSE_EVENT + 2,\n   MOUSE_RELEASED   = MOUSE_EVENT + 3,\n   MOUSE_MOVED      = MOUSE_EVENT + 4,\n   MOUSE_DRAGGED    = MOUSE_EVENT + 5,\n   KEY_PRESSED      = KEY_EVENT + 1,\n   KEY_RELEASED     = KEY_EVENT + 2,\n   KEY_TYPED        = KEY_EVENT + 3,\n   TIMER_TICKED     = TIMER_EVENT + 1\n} EventType;\n\n<a name=\"Type:ModifierCodes\"><scan class=comment>/*\n * Type: ModifierCodes\n * -------------------\n * This enumeration type defines a set of constants used to check whether\n * modifiers are in effect.\n */\n</scan>\ntypedef enum {\n   SHIFT_DOWN     = 1 &lt;&lt; 0,\n   CTRL_DOWN      = 1 &lt;&lt; 1,\n   META_DOWN      = 1 &lt;&lt; 2,\n   ALT_DOWN       = 1 &lt;&lt; 3,\n   ALT_GRAPH_DOWN = 1 &lt;&lt; 4,\n   BUTTON1_DOWN   = 1 &lt;&lt; 5,\n   BUTTON2_DOWN   = 1 &lt;&lt; 6,\n   BUTTON3_DOWN   = 1 &lt;&lt; 7\n} ModifierCodes;\n\n<a name=\"Type:KeyCodes\"><scan class=comment>/*\n * Type: KeyCodes\n * --------------\n * This type defines the names of the key codes returned in a key event.\n */\n</scan>\ntypedef enum {\n   BACKSPACE_KEY = 8,\n   TAB_KEY = 9,\n   ENTER_KEY = 10,\n   CLEAR_KEY = 12,\n   ESCAPE_KEY = 27,\n   PAGE_UP_KEY = 33,\n   PAGE_DOWN_KEY = 34,\n   END_KEY = 35,\n   HOME_KEY = 36,\n   LEFT_ARROW_KEY = 37,\n   UP_ARROW_KEY = 38,\n   RIGHT_ARROW_KEY = 39,\n   DOWN_ARROW_KEY = 40,\n   F1_KEY = 112,\n   F2_KEY = 113,\n   F3_KEY = 114,\n   F4_KEY = 115,\n   F5_KEY = 116,\n   F6_KEY = 117,\n   F7_KEY = 118,\n   F8_KEY = 119,\n   F9_KEY = 120,\n   F10_KEY = 121,\n   F11_KEY = 122,\n   F12_KEY = 123,\n   DELETE_KEY = 127,\n   HELP_KEY = 156\n} KeyCodes;\n\n<a name=\"Type:GEvent\"><scan class=comment>/*\n * Type: GEvent\n * ------------\n * This abstract type is used to represent an event of any type.  This file\n * defines names for the subtypes, even though these types are identical in\n * C.  The functions that apply only to a specific event subtype generate\n * runtime errors if called on an event of the wrong type.\n *\n * The standard paradigm for using GEvent is illustrated by the following\n * program, which allows the user to draw lines on the graphics window:\n *\n *    main() {\n *       GWindow gw = newGWindow(600, 400);\n *       while (true) {\n *          GMouseEvent e = waitForEvent(MOUSE_EVENT);\n *          if (getEventType(e) == MOUSE_PRESSED) {\n *             GLine line = newGLine(getX(e), getY(e), getX(e), getY(e));\n *             add(gw, line);\n *          } else if (getEventType(e) == MOUSE_DRAGGED) {\n *             setEndPoint(line, getX(e), getY(e));\n *          }\n *       }\n *    }\n */\n</scan>\ntypedef struct GEventCDT *GEvent;\n\n<a name=\"Function:freeEvent\"><scan class=comment>/*\n * Function: freeEvent\n * Usage: freeEvent(e);\n * --------------------\n * Releases the storage associated with the event.\n */\n</scan>\nvoid freeEvent(GEvent e);\n\n<a name=\"Function:getEventClass\"><scan class=comment>/*\n * Function: getEventClass\n * Usage: eventClass = getEventClass(e);\n * -------------------------------------\n * Returns the enumerated type constant indicating the class of the event.\n */\n</scan>\nEventClassType getEventClass(GEvent e);\n\n<a name=\"Function:getEventType\"><scan class=comment>/*\n * Function: getEventType\n * Usage: eventType = getEventType(e);\n * -----------------------------------\n * Returns the enumerated constant indicating the specific class of the\n * event.\n */\n</scan>\nEventType getEventType(GEvent e);\n\n<a name=\"Function:getGWindow\"><scan class=comment>/*\n * Function: getGWindow\n * Usage: gw = getGWindow(e);\n * --------------------------\n * Returns the graphics window in which this event occurred.  This function\n * applies to the subtypes GMouseEvent, GKeyEvent, and GWindowEvent.\n */\n</scan>\nGWindow getGWindow(GEvent e);\n\n<a name=\"Function:getEventTime\"><scan class=comment>/*\n * Function: getEventTime\n * Usage: time = getEventTime(e);\n * ------------------------------\n * Returns the system time in milliseconds at which the event occurred.  To\n * ensure portability among systems that represent time in different ways,\n * the cslib package uses type double to represent time, which is always\n * encoded as the number of milliseconds that have elapsed since 00:00:00\n * UTC on January 1, 1970, which is the conventional zero point for\n * computer-based time systems.\n */\n</scan>\ndouble getEventTime(GEvent e);\n\n<a name=\"Function:setEventTime\"><scan class=comment>/*\n * Function: setEventTime\n * Usage: setEventTime(e, time);\n * -----------------------------\n * Sets the event time field for the event.\n */\n</scan>\nvoid setEventTime(GEvent e, double time);\n\n<a name=\"Function:getModifiers\"><scan class=comment>/*\n * Function: getModifiers\n * Usage: modifiers = getModifiers(e);\n * -----------------------------------\n * Returns an integer whose bits indicate what modifiers are in effect.  To\n * check whether the shift key is down, for example, clients can use the\n * following code:\n *\n *    if (getModifiers(e) \n */\n</scan>\nint getModifiers(GEvent e);\n\n<a name=\"Function:setModifiers\"><scan class=comment>/*\n * Function: setModifiers\n * Usage: setModifiers(e, modifiers);\n * ----------------------------------\n * Sets the modifiers field for the event.\n */\n</scan>\nvoid setModifiers(GEvent e, int modifiers);\n\n<a name=\"Function:waitForClick\"><scan class=comment>/*\n * Function: waitForClick\n * Usage: waitForClick();\n * ----------------------\n * Waits for a mouse click to occur in any window, discarding any other\n * events.\n */\n</scan>\nvoid waitForClick();\n\n<a name=\"Function:waitForEvent\"><scan class=comment>/*\n * Function: waitForEvent\n * Usage: e = waitForEvent(mask);\n * ------------------------------\n * Dismisses the process until an event occurs whose type is covered by the\n * event mask.  The mask parameter is a combination of the events of\n * interest.  For example, to wait for a mouse event or an action event,\n * clients can use the following call:\n *\n *    e = waitForEvent(MOUSE_EVENT + ACTION_EVENT);\n *\n * As a more sophisticated example, the following code is the canonical\n * event loop for an animated application that needs to respond to mouse,\n * key, and timer events:\n *\n *    GTimer timer;\n *    GEvent e;\n *\n *    timer = newGTimer(ANIMATION_DELAY_IN_MILLISECONDS);\n *    start(timer);\n *    while (true) {\n *       e = waitForEvent(TIMER_EVENT + MOUSE_EVENT + KEY_EVENT);\n *       switch (getEventClass(e)) {\n *        case TIMER_EVENT:\n *          takeAnimationStep();\n *          break;\n *        case MOUSE_EVENT:\n *          handleMouseEvent(e);\n *          break;\n *        case KEY_EVENT:\n *          handleKeyEvent(e);\n *          break;\n *       }\n *       freeEvent(e);\n *    }\n */\n</scan>\nGEvent waitForEvent(int mask);\n\n<a name=\"Function:getNextEvent\"><scan class=comment>/*\n * Function: getNextEvent\n * Usage: e = getNextEvent(mask);\n * ------------------------------\n * Checks to see if there are any events of the desired type waiting on the\n * event queue.  If so, this function returns the event in exactly the same\n * fashion as waitNextEvent; if not, getNextEvent returns NULL.\n */\n</scan>\nGEvent getNextEvent(int mask);\n\n<a name=\"Type:GWindowEvent\"><scan class=comment>/*\n * Type: GWindowEvent\n * ------------------\n * This event subtype represents a change in a window.\n */\n</scan>\ntypedef GEvent GWindowEvent;\n\n<a name=\"Function:newGWindowEvent\"><scan class=comment>/*\n * Function: newGWindowEvent\n * Usage: e = newGWindowEvent(type, gw);\n * -------------------------------------\n * Creates a new GWindowEvent.  The parameters are the specific type of\n * window event and the GWindow in which the event occurred.\n */\n</scan>\nGWindowEvent newGWindowEvent(EventType type, GWindow gw);\n\n<a name=\"Type:GActionEvent\"><scan class=comment>/*\n * Type: GActionEvent\n * ------------------\n * This event subtype represents activation of an interactor.\n */\n</scan>\ntypedef GEvent GActionEvent;\n\n<a name=\"Function:newGActionEvent\"><scan class=comment>/*\n * Function: newGActionEvent\n * Usage: e = newGActionEvent(type, source, actionCommand);\n * --------------------------------------------------------\n * Creates a new GActionEvent.  The parameters are the interactor that\n * generated the event and the associated action command.\n */\n</scan>\nGActionEvent newGActionEvent(EventType type, GObject source,\n                                             string actionCommand);\n\n<a name=\"Function:getSource\"><scan class=comment>/*\n * Function: getSource\n * Usage: gobj = getSource(e);\n * ---------------------------\n * Returns the GObject that generated this event.\n */\n</scan>\nGObject getSource(GActionEvent e);\n\n<a name=\"Function:getActionCommand\"><scan class=comment>/*\n * Function: getActionCommand\n * Usage: cmd = getActionCommand(arg);\n * -----------------------------------\n * Returns the action command associated with this event or interactor.\n */\n</scan>\nstring getActionCommand(void *arg);\n\n<a name=\"Type:GMouseEvent\"><scan class=comment>/*\n * Type: GMouseEvent\n * -----------------\n * This event subtype represents a mouse action in a window.\n */\n</scan>\ntypedef GEvent GMouseEvent;\n\n<a name=\"Function:newGMouseEvent\"><scan class=comment>/*\n * Function: newGMouseEvent\n * Usage: e = newGMouseEvent(type, gw, x, y);\n * ------------------------------------------\n * Creates a new GMouseEvent.  The parameters are the specific event type,\n * the GWindow in which the event occurred, and the coordinates of the\n * mouse.\n */\n</scan>\nGMouseEvent newGMouseEvent(EventType type, GWindow gw, double x, double y);\n\n<a name=\"Function:getX\"><scan class=comment>/*\n * Function: getX\n * Usage: x = getX(e);\n * -------------------\n * Returns the x coordinate at which the event occurred.\n */\n</scan>\ndouble getXGEvent(GMouseEvent e);\n\n<a name=\"Function:getY\"><scan class=comment>/*\n * Function: getY\n * Usage: y = getY(e);\n * -------------------\n * Returns the y coordinate at which the event occurred.\n */\n</scan>\ndouble getYGEvent(GMouseEvent e);\n\n<a name=\"Type:GKeyEvent\"><scan class=comment>/*\n * Type: GKeyEvent\n * ---------------\n * This event subtype represents a key action in a window.\n */\n</scan>\ntypedef GEvent GKeyEvent;\n\n<a name=\"Function:newGKeyEvent\"><scan class=comment>/*\n * Function: newGKeyEvent\n * Usage: e = newGKeyEvent(type, gw, ch, code);\n * --------------------------------------------\n * Creates a new GKeyEvent.  The parameters are the specific event type,\n * the GWindow in which the event occurred, the character after taking into\n * account modifier keys, and the code for the specific key.\n */\n</scan>\nGKeyEvent newGKeyEvent(EventType type, GWindow gw, int keyChar, int keyCode);\n\n<a name=\"Function:getKeyChar\"><scan class=comment>/*\n * Function: getKeyChar\n * Usage: ch = getKeyChar(e);\n * --------------------------\n * Returns the character represented by the keystroke, taking the modifier\n * keys into account.  For example, if the user types the 'a' key with the\n * shift key down, getKeyChar will return 'A'.  If the key code in the\n * event does not correspond to a character, getKeyChar returns the null\n * character.\n */\n</scan>\nchar getKeyChar(GKeyEvent e);\n\n<a name=\"Function:getKeyCode\"><scan class=comment>/*\n * Function: getKeyCode\n * Usage: key = getKeyCode(e);\n * ---------------------------\n * Returns the integer code associated with the key in the event.\n */\n</scan>\nint getKeyCode(GKeyEvent e);\n\n<a name=\"Type:GTimerEvent\"><scan class=comment>/*\n * Type: GTimerEvent\n * -----------------\n * This event subtype represents a tick from a GTimer.\n */\n</scan>\ntypedef GEvent GTimerEvent;\n\n<a name=\"Function:newGTimerEvent\"><scan class=comment>/*\n * Function: newGTimerEvent\n * Usage: e = newGTimerEvent(type, timer);\n * ---------------------------------------\n * Creates a new GTimerEvent.  The parameters are the specific event type\n * and the GTimer.\n */\n</scan>\nGEvent newGTimerEvent(EventType type, GTimer timer);\n\n<a name=\"Function:getGTimer\"><scan class=comment>/*\n * Function: getGTimer\n * Usage: timer = getGTimer(e);\n * ----------------------------\n * Returns the GTimer that generated this event.\n */\n</scan>\nGTimer getGTimer(GTimerEvent e);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/gevents.html",
    "content": "<html>\n<head>\n<title>gevents.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><a href=\"gevents-h.html\"><code>gevents.h</code></a></h1>\nThis interface defines the event structure used in the graphics libraries.\nThe structure of this package is adapted from the Java event model and\nis compatible with the C++ <code>StanfordCPPLib</code> package.\nThe structure of the <code>GEvent</code> hierarchy looks like this:\n\n<p><div class=inset>\n<img src=\"images/GEventHierarchy.png\"\n     width=558 usemap=\"#GEventMap\" alt=\"GEventHierarchy\">\n</div>\n<map name=\"GEventMap\">\n  <area shape=rect coords=\"228,0,330,27\" href=\"#Type:GEvent\"\n        alt=\"GEvent\">\n  <area shape=rect coords=\"0,132,102,159\" href=\"#Type:GWindowEvent\"\n        alt=\"GWindowEvent\">\n  <area shape=rect coords=\"114,132,216,159\" href=\"#Type:GActionEvent\"\n        alt=\"GActionEvent\">\n  <area shape=rect coords=\"228,132,330,159\" href=\"#Type:GMouseEvent\"\n        alt=\"GMouseEvent\">\n  <area shape=rect coords=\"342,132,444,159\" href=\"#Type:GKeyEvent\"\n        alt=\"GKeyEvent\">\n  <area shape=rect coords=\"456,132,558,159\" href=\"#Type:GTimerEvent\"\n        alt=\"GTimerEvent\">\n</map>\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Types</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:EventClassType\">EventClassType</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This enumeration type defines the event classes.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:EventType\">EventType</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This enumeration type defines the event types for all events.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:ModifierCodes\">ModifierCodes</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This enumeration type defines a set of constants used to check whether modifiers are in effect.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:KeyCodes\">KeyCodes</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This type defines the names of the key codes returned in a key event.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:GEvent\">GEvent</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This abstract type is used to represent an event of any type.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:GWindowEvent\">GWindowEvent</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This event subtype represents a change in a window.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:GActionEvent\">GActionEvent</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This event subtype represents activation of an interactor.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:GMouseEvent\">GMouseEvent</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This event subtype represents a mouse action in a window.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:GKeyEvent\">GKeyEvent</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This event subtype represents a key action in a window.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:GTimerEvent\">GTimerEvent</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This event subtype represents a tick from a <code>GTimer</code>.</td></tr>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:freeEvent\">freeEvent(e)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Releases the storage associated with the event.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getEventClass\">getEventClass(e)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the enumerated type constant indicating the class of the event.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getEventType\">getEventType(e)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the enumerated constant indicating the specific class of the event.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getGWindow\">getGWindow(e)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the graphics window in which this event occurred.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getEventTime\">getEventTime(e)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the system time in milliseconds at which the event occurred.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setEventTime\">setEventTime(e,&nbsp;time)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the event time field for the event.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getModifiers\">getModifiers(e)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns an integer whose bits indicate what modifiers are in effect.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setModifiers\">setModifiers(e,&nbsp;modifiers)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the modifiers field for the event.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:waitForClick\">waitForClick()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Waits for a mouse click to occur in any window, discarding any other events.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:waitForEvent\">waitForEvent(mask)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Dismisses the process until an event occurs whose type is covered by the event mask.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getNextEvent\">getNextEvent(mask)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Checks to see if there are any events of the desired type waiting on the event queue.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newGWindowEvent\">newGWindowEvent(type,&nbsp;gw)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a new <code>GWindowEvent</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newGActionEvent\">newGActionEvent(type,&nbsp;source,&nbsp;actionCommand)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a new <code>GActionEvent</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getSource\">getSource(e)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the <code>GObject</code> that generated this event.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getActionCommand\">getActionCommand(arg)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the action command associated with this event or interactor.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newGMouseEvent\">newGMouseEvent(type,&nbsp;gw,&nbsp;x,&nbsp;y)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a new <code>GMouseEvent</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getX\">getX(e)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the <i>x</i> coordinate at which the event occurred.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getY\">getY(e)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the <i>y</i> coordinate at which the event occurred.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newGKeyEvent\">newGKeyEvent(type,&nbsp;gw,&nbsp;ch,&nbsp;code)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a new <code>GKeyEvent</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getKeyChar\">getKeyChar(e)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the character represented by the keystroke, taking the modifier keys into account.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getKeyCode\">getKeyCode(e)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the integer code associated with the key in the event.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newGTimerEvent\">newGTimerEvent(type,&nbsp;timer)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a new <code>GTimerEvent</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getGTimer\">getGTimer(e)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the <code>GTimer</code> that generated this event.</td></tr>\n</table>\n<h2>Type detail</h2>\n<hr>\n<a name=\"Type:EventClassType\"></a>\n<pre class=detailCode>\ntypedef enum {\n   ACTION_EVENT = 0x010,\n   KEY_EVENT    = 0x020,\n   TIMER_EVENT  = 0x040,\n   WINDOW_EVENT = 0x080,\n   MOUSE_EVENT  = 0x100,\n   CLICK_EVENT  = 0x200,\n   ANY_EVENT    = 0x3F0\n} EventClassType;\n</pre>\n<div class=detailHTML>\nThis enumeration type defines the event classes.  The element values\nare each a single bit and can be added or ORed together to generate\nan event mask.  The <code>CLICK_EVENT</code> class responds only to\nthe MOUSE_CLICKED event type.  The <code>ANY_EVENT</code> class\nselects any event.\n</div>\n<hr>\n<a name=\"Type:EventType\"></a>\n<pre class=detailCode>\ntypedef enum {\n   WINDOW_CLOSED    = WINDOW_EVENT + 1,\n   WINDOW_RESIZED   = WINDOW_EVENT + 2,\n   ACTION_PERFORMED = ACTION_EVENT + 1,\n   MOUSE_CLICKED    = MOUSE_EVENT + 1,\n   MOUSE_PRESSED    = MOUSE_EVENT + 2,\n   MOUSE_RELEASED   = MOUSE_EVENT + 3,\n   MOUSE_MOVED      = MOUSE_EVENT + 4,\n   MOUSE_DRAGGED    = MOUSE_EVENT + 5,\n   KEY_PRESSED      = KEY_EVENT + 1,\n   KEY_RELEASED     = KEY_EVENT + 2,\n   KEY_TYPED        = KEY_EVENT + 3,\n   TIMER_TICKED     = TIMER_EVENT + 1\n} EventType;\n</pre>\n<div class=detailHTML>\nThis enumeration type defines the event types for all events.\n</div>\n<hr>\n<a name=\"Type:ModifierCodes\"></a>\n<pre class=detailCode>\ntypedef enum {\n   SHIFT_DOWN     = 1 &lt;&lt; 0,\n   CTRL_DOWN      = 1 &lt;&lt; 1,\n   META_DOWN      = 1 &lt;&lt; 2,\n   ALT_DOWN       = 1 &lt;&lt; 3,\n   ALT_GRAPH_DOWN = 1 &lt;&lt; 4,\n   BUTTON1_DOWN   = 1 &lt;&lt; 5,\n   BUTTON2_DOWN   = 1 &lt;&lt; 6,\n   BUTTON3_DOWN   = 1 &lt;&lt; 7\n} ModifierCodes;\n</pre>\n<div class=detailHTML>\nThis enumeration type defines a set of constants used to check whether\nmodifiers are in effect.\n</div>\n<hr>\n<a name=\"Type:KeyCodes\"></a>\n<pre class=detailCode>\ntypedef enum {\n   BACKSPACE_KEY = 8,\n   TAB_KEY = 9,\n   ENTER_KEY = 10,\n   CLEAR_KEY = 12,\n   ESCAPE_KEY = 27,\n   PAGE_UP_KEY = 33,\n   PAGE_DOWN_KEY = 34,\n   END_KEY = 35,\n   HOME_KEY = 36,\n   LEFT_ARROW_KEY = 37,\n   UP_ARROW_KEY = 38,\n   RIGHT_ARROW_KEY = 39,\n   DOWN_ARROW_KEY = 40,\n   F1_KEY = 112,\n   F2_KEY = 113,\n   F3_KEY = 114,\n   F4_KEY = 115,\n   F5_KEY = 116,\n   F6_KEY = 117,\n   F7_KEY = 118,\n   F8_KEY = 119,\n   F9_KEY = 120,\n   F10_KEY = 121,\n   F11_KEY = 122,\n   F12_KEY = 123,\n   DELETE_KEY = 127,\n   HELP_KEY = 156\n} KeyCodes;\n</pre>\n<div class=detailHTML>\nThis type defines the names of the key codes returned in a key event.\n</div>\n<hr>\n<a name=\"Type:GEvent\"></a>\n<pre class=detailCode>\ntypedef struct GEventCDT *GEvent;\n</pre>\n<div class=detailHTML>\nThis abstract type is used to represent an event of any type.  This\nfile defines names for the subtypes, even though these types are\nidentical in C.  The functions that apply only to a specific event\nsubtype generate runtime errors if called on an event of the wrong type.\n\n<p>The standard paradigm for using <code>GEvent</code> is illustrated\nby the following program, which allows the user to draw lines on the\ngraphics window:\n\n<pre>\n   main() {\n      GWindow gw = newGWindow(600, 400);\n      while (true) {\n         GMouseEvent e = waitForEvent(MOUSE_EVENT);\n         if (getEventType(e) == MOUSE_PRESSED) {\n            GLine line = newGLine(getX(e), getY(e), getX(e), getY(e));\n            add(gw, line);\n         } else if (getEventType(e) == MOUSE_DRAGGED) {\n            setEndPoint(line, getX(e), getY(e));\n         }\n      }\n   }\n</pre>\n</div>\n<hr>\n<a name=\"Type:GWindowEvent\"></a>\n<pre class=detailCode>\ntypedef GEvent GWindowEvent;\n</pre>\n<div class=detailHTML>\nThis event subtype represents a change in a window.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ne = getNextEvent(mask);\n</pre>\n<hr>\n<a name=\"Type:GActionEvent\"></a>\n<pre class=detailCode>\ntypedef GEvent GActionEvent;\n</pre>\n<div class=detailHTML>\nThis event subtype represents activation of an interactor.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ne = newGWindowEvent(type, gw);\n</pre>\n<hr>\n<a name=\"Type:GMouseEvent\"></a>\n<pre class=detailCode>\ntypedef GEvent GMouseEvent;\n</pre>\n<div class=detailHTML>\nThis event subtype represents a mouse action in a window.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncmd = getActionCommand(arg);\n</pre>\n<hr>\n<a name=\"Type:GKeyEvent\"></a>\n<pre class=detailCode>\ntypedef GEvent GKeyEvent;\n</pre>\n<div class=detailHTML>\nThis event subtype represents a key action in a window.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ny = getY(e);\n</pre>\n<hr>\n<a name=\"Type:GTimerEvent\"></a>\n<pre class=detailCode>\ntypedef GEvent GTimerEvent;\n</pre>\n<div class=detailHTML>\nThis event subtype represents a tick from a <code>GTimer</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nkey = getKeyCode(e);\n</pre>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:freeEvent\"></a>\n<pre class=detailCode>\nvoid freeEvent(GEvent e);\n</pre>\n<div class=detailHTML>\nReleases the storage associated with the event.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfreeEvent(e);\n</pre>\n<hr>\n<a name=\"Function:getEventClass\"></a>\n<pre class=detailCode>\nEventClassType getEventClass(GEvent e);\n</pre>\n<div class=detailHTML>\nReturns the enumerated type constant indicating the class of the event.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\neventClass = getEventClass(e);\n</pre>\n<hr>\n<a name=\"Function:getEventType\"></a>\n<pre class=detailCode>\nEventType getEventType(GEvent e);\n</pre>\n<div class=detailHTML>\nReturns the enumerated constant indicating the specific class of the event.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\neventType = getEventType(e);\n</pre>\n<hr>\n<a name=\"Function:getGWindow\"></a>\n<pre class=detailCode>\nGWindow getGWindow(GEvent e);\n</pre>\n<div class=detailHTML>\nReturns the graphics window in which this event occurred.  This function\napplies to the subtypes <code>GMouseEvent</code>, <code>GKeyEvent</code>,\nand <code>GWindowEvent</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngw = getGWindow(e);\n</pre>\n<hr>\n<a name=\"Function:getEventTime\"></a>\n<pre class=detailCode>\ndouble getEventTime(GEvent e);\n</pre>\n<div class=detailHTML>\nReturns the system time in milliseconds at which the event occurred.\nTo ensure portability among systems that represent time in different\nways, the <code>cslib</code> package uses type <code>double</code> to\nrepresent time, which is always encoded as the number of milliseconds\nthat have elapsed since 00:00:00 UTC on January 1, 1970, which is\nthe conventional zero point for computer-based time systems.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ntime = getEventTime(e);\n</pre>\n<hr>\n<a name=\"Function:setEventTime\"></a>\n<pre class=detailCode>\nvoid setEventTime(GEvent e, double time);\n</pre>\n<div class=detailHTML>\nSets the event time field for the event.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetEventTime(e, time);\n</pre>\n<hr>\n<a name=\"Function:getModifiers\"></a>\n<pre class=detailCode>\nint getModifiers(GEvent e);\n</pre>\n<div class=detailHTML>\nReturns an integer whose bits indicate what modifiers are in effect.\nTo check whether the shift key is down, for example, clients can use\nthe following code:\n\n<pre>\n   if (getModifiers(e) & SHIFT_DOWN) . . .\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmodifiers = getModifiers(e);\n</pre>\n<hr>\n<a name=\"Function:setModifiers\"></a>\n<pre class=detailCode>\nvoid setModifiers(GEvent e, int modifiers);\n</pre>\n<div class=detailHTML>\nSets the modifiers field for the event.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetModifiers(e, modifiers);\n</pre>\n<hr>\n<a name=\"Function:waitForClick\"></a>\n<pre class=detailCode>\nvoid waitForClick();\n</pre>\n<div class=detailHTML>\nWaits for a mouse click to occur in any window, discarding any other\nevents.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nwaitForClick();\n</pre>\n<hr>\n<a name=\"Function:waitForEvent\"></a>\n<pre class=detailCode>\nGEvent waitForEvent(int mask);\n</pre>\n<div class=detailHTML>\nDismisses the process until an event occurs whose type is covered by\nthe event mask.  The mask parameter is a combination of the events of\ninterest.  For example, to wait for a mouse event or an action event,\nclients can use the following call:\n\n<pre>\n   e = waitForEvent(MOUSE_EVENT + ACTION_EVENT);\n</pre>\n\nAs a more sophisticated example, the following code is the canonical\nevent loop for an animated application that needs to respond to mouse,\nkey, and timer events:\n\n<pre>\n   GTimer timer;\n   GEvent e;\n\n   timer = newGTimer(ANIMATION_DELAY_IN_MILLISECONDS);\n   start(timer);\n   while (true) {\n      e = waitForEvent(TIMER_EVENT + MOUSE_EVENT + KEY_EVENT);\n      switch (getEventClass(e)) {\n       case TIMER_EVENT:\n         takeAnimationStep();\n         break;\n       case MOUSE_EVENT:\n         handleMouseEvent(e);\n         break;\n       case KEY_EVENT:\n         handleKeyEvent(e);\n         break;\n      }\n      freeEvent(e);\n   }\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ne = waitForEvent(mask);\n</pre>\n<hr>\n<a name=\"Function:getNextEvent\"></a>\n<pre class=detailCode>\nGEvent getNextEvent(int mask);\n</pre>\n<div class=detailHTML>\nChecks to see if there are any events of the desired type waiting on the\nevent queue.  If so, this function returns the event in exactly the same\nfashion as <code>waitNextEvent</code>; if not, <code>getNextEvent</code>\nreturns <code>NULL</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ne = getNextEvent(mask);\n</pre>\n<hr>\n<a name=\"Function:newGWindowEvent\"></a>\n<pre class=detailCode>\nGWindowEvent newGWindowEvent(EventType type, GWindow gw);\n</pre>\n<div class=detailHTML>\nCreates a new <code>GWindowEvent</code>.  The parameters are the\nspecific type of window event and the <code>GWindow</code> in which\nthe event occurred.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ne = newGWindowEvent(type, gw);\n</pre>\n<hr>\n<a name=\"Function:newGActionEvent\"></a>\n<pre class=detailCode>\nGActionEvent newGActionEvent(EventType type, GObject source, string actionCommand);\n</pre>\n<div class=detailHTML>\nCreates a new <code>GActionEvent</code>.  The parameters are the\ninteractor that generated the event and the associated action command.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ne = newGActionEvent(type, source, actionCommand);\n</pre>\n<hr>\n<a name=\"Function:getSource\"></a>\n<pre class=detailCode>\nGObject getSource(GActionEvent e);\n</pre>\n<div class=detailHTML>\nReturns the <code>GObject</code> that generated this event.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngobj = getSource(e);\n</pre>\n<hr>\n<a name=\"Function:getActionCommand\"></a>\n<pre class=detailCode>\nstring getActionCommand(void *arg);\n</pre>\n<div class=detailHTML>\nReturns the action command associated with this event or interactor.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncmd = getActionCommand(arg);\n</pre>\n<hr>\n<a name=\"Function:newGMouseEvent\"></a>\n<pre class=detailCode>\nGMouseEvent newGMouseEvent(EventType type, GWindow gw, double x, double y);\n</pre>\n<div class=detailHTML>\nCreates a new <code>GMouseEvent</code>.  The parameters are the\nspecific event type, the <code>GWindow</code> in which the event\noccurred, and the coordinates of the mouse.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ne = newGMouseEvent(type, gw, x, y);\n</pre>\n<hr>\n<a name=\"Function:getX\"></a>\n<pre class=detailCode>\ndouble getX(GMouseEvent e);\n</pre>\n<div class=detailHTML>\nReturns the <i>x</i> coordinate at which the event occurred.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nx = getX(e);\n</pre>\n<hr>\n<a name=\"Function:getY\"></a>\n<pre class=detailCode>\ndouble getY(GMouseEvent e);\n</pre>\n<div class=detailHTML>\nReturns the <i>y</i> coordinate at which the event occurred.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ny = getY(e);\n</pre>\n<hr>\n<a name=\"Function:newGKeyEvent\"></a>\n<pre class=detailCode>\nGKeyEvent newGKeyEvent(EventType type, GWindow gw, int keyChar, int keyCode);\n</pre>\n<div class=detailHTML>\nCreates a new <code>GKeyEvent</code>.  The parameters are the specific\nevent type, the <code>GWindow</code> in which the event occurred, the\ncharacter after taking into account modifier keys, and the code for the\nspecific key.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ne = newGKeyEvent(type, gw, ch, code);\n</pre>\n<hr>\n<a name=\"Function:getKeyChar\"></a>\n<pre class=detailCode>\nchar getKeyChar(GKeyEvent e);\n</pre>\n<div class=detailHTML>\nReturns the character represented by the keystroke, taking the modifier\nkeys into account.  For example, if the user types the <code>'a'</code>\nkey with the shift key down, <code>getKeyChar</code> will return\n<code>'A'</code>.  If the key code in the event does not correspond\nto a character, <code>getKeyChar</code> returns the null character.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nch = getKeyChar(e);\n</pre>\n<hr>\n<a name=\"Function:getKeyCode\"></a>\n<pre class=detailCode>\nint getKeyCode(GKeyEvent e);\n</pre>\n<div class=detailHTML>\nReturns the integer code associated with the key in the event.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nkey = getKeyCode(e);\n</pre>\n<hr>\n<a name=\"Function:newGTimerEvent\"></a>\n<pre class=detailCode>\nGEvent newGTimerEvent(EventType type, GTimer timer);\n</pre>\n<div class=detailHTML>\nCreates a new <code>GTimerEvent</code>.  The parameters are the specific\nevent type and the <code>GTimer</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ne = newGTimerEvent(type, timer);\n</pre>\n<hr>\n<a name=\"Function:getGTimer\"></a>\n<pre class=detailCode>\nGTimer getGTimer(GTimerEvent e);\n</pre>\n<div class=detailHTML>\nReturns the <code>GTimer</code> that generated this event.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ntimer = getGTimer(e);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/ginteractors-h.html",
    "content": "<html>\n<head>\n<title>../ginteractors.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: ginteractors.h\n * --------------------\n * This interface exports a hierarchy of graphical interactors similar to\n * those provided in the Java Swing libraries.\n */\n</scan>\n#ifndef _ginteractors_h\n#define _ginteractors_h\n\n#include \"cslib.h\"\n#include \"gobjects.h\"\n#include \"gtypes.h\"\n#include \"gwindow.h\"\n#include \"vector.h\"\n\n<a name=\"Type:GInteractor\"><scan class=comment>/*\n * Type: GInteractor\n * -----------------\n * This abstract type is the superclass for all graphical interactors.  In\n * most applications, interactors will be added to a control strip along\n * one of the sides of the GWindow, but they can also be placed in specific\n * positions just like any other GObject.\n */\n</scan>\ntypedef GObject GInteractor;\n\n<a name=\"Function:setActionCommand\"><scan class=comment>/*\n * Function: setActionCommand\n * Usage: setActionCommand(interactor, cmd);\n * -----------------------------------------\n * Sets the action command to the indicated string.  If the string is not\n * empty, activating the interactor generates a GActionEvent.\n */\n</scan>\nvoid setActionCommand(GInteractor interactor, string cmd);\n\n<a name=\"Function:getActionCommand\"><scan class=comment>/*\n * Function: getActionCommand\n * Usage: cmd = getActionCommand(interactor);\n * ------------------------------------------\n * Returns the action command associated with the interactor.\n */\n</scan>\nstring getActionCommandGInteractor(GInteractor interactor);\n\n<a name=\"Type:GButton\"><scan class=comment>/*\n * Type: GButton\n * -------------\n * This interactor subtype represents an onscreen button.  The following\n * program displays a button that, when pressed, generates the message\n * Please do not press this button again (with thanks to Douglas Adamss\n * Hitchhikers Guide to the Galaxy):\n *\n *    main() {\n *       GWindow gw = newGWindow(600, 400);\n *       GButton button = newGButton(\"RED\");\n *       addToRegion(gw, button, \"SOUTH\");\n *       while (true) {\n *          GEvent e = waitForEvent(ACTION_EVENT | CLICK_EVENT);\n *          if (getEventType(e) == MOUSE_CLICKED) break;\n *          printf(\"Please do not press this button again.\\n\");\n *       }\n *    }\n */\n</scan>\ntypedef GInteractor GButton;\n\n<a name=\"Function:newGButton\"><scan class=comment>/*\n * Function: newGButton\n * Usage: button = newGButton(label);\n * ----------------------------------\n * Creates a GButton with the specified label.  This function also sets the\n * action command for the button to the label string.\n */\n</scan>\nGButton newGButton(string label);\n\n<a name=\"Type:GCheckBox\"><scan class=comment>/*\n * Type: GCheckBox\n * ---------------\n * This interactor subtype represents an onscreen check box.  Clicking once\n * on the check box selects it; clicking again removes the selection.  If a\n * GCheckBox has an action command, clicking on the box generates a\n * GActionEvent.\n */\n</scan>\ntypedef GInteractor GCheckBox;\n\n<a name=\"Function:GCheckBox\"><scan class=comment>/*\n * Function: GCheckBox\n * Usage: chkbox = new GCheckBox(label);\n * -------------------------------------\n * Creates a GCheckBox with the specified label.  In contrast to the\n * GButtonructor, this function does not automatically set an action\n * command.\n */\n</scan>\nGCheckBox newGCheckBox(string label);\n\n<a name=\"Function:setSelected\"><scan class=comment>/*\n * Function: setSelected\n * Usage: setSelected(chkbox, state);\n * ----------------------------------\n * Sets the state of the check box.\n */\n</scan>\nvoid setSelected(GCheckBox chkbox, bool state);\n\n<a name=\"Function:isSelected\"><scan class=comment>/*\n * Function: isSelected\n * Usage: if (isSelected(chkbox)) ...\n * ----------------------------------\n * Returns true if the check box is selected.\n */\n</scan>\nbool isSelected(GCheckBox chkbox);\n\n<a name=\"Type:GSlider\"><scan class=comment>/*\n * Type: GSlider\n * -------------\n * This interactor subtype represents an onscreen slider.  Dragging the\n * slider control generates an ActionEvent if the slider has a nonempty\n * action command.\n */\n</scan>\ntypedef GInteractor GSlider;\n\n<a name=\"Function:GSlider\"><scan class=comment>/*\n * Function: GSlider\n * Usage: slider = new GSlider(min, max, value);\n * ---------------------------------------------\n * Creates a horizontal GSlider.  The parameters are the minimum value,\n * maximum value, and current value of the slider.  Assigning an action\n * command to the slider causes the slider to generate an action event\n * whenever the slider value changes.\n */\n</scan>\nGSlider newGSlider(int min, int max, int value);\n\n<a name=\"Function:setValue\"><scan class=comment>/*\n * Function: setValue\n * Usage: setValue(slider, value);\n * -------------------------------\n * Sets the current value of the slider.\n */\n</scan>\nvoid setValue(GSlider slider, int value);\n\n<a name=\"Function:getValue\"><scan class=comment>/*\n * Function: getValue\n * Usage: value = getValue(slider);\n * --------------------------------\n * Returns the current value of the slider.\n */\n</scan>\nint getValue(GSlider slider);\n\n<a name=\"Type:GTextField\"><scan class=comment>/*\n * Type: GTextField\n * ----------------\n * This interactor subtype represents a text field for entering short text\n * strings.  Hitting enter in a text field generates a GActionEvent if the\n * text field has a nonempty action command.\n */\n</scan>\ntypedef GInteractor GTextField;\n\n<a name=\"Function:GTextField\"><scan class=comment>/*\n * Function: GTextField\n * Usage: field = newGTextField(nChars);\n * -------------------------------------\n * Creates a text field capable of holding nChars characters.  Assigning an\n * action command to the text field causes it to generate an action event\n * whenever the user types the ENTER key.\n */\n</scan>\nGTextField newGTextField(int nChars);\n\n<a name=\"Function:setText\"><scan class=comment>/*\n * Function: setText\n * Usage: setText(field, str);\n * ---------------------------\n * Sets the text of the field to the specified string.\n */\n</scan>\nvoid setText(GTextField field, string str);\n\n<a name=\"Function:getText\"><scan class=comment>/*\n * Function: getText\n * Usage: str = getText(field);\n * ----------------------------\n * Returns the contents of the text field.\n */\n</scan>\nstring getText(GTextField field);\n\n<a name=\"Type:GChooser\"><scan class=comment>/*\n * Type: GChooser\n * --------------\n * This interactor subtype represents a selectable list.  The newGChooser\n * function creates an empty chooser.  Once the chooser has been created,\n * clients can use addItem to add the options.  For example, the following\n * code creates a GChooser containing the four strings \"Small\", \"Medium\",\n * \"Large\", and \"X-Large\":\n *\n *    GChooser sizeChooser = newGChooser();\n *    addItem(sizeChooser, \"Small\");\n *    addItem(sizeChooser, \"Medium\");\n *    addItem(sizeChooser, \"Large\");\n *    addItem(sizeChooser, \"X-Large\");\n */\n</scan>\ntypedef GInteractor GChooser;\n\n<a name=\"Function:newGChooser\"><scan class=comment>/*\n * Function: newGChooser\n * Usage: chooser = newGChooser();\n * -------------------------------\n * Creates a chooser that initially contains no items, which are added\n * using the addItem function.  Assigning an action command to the chooser\n * causes it to generate an action event whenever the user selects an item.\n */\n</scan>\nGChooser newGChooser(void);\n\n<a name=\"Function:addItem\"><scan class=comment>/*\n * Function: addItem\n * Usage: addItem(chooser, item);\n * ------------------------------\n * Adds a new item consisting of the specified string.\n */\n</scan>\nvoid addItem(GChooser chooser, string item);\n\n<a name=\"Function:setSelectedItem\"><scan class=comment>/*\n * Function: setSelectedItem\n * Usage: setSelectedItem(chooser, item);\n * --------------------------------------\n * Sets the chooser so that it shows the specified item.  If the item does\n * not exist in the chooser, no change occurs.\n */\n</scan>\nvoid setSelectedItem(GChooser chooser, string item);\n\n<a name=\"Function:getSelectedItem\"><scan class=comment>/*\n * Function: getSelectedItem\n * Usage: item = getSelectedItem(chooser);\n * ---------------------------------------\n * Returns the current item selected in the chooser.\n */\n</scan>\nstring getSelectedItem(GChooser chooser);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/ginteractors.html",
    "content": "<html>\n<head>\n<title>ginteractors.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><a href=\"ginteractors-h.html\"><code>ginteractors.h</code></a></h1>\nThis interface exports a hierarchy of graphical interactors similar to\nthose provided in the Java Swing libraries.\nThe structure of the <code>GInteractor</code> hierarchy looks like this:\n\n<p><div class=inset>\n<img src=\"images/GInteractorHierarchy.png\"\n<img src=\"images/GInteractorHierarchy.png\"\n     width=513 usemap=\"#GInteractorMap\" alt=\"GInteractorHierarchy\">\n</div>\n<map name=\"GInteractorMap\">\n  <area shape=rect coords=\"210,0,303,27\" href=\"gobjects.html#Type:GObject\"\n        alt=\"GObject\">\n  <area shape=rect coords=\"0,219,93,246\" href=\"#Type:GButton\"\n        alt=\"GButton\">\n  <area shape=rect coords=\"105,219,198,246\" href=\"#Type:GCheckBox\"\n        alt=\"GCheckBox\">\n  <area shape=rect coords=\"210,219,303,246\" href=\"#Type:GChooser\"\n        alt=\"GChooser\">\n  <area shape=rect coords=\"315,219,408,246\" href=\"#Type:GSlider\"\n        alt=\"GSlider\">\n  <area shape=rect coords=\"420,219,513,246\" href=\"#Type:GTextField\"\n        alt=\"GTextField\">\n</map>\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Types</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:GInteractor\">GInteractor</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This abstract type is the superclass for all graphical interactors.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:GButton\">GButton</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interactor subtype represents an onscreen button.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:GCheckBox\">GCheckBox</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interactor subtype represents an onscreen check box.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:GSlider\">GSlider</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interactor subtype represents an onscreen slider.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:GTextField\">GTextField</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interactor subtype represents a text field for entering short text strings.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:GChooser\">GChooser</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interactor subtype represents a selectable list.</td></tr>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setActionCommand\">setActionCommand(interactor,&nbsp;cmd)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the action command to the indicated string.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getActionCommand\">getActionCommand(interactor)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the action command associated with the interactor.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newGButton\">newGButton(label)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a <code>GButton</code> with the specified label.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:GCheckBox\">GCheckBox(label)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a <code>GCheckBox</code> with the specified label.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setSelected\">setSelected(chkbox,&nbsp;state)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the state of the check box.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:isSelected\">isSelected(chkbox)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the check box is selected.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:GSlider\">GSlider(min,&nbsp;max,&nbsp;value)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a horizontal <code>GSlider</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setValue\">setValue(slider,&nbsp;value)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the current value of the slider.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getValue\">getValue(slider)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the current value of the slider.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:GTextField\">GTextField(nChars)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a text field capable of holding <code>nChars</code> characters.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setText\">setText(field,&nbsp;str)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the text of the field to the specified string.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getText\">getText(field)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the contents of the text field.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newGChooser\">newGChooser()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a chooser that initially contains no items, which are added using the <code>addItem</code> function.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:addItem\">addItem(chooser,&nbsp;item)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Adds a new item consisting of the specified string.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setSelectedItem\">setSelectedItem(chooser,&nbsp;item)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the chooser so that it shows the specified item.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getSelectedItem\">getSelectedItem(chooser)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the current item selected in the chooser.</td></tr>\n</table>\n<h2>Type detail</h2>\n<hr>\n<a name=\"Type:GInteractor\"></a>\n<pre class=detailCode>\ntypedef GObject GInteractor;\n</pre>\n<div class=detailHTML>\nThis abstract type is the superclass for all graphical interactors.\nIn most applications, interactors will be added to a control strip\nalong one of the sides of the <code>GWindow</code>, but they can\nalso be placed in specific positions just like any other\n<code>GObject</code>.\n</div>\n<hr>\n<a name=\"Type:GButton\"></a>\n<pre class=detailCode>\ntypedef GInteractor GButton;\n</pre>\n<div class=detailHTML>\nThis interactor subtype represents an onscreen button.  The following\nprogram displays a button that, when pressed, generates the message\n&ldquo;Please do not press this button again&rdquo;\n(with thanks to Douglas Adams&rsquo;s <i>Hitchhiker&rsquo;s\nGuide to the Galaxy</i>):\n\n<pre>\n   main() {\n      GWindow gw = newGWindow(600, 400);\n      GButton button = newGButton(\"RED\");\n      addToRegion(gw, button, \"SOUTH\");\n      while (true) {\n         GEvent e = waitForEvent(ACTION_EVENT | CLICK_EVENT);\n         if (getEventType(e) == MOUSE_CLICKED) break;\n         printf(\"Please do not press this button again.\\n\");\n      }\n   }\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncmd = getActionCommand(interactor);\n</pre>\n<hr>\n<a name=\"Type:GCheckBox\"></a>\n<pre class=detailCode>\ntypedef GInteractor GCheckBox;\n</pre>\n<div class=detailHTML>\nThis interactor subtype represents an onscreen check box.  Clicking\nonce on the check box selects it; clicking again removes the selection.\nIf a <code>GCheckBox</code> has an action command, clicking on the box\ngenerates a <code>GActionEvent</code>.\n<p>The display image of a check box is machine-dependent, but the declaration\n\n<pre>\n    GCheckBox *traceBox = new GCheckBox(\"Trace\");\n</pre>\n\ntypically produces a check box that looks something like this:\n\n<p><div class=inset>\n<img src=\"images/GCheckBox.png\" alt=\"GCheckBox\">\n</div>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nbutton = newGButton(label);\n</pre>\n<hr>\n<a name=\"Type:GSlider\"></a>\n<pre class=detailCode>\ntypedef GInteractor GSlider;\n</pre>\n<div class=detailHTML>\nThis interactor subtype represents an onscreen slider.  Dragging\nthe slider control generates an <code>ActionEvent</code> if the\nslider has a nonempty action command.\n<p>The display image of a slider is machine-dependent, but the declaration\n\n<pre>\n    GSlider *slider = new GSlider();\n</pre>\n\ntypically produces a slider that looks something like this:\n\n<p><div class=inset>\n<img src=\"images/GSlider.png\" alt=\"GSlider\">\n</div>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (isSelected(chkbox)) ...\n</pre>\n<hr>\n<a name=\"Type:GTextField\"></a>\n<pre class=detailCode>\ntypedef GInteractor GTextField;\n</pre>\n<div class=detailHTML>\nThis interactor subtype represents a text field for entering\nshort text strings.  Hitting enter in a text field generates a\n<code>GActionEvent</code> if the text field has a nonempty\naction command.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvalue = getValue(slider);\n</pre>\n<hr>\n<a name=\"Type:GChooser\"></a>\n<pre class=detailCode>\ntypedef GInteractor GChooser;\n</pre>\n<div class=detailHTML>\nThis interactor subtype represents a selectable list.  The\n<code>newGChooser</code> function creates an empty chooser.\nOnce the chooser has been created, clients can use <code>addItem</code>\nto add the options.  For example, the following code creates a\n<code>GChooser</code> containing the four strings\n<code>\"Small\"</code>, <code>\"Medium\"</code>, <code>\"Large\"</code>,\nand <code>\"X-Large\"</code>:\n\n<pre>\n   GChooser sizeChooser = newGChooser();\n   addItem(sizeChooser, \"Small\");\n   addItem(sizeChooser, \"Medium\");\n   addItem(sizeChooser, \"Large\");\n   addItem(sizeChooser, \"X-Large\");\n</pre>\n<p>The display image of a <code>GChooser</code> is machine-dependent,\nbut the chooser generated by this code typically looks something like this:\n\n<p><div class=inset>\n<img src=\"images/GChooser.png\" alt=\"GChooser\">\n</div>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstr = getText(field);\n</pre>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:setActionCommand\"></a>\n<pre class=detailCode>\nvoid setActionCommand(GInteractor interactor, string cmd);\n</pre>\n<div class=detailHTML>\nSets the action command to the indicated string.  If the string is not\nempty, activating the interactor generates a <code>GActionEvent</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetActionCommand(interactor, cmd);\n</pre>\n<hr>\n<a name=\"Function:getActionCommand\"></a>\n<pre class=detailCode>\nstring getActionCommand(GInteractor interactor);\n</pre>\n<div class=detailHTML>\nReturns the action command associated with the interactor.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncmd = getActionCommand(interactor);\n</pre>\n<hr>\n<a name=\"Function:newGButton\"></a>\n<pre class=detailCode>\nGButton newGButton(string label);\n</pre>\n<div class=detailHTML>\nCreates a <code>GButton</code> with the specified label.  This\nfunction also sets the action command for the button to the\nlabel string.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nbutton = newGButton(label);\n</pre>\n<hr>\n<a name=\"Function:GCheckBox\"></a>\n<pre class=detailCode>\nGCheckBox GCheckBox(string label);\n</pre>\n<div class=detailHTML>\nCreates a <code>GCheckBox</code> with the specified label.  In contrast\nto the <code>GButton</code>ructor, this function does not automatically\nset an action command.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nchkbox = new GCheckBox(label);\n</pre>\n<hr>\n<a name=\"Function:setSelected\"></a>\n<pre class=detailCode>\nvoid setSelected(GCheckBox chkbox, bool state);\n</pre>\n<div class=detailHTML>\nSets the state of the check box.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetSelected(chkbox, state);\n</pre>\n<hr>\n<a name=\"Function:isSelected\"></a>\n<pre class=detailCode>\nbool isSelected(GCheckBox chkbox);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the check box is selected.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (isSelected(chkbox)) ...\n</pre>\n<hr>\n<a name=\"Function:GSlider\"></a>\n<pre class=detailCode>\nGSlider GSlider(int min, int max, int value);\n</pre>\n<div class=detailHTML>\nCreates a horizontal <code>GSlider</code>.  The parameters are\nthe minimum value, maximum value, and current value of the slider.\nAssigning an action command to the slider causes the slider to\ngenerate an action event whenever the slider value changes.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nslider = new GSlider(min, max, value);\n</pre>\n<hr>\n<a name=\"Function:setValue\"></a>\n<pre class=detailCode>\nvoid setValue(GSlider slider, int value);\n</pre>\n<div class=detailHTML>\nSets the current value of the slider.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetValue(slider, value);\n</pre>\n<hr>\n<a name=\"Function:getValue\"></a>\n<pre class=detailCode>\nint getValue(GSlider slider);\n</pre>\n<div class=detailHTML>\nReturns the current value of the slider.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvalue = getValue(slider);\n</pre>\n<hr>\n<a name=\"Function:GTextField\"></a>\n<pre class=detailCode>\nGTextField GTextField(int nChars);\n</pre>\n<div class=detailHTML>\nCreates a text field capable of holding <code>nChars</code> characters.\nAssigning an action command to the text field causes it to generate an\naction event whenever the user types the ENTER key.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfield = newGTextField(nChars);\n</pre>\n<hr>\n<a name=\"Function:setText\"></a>\n<pre class=detailCode>\nvoid setText(GTextField field, string str);\n</pre>\n<div class=detailHTML>\nSets the text of the field to the specified string.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetText(field, str);\n</pre>\n<hr>\n<a name=\"Function:getText\"></a>\n<pre class=detailCode>\nstring getText(GTextField field);\n</pre>\n<div class=detailHTML>\nReturns the contents of the text field.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstr = getText(field);\n</pre>\n<hr>\n<a name=\"Function:newGChooser\"></a>\n<pre class=detailCode>\nGChooser newGChooser(void);\n</pre>\n<div class=detailHTML>\nCreates a chooser that initially contains no items, which are added\nusing the <code>addItem</code> function.  Assigning an action command\nto the chooser causes it to generate an action event whenever the\nuser selects an item.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nchooser = newGChooser();\n</pre>\n<hr>\n<a name=\"Function:addItem\"></a>\n<pre class=detailCode>\nvoid addItem(GChooser chooser, string item);\n</pre>\n<div class=detailHTML>\nAdds a new item consisting of the specified string.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\naddItem(chooser, item);\n</pre>\n<hr>\n<a name=\"Function:setSelectedItem\"></a>\n<pre class=detailCode>\nvoid setSelectedItem(GChooser chooser, string item);\n</pre>\n<div class=detailHTML>\nSets the chooser so that it shows the specified item.  If the item\ndoes not exist in the chooser, no change occurs.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetSelectedItem(chooser, item);\n</pre>\n<hr>\n<a name=\"Function:getSelectedItem\"></a>\n<pre class=detailCode>\nstring getSelectedItem(GChooser chooser);\n</pre>\n<div class=detailHTML>\nReturns the current item selected in the chooser.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nitem = getSelectedItem(chooser);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/gmath-h.html",
    "content": "<html>\n<head>\n<title>../gmath.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: gmath.h\n * -------------\n * This interface exports several functions for working with graphical\n * geometry along with the constants PI and E.\n */\n</scan>\n#ifndef _gmath_h\n#define _gmath_h\n\n<a name=\"Constant:PI\"><scan class=comment>/*\n * Constant: PI\n * ------------\n * The mathematical constant pi, which is the ratio of the circumference of\n * a circle to its diameter.\n */\n</scan>\n#define PI 3.14159265358979323846\n\n<a name=\"Constant:E\"><scan class=comment>/*\n * Constant: E\n * -----------\n * The mathematical constant e, which is the base of natural logarithms.\n */\n</scan>\n#define E 2.71828182845904523536\n\n<a name=\"Function:sinDegrees\"><scan class=comment>/*\n * Function: sinDegrees\n * Usage: sine = sinDegrees(angle);\n * --------------------------------\n * Returns the trigonometric sine of angle, which is expressed in degrees.\n */\n</scan>\ndouble sinDegrees(double angle);\n\n<a name=\"Function:cosDegrees\"><scan class=comment>/*\n * Function: cosDegrees\n * Usage: cosine = cosDegrees(angle);\n * ----------------------------------\n * Returns the trigonometric cosine of angle, which is expressed in\n * degrees.\n */\n</scan>\ndouble cosDegrees(double angle);\n\n<a name=\"Function:tanDegrees\"><scan class=comment>/*\n * Function: tanDegrees\n * Usage: tangent = tanDegrees(angle);\n * -----------------------------------\n * Returns the trigonometric tangent of angle, which is expressed in\n * degrees.\n */\n</scan>\ndouble tanDegrees(double angle);\n\n<a name=\"Function:toDegrees\"><scan class=comment>/*\n * Function: toDegrees\n * Usage: degrees = toDegrees(radians);\n * ------------------------------------\n * Converts an angle from radians to degrees.\n */\n</scan>\ndouble toDegrees(double radians);\n\n<a name=\"Function:toRadians\"><scan class=comment>/*\n * Function: toRadians\n * Usage: radians = toRadians(degrees);\n * ------------------------------------\n * Converts an angle from degrees to radians.\n */\n</scan>\ndouble toRadians(double degrees);\n\n<a name=\"Function:vectorDistance\"><scan class=comment>/*\n * Function: vectorDistance\n * Usage: r = vectorDistance(x, y);\n * --------------------------------\n * Computes the distance between the origin and the specified point.\n */\n</scan>\ndouble vectorDistance(double x, double y);\n\n<a name=\"Function:vectorAngle\"><scan class=comment>/*\n * Function: vectorAngle\n * Usage: angle = vectorAngle(x, y);\n * ---------------------------------\n * Returns the angle in degrees from the origin to the specified point. \n * This function takes account of the fact that the graphics coordinate\n * system is flipped in the y direction from the traditional Cartesian\n * plane.\n */\n</scan>\ndouble vectorAngle(double x, double y);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/gmath.html",
    "content": "<html>\n<head>\n<title>gmath.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><a href=\"gmath-h.html\"><code>gmath.h</code></a></h1>\nThis interface exports several functions for working with graphical\ngeometry along with the constants <code>PI</code> and <code>E</code>.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Constants</td></tr>\n<tr><td class=indexKey><nobr>PI&nbsp;</nobr></td><td class=indexSynopsis width=100%>The mathematical constant pi, which is the ratio of the circumference of a circle to its diameter.</td></tr>\n<tr><td class=indexKey><nobr>E&nbsp;</nobr></td><td class=indexSynopsis width=100%>The mathematical constant e, which is the base of natural logarithms.</td></tr>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:sinDegrees\">sinDegrees(angle)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the trigonometric sine of <code>angle</code>, which is expressed in degrees.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:cosDegrees\">cosDegrees(angle)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the trigonometric cosine of <code>angle</code>, which is expressed in degrees.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:tanDegrees\">tanDegrees(angle)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the trigonometric tangent of <code>angle</code>, which is expressed in degrees.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:toDegrees\">toDegrees(radians)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Converts an angle from radians to degrees.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:toRadians\">toRadians(degrees)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Converts an angle from degrees to radians.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:vectorDistance\">vectorDistance(x,&nbsp;y)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Computes the distance between the origin and the specified point.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:vectorAngle\">vectorAngle(x,&nbsp;y)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the angle in degrees from the origin to the specified point.</td></tr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:sinDegrees\"></a>\n<pre class=detailCode>\ndouble sinDegrees(double angle);\n</pre>\n<div class=detailHTML>\nReturns the trigonometric sine of <code>angle</code>, which is\nexpressed in degrees.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsine = sinDegrees(angle);\n</pre>\n<hr>\n<a name=\"Function:cosDegrees\"></a>\n<pre class=detailCode>\ndouble cosDegrees(double angle);\n</pre>\n<div class=detailHTML>\nReturns the trigonometric cosine of <code>angle</code>, which is\nexpressed in degrees.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncosine = cosDegrees(angle);\n</pre>\n<hr>\n<a name=\"Function:tanDegrees\"></a>\n<pre class=detailCode>\ndouble tanDegrees(double angle);\n</pre>\n<div class=detailHTML>\nReturns the trigonometric tangent of <code>angle</code>, which is\nexpressed in degrees.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ntangent = tanDegrees(angle);\n</pre>\n<hr>\n<a name=\"Function:toDegrees\"></a>\n<pre class=detailCode>\ndouble toDegrees(double radians);\n</pre>\n<div class=detailHTML>\nConverts an angle from radians to degrees.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndegrees = toDegrees(radians);\n</pre>\n<hr>\n<a name=\"Function:toRadians\"></a>\n<pre class=detailCode>\ndouble toRadians(double degrees);\n</pre>\n<div class=detailHTML>\nConverts an angle from degrees to radians.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nradians = toRadians(degrees);\n</pre>\n<hr>\n<a name=\"Function:vectorDistance\"></a>\n<pre class=detailCode>\ndouble vectorDistance(double x, double y);\n</pre>\n<div class=detailHTML>\nComputes the distance between the origin and the specified point.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nr = vectorDistance(x, y);\n</pre>\n<hr>\n<a name=\"Function:vectorAngle\"></a>\n<pre class=detailCode>\ndouble vectorAngle(double x, double y);\n</pre>\n<div class=detailHTML>\nReturns the angle in degrees from the origin to the specified point.\nThis function takes account of the fact that the graphics coordinate\nsystem is flipped in the <i>y</i> direction from the traditional\nCartesian plane.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nangle = vectorAngle(x, y);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/gobjects-h.html",
    "content": "<html>\n<head>\n<title>../gobjects.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: gobjects.h\n * ----------------\n * This interface exports a hierarchy of graphical shapes based on the\n * model developed for the ACM Java Graphics.\n */\n</scan>\n#ifndef _gobjects_h\n#define _gobjects_h\n\n#include \"cslib.h\"\n#include \"generic.h\"\n#include \"gtypes.h\"\n#include \"vector.h\"\n\n#ifndef _gwindow_h\n\ntypedef struct GWindowCDT *GWindow;\n\n<a name=\"Type:GObject\"><scan class=comment>/*\n * Type: GObject\n * -------------\n * This type represents an abstract type that unifies the set of all\n * graphics objects.  As with an abstract class in an object-oriented\n * language, it is not legal to create a GObject directly.  Graphical\n * objects are created instead by calling the constructor for one of the\n * concrete subclasses, as follows:\n *\n *\n * \n *     &gt;newGRect(x, y, width, height)\n * \n *     &gt;newG3DRect(x, y, width, height, raised)\n * \n *     &gt;newGRoundRect(x, y, width, height, corner)\n * \n *     &gt;newGOval(x, y, width, height)\n * \n *     &gt;newGLine(x0, y0, x1, y1)\n * \n *     &gt;newGArc(x, y, width, height, start, sweep)\n * \n *     &gt;newGImage(filename, x, y)\n * \n *     &gt;newGLabel(str, x, y)\n * \n *     &gt;newGPolygon\n * \n *     &gt;newCompound\n *\n *\n * Even though C has no object-oriented hierarchies, this interface defines\n * the types GArc, GCompound, GImage, GLabel, GLine, GOval, GPolygon,\n * GRect, GRoundRect, and G3DRect as synonyms for GObject.  Doing so helps\n * to clarify what types are expected by each function and simplifies the\n * process of converting code from languages that implement full\n * hierarchies.\n */\n</scan>\ntypedef struct GObjectCDT *GObject;\n\n#endif\n\n<a name=\"Function:freeGObject\"><scan class=comment>/*\n * Function: freeGObject\n * Usage: freeGObject(gobj);\n * -------------------------\n * Frees the memory associated with the object.  This operation is not\n * necessary for objects that have been installed in a window.  Adding a\n * GObject to a GWindow or a GCompound transfers ownership to the\n * container, which assumes responsibility for freeing the object.\n */\n</scan>\nvoid freeGObject(GObject gobj);\n\n<a name=\"Function:getX\"><scan class=comment>/*\n * Function: getX\n * Usage: x = getX(gobj);\n * ----------------------\n * Returns the x-coordinate of the object.\n */\n</scan>\ndouble getXGObject(GObject gobj);\n\n<a name=\"Function:getY\"><scan class=comment>/*\n * Function: getY\n * Usage: y = getY(gobj);\n * ----------------------\n * Returns the y-coordinate of the object.\n */\n</scan>\ndouble getYGObject(GObject gobj);\n\n<a name=\"Function:getLocation\"><scan class=comment>/*\n * Function: getLocation\n * Usage: pt = getLocation(gobj);\n * ------------------------------\n * Returns the location of this object as a GPoint.\n */\n</scan>\nGPoint getLocation(GObject gobj);\n\n<a name=\"Function:setLocation\"><scan class=comment>/*\n * Function: setLocation\n * Usage: setLocation(gobj, x, y);\n * -------------------------------\n * Sets the location of this object to the specified coordinates.\n */\n</scan>\nvoid setLocation(GObject gobj, double x, double y);\n\n<a name=\"Function:move\"><scan class=comment>/*\n * Function: move\n * Usage: move(gobj, dx, dy);\n * --------------------------\n * Moves the object on the screen using the displacements dx and dy.\n */\n</scan>\nvoid move(GObject gobj, double dx, double dy);\n\n<a name=\"Function:getWidth\"><scan class=comment>/*\n * Function: getWidth\n * Usage: width = getWidth(gobj);\n * ------------------------------\n * Returns the width of this object, which is defined to be the width of\n * the bounding box.\n */\n</scan>\ndouble getWidthGObject(GObject gobj);\n\n<a name=\"Function:getHeight\"><scan class=comment>/*\n * Function: getHeight\n * Usage: height = getHeight(gobj);\n * --------------------------------\n * Returns the height of this object, which is defined to be the height of\n * the bounding box.\n */\n</scan>\ndouble getHeightGObject(GObject gobj);\n\n<a name=\"Function:getSize\"><scan class=comment>/*\n * Function: getSize\n * Usage: size = getSize(gobj);\n * ----------------------------\n * Returns the size of the object as a GDimension.\n */\n</scan>\nGDimension getSize(GObject gobj);\n\n<a name=\"Function:getBounds\"><scan class=comment>/*\n * Function: getBounds\n * Usage: rect = getBounds(gobj);\n * ------------------------------\n * Returns the bounding box of this object, which is defined to be the\n * smallest rectangle that covers everything drawn by the figure.  The\n * coordinates of this rectangle do not necessarily match the location\n * returned by getLocation.  Given a GLabel object, for example,\n * getLocation returns the coordinates of the point on the baseline at\n * which the string begins; the getBounds method, by contrast, returns a\n * rectangle that covers the entire window area occupied by the string.\n */\n</scan>\nGRectangle getBounds(GObject gobj);\n\n<a name=\"Function:setColor\"><scan class=comment>/*\n * Function: setColor\n * Usage: setColor(gobj, color);\n * -----------------------------\n * Sets the color used to display this object.  The color string is usually\n * one of the predefined color names:\n *\n *    BLACK\n *    BLUE\n *    CYAN\n *    DARK_GRAY\n *    GRAY\n *    GREEN\n *    LIGHT_GRAY\n *    MAGENTA\n *    ORANGE\n *    PINK\n *    RED\n *    WHITE\n *    YELLOW\n *\n * The case of the individual letters in the color name is ignored, as are\n * spaces and underscores, so that the color DARK_GRAY can be written as\n * \"Dark Gray\".\n */\n</scan>\nvoid setColorGObject(GObject gobj, string color);\n\n<a name=\"Function:getColor\"><scan class=comment>/*\n * Function: getColor\n * Usage: color = getColor(gobj);\n * ------------------------------\n * Returns the color used to display this object.  This color is always\n * returned as a string in the form \"#rrggbb\", where rr, gg, and bb are the\n * red, green, and blue components of the color, expressed as two-digit\n * hexadecimal values.\n */\n</scan>\nstring getColorGObject(GObject gobj);\n\n<a name=\"Function:setVisible\"><scan class=comment>/*\n * Function: setVisible\n * Usage: setVisible(gobj, flag);\n * ------------------------------\n * Sets whether this object is visible.\n */\n</scan>\nvoid setVisibleGObject(GObject gobj, bool flag);\n\n<a name=\"Function:isVisible\"><scan class=comment>/*\n * Function: isVisible\n * Usage: if (isVisible(gobj)) . . .\n * ---------------------------------\n * Returns true if this object is visible.\n */\n</scan>\nbool isVisibleGObject(GObject gobj);\n\n<a name=\"Function:sendForward\"><scan class=comment>/*\n * Function: sendForward\n * Usage: sendForward(gobj);\n * -------------------------\n * Moves this object one step toward the front in the z dimension.  If it\n * was already at the front of the stack, nothing happens.\n */\n</scan>\nvoid sendForward(GObject gobj);\n\n<a name=\"Function:sendToFront\"><scan class=comment>/*\n * Function: sendToFront\n * Usage: sendToFront(gobj);\n * -------------------------\n * Moves this object to the front of the display in the z dimension.  By\n * moving it to the front, this object will appear to be on top of the\n * other graphical objects on the display and may hide any objects that are\n * further back.\n */\n</scan>\nvoid sendToFront(GObject gobj);\n\n<a name=\"Function:sendBackward\"><scan class=comment>/*\n * Function: sendBackward\n * Usage: sendBackward(gobj);\n * --------------------------\n * Moves this object one step toward the back in the z dimension.  If it\n * was already at the back of the stack, nothing happens.\n */\n</scan>\nvoid sendBackward(GObject gobj);\n\n<a name=\"Function:sendToBack\"><scan class=comment>/*\n * Function: sendToBack\n * Usage: sendToBack(gobj);\n * ------------------------\n * Moves this object to the back of the display in the z dimension.  By\n * moving it to the back, this object will appear to be behind the other\n * graphical objects on the display and may be obscured by other objects in\n * front.\n */\n</scan>\nvoid sendToBack(GObject gobj);\n\n<a name=\"Function:contains\"><scan class=comment>/*\n * Function: contains\n * Usage: if (contains(gobj, x, y)) . . .\n * --------------------------------------\n * Returns true if the specified point is inside the object.\n */\n</scan>\nbool containsGObject(GObject gobj, double x, double y);\n\n<a name=\"Function:getType\"><scan class=comment>/*\n * Function: getType\n * Usage: type = getType(gobj);\n * ----------------------------\n * Returns the subtype of the object as a string, as in \"GOval\" or \"GRect\".\n */\n</scan>\nstring getType(GObject gobj);\n\n<a name=\"Function:getParent\"><scan class=comment>/*\n * Function: getParent\n * Usage: parent = getParent(gobj);\n * --------------------------------\n * Returns a pointer to the GCompound that contains this object.  Every\n * GWindow is initialized to contain a single GCompound that is aligned\n * with the window.  Adding objects to the window adds them to that\n * GCompound, which means that every object you add to the window has a\n * parent.  Calling getParent on the top-level GCompound returns NULL.\n */\n</scan>\nGObject getParent(GObject gobj);\n\n<scan class=comment>/* Functions that apply to several types */</scan>\n\n<a name=\"Function:setSize\"><scan class=comment>/*\n * Function: setSize\n * Usage: setSize(gobj, width, height);\n * ------------------------------------\n * Changes the size of this object to the specified width and height.  This\n * method applies to the types GOval, GImage, and GRect (and its\n * subclasses).\n */\n</scan>\nvoid setSize(GObject gobj, double width, double height);\n\n<a name=\"Function:setBounds\"><scan class=comment>/*\n * Function: setBounds\n * Usage: setBounds(gobj, x, y, width, height);\n * --------------------------------------------\n * Changes the bounds of this object to the specified values.  This method\n * applies to the types GOval, GImage, and GRect (and its subclasses).\n */\n</scan>\nvoid setBounds(GObject gobj, double x, double y, double width, double height);\n\n<a name=\"Function:setFilled\"><scan class=comment>/*\n * Function: setFilled\n * Usage: setFilled(gobj, flag);\n * -----------------------------\n * Sets the fill status for gobj, where false is outlined and true is\n * filled.\n */\n</scan>\nvoid setFilled(GObject gobj, bool flag);\n\n<a name=\"Function:isFilled\"><scan class=comment>/*\n * Function: isFilled\n * Usage: if (isFilled(gobj)) . . .\n * --------------------------------\n * Returns true if gobj is filled.\n */\n</scan>\nbool isFilled(GObject gobj);\n\n<a name=\"Function:setFillColor\"><scan class=comment>/*\n * Function: setFillColor\n * Usage: setFillColor(gobj, color);\n * ---------------------------------\n * Sets the color used to display the filled region of this rectangle.\n */\n</scan>\nvoid setFillColor(GObject gobj, string color);\n\n<a name=\"Function:getFillColor\"><scan class=comment>/*\n * Function: getFillColor\n * Usage: color = getFillColor(gobj);\n * ----------------------------------\n * Returns the color used to display the filled region of gobj.  rectangle.\n * If none has been set, getFillColor returns the empty string.\n */\n</scan>\nstring getFillColor(GObject gobj);\n\n<a name=\"Type:GRect\"><scan class=comment>/*\n * Type: GRect\n * -----------\n * This type represents a graphical object whose appearance consists of a\n * rectangular box.  For example, the following code adds a filled, red,\n * 200x100 rectangle at the upper left corner of the graphics window:\n *\n *    main() {\n *       GWindow gw = newGWindow(500, 300);\n *       printf(\"This program draws a red rectangle at (0, 0).\\n\")\n *       GRect rect = newGRect(0, 0, 200, 100);\n *       setFilled(rect, true);\n *       setColor(rect, \"RED\");\n *       add(gw, rect);\n *    }\n */\n</scan>\ntypedef GObject GRect;\n\n<a name=\"Function:newGRect\"><scan class=comment>/*\n * Function: newGRect\n * Usage: rect = newGRect(x, y, width, height);\n * --------------------------------------------\n * Creates a new GRect with the specified bounds.  By default, the\n * rectangle is unfilled.\n */\n</scan>\nGRect newGRect(double x, double y, double width, double height);\n\n<a name=\"Type:GRoundRect\"><scan class=comment>/*\n * Type: GRoundRect\n * ----------------\n * This type represents a rectangular box with rounded corners.\n */\n</scan>\ntypedef GRect GRoundRect;\n\n<a name=\"Function:newGRoundRect\"><scan class=comment>/*\n * Function: newGRoundRect\n * Usage: GRoundRect rect = newGRoundRect(x, y, width, height, corner);\n * --------------------------------------------------------------------\n * Creates a new GRoundRect with the specified dimensions.  The corner\n * parameter specifies the diameter of the arc forming the corner.\n */\n</scan>\nGRoundRect newGRoundRect(double x, double y, double width, double height,\n                                             double corner);\n\n<a name=\"Type:G3DRect\"><scan class=comment>/*\n * Type: G3DRect\n * -------------\n * This type represents a rectangular box that can appear raised or\n * lowered.\n */\n</scan>\ntypedef GRect G3DRect;\n\n<a name=\"Function:newG3DRect\"><scan class=comment>/*\n * Function: newG3DRect\n * Usage: G3DRect rect = newG3DRect(x, y, width, height, raised);\n * --------------------------------------------------------------\n * Creates a new G3DRect with the specified dimensions.  The corner\n * parameter specifies whether this rectangle should appear raised.\n */\n</scan>\nG3DRect newG3DRect(double x, double y, double width, double height,\n                                       bool raised);\n<a name=\"Function:setRaised\"><scan class=comment>/*\n * Function: setRaised\n * Usage: setRaised(rect, raised);\n * -------------------------------\n * Indicates whether this object appears raised.\n */\n</scan>\nvoid setRaised(G3DRect rect, bool raised);\n\n<a name=\"Function:isRaised\"><scan class=comment>/*\n * Function: isRaised\n * Usage: if (isRaised(rect)) ...\n * ------------------------------\n * Returns true if this object appears raised.\n */\n</scan>\nbool isRaised(G3DRect rect);\n\n<a name=\"Type:GOval\"><scan class=comment>/*\n * Type: GOval\n * -----------\n * This type represents an oval inscribed in a rectangular box.  For\n * example, the following code displays a filled green oval inscribed in\n * the graphics window:\n *\n *    main() {\n *       GWindow gw = newGWindow(500, 300);\n *       printf(\"This program draws a green oval filling the window.\\n\");\n *       GOval oval = newGOval(getWidth(gw), getHeight(gw));\n *       setFilled(oval, true);\n *       setColor(oval, \"GREEN\");\n *       add(gw, oval);\n *    }\n */\n</scan>\ntypedef GObject GOval;\n\n<a name=\"Function:newGOval\"><scan class=comment>/*\n * Function: newGOval\n * Usage: oval = newGOval(x, y, width, height);\n * --------------------------------------------\n * Creates a new GOval with the specified bounds.  By default, the oval is\n * unfilled.\n */\n</scan>\nGObject newGOval(double x, double y, double width, double height);\n\n<a name=\"Type:GLine\"><scan class=comment>/*\n * Type: GLine\n * -----------\n * This type represents a line segment.  For example, the following code\n * adds lines that mark the diagonals of the graphics window:\n *\n *    main() {\n *       GWindow gw = newGWindow(500, 300);\n *       printf(\"This program draws the diagonals on the window.\\n\");\n *       add(gw, newGLine(0, 0, getWidth(gw), getHeight(gw)));\n *       add(gw, newGLine(0, getHeight(gw), getWidth(gw), 0));\n *    }\n */\n</scan>\ntypedef GObject GLine;\n\n<a name=\"Function:newGLine\"><scan class=comment>/*\n * Function: newGLine\n * Usage: line = newGLine(x0, y0, x1, y1);\n * ---------------------------------------\n * Creates a new graphical line connecting the points (x0, y0) and\n * (x1, y1).\n */\n</scan>\nGObject newGLine(double x0, double y0, double x1, double y1);\n\n<a name=\"Function:setStartPoint\"><scan class=comment>/*\n * Function: setStartPoint\n * Usage: setStartPoint(gline, x, y);\n * ----------------------------------\n * Sets the start point for the line to (x, y), leaving the end point\n * unchanged.  This method is therefore different from setLocation, which\n * moves both components of the line segment.\n */\n</scan>\nvoid setStartPoint(GLine line, double x, double y);\n\n<a name=\"Function:setEndPoint\"><scan class=comment>/*\n * Function: setEndPoint\n * Usage: setEndPoint(line, x, y);\n * -------------------------------\n * Sets the end point for the line to (x, y), leaving the start point\n * unchanged.\n */\n</scan>\nvoid setEndPoint(GLine line, double x, double y);\n\n<a name=\"Function:getStartPoint\"><scan class=comment>/*\n * Function: getStartPoint\n * Usage: pt = getStartPoint(gobj);\n * --------------------------------\n * Returns the point at which a GLine or GArc starts.\n */\n</scan>\nGPoint getStartPoint(GObject gobj);\n\n<a name=\"Function:getEndPoint\"><scan class=comment>/*\n * Function: getEndPoint\n * Usage: pt = getEndPoint(gobj);\n * ------------------------------\n * Returns the point at which a GLine or GArc ends.\n */\n</scan>\nGPoint getEndPoint(GObject gobj);\n\n<a name=\"Type:GArc\"><scan class=comment>/*\n * Type: GArc\n * ----------\n * This type represents an elliptical arc.  The arc is specified by the\n * following parameters:\n *\n * \n *   The coordinates of the bounding rectangle (x,\n *       y, width, height)\n *   The angle at which the arc starts (start)\n *   The number of degrees that the arc covers (sweep)\n *\n * All angles in a GArc description are measured in degrees moving\n * counterclockwise from the +x axis.  Negative values for either start or\n * sweep indicate motion in a clockwise direction.\n */\n</scan>\ntypedef GObject GArc;\n\n<a name=\"Function:newGArc\"><scan class=comment>/*\n * Function: newGArc\n * Usage: arc = newGArc(x, y, width, height, start, sweep);\n * --------------------------------------------------------\n * Creates a new GArc consisting of an elliptical arc.\n */\n</scan>\nGArc newGArc(double x, double y, double width, double height,\n                                 double start, double sweep);\n\n<a name=\"Function:setStartAngle\"><scan class=comment>/*\n * Function: setStartAngle\n * Usage: setStartAngle(arc, start);\n * ---------------------------------\n * Sets the starting angle for this GArc object.\n */\n</scan>\nvoid setStartAngle(GArc arc, double start);\n\n<a name=\"Function:getStartAngle\"><scan class=comment>/*\n * Function: getStartAngle\n * Usage: angle = getStartAngle(arc);\n * ----------------------------------\n * Returns the starting angle for this GArc object.\n */\n</scan>\ndouble getStartAngle(GArc arc);\n\n<a name=\"Function:setSweepAngle\"><scan class=comment>/*\n * Function: setSweepAngle\n * Usage: setSweepAngle(arc, start);\n * ---------------------------------\n * Sets the sweep angle for this GArc object.\n */\n</scan>\nvoid setSweepAngle(GArc arc, double start);\n\n<a name=\"Function:getSweepAngle\"><scan class=comment>/*\n * Function: getSweepAngle\n * Usage: angle = getSweepAngle(arc);\n * ----------------------------------\n * Returns the sweep angle for this GArc object.\n */\n</scan>\ndouble getSweepAngle(GArc arc);\n\n<a name=\"Function:setFrameRectangle\"><scan class=comment>/*\n * Function: setFrameRectangle\n * Usage: setFrameRectangle(arc, x, y, width, height);\n * ---------------------------------------------------\n * Changes the boundaries of the rectangle used to frame the arc.\n */\n</scan>\nvoid setFrameRectangle(GArc garc, double x, double y,\n                                  double width, double height);\n\n<a name=\"Function:getFrameRectangle\"><scan class=comment>/*\n * Function: getFrameRectangle\n * Usage: rect = getFrameRectangle(arc);\n * -------------------------------------\n * Returns the boundaries of the rectangle used to frame the arc.\n */\n</scan>\nGRectangle getFrameRectangle(GArc arc);\n\n<a name=\"Type:GLabel\"><scan class=comment>/*\n * Type: GLabel\n * ------------\n * This subtype represents a text string.  For example, the following code\n * adds a GLabel containing \"hello, world\" to the center of the window:\n *\n *    main() {\n *       GWindow gw;\n *       GLabel label;\n *       double x, y;\n *\n *       printf(\"This program draws the 'hello, world' message.\\n\");\n *       gw = newGWindow(600, 400);\n *       label = newGLabel(\"hello, world\");\n *       setFont(label, \"SansSerif-18\");\n *       x = (getWidth(gw) - getWidth(label)) / 2;\n *       y = (getHeight(gw) + getFontAscent(label)) / 2;\n *       setLocation(label, x, y);\n *       add(gw, label);\n *    }\n *\n * Controlling the appearance and positioning of a GLabel depends on\n * understanding the following terms:\n *\n * \n *   The baseline is the horizontal line on which the\n *       characters rest.\n *   The origin is the point on the baseline at which\n *       the label begins.\n *   The height is the distance that separate two\n *       successive lines.\n *   The ascent is the maximum distance a character\n *       in this font extends above the baseline.\n *   The descent is the maximum distance a character\n *       in this font extends below the baseline.\n */\n</scan>\ntypedef GObject GLabel;\n\n<a name=\"Function:newGLabel\"><scan class=comment>/*\n * Function: newGLabel\n * Usage: label = newGLabel(str);\n * ------------------------------\n * Creates a GLabel object containing the specified string, positioned with\n * an origin of (0, 0).\n */\n</scan>\nGLabel newGLabel(string str);\n\n<a name=\"Function:setFont\"><scan class=comment>/*\n * Function: setFont\n * Usage: setFont(label, font);\n * ----------------------------\n * Changes the font used to display the GLabel as specified by the string\n * font, which has the following format:\n *\n *    family-style-size\n *\n * where both style and size are optional.  If any of these elements are\n * missing or specified as an asterisk, the existing value is retained.\n */\n</scan>\nvoid setFont(GLabel label, string font);\n\n<a name=\"Function:getFont\"><scan class=comment>/*\n * Function: getFont\n * Usage: font = getFont(label);\n * -----------------------------\n * Returns the current font for the GLabel.\n */\n</scan>\nstring getFont(GLabel label);\n\n<a name=\"Function:setLabel\"><scan class=comment>/*\n * Function: setLabel\n * Usage: setLabel(label, str);\n * ----------------------------\n * Changes the string stored within the GLabel object, so that a new text\n * string appears on the display.\n */\n</scan>\nvoid setLabel(GLabel label, string str);\n\n<a name=\"Function:getLabel\"><scan class=comment>/*\n * Function: getLabel\n * Usage: str = getLabel(label);\n * -----------------------------\n * Returns the string displayed by this object.\n */\n</scan>\nstring getLabel(GLabel label);\n\n<a name=\"Function:getFontAscent\"><scan class=comment>/*\n * Function: getFontAscent\n * Usage: ascent = getFontAscent(label);\n * -------------------------------------\n * Returns the maximum distance strings in this font extend above the\n * baseline.\n */\n</scan>\ndouble getFontAscent(GLabel label);\n\n<a name=\"Function:getFontDescent\"><scan class=comment>/*\n * Function: getFontDescent\n * Usage: descent = getFontDescent(label);\n * ---------------------------------------\n * Returns the maximum distance strings in this font descend below the\n * baseline.\n */\n</scan>\ndouble getFontDescent(GLabel label);\n\n<a name=\"Type:GImage\"><scan class=comment>/*\n * Type: GImage\n * ------------\n * This subtype represents an image from a file.  For example, the\n * following code adds a GImage containing the Stanford tree at the center\n * of the window, assuming that the image file StanfordTree.png exists,\n * either in the current directory or an images subdirectory:\n *\n *    main() {\n *       printf(\"This program draws the Stanford tree.\\n\");\n *       GWindow gw = newGWindow(600, 400);\n *       GImage tree = newGImage(\"StanfordTree.png\");\n *       double x = (getWidth(gw) - getWidth(tree)) / 2;\n *       double y = (getHeight(gw) - getHeight(tree)) / 2;\n *       add(gw, tree, x, y);\n *    }\n */\n</scan>\ntypedef GObject GImage;\n\n<a name=\"Function:newGImage\"><scan class=comment>/*\n * Function: newGImage\n * Usage: GImage image = newGImage(filename);\n * ------------------------------------------\n * Constructs a new image by loading the image from the specified file,\n * which is either in the current directory or a subdirectory named images.\n * The upper left corner of the image is positioned at the origin.\n */\n</scan>\nGImage newGImage(string filename);\n\n<a name=\"Type:GPolygon\"><scan class=comment>/*\n * Type: GPolygon\n * --------------\n * This subtype represents a polygon bounded by line segments.  The\n * newGPolygon function creates an empty polygon.  To complete the figure,\n * you need to add vertices to the polygon using the functions addVertex,\n * addEdge, and addPolarEdge.  As an example, the following code adds a\n * filled red octagon to the center of the window:\n *\n *    main() {\n *       GWindow gw;\n *       GPolygon stopSign;\n *       double edge;\n *       int i;\n *\n *       printf(\"This program draws a red octagon.\\n\");\n *       gw = newGWindow(600, 400);\n *       edge = 75;\n *       stopSign = newGPolygon();\n *       addVertex(stopSign, -edge / 2, edge / 2 + edge / sqrt(2.0));\n *       for (i = 0; i &lt; 8; i++) {\n *          addPolarEdge(stopSign, edge, 45 * i);\n *       }\n *       setFilled(stopSign, true);\n *       setColor(stopSign, \"RED\");\n *       add(gw, stopSign, getWidth(gw) / 2, getHeight(gw) / 2);\n *    }\n */\n</scan>\ntypedef GObject GPolygon;\n\n<a name=\"Function:newGPolygon\"><scan class=comment>/*\n * Function: newGPolygon\n * Usage: poly = newGPolygon();\n * ----------------------------\n * Constructs a new empty polygon.\n */\n</scan>\nGPolygon newGPolygon(void);\n\n<a name=\"Function:addVertex\"><scan class=comment>/*\n * Function: addVertex\n * Usage: addVertex(poly, x, y);\n * -----------------------------\n * Adds a vertex at (x, y) relative to the polygon origin.\n */\n</scan>\nvoid addVertex(GPolygon poly, double x, double y);\n\n<a name=\"Function:addEdge\"><scan class=comment>/*\n * Function: addEdge\n * Usage: addEdge(poly, dx, dy);\n * -----------------------------\n * Adds an edge to the polygon whose components are given by the\n * displacements dx and dy from the last vertex.\n */\n</scan>\nvoid addEdge(GPolygon poly, double dx, double dy);\n\n<a name=\"Function:addPolarEdge\"><scan class=comment>/*\n * Function: addPolarEdge\n * Usage: addPolarEdge(poly, r, theta);\n * ------------------------------------\n * Adds an edge to the polygon specified in polar coordinates.  The length\n * of the edge is given by r, and the edge extends in direction theta,\n * measured in degrees counterclockwise from the +x axis.\n */\n</scan>\nvoid addPolarEdge(GPolygon poly, double r, double theta);\n\n<a name=\"Function:getVertices\"><scan class=comment>/*\n * Function: getVertices\n * Usage: vec = getVertices(poly);\n * -------------------------------\n * Returns a vector whose elements are pointers to the GPoint values that\n * represent the vertices.  This vector is shared with the internal data\n * structure of the GPolygon and must not be freed by the client.\n */\n</scan>\nVector getVertices(GPolygon poly);\n\n<a name=\"Type:GCompound\"><scan class=comment>/*\n * Type: GCompound\n * ---------------\n * This subtype consists of a collection of other graphical objects.  Once\n * assembled, the internal objects can be manipulated as a unit.  The\n * GCompound keeps track of its own position, and all items within it are\n * drawn relative to that location.\n */\n</scan>\ntypedef GObject GCompound;\n\n<a name=\"Function:newGCompound\"><scan class=comment>/*\n * Function: newGCompound\n * Usage: comp = newGCompound();\n * -----------------------------\n * Creates a new graphical compound with no internal components.\n */\n</scan>\nGObject newGCompound(void);\n\n<a name=\"Function:add\"><scan class=comment>/*\n * Function: add\n * Usage: add(compound, gobj);\n * ---------------------------\n * Adds the object to the compound.\n */\n</scan>\nvoid addGCompound(GCompound compound, GObject gobj);\n\n<a name=\"Function:add\"><scan class=comment>/*\n * Function: add\n * Usage: add(compound, gobj);\n * ---------------------------\n * Removes the object from the compound.\n */\n</scan>\nvoid removeGCompound(GCompound compound, GObject gobj);\n\n<a name=\"Friend function:getGObjectCompound\"><scan class=comment>/*\n * Friend function: getGObjectCompound\n * Usage: gobj = getGObjectCompound(GCompound compound, double x, double y);\n * -------------------------------------------------------------------------\n * Returns the topmost object covering x and y, or NULL if no such object\n * exists.\n */\n</scan>\nGObject getGObjectCompound(GCompound compound, double x, double y);\n\n<a name=\"Friend type:ObjectTypeBits\"><scan class=comment>/*\n * Friend type: ObjectTypeBits\n * ---------------------------\n * This enumeration identifies a GObject type in a way that simplifies\n * checking whether a particular function is legal on that object.\n */\n</scan>\ntypedef enum {\n   GARC = 1&lt;&lt;0,\n   GCOMPOUND = 1&lt;&lt;1,\n   GIMAGE = 1&lt;&lt;2,\n   GLABEL = 1&lt;&lt;3,\n   GLINE = 1&lt;&lt;4,\n   GOVAL = 1&lt;&lt;5,\n   GPOLYGON = 1&lt;&lt;6,\n   GRECT = 1&lt;&lt;7,\n   G3DRECT = 1&lt;&lt;8,\n   GROUNDRECT = 1&lt;&lt;9,\n   GINTERACTOR = 0x1F&lt;&lt;10,\n   GBUTTON = 1&lt;&lt;10,\n   GCHECKBOX = 1&lt;&lt;11,\n   GCHOOSER = 1&lt;&lt;12,\n   GSLIDER = 1&lt;&lt;13,\n   GTEXTFIELD = 1&lt;&lt;14\n} GObjectTypeBits;\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/gobjects.html",
    "content": "<html>\n<head>\n<title>gobjects.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><a href=\"gobjects-h.html\"><code>gobjects.h</code></a></h1>\nThis interface exports a hierarchy of graphical shapes based on\nthe model developed for the ACM Java Graphics.\nThese subclasses form a hierarchy that looks like this:\n\n<p><div class=inset>\n<img src=\"images/GObjectHierarchy.png\"\n     width=768 usemap=\"#GObjectMap\" alt=\"GObjectHierarchy\">\n</div>\n<map name=\"GObjectMap\">\n  <area shape=rect coords=\"341,0,427,27\" href=\"#Type:GObject\"\n        alt=\"GObject\">\n  <area shape=rect coords=\"0,177,86,204\" href=\"#Type:GArc\"\n        alt=\"GArc\">\n  <area shape=rect coords=\"98,177,184,204\" href=\"#Type:GImage\"\n        alt=\"GImage\">\n  <area shape=rect coords=\"195,177,281,204\" href=\"#Type:GLabel\"\n        alt=\"GLabel\">\n  <area shape=rect coords=\"293,177,379,204\" href=\"#Type:GLine\"\n        alt=\"GLine\">\n  <area shape=rect coords=\"390,177,476,204\" href=\"#Type:GOval\"\n        alt=\"GOval\">\n  <area shape=rect coords=\"488,177,574,204\" href=\"#Type:GRect\"\n        alt=\"GRect\">\n  <area shape=rect coords=\"585,177,671,204\" href=\"#Type:GPolygon\"\n        alt=\"GPolygon\">\n  <area shape=rect coords=\"683,177,769,204\" href=\"#Type:GCompound\"\n        alt=\"GCompound\">\n  <area shape=rect coords=\"439,270,525,297\" href=\"G3DRect-class.html\"\n        alt=\"G3DRect\">\n  <area shape=rect coords=\"536,270,622,297\" href=\"GRoundRect-class.html\"\n        alt=\"GRoundRect\">\n</map>\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Types</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:GObject\">GObject</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This type represents an abstract type that unifies the set of all graphics objects.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:GRect\">GRect</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This type represents a graphical object whose appearance consists of a rectangular box.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:GRoundRect\">GRoundRect</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This type represents a rectangular box with rounded corners.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:G3DRect\">G3DRect</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This type represents a rectangular box that can appear raised or lowered.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:GOval\">GOval</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This type represents an oval inscribed in a rectangular box.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:GLine\">GLine</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This type represents a line segment.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:GArc\">GArc</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This type represents an elliptical arc.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:GLabel\">GLabel</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This subtype represents a text string.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:GImage\">GImage</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This subtype represents an image from a file.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:GPolygon\">GPolygon</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This subtype represents a polygon bounded by line segments.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:GCompound\">GCompound</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This subtype consists of a collection of other graphical objects.</td></tr>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:freeGObject\">freeGObject(gobj)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Frees the memory associated with the object.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getX\">getX(gobj)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the <i>x</i>-coordinate of the object.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getY\">getY(gobj)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the <i>y</i>-coordinate of the object.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getLocation\">getLocation(gobj)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the location of this object as a <code>GPoint</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setLocation\">setLocation(gobj,&nbsp;x,&nbsp;y)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the location of this object to the specified coordinates.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:move\">move(gobj,&nbsp;dx,&nbsp;dy)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Moves the object on the screen using the displacements <code>dx</code> and <code>dy</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getWidth\">getWidth(gobj)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the width of this object, which is defined to be the width of the bounding box.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getHeight\">getHeight(gobj)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the height of this object, which is defined to be the height of the bounding box.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getSize\">getSize(gobj)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the size of the object as a <code>GDimension</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getBounds\">getBounds(gobj)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the bounding box of this object, which is defined to be the smallest rectangle that covers everything drawn by the figure.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setColor\">setColor(gobj,&nbsp;color)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the color used to display this object.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getColor\">getColor(gobj)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the color used to display this object.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setVisible\">setVisible(gobj,&nbsp;flag)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets whether this object is visible.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:isVisible\">isVisible(gobj)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if this object is visible.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:sendForward\">sendForward(gobj)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Moves this object one step toward the front in the <i>z</i> dimension.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:sendToFront\">sendToFront(gobj)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Moves this object to the front of the display in the <i>z</i> dimension.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:sendBackward\">sendBackward(gobj)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Moves this object one step toward the back in the <i>z</i> dimension.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:sendToBack\">sendToBack(gobj)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Moves this object to the back of the display in the <i>z</i> dimension.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:contains\">contains(gobj,&nbsp;x,&nbsp;y)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the specified point is inside the object.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getType\">getType(gobj)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the subtype of the object as a string, as in <code>\"GOval\"</code> or <code>\"GRect\"</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getParent\">getParent(gobj)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a pointer to the <code>GCompound</code> that contains this object.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setSize\">setSize(gobj,&nbsp;width,&nbsp;height)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Changes the size of this object to the specified width and height.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setBounds\">setBounds(gobj,&nbsp;x,&nbsp;y,&nbsp;width,&nbsp;height)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Changes the bounds of this object to the specified values.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setFilled\">setFilled(gobj,&nbsp;flag)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the fill status for <code>gobj</code>, where <code>false</code> is outlined and <code>true</code> is filled.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:isFilled\">isFilled(gobj)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if <code>gobj</code> is filled.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setFillColor\">setFillColor(gobj,&nbsp;color)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the color used to display the filled region of this rectangle.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getFillColor\">getFillColor(gobj)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the color used to display the filled region of <code>gobj</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newGRect\">newGRect(x,&nbsp;y,&nbsp;width,&nbsp;height)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a new <code>GRect</code> with the specified bounds.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newGRoundRect\">newGRoundRect(x,&nbsp;y,&nbsp;width,&nbsp;height,&nbsp;corner)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a new <code>GRoundRect</code> with the specified dimensions.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newG3DRect\">newG3DRect(x,&nbsp;y,&nbsp;width,&nbsp;height,&nbsp;raised)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a new <code>G3DRect</code> with the specified dimensions.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setRaised\">setRaised(rect,&nbsp;raised)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Indicates whether this object appears raised.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:isRaised\">isRaised(rect)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if this object appears raised.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newGOval\">newGOval(x,&nbsp;y,&nbsp;width,&nbsp;height)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a new <code>GOval</code> with the specified bounds.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newGLine\">newGLine(x0,&nbsp;y0,&nbsp;x1,&nbsp;y1)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a new graphical line connecting the points (<code>x0</code>,&nbsp;<code>y0</code>) and (<code>x1</code>,&nbsp;<code>y1</code>).</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setStartPoint\">setStartPoint(gline,&nbsp;x,&nbsp;y)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the start point for the line to (<code>x</code>,&nbsp;<code>y</code>), leaving the end point unchanged.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setEndPoint\">setEndPoint(line,&nbsp;x,&nbsp;y)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the end point for the line to (<code>x</code>,&nbsp;<code>y</code>), leaving the start point unchanged.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getStartPoint\">getStartPoint(gobj)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the point at which a <code>GLine</code> or <code>GArc</code> starts.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getEndPoint\">getEndPoint(gobj)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the point at which a <code>GLine</code> or <code>GArc</code> ends.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newGArc\">newGArc(x,&nbsp;y,&nbsp;width,&nbsp;height,&nbsp;start,&nbsp;sweep)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a new <code>GArc</code> consisting of an elliptical arc.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setStartAngle\">setStartAngle(arc,&nbsp;start)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the starting angle for this <code>GArc</code> object.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getStartAngle\">getStartAngle(arc)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the starting angle for this <code>GArc</code> object.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setSweepAngle\">setSweepAngle(arc,&nbsp;start)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the sweep angle for this <code>GArc</code> object.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getSweepAngle\">getSweepAngle(arc)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the sweep angle for this <code>GArc</code> object.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setFrameRectangle\">setFrameRectangle(arc,&nbsp;x,&nbsp;y,&nbsp;width,&nbsp;height)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Changes the boundaries of the rectangle used to frame the arc.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getFrameRectangle\">getFrameRectangle(arc)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the boundaries of the rectangle used to frame the arc.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newGLabel\">newGLabel(str)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a <code>GLabel</code> object containing the specified string, positioned with an origin of (0, 0).</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setFont\">setFont(label,&nbsp;font)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Changes the font used to display the <code>GLabel</code> as specified by the string <code>font</code>, which has the following format:  <pre>    family-style-size </pre>  where both <code>style</code> and <code>size</code> are optional.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getFont\">getFont(label)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the current font for the <code>GLabel</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setLabel\">setLabel(label,&nbsp;str)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Changes the string stored within the <code>GLabel</code> object, so that a new text string appears on the display.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getLabel\">getLabel(label)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the string displayed by this object.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getFontAscent\">getFontAscent(label)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the maximum distance strings in this font extend above the baseline.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getFontDescent\">getFontDescent(label)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the maximum distance strings in this font descend below the baseline.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newGImage\">newGImage(filename)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Constructs a new image by loading the image from the specified file, which is either in the current directory or a subdirectory named <code>images</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newGPolygon\">newGPolygon()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Constructs a new empty polygon.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:addVertex\">addVertex(poly,&nbsp;x,&nbsp;y)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Adds a vertex at (<code>x</code>, <code>y</code>) relative to the polygon origin.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:addEdge\">addEdge(poly,&nbsp;dx,&nbsp;dy)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Adds an edge to the polygon whose components are given by the displacements <code>dx</code> and <code>dy</code> from the last vertex.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:addPolarEdge\">addPolarEdge(poly,&nbsp;r,&nbsp;theta)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Adds an edge to the polygon specified in polar coordinates.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getVertices\">getVertices(poly)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a vector whose elements are pointers to the GPoint values that represent the vertices.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newGCompound\">newGCompound()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a new graphical compound with no internal components.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:add\">add(compound,&nbsp;gobj)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Adds the object to the compound.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:add\">add(compound,&nbsp;gobj)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Removes the object from the compound.</td></tr>\n</table>\n<h2>Type detail</h2>\n<hr>\n<a name=\"Type:GObject\"></a>\n<pre class=detailCode>\ntypedef struct GObjectCDT *GObject;\n</pre>\n<div class=detailHTML>\nThis type represents an abstract type that unifies the set of all\ngraphics objects.  As with an abstract class in an object-oriented\nlanguage, it is not legal to create a <code>GObject</code> directly.\nGraphical objects are created instead by calling the constructor for\none of the concrete subclasses, as follows:\n\n<ul>\n<li><a href=\"#Function:newGRect\"\n    ><code>newGRect(x, y, width, height)</code></a>\n<li><a href=\"#Function:newG3DRect\"\n    ><code>newG3DRect(x, y, width, height, raised)</code></a>\n<li><a href=\"#Function:newGRoundRect\"\n    ><code>newGRoundRect(x, y, width, height, corner)</code></a>\n<li><a href=\"#Function:newGOval\"\n    ><code>newGOval(x, y, width, height)</code></a>\n<li><a href=\"#Function:newGLine\"\n    ><code>newGLine(x0, y0, x1, y1)</code></a>\n<li><a href=\"#Function:newGArc\"\n    ><code>newGArc(x, y, width, height, start, sweep)</code></a>\n<li><a href=\"#Function:newGImage\"\n    ><code>newGImage(filename, x, y)</code></a>\n<li><a href=\"#Function:newGLabel\"\n    ><code>newGLabel(str, x, y)</code></a>\n<li><a href=\"#Function:newGPolygon\"\n    ><code>newGPolygon</code></a>\n<li><a href=\"#Function:newGCompound\"\n    ><code>newCompound</code></a>\n</ul>\n\n<p>Even though C has no object-oriented hierarchies, this interface\ndefines the types <code>GArc</code>, <code>GCompound</code>,\n<code>GImage</code>, <code>GLabel</code>, <code>GLine</code>,\n<code>GOval</code>, <code>GPolygon</code>, <code>GRect</code>,\n<code>GRoundRect</code>, and <code>G3DRect</code> as synonyms\nfor <code>GObject</code>.  Doing so helps to clarify what types\nare expected by each function and simplifies the process of\nconverting code from languages that implement full hierarchies.\n</div>\n<hr>\n<a name=\"Type:GRect\"></a>\n<pre class=detailCode>\ntypedef GObject GRect;\n</pre>\n<div class=detailHTML>\nThis type represents a graphical object whose appearance consists of a\nrectangular box.  For example, the following code adds a filled, red,\n<nobr>200<font class=sansserif size=-1>x</font>100</nobr> rectangle\nat the upper left corner of the graphics window:\n\n<pre>\n   main() {\n      GWindow gw = newGWindow(500, 300);\n      printf(\"This program draws a red rectangle at (0, 0).\\n\")\n      GRect rect = newGRect(0, 0, 200, 100);\n      setFilled(rect, true);\n      setColor(rect, \"RED\");\n      add(gw, rect);\n   }\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncolor = getFillColor(gobj);\n</pre>\n<hr>\n<a name=\"Type:GRoundRect\"></a>\n<pre class=detailCode>\ntypedef GRect GRoundRect;\n</pre>\n<div class=detailHTML>\nThis type represents a rectangular box with rounded corners.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nrect = newGRect(x, y, width, height);\n</pre>\n<hr>\n<a name=\"Type:G3DRect\"></a>\n<pre class=detailCode>\ntypedef GRect G3DRect;\n</pre>\n<div class=detailHTML>\nThis type represents a rectangular box that can appear raised or lowered.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGRoundRect rect = newGRoundRect(x, y, width, height, corner);\n</pre>\n<hr>\n<a name=\"Type:GOval\"></a>\n<pre class=detailCode>\ntypedef GObject GOval;\n</pre>\n<div class=detailHTML>\nThis type represents an oval inscribed in a rectangular box.\nFor example, the following code displays a filled green oval\ninscribed in the graphics window:\n\n<pre>\n   main() {\n      GWindow gw = newGWindow(500, 300);\n      printf(\"This program draws a green oval filling the window.\\n\");\n      GOval oval = newGOval(getWidth(gw), getHeight(gw));\n      setFilled(oval, true);\n      setColor(oval, \"GREEN\");\n      add(gw, oval);\n   }\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (isRaised(rect)) ...\n</pre>\n<hr>\n<a name=\"Type:GLine\"></a>\n<pre class=detailCode>\ntypedef GObject GLine;\n</pre>\n<div class=detailHTML>\nThis type represents a line segment.  For example, the following code\nadds lines that mark the diagonals of the graphics window:\n\n<pre>\n   main() {\n      GWindow gw = newGWindow(500, 300);\n      printf(\"This program draws the diagonals on the window.\\n\");\n      add(gw, newGLine(0, 0, getWidth(gw), getHeight(gw)));\n      add(gw, newGLine(0, getHeight(gw), getWidth(gw), 0));\n   }\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\noval = newGOval(x, y, width, height);\n</pre>\n<hr>\n<a name=\"Type:GArc\"></a>\n<pre class=detailCode>\ntypedef GObject GArc;\n</pre>\n<div class=detailHTML>\nThis type represents an elliptical arc.  The arc is specified by the\nfollowing parameters:\n\n<p><ul>\n  <li>The coordinates of the bounding rectangle (<code>x</code>,\n      <code>y</code>, <code>width</code>, <code>height</code>)\n  <li>The angle at which the arc starts (<code>start</code>)\n  <li>The number of degrees that the arc covers (<code>sweep</code>)\n</ul>\n\n<p>All angles in a <code>GArc</code> description are measured in\ndegrees moving counterclockwise from the +<i>x</i> axis.  Negative\nvalues for either <code>start</code> or <code>sweep</code> indicate\nmotion in a clockwise direction.\n<p>The following diagram illustrates the interpretation of these parameters\nfor the arc shown in <font color=red>red</font>:\n\n<p><div class=inset>\n<img src=\"images/GArcGeometry.png\" width=260 alt=\"GArcGeometry\">\n</div>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\npt = getEndPoint(gobj);\n</pre>\n<hr>\n<a name=\"Type:GLabel\"></a>\n<pre class=detailCode>\ntypedef GObject GLabel;\n</pre>\n<div class=detailHTML>\nThis subtype represents a text string.  For example, the following code\nadds a <code>GLabel</code> containing <code>\"hello, world\"</code> to\nthe center of the window:\n\n<pre>\n   main() {\n      GWindow gw;\n      GLabel label;\n      double x, y;\n\n      printf(\"This program draws the 'hello, world' message.\\n\");\n      gw = newGWindow(600, 400);\n      label = newGLabel(\"hello, world\");\n      setFont(label, \"SansSerif-18\");\n      x = (getWidth(gw) - getWidth(label)) / 2;\n      y = (getHeight(gw) + getFontAscent(label)) / 2;\n      setLocation(label, x, y);\n      add(gw, label);\n   }\n</pre>\n\nControlling the appearance and positioning of a <code>GLabel</code>\ndepends on understanding the following terms:\n\n<p><ul>\n  <li>The <b><i>baseline</i></b> is the horizontal line on which the\n      characters rest.\n  <li>The <b><i>origin</i></b> is the point on the baseline at which\n      the label begins.\n  <li>The <b><i>height</i></b> is the distance that separate two\n      successive lines.\n  <li>The <b><i>ascent</i></b> is the maximum distance a character\n      in this font extends above the baseline.\n  <li>The <b><i>descent</i></b> is the maximum distance a character\n      in this font extends below the baseline.\n</ul>\n<p>The following diagram illustrates the interpretation of these terms:\n\n<p><div class=inset>\n<img src=\"images/GLabelGeometry.png\" width=625 alt=\"GLabelGeometry\">\n</div>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nrect = getFrameRectangle(arc);\n</pre>\n<hr>\n<a name=\"Type:GImage\"></a>\n<pre class=detailCode>\ntypedef GObject GImage;\n</pre>\n<div class=detailHTML>\nThis subtype represents an image from a file.  For example, the\nfollowing code adds a <code>GImage</code> containing the Stanford\ntree at the center of the window, assuming that the image file\n<code>StanfordTree.png</code> exists, either in the current\ndirectory or an <code>images</code> subdirectory:\n\n<pre>\n   main() {\n      printf(\"This program draws the Stanford tree.\\n\");\n      GWindow gw = newGWindow(600, 400);\n      GImage tree = newGImage(\"StanfordTree.png\");\n      double x = (getWidth(gw) - getWidth(tree)) / 2;\n      double y = (getHeight(gw) - getHeight(tree)) / 2;\n      add(gw, tree, x, y);\n   }\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndescent = getFontDescent(label);\n</pre>\n<hr>\n<a name=\"Type:GPolygon\"></a>\n<pre class=detailCode>\ntypedef GObject GPolygon;\n</pre>\n<div class=detailHTML>\nThis subtype represents a polygon bounded by line segments.\nThe <code>newGPolygon</code> function creates an empty polygon.\nTo complete the figure, you need to add vertices to the polygon\nusing the functions\n<a href=\"#Function:addVertex\"><code>addVertex</code></a>,\n<a href=\"#Function:addEdge\"><code>addEdge</code></a>,\nand <a href=\"#Function:addPolarEdge\"><code>addPolarEdge</code></a>.\nAs an example, the following code adds a filled red octagon to\nthe center of the window:\n\n<pre>\n   main() {\n      GWindow gw;\n      GPolygon stopSign;\n      double edge;\n      int i;\n\n      printf(\"This program draws a red octagon.\\n\");\n      gw = newGWindow(600, 400);\n      edge = 75;\n      stopSign = newGPolygon();\n      addVertex(stopSign, -edge / 2, edge / 2 + edge / sqrt(2.0));\n      for (i = 0; i < 8; i++) {\n         addPolarEdge(stopSign, edge, 45 * i);\n      }\n      setFilled(stopSign, true);\n      setColor(stopSign, \"RED\");\n      add(gw, stopSign, getWidth(gw) / 2, getHeight(gw) / 2);\n   }\n</pre>\n<p>The program results in the following picture:\n\n<p><div class=inset>\n<img src=\"images/StopSign.png\" width=322 alt=\"StopSign\">\n</div>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGImage image = newGImage(filename);\n</pre>\n<hr>\n<a name=\"Type:GCompound\"></a>\n<pre class=detailCode>\ntypedef GObject GCompound;\n</pre>\n<div class=detailHTML>\nThis subtype consists of a collection of other graphical objects.\nOnce assembled, the internal objects can be manipulated as a unit.\nThe <code>GCompound</code> keeps track of its own position, and all\nitems within it are drawn relative to that location.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvec = getVertices(poly);\n</pre>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:freeGObject\"></a>\n<pre class=detailCode>\nvoid freeGObject(GObject gobj);\n</pre>\n<div class=detailHTML>\nFrees the memory associated with the object.  This operation is\nnot necessary for objects that have been installed in a window.\nAdding a <code>GObject</code> to a <code>GWindow</code> or a\n<code>GCompound</code> transfers ownership to the container,\nwhich assumes responsibility for freeing the object.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfreeGObject(gobj);\n</pre>\n<hr>\n<a name=\"Function:getX\"></a>\n<pre class=detailCode>\ndouble getX(GObject gobj);\n</pre>\n<div class=detailHTML>\nReturns the <i>x</i>-coordinate of the object.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nx = getX(gobj);\n</pre>\n<hr>\n<a name=\"Function:getY\"></a>\n<pre class=detailCode>\ndouble getY(GObject gobj);\n</pre>\n<div class=detailHTML>\nReturns the <i>y</i>-coordinate of the object.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ny = getY(gobj);\n</pre>\n<hr>\n<a name=\"Function:getLocation\"></a>\n<pre class=detailCode>\nGPoint getLocation(GObject gobj);\n</pre>\n<div class=detailHTML>\nReturns the location of this object as a <code>GPoint</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\npt = getLocation(gobj);\n</pre>\n<hr>\n<a name=\"Function:setLocation\"></a>\n<pre class=detailCode>\nvoid setLocation(GObject gobj, double x, double y);\n</pre>\n<div class=detailHTML>\nSets the location of this object to the specified coordinates.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetLocation(gobj, x, y);\n</pre>\n<hr>\n<a name=\"Function:move\"></a>\n<pre class=detailCode>\nvoid move(GObject gobj, double dx, double dy);\n</pre>\n<div class=detailHTML>\nMoves the object on the screen using the displacements\n<code>dx</code> and <code>dy</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmove(gobj, dx, dy);\n</pre>\n<hr>\n<a name=\"Function:getWidth\"></a>\n<pre class=detailCode>\ndouble getWidth(GObject gobj);\n</pre>\n<div class=detailHTML>\nReturns the width of this object, which is defined to be the width of\nthe bounding box.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nwidth = getWidth(gobj);\n</pre>\n<hr>\n<a name=\"Function:getHeight\"></a>\n<pre class=detailCode>\ndouble getHeight(GObject gobj);\n</pre>\n<div class=detailHTML>\nReturns the height of this object, which is defined to be the height\nof the bounding box.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nheight = getHeight(gobj);\n</pre>\n<hr>\n<a name=\"Function:getSize\"></a>\n<pre class=detailCode>\nGDimension getSize(GObject gobj);\n</pre>\n<div class=detailHTML>\nReturns the size of the object as a <code>GDimension</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsize = getSize(gobj);\n</pre>\n<hr>\n<a name=\"Function:getBounds\"></a>\n<pre class=detailCode>\nGRectangle getBounds(GObject gobj);\n</pre>\n<div class=detailHTML>\nReturns the bounding box of this object, which is defined to be the\nsmallest rectangle that covers everything drawn by the figure.  The\ncoordinates of this rectangle do not necessarily match the location\nreturned by <code>getLocation</code>.  Given a <code>GLabel</code>\nobject, for example, <code>getLocation</code> returns the coordinates\nof the point on the baseline at which the string begins; the\n<code>getBounds</code> method, by contrast, returns a rectangle that\ncovers the entire window area occupied by the string.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nrect = getBounds(gobj);\n</pre>\n<hr>\n<a name=\"Function:setColor\"></a>\n<pre class=detailCode>\nvoid setColor(GObject gobj, string color);\n</pre>\n<div class=detailHTML>\nSets the color used to display this object.  The <code>color</code>\nstring is usually one of the predefined color names:\n\n   <code>BLACK</code><br>\n   <code>BLUE</code><br>\n   <code>CYAN</code><br>\n   <code>DARK_GRAY</code><br>\n   <code>GRAY</code><br>\n   <code>GREEN</code><br>\n   <code>LIGHT_GRAY</code><br>\n   <code>MAGENTA</code><br>\n   <code>ORANGE</code><br>\n   <code>PINK</code><br>\n   <code>RED</code><br>\n   <code>WHITE</code><br>\n   <code>YELLOW</code><br>\n\n<p>The case of the individual letters in the color name is ignored, as\nare spaces and underscores, so that the color <code>DARK_GRAY</code>\ncan be written as <code>\"Dark Gray\"</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetColor(gobj, color);\n</pre>\n<hr>\n<a name=\"Function:getColor\"></a>\n<pre class=detailCode>\nstring getColor(GObject gobj);\n</pre>\n<div class=detailHTML>\nReturns the color used to display this object.  This color is\nalways returned as a string in the form <code>\"#rrggbb\"</code>,\nwhere <code>rr</code>, <code>gg</code>, and <code>bb</code> are\nthe red, green, and blue components of the color, expressed as\ntwo-digit hexadecimal values.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncolor = getColor(gobj);\n</pre>\n<hr>\n<a name=\"Function:setVisible\"></a>\n<pre class=detailCode>\nvoid setVisible(GObject gobj, bool flag);\n</pre>\n<div class=detailHTML>\nSets whether this object is visible.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetVisible(gobj, flag);\n</pre>\n<hr>\n<a name=\"Function:isVisible\"></a>\n<pre class=detailCode>\nbool isVisible(GObject gobj);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if this object is visible.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (isVisible(gobj)) . . .\n</pre>\n<hr>\n<a name=\"Function:sendForward\"></a>\n<pre class=detailCode>\nvoid sendForward(GObject gobj);\n</pre>\n<div class=detailHTML>\nMoves this object one step toward the front in the <i>z</i> dimension.\nIf it was already at the front of the stack, nothing happens.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsendForward(gobj);\n</pre>\n<hr>\n<a name=\"Function:sendToFront\"></a>\n<pre class=detailCode>\nvoid sendToFront(GObject gobj);\n</pre>\n<div class=detailHTML>\nMoves this object to the front of the display in the <i>z</i> dimension.\nBy moving it to the front, this object will appear to be on top of the\nother graphical objects on the display and may hide any objects that\nare further back.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsendToFront(gobj);\n</pre>\n<hr>\n<a name=\"Function:sendBackward\"></a>\n<pre class=detailCode>\nvoid sendBackward(GObject gobj);\n</pre>\n<div class=detailHTML>\nMoves this object one step toward the back in the <i>z</i> dimension.\nIf it was already at the back of the stack, nothing happens.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsendBackward(gobj);\n</pre>\n<hr>\n<a name=\"Function:sendToBack\"></a>\n<pre class=detailCode>\nvoid sendToBack(GObject gobj);\n</pre>\n<div class=detailHTML>\nMoves this object to the back of the display in the <i>z</i> dimension.\nBy moving it to the back, this object will appear to be behind the other\ngraphical objects on the display and may be obscured by other objects\nin front.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsendToBack(gobj);\n</pre>\n<hr>\n<a name=\"Function:contains\"></a>\n<pre class=detailCode>\nbool contains(GObject gobj, double x, double y);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the specified point is inside the object.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (contains(gobj, x, y)) . . .\n</pre>\n<hr>\n<a name=\"Function:getType\"></a>\n<pre class=detailCode>\nstring getType(GObject gobj);\n</pre>\n<div class=detailHTML>\nReturns the subtype of the object as a string, as in <code>\"GOval\"</code>\nor <code>\"GRect\"</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ntype = getType(gobj);\n</pre>\n<hr>\n<a name=\"Function:getParent\"></a>\n<pre class=detailCode>\nGObject getParent(GObject gobj);\n</pre>\n<div class=detailHTML>\nReturns a pointer to the <code>GCompound</code> that contains this\nobject.  Every <code>GWindow</code> is initialized to contain a single\n<code>GCompound</code> that is aligned with the window.  Adding\nobjects to the window adds them to that <code>GCompound</code>,\nwhich means that every object you add to the window has a parent.\nCalling <code>getParent</code> on the top-level <code>GCompound</code>\nreturns <code>NULL</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nparent = getParent(gobj);\n</pre>\n<hr>\n<a name=\"Function:setSize\"></a>\n<pre class=detailCode>\nvoid setSize(GObject gobj, double width, double height);\n</pre>\n<div class=detailHTML>\nChanges the size of this object to the specified width and height.  This\nmethod applies to the types <code>GOval</code>, <code>GImage</code>,\nand <code>GRect</code> (and its subclasses).\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetSize(gobj, width, height);\n</pre>\n<hr>\n<a name=\"Function:setBounds\"></a>\n<pre class=detailCode>\nvoid setBounds(GObject gobj, double x, double y, double width, double height);\n</pre>\n<div class=detailHTML>\nChanges the bounds of this object to the specified values.  This\nmethod applies to the types <code>GOval</code>, <code>GImage</code>,\nand <code>GRect</code> (and its subclasses).\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetBounds(gobj, x, y, width, height);\n</pre>\n<hr>\n<a name=\"Function:setFilled\"></a>\n<pre class=detailCode>\nvoid setFilled(GObject gobj, bool flag);\n</pre>\n<div class=detailHTML>\nSets the fill status for <code>gobj</code>, where <code>false</code>\nis outlined and <code>true</code> is filled.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetFilled(gobj, flag);\n</pre>\n<hr>\n<a name=\"Function:isFilled\"></a>\n<pre class=detailCode>\nbool isFilled(GObject gobj);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if <code>gobj</code> is filled.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (isFilled(gobj)) . . .\n</pre>\n<hr>\n<a name=\"Function:setFillColor\"></a>\n<pre class=detailCode>\nvoid setFillColor(GObject gobj, string color);\n</pre>\n<div class=detailHTML>\nSets the color used to display the filled region of this rectangle.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetFillColor(gobj, color);\n</pre>\n<hr>\n<a name=\"Function:getFillColor\"></a>\n<pre class=detailCode>\nstring getFillColor(GObject gobj);\n</pre>\n<div class=detailHTML>\nReturns the color used to display the filled region of <code>gobj</code>.\nrectangle.  If none has been set, <code>getFillColor</code> returns\nthe empty string.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncolor = getFillColor(gobj);\n</pre>\n<hr>\n<a name=\"Function:newGRect\"></a>\n<pre class=detailCode>\nGRect newGRect(double x, double y, double width, double height);\n</pre>\n<div class=detailHTML>\nCreates a new <code>GRect</code> with the specified bounds.  By\ndefault, the rectangle is unfilled.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nrect = newGRect(x, y, width, height);\n</pre>\n<hr>\n<a name=\"Function:newGRoundRect\"></a>\n<pre class=detailCode>\nGRoundRect newGRoundRect(double x, double y, double width, double height, double corner);\n</pre>\n<div class=detailHTML>\nCreates a new <code>GRoundRect</code> with the specified dimensions.\nThe <code>corner</code> parameter specifies the diameter of the arc\nforming the corner.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGRoundRect rect = newGRoundRect(x, y, width, height, corner);\n</pre>\n<hr>\n<a name=\"Function:newG3DRect\"></a>\n<pre class=detailCode>\nG3DRect newG3DRect(double x, double y, double width, double height, bool raised);\n</pre>\n<div class=detailHTML>\nCreates a new <code>G3DRect</code> with the specified dimensions.\nThe <code>corner</code> parameter specifies whether this rectangle\nshould appear raised.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nG3DRect rect = newG3DRect(x, y, width, height, raised);\n</pre>\n<hr>\n<a name=\"Function:setRaised\"></a>\n<pre class=detailCode>\nvoid setRaised(G3DRect rect, bool raised);\n</pre>\n<div class=detailHTML>\nIndicates whether this object appears raised.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetRaised(rect, raised);\n</pre>\n<hr>\n<a name=\"Function:isRaised\"></a>\n<pre class=detailCode>\nbool isRaised(G3DRect rect);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if this object appears raised.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (isRaised(rect)) ...\n</pre>\n<hr>\n<a name=\"Function:newGOval\"></a>\n<pre class=detailCode>\nGObject newGOval(double x, double y, double width, double height);\n</pre>\n<div class=detailHTML>\nCreates a new <code>GOval</code> with the specified bounds.  By default,\nthe oval is unfilled.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\noval = newGOval(x, y, width, height);\n</pre>\n<hr>\n<a name=\"Function:newGLine\"></a>\n<pre class=detailCode>\nGObject newGLine(double x0, double y0, double x1, double y1);\n</pre>\n<div class=detailHTML>\nCreates a new graphical line connecting the points\n(<code>x0</code>,&nbsp;<code>y0</code>) and\n(<code>x1</code>,&nbsp;<code>y1</code>).\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nline = newGLine(x0, y0, x1, y1);\n</pre>\n<hr>\n<a name=\"Function:setStartPoint\"></a>\n<pre class=detailCode>\nvoid setStartPoint(GLine line, double x, double y);\n</pre>\n<div class=detailHTML>\nSets the start point for the line to (<code>x</code>,&nbsp;<code>y</code>),\nleaving the end point unchanged.  This method is therefore different\nfrom <code>setLocation</code>, which moves both components of the\nline segment.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetStartPoint(gline, x, y);\n</pre>\n<hr>\n<a name=\"Function:setEndPoint\"></a>\n<pre class=detailCode>\nvoid setEndPoint(GLine line, double x, double y);\n</pre>\n<div class=detailHTML>\nSets the end point for the line to (<code>x</code>,&nbsp;<code>y</code>),\nleaving the start point unchanged.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetEndPoint(line, x, y);\n</pre>\n<hr>\n<a name=\"Function:getStartPoint\"></a>\n<pre class=detailCode>\nGPoint getStartPoint(GObject gobj);\n</pre>\n<div class=detailHTML>\nReturns the point at which a <code>GLine</code> or <code>GArc</code> starts.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\npt = getStartPoint(gobj);\n</pre>\n<hr>\n<a name=\"Function:getEndPoint\"></a>\n<pre class=detailCode>\nGPoint getEndPoint(GObject gobj);\n</pre>\n<div class=detailHTML>\nReturns the point at which a <code>GLine</code> or <code>GArc</code> ends.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\npt = getEndPoint(gobj);\n</pre>\n<hr>\n<a name=\"Function:newGArc\"></a>\n<pre class=detailCode>\nGArc newGArc(double x, double y, double width, double height, double start, double sweep);\n</pre>\n<div class=detailHTML>\nCreates a new <code>GArc</code> consisting of an elliptical arc.\n<p>The following screenshots show several examples of how the\n<code>GArc</code> constructor interprets the <code>start</code>\nand <code>sweep</code> parameters:\n\n<p><div class=inset>\n<img src=\"images/GArcExamples.png\" width=700 alt=\"GArcExamples\">\n</div>\n\n<p>In the code fragments underneath each of these diagrams, <code>r</code>\nis the radius of the circular arc, and <code>cx</code> and <code>cy</code>\nare the coordinates of the center or the window.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\narc = newGArc(x, y, width, height, start, sweep);\n</pre>\n<hr>\n<a name=\"Function:setStartAngle\"></a>\n<pre class=detailCode>\nvoid setStartAngle(GArc arc, double start);\n</pre>\n<div class=detailHTML>\nSets the starting angle for this <code>GArc</code> object.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetStartAngle(arc, start);\n</pre>\n<hr>\n<a name=\"Function:getStartAngle\"></a>\n<pre class=detailCode>\ndouble getStartAngle(GArc arc);\n</pre>\n<div class=detailHTML>\nReturns the starting angle for this <code>GArc</code> object.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nangle = getStartAngle(arc);\n</pre>\n<hr>\n<a name=\"Function:setSweepAngle\"></a>\n<pre class=detailCode>\nvoid setSweepAngle(GArc arc, double start);\n</pre>\n<div class=detailHTML>\nSets the sweep angle for this <code>GArc</code> object.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetSweepAngle(arc, start);\n</pre>\n<hr>\n<a name=\"Function:getSweepAngle\"></a>\n<pre class=detailCode>\ndouble getSweepAngle(GArc arc);\n</pre>\n<div class=detailHTML>\nReturns the sweep angle for this <code>GArc</code> object.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nangle = getSweepAngle(arc);\n</pre>\n<hr>\n<a name=\"Function:setFrameRectangle\"></a>\n<pre class=detailCode>\nvoid setFrameRectangle(GArc garc, double x, double y, double width, double height);\n</pre>\n<div class=detailHTML>\nChanges the boundaries of the rectangle used to frame the arc.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetFrameRectangle(arc, x, y, width, height);\n</pre>\n<hr>\n<a name=\"Function:getFrameRectangle\"></a>\n<pre class=detailCode>\nGRectangle getFrameRectangle(GArc arc);\n</pre>\n<div class=detailHTML>\nReturns the boundaries of the rectangle used to frame the arc.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nrect = getFrameRectangle(arc);\n</pre>\n<hr>\n<a name=\"Function:newGLabel\"></a>\n<pre class=detailCode>\nGLabel newGLabel(string str);\n</pre>\n<div class=detailHTML>\nCreates a <code>GLabel</code> object containing the specified string,\npositioned with an origin of (0, 0).\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlabel = newGLabel(str);\n</pre>\n<hr>\n<a name=\"Function:setFont\"></a>\n<pre class=detailCode>\nvoid setFont(GLabel label, string font);\n</pre>\n<div class=detailHTML>\nChanges the font used to display the <code>GLabel</code> as specified by\nthe string <code>font</code>, which has the following format:\n\n<pre>\n   family-style-size\n</pre>\n\nwhere both <code>style</code> and <code>size</code> are optional.\nIf any of these elements are missing or specified as an asterisk,\nthe existing value is retained.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetFont(label, font);\n</pre>\n<hr>\n<a name=\"Function:getFont\"></a>\n<pre class=detailCode>\nstring getFont(GLabel label);\n</pre>\n<div class=detailHTML>\nReturns the current font for the <code>GLabel</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfont = getFont(label);\n</pre>\n<hr>\n<a name=\"Function:setLabel\"></a>\n<pre class=detailCode>\nvoid setLabel(GLabel label, string str);\n</pre>\n<div class=detailHTML>\nChanges the string stored within the <code>GLabel</code> object, so that\na new text string appears on the display.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetLabel(label, str);\n</pre>\n<hr>\n<a name=\"Function:getLabel\"></a>\n<pre class=detailCode>\nstring getLabel(GLabel label);\n</pre>\n<div class=detailHTML>\nReturns the string displayed by this object.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstr = getLabel(label);\n</pre>\n<hr>\n<a name=\"Function:getFontAscent\"></a>\n<pre class=detailCode>\ndouble getFontAscent(GLabel label);\n</pre>\n<div class=detailHTML>\nReturns the maximum distance strings in this font extend above\nthe baseline.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nascent = getFontAscent(label);\n</pre>\n<hr>\n<a name=\"Function:getFontDescent\"></a>\n<pre class=detailCode>\ndouble getFontDescent(GLabel label);\n</pre>\n<div class=detailHTML>\nReturns the maximum distance strings in this font descend below\nthe baseline.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndescent = getFontDescent(label);\n</pre>\n<hr>\n<a name=\"Function:newGImage\"></a>\n<pre class=detailCode>\nGImage newGImage(string filename);\n</pre>\n<div class=detailHTML>\nConstructs a new image by loading the image from the specified\nfile, which is either in the current directory or a subdirectory named\n<code>images</code>.  The upper left corner of the image is positioned\nat the origin.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGImage image = newGImage(filename);\n</pre>\n<hr>\n<a name=\"Function:newGPolygon\"></a>\n<pre class=detailCode>\nGPolygon newGPolygon(void);\n</pre>\n<div class=detailHTML>\nConstructs a new empty polygon.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\npoly = newGPolygon();\n</pre>\n<hr>\n<a name=\"Function:addVertex\"></a>\n<pre class=detailCode>\nvoid addVertex(GPolygon poly, double x, double y);\n</pre>\n<div class=detailHTML>\nAdds a vertex at (<code>x</code>, <code>y</code>) relative to the polygon\norigin.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\naddVertex(poly, x, y);\n</pre>\n<hr>\n<a name=\"Function:addEdge\"></a>\n<pre class=detailCode>\nvoid addEdge(GPolygon poly, double dx, double dy);\n</pre>\n<div class=detailHTML>\nAdds an edge to the polygon whose components are given by the displacements\n<code>dx</code> and <code>dy</code> from the last vertex.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\naddEdge(poly, dx, dy);\n</pre>\n<hr>\n<a name=\"Function:addPolarEdge\"></a>\n<pre class=detailCode>\nvoid addPolarEdge(GPolygon poly, double r, double theta);\n</pre>\n<div class=detailHTML>\nAdds an edge to the polygon specified in polar coordinates.  The length\nof the edge is given by <code>r</code>, and the edge extends in\ndirection <code>theta</code>, measured in degrees counterclockwise\nfrom the +x axis.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\naddPolarEdge(poly, r, theta);\n</pre>\n<hr>\n<a name=\"Function:getVertices\"></a>\n<pre class=detailCode>\nVector getVertices(GPolygon poly);\n</pre>\n<div class=detailHTML>\nReturns a vector whose elements are pointers to the GPoint values that\nrepresent the vertices.  This vector is shared with the internal data\nstructure of the GPolygon and must not be freed by the client.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvec = getVertices(poly);\n</pre>\n<hr>\n<a name=\"Function:newGCompound\"></a>\n<pre class=detailCode>\nGObject newGCompound(void);\n</pre>\n<div class=detailHTML>\nCreates a new graphical compound with no internal components.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncomp = newGCompound();\n</pre>\n<hr>\n<a name=\"Function:add\"></a>\n<pre class=detailCode>\nvoid add(GCompound compound, GObject gobj);\n</pre>\n<div class=detailHTML>\nAdds the object to the compound.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nadd(compound, gobj);\n</pre>\n<hr>\n<a name=\"Function:add\"></a>\n<pre class=detailCode>\nvoid add(GCompound compound, GObject gobj);\n</pre>\n<div class=detailHTML>\nRemoves the object from the compound.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nadd(compound, gobj);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/graph-h.html",
    "content": "<html>\n<head>\n<title>../graph.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: graph.h\n * -------------\n * This interface exports a simple graph abstraction.  In this abstraction,\n * graphs closely model their mathematical formulation as a set of nodes\n * connected by a set of arcs.\n */\n</scan>\n#ifndef _graph_h\n#define _graph_h\n\n#include \"cslib.h\"\n#include \"cmpfn.h\"\n#include \"set.h\"\n\n<a name=\"Type:Graph\"><scan class=comment>/*\n * Type: Graph\n * -----------\n * This type represents the abstract type for a graph.  Conceptually, a\n * Graph consists of a set of nodes together with a set of arcs.  Each arc\n * connects two nodes in one direction.  Undirected graphs must include two\n * arcs for each bidirectional connection.\n */\n</scan>\ntypedef struct GraphCDT *Graph;\n\n<a name=\"Type:Node\"><scan class=comment>/*\n * Type: Node\n * ----------\n * This type is the abstract type for a node in a graph.  Clients can store\n * their own data in a node by using the functions getBlockData and\n * setBlockData described in cslib.h.\n */\n</scan>\ntypedef struct NodeCDT *Node;\n\n<a name=\"Type:Arc\"><scan class=comment>/*\n * Type: Arc\n * ---------\n * This type is the abstract type for an arc in a graph.  Clients can store\n * their own data in an arc by using the functions getBlockData and\n * setBlockData described in cslib.h.\n */\n</scan>\ntypedef struct ArcCDT *Arc;\n\n<a name=\"Function:newGraph\"><scan class=comment>/*\n * Function: newGraph\n * Usage: g = newGraph();\n * ----------------------\n * Returns a new graph with no nodes or arcs.\n */\n</scan>\nGraph newGraph(void);\n\n<a name=\"Function:freeGraph\"><scan class=comment>/*\n * Function: freeGraph\n * Usage: freeGraph(g);\n * --------------------\n * Frees the storage for the graph, along with its nodes and arcs.\n */\n</scan>\nvoid freeGraph(Graph g);\n\n<a name=\"Function:addNode\"><scan class=comment>/*\n * Function: addNode\n * Usage: node = addNode(g, name);\n * -------------------------------\n * Adds a node to the graph with the specified name.  If there is already a\n * node with that name, addNode generates an error.  The function returns\n * the Node value.\n */\n</scan>\nNode addNode(Graph g, string name);\n\n<a name=\"Function:removeNode\"><scan class=comment>/*\n * Function: removeNode\n * Usage: removeNode(g, node);\n * ---------------------------\n * Removes and frees the specified node from the graph, along with any arcs\n * that enter or leave that node.\n */\n</scan>\nvoid removeNode(Graph g, Node node);\n\n<a name=\"Function:getNode\"><scan class=comment>/*\n * Function: getNode\n * Usage: node = getNode(g, name);\n * -------------------------------\n * Returns the node in the graph that has the specified name.  If there is\n * no such node, getNode returns NULL.\n */\n</scan>\nNode getNode(Graph g, string name);\n\n<a name=\"Function:addArc\"><scan class=comment>/*\n * Function: addArc\n * Usage: arc = addArc(g, n1, n2);\n * -------------------------------\n * Adds a new arc to the graph connecting nodes n1 and n2.  The function\n * returns the Arc value.\n */\n</scan>\nArc addArc(Graph g, Node n1, Node n2);\n\n<a name=\"Function:removeArc\"><scan class=comment>/*\n * Function: removeArc\n * Usage: removeArc(g, arc);\n * -------------------------\n * Removes and frees the specified arc.\n */\n</scan>\nvoid removeArc(Graph g, Arc arc);\n\n<a name=\"Function:isConnected\"><scan class=comment>/*\n * Function: isConnected\n * Usage: if (isConnected(n1, n2)) . . .\n * -------------------------------------\n * Returns true if there is an arc from n1 to n2.\n */\n</scan>\nbool isConnected(Node n1, Node n2);\n\n<a name=\"Function:getNodeSet\"><scan class=comment>/*\n * Function: getNodeSet\n * Usage: nodeSet = getNodeSet(g);\n * -------------------------------\n * Returns a set consisting of all nodes in the graph.  This function is\n * typically used in conjunction with the foreach macro to initialize an\n * iterator.  For example, the following idiom iterates over the nodes in\n * the specified graph:\n *\n *    foreach (node in getNodeSet(g)) . . .\n */\n</scan>\nSet getNodeSet(Graph g);\n\n<a name=\"Function:getArcSet\"><scan class=comment>/*\n * Function: getArcSet\n * Usage: arcSet = getArcSet(g);\n *        arcSet = getArcSet(node);\n * --------------------------------\n * Returns a set consisting of all arcs, either in the graph or starting at\n * the specified node.  This function is typically used in conjunction with\n * the foreach macro to initialize an iterator.  For example, the following\n * idiom iterates over the arcs in the specified graph:\n *\n *    foreach (arc in getArcSet(g)) . . .\n */\n</scan>\nSet getArcSet(void *arg);\n\n<a name=\"Function:getNeighbors\"><scan class=comment>/*\n * Function: getNeighbors\n * Usage: nodeSet = getNeighbors(node);\n * ------------------------------------\n * Returns a set consisting of the nodes to which a given node is\n * connected.  This function is typically used in conjunction with the\n * foreach macro to initialize an iterator.  For example, the following\n * idiom iterates over the nodes to which the node start is connected:\n *\n *    foreach (node in getNeighbors(start)) . . .\n */\n</scan>\nSet getNeighbors(Node node);\n\n<a name=\"Function:getName\"><scan class=comment>/*\n * Function: getName\n * Usage: str = getName(node);\n * ---------------------------\n * Returns the name of the node.\n */\n</scan>\nstring getName(Node node);\n\n<a name=\"Function:startOfArc\"><scan class=comment>/*\n * Function: startOfArc\n * Usage: node = startOfArc(arc);\n * ------------------------------\n * Returns the node at the beginning of the specified arc.\n */\n</scan>\nNode startOfArc(Arc arc);\n\n<a name=\"Function:endOfArc\"><scan class=comment>/*\n * Function: endOfArc\n * Usage: node = endOfArc(arc);\n * ----------------------------\n * Returns the node at the end of the specified arc.\n */\n</scan>\nNode endOfArc(Arc arc);\n\n<a name=\"Function:getCost\"><scan class=comment>/*\n * Function: getCost\n * Usage: cost = getCost(arc);\n * ---------------------------\n * Returns the \"cost\" associated with traversing an arc.  This cost need\n * not be economic and will often refer to some other metric, such as\n * distance.\n */\n</scan>\ndouble getCost(Arc arc);\n\n<a name=\"Function:setCost\"><scan class=comment>/*\n * Function: setCost\n * Usage: setCost(arc, cost);\n * --------------------------\n * Sets the cost of traversing the arc.\n */\n</scan>\nvoid setCost(Arc arc, double cost);\n\n<a name=\"Function:setNodeOrdering\"><scan class=comment>/*\n * Function: setNodeOrdering\n * Usage: setNodeOrdering(graph, cmpFn);\n * -------------------------------------\n * Sets the comparison function used to order the nodes in a graph when\n * they are enumerated.  By default, nodes are sorted in alphabetical order\n * by name.\n */\n</scan>\nvoid setNodeOrdering(Graph graph, CompareFn cmpFn);\n\n<a name=\"Function:setArcOrdering\"><scan class=comment>/*\n * Function: setArcOrdering\n * Usage: setArcOrdering(graph, cmpFn);\n * ------------------------------------\n * Sets the comparison function used to order the arcs in a graph when they\n * are enumerated.  By default, arcs are sorted in alphabetical order by\n * the name of the start node followed by the name of the end node.\n */\n</scan>\nvoid setArcOrdering(Graph graph, CompareFn cmpFn);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/graph.html",
    "content": "<html>\n<head>\n<title>graph.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><a href=\"graph-h.html\"><code>graph.h</code></a></h1>\nThis interface exports a simple graph abstraction.  In this abstraction,\ngraphs closely model their mathematical formulation as a set of nodes\nconnected by a set of arcs.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Types</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:Graph\">Graph</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This type represents the abstract type for a graph.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:Node\">Node</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This type is the abstract type for a node in a graph.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:Arc\">Arc</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This type is the abstract type for an arc in a graph.</td></tr>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newGraph\">newGraph()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a new graph with no nodes or arcs.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:freeGraph\">freeGraph(g)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Frees the storage for the graph, along with its nodes and arcs.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:addNode\">addNode(g,&nbsp;name)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Adds a node to the graph with the specified name.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:removeNode\">removeNode(g,&nbsp;node)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Removes and frees the specified node from the graph, along with any arcs that enter or leave that node.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getNode\">getNode(g,&nbsp;name)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the node in the graph that has the specified name.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:addArc\">addArc(g,&nbsp;n1,&nbsp;n2)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Adds a new arc to the graph connecting nodes <code>n1</code> and <code>n2</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:removeArc\">removeArc(g,&nbsp;arc)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Removes and frees the specified arc.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:isConnected\">isConnected(n1,&nbsp;n2)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if there is an arc from <code>n1</code> to <code>n2</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getNodeSet\">getNodeSet(g)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a set consisting of all nodes in the graph.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getArcSet\">getArcSet(g)</a><br><a href=\"#Function:getArcSet\">getArcSet(node)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a set consisting of all arcs, either in the graph or starting at the specified node.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getNeighbors\">getNeighbors(node)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a set consisting of the nodes to which a given node is connected.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getName\">getName(node)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the name of the node.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:startOfArc\">startOfArc(arc)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the node at the beginning of the specified arc.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:endOfArc\">endOfArc(arc)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the node at the end of the specified arc.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getCost\">getCost(arc)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the \"cost\" associated with traversing an arc.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setCost\">setCost(arc,&nbsp;cost)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the cost of traversing the arc.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setNodeOrdering\">setNodeOrdering(graph,&nbsp;cmpFn)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the comparison function used to order the nodes in a graph when they are enumerated.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setArcOrdering\">setArcOrdering(graph,&nbsp;cmpFn)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the comparison function used to order the arcs in a graph when they are enumerated.</td></tr>\n</table>\n<h2>Type detail</h2>\n<hr>\n<a name=\"Type:Graph\"></a>\n<pre class=detailCode>\ntypedef struct GraphCDT *Graph;\n</pre>\n<div class=detailHTML>\nThis type represents the abstract type for a graph.  Conceptually, a\n<code>Graph</code> consists of a set of <i>nodes</i> together with a\nset of <i>arcs</i>.  Each arc connects two nodes in one direction.\nUndirected graphs must include two arcs for each bidirectional\nconnection.\n</div>\n<hr>\n<a name=\"Type:Node\"></a>\n<pre class=detailCode>\ntypedef struct NodeCDT *Node;\n</pre>\n<div class=detailHTML>\nThis type is the abstract type for a node in a graph.  Clients\ncan store their own data in a node by using the functions\n<code>getBlockData</code> and <code>setBlockData</code> described\nin <a href=\"cslib.html\"><code>cslib.h</code></a>.\n</div>\n<hr>\n<a name=\"Type:Arc\"></a>\n<pre class=detailCode>\ntypedef struct ArcCDT *Arc;\n</pre>\n<div class=detailHTML>\nThis type is the abstract type for an arc in a graph.  Clients\ncan store their own data in an arc by using the functions\n<code>getBlockData</code> and <code>setBlockData</code> described\nin <a href=\"cslib.html\"><code>cslib.h</code></a>.\n</div>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:newGraph\"></a>\n<pre class=detailCode>\nGraph newGraph(void);\n</pre>\n<div class=detailHTML>\nReturns a new graph with no nodes or arcs.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ng = newGraph();\n</pre>\n<hr>\n<a name=\"Function:freeGraph\"></a>\n<pre class=detailCode>\nvoid freeGraph(Graph g);\n</pre>\n<div class=detailHTML>\nFrees the storage for the graph, along with its nodes and arcs.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfreeGraph(g);\n</pre>\n<hr>\n<a name=\"Function:addNode\"></a>\n<pre class=detailCode>\nNode addNode(Graph g, string name);\n</pre>\n<div class=detailHTML>\nAdds a node to the graph with the specified name.  If there is already\na node with that name, <code>addNode</code> generates an error.  The\nfunction returns the <code>Node</code> value.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nnode = addNode(g, name);\n</pre>\n<hr>\n<a name=\"Function:removeNode\"></a>\n<pre class=detailCode>\nvoid removeNode(Graph g, Node node);\n</pre>\n<div class=detailHTML>\nRemoves and frees the specified node from the graph, along with any\narcs that enter or leave that node.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nremoveNode(g, node);\n</pre>\n<hr>\n<a name=\"Function:getNode\"></a>\n<pre class=detailCode>\nNode getNode(Graph g, string name);\n</pre>\n<div class=detailHTML>\nReturns the node in the graph that has the specified name.  If there is\nno such node, <code>getNode</code> returns <code>NULL</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nnode = getNode(g, name);\n</pre>\n<hr>\n<a name=\"Function:addArc\"></a>\n<pre class=detailCode>\nArc addArc(Graph g, Node n1, Node n2);\n</pre>\n<div class=detailHTML>\nAdds a new arc to the graph connecting nodes <code>n1</code> and\n<code>n2</code>.  The function returns the <code>Arc</code> value.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\narc = addArc(g, n1, n2);\n</pre>\n<hr>\n<a name=\"Function:removeArc\"></a>\n<pre class=detailCode>\nvoid removeArc(Graph g, Arc arc);\n</pre>\n<div class=detailHTML>\nRemoves and frees the specified arc.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nremoveArc(g, arc);\n</pre>\n<hr>\n<a name=\"Function:isConnected\"></a>\n<pre class=detailCode>\nbool isConnected(Node n1, Node n2);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if there is an arc from <code>n1</code>\nto <code>n2</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (isConnected(n1, n2)) . . .\n</pre>\n<hr>\n<a name=\"Function:getNodeSet\"></a>\n<pre class=detailCode>\nSet getNodeSet(Graph g);\n</pre>\n<div class=detailHTML>\nReturns a set consisting of all nodes in the graph.  This function\nis typically used in conjunction with the <code>foreach</code>\nmacro to initialize an iterator.  For example, the following\nidiom iterates over the nodes in the specified graph:\n\n<pre>\n   foreach (node in getNodeSet(g)) . . .\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nnodeSet = getNodeSet(g);\n</pre>\n<hr>\n<a name=\"Function:getArcSet\"></a>\n<pre class=detailCode>\nSet getArcSet(void *arg);\n</pre>\n<div class=detailHTML>\nReturns a set consisting of all arcs, either in the graph or starting\nat the specified node.  This function is typically used in conjunction\nwith the <code>foreach</code> macro to initialize an iterator.  For\nexample, the following idiom iterates over the arcs in the specified\ngraph:\n\n<pre>\n   foreach (arc in getArcSet(g)) . . .\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\narcSet = getArcSet(g);\narcSet = getArcSet(node);\n</pre>\n<hr>\n<a name=\"Function:getNeighbors\"></a>\n<pre class=detailCode>\nSet getNeighbors(Node node);\n</pre>\n<div class=detailHTML>\nReturns a set consisting of the nodes to which a given node is\nconnected.  This function is typically used in conjunction with\nthe <code>foreach</code> macro to initialize an iterator.  For\nexample, the following idiom iterates over the nodes to which\nthe node <code>start</code> is connected:\n\n<pre>\n   foreach (node in getNeighbors(start)) . . .\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nnodeSet = getNeighbors(node);\n</pre>\n<hr>\n<a name=\"Function:getName\"></a>\n<pre class=detailCode>\nstring getName(Node node);\n</pre>\n<div class=detailHTML>\nReturns the name of the node.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstr = getName(node);\n</pre>\n<hr>\n<a name=\"Function:startOfArc\"></a>\n<pre class=detailCode>\nNode startOfArc(Arc arc);\n</pre>\n<div class=detailHTML>\nReturns the node at the beginning of the specified arc.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nnode = startOfArc(arc);\n</pre>\n<hr>\n<a name=\"Function:endOfArc\"></a>\n<pre class=detailCode>\nNode endOfArc(Arc arc);\n</pre>\n<div class=detailHTML>\nReturns the node at the end of the specified arc.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nnode = endOfArc(arc);\n</pre>\n<hr>\n<a name=\"Function:getCost\"></a>\n<pre class=detailCode>\ndouble getCost(Arc arc);\n</pre>\n<div class=detailHTML>\nReturns the \"cost\" associated with traversing an arc.  This cost need not\nbe economic and will often refer to some other metric, such as distance.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncost = getCost(arc);\n</pre>\n<hr>\n<a name=\"Function:setCost\"></a>\n<pre class=detailCode>\nvoid setCost(Arc arc, double cost);\n</pre>\n<div class=detailHTML>\nSets the cost of traversing the arc.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetCost(arc, cost);\n</pre>\n<hr>\n<a name=\"Function:setNodeOrdering\"></a>\n<pre class=detailCode>\nvoid setNodeOrdering(Graph graph, CompareFn cmpFn);\n</pre>\n<div class=detailHTML>\nSets the comparison function used to order the nodes in a graph when\nthey are enumerated.  By default, nodes are sorted in alphabetical\norder by name.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetNodeOrdering(graph, cmpFn);\n</pre>\n<hr>\n<a name=\"Function:setArcOrdering\"></a>\n<pre class=detailCode>\nvoid setArcOrdering(Graph graph, CompareFn cmpFn);\n</pre>\n<div class=detailHTML>\nSets the comparison function used to order the arcs in a graph when\nthey are enumerated.  By default, arcs are sorted in alphabetical\norder by the name of the start node followed by the name of the end node.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetArcOrdering(graph, cmpFn);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/gtimer-h.html",
    "content": "<html>\n<head>\n<title>../gtimer.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: gtimer.h\n * --------------\n * This interface exports a general interval timer.\n */\n</scan>\n#ifndef _gtimer_h\n#define _gtimer_h\n\n#include \"cslib.h\"\n\n<a name=\"Type:GTimer\"><scan class=comment>/*\n * Type: GTimer\n * ------------\n * This type implements a simple interval timer that generates a timer\n * event with a specified frequency.\n */\n</scan>\ntypedef struct GTimerCDT *GTimer;\n\n<a name=\"Function:newGTimer\"><scan class=comment>/*\n * Function: newGTimer\n * Usage: timer = newGTimer(milliseconds);\n * ---------------------------------------\n * Creates a timer that generates a timer event each time the specified\n * number of milliseconds has elapsed.  No events are generated until the\n * client calls startTimer.\n */\n</scan>\nGTimer newGTimer(double milliseconds);\n\n<a name=\"Function:freeGTimer\"><scan class=comment>/*\n * Function: freeGTimer\n * Usage: freeGTimer(timer);\n * -------------------------\n * Frees the resources associated with the timer.\n */\n</scan>\nvoid freeGTimer(GTimer timer);\n\n<a name=\"Function:startTimer\"><scan class=comment>/*\n * Function: startTimer\n * Usage: startTimer(timer);\n * -------------------------\n * Starts the timer.  A timer continues to generate timer events until it\n * is stopped; to achieve the effect of a one-shot timer, the simplest\n * approach is to call the stop function inside the event handler.\n */\n</scan>\nvoid startTimer(GTimer timer);\n\n<a name=\"Function:stopTimer\"><scan class=comment>/*\n * Function: stopTimer\n * Usage: stopTimer(timer);\n * ------------------------\n * Stops the timer so that it stops generating events.\n */\n</scan>\nvoid stopTimer(GTimer timer);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/gtimer.html",
    "content": "<html>\n<head>\n<title>gtimer.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><a href=\"gtimer-h.html\"><code>gtimer.h</code></a></h1>\nThis interface exports a general interval timer.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Type</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:GTimer\">GTimer</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This type implements a simple interval timer that generates a timer event with a specified frequency.</td></tr>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newGTimer\">newGTimer(milliseconds)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a timer that generates a timer event each time the specified number of milliseconds has elapsed.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:freeGTimer\">freeGTimer(timer)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Frees the resources associated with the timer.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:startTimer\">startTimer(timer)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Starts the timer.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:stopTimer\">stopTimer(timer)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Stops the timer so that it stops generating events.</td></tr>\n</table>\n<h2>Type detail</h2>\n<hr>\n<a name=\"Type:GTimer\"></a>\n<pre class=detailCode>\ntypedef struct GTimerCDT *GTimer;\n</pre>\n<div class=detailHTML>\nThis type implements a simple interval timer that generates a timer\nevent with a specified frequency.\n</div>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:newGTimer\"></a>\n<pre class=detailCode>\nGTimer newGTimer(double milliseconds);\n</pre>\n<div class=detailHTML>\nCreates a timer that generates a timer event each time the specified\nnumber of milliseconds has elapsed.  No events are generated until\nthe client calls <code>startTimer</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ntimer = newGTimer(milliseconds);\n</pre>\n<hr>\n<a name=\"Function:freeGTimer\"></a>\n<pre class=detailCode>\nvoid freeGTimer(GTimer timer);\n</pre>\n<div class=detailHTML>\nFrees the resources associated with the timer.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfreeGTimer(timer);\n</pre>\n<hr>\n<a name=\"Function:startTimer\"></a>\n<pre class=detailCode>\nvoid startTimer(GTimer timer);\n</pre>\n<div class=detailHTML>\nStarts the timer.  A timer continues to generate timer events until it\nis stopped; to achieve the effect of a one-shot timer, the simplest\napproach is to call the <code>stop</code> function inside the event\nhandler.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstartTimer(timer);\n</pre>\n<hr>\n<a name=\"Function:stopTimer\"></a>\n<pre class=detailCode>\nvoid stopTimer(GTimer timer);\n</pre>\n<div class=detailHTML>\nStops the timer so that it stops generating events.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstopTimer(timer);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/gtypes-h.html",
    "content": "<html>\n<head>\n<title>../gtypes.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: gtypes.h\n * --------------\n * This interface defines types for representing points, dimensions, and\n * rectangles.\n */\n</scan>\n#ifndef _gtypes_h\n#define _gtypes_h\n\n#include \"generic.h\"\n\n<a name=\"Type:GPoint\"><scan class=comment>/*\n * Type: GPoint\n * ------------\n * This type contains real-valued x and y fields.  It is used to represent\n * a location on the graphics plane.\n */\n</scan>\ntypedef struct {\n   double x;\n   double y;\n} GPoint;\n\n<a name=\"Type:GDimension\"><scan class=comment>/*\n * Type: GDimension\n * ----------------\n * This type contains real-valued width and height fields.  It is used to\n * indicate the size of a graphical object.\n */\n</scan>\ntypedef struct {\n   double width;\n   double height;\n} GDimension;\n\n<a name=\"Type:GRectangle\"><scan class=comment>/*\n * Type: GRectangle\n * ----------------\n * This type contains real-valued x, y, width, and height fields.  It is\n * used to represent the bounding box of a graphical object.\n */\n</scan>\ntypedef struct {\n   double x;\n   double y;\n   double width;\n   double height;\n} GRectangle;\n\n<a name=\"Function:createGPoint\"><scan class=comment>/*\n * Function: createGPoint\n * Usage: pt = createGPoint(x, y);\n * -------------------------------\n * Creates a GPoint structure with the specified x and y coordinates.\n */\n</scan>\nGPoint createGPoint(double x, double y);\n\n<a name=\"Function:getX\"><scan class=comment>/*\n * Function: getX\n * Usage: x = getX(pt);\n * --------------------\n * Returns the x component of the GPoint.\n */\n</scan>\ndouble getXGPoint(GPoint pt);\n\n<a name=\"Function:getY\"><scan class=comment>/*\n * Function: getY\n * Usage: y = getY(pt);\n * --------------------\n * Returns the y component of the GPoint.\n */\n</scan>\ndouble getYGPoint(GPoint pt);\n\n<a name=\"Function:createGDimension\"><scan class=comment>/*\n * Function: createGDimension\n * Usage: dim = createGDimension(width, height);\n * ---------------------------------------------\n * Creates a GDimension value with the specified width and height\n * coordinates.\n */\n</scan>\nGDimension createGDimension(double width, double height);\n\n<a name=\"Function:getWidth\"><scan class=comment>/*\n * Function: getWidth\n * Usage: width = getWidth(dim);\n * -----------------------------\n * Returns the width component of the GDimension.\n */\n</scan>\ndouble getWidthGDimension(GDimension dim);\n\n<a name=\"Function:getHeight\"><scan class=comment>/*\n * Function: getHeight\n * Usage: width = getHeight(dim);\n * ------------------------------\n * Returns the width component of the GDimension.\n */\n</scan>\ndouble getHeightGDimension(GDimension dim);\n\n<a name=\"Function:createGRectangle\"><scan class=comment>/*\n * Function: createGRectangle\n * Usage: r = createGRectangle(x, y, width, height);\n * -------------------------------------------------\n * Creates a GRectangle value with the specified components.\n */\n</scan>\nGRectangle createGRectangle(double x, double y, double width, double height);\n\n<a name=\"Function:getX\"><scan class=comment>/*\n * Function: getX\n * Usage: double x = getX(r);\n * --------------------------\n * Returns the x component of the rectangle.\n */\n</scan>\ndouble getXGRectangle(GRectangle r);\n\n<a name=\"Function:getY\"><scan class=comment>/*\n * Function: getY\n * Usage: double y = getY(r);\n * --------------------------\n * Returns the y component of the rectangle.\n */\n</scan>\ndouble getYGRectangle(GRectangle r);\n\n<a name=\"Function:getWidth\"><scan class=comment>/*\n * Function: getWidth\n * Usage: width = getWidth(r);\n * ---------------------------\n * Returns the width component of the GRectangle.\n */\n</scan>\ndouble getWidthGRectangle(GRectangle r);\n\n<a name=\"Function:getHeight\"><scan class=comment>/*\n * Function: getHeight\n * Usage: width = getHeight(r);\n * ----------------------------\n * Returns the width component of the GRectangle.\n */\n</scan>\ndouble getHeightGRectangle(GRectangle r);\n\n<a name=\"Function:isEmpty\"><scan class=comment>/*\n * Function: isEmpty\n * Usage: if (isEmpty(r)) . . .\n * ----------------------------\n * Returns true if the rectangle is empty.\n */\n</scan>\nbool isEmptyGRectangle(GRectangle r);\n\n<a name=\"Function:contains\"><scan class=comment>/*\n * Function: contains\n * Usage: if (contains(r, pt)) . . .\n * ---------------------------------\n * Returns true if the rectangle contains the given point.\n */\n</scan>\nbool containsGRectangle(GRectangle r, GPoint pt);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/gtypes.html",
    "content": "<html>\n<head>\n<title>gtypes.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><a href=\"gtypes-h.html\"><code>gtypes.h</code></a></h1>\nThis interface defines types for representing points, dimensions, and\nrectangles.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Types</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:GPoint\">GPoint</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This type contains real-valued x and y fields.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:GDimension\">GDimension</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This type contains real-valued width and height fields.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:GRectangle\">GRectangle</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This type contains real-valued x, y, width, and height fields.</td></tr>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:createGPoint\">createGPoint(x,&nbsp;y)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a <code>GPoint</code> structure with the specified <code>x</code> and <code>y</code> coordinates.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getX\">getX(pt)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the x component of the <code>GPoint</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getY\">getY(pt)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the y component of the <code>GPoint</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:createGDimension\">createGDimension(width,&nbsp;height)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a <code>GDimension</code> value with the specified <code>width</code> and <code>height</code> coordinates.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getWidth\">getWidth(dim)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the width component of the <code>GDimension</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getHeight\">getHeight(dim)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the width component of the <code>GDimension</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:createGRectangle\">createGRectangle(x,&nbsp;y,&nbsp;width,&nbsp;height)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a <code>GRectangle</code> value with the specified components.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getX\">getX(r)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the x component of the rectangle.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getY\">getY(r)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the y component of the rectangle.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getWidth\">getWidth(r)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the width component of the <code>GRectangle</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getHeight\">getHeight(r)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the width component of the <code>GRectangle</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:isEmpty\">isEmpty(r)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the rectangle is empty.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:contains\">contains(r,&nbsp;pt)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the rectangle contains the given point.</td></tr>\n</table>\n<h2>Type detail</h2>\n<hr>\n<a name=\"Type:GPoint\"></a>\n<pre class=detailCode>\ntypedef struct {\n   double x;\n   double y;\n} GPoint;\n</pre>\n<div class=detailHTML>\nThis type contains real-valued x and y fields.  It is used to\nrepresent a location on the graphics plane.\n</div>\n<hr>\n<a name=\"Type:GDimension\"></a>\n<pre class=detailCode>\ntypedef struct {\n   double width;\n   double height;\n} GDimension;\n</pre>\n<div class=detailHTML>\nThis type contains real-valued width and height fields.  It is used\nto indicate the size of a graphical object.\n</div>\n<hr>\n<a name=\"Type:GRectangle\"></a>\n<pre class=detailCode>\ntypedef struct {\n   double x;\n   double y;\n   double width;\n   double height;\n} GRectangle;\n</pre>\n<div class=detailHTML>\nThis type contains real-valued x, y, width, and height fields.  It is\nused to represent the bounding box of a graphical object.\n</div>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:createGPoint\"></a>\n<pre class=detailCode>\nGPoint createGPoint(double x, double y);\n</pre>\n<div class=detailHTML>\nCreates a <code>GPoint</code> structure with the specified <code>x</code>\nand <code>y</code> coordinates.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\npt = createGPoint(x, y);\n</pre>\n<hr>\n<a name=\"Function:getX\"></a>\n<pre class=detailCode>\ndouble getX(GPoint pt);\n</pre>\n<div class=detailHTML>\nReturns the x component of the <code>GPoint</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nx = getX(pt);\n</pre>\n<hr>\n<a name=\"Function:getY\"></a>\n<pre class=detailCode>\ndouble getY(GPoint pt);\n</pre>\n<div class=detailHTML>\nReturns the y component of the <code>GPoint</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ny = getY(pt);\n</pre>\n<hr>\n<a name=\"Function:createGDimension\"></a>\n<pre class=detailCode>\nGDimension createGDimension(double width, double height);\n</pre>\n<div class=detailHTML>\nCreates a <code>GDimension</code> value with the specified\n<code>width</code> and <code>height</code> coordinates.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndim = createGDimension(width, height);\n</pre>\n<hr>\n<a name=\"Function:getWidth\"></a>\n<pre class=detailCode>\ndouble getWidth(GDimension dim);\n</pre>\n<div class=detailHTML>\nReturns the width component of the <code>GDimension</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nwidth = getWidth(dim);\n</pre>\n<hr>\n<a name=\"Function:getHeight\"></a>\n<pre class=detailCode>\ndouble getHeight(GDimension dim);\n</pre>\n<div class=detailHTML>\nReturns the width component of the <code>GDimension</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nwidth = getHeight(dim);\n</pre>\n<hr>\n<a name=\"Function:createGRectangle\"></a>\n<pre class=detailCode>\nGRectangle createGRectangle(double x, double y, double width, double height);\n</pre>\n<div class=detailHTML>\nCreates a <code>GRectangle</code> value with the specified components.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nr = createGRectangle(x, y, width, height);\n</pre>\n<hr>\n<a name=\"Function:getX\"></a>\n<pre class=detailCode>\ndouble getX(GRectangle r);\n</pre>\n<div class=detailHTML>\nReturns the x component of the rectangle.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble x = getX(r);\n</pre>\n<hr>\n<a name=\"Function:getY\"></a>\n<pre class=detailCode>\ndouble getY(GRectangle r);\n</pre>\n<div class=detailHTML>\nReturns the y component of the rectangle.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble y = getY(r);\n</pre>\n<hr>\n<a name=\"Function:getWidth\"></a>\n<pre class=detailCode>\ndouble getWidth(GRectangle r);\n</pre>\n<div class=detailHTML>\nReturns the width component of the <code>GRectangle</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nwidth = getWidth(r);\n</pre>\n<hr>\n<a name=\"Function:getHeight\"></a>\n<pre class=detailCode>\ndouble getHeight(GRectangle r);\n</pre>\n<div class=detailHTML>\nReturns the width component of the <code>GRectangle</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nwidth = getHeight(r);\n</pre>\n<hr>\n<a name=\"Function:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty(GRectangle r);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the rectangle is empty.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (isEmpty(r)) . . .\n</pre>\n<hr>\n<a name=\"Function:contains\"></a>\n<pre class=detailCode>\nbool contains(GRectangle r, GPoint pt);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the rectangle contains the given point.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (contains(r, pt)) . . .\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/gwindow-h.html",
    "content": "<html>\n<head>\n<title>../gwindow.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: gwindow.h\n * ---------------\n * This interface defines an abstract type representing a graphics window.\n */\n</scan>\n#ifndef _gwindow_h\n#define _gwindow_h\n\n#include \"cslib.h\"\n#include \"gtypes.h\"\n\n#ifndef _gobjects_h\n\ntypedef void *GObject;\n\n<a name=\"Type:GWindow\"><scan class=comment>/*\n * Type: GWindow\n * -------------\n * This type represents a graphics window that supports simple graphics. \n * Each GWindow consists of two layers.  The background layer provides a\n * surface for drawing static pictures that involve no animation. \n * Graphical objects drawn in the background layer are persistent and do\n * not require the client to update the contents of the window.  The\n * foreground layer contains graphical objects that are redrawn as\n * necessary.\n *\n * The GWindow type includes several functions that draw lines, rectangles,\n * and ovals on the background layer without making use of the facilities\n * of the gobjects.h interface.  For example, the following program draws a\n * diamond, rectangle, and oval at the center of the window.\n *\n *    main() {\n *       double width, height;\n *       GWindow gw;\n *\n *       gw = newGWindow(500, 300);\n *       width = getWidth(gw);\n *       height = getHeight(gw);\n *       drawLine(gw, 0, height / 2, width / 2, 0);\n *       drawLine(gw, width / 2, 0, width, height / 2);\n *       drawLine(gw, width, height / 2, width / 2, height);\n *       drawLine(gw, width / 2, height, 0, height / 2);\n *       setColor(gw, \"BLUE\");\n *       fillRect(gw, width / 4, height / 4, width / 2, height / 2);\n *       setColor(gw, \"GRAY\");\n *       fillOval(gw, width / 4, height / 4, width / 2, height / 2);\n *    }\n */\n</scan>\ntypedef struct GWindowCDT *GWindow;\n\n#endif\n\n<a name=\"Function:newGWindow\"><scan class=comment>/*\n * Function: newGWindow\n * Usage: gw = newGWindow(width, height);\n * --------------------------------------\n * Creates and displays a graphics window with the specified dimensions.\n */\n</scan>\nGWindow newGWindow(double width, double height);\n\n<a name=\"Function:closeGWindow\"><scan class=comment>/*\n * Function: closeGWindow\n * Usage: closeGWindow(gw);\n * ------------------------\n * Deletes the window from the screen.\n */\n</scan>\nvoid closeGWindow(GWindow gw);\n\n<a name=\"Function:requestFocus\"><scan class=comment>/*\n * Function: requestFocus\n * Usage: requestFocus(gw);\n * ------------------------\n * Asks the system to assign the keyboard focus to the window, which brings\n * it to the top and ensures that key events are delivered to the window. \n * Clicking in the window automatically requests the focus.\n */\n</scan>\nvoid requestFocus(GWindow gw);\n\n<a name=\"Function:clear\"><scan class=comment>/*\n * Function: clear\n * Usage: clear(gw);\n * -----------------\n * Clears the contents of the window.\n */\n</scan>\nvoid clearGWindow(GWindow gw);\n\n<a name=\"Function:setVisible\"><scan class=comment>/*\n * Function: setVisible\n * Usage: setVisible(gw, flag);\n * ----------------------------\n * Determines whether the window is visible on the screen.\n */\n</scan>\nvoid setVisibleGWindow(GWindow gw, bool flag);\n\n<a name=\"Function:isVisible\"><scan class=comment>/*\n * Function: isVisible\n * Usage: if (isVisible(gw)) . . .\n * -------------------------------\n * Tests whether the window is visible.\n */\n</scan>\nbool isVisibleGWindow(GWindow gw);\n\n<a name=\"Function:drawLine\"><scan class=comment>/*\n * Function: drawLine\n * Usage: drawLine(gw, x0, y0, x1, y1);\n * ------------------------------------\n * Draws a line connecting the specified points.\n */\n</scan>\nvoid drawLine(GWindow gw, double x0, double y0, double x1, double y1);\n\n<a name=\"Function:drawPolarLine\"><scan class=comment>/*\n * Function: drawPolarLine\n * Usage: pt = drawPolarLine(gw, x, y, r, theta);\n * ----------------------------------------------\n * Draws a line of length r in the direction theta from the initial point. \n * The angle theta is measured in degrees counterclockwise from the +x\n * axis.  The method returns the end point of the line.\n */\n</scan>\nGPoint drawPolarLine(GWindow gw, double x, double y, double r, double theta);\n\n<a name=\"Function:drawOval\"><scan class=comment>/*\n * Function: drawOval\n * Usage: drawOval(gw, x, y, width, height);\n * -----------------------------------------\n * Draws the frame of a oval with the specified bounds.\n */\n</scan>\nvoid drawOval(GWindow gw, double x, double y, double width, double height);\n\n<a name=\"Function:fillOval\"><scan class=comment>/*\n * Function: fillOval\n * Usage: fillOval(gw, x, y, width, height);\n * -----------------------------------------\n * Fills the frame of a oval with the specified bounds.\n */\n</scan>\nvoid fillOval(GWindow gw, double x, double y, double width, double height);\n\n<a name=\"Function:drawRect\"><scan class=comment>/*\n * Function: drawRect\n * Usage: drawRect(gw, x, y, width, height);\n * -----------------------------------------\n * Draws the frame of a rectangle with the specified bounds.\n */\n</scan>\nvoid drawRect(GWindow gw, double x, double y, double width, double height);\n\n<a name=\"Function:fillRect\"><scan class=comment>/*\n * Function: fillRect\n * Usage: fillRect(gw, x, y, width, height);\n * -----------------------------------------\n * Fills the frame of a rectangle with the specified bounds.\n */\n</scan>\nvoid fillRect(GWindow gw, double x, double y, double width, double height);\n\n<a name=\"Function:setColor\"><scan class=comment>/*\n * Function: setColor\n * Usage: setColor(gw, color);\n * ---------------------------\n * Sets the color used for drawing.  The color parameter is usually one of\n * the predefined color names from Java: BLACK, BLUE, CYAN, DARK_GRAY,\n * GRAY, GREEN, LIGHT_GRAY, MAGENTA, ORANGE, PINK, RED, WHITE, or YELLOW. \n * The case of the individual letters in the color name is ignored, as are\n * spaces and underscores, so that the Java color DARK_GRAY could be\n * written as \"Dark Gray\".\n */\n</scan>\nvoid setColorGWindow(GWindow gw, string color);\n\n<a name=\"Function:getColor\"><scan class=comment>/*\n * Function: getColor\n * Usage: color = getColor(gw);\n * ----------------------------\n * Returns the current color as a string in the form \"#rrggbb\".  In this\n * string, the values rr, gg, and bb are two-digit hexadecimal values\n * representing the red, green, and blue components of the color,\n * respectively.\n */\n</scan>\nstring getColorGWindow(GWindow gw);\n\n<a name=\"Function:getWidth\"><scan class=comment>/*\n * Function: getWidth\n * Usage: width = getWidth(gw);\n * ----------------------------\n * Returns the width of the graphics window in pixels.\n */\n</scan>\ndouble getWidthGWindow(GWindow gw);\n\n<a name=\"Function:getHeight\"><scan class=comment>/*\n * Function: getHeight\n * Usage: height = getHeight(gw);\n * ------------------------------\n * Returns the height of the graphics window in pixels.\n */\n</scan>\ndouble getHeightGWindow(GWindow gw);\n\n<a name=\"Function:repaint\"><scan class=comment>/*\n * Function: repaint\n * Usage: repaint(gw);\n * -------------------\n * Schedule a repaint on the graphics window.\n */\n</scan>\nvoid repaint(GWindow gw);\n\n<a name=\"Function:setWindowTitle\"><scan class=comment>/*\n * Function: setWindowTitle\n * Usage: setWindowTitle(gw, title);\n * ---------------------------------\n * Sets the title of the graphics window.\n */\n</scan>\nvoid setWindowTitle(GWindow gw, string title);\n\n<a name=\"Function:getWindowTitle\"><scan class=comment>/*\n * Function: getWindowTitle\n * Usage: title = getWindowTitle(gw);\n * ----------------------------------\n * Returns the title of the graphics window.\n */\n</scan>\nstring getWindowTitle(GWindow gw);\n\n<a name=\"Function:draw\"><scan class=comment>/*\n * Function: draw\n * Usage: draw(gw, gobj);\n * ----------------------\n * Draws the GObject on the background layer.\n */\n</scan>\nvoid draw(GWindow gw, GObject gobj);\n\n<a name=\"Function:drawAt\"><scan class=comment>/*\n * Function: drawAt\n * Usage: drawAt(gw, gobj, x, y);\n * ------------------------------\n * Moves the GObject to (x, y) and then draws it on the window.\n */\n</scan>\nvoid drawAt(GWindow gw, GObject gobj, double x, double y);\n\n<a name=\"Function:add\"><scan class=comment>/*\n * Function: add\n * Usage: add(gw, gobj);\n * ---------------------\n * Adds the GObject to the foreground layer of the window.  Adding a\n * GObject to a GWindow transfers control of the memory for that object\n * from the client to the graphics package.  Freeing a GWindow\n * automatically frees any GObjects it contains.\n */\n</scan>\nvoid addGWindow(GWindow gw, GObject gobj);\n\n<a name=\"Function:addAt\"><scan class=comment>/*\n * Function: addAt\n * Usage: addAt(gw, gobj, x, y);\n * -----------------------------\n * Adds the GObject to the foreground layer of the window after moving it\n * to the point (x, y).\n */\n</scan>\nvoid addAt(GWindow gw, GObject gobj, double x, double y);\n\n<a name=\"Function:addToRegion\"><scan class=comment>/*\n * Function: addToRegion\n * Usage: addToRegion(gw, gobj, region);\n * -------------------------------------\n * Adds the GObject (which must be an interactor or a label) to the control\n * strip specified by region.  The region parameter must be one of the\n * strings \"NORTH\", \"EAST\", \"SOUTH\", or \"WEST\".\n */\n</scan>\nvoid addToRegion(GWindow gw, GObject gobj, string region);\n\n<a name=\"Function:remove\"><scan class=comment>/*\n * Function: remove\n * Usage: remove(gw, gobj);\n * ------------------------\n * Removes the object from its container or region.\n */\n</scan>\nvoid removeGWindow(GWindow gw, GObject gobj);\n\n<a name=\"Function:getGObjectAt\"><scan class=comment>/*\n * Function: getGObjectAt\n * Usage: gobj = getGObjectAt(gw, x, y);\n * -------------------------------------\n * Returns a pointer to the topmost GObject containing the point (x, y), or\n * NULL if no such object exists.\n */\n</scan>\nGObject getGObjectAt(GWindow gw, double x, double y);\n\n<a name=\"Function:setRegionAlignment\"><scan class=comment>/*\n * Function: setRegionAlignment\n * Usage: setRegionAlignment(gw, region, align);\n * ---------------------------------------------\n * Sets the alignment of the specified side region as specified by the\n * string align.  The region parameter must be one of the strings \"NORTH\",\n * \"EAST\", \"SOUTH\", or \"WEST\" and the align parameter must be \"LEFT\",\n * \"RIGHT\", or \"CENTER\".  By default, side panels use CENTER alignment.\n */\n</scan>\nvoid setRegionAlignment(GWindow gw, string region, string align);\n\n<a name=\"Function:pause\"><scan class=comment>/*\n * Function: pause\n * Usage: pause(milliseconds);\n * ---------------------------\n * Pauses for the indicated number of milliseconds.  This function is\n * useful for animation where the motion would otherwise be too fast.\n */\n</scan>\nvoid pause(double milliseconds);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/gwindow.html",
    "content": "<html>\n<head>\n<title>gwindow.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><a href=\"gwindow-h.html\"><code>gwindow.h</code></a></h1>\nThis interface defines an abstract type representing a graphics window.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Type</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:GWindow\">GWindow</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This type represents a graphics window that supports simple graphics.</td></tr>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newGWindow\">newGWindow(width,&nbsp;height)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates and displays a graphics window with the specified dimensions.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:closeGWindow\">closeGWindow(gw)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Deletes the window from the screen.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:requestFocus\">requestFocus(gw)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Asks the system to assign the keyboard focus to the window, which brings it to the top and ensures that key events are delivered to the window.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:clear\">clear(gw)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Clears the contents of the window.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setVisible\">setVisible(gw,&nbsp;flag)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Determines whether the window is visible on the screen.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:isVisible\">isVisible(gw)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Tests whether the window is visible.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:drawLine\">drawLine(gw,&nbsp;x0,&nbsp;y0,&nbsp;x1,&nbsp;y1)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Draws a line connecting the specified points.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:drawPolarLine\">drawPolarLine(gw,&nbsp;x,&nbsp;y,&nbsp;r,&nbsp;theta)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Draws a line of length <code>r</code> in the direction <code>theta</code> from the initial point.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:drawOval\">drawOval(gw,&nbsp;x,&nbsp;y,&nbsp;width,&nbsp;height)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Draws the frame of a oval with the specified bounds.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:fillOval\">fillOval(gw,&nbsp;x,&nbsp;y,&nbsp;width,&nbsp;height)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Fills the frame of a oval with the specified bounds.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:drawRect\">drawRect(gw,&nbsp;x,&nbsp;y,&nbsp;width,&nbsp;height)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Draws the frame of a rectangle with the specified bounds.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:fillRect\">fillRect(gw,&nbsp;x,&nbsp;y,&nbsp;width,&nbsp;height)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Fills the frame of a rectangle with the specified bounds.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setColor\">setColor(gw,&nbsp;color)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the color used for drawing.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getColor\">getColor(gw)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the current color as a string in the form <code>\"#rrggbb\"</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getWidth\">getWidth(gw)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the width of the graphics window in pixels.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getHeight\">getHeight(gw)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the height of the graphics window in pixels.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:repaint\">repaint(gw)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Schedule a repaint on the graphics window.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setWindowTitle\">setWindowTitle(gw,&nbsp;title)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the title of the graphics window.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getWindowTitle\">getWindowTitle(gw)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the title of the graphics window.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:draw\">draw(gw,&nbsp;gobj)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Draws the <code>GObject</code> on the background layer.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:drawAt\">drawAt(gw,&nbsp;gobj,&nbsp;x,&nbsp;y)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Moves the <code>GObject</code> to (<code>x</code>, <code>y</code>) and then draws it on the window.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:add\">add(gw,&nbsp;gobj)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Adds the <code>GObject</code> to the foreground layer of the window.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:addAt\">addAt(gw,&nbsp;gobj,&nbsp;x,&nbsp;y)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Adds the <code>GObject</code> to the foreground layer of the window after moving it to the point (<code>x</code>, <code>y</code>).</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:addToRegion\">addToRegion(gw,&nbsp;gobj,&nbsp;region)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Adds the <code>GObject</code> (which must be an interactor or a label) to the control strip specified by <code>region</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:remove\">remove(gw,&nbsp;gobj)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Removes the object from its container or region.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getGObjectAt\">getGObjectAt(gw,&nbsp;x,&nbsp;y)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a pointer to the topmost <code>GObject</code> containing the point (<code>x</code>, <code>y</code>), or <code>NULL</code> if no such object exists.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setRegionAlignment\">setRegionAlignment(gw,&nbsp;region,&nbsp;align)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the alignment of the specified side region as specified by the string <code>align</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:pause\">pause(milliseconds)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Pauses for the indicated number of milliseconds.</td></tr>\n</table>\n<h2>Type detail</h2>\n<hr>\n<a name=\"Type:GWindow\"></a>\n<pre class=detailCode>\ntypedef struct GWindowCDT *GWindow;\n</pre>\n<div class=detailHTML>\nThis type represents a graphics window that supports simple graphics.\nEach <code>GWindow</code> consists of two layers.  The background layer\nprovides a surface for drawing static pictures that involve no animation.\nGraphical objects drawn in the background layer are persistent and do\nnot require the client to update the contents of the window.  The\nforeground layer contains graphical objects that are redrawn as necessary.\n\n<p>The <code>GWindow</code> type includes several functions that draw\nlines, rectangles, and ovals on the background layer without making\nuse of the facilities of the <code>gobjects.h</code> interface.  For\nexample, the following program draws a diamond, rectangle, and oval\nat the center of the window.\n\n<pre>\n   main() {\n      double width, height;\n      GWindow gw;\n\n      gw = newGWindow(500, 300);\n      width = getWidth(gw);\n      height = getHeight(gw);\n      drawLine(gw, 0, height / 2, width / 2, 0);\n      drawLine(gw, width / 2, 0, width, height / 2);\n      drawLine(gw, width, height / 2, width / 2, height);\n      drawLine(gw, width / 2, height, 0, height / 2);\n      setColor(gw, \"BLUE\");\n      fillRect(gw, width / 4, height / 4, width / 2, height / 2);\n      setColor(gw, \"GRAY\");\n      fillOval(gw, width / 4, height / 4, width / 2, height / 2);\n   }\n</pre>\n</div>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:newGWindow\"></a>\n<pre class=detailCode>\nGWindow newGWindow(double width, double height);\n</pre>\n<div class=detailHTML>\nCreates and displays a graphics window with the specified dimensions.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngw = newGWindow(width, height);\n</pre>\n<hr>\n<a name=\"Function:closeGWindow\"></a>\n<pre class=detailCode>\nvoid closeGWindow(GWindow gw);\n</pre>\n<div class=detailHTML>\nDeletes the window from the screen.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncloseGWindow(gw);\n</pre>\n<hr>\n<a name=\"Function:requestFocus\"></a>\n<pre class=detailCode>\nvoid requestFocus(GWindow gw);\n</pre>\n<div class=detailHTML>\nAsks the system to assign the keyboard focus to the window, which\nbrings it to the top and ensures that key events are delivered to\nthe window.  Clicking in the window automatically requests the focus.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nrequestFocus(gw);\n</pre>\n<hr>\n<a name=\"Function:clear\"></a>\n<pre class=detailCode>\nvoid clear(GWindow gw);\n</pre>\n<div class=detailHTML>\nClears the contents of the window.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nclear(gw);\n</pre>\n<hr>\n<a name=\"Function:setVisible\"></a>\n<pre class=detailCode>\nvoid setVisible(GWindow gw, bool flag);\n</pre>\n<div class=detailHTML>\nDetermines whether the window is visible on the screen.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetVisible(gw, flag);\n</pre>\n<hr>\n<a name=\"Function:isVisible\"></a>\n<pre class=detailCode>\nbool isVisible(GWindow gw);\n</pre>\n<div class=detailHTML>\nTests whether the window is visible.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (isVisible(gw)) . . .\n</pre>\n<hr>\n<a name=\"Function:drawLine\"></a>\n<pre class=detailCode>\nvoid drawLine(GWindow gw, double x0, double y0, double x1, double y1);\n</pre>\n<div class=detailHTML>\nDraws a line connecting the specified points.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndrawLine(gw, x0, y0, x1, y1);\n</pre>\n<hr>\n<a name=\"Function:drawPolarLine\"></a>\n<pre class=detailCode>\nGPoint drawPolarLine(GWindow gw, double x, double y, double r, double theta);\n</pre>\n<div class=detailHTML>\nDraws a line of length <code>r</code> in the direction <code>theta</code>\nfrom the initial point.  The angle <code>theta</code> is measured in\ndegrees counterclockwise from the +<i>x</i> axis.  The method returns\nthe end point of the line.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\npt = drawPolarLine(gw, x, y, r, theta);\n</pre>\n<hr>\n<a name=\"Function:drawOval\"></a>\n<pre class=detailCode>\nvoid drawOval(GWindow gw, double x, double y, double width, double height);\n</pre>\n<div class=detailHTML>\nDraws the frame of a oval with the specified bounds.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndrawOval(gw, x, y, width, height);\n</pre>\n<hr>\n<a name=\"Function:fillOval\"></a>\n<pre class=detailCode>\nvoid fillOval(GWindow gw, double x, double y, double width, double height);\n</pre>\n<div class=detailHTML>\nFills the frame of a oval with the specified bounds.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfillOval(gw, x, y, width, height);\n</pre>\n<hr>\n<a name=\"Function:drawRect\"></a>\n<pre class=detailCode>\nvoid drawRect(GWindow gw, double x, double y, double width, double height);\n</pre>\n<div class=detailHTML>\nDraws the frame of a rectangle with the specified bounds.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndrawRect(gw, x, y, width, height);\n</pre>\n<hr>\n<a name=\"Function:fillRect\"></a>\n<pre class=detailCode>\nvoid fillRect(GWindow gw, double x, double y, double width, double height);\n</pre>\n<div class=detailHTML>\nFills the frame of a rectangle with the specified bounds.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfillRect(gw, x, y, width, height);\n</pre>\n<hr>\n<a name=\"Function:setColor\"></a>\n<pre class=detailCode>\nvoid setColor(GWindow gw, string color);\n</pre>\n<div class=detailHTML>\nSets the color used for drawing.  The <code>color</code> parameter is\nusually one of the predefined color names from Java: <code>BLACK</code>,\n<code>BLUE</code>, <code>CYAN</code>, <code>DARK_GRAY</code>,\n<code>GRAY</code>, <code>GREEN</code>, <code>LIGHT_GRAY</code>,\n<code>MAGENTA</code>, <code>ORANGE</code>, <code>PINK</code>,\n<code>RED</code>, <code>WHITE</code>, or <code>YELLOW</code>.\nThe case of the individual letters in the color name is ignored,\nas are spaces and underscores, so that the Java color\n<code>DARK_GRAY</code> could be written as <code>\"Dark&nbsp;Gray\"</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetColor(gw, color);\n</pre>\n<hr>\n<a name=\"Function:getColor\"></a>\n<pre class=detailCode>\nstring getColor(GWindow gw);\n</pre>\n<div class=detailHTML>\nReturns the current color as a string in the form <code>\"#rrggbb\"</code>.\nIn this string, the values <code>rr</code>, <code>gg</code>,\nand <code>bb</code> are two-digit hexadecimal values representing\nthe red, green, and blue components of the color, respectively.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncolor = getColor(gw);\n</pre>\n<hr>\n<a name=\"Function:getWidth\"></a>\n<pre class=detailCode>\ndouble getWidth(GWindow gw);\n</pre>\n<div class=detailHTML>\nReturns the width of the graphics window in pixels.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nwidth = getWidth(gw);\n</pre>\n<hr>\n<a name=\"Function:getHeight\"></a>\n<pre class=detailCode>\ndouble getHeight(GWindow gw);\n</pre>\n<div class=detailHTML>\nReturns the height of the graphics window in pixels.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nheight = getHeight(gw);\n</pre>\n<hr>\n<a name=\"Function:repaint\"></a>\n<pre class=detailCode>\nvoid repaint(GWindow gw);\n</pre>\n<div class=detailHTML>\nSchedule a repaint on the graphics window.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nrepaint(gw);\n</pre>\n<hr>\n<a name=\"Function:setWindowTitle\"></a>\n<pre class=detailCode>\nvoid setWindowTitle(GWindow gw, string title);\n</pre>\n<div class=detailHTML>\nSets the title of the graphics window.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetWindowTitle(gw, title);\n</pre>\n<hr>\n<a name=\"Function:getWindowTitle\"></a>\n<pre class=detailCode>\nstring getWindowTitle(GWindow gw);\n</pre>\n<div class=detailHTML>\nReturns the title of the graphics window.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ntitle = getWindowTitle(gw);\n</pre>\n<hr>\n<a name=\"Function:draw\"></a>\n<pre class=detailCode>\nvoid draw(GWindow gw, GObject gobj);\n</pre>\n<div class=detailHTML>\nDraws the <code>GObject</code> on the background layer.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndraw(gw, gobj);\n</pre>\n<hr>\n<a name=\"Function:drawAt\"></a>\n<pre class=detailCode>\nvoid drawAt(GWindow gw, GObject gobj, double x, double y);\n</pre>\n<div class=detailHTML>\nMoves the <code>GObject</code> to (<code>x</code>, <code>y</code>)\nand then draws it on the window.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndrawAt(gw, gobj, x, y);\n</pre>\n<hr>\n<a name=\"Function:add\"></a>\n<pre class=detailCode>\nvoid add(GWindow gw, GObject gobj);\n</pre>\n<div class=detailHTML>\nAdds the <code>GObject</code> to the foreground layer of the window.\nAdding a <code>GObject</code> to a <code>GWindow</code> transfers\ncontrol of the memory for that object from the client to the graphics\npackage.  Freeing a <code>GWindow</code> automatically frees\nany <nobr><code>GObject</code><font size=-1>s</font></nobr> it contains.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nadd(gw, gobj);\n</pre>\n<hr>\n<a name=\"Function:addAt\"></a>\n<pre class=detailCode>\nvoid addAt(GWindow gw, GObject gobj, double x, double y);\n</pre>\n<div class=detailHTML>\nAdds the <code>GObject</code> to the foreground layer of the window\nafter moving it to the point (<code>x</code>, <code>y</code>).\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\naddAt(gw, gobj, x, y);\n</pre>\n<hr>\n<a name=\"Function:addToRegion\"></a>\n<pre class=detailCode>\nvoid addToRegion(GWindow gw, GObject gobj, string region);\n</pre>\n<div class=detailHTML>\nAdds the <code>GObject</code> (which must be an interactor or a label)\nto the control strip specified by <code>region</code>.\nThe <code>region</code> parameter must be one of the strings\n<code>\"NORTH\"</code>, <code>\"EAST\"</code>, <code>\"SOUTH\"</code>,\nor <code>\"WEST\"</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\naddToRegion(gw, gobj, region);\n</pre>\n<hr>\n<a name=\"Function:remove\"></a>\n<pre class=detailCode>\nvoid remove(GWindow gw, GObject gobj);\n</pre>\n<div class=detailHTML>\nRemoves the object from its container or region.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nremove(gw, gobj);\n</pre>\n<hr>\n<a name=\"Function:getGObjectAt\"></a>\n<pre class=detailCode>\nGObject getGObjectAt(GWindow gw, double x, double y);\n</pre>\n<div class=detailHTML>\nReturns a pointer to the topmost <code>GObject</code> containing the\npoint (<code>x</code>, <code>y</code>), or <code>NULL</code> if no such\nobject exists.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngobj = getGObjectAt(gw, x, y);\n</pre>\n<hr>\n<a name=\"Function:setRegionAlignment\"></a>\n<pre class=detailCode>\nvoid setRegionAlignment(GWindow gw, string region, string align);\n</pre>\n<div class=detailHTML>\nSets the alignment of the specified side region as specified by the\nstring <code>align</code>.  The <code>region</code> parameter must be\none of the strings <code>\"NORTH\"</code>, <code>\"EAST\"</code>,\n<code>\"SOUTH\"</code>, or <code>\"WEST\"</code> and the <code>align</code>\nparameter must be <code>\"LEFT\"</code>, <code>\"RIGHT\"</code>, or\n<code>\"CENTER\"</code>.  By default, side panels use\n<code>CENTER</code> alignment.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetRegionAlignment(gw, region, align);\n</pre>\n<hr>\n<a name=\"Function:pause\"></a>\n<pre class=detailCode>\nvoid pause(double milliseconds);\n</pre>\n<div class=detailHTML>\nPauses for the indicated number of milliseconds.  This function is\nuseful for animation where the motion would otherwise be too fast.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\npause(milliseconds);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/hashmap-h.html",
    "content": "<html>\n<head>\n<title>../hashmap.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: hashmap.h\n * ---------------\n * This interface defines a map abstraction that associates string keys\n * with values.  The implementation uses a hash table, which offers\n * constant-time performance but does not support iterating through the\n * keys in order.\n */\n</scan>\n#ifndef _hashmap_h\n#define _hashmap_h\n\n#include \"cslib.h\"\n#include \"generic.h\"\n#include \"iterator.h\"\n\n<a name=\"Function:HashMap\"><scan class=comment>/*\n * Function: HashMap\n * -----------------\n * This type is the ADT used to represent a map from strings to values.\n */\n</scan>\ntypedef struct HashMapCDT *HashMap;\n\n<scan class=comment>/* Exported entries */</scan>\n\n<a name=\"Function:newHashMap\"><scan class=comment>/*\n * Function: newHashMap\n * Usage: map = newHashMap();\n * --------------------------\n * Allocates a new map with no entries.\n */\n</scan>\nHashMap newHashMap(void);\n\n<a name=\"Function:freeHashMap\"><scan class=comment>/*\n * Function: freeHashMap\n * Usage: freeHashMap(map);\n * ------------------------\n * Frees the storage associated with the map.\n */\n</scan>\nvoid freeHashMap(HashMap map);\n\n<a name=\"Function:size\"><scan class=comment>/*\n * Function: size\n * Usage: n = size(map);\n * ---------------------\n * Returns the number of elements in the map.\n */\n</scan>\nint sizeHashMap(HashMap map);\n\n<a name=\"Function:isEmpty\"><scan class=comment>/*\n * Function: isEmpty\n * Usage: if (isEmpty(map)) . . .\n * ------------------------------\n * Returns true if the map has no entries.\n */\n</scan>\nbool isEmptyHashMap(HashMap map);\n\n<a name=\"Function:clear\"><scan class=comment>/*\n * Function: clear\n * Usage: clear(map);\n * ------------------\n * Removes all entries from the map.\n */\n</scan>\nvoid clearHashMap(HashMap map);\n\n<a name=\"Function:clone\"><scan class=comment>/*\n * Function: clone\n * Usage: newmap = clone(map);\n * ---------------------------\n * Creates a copy of the map.  The clone function copies only the first\n * level of the structure and does not copy the individual elements.\n */\n</scan>\nHashMap cloneHashMap(HashMap map);\n\n<a name=\"Function:put\"><scan class=comment>/*\n * Function: put\n * Usage: put(map, key, value);\n * ----------------------------\n * Associates key with value in the map.  Each call to put supersedes any\n * previous definition for key.\n */\n</scan>\nvoid putHashMap(HashMap map, string key, void *value);\n\n<a name=\"Function:get\"><scan class=comment>/*\n * Function: get\n * Usage: void *value = get(map, key);\n * -----------------------------------\n * Returns the value associated with key in the map, or NULL, if no such\n * value exists.\n */\n</scan>\nvoid *getHashMap(HashMap map, string key);\n\n<a name=\"Function:containsKey\"><scan class=comment>/*\n * Function: containsKey\n * Usage: if (containsKey(map, key)) . . .\n * ---------------------------------------\n * Checks to see if the map contains the specified key.\n */\n</scan>\nbool containsKeyHashMap(HashMap map, string key);\n\n<a name=\"Function:remove\"><scan class=comment>/*\n * Function: remove\n * Usage: remove(map, key);\n * ------------------------\n * Removes the key and its value from the map.\n */\n</scan>\nvoid removeHashMap(HashMap map, string key);\n\n<a name=\"Function:map\"><scan class=comment>/*\n * Function: map\n * Usage: map(map, fn, data);\n * --------------------------\n * Iterates through the map and calls the function fn on each entry.  The\n * callback function takes the following arguments:\n *\n *\n *  The key string\n *  The associated value\n *  The data pointer\n *\n *\n * The data pointer allows the client to pass state information to the\n * function fn, if necessary.  If no such information is required, this\n * argument should be NULL.\n */\n</scan>\nvoid mapHashMap(HashMap map, proc fn, void *data);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/hashmap.html",
    "content": "<html>\n<head>\n<title>hashmap.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><a href=\"hashmap-h.html\"><code>hashmap.h</code></a></h1>\nThis interface defines a map abstraction that associates string\nkeys with values.  The implementation uses a hash table, which\noffers constant-time performance but does not support iterating\nthrough the keys in order.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:HashMap\">HashMap</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This type is the ADT used to represent a map from strings to values.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newHashMap\">newHashMap()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Allocates a new map with no entries.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:freeHashMap\">freeHashMap(map)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Frees the storage associated with the map.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:size\">size(map)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the number of elements in the map.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:isEmpty\">isEmpty(map)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the map has no entries.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:clear\">clear(map)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Removes all entries from the map.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:clone\">clone(map)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a copy of the map.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:put\">put(map,&nbsp;key,&nbsp;value)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Associates <code>key</code> with <code>value</code> in the map.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:get\">get(map,&nbsp;key)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the value associated with <code>key</code> in the map, or <code>NULL</code>, if no such value exists.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:containsKey\">containsKey(map,&nbsp;key)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Checks to see if the map contains the specified key.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:remove\">remove(map,&nbsp;key)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Removes the key and its value from the map.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:map\">map(map,&nbsp;fn,&nbsp;data)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Iterates through the map and calls the function <code>fn</code> on each entry.</td></tr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:HashMap\"></a>\n<pre class=detailCode>\ntypedef struct HashMapCDT *HashMap;\n</pre>\n<div class=detailHTML>\nThis type is the ADT used to represent a map from strings to values.\n</div>\n<hr>\n<a name=\"Function:newHashMap\"></a>\n<pre class=detailCode>\nHashMap newHashMap(void);\n</pre>\n<div class=detailHTML>\nAllocates a new map with no entries.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap = newHashMap();\n</pre>\n<hr>\n<a name=\"Function:freeHashMap\"></a>\n<pre class=detailCode>\nvoid freeHashMap(HashMap map);\n</pre>\n<div class=detailHTML>\nFrees the storage associated with the map.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfreeHashMap(map);\n</pre>\n<hr>\n<a name=\"Function:size\"></a>\n<pre class=detailCode>\nint size(HashMap map);\n</pre>\n<div class=detailHTML>\nReturns the number of elements in the map.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nn = size(map);\n</pre>\n<hr>\n<a name=\"Function:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty(HashMap map);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the map has no entries.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (isEmpty(map)) . . .\n</pre>\n<hr>\n<a name=\"Function:clear\"></a>\n<pre class=detailCode>\nvoid clear(HashMap map);\n</pre>\n<div class=detailHTML>\nRemoves all entries from the map.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nclear(map);\n</pre>\n<hr>\n<a name=\"Function:clone\"></a>\n<pre class=detailCode>\nHashMap clone(HashMap map);\n</pre>\n<div class=detailHTML>\nCreates a copy of the map.  The <code>clone</code> function copies\nonly the first level of the structure and does not copy the individual\nelements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nnewmap = clone(map);\n</pre>\n<hr>\n<a name=\"Function:put\"></a>\n<pre class=detailCode>\nvoid put(HashMap map, string key, void *value);\n</pre>\n<div class=detailHTML>\nAssociates <code>key</code> with <code>value</code> in the map.\nEach call to <code>put</code> supersedes any previous definition\nfor <code>key</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nput(map, key, value);\n</pre>\n<hr>\n<a name=\"Function:get\"></a>\n<pre class=detailCode>\nvoid *get(HashMap map, string key);\n</pre>\n<div class=detailHTML>\nReturns the value associated with <code>key</code> in the map,\nor <code>NULL</code>, if no such value exists.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvoid *value = get(map, key);\n</pre>\n<hr>\n<a name=\"Function:containsKey\"></a>\n<pre class=detailCode>\nbool containsKey(HashMap map, string key);\n</pre>\n<div class=detailHTML>\nChecks to see if the map contains the specified key.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (containsKey(map, key)) . . .\n</pre>\n<hr>\n<a name=\"Function:remove\"></a>\n<pre class=detailCode>\nvoid remove(HashMap map, string key);\n</pre>\n<div class=detailHTML>\nRemoves the key and its value from the map.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nremove(map, key);\n</pre>\n<hr>\n<a name=\"Function:map\"></a>\n<pre class=detailCode>\nvoid map(HashMap map, proc fn, void *data);\n</pre>\n<div class=detailHTML>\nIterates through the map and calls the function <code>fn</code> on\neach entry.  The callback function takes the following arguments:\n\n<ul>\n <li>The key string\n <li>The associated value\n <li>The <code>data</code> pointer\n</ul>\n\nThe <code>data</code> pointer allows the client to pass state\ninformation to the function <code>fn</code>, if necessary.  If no such\ninformation is required, this argument should be <code>NULL</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap(map, fn, data);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/include/package.html",
    "content": "The <code>cslib</code> package defines a set of interface files that\nsimplify writing C programs, particularly at the novice level.\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/index.html",
    "content": "<html>\n<head>\n<title>The Stanford <code>cslib</code> package</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\nThe <code>cslib</code> package defines a set of interface files that\nsimplify writing C programs, particularly at the novice level.\n<table class=index width=100%>\n</table>\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Interface files</td></tr>\n<tr><td class=indexKey><nobr><a href=\"charset.html\">charset.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interface exports an abstract type that represents sets of characters.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"cmdscan.html\">cmdscan.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interface exports a simple command-line scanner.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"cmpfn.html\">cmpfn.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interface exports several comparison functions for use with the other library packages.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"cslib.html\">cslib.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interface defines a basic set of definitions that are shared among all interfaces in the package.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"exception.html\">exception.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interface exports a portable exception-handling mechanism for C.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"filelib.html\">filelib.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interface exports a standardized set of tools for working with files across various platforms.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"foreach.html\">foreach.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interface provides a simple syntactic extension for iterators that makes them much easier to read.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"gevents.html\">gevents.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interface defines the event structure used in the graphics libraries.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"ginteractors.html\">ginteractors.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interface exports a hierarchy of graphical interactors similar to those provided in the Java Swing libraries.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"gmath.html\">gmath.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interface exports several functions for working with graphical geometry along with the constants <code>PI</code> and <code>E</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"gobjects.html\">gobjects.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interface exports a hierarchy of graphical shapes based on the model developed for the ACM Java Graphics.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"graph.html\">graph.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interface exports a simple graph abstraction.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"gtimer.html\">gtimer.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interface exports a general interval timer.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"gtypes.html\">gtypes.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interface defines types for representing points, dimensions, and rectangles.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"gwindow.html\">gwindow.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interface defines an abstract type representing a graphics window.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"hashmap.html\">hashmap.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interface defines a map abstraction that associates string keys with values.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"loadobj.html\">loadobj.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interface supports dynamic loading of functions from object files.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"map.html\">map.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interface defines a map abstraction that associates string-valued keys with values.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"pqueue.html\">pqueue.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interface defines a queue abstraction that dequeues elements in priority order.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"queue.html\">queue.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interface defines a queue abstraction with first-in/first-out semantics.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"random.html\">random.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interface exports functions for generating pseudorandom numbers.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"ref.html\">ref.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interface exports several simple functions for allocating pointers to the atomic types.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"set.html\">set.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interface exports an abstract type that represents sets of values.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"simpio.html\">simpio.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interface exports several functions that simplify the reading of input data.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"sound.html\">sound.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interface defines an abstract type that represents a sound.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"stack.html\">stack.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interface exports an abstraction for stacks.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"strlib.html\">strlib.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interface defines a general library for dynamically allocated strings.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"thread.html\">thread.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interface exports a platform-independent thread abstraction, along with simple functions for concurrency control.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"tokenscanner.html\">tokenscanner.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interface exports a scanner facility that divides a string into individual tokens.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"vector.html\">vector.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This interface exports an array-like indexed collection type.</td></tr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/iterator-h.html",
    "content": "<html>\n<head>\n<title>../iterator.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: iterator.h\n * ----------------\n * This interface exports a polymorphic iterator abstraction for C.\n */\n</scan>\n#ifndef _iterator_h\n#define _iterator_h\n\n#include \"cslib.h\"\n\n<a name=\"Type:Iterator\"><scan class=comment>/*\n * Type: Iterator\n * --------------\n * An abstract type used to iterate over the elements of any collection.\n */\n</scan>\ntypedef struct IteratorCDT *Iterator;\n\n<scan class=comment>/* Exported entries */</scan>\n\n<scan class=comment>/*\n * General overview\n * ----------------\n * The newIterator, stepIterator, and freeIterator functions make it\n * possible to iterate over the elements in any collection that supports\n * iteration.  In most cases, clients will simply use the foreach macro,\n * which automatically invokes these methods.  They can also be used as\n * shown in the following standalone paradigm:\n *\n *    iterator = newIterator(collection);\n *    while (stepIterator(iterator, \n *       . . . body of loop . . .\n *    }\n *    freeIterator(iterator);\n *\n * The call to stepIterator advances the iterator and returns the next\n * element using the reference parameter.  The stepIterator function\n * returns true until the elements are exhausted, after which it returns\n * false.  The freeIterator function releases any storage associated with\n * the iterator.\n */\n</scan>\n<a name=\"Function:newIterator\"><scan class=comment>/*\n * Function: newIterator\n * Usage: iterator = newIterator(collection);\n * ------------------------------------------\n * Creates a new iterator for the specified collection.\n */\n</scan>\nIterator newIterator(void *collection);\n\n<a name=\"Function:stepIterator\"><scan class=comment>/*\n * Function: stepIterator\n * Usage: hasMoreElements = stepIterator(iterator, &amp;element);\n * ----------------------------------------------------------\n * Advances the iterator and stores the next element through the element\n * pointer provided as a reference parameter.  The stepIterator function\n * returns true until the elements are exhausted, after which it returns\n * false.\n */\n</scan>\nbool stepIterator(Iterator iterator, void *dst);\n\n<a name=\"Function:freeIterator\"><scan class=comment>/*\n * Function: freeIterator\n * Usage: freeIterator(iterator, &amp;element);\n * ----------------------------------------\n * Frees any storage associated with the iterator.\n */\n</scan>\nvoid freeIterator(Iterator iterator);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/iterator.html",
    "content": "<html>\n<head>\n<title>iterator.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><a href=\"iterator-h.html\"><code>iterator.h</code></a></h1>\nThis interface exports a polymorphic iterator abstraction for C.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Type</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:Iterator\">Iterator</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>An abstract type used to iterate over the elements of any collection.</td></tr>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:freeIterator\">freeIterator(iterator,&nbsp;&element)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Frees any storage associated with the iterator.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newIterator\">newIterator(collection)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a new iterator for the specified collection.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:stepIterator\">stepIterator(iterator,&nbsp;&element)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Advances the iterator and stores the next element through the element pointer provided as a reference parameter.</td></tr>\n</table>\n<h2>Type detail</h2>\n<hr>\n<a name=\"Type:Iterator\"></a>\n<pre class=detailCode>\ntypedef struct IteratorCDT *Iterator;\n</pre>\n<div class=detailHTML>\nAn abstract type used to iterate over the elements of any collection.\n</div>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:newIterator\"></a>\n<pre class=detailCode>\nIterator newIterator(void *collection);\n</pre>\n<div class=detailHTML>\nCreates a new iterator for the specified collection.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\niterator = newIterator(collection);\n</pre>\n<hr>\n<a name=\"Function:stepIterator\"></a>\n<pre class=detailCode>\nbool stepIterator(Iterator iterator, void *dst);\n</pre>\n<div class=detailHTML>\nAdvances the iterator and stores the next element through the\nelement pointer provided as a reference parameter.  The\n<code>stepIterator</code> function returns <code>true</code> until\nthe elements are exhausted, after which it returns <code>false</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nhasMoreElements = stepIterator(iterator, &amp;element);\n</pre>\n<hr>\n<a name=\"Function:freeIterator\"></a>\n<pre class=detailCode>\nvoid freeIterator(Iterator iterator);\n</pre>\n<div class=detailHTML>\nFrees any storage associated with the iterator.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfreeIterator(iterator, &amp;element);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/itertype-h.html",
    "content": "<html>\n<head>\n<title>../itertype.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: itertype.h\n * ----------------\n * This interface allows package designers to export new collection types\n * that support iteration.  Clients of those collection types who merely\n * want to use iterators do not need to import this interface.\n */\n</scan>\n#ifndef _itertype_h\n#define _itertype_h\n\n#include \"cslib.h\"\n#include \"iterator.h\"\n#include \"cmpfn.h\"\n\n<scan class=comment>/*\n * General overview\n * ----------------\n * In order to create a collection type that supports iteration, the\n * implementor of the type must first allocate space at the beginning of\n * the concrete record for an IteratorHeader containing a function pointer\n * that allows newIterator to make a new iterator for that collection type.\n * The implementor must initialize this header in the constructor function\n * by calling enableIteration, which takes the collection pointer and a\n * type-specific callback to create the iterator.\n *\n * There are two different strategies for creating the iterator in each\n * type.  The general strategy (which is useful for iterators that are not\n * really collections, such as scanners that return a series of tokens) is\n * to call newStepIterator, which takes a pointer to a stepIterator\n * function specific for that type.  The second strategy creates the entire\n * list of values at the beginning.  Such iterators are created by calling\n * newListIterator to create an empty iterator and the calling\n * addToIteratorList for each element.\n *\n * Elements in the iterator may be sorted or unsorted depending on the\n * comparison function passed to newListIterator.\n */\n</scan>\n<a name=\"Type:NewIteratorFn\"><scan class=comment>/*\n * Type: NewIteratorFn\n * -------------------\n * Represents the class of functions that create new iterators.\n */\n</scan>\ntypedef Iterator (*NewIteratorFn)(void *collection);\n\n<a name=\"Type:StepIteratorFn\"><scan class=comment>/*\n * Type: StepIteratorFn\n * --------------------\n * Represents the class of functions that step from one element to the\n * next.\n */\n</scan>\ntypedef bool (*StepIteratorFn)(Iterator iterator, void *dst);\n\n<a name=\"Type:IteratorHeader\"><scan class=comment>/*\n * Type: IteratorHeader\n * --------------------\n * This structure must appear at the beginning of any concrete structure\n * that supports iteration.\n */\n</scan>\ntypedef struct {\n    unsigned long password;\n    NewIteratorFn newFn;\n} IteratorHeader;\n\n<a name=\"Function:enableIteration\"><scan class=comment>/*\n * Function: enableIteration\n * Usage: enableIteration(collection, newFn);\n * ------------------------------------------\n * Enables iteration for the collection.  The type-specific function\n * pointer newFn is used to initialize an iterator for this type.\n */\n</scan>\nvoid enableIteration(void *collection, NewIteratorFn newFn);\n\n<a name=\"Function:newStepIterator\"><scan class=comment>/*\n * Function: newStepIterator\n * Usage: iterator = newStepIterator(size, stepFn);\n * ------------------------------------------------\n * Creates a new iterator that uses an implementation-specific step\n * function.\n */\n</scan>\nIterator newStepIterator(int size, StepIteratorFn stepFn);\n\n<a name=\"Function:newListIterator\"><scan class=comment>/*\n * Function: newListIterator\n * Usage: iterator = newListIterator(size, cmpFn);\n * -----------------------------------------------\n * Creates a new iterator with an empty iterator list.  The first argument\n * is the size of the element type,  which makes it possible for the\n * package to allocate storage for values of that type.  The cmpFn is the\n * comparison function used to sort the iterator elements.  If cmpFn is the\n * constant NULL, the elements are entered in the order in which\n * addToIteratorList is called.\n */\n</scan>\nIterator newListIterator(int size, CompareFn cmpFn);\n\n<a name=\"Function:addToIteratorList\"><scan class=comment>/*\n * Function: addToIteratorList\n * Usage: addToIteratorList(iterator, dst);\n * ----------------------------------------\n * Adds a new element to a list-style iterator.  The order of the elements\n * is determined by the comparison function specified when the iterator was\n * created.\n */\n</scan>\nvoid addToIteratorList(Iterator iterator, void *dst);\n\n<a name=\"Function:setCollection\"><scan class=comment>/*\n * Function: setCollection\n * Usage: setCollection(iterator, collection);\n * -------------------------------------------\n * Sets the collection to which an iterator belongs.\n */\n</scan>\nvoid setCollection(Iterator iterator, void *collection);\n\n<a name=\"Function:getCollection\"><scan class=comment>/*\n * Function: getCollection\n * Usage: collection = getCollection(iterator);\n * --------------------------------------------\n * Returns the collection to which an iterator belongs.\n */\n</scan>\nvoid *getCollection(Iterator iterator);\n\n<a name=\"Function:setIteratorData\"><scan class=comment>/*\n * Function: setIteratorData\n * Usage: setIteratorData(iterator, data);\n * ---------------------------------------\n * Sets a data pointer in the iterator for use by clients.\n */\n</scan>\nvoid setIteratorData(Iterator iterator, void *data);\n\n<a name=\"Function:getIteratorData\"><scan class=comment>/*\n * Function: getIteratorData\n * Usage: data = getIteratorData(iterator);\n * ----------------------------------------\n * Returns the client data pointer from the iterator.\n */\n</scan>\nvoid *getIteratorData(Iterator iterator);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/itertype.html",
    "content": "<html>\n<head>\n<title>itertype.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><a href=\"itertype-h.html\"><code>itertype.h</code></a></h1>\nThis interface allows package designers to export new collection\ntypes that support iteration.  Clients of those collection types\nwho merely want to use iterators do not need to import this interface.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Types</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:IteratorHeader\">IteratorHeader</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This structure must appear at the beginning of any concrete structure that supports iteration.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:NewIteratorFn\">NewIteratorFn</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Represents the class of functions that create new iterators.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:StepIteratorFn\">StepIteratorFn</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Represents the class of functions that step from one element to the next.</td></tr>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:addToIteratorList\">addToIteratorList(iterator,&nbsp;dst)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Adds a new element to a list-style iterator.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:enableIteration\">enableIteration(collection,&nbsp;newFn)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Enables iteration for the collection.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getCollection\">getCollection(iterator)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the collection to which an iterator belongs.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getIteratorData\">getIteratorData(iterator)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the client data pointer from the iterator.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newListIterator\">newListIterator(size,&nbsp;cmpFn)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a new iterator with an empty iterator list.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newStepIterator\">newStepIterator(size,&nbsp;stepFn)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a new iterator that uses an implementation-specific step function.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setCollection\">setCollection(iterator,&nbsp;collection)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the collection to which an iterator belongs.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setIteratorData\">setIteratorData(iterator,&nbsp;data)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets a data pointer in the iterator for use by clients.</td></tr>\n</table>\n<h2>Type detail</h2>\n<hr>\n<a name=\"Type:NewIteratorFn\"></a>\n<pre class=detailCode>\ntypedef Iterator NewIteratorFn(*NewIteratorFn)(void *collection);\n</pre>\n<div class=detailHTML>\nRepresents the class of functions that create new iterators.\n</div>\n<hr>\n<a name=\"Type:StepIteratorFn\"></a>\n<pre class=detailCode>\ntypedef bool StepIteratorFn(*StepIteratorFn)(Iterator iterator, void *dst);\n</pre>\n<div class=detailHTML>\nRepresents the class of functions that step from one element to the next.\n</div>\n<hr>\n<a name=\"Type:IteratorHeader\"></a>\n<pre class=detailCode>\ntypedef struct {\n    unsigned long password;\n    NewIteratorFn newFn;\n} IteratorHeader;\n</pre>\n<div class=detailHTML>\nThis structure must appear at the beginning of any concrete\nstructure that supports iteration.\n</div>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:enableIteration\"></a>\n<pre class=detailCode>\nvoid enableIteration(void *collection, NewIteratorFn newFn);\n</pre>\n<div class=detailHTML>\nEnables iteration for the collection.  The type-specific function\npointer <code>newFn</code> is used to initialize an iterator\nfor this type.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nenableIteration(collection, newFn);\n</pre>\n<hr>\n<a name=\"Function:newStepIterator\"></a>\n<pre class=detailCode>\nIterator newStepIterator(int size, StepIteratorFn stepFn);\n</pre>\n<div class=detailHTML>\nCreates a new iterator that uses an implementation-specific\nstep function.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\niterator = newStepIterator(size, stepFn);\n</pre>\n<hr>\n<a name=\"Function:newListIterator\"></a>\n<pre class=detailCode>\nIterator newListIterator(int size, CompareFn cmpFn);\n</pre>\n<div class=detailHTML>\nCreates a new iterator with an empty iterator list.  The first\nargument is the size of the element type,  which makes it possible\nfor the package to allocate storage for values of that type.\nThe <code>cmpFn</code> is the comparison function used to sort\nthe iterator elements.  If <code>cmpFn</code> is the constant\n<code>NULL</code>, the elements are entered in the order in\nwhich <code>addToIteratorList</code> is called.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\niterator = newListIterator(size, cmpFn);\n</pre>\n<hr>\n<a name=\"Function:addToIteratorList\"></a>\n<pre class=detailCode>\nvoid addToIteratorList(Iterator iterator, void *dst);\n</pre>\n<div class=detailHTML>\nAdds a new element to a list-style iterator.  The order of the\nelements is determined by the comparison function specified\nwhen the iterator was created.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\naddToIteratorList(iterator, dst);\n</pre>\n<hr>\n<a name=\"Function:setCollection\"></a>\n<pre class=detailCode>\nvoid setCollection(Iterator iterator, void *collection);\n</pre>\n<div class=detailHTML>\nSets the collection to which an iterator belongs.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetCollection(iterator, collection);\n</pre>\n<hr>\n<a name=\"Function:getCollection\"></a>\n<pre class=detailCode>\nvoid *getCollection(Iterator iterator);\n</pre>\n<div class=detailHTML>\nReturns the collection to which an iterator belongs.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncollection = getCollection(iterator);\n</pre>\n<hr>\n<a name=\"Function:setIteratorData\"></a>\n<pre class=detailCode>\nvoid setIteratorData(Iterator iterator, void *data);\n</pre>\n<div class=detailHTML>\nSets a data pointer in the iterator for use by clients.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetIteratorData(iterator, data);\n</pre>\n<hr>\n<a name=\"Function:getIteratorData\"></a>\n<pre class=detailCode>\nvoid *getIteratorData(Iterator iterator);\n</pre>\n<div class=detailHTML>\nReturns the client data pointer from the iterator.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndata = getIteratorData(iterator);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/lex-h.html",
    "content": "<html>\n<head>\n<title>../lex.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: lex.h\n * -----------\n * This package implements a simple lexical analyzer.  The lexical analyzer\n * package is intimately tied to the S-expression package (see sexp.h), and\n * it is necessary to understand the types in that interface before using\n * this one.  For most applications, the tokenscanner.h interface is easier\n * to use.\n */\n</scan>\n#ifndef _lex_h\n#define _lex_h\n\n#include \"cslib.h\"\n#include \"sexp.h\"\n\n<a name=\"Type:Lexer\"><scan class=comment>/*\n * Type: Lexer\n * -----------\n * Defines the abstract data type for a lexical analyzer.\n */\n</scan>\ntypedef struct LexerCDT *Lexer;\n\n<a name=\"Type:lexhook\"><scan class=comment>/*\n * Type: lexhook\n * -------------\n * Defines a type for the lexical hook functions.\n */\n</scan>\ntypedef sexp (*lexhook)(Lexer lexer);\n\n<scan class=comment>/* Section 1: Public procedures */</scan>\n\n<a name=\"Function:newLexicalAnalyzer\"><scan class=comment>/*\n * Function: newLexicalAnalyzer\n * Usage: lexer = newLexicalAnalyzer();\n * ------------------------------------\n * Creates a new lexical analyzer and returns its lexical lexer block,\n * which is then passed to the other functions in this package.  Before\n * using the lexical analyzer, the input stream later initialized by using\n * the functions lexFromStream or lexFromString.\n */\n</scan>\nLexer newLexicalAnalyzer(void);\n\n<a name=\"Function:lexFromStream\"><scan class=comment>/*\n * Function: lexFromStream\n * Usage: lexFromStream(lexer, infile);\n * ------------------------------------\n * Initializes the lexer specified by the lexer block to read from the\n * input stream given by infile.\n */\n</scan>\nvoid lexFromStream(Lexer lexer, FILE *infile);\n\n<a name=\"Function:lexFromString\"><scan class=comment>/*\n * Function: lexFromString\n * Usage: lexFromString(lexer, input);\n * -----------------------------------\n * Initializes the lexer specified by the lexer block to read from the\n * character string input.\n */\n</scan>\nvoid lexFromString(Lexer lexer, string input);\n\n<a name=\"Function:readLex\"><scan class=comment>/*\n * Function: readLex\n * Usage: sx = readLex(lexer);\n * ---------------------------\n * Reads the next lexical token from the input stream.  For tokens that are\n * part of the basic S-expression set, the returned token is of that type. \n * For single-character operator tokens and the end-of-file token, the\n * lexer returns an S-expression whose type is the character code.\n */\n</scan>\nsexp readLex(Lexer lexer);\n\n<a name=\"Function:peekLex\"><scan class=comment>/*\n * Function: peekLex\n * Usage: sx = peekLex(lexer);\n * ---------------------------\n * Returns the same token that readLex would, but does not remove the token\n * from the lexical stream.  Thus, after calling peekLex, the next call to\n * readLex will return the same token.\n */\n</scan>\nsexp peekLex(Lexer lexer);\n\n<a name=\"Function:pushLex\"><scan class=comment>/*\n * Function: pushLex\n * Usage: pushLex(lexer, token);\n * -----------------------------\n * Pushes the specified token back into the lexical stream so that it will\n * be read as the next lexeme.\n */\n</scan>\nvoid pushLex(Lexer lexer, sexp token);\n\n<a name=\"Function:setLexClientData\"><scan class=comment>/*\n * Function: setLexClientData\n * Usage: setLexClientData(lexer, data);\n * -------------------------------------\n * Sets the client-data field in the lexical lexer.\n */\n</scan>\nvoid setLexClientData(Lexer lexer, void *data);\n\n<a name=\"Function:getLexClientData\"><scan class=comment>/*\n * Function: getLexClientData\n * Usage: data = getLexClientData(lexer);\n * --------------------------------------\n * Gets the client-data field from the lexical lexer.\n */\n</scan>\nvoid *getLexClientData(Lexer lexer);\n\n<a name=\"Function:setLexIgnoreCase\"><scan class=comment>/*\n * Function: setLexIgnoreCase\n * Usage: setLexIgnoreCase(lexer, ignore);\n * ---------------------------------------\n * Specifies whether lexical tokens are treated as case-independent.  If\n * the ignore argument is TRUE, the lexer will ignore case distinctions in\n * atoms.\n */\n</scan>\nvoid setLexIgnoreCase(Lexer lexer, bool ignore);\n\n<a name=\"Function:setLexNumericBase\"><scan class=comment>/*\n * Function: setLexNumericBase\n * Usage: setLexNumericBase(lexer, base);\n * --------------------------------------\n * Sets the default base for numbers, which must be either 8, 10, 16, or 0\n * (initial default).  If 0 is set, then decimal is assumed for numbers\n * except those beginning with 0, which are assumed to be octal, as in C. \n * If 10 is set explicitly, leading zeros do not affect the base.\n */\n</scan>\nvoid setLexNumericBase(Lexer lexer, int base);\n\n<scan class=comment>/* Section 2: Hooks */</scan>\n\n<scan class=comment>/*\n * This section defines mechanisms for changing the behavior\n * of the lexical analyzer through the use of \"hook\"\n * procedures.  When a hook is provided, the client-specified\n * routine will be called with the Lexer block as its\n * single argument.  The client function can then read\n * characters from the input stream using lexGetC (and\n * LexUngetC if necessary at the end).  Hooks return a\n * token which is returned from the lexical analyzer.  Hooks\n * may also return NIL, which usually indicates that no token\n * was found.\n */</scan>\n\n<a name=\"Function:setLexNewlineHook\"><scan class=comment>/*\n * Function: setLexNewlineHook\n * Usage: setLexNewlineHook(lexer, hook);\n * --------------------------------------\n * Specifies a hook function is called whenever a newline is read.  If the\n * procedure returns NIL, the newline is ignored.  If it returns a non-NIL\n * token, that  token is returned\n *  as the value of readLex.\n */\n</scan>\nvoid setLexNewlineHook(Lexer lexer, lexhook hook);\n\n<a name=\"Function:setLexOperatorHook\"><scan class=comment>/*\n * Function: setLexOperatorHook\n * Usage: setLexOperatorHook(lexer, hook);\n * ---------------------------------------\n * Specifies a hook function is that is called whenever an operator\n * character is read.  If the procedure returns a  non-NIL token, that\n * token is returned.  The character read to trigger this call has been\n * pushed back, and the hook is required to read at least this character.\n */\n</scan>\nvoid setLexOperatorHook(Lexer lexer, lexhook hook);\n\n<a name=\"Function:setLexCommentHook\"><scan class=comment>/*\n * Function: setLexCommentHook\n * Usage: setLexCommentHook(lexer, hook);\n * --------------------------------------\n * Specifies a hook function is that is called whenever the computer has\n * finished reading whitespace, which is typically used to scan and ignore\n * comments.  This hook function typically returns NIL after reading the\n * comment, but it may return a token just like the other hooks.\n */\n</scan>\nvoid setLexCommentHook(Lexer lexer, lexhook hook);\n\n<a name=\"Function:lexGetC\"><scan class=comment>/*\n * Function: lexGetC\n * Usage: ch = lexGetC(lexer);\n * ---------------------------\n * Reads the next character from the token stream.  This function is\n * typically called only by hook functions.\n */\n</scan>\nint lexGetC(Lexer lexer);\n\n<a name=\"Function:lexPushC\"><scan class=comment>/*\n * Function: lexPushC\n * Usage: lexPushC(lexer, ch);\n * ---------------------------\n * Pushes the character ch back on the input stream.\n */\n</scan>\nvoid lexPushC(Lexer lexer, int ch);\n\n<a name=\"Function:lexTell\"><scan class=comment>/*\n * Function: lexTell\n * Usage: n = lexTell(lexer)\n * -------------------------\n * Returns the position in the lexical stream of the current lexical point,\n * taking account of any characters that have been pushed back.  This\n * function does not update the count after calls to pushLex.\n */\n</scan>\nlong lexTell(Lexer lexer);\n\n<a name=\"Function:addTokenChar\"><scan class=comment>/*\n * Function: addTokenChar\n * Usage: addTokenChar(lexer, ch);\n * -------------------------------\n * add a character to the internal token buffer, which expands as needed\n * when characters are added.\n */\n</scan>\nvoid addTokenChar(Lexer lexer, int ch);\n\n<a name=\"Function:getTokenBuffer\"><scan class=comment>/*\n * Function: getTokenBuffer\n * Usage: str = getTokenBuffer(lexer);\n * -----------------------------------\n * Retrieves the contents of internal token buffer.\n */\n</scan>\nstring getTokenBuffer(Lexer lexer);\n\n<a name=\"Constant:newlineIsTerminator\"><scan class=comment>/*\n * Constant: newlineIsTerminator\n * -----------------------------\n * If used as a newline hook, this function causes newlines in the input to\n * appear as end-of-file markers.\n */\n</scan>\nsexp newlineIsTerminator(Lexer lexer);\n\n<a name=\"Constant:newlineIsOperator\"><scan class=comment>/*\n * Constant: newlineIsOperator\n * ---------------------------\n * If used as a newline hook, this function causes newlines to be scanned\n * as tokens.\n */\n</scan>\nsexp newlineIsOperator(Lexer lexer);\n\n<a name=\"Constant:lexOperatorsAsAtoms\"><scan class=comment>/*\n * Constant: lexOperatorsAsAtoms\n * -----------------------------\n * If used as an operator hook, this function causes operators to be\n * returned as atoms.\n */\n</scan>\nsexp lexOperatorsAsAtoms(Lexer lexer);\n\n<a name=\"Constant:semicolonComments\"><scan class=comment>/*\n * Constant: semicolonComments\n * ---------------------------\n * If used as an operator hook, this function supports comments that begin\n * with a semicolon and continue up to the end of the line.\n */\n</scan>\nsexp semicolonComments(Lexer lexer);\n\n<a name=\"Constant:cStyleComments\"><scan class=comment>/*\n * Constant: cStyleComments\n * ------------------------\n * If used as an operator hook, this function supports comments in the\n * style of C, C++, and Java.\n */\n</scan>\nsexp cStyleComments(Lexer lexer);\n\n<scan class=comment>/* Section 4: Yacc entry points */</scan>\n\n#define YYSTYPE sexp\n\nextern sexp yylval;\nextern Lexer yylstate;\nextern bool yytrace;\n\n<scan class=comment>/*\n * Yacc entry to lex package.  To use yacc with this lexer,\n * the variable yylstate must first be set by calling\n * newLexicalAnalyzer, followed by either lexFromStream or\n * lexFromString.\n */</scan>\n\nint yylex(void);\n\n<scan class=comment>/*\n * Yacc error entry.  It calls error with the yacc message\n * which may be trapped using the exception mechanism if\n * necessary.\n */</scan>\n\nint yyerror(string);\n\n<a name=\"Function:defineYaccKeyword\"><scan class=comment>/*\n * Function: defineYaccKeyword\n * Usage: defineYaccKeyword(s, code);\n * ----------------------------------\n * Defines the keyword with the print name s to return the specified code. \n * If case is being ignored in the lexer, the string should be in upper\n * case.  This function returns the atom for the keyword, but this value is\n * often ignored.\n */\n</scan>\nsexp defineYaccKeyword(string s, int code);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/lex.html",
    "content": "<html>\n<head>\n<title>lex.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1><a href=\"lex-h.html\"><code>lex.h</code></a></h1>\nThis package implements a simple lexical analyzer.  The lexical\nanalyzer package is intimately tied to the S-expression package\n(see <code>sexp.h</code>), and it is necessary to understand\nthe types in that interface before using this one.  For most\napplications, the tokenscanner.h interface is easier to use.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Types</td></tr>\n<tr><td class=indexKey><a href=\"#Type:Lexer\">Lexer</a>&nbsp;</td><td class=indexSynopsis width=100%>Defines the abstract data type for a lexical analyzer.</td></tr>\n<tr><td class=indexKey><a href=\"#Type:lexhook\">lexhook</a>&nbsp;</td><td class=indexSynopsis width=100%>Defines a type for the lexical hook functions.</td></tr>\n<tr><td class=indexHead colspan=2>Constants</td></tr>\n<tr><td class=indexKey>newlineIsTerminator&nbsp;</td><td class=indexSynopsis width=100%>If used as a newline hook, this function causes newlines in the input to appear as end-of-file markers.</td></tr>\n<tr><td class=indexKey>newlineIsOperator&nbsp;</td><td class=indexSynopsis width=100%>If used as a newline hook, this function causes newlines to be scanned as tokens.</td></tr>\n<tr><td class=indexKey>lexOperatorsAsAtoms&nbsp;</td><td class=indexSynopsis width=100%>If used as an operator hook, this function causes operators to be returned as atoms.</td></tr>\n<tr><td class=indexKey>semicolonComments&nbsp;</td><td class=indexSynopsis width=100%>If used as an operator hook, this function supports comments that begin with a semicolon and continue up to the end of the line.</td></tr>\n<tr><td class=indexKey>cStyleComments&nbsp;</td><td class=indexSynopsis width=100%>If used as an operator hook, this function supports comments in the style of C, C++, and Java.</td></tr>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><a href=\"#Function:newLexicalAnalyzer\">newLexicalAnalyzer()</a>&nbsp;</td><td class=indexSynopsis width=100%>Creates a new lexical analyzer and returns its lexical lexer block, which is then passed to the other functions in this package.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:lexFromStream\">lexFromStream(lexer,&nbsp;infile)</a>&nbsp;</td><td class=indexSynopsis width=100%>Initializes the lexer specified by the lexer block to read from the input stream given by infile.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:lexFromString\">lexFromString(lexer,&nbsp;input)</a>&nbsp;</td><td class=indexSynopsis width=100%>Initializes the lexer specified by the lexer block to read from the character string input.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:readLex\">readLex(lexer)</a>&nbsp;</td><td class=indexSynopsis width=100%>Reads the next lexical token from the input stream.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:peekLex\">peekLex(lexer)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the same token that <code>readLex</code> would, but does not remove the token from the lexical stream.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:pushLex\">pushLex(lexer,&nbsp;token)</a>&nbsp;</td><td class=indexSynopsis width=100%>Pushes the specified token back into the lexical stream so that it will be read as the next lexeme.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:setLexClientData\">setLexClientData(lexer,&nbsp;data)</a>&nbsp;</td><td class=indexSynopsis width=100%>Sets the client-data field in the lexical lexer.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:getLexClientData\">getLexClientData(lexer)</a>&nbsp;</td><td class=indexSynopsis width=100%>Gets the client-data field from the lexical lexer.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:setLexIgnoreCase\">setLexIgnoreCase(lexer,&nbsp;ignore)</a>&nbsp;</td><td class=indexSynopsis width=100%>Specifies whether lexical tokens are treated as case-independent.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:setLexNumericBase\">setLexNumericBase(lexer,&nbsp;base)</a>&nbsp;</td><td class=indexSynopsis width=100%>Sets the default base for numbers, which must be either 8, 10, 16, or 0 (initial default).</td></tr>\n<tr><td class=indexKey><a href=\"#Function:setLexNewlineHook\">setLexNewlineHook(lexer,&nbsp;hook)</a>&nbsp;</td><td class=indexSynopsis width=100%>Specifies a hook function is called whenever a newline is read.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:setLexOperatorHook\">setLexOperatorHook(lexer,&nbsp;hook)</a>&nbsp;</td><td class=indexSynopsis width=100%>Specifies a hook function is that is called whenever an operator character is read.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:setLexCommentHook\">setLexCommentHook(lexer,&nbsp;hook)</a>&nbsp;</td><td class=indexSynopsis width=100%>Specifies a hook function is that is called whenever the computer has finished reading whitespace, which is typically used to scan and ignore comments.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:lexGetC\">lexGetC(lexer)</a>&nbsp;</td><td class=indexSynopsis width=100%>Reads the next character from the token stream.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:lexPushC\">lexPushC(lexer,&nbsp;ch)</a>&nbsp;</td><td class=indexSynopsis width=100%>Pushes the character <code>ch</code> back on the input stream.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:lexTell\">lexTell(lexer)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the position in the lexical stream of the current lexical point, taking account of any characters that have been pushed back.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:addTokenChar\">addTokenChar(lexer,&nbsp;ch)</a>&nbsp;</td><td class=indexSynopsis width=100%>add a character to the internal token buffer, which expands as needed when characters are added.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:getTokenBuffer\">getTokenBuffer(lexer)</a>&nbsp;</td><td class=indexSynopsis width=100%>Retrieves the contents of internal token buffer.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:defineYaccKeyword\">defineYaccKeyword(s,&nbsp;code)</a>&nbsp;</td><td class=indexSynopsis width=100%>Defines the keyword with the print name s to return the specified code.</td></tr>\n</table>\n<h2>Type detail</h2>\n<hr>\n<a name=\"Type:Lexer\"></a>\n<pre class=detailCode>\ntypedef struct LexerCDT *Lexer;\n</pre>\n<div class=detailHTML>\nDefines the abstract data type for a lexical analyzer.\n</div>\n<hr>\n<a name=\"Type:lexhook\"></a>\n<pre class=detailCode>\ntypedef sexp (*lexhook)(Lexer lexer);\n</pre>\n<div class=detailHTML>\nDefines a type for the lexical hook functions.\n</div>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:newLexicalAnalyzer\"></a>\n<pre class=detailCode>\nLexer newLexicalAnalyzer(void);\n</pre>\n<div class=detailHTML>\nCreates a new lexical analyzer and returns its lexical\nlexer block, which is then passed to the other functions\nin this package.  Before using the lexical analyzer, the\ninput stream later initialized by using the functions\n<code>lexFromStream</code> or <code>lexFromString</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlexer = newLexicalAnalyzer();\n</pre>\n<hr>\n<a name=\"Function:lexFromStream\"></a>\n<pre class=detailCode>\nvoid lexFromStream(Lexer lexer, FILE *infile);\n</pre>\n<div class=detailHTML>\nInitializes the lexer specified by the lexer block to read\nfrom the input stream given by infile.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlexFromStream(lexer, infile);\n</pre>\n<hr>\n<a name=\"Function:lexFromString\"></a>\n<pre class=detailCode>\nvoid lexFromString(Lexer lexer, string input);\n</pre>\n<div class=detailHTML>\nInitializes the lexer specified by the lexer block to read\nfrom the character string input.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlexFromString(lexer, input);\n</pre>\n<hr>\n<a name=\"Function:readLex\"></a>\n<pre class=detailCode>\nsexp readLex(Lexer lexer);\n</pre>\n<div class=detailHTML>\nReads the next lexical token from the input stream.\nFor tokens that are part of the basic S-expression set,\nthe returned token is of that type.  For single-character\noperator tokens and the end-of-file token, the lexer returns\nan S-expression whose type is the character code.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsx = readLex(lexer);\n</pre>\n<hr>\n<a name=\"Function:peekLex\"></a>\n<pre class=detailCode>\nsexp peekLex(Lexer lexer);\n</pre>\n<div class=detailHTML>\nReturns the same token that <code>readLex</code> would, but does\nnot remove the token from the lexical stream.  Thus, after calling\n<code>peekLex</code>, the next call to <code>readLex</code> will\nreturn the same token.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsx = peekLex(lexer);\n</pre>\n<hr>\n<a name=\"Function:pushLex\"></a>\n<pre class=detailCode>\nvoid pushLex(Lexer lexer, sexp token);\n</pre>\n<div class=detailHTML>\nPushes the specified token back into the lexical stream so that it will\nbe read as the next lexeme.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\npushLex(lexer, token);\n</pre>\n<hr>\n<a name=\"Function:setLexClientData\"></a>\n<pre class=detailCode>\nvoid setLexClientData(Lexer lexer, void *data);\n</pre>\n<div class=detailHTML>\nSets the client-data field in the lexical lexer.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetLexClientData(lexer, data);\n</pre>\n<hr>\n<a name=\"Function:getLexClientData\"></a>\n<pre class=detailCode>\nvoid *getLexClientData(Lexer lexer);\n</pre>\n<div class=detailHTML>\nGets the client-data field from the lexical lexer.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndata = getLexClientData(lexer);\n</pre>\n<hr>\n<a name=\"Function:setLexIgnoreCase\"></a>\n<pre class=detailCode>\nvoid setLexIgnoreCase(Lexer lexer, bool ignore);\n</pre>\n<div class=detailHTML>\nSpecifies whether lexical tokens are treated as case-independent.\nIf the <code>ignore</code> argument is <code>TRUE</code>, the lexer\nwill ignore case distinctions in atoms.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetLexIgnoreCase(lexer, ignore);\n</pre>\n<hr>\n<a name=\"Function:setLexNumericBase\"></a>\n<pre class=detailCode>\nvoid setLexNumericBase(Lexer lexer, int base);\n</pre>\n<div class=detailHTML>\nSets the default base for numbers, which must be either 8,\n10, 16, or 0 (initial default).  If 0 is set, then decimal\nis assumed for numbers except those beginning with 0,\nwhich are assumed to be octal, as in C.  If 10 is set\nexplicitly, leading zeros do not affect the base.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetLexNumericBase(lexer, base);\n</pre>\n<hr>\n<a name=\"Function:setLexNewlineHook\"></a>\n<pre class=detailCode>\nvoid setLexNewlineHook(Lexer lexer, lexhook hook);\n</pre>\n<div class=detailHTML>\nSpecifies a hook function is called whenever a newline is read.\nIf the procedure returns <code>NIL</code>, the newline is ignored.\nIf it returns a non-<code>NIL</code> token, that  token is returned\n as the value of <code>readLex</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetLexNewlineHook(lexer, hook);\n</pre>\n<hr>\n<a name=\"Function:setLexOperatorHook\"></a>\n<pre class=detailCode>\nvoid setLexOperatorHook(Lexer lexer, lexhook hook);\n</pre>\n<div class=detailHTML>\nSpecifies a hook function is that is called whenever an operator\ncharacter is read.  If the procedure returns a  non-<code>NIL</code>\ntoken, that token is returned.  The character read to trigger this\ncall has been pushed back, and the hook is required to read at\nleast this character.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetLexOperatorHook(lexer, hook);\n</pre>\n<hr>\n<a name=\"Function:setLexCommentHook\"></a>\n<pre class=detailCode>\nvoid setLexCommentHook(Lexer lexer, lexhook hook);\n</pre>\n<div class=detailHTML>\nSpecifies a hook function is that is called whenever the computer\nhas finished reading whitespace, which is typically used to scan\nand ignore comments.  This hook function typically returns\n<code>NIL</code> after reading the comment, but it may return\na token just like the other hooks.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetLexCommentHook(lexer, hook);\n</pre>\n<hr>\n<a name=\"Function:lexGetC\"></a>\n<pre class=detailCode>\nint lexGetC(Lexer lexer);\n</pre>\n<div class=detailHTML>\nReads the next character from the token stream.  This function\nis typically called only by hook functions.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nch = lexGetC(lexer);\n</pre>\n<hr>\n<a name=\"Function:lexPushC\"></a>\n<pre class=detailCode>\nvoid lexPushC(Lexer lexer, int ch);\n</pre>\n<div class=detailHTML>\nPushes the character <code>ch</code> back on the input stream.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlexPushC(lexer, ch);\n</pre>\n<hr>\n<a name=\"Function:lexTell\"></a>\n<pre class=detailCode>\nlong lexTell(Lexer lexer);\n</pre>\n<div class=detailHTML>\nReturns the position in the lexical stream of the current\nlexical point, taking account of any characters that have\nbeen pushed back.  This function does not update the count\nafter calls to <code>pushLex</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nn = lexTell(lexer)\n</pre>\n<hr>\n<a name=\"Function:addTokenChar\"></a>\n<pre class=detailCode>\nvoid addTokenChar(Lexer lexer, int ch);\n</pre>\n<div class=detailHTML>\nadd a character to the internal token buffer, which expands\nas needed when characters are added.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\naddTokenChar(lexer, ch);\n</pre>\n<hr>\n<a name=\"Function:getTokenBuffer\"></a>\n<pre class=detailCode>\nstring getTokenBuffer(Lexer lexer);\n</pre>\n<div class=detailHTML>\nRetrieves the contents of internal token buffer.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstr = getTokenBuffer(lexer);\n</pre>\n<hr>\n<a name=\"Function:defineYaccKeyword\"></a>\n<pre class=detailCode>\nsexp defineYaccKeyword(string s, int code);\n</pre>\n<div class=detailHTML>\nDefines the keyword with the print name s to return\nthe specified code.  If case is being ignored in the\nlexer, the string should be in upper case.  This\nfunction returns the atom for the keyword, but this\nvalue is often ignored.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndefineYaccKeyword(s, code);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/loadobj-h.html",
    "content": "<html>\n<head>\n<title>../loadobj.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: loadobj.h\n * ---------------\n * This interface supports dynamic loading of functions from object files. \n * Any references in the object file to previously defined objects are\n * allowed, but no additional searching or unresolved references are\n * supported.\n */\n</scan>\n#ifndef _loadobj_h\n#define _loadobj_h\n\n#include \"cslib.h\"\n\n<a name=\"Function:loadObject\"><scan class=comment>/*\n * Function: loadObject\n * Usage: loadObject(pathname);\n * ----------------------------\n * Loads the object file into the current executable.\n */\n</scan>\nvoid loadObject(string pathname);\n\n<a name=\"Function:loadSymbols\"><scan class=comment>/*\n * Function: loadSymbols\n * Usage: loadSymbols(progname);\n * -----------------------------\n * Loads the symbols from the executable program.\n */\n</scan>\nvoid loadSymbols(string progname);\n\n<a name=\"Function:findFunction\"><scan class=comment>/*\n * Function: findFunction\n * Usage: fn = findFunction(fnname);\n * ---------------------------------\n * Looks up the function in the symbol table and returns a pointer to the\n * code.\n */\n</scan>\nproc findFunction(string fnname);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/loadobj.html",
    "content": "<html>\n<head>\n<title>loadobj.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><a href=\"loadobj-h.html\"><code>loadobj.h</code></a></h1>\nThis interface supports dynamic loading of functions from object files.\nAny references in the object file to previously defined objects are\nallowed, but no additional searching or unresolved references are\nsupported.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:loadObject\">loadObject(pathname)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Loads the object file into the current executable.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:loadSymbols\">loadSymbols(progname)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Loads the symbols from the executable program.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:findFunction\">findFunction(fnname)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Looks up the function in the symbol table and returns a pointer to the code.</td></tr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:loadObject\"></a>\n<pre class=detailCode>\nvoid loadObject(string pathname);\n</pre>\n<div class=detailHTML>\nLoads the object file into the current executable.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nloadObject(pathname);\n</pre>\n<hr>\n<a name=\"Function:loadSymbols\"></a>\n<pre class=detailCode>\nvoid loadSymbols(string progname);\n</pre>\n<div class=detailHTML>\nLoads the symbols from the executable program.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nloadSymbols(progname);\n</pre>\n<hr>\n<a name=\"Function:findFunction\"></a>\n<pre class=detailCode>\nproc findFunction(string fnname);\n</pre>\n<div class=detailHTML>\nLooks up the function in the symbol table and returns a pointer to the\ncode.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfn = findFunction(fnname);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/map-h.html",
    "content": "<html>\n<head>\n<title>../map.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: map.h\n * -----------\n * This interface defines a map abstraction that associates string-valued\n * keys with values.  In contrast to the HashMap type defined in the\n * hashmap.h interface, the implementation of the Map type uses a balanced\n * binary tree, which offers logarithmic performance and sorted iteration.\n *\n * In most applications, the restriction of keys to strings is easy to\n * circumvent.  The simplest strategy is to convert key values to strings\n * before inserting them into the map.  A more general strategy is to use\n * the bst.h interface instead.\n */\n</scan>\n#ifndef _map_h\n#define _map_h\n\n#include \"cslib.h\"\n#include \"generic.h\"\n#include \"iterator.h\"\n\n<a name=\"Type:Map\"><scan class=comment>/*\n * Type: Map\n * ---------\n * This type is the ADT used to represent the map.\n */\n</scan>\ntypedef struct MapCDT *Map;\n\n<scan class=comment>/* Exported entries */</scan>\n\n<a name=\"Function:newMap\"><scan class=comment>/*\n * Function: newMap\n * Usage: map = newMap();\n * ----------------------\n * Allocates a new map with no entries.\n */\n</scan>\nMap newMap();\n\n<a name=\"Function:freeMap\"><scan class=comment>/*\n * Function: freeMap\n * Usage: freeMap(map);\n * --------------------\n * Frees the storage associated with the map.\n */\n</scan>\nvoid freeMap(Map map);\n\n<a name=\"Function:size\"><scan class=comment>/*\n * Function: size\n * Usage: n = size(map);\n * ---------------------\n * Returns the number of elements in the map.\n */\n</scan>\nint sizeMap(Map map);\n\n<a name=\"Function:isEmpty\"><scan class=comment>/*\n * Function: isEmpty\n * Usage: if (isEmpty(map)) . . .\n * ------------------------------\n * Returns true if the map has no entries.\n */\n</scan>\nbool isEmptyMap(Map map);\n\n<a name=\"Function:clear\"><scan class=comment>/*\n * Function: clear\n * Usage: clear(map);\n * ------------------\n * Removes all entries from the map.\n */\n</scan>\nvoid clearMap(Map map);\n\n<a name=\"Function:clone\"><scan class=comment>/*\n * Function: clone\n * Usage: newmap = clone(map);\n * ---------------------------\n * Creates a copy of the map.  The clone function copies only the first\n * level of the structure and does not copy the individual elements.\n */\n</scan>\nMap cloneMap(Map map);\n\n<a name=\"Function:put\"><scan class=comment>/*\n * Function: put\n * Usage: put(map, key, value);\n * ----------------------------\n * Associates key with value in the map.  Each call to put supersedes any\n * previous definition for key.\n */\n</scan>\nvoid putMap(Map map, string key, void *value);\n\n<a name=\"Function:get\"><scan class=comment>/*\n * Function: get\n * Usage: void *value = get(map, key);\n * -----------------------------------\n * Returns the value associated with key in the map, or NULL, if no such\n * value exists.\n */\n</scan>\nvoid *getMap(Map map, string key);\n\n<a name=\"Function:containsKey\"><scan class=comment>/*\n * Function: containsKey\n * Usage: if (containsKey(map, key)) . . .\n * ---------------------------------------\n * Checks to see if the map contains the specified key.\n */\n</scan>\nbool containsKeyMap(Map map, string key);\n\n<a name=\"Function:remove\"><scan class=comment>/*\n * Function: remove\n * Usage: remove(map, key);\n * ------------------------\n * Removes the key and its value from the map.\n */\n</scan>\nvoid removeMap(Map map, string key);\n\n<a name=\"Function:map\"><scan class=comment>/*\n * Function: map\n * Usage: map(map, fn, data);\n * --------------------------\n * Iterates through the map and calls the function fn on each entry.  The\n * callback function takes the following arguments:\n *\n *\n *  The key\n *  The associated value\n *  The data pointer\n *\n *\n * The data pointer allows the client to pass state information to the\n * function fn, if necessary.  If no such information is required, this\n * argument should be NULL.\n */\n</scan>\nvoid mapMap(Map map, proc fn, void *data);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/map.html",
    "content": "<html>\n<head>\n<title>map.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><a href=\"map-h.html\"><code>map.h</code></a></h1>\nThis interface defines a map abstraction that associates string-valued\nkeys with values.  In contrast to the <code>HashMap</code> type defined\nin the <code>hashmap.h</code> interface, the implementation of the\n<code>Map</code> type uses a balanced binary tree, which offers\nlogarithmic performance and sorted iteration.\n\n<p>In most applications, the restriction of keys to strings is easy\nto circumvent.  The simplest strategy is to convert key values to\nstrings before inserting them into the map.  A more general strategy\nis to use the <code>bst.h</code> interface instead.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Type</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:Map\">Map</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This type is the ADT used to represent the map.</td></tr>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newMap\">newMap()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Allocates a new map with no entries.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:freeMap\">freeMap(map)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Frees the storage associated with the map.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:size\">size(map)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the number of elements in the map.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:isEmpty\">isEmpty(map)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the map has no entries.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:clear\">clear(map)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Removes all entries from the map.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:clone\">clone(map)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a copy of the map.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:put\">put(map,&nbsp;key,&nbsp;value)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Associates <code>key</code> with <code>value</code> in the map.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:get\">get(map,&nbsp;key)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the value associated with <code>key</code> in the map, or <code>NULL</code>, if no such value exists.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:containsKey\">containsKey(map,&nbsp;key)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Checks to see if the map contains the specified key.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:remove\">remove(map,&nbsp;key)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Removes the key and its value from the map.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:map\">map(map,&nbsp;fn,&nbsp;data)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Iterates through the map and calls the function <code>fn</code> on each entry.</td></tr>\n</table>\n<h2>Type detail</h2>\n<hr>\n<a name=\"Type:Map\"></a>\n<pre class=detailCode>\ntypedef struct MapCDT *Map;\n</pre>\n<div class=detailHTML>\nThis type is the ADT used to represent the map.\n</div>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:newMap\"></a>\n<pre class=detailCode>\nMap newMap();\n</pre>\n<div class=detailHTML>\nAllocates a new map with no entries.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap = newMap();\n</pre>\n<hr>\n<a name=\"Function:freeMap\"></a>\n<pre class=detailCode>\nvoid freeMap(Map map);\n</pre>\n<div class=detailHTML>\nFrees the storage associated with the map.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfreeMap(map);\n</pre>\n<hr>\n<a name=\"Function:size\"></a>\n<pre class=detailCode>\nint size(Map map);\n</pre>\n<div class=detailHTML>\nReturns the number of elements in the map.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nn = size(map);\n</pre>\n<hr>\n<a name=\"Function:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty(Map map);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the map has no entries.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (isEmpty(map)) . . .\n</pre>\n<hr>\n<a name=\"Function:clear\"></a>\n<pre class=detailCode>\nvoid clear(Map map);\n</pre>\n<div class=detailHTML>\nRemoves all entries from the map.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nclear(map);\n</pre>\n<hr>\n<a name=\"Function:clone\"></a>\n<pre class=detailCode>\nMap clone(Map map);\n</pre>\n<div class=detailHTML>\nCreates a copy of the map.  The <code>clone</code> function copies\nonly the first level of the structure and does not copy the individual\nelements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nnewmap = clone(map);\n</pre>\n<hr>\n<a name=\"Function:put\"></a>\n<pre class=detailCode>\nvoid put(Map map, string key, void *value);\n</pre>\n<div class=detailHTML>\nAssociates <code>key</code> with <code>value</code> in the map.\nEach call to <code>put</code> supersedes any previous definition\nfor <code>key</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nput(map, key, value);\n</pre>\n<hr>\n<a name=\"Function:get\"></a>\n<pre class=detailCode>\nvoid *get(Map map, string key);\n</pre>\n<div class=detailHTML>\nReturns the value associated with <code>key</code> in the map,\nor <code>NULL</code>, if no such value exists.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvoid *value = get(map, key);\n</pre>\n<hr>\n<a name=\"Function:containsKey\"></a>\n<pre class=detailCode>\nbool containsKey(Map map, string key);\n</pre>\n<div class=detailHTML>\nChecks to see if the map contains the specified key.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (containsKey(map, key)) . . .\n</pre>\n<hr>\n<a name=\"Function:remove\"></a>\n<pre class=detailCode>\nvoid remove(Map map, string key);\n</pre>\n<div class=detailHTML>\nRemoves the key and its value from the map.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nremove(map, key);\n</pre>\n<hr>\n<a name=\"Function:map\"></a>\n<pre class=detailCode>\nvoid map(Map map, proc fn, void *data);\n</pre>\n<div class=detailHTML>\nIterates through the map and calls the function <code>fn</code> on\neach entry.  The callback function takes the following arguments:\n\n<ul>\n <li>The key\n <li>The associated value\n <li>The <code>data</code> pointer\n</ul>\n\nThe <code>data</code> pointer allows the client to pass state\ninformation to the function <code>fn</code>, if necessary.  If no such\ninformation is required, this argument should be <code>NULL</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap(map, fn, data);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/options-h.html",
    "content": "<html>\n<head>\n<title>../options.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: options.h\n * ---------------\n * This interface defines a set of options that can be scanned on the\n * command line.\n */\n</scan>\n#ifndef _cmdscan_h\n#define _cmdscan_h\n\n#include \"cslib.h\"\n#include \"hashmap.h\"\n\n<a name=\"Function:parseOptions\"><scan class=comment>/*\n * Function: parseOptions\n * ----------------------\n * Parses shell arguments into a table of options and a list of unprocessed\n * values.  The general pattern of use is\n *\n *    options = parseOptions(args, optionSpec);\n *\n * where args is a NULL-terminated list of strings and optionSpec is a\n * NULL-terminated array of strings (typically initialized at compile time)\n * indicating what options are legal.  The return value is a HashMap that\n * contains both the bindings of the option names (including the leading\n * minus sign) and a special entry under the name args that is a\n * NULL-terminated array of the remaining arguments.\n *\n * Each element of optionSpec is a string that begins with the option name\n * and then includes an additional field to specify the value that appears\n * in the next argument position.  The standard fields are:\n *\n *\n * &lt;int&gt;\n *     An integer value\n * &lt;double&gt;\n *     A floating-point value\n * &lt;string&gt;\n *     An arbitrary string\n * &lt;char&gt;\n *     A single character\n * &lt;bool&gt;\n *     A boolean value\n * x|y|z\n *     One of the specified options\n *\n *\n * Any argument class that is not defined in the above list is treated as a\n * string, and the client is responsible for checking that the supplied\n * value is valid.\n */\n</scan>\nHashMap parseOptions(string args[], string optionSpec[]);\n\n<a name=\"Function:parseShellArgs\"><scan class=comment>/*\n * Function: parseShellArgs\n * ------------------------\n * Parses a string into individual arguments in the style of the various\n * implementations of the Unix shell.  Argument tokens are separated by\n * whitespace.  This implementation recognizes the quoting conventions of a\n * single backslash (which quotes the next character) and either single or\n * double quotation marks, which quote the intervening characters.  No\n * other metacharacters are recognized.\n */\n</scan>\nstring *parseShellArgs(string line);\n\n<a name=\"Function:getOption\"><scan class=comment>/*\n * Function: getOption\n * -------------------\n * Gets an option value from the table, supplying a default value if the\n * option is undefined.\n */\n</scan>\nstring getOption(HashMap options, string key, string def);\n\n<a name=\"Function:getArgList\"><scan class=comment>/*\n * Function: getArgList\n * --------------------\n * Gets the list of arguments that were not interpreted by the option\n * parser.\n */\n</scan>\nstring *getArgList(HashMap options);\n\n<a name=\"Function:getIntOption\"><scan class=comment>/*\n * Function: getIntOption\n * ----------------------\n * Gets an integer option from the table, supplying a default value if the\n * option is undefined.\n */\n</scan>\nint getIntOption(HashMap options, string key, int def);\n\n<a name=\"Function:getDoubleOption\"><scan class=comment>/*\n * Function: getDoubleOption\n * -------------------------\n * Gets a numeric option from the table, supplying a default value if the\n * option is undefined.\n */\n</scan>\ndouble getDoubleOption(HashMap options, string key, double def);\n\n<a name=\"Function:getCharOption\"><scan class=comment>/*\n * Function: getCharOption\n * -----------------------\n * Gets a character option from the table, supplying a default value if the\n * option is undefined.\n */\n</scan>\nint getCharOption(HashMap options, string key, char def);\n\n<a name=\"Function:getBoolOption\"><scan class=comment>/*\n * Function: getBoolOption\n * -----------------------\n * Gets a Boolean option from the table, supplying a default value if the\n * option is undefined.\n */\n</scan>\nbool getBoolOption(HashMap options, string key, bool def);\n\n<a name=\"Function:getUnitsOption\"><scan class=comment>/*\n * Function: getUnitsOption\n * ------------------------\n * Gets a units value from an option table.  The value for the units option\n * consists of a number followed by a unit specification, which can be any\n * of the following: in (or i), cm, pt, or px.\n */\n</scan>\ndouble getUnitsOption(HashMap options, string key, double def);\n\n<a name=\"Function:getColorOption\"><scan class=comment>/*\n * Function: getColorOption\n * ------------------------\n * Gets a color value from an option table, which is returned here as a\n * PostScript string that sets the color to the desired value.  The\n * supplied argument can be any of the following:\n *\n *   \n *     name  \n *     A standard color name\n *   \n *   \n *     rrggbb  \n *     A hexadecimal RGB value\n *   \n *   \n *     0xrrggbb  \n *     A hexadecimal RGB value using C style\n *   \n *   \n *     #rrggbb  \n *     A hexadecimal RGB value using HTML style\n *   \n *   \n *     grayscale  \n *     A floating-point value between 0 and 1 indicating grayscale\n *   \n *   \n *     screen%  \n *     A percentage value of the second-color screen\n *   \n */\n</scan>\nstring getColorOption(HashMap options, string key, string def);\n\n<a name=\"Function:showUsage\"><scan class=comment>/*\n * Function: showUsage\n * -------------------\n * Displays a message describing the command line and its options.\n */\n</scan>\nvoid showUsage(string usage, string spec[]);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/options.html",
    "content": "<html>\n<head>\n<title>options.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><a href=\"options-h.html\"><code>options.h</code></a></h1>\nThis interface defines a set of options that can be scanned on\nthe command line.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:parseOptions\">parseOptions</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Parses shell arguments into a table of options and a list of unprocessed values.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:parseShellArgs\">parseShellArgs</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Parses a string into individual arguments in the style of the various implementations of the Unix shell.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getOption\">getOption</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Gets an option value from the table, supplying a default value if the option is undefined.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getArgList\">getArgList</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Gets the list of arguments that were not interpreted by the option parser.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getIntOption\">getIntOption</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Gets an integer option from the table, supplying a default value if the option is undefined.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getDoubleOption\">getDoubleOption</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Gets a numeric option from the table, supplying a default value if the option is undefined.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getCharOption\">getCharOption</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Gets a character option from the table, supplying a default value if the option is undefined.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getBoolOption\">getBoolOption</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Gets a Boolean option from the table, supplying a default value if the option is undefined.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getUnitsOption\">getUnitsOption</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Gets a units value from an option table.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getColorOption\">getColorOption</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Gets a color value from an option table, which is returned here as a PostScript string that sets the color to the desired value.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:showUsage\">showUsage</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Displays a message describing the command line and its options.</td></tr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:parseOptions\"></a>\n<pre class=detailCode>\nHashMap parseOptions(string args[], string optionSpec[]);\n</pre>\n<div class=detailHTML>\nParses shell arguments into a table of options and a list of\nunprocessed values.  The general pattern of use is\n\n<pre>\n   options = parseOptions(args, optionSpec);\n</pre>\n\nwhere <code>args</code> is a <code>NULL</code>-terminated list of\nstrings and <code>optionSpec</code> is a <code>NULL</code>-terminated\narray of strings (typically initialized at compile time)\nindicating what options are legal.  The return value is a\n<code>HashMap</code> that contains both the bindings of the option\nnames (including the leading minus sign) and a special entry under\nthe name <code>args</code> that is a <code>NULL</code>-terminated\narray of the remaining arguments.\n\n<p>Each element of <code>optionSpec</code> is a string that\nbegins with the option name and then includes an additional\nfield to specify the value that appears in the next argument\nposition.  The standard fields are:\n\n<p><table>\n<tr><td><code>&lt;int&gt;</code></td>\n    <td>An integer value</td></tr>\n<tr><td><code>&lt;double&gt;</code></td>\n    <td>A floating-point value</td></tr>\n<tr><td><code>&lt;string&gt;</code></td>\n    <td>An arbitrary string</td></tr>\n<tr><td><code>&lt;char&gt;</code></td>\n    <td>A single character</td></tr>\n<tr><td><code>&lt;bool&gt;</code></td>\n    <td>A boolean value</td></tr>\n<tr><td><code>x|y|z</code></td>\n    <td>One of the specified options</td></tr>\n</table></p>\n\nAny argument class that is not defined in the above list is treated\nas a string, and the client is responsible for checking that the\nsupplied value is valid.\n</div>\n<hr>\n<a name=\"Function:parseShellArgs\"></a>\n<pre class=detailCode>\nstring *parseShellArgs(string line);\n</pre>\n<div class=detailHTML>\nParses a string into individual arguments in the style of the\nvarious implementations of the Unix shell.  Argument tokens\nare separated by whitespace.  This implementation recognizes\nthe quoting conventions of a single backslash (which quotes\nthe next character) and either single or double quotation marks,\nwhich quote the intervening characters.  No other metacharacters\nare recognized.\n</div>\n<hr>\n<a name=\"Function:getOption\"></a>\n<pre class=detailCode>\nstring getOption(HashMap options, string key, string def);\n</pre>\n<div class=detailHTML>\nGets an option value from the table, supplying a default value\nif the option is undefined.\n</div>\n<hr>\n<a name=\"Function:getArgList\"></a>\n<pre class=detailCode>\nstring *getArgList(HashMap options);\n</pre>\n<div class=detailHTML>\nGets the list of arguments that were not interpreted by the option\nparser.\n</div>\n<hr>\n<a name=\"Function:getIntOption\"></a>\n<pre class=detailCode>\nint getIntOption(HashMap options, string key, int def);\n</pre>\n<div class=detailHTML>\nGets an integer option from the table, supplying a default value\nif the option is undefined.\n</div>\n<hr>\n<a name=\"Function:getDoubleOption\"></a>\n<pre class=detailCode>\ndouble getDoubleOption(HashMap options, string key, double def);\n</pre>\n<div class=detailHTML>\nGets a numeric option from the table, supplying a default value\nif the option is undefined.\n</div>\n<hr>\n<a name=\"Function:getCharOption\"></a>\n<pre class=detailCode>\nint getCharOption(HashMap options, string key, char def);\n</pre>\n<div class=detailHTML>\nGets a character option from the table, supplying a default value\nif the option is undefined.\n</div>\n<hr>\n<a name=\"Function:getBoolOption\"></a>\n<pre class=detailCode>\nbool getBoolOption(HashMap options, string key, bool def);\n</pre>\n<div class=detailHTML>\nGets a Boolean option from the table, supplying a default value\nif the option is undefined.\n</div>\n<hr>\n<a name=\"Function:getUnitsOption\"></a>\n<pre class=detailCode>\ndouble getUnitsOption(HashMap options, string key, double def);\n</pre>\n<div class=detailHTML>\nGets a units value from an option table.  The value for the units\noption consists of a number followed by a unit specification, which\ncan be any of the following: <code>in</code> (or <code>i</code>),\n<code>cm</code>, <code>pt</code>, or <code>px</code>.\n</div>\n<hr>\n<a name=\"Function:getColorOption\"></a>\n<pre class=detailCode>\nstring getColorOption(HashMap options, string key, string def);\n</pre>\n<div class=detailHTML>\nGets a color value from an option table, which is returned here as\na PostScript string that sets the color to the desired value.  The\nsupplied argument can be any of the following:\n\n<table>\n  <tr>\n    <td valign=top><i>name</i></td><td>&nbsp;&nbsp;</td>\n    <td>A standard color name</td>\n  </tr>\n  <tr>\n    <td valign=top><code>rrggbb</code></td><td>&nbsp;&nbsp;</td>\n    <td>A hexadecimal RGB value</td>\n  </tr>\n  <tr>\n    <td valign=top><code>0xrrggbb</code></td><td>&nbsp;&nbsp;</td>\n    <td>A hexadecimal RGB value using C style</td>\n  </tr>\n  <tr>\n    <td valign=top><code>#rrggbb</code></td><td>&nbsp;&nbsp;</td>\n    <td>A hexadecimal RGB value using HTML style</td>\n  </tr>\n  <tr>\n    <td valign=top><i>grayscale</i></td><td>&nbsp;&nbsp;</td>\n    <td>A floating-point value between 0 and 1 indicating grayscale</td>\n  </tr>\n  <tr>\n    <td valign=top><i>screen</i><code>%</code></td><td>&nbsp;&nbsp;</td>\n    <td>A percentage value of the second-color screen</td>\n  </tr>\n</table>\n</div>\n<hr>\n<a name=\"Function:showUsage\"></a>\n<pre class=detailCode>\nvoid showUsage(string usage, string spec[]);\n</pre>\n<div class=detailHTML>\nDisplays a message describing the command line and its options.\n</div>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/pictures/GInteractorDiagrams/GCheckBox.html",
    "content": "<p>The display image of a check box is machine-dependent, but the declaration\n\n<pre>\n    GCheckBox *traceBox = new GCheckBox(\"Trace\");\n</pre>\n\ntypically produces a check box that looks something like this:\n\n<p><div class=inset>\n<img src=\"images/GCheckBox.png\" alt=\"GCheckBox\">\n</div>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/pictures/GInteractorDiagrams/GChooser.html",
    "content": "<p>The display image of a <code>GChooser</code> is machine-dependent,\nbut the chooser generated by this code typically looks something like this:\n\n<p><div class=inset>\n<img src=\"images/GChooser.png\" alt=\"GChooser\">\n</div>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/pictures/GInteractorDiagrams/GSlider.html",
    "content": "<p>The display image of a slider is machine-dependent, but the declaration\n\n<pre>\n    GSlider *slider = new GSlider();\n</pre>\n\ntypically produces a slider that looks something like this:\n\n<p><div class=inset>\n<img src=\"images/GSlider.png\" alt=\"GSlider\">\n</div>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/pictures/GObjectDiagrams/GArcExamples.html",
    "content": "<p>The following screenshots show several examples of how the\n<code>GArc</code> constructor interprets the <code>start</code>\nand <code>sweep</code> parameters:\n\n<p><div class=inset>\n<img src=\"images/GArcExamples.png\" width=700 alt=\"GArcExamples\">\n</div>\n\n<p>In the code fragments underneath each of these diagrams, <code>r</code>\nis the radius of the circular arc, and <code>cx</code> and <code>cy</code>\nare the coordinates of the center or the window.\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/pictures/GObjectDiagrams/GArcExamples.ps",
    "content": "#include <booktools.ps>\n\n/SF 0.8 def\n/TITLE_SIZE 12 def\n/TEXT_SIZE 11 def\n/SYSTEM MAC-OSX def\n\n/WINDOW_WIDTH 2.9 inch 3 sub SF div def\n/WINDOW_HEIGHT 1.1 inch SF div 1 sub def\n/WINDOW_XSEP 0.25 inch def\n/WINDOW_YSEP 0.5 inch def\n/WINDOW_X1 100 def\n/WINDOW_X2 WINDOW_X1 WINDOW_WIDTH add WINDOW_XSEP add def\n/WINDOW_Y2 100 def\n/WINDOW_Y1 WINDOW_Y2 WINDOW_HEIGHT add WINDOW_YSEP add def\n/ARC_RADIUS 30 def\n/DASHES [1.5 2] def\n/SHOW_BOX false def\n\n/arcExample {\n  20 dict begin\n    gsave\n      /sweep exch def\n      /start exch def\n      /y exch def\n      /x exch def\n      /num exch def\n      /code (GArc *a) def\n      /code code num ( ) cvs conc def\n      /code code ( = new GArc\\(2 * r, 2 * r, ) conc def\n      /code code start (    ) cvs conc def\n      /code code (, ) conc def\n      /code code sweep (    ) cvs conc def\n      /code code (\\);) conc def\n      /Courier-Bold findfont 9 SF div scalefont setfont\n      white\n      x y WINDOW_WIDTH WINDOW_HEIGHT 10 sub fillbox\n      black\n      x y WINDOW_WIDTH WINDOW_HEIGHT (GArcExample) num ( ) cvs conc\n        drawGraphicsWindow\n      gsave\n        windowX windowWidth 2 div add windowY windowHeight 2 div add translate\n        /r ARC_RADIUS def\n        SHOW_BOX {\n          0.4 setlinewidth\n          DASHES 0 setdash\n          r neg r r 2 mul 0 drawline\n          r neg r neg r 2 mul 0 drawline\n          r neg r 0 r 2 mul neg drawline\n          r r 0 r 2 mul neg drawline\n          [] 0 setdash\n        } if\n        1 setlinewidth\n        newpath\n          sweep 0 lt {\n            0 0 r 0.5 sub start dup sweep add arcn\n          } {\n            0 0 r 0.5 sub start dup sweep add arc\n          } ifelse\n        stroke\n      grestore\n      /tx windowX 5 add def\n      /ty windowY 11 sub def\n      tx ty moveto\n      -1 0 code ashow\n      tx ty 10 sub moveto\n      /code (gw.add\\(a) def\n      /code code num ( ) cvs conc def\n      /code code (, cx - r, cy - r\\);) conc def\n      -1 0 code ashow\n    grestore\n  end\n} def\n\ngsave\n  SF dup scale\n  1 WINDOW_X1 WINDOW_Y1  0 60 arcExample\n  2 WINDOW_X2 WINDOW_Y1 45 180 arcExample\n  3 WINDOW_X1 WINDOW_Y2 -45 90 arcExample\n  4 WINDOW_X2 WINDOW_Y2 0 -135 arcExample\ngrestore\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/pictures/GObjectDiagrams/GArcGeometry.html",
    "content": "<p>The following diagram illustrates the interpretation of these parameters\nfor the arc shown in <font color=red>red</font>:\n\n<p><div class=inset>\n<img src=\"images/GArcGeometry.png\" width=260 alt=\"GArcGeometry\">\n</div>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/pictures/GObjectDiagrams/GArcGeometry.ps",
    "content": "#include <booktools.ps>\n\n/DOT_RADIUS 2 def\n/X0 0.6 inch def\n/Y0 0.8 inch def\n/ARROWHEAD_BREADTH 6 def\n/ARROWHEAD_LENGTH 4 def\n/ARROW_LENGTH 0.2 inch def\n/ARC_RADIUS 1.20 inch def\n/GRAY_LEVEL 0 def\n/CAPTION_DELTA 0.3 inch def\n/SWEEP_LABEL_ANGLE 150 def\n/SWEEP_R 0.5 def\n/START_R 0.4 def\n/DASHES [1.5 2] def\n\n200 200 translate\ngsave\n  0.4 setlinewidth\n  /r ARC_RADIUS def\n  GRAY_LEVEL setgray\n  r neg 0 r 0 connect\n  0 r neg 0 r connect\n  DASHES 0 setdash\n  r neg r r 2 mul CAPTION_DELTA add 0 drawline\n  r neg r neg r 2 mul CAPTION_DELTA add 0 drawline\n  r neg r 0 r 2 mul CAPTION_DELTA add neg drawline\n  r r 0 r 2 mul CAPTION_DELTA add neg drawline\n  gsave\n    45 rotate\n    0 0 r 0 connect\n    -90 rotate\n    0 0 r 0 connect\n  grestore\n  [ ] 0 setdash\n  r neg r DOT_RADIUS fillcircle\n  newpath\n    0 0 r START_R mul 0 45 arc\n    currentpoint\n  stroke ARROWHEAD_LENGTH ARROWHEAD_BREADTH 135 arrowhead\n  newpath\n    0 0 r SWEEP_R mul 45 315 arc\n    currentpoint ARROWHEAD_LENGTH ARROWHEAD_BREADTH 45 arrowhead\n  stroke\n  12 textfont\n  r neg ((x, y)) stringwidth pop 2 div sub 0.75 add r 5 add moveto\n  (\\() show\n  12 italicfont\n  (x) show\n  12 textfont\n  (,) show\n  1.5 0 rmoveto\n  12 italicfont\n  (y) show\n  12 textfont\n  (\\)) show\n  12 italicfont\n  r START_R mul 12 moveto (start) show\n  r SWEEP_R mul dup SWEEP_LABEL_ANGLE cos mul (sweep) stringwidth pop sub 3 sub\n    exch SWEEP_LABEL_ANGLE sin mul moveto (sweep) show\n  /y r neg CAPTION_DELTA 0.7 mul sub def\n  gsave\n    /w (width) stringwidth pop def\n    w 2 div neg y 2.5 sub moveto (width) show\n    w 2 div neg 2.5 sub y r neg 1 add y connect\n    r neg 1 add y ARROWHEAD_LENGTH ARROWHEAD_BREADTH 180 arrowhead\n    w 2 div 2 add y r 1 sub y connect\n    r 1 sub y ARROWHEAD_LENGTH ARROWHEAD_BREADTH 0 arrowhead\n    90 rotate\n    /w (height) stringwidth pop def\n    w 2 div neg y 2.5 sub moveto (height) show\n    w 2 div neg 2.5 sub y r neg 1 add y connect\n    r neg 1 add y ARROWHEAD_LENGTH ARROWHEAD_BREADTH 180 arrowhead\n    w 2 div 2 add y r 1 sub y connect\n    r 1 sub y ARROWHEAD_LENGTH ARROWHEAD_BREADTH 0 arrowhead\n  grestore\n  red\n  1 setlinewidth\n  newpath\n    0 0 ARC_RADIUS 0.5 sub 45 315 arc\n  stroke\ngrestore\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/pictures/GObjectDiagrams/GLabelGeometry.html",
    "content": "<p>The following diagram illustrates the interpretation of these terms:\n\n<p><div class=inset>\n<img src=\"images/GLabelGeometry.png\" width=625 alt=\"GLabelGeometry\">\n</div>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/pictures/GObjectDiagrams/GLabelGeometry.ps",
    "content": "#include <booktools.ps>\n#include <brace.ps>\n\n/DOT_RADIUS 2 def\n/X0 0.6 inch def\n/Y0 0.8 inch def\n/POINTSIZE 32 def\n/ARROWHEAD_BREADTH 6 def\n/ARROWHEAD_LENGTH 4 def\n/ARROW_LENGTH 0.2 inch def\n/EXTRA_BASELINE 8 def\n/EXTRA_Y_LINE 5 def\n/ASCENT POINTSIZE 0.72 mul def\n/DESCENT POINTSIZE 0.22 mul def\n\ngsave\n  /x X0 def\n  /y1 Y0 def\n  /y2 y1 POINTSIZE sub def\n  0.3 setlinewidth\n  gsave\n    /Helvetica findfont POINTSIZE scalefont setfont\n    /width (jumped over the lazy dog) stringwidth pop def\n    /rule (lazy dog) stringwidth pop EXTRA_BASELINE add 2 add def\n  grestore\n  gsave\n    black\n    [1.5 2] 0 setdash\n    x EXTRA_BASELINE sub y1 width EXTRA_BASELINE 2 mul add 0 drawline\n    x EXTRA_BASELINE sub y2 width EXTRA_BASELINE 2 mul add 0 drawline\n    x y1 ASCENT add EXTRA_Y_LINE add 0 ASCENT POINTSIZE add DESCENT add\n      EXTRA_Y_LINE 2 mul add neg drawline\n    [1.5 2] 1 setdash\n    x width add EXTRA_BASELINE add y2 ASCENT add rule neg 0 drawline\n    x width add EXTRA_BASELINE add y2 DESCENT sub rule neg 0 drawline\n    [] 0 setdash\n    x y1 DOT_RADIUS fillcircle\n  grestore\n  gsave\n    10 italicfont\n    /root2 2 sqrt def\n    /tx x (origin) stringwidth pop ARROW_LENGTH root2 div add 4 add sub def\n    tx y1 ARROW_LENGTH root2 div add 4 add moveto \n    (origin) show\n    currentpoint /ay exch def 2 add /ax exch def\n    ax ay ARROW_LENGTH root2 div 1 sub dup neg drawline\n    ax ARROW_LENGTH root2 div add ay ARROW_LENGTH root2 div sub ARROWHEAD_LENGTH ARROWHEAD_BREADTH -45 arrowhead\n    x width add EXTRA_BASELINE add 3 add y1 3 sub moveto\n    (baseline) show\n  grestore\n  gsave\n    10 italicfont\n    x EXTRA_BASELINE sub 4 sub y1 y2 add 2 div 3 POINTSIZE leftbrace\n    x EXTRA_BASELINE sub 9 sub y1 y2 add 2 div 3 sub (height) rshow\n    x width add EXTRA_BASELINE add 4 add y2 ASCENT 2 div add 2.5 ASCENT\n      1 sub rightbrace\n    x width add EXTRA_BASELINE add 8 add y2 ASCENT 2 div add 3 sub moveto\n    (ascent) show\n    x width add EXTRA_BASELINE add 4 add y2 DESCENT 2 div sub 1.5\n      DESCENT rightbrace\n    x width add EXTRA_BASELINE add 8 add y2 DESCENT 2 div sub 3 sub moveto\n    (descent) show\n  grestore\n  gsave\n    /Helvetica findfont POINTSIZE scalefont setfont\n    red\n    x y1 moveto (The quick brown fox) show\n    x y2 moveto (jumped over the lazy dog) show\n  grestore\ngrestore\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/pictures/GObjectDiagrams/GPolygonExamples.ps",
    "content": "#include <booktools.ps>\n\n/DIAMOND_ASPECT_RATIO 22 36 div def\n/TRAPEZOID_ASPECT_RATIO 2 def\n/TRAPEZOID_ANGLE 60 def\n/T_THICKNESS_RATIO 0.3 def\n/X_OFFSET 7 def\n/Y_OFFSET 5 def\n\n/SIZE 55 def\n/DX 6.0 inch SIZE 4 mul sub 4 div def\n/YC 75 SIZE 2 div sub Y_OFFSET sub def\n/YT 4 def\n/X1 DX SIZE add 2 div X_OFFSET sub def\n/X2 X1 SIZE DX add add def\n/X3 X2 SIZE DX add add def\n/X4 X3 SIZE DX add add def\n\n/drawDiamond {\n  10 dict begin\n    gsave\n      0.5 setlinewidth\n      /size exch def\n      translate\n      /dx size 2 div DIAMOND_ASPECT_RATIO mul def\n      /dy size 2 div def\n      newpath\n        dx neg 0 moveto\n        dx dy rlineto\n        dx dy neg rlineto\n        dx neg dy neg rlineto\n        dx neg dy rlineto\n      closepath stroke\n    grestore\n  end\n} def\n\n/drawTrapezoid {\n  10 dict begin\n    gsave\n      0.5 setlinewidth\n      /size exch def\n      translate\n      /x0 size 2 div neg def\n      /y0 x0 TRAPEZOID_ASPECT_RATIO div def\n      /h size TRAPEZOID_ASPECT_RATIO div def\n      newpath\n        x0 y0 moveto\n        h TRAPEZOID_ANGLE tan div h rlineto\n        size h TRAPEZOID_ANGLE tan div 2 mul sub 0 rlineto\n        h TRAPEZOID_ANGLE tan div h neg rlineto\n        size neg 0 rlineto\n      closepath stroke\n    grestore\n  end\n} def\n\n/drawTShape {\n  10 dict begin\n    gsave\n      0.5 setlinewidth\n      /size exch def\n      translate\n      /x0 size 2 div neg def\n      /y0 size 2 div def\n      /delta size T_THICKNESS_RATIO mul def\n      newpath\n        x0 y0 moveto\n        size 0 rlineto\n        0 delta neg rlineto\n        size delta sub 2 div neg 0 rlineto\n        0 size delta sub neg rlineto\n        delta neg 0 rlineto\n        0 size delta sub rlineto\n        size delta sub 2 div neg 0 rlineto\n        0 delta rlineto\n      closepath stroke\n    grestore\n  end\n} def\n\n/drawStar {\n  10 dict begin\n    gsave\n      0.5 setlinewidth\n      /size exch def\n      translate\n      /sin18 18 sin def\n      /b 0.5 sin18 mul sin18 1 add div def\n      /edge 0.5 b sub def\n      size size neg scale\n      currentlinewidth size div setlinewidth\n      newpath\n        -0.5 b neg moveto\n        /theta 0 def\n        1 1 5 {\n          pop\n          edge theta cos mul edge theta sin mul neg rlineto\n          edge theta 72 add cos mul edge theta 72 add sin mul neg rlineto\n          /theta theta 72 sub def\n        } for\n      closepath stroke\n    grestore\n  end\n} def\n\ngsave\n  /Helvetica-Bold findfont 9 scalefont setfont\n  X1 YC SIZE drawDiamond\n  X1 YT (diamond) cshow\n  X2 YC SIZE drawTrapezoid\n  X2 YT (trapezoid) cshow\n  X3 YC SIZE drawTShape\n  X3 YT (T-shape) cshow\n  X4 YC SIZE drawStar\n  X4 YT (five-pointed star) cshow\ngrestore\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/pictures/GObjectDiagrams/Makefile",
    "content": "# Makefile for pictures/GObjectDiagrams\n# Last modified on Fri Dec 14 23:52:48 2012 by eroberts\n#****************************************************************\n\nPICTURES = \\\n    GArcExamples.pdf \\\n    GArcGeometry.pdf \\\n    GLabelGeometry.pdf \\\n    GPolygonExamples.pdf \\\n    PacMan.pdf \\\n    StopSign.pdf\n\n\n# ***************************************************************\n# Entry to bring the package up to date\n#    The \"make all\" entry should be the first real entry\n\nall: $(PICTURES)\n\nGArcExamples.pdf: GArcExamples.ps Makefile\n\tmakepdf -png -pad GArcExamples.ps\n\nGArcGeometry.pdf: GArcGeometry.ps Makefile\n\tmakepdf -png -pad GArcGeometry.ps\n\nGLabelGeometry.pdf: GLabelGeometry.ps Makefile\n\tmakepdf -png -pad GLabelGeometry.ps\n\nGPolygonExamples.pdf: GPolygonExamples.ps Makefile\n\tmakepdf -png -pad GPolygonExamples.ps\n\nPacMan.pdf: PacMan.ps Makefile\n\tmakepdf -png -pad PacMan.ps\n\nStopSign.pdf: StopSign.ps Makefile\n\tmakepdf -png -pad StopSign.ps\n\n\n# ***************************************************************\n# Standard entries to remove files from the directories\n#    tidy    -- eliminate unwanted files\n#    scratch -- delete derived files in preparation for rebuild\n\ntidy:\n\trm -f ,* .,* *~ core a.out *.err\n\nscratch clean: tidy\n\trm -f *.o *.a *.html $(PICTURES)\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/pictures/GObjectDiagrams/PacMan.html",
    "content": "<p>The program results in the following picture:\n\n<p><div class=inset>\n<img src=\"images/PacMan.png\" width=322 alt=\"PacMan\">\n</div>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/pictures/GObjectDiagrams/PacMan.ps",
    "content": "#include <jtftools.ps>\n\n/WIDTH 3.2 inch def\n/HEIGHT 1.4 inch def\n/SF 0.8 def\n/TITLE-SIZE 12 def\n/TEXT-SIZE 11 def\n/SYSTEM MAC-OSX def\n/RADIUS 25 def\n\ngsave\n  SF dup scale\n  0 0 WIDTH SF div HEIGHT SF div (PacMan) drawGraphicsWindow\n  0.5 setlinewidth\n  clipToGCanvas\n  windowWidth 2 div windowHeight 2 div translate\n  1 -1 scale\n  newpath\n    0 0 moveto\n    0 0 RADIUS 45 315 arc\n  closepath gsave yellow fill grestore stroke\ngrestore\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/pictures/GObjectDiagrams/StopSign.html",
    "content": "<p>The program results in the following picture:\n\n<p><div class=inset>\n<img src=\"images/StopSign.png\" width=322 alt=\"StopSign\">\n</div>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/pictures/GObjectDiagrams/StopSign.ps",
    "content": "#include <jtftools.ps>\n\n/WIDTH 3.2 inch def\n/HEIGHT 1.7 inch def\n/SF 0.8 def\n/TITLE-SIZE 12 def\n/TEXT-SIZE 11 def\n/SYSTEM MAC-OSX def\n/EDGE 50 def\n\ngsave\n  SF dup scale\n  0 0 WIDTH SF div HEIGHT SF div (StopSign) drawGraphicsWindow\n  0.5 setlinewidth\n  clipToGCanvas\n  windowWidth 2 div windowHeight 2 div translate\n  red\n  newpath\n    EDGE -2 div EDGE 2 div EDGE 2 sqrt div add moveto\n    0 1 7 {\n      /theta exch 45 mul def\n      EDGE theta cos mul EDGE theta sin mul neg rlineto\n    } for\n  closepath gsave fill grestore stroke\ngrestore\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/pictures/HelloWorld/HelloWorld.ps",
    "content": "500 dict begin\n\n#include <defs.ps>\n#include <jtftools.ps>\n\n/WIDTH 3.8 inch def\n/HEIGHT 1.8 inch def\n/SF 0.8 def\n/TITLE_SIZE 12 def\n/TEXT_SIZE 11 def\n/SYSTEM MAC_OSX def\n\ngsave\n  SF dup scale\n  0 0 WIDTH SF div HEIGHT SF div (HelloWorld) drawGraphicsWindow\n  /xc WIDTH SF div 2 div def\n  /yc HEIGHT SF div getTitleBarHeight sub 2 div def\n  /msg (hello, world) def\n  magenta\n  xc yc 100 50 fillOval\n  black\n  /Helvetica findfont 24 scalefont setfont\n  xc msg stringwidth pop 2 div sub yc 0.35 24 mul sub moveto\n  msg show\ngrestore\n\nend\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/pictures/HelloWorld/Makefile",
    "content": "# Makefile for HelloWorld\n# Last modified on Tue Jul 26 18:02:56 2011 by eroberts\n#****************************************************************\n\n# ***************************************************************\n# Entry to bring the package up to date\n#    The \"make all\" entry should be the first real entry\n\nall: HelloWorld.pdf\n\nHelloWorld.pdf: HelloWorld.ps\n\tmakepdf -png -pad HelloWorld.ps\n\n\n# ***************************************************************\n# Standard entries to remove files from the directories\n#    tidy    -- eliminate unwanted files\n#    scratch -- delete derived files in preparation for rebuild\n\ntidy:\n\trm -f ,* .,* *~ core a.out *.err\n\nscratch clean: tidy\n\trm -f *.o *.a HelloWorld.pdf HelloWorld.png\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/pictures/TypeHierarchies/GEventHierarchy.html",
    "content": "The structure of the <code>GEvent</code> hierarchy looks like this:\n\n<p><div class=inset>\n<img src=\"images/GEventHierarchy.png\"\n     width=558 usemap=\"#GEventMap\" alt=\"GEventHierarchy\">\n</div>\n<map name=\"GEventMap\">\n  <area shape=rect coords=\"228,0,330,27\" href=\"#Type:GEvent\"\n        alt=\"GEvent\">\n  <area shape=rect coords=\"0,132,102,159\" href=\"#Type:GWindowEvent\"\n        alt=\"GWindowEvent\">\n  <area shape=rect coords=\"114,132,216,159\" href=\"#Type:GActionEvent\"\n        alt=\"GActionEvent\">\n  <area shape=rect coords=\"228,132,330,159\" href=\"#Type:GMouseEvent\"\n        alt=\"GMouseEvent\">\n  <area shape=rect coords=\"342,132,444,159\" href=\"#Type:GKeyEvent\"\n        alt=\"GKeyEvent\">\n  <area shape=rect coords=\"456,132,558,159\" href=\"#Type:GTimerEvent\"\n        alt=\"GTimerEvent\">\n</map>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/pictures/TypeHierarchies/GEventHierarchy.ps",
    "content": "#include <bookdefs.ps>\n#include <fakeuml.ps>\n#include \"hierarchy.ps\"\n\n/UML_BOX_WIDTH 68 def\n\n/DY0 70 def\n/DX 8 def\n\n/X0 400 def\n/Y0 400 def\n\n/Y1 Y0 UML_BOX_HEIGHT sub DY0 sub def\n\n/EVENT_CLASSES [\n  (GWindowEvent)\n  (GActionEvent)\n  (GMouseEvent)\n  (GKeyEvent)\n  (GTimerEvent)\n] def\n\n/UML_HTML_LINK true def\nX0 UML_BOX_WIDTH 2 div sub Y0 (GEvent) drawAbstractClass\nX0 Y1 (GEvent) EVENT_CLASSES drawSubclasses\n\n/dumpHTML {\n  9 dict begin\n    /text exch def\n    /filename exch def\n    /ok true def\n    errordict /invalidfileaccess { /ok false def } put\n    filename (w) file /out exch def\n    ok {\n      /width EVENT_CLASSES length dup UML_BOX_WIDTH mul exch 1 sub DX mul\n        add def\n      out text writestring\n      out (<p><div class=inset>\\n) writestring\n      out (<img src=\"images/GEventHierarchy.png\"\\n) writestring\n      out (     width=) writestring\n      out width UML_SF mul 0.5 add cvi 10 string cvs writestring\n      out ( usemap=\"#GEventMap\" alt=\"GEventHierarchy\">\\n) writestring\n      out (</div>\\n) writestring\n      out (<map name=\"GEventMap\">\\n) writestring\n      out (GEvent) (#Type:GEvent) dumpAreaTag\n      EVENT_CLASSES { out exch dup (#Type:) exch conc dumpAreaTag } forall\n      out (</map>\\n) writestring\n      out closefile\n    } if\n  end\n} def\n\n(GEventHierarchy.html)\n(The structure of the <code>GEvent</code> hierarchy looks like this:\\n\\n)\ndumpHTML\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/pictures/TypeHierarchies/GInteractorHierarchy.html",
    "content": "The structure of the <code>GInteractor</code> hierarchy looks like this:\n\n<p><div class=inset>\n<img src=\"images/GInteractorHierarchy.png\"\n<img src=\"images/GInteractorHierarchy.png\"\n     width=513 usemap=\"#GInteractorMap\" alt=\"GInteractorHierarchy\">\n</div>\n<map name=\"GInteractorMap\">\n  <area shape=rect coords=\"210,0,303,27\" href=\"gobjects.html#Type:GObject\"\n        alt=\"GObject\">\n  <area shape=rect coords=\"0,219,93,246\" href=\"#Type:GButton\"\n        alt=\"GButton\">\n  <area shape=rect coords=\"105,219,198,246\" href=\"#Type:GCheckBox\"\n        alt=\"GCheckBox\">\n  <area shape=rect coords=\"210,219,303,246\" href=\"#Type:GChooser\"\n        alt=\"GChooser\">\n  <area shape=rect coords=\"315,219,408,246\" href=\"#Type:GSlider\"\n        alt=\"GSlider\">\n  <area shape=rect coords=\"420,219,513,246\" href=\"#Type:GTextField\"\n        alt=\"GTextField\">\n</map>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/pictures/TypeHierarchies/GInteractorHierarchy.ps",
    "content": "#include <bookdefs.ps>\n#include <fakeuml.ps>\n#include \"hierarchy.ps\"\n\n/UML_BOX_WIDTH 62 def\n\n/DY0 40 def\n/DY1 70 def\n/DX 8 def\n\n/X0 400 def\n/Y0 400 def\n\n/Y1 Y0 UML_BOX_HEIGHT sub DY0 sub def\n/Y2 Y1 UML_BOX_HEIGHT sub DY1 sub def\n\n/INTERACTOR_CLASSES [\n  (GButton)\n  (GCheckBox)\n  (GChooser)\n  (GSlider)\n  (GTextField)\n] def\n\n/UML_HTML_LINK true def\nX0 UML_BOX_WIDTH 2 div sub Y0 (GObject) drawAbstractClass\nX0 UML_BOX_WIDTH 2 div sub Y1 (GInteractor) drawAbstractClass\n(GObject) (GInteractor) drawSubclassArrow\nX0 Y2 (GInteractor) INTERACTOR_CLASSES drawSubclasses\n\n/dumpHTML {\n  9 dict begin\n    /text exch def\n    /filename exch def\n    /ok true def\n    errordict /invalidfileaccess { /ok false def } put\n    filename (w) file /out exch def\n    ok {\n      /width INTERACTOR_CLASSES length dup UML_BOX_WIDTH mul exch 1 sub DX mul\n        add def\n      out text writestring\n      out (<p><div class=inset>\\n) writestring\n      out (<img src=\"images/GInteractorHierarchy.png\"\\n) writestring\n      out (<img src=\"images/GInteractorHierarchy.png\"\\n) writestring\n      out (     width=) writestring\n      out width UML_SF mul 0.5 add cvi 10 string cvs writestring\n      out ( usemap=\"#GInteractorMap\" alt=\"GInteractorHierarchy\">\\n) writestring\n      out (</div>\\n) writestring\n      out (<map name=\"GInteractorMap\">\\n) writestring\n      out (GObject) (gobjects.html#Type:GObject) dumpAreaTag\n      LINK_TO_SELF {\n        out (GInteractor) (#Type:GInteractor) dumpAreaTag\n      } if\n      INTERACTOR_CLASSES { out exch dup (#Type:) exch conc dumpAreaTag } forall\n      out (</map>\\n) writestring\n      out closefile\n    } if\n  end\n} def\n\n(GInteractorHierarchy.html)\n(The structure of the <code>GInteractor</code> hierarchy looks like this:\\n\\n)\ndumpHTML\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/pictures/TypeHierarchies/GObjectHierarchy.html",
    "content": "These subclasses form a hierarchy that looks like this:\n\n<p><div class=inset>\n<img src=\"images/GObjectHierarchy.png\"\n     width=768 usemap=\"#GObjectMap\" alt=\"GObjectHierarchy\">\n</div>\n<map name=\"GObjectMap\">\n  <area shape=rect coords=\"341,0,427,27\" href=\"#Type:GObject\"\n        alt=\"GObject\">\n  <area shape=rect coords=\"0,177,86,204\" href=\"#Type:GArc\"\n        alt=\"GArc\">\n  <area shape=rect coords=\"98,177,184,204\" href=\"#Type:GImage\"\n        alt=\"GImage\">\n  <area shape=rect coords=\"195,177,281,204\" href=\"#Type:GLabel\"\n        alt=\"GLabel\">\n  <area shape=rect coords=\"293,177,379,204\" href=\"#Type:GLine\"\n        alt=\"GLine\">\n  <area shape=rect coords=\"390,177,476,204\" href=\"#Type:GOval\"\n        alt=\"GOval\">\n  <area shape=rect coords=\"488,177,574,204\" href=\"#Type:GRect\"\n        alt=\"GRect\">\n  <area shape=rect coords=\"585,177,671,204\" href=\"#Type:GPolygon\"\n        alt=\"GPolygon\">\n  <area shape=rect coords=\"683,177,769,204\" href=\"#Type:GCompound\"\n        alt=\"GCompound\">\n  <area shape=rect coords=\"439,270,525,297\" href=\"G3DRect-class.html\"\n        alt=\"G3DRect\">\n  <area shape=rect coords=\"536,270,622,297\" href=\"GRoundRect-class.html\"\n        alt=\"GRoundRect\">\n</map>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/pictures/TypeHierarchies/GObjectHierarchy.ps",
    "content": "#include <bookdefs.ps>\n#include <fakeuml.ps>\n#include \"hierarchy.ps\"\n\n/DY0 100 def\n/DY1 44 def\n/DX 8 def\n\n/X0 400 def\n/Y0 400 def\n\n/Y1 Y0 UML_BOX_HEIGHT sub DY0 sub def\n/Y2 Y1 UML_BOX_HEIGHT sub DY1 sub def\n\n/SHAPE_CLASSES [\n  (GArc)\n  (GImage)\n  (GLabel)\n  (GLine)\n  (GOval)\n  (GRect)\n  (GPolygon)\n  (GCompound)\n] def\n\n/UML_HTML_LINK true def\nX0 UML_BOX_WIDTH 2 div sub Y0 (GObject) drawAbstractClass\nX0 Y1 (GObject) SHAPE_CLASSES drawSubclasses\n/x classTable (GRect) get split pop UML_BOX_WIDTH 2 div add def\nx Y2 (GRect) [ (G3DRect) (GRoundRect) ] drawSubclasses\n\n/dumpHTML {\n  9 dict begin\n    /text exch def\n    /filename exch def\n    /ok true def\n    errordict /invalidfileaccess { /ok false def } put\n    filename (w) file /out exch def\n    ok {\n      /width SHAPE_CLASSES length dup UML_BOX_WIDTH mul exch 1 sub DX mul\n        add def\n      out text writestring\n      out (<p><div class=inset>\\n) writestring\n      out (<img src=\"images/GObjectHierarchy.png\"\\n) writestring\n      out (     width=) writestring\n      out width UML_SF mul 0.5 add cvi 10 string cvs writestring\n      out ( usemap=\"#GObjectMap\" alt=\"GObjectHierarchy\">\\n) writestring\n      out (</div>\\n) writestring\n      out (<map name=\"GObjectMap\">\\n) writestring\n      out (GObject) (#Type:GObject) dumpAreaTag\n      SHAPE_CLASSES { out exch dup (#Type:) exch conc dumpAreaTag } forall\n      out (G3DRect) (G3DRect-class.html) dumpAreaTag\n      out (GRoundRect) (GRoundRect-class.html) dumpAreaTag\n      out (</map>\\n) writestring\n      out closefile\n    } if\n  end\n} def\n\n(GObjectHierarchy.html)\n(These subclasses form a hierarchy that looks like this:\\n\\n)\ndumpHTML\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/pictures/TypeHierarchies/Makefile",
    "content": "# Makefile for pictures/ClassHierarchies\n# Last modified on Wed Dec 19 19:57:44 2012 by eroberts\n#****************************************************************\n\nPICTURES = \\\n    GObjectHierarchy.pdf \\\n    GInteractorHierarchy.pdf \\\n    GEventHierarchy.pdf\n\n\n# ***************************************************************\n# Entry to bring the package up to date\n#    The \"make all\" entry should be the first real entry\n\nall: $(PICTURES)\n\nGObjectHierarchy.pdf: GObjectHierarchy.ps hierarchy.ps Makefile\n\tmakepdf -png -pad GObjectHierarchy.ps\n\nGInteractorHierarchy.pdf: GInteractorHierarchy.ps hierarchy.ps Makefile\n\tmakepdf -png -pad GInteractorHierarchy.ps\n\nGEventHierarchy.pdf: GEventHierarchy.ps hierarchy.ps Makefile\n\tmakepdf -png -pad GEventHierarchy.ps\n\n\n# ***************************************************************\n# Standard entries to remove files from the directories\n#    tidy    -- eliminate unwanted files\n#    scratch -- delete derived files in preparation for rebuild\n\ntidy:\n\trm -f ,* .,* *~ core a.out *.err\n\nscratch clean: tidy\n\trm -f *.o *.a *.html $(PICTURES)\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/pictures/TypeHierarchies/hierarchy.ps",
    "content": "%% File: hierarchy.ps\n\n/UML_SF 1.5 def\n/UML_BOX_WIDTH 57 def\n/UML_BOX_HEIGHT 18 def\n/UML_ARROWHEAD_LENGTH 5 def\n/UML_ARROWHEAD_BREADTH 6 def\n/LABEL_DY -6 def\n\n/LINK_TO_SELF where {\n  pop\n} {\n  /LINK_TO_SELF false def\n} ifelse\n\n/drawSubclasses {\n  9 dict begin\n    /classes exch def\n    /n classes length def\n    /width n UML_BOX_WIDTH mul n 1 sub DX mul add def\n    /parent exch def\n    /y0 exch def\n    width 2 div sub /x0 exch def\n    0 1 n 1 sub {\n      /i exch def\n      /name classes i get def\n      x0 i UML_BOX_WIDTH DX add mul add y0 name drawClass\n      /fraction i n 1 sub div def\n      n 2 eq { /fraction i 0 eq { 0.3 } { 0.7 } ifelse def } if\n      parent name fraction drawSubclassArrow\n    } for\n  end\n} def\n\n/dumpAreaTag { %% out name link dumpAreaTag\n  9 dict begin\n    /link exch def\n    /name exch def\n    /out exch def\n    classTable name get split\n    Y0 exch sub UML_SF mul 0.5 add cvi /y0 exch def\n    width 2 div X0 sub add UML_SF mul 0.5 add cvi /x0 exch def\n    /x1 x0 UML_BOX_WIDTH UML_SF mul add 0.5 add cvi def\n    /y1 y0 UML_BOX_HEIGHT UML_SF mul add 0.5 add cvi def\n    out (  <area shape=rect coords=\") writestring\n    out x0 10 string cvs writestring\n    out (,) writestring\n    out y0 10 string cvs writestring\n    out (,) writestring\n    out x1 10 string cvs writestring\n    out (,) writestring\n    out y1 10 string cvs writestring\n    out (\" href=\") writestring\n    out link writestring\n    out (\"\\n        alt=\") writestring\n    out name writestring\n    out (\">\\n) writestring\n  end\n} def\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/platform-h.html",
    "content": "<html>\n<head>\n<title>../platform.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<a name=\"Friends file:platform.h\"><scan class=comment>/*\n * Friends file: platform.h\n * ------------------------\n * This interface defines the platform-specific parts of the cslib library.\n * This file is logically part of the implementation and should not be\n * interesting to clients.\n */\n</scan>\n#ifndef _platform_h\n#define _platform_h\n\n#include \"cslib.h\"\n#include \"gevents.h\"\n#include \"gobjects.h\"\n#include \"gtypes.h\"\n#include \"gwindow.h\"\n\nvoid initPlatform(void);\nstring getId(void *ptr);\n\n<scan class=comment>// void clearConsoleOp(void);</scan>\n<scan class=comment>// void setConsoleFontOp(string font);</scan>\n<scan class=comment>// void setConsoleSizeOp(double width, double height);</scan>\n<scan class=comment>// string openFileDialogOp(string title, string mode, string path);</scan>\n\nvoid createGWindowOp(GWindow gw, double width, double height, GObject top);\nvoid deleteGWindowOp(GWindow gw);\nvoid closeOp(GWindow gw);\nvoid requestFocusOp(GWindow gw);\nvoid clearOp(GWindow gw);\nvoid repaintOp(GWindow gw);\nvoid setVisibleGWindowOp(GWindow gw, bool flag);\nvoid setResizableOp(GWindow gw, bool flag);\nvoid setWindowTitleOp(GWindow gw, string title);\nvoid setRegionAlignmentOp(GWindow gw, string region, string align);\nvoid addToRegionOp(GWindow gw, GObject gobj, string region);\n\n<scan class=comment>// double getScreenWidthOp(void);</scan>\n<scan class=comment>// double getScreenHeightOp(void);</scan>\n\nGEvent getNextEventOp(int mask);\nGEvent waitForEventOp(int mask);\n\n<scan class=comment>// void exitGraphicsOp(void);</scan>\n<scan class=comment>// void createTimerOp(GTimer timer, double delay);</scan>\n<scan class=comment>// void deleteTimerOp(GTimer timer);</scan>\n\nvoid pauseOp(double milliseconds);\n\n<scan class=comment>// void startTimerOp(GTimer timer);</scan>\n<scan class=comment>// void stopTimerOp(GTimer timer);</scan>\n<scan class=comment>// void createSoundOp(Sound sound, string filename);</scan>\n<scan class=comment>// void deleteSoundOp(Sound sound);</scan>\n<scan class=comment>// void playSoundOp(Sound sound);</scan>\n<scan class=comment>// void startSoundOp(Sound sound);</scan>\n<scan class=comment>// void stopSoundOp(Sound sound);</scan>\n\nvoid createGRectOp(GRect rect, double width, double height);\n\n<scan class=comment>// void createGRoundRectOp(GObject gobj, double width, double height,</scan>\n<scan class=comment>//                                       double corner);</scan>\n<scan class=comment>// void createG3DRectOp(GObject gobj, double width, double height,</scan>\n<scan class=comment>//                                    bool raised);</scan>\n<scan class=comment>// void setRaisedOp(GObject gobj, bool raised);</scan>\n\nvoid createGOvalOp(GOval oval, double width, double height);\n\nvoid createGArcOp(GArc arc, double width, double height,\n                            double start, double sweep);\nvoid setStartAngleOp(GArc arc, double angle);\nvoid setSweepAngleOp(GArc arc, double angle);\nvoid setFrameRectangleOp(GArc arc, double x, double y,\n                                   double width, double height);\n\nvoid createGLineOp(GLine line, double x1, double y1, double x2, double y2);\nvoid setStartPointOp(GObject gobj, double x, double y);\nvoid setEndPointOp(GObject gobj, double x, double y);\n\n<scan class=comment>// GDimension createGImageOp(GObject gobj, string filename);</scan>\n\nvoid createGPolygonOp(GPolygon poly);\nvoid addVertexOp(GPolygon poly, double x, double y);\n\n<scan class=comment>// void setActionCommandOp(GObject gobj, string cmd);</scan>\n<scan class=comment>// GDimension getSizeOp(GObject gobj);</scan>\n<scan class=comment>// void createGButtonOp(GObject gobj, string label);</scan>\n<scan class=comment>// void createGCheckBoxOp(GObject gobj, string label);</scan>\n<scan class=comment>// bool isSelectedOp(GObject gobj);</scan>\n<scan class=comment>// void setSelectedOp(GObject gobj, bool state);</scan>\n<scan class=comment>// void createGSliderOp(GObject gobj, int min, int max, int value);</scan>\n<scan class=comment>// int getValueOp(GObject gobj);</scan>\n<scan class=comment>// void setValueOp(GObject gobj, int value);</scan>\n<scan class=comment>// void createGTextFieldOp(GObject gobj, int nChars);</scan>\n<scan class=comment>// string getTextOp(GObject gobj);</scan>\n<scan class=comment>// void setTextOp(GObject gobj, string str);</scan>\n<scan class=comment>// void createGChooserOp(GObject gobj);</scan>\n<scan class=comment>// void addItemOp(GObject gobj, string item);</scan>\n<scan class=comment>// string getSelectedItemOp(GObject gobj);</scan>\n<scan class=comment>// void setSelectedItemOp(GObject gobj, string item);</scan>\n\nvoid createGCompoundOp(GObject gobj);\nvoid addOp(GObject compound, GObject gobj);\nvoid removeOp(GObject gobj);\n\n<scan class=comment>// void deleteGObjectOp(GObject gobj);</scan>\n\nvoid sendForwardOp(GObject gobj);\nvoid sendToFrontOp(GObject gobj);\nvoid sendBackwardOp(GObject gobj);\nvoid sendToBackOp(GObject gobj);\n\nvoid setVisibleGObjectOp(GObject gobj, bool flag);\nvoid setColorOp(GObject gobj, string color);\nvoid setLocationOp(GObject gobj, double x, double y);\nvoid setSizeOp(GObject gobj, double width, double height);\n\nvoid drawOp(GWindow gw, GObject gobj);\nvoid setFilledOp(GObject gobj, bool flag);\nvoid setFillColorOp(GObject gobj, string color);\n\nvoid createGLabelOp(GObject gobj, string label);\nvoid setFontOp(GObject gobj, string font);\nvoid setLabelOp(GObject gobj, string str);\ndouble getFontAscentOp(GObject gobj);\ndouble getFontDescentOp(GObject gobj);\nGDimension getGLabelSizeOp(GObject gobj);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/platform.html",
    "content": "<html>\n<head>\n<title>platform.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><a href=\"platform-h.html\"><code>platform.h</code></a></h1>\n<table class=index width=100%>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/pqueue-h.html",
    "content": "<html>\n<head>\n<title>../pqueue.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: pqueue.h\n * --------------\n * This interface defines a queue abstraction that dequeues elements in\n * priority order.  In keeping with traditional English usage, lower\n * priority numbers have higher priority, so that priority 1 items appear\n * before priority 2 items.\n */\n</scan>\n#ifndef _pqueue_h\n#define _pqueue_h\n\n#include \"cslib.h\"\n#include \"generic.h\"\n\n<a name=\"Type:PriorityQueue\"><scan class=comment>/*\n * Type: PriorityQueue\n * -------------------\n * This type defines the abstract type for a queue.\n */\n</scan>\ntypedef struct PriorityQueueCDT *PriorityQueue;\n\n<a name=\"Function:newPriorityQueue\"><scan class=comment>/*\n * Function: newPriorityQueue\n * Usage: pq = newPriorityQueue();\n * -------------------------------\n * Allocates and returns an empty priority queue.\n */\n</scan>\nPriorityQueue newPriorityQueue(void);\n\n<a name=\"Function:freePriorityQueue\"><scan class=comment>/*\n * Function: freePriorityQueue\n * Usage: freePriorityQueue(pq);\n * -----------------------------\n * Frees the storage associated with the specified priority queue.\n */\n</scan>\nvoid freePriorityQueue(PriorityQueue pq);\n\n<a name=\"Function:enqueue\"><scan class=comment>/*\n * Function: enqueue\n * Usage: enqueue(pq, value, priority);\n * ------------------------------------\n * Adds a value to the queue in the order specified by priority.  In C, the\n * priority argument must have type double, which means that constants used\n * to express priorities in the call to the generic enqueue function must\n * include a decimal point.\n */\n</scan>\nvoid enqueuePriorityQueue(PriorityQueue pq, void *value, double priority);\n\n<a name=\"Function:dequeue\"><scan class=comment>/*\n * Function: dequeue\n * Usage: value = dequeue(pq);\n * ---------------------------\n * Removes the data value at the head of the queue and returns it to the\n * client.  If the queue is empty, dequeue calls error with an appropriate\n * message.\n */\n</scan>\nvoid *dequeuePriorityQueue(PriorityQueue pq);\n\n<a name=\"Function:peek\"><scan class=comment>/*\n * Function: peek\n * Usage: value = peek(pq);\n * ------------------------\n * Returns the data value at the head of the queue without removing it.  If\n * the queue is empty, peek calls error with an appropriate message.\n */\n</scan>\nvoid *peekPriorityQueue(PriorityQueue pq);\n\n<a name=\"Function:peekPriority\"><scan class=comment>/*\n * Function: peekPriority\n * Usage: priority = peekPriority(pq);\n * -----------------------------------\n * Returns the priority of the first entry in the queue, without removing\n * it.\n */\n</scan>\ndouble peekPriority(PriorityQueue pq);\n\n<a name=\"Function:isEmpty\"><scan class=comment>/*\n * Function: isEmpty\n * Usage: if (isEmpty(pq)) . . .\n * -----------------------------\n * Tests whether the queue is empty.\n */\n</scan>\nbool isEmptyPriorityQueue(PriorityQueue pq);\n\n<a name=\"Function:size\"><scan class=comment>/*\n * Function: size\n * Usage: n = size(pq);\n * --------------------\n * Returns the number of values in the queue.\n */\n</scan>\nint sizePriorityQueue(PriorityQueue pq);\n\n<a name=\"Function:clear\"><scan class=comment>/*\n * Function: clear\n * Usage: clear(pq);\n * -----------------\n * Removes all values from the queue.\n */\n</scan>\nvoid clearPriorityQueue(PriorityQueue pq);\n\n<a name=\"Function:clone\"><scan class=comment>/*\n * Function: clone\n * Usage: newpq = clone(pq);\n * -------------------------\n * Creates a copy of the priority queue.  The clone function copies only\n * the first level of the structure and does not copy the individual\n * elements.\n */\n</scan>\nPriorityQueue clonePriorityQueue(PriorityQueue pq);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/pqueue.html",
    "content": "<html>\n<head>\n<title>pqueue.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><a href=\"pqueue-h.html\"><code>pqueue.h</code></a></h1>\nThis interface defines a queue abstraction that dequeues elements\nin priority order.  In keeping with traditional English usage,\nlower priority numbers have higher priority, so that priority 1\nitems appear before priority 2 items.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Type</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:PriorityQueue\">PriorityQueue</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This type defines the abstract type for a queue.</td></tr>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newPriorityQueue\">newPriorityQueue()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Allocates and returns an empty priority queue.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:freePriorityQueue\">freePriorityQueue(pq)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Frees the storage associated with the specified priority queue.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:enqueue\">enqueue(pq,&nbsp;value,&nbsp;priority)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Adds a value to the queue in the order specified by <code>priority</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:dequeue\">dequeue(pq)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Removes the data value at the head of the queue and returns it to the client.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:peek\">peek(pq)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the data value at the head of the queue without removing it.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:peekPriority\">peekPriority(pq)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the priority of the first entry in the queue, without removing it.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:isEmpty\">isEmpty(pq)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Tests whether the queue is empty.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:size\">size(pq)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the number of values in the queue.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:clear\">clear(pq)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Removes all values from the queue.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:clone\">clone(pq)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a copy of the priority queue.</td></tr>\n</table>\n<h2>Type detail</h2>\n<hr>\n<a name=\"Type:PriorityQueue\"></a>\n<pre class=detailCode>\ntypedef struct PriorityQueueCDT *PriorityQueue;\n</pre>\n<div class=detailHTML>\nThis type defines the abstract type for a queue.\n</div>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:newPriorityQueue\"></a>\n<pre class=detailCode>\nPriorityQueue newPriorityQueue(void);\n</pre>\n<div class=detailHTML>\nAllocates and returns an empty priority queue.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\npq = newPriorityQueue();\n</pre>\n<hr>\n<a name=\"Function:freePriorityQueue\"></a>\n<pre class=detailCode>\nvoid freePriorityQueue(PriorityQueue pq);\n</pre>\n<div class=detailHTML>\nFrees the storage associated with the specified priority queue.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfreePriorityQueue(pq);\n</pre>\n<hr>\n<a name=\"Function:enqueue\"></a>\n<pre class=detailCode>\nvoid enqueue(PriorityQueue pq, void *value, double priority);\n</pre>\n<div class=detailHTML>\nAdds a value to the queue in the order specified by <code>priority</code>.\nIn C, the <code>priority</code> argument must have type <code>double</code>,\nwhich means that constants used to express priorities in the call to the\ngeneric <code>enqueue</code> function must include a decimal point.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nenqueue(pq, value, priority);\n</pre>\n<hr>\n<a name=\"Function:dequeue\"></a>\n<pre class=detailCode>\nvoid *dequeue(PriorityQueue pq);\n</pre>\n<div class=detailHTML>\nRemoves the data value at the head of the queue and returns it\nto the client.  If the queue is empty, <code>dequeue</code> calls\n<code>error</code> with an appropriate message.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvalue = dequeue(pq);\n</pre>\n<hr>\n<a name=\"Function:peek\"></a>\n<pre class=detailCode>\nvoid *peek(PriorityQueue pq);\n</pre>\n<div class=detailHTML>\nReturns the data value at the head of the queue without removing it.\nIf the queue is empty, <code>peek</code> calls <code>error</code> with\nan appropriate message.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvalue = peek(pq);\n</pre>\n<hr>\n<a name=\"Function:peekPriority\"></a>\n<pre class=detailCode>\ndouble peekPriority(PriorityQueue pq);\n</pre>\n<div class=detailHTML>\nReturns the priority of the first entry in the queue, without\nremoving it.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\npriority = peekPriority(pq);\n</pre>\n<hr>\n<a name=\"Function:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty(PriorityQueue pq);\n</pre>\n<div class=detailHTML>\nTests whether the queue is empty.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (isEmpty(pq)) . . .\n</pre>\n<hr>\n<a name=\"Function:size\"></a>\n<pre class=detailCode>\nint size(PriorityQueue pq);\n</pre>\n<div class=detailHTML>\nReturns the number of values in the queue.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nn = size(pq);\n</pre>\n<hr>\n<a name=\"Function:clear\"></a>\n<pre class=detailCode>\nvoid clear(PriorityQueue pq);\n</pre>\n<div class=detailHTML>\nRemoves all values from the queue.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nclear(pq);\n</pre>\n<hr>\n<a name=\"Function:clone\"></a>\n<pre class=detailCode>\nPriorityQueue clone(PriorityQueue pq);\n</pre>\n<div class=detailHTML>\nCreates a copy of the priority queue.  The <code>clone</code> function\ncopies only the first level of the structure and does not copy the\nindividual elements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nnewpq = clone(pq);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/queue-h.html",
    "content": "<html>\n<head>\n<title>../queue.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: queue.h\n * -------------\n * This interface defines a queue abstraction with first-in/first-out\n * semantics.\n */\n</scan>\n#ifndef _queue_h\n#define _queue_h\n\n#include \"cslib.h\"\n#include \"generic.h\"\n\n<a name=\"Type:Queue\"><scan class=comment>/*\n * Type: Queue\n * -----------\n * This type defines the abstract type for a queue.\n */\n</scan>\ntypedef struct QueueCDT *Queue;\n\n<a name=\"Function:newQueue\"><scan class=comment>/*\n * Function: newQueue\n * Usage: queue = newQueue();\n * --------------------------\n * Allocates and returns an empty queue.\n */\n</scan>\nQueue newQueue(void);\n\n<a name=\"Function:freeQueue\"><scan class=comment>/*\n * Function: freeQueue\n * Usage: freeQueue(queue);\n * ------------------------\n * Frees the storage associated with the specified queue.\n */\n</scan>\nvoid freeQueue(Queue queue);\n\n<a name=\"Function:enqueue\"><scan class=comment>/*\n * Function: enqueue\n * Usage: enqueue(queue, element);\n * -------------------------------\n * Adds an element to the end of the queue.\n */\n</scan>\nvoid enqueueQueue(Queue queue, void *element);\n\n<a name=\"Function:dequeue\"><scan class=comment>/*\n * Function: dequeue\n * Usage: element = dequeue(queue);\n * --------------------------------\n * Removes the data value at the head of the queue and returns it to the\n * client.  If the queue is empty, dequeue calls error with an appropriate\n * message.\n */\n</scan>\nvoid *dequeueQueue(Queue queue);\n\n<a name=\"Function:peek\"><scan class=comment>/*\n * Function: peek\n * Usage: element = peek(queue);\n * -----------------------------\n * Returns the data value at the head of the queue without removing it.  If\n * the queue is empty, peek calls error with an appropriate message.\n */\n</scan>\nvoid *peekQueue(Queue queue);\n\n<a name=\"Function:isEmpty\"><scan class=comment>/*\n * Function: isEmpty\n * Usage: if (isEmpty(queue)) . . .\n * --------------------------------\n * Tests whether the queue is empty.\n */\n</scan>\nbool isEmptyQueue(Queue queue);\n\n<a name=\"Function:size\"><scan class=comment>/*\n * Function: size\n * Usage: n = size(queue);\n * -----------------------\n * Returns the number of elements in the queue.\n */\n</scan>\nint sizeQueue(Queue queue);\n\n<a name=\"Function:clear\"><scan class=comment>/*\n * Function: clear\n * Usage: clear(queue);\n * --------------------\n * Removes all elements from the queue.\n */\n</scan>\nvoid clearQueue(Queue queue);\n\n<a name=\"Function:clone\"><scan class=comment>/*\n * Function: clone\n * Usage: newqueue = clone(queue);\n * -------------------------------\n * Creates a copy of the queue.  The clone function copies only the first\n * level of the structure and does not copy the individual elements.\n */\n</scan>\nQueue cloneQueue(Queue queue);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/queue.html",
    "content": "<html>\n<head>\n<title>queue.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><a href=\"queue-h.html\"><code>queue.h</code></a></h1>\nThis interface defines a queue abstraction with first-in/first-out\nsemantics.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Type</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:Queue\">Queue</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This type defines the abstract type for a queue.</td></tr>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newQueue\">newQueue()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Allocates and returns an empty queue.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:freeQueue\">freeQueue(queue)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Frees the storage associated with the specified queue.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:enqueue\">enqueue(queue,&nbsp;element)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Adds an element to the end of the queue.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:dequeue\">dequeue(queue)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Removes the data value at the head of the queue and returns it to the client.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:peek\">peek(queue)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the data value at the head of the queue without removing it.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:isEmpty\">isEmpty(queue)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Tests whether the queue is empty.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:size\">size(queue)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the number of elements in the queue.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:clear\">clear(queue)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Removes all elements from the queue.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:clone\">clone(queue)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a copy of the queue.</td></tr>\n</table>\n<h2>Type detail</h2>\n<hr>\n<a name=\"Type:Queue\"></a>\n<pre class=detailCode>\ntypedef struct QueueCDT *Queue;\n</pre>\n<div class=detailHTML>\nThis type defines the abstract type for a queue.\n</div>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:newQueue\"></a>\n<pre class=detailCode>\nQueue newQueue(void);\n</pre>\n<div class=detailHTML>\nAllocates and returns an empty queue.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nqueue = newQueue();\n</pre>\n<hr>\n<a name=\"Function:freeQueue\"></a>\n<pre class=detailCode>\nvoid freeQueue(Queue queue);\n</pre>\n<div class=detailHTML>\nFrees the storage associated with the specified queue.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfreeQueue(queue);\n</pre>\n<hr>\n<a name=\"Function:enqueue\"></a>\n<pre class=detailCode>\nvoid enqueue(Queue queue, void *element);\n</pre>\n<div class=detailHTML>\nAdds an element to the end of the queue.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nenqueue(queue, element);\n</pre>\n<hr>\n<a name=\"Function:dequeue\"></a>\n<pre class=detailCode>\nvoid *dequeue(Queue queue);\n</pre>\n<div class=detailHTML>\nRemoves the data value at the head of the queue and returns it\nto the client.  If the queue is empty, <code>dequeue</code> calls\n<code>error</code> with an appropriate message.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nelement = dequeue(queue);\n</pre>\n<hr>\n<a name=\"Function:peek\"></a>\n<pre class=detailCode>\nvoid *peek(Queue queue);\n</pre>\n<div class=detailHTML>\nReturns the data value at the head of the queue without removing it.\nIf the queue is empty, <code>peek</code> calls <code>error</code> with\nan appropriate message.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nelement = peek(queue);\n</pre>\n<hr>\n<a name=\"Function:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty(Queue queue);\n</pre>\n<div class=detailHTML>\nTests whether the queue is empty.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (isEmpty(queue)) . . .\n</pre>\n<hr>\n<a name=\"Function:size\"></a>\n<pre class=detailCode>\nint size(Queue queue);\n</pre>\n<div class=detailHTML>\nReturns the number of elements in the queue.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nn = size(queue);\n</pre>\n<hr>\n<a name=\"Function:clear\"></a>\n<pre class=detailCode>\nvoid clear(Queue queue);\n</pre>\n<div class=detailHTML>\nRemoves all elements from the queue.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nclear(queue);\n</pre>\n<hr>\n<a name=\"Function:clone\"></a>\n<pre class=detailCode>\nQueue clone(Queue queue);\n</pre>\n<div class=detailHTML>\nCreates a copy of the queue.  The <code>clone</code> function copies\nonly the first level of the structure and does not copy the individual\nelements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nnewqueue = clone(queue);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/random-h.html",
    "content": "<html>\n<head>\n<title>../random.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: random.h\n * --------------\n * This interface exports functions for generating pseudorandom numbers.\n */\n</scan>\n#ifndef _random_h\n#define _random_h\n\n#include \"cslib.h\"\n#include &lt;stdlib.h&gt;\n\n<a name=\"Function:randomInteger\"><scan class=comment>/*\n * Function: randomInteger\n * Usage: n = randomInteger(low, high);\n * ------------------------------------\n * Returns a random integer in the range low to high, inclusive.\n */\n</scan>\nint randomInteger(int low, int high);\n\n<a name=\"Function:randomReal\"><scan class=comment>/*\n * Function: randomReal\n * Usage: d = randomReal(low, high);\n * ---------------------------------\n * Returns a random real number in the half-open interval [low .. high).  A\n * half-open interval includes the first endpoint but not the second, which\n * means that the result is always greater than or equal to low but\n * strictly less than high.\n */\n</scan>\ndouble randomReal(double low, double high);\n\n<a name=\"Function:randomChance\"><scan class=comment>/*\n * Function: randomChance\n * Usage: if (randomChance(p)) . . .\n * ---------------------------------\n * Returns true with the probability indicated by p.  The argument p must\n * be a floating-point number between 0 (never) and 1 (always).  For\n * example, calling randomChance(.30) returns true 30 percent of the time.\n */\n</scan>\nbool randomChance(double p);\n\n<a name=\"Function:setRandomSeed\"><scan class=comment>/*\n * Function: setRandomSeed\n * Usage: setRandomSeed(seed);\n * ---------------------------\n * Sets the internal random number seed to the specified value.  You can\n * use this function to set a specific starting point for the pseudorandom\n * sequence or to ensure that program behavior is repeatable during the\n * debugging phase.\n */\n</scan>\nvoid setRandomSeed(int seed);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/random.html",
    "content": "<html>\n<head>\n<title>random.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><a href=\"random-h.html\"><code>random.h</code></a></h1>\nThis interface exports functions for generating pseudorandom numbers.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:randomInteger\">randomInteger(low,&nbsp;high)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a random integer in the range <code>low</code> to <code>high</code>, inclusive.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:randomReal\">randomReal(low,&nbsp;high)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a random real number in the half-open interval [<code>low</code>&nbsp;..&nbsp;<code>high</code>).</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:randomChance\">randomChance(p)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> with the probability indicated by <code>p</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setRandomSeed\">setRandomSeed(seed)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the internal random number seed to the specified value.</td></tr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:randomInteger\"></a>\n<pre class=detailCode>\nint randomInteger(int low, int high);\n</pre>\n<div class=detailHTML>\nReturns a random integer in the range <code>low</code> to\n<code>high</code>, inclusive.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nn = randomInteger(low, high);\n</pre>\n<hr>\n<a name=\"Function:randomReal\"></a>\n<pre class=detailCode>\ndouble randomReal(double low, double high);\n</pre>\n<div class=detailHTML>\nReturns a random real number in the half-open interval\n[<code>low</code>&nbsp;..&nbsp;<code>high</code>).  A half-open\ninterval includes the first endpoint but not the second, which\nmeans that the result is always greater than or equal to\n<code>low</code> but strictly less than <code>high</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nd = randomReal(low, high);\n</pre>\n<hr>\n<a name=\"Function:randomChance\"></a>\n<pre class=detailCode>\nbool randomChance(double p);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> with the probability indicated by <code>p</code>.\nThe argument <code>p</code> must be a floating-point number between\n0 (never) and 1 (always).  For example, calling\n<code>randomChance(.30)</code> returns <code>true</code> 30 percent\nof the time.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (randomChance(p)) . . .\n</pre>\n<hr>\n<a name=\"Function:setRandomSeed\"></a>\n<pre class=detailCode>\nvoid setRandomSeed(int seed);\n</pre>\n<div class=detailHTML>\nSets the internal random number seed to the specified value.  You\ncan use this function to set a specific starting point for the\npseudorandom sequence or to ensure that program behavior is\nrepeatable during the debugging phase.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetRandomSeed(seed);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/ref-h.html",
    "content": "<html>\n<head>\n<title>../ref.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: ref.h\n * -----------\n * This interface exports several simple functions for allocating pointers\n * to the atomic types.\n */\n</scan>\n#ifndef _ref_h\n#define _ref_h\n\n#include \"cslib.h\"\n\n<a name=\"Function:newRefInt\"><scan class=comment>/*\n * Function: newRefInt\n * Usage: ref = newRefInt(value);\n * ------------------------------\n * Allocates a ref pointing to the specified int value.\n */\n</scan>\nvoid *newRefInt(int value);\n\n<a name=\"Function:newRefShort\"><scan class=comment>/*\n * Function: newRefShort\n * Usage: ref = newRefShort(value);\n * --------------------------------\n * Allocates a ref pointing to the specified short value.\n */\n</scan>\nvoid *newRefShort(short value);\n\n<a name=\"Function:newRefLong\"><scan class=comment>/*\n * Function: newRefLong\n * Usage: ref = newRefLong(value);\n * -------------------------------\n * Allocates a ref pointing to the specified long value.\n */\n</scan>\nvoid *newRefLong(long value);\n\n<a name=\"Function:newRefFloat\"><scan class=comment>/*\n * Function: newRefFloat\n * Usage: ref = newRefFloat(value);\n * --------------------------------\n * Allocates a ref pointing to the specified float value.\n */\n</scan>\nvoid *newRefFloat(float value);\n\n<a name=\"Function:newRefDouble\"><scan class=comment>/*\n * Function: newRefDouble\n * Usage: ref = newRefDouble(value);\n * ---------------------------------\n * Allocates a ref pointing to the specified double value.\n */\n</scan>\nvoid *newRefDouble(double value);\n\n<a name=\"Function:newRefChar\"><scan class=comment>/*\n * Function: newRefChar\n * Usage: ref = newRefChar(value);\n * -------------------------------\n * Allocates a ref pointing to the specified char value.\n */\n</scan>\nvoid *newRefChar(char value);\n\n<a name=\"Function:newRefBool\"><scan class=comment>/*\n * Function: newRefBool\n * Usage: ref = newRefBool(value);\n * -------------------------------\n * Allocates a ref pointing to the specified bool value.\n */\n</scan>\nvoid *newRefBool(bool value);\n\n<a name=\"Function:newRefUnsigned\"><scan class=comment>/*\n * Function: newRefUnsigned\n * Usage: ref = newRefUnsigned(value);\n * -----------------------------------\n * Allocates a ref pointing to the specified unsigned value.\n */\n</scan>\nvoid *newRefUnsigned(unsigned value);\n\n<a name=\"Function:newRefUnsignedShort\"><scan class=comment>/*\n * Function: newRefUnsignedShort\n * Usage: ref = newRefUnsignedShort(value);\n * ----------------------------------------\n * Allocates a ref pointing to the specified unsigned short value.\n */\n</scan>\nvoid *newRefUnsignedShort(unsigned short value);\n\n<a name=\"Function:newRefUnsignedLong\"><scan class=comment>/*\n * Function: newRefUnsignedLong\n * Usage: ref = newRefUnsignedLong(value);\n * ---------------------------------------\n * Allocates a ref pointing to the specified unsigned long value.\n */\n</scan>\nvoid *newRefUnsignedLong(unsigned long value);\n\n<a name=\"Function:newRefUnsignedChar\"><scan class=comment>/*\n * Function: newRefUnsignedChar\n * Usage: ref = newRefUnsignedChar(value);\n * ---------------------------------------\n * Allocates a ref pointing to the specified unsigned char value.\n */\n</scan>\nvoid *newRefUnsignedChar(unsigned char value);\n\n<scan class=comment>/*\n * Part 2 -- Functions to dereference generic pointers\n * ---------------------------------------------------\n * These functions take a generic pointer of type void * and return the\n * value to which it points, which must be of the type indicated by the\n * function name.  For example, refToInt(ref) interprets ref as a pointer\n * to an int and returns the integer at that address.\n */\n</scan>\n<a name=\"Function:refToInt\"><scan class=comment>/*\n * Function: refToInt\n * Usage: i = refToInt(ref);\n * -------------------------\n * Returns the int to which this reference points.\n */\n</scan>\nint refToInt(void *ref);\n\n<a name=\"Function:refToShort\"><scan class=comment>/*\n * Function: refToShort\n * Usage: s = refToShort(ref);\n * ---------------------------\n * Returns the short to which this reference points.\n */\n</scan>\nshort refToShort(void *ref);\n\n<a name=\"Function:refToLong\"><scan class=comment>/*\n * Function: refToLong\n * Usage: l = refToLong(ref);\n * --------------------------\n * Returns the long to which this reference points.\n */\n</scan>\nlong refToLong(void *ref);\n\n<a name=\"Function:refToFloat\"><scan class=comment>/*\n * Function: refToFloat\n * Usage: f = refToFloat(ref);\n * ---------------------------\n * Returns the float to which this reference points.\n */\n</scan>\nfloat refToFloat(void *ref);\n\n<a name=\"Function:refToDouble\"><scan class=comment>/*\n * Function: refToDouble\n * Usage: d = refToDouble(ref);\n * ----------------------------\n * Returns the double to which this reference points.\n */\n</scan>\ndouble refToDouble(void *ref);\n\n<a name=\"Function:refToChar\"><scan class=comment>/*\n * Function: refToChar\n * Usage: c = refToChar(ref);\n * --------------------------\n * Returns the char to which this reference points.\n */\n</scan>\nchar refToChar(void *ref);\n\n<a name=\"Function:refToBool\"><scan class=comment>/*\n * Function: refToBool\n * Usage: b = refToBool(ref);\n * --------------------------\n * Returns the bool to which this reference points.\n */\n</scan>\nbool refToBool(void *ref);\n\n<a name=\"Function:refToUnsigned\"><scan class=comment>/*\n * Function: refToUnsigned\n * Usage: u = refToUnsigned(ref);\n * ------------------------------\n * Returns the unsigned to which this reference points.\n */\n</scan>\nunsigned refToUnsigned(void *ref);\n\n<a name=\"Function:refToUnsignedShort\"><scan class=comment>/*\n * Function: refToUnsignedShort\n * Usage: us = refToUnsignedShort(ref);\n * ------------------------------------\n * Returns the unsigned short to which this reference points.\n */\n</scan>\nunsigned short refToUnsignedShort(void *ref);\n\n<a name=\"Function:refToUnsignedLong\"><scan class=comment>/*\n * Function: refToUnsignedLong\n * Usage: ul = refToUnsignedLong(ref);\n * -----------------------------------\n * Returns the unsigned long to which this reference points.\n */\n</scan>\nunsigned long refToUnsignedLong(void *ref);\n\n<a name=\"Function:refToUnsignedChar\"><scan class=comment>/*\n * Function: refToUnsignedChar\n * Usage: uc = refToUnsignedChar(ref);\n * -----------------------------------\n * Returns the unsigned char to which this reference points.\n */\n</scan>\nunsigned char refToUnsignedChar(void *ref);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/ref.html",
    "content": "<html>\n<head>\n<title>ref.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><a href=\"ref-h.html\"><code>ref.h</code></a></h1>\nThis interface exports several simple functions for allocating\npointers to the atomic types.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newRefInt\">newRefInt(value)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Allocates a ref pointing to the specified <code>int</code> value.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newRefShort\">newRefShort(value)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Allocates a ref pointing to the specified <code>short</code> value.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newRefLong\">newRefLong(value)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Allocates a ref pointing to the specified <code>long</code> value.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newRefFloat\">newRefFloat(value)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Allocates a ref pointing to the specified <code>float</code> value.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newRefDouble\">newRefDouble(value)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Allocates a ref pointing to the specified <code>double</code> value.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newRefChar\">newRefChar(value)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Allocates a ref pointing to the specified <code>char</code> value.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newRefBool\">newRefBool(value)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Allocates a ref pointing to the specified <code>bool</code> value.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newRefUnsigned\">newRefUnsigned(value)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Allocates a ref pointing to the specified <code>unsigned</code> value.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newRefUnsignedShort\">newRefUnsignedShort(value)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Allocates a ref pointing to the specified <code>unsigned short</code> value.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newRefUnsignedLong\">newRefUnsignedLong(value)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Allocates a ref pointing to the specified <code>unsigned long</code> value.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newRefUnsignedChar\">newRefUnsignedChar(value)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Allocates a ref pointing to the specified <code>unsigned char</code> value.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:refToInt\">refToInt(ref)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the <code>int</code> to which this reference points.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:refToShort\">refToShort(ref)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the <code>short</code> to which this reference points.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:refToLong\">refToLong(ref)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the <code>long</code> to which this reference points.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:refToFloat\">refToFloat(ref)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the <code>float</code> to which this reference points.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:refToDouble\">refToDouble(ref)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the <code>double</code> to which this reference points.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:refToChar\">refToChar(ref)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the <code>char</code> to which this reference points.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:refToBool\">refToBool(ref)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the <code>bool</code> to which this reference points.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:refToUnsigned\">refToUnsigned(ref)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the <code>unsigned</code> to which this reference points.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:refToUnsignedShort\">refToUnsignedShort(ref)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the <code>unsigned short</code> to which this reference points.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:refToUnsignedLong\">refToUnsignedLong(ref)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the <code>unsigned long</code> to which this reference points.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:refToUnsignedChar\">refToUnsignedChar(ref)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the <code>unsigned char</code> to which this reference points.</td></tr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:newRefInt\"></a>\n<pre class=detailCode>\nvoid *newRefInt(int value);\n</pre>\n<div class=detailHTML>\nAllocates a ref pointing to the specified <code>int</code> value.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nref = newRefInt(value);\n</pre>\n<hr>\n<a name=\"Function:newRefShort\"></a>\n<pre class=detailCode>\nvoid *newRefShort(short value);\n</pre>\n<div class=detailHTML>\nAllocates a ref pointing to the specified <code>short</code> value.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nref = newRefShort(value);\n</pre>\n<hr>\n<a name=\"Function:newRefLong\"></a>\n<pre class=detailCode>\nvoid *newRefLong(long value);\n</pre>\n<div class=detailHTML>\nAllocates a ref pointing to the specified <code>long</code> value.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nref = newRefLong(value);\n</pre>\n<hr>\n<a name=\"Function:newRefFloat\"></a>\n<pre class=detailCode>\nvoid *newRefFloat(float value);\n</pre>\n<div class=detailHTML>\nAllocates a ref pointing to the specified <code>float</code> value.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nref = newRefFloat(value);\n</pre>\n<hr>\n<a name=\"Function:newRefDouble\"></a>\n<pre class=detailCode>\nvoid *newRefDouble(double value);\n</pre>\n<div class=detailHTML>\nAllocates a ref pointing to the specified <code>double</code> value.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nref = newRefDouble(value);\n</pre>\n<hr>\n<a name=\"Function:newRefChar\"></a>\n<pre class=detailCode>\nvoid *newRefChar(char value);\n</pre>\n<div class=detailHTML>\nAllocates a ref pointing to the specified <code>char</code> value.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nref = newRefChar(value);\n</pre>\n<hr>\n<a name=\"Function:newRefBool\"></a>\n<pre class=detailCode>\nvoid *newRefBool(bool value);\n</pre>\n<div class=detailHTML>\nAllocates a ref pointing to the specified <code>bool</code> value.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nref = newRefBool(value);\n</pre>\n<hr>\n<a name=\"Function:newRefUnsigned\"></a>\n<pre class=detailCode>\nvoid *newRefUnsigned(unsigned value);\n</pre>\n<div class=detailHTML>\nAllocates a ref pointing to the specified <code>unsigned</code> value.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nref = newRefUnsigned(value);\n</pre>\n<hr>\n<a name=\"Function:newRefUnsignedShort\"></a>\n<pre class=detailCode>\nvoid *newRefUnsignedShort(unsigned short value);\n</pre>\n<div class=detailHTML>\nAllocates a ref pointing to the specified <code>unsigned short</code> value.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nref = newRefUnsignedShort(value);\n</pre>\n<hr>\n<a name=\"Function:newRefUnsignedLong\"></a>\n<pre class=detailCode>\nvoid *newRefUnsignedLong(unsigned long value);\n</pre>\n<div class=detailHTML>\nAllocates a ref pointing to the specified <code>unsigned long</code> value.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nref = newRefUnsignedLong(value);\n</pre>\n<hr>\n<a name=\"Function:newRefUnsignedChar\"></a>\n<pre class=detailCode>\nvoid *newRefUnsignedChar(unsigned char value);\n</pre>\n<div class=detailHTML>\nAllocates a ref pointing to the specified <code>unsigned char</code> value.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nref = newRefUnsignedChar(value);\n</pre>\n<hr>\n<a name=\"Function:refToInt\"></a>\n<pre class=detailCode>\nint refToInt(void *ref);\n</pre>\n<div class=detailHTML>\nReturns the <code>int</code> to which this reference points.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ni = refToInt(ref);\n</pre>\n<hr>\n<a name=\"Function:refToShort\"></a>\n<pre class=detailCode>\nshort refToShort(void *ref);\n</pre>\n<div class=detailHTML>\nReturns the <code>short</code> to which this reference points.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ns = refToShort(ref);\n</pre>\n<hr>\n<a name=\"Function:refToLong\"></a>\n<pre class=detailCode>\nlong refToLong(void *ref);\n</pre>\n<div class=detailHTML>\nReturns the <code>long</code> to which this reference points.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nl = refToLong(ref);\n</pre>\n<hr>\n<a name=\"Function:refToFloat\"></a>\n<pre class=detailCode>\nfloat refToFloat(void *ref);\n</pre>\n<div class=detailHTML>\nReturns the <code>float</code> to which this reference points.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nf = refToFloat(ref);\n</pre>\n<hr>\n<a name=\"Function:refToDouble\"></a>\n<pre class=detailCode>\ndouble refToDouble(void *ref);\n</pre>\n<div class=detailHTML>\nReturns the <code>double</code> to which this reference points.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nd = refToDouble(ref);\n</pre>\n<hr>\n<a name=\"Function:refToChar\"></a>\n<pre class=detailCode>\nchar refToChar(void *ref);\n</pre>\n<div class=detailHTML>\nReturns the <code>char</code> to which this reference points.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nc = refToChar(ref);\n</pre>\n<hr>\n<a name=\"Function:refToBool\"></a>\n<pre class=detailCode>\nbool refToBool(void *ref);\n</pre>\n<div class=detailHTML>\nReturns the <code>bool</code> to which this reference points.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nb = refToBool(ref);\n</pre>\n<hr>\n<a name=\"Function:refToUnsigned\"></a>\n<pre class=detailCode>\nunsigned refToUnsigned(void *ref);\n</pre>\n<div class=detailHTML>\nReturns the <code>unsigned</code> to which this reference points.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nu = refToUnsigned(ref);\n</pre>\n<hr>\n<a name=\"Function:refToUnsignedShort\"></a>\n<pre class=detailCode>\nunsigned short refToUnsignedShort(void *ref);\n</pre>\n<div class=detailHTML>\nReturns the <code>unsigned short</code> to which this reference points.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nus = refToUnsignedShort(ref);\n</pre>\n<hr>\n<a name=\"Function:refToUnsignedLong\"></a>\n<pre class=detailCode>\nunsigned long refToUnsignedLong(void *ref);\n</pre>\n<div class=detailHTML>\nReturns the <code>unsigned long</code> to which this reference points.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nul = refToUnsignedLong(ref);\n</pre>\n<hr>\n<a name=\"Function:refToUnsignedChar\"></a>\n<pre class=detailCode>\nunsigned char refToUnsignedChar(void *ref);\n</pre>\n<div class=detailHTML>\nReturns the <code>unsigned char</code> to which this reference points.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nuc = refToUnsignedChar(ref);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/scanner-h.html",
    "content": "<html>\n<head>\n<title>../scanner.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: scanner.h\n * ---------------\n * The TokenScanner type is an abstract type used to dividing a string into\n * logical units called tokens.  Each token is either\n *\n * A string of consecutive letters and digits representing a word A\n * one-character string representing punctuation or a separator\n *\n * To use this package, you must first create an instance of a TokenScanner\n * by calling\n *\n *     scanner = newScanner();\n *\n * All other calls to the scanner package take this variable as their first\n * argument to identify a particular instance of the abstract scanner type.\n *\n * You initialize the scanner to hold a particular string by calling\n *\n *     setScannerString(scanner, str);\n *\n * where str is the string from which tokens should be read.  To retrieve\n * each individual token, you make the following call:\n *\n *     token = readToken(scanner);\n *\n * To determine whether any tokens remain to be read, you can call the\n * predicate function moreTokensExist(scanner).  The readToken function\n * returns the empty string after the last token is read.\n *\n * The following code fragment serves as an idiom for processing each token\n * in the string inputString:\n *\n *     scanner = newScanner();\n *     setScannerString(scanner, inputString);\n *     while (moreTokensExist(scanner)) {\n *         token = readToken(scanner);\n *         . . . process the token . . .\n *     }\n */\n</scan>\n#ifndef _scanner_h\n#define _scanner_h\n\n#include \"cslib.h\"\n\n<a name=\"Type:TokenScanner\"><scan class=comment>/*\n * Type: TokenScanner\n * ------------------\n * This type is the ADT used to represent a scanner.\n */\n</scan>\ntypedef struct TokenScannerCDT *TokenScanner;\n\ntypedef enum {\n    PreserveSpaces,\n    IgnoreSpaces\n} spaceOptionT;\n\ntypedef enum {\n    ScanNumbersAsWords,\n    ScanNumbersAsIntegers,\n    ScanNumbersAsReals\n} numberOptionT;\n\ntypedef enum {\n    ScanQuotesAsPunctuation,\n    ScanQuotesAsStrings\n} stringOptionT;\n\n<a name=\"Function:newScanner\"><scan class=comment>/*\n * Function: newScanner\n * Usage: scanner = newScanner();\n * ------------------------------\n * Creates a new scanner instance.\n */\n</scan>\nTokenScanner newScanner(void);\n\n<a name=\"Function:freeScanner\"><scan class=comment>/*\n * Function: freeScanner\n * Usage: freeScanner(scanner);\n * ----------------------------\n * Frees the storage associated with scanner.\n */\n</scan>\nvoid freeScanner(TokenScanner scanner);\n\n<a name=\"Function:setScannerString\"><scan class=comment>/*\n * Function: setScannerString\n * Usage: setScannerString(scanner, str);\n * --------------------------------------\n * Initializes the scanner so that it will start extracting tokens from the\n * string str.\n */\n</scan>\nvoid setScannerString(TokenScanner scanner, string str);\n\n<a name=\"Function:readToken\"><scan class=comment>/*\n * Function: readToken\n * Usage: token = readToken(scanner);\n * ----------------------------------\n * Returns the next token from scanner.  If readToken is called when no\n * tokens are available, it returns the empty string.  The token returned\n * by readToken is always allocated in the heap, which means that clients\n * can call freeBlock when the token is no longer needed.\n */\n</scan>\nstring readToken(TokenScanner scanner);\n\n<a name=\"Function:moreTokensExist\"><scan class=comment>/*\n * Function: moreTokensExist\n * Usage: if (moreTokensExist(scanner)) . . .\n * ------------------------------------------\n * Returns true as long as there are additional tokens for the scanner to\n * read.\n */\n</scan>\nbool moreTokensExist(TokenScanner scanner);\n\n<a name=\"Function:saveToken\"><scan class=comment>/*\n * Function: saveToken\n * Usage: saveToken(scanner, token);\n * ---------------------------------\n * Stores the token in the scanner data structure in such a way that the\n * next time readToken is called, it will return that token without reading\n * any additional characters from the input.\n */\n</scan>\nvoid saveToken(TokenScanner scanner, string token);\n\n<a name=\"Function:setScannerSpaceOption\"><scan class=comment>/*\n * Function: setScannerSpaceOption\n * Usage: setScannerSpaceOption(scanner, option);\n * ----------------------------------------------\n * Controls whether the scanner ignores whitespace characters or treats\n * them as valid tokens.  By default, the readToken function treats\n * whitespace characters, such as spaces and tabs, just like any other\n * punctuation mark.  If, however, you call\n *\n *   setScannerSpaceOption(scanner, IgnoreSpaces);\n *\n * the scanner will skip over any white space before reading a token.  You\n * can restore the original behavior by calling\n *\n *   setScannerSpaceOption(scanner, PreserveSpaces);\n */\n</scan>\nvoid setScannerSpaceOption(TokenScanner scanner, spaceOptionT option);\n\n<a name=\"Function:getScannerSpaceOption\"><scan class=comment>/*\n * Function: getScannerSpaceOption\n * Usage: option = getScannerSpaceOption(scanner);\n * -----------------------------------------------\n * Returns the setting of the space option set by the most recent call to\n * setScannerSpaceOption.\n */\n</scan>\nspaceOptionT getScannerSpaceOption(TokenScanner scanner);\n\n<a name=\"Function:setScannerNumberOption\"><scan class=comment>/*\n * Function: setScannerNumberOption\n * Usage: setScannerNumberOption(scanner, option);\n * -----------------------------------------------\n * Controls whether the scanner treats numeric values specially.  The\n * default behavior for the scanner is to treat digits exactly like\n * letters, which means that they are scanned as words.  If you call\n *\n *   setScannerNumberOption(scanner, ScanNumbersAsIntegers);\n *\n * a token beginning with a digit will end at the first nondigit.  (Note\n * that digits can still be scanned as part of a token as in the token x1.)\n * If you call\n *\n *   setScannerNumberOption(scanner, ScanNumbersAsReals);\n *\n * the scanner will return the longest token string that represents a real\n * number, if the next character to be scanned is a digit.  The format for\n * a real number is a sequence of digit characters that may include at most\n * one decimal point, optionally followed by the letter E or e, an optional\n * sign, and an exponent.  You can restore the default behavior by calling\n *\n *   setScannerNumberOption(scanner, ScanNumbersAsWords);\n *\n * Even if the number options are enabled, readToken always returns its\n * result as a string, which means that you need to call stringToInteger or\n * stringToReal to convert the token to a number.\n */\n</scan>\nvoid setScannerNumberOption(TokenScanner scanner,\n                                      numberOptionT option);\n\n<a name=\"Function:getScannerNumberOption\"><scan class=comment>/*\n * Function: getScannerNumberOption\n * Usage: option = getScannerNumberOption(scanner);\n * ------------------------------------------------\n * Returns the setting of the number option set by the most recent call to\n * setScannerNumberOption.\n */\n</scan>\nnumberOptionT getScannerNumberOption(TokenScanner scanner);\n\n<a name=\"Function:setScannerStringOption\"><scan class=comment>/*\n * Function: setScannerStringOption\n * Usage: setScannerStringOption(scanner, option);\n * -----------------------------------------------\n * Controls how the scanner treats double quotation marks in the input. \n * The default behavior for the scanner is to treat quotes just like any\n * other punctuation character.  If, however, you call\n *\n *   setScannerStringOption(scanner, ScanQuotesAsStrings);\n *\n * a token beginning with a quotation mark will be scanned up to the\n * closing quotation mark.  The quotation marks are returned as part of the\n * scanned token so that clients can differentiate strings from other token\n * types.  The original behavior can be restored by calling\n *\n *   setScannerStringOption(scanner, ScanQuotesAsPunctuation);\n *\n * When scanning a string, the scanner recognizes the standard escape\n * sequences from ANSI C, such as \\n and \\t.\n */\n</scan>\nvoid setScannerStringOption(TokenScanner scanner,\n                                      stringOptionT option);\n\n<a name=\"Function:getScannerStringOption\"><scan class=comment>/*\n * Function: getScannerStringOption\n * Usage: option = getScannerStringOption(scanner);\n * ------------------------------------------------\n * Returns the setting of the string option set by the most recent call to\n * setScannerStringOption.\n */\n</scan>\nstringOptionT getScannerStringOption(TokenScanner scanner);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/scanner.html",
    "content": "<html>\n<head>\n<title>scanner.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1><a href=\"scanner-h.html\"><code>scanner.h</code></a></h1>\nThe <code>TokenScanner</code> type is an abstract type used to\ndividing a string into logical units called <i>tokens</i>.\nEach token is either\n\n<ol>\n<li>A string of consecutive letters and digits representing a word\n<li>A one-character string representing punctuation or a separator\n</ol>\n\n<p>To use this package, you must first create an instance of a\n<code>TokenScanner</code> by calling\n\n<pre>\n    scanner = newScanner();\n</pre>\n\n<p>All other calls to the scanner package take this variable as their\nfirst argument to identify a particular instance of the abstract\nscanner type.\n\n<p>You initialize the scanner to hold a particular string by calling\n\n<pre>\n    setScannerString(scanner, str);\n</pre>\n\n<p>where <code>str</code> is the string from which tokens should be read.\nTo retrieve each individual token, you make the following call:\n\n<pre>\n    token = readToken(scanner);\n</pre>\n\n<p>To determine whether any tokens remain to be read, you can call\nthe predicate function <code>moreTokensExist(scanner)</code>.\nThe <code>readToken</code> function returns the empty string after\nthe last token is read.\n\n<p>The following code fragment serves as an idiom for processing\neach token in the string <code>inputString</code>:\n\n<pre>\n    scanner = newScanner();\n    setScannerString(scanner, inputString);\n    while (moreTokensExist(scanner)) {\n        token = readToken(scanner);\n        . . . process the token . . .\n    }\n</pre>\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Type</td></tr>\n<tr><td class=indexKey><a href=\"#Type:TokenScanner\">TokenScanner</a>&nbsp;</td><td class=indexSynopsis width=100%>This type is the ADT used to represent a scanner.</td></tr>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><a href=\"#Function:newScanner\">newScanner()</a>&nbsp;</td><td class=indexSynopsis width=100%>Creates a new scanner instance.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:freeScanner\">freeScanner(scanner)</a>&nbsp;</td><td class=indexSynopsis width=100%>Frees the storage associated with scanner.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:setScannerString\">setScannerString(scanner,&nbsp;str)</a>&nbsp;</td><td class=indexSynopsis width=100%>Initializes the scanner so that it will start extracting tokens from the string <code>str</code>.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:readToken\">readToken(scanner)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the next token from scanner.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:moreTokensExist\">moreTokensExist(scanner)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns <code>true</code> as long as there are additional tokens for the scanner to read.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:saveToken\">saveToken(scanner,&nbsp;token)</a>&nbsp;</td><td class=indexSynopsis width=100%>Stores the token in the scanner data structure in such a way that the next time <code>readToken</code> is called, it will return that token without reading any additional characters from the input.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:setScannerSpaceOption\">setScannerSpaceOption(scanner,&nbsp;option)</a>&nbsp;</td><td class=indexSynopsis width=100%>Controls whether the scanner ignores whitespace characters or treats them as valid tokens.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:getScannerSpaceOption\">getScannerSpaceOption(scanner)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the setting of the space option set by the most recent call to <code>setScannerSpaceOption</code>.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:setScannerNumberOption\">setScannerNumberOption(scanner,&nbsp;option)</a>&nbsp;</td><td class=indexSynopsis width=100%>Controls whether the scanner treats numeric values specially.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:getScannerNumberOption\">getScannerNumberOption(scanner)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the setting of the number option set by the most recent call to <code>setScannerNumberOption</code>.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:setScannerStringOption\">setScannerStringOption(scanner,&nbsp;option)</a>&nbsp;</td><td class=indexSynopsis width=100%>Controls how the scanner treats double quotation marks in the input.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:getScannerStringOption\">getScannerStringOption(scanner)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the setting of the string option set by the most recent call to <code>setScannerStringOption</code>.</td></tr>\n</table>\n<h2>Type detail</h2>\n<hr>\n<a name=\"Type:TokenScanner\"></a>\n<pre class=detailCode>\ntypedef struct TokenScannerCDT *TokenScanner;\n\ntypedef enum {\n    PreserveSpaces,\n    IgnoreSpaces\n} spaceOptionT;\n\ntypedef enum {\n    ScanNumbersAsWords,\n    ScanNumbersAsIntegers,\n    ScanNumbersAsReals\n} numberOptionT;\n\ntypedef enum {\n    ScanQuotesAsPunctuation,\n    ScanQuotesAsStrings\n} stringOptionT;\n</pre>\n<div class=detailHTML>\nThis type is the ADT used to represent a scanner.\n</div>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:newScanner\"></a>\n<pre class=detailCode>\nTokenScanner newScanner(void);\n</pre>\n<div class=detailHTML>\nCreates a new scanner instance.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nscanner = newScanner();\n</pre>\n<hr>\n<a name=\"Function:freeScanner\"></a>\n<pre class=detailCode>\nvoid freeScanner(TokenScanner scanner);\n</pre>\n<div class=detailHTML>\nFrees the storage associated with scanner.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfreeScanner(scanner);\n</pre>\n<hr>\n<a name=\"Function:setScannerString\"></a>\n<pre class=detailCode>\nvoid setScannerString(TokenScanner scanner, string str);\n</pre>\n<div class=detailHTML>\nInitializes the scanner so that it will start extracting tokens from\nthe string <code>str</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetScannerString(scanner, str);\n</pre>\n<hr>\n<a name=\"Function:readToken\"></a>\n<pre class=detailCode>\nstring readToken(TokenScanner scanner);\n</pre>\n<div class=detailHTML>\nReturns the next token from scanner.  If <code>readToken</code>\nis called when no tokens are available, it returns the empty string.\nThe token returned by <code>readToken</code> is always allocated in\nthe heap, which means that clients can call <code>freeBlock</code>\nwhen the token is no longer needed.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ntoken = readToken(scanner);\n</pre>\n<hr>\n<a name=\"Function:moreTokensExist\"></a>\n<pre class=detailCode>\nbool moreTokensExist(TokenScanner scanner);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> as long as there are additional tokens for\nthe scanner to read.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (moreTokensExist(scanner)) . . .\n</pre>\n<hr>\n<a name=\"Function:saveToken\"></a>\n<pre class=detailCode>\nvoid saveToken(TokenScanner scanner, string token);\n</pre>\n<div class=detailHTML>\nStores the token in the scanner data structure in such a way that\nthe next time <code>readToken</code> is called, it will return that\ntoken without reading any additional characters from the input.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsaveToken(scanner, token);\n</pre>\n<hr>\n<a name=\"Function:setScannerSpaceOption\"></a>\n<pre class=detailCode>\nvoid setScannerSpaceOption(TokenScanner scanner, spaceOptionT option);\n</pre>\n<div class=detailHTML>\nControls whether the scanner ignores whitespace characters or treats\nthem as valid tokens.  By default, the <code>readToken</code> function\ntreats whitespace characters, such as spaces and tabs, just like any\nother punctuation mark.  If, however, you call\n\n<pre>\n  setScannerSpaceOption(scanner, IgnoreSpaces);\n</pre>\n\n<p>the scanner will skip over any white space before reading a token.\nYou can restore the original behavior by calling\n\n<pre>\n  setScannerSpaceOption(scanner, PreserveSpaces);\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetScannerSpaceOption(scanner, option);\n</pre>\n<hr>\n<a name=\"Function:getScannerSpaceOption\"></a>\n<pre class=detailCode>\nspaceOptionT getScannerSpaceOption(TokenScanner scanner);\n</pre>\n<div class=detailHTML>\nReturns the setting of the space option set by the most recent call\nto <code>setScannerSpaceOption</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\noption = getScannerSpaceOption(scanner);\n</pre>\n<hr>\n<a name=\"Function:setScannerNumberOption\"></a>\n<pre class=detailCode>\nvoid setScannerNumberOption(TokenScanner scanner,\n                                      numberOptionT option);\n</pre>\n<div class=detailHTML>\nControls whether the scanner treats numeric values specially.\nThe default behavior for the scanner is to treat digits exactly like\nletters, which means that they are scanned as words.  If you call\n\n<pre>\n  setScannerNumberOption(scanner, ScanNumbersAsIntegers);\n</pre>\n\n<p>a token beginning with a digit will end at the first nondigit.\n(Note that digits can still be scanned as part of a token as in\nthe token <code>x1</code>.)  If you call\n\n<pre>\n  setScannerNumberOption(scanner, ScanNumbersAsReals);\n</pre>\n\n<p>the scanner will return the longest token string that represents\na real number, if the next character to be scanned is a digit.\nThe format for a real number is a sequence of digit characters\nthat may include at most one decimal point, optionally followed\nby the letter <code>E</code> or <code>e</code>, an optional sign,\nand an exponent.  You can restore the default behavior by calling\n\n<pre>\n  setScannerNumberOption(scanner, ScanNumbersAsWords);\n</pre>\n\nEven if the number options are enabled, <code>readToken</code> always\nreturns its result as a string, which means that you need to call\n<code>stringToInteger</code> or <code>stringToReal</code> to convert\nthe token to a number.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetScannerNumberOption(scanner, option);\n</pre>\n<hr>\n<a name=\"Function:getScannerNumberOption\"></a>\n<pre class=detailCode>\nnumberOptionT getScannerNumberOption(TokenScanner scanner);\n</pre>\n<div class=detailHTML>\nReturns the setting of the number option set by the most recent call\nto <code>setScannerNumberOption</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\noption = getScannerNumberOption(scanner);\n</pre>\n<hr>\n<a name=\"Function:setScannerStringOption\"></a>\n<pre class=detailCode>\nvoid setScannerStringOption(TokenScanner scanner,\n                                      stringOptionT option);\n</pre>\n<div class=detailHTML>\nControls how the scanner treats double quotation marks in the input.\nThe default behavior for the scanner is to treat quotes just like any\nother punctuation character.  If, however, you call\n\n<pre>\n  setScannerStringOption(scanner, ScanQuotesAsStrings);\n</pre>\n\na token beginning with a quotation mark will be scanned up to\nthe closing quotation mark.  The quotation marks are returned\nas part of the scanned token so that clients can differentiate\nstrings from other token types.  The original behavior can be\nrestored by calling\n\n<pre>\n  setScannerStringOption(scanner, ScanQuotesAsPunctuation);\n</pre>\n\n<p>When scanning a string, the scanner recognizes the standard escape\nsequences from ANSI C, such as <code>\\n</code> and <code>\\t</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetScannerStringOption(scanner, option);\n</pre>\n<hr>\n<a name=\"Function:getScannerStringOption\"></a>\n<pre class=detailCode>\nstringOptionT getScannerStringOption(TokenScanner scanner);\n</pre>\n<div class=detailHTML>\nReturns the setting of the string option set by the most recent call\nto <code>setScannerStringOption</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\noption = getScannerStringOption(scanner);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/set-h.html",
    "content": "<html>\n<head>\n<title>../set.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: set.h\n * -----------\n * This interface exports an abstract type that represents sets of values.\n */\n</scan>\n#ifndef _set_h\n#define _set_h\n\n#include &lt;stdarg.h&gt;\n#include \"cslib.h\"\n#include \"cmpfn.h\"\n\n<a name=\"Type:Set\"><scan class=comment>/*\n * Type: Set\n * ---------\n * Defines the abstract type used to represent sets.\n */\n</scan>\ntypedef struct SetCDT *Set;\n\n<scan class=comment>/* Exported entries */</scan>\n\n<a name=\"Function:newSet\"><scan class=comment>/*\n * Function: newSet\n * Usage: set = newSet(type);\n * --------------------------\n * Creates an empty set of values of the specified base type.  The type\n * parameter must be an explicit type name like int or string.\n */\n</scan>\n#define newSet(type) newSetFromType(#type)\n\n<a name=\"Function:newSetFromType\"><scan class=comment>/*\n * Function: newSetFromType\n * Usage: set = newSetFromType(baseType);\n * --------------------------------------\n * Creates a new set of values with the specified base type expressed as a\n * string.\n */\n</scan>\nSet newSetFromType(string baseType);\n\n<a name=\"Function:freeSet\"><scan class=comment>/*\n * Function: freeSet\n * Usage: freeSet(set);\n * --------------------\n * Frees the storage associated with a set.\n */\n</scan>\nvoid freeSet(Set set);\n\n<a name=\"Function:size\"><scan class=comment>/*\n * Function: size\n * Usage: n = size(set);\n * ---------------------\n * Returns the number of elements in the set.\n */\n</scan>\nint sizeSet(Set set);\n\n<a name=\"Function:isEmpty\"><scan class=comment>/*\n * Function: isEmpty\n * Usage: if (isEmpty(set)) . . .\n * ------------------------------\n * Returns true if the set has no elements.\n */\n</scan>\nbool isEmptySet(Set set);\n\n<a name=\"Function:clear\"><scan class=comment>/*\n * Function: clear\n * Usage: clear(set);\n * ------------------\n * Removes all elements from the set.\n */\n</scan>\nvoid clearSet(Set set);\n\n<a name=\"Function:clone\"><scan class=comment>/*\n * Function: clone\n * Usage: newset = clone(set);\n * ---------------------------\n * Creates a copy of the set.  The clone function copies only the first\n * level of the structure and does not copy the individual elements.\n */\n</scan>\nSet cloneSet(Set set);\n\n<a name=\"Function:contains\"><scan class=comment>/*\n * Function: contains\n * Usage: if (contains(set, value)) . . .\n * --------------------------------------\n * Returns true if the specified value is a member of the set.\n */\n</scan>\nbool containsSet(Set set, ...);\n\n<a name=\"Friend function:containsSetFromArgs\"><scan class=comment>/*\n * Friend function: containsSetFromArgs\n * Usage: if (containsSetFromArgs(set, args)) . . .\n * ------------------------------------------------\n * Identical to containsSet except that the argument comes from the args\n * list.\n */\n</scan>\nbool containsSetFromArgs(Set set, va_list args);\n\n<a name=\"Function:add\"><scan class=comment>/*\n * Function: add\n * Usage: add(set, value);\n * -----------------------\n * Adds the specified value to the set.\n */\n</scan>\nvoid addSet(Set set, ...);\n\n<a name=\"Friend function:addSetFromArgs\"><scan class=comment>/*\n * Friend function: addSetFromArgs\n * Usage: addSetFromArgs(set, args);\n * ---------------------------------\n * Identical to addSet except that the argument comes from the args list.\n */\n</scan>\nvoid addSetFromArgs(Set set, va_list args);\n\n<a name=\"Function:remove\"><scan class=comment>/*\n * Function: remove\n * Usage: remove(set, value);\n * --------------------------\n * Removes the specified value from the set.\n */\n</scan>\nvoid removeSet(Set set, ...);\n\n<a name=\"Friend function:removeSetFromArgs\"><scan class=comment>/*\n * Friend function: removeSetFromArgs\n * Usage: removeSetFromArgs(set, args);\n * ------------------------------------\n * Identical to removeSet except that the argument comes from the args\n * list.\n */\n</scan>\nvoid removeSetFromArgs(Set set, va_list args);\n\n<a name=\"Function:equals\"><scan class=comment>/*\n * Function: equals\n * Usage: if (equals(s1, s2)) . . .\n * --------------------------------\n * Returns true if s1 and s2 are equal, which means that they contain the\n * same elements.\n */\n</scan>\nbool equalsSet(Set s1, Set s2);\n\n<a name=\"Function:isSubset\"><scan class=comment>/*\n * Function: isSubset\n * Usage: if (isSubset(s1, s2)) . . .\n * ----------------------------------\n * Returns true if s1 is a subset of s2.\n */\n</scan>\nbool isSubsetSet(Set s1, Set s2);\n\n<a name=\"Function:union\"><scan class=comment>/*\n * Function: union\n * Usage: set = union(s1, s2);\n * ---------------------------\n * Returns a new set consisting of all elements in either s1 or s2.\n */\n</scan>\nSet unionSet(Set s1, Set s2);\n\n<a name=\"Function:intersection\"><scan class=comment>/*\n * Function: intersection\n * Usage: set = intersection(s1, s2);\n * ----------------------------------\n * Returns a new set consisting of all elements in both s1 and s2.\n */\n</scan>\nSet intersectionSet(Set s1, Set s2);\n\n<a name=\"Function:setDifference\"><scan class=comment>/*\n * Function: setDifference\n * Usage: set = setDifference(s1, s2);\n * -----------------------------------\n * Returns a new set consisting of all elements in s1 that are not elements\n * of s2.\n */\n</scan>\nSet setDifferenceSet(Set s1, Set s2);\n\n<a name=\"Function:setCompareFn\"><scan class=comment>/*\n * Function: setCompareFn\n * Usage: setCompareFn(set, cmpFn);\n * --------------------------------\n * Sets the comparison function for elements in the set.  Clients who are\n * using primitive types as base types will not need to call this function.\n */\n</scan>\nvoid setCompareFn(Set set, CompareFn cmpFn);\n\n<a name=\"Function:getCompareFn\"><scan class=comment>/*\n * Function: getCompareFn\n * Usage: cmpFn = getCompareFn(set);\n * ---------------------------------\n * Returns the comparison function for elements in the set.\n */\n</scan>\nCompareFn getCompareFn(Set set);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/set.html",
    "content": "<html>\n<head>\n<title>set.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><a href=\"set-h.html\"><code>set.h</code></a></h1>\nThis interface exports an abstract type that represents sets of values.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Type</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:Set\">Set</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Defines the abstract type used to represent sets.</td></tr>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newSet\">newSet(type)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates an empty set of values of the specified base type.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newSetFromType\">newSetFromType(baseType)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a new set of values with the specified base type expressed as a string.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:freeSet\">freeSet(set)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Frees the storage associated with a set.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:size\">size(set)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the number of elements in the set.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:isEmpty\">isEmpty(set)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the set has no elements.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:clear\">clear(set)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Removes all elements from the set.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:clone\">clone(set)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a copy of the set.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:contains\">contains(set,&nbsp;value)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the specified value is a member of the set.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:add\">add(set,&nbsp;value)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Adds the specified value to the set.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:remove\">remove(set,&nbsp;value)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Removes the specified value from the set.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:equals\">equals(s1,&nbsp;s2)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if <code>s1</code> and <code>s2</code> are equal, which means that they contain the same elements.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:isSubset\">isSubset(s1,&nbsp;s2)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if <code>s1</code> is a subset of <code>s2</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:union\">union(s1,&nbsp;s2)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a new set consisting of all elements in either <code>s1</code> or <code>s2</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:intersection\">intersection(s1,&nbsp;s2)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a new set consisting of all elements in both <code>s1</code> and <code>s2</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setDifference\">setDifference(s1,&nbsp;s2)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a new set consisting of all elements in <code>s1</code> that are not elements of <code>s2</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setCompareFn\">setCompareFn(set,&nbsp;cmpFn)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the comparison function for elements in the set.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getCompareFn\">getCompareFn(set)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the comparison function for elements in the set.</td></tr>\n</table>\n<h2>Type detail</h2>\n<hr>\n<a name=\"Type:Set\"></a>\n<pre class=detailCode>\ntypedef struct SetCDT *Set;\n</pre>\n<div class=detailHTML>\nDefines the abstract type used to represent sets.\n</div>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:newSet\"></a>\n<pre class=detailCode>\n</pre>\n<div class=detailHTML>\nCreates an empty set of values of the specified base type.  The\n<code>type</code> parameter must be an explicit type name like\n<code>int</code> or <code>string</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset = newSet(type);\n</pre>\n<hr>\n<a name=\"Function:newSetFromType\"></a>\n<pre class=detailCode>\nSet newSetFromType(string baseType);\n</pre>\n<div class=detailHTML>\nCreates a new set of values with the specified base type expressed as\na string.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset = newSetFromType(baseType);\n</pre>\n<hr>\n<a name=\"Function:freeSet\"></a>\n<pre class=detailCode>\nvoid freeSet(Set set);\n</pre>\n<div class=detailHTML>\nFrees the storage associated with a set.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfreeSet(set);\n</pre>\n<hr>\n<a name=\"Function:size\"></a>\n<pre class=detailCode>\nint size(Set set);\n</pre>\n<div class=detailHTML>\nReturns the number of elements in the set.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nn = size(set);\n</pre>\n<hr>\n<a name=\"Function:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty(Set set);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the set has no elements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (isEmpty(set)) . . .\n</pre>\n<hr>\n<a name=\"Function:clear\"></a>\n<pre class=detailCode>\nvoid clear(Set set);\n</pre>\n<div class=detailHTML>\nRemoves all elements from the set.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nclear(set);\n</pre>\n<hr>\n<a name=\"Function:clone\"></a>\n<pre class=detailCode>\nSet clone(Set set);\n</pre>\n<div class=detailHTML>\nCreates a copy of the set.  The <code>clone</code> function copies\nonly the first level of the structure and does not copy the individual\nelements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nnewset = clone(set);\n</pre>\n<hr>\n<a name=\"Function:contains\"></a>\n<pre class=detailCode>\nbool contains(Set set, ...);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the specified value is a member of the set.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (contains(set, value)) . . .\n</pre>\n<hr>\n<a name=\"Function:add\"></a>\n<pre class=detailCode>\nvoid add(Set set, ...);\n</pre>\n<div class=detailHTML>\nAdds the specified value to the set.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nadd(set, value);\n</pre>\n<hr>\n<a name=\"Function:remove\"></a>\n<pre class=detailCode>\nvoid remove(Set set, ...);\n</pre>\n<div class=detailHTML>\nRemoves the specified value from the set.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nremove(set, value);\n</pre>\n<hr>\n<a name=\"Function:equals\"></a>\n<pre class=detailCode>\nbool equals(Set s1, Set s2);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if <code>s1</code> and <code>s2</code>\nare equal, which means that they contain the same elements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (equals(s1, s2)) . . .\n</pre>\n<hr>\n<a name=\"Function:isSubset\"></a>\n<pre class=detailCode>\nbool isSubset(Set s1, Set s2);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if <code>s1</code> is a subset of\n<code>s2</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (isSubset(s1, s2)) . . .\n</pre>\n<hr>\n<a name=\"Function:union\"></a>\n<pre class=detailCode>\nSet union(Set s1, Set s2);\n</pre>\n<div class=detailHTML>\nReturns a new set consisting of all elements in either <code>s1</code>\nor <code>s2</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset = union(s1, s2);\n</pre>\n<hr>\n<a name=\"Function:intersection\"></a>\n<pre class=detailCode>\nSet intersection(Set s1, Set s2);\n</pre>\n<div class=detailHTML>\nReturns a new set consisting of all elements in both <code>s1</code>\nand <code>s2</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset = intersection(s1, s2);\n</pre>\n<hr>\n<a name=\"Function:setDifference\"></a>\n<pre class=detailCode>\nSet setDifference(Set s1, Set s2);\n</pre>\n<div class=detailHTML>\nReturns a new set consisting of all elements in <code>s1</code>\nthat are not elements of <code>s2</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset = setDifference(s1, s2);\n</pre>\n<hr>\n<a name=\"Function:setCompareFn\"></a>\n<pre class=detailCode>\nvoid setCompareFn(Set set, CompareFn cmpFn);\n</pre>\n<div class=detailHTML>\nSets the comparison function for elements in the set.  Clients who are\nusing primitive types as base types will not need to call this function.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetCompareFn(set, cmpFn);\n</pre>\n<hr>\n<a name=\"Function:getCompareFn\"></a>\n<pre class=detailCode>\nCompareFn getCompareFn(Set set);\n</pre>\n<div class=detailHTML>\nReturns the comparison function for elements in the set.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncmpFn = getCompareFn(set);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/sexp-h.html",
    "content": "<html>\n<head>\n<title>../sexp.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: sexp.h\n * ------------\n * This file specifies the interface to a Lisp-like S-expression facility.\n */\n</scan>\n#ifndef _sexp_h\n#define _sexp_h\n\n#include \"cslib.h\"\n\n<a name=\"Type:sexp\"><scan class=comment>/*\n * Type: sexp\n * ----------\n * The abstract data type representing an S-expression object.\n */\n</scan>\ntypedef struct sexpCDT *sexp;\n\n<a name=\"Type:expression type codes\"><scan class=comment>/*\n * Type: expression type codes\n * ---------------------------\n * This list may be expanded by the client, so the typecode must be\n * represented as an integer and not as a closed enumeration type. \n * Expanded type codes behave like the pointer type and may be converted to\n * pointers.\n */\n</scan>\n#define NIL_TYPE      0\n#define ATOM_TYPE     1\n#define DTPR_TYPE     2\n#define INT_TYPE      3\n#define REAL_TYPE     4\n#define STRING_TYPE   5\n#define CHAR_TYPE     6\n#define BOOL_TYPE     7\n#define POINTER_TYPE  8\n\n<a name=\"Constant:NULL\"><scan class=comment>/*\n * Constant: NULL\n * --------------\n * Represents an empty list.\n */\n</scan>\n#define NIL NULL\n\n<a name=\"Constant:AExclamation\"><scan class=comment>/*\n * Constant: AExclamation\n * ----------------------\n * Atom for the exclamation point symbol (!).\n */\n</scan>\nextern sexp AExclamation;\n\n<a name=\"Constant:ADoubleQuote\"><scan class=comment>/*\n * Constant: ADoubleQuote\n * ----------------------\n * Atom for the double quote symbol (\").\n */\n</scan>\nextern sexp ADoubleQuote;\n\n<a name=\"Constant:ASharp\"><scan class=comment>/*\n * Constant: ASharp\n * ----------------\n * Atom for the sharp symbol (#).\n */\n</scan>\nextern sexp ASharp;\n\n<a name=\"Constant:ADollarSign\"><scan class=comment>/*\n * Constant: ADollarSign\n * ---------------------\n * Atom for the dollar-sign symbol ($).\n */\n</scan>\nextern sexp ADollarSign;\n\n<a name=\"Constant:APercent\"><scan class=comment>/*\n * Constant: APercent\n * ------------------\n * Atom for the percent symbol (%).\n */\n</scan>\nextern sexp APercent;\n\n<a name=\"Constant:AAmpersand\"><scan class=comment>/*\n * Constant: AAmpersand\n * --------------------\n * Atom for the ampersand symbol (&amp;).\n */\n</scan>\nextern sexp AAmpersand;\n\n<a name=\"Constant:ASingleQuote\"><scan class=comment>/*\n * Constant: ASingleQuote\n * ----------------------\n * Atom for the single quote symbol (').\n */\n</scan>\nextern sexp ASingleQuote;\n\n<a name=\"Constant:ALeftParen\"><scan class=comment>/*\n * Constant: ALeftParen\n * --------------------\n * Atom for the left parenthesis symbol (().\n */\n</scan>\nextern sexp ALeftParen;\n\n<a name=\"Constant:ARightParen\"><scan class=comment>/*\n * Constant: ARightParen\n * ---------------------\n * Atom for the right parenthesis symbol ()).\n */\n</scan>\nextern sexp ARightParen;\n\n<a name=\"Constant:AStar\"><scan class=comment>/*\n * Constant: AStar\n * ---------------\n * Atom for the star symbol (*).\n */\n</scan>\nextern sexp AStar;\n\n<a name=\"Constant:APlus\"><scan class=comment>/*\n * Constant: APlus\n * ---------------\n * Atom for the plus symbol (+).\n */\n</scan>\nextern sexp APlus;\n\n<a name=\"Constant:AComma\"><scan class=comment>/*\n * Constant: AComma\n * ----------------\n * Atom for the comma symbol (,).\n */\n</scan>\nextern sexp AComma;\n\n<a name=\"Constant:AMinus\"><scan class=comment>/*\n * Constant: AMinus\n * ----------------\n * Atom for the minus symbol (-).\n */\n</scan>\nextern sexp AMinus;\n\n<a name=\"Constant:APeriod\"><scan class=comment>/*\n * Constant: APeriod\n * -----------------\n * Atom for the period symbol (.).\n */\n</scan>\nextern sexp APeriod;\n\n<a name=\"Constant:ASlash\"><scan class=comment>/*\n * Constant: ASlash\n * ----------------\n * Atom for the slash symbol (/).\n */\n</scan>\nextern sexp ASlash;\n\n<a name=\"Constant:AColon\"><scan class=comment>/*\n * Constant: AColon\n * ----------------\n * Atom for the colon symbol (:).\n */\n</scan>\nextern sexp AColon;\n\n<a name=\"Constant:ASemicolon\"><scan class=comment>/*\n * Constant: ASemicolon\n * --------------------\n * Atom for the semicolon symbol (;).\n */\n</scan>\nextern sexp ASemicolon;\n\n<a name=\"Constant:ALessThan\"><scan class=comment>/*\n * Constant: ALessThan\n * -------------------\n * Atom for the less-than symbol (&lt;).\n */\n</scan>\nextern sexp ALessThan;\n\n<a name=\"Constant:AEqualSign\"><scan class=comment>/*\n * Constant: AEqualSign\n * --------------------\n * Atom for the equal-sign symbol (=).\n */\n</scan>\nextern sexp AEqualSign;\n\n<a name=\"Constant:AGreaterThan\"><scan class=comment>/*\n * Constant: AGreaterThan\n * ----------------------\n * Atom for the greater-than symbol (&gt;).\n */\n</scan>\nextern sexp AGreaterThan;\n\n<a name=\"Constant:AQuestionMark\"><scan class=comment>/*\n * Constant: AQuestionMark\n * -----------------------\n * Atom for the questionmark symbol (?).\n */\n</scan>\nextern sexp AQuestionMark;\n\n<a name=\"Constant:AAtSign\"><scan class=comment>/*\n * Constant: AAtSign\n * -----------------\n * Atom for the at-sign symbol (@).\n */\n</scan>\nextern sexp AAtSign;\n\n<a name=\"Constant:ALeftBracket\"><scan class=comment>/*\n * Constant: ALeftBracket\n * ----------------------\n * Atom for the left bracket symbol ([).\n */\n</scan>\nextern sexp ALeftBracket;\n\n<a name=\"Constant:ABackslash\"><scan class=comment>/*\n * Constant: ABackslash\n * --------------------\n * Atom for the backslash symbol (\\).\n */\n</scan>\nextern sexp ABackslash;\n\n<a name=\"Constant:ARightBracket\"><scan class=comment>/*\n * Constant: ARightBracket\n * -----------------------\n * Atom for the right bracket symbol (]).\n */\n</scan>\nextern sexp ARightBracket;\n\n<a name=\"Constant:ACarat\"><scan class=comment>/*\n * Constant: ACarat\n * ----------------\n * Atom for the carat symbol (^).\n */\n</scan>\nextern sexp ACarat;\n\n<a name=\"Constant:AUnderscore\"><scan class=comment>/*\n * Constant: AUnderscore\n * ---------------------\n * Atom for the underscore symbol (_).\n */\n</scan>\nextern sexp AUnderscore;\n\n<a name=\"Constant:ABackquote\"><scan class=comment>/*\n * Constant: ABackquote\n * --------------------\n * Atom for the backquote symbol (`).\n */\n</scan>\nextern sexp ABackquote;\n\n<a name=\"Constant:ALeftBrace\"><scan class=comment>/*\n * Constant: ALeftBrace\n * --------------------\n * Atom for the left brace symbol ({).\n */\n</scan>\nextern sexp ALeftBrace;\n\n<a name=\"Constant:AVerticalBar\"><scan class=comment>/*\n * Constant: AVerticalBar\n * ----------------------\n * Atom for the vertical bar symbol (|).\n */\n</scan>\nextern sexp AVerticalBar;\n\n<a name=\"Constant:ARightBrace\"><scan class=comment>/*\n * Constant: ARightBrace\n * ---------------------\n * Atom for the right brace symbol (}).\n */\n</scan>\nextern sexp ARightBrace;\n\n<a name=\"Constant:ATilde\"><scan class=comment>/*\n * Constant: ATilde\n * ----------------\n * Atom for the tilde symbol (~).\n */\n</scan>\nextern sexp ATilde;\n\n<scan class=comment>/* Section 1: Lisp-style functions */</scan>\n\n<a name=\"Function:car\"><scan class=comment>/*\n * Function: car\n * Usage: car = car(sx);\n * ---------------------\n * Returns the car of the S-expression sx.  If the expression is not a\n * dotted pair, this function throws a runtime error.\n */\n</scan>\nsexp car(sexp sx);\n\n<a name=\"Function:cdr\"><scan class=comment>/*\n * Function: cdr\n * Usage: cdr = cdr(sx);\n * ---------------------\n * Returns the cdr of the S-expression sx.  If the expression is not a\n * dotted pair, this function throws a runtime error.\n */\n</scan>\nsexp cdr(sexp sx);\n\n<a name=\"Function:caar\"><scan class=comment>/*\n * Function: caar\n * Usage: caar = caar(sx);\n * -----------------------\n * Returns the car of the car of the S-expression sx.\n */\n</scan>\n#ifdef __javadoc__\n    sexp caar(sexp sx);\n#else\n#   define caar(sx) car(car(sx))\n#endif\n\n<a name=\"Function:cadr\"><scan class=comment>/*\n * Function: cadr\n * Usage: cadr = cadr(sx);\n * -----------------------\n * Returns the car of the cdr of the S-expression sx.\n */\n</scan>\n#ifdef __javadoc__\n    sexp cadr(sexp sx);\n#else\n#   define cadr(sx) car(cdr(sx))\n#endif\n\n<a name=\"Function:cdar\"><scan class=comment>/*\n * Function: cdar\n * Usage: cdar = cdar(sx);\n * -----------------------\n * Returns the cdr of the car of the S-expression sx.\n */\n</scan>\n#ifdef __javadoc__\n    sexp cdar(sexp sx);\n#else\n#   define cdar(sx) cdr(car(sx))\n#endif\n\n<a name=\"Function:cddr\"><scan class=comment>/*\n * Function: cddr\n * Usage: cddr = cddr(sx);\n * -----------------------\n * Returns the cdr of the cdr of the S-expression sx.\n */\n</scan>\n#ifdef __javadoc__\n    sexp cddr(sexp sx);\n#else\n#   define cddr(sx) cdr(cdr(sx))\n#endif\n\n<a name=\"Function:first\"><scan class=comment>/*\n * Function: first\n * Usage: sx = first(list);\n * ------------------------\n * Returns the first element in the list list.\n */\n</scan>\n#ifdef __javadoc__\n    first(list);\n#else\n#   define first(list) car(list)\n#endif\n\n<a name=\"Function:second\"><scan class=comment>/*\n * Function: second\n * Usage: sx = second(list);\n * -------------------------\n * Returns the second element in the list list.\n */\n</scan>\n#ifdef __javadoc__\n    second(list);\n#else\n#   define second(list) car(cdr(list))\n#endif\n\n<a name=\"Function:third\"><scan class=comment>/*\n * Function: third\n * Usage: sx = third(list);\n * ------------------------\n * Returns the third element in the list list.\n */\n</scan>\n#ifdef __javadoc__\n    third(list);\n#else\n#   define third(list) car(cdr(cdr(list)))\n#endif\n\n<a name=\"Function:fourth\"><scan class=comment>/*\n * Function: fourth\n * Usage: sx = fourth(list);\n * -------------------------\n * Returns the fourth element in the list list.\n */\n</scan>\n#ifdef __javadoc__\n    fourth(list);\n#else\n#   define fourth(list) car(cdr(cdr(cdr(list))))\n#endif\n\n<a name=\"Function:fifth\"><scan class=comment>/*\n * Function: fifth\n * Usage: sx = fifth(list);\n * ------------------------\n * Returns the fifth element in the list list.\n */\n</scan>\n#ifdef __javadoc__\n    fifth(list);\n#else\n#   define fifth(list) car(cdr(cdr(cdr(cdr(list)))))\n#endif\n\n<a name=\"Function:cons\"><scan class=comment>/*\n * Function: cons\n * Usage: sx = cons(car, cdr);\n * ---------------------------\n * Constructs a new dotted pair with the specified car and cdr.\n */\n</scan>\nsexp cons(sexp car, sexp cdr);\n\n<a name=\"Function:typeCode\"><scan class=comment>/*\n * Function: typeCode\n * Usage: tc = typeCode(sx);\n * -------------------------\n * Returns the type code of the S-expression sx.\n */\n</scan>\nint typeCode(sexp sx);\n\n<a name=\"Function:sexpTypeName\"><scan class=comment>/*\n * Function: sexpTypeName\n * Usage: str = sexpTypeName(sx);\n * ------------------------------\n * Returns the type code name of the S-expression sx.\n */\n</scan>\nstring sexpTypeName(sexp sx);\n\n<a name=\"Function:readSexp\"><scan class=comment>/*\n * Function: readSexp\n * Usage: sx = readSexp(infile);\n * -----------------------------\n * Reads the next S-expression from the specified input file.  This\n * function returns NIL at the end of the file.\n */\n</scan>\nsexp readSexp(FILE *infile);\n\n<a name=\"Function:printSexp\"><scan class=comment>/*\n * Function: printSexp\n * Usage: printSexp(outfile, sx);\n * ------------------------------\n * Writes the S-expression to the indicated output stream.\n */\n</scan>\nvoid printSexp(FILE *outfile, sexp sx);\n\n<a name=\"Function:parseSexp\"><scan class=comment>/*\n * Function: parseSexp\n * Usage: sx = parseSexp(str);\n * ---------------------------\n * Parses an S-expression from the string.\n */\n</scan>\nsexp parseSexp(string str);\n\n<a name=\"Function:unparseSexp\"><scan class=comment>/*\n * Function: unparseSexp\n * Usage: string unparseSexp(sx);\n * ------------------------------\n * Unparses the S-expression and returns it as a string.\n */\n</scan>\nstring unparseSexp(sexp sx);\n\n<a name=\"Function:listLength\"><scan class=comment>/*\n * Function: listLength\n * Usage: n = listLength(list);\n * ----------------------------\n * Returns the top-level length of the list.\n */\n</scan>\nint listLength(sexp list);\n\n<a name=\"Function:nthElement\"><scan class=comment>/*\n * Function: nthElement\n * Usage: sx = nthElement(n, list);\n * --------------------------------\n * Returns the nth element in the list.  If n is greater than the length of\n * the list, nthElement returns NIL.\n */\n</scan>\nsexp nthElement(int n, sexp list);\n\n<a name=\"Function:memberP\"><scan class=comment>/*\n * Function: memberP\n * Usage: if (memberP(sx, list)) ...\n * ---------------------------------\n * Checks to see whether sx occurs in the top level of the list and returns\n * TRUE or FALSE accordingly.\n */\n</scan>\nbool memberP(sexp sx, sexp list);\n\n<a name=\"Function:equal\"><scan class=comment>/*\n * Function: equal\n * Usage: if (equal(x, y)) ...\n * ---------------------------\n * Checks to see if x and y are equal.\n */\n</scan>\nbool equal(sexp x, sexp y);\n\n<a name=\"Function:list0\"><scan class=comment>/*\n * Function: list0\n * Usage: list = list0();\n * ----------------------\n * Creates a list with no elements.\n */\n</scan>\nsexp list0(void);\n\n<a name=\"Function:list1\"><scan class=comment>/*\n * Function: list1\n * Usage: list = list1(a);\n * -----------------------\n * Creates a list with a single element.\n */\n</scan>\nsexp list1(sexp a);\n\n<a name=\"Function:list2\"><scan class=comment>/*\n * Function: list2\n * Usage: list = list2(a, b);\n * --------------------------\n * Creates a list with two elements.\n */\n</scan>\nsexp list2(sexp a, sexp b);\n\n<a name=\"Function:list3\"><scan class=comment>/*\n * Function: list3\n * Usage: list = list3(a, b, c);\n * -----------------------------\n * Creates a list with three elements.\n */\n</scan>\nsexp list3(sexp a, sexp b, sexp c);\n\n<a name=\"Function:list4\"><scan class=comment>/*\n * Function: list4\n * Usage: list = list4(a, b, c, d);\n * --------------------------------\n * Creates a list with four elements.\n */\n</scan>\nsexp list4(sexp a, sexp b, sexp c, sexp d);\n\n<a name=\"Function:list5\"><scan class=comment>/*\n * Function: list5\n * Usage: list = list5(a, b, c, d, e);\n * -----------------------------------\n * Creates a list with five elements.\n */\n</scan>\nsexp list5(sexp a, sexp b, sexp c, sexp d, sexp e);\n\n<a name=\"Function:list6\"><scan class=comment>/*\n * Function: list6\n * Usage: list = list6(a, b, c, d, e, f);\n * --------------------------------------\n * Creates a list with six elements.\n */\n</scan>\nsexp list6(sexp a, sexp b, sexp c, sexp d, sexp e, sexp f);\n\n<a name=\"Section 2:Conversion functions\"><scan class=comment>/*\n * Section 2: Conversion functions\n * -------------------------------\n * In order to use the basic C types in S-expressions, it is necessary to\n * convert those types in each direction.  For each of the types int, real,\n * string, char, bool, and void *, this package defines two conversion\n * functions: one that converts the basic type into an sexp, and one that\n * converts the sexp back into that type.  For example, a real number r may\n * be converted back and forth into an sexp sx by using the following\n * functions:\n *\n *             sx = realToSexp(r);\n *             r = sexpToReal(sx);\n *\n * Similarly named functions are defined for each of the other types. \n * Converting an sexp into a type generates an error if the sexp is not of\n * the requested type.  Thus, the above sexpToReal call would fail if sx\n * did not have type code REAL_TYPE.\n */\n</scan>\n<a name=\"Function:intToSexp\"><scan class=comment>/*\n * Function: intToSexp\n * Usage: sx = intToSexp(value);\n * -----------------------------\n * Converts an int into an S-expression.\n */\n</scan>\nsexp intToSexp(int value);\n\n<a name=\"Function:sexpToInt\"><scan class=comment>/*\n * Function: sexpToInt\n * Usage: value = sexpToInt(sexp sx);\n * ----------------------------------\n * Converts an S-expression to an int.  If the S-expression does not have\n * the correct type, this function throws an error.\n */\n</scan>\nint sexpToInt(sexp sx);\n\n<a name=\"Function:longToSexp\"><scan class=comment>/*\n * Function: longToSexp\n * Usage: sx = longToSexp(value);\n * ------------------------------\n * Converts a long into an S-expression.  Note: All integers are stored\n * internally in this package using the type long.  This function allows\n * clients to return the complete internal value.\n */\n</scan>\nsexp longToSexp(long value);\n\n<a name=\"Function:sexpToLong\"><scan class=comment>/*\n * Function: sexpToLong\n * Usage: value = sexpToLong(sexp sx);\n * -----------------------------------\n * Converts an S-expression to a long.  If the S-expression does not have\n * the correct type, this function throws an error.\n */\n</scan>\nlong sexpToLong(sexp sx);\n\n<a name=\"Function:realToSexp\"><scan class=comment>/*\n * Function: realToSexp\n * Usage: sx = realToSexp(value);\n * ------------------------------\n * Converts a double into an S-expression.\n */\n</scan>\nsexp realToSexp(double value);\n\n<a name=\"Function:sexpToReal\"><scan class=comment>/*\n * Function: sexpToReal\n * Usage: value = sexpToReal(sexp sx);\n * -----------------------------------\n * Converts an S-expression to a double.  If the S-expression does not have\n * the correct type, this function throws an error.\n */\n</scan>\ndouble sexpToReal(sexp sx);\n\n<a name=\"Function:stringToSexp\"><scan class=comment>/*\n * Function: stringToSexp\n * Usage: sx = stringToSexp(value);\n * --------------------------------\n * Converts a string into an S-expression.\n */\n</scan>\nsexp stringToSexp(string value);\n\n<a name=\"Function:sexpToString\"><scan class=comment>/*\n * Function: sexpToString\n * Usage: value = sexpToString(sexp sx);\n * -------------------------------------\n * Converts an S-expression to a string.  If the S-expression does not have\n * the correct type, this function throws an error.\n */\n</scan>\nstring sexpToString(sexp sx);\n\n<a name=\"Function:charToSexp\"><scan class=comment>/*\n * Function: charToSexp\n * Usage: sx = charToSexp(value);\n * ------------------------------\n * Converts a char into an S-expression.\n */\n</scan>\nsexp charToSexp(int value);\n\n<a name=\"Function:sexpToChar\"><scan class=comment>/*\n * Function: sexpToChar\n * Usage: value = sexpToChar(sexp sx);\n * -----------------------------------\n * Converts an S-expression to a char.  If the S-expression does not have\n * the correct type, this function throws an error.\n */\n</scan>\nchar sexpToChar(sexp sx);\n\n<a name=\"Function:boolToSexp\"><scan class=comment>/*\n * Function: boolToSexp\n * Usage: sx = boolToSexp(value);\n * ------------------------------\n * Converts a bool into an S-expression.\n */\n</scan>\nsexp boolToSexp(bool value);\n\n<a name=\"Function:sexpToBool\"><scan class=comment>/*\n * Function: sexpToBool\n * Usage: value = sexpToBool(sexp sx);\n * -----------------------------------\n * Converts an S-expression to a bool.  If the S-expression does not have\n * the correct type, this function throws an error.\n */\n</scan>\nbool sexpToBool(sexp sx);\n\n<a name=\"Function:pointerToSexp\"><scan class=comment>/*\n * Function: pointerToSexp\n * Usage: sx = pointerToSexp(value);\n * ---------------------------------\n * Converts a void * pointer into an S-expression.\n */\n</scan>\nsexp pointerToSexp(void *value);\n\n<a name=\"Function:sexpToPointer\"><scan class=comment>/*\n * Function: sexpToPointer\n * Usage: value = sexpToPointer(sexp sx);\n * --------------------------------------\n * Converts an S-expression to a void * pointer.  If the S-expression does\n * not have the correct type, this function throws an error.\n */\n</scan>\nvoid *sexpToPointer(sexp sx);\n\n<a name=\"Function:clientTypeToSexp\"><scan class=comment>/*\n * Function: clientTypeToSexp\n * Usage: sx = clientTypeToSexp(tc, value)\n * ---------------------------------------\n * Creates a value of a client-defined type S-expression type, with the\n * indicated type code and the pointer value, which may be recovered using\n * sexpToPointer.\n */\n</scan>\nsexp clientTypeToSexp(int tc, void *value);\n\n<scan class=comment>/* Section 3: Functions on atoms */</scan>\n\n<a name=\"Function:initAtoms\"><scan class=comment>/*\n * Function: initAtoms\n * Usage: initAtoms();\n * -------------------\n * Initializes the built-in atom constants.\n */\n</scan>\nvoid initAtoms();\n\n<a name=\"Function:createAtom\"><scan class=comment>/*\n * Function: createAtom\n * Usage: atom = createAtom(name);\n * -------------------------------\n * Creates an atom with the indicated name string.  Atoms are unique, so\n * that a second call to createAtom with the same string will return the\n * same atom and will not create a new one.  The binding and property list\n * fields of a newly created atom are both NIL.\n *\n * @result The unique atom with the specified name\n */\n</scan>\nsexp createAtom(string name);\n\n<a name=\"Function:printName\"><scan class=comment>/*\n * Function: printName\n * Usage: str = printName(atom)\n * ----------------------------\n * Returns the print name of the atom.\n *\n * @result The name of the atom\n */\n</scan>\nstring printName(sexp atom);\n\n<a name=\"Function:getBinding\"><scan class=comment>/*\n * Function: getBinding\n * Usage: value = getBinding(atom);\n * --------------------------------\n * Returns the binding of the atom.\n */\n</scan>\nsexp getBinding(sexp atom);\n\n<a name=\"Function:setBinding\"><scan class=comment>/*\n * Function: setBinding\n * Usage: setBinding(atom, value);\n * -------------------------------\n * Sets the binding of the atom to the specified value.\n */\n</scan>\nvoid setBinding(sexp atom, sexp value);\n\n<a name=\"Function:getPList\"><scan class=comment>/*\n * Function: getPList\n * Usage: plist = getPList(atom);\n * ------------------------------\n * Returns the property list of the atom.\n */\n</scan>\nsexp getPList(sexp atom);\n\n<a name=\"Function:setPList\"><scan class=comment>/*\n * Function: setPList\n * Usage: setPList(atom, plist);\n * -----------------------------\n * Sets the property list of the atom.\n */\n</scan>\nvoid setPList(sexp atom, sexp plist);\n\n<a name=\"Function:getProp\"><scan class=comment>/*\n * Function: getProp\n * Usage: value = getProp(atom, key);\n * ----------------------------------\n * Finds the property of the atom associated with key and returns the\n * corresponding value.  If no value has been associated with this key for\n * this atom, this function returns NIL.\n */\n</scan>\nsexp getProp(sexp atom, sexp key);\n\n<a name=\"Function:putProp\"><scan class=comment>/*\n * Function: putProp\n * Usage: putProp(atom, key, value);\n * ---------------------------------\n * Associates the specified key and value in the property list for this\n * atom.\n */\n</scan>\nvoid putProp(sexp atom, sexp key, sexp value);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/sexp.html",
    "content": "<html>\n<head>\n<title>sexp.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1><a href=\"sexp-h.html\"><code>sexp.h</code></a></h1>\nThis file specifies the interface to a Lisp-like S-expression\nfacility.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Types</td></tr>\n<tr><td class=indexKey><a href=\"#Type:sexp\">sexp</a>&nbsp;</td><td class=indexSynopsis width=100%>The abstract data type representing an S-expression object.</td></tr>\n<tr><td class=indexKey><a href=\"#Type:expression type codes\">expression type codes</a>&nbsp;</td><td class=indexSynopsis width=100%>This list may be expanded by the client, so the typecode must be represented as an integer and not as a closed enumeration type.</td></tr>\n<tr><td class=indexHead colspan=2>Constants</td></tr>\n<tr><td class=indexKey>NULL&nbsp;</td><td class=indexSynopsis width=100%>Represents an empty list.</td></tr>\n<tr><td class=indexKey>AExclamation&nbsp;</td><td class=indexSynopsis width=100%>Atom for the exclamation point symbol (<code>!</code>).</td></tr>\n<tr><td class=indexKey>ADoubleQuote&nbsp;</td><td class=indexSynopsis width=100%>Atom for the double quote symbol (<code>\"</code>).</td></tr>\n<tr><td class=indexKey>ASharp&nbsp;</td><td class=indexSynopsis width=100%>Atom for the sharp symbol (<code>#</code>).</td></tr>\n<tr><td class=indexKey>ADollarSign&nbsp;</td><td class=indexSynopsis width=100%>Atom for the dollar-sign symbol (<code>$</code>).</td></tr>\n<tr><td class=indexKey>APercent&nbsp;</td><td class=indexSynopsis width=100%>Atom for the percent symbol (<code>%</code>).</td></tr>\n<tr><td class=indexKey>AAmpersand&nbsp;</td><td class=indexSynopsis width=100%>Atom for the ampersand symbol (<code>&amp;</code>).</td></tr>\n<tr><td class=indexKey>ASingleQuote&nbsp;</td><td class=indexSynopsis width=100%>Atom for the single quote symbol (<code>'</code>).</td></tr>\n<tr><td class=indexKey>ALeftParen&nbsp;</td><td class=indexSynopsis width=100%>Atom for the left parenthesis symbol (<code>(</code>).</td></tr>\n<tr><td class=indexKey>ARightParen&nbsp;</td><td class=indexSynopsis width=100%>Atom for the right parenthesis symbol (<code>)</code>).</td></tr>\n<tr><td class=indexKey>AStar&nbsp;</td><td class=indexSynopsis width=100%>Atom for the star symbol (<code>*</code>).</td></tr>\n<tr><td class=indexKey>APlus&nbsp;</td><td class=indexSynopsis width=100%>Atom for the plus symbol (<code>+</code>).</td></tr>\n<tr><td class=indexKey>AComma&nbsp;</td><td class=indexSynopsis width=100%>Atom for the comma symbol (<code>,</code>).</td></tr>\n<tr><td class=indexKey>AMinus&nbsp;</td><td class=indexSynopsis width=100%>Atom for the minus symbol (<code>-</code>).</td></tr>\n<tr><td class=indexKey>APeriod&nbsp;</td><td class=indexSynopsis width=100%>Atom for the period symbol (<code>.</code>).</td></tr>\n<tr><td class=indexKey>ASlash&nbsp;</td><td class=indexSynopsis width=100%>Atom for the slash symbol (<code>/</code>).</td></tr>\n<tr><td class=indexKey>AColon&nbsp;</td><td class=indexSynopsis width=100%>Atom for the colon symbol (<code>:</code>).</td></tr>\n<tr><td class=indexKey>ASemicolon&nbsp;</td><td class=indexSynopsis width=100%>Atom for the semicolon symbol (<code>;</code>).</td></tr>\n<tr><td class=indexKey>ALessThan&nbsp;</td><td class=indexSynopsis width=100%>Atom for the less-than symbol (<code>&lt;</code>).</td></tr>\n<tr><td class=indexKey>AEqualSign&nbsp;</td><td class=indexSynopsis width=100%>Atom for the equal-sign symbol (<code>=</code>).</td></tr>\n<tr><td class=indexKey>AGreaterThan&nbsp;</td><td class=indexSynopsis width=100%>Atom for the greater-than symbol (<code>&gt;</code>).</td></tr>\n<tr><td class=indexKey>AQuestionMark&nbsp;</td><td class=indexSynopsis width=100%>Atom for the questionmark symbol (<code>?</code>).</td></tr>\n<tr><td class=indexKey>AAtSign&nbsp;</td><td class=indexSynopsis width=100%>Atom for the at-sign symbol (<code>@</code>).</td></tr>\n<tr><td class=indexKey>ALeftBracket&nbsp;</td><td class=indexSynopsis width=100%>Atom for the left bracket symbol (<code>[</code>).</td></tr>\n<tr><td class=indexKey>ABackslash&nbsp;</td><td class=indexSynopsis width=100%>Atom for the backslash symbol (<code>\\</code>).</td></tr>\n<tr><td class=indexKey>ARightBracket&nbsp;</td><td class=indexSynopsis width=100%>Atom for the right bracket symbol (<code>]</code>).</td></tr>\n<tr><td class=indexKey>ACarat&nbsp;</td><td class=indexSynopsis width=100%>Atom for the carat symbol (<code>^</code>).</td></tr>\n<tr><td class=indexKey>AUnderscore&nbsp;</td><td class=indexSynopsis width=100%>Atom for the underscore symbol (<code>_</code>).</td></tr>\n<tr><td class=indexKey>ABackquote&nbsp;</td><td class=indexSynopsis width=100%>Atom for the backquote symbol (<code>`</code>).</td></tr>\n<tr><td class=indexKey>ALeftBrace&nbsp;</td><td class=indexSynopsis width=100%>Atom for the left brace symbol (<code>{</code>).</td></tr>\n<tr><td class=indexKey>AVerticalBar&nbsp;</td><td class=indexSynopsis width=100%>Atom for the vertical bar symbol (<code>|</code>).</td></tr>\n<tr><td class=indexKey>ARightBrace&nbsp;</td><td class=indexSynopsis width=100%>Atom for the right brace symbol (<code>}</code>).</td></tr>\n<tr><td class=indexKey>ATilde&nbsp;</td><td class=indexSynopsis width=100%>Atom for the tilde symbol (<code>~</code>).</td></tr>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><a href=\"#Function:car\">car(sx)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the car of the S-expression <code>sx</code>.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:cdr\">cdr(sx)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the cdr of the S-expression <code>sx</code>.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:caar\">caar(sx)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the car of the car of the S-expression <code>sx</code>.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:cadr\">cadr(sx)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the car of the cdr of the S-expression <code>sx</code>.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:cdar\">cdar(sx)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the cdr of the car of the S-expression <code>sx</code>.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:cddr\">cddr(sx)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the cdr of the cdr of the S-expression <code>sx</code>.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:first\">first(list)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the first element in the list <code>list</code>.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:second\">second(list)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the second element in the list <code>list</code>.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:third\">third(list)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the third element in the list <code>list</code>.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:fourth\">fourth(list)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the fourth element in the list <code>list</code>.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:fifth\">fifth(list)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the fifth element in the list <code>list</code>.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:cons\">cons(car,&nbsp;cdr)</a>&nbsp;</td><td class=indexSynopsis width=100%>Constructs a new dotted pair with the specified car and cdr.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:typeCode\">typeCode(sx)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the type code of the S-expression <code>sx</code>.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:sexpTypeName\">sexpTypeName(sx)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the type code name of the S-expression <code>sx</code>.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:readSexp\">readSexp(infile)</a>&nbsp;</td><td class=indexSynopsis width=100%>Reads the next S-expression from the specified input file.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:printSexp\">printSexp(outfile,&nbsp;sx)</a>&nbsp;</td><td class=indexSynopsis width=100%>Writes the S-expression to the indicated output stream.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:parseSexp\">parseSexp(str)</a>&nbsp;</td><td class=indexSynopsis width=100%>Parses an S-expression from the string.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:unparseSexp\">unparseSexp(sx)</a>&nbsp;</td><td class=indexSynopsis width=100%>Unparses the S-expression and returns it as a string.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:listLength\">listLength(list)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the top-level length of the list.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:nthElement\">nthElement(n,&nbsp;list)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the <nobr><code>n</code>th</nobr> element in the list.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:memberP\">memberP(sx,&nbsp;list)</a>&nbsp;</td><td class=indexSynopsis width=100%>Checks to see whether <code>sx</code> occurs in the top level of the list and returns <code>TRUE</code> or <code>FALSE</code> accordingly.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:equal\">equal(x,&nbsp;y)</a>&nbsp;</td><td class=indexSynopsis width=100%>Checks to see if <code>x</code> and <code>y</code> are equal.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:list0\">list0()</a>&nbsp;</td><td class=indexSynopsis width=100%>Creates a list with no elements.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:list1\">list1(a)</a>&nbsp;</td><td class=indexSynopsis width=100%>Creates a list with a single element.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:list2\">list2(a,&nbsp;b)</a>&nbsp;</td><td class=indexSynopsis width=100%>Creates a list with two elements.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:list3\">list3(a,&nbsp;b,&nbsp;c)</a>&nbsp;</td><td class=indexSynopsis width=100%>Creates a list with three elements.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:list4\">list4(a,&nbsp;b,&nbsp;c,&nbsp;d)</a>&nbsp;</td><td class=indexSynopsis width=100%>Creates a list with four elements.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:list5\">list5(a,&nbsp;b,&nbsp;c,&nbsp;d,&nbsp;e)</a>&nbsp;</td><td class=indexSynopsis width=100%>Creates a list with five elements.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:list6\">list6(a,&nbsp;b,&nbsp;c,&nbsp;d,&nbsp;e,&nbsp;f)</a>&nbsp;</td><td class=indexSynopsis width=100%>Creates a list with six elements.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:intToSexp\">intToSexp(value)</a>&nbsp;</td><td class=indexSynopsis width=100%>Converts an <code>int</code> into an S-expression.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:sexpToInt\">sexpToInt(sexp&nbsp;sx)</a>&nbsp;</td><td class=indexSynopsis width=100%>Converts an S-expression to an <code>int</code>.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:longToSexp\">longToSexp(value)</a>&nbsp;</td><td class=indexSynopsis width=100%>Converts a <code>long</code> into an S-expression.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:sexpToLong\">sexpToLong(sexp&nbsp;sx)</a>&nbsp;</td><td class=indexSynopsis width=100%>Converts an S-expression to a <code>long</code>.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:realToSexp\">realToSexp(value)</a>&nbsp;</td><td class=indexSynopsis width=100%>Converts a <code>double</code> into an S-expression.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:sexpToReal\">sexpToReal(sexp&nbsp;sx)</a>&nbsp;</td><td class=indexSynopsis width=100%>Converts an S-expression to a <code>double</code>.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:stringToSexp\">stringToSexp(value)</a>&nbsp;</td><td class=indexSynopsis width=100%>Converts a <code>string</code> into an S-expression.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:sexpToString\">sexpToString(sexp&nbsp;sx)</a>&nbsp;</td><td class=indexSynopsis width=100%>Converts an S-expression to a string.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:charToSexp\">charToSexp(value)</a>&nbsp;</td><td class=indexSynopsis width=100%>Converts a <code>char</code> into an S-expression.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:sexpToChar\">sexpToChar(sexp&nbsp;sx)</a>&nbsp;</td><td class=indexSynopsis width=100%>Converts an S-expression to a <code>char</code>.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:boolToSexp\">boolToSexp(value)</a>&nbsp;</td><td class=indexSynopsis width=100%>Converts a <code>bool</code> into an S-expression.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:sexpToBool\">sexpToBool(sexp&nbsp;sx)</a>&nbsp;</td><td class=indexSynopsis width=100%>Converts an S-expression to a <code>bool</code>.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:pointerToSexp\">pointerToSexp(value)</a>&nbsp;</td><td class=indexSynopsis width=100%>Converts a <code>void *</code> pointer into an S-expression.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:sexpToPointer\">sexpToPointer(sexp&nbsp;sx)</a>&nbsp;</td><td class=indexSynopsis width=100%>Converts an S-expression to a <code>void *</code> pointer.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:clientTypeToSexp\">clientTypeToSexp(tc,&nbsp;value)</a>&nbsp;</td><td class=indexSynopsis width=100%>Creates a value of a client-defined type S-expression type, with the indicated type code and the pointer value, which may be recovered using <code>sexpToPointer</code>.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:initAtoms\">initAtoms()</a>&nbsp;</td><td class=indexSynopsis width=100%>Initializes the built-in atom constants.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:createAtom\">createAtom(name)</a>&nbsp;</td><td class=indexSynopsis width=100%>Creates an atom with the indicated name string.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:printName\">printName(atom)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the print name of the atom.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:getBinding\">getBinding(atom)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the binding of the atom.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:setBinding\">setBinding(atom,&nbsp;value)</a>&nbsp;</td><td class=indexSynopsis width=100%>Sets the binding of the atom to the specified value.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:getPList\">getPList(atom)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the property list of the atom.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:setPList\">setPList(atom,&nbsp;plist)</a>&nbsp;</td><td class=indexSynopsis width=100%>Sets the property list of the atom.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:getProp\">getProp(atom,&nbsp;key)</a>&nbsp;</td><td class=indexSynopsis width=100%>Finds the property of the atom associated with <code>key</code> and returns the corresponding value.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:putProp\">putProp(atom,&nbsp;key,&nbsp;value)</a>&nbsp;</td><td class=indexSynopsis width=100%>Associates the specified key and value in the property list for this atom.</td></tr>\n</table>\n<h2>Type detail</h2>\n<hr>\n<a name=\"Type:sexp\"></a>\n<pre class=detailCode>\ntypedef struct sexpCDT *sexp;\n</pre>\n<div class=detailHTML>\nThe abstract data type representing an S-expression object.\n</div>\n<hr>\n<a name=\"Type:expression type codes\"></a>\n<pre class=detailCode>\n</pre>\n<div class=detailHTML>\nThis list may be expanded by the client, so the typecode\nmust be represented as an integer and not as a closed\nenumeration type.  Expanded type codes behave like the\npointer type and may be converted to pointers.\n</div>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:car\"></a>\n<pre class=detailCode>\nsexp car(sexp sx);\n</pre>\n<div class=detailHTML>\nReturns the car of the S-expression <code>sx</code>.\nIf the expression is not a dotted pair, this function\nthrows a runtime error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncar = car(sx);\n</pre>\n<hr>\n<a name=\"Function:cdr\"></a>\n<pre class=detailCode>\nsexp cdr(sexp sx);\n</pre>\n<div class=detailHTML>\nReturns the cdr of the S-expression <code>sx</code>.\nIf the expression is not a dotted pair, this function\nthrows a runtime error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncdr = cdr(sx);\n</pre>\n<hr>\n<a name=\"Function:caar\"></a>\n<pre class=detailCode>\n</pre>\n<div class=detailHTML>\nReturns the car of the car of the S-expression <code>sx</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncaar = caar(sx);\n</pre>\n<hr>\n<a name=\"Function:cadr\"></a>\n<pre class=detailCode>\n</pre>\n<div class=detailHTML>\nReturns the car of the cdr of the S-expression <code>sx</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncadr = cadr(sx);\n</pre>\n<hr>\n<a name=\"Function:cdar\"></a>\n<pre class=detailCode>\n</pre>\n<div class=detailHTML>\nReturns the cdr of the car of the S-expression <code>sx</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncdar = cdar(sx);\n</pre>\n<hr>\n<a name=\"Function:cddr\"></a>\n<pre class=detailCode>\n</pre>\n<div class=detailHTML>\nReturns the cdr of the cdr of the S-expression <code>sx</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncddr = cddr(sx);\n</pre>\n<hr>\n<a name=\"Function:first\"></a>\n<pre class=detailCode>\n</pre>\n<div class=detailHTML>\nReturns the first element in the list <code>list</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsx = first(list);\n</pre>\n<hr>\n<a name=\"Function:second\"></a>\n<pre class=detailCode>\n</pre>\n<div class=detailHTML>\nReturns the second element in the list <code>list</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsx = second(list);\n</pre>\n<hr>\n<a name=\"Function:third\"></a>\n<pre class=detailCode>\n</pre>\n<div class=detailHTML>\nReturns the third element in the list <code>list</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsx = third(list);\n</pre>\n<hr>\n<a name=\"Function:fourth\"></a>\n<pre class=detailCode>\n</pre>\n<div class=detailHTML>\nReturns the fourth element in the list <code>list</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsx = fourth(list);\n</pre>\n<hr>\n<a name=\"Function:fifth\"></a>\n<pre class=detailCode>\n</pre>\n<div class=detailHTML>\nReturns the fifth element in the list <code>list</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsx = fifth(list);\n</pre>\n<hr>\n<a name=\"Function:cons\"></a>\n<pre class=detailCode>\nsexp cons(sexp car, sexp cdr);\n</pre>\n<div class=detailHTML>\nConstructs a new dotted pair with the specified car and cdr.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsx = cons(car, cdr);\n</pre>\n<hr>\n<a name=\"Function:typeCode\"></a>\n<pre class=detailCode>\nint typeCode(sexp sx);\n</pre>\n<div class=detailHTML>\nReturns the type code of the S-expression <code>sx</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ntc = typeCode(sx);\n</pre>\n<hr>\n<a name=\"Function:sexpTypeName\"></a>\n<pre class=detailCode>\nstring sexpTypeName(sexp sx);\n</pre>\n<div class=detailHTML>\nReturns the type code name of the S-expression <code>sx</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstr = sexpTypeName(sx);\n</pre>\n<hr>\n<a name=\"Function:readSexp\"></a>\n<pre class=detailCode>\nsexp readSexp(FILE *infile);\n</pre>\n<div class=detailHTML>\nReads the next S-expression from the specified input file.\nThis function returns <code>NIL</code> at the end of the file.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsx = readSexp(infile);\n</pre>\n<hr>\n<a name=\"Function:printSexp\"></a>\n<pre class=detailCode>\nvoid printSexp(FILE *outfile, sexp sx);\n</pre>\n<div class=detailHTML>\nWrites the S-expression to the indicated output stream.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nprintSexp(outfile, sx);\n</pre>\n<hr>\n<a name=\"Function:parseSexp\"></a>\n<pre class=detailCode>\nsexp parseSexp(string str);\n</pre>\n<div class=detailHTML>\nParses an S-expression from the string.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsx = parseSexp(str);\n</pre>\n<hr>\n<a name=\"Function:unparseSexp\"></a>\n<pre class=detailCode>\nstring unparseSexp(sexp sx);\n</pre>\n<div class=detailHTML>\nUnparses the S-expression and returns it as a string.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring unparseSexp(sx);\n</pre>\n<hr>\n<a name=\"Function:listLength\"></a>\n<pre class=detailCode>\nint listLength(sexp list);\n</pre>\n<div class=detailHTML>\nReturns the top-level length of the list.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nn = listLength(list);\n</pre>\n<hr>\n<a name=\"Function:nthElement\"></a>\n<pre class=detailCode>\nsexp nthElement(int n, sexp list);\n</pre>\n<div class=detailHTML>\nReturns the <nobr><code>n</code>th</nobr> element in the list.\nIf <code>n</code> is greater than the length of the list,\n<code>nthElement</code> returns <code>NIL</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsx = nthElement(n, list);\n</pre>\n<hr>\n<a name=\"Function:memberP\"></a>\n<pre class=detailCode>\nbool memberP(sexp sx, sexp list);\n</pre>\n<div class=detailHTML>\nChecks to see whether <code>sx</code> occurs in the top level\nof the list and returns <code>TRUE</code> or <code>FALSE</code>\naccordingly.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (memberP(sx, list)) ...\n</pre>\n<hr>\n<a name=\"Function:equal\"></a>\n<pre class=detailCode>\nbool equal(sexp x, sexp y);\n</pre>\n<div class=detailHTML>\nChecks to see if <code>x</code> and <code>y</code> are equal.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (equal(x, y)) ...\n</pre>\n<hr>\n<a name=\"Function:list0\"></a>\n<pre class=detailCode>\nsexp list0(void);\n</pre>\n<div class=detailHTML>\nCreates a list with no elements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlist = list0();\n</pre>\n<hr>\n<a name=\"Function:list1\"></a>\n<pre class=detailCode>\nsexp list1(sexp a);\n</pre>\n<div class=detailHTML>\nCreates a list with a single element.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlist = list1(a);\n</pre>\n<hr>\n<a name=\"Function:list2\"></a>\n<pre class=detailCode>\nsexp list2(sexp a, sexp b);\n</pre>\n<div class=detailHTML>\nCreates a list with two elements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlist = list2(a, b);\n</pre>\n<hr>\n<a name=\"Function:list3\"></a>\n<pre class=detailCode>\nsexp list3(sexp a, sexp b, sexp c);\n</pre>\n<div class=detailHTML>\nCreates a list with three elements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlist = list3(a, b, c);\n</pre>\n<hr>\n<a name=\"Function:list4\"></a>\n<pre class=detailCode>\nsexp list4(sexp a, sexp b, sexp c, sexp d);\n</pre>\n<div class=detailHTML>\nCreates a list with four elements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlist = list4(a, b, c, d);\n</pre>\n<hr>\n<a name=\"Function:list5\"></a>\n<pre class=detailCode>\nsexp list5(sexp a, sexp b, sexp c, sexp d, sexp e);\n</pre>\n<div class=detailHTML>\nCreates a list with five elements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlist = list5(a, b, c, d, e);\n</pre>\n<hr>\n<a name=\"Function:list6\"></a>\n<pre class=detailCode>\nsexp list6(sexp a, sexp b, sexp c, sexp d, sexp e, sexp f);\n</pre>\n<div class=detailHTML>\nCreates a list with six elements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlist = list6(a, b, c, d, e, f);\n</pre>\n<hr>\n<a name=\"Function:intToSexp\"></a>\n<pre class=detailCode>\nsexp intToSexp(int value);\n</pre>\n<div class=detailHTML>\nConverts an <code>int</code> into an S-expression.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsx = intToSexp(value);\n</pre>\n<hr>\n<a name=\"Function:sexpToInt\"></a>\n<pre class=detailCode>\nint sexpToInt(sexp sx);\n</pre>\n<div class=detailHTML>\nConverts an S-expression to an <code>int</code>.  If the\nS-expression does not have the correct type, this function\nthrows an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvalue = sexpToInt(sexp sx);\n</pre>\n<hr>\n<a name=\"Function:longToSexp\"></a>\n<pre class=detailCode>\nsexp longToSexp(long value);\n</pre>\n<div class=detailHTML>\nConverts a <code>long</code> into an S-expression.\nNote: All integers are stored internally in this package\nusing the type <code>long</code>.  This function allows\nclients to return the complete internal value.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsx = longToSexp(value);\n</pre>\n<hr>\n<a name=\"Function:sexpToLong\"></a>\n<pre class=detailCode>\nlong sexpToLong(sexp sx);\n</pre>\n<div class=detailHTML>\nConverts an S-expression to a <code>long</code>.  If the\nS-expression does not have the correct type, this function\nthrows an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvalue = sexpToLong(sexp sx);\n</pre>\n<hr>\n<a name=\"Function:realToSexp\"></a>\n<pre class=detailCode>\nsexp realToSexp(double value);\n</pre>\n<div class=detailHTML>\nConverts a <code>double</code> into an S-expression.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsx = realToSexp(value);\n</pre>\n<hr>\n<a name=\"Function:sexpToReal\"></a>\n<pre class=detailCode>\ndouble sexpToReal(sexp sx);\n</pre>\n<div class=detailHTML>\nConverts an S-expression to a <code>double</code>.  If the\nS-expression does not have the correct type, this function\nthrows an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvalue = sexpToReal(sexp sx);\n</pre>\n<hr>\n<a name=\"Function:stringToSexp\"></a>\n<pre class=detailCode>\nsexp stringToSexp(string value);\n</pre>\n<div class=detailHTML>\nConverts a <code>string</code> into an S-expression.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsx = stringToSexp(value);\n</pre>\n<hr>\n<a name=\"Function:sexpToString\"></a>\n<pre class=detailCode>\nstring sexpToString(sexp sx);\n</pre>\n<div class=detailHTML>\nConverts an S-expression to a string.  If the S-expression does\nnot have the correct type, this function throws an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvalue = sexpToString(sexp sx);\n</pre>\n<hr>\n<a name=\"Function:charToSexp\"></a>\n<pre class=detailCode>\nsexp charToSexp(int value);\n</pre>\n<div class=detailHTML>\nConverts a <code>char</code> into an S-expression.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsx = charToSexp(value);\n</pre>\n<hr>\n<a name=\"Function:sexpToChar\"></a>\n<pre class=detailCode>\nchar sexpToChar(sexp sx);\n</pre>\n<div class=detailHTML>\nConverts an S-expression to a <code>char</code>.  If the\nS-expression does not have the correct type, this function\nthrows an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvalue = sexpToChar(sexp sx);\n</pre>\n<hr>\n<a name=\"Function:boolToSexp\"></a>\n<pre class=detailCode>\nsexp boolToSexp(bool value);\n</pre>\n<div class=detailHTML>\nConverts a <code>bool</code> into an S-expression.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsx = boolToSexp(value);\n</pre>\n<hr>\n<a name=\"Function:sexpToBool\"></a>\n<pre class=detailCode>\nbool sexpToBool(sexp sx);\n</pre>\n<div class=detailHTML>\nConverts an S-expression to a <code>bool</code>.  If the\nS-expression does not have the correct type, this function\nthrows an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvalue = sexpToBool(sexp sx);\n</pre>\n<hr>\n<a name=\"Function:pointerToSexp\"></a>\n<pre class=detailCode>\nsexp pointerToSexp(void *value);\n</pre>\n<div class=detailHTML>\nConverts a <code>void *</code> pointer into an S-expression.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsx = pointerToSexp(value);\n</pre>\n<hr>\n<a name=\"Function:sexpToPointer\"></a>\n<pre class=detailCode>\nvoid *sexpToPointer(sexp sx);\n</pre>\n<div class=detailHTML>\nConverts an S-expression to a <code>void *</code> pointer.\nIf the S-expression does not have the correct type, this\nfunction throws an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvalue = sexpToPointer(sexp sx);\n</pre>\n<hr>\n<a name=\"Function:clientTypeToSexp\"></a>\n<pre class=detailCode>\nsexp clientTypeToSexp(int tc, void *value);\n</pre>\n<div class=detailHTML>\nCreates a value of a client-defined type S-expression type,\nwith the indicated type code and the pointer value, which\nmay be recovered using <code>sexpToPointer</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsx = clientTypeToSexp(tc, value)\n</pre>\n<hr>\n<a name=\"Function:initAtoms\"></a>\n<pre class=detailCode>\nvoid initAtoms();\n</pre>\n<div class=detailHTML>\nInitializes the built-in atom constants.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ninitAtoms();\n</pre>\n<hr>\n<a name=\"Function:createAtom\"></a>\n<pre class=detailCode>\nsexp createAtom(string name);\n</pre>\n<div class=detailHTML>\nCreates an atom with the indicated name string.  Atoms are\nunique, so that a second call to <code>createAtom</code> with\nthe same string will return the same atom and will not create\na new one.  The binding and property list fields of a newly\ncreated atom are both <code>NIL</code>.\n\n@result The unique atom with the specified name\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\natom = createAtom(name);\n</pre>\n<hr>\n<a name=\"Function:printName\"></a>\n<pre class=detailCode>\nstring printName(sexp atom);\n</pre>\n<div class=detailHTML>\nReturns the print name of the atom.\n\n@result The name of the atom\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstr = printName(atom)\n</pre>\n<hr>\n<a name=\"Function:getBinding\"></a>\n<pre class=detailCode>\nsexp getBinding(sexp atom);\n</pre>\n<div class=detailHTML>\nReturns the binding of the atom.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvalue = getBinding(atom);\n</pre>\n<hr>\n<a name=\"Function:setBinding\"></a>\n<pre class=detailCode>\nvoid setBinding(sexp atom, sexp value);\n</pre>\n<div class=detailHTML>\nSets the binding of the atom to the specified value.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetBinding(atom, value);\n</pre>\n<hr>\n<a name=\"Function:getPList\"></a>\n<pre class=detailCode>\nsexp getPList(sexp atom);\n</pre>\n<div class=detailHTML>\nReturns the property list of the atom.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nplist = getPList(atom);\n</pre>\n<hr>\n<a name=\"Function:setPList\"></a>\n<pre class=detailCode>\nvoid setPList(sexp atom, sexp plist);\n</pre>\n<div class=detailHTML>\nSets the property list of the atom.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetPList(atom, plist);\n</pre>\n<hr>\n<a name=\"Function:getProp\"></a>\n<pre class=detailCode>\nsexp getProp(sexp atom, sexp key);\n</pre>\n<div class=detailHTML>\nFinds the property of the atom associated with <code>key</code>\nand returns the corresponding value.  If no value has been\nassociated with this key for this atom, this function returns\n<code>NIL</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvalue = getProp(atom, key);\n</pre>\n<hr>\n<a name=\"Function:putProp\"></a>\n<pre class=detailCode>\nvoid putProp(sexp atom, sexp key, sexp value);\n</pre>\n<div class=detailHTML>\nAssociates the specified key and value in the property list\nfor this atom.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nputProp(atom, key, value);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/sexpcdt-h.html",
    "content": "<html>\n<head>\n<title>../sexpcdt.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: sexpcdt.h\n * ---------------\n * This file contains the concrete data type definitions for S-expressions,\n * atoms, and dotted-pairs.  These details are included in an interface so\n * that the primitive list functions can be implemented as macros for\n * efficiency.  In no cases should clients depend on this representation.\n */\n</scan>\n#ifndef _sexpcdt_h\n#define _sexpcdt_h\n\n#include \"cslib.h\"\nstruct atomCDT {\n    string _PName;\n    sexp _Binding;\n    sexp _PList;\n    sexp _SymLink;\n};\n\nstruct dtprCDT {\n    sexp _Car, _Cdr;\n};\n\nstruct sexpCDT {\n    int SxType;\n    union {\n        struct atomCDT AtomRep;\n        struct dtprCDT DtprRep;\n        long IntRep;\n        double RealRep;\n        string StringRep;\n        char CharRep;\n        bool BoolRep;\n        void *PointerRep;\n    } SxValue;\n};\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/sexpcdt.html",
    "content": "<html>\n<head>\n<title>sexpcdt.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1><a href=\"sexpcdt-h.html\"><code>sexpcdt.h</code></a></h1>\nThis file contains the concrete data type definitions for\nS-expressions, atoms, and dotted-pairs.  These details\nare included in an interface so that the primitive list\nfunctions can be implemented as macros for efficiency.\nIn no cases should clients depend on this representation.\n<table class=index width=100%>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/simpio-h.html",
    "content": "<html>\n<head>\n<title>../simpio.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: simpio.h\n * --------------\n * This interface exports several functions that simplify the reading of\n * input data.\n */\n</scan>\n#ifndef _simpio_h\n#define _simpio_h\n\n#include \"cslib.h\"\n\n<a name=\"Function:getInteger\"><scan class=comment>/*\n * Function: getInteger\n * Usage: n = getInteger();\n * ------------------------\n * Reads a line of text from standard input and scans it as an integer.  If\n * an integer cannot be scanned or if extraneous characters follow the\n * number, the user is given a chance to retry.\n */\n</scan>\nint getInteger(void);\n\n<a name=\"Function:getLong\"><scan class=comment>/*\n * Function: getLong\n * Usage: l = getLong();\n * ---------------------\n * Reads a line of text from standard input and scans it as a long.  If an\n * integer cannot be scanned or if extraneous characters follow the number,\n * the user is given a chance to retry.\n */\n</scan>\nlong getLong(void);\n\n<a name=\"Function:getReal\"><scan class=comment>/*\n * Function: getReal\n * Usage: d = getReal();\n * ---------------------\n * Reads a line of text from standard input and scans it as a double.  If\n * an number cannot be scanned or if extraneous characters follow the\n * number, the user is given a chance to retry.\n */\n</scan>\ndouble getReal(void);\n\n<a name=\"Function:getLine\"><scan class=comment>/*\n * Function: getLine\n * Usage: s = getLine();\n * ---------------------\n * Reads a line of text from standard input and returns the line as a\n * string.  The newline character that terminates the input is not stored\n * as part of the result.\n */\n</scan>\nstring getLine(void);\n\n<a name=\"Function:readLine\"><scan class=comment>/*\n * Function: readLine\n * Usage: s = readLine(infile);\n * ----------------------------\n * Reads a line of text from the input file and returns the line as a\n * string.  The newline character that terminates the input is not stored\n * as part of the result.  The readLine function returns NULL if infile is\n * at the end-of-file position.\n */\n</scan>\nstring readLine(FILE *infile);\n\n<a name=\"Function:readLinesFromStream\"><scan class=comment>/*\n * Function: readLinesFromStream\n * Usage: string *array = readLinesFromStream(infile);\n * ---------------------------------------------------\n * Reads an entire file into a NULL-terminated array of lines.  Opening and\n * closing the file stream is the responsibility of the caller.\n */\n</scan>\nstring *readLinesFromStream(FILE *infile);\n\n<a name=\"Function:readLinesFromFile\"><scan class=comment>/*\n * Function: readLinesFromFile\n * Usage: string *array = readLinesFromFile(filename);\n * ---------------------------------------------------\n * Reads an entire file into a NULL-terminated array of lines.  This\n * version opens the file, reads it, and closes it at the end.  If the file\n * name is \"-\", the function reads from stdin.\n */\n</scan>\nstring *readLinesFromFile(string filename);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/simpio.html",
    "content": "<html>\n<head>\n<title>simpio.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><a href=\"simpio-h.html\"><code>simpio.h</code></a></h1>\nThis interface exports several functions that simplify the\nreading of input data.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getInteger\">getInteger()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Reads a line of text from standard input and scans it as an integer.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getLong\">getLong()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Reads a line of text from standard input and scans it as a <code>long</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getReal\">getReal()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Reads a line of text from standard input and scans it as a <code>double</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getLine\">getLine()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Reads a line of text from standard input and returns the line as a string.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:readLine\">readLine(infile)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Reads a line of text from the input file and returns the line as a string.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:readLinesFromStream\">readLinesFromStream(infile)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Reads an entire file into a <code>NULL</code>-terminated array of lines.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:readLinesFromFile\">readLinesFromFile(filename)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Reads an entire file into a <code>NULL</code>-terminated array of lines.</td></tr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:getInteger\"></a>\n<pre class=detailCode>\nint getInteger(void);\n</pre>\n<div class=detailHTML>\nReads a line of text from standard input and scans it as an integer.\nIf an integer cannot be scanned or if extraneous characters follow\nthe number, the user is given a chance to retry.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nn = getInteger();\n</pre>\n<hr>\n<a name=\"Function:getLong\"></a>\n<pre class=detailCode>\nlong getLong(void);\n</pre>\n<div class=detailHTML>\nReads a line of text from standard input and scans it as a\n<code>long</code>.  If an integer cannot be scanned or if\nextraneous characters follow the number, the user is given\na chance to retry.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nl = getLong();\n</pre>\n<hr>\n<a name=\"Function:getReal\"></a>\n<pre class=detailCode>\ndouble getReal(void);\n</pre>\n<div class=detailHTML>\nReads a line of text from standard input and scans it as a\n<code>double</code>.  If an number cannot be scanned or if\nextraneous characters follow the number, the user is given\na chance to retry.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nd = getReal();\n</pre>\n<hr>\n<a name=\"Function:getLine\"></a>\n<pre class=detailCode>\nstring getLine(void);\n</pre>\n<div class=detailHTML>\nReads a line of text from standard input and returns the line\nas a string.  The newline character that terminates the input\nis not stored as part of the result.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ns = getLine();\n</pre>\n<hr>\n<a name=\"Function:readLine\"></a>\n<pre class=detailCode>\nstring readLine(FILE *infile);\n</pre>\n<div class=detailHTML>\nReads a line of text from the input file and returns the line\nas a string.  The newline character that terminates the input\nis not stored as part of the result.  The <code>readLine</code>\nfunction returns <code>NULL</code> if <code>infile</code> is\nat the end-of-file position.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ns = readLine(infile);\n</pre>\n<hr>\n<a name=\"Function:readLinesFromStream\"></a>\n<pre class=detailCode>\nstring *readLinesFromStream(FILE *infile);\n</pre>\n<div class=detailHTML>\nReads an entire file into a <code>NULL</code>-terminated array of lines.\nOpening and closing the file stream is the responsibility of the caller.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring *array = readLinesFromStream(infile);\n</pre>\n<hr>\n<a name=\"Function:readLinesFromFile\"></a>\n<pre class=detailCode>\nstring *readLinesFromFile(string filename);\n</pre>\n<div class=detailHTML>\nReads an entire file into a <code>NULL</code>-terminated array of lines.\nThis version opens the file, reads it, and closes it at the end.  If the\nfile name is <code>\"-\"</code>, the function reads from <code>stdin</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring *array = readLinesFromFile(filename);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/sound-h.html",
    "content": "<html>\n<head>\n<title>../sound.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: sound.h\n * -------------\n * This interface defines an abstract type that represents a sound.\n */\n</scan>\n#ifndef _sound_h\n#define _sound_h\n\n<a name=\"Type:Sound\"><scan class=comment>/*\n * Type: Sound\n * -----------\n * This type encapsulates a sound file.  The sound file is specified in the\n * constructor and must be a file in either the current directory or a\n * subdirectory named sounds.\n *\n * The following code, for example, plays the sound file ringtone.wav:\n *\n *    Sound ringtone = newSound(\"ringtone.wav\");\n *    play(ringtone);\n */\n</scan>\ntypedef struct SoundCDT *Sound;\n\n<a name=\"Function:newSound\"><scan class=comment>/*\n * Function: newSound\n * Usage: sound = newSound(filename);\n * ----------------------------------\n * Creates a Sound object from the specified file.\n */\n</scan>\nSound newSound(string filename);\n\n<a name=\"Function:freeSound\"><scan class=comment>/*\n * Function: freeSound\n * Usage: freeSound(sound);\n * ------------------------\n * Frees the memory associated with the sound.\n */\n</scan>\nvoid freeSound(Sound sound);\n\n<a name=\"Function:play\"><scan class=comment>/*\n * Function: play\n * Usage: play(sound);\n * -------------------\n * Starts playing the sound.  This call returns immediately without waiting\n * for the sound to finish.\n */\n</scan>\nvoid play(Sound sound);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/sound.html",
    "content": "<html>\n<head>\n<title>sound.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><a href=\"sound-h.html\"><code>sound.h</code></a></h1>\nThis interface defines an abstract type that represents a sound.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Type</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:Sound\">Sound</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This type encapsulates a sound file.</td></tr>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newSound\">newSound(filename)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a <code>Sound</code> object from the specified file.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:freeSound\">freeSound(sound)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Frees the memory associated with the sound.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:play\">play(sound)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Starts playing the sound.</td></tr>\n</table>\n<h2>Type detail</h2>\n<hr>\n<a name=\"Type:Sound\"></a>\n<pre class=detailCode>\ntypedef struct SoundCDT *Sound;\n</pre>\n<div class=detailHTML>\nThis type encapsulates a sound file.  The sound file is specified in the\nconstructor and must be a file in either the current directory or a\nsubdirectory named <code>sounds</code>.\n\n<p>The following code, for example, plays the sound file\n<code>ringtone.wav</code>:\n\n<pre>\n   Sound ringtone = newSound(\"ringtone.wav\");\n   play(ringtone);\n</pre>\n</div>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:newSound\"></a>\n<pre class=detailCode>\nSound newSound(string filename);\n</pre>\n<div class=detailHTML>\nCreates a <code>Sound</code> object from the specified file.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsound = newSound(filename);\n</pre>\n<hr>\n<a name=\"Function:freeSound\"></a>\n<pre class=detailCode>\nvoid freeSound(Sound sound);\n</pre>\n<div class=detailHTML>\nFrees the memory associated with the sound.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfreeSound(sound);\n</pre>\n<hr>\n<a name=\"Function:play\"></a>\n<pre class=detailCode>\nvoid play(Sound sound);\n</pre>\n<div class=detailHTML>\nStarts playing the sound.  This call returns immediately without waiting\nfor the sound to finish.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nplay(sound);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/stack-h.html",
    "content": "<html>\n<head>\n<title>../stack.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: stack.h\n * -------------\n * This interface exports an abstraction for stacks.\n */\n</scan>\n#ifndef _stack_h\n#define _stack_h\n\n#include \"cslib.h\"\n#include \"generic.h\"\n\n<a name=\"Type:Stack\"><scan class=comment>/*\n * Type: Stack\n * -----------\n * The abstract data type for the stack.\n */\n</scan>\ntypedef struct StackCDT *Stack;\n\n<a name=\"Function:newStack\"><scan class=comment>/*\n * Function: newStack\n * Usage: stack = newStack();\n * --------------------------\n * Allocates and returns a new stack, which is initially empty.\n */\n</scan>\nStack newStack(void);\n\n<a name=\"Function:freeStack\"><scan class=comment>/*\n * Function: freeStack\n * Usage: freeStack(stack);\n * ------------------------\n * Frees the storage associated with the stack.\n */\n</scan>\nvoid freeStack(Stack stack);\n\n<a name=\"Function:push\"><scan class=comment>/*\n * Function: push\n * Usage: push(stack, element);\n * ----------------------------\n * Pushes the specified element onto the stack.\n */\n</scan>\nvoid push(Stack stack, void *element);\n\n<a name=\"Function:pop\"><scan class=comment>/*\n * Function: pop\n * Usage: element = pop(stack);\n * ----------------------------\n * Pops the top element from the stack and returns that value.  The first\n * value popped is always the last one  that was pushed.  If the stack is\n * empty when pop is called, the implementation calls error with an\n * appropriate message.\n */\n</scan>\nvoid *pop(Stack stack);\n\n<a name=\"Function:peek\"><scan class=comment>/*\n * Function: peek\n * Usage: element = peek(stack);\n * -----------------------------\n * Returns the top element from the stack without removing it.  If the\n * stack is empty when pop is called, the implementation calls error with\n * an appropriate message.\n */\n</scan>\nvoid *peekStack(Stack stack);\n\n<a name=\"Function:isEmpty\"><scan class=comment>/*\n * Function: isEmpty\n * Usage: if (isEmpty(stack)) . . .\n * --------------------------------\n * Tests whether the stack is empty.\n */\n</scan>\nbool isEmptyStack(Stack stack);\n\n<a name=\"Function:size\"><scan class=comment>/*\n * Function: size\n * Usage: n = size(stack);\n * -----------------------\n * Returns the number of elements currently pushed on the stack.\n */\n</scan>\nint sizeStack(Stack stack);\n\n<a name=\"Function:clear\"><scan class=comment>/*\n * Function: clear\n * Usage: clear(stack);\n * --------------------\n * Removes all elements from the stack.\n */\n</scan>\nvoid clearStack(Stack stack);\n\n<a name=\"Function:clone\"><scan class=comment>/*\n * Function: clone\n * Usage: newstack = clone(stack);\n * -------------------------------\n * Creates a copy of the stack.  The clone function copies only the first\n * level of the structure and does not copy the individual elements.\n */\n</scan>\nStack cloneStack(Stack stack);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/stack.html",
    "content": "<html>\n<head>\n<title>stack.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><a href=\"stack-h.html\"><code>stack.h</code></a></h1>\nThis interface exports an abstraction for stacks.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Type</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:Stack\">Stack</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>The abstract data type for the stack.</td></tr>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newStack\">newStack()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Allocates and returns a new stack, which is initially empty.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:freeStack\">freeStack(stack)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Frees the storage associated with the stack.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:push\">push(stack,&nbsp;element)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Pushes the specified element onto the stack.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:pop\">pop(stack)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Pops the top element from the stack and returns that value.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:peek\">peek(stack)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the top element from the stack without removing it.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:isEmpty\">isEmpty(stack)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Tests whether the stack is empty.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:size\">size(stack)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the number of elements currently pushed on the stack.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:clear\">clear(stack)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Removes all elements from the stack.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:clone\">clone(stack)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a copy of the stack.</td></tr>\n</table>\n<h2>Type detail</h2>\n<hr>\n<a name=\"Type:Stack\"></a>\n<pre class=detailCode>\ntypedef struct StackCDT *Stack;\n</pre>\n<div class=detailHTML>\nThe abstract data type for the stack.\n</div>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:newStack\"></a>\n<pre class=detailCode>\nStack newStack(void);\n</pre>\n<div class=detailHTML>\nAllocates and returns a new stack, which is initially empty.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstack = newStack();\n</pre>\n<hr>\n<a name=\"Function:freeStack\"></a>\n<pre class=detailCode>\nvoid freeStack(Stack stack);\n</pre>\n<div class=detailHTML>\nFrees the storage associated with the stack.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfreeStack(stack);\n</pre>\n<hr>\n<a name=\"Function:push\"></a>\n<pre class=detailCode>\nvoid push(Stack stack, void *element);\n</pre>\n<div class=detailHTML>\nPushes the specified element onto the stack.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\npush(stack, element);\n</pre>\n<hr>\n<a name=\"Function:pop\"></a>\n<pre class=detailCode>\nvoid *pop(Stack stack);\n</pre>\n<div class=detailHTML>\nPops the top element from the stack and returns that value.\nThe first value popped is always the last one  that was pushed.\nIf the stack is empty when <code>pop</code> is called, the\nimplementation calls <code>error</code> with an appropriate message.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nelement = pop(stack);\n</pre>\n<hr>\n<a name=\"Function:peek\"></a>\n<pre class=detailCode>\nvoid *peek(Stack stack);\n</pre>\n<div class=detailHTML>\nReturns the top element from the stack without removing it.\nIf the stack is empty when <code>pop</code> is called, the\nimplementation calls <code>error</code> with an appropriate message.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nelement = peek(stack);\n</pre>\n<hr>\n<a name=\"Function:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty(Stack stack);\n</pre>\n<div class=detailHTML>\nTests whether the stack is empty.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (isEmpty(stack)) . . .\n</pre>\n<hr>\n<a name=\"Function:size\"></a>\n<pre class=detailCode>\nint size(Stack stack);\n</pre>\n<div class=detailHTML>\nReturns the number of elements currently pushed on the stack.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nn = size(stack);\n</pre>\n<hr>\n<a name=\"Function:clear\"></a>\n<pre class=detailCode>\nvoid clear(Stack stack);\n</pre>\n<div class=detailHTML>\nRemoves all elements from the stack.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nclear(stack);\n</pre>\n<hr>\n<a name=\"Function:clone\"></a>\n<pre class=detailCode>\nStack clone(Stack stack);\n</pre>\n<div class=detailHTML>\nCreates a copy of the stack.  The <code>clone</code> function copies\nonly the first level of the structure and does not copy the individual\nelements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nnewstack = clone(stack);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/strlib-h.html",
    "content": "<html>\n<head>\n<title>../strlib.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: strlib.h\n * --------------\n * This interface defines a general library for dynamically allocated\n * strings.  The major differences between traditional C strings and those\n * defined using this interface are:\n *\n *\n *  The strlib.h interface takes care of memory\n *      allocation, ensuring that there is sufficient space to hold\n *      the result of each string operation.\n *  Clients of the strlib.h interface are expected\n *      to treat all strings as immutable and refrain from writing\n *      into the character array.\n *\n */\n</scan>\n<scan class=comment>/*\n * Cautionary note:\n * ----------------\n * Although this interface provides an extremely convenient abstraction for\n * working with strings, it is not appropriate for all applications.  In\n * this interface, the functions that return string values (such as concat\n * and substring) do so by allocating new memory.  Over time, a program\n * that uses this package will consume increasing amounts of memory and\n * eventually exhaust the available supply.  If you are writing a program\n * that runs for a short time and stops, the fact that the package consumes\n * memory is not a problem.  If, however, you are writing an application\n * that must run for an extended period of time, using this package\n * requires that you make some provision for freeing any allocated storage.\n */\n</scan>\n#ifndef _strlib_h\n#define _strlib_h\n\n#include &lt;stdarg.h&gt;\n#include \"cslib.h\"\n#include \"generic.h\"\n\n<scan class=comment>/* Section 1 -- Basic string operations */</scan>\n\n<a name=\"Function:concat\"><scan class=comment>/*\n * Function: concat\n * Usage: s = concat(s1, s2);\n * --------------------------\n * Concatenates two strings by joining them end to end.  For example,\n * concat(\"ABC\", \"DE\") returns the string \"ABCDE\".\n */\n</scan>\nstring concat(string s1, string s2);\n\n<a name=\"Function:charAt\"><scan class=comment>/*\n * Function: charAt\n * Usage: ch = charAt(s, i);\n * -------------------------\n * Returns the character at position i in the string s.  This function is\n * included in the library to make the type string a true abstract type in\n * the sense that all of the necessary operations can be invoked using\n * functions.  Calling charAt(s, i) is like selecting s[i], except that\n * charAt checks to see if i is within the range of legal index positions,\n * which extend from 0 to stringLength(s).  Calling charAt(s,\n * stringLength(s)) character at the end of the string.\n */\n</scan>\nchar charAt(string s, int i);\n\n<a name=\"Function:substring\"><scan class=comment>/*\n * Function: substring\n * Usage: t = substring(s, p1, p2);\n * --------------------------------\n * Returns a copy of the substring of s consisting of the characters\n * between index positions p1 and p2, inclusive.  The following special\n * cases apply:\n *\n *\n *   If p1 is less than 0, it is assumed to be 0.\n *   If p2 is greater than or equal to the length of the\n *       string, p2 is set to stringLength(s) - 1.\n *   If p2 &lt; p1, substring returns the\n *       empty string.\n *\n */\n</scan>\nstring substring(string s, int p1, int p2);\n\n<a name=\"Function:charToString\"><scan class=comment>/*\n * Function: charToString\n * Usage: s = charToString(ch);\n * ----------------------------\n * Takes a single character and returns a one-character string consisting\n * of that character.  The charToString function is useful, for example, if\n * you need to concatenate a string and a character.  Since concat requires\n * two strings, you must first convert the character into a string.\n */\n</scan>\nstring charToString(char ch);\n\n<a name=\"Function:stringLength\"><scan class=comment>/*\n * Function: stringLength\n * Usage: len = stringLength(s);\n * -----------------------------\n * Returns the length of the string s.\n */\n</scan>\nint stringLength(string s);\n\n<a name=\"Function:copyString\"><scan class=comment>/*\n * Function: copyString\n * Usage: newstr = copyString(s);\n * ------------------------------\n * Copies the string s into dynamically allocated storage and returns the\n * new string.  This function is not ordinarily required when this package\n * is used on its own but is often necessary when you are working with more\n * than one string package.\n */\n</scan>\nstring copyString(string s);\n\n<scan class=comment>/* Section 2 -- String comparison functions */</scan>\n\n<a name=\"Function:stringEqual\"><scan class=comment>/*\n * Function: stringEqual\n * Usage: if (stringEqual(s1, s2)) ...\n * -----------------------------------\n * Returns true if the strings s1 and s2 are equal.  For the strings to be\n * considered equal, every character in one string must precisely match the\n * corresponding character in the other.  Uppercase and lowercase\n * characters are considered to be different.\n */\n</scan>\nbool stringEqual(string s1, string s2);\n\n<a name=\"Function:stringEqualIgnoreCase\"><scan class=comment>/*\n * Function: stringEqualIgnoreCase\n * Usage: if (stringEqualIgnoreCase(s1, s2)) ...\n * ---------------------------------------------\n * Returns true if the strings s1 and s2 are equal, ignoring differences in\n * case.\n */\n</scan>\nbool stringEqualIgnoreCase(string s1, string s2);\n\n<a name=\"Function:stringCompare\"><scan class=comment>/*\n * Function: stringCompare\n * Usage: if (stringCompare(s1, s2) &lt; 0) ...\n * -----------------------------------------\n * Returns -1 if string s1 comes before s2 in lexicographic order, 0 if\n * they are equal, and +1 if s1 comes after s2.\n */\n</scan>\nint stringCompare(string s1, string s2);\n\n<a name=\"Function:startsWith\"><scan class=comment>/*\n * Function: startsWith\n * Usage: if (startsWith(s1, s2)) ...\n * ----------------------------------\n * Returns true if s1 starts with s2.\n */\n</scan>\nbool startsWith(string s1, string s2);\n\n<a name=\"Function:endsWith\"><scan class=comment>/*\n * Function: endsWith\n * Usage: if (endsWith(s1, s2)) ...\n * --------------------------------\n * Returns true if s1 ends with s2.\n */\n</scan>\nbool endsWith(string s1, string s2);\n\n<scan class=comment>/* Section 3 -- Search functions */</scan>\n\n<a name=\"Function:findChar\"><scan class=comment>/*\n * Function: findChar\n * Usage: p = findChar(ch, text, start);\n * -------------------------------------\n * Searches for the character ch beginning at position start in the string\n * text and returns the first index at which it appears or -1 if no match\n * is found.\n */\n</scan>\nint findChar(char ch, string text, int start);\n\n<a name=\"Function:findString\"><scan class=comment>/*\n * Function: findString\n * Usage: p = findString(str, text, start);\n * ----------------------------------------\n * Searches for the string str beginning at position start in the string\n * text and returns the first index at which it appears or -1 if no match\n * is found.\n */\n</scan>\nint findString(string str, string text, int start);\n\n<a name=\"Function:findLastChar\"><scan class=comment>/*\n * Function: findLastChar\n * Usage: p = findLastChar(ch, text);\n * ----------------------------------\n * Returns the last index of ch in text, or -1 if the search value does not\n * appear.\n */\n</scan>\nint findLastChar(char ch, string text);\n\n<a name=\"Function:findLastString\"><scan class=comment>/*\n * Function: findLastString\n * Usage: p = findLastString(str, text);\n * -------------------------------------\n * Returns the last index of str in text, or -1 if the search value does\n * not appear.\n */\n</scan>\nint findLastString(string str, string text);\n\n<scan class=comment>/* Section 4 -- Conversion functions */</scan>\n\n<a name=\"Function:toLowerCase\"><scan class=comment>/*\n * Function: toLowerCase\n * Usage: s = toLowerCase(s);\n * --------------------------\n * Returns a new string with all alphabetic characters converted to\n * lowercase.\n */\n</scan>\nstring toLowerCase(string s);\n\n<a name=\"Function:toUpperCase\"><scan class=comment>/*\n * Function: toUpperCase\n * Usage: s = toUpperCase(s);\n * --------------------------\n * Returns a new string with all alphabetic characters converted to\n * uppercase.\n */\n</scan>\nstring toUpperCase(string s);\n\n<a name=\"Function:integerToString\"><scan class=comment>/*\n * Function: integerToString\n * Usage: s = integerToString(n);\n * ------------------------------\n * Converts an integer into the corresponding string of digits.  For\n * example, integerToString(123) returns \"123\" as a string.\n */\n</scan>\nstring integerToString(int n);\n\n<a name=\"Function:stringToInteger\"><scan class=comment>/*\n * Function: stringToInteger\n * Usage: n = stringToInteger(s);\n * ------------------------------\n * Converts a string of digits into an integer.  If the string is not a\n * legal integer or contains extraneous characters, stringToInteger signals\n * an error condition.\n */\n</scan>\nint stringToInteger(string s);\n\n<a name=\"Function:realToString\"><scan class=comment>/*\n * Function: realToString\n * Usage: string  s = realToString(d);\n * -----------------------------------\n * Converts a floating-point number into the corresponding string form. \n * For example, calling realToString(23.45) returns \"23.45\".  The\n * conversion is the same as that used for \"%G\" format in printf.\n */\n</scan>\nstring realToString(double d);\n\n<a name=\"Function:stringToReal\"><scan class=comment>/*\n * Function: stringToReal\n * Usage: d = stringToReal(s);\n * ---------------------------\n * Converts a string representing a real number into its corresponding\n * value.  If the string is not a legal floating-point number or if it\n * contains extraneous characters, stringToReal signals an error condition.\n */\n</scan>\ndouble stringToReal(string s);\n\n<scan class=comment>/* Section 5 - Miscellaneous functions */</scan>\n\n<a name=\"Function:trim\"><scan class=comment>/*\n * Function: trim\n * Usage: trimmed = trim(str);\n * ---------------------------\n * Returns a new string after removing any whitespace characters from the\n * beginning and end of the argument.\n */\n</scan>\nstring trim(string str);\n\n<a name=\"Function:quoteString\"><scan class=comment>/*\n * Function: quoteString\n * Usage: quoted = quoteString(str);\n * ---------------------------------\n * Returns a quoted string that can be read by the C parser.  This string\n * includes double quotes around the entire value, and uses standard escape\n * sequences to indicate special characters.\n */\n</scan>\nstring quoteString(string str);\n\n<a name=\"Function:quoteHTML\"><scan class=comment>/*\n * Function: quoteHTML\n * Usage: quoted = quoteHTML(str);\n * -------------------------------\n * Returns a string that appears correctly in HTML by changing HTML special\n * characters to character entities.\n */\n</scan>\nstring quoteHTML(string str);\n\n<a name=\"Function:stringArrayLength\"><scan class=comment>/*\n * Function: stringArrayLength\n * Usage: len = stringArrayLength(array);\n * --------------------------------------\n * Returns the length of a NULL-terminated string array.\n */\n</scan>\nint stringArrayLength(string array[]);\n\n<a name=\"Function:searchStringArray\"><scan class=comment>/*\n * Function: searchStringArray\n * Usage: index = searchStringArray(str, array);\n * ---------------------------------------------\n * Finds a string in a NULL-terminated string array and returns the first\n * index at which the string appears, or -1 if it is not found.\n */\n</scan>\nint searchStringArray(string str, string array[]);\n\n<scan class=comment>/* Section 6 - The StringBuffer ADT */</scan>\n\n<a name=\"Type:StringBuffer\"><scan class=comment>/*\n * Type: StringBuffer\n * ------------------\n * This type provides an efficient, memory-safe mechanism for strings that\n * grow by the addition of characters.\n */\n</scan>\ntypedef struct StringBufferCDT *StringBuffer;\n\n<a name=\"Function:newStringBuffer\"><scan class=comment>/*\n * Function: newStringBuffer\n * Usage: sb = newStringBuffer();\n * ------------------------------\n * Creates a new string buffer that expands dynamically if needed.  The\n * buffer is initially empty.\n */\n</scan>\nStringBuffer newStringBuffer();\n\n<a name=\"Function:freeStringBuffer\"><scan class=comment>/*\n * Function: freeStringBuffer\n * Usage: freeStringBuffer(sb);\n * ----------------------------\n * Frees the storage associated with the string buffer.\n */\n</scan>\nvoid freeStringBuffer(StringBuffer sb);\n\n<a name=\"Function:pushChar\"><scan class=comment>/*\n * Function: pushChar\n * Usage: pushChar(sb, ch);\n * ------------------------\n * Appends (pushes) the character ch onto the end of the string buffer.\n */\n</scan>\nvoid pushChar(StringBuffer sb, char ch);\n\n<a name=\"Function:popChar\"><scan class=comment>/*\n * Function: popChar\n * Usage: ch = popChar(sb);\n * ------------------------\n * Pops and removes the last character from the string buffer.\n */\n</scan>\nchar popChar(StringBuffer sb);\n\n<a name=\"Function:appendString\"><scan class=comment>/*\n * Function: appendString\n * Usage: appendString(sb, str);\n * -----------------------------\n * Appends the string str to the end of the string buffer.\n */\n</scan>\nvoid appendString(StringBuffer sb, string str);\n\n<a name=\"Function:sbprintf\"><scan class=comment>/*\n * Function: sbprintf\n * Usage: sbprintf(sb, format, ...);\n * ---------------------------------\n * Expands a printf-style format string and arguments onto the end of the\n * string buffer.\n */\n</scan>\nvoid sbprintf(StringBuffer sb, string format, ...);\n\n<a name=\"Function:isEmpty\"><scan class=comment>/*\n * Function: isEmpty\n * Usage: if (isEmpty(sb)) . . .\n * -----------------------------\n * Returns true if the string buffer is empty.\n */\n</scan>\nbool isEmptyStringBuffer(StringBuffer vec);\n\n<a name=\"Function:size\"><scan class=comment>/*\n * Function: size\n * Usage: n = size(sb);\n * --------------------\n * Returns the number of characters in the string buffer.\n */\n</scan>\nint sizeStringBuffer(StringBuffer vector);\n\n<a name=\"Function:clear\"><scan class=comment>/*\n * Function: clear\n * Usage: clear(sb);\n * -----------------\n * Removes all characters from the string buffer.\n */\n</scan>\nvoid clearStringBuffer(StringBuffer sb);\n\n<a name=\"Function:toString\"><scan class=comment>/*\n * Function: toString\n * Usage: str = toString(sb);\n * --------------------------\n * Returns the string stored inside the buffer.  Clients must copy this\n * string if they need to retain it.\n */\n</scan>\nstring toString(StringBuffer sb);\n\n<a name=\"Friend function:printfCapacity\"><scan class=comment>/*\n * Friend function: printfCapacity\n * Usage: capacity = printfCapacity(format, args);\n * -----------------------------------------------\n * Returns a character count that will be sufficient to hold the result of\n * printing format with arguments substituted from the args list.  This\n * bound is guaranteed to be adequate but is not necessarily tight.\n */\n</scan>\nint printCapacity(string format, va_list args);\n\n<a name=\"Friend function:sbFormat\"><scan class=comment>/*\n * Friend function: sbFormat\n * Usage: sbFormat(sb, capacity, format, list);\n * --------------------------------------------\n * Works like sbprintf except that the list is an argument list as in\n * stdarg.h.  The capacity argument is the required capacity, as returned\n * by printfCapacity.\n */\n</scan>\nvoid sbFormat(StringBuffer sb, int capacity, string format, va_list args);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/strlib.html",
    "content": "<html>\n<head>\n<title>strlib.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><a href=\"strlib-h.html\"><code>strlib.h</code></a></h1>\nThis interface defines a general library for dynamically allocated\nstrings.  The major differences between traditional C strings and\nthose defined using this interface are:\n\n<ol>\n <li>The <code>strlib.h</code> interface takes care of memory\n     allocation, ensuring that there is sufficient space to hold\n     the result of each string operation.\n <li>Clients of the <code>strlib.h</code> interface are expected\n     to treat all strings as immutable and refrain from writing\n     into the character array.\n</ol>\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Type</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:StringBuffer\">StringBuffer</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This type provides an efficient, memory-safe mechanism for strings that grow by the addition of characters.</td></tr>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:concat\">concat(s1,&nbsp;s2)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Concatenates two strings by joining them end to end.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:charAt\">charAt(s,&nbsp;i)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the character at position <code>i</code> in the string <code>s</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:substring\">substring(s,&nbsp;p1,&nbsp;p2)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a copy of the substring of <code>s</code> consisting of the characters between index positions <code>p1</code> and <code>p2</code>, inclusive.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:charToString\">charToString(ch)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Takes a single character and returns a one-character string consisting of that character.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:stringLength\">stringLength(s)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the length of the string <code>s</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:copyString\">copyString(s)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Copies the string <code>s</code> into dynamically allocated storage and returns the new string.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:stringEqual\">stringEqual(s1,&nbsp;s2)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the strings <code>s1</code> and <code>s2</code> are equal.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:stringEqualIgnoreCase\">stringEqualIgnoreCase(s1,&nbsp;s2)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the strings <code>s1</code> and <code>s2</code> are equal, ignoring differences in case.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:stringCompare\">stringCompare(s1,&nbsp;s2)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns -1 if string <code>s1</code> comes before <code>s2</code> in lexicographic order, 0 if they are equal, and +1 if <code>s1</code> comes after <code>s2</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:startsWith\">startsWith(s1,&nbsp;s2)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if <code>s1</code> starts with <code>s2</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:endsWith\">endsWith(s1,&nbsp;s2)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if <code>s1</code> ends with <code>s2</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:findChar\">findChar(ch,&nbsp;text,&nbsp;start)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Searches for the character <code>ch</code> beginning at position <code>start</code> in the string <code>text</code> and returns the first index at which it appears or -1 if no match is found.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:findString\">findString(str,&nbsp;text,&nbsp;start)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Searches for the string <code>str</code> beginning at position <code>start</code> in the string <code>text</code> and returns the first index at which it appears or -1 if no match is found.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:findLastChar\">findLastChar(ch,&nbsp;text)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the last index of <code>ch</code> in <code>text</code>, or -1 if the search value does not appear.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:findLastString\">findLastString(str,&nbsp;text)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the last index of <code>str</code> in <code>text</code>, or -1 if the search value does not appear.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:toLowerCase\">toLowerCase(s)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a new string with all alphabetic characters converted to lowercase.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:toUpperCase\">toUpperCase(s)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a new string with all alphabetic characters converted to uppercase.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:integerToString\">integerToString(n)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Converts an integer into the corresponding string of digits.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:stringToInteger\">stringToInteger(s)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Converts a string of digits into an integer.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:realToString\">realToString(d)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Converts a floating-point number into the corresponding string form.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:stringToReal\">stringToReal(s)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Converts a string representing a real number into its corresponding value.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:trim\">trim(str)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a new string after removing any whitespace characters from the beginning and end of the argument.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:quoteString\">quoteString(str)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a quoted string that can be read by the C parser.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:quoteHTML\">quoteHTML(str)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a string that appears correctly in HTML by changing HTML special characters to character entities.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:stringArrayLength\">stringArrayLength(array)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the length of a <code>NULL</code>-terminated string array.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:searchStringArray\">searchStringArray(str,&nbsp;array)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Finds a string in a <code>NULL</code>-terminated string array and returns the first index at which the string appears, or -1 if it is not found.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newStringBuffer\">newStringBuffer()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a new string buffer that expands dynamically if needed.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:freeStringBuffer\">freeStringBuffer(sb)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Frees the storage associated with the string buffer.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:pushChar\">pushChar(sb,&nbsp;ch)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Appends (pushes) the character <code>ch</code> onto the end of the string buffer.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:popChar\">popChar(sb)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Pops and removes the last character from the string buffer.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:appendString\">appendString(sb,&nbsp;str)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Appends the string <code>str</code> to the end of the string buffer.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:sbprintf\">sbprintf(sb,&nbsp;format,&nbsp;...)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Expands a <code>printf</code>-style format string and arguments onto the end of the string buffer.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:isEmpty\">isEmpty(sb)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the string buffer is empty.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:size\">size(sb)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the number of characters in the string buffer.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:clear\">clear(sb)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Removes all characters from the string buffer.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:toString\">toString(sb)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the string stored inside the buffer.</td></tr>\n</table>\n<h2>Type detail</h2>\n<hr>\n<a name=\"Type:StringBuffer\"></a>\n<pre class=detailCode>\ntypedef struct StringBufferCDT *StringBuffer;\n</pre>\n<div class=detailHTML>\nThis type provides an efficient, memory-safe mechanism for strings\nthat grow by the addition of characters.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nindex = searchStringArray(str, array);\n</pre>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:concat\"></a>\n<pre class=detailCode>\nstring concat(string s1, string s2);\n</pre>\n<div class=detailHTML>\nConcatenates two strings by joining them end to end.  For\nexample, <code>concat(\"ABC\", \"DE\")</code> returns the\nstring <code>\"ABCDE\"</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ns = concat(s1, s2);\n</pre>\n<hr>\n<a name=\"Function:charAt\"></a>\n<pre class=detailCode>\nchar charAt(string s, int i);\n</pre>\n<div class=detailHTML>\nReturns the character at position <code>i</code> in the\nstring <code>s</code>.  This function is included in the\nlibrary to make the type <code>string</code> a true abstract\ntype in the sense that all of the necessary operations can be\ninvoked using functions.  Calling <code>charAt(s, i)</code>\nis like selecting <code>s[i]</code>, except that\n<code>charAt</code> checks to see if <code>i</code> is\nwithin the range of legal index positions, which extend\nfrom 0 to <code>stringLength(s)</code>.  Calling\n<code>charAt(s, stringLength(s))</code returns the null\ncharacter at the end of the string.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nch = charAt(s, i);\n</pre>\n<hr>\n<a name=\"Function:substring\"></a>\n<pre class=detailCode>\nstring substring(string s, int p1, int p2);\n</pre>\n<div class=detailHTML>\nReturns a copy of the substring of <code>s</code> consisting of the\ncharacters between index positions <code>p1</code> and <code>p2</code>,\ninclusive.  The following special cases apply:\n\n<ol>\n <li> If <code>p1</code> is less than 0, it is assumed to be 0.\n <li> If <code>p2</code> is greater than or equal to the length of the\n      string, <code>p2</code> is set to <code>stringLength(s) - 1</code>.\n <li> If <code>p2 &lt; p1</code>, <code>substring</code> returns the\n      empty string.\n</ol>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nt = substring(s, p1, p2);\n</pre>\n<hr>\n<a name=\"Function:charToString\"></a>\n<pre class=detailCode>\nstring charToString(char ch);\n</pre>\n<div class=detailHTML>\nTakes a single character and returns a one-character string\nconsisting of that character.  The <code>charToString</code>\nfunction is useful, for example, if you need to concatenate\na string and a character.  Since <code>concat</code> requires\ntwo strings, you must first convert the character into a string.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ns = charToString(ch);\n</pre>\n<hr>\n<a name=\"Function:stringLength\"></a>\n<pre class=detailCode>\nint stringLength(string s);\n</pre>\n<div class=detailHTML>\nReturns the length of the string <code>s</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlen = stringLength(s);\n</pre>\n<hr>\n<a name=\"Function:copyString\"></a>\n<pre class=detailCode>\nstring copyString(string s);\n</pre>\n<div class=detailHTML>\nCopies the string <code>s</code> into dynamically allocated storage\nand returns the new string.  This function is not ordinarily required\nwhen this package is used on its own but is often necessary when you\nare working with more than one string package.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nnewstr = copyString(s);\n</pre>\n<hr>\n<a name=\"Function:stringEqual\"></a>\n<pre class=detailCode>\nbool stringEqual(string s1, string s2);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the strings <code>s1</code>\nand <code>s2</code> are equal.  For the strings to be\nconsidered equal, every character in one string must\nprecisely match the corresponding character in the other.\nUppercase and lowercase characters are considered to be\ndifferent.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (stringEqual(s1, s2)) ...\n</pre>\n<hr>\n<a name=\"Function:stringEqualIgnoreCase\"></a>\n<pre class=detailCode>\nbool stringEqualIgnoreCase(string s1, string s2);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the strings <code>s1</code>\nand <code>s2</code> are equal, ignoring differences in case.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (stringEqualIgnoreCase(s1, s2)) ...\n</pre>\n<hr>\n<a name=\"Function:stringCompare\"></a>\n<pre class=detailCode>\nint stringCompare(string s1, string s2);\n</pre>\n<div class=detailHTML>\nReturns -1 if string <code>s1</code> comes before <code>s2</code>\nin lexicographic order, 0 if they are equal, and +1 if\n<code>s1</code> comes after <code>s2</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (stringCompare(s1, s2) &lt; 0) ...\n</pre>\n<hr>\n<a name=\"Function:startsWith\"></a>\n<pre class=detailCode>\nbool startsWith(string s1, string s2);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if <code>s1</code> starts with <code>s2</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (startsWith(s1, s2)) ...\n</pre>\n<hr>\n<a name=\"Function:endsWith\"></a>\n<pre class=detailCode>\nbool endsWith(string s1, string s2);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if <code>s1</code> ends with <code>s2</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (endsWith(s1, s2)) ...\n</pre>\n<hr>\n<a name=\"Function:findChar\"></a>\n<pre class=detailCode>\nint findChar(char ch, string text, int start);\n</pre>\n<div class=detailHTML>\nSearches for the character <code>ch</code> beginning at position\n<code>start</code> in the string <code>text</code> and returns\nthe first index at which it appears or -1 if no match is found.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\np = findChar(ch, text, start);\n</pre>\n<hr>\n<a name=\"Function:findString\"></a>\n<pre class=detailCode>\nint findString(string str, string text, int start);\n</pre>\n<div class=detailHTML>\nSearches for the string <code>str</code> beginning at position\n<code>start</code> in the string <code>text</code> and returns\nthe first index at which it appears or -1 if no match is found.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\np = findString(str, text, start);\n</pre>\n<hr>\n<a name=\"Function:findLastChar\"></a>\n<pre class=detailCode>\nint findLastChar(char ch, string text);\n</pre>\n<div class=detailHTML>\nReturns the last index of <code>ch</code> in <code>text</code>,\nor -1 if the search value does not appear.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\np = findLastChar(ch, text);\n</pre>\n<hr>\n<a name=\"Function:findLastString\"></a>\n<pre class=detailCode>\nint findLastString(string str, string text);\n</pre>\n<div class=detailHTML>\nReturns the last index of <code>str</code> in <code>text</code>,\nor -1 if the search value does not appear.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\np = findLastString(str, text);\n</pre>\n<hr>\n<a name=\"Function:toLowerCase\"></a>\n<pre class=detailCode>\nstring toLowerCase(string s);\n</pre>\n<div class=detailHTML>\nReturns a new string with all alphabetic characters converted\nto lowercase.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ns = toLowerCase(s);\n</pre>\n<hr>\n<a name=\"Function:toUpperCase\"></a>\n<pre class=detailCode>\nstring toUpperCase(string s);\n</pre>\n<div class=detailHTML>\nReturns a new string with all alphabetic characters converted\nto uppercase.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ns = toUpperCase(s);\n</pre>\n<hr>\n<a name=\"Function:integerToString\"></a>\n<pre class=detailCode>\nstring integerToString(int n);\n</pre>\n<div class=detailHTML>\nConverts an integer into the corresponding string of digits.\nFor example, <code>integerToString(123)</code> returns\n<code>\"123\"</code> as a string.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ns = integerToString(n);\n</pre>\n<hr>\n<a name=\"Function:stringToInteger\"></a>\n<pre class=detailCode>\nint stringToInteger(string s);\n</pre>\n<div class=detailHTML>\nConverts a string of digits into an integer.  If the string\nis not a legal integer or contains extraneous characters,\n<code>stringToInteger</code> signals an error condition.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nn = stringToInteger(s);\n</pre>\n<hr>\n<a name=\"Function:realToString\"></a>\n<pre class=detailCode>\nstring realToString(double d);\n</pre>\n<div class=detailHTML>\nConverts a floating-point number into the corresponding string\nform.  For example, calling <code>realToString(23.45)</code>\nreturns </code>\"23.45\"</code>.  The conversion is the same as\nthat used for <code>\"%G\"</code> format in <code>printf</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring  s = realToString(d);\n</pre>\n<hr>\n<a name=\"Function:stringToReal\"></a>\n<pre class=detailCode>\ndouble stringToReal(string s);\n</pre>\n<div class=detailHTML>\nConverts a string representing a real number into its\ncorresponding value.  If the string is not a legal\nfloating-point number or if it contains extraneous characters,\n<code>stringToReal</code> signals an error condition.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nd = stringToReal(s);\n</pre>\n<hr>\n<a name=\"Function:trim\"></a>\n<pre class=detailCode>\nstring trim(string str);\n</pre>\n<div class=detailHTML>\nReturns a new string after removing any whitespace characters\nfrom the beginning and end of the argument.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ntrimmed = trim(str);\n</pre>\n<hr>\n<a name=\"Function:quoteString\"></a>\n<pre class=detailCode>\nstring quoteString(string str);\n</pre>\n<div class=detailHTML>\nReturns a quoted string that can be read by the C parser.\nThis string includes double quotes around the entire value,\nand uses standard escape sequences to indicate special\ncharacters.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nquoted = quoteString(str);\n</pre>\n<hr>\n<a name=\"Function:quoteHTML\"></a>\n<pre class=detailCode>\nstring quoteHTML(string str);\n</pre>\n<div class=detailHTML>\nReturns a string that appears correctly in HTML by changing HTML special\ncharacters to character entities.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nquoted = quoteHTML(str);\n</pre>\n<hr>\n<a name=\"Function:stringArrayLength\"></a>\n<pre class=detailCode>\nint stringArrayLength(string array[]);\n</pre>\n<div class=detailHTML>\nReturns the length of a <code>NULL</code>-terminated string array.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlen = stringArrayLength(array);\n</pre>\n<hr>\n<a name=\"Function:searchStringArray\"></a>\n<pre class=detailCode>\nint searchStringArray(string str, string array[]);\n</pre>\n<div class=detailHTML>\nFinds a string in a <code>NULL</code>-terminated string array and\nreturns the first index at which the string appears, or -1 if it\nis not found.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nindex = searchStringArray(str, array);\n</pre>\n<hr>\n<a name=\"Function:newStringBuffer\"></a>\n<pre class=detailCode>\nStringBuffer newStringBuffer();\n</pre>\n<div class=detailHTML>\nCreates a new string buffer that expands dynamically if needed.\nThe buffer is initially empty.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsb = newStringBuffer();\n</pre>\n<hr>\n<a name=\"Function:freeStringBuffer\"></a>\n<pre class=detailCode>\nvoid freeStringBuffer(StringBuffer sb);\n</pre>\n<div class=detailHTML>\nFrees the storage associated with the string buffer.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfreeStringBuffer(sb);\n</pre>\n<hr>\n<a name=\"Function:pushChar\"></a>\n<pre class=detailCode>\nvoid pushChar(StringBuffer sb, char ch);\n</pre>\n<div class=detailHTML>\nAppends (pushes) the character <code>ch</code> onto the end of the\nstring buffer.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\npushChar(sb, ch);\n</pre>\n<hr>\n<a name=\"Function:popChar\"></a>\n<pre class=detailCode>\nchar popChar(StringBuffer sb);\n</pre>\n<div class=detailHTML>\nPops and removes the last character from the string buffer.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nch = popChar(sb);\n</pre>\n<hr>\n<a name=\"Function:appendString\"></a>\n<pre class=detailCode>\nvoid appendString(StringBuffer sb, string str);\n</pre>\n<div class=detailHTML>\nAppends the string <code>str</code> to the end of the string buffer.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nappendString(sb, str);\n</pre>\n<hr>\n<a name=\"Function:sbprintf\"></a>\n<pre class=detailCode>\nvoid sbprintf(StringBuffer sb, string format, ...);\n</pre>\n<div class=detailHTML>\nExpands a <code>printf</code>-style format string and arguments onto\nthe end of the string buffer.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsbprintf(sb, format, ...);\n</pre>\n<hr>\n<a name=\"Function:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty(StringBuffer vec);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the string buffer is empty.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (isEmpty(sb)) . . .\n</pre>\n<hr>\n<a name=\"Function:size\"></a>\n<pre class=detailCode>\nint size(StringBuffer vector);\n</pre>\n<div class=detailHTML>\nReturns the number of characters in the string buffer.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nn = size(sb);\n</pre>\n<hr>\n<a name=\"Function:clear\"></a>\n<pre class=detailCode>\nvoid clear(StringBuffer sb);\n</pre>\n<div class=detailHTML>\nRemoves all characters from the string buffer.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nclear(sb);\n</pre>\n<hr>\n<a name=\"Function:toString\"></a>\n<pre class=detailCode>\nstring toString(StringBuffer sb);\n</pre>\n<div class=detailHTML>\nReturns the string stored inside the buffer.  Clients must copy this\nstring if they need to retain it.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstr = toString(sb);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/symtab-h.html",
    "content": "<html>\n<head>\n<title>../symtab.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: symtab.h\n * --------------\n * This package implements a symbol table abstraction.  Clients create new\n * key/value by calling enter and look up existing bindings by calling\n * lookup.\n */\n</scan>\n#ifndef _symtab_h\n#define _symtab_h\n\n#include \"cslib.h\"\n#include \"iterator.h\"\n\n<a name=\"Function:HashMap\"><scan class=comment>/*\n * Function: HashMap\n * -----------------\n * This type is the ADT used to represent a symbol table.\n */\n</scan>\ntypedef struct HashMapCDT *HashMap;\n\n<a name=\"Function:void\"><scan class=comment>/*\n * Function: void\n * --------------\n * This type defines the class of functions that can be used to map over\n * the entries in a symbol table.\n */\n</scan>\ntypedef void (*symtabFnT)(string key, void *value, void *data);\n\n<scan class=comment>/* Exported entries */</scan>\n\n<a name=\"Function:newSymbolTable\"><scan class=comment>/*\n * Function: newSymbolTable\n * Usage: HashMap table = newSymbolTable();\n * ----------------------------------------\n * Allocates a new symbol table with no entries.\n */\n</scan>\nHashMap newSymbolTable(void);\n\n<a name=\"Function:freeSymbolTable\"><scan class=comment>/*\n * Function: freeSymbolTable\n * Usage: freeSymbolTable(table);\n * ------------------------------\n * Frees the storage associated with the symbol table.\n */\n</scan>\nvoid freeSymbolTable(HashMap table);\n\n<a name=\"Function:enter\"><scan class=comment>/*\n * Function: enter\n * Usage: enter(table, key, value);\n * --------------------------------\n * Associates key with value in the symbol table.  Each call to enter\n * supersedes any previous definition for key.\n */\n</scan>\nvoid enter(HashMap table, string key, void *value);\n\n<a name=\"Function:lookup\"><scan class=comment>/*\n * Function: lookup\n * Usage: void *value = lookup(table, key);\n * ----------------------------------------\n * Returns the value associated with key in the symbol table, or UNDEFINED,\n * if no such value exists.\n */\n</scan>\nvoid *lookup(HashMap table, string key);\n\n<a name=\"Function:containsKey\"><scan class=comment>/*\n * Function: containsKey\n * Usage: if (containsKey(table, key)) . . .\n * -----------------------------------------\n * Checks to see if the table contains the specified key.\n */\n</scan>\nbool containsKey(HashMap table, string key);\n\n<a name=\"Function:mapSymbolTable\"><scan class=comment>/*\n * Function: mapSymbolTable\n * Usage: mapSymbolTable(fn, table, data);\n * ---------------------------------------\n * Iterates through every entry in the symbol table and calls the function\n * fn, passing it the following arguments:\n *\n *   The current key\n *   The associated value\n *   The data passed to mapSymbolTable\n *\n * The data pointer allows the client to pass state information to the\n * function fn, if necessary.  If no such information is required, this\n * argument should be NULL.\n */\n</scan>void mapSymbolTable(symtabFnT fn, HashMap table, void *data);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/symtab.html",
    "content": "<html>\n<head>\n<title>symtab.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1><a href=\"symtab-h.html\"><code>symtab.h</code></a></h1>\nThis package implements a symbol table abstraction.  Clients\ncreate new key/value by calling <code>enter</code> and look up\nexisting bindings by calling <code>lookup</code>.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><a href=\"#Function:HashMap\">HashMap</a>&nbsp;</td><td class=indexSynopsis width=100%>This type is the ADT used to represent a symbol table.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:void\">void</a>&nbsp;</td><td class=indexSynopsis width=100%>This type defines the class of functions that can be used to map over the entries in a symbol table.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:newSymbolTable\">newSymbolTable()</a>&nbsp;</td><td class=indexSynopsis width=100%>Allocates a new symbol table with no entries.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:freeSymbolTable\">freeSymbolTable(table)</a>&nbsp;</td><td class=indexSynopsis width=100%>Frees the storage associated with the symbol table.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:enter\">enter(table,&nbsp;key,&nbsp;value)</a>&nbsp;</td><td class=indexSynopsis width=100%>Associates <code>key</code> with <code>value</code> in the symbol table.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:lookup\">lookup(table,&nbsp;key)</a>&nbsp;</td><td class=indexSynopsis width=100%>Returns the value associated with <code>key</code> in the symbol table, or <code>UNDEFINED</code>, if no such value exists.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:containsKey\">containsKey(table,&nbsp;key)</a>&nbsp;</td><td class=indexSynopsis width=100%>Checks to see if the table contains the specified key.</td></tr>\n<tr><td class=indexKey><a href=\"#Function:mapSymbolTable\">mapSymbolTable(fn,&nbsp;table,&nbsp;data)</a>&nbsp;</td><td class=indexSynopsis width=100%>Iterates through every entry in the symbol table and calls the function <code>fn</code>, passing it the following arguments:  <ul>   <li>The current key   <li>The associated value   <li>The <code>data</code> passed to <code>mapSymbolTable</code> </ul>  The <code>data</code> pointer allows the client to pass state information to the function <code>fn</code>, if necessary.</td></tr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:HashMap\"></a>\n<pre class=detailCode>\ntypedef struct HashMapCDT *HashMap;\n</pre>\n<div class=detailHTML>\nThis type is the ADT used to represent a symbol table.\n</div>\n<hr>\n<a name=\"Function:void\"></a>\n<pre class=detailCode>\ntypedef void void(*symtabFnT)(string key, void *value, void *data);\n</pre>\n<div class=detailHTML>\nThis type defines the class of functions that can be used to\nmap over the entries in a symbol table.\n</div>\n<hr>\n<a name=\"Function:newSymbolTable\"></a>\n<pre class=detailCode>\nHashMap newSymbolTable(void);\n</pre>\n<div class=detailHTML>\nAllocates a new symbol table with no entries.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nHashMap table = newSymbolTable();\n</pre>\n<hr>\n<a name=\"Function:freeSymbolTable\"></a>\n<pre class=detailCode>\nvoid freeSymbolTable(HashMap table);\n</pre>\n<div class=detailHTML>\nFrees the storage associated with the symbol table.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfreeSymbolTable(table);\n</pre>\n<hr>\n<a name=\"Function:enter\"></a>\n<pre class=detailCode>\nvoid enter(HashMap table, string key, void *value);\n</pre>\n<div class=detailHTML>\nAssociates <code>key</code> with <code>value</code> in the symbol\ntable.  Each call to <code>enter</code> supersedes any previous\ndefinition for <code>key</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nenter(table, key, value);\n</pre>\n<hr>\n<a name=\"Function:lookup\"></a>\n<pre class=detailCode>\nvoid *lookup(HashMap table, string key);\n</pre>\n<div class=detailHTML>\nReturns the value associated with <code>key</code> in the symbol\ntable, or <code>UNDEFINED</code>, if no such value exists.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvoid *value = lookup(table, key);\n</pre>\n<hr>\n<a name=\"Function:containsKey\"></a>\n<pre class=detailCode>\nbool containsKey(HashMap table, string key);\n</pre>\n<div class=detailHTML>\nChecks to see if the table contains the specified key.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (containsKey(table, key)) . . .\n</pre>\n<hr>\n<a name=\"Function:mapSymbolTable\"></a>\n<pre class=detailCode>\nvoid mapSymbolTable(symtabFnT fn, HashMap table, void *data);\n</pre>\n<div class=detailHTML>\nIterates through every entry in the symbol table and calls\nthe function <code>fn</code>, passing it the following arguments:\n\n<ul>\n  <li>The current key\n  <li>The associated value\n  <li>The <code>data</code> passed to <code>mapSymbolTable</code>\n</ul>\n\nThe <code>data</code> pointer allows the client to pass state\ninformation to the function <code>fn</code>, if necessary.  If no such\ninformation is required, this argument should be <code>NULL</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmapSymbolTable(fn, table, data);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/thread-h.html",
    "content": "<html>\n<head>\n<title>../thread.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: thread.h\n * --------------\n * This interface exports a platform-independent thread abstraction, along\n * with simple functions for concurrency control.\n */\n</scan>\n#ifndef _thread_h\n#define _thread_h\n\n#include &lt;setjmp.h&gt;\n#include \"cslib.h\"\n\n#ifdef __macosx__\n#  define getCurrentThread XgetCurrentThread\n#endif\n\n<a name=\"Type:Thread\"><scan class=comment>/*\n * Type: Thread\n * ------------\n * The Thread type is used to represent a thread, which is a lightweight\n * process running in the same address space as the creator.\n */\n</scan>\ntypedef struct ThreadCDT *Thread;\n\n<a name=\"Type:Lock\"><scan class=comment>/*\n * Type: Lock\n * ----------\n * The Lock type is used to manage concurrent access to some data structure\n * within an application.  Only one thread can hold a lock at any point in\n * time; other threads seeking to gain access queue on the lock until it is\n * released by the thread that originally obtained it.  The general\n * strategy for using a lock is to use the synchronized statement to\n * protect a critical region of code, as illustrated in the discussion of\n * synchronized later in this file.\n */\n</scan>\ntypedef struct LockCDT *Lock;\n\n<scan class=comment>/* Exported entries */</scan>\n\n<a name=\"Function:forkThread\"><scan class=comment>/*\n * Function: forkThread\n * Usage: thread = forkThread(fn, data);\n * -------------------------------------\n * Forks a new thread to invokes the specified function, passing data as an\n * argument.  Threads created by forkThread become dormant on completion\n * and wait for the client to synchronize with them using a joinThread\n * operation.\n */\n</scan>\nThread forkThread(proc fn, void *data);\n\n<a name=\"Function:joinThread\"><scan class=comment>/*\n * Function: joinThread\n * Usage: joinThread(thread);\n * --------------------------\n * Waits for the specified thread to finish before proceeding.\n */\n</scan>\nvoid joinThread(Thread thread);\n\n<a name=\"Function:yield\"><scan class=comment>/*\n * Function: yield\n * Usage: yield();\n * ---------------\n * Yields the processor to allow another thread to run.\n */\n</scan>\nvoid yield(void);\n\n<a name=\"Function:getCurrentThread\"><scan class=comment>/*\n * Function: getCurrentThread\n * Usage: self = getCurrentThread();\n * ---------------------------------\n * Returns the currently executing thread.\n */\n</scan>\nThread getCurrentThread(void);\n\n<a name=\"Function:setThreadName\"><scan class=comment>/*\n * Function: setThreadName\n * Usage: setThreadName(thread, name);\n * -----------------------------------\n * Sets the name of a thread to the given string.  This name is used\n * primarily for debugging purposes.\n */\n</scan>\nvoid setThreadName(Thread thread, string name);\n\n<a name=\"Function:getThreadName\"><scan class=comment>/*\n * Function: getThreadName\n * Usage: name = getThreadName(thread);\n * ------------------------------------\n * Returns the name of the specified thread.  If no name has been set for\n * the thread, this function returns a string in the form Thread&lt;xxx&gt;,\n * where xxx is an integer uniquely identifying the thread.\n */\n</scan>\nstring getThreadName(Thread thread);\n\n<a name=\"Function:newLock\"><scan class=comment>/*\n * Function: newLock\n * Usage: lock = newLock();\n * ------------------------\n * Creates a new Lock object.\n */\n</scan>\nLock newLock(void);\n\n<a name=\"Macro:synchronized\"><scan class=comment>/*\n * Macro: synchronized\n * Usage: synchronized (lock) { . . . }\n * ------------------------------------\n * Defines a critical section protected by the specified lock.  The general\n * strategy for using this facility is shown in the following paradigmatic\n * pattern:\n *\n *    synchronized (lock) {\n *       . . . statements in the critical section . . .\n *    }\n */\n</scan>\n#define synchronized(lock) for ( ; startSync(lock) ; endSync(lock))\n\n<a name=\"Function:waitThread\"><scan class=comment>/*\n * Function: waitThread\n * Usage: waitThread(lock);\n * ------------------------\n * Waits for some other thread to issue a call to signalThread on this\n * lock.  This call requires that the lock be owned by the calling thread. \n * The effect of this function is to release the lock and then wait until\n * the desired signalThread operation occurs, at which point the lock is\n * reacquired and control passes to the statement following the waitThread.\n *\n * The waitThread function is useful only if the call is embedded inside a\n * while loop that checks a condition before proceeding.  That while\n * statement must itself be embedded inside a synchronized statement that\n * acquires the lock.  Thus, the standard paradigm for using the waitThread\n * function looks like this:\n *\n *    synchronized (lock) {\n *        while (conditional test) {\n *            waitThread(lock);\n *        }\n *        . . . code to manipulate the locked resource . . .\n *    }\n */\n</scan>\nvoid waitThread(Lock lock);\n\n<a name=\"Function:signalThread\"><scan class=comment>/*\n * Function: signalThread\n * Usage: signalThread(lock);\n * --------------------------\n * Signals all threads waiting on the lock so that they wake up and recheck\n * the corresponding condition.\n */\n</scan>\nvoid signalThread(Lock lock);\n\n<scan class=comment>/* Internal entry points -- see implementation for details */</scan>\n\nbool startSync(Lock lock);\nvoid endSync(Lock lock);\nvoid lockInternal(Lock lock);\nvoid unlockInternal(Lock lock);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/thread.html",
    "content": "<html>\n<head>\n<title>thread.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><a href=\"thread-h.html\"><code>thread.h</code></a></h1>\nThis interface exports a platform-independent thread abstraction,\nalong with simple functions for concurrency control.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Types</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:Thread\">Thread</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>The <code>Thread</code> type is used to represent a <i>thread,</i> which is a lightweight process running in the same address space as the creator.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:Lock\">Lock</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>The <code>Lock</code> type is used to manage concurrent access to some data structure within an application.</td></tr>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:forkThread\">forkThread(fn,&nbsp;data)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Forks a new thread to invokes the specified function, passing <code>data</code> as an argument.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:joinThread\">joinThread(thread)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Waits for the specified thread to finish before proceeding.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:yield\">yield()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Yields the processor to allow another thread to run.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getCurrentThread\">getCurrentThread()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the currently executing thread.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setThreadName\">setThreadName(thread,&nbsp;name)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the name of a thread to the given string.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getThreadName\">getThreadName(thread)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the name of the specified thread.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newLock\">newLock()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a new <code>Lock</code> object.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:waitThread\">waitThread(lock)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Waits for some other thread to issue a call to <code>signalThread</code> on this lock.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:signalThread\">signalThread(lock)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Signals all threads waiting on the lock so that they wake up and recheck the corresponding condition.</td></tr>\n</table>\n<h2>Type detail</h2>\n<hr>\n<a name=\"Type:Thread\"></a>\n<pre class=detailCode>\ntypedef struct ThreadCDT *Thread;\n</pre>\n<div class=detailHTML>\nThe <code>Thread</code> type is used to represent a <i>thread,</i>\nwhich is a lightweight process running in the same address space\nas the creator.\n</div>\n<hr>\n<a name=\"Type:Lock\"></a>\n<pre class=detailCode>\ntypedef struct LockCDT *Lock;\n</pre>\n<div class=detailHTML>\nThe <code>Lock</code> type is used to manage concurrent access\nto some data structure within an application.  Only one thread\ncan hold a lock at any point in time; other threads seeking to\ngain access queue on the lock until it is released by the thread\nthat originally obtained it.  The general strategy for using a\nlock is to use the <code>synchronized</code> statement to\nprotect a critical region of code, as illustrated in the\ndiscussion of <code>synchronized</code> later in this file.\n</div>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:forkThread\"></a>\n<pre class=detailCode>\nThread forkThread(proc fn, void *data);\n</pre>\n<div class=detailHTML>\nForks a new thread to invokes the specified function, passing\n<code>data</code> as an argument.  Threads created by\n<code>forkThread</code> become dormant on completion and\nwait for the client to synchronize with them using a\n<code>joinThread</code> operation.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nthread = forkThread(fn, data);\n</pre>\n<hr>\n<a name=\"Function:joinThread\"></a>\n<pre class=detailCode>\nvoid joinThread(Thread thread);\n</pre>\n<div class=detailHTML>\nWaits for the specified thread to finish before proceeding.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\njoinThread(thread);\n</pre>\n<hr>\n<a name=\"Function:yield\"></a>\n<pre class=detailCode>\nvoid yield(void);\n</pre>\n<div class=detailHTML>\nYields the processor to allow another thread to run.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nyield();\n</pre>\n<hr>\n<a name=\"Function:getCurrentThread\"></a>\n<pre class=detailCode>\nThread getCurrentThread(void);\n</pre>\n<div class=detailHTML>\nReturns the currently executing thread.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nself = getCurrentThread();\n</pre>\n<hr>\n<a name=\"Function:setThreadName\"></a>\n<pre class=detailCode>\nvoid setThreadName(Thread thread, string name);\n</pre>\n<div class=detailHTML>\nSets the name of a thread to the given string.  This name\nis used primarily for debugging purposes.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetThreadName(thread, name);\n</pre>\n<hr>\n<a name=\"Function:getThreadName\"></a>\n<pre class=detailCode>\nstring getThreadName(Thread thread);\n</pre>\n<div class=detailHTML>\nReturns the name of the specified thread.  If no name has been\nset for the thread, this function returns a string in the form\n<code>Thread&lt;xxx&gt;</code>, where <code>xxx</code> is an\ninteger uniquely identifying the thread.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nname = getThreadName(thread);\n</pre>\n<hr>\n<a name=\"Function:newLock\"></a>\n<pre class=detailCode>\nLock newLock(void);\n</pre>\n<div class=detailHTML>\nCreates a new <code>Lock</code> object.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nlock = newLock();\n</pre>\n<hr>\n<a name=\"Function:waitThread\"></a>\n<pre class=detailCode>\nvoid waitThread(Lock lock);\n</pre>\n<div class=detailHTML>\nWaits for some other thread to issue a call to <code>signalThread</code>\non this lock.  This call requires that the lock be owned by the\ncalling thread.  The effect of this function is to release the\nlock and then wait until the desired <code>signalThread</code> operation\noccurs, at which point the lock is reacquired and control passes\nto the statement following the <code>waitThread</code>.\n\n<p>The <code>waitThread</code> function is useful only if the call is\nembedded inside a <code>while</code> loop that checks a condition\nbefore proceeding.  That <code>while</code> statement must itself\nbe embedded inside a <code>synchronized</code> statement that\nacquires the lock.  Thus, the standard paradigm for using the\n<code>waitThread</code> function looks like this:<p>\n\n<pre>\n   synchronized (lock) {\n       while (conditional test) {\n           waitThread(lock);\n       }\n       . . . code to manipulate the locked resource . . .\n   }\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nwaitThread(lock);\n</pre>\n<hr>\n<a name=\"Function:signalThread\"></a>\n<pre class=detailCode>\nvoid signalThread(Lock lock);\n</pre>\n<div class=detailHTML>\nSignals all threads waiting on the lock so that they wake up and\nrecheck the corresponding condition.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsignalThread(lock);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/tokenscanner-h.html",
    "content": "<html>\n<head>\n<title>../tokenscanner.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: tokenscanner.h\n * --------------------\n * This interface exports a scanner facility that divides a string into\n * individual tokens.\n */\n</scan>\n#ifndef _tokenscanner_h\n#define _tokenscanner_h\n\n#include \"cslib.h\"\n\n<a name=\"Type:TokenType\"><scan class=comment>/*\n * Type: TokenType\n * ---------------\n * This enumerated type defines the values of the getTokenType method.\n */\n</scan>\ntypedef enum { SEPARATOR, WORD, NUMBER, STRING, OPERATOR } TokenType;\n\n<a name=\"Type:TokenScanner\"><scan class=comment>/*\n * Type: TokenScanner\n * ------------------\n * This abstract type divides a string into individual tokens.  The typical\n * use of the TokenScanner ADT is illustrated by the following pattern,\n * which reads the tokens in the string variable input:\n *\n *    string token;\n *    TokenScanner scanner;\n *\n *    scanner = newTokenScanner();\n *    setInputString(scanner, input);\n *    while (hasMoreTokens(scanner)) {\n *       token = nextToken(scanner);\n *       . . . process the token . . .\n *       freeBlock(token);\n *    }\n *    freeTokenScanner(scanner);\n *\n * The TokenScanner ADT exports several additional methods that give\n * clients more control over its behavior.  Those methods are described\n * individually in the documentation.\n */\n</scan>\ntypedef struct TokenScannerCDT *TokenScanner;\n\n<a name=\"Function:newTokenScanner\"><scan class=comment>/*\n * Function: newTokenScanner\n * Usage: scanner = newTokenScanner();\n * -----------------------------------\n * Creates a new TokenScanner with an empty token stream.  Before using the\n * scanner, an input stream must be set by calling either setInputString or\n * setInputFile.\n */\n</scan>\nTokenScanner newTokenScanner(void);\n\n<a name=\"Function:freeTokenScanner\"><scan class=comment>/*\n * Function: freeTokenScanner\n * Usage: freeTokenScanner(scanner);\n * ---------------------------------\n * Frees the storage associated with the TokenScanner.\n */\n</scan>\nvoid freeTokenScanner();\n\n<a name=\"Function:setInputString\"><scan class=comment>/*\n * Function: setInputString\n * Usage: setInputString(scanner, str);\n * ------------------------------------\n * Sets the token stream for this scanner to the specified string.\n */\n</scan>\nvoid setInputString(TokenScanner scanner, string str);\n\n<a name=\"Function:setInputFile\"><scan class=comment>/*\n * Function: setInputFile\n * Usage: setInputFile(scanner, infile);\n * -------------------------------------\n * Sets the token stream for this scanner to the specified file, which must\n * be open for input.\n */\n</scan>\nvoid setInputFile(TokenScanner scanner, FILE *infile);\n\n<a name=\"Function:hasMoreTokens\"><scan class=comment>/*\n * Function: hasMoreTokens\n * Usage: if (hasMoreTokens(scanner)) . . .\n * ----------------------------------------\n * Returns true if there are additional tokens for this scanner to read.\n */\n</scan>\nbool hasMoreTokens(TokenScanner scanner);\n\n<a name=\"Function:nextToken\"><scan class=comment>/*\n * Function: nextToken\n * Usage: token = nextToken(scanner);\n * ----------------------------------\n * Returns the next token from this   If nextToken is called when no tokens\n * are available, it returns the empty string.\n */\n</scan>\nstring nextToken(TokenScanner scanner);\n\n<a name=\"Function:saveToken\"><scan class=comment>/*\n * Function: saveToken\n * Usage: saveToken(scanner, token);\n * ---------------------------------\n * Pushes the specified token back into this scanner's input stream.  On\n * the next call to nextToken, the scanner will return the saved token\n * without reading any additional characters from the token stream.\n */\n</scan>\nvoid saveToken(TokenScanner scanner, string token);\n\n<a name=\"Function:getPosition\"><scan class=comment>/*\n * Function: getPosition\n * Usage: pos = getPosition(scanner);\n * ----------------------------------\n * Returns the current position of the scanner in the input stream.  If\n * saveToken has been called, this position corresponds to the beginning of\n * the saved token.  If saveToken is called more than once, getPosition\n * returns -1.\n */\n</scan>\nint getPosition(TokenScanner scanner);\n\n<a name=\"Function:ignoreWhitespace\"><scan class=comment>/*\n * Function: ignoreWhitespace\n * Usage: ignoreWhitespace(scanner);\n * ---------------------------------\n * Tells the scanner to ignore whitespace characters.  By default, the\n * nextToken method treats whitespace characters (typically spaces and\n * tabs) just like any other punctuation mark and returns them as\n * single-character tokens.  Calling\n *\n *    ignoreWhitespace(scanner);\n *\n * changes this behavior so that the scanner ignore whitespace characters.\n */\n</scan>\nvoid ignoreWhitespace(TokenScanner scanner);\n\n<a name=\"Function:ignoreComments\"><scan class=comment>/*\n * Function: ignoreComments\n * Usage: ignoreComments(scanner);\n * -------------------------------\n * Tells the scanner to ignore comments.  The scanner package recognizes\n * both the slash-star and slash-slash comment format from the C-based\n * family of languages.  Calling\n *\n *    ignoreComments(scanner);\n *\n * sets the parser to ignore comments.\n */\n</scan>\nvoid ignoreComments(TokenScanner scanner);\n\n<a name=\"Function:scanNumbers\"><scan class=comment>/*\n * Function: scanNumbers\n * Usage: scanNumbers(scanner);\n * ----------------------------\n * Controls how the scanner treats tokens that begin with a digit.  By\n * default, the nextToken method treats numbers and letters identically and\n * therefore does not provide any special processing for numbers.  Calling\n *\n *    scanNumbers(scanner);\n *\n * changes this behavior so that nextToken returns the longest substring\n * that can be interpreted as a real number.\n */\n</scan>\nvoid scanNumbers(TokenScanner scanner);\n\n<a name=\"Function:scanStrings\"><scan class=comment>/*\n * Function: scanStrings\n * Usage: scanStrings(scanner);\n * ----------------------------\n * Controls how the scanner treats tokens enclosed in quotation marks.  By\n * default, quotation marks (either single or double) are treated just like\n * any other punctuation character.  Calling\n *\n *    scanStrings(scanner);\n *\n * changes this assumption so that nextToken returns a single token\n * consisting of all characters through the matching quotation mark.  The\n * quotation marks are returned as part of the scanned token so that\n * clients can differentiate strings from other token types.\n */\n</scan>\nvoid scanStrings(TokenScanner scanner);\n\n<a name=\"Function:addWordCharacters\"><scan class=comment>/*\n * Function: addWordCharacters\n * Usage: addWordCharacters(scanner, str);\n * ---------------------------------------\n * Adds the characters in str to the set of characters legal in a WORD\n * token.  For example, calling addWordCharacters(\"_\") adds the underscore\n * to the set of characters that are accepted as part of a word.\n */\n</scan>\nvoid addWordCharacters(TokenScanner scanner, string str);\n\n<a name=\"Function:isWordCharacter\"><scan class=comment>/*\n * Function: isWordCharacter\n * Usage: if (isWordCharacter(scanner, ch)) . . .\n * ----------------------------------------------\n * Returns true if the character is valid in a word.\n */\n</scan>\nbool isWordCharacter(TokenScanner scanner, char ch);\n\n<a name=\"Function:addOperator\"><scan class=comment>/*\n * Function: addOperator\n * Usage: addOperator(scanner, op);\n * --------------------------------\n * Defines a new multicharacter operator.  Whenever you call nextToken when\n * the input stream contains operator characters, the scanner returns the\n * longest possible operator string that can be read at that point.\n */\n</scan>\nvoid addOperator(TokenScanner scanner, string op);\n\n<a name=\"Function:verifyToken\"><scan class=comment>/*\n * Function: verifyToken\n * Usage: verifyToken(scanner, expected);\n * --------------------------------------\n * Reads the next token and makes sure it matches the string expected.  If\n * it does not, verifyToken throws an error.\n */\n</scan>\nvoid verifyToken(TokenScanner scanner, string expected);\n\n<a name=\"Function:getTokenType\"><scan class=comment>/*\n * Function: getTokenType\n * Usage: type = getTokenType(scanner, token);\n * -------------------------------------------\n * Returns the type of this token.  This type will match one of the\n * following enumerated type constants: EOF, SEPARATOR, WORD, NUMBER,\n * STRING, or OPERATOR.\n */\n</scan>\nTokenType getTokenType(TokenScanner scanner, string token);\n\n<a name=\"Function:getStringValue\"><scan class=comment>/*\n * Function: getStringValue\n * Usage: str = getStringValue(token);\n * -----------------------------------\n * Returns the string value of a token.  This value is formed by removing\n * any surrounding quotation marks and replacing escape sequences by the\n * appropriate characters.\n */\n</scan>\nstring getStringValue(string token);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/tokenscanner.html",
    "content": "<html>\n<head>\n<title>tokenscanner.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><a href=\"tokenscanner-h.html\"><code>tokenscanner.h</code></a></h1>\nThis interface exports a scanner facility that divides a string into\nindividual tokens.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Types</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:TokenType\">TokenType</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This enumerated type defines the values of the <code>getTokenType</code> method.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:TokenScanner\">TokenScanner</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This abstract type divides a string into individual tokens.</td></tr>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newTokenScanner\">newTokenScanner()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a new <code>TokenScanner</code> with an empty token stream.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:freeTokenScanner\">freeTokenScanner(scanner)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Frees the storage associated with the <code>TokenScanner</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setInputString\">setInputString(scanner,&nbsp;str)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the token stream for this scanner to the specified string.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setInputFile\">setInputFile(scanner,&nbsp;infile)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the token stream for this scanner to the specified file, which must be open for input.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:hasMoreTokens\">hasMoreTokens(scanner)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if there are additional tokens for this scanner to read.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:nextToken\">nextToken(scanner)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the next token from this   If <code>nextToken</code> is called when no tokens are available, it returns the empty string.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:saveToken\">saveToken(scanner,&nbsp;token)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Pushes the specified token back into this scanner's input stream.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getPosition\">getPosition(scanner)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the current position of the scanner in the input stream.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:ignoreWhitespace\">ignoreWhitespace(scanner)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Tells the scanner to ignore whitespace characters.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:ignoreComments\">ignoreComments(scanner)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Tells the scanner to ignore comments.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:scanNumbers\">scanNumbers(scanner)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Controls how the scanner treats tokens that begin with a digit.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:scanStrings\">scanStrings(scanner)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Controls how the scanner treats tokens enclosed in quotation marks.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:addWordCharacters\">addWordCharacters(scanner,&nbsp;str)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Adds the characters in <code>str</code> to the set of characters legal in a <code>WORD</code> token.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:isWordCharacter\">isWordCharacter(scanner,&nbsp;ch)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the character is valid in a word.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:addOperator\">addOperator(scanner,&nbsp;op)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Defines a new multicharacter operator.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:verifyToken\">verifyToken(scanner,&nbsp;expected)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Reads the next token and makes sure it matches the string <code>expected</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getTokenType\">getTokenType(scanner,&nbsp;token)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the type of this token.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getStringValue\">getStringValue(token)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the string value of a token.</td></tr>\n</table>\n<h2>Type detail</h2>\n<hr>\n<a name=\"Type:TokenType\"></a>\n<pre class=detailCode>\ntypedef enum { SEPARATOR, WORD, NUMBER, STRING, OPERATOR } TokenType;\n</pre>\n<div class=detailHTML>\nThis enumerated type defines the values of the\n<code>getTokenType</code> method.\n</div>\n<hr>\n<a name=\"Type:TokenScanner\"></a>\n<pre class=detailCode>\ntypedef struct TokenScannerCDT *TokenScanner;\n</pre>\n<div class=detailHTML>\nThis abstract type divides a string into individual tokens.  The\ntypical use of the <code>TokenScanner</code> ADT is illustrated by\nthe following pattern, which reads the tokens in the string variable\n<code>input</code>:\n\n<pre>\n   string token;\n   TokenScanner scanner;\n\n   scanner = newTokenScanner();\n   setInputString(scanner, input);\n   while (hasMoreTokens(scanner)) {\n      token = nextToken(scanner);\n      . . . process the token . . .\n      freeBlock(token);\n   }\n   freeTokenScanner(scanner);\n</pre>\n\nThe <code>TokenScanner</code> ADT exports several additional methods\nthat give clients more control over its behavior.  Those methods are\ndescribed individually in the documentation.\n</div>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:newTokenScanner\"></a>\n<pre class=detailCode>\nTokenScanner newTokenScanner(void);\n</pre>\n<div class=detailHTML>\nCreates a new <code>TokenScanner</code> with an empty token stream.\nBefore using the scanner, an input stream must be set by calling\neither <code>setInputString</code> or <code>setInputFile</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nscanner = newTokenScanner();\n</pre>\n<hr>\n<a name=\"Function:freeTokenScanner\"></a>\n<pre class=detailCode>\nvoid freeTokenScanner();\n</pre>\n<div class=detailHTML>\nFrees the storage associated with the <code>TokenScanner</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfreeTokenScanner(scanner);\n</pre>\n<hr>\n<a name=\"Function:setInputString\"></a>\n<pre class=detailCode>\nvoid setInputString(TokenScanner scanner, string str);\n</pre>\n<div class=detailHTML>\nSets the token stream for this scanner to the specified string.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetInputString(scanner, str);\n</pre>\n<hr>\n<a name=\"Function:setInputFile\"></a>\n<pre class=detailCode>\nvoid setInputFile(TokenScanner scanner, FILE *infile);\n</pre>\n<div class=detailHTML>\nSets the token stream for this scanner to the specified file,\nwhich must be open for input.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetInputFile(scanner, infile);\n</pre>\n<hr>\n<a name=\"Function:hasMoreTokens\"></a>\n<pre class=detailCode>\nbool hasMoreTokens(TokenScanner scanner);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if there are additional tokens for this\nscanner to read.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (hasMoreTokens(scanner)) . . .\n</pre>\n<hr>\n<a name=\"Function:nextToken\"></a>\n<pre class=detailCode>\nstring nextToken(TokenScanner scanner);\n</pre>\n<div class=detailHTML>\nReturns the next token from this   If <code>nextToken</code>\nis called when no tokens are available, it returns the empty string.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ntoken = nextToken(scanner);\n</pre>\n<hr>\n<a name=\"Function:saveToken\"></a>\n<pre class=detailCode>\nvoid saveToken(TokenScanner scanner, string token);\n</pre>\n<div class=detailHTML>\nPushes the specified token back into this scanner's input stream.\nOn the next call to <code>nextToken</code>, the scanner will return\nthe saved token without reading any additional characters from the\ntoken stream.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsaveToken(scanner, token);\n</pre>\n<hr>\n<a name=\"Function:getPosition\"></a>\n<pre class=detailCode>\nint getPosition(TokenScanner scanner);\n</pre>\n<div class=detailHTML>\nReturns the current position of the scanner in the input stream.\nIf <code>saveToken</code> has been called, this position corresponds\nto the beginning of the saved token.  If <code>saveToken</code> is\ncalled more than once, <code>getPosition</code> returns -1.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\npos = getPosition(scanner);\n</pre>\n<hr>\n<a name=\"Function:ignoreWhitespace\"></a>\n<pre class=detailCode>\nvoid ignoreWhitespace(TokenScanner scanner);\n</pre>\n<div class=detailHTML>\nTells the scanner to ignore whitespace characters.  By default,\nthe <code>nextToken</code> method treats whitespace characters\n(typically spaces and tabs) just like any other punctuation mark\nand returns them as single-character tokens.\nCalling\n\n<pre>\n   ignoreWhitespace(scanner);\n</pre>\n\nchanges this behavior so that the scanner ignore whitespace characters.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nignoreWhitespace(scanner);\n</pre>\n<hr>\n<a name=\"Function:ignoreComments\"></a>\n<pre class=detailCode>\nvoid ignoreComments(TokenScanner scanner);\n</pre>\n<div class=detailHTML>\nTells the scanner to ignore comments.  The scanner package recognizes\nboth the slash-star and slash-slash comment format from the C-based\nfamily of languages.  Calling\n\n<pre>\n   ignoreComments(scanner);\n</pre>\n\nsets the parser to ignore comments.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nignoreComments(scanner);\n</pre>\n<hr>\n<a name=\"Function:scanNumbers\"></a>\n<pre class=detailCode>\nvoid scanNumbers(TokenScanner scanner);\n</pre>\n<div class=detailHTML>\nControls how the scanner treats tokens that begin with a digit.  By\ndefault, the <code>nextToken</code> method treats numbers and letters\nidentically and therefore does not provide any special processing for\nnumbers.  Calling\n\n<pre>\n   scanNumbers(scanner);\n</pre>\n\nchanges this behavior so that <code>nextToken</code> returns the\nlongest substring that can be interpreted as a real number.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nscanNumbers(scanner);\n</pre>\n<hr>\n<a name=\"Function:scanStrings\"></a>\n<pre class=detailCode>\nvoid scanStrings(TokenScanner scanner);\n</pre>\n<div class=detailHTML>\nControls how the scanner treats tokens enclosed in quotation marks.  By\ndefault, quotation marks (either single or double) are treated just like\nany other punctuation character.  Calling\n\n<pre>\n   scanStrings(scanner);\n</pre>\n\nchanges this assumption so that <code>nextToken</code> returns a single\ntoken consisting of all characters through the matching quotation mark.\nThe quotation marks are returned as part of the scanned token so that\nclients can differentiate strings from other token types.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nscanStrings(scanner);\n</pre>\n<hr>\n<a name=\"Function:addWordCharacters\"></a>\n<pre class=detailCode>\nvoid addWordCharacters(TokenScanner scanner, string str);\n</pre>\n<div class=detailHTML>\nAdds the characters in <code>str</code> to the set of characters\nlegal in a <code>WORD</code> token.  For example, calling\n<code>addWordCharacters(\"_\")</code> adds the underscore to the\nset of characters that are accepted as part of a word.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\naddWordCharacters(scanner, str);\n</pre>\n<hr>\n<a name=\"Function:isWordCharacter\"></a>\n<pre class=detailCode>\nbool isWordCharacter(TokenScanner scanner, char ch);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the character is valid in a word.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (isWordCharacter(scanner, ch)) . . .\n</pre>\n<hr>\n<a name=\"Function:addOperator\"></a>\n<pre class=detailCode>\nvoid addOperator(TokenScanner scanner, string op);\n</pre>\n<div class=detailHTML>\nDefines a new multicharacter operator.  Whenever you call\n<code>nextToken</code> when the input stream contains operator\ncharacters, the scanner returns the longest possible operator\nstring that can be read at that point.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\naddOperator(scanner, op);\n</pre>\n<hr>\n<a name=\"Function:verifyToken\"></a>\n<pre class=detailCode>\nvoid verifyToken(TokenScanner scanner, string expected);\n</pre>\n<div class=detailHTML>\nReads the next token and makes sure it matches the string\n<code>expected</code>.  If it does not, <code>verifyToken</code>\nthrows an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nverifyToken(scanner, expected);\n</pre>\n<hr>\n<a name=\"Function:getTokenType\"></a>\n<pre class=detailCode>\nTokenType getTokenType(TokenScanner scanner, string token);\n</pre>\n<div class=detailHTML>\nReturns the type of this token.  This type will match one of the\nfollowing enumerated type constants: <code>EOF</code>,\n<code>SEPARATOR</code>, <code>WORD</code>, <code>NUMBER</code>,\n<code>STRING</code>, or <code>OPERATOR</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ntype = getTokenType(scanner, token);\n</pre>\n<hr>\n<a name=\"Function:getStringValue\"></a>\n<pre class=detailCode>\nstring getStringValue(string token);\n</pre>\n<div class=detailHTML>\nReturns the string value of a token.  This value is formed by removing\nany surrounding quotation marks and replacing escape sequences by the\nappropriate characters.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstr = getStringValue(token);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/unittest-h.html",
    "content": "<html>\n<head>\n<title>../unittest.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: unittest.h\n * ----------------\n * This interface exports several functions that facilitate writing unit\n * tests for packages.\n */\n</scan>\n#ifndef _unittest_h\n#define _unittest_h\n\n#include &lt;stdarg.h&gt;\n#include \"cslib.h\"\n#include \"exception.h\"\n\nextern void uTTest(string exp, string value, ...);\n\n<a name=\"Function:trace\"><scan class=comment>/*\n * Function: trace\n * Usage: trace(exp);\n * ------------------\n * Tests to make sure that a procedure does not generate any calls to\n * error.\n */\n</scan>\n#define trace(exp) { \\\n   try { \\\n      reportMessage(\"%s;\", #exp); \\\n      exp; \\\n   } catch (ErrorException) { \\\n      reportError(\"%s throws \\\"%s\\\"\", #exp, getExceptionValue()); \\\n   } endtry \\\n}\n\n<a name=\"Function:test\"><scan class=comment>/*\n * Function: test\n * Usage: test(exp, value);\n * ------------------------\n * Tests to make sure that a function computes a specified value.  The\n * first argument is an expression (typically a function call in the module\n * under test), and the second argument is the expected value, which must\n * be of one of the following types:\n *\n *  bool char double int string\n */\n</scan>\n#define test(exp, value) { \\\n   try { \\\n      uTTest(#exp, #value, exp, value); \\\n   } catch (ErrorException) { \\\n      reportError(\"%s throws \\\"%s\\\"\", #exp, getExceptionValue()); \\\n   } endtry \\\n}\n\n<a name=\"Function:testError\"><scan class=comment>/*\n * Function: testError\n * Usage: testError(exp);\n * ----------------------\n * Tests to make sure that a method call generates an error.\n */\n</scan>\n#define testError(exp) { \\\n   int indent = getReportIndentation(); \\\n   try { \\\n      exp; \\\n      setReportIndentation(indent); \\\n      reportError(\"%s should generate an error\", #exp); \\\n   } catch (ErrorException) { \\\n      setReportIndentation(indent); \\\n      reportMessage(\"%s throws \\\"%s\\\"\", #exp, getExceptionValue()); \\\n   } catch (ANY) { \\\n      setReportIndentation(indent); \\\n      reportMessage(\"%s throws \\\"%s\\\"\", #exp, getExceptionName()); \\\n   } endtry \\\n}\n\n<a name=\"Function:testModule\"><scan class=comment>/*\n * Function: testModule\n * Usage: errorCount = testModule(name, fn);\n * -----------------------------------------\n * Runs the specified test method and generates a report.  The second\n * parameter must be the name of a test function inside the named package.\n */\n</scan>\nint testModule(string name, proc fn);\n\n<a name=\"Function:setVerboseTestingFlag\"><scan class=comment>/*\n * Function: setVerboseTestingFlag\n * Usage: setVerboseTestingFlag(flag);\n * -----------------------------------\n * Sets a global flag that determines whether the test process traces all\n * the test operations.\n */\n</scan>\nvoid setVerboseTestingFlag(bool flag);\n\n<a name=\"Function:getVerboseTestingFlag\"><scan class=comment>/*\n * Function: getVerboseTestingFlag\n * Usage: flag = getVerboseTestingFlag();\n * --------------------------------------\n * Returns the setting of the verbose testing flag.\n */\n</scan>\nbool getVerboseTestingFlag(void);\n\n<a name=\"Function:reportError\"><scan class=comment>/*\n * Function: reportError\n * Usage: reportError(msg, ...);\n * -----------------------------\n * Reports an error in the current package.  If msg is NULL, the error\n * counter is incremented, but no message is generated.\n */\n</scan>\nvoid reportError(string msg, ...);\n\n<a name=\"Function:reportMessage\"><scan class=comment>/*\n * Function: reportMessage\n * Usage: reportMessage(msg, ...);\n * -------------------------------\n * Generates a line of output if verbose tracing in enabled.\n */\n</scan>\nvoid reportMessage(string msg, ...);\n\n<a name=\"Function:setReportIndentation\"><scan class=comment>/*\n * Function: setReportIndentation\n * Usage: setReportIndentation(indent);\n * ------------------------------------\n * Sets the indentation in the reportError and reportMessage, which allows\n * test script designers to improve readability of the verbose output.  In\n * most cases, clients will not use setReportIndentation directly but will\n * instead rely on adjustReportIndentation.  This call, however, is\n * necessary for tests that throw errors or other exceptions.\n */\n</scan>\nvoid setReportIndentation(int indent);\n\n<a name=\"Function:getReportIndentation\"><scan class=comment>/*\n * Function: getReportIndentation\n * Usage: indent = getReportIndentation();\n * ---------------------------------------\n * Gets the current indentation used in the reportError and reportMessage\n * calls.  In most cases, clients will not use getReportIndentation\n * directly but will instead rely on adjustReportIndentation.\n */\n</scan>\nint getReportIndentation(void);\n\n<a name=\"Function:adjustReportIndentation\"><scan class=comment>/*\n * Function: adjustReportIndentation\n * Usage: adjustReportIndentation(delta);\n * --------------------------------------\n * Adjusts the indentation in the reportError and reportMessage calls to\n * improve readability of the verbose output.\n */\n</scan>\nvoid adjustReportIndentation(int delta);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/unittest.html",
    "content": "<html>\n<head>\n<title>unittest.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><a href=\"unittest-h.html\"><code>unittest.h</code></a></h1>\nThis interface exports several functions that facilitate writing unit\ntests for packages.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:trace\">trace(exp)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Tests to make sure that a procedure does not generate any calls to <code>error</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:test\">test(exp,&nbsp;value)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Tests to make sure that a function computes a specified value.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:testError\">testError(exp)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Tests to make sure that a method call generates an error.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:testModule\">testModule(name,&nbsp;fn)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Runs the specified test method and generates a report.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setVerboseTestingFlag\">setVerboseTestingFlag(flag)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets a global flag that determines whether the test process traces all the test operations.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getVerboseTestingFlag\">getVerboseTestingFlag()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the setting of the verbose testing flag.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:reportError\">reportError(msg,&nbsp;...)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Reports an error in the current package.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:reportMessage\">reportMessage(msg,&nbsp;...)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Generates a line of output if verbose tracing in enabled.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setReportIndentation\">setReportIndentation(indent)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the indentation in the <code>reportError</code> and <code>reportMessage</code>, which allows test script designers to improve readability of the verbose output.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:getReportIndentation\">getReportIndentation()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Gets the current indentation used in the <code>reportError</code> and <code>reportMessage</code> calls.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:adjustReportIndentation\">adjustReportIndentation(delta)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Adjusts the indentation in the <code>reportError</code> and <code>reportMessage</code> calls to improve readability of the verbose output.</td></tr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:trace\"></a>\n<pre class=detailCode>\n</pre>\n<div class=detailHTML>\nTests to make sure that a procedure does not generate any calls\nto <code>error</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ntrace(exp);\n</pre>\n<hr>\n<a name=\"Function:test\"></a>\n<pre class=detailCode>\n</pre>\n<div class=detailHTML>\nTests to make sure that a function computes a specified value.  The\nfirst argument is an expression (typically a function call in the\nmodule under test), and the second argument is the expected value,\nwhich must be of one of the following types:\n\n<p><ul>\n<li><code>bool</code>\n<li><code>char</code>\n<li><code>double</code>\n<li><code>int</code>\n<li><code>string</code>\n</ul>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ntest(exp, value);\n</pre>\n<hr>\n<a name=\"Function:testError\"></a>\n<pre class=detailCode>\n</pre>\n<div class=detailHTML>\nTests to make sure that a method call generates an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ntestError(exp);\n</pre>\n<hr>\n<a name=\"Function:testModule\"></a>\n<pre class=detailCode>\nint testModule(string name, proc fn);\n</pre>\n<div class=detailHTML>\nRuns the specified test method and generates a report.  The\nsecond parameter must be the name of a test function inside\nthe named package.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nerrorCount = testModule(name, fn);\n</pre>\n<hr>\n<a name=\"Function:setVerboseTestingFlag\"></a>\n<pre class=detailCode>\nvoid setVerboseTestingFlag(bool flag);\n</pre>\n<div class=detailHTML>\nSets a global flag that determines whether the test process\ntraces all the test operations.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetVerboseTestingFlag(flag);\n</pre>\n<hr>\n<a name=\"Function:getVerboseTestingFlag\"></a>\n<pre class=detailCode>\nbool getVerboseTestingFlag(void);\n</pre>\n<div class=detailHTML>\nReturns the setting of the verbose testing flag.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nflag = getVerboseTestingFlag();\n</pre>\n<hr>\n<a name=\"Function:reportError\"></a>\n<pre class=detailCode>\nvoid reportError(string msg, ...);\n</pre>\n<div class=detailHTML>\nReports an error in the current package.  If <code>msg</code> is\n<code>NULL</code>, the error counter is incremented, but no\nmessage is generated.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nreportError(msg, ...);\n</pre>\n<hr>\n<a name=\"Function:reportMessage\"></a>\n<pre class=detailCode>\nvoid reportMessage(string msg, ...);\n</pre>\n<div class=detailHTML>\nGenerates a line of output if verbose tracing in enabled.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nreportMessage(msg, ...);\n</pre>\n<hr>\n<a name=\"Function:setReportIndentation\"></a>\n<pre class=detailCode>\nvoid setReportIndentation(int indent);\n</pre>\n<div class=detailHTML>\nSets the indentation in the <code>reportError</code> and\n<code>reportMessage</code>, which allows test script designers\nto improve readability of the verbose output.  In most cases,\nclients will not use <code>setReportIndentation</code> directly\nbut will instead rely on <code>adjustReportIndentation</code>.\nThis call, however, is necessary for tests that throw errors\nor other exceptions.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetReportIndentation(indent);\n</pre>\n<hr>\n<a name=\"Function:getReportIndentation\"></a>\n<pre class=detailCode>\nint getReportIndentation(void);\n</pre>\n<div class=detailHTML>\nGets the current indentation used in the <code>reportError</code>\nand <code>reportMessage</code> calls.  In most cases, clients\nwill not use <code>getReportIndentation</code> directly but will\ninstead rely on <code>adjustReportIndentation</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nindent = getReportIndentation();\n</pre>\n<hr>\n<a name=\"Function:adjustReportIndentation\"></a>\n<pre class=detailCode>\nvoid adjustReportIndentation(int delta);\n</pre>\n<div class=detailHTML>\nAdjusts the indentation in the <code>reportError</code> and\n<code>reportMessage</code> calls to improve readability of\nthe verbose output.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nadjustReportIndentation(delta);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/vector-h.html",
    "content": "<html>\n<head>\n<title>../vector.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: vector.h\n * --------------\n * This interface exports an array-like indexed collection type.\n */\n</scan>\n#ifndef _vector_h_\n#define _vector_h_\n\n#include \"cslib.h\"\n#include \"generic.h\"\n\n<a name=\"Type:Vector\"><scan class=comment>/*\n * Type: Vector\n * ------------\n * This type defines the abstract vector type.\n */\n</scan>\ntypedef struct VectorCDT *Vector;\n\n<scan class=comment>/* Exported entries */</scan>\n\n<a name=\"Function:newVector\"><scan class=comment>/*\n * Function: newVector\n * Usage: vector = newVector();\n * ----------------------------\n * Returns an empty Vector.\n */\n</scan>\nVector newVector(void);\n\n<a name=\"Function:freeVector\"><scan class=comment>/*\n * Function: freeVector\n * Usage: freeVector(vector);\n * --------------------------\n * Frees the storage associated with vector.\n */\n</scan>\nvoid freeVector(Vector vector);\n\n<a name=\"Function:arrayToVector\"><scan class=comment>/*\n * Function: arrayToVector\n * Usage: vector = arrayToVector(array, n);\n * ----------------------------------------\n * Creates a vector from an array of void * pointers.  If the array\n * argument is NULL, this function returns NULL.\n */\n</scan>\nVector arrayToVector(void *array[], int n);\n\n<a name=\"Function:vectorToArray\"><scan class=comment>/*\n * Function: vectorToArray\n * Usage: array = vectorToArray(vector);\n * -------------------------------------\n * Returns a NULL-terminated array with the same elements as vector.  If\n * vector is NULL, this function returns NULL.\n */\n</scan>\nvoid **vectorToArray(Vector vector);\n\n<a name=\"Function:isEmpty\"><scan class=comment>/*\n * Function: isEmpty\n * Usage: if (isEmpty(vector)) . . .\n * ---------------------------------\n * Returns true if the vector is empty.\n */\n</scan>\nbool isEmptyVector(Vector vector);\n\n<a name=\"Function:size\"><scan class=comment>/*\n * Function: size\n * Usage: n = size(vector);\n * ------------------------\n * Returns the number of elements in the vector.\n */\n</scan>\nint sizeVector(Vector vector);\n\n<a name=\"Function:clear\"><scan class=comment>/*\n * Function: clear\n * Usage: clear(vector);\n * ---------------------\n * Removes all elements from the vector.\n */\n</scan>\nvoid clearVector(Vector vector);\n\n<a name=\"Function:clone\"><scan class=comment>/*\n * Function: clone\n * Usage: newvec = clone(vector);\n * ------------------------------\n * Creates a copy of the vector.  The clone function copies only the first\n * level of the structure and does not copy the individual elements.\n */\n</scan>\nVector cloneVector(Vector vector);\n\n<a name=\"Function:get\"><scan class=comment>/*\n * Function: get\n * Usage: value = get(vector, index);\n * ----------------------------------\n * Gets the element at the specified index position, raising an error if\n * the index is out of range.\n */\n</scan>\nvoid *getVector(Vector vector, int index);\n\n<a name=\"Function:set\"><scan class=comment>/*\n * Function: set\n * Usage: set(vector, index, value);\n * ---------------------------------\n * Sets the element at the specified index position, raising an error if\n * the index is out of range.\n */\n</scan>\nvoid setVector(Vector vector, int index, void *value);\n\n<a name=\"Function:add\"><scan class=comment>/*\n * Function: add\n * Usage: add(vector, value);\n * --------------------------\n * Adds a new value to the end of the vector.\n */\n</scan>\nvoid addVector(Vector vector, void *value);\n\n<a name=\"Function:insert\"><scan class=comment>/*\n * Function: insert\n * Usage: insert(vector, index, value);\n * ------------------------------------\n * Inserts a new value before the specified index position.\n */\n</scan>\nvoid insert(Vector vector, int index, void *value);\n\n<a name=\"Function:remove\"><scan class=comment>/*\n * Function: remove\n * Usage: remove(vector, index);\n * -----------------------------\n * Deletes the element at the specified index position.\n */\n</scan>\nvoid removeVector(Vector vector, int index);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/doc/vector.html",
    "content": "<html>\n<head>\n<title>vector.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"images/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>cslib</code> package\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><a href=\"vector-h.html\"><code>vector.h</code></a></h1>\nThis interface exports an array-like indexed collection type.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Type</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Type:Vector\">Vector</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This type defines the abstract vector type.</td></tr>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:newVector\">newVector()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns an empty <code>Vector</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:freeVector\">freeVector(vector)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Frees the storage associated with vector.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:arrayToVector\">arrayToVector(array,&nbsp;n)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a vector from an array of <code>void&nbsp;*</code> pointers.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:vectorToArray\">vectorToArray(vector)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a <code>NULL</code>-terminated array with the same elements as vector.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:isEmpty\">isEmpty(vector)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the vector is empty.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:size\">size(vector)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the number of elements in the vector.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:clear\">clear(vector)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Removes all elements from the vector.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:clone\">clone(vector)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a copy of the vector.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:get\">get(vector,&nbsp;index)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Gets the element at the specified index position, raising an error if the index is out of range.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:set\">set(vector,&nbsp;index,&nbsp;value)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the element at the specified index position, raising an error if the index is out of range.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:add\">add(vector,&nbsp;value)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Adds a new value to the end of the vector.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:insert\">insert(vector,&nbsp;index,&nbsp;value)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Inserts a new value before the specified index position.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:remove\">remove(vector,&nbsp;index)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Deletes the element at the specified index position.</td></tr>\n</table>\n<h2>Type detail</h2>\n<hr>\n<a name=\"Type:Vector\"></a>\n<pre class=detailCode>\ntypedef struct VectorCDT *Vector;\n</pre>\n<div class=detailHTML>\nThis type defines the abstract vector type.\n</div>\n<hr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:newVector\"></a>\n<pre class=detailCode>\nVector newVector(void);\n</pre>\n<div class=detailHTML>\nReturns an empty <code>Vector</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvector = newVector();\n</pre>\n<hr>\n<a name=\"Function:freeVector\"></a>\n<pre class=detailCode>\nvoid freeVector(Vector vector);\n</pre>\n<div class=detailHTML>\nFrees the storage associated with vector.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfreeVector(vector);\n</pre>\n<hr>\n<a name=\"Function:arrayToVector\"></a>\n<pre class=detailCode>\nVector arrayToVector(void *array[], int n);\n</pre>\n<div class=detailHTML>\nCreates a vector from an array of <code>void&nbsp;*</code> pointers.\nIf the <code>array</code> argument is <code>NULL</code>, this\nfunction returns <code>NULL</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvector = arrayToVector(array, n);\n</pre>\n<hr>\n<a name=\"Function:vectorToArray\"></a>\n<pre class=detailCode>\nvoid **vectorToArray(Vector vector);\n</pre>\n<div class=detailHTML>\nReturns a <code>NULL</code>-terminated array with the same\nelements as vector.  If vector is <code>NULL</code>, this\nfunction returns <code>NULL</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\narray = vectorToArray(vector);\n</pre>\n<hr>\n<a name=\"Function:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty(Vector vector);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the vector is empty.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (isEmpty(vector)) . . .\n</pre>\n<hr>\n<a name=\"Function:size\"></a>\n<pre class=detailCode>\nint size(Vector vector);\n</pre>\n<div class=detailHTML>\nReturns the number of elements in the vector.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nn = size(vector);\n</pre>\n<hr>\n<a name=\"Function:clear\"></a>\n<pre class=detailCode>\nvoid clear(Vector vector);\n</pre>\n<div class=detailHTML>\nRemoves all elements from the vector.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nclear(vector);\n</pre>\n<hr>\n<a name=\"Function:clone\"></a>\n<pre class=detailCode>\nVector clone(Vector vector);\n</pre>\n<div class=detailHTML>\nCreates a copy of the vector.  The <code>clone</code> function copies\nonly the first level of the structure and does not copy the individual\nelements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nnewvec = clone(vector);\n</pre>\n<hr>\n<a name=\"Function:get\"></a>\n<pre class=detailCode>\nvoid *get(Vector vector, int index);\n</pre>\n<div class=detailHTML>\nGets the element at the specified index position, raising an\nerror if the index is out of range.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvalue = get(vector, index);\n</pre>\n<hr>\n<a name=\"Function:set\"></a>\n<pre class=detailCode>\nvoid set(Vector vector, int index, void *value);\n</pre>\n<div class=detailHTML>\nSets the element at the specified index position, raising an\nerror if the index is out of range.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset(vector, index, value);\n</pre>\n<hr>\n<a name=\"Function:add\"></a>\n<pre class=detailCode>\nvoid add(Vector vector, void *value);\n</pre>\n<div class=detailHTML>\nAdds a new value to the end of the vector.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nadd(vector, value);\n</pre>\n<hr>\n<a name=\"Function:insert\"></a>\n<pre class=detailCode>\nvoid insert(Vector vector, int index, void *value);\n</pre>\n<div class=detailHTML>\nInserts a new value before the specified index position.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ninsert(vector, index, value);\n</pre>\n<hr>\n<a name=\"Function:remove\"></a>\n<pre class=detailCode>\nvoid remove(Vector vector, int index);\n</pre>\n<div class=detailHTML>\nDeletes the element at the specified index position.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nremove(vector, index);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/exception.c",
    "content": "/*\n * File: exception.c\n * Last modified on Sat Apr  5 17:00:43 2008 by eroberts\n * -----------------------------------------------------\n * This file implements the C exception handler.  Much of the\n * real work is done in the exception.h header file.\n */\n\n#include <stdio.h>\n#include <stdarg.h>\n#include \"exception.h\"\n#include \"cslib.h\"\n#include \"strlib.h\"\n#include \"thread.h\"\n#include \"unittest.h\"\n\n/* Constants */\n\n#define MAX_UNHANDLED_MESSAGE 100\n#define ERROR_EXIT_STATUS 1\n\n/* Publically accessible exceptions */\n\nexception ANY = { \"ANY\" };\nexception ErrorException = { \"ErrorException\" };\n\n/* Prototypes for friends functions */\n\nvoid unhandledError(string msg);\nvoid unhandledException(string name);\n\n/* Prototypes for internal functions in threads module */\n\nextern ExceptionContextBlock *getThreadSpecificStack(void);\nextern void pushThreadSpecificStack(ExceptionContextBlock *cptr);\nextern void popThreadSpecificStack(void);\n\n/*\n * Triggers an exception by finding an appropriate handler and then\n * using <code>longjmp</code> to return to the context stored there\n * after resetting the exception stack.  If no handler exists, the\n * function calls <code>error</code> with an unhandled exception.\n */\n\nvoid throwException(exception *e, string name, void *value) {\n   ExceptionContextBlock *stack;\n\n   stack = getThreadSpecificStack();\n   if (stack == NULL) {\n      if (e == &ErrorException) {\n         unhandledError((string) value);\n      } else {\n         unhandledException(name);\n      }\n   }\n   stack->id = e;\n   stack->name = name;\n   stack->value = value;\n   longjmp(stack->jmp, 1);\n}\n\n/* Friends entries */\n\n/*\n * Implementation notes: unhandledError\n * ------------------------------------\n * Called when an unhandled <code>ErrorException</code> occurs.\n */\n\nvoid unhandledError(string msg) {\n   fprintf(stderr, \"error: %s\\n\", msg);\n   exit(ERROR_EXIT_STATUS);\n}\n\n/*\n * Implementation notes: unhandledException\n * ----------------------------------------\n * Called when an unhandled exception occurs.\n */\n\nvoid unhandledException(string name) {\n   fprintf(stderr, \"Unhandled exception: %s\\n\", name);\n   exit(E_UNHANDLED_EXCEPTION);\n}\n\n/* Private functions */\n\n/*\n * Pushes a new exception context on the exception stack.\n */\n\nvoid pushExceptionStack(ExceptionContextBlock *cptr) {\n   pushThreadSpecificStack(cptr);\n}\n\n/*\n * Discards the top exception context from the exception stack.\n */\n\nvoid popExceptionStack(void) {\n   popThreadSpecificStack();\n}\n\n/*\n * Reraises an exception in the top stack frame.\n */\n\nvoid unwindException(ExceptionContextBlock *cptr) {\n   ExceptionContextBlock *stack;\n\n   stack = getThreadSpecificStack();\n   if (stack == NULL) {\n      if (cptr->id == &ErrorException) {\n         unhandledError((string) cptr->value);\n      } else {\n         unhandledException(cptr->name);\n      }\n   }\n   stack->id = cptr->id;\n   stack->name = cptr->name;\n   stack->value = cptr->value;\n   longjmp(stack->jmp, 1);\n}\n\n/**********************************************************************/\n/* Unit test for the exception module                                 */\n/**********************************************************************/\n\n#ifndef _NOTEST_\n\n/* Exceptions */\n\nstatic exception Ex1 = { \"Ex1\" };\nstatic exception Ex2 = { \"Ex2\" };\nstatic exception Ex3 = { \"Ex3\" };\n\n/* Private function prototypes */\n\nstatic void nestedThrow(string exceptionName);\nstatic string testSimpleException(string exceptionName);\nstatic string testExceptionWithFinallyClause(string exceptionName);\n\n/* Unit test */\n\nvoid testExceptionModule(void) {\n   trace(testSimpleException(\"\"));\n   trace(testSimpleException(\"Ex1\"));\n   trace(testSimpleException(\"Ex2\"));\n   testError(testSimpleException(\"Ex3\"));\n   trace(testExceptionWithFinallyClause(\"\"));\n   trace(testExceptionWithFinallyClause(\"Ex1\"));\n   trace(testExceptionWithFinallyClause(\"Ex2\"));\n   testError(testSimpleException(\"Ex3\"));\n}\n\n/* Private functions */\n\nstatic void nestedThrow(string exceptionName) {\n   if (stringEqual(exceptionName, \"\")) return;\n   reportMessage(\"throw(%s);\", exceptionName);\n   if (stringEqual(exceptionName, \"Ex1\")) {\n      throw(Ex1);\n   } else if (stringEqual(exceptionName, \"Ex2\")) {\n      throw(Ex2);\n   } else if (stringEqual(exceptionName, \"Ex3\")) {\n      throw(Ex3);\n   } else {\n      reportError(\"Illegal exception name: %s\", exceptionName);\n   }\n}\n\nstatic string testSimpleException(string exceptionName) {\n   string events;\n\n   adjustReportIndentation(+3);\n   trace(events = \"\");\n   reportMessage(\"try {\");\n   adjustReportIndentation(+3);\n   try {\n      nestedThrow(exceptionName);\n      test(exceptionName, \"\");\n   } catch (Ex1) {\n      adjustReportIndentation(-3);\n      reportMessage(\"} catch (Ex1) {\");\n      adjustReportIndentation(+3);\n      trace(events = concat(events, \"Ex1\"));\n   } catch (Ex2) {\n      adjustReportIndentation(-3);\n      reportMessage(\"} catch (Ex2) {\");\n      adjustReportIndentation(+3);\n      trace(events = concat(events, \"Ex2\"));\n   } endtry\n   adjustReportIndentation(-3);\n   reportMessage(\"}\");\n   test(events, (string) exceptionName);\n   adjustReportIndentation(-3);\n   return events;\n}\n\nstatic string testExceptionWithFinallyClause(string exceptionName) {\n   string events;\n\n   adjustReportIndentation(+3);\n   trace(events = \"\");\n   reportMessage(\"try {\");\n   adjustReportIndentation(+3);\n   try {\n      nestedThrow(exceptionName);\n      test(exceptionName, \"\");\n   } catch (Ex1) {\n      adjustReportIndentation(-3);\n      reportMessage(\"} catch (Ex1) {\");\n      adjustReportIndentation(+3);\n      trace(events = concat(events, \"Ex1\"));\n   } catch (Ex2) {\n      adjustReportIndentation(-3);\n      reportMessage(\"} catch (Ex2) {\");\n      adjustReportIndentation(+3);\n      trace(events = concat(events, \"Ex2\"));\n   } finally {\n      adjustReportIndentation(-3);\n      reportMessage(\"finally\");\n      adjustReportIndentation(+3);\n      trace(events = concat(events, \"+finally\"));\n   } endtry\n   adjustReportIndentation(-3);\n   reportMessage(\"}\");\n   test(events, (string) concat(exceptionName, \"+finally\"));\n   adjustReportIndentation(-3);\n   return events;\n}\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/exception.h",
    "content": "/*\n * File: exception.h\n * -----------------\n * This interface exports a portable exception-handling mechanism for C.\n *\n * <p>The <code>exception.h</code> interface makes it possible for\n * clients to specify a handler for an exceptional conditions in a\n * syntactically readable way.  As a client, your first step\n * is to declare an exception condition name by declaring\n * a variable of type exception, as in\n *\n *<pre>\n *    exception MyException;\n *</pre>\n *\n * <p>Normal visibility rules apply, so that you should declare the\n * exception variable at the appropriate level.  For example, if an\n * exception is local to an implementation, it should be declared\n * statically within that module.  If an exception condition is\n * shared by many modules, the exception variable should be declared\n * in an interface and exported to all clients that need it.  This\n * package defines and exports the exception <code>ErrorException</code>,\n * which is likely to be sufficient for many clients.\n *\n * <p>The basic functionality of exceptions is that one piece of code\n * can \"throw\" an exception so that it can then be \"caught\" by\n * special code in a dynamically enclosing section of the program.\n * Exceptions are triggered by calling the pseudo-function\n * <code>throw</code> with the exception name, as in\n *\n *<pre>\n *    throw(MyException);\n *</pre>\n *\n * <p>Exceptions are handled using the <code>try</code> statement\n * (actually implemented using macros), which has the form:\n *\n *<pre>\n *    try {\n *       . . . statements in the body of the block . . .\n *    } catch (exception1) {\n *       . . . statements to handle exception 1 . . .\n *    } catch (exception2) {\n *       . . . statements to handle exception 2 . . .\n *    } catch (ANY) {\n *       . . . statements to handle any exception . . .\n *    } finally {\n *       . . . statements to be executed before exit in all cases . . .\n *    } endtry\n *</pre>\n *\n * <p>Any number of <code>catch</code> clauses may appear.  The\n * <code>ANY</code> and <code>finally</code> clauses are optional.\n *\n * <p>When the program encounters the <code>try</code> statement, the\n * statements in the body are executed.  If no exception conditions\n * are thrown during that execution, either in this block or by a\n * function call nested inside this block, control passes to the end\n * of the <code>try</code> statement when the last statement in the\n * block is executed.  If an exception is thrown during the dynamic\n * execution of the block, control immediately passes to the statements\n * in the appropriate <code>catch</code> clause.  Only the statements\n * in that clause are executed; no <code>break</code> statement is\n * required to exit the block.\n *\n * <p>The <code>try</code> statement guarantees that the statements in\n * the <code>finally</code> clause, if present, will always be executed,\n * even if an exception is thrown that is caught at a higher level.\n *\n * <p>If no handler for the exception appears anywhere in the\n * control history, the program exits with an error.\n *\n * <p>Examples of use:\n *\n * <p>1.  Catching errors\n *\n * <p>The following code fragment traps calls to <code>error</code>, so\n * that the program does not quit but instead returns to the top-level\n * read-and-execute loop.\n *\n *<pre>\n *    while (true) {\n *        try {\n *            printf(\"> \");\n *            cmd = readCommand();\n *            executeCommand(cmd);\n *        } catch (ErrorException) {\n *            printf(\"error: %s\\n\", (string) getExceptionValue());\n *            -- additional handling code, if any --\n *        } endtry\n *    }\n *</pre>\n *\n * <p>If either <code>readCommand</code> or <code>executeCommand</code>\n * calls <code>error</code>, control will be passed back to the main\n * loop, after executing any additional handler code.  The error\n * message is passed as the exception value and can be printed as\n * shown in the example.\n *\n * <p>2.  Handling control-C (Unix systems)\n *\n * <p>The following code extends the example above so that typing\n * <code>^C</code> also returns to top-level:\n *\n *<pre>\n *    #include <signal.h>\n * &nbsp;\n *    static exception ControlCException;\n *    static int errorCount = 0;\n *    static int controlCHandler();\n * &nbsp;\n *    main() {\n *        string cmd;\n * &nbsp;\n *        signal(SIGINT, controlCHandler);\n *        while (true) {\n *            try {\n *                printf(\"> \");\n *                cmd = readCommand();\n *                executeCommand(cmd);\n *            } catch (ControlCException) {\n *                printf(\"^C\\n\");\n *                signal(SIGINT, controlCHandler);\n *            } catch (ErrorException) {\n *                errorCount++;\n *            } endtry\n *        }\n *    }\n * &nbsp;\n *    static int controlCHandler() {\n *        throw(ControlCException);\n *    }\n *</pre>\n */\n\n#ifndef _exception_h\n#define _exception_h\n\n#include <setjmp.h>\n#include <string.h>\n#include \"cslib.h\"\n\n/*\n * Implementation notes\n * --------------------\n * Most of the implementation of the exception mechanism is included\n * directly within the macros defined by this file.  Clients should\n * ordinarily be able to read the general package description and\n * ignore the details of the code.\n */\n\n/* Define error status indicators */\n\n#define E_TOO_MANY_EXCEPT_CLAUSES 101\n#define E_UNHANDLED_EXCEPTION 102\n\n/* Codes to keep track of the state of the try handler */\n\n#define ES_BODY       1\n#define ES_CATCH      2\n#define ES_CAUGHT     3\n#define ES_RETRY      4\n#define ES_FINALLY    5\n#define ES_FINISHED   6\n\n/*\n * The following conditional macro definition is used to debug\n * the <code>try</code> macro.  If __DebugTry__ is set, the\n * program traces the finite state machine operation used\n * to implement exceptions.\n */\n\n#ifdef __DebugTry__\n#   define debugTry(s) printf(s \"\\n\", _es)\n#else\n#   define debugTry(s)\n#endif\n\n/*\n * Type: exception\n * ---------------\n * This type is used to define the general class of exceptions.\n * Exceptions are specified by their address, so that the\n * actual structure does not matter.  Strings are used here\n * so that exporters of exceptions can store the exception\n * name for the use of debuggers and other tools.\n */\n\ntypedef struct { string name; } exception;\n\n/*\n * This structure is used internally to maintain a chain of\n * exception scopes on the control stack.\n */\n\ntypedef struct exceptionContextBlock {\n    jmp_buf jmp;\n    exception *id;\n    void *value;\n    string name;\n    void *lock;\n    struct exceptionContextBlock *link;\n} ExceptionContextBlock;\n\n/*\n * Type: ErrorException\n * --------------------\n * Predefined exception type for the <code>error</code> function.\n */\nextern exception ErrorException;\n\n/*\n * Constant: ANY\n * -------------\n * Predefined exception type that allows handlers to catch an arbitrary\n * exception.\n */\nextern exception ANY;\n\n/* Macros for the pseudostatement forms */\n\n#define throw(e) throwException(&e, #e, NULL)\n\n#define try \\\n      { \\\n          ExceptionContextBlock _ctx; \\\n          int _es; \\\n          _es = ES_BODY; \\\n          _ctx.lock = NULL; \\\n          debugTry(\"try\"); \\\n          debugTry(\"push exception stack [es = %d]\"); \\\n          pushExceptionStack(&_ctx); \\\n          if (setjmp(_ctx.jmp) != 0) { \\\n              _es = ES_CATCH; \\\n          } \\\n          debugTry(\"setjmp [es = %d]\"); \\\n          if (_es == ES_BODY)\n\n#define catch(e) \\\n          if (_es == ES_BODY || _es == ES_CAUGHT) _es = ES_FINALLY; \\\n          debugTry(\"catch (\" #e \") [es = %d]\"); \\\n          if (_es == ES_CATCH && (_ctx.id == &e || &e == &ANY)) { \\\n              _es = ES_CAUGHT; \\\n          } if (_es == ES_CAUGHT)\n\n#define finally \\\n          debugTry(\"finally [es = %d]\"); \\\n          debugTry(\"pop exception stack [es = %d]\"); \\\n          popExceptionStack(); \\\n          _es = (_es == ES_CATCH) ? ES_RETRY : ES_FINISHED;\n\n#define endtry \\\n          debugTry(\"endtry [es = %d]\"); \\\n          if (_es != ES_FINISHED && _es != ES_RETRY) { \\\n              debugTry(\"pop exception stack [es = %d]\"); \\\n              popExceptionStack(); \\\n          } \\\n          if (_es == ES_RETRY) _es = ES_CATCH; \\\n          if (_es == ES_CATCH) unwindException(&_ctx); \\\n      }\n\n#define getExceptionName() _ctx.name\n#define getExceptionValue() _ctx.value\n#define getCurrentException() _ctx.id\n\n/* Internal entry points -- see implementation for details */\n\nvoid throwException(exception *e, string name, void *value);\nvoid pushExceptionStack(ExceptionContextBlock *cptr);\nvoid popExceptionStack(void);\nvoid unwindException(ExceptionContextBlock *cptr);\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/filelib.c",
    "content": "/*\n * File: filelib.c\n * Last modified on Thu Dec 13 08:42:06 2012 by eroberts\n * -----------------------------------------------------\n * Implements the common parts of the filelib.h interface.\n * Platform-specific components of the implementation are\n */\n\n#include <stdio.h>\n#include <ctype.h>\n#include <string.h>\n#include \"cmpfn.h\"\n#include \"cslib.h\"\n#include \"exception.h\"\n#include \"filelib.h\"\n#include \"generic.h\"\n#include \"iterator.h\"\n#include \"itertype.h\"\n#include \"strlib.h\"\n#include \"unittest.h\"\n\n/* Define a function type for the mapPath procedure. */\n\ntypedef void *(*PathMapFn)(string name, void *data);\n\n/* Private function prototypes */\n\nstatic void mapDirectoryTree(string path, Iterator iterator);\nstatic void *mapPath(PathMapFn fn, string path, string filename, void *data);\nstatic void *checkExists(string name, void *data);\nstatic void *openFile(string name, void *data);\nstatic bool isAbsolutePath(string pathname);\nstatic bool recursiveMatch(string str, int sx, string pattern, int px);\n\n/* Implementation section */\n\nstring getRoot(string filename) {\n   register char *cp;\n   char *dotpos;\n\n   dotpos = NULL;\n   for (cp = filename; *cp; cp++) {\n      if (*cp == '.') dotpos = cp;\n      if (*cp == '/' || *cp == '\\\\') dotpos = NULL;\n   }\n   if (dotpos == NULL) {\n      return copyString(filename);\n   } else {\n      return substring(filename, 0, (dotpos - filename) - 1);\n   }\n}\n\nstring getExtension(string filename) {\n   register char *cp;\n   char *dotpos;\n\n   dotpos = NULL;\n   for (cp = filename; *cp; cp++) {\n      if (*cp == '.') dotpos = cp;\n      if (*cp == '/' || *cp == '\\\\') dotpos = NULL;\n   }\n   if (dotpos == NULL) {\n      return \"\";\n   } else {\n      return copyString(dotpos);\n   }\n}\n\nstring getHead(string pathname) {\n   register char *cp;\n   char *slashpos;\n\n   slashpos = NULL;\n   for (cp = pathname; *cp; cp++) {\n      if (*cp == '/' || *cp == '\\\\') slashpos = cp;\n   }\n   if (slashpos == NULL) {\n      return \"\";\n   } else if (slashpos == pathname) {\n      return substring(pathname, 0, 0);\n   } else {\n      return substring(pathname, 0, (slashpos - pathname) - 1);\n   }\n}\n\nstring getTail(string pathname) {\n   register char *cp;\n   char *slashpos;\n\n   slashpos = NULL;\n   for (cp = pathname; *cp; cp++) {\n      if (*cp == '/' || *cp == '\\\\') slashpos = cp;\n   }\n   if (slashpos == NULL) {\n      return copyString(pathname);\n   } else {\n      return copyString(slashpos + 1);\n   }\n}\n\nstring defaultExtension(string filename, string ext) {\n   register char *cp;\n   char *dotpos;\n   bool force;\n\n   force = (ext[0] == '*');\n   if (force) ext++;\n   dotpos = NULL;\n   for (cp = filename; *cp; cp++) {\n      if (*cp == '.') dotpos = cp;\n      if (*cp == '/' || *cp == '\\\\') dotpos = NULL;\n   }\n   if (dotpos == NULL) {\n      force = true;\n      dotpos = cp;\n   }\n   if (force) {\n      return concat(substring(filename, 0, dotpos - filename - 1), ext);\n   } else {\n      return copyString(filename);\n   }\n}\n\nFILE *openOnPath(string path, string filename, string mode) {\n   return (FILE *) mapPath(openFile, path, filename, mode);\n}\n\nstring findOnPath(string path, string filename) {\n   return (string) mapPath(checkExists, path, filename, NULL);\n}\n\nvoid createDirectoryPath(string path) {\n   string prefix;\n   int cp;\n\n   cp = 1;\n   if (stringEqual(path, \"\")) return;\n   while ((cp = findChar('/', path, cp + 1)) > 0) {\n      prefix = substring(path, 0, cp - 1);\n      createDirectory(prefix);\n   }\n   createDirectory(path);\n}\n\nIterator newDirectoryIterator(string dir) {\n   Iterator iterator;\n   string *names;\n   int i;\n\n   iterator = newListIterator(sizeof (string), NULL);\n   names = listDirectory(dir);\n   for (i = 0; names[i] != NULL; i++) {\n      addToIteratorList(iterator, &names[i]);\n   }\n   return iterator;\n}\n\nIterator newDirectoryTreeIterator(string dir) {\n   Iterator iterator;\n\n   iterator = newListIterator(sizeof (string), NULL);\n   mapDirectoryTree(dir, iterator);\n   return iterator;\n}\n\nbool matchFilenamePattern(string filename, string pattern) {\n   return recursiveMatch(filename, 0, pattern, 0);\n}\n\n/* Private functions */\n\nstatic void mapDirectoryTree(string dir, Iterator iterator) {\n   string *names, pathname;\n   int i;\n\n   names = listDirectory(dir);\n   for (i = 0; names[i] != NULL; i++) {\n      if (dir == NULL) {\n         pathname = names[i];\n      } else {\n         pathname = dir;\n         if (!endsWith(pathname, \"/\")) {\n            pathname = concat(pathname, \"/\");\n         }\n         pathname = concat(pathname, names[i]);\n      }\n      if (isDirectory(pathname)) {\n         mapDirectoryTree(pathname, iterator);\n      } else {\n         addToIteratorList(iterator, &pathname);\n      }\n   }\n}\n\nstatic void *mapPath(PathMapFn fn, string path, string filename, void *data) {\n   char *p1, *p2;\n   string localpath, tempname;\n   void *result;\n\n   if (filename == NULL) filename = \"\";\n   if (path == NULL || path[0] == '\\0' || isAbsolutePath(filename)) {\n      return fn(expandPathname(filename), data);\n   }\n   localpath = concat(path, \":\");\n   result = NULL;\n   p1 = localpath;\n   while (result == NULL) {\n      for (p2 = p1; (*p2 != '\\0') && (*p2 != ':') && (*p2 != ';') ; p2++) {\n         /* Empty */\n      }\n      if (*p2 == '\\0') break;\n      *p2 = '\\0';\n      if (p1 != p2 || strlen(localpath) == 1) {\n         tempname = concat(p1, concat(\"/\", filename));\n         result = fn(expandPathname(tempname), data);\n      }\n      p1 = p2 + 1;\n   }\n   return result;\n}\n\nstatic void *checkExists(string name, void *data) {\n   return (fileExists(name)) ? name : NULL;\n}\n\nstatic void *openFile(string name, void *data) {\n   return fopen(name, (string) data);\n}\n\nstatic bool isAbsolutePath(string pathname) {\n   if (*pathname == '/' || *pathname == '~') return true;\n   if (strlen(pathname) > 1 && isalpha(pathname[0]) && pathname[1] == ':') {\n      return true;\n   }\n   return false;\n}\n\nstatic bool recursiveMatch(string str, int sx, string pattern, int px) {\n   int slen, plen, i;\n   char pch, sch;\n   bool match, invert;\n\n   slen = stringLength(str);\n   plen = stringLength(pattern);\n   if (px == plen) return (sx == slen);\n   pch = pattern[px];\n   if (pch == '*') {\n      for (i = sx; i <= slen; i++) {\n         if (recursiveMatch(str, i, pattern, px + 1)) return true;\n      }\n      return false;\n   }\n   if (sx == slen) return false;\n   sch = str[sx];\n   if (pch == '[') {\n      match = false;\n      invert = false;\n      px++;\n      if (px == plen) {\n         error(\"matchFilenamePattern: missing ]\");\n      }\n      if (pattern[px] == '^') {\n         px++;\n         invert = true;\n      }\n      while (px < plen && pattern[px] != ']') {\n         if (px + 2 < plen && pattern[px + 1] == '-') {\n            match |= (sch >= pattern[px] && sch <= pattern[px + 2]);\n            px += 3;\n         } else {\n            match |= (sch == pattern[px]);\n            px++;\n         }\n      }\n      if (px == plen) {\n         error(\"matchFilenamePattern: missing ]\");\n      }\n      if (match == invert) return false;\n   } else if (pch != '?') {\n      if (pch != sch) return false;\n   }\n   return recursiveMatch(str, sx + 1, pattern, px + 1);\n}\n\n/**********************************************************************/\n/* Unit test for the filelib module                                   */\n/**********************************************************************/\n\n#ifndef _NOTEST_\n\n/* Private function prototypes */\n\nstatic void testGetRoot(void);\nstatic void testGetExtension(void);\nstatic void testGetHead(void);\nstatic void testGetTail(void);\nstatic void testDefaultExtension(void);\nstatic void testFileExists(void);\nstatic void testIsFile(void);\nstatic void testIsDirectory(void);\nstatic void testExpandPathname(void);\nstatic void testMatchFilenamePattern(void);\n\n/* Unit test */\n\nvoid testFilelibModule(void) {\n   testGetRoot();\n   testGetExtension();\n   testGetHead();\n   testGetTail();\n   testDefaultExtension();\n   testFileExists();\n   testIsFile();\n   testIsDirectory();\n   testExpandPathname();\n   testMatchFilenamePattern();\n}\n\n/* Private functions */\n\nstatic void testGetRoot(void) {\n   test(getRoot(\"filename.ext\"), \"filename\");\n   test(getRoot(\"abc.def.ghi\"), \"abc.def\");\n   test(getRoot(\"/a/b/c/filename.ext\"), \"/a/b/c/filename\");\n   test(getRoot(\"A:a\\\\b\\\\c\\\\filename.ext\"), \"A:a\\\\b\\\\c\\\\filename\");\n}\n\nstatic void testGetExtension(void) {\n   test(getExtension(\"filename.ext\"), \".ext\");\n   test(getExtension(\"abc.def.ghi\"), \".ghi\");\n   test(getExtension(\"/a/b/c/filename.ext\"), \".ext\");\n   test(getExtension(\"A:a\\\\b\\\\c\\\\filename.ext\"), \".ext\");\n}\n\nstatic void testGetHead(void) {\n   test(getHead(\"/a/b/c/filename.ext\"), \"/a/b/c\");\n   test(getHead(\"A:a\\\\b\\\\c\\\\filename.ext\"), \"A:a\\\\b\\\\c\");\n   test(getHead(\"a/b\"), \"a\");\n   test(getHead(\"a\"), \"\");\n   test(getHead(\"/a\"), \"/\");\n   test(getHead(\"/\"), \"/\");\n}\n\nstatic void testGetTail(void) {\n   test(getTail(\"/a/b/c/filename.ext\"), \"filename.ext\");\n   test(getTail(\"A:a\\\\b\\\\c\\\\filename.ext\"), \"filename.ext\");\n   test(getTail(\"a/b\"), \"b\");\n   test(getTail(\"a\"), \"a\");\n   test(getTail(\"/a\"), \"a\");\n   test(getTail(\"/\"), \"\");\n}\n\nstatic void testDefaultExtension(void) {\n   test(defaultExtension(\"filename\", \".ext\"), \"filename.ext\");\n   test(defaultExtension(\"filename.old\", \".new\"), \"filename.old\");\n   test(defaultExtension(\"filename.old\", \"*.new\"), \"filename.new\");\n   test(defaultExtension(\"a.b.c\", \"*.x\"), \"a.b.x\");\n}\n\nstatic void testFileExists(void) {\n   test(fileExists(\"filelib.c\"), true);\n   test(fileExists(\"xyzzy.c\"), false);\n}\n\nstatic void testIsFile(void) {\n   test(isFile(\"filelib.c\"), true);\n   test(isFile(\".\"), false);\n   test(isFile(\"xyzzy.c\"), false);\n}\n\nstatic void testIsDirectory(void) {\n   test(isDirectory(\"filelib.c\"), false);\n   test(isDirectory(\".\"), true);\n   test(isDirectory(\"xyzzy.c\"), false);\n}\n\nstatic void testExpandPathname(void) {\n   if (stringEqual(getDirectoryPathSeparator(), \"/\")) {\n      test(expandPathname(\"a/b\"), \"a/b\");\n      test(expandPathname(\"a\\\\b\"), \"a/b\");\n   } else {\n      test(expandPathname(\"a/b\"), \"a\\\\b\");\n      test(expandPathname(\"a\\\\b\"), \"a\\\\b\");\n   }\n}\n\nstatic void testMatchFilenamePattern(void) {\n   test(matchFilenamePattern(\"abc\", \"abc\"), true);\n   test(matchFilenamePattern(\"xxx\", \"abc\"), false);\n   test(matchFilenamePattern(\"ab\", \"abc\"), false);\n   test(matchFilenamePattern(\"abcd\", \"abc\"), false);\n   test(matchFilenamePattern(\"axc\", \"a?c\"), true);\n   test(matchFilenamePattern(\"ac\", \"a?c\"), false);\n   test(matchFilenamePattern(\"axxc\", \"a?c\"), false);\n   test(matchFilenamePattern(\"axxc\", \"a??c\"), true);\n   test(matchFilenamePattern(\"axc\", \"a*c\"), true);\n   test(matchFilenamePattern(\"ac\", \"a*c\"), true);\n   test(matchFilenamePattern(\"axxc\", \"a*c\"), true);\n   test(matchFilenamePattern(\"axxcd\", \"a*c\"), false);\n   test(matchFilenamePattern(\"axxbyyc\", \"a*b*c\"), true);\n   test(matchFilenamePattern(\"abc\", \"[abc]bc\"), true);\n   test(matchFilenamePattern(\"bbc\", \"[abc]bc\"), true);\n   test(matchFilenamePattern(\"xbc\", \"[abc]bc\"), false);\n   test(matchFilenamePattern(\"abc\", \"[^abc]bc\"), false);\n   test(matchFilenamePattern(\"bbc\", \"[^abc]bc\"), false);\n   test(matchFilenamePattern(\"xbc\", \"[^abc]bc\"), true);\n   test(matchFilenamePattern(\"abc\", \"[a-c]bc\"), true);\n   test(matchFilenamePattern(\"bbc\", \"[a-c]bc\"), true);\n   test(matchFilenamePattern(\"xbc\", \"[a-c]bc\"), false);\n   test(matchFilenamePattern(\"abc\", \"[^a-c]bc\"), false);\n   test(matchFilenamePattern(\"bbc\", \"[^a-c]bc\"), false);\n   test(matchFilenamePattern(\"xbc\", \"[^a-c]bc\"), true);\n}\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/filelib.h",
    "content": "/*\n * File: filelib.h\n * ---------------\n * This interface exports a standardized set of tools for working with\n * files across various platforms.  It is implemented for each of the\n * following platforms: Mac OSX, Windows, and Linux.  Directory and\n * search paths are allowed to contain separators in any of the\n * supported styles, which often makes it possible to use the same\n * code on different platforms.\n */\n\n#ifndef _filelib_h\n#define _filelib_h\n\n#include \"cslib.h\"\n#include \"iterator.h\"\n\n/* Exported entries */\n\n/*\n * Function: getDirectoryPathSeparator\n * Usage: sep = getDirectoryPathSeparator();\n * -----------------------------------------\n * Returns the standard directory path separator used on this platform.\n */\n\nstring getDirectoryPathSeparator(void);\n\n/*\n * Function: getSearchPathSeparator\n * Usage: sep = getSearchPathSeparator();\n * --------------------------------------\n * Returns the standard search path separator used on this platform.\n */\n\nstring getSearchPathSeparator(void);\n\n/*\n * Function: getRoot\n * Usage: root = getRoot(filename);\n * --------------------------------\n * Returns the root of a <code>filename.ext</code> pair, which\n * consists of everything in <code>filename</code> up to the last dot and\n * the subsequent extension.  If no dot appears, <code>getRoot</code>\n * returns the entire name.\n */\n\nstring getRoot(string filename);\n\n/*\n * Function: getExtension\n * Usage: ext = getExtension(filename);\n * ------------------------------------\n * Returns the extension component of <code>filename</code>, which consists\n * of the rightmost dot in the final component and all subsequent characters.\n * If no dot exists in the final component, <code>getExtension</code>\n * returns the empty string.  Note that this interpretation is different\n * from the one used by the <code>:e</code> substitution in the shell.\n * These semantics were chosen so that the expression\n *\n *<pre>\n *    concat(getRoot(filename), getExtension(filename))\n *</pre>\n *\n * is equal to the original <code>filename</code>.\n */\n\nstring getExtension(string filename);\n\n/*\n * Function: getHead\n * Usage: head = getHead(pathname);\n * --------------------------------\n * Returns all but the last component of a path name, where the\n * components are names separated by any of the directory path\n * separators (forward or reverse slashes).  The special cases are\n * illustrated by the following examples:\n *\n *<pre>\n *    getHead(\"a/b\")  = \"a\"\n *    getHead(\"a\")    = \"\"\n *    getHead(\"/a\")   = \"/\"\n *    getHead(\"/\")    = \"/\"\n *</pre>\n */\n\nstring getHead(string pathname);\n\n/*\n * Function: getTail\n * Usage: tail = getTail(pathname);\n * --------------------------------\n * Returns the last component of a path name, where the components\n * are names separated by any of the directory path separators\n * (forward or reverse slashes).  The special cases are illustrated\n * by the following examples:\n *\n *<pre>\n *    getTail(\"a/b\")   = \"b\"\n *    getTail(\"a\")     = \"a\"\n *    getTail(\"/a\")    = \"a\"\n *    getTail(\"/\")     = \"\"\n *</pre>\n */\n\nstring getTail(string pathname);\n\n/*\n * Function: defaultExtension\n * Usage: newname = defaultExtension(filename, ext);\n * -------------------------------------------------\n * Adds an extension to a file name if none already exists.  If the\n * <code>extension</code> argument begins with a leading <code>*</code>,\n * any existing extension in <code>filename</code> is replaced by\n * <code>ext</code>.\n */\n\nstring defaultExtension(string filename, string ext);\n\n/*\n * Function: openOnPath\n * Usage: FILE *file = openOnPath(path, filename, mode);\n * -----------------------------------------------------\n * Opens a files by searching directories in a search path for the\n * first matching file.  The <code>openOnPath</code> routine has\n * the same structure as <code>fopen</code> in the standard library\n * and the filename and mode arguments are the same as in that\n * call.  The path argument consists of a list of directories\n * which are prepended to the filename, unless the filename begins\n * with an absolute directory marker, such as <code>/</code> or\n * <code>~</code>.  The directories in the search path may be\n * separated either by colons (Unix style) or semicolons (Windows\n * style).  The <code>openOnPath</code> function returns an open\n * stream to the indicated file, or <code>NULL</code>, if no\n * existing file is found.\n */\n\nFILE *openOnPath(string path, string filename, string mode);\n\n/*\n * Function: findOnPath\n * Usage: pathname = findOnPath(path, filename);\n * ---------------------------------------------\n * Returns a canonical name of a file found using a search path.\n * The <code>findOnPath</code> function is similar to\n * <code>openOnPath</code>, except that it returns the name of\n * the file instead of trying to open in.  If no matching file\n * is found, findOnPath returns <code>NULL</code>.\n */\n\nstring findOnPath(string path, string filename);\n\n/*\n * Function: deleteFile\n * Usage: deleteFile(filename);\n * ----------------------------\n * Deletes the specified file.  Errors are reported by calling\n * <code>error</code> in the implementation.\n */\n\nvoid deleteFile(string filename);\n\n/*\n * Function: renameFile\n * Usage: renameFile(oldname, newname);\n * ------------------------------------\n * Renames a file.  Errors are reported by calling\n * <code>error</code> in the implementation.\n */\n\nvoid renameFile(string oldname, string newname);\n\n/*\n * Function: fileExists\n * Usage: if (fileExists(pathname)) . . .\n * --------------------------------------\n * Returns <code>true</code> if the specified file exists.\n */\n\nbool fileExists(string pathname);\n\n/*\n * Function: isFile\n * Usage: if (isFile(pathname)) . . .\n * ----------------------------------\n * Returns <code>true</code> if the specified file is a regular file.\n */\n\nbool isFile(string pathname);\n\n/*\n * Function: isSymbolicLink\n * Usage: if (isSymbolicLink(pathname)) . . .\n * ------------------------------------------\n * Returns <code>true</code> if the specified file is a symbolic link.\n */\n\nbool isSymbolicLink(string pathname);\n\n/*\n * Function: isDirectory\n * Usage: if (isDirectory(pathname)) . . .\n * ---------------------------------------\n * Returns <code>true</code> if the specified file is a directory.\n */\n\nbool isDirectory(string pathname);\n\n/*\n * Function: createDirectory\n * Usage: createDirectory(pathname);\n * ---------------------------------\n * Creates a new directory for the specified pathname.  The\n * <code>createDirectory</code> function does not report an error if\n * the directory already exists.  Unlike <code>createDirectoryPath</code>,\n * <code>createDirectory</code> does not create missing directories\n * along the path.  If some component of <code>pathname</code> does\n * not exist, this function signals an error.\n */\n\nvoid createDirectory(string pathname);\n\n/*\n * Function: createDirectoryPath\n * Usage: createDirectoryPath(pathname);\n * -------------------------------------\n * Creates a new directory for the specified pathname.   If intermediate\n * components of the pathname do not exist, this function creates them\n * as needed.\n */\n\nvoid createDirectoryPath(string pathname);\n\n/*\n * Function: setCurrentDirectory\n * Usage: setCurrentDirectory(pathname);\n * -------------------------------------\n * Changes the current directory to the specified path.\n */\n\nvoid setCurrentDirectory(string path);\n\n/*\n * Function: getCurrentDirectory\n * Usage: pathname = getCurrentDirectory();\n * ----------------------------------------\n * Returns an absolute pathname for the current directory.\n */\n\nstring getCurrentDirectory(void);\n\n/*\n * Function: expandPathname\n * Usage: fullname = expandPathname(pathname);\n * -------------------------------------------\n * Expands a pathname into a canonical name for the platform.\n */\n\nstring expandPathname(string filename);\n\n/*\n * Function: listDirectory\n * Usage: string array[] = listDirectory(dir);\n * -------------------------------------------\n * Returns an alphabetical list of all the files in the specified\n * directory, excluding the unix <code>.</code> and <code>..</code>\n * entries.  The array is terminated with a <code>NULL</code> entry.\n */\n\nstring *listDirectory(string dir);\n\n/*\n * Function: newDirectoryIterator\n * Usage: foreach (name in newDirectoryIterator(dir)) . . .\n * --------------------------------------------------------\n * Creates a new directory iterator that will step through the files\n * in the specified directory.\n */\n\nIterator newDirectoryIterator(string dir);\n\n/*\n * Function: newDirectoryTreeIterator\n * Usage: foreach (name in newDirectoryTreeIterator(dir)) . . .\n * ------------------------------------------------------------\n * Creates a new directory iterator that will walk recursively through the\n * files in the specified directory and its subdirectories.\n */\n\nIterator newDirectoryTreeIterator(string dir);\n\n/*\n * Function: matchFilenamePattern\n * Usage: if (matchFilenamePattern(filename, pattern)) . . .\n * ---------------------------------------------------------\n * Determines whether the filename matches the specified pattern.  The\n * pattern string is interpreted in much the same way that a Unix shell\n * expands filenames and supports the following wildcard options:\n *\n *<p><table>\n * <tr><td align=center><code>?</code></td>\n *     <td>Matches any single character</td></tr>\n * <tr><td align=center><code>*</code></td>\n *     <td>Matches any sequence of characters</td></tr>\n * <tr><td align=center><code>[...]</code></td>\n *     <td>Matches any of the specified characters</td></tr>\n * <tr><td align=center><code>[^...]</code></td>\n *     <td>Matches any character <i>except</i> the specified ones</td></tr>\n *</table><p>\n *\n * The last two options allow a range of characters to be specified in the\n * form <code>a-z</code>.\n */\n\nbool matchFilenamePattern(string filename, string pattern);\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/foreach.c",
    "content": "/*\n * File: foreach.c\n * Last modified on Sun Jul 26 16:56:49 1998 by eroberts\n * -----------------------------------------------------\n * This file implements the foreach construct.\n */\n\n#include <stdio.h>\n#include \"foreach.h\"\n#include \"cslib.h\"\n#include \"iterator.h\"\n\ntypedef struct Cell {\n   void *dst;\n   Iterator iterator;\n   struct Cell *link;\n} Cell;\n\nstatic Cell *iteratorList = NULL;\n\n/* Entry points */\n\nvoid initForEach(void *dst, void *collection) {\n   Cell *cp;\n\n   for (cp = iteratorList; cp != NULL && cp->dst != dst; cp = cp->link) {\n      /* Empty */\n   }\n   if (cp == NULL) {\n      cp = newBlock(Cell *);\n      cp->dst = dst;\n      cp->link = iteratorList;\n      iteratorList = cp;\n   } else {\n      if (cp->iterator != NULL) freeIterator(cp->iterator);\n   }\n   cp->iterator = newIterator(collection);\n}\n\nbool stepForEach(void *dst) {\n   Cell *cp;\n   bool result;\n\n   for (cp = iteratorList; cp != NULL && cp->dst != dst; cp = cp->link) {\n      /* Empty */\n   }\n   if (cp == NULL) error(\"foreach iterator undefined\");\n   result = stepIterator(cp->iterator, dst);\n   if (!result) {\n      freeIterator(cp->iterator);\n      cp->iterator = NULL;\n   }\n   return result;\n}\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/foreach.h",
    "content": "/*\n * File: foreach.h\n * ---------------\n * This interface provides a simple syntactic extension for iterators\n * that makes them much easier to read.  The general form of the\n * <code>foreach</code> statement looks like this:\n *\n *<pre>\n *    foreach (<span class=it>var</span> in <span class=it>collection</span>) {\n *       <span class=it>statements</span>\n *    }\n *</pre>\n *\n * In C, the variable <i>var</i> must be declared outside the loop.\n */\n\n#ifndef _foreach_h\n#define _foreach_h\n\n#include \"cslib.h\"\n\n/*\n * Macro: foreach\n * Usage: foreach (element in collection) { . . . }\n * ------------------------------------------------\n * This macro definition creates a new statement form that simplifies\n * the use of iterators.  The variable <code>element</code> must be\n * declared in the current scope and must be compatible with the base\n * type of the collection.\n */\n\n#define in : (void *) (\n#define foreach(arg) \\\n    for (initForEach(1 ? (void *) &arg), 0 ? &arg)); \\\n         stepForEach(1 ? (void *) &arg)); )\n\nvoid initForEach(void *dst, void *collection);\nbool stepForEach(void *dst);\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/gccx",
    "content": "#! /bin/csh -f\nset INCLUDE = \"-I$HOME/include\"\nset CC = gcc\nset OPTIONS = \"-g\"\nset FILES = \"\"\nset LIBRARIES = \"-L. -L$HOME/lib -lcs -lm -lpthread\"\nset CARBONFLAG = 0\nset COMPILEFLAG = 0\nset OSXFLAG = 0\nset XWINFLAG = 0\nset SHAREDFLAG = 0\nset APPFLAG = 0\nset APPNAME = \"\"\nset TEST = \"\"\nset X11LIBS = (`ls -dt .[.] /usr/X11*/lib/libX11.a | grep '...'`)\nif ($#X11LIBS == 0) then\n  if (0 && -d /usr/include/X11) then\n    set XWINFLAG = 1\n    set LIBRARIES = \"$LIBRARIES -lX11\"\n  endif\nelse\n  set XWINFLAG = 1\n  set LIBRARIES = \"-L$X11LIBS[1]:h $LIBRARIES -lX11\"\nendif\nif (-x /usr/bin/sw_vers) then\n  set OSXFLAG = `/usr/bin/sw_vers | fgrep 'Mac OS X' | wc -l`\nendif\nif ($OSXFLAG) then\n  set OPTIONS = \"$OPTIONS -D__macosx__ -D__unix__ -D__linux__\"\n  set CARBONFLAG = 1\nendif\nif ($XWINFLAG) then\n  set OPTIONS = \"$OPTIONS -D__xwindows__\"\nendif\nwhile ($#argv > 0)\n  switch ($1)\n    case -t:\n      set TEST = \"echo\"\n      breaksw\n    case -c:\n      set LIBRARIES = \"\"\n      set OPTIONS = \"$OPTIONS -c\"\n      set COMPILEFLAG = 1\n      breaksw\n    case -c[+][+]:\n      set CC = \"g++\"\n      breaksw\n    case -carbon:\n      set CARBONFLAG = 1\n      breaksw\n    case -dynamic:\n      set NORFLAG = `gcc -rdynamic |& fgrep 'unrecognized option' | wc -l`\n      if ($NORFLAG) then\n        set OPTIONS = \"$OPTIONS -dynamic\"\n      else\n        set OPTIONS = \"$OPTIONS -rdynamic\"\n      endif\n      set LIBRARIES = \"$LIBRARIES -lloadobj\"\n      breaksw\n    case -shared:\n      if ($OSXFLAG) then\n        set OPTIONS = \"$OPTIONS -fno-common -bundle -flat_namespace\"\n        set OPTIONS = \"$OPTIONS -undefined suppress\"\n        set CARBONFLAG = 0\n      else\n        set OPTIONS = \"$OPTIONS -shared\"\n      endif\n      set SHAREDFLAG = 1\n      breaksw\n    case -framework:\n      shift\n      set OPTIONS = \"-framework $1 $OPTIONS\"\n      set CARBONFLAG = 0\n      breaksw\n    case -o:\n      shift\n      set APPFLAG = 1\n      set APPNAME = \"$1\"\n      set OPTIONS = \"$OPTIONS -o $1\"\n      breaksw\n    case -l*:\n      set LIBRARIES = \"$1 $LIBRARIES\"\n      breaksw\n    case -*:\n      set OPTIONS = \"$OPTIONS $1\"\n      breaksw\n    case *.cpp:\n      set CC = \"g++\"\n      set FILES = ($FILES $1)\n      breaksw\n    default:\n      set FILES = ($FILES $1)\n  endsw\n  shift\nend\nif ($CARBONFLAG && ! $COMPILEFLAG) then\n  $TEST $CC $OPTIONS $INCLUDE $FILES $LIBRARIES -framework Carbon\nelse\n  $TEST $CC $OPTIONS $INCLUDE $FILES $LIBRARIES\nendif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/generic.c",
    "content": "/*\n * File: generic.c\n * Last modified on Fri Sep 26 09:34:55 2014 by eroberts\n * -----------------------------------------------------\n * This file implements the generic.h interface.\n */\n\n#include <math.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include \"charset.h\"\n#include \"cmpfn.h\"\n#include \"cslib.h\"\n#include \"exception.h\"\n#include \"generic.h\"\n#include \"gevents.h\"\n#include \"gobjects.h\"\n#include \"gtransform.h\"\n#include \"gtypes.h\"\n#include \"hashmap.h\"\n#include \"pqueue.h\"\n#include \"queue.h\"\n#include \"map.h\"\n#include \"ref.h\"\n#include \"set.h\"\n#include \"stack.h\"\n#include \"strbuf.h\"\n#include \"strlib.h\"\n#include \"vector.h\"\n\n/* Private function prototypes */\nstatic void intFetchFn(va_list args, GenericType *dst);\nstatic void shortFetchFn(va_list args, GenericType *dst);\nstatic void longFetchFn(va_list args, GenericType *dst);\nstatic void floatFetchFn(va_list args, GenericType *dst);\nstatic void doubleFetchFn(va_list args, GenericType *dst);\nstatic void charFetchFn(va_list args, GenericType *dst);\nstatic void unsignedFetchFn(va_list args, GenericType *dst);\nstatic void unsignedShortFetchFn(va_list args, GenericType *dst);\nstatic void unsignedLongFetchFn(va_list args, GenericType *dst);\nstatic void unsignedCharFetchFn(va_list args, GenericType *dst);\nstatic void pointerFetchFn(va_list args, GenericType *dst);\nstatic void intStoreFn(GenericType src, void *dst);\nstatic void shortStoreFn(GenericType src, void *dst);\nstatic void longStoreFn(GenericType src, void *dst);\nstatic void floatStoreFn(GenericType src, void *dst);\nstatic void doubleStoreFn(GenericType src, void *dst);\nstatic void charStoreFn(GenericType src, void *dst);\nstatic void unsignedStoreFn(GenericType src, void *dst);\nstatic void unsignedShortStoreFn(GenericType src, void *dst);\nstatic void unsignedLongStoreFn(GenericType src, void *dst);\nstatic void unsignedCharStoreFn(GenericType src, void *dst);\nstatic void pointerStoreFn(GenericType src, void *dst);\nstatic string intToStringFn(GenericType any);\nstatic string shortToStringFn(GenericType any);\nstatic string longToStringFn(GenericType any);\nstatic string floatToStringFn(GenericType any);\nstatic string doubleToStringFn(GenericType any);\nstatic string charToStringFn(GenericType any);\nstatic string boolToStringFn(GenericType any);\nstatic string unsignedToStringFn(GenericType any);\nstatic string unsignedShortToStringFn(GenericType any);\nstatic string unsignedLongToStringFn(GenericType any);\nstatic string unsignedCharToStringFn(GenericType any);\nstatic string stringToStringFn(GenericType any);\nstatic string pointerToStringFn(GenericType any);\n\n/* Constants */\n\n#define BUFSIZE 40\n\n/* Exported entries */\n\nint size(void *arg) {\n   string type;\n\n   type = getBlockType(arg);\n   if (endsWith(type, \"Vector\")) {\n      return sizeVector((Vector) arg);\n   } else if (endsWith(type, \"PriorityQueue\")) {\n      return sizePriorityQueue((PriorityQueue) arg);\n   } else if (endsWith(type, \"Queue\")) {\n      return sizeQueue((Queue) arg);\n   } else if (endsWith(type, \"CharSet\")) {\n      return sizeCharSet((CharSet) arg);\n   } else if (endsWith(type, \"Set\")) {\n      return sizeSet((Set) arg);\n   } else if (endsWith(type, \"HashMap\")) {\n      return sizeHashMap((HashMap) arg);\n   } else if (endsWith(type, \"Map\")) {\n      return sizeMap((Map) arg);\n   } else if (endsWith(type, \"Stack\")) {\n      return sizeStack((Stack) arg);\n   } else if (endsWith(type, \"StringBuffer\")) {\n      return sizeStringBuffer((StringBuffer) arg);\n   } else {\n      error(\"size: Unrecognized type %s\", type);\n      return 0;\n   }\n}\n\nbool isEmptyGeneric(int size, ...) {\n   va_list args;\n   void *arg;\n   bool result;\n   string type;\n\n   va_start(args, size);\n   if (size == sizeof(GRectangle)) {\n      result = isEmptyGRectangle(va_arg(args, GRectangle));\n      va_end(args);\n      return result;\n   }\n   arg = va_arg(args, void *);\n   va_end(args);\n   type = getBlockType(arg);\n   if (endsWith(type, \"Vector\")) {\n      return isEmptyVector((Vector) arg);\n   } else if (endsWith(type, \"PriorityQueue\")) {\n      return isEmptyPriorityQueue((PriorityQueue) arg);\n   } else if (endsWith(type, \"Queue\")) {\n      return isEmptyQueue((Queue) arg);\n   } else if (endsWith(type, \"CharSet\")) {\n      return isEmptyCharSet((CharSet) arg);\n   } else if (endsWith(type, \"Set\")) {\n      return isEmptySet((Set) arg);\n   } else if (endsWith(type, \"HashMap\")) {\n      return isEmptyHashMap((HashMap) arg);\n   } else if (endsWith(type, \"Map\")) {\n      return isEmptyMap((Map) arg);\n   } else if (endsWith(type, \"Stack\")) {\n      return isEmptyStack((Stack) arg);\n   } else if (endsWith(type, \"StringBuffer\")) {\n      return isEmptyStringBuffer((StringBuffer) arg);\n   } else {\n      error(\"isEmpty: Unrecognized type %s\", type);\n      return false;\n   }\n}\n\nvoid clear(void *arg) {\n   string type;\n\n   type = getBlockType(arg);\n   if (endsWith(type, \"Vector\")) {\n      clearVector((Vector) arg);\n   } else if (endsWith(type, \"PriorityQueue\")) {\n      clearPriorityQueue((PriorityQueue) arg);\n   } else if (endsWith(type, \"Queue\")) {\n      clearQueue((Queue) arg);\n   } else if (endsWith(type, \"CharSet\")) {\n      clearCharSet((CharSet) arg);\n   } else if (endsWith(type, \"Set\")) {\n      clearSet((Set) arg);\n   } else if (endsWith(type, \"HashMap\")) {\n      clearHashMap((HashMap) arg);\n   } else if (endsWith(type, \"Map\")) {\n      clearMap((Map) arg);\n   } else if (endsWith(type, \"Stack\")) {\n      clearStack((Stack) arg);\n   } else if (endsWith(type, \"StringBuffer\")) {\n      clearStringBuffer((StringBuffer) arg);\n   } else {\n      error(\"clear: Unrecognized type %s\", type);\n   }\n}\n\nvoid *clone(void *arg) {\n   string type;\n\n   type = getBlockType(arg);\n   if (endsWith(type, \"Vector\")) {\n      return cloneVector((Vector) arg);\n   } else if (endsWith(type, \"PriorityQueue\")) {\n      return clonePriorityQueue((PriorityQueue) arg);\n   } else if (endsWith(type, \"Queue\")) {\n      return cloneQueue((Queue) arg);\n   } else if (endsWith(type, \"CharSet\")) {\n      return cloneCharSet((CharSet) arg);\n   } else if (endsWith(type, \"Set\")) {\n      return cloneSet((Set) arg);\n   } else if (endsWith(type, \"HashMap\")) {\n      return cloneHashMap((HashMap) arg);\n   } else if (endsWith(type, \"Map\")) {\n      return cloneMap((Map) arg);\n   } else if (endsWith(type, \"Stack\")) {\n      return cloneStack((Stack) arg);\n   } else {\n      error(\"clone: Unrecognized type %s\", type);\n      return NULL;\n   }\n}\n\nvoid *get(void *arg, ...) {\n   string type;\n   void *key;\n   int index;\n   va_list args;\n\n   type = getBlockType(arg);\n   if (endsWith(type, \"Vector\")) {\n      va_start(args, arg);\n      index = va_arg(args, int);\n      va_end(args);\n      return getVector((Vector) arg, index);\n   } else if (endsWith(type, \"HashMap\")) {\n      va_start(args, arg);\n      key = va_arg(args, string);\n      va_end(args);\n      return getHashMap((HashMap) arg, key);\n   } else if (endsWith(type, \"Map\")) {\n      va_start(args, arg);\n      key = va_arg(args, void *);\n      va_end(args);\n      return getMap((Map) arg, key);\n   } else {\n      error(\"get: Unrecognized type %s\", type);\n      return NULL;\n   }\n}\n\nvoid set(void *arg, ...) {\n   string type;\n   int index;\n   void *value;\n   va_list args;\n\n   type = getBlockType(arg);\n   if (endsWith(type, \"Vector\")) {\n      va_start(args, arg);\n      index = va_arg(args, int);\n      value = va_arg(args, void *);\n      va_end(args);\n      setVector((Vector) arg, index, value);\n   } else {\n      error(\"set: Unrecognized type %s\", type);\n   }\n}\n\nvoid put(void *arg, ...) {\n   string type;\n   string key;\n   void *value;\n   va_list args;\n\n   type = getBlockType(arg);\n   if (endsWith(type, \"HashMap\")) {\n      va_start(args, arg);\n      key = va_arg(args, string);\n      value = va_arg(args, void *);\n      va_end(args);\n      putHashMap((HashMap) arg, key, value);\n   } else if (endsWith(type, \"Map\")) {\n      va_start(args, arg);\n      key = va_arg(args, void *);\n      value = va_arg(args, void *);\n      va_end(args);\n      putMap((Map) arg, key, value);\n   } else {\n      error(\"put: Unrecognized type %s\", type);\n   }\n}\n\nbool containsKey(void *arg, void *key) {\n   string type;\n\n   type = getBlockType(arg);\n   if (endsWith(type, \"HashMap\")) {\n      return containsKeyHashMap((HashMap) arg, (string) key);\n   } else if (endsWith(type, \"Map\")) {\n      return containsKeyMap((Map) arg, key);\n   } else {\n      error(\"containsKey: Unrecognized type %s\", type);\n      return false;\n   }\n}\n\nbool containsGeneric(int size, ...) {\n   string type;\n   void *value, *arg;\n   double x, y;\n   char ch;\n   bool result;\n   va_list args;\n   GRectangle r;\n   GPoint pt;\n\n   va_start(args, size);\n   if (size == sizeof(GRectangle)) {\n      r = va_arg(args, GRectangle);\n      pt = va_arg(args, GPoint);\n      va_end(args);\n      return containsGRectangle(r, pt);\n   }\n   arg = va_arg(args, void *);\n   type = getBlockType(arg);\n   if (endsWith(type, \"CharSet\")) {\n      ch = va_arg(args, int);\n      va_end(args);\n      return containsCharSet((CharSet) arg, ch);\n   } else if (endsWith(type, \"Set\")) {\n      result = containsSetFromArgs((Set) arg, args);\n      va_end(args);\n      return result;\n   } else if (endsWith(type, \"GObject\")) {\n      x = va_arg(args, double);\n      y = va_arg(args, double);\n      result = containsGObject((GObject) arg, x, y);\n      va_end(args);\n      return result;\n   } else {\n      error(\"contains: Unrecognized type %s\", type);\n      return false;\n   }\n}\n\nvoid add(void *arg, ...) {\n   string type;\n   char ch;\n   void *value;\n   va_list args;\n\n   type = getBlockType(arg);\n   if (endsWith(type, \"Vector\")) {\n      va_start(args, arg);\n      value = va_arg(args, void *);\n      va_end(args);\n      addVector((Vector) arg, value);\n   } else if (endsWith(type, \"CharSet\")) {\n      va_start(args, arg);\n      ch = va_arg(args, int);\n      va_end(args);\n      addCharSet((CharSet) arg, ch);\n   } else if (endsWith(type, \"Set\")) {\n      va_start(args, arg);\n      addSetFromArgs((Set) arg, args);\n      va_end(args);\n   } else if (endsWith(type, \"GWindow\")) {\n      va_start(args, arg);\n      addGWindow((GWindow) arg, va_arg(args, GObject));\n      va_end(args);\n   } else if (endsWith(type, \"GCompound\")) {\n      va_start(args, arg);\n      addGCompound((GWindow) arg, va_arg(args, GObject));\n      va_end(args);\n   } else {\n      error(\"add: Unrecognized type %s\", type);\n   }\n}\n\nvoid remove(void *arg, ...) {\n   GObject gobj;\n   string type;\n   void *key;\n   int index;\n   char ch;\n   va_list args;\n\n   type = getBlockType(arg);\n   if (endsWith(type, \"Vector\")) {\n      va_start(args, arg);\n      index = va_arg(args, int);\n      va_end(args);\n      removeVector((Vector) arg, index);\n   } else if (endsWith(type, \"CharSet\")) {\n      va_start(args, arg);\n      ch = va_arg(args, int);\n      va_end(args);\n      removeCharSet((CharSet) arg, ch);\n   } else if (endsWith(type, \"Set\")) {\n      va_start(args, arg);\n      removeSetFromArgs((Set) arg, args);\n      va_end(args);\n   } else if (endsWith(type, \"HashMap\")) {\n      va_start(args, arg);\n      key = va_arg(args, string);\n      va_end(args);\n      removeHashMap((HashMap) arg, key);\n   } else if (endsWith(type, \"Map\")) {\n      va_start(args, arg);\n      key = va_arg(args, void *);\n      va_end(args);\n      removeMap((Map) arg, key);\n   } else if (endsWith(type, \"GWindow\")) {\n      va_start(args, arg);\n      gobj = va_arg(args, GObject);\n      va_end(args);\n      removeGWindow((GWindow) arg, key);\n   } else {\n      error(\"remove: Unrecognized type %s\", type);\n   }\n}\n\n/*\n * Implementation notes: enqueue\n * -----------------------------\n * The complexity in this function comes from trying to check for\n * int priority values.  The code reads the priority both as an int\n * and as a double and then sanity-checks the two.\n */\n\n#define DTHRESHOLD 1.0E-100\n#define ITHRESHOLD ((unsigned) -1 >> 2)\n\nvoid enqueue(void *arg, ...) {\n   string type;\n   void *value;\n   double priority;\n   int ipriority;\n   va_list args;\n\n   type = getBlockType(arg);\n   if (endsWith(type, \"PriorityQueue\")) {\n      va_start(args, arg);\n      value = va_arg(args, void *);\n      priority = va_arg(args, double);\n      va_end(args);\n      va_start(args, arg);\n      va_arg(args, void *);\n      ipriority = va_arg(args, int);\n      va_end(args);\n      if (fabs(priority) < DTHRESHOLD && abs(ipriority) < ITHRESHOLD) {\n         priority = ipriority;\n      }\n      enqueuePriorityQueue((PriorityQueue) arg, value, priority);\n   } else if (endsWith(type, \"Queue\")) {\n      va_start(args, arg);\n      value = va_arg(args, void *);\n      va_end(args);\n      enqueueQueue((Queue) arg, value);\n   } else {\n      error(\"enqueue: Unrecognized type %s\", type);\n   }\n}\n\nvoid *dequeue(void *arg) {\n   string type;\n\n   type = getBlockType(arg);\n   if (endsWith(type, \"PriorityQueue\")) {\n      return dequeuePriorityQueue((PriorityQueue) arg);\n   } else if (endsWith(type, \"Queue\")) {\n      return dequeueQueue((Queue) arg);\n   } else {\n      error(\"dequeue: Unrecognized type %s\", type);\n      return NULL;\n   }\n}\n\nvoid *peek(void *arg) {\n   string type;\n\n   type = getBlockType(arg);\n   if (endsWith(type, \"PriorityQueue\")) {\n      return peekPriorityQueue((PriorityQueue) arg);\n   } else if (endsWith(type, \"Queue\")) {\n      return peekQueue((Queue) arg);\n   } else if (endsWith(type, \"Stack\")) {\n      return peekStack((Stack) arg);\n   } else {\n      error(\"peek: Unrecognized type %s\", type);\n      return NULL;\n   }\n}\n\nbool equals(void *s1, void *s2) {\n   string type;\n\n   type = getBlockType(s1);\n   if (endsWith(type, \"CharSet\")) {\n      return equalsCharSet((CharSet) s1, (CharSet) s2);\n   } else if (endsWith(type, \"Set\")) {\n      return equalsSet((Set) s1, (Set) s2);\n   } else {\n      error(\"equals: Unrecognized type %s\", type);\n      return false;\n   }\n}\n\nbool isSubset(void *s1, void *s2) {\n   string type;\n\n   type = getBlockType(s1);\n   if (endsWith(type, \"CharSet\")) {\n      return isSubsetCharSet((CharSet) s1, (CharSet) s2);\n   } else if (endsWith(type, \"Set\")) {\n      return isSubsetSet((Set) s1, (Set) s2);\n   } else {\n      error(\"isSubset: Unrecognized type %s\", type);\n      return false;\n   }\n}\n\nvoid *xunion(void *s1, void *s2) {\n   string type;\n\n   type = getBlockType(s1);\n   if (endsWith(type, \"CharSet\")) {\n      return unionCharSet((CharSet) s1, (CharSet) s2);\n   } else if (endsWith(type, \"Set\")) {\n      return unionSet((Set) s1, (Set) s2);\n   } else {\n      error(\"union: Unrecognized type %s\", type);\n      return NULL;\n   }\n}\n\nvoid *intersection(void *s1, void *s2) {\n   string type;\n\n   type = getBlockType(s1);\n   if (endsWith(type, \"CharSet\")) {\n      return intersectionCharSet((CharSet) s1, (CharSet) s2);\n   } else if (endsWith(type, \"Set\")) {\n      return intersectionSet((Set) s1, (Set) s2);\n   } else {\n      error(\"intersection: Unrecognized type %s\", type);\n      return NULL;\n   }\n}\n\nvoid *setDifference(void *s1, void *s2) {\n   string type;\n\n   type = getBlockType(s1);\n   if (endsWith(type, \"CharSet\")) {\n      return setDifferenceCharSet((CharSet) s1, (CharSet) s2);\n   } else if (endsWith(type, \"Set\")) {\n      return setDifferenceSet((Set) s1, (Set) s2);\n   } else {\n      error(\"setDifference: Unrecognized type %s\", type);\n      return NULL;\n   }\n}\n\ndouble getXGeneric(int size, ...) {\n   va_list args;\n   GPoint pt;\n   GRectangle r;\n   void *arg;\n   string type;\n\n   va_start(args, size);\n   if (size == sizeof(GPoint)) {\n      pt = va_arg(args, GPoint);\n      va_end(args);\n      return getXGPoint(pt);\n   } else if (size == sizeof(GRectangle)) {\n      r = va_arg(args, GRectangle);\n      va_end(args);\n      return getXGRectangle(r);\n   }\n   arg = va_arg(args, void *);\n   va_end(args);\n   type = getBlockType(arg);\n   if (endsWith(type, \"GEvent\")) {\n      return getXGEvent((GEvent) arg);\n   } else if (endsWith(type, \"GObject\")) {\n      return getXGObject((GObject) arg);\n   } else {\n      error(\"getX: Illegal argument type\");\n      return 0;\n   }\n}\n\ndouble getYGeneric(int size, ...) {\n   va_list args;\n   GPoint pt;\n   GRectangle r;\n   void *arg;\n   string type;\n\n   va_start(args, size);\n   if (size == sizeof(GPoint)) {\n      pt = va_arg(args, GPoint);\n      va_end(args);\n      return getYGPoint(pt);\n   } else if (size == sizeof(GRectangle)) {\n      r = va_arg(args, GRectangle);\n      va_end(args);\n      return getYGRectangle(r);\n   }\n   arg = va_arg(args, void *);\n   va_end(args);\n   type = getBlockType(arg);\n   if (endsWith(type, \"GEvent\")) {\n      return getYGEvent((GEvent) arg);\n   } else if (endsWith(type, \"GObject\")) {\n      return getYGObject((GObject) arg);\n   } else {\n      error(\"getY: Illegal argument type\");\n      return 0;\n   }\n}\n\ndouble getWidthGeneric(int size, ...) {\n   va_list args;\n   GDimension dim;\n   GRectangle r;\n   string type;\n   void *arg;\n\n   va_start(args, size);\n   if (size == sizeof(GDimension)) {\n      dim = va_arg(args, GDimension);\n      va_end(args);\n      return getWidthGDimension(dim);\n   } else if (size == sizeof(GRectangle)) {\n      r = va_arg(args, GRectangle);\n      va_end(args);\n      return getWidthGRectangle(r);\n   }\n   arg = va_arg(args, void *);\n   va_end(args);\n   type = getBlockType(arg);\n   if (endsWith(type, \"GWindow\")) {\n      return getWidthGWindow((GWindow) arg);\n   } else if (endsWith(type, \"GObject\")) {\n      return getWidthGObject((GObject) arg);\n   } else {\n      error(\"getWidth: Illegal argument type\");\n      return 0;\n   }\n}\n\ndouble getHeightGeneric(int size, ...) {\n   va_list args;\n   GDimension dim;\n   GRectangle r;\n   string type;\n   void *arg;\n\n   va_start(args, size);\n   if (size == sizeof(GDimension)) {\n      dim = va_arg(args, GDimension);\n      va_end(args);\n      return getHeightGDimension(dim);\n   } else if (size == sizeof(GRectangle)) {\n      r = va_arg(args, GRectangle);\n      va_end(args);\n      return getHeightGRectangle(r);\n   }\n   arg = va_arg(args, void *);\n   va_end(args);\n   type = getBlockType(arg);\n   if (endsWith(type, \"GWindow\")) {\n      return getHeightGWindow((GWindow) arg);\n   } else if (endsWith(type, \"GObject\")) {\n      return getHeightGObject((GObject) arg);\n   } else {\n      error(\"getHeight: Illegal argument type\");\n      return 0;\n   }\n}\n\nstring toStringGeneric(int size, ...) {\n   StringBuffer sb;\n   va_list args;\n   GPoint pt;\n   GRectangle r;\n   string type, result;\n   void *arg;\n\n   va_start(args, size);\n   if (size == sizeof(GPoint)) {\n      sb = newStringBuffer();\n      pt = va_arg(args, GPoint);\n      va_end(args);\n      sbprintf(sb, \"(%g, %g)\", pt.x, pt.y);\n      result = copyString(getString(sb));\n      freeStringBuffer(sb);\n      return result;\n   } else if (size == sizeof(GRectangle)) {\n      sb = newStringBuffer();\n      r = va_arg(args, GRectangle);\n      va_end(args);\n      sbprintf(sb, \"(%g, %g, %g, %g)\", r.x, r.y, r.width, r.height);\n      result = copyString(getString(sb));\n      freeStringBuffer(sb);\n      return result;\n   }\n   arg = va_arg(args, void *);\n   va_end(args);\n   type = getBlockType(arg);\n   if (endsWith(type, \"StringBuffer\")) {\n      return copyString(getString((StringBuffer) arg));\n   } else if (endsWith(type, \"GTransform\")) {\n      return toStringGTransform((GTransform) arg);\n   } else {\n      error(\"toString: Illegal argument type\");\n      return NULL;\n   }\n}\n\nvoid setVisible(void *arg, bool flag) {\n   string type;\n\n   type = getBlockType(arg);\n   if (endsWith(type, \"GObject\")) {\n      setVisibleGObject((GObject) arg, flag);\n   } else if (endsWith(type, \"GWindow\")) {\n      setVisibleGWindow((GWindow) arg, flag);\n   } else {\n      error(\"setVisible: Unrecognized type %s\", type);\n   }\n}\n\nbool isVisible(void *arg) {\n   string type;\n\n   type = getBlockType(arg);\n   if (endsWith(type, \"GObject\")) {\n      return isVisibleGObject((GObject) arg);\n   } else if (endsWith(type, \"GWindow\")) {\n      return isVisibleGWindow((GWindow) arg);\n   } else {\n      error(\"isVisible: Unrecognized type %s\", type);\n      return false;\n   }\n}\n\nvoid setColor(void *arg, string color) {\n   string type;\n\n   type = getBlockType(arg);\n   if (endsWith(type, \"GObject\")) {\n      setColorGObject((GObject) arg, color);\n   } else if (endsWith(type, \"GWindow\")) {\n      setColorGWindow((GWindow) arg, color);\n   } else {\n      error(\"setColor: Unrecognized type %s\", type);\n   }\n}\n\nvoid rotate(void *arg, double theta) {\n   string type;\n\n   type = getBlockType(arg);\n   if (endsWith(type, \"GObject\")) {\n      // Fill in\n   } else if (endsWith(type, \"GTransform\")) {\n      rotateGTransform((GTransform) arg, theta);\n   } else {\n      error(\"rotate: Unrecognized type %s\", type);\n   }\n}\n\nvoid scale(void *arg, double sx, double sy) {\n   string type;\n\n   type = getBlockType(arg);\n   if (endsWith(type, \"GObject\")) {\n      // Fill in\n   } else if (endsWith(type, \"GTransform\")) {\n      scaleGTransform((GTransform) arg, sx, sy);\n   } else {\n      error(\"scale: Unrecognized type %s\", type);\n   }\n}\n\nint getTypeSizeForType(string type) {\n   if (stringEqual(type, \"int\")) return sizeof(int);\n   if (stringEqual(type, \"short\")) return sizeof(short);\n   if (stringEqual(type, \"long\")) return sizeof(long);\n   if (stringEqual(type, \"float\")) return sizeof(float);\n   if (stringEqual(type, \"double\")) return sizeof(double);\n   if (stringEqual(type, \"char\")) return sizeof(char);\n   if (stringEqual(type, \"bool\")) return sizeof(bool);\n   if (stringEqual(type, \"unsigned\")) return sizeof(unsigned);\n   if (stringEqual(type, \"unsigned short\")) return sizeof(unsigned short);\n   if (stringEqual(type, \"unsigned long\")) return sizeof(unsigned long);\n   if (stringEqual(type, \"unsigned char\")) return sizeof(unsigned char);\n   if (stringEqual(type, \"char *\")) return sizeof(char *);\n   if (stringEqual(type, \"string\")) return sizeof(string);\n   return sizeof(void *);\n}\n\nCompareFn getCompareFnForType(string type) {\n   if (stringEqual(type, \"int\")) return intCmpFn;\n   if (stringEqual(type, \"short\")) return shortCmpFn;\n   if (stringEqual(type, \"long\")) return longCmpFn;\n   if (stringEqual(type, \"float\")) return floatCmpFn;\n   if (stringEqual(type, \"double\")) return doubleCmpFn;\n   if (stringEqual(type, \"char\")) return charCmpFn;\n   if (stringEqual(type, \"bool\")) return intCmpFn;\n   if (stringEqual(type, \"unsigned\")) return unsignedCmpFn;\n   if (stringEqual(type, \"unsigned short\")) return unsignedShortCmpFn;\n   if (stringEqual(type, \"unsigned long\")) return unsignedLongCmpFn;\n   if (stringEqual(type, \"unsigned char\")) return unsignedCharCmpFn;\n   if (stringEqual(type, \"char *\")) return stringCmpFn;\n   if (stringEqual(type, \"string\")) return stringCmpFn;\n   return pointerCmpFn;\n}\n\nFetchFn getFetchFnForType(string type) {\n   if (stringEqual(type, \"int\")) return intFetchFn;\n   if (stringEqual(type, \"short\")) return shortFetchFn;\n   if (stringEqual(type, \"long\")) return longFetchFn;\n   if (stringEqual(type, \"float\")) return floatFetchFn;\n   if (stringEqual(type, \"double\")) return doubleFetchFn;\n   if (stringEqual(type, \"char\")) return charFetchFn;\n   if (stringEqual(type, \"bool\")) return intFetchFn;\n   if (stringEqual(type, \"unsigned\")) return unsignedFetchFn;\n   if (stringEqual(type, \"unsigned short\")) return unsignedShortFetchFn;\n   if (stringEqual(type, \"unsigned long\")) return unsignedLongFetchFn;\n   if (stringEqual(type, \"unsigned char\")) return unsignedCharFetchFn;\n   return pointerFetchFn;\n}\n\nStoreFn getStoreFnForType(string type) {\n   if (stringEqual(type, \"int\")) return intStoreFn;\n   if (stringEqual(type, \"short\")) return shortStoreFn;\n   if (stringEqual(type, \"long\")) return longStoreFn;\n   if (stringEqual(type, \"float\")) return floatStoreFn;\n   if (stringEqual(type, \"double\")) return doubleStoreFn;\n   if (stringEqual(type, \"char\")) return charStoreFn;\n   if (stringEqual(type, \"bool\")) return intStoreFn;\n   if (stringEqual(type, \"unsigned\")) return unsignedStoreFn;\n   if (stringEqual(type, \"unsigned short\")) return unsignedShortStoreFn;\n   if (stringEqual(type, \"unsigned long\")) return unsignedLongStoreFn;\n   if (stringEqual(type, \"unsigned char\")) return unsignedCharStoreFn;\n   return pointerStoreFn;\n}\n\nToStringFn getToStringFn(string type) {\n   if (stringEqual(type, \"int\")) return intToStringFn;\n   if (stringEqual(type, \"short\")) return shortToStringFn;\n   if (stringEqual(type, \"long\")) return longToStringFn;\n   if (stringEqual(type, \"float\")) return floatToStringFn;\n   if (stringEqual(type, \"double\")) return doubleToStringFn;\n   if (stringEqual(type, \"char\")) return charToStringFn;\n   if (stringEqual(type, \"bool\")) return boolToStringFn;\n   if (stringEqual(type, \"unsigned\")) return unsignedToStringFn;\n   if (stringEqual(type, \"unsigned short\")) return unsignedShortToStringFn;\n   if (stringEqual(type, \"unsigned long\")) return unsignedLongToStringFn;\n   if (stringEqual(type, \"unsigned char\")) return unsignedCharToStringFn;\n   if (stringEqual(type, \"char *\")) return stringToStringFn;\n   if (stringEqual(type, \"string\")) return stringToStringFn;\n   return pointerToStringFn;\n}\n\n/* Private functions */\n\nstatic void intFetchFn(va_list args, GenericType *dst) {\n   dst->intRep = va_arg(args, int);\n}\n\nstatic void shortFetchFn(va_list args, GenericType *dst) {\n   dst->shortRep = (short) va_arg(args, int);\n}\n\nstatic void longFetchFn(va_list args, GenericType *dst) {\n   dst->longRep = va_arg(args, long);\n}\n\nstatic void floatFetchFn(va_list args, GenericType *dst) {\n   dst->floatRep = (float) va_arg(args, double);\n}\n\nstatic void doubleFetchFn(va_list args, GenericType *dst) {\n   dst->doubleRep = va_arg(args, double);\n}\n\nstatic void charFetchFn(va_list args, GenericType *dst) {\n   dst->charRep = (char) va_arg(args, int);\n}\n\nstatic void unsignedFetchFn(va_list args, GenericType *dst) {\n   dst->unsignedRep = va_arg(args, unsigned);\n}\n\nstatic void unsignedShortFetchFn(va_list args, GenericType *dst) {\n   dst->unsignedShortRep = (unsigned short) va_arg(args, int);\n}\n\nstatic void unsignedLongFetchFn(va_list args, GenericType *dst) {\n   dst->unsignedLongRep = va_arg(args, unsigned long);\n}\n\nstatic void unsignedCharFetchFn(va_list args, GenericType *dst) {\n   dst->unsignedCharRep = (unsigned char) va_arg(args, int);\n}\n\nstatic void pointerFetchFn(va_list args, GenericType *dst) {\n   dst->pointerRep = va_arg(args, void *);\n}\n\nstatic void intStoreFn(GenericType src, void *dst) {\n   *((int *) dst) = src.intRep;\n}\n\nstatic void shortStoreFn(GenericType src, void *dst) {\n   *((short *) dst) = src.shortRep;\n}\n\nstatic void longStoreFn(GenericType src, void *dst) {\n   *((long *) dst) = src.longRep;\n}\n\nstatic void floatStoreFn(GenericType src, void *dst) {\n   *((float *) dst) = src.floatRep;\n}\n\nstatic void doubleStoreFn(GenericType src, void *dst) {\n   *((double *) dst) = src.doubleRep;\n}\n\nstatic void charStoreFn(GenericType src, void *dst) {\n   *((char *) dst) = src.charRep;\n}\n\nstatic void unsignedStoreFn(GenericType src, void *dst) {\n   *((unsigned *) dst) = src.unsignedRep;\n}\n\nstatic void unsignedShortStoreFn(GenericType src, void *dst) {\n   *((unsigned short *) dst) = src.unsignedShortRep;\n}\n\nstatic void unsignedLongStoreFn(GenericType src, void *dst) {\n   *((unsigned long *) dst) = src.unsignedLongRep;\n}\n\nstatic void unsignedCharStoreFn(GenericType src, void *dst) {\n   *((unsigned char *) dst) = src.unsignedCharRep;\n}\n\nstatic void pointerStoreFn(GenericType src, void *dst) {\n   *((void **) dst) = src.pointerRep;\n}\n\nstatic string intToStringFn(GenericType any) {\n   char buffer[BUFSIZE];\n\n   sprintf(buffer, \"%d\", any.intRep);\n   return copyString(buffer);\n}\n\nstatic string shortToStringFn(GenericType any) {\n   char buffer[BUFSIZE];\n\n   sprintf(buffer, \"%d\", any.shortRep);\n   return copyString(buffer);\n}\n\nstatic string longToStringFn(GenericType any) {\n   char buffer[BUFSIZE];\n\n   sprintf(buffer, \"%ldL\", any.longRep);\n   return copyString(buffer);\n}\n\nstatic string floatToStringFn(GenericType any) {\n   char buffer[BUFSIZE];\n\n   sprintf(buffer, \"%g\", any.floatRep);\n   return copyString(buffer);\n}\n\nstatic string doubleToStringFn(GenericType any) {\n   char buffer[BUFSIZE];\n\n   sprintf(buffer, \"%g\", any.doubleRep);\n   return copyString(buffer);\n}\n\nstatic string charToStringFn(GenericType any) {\n   char buffer[BUFSIZE];\n\n   sprintf(buffer, \"%c\", any.charRep);\n   return copyString(buffer);\n}\n\nstatic string boolToStringFn(GenericType any) {\n   char buffer[BUFSIZE];\n\n   sprintf(buffer, \"%s\", (any.boolRep) ? \"true\" :\"false\");\n   return copyString(buffer);\n}\n\nstatic string unsignedToStringFn(GenericType any) {\n   char buffer[BUFSIZE];\n\n   sprintf(buffer, \"%u\", any.unsignedRep);\n   return copyString(buffer);\n}\n\nstatic string unsignedShortToStringFn(GenericType any) {\n   char buffer[BUFSIZE];\n\n   sprintf(buffer, \"%u\", any.unsignedShortRep);\n   return copyString(buffer);\n}\n\nstatic string unsignedLongToStringFn(GenericType any) {\n   char buffer[BUFSIZE];\n\n   sprintf(buffer, \"%luL\", any.unsignedLongRep);\n   return copyString(buffer);\n}\n\nstatic string unsignedCharToStringFn(GenericType any) {\n   char buffer[BUFSIZE];\n\n   sprintf(buffer, \"%c\", any.unsignedCharRep);\n   return copyString(buffer);\n}\n\nstatic string stringToStringFn(GenericType any) {\n   return copyString((string) any.pointerRep);\n}\n\nstatic string pointerToStringFn(GenericType any) {\n   char buffer[BUFSIZE];\n\n   sprintf(buffer, \"0x%lX\", (long) any.pointerRep);\n   return copyString(buffer);\n}\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/generic.h",
    "content": "/*\n * File: generic.h\n * ---------------\n * This interface defines those functions that apply to more than one type.\n */\n\n#ifndef _generic_h\n#define _generic_h\n\n#include \"cmpfn.h\"\n#include \"cslib.h\"\n\n/* Avoid various name conflicts */\n\n#define remove xremove\n\n#ifdef __macosx__\n#  define dequeue _dequeue\n#  define enqueue _enqueue\n#endif\n\n#define union(s1, s2) xunion(s1, s2)\n#define getX(arg) getXGeneric(sizeof arg, arg)\n#define getY(arg) getYGeneric(sizeof arg, arg)\n#define getWidth(arg) getWidthGeneric(sizeof arg, arg)\n#define getHeight(arg) getHeightGeneric(sizeof arg, arg)\n#define toString(arg) toStringGeneric(sizeof arg, arg)\n#define isEmpty(arg) isEmptyGeneric(sizeof arg, arg)\n#define contains(arg, value) containsGeneric(sizeof arg, arg, value)\n\n/*\n * Type: GenericType\n * -----------------\n * Union capable of holding any of the primitive types.\n */\n\ntypedef union {\n    int intRep;\n    short shortRep;\n    long longRep;\n    float floatRep;\n    double doubleRep;\n    char charRep;\n    bool boolRep;\n    unsigned unsignedRep;\n    unsigned short unsignedShortRep;\n    unsigned long unsignedLongRep;\n    unsigned char unsignedCharRep;\n    void *pointerRep;\n} GenericType;\n\n/*\n * Friend type: FetchFn\n * --------------------\n * This function type fetches an argument from an argument list into the\n * address indicated by <code>dst</code>.\n */\n\ntypedef void (*FetchFn)(va_list args, GenericType *dst);\n\n/*\n * Friend type: StoreFn\n * --------------------\n * This function type stores a value from the generic object into the\n * address indicated by <code>dst</code>.\n */\n\ntypedef void (*StoreFn)(GenericType src, void *dst);\n\n/*\n * Friend type: ToStringFn\n * -----------------------\n * This function type converts a generic argument to a string.\n */\n\ntypedef string (*ToStringFn)(GenericType dst);\n\n/*\n * Function: size\n * Usage: n = size(arg);\n * ---------------------\n * Returns the number of elements in the collection.\n */\n\nint size(void *arg);\n\n/*\n * Function: isEmpty\n * Usage: if (isEmpty(arg)) . . .\n * ------------------------------\n * Returns <code>true</code> if the collection is empty.\n */\n\nbool isEmptyGeneric(int size, ...);\n\n/*\n * Function: clear\n * Usage: clear(arg);\n * ------------------\n * Removes all elements from the collection.\n */\n\nvoid clear(void *arg);\n\n/*\n * Function: clone\n * Usage: clone(arg);\n * ------------------\n * Creates a copy of the collection.\n */\n\nvoid *clone(void *arg);\n\n/*\n * Function: get\n * Usage: value = get(arg, ...);\n * -----------------------------\n * Gets a value from the collection.  The format of the argument list\n * depends on the collection type.  See the documentation of the\n * individual type for details.\n */\n\nvoid *get(void *arg, ...);\n\n/*\n * Function: set\n * Usage: set(arg, ...);\n * ---------------------\n * Sets a specific element in the collection.  The format of the argument\n * list depends on the collection type.  See the documentation of the\n * individual type for details.\n */\n\nvoid set(void *arg, ...);\n\n/*\n * Function: put\n * Usage: put(arg, ...);\n * ---------------------\n * Puts a value into the collection.  By convention, this verb is used\n * in preference to <code>set</code> or <code>add</code> for maps.  The\n * format of the argument list depends on the collection type.  See the\n * documentation of the individual type for details.\n */\n\nvoid put(void *arg, ...);\n\n/*\n * Function: containsKey\n * Usage: if (containsKey(arg, key)) . . .\n * ---------------------------------------\n * Checks whether the specified key is in the map.\n */\n\nbool containsKey(void *arg, void *key);\n\n/*\n * Function: contains\n * Usage: if (contains(arg, ...)) . . .\n * ------------------------------------\n * Checks whether a set contains the value specified by the argument list,\n * which may vary according to the base type.\n */\n\nbool containsGeneric(int size, ...);\n\n/*\n * Function: add\n * Usage: add(arg, ...);\n * ---------------------\n * Adds a value to the collection.  The format of the argument list depends\n * on the collection type.  See the documentation of the individual type\n * for details.\n */\n\nvoid add(void *arg, ...);\n\n/*\n * Function: remove\n * Usage: remove(arg, ...);\n * ------------------------\n * Removes a value from the collection.  The format of the argument list\n * depends on the collection type.  See the documentation of the individual\n * type for details.\n */\n\nvoid remove(void *arg, ...);\n\n/*\n * Function: enqueue\n * Usage: enqueue(arg, ...);\n * -------------------------\n * Adds a new value to the queue.  The format of the argument list differs\n * slightly for the <code>Queue</code> and <code>PriorityQueue</code> types.\n * See the documentation of the individual type for details.\n */\n\nvoid enqueue(void *arg, ...);\n\n/*\n * Function: dequeue\n * Usage: value = dequeue(arg);\n * ----------------------------\n * Removes and returns the first item in the queue.\n */\n\nvoid *dequeue(void *arg);\n\n/*\n * Function: peek\n * Usage: peek(arg);\n * -----------------\n * Returns the first item in the collection without removing it.\n */\n\nvoid *peek(void *arg);\n\n/*\n * Function: equals\n * Usage: if (equals(s1, s2)) . . .\n * --------------------------------\n * Returns <code>true</code> if the sets are equal.\n */\n\nbool equals(void *s1, void *s2);\n\n/*\n * Function: isSubset\n * Usage: if (isSubset(s1, s2)) . . .\n * ----------------------------------\n * Returns <code>true</code> if <code>s1</code> is a subset of\n * <code>s2</code>.\n */\n\nbool isSubset(void *s1, void *s2);\n\n/*\n * Function: union\n * Usage: set = union(s1, s2);\n * ---------------------------\n * Returns the union of <code>s1</code> and <code>s2</code>.\n */\n\nvoid *union(void *s1, void *s2);\n\n/*\n * Function: intersection\n * Usage: set = intersection(s1, s2);\n * ----------------------------------\n * Returns the intersection of the <code>s1</code> and <code>s2</code>.\n */\n\nvoid *intersection(void *s1, void *s2);\n\n/*\n * Function: setDifference\n * Usage: set = setDifference(s1, s2);\n * -----------------------------------\n * Returns the set difference of <code>s1</code> and <code>s2</code>.\n */\n\nvoid *setDifference(void *s1, void *s2);\n\n/*\n * Function: getX\n * Usage: x = getX(any);\n * ---------------------\n * Returns the x component of the value.\n */\n\ndouble getXGeneric(int size, ...);\n\n/*\n * Function: getY\n * Usage: y = getY(any);\n * ---------------------\n * Returns the y component of the value.\n */\n\ndouble getYGeneric(int size, ...);\n\n/*\n * Function: getWidth\n * Usage: width = getWidth(any);\n * -----------------------------\n * Returns the width component of the value.\n */\n\ndouble getWidthGeneric(int size, ...);\n\n/*\n * Function: getHeight\n * Usage: height = getHeight(any);\n * -------------------------------\n * Returns the height component of the value.\n */\n\ndouble getHeightGeneric(int size, ...);\n\n/*\n * Function: toString\n * Usage: str = toString(arg);\n * ---------------------------\n * Converts the argument to a string, if possible\n */\n\nstring toStringGeneric(int size, ...);\n\n/*\n * Function: setVisible\n * Usage: setVisible(arg, flag);\n * -----------------------------\n * Sets whether the argument is visible.\n */\n\nvoid setVisible(void *arg, bool flag);\n\n/*\n * Function: isVisible\n * Usage: if (isVisible(arg)) . . .\n * --------------------------------\n * Returns <code>true</code> if the argument is visible.\n */\n\nbool isVisible(void *arg);\n\n/*\n * Function: setColor\n * Usage: setColor(arg, color);\n * ----------------------------\n * Sets the color of the argument.\n */\n\nvoid setColor(void *arg, string color);\n\n/*\n * Function: rotate\n * Usage: rotate(arg, theta);\n * --------------------------\n * Rotates the argument (which is either a <code>GTransform</code> or a\n * <code>GObject</code>) by <code>theta</code> degrees counterclockwise.\n */\n\nvoid rotate(void *arg, double theta);\n\n/*\n * Function: scale\n * Usage: scale(arg, sx, sy);\n * --------------------------\n * Scales the argument (which is either a <code>GTransform</code> or a\n * <code>GObject</code>) by theta degrees counterclockwise.\n */\n\nvoid scale(void *arg, double sx, double sy);\n\n/*\n * Friend function: getTypeSizeForType\n * Usage: size = getTypeSizeForType(type);\n * ---------------------------------------\n * Returns the size in bytes for the specified type.\n */\n\nint getTypeSizeForType(string type);\n\n/*\n * Friend function: getCompareFnForType\n * Usage: fn = getCompareFnForType(type);\n * --------------------------------------\n * Returns the comparison function appropriate to the type.\n */\n\nCompareFn getCompareFnForType(string type);\n\n/*\n * Friend function: getFetchFnForType\n * Usage: fn = getFetchFnForType(type);\n * ------------------------------------\n * Returns a function that can fetch an argument of the specified type\n * from a <code>va_list</code> parameter.  The pattern for calling that\n * function is\n *\n *<pre>\n *    fn(args, &arg);\n *</pre>\n *\n * where <code>arg</code> is a <code>GenericType</code> variable.\n */\n\nFetchFn getFetchFnForType(string type);\n\n/*\n * Friend function: getStoreFnForType\n * Usage: fn = getStoreFnForType(type);\n * ------------------------------------\n * Returns a function that can store a generic argument through a\n * destination pointer.  The pattern for calling that function is\n *\n *<pre>\n *    fn(src, dst);\n *</pre>\n *\n * where <code>src</code> is a <code>GenericType</code> variable\n * and <code>dst</code> is a pointer to the destination.\n */\n\nStoreFn getStoreFnForType(string type);\n\n/*\n * Friend function: getToStringFn\n * Usage: fn = getToStringFn(type);\n * --------------------------------\n * Returns a function that can convert a generic value of the specified\n * type to a string.  This function is used primarily for debugging.\n */\n\nToStringFn getToStringFn(string type);\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/gevents.c",
    "content": "/*\n * File: gevents.c\n * ---------------\n * This file implements the machine-independent functions for the event\n * types defined in the gevents.h interface.  The actual functions for\n * receiving events from the environment are implemented in the platform\n * package.\n */\n\n#include \"cslib.h\"\n#include \"gevents.h\"\n#include \"ginteractors.h\"\n#include \"gtimer.h\"\n#include \"gtypes.h\"\n#include \"hashmap.h\"\n#include \"platform.h\"\n#include \"strlib.h\"\n\n/* Constants */\n\n#define EVENT_SUBTYPE_MASK 0xF\n\n/* Global variables */\n\nstatic HashMap timerTable;\n\n/* Implementation of GEvent class */\n\nstruct GEventCDT {\n   int eventType;\n   int modifiers;\n   double eventTime;\n   GWindow gw;\n   GObject source;\n   string actionCommand;\n   double x;\n   double y;\n   int keyChar;\n   int keyCode;\n   GTimer timer;\n};\n\nEventClassType getEventClass(GEvent e) {\n   return e->eventType & ~EVENT_SUBTYPE_MASK;\n}\n\nEventType getEventType(GEvent e) {\n   return e->eventType;\n}\n\ndouble getEventTime(GEvent e) {\n   return e->eventTime;\n}\n\nvoid setEventTime(GEvent e, double time) {\n   e->eventTime = time;\n}\n\nint getModifiers(GEvent e) {\n   return e->modifiers;\n}\n\nvoid setModifiers(GEvent e, int modifiers) {\n   e->modifiers = modifiers;\n}\n\nvoid waitForClick() {\n   freeEvent(waitForEvent(CLICK_EVENT));\n}\n\nGEvent waitForEvent(int mask) {\n   return waitForEventOp(mask);\n}\n\nGEvent getNextEvent(int mask) {\n   return getNextEventOp(mask);\n}\n\nvoid freeEvent(GEvent e) {\n   if (e->eventType == ACTION_EVENT && e->actionCommand != NULL) {\n      freeBlock(e->actionCommand);\n   }\n   freeBlock(e);\n}\n\nGEvent newGWindowEvent(EventType type, GWindow gw) {\n   GEvent e;\n\n   e = newBlock(GEvent);\n   e->eventType = type;\n   e->gw = gw;\n   return e;\n}\n\nGEvent newGActionEvent(EventType type, GObject source, string actionCommand) {\n   GEvent e;\n\n   e = newBlock(GEvent);\n   e->eventType = type;\n   e->source = source;\n   e->actionCommand = copyString(actionCommand);\n   return e;\n}\n\n/*\n * Function: newGMouseEvent\n * Usage: e = newGMouseEvent(type, gw, x, y);\n * ------------------------------------------\n * Creates a <code>GEvent</code> of the <code>MOUSE_EVENT</code> class.\n * The parameters are the specific event type, the <code>GWindow</code>\n * in which the event occurred, and the coordinates of the mouse.\n */\n\nGEvent newGMouseEvent(EventType type, GWindow gw, double x, double y) {\n   GEvent e;\n\n   e = newBlock(GEvent);\n   e->eventType = type;\n   e->gw = gw;\n   e->x = x;\n   e->y = y;\n   return e;\n}\n\nGEvent newGKeyEvent(EventType type, GWindow gw, int keyChar, int keyCode) {\n   GEvent e;\n\n   e = newBlock(GEvent);\n   e->eventType = type;\n   e->gw = gw;\n   e->keyChar = keyChar;\n   e->keyCode = keyCode;\n   return e;\n}\n\nGEvent newGTimerEvent(EventType type, GTimer timer) {\n   GEvent e;\n\n   e = newBlock(GEvent);\n   e->eventType = type;\n   e->timer = timer;\n   return e;\n}\n\nGWindow getGWindow(GEvent e) {\n   if (e->eventType & (WINDOW_EVENT | MOUSE_EVENT | KEY_EVENT)) {\n      return e->gw;\n   }\n   error(\"getGWindow: Illegal event type\");\n   return NULL;\n}\n\nGObject getSource(GEvent e) {\n   if (e->eventType & ACTION_EVENT) {\n      return e->source;\n   }\n   error(\"getSource: Illegal event type\");\n   return NULL;\n}\n\nstring getActionCommand(void *arg) {\n   GEvent e;\n   string type;\n\n   type = getBlockType(arg);\n   if (endsWith(type, \"GObject\")) {\n      return getActionCommandGInteractor(arg);\n   } else if (endsWith(type, \"GEvent\")) {\n      e = (GEvent) arg;\n      if (e->eventType & ACTION_EVENT) {\n         return e->actionCommand;\n      }\n   }\n   error(\"getActionCommand: Illegal argument type\");\n   return NULL;\n}\n\ndouble getXGEvent(GEvent e) {\n   if (e->eventType & MOUSE_EVENT) {\n      return e->x;\n   }\n   error(\"getX: Illegal event type\");\n   return 0;\n}\n\ndouble getYGEvent(GEvent e) {\n   if (e->eventType & MOUSE_EVENT) {\n      return e->y;\n   }\n   error(\"getY: Illegal event type\");\n   return 0;\n}\n\nchar getKeyChar(GEvent e) {\n   if (e->eventType & KEY_EVENT) {\n      return e->keyChar;\n   }\n   error(\"getKeyChar: Illegal event type\");\n   return '\\0';\n}\n\nint getKeyCode(GEvent e) {\n   if (e->eventType & KEY_EVENT) {\n      return e->keyCode;\n   }\n   error(\"getKeyCode: Illegal event type\");\n   return 0;\n}\n\nGTimer getGTimer(GEvent e) {\n   if (e->eventType & TIMER_EVENT) {\n      return e->timer;\n   }\n   error(\"getGTimer: Illegal event type\");\n   return NULL;\n}\n\n/**********************************************************************/\n/* Unit test for the gevents module                                   */\n/**********************************************************************/\n\n#ifndef _NOTEST_\n\n#include \"unittest.h\"\n\n/* Unit test */\n\nvoid testGEventsModule(void) {\n   GEvent e;\n\n   trace(e = newGMouseEvent(MOUSE_CLICKED, NULL, 2.3, 4.5));\n   test(getEventClass(e), (int) MOUSE_EVENT);\n   test(getEventType(e), (int) MOUSE_CLICKED);\n   test(getGWindow(e), NULL);\n   test(getX(e), 2.3);\n   test(getY(e), 4.5);\n}\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/gevents.h",
    "content": "/*\n * File: gevents.h\n * ---------------\n * This interface defines the event structure used in the graphics libraries.\n * The structure of this package is adapted from the Java event model and\n * is compatible with the C++ <code>StanfordCPPLib</code> package.\n * <include src=\"pictures/TypeHierarchies/GEventHierarchy.html\">\n */\n\n#ifndef _gevents_h\n#define _gevents_h\n\n#include \"cslib.h\"\n#include \"generic.h\"\n#include \"gtimer.h\"\n#include \"gwindow.h\"\n\n/*\n * Type: EventClassType\n * --------------------\n * This enumeration type defines the event classes.  The element values\n * are each a single bit and can be added or ORed together to generate\n * an event mask.  The <code>CLICK_EVENT</code> class responds only to\n * the MOUSE_CLICKED event type.  The <code>ANY_EVENT</code> class\n * selects any event.\n */\n\ntypedef enum {\n   ACTION_EVENT = 0x010,\n   KEY_EVENT    = 0x020,\n   TIMER_EVENT  = 0x040,\n   WINDOW_EVENT = 0x080,\n   MOUSE_EVENT  = 0x100,\n   CLICK_EVENT  = 0x200,\n   ANY_EVENT    = 0x3F0\n} EventClassType;\n\n/*\n * Type: EventType\n * ---------------\n * This enumeration type defines the event types for all events.\n */\n\ntypedef enum {\n   WINDOW_CLOSED    = WINDOW_EVENT + 1,\n   WINDOW_RESIZED   = WINDOW_EVENT + 2,\n   ACTION_PERFORMED = ACTION_EVENT + 1,\n   MOUSE_CLICKED    = MOUSE_EVENT + 1,\n   MOUSE_PRESSED    = MOUSE_EVENT + 2,\n   MOUSE_RELEASED   = MOUSE_EVENT + 3,\n   MOUSE_MOVED      = MOUSE_EVENT + 4,\n   MOUSE_DRAGGED    = MOUSE_EVENT + 5,\n   KEY_PRESSED      = KEY_EVENT + 1,\n   KEY_RELEASED     = KEY_EVENT + 2,\n   KEY_TYPED        = KEY_EVENT + 3,\n   TIMER_TICKED     = TIMER_EVENT + 1\n} EventType;\n\n/*\n * Type: ModifierCodes\n * -------------------\n * This enumeration type defines a set of constants used to check whether\n * modifiers are in effect.\n */\n\ntypedef enum {\n   SHIFT_DOWN     = 1 << 0,\n   CTRL_DOWN      = 1 << 1,\n   META_DOWN      = 1 << 2,\n   ALT_DOWN       = 1 << 3,\n   ALT_GRAPH_DOWN = 1 << 4,\n   BUTTON1_DOWN   = 1 << 5,\n   BUTTON2_DOWN   = 1 << 6,\n   BUTTON3_DOWN   = 1 << 7\n} ModifierCodes;\n\n/*\n * Type: KeyCodes\n * --------------\n * This type defines the names of the key codes returned in a key event.\n */\n\ntypedef enum {\n   BACKSPACE_KEY = 8,\n   TAB_KEY = 9,\n   ENTER_KEY = 10,\n   CLEAR_KEY = 12,\n   ESCAPE_KEY = 27,\n   PAGE_UP_KEY = 33,\n   PAGE_DOWN_KEY = 34,\n   END_KEY = 35,\n   HOME_KEY = 36,\n   LEFT_ARROW_KEY = 37,\n   UP_ARROW_KEY = 38,\n   RIGHT_ARROW_KEY = 39,\n   DOWN_ARROW_KEY = 40,\n   F1_KEY = 112,\n   F2_KEY = 113,\n   F3_KEY = 114,\n   F4_KEY = 115,\n   F5_KEY = 116,\n   F6_KEY = 117,\n   F7_KEY = 118,\n   F8_KEY = 119,\n   F9_KEY = 120,\n   F10_KEY = 121,\n   F11_KEY = 122,\n   F12_KEY = 123,\n   DELETE_KEY = 127,\n   HELP_KEY = 156\n} KeyCodes;\n\n/*\n * Type: GEvent\n * ------------\n * This abstract type is used to represent an event of any type.  This\n * file defines names for the subtypes, even though these types are\n * identical in C.  The functions that apply only to a specific event\n * subtype generate runtime errors if called on an event of the wrong type.\n *\n * <p>The standard paradigm for using <code>GEvent</code> is illustrated\n * by the following program, which allows the user to draw lines on the\n * graphics window:\n *\n *<pre>\n *    main() {\n *       GWindow gw = newGWindow(600, 400);\n *       while (true) {\n *          GMouseEvent e = waitForEvent(MOUSE_EVENT);\n *          if (getEventType(e) == MOUSE_PRESSED) {\n *             GLine line = newGLine(getX(e), getY(e), getX(e), getY(e));\n *             add(gw, line);\n *          } else if (getEventType(e) == MOUSE_DRAGGED) {\n *             setEndPoint(line, getX(e), getY(e));\n *          }\n *       }\n *    }\n *</pre>\n */\n\ntypedef struct GEventCDT *GEvent;\n\n/*\n * Function: freeEvent\n * Usage: freeEvent(e);\n * --------------------\n * Releases the storage associated with the event.\n */\n\nvoid freeEvent(GEvent e);\n\n/*\n * Function: getEventClass\n * Usage: eventClass = getEventClass(e);\n * -------------------------------------\n * Returns the enumerated type constant indicating the class of the event.\n */\n\nEventClassType getEventClass(GEvent e);\n\n/*\n * Function: getEventType\n * Usage: eventType = getEventType(e);\n * -----------------------------------\n * Returns the enumerated constant indicating the specific class of the event.\n */\n\nEventType getEventType(GEvent e);\n\n/*\n * Function: getGWindow\n * Usage: gw = getGWindow(e);\n * --------------------------\n * Returns the graphics window in which this event occurred.  This function\n * applies to the subtypes <code>GMouseEvent</code>, <code>GKeyEvent</code>,\n * and <code>GWindowEvent</code>.\n */\n\nGWindow getGWindow(GEvent e);\n\n/*\n * Function: getEventTime\n * Usage: time = getEventTime(e);\n * ------------------------------\n * Returns the system time in milliseconds at which the event occurred.\n * To ensure portability among systems that represent time in different\n * ways, the <code>cslib</code> package uses type <code>double</code> to\n * represent time, which is always encoded as the number of milliseconds\n * that have elapsed since 00:00:00 UTC on January 1, 1970, which is\n * the conventional zero point for computer-based time systems.\n */\n\ndouble getEventTime(GEvent e);\n\n/*\n * Function: setEventTime\n * Usage: setEventTime(e, time);\n * -----------------------------\n * Sets the event time field for the event.\n */\n\nvoid setEventTime(GEvent e, double time);\n\n/*\n * Function: getModifiers\n * Usage: modifiers = getModifiers(e);\n * -----------------------------------\n * Returns an integer whose bits indicate what modifiers are in effect.\n * To check whether the shift key is down, for example, clients can use\n * the following code:\n *\n *<pre>\n *    if (getModifiers(e) & SHIFT_DOWN) . . .\n *</pre>\n */\n\nint getModifiers(GEvent e);\n\n/*\n * Function: setModifiers\n * Usage: setModifiers(e, modifiers);\n * ----------------------------------\n * Sets the modifiers field for the event.\n */\n\nvoid setModifiers(GEvent e, int modifiers);\n\n/*\n * Function: waitForClick\n * Usage: waitForClick();\n * ----------------------\n * Waits for a mouse click to occur in any window, discarding any other\n * events.\n */\n\nvoid waitForClick();\n\n/*\n * Function: waitForEvent\n * Usage: e = waitForEvent(mask);\n * ------------------------------\n * Dismisses the process until an event occurs whose type is covered by\n * the event mask.  The mask parameter is a combination of the events of\n * interest.  For example, to wait for a mouse event or an action event,\n * clients can use the following call:\n *\n *<pre>\n *    e = waitForEvent(MOUSE_EVENT + ACTION_EVENT);\n *</pre>\n *\n * As a more sophisticated example, the following code is the canonical\n * event loop for an animated application that needs to respond to mouse,\n * key, and timer events:\n *\n *<pre>\n *    GTimer timer;\n *    GEvent e;\n *\n *    timer = newGTimer(ANIMATION_DELAY_IN_MILLISECONDS);\n *    start(timer);\n *    while (true) {\n *       e = waitForEvent(TIMER_EVENT + MOUSE_EVENT + KEY_EVENT);\n *       switch (getEventClass(e)) {\n *        case TIMER_EVENT:\n *          takeAnimationStep();\n *          break;\n *        case MOUSE_EVENT:\n *          handleMouseEvent(e);\n *          break;\n *        case KEY_EVENT:\n *          handleKeyEvent(e);\n *          break;\n *       }\n *       freeEvent(e);\n *    }\n *</pre>\n */\n\nGEvent waitForEvent(int mask);\n\n/*\n * Function: getNextEvent\n * Usage: e = getNextEvent(mask);\n * ------------------------------\n * Checks to see if there are any events of the desired type waiting on the\n * event queue.  If so, this function returns the event in exactly the same\n * fashion as <code>waitNextEvent</code>; if not, <code>getNextEvent</code>\n * returns <code>NULL</code>.\n */\n\nGEvent getNextEvent(int mask);\n\n/*\n * Type: GWindowEvent\n * ------------------\n * This event subtype represents a change in a window.\n */\n\ntypedef GEvent GWindowEvent;\n\n/*\n * Function: newGWindowEvent\n * Usage: e = newGWindowEvent(type, gw);\n * -------------------------------------\n * Creates a new <code>GWindowEvent</code>.  The parameters are the\n * specific type of window event and the <code>GWindow</code> in which\n * the event occurred.\n */\n\nGWindowEvent newGWindowEvent(EventType type, GWindow gw);\n\n/*\n * Type: GActionEvent\n * ------------------\n * This event subtype represents activation of an interactor.\n */\n\ntypedef GEvent GActionEvent;\n\n/*\n * Function: newGActionEvent\n * Usage: e = newGActionEvent(type, source, actionCommand);\n * --------------------------------------------------------\n * Creates a new <code>GActionEvent</code>.  The parameters are the\n * interactor that generated the event and the associated action command.\n */\n\nGActionEvent newGActionEvent(EventType type, GObject source,\n                                             string actionCommand);\n\n/*\n * Function: getSource\n * Usage: gobj = getSource(e);\n * ---------------------------\n * Returns the <code>GObject</code> that generated this event.\n */\n\nGObject getSource(GActionEvent e);\n\n/*\n * Function: getActionCommand\n * Usage: cmd = getActionCommand(arg);\n * -----------------------------------\n * Returns the action command associated with this event or interactor.\n */\n\nstring getActionCommand(void *arg);\n\n/*\n * Type: GMouseEvent\n * -----------------\n * This event subtype represents a mouse action in a window.\n */\n\ntypedef GEvent GMouseEvent;\n\n/*\n * Function: newGMouseEvent\n * Usage: e = newGMouseEvent(type, gw, x, y);\n * ------------------------------------------\n * Creates a new <code>GMouseEvent</code>.  The parameters are the\n * specific event type, the <code>GWindow</code> in which the event\n * occurred, and the coordinates of the mouse.\n */\n\nGMouseEvent newGMouseEvent(EventType type, GWindow gw, double x, double y);\n\n/*\n * Function: getX\n * Usage: x = getX(e);\n * -------------------\n * Returns the <i>x</i> coordinate at which the event occurred.\n */\n\ndouble getXGEvent(GMouseEvent e);\n\n/*\n * Function: getY\n * Usage: y = getY(e);\n * -------------------\n * Returns the <i>y</i> coordinate at which the event occurred.\n */\n\ndouble getYGEvent(GMouseEvent e);\n\n/*\n * Type: GKeyEvent\n * ---------------\n * This event subtype represents a key action in a window.\n */\n\ntypedef GEvent GKeyEvent;\n\n/*\n * Function: newGKeyEvent\n * Usage: e = newGKeyEvent(type, gw, ch, code);\n * --------------------------------------------\n * Creates a new <code>GKeyEvent</code>.  The parameters are the specific\n * event type, the <code>GWindow</code> in which the event occurred, the\n * character after taking into account modifier keys, and the code for the\n * specific key.\n */\n\nGKeyEvent newGKeyEvent(EventType type, GWindow gw, int keyChar, int keyCode);\n\n/*\n * Function: getKeyChar\n * Usage: ch = getKeyChar(e);\n * --------------------------\n * Returns the character represented by the keystroke, taking the modifier\n * keys into account.  For example, if the user types the <code>'a'</code>\n * key with the shift key down, <code>getKeyChar</code> will return\n * <code>'A'</code>.  If the key code in the event does not correspond\n * to a character, <code>getKeyChar</code> returns the null character.\n */\n\nchar getKeyChar(GKeyEvent e);\n\n/*\n * Function: getKeyCode\n * Usage: key = getKeyCode(e);\n * ---------------------------\n * Returns the integer code associated with the key in the event.\n */\n\nint getKeyCode(GKeyEvent e);\n\n/*\n * Type: GTimerEvent\n * -----------------\n * This event subtype represents a tick from a <code>GTimer</code>.\n */\n\ntypedef GEvent GTimerEvent;\n\n/*\n * Function: newGTimerEvent\n * Usage: e = newGTimerEvent(type, timer);\n * ---------------------------------------\n * Creates a new <code>GTimerEvent</code>.  The parameters are the specific\n * event type and the <code>GTimer</code>.\n */\n\nGEvent newGTimerEvent(EventType type, GTimer timer);\n\n/*\n * Function: getGTimer\n * Usage: timer = getGTimer(e);\n * ----------------------------\n * Returns the <code>GTimer</code> that generated this event.\n */\n\nGTimer getGTimer(GTimerEvent e);\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/ginteractors.c",
    "content": "/*\n * File: ginteractors.c\n * --------------------\n * This file is empty.  The ginteractors.h interface is implemented by the\n * gobjects.c file.\n */\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/ginteractors.h",
    "content": "/*\n * File: ginteractors.h\n * --------------------\n * This interface exports a hierarchy of graphical interactors similar to\n * those provided in the Java Swing libraries.\n * <include src=\"pictures/TypeHierarchies/GInteractorHierarchy.html\">\n */\n\n#ifndef _ginteractors_h\n#define _ginteractors_h\n\n#include \"cslib.h\"\n#include \"gobjects.h\"\n#include \"gtypes.h\"\n#include \"gwindow.h\"\n#include \"vector.h\"\n\n/*\n * Type: GInteractor\n * -----------------\n * This abstract type is the superclass for all graphical interactors.\n * In most applications, interactors will be added to a control strip\n * along one of the sides of the <code>GWindow</code>, but they can\n * also be placed in specific positions just like any other\n * <code>GObject</code>.\n */\n\ntypedef GObject GInteractor;\n\n/*\n * Function: setActionCommand\n * Usage: setActionCommand(interactor, cmd);\n * -----------------------------------------\n * Sets the action command to the indicated string.  If the string is not\n * empty, activating the interactor generates a <code>GActionEvent</code>.\n */\n\nvoid setActionCommand(GInteractor interactor, string cmd);\n\n/*\n * Function: getActionCommand\n * Usage: cmd = getActionCommand(interactor);\n * ------------------------------------------\n * Returns the action command associated with the interactor.\n */\n\nstring getActionCommandGInteractor(GInteractor interactor);\n\n/*\n * Type: GButton\n * -------------\n * This interactor subtype represents an onscreen button.  The following\n * program displays a button that, when pressed, generates the message\n * &ldquo;Please do not press this button again&rdquo;\n * (with thanks to Douglas Adams&rsquo;s <i>Hitchhiker&rsquo;s\n * Guide to the Galaxy</i>):\n *\n *<pre>\n *    main() {\n *       GWindow gw = newGWindow(600, 400);\n *       GButton button = newGButton(\"RED\");\n *       addToRegion(gw, button, \"SOUTH\");\n *       while (true) {\n *          GEvent e = waitForEvent(ACTION_EVENT | CLICK_EVENT);\n *          if (getEventType(e) == MOUSE_CLICKED) break;\n *          printf(\"Please do not press this button again.\\n\");\n *       }\n *    }\n *</pre>\n */\n\ntypedef GInteractor GButton;\n\n/*\n * Function: newGButton\n * Usage: button = newGButton(label);\n * ----------------------------------\n * Creates a <code>GButton</code> with the specified label.  This\n * function also sets the action command for the button to the\n * label string.\n */\n\nGButton newGButton(string label);\n\n/*\n * Type: GCheckBox\n * ---------------\n * This interactor subtype represents an onscreen check box.  Clicking\n * once on the check box selects it; clicking again removes the selection.\n * If a <code>GCheckBox</code> has an action command, clicking on the box\n * generates a <code>GActionEvent</code>.\n * <include src=\"pictures/GInteractorDiagrams/GCheckBox.html\">\n */\n\ntypedef GInteractor GCheckBox;\n\n/*\n * Function: GCheckBox\n * Usage: chkbox = new GCheckBox(label);\n * -------------------------------------\n * Creates a <code>GCheckBox</code> with the specified label.  In contrast\n * to the <code>GButton</code>ructor, this function does not automatically\n * set an action command.\n */\n\nGCheckBox newGCheckBox(string label);\n\n/*\n * Function: setSelected\n * Usage: setSelected(chkbox, state);\n * ----------------------------------\n * Sets the state of the check box.\n */\n\nvoid setSelected(GCheckBox chkbox, bool state);\n\n/*\n * Function: isSelected\n * Usage: if (isSelected(chkbox)) ...\n * ----------------------------------\n * Returns <code>true</code> if the check box is selected.\n */\n\nbool isSelected(GCheckBox chkbox);\n\n/*\n * Type: GSlider\n * -------------\n * This interactor subtype represents an onscreen slider.  Dragging\n * the slider control generates an <code>ActionEvent</code> if the\n * slider has a nonempty action command.\n * <include src=\"pictures/GInteractorDiagrams/GSlider.html\">\n */\n\ntypedef GInteractor GSlider;\n\n/*\n * Function: GSlider\n * Usage: slider = new GSlider(min, max, value);\n * ---------------------------------------------\n * Creates a horizontal <code>GSlider</code>.  The parameters are\n * the minimum value, maximum value, and current value of the slider.\n * Assigning an action command to the slider causes the slider to\n * generate an action event whenever the slider value changes.\n */\n\nGSlider newGSlider(int min, int max, int value);\n\n/*\n * Function: setValue\n * Usage: setValue(slider, value);\n * -------------------------------\n * Sets the current value of the slider.\n */\n\nvoid setValue(GSlider slider, int value);\n\n/*\n * Function: getValue\n * Usage: value = getValue(slider);\n * --------------------------------\n * Returns the current value of the slider.\n */\n\nint getValue(GSlider slider);\n\n/*\n * Type: GTextField\n * ----------------\n * This interactor subtype represents a text field for entering\n * short text strings.  Hitting enter in a text field generates a\n * <code>GActionEvent</code> if the text field has a nonempty\n * action command.\n */\n\ntypedef GInteractor GTextField;\n\n/*\n * Function: GTextField\n * Usage: field = newGTextField(nChars);\n * -------------------------------------\n * Creates a text field capable of holding <code>nChars</code> characters.\n * Assigning an action command to the text field causes it to generate an\n * action event whenever the user types the ENTER key.\n */\n\nGTextField newGTextField(int nChars);\n\n/*\n * Function: setText\n * Usage: setText(field, str);\n * ---------------------------\n * Sets the text of the field to the specified string.\n */\n\nvoid setText(GTextField field, string str);\n\n/*\n * Function: getText\n * Usage: str = getText(field);\n * ----------------------------\n * Returns the contents of the text field.\n */\n\nstring getText(GTextField field);\n\n/*\n * Type: GChooser\n * --------------\n * This interactor subtype represents a selectable list.  The\n * <code>newGChooser</code> function creates an empty chooser.\n * Once the chooser has been created, clients can use <code>addItem</code>\n * to add the options.  For example, the following code creates a\n * <code>GChooser</code> containing the four strings\n * <code>\"Small\"</code>, <code>\"Medium\"</code>, <code>\"Large\"</code>,\n * and <code>\"X-Large\"</code>:\n *\n *<pre>\n *    GChooser sizeChooser = newGChooser();\n *    addItem(sizeChooser, \"Small\");\n *    addItem(sizeChooser, \"Medium\");\n *    addItem(sizeChooser, \"Large\");\n *    addItem(sizeChooser, \"X-Large\");\n *</pre>\n *<include src=\"pictures/GInteractorDiagrams/GChooser.html\">\n */\n\ntypedef GInteractor GChooser;\n\n/*\n * Function: newGChooser\n * Usage: chooser = newGChooser();\n * -------------------------------\n * Creates a chooser that initially contains no items, which are added\n * using the <code>addItem</code> function.  Assigning an action command\n * to the chooser causes it to generate an action event whenever the\n * user selects an item.\n */\n\nGChooser newGChooser(void);\n\n/*\n * Function: addItem\n * Usage: addItem(chooser, item);\n * ------------------------------\n * Adds a new item consisting of the specified string.\n */\n\nvoid addItem(GChooser chooser, string item);\n\n/*\n * Function: setSelectedItem\n * Usage: setSelectedItem(chooser, item);\n * --------------------------------------\n * Sets the chooser so that it shows the specified item.  If the item\n * does not exist in the chooser, no change occurs.\n */\n\nvoid setSelectedItem(GChooser chooser, string item);\n\n/*\n * Function: getSelectedItem\n * Usage: item = getSelectedItem(chooser);\n * ---------------------------------------\n * Returns the current item selected in the chooser.\n */\n\nstring getSelectedItem(GChooser chooser);\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/gmath.c",
    "content": "/*\n * File: gmath.cpp\n * ---------------\n * This file implements the gmath.h interface.  In all cases, the\n * implementation for each function requires only one line of code,\n * which makes detailed documentation unnecessary.\n */\n\n#include <math.h>\n#include \"gmath.h\"\n\ndouble sinDegrees(double angle) {\n   return sin(toRadians(angle));\n}\n\ndouble cosDegrees(double angle) {\n   return cos(toRadians(angle));\n}\n\ndouble tanDegrees(double angle) {\n   return tan(toRadians(angle));\n}\n\ndouble toDegrees(double radians) {\n   return radians * 180 / PI;\n}\n\ndouble toRadians(double degrees) {\n   return degrees * PI / 180;\n}\n\ndouble vectorDistance(double x, double y) {\n   return sqrt(x * x + y * y);\n}\n\ndouble vectorAngle(double x, double y) {\n  return (x == 0 && y == 0) ? 0 : toDegrees(atan2(-y, x));\n}\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/gmath.h",
    "content": "/*\n * File: gmath.h\n * -------------\n * This interface exports several functions for working with graphical\n * geometry along with the constants <code>PI</code> and <code>E</code>.\n */\n\n#ifndef _gmath_h\n#define _gmath_h\n\n/*\n * Constant: PI\n * ------------\n * The mathematical constant pi, which is the ratio of the circumference\n * of a circle to its diameter.\n */\n\n#define PI 3.14159265358979323846\n\n/*\n * Constant: E\n * -----------\n * The mathematical constant e, which is the base of natural logarithms.\n */\n\n#define E 2.71828182845904523536\n\n/*\n * Function: sinDegrees\n * Usage: sine = sinDegrees(angle);\n * --------------------------------\n * Returns the trigonometric sine of <code>angle</code>, which is\n * expressed in degrees.\n */\n\ndouble sinDegrees(double angle);\n\n/*\n * Function: cosDegrees\n * Usage: cosine = cosDegrees(angle);\n * ----------------------------------\n * Returns the trigonometric cosine of <code>angle</code>, which is\n * expressed in degrees.\n */\n\ndouble cosDegrees(double angle);\n\n/*\n * Function: tanDegrees\n * Usage: tangent = tanDegrees(angle);\n * -----------------------------------\n * Returns the trigonometric tangent of <code>angle</code>, which is\n * expressed in degrees.\n */\n\ndouble tanDegrees(double angle);\n\n/*\n * Function: toDegrees\n * Usage: degrees = toDegrees(radians);\n * ------------------------------------\n * Converts an angle from radians to degrees.\n */\n\ndouble toDegrees(double radians);\n\n/*\n * Function: toRadians\n * Usage: radians = toRadians(degrees);\n * ------------------------------------\n * Converts an angle from degrees to radians.\n */\n\ndouble toRadians(double degrees);\n\n/*\n * Function: vectorDistance\n * Usage: r = vectorDistance(x, y);\n * --------------------------------\n * Computes the distance between the origin and the specified point.\n */\n\ndouble vectorDistance(double x, double y);\n\n/*\n * Function: vectorAngle\n * Usage: angle = vectorAngle(x, y);\n * ---------------------------------\n * Returns the angle in degrees from the origin to the specified point.\n * This function takes account of the fact that the graphics coordinate\n * system is flipped in the <i>y</i> direction from the traditional\n * Cartesian plane.\n */\n\ndouble vectorAngle(double x, double y);\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/gobjects.c",
    "content": "/*\n * File: gobjects.c\n * ----------------\n * This file implements both the gobjects.h and ginteractors.h interfaces.\n */\n\n#include <stdio.h>\n#include <math.h>\n#include \"gmath.h\"\n#include \"gobjects.h\"\n#include \"platform.h\"\n#include \"vector.h\"\n\n/* Constants */\n\n#define LINE_TOLERANCE 1.5\n#define ARC_TOLERANCE 2.5\n#define DEFAULT_CORNER 10\n#define DEFAULT_GLABEL_FONT \"Dialog-13\"\n\n/*\n * Type: GArcCDT\n * -------------\n * This type holds the extra information needed for a GArc.\n */\n\nstruct GArcCDT {\n   double start;\n   double sweep;\n};\n\n/*\n * Type: GLabelCDT\n * ---------------\n * This type holds the extra information needed for a GLabel.\n */\n\nstruct GLabelCDT {\n   string font;\n   string str;\n   double ascent;\n   double descent;\n};\n\n/*\n * Type: GPolygonCDT\n * -----------------\n * This type holds the extra information needed for a GPolygon.\n */\n\nstruct GPolygonCDT {\n   Vector vertices;\n   double cx;\n   double cy;\n};\n\n/*\n * Type: GCompoundCDT\n * ------------------\n * This type holds the extra information needed for a GCompound.\n */\n\nstruct GCompoundCDT {\n   Vector contents;\n};\n\n/*\n * Type: G3DRectCDT\n * ----------------\n * This type holds the extra information needed for a G3DRect.\n */\n\nstruct G3DRectCDT {\n   bool raised;\n};\n\n/*\n * Type: GInteractorCDT\n * --------------------\n * This type includes all the extra information required for any of\n * the interactor subtypes.\n */\n\nstruct GInteractorCDT {\n   string actionCommand;\n   string label;\n};\n\n/*\n * Type: GObjectCDT\n * ----------------\n * This structure is the common concrete type for all GObjects.\n */\n\nstruct GObjectCDT {\n   int type;\n   double x;\n   double y;\n   double width;\n   double height;\n   string color;\n   string fillColor;\n   bool filled;\n   bool visible;\n   GObject parent;\n   union {\n      struct GArcCDT arcRep;\n      struct GLabelCDT labelRep;\n      struct G3DRectCDT g3dRectRep;\n      struct GPolygonCDT polygonRep;\n      struct GCompoundCDT compoundRep;\n      struct GInteractorCDT interactorRep;\n   } u;\n};\n\n/* Private function prototypes */\n\nstatic GDimension getSizeGInteractor(GInteractor interactor);\n\nstatic GRectangle getBoundsGLine(GLine line);\nstatic GRectangle getBoundsGLabel(GLabel label);\nstatic GRectangle getBoundsGArc(GArc arc);\nstatic GRectangle getBoundsGPolygon(GPolygon poly);\n\nstatic bool containsGOval(GOval oval, double x, double y);\nstatic bool containsGLine(GLine line, double x, double y);\nstatic bool containsGArc(GArc arc, double x, double y);\nstatic bool containsGPolygon(GArc arc, double x, double y);\n\nstatic bool containsAngle(GArc arc, double theta);\nstatic double dsq(double x0, double y0, double x1, double y1);\n\n/* GObject operations */\n\nstatic GObject newGObject(int type) {\n   GObject gobj;\n\n   gobj = newBlock(GObject);\n   gobj->type = type;\n   gobj->x = 0;\n   gobj->y = 0;\n   gobj->width = 0;\n   gobj->height = 0;\n   gobj->color = \"BLACK\";\n   gobj->fillColor = NULL;\n   gobj->filled = false;\n   gobj->visible = true;\n   gobj->parent = NULL;\n   return gobj;\n}\n\nvoid freeGObject(GObject gobj) {\n   Vector contents;\n   int i, n;\n\n   if (gobj->type == GPOLYGON) {\n      contents = gobj->u.polygonRep.vertices;\n      n = sizeVector(contents);\n      for (i = 0; i < n; i++) {\n         freeBlock(getVector(contents, i));\n      }\n      freeBlock(contents);\n   } else if (gobj->type == GCOMPOUND) {\n      freeBlock(gobj->u.compoundRep.contents);\n   }\n   freeBlock(gobj);\n}\n\ndouble getXGObject(GObject gobj) {\n   return gobj->x;\n}\n\ndouble getYGObject(GObject gobj) {\n   return gobj->y;\n}\n\nGPoint getLocation(GObject gobj) {\n   return createGPoint(gobj->x, gobj->y);\n}\n\nvoid setLocation(GObject gobj, double x, double y) {\n   gobj->x = x;\n   gobj->y = y;\n   setLocationOp(gobj, x, y);\n}\n\nvoid move(GObject gobj, double dx, double dy) {\n   gobj->x += dx;\n   gobj->y += dy;\n   setLocation(gobj, gobj->x, gobj->y);\n}\n\ndouble getWidthGObject(GObject gobj) {\n   return getBounds(gobj).width;\n}\n\ndouble getHeightGObject(GObject gobj) {\n   return getBounds(gobj).height;\n}\n\nGDimension getSize(GObject gobj) {\n   GRectangle bounds;\n\n   if ((gobj->type & GINTERACTOR) != 0) return getSizeGInteractor(gobj);\n   bounds = getBounds(gobj);\n   return createGDimension(bounds.width, bounds.height);\n}\n\nGRectangle getBounds(GObject gobj) {\n   if (gobj->type == GARC) return getBoundsGArc(gobj);\n   if (gobj->type == GLINE) return getBoundsGLine(gobj);\n   if (gobj->type == GLABEL) return getBoundsGLabel(gobj);\n   if (gobj->type == GPOLYGON) return getBoundsGPolygon(gobj);\n   return createGRectangle(gobj->x, gobj->y, gobj->width, gobj->height);\n}\n\nvoid setColorGObject(GObject gobj, string color) {\n   gobj->color = color;\n   setColorOp(gobj, color);\n}\n\nstring getColorGObject(GObject gobj) {\n   return gobj->color;\n}\n\nvoid setVisibleGObject(GObject gobj, bool flag) {\n   gobj->visible = flag;\n   setVisibleGObjectOp(gobj, flag);\n}\n\nbool isVisibleGObject(GObject gobj) {\n   return gobj->visible;\n}\n\nvoid sendForward(GObject gobj) {\n   sendForwardOp(gobj);\n}\n\nvoid sendToFront(GObject gobj) {\n   sendToFrontOp(gobj);\n}\n\nvoid sendBackward(GObject gobj) {\n   sendBackwardOp(gobj);\n}\n\nvoid sendToBack(GObject gobj) {\n   sendToBackOp(gobj);\n}\n\nbool containsGObject(GObject gobj, double x, double y) {\n   if (gobj->type == GOVAL) return containsGOval(gobj, x, y);\n   if (gobj->type == GARC) return containsGArc(gobj, x, y);\n   if (gobj->type == GPOLYGON) return containsGPolygon(gobj, x, y);\n   return x >= gobj->x && y >= gobj->y && x <= gobj->x + gobj->width\n                                       && y <= gobj->y + gobj->height;\n}\n\nstring getType(GObject gobj) {\n   switch (gobj->type) {\n    case GARC: return \"GArc\";\n    case GCOMPOUND: return \"GCompound\";\n    case GIMAGE: return \"GImage\";\n    case GLABEL: return \"GLabel\";\n    case GLINE: return \"GLine\";\n    case GOVAL: return \"GOval\";\n    case GPOLYGON: return \"GPolygon\";\n    case GRECT: return \"GRect\";\n    case G3DRECT: return \"G3DRect\";\n    case GROUNDRECT: return \"GRoundRect\";\n    case GBUTTON: return \"GButton\";\n    case GCHECKBOX: return \"GCheckBox\";\n    case GCHOOSER: return \"GChooser\";\n    case GSLIDER: return \"GSlider\";\n    case GTEXTFIELD: return \"GTextField\";\n    default: return NULL;\n   }\n}\n\nGObject getParent(GObject gobj) {\n   return gobj->parent;\n}\n\nvoid setSize(GObject gobj, double width, double height) {\n   if ((gobj->type & (GRECT | GOVAL | GIMAGE | GINTERACTOR)) == 0) {\n      error(\"setSize: Illegal GObject type\");\n   }\n   gobj->width = width;\n   gobj->height = height;\n   setSizeOp(gobj, width, height);\n}\n\nvoid setBounds(GObject gobj, double x, double y, double width, double height) {\n   setSize(gobj, width, height);\n   setLocation(gobj, x, y);\n}\n\nvoid setFilled(GObject gobj, bool flag) {\n   gobj->filled = flag;\n   setFilledOp(gobj, flag);\n}\n\nbool isFilled(GObject gobj) {\n   return gobj->filled;\n}\n\nvoid setFillColor(GObject gobj, string color) {\n   gobj->fillColor = color;\n   setFillColorOp(gobj, color);\n}\n\nstring getFillColor(GObject gobj) {\n   return gobj->fillColor;\n}\n\n/*\n * Implementation notes: GRect\n * ---------------------------\n * This section of the implementation includes the subclasses.\n */\n\nGRect newGRect(double x, double y, double width, double height) {\n   GObject rect;\n\n   rect = newGObject(GRECT);\n   rect->x = x;\n   rect->y = y;\n   rect->width = width;\n   rect->height = height;\n   createGRectOp(rect, width, height);\n   setLocationOp(rect, x, y);\n   return rect;\n}\n\nGRoundRect newGRoundRect(double x, double y, double width, double height,\n                                             double corner) {\n   GObject rect;\n\n   rect = newGObject(GROUNDRECT);\n   rect->x = x;\n   rect->y = y;\n   rect->width = width;\n   rect->height = height;\n   createGRoundRectOp(rect, width, height, corner);\n   setLocationOp(rect, x, y);\n   return rect;\n}\n\nG3DRect newG3DRect(double x, double y, double width, double height,\n                                       bool raised) {\n   GObject rect;\n\n   rect = newGObject(G3DRECT);\n   rect->x = x;\n   rect->y = y;\n   rect->width = width;\n   rect->height = height;\n   rect->u.g3dRectRep.raised = raised;\n   createG3DRectOp(rect, width, height, raised);\n   setLocationOp(rect, x, y);\n   return rect;\n}\n\nvoid setRaised(G3DRect rect, bool raised) {\n   rect->u.g3dRectRep.raised = raised;\n   setRaisedOp(rect, raised);\n}\n\nbool isRaised(G3DRect rect) {\n   return rect->u.g3dRectRep.raised;\n}\n\n/*\n * Implementation notes: GOval\n * ---------------------------\n * The GOval class requires only the constructor.\n */\n\nGOval newGOval(double x, double y, double width, double height) {\n   GOval oval;\n\n   oval = newGObject(GOVAL);\n   oval->x = x;\n   oval->y = y;\n   oval->width = width;\n   oval->height = height;\n   createGOvalOp(oval, width, height);\n   setLocationOp(oval, x, y);\n   return oval;\n}\n\nstatic bool containsGOval(GOval oval, double x, double y) {\n   double rx, ry, dx, dy;\n\n   rx = oval->width / 2;\n   ry = oval->height / 2;\n   if (rx == 0 || ry == 0) return false;\n   dx = x - (oval->x + rx);\n   dy = y - (oval->y + ry);\n   return (dx * dx) / (rx * rx) + (dy * dy) / (ry * ry) <= 1.0;\n}\n\n/*\n * Implementation notes: GLine\n * ---------------------------\n * The GLine type uses the width and height fields to specify the\n * displacement from the start point to the end point.  These values\n * may be negative.  This type also includes functions to set the\n * start and end points.\n */\n\nGLine newGLine(double x0, double y0, double x1, double y1) {\n   GLine line;\n\n   line = newGObject(GLINE);\n   line->x = x0;\n   line->y = y0;\n   line->width = x1 - x0;\n   line->height = y1 - y0;\n   createGLineOp(line, x0, y0, x1, y1);\n   return line;\n}\n\nvoid setStartPoint(GLine line, double x, double y) {\n   if (line->type != GLINE) error(\"setStartPoint: Illegal argument type\");\n   line->width += line->x - x;\n   line->height += line->y - y;\n   line->x = x;\n   line->y = y;\n   setStartPointOp(line, x, y);\n}\n\nvoid setEndPoint(GObject line, double x, double y) {\n   if (line->type != GLINE) error(\"setStartPoint: Illegal argument type\");\n   line->width = x - line->x;\n   line->height = y - line->y;\n   setEndPointOp(line, x, y);\n}\n\nGPoint getStartPoint(GObject gobj) {\n   if (gobj->type != GLINE) {\n      return createGPoint(gobj->x, gobj->y);\n   }\n   error(\"getStartPoint: Illegal argument type\");\n   return createGPoint(0, 0);\n}\n\nGPoint getEndPoint(GObject gobj) {\n   if (gobj->type != GLINE) {\n      return createGPoint(gobj->x + gobj->width, gobj->y + gobj->height);\n   }\n   error(\"getEndPoint: Illegal argument type\");\n   return createGPoint(0, 0);\n}\n\nstatic GRectangle getBoundsGLine(GLine line) {\n   return createGRectangle(fmin(line->x, line->x + line->width),\n                           fmin(line->x, line->x + line->width),\n                           fabs(line->width), fabs(line->height));\n}\n\nstatic bool containsGLine(GLine line, double x, double y) {\n   double x0, y0, x1, y1, tsq, u;\n   x0 = line->x;\n   y0 = line->y;\n   x1 = x0 + line->width;\n   y1 = y0 + line->height;\n   tsq = LINE_TOLERANCE * LINE_TOLERANCE;\n   if (dsq(x, y, x0, y0) < tsq) return true;\n   if (dsq(x, y, x1, y1) < tsq) return true;\n   if (x < fmin(x0, x1) - LINE_TOLERANCE) return false;\n   if (x > fmax(x0, x1) + LINE_TOLERANCE) return false;\n   if (y < fmin(y0, y1) - LINE_TOLERANCE) return false;\n   if (y > fmax(y0, y1) + LINE_TOLERANCE) return false;\n   if ((float) (x0 - x1) == 0 && (float) (y0 - y1) == 0) return false;\n   u = ((x - x0) * (x1 - x0) + (y - y0) * (y1 - y0)) / dsq(x0, y0, x1, y1);\n   return dsq(x, y, x0 + u * (x1 - x0), y0 + u * (y1 - y0)) < tsq;\n}\n\n/*\n * Implementation notes: GArc\n * --------------------------\n * Parts of the GArc implementation appear in the general GObject code\n * because the functions are often overloaded.\n */\n\nGArc newGArc(double x, double y, double width, double height,\n                                 double start, double sweep) {\n   GObject arc;\n\n   arc = newGObject(GARC);\n   arc->x = x;\n   arc->y = y;\n   arc->width = width;\n   arc->height = height;\n   arc->u.arcRep.start = start;\n   arc->u.arcRep.sweep = sweep;\n   createGArcOp(arc, width, height, start, sweep);\n   setLocationOp(arc, x, y);\n   return arc;\n}\n\nvoid setStartAngle(GArc arc, double start) {\n   arc->u.arcRep.start = start;\n   setStartAngleOp(arc, start);\n}\n\ndouble getStartAngle(GArc arc) {\n   return arc->u.arcRep.start;\n}\n\nvoid setSweepAngle(GArc arc, double sweep) {\n   arc->u.arcRep.sweep = sweep;\n   setSweepAngleOp(arc, sweep);\n}\n\ndouble getSweepAngle(GArc arc) {\n   return arc->u.arcRep.sweep;\n}\n\nvoid setFrameRectangle(GArc arc, double x, double y,\n                                 double width, double height) {\n   arc->x = x;\n   arc->y = y;\n   arc->width = width;\n   arc->height = height;\n   setFrameRectangleOp(arc, x, y, width, height);\n}\n\nGRectangle getFrameRectangle(GArc arc) {\n   return createGRectangle(arc->x, arc->y, arc->width, arc->height);\n}\n\nstatic GRectangle getBoundsGArc(GArc arc) {\n   double rx, ry, cx, cy, p1x, p1y, p2x, p2y, xMin, xMax, yMin, yMax;\n\n   rx = arc->width / 2;\n   ry = arc->height / 2;\n   cx = arc->x + rx;\n   cy = arc->y + ry;\n   p1x = cx + cosDegrees(arc->u.arcRep.start) * rx;\n   p1y = cy - sinDegrees(arc->u.arcRep.start) * ry;\n   p2x = cx + cosDegrees(arc->u.arcRep.start + arc->u.arcRep.sweep) * rx;\n   p2y = cy - sinDegrees(arc->u.arcRep.start + arc->u.arcRep.sweep) * ry;\n   xMin = fmin(p1x, p2x);\n   xMax = fmax(p1x, p2x);\n   yMin = fmin(p1y, p2y);\n   yMax = fmax(p1y, p2y);\n   if (containsAngle(arc, 0)) xMax = cx + rx;\n   if (containsAngle(arc, 90)) yMin = cy - ry;\n   if (containsAngle(arc, 180)) xMin = cx - rx;\n   if (containsAngle(arc, 270)) yMax = cy + ry;\n   if (arc->filled) {\n      xMin = fmin(xMin, cx);\n      yMin = fmin(yMin, cy);\n      xMax = fmax(xMax, cx);\n      yMax = fmax(yMax, cy);\n   }\n   return createGRectangle(xMin, yMin, xMax - xMin, yMax - yMin);\n}\n\nstatic bool containsGArc(GArc arc, double x, double y) {\n   double rx, ry, dx, dy, r, t;\n\n   rx = arc->width / 2;\n   ry = arc->height / 2;\n   if (rx == 0 || ry == 0) return false;\n   dx = x - (arc->x + rx);\n   dy = y - (arc->y + ry);\n   r = (dx * dx) / (rx * rx) + (dy * dy) / (ry * ry);\n   if (arc->filled) {\n      if (r > 1.0) return false;\n   } else {\n      t = ARC_TOLERANCE / ((rx + ry) / 2);\n      if (abs(1.0 - r) > t) return false;\n   }\n   return containsAngle(arc, atan2(-dy, dx) * 180 / PI);\n}\n\nstatic bool containsAngle(GArc arc, double theta) {\n   double start, sweep;\n\n   start = fmin(arc->u.arcRep.start,\n                arc->u.arcRep.start + arc->u.arcRep.sweep);\n   sweep = fabs(arc->u.arcRep.sweep);\n   if (sweep >= 360) return true;\n   theta = (theta < 0) ? 360 - fmod(-theta, 360) : fmod(theta, 360);\n   start = (start < 0) ? 360 - fmod(-start, 360) : fmod(start, 360);\n   if (start + sweep > 360) {\n      return theta >= start || theta <= start + sweep - 360;\n   } else {\n      return theta >= start && theta <= start + sweep;\n   }\n}\n\n/*\n * Implementation notes: GLabel\n * ----------------------------\n */\n\nGLabel newGLabel(string str) {\n   GObject label;\n   GDimension size;\n\n   label = newGObject(GLABEL);\n   label->u.labelRep.str = str;\n   label->u.labelRep.font = DEFAULT_GLABEL_FONT;\n   createGLabelOp(label, str);\n   setFont(label, DEFAULT_GLABEL_FONT);\n   setLabel(label, str);\n   return label;\n}\n\nvoid setFont(GLabel label, string font) {\n   GDimension size;\n\n   label->u.labelRep.font = font;\n   setFontOp(label, font);\n   label->u.labelRep.ascent = getFontAscentOp(label);\n   label->u.labelRep.descent = getFontDescentOp(label);\n   size = getGLabelSizeOp(label);\n   label->width = size.width;\n   label->height = size.height;\n}\n\nstring getFont(GLabel label) {\n   return label->u.labelRep.font;\n}\n\nvoid setLabel(GLabel label, string str) {\n   GDimension size;\n\n   label->u.labelRep.str = str;\n   setLabelOp(label, str);\n   size = getGLabelSizeOp(label);\n   label->width = size.width;\n   label->height = size.height;\n}\n\nstring getLabel(GLabel label) {\n   return label->u.labelRep.str;\n}\n\ndouble getFontAscent(GLabel label) {\n   return label->u.labelRep.ascent;\n}\n\ndouble getFontDescent(GLabel label) {\n   return label->u.labelRep.descent;\n}\n\nstatic GRectangle getBoundsGLabel(GLabel label) {\n   return createGRectangle(label->x, label->y - label->u.labelRep.ascent,\n                           label->width, label->height);\n}\n\nGImage newGImage(string filename) {\n   GPolygon image;\n   GDimension size;\n\n   image = newGObject(GIMAGE);\n   size = createGImageOp(image, filename);\n   image->width = size.width;\n   image->height = size.height;\n   return image;\n}\n\nGPolygon newGPolygon(void) {\n   GPolygon poly = newGObject(GPOLYGON);\n   poly->u.polygonRep.vertices = newVector();\n   poly->u.polygonRep.cx = 0;\n   poly->u.polygonRep.cy = 0;\n   createGPolygonOp(poly);\n   return poly;\n}\n\nvoid addVertex(GPolygon poly, double x, double y) {\n   GPoint *ppt;\n\n   ppt = newBlock(GPoint *);\n   poly->u.polygonRep.cx = ppt->x = x;\n   poly->u.polygonRep.cy = ppt->y = y;\n   addVector(poly->u.polygonRep.vertices, ppt);\n   addVertexOp(poly, x, y);\n}\n\nvoid addEdge(GPolygon poly, double dx, double dy) {\n   addVertex(poly, poly->u.polygonRep.cx + dx, poly->u.polygonRep.cy + dy);\n}\n\nvoid addPolarEdge(GPolygon poly, double r, double theta) {\n   addEdge(poly, r * cosDegrees(theta), -r * sinDegrees(theta));\n}\n\nVector getVertices(GPolygon poly) {\n   return poly->u.polygonRep.vertices;\n}\n\nstatic GRectangle getBoundsGPolygon(GPolygon poly) {\n   Vector vertices;\n   double xMin, yMin, xMax, yMax, x, y;\n   int i, n;\n\n   xMin = 0;\n   yMin = 0;\n   xMax = 0;\n   yMax = 0;\n   vertices = poly->u.polygonRep.vertices;\n   n = sizeVector(vertices);\n   for (i = 0; i < n; i++) {\n      x = ((GPoint *) getVector(vertices, i))->x;\n      y = ((GPoint *) getVector(vertices, i))->y;\n      if (i == 0 || x < xMin) xMin = x;\n      if (i == 0 || y < yMin) yMin = y;\n      if (i == 0 || x > xMax) xMax = x;\n      if (i == 0 || y > yMax) yMax = y;\n   }\n   return createGRectangle(xMin, yMin, xMax - xMin, yMax - yMin);\n}\n\nstatic bool containsGPolygon(GArc arc, double x, double y) {\n   double x0, y0, x1, y1;\n   int crossings, i, n;\n   GPoint *p0, *p1;\n   Vector vertices;\n\n   vertices = arc->u.polygonRep.vertices;\n   crossings = 0;\n   n = sizeVector(vertices);\n   if (n < 2) return false;\n   p0 = (GPoint *) getVector(vertices, 0);\n   x0 = p0->x;\n   y0 = p0->y;\n   p1 = (GPoint *) getVector(vertices, n - 1);\n   if (p0->x == p1->x && p0->y == p1->y) n--;\n   for (i = 1; i <= n; i++) {\n      p1 = (GPoint *) getVector(vertices, i % n);\n      x1 = p1->x;\n      y1 = p1->y;\n      if ((y0 > y) != (y1 > y) && x - x0 < (x1 - x0) * (y - y0) / (y1 - y0)) {\n         crossings++;\n      }\n      x0 = x1;\n      y0 = y1;\n   }\n   return (crossings % 2 == 1);\n}\n\n/*\n * Implementation notes: GCompound\n * -------------------------------\n * The GCompound type stores the individual components in a vector\n * that runs from back to front in the z direction.\n */\n\nGCompound newGCompound(void) {\n   GCompound gcompound = newGObject(GCOMPOUND);\n   gcompound->u.compoundRep.contents = newVector();\n   createGCompoundOp(gcompound);\n   return gcompound;\n}\n\nvoid addGCompound(GObject compound, GObject gobj) {\n   if (compound->type != GCOMPOUND) {\n      error(\"add: First argument is not a GCompound\");\n   }\n   addVector(compound->u.compoundRep.contents, gobj);\n   addOp(compound, gobj);\n}\n\nvoid removeGCompound(GCompound compound, GObject gobj) {\n   Vector contents;\n   int i, n;\n\n   if (compound->type != GCOMPOUND) {\n      error(\"remove: First argument is not a GCompound\");\n   }\n   contents = compound->u.compoundRep.contents;\n   n = sizeVector(contents);\n   for (i = 0; i < n; i++) {\n      if (gobj == getVector(contents, i)) {\n         removeVector(contents, i);\n         break;\n      }\n   }\n   removeOp(gobj);\n}\n\nGObject getGObjectCompound(GCompound compound, double x, double y) {\n   Vector contents;\n   GObject gobj;\n   int i, n;\n\n   contents = compound->u.compoundRep.contents;\n   n = sizeVector(contents);\n   for (i = n - 1; i >= 0; i--) {\n      gobj = getVector(contents, i);\n      if (containsGObject(gobj, x, y)) return gobj;\n   }\n   return NULL;\n}\n\nstatic double dsq(double x0, double y0, double x1, double y1) {\n   return (x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0);\n}\n\n/* GInteractor operations */\n\nvoid setActionCommand(GInteractor interactor, string cmd) {\n   interactor->u.interactorRep.actionCommand = cmd;\n   setActionCommandOp(interactor, cmd);\n}\n\nstring getActionCommandGInteractor(GInteractor interactor) {\n   return interactor->u.interactorRep.actionCommand;\n}\n\nstatic GDimension getSizeGInteractor(GInteractor interactor) {\n   return getSizeOp(interactor);\n}\n\n/* GButton operations */\n\nGButton newGButton(string label) {\n   GButton button = newGObject(GBUTTON);\n   button->u.interactorRep.label = label;\n   createGButtonOp(button, label);\n   setActionCommand(button, label);\n   return button;\n}\n\n/* GCheckBox operations */\n\nGCheckBox newGCheckBox(string label)  {\n   GCheckBox chkbox = newGObject(GCHECKBOX);\n   chkbox->u.interactorRep.label = label;\n   createGCheckBoxOp(chkbox, label);\n   return chkbox;\n}\n\n/*\n * Function: setSelected\n * Usage: setSelected(chkbox, state);\n * ----------------------------------\n * Sets the state of the check box.\n */\n\nvoid setSelected(GCheckBox chkbox, bool state) {\n   setSelectedOp(chkbox, state);\n}\n\n/*\n * Function: isSelected\n * Usage: if (isSelected(chkbox)) ...\n * ----------------------------------\n * Returns <code>true</code> if the check box is selected.\n */\n\nbool isSelected(GCheckBox chkbox) {\n   return isSelectedOp(chkbox);\n}\n\n/* GSlider operations */\n\nGSlider newGSlider(int min, int max, int value) {\n   GSlider slider = newGObject(GSLIDER);\n   createGSliderOp(slider, min, max, value);\n   return slider;\n}\n\n/*\n * Function: setValue\n * Usage: setValue(slider, value);\n * -------------------------------\n * Sets the current value of the slider.\n */\n\nvoid setValue(GSlider slider, int value) {\n   setValueOp(slider, value);\n}\n\n/*\n * Function: getValue\n * Usage: value = getValue(slider);\n * --------------------------------\n * Returns the current value of the slider.\n */\n\nint getValue(GSlider slider) {\n   return getValueOp(slider);\n}\n\n/* GTextField operations */\n\nGTextField newGTextField(int nChars) {\n   GTextField field = newGObject(GTEXTFIELD);\n   createGTextFieldOp(field, nChars);\n   return field;\n}\n\nvoid setText(GTextField field, string str) {\n   setTextOp(field, str);\n}\n\nstring getText(GTextField field) {\n   return getTextOp(field);\n}\n\n/* GChooser operations */\n\nGChooser newGChooser(void) {\n   GChooser chooser = newGObject(GCHOOSER);\n   createGChooserOp(chooser);\n   return chooser;\n}\n\nvoid addItem(GChooser chooser, string item) {\n   addItemOp(chooser, item);\n}\n\nvoid setSelectedItem(GChooser chooser, string item) {\n   setSelectedItemOp(chooser, item);\n}\n\n// Think about memory management here\n\nstring getSelectedItem(GChooser chooser) {\n   return getSelectedItemOp(chooser);\n}\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/gobjects.h",
    "content": "/*\n * File: gobjects.h\n * ----------------\n * This interface exports a hierarchy of graphical shapes based on\n * the model developed for the ACM Java Graphics.\n * <include src=\"pictures/TypeHierarchies/GObjectHierarchy.html\">\n */\n\n#ifndef _gobjects_h\n#define _gobjects_h\n\n#include \"cslib.h\"\n#include \"generic.h\"\n#include \"gtypes.h\"\n#include \"vector.h\"\n\n#ifndef _gwindow_h\n\ntypedef struct GWindowCDT *GWindow;\n\n/*\n * Type: GObject\n * -------------\n * This type represents an abstract type that unifies the set of all\n * graphics objects.  As with an abstract class in an object-oriented\n * language, it is not legal to create a <code>GObject</code> directly.\n * Graphical objects are created instead by calling the constructor for\n * one of the concrete subclasses, as follows:\n *\n *<ul>\n * <li><a href=\"#Function:newGRect\"\n *     ><code>newGRect(x, y, width, height)</code></a>\n * <li><a href=\"#Function:newG3DRect\"\n *     ><code>newG3DRect(x, y, width, height, raised)</code></a>\n * <li><a href=\"#Function:newGRoundRect\"\n *     ><code>newGRoundRect(x, y, width, height, corner)</code></a>\n * <li><a href=\"#Function:newGOval\"\n *     ><code>newGOval(x, y, width, height)</code></a>\n * <li><a href=\"#Function:newGLine\"\n *     ><code>newGLine(x0, y0, x1, y1)</code></a>\n * <li><a href=\"#Function:newGArc\"\n *     ><code>newGArc(x, y, width, height, start, sweep)</code></a>\n * <li><a href=\"#Function:newGImage\"\n *     ><code>newGImage(filename, x, y)</code></a>\n * <li><a href=\"#Function:newGLabel\"\n *     ><code>newGLabel(str, x, y)</code></a>\n * <li><a href=\"#Function:newGPolygon\"\n *     ><code>newGPolygon</code></a>\n * <li><a href=\"#Function:newGCompound\"\n *     ><code>newCompound</code></a>\n *</ul>\n *\n * <p>Even though C has no object-oriented hierarchies, this interface\n * defines the types <code>GArc</code>, <code>GCompound</code>,\n * <code>GImage</code>, <code>GLabel</code>, <code>GLine</code>,\n * <code>GOval</code>, <code>GPolygon</code>, <code>GRect</code>,\n * <code>GRoundRect</code>, and <code>G3DRect</code> as synonyms\n * for <code>GObject</code>.  Doing so helps to clarify what types\n * are expected by each function and simplifies the process of\n * converting code from languages that implement full hierarchies.\n */\n\ntypedef struct GObjectCDT *GObject;\n\n#endif\n\n/*\n * Function: freeGObject\n * Usage: freeGObject(gobj);\n * -------------------------\n * Frees the memory associated with the object.  This operation is\n * not necessary for objects that have been installed in a window.\n * Adding a <code>GObject</code> to a <code>GWindow</code> or a\n * <code>GCompound</code> transfers ownership to the container,\n * which assumes responsibility for freeing the object.\n */\n\nvoid freeGObject(GObject gobj);\n\n/*\n * Function: getX\n * Usage: x = getX(gobj);\n * ----------------------\n * Returns the <i>x</i>-coordinate of the object.\n */\n\ndouble getXGObject(GObject gobj);\n\n/*\n * Function: getY\n * Usage: y = getY(gobj);\n * ----------------------\n * Returns the <i>y</i>-coordinate of the object.\n */\n\ndouble getYGObject(GObject gobj);\n\n/*\n * Function: getLocation\n * Usage: pt = getLocation(gobj);\n * ------------------------------\n * Returns the location of this object as a <code>GPoint</code>.\n */\n\nGPoint getLocation(GObject gobj);\n\n/*\n * Function: setLocation\n * Usage: setLocation(gobj, x, y);\n * -------------------------------\n * Sets the location of this object to the specified coordinates.\n */\n\nvoid setLocation(GObject gobj, double x, double y);\n\n/*\n * Function: move\n * Usage: move(gobj, dx, dy);\n * --------------------------\n * Moves the object on the screen using the displacements\n * <code>dx</code> and <code>dy</code>.\n */\n\nvoid move(GObject gobj, double dx, double dy);\n\n/*\n * Function: getWidth\n * Usage: width = getWidth(gobj);\n * ------------------------------\n * Returns the width of this object, which is defined to be the width of\n * the bounding box.\n */\n\ndouble getWidthGObject(GObject gobj);\n\n/*\n * Function: getHeight\n * Usage: height = getHeight(gobj);\n * --------------------------------\n * Returns the height of this object, which is defined to be the height\n * of the bounding box.\n */\n\ndouble getHeightGObject(GObject gobj);\n\n/*\n * Function: getSize\n * Usage: size = getSize(gobj);\n * ----------------------------\n * Returns the size of the object as a <code>GDimension</code>.\n */\n\nGDimension getSize(GObject gobj);\n\n/*\n * Function: getBounds\n * Usage: rect = getBounds(gobj);\n * ------------------------------\n * Returns the bounding box of this object, which is defined to be the\n * smallest rectangle that covers everything drawn by the figure.  The\n * coordinates of this rectangle do not necessarily match the location\n * returned by <code>getLocation</code>.  Given a <code>GLabel</code>\n * object, for example, <code>getLocation</code> returns the coordinates\n * of the point on the baseline at which the string begins; the\n * <code>getBounds</code> method, by contrast, returns a rectangle that\n * covers the entire window area occupied by the string.\n */\n\nGRectangle getBounds(GObject gobj);\n\n/*\n * Function: setColor\n * Usage: setColor(gobj, color);\n * -----------------------------\n * Sets the color used to display this object.  The <code>color</code>\n * string is usually one of the predefined color names:\n *\n *    <code>BLACK</code><br>\n *    <code>BLUE</code><br>\n *    <code>CYAN</code><br>\n *    <code>DARK_GRAY</code><br>\n *    <code>GRAY</code><br>\n *    <code>GREEN</code><br>\n *    <code>LIGHT_GRAY</code><br>\n *    <code>MAGENTA</code><br>\n *    <code>ORANGE</code><br>\n *    <code>PINK</code><br>\n *    <code>RED</code><br>\n *    <code>WHITE</code><br>\n *    <code>YELLOW</code><br>\n *\n * <p>The case of the individual letters in the color name is ignored, as\n * are spaces and underscores, so that the color <code>DARK_GRAY</code>\n * can be written as <code>\"Dark Gray\"</code>.\n */\n\nvoid setColorGObject(GObject gobj, string color);\n\n/*\n * Function: getColor\n * Usage: color = getColor(gobj);\n * ------------------------------\n * Returns the color used to display this object.  This color is\n * always returned as a string in the form <code>\"#rrggbb\"</code>,\n * where <code>rr</code>, <code>gg</code>, and <code>bb</code> are\n * the red, green, and blue components of the color, expressed as\n * two-digit hexadecimal values.\n */\n\nstring getColorGObject(GObject gobj);\n\n/*\n * Function: setVisible\n * Usage: setVisible(gobj, flag);\n * ------------------------------\n * Sets whether this object is visible.\n */\n\nvoid setVisibleGObject(GObject gobj, bool flag);\n\n/*\n * Function: isVisible\n * Usage: if (isVisible(gobj)) . . .\n * ---------------------------------\n * Returns <code>true</code> if this object is visible.\n */\n\nbool isVisibleGObject(GObject gobj);\n\n/*\n * Function: sendForward\n * Usage: sendForward(gobj);\n * -------------------------\n * Moves this object one step toward the front in the <i>z</i> dimension.\n * If it was already at the front of the stack, nothing happens.\n */\n\nvoid sendForward(GObject gobj);\n\n/*\n * Function: sendToFront\n * Usage: sendToFront(gobj);\n * -------------------------\n * Moves this object to the front of the display in the <i>z</i> dimension.\n * By moving it to the front, this object will appear to be on top of the\n * other graphical objects on the display and may hide any objects that\n * are further back.\n */\n\nvoid sendToFront(GObject gobj);\n\n/*\n * Function: sendBackward\n * Usage: sendBackward(gobj);\n * --------------------------\n * Moves this object one step toward the back in the <i>z</i> dimension.\n * If it was already at the back of the stack, nothing happens.\n */\n\nvoid sendBackward(GObject gobj);\n\n/*\n * Function: sendToBack\n * Usage: sendToBack(gobj);\n * ------------------------\n * Moves this object to the back of the display in the <i>z</i> dimension.\n * By moving it to the back, this object will appear to be behind the other\n * graphical objects on the display and may be obscured by other objects\n * in front.\n */\n\nvoid sendToBack(GObject gobj);\n\n/*\n * Function: contains\n * Usage: if (contains(gobj, x, y)) . . .\n * --------------------------------------\n * Returns <code>true</code> if the specified point is inside the object.\n */\n\nbool containsGObject(GObject gobj, double x, double y);\n\n/*\n * Function: getType\n * Usage: type = getType(gobj);\n * ----------------------------\n * Returns the subtype of the object as a string, as in <code>\"GOval\"</code>\n * or <code>\"GRect\"</code>.\n */\n\nstring getType(GObject gobj);\n\n/*\n * Function: getParent\n * Usage: parent = getParent(gobj);\n * --------------------------------\n * Returns a pointer to the <code>GCompound</code> that contains this\n * object.  Every <code>GWindow</code> is initialized to contain a single\n * <code>GCompound</code> that is aligned with the window.  Adding\n * objects to the window adds them to that <code>GCompound</code>,\n * which means that every object you add to the window has a parent.\n * Calling <code>getParent</code> on the top-level <code>GCompound</code>\n * returns <code>NULL</code>.\n */\n\nGObject getParent(GObject gobj);\n\n/* Functions that apply to several types */\n\n/*\n * Function: setSize\n * Usage: setSize(gobj, width, height);\n * ------------------------------------\n * Changes the size of this object to the specified width and height.  This\n * method applies to the types <code>GOval</code>, <code>GImage</code>,\n * and <code>GRect</code> (and its subclasses).\n */\n\nvoid setSize(GObject gobj, double width, double height);\n\n/*\n * Function: setBounds\n * Usage: setBounds(gobj, x, y, width, height);\n * --------------------------------------------\n * Changes the bounds of this object to the specified values.  This\n * method applies to the types <code>GOval</code>, <code>GImage</code>,\n * and <code>GRect</code> (and its subclasses).\n */\n\nvoid setBounds(GObject gobj, double x, double y, double width, double height);\n\n/*\n * Function: setFilled\n * Usage: setFilled(gobj, flag);\n * -----------------------------\n * Sets the fill status for <code>gobj</code>, where <code>false</code>\n * is outlined and <code>true</code> is filled.\n */\n\nvoid setFilled(GObject gobj, bool flag);\n\n/*\n * Function: isFilled\n * Usage: if (isFilled(gobj)) . . .\n * --------------------------------\n * Returns <code>true</code> if <code>gobj</code> is filled.\n */\n\nbool isFilled(GObject gobj);\n\n/*\n * Function: setFillColor\n * Usage: setFillColor(gobj, color);\n * ---------------------------------\n * Sets the color used to display the filled region of this rectangle.\n */\n\nvoid setFillColor(GObject gobj, string color);\n\n/*\n * Function: getFillColor\n * Usage: color = getFillColor(gobj);\n * ----------------------------------\n * Returns the color used to display the filled region of <code>gobj</code>.\n * rectangle.  If none has been set, <code>getFillColor</code> returns\n * the empty string.\n */\n\nstring getFillColor(GObject gobj);\n\n/*\n * Type: GRect\n * -----------\n * This type represents a graphical object whose appearance consists of a\n * rectangular box.  For example, the following code adds a filled, red,\n * <nobr>200<font class=sansserif size=-1>x</font>100</nobr> rectangle\n * at the upper left corner of the graphics window:\n *\n *<pre>\n *    main() {\n *       GWindow gw = newGWindow(500, 300);\n *       printf(\"This program draws a red rectangle at (0, 0).\\n\")\n *       GRect rect = newGRect(0, 0, 200, 100);\n *       setFilled(rect, true);\n *       setColor(rect, \"RED\");\n *       add(gw, rect);\n *    }\n *</pre>\n */\n\ntypedef GObject GRect;\n\n/*\n * Function: newGRect\n * Usage: rect = newGRect(x, y, width, height);\n * --------------------------------------------\n * Creates a new <code>GRect</code> with the specified bounds.  By\n * default, the rectangle is unfilled.\n */\n\nGRect newGRect(double x, double y, double width, double height);\n\n/*\n * Type: GRoundRect\n * ----------------\n * This type represents a rectangular box with rounded corners.\n */\n\ntypedef GRect GRoundRect;\n\n/*\n * Function: newGRoundRect\n * Usage: GRoundRect rect = newGRoundRect(x, y, width, height, corner);\n * --------------------------------------------------------------------\n * Creates a new <code>GRoundRect</code> with the specified dimensions.\n * The <code>corner</code> parameter specifies the diameter of the arc\n * forming the corner.\n */\n\nGRoundRect newGRoundRect(double x, double y, double width, double height,\n                                             double corner);\n\n/*\n * Type: G3DRect\n * -------------\n * This type represents a rectangular box that can appear raised or lowered.\n */\n\ntypedef GRect G3DRect;\n\n/*\n * Function: newG3DRect\n * Usage: G3DRect rect = newG3DRect(x, y, width, height, raised);\n * --------------------------------------------------------------\n * Creates a new <code>G3DRect</code> with the specified dimensions.\n * The <code>corner</code> parameter specifies whether this rectangle\n * should appear raised.\n */\n\nG3DRect newG3DRect(double x, double y, double width, double height,\n                                       bool raised);\n/*\n * Function: setRaised\n * Usage: setRaised(rect, raised);\n * -------------------------------\n * Indicates whether this object appears raised.\n */\n\nvoid setRaised(G3DRect rect, bool raised);\n\n/*\n * Function: isRaised\n * Usage: if (isRaised(rect)) ...\n * ------------------------------\n * Returns <code>true</code> if this object appears raised.\n */\n\nbool isRaised(G3DRect rect);\n\n/*\n * Type: GOval\n * -----------\n * This type represents an oval inscribed in a rectangular box.\n * For example, the following code displays a filled green oval\n * inscribed in the graphics window:\n *\n *<pre>\n *    main() {\n *       GWindow gw = newGWindow(500, 300);\n *       printf(\"This program draws a green oval filling the window.\\n\");\n *       GOval oval = newGOval(getWidth(gw), getHeight(gw));\n *       setFilled(oval, true);\n *       setColor(oval, \"GREEN\");\n *       add(gw, oval);\n *    }\n *</pre>\n */\n\ntypedef GObject GOval;\n\n/*\n * Function: newGOval\n * Usage: oval = newGOval(x, y, width, height);\n * --------------------------------------------\n * Creates a new <code>GOval</code> with the specified bounds.  By default,\n * the oval is unfilled.\n */\n\nGObject newGOval(double x, double y, double width, double height);\n\n/*\n * Type: GLine\n * -----------\n * This type represents a line segment.  For example, the following code\n * adds lines that mark the diagonals of the graphics window:\n *\n *<pre>\n *    main() {\n *       GWindow gw = newGWindow(500, 300);\n *       printf(\"This program draws the diagonals on the window.\\n\");\n *       add(gw, newGLine(0, 0, getWidth(gw), getHeight(gw)));\n *       add(gw, newGLine(0, getHeight(gw), getWidth(gw), 0));\n *    }\n *</pre>\n */\n\ntypedef GObject GLine;\n\n/*\n * Function: newGLine\n * Usage: line = newGLine(x0, y0, x1, y1);\n * ---------------------------------------\n * Creates a new graphical line connecting the points\n * (<code>x0</code>,&nbsp;<code>y0</code>) and\n * (<code>x1</code>,&nbsp;<code>y1</code>).\n */\n\nGObject newGLine(double x0, double y0, double x1, double y1);\n\n/*\n * Function: setStartPoint\n * Usage: setStartPoint(gline, x, y);\n * ----------------------------------\n * Sets the start point for the line to (<code>x</code>,&nbsp;<code>y</code>),\n * leaving the end point unchanged.  This method is therefore different\n * from <code>setLocation</code>, which moves both components of the\n * line segment.\n */\n\nvoid setStartPoint(GLine line, double x, double y);\n\n/*\n * Function: setEndPoint\n * Usage: setEndPoint(line, x, y);\n * -------------------------------\n * Sets the end point for the line to (<code>x</code>,&nbsp;<code>y</code>),\n * leaving the start point unchanged.\n */\n\nvoid setEndPoint(GLine line, double x, double y);\n\n/*\n * Function: getStartPoint\n * Usage: pt = getStartPoint(gobj);\n * --------------------------------\n * Returns the point at which a <code>GLine</code> or <code>GArc</code> starts.\n */\n\nGPoint getStartPoint(GObject gobj);\n\n/*\n * Function: getEndPoint\n * Usage: pt = getEndPoint(gobj);\n * ------------------------------\n * Returns the point at which a <code>GLine</code> or <code>GArc</code> ends.\n */\n\nGPoint getEndPoint(GObject gobj);\n\n/*\n * Type: GArc\n * ----------\n * This type represents an elliptical arc.  The arc is specified by the\n * following parameters:\n *\n * <p><ul>\n *   <li>The coordinates of the bounding rectangle (<code>x</code>,\n *       <code>y</code>, <code>width</code>, <code>height</code>)\n *   <li>The angle at which the arc starts (<code>start</code>)\n *   <li>The number of degrees that the arc covers (<code>sweep</code>)\n * </ul>\n *\n * <p>All angles in a <code>GArc</code> description are measured in\n * degrees moving counterclockwise from the +<i>x</i> axis.  Negative\n * values for either <code>start</code> or <code>sweep</code> indicate\n * motion in a clockwise direction.\n * <include src=\"pictures/GObjectDiagrams/GArcGeometry.html\">\n */\n\ntypedef GObject GArc;\n\n/*\n * Function: newGArc\n * Usage: arc = newGArc(x, y, width, height, start, sweep);\n * --------------------------------------------------------\n * Creates a new <code>GArc</code> consisting of an elliptical arc.\n * <include src=\"pictures/GObjectDiagrams/GArcExamples.html\">\n */\n\nGArc newGArc(double x, double y, double width, double height,\n                                 double start, double sweep);\n\n/*\n * Function: setStartAngle\n * Usage: setStartAngle(arc, start);\n * ---------------------------------\n * Sets the starting angle for this <code>GArc</code> object.\n */\n\nvoid setStartAngle(GArc arc, double start);\n\n/*\n * Function: getStartAngle\n * Usage: angle = getStartAngle(arc);\n * ----------------------------------\n * Returns the starting angle for this <code>GArc</code> object.\n */\n\ndouble getStartAngle(GArc arc);\n\n/*\n * Function: setSweepAngle\n * Usage: setSweepAngle(arc, start);\n * ---------------------------------\n * Sets the sweep angle for this <code>GArc</code> object.\n */\n\nvoid setSweepAngle(GArc arc, double start);\n\n/*\n * Function: getSweepAngle\n * Usage: angle = getSweepAngle(arc);\n * ----------------------------------\n * Returns the sweep angle for this <code>GArc</code> object.\n */\n\ndouble getSweepAngle(GArc arc);\n\n/*\n * Function: setFrameRectangle\n * Usage: setFrameRectangle(arc, x, y, width, height);\n * ---------------------------------------------------\n * Changes the boundaries of the rectangle used to frame the arc.\n */\n\nvoid setFrameRectangle(GArc garc, double x, double y,\n                                  double width, double height);\n\n/*\n * Function: getFrameRectangle\n * Usage: rect = getFrameRectangle(arc);\n * -------------------------------------\n * Returns the boundaries of the rectangle used to frame the arc.\n */\n\nGRectangle getFrameRectangle(GArc arc);\n\n/*\n * Type: GLabel\n * ------------\n * This subtype represents a text string.  For example, the following code\n * adds a <code>GLabel</code> containing <code>\"hello, world\"</code> to\n * the center of the window:\n *\n *<pre>\n *    main() {\n *       GWindow gw;\n *       GLabel label;\n *       double x, y;\n *\n *       printf(\"This program draws the 'hello, world' message.\\n\");\n *       gw = newGWindow(600, 400);\n *       label = newGLabel(\"hello, world\");\n *       setFont(label, \"SansSerif-18\");\n *       x = (getWidth(gw) - getWidth(label)) / 2;\n *       y = (getHeight(gw) + getFontAscent(label)) / 2;\n *       setLocation(label, x, y);\n *       add(gw, label);\n *    }\n *</pre>\n *\n * Controlling the appearance and positioning of a <code>GLabel</code>\n * depends on understanding the following terms:\n *\n * <p><ul>\n *   <li>The <b><i>baseline</i></b> is the horizontal line on which the\n *       characters rest.\n *   <li>The <b><i>origin</i></b> is the point on the baseline at which\n *       the label begins.\n *   <li>The <b><i>height</i></b> is the distance that separate two\n *       successive lines.\n *   <li>The <b><i>ascent</i></b> is the maximum distance a character\n *       in this font extends above the baseline.\n *   <li>The <b><i>descent</i></b> is the maximum distance a character\n *       in this font extends below the baseline.\n * </ul>\n * <include src=\"pictures/GObjectDiagrams/GLabelGeometry.html\">\n */\n\ntypedef GObject GLabel;\n\n/*\n * Function: newGLabel\n * Usage: label = newGLabel(str);\n * ------------------------------\n * Creates a <code>GLabel</code> object containing the specified string,\n * positioned with an origin of (0, 0).\n */\n\nGLabel newGLabel(string str);\n\n/*\n * Function: setFont\n * Usage: setFont(label, font);\n * ----------------------------\n * Changes the font used to display the <code>GLabel</code> as specified by\n * the string <code>font</code>, which has the following format:\n *\n *<pre>\n *    family-style-size\n *</pre>\n *\n * where both <code>style</code> and <code>size</code> are optional.\n * If any of these elements are missing or specified as an asterisk,\n * the existing value is retained.\n */\n\nvoid setFont(GLabel label, string font);\n\n/*\n * Function: getFont\n * Usage: font = getFont(label);\n * -----------------------------\n * Returns the current font for the <code>GLabel</code>.\n */\n\nstring getFont(GLabel label);\n\n/*\n * Function: setLabel\n * Usage: setLabel(label, str);\n * ----------------------------\n * Changes the string stored within the <code>GLabel</code> object, so that\n * a new text string appears on the display.\n */\n\nvoid setLabel(GLabel label, string str);\n\n/*\n * Function: getLabel\n * Usage: str = getLabel(label);\n * -----------------------------\n * Returns the string displayed by this object.\n */\n\nstring getLabel(GLabel label);\n\n/*\n * Function: getFontAscent\n * Usage: ascent = getFontAscent(label);\n * -------------------------------------\n * Returns the maximum distance strings in this font extend above\n * the baseline.\n */\n\ndouble getFontAscent(GLabel label);\n\n/*\n * Function: getFontDescent\n * Usage: descent = getFontDescent(label);\n * ---------------------------------------\n * Returns the maximum distance strings in this font descend below\n * the baseline.\n */\n\ndouble getFontDescent(GLabel label);\n\n/*\n * Type: GImage\n * ------------\n * This subtype represents an image from a file.  For example, the\n * following code adds a <code>GImage</code> containing the Stanford\n * tree at the center of the window, assuming that the image file\n * <code>StanfordTree.png</code> exists, either in the current\n * directory or an <code>images</code> subdirectory:\n *\n *<pre>\n *    main() {\n *       printf(\"This program draws the Stanford tree.\\n\");\n *       GWindow gw = newGWindow(600, 400);\n *       GImage tree = newGImage(\"StanfordTree.png\");\n *       double x = (getWidth(gw) - getWidth(tree)) / 2;\n *       double y = (getHeight(gw) - getHeight(tree)) / 2;\n *       add(gw, tree, x, y);\n *    }\n *</pre>\n */\n\ntypedef GObject GImage;\n\n/*\n * Function: newGImage\n * Usage: GImage image = newGImage(filename);\n * ------------------------------------------\n * Constructs a new image by loading the image from the specified\n * file, which is either in the current directory or a subdirectory named\n * <code>images</code>.  The upper left corner of the image is positioned\n * at the origin.\n */\n\nGImage newGImage(string filename);\n\n/*\n * Type: GPolygon\n * --------------\n * This subtype represents a polygon bounded by line segments.\n * The <code>newGPolygon</code> function creates an empty polygon.\n * To complete the figure, you need to add vertices to the polygon\n * using the functions\n * <a href=\"#Function:addVertex\"><code>addVertex</code></a>,\n * <a href=\"#Function:addEdge\"><code>addEdge</code></a>,\n * and <a href=\"#Function:addPolarEdge\"><code>addPolarEdge</code></a>.\n * As an example, the following code adds a filled red octagon to\n * the center of the window:\n *\n *<pre>\n *    main() {\n *       GWindow gw;\n *       GPolygon stopSign;\n *       double edge;\n *       int i;\n *\n *       printf(\"This program draws a red octagon.\\n\");\n *       gw = newGWindow(600, 400);\n *       edge = 75;\n *       stopSign = newGPolygon();\n *       addVertex(stopSign, -edge / 2, edge / 2 + edge / sqrt(2.0));\n *       for (i = 0; i < 8; i++) {\n *          addPolarEdge(stopSign, edge, 45 * i);\n *       }\n *       setFilled(stopSign, true);\n *       setColor(stopSign, \"RED\");\n *       add(gw, stopSign, getWidth(gw) / 2, getHeight(gw) / 2);\n *    }\n *</pre>\n * <include src=\"pictures/GObjectDiagrams/StopSign.html\">\n */\n\ntypedef GObject GPolygon;\n\n/*\n * Function: newGPolygon\n * Usage: poly = newGPolygon();\n * ----------------------------\n * Constructs a new empty polygon.\n */\n\nGPolygon newGPolygon(void);\n\n/*\n * Function: addVertex\n * Usage: addVertex(poly, x, y);\n * -----------------------------\n * Adds a vertex at (<code>x</code>, <code>y</code>) relative to the polygon\n * origin.\n */\n\nvoid addVertex(GPolygon poly, double x, double y);\n\n/*\n * Function: addEdge\n * Usage: addEdge(poly, dx, dy);\n * -----------------------------\n * Adds an edge to the polygon whose components are given by the displacements\n * <code>dx</code> and <code>dy</code> from the last vertex.\n */\n\nvoid addEdge(GPolygon poly, double dx, double dy);\n\n/*\n * Function: addPolarEdge\n * Usage: addPolarEdge(poly, r, theta);\n * ------------------------------------\n * Adds an edge to the polygon specified in polar coordinates.  The length\n * of the edge is given by <code>r</code>, and the edge extends in\n * direction <code>theta</code>, measured in degrees counterclockwise\n * from the +x axis.\n */\n\nvoid addPolarEdge(GPolygon poly, double r, double theta);\n\n/*\n * Function: getVertices\n * Usage: vec = getVertices(poly);\n * -------------------------------\n * Returns a vector whose elements are pointers to the GPoint values that\n * represent the vertices.  This vector is shared with the internal data\n * structure of the GPolygon and must not be freed by the client.\n */\n\nVector getVertices(GPolygon poly);\n\n/*\n * Type: GCompound\n * ---------------\n * This subtype consists of a collection of other graphical objects.\n * Once assembled, the internal objects can be manipulated as a unit.\n * The <code>GCompound</code> keeps track of its own position, and all\n * items within it are drawn relative to that location.\n */\n\ntypedef GObject GCompound;\n\n/*\n * Function: newGCompound\n * Usage: comp = newGCompound();\n * -----------------------------\n * Creates a new graphical compound with no internal components.\n */\n\nGObject newGCompound(void);\n\n/*\n * Function: add\n * Usage: add(compound, gobj);\n * ---------------------------\n * Adds the object to the compound.\n */\n\nvoid addGCompound(GCompound compound, GObject gobj);\n\n/*\n * Function: add\n * Usage: add(compound, gobj);\n * ---------------------------\n * Removes the object from the compound.\n */\n\nvoid removeGCompound(GCompound compound, GObject gobj);\n\n/*\n * Friend function: getGObjectCompound\n * Usage: gobj = getGObjectCompound(GCompound compound, double x, double y);\n * -------------------------------------------------------------------------\n * Returns the topmost object covering x and y, or <code>NULL</code> if\n * no such object exists.\n */\n\nGObject getGObjectCompound(GCompound compound, double x, double y);\n\n/*\n * Friend type: ObjectTypeBits\n * ---------------------------\n * This enumeration identifies a GObject type in a way that simplifies\n * checking whether a particular function is legal on that object.\n */\n\ntypedef enum {\n   GARC = 1<<0,\n   GCOMPOUND = 1<<1,\n   GIMAGE = 1<<2,\n   GLABEL = 1<<3,\n   GLINE = 1<<4,\n   GOVAL = 1<<5,\n   GPOLYGON = 1<<6,\n   GRECT = 1<<7,\n   G3DRECT = 1<<8,\n   GROUNDRECT = 1<<9,\n   GINTERACTOR = 0x1F<<10,\n   GBUTTON = 1<<10,\n   GCHECKBOX = 1<<11,\n   GCHOOSER = 1<<12,\n   GSLIDER = 1<<13,\n   GTEXTFIELD = 1<<14\n} GObjectTypeBits;\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/graph.c",
    "content": "/*\n * File: graph.c\n * Last modified on Fri Sep 26 09:34:55 2014 by eroberts\n * -----------------------------------------------------\n * This file implements the graph.h interface using sets to represent the\n * nodes and arcs.\n */\n\n#include <stdio.h>\n#include \"foreach.h\"\n#include \"cslib.h\"\n#include \"generic.h\"\n#include \"graph.h\"\n#include \"hashmap.h\"\n#include \"iterator.h\"\n#include \"itertype.h\"\n#include \"set.h\"\n#include \"strlib.h\"\n#include \"unittest.h\"\n\n/*\n * Type: GraphCDT\n * --------------\n * This definition provides the concrete type for a Graph,\n * which is implemented as a set of nodes and a set of arcs.\n */\n\nstruct GraphCDT {\n   IteratorHeader header;       /* Header to make graphs iterable     */\n   Set nodes;                   /* The set of all nodes in the graph  */\n   Set arcs;                    /* The set of all arcs in the graph   */\n   CompareFn nodeCmpFn;         /* Comparison function to order nodes */\n   CompareFn arcCmpFn;          /* Comparison function to order arcs  */\n   HashMap nameMap;             /* Map from names to nodes            */\n};\n\n/*\n * Type: NodeCDT\n * -------------\n * This type defines the concrete structure of a graph node.  All nodes\n * have a name, which is used to identify the node.\n */\n\nstruct NodeCDT {\n   string name;                 /* Name identifying the node          */\n   Set arcs;                    /* Set of arcs leaving this node      */\n   Graph graph;                 /* The graph containing this node     */\n};\n\n/*\n * Type: ArcCDT\n * ------------\n * The concrete type for an arc consists of its endpoints plus a cost.\n * This cost need not be economic and will often refer to some other\n * metric, such as distance.\n */\n\nstruct ArcCDT {\n   Node start;                  /* The starting node for the arc      */\n   Node end;                    /* The ending node for the arc        */\n   double cost;                 /* The \"cost\" of travesing the arc    */\n   Graph graph;                 /* The graph containing this arc      */\n};\n\n/* Private function prototypes */\n\nstatic Iterator newGraphIterator(void *collection);\nstatic int defaultNodeOrdering(const void *p1, const void *p2);\nstatic int defaultArcOrdering(const void *p1, const void *p2);\n\n/* Exported entries */\n\nGraph newGraph(void) {\n   Graph g;\n\n   g = newBlock(Graph);\n   enableIteration(g, newGraphIterator);\n   g->nodes = newSet(Node);\n   g->arcs = newSet(Arc);\n   g->nodeCmpFn = defaultNodeOrdering;\n   g->arcCmpFn = defaultArcOrdering;\n   setCompareFn(g->nodes, defaultNodeOrdering);\n   setCompareFn(g->arcs, defaultArcOrdering);\n   g->nameMap = newHashMap();\n   return g;\n}\n\nvoid freeGraph(Graph g) {\n   Node node;\n   Arc arc;\n\n   foreach (node in g->nodes) {\n      freeBlock(node);\n   }\n   foreach (arc in g->arcs) {\n      freeBlock(arc);\n   }\n   freeSet(g->nodes);\n   freeSet(g->arcs);\n   freeHashMap(g->nameMap);\n   freeBlock(g);\n}\n\nNode addNode(Graph g, string name) {\n   Node node;\n\n   node = newBlock(Node);\n   node->name = name;\n   node->arcs = newSet(Arc);\n   node->graph = g;\n   setCompareFn(node->arcs, g->arcCmpFn);\n   addSet(g->nodes, node);\n   if (containsKeyHashMap(g->nameMap, name)) {\n      error(\"addNode: Duplicate node %s\", name);\n   }\n   putHashMap(g->nameMap, name, node);\n   return node;\n}\n\nvoid removeNode(Graph g, Node node) {\n   Arc arc;\n\n   foreach (arc in g->arcs) {\n      if (arc->start == node || arc->end == node) removeArc(g, arc);\n   }\n   freeSet(node->arcs);\n   removeSet(g->nodes, node);\n   removeHashMap(g->nameMap, node->name);\n   freeBlock(node);\n}\n\nNode getNode(Graph g, string name) {\n   return getHashMap(g->nameMap, name);\n}\n\nArc addArc(Graph g, Node n1, Node n2) {\n   Arc arc;\n\n   arc = newBlock(Arc);\n   arc->start = n1;\n   arc->end = n2;\n   arc->cost = 0;\n   arc->graph = g;\n   addSet(g->arcs, arc);\n   addSet(n1->arcs, arc);\n   return arc;\n}\n\nvoid removeArc(Graph g, Arc arc) {\n   removeSet(g->arcs, arc);\n   removeSet(arc->start->arcs, arc);\n   freeBlock(arc);\n}\n\nbool isConnected(Node n1, Node n2) {\n   Iterator it;\n   Arc arc;\n   bool result;\n\n   result = false;\n   it = newIterator(n1->arcs);\n   while (!result && stepIterator(it, &arc)) {\n      if (arc->end == n2) result = true;\n   }\n   freeIterator(it);\n   return result;\n}\n\nSet getNodeSet(Graph g) {\n   return g->nodes;\n}\n\nSet getArcSet(void *arg) {\n   string type;\n\n   type = getBlockType(arg);\n   if (endsWith(type, \"Graph\")) {\n      return ((Graph) arg)->arcs;\n   } else if (endsWith(type, \"Node\")) {\n      return ((Node) arg)->arcs;\n   } else {\n      error(\"getArcSet: Unsupported type %s\", type);\n      return NULL;\n   }\n}\n\nSet getNeighbors(Node node) {\n   Set result;\n   Arc arc;\n\n   result = newSet(Node);\n   setCompareFn(result, node->graph->nodeCmpFn);\n   foreach (arc in node->arcs) {\n      addSet(result, arc->end);\n   }\n   return result;\n}\n\nstring getName(Node node) {\n   return node->name;\n}\n\nNode startOfArc(Arc arc) {\n   return arc->start;\n}\n\nNode endOfArc(Arc arc) {\n   return arc->end;\n}\n\ndouble getCost(Arc arc) {\n   return arc->cost;\n}\n\nvoid setCost(Arc arc, double cost) {\n   arc->cost = cost;\n}\n\nvoid setNodeOrdering(Graph g, CompareFn cmpFn) {\n   // Add isEmpty check\n   g->nodeCmpFn = cmpFn;\n   setCompareFn(g->nodes, cmpFn);\n}\n\nvoid setArcOrdering(Graph g, CompareFn cmpFn) {\n   // Add isEmpty check\n   g->arcCmpFn = cmpFn;\n   setCompareFn(g->arcs, cmpFn);\n}\n\n/* Private functions */\n\n/*\n * Function: newGraphIterator\n * Usage: iterator = newGraphIterator(graph);\n * ------------------------------------------\n * Creates a new iterator for a graph, which iterates over its nodes.\n */\n\nstatic Iterator newGraphIterator(void *collection) {\n   return newIterator(((Graph) collection)->nodes);\n}\n\nstatic int defaultNodeOrdering(const void *p1, const void *p2) {\n   string s1, s2;\n\n   s1 = getName(*((Node *) p1));\n   s2 = getName(*((Node *) p2));\n   return stringCompare(s1, s2);\n}\n\nstatic int defaultArcOrdering(const void *p1, const void *p2) {\n   Arc a1, a2;\n   int cmp;\n\n   a1 = *((Arc *) p1);\n   a2 = *((Arc *) p2);\n   cmp = stringCompare(getName(a1->start), getName(a2->start));\n   if (cmp != 0) return cmp;\n   cmp = stringCompare(getName(a1->end), getName(a2->end));\n   if (cmp != 0) return cmp;\n   if (a1->cost < a2->cost) return -1;\n   if (a1->cost > a2->cost) return +1;\n   if (a1 < a2) return -1;\n   if (a1 > a2) return +1;\n   return 0;\n}\n\n/**********************************************************************/\n/* Unit test for the graph module                                     */\n/**********************************************************************/\n\n#ifndef _NOTEST_\n\n/* Desired output stream */\n\nstatic string nodeScript[] = { \"A\", \"B\", \"C\", \"D\", \"X\" };\nstatic string arcScript[] = {\n   \"A -> B\",\n   \"A -> C\",\n   \"A -> D\",\n   \"B -> C\",\n   \"B -> D\",\n   \"C -> D\",\n   \"X\"\n};\nstatic string neighborScript[] = { \"B\", \"C\", \"D\", \"X\" };\nstatic string arcsFromScript[] = { \"A -> B\", \"A -> C\", \"A -> D\", \"X\" };\n\n/* Private function prototypes */\n\nstatic Graph createTestGraph(void);\nstatic void createNode(Graph g, string name);\nstatic void linkNodesAlphabetically(Graph g);\nstatic void testNodeIterator(Graph g);\nstatic void testArcIterator(Graph g);\nstatic void testArcsFrom(Graph g);\nstatic void testNeighbors(Graph g);\nstatic string arcString(Arc arc);\n\n/* Unit test */\n\nvoid testGraphModule(void) {\n   Graph g;\n\n   g = createTestGraph();\n   testNodeIterator(g);\n   testArcIterator(g);\n   testArcsFrom(g);\n   testNeighbors(g);\n}\n\n/* Private functions */\n\nstatic Graph createTestGraph(void) {\n   Graph g;\n\n   reportMessage(\"createTestGraph();\");\n   g = newGraph();\n   addNode(g, \"A\");\n   addNode(g, \"B\");\n   addNode(g, \"C\");\n   addNode(g, \"D\");\n   linkNodesAlphabetically(g);\n   return g;\n}\n\nstatic void linkNodesAlphabetically(Graph g) {\n   Node n1, n2;\n   string s1, s2;\n\n   foreach (n1 in getNodeSet(g)) {\n      s1 = getName(n1);\n      foreach (n2 in getNodeSet(g)) {\n         s2 = getName(n2);\n         if (stringCompare(s1, s2) < 0) {\n            addArc(g, n1, n2);\n         }\n      }\n   }\n}\n\nstatic void testNodeIterator(Graph g) {\n   Node node;\n   int count;\n\n   count = 0;\n   reportMessage(\"foreach (node in getNodes(g)) {\");\n   adjustReportIndentation(+3);\n   foreach (node in getNodeSet(g)) {\n      test(getName(node), (string) nodeScript[count++]);\n   }\n   adjustReportIndentation(-3);\n   reportMessage(\"}\");\n   if (!stringEqual(nodeScript[count], \"X\")) {\n      reportError(\"Node iterator has too few elements\");\n   }\n}\n\nstatic void testArcIterator(Graph g) {\n   Arc arc;\n   int count;\n\n   count = 0;\n   reportMessage(\"foreach (arc in getArcSet(g)) {\");\n   adjustReportIndentation(+3);\n   foreach (arc in getArcSet(g)) {\n      test(arcString(arc), (string) arcScript[count++]);\n   }\n   adjustReportIndentation(-3);\n   reportMessage(\"}\");\n   if (!stringEqual(arcScript[count], \"X\")) {\n      reportError(\"Arc iterator has too few elements\");\n   }\n}\n\nstatic void testArcsFrom(Graph g) {\n   Arc arc;\n   int count;\n\n   count = 0;\n   reportMessage(\"foreach (arc in getArcSet(getNode(g, \\\"A\\\"))) {\");\n   adjustReportIndentation(+3);\n   foreach (arc in getArcSet(getNode(g, \"A\"))) {\n      test(arcString(arc), (string) arcsFromScript[count++]);\n   }\n   adjustReportIndentation(-3);\n   reportMessage(\"}\");\n   if (!stringEqual(arcsFromScript[count], \"X\")) {\n      reportError(\"Arc iterator has too few elements\");\n   }\n}\n\nstatic void testNeighbors(Graph g) {\n   Node node;\n   int count;\n\n   count = 0;\n   reportMessage(\"foreach (node in getNeighbors(getNode(g, \\\"A\\\"))) {\");\n   adjustReportIndentation(+3);\n   foreach (node in getNeighbors(getNode(g, \"A\"))) {\n      test(getName(node), (string) neighborScript[count++]);\n   }\n   adjustReportIndentation(-3);\n   reportMessage(\"}\");\n   if (!stringEqual(neighborScript[count], \"X\")) {\n      reportError(\"Node iterator has too few elements\");\n   }\n}\n\nstatic string arcString(Arc arc) {\n   return concat(getName(arc->start), concat(\" -> \", getName(arc->end)));\n}\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/graph.h",
    "content": "/*\n * File: graph.h\n * -------------\n * This interface exports a simple graph abstraction.  In this abstraction,\n * graphs closely model their mathematical formulation as a set of nodes\n * connected by a set of arcs.\n */\n\n#ifndef _graph_h\n#define _graph_h\n\n#include \"cslib.h\"\n#include \"cmpfn.h\"\n#include \"set.h\"\n\n/*\n * Type: Graph\n * -----------\n * This type represents the abstract type for a graph.  Conceptually, a\n * <code>Graph</code> consists of a set of <i>nodes</i> together with a\n * set of <i>arcs</i>.  Each arc connects two nodes in one direction.\n * Undirected graphs must include two arcs for each bidirectional\n * connection.\n */\n\ntypedef struct GraphCDT *Graph;\n\n/*\n * Type: Node\n * ----------\n * This type is the abstract type for a node in a graph.  Clients\n * can store their own data in a node by using the functions\n * <code>getBlockData</code> and <code>setBlockData</code> described\n * in <a href=\"cslib.html\"><code>cslib.h</code></a>.\n */\n\ntypedef struct NodeCDT *Node;\n\n/*\n * Type: Arc\n * ---------\n * This type is the abstract type for an arc in a graph.  Clients\n * can store their own data in an arc by using the functions\n * <code>getBlockData</code> and <code>setBlockData</code> described\n * in <a href=\"cslib.html\"><code>cslib.h</code></a>.\n */\n\ntypedef struct ArcCDT *Arc;\n\n/*\n * Function: newGraph\n * Usage: g = newGraph();\n * ----------------------\n * Returns a new graph with no nodes or arcs.\n */\n\nGraph newGraph(void);\n\n/*\n * Function: freeGraph\n * Usage: freeGraph(g);\n * --------------------\n * Frees the storage for the graph, along with its nodes and arcs.\n */\n\nvoid freeGraph(Graph g);\n\n/*\n * Function: addNode\n * Usage: node = addNode(g, name);\n * -------------------------------\n * Adds a node to the graph with the specified name.  If there is already\n * a node with that name, <code>addNode</code> generates an error.  The\n * function returns the <code>Node</code> value.\n */\n\nNode addNode(Graph g, string name);\n\n/*\n * Function: removeNode\n * Usage: removeNode(g, node);\n * ---------------------------\n * Removes and frees the specified node from the graph, along with any\n * arcs that enter or leave that node.\n */\n\nvoid removeNode(Graph g, Node node);\n\n/*\n * Function: getNode\n * Usage: node = getNode(g, name);\n * -------------------------------\n * Returns the node in the graph that has the specified name.  If there is\n * no such node, <code>getNode</code> returns <code>NULL</code>.\n */\n\nNode getNode(Graph g, string name);\n\n/*\n * Function: addArc\n * Usage: arc = addArc(g, n1, n2);\n * -------------------------------\n * Adds a new arc to the graph connecting nodes <code>n1</code> and\n * <code>n2</code>.  The function returns the <code>Arc</code> value.\n */\n\nArc addArc(Graph g, Node n1, Node n2);\n\n/*\n * Function: removeArc\n * Usage: removeArc(g, arc);\n * -------------------------\n * Removes and frees the specified arc.\n */\n\nvoid removeArc(Graph g, Arc arc);\n\n/*\n * Function: isConnected\n * Usage: if (isConnected(n1, n2)) . . .\n * -------------------------------------\n * Returns <code>true</code> if there is an arc from <code>n1</code>\n * to <code>n2</code>.\n */\n\nbool isConnected(Node n1, Node n2);\n\n/*\n * Function: getNodeSet\n * Usage: nodeSet = getNodeSet(g);\n * -------------------------------\n * Returns a set consisting of all nodes in the graph.  This function\n * is typically used in conjunction with the <code>foreach</code>\n * macro to initialize an iterator.  For example, the following\n * idiom iterates over the nodes in the specified graph:\n *\n *<pre>\n *    foreach (node in getNodeSet(g)) . . .\n *</pre>\n */\n\nSet getNodeSet(Graph g);\n\n/*\n * Function: getArcSet\n * Usage: arcSet = getArcSet(g);\n *        arcSet = getArcSet(node);\n * --------------------------------\n * Returns a set consisting of all arcs, either in the graph or starting\n * at the specified node.  This function is typically used in conjunction\n * with the <code>foreach</code> macro to initialize an iterator.  For\n * example, the following idiom iterates over the arcs in the specified\n * graph:\n *\n *<pre>\n *    foreach (arc in getArcSet(g)) . . .\n *</pre>\n */\n\nSet getArcSet(void *arg);\n\n/*\n * Function: getNeighbors\n * Usage: nodeSet = getNeighbors(node);\n * ------------------------------------\n * Returns a set consisting of the nodes to which a given node is\n * connected.  This function is typically used in conjunction with\n * the <code>foreach</code> macro to initialize an iterator.  For\n * example, the following idiom iterates over the nodes to which\n * the node <code>start</code> is connected:\n *\n *<pre>\n *    foreach (node in getNeighbors(start)) . . .\n *</pre>\n */\n\nSet getNeighbors(Node node);\n\n/*\n * Function: getName\n * Usage: str = getName(node);\n * ---------------------------\n * Returns the name of the node.\n */\n\nstring getName(Node node);\n\n/*\n * Function: startOfArc\n * Usage: node = startOfArc(arc);\n * ------------------------------\n * Returns the node at the beginning of the specified arc.\n */\n\nNode startOfArc(Arc arc);\n\n/*\n * Function: endOfArc\n * Usage: node = endOfArc(arc);\n * ----------------------------\n * Returns the node at the end of the specified arc.\n */\n\nNode endOfArc(Arc arc);\n\n/*\n * Function: getCost\n * Usage: cost = getCost(arc);\n * ---------------------------\n * Returns the \"cost\" associated with traversing an arc.  This cost need not\n * be economic and will often refer to some other metric, such as distance.\n */\n\ndouble getCost(Arc arc);\n\n/*\n * Function: setCost\n * Usage: setCost(arc, cost);\n * --------------------------\n * Sets the cost of traversing the arc.\n */\n\nvoid setCost(Arc arc, double cost);\n\n/*\n * Function: setNodeOrdering\n * Usage: setNodeOrdering(graph, cmpFn);\n * -------------------------------------\n * Sets the comparison function used to order the nodes in a graph when\n * they are enumerated.  By default, nodes are sorted in alphabetical\n * order by name.\n */\n\nvoid setNodeOrdering(Graph graph, CompareFn cmpFn);\n\n/*\n * Function: setArcOrdering\n * Usage: setArcOrdering(graph, cmpFn);\n * ------------------------------------\n * Sets the comparison function used to order the arcs in a graph when\n * they are enumerated.  By default, arcs are sorted in alphabetical\n * order by the name of the start node followed by the name of the end node.\n */\n\nvoid setArcOrdering(Graph graph, CompareFn cmpFn);\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/gtimer.c",
    "content": "/*\n * File: gtimer.c\n * --------------\n * This file implements the gtimer.h interface.  The functions that\n * implement receiving timer from the environment are implemented in\n * the platform package.\n */\n\n#include <stdio.h>\n#include \"cslib.h\"\n#include \"gtimer.h\"\n#include \"platform.h\"\n\n/*\n * Type GTimerCDT\n * --------------\n * This type is the concrete type for the timer.\n */\n\nstruct GTimerCDT {\n   double duration;\n};\n\nGTimer newGTimer(double milliseconds) {\n   GTimer timer;\n\n   timer = newBlock(GTimer);\n   timer->duration = milliseconds;\n   createTimerOp(timer, milliseconds);\n   return timer;\n}\n\nvoid freeGTimer(GTimer timer) {\n   deleteTimerOp(timer);\n}\n\nvoid startTimer(GTimer timer) {\n   startTimerOp(timer);\n}\n\nvoid stopTimer(GTimer timer) {\n   stopTimerOp(timer);\n}\n\n/**********************************************************************/\n/* Unit test for the gtimer module                                    */\n/**********************************************************************/\n\n#ifndef _NOTEST_\n\n#include \"unittest.h\"\n\n/* Unit test */\n\nvoid testGTimerModule(void) {\n   // Fill in\n}\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/gtimer.h",
    "content": "/*\n * File: gtimer.h\n * --------------\n * This interface exports a general interval timer.\n */\n\n#ifndef _gtimer_h\n#define _gtimer_h\n\n#include \"cslib.h\"\n\n/*\n * Type: GTimer\n * ------------\n * This type implements a simple interval timer that generates a timer\n * event with a specified frequency.\n */\n\ntypedef struct GTimerCDT *GTimer;\n\n/*\n * Function: newGTimer\n * Usage: timer = newGTimer(milliseconds);\n * ---------------------------------------\n * Creates a timer that generates a timer event each time the specified\n * number of milliseconds has elapsed.  No events are generated until\n * the client calls <code>startTimer</code>.\n */\n\nGTimer newGTimer(double milliseconds);\n\n/*\n * Function: freeGTimer\n * Usage: freeGTimer(timer);\n * -------------------------\n * Frees the resources associated with the timer.\n */\n\nvoid freeGTimer(GTimer timer);\n\n/*\n * Function: startTimer\n * Usage: startTimer(timer);\n * -------------------------\n * Starts the timer.  A timer continues to generate timer events until it\n * is stopped; to achieve the effect of a one-shot timer, the simplest\n * approach is to call the <code>stop</code> function inside the event\n * handler.\n */\n\nvoid startTimer(GTimer timer);\n\n/*\n * Function: stopTimer\n * Usage: stopTimer(timer);\n * ------------------------\n * Stops the timer so that it stops generating events.\n */\n\nvoid stopTimer(GTimer timer);\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/gtransform.c",
    "content": "/*\n * File: gtransform.c\n * ------------------\n * This file implements the gtransform.h interface.\n */\n\n#include <math.h>\n#include <simpio.h>\n#include \"generic.h\"\n#include \"gmath.h\"\n#include \"gtransform.h\"\n#include \"gtypes.h\"\n#include \"strbuf.h\"\n#include \"strlib.h\"\n#include \"unittest.h\"\n\n/*\n * Constant: EPSILON\n * -----------------\n * Values whose magnitude is less than EPSILON are displayed as 0.\n */\n\n#define EPSILON 1.0E-10\n\n/*\n * Type: GTransformCDT\n * -------------------\n * This type defines the concrete structure for the GTransform type.\n * Mathematically, the fields of this structure represent the following\n * 3x3 matrix:\n *\n *      a   b   0\n *      c   d   0\n *      tx  ty  1\n */\n\nstruct GTransformCDT {\n   double a, b;\n   double c, d;\n   double tx, ty;\n};\n\n/* Exported entries */\n\nGTransform newGTransform(void) {\n   GTransform matrix;\n\n   matrix = newBlock(GTransform);\n   matrix->a = 1;\n   matrix->b = 0;\n   matrix->c = 0;\n   matrix->d = 1;\n   matrix->tx = 0;\n   matrix->ty = 0;\n   return matrix;\n}\n\nvoid freeGTransform(GTransform matrix) {\n   freeBlock(matrix);\n}\n\nvoid appendGTransform(GTransform m1, GTransform m2) {\n   double a, b, c, d, tx, ty;\n\n   a = m1->a * m2->a + m1->c * m2->b;\n   b = m1->b * m2->a + m1->d * m2->b;\n   c = m1->a * m2->c + m1->c * m2->d;\n   d = m1->b * m2->c + m1->d * m2->d;\n   tx = m1->a * m2->tx + m1->c * m2->ty + m1->tx;\n   ty = m1->b * m2->tx + m1->d * m2->ty + m1->ty;\n   m1->a = a;\n   m1->b = b;\n   m1->c = c;\n   m1->d = d;\n   m1->tx = tx;\n   m1->ty = ty;\n}\n\nvoid rotateGTransform(GTransform matrix, double theta) {\n   struct GTransformCDT m2;\n   m2.a = cosDegrees(theta);\n   m2.b = -sinDegrees(theta);\n   m2.c = -m2.b;\n   m2.d = m2.a;\n   m2.tx = 0;\n   m2.ty = 0;\n   appendGTransform(matrix, &m2);\n}\n\nvoid scaleGTransform(GTransform matrix, double sx, double sy) {\n   struct GTransformCDT m2;\n   m2.a = sx;\n   m2.b = 0;\n   m2.c = 0;\n   m2.d = sy;\n   m2.tx = 0;\n   m2.ty = 0;\n   appendGTransform(matrix, &m2);\n}\n\nvoid translateGTransform(GTransform matrix, double dx, double dy) {\n   struct GTransformCDT m2;\n   m2.a = 1;\n   m2.b = 0;\n   m2.c = 0;\n   m2.d = 1;\n   m2.tx = dx;\n   m2.ty = dy;\n   appendGTransform(matrix, &m2);\n}\n\nGPoint applyGTransform(GTransform matrix, GPoint p1) {\n   return createGPoint(matrix->a * p1.x + matrix->c * p1.y + matrix->tx,\n                       matrix->b * p1.x + matrix->d * p1.y + matrix->ty);\n}\n\nGTransform invertGTransform(GTransform m1) {\n   GTransform m2;\n   double det;\n\n   det = m1->a * m1->d - m1->c * m1->b;\n   if (det == 0) error(\"invertGTransform: Uninvertible matrix\");\n   m2 = newBlock(GTransform);\n   m2->a = m1->d / det;\n   m2->b = -m1->b / det;\n   m2->c = -m1->c / det;\n   m2->d = m1->a / det;\n   m2->tx = -(m1->d * m1->tx - m1->c * m1->ty) / det;\n   m2->ty = (m1->b * m1->tx - m1->a * m1->ty) / det;\n   return m2;\n}\n\nstring toStringGTransform(GTransform matrix) {\n   StringBuffer sb;\n   string result;\n\n   sb = newStringBuffer();\n   sbprintf(sb, \"{%g, %g, %g, %g, %g, %g}\",\n                fabs(matrix->a) < EPSILON ? 0 : matrix->a,\n                fabs(matrix->b) < EPSILON ? 0 : matrix->b,\n                fabs(matrix->c) < EPSILON ? 0 : matrix->c,\n                fabs(matrix->d) < EPSILON ? 0 : matrix->d,\n                fabs(matrix->tx) < EPSILON ? 0 : matrix->tx,\n                fabs(matrix->ty) < EPSILON ? 0 : matrix->ty);\n   result = copyString(getString(sb));\n   freeStringBuffer(sb);\n   return result;\n}\n\n/**********************************************************************/\n/* Unit test for the gtransform module                                */\n/**********************************************************************/\n\n#ifndef _NOTEST_\n\n/* Unit test */\n\nstatic void testTranslate(void);\nstatic void testRotate(void);\nstatic void testScale(void);\nstatic void testInverse(void);\n\nvoid testGTransformModule(void) {\n   testTranslate();\n   testRotate();\n   testScale();\n   testInverse();\n}\n\nvoid testTranslate(void) {\n   GTransform m;\n   GPoint p1, p2;\n\n   trace(m = newGTransform());\n   test(toString(m), \"{1, 0, 0, 1, 0, 0}\");\n   trace(translateGTransform(m, 300, 100));\n   test(toString(m), \"{1, 0, 0, 1, 300, 100}\");\n   p1 = createGPoint(75, 50);\n   p2 = applyGTransform(m, p1);\n   test(toString(p2), \"(375, 150)\");\n}\n\nvoid testRotate(void) {\n   GTransform m;\n\n   trace(m = newGTransform());\n   test(toString(m), \"{1, 0, 0, 1, 0, 0}\");\n   trace(rotate(m, 45));\n   test(toString(m), \"{0.707107, -0.707107, 0.707107, 0.707107, 0, 0}\");\n   trace(rotate(m, 45));\n   test(toString(m), \"{0, -1, 1, 0, 0, 0}\");\n   trace(rotate(m, 45));\n   test(toString(m), \"{-0.707107, -0.707107, 0.707107, -0.707107, 0, 0}\");\n   trace(rotate(m, 45));\n   test(toString(m), \"{-1, 0, 0, -1, 0, 0}\");\n   trace(rotate(m, 45));\n   test(toString(m), \"{-0.707107, 0.707107, -0.707107, -0.707107, 0, 0}\");\n   trace(rotate(m, 45));\n   test(toString(m), \"{0, 1, -1, 0, 0, 0}\");\n   trace(rotate(m, 45));\n   test(toString(m), \"{0.707107, 0.707107, -0.707107, 0.707107, 0, 0}\");\n   trace(rotate(m, 45));\n   test(toString(m), \"{1, 0, 0, 1, 0, 0}\");\n}\n\nvoid testScale(void) {\n   GTransform m;\n   GPoint p1, p2;\n\n   trace(m = newGTransform());\n   test(toString(m), \"{1, 0, 0, 1, 0, 0}\");\n   trace(scale(m, 2, 0.5));\n   test(toString(m), \"{2, 0, 0, 0.5, 0, 0}\");\n   p1 = createGPoint(75, 50);\n   p2 = applyGTransform(m, p1);\n   test(toString(p2), \"(150, 25)\");\n}\n\nvoid testInverse(void) {\n   GTransform m1, m2, m3;\n\n   trace(m1 = newGTransform());\n   trace(rotate(m1, 90));\n   test(toString(m1), \"{0, -1, 1, 0, 0, 0}\");\n   trace(m2 = invertGTransform(m1));\n   test(toString(m2), \"{0, 1, -1, 0, 0, 0}\");\n   trace(scale(m1, 2, 3));\n   trace(translateGTransform(m1, 50, -25));\n   test(toString(m1), \"{0, -2, 3, 0, -75, -100}\");\n   trace(m2 = invertGTransform(m1));\n   test(toString(m2), \"{0, 0.333333, -0.5, 0, -50, 25}\");\n   trace(appendGTransform(m2, m1));\n   test(toString(m2), \"{1, 0, 0, 1, 0, 0}\");\n}\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/gtransform.h",
    "content": "/*\n * File: gtransform.h\n * ------------------\n * This interface defines the GTransform type, which implements the\n * operations to support affine transformations.\n */\n\n#ifndef _gtransform_h\n#define _gtransform_h\n\n#include \"generic.h\"\n#include \"gtypes.h\"\n\n/*\n * Type: GTransform\n * ----------------\n * This type represents an affine transformation.  An affine\n * transformation transforms coordinates in a way that preserves\n * any parallel lines.  In practice, affine transformations are\n * composed of rotation, scaling, and translation operations.\n */\n\ntypedef struct GTransformCDT *GTransform;\n\n/*\n * Function: newGTransform\n * Usage: matrix = newGTransform();\n * --------------------------------\n * Returns a new identity transformation.\n */\n\nGTransform newGTransform(void);\n\n/*\n * Function: freeGTransform\n * Usage: freeGTransform(matrix);\n * ------------------------------\n * Frees the storage for the transformation matrix.\n */\n\nvoid freeGTransform(GTransform matrix);\n\n/*\n * Function: appendGTransform\n * Usage: appendGTransform(m1, m2);\n * --------------------------------\n * Changes transform <code>m1</code> by appending transform <code>m2</code>\n * to <code>m1</code>.\n */\n\nvoid appendGTransform(GTransform m1, GTransform m2);\n\n/*\n * Function: rotateGTransform\n * Usage: rotateGTransform(matrix, theta);\n * ---------------------------------------\n * Adds a transformation that rotates <code>matrix</code> by\n * <code>theta</code> degrees counterclockwise.\n */\n\nvoid rotateGTransform(GTransform matrix, double theta);\n\n/*\n * Function: scaleGTransform\n * Usage: scaleGTransform(matrix, sx, sy);\n * ---------------------------------------\n * Adds a transformation that scales <code>matrix</code> by\n * <code>sx</code> and <code>sy</code> relative to the coordinate axes.\n */\n\nvoid scaleGTransform(GTransform matrix, double sx, double sy);\n\n/*\n * Function: translateGTransform\n * Usage: translateGTransform(matrix, dx, dy);\n * -------------------------------------------\n * Adds a transformation that translates <code>matrix</code> by\n * <code>dx</code> and <code>dy</code> relative to the coordinate axes.\n */\n\nvoid translateGTransform(GTransform matrix, double dx, double dy);\n\n/*\n * Function: applyGTransform\n * Usage: p2 = applyGTransform(matrix, p1);\n * ----------------------------------------\n * Applies the specified transformation to the point <code>p1</code>\n * and returns the transformed point.\n */\n\nGPoint applyGTransform(GTransform matrix, GPoint p1);\n\n/*\n * Function: invertGTransform\n * Usage: m2 = invertGTransform(m1);\n * ---------------------------------\n * Returns a new <code>GTransform</code> value that is the inverse of\n * the transformation matrix <code>m1</code>.\n */\n\nGTransform invertGTransform(GTransform m1);\n\n/*\n * Function: toString\n * Usage: str = toString(matrix);\n * ------------------------------\n * Returns a string representation of the transformation matrix\n *\n *<pre>\n *     a   b\n *     c   d\n *     tx  ty\n *<pre>\n *\n * The elements of the matrix appear as a single six-element array\n * in which the elements are enclosed in curly braces and separated\n * by commas.\n */\n\nstring toStringGTransform(GTransform matrix);\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/gtypes.c",
    "content": "/*\n * File: gtypes.c\n * --------------\n * This file implements the gtypes.h interface.\n */\n\n#include \"cslib.h\"\n#include \"generic.h\"\n#include \"gtypes.h\"\n\nGPoint createGPoint(double x, double y) {\n   GPoint pt;\n\n   pt.x = x;\n   pt.y = y;\n   return pt;\n}\n\ndouble getXGPoint(GPoint pt) {\n   return pt.x;\n}\n\ndouble getYGPoint(GPoint pt) {\n   return pt.y;\n}\n\nGDimension createGDimension(double width, double height) {\n   GDimension dim;\n\n   dim.width = width;\n   dim.height = height;\n   return dim;\n}\n\ndouble getWidthGDimension(GDimension dim) {\n   return dim.width;\n}\n\ndouble getHeightGDimension(GDimension dim) {\n   return dim.height;\n}\n\nGRectangle createGRectangle(double x, double y, double width, double height) {\n   GRectangle r;\n\n   r.x = x;\n   r.y = y;\n   r.width = width;\n   r.height = height;\n   return r;\n}\n\ndouble getXGRectangle(GRectangle r) {\n   return r.x;\n}\n\ndouble getYGRectangle(GRectangle r) {\n   return r.y;\n}\n\ndouble getWidthGRectangle(GRectangle r) {\n   return r.width;\n}\n\ndouble getHeightGRectangle(GRectangle r) {\n   return r.height;\n}\n\nbool isEmptyGRectangle(GRectangle r) {\n   return r.width <= 0 || r.height <= 0;\n}\n\nbool containsGRectangle(GRectangle r, GPoint pt) {\n   return pt.x >= r.x && pt.y >= r.y && pt.x < r.x + r.width\n                                     && pt.y < r.y + r.height;\n}\n\n/**********************************************************************/\n/* Unit test for the gtypes module                                    */\n/**********************************************************************/\n\n#ifndef _NOTEST_\n\n#include \"unittest.h\"\n\n/* Unit test */\n\nvoid testGTypesModule(void) {\n   GPoint origin, pt;\n   GDimension dim;\n   GRectangle r;\n\n   trace(origin = createGPoint(0, 0));\n   trace(pt = createGPoint(2, 3));\n   trace(dim = createGDimension(3, 1));\n   trace(r = createGRectangle(1, 2, 3, 4));\n   test(getX(origin), 0.0);\n   test(getY(origin), 0.0);\n   test(getX(pt), 2.0);\n   test(getY(pt), 3.0);\n   test(getWidth(dim), 3.0);\n   test(getHeight(dim), 1.0);\n   test(getX(r), 1.0);\n   test(getY(r), 2.0);\n   test(getWidth(r), 3.0);\n   test(getHeight(r), 4.0);\n   test(isEmpty(r), false);\n   test(contains(r, origin), false);\n   test(contains(r, pt), true);\n}\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/gtypes.h",
    "content": "/*\n * File: gtypes.h\n * --------------\n * This interface defines types for representing points, dimensions, and\n * rectangles.\n */\n\n#ifndef _gtypes_h\n#define _gtypes_h\n\n#include \"generic.h\"\n\n/*\n * Type: GPoint\n * ------------\n * This type contains real-valued x and y fields.  It is used to\n * represent a location on the graphics plane.\n */\n\ntypedef struct {\n   double x;\n   double y;\n} GPoint;\n\n/*\n * Type: GDimension\n * ----------------\n * This type contains real-valued width and height fields.  It is used\n * to indicate the size of a graphical object.\n */\n\ntypedef struct {\n   double width;\n   double height;\n} GDimension;\n\n/*\n * Type: GRectangle\n * ----------------\n * This type contains real-valued x, y, width, and height fields.  It is\n * used to represent the bounding box of a graphical object.\n */\n\ntypedef struct {\n   double x;\n   double y;\n   double width;\n   double height;\n} GRectangle;\n\n/*\n * Function: createGPoint\n * Usage: pt = createGPoint(x, y);\n * -------------------------------\n * Creates a <code>GPoint</code> structure with the specified <code>x</code>\n * and <code>y</code> coordinates.\n */\n\nGPoint createGPoint(double x, double y);\n\n/*\n * Function: getX\n * Usage: x = getX(pt);\n * --------------------\n * Returns the x component of the <code>GPoint</code>.\n */\n\ndouble getXGPoint(GPoint pt);\n\n/*\n * Function: getY\n * Usage: y = getY(pt);\n * --------------------\n * Returns the y component of the <code>GPoint</code>.\n */\n\ndouble getYGPoint(GPoint pt);\n\n/*\n * Function: createGDimension\n * Usage: dim = createGDimension(width, height);\n * ---------------------------------------------\n * Creates a <code>GDimension</code> value with the specified\n * <code>width</code> and <code>height</code> coordinates.\n */\n\nGDimension createGDimension(double width, double height);\n\n/*\n * Function: getWidth\n * Usage: width = getWidth(dim);\n * -----------------------------\n * Returns the width component of the <code>GDimension</code>.\n */\n\ndouble getWidthGDimension(GDimension dim);\n\n/*\n * Function: getHeight\n * Usage: width = getHeight(dim);\n * ------------------------------\n * Returns the width component of the <code>GDimension</code>.\n */\n\ndouble getHeightGDimension(GDimension dim);\n\n/*\n * Function: createGRectangle\n * Usage: r = createGRectangle(x, y, width, height);\n * -------------------------------------------------\n * Creates a <code>GRectangle</code> value with the specified components.\n */\n\nGRectangle createGRectangle(double x, double y, double width, double height);\n\n/*\n * Function: getX\n * Usage: double x = getX(r);\n * --------------------------\n * Returns the x component of the rectangle.\n */\n\ndouble getXGRectangle(GRectangle r);\n\n/*\n * Function: getY\n * Usage: double y = getY(r);\n * --------------------------\n * Returns the y component of the rectangle.\n */\n\ndouble getYGRectangle(GRectangle r);\n\n/*\n * Function: getWidth\n * Usage: width = getWidth(r);\n * ---------------------------\n * Returns the width component of the <code>GRectangle</code>.\n */\n\ndouble getWidthGRectangle(GRectangle r);\n\n/*\n * Function: getHeight\n * Usage: width = getHeight(r);\n * ----------------------------\n * Returns the width component of the <code>GRectangle</code>.\n */\n\ndouble getHeightGRectangle(GRectangle r);\n\n/*\n * Function: isEmpty\n * Usage: if (isEmpty(r)) . . .\n * ----------------------------\n * Returns <code>true</code> if the rectangle is empty.\n */\n\nbool isEmptyGRectangle(GRectangle r);\n\n/*\n * Function: contains\n * Usage: if (contains(r, pt)) . . .\n * ---------------------------------\n * Returns <code>true</code> if the rectangle contains the given point.\n */\n\nbool containsGRectangle(GRectangle r, GPoint pt);\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/gwindow.c",
    "content": "/*\n * File: gwindow.c\n * ---------------\n * This file implements the GWindow type, passing most calls directly\n * to the appropriate methods in the platform.h interface.\n */\n\n#include <stdio.h>\n#include \"gmath.h\"\n#include \"gobjects.h\"\n#include \"gtypes.h\"\n#include \"gwindow.h\"\n#include \"platform.h\"\n\nstruct GWindowCDT {\n   bool visible;\n   string color;\n   string title;\n   double width;\n   double height;\n   GObject top;\n};\n\nGWindow newGWindow(double width, double height) {\n   GWindow gw = newBlock(GWindow);\n   gw->top = newGCompound();\n   createGWindowOp(gw, width, height, gw->top);\n   gw->visible = true;\n   gw->color = \"BLACK\";\n   gw->title = \"Untitled\";\n   gw->width = width;\n   gw->height = height;\n   return gw;\n}\n\nvoid closeGWindow(GWindow gw) {\n   closeGWindowOp(gw);\n}\n\nvoid requestFocus(GWindow gw) {\n   requestFocusOp(gw);\n}\n\nvoid clearGWindow(GWindow gw) {\n   clearOp(gw);\n}\n\nvoid setVisibleGWindow(GWindow gw, bool flag) {\n   gw->visible = flag;\n   setVisibleGWindowOp(gw, flag);\n}\n\nbool isVisibleGWindow(GWindow gw) {\n   return gw->visible;\n}\n\nvoid drawLine(GWindow gw, double x0, double y0, double x1, double y1) {\n   GObject gobj = newGLine(x0, y0, x1, y1);\n   draw(gw, gobj);\n   freeGObject(gobj);\n}\n\nGPoint drawPolarLine(GWindow gw, double x, double y, double r, double theta) {\n   double x1, y1;\n\n   x1 = x + r * cosDegrees(theta);\n   y1 = y - r * sinDegrees(theta);\n   drawLine(gw, x, y, x1, y1);\n   return createGPoint(x1, y1);\n}\n\nvoid drawOval(GWindow gw, double x, double y, double width, double height) {\n   GObject gobj;\n\n   gobj = newGOval(x, y, width, height);\n   setColor(gobj, gw->color);\n   draw(gw, gobj);\n   freeGObject(gobj);\n}\n\nvoid fillOval(GWindow gw, double x, double y, double width, double height) {\n   GObject gobj;\n\n   gobj = newGOval(x, y, width, height);\n   setFilled(gobj, true);\n   setColor(gobj, gw->color);\n   draw(gw, gobj);\n   freeGObject(gobj);\n}\n\nvoid drawRect(GWindow gw, double x, double y, double width, double height) {\n   GObject gobj;\n\n   gobj = newGRect(x, y, width, height);\n   setColor(gobj, gw->color);\n   draw(gw, gobj);\n   freeGObject(gobj);\n}\n\nvoid fillRect(GWindow gw, double x, double y, double width, double height) {\n   GObject gobj;\n\n   gobj = newGRect(x, y, width, height);\n   setFilled(gobj, true);\n   setColor(gobj, gw->color);\n   draw(gw, gobj);\n   freeGObject(gobj);\n}\n\nvoid setColorGWindow(GWindow gw, string color) {\n   gw->color = color;\n}\n\nstring getColorGWindow(GWindow gw) {\n   return gw->color;\n}\n\ndouble getWidthGWindow(GWindow gw) {\n   return gw->width; // Make interactive\n}\n\ndouble getHeightGWindow(GWindow gw) {\n   return gw->height; // Make interactive\n}\n\nvoid repaint(GWindow gw) {\n   repaintOp(gw);\n}\n\nvoid setWindowTitle(GWindow gw, string title) {\n   gw->title = title;\n   setWindowTitleOp(gw, title);\n}\n\nstring getWindowTitle(GWindow gw) {\n   return gw->title;\n}\n\nvoid draw(GWindow gw, GObject gobj) {\n   drawOp(gw, gobj);\n}\n\nvoid drawAt(GWindow gw, GObject gobj, double x, double y) {\n   setLocation(gobj, x, y);\n   drawOp(gw, gobj);\n}\n\nvoid addGWindow(GWindow gw, GObject gobj) {\n   addGCompound(gw->top, gobj);\n}\n\nvoid addAt(GWindow gw, GObject gobj, double x, double y) {\n   setLocation(gobj, x, y);\n   addGCompound(gw->top, gobj);\n}\n\nvoid addToRegion(GWindow gw, GObject gobj, string region) {\n   addToRegionOp(gw, gobj, region);\n}\n\nvoid removeGWindow(GWindow gw, GObject gobj) {\n   removeGCompound(gw->top, gobj);\n}\n\nGObject getGObjectAt(GWindow gw, double x, double y) {\n   return getGObjectCompound(gw->top, x, y);\n}\n\nvoid setRegionAlignment(GWindow gw, string region, string align) {\n   setRegionAlignmentOp(gw, region, align);\n}\n\nvoid pause(double milliseconds) {\n   pauseOp(milliseconds);\n}\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/gwindow.h",
    "content": "/*\n * File: gwindow.h\n * ---------------\n * This interface defines an abstract type representing a graphics window.\n */\n\n#ifndef _gwindow_h\n#define _gwindow_h\n\n#include \"cslib.h\"\n#include \"gtypes.h\"\n\n#ifndef _gobjects_h\n\ntypedef void *GObject;\n\n/*\n * Type: GWindow\n * -------------\n * This type represents a graphics window that supports simple graphics.\n * Each <code>GWindow</code> consists of two layers.  The background layer\n * provides a surface for drawing static pictures that involve no animation.\n * Graphical objects drawn in the background layer are persistent and do\n * not require the client to update the contents of the window.  The\n * foreground layer contains graphical objects that are redrawn as necessary.\n *\n * <p>The <code>GWindow</code> type includes several functions that draw\n * lines, rectangles, and ovals on the background layer without making\n * use of the facilities of the <code>gobjects.h</code> interface.  For\n * example, the following program draws a diamond, rectangle, and oval\n * at the center of the window.\n *\n *<pre>\n *    main() {\n *       double width, height;\n *       GWindow gw;\n *\n *       gw = newGWindow(500, 300);\n *       width = getWidth(gw);\n *       height = getHeight(gw);\n *       drawLine(gw, 0, height / 2, width / 2, 0);\n *       drawLine(gw, width / 2, 0, width, height / 2);\n *       drawLine(gw, width, height / 2, width / 2, height);\n *       drawLine(gw, width / 2, height, 0, height / 2);\n *       setColor(gw, \"BLUE\");\n *       fillRect(gw, width / 4, height / 4, width / 2, height / 2);\n *       setColor(gw, \"GRAY\");\n *       fillOval(gw, width / 4, height / 4, width / 2, height / 2);\n *    }\n *</pre>\n */\n\ntypedef struct GWindowCDT *GWindow;\n\n#endif\n\n/*\n * Function: newGWindow\n * Usage: gw = newGWindow(width, height);\n * --------------------------------------\n * Creates and displays a graphics window with the specified dimensions.\n */\n\nGWindow newGWindow(double width, double height);\n\n/*\n * Function: closeGWindow\n * Usage: closeGWindow(gw);\n * ------------------------\n * Deletes the window from the screen.\n */\n\nvoid closeGWindow(GWindow gw);\n\n/*\n * Function: requestFocus\n * Usage: requestFocus(gw);\n * ------------------------\n * Asks the system to assign the keyboard focus to the window, which\n * brings it to the top and ensures that key events are delivered to\n * the window.  Clicking in the window automatically requests the focus.\n */\n\nvoid requestFocus(GWindow gw);\n\n/*\n * Function: clear\n * Usage: clear(gw);\n * -----------------\n * Clears the contents of the window.\n */\n\nvoid clearGWindow(GWindow gw);\n\n/*\n * Function: setVisible\n * Usage: setVisible(gw, flag);\n * ----------------------------\n * Determines whether the window is visible on the screen.\n */\n\nvoid setVisibleGWindow(GWindow gw, bool flag);\n\n/*\n * Function: isVisible\n * Usage: if (isVisible(gw)) . . .\n * -------------------------------\n * Tests whether the window is visible.\n */\n\nbool isVisibleGWindow(GWindow gw);\n\n/*\n * Function: drawLine\n * Usage: drawLine(gw, x0, y0, x1, y1);\n * ------------------------------------\n * Draws a line connecting the specified points.\n */\n\nvoid drawLine(GWindow gw, double x0, double y0, double x1, double y1);\n\n/*\n * Function: drawPolarLine\n * Usage: pt = drawPolarLine(gw, x, y, r, theta);\n * ----------------------------------------------\n * Draws a line of length <code>r</code> in the direction <code>theta</code>\n * from the initial point.  The angle <code>theta</code> is measured in\n * degrees counterclockwise from the +<i>x</i> axis.  The method returns\n * the end point of the line.\n */\n\nGPoint drawPolarLine(GWindow gw, double x, double y, double r, double theta);\n\n/*\n * Function: drawOval\n * Usage: drawOval(gw, x, y, width, height);\n * -----------------------------------------\n * Draws the frame of a oval with the specified bounds.\n */\n\nvoid drawOval(GWindow gw, double x, double y, double width, double height);\n\n/*\n * Function: fillOval\n * Usage: fillOval(gw, x, y, width, height);\n * -----------------------------------------\n * Fills the frame of a oval with the specified bounds.\n */\n\nvoid fillOval(GWindow gw, double x, double y, double width, double height);\n\n/*\n * Function: drawRect\n * Usage: drawRect(gw, x, y, width, height);\n * -----------------------------------------\n * Draws the frame of a rectangle with the specified bounds.\n */\n\nvoid drawRect(GWindow gw, double x, double y, double width, double height);\n\n/*\n * Function: fillRect\n * Usage: fillRect(gw, x, y, width, height);\n * -----------------------------------------\n * Fills the frame of a rectangle with the specified bounds.\n */\n\nvoid fillRect(GWindow gw, double x, double y, double width, double height);\n\n/*\n * Function: setColor\n * Usage: setColor(gw, color);\n * ---------------------------\n * Sets the color used for drawing.  The <code>color</code> parameter is\n * usually one of the predefined color names from Java: <code>BLACK</code>,\n * <code>BLUE</code>, <code>CYAN</code>, <code>DARK_GRAY</code>,\n * <code>GRAY</code>, <code>GREEN</code>, <code>LIGHT_GRAY</code>,\n * <code>MAGENTA</code>, <code>ORANGE</code>, <code>PINK</code>,\n * <code>RED</code>, <code>WHITE</code>, or <code>YELLOW</code>.\n * The case of the individual letters in the color name is ignored,\n * as are spaces and underscores, so that the Java color\n * <code>DARK_GRAY</code> could be written as <code>\"Dark&nbsp;Gray\"</code>.\n */\n\nvoid setColorGWindow(GWindow gw, string color);\n\n/*\n * Function: getColor\n * Usage: color = getColor(gw);\n * ----------------------------\n * Returns the current color as a string in the form <code>\"#rrggbb\"</code>.\n * In this string, the values <code>rr</code>, <code>gg</code>,\n * and <code>bb</code> are two-digit hexadecimal values representing\n * the red, green, and blue components of the color, respectively.\n */\n\nstring getColorGWindow(GWindow gw);\n\n/*\n * Function: getWidth\n * Usage: width = getWidth(gw);\n * ----------------------------\n * Returns the width of the graphics window in pixels.\n */\n\ndouble getWidthGWindow(GWindow gw);\n\n/*\n * Function: getHeight\n * Usage: height = getHeight(gw);\n * ------------------------------\n * Returns the height of the graphics window in pixels.\n */\n\ndouble getHeightGWindow(GWindow gw);\n\n/*\n * Function: repaint\n * Usage: repaint(gw);\n * -------------------\n * Schedule a repaint on the graphics window.\n */\n\nvoid repaint(GWindow gw);\n\n/*\n * Function: setWindowTitle\n * Usage: setWindowTitle(gw, title);\n * ---------------------------------\n * Sets the title of the graphics window.\n */\n\nvoid setWindowTitle(GWindow gw, string title);\n\n/*\n * Function: getWindowTitle\n * Usage: title = getWindowTitle(gw);\n * ----------------------------------\n * Returns the title of the graphics window.\n */\n\nstring getWindowTitle(GWindow gw);\n\n/*\n * Function: draw\n * Usage: draw(gw, gobj);\n * ----------------------\n * Draws the <code>GObject</code> on the background layer.\n */\n\nvoid draw(GWindow gw, GObject gobj);\n\n/*\n * Function: drawAt\n * Usage: drawAt(gw, gobj, x, y);\n * ------------------------------\n * Moves the <code>GObject</code> to (<code>x</code>, <code>y</code>)\n * and then draws it on the window.\n */\n\nvoid drawAt(GWindow gw, GObject gobj, double x, double y);\n\n/*\n * Function: add\n * Usage: add(gw, gobj);\n * ---------------------\n * Adds the <code>GObject</code> to the foreground layer of the window.\n * Adding a <code>GObject</code> to a <code>GWindow</code> transfers\n * control of the memory for that object from the client to the graphics\n * package.  Freeing a <code>GWindow</code> automatically frees\n * any <nobr><code>GObject</code><font size=-1>s</font></nobr> it contains.\n */\n\nvoid addGWindow(GWindow gw, GObject gobj);\n\n/*\n * Function: addAt\n * Usage: addAt(gw, gobj, x, y);\n * -----------------------------\n * Adds the <code>GObject</code> to the foreground layer of the window\n * after moving it to the point (<code>x</code>, <code>y</code>).\n */\n\nvoid addAt(GWindow gw, GObject gobj, double x, double y);\n\n/*\n * Function: addToRegion\n * Usage: addToRegion(gw, gobj, region);\n * -------------------------------------\n * Adds the <code>GObject</code> (which must be an interactor or a label)\n * to the control strip specified by <code>region</code>.\n * The <code>region</code> parameter must be one of the strings\n * <code>\"NORTH\"</code>, <code>\"EAST\"</code>, <code>\"SOUTH\"</code>,\n * or <code>\"WEST\"</code>.\n */\n\nvoid addToRegion(GWindow gw, GObject gobj, string region);\n\n/*\n * Function: remove\n * Usage: remove(gw, gobj);\n * ------------------------\n * Removes the object from its container or region.\n */\n\nvoid removeGWindow(GWindow gw, GObject gobj);\n\n/*\n * Function: getGObjectAt\n * Usage: gobj = getGObjectAt(gw, x, y);\n * -------------------------------------\n * Returns a pointer to the topmost <code>GObject</code> containing the\n * point (<code>x</code>, <code>y</code>), or <code>NULL</code> if no such\n * object exists.\n */\n\nGObject getGObjectAt(GWindow gw, double x, double y);\n\n/*\n * Function: setRegionAlignment\n * Usage: setRegionAlignment(gw, region, align);\n * ---------------------------------------------\n * Sets the alignment of the specified side region as specified by the\n * string <code>align</code>.  The <code>region</code> parameter must be\n * one of the strings <code>\"NORTH\"</code>, <code>\"EAST\"</code>,\n * <code>\"SOUTH\"</code>, or <code>\"WEST\"</code> and the <code>align</code>\n * parameter must be <code>\"LEFT\"</code>, <code>\"RIGHT\"</code>, or\n * <code>\"CENTER\"</code>.  By default, side panels use\n * <code>CENTER</code> alignment.\n */\n\nvoid setRegionAlignment(GWindow gw, string region, string align);\n\n/*\n * Function: pause\n * Usage: pause(milliseconds);\n * ---------------------------\n * Pauses for the indicated number of milliseconds.  This function is\n * useful for animation where the motion would otherwise be too fast.\n */\n\nvoid pause(double milliseconds);\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/hashmap.c",
    "content": "/*\n * File: hashmap.c\n * Last modified on Wed Dec 12 16:32:22 2012 by eroberts\n * -----------------------------------------------------\n * This file implements the <code>HashMap</code> class.\n */\n\n#include <stdio.h>\n#include \"cmpfn.h\"\n#include \"cslib.h\"\n#include \"exception.h\"\n#include \"foreach.h\"\n#include \"generic.h\"\n#include \"hashmap.h\"\n#include \"iterator.h\"\n#include \"itertype.h\"\n#include \"strlib.h\"\n#include \"unittest.h\"\n\n/* Constants */\n\n#define INITIAL_BUCKET_COUNT 101\n#define HASH_SEED 5381\n#define HASH_MULTIPLIER 33\n#define HASH_MASK ((unsigned) -1 >> 1)\n\n/*\n * Type: Cell\n * ----------\n * This type defines a linked list cell for the map.\n */\n\ntypedef struct Cell {\n   string key;\n   void *value;\n   struct Cell *link;\n} Cell;\n\n/*\n * Type: HashMapCDT\n * ----------------\n * This type defines the underlying concrete representation for a\n * HashMap.  These details are not relevant to and therefore\n * not exported to the client.  In this implementation, the\n * underlying structure is a hash table organized as an array of\n * \"buckets,\" in which each bucket is a linked list of elements\n * that share the same hash code.\n */\n\nstruct HashMapCDT {\n   IteratorHeader header;\n   Cell **buckets;\n   int nBuckets;\n   int count;\n};\n\n/* Private function prototypes */\n\nstatic int hashCode(string str);\nstatic void rehash(HashMap map, int nBuckets);\nstatic void freeBucketChain(Cell *cp);\nstatic Cell *findCell(Cell *cp, string s);\nstatic Iterator newMapIterator(void *collection);\nstatic void addKeyToIterator(string key, void *value, void *data);\n\n/* Public entries */\n\nHashMap newHashMap(void) {\n   HashMap map;\n   int i;\n\n   map = newBlock(HashMap);\n   enableIteration(map, newMapIterator);\n   map->count = 0;\n   rehash(map, INITIAL_BUCKET_COUNT);\n   return map;\n}\n\nvoid freeHashMap(HashMap map) {\n   clearHashMap(map);\n   freeBlock(map);\n}\n\nint sizeHashMap(HashMap map) {\n   return map->count;\n}\n\nbool isEmptyHashMap(HashMap map) {\n   return map->count == 0;\n}\n\nvoid clearHashMap(HashMap map) {\n   int i;\n\n   for (i = 0; i < map->nBuckets; i++) {\n      freeBucketChain(map->buckets[i]);\n      map->buckets[i] = NULL;\n   }\n   map->count = 0;\n}\n\nHashMap cloneHashMap(HashMap map) {\n   HashMap newmap;\n   Cell *cp;\n   int i;\n\n   newmap = newHashMap();\n   for (i = 0; i < map->nBuckets; i++) {\n      for (cp = map->buckets[i]; cp != NULL; cp = cp->link) {\n         putHashMap(newmap, cp->key, cp->value);\n      }\n   }\n   return newmap;\n}\n\nvoid putHashMap(HashMap map, string key, void *value) {\n   int bucket;\n   Cell *cp;\n\n   bucket = hashCode(key) % map->nBuckets;\n   cp = findCell(map->buckets[bucket], key);\n   if (cp == NULL) {\n      cp = newBlock(Cell *);\n      cp->key = copyString(key);\n      cp->link = map->buckets[bucket];\n      map->buckets[bucket] = cp;\n      map->count++;\n   }\n   cp->value = value;\n}\n\nvoid *getHashMap(HashMap map, string key) {\n   int bucket;\n   Cell *cp;\n\n   bucket = hashCode(key) % map->nBuckets;\n   cp = findCell(map->buckets[bucket], key);\n   if (cp == NULL) return NULL;\n   return cp->value;\n}\n\nvoid removeHashMap(HashMap map, string key) {\n   int bucket;\n   Cell **cpp, *cp;\n\n   bucket = hashCode(key) % map->nBuckets;\n   cpp = &map->buckets[bucket];\n   while (*cpp != NULL && !stringEqual((*cpp)->key, key)) {\n      cpp = &(*cpp)->link;\n   }\n   if (*cpp != NULL) {\n      cp = *cpp;\n      *cpp = cp->link;\n      freeBlock(cp->key);\n      freeBlock(cp);\n      map->count--;\n   }\n}\n\nbool containsKeyHashMap(HashMap map, string key) {\n   int bucket;\n\n   bucket = hashCode(key) % map->nBuckets;\n   return findCell(map->buckets[bucket], key) != NULL;\n}\n\nvoid mapHashMap(HashMap map, proc fn, void *data) {\n   int i;\n   Cell *cp;\n\n   for (i = 0; i < map->nBuckets; i++) {\n      for (cp = map->buckets[i]; cp != NULL; cp = cp->link) {\n         if (cp->value != NULL) fn(cp->key, cp->value, data);\n      }\n   }\n}\n\n/* Private functions */\n\nstatic int hashCode(string str) {\n   unsigned hash;\n   int i, n;\n\n   hash = HASH_SEED;\n   n = stringLength(str);\n   for (i = 0; i < n; i++) {\n      hash = HASH_MULTIPLIER * hash + str[i];\n   }\n   return (int) (hash & HASH_MASK);\n}\n\nstatic void rehash(HashMap map, int nBuckets) {\n   Cell **oldBuckets, *cp, *np;\n   int oldNBuckets, bucket, i;\n\n   if (map->count != 0) {\n      oldBuckets = map->buckets;\n      oldNBuckets = map->nBuckets;\n   }\n   map->buckets = newArray(nBuckets, Cell *);\n   map->nBuckets = nBuckets;\n   for (i = 0; i < nBuckets; i++) {\n      map->buckets[i] = NULL;\n   }\n   if (map->count != 0) {\n      for (i = 0; i < oldNBuckets; i++) {\n         cp = oldBuckets[i];\n         while (cp != NULL) {\n            np = cp->link;\n            bucket = hashCode(cp->key) % nBuckets;\n            cp->link = map->buckets[bucket];\n            map->buckets[bucket] = cp;\n            cp = np;\n         }\n      }\n   }\n}\n\n/*\n * Implementation notes: freeBucketChain\n * -------------------------------------\n * This function takes a chain pointer and frees all the cells\n * in that chain.  Because the package makes copies of the keys,\n * this function must free the string storage as well.\n */\n\nstatic void freeBucketChain(Cell *cp) {\n   Cell *next;\n\n   while (cp != NULL) {\n      next = cp->link;\n      freeBlock(cp->key);\n      freeBlock(cp);\n      cp = next;\n   }\n}\n\nstatic Cell *findCell(Cell *cp, string key) {\n   while (cp != NULL && !stringEqual(cp->key, key)) {\n      cp = cp->link;\n   }\n   return cp;\n}\n\n/*\n * Implementation notes: newMapIterator, addKeyToIterator\n * ------------------------------------------------------\n * These functions implement the polymorphic iterator facility\n * for maps.  For details on the general strategy, see\n * the comments in the <code>itertype.h</code> interface.\n */\n\nstatic Iterator newMapIterator(void *collection) {\n   HashMap map;\n   Iterator iterator;\n\n   map = (HashMap) collection;\n   iterator = newListIterator(sizeof (string), NULL);\n   mapHashMap(map, addKeyToIterator, iterator);\n   return iterator;\n}\n\nstatic void addKeyToIterator(string key, void *value, void *data) {\n   if (value != NULL) addToIteratorList((Iterator) data, &key);\n}\n\n/**********************************************************************/\n/* Unit test for the hashmap module                                   */\n/**********************************************************************/\n\n#ifndef _NOTEST_\n\n/* Private function prototypes */\n\nstatic void markElement(string name, int *bitSet);\n\n/* Unit test */\n\nvoid testHashMapModule(void) {\n   HashMap map, map2;\n   string key;\n   int bits;\n\n   trace(map = newHashMap());\n   test(size(map), 0);\n   test(isEmpty(map), true);\n   trace(put(map, \"H\", \"Hydrogen\"));\n   test(size(map), 1);\n   test(isEmpty(map), false);\n   trace(put(map, \"He\", \"Helium\"));\n   trace(put(map, \"Al\", \"Aluminum\"));\n   test(containsKey(map, \"H\"), true);\n   test(get(map, \"H\"), \"Hydrogen\");\n   test(get(map, \"He\"), \"Helium\");\n   test(get(map, \"Al\"), \"Aluminum\");\n   test(containsKey(map, \"Li\"), false);\n   test(get(map, \"Li\"), NULL);\n   trace(put(map, \"Al\", \"Aluminium\"));\n   test(get(map, \"Al\"), \"Aluminium\");\n   trace(remove(map, \"Al\"));\n   test(containsKey(map, \"Al\"), false);\n   test(get(map, \"He\"), \"Helium\");\n   trace(put(map, \"Li\", \"Lithium\"));\n   test(get(map, \"Li\"), \"Lithium\");\n   trace(put(map, \"Be\", \"Beryllium\"));\n   test(size(map), 4);\n   trace(bits = 0);\n   trace(foreach (key in map) markElement(key, &bits));\n   test(bits, 15);\n   trace(map2 = clone(map));\n   trace(bits = 0);\n   trace(foreach (key in map2) markElement(key, &bits));\n   test(bits, 15);\n}\n\n/* Private functions */\n\nstatic void markElement(string name, int *bits) {\n   if (stringEqual(name, \"H\")) {\n      *bits |= 1;\n   } else if (stringEqual(name, \"He\")) {\n      *bits |= 2;\n   } else if (stringEqual(name, \"Li\")) {\n      *bits |= 4;\n   } else if (stringEqual(name, \"Be\")) {\n      *bits |= 8;\n   } else {\n      *bits = -1;\n   }\n}\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/hashmap.h",
    "content": "/*\n * File: hashmap.h\n * ---------------\n * This interface defines a map abstraction that associates string\n * keys with values.  The implementation uses a hash table, which\n * offers constant-time performance but does not support iterating\n * through the keys in order.\n */\n\n#ifndef _hashmap_h\n#define _hashmap_h\n\n#include \"cslib.h\"\n#include \"generic.h\"\n#include \"iterator.h\"\n\n/*\n * Function: HashMap\n * -----------------\n * This type is the ADT used to represent a map from strings to values.\n */\n\ntypedef struct HashMapCDT *HashMap;\n\n/* Exported entries */\n\n/*\n * Function: newHashMap\n * Usage: map = newHashMap();\n * --------------------------\n * Allocates a new map with no entries.\n */\n\nHashMap newHashMap(void);\n\n/*\n * Function: freeHashMap\n * Usage: freeHashMap(map);\n * ------------------------\n * Frees the storage associated with the map.\n */\n\nvoid freeHashMap(HashMap map);\n\n/*\n * Function: size\n * Usage: n = size(map);\n * ---------------------\n * Returns the number of elements in the map.\n */\n\nint sizeHashMap(HashMap map);\n\n/*\n * Function: isEmpty\n * Usage: if (isEmpty(map)) . . .\n * ------------------------------\n * Returns <code>true</code> if the map has no entries.\n */\n\nbool isEmptyHashMap(HashMap map);\n\n/*\n * Function: clear\n * Usage: clear(map);\n * ------------------\n * Removes all entries from the map.\n */\n\nvoid clearHashMap(HashMap map);\n\n/*\n * Function: clone\n * Usage: newmap = clone(map);\n * ---------------------------\n * Creates a copy of the map.  The <code>clone</code> function copies\n * only the first level of the structure and does not copy the individual\n * elements.\n */\n\nHashMap cloneHashMap(HashMap map);\n\n/*\n * Function: put\n * Usage: put(map, key, value);\n * ----------------------------\n * Associates <code>key</code> with <code>value</code> in the map.\n * Each call to <code>put</code> supersedes any previous definition\n * for <code>key</code>.\n */\n\nvoid putHashMap(HashMap map, string key, void *value);\n\n/*\n * Function: get\n * Usage: void *value = get(map, key);\n * -----------------------------------\n * Returns the value associated with <code>key</code> in the map,\n * or <code>NULL</code>, if no such value exists.\n */\n\nvoid *getHashMap(HashMap map, string key);\n\n/*\n * Function: containsKey\n * Usage: if (containsKey(map, key)) . . .\n * ---------------------------------------\n * Checks to see if the map contains the specified key.\n */\n\nbool containsKeyHashMap(HashMap map, string key);\n\n/*\n * Function: remove\n * Usage: remove(map, key);\n * ------------------------\n * Removes the key and its value from the map.\n */\n\nvoid removeHashMap(HashMap map, string key);\n\n/*\n * Function: map\n * Usage: map(map, fn, data);\n * --------------------------\n * Iterates through the map and calls the function <code>fn</code> on\n * each entry.  The callback function takes the following arguments:\n *\n *<ul>\n *  <li>The key string\n *  <li>The associated value\n *  <li>The <code>data</code> pointer\n *</ul>\n *\n * The <code>data</code> pointer allows the client to pass state\n * information to the function <code>fn</code>, if necessary.  If no such\n * information is required, this argument should be <code>NULL</code>.\n */\n\nvoid mapHashMap(HashMap map, proc fn, void *data);\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/iterator.c",
    "content": "/*\n * File: iterator.c\n * Last modified on Wed Jul 20 23:22:08 2011 by eroberts\n * -----------------------------------------------------\n * This file implements a polymorphic version of the iterator\n * and the tools necessary to construct types that support\n * iteration.  This module implements both the iterator.h and\n * itertype.h interfaces.\n */\n\n#include <stdio.h>\n#include <string.h>\n#include \"cmpfn.h\"\n#include \"cslib.h\"\n#include \"iterator.h\"\n#include \"itertype.h\"\n\n/*\n * Constant: ITERATOR_PASSWORD\n * ---------------------------\n * This constant is stored in the header block of collection\n * types to catch the case when a client tries to call\n * newIterator on a value for which iteration is not defined.\n */\n\n#define ITERATOR_PASSWORD 2718281828UL\n\n/*\n * Type: Cell\n * ----------\n * This cell type can vary in size according as to what follows the\n * cell itself.  Iterators are implemented as linked lists chained\n * through the first word in the structure.  Because the size\n * of the actual data element can vary, the data field is not\n * represented as part of the structure.  Instead, each cell is\n * allocated dynamically with enough memory for both the link\n * field and the data value, however large it turns out to be.\n * The list is arranged like a queue, with a tail pointer to\n * its final element for efficiency.  The addToIteratorList\n * function first checks to see whether the element belongs at\n * the end.  By checking for this case explicitly, it is often\n * possible to avoid searching the list at all.\n */\n\ntypedef struct Cell {\n   struct Cell *link;\n   /* The actual data is allocated here */\n} Cell;\n\n/*\n * Type: IteratorCDT\n * -----------------\n * This type represents the concrete type for an iterator.\n */\n\nstruct IteratorCDT {\n   IteratorHeader header;\n   void *collection;\n   int elementSize;\n   StepIteratorFn stepFn;\n   CompareFn cmpFn;\n   Cell *head, *tail;\n   void *data;\n};\n\n/* Private functions prototypes */\n\nstatic bool stepListIterator(Iterator iterator, void *dst);\n\n/* Part 1 -- Implementation of iterator.h */\n\nIterator newIterator(void *collection) {\n   IteratorHeader *hp = (IteratorHeader *) collection;\n   Iterator iterator;\n\n   if (hp->password != ITERATOR_PASSWORD) {\n      error(\"Iteration is not defined for this type\");\n   }\n   if (hp->newFn == 0) return (Iterator) collection;\n   iterator = (Iterator) hp->newFn(collection);\n   iterator->collection = collection;\n   return iterator;\n}\n\nbool stepIterator(Iterator iterator, void *dst) {\n   return iterator->stepFn(iterator, dst);\n}\n\nvoid freeIterator(Iterator iterator) {\n   Cell *cp;\n\n   while ((cp = iterator->head) != NULL) {\n      iterator->head = cp->link;\n      freeBlock(cp);\n   }\n   freeBlock(iterator);\n}\n\n/* Part 2 -- Implementation of itertype.h */\n\nvoid enableIteration(void *collection, NewIteratorFn newFn) {\n   IteratorHeader *hp = (IteratorHeader *) collection;\n\n   hp->password = ITERATOR_PASSWORD;\n   hp->newFn = newFn;\n}\n\nIterator newStepIterator(int size, StepIteratorFn stepFn) {\n   Iterator iterator;\n\n   iterator = newBlock(Iterator);\n   enableIteration(iterator, 0);\n   iterator->elementSize = size;\n   iterator->stepFn = stepFn;\n   iterator->cmpFn = NULL;\n   iterator->head = iterator->tail = NULL;\n   iterator->data = NULL;\n   return iterator;\n}\n\nIterator newListIterator(int size, CompareFn cmpFn) {\n   Iterator iterator;\n\n   iterator = newBlock(Iterator);\n   enableIteration(iterator, 0);\n   iterator->elementSize = size;\n   iterator->stepFn = stepListIterator;\n   iterator->cmpFn = cmpFn;\n   iterator->head = iterator->tail = NULL;\n   iterator->data = NULL;\n   return iterator;\n}\n\n/*\n * Implementation notes: addToIteratorList\n * ---------------------------------------\n * Most of the work of the package occurs in this function, which\n * inserts the element addressed by dst into its correct position.\n * If the list is unordered or if the element belongs at the end,\n * the element is immediately inserted at the tail.  If not, the\n * implementation walks the list to find the correct position.\n * The local pointers have the following interpretations:\n *\n * np -- pointer to the newly allocated cell\n * pp -- pointer to the cell preceding the insertion point\n * ip -- pointer used as an index in the for loop\n * dp -- pointer to the data field in the block\n */\n\nvoid addToIteratorList(Iterator iterator, void *dst) {\n   Cell *np, *pp, *ip;\n   void *dp;\n\n   np = (Cell *) getBlock(sizeof (Cell) + iterator->elementSize);\n   dp = ((char *) np) + sizeof (Cell);\n   memcpy(dp, dst, iterator->elementSize);\n   pp = NULL;\n   if (iterator->tail != NULL) {\n      if (iterator->cmpFn == NULL || iterator->cmpFn == NULL) {\n         pp = iterator->tail;\n      } else {\n         dp = ((char *) iterator->tail) + sizeof (Cell);\n         if (iterator->cmpFn(dst, dp) >= 0) pp = iterator->tail;\n      }\n   }\n   if (pp == NULL) {\n      for (ip = iterator->head; ip != NULL; ip = ip->link) {\n         dp = ((char *) ip) + sizeof (Cell);\n         if (iterator->cmpFn(dst, dp) < 0) break;\n         pp = ip;\n      }\n   }\n   if (pp == NULL) {\n      np->link = iterator->head;\n      if (iterator->head == NULL) iterator->tail = np;\n      iterator->head = np;\n   } else {\n      np->link = pp->link;\n      if (pp->link == NULL) iterator->tail = np;\n      pp->link = np;\n   }\n}\n\nvoid setCollection(Iterator iterator, void *collection) {\n   iterator->collection = collection;\n}\n\nvoid *getCollection(Iterator iterator) {\n   return iterator->collection;\n}\n\nvoid setIteratorData(Iterator iterator, void *data) {\n   iterator->data = data;\n}\n\nvoid *getIteratorData(Iterator iterator) {\n   return iterator->data;\n}\n\n/* Private functions */\n\nstatic bool stepListIterator(Iterator iterator, void *dst) {\n   Cell *cp;\n   void *dp;\n\n   cp = iterator->head;\n   if (cp == NULL) {\n      iterator->tail = NULL;\n      return false;\n   }\n   dp = ((char *) cp) + sizeof (Cell);\n   memcpy(dst, dp, iterator->elementSize);\n   iterator->head = cp->link;\n   freeBlock(cp);\n   return true;\n}\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/iterator.h",
    "content": "/*\n * File: iterator.h\n * ----------------\n * This interface exports a polymorphic iterator abstraction for C.\n */\n\n#ifndef _iterator_h\n#define _iterator_h\n\n#include \"cslib.h\"\n\n/*\n * Type: Iterator\n * --------------\n * An abstract type used to iterate over the elements of any collection.\n */\n\ntypedef struct IteratorCDT *Iterator;\n\n/* Exported entries */\n\n/*\n * General overview\n * ----------------\n * The <code>newIterator</code>, <code>stepIterator</code>, and\n * <code>freeIterator</code> functions make it possible to iterate\n * over the elements in any collection that supports iteration.\n * In most cases, clients will simply use the <code>foreach</code>\n * macro, which automatically invokes these methods.  They can\n * also be used as shown in the following standalone paradigm:\n *\n *<pre>\n *    iterator = newIterator(collection);\n *    while (stepIterator(iterator, &element)) {\n *       . . . body of loop . . .\n *    }\n *    freeIterator(iterator);\n *</pre>\n *\n * <p>The call to <code>stepIterator</code> advances the iterator\n * and returns the next element using the reference parameter.  The\n * <code>stepIterator</code> function returns <code>true</code> until\n * the elements are exhausted, after which it returns <code>false</code>.\n * The <code>freeIterator</code> function releases any storage\n * associated with the iterator.\n */\n\n/*\n * Function: newIterator\n * Usage: iterator = newIterator(collection);\n * ------------------------------------------\n * Creates a new iterator for the specified collection.\n */\n\nIterator newIterator(void *collection);\n\n/*\n * Function: stepIterator\n * Usage: hasMoreElements = stepIterator(iterator, &element);\n * ----------------------------------------------------------\n * Advances the iterator and stores the next element through the\n * element pointer provided as a reference parameter.  The\n * <code>stepIterator</code> function returns <code>true</code> until\n * the elements are exhausted, after which it returns <code>false</code>.\n */\n\nbool stepIterator(Iterator iterator, void *dst);\n\n/*\n * Function: freeIterator\n * Usage: freeIterator(iterator);\n * ------------------------------\n * Frees any storage associated with the iterator.\n */\n\nvoid freeIterator(Iterator iterator);\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/itertype.h",
    "content": "/*\n * File: itertype.h\n * ----------------\n * This interface allows package designers to export new collection\n * types that support iteration.  Clients of those collection types\n * who merely want to use iterators do not need to import this interface.\n */\n\n#ifndef _itertype_h\n#define _itertype_h\n\n#include \"cslib.h\"\n#include \"iterator.h\"\n#include \"cmpfn.h\"\n\n/*\n * General overview\n * ----------------\n * In order to create a collection type that supports iteration,\n * the implementor of the type must first allocate space at the\n * beginning of the concrete record for an <code>IteratorHeader</code>\n * containing a function pointer that allows <code>newIterator</code>\n * to make a new iterator for that collection type.  The implementor\n * must initialize this header in the constructor function by calling\n * <code>enableIteration</code>, which takes the collection pointer\n * and a type-specific callback to create the iterator.\n *\n * There are two different strategies for creating the iterator in\n * each type.  The general strategy (which is useful for iterators\n * that are not really collections, such as scanners that return\n * a series of tokens) is to call <code>newStepIterator</code>,\n * which takes a pointer to a <code>stepIterator</code> function\n * specific for that type.  The second strategy creates the entire\n * list of values at the beginning.  Such iterators are created by\n * calling <code>newListIterator</code> to create an empty iterator\n * and the calling <code>addToIteratorList</code> for each element.\n *\n * Elements in the iterator may be sorted or unsorted depending on\n * the comparison function passed to <code>newListIterator</code>.\n */\n\n/*\n * Type: NewIteratorFn\n * -------------------\n * Represents the class of functions that create new iterators.\n */\n\ntypedef Iterator (*NewIteratorFn)(void *collection);\n\n/*\n * Type: StepIteratorFn\n * --------------------\n * Represents the class of functions that step from one element to the next.\n */\n\ntypedef bool (*StepIteratorFn)(Iterator iterator, void *dst);\n\n/*\n * Type: IteratorHeader\n * --------------------\n * This structure must appear at the beginning of any concrete\n * structure that supports iteration.\n */\n\ntypedef struct {\n    unsigned long password;\n    NewIteratorFn newFn;\n} IteratorHeader;\n\n/*\n * Function: enableIteration\n * Usage: enableIteration(collection, newFn);\n * ------------------------------------------\n * Enables iteration for the collection.  The type-specific function\n * pointer <code>newFn</code> is used to initialize an iterator\n * for this type.\n */\n\nvoid enableIteration(void *collection, NewIteratorFn newFn);\n\n/*\n * Function: newStepIterator\n * Usage: iterator = newStepIterator(size, stepFn);\n * ------------------------------------------------\n * Creates a new iterator that uses an implementation-specific\n * step function.\n */\n\nIterator newStepIterator(int size, StepIteratorFn stepFn);\n\n/*\n * Function: newListIterator\n * Usage: iterator = newListIterator(size, cmpFn);\n * -----------------------------------------------\n * Creates a new iterator with an empty iterator list.  The first\n * argument is the size of the element type,  which makes it possible\n * for the package to allocate storage for values of that type.\n * The <code>cmpFn</code> is the comparison function used to sort\n * the iterator elements.  If <code>cmpFn</code> is the constant\n * <code>NULL</code>, the elements are entered in the order in\n * which <code>addToIteratorList</code> is called.\n */\n\nIterator newListIterator(int size, CompareFn cmpFn);\n\n/*\n * Function: addToIteratorList\n * Usage: addToIteratorList(iterator, dst);\n * ----------------------------------------\n * Adds a new element to a list-style iterator.  The order of the\n * elements is determined by the comparison function specified\n * when the iterator was created.\n */\n\nvoid addToIteratorList(Iterator iterator, void *dst);\n\n/*\n * Function: setCollection\n * Usage: setCollection(iterator, collection);\n * -------------------------------------------\n * Sets the collection to which an iterator belongs.\n */\n\nvoid setCollection(Iterator iterator, void *collection);\n\n/*\n * Function: getCollection\n * Usage: collection = getCollection(iterator);\n * --------------------------------------------\n * Returns the collection to which an iterator belongs.\n */\n\nvoid *getCollection(Iterator iterator);\n\n/*\n * Function: setIteratorData\n * Usage: setIteratorData(iterator, data);\n * ---------------------------------------\n * Sets a data pointer in the iterator for use by clients.\n */\n\nvoid setIteratorData(Iterator iterator, void *data);\n\n/*\n * Function: getIteratorData\n * Usage: data = getIteratorData(iterator);\n * ----------------------------------------\n * Returns the client data pointer from the iterator.\n */\n\nvoid *getIteratorData(Iterator iterator);\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/loadobj.c",
    "content": "/*\n * File: loadobj.c\n * Last modified on Fri Sep 26 09:34:55 2014 by eroberts\n * -----------------------------------------------------\n * This file implements the loadobj.h interface.\n */\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <unistd.h>\n#include <dlfcn.h>\n#include \"cslib.h\"\n#include \"filelib.h\"\n#include \"loadobj.h\"\n#include \"strlib.h\"\n\n#ifndef MAX_PATH_NAME\n#  define MAX_PATH_NAME 1000\n#endif\n\ntypedef struct Cell {\n   void *handle;\n   struct Cell *link;\n} *HandleList;\n\nHandleList handles = NULL;\n\nvoid loadObject(string pathname) {\n   HandleList hl;\n   static char fullPath[MAX_PATH_NAME];\n\n   hl = newBlock(HandleList);\n   switch (pathname[0]) {\n     case '/':\n       strcpy(fullPath, pathname);\n       break;\n     case '~':\n       strcpy(fullPath, expandPathname(pathname));\n       break;\n     default:\n       getcwd(fullPath, MAX_PATH_NAME);\n       strcat(fullPath, \"/\");\n       strcat(fullPath, pathname);\n       break;\n   }\n   hl->handle = dlopen(fullPath, RTLD_NOW);\n   if (hl->handle == NULL) {\n      freeBlock(hl);\n      error(\"loadObject: %s\", dlerror());\n   }\n   hl->link = handles;\n   handles = hl;\n}\n\nproc findFunction(string fnname) {\n   HandleList hl;\n   void *fn;\n\n   for (hl = handles; hl != NULL; hl = hl->link) {\n      fn = dlsym(hl->handle, fnname);\n      if (fn != NULL) return (proc) (long) fn;\n   }\n   error(\"findFunction: %s\", dlerror());\n   return NULL;\n}\n\nvoid loadSymbols(string progname) {\n   /* Empty */\n}\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/loadobj.h",
    "content": "/*\n * File: loadobj.h\n * ---------------\n * This interface supports dynamic loading of functions from object files.\n * Any references in the object file to previously defined objects are\n * allowed, but no additional searching or unresolved references are\n * supported.\n */\n\n#ifndef _loadobj_h\n#define _loadobj_h\n\n#include \"cslib.h\"\n\n/*\n * Function: loadObject\n * Usage: loadObject(pathname);\n * ----------------------------\n * Loads the object file into the current executable.\n */\n\nvoid loadObject(string pathname);\n\n/*\n * Function: loadSymbols\n * Usage: loadSymbols(progname);\n * -----------------------------\n * Loads the symbols from the executable program.\n */\n\nvoid loadSymbols(string progname);\n\n/*\n * Function: findFunction\n * Usage: fn = findFunction(fnname);\n * ---------------------------------\n * Looks up the function in the symbol table and returns a pointer to the\n * code.\n */\n\nproc findFunction(string fnname);\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/map.c",
    "content": "/*\n * File: map.c\n * Last modified on Mon Dec 10 19:47:52 2012 by eroberts\n * -----------------------------------------------------\n * This file implements the map.h interface, which implements maps using\n * the balanced binary tree abstraction exported by the bst.h interface.\n */\n\n#include <stdio.h>\n#include <string.h>\n#include \"bst.h\"\n#include \"cmpfn.h\"\n#include \"cslib.h\"\n#include \"exception.h\"\n#include \"foreach.h\"\n#include \"generic.h\"\n#include \"iterator.h\"\n#include \"itertype.h\"\n#include \"map.h\"\n#include \"strlib.h\"\n#include \"unittest.h\"\n\n/*\n * Type: MapCDT\n * ------------\n * This type is the concrete type used to represent the map.\n */\n\nstruct MapCDT {\n   IteratorHeader header;              /* Header to enable iteration   */\n   BST bst;                            /* BST that does all the work   */\n};\n\n/* Private function prototypes */\n\nstatic Iterator newMapIterator(void *collection);\nstatic void addKeyToIterator(BSTNode node, void *data);\n\n/* Exported entries */\n\nMap newMap() {\n   Map map;\n\n   map = newBlock(Map);\n   enableIteration(map, newMapIterator);\n   map->bst = newBST(string);\n   return map;\n}\n\nvoid freeMap(Map map) {\n   freeBST(map->bst);\n   freeBlock(map);\n}\n\nint sizeMap(Map map) {\n   return sizeBST(map->bst);\n}\n\nbool isEmptyMap(Map map) {\n   return isEmptyBST(map->bst);\n}\n\nvoid clearMap(Map map) {\n   clearBST(map->bst);\n}\n\nMap cloneMap(Map map) {\n   Map newmap;\n\n   newmap = newBlock(Map);\n   enableIteration(newmap, newMapIterator);\n   newmap->bst = cloneBST(map->bst);\n   return newmap;\n}\n\nvoid putMap(Map map, string key, void *value) {\n   BSTNode node;\n\n   node = insertBSTNode(map->bst, key);\n   setNodeValue(node, value);\n}\n\nvoid *getMap(Map map, string key) {\n   BSTNode node;\n\n   node = findBSTNode(map->bst, key);\n   return (node == NULL) ? NULL : getNodeValue(node);\n}\n\nbool containsKeyMap(Map map, string key) {\n   return findBSTNode(map->bst, key) != NULL;\n}\n\nvoid removeMap(Map map, string key) {\n   removeBSTNode(map->bst, key);\n}\n\nvoid mapMap(Map map, proc fn, void *data) {\n   Iterator it;\n   BSTNode node;\n\n   it = newNodeIterator(map->bst, INORDER);\n   while (stepIterator(it, &node)) {\n      fn(getKeyString(node), getNodeValue(node), data);\n   }\n}\n\n/* Private functions */\n\nstatic Iterator newMapIterator(void *collection) {\n   Iterator iterator;\n\n   iterator = newListIterator(sizeof(string), NULL);\n   mapBST(((Map) collection)->bst, addKeyToIterator, INORDER, iterator);\n   return iterator;\n}\n\n/*\n * Implementation notes: addKeyToIterator\n * --------------------------------------\n * Adds the key from the specified node to the iterator, which is\n * passed as the <code>data</code> parameter.\n */\n\nstatic void addKeyToIterator(BSTNode node, void *data) {\n   string key;\n\n   key = (string) getKey(node).pointerRep;\n   addToIteratorList((Iterator) data, &key);\n}\n\n/**********************************************************************/\n/* Unit test for the map module                                       */\n/**********************************************************************/\n\n#ifndef _NOTEST_\n\nvoid testMapModule(void) {\n   Map map, map2;\n   string key;\n   string str;\n\n   trace(map = newMap());\n   test(size(map), 0);\n   test(isEmpty(map), true);\n   trace(put(map, \"H\", \"Hydrogen\"));\n   test(size(map), 1);\n   test(isEmpty(map), false);\n   trace(put(map, \"He\", \"Helium\"));\n   trace(put(map, \"Al\", \"Aluminum\"));\n   test(containsKey(map, \"H\"), true);\n   test(get(map, \"H\"), \"Hydrogen\");\n   test(get(map, \"He\"), \"Helium\");\n   test(get(map, \"Al\"), \"Aluminum\");\n   test(containsKey(map, \"Li\"), false);\n   test(get(map, \"Li\"), NULL);\n   trace(put(map, \"Al\", \"Aluminium\"));\n   test(get(map, \"Al\"), \"Aluminium\");\n   trace(remove(map, \"Al\"));\n   test(containsKey(map, \"Al\"), false);\n   test(get(map, \"He\"), \"Helium\");\n   trace(put(map, \"Li\", \"Lithium\"));\n   test(get(map, \"Li\"), \"Lithium\");\n   trace(put(map, \"Be\", \"Beryllium\"));\n   test(size(map), 4);\n   trace(str = \"\");\n   trace (foreach (key in map) str = concat(str, key));\n   test(str, \"BeHHeLi\");\n   trace(str = \"\");\n   trace(foreach (key in map) str = concat(str, get(map, key)));\n   test(str, \"BerylliumHydrogenHeliumLithium\");\n   trace(map2 = clone(map));\n   trace(str = \"\");\n   trace(foreach (key in map2) str = concat(str, get(map2, key)));\n   test(str, \"BerylliumHydrogenHeliumLithium\");\n}\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/map.h",
    "content": "/*\n * File: map.h\n * -----------\n * This interface defines a map abstraction that associates string-valued\n * keys with values.  In contrast to the <code>HashMap</code> type defined\n * in the <code>hashmap.h</code> interface, the implementation of the\n * <code>Map</code> type uses a balanced binary tree, which offers\n * logarithmic performance and sorted iteration.\n *\n * <p>In most applications, the restriction of keys to strings is easy\n * to circumvent.  The simplest strategy is to convert key values to\n * strings before inserting them into the map.  A more general strategy\n * is to use the <code>bst.h</code> interface instead.\n */\n\n#ifndef _map_h\n#define _map_h\n\n#include \"cslib.h\"\n#include \"generic.h\"\n#include \"iterator.h\"\n\n/*\n * Type: Map\n * ---------\n * This type is the ADT used to represent the map.\n */\n\ntypedef struct MapCDT *Map;\n\n/* Exported entries */\n\n/*\n * Function: newMap\n * Usage: map = newMap();\n * ----------------------\n * Allocates a new map with no entries.\n */\n\nMap newMap();\n\n/*\n * Function: freeMap\n * Usage: freeMap(map);\n * --------------------\n * Frees the storage associated with the map.\n */\n\nvoid freeMap(Map map);\n\n/*\n * Function: size\n * Usage: n = size(map);\n * ---------------------\n * Returns the number of elements in the map.\n */\n\nint sizeMap(Map map);\n\n/*\n * Function: isEmpty\n * Usage: if (isEmpty(map)) . . .\n * ------------------------------\n * Returns <code>true</code> if the map has no entries.\n */\n\nbool isEmptyMap(Map map);\n\n/*\n * Function: clear\n * Usage: clear(map);\n * ------------------\n * Removes all entries from the map.\n */\n\nvoid clearMap(Map map);\n\n/*\n * Function: clone\n * Usage: newmap = clone(map);\n * ---------------------------\n * Creates a copy of the map.  The <code>clone</code> function copies\n * only the first level of the structure and does not copy the individual\n * elements.\n */\n\nMap cloneMap(Map map);\n\n/*\n * Function: put\n * Usage: put(map, key, value);\n * ----------------------------\n * Associates <code>key</code> with <code>value</code> in the map.\n * Each call to <code>put</code> supersedes any previous definition\n * for <code>key</code>.\n */\n\nvoid putMap(Map map, string key, void *value);\n\n/*\n * Function: get\n * Usage: void *value = get(map, key);\n * -----------------------------------\n * Returns the value associated with <code>key</code> in the map,\n * or <code>NULL</code>, if no such value exists.\n */\n\nvoid *getMap(Map map, string key);\n\n/*\n * Function: containsKey\n * Usage: if (containsKey(map, key)) . . .\n * ---------------------------------------\n * Checks to see if the map contains the specified key.\n */\n\nbool containsKeyMap(Map map, string key);\n\n/*\n * Function: remove\n * Usage: remove(map, key);\n * ------------------------\n * Removes the key and its value from the map.\n */\n\nvoid removeMap(Map map, string key);\n\n/*\n * Function: map\n * Usage: map(map, fn, data);\n * --------------------------\n * Iterates through the map and calls the function <code>fn</code> on\n * each entry.  The callback function takes the following arguments:\n *\n *<ul>\n *  <li>The key\n *  <li>The associated value\n *  <li>The <code>data</code> pointer\n *</ul>\n *\n * The <code>data</code> pointer allows the client to pass state\n * information to the function <code>fn</code>, if necessary.  If no such\n * information is required, this argument should be <code>NULL</code>.\n */\n\nvoid mapMap(Map map, proc fn, void *data);\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/options.c",
    "content": "/*\n * File: options.c\n * Last modified on Fri Sep 26 09:34:55 2014 by eroberts\n * -----------------------------------------------------\n * This file implements the options.h interface.\n */\n\n#include <stdio.h>\n#include <ctype.h>\n#include \"cslib.h\"\n#include \"generic.h\"\n#include \"hashmap.h\"\n#include \"options.h\"\n#include \"strlib.h\"\n#include \"unittest.h\"\n#include \"vector.h\"\n\n/* Function prototypes */\n\nstatic int findOptionSpec(string arg, string optionSpec[]);\nstatic string scanOptionPattern(HashMap options, string key,\n                                string arg, string pattern);\n\n/* Exported entries */\n\nHashMap parseOptions(string args[], string optionSpec[]) {\n   HashMap options;\n   Vector argvec;\n   string arg, key, pattern, spec, value, str;\n   int i, index, space;\n\n   options = newHashMap();\n   argvec = newVector();\n   for (i = 0; args[i] != NULL; i++) {\n      arg = args[i];\n      if (arg[0] == '-' && arg[1] != '\\0') {\n         index = findOptionSpec(arg, optionSpec);\n         spec = optionSpec[index];\n         space = findChar(' ', spec, 0);\n         if (space == -1) {\n            key = spec;\n            value = \"true\";\n         } else {\n            key = substring(spec, 0, space - 1);\n            pattern = substring(spec, space + 1, stringLength(spec));\n            if (args[++i] == NULL) {\n               error(\"Missing value after %s\", arg);\n            }\n            str = args[i];\n            while (args[i + 1] != NULL && stringEqual(args[i + 1], \"+\")) {\n               i += 2;\n               if (args[i] == NULL) error(\"Missing value after +\");\n               str = concat(str, args[i]);\n            }\n            value = scanOptionPattern(options, arg, str, pattern);\n         }\n         put(options, key, value);\n      } else {\n         add(argvec, arg);\n      }\n   }\n   put(options, \"args\", vectorToArray(argvec));\n   return options;\n}\n\nstring *parseShellArgs(string line) {\n   Vector args;\n   string arg;\n   bool started;\n   char ch, quote;\n   int i;\n\n   args = newVector();\n   line = concat(line, \" \");\n   arg = \"\";\n   quote = ' ';\n   started = false;\n   for (i = 0; line[i] != '\\0'; i++) {\n      ch = line[i];\n      if (quote == '\\\\') {\n         arg = concat(arg, charToString(ch));\n         quote = ' ';\n      } else if (quote == '\"' || quote == '\\'') {\n         if (ch == quote) {\n            quote = ' ';\n         } else {\n            arg = concat(arg, charToString(ch));\n         }\n      } else {\n         if (ch == '\\\\' || ch == '\"' || ch == '\\'') {\n            quote = ch;\n            started = true;\n         } else if (isspace(ch)) {\n            if (started) add(args, arg);\n            arg = \"\";\n            started = false;\n         } else {\n            arg = concat(arg, charToString(ch));\n            started = true;\n         }\n      }\n   }\n   return (string *) vectorToArray(args);\n}\n\nstring *getArgList(HashMap options) {\n   return (string *) get(options, \"args\");\n}\n\nstring getOption(HashMap options, string key, string def) {\n   string value;\n\n   value = (string) get(options, key);\n   return (value == NULL) ? def : value;\n}\n\nint getIntOption(HashMap options, string key, int def) {\n   string value;\n\n   value = (string) get(options, key);\n   return (value == NULL) ? def : stringToInteger(value);\n}\n\ndouble getDoubleOption(HashMap options, string key, double def) {\n   string value;\n\n   value = (string) get(options, key);\n   return (value == NULL) ? def : stringToReal(value);\n}\n\nint getCharOption(HashMap options, string key, char def) {\n   string value;\n\n   value = (string) get(options, key);\n   return (value == NULL) ? def : value[0];\n}\n\nbool getBoolOption(HashMap options, string key, bool def) {\n   string value;\n\n   value = (string) get(options, key);\n   return (value == NULL) ? def : stringEqual(value, \"true\");\n}\n\nstring getColorOption(HashMap options, string key, string def) {\n   string arg;\n\n   arg = getOption(options, key, NULL);\n   if (arg == NULL) return def;\n   if (endsWith(arg, \"%\")) {\n      arg = substring(arg, 0, stringLength(arg) - 2);\n      return concat(arg, \" 100 div colorscreen\");\n   } else if (startsWith(arg, \"#\")) {\n      return concat(\"16\", concat(arg, \" sethexcolor\"));\n   } else if (startsWith(arg, \"0x\")) {\n      arg = substring(arg, 2, stringLength(arg) - 1);\n      return concat(\"16#\", concat(arg, \" sethexcolor\"));\n   } else if (isdigit(arg[0])) {\n      return concat(arg, \" setgray\");\n   }\n   arg = toLowerCase(arg);\n   if (stringEqual(arg, \"black\")) return \"black\";\n   if (stringEqual(arg, \"darkgray\")) return \"darkGray\";\n   if (stringEqual(arg, \"gray\")) return \"gray\";\n   if (stringEqual(arg, \"lightgray\")) return \"lightGray\";\n   if (stringEqual(arg, \"white\")) return \"white\";\n   if (stringEqual(arg, \"red\")) return \"red\";\n   if (stringEqual(arg, \"green\")) return \"green\";\n   if (stringEqual(arg, \"blue\")) return \"blue\";\n   if (stringEqual(arg, \"yellow\")) return \"yellow\";\n   if (stringEqual(arg, \"magenta\")) return \"magenta\";\n   if (stringEqual(arg, \"cyan\")) return \"cyan\";\n   if (stringEqual(arg, \"pink\")) return \"pink\";\n   if (stringEqual(arg, \"orange\")) return \"orange\";\n   error(\"Unrecognized color %s\", arg);\n   return NULL;\n}\n\ndouble getUnitsOption(HashMap options, string key, double def) {\n   double value;\n   string arg;\n   char units[3];\n   int nscan;\n\n   arg = getOption(options, key, NULL);\n   if (arg == NULL) return def;\n   nscan = sscanf(arg, \"%lf%2s\", &value, units);\n   if (nscan == 1) return value;\n   if (stringEqual(units, \"pt\")) return value;\n   if (stringEqual(units, \"px\")) return value;\n   if (stringEqual(units, \"i\")) return value * 72;\n   if (stringEqual(units, \"in\")) return value * 72;\n   if (stringEqual(units, \"cm\")) return value * 72 / 2.54;\n   error(\"Unrecognized unit measure in %s\", key);\n   return 0;\n}\n\nvoid showUsage(string usage, string spec[]) {\n   int i;\n\n   printf(\"Usage: %s\\n\", usage);\n   printf(\"  where <options> can be any of the following:\\n\");\n   for (i = 0; spec[i] != NULL; i++) {\n      printf(\"   %s\\n\", spec[i]);\n   }\n}\n\n/* Private functions */\n\nstatic int findOptionSpec(string arg, string optionSpec[]) {\n   int i, index;\n\n   index = -1;\n   for (i = 0; optionSpec[i] != NULL; i++) {\n      if (startsWith(optionSpec[i], arg)) {\n         if (index == -1) {\n            index = i;\n         } else {\n            error(\"Ambiguous option: %s\", arg);\n         }\n      }\n   }\n   if (index == -1) error(\"Unrecognized option: %s\", arg);\n   return index;\n}\n\nstatic string scanOptionPattern(HashMap options, string key,\n                                string arg, string pattern) {\n   string text, match;\n   char ch;\n\n   if (stringEqual(pattern, \"<char>\")) {\n      if (stringLength(arg) != 1) {\n         error(\"Expected a single character after %s\", key);\n      }\n      return arg;\n   }\n   if (stringEqual(pattern, \"<int>\")) {\n      if (sscanf(concat(arg, \"$\"), \"%*i%c\", &ch) != 1 || ch != '$') {\n         error(\"Expected an integer after %s\", key);\n      }\n      return arg;\n   }\n   if (stringEqual(pattern, \"<double>\")) {\n      if (sscanf(concat(arg, \"$\"), \"%*f%c\", &ch) != 1 || ch != '$') {\n         error(\"Expected a number after %s\", key);\n      }\n      return arg;\n   }\n   if (stringEqual(pattern, \"<bool>\")) {\n      if (startsWith(\"true\", toLowerCase(arg))) return \"true\";\n      if (startsWith(\"false\", toLowerCase(arg))) return \"false\";\n      error(\"Expected a boolean value after %s\", key);\n   }\n   if (stringEqual(pattern, \"<cumulative>\")) {\n      if (!containsKey(options, key)) return arg;\n      return concat(get(options, key), concat(\"+\", arg));\n   }\n   if (startsWith(pattern, \"<\") && endsWith(pattern, \">\")) return arg;\n   text = concat(\"|\", concat(pattern, \"|\"));\n   match = concat(\"|\", concat(arg, \"|\"));\n   if (findString(match, text, 0) == -1) {\n      error(\"Expected %s after %s\", pattern, key);\n   }\n   return arg;\n}\n\n/**********************************************************************/\n/* Unit test for the options module                                   */\n/**********************************************************************/\n\n#ifndef _NOTEST_\n\n/* Unit test */\n\nstatic string OPTIONS[] = {\n   \"-count <int>\",\n   \"-size <double>\",\n   \"-letter <char>\",\n   \"-title <string>\",\n   \"-units <units>\",\n   \"-color <color>\",\n   \"-trace on|off\",\n   \"-skip <cumulative>\",\n   \"-verbose\",\n   NULL\n};\n\nvoid testOptionsModule(void) {\n   string *args;\n   HashMap options;\n\n   trace(args = parseShellArgs(\"-count 3 -size 1.5 -trace on -v a0 a1\"));\n   trace(options = parseOptions(args, OPTIONS));\n   test(getIntOption(options, \"-count\", 0), 3);\n   test(getDoubleOption(options, \"-size\", 0), 1.5);\n   test(getOption(options, \"-title\", \"none\"), \"none\");\n   test(getOption(options, \"-trace\", \"off\"), \"on\");\n   test(getBoolOption(options, \"-verbose\", false), true);\n   trace(args = getArgList(options));\n   test(args[0], \"a0\");\n   test(args[1], \"a1\");\n   trace(args = parseShellArgs(\"-letter x\"));\n   trace(options = parseOptions(args, OPTIONS));\n   test(get(options, \"-letter\"), \"x\");\n   trace(args = parseShellArgs(\"-size\"));\n   testError(parseOptions(args, OPTIONS));\n   trace(args = parseShellArgs(\"-size x\"));\n   testError(parseOptions(args, OPTIONS));\n   trace(args = parseShellArgs(\"-trace true\"));\n   testError(parseOptions(args, OPTIONS));\n   trace(args = parseShellArgs(\"-let xyz\"));\n   testError(parseOptions(args, OPTIONS));\n   trace(args = parseShellArgs(\"-title 'Harry Potter'\"));\n   trace(options = parseOptions(args, OPTIONS));\n   test(get(options, \"-title\"), \"Harry Potter\");\n   trace(args = parseShellArgs(\"-units 1\"));\n   trace(options = parseOptions(args, OPTIONS));\n   test(getUnitsOption(options, \"-units\", 0.0), 1.0);\n   trace(args = parseShellArgs(\"-units 1in\"));\n   trace(options = parseOptions(args, OPTIONS));\n   test(getUnitsOption(options, \"-units\", 0.0), 72.0);\n   trace(args = parseShellArgs(\"-skip a -skip b -skip c\"));\n   trace(options = parseOptions(args, OPTIONS));\n   test(get(options, \"-skip\"), \"a+b+c\");\n}\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/options.h",
    "content": "/*\n * File: options.h\n * ---------------\n * This interface defines a set of options that can be scanned on\n * the command line.\n */\n\n#ifndef _cmdscan_h\n#define _cmdscan_h\n\n#include \"cslib.h\"\n#include \"hashmap.h\"\n\n/*\n * Function: parseOptions\n * ----------------------\n * Parses shell arguments into a table of options and a list of\n * unprocessed values.  The general pattern of use is\n *\n *<pre>\n *    options = parseOptions(args, optionSpec);\n *</pre>\n *\n * where <code>args</code> is a <code>NULL</code>-terminated list of\n * strings and <code>optionSpec</code> is a <code>NULL</code>-terminated\n * array of strings (typically initialized at compile time)\n * indicating what options are legal.  The return value is a\n * <code>HashMap</code> that contains both the bindings of the option\n * names (including the leading minus sign) and a special entry under\n * the name <code>args</code> that is a <code>NULL</code>-terminated\n * array of the remaining arguments.\n *\n * <p>Each element of <code>optionSpec</code> is a string that\n * begins with the option name and then includes an additional\n * field to specify the value that appears in the next argument\n * position.  The standard fields are:\n *\n *<p><table>\n * <tr><td><code>&lt;int&gt;</code></td>\n *     <td>An integer value</td></tr>\n * <tr><td><code>&lt;double&gt;</code></td>\n *     <td>A floating-point value</td></tr>\n * <tr><td><code>&lt;string&gt;</code></td>\n *     <td>An arbitrary string</td></tr>\n * <tr><td><code>&lt;char&gt;</code></td>\n *     <td>A single character</td></tr>\n * <tr><td><code>&lt;bool&gt;</code></td>\n *     <td>A boolean value</td></tr>\n * <tr><td><code>x|y|z</code></td>\n *     <td>One of the specified options</td></tr>\n *</table></p>\n *\n * Any argument class that is not defined in the above list is treated\n * as a string, and the client is responsible for checking that the\n * supplied value is valid.\n */\n\nHashMap parseOptions(string args[], string optionSpec[]);\n\n/*\n * Function: parseShellArgs\n * ------------------------\n * Parses a string into individual arguments in the style of the\n * various implementations of the Unix shell.  Argument tokens\n * are separated by whitespace.  This implementation recognizes\n * the quoting conventions of a single backslash (which quotes\n * the next character) and either single or double quotation marks,\n * which quote the intervening characters.  No other metacharacters\n * are recognized.\n */\n\nstring *parseShellArgs(string line);\n\n/*\n * Function: getOption\n * -------------------\n * Gets an option value from the table, supplying a default value\n * if the option is undefined.\n */\n\nstring getOption(HashMap options, string key, string def);\n\n/*\n * Function: getArgList\n * --------------------\n * Gets the list of arguments that were not interpreted by the option\n * parser.\n */\n\nstring *getArgList(HashMap options);\n\n/*\n * Function: getIntOption\n * ----------------------\n * Gets an integer option from the table, supplying a default value\n * if the option is undefined.\n */\n\nint getIntOption(HashMap options, string key, int def);\n\n/*\n * Function: getDoubleOption\n * -------------------------\n * Gets a numeric option from the table, supplying a default value\n * if the option is undefined.\n */\n\ndouble getDoubleOption(HashMap options, string key, double def);\n\n/*\n * Function: getCharOption\n * -----------------------\n * Gets a character option from the table, supplying a default value\n * if the option is undefined.\n */\n\nint getCharOption(HashMap options, string key, char def);\n\n/*\n * Function: getBoolOption\n * -----------------------\n * Gets a Boolean option from the table, supplying a default value\n * if the option is undefined.\n */\n\nbool getBoolOption(HashMap options, string key, bool def);\n\n/*\n * Function: getUnitsOption\n * ------------------------\n * Gets a units value from an option table.  The value for the units\n * option consists of a number followed by a unit specification, which\n * can be any of the following: <code>in</code> (or <code>i</code>),\n * <code>cm</code>, <code>pt</code>, or <code>px</code>.\n */\n\ndouble getUnitsOption(HashMap options, string key, double def);\n\n/*\n * Function: getColorOption\n * ------------------------\n * Gets a color value from an option table, which is returned here as\n * a PostScript string that sets the color to the desired value.  The\n * supplied argument can be any of the following:\n *\n * <table>\n *   <tr>\n *     <td valign=top><i>name</i></td><td>&nbsp;&nbsp;</td>\n *     <td>A standard color name</td>\n *   </tr>\n *   <tr>\n *     <td valign=top><code>rrggbb</code></td><td>&nbsp;&nbsp;</td>\n *     <td>A hexadecimal RGB value</td>\n *   </tr>\n *   <tr>\n *     <td valign=top><code>0xrrggbb</code></td><td>&nbsp;&nbsp;</td>\n *     <td>A hexadecimal RGB value using C style</td>\n *   </tr>\n *   <tr>\n *     <td valign=top><code>#rrggbb</code></td><td>&nbsp;&nbsp;</td>\n *     <td>A hexadecimal RGB value using HTML style</td>\n *   </tr>\n *   <tr>\n *     <td valign=top><i>grayscale</i></td><td>&nbsp;&nbsp;</td>\n *     <td>A floating-point value between 0 and 1 indicating grayscale</td>\n *   </tr>\n *   <tr>\n *     <td valign=top><i>screen</i><code>%</code></td><td>&nbsp;&nbsp;</td>\n *     <td>A percentage value of the second-color screen</td>\n *   </tr>\n * </table>\n */\n\nstring getColorOption(HashMap options, string key, string def);\n\n/*\n * Function: showUsage\n * -------------------\n * Displays a message describing the command line and its options.\n */\n\nvoid showUsage(string usage, string spec[]);\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/platform.c",
    "content": "/*\n * File: platform.c\n * ----------------\n * This file implements the platform-dependent aspects of the library,\n * primarily by passing commands to the Java back end.\n */\n\n#ifdef _MSC_VER\n#  include <windows.h>\n#  include <tchar.h>\n#  undef MOUSE_EVENT\n#  undef KEY_EVENT\n#  undef MOUSE_MOVED\n#  undef HELP_KEY\n#endif\n\n#if defined(__unix__) || defined(__STDC_HOSTED__)\n#  define pause unixpause\n#  include <sys/types.h>\n#  include <sys/stat.h>\n#  include <dirent.h>\n#  include <errno.h>\n#  include <pwd.h>\n#  include <unistd.h>\n#  undef pause\n#endif\n\n#include <ctype.h>\n#include <stdarg.h>\n#include <stdio.h>\n#include <unistd.h>\n#include \"cslib.h\"\n#include \"filelib.h\"\n#include \"gevents.h\"\n#include \"gobjects.h\"\n#include \"gtypes.h\"\n#include \"gwindow.h\"\n#include \"hashmap.h\"\n#include \"platform.h\"\n#include \"queue.h\"\n#include \"simpio.h\"\n#include \"strbuf.h\"\n#include \"strlib.h\"\n#include \"tokenscanner.h\"\n\n/* Constants */\n\n#define MAX_ID_LENGTH 24\n\n/* Package variables */\n\nstatic string programName = \"Test\";\nstatic FILE *pin;\nstatic FILE *pout;\nstatic bool initialized = false;\nstatic Queue eventQueue;\nstatic HashMap sourceTable;\nstatic HashMap timerTable;\nstatic HashMap windowTable;\nstatic StringBuffer psb;\n\n/* Private function prototypes */\n\nstatic void initPipe(void);\nstatic void putPipe(string format, ...);\nstatic string getResult();\nstatic void getStatus();\nstatic int getInt();\nstatic int getDouble();\nstatic GDimension getGDimension();\nstatic GEvent parseEvent(string line);\nstatic GEvent parseMouseEvent(TokenScanner scanner, EventType type);\nstatic GEvent parseKeyEvent(TokenScanner scanner, EventType type);\nstatic GEvent parseTimerEvent(TokenScanner scanner, EventType type);\nstatic GEvent parseWindowEvent(TokenScanner scanner, EventType type);\nstatic GEvent parseActionEvent(TokenScanner scanner, EventType type);\nstatic string scanString(TokenScanner scanner);\nstatic int scanInt(TokenScanner scanner);\nstatic double scanDouble(TokenScanner scanner);\nstatic bool scanBool(TokenScanner scanner);\nstatic string quotedString(string str);\nstatic string boolString(bool flag);\nstatic void registerSource(GInteractor interactor);\n\nvoid initPlatform(void) {\n   if (!initialized) initPipe();\n   sourceTable = newHashMap();\n   timerTable = newHashMap();\n   windowTable = newHashMap();\n   eventQueue = newQueue();\n   psb = newStringBuffer();\n   initialized = true;\n}\n\nstring getId(void *ptr) {\n   char str[MAX_ID_LENGTH];\n   sprintf(str, \"0x%lX\", (long) ptr);\n   return copyString(str);\n}\n\n#ifdef _MSC_VER\n\n// Fix these\n\n/* Windows implementation of interface to Java back end */\n\nint startupMain(int argc, char **argv) {\n   extern int Main(int argc, char **argv);\n   programName = getRoot(getTail(argv[0]));\n   initPipe();\n   ConsoleStreambuf cbuf;\n   cin.rdbuf(&cbuf);\n   cout.rdbuf(&cbuf);\n   ShowWindow(GetConsoleWindow(), SW_HIDE);\n   return Main(argc, argv);\n}\n\nstatic void initPipe() {\n   SECURITY_ATTRIBUTES attr;\n   attr.nLength = sizeof(SECURITY_ATTRIBUTES);\n   attr.bInheritHandle = true;\n   attr.lpSecurityDescriptor = NULL;\n   if (!CreatePipe(&rdFromJBE, &wrFromJBE, &attr, 0)) {\n      error(\"Can't create fromJBE\");\n   }\n   if (!SetHandleInformation(rdFromJBE, HANDLE_FLAG_INHERIT, 0)) {\n      error(\"SetHandleInformation failed for fromJBE\");\n   }\n   if (!CreatePipe(&rdToJBE, &wrToJBE, &attr, 0)) {\n      error(\"Can't create toJBE\");\n   }\n   if (!SetHandleInformation(wrToJBE, HANDLE_FLAG_INHERIT, 0)) {\n      error(\"SetHandleInformation failed for toJBE\");\n   }\n   string cmd = \"java -jar spl.jar \" + programName;\n   int n = cmd.length();\n   char *cmdLine = new char[n + 1];\n   for (int i = 0; i < n; i++) {\n      cmdLine[i] = cmd[i];\n   }\n   cmdLine[n] = '\\0';\n   PROCESS_INFORMATION pInfo;\n   memset(&pInfo, 0, sizeof(PROCESS_INFORMATION));\n   STARTUPINFOA sInfo;\n   memset(&sInfo, 0, sizeof(STARTUPINFOA));\n   sInfo.cb = sizeof(STARTUPINFOA);\n   sInfo.dwFlags = STARTF_USESTDHANDLES;\n   sInfo.hStdInput = rdToJBE;\n   sInfo.hStdOutput = wrFromJBE;\n   sInfo.hStdError = wrFromJBE;\n   int ok = CreateProcessA(NULL, cmdLine, NULL, NULL, true, 0,\n                           NULL, NULL, &sInfo, &pInfo);\n   if (!ok) {\n      DWORD err = GetLastError();\n      cerr << err << endl;\n   } else {\n      CloseHandle(pInfo.hProcess);\n      CloseHandle(pInfo.hThread);\n   }\n}\n\n#else\n\n/* Linux/Mac implementation of interface to Java back end */\n\nextern string *getMainArgArray(void);\n\nstatic void initPipe(void) {\n   int toJBE[2], fromJBE[2], child;\n   string option;\n\n   programName = getRoot(getTail(getMainArgArray()[0]));\n   pipe(toJBE);\n   pipe(fromJBE);\n   child = fork();\n   if (child == 0) {\n      dup2(toJBE[0], 0);\n      close(toJBE[0]);\n      close(toJBE[1]);\n      dup2(fromJBE[1], 1);\n      close(fromJBE[0]);\n      close(fromJBE[1]);\n#ifdef __APPLE__\n      option = concat(\"-Xdock:name=\", programName);\n      execlp(\"java\", \"java\", option, \"-jar\", \"spl.jar\", programName, NULL);\n#else\n      execlp(\"java\", \"java\", \"-jar\", \"spl.jar\", programName, NULL);\n#endif\n      error(\"Could not exec spl.jar\");\n   } else {\n      pin = fdopen(fromJBE[0], \"r\");\n      pout = fdopen(toJBE[1], \"w\");\n      close(fromJBE[1]);\n      close(toJBE[0]);\n   }\n}\n\n#endif\n\nstatic void putPipe(string format, ...) {\n   string cmd, jbetrace;\n   va_list args;\n   int capacity;\n\n   clearStringBuffer(psb);\n   va_start(args, format);\n   capacity = printfCapacity(format, args);\n   va_end(args);\n   va_start(args, format);\n   sbFormat(psb, capacity, format, args);\n   va_end(args);\n   cmd = getString(psb);\n   jbetrace = getenv(\"JBETRACE\");\n   if (jbetrace != NULL && (jbetrace[0] == 'T' || jbetrace[0] == 't')) {\n      fprintf(stderr, \"-> %s\\n\", cmd);\n   }\n   fprintf(pout, \"%s\\n\", cmd);\n   fflush(pout);\n}\n\nstatic string getResult() {\n   string line, result, jbetrace;\n\n   jbetrace = getenv(\"JBETRACE\");\n   while (true) {\n      line = readLine(pin);\n      if (line == NULL) exit(1);\n      if (jbetrace != NULL && (jbetrace[0] == 'T' || jbetrace[0] == 't')) {\n         fprintf(stderr, \"<- %s\\n\", line);\n      }\n      if (startsWith(line, \"result:\")) {\n         result = substring(line, 7, stringLength(line));\n         freeBlock(line);\n         return result;\n      } else if (startsWith(line, \"event:\")) {\n         enqueue(eventQueue, parseEvent(line + 6));\n         freeBlock(line);\n      }\n   }\n}\n\nstatic void getStatus() {\n   string result;\n\n   result = getResult();\n   if (!stringEqual(result, \"ok\")) error(result);\n   freeBlock(result);\n}\n\nstatic int getInt() {\n   string str;\n   int result;\n\n   str = getResult();\n   result = stringToInteger(str);\n   freeBlock(str);\n   return result;\n}\n\nstatic int getDouble() {\n   string str;\n   double result;\n\n   str = getResult();\n   result = stringToReal(str);\n   freeBlock(str);\n   return result;\n}\n\nstatic GDimension getGDimension() {\n   string str;\n   double width, height;\n\n   str = getResult();\n   sscanf(str, \"GDimension(%lg,%lg)\", &width, &height);\n   freeBlock(str);\n   return createGDimension(width, height);\n}\n\nstatic int getBool() {\n   string str;\n   bool result;\n\n   str = getResult();\n   result = (str[0] == 'T' || str[0] == 't');\n   freeBlock(str);\n   return result;\n}\n\nstatic GEvent parseEvent(string line) {\n   TokenScanner scanner;\n   string name;\n   GEvent e;\n\n   scanner = newTokenScanner();\n   ignoreWhitespace(scanner);\n   scanNumbers(scanner);\n   scanStrings(scanner);\n   setInputString(scanner, line);\n   name = nextToken(scanner);\n   e = NULL;\n   if (stringEqual(name, \"mousePressed\")) {\n      e = parseMouseEvent(scanner, MOUSE_PRESSED);\n   } else if (stringEqual(name, \"mouseReleased\")) {\n      e = parseMouseEvent(scanner, MOUSE_RELEASED);\n   } else if (stringEqual(name, \"mouseClicked\")) {\n      e = parseMouseEvent(scanner, MOUSE_CLICKED);\n   } else if (stringEqual(name, \"mouseMoved\")) {\n      e = parseMouseEvent(scanner, MOUSE_MOVED);\n   } else if (stringEqual(name, \"mouseDragged\")) {\n      e = parseMouseEvent(scanner, MOUSE_DRAGGED);\n   } else if (stringEqual(name, \"keyPressed\")) {\n      e = parseKeyEvent(scanner, KEY_PRESSED);\n   } else if (stringEqual(name, \"keyReleased\")) {\n      e = parseKeyEvent(scanner, KEY_RELEASED);\n   } else if (stringEqual(name, \"keyTyped\")) {\n      e = parseKeyEvent(scanner, KEY_TYPED);\n   } else if (stringEqual(name, \"actionPerformed\")) {\n      e = parseActionEvent(scanner, ACTION_PERFORMED);\n   } else if (stringEqual(name, \"timerTicked\")) {\n      e = parseTimerEvent(scanner, TIMER_TICKED);\n   } else if (stringEqual(name, \"windowClosed\")) {\n      e = parseWindowEvent(scanner, WINDOW_CLOSED);\n      closeGWindow(getGWindow(e));\n   } else if (stringEqual(name, \"windowResized\")) {\n      e = parseWindowEvent(scanner, WINDOW_RESIZED);\n   } else if (stringEqual(name, \"lastWindowClosed\")) {\n      exit(0);\n   } else {\n      /* Ignore for now */\n   }\n   freeTokenScanner(scanner);\n   freeBlock(name);\n   return e;\n}\n\nstatic GEvent parseMouseEvent(TokenScanner scanner, EventType type) {\n   string id;\n   int modifiers;\n   double time, x, y;\n   GEvent e;\n\n   verifyToken(scanner, \"(\");\n   id = scanString(scanner);\n   verifyToken(scanner, \",\");\n   time = scanDouble(scanner);\n   verifyToken(scanner, \",\");\n   modifiers = scanInt(scanner);\n   verifyToken(scanner, \",\");\n   x = scanDouble(scanner);\n   verifyToken(scanner, \",\");\n   y = scanDouble(scanner);\n   verifyToken(scanner, \")\");\n   e = newGMouseEvent(type, get(windowTable, id), x, y);\n   setEventTime(e, time);\n   setModifiers(e, modifiers);\n   freeBlock(id);\n   return e;\n}\n\nstatic GEvent parseKeyEvent(TokenScanner scanner, EventType type) {\n   string id;\n   int modifiers, keyChar, keyCode;\n   double time;\n   GEvent e;\n\n   verifyToken(scanner, \"(\");\n   id = scanString(scanner);\n   verifyToken(scanner, \",\");\n   time = scanDouble(scanner);\n   verifyToken(scanner, \",\");\n   modifiers = scanInt(scanner);\n   verifyToken(scanner, \",\");\n   keyChar = scanInt(scanner);\n   verifyToken(scanner, \",\");\n   keyCode = scanInt(scanner);\n   verifyToken(scanner, \")\");\n   e = newGKeyEvent(type, get(windowTable, id), keyChar, keyCode);\n   setEventTime(e, time);\n   setModifiers(e, modifiers);\n   freeBlock(id);\n   return e;\n}\n\nstatic GEvent parseTimerEvent(TokenScanner scanner, EventType type) {\n   string id;\n   double time;\n   GEvent e;\n\n   verifyToken(scanner, \"(\");\n   id = scanString(scanner);\n   verifyToken(scanner, \",\");\n   time = scanDouble(scanner);\n   verifyToken(scanner, \")\");\n   e = newGTimerEvent(type, get(timerTable, id));\n   setEventTime(e, time);\n   freeBlock(id);\n   return e;\n}\n\nstatic GEvent parseWindowEvent(TokenScanner scanner, EventType type) {\n   string id;\n   double time;\n   GEvent e;\n\n   verifyToken(scanner, \"(\");\n   id = scanString(scanner);\n   verifyToken(scanner, \",\");\n   time = scanDouble(scanner);\n   verifyToken(scanner, \")\");\n   e = newGWindowEvent(type, get(windowTable, id));\n   setEventTime(e, time);\n   freeBlock(id);\n   return e;\n}\n\nstatic GEvent parseActionEvent(TokenScanner scanner, EventType type) {\n   string id, action;\n   double time;\n   GEvent e;\n\n   verifyToken(scanner, \"(\");\n   id = scanString(scanner);\n   verifyToken(scanner, \",\");\n   action = scanString(scanner);\n   verifyToken(scanner, \",\");\n   time = scanDouble(scanner);\n   verifyToken(scanner, \")\");\n   e = newGActionEvent(type, get(sourceTable, id), action);\n   setEventTime(e, time);\n   freeBlock(id);\n   freeBlock(action);\n   return e;\n}\n\nstatic string scanString(TokenScanner scanner) {\n   string token, result;\n\n   token = nextToken(scanner);\n   result = getStringValue(token);\n   freeBlock(token);\n   return result;\n}\n\nstatic int scanInt(TokenScanner scanner) {\n   string token;\n   int sign, result;\n\n   token = nextToken(scanner);\n   sign = 1;\n   if (stringEqual(token, \"-\")) {\n      sign = -1;\n      freeBlock(token);\n      token = nextToken(scanner);\n   }\n   result = stringToInteger(token);\n   freeBlock(token);\n   return sign * result;\n}\n\nstatic double scanDouble(TokenScanner scanner) {\n   string token;\n   double result;\n   int sign;\n\n   token = nextToken(scanner);\n   sign = 1;\n   if (stringEqual(token, \"-\")) {\n      sign = -1;\n      freeBlock(token);\n      token = nextToken(scanner);\n   }\n   result = stringToReal(token);\n   freeBlock(token);\n   return sign * result;\n}\n\nstatic bool scanBool(TokenScanner scanner) {\n   string token;\n   bool result;\n\n   token = nextToken(scanner);\n   result = startsWith(token, \"t\");\n   freeBlock(token);\n   return result;\n}\n\nstatic string quotedString(string str) {\n   StringBuffer sb;\n   char ch;\n   int i;\n\n   sb = newStringBuffer();\n   pushChar(sb, '\"');\n   for (i = 0; str[i] != '\\0'; i++) {\n      ch = str[i];\n      switch (ch) {\n       case '\\a': sbprintf(sb, \"\\\\a\"); break;\n       case '\\b': sbprintf(sb, \"\\\\b\"); break;\n       case '\\f': sbprintf(sb, \"\\\\f\"); break;\n       case '\\n': sbprintf(sb, \"\\\\n\"); break;\n       case '\\r': sbprintf(sb, \"\\\\r\"); break;\n       case '\\t': sbprintf(sb, \"\\\\t\"); break;\n       case '\\v': sbprintf(sb, \"\\\\v\"); break;\n       case '\"':  sbprintf(sb, \"\\\\%03o\", ch); break;\n       case '\\\\': sbprintf(sb, \"\\\\\\\\\"); break;\n       default:\n         if (isprint(ch)) {\n            pushChar(sb, ch);\n         } else {\n            sbprintf(sb, \"\\\\%03o\", ch & 0xFF);\n         }\n      }\n   }\n   pushChar(sb, '\"');\n   str = copyString(getString(sb));\n   freeStringBuffer(sb);\n   return str;\n}\n\nstatic string boolString(bool flag) {\n   return (flag) ? \"true\" : \"false\";\n}\n\n/* GWindow operations */\n\nvoid createGWindowOp(GWindow gw, double width, double height, GObject top) {\n   string id;\n\n   initPlatform();\n   id = getId(gw);\n   put(windowTable, id, gw);\n   freeBlock(id);\n   putPipe(\"GWindow.create(\\\"0x%lX\\\", %g, %g, \\\"0x%lX\\\")\",\n           (long) gw, width, height, (long) top);\n}\n\nvoid deleteGWindowOp(GWindow gw) {\n   string id;\n\n   id = getId(gw);\n   remove(windowTable, id);\n   freeBlock(id);\n   putPipe(\"GWindow.delete(\\\"0x%lX\\\")\", (long) gw);\n}\n\nvoid closeGWindowOp(GWindow gw) {\n   putPipe(\"GWindow.close(\\\"0x%lX\\\")\", (long) gw);\n}\n\nvoid requestFocusOp(GWindow gw) {\n   putPipe(\"GWindow.requestFocus(\\\"0x%lX\\\")\", (long) gw);\n}\n\nvoid clearOp(GWindow gw) {\n   putPipe(\"GWindow.clear(\\\"0x%lX\\\")\", (long) gw);\n}\n\nvoid repaintOp(GWindow gw) {\n   putPipe(\"GWindow.repaint(\\\"0x%lX\\\")\", (long) gw);\n}\n\nvoid setVisibleGWindowOp(GWindow gw, bool flag) {\n   putPipe(\"GWindow.setVisible(\\\"0x%lX\\\", %s)\", (long) gw, boolString(flag));\n}\n\nvoid setResizableOp(GWindow gw, bool flag) {\n   putPipe(\"GWindow.setResizable(\\\"0x%lX\\\", %s)\", (long) gw, boolString(flag));\n}\n\nvoid setWindowTitleOp(GWindow gw, string title) {\n   title = quotedString(title);\n   putPipe(\"GWindow.setWindowTitle(\\\"0x%lX\\\", %s)\", (long) gw, title);\n   freeBlock(title);\n}\n\nvoid setRegionAlignmentOp(GWindow gw, string region, string align) {\n   putPipe(\"GWindow.setRegionAlignment(\\\"0x%lX\\\", \\\"%s\\\", \\\"%s\\\")\",\n           (long) gw, region, align);\n}\n\nvoid addToRegionOp(GWindow gw, GObject gobj, string region) {\n   putPipe(\"GWindow.addToRegion(\\\"0x%lX\\\", \\\"0x%lX\\\", \\\"%s\\\")\",\n           (long) gw, (long) gobj, region);\n}\n\ndouble getScreenWidthOp(void) {\n   putPipe(\"GWindow.getScreenWidth()\");\n   return getDouble();\n}\n\ndouble getScreenHeightOp(void) {\n   putPipe(\"GWindow.getScreenHeight()\");\n   return getDouble();\n}\n\nvoid exitGraphicsOp(void) {\n   putPipe(\"GWindow.exitGraphics()\");\n   exit(0);\n}\n\n/* GTimer operations */\n\nvoid createTimerOp(GTimer timer, double delay) {\n   string id;\n\n   id = getId(timer);\n   putHashMap(timerTable, id, timer);\n   freeBlock(id);\n   putPipe(\"GTimer.create(\\\"0x%lX\\\", %g)\", (long) timer, delay);\n}\n\nvoid deleteTimerOp(GTimer timer) {\n   string id;\n\n   id = getId(timer);\n   putHashMap(timerTable, id, timer);\n   freeBlock(id);\n   putPipe(\"GTimer.deleteTimer(\\\"0x%lX\\\")\", (long) timer);\n}\n\nvoid startTimerOp(GTimer timer) {\n   putPipe(\"GTimer.startTimer(\\\"0x%lX\\\")\", (long) timer);\n}\n\nvoid stopTimerOp(GTimer timer) {\n   putPipe(\"GTimer.stopTimer(\\\"0x%lX\\\")\", (long) timer);\n}\n\nvoid pauseOp(double milliseconds) {\n   putPipe(\"GTimer.pause(%g)\", milliseconds);\n   getStatus();\n}\n\n/* Sound operations */\n\nvoid createSoundOp(Sound sound, string filename) {\n   filename = quotedString(filename);\n   putPipe(\"Sound.create(\\\"0x%lX\\\", %s)\", (long) sound, filename);\n   freeBlock(filename);\n   getStatus();\n}\n\nvoid deleteSoundOp(Sound sound) {\n   putPipe(\"Sound.delete(\\\"0x%lX\\\")\", (long) sound);\n}\n\nvoid playSoundOp(Sound sound) {\n   putPipe(\"Sound.play(\\\"0x%lX\\\")\", (long) sound);\n}\n\n/* GObject operations */\n\nvoid deleteGObjectOp(GObject gobj) {\n   putPipe(\"GObject.delete(\\\"0x%lX\\\")\", (long) gobj);\n}\n\nvoid setVisibleGObjectOp(GObject gobj, bool flag) {\n   putPipe(\"GObject.setVisible(\\\"0x%lX\\\", %s)\", (long) gobj, boolString(flag));\n}\n\nvoid setColorOp(GObject gobj, string color) {\n   putPipe(\"GObject.setColor(\\\"0x%lX\\\", \\\"%s\\\")\", (long) gobj, color);\n}\n\nvoid setLocationOp(GObject gobj, double x, double y) {\n   putPipe(\"GObject.setLocation(\\\"0x%lX\\\", %g, %g)\", (long) gobj, x, y);\n}\n\nvoid drawOp(GWindow gw, GObject gobj) {\n   putPipe(\"GWindow.draw(\\\"0x%lX\\\", \\\"0x%lX\\\")\", (long) gw, (long) gobj);\n}\n\nvoid setSizeOp(GObject gobj, double width, double height) {\n   putPipe(\"GObject.setSize(\\\"0x%lX\\\", %g, %g)\", (long) gobj, width, height);\n}\n\nvoid setFrameRectangleOp(GObject gobj, double x, double y,\n                                       double width, double height) {\n   putPipe(\"GArc.setFrameRectangle(\\\"0x%lX\\\", %g, %g, %g, %g)\",\n           (long) gobj, x, y, width, height);\n}\n\nvoid setFilledOp(GObject gobj, bool flag) {\n   putPipe(\"GObject.setFilled(\\\"0x%lX\\\", %s)\", (long) gobj, boolString(flag));\n}\n\nvoid setFillColorOp(GObject gobj, string color) {\n   putPipe(\"GObject.setFillColor(\\\"0x%lX\\\", \\\"%s\\\")\", (long) gobj, color);\n}\n\n/* GRect operations */\n\nvoid createGRectOp(GRect rect, double width, double height) {\n   initPlatform();\n   putPipe(\"GRect.create(\\\"0x%lX\\\", %g, %g)\", (long) rect, width, height);\n}\n\nvoid createGRoundRectOp(GRoundRect rect, double width, double height,\n                                         double corner) {\n   initPlatform();\n   putPipe(\"GRoundRect.create(\\\"0x%lX\\\", %g, %g, %g)\", (long) rect,\n                                                       width, height, corner);\n}\n\nvoid createG3DRectOp(G3DRect rect, double width, double height, bool raised) {\n   initPlatform();\n   putPipe(\"G3DRect.create(\\\"0x%lX\\\", %g, %g, %s)\", (long) rect, width, height,\n                                                    boolString(raised));\n}\n\nvoid setRaisedOp(G3DRect rect, bool raised) {\n   putPipe(\"G3DRect.setRaised(\\\"0x%lX\\\", %s)\", (long) rect,\n                                               boolString(raised));\n}\n\n/* GOval operations */\n\nvoid createGOvalOp(GOval oval, double width, double height) {\n   initPlatform();\n   putPipe(\"GOval.create(\\\"0x%lX\\\", %g, %g)\", (long) oval, width, height);\n}\n\n/* GLine operations */\n\nvoid createGLineOp(GLine line, double x0, double y0, double x1, double y1) {\n   initPlatform();\n   putPipe(\"GLine.create(\\\"0x%lX\\\", %g, %g, %g, %g)\", (long) line,\n                                                      x0, y0, x1, y1);\n}\n\nvoid setStartPointOp(GLine line, double x, double y) {\n   putPipe(\"GLine.setStartPoint(\\\"0x%lX\\\", %g, %g)\", (long) line, x, y);\n}\n\nvoid setEndPointOp(GLine line, double x, double y) {\n   putPipe(\"GLine.setEndPoint(\\\"0x%lX\\\", %g, %g)\", (long) line, x, y);\n}\n\n/* GArc operations */\n\nvoid createGArcOp(GArc arc, double width, double height,\n                            double start, double sweep) {\n   putPipe(\"GArc.create(\\\"0x%lX\\\", %g, %g, %g, %g)\", (long) arc, width, height,\n                                                     start, sweep);\n}\n\nvoid setStartAngleOp(GArc arc, double angle) {\n   putPipe(\"GArc.setStartAngle(\\\"0x%lX\\\", %g)\", (long) arc, angle);\n}\n\nvoid setSweepAngleOp(GArc arc, double angle) {\n   putPipe(\"GArc.setSweepAngle(\\\"0x%lX\\\", %g)\", (long) arc, angle);\n}\n\n/* GLabel operations */\n\nvoid createGLabelOp(GLabel label, string str) {\n   str = quotedString(str);\n   putPipe(\"GLabel.create(\\\"0x%lX\\\", %s)\", (long) label, str);\n   freeBlock(str);\n}\n\nvoid setFontOp(GLabel label, string font) {\n   putPipe(\"GLabel.setFont(\\\"0x%lX\\\", \\\"%s\\\")\", (long) label, font);\n}\n\nvoid setLabelOp(GLabel label, string str) {\n   str = quotedString(str);\n   putPipe(\"GLabel.setLabel(\\\"0x%lX\\\", %s)\", (long) label, str);\n   freeBlock(str);\n}\n\ndouble getFontAscentOp(GLabel label) {\n   putPipe(\"GLabel.getFontAscent(\\\"0x%lX\\\")\", (long) label);\n   return getDouble();\n}\n\ndouble getFontDescentOp(GLabel label) {\n   putPipe(\"GLabel.getFontDescent(\\\"0x%lX\\\")\", (long) label);\n   return getDouble();\n}\n\nGDimension getGLabelSizeOp(GLabel label) {\n   putPipe(\"GLabel.getGLabelSize(\\\"0x%lX\\\")\", (long) label);\n   return getGDimension();\n}\n\n/* GImage operations */\n\nGDimension createGImageOp(GObject gobj, string filename) {\n   filename = quotedString(filename);\n   putPipe(\"GImage.create(\\\"0x%lX\\\", %s)\", (long) gobj, filename);\n   freeBlock(filename);\n   return getGDimension();\n}\n\n/* GPolygon operations */\n\nvoid createGPolygonOp(GPolygon poly) {\n   putPipe(\"GPolygon.create(\\\"0x%lX\\\")\", (long) poly);\n}\n\nvoid addVertexOp(GPolygon poly, double x, double y) {\n   putPipe(\"GPolygon.addVertex(\\\"0x%lX\\\", %g, %g)\", (long) poly, x, y);\n}\n\n/* GCompound operations */\n\nvoid createGCompoundOp(GCompound compound) {\n   initPlatform();\n   putPipe(\"GCompound.create(\\\"0x%lX\\\")\", (long) compound);\n}\n\nvoid addOp(GCompound compound, GObject gobj) {\n   putPipe(\"GCompound.add(\\\"0x%lX\\\", \\\"0x%lX\\\")\", (long) compound,\n                                                  (long) gobj);\n}\n\nvoid removeOp(GObject gobj) {\n   putPipe(\"GObject.remove(\\\"0x%lX\\\")\", (long) gobj);\n}\n\nvoid sendForwardOp(GObject gobj) {\n   putPipe(\"GObject.sendForward(\\\"0x%lX\\\")\", (long) gobj);\n}\n\nvoid sendToFrontOp(GObject gobj) {\n   putPipe(\"GObject.sendToFront(\\\"0x%lX\\\")\", (long) gobj);\n}\n\nvoid sendBackwardOp(GObject gobj) {\n   putPipe(\"GObject.sendBackward(\\\"0x%lX\\\")\", (long) gobj);\n}\n\nvoid sendToBackOp(GObject gobj) {\n   putPipe(\"GObject.sendToBack(\\\"0x%lX\\\")\", (long) gobj);\n}\n\n/* GEvent operations */\n\nGEvent getNextEventOp(int mask) {\n   if (isEmpty(eventQueue)) {\n      putPipe(\"GEvent.getNextEvent(%d)\", mask);\n      getResult();\n      if (isEmpty(eventQueue)) return NULL;\n   }\n   return dequeue(eventQueue);\n}\n\nGEvent waitForEventOp(int mask) {\n   while (isEmpty(eventQueue)) {\n      putPipe(\"GEvent.waitForEvent(%d)\", mask);\n      getResult();\n   }\n   return dequeue(eventQueue);\n}\n\n/* GInteractor operations */\n\nvoid setActionCommandOp(GInteractor interactor, string cmd) {\n   cmd = quotedString(cmd);\n   putPipe(\"GInteractor.setActionCommand(\\\"0x%lX\\\", %s)\", (long) interactor,\n                                                          cmd);\n   freeBlock(cmd);\n}\n\nGDimension getSizeOp(GInteractor interactor) {\n   putPipe(\"GInteractor.getSize(\\\"0x%lX\\\")\", (long) interactor);\n   return getGDimension();\n}\n\nvoid createGButtonOp(GButton button, string label) {\n   registerSource(button);\n   label = quotedString(label);\n   putPipe(\"GButton.create(\\\"0x%lX\\\", %s)\", (long) button, label);\n   freeBlock(label);\n}\n\nvoid createGCheckBoxOp(GCheckBox chkbox, string label) {\n   registerSource(chkbox);\n   label = quotedString(label);\n   putPipe(\"GCheckBox.create(\\\"0x%lX\\\", %s)\", (long) chkbox, label);\n   freeBlock(label);\n}\n\nbool isSelectedOp(GCheckBox chkbox) {\n   putPipe(\"GCheckBox.isSelected(\\\"0x%lX\\\")\", (long) chkbox);\n   return getBool();\n}\n\nvoid setSelectedOp(GCheckBox chkbox, bool state) {\n   putPipe(\"GCheckBox.isSelected(\\\"0x%lX\\\", %s)\", (long) chkbox,\n                                                  boolString(state));\n}\n\nvoid createGSliderOp(GSlider slider, int min, int max, int value) {\n   registerSource(slider);\n   putPipe(\"GSlider.create(\\\"0x%lX\\\", %d, %d, %d)\", (long) slider,\n                                                    min, max, value);\n}\n\nint getValueOp(GSlider slider) {\n   putPipe(\"GSlider.getValue(\\\"0x%lX\\\")\", (long) slider);\n   return getInt();\n}\n\nvoid setValueOp(GSlider slider, int value) {\n   putPipe(\"GSlider.setValue(\\\"0x%lX\\\", %d)\", (long) slider, value);\n}\n\nvoid createGTextFieldOp(GTextField field, int nChars) {\n   registerSource(field);\n   putPipe(\"GTextField.create(\\\"0x%lX\\\", %d)\", (long) field, nChars);\n}\n\nstring getTextOp(GTextField field) {\n   putPipe(\"GTextField.getText(\\\"0x%lX\\\")\", (long) field);\n   return getResult();\n}\n\nvoid setTextOp(GTextField field, string str) {\n   str = quotedString(str);\n   putPipe(\"GTextField.getText(\\\"0x%lX\\\", %s)\", (long) field, str);\n   freeBlock(str);\n}\n\nvoid createGChooserOp(GChooser chooser) {\n   registerSource(chooser);\n   putPipe(\"GChooser.create(\\\"0x%lX\\\")\", (long) chooser);\n}\n\nvoid addItemOp(GChooser chooser, string item) {\n   item = quotedString(item);\n   putPipe(\"GChooser.addItem(\\\"0x%lX\\\", %s)\", (long) chooser, item);\n   freeBlock(item);\n}\n\nstring getSelectedItemOp(GChooser chooser) {\n   putPipe(\"GChooser.getSelectedItem(\\\"0x%lX\\\")\", (long) chooser);\n   return getResult();\n}\n\nvoid setSelectedItemOp(GChooser chooser, string item) {\n   item = quotedString(item);\n   putPipe(\"GChooser.setSelectedItem(\\\"0x%lX\\\", %s)\", (long) chooser, item);\n   freeBlock(item);\n}\n\nstatic void registerSource(GInteractor interactor) {\n   string id;\n\n   id = getId(interactor);\n   putHashMap(sourceTable, id, interactor);\n   freeBlock(id);\n}\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/platform.h",
    "content": "/*\n * File: platform.h\n * ----------------\n * This interface defines the platform-specific parts of the\n * <code>cslib</code> library.  This file is logically part of the\n * implementation and should not be interesting to clients.\n */\n\n#ifndef _platform_h\n#define _platform_h\n\n#include \"cslib.h\"\n#include \"gevents.h\"\n#include \"gobjects.h\"\n#include \"ginteractors.h\"\n#include \"gtypes.h\"\n#include \"gwindow.h\"\n#include \"sound.h\"\n\nvoid initPlatform(void);\nstring getId(void *ptr);\n\n// Implementing the console requires another process and a select call\n//\n// void clearConsoleOp(void);\n// void setConsoleFontOp(string font);\n// void setConsoleSizeOp(double width, double height);\n\n// string openFileDialogOp(string title, string mode, string path);\n\nvoid createGWindowOp(GWindow gw, double width, double height, GObject top);\nvoid deleteGWindowOp(GWindow gw);\nvoid closeGWindowOp(GWindow gw);\nvoid requestFocusOp(GWindow gw);\nvoid clearOp(GWindow gw);\nvoid repaintOp(GWindow gw);\nvoid setVisibleGWindowOp(GWindow gw, bool flag);\nvoid setResizableOp(GWindow gw, bool flag);\nvoid setWindowTitleOp(GWindow gw, string title);\nvoid setRegionAlignmentOp(GWindow gw, string region, string align);\nvoid addToRegionOp(GWindow gw, GObject gobj, string region);\ndouble getScreenWidthOp(void);\ndouble getScreenHeightOp(void);\nvoid exitGraphicsOp(void);\nGEvent getNextEventOp(int mask);\nGEvent waitForEventOp(int mask);\nvoid createTimerOp(GTimer timer, double delay);\nvoid deleteTimerOp(GTimer timer);\nvoid startTimerOp(GTimer timer);\nvoid stopTimerOp(GTimer timer);\nvoid pauseOp(double milliseconds);\nvoid createSoundOp(Sound sound, string filename);\nvoid deleteSoundOp(Sound sound);\nvoid playSoundOp(Sound sound);\n\nvoid deleteGObjectOp(GObject gobj);\n\nvoid createGRectOp(GRect rect, double width, double height);\n\nvoid createGRoundRectOp(GRoundRect rect, double width, double height,\n                                         double corner);\n\nvoid createG3DRectOp(G3DRect rect, double width, double height, bool raised);\nvoid setRaisedOp(G3DRect rect, bool raised);\n\nvoid createGOvalOp(GOval oval, double width, double height);\n\nvoid createGArcOp(GArc arc, double width, double height,\n                            double start, double sweep);\nvoid setStartAngleOp(GArc arc, double angle);\nvoid setSweepAngleOp(GArc arc, double angle);\nvoid setFrameRectangleOp(GArc arc, double x, double y,\n                                   double width, double height);\n\nvoid createGLineOp(GLine line, double x1, double y1, double x2, double y2);\nvoid setStartPointOp(GObject gobj, double x, double y);\nvoid setEndPointOp(GObject gobj, double x, double y);\n\nGDimension createGImageOp(GObject gobj, string filename);\n\nvoid createGPolygonOp(GPolygon poly);\nvoid addVertexOp(GPolygon poly, double x, double y);\n\nvoid setActionCommandOp(GInteractor interactor, string cmd);\nGDimension getSizeOp(GInteractor interactor);\nvoid createGButtonOp(GButton button, string label);\nvoid createGCheckBoxOp(GCheckBox chkbox, string label);\nbool isSelectedOp(GCheckBox chkbox);\nvoid setSelectedOp(GCheckBox chkbox, bool state);\nvoid createGSliderOp(GSlider slider, int min, int max, int value);\nint getValueOp(GSlider slider);\nvoid setValueOp(GSlider slider, int value);\nvoid createGTextFieldOp(GTextField field, int nChars);\nstring getTextOp(GTextField field);\nvoid setTextOp(GTextField field, string str);\nvoid createGChooserOp(GChooser chooser);\nvoid addItemOp(GChooser chooser, string item);\nstring getSelectedItemOp(GChooser chooser);\nvoid setSelectedItemOp(GChooser chooser, string item);\n\nvoid createGCompoundOp(GObject gobj);\nvoid addOp(GObject compound, GObject gobj);\nvoid removeOp(GObject gobj);\nvoid sendForwardOp(GObject gobj);\nvoid sendToFrontOp(GObject gobj);\nvoid sendBackwardOp(GObject gobj);\nvoid sendToBackOp(GObject gobj);\n\nvoid setVisibleGObjectOp(GObject gobj, bool flag);\nvoid setColorOp(GObject gobj, string color);\nvoid setLocationOp(GObject gobj, double x, double y);\nvoid setSizeOp(GObject gobj, double width, double height);\n\nvoid drawOp(GWindow gw, GObject gobj);\nvoid setFilledOp(GObject gobj, bool flag);\nvoid setFillColorOp(GObject gobj, string color);\n\nvoid createGLabelOp(GObject gobj, string label);\nvoid setFontOp(GObject gobj, string font);\nvoid setLabelOp(GObject gobj, string str);\ndouble getFontAscentOp(GObject gobj);\ndouble getFontDescentOp(GObject gobj);\nGDimension getGLabelSizeOp(GObject gobj);\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/posixthread.c",
    "content": "/*\n * File: posixthread.c\n * Last modified on Sat Aug 13 02:48:52 2011 by eroberts\n * -----------------------------------------------------\n * This file is the top-level file in the implementation of the\n * thread.h interface using POSIX threads.\n */\n\n#ifdef __unix__\n\n#define _GNU_SOURCE 1\n\n#include <stdio.h>\n#include <string.h>\n#include <pthread.h>\n#include <unistd.h>\n#include \"exception.h\"\n#include \"cslib.h\"\n#include \"strlib.h\"\n#include \"thread.h\"\n\n/* Account for differences in the various implementations */\n\n#if defined(__macosx__)\n   extern int sched_yield(void);\n#  define pthread_yield sched_yield\n#else\n#  if !defined(__linux__)\n#  define pthread_yield() usleep(1);\n#  endif\n#endif\n\n/* Constants */\n\n#define MAX_AUTOMATIC_THREAD_NAME 30\n\n/* Define the concrete type for a thread */\n\nstruct ThreadCDT {\n   pthread_t id;\n   string name;\n   bool terminated;\n   Lock lock;\n};\n\n/* Define the concrete type for a lock */\n\nstruct LockCDT {\n   pthread_mutex_t mutex;\n   pthread_cond_t condition;\n   bool exitFlag;\n   int depth;\n   Thread owner;\n};\n\n/* Define a data block as a wrapper for the thread data */\n\ntypedef struct {\n   proc fn;\n   void *data;\n   Thread thread;\n} *ThreadDataBlock;\n\n/* Static variables used to implement the package */\n\nstatic pthread_key_t threadKey;\nstatic pthread_key_t exceptionStackKey;\nstatic pthread_once_t onceOnly = PTHREAD_ONCE_INIT;\n\n/* Internal function prototypes */\n\nExceptionContextBlock *getThreadSpecificStack(void);\nvoid pushThreadSpecificStack(ExceptionContextBlock *cptr);\nvoid popThreadSpecificStack(void);\n\n/* Private function prototypes */\n\nstatic void *threadProc(void *arg);\nstatic void initThreadPackage(void);\nstatic void createKeys(void);\nstatic void popLockException(void);\n\n/* Section 1 - Functions on threads */\n\nThread forkThread(proc fn, void *data) {\n   Thread thread;\n   ThreadDataBlock dp;\n   pthread_attr_t attr;\n   int osErr;\n\n   initThreadPackage();\n   thread = newBlock(Thread);\n   thread->name = NULL;\n   thread->terminated = false;\n   thread->lock = newLock();\n   dp = newBlock(ThreadDataBlock);\n   dp->fn = fn;\n   dp->data = data;\n   dp->thread = thread;\n   pthread_attr_init(&attr);\n   pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);\n   osErr = pthread_create(&thread->id, &attr, threadProc, dp);\n   pthread_attr_destroy(&attr);\n   if (osErr != 0) error(\"forkThread: Can't create new thread\");\n   return thread;\n}\n\nvoid joinThread(Thread thread) {\n   if (thread->lock == NULL) {\n      error(\"joinThread: Can't join with the main thread\");\n   }\n   synchronized (thread->lock) {\n      while (!thread->terminated) {\n         waitThread(thread->lock);\n      }\n   }\n}\n\nvoid yield(void) {\n   pthread_yield();\n}\n\nThread getCurrentThread(void) {\n   Thread thread;\n\n   initThreadPackage();\n   thread = (Thread) pthread_getspecific(threadKey);\n   if (thread == NULL) {\n      thread = newBlock(Thread);\n      thread->name = \"Main\";\n      thread->id = 0;\n      pthread_setspecific(threadKey, thread);\n   }\n   return thread;\n}\n\nvoid setThreadName(Thread thread, string name) {\n   thread->name = name;\n}\n\nstring getThreadName(Thread thread) {\n   char buffer[MAX_AUTOMATIC_THREAD_NAME];\n\n   if (thread == NULL) return \"NULL\";\n   if (thread->name == NULL) {\n      sprintf(buffer, \"Thread<%lu>\", (long) thread->id);\n      thread->name = copyString(buffer);\n   }\n   return thread->name;\n}\n\n/* Section 2 - Functions on locks */\n\nLock newLock(void) {\n   Lock lock;\n   pthread_mutexattr_t attr;\n\n   lock = newBlock(Lock);\n   pthread_mutexattr_init(&attr);\n   pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);\n   pthread_mutex_init(&lock->mutex, &attr);\n   pthread_mutexattr_destroy(&attr);\n   pthread_cond_init(&lock->condition, NULL);\n   lock->owner = NULL;\n   lock->exitFlag = false;\n   lock->depth = 0;\n   return lock;\n}\n\nvoid waitThread(Lock lock) {\n   pthread_cond_wait(&lock->condition, &lock->mutex);\n}\n\nvoid signalThread(Lock lock) {\n   pthread_cond_broadcast(&lock->condition);\n}\n\nvoid lockInternal(Lock lock) {\n   pthread_mutex_lock(&lock->mutex);\n   if (lock->depth++ == 0) lock->owner = getCurrentThread();\n}\n\nvoid unlockInternal(Lock lock) {\n   if (--lock->depth == 0) lock->owner = NULL;\n   pthread_mutex_unlock(&lock->mutex);\n}\n\nbool startSync(Lock lock) {\n   ExceptionContextBlock *xcb;\n\n   if (lock->exitFlag) {\n      lock->exitFlag = false;\n      popLockException();\n      return false;\n   }\n   lockInternal(lock);\n   xcb = newBlock(ExceptionContextBlock *);\n   xcb->lock = lock;\n   pushExceptionStack(xcb);\n   return true;\n}\n\nvoid endSync(Lock lock) {\n   lock->exitFlag = true;\n}\n\nThread getOwner(Lock lock) {\n   return lock->owner;\n}\n\n/* Section 3 -- Internal interface to the exception module */\n\nExceptionContextBlock *getThreadSpecificStack(void) {\n   ExceptionContextBlock *stack;\n\n   initThreadPackage();\n   stack = (ExceptionContextBlock *) pthread_getspecific(exceptionStackKey);\n   while (stack != NULL && stack->lock != NULL) {\n      popLockException();\n      stack = stack->link;\n   }\n   return stack;\n}\n\nvoid pushThreadSpecificStack(ExceptionContextBlock *cptr) {\n   ExceptionContextBlock *stack;\n\n   initThreadPackage();\n   stack = (ExceptionContextBlock *) pthread_getspecific(exceptionStackKey);\n   cptr->link = stack;\n   pthread_setspecific(exceptionStackKey, cptr);\n}\n\nvoid popThreadSpecificStack(void) {\n   ExceptionContextBlock *stack;\n\n   stack = getThreadSpecificStack();\n   if (stack != NULL) stack = stack->link;\n   pthread_setspecific(exceptionStackKey, stack);\n}\n\n/* Private functions */\n\nstatic void *threadProc(void *arg) {\n   ThreadDataBlock dp;\n\n   initThreadPackage();\n   dp = (ThreadDataBlock) arg;\n   pthread_setspecific(threadKey, dp->thread);\n   dp->fn(dp->data);\n   synchronized (dp->thread->lock) {\n      dp->thread->terminated = true;\n      signalThread(dp->thread->lock);\n   }\n   return NULL;\n}\n\nstatic void initThreadPackage(void) {\n   pthread_once(&onceOnly, createKeys);\n}\n\nstatic void createKeys(void) {\n   pthread_key_create(&threadKey, NULL);\n   pthread_key_create(&exceptionStackKey, NULL);\n}\n\nstatic Thread findThread(pthread_t id) {\n   Thread thread;\n\n   initThreadPackage();\n   thread = (Thread) pthread_getspecific(threadKey);\n   if (thread == NULL) {\n      thread = newBlock(Thread);\n      thread->id = id;\n      thread->name = NULL;\n      pthread_setspecific(threadKey, thread);\n   }\n   return thread;\n}\n\nstatic void popLockException(void) {\n   ExceptionContextBlock *stack;\n\n   initThreadPackage();\n   stack = (ExceptionContextBlock *) pthread_getspecific(exceptionStackKey);\n   if (stack == NULL) error(\"popLockException: Internal error\");\n   pthread_setspecific(exceptionStackKey, stack->link);\n   unlockInternal((Lock) stack->lock);\n   freeBlock(stack);\n}\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/pqueue.c",
    "content": "/*\n * File: pqueue.c\n * Last modified on Wed Dec 12 08:08:03 2012 by eroberts\n * -----------------------------------------------------\n * This file implements the pqueue.h interface using a heap structure.\n */\n\n#include <stdio.h>\n#include <limits.h>\n#include \"cslib.h\"\n#include \"generic.h\"\n#include \"pqueue.h\"\n#include \"unittest.h\"\n#include \"vector.h\"\n\n/*\n * Constant: INITIAL_CAPACITY\n * --------------------------\n * This constant defines the initial capacity of the heap that implements\n * the priority queue. Any positive value will work correctly, although\n * changing this parameter can affect performance.  Making this value\n * larger postpones the first reallocation but causes priority queues\n * to consume more memory.\n */\n\n#define INITIAL_CAPACITY 10\n\n/*\n * Type: HeapEntry\n * ---------------\n * This type defines the individual elements in the heap.\n */\n\ntypedef struct {\n   void *value;\n   double priority;\n   long sequence;\n} HeapEntry;\n\n/*\n * Type: PriorityQueueCDT\n * ----------------------\n * This type defines the concrete representation of a priority queue.\n * In this representation, the queue is a dynamic array organized as\n * a \"heap.\"\n */\n\nstruct PriorityQueueCDT {\n   HeapEntry *heap;\n   int capacity;\n   int count;\n   int back;\n   long sequence;\n};\n\n/* Function prototypes */\n\nstatic void expandCapacity(PriorityQueue pq);\nstatic bool takesPriority(PriorityQueue pq, int i1, int i2);\nstatic void swapHeapEntries(PriorityQueue pq, int i1, int i2);\n\n/* Exported entries */\n\nPriorityQueue newPriorityQueue(void) {\n   PriorityQueue pq;\n\n   pq = newBlock(PriorityQueue);\n   pq->count = 0;\n   pq->capacity = INITIAL_CAPACITY;\n   pq->heap = newArray(INITIAL_CAPACITY, HeapEntry);\n   pq->sequence = 0;\n   return pq;\n}\n\nvoid freePriorityQueue(PriorityQueue pq) {\n   freeBlock(pq->heap);\n   freeBlock(pq);\n}\n\nvoid enqueuePriorityQueue(PriorityQueue pq, void *value, double priority) {\n   HeapEntry *hp;\n   int index, parent;\n\n   if (pq->count == pq->capacity) expandCapacity(pq);\n   index = pq->count++;\n   hp = &pq->heap[index];\n   hp->value = value;\n   hp->priority = priority;\n   hp->sequence = pq->sequence++;\n   if (index == 0 || takesPriority(pq, pq->back, index)) pq->back = index;\n   while (index > 0) {\n      parent = (index - 1) / 2;\n      if (takesPriority(pq, parent, index)) break;\n      swapHeapEntries(pq, parent, index);\n      index = parent;\n   }\n}\n\nvoid *dequeuePriorityQueue(PriorityQueue pq) {\n   int index, left, right, child;\n   bool wasBack;\n   void *value;\n\n   if (pq->count == 0) error(\"dequeue: queue is empty\");\n   pq->count--;\n   wasBack = (pq->back == pq->count);\n   value = pq->heap[0].value;\n   swapHeapEntries(pq, 0, pq->count);\n   index = 0;\n   while (true) {\n      left = 2 * index + 1;\n      right = 2 * index + 2;\n      if (left >= pq->count) break;\n      child = left;\n      if (right < pq->count && takesPriority(pq, right, left)) child = right;\n      if (takesPriority(pq, index, child)) break;\n      swapHeapEntries(pq, index, child);\n      index = child;\n   }\n   if (wasBack) pq->back = index;\n   return value;\n}\n\nvoid *peekPriorityQueue(PriorityQueue pq) {\n   if (pq->count == 0) error(\"peek: queue is empty\");\n   return pq->heap[0].value;\n}\n\ndouble peekPriority(PriorityQueue pq) {\n   if (pq->count == 0) error(\"peek: queue is empty\");\n   return pq->heap[0].priority;\n}\n\nbool isEmptyPriorityQueue(PriorityQueue pq) {\n   return pq->count == 0;\n}\n\nint sizePriorityQueue(PriorityQueue pq) {\n   return pq->count;\n}\n\nvoid clearPriorityQueue(PriorityQueue pq) {\n   clear(pq->heap);\n}\n\nPriorityQueue clonePriorityQueue(PriorityQueue pq) {\n   PriorityQueue newpq;\n   int i;\n\n   newpq = newBlock(PriorityQueue);\n   newpq->count = pq->count;\n   newpq->capacity = pq->capacity;\n   newpq->sequence = pq->sequence;\n   newpq->heap = newArray(pq->capacity, HeapEntry);\n   for (i = 0; i < pq->count; i++) {\n      newpq->heap[i] = pq->heap[i];\n   }\n   return newpq;\n}\n\n/* Private functions */\n\nstatic void expandCapacity(PriorityQueue pq) {\n   HeapEntry *heap;\n   int i, newCapacity;\n\n   newCapacity = pq->capacity * 2;\n   heap = newArray(newCapacity, HeapEntry);\n   for (i = 0; i < pq->count; i++) {\n      heap[i] = pq->heap[i];\n   }\n   freeBlock(pq->heap);\n   pq->heap = heap;\n   pq->capacity = newCapacity;\n}\n\nstatic bool takesPriority(PriorityQueue pq, int i1, int i2) {\n   double p1, p2;\n\n   p1 = pq->heap[i1].priority;\n   p2 = pq->heap[i2].priority;\n   if (p1 < p2) return true;\n   if (p1 > p2) return false;\n   return pq->heap[i1].sequence < pq->heap[i2].sequence;\n}\n\nstatic void swapHeapEntries(PriorityQueue pq, int i1, int i2) {\n   HeapEntry tmp;\n\n   tmp = pq->heap[i1];\n   pq->heap[i1] = pq->heap[i2];\n   pq->heap[i2] = tmp;\n}\n\n/**********************************************************************/\n/* Unit test for the pqueue module                                    */\n/**********************************************************************/\n\n#ifndef _NOTEST_\n\n/* Unit test */\n\nvoid testPriorityQueueModule(void) {\n   PriorityQueue pq, pq2;\n\n   trace(pq = newPriorityQueue());\n   test(size(pq), 0);\n   test(isEmpty(pq), true);\n   trace(enqueue(pq, \"A\", 1));\n   test(isEmpty(pq), false);\n   test(peek(pq), \"A\");\n   trace(enqueue(pq, \"D\", 3));\n   trace(enqueue(pq, \"C\", 2));\n   trace(enqueue(pq, \"B\", 1));\n   test(peek(pq), \"A\");\n   test(size(pq), 4);\n   trace(pq2 = clone(pq));\n   test(dequeue(pq), \"A\");\n   test(peek(pq), \"B\");\n   test(dequeue(pq), \"B\");\n   test(dequeue(pq), \"C\");\n   test(dequeue(pq), \"D\");\n   test(isEmpty(pq), true);\n   test(dequeue(pq2), \"A\");\n   test(dequeue(pq2), \"B\");\n   test(dequeue(pq2), \"C\");\n   test(dequeue(pq2), \"D\");\n}\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/pqueue.h",
    "content": "/*\n * File: pqueue.h\n * --------------\n * This interface defines a queue abstraction that dequeues elements\n * in priority order.  In keeping with traditional English usage,\n * lower priority numbers have higher priority, so that priority 1\n * items appear before priority 2 items.\n */\n\n#ifndef _pqueue_h\n#define _pqueue_h\n\n#include \"cslib.h\"\n#include \"generic.h\"\n\n/*\n * Type: PriorityQueue\n * -------------------\n * This type defines the abstract type for a queue.\n */\n\ntypedef struct PriorityQueueCDT *PriorityQueue;\n\n/*\n * Function: newPriorityQueue\n * Usage: pq = newPriorityQueue();\n * -------------------------------\n * Allocates and returns an empty priority queue.\n */\n\nPriorityQueue newPriorityQueue(void);\n\n/*\n * Function: freePriorityQueue\n * Usage: freePriorityQueue(pq);\n * -----------------------------\n * Frees the storage associated with the specified priority queue.\n */\n\nvoid freePriorityQueue(PriorityQueue pq);\n\n/*\n * Function: enqueue\n * Usage: enqueue(pq, value, priority);\n * ------------------------------------\n * Adds a value to the queue in the order specified by <code>priority</code>.\n * In C, the <code>priority</code> argument must have type <code>double</code>,\n * which means that constants used to express priorities in the call to the\n * generic <code>enqueue</code> function must include a decimal point.\n */\n\nvoid enqueuePriorityQueue(PriorityQueue pq, void *value, double priority);\n\n/*\n * Function: dequeue\n * Usage: value = dequeue(pq);\n * ---------------------------\n * Removes the data value at the head of the queue and returns it\n * to the client.  If the queue is empty, <code>dequeue</code> calls\n * <code>error</code> with an appropriate message.\n */\n\nvoid *dequeuePriorityQueue(PriorityQueue pq);\n\n/*\n * Function: peek\n * Usage: value = peek(pq);\n * ------------------------\n * Returns the data value at the head of the queue without removing it.\n * If the queue is empty, <code>peek</code> calls <code>error</code> with\n * an appropriate message.\n */\n\nvoid *peekPriorityQueue(PriorityQueue pq);\n\n/*\n * Function: peekPriority\n * Usage: priority = peekPriority(pq);\n * -----------------------------------\n * Returns the priority of the first entry in the queue, without\n * removing it.\n */\n\ndouble peekPriority(PriorityQueue pq);\n\n/*\n * Function: isEmpty\n * Usage: if (isEmpty(pq)) . . .\n * -----------------------------\n * Tests whether the queue is empty.\n */\n\nbool isEmptyPriorityQueue(PriorityQueue pq);\n\n/*\n * Function: size\n * Usage: n = size(pq);\n * --------------------\n * Returns the number of values in the queue.\n */\n\nint sizePriorityQueue(PriorityQueue pq);\n\n/*\n * Function: clear\n * Usage: clear(pq);\n * -----------------\n * Removes all values from the queue.\n */\n\nvoid clearPriorityQueue(PriorityQueue pq);\n\n/*\n * Function: clone\n * Usage: newpq = clone(pq);\n * -------------------------\n * Creates a copy of the priority queue.  The <code>clone</code> function\n * copies only the first level of the structure and does not copy the\n * individual elements.\n */\n\nPriorityQueue clonePriorityQueue(PriorityQueue pq);\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/private/randompatch.h",
    "content": "/*\n * File: private/randompatch.h\n * ---------------------------\n * This file patches the implementation of the random number library\n * to avoid some serious bugs in standard implementations of rand,\n * particularly on Mac OS X.  It also includes a hack to set the\n * seed from the RANDOM_SEED environment variable, which makes it\n * possible to produce repeatable figures.\n */\n\n/*\n * Implementation notes: rand, srand\n * ---------------------------------\n * To ensure that this package works the same way on all platforms,\n * this file completely reimplements the rand and srand methods.  The\n * algorithm is a conventional linear congruential generator with the\n * parameters used in GNU's gclib.  RAND_MAX for this implementation\n * is 2147483647 (2^31 - 1).\n */\n\n#define MULTIPLIER 1103515245\n#define OFFSET 12345\n\nstatic int _seed = 1;\n\n#undef rand\n#define rand() ((_seed = MULTIPLIER * _seed + OFFSET) & 0x7FFFFFFF)\n\n#undef srand\n#define srand(seed) (_seed = (int) seed, _seed = (_seed <= 0) ? 1 : _seed)\n\n#undef RAND_MAX\n#define RAND_MAX 2147483647\n\n/*\n * Implementation notes: Windows patch\n * -----------------------------------\n * On some versions of Windows, the time function is too coarse to use\n * as a random seed.  On those versions, this definition substitutes the\n * GetTickCount function.\n */\n\n#if defined (_MSC_VER) && (_MSC_VER >= 1200)\n#  include <windows.h>\n#  define time(dummy) (GetTickCount())\n#endif\n\n#ifdef __APPLE__\n\n   static time_t patchedTime(time_t *dummy) {\n      char *str = getenv(\"RANDOM_SEED\");\n      if (str == NULL) {\n         return time(NULL);\n      } else {\n         return atoi(str);\n      }\n   }\n\n#  define time(dummy) patchedTime(dummy)\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/private/tokenpatch.h",
    "content": "/*\n * File: tokenpatch.h\n * ------------------\n * This file renames TokenType and WORD to avoid conflict with the\n * <windows.h> header.\n */\n\n#ifdef _MSC_VER\n#  define TokenType TokenTypeT\n#  define WORD WORD_TC\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/queue.c",
    "content": "/*\n * File: queue.c\n * Last modified on Sun Dec 16 14:21:51 2012 by eroberts\n * -----------------------------------------------------\n * This interface implements the queue.h interface, which implements\n * first-in/first-out queues using a linked list.\n */\n\n#include <stdio.h>\n#include \"cslib.h\"\n#include \"generic.h\"\n#include \"queue.h\"\n#include \"unittest.h\"\n\n/*\n * Type: Cell\n * ----------\n * This type defines the cells used for the linked list that stores\n * the items in the queue.\n */\n\ntypedef struct Cell {\n   void *value;\n   struct Cell *link;\n} Cell;\n\n/*\n * Type: QueueCDT\n * --------------\n * This type defines the concrete representation of a queue.\n * In this representation, the queue is a linked list of cells.\n * The next item to be dequeued is found at the cell addressed\n * by the head field.  The tail field points to the last element\n * in the queue, which allows enqueue to operate in constant time.\n * The structure includes a count field to ensure that the size\n * method runs in constant time.\n */\n\nstruct QueueCDT {\n   Cell *head;\n   Cell *tail;\n   int count;\n};\n\n/* Exported entries */\n\nQueue newQueue(void) {\n   Queue queue;\n\n   queue = newBlock(Queue);\n   queue->head = NULL;\n   queue->tail = NULL;\n   queue->count = 0;\n   return queue;\n}\n\nvoid freeQueue(Queue queue) {\n   Cell *cp, *next;\n\n   cp = queue->head;\n   while (cp != NULL) {\n      next = cp->link;\n      freeBlock(cp);\n      cp = next;\n   }\n   freeBlock(queue);\n}\n\nvoid enqueueQueue(Queue queue, void *value) {\n   Cell *cp;\n\n   cp = newBlock(Cell *);\n   cp->value = value;\n   cp->link = NULL;\n   if (queue->tail == NULL) {\n      queue->head = cp;\n      queue->tail = cp;\n   } else {\n      queue->tail->link = cp;\n   }\n   queue->tail = cp;\n   queue->count++;\n}\n\nvoid *dequeueQueue(Queue queue) {\n   void *result;\n   Cell *cp;\n\n   if (queue->count == 0) error(\"dequeue: queue is empty\");\n   cp = queue->head;\n   result = cp->value;\n   queue->head = cp->link;\n   if (queue->head == NULL) queue->tail = NULL;\n   queue->count--;\n   freeBlock(cp);\n   return result;\n}\n\nvoid *peekQueue(Queue queue) {\n   if (queue->count == 0) error(\"peek: queue is empty\");\n   return queue->head->value;\n}\n\nbool isEmptyQueue(Queue queue) {\n   return queue->count == 0;\n}\n\nint sizeQueue(Queue queue) {\n   return queue->count;\n}\n\nvoid clearQueue(Queue queue) {\n   while (queue->count) dequeue(queue);\n}\n\nQueue cloneQueue(Queue queue) {\n   Queue newqueue;\n   Cell *cp;\n\n   newqueue = newQueue();\n   for (cp = queue->head; cp != NULL; cp = cp->link) {\n      enqueueQueue(newqueue, cp->value);\n   }\n   return newqueue;\n}\n\n/**********************************************************************/\n/* Unit test for the queue module                                     */\n/**********************************************************************/\n\n#ifndef _NOTEST_\n\n/* Unit test */\n\nvoid testQueueModule(void) {\n   Queue queue, queue2;\n\n   trace(queue = newQueue());\n   test(isEmpty(queue), true);\n   trace(enqueue(queue, \"A\"));\n   test(isEmpty(queue), false);\n   trace(enqueue(queue, \"B\"));\n   trace(enqueue(queue, \"C\"));\n   test(peek(queue), \"A\");\n   test(dequeue(queue), \"A\");\n   trace(enqueue(queue, \"D\"));\n   test(size(queue), 3);\n   trace(queue2 = clone(queue));\n   test(dequeue(queue), \"B\");\n   test(dequeue(queue), \"C\");\n   test(dequeue(queue), \"D\");\n   test(isEmpty(queue), true);\n   testError(dequeue(queue));\n   trace(enqueue(queue, \"E\"));\n   trace(enqueue(queue, \"F\"));\n   test(dequeue(queue), \"E\");\n   test(dequeue(queue), \"F\");\n   test(dequeue(queue2), \"B\");\n   test(dequeue(queue2), \"C\");\n   test(dequeue(queue2), \"D\");\n}\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/queue.h",
    "content": "/*\n * File: queue.h\n * -------------\n * This interface defines a queue abstraction with first-in/first-out\n * semantics.\n */\n\n#ifndef _queue_h\n#define _queue_h\n\n#include \"cslib.h\"\n#include \"generic.h\"\n\n/*\n * Type: Queue\n * -----------\n * This type defines the abstract type for a queue.\n */\n\ntypedef struct QueueCDT *Queue;\n\n/*\n * Function: newQueue\n * Usage: queue = newQueue();\n * --------------------------\n * Allocates and returns an empty queue.\n */\n\nQueue newQueue(void);\n\n/*\n * Function: freeQueue\n * Usage: freeQueue(queue);\n * ------------------------\n * Frees the storage associated with the specified queue.\n */\n\nvoid freeQueue(Queue queue);\n\n/*\n * Function: enqueue\n * Usage: enqueue(queue, element);\n * -------------------------------\n * Adds an element to the end of the queue.\n */\n\nvoid enqueueQueue(Queue queue, void *element);\n\n/*\n * Function: dequeue\n * Usage: element = dequeue(queue);\n * --------------------------------\n * Removes the data value at the head of the queue and returns it\n * to the client.  If the queue is empty, <code>dequeue</code> calls\n * <code>error</code> with an appropriate message.\n */\n\nvoid *dequeueQueue(Queue queue);\n\n/*\n * Function: peek\n * Usage: element = peek(queue);\n * -----------------------------\n * Returns the data value at the head of the queue without removing it.\n * If the queue is empty, <code>peek</code> calls <code>error</code> with\n * an appropriate message.\n */\n\nvoid *peekQueue(Queue queue);\n\n/*\n * Function: isEmpty\n * Usage: if (isEmpty(queue)) . . .\n * --------------------------------\n * Tests whether the queue is empty.\n */\n\nbool isEmptyQueue(Queue queue);\n\n/*\n * Function: size\n * Usage: n = size(queue);\n * -----------------------\n * Returns the number of elements in the queue.\n */\n\nint sizeQueue(Queue queue);\n\n/*\n * Function: clear\n * Usage: clear(queue);\n * --------------------\n * Removes all elements from the queue.\n */\n\nvoid clearQueue(Queue queue);\n\n/*\n * Function: clone\n * Usage: newqueue = clone(queue);\n * -------------------------------\n * Creates a copy of the queue.  The <code>clone</code> function copies\n * only the first level of the structure and does not copy the individual\n * elements.\n */\n\nQueue cloneQueue(Queue queue);\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/random.c",
    "content": "/*\n * File: random.c\n * Last modified on Wed Dec 19 14:49:19 2012 by eroberts\n * -----------------------------------------------------\n * This file implements the random.h interface.\n */\n\n#include <limits.h>\n#include <math.h>\n#include <stdio.h>\n#include <stdlib.h>\n#include <time.h>\n#include \"cslib.h\"\n#include \"random.h\"\n#include \"unittest.h\"\n#include \"private/randompatch.h\"\n\n/* Private function prototype */\n\nstatic void initRandomSeed(void);\n\n/*\n * Implementation notes: randomInteger\n * -----------------------------------\n * The code for randomInteger produces the number in four steps:\n *\n * 1. Generate a random real number d in the range [0 .. 1).\n * 2. Scale the number to the range [0 .. N) where N is the number of values.\n * 3. Translate the number so that the range starts at the appropriate value.\n * 4. Convert the result to the next lower integer.\n *\n * The implementation is complicated by the fact that both the expression\n *\n *     RAND_MAX + 1\n *\n * and the expression for the number of values\n *\n *     high - low + 1\n *\n * can overflow the integer range.  These calculations must therefore be\n * performed using doubles instead of ints.\n */\n\nint randomInteger(int low, int high) {\n   double d, s;\n\n   initRandomSeed();\n   d = rand() / ((double) RAND_MAX + 1);\n   s = d * ((double) high - low + 1);\n   return (int) (floor(low + s));\n}\n\n/*\n * Implementation notes: randomReal\n * --------------------------------\n * The code for randomReal is similar to that for randomInteger,\n * without the final conversion step.\n */\n\ndouble randomReal(double low, double high) {\n   double d, s;\n\n   initRandomSeed();\n   d = rand() / ((double) RAND_MAX + 1);\n   s = d * (high - low);\n   return low + s;\n}\n\n/*\n * Implementation notes: randomChance\n * ----------------------------------\n * The code for randomChance calls randomReal(0, 1) and then checks\n * whether the result is less than the requested probability.\n */\n\nbool randomChance(double p) {\n   initRandomSeed();\n   return randomReal(0, 1) < p;\n}\n\n/*\n * Implementation notes: setRandomSeed\n * -----------------------------------\n * The setRandomSeed function simply forwards its argument to srand.\n * The call to initRandomSeed is required to set the initialized flag.\n */\n\nvoid setRandomSeed(int seed) {\n   initRandomSeed();\n   srand(seed);\n}\n\n/*\n * Implementation notes: initRandomSeed\n * ------------------------------------\n * The initRandomSeed function declares a static variable that keeps track\n * of whether the seed has been initialized.  The first time initRandomSeed\n * is called, initialized is false, so the seed is set to the current time.\n */\n\nstatic void initRandomSeed(void) {\n   static bool initialized = false;\n   if (!initialized) {\n      srand((int) time(NULL));\n      initialized = true;\n   }\n}\n\n/**********************************************************************/\n/* Unit test for the random module                                    */\n/**********************************************************************/\n\n#ifndef _NOTEST_\n\n/* Unit test */\n\n#define N_RANGES 20\n#define N_TRIALS 10000\n\n/* Private function prototypes */\n\nstatic bool randomIntegerSeemsReasonable(int low, int high);\nstatic bool randomRealSeemsReasonable(double low, double high);\nstatic bool randomChanceSeemsReasonable(double p);\nstatic bool hugeRangeSeemsReasonable();\n\nvoid testRandomModule(void) {\n   test(randomIntegerSeemsReasonable(0, 9), true);\n   test(randomIntegerSeemsReasonable(-10, 10), true);\n   test(randomRealSeemsReasonable(0.0, 10.0), true);\n   test(randomRealSeemsReasonable(-100.0, 100.0), true);\n   test(randomChanceSeemsReasonable(0.5), true);\n   test(randomChanceSeemsReasonable(0), true);\n   test(randomChanceSeemsReasonable(1), true);\n   test(randomChanceSeemsReasonable(0.9), true);\n   test(hugeRangeSeemsReasonable(), true);\n}\n\nstatic bool randomIntegerSeemsReasonable(int low, int high) {\n   int i, k, rangeSize, *counts, outcome;\n   bool ok;\n   double expected;\n\n   rangeSize = high - low + 1;\n   counts = newArray(rangeSize, int);\n   for (i = 0; i < rangeSize; i++) {\n      counts[i] = 0;\n   }\n   ok = true;\n   for (i = 0; ok && i < N_TRIALS; i++) {\n      k = randomInteger(low, high);\n      if (k < low || k > high) {\n         reportError(\"randomInteger returned out of range value %d\", k);\n         ok = false;\n      } else {\n         counts[k - low]++;\n      }\n   }\n   expected = (double) N_TRIALS / rangeSize;\n   for (i = 0; ok && i < rangeSize; i++) {\n      outcome = low + i;\n      if (counts[i] < 0.5 * expected) {\n         reportError(\"Low count for outcome %d\", outcome);\n         ok = false;\n      } else if (counts[i] > 1.5 * expected) {\n         reportError(\"High count for outcome %d\", outcome);\n         ok = false;\n      }\n   }\n   freeBlock(counts);\n   return ok;\n}\n\nstatic bool randomRealSeemsReasonable(double low, double high) {\n   int i, counts[N_RANGES];\n   double d, range, expected;\n   bool ok;\n\n   range = high - low;\n   for (i = 0; i < N_RANGES; i++) {\n      counts[i] = 0;\n   }\n   ok = true;\n   for (i = 0; ok && i < N_TRIALS; i++) {\n      d = randomReal(low, high);\n      if (d < low || d >= high) {\n         reportError(\"RandomReal returned out of range value %g\", d);\n         ok = false;\n      } else {\n         counts[(int)(N_RANGES * (d - low) / range)]++;\n      }\n   }\n   expected = (double) N_TRIALS / N_RANGES;\n   for (i = 0; ok && i < N_RANGES; i++) {\n      if (counts[i] < 0.5 * expected) {\n         reportError(\"Low count for outcome %d\", i);\n         ok = false;\n      } else if (counts[i] > 1.5 * expected) {\n         reportError(\"High count for outcome %d\", i);\n         ok = false;\n      }\n   }\n   return ok;\n}\n\nstatic bool randomChanceSeemsReasonable(double p) {\n   int i, hits;\n   double expected;\n\n   hits = 0;\n   for (i = 0; i < N_TRIALS; i++) {\n      if (randomChance(p)) hits++;\n   }\n   expected = p * N_TRIALS;\n   if (hits < 0.5 * expected || (p == 1.0 && hits != N_TRIALS)) {\n      reportError(\"Hit count low\");\n      return false;\n   } else if (hits > 1.5 * expected || (p == 0.0 && hits != 0)) {\n      reportError(\"Hit count high\");\n      return false;\n   }\n   return true;\n}\n\nstatic bool hugeRangeSeemsReasonable() {\n   unsigned maskHigh;\n   int i, k, rangeBit, rangesLeft;\n\n   maskHigh = ((unsigned) INT_MAX + 1) >> 1;\n   rangesLeft = 0xF;\n   for (i = 0; i < N_TRIALS && rangesLeft; i++) {\n      k = randomInteger(INT_MIN, INT_MAX);\n      if (k < 0) {\n         rangeBit = (k & maskHigh) ? 1 : 2;\n      } else {\n         rangeBit = (k & maskHigh) ? 8 : 4;\n      }\n      rangesLeft &= ~rangeBit;\n   }\n   if (rangesLeft & 1) {\n      reportError(\"No large negative values generated\");\n   }\n   if (rangesLeft & 2) {\n      reportError(\"No small negative values generated\");\n   }\n   if (rangesLeft & 4) {\n      reportError(\"No small positive values generated\");\n   }\n   if (rangesLeft & 8) {\n      reportError(\"No large positive values generated\");\n   }\n   return rangesLeft == 0;\n}\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/random.h",
    "content": "/*\n * File: random.h\n * --------------\n * This interface exports functions for generating pseudorandom numbers.\n */\n\n#ifndef _random_h\n#define _random_h\n\n#include \"cslib.h\"\n#include <stdlib.h>\n\n/*\n * Function: randomInteger\n * Usage: n = randomInteger(low, high);\n * ------------------------------------\n * Returns a random integer in the range <code>low</code> to\n * <code>high</code>, inclusive.\n */\n\nint randomInteger(int low, int high);\n\n/*\n * Function: randomReal\n * Usage: d = randomReal(low, high);\n * ---------------------------------\n * Returns a random real number in the half-open interval\n * [<code>low</code>&nbsp;..&nbsp;<code>high</code>).  A half-open\n * interval includes the first endpoint but not the second, which\n * means that the result is always greater than or equal to\n * <code>low</code> but strictly less than <code>high</code>.\n */\n\ndouble randomReal(double low, double high);\n\n/*\n * Function: randomChance\n * Usage: if (randomChance(p)) . . .\n * ---------------------------------\n * Returns <code>true</code> with the probability indicated by <code>p</code>.\n * The argument <code>p</code> must be a floating-point number between\n * 0 (never) and 1 (always).  For example, calling\n * <code>randomChance(.30)</code> returns <code>true</code> 30 percent\n * of the time.\n */\n\nbool randomChance(double p);\n\n/*\n * Function: setRandomSeed\n * Usage: setRandomSeed(seed);\n * ---------------------------\n * Sets the internal random number seed to the specified value.  You\n * can use this function to set a specific starting point for the\n * pseudorandom sequence or to ensure that program behavior is\n * repeatable during the debugging phase.\n */\n\nvoid setRandomSeed(int seed);\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/ref.c",
    "content": "/*\n * File: ref.c\n * Last modified on Mon Jan 14 11:36:55 2008 by eroberts\n * -----------------------------------------------------\n * This file implements the ref.h interface.\n */\n\n#include <stdio.h>\n#include \"cslib.h\"\n#include \"ref.h\"\n\n/*\n * Constant: REF_PASSWORD\n * ----------------------\n * This value is stored in the block to guard against pointer\n * errors.  If the value does not appear, the ref is not valid.\n */\n\n#define REF_PASSWORD 161803398UL\n\n/*\n * Type: RefType\n * -------------\n * This enumeration type defines ref type codes (with the suffix\n * RTC) for all the exported ref types.\n */\n\ntypedef enum {\n   IntRTC,\n   ShortRTC,\n   LongRTC,\n   FloatRTC,\n   DoubleRTC,\n   CharRTC,\n   BoolRTC,\n   UnsignedRTC,\n   UnsignedShortRTC,\n   UnsignedLongRTC,\n   UnsignedCharRTC\n} RefType;\n\n/*\n * Type: RefBlock\n * --------------\n * This tagged union type is used to store the ref and is used\n * to allow type-checking on the selector function.  The union\n * value must appear at the beginning of the block to maintain\n * the semantics.\n */\n\ntypedef struct {\n   union {\n      int intRep;\n      short shortRep;\n      long longRep;\n      float floatRep;\n      double doubleRep;\n      char charRep;\n      bool boolRep;\n      unsigned unsignedRep;\n      unsigned short unsignedShortRep;\n      unsigned long unsignedLongRep;\n      unsigned char unsignedCharRep;\n   } value;\n   unsigned long password;\n   RefType type;\n} RefBlock;\n\n/* Private function prototypes */\n\nstatic void refTypeCheck(void *ref, RefType type, string fn);\n\n/* Exported entries */\n\nvoid *newRefInt(int value) {\n   RefBlock *ref;\n\n   ref = (RefBlock *) getBlock(sizeof (RefBlock));\n   ref->value.intRep = value;\n   ref->password = REF_PASSWORD;\n   ref->type = IntRTC;\n   return ref;\n}\n\nvoid *newRefShort(short value) {\n   RefBlock *ref;\n\n   ref = (RefBlock *) getBlock(sizeof (RefBlock));\n   ref->value.shortRep = value;\n   ref->password = REF_PASSWORD;\n   ref->type = ShortRTC;\n   return ref;\n}\n\nvoid *newRefLong(long value) {\n   RefBlock *ref;\n\n   ref = (RefBlock *) getBlock(sizeof (RefBlock));\n   ref->value.longRep = value;\n   ref->password = REF_PASSWORD;\n   ref->type = LongRTC;\n   return ref;\n}\n\nvoid *newRefFloat(float value) {\n   RefBlock *ref;\n\n   ref = (RefBlock *) getBlock(sizeof (RefBlock));\n   ref->value.floatRep = value;\n   ref->password = REF_PASSWORD;\n   ref->type = FloatRTC;\n   return ref;\n}\n\nvoid *newRefDouble(double value) {\n   RefBlock *ref;\n\n   ref = (RefBlock *) getBlock(sizeof (RefBlock));\n   ref->value.doubleRep = value;\n   ref->password = REF_PASSWORD;\n   ref->type = DoubleRTC;\n   return ref;\n}\n\nvoid *newRefChar(char value) {\n   RefBlock *ref;\n\n   ref = (RefBlock *) getBlock(sizeof (RefBlock));\n   ref->value.charRep = value;\n   ref->password = REF_PASSWORD;\n   ref->type = CharRTC;\n   return ref;\n}\n\nvoid *newRefBool(bool value) {\n   RefBlock *ref;\n\n   ref = (RefBlock *) getBlock(sizeof (RefBlock));\n   ref->value.boolRep = value;\n   ref->password = REF_PASSWORD;\n   ref->type = BoolRTC;\n   return ref;\n}\n\nvoid *newRefUnsigned(unsigned value) {\n   RefBlock *ref;\n\n   ref = (RefBlock *) getBlock(sizeof (RefBlock));\n   ref->value.unsignedRep = value;\n   ref->password = REF_PASSWORD;\n   ref->type = UnsignedRTC;\n   return ref;\n}\n\nvoid *newRefUnsignedShort(unsigned short value) {\n   RefBlock *ref;\n\n   ref = (RefBlock *) getBlock(sizeof (RefBlock));\n   ref->value.unsignedShortRep = value;\n   ref->password = REF_PASSWORD;\n   ref->type = UnsignedShortRTC;\n   return ref;\n}\n\nvoid *newRefUnsignedLong(unsigned long value) {\n   RefBlock *ref;\n\n   ref = (RefBlock *) getBlock(sizeof (RefBlock));\n   ref->value.unsignedLongRep = value;\n   ref->password = REF_PASSWORD;\n   ref->type = UnsignedLongRTC;\n   return ref;\n}\n\nvoid *newRefUnsignedChar(unsigned char value) {\n   RefBlock *ref;\n\n   ref = (RefBlock *) getBlock(sizeof (RefBlock));\n   ref->value.unsignedCharRep = value;\n   ref->password = REF_PASSWORD;\n   ref->type = UnsignedCharRTC;\n   return ref;\n}\n\nint refToInt(void *ref) {\n   refTypeCheck(ref, IntRTC, \"refToInt\");\n   return *((int *) ref);\n}\n\nshort refToShort(void *ref) {\n   refTypeCheck(ref, ShortRTC, \"refToShort\");\n   return *((short *) ref);\n}\n\nlong refToLong(void *ref) {\n   refTypeCheck(ref, LongRTC, \"refToLong\");\n   return *((long *) ref);\n}\n\nfloat refToFloat(void *ref) {\n   refTypeCheck(ref, FloatRTC, \"refToFloat\");\n   return *((float *) ref);\n}\n\ndouble refToDouble(void *ref) {\n   refTypeCheck(ref, DoubleRTC, \"refToDouble\");\n   return *((double *) ref);\n}\n\nchar refToChar(void *ref) {\n   refTypeCheck(ref, CharRTC, \"refToChar\");\n   return *((char *) ref);\n}\n\nbool refToBool(void *ref) {\n   refTypeCheck(ref, BoolRTC, \"refToBool\");\n   return *((bool *) ref);\n}\n\nunsigned refToUnsigned(void *ref) {\n   refTypeCheck(ref, UnsignedRTC, \"refToUnsigned\");\n   return *((unsigned *) ref);\n}\n\nunsigned short refToUnsignedShort(void *ref) {\n   refTypeCheck(ref, UnsignedShortRTC, \"refToUnsignedShort\");\n   return *((unsigned short *) ref);\n}\n\nunsigned long refToUnsignedLong(void *ref) {\n   refTypeCheck(ref, UnsignedLongRTC, \"refToUnsignedLong\");\n   return *((unsigned long *) ref);\n}\n\nunsigned char refToUnsignedChar(void *ref) {\n   refTypeCheck(ref, UnsignedCharRTC, \"refToUnsignedChar\");\n   return *((unsigned char *) ref);\n}\n\nstatic void refTypeCheck(void *ref, RefType type, string fn) {\n   RefBlock *rp;\n\n   if (rp == NULL) error(\"%s: NULL argument\", fn);\n   rp = (RefBlock *) ref;\n   if (rp->password != REF_PASSWORD) {\n      error(\"%s: Illegal ref\", fn);\n   }\n   if (rp->type != type) {\n      error(\"%s: Ref type does not match\", fn);\n   }\n}\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/ref.h",
    "content": "/*\n * File: ref.h\n * -----------\n * This interface exports several simple functions for allocating\n * pointers to the atomic types.\n */\n\n#ifndef _ref_h\n#define _ref_h\n\n#include \"cslib.h\"\n\n/*\n * Function: newRefInt\n * Usage: ref = newRefInt(value);\n * ------------------------------\n * Allocates a ref pointing to the specified <code>int</code> value.\n */\n\nvoid *newRefInt(int value);\n\n/*\n * Function: newRefShort\n * Usage: ref = newRefShort(value);\n * --------------------------------\n * Allocates a ref pointing to the specified <code>short</code> value.\n */\n\nvoid *newRefShort(short value);\n\n/*\n * Function: newRefLong\n * Usage: ref = newRefLong(value);\n * -------------------------------\n * Allocates a ref pointing to the specified <code>long</code> value.\n */\n\nvoid *newRefLong(long value);\n\n/*\n * Function: newRefFloat\n * Usage: ref = newRefFloat(value);\n * --------------------------------\n * Allocates a ref pointing to the specified <code>float</code> value.\n */\n\nvoid *newRefFloat(float value);\n\n/*\n * Function: newRefDouble\n * Usage: ref = newRefDouble(value);\n * ---------------------------------\n * Allocates a ref pointing to the specified <code>double</code> value.\n */\n\nvoid *newRefDouble(double value);\n\n/*\n * Function: newRefChar\n * Usage: ref = newRefChar(value);\n * -------------------------------\n * Allocates a ref pointing to the specified <code>char</code> value.\n */\n\nvoid *newRefChar(char value);\n\n/*\n * Function: newRefBool\n * Usage: ref = newRefBool(value);\n * -------------------------------\n * Allocates a ref pointing to the specified <code>bool</code> value.\n */\n\nvoid *newRefBool(bool value);\n\n/*\n * Function: newRefUnsigned\n * Usage: ref = newRefUnsigned(value);\n * -----------------------------------\n * Allocates a ref pointing to the specified <code>unsigned</code> value.\n */\n\nvoid *newRefUnsigned(unsigned value);\n\n/*\n * Function: newRefUnsignedShort\n * Usage: ref = newRefUnsignedShort(value);\n * ----------------------------------------\n * Allocates a ref pointing to the specified <code>unsigned short</code> value.\n */\n\nvoid *newRefUnsignedShort(unsigned short value);\n\n/*\n * Function: newRefUnsignedLong\n * Usage: ref = newRefUnsignedLong(value);\n * ---------------------------------------\n * Allocates a ref pointing to the specified <code>unsigned long</code> value.\n */\n\nvoid *newRefUnsignedLong(unsigned long value);\n\n/*\n * Function: newRefUnsignedChar\n * Usage: ref = newRefUnsignedChar(value);\n * ---------------------------------------\n * Allocates a ref pointing to the specified <code>unsigned char</code> value.\n */\n\nvoid *newRefUnsignedChar(unsigned char value);\n\n/*\n * Part 2 -- Functions to dereference generic pointers\n * ---------------------------------------------------\n * These functions take a generic pointer of type void * and return\n * the value to which it points, which must be of the type indicated\n * by the function name.  For example, refToInt(ref) interprets ref\n * as a pointer to an int and returns the integer at that address.\n */\n\n/*\n * Function: refToInt\n * Usage: i = refToInt(ref);\n * -------------------------\n * Returns the <code>int</code> to which this reference points.\n */\n\nint refToInt(void *ref);\n\n/*\n * Function: refToShort\n * Usage: s = refToShort(ref);\n * ---------------------------\n * Returns the <code>short</code> to which this reference points.\n */\n\nshort refToShort(void *ref);\n\n/*\n * Function: refToLong\n * Usage: l = refToLong(ref);\n * --------------------------\n * Returns the <code>long</code> to which this reference points.\n */\n\nlong refToLong(void *ref);\n\n/*\n * Function: refToFloat\n * Usage: f = refToFloat(ref);\n * ---------------------------\n * Returns the <code>float</code> to which this reference points.\n */\n\nfloat refToFloat(void *ref);\n\n/*\n * Function: refToDouble\n * Usage: d = refToDouble(ref);\n * ----------------------------\n * Returns the <code>double</code> to which this reference points.\n */\n\ndouble refToDouble(void *ref);\n\n/*\n * Function: refToChar\n * Usage: c = refToChar(ref);\n * --------------------------\n * Returns the <code>char</code> to which this reference points.\n */\n\nchar refToChar(void *ref);\n\n/*\n * Function: refToBool\n * Usage: b = refToBool(ref);\n * --------------------------\n * Returns the <code>bool</code> to which this reference points.\n */\n\nbool refToBool(void *ref);\n\n/*\n * Function: refToUnsigned\n * Usage: u = refToUnsigned(ref);\n * ------------------------------\n * Returns the <code>unsigned</code> to which this reference points.\n */\n\nunsigned refToUnsigned(void *ref);\n\n/*\n * Function: refToUnsignedShort\n * Usage: us = refToUnsignedShort(ref);\n * ------------------------------------\n * Returns the <code>unsigned short</code> to which this reference points.\n */\n\nunsigned short refToUnsignedShort(void *ref);\n\n/*\n * Function: refToUnsignedLong\n * Usage: ul = refToUnsignedLong(ref);\n * -----------------------------------\n * Returns the <code>unsigned long</code> to which this reference points.\n */\n\nunsigned long refToUnsignedLong(void *ref);\n\n/*\n * Function: refToUnsignedChar\n * Usage: uc = refToUnsignedChar(ref);\n * -----------------------------------\n * Returns the <code>unsigned char</code> to which this reference points.\n */\n\nunsigned char refToUnsignedChar(void *ref);\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/set.c",
    "content": "/*\n * File: set.c\n * Last modified on Wed Dec 12 16:33:08 2012 by eroberts\n * -----------------------------------------------------\n * This file implements the set abstraction defined in set.h.\n */\n\n#include <stdarg.h>\n#include <stdio.h>\n#include <string.h>\n#include \"bst.h\"\n#include \"cmpfn.h\"\n#include \"cslib.h\"\n#include \"exception.h\"\n#include \"foreach.h\"\n#include \"generic.h\"\n#include \"iterator.h\"\n#include \"itertype.h\"\n#include \"map.h\"\n#include \"set.h\"\n#include \"strlib.h\"\n#include \"unittest.h\"\n\n/*\n * Type: SetCDT\n * ------------\n * This type defines the concrete structure of a set.\n */\n\nstruct SetCDT {\n   IteratorHeader header;      /* Header to enable iteration            */\n   BST bst;                    /* The underlying binary search tree     */\n   string baseType;            /* The name of the base type             */\n   int baseTypeSize;           /* Size of the base type in bytes        */\n   CompareFn cmpFn;            /* Function to compare two keys          */\n   FetchFn fetchFn;            /* Function to fetch an argument         */\n   StoreFn storeFn;            /* Function to store a value             */\n   ToStringFn toStringFn;      /* Function to convert key to a string   */\n};\n\n/* Private function prototypes */\n\nstatic string checkBaseTypes(Set s1, Set s2);\nstatic Iterator newSetIterator(void *collection);\nstatic bool stepSetIterator(Iterator iterator, void *dst);\n\n/* Exported entries */\n\nSet newSetFromType(string baseType) {\n   Set set;\n\n   set = newBlock(Set);\n   enableIteration(set, newSetIterator);\n   set->baseType = baseType;\n   set->fetchFn = getFetchFnForType(baseType);\n   set->storeFn = getStoreFnForType(baseType);\n   set->cmpFn = getCompareFnForType(baseType);\n   set->toStringFn = getToStringFn(baseType);\n   set->baseTypeSize = getTypeSizeForType(baseType);\n   set->bst = newBSTFromType(baseType);\n   return set;\n}\n\nvoid freeSet(Set set) {\n   freeBST(set->bst);\n   freeBlock(set);\n}\n\nint sizeSet(Set set) {\n   return sizeBST(set->bst);\n}\n\nbool isEmptySet(Set set) {\n   return isEmptyBST(set->bst);\n}\n\nvoid clearSet(Set set) {\n   clearBST(set->bst);\n}\n\nSet cloneSet(Set set) {\n   Set newset;\n\n   newset = newBlock(Set);\n   enableIteration(newset, newSetIterator);\n   newset->baseType = set->baseType;\n   newset->baseTypeSize = set->baseTypeSize;\n   newset->fetchFn = set->fetchFn;\n   newset->storeFn = set->storeFn;\n   newset->cmpFn = set->cmpFn;\n   newset->bst = cloneBST(set->bst);\n   return newset;\n}\n\nbool containsSet(Set set, ...) {\n   va_list args;\n   bool result;\n\n   va_start(args, set);\n   result = containsSetFromArgs(set, args);\n   va_end(args);\n   return result;\n}\n\nbool containsSetFromArgs(Set set, va_list args) {\n   GenericType any;\n\n   set->fetchFn(args, &any);\n   return findBSTNodeFromArg(set->bst, any) != NULL;\n}\n\nvoid addSet(Set set, ...) {\n   va_list args;\n\n   va_start(args, set);\n   addSetFromArgs(set, args);\n   va_end(args);\n}\n\nvoid addSetFromArgs(Set set, va_list args) {\n   GenericType any;\n\n   set->fetchFn(args, &any);\n   insertBSTNodeFromArg(set->bst, any);\n}\n\nvoid removeSet(Set set, ...) {\n   va_list args;\n\n   va_start(args, set);\n   removeSetFromArgs(set, args);\n   va_end(args);\n}\n\nvoid removeSetFromArgs(Set set, va_list args) {\n   GenericType any;\n\n   set->fetchFn(args, &any);\n   removeBSTNodeFromArg(set->bst, any);\n}\n\nbool equalsSet(Set s1, Set s2) {\n   checkBaseTypes(s1, s2);\n   return isSubset(s1, s2) && isSubset(s2, s1);\n}\n\nbool isSubsetSet(Set s1, Set s2) {\n   Iterator it;\n   BSTNode node;\n   bool result;\n\n   checkBaseTypes(s1, s2);\n   result = true;\n   it = newNodeIterator(s1->bst, INORDER);\n   while (result && stepIterator(it, &node)) {\n      if (!findBSTNodeFromArg(s2->bst, getKey(node))) result = false;\n   }\n   freeIterator(it);\n   return result;\n}\n\nSet unionSet(Set s1, Set s2) {\n   Iterator it;\n   BSTNode node;\n   Set set;\n\n   set = newSetFromType(checkBaseTypes(s1, s2));\n   setCompareFn(set, getCompareFn(s1));\n   it = newNodeIterator(s1->bst, INORDER);\n   while (stepIterator(it, &node)) {\n      insertBSTNodeFromArg(set->bst, getKey(node));\n   }\n   freeIterator(it);\n   it = newNodeIterator(s2->bst, INORDER);\n   while (stepIterator(it, &node)) {\n      insertBSTNodeFromArg(set->bst, getKey(node));\n   }\n   freeIterator(it);\n   return set;\n}\n\nSet intersectionSet(Set s1, Set s2) {\n   Iterator it;\n   GenericType any;\n   BSTNode node;\n   Set set;\n\n   set = newSetFromType(checkBaseTypes(s1, s2));\n   setCompareFn(set, getCompareFn(s1));\n   it = newNodeIterator(s1->bst, INORDER);\n   while (stepIterator(it, &node)) {\n      any = getKey(node);\n      if (findBSTNodeFromArg(s2->bst, any) != NULL) {\n         insertBSTNodeFromArg(set->bst, any);\n      }\n   }\n   freeIterator(it);\n   return set;\n}\n\nSet setDifferenceSet(Set s1, Set s2) {\n   Iterator it;\n   BSTNode node;\n   GenericType any;\n   Set set;\n\n   set = newSetFromType(checkBaseTypes(s1, s2));\n   setCompareFn(set, getCompareFn(s1));\n   it = newNodeIterator(s1->bst, INORDER);\n   while (stepIterator(it, &node)) {\n      any = getKey(node);\n      if (findBSTNodeFromArg(s2->bst, any) == NULL) {\n         insertBSTNodeFromArg(set->bst, any);\n      }\n   }\n   freeIterator(it);\n   return set;\n}\n\nvoid setCompareFn(Set set, CompareFn cmpFn) {\n   set->cmpFn = cmpFn;\n   setCompareFnBST(set->bst, cmpFn);\n}\n\nCompareFn getCompareFn(Set set) {\n   return getCompareFnBST(set->bst);\n}\n\n/* Private functions */\n\nstatic string checkBaseTypes(Set s1, Set s2) {\n   string type;\n\n   type = getBaseTypeBST(s1->bst);\n   if (!stringEqual(type, getBaseTypeBST(s2->bst))) {\n      error(\"Sets have different base types\");\n   }\n   if (getCompareFnBST(s1->bst) != getCompareFnBST(s2->bst)) {\n      error(\"Sets have different comparison functions\");\n   }\n   return type;\n}\n\nstatic Iterator newSetIterator(void *collection) {\n   Iterator iterator;\n   Set set;\n\n   set = (Set) collection;\n   iterator = newStepIterator(set->baseTypeSize, stepSetIterator);\n   setCollection(iterator, collection);\n   setIteratorData(iterator, newNodeIterator(set->bst, INORDER));\n   return iterator;\n}\n\nstatic bool stepSetIterator(Iterator iterator, void *dst) {\n   Set set;\n   BSTNode node;\n   Iterator nodeIterator;\n   bool result;\n\n   set = (Set) getCollection(iterator);\n   nodeIterator = (Iterator) getIteratorData(iterator);\n   result = stepIterator(nodeIterator, &node);\n   if (result) {\n      set->storeFn(getKey(node), dst);\n   } else {\n      freeIterator(nodeIterator);\n   }\n   return result;\n}\n\n/**********************************************************************/\n/* Unit test for the set module                                       */\n/**********************************************************************/\n\n#ifndef _NOTEST_\n\n/* Constant tables */\n\nstatic string OSPD3[] = {\n   \"aa\", \"ab\", \"ad\", \"ae\", \"ag\", \"ah\", \"ai\", \"al\", \"am\", \"an\", \"ar\",\n   \"as\", \"at\", \"aw\", \"ax\", \"ay\", \"ba\", \"be\", \"bi\", \"bo\", \"by\", \"de\",\n   \"do\", \"ed\", \"ef\", \"eh\", \"el\", \"em\", \"en\", \"er\", \"es\", \"et\", \"ex\",\n   \"fa\", \"go\", \"ha\", \"he\", \"hi\", \"hm\", \"ho\", \"id\", \"if\", \"in\", \"is\",\n   \"it\", \"jo\", \"ka\", \"la\", \"li\", \"lo\", \"ma\", \"me\", \"mi\", \"mm\", \"mo\",\n   \"mu\", \"my\", \"na\", \"ne\", \"no\", \"nu\", \"od\", \"oe\", \"of\", \"oh\", \"om\",\n   \"on\", \"op\", \"or\", \"os\", \"ow\", \"ox\", \"oy\", \"pa\", \"pe\", \"pi\", \"re\",\n   \"sh\", \"si\", \"so\", \"ta\", \"ti\", \"to\", \"uh\", \"um\", \"un\", \"up\", \"us\",\n   \"ut\", \"we\", \"wo\", \"xi\", \"xu\", \"ya\", \"ye\", \"yo\"\n};\nstatic int N_OSPD3 = sizeof OSPD3 / sizeof OSPD3[0];\n\nstatic string OSPD4[] = {\n   \"aa\", \"ab\", \"ad\", \"ae\", \"ag\", \"ah\", \"ai\", \"al\", \"am\", \"an\", \"ar\",\n   \"as\", \"at\", \"aw\", \"ax\", \"ay\", \"ba\", \"be\", \"bi\", \"bo\", \"by\", \"de\",\n   \"do\", \"ed\", \"ef\", \"eh\", \"el\", \"em\", \"en\", \"er\", \"es\", \"et\", \"ex\",\n   \"fa\", \"fe\", \"go\", \"ha\", \"he\", \"hi\", \"hm\", \"ho\", \"id\", \"if\", \"in\",\n   \"is\", \"it\", \"jo\", \"ka\", \"ki\", \"la\", \"li\", \"lo\", \"ma\", \"me\", \"mi\",\n   \"mm\", \"mo\", \"mu\", \"my\", \"na\", \"ne\", \"no\", \"nu\", \"od\", \"oe\", \"of\",\n   \"oh\", \"oi\", \"om\", \"on\", \"op\", \"or\", \"os\", \"ow\", \"ox\", \"oy\", \"pa\",\n   \"pe\", \"pi\", \"qi\", \"re\", \"sh\", \"si\", \"so\", \"ta\", \"ti\", \"to\", \"uh\",\n   \"um\", \"un\", \"up\", \"us\", \"ut\", \"we\", \"wo\", \"xi\", \"xu\", \"ya\", \"ye\",\n   \"yo\", \"za\"\n};\nstatic int N_OSPD4 = sizeof OSPD4 / sizeof OSPD4[0];\n\nstatic string NEW_WORDS[] = {\n   \"fe\", \"ki\", \"oi\", \"qi\", \"za\"\n};\nstatic int N_NEW_WORDS = sizeof NEW_WORDS / sizeof NEW_WORDS[0];\n\n/* Private function prototypes */\n\nstatic void testCharacterSet(void);\nstatic Set createCharSet(string str);\nstatic void testStringSet();\nstatic void checkStringSet(Set set, string array[]);\nstatic void addStringsToSet(Set set, string array[], int n);\nstatic void testIntegerSet();\nstatic Set createDigitSet(string str);\n\n/* Unit test */\n\nvoid testSetModule(void) {\n   testCharacterSet();\n   testStringSet();\n   testIntegerSet();\n}\n\nstatic void testCharacterSet(void) {\n   Set vowels, consonants, lowercase, onePointTiles, onePointConsonants;\n\n   trace(vowels = createCharSet(\"aeiou\"));\n   trace(consonants = createCharSet(\"bcdfghjklmnpqrstvwxyz\"));\n   trace(lowercase = createCharSet(\"abcdefghijklmnopqrstuvwxyz\"));\n   trace(onePointTiles = createCharSet(\"etaoinsrlu\"));\n   trace(equals(onePointTiles, createCharSet(\"aeilnorstu\")));\n   test(isSubset(vowels, onePointTiles), true);\n   test(isSubset(consonants, onePointTiles), false);\n   test(equals(union(vowels, consonants), lowercase), true);\n   trace(onePointConsonants = intersection(consonants, onePointTiles));\n   test(equals(onePointConsonants, createCharSet(\"lnrst\")), true);\n   test(equals(setDifference(lowercase, consonants), vowels), true);\n}\n\nstatic Set createCharSet(string str) {\n   Set set;\n   int i;\n\n   set = newSet(char);\n   for (i = 0; i < stringLength(str); i++) {\n      add(set, str[i]);\n   }\n   return set;\n}\n\nstatic void testStringSet() {\n   Set ospd3, ospd4, newWords, set;\n\n   trace(ospd3 = newSet(string));\n   test(isEmpty(ospd3), true);\n   trace(addStringsToSet(ospd3, OSPD3, N_OSPD3));\n   test(isEmpty(ospd3), false);\n   test(size(ospd3), (int) N_OSPD3);\n   trace(checkStringSet(ospd3, OSPD3));\n   trace(ospd4 = newSet(string));\n   trace(addStringsToSet(ospd4, OSPD4, N_OSPD4));\n   trace(newWords = newSet(string));\n   trace(set = clone(ospd4));\n   test(equals(set, ospd4), true);\n   trace(addStringsToSet(newWords, NEW_WORDS, N_NEW_WORDS));\n   test(equals(union(ospd3, newWords), ospd4), true);\n   test(equals(intersection(ospd3, ospd4), ospd3), true);\n   test(equals(setDifference(ospd4, ospd3), newWords), true);\n   test(isSubset(ospd3, ospd4), true);\n   test(isSubset(ospd4, ospd3), false);\n}\n\nstatic void checkStringSet(Set set, string array[]) {\n   string str;\n   int index;\n\n   index = 0;\n   foreach (str in set) {\n      if (!stringEqual(str, array[index++])) {\n         reportError(\"Incorrect value: %s\", str);\n      }\n   }\n}\n\nstatic void addStringsToSet(Set set, string array[], int n) {\n   int i;\n\n   for (i = 0; i < n; i++) {\n      add(set, array[i]);\n   }\n}\n\nstatic void testIntegerSet() {\n   Set primes, evens, odds, set;\n\n   trace(primes = createDigitSet(\"2357\"));\n   trace(evens = createDigitSet(\"02468\"));\n   trace(odds = createDigitSet(\"13579\"));\n   test(equals(union(evens, primes), createDigitSet(\"02345678\")), true);\n   test(equals(intersection(evens, primes), createDigitSet(\"2\")), true);\n   test(isEmpty(intersection(odds, evens)), true);\n   test(equals(setDifference(primes, evens), createDigitSet(\"357\")), true);\n   trace(set = clone(primes));\n   test(equals(set, primes), true);\n}\n\nstatic Set createDigitSet(string str) {\n   Set set;\n   int i, n;\n\n   set = newSet(int);\n   n = stringLength(str);\n   for (i = 0; i < n; i++) {\n      add(set, str[i] - '0');\n   }\n   return set;\n}\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/set.h",
    "content": "/*\n * File: set.h\n * -----------\n * This interface exports an abstract type that represents sets of values.\n */\n\n#ifndef _set_h\n#define _set_h\n\n#include <stdarg.h>\n#include \"cslib.h\"\n#include \"cmpfn.h\"\n\n/*\n * Type: Set\n * ---------\n * Defines the abstract type used to represent sets.\n */\n\ntypedef struct SetCDT *Set;\n\n/* Exported entries */\n\n/*\n * Function: newSet\n * Usage: set = newSet(type);\n * --------------------------\n * Creates an empty set of values of the specified base type.  The\n * <code>type</code> parameter must be an explicit type name like\n * <code>int</code> or <code>string</code>.\n */\n\n#define newSet(type) newSetFromType(#type)\n\n/*\n * Function: newSetFromType\n * Usage: set = newSetFromType(baseType);\n * --------------------------------------\n * Creates a new set of values with the specified base type expressed as\n * a string.\n */\n\nSet newSetFromType(string baseType);\n\n/*\n * Function: freeSet\n * Usage: freeSet(set);\n * --------------------\n * Frees the storage associated with a set.\n */\n\nvoid freeSet(Set set);\n\n/*\n * Function: size\n * Usage: n = size(set);\n * ---------------------\n * Returns the number of elements in the set.\n */\n\nint sizeSet(Set set);\n\n/*\n * Function: isEmpty\n * Usage: if (isEmpty(set)) . . .\n * ------------------------------\n * Returns <code>true</code> if the set has no elements.\n */\n\nbool isEmptySet(Set set);\n\n/*\n * Function: clear\n * Usage: clear(set);\n * ------------------\n * Removes all elements from the set.\n */\n\nvoid clearSet(Set set);\n\n/*\n * Function: clone\n * Usage: newset = clone(set);\n * ---------------------------\n * Creates a copy of the set.  The <code>clone</code> function copies\n * only the first level of the structure and does not copy the individual\n * elements.\n */\n\nSet cloneSet(Set set);\n\n/*\n * Function: contains\n * Usage: if (contains(set, value)) . . .\n * --------------------------------------\n * Returns <code>true</code> if the specified value is a member of the set.\n */\n\nbool containsSet(Set set, ...);\n\n/*\n * Friend function: containsSetFromArgs\n * Usage: if (containsSetFromArgs(set, args)) . . .\n * ------------------------------------------------\n * Identical to <code>containsSet</code> except that the argument comes\n * from the <code>args</code> list.\n */\n\nbool containsSetFromArgs(Set set, va_list args);\n\n/*\n * Function: add\n * Usage: add(set, value);\n * -----------------------\n * Adds the specified value to the set.\n */\n\nvoid addSet(Set set, ...);\n\n/*\n * Friend function: addSetFromArgs\n * Usage: addSetFromArgs(set, args);\n * ---------------------------------\n * Identical to <code>addSet</code> except that the argument comes\n * from the <code>args</code> list.\n */\n\nvoid addSetFromArgs(Set set, va_list args);\n\n/*\n * Function: remove\n * Usage: remove(set, value);\n * --------------------------\n * Removes the specified value from the set.\n */\n\nvoid removeSet(Set set, ...);\n\n/*\n * Friend function: removeSetFromArgs\n * Usage: removeSetFromArgs(set, args);\n * ------------------------------------\n * Identical to <code>removeSet</code> except that the argument comes\n * from the <code>args</code> list.\n */\n\nvoid removeSetFromArgs(Set set, va_list args);\n\n/*\n * Function: equals\n * Usage: if (equals(s1, s2)) . . .\n * --------------------------------\n * Returns <code>true</code> if <code>s1</code> and <code>s2</code>\n * are equal, which means that they contain the same elements.\n */\n\nbool equalsSet(Set s1, Set s2);\n\n/*\n * Function: isSubset\n * Usage: if (isSubset(s1, s2)) . . .\n * ----------------------------------\n * Returns <code>true</code> if <code>s1</code> is a subset of\n * <code>s2</code>.\n */\n\nbool isSubsetSet(Set s1, Set s2);\n\n/*\n * Function: union\n * Usage: set = union(s1, s2);\n * ---------------------------\n * Returns a new set consisting of all elements in either <code>s1</code>\n * or <code>s2</code>.\n */\n\nSet unionSet(Set s1, Set s2);\n\n/*\n * Function: intersection\n * Usage: set = intersection(s1, s2);\n * ----------------------------------\n * Returns a new set consisting of all elements in both <code>s1</code>\n * and <code>s2</code>.\n */\n\nSet intersectionSet(Set s1, Set s2);\n\n/*\n * Function: setDifference\n * Usage: set = setDifference(s1, s2);\n * -----------------------------------\n * Returns a new set consisting of all elements in <code>s1</code>\n * that are not elements of <code>s2</code>.\n */\n\nSet setDifferenceSet(Set s1, Set s2);\n\n/*\n * Function: setCompareFn\n * Usage: setCompareFn(set, cmpFn);\n * --------------------------------\n * Sets the comparison function for elements in the set.  Clients who are\n * using primitive types as base types will not need to call this function.\n */\n\nvoid setCompareFn(Set set, CompareFn cmpFn);\n\n/*\n * Function: getCompareFn\n * Usage: cmpFn = getCompareFn(set);\n * ---------------------------------\n * Returns the comparison function for elements in the set.\n */\n\nCompareFn getCompareFn(Set set);\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/simpio.c",
    "content": "/*\n * File: simpio.c\n * Last modified on Thu Jul 15 11:43:07 2010 by eroberts\n * -----------------------------------------------------\n * This file implements the simpio.h interface.\n */\n\n#include <stdio.h>\n#include <string.h>\n#include \"cslib.h\"\n#include \"simpio.h\"\n#include \"strlib.h\"\n\n/*\n * Constants:\n * ----------\n * INITIAL_BUFFER_SIZE -- Initial buffer size\n */\n\n#define INITIAL_BUFFER_SIZE 128\n\n/* Exported entries */\n\n/*\n * Functions: getInteger, getLong, getReal\n * ---------------------------------------\n * These functions first read a line and then call sscanf to\n * translate the number.  Reading an entire line is essential to\n * good error recovery, because the characters after the point of\n * error would otherwise remain in the input buffer and confuse\n * subsequent input operations.  The sscanf line allows white space\n * before and after the number but no other extraneous characters.\n */\n\nint getInteger(void) {\n   string line;\n   int value;\n   char termch;\n\n   while (true) {\n      line = getLine();\n      if (line == NULL) error(\"getInteger: unexpected end of file\");\n      switch (sscanf(line, \" %d %c\", &value, &termch)) {\n        case 1:\n          freeBlock(line);\n          return value;\n        case 2:\n          printf(\"Unexpected character: '%c'\\n\", termch);\n          break;\n        default:\n          printf(\"Please enter an integer\\n\");\n          break;\n      }\n      freeBlock(line);\n      printf(\"Retry: \");\n   }\n}\n\nlong getLong(void) {\n   string line;\n   long value;\n   char termch;\n\n   while (true) {\n      line = getLine();\n      if (line == NULL) error(\"getLong: unexpected end of file\");\n      switch (sscanf(line, \" %ld %c\", &value, &termch)) {\n        case 1:\n          freeBlock(line);\n          return value;\n        case 2:\n          printf(\"Unexpected character: '%c'\\n\", termch);\n          break;\n        default:\n          printf(\"Please enter an integer\\n\");\n          break;\n      }\n      freeBlock(line);\n      printf(\"Retry: \");\n   }\n}\n\ndouble getReal(void) {\n   string line;\n   double value;\n   char termch;\n\n   while (true) {\n      line = getLine();\n      if (line == NULL) error(\"getReal: unexpected end of file\");\n      switch (sscanf(line, \" %lf %c\", &value, &termch)) {\n        case 1:\n          freeBlock(line);\n          return value;\n        case 2:\n          printf(\"Unexpected character: '%c'\\n\", termch);\n          break;\n        default:\n          printf(\"Please enter a real number\\n\");\n          break;\n      }\n      freeBlock(line);\n      printf(\"Retry: \");\n   }\n}\n\n/*\n * Function: getLine\n * -----------------\n * This function is a simple wrapper; all the work is done by\n * readLine.\n */\n\nstring getLine(void) {\n   return readLine(stdin);\n}\n\n/*\n * Function: readLine\n * ------------------\n * This function operates by reading characters from the file\n * into a dynamically allocated buffer.  If the buffer becomes\n * full before the end of the line is reached, a new buffer\n * twice the size of the previous one is allocated.  This\n * function works correctly with any of the standard newline\n * sequences: \"\\n\", \"\\r\", or \"\\r\\n\".\n */\n\nstring readLine(FILE *infile) {\n   string line, nline;\n   int n, ch, size;\n\n   n = 0;\n   size = INITIAL_BUFFER_SIZE;\n   line = (string) getBlock(size + 1);\n   while (true) {\n      ch = getc(infile);\n      if (ch == '\\n' || ch == EOF) break;\n      if (ch == '\\r') {\n         ch = getc(infile);\n         if (ch != '\\n') ungetc(ch, infile);\n         break;\n      }\n      if (n == size) {\n         size *= 2;\n         nline = (string) getBlock(size + 1);\n         strncpy(nline, line, n);\n         freeBlock(line);\n         line = nline;\n      }\n      line[n++] = ch;\n   }\n   if (n == 0 && ch == EOF) {\n      freeBlock(line);\n      return NULL;\n   }\n   line[n] = '\\0';\n   nline = (string) getBlock(n + 1);\n   strcpy(nline, line);\n   freeBlock(line);\n   return nline;\n}\n\n/*\n * Function: readLinesFromStream\n * -----------------------------\n * This function operates by reading lines from the file into a\n * dynamically allocated buffer that doubles in size whenever the\n * existing space is exhausted.\n */\n\nstring *readLinesFromStream(FILE *infile) {\n   string *buffer, *nbuffer, line;\n   int i, n, size;\n\n   n = 0;\n   size = INITIAL_BUFFER_SIZE;\n   buffer = newArray(size, string);\n   while (true) {\n      line = readLine(infile);\n      if (line == NULL) break;\n      if (n == size) {\n         size *= 2;\n         nbuffer = newArray(size, string);\n         for (i = 0; i < n; i++) {\n            nbuffer[i] = buffer[i];\n         }\n         freeBlock(buffer);\n         buffer = nbuffer;\n      }\n      buffer[n++] = line;\n   }\n   nbuffer = newArray(n + 1, string);\n   for (i = 0; i < n; i++) {\n      nbuffer[i] = buffer[i];\n   }\n   nbuffer[n] = NULL;\n   freeBlock(buffer);\n   return nbuffer;\n}\n\n/*\n * Function: readLinesFromFile\n * ---------------------------\n * This function is a wrapper for <code>readLinesFromStream</code>,\n * which does all the real work.\n */\n\nstring *readLinesFromFile(string filename) {\n   FILE *infile;\n   string *lines;\n\n   if (stringEqual(filename, \"-\")) {\n      infile = stdin;\n   } else {\n      infile = fopen(filename, \"r\");\n      if (infile == NULL) error(\"Can't open %s\", filename);\n   }\n   lines = readLinesFromStream(infile);\n   if (infile != stdin) fclose(infile);\n   return lines;\n}\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/simpio.h",
    "content": "/*\n * File: simpio.h\n * --------------\n * This interface exports several functions that simplify the\n * reading of input data.\n */\n\n#ifndef _simpio_h\n#define _simpio_h\n\n#include \"cslib.h\"\n\n/*\n * Function: getInteger\n * Usage: n = getInteger();\n * ------------------------\n * Reads a line of text from standard input and scans it as an integer.\n * If an integer cannot be scanned or if extraneous characters follow\n * the number, the user is given a chance to retry.\n */\n\nint getInteger(void);\n\n/*\n * Function: getLong\n * Usage: l = getLong();\n * ---------------------\n * Reads a line of text from standard input and scans it as a\n * <code>long</code>.  If an integer cannot be scanned or if\n * extraneous characters follow the number, the user is given\n * a chance to retry.\n */\n\nlong getLong(void);\n\n/*\n * Function: getReal\n * Usage: d = getReal();\n * ---------------------\n * Reads a line of text from standard input and scans it as a\n * <code>double</code>.  If an number cannot be scanned or if\n * extraneous characters follow the number, the user is given\n * a chance to retry.\n */\n\ndouble getReal(void);\n\n/*\n * Function: getLine\n * Usage: s = getLine();\n * ---------------------\n * Reads a line of text from standard input and returns the line\n * as a string.  The newline character that terminates the input\n * is not stored as part of the result.\n */\n\nstring getLine(void);\n\n/*\n * Function: readLine\n * Usage: s = readLine(infile);\n * ----------------------------\n * Reads a line of text from the input file and returns the line\n * as a string.  The newline character that terminates the input\n * is not stored as part of the result.  The <code>readLine</code>\n * function returns <code>NULL</code> if <code>infile</code> is\n * at the end-of-file position.\n */\n\nstring readLine(FILE *infile);\n\n/*\n * Function: readLinesFromStream\n * Usage: string *array = readLinesFromStream(infile);\n * ---------------------------------------------------\n * Reads an entire file into a <code>NULL</code>-terminated array of lines.\n * Opening and closing the file stream is the responsibility of the caller.\n */\n\nstring *readLinesFromStream(FILE *infile);\n\n/*\n * Function: readLinesFromFile\n * Usage: string *array = readLinesFromFile(filename);\n * ---------------------------------------------------\n * Reads an entire file into a <code>NULL</code>-terminated array of lines.\n * This version opens the file, reads it, and closes it at the end.  If the\n * file name is <code>\"-\"</code>, the function reads from <code>stdin</code>.\n */\n\nstring *readLinesFromFile(string filename);\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/sound.c",
    "content": "/*\n * File: sound.c\n * -------------\n * This file implements the sound.h interface.\n */\n\n#include <stdio.h>\n#include \"cslib.h\"\n#include \"platform.h\"\n#include \"sound.h\"\n\n/*\n * Type SoundCDT\n * -------------\n * This type is the concrete type for sounds.\n */\n\nstruct SoundCDT {\n   string filename;\n};\n\nSound newSound(string filename) {\n   Sound sound;\n\n   sound = newBlock(Sound);\n   sound->filename = filename;\n   createSoundOp(sound, filename);\n   return sound;\n}\n\nvoid freeSound(Sound sound) {\n   deleteSoundOp(sound);\n}\n\nvoid playSound(Sound sound) {\n   playSoundOp(sound);\n}\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/sound.h",
    "content": "/*\n * File: sound.h\n * -------------\n * This interface defines an abstract type that represents a sound.\n */\n\n#ifndef _sound_h\n#define _sound_h\n\n/*\n * Type: Sound\n * -----------\n * This type encapsulates a sound file.  The sound file is specified in the\n * constructor and must be a file in either the current directory or a\n * subdirectory named <code>sounds</code>.\n *\n * <p>The following code, for example, plays the sound file\n * <code>ringtone.wav</code>:\n *\n *<pre>\n *    Sound ringtone = newSound(\"ringtone.wav\");\n *    play(ringtone);\n *</pre>\n */\n\ntypedef struct SoundCDT *Sound;\n\n/*\n * Function: newSound\n * Usage: sound = newSound(filename);\n * ----------------------------------\n * Creates a <code>Sound</code> object from the specified file.\n */\n\nSound newSound(string filename);\n\n/*\n * Function: freeSound\n * Usage: freeSound(sound);\n * ------------------------\n * Frees the memory associated with the sound.\n */\n\nvoid freeSound(Sound sound);\n\n/*\n * Function: playSound\n * Usage: playSound(sound);\n * ------------------------\n * Starts playing the sound.  This call returns immediately without waiting\n * for the sound to finish.\n */\n\nvoid playSound(Sound sound);\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/stack.c",
    "content": "/*\n * File: stack.c\n * Last modified on Wed Dec  5 21:24:19 2012 by eroberts\n * -----------------------------------------------------\n * This file implements the stack.h interface.  Note that the\n * implementation is independent of the type of value stored\n * in the stack.  That type is defined by the interface as\n * the type name void *.\n */\n\n#include <stdio.h>\n#include \"cslib.h\"\n#include \"generic.h\"\n#include \"stack.h\"\n#include \"unittest.h\"\n\n/*\n * Constant: INITIAL_CAPACITY\n * --------------------------\n * This constant defines the initial capacity of the stack array.\n * Any positive value will work correctly, although changing\n * this parameter can affect performance.  Making this value\n * larger postpones the first reallocation but causes stacks\n * to consume more memory.\n */\n\n#define INITIAL_CAPACITY 100\n\n/*\n * Type: StackCDT\n * --------------\n * The type StackCDT is the concrete representation of the type\n * Stack defined by the interface.  In this implementation,\n * the elements are stored in a dynamic array that doubles in\n * size if the old stack becomes full.\n */\n\nstruct StackCDT {\n   void **elements;\n   int count;\n   int capacity;\n};\n\n/* Function prototypes */\n\nstatic void expandCapacity(Stack stack);\n\n/* Exported entries */\n\nStack newStack(void) {\n   Stack stack;\n\n   stack = newBlock(Stack);\n   stack->elements = newArray(INITIAL_CAPACITY, void *);\n   stack->count = 0;\n   stack->capacity = INITIAL_CAPACITY;\n   return stack;\n}\n\nvoid freeStack(Stack stack) {\n   freeBlock(stack->elements);\n   freeBlock(stack);\n}\n\nvoid push(Stack stack, void *element) {\n   if (stack->count == stack->capacity) expandCapacity(stack);\n   stack->elements[stack->count++] = element;\n}\n\nvoid *pop(Stack stack) {\n   if (stack->count == 0) error(\"pop: Stack is empty\");\n   return stack->elements[--stack->count];\n}\n\nvoid *peekStack(Stack stack) {\n   if (stack->count == 0) error(\"pop: Stack is empty\");\n   return stack->elements[stack->count - 1];\n}\n\nbool isEmptyStack(Stack stack) {\n   return stack->count == 0;\n}\n\nint sizeStack(Stack stack) {\n   return stack->count;\n}\n\nvoid clearStack(Stack stack) {\n   stack->count = 0;\n}\n\nStack cloneStack(Stack stack) {\n   Stack newstack;\n   int i;\n\n   newstack = newBlock(Stack);\n   newstack->count = stack->count;\n   newstack->capacity = stack->capacity;\n   newstack->elements = newArray(stack->capacity, void *);\n   for (i = 0; i < stack->count; i++) {\n      newstack->elements[i] = stack->elements[i];\n   }\n   return newstack;\n}\n\n/* Private functions */\n\n/*\n * Implementation notes: expandCapacity\n * ------------------------------------\n * This function expands a full stack by doubling the capacity of its\n * dynamic array, copying the old elements to the new array, and\n * then freeing the old array storage.\n */\n\nstatic void expandCapacity(Stack stack) {\n   void **array;\n   int i, newCapacity;\n\n   newCapacity = stack->capacity * 2;\n   array = newArray(newCapacity, void *);\n   for (i = 0; i < stack->capacity; i++) {\n      array[i] = stack->elements[i];\n   }\n   freeBlock(stack->elements);\n   stack->elements = array;\n   stack->capacity = newCapacity;\n}\n\n/**********************************************************************/\n/* Unit test for the stack module                                     */\n/**********************************************************************/\n\n#ifndef _NOTEST_\n\n/* Unit test */\n\nvoid testStackModule(void) {\n   Stack stack, stack2;\n\n   trace(stack = newStack());\n   test(isEmpty(stack), true);\n   trace(push(stack, \"A\"));\n   test(isEmpty(stack), false);\n   trace(push(stack, \"B\"));\n   trace(push(stack, \"C\"));\n   test(pop(stack), \"C\");\n   trace(push(stack, \"D\"));\n   test(size(stack), 3);\n   test(peek(stack), \"D\");\n   trace(stack2 = clone(stack));\n   test(pop(stack), \"D\");\n   test(pop(stack), \"B\");\n   test(pop(stack), \"A\");\n   test(isEmpty(stack), true);\n   testError(pop(stack));\n   test(pop(stack2), \"D\");\n   test(pop(stack2), \"B\");\n   test(pop(stack2), \"A\");\n}\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/stack.h",
    "content": "/*\n * File: stack.h\n * -------------\n * This interface exports an abstraction for stacks.\n */\n\n#ifndef _stack_h\n#define _stack_h\n\n#include \"cslib.h\"\n#include \"generic.h\"\n\n/*\n * Type: Stack\n * -----------\n * The abstract data type for the stack.\n */\n\ntypedef struct StackCDT *Stack;\n\n/*\n * Function: newStack\n * Usage: stack = newStack();\n * --------------------------\n * Allocates and returns a new stack, which is initially empty.\n */\n\nStack newStack(void);\n\n/*\n * Function: freeStack\n * Usage: freeStack(stack);\n * ------------------------\n * Frees the storage associated with the stack.\n */\n\nvoid freeStack(Stack stack);\n\n/*\n * Function: push\n * Usage: push(stack, element);\n * ----------------------------\n * Pushes the specified element onto the stack.\n */\n\nvoid push(Stack stack, void *element);\n\n/*\n * Function: pop\n * Usage: element = pop(stack);\n * ----------------------------\n * Pops the top element from the stack and returns that value.\n * The first value popped is always the last one  that was pushed.\n * If the stack is empty when <code>pop</code> is called, the\n * implementation calls <code>error</code> with an appropriate message.\n */\n\nvoid *pop(Stack stack);\n\n/*\n * Function: peek\n * Usage: element = peek(stack);\n * -----------------------------\n * Returns the top element from the stack without removing it.\n * If the stack is empty when <code>pop</code> is called, the\n * implementation calls <code>error</code> with an appropriate message.\n */\n\nvoid *peekStack(Stack stack);\n\n/*\n * Function: isEmpty\n * Usage: if (isEmpty(stack)) . . .\n * --------------------------------\n * Tests whether the stack is empty.\n */\n\nbool isEmptyStack(Stack stack);\n\n/*\n * Function: size\n * Usage: n = size(stack);\n * -----------------------\n * Returns the number of elements currently pushed on the stack.\n */\n\nint sizeStack(Stack stack);\n\n/*\n * Function: clear\n * Usage: clear(stack);\n * --------------------\n * Removes all elements from the stack.\n */\n\nvoid clearStack(Stack stack);\n\n/*\n * Function: clone\n * Usage: newstack = clone(stack);\n * -------------------------------\n * Creates a copy of the stack.  The <code>clone</code> function copies\n * only the first level of the structure and does not copy the individual\n * elements.\n */\n\nStack cloneStack(Stack stack);\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/strbuf.c",
    "content": "/*\n * File: strbuf.c\n * --------------\n * This file implements the strbuf.h interface.\n */\n\n#include <stdio.h>\n#include <string.h>\n#include <ctype.h>\n#include \"exception.h\"\n#include \"cslib.h\"\n#include \"strbuf.h\"\n#include \"strlib.h\"\n#include \"unittest.h\"\n\n/* Constants */\n\n#define INITIAL_CAPACITY 100\n#define MAX_NUMBER_DIGITS 30\n\n/*\n * Type: StringBufferCDT\n * ---------------------\n * This type is the concrete type for the StringBuffer.\n */\n\nstruct StringBufferCDT {\n   int capacity;\n   int count;\n   char *buffer;\n};\n\n/* Private function prototypes */\n\nstatic void ensureCapacity(StringBuffer sb, int capacity);\n\n/* Exported entries */\n\nStringBuffer newStringBuffer() {\n   StringBuffer sb;\n\n   sb = newBlock(StringBuffer);\n   sb->capacity = INITIAL_CAPACITY;\n   sb->count = 0;\n   sb->buffer = newArray(sb->capacity, char);\n   return sb;\n}\n\nvoid freeStringBuffer(StringBuffer sb) {\n   freeBlock(sb->buffer);\n   freeBlock(sb);\n}\n\nvoid pushChar(StringBuffer sb, char ch) {\n   ensureCapacity(sb, sb->count + 1);\n   sb->buffer[sb->count++] = ch;\n}\n\nchar popChar(StringBuffer sb) {\n   if (sb->count == 0) error(\"popChar: StringBuffer is empty\");\n   return sb->buffer[--sb->count];\n}\n\nvoid appendString(StringBuffer sb, string str) {\n   int n;\n\n   n = stringLength(str);\n   ensureCapacity(sb, sb->count + n);\n   memcpy(&sb->buffer[sb->count], str, n);\n   sb->count += n;\n}\n\nvoid sbprintf(StringBuffer sb, string format, ...) {\n   va_list args;\n   int capacity;\n\n   va_start(args, format);\n   capacity = printfCapacity(format, args);\n   va_end(args);\n   va_start(args, format);\n   sbFormat(sb, capacity, format, args);\n   va_end(args);\n}\n\nvoid sbFormat(StringBuffer sb, int capacity, string format, va_list args) {\n   int n;\n\n   ensureCapacity(sb, sb->count + capacity + 1);\n   n = vsprintf(&sb->buffer[sb->count], format, args);\n   va_end(args);\n   sb->count += n;\n}\n\nbool isEmptyStringBuffer(StringBuffer sb) {\n   return sb->count == 0;\n}\n\nint sizeStringBuffer(StringBuffer sb) {\n   return sb->count;\n}\n\nvoid clearStringBuffer(StringBuffer sb) {\n   sb->count = 0;\n}\n\nstring getString(StringBuffer sb) {\n   ensureCapacity(sb, sb->count + 1);\n   sb->buffer[sb->count] = '\\0';\n   return sb->buffer;\n}\n\n/* Friend functions */\n\nint printfCapacity(string format, va_list args) {\n   int i, capacity, width, precision, len, lcount;\n   bool inFormat, dotSeen;\n   string str;\n   char ch;\n\n   capacity = 0;\n   inFormat = false;\n   for (i = 0; format[i] != '\\0'; i++) {\n      ch = format[i];\n      if (!inFormat) {\n         if (ch == '%') {\n            inFormat = true;\n            dotSeen = false;\n            width = -1;\n            precision = -1;\n            lcount = 0;\n         } else {\n            capacity++;\n         }\n      } else {\n         switch (ch) {\n          case '0': case '1': case '2': case '3': case '4':\n          case '5': case '6': case '7': case '8': case '9':\n            if (dotSeen) {\n               if (precision < 0) precision = 0;\n               precision = 10 * precision + (ch - '0');\n            } else {\n               if (width < 0) width = 0;\n               width = 10 * width + (ch - '0');\n            }\n            break;\n          case '*':\n            if (dotSeen) {\n               precision = va_arg(args, int);\n            } else {\n               width = va_arg(args, int);\n            }\n            break;\n          case '.':\n            dotSeen = true;\n            precision = 0;\n            break;\n          case '+': case '-': case '#': case ' ':\n          case 'h': case 'z': case 'j': case 't':\n            break;\n          case 'l':\n            lcount++;\n            break;\n          case '%':\n            capacity++;\n            inFormat = false;\n            break;\n          case 'd': case 'i': case 'o': case 'u': case 'x': case 'X':\n            if (lcount == 0) {\n               va_arg(args, int);\n            } else {\n               va_arg(args, long);\n            }\n            len = MAX_NUMBER_DIGITS;\n            if (width > len) len = width;\n            capacity += len;\n            inFormat = false;\n            break;\n          case 'a': case 'e': case 'f': case 'g':\n          case 'A': case 'E': case 'F': case 'G':\n            if (lcount == 0) {\n               va_arg(args, double);\n            } else if (lcount == 1) {\n               va_arg(args, long double);\n            }\n            len = MAX_NUMBER_DIGITS;\n            if (width > len) len = width;\n            capacity += len;\n            inFormat = false;\n            break;\n          case 'c':\n            va_arg(args, int);\n            capacity += 1 + lcount;\n            inFormat = false;\n            break;\n          case 's':\n            str = va_arg(args, string);\n            if (precision >= 0) {\n               capacity += precision;\n            } else {\n               len = stringLength(str);\n               if (width > len) len = width;\n               if (lcount > 0) len = 2 * len;\n               capacity += len;\n            }\n            inFormat = false;\n            break;\n         }\n      }\n   }\n   return capacity;\n}\n\n/*\n * Private function: ensureCapacity\n * Usage: ensureCapacity(sb, capacity);\n * ------------------------------------\n * Makes sure that the capacity of the StringBuffer is at least as large\n * as the specified capacity.\n */\n\nvoid ensureCapacity(StringBuffer sb, int capacity) {\n   string old;\n   int cap;\n\n   if (sb->capacity >= capacity) return;\n   cap = sb->capacity;\n   if (cap < INITIAL_CAPACITY) cap = INITIAL_CAPACITY;\n   while (cap < capacity) {\n      cap *= 2;\n   }\n   old = sb->buffer;\n   sb->capacity = cap;\n   sb->buffer = newArray(cap, char);\n   memcpy(sb->buffer, old, sb->count);\n   freeBlock(old);\n}\n\n/**********************************************************************/\n/* Unit test for the strbuf module                                    */\n/**********************************************************************/\n\n#ifndef _NOTEST_\n\n/* Private function prototypes */\n\nstatic void testStringBufferAppend(void);\nstatic void testStringBufferFormat(void);\nstatic int testCapacity(string format, ...);\n\n/* Unit test */\n\nvoid testStrbufModule(void) {\n   string alphabet;\n\n   testStringBufferAppend();\n   testStringBufferFormat();\n   trace(alphabet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\");\n   test(testCapacity(\"ABCDE\"), 5);\n   test(testCapacity(\"%%\"), 1);\n   test(testCapacity(\"%d\", 42), (int) MAX_NUMBER_DIGITS);\n   test(testCapacity(\"%50d\", 42), 50);\n   test(testCapacity(\"%*d\", 50, 42), 50);\n   test(testCapacity(\"%s\", alphabet), 26);\n   test(testCapacity(\"%10.10s\", alphabet), 10);\n   test(testCapacity(\"%50s\", alphabet), 50);\n}\n\nstatic void testStringBufferAppend(void) {\n   StringBuffer sb;\n   string str;\n   int i;\n\n   sb = newStringBuffer();\n   pushChar(sb, '(');\n   str = \"(\";\n   for (i = 0; i < 999; i++) {\n      appendString(sb, integerToString(i));\n      str = concat(str, integerToString(i));\n   }\n   str = concat(str, \")\");\n   pushChar(sb, ')');\n   test(stringEqual(getString(sb), str), true);\n   test(popChar(sb), ')');\n   trace(clear(sb));\n   test(getString(sb), \"\");\n}\n\nstatic void testStringBufferFormat(void) {\n   StringBuffer sb;\n\n   sb = newStringBuffer();\n   trace(sbprintf(sb, \"The answer is %d\", 42));\n   test(getString(sb), \"The answer is 42\");\n}\n\nstatic int testCapacity(string format, ...) {\n   va_list args;\n   int capacity;\n\n   va_start(args, format);\n   capacity = printfCapacity(format, args);\n   va_end(args);\n   return capacity;\n}\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/strbuf.h",
    "content": "/*\n * File: strbuf.h\n * --------------\n * This interface defines a class that allows strings to grow by\n * concatentation.\n */\n\n#ifndef _strbuf_h\n#define _strbuf_h\n\n#include \"cslib.h\"\n\n/*\n * Type: StringBuffer\n * ------------------\n * This type provides an efficient, memory-safe mechanism for strings\n * that grow by the addition of characters.\n */\n\ntypedef struct StringBufferCDT *StringBuffer;\n\n/*\n * Function: newStringBuffer\n * Usage: sb = newStringBuffer();\n * ------------------------------\n * Creates a new string buffer that expands dynamically if needed.\n * The buffer is initially empty.\n */\n\nStringBuffer newStringBuffer();\n\n/*\n * Function: freeStringBuffer\n * Usage: freeStringBuffer(sb);\n * ----------------------------\n * Frees the storage associated with the string buffer.\n */\n\nvoid freeStringBuffer(StringBuffer sb);\n\n/*\n * Function: pushChar\n * Usage: pushChar(sb, ch);\n * ------------------------\n * Appends (pushes) the character <code>ch</code> onto the end of the\n * string buffer.\n */\n\nvoid pushChar(StringBuffer sb, char ch);\n\n/*\n * Function: popChar\n * Usage: ch = popChar(sb);\n * ------------------------\n * Pops and removes the last character from the string buffer.\n */\n\nchar popChar(StringBuffer sb);\n\n/*\n * Function: appendString\n * Usage: appendString(sb, str);\n * -----------------------------\n * Appends the string <code>str</code> to the end of the string buffer.\n */\n\nvoid appendString(StringBuffer sb, string str);\n\n/*\n * Function: sbprintf\n * Usage: sbprintf(sb, format, ...);\n * ---------------------------------\n * Expands a <code>printf</code>-style format string and arguments onto\n * the end of the string buffer.\n */\n\nvoid sbprintf(StringBuffer sb, string format, ...);\n\n/*\n * Function: isEmpty\n * Usage: if (isEmpty(sb)) . . .\n * -----------------------------\n * Returns <code>true</code> if the string buffer is empty.\n */\n\nbool isEmptyStringBuffer(StringBuffer vec);\n\n/*\n * Function: size\n * Usage: n = size(sb);\n * --------------------\n * Returns the number of characters in the string buffer.\n */\n\nint sizeStringBuffer(StringBuffer vector);\n\n/*\n * Function: clear\n * Usage: clear(sb);\n * -----------------\n * Removes all characters from the string buffer.\n */\n\nvoid clearStringBuffer(StringBuffer sb);\n\n/*\n * Function: getString\n * Usage: str = getString(sb);\n * ---------------------------\n * Returns the string stored inside the buffer.  Clients must copy this\n * string if they need to retain it.\n */\n\nstring getString(StringBuffer sb);\n\n/*\n * Friend function: printfCapacity\n * Usage: capacity = printfCapacity(format, args);\n * -----------------------------------------------\n * Returns a character count that will be sufficient to hold the result\n * of printing <code>format</code> with arguments substituted from the\n * <code>args</code> list.  This bound is guaranteed to be adequate but\n * is not necessarily tight.\n */\n\nint printfCapacity(string format, va_list args);\n\n/*\n * Friend function: sbFormat\n * Usage: sbFormat(sb, capacity, format, list);\n * --------------------------------------------\n * Works like <code>sbprintf</code> except that the list is an argument\n * list as in <code>stdarg.h</code>.  The <code>capacity</code> argument\n * is the required capacity, as returned by <code>printfCapacity</code>.\n */\n\nvoid sbFormat(StringBuffer sb, int capacity, string format, va_list args);\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/strlib.c",
    "content": "/*\n * File: strlib.c\n * --------------\n * This file implements the strlib.h interface.\n */\n\n/*\n * General implementation notes:\n * -----------------------------\n * This module implements the strlib library by mapping all\n * functions into the appropriate calls to the ANSI <string.h>\n * interface.  The implementations of the individual functions\n * are all quite simple and do not require individual comments.\n * For descriptions of the behavior of each function, see the\n * interface.\n */\n\n#include <stdio.h>\n#include <string.h>\n#include <ctype.h>\n#include \"exception.h\"\n#include \"cslib.h\"\n#include \"strlib.h\"\n#include \"unittest.h\"\n\n/* Constants */\n\n#define MAX_NUMBER_DIGITS 30\n\n/* Private function prototypes */\n\nstatic string createString(int len);\n\n/* Section 1 -- Basic string operations */\n\nstring concat(string s1, string s2) {\n   string s;\n   int len1, len2;\n\n   if (s1 == NULL || s2 == NULL) {\n      error(\"concat: NULL string passed as an argument\");\n   }\n   len1 = strlen(s1);\n   len2 = strlen(s2);\n   s = createString(len1 + len2);\n   strcpy(s, s1);\n   strcpy(s + len1, s2);\n   return s;\n}\n\nchar charAt(string s, int i) {\n   int len;\n\n   if (s == NULL) error(\"charAt: String value is NULL\");\n   len = strlen(s);\n   if (i < 0 || i > len) {\n      error(\"charAt: Index is out of range\");\n   }\n   return s[i];\n}\n\nstring substring(string s, int p1, int p2) {\n   int len;\n   string result;\n\n   if (s == NULL) error(\"substring: String value is NULL\");\n   len = strlen(s);\n   if (p1 < 0) p1 = 0;\n   if (p2 >= len) p2 = len - 1;\n   len = p2 - p1 + 1;\n   if (len < 0) len = 0;\n   result = createString(len);\n   strncpy(result, s + p1, len);\n   result[len] = '\\0';\n   return result;\n}\n\nstring charToString(char ch) {\n   string result;\n\n   result = createString(1);\n   result[0] = ch;\n   result[1] = '\\0';\n   return result;\n}\n\nint stringLength(string s) {\n   if (s == NULL) error(\"stringLength: String value is NULL\");\n   return strlen(s);\n}\n\nstring copyString(string s) {\n   string newstr;\n\n   if (s == NULL) error(\"copyString: String value is NULL\");\n   newstr = createString(strlen(s));\n   strcpy(newstr, s);\n   return newstr;\n}\n\n/* Section 2 -- String comparison functions */\n\nbool stringEqual(string s1, string s2) {\n   if (s1 == NULL || s2 == NULL) {\n      error(\"stringEqual: String value is NULL\");\n   }\n   return strcmp(s1, s2) == 0;\n}\n\nbool stringEqualIgnoreCase(string s1, string s2) {\n   int i;\n\n   if (s1 == NULL || s2 == NULL) {\n      error(\"stringEqualIgnoreCase: String value is NULL\");\n   }\n   for (i = 0; s1[i] != '\\0'; i++) {\n      if (tolower(s1[i]) != tolower(s2[i])) return false;\n   }\n   return s2[i] == '\\0';\n}\n\nint stringCompare(string s1, string s2) {\n   int cmp;\n\n   if (s1 == NULL || s2 == NULL) {\n      error(\"stringCompare: String value is NULL\");\n   }\n   cmp = strcmp(s1, s2);\n   if (cmp == 0) return 0;\n   return (cmp < 0) ? -1 : +1;\n}\n\nbool startsWith(string s1, string s2) {\n   return strncmp(s1, s2, strlen(s2)) == 0;\n}\n\nbool endsWith(string s1, string s2) {\n   int n1, n2;\n\n   n1 = strlen(s1);\n   n2 = strlen(s2);\n   if (n2 > n1) return false;\n   return strcmp(s1 + n1 - n2, s2) == 0;\n}\n\n/* Section 3 -- Search functions */\n\nint findChar(char ch, string text, int start) {\n   char *cptr;\n\n   if (text == NULL) error(\"findChar: String value is NULL\");\n   if (start < 0) start = 0;\n   if (start > strlen(text)) return -1;\n   cptr = strchr(text + start, ch);\n   if (cptr == NULL) return -1;\n   return (int) (cptr - text);\n}\n\nint findString(string str, string text, int start) {\n   char *cptr;\n\n   if (str == NULL) error(\"findString: String value is NULL\");\n   if (text == NULL) error(\"findString: String value is NULL\");\n   if (start < 0) start = 0;\n   if (start > strlen(text)) return -1;\n   cptr = strstr(text + start, str);\n   if (cptr == NULL) return -1;\n   return (int) (cptr - text);\n}\n\nint findLastChar(char ch, string text) {\n   char *cptr;\n\n   if (text == NULL) error(\"findLastChar: String value is NULL\");\n   cptr = strrchr(text, ch);\n   if (cptr == NULL) return -1;\n   return (int) (cptr - text);\n}\n\nint findLastString(string str, string text) {\n   int i, nc;\n\n   if (str == NULL) error(\"findLastString: String value is NULL\");\n   if (text == NULL) error(\"findLastString: String value is NULL\");\n   nc = strlen(str);\n   for (i = strlen(text) - nc; i >= 0; i--) {\n      if (strncmp(str, text + i, nc) == 0) return i;\n   }\n   return -1;\n}\n\n/* Section 4 -- Conversion functions */\n\nstring toLowerCase(string s) {\n   string result;\n   int i;\n\n   if (s == NULL) {\n      error(\"toLowerCase: String value is NULL\");\n   }\n   result = createString(strlen(s));\n   for (i = 0; s[i] != '\\0'; i++) {\n      result[i] = tolower(s[i]);\n   }\n   result[i] = '\\0';\n   return result;\n}\n\nstring toUpperCase(string s) {\n   string result;\n   int i;\n\n   if (s == NULL) {\n      error(\"toUpperCase: String value is NULL\");\n   }\n   result = createString(strlen(s));\n   for (i = 0; s[i] != '\\0'; i++) {\n      result[i] = toupper(s[i]);\n   }\n   result[i] = '\\0';\n   return result;\n}\n\nstring integerToString(int n) {\n   char buffer[MAX_NUMBER_DIGITS];\n\n   sprintf(buffer, \"%d\", n);\n   return copyString(buffer);\n}\n\nint stringToInteger(string s) {\n   int result;\n   char dummy;\n\n   if (s == NULL) {\n      error(\"stringToInteger: String value is NULL\");\n   }\n   if (sscanf(s, \" %d %c\", &result, &dummy) != 1) {\n      error(\"stringToInteger: Illegal number %s\", s);\n   }\n   return result;\n}\n\n/*\n * Implementation notes: realToString\n * ----------------------------------\n * Some implementations of printf pad the exponent field to three\n * digits, but all seem to pad it to at least two.  The string\n * manipulation code in the function definition standardizes on\n * the two-digit form.\n */\n\nstring realToString(double d) {\n   char buffer[MAX_NUMBER_DIGITS];\n   int len;\n\n   sprintf(buffer, \"%G\", d);\n   len = strlen(buffer);\n   if (len > 5 && buffer[len - 5] == 'E' && buffer[len - 3] == '0') {\n      buffer[len - 3] = buffer[len - 2];\n      buffer[len - 2] = buffer[len - 1];\n      buffer[len - 1] = '\\0';\n   }\n   return copyString(buffer);\n}\n\ndouble stringToReal(string s) {\n   double result;\n   char dummy;\n\n   if (s == NULL) error(\"stringToReal: String value is NULL\");\n   if (sscanf(s, \" %lg %c\", &result, &dummy) != 1) {\n      error(\"stringToReal: Illegal number %s\", s);\n   }\n   return result;\n}\n\nstring trim(string str) {\n   int start, finish;\n\n   start = 0;\n   while (str[start] != '\\0' && isspace(str[start])) {\n      start++;\n   }\n   finish = strlen(str) - 1;\n   while (finish >= start && isspace(str[finish])) {\n      finish--;\n   }\n   return substring(str, start, finish);\n}\n\nstring quoteString(string str) {\n   int i, n;\n   string result;\n   char ch, *cp;\n\n   n = 2;\n   for (i = 0; (ch = str[i]) != '\\0'; i++) {\n      switch (ch) {\n       case '\\a': case '\\b': case '\\f': case '\\n': case '\\r':\n       case '\\t': case '\\v': case '\"': case '\\\\':\n         n += 2;\n         break;\n       default:\n         n += (ch < 32 || ch >= 127) ? 4 : 1;\n         break;\n      }\n   }\n   result = newArray(n + 1, char);\n   cp = result;\n   *cp++ = '\"';\n   for (i = 0; (ch = str[i]) != '\\0'; i++) {\n      switch (ch) {\n       case '\\a': *cp++ = '\\\\'; *cp++ = 'a'; break;\n       case '\\b': *cp++ = '\\\\'; *cp++ = 'b'; break;\n       case '\\f': *cp++ = '\\\\'; *cp++ = 'f'; break;\n       case '\\n': *cp++ = '\\\\'; *cp++ = 'n'; break;\n       case '\\r': *cp++ = '\\\\'; *cp++ = 'r'; break;\n       case '\\t': *cp++ = '\\\\'; *cp++ = 't'; break;\n       case '\\v': *cp++ = '\\\\'; *cp++ = 'v'; break;\n       case '\"': *cp++ = '\\\\'; *cp++ = '\"'; break;\n       case '\\\\': *cp++ = '\\\\'; *cp++ = '\\\\'; break;\n       default:\n         if (ch < 32 || ch >= 127) {\n            sprintf(cp, \"\\\\%03o\", ch);\n            cp += 4;\n         } else {\n            *cp++ = ch;\n         }\n         break;\n      }\n   }\n   *cp++ = '\"';\n   *cp = '\\0';\n   return result;\n}\n\nstring quoteHTML(string str) {\n   int i, n;\n   string result;\n   char ch, *cp;\n\n   n = 0;\n   for (i = 0; (ch = str[i]) != '\\0'; i++) {\n      switch (ch) {\n       case '&': n += 5; break;\n       case '<': n += 4; break;\n       case '>': n += 4; break;\n       default: n++; break;\n      }\n   }\n   result = newArray(n + 1, char);\n   cp = result;\n   for (i = 0; (ch = str[i]) != '\\0'; i++) {\n      switch (ch) {\n       case '&': strcpy(cp, \"&amp;\"); cp += 5; break;\n       case '<': strcpy(cp, \"&lt;\"); cp += 4; break;\n       case '>': strcpy(cp, \"&gt;\"); cp += 4; break;\n       default: *cp++ = ch; break;\n      }\n   }\n   *cp = '\\0';\n   return result;\n}\n\nint stringArrayLength(string array[]) {\n   int i;\n\n   if (array == NULL) return 0;\n   for (i = 0; array[i] != NULL; i++) {\n      /* Empty */\n   }\n   return i;\n}\n\nint searchStringArray(string str, string array[]) {\n   int i;\n\n   if (array == NULL) return -1;\n   for (i = 0; array[i] != NULL; i++) {\n      if (stringEqual(str, array[i])) return i;\n   }\n   return -1;\n}\n\n/*\n * Private function: createString\n * Usage: s = createString(len);\n * -----------------------------\n * This function dynamically allocates space for a string of\n * len characters, leaving room for the null character at the\n * end.\n */\n\nstatic string createString(int len) {\n   return (string) getBlock(len + 1);\n}\n\n/**********************************************************************/\n/* Unit test for the strlib module                                    */\n/**********************************************************************/\n\n#ifndef _NOTEST_\n\n/* Private function prototypes */\n\nstatic void testConcat(void);\nstatic void testIthChar(void);\nstatic void testSubString(void);\nstatic void testCharToString(void);\nstatic void testStringLength(void);\nstatic void testCopyString(void);\nstatic void testStringEqual(void);\nstatic void testStringEqualIgnoreCase(void);\nstatic void testStringCompare(void);\nstatic void testStartsWith(void);\nstatic void testEndsWith(void);\nstatic void testFindChar(void);\nstatic void testFindString(void);\nstatic void testFindLastChar(void);\nstatic void testFindLastString(void);\nstatic void testConvertToLowerCase(void);\nstatic void testConvertToUpperCase(void);\nstatic void testIntegerToString(void);\nstatic void testStringToInteger(void);\nstatic void testRealToString(void);\nstatic void testStringToReal(void);\nstatic void testTrim(void);\nstatic void testQuoteString(void);\nstatic void testQuoteHTML(void);\nstatic void testStringArrayLength(void);\nstatic void testSearchStringArray(void);\n\n/* Unit test */\n\nvoid testStrlibModule(void) {\n   testConcat();\n   testIthChar();\n   testSubString();\n   testCharToString();\n   testStringLength();\n   testCopyString();\n   testStringEqual();\n   testStringEqualIgnoreCase();\n   testStringCompare();\n   testStartsWith();\n   testEndsWith();\n   testFindChar();\n   testFindString();\n   testFindLastChar();\n   testFindLastString();\n   testConvertToLowerCase();\n   testConvertToUpperCase();\n   testIntegerToString();\n   testStringToInteger();\n   testRealToString();\n   testStringToReal();\n   testTrim();\n   testQuoteString();\n   testQuoteHTML();\n   testStringArrayLength();\n   testSearchStringArray();\n}\n\n/* Private functions */\n\nstatic void testConcat(void) {\n   test(concat(\"hello\", \"world\"), \"helloworld\");\n   test(concat(\"hello\", \"\"), \"hello\");\n   test(concat(\"\", \"world\"), \"world\");\n}\n\nstatic void testIthChar(void) {\n   test(charAt(\"abcde\", 0), 'a');\n   test(charAt(\"abcde\", 4), 'e');\n   test(charAt(\"abcde\", 5), '\\0');\n   testError(charAt(\"abcde\", 6));\n}\n\nstatic void testSubString(void) {\n   test(substring(\"abcde\", 0, 1), \"ab\");\n   test(substring(\"abcde\", 0, 4), \"abcde\");\n   test(substring(\"abcde\", -1, 5), \"abcde\");\n   test(substring(\"abcde\", 3, 2), \"\");\n}\n\nstatic void testCharToString(void) {\n   test(charToString('x'), \"x\");\n}\n\nstatic void testStringLength(void) {\n   test(stringLength(\"abcde\"), 5);\n   test(stringLength(\"\"), 0);\n}\n\nstatic void testCopyString(void) {\n   test(copyString(\"abcde\"), \"abcde\");\n}\n\nstatic void testStringEqual(void) {\n   test(stringEqual(\"cat\", \"dog\"), false);\n   test(stringEqual(\"abcde\", \"abcde\"), true);\n   test(stringEqual(\"ABCDE\", \"abcde\"), false);\n   test(stringEqual(\"abc\", \"abcde\"), false);\n   test(stringEqual(\"abcde\", \"abc\"), false);\n   test(stringEqual(\"\", \"\"), true);\n}\n\nstatic void testStringEqualIgnoreCase(void) {\n   test(stringEqualIgnoreCase(\"cat\", \"dog\"), false);\n   test(stringEqualIgnoreCase(\"abcde\", \"abcde\"), true);\n   test(stringEqualIgnoreCase(\"ABCDE\", \"abcde\"), true);\n   test(stringEqualIgnoreCase(\"abc\", \"abcde\"), false);\n   test(stringEqualIgnoreCase(\"abcde\", \"abc\"), false);\n   test(stringEqualIgnoreCase(\"\", \"\"), true);\n}\n\nstatic void testStringCompare(void) {\n   test(stringCompare(\"cat\", \"cat\"), 0);\n   test(stringCompare(\"cat\", \"dog\"), -1);\n   test(stringCompare(\"dog\", \"cat\"), +1);\n   test(stringCompare(\"\", \"xxx\"), -1);\n   test(stringCompare(\"xxx\", \"\"), +1);\n}\n\nstatic void testStartsWith(void) {\n   test(startsWith(\"start\", \"\"), true);\n   test(startsWith(\"start\", \"star\"), true);\n   test(startsWith(\"start\", \"start\"), true);\n   test(startsWith(\"start\", \"startx\"), false);\n}\n\nstatic void testEndsWith(void) {\n   test(endsWith(\"start\", \"\"), true);\n   test(endsWith(\"start\", \"tart\"), true);\n   test(endsWith(\"start\", \"start\"), true);\n   test(endsWith(\"start\", \"xstart\"), false);\n}\n\nstatic void testFindChar(void) {\n   test(findChar('c', \"abcabc\", 0), 2);\n   test(findChar('c', \"abcabc\", 3), 5);\n   test(findChar('a', \"abcabc\", 5), -1);\n}\n\nstatic void testFindString(void) {\n   test(findString(\"cad\", \"abracadabra\", 0), 4);\n   test(findString(\"cad\", \"abracadabra\", 6), -1);\n   test(findString(\"abr\", \"abracadabra\", 6), 7);\n}\n\nstatic void testFindLastChar(void) {\n   test(findLastChar('c', \"abcabc\"), 5);\n   test(findLastChar('d', \"abcabc\"), -1);\n}\n\nstatic void testFindLastString(void) {\n   test(findLastString(\"abr\", \"abracadabra\"), 7);\n   test(findLastString(\"xxx\", \"abracadabra\"), -1);\n}\n\nstatic void testConvertToLowerCase(void) {\n   test(toLowerCase(\"ABC\"), \"abc\");\n   test(toLowerCase(\"#A1\"), \"#a1\");\n}\n\nstatic void testConvertToUpperCase(void) {\n   test(toUpperCase(\"abc\"), \"ABC\");\n   test(toUpperCase(\"#a1\"), \"#A1\");\n}\n\nstatic void testIntegerToString(void) {\n   test(integerToString(0), \"0\");\n   test(integerToString(1234567), \"1234567\");\n   test(integerToString(-17), \"-17\");\n}\n\nstatic void testStringToInteger(void) {\n   test(stringToInteger(\"1234\"), 1234);\n   test(stringToInteger(\"-42\"), -42);\n   testError(stringToInteger(\"X\"));\n}\n\nstatic void testRealToString(void) {\n   test(realToString(0), \"0\");\n   test(realToString(3.1416), \"3.1416\");\n   test(realToString(-2.3), \"-2.3\");\n   test(realToString(1.75E+15), \"1.75E+15\");\n}\n\nstatic void testStringToReal(void) {\n   test(stringToReal(\"1234\"), 1234.0);\n   test(stringToReal(\"-4.2\"), -4.2);\n   test(stringToReal(\"1.28E-15\"), 1.28E-15);\n   testError(stringToReal(\"X\"));\n}\n\nstatic void testQuoteString(void) {\n   test(quoteString(\"abcde\"), \"\\\"abcde\\\"\");\n   test(quoteString(\"ab\\t\\\"\\5cd\"), \"\\\"ab\\\\t\\\\\\\"\\\\005cd\\\"\");\n}\n\nstatic void testQuoteHTML(void) {\n   test(quoteHTML(\"a < 4 && b > 0\"), \"a &lt; 4 &amp;&amp; b &gt; 0\");\n}\n\nstatic void testTrim(void) {\n   test(trim(\"abcde\"), \"abcde\");\n   test(trim(\"    abcde\"), \"abcde\");\n   test(trim(\"abcde    \"), \"abcde\");\n   test(trim(\"\\tabcde  \"), \"abcde\");\n   test(trim(\"\"), \"\");\n}\n\nstatic void testStringArrayLength(void) {\n   string primaryColors[4];\n   primaryColors[0] = \"red\";\n   primaryColors[1] = \"green\";\n   primaryColors[2] = \"blue\";\n   primaryColors[3] = NULL;\n   test(stringArrayLength(primaryColors), 3);\n}\n\nstatic void testSearchStringArray(void) {\n   string primaryColors[4];\n   primaryColors[0] = \"red\";\n   primaryColors[1] = \"green\";\n   primaryColors[2] = \"blue\";\n   primaryColors[3] = NULL;\n   test(searchStringArray(\"red\", primaryColors), 0);\n   test(searchStringArray(\"green\", primaryColors), 1);\n   test(searchStringArray(\"blue\", primaryColors), 2);\n   test(searchStringArray(\"yellow\", primaryColors), -1);\n}\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/strlib.h",
    "content": "/*\n * File: strlib.h\n * --------------\n * This interface defines a general library for dynamically allocated\n * strings.  The major differences between traditional C strings and\n * those defined using this interface are:\n *\n *<ol>\n *  <li>The <code>strlib.h</code> interface takes care of memory\n *      allocation, ensuring that there is sufficient space to hold\n *      the result of each string operation.\n *  <li>Clients of the <code>strlib.h</code> interface are expected\n *      to treat all strings as immutable and refrain from writing\n *      into the character array.\n *</ol>\n */\n\n/*\n * Cautionary note:\n * ----------------\n * Although this interface provides an extremely convenient abstraction\n * for working with strings, it is not appropriate for all applications.\n * In this interface, the functions that return string values (such as\n * concat and substring) do so by allocating new memory.  Over time, a\n * program that uses this package will consume increasing amounts of\n * memory and eventually exhaust the available supply.  If you are\n * writing a program that runs for a short time and stops, the fact\n * that the package consumes memory is not a problem.  If, however,\n * you are writing an application that must run for an extended period\n * of time, using this package requires that you make some provision\n * for freeing any allocated storage.\n */\n\n#ifndef _strlib_h\n#define _strlib_h\n\n#include <stdarg.h>\n#include \"cslib.h\"\n#include \"generic.h\"\n\n/* Section 1 -- Basic string operations */\n\n/*\n * Function: concat\n * Usage: s = concat(s1, s2);\n * --------------------------\n * Concatenates two strings by joining them end to end.  For\n * example, <code>concat(\"ABC\", \"DE\")</code> returns the\n * string <code>\"ABCDE\"</code>.\n */\n\nstring concat(string s1, string s2);\n\n/*\n * Function: charAt\n * Usage: ch = charAt(s, i);\n * -------------------------\n * Returns the character at position <code>i</code> in the\n * string <code>s</code>.  This function is included in the\n * library to make the type <code>string</code> a true abstract\n * type in the sense that all of the necessary operations can be\n * invoked using functions.  Calling <code>charAt(s, i)</code>\n * is like selecting <code>s[i]</code>, except that\n * <code>charAt</code> checks to see if <code>i</code> is\n * within the range of legal index positions, which extend\n * from 0 to <code>stringLength(s)</code>.  Calling\n * <code>charAt(s, stringLength(s))</code returns the null\n * character at the end of the string.\n */\n\nchar charAt(string s, int i);\n\n/*\n * Function: substring\n * Usage: t = substring(s, p1, p2);\n * --------------------------------\n * Returns a copy of the substring of <code>s</code> consisting of the\n * characters between index positions <code>p1</code> and <code>p2</code>,\n * inclusive.  The following special cases apply:\n *\n *<ol>\n *  <li> If <code>p1</code> is less than 0, it is assumed to be 0.\n *  <li> If <code>p2</code> is greater than or equal to the length of the\n *       string, <code>p2</code> is set to <code>stringLength(s) - 1</code>.\n *  <li> If <code>p2 &lt; p1</code>, <code>substring</code> returns the\n *       empty string.\n *</ol>\n */\n\nstring substring(string s, int p1, int p2);\n\n/*\n * Function: charToString\n * Usage: s = charToString(ch);\n * ----------------------------\n * Takes a single character and returns a one-character string\n * consisting of that character.  The <code>charToString</code>\n * function is useful, for example, if you need to concatenate\n * a string and a character.  Since <code>concat</code> requires\n * two strings, you must first convert the character into a string.\n */\n\nstring charToString(char ch);\n\n/*\n * Function: stringLength\n * Usage: len = stringLength(s);\n * -----------------------------\n * Returns the length of the string <code>s</code>.\n */\n\nint stringLength(string s);\n\n/*\n * Function: copyString\n * Usage: newstr = copyString(s);\n * ------------------------------\n * Copies the string <code>s</code> into dynamically allocated storage\n * and returns the new string.  This function is not ordinarily required\n * when this package is used on its own but is often necessary when you\n * are working with more than one string package.\n */\n\nstring copyString(string s);\n\n/* Section 2 -- String comparison functions */\n\n/*\n * Function: stringEqual\n * Usage: if (stringEqual(s1, s2)) ...\n * -----------------------------------\n * Returns <code>true</code> if the strings <code>s1</code>\n * and <code>s2</code> are equal.  For the strings to be\n * considered equal, every character in one string must\n * precisely match the corresponding character in the other.\n * Uppercase and lowercase characters are considered to be\n * different.\n */\n\nbool stringEqual(string s1, string s2);\n\n/*\n * Function: stringEqualIgnoreCase\n * Usage: if (stringEqualIgnoreCase(s1, s2)) ...\n * ---------------------------------------------\n * Returns <code>true</code> if the strings <code>s1</code>\n * and <code>s2</code> are equal, ignoring differences in case.\n */\n\nbool stringEqualIgnoreCase(string s1, string s2);\n\n/*\n * Function: stringCompare\n * Usage: if (stringCompare(s1, s2) < 0) ...\n * -----------------------------------------\n * Returns -1 if string <code>s1</code> comes before <code>s2</code>\n * in lexicographic order, 0 if they are equal, and +1 if\n * <code>s1</code> comes after <code>s2</code>.\n */\n\nint stringCompare(string s1, string s2);\n\n/*\n * Function: startsWith\n * Usage: if (startsWith(s1, s2)) ...\n * ----------------------------------\n * Returns <code>true</code> if <code>s1</code> starts with <code>s2</code>.\n */\n\nbool startsWith(string s1, string s2);\n\n/*\n * Function: endsWith\n * Usage: if (endsWith(s1, s2)) ...\n * --------------------------------\n * Returns <code>true</code> if <code>s1</code> ends with <code>s2</code>.\n */\n\nbool endsWith(string s1, string s2);\n\n/* Section 3 -- Search functions */\n\n/*\n * Function: findChar\n * Usage: p = findChar(ch, text, start);\n * -------------------------------------\n * Searches for the character <code>ch</code> beginning at position\n * <code>start</code> in the string <code>text</code> and returns\n * the first index at which it appears or -1 if no match is found.\n */\n\nint findChar(char ch, string text, int start);\n\n/*\n * Function: findString\n * Usage: p = findString(str, text, start);\n * ----------------------------------------\n * Searches for the string <code>str</code> beginning at position\n * <code>start</code> in the string <code>text</code> and returns\n * the first index at which it appears or -1 if no match is found.\n */\n\nint findString(string str, string text, int start);\n\n/*\n * Function: findLastChar\n * Usage: p = findLastChar(ch, text);\n * ----------------------------------\n * Returns the last index of <code>ch</code> in <code>text</code>,\n * or -1 if the search value does not appear.\n */\n\nint findLastChar(char ch, string text);\n\n/*\n * Function: findLastString\n * Usage: p = findLastString(str, text);\n * -------------------------------------\n * Returns the last index of <code>str</code> in <code>text</code>,\n * or -1 if the search value does not appear.\n */\n\nint findLastString(string str, string text);\n\n/* Section 4 -- Conversion functions */\n\n/*\n * Function: toLowerCase\n * Usage: s = toLowerCase(s);\n * --------------------------\n * Returns a new string with all alphabetic characters converted\n * to lowercase.\n */\n\nstring toLowerCase(string s);\n\n/*\n * Function: toUpperCase\n * Usage: s = toUpperCase(s);\n * --------------------------\n * Returns a new string with all alphabetic characters converted\n * to uppercase.\n */\n\nstring toUpperCase(string s);\n\n/*\n * Function: integerToString\n * Usage: s = integerToString(n);\n * ------------------------------\n * Converts an integer into the corresponding string of digits.\n * For example, <code>integerToString(123)</code> returns\n * <code>\"123\"</code> as a string.\n */\n\nstring integerToString(int n);\n\n/*\n * Function: stringToInteger\n * Usage: n = stringToInteger(s);\n * ------------------------------\n * Converts a string of digits into an integer.  If the string\n * is not a legal integer or contains extraneous characters,\n * <code>stringToInteger</code> signals an error condition.\n */\n\nint stringToInteger(string s);\n\n/*\n * Function: realToString\n * Usage: string  s = realToString(d);\n * -----------------------------------\n * Converts a floating-point number into the corresponding string\n * form.  For example, calling <code>realToString(23.45)</code>\n * returns </code>\"23.45\"</code>.  The conversion is the same as\n * that used for <code>\"%G\"</code> format in <code>printf</code>.\n */\n\nstring realToString(double d);\n\n/*\n * Function: stringToReal\n * Usage: d = stringToReal(s);\n * ---------------------------\n * Converts a string representing a real number into its\n * corresponding value.  If the string is not a legal\n * floating-point number or if it contains extraneous characters,\n * <code>stringToReal</code> signals an error condition.\n */\n\ndouble stringToReal(string s);\n\n/* Section 5 - Miscellaneous functions */\n\n/*\n * Function: trim\n * Usage: trimmed = trim(str);\n * ---------------------------\n * Returns a new string after removing any whitespace characters\n * from the beginning and end of the argument.\n */\n\nstring trim(string str);\n\n/*\n * Function: quoteString\n * Usage: quoted = quoteString(str);\n * ---------------------------------\n * Returns a quoted string that can be read by the C parser.\n * This string includes double quotes around the entire value,\n * and uses standard escape sequences to indicate special\n * characters.\n */\n\nstring quoteString(string str);\n\n/*\n * Function: quoteHTML\n * Usage: quoted = quoteHTML(str);\n * -------------------------------\n * Returns a string that appears correctly in HTML by changing HTML special\n * characters to character entities.\n */\n\nstring quoteHTML(string str);\n\n/*\n * Function: stringArrayLength\n * Usage: len = stringArrayLength(array);\n * --------------------------------------\n * Returns the length of a <code>NULL</code>-terminated string array.\n */\n\nint stringArrayLength(string array[]);\n\n/*\n * Function: searchStringArray\n * Usage: index = searchStringArray(str, array);\n * ---------------------------------------------\n * Finds a string in a <code>NULL</code>-terminated string array and\n * returns the first index at which the string appears, or -1 if it\n * is not found.\n */\n\nint searchStringArray(string str, string array[]);\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/thread.c",
    "content": "/*\n * File: thread.c\n * Last modified on Fri Sep 26 09:34:55 2014 by eroberts\n * -----------------------------------------------------\n * This file contains only the unit test for the thread module.  The\n * actual implementation is provided by the following source files:\n *\n *   MacOSX and Unix:  posixthread.c\n *   Windows:          winthread.c\n *\n * Only one of those files will generate code, so it is safe to\n * include all of them in the compilation.\n */\n\n#include <stdio.h>\n#include \"cslib.h\"\n#include \"exception.h\"\n#include \"generic.h\"\n#include \"strlib.h\"\n#include \"thread.h\"\n#include \"unittest.h\"\n\n/**********************************************************************/\n/* Unit test for the thread module                                    */\n/**********************************************************************/\n\n#ifndef _NOTEST_\n\n/* Constants */\n\n#define MAX_QUEUE 5\n\ntypedef struct {\n   string name;\n   int count;\n} *Counter;\n\ntypedef struct {\n   Lock lock;\n   int count;\n   char buffer[MAX_QUEUE];\n} *CharacterQueue;\n\n/* Exceptions */\n\nstatic exception Ex1 = { \"Ex1\" };\n\n/* Import friends functions */\n\nextern Thread getOwner(Lock lock);\n\n/* Private function prototypes */\n\nstatic Counter newCounter(string name);\nstatic void counterThread(void *data);\nstatic void testCounterThreads(void);\nstatic void testSynchronized(void);\nstatic void testThrowThroughLock(void);\nstatic CharacterQueue newCharacterQueue(void);\nstatic bool isQueueEmpty(CharacterQueue queue);\nstatic bool isQueueFull(CharacterQueue queue);\nstatic void enqueueChar(CharacterQueue queue, char ch);\nstatic char dequeueChar(CharacterQueue queue);\nstatic void producerThread(void *data);\nstatic void testProducerConsumer(void);\n\n/* Unit test */\n\nvoid testThreadModule(void) {\n   testCounterThreads();\n   testSynchronized();\n   testThrowThroughLock();\n   testProducerConsumer();\n}\n\n/* Section 1 -- Test basic concurrency mechanism */\n\nstatic Counter newCounter(string name) {\n   Counter counter;\n\n   counter = newBlock(Counter);\n   counter->name = name;\n   counter->count = 0;\n   return counter;\n}\n\nstatic void counterThread(void *data) {\n   Counter counter;\n   int i;\n\n   counter = (Counter) data;\n   for (i = 0; i < 10; i++) {\n      if (counter->count != i) {\n         reportError(\"counterThread sequence error\");\n      }\n      counter->count++;\n      yield();\n   }\n}\n\nstatic void testCounterThreads(void) {\n   Thread t1, t2, t3;\n\n   reportMessage(\"testCounterThreads() {\");\n   adjustReportIndentation(+3);\n   trace(t1 = forkThread(counterThread, newCounter(\"T1\")));\n   trace(t2 = forkThread(counterThread, newCounter(\"T2\")));\n   trace(t3 = forkThread(counterThread, newCounter(\"T3\")));\n   trace(joinThread(t1));\n   trace(joinThread(t2));\n   trace(joinThread(t3));\n   adjustReportIndentation(-3);\n   reportMessage(\"}\");\n}\n\n/* Section 2 -- Test the synchronized statement */\n\nstatic void testSynchronized(void) {\n   Lock lock;\n   Thread mainThread;\n\n   reportMessage(\"testSynchronized() {\");\n   adjustReportIndentation(+3);\n   trace(lock = newLock());\n   trace(mainThread = getCurrentThread());\n   reportMessage(\"synchronized(lock) {\");\n   synchronized (lock) {\n      adjustReportIndentation(+3);\n      test(getOwner(lock) == mainThread, true);\n      adjustReportIndentation(-3);\n   }\n   reportMessage(\"}\");\n   test(getOwner(lock) == NULL, true);\n   adjustReportIndentation(-3);\n   reportMessage(\"}\");\n}\n\n/*\n * Function: testThrowThroughLock\n * Usage: testThrowThroughLock();\n * ------------------------------\n * Tests to make sure that the <code>synchronized</code> statement\n * unlocks its locks if an exception transfers control out of the\n * critical section.\n */\n\nstatic void testThrowThroughLock(void) {\n   Lock lock;\n   Thread mainThread;\n\n   reportMessage(\"testThrowThroughLock() {\");\n   adjustReportIndentation(+3);\n   trace(lock = newLock());\n   trace(mainThread = getCurrentThread());\n   reportMessage(\"try {\");\n   adjustReportIndentation(+3);\n   try {\n      reportMessage(\"synchronized(lock) {\");\n      adjustReportIndentation(+3);\n      synchronized (lock) {\n         test(getOwner(lock) == mainThread, true);\n         reportMessage(\"throw(Ex1);\");\n         throw(Ex1);\n         reportError(\"Should not get here\");\n      }\n      reportError(\"Should not get here\");\n   } catch (Ex1) {\n      test(getOwner(lock) == NULL, true);\n   } finally {\n      adjustReportIndentation(-3);\n      reportMessage(\"}\");\n   } endtry;\n   adjustReportIndentation(-3);\n   reportMessage(\"}\");\n   adjustReportIndentation(-3);\n}\n\n/* Section 3 -- Test the waitThread/signalThread methods */\n\nstatic CharacterQueue newCharacterQueue(void) {\n   CharacterQueue queue;\n\n   queue = newBlock(CharacterQueue);\n   queue->lock = newLock();\n   queue->count = 0;\n   return queue;\n}\n\nstatic bool isQueueEmpty(CharacterQueue queue) {\n   return queue->count == 0;\n}\n\nstatic bool isQueueFull(CharacterQueue queue) {\n   return queue->count == MAX_QUEUE;\n}\n\nstatic void enqueueChar(CharacterQueue queue, char ch) {\n   synchronized (queue->lock) {\n      while (isQueueFull(queue)) {\n         waitThread(queue->lock);\n      }\n      queue->buffer[queue->count++] = ch;\n      signalThread(queue->lock);\n   }\n}\n\nstatic char dequeueChar(CharacterQueue queue) {\n   char ch;\n   int i;\n\n   synchronized (queue->lock) {\n      while (isQueueEmpty(queue)) {\n         waitThread(queue->lock);\n      }\n      ch = queue->buffer[0];\n      queue->count--;\n      for (i = 0; i < queue->count; i++) {\n         queue->buffer[i] = queue->buffer[i + 1];\n      }\n      signalThread(queue->lock);\n   }\n   return ch;\n}\n\nstatic void producerThread(void *data) {\n   CharacterQueue queue;\n   char ch;\n\n   queue = (CharacterQueue) data;\n   for (ch = 'A'; ch <= 'Z'; ch++) {\n      enqueueChar(queue, ch);\n   }\n}\n\nstatic void testProducerConsumer(void) {\n   CharacterQueue queue;\n   Thread producer;\n   string result;\n   char ch;\n\n   reportMessage(\"testProducerConsumer\");\n   queue = newCharacterQueue();\n   result = \"\";\n   producer = forkThread(producerThread, queue);\n   while (true) {\n      ch = dequeueChar(queue);\n      result = concat(result, charToString(ch));\n      if (ch == 'Z') break;\n   }\n   joinThread(producer);\n   test(result, \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\");\n}\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/thread.h",
    "content": "/*\n * File: thread.h\n * --------------\n * This interface exports a platform-independent thread abstraction,\n * along with simple functions for concurrency control.\n */\n\n#ifndef _thread_h\n#define _thread_h\n\n#include <setjmp.h>\n#include \"cslib.h\"\n\n#ifdef __macosx__\n#  define getCurrentThread XgetCurrentThread\n#endif\n\n/*\n * Type: Thread\n * ------------\n * The <code>Thread</code> type is used to represent a <i>thread,</i>\n * which is a lightweight process running in the same address space\n * as the creator.\n */\n\ntypedef struct ThreadCDT *Thread;\n\n/*\n * Type: Lock\n * ----------\n * The <code>Lock</code> type is used to manage concurrent access\n * to some data structure within an application.  Only one thread\n * can hold a lock at any point in time; other threads seeking to\n * gain access queue on the lock until it is released by the thread\n * that originally obtained it.  The general strategy for using a\n * lock is to use the <code>synchronized</code> statement to\n * protect a critical region of code, as illustrated in the\n * discussion of <code>synchronized</code> later in this file.\n */\n\ntypedef struct LockCDT *Lock;\n\n/* Exported entries */\n\n/*\n * Function: forkThread\n * Usage: thread = forkThread(fn, data);\n * -------------------------------------\n * Forks a new thread to invokes the specified function, passing\n * <code>data</code> as an argument.  Threads created by\n * <code>forkThread</code> become dormant on completion and\n * wait for the client to synchronize with them using a\n * <code>joinThread</code> operation.\n */\n\nThread forkThread(proc fn, void *data);\n\n/*\n * Function: joinThread\n * Usage: joinThread(thread);\n * --------------------------\n * Waits for the specified thread to finish before proceeding.\n */\n\nvoid joinThread(Thread thread);\n\n/*\n * Function: yield\n * Usage: yield();\n * ---------------\n * Yields the processor to allow another thread to run.\n */\n\nvoid yield(void);\n\n/*\n * Function: getCurrentThread\n * Usage: self = getCurrentThread();\n * ---------------------------------\n * Returns the currently executing thread.\n */\n\nThread getCurrentThread(void);\n\n/*\n * Function: setThreadName\n * Usage: setThreadName(thread, name);\n * -----------------------------------\n * Sets the name of a thread to the given string.  This name\n * is used primarily for debugging purposes.\n */\n\nvoid setThreadName(Thread thread, string name);\n\n/*\n * Function: getThreadName\n * Usage: name = getThreadName(thread);\n * ------------------------------------\n * Returns the name of the specified thread.  If no name has been\n * set for the thread, this function returns a string in the form\n * <code>Thread&lt;xxx&gt;</code>, where <code>xxx</code> is an\n * integer uniquely identifying the thread.\n */\n\nstring getThreadName(Thread thread);\n\n/*\n * Function: newLock\n * Usage: lock = newLock();\n * ------------------------\n * Creates a new <code>Lock</code> object.\n */\n\nLock newLock(void);\n\n/*\n * Macro: synchronized\n * Usage: synchronized (lock) { . . . }\n * ------------------------------------\n * Defines a critical section protected by the specified lock.  The\n * general strategy for using this facility is shown in the following\n * paradigmatic pattern:<p>\n *\n *<pre>\n *    synchronized (lock) {\n *       . . . statements in the critical section . . .\n *    }\n *</pre>\n */\n\n#define synchronized(lock) for ( ; startSync(lock) ; endSync(lock))\n\n/*\n * Function: waitThread\n * Usage: waitThread(lock);\n * ------------------------\n * Waits for some other thread to issue a call to <code>signalThread</code>\n * on this lock.  This call requires that the lock be owned by the\n * calling thread.  The effect of this function is to release the\n * lock and then wait until the desired <code>signalThread</code> operation\n * occurs, at which point the lock is reacquired and control passes\n * to the statement following the <code>waitThread</code>.\n *\n * <p>The <code>waitThread</code> function is useful only if the call is\n * embedded inside a <code>while</code> loop that checks a condition\n * before proceeding.  That <code>while</code> statement must itself\n * be embedded inside a <code>synchronized</code> statement that\n * acquires the lock.  Thus, the standard paradigm for using the\n * <code>waitThread</code> function looks like this:<p>\n *\n *<pre>\n *    synchronized (lock) {\n *        while (conditional test) {\n *            waitThread(lock);\n *        }\n *        . . . code to manipulate the locked resource . . .\n *    }\n *</pre>\n */\n\nvoid waitThread(Lock lock);\n\n/*\n * Function: signalThread\n * Usage: signalThread(lock);\n * --------------------------\n * Signals all threads waiting on the lock so that they wake up and\n * recheck the corresponding condition.\n */\n\nvoid signalThread(Lock lock);\n\n/* Internal entry points -- see implementation for details */\n\nbool startSync(Lock lock);\nvoid endSync(Lock lock);\nvoid lockInternal(Lock lock);\nvoid unlockInternal(Lock lock);\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/todo.txt",
    "content": "+ Change all Javadoc to cppdoc\n+ Implement block tagging in newBlock/freeBlock\n+ Implement polymorphic functions in generic.h\n+ Implement StringBuffer ADT in strlib.h\n+ Change implementation and all clients of scanner.h to tokenscanner.h model\n+ Unit tests for copy(...)\n+ Unit test for random.c\n- Make all implementations as memory safe as possible\n- Unit test for cmdscan.c\n- Implement all platform.h functionality\n- Improve documentation\n- Add rehash to hashmap\n? Reintegrate CharSet into Set(char) ?\n? Add high-level graph operations to graph.h ?\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/tokenscanner.c",
    "content": "/*\n * File: tokenscanner.c\n * --------------------\n * Implementation for the TokenScanner class.\n */\n\n#include <stdio.h>\n#include <ctype.h>\n#include <string.h>\n#include \"cslib.h\"\n#include \"strbuf.h\"\n#include \"strlib.h\"\n#include \"tokenscanner.h\"\n#include \"unittest.h\"\n\n/*\n * Type: StringCell\n * ----------------\n * This type is used to construct linked lists of cells, which are used\n * to represent both the stack of saved tokens and the set of defined\n * operators.\n */\n\ntypedef struct StringCell {\n   string str;\n   struct StringCell *link;\n} StringCell;\n\n/*\n * Type: NumberScannerState\n * ------------------------\n * This type is used to enumerate the finite state machine used to read\n * numbers.\n */\n\ntypedef enum {\n   INITIAL_STATE,\n   BEFORE_DECIMAL_POINT,\n   AFTER_DECIMAL_POINT,\n   STARTING_EXPONENT,\n   FOUND_EXPONENT_SIGN,\n   SCANNING_EXPONENT,\n   FINAL_STATE\n} NumberScannerState;\n\n/*\n * Type: TokenScannerCDT\n * ---------------------\n * This type represents the concrete structure of a scanner.\n */\n\nstruct TokenScannerCDT {\n   string buffer;                   /* Source for string input      */\n   int len;                         /* Length of buffer             */\n   int cp;                          /* Current buffer position      */\n   FILE *infile;                    /* Source for file input        */\n   bool charIsSaved;                /* Char has been saved to file  */\n   bool ignoreWhitespaceFlag;       /* Scanner ignores whitespace   */\n   bool ignoreCommentsFlag;         /* Scanner ignores comments     */\n   bool scanNumbersFlag;            /* Scanner parses numbers       */\n   bool scanStringsFlag;            /* Scanner parses strings       */\n   StringCell *savedTokens;         /* Stack of saved tokens        */\n   StringCell *operators;           /* List of multichar operators  */\n   StringBuffer wordChars;          /* Additional word characters   */\n   StringBuffer savedChars;         /* Stack of saved characters    */\n   StringBuffer sb;                 /* Buffer for creating strings  */\n};\n\n/* Private method prototypes */\n\nstatic void initScanner(TokenScanner scanner);\nstatic void skipSpaces(TokenScanner scanner);\nstatic string scanWord(TokenScanner scanner);\nstatic string scanNumber(TokenScanner scanner);\nstatic string scanString(TokenScanner scanner);\nstatic bool isOperator(TokenScanner scanner, string op);\nstatic bool isOperatorPrefix(TokenScanner scanner, string op);\nstatic void freeStringList(StringCell *cp);\n\n/* Exported entries */\n\nTokenScanner newTokenScanner(void) {\n   TokenScanner scanner;\n\n   scanner = newBlock(TokenScanner);\n   initScanner(scanner);\n   setInputString(scanner, \"\");\n   return scanner;\n}\n\nvoid freeTokenScanner(TokenScanner scanner) {\n   freeStringList(scanner->savedTokens);\n   freeStringList(scanner->operators);\n   freeStringBuffer(scanner->sb);\n   freeStringBuffer(scanner->savedChars);\n   freeStringBuffer(scanner->wordChars);\n   freeBlock(scanner);\n}\n\nvoid setInputString(TokenScanner scanner, string str) {\n   scanner->buffer = str;\n   scanner->len = stringLength(str);\n   scanner->cp = 0;\n   scanner->infile = NULL;\n   freeStringList(scanner->savedTokens);\n   scanner->savedTokens = NULL;\n}\n\nvoid setInputFile(TokenScanner scanner, FILE *infile) {\n   scanner->infile = infile;\n   scanner->charIsSaved = false;\n   freeStringList(scanner->savedTokens);\n   scanner->savedTokens = NULL;\n}\n\nbool hasMoreTokens(TokenScanner scanner) {\n   string token;\n\n   token = nextToken(scanner);\n   saveToken(scanner, token);\n   return stringLength(token) != 0;\n}\n\nstring nextToken(TokenScanner scanner) {\n   StringCell *cp;\n   string token;\n   int ch, prev;\n\n   if (scanner->savedTokens != NULL) {\n      cp = scanner->savedTokens;\n      token = cp->str;\n      scanner->savedTokens = cp->link;\n      freeBlock(cp);\n      return token;\n   }\n   while (true) {\n      if (scanner->ignoreWhitespaceFlag) skipSpaces(scanner);\n      ch = getChar(scanner);\n      if (ch == '/' && scanner->ignoreCommentsFlag) {\n         ch = getChar(scanner);\n         if (ch == '/') {\n            while (true) {\n               ch = getChar(scanner);\n               if (ch == '\\n' || ch == '\\r' || ch == EOF) break;\n            }\n            continue;\n         } else if (ch == '*') {\n            prev = EOF;\n            while (true) {\n               ch = getChar(scanner);\n               if (ch == EOF || (prev == '*' && ch == '/')) break;\n               prev = ch;\n            }\n            continue;\n         }\n         ungetChar(scanner, ch);\n         ch = '/';\n      }\n      if (ch == EOF) return copyString(\"\");\n      if ((ch == '\"' || ch == '\\'') && scanner->scanStringsFlag) {\n         ungetChar(scanner, ch);\n         return scanString(scanner);\n      }\n      if (isdigit(ch) && scanner->scanNumbersFlag) {\n         ungetChar(scanner, ch);\n         return scanNumber(scanner);\n      }\n      if (isWordCharacter(scanner, ch)) {\n         ungetChar(scanner, ch);\n         return scanWord(scanner);\n      }\n      clear(scanner->sb);\n      pushChar(scanner->sb, ch);\n      while (isOperatorPrefix(scanner, getString(scanner->sb))) {\n         ch = getChar(scanner);\n         if (ch == EOF) break;\n         pushChar(scanner->sb, ch);\n      }\n      while (size(scanner->sb) > 1\n             && !isOperator(scanner, getString(scanner->sb))) {\n         ungetChar(scanner, ch);\n         popChar(scanner->sb);\n      }\n      return copyString(getString(scanner->sb));\n   }\n}\n\nvoid saveToken(TokenScanner scanner, string token) {\n   StringCell *cp;\n\n   cp = newBlock(StringCell *);\n   cp->str = token;\n   cp->link = scanner->savedTokens;\n   scanner->savedTokens = cp;\n}\n\nvoid ignoreWhitespace(TokenScanner scanner) {\n   scanner->ignoreWhitespaceFlag = true;\n}\n\nvoid ignoreComments(TokenScanner scanner) {\n   scanner->ignoreCommentsFlag = true;\n}\n\nvoid scanNumbers(TokenScanner scanner) {\n   scanner->scanNumbersFlag = true;\n}\n\nvoid scanStrings(TokenScanner scanner) {\n   scanner->scanStringsFlag = true;\n}\n\nvoid addWordCharacters(TokenScanner scanner, string str) {\n   appendString(scanner->wordChars, str);\n}\n\nvoid addOperator(TokenScanner scanner, string op) {\n   StringCell *cp;\n\n   cp = newBlock(StringCell *);\n   cp->str = op;\n   cp->link = scanner->operators;\n   scanner->operators = cp;\n}\n\nint getPosition(TokenScanner scanner) {\n   int pos;\n\n   if (scanner->infile == NULL) {\n      pos = scanner->cp;\n   } else {\n      pos = (int) ftell(scanner->infile);\n   }\n   if (scanner->savedTokens != NULL) {\n      if (scanner->savedTokens->link != NULL) return -1;\n      pos -= stringLength(scanner->savedTokens->str);\n   }\n   return pos;\n}\n\nbool isWordCharacter(TokenScanner scanner, char ch) {\n   return isalnum(ch) || findChar(ch, getString(scanner->wordChars), 0) != -1;\n}\n\nvoid verifyToken(TokenScanner scanner, string expected) {\n   string token;\n\n   token = nextToken(scanner);\n   if (!stringEqual(token, expected)) {\n      if (stringEqual(token, \"\\n\")) token = \"end of line\";\n      if (stringEqual(expected, \"\\n\")) expected = \"end of line\";\n      error(\"Found \\\"%s\\\" when expecting \\\"%s\\\"\", token, expected);\n   }\n   freeBlock(token);\n}\n\nTokenType getTokenType(TokenScanner scanner, string token) {\n   char ch;\n\n   if (stringLength(token) == 0) return (TokenType) EOF;\n   ch = token[0];\n   if (isspace(ch)) return SEPARATOR;\n   if ((ch == '\"' || ch == '\\'') && stringLength(token) > 1) return STRING;\n   if (isdigit(ch)) return NUMBER;\n   if (isWordCharacter(scanner, ch)) return WORD;\n   return OPERATOR;\n}\n\n\nint getChar(TokenScanner scanner) {\n   if (!isEmpty(scanner->savedChars)) return popChar(scanner->savedChars);\n   if (scanner->infile == NULL) {\n      if (scanner->cp >= scanner->len) {\n         return EOF;\n      } else {\n         return scanner->buffer[scanner->cp++];\n      }\n   } else {\n      scanner->charIsSaved = false;\n      return getc(scanner->infile);\n   }\n}\n\nvoid ungetChar(TokenScanner scanner, int ch) {\n   if (scanner->infile == NULL) {\n      if (scanner->cp == 0) error(\"Internal error: pushback before start\");\n      scanner->cp--;\n   } else {\n      if (scanner->charIsSaved) {\n         pushChar(scanner->savedChars, (char) ch);\n      } else {\n         ungetc(ch, scanner->infile);\n         scanner->charIsSaved = true;\n      }\n   }\n}\n\nstring getStringValue(string token) {\n   StringBuffer sb;\n   int i, base, start, finish, result, digit;\n   string str;\n   char ch;\n\n   sb = newStringBuffer();\n   start = 0;\n   finish = stringLength(token);\n   if (finish > 1 && (token[0] == '\"' || token[0] == '\\'')) {\n      start = 1;\n      finish--;\n   }\n   for (i = start; i < finish; i++) {\n      ch = token[i];\n      if (ch == '\\\\') {\n         ch = token[++i];\n         if (isdigit(ch) || ch == 'x') {\n            base = 8;\n            if (ch == 'x') {\n               base = 16;\n               i++;\n            }\n            result = 0;\n            digit = 0;\n            while (i < finish) {\n               ch = token[i];\n               if (isdigit(ch)) {\n                  digit = ch - '0';\n               } else if (isalpha(ch)) {\n                  digit = toupper(ch) - 'A' + 10;\n               } else {\n                  digit = base;\n               }\n               if (digit >= base) break;\n               result = base * result + digit;\n               i++;\n            }\n            ch = (char) result;\n            i--;\n         } else {\n            switch (ch) {\n             case 'a': ch = '\\a'; break;\n             case 'b': ch = '\\b'; break;\n             case 'f': ch = '\\f'; break;\n             case 'n': ch = '\\n'; break;\n             case 'r': ch = '\\r'; break;\n             case 't': ch = '\\t'; break;\n             case 'v': ch = '\\v'; break;\n             case '\"': ch = '\"'; break;\n             case '\\'': ch = '\\''; break;\n             case '\\\\': ch = '\\\\'; break;\n            }\n         }\n      }\n      pushChar(sb, ch);\n   }\n   str = copyString(getString(sb));\n   freeStringBuffer(sb);\n   return str;\n}\n\n/* Private methods */\n\nstatic void initScanner(TokenScanner scanner) {\n   scanner->ignoreWhitespaceFlag = false;\n   scanner->ignoreCommentsFlag = false;\n   scanner->scanNumbersFlag = false;\n   scanner->scanStringsFlag = false;\n   scanner->operators = NULL;\n   scanner->savedTokens = NULL;\n   scanner->sb = newStringBuffer();\n   scanner->savedChars = newStringBuffer();\n   scanner->wordChars = newStringBuffer();\n}\n\n/*\n * Implementation notes: skipSpaces\n * --------------------------------\n * Advances the position of the scanner until the current character is\n * not a whitespace character.  The string str is used to check that\n * a whitespace character is not included explicitly as an operator.\n */\n\nstatic void skipSpaces(TokenScanner scanner) {\n   char str[2];\n   int ch;\n\n   while (true) {\n      ch = getChar(scanner);\n      if (ch == EOF) return;\n      str[0] = ch;\n      str[1] = '\\0';\n      if (!(isspace(ch) && !isOperator(scanner, str))) {\n         ungetChar(scanner, ch);\n         return;\n      }\n   }\n}\n\n/*\n * Implementation notes: scanWord\n * ------------------------------\n * Reads characters until the scanner reaches the end of a sequence\n * of word characters.\n */\n\nstatic string scanWord(TokenScanner scanner) {\n   int ch;\n\n   clear(scanner->sb);\n   while (true) {\n      ch = getChar(scanner);\n      if (ch == EOF) break;\n      if (!isWordCharacter(scanner, ch)) {\n         ungetChar(scanner, ch);\n         break;\n      }\n      pushChar(scanner->sb, (char) ch);\n   }\n   return copyString(getString(scanner->sb));\n}\n\n/*\n * Implementation notes: scanNumber\n * --------------------------------\n * Reads characters until the scanner reaches the end of a legal number.\n * The function operates by simulating what computer scientists\n * call a finite-state machine.  The program uses the variable\n * <code>state</code> to record the history of the process and\n * determine what characters would be legal at this point in time.\n */\n\nstatic string scanNumber(TokenScanner scanner) {\n   NumberScannerState state;\n   int ch, xch;\n\n   clear(scanner->sb);\n   state = INITIAL_STATE;\n   while (state != FINAL_STATE) {\n      ch = getChar(scanner);\n      xch = 'e';\n      switch (state) {\n       case INITIAL_STATE:\n         if (!isdigit(ch)) {\n            error(\"Internal error: illegal call to scanNumber\");\n         }\n         state = BEFORE_DECIMAL_POINT;\n         break;\n       case BEFORE_DECIMAL_POINT:\n         if (ch == '.') {\n            state = AFTER_DECIMAL_POINT;\n         } else if (ch == 'E' || ch == 'e') {\n            state = STARTING_EXPONENT;\n            xch = ch;\n         } else if (!isdigit(ch)) {\n            if (ch != EOF) ungetChar(scanner, ch);\n            state = FINAL_STATE;\n         }\n         break;\n       case AFTER_DECIMAL_POINT:\n         if (ch == 'E' || ch == 'e') {\n            state = STARTING_EXPONENT;\n            xch = ch;\n         } else if (!isdigit(ch)) {\n            if (ch != EOF) ungetChar(scanner, ch);\n            state = FINAL_STATE;\n         }\n         break;\n       case STARTING_EXPONENT:\n         if (ch == '+' || ch == '-') {\n            state = FOUND_EXPONENT_SIGN;\n         } else if (isdigit(ch)) {\n            state = SCANNING_EXPONENT;\n         } else {\n            if (ch != EOF) ungetChar(scanner, ch);\n            ungetChar(scanner, ch);\n            state = FINAL_STATE;\n         }\n         break;\n       case FOUND_EXPONENT_SIGN:\n         if (isdigit(ch)) {\n            state = SCANNING_EXPONENT;\n         } else {\n            if (ch != EOF) ungetChar(scanner, ch);\n            ungetChar(scanner, ch);\n            ungetChar(scanner, ch);\n            state = FINAL_STATE;\n         }\n         break;\n       case SCANNING_EXPONENT:\n         if (!isdigit(ch)) {\n            if (ch != EOF) ungetChar(scanner, ch);\n            state = FINAL_STATE;\n         }\n         break;\n       default:\n         state = FINAL_STATE;\n         break;\n      }\n      if (state != FINAL_STATE) {\n         pushChar(scanner->sb, (char) ch);\n      }\n   }\n   return copyString(getString(scanner->sb));\n}\n\n/*\n * Implementation notes: scanString\n * --------------------------------\n * Reads and returns a quoted string from the scanner, continuing until\n * it scans the matching delimiter.  The scanner generates an error if\n * there is no closing quotation mark before the end of the input.\n */\n\nstatic string scanString(TokenScanner scanner) {\n   bool escape;\n   char delim;\n   int ch;\n\n   clear(scanner->sb);\n   delim = getChar(scanner);\n   pushChar(scanner->sb, delim);\n   escape = false;\n   while (true) {\n      ch = getChar(scanner);\n      if (ch == EOF) error(\"TokenScanner found unterminated string\");\n      if (ch == delim && !escape) break;\n      escape = (ch == '\\\\') && !escape;\n      pushChar(scanner->sb, (char) ch);\n   }\n   pushChar(scanner->sb, delim);\n   return copyString(getString(scanner->sb));\n}\n\n/*\n * Implementation notes: isOperator, isOperatorPrefix\n * --------------------------------------------------\n * These methods search the list of operators and return true if the\n * specified operator is either in the list or a prefix of an operator\n * in the list, respectively.  This code could be made considerably more\n * efficient by implementing operators as a trie.\n */\n\nstatic bool isOperator(TokenScanner scanner, string op) {\n   StringCell *cp;\n\n   for (cp = scanner->operators; cp != NULL; cp = cp->link) {\n      if (stringEqual(op, cp->str)) return true;\n   }\n   return false;\n}\n\nstatic bool isOperatorPrefix(TokenScanner scanner, string op) {\n   StringCell *cp;\n\n   for (cp = scanner->operators; cp != NULL; cp = cp->link) {\n      if (startsWith(cp->str, op)) return true;\n   }\n   return false;\n}\n\nstatic void freeStringList(StringCell *cp) {\n   StringCell *next;\n   while (cp != NULL) {\n      next = cp->link;\n      freeBlock(cp);\n      cp = next;\n   }\n}\n\n/**********************************************************************/\n/* Unit test for the tokenscanner module                              */\n/**********************************************************************/\n\n#ifndef _NOTEST_\n\n/* Unit test */\n\nstatic void testStringScanner(void);\nstatic void testStreamScanner(void);\nstatic void testScannerNoOptions(void);\nstatic void testScannerLanguageOptions(void);\nstatic void testScanNumbers(void);\nstatic void testScanEscapeSequences(void);\n\nvoid testTokenScannerModule(void) {\n   testStringScanner();\n   testStreamScanner();\n   testScanEscapeSequences();\n}\n\nstatic void testStringScanner(void) {\n   testScannerNoOptions();\n   testScannerLanguageOptions();\n   testScanNumbers();\n}\n\nstatic void testStreamScanner(void) {\n   TokenScanner scanner;\n   FILE *infile;\n\n   trace(scanner = newTokenScanner());\n   trace(infile = fopen(\"tokenscanner.h\", \"r\"));\n   test(infile == NULL, false);\n   if (infile == NULL) return;\n   trace(setInputFile(scanner, infile));\n   test(hasMoreTokens(scanner), true);\n   test(nextToken(scanner), \"/\");\n   test(nextToken(scanner), \"*\");\n   test(hasMoreTokens(scanner), true);\n   test(nextToken(scanner), \"\\n\");\n   test(hasMoreTokens(scanner), true);\n   test(nextToken(scanner), \" \");\n   test(nextToken(scanner), \"*\");\n   test(nextToken(scanner), \" \");\n   test(nextToken(scanner), \"File\");\n   trace(ignoreWhitespace(scanner));\n   trace(scanStrings(scanner));\n   test(nextToken(scanner), \":\");\n   test(nextToken(scanner), \"tokenscanner\");\n   test(nextToken(scanner), \".\");\n   test(nextToken(scanner), \"h\");\n   test(nextToken(scanner), \"*\");\n   test(nextToken(scanner), \"-\");\n   trace(fclose(infile));\n}\n\nstatic void testScannerNoOptions(void) {\n   TokenScanner scanner;\n   string token;\n\n   trace(scanner = newTokenScanner());\n   trace(setInputString(scanner, \"cout << \\\"pi = \\\" << 3.14159265 << endl;\"));\n   test(hasMoreTokens(scanner), true);\n   test(token = nextToken(scanner), \"cout\");\n   test(getTokenType(scanner, token), (int) WORD);\n   test(token = nextToken(scanner), \" \");\n   test(getTokenType(scanner, token), (int) SEPARATOR);\n   test(token = nextToken(scanner), \"<\");\n   test(getTokenType(scanner, token), (int) OPERATOR);\n   test(nextToken(scanner), \"<\");\n   test(nextToken(scanner), \" \");\n   test(nextToken(scanner), \"\\\"\");\n   test(nextToken(scanner), \"pi\");\n   test(nextToken(scanner), \" \");\n   test(nextToken(scanner), \"=\");\n   test(nextToken(scanner), \" \");\n   test(nextToken(scanner), \"\\\"\");\n   test(nextToken(scanner), \" \");\n   test(nextToken(scanner), \"<\");\n   test(nextToken(scanner), \"<\");\n   test(nextToken(scanner), \" \");\n   test(token = nextToken(scanner), \"3\");\n   test(getTokenType(scanner, token), (int) NUMBER);\n   test(nextToken(scanner), \".\");\n   test(nextToken(scanner), \"14159265\");\n   test(nextToken(scanner), \" \");\n   test(nextToken(scanner), \"<\");\n   test(nextToken(scanner), \"<\");\n   test(nextToken(scanner), \" \");\n   test(nextToken(scanner), \"endl\");\n   test(nextToken(scanner), \";\");\n   test(hasMoreTokens(scanner), false);\n   test(token = nextToken(scanner), \"\");\n   test(getTokenType(scanner, token), (int) EOF);\n}\n\nstatic void testScannerLanguageOptions(void) {\n   TokenScanner scanner;\n   string token;\n\n   trace(scanner = newTokenScanner());\n   trace(ignoreWhitespace(scanner));\n   trace(scanStrings(scanner));\n   trace(scanNumbers(scanner));\n   trace(addWordCharacters(scanner, \"_\"));\n   trace(addOperator(scanner, \"==\"));\n   trace(addOperator(scanner, \"!=\"));\n   trace(addOperator(scanner, \"<=\"));\n   trace(addOperator(scanner, \">=\"));\n   trace(addOperator(scanner, \"<<\"));\n   trace(addOperator(scanner, \">>\"));\n   trace(addOperator(scanner, \"++\"));\n   trace(addOperator(scanner, \"--\"));\n   trace(addOperator(scanner, \"->\"));\n   trace(addOperator(scanner, \"&&\"));\n   trace(addOperator(scanner, \"||\"));\n   trace(setInputString(scanner, \"cout << \\\"pi = \\\" << 3.14159265 << endl;\"));\n   test(hasMoreTokens(scanner), true);\n   test(nextToken(scanner), \"cout\");\n   test(nextToken(scanner), \"<<\");\n   test(token = nextToken(scanner), \"\\\"pi = \\\"\");\n   test(getTokenType(scanner, token), (int) STRING);\n   test(nextToken(scanner), \"<<\");\n   test(token = nextToken(scanner), \"3.14159265\");\n   test(getTokenType(scanner, token), (int) NUMBER);\n   test(nextToken(scanner), \"<<\");\n   test(nextToken(scanner), \"endl\");\n   test(nextToken(scanner), \";\");\n   test(hasMoreTokens(scanner), false);\n   test(nextToken(scanner), \"\");\n   trace(setInputString(scanner, \"if (a_1<=b+++_c &&&x!=4)\"));\n   test(nextToken(scanner), \"if\");\n   test(nextToken(scanner), \"(\");\n   test(token = nextToken(scanner), \"a_1\");\n   test(getTokenType(scanner, token), (int) WORD);\n   test(nextToken(scanner), \"<=\");\n   test(nextToken(scanner), \"b\");\n   test(nextToken(scanner), \"++\");\n   test(nextToken(scanner), \"+\");\n   test(token = nextToken(scanner), \"_c\");\n   test(getTokenType(scanner, token), (int) WORD);\n   test(nextToken(scanner), \"&&\");\n   test(nextToken(scanner), \"&\");\n   test(nextToken(scanner), \"x\");\n   test(nextToken(scanner), \"!=\");\n   test(nextToken(scanner), \"4\");\n   test(nextToken(scanner), \")\");\n   test(hasMoreTokens(scanner), false);\n   test(nextToken(scanner), \"\");\n}\n\nstatic void testScanNumbers(void) {\n   TokenScanner scanner;\n\n   trace(scanner = newTokenScanner());\n   trace(ignoreWhitespace(scanner));\n   trace(scanNumbers(scanner));\n   trace(setInputString(scanner, \"42 73x 3.14159265 6.28E-25\"));\n   test(getChar(scanner), '4');\n   trace(ungetChar(scanner, '4'));\n   test(nextToken(scanner), \"42\");\n   test(nextToken(scanner), \"73\");\n   test(nextToken(scanner), \"x\");\n   test(nextToken(scanner), \"3.14159265\");\n   test(nextToken(scanner), \"6.28E-25\");\n   test(hasMoreTokens(scanner), false);\n}\n\nstatic void testScanEscapeSequences(void) {\n   TokenScanner scanner;\n   string token;\n\n   trace(scanner = newTokenScanner());\n   trace(scanStrings(scanner));\n   trace(setInputString(scanner, \"'A'\"));\n   trace(token = nextToken(scanner));\n   test(token, \"'A'\");\n   test(getStringValue(token), \"A\");\n   trace(setInputString(scanner, \"\\\"Quoted String\\\"\"));\n   trace(token = nextToken(scanner));\n   test(token, \"\\\"Quoted String\\\"\");\n   test(getStringValue(token), \"Quoted String\");\n   trace(setInputString(scanner, \"\\\"\\\\\\\"Bother\\\\\\\" said Pooh.\\\"\"));\n   trace(token = nextToken(scanner));\n   test(token, \"\\\"\\\\\\\"Bother\\\\\\\" said Pooh.\\\"\");\n   test(getStringValue(token), \"\\\"Bother\\\" said Pooh.\");\n   trace(setInputString(scanner, \"\\\"\\\\xFF\\\\007\\\\a\\\\t\\\"\"));\n   trace(token = nextToken(scanner));\n   test(token, \"\\\"\\\\xFF\\\\007\\\\a\\\\t\\\"\");\n   test(getStringValue(token), \"\\377\\007\\a\\t\");\n}\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/tokenscanner.h",
    "content": "/*\n * File: tokenscanner.h\n * --------------------\n * This interface exports a scanner facility that divides a string into\n * individual tokens.\n */\n\n#ifndef _tokenscanner_h\n#define _tokenscanner_h\n\n#include \"cslib.h\"\n#include \"private/tokenpatch.h\"\n\n/*\n * Type: TokenType\n * ---------------\n * This enumerated type defines the values of the\n * <code>getTokenType</code> method.\n */\n\ntypedef enum { SEPARATOR, WORD, NUMBER, STRING, OPERATOR } TokenType;\n\n/*\n * Type: TokenScanner\n * ------------------\n * This abstract type divides a string into individual tokens.  The\n * typical use of the <code>TokenScanner</code> ADT is illustrated by\n * the following pattern, which reads the tokens in the string variable\n * <code>input</code>:\n *\n *<pre>\n *    string token;\n *    TokenScanner scanner;\n *\n *    scanner = newTokenScanner();\n *    setInputString(scanner, input);\n *    while (hasMoreTokens(scanner)) {\n *       token = nextToken(scanner);\n *       . . . process the token . . .\n *       freeBlock(token);\n *    }\n *    freeTokenScanner(scanner);\n *</pre>\n *\n * The <code>TokenScanner</code> ADT exports several additional methods\n * that give clients more control over its behavior.  Those methods are\n * described individually in the documentation.\n */\n\ntypedef struct TokenScannerCDT *TokenScanner;\n\n/*\n * Function: newTokenScanner\n * Usage: scanner = newTokenScanner();\n * -----------------------------------\n * Creates a new <code>TokenScanner</code> with an empty token stream.\n * Before using the scanner, an input stream must be set by calling\n * either <code>setInputString</code> or <code>setInputFile</code>.\n */\n\nTokenScanner newTokenScanner(void);\n\n/*\n * Function: freeTokenScanner\n * Usage: freeTokenScanner(scanner);\n * ---------------------------------\n * Frees the storage associated with the <code>TokenScanner</code>.\n */\n\nvoid freeTokenScanner();\n\n/*\n * Function: setInputString\n * Usage: setInputString(scanner, str);\n * ------------------------------------\n * Sets the token stream for this scanner to the specified string.\n */\n\nvoid setInputString(TokenScanner scanner, string str);\n\n/*\n * Function: setInputFile\n * Usage: setInputFile(scanner, infile);\n * -------------------------------------\n * Sets the token stream for this scanner to the specified file,\n * which must be open for input.\n */\n\nvoid setInputFile(TokenScanner scanner, FILE *infile);\n\n/*\n * Function: hasMoreTokens\n * Usage: if (hasMoreTokens(scanner)) . . .\n * ----------------------------------------\n * Returns <code>true</code> if there are additional tokens for this\n * scanner to read.\n */\n\nbool hasMoreTokens(TokenScanner scanner);\n\n/*\n * Function: nextToken\n * Usage: token = nextToken(scanner);\n * ----------------------------------\n * Returns the next token from this   If <code>nextToken</code>\n * is called when no tokens are available, it returns the empty string.\n */\n\nstring nextToken(TokenScanner scanner);\n\n/*\n * Function: saveToken\n * Usage: saveToken(scanner, token);\n * ---------------------------------\n * Pushes the specified token back into this scanner's input stream.\n * On the next call to <code>nextToken</code>, the scanner will return\n * the saved token without reading any additional characters from the\n * token stream.\n */\n\nvoid saveToken(TokenScanner scanner, string token);\n\n/*\n * Function: getPosition\n * Usage: pos = getPosition(scanner);\n * ----------------------------------\n * Returns the current position of the scanner in the input stream.\n * If <code>saveToken</code> has been called, this position corresponds\n * to the beginning of the saved token.  If <code>saveToken</code> is\n * called more than once, <code>getPosition</code> returns -1.\n */\n\nint getPosition(TokenScanner scanner);\n\n/*\n * Function: ignoreWhitespace\n * Usage: ignoreWhitespace(scanner);\n * ---------------------------------\n * Tells the scanner to ignore whitespace characters.  By default,\n * the <code>nextToken</code> method treats whitespace characters\n * (typically spaces and tabs) just like any other punctuation mark\n * and returns them as single-character tokens.\n * Calling\n *\n *<pre>\n *    ignoreWhitespace(scanner);\n *</pre>\n *\n * changes this behavior so that the scanner ignore whitespace characters.\n */\n\nvoid ignoreWhitespace(TokenScanner scanner);\n\n/*\n * Function: ignoreComments\n * Usage: ignoreComments(scanner);\n * -------------------------------\n * Tells the scanner to ignore comments.  The scanner package recognizes\n * both the slash-star and slash-slash comment format from the C-based\n * family of languages.  Calling\n *\n *<pre>\n *    ignoreComments(scanner);\n *</pre>\n *\n * sets the parser to ignore comments.\n */\n\nvoid ignoreComments(TokenScanner scanner);\n\n/*\n * Function: scanNumbers\n * Usage: scanNumbers(scanner);\n * ----------------------------\n * Controls how the scanner treats tokens that begin with a digit.  By\n * default, the <code>nextToken</code> method treats numbers and letters\n * identically and therefore does not provide any special processing for\n * numbers.  Calling\n *\n *<pre>\n *    scanNumbers(scanner);\n *</pre>\n *\n * changes this behavior so that <code>nextToken</code> returns the\n * longest substring that can be interpreted as a real number.\n */\n\nvoid scanNumbers(TokenScanner scanner);\n\n/*\n * Function: scanStrings\n * Usage: scanStrings(scanner);\n * ----------------------------\n * Controls how the scanner treats tokens enclosed in quotation marks.  By\n * default, quotation marks (either single or double) are treated just like\n * any other punctuation character.  Calling\n *\n *<pre>\n *    scanStrings(scanner);\n *</pre>\n *\n * changes this assumption so that <code>nextToken</code> returns a single\n * token consisting of all characters through the matching quotation mark.\n * The quotation marks are returned as part of the scanned token so that\n * clients can differentiate strings from other token types.\n */\n\nvoid scanStrings(TokenScanner scanner);\n\n/*\n * Function: addWordCharacters\n * Usage: addWordCharacters(scanner, str);\n * ---------------------------------------\n * Adds the characters in <code>str</code> to the set of characters\n * legal in a <code>WORD</code> token.  For example, calling\n * <code>addWordCharacters(\"_\")</code> adds the underscore to the\n * set of characters that are accepted as part of a word.\n */\n\nvoid addWordCharacters(TokenScanner scanner, string str);\n\n/*\n * Function: isWordCharacter\n * Usage: if (isWordCharacter(scanner, ch)) . . .\n * ----------------------------------------------\n * Returns <code>true</code> if the character is valid in a word.\n */\n\nbool isWordCharacter(TokenScanner scanner, char ch);\n\n/*\n * Function: addOperator\n * Usage: addOperator(scanner, op);\n * --------------------------------\n * Defines a new multicharacter operator.  Whenever you call\n * <code>nextToken</code> when the input stream contains operator\n * characters, the scanner returns the longest possible operator\n * string that can be read at that point.\n */\n\nvoid addOperator(TokenScanner scanner, string op);\n\n/*\n * Function: verifyToken\n * Usage: verifyToken(scanner, expected);\n * --------------------------------------\n * Reads the next token and makes sure it matches the string\n * <code>expected</code>.  If it does not, <code>verifyToken</code>\n * throws an error.\n */\n\nvoid verifyToken(TokenScanner scanner, string expected);\n\n/*\n * Function: getTokenType\n * Usage: type = getTokenType(scanner, token);\n * -------------------------------------------\n * Returns the type of this token.  This type will match one of the\n * following enumerated type constants: <code>EOF</code>,\n * <code>SEPARATOR</code>, <code>WORD</code>, <code>NUMBER</code>,\n * <code>STRING</code>, or <code>OPERATOR</code>.\n */\n\nTokenType getTokenType(TokenScanner scanner, string token);\n\n/*\n * Method: getChar\n * Usage: int ch = getChar(scanner);\n * ---------------------------------\n * Reads the next character from the scanner input stream.\n */\n\nint getChar(TokenScanner scanner);\n\n/*\n * Method: ungetChar\n * Usage: ungetChar(scanner, ch);\n * ------------------------------\n * Pushes the character <code>ch</code> back into the scanner stream.\n * The character must match the one that was read.\n */\n\nvoid ungetChar(TokenScanner scanner, int ch);\n\n/*\n * Function: getStringValue\n * Usage: str = getStringValue(token);\n * -----------------------------------\n * Returns the string value of a token.  This value is formed by removing\n * any surrounding quotation marks and replacing escape sequences by the\n * appropriate characters.\n */\n\nstring getStringValue(string token);\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/unittest.c",
    "content": "/*\n * File: unittest.c\n * ----------------\n * This file implements the unittest.h interface.\n */\n\n#include <stdio.h>\n#include <ctype.h>\n#include <stdarg.h>\n#include \"cslib.h\"\n#include \"generic.h\"\n#include \"strlib.h\"\n#include \"unittest.h\"\n\n/* Constants */\n\n#define MAX_HEX 20\n\n/* Private function prototypes */\n\nstatic void displayModuleHeader(void);\nstatic void reportTest(bool test, string exp, string value, string fmt, ...);\nstatic char classifyValueType(string value);\nstatic bool startsWithTypeCast(string value);\n\n/* Private variables */\n\nstatic int errorCount;\nstatic int indentation;\nstatic bool verbose;\nstatic string moduleName;\nstatic string lastModule = NULL;\nstatic bool first = true;\n\n/* Exported entries */\n\nvoid uTTest(string exp, string value, ...) {\n   va_list args;\n   bool b1, b2;\n   double d1, d2;\n   int i1, i2;\n   string s1, s2;\n   void *v1, *v2;\n   char hex1[MAX_HEX], hex2[MAX_HEX];\n\n   va_start(args, value);\n   switch (classifyValueType(value)) {\n     case 'B':\n       b1 = va_arg(args, bool);\n       b2 = va_arg(args, bool);\n       reportTest(b1 == b2, exp, value, b1 ? \"true\" : \"false\");\n       break;\n     case 'C':\n       i1 = va_arg(args, int);\n       i2 = va_arg(args, int);\n       reportTest(i1 == i2, exp, value, \"'%c'\", i1);\n       break;\n     case 'D':\n       d1 = va_arg(args, double);\n       d2 = va_arg(args, double);\n       reportTest(d1 == d2, exp, value, \"%g\", d1);\n       break;\n     case 'I':\n       i1 = va_arg(args, int);\n       i2 = va_arg(args, int);\n       reportTest(i1 == i2, exp, value, \"%d\", i1);\n       break;\n     case 'N':\n       s1 = va_arg(args, string);\n       reportTest((void *) s1 == NULL, exp, \"NULL\", \"%s\", s1);\n       break;\n     case 'S':\n       s1 = va_arg(args, string);\n       s2 = va_arg(args, string);\n       value = quoteString(s2);\n       reportTest(stringEqual(s1, s2), exp, value, \"%s\", quoteString(s1));\n       break;\n     case 'V':\n       v1 = va_arg(args, void *);\n       v2 = va_arg(args, void *);\n       sprintf(hex1, \" 0x%lX\", (unsigned long) v1);\n       sprintf(hex2, \" 0x%lX\", (unsigned long) v2);\n       value = substring(value, 0, findChar(')', value, 0));\n       s1 = concat(value, hex1);\n       s2 = concat(value, hex2);\n       reportTest(v1 == v2, exp, s2, \"%s\", s1);\n       break;\n   }\n   va_end(args);\n}\n\nint testModule(string name, proc fn) {\n   string plural;\n\n   moduleName = startsWith(name, \"test\") ? name + 4 : name;\n   indentation = 0;\n   errorCount = 0;\n   fn();\n   plural = (errorCount == 1) ? \"\" : \"s\";\n   printf(\"Module %s: %d error%s\\n\", moduleName, errorCount, plural);\n   return errorCount;\n}\n\nvoid setVerboseTestingFlag(bool flag) {\n   verbose = flag;\n}\n\nbool getVerboseTestingFlag(void) {\n   return verbose;\n}\n\nvoid reportError(string msg, ...) {\n   va_list args;\n\n   if (msg != NULL) {\n      va_start(args, msg);\n      displayModuleHeader();\n      printf(\"?? %*s\", indentation, \"\");\n      vprintf(msg, args);\n      printf(\" ??\\n\");\n      va_end(args);\n   }\n   errorCount++;\n}\n\nvoid reportMessage(string msg, ...) {\n   va_list args;\n\n   if (getVerboseTestingFlag()) {\n      va_start(args, msg);\n      displayModuleHeader();\n      printf(\"   %*s\", indentation, \"\");\n      vprintf(msg, args);\n      printf(\"\\n\");\n      va_end(args);\n   }\n}\n\nvoid setReportIndentation(int indent) {\n   indentation = indent;\n}\n\nint getReportIndentation(void) {\n   return indentation;\n}\n\nvoid adjustReportIndentation(int delta) {\n   indentation += delta;\n}\n\n/* Private methods */\n\nstatic void displayModuleHeader(void) {\n   if (moduleName != lastModule) {\n      if (!first) printf(\"\\n\");\n      printf(\"Testing %s:\\n\", moduleName);\n      lastModule = moduleName;\n      first = false;\n   }\n}\n\nstatic void reportTest(bool test, string exp, string value, string fmt, ...) {\n   va_list args;\n\n   if (test) {\n      if (verbose) {\n         displayModuleHeader();\n         printf(\"   %*s%s\", indentation, \"\", exp);\n         if (value != NULL) {\n            printf(\" -> %s\", value);\n         }\n         printf(\"\\n\");\n      }\n   } else {\n      displayModuleHeader();\n      printf(\"?? %*s%s\", indentation, \"\", exp);\n      if (value != NULL) {\n         printf(\" -> \");\n         va_start(args, fmt);\n         vprintf(fmt, args);\n         va_end(args);\n         printf(\" (should be %s)\", value);\n      }\n      printf(\" ??\\n\");\n      errorCount++;\n   }\n}\n\nstatic char classifyValueType(string value) {\n   char type, ch;\n   int i;\n\n   if (stringEqual(value, \"NULL\")) return 'N';\n   if (stringEqual(value, \"true\") || stringEqual(value, \"false\")) return 'B';\n   if (startsWith(value, \"(bool)\")) return 'B';\n   if (startsWith(value, \"'\") || startsWith(value, \"(char)\")) return 'C';\n   if (startsWith(value, \"(int)\")) return 'I';\n   if (startsWith(value, \"(double)\")) return 'D';\n   if (startsWith(value, \"(string)\")) return 'S';\n   if (startsWithTypeCast(value)) return 'P';\n   type = 'I';\n   for (i = 0; (ch = value[i]) != '\\0'; i++) {\n      if (ch == '.' || ch == 'E' || ch == 'e') {\n         type = 'D';\n      } else if (!isdigit(ch) && ch != '+' && ch != '-') {\n         return 'S';\n      }\n   }\n   return type;\n}\n\nstatic bool startsWithTypeCast(string value) {\n   char ch;\n   int i;\n\n   if (value[0] != '(') return false;\n   for (i = 1; (ch = value[i]) != '\\0'; i++) {\n      if (ch == ')') return (i > 1) && (value[i + 1] != '\\0');\n      if (!isalpha(ch)) return false;\n   }\n   return false;\n}\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/unittest.h",
    "content": "/*\n * File: unittest.h\n * ----------------\n * This interface exports several functions that facilitate writing unit\n * tests for packages.\n */\n\n#ifndef _unittest_h\n#define _unittest_h\n\n#include <stdarg.h>\n#include \"cslib.h\"\n#include \"exception.h\"\n\nextern void uTTest(string exp, string value, ...);\n\n/*\n * Function: trace\n * Usage: trace(exp);\n * ------------------\n * Tests to make sure that a procedure does not generate any calls\n * to <code>error</code>.\n */\n\n#define trace(exp) { \\\n   try { \\\n      reportMessage(\"%s;\", #exp); \\\n      exp; \\\n   } catch (ErrorException) { \\\n      reportError(\"%s throws \\\"%s\\\"\", #exp, getExceptionValue()); \\\n   } endtry \\\n}\n\n/*\n * Function: test\n * Usage: test(exp, value);\n * ------------------------\n * Tests to make sure that a function computes a specified value.  The\n * first argument is an expression (typically a function call in the\n * module under test), and the second argument is the expected value,\n * which must be of one of the following types:\n *\n * <p><ul>\n * <li><code>bool</code>\n * <li><code>char</code>\n * <li><code>double</code>\n * <li><code>int</code>\n * <li><code>string</code>\n * </ul>\n */\n\n#define test(exp, value) { \\\n   try { \\\n      uTTest(#exp, #value, exp, value); \\\n   } catch (ErrorException) { \\\n      reportError(\"%s throws \\\"%s\\\"\", #exp, getExceptionValue()); \\\n   } endtry \\\n}\n\n/*\n * Function: testError\n * Usage: testError(exp);\n * ----------------------\n * Tests to make sure that a method call generates an error.\n */\n\n#define testError(exp) { \\\n   int indent = getReportIndentation(); \\\n   try { \\\n      exp; \\\n      setReportIndentation(indent); \\\n      reportError(\"%s should generate an error\", #exp); \\\n   } catch (ErrorException) { \\\n      setReportIndentation(indent); \\\n      reportMessage(\"%s throws \\\"%s\\\"\", #exp, getExceptionValue()); \\\n   } catch (ANY) { \\\n      setReportIndentation(indent); \\\n      reportMessage(\"%s throws \\\"%s\\\"\", #exp, getExceptionName()); \\\n   } endtry \\\n}\n\n/*\n * Function: testModule\n * Usage: errorCount = testModule(name, fn);\n * -----------------------------------------\n * Runs the specified test method and generates a report.  The\n * second parameter must be the name of a test function inside\n * the named package.\n */\n\nint testModule(string name, proc fn);\n\n/*\n * Function: setVerboseTestingFlag\n * Usage: setVerboseTestingFlag(flag);\n * -----------------------------------\n * Sets a global flag that determines whether the test process\n * traces all the test operations.\n */\n\nvoid setVerboseTestingFlag(bool flag);\n\n/*\n * Function: getVerboseTestingFlag\n * Usage: flag = getVerboseTestingFlag();\n * --------------------------------------\n * Returns the setting of the verbose testing flag.\n */\n\nbool getVerboseTestingFlag(void);\n\n/*\n * Function: reportError\n * Usage: reportError(msg, ...);\n * -----------------------------\n * Reports an error in the current package.  If <code>msg</code> is\n * <code>NULL</code>, the error counter is incremented, but no\n * message is generated.\n */\n\nvoid reportError(string msg, ...);\n\n/*\n * Function: reportMessage\n * Usage: reportMessage(msg, ...);\n * -------------------------------\n * Generates a line of output if verbose tracing in enabled.\n */\n\nvoid reportMessage(string msg, ...);\n\n/*\n * Function: setReportIndentation\n * Usage: setReportIndentation(indent);\n * ------------------------------------\n * Sets the indentation in the <code>reportError</code> and\n * <code>reportMessage</code>, which allows test script designers\n * to improve readability of the verbose output.  In most cases,\n * clients will not use <code>setReportIndentation</code> directly\n * but will instead rely on <code>adjustReportIndentation</code>.\n * This call, however, is necessary for tests that throw errors\n * or other exceptions.\n */\n\nvoid setReportIndentation(int indent);\n\n/*\n * Function: getReportIndentation\n * Usage: indent = getReportIndentation();\n * ---------------------------------------\n * Gets the current indentation used in the <code>reportError</code>\n * and <code>reportMessage</code> calls.  In most cases, clients\n * will not use <code>getReportIndentation</code> directly but will\n * instead rely on <code>adjustReportIndentation</code>.\n */\n\nint getReportIndentation(void);\n\n/*\n * Function: adjustReportIndentation\n * Usage: adjustReportIndentation(delta);\n * --------------------------------------\n * Adjusts the indentation in the <code>reportError</code> and\n * <code>reportMessage</code> calls to improve readability of\n * the verbose output.\n */\n\nvoid adjustReportIndentation(int delta);\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/unixfile.c",
    "content": "/*\n * File: unixfile.c\n * Last modified on Fri Sep 26 09:34:55 2014 by eroberts\n * -----------------------------------------------------\n * Implements the filelib.h interface for unix or unix-like systems\n * (including Mac OS X running standalone applications).  The entire\n * file compiles only on such systems and is empty on other platforms.\n */\n\n#ifdef __unix__\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <ctype.h>\n#include <string.h>\n#include <errno.h>\n#include <pwd.h>\n#include <sys/types.h>\n#include <sys/stat.h>\n#include <dirent.h>\n#include <unistd.h>\n#include \"cslib.h\"\n#include \"filelib.h\"\n#include \"strlib.h\"\n#include \"vector.h\"\n\nstatic string SKIP_FILES[] = {\n   \".\",\n   \"..\",\n   \".DS_Store\",\n   NULL\n};\n\nstatic int alphaCompare(const void *p1, const void *p2) {\n   return strcmp(*(string *) p1, *(string *) p2);\n}\n\nstring getDirectoryPathSeparator(void) {\n   return \"/\";\n}\n\nstring getSearchPathSeparator(void) {\n   return \":\";\n}\n\nbool fileExists(string path) {\n   struct stat sblk;\n   return stat(path, &sblk) == 0;\n}\n\nbool isFile(string path) {\n   struct stat sblk;\n   if (lstat(path, &sblk) != 0) return false;\n   return (sblk.st_mode & S_IFMT) == S_IFREG;\n}\n\nbool isSymbolicLink(string path) {\n   struct stat sblk;\n   if (lstat(path, &sblk) != 0) return false;\n   return (sblk.st_mode & S_IFMT) == S_IFLNK;\n}\n\nbool isDirectory(string path) {\n   struct stat sblk;\n   if (lstat(path, &sblk) != 0) return false;\n   return (sblk.st_mode & S_IFMT) == S_IFDIR;\n}\n\nvoid createDirectory(string path) {\n   if (endsWith(path, \"/\")) {\n      path = substring(path, 0, stringLength(path) - 2);\n   }\n   if (mkdir(path, 0777) != 0) {\n      if (errno == EEXIST && isDirectory(path)) return;\n      error(\"createDirectory: %s\", strerror(errno));\n   }\n}\n\nvoid deleteFile(string filename) {\n   if (unlink(filename) != 0) {\n      if (errno == ENOENT) return;\n      error(\"deleteFile: %s\", strerror(errno));\n   }\n}\n\nvoid renameFile(string oldname, string newname) {\n   if (rename(oldname, newname) != 0) {\n      error(\"renameFile: %s\", strerror(errno));\n   }\n}\n\nstring *listDirectory(string path) {\n   string *result, name;\n   struct dirent *dp;\n   DIR *dir;\n   Vector list;\n   int i, n;\n\n   if (path == NULL) path = \".\";\n   path = expandPathname(path);\n   dir = opendir(path);\n   if (dir == NULL) error(\"listDirectory: Can't open directory %s\", path);\n   list = newVector();\n   while (true) {\n      dp = readdir(dir);\n      if (dp == NULL) break;\n      name = dp->d_name;\n      if (searchStringArray(name, SKIP_FILES) == -1) {\n         add(list, copyString(name));\n      }\n   }\n   closedir(dir);\n   n = size(list);\n   result = newArray(n + 1, string);\n   for (i = 0; i < n; i++) {\n      result[i] = get(list, i);\n   }\n   result[n] = NULL;\n   freeVector(list);\n   qsort(result, n, sizeof(string), alphaCompare);\n   return result;\n}\n\nvoid setCurrentDirectory(string path) {\n   chdir(path);\n}\n\nstring getCurrentDirectory(void) {\n   string cwd, result;\n\n   cwd = getcwd(NULL, 0);\n   result = copyString(cwd);\n   free(cwd);\n   return result;\n}\n\nstring expandPathname(string filename) {\n   string homedir;\n   char *spos;\n   struct passwd *pw;\n\n   if (*filename == '~') {\n      spos = filename;\n      while ((*spos != '/') && (*spos != '\\\\') && (*spos != '\\0')) {\n         spos++;\n      }\n      if (spos - filename == 1) {\n         homedir = getenv(\"HOME\");\n         if (homedir == NULL) homedir = getpwuid(getuid())->pw_dir;\n      } else {\n         homedir = substring(filename, 1, spos - filename - 1);\n         pw = getpwnam(homedir);\n         if (pw == NULL) error(\"expandPathname: No user %s\", homedir);\n         homedir = pw->pw_dir;\n      }\n      filename = concat(homedir, spos);\n   } else {\n      filename = copyString(filename);\n   }\n   for (spos = filename; *spos != '\\0'; spos++) {\n      if (*spos == '\\\\') *spos = '/';\n   }\n   return filename;\n}\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/unixfile.e",
    "content": "# 1 \"unixfile.c\"\n# 1 \"/Users/eroberts/source/cslib//\"\n# 1 \"<built-in>\"\n# 1 \"<command-line>\"\n# 1 \"unixfile.c\"\n# 13 \"unixfile.c\"\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Headers/CoreServices.h\" 1 3\n# 21 \"/System/Library/Frameworks/CoreServices.framework/Headers/CoreServices.h\" 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AE.h\" 1 3\n# 20 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AE.h\" 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 1 3\n# 20 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 3\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 1 3\n# 11 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 3\n# 1 \"/usr/include/sys/types.h\" 1 3 4\n# 72 \"/usr/include/sys/types.h\" 3 4\n# 1 \"/usr/include/sys/appleapiopts.h\" 1 3 4\n# 73 \"/usr/include/sys/types.h\" 2 3 4\n\n\n# 1 \"/usr/include/sys/cdefs.h\" 1 3 4\n# 76 \"/usr/include/sys/types.h\" 2 3 4\n\n\n# 1 \"/usr/include/machine/types.h\" 1 3 4\n# 37 \"/usr/include/machine/types.h\" 3 4\n# 1 \"/usr/include/i386/types.h\" 1 3 4\n# 70 \"/usr/include/i386/types.h\" 3 4\n# 1 \"/usr/include/i386/_types.h\" 1 3 4\n# 37 \"/usr/include/i386/_types.h\" 3 4\ntypedef signed char __int8_t;\n\n\n\ntypedef unsigned char __uint8_t;\ntypedef short __int16_t;\ntypedef unsigned short __uint16_t;\ntypedef int __int32_t;\ntypedef unsigned int __uint32_t;\ntypedef long long __int64_t;\ntypedef unsigned long long __uint64_t;\n\ntypedef long __darwin_intptr_t;\ntypedef unsigned int __darwin_natural_t;\n# 70 \"/usr/include/i386/_types.h\" 3 4\ntypedef int __darwin_ct_rune_t;\n\n\n\n\n\ntypedef union {\n char __mbstate8[128];\n long long _mbstateL;\n} __mbstate_t;\n\ntypedef __mbstate_t __darwin_mbstate_t;\n\n\ntypedef long int __darwin_ptrdiff_t;\n\n\n\n\n\ntypedef long unsigned int __darwin_size_t;\n\n\n\n\n\ntypedef __builtin_va_list __darwin_va_list;\n\n\n\n\n\ntypedef int __darwin_wchar_t;\n\n\n\n\ntypedef __darwin_wchar_t __darwin_rune_t;\n\n\ntypedef int __darwin_wint_t;\n\n\n\n\ntypedef unsigned long __darwin_clock_t;\ntypedef __uint32_t __darwin_socklen_t;\ntypedef long __darwin_ssize_t;\ntypedef long __darwin_time_t;\n# 71 \"/usr/include/i386/types.h\" 2 3 4\n\n\n\n\n\n\n\ntypedef signed char int8_t;\n\ntypedef unsigned char u_int8_t;\n\n\ntypedef short int16_t;\n\ntypedef unsigned short u_int16_t;\n\n\ntypedef int int32_t;\n\ntypedef unsigned int u_int32_t;\n\n\ntypedef long long int64_t;\n\ntypedef unsigned long long u_int64_t;\n\n\ntypedef int64_t register_t;\n\n\n\n\n\n\ntypedef __darwin_intptr_t intptr_t;\n\n\n\ntypedef unsigned long uintptr_t;\n\n\n\n\ntypedef u_int64_t user_addr_t;\ntypedef u_int64_t user_size_t;\ntypedef int64_t user_ssize_t;\ntypedef int64_t user_long_t;\ntypedef u_int64_t user_ulong_t;\ntypedef int64_t user_time_t;\ntypedef int64_t user_off_t;\n\n\n\n\n\n\n\ntypedef u_int64_t syscall_arg_t;\n# 38 \"/usr/include/machine/types.h\" 2 3 4\n# 79 \"/usr/include/sys/types.h\" 2 3 4\n# 1 \"/usr/include/sys/_types.h\" 1 3 4\n# 33 \"/usr/include/sys/_types.h\" 3 4\n# 1 \"/usr/include/machine/_types.h\" 1 3 4\n# 34 \"/usr/include/sys/_types.h\" 2 3 4\n# 58 \"/usr/include/sys/_types.h\" 3 4\nstruct __darwin_pthread_handler_rec\n{\n void (*__routine)(void *);\n void *__arg;\n struct __darwin_pthread_handler_rec *__next;\n};\nstruct _opaque_pthread_attr_t { long __sig; char __opaque[56]; };\nstruct _opaque_pthread_cond_t { long __sig; char __opaque[40]; };\nstruct _opaque_pthread_condattr_t { long __sig; char __opaque[8]; };\nstruct _opaque_pthread_mutex_t { long __sig; char __opaque[56]; };\nstruct _opaque_pthread_mutexattr_t { long __sig; char __opaque[8]; };\nstruct _opaque_pthread_once_t { long __sig; char __opaque[8]; };\nstruct _opaque_pthread_rwlock_t { long __sig; char __opaque[192]; };\nstruct _opaque_pthread_rwlockattr_t { long __sig; char __opaque[16]; };\nstruct _opaque_pthread_t { long __sig; struct __darwin_pthread_handler_rec *__cleanup_stack; char __opaque[1168]; };\n# 94 \"/usr/include/sys/_types.h\" 3 4\ntypedef __int64_t __darwin_blkcnt_t;\ntypedef __int32_t __darwin_blksize_t;\ntypedef __int32_t __darwin_dev_t;\ntypedef unsigned int __darwin_fsblkcnt_t;\ntypedef unsigned int __darwin_fsfilcnt_t;\ntypedef __uint32_t __darwin_gid_t;\ntypedef __uint32_t __darwin_id_t;\ntypedef __uint64_t __darwin_ino64_t;\n\ntypedef __darwin_ino64_t __darwin_ino_t;\n\n\n\ntypedef __darwin_natural_t __darwin_mach_port_name_t;\ntypedef __darwin_mach_port_name_t __darwin_mach_port_t;\ntypedef __uint16_t __darwin_mode_t;\ntypedef __int64_t __darwin_off_t;\ntypedef __int32_t __darwin_pid_t;\ntypedef struct _opaque_pthread_attr_t\n   __darwin_pthread_attr_t;\ntypedef struct _opaque_pthread_cond_t\n   __darwin_pthread_cond_t;\ntypedef struct _opaque_pthread_condattr_t\n   __darwin_pthread_condattr_t;\ntypedef unsigned long __darwin_pthread_key_t;\ntypedef struct _opaque_pthread_mutex_t\n   __darwin_pthread_mutex_t;\ntypedef struct _opaque_pthread_mutexattr_t\n   __darwin_pthread_mutexattr_t;\ntypedef struct _opaque_pthread_once_t\n   __darwin_pthread_once_t;\ntypedef struct _opaque_pthread_rwlock_t\n   __darwin_pthread_rwlock_t;\ntypedef struct _opaque_pthread_rwlockattr_t\n   __darwin_pthread_rwlockattr_t;\ntypedef struct _opaque_pthread_t\n   *__darwin_pthread_t;\ntypedef __uint32_t __darwin_sigset_t;\ntypedef __int32_t __darwin_suseconds_t;\ntypedef __uint32_t __darwin_uid_t;\ntypedef __uint32_t __darwin_useconds_t;\ntypedef unsigned char __darwin_uuid_t[16];\ntypedef char __darwin_uuid_string_t[37];\n# 80 \"/usr/include/sys/types.h\" 2 3 4\n\n# 1 \"/usr/include/machine/endian.h\" 1 3 4\n# 37 \"/usr/include/machine/endian.h\" 3 4\n# 1 \"/usr/include/i386/endian.h\" 1 3 4\n# 99 \"/usr/include/i386/endian.h\" 3 4\n# 1 \"/usr/include/sys/_endian.h\" 1 3 4\n# 124 \"/usr/include/sys/_endian.h\" 3 4\n# 1 \"/usr/include/libkern/_OSByteOrder.h\" 1 3 4\n# 66 \"/usr/include/libkern/_OSByteOrder.h\" 3 4\n# 1 \"/usr/include/libkern/i386/_OSByteOrder.h\" 1 3 4\n# 44 \"/usr/include/libkern/i386/_OSByteOrder.h\" 3 4\nstatic __inline__\n__uint16_t\n_OSSwapInt16(\n    __uint16_t _data\n)\n{\n    return ((_data << 8) | (_data >> 8));\n}\n\nstatic __inline__\n__uint32_t\n_OSSwapInt32(\n    __uint32_t _data\n)\n{\n\n\n\n    __asm__ (\"bswap   %0\" : \"+r\" (_data));\n    return _data;\n\n}\n# 91 \"/usr/include/libkern/i386/_OSByteOrder.h\" 3 4\nstatic __inline__\n__uint64_t\n_OSSwapInt64(\n    __uint64_t _data\n)\n{\n    __asm__ (\"bswap   %0\" : \"+r\" (_data));\n    return _data;\n}\n# 67 \"/usr/include/libkern/_OSByteOrder.h\" 2 3 4\n# 125 \"/usr/include/sys/_endian.h\" 2 3 4\n# 100 \"/usr/include/i386/endian.h\" 2 3 4\n# 38 \"/usr/include/machine/endian.h\" 2 3 4\n# 82 \"/usr/include/sys/types.h\" 2 3 4\n\n\ntypedef unsigned char u_char;\ntypedef unsigned short u_short;\ntypedef unsigned int u_int;\n\ntypedef unsigned long u_long;\n\n\ntypedef unsigned short ushort;\ntypedef unsigned int uint;\n\n\ntypedef u_int64_t u_quad_t;\ntypedef int64_t quad_t;\ntypedef quad_t * qaddr_t;\n\ntypedef char * caddr_t;\ntypedef int32_t daddr_t;\n\n\ntypedef __darwin_dev_t dev_t;\n\n\n\ntypedef u_int32_t fixpt_t;\n\n\ntypedef __darwin_blkcnt_t blkcnt_t;\n\n\n\n\ntypedef __darwin_blksize_t blksize_t;\n\n\n\n\ntypedef __darwin_gid_t gid_t;\n\n\n\n\n\ntypedef __uint32_t in_addr_t;\n\n\n\n\ntypedef __uint16_t in_port_t;\n\n\n\ntypedef __darwin_ino_t ino_t;\n\n\n\n\n\ntypedef __darwin_ino64_t ino64_t;\n\n\n\n\n\n\ntypedef __int32_t key_t;\n\n\n\ntypedef __darwin_mode_t mode_t;\n\n\n\n\ntypedef __uint16_t nlink_t;\n\n\n\n\n\ntypedef __darwin_id_t id_t;\n\n\n\ntypedef __darwin_pid_t pid_t;\n\n\n\n\ntypedef __darwin_off_t off_t;\n\n\n\ntypedef int32_t segsz_t;\ntypedef int32_t swblk_t;\n\n\ntypedef __darwin_uid_t uid_t;\n# 223 \"/usr/include/sys/types.h\" 3 4\ntypedef __darwin_clock_t clock_t;\n\n\n\n\n\n\ntypedef __darwin_size_t size_t;\n\n\n\n\ntypedef __darwin_ssize_t ssize_t;\n\n\n\n\ntypedef __darwin_time_t time_t;\n\n\n\n\ntypedef __darwin_useconds_t useconds_t;\n\n\n\n\ntypedef __darwin_suseconds_t suseconds_t;\n# 260 \"/usr/include/sys/types.h\" 3 4\n# 1 \"/usr/include/sys/_structs.h\" 1 3 4\n# 183 \"/usr/include/sys/_structs.h\" 3 4\n\ntypedef struct fd_set {\n __int32_t fds_bits[((((1024) % ((sizeof(__int32_t) * 8))) == 0) ? ((1024) / ((sizeof(__int32_t) * 8))) : (((1024) / ((sizeof(__int32_t) * 8))) + 1))];\n} fd_set;\n\n\n\nstatic __inline int\n__darwin_fd_isset(int _n, const struct fd_set *_p)\n{\n return (_p->fds_bits[_n/(sizeof(__int32_t) * 8)] & (1<<(_n % (sizeof(__int32_t) * 8))));\n}\n# 261 \"/usr/include/sys/types.h\" 2 3 4\n\n\n\n\ntypedef __int32_t fd_mask;\n# 318 \"/usr/include/sys/types.h\" 3 4\ntypedef __darwin_pthread_attr_t pthread_attr_t;\n\n\n\ntypedef __darwin_pthread_cond_t pthread_cond_t;\n\n\n\ntypedef __darwin_pthread_condattr_t pthread_condattr_t;\n\n\n\ntypedef __darwin_pthread_mutex_t pthread_mutex_t;\n\n\n\ntypedef __darwin_pthread_mutexattr_t pthread_mutexattr_t;\n\n\n\ntypedef __darwin_pthread_once_t pthread_once_t;\n\n\n\ntypedef __darwin_pthread_rwlock_t pthread_rwlock_t;\n\n\n\ntypedef __darwin_pthread_rwlockattr_t pthread_rwlockattr_t;\n\n\n\ntypedef __darwin_pthread_t pthread_t;\n\n\n\n\n\n\ntypedef __darwin_pthread_key_t pthread_key_t;\n\n\n\n\n\ntypedef __darwin_fsblkcnt_t fsblkcnt_t;\n\n\n\n\ntypedef __darwin_fsfilcnt_t fsfilcnt_t;\n# 12 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n# 1 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/stdarg.h\" 1 3 4\n# 43 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/stdarg.h\" 3 4\ntypedef __builtin_va_list __gnuc_va_list;\n# 105 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/stdarg.h\" 3 4\ntypedef __gnuc_va_list va_list;\n# 13 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n# 1 \"/usr/include/assert.h\" 1 3 4\n# 75 \"/usr/include/assert.h\" 3 4\n\nvoid __assert_rtn(const char *, const char *, int, const char *) __attribute__((__noreturn__));\nvoid __eprintf(const char *, const char *, unsigned, const char *) __attribute__((__noreturn__));\n\n# 14 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n# 1 \"/usr/include/ctype.h\" 1 3 4\n# 69 \"/usr/include/ctype.h\" 3 4\n# 1 \"/usr/include/runetype.h\" 1 3 4\n# 42 \"/usr/include/runetype.h\" 3 4\n# 1 \"/usr/include/_types.h\" 1 3 4\n# 39 \"/usr/include/_types.h\" 3 4\ntypedef int __darwin_nl_item;\ntypedef int __darwin_wctrans_t;\n\ntypedef __uint32_t __darwin_wctype_t;\n# 43 \"/usr/include/runetype.h\" 2 3 4\n# 53 \"/usr/include/runetype.h\" 3 4\ntypedef __darwin_ct_rune_t ct_rune_t;\n\n\n\n\ntypedef __darwin_rune_t rune_t;\n\n\n\n\n\ntypedef __darwin_wchar_t wchar_t;\n\n\n\n\n\ntypedef __darwin_wint_t wint_t;\n# 81 \"/usr/include/runetype.h\" 3 4\ntypedef struct {\n __darwin_rune_t __min;\n __darwin_rune_t __max;\n __darwin_rune_t __map;\n __uint32_t *__types;\n} _RuneEntry;\n\ntypedef struct {\n int __nranges;\n _RuneEntry *__ranges;\n} _RuneRange;\n\ntypedef struct {\n char __name[14];\n __uint32_t __mask;\n} _RuneCharClass;\n\ntypedef struct {\n char __magic[8];\n char __encoding[32];\n\n __darwin_rune_t (*__sgetrune)(const char *, __darwin_size_t, char const **);\n int (*__sputrune)(__darwin_rune_t, char *, __darwin_size_t, char **);\n __darwin_rune_t __invalid_rune;\n\n __uint32_t __runetype[(1 <<8 )];\n __darwin_rune_t __maplower[(1 <<8 )];\n __darwin_rune_t __mapupper[(1 <<8 )];\n\n\n\n\n\n\n _RuneRange __runetype_ext;\n _RuneRange __maplower_ext;\n _RuneRange __mapupper_ext;\n\n void *__variable;\n int __variable_len;\n\n\n\n\n int __ncharclasses;\n _RuneCharClass *__charclasses;\n} _RuneLocale;\n\n\n\n\nextern _RuneLocale _DefaultRuneLocale;\nextern _RuneLocale *_CurrentRuneLocale;\n\n# 70 \"/usr/include/ctype.h\" 2 3 4\n# 145 \"/usr/include/ctype.h\" 3 4\n\nunsigned long ___runetype(__darwin_ct_rune_t);\n__darwin_ct_rune_t ___tolower(__darwin_ct_rune_t);\n__darwin_ct_rune_t ___toupper(__darwin_ct_rune_t);\n\n\nstatic __inline int\nisascii(int _c)\n{\n return ((_c & ~0x7F) == 0);\n}\n# 164 \"/usr/include/ctype.h\" 3 4\n\nint __maskrune(__darwin_ct_rune_t, unsigned long);\n\n\n\nstatic __inline int\n__istype(__darwin_ct_rune_t _c, unsigned long _f)\n{\n\n\n\n return (isascii(_c) ? !!(_DefaultRuneLocale.__runetype[_c] & _f)\n  : !!__maskrune(_c, _f));\n\n}\n\nstatic __inline __darwin_ct_rune_t\n__isctype(__darwin_ct_rune_t _c, unsigned long _f)\n{\n\n\n\n return (_c < 0 || _c >= (1 <<8 )) ? 0 :\n  !!(_DefaultRuneLocale.__runetype[_c] & _f);\n\n}\n# 204 \"/usr/include/ctype.h\" 3 4\n\n__darwin_ct_rune_t __toupper(__darwin_ct_rune_t);\n__darwin_ct_rune_t __tolower(__darwin_ct_rune_t);\n\n\n\nstatic __inline int\n__wcwidth(__darwin_ct_rune_t _c)\n{\n unsigned int _x;\n\n if (_c == 0)\n  return (0);\n _x = (unsigned int)__maskrune(_c, 0xe0000000L|0x00040000L);\n if ((_x & 0xe0000000L) != 0)\n  return ((_x & 0xe0000000L) >> 30);\n return ((_x & 0x00040000L) != 0 ? 1 : -1);\n}\n\n\n\n\n\n\nstatic __inline int\nisalnum(int _c)\n{\n return (__istype(_c, 0x00000100L|0x00000400L));\n}\n\nstatic __inline int\nisalpha(int _c)\n{\n return (__istype(_c, 0x00000100L));\n}\n\nstatic __inline int\nisblank(int _c)\n{\n return (__istype(_c, 0x00020000L));\n}\n\nstatic __inline int\niscntrl(int _c)\n{\n return (__istype(_c, 0x00000200L));\n}\n\n\nstatic __inline int\nisdigit(int _c)\n{\n return (__isctype(_c, 0x00000400L));\n}\n\nstatic __inline int\nisgraph(int _c)\n{\n return (__istype(_c, 0x00000800L));\n}\n\nstatic __inline int\nislower(int _c)\n{\n return (__istype(_c, 0x00001000L));\n}\n\nstatic __inline int\nisprint(int _c)\n{\n return (__istype(_c, 0x00040000L));\n}\n\nstatic __inline int\nispunct(int _c)\n{\n return (__istype(_c, 0x00002000L));\n}\n\nstatic __inline int\nisspace(int _c)\n{\n return (__istype(_c, 0x00004000L));\n}\n\nstatic __inline int\nisupper(int _c)\n{\n return (__istype(_c, 0x00008000L));\n}\n\n\nstatic __inline int\nisxdigit(int _c)\n{\n return (__isctype(_c, 0x00010000L));\n}\n\nstatic __inline int\ntoascii(int _c)\n{\n return (_c & 0x7F);\n}\n\nstatic __inline int\ntolower(int _c)\n{\n        return (__tolower(_c));\n}\n\nstatic __inline int\ntoupper(int _c)\n{\n        return (__toupper(_c));\n}\n\n\nstatic __inline int\ndigittoint(int _c)\n{\n return (__maskrune(_c, 0x0F));\n}\n\nstatic __inline int\nishexnumber(int _c)\n{\n return (__istype(_c, 0x00010000L));\n}\n\nstatic __inline int\nisideogram(int _c)\n{\n return (__istype(_c, 0x00080000L));\n}\n\nstatic __inline int\nisnumber(int _c)\n{\n return (__istype(_c, 0x00000400L));\n}\n\nstatic __inline int\nisphonogram(int _c)\n{\n return (__istype(_c, 0x00200000L));\n}\n\nstatic __inline int\nisrune(int _c)\n{\n return (__istype(_c, 0xFFFFFFF0L));\n}\n\nstatic __inline int\nisspecial(int _c)\n{\n return (__istype(_c, 0x00100000L));\n}\n# 15 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n# 1 \"/usr/include/errno.h\" 1 3 4\n# 23 \"/usr/include/errno.h\" 3 4\n# 1 \"/usr/include/sys/errno.h\" 1 3 4\n# 73 \"/usr/include/sys/errno.h\" 3 4\n\nextern int * __error(void);\n\n\n# 24 \"/usr/include/errno.h\" 2 3 4\n# 16 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n# 1 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/float.h\" 1 3 4\n# 17 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n# 1 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/limits.h\" 1 3 4\n\n\n\n\n\n\n# 1 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/syslimits.h\" 1 3 4\n# 8 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/limits.h\" 2 3 4\n\n\n# 1 \"/usr/include/limits.h\" 1 3 4\n# 64 \"/usr/include/limits.h\" 3 4\n# 1 \"/usr/include/machine/limits.h\" 1 3 4\n\n\n\n\n\n\n\n# 1 \"/usr/include/i386/limits.h\" 1 3 4\n# 40 \"/usr/include/i386/limits.h\" 3 4\n# 1 \"/usr/include/i386/_limits.h\" 1 3 4\n# 41 \"/usr/include/i386/limits.h\" 2 3 4\n# 9 \"/usr/include/machine/limits.h\" 2 3 4\n# 65 \"/usr/include/limits.h\" 2 3 4\n# 1 \"/usr/include/sys/syslimits.h\" 1 3 4\n# 66 \"/usr/include/limits.h\" 2 3 4\n# 11 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/limits.h\" 2 3 4\n# 18 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n# 1 \"/usr/include/locale.h\" 1 3 4\n# 40 \"/usr/include/locale.h\" 3 4\n# 1 \"/usr/include/_locale.h\" 1 3 4\n# 43 \"/usr/include/_locale.h\" 3 4\nstruct lconv {\n char *decimal_point;\n char *thousands_sep;\n char *grouping;\n char *int_curr_symbol;\n char *currency_symbol;\n char *mon_decimal_point;\n char *mon_thousands_sep;\n char *mon_grouping;\n char *positive_sign;\n char *negative_sign;\n char int_frac_digits;\n char frac_digits;\n char p_cs_precedes;\n char p_sep_by_space;\n char n_cs_precedes;\n char n_sep_by_space;\n char p_sign_posn;\n char n_sign_posn;\n char int_p_cs_precedes;\n char int_n_cs_precedes;\n char int_p_sep_by_space;\n char int_n_sep_by_space;\n char int_p_sign_posn;\n char int_n_sign_posn;\n};\n\n\n\n\n\n\nstruct lconv *localeconv(void);\n\n# 41 \"/usr/include/locale.h\" 2 3 4\n# 52 \"/usr/include/locale.h\" 3 4\n\nchar *setlocale(int, const char *);\n\n# 19 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n# 1 \"/usr/include/math.h\" 1 3 4\n# 28 \"/usr/include/math.h\" 3 4\n# 1 \"/usr/include/architecture/i386/math.h\" 1 3 4\n# 49 \"/usr/include/architecture/i386/math.h\" 3 4\n typedef float float_t;\n typedef double double_t;\n# 108 \"/usr/include/architecture/i386/math.h\" 3 4\nextern unsigned int __math_errhandling ( void );\n# 128 \"/usr/include/architecture/i386/math.h\" 3 4\nextern int __fpclassifyf(float );\nextern int __fpclassifyd(double );\nextern int __fpclassify (long double);\n# 163 \"/usr/include/architecture/i386/math.h\" 3 4\n static __inline__ int __inline_isfinitef (float ) __attribute__ ((always_inline));\n static __inline__ int __inline_isfinited (double ) __attribute__ ((always_inline));\n static __inline__ int __inline_isfinite (long double) __attribute__ ((always_inline));\n static __inline__ int __inline_isinff (float ) __attribute__ ((always_inline));\n static __inline__ int __inline_isinfd (double ) __attribute__ ((always_inline));\n static __inline__ int __inline_isinf (long double) __attribute__ ((always_inline));\n static __inline__ int __inline_isnanf (float ) __attribute__ ((always_inline));\n static __inline__ int __inline_isnand (double ) __attribute__ ((always_inline));\n static __inline__ int __inline_isnan (long double) __attribute__ ((always_inline));\n static __inline__ int __inline_isnormalf (float ) __attribute__ ((always_inline));\n static __inline__ int __inline_isnormald (double ) __attribute__ ((always_inline));\n static __inline__ int __inline_isnormal (long double) __attribute__ ((always_inline));\n static __inline__ int __inline_signbitf (float ) __attribute__ ((always_inline));\n static __inline__ int __inline_signbitd (double ) __attribute__ ((always_inline));\n static __inline__ int __inline_signbit (long double) __attribute__ ((always_inline));\n\n static __inline__ int __inline_isinff( float __x ) { return __builtin_fabsf(__x) == __builtin_inff(); }\n static __inline__ int __inline_isinfd( double __x ) { return __builtin_fabs(__x) == __builtin_inf(); }\n static __inline__ int __inline_isinf( long double __x ) { return __builtin_fabsl(__x) == __builtin_infl(); }\n static __inline__ int __inline_isfinitef( float __x ) { return __x == __x && __builtin_fabsf(__x) != __builtin_inff(); }\n static __inline__ int __inline_isfinited( double __x ) { return __x == __x && __builtin_fabs(__x) != __builtin_inf(); }\n static __inline__ int __inline_isfinite( long double __x ) { return __x == __x && __builtin_fabsl(__x) != __builtin_infl(); }\n static __inline__ int __inline_isnanf( float __x ) { return __x != __x; }\n static __inline__ int __inline_isnand( double __x ) { return __x != __x; }\n static __inline__ int __inline_isnan( long double __x ) { return __x != __x; }\n static __inline__ int __inline_signbitf( float __x ) { union{ float __f; unsigned int __u; }__u; __u.__f = __x; return (int)(__u.__u >> 31); }\n static __inline__ int __inline_signbitd( double __x ) { union{ double __f; unsigned int __u[2]; }__u; __u.__f = __x; return (int)(__u.__u[1] >> 31); }\n static __inline__ int __inline_signbit( long double __x ){ union{ long double __ld; struct{ unsigned int __m[2]; short __sexp; }__p; }__u; __u.__ld = __x; return (int) (((unsigned short) __u.__p.__sexp) >> 15); }\n static __inline__ int __inline_isnormalf( float __x ) { float fabsf = __builtin_fabsf(__x); if( __x != __x ) return 0; return fabsf < __builtin_inff() && fabsf >= 1.17549435e-38F; }\n static __inline__ int __inline_isnormald( double __x ) { double fabsf = __builtin_fabs(__x); if( __x != __x ) return 0; return fabsf < __builtin_inf() && fabsf >= 2.2250738585072014e-308; }\n static __inline__ int __inline_isnormal( long double __x ) { long double fabsf = __builtin_fabsl(__x); if( __x != __x ) return 0; return fabsf < __builtin_infl() && fabsf >= 3.36210314311209350626e-4932L; }\n# 253 \"/usr/include/architecture/i386/math.h\" 3 4\nextern double acos( double );\nextern float acosf( float );\n\nextern double asin( double );\nextern float asinf( float );\n\nextern double atan( double );\nextern float atanf( float );\n\nextern double atan2( double, double );\nextern float atan2f( float, float );\n\nextern double cos( double );\nextern float cosf( float );\n\nextern double sin( double );\nextern float sinf( float );\n\nextern double tan( double );\nextern float tanf( float );\n\nextern double acosh( double );\nextern float acoshf( float );\n\nextern double asinh( double );\nextern float asinhf( float );\n\nextern double atanh( double );\nextern float atanhf( float );\n\nextern double cosh( double );\nextern float coshf( float );\n\nextern double sinh( double );\nextern float sinhf( float );\n\nextern double tanh( double );\nextern float tanhf( float );\n\nextern double exp ( double );\nextern float expf ( float );\n\nextern double exp2 ( double );\nextern float exp2f ( float );\n\nextern double expm1 ( double );\nextern float expm1f ( float );\n\nextern double log ( double );\nextern float logf ( float );\n\nextern double log10 ( double );\nextern float log10f ( float );\n\nextern double log2 ( double );\nextern float log2f ( float );\n\nextern double log1p ( double );\nextern float log1pf ( float );\n\nextern double logb ( double );\nextern float logbf ( float );\n\nextern double modf ( double, double * );\nextern float modff ( float, float * );\n\nextern double ldexp ( double, int );\nextern float ldexpf ( float, int );\n\nextern double frexp ( double, int * );\nextern float frexpf ( float, int * );\n\nextern int ilogb ( double );\nextern int ilogbf ( float );\n\nextern double scalbn ( double, int );\nextern float scalbnf ( float, int );\n\nextern double scalbln ( double, long int );\nextern float scalblnf ( float, long int );\n\nextern double fabs( double );\nextern float fabsf( float );\n\nextern double cbrt( double );\nextern float cbrtf( float );\n\nextern double hypot ( double, double );\nextern float hypotf ( float, float );\n\nextern double pow ( double, double );\nextern float powf ( float, float );\n\nextern double sqrt( double );\nextern float sqrtf( float );\n\nextern double erf( double );\nextern float erff( float );\n\nextern double erfc( double );\nextern float erfcf( float );\n\n\n\n\n\n\nextern double lgamma( double );\nextern float lgammaf( float );\n\nextern double tgamma( double );\nextern float tgammaf( float );\n\nextern double ceil ( double );\nextern float ceilf ( float );\n\nextern double floor ( double );\nextern float floorf ( float );\n\nextern double nearbyint ( double );\nextern float nearbyintf ( float );\n\nextern double rint ( double );\nextern float rintf ( float );\n\nextern long int lrint ( double );\nextern long int lrintf ( float );\n\nextern double round ( double );\nextern float roundf ( float );\n\nextern long int lround ( double );\nextern long int lroundf ( float );\n\n\n\n\n    extern long long int llrint ( double );\n    extern long long int llrintf ( float );\n\n    extern long long int llround ( double );\n    extern long long int llroundf ( float );\n\n\n\nextern double trunc ( double );\nextern float truncf ( float );\n\nextern double fmod ( double, double );\nextern float fmodf ( float, float );\n\nextern double remainder ( double, double );\nextern float remainderf ( float, float );\n\nextern double remquo ( double, double, int * );\nextern float remquof ( float, float, int * );\n\nextern double copysign ( double, double );\nextern float copysignf ( float, float );\n\nextern double nan( const char * );\nextern float nanf( const char * );\n\nextern double nextafter ( double, double );\nextern float nextafterf ( float, float );\n\nextern double fdim ( double, double );\nextern float fdimf ( float, float );\n\nextern double fmax ( double, double );\nextern float fmaxf ( float, float );\n\nextern double fmin ( double, double );\nextern float fminf ( float, float );\n\nextern double fma ( double, double, double );\nextern float fmaf ( float, float, float );\n\nextern long double acosl(long double);\nextern long double asinl(long double);\nextern long double atanl(long double);\nextern long double atan2l(long double, long double);\nextern long double cosl(long double);\nextern long double sinl(long double);\nextern long double tanl(long double);\nextern long double acoshl(long double);\nextern long double asinhl(long double);\nextern long double atanhl(long double);\nextern long double coshl(long double);\nextern long double sinhl(long double);\nextern long double tanhl(long double);\nextern long double expl(long double);\nextern long double exp2l(long double);\nextern long double expm1l(long double);\nextern long double logl(long double);\nextern long double log10l(long double);\nextern long double log2l(long double);\nextern long double log1pl(long double);\nextern long double logbl(long double);\nextern long double modfl(long double, long double *);\nextern long double ldexpl(long double, int);\nextern long double frexpl(long double, int *);\nextern int ilogbl(long double);\nextern long double scalbnl(long double, int);\nextern long double scalblnl(long double, long int);\nextern long double fabsl(long double);\nextern long double cbrtl(long double);\nextern long double hypotl(long double, long double);\nextern long double powl(long double, long double);\nextern long double sqrtl(long double);\nextern long double erfl(long double);\nextern long double erfcl(long double);\n\n\n\n\n\n\nextern long double lgammal(long double);\n\nextern long double tgammal(long double);\nextern long double ceill(long double);\nextern long double floorl(long double);\nextern long double nearbyintl(long double);\nextern long double rintl(long double);\nextern long int lrintl(long double);\nextern long double roundl(long double);\nextern long int lroundl(long double);\n\n\n\n    extern long long int llrintl(long double);\n    extern long long int llroundl(long double);\n\n\nextern long double truncl(long double);\nextern long double fmodl(long double, long double);\nextern long double remainderl(long double, long double);\nextern long double remquol(long double, long double, int *);\nextern long double copysignl(long double, long double);\nextern long double nanl(const char *);\nextern long double nextafterl(long double, long double);\nextern double nexttoward(double, long double);\nextern float nexttowardf(float, long double);\nextern long double nexttowardl(long double, long double);\nextern long double fdiml(long double, long double);\nextern long double fmaxl(long double, long double);\nextern long double fminl(long double, long double);\nextern long double fmal(long double, long double, long double);\n# 510 \"/usr/include/architecture/i386/math.h\" 3 4\nextern double __inf( void );\nextern float __inff( void );\nextern long double __infl( void );\nextern float __nan( void );\n\n\nextern double j0 ( double );\n\nextern double j1 ( double );\n\nextern double jn ( int, double );\n\nextern double y0 ( double );\n\nextern double y1 ( double );\n\nextern double yn ( int, double );\n\nextern double scalb ( double, double );\n# 546 \"/usr/include/architecture/i386/math.h\" 3 4\nextern int signgam;\n# 560 \"/usr/include/architecture/i386/math.h\" 3 4\nextern long int rinttol ( double );\n\nextern long int roundtol ( double );\n# 571 \"/usr/include/architecture/i386/math.h\" 3 4\nstruct exception {\n int type;\n char *name;\n double arg1;\n double arg2;\n double retval;\n};\n# 600 \"/usr/include/architecture/i386/math.h\" 3 4\nextern int finite ( double );\n\nextern double gamma ( double );\n\n\n\n\nextern int matherr ( struct exception * );\n\n\n\n\n\nextern double significand ( double );\n\n\n\n\nextern double drem ( double, double );\n# 29 \"/usr/include/math.h\" 2 3 4\n# 20 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n# 1 \"/usr/include/setjmp.h\" 1 3 4\n# 26 \"/usr/include/setjmp.h\" 3 4\n# 1 \"/usr/include/machine/setjmp.h\" 1 3 4\n# 37 \"/usr/include/machine/setjmp.h\" 3 4\n# 1 \"/usr/include/i386/setjmp.h\" 1 3 4\n# 47 \"/usr/include/i386/setjmp.h\" 3 4\ntypedef int jmp_buf[((9 * 2) + 3 + 16)];\ntypedef int sigjmp_buf[((9 * 2) + 3 + 16) + 1];\n# 65 \"/usr/include/i386/setjmp.h\" 3 4\n\nint setjmp(jmp_buf);\nvoid longjmp(jmp_buf, int);\n\n\nint _setjmp(jmp_buf);\nvoid _longjmp(jmp_buf, int);\nint sigsetjmp(sigjmp_buf, int);\nvoid siglongjmp(sigjmp_buf, int);\n\n\n\nvoid longjmperror(void);\n\n\n# 38 \"/usr/include/machine/setjmp.h\" 2 3 4\n# 27 \"/usr/include/setjmp.h\" 2 3 4\n# 21 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n# 1 \"/usr/include/signal.h\" 1 3 4\n# 63 \"/usr/include/signal.h\" 3 4\n# 1 \"/usr/include/sys/signal.h\" 1 3 4\n# 81 \"/usr/include/sys/signal.h\" 3 4\n# 1 \"/usr/include/machine/signal.h\" 1 3 4\n# 34 \"/usr/include/machine/signal.h\" 3 4\n# 1 \"/usr/include/i386/signal.h\" 1 3 4\n# 39 \"/usr/include/i386/signal.h\" 3 4\ntypedef int sig_atomic_t;\n# 55 \"/usr/include/i386/signal.h\" 3 4\n# 1 \"/usr/include/i386/_structs.h\" 1 3 4\n# 56 \"/usr/include/i386/signal.h\" 2 3 4\n# 35 \"/usr/include/machine/signal.h\" 2 3 4\n# 82 \"/usr/include/sys/signal.h\" 2 3 4\n# 154 \"/usr/include/sys/signal.h\" 3 4\n# 1 \"/usr/include/sys/_structs.h\" 1 3 4\n# 57 \"/usr/include/sys/_structs.h\" 3 4\n# 1 \"/usr/include/machine/_structs.h\" 1 3 4\n# 31 \"/usr/include/machine/_structs.h\" 3 4\n# 1 \"/usr/include/i386/_structs.h\" 1 3 4\n# 38 \"/usr/include/i386/_structs.h\" 3 4\n# 1 \"/usr/include/mach/i386/_structs.h\" 1 3 4\n# 43 \"/usr/include/mach/i386/_structs.h\" 3 4\nstruct __darwin_i386_thread_state\n{\n    unsigned int __eax;\n    unsigned int __ebx;\n    unsigned int __ecx;\n    unsigned int __edx;\n    unsigned int __edi;\n    unsigned int __esi;\n    unsigned int __ebp;\n    unsigned int __esp;\n    unsigned int __ss;\n    unsigned int __eflags;\n    unsigned int __eip;\n    unsigned int __cs;\n    unsigned int __ds;\n    unsigned int __es;\n    unsigned int __fs;\n    unsigned int __gs;\n};\n# 89 \"/usr/include/mach/i386/_structs.h\" 3 4\nstruct __darwin_fp_control\n{\n    unsigned short __invalid :1,\n        __denorm :1,\n    __zdiv :1,\n    __ovrfl :1,\n    __undfl :1,\n    __precis :1,\n      :2,\n    __pc :2,\n\n\n\n\n\n    __rc :2,\n\n\n\n\n\n\n             :1,\n      :3;\n};\ntypedef struct __darwin_fp_control __darwin_fp_control_t;\n# 147 \"/usr/include/mach/i386/_structs.h\" 3 4\nstruct __darwin_fp_status\n{\n    unsigned short __invalid :1,\n        __denorm :1,\n    __zdiv :1,\n    __ovrfl :1,\n    __undfl :1,\n    __precis :1,\n    __stkflt :1,\n    __errsumm :1,\n    __c0 :1,\n    __c1 :1,\n    __c2 :1,\n    __tos :3,\n    __c3 :1,\n    __busy :1;\n};\ntypedef struct __darwin_fp_status __darwin_fp_status_t;\n# 191 \"/usr/include/mach/i386/_structs.h\" 3 4\nstruct __darwin_mmst_reg\n{\n char __mmst_reg[10];\n char __mmst_rsrv[6];\n};\n# 210 \"/usr/include/mach/i386/_structs.h\" 3 4\nstruct __darwin_xmm_reg\n{\n char __xmm_reg[16];\n};\n# 232 \"/usr/include/mach/i386/_structs.h\" 3 4\nstruct __darwin_i386_float_state\n{\n int __fpu_reserved[2];\n struct __darwin_fp_control __fpu_fcw;\n struct __darwin_fp_status __fpu_fsw;\n __uint8_t __fpu_ftw;\n __uint8_t __fpu_rsrv1;\n __uint16_t __fpu_fop;\n __uint32_t __fpu_ip;\n __uint16_t __fpu_cs;\n __uint16_t __fpu_rsrv2;\n __uint32_t __fpu_dp;\n __uint16_t __fpu_ds;\n __uint16_t __fpu_rsrv3;\n __uint32_t __fpu_mxcsr;\n __uint32_t __fpu_mxcsrmask;\n struct __darwin_mmst_reg __fpu_stmm0;\n struct __darwin_mmst_reg __fpu_stmm1;\n struct __darwin_mmst_reg __fpu_stmm2;\n struct __darwin_mmst_reg __fpu_stmm3;\n struct __darwin_mmst_reg __fpu_stmm4;\n struct __darwin_mmst_reg __fpu_stmm5;\n struct __darwin_mmst_reg __fpu_stmm6;\n struct __darwin_mmst_reg __fpu_stmm7;\n struct __darwin_xmm_reg __fpu_xmm0;\n struct __darwin_xmm_reg __fpu_xmm1;\n struct __darwin_xmm_reg __fpu_xmm2;\n struct __darwin_xmm_reg __fpu_xmm3;\n struct __darwin_xmm_reg __fpu_xmm4;\n struct __darwin_xmm_reg __fpu_xmm5;\n struct __darwin_xmm_reg __fpu_xmm6;\n struct __darwin_xmm_reg __fpu_xmm7;\n char __fpu_rsrv4[14*16];\n int __fpu_reserved1;\n};\n# 308 \"/usr/include/mach/i386/_structs.h\" 3 4\nstruct __darwin_i386_exception_state\n{\n    unsigned int __trapno;\n    unsigned int __err;\n    unsigned int __faultvaddr;\n};\n# 326 \"/usr/include/mach/i386/_structs.h\" 3 4\nstruct __darwin_x86_debug_state32\n{\n unsigned int __dr0;\n unsigned int __dr1;\n unsigned int __dr2;\n unsigned int __dr3;\n unsigned int __dr4;\n unsigned int __dr5;\n unsigned int __dr6;\n unsigned int __dr7;\n};\n# 358 \"/usr/include/mach/i386/_structs.h\" 3 4\nstruct __darwin_x86_thread_state64\n{\n __uint64_t __rax;\n __uint64_t __rbx;\n __uint64_t __rcx;\n __uint64_t __rdx;\n __uint64_t __rdi;\n __uint64_t __rsi;\n __uint64_t __rbp;\n __uint64_t __rsp;\n __uint64_t __r8;\n __uint64_t __r9;\n __uint64_t __r10;\n __uint64_t __r11;\n __uint64_t __r12;\n __uint64_t __r13;\n __uint64_t __r14;\n __uint64_t __r15;\n __uint64_t __rip;\n __uint64_t __rflags;\n __uint64_t __cs;\n __uint64_t __fs;\n __uint64_t __gs;\n};\n# 413 \"/usr/include/mach/i386/_structs.h\" 3 4\nstruct __darwin_x86_float_state64\n{\n int __fpu_reserved[2];\n struct __darwin_fp_control __fpu_fcw;\n struct __darwin_fp_status __fpu_fsw;\n __uint8_t __fpu_ftw;\n __uint8_t __fpu_rsrv1;\n __uint16_t __fpu_fop;\n\n\n __uint32_t __fpu_ip;\n __uint16_t __fpu_cs;\n\n __uint16_t __fpu_rsrv2;\n\n\n __uint32_t __fpu_dp;\n __uint16_t __fpu_ds;\n\n __uint16_t __fpu_rsrv3;\n __uint32_t __fpu_mxcsr;\n __uint32_t __fpu_mxcsrmask;\n struct __darwin_mmst_reg __fpu_stmm0;\n struct __darwin_mmst_reg __fpu_stmm1;\n struct __darwin_mmst_reg __fpu_stmm2;\n struct __darwin_mmst_reg __fpu_stmm3;\n struct __darwin_mmst_reg __fpu_stmm4;\n struct __darwin_mmst_reg __fpu_stmm5;\n struct __darwin_mmst_reg __fpu_stmm6;\n struct __darwin_mmst_reg __fpu_stmm7;\n struct __darwin_xmm_reg __fpu_xmm0;\n struct __darwin_xmm_reg __fpu_xmm1;\n struct __darwin_xmm_reg __fpu_xmm2;\n struct __darwin_xmm_reg __fpu_xmm3;\n struct __darwin_xmm_reg __fpu_xmm4;\n struct __darwin_xmm_reg __fpu_xmm5;\n struct __darwin_xmm_reg __fpu_xmm6;\n struct __darwin_xmm_reg __fpu_xmm7;\n struct __darwin_xmm_reg __fpu_xmm8;\n struct __darwin_xmm_reg __fpu_xmm9;\n struct __darwin_xmm_reg __fpu_xmm10;\n struct __darwin_xmm_reg __fpu_xmm11;\n struct __darwin_xmm_reg __fpu_xmm12;\n struct __darwin_xmm_reg __fpu_xmm13;\n struct __darwin_xmm_reg __fpu_xmm14;\n struct __darwin_xmm_reg __fpu_xmm15;\n char __fpu_rsrv4[6*16];\n int __fpu_reserved1;\n};\n# 517 \"/usr/include/mach/i386/_structs.h\" 3 4\nstruct __darwin_x86_exception_state64\n{\n    unsigned int __trapno;\n    unsigned int __err;\n    __uint64_t __faultvaddr;\n};\n# 535 \"/usr/include/mach/i386/_structs.h\" 3 4\nstruct __darwin_x86_debug_state64\n{\n __uint64_t __dr0;\n __uint64_t __dr1;\n __uint64_t __dr2;\n __uint64_t __dr3;\n __uint64_t __dr4;\n __uint64_t __dr5;\n __uint64_t __dr6;\n __uint64_t __dr7;\n};\n# 39 \"/usr/include/i386/_structs.h\" 2 3 4\n# 48 \"/usr/include/i386/_structs.h\" 3 4\nstruct __darwin_mcontext32\n{\n struct __darwin_i386_exception_state __es;\n struct __darwin_i386_thread_state __ss;\n struct __darwin_i386_float_state __fs;\n};\n# 68 \"/usr/include/i386/_structs.h\" 3 4\nstruct __darwin_mcontext64\n{\n struct __darwin_x86_exception_state64 __es;\n struct __darwin_x86_thread_state64 __ss;\n struct __darwin_x86_float_state64 __fs;\n};\n# 91 \"/usr/include/i386/_structs.h\" 3 4\ntypedef struct __darwin_mcontext64 *mcontext_t;\n# 32 \"/usr/include/machine/_structs.h\" 2 3 4\n# 58 \"/usr/include/sys/_structs.h\" 2 3 4\n# 75 \"/usr/include/sys/_structs.h\" 3 4\nstruct __darwin_sigaltstack\n{\n void *ss_sp;\n __darwin_size_t ss_size;\n int ss_flags;\n};\n# 128 \"/usr/include/sys/_structs.h\" 3 4\nstruct __darwin_ucontext\n{\n int uc_onstack;\n __darwin_sigset_t uc_sigmask;\n struct __darwin_sigaltstack uc_stack;\n struct __darwin_ucontext *uc_link;\n __darwin_size_t uc_mcsize;\n struct __darwin_mcontext64 *uc_mcontext;\n\n\n\n};\n# 218 \"/usr/include/sys/_structs.h\" 3 4\ntypedef struct __darwin_sigaltstack stack_t;\n# 227 \"/usr/include/sys/_structs.h\" 3 4\ntypedef struct __darwin_ucontext ucontext_t;\n# 155 \"/usr/include/sys/signal.h\" 2 3 4\n# 168 \"/usr/include/sys/signal.h\" 3 4\ntypedef __darwin_sigset_t sigset_t;\n# 181 \"/usr/include/sys/signal.h\" 3 4\nunion sigval {\n\n int sival_int;\n void *sival_ptr;\n};\n\n\n\n\n\nstruct sigevent {\n int sigev_notify;\n int sigev_signo;\n union sigval sigev_value;\n void (*sigev_notify_function)(union sigval);\n pthread_attr_t *sigev_notify_attributes;\n};\n\n\ntypedef struct __siginfo {\n int si_signo;\n int si_errno;\n int si_code;\n pid_t si_pid;\n uid_t si_uid;\n int si_status;\n void *si_addr;\n union sigval si_value;\n long si_band;\n unsigned long __pad[7];\n} siginfo_t;\n# 292 \"/usr/include/sys/signal.h\" 3 4\nunion __sigaction_u {\n void (*__sa_handler)(int);\n void (*__sa_sigaction)(int, struct __siginfo *,\n         void *);\n};\n\n\nstruct __sigaction {\n union __sigaction_u __sigaction_u;\n void (*sa_tramp)(void *, int, int, siginfo_t *, void *);\n sigset_t sa_mask;\n int sa_flags;\n};\n\n\n\n\nstruct sigaction {\n union __sigaction_u __sigaction_u;\n sigset_t sa_mask;\n int sa_flags;\n};\n# 354 \"/usr/include/sys/signal.h\" 3 4\ntypedef void (*sig_t)(int);\n# 371 \"/usr/include/sys/signal.h\" 3 4\nstruct sigvec {\n void (*sv_handler)(int);\n int sv_mask;\n int sv_flags;\n};\n# 390 \"/usr/include/sys/signal.h\" 3 4\nstruct sigstack {\n char *ss_sp;\n int ss_onstack;\n};\n# 412 \"/usr/include/sys/signal.h\" 3 4\n\nvoid (*signal(int, void (*)(int)))(int);\n\n# 64 \"/usr/include/signal.h\" 2 3 4\n\n\n\n\n\n\n\nextern const char *const sys_signame[32];\nextern const char *const sys_siglist[32];\n\n\n\nint raise(int);\n\n\n\n\nvoid (*bsd_signal(int, void (*)(int)))(int);\nint kill(pid_t, int) __asm(\"_\" \"kill\" );\nint killpg(pid_t, int) __asm(\"_\" \"killpg\" );\nint pthread_kill(pthread_t, int);\nint pthread_sigmask(int, const sigset_t *, sigset_t *) __asm(\"_\" \"pthread_sigmask\" );\nint sigaction(int, const struct sigaction * ,\n     struct sigaction * );\nint sigaddset(sigset_t *, int);\nint sigaltstack(const stack_t * , stack_t * ) __asm(\"_\" \"sigaltstack\" );\nint sigdelset(sigset_t *, int);\nint sigemptyset(sigset_t *);\nint sigfillset(sigset_t *);\nint sighold(int);\nint sigignore(int);\nint siginterrupt(int, int);\nint sigismember(const sigset_t *, int);\nint sigpause(int) __asm(\"_\" \"sigpause\" );\nint sigpending(sigset_t *);\nint sigprocmask(int, const sigset_t * , sigset_t * );\nint sigrelse(int);\nvoid (*sigset(int, void (*)(int)))(int);\nint sigsuspend(const sigset_t *) __asm(\"_\" \"sigsuspend\" );\nint sigwait(const sigset_t * , int * ) __asm(\"_\" \"sigwait\" );\n\nvoid psignal(unsigned int, const char *);\nint sigblock(int);\nint sigsetmask(int);\nint sigvec(int, struct sigvec *, struct sigvec *);\n\n\n\n\n\n\nstatic __inline int\n__sigbits(int __signo)\n{\n    return __signo > 32 ? 0 : (1 << (__signo - 1));\n}\n# 22 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n# 1 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/stddef.h\" 1 3 4\n# 152 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/stddef.h\" 3 4\ntypedef long int ptrdiff_t;\n# 23 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n# 1 \"/usr/include/stdio.h\" 1 3 4\n# 87 \"/usr/include/stdio.h\" 3 4\ntypedef __darwin_off_t fpos_t;\n# 98 \"/usr/include/stdio.h\" 3 4\nstruct __sbuf {\n unsigned char *_base;\n int _size;\n};\n\n\nstruct __sFILEX;\n# 132 \"/usr/include/stdio.h\" 3 4\ntypedef struct __sFILE {\n unsigned char *_p;\n int _r;\n int _w;\n short _flags;\n short _file;\n struct __sbuf _bf;\n int _lbfsize;\n\n\n void *_cookie;\n int (*_close)(void *);\n int (*_read) (void *, char *, int);\n fpos_t (*_seek) (void *, fpos_t, int);\n int (*_write)(void *, const char *, int);\n\n\n struct __sbuf _ub;\n struct __sFILEX *_extra;\n int _ur;\n\n\n unsigned char _ubuf[3];\n unsigned char _nbuf[1];\n\n\n struct __sbuf _lb;\n\n\n int _blksize;\n fpos_t _offset;\n} FILE;\n\n\n\nextern FILE *__stdinp;\nextern FILE *__stdoutp;\nextern FILE *__stderrp;\n\n\n\n\n# 248 \"/usr/include/stdio.h\" 3 4\n\nvoid clearerr(FILE *);\nint fclose(FILE *);\nint feof(FILE *);\nint ferror(FILE *);\nint fflush(FILE *);\nint fgetc(FILE *);\nint fgetpos(FILE * , fpos_t *);\nchar *fgets(char * , int, FILE *);\n\n\n\nFILE *fopen(const char * , const char * ) __asm(\"_\" \"fopen\" );\n\nint fprintf(FILE * , const char * , ...) ;\nint fputc(int, FILE *);\nint fputs(const char * , FILE * ) __asm(\"_\" \"fputs\" );\nsize_t fread(void * , size_t, size_t, FILE * );\nFILE *freopen(const char * , const char * ,\n     FILE * ) __asm(\"_\" \"freopen\" );\nint fscanf(FILE * , const char * , ...) ;\nint fseek(FILE *, long, int);\nint fsetpos(FILE *, const fpos_t *);\nlong ftell(FILE *);\nsize_t fwrite(const void * , size_t, size_t, FILE * ) __asm(\"_\" \"fwrite\" );\nint getc(FILE *);\nint getchar(void);\nchar *gets(char *);\n\nextern const int sys_nerr;\nextern const char *const sys_errlist[];\n\nvoid perror(const char *);\nint printf(const char * , ...) ;\nint putc(int, FILE *);\nint putchar(int);\nint puts(const char *);\nint remove(const char *);\nint rename (const char *, const char *);\nvoid rewind(FILE *);\nint scanf(const char * , ...) ;\nvoid setbuf(FILE * , char * );\nint setvbuf(FILE * , char * , int, size_t);\nint sprintf(char * , const char * , ...) ;\nint sscanf(const char * , const char * , ...) ;\nFILE *tmpfile(void);\nchar *tmpnam(char *);\nint ungetc(int, FILE *);\nint vfprintf(FILE * , const char * , va_list) ;\nint vprintf(const char * , va_list) ;\nint vsprintf(char * , const char * , va_list) ;\n\nint asprintf(char **, const char *, ...) ;\nint vasprintf(char **, const char *, va_list) ;\n\n\n\n\n\n\n\n\n\n\nchar *ctermid(char *);\n\nchar *ctermid_r(char *);\n\n\n\n\nFILE *fdopen(int, const char *) __asm(\"_\" \"fdopen\" );\n\n\nchar *fgetln(FILE *, size_t *);\n\nint fileno(FILE *);\nvoid flockfile(FILE *);\n\nconst char\n *fmtcheck(const char *, const char *);\nint fpurge(FILE *);\n\nint fseeko(FILE *, off_t, int);\noff_t ftello(FILE *);\nint ftrylockfile(FILE *);\nvoid funlockfile(FILE *);\nint getc_unlocked(FILE *);\nint getchar_unlocked(void);\n\nint getw(FILE *);\n\nint pclose(FILE *);\n\n\n\nFILE *popen(const char *, const char *) __asm(\"_\" \"popen\" );\n\nint putc_unlocked(int, FILE *);\nint putchar_unlocked(int);\n\nint putw(int, FILE *);\nvoid setbuffer(FILE *, char *, int);\nint setlinebuf(FILE *);\n\nint snprintf(char * , size_t, const char * , ...) ;\nchar *tempnam(const char *, const char *) __asm(\"_\" \"tempnam\" );\nint vfscanf(FILE * , const char * , va_list) ;\nint vscanf(const char * , va_list) ;\nint vsnprintf(char * , size_t, const char * , va_list) ;\nint vsscanf(const char * , const char * , va_list) ;\n\nFILE *zopen(const char *, const char *, int);\n\n\n\n\n\n\n\n\nFILE *funopen(const void *,\n  int (*)(void *, char *, int),\n  int (*)(void *, const char *, int),\n  fpos_t (*)(void *, fpos_t, int),\n  int (*)(void *));\n\n# 383 \"/usr/include/stdio.h\" 3 4\n\nint __srget(FILE *);\nint __svfscanf(FILE *, const char *, va_list) ;\nint __swbuf(int, FILE *);\n\n\n\n\n\n\n\n\nstatic __inline int __sputc(int _c, FILE *_p) {\n if (--_p->_w >= 0 || (_p->_w >= _p->_lbfsize && (char)_c != '\\n'))\n  return (*_p->_p++ = _c);\n else\n  return (__swbuf(_c, _p));\n}\n# 443 \"/usr/include/stdio.h\" 3 4\n# 1 \"/usr/include/secure/_stdio.h\" 1 3 4\n# 31 \"/usr/include/secure/_stdio.h\" 3 4\n# 1 \"/usr/include/secure/_common.h\" 1 3 4\n# 32 \"/usr/include/secure/_stdio.h\" 2 3 4\n# 42 \"/usr/include/secure/_stdio.h\" 3 4\nextern int __sprintf_chk (char * , int, size_t,\n     const char * , ...)\n  ;\n\n\n\n\nextern int __snprintf_chk (char * , size_t, int, size_t,\n      const char * , ...)\n  ;\n\n\n\n\nextern int __vsprintf_chk (char * , int, size_t,\n      const char * , va_list)\n  ;\n\n\n\n\nextern int __vsnprintf_chk (char * , size_t, int, size_t,\n       const char * , va_list)\n  ;\n# 444 \"/usr/include/stdio.h\" 2 3 4\n# 24 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n# 1 \"/usr/include/stdlib.h\" 1 3 4\n# 61 \"/usr/include/stdlib.h\" 3 4\n# 1 \"/usr/include/Availability.h\" 1 3 4\n# 126 \"/usr/include/Availability.h\" 3 4\n# 1 \"/usr/include/AvailabilityInternal.h\" 1 3 4\n# 127 \"/usr/include/Availability.h\" 2 3 4\n# 62 \"/usr/include/stdlib.h\" 2 3 4\n\n\n\n# 1 \"/usr/include/sys/wait.h\" 1 3 4\n# 79 \"/usr/include/sys/wait.h\" 3 4\ntypedef enum {\n P_ALL,\n P_PID,\n P_PGID\n} idtype_t;\n# 117 \"/usr/include/sys/wait.h\" 3 4\n# 1 \"/usr/include/sys/resource.h\" 1 3 4\n# 76 \"/usr/include/sys/resource.h\" 3 4\n# 1 \"/usr/include/sys/_structs.h\" 1 3 4\n# 100 \"/usr/include/sys/_structs.h\" 3 4\nstruct timeval\n{\n __darwin_time_t tv_sec;\n __darwin_suseconds_t tv_usec;\n};\n# 77 \"/usr/include/sys/resource.h\" 2 3 4\n# 88 \"/usr/include/sys/resource.h\" 3 4\ntypedef __uint64_t rlim_t;\n# 144 \"/usr/include/sys/resource.h\" 3 4\nstruct rusage {\n struct timeval ru_utime;\n struct timeval ru_stime;\n# 155 \"/usr/include/sys/resource.h\" 3 4\n long ru_maxrss;\n\n long ru_ixrss;\n long ru_idrss;\n long ru_isrss;\n long ru_minflt;\n long ru_majflt;\n long ru_nswap;\n long ru_inblock;\n long ru_oublock;\n long ru_msgsnd;\n long ru_msgrcv;\n long ru_nsignals;\n long ru_nvcsw;\n long ru_nivcsw;\n\n\n};\n# 215 \"/usr/include/sys/resource.h\" 3 4\nstruct rlimit {\n rlim_t rlim_cur;\n rlim_t rlim_max;\n};\n# 237 \"/usr/include/sys/resource.h\" 3 4\n\nint getpriority(int, id_t);\n\nint getiopolicy_np(int, int);\n\nint getrlimit(int, struct rlimit *) __asm(\"_\" \"getrlimit\" );\nint getrusage(int, struct rusage *);\nint setpriority(int, id_t, int);\n\nint setiopolicy_np(int, int, int);\n\nint setrlimit(int, const struct rlimit *) __asm(\"_\" \"setrlimit\" );\n\n# 118 \"/usr/include/sys/wait.h\" 2 3 4\n# 201 \"/usr/include/sys/wait.h\" 3 4\nunion wait {\n int w_status;\n\n\n\n struct {\n\n  unsigned int w_Termsig:7,\n    w_Coredump:1,\n    w_Retcode:8,\n    w_Filler:16;\n\n\n\n\n\n\n\n } w_T;\n\n\n\n\n\n struct {\n\n  unsigned int w_Stopval:8,\n    w_Stopsig:8,\n    w_Filler:16;\n\n\n\n\n\n\n } w_S;\n};\n# 254 \"/usr/include/sys/wait.h\" 3 4\n\npid_t wait(int *) __asm(\"_\" \"wait\" );\npid_t waitpid(pid_t, int *, int) __asm(\"_\" \"waitpid\" );\n\nint waitid(idtype_t, id_t, siginfo_t *, int) __asm(\"_\" \"waitid\" );\n\n\npid_t wait3(int *, int, struct rusage *);\npid_t wait4(pid_t, int *, int, struct rusage *);\n\n\n# 66 \"/usr/include/stdlib.h\" 2 3 4\n\n# 1 \"/usr/include/alloca.h\" 1 3 4\n# 35 \"/usr/include/alloca.h\" 3 4\n\nvoid *alloca(size_t);\n\n# 68 \"/usr/include/stdlib.h\" 2 3 4\n# 97 \"/usr/include/stdlib.h\" 3 4\ntypedef struct {\n int quot;\n int rem;\n} div_t;\n\ntypedef struct {\n long quot;\n long rem;\n} ldiv_t;\n\n\ntypedef struct {\n long long quot;\n long long rem;\n} lldiv_t;\n# 134 \"/usr/include/stdlib.h\" 3 4\nextern int __mb_cur_max;\n# 144 \"/usr/include/stdlib.h\" 3 4\n\nvoid abort(void) __attribute__((__noreturn__));\nint abs(int) __attribute__((__const__));\nint atexit(void (*)(void));\ndouble atof(const char *);\nint atoi(const char *);\nlong atol(const char *);\n\nlong long\n  atoll(const char *);\n\nvoid *bsearch(const void *, const void *, size_t,\n     size_t, int (*)(const void *, const void *));\nvoid *calloc(size_t, size_t);\ndiv_t div(int, int) __attribute__((__const__));\nvoid exit(int) __attribute__((__noreturn__));\nvoid free(void *);\nchar *getenv(const char *);\nlong labs(long) __attribute__((__const__));\nldiv_t ldiv(long, long) __attribute__((__const__));\n\nlong long\n  llabs(long long);\nlldiv_t lldiv(long long, long long);\n\nvoid *malloc(size_t);\nint mblen(const char *, size_t);\nsize_t mbstowcs(wchar_t * , const char * , size_t);\nint mbtowc(wchar_t * , const char * , size_t);\nint posix_memalign(void **, size_t, size_t);\nvoid qsort(void *, size_t, size_t,\n     int (*)(const void *, const void *));\nint rand(void);\nvoid *realloc(void *, size_t);\nvoid srand(unsigned);\ndouble strtod(const char *, char **) __asm(\"_\" \"strtod\" );\nfloat strtof(const char *, char **) __asm(\"_\" \"strtof\" );\nlong strtol(const char *, char **, int);\nlong double\n  strtold(const char *, char **) ;\n\nlong long\n  strtoll(const char *, char **, int);\n\nunsigned long\n  strtoul(const char *, char **, int);\n\nunsigned long long\n  strtoull(const char *, char **, int);\n\nint system(const char *) __asm(\"_\" \"system\" );\nsize_t wcstombs(char * , const wchar_t * , size_t);\nint wctomb(char *, wchar_t);\n\n\nvoid _Exit(int) __attribute__((__noreturn__));\nlong a64l(const char *);\ndouble drand48(void);\nchar *ecvt(double, int, int *, int *);\ndouble erand48(unsigned short[3]);\nchar *fcvt(double, int, int *, int *);\nchar *gcvt(double, int, char *);\nint getsubopt(char **, char * const *, char **);\nint grantpt(int);\n\nchar *initstate(unsigned, char *, size_t);\n\n\n\nlong jrand48(unsigned short[3]);\nchar *l64a(long);\nvoid lcong48(unsigned short[7]);\nlong lrand48(void);\nchar *mktemp(char *);\nint mkstemp(char *);\nlong mrand48(void);\nlong nrand48(unsigned short[3]);\nint posix_openpt(int);\nchar *ptsname(int);\nint putenv(char *) __asm(\"_\" \"putenv\" );\nlong random(void);\nint rand_r(unsigned *);\n\nchar *realpath(const char * , char * ) __asm(\"_\" \"realpath\" \"$DARWIN_EXTSN\");\n\n\n\nunsigned short\n *seed48(unsigned short[3]);\nint setenv(const char *, const char *, int) __asm(\"_\" \"setenv\" );\n\nvoid setkey(const char *) __asm(\"_\" \"setkey\" );\n\n\n\nchar *setstate(const char *);\nvoid srand48(long);\n\nvoid srandom(unsigned);\n\n\n\nint unlockpt(int);\n\nint unsetenv(const char *) __asm(\"_\" \"unsetenv\" );\n# 267 \"/usr/include/stdlib.h\" 3 4\nu_int32_t\n  arc4random(void);\nvoid arc4random_addrandom(unsigned char *dat, int datlen);\nvoid arc4random_stir(void);\n\nint atexit_b(void (^)(void));\nvoid *bsearch_b(const void *, const void *, size_t,\n     size_t, int (^)(const void *, const void *));\n\n\n\nchar *cgetcap(char *, const char *, int);\nint cgetclose(void);\nint cgetent(char **, char **, const char *);\nint cgetfirst(char **, char **);\nint cgetmatch(const char *, const char *);\nint cgetnext(char **, char **);\nint cgetnum(char *, const char *, long *);\nint cgetset(const char *);\nint cgetstr(char *, const char *, char **);\nint cgetustr(char *, const char *, char **);\n\nint daemon(int, int) __asm(\"_\" \"daemon\" \"$1050\") __attribute__((deprecated,visibility(\"default\")));\nchar *devname(dev_t, mode_t);\nchar *devname_r(dev_t, mode_t, char *buf, int len);\nchar *getbsize(int *, long *);\nint getloadavg(double [], int);\nconst char\n *getprogname(void);\n\nint heapsort(void *, size_t, size_t,\n     int (*)(const void *, const void *));\n\nint heapsort_b(void *, size_t, size_t,\n     int (^)(const void *, const void *));\n\nint mergesort(void *, size_t, size_t,\n     int (*)(const void *, const void *));\n\nint mergesort_b(void *, size_t, size_t,\n     int (^)(const void *, const void *));\n\nvoid psort(void *, size_t, size_t,\n     int (*)(const void *, const void *));\n\nvoid psort_b(void *, size_t, size_t,\n     int (^)(const void *, const void *));\n\nvoid psort_r(void *, size_t, size_t, void *,\n     int (*)(void *, const void *, const void *));\n\nvoid qsort_b(void *, size_t, size_t,\n     int (^)(const void *, const void *));\n\nvoid qsort_r(void *, size_t, size_t, void *,\n     int (*)(void *, const void *, const void *));\nint radixsort(const unsigned char **, int, const unsigned char *,\n     unsigned);\nvoid setprogname(const char *);\nint sradixsort(const unsigned char **, int, const unsigned char *,\n     unsigned);\nvoid sranddev(void);\nvoid srandomdev(void);\nvoid *reallocf(void *, size_t);\n\nlong long\n  strtoq(const char *, char **, int);\nunsigned long long\n  strtouq(const char *, char **, int);\n\nextern char *suboptarg;\nvoid *valloc(size_t);\n\n\n\n\n\n\n\n# 25 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n# 1 \"/usr/include/string.h\" 1 3 4\n# 80 \"/usr/include/string.h\" 3 4\n\nvoid *memchr(const void *, int, size_t);\nint memcmp(const void *, const void *, size_t);\nvoid *memcpy(void *, const void *, size_t);\nvoid *memmove(void *, const void *, size_t);\nvoid *memset(void *, int, size_t);\n\nchar *stpcpy(char *, const char *);\nchar *strcasestr(const char *, const char *);\n\nchar *strcat(char *, const char *);\nchar *strchr(const char *, int);\nint strcmp(const char *, const char *);\nint strcoll(const char *, const char *);\nchar *strcpy(char *, const char *);\nsize_t strcspn(const char *, const char *);\nchar *strerror(int) __asm(\"_\" \"strerror\" );\nint strerror_r(int, char *, size_t);\nsize_t strlen(const char *);\nchar *strncat(char *, const char *, size_t);\nint strncmp(const char *, const char *, size_t);\nchar *strncpy(char *, const char *, size_t);\n\nchar *strnstr(const char *, const char *, size_t);\n\nchar *strpbrk(const char *, const char *);\nchar *strrchr(const char *, int);\nsize_t strspn(const char *, const char *);\nchar *strstr(const char *, const char *);\nchar *strtok(char *, const char *);\nsize_t strxfrm(char *, const char *, size_t);\n\n\n\nvoid *memccpy(void *, const void *, int, size_t);\nchar *strtok_r(char *, const char *, char **);\nchar *strdup(const char *);\n\nint bcmp(const void *, const void *, size_t);\nvoid bcopy(const void *, void *, size_t);\nvoid bzero(void *, size_t);\nint ffs(int);\nint ffsl(long);\nint fls(int);\nint flsl(long);\nchar *index(const char *, int);\nvoid memset_pattern4(void *, const void *, size_t);\nvoid memset_pattern8(void *, const void *, size_t);\nvoid memset_pattern16(void *, const void *, size_t);\nchar *rindex(const char *, int);\nint strcasecmp(const char *, const char *);\nsize_t strlcat(char *, const char *, size_t);\nsize_t strlcpy(char *, const char *, size_t);\nvoid strmode(int, char *);\nint strncasecmp(const char *, const char *, size_t);\nchar *strsep(char **, const char *);\nchar *strsignal(int sig);\nvoid swab(const void * , void * , ssize_t);\n\n\n\n\n\n\n\n\n\n\n# 1 \"/usr/include/secure/_string.h\" 1 3 4\n# 55 \"/usr/include/secure/_string.h\" 3 4\nstatic __inline void *\n__inline_memcpy_chk (void *__dest, const void *__src, size_t __len)\n{\n  return __builtin___memcpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 0));\n}\n\n\n\n\n\n\nstatic __inline void *\n__inline_memmove_chk (void *__dest, const void *__src, size_t __len)\n{\n  return __builtin___memmove_chk (__dest, __src, __len, __builtin_object_size (__dest, 0));\n}\n\n\n\n\n\n\nstatic __inline void *\n__inline_memset_chk (void *__dest, int __val, size_t __len)\n{\n  return __builtin___memset_chk (__dest, __val, __len, __builtin_object_size (__dest, 0));\n}\n\n\n\n\n\n\nstatic __inline char *\n__inline_strcpy_chk (char * __dest, const char * __src)\n{\n  return __builtin___strcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1));\n}\n\n\n\n\n\n\n\nstatic __inline char *\n__inline_stpcpy_chk (char *__dest, const char *__src)\n{\n  return __builtin___stpcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1));\n}\n\n\n\n\n\n\n\nstatic __inline char *\n__inline_strncpy_chk (char * __dest, const char * __src,\n        size_t __len)\n{\n  return __builtin___strncpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 2 > 1));\n}\n\n\n\n\n\n\nstatic __inline char *\n__inline_strcat_chk (char * __dest, const char * __src)\n{\n  return __builtin___strcat_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1));\n}\n\n\n\n\n\n\nstatic __inline char *\n__inline_strncat_chk (char * __dest, const char * __src,\n        size_t __len)\n{\n  return __builtin___strncat_chk (__dest, __src, __len, __builtin_object_size (__dest, 2 > 1));\n}\n# 149 \"/usr/include/string.h\" 2 3 4\n# 26 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n# 1 \"/usr/include/time.h\" 1 3 4\n# 69 \"/usr/include/time.h\" 3 4\n# 1 \"/usr/include/_structs.h\" 1 3 4\n# 24 \"/usr/include/_structs.h\" 3 4\n# 1 \"/usr/include/sys/_structs.h\" 1 3 4\n# 88 \"/usr/include/sys/_structs.h\" 3 4\nstruct timespec\n{\n __darwin_time_t tv_sec;\n long tv_nsec;\n};\n# 25 \"/usr/include/_structs.h\" 2 3 4\n# 70 \"/usr/include/time.h\" 2 3 4\n# 90 \"/usr/include/time.h\" 3 4\nstruct tm {\n int tm_sec;\n int tm_min;\n int tm_hour;\n int tm_mday;\n int tm_mon;\n int tm_year;\n int tm_wday;\n int tm_yday;\n int tm_isdst;\n long tm_gmtoff;\n char *tm_zone;\n};\n# 113 \"/usr/include/time.h\" 3 4\nextern char *tzname[];\n\n\nextern int getdate_err;\n\nextern long timezone __asm(\"_\" \"timezone\" );\n\nextern int daylight;\n\n\nchar *asctime(const struct tm *);\nclock_t clock(void) __asm(\"_\" \"clock\" );\nchar *ctime(const time_t *);\ndouble difftime(time_t, time_t);\nstruct tm *getdate(const char *);\nstruct tm *gmtime(const time_t *);\nstruct tm *localtime(const time_t *);\ntime_t mktime(struct tm *) __asm(\"_\" \"mktime\" );\nsize_t strftime(char * , size_t, const char * , const struct tm * ) __asm(\"_\" \"strftime\" );\nchar *strptime(const char * , const char * , struct tm * ) __asm(\"_\" \"strptime\" );\ntime_t time(time_t *);\n\n\nvoid tzset(void);\n\n\n\nchar *asctime_r(const struct tm * , char * );\nchar *ctime_r(const time_t *, char *);\nstruct tm *gmtime_r(const time_t * , struct tm * );\nstruct tm *localtime_r(const time_t * , struct tm * );\n\n\ntime_t posix2time(time_t);\n\n\n\nvoid tzsetwall(void);\ntime_t time2posix(time_t);\ntime_t timelocal(struct tm * const);\ntime_t timegm(struct tm * const);\n\n\n\nint nanosleep(const struct timespec *, struct timespec *) __asm(\"_\" \"nanosleep\" );\n\n\n# 27 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n# 38 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 3\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBase.h\" 1 3\n\n\n\n\n\n\n\n# 1 \"/usr/include/TargetConditionals.h\" 1 3 4\n# 9 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBase.h\" 2 3\n# 38 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBase.h\" 3\n# 1 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/stdint.h\" 1 3 4\n# 40 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/stdint.h\" 3 4\ntypedef unsigned char uint8_t;\n\n\n\n\ntypedef unsigned short uint16_t;\n\n\n\n\ntypedef unsigned int uint32_t;\n\n\n\n\ntypedef unsigned long long uint64_t;\n\n\n\ntypedef int8_t int_least8_t;\ntypedef int16_t int_least16_t;\ntypedef int32_t int_least32_t;\ntypedef int64_t int_least64_t;\ntypedef uint8_t uint_least8_t;\ntypedef uint16_t uint_least16_t;\ntypedef uint32_t uint_least32_t;\ntypedef uint64_t uint_least64_t;\n\n\n\ntypedef int8_t int_fast8_t;\ntypedef int16_t int_fast16_t;\ntypedef int32_t int_fast32_t;\ntypedef int64_t int_fast64_t;\ntypedef uint8_t uint_fast8_t;\ntypedef uint16_t uint_fast16_t;\ntypedef uint32_t uint_fast32_t;\ntypedef uint64_t uint_fast64_t;\n# 97 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/stdint.h\" 3 4\ntypedef long int intmax_t;\n# 106 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/stdint.h\" 3 4\ntypedef long unsigned int uintmax_t;\n# 39 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBase.h\" 2 3\n# 1 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/stdbool.h\" 1 3 4\n# 40 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBase.h\" 2 3\n\n# 1 \"/usr/include/AvailabilityMacros.h\" 1 3 4\n# 42 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBase.h\" 2 3\n\n\n\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Headers/../Frameworks/CarbonCore.framework/Headers/MacTypes.h\" 1 3\n# 20 \"/System/Library/Frameworks/CoreServices.framework/Headers/../Frameworks/CarbonCore.framework/Headers/MacTypes.h\" 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/ConditionalMacros.h\" 1 3\n# 21 \"/System/Library/Frameworks/CoreServices.framework/Headers/../Frameworks/CarbonCore.framework/Headers/MacTypes.h\" 2 3\n# 37 \"/System/Library/Frameworks/CoreServices.framework/Headers/../Frameworks/CarbonCore.framework/Headers/MacTypes.h\" 3\n#pragma pack(push, 2)\n# 85 \"/System/Library/Frameworks/CoreServices.framework/Headers/../Frameworks/CarbonCore.framework/Headers/MacTypes.h\" 3\ntypedef unsigned char UInt8;\ntypedef signed char SInt8;\ntypedef unsigned short UInt16;\ntypedef signed short SInt16;\n\n\ntypedef unsigned int UInt32;\ntypedef signed int SInt32;\n# 112 \"/System/Library/Frameworks/CoreServices.framework/Headers/../Frameworks/CarbonCore.framework/Headers/MacTypes.h\" 3\nstruct wide {\n  UInt32 lo;\n  SInt32 hi;\n};\ntypedef struct wide wide;\nstruct UnsignedWide {\n  UInt32 lo;\n  UInt32 hi;\n};\ntypedef struct UnsignedWide UnsignedWide;\n# 143 \"/System/Library/Frameworks/CoreServices.framework/Headers/../Frameworks/CarbonCore.framework/Headers/MacTypes.h\" 3\n      typedef signed long long SInt64;\n        typedef unsigned long long UInt64;\n# 163 \"/System/Library/Frameworks/CoreServices.framework/Headers/../Frameworks/CarbonCore.framework/Headers/MacTypes.h\" 3\ntypedef SInt32 Fixed;\ntypedef Fixed * FixedPtr;\ntypedef SInt32 Fract;\ntypedef Fract * FractPtr;\ntypedef UInt32 UnsignedFixed;\ntypedef UnsignedFixed * UnsignedFixedPtr;\ntypedef short ShortFixed;\ntypedef ShortFixed * ShortFixedPtr;\n# 190 \"/System/Library/Frameworks/CoreServices.framework/Headers/../Frameworks/CarbonCore.framework/Headers/MacTypes.h\" 3\ntypedef float Float32;\ntypedef double Float64;\nstruct Float80 {\n    SInt16 exp;\n    UInt16 man[4];\n};\ntypedef struct Float80 Float80;\n\nstruct Float96 {\n    SInt16 exp[2];\n    UInt16 man[4];\n};\ntypedef struct Float96 Float96;\nstruct Float32Point {\n    Float32 x;\n    Float32 y;\n};\ntypedef struct Float32Point Float32Point;\n# 218 \"/System/Library/Frameworks/CoreServices.framework/Headers/../Frameworks/CarbonCore.framework/Headers/MacTypes.h\" 3\ntypedef char * Ptr;\ntypedef Ptr * Handle;\ntypedef long Size;\n# 248 \"/System/Library/Frameworks/CoreServices.framework/Headers/../Frameworks/CarbonCore.framework/Headers/MacTypes.h\" 3\ntypedef SInt16 OSErr;\ntypedef SInt32 OSStatus;\ntypedef void * LogicalAddress;\ntypedef const void * ConstLogicalAddress;\ntypedef void * PhysicalAddress;\ntypedef UInt8 * BytePtr;\ntypedef unsigned long ByteCount;\ntypedef unsigned long ByteOffset;\ntypedef SInt32 Duration;\ntypedef UnsignedWide AbsoluteTime;\ntypedef UInt32 OptionBits;\ntypedef unsigned long ItemCount;\ntypedef UInt32 PBVersion;\ntypedef SInt16 ScriptCode;\ntypedef SInt16 LangCode;\ntypedef SInt16 RegionCode;\ntypedef UInt32 FourCharCode;\ntypedef FourCharCode OSType;\ntypedef FourCharCode ResType;\ntypedef OSType * OSTypePtr;\ntypedef ResType * ResTypePtr;\n# 279 \"/System/Library/Frameworks/CoreServices.framework/Headers/../Frameworks/CarbonCore.framework/Headers/MacTypes.h\" 3\ntypedef unsigned char Boolean;\n# 292 \"/System/Library/Frameworks/CoreServices.framework/Headers/../Frameworks/CarbonCore.framework/Headers/MacTypes.h\" 3\ntypedef long ( * ProcPtr)();\ntypedef void ( * Register68kProcPtr)();\n\n\n\n\ntypedef ProcPtr UniversalProcPtr;\n\n\ntypedef ProcPtr * ProcHandle;\ntypedef UniversalProcPtr * UniversalProcHandle;\n# 317 \"/System/Library/Frameworks/CoreServices.framework/Headers/../Frameworks/CarbonCore.framework/Headers/MacTypes.h\" 3\ntypedef void * PRefCon;\n\ntypedef void * URefCon;\ntypedef void * SRefCon;\n# 347 \"/System/Library/Frameworks/CoreServices.framework/Headers/../Frameworks/CarbonCore.framework/Headers/MacTypes.h\" 3\nenum {\n  noErr = 0\n};\n\nenum {\n  kNilOptions = 0\n};\n\n\nenum {\n  kVariableLengthArray = 1\n};\n\nenum {\n  kUnknownType = 0x3F3F3F3F\n};\n# 416 \"/System/Library/Frameworks/CoreServices.framework/Headers/../Frameworks/CarbonCore.framework/Headers/MacTypes.h\" 3\ntypedef UInt32 UnicodeScalarValue;\ntypedef UInt32 UTF32Char;\ntypedef UInt16 UniChar;\ntypedef UInt16 UTF16Char;\ntypedef UInt8 UTF8Char;\ntypedef UniChar * UniCharPtr;\ntypedef unsigned long UniCharCount;\ntypedef UniCharCount * UniCharCountPtr;\ntypedef unsigned char Str255[256];\ntypedef unsigned char Str63[64];\ntypedef unsigned char Str32[33];\ntypedef unsigned char Str31[32];\ntypedef unsigned char Str27[28];\ntypedef unsigned char Str15[16];\n# 438 \"/System/Library/Frameworks/CoreServices.framework/Headers/../Frameworks/CarbonCore.framework/Headers/MacTypes.h\" 3\ntypedef unsigned char Str32Field[34];\n# 448 \"/System/Library/Frameworks/CoreServices.framework/Headers/../Frameworks/CarbonCore.framework/Headers/MacTypes.h\" 3\ntypedef Str63 StrFileName;\ntypedef unsigned char * StringPtr;\ntypedef StringPtr * StringHandle;\ntypedef const unsigned char * ConstStringPtr;\ntypedef const unsigned char * ConstStr255Param;\ntypedef const unsigned char * ConstStr63Param;\ntypedef const unsigned char * ConstStr32Param;\ntypedef const unsigned char * ConstStr31Param;\ntypedef const unsigned char * ConstStr27Param;\ntypedef const unsigned char * ConstStr15Param;\ntypedef ConstStr63Param ConstStrFileNameParam;\n# 475 \"/System/Library/Frameworks/CoreServices.framework/Headers/../Frameworks/CarbonCore.framework/Headers/MacTypes.h\" 3\nstruct ProcessSerialNumber {\n  UInt32 highLongOfPSN;\n  UInt32 lowLongOfPSN;\n};\ntypedef struct ProcessSerialNumber ProcessSerialNumber;\ntypedef ProcessSerialNumber * ProcessSerialNumberPtr;\n# 497 \"/System/Library/Frameworks/CoreServices.framework/Headers/../Frameworks/CarbonCore.framework/Headers/MacTypes.h\" 3\nstruct Point {\n  short v;\n  short h;\n};\ntypedef struct Point Point;\ntypedef Point * PointPtr;\nstruct Rect {\n  short top;\n  short left;\n  short bottom;\n  short right;\n};\ntypedef struct Rect Rect;\ntypedef Rect * RectPtr;\nstruct FixedPoint {\n  Fixed x;\n  Fixed y;\n};\ntypedef struct FixedPoint FixedPoint;\nstruct FixedRect {\n  Fixed left;\n  Fixed top;\n  Fixed right;\n  Fixed bottom;\n};\ntypedef struct FixedRect FixedRect;\n\ntypedef short CharParameter;\nenum {\n  normal = 0,\n  bold = 1,\n  italic = 2,\n  underline = 4,\n  outline = 8,\n  shadow = 0x10,\n  condense = 0x20,\n  extend = 0x40\n};\n\ntypedef unsigned char Style;\ntypedef short StyleParameter;\ntypedef Style StyleField;\n# 553 \"/System/Library/Frameworks/CoreServices.framework/Headers/../Frameworks/CarbonCore.framework/Headers/MacTypes.h\" 3\ntypedef SInt32 TimeValue;\ntypedef SInt32 TimeScale;\ntypedef wide CompTimeValue;\ntypedef SInt64 TimeValue64;\ntypedef struct TimeBaseRecord* TimeBase;\nstruct TimeRecord {\n  CompTimeValue value;\n  TimeScale scale;\n  TimeBase base;\n};\ntypedef struct TimeRecord TimeRecord;\n# 605 \"/System/Library/Frameworks/CoreServices.framework/Headers/../Frameworks/CarbonCore.framework/Headers/MacTypes.h\" 3\nstruct NumVersion {\n\n  UInt8 nonRelRev;\n  UInt8 stage;\n  UInt8 minorAndBugRev;\n  UInt8 majorRev;\n};\ntypedef struct NumVersion NumVersion;\n\n\nenum {\n\n  developStage = 0x20,\n  alphaStage = 0x40,\n  betaStage = 0x60,\n  finalStage = 0x80\n};\n\nunion NumVersionVariant {\n\n  NumVersion parts;\n  UInt32 whole;\n};\ntypedef union NumVersionVariant NumVersionVariant;\ntypedef NumVersionVariant * NumVersionVariantPtr;\ntypedef NumVersionVariantPtr * NumVersionVariantHandle;\nstruct VersRec {\n\n  NumVersion numericVersion;\n  short countryCode;\n  Str255 shortVersion;\n  Str255 reserved;\n};\ntypedef struct VersRec VersRec;\ntypedef VersRec * VersRecPtr;\ntypedef VersRecPtr * VersRecHndl;\n\n\n\n\n\ntypedef UInt8 Byte;\ntypedef SInt8 SignedByte;\ntypedef wide * WidePtr;\ntypedef UnsignedWide * UnsignedWidePtr;\ntypedef Float80 extended80;\ntypedef Float96 extended96;\ntypedef SInt8 VHSelect;\n# 666 \"/System/Library/Frameworks/CoreServices.framework/Headers/../Frameworks/CarbonCore.framework/Headers/MacTypes.h\" 3\nextern void\nDebugger(void) ;\n# 678 \"/System/Library/Frameworks/CoreServices.framework/Headers/../Frameworks/CarbonCore.framework/Headers/MacTypes.h\" 3\nextern void\nDebugStr(ConstStr255Param debuggerMsg) ;\n# 725 \"/System/Library/Frameworks/CoreServices.framework/Headers/../Frameworks/CarbonCore.framework/Headers/MacTypes.h\" 3\nextern void\nSysBreak(void) ;\n# 737 \"/System/Library/Frameworks/CoreServices.framework/Headers/../Frameworks/CarbonCore.framework/Headers/MacTypes.h\" 3\nextern void\nSysBreakStr(ConstStr255Param debuggerMsg) ;\n# 749 \"/System/Library/Frameworks/CoreServices.framework/Headers/../Frameworks/CarbonCore.framework/Headers/MacTypes.h\" 3\nextern void\nSysBreakFunc(ConstStr255Param debuggerMsg) ;\n# 760 \"/System/Library/Frameworks/CoreServices.framework/Headers/../Frameworks/CarbonCore.framework/Headers/MacTypes.h\" 3\n#pragma pack(pop)\n# 49 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBase.h\" 2 3\n# 117 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBase.h\" 3\n\n# 159 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBase.h\" 3\nextern double kCFCoreFoundationVersionNumber;\n# 228 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBase.h\" 3\ntypedef unsigned long CFTypeID;\ntypedef unsigned long CFOptionFlags;\ntypedef unsigned long CFHashCode;\ntypedef signed long CFIndex;\n\n\ntypedef const void * CFTypeRef;\n\ntypedef const struct __CFString * CFStringRef;\ntypedef struct __CFString * CFMutableStringRef;\n\n\n\n\n\n\ntypedef CFTypeRef CFPropertyListRef;\n\n\nenum {\n    kCFCompareLessThan = -1,\n    kCFCompareEqualTo = 0,\n    kCFCompareGreaterThan = 1\n};\ntypedef CFIndex CFComparisonResult;\n\n\ntypedef CFComparisonResult (*CFComparatorFunction)(const void *val1, const void *val2, void *context);\n\n\n\nenum {\n    kCFNotFound = -1\n};\n\n\n\ntypedef struct {\n    CFIndex location;\n    CFIndex length;\n} CFRange;\n\n\nstatic __inline__ __attribute__((always_inline)) CFRange CFRangeMake(CFIndex loc, CFIndex len) {\n    CFRange range;\n    range.location = loc;\n    range.length = len;\n    return range;\n}\n\n\n\n\n\nextern\nCFRange __CFRangeMake(CFIndex loc, CFIndex len);\n\n\n\n\n\ntypedef const struct __CFNull * CFNullRef;\n\nextern\nCFTypeID CFNullGetTypeID(void);\n\nextern\nconst CFNullRef kCFNull;\n# 309 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBase.h\" 3\ntypedef const struct __CFAllocator * CFAllocatorRef;\n\n\nextern\nconst CFAllocatorRef kCFAllocatorDefault;\n\n\nextern\nconst CFAllocatorRef kCFAllocatorSystemDefault;\n\n\n\n\n\n\n\nextern\nconst CFAllocatorRef kCFAllocatorMalloc;\n\n\n\n\n\nextern\nconst CFAllocatorRef kCFAllocatorMallocZone ;\n\n\n\n\n\nextern\nconst CFAllocatorRef kCFAllocatorNull;\n\n\n\n\n\nextern\nconst CFAllocatorRef kCFAllocatorUseContext;\n\ntypedef const void * (*CFAllocatorRetainCallBack)(const void *info);\ntypedef void (*CFAllocatorReleaseCallBack)(const void *info);\ntypedef CFStringRef (*CFAllocatorCopyDescriptionCallBack)(const void *info);\ntypedef void * (*CFAllocatorAllocateCallBack)(CFIndex allocSize, CFOptionFlags hint, void *info);\ntypedef void * (*CFAllocatorReallocateCallBack)(void *ptr, CFIndex newsize, CFOptionFlags hint, void *info);\ntypedef void (*CFAllocatorDeallocateCallBack)(void *ptr, void *info);\ntypedef CFIndex (*CFAllocatorPreferredSizeCallBack)(CFIndex size, CFOptionFlags hint, void *info);\ntypedef struct {\n    CFIndex version;\n    void * info;\n    CFAllocatorRetainCallBack retain;\n    CFAllocatorReleaseCallBack release;\n    CFAllocatorCopyDescriptionCallBack copyDescription;\n    CFAllocatorAllocateCallBack allocate;\n    CFAllocatorReallocateCallBack reallocate;\n    CFAllocatorDeallocateCallBack deallocate;\n    CFAllocatorPreferredSizeCallBack preferredSize;\n} CFAllocatorContext;\n\nextern\nCFTypeID CFAllocatorGetTypeID(void);\n# 394 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBase.h\" 3\nextern\nvoid CFAllocatorSetDefault(CFAllocatorRef allocator);\n\nextern\nCFAllocatorRef CFAllocatorGetDefault(void);\n\nextern\nCFAllocatorRef CFAllocatorCreate(CFAllocatorRef allocator, CFAllocatorContext *context);\n\nextern\nvoid *CFAllocatorAllocate(CFAllocatorRef allocator, CFIndex size, CFOptionFlags hint);\n\nextern\nvoid *CFAllocatorReallocate(CFAllocatorRef allocator, void *ptr, CFIndex newsize, CFOptionFlags hint);\n\nextern\nvoid CFAllocatorDeallocate(CFAllocatorRef allocator, void *ptr);\n\nextern\nCFIndex CFAllocatorGetPreferredSizeForSize(CFAllocatorRef allocator, CFIndex size, CFOptionFlags hint);\n\nextern\nvoid CFAllocatorGetContext(CFAllocatorRef allocator, CFAllocatorContext *context);\n\n\n\n\nextern\nCFTypeID CFGetTypeID(CFTypeRef cf);\n\nextern\nCFStringRef CFCopyTypeIDDescription(CFTypeID type_id);\n\nextern\nCFTypeRef CFRetain(CFTypeRef cf);\n\nextern\nvoid CFRelease(CFTypeRef cf);\n\nextern\nCFIndex CFGetRetainCount(CFTypeRef cf);\n\nextern\nCFTypeRef CFMakeCollectable(CFTypeRef cf) ;\n\nextern\nBoolean CFEqual(CFTypeRef cf1, CFTypeRef cf2);\n\nextern\nCFHashCode CFHash(CFTypeRef cf);\n\nextern\nCFStringRef CFCopyDescription(CFTypeRef cf);\n\nextern\nCFAllocatorRef CFGetAllocator(CFTypeRef cf);\n\n\n# 39 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFArray.h\" 1 3\n# 49 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFArray.h\" 3\n\n# 73 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFArray.h\" 3\ntypedef const void * (*CFArrayRetainCallBack)(CFAllocatorRef allocator, const void *value);\ntypedef void (*CFArrayReleaseCallBack)(CFAllocatorRef allocator, const void *value);\ntypedef CFStringRef (*CFArrayCopyDescriptionCallBack)(const void *value);\ntypedef Boolean (*CFArrayEqualCallBack)(const void *value1, const void *value2);\ntypedef struct {\n    CFIndex version;\n    CFArrayRetainCallBack retain;\n    CFArrayReleaseCallBack release;\n    CFArrayCopyDescriptionCallBack copyDescription;\n    CFArrayEqualCallBack equal;\n} CFArrayCallBacks;\n\n\n\n\n\n\nextern\nconst CFArrayCallBacks kCFTypeArrayCallBacks;\n# 101 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFArray.h\" 3\ntypedef void (*CFArrayApplierFunction)(const void *value, void *context);\n\n\n\n\n\ntypedef const struct __CFArray * CFArrayRef;\n\n\n\n\n\ntypedef struct __CFArray * CFMutableArrayRef;\n\n\n\n\n\nextern\nCFTypeID CFArrayGetTypeID(void);\n# 172 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFArray.h\" 3\nextern\nCFArrayRef CFArrayCreate(CFAllocatorRef allocator, const void **values, CFIndex numValues, const CFArrayCallBacks *callBacks);\n# 193 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFArray.h\" 3\nextern\nCFArrayRef CFArrayCreateCopy(CFAllocatorRef allocator, CFArrayRef theArray);\n# 237 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFArray.h\" 3\nextern\nCFMutableArrayRef CFArrayCreateMutable(CFAllocatorRef allocator, CFIndex capacity, const CFArrayCallBacks *callBacks);\n# 267 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFArray.h\" 3\nextern\nCFMutableArrayRef CFArrayCreateMutableCopy(CFAllocatorRef allocator, CFIndex capacity, CFArrayRef theArray);\n# 277 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFArray.h\" 3\nextern\nCFIndex CFArrayGetCount(CFArrayRef theArray);\n# 300 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFArray.h\" 3\nextern\nCFIndex CFArrayGetCountOfValue(CFArrayRef theArray, CFRange range, const void *value);\n# 323 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFArray.h\" 3\nextern\nBoolean CFArrayContainsValue(CFArrayRef theArray, CFRange range, const void *value);\n# 337 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFArray.h\" 3\nextern\nconst void *CFArrayGetValueAtIndex(CFArrayRef theArray, CFIndex idx);\n# 358 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFArray.h\" 3\nextern\nvoid CFArrayGetValues(CFArrayRef theArray, CFRange range, const void **values);\n# 385 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFArray.h\" 3\nextern\nvoid CFArrayApplyFunction(CFArrayRef theArray, CFRange range, CFArrayApplierFunction applier, void *context);\n# 410 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFArray.h\" 3\nextern\nCFIndex CFArrayGetFirstIndexOfValue(CFArrayRef theArray, CFRange range, const void *value);\n# 435 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFArray.h\" 3\nextern\nCFIndex CFArrayGetLastIndexOfValue(CFArrayRef theArray, CFRange range, const void *value);\n# 474 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFArray.h\" 3\nextern\nCFIndex CFArrayBSearchValues(CFArrayRef theArray, CFRange range, const void *value, CFComparatorFunction comparator, void *context);\n# 490 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFArray.h\" 3\nextern\nvoid CFArrayAppendValue(CFMutableArrayRef theArray, const void *value);\n# 511 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFArray.h\" 3\nextern\nvoid CFArrayInsertValueAtIndex(CFMutableArrayRef theArray, CFIndex idx, const void *value);\n# 532 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFArray.h\" 3\nextern\nvoid CFArraySetValueAtIndex(CFMutableArrayRef theArray, CFIndex idx, const void *value);\n# 546 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFArray.h\" 3\nextern\nvoid CFArrayRemoveValueAtIndex(CFMutableArrayRef theArray, CFIndex idx);\n# 556 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFArray.h\" 3\nextern\nvoid CFArrayRemoveAllValues(CFMutableArrayRef theArray);\n# 590 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFArray.h\" 3\nextern\nvoid CFArrayReplaceValues(CFMutableArrayRef theArray, CFRange range, const void **newValues, CFIndex newCount);\n# 608 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFArray.h\" 3\nextern\nvoid CFArrayExchangeValuesAtIndices(CFMutableArrayRef theArray, CFIndex idx1, CFIndex idx2);\n# 638 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFArray.h\" 3\nextern\nvoid CFArraySortValues(CFMutableArrayRef theArray, CFRange range, CFComparatorFunction comparator, void *context);\n# 665 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFArray.h\" 3\nextern\nvoid CFArrayAppendArray(CFMutableArrayRef theArray, CFArrayRef otherArray, CFRange otherRange);\n\n\n# 40 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBag.h\" 1 3\n# 10 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBag.h\" 3\n\n\ntypedef const void * (*CFBagRetainCallBack)(CFAllocatorRef allocator, const void *value);\ntypedef void (*CFBagReleaseCallBack)(CFAllocatorRef allocator, const void *value);\ntypedef CFStringRef (*CFBagCopyDescriptionCallBack)(const void *value);\ntypedef Boolean (*CFBagEqualCallBack)(const void *value1, const void *value2);\ntypedef CFHashCode (*CFBagHashCallBack)(const void *value);\ntypedef struct {\n    CFIndex version;\n    CFBagRetainCallBack retain;\n    CFBagReleaseCallBack release;\n    CFBagCopyDescriptionCallBack copyDescription;\n    CFBagEqualCallBack equal;\n    CFBagHashCallBack hash;\n} CFBagCallBacks;\n\nextern\nconst CFBagCallBacks kCFTypeBagCallBacks;\nextern\nconst CFBagCallBacks kCFCopyStringBagCallBacks;\n\ntypedef void (*CFBagApplierFunction)(const void *value, void *context);\n\ntypedef const struct __CFBag * CFBagRef;\ntypedef struct __CFBag * CFMutableBagRef;\n\nextern\nCFTypeID CFBagGetTypeID(void);\n\nextern\nCFBagRef CFBagCreate(CFAllocatorRef allocator, const void **values, CFIndex numValues, const CFBagCallBacks *callBacks);\n\nextern\nCFBagRef CFBagCreateCopy(CFAllocatorRef allocator, CFBagRef theBag);\n\nextern\nCFMutableBagRef CFBagCreateMutable(CFAllocatorRef allocator, CFIndex capacity, const CFBagCallBacks *callBacks);\n\nextern\nCFMutableBagRef CFBagCreateMutableCopy(CFAllocatorRef allocator, CFIndex capacity, CFBagRef theBag);\n\nextern\nCFIndex CFBagGetCount(CFBagRef theBag);\n\nextern\nCFIndex CFBagGetCountOfValue(CFBagRef theBag, const void *value);\n\nextern\nBoolean CFBagContainsValue(CFBagRef theBag, const void *value);\n\nextern\nconst void *CFBagGetValue(CFBagRef theBag, const void *value);\n\nextern\nBoolean CFBagGetValueIfPresent(CFBagRef theBag, const void *candidate, const void **value);\n\nextern\nvoid CFBagGetValues(CFBagRef theBag, const void **values);\n\nextern\nvoid CFBagApplyFunction(CFBagRef theBag, CFBagApplierFunction applier, void *context);\n\nextern\nvoid CFBagAddValue(CFMutableBagRef theBag, const void *value);\n\nextern\nvoid CFBagReplaceValue(CFMutableBagRef theBag, const void *value);\n\nextern\nvoid CFBagSetValue(CFMutableBagRef theBag, const void *value);\n\nextern\nvoid CFBagRemoveValue(CFMutableBagRef theBag, const void *value);\n\nextern\nvoid CFBagRemoveAllValues(CFMutableBagRef theBag);\n\n\n# 41 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBinaryHeap.h\" 1 3\n# 16 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBinaryHeap.h\" 3\n\n\ntypedef struct {\n    CFIndex version;\n    void * info;\n    const void *(*retain)(const void *info);\n    void (*release)(const void *info);\n    CFStringRef (*copyDescription)(const void *info);\n} CFBinaryHeapCompareContext;\n# 49 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBinaryHeap.h\" 3\ntypedef struct {\n    CFIndex version;\n    const void *(*retain)(CFAllocatorRef allocator, const void *ptr);\n    void (*release)(CFAllocatorRef allocator, const void *ptr);\n    CFStringRef (*copyDescription)(const void *ptr);\n    CFComparisonResult (*compare)(const void *ptr1, const void *ptr2, void *context);\n} CFBinaryHeapCallBacks;\n\n\n\n\n\n\n\nextern const CFBinaryHeapCallBacks kCFStringBinaryHeapCallBacks;\n# 73 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBinaryHeap.h\" 3\ntypedef void (*CFBinaryHeapApplierFunction)(const void *val, void *context);\n\n\n\n\n\ntypedef struct __CFBinaryHeap * CFBinaryHeapRef;\n\n\n\n\n\nextern CFTypeID CFBinaryHeapGetTypeID(void);\n# 129 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBinaryHeap.h\" 3\nextern CFBinaryHeapRef CFBinaryHeapCreate(CFAllocatorRef allocator, CFIndex capacity, const CFBinaryHeapCallBacks *callBacks, const CFBinaryHeapCompareContext *compareContext);\n# 158 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBinaryHeap.h\" 3\nextern CFBinaryHeapRef CFBinaryHeapCreateCopy(CFAllocatorRef allocator, CFIndex capacity, CFBinaryHeapRef heap);\n# 167 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBinaryHeap.h\" 3\nextern CFIndex CFBinaryHeapGetCount(CFBinaryHeapRef heap);\n# 182 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBinaryHeap.h\" 3\nextern CFIndex CFBinaryHeapGetCountOfValue(CFBinaryHeapRef heap, const void *value);\n# 197 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBinaryHeap.h\" 3\nextern Boolean CFBinaryHeapContainsValue(CFBinaryHeapRef heap, const void *value);\n# 208 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBinaryHeap.h\" 3\nextern const void * CFBinaryHeapGetMinimum(CFBinaryHeapRef heap);\n# 222 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBinaryHeap.h\" 3\nextern Boolean CFBinaryHeapGetMinimumIfPresent(CFBinaryHeapRef heap, const void **value);\n# 234 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBinaryHeap.h\" 3\nextern void CFBinaryHeapGetValues(CFBinaryHeapRef heap, const void **values);\n# 253 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBinaryHeap.h\" 3\nextern void CFBinaryHeapApplyFunction(CFBinaryHeapRef heap, CFBinaryHeapApplierFunction applier, void *context);\n# 265 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBinaryHeap.h\" 3\nextern void CFBinaryHeapAddValue(CFBinaryHeapRef heap, const void *value);\n\n\n\n\n\n\n\nextern void CFBinaryHeapRemoveMinimumValue(CFBinaryHeapRef heap);\n# 282 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBinaryHeap.h\" 3\nextern void CFBinaryHeapRemoveAllValues(CFBinaryHeapRef heap);\n\n\n# 42 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBitVector.h\" 1 3\n# 10 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBitVector.h\" 3\n\n\ntypedef UInt32 CFBit;\n\ntypedef const struct __CFBitVector * CFBitVectorRef;\ntypedef struct __CFBitVector * CFMutableBitVectorRef;\n\nextern CFTypeID CFBitVectorGetTypeID(void);\n\nextern CFBitVectorRef CFBitVectorCreate(CFAllocatorRef allocator, const UInt8 *bytes, CFIndex numBits);\nextern CFBitVectorRef CFBitVectorCreateCopy(CFAllocatorRef allocator, CFBitVectorRef bv);\nextern CFMutableBitVectorRef CFBitVectorCreateMutable(CFAllocatorRef allocator, CFIndex capacity);\nextern CFMutableBitVectorRef CFBitVectorCreateMutableCopy(CFAllocatorRef allocator, CFIndex capacity, CFBitVectorRef bv);\n\nextern CFIndex CFBitVectorGetCount(CFBitVectorRef bv);\nextern CFIndex CFBitVectorGetCountOfBit(CFBitVectorRef bv, CFRange range, CFBit value);\nextern Boolean CFBitVectorContainsBit(CFBitVectorRef bv, CFRange range, CFBit value);\nextern CFBit CFBitVectorGetBitAtIndex(CFBitVectorRef bv, CFIndex idx);\nextern void CFBitVectorGetBits(CFBitVectorRef bv, CFRange range, UInt8 *bytes);\nextern CFIndex CFBitVectorGetFirstIndexOfBit(CFBitVectorRef bv, CFRange range, CFBit value);\nextern CFIndex CFBitVectorGetLastIndexOfBit(CFBitVectorRef bv, CFRange range, CFBit value);\n\nextern void CFBitVectorSetCount(CFMutableBitVectorRef bv, CFIndex count);\nextern void CFBitVectorFlipBitAtIndex(CFMutableBitVectorRef bv, CFIndex idx);\nextern void CFBitVectorFlipBits(CFMutableBitVectorRef bv, CFRange range);\nextern void CFBitVectorSetBitAtIndex(CFMutableBitVectorRef bv, CFIndex idx, CFBit value);\nextern void CFBitVectorSetBits(CFMutableBitVectorRef bv, CFRange range, CFBit value);\nextern void CFBitVectorSetAllBits(CFMutableBitVectorRef bv, CFBit value);\n\n\n# 43 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBundle.h\" 1 3\n# 10 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBundle.h\" 3\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFDictionary.h\" 1 3\n# 64 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFDictionary.h\" 3\n\n# 91 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFDictionary.h\" 3\ntypedef const void * (*CFDictionaryRetainCallBack)(CFAllocatorRef allocator, const void *value);\ntypedef void (*CFDictionaryReleaseCallBack)(CFAllocatorRef allocator, const void *value);\ntypedef CFStringRef (*CFDictionaryCopyDescriptionCallBack)(const void *value);\ntypedef Boolean (*CFDictionaryEqualCallBack)(const void *value1, const void *value2);\ntypedef CFHashCode (*CFDictionaryHashCallBack)(const void *value);\ntypedef struct {\n    CFIndex version;\n    CFDictionaryRetainCallBack retain;\n    CFDictionaryReleaseCallBack release;\n    CFDictionaryCopyDescriptionCallBack copyDescription;\n    CFDictionaryEqualCallBack equal;\n    CFDictionaryHashCallBack hash;\n} CFDictionaryKeyCallBacks;\n\n\n\n\n\n\n\nextern\nconst CFDictionaryKeyCallBacks kCFTypeDictionaryKeyCallBacks;\n# 122 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFDictionary.h\" 3\nextern\nconst CFDictionaryKeyCallBacks kCFCopyStringDictionaryKeyCallBacks;\n# 148 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFDictionary.h\" 3\ntypedef struct {\n    CFIndex version;\n    CFDictionaryRetainCallBack retain;\n    CFDictionaryReleaseCallBack release;\n    CFDictionaryCopyDescriptionCallBack copyDescription;\n    CFDictionaryEqualCallBack equal;\n} CFDictionaryValueCallBacks;\n\n\n\n\n\n\n\nextern\nconst CFDictionaryValueCallBacks kCFTypeDictionaryValueCallBacks;\n# 174 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFDictionary.h\" 3\ntypedef void (*CFDictionaryApplierFunction)(const void *key, const void *value, void *context);\n\n\n\n\n\ntypedef const struct __CFDictionary * CFDictionaryRef;\n\n\n\n\n\ntypedef struct __CFDictionary * CFMutableDictionaryRef;\n\n\n\n\n\nextern\nCFTypeID CFDictionaryGetTypeID(void);\n# 277 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFDictionary.h\" 3\nextern\nCFDictionaryRef CFDictionaryCreate(CFAllocatorRef allocator, const void **keys, const void **values, CFIndex numValues, const CFDictionaryKeyCallBacks *keyCallBacks, const CFDictionaryValueCallBacks *valueCallBacks);\n# 301 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFDictionary.h\" 3\nextern\nCFDictionaryRef CFDictionaryCreateCopy(CFAllocatorRef allocator, CFDictionaryRef theDict);\n# 373 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFDictionary.h\" 3\nextern\nCFMutableDictionaryRef CFDictionaryCreateMutable(CFAllocatorRef allocator, CFIndex capacity, const CFDictionaryKeyCallBacks *keyCallBacks, const CFDictionaryValueCallBacks *valueCallBacks);\n# 406 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFDictionary.h\" 3\nextern\nCFMutableDictionaryRef CFDictionaryCreateMutableCopy(CFAllocatorRef allocator, CFIndex capacity, CFDictionaryRef theDict);\n# 416 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFDictionary.h\" 3\nextern\nCFIndex CFDictionaryGetCount(CFDictionaryRef theDict);\n# 435 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFDictionary.h\" 3\nextern\nCFIndex CFDictionaryGetCountOfKey(CFDictionaryRef theDict, const void *key);\n# 451 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFDictionary.h\" 3\nextern\nCFIndex CFDictionaryGetCountOfValue(CFDictionaryRef theDict, const void *value);\n# 469 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFDictionary.h\" 3\nextern\nBoolean CFDictionaryContainsKey(CFDictionaryRef theDict, const void *key);\n# 485 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFDictionary.h\" 3\nextern\nBoolean CFDictionaryContainsValue(CFDictionaryRef theDict, const void *value);\n# 507 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFDictionary.h\" 3\nextern\nconst void *CFDictionaryGetValue(CFDictionaryRef theDict, const void *key);\n# 532 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFDictionary.h\" 3\nextern\nBoolean CFDictionaryGetValueIfPresent(CFDictionaryRef theDict, const void *key, const void **value);\n# 555 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFDictionary.h\" 3\nextern\nvoid CFDictionaryGetKeysAndValues(CFDictionaryRef theDict, const void **keys, const void **values);\n# 575 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFDictionary.h\" 3\nextern\nvoid CFDictionaryApplyFunction(CFDictionaryRef theDict, CFDictionaryApplierFunction applier, void *context);\n# 595 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFDictionary.h\" 3\nextern\nvoid CFDictionaryAddValue(CFMutableDictionaryRef theDict, const void *key, const void *value);\n# 618 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFDictionary.h\" 3\nextern\nvoid CFDictionarySetValue(CFMutableDictionaryRef theDict, const void *key, const void *value);\n# 637 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFDictionary.h\" 3\nextern\nvoid CFDictionaryReplaceValue(CFMutableDictionaryRef theDict, const void *key, const void *value);\n# 651 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFDictionary.h\" 3\nextern\nvoid CFDictionaryRemoveValue(CFMutableDictionaryRef theDict, const void *key);\n# 661 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFDictionary.h\" 3\nextern\nvoid CFDictionaryRemoveAllValues(CFMutableDictionaryRef theDict);\n\n\n# 11 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBundle.h\" 2 3\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFError.h\" 1 3\n# 33 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFError.h\" 3\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFString.h\" 1 3\n# 10 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFString.h\" 3\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFData.h\" 1 3\n# 10 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFData.h\" 3\n\n\ntypedef const struct __CFData * CFDataRef;\ntypedef struct __CFData * CFMutableDataRef;\n\nextern\nCFTypeID CFDataGetTypeID(void);\n\nextern\nCFDataRef CFDataCreate(CFAllocatorRef allocator, const UInt8 *bytes, CFIndex length);\n\nextern\nCFDataRef CFDataCreateWithBytesNoCopy(CFAllocatorRef allocator, const UInt8 *bytes, CFIndex length, CFAllocatorRef bytesDeallocator);\n\n\nextern\nCFDataRef CFDataCreateCopy(CFAllocatorRef allocator, CFDataRef theData);\n\nextern\nCFMutableDataRef CFDataCreateMutable(CFAllocatorRef allocator, CFIndex capacity);\n\nextern\nCFMutableDataRef CFDataCreateMutableCopy(CFAllocatorRef allocator, CFIndex capacity, CFDataRef theData);\n\nextern\nCFIndex CFDataGetLength(CFDataRef theData);\n\nextern\nconst UInt8 *CFDataGetBytePtr(CFDataRef theData);\n\nextern\nUInt8 *CFDataGetMutableBytePtr(CFMutableDataRef theData);\n\nextern\nvoid CFDataGetBytes(CFDataRef theData, CFRange range, UInt8 *buffer);\n\nextern\nvoid CFDataSetLength(CFMutableDataRef theData, CFIndex length);\n\nextern\nvoid CFDataIncreaseLength(CFMutableDataRef theData, CFIndex extraLength);\n\nextern\nvoid CFDataAppendBytes(CFMutableDataRef theData, const UInt8 *bytes, CFIndex length);\n\nextern\nvoid CFDataReplaceBytes(CFMutableDataRef theData, CFRange range, const UInt8 *newBytes, CFIndex newLength);\n\nextern\nvoid CFDataDeleteBytes(CFMutableDataRef theData, CFRange range);\n\n\nenum {\n    kCFDataSearchBackwards = 1UL << 0,\n    kCFDataSearchAnchored = 1UL << 1\n};\n\ntypedef CFOptionFlags CFDataSearchFlags;\n\nextern\nCFRange CFDataFind(CFDataRef theData, CFDataRef dataToFind, CFRange searchRange, CFDataSearchFlags compareOptions) ;\n\n\n# 11 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFString.h\" 2 3\n\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFCharacterSet.h\" 1 3\n# 37 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFCharacterSet.h\" 3\n\n\n\n\n\n\ntypedef const struct __CFCharacterSet * CFCharacterSetRef;\n\n\n\n\n\ntypedef struct __CFCharacterSet * CFMutableCharacterSetRef;\n\n\n\n\n\n\nenum {\n    kCFCharacterSetControl = 1,\n    kCFCharacterSetWhitespace,\n    kCFCharacterSetWhitespaceAndNewline,\n    kCFCharacterSetDecimalDigit,\n    kCFCharacterSetLetter,\n    kCFCharacterSetLowercaseLetter,\n    kCFCharacterSetUppercaseLetter,\n    kCFCharacterSetNonBase,\n    kCFCharacterSetDecomposable,\n    kCFCharacterSetAlphaNumeric,\n    kCFCharacterSetPunctuation,\n\n    kCFCharacterSetCapitalizedLetter = 13,\n\n\n    kCFCharacterSetSymbol = 14,\n\n\n    kCFCharacterSetNewline = 15,\n\n    kCFCharacterSetIllegal = 12\n};\ntypedef CFIndex CFCharacterSetPredefinedSet;\n\n\n\n\n\nextern\nCFTypeID CFCharacterSetGetTypeID(void);\n# 98 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFCharacterSet.h\" 3\nextern\nCFCharacterSetRef CFCharacterSetGetPredefined(CFCharacterSetPredefinedSet theSetIdentifier);\n# 117 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFCharacterSet.h\" 3\nextern\nCFCharacterSetRef CFCharacterSetCreateWithCharactersInRange(CFAllocatorRef alloc, CFRange theRange);\n# 134 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFCharacterSet.h\" 3\nextern\nCFCharacterSetRef CFCharacterSetCreateWithCharactersInString(CFAllocatorRef alloc, CFStringRef theString);\n# 162 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFCharacterSet.h\" 3\nextern\nCFCharacterSetRef CFCharacterSetCreateWithBitmapRepresentation(CFAllocatorRef alloc, CFDataRef theData);\n# 179 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFCharacterSet.h\" 3\nextern CFCharacterSetRef CFCharacterSetCreateInvertedSet(CFAllocatorRef alloc, CFCharacterSetRef theSet);\n# 189 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFCharacterSet.h\" 3\nextern Boolean CFCharacterSetIsSupersetOfSet(CFCharacterSetRef theSet, CFCharacterSetRef theOtherset);\n# 200 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFCharacterSet.h\" 3\nextern Boolean CFCharacterSetHasMemberInPlane(CFCharacterSetRef theSet, CFIndex thePlane);\n# 213 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFCharacterSet.h\" 3\nextern\nCFMutableCharacterSetRef CFCharacterSetCreateMutable(CFAllocatorRef alloc);\n# 230 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFCharacterSet.h\" 3\nextern\nCFCharacterSetRef CFCharacterSetCreateCopy(CFAllocatorRef alloc, CFCharacterSetRef theSet) ;\n# 247 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFCharacterSet.h\" 3\nextern\nCFMutableCharacterSetRef CFCharacterSetCreateMutableCopy(CFAllocatorRef alloc, CFCharacterSetRef theSet);\n# 261 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFCharacterSet.h\" 3\nextern\nBoolean CFCharacterSetIsCharacterMember(CFCharacterSetRef theSet, UniChar theChar);\n# 274 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFCharacterSet.h\" 3\nextern Boolean CFCharacterSetIsLongCharacterMember(CFCharacterSetRef theSet, UTF32Char theChar);\n# 293 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFCharacterSet.h\" 3\nextern\nCFDataRef CFCharacterSetCreateBitmapRepresentation(CFAllocatorRef alloc, CFCharacterSetRef theSet);\n# 308 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFCharacterSet.h\" 3\nextern\nvoid CFCharacterSetAddCharactersInRange(CFMutableCharacterSetRef theSet, CFRange theRange);\n# 323 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFCharacterSet.h\" 3\nextern\nvoid CFCharacterSetRemoveCharactersInRange(CFMutableCharacterSetRef theSet, CFRange theRange);\n# 336 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFCharacterSet.h\" 3\nextern\nvoid CFCharacterSetAddCharactersInString(CFMutableCharacterSetRef theSet, CFStringRef theString);\n# 349 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFCharacterSet.h\" 3\nextern\nvoid CFCharacterSetRemoveCharactersInString(CFMutableCharacterSetRef theSet, CFStringRef theString);\n# 363 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFCharacterSet.h\" 3\nextern\nvoid CFCharacterSetUnion(CFMutableCharacterSetRef theSet, CFCharacterSetRef theOtherSet);\n# 377 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFCharacterSet.h\" 3\nextern\nvoid CFCharacterSetIntersect(CFMutableCharacterSetRef theSet, CFCharacterSetRef theOtherSet);\n# 387 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFCharacterSet.h\" 3\nextern\nvoid CFCharacterSetInvert(CFMutableCharacterSetRef theSet);\n\n\n# 13 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFString.h\" 2 3\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFLocale.h\" 1 3\n# 14 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFLocale.h\" 3\n\n\ntypedef const struct __CFLocale *CFLocaleRef;\n\nextern\nCFTypeID CFLocaleGetTypeID(void) ;\n\nextern\nCFLocaleRef CFLocaleGetSystem(void) ;\n\n\nextern\nCFLocaleRef CFLocaleCopyCurrent(void) ;\n# 36 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFLocale.h\" 3\nextern\nCFArrayRef CFLocaleCopyAvailableLocaleIdentifiers(void) ;\n\n\n\nextern\nCFArrayRef CFLocaleCopyISOLanguageCodes(void) ;\n\n\n\n\nextern\nCFArrayRef CFLocaleCopyISOCountryCodes(void) ;\n\n\n\n\nextern\nCFArrayRef CFLocaleCopyISOCurrencyCodes(void) ;\n\n\n\n\nextern\nCFArrayRef CFLocaleCopyCommonISOCurrencyCodes(void) ;\n\n\n\nextern\nCFArrayRef CFLocaleCopyPreferredLanguages(void) ;\n\n\nextern\nCFStringRef CFLocaleCreateCanonicalLanguageIdentifierFromString(CFAllocatorRef allocator, CFStringRef localeIdentifier) ;\n\n\n\nextern\nCFStringRef CFLocaleCreateCanonicalLocaleIdentifierFromString(CFAllocatorRef allocator, CFStringRef localeIdentifier) ;\n\n\n\nextern\nCFStringRef CFLocaleCreateCanonicalLocaleIdentifierFromScriptManagerCodes(CFAllocatorRef allocator, LangCode lcode, RegionCode rcode) ;\n\n\nextern\nCFStringRef CFLocaleCreateLocaleIdentifierFromWindowsLocaleCode(CFAllocatorRef allocator, uint32_t lcid) ;\n\n\nextern\nuint32_t CFLocaleGetWindowsLocaleCodeFromLocaleIdentifier(CFStringRef localeIdentifier) ;\n\n\nenum {\n    kCFLocaleLanguageDirectionUnknown = 0,\n    kCFLocaleLanguageDirectionLeftToRight = 1,\n    kCFLocaleLanguageDirectionRightToLeft = 2,\n    kCFLocaleLanguageDirectionTopToBottom = 3,\n    kCFLocaleLanguageDirectionBottomToTop = 4\n};\ntypedef CFIndex CFLocaleLanguageDirection;\n\nextern\nCFLocaleLanguageDirection CFLocaleGetLanguageCharacterDirection(CFStringRef isoLangCode) ;\n\nextern\nCFLocaleLanguageDirection CFLocaleGetLanguageLineDirection(CFStringRef isoLangCode) ;\n\nextern\nCFDictionaryRef CFLocaleCreateComponentsFromLocaleIdentifier(CFAllocatorRef allocator, CFStringRef localeID) ;\n# 115 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFLocale.h\" 3\nextern\nCFStringRef CFLocaleCreateLocaleIdentifierFromComponents(CFAllocatorRef allocator, CFDictionaryRef dictionary) ;\n\n\n\n\n\n\nextern\nCFLocaleRef CFLocaleCreate(CFAllocatorRef allocator, CFStringRef localeIdentifier) ;\n\n\nextern\nCFLocaleRef CFLocaleCreateCopy(CFAllocatorRef allocator, CFLocaleRef locale) ;\n\n\n\n\nextern\nCFStringRef CFLocaleGetIdentifier(CFLocaleRef locale) ;\n\n\n\nextern\nCFTypeRef CFLocaleGetValue(CFLocaleRef locale, CFStringRef key) ;\n\n\n\nextern\nCFStringRef CFLocaleCopyDisplayNameForPropertyValue(CFLocaleRef displayLocale, CFStringRef key, CFStringRef value) ;\n\n\n\n\n\nextern const CFStringRef kCFLocaleCurrentLocaleDidChangeNotification ;\n\n\n\nextern const CFStringRef kCFLocaleIdentifier ;\nextern const CFStringRef kCFLocaleLanguageCode ;\nextern const CFStringRef kCFLocaleCountryCode ;\nextern const CFStringRef kCFLocaleScriptCode ;\nextern const CFStringRef kCFLocaleVariantCode ;\n\nextern const CFStringRef kCFLocaleExemplarCharacterSet ;\nextern const CFStringRef kCFLocaleCalendarIdentifier ;\nextern const CFStringRef kCFLocaleCalendar ;\nextern const CFStringRef kCFLocaleCollationIdentifier ;\nextern const CFStringRef kCFLocaleUsesMetricSystem ;\nextern const CFStringRef kCFLocaleMeasurementSystem ;\nextern const CFStringRef kCFLocaleDecimalSeparator ;\nextern const CFStringRef kCFLocaleGroupingSeparator ;\nextern const CFStringRef kCFLocaleCurrencySymbol ;\nextern const CFStringRef kCFLocaleCurrencyCode ;\nextern const CFStringRef kCFLocaleCollatorIdentifier ;\nextern const CFStringRef kCFLocaleQuotationBeginDelimiterKey ;\nextern const CFStringRef kCFLocaleQuotationEndDelimiterKey ;\nextern const CFStringRef kCFLocaleAlternateQuotationBeginDelimiterKey ;\nextern const CFStringRef kCFLocaleAlternateQuotationEndDelimiterKey ;\n\n\nextern const CFStringRef kCFGregorianCalendar ;\nextern const CFStringRef kCFBuddhistCalendar ;\nextern const CFStringRef kCFChineseCalendar ;\nextern const CFStringRef kCFHebrewCalendar ;\nextern const CFStringRef kCFIslamicCalendar ;\nextern const CFStringRef kCFIslamicCivilCalendar ;\nextern const CFStringRef kCFJapaneseCalendar ;\nextern const CFStringRef kCFRepublicOfChinaCalendar ;\nextern const CFStringRef kCFPersianCalendar ;\nextern const CFStringRef kCFIndianCalendar ;\nextern const CFStringRef kCFISO8601Calendar ;\n\n\n# 14 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFString.h\" 2 3\n\n\n\n# 92 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFString.h\" 3\ntypedef UInt32 CFStringEncoding;\n\n\n\n\n\nenum {\n    kCFStringEncodingMacRoman = 0,\n    kCFStringEncodingWindowsLatin1 = 0x0500,\n    kCFStringEncodingISOLatin1 = 0x0201,\n    kCFStringEncodingNextStepLatin = 0x0B01,\n    kCFStringEncodingASCII = 0x0600,\n    kCFStringEncodingUnicode = 0x0100,\n    kCFStringEncodingUTF8 = 0x08000100,\n    kCFStringEncodingNonLossyASCII = 0x0BFF\n\n    ,\n    kCFStringEncodingUTF16 = 0x0100,\n    kCFStringEncodingUTF16BE = 0x10000100,\n    kCFStringEncodingUTF16LE = 0x14000100,\n\n    kCFStringEncodingUTF32 = 0x0c000100,\n    kCFStringEncodingUTF32BE = 0x18000100,\n    kCFStringEncodingUTF32LE = 0x1c000100\n\n};\ntypedef CFStringEncoding CFStringBuiltInEncodings;\n\n\n\nextern\nCFTypeID CFStringGetTypeID(void);\n# 170 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFString.h\" 3\nextern\nCFStringRef CFStringCreateWithPascalString(CFAllocatorRef alloc, ConstStr255Param pStr, CFStringEncoding encoding);\n\nextern\nCFStringRef CFStringCreateWithCString(CFAllocatorRef alloc, const char *cStr, CFStringEncoding encoding);\n\n\n\nextern\nCFStringRef CFStringCreateWithBytes(CFAllocatorRef alloc, const UInt8 *bytes, CFIndex numBytes, CFStringEncoding encoding, Boolean isExternalRepresentation);\n\nextern\nCFStringRef CFStringCreateWithCharacters(CFAllocatorRef alloc, const UniChar *chars, CFIndex numChars);\n# 201 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFString.h\" 3\nextern\nCFStringRef CFStringCreateWithPascalStringNoCopy(CFAllocatorRef alloc, ConstStr255Param pStr, CFStringEncoding encoding, CFAllocatorRef contentsDeallocator);\n\nextern\nCFStringRef CFStringCreateWithCStringNoCopy(CFAllocatorRef alloc, const char *cStr, CFStringEncoding encoding, CFAllocatorRef contentsDeallocator);\n\n\n\n\nextern\nCFStringRef CFStringCreateWithBytesNoCopy(CFAllocatorRef alloc, const UInt8 *bytes, CFIndex numBytes, CFStringEncoding encoding, Boolean isExternalRepresentation, CFAllocatorRef contentsDeallocator) ;\n\n\nextern\nCFStringRef CFStringCreateWithCharactersNoCopy(CFAllocatorRef alloc, const UniChar *chars, CFIndex numChars, CFAllocatorRef contentsDeallocator);\n\n\n\nextern\nCFStringRef CFStringCreateWithSubstring(CFAllocatorRef alloc, CFStringRef str, CFRange range);\n\nextern\nCFStringRef CFStringCreateCopy(CFAllocatorRef alloc, CFStringRef theString);\n\n\n\nextern\nCFStringRef CFStringCreateWithFormat(CFAllocatorRef alloc, CFDictionaryRef formatOptions, CFStringRef format, ...) __attribute__((format(CFString, 3, 4)));\n\nextern\nCFStringRef CFStringCreateWithFormatAndArguments(CFAllocatorRef alloc, CFDictionaryRef formatOptions, CFStringRef format, va_list arguments) __attribute__((format(CFString, 3, 0)));\n\n\n\nextern\nCFMutableStringRef CFStringCreateMutable(CFAllocatorRef alloc, CFIndex maxLength);\n\nextern\nCFMutableStringRef CFStringCreateMutableCopy(CFAllocatorRef alloc, CFIndex maxLength, CFStringRef theString);\n\n\n\n\n\n\n\nextern\nCFMutableStringRef CFStringCreateMutableWithExternalCharactersNoCopy(CFAllocatorRef alloc, UniChar *chars, CFIndex numChars, CFIndex capacity, CFAllocatorRef externalCharactersAllocator);\n\n\n\n\n\nextern\nCFIndex CFStringGetLength(CFStringRef theString);\n\n\n\n\n\n\nextern\nUniChar CFStringGetCharacterAtIndex(CFStringRef theString, CFIndex idx);\n\nextern\nvoid CFStringGetCharacters(CFStringRef theString, CFRange range, UniChar *buffer);\n# 279 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFString.h\" 3\nextern\nBoolean CFStringGetPascalString(CFStringRef theString, StringPtr buffer, CFIndex bufferSize, CFStringEncoding encoding);\n\nextern\nBoolean CFStringGetCString(CFStringRef theString, char *buffer, CFIndex bufferSize, CFStringEncoding encoding);\n\n\n\n\n\n\nextern\nConstStringPtr CFStringGetPascalStringPtr(CFStringRef theString, CFStringEncoding encoding);\n\nextern\nconst char *CFStringGetCStringPtr(CFStringRef theString, CFStringEncoding encoding);\n\nextern\nconst UniChar *CFStringGetCharactersPtr(CFStringRef theString);\n# 315 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFString.h\" 3\nextern\nCFIndex CFStringGetBytes(CFStringRef theString, CFRange range, CFStringEncoding encoding, UInt8 lossByte, Boolean isExternalRepresentation, UInt8 *buffer, CFIndex maxBufLen, CFIndex *usedBufLen);\n\n\n\n\n\n\n\nextern\nCFStringRef CFStringCreateFromExternalRepresentation(CFAllocatorRef alloc, CFDataRef data, CFStringEncoding encoding);\n\nextern\nCFDataRef CFStringCreateExternalRepresentation(CFAllocatorRef alloc, CFStringRef theString, CFStringEncoding encoding, UInt8 lossByte);\n\n\n\nextern\nCFStringEncoding CFStringGetSmallestEncoding(CFStringRef theString);\n\nextern\nCFStringEncoding CFStringGetFastestEncoding(CFStringRef theString);\n\n\n\nextern\nCFStringEncoding CFStringGetSystemEncoding(void);\n\nextern\nCFIndex CFStringGetMaximumSizeForEncoding(CFIndex length, CFStringEncoding encoding);\n\n\n\n\n\n\nextern\nBoolean CFStringGetFileSystemRepresentation(CFStringRef string, char *buffer, CFIndex maxBufLen) ;\n\n\n\nextern\nCFIndex CFStringGetMaximumSizeOfFileSystemRepresentation(CFStringRef string) ;\n\n\n\nextern\nCFStringRef CFStringCreateWithFileSystemRepresentation(CFAllocatorRef alloc, const char *buffer) ;\n\n\n\n\n\n\nenum {\n    kCFCompareCaseInsensitive = 1,\n    kCFCompareBackwards = 4,\n    kCFCompareAnchored = 8,\n    kCFCompareNonliteral = 16,\n    kCFCompareLocalized = 32,\n    kCFCompareNumerically = 64\n\n    ,\n    kCFCompareDiacriticInsensitive = 128,\n    kCFCompareWidthInsensitive = 256,\n    kCFCompareForcedOrdering = 512\n\n};\ntypedef CFOptionFlags CFStringCompareFlags;\n\n\n\n\n\n\n\nextern\nCFComparisonResult CFStringCompareWithOptionsAndLocale(CFStringRef theString1, CFStringRef theString2, CFRange rangeToCompare, CFStringCompareFlags compareOptions, CFLocaleRef locale) ;\n\n\n\n\nextern\nCFComparisonResult CFStringCompareWithOptions(CFStringRef theString1, CFStringRef theString2, CFRange rangeToCompare, CFStringCompareFlags compareOptions);\n\n\n\n\n\nextern\nCFComparisonResult CFStringCompare(CFStringRef theString1, CFStringRef theString2, CFStringCompareFlags compareOptions);\n\n\n\n\n\n\n\nextern\nBoolean CFStringFindWithOptionsAndLocale(CFStringRef theString, CFStringRef stringToFind, CFRange rangeToSearch, CFStringCompareFlags searchOptions, CFLocaleRef locale, CFRange *result) ;\n\n\n\n\nextern\nBoolean CFStringFindWithOptions(CFStringRef theString, CFStringRef stringToFind, CFRange rangeToSearch, CFStringCompareFlags searchOptions, CFRange *result);\n# 430 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFString.h\" 3\nextern\nCFArrayRef CFStringCreateArrayWithFindResults(CFAllocatorRef alloc, CFStringRef theString, CFStringRef stringToFind, CFRange rangeToSearch, CFStringCompareFlags compareOptions);\n\n\n\nextern\nCFRange CFStringFind(CFStringRef theString, CFStringRef stringToFind, CFStringCompareFlags compareOptions);\n\nextern\nBoolean CFStringHasPrefix(CFStringRef theString, CFStringRef prefix);\n\nextern\nBoolean CFStringHasSuffix(CFStringRef theString, CFStringRef suffix);\n# 458 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFString.h\" 3\nextern CFRange CFStringGetRangeOfComposedCharactersAtIndex(CFStringRef theString, CFIndex theIndex);\n# 489 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFString.h\" 3\nextern Boolean CFStringFindCharacterFromSet(CFStringRef theString, CFCharacterSetRef theSet, CFRange rangeToSearch, CFStringCompareFlags searchOptions, CFRange *result);\n# 501 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFString.h\" 3\nextern\nvoid CFStringGetLineBounds(CFStringRef theString, CFRange range, CFIndex *lineBeginIndex, CFIndex *lineEndIndex, CFIndex *contentsEndIndex);\n\n\n\nextern\nvoid CFStringGetParagraphBounds(CFStringRef string, CFRange range, CFIndex *parBeginIndex, CFIndex *parEndIndex, CFIndex *contentsEndIndex) ;\n\n\n\nextern\nCFStringRef CFStringCreateByCombiningStrings(CFAllocatorRef alloc, CFArrayRef theArray, CFStringRef separatorString);\n\nextern\nCFArrayRef CFStringCreateArrayBySeparatingStrings(CFAllocatorRef alloc, CFStringRef theString, CFStringRef separatorString);\n\n\n\n\nextern\nSInt32 CFStringGetIntValue(CFStringRef str);\n\nextern\ndouble CFStringGetDoubleValue(CFStringRef str);\n# 534 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFString.h\" 3\nextern\nvoid CFStringAppend(CFMutableStringRef theString, CFStringRef appendedString);\n\nextern\nvoid CFStringAppendCharacters(CFMutableStringRef theString, const UniChar *chars, CFIndex numChars);\n\nextern\nvoid CFStringAppendPascalString(CFMutableStringRef theString, ConstStr255Param pStr, CFStringEncoding encoding);\n\nextern\nvoid CFStringAppendCString(CFMutableStringRef theString, const char *cStr, CFStringEncoding encoding);\n\nextern\nvoid CFStringAppendFormat(CFMutableStringRef theString, CFDictionaryRef formatOptions, CFStringRef format, ...) __attribute__((format(CFString, 3, 4)));\n\nextern\nvoid CFStringAppendFormatAndArguments(CFMutableStringRef theString, CFDictionaryRef formatOptions, CFStringRef format, va_list arguments) __attribute__((format(CFString, 3, 0)));\n\nextern\nvoid CFStringInsert(CFMutableStringRef str, CFIndex idx, CFStringRef insertedStr);\n\nextern\nvoid CFStringDelete(CFMutableStringRef theString, CFRange range);\n\nextern\nvoid CFStringReplace(CFMutableStringRef theString, CFRange range, CFStringRef replacement);\n\nextern\nvoid CFStringReplaceAll(CFMutableStringRef theString, CFStringRef replacement);\n# 573 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFString.h\" 3\nextern\nCFIndex CFStringFindAndReplace(CFMutableStringRef theString, CFStringRef stringToFind, CFStringRef replacementString, CFRange rangeToSearch, CFStringCompareFlags compareOptions);\n# 585 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFString.h\" 3\nextern\nvoid CFStringSetExternalCharactersNoCopy(CFMutableStringRef theString, UniChar *chars, CFIndex length, CFIndex capacity);\n# 599 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFString.h\" 3\nextern\nvoid CFStringPad(CFMutableStringRef theString, CFStringRef padString, CFIndex length, CFIndex indexIntoPad);\n\nextern\nvoid CFStringTrim(CFMutableStringRef theString, CFStringRef trimString);\n\nextern\nvoid CFStringTrimWhitespace(CFMutableStringRef theString);\n\n\nextern\nvoid CFStringLowercase(CFMutableStringRef theString, CFLocaleRef locale);\n\nextern\nvoid CFStringUppercase(CFMutableStringRef theString, CFLocaleRef locale);\n\nextern\nvoid CFStringCapitalize(CFMutableStringRef theString, CFLocaleRef locale);\n# 635 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFString.h\" 3\nenum {\n kCFStringNormalizationFormD = 0,\n kCFStringNormalizationFormKD,\n kCFStringNormalizationFormC,\n kCFStringNormalizationFormKC\n};\ntypedef CFIndex CFStringNormalizationForm;\n# 654 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFString.h\" 3\nextern void CFStringNormalize(CFMutableStringRef theString, CFStringNormalizationForm theForm);\n# 682 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFString.h\" 3\nextern\nvoid CFStringFold(CFMutableStringRef theString, CFOptionFlags theFlags, CFLocaleRef theLocale) ;\n\n\n\n\n\n\nextern\nBoolean CFStringTransform(CFMutableStringRef string, CFRange *range, CFStringRef transform, Boolean reverse) ;\n\n\n\nextern const CFStringRef kCFStringTransformStripCombiningMarks ;\nextern const CFStringRef kCFStringTransformToLatin ;\nextern const CFStringRef kCFStringTransformFullwidthHalfwidth ;\nextern const CFStringRef kCFStringTransformLatinKatakana ;\nextern const CFStringRef kCFStringTransformLatinHiragana ;\nextern const CFStringRef kCFStringTransformHiraganaKatakana ;\nextern const CFStringRef kCFStringTransformMandarinLatin ;\nextern const CFStringRef kCFStringTransformLatinHangul ;\nextern const CFStringRef kCFStringTransformLatinArabic ;\nextern const CFStringRef kCFStringTransformLatinHebrew ;\nextern const CFStringRef kCFStringTransformLatinThai ;\nextern const CFStringRef kCFStringTransformLatinCyrillic ;\nextern const CFStringRef kCFStringTransformLatinGreek ;\nextern const CFStringRef kCFStringTransformToXMLHex ;\nextern const CFStringRef kCFStringTransformToUnicodeName ;\nextern const CFStringRef kCFStringTransformStripDiacritics ;\n\n\n\n\n\n\nextern\nBoolean CFStringIsEncodingAvailable(CFStringEncoding encoding);\n\n\n\nextern\nconst CFStringEncoding *CFStringGetListOfAvailableEncodings(void);\n\n\n\nextern\nCFStringRef CFStringGetNameOfEncoding(CFStringEncoding encoding);\n\n\n\nextern\nunsigned long CFStringConvertEncodingToNSStringEncoding(CFStringEncoding encoding);\n\nextern\nCFStringEncoding CFStringConvertNSStringEncodingToEncoding(unsigned long encoding);\n\n\n\nextern\nUInt32 CFStringConvertEncodingToWindowsCodepage(CFStringEncoding encoding);\n\nextern\nCFStringEncoding CFStringConvertWindowsCodepageToEncoding(UInt32 codepage);\n\n\n\nextern\nCFStringEncoding CFStringConvertIANACharSetNameToEncoding(CFStringRef theString);\n\nextern\nCFStringRef CFStringConvertEncodingToIANACharSetName(CFStringEncoding encoding);\n\n\n\n\n\nextern\nCFStringEncoding CFStringGetMostCompatibleMacStringEncoding(CFStringEncoding encoding);\n# 773 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFString.h\" 3\ntypedef struct {\n    UniChar buffer[64];\n    CFStringRef theString;\n    const UniChar *directBuffer;\n    CFRange rangeToBuffer;\n    CFIndex bufferedRangeStart;\n    CFIndex bufferedRangeEnd;\n} CFStringInlineBuffer;\n\n\nstatic __inline__ __attribute__((always_inline)) void CFStringInitInlineBuffer(CFStringRef str, CFStringInlineBuffer *buf, CFRange range) {\n    buf->theString = str;\n    buf->rangeToBuffer = range;\n    buf->directBuffer = CFStringGetCharactersPtr(str);\n    buf->bufferedRangeStart = buf->bufferedRangeEnd = 0;\n}\n\nstatic __inline__ __attribute__((always_inline)) UniChar CFStringGetCharacterFromInlineBuffer(CFStringInlineBuffer *buf, CFIndex idx) {\n    if (buf->directBuffer) {\n if (idx < 0 || idx >= buf->rangeToBuffer.length) return 0;\n        return buf->directBuffer[idx + buf->rangeToBuffer.location];\n    }\n    if (idx >= buf->bufferedRangeEnd || idx < buf->bufferedRangeStart) {\n if (idx < 0 || idx >= buf->rangeToBuffer.length) return 0;\n if ((buf->bufferedRangeStart = idx - 4) < 0) buf->bufferedRangeStart = 0;\n buf->bufferedRangeEnd = buf->bufferedRangeStart + 64;\n if (buf->bufferedRangeEnd > buf->rangeToBuffer.length) buf->bufferedRangeEnd = buf->rangeToBuffer.length;\n CFStringGetCharacters(buf->theString, CFRangeMake(buf->rangeToBuffer.location + buf->bufferedRangeStart, buf->bufferedRangeEnd - buf->bufferedRangeStart), buf->buffer);\n    }\n    return buf->buffer[idx - buf->bufferedRangeStart];\n}\n# 820 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFString.h\" 3\nstatic __inline__ __attribute__((always_inline)) Boolean CFStringIsSurrogateHighCharacter(UniChar character) {\n    return ((character >= 0xD800UL) && (character <= 0xDBFFUL) ? 1 : 0);\n}\n\nstatic __inline__ __attribute__((always_inline)) Boolean CFStringIsSurrogateLowCharacter(UniChar character) {\n    return ((character >= 0xDC00UL) && (character <= 0xDFFFUL) ? 1 : 0);\n}\n\nstatic __inline__ __attribute__((always_inline)) UTF32Char CFStringGetLongCharacterForSurrogatePair(UniChar surrogateHigh, UniChar surrogateLow) {\n    return ((surrogateHigh - 0xD800UL) << 10) + (surrogateLow - 0xDC00UL) + 0x0010000UL;\n}\n\n\nstatic __inline__ __attribute__((always_inline)) Boolean CFStringGetSurrogatePairForLongCharacter(UTF32Char character, UniChar *surrogates) {\n    if ((character > 0xFFFFUL) && (character < 0x110000UL)) {\n        character -= 0x10000;\n        if (((void *)0) != surrogates) {\n            surrogates[0] = (UniChar)((character >> 10) + 0xD800UL);\n            surrogates[1] = (UniChar)((character & 0x3FF) + 0xDC00UL);\n        }\n        return 1;\n    } else {\n        if (((void *)0) != surrogates) *surrogates = (UniChar)character;\n        return 0;\n    }\n}\n\n\n\n\n\n\n\nextern\nvoid CFShow(CFTypeRef obj);\n\nextern\nvoid CFShowStr(CFStringRef str);\n\n\nextern\nCFStringRef __CFStringMakeConstantString(const char *cStr);\n\n\n# 34 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFError.h\" 2 3\n\n\n\n\n\n\n\n\ntypedef struct __CFError * CFErrorRef;\n\n\n\n\n\nextern\nCFTypeID CFErrorGetTypeID(void) ;\n\n\n\nextern const CFStringRef kCFErrorDomainPOSIX ;\nextern const CFStringRef kCFErrorDomainOSStatus ;\nextern const CFStringRef kCFErrorDomainMach ;\nextern const CFStringRef kCFErrorDomainCocoa ;\n\n\nextern const CFStringRef kCFErrorLocalizedDescriptionKey ;\nextern const CFStringRef kCFErrorLocalizedFailureReasonKey ;\nextern const CFStringRef kCFErrorLocalizedRecoverySuggestionKey ;\n\n\nextern const CFStringRef kCFErrorDescriptionKey ;\n\n\nextern const CFStringRef kCFErrorUnderlyingErrorKey ;\n# 81 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFError.h\" 3\nextern\nCFErrorRef CFErrorCreate(CFAllocatorRef allocator, CFStringRef domain, CFIndex code, CFDictionaryRef userInfo) ;\n# 96 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFError.h\" 3\nextern\nCFErrorRef CFErrorCreateWithUserInfoKeysAndValues(CFAllocatorRef allocator, CFStringRef domain, CFIndex code, const void *const *userInfoKeys, const void *const *userInfoValues, CFIndex numUserInfoValues) ;\n\n\n\n\n\n\n\nextern\nCFStringRef CFErrorGetDomain(CFErrorRef err) ;\n\n\n\n\n\n\n\nextern\nCFIndex CFErrorGetCode(CFErrorRef err) ;\n# 124 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFError.h\" 3\nextern\nCFDictionaryRef CFErrorCopyUserInfo(CFErrorRef err) ;\n# 138 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFError.h\" 3\nextern\nCFStringRef CFErrorCopyDescription(CFErrorRef err) ;\n# 150 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFError.h\" 3\nextern\nCFStringRef CFErrorCopyFailureReason(CFErrorRef err) ;\n# 162 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFError.h\" 3\nextern\nCFStringRef CFErrorCopyRecoverySuggestion(CFErrorRef err) ;\n\n\n\n\n# 12 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBundle.h\" 2 3\n\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFURL.h\" 1 3\n# 13 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFURL.h\" 3\n\n\nenum {\n    kCFURLPOSIXPathStyle = 0,\n    kCFURLHFSPathStyle,\n    kCFURLWindowsPathStyle\n};\ntypedef CFIndex CFURLPathStyle;\n\ntypedef const struct __CFURL * CFURLRef;\n# 38 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFURL.h\" 3\nextern\nCFTypeID CFURLGetTypeID(void);\n\n\n\nextern\nCFURLRef CFURLCreateWithBytes(CFAllocatorRef allocator, const UInt8 *URLBytes, CFIndex length, CFStringEncoding encoding, CFURLRef baseURL);\n\n\n\n\n\nextern\nCFDataRef CFURLCreateData(CFAllocatorRef allocator, CFURLRef url, CFStringEncoding encoding, Boolean escapeWhitespace);\n\n\nextern\nCFURLRef CFURLCreateWithString(CFAllocatorRef allocator, CFStringRef URLString, CFURLRef baseURL);\n# 70 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFURL.h\" 3\nextern\nCFURLRef CFURLCreateAbsoluteURLWithBytes(CFAllocatorRef alloc, const UInt8 *relativeURLBytes, CFIndex length, CFStringEncoding encoding, CFURLRef baseURL, Boolean useCompatibilityMode) ;\n# 80 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFURL.h\" 3\nextern\nCFURLRef CFURLCreateWithFileSystemPath(CFAllocatorRef allocator, CFStringRef filePath, CFURLPathStyle pathStyle, Boolean isDirectory);\n\nextern\nCFURLRef CFURLCreateFromFileSystemRepresentation(CFAllocatorRef allocator, const UInt8 *buffer, CFIndex bufLen, Boolean isDirectory);\n\n\n\n\n\n\n\nextern\nCFURLRef CFURLCreateWithFileSystemPathRelativeToBase(CFAllocatorRef allocator, CFStringRef filePath, CFURLPathStyle pathStyle, Boolean isDirectory, CFURLRef baseURL);\n\nextern\nCFURLRef CFURLCreateFromFileSystemRepresentationRelativeToBase(CFAllocatorRef allocator, const UInt8 *buffer, CFIndex bufLen, Boolean isDirectory, CFURLRef baseURL);\n# 105 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFURL.h\" 3\nextern\nBoolean CFURLGetFileSystemRepresentation(CFURLRef url, Boolean resolveAgainstBase, UInt8 *buffer, CFIndex maxBufLen);\n\n\nextern\nCFURLRef CFURLCopyAbsoluteURL(CFURLRef relativeURL);\n\n\nextern\nCFStringRef CFURLGetString(CFURLRef anURL);\n\n\nextern\nCFURLRef CFURLGetBaseURL(CFURLRef anURL);\n# 180 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFURL.h\" 3\nextern\nBoolean CFURLCanBeDecomposed(CFURLRef anURL);\n\n\n\nextern\nCFStringRef CFURLCopyScheme(CFURLRef anURL);\n\n\nextern\nCFStringRef CFURLCopyNetLocation(CFURLRef anURL);\n# 203 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFURL.h\" 3\nextern\nCFStringRef CFURLCopyPath(CFURLRef anURL);\n\nextern\nCFStringRef CFURLCopyStrictPath(CFURLRef anURL, Boolean *isAbsolute);\n\nextern\nCFStringRef CFURLCopyFileSystemPath(CFURLRef anURL, CFURLPathStyle pathStyle);\n\n\n\nextern\nBoolean CFURLHasDirectoryPath(CFURLRef anURL);\n\n\n\nextern\nCFStringRef CFURLCopyResourceSpecifier(CFURLRef anURL);\n\nextern\nCFStringRef CFURLCopyHostName(CFURLRef anURL);\n\nextern\nSInt32 CFURLGetPortNumber(CFURLRef anURL);\n\nextern\nCFStringRef CFURLCopyUserName(CFURLRef anURL);\n\nextern\nCFStringRef CFURLCopyPassword(CFURLRef anURL);\n\n\n\n\n\n\nextern\nCFStringRef CFURLCopyParameterString(CFURLRef anURL, CFStringRef charactersToLeaveEscaped);\n\nextern\nCFStringRef CFURLCopyQueryString(CFURLRef anURL, CFStringRef charactersToLeaveEscaped);\n\nextern\nCFStringRef CFURLCopyFragment(CFURLRef anURL, CFStringRef charactersToLeaveEscaped);\n\nextern\nCFStringRef CFURLCopyLastPathComponent(CFURLRef url);\n\nextern\nCFStringRef CFURLCopyPathExtension(CFURLRef url);\n\n\n\n\n\nextern\nCFURLRef CFURLCreateCopyAppendingPathComponent(CFAllocatorRef allocator, CFURLRef url, CFStringRef pathComponent, Boolean isDirectory);\n\nextern\nCFURLRef CFURLCreateCopyDeletingLastPathComponent(CFAllocatorRef allocator, CFURLRef url);\n\nextern\nCFURLRef CFURLCreateCopyAppendingPathExtension(CFAllocatorRef allocator, CFURLRef url, CFStringRef extension);\n\nextern\nCFURLRef CFURLCreateCopyDeletingPathExtension(CFAllocatorRef allocator, CFURLRef url);\n# 277 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFURL.h\" 3\nextern\nCFIndex CFURLGetBytes(CFURLRef url, UInt8 *buffer, CFIndex bufferLength) ;\n\nenum {\n kCFURLComponentScheme = 1,\n kCFURLComponentNetLocation = 2,\n kCFURLComponentPath = 3,\n kCFURLComponentResourceSpecifier = 4,\n\n kCFURLComponentUser = 5,\n kCFURLComponentPassword = 6,\n kCFURLComponentUserInfo = 7,\n kCFURLComponentHost = 8,\n kCFURLComponentPort = 9,\n kCFURLComponentParameterString = 10,\n kCFURLComponentQuery = 11,\n kCFURLComponentFragment = 12\n};\ntypedef CFIndex CFURLComponentType;\n# 360 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFURL.h\" 3\nextern\nCFRange CFURLGetByteRangeForComponent(CFURLRef url, CFURLComponentType component, CFRange *rangeIncludingSeparators) ;\n# 371 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFURL.h\" 3\nextern\nCFStringRef CFURLCreateStringByReplacingPercentEscapes(CFAllocatorRef allocator, CFStringRef originalString, CFStringRef charactersToLeaveEscaped);\n\n\n\nextern\nCFStringRef CFURLCreateStringByReplacingPercentEscapesUsingEncoding(CFAllocatorRef allocator, CFStringRef origString, CFStringRef charsToLeaveEscaped, CFStringEncoding encoding) ;\n# 393 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFURL.h\" 3\nextern\nCFStringRef CFURLCreateStringByAddingPercentEscapes(CFAllocatorRef allocator, CFStringRef originalString, CFStringRef charactersToLeaveUnescaped, CFStringRef legalURLCharactersToBeEscaped, CFStringEncoding encoding);\n\n\n\n\n\n\n\nextern\nCFURLRef CFURLCreateFileReferenceURL(CFAllocatorRef allocator, CFURLRef url, CFErrorRef *error) ;\n\n\n\n\n\n\n\nextern\nCFURLRef CFURLCreateFilePathURL(CFAllocatorRef allocator, CFURLRef url, CFErrorRef *error) ;\n\n\n\n\n\nstruct FSRef;\n\nextern\nCFURLRef CFURLCreateFromFSRef(CFAllocatorRef allocator, const struct FSRef *fsRef);\n\nextern\nBoolean CFURLGetFSRef(CFURLRef url, struct FSRef *fsRef);\n# 452 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFURL.h\" 3\nextern\nBoolean CFURLCopyResourcePropertyForKey(CFURLRef url, CFStringRef key, void *propertyValueTypeRefPtr, CFErrorRef *error) ;\n# 463 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFURL.h\" 3\nextern\nCFDictionaryRef CFURLCopyResourcePropertiesForKeys(CFURLRef url, CFArrayRef keys, CFErrorRef *error) ;\n# 474 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFURL.h\" 3\nextern\nBoolean CFURLSetResourcePropertyForKey(CFURLRef url, CFStringRef key, CFTypeRef propertValue, CFErrorRef *error) ;\n# 486 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFURL.h\" 3\nextern\nBoolean CFURLSetResourcePropertiesForKeys(CFURLRef url, CFDictionaryRef keyedPropertyValues, CFErrorRef *error) ;\n\n\n\nextern\nvoid CFURLClearResourcePropertyCacheForKey(CFURLRef url, CFStringRef key) ;\n\n\n\nextern\nvoid CFURLClearResourcePropertyCache(CFURLRef url) ;\n\n\n\n\n\n\n\nextern\nvoid CFURLSetTemporaryResourcePropertyForKey(CFURLRef url, CFStringRef key, CFTypeRef propertyValue) ;\n# 518 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFURL.h\" 3\nextern\nBoolean CFURLResourceIsReachable(CFURLRef url, CFErrorRef *error) ;\n\n\n\n\nextern\nconst CFStringRef kCFURLNameKey ;\n\n\nextern\nconst CFStringRef kCFURLLocalizedNameKey ;\n\n\nextern\nconst CFStringRef kCFURLIsRegularFileKey ;\n\n\nextern\nconst CFStringRef kCFURLIsDirectoryKey ;\n\n\nextern\nconst CFStringRef kCFURLIsSymbolicLinkKey ;\n\n\nextern\nconst CFStringRef kCFURLIsVolumeKey ;\n\n\nextern\nconst CFStringRef kCFURLIsPackageKey ;\n\n\nextern\nconst CFStringRef kCFURLIsSystemImmutableKey ;\n\n\nextern\nconst CFStringRef kCFURLIsUserImmutableKey ;\n\n\nextern\nconst CFStringRef kCFURLIsHiddenKey ;\n\n\nextern\nconst CFStringRef kCFURLHasHiddenExtensionKey ;\n\n\nextern\nconst CFStringRef kCFURLCreationDateKey ;\n\n\nextern\nconst CFStringRef kCFURLContentAccessDateKey ;\n\n\nextern\nconst CFStringRef kCFURLContentModificationDateKey ;\n\n\nextern\nconst CFStringRef kCFURLAttributeModificationDateKey ;\n\n\nextern\nconst CFStringRef kCFURLLinkCountKey ;\n\n\nextern\nconst CFStringRef kCFURLParentDirectoryURLKey ;\n\n\nextern\nconst CFStringRef kCFURLVolumeURLKey ;\n\n\nextern\nconst CFStringRef kCFURLTypeIdentifierKey ;\n\n\nextern\nconst CFStringRef kCFURLLocalizedTypeDescriptionKey ;\n\n\nextern\nconst CFStringRef kCFURLLabelNumberKey ;\n\n\nextern\nconst CFStringRef kCFURLLabelColorKey ;\n\n\nextern\nconst CFStringRef kCFURLLocalizedLabelKey ;\n\n\nextern\nconst CFStringRef kCFURLEffectiveIconKey ;\n\n\nextern\nconst CFStringRef kCFURLCustomIconKey ;\n\n\n\n\n\nextern\nconst CFStringRef kCFURLFileSizeKey ;\n\n\nextern\nconst CFStringRef kCFURLFileAllocatedSizeKey ;\n\n\nextern\nconst CFStringRef kCFURLIsAliasFileKey ;\n\n\n\n\n\n\n\nextern\nconst CFStringRef kCFURLVolumeLocalizedFormatDescriptionKey ;\n\n\nextern\nconst CFStringRef kCFURLVolumeTotalCapacityKey ;\n\n\nextern\nconst CFStringRef kCFURLVolumeAvailableCapacityKey ;\n\n\nextern\nconst CFStringRef kCFURLVolumeResourceCountKey ;\n\n\nextern\nconst CFStringRef kCFURLVolumeSupportsPersistentIDsKey ;\n\n\nextern\nconst CFStringRef kCFURLVolumeSupportsSymbolicLinksKey ;\n\n\nextern\nconst CFStringRef kCFURLVolumeSupportsHardLinksKey ;\n\n\nextern\nconst CFStringRef kCFURLVolumeSupportsJournalingKey ;\n\n\nextern\nconst CFStringRef kCFURLVolumeIsJournalingKey ;\n\n\nextern\nconst CFStringRef kCFURLVolumeSupportsSparseFilesKey ;\n\n\nextern\nconst CFStringRef kCFURLVolumeSupportsZeroRunsKey ;\n\n\nextern\nconst CFStringRef kCFURLVolumeSupportsCaseSensitiveNamesKey ;\n\n\nextern\nconst CFStringRef kCFURLVolumeSupportsCasePreservedNamesKey ;\n\n\nenum {\n    kCFURLBookmarkCreationPreferFileIDResolutionMask = ( 1UL << 8 ),\n    kCFURLBookmarkCreationMinimalBookmarkMask = ( 1UL << 9 ),\n    kCFURLBookmarkCreationSuitableForBookmarkFile = ( 1UL << 10 ),\n};\ntypedef CFOptionFlags CFURLBookmarkCreationOptions;\n\nenum {\n    kCFBookmarkResolutionWithoutUIMask = ( 1UL << 8 ),\n    kCFBookmarkResolutionWithoutMountingMask = ( 1UL << 9 ),\n};\ntypedef CFOptionFlags CFURLBookmarkResolutionOptions;\n\ntypedef CFOptionFlags CFURLBookmarkFileCreationOptions;\n# 721 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFURL.h\" 3\nCFDataRef CFURLCreateBookmarkData ( CFAllocatorRef allocator, CFURLRef url, CFURLBookmarkCreationOptions options, CFArrayRef resourcePropertiesToInclude, CFURLRef relativeToURL, CFErrorRef* error ) ;\n# 739 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFURL.h\" 3\nCFURLRef CFURLCreateByResolvingBookmarkData ( CFAllocatorRef allocator, CFDataRef bookmark, CFURLBookmarkResolutionOptions options, CFURLRef relativeToURL, CFArrayRef resourcePropertiesToInclude, Boolean* isStale, CFErrorRef* error ) ;\n# 748 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFURL.h\" 3\nCFDictionaryRef CFURLCreateResourcePropertiesForKeysFromBookmarkData ( CFAllocatorRef allocator, CFArrayRef resourcePropertiesToReturn, CFDataRef bookmark ) ;\n# 757 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFURL.h\" 3\nCFTypeRef CFURLCreateResourcePropertyForKeyFromBookmarkData( CFAllocatorRef allocator, CFStringRef resourcePropertyKey, CFDataRef bookmark ) ;\n# 769 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFURL.h\" 3\nCFDataRef CFURLCreateBookmarkDataFromFile(CFAllocatorRef allocator, CFURLRef fileURL, CFErrorRef *errorRef );\n# 782 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFURL.h\" 3\nBoolean CFURLWriteBookmarkDataToFile( CFDataRef bookmarkRef, CFURLRef fileURL, CFURLBookmarkFileCreationOptions options, CFErrorRef *errorRef );\n# 792 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFURL.h\" 3\nCFDataRef CFURLCreateBookmarkDataFromAliasRecord ( CFAllocatorRef allocatorRef, CFDataRef aliasRecordDataRef );\n\n\n\n\n# 14 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBundle.h\" 2 3\n\n\n\ntypedef struct __CFBundle *CFBundleRef;\ntypedef struct __CFBundle *CFPlugInRef;\n\n\nextern\nconst CFStringRef kCFBundleInfoDictionaryVersionKey;\n\nextern\nconst CFStringRef kCFBundleExecutableKey;\n\nextern\nconst CFStringRef kCFBundleIdentifierKey;\n\nextern\nconst CFStringRef kCFBundleVersionKey;\n\n\n\nextern\nconst CFStringRef kCFBundleDevelopmentRegionKey;\n\nextern\nconst CFStringRef kCFBundleNameKey;\n\nextern\nconst CFStringRef kCFBundleLocalizationsKey ;\n\n\n\n\nextern\nCFBundleRef CFBundleGetMainBundle(void);\n\nextern\nCFBundleRef CFBundleGetBundleWithIdentifier(CFStringRef bundleID);\n\n\n\n\n\n\n\nextern\nCFArrayRef CFBundleGetAllBundles(void);\n\n\n\n\n\nextern\nCFTypeID CFBundleGetTypeID(void);\n\nextern\nCFBundleRef CFBundleCreate(CFAllocatorRef allocator, CFURLRef bundleURL);\n\n\nextern\nCFArrayRef CFBundleCreateBundlesFromDirectory(CFAllocatorRef allocator, CFURLRef directoryURL, CFStringRef bundleType);\n\n\n\n\n\nextern\nCFURLRef CFBundleCopyBundleURL(CFBundleRef bundle);\n\nextern\nCFTypeRef CFBundleGetValueForInfoDictionaryKey(CFBundleRef bundle, CFStringRef key);\n\n\n\nextern\nCFDictionaryRef CFBundleGetInfoDictionary(CFBundleRef bundle);\n\n\n\nextern\nCFDictionaryRef CFBundleGetLocalInfoDictionary(CFBundleRef bundle);\n\n\nextern\nvoid CFBundleGetPackageInfo(CFBundleRef bundle, UInt32 *packageType, UInt32 *packageCreator);\n\nextern\nCFStringRef CFBundleGetIdentifier(CFBundleRef bundle);\n\nextern\nUInt32 CFBundleGetVersionNumber(CFBundleRef bundle);\n\nextern\nCFStringRef CFBundleGetDevelopmentRegion(CFBundleRef bundle);\n\nextern\nCFURLRef CFBundleCopySupportFilesDirectoryURL(CFBundleRef bundle);\n\nextern\nCFURLRef CFBundleCopyResourcesDirectoryURL(CFBundleRef bundle);\n\nextern\nCFURLRef CFBundleCopyPrivateFrameworksURL(CFBundleRef bundle);\n\nextern\nCFURLRef CFBundleCopySharedFrameworksURL(CFBundleRef bundle);\n\nextern\nCFURLRef CFBundleCopySharedSupportURL(CFBundleRef bundle);\n\nextern\nCFURLRef CFBundleCopyBuiltInPlugInsURL(CFBundleRef bundle);\n\n\n\n\n\n\nextern\nCFDictionaryRef CFBundleCopyInfoDictionaryInDirectory(CFURLRef bundleURL);\n\nextern\nBoolean CFBundleGetPackageInfoInDirectory(CFURLRef url, UInt32 *packageType, UInt32 *packageCreator);\n\n\n\nextern\nCFURLRef CFBundleCopyResourceURL(CFBundleRef bundle, CFStringRef resourceName, CFStringRef resourceType, CFStringRef subDirName);\n\nextern\nCFArrayRef CFBundleCopyResourceURLsOfType(CFBundleRef bundle, CFStringRef resourceType, CFStringRef subDirName);\n\nextern\nCFStringRef CFBundleCopyLocalizedString(CFBundleRef bundle, CFStringRef key, CFStringRef value, CFStringRef tableName) __attribute__((format_arg(2)));\n# 164 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBundle.h\" 3\nextern\nCFURLRef CFBundleCopyResourceURLInDirectory(CFURLRef bundleURL, CFStringRef resourceName, CFStringRef resourceType, CFStringRef subDirName);\n\nextern\nCFArrayRef CFBundleCopyResourceURLsOfTypeInDirectory(CFURLRef bundleURL, CFStringRef resourceType, CFStringRef subDirName);\n\n\n\n\n\n\nextern\nCFArrayRef CFBundleCopyBundleLocalizations(CFBundleRef bundle);\n\n\nextern\nCFArrayRef CFBundleCopyPreferredLocalizationsFromArray(CFArrayRef locArray);\n\n\n\n\n\n\nextern\nCFArrayRef CFBundleCopyLocalizationsForPreferences(CFArrayRef locArray, CFArrayRef prefArray) ;\n# 198 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBundle.h\" 3\nextern\nCFURLRef CFBundleCopyResourceURLForLocalization(CFBundleRef bundle, CFStringRef resourceName, CFStringRef resourceType, CFStringRef subDirName, CFStringRef localizationName);\n\nextern\nCFArrayRef CFBundleCopyResourceURLsOfTypeForLocalization(CFBundleRef bundle, CFStringRef resourceType, CFStringRef subDirName, CFStringRef localizationName);\n# 212 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBundle.h\" 3\nextern\nCFDictionaryRef CFBundleCopyInfoDictionaryForURL(CFURLRef url) ;\n\n\n\n\n\nextern\nCFArrayRef CFBundleCopyLocalizationsForURL(CFURLRef url) ;\n\n\n\n\n\n\nextern\nCFArrayRef CFBundleCopyExecutableArchitecturesForURL(CFURLRef url) ;\n# 238 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBundle.h\" 3\nextern\nCFURLRef CFBundleCopyExecutableURL(CFBundleRef bundle);\n\n\nenum {\n    kCFBundleExecutableArchitectureI386 = 0x00000007,\n    kCFBundleExecutableArchitecturePPC = 0x00000012,\n    kCFBundleExecutableArchitectureX86_64 = 0x01000007,\n    kCFBundleExecutableArchitecturePPC64 = 0x01000012\n};\n\n\nextern\nCFArrayRef CFBundleCopyExecutableArchitectures(CFBundleRef bundle) ;\n\n\n\n\n\nextern\nBoolean CFBundlePreflightExecutable(CFBundleRef bundle, CFErrorRef *error) ;\n\n\n\n\n\n\nextern\nBoolean CFBundleLoadExecutableAndReturnError(CFBundleRef bundle, CFErrorRef *error) ;\n\n\n\n\n\nextern\nBoolean CFBundleLoadExecutable(CFBundleRef bundle);\n\nextern\nBoolean CFBundleIsExecutableLoaded(CFBundleRef bundle);\n\nextern\nvoid CFBundleUnloadExecutable(CFBundleRef bundle);\n\nextern\nvoid *CFBundleGetFunctionPointerForName(CFBundleRef bundle, CFStringRef functionName);\n\nextern\nvoid CFBundleGetFunctionPointersForNames(CFBundleRef bundle, CFArrayRef functionNames, void *ftbl[]);\n\nextern\nvoid *CFBundleGetDataPointerForName(CFBundleRef bundle, CFStringRef symbolName);\n\nextern\nvoid CFBundleGetDataPointersForNames(CFBundleRef bundle, CFArrayRef symbolNames, void *stbl[]);\n\nextern\nCFURLRef CFBundleCopyAuxiliaryExecutableURL(CFBundleRef bundle, CFStringRef executableName);\n# 305 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBundle.h\" 3\nextern\nCFPlugInRef CFBundleGetPlugIn(CFBundleRef bundle);\n\n\n\n\ntypedef int CFBundleRefNum;\n\n\n\n\nextern\nCFBundleRefNum CFBundleOpenBundleResourceMap(CFBundleRef bundle);\n\n\n\n\n\n\nextern\nSInt32 CFBundleOpenBundleResourceFiles(CFBundleRef bundle, CFBundleRefNum *refNum, CFBundleRefNum *localizedRefNum);\n\n\n\nextern\nvoid CFBundleCloseBundleResourceMap(CFBundleRef bundle, CFBundleRefNum refNum);\n\n\n# 44 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFByteOrder.h\" 1 3\n# 10 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFByteOrder.h\" 3\n# 1 \"/usr/include/libkern/OSByteOrder.h\" 1 3 4\n# 45 \"/usr/include/libkern/OSByteOrder.h\" 3 4\n# 1 \"/usr/include/libkern/i386/OSByteOrder.h\" 1 3 4\n# 41 \"/usr/include/libkern/i386/OSByteOrder.h\" 3 4\nstatic __inline__\nuint16_t\nOSReadSwapInt16(\n    const volatile void * base,\n    uintptr_t byteOffset\n)\n{\n    uint16_t result;\n\n    result = *(volatile uint16_t *)((uintptr_t)base + byteOffset);\n    return _OSSwapInt16(result);\n}\n\nstatic __inline__\nuint32_t\nOSReadSwapInt32(\n    const volatile void * base,\n    uintptr_t byteOffset\n)\n{\n    uint32_t result;\n\n    result = *(volatile uint32_t *)((uintptr_t)base + byteOffset);\n    return _OSSwapInt32(result);\n}\n\nstatic __inline__\nuint64_t\nOSReadSwapInt64(\n    const volatile void * base,\n    uintptr_t byteOffset\n)\n{\n    uint64_t result;\n\n    result = *(volatile uint64_t *)((uintptr_t)base + byteOffset);\n    return _OSSwapInt64(result);\n}\n\n\n\nstatic __inline__\nvoid\nOSWriteSwapInt16(\n    volatile void * base,\n    uintptr_t byteOffset,\n    uint16_t data\n)\n{\n    *(volatile uint16_t *)((uintptr_t)base + byteOffset) = _OSSwapInt16(data);\n}\n\nstatic __inline__\nvoid\nOSWriteSwapInt32(\n    volatile void * base,\n    uintptr_t byteOffset,\n    uint32_t data\n)\n{\n    *(volatile uint32_t *)((uintptr_t)base + byteOffset) = _OSSwapInt32(data);\n}\n\nstatic __inline__\nvoid\nOSWriteSwapInt64(\n    volatile void * base,\n    uintptr_t byteOffset,\n    uint64_t data\n)\n{\n    *(volatile uint64_t *)((uintptr_t)base + byteOffset) = _OSSwapInt64(data);\n}\n# 46 \"/usr/include/libkern/OSByteOrder.h\" 2 3 4\n# 62 \"/usr/include/libkern/OSByteOrder.h\" 3 4\nenum {\n    OSUnknownByteOrder,\n    OSLittleEndian,\n    OSBigEndian\n};\n\nstatic __inline__\nint32_t\nOSHostByteOrder(void) {\n\n    return OSLittleEndian;\n\n\n\n\n\n}\n# 91 \"/usr/include/libkern/OSByteOrder.h\" 3 4\nstatic __inline__\nuint16_t\n_OSReadInt16(\n    const volatile void * base,\n    uintptr_t byteOffset\n)\n{\n    return *(volatile uint16_t *)((uintptr_t)base + byteOffset);\n}\n\nstatic __inline__\nuint32_t\n_OSReadInt32(\n    const volatile void * base,\n    uintptr_t byteOffset\n)\n{\n    return *(volatile uint32_t *)((uintptr_t)base + byteOffset);\n}\n\nstatic __inline__\nuint64_t\n_OSReadInt64(\n    const volatile void * base,\n    uintptr_t byteOffset\n)\n{\n    return *(volatile uint64_t *)((uintptr_t)base + byteOffset);\n}\n\n\n\nstatic __inline__\nvoid\n_OSWriteInt16(\n    volatile void * base,\n    uintptr_t byteOffset,\n    uint16_t data\n)\n{\n    *(volatile uint16_t *)((uintptr_t)base + byteOffset) = data;\n}\n\nstatic __inline__\nvoid\n_OSWriteInt32(\n    volatile void * base,\n    uintptr_t byteOffset,\n    uint32_t data\n)\n{\n    *(volatile uint32_t *)((uintptr_t)base + byteOffset) = data;\n}\n\nstatic __inline__\nvoid\n_OSWriteInt64(\n    volatile void * base,\n    uintptr_t byteOffset,\n    uint64_t data\n)\n{\n    *(volatile uint64_t *)((uintptr_t)base + byteOffset) = data;\n}\n# 11 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFByteOrder.h\" 2 3\n\n\n\n\n\nenum __CFByteOrder {\n    CFByteOrderUnknown,\n    CFByteOrderLittleEndian,\n    CFByteOrderBigEndian\n};\ntypedef CFIndex CFByteOrder;\n\nstatic __inline__ __attribute__((always_inline)) CFByteOrder CFByteOrderGetCurrent(void) {\n\n    int32_t byteOrder = OSHostByteOrder();\n    switch (byteOrder) {\n    case OSLittleEndian: return CFByteOrderLittleEndian;\n    case OSBigEndian: return CFByteOrderBigEndian;\n    default: break;\n    }\n    return CFByteOrderUnknown;\n# 41 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFByteOrder.h\" 3\n}\n\nstatic __inline__ __attribute__((always_inline)) uint16_t CFSwapInt16(uint16_t arg) {\n\n    return (__builtin_constant_p(arg) ? ((__uint16_t)((((__uint16_t)(arg) & 0xff00) >> 8) | (((__uint16_t)(arg) & 0x00ff) << 8))) : _OSSwapInt16(arg));\n\n\n\n\n\n}\n\nstatic __inline__ __attribute__((always_inline)) uint32_t CFSwapInt32(uint32_t arg) {\n\n    return (__builtin_constant_p(arg) ? ((__uint32_t)((((__uint32_t)(arg) & 0xff000000) >> 24) | (((__uint32_t)(arg) & 0x00ff0000) >> 8) | (((__uint32_t)(arg) & 0x0000ff00) << 8) | (((__uint32_t)(arg) & 0x000000ff) << 24))) : _OSSwapInt32(arg));\n\n\n\n\n\n}\n\nstatic __inline__ __attribute__((always_inline)) uint64_t CFSwapInt64(uint64_t arg) {\n\n    return (__builtin_constant_p(arg) ? ((__uint64_t)((((__uint64_t)(arg) & 0xff00000000000000ULL) >> 56) | (((__uint64_t)(arg) & 0x00ff000000000000ULL) >> 40) | (((__uint64_t)(arg) & 0x0000ff0000000000ULL) >> 24) | (((__uint64_t)(arg) & 0x000000ff00000000ULL) >> 8) | (((__uint64_t)(arg) & 0x00000000ff000000ULL) << 8) | (((__uint64_t)(arg) & 0x0000000000ff0000ULL) << 24) | (((__uint64_t)(arg) & 0x000000000000ff00ULL) << 40) | (((__uint64_t)(arg) & 0x00000000000000ffULL) << 56))) : _OSSwapInt64(arg));\n# 76 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFByteOrder.h\" 3\n}\n\nstatic __inline__ __attribute__((always_inline)) uint16_t CFSwapInt16BigToHost(uint16_t arg) {\n\n    return (__builtin_constant_p(arg) ? ((__uint16_t)((((__uint16_t)(arg) & 0xff00) >> 8) | (((__uint16_t)(arg) & 0x00ff) << 8))) : _OSSwapInt16(arg));\n\n\n\n\n\n}\n\nstatic __inline__ __attribute__((always_inline)) uint32_t CFSwapInt32BigToHost(uint32_t arg) {\n\n    return (__builtin_constant_p(arg) ? ((__uint32_t)((((__uint32_t)(arg) & 0xff000000) >> 24) | (((__uint32_t)(arg) & 0x00ff0000) >> 8) | (((__uint32_t)(arg) & 0x0000ff00) << 8) | (((__uint32_t)(arg) & 0x000000ff) << 24))) : _OSSwapInt32(arg));\n\n\n\n\n\n}\n\nstatic __inline__ __attribute__((always_inline)) uint64_t CFSwapInt64BigToHost(uint64_t arg) {\n\n    return (__builtin_constant_p(arg) ? ((__uint64_t)((((__uint64_t)(arg) & 0xff00000000000000ULL) >> 56) | (((__uint64_t)(arg) & 0x00ff000000000000ULL) >> 40) | (((__uint64_t)(arg) & 0x0000ff0000000000ULL) >> 24) | (((__uint64_t)(arg) & 0x000000ff00000000ULL) >> 8) | (((__uint64_t)(arg) & 0x00000000ff000000ULL) << 8) | (((__uint64_t)(arg) & 0x0000000000ff0000ULL) << 24) | (((__uint64_t)(arg) & 0x000000000000ff00ULL) << 40) | (((__uint64_t)(arg) & 0x00000000000000ffULL) << 56))) : _OSSwapInt64(arg));\n\n\n\n\n\n}\n\nstatic __inline__ __attribute__((always_inline)) uint16_t CFSwapInt16HostToBig(uint16_t arg) {\n\n    return (__builtin_constant_p(arg) ? ((__uint16_t)((((__uint16_t)(arg) & 0xff00) >> 8) | (((__uint16_t)(arg) & 0x00ff) << 8))) : _OSSwapInt16(arg));\n\n\n\n\n\n}\n\nstatic __inline__ __attribute__((always_inline)) uint32_t CFSwapInt32HostToBig(uint32_t arg) {\n\n    return (__builtin_constant_p(arg) ? ((__uint32_t)((((__uint32_t)(arg) & 0xff000000) >> 24) | (((__uint32_t)(arg) & 0x00ff0000) >> 8) | (((__uint32_t)(arg) & 0x0000ff00) << 8) | (((__uint32_t)(arg) & 0x000000ff) << 24))) : _OSSwapInt32(arg));\n\n\n\n\n\n}\n\nstatic __inline__ __attribute__((always_inline)) uint64_t CFSwapInt64HostToBig(uint64_t arg) {\n\n    return (__builtin_constant_p(arg) ? ((__uint64_t)((((__uint64_t)(arg) & 0xff00000000000000ULL) >> 56) | (((__uint64_t)(arg) & 0x00ff000000000000ULL) >> 40) | (((__uint64_t)(arg) & 0x0000ff0000000000ULL) >> 24) | (((__uint64_t)(arg) & 0x000000ff00000000ULL) >> 8) | (((__uint64_t)(arg) & 0x00000000ff000000ULL) << 8) | (((__uint64_t)(arg) & 0x0000000000ff0000ULL) << 24) | (((__uint64_t)(arg) & 0x000000000000ff00ULL) << 40) | (((__uint64_t)(arg) & 0x00000000000000ffULL) << 56))) : _OSSwapInt64(arg));\n\n\n\n\n\n}\n\nstatic __inline__ __attribute__((always_inline)) uint16_t CFSwapInt16LittleToHost(uint16_t arg) {\n\n    return ((uint16_t)(arg));\n\n\n\n\n\n}\n\nstatic __inline__ __attribute__((always_inline)) uint32_t CFSwapInt32LittleToHost(uint32_t arg) {\n\n    return ((uint32_t)(arg));\n\n\n\n\n\n}\n\nstatic __inline__ __attribute__((always_inline)) uint64_t CFSwapInt64LittleToHost(uint64_t arg) {\n\n    return ((uint64_t)(arg));\n\n\n\n\n\n}\n\nstatic __inline__ __attribute__((always_inline)) uint16_t CFSwapInt16HostToLittle(uint16_t arg) {\n\n    return ((uint16_t)(arg));\n\n\n\n\n\n}\n\nstatic __inline__ __attribute__((always_inline)) uint32_t CFSwapInt32HostToLittle(uint32_t arg) {\n\n    return ((uint32_t)(arg));\n\n\n\n\n\n}\n\nstatic __inline__ __attribute__((always_inline)) uint64_t CFSwapInt64HostToLittle(uint64_t arg) {\n\n    return ((uint64_t)(arg));\n\n\n\n\n\n}\n\ntypedef struct {uint32_t v;} CFSwappedFloat32;\ntypedef struct {uint64_t v;} CFSwappedFloat64;\n\nstatic __inline__ __attribute__((always_inline)) CFSwappedFloat32 CFConvertFloat32HostToSwapped(Float32 arg) {\n    union CFSwap {\n Float32 v;\n CFSwappedFloat32 sv;\n    } result;\n    result.v = arg;\n\n    result.sv.v = CFSwapInt32(result.sv.v);\n\n    return result.sv;\n}\n\nstatic __inline__ __attribute__((always_inline)) Float32 CFConvertFloat32SwappedToHost(CFSwappedFloat32 arg) {\n    union CFSwap {\n Float32 v;\n CFSwappedFloat32 sv;\n    } result;\n    result.sv = arg;\n\n    result.sv.v = CFSwapInt32(result.sv.v);\n\n    return result.v;\n}\n\nstatic __inline__ __attribute__((always_inline)) CFSwappedFloat64 CFConvertFloat64HostToSwapped(Float64 arg) {\n    union CFSwap {\n Float64 v;\n CFSwappedFloat64 sv;\n    } result;\n    result.v = arg;\n\n    result.sv.v = CFSwapInt64(result.sv.v);\n\n    return result.sv;\n}\n\nstatic __inline__ __attribute__((always_inline)) Float64 CFConvertFloat64SwappedToHost(CFSwappedFloat64 arg) {\n    union CFSwap {\n Float64 v;\n CFSwappedFloat64 sv;\n    } result;\n    result.sv = arg;\n\n    result.sv.v = CFSwapInt64(result.sv.v);\n\n    return result.v;\n}\n\nstatic __inline__ __attribute__((always_inline)) CFSwappedFloat32 CFConvertFloatHostToSwapped(float arg) {\n    union CFSwap {\n float v;\n CFSwappedFloat32 sv;\n    } result;\n    result.v = arg;\n\n    result.sv.v = CFSwapInt32(result.sv.v);\n\n    return result.sv;\n}\n\nstatic __inline__ __attribute__((always_inline)) float CFConvertFloatSwappedToHost(CFSwappedFloat32 arg) {\n    union CFSwap {\n float v;\n CFSwappedFloat32 sv;\n    } result;\n    result.sv = arg;\n\n    result.sv.v = CFSwapInt32(result.sv.v);\n\n    return result.v;\n}\n\nstatic __inline__ __attribute__((always_inline)) CFSwappedFloat64 CFConvertDoubleHostToSwapped(double arg) {\n    union CFSwap {\n double v;\n CFSwappedFloat64 sv;\n    } result;\n    result.v = arg;\n\n    result.sv.v = CFSwapInt64(result.sv.v);\n\n    return result.sv;\n}\n\nstatic __inline__ __attribute__((always_inline)) double CFConvertDoubleSwappedToHost(CFSwappedFloat64 arg) {\n    union CFSwap {\n double v;\n CFSwappedFloat64 sv;\n    } result;\n    result.sv = arg;\n\n    result.sv.v = CFSwapInt64(result.sv.v);\n\n    return result.v;\n}\n\n\n# 45 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFCalendar.h\" 1 3\n# 10 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFCalendar.h\" 3\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFDate.h\" 1 3\n# 10 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFDate.h\" 3\n\n\ntypedef double CFTimeInterval;\ntypedef CFTimeInterval CFAbsoluteTime;\n\n\n\nextern\nCFAbsoluteTime CFAbsoluteTimeGetCurrent(void);\n\nextern\nconst CFTimeInterval kCFAbsoluteTimeIntervalSince1970;\nextern\nconst CFTimeInterval kCFAbsoluteTimeIntervalSince1904;\n\ntypedef const struct __CFDate * CFDateRef;\n\nextern\nCFTypeID CFDateGetTypeID(void);\n\nextern\nCFDateRef CFDateCreate(CFAllocatorRef allocator, CFAbsoluteTime at);\n\nextern\nCFAbsoluteTime CFDateGetAbsoluteTime(CFDateRef theDate);\n\nextern\nCFTimeInterval CFDateGetTimeIntervalSinceDate(CFDateRef theDate, CFDateRef otherDate);\n\nextern\nCFComparisonResult CFDateCompare(CFDateRef theDate, CFDateRef otherDate, void *context);\n\ntypedef const struct __CFTimeZone * CFTimeZoneRef;\n\ntypedef struct {\n    SInt32 year;\n    SInt8 month;\n    SInt8 day;\n    SInt8 hour;\n    SInt8 minute;\n    double second;\n} CFGregorianDate;\n\ntypedef struct {\n    SInt32 years;\n    SInt32 months;\n    SInt32 days;\n    SInt32 hours;\n    SInt32 minutes;\n    double seconds;\n} CFGregorianUnits;\n\nenum {\n    kCFGregorianUnitsYears = (1UL << 0),\n    kCFGregorianUnitsMonths = (1UL << 1),\n    kCFGregorianUnitsDays = (1UL << 2),\n    kCFGregorianUnitsHours = (1UL << 3),\n    kCFGregorianUnitsMinutes = (1UL << 4),\n    kCFGregorianUnitsSeconds = (1UL << 5),\n    kCFGregorianAllUnits = 0x00FFFFFF\n};\ntypedef CFOptionFlags CFGregorianUnitFlags;\n\nextern\nBoolean CFGregorianDateIsValid(CFGregorianDate gdate, CFOptionFlags unitFlags);\n\nextern\nCFAbsoluteTime CFGregorianDateGetAbsoluteTime(CFGregorianDate gdate, CFTimeZoneRef tz);\n\nextern\nCFGregorianDate CFAbsoluteTimeGetGregorianDate(CFAbsoluteTime at, CFTimeZoneRef tz);\n\nextern\nCFAbsoluteTime CFAbsoluteTimeAddGregorianUnits(CFAbsoluteTime at, CFTimeZoneRef tz, CFGregorianUnits units);\n\nextern\nCFGregorianUnits CFAbsoluteTimeGetDifferenceAsGregorianUnits(CFAbsoluteTime at1, CFAbsoluteTime at2, CFTimeZoneRef tz, CFOptionFlags unitFlags);\n\nextern\nSInt32 CFAbsoluteTimeGetDayOfWeek(CFAbsoluteTime at, CFTimeZoneRef tz);\n\nextern\nSInt32 CFAbsoluteTimeGetDayOfYear(CFAbsoluteTime at, CFTimeZoneRef tz);\n\nextern\nSInt32 CFAbsoluteTimeGetWeekOfYear(CFAbsoluteTime at, CFTimeZoneRef tz);\n\n\n# 11 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFCalendar.h\" 2 3\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFTimeZone.h\" 1 3\n# 15 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFTimeZone.h\" 3\n\n\nextern\nCFTypeID CFTimeZoneGetTypeID(void);\n\nextern\nCFTimeZoneRef CFTimeZoneCopySystem(void);\n\nextern\nvoid CFTimeZoneResetSystem(void);\n\nextern\nCFTimeZoneRef CFTimeZoneCopyDefault(void);\n\nextern\nvoid CFTimeZoneSetDefault(CFTimeZoneRef tz);\n\nextern\nCFArrayRef CFTimeZoneCopyKnownNames(void);\n\nextern\nCFDictionaryRef CFTimeZoneCopyAbbreviationDictionary(void);\n\nextern\nvoid CFTimeZoneSetAbbreviationDictionary(CFDictionaryRef dict);\n\nextern\nCFTimeZoneRef CFTimeZoneCreate(CFAllocatorRef allocator, CFStringRef name, CFDataRef data);\n\nextern\nCFTimeZoneRef CFTimeZoneCreateWithTimeIntervalFromGMT(CFAllocatorRef allocator, CFTimeInterval ti);\n\nextern\nCFTimeZoneRef CFTimeZoneCreateWithName(CFAllocatorRef allocator, CFStringRef name, Boolean tryAbbrev);\n\nextern\nCFStringRef CFTimeZoneGetName(CFTimeZoneRef tz);\n\nextern\nCFDataRef CFTimeZoneGetData(CFTimeZoneRef tz);\n\nextern\nCFTimeInterval CFTimeZoneGetSecondsFromGMT(CFTimeZoneRef tz, CFAbsoluteTime at);\n\nextern\nCFStringRef CFTimeZoneCopyAbbreviation(CFTimeZoneRef tz, CFAbsoluteTime at);\n\nextern\nBoolean CFTimeZoneIsDaylightSavingTime(CFTimeZoneRef tz, CFAbsoluteTime at);\n\nextern\nCFTimeInterval CFTimeZoneGetDaylightSavingTimeOffset(CFTimeZoneRef tz, CFAbsoluteTime at) ;\n\nextern\nCFAbsoluteTime CFTimeZoneGetNextDaylightSavingTimeTransition(CFTimeZoneRef tz, CFAbsoluteTime at) ;\n\n\nenum {\n kCFTimeZoneNameStyleStandard,\n kCFTimeZoneNameStyleShortStandard,\n kCFTimeZoneNameStyleDaylightSaving,\n kCFTimeZoneNameStyleShortDaylightSaving,\n kCFTimeZoneNameStyleGeneric,\n kCFTimeZoneNameStyleShortGeneric\n};\ntypedef CFIndex CFTimeZoneNameStyle;\n\nextern\nCFStringRef CFTimeZoneCopyLocalizedName(CFTimeZoneRef tz, CFTimeZoneNameStyle style, CFLocaleRef locale) ;\n\n\nextern\nconst CFStringRef kCFTimeZoneSystemTimeZoneDidChangeNotification ;\n\n\n# 12 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFCalendar.h\" 2 3\n\n\n\n\n\ntypedef struct __CFCalendar * CFCalendarRef;\n\nextern\nCFTypeID CFCalendarGetTypeID(void) ;\n\nextern\nCFCalendarRef CFCalendarCopyCurrent(void) ;\n\nextern\nCFCalendarRef CFCalendarCreateWithIdentifier(CFAllocatorRef allocator, CFStringRef identifier) ;\n\n\n\nextern\nCFStringRef CFCalendarGetIdentifier(CFCalendarRef calendar) ;\n\n\nextern\nCFLocaleRef CFCalendarCopyLocale(CFCalendarRef calendar) ;\n\nextern\nvoid CFCalendarSetLocale(CFCalendarRef calendar, CFLocaleRef locale) ;\n\nextern\nCFTimeZoneRef CFCalendarCopyTimeZone(CFCalendarRef calendar) ;\n\nextern\nvoid CFCalendarSetTimeZone(CFCalendarRef calendar, CFTimeZoneRef tz) ;\n\nextern\nCFIndex CFCalendarGetFirstWeekday(CFCalendarRef calendar) ;\n\nextern\nvoid CFCalendarSetFirstWeekday(CFCalendarRef calendar, CFIndex wkdy) ;\n\nextern\nCFIndex CFCalendarGetMinimumDaysInFirstWeek(CFCalendarRef calendar) ;\n\nextern\nvoid CFCalendarSetMinimumDaysInFirstWeek(CFCalendarRef calendar, CFIndex mwd) ;\n\n\nenum {\n kCFCalendarUnitEra = (1UL << 1),\n kCFCalendarUnitYear = (1UL << 2),\n kCFCalendarUnitMonth = (1UL << 3),\n kCFCalendarUnitDay = (1UL << 4),\n kCFCalendarUnitHour = (1UL << 5),\n kCFCalendarUnitMinute = (1UL << 6),\n kCFCalendarUnitSecond = (1UL << 7),\n kCFCalendarUnitWeek = (1UL << 8),\n kCFCalendarUnitWeekday = (1UL << 9),\n kCFCalendarUnitWeekdayOrdinal = (1UL << 10),\n\n kCFCalendarUnitQuarter = (1UL << 11),\n\n};\ntypedef CFOptionFlags CFCalendarUnit;\n\nextern\nCFRange CFCalendarGetMinimumRangeOfUnit(CFCalendarRef calendar, CFCalendarUnit unit) ;\n\nextern\nCFRange CFCalendarGetMaximumRangeOfUnit(CFCalendarRef calendar, CFCalendarUnit unit) ;\n\nextern\nCFRange CFCalendarGetRangeOfUnit(CFCalendarRef calendar, CFCalendarUnit smallerUnit, CFCalendarUnit biggerUnit, CFAbsoluteTime at) ;\n\nextern\nCFIndex CFCalendarGetOrdinalityOfUnit(CFCalendarRef calendar, CFCalendarUnit smallerUnit, CFCalendarUnit biggerUnit, CFAbsoluteTime at) ;\n\nextern\nBoolean CFCalendarGetTimeRangeOfUnit(CFCalendarRef calendar, CFCalendarUnit unit, CFAbsoluteTime at, CFAbsoluteTime *startp, CFTimeInterval *tip) ;\n\nextern\nBoolean CFCalendarComposeAbsoluteTime(CFCalendarRef calendar, CFAbsoluteTime *at, const char *componentDesc, ...) ;\n\nextern\nBoolean CFCalendarDecomposeAbsoluteTime(CFCalendarRef calendar, CFAbsoluteTime at, const char *componentDesc, ...) ;\n\n\nenum {\n    kCFCalendarComponentsWrap = (1UL << 0)\n};\n\nextern\nBoolean CFCalendarAddComponents(CFCalendarRef calendar, CFAbsoluteTime *at, CFOptionFlags options, const char *componentDesc, ...) ;\n\nextern\nBoolean CFCalendarGetComponentDifference(CFCalendarRef calendar, CFAbsoluteTime startingAT, CFAbsoluteTime resultAT, CFOptionFlags options, const char *componentDesc, ...) ;\n\n\n\n# 46 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFDateFormatter.h\" 1 3\n# 14 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFDateFormatter.h\" 3\n\n\ntypedef struct __CFDateFormatter *CFDateFormatterRef;\n\n\n\nextern\nCFStringRef CFDateFormatterCreateDateFormatFromTemplate(CFAllocatorRef allocator, CFStringRef tmplate, CFOptionFlags options, CFLocaleRef locale) ;\n\n\nextern\nCFTypeID CFDateFormatterGetTypeID(void) ;\n\nenum {\n kCFDateFormatterNoStyle = 0,\n kCFDateFormatterShortStyle = 1,\n kCFDateFormatterMediumStyle = 2,\n kCFDateFormatterLongStyle = 3,\n kCFDateFormatterFullStyle = 4\n};\ntypedef CFIndex CFDateFormatterStyle;\n# 48 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFDateFormatter.h\" 3\nextern\nCFDateFormatterRef CFDateFormatterCreate(CFAllocatorRef allocator, CFLocaleRef locale, CFDateFormatterStyle dateStyle, CFDateFormatterStyle timeStyle) ;\n\n\n\nextern\nCFLocaleRef CFDateFormatterGetLocale(CFDateFormatterRef formatter) ;\n\nextern\nCFDateFormatterStyle CFDateFormatterGetDateStyle(CFDateFormatterRef formatter) ;\n\nextern\nCFDateFormatterStyle CFDateFormatterGetTimeStyle(CFDateFormatterRef formatter) ;\n\n\nextern\nCFStringRef CFDateFormatterGetFormat(CFDateFormatterRef formatter) ;\n\nextern\nvoid CFDateFormatterSetFormat(CFDateFormatterRef formatter, CFStringRef formatString) ;\n\n\n\n\n\n\n\nextern\nCFStringRef CFDateFormatterCreateStringWithDate(CFAllocatorRef allocator, CFDateFormatterRef formatter, CFDateRef date) ;\n\nextern\nCFStringRef CFDateFormatterCreateStringWithAbsoluteTime(CFAllocatorRef allocator, CFDateFormatterRef formatter, CFAbsoluteTime at) ;\n\n\n\n\nextern\nCFDateRef CFDateFormatterCreateDateFromString(CFAllocatorRef allocator, CFDateFormatterRef formatter, CFStringRef string, CFRange *rangep) ;\n\nextern\nBoolean CFDateFormatterGetAbsoluteTimeFromString(CFDateFormatterRef formatter, CFStringRef string, CFRange *rangep, CFAbsoluteTime *atp) ;\n# 98 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFDateFormatter.h\" 3\nextern\nvoid CFDateFormatterSetProperty(CFDateFormatterRef formatter, CFStringRef key, CFTypeRef value) ;\n\nextern\nCFTypeRef CFDateFormatterCopyProperty(CFDateFormatterRef formatter, CFStringRef key) ;\n\n\n\nextern const CFStringRef kCFDateFormatterIsLenient ;\nextern const CFStringRef kCFDateFormatterTimeZone ;\nextern const CFStringRef kCFDateFormatterCalendarName ;\nextern const CFStringRef kCFDateFormatterDefaultFormat ;\nextern const CFStringRef kCFDateFormatterTwoDigitStartDate ;\nextern const CFStringRef kCFDateFormatterDefaultDate ;\nextern const CFStringRef kCFDateFormatterCalendar ;\nextern const CFStringRef kCFDateFormatterEraSymbols ;\nextern const CFStringRef kCFDateFormatterMonthSymbols ;\nextern const CFStringRef kCFDateFormatterShortMonthSymbols ;\nextern const CFStringRef kCFDateFormatterWeekdaySymbols ;\nextern const CFStringRef kCFDateFormatterShortWeekdaySymbols ;\nextern const CFStringRef kCFDateFormatterAMSymbol ;\nextern const CFStringRef kCFDateFormatterPMSymbol ;\nextern const CFStringRef kCFDateFormatterLongEraSymbols ;\nextern const CFStringRef kCFDateFormatterVeryShortMonthSymbols ;\nextern const CFStringRef kCFDateFormatterStandaloneMonthSymbols ;\nextern const CFStringRef kCFDateFormatterShortStandaloneMonthSymbols ;\nextern const CFStringRef kCFDateFormatterVeryShortStandaloneMonthSymbols ;\nextern const CFStringRef kCFDateFormatterVeryShortWeekdaySymbols ;\nextern const CFStringRef kCFDateFormatterStandaloneWeekdaySymbols ;\nextern const CFStringRef kCFDateFormatterShortStandaloneWeekdaySymbols ;\nextern const CFStringRef kCFDateFormatterVeryShortStandaloneWeekdaySymbols ;\nextern const CFStringRef kCFDateFormatterQuarterSymbols ;\nextern const CFStringRef kCFDateFormatterShortQuarterSymbols ;\nextern const CFStringRef kCFDateFormatterStandaloneQuarterSymbols ;\nextern const CFStringRef kCFDateFormatterShortStandaloneQuarterSymbols ;\nextern const CFStringRef kCFDateFormatterGregorianStartDate ;\nextern const CFStringRef kCFDateFormatterDoesRelativeDateFormattingKey ;\n# 149 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFDateFormatter.h\" 3\n\n# 50 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFMessagePort.h\" 1 3\n# 9 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFMessagePort.h\" 3\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFRunLoop.h\" 1 3\n# 13 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFRunLoop.h\" 3\n# 1 \"/usr/include/mach/port.h\" 1 3 4\n# 91 \"/usr/include/mach/port.h\" 3 4\n# 1 \"/usr/include/mach/boolean.h\" 1 3 4\n# 73 \"/usr/include/mach/boolean.h\" 3 4\n# 1 \"/usr/include/mach/machine/boolean.h\" 1 3 4\n# 35 \"/usr/include/mach/machine/boolean.h\" 3 4\n# 1 \"/usr/include/mach/i386/boolean.h\" 1 3 4\n# 69 \"/usr/include/mach/i386/boolean.h\" 3 4\ntypedef unsigned int boolean_t;\n# 36 \"/usr/include/mach/machine/boolean.h\" 2 3 4\n# 74 \"/usr/include/mach/boolean.h\" 2 3 4\n# 92 \"/usr/include/mach/port.h\" 2 3 4\n# 1 \"/usr/include/mach/machine/vm_types.h\" 1 3 4\n# 35 \"/usr/include/mach/machine/vm_types.h\" 3 4\n# 1 \"/usr/include/mach/i386/vm_types.h\" 1 3 4\n# 73 \"/usr/include/mach/i386/vm_types.h\" 3 4\n# 1 \"/usr/include/mach/i386/vm_param.h\" 1 3 4\n# 74 \"/usr/include/mach/i386/vm_types.h\" 2 3 4\n# 93 \"/usr/include/mach/i386/vm_types.h\" 3 4\ntypedef __darwin_natural_t natural_t;\ntypedef int integer_t;\n\n\n\n\n\n\ntypedef uintptr_t vm_offset_t;\n# 112 \"/usr/include/mach/i386/vm_types.h\" 3 4\ntypedef uintptr_t vm_size_t;\n# 124 \"/usr/include/mach/i386/vm_types.h\" 3 4\ntypedef uint64_t mach_vm_address_t;\ntypedef uint64_t mach_vm_offset_t;\ntypedef uint64_t mach_vm_size_t;\n\ntypedef uint64_t vm_map_offset_t;\ntypedef uint64_t vm_map_address_t;\ntypedef uint64_t vm_map_size_t;\n# 36 \"/usr/include/mach/machine/vm_types.h\" 2 3 4\n# 93 \"/usr/include/mach/port.h\" 2 3 4\n# 106 \"/usr/include/mach/port.h\" 3 4\ntypedef natural_t mach_port_name_t;\ntypedef mach_port_name_t *mach_port_name_array_t;\n# 128 \"/usr/include/mach/port.h\" 3 4\ntypedef mach_port_name_t mach_port_t;\n\n\n\ntypedef mach_port_t *mach_port_array_t;\n# 190 \"/usr/include/mach/port.h\" 3 4\ntypedef natural_t mach_port_right_t;\n# 200 \"/usr/include/mach/port.h\" 3 4\ntypedef natural_t mach_port_type_t;\ntypedef mach_port_type_t *mach_port_type_array_t;\n# 233 \"/usr/include/mach/port.h\" 3 4\ntypedef natural_t mach_port_urefs_t;\ntypedef integer_t mach_port_delta_t;\n\n\n\ntypedef natural_t mach_port_seqno_t;\ntypedef natural_t mach_port_mscount_t;\ntypedef natural_t mach_port_msgcount_t;\ntypedef natural_t mach_port_rights_t;\n\n\n\n\n\n\ntypedef unsigned int mach_port_srights_t;\n\ntypedef struct mach_port_status {\n mach_port_rights_t mps_pset;\n mach_port_seqno_t mps_seqno;\n mach_port_mscount_t mps_mscount;\n mach_port_msgcount_t mps_qlimit;\n mach_port_msgcount_t mps_msgcount;\n mach_port_rights_t mps_sorights;\n boolean_t mps_srights;\n boolean_t mps_pdrequest;\n boolean_t mps_nsrequest;\n natural_t mps_flags;\n} mach_port_status_t;\n# 273 \"/usr/include/mach/port.h\" 3 4\ntypedef struct mach_port_limits {\n mach_port_msgcount_t mpl_qlimit;\n} mach_port_limits_t;\n\ntypedef integer_t *mach_port_info_t;\n\n\ntypedef int mach_port_flavor_t;\n# 295 \"/usr/include/mach/port.h\" 3 4\ntypedef struct mach_port_qos {\n unsigned int name:1;\n unsigned int prealloc:1;\n boolean_t pad1:30;\n natural_t len;\n} mach_port_qos_t;\n# 14 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFRunLoop.h\" 2 3\n\n\n\n\ntypedef struct __CFRunLoop * CFRunLoopRef;\n\ntypedef struct __CFRunLoopSource * CFRunLoopSourceRef;\n\ntypedef struct __CFRunLoopObserver * CFRunLoopObserverRef;\n\ntypedef struct __CFRunLoopTimer * CFRunLoopTimerRef;\n\n\nenum {\n    kCFRunLoopRunFinished = 1,\n    kCFRunLoopRunStopped = 2,\n    kCFRunLoopRunTimedOut = 3,\n    kCFRunLoopRunHandledSource = 4\n};\n\n\nenum {\n    kCFRunLoopEntry = (1UL << 0),\n    kCFRunLoopBeforeTimers = (1UL << 1),\n    kCFRunLoopBeforeSources = (1UL << 2),\n    kCFRunLoopBeforeWaiting = (1UL << 5),\n    kCFRunLoopAfterWaiting = (1UL << 6),\n    kCFRunLoopExit = (1UL << 7),\n    kCFRunLoopAllActivities = 0x0FFFFFFFU\n};\ntypedef CFOptionFlags CFRunLoopActivity;\n\nextern const CFStringRef kCFRunLoopDefaultMode;\nextern const CFStringRef kCFRunLoopCommonModes;\n\nextern CFTypeID CFRunLoopGetTypeID(void);\n\nextern CFRunLoopRef CFRunLoopGetCurrent(void);\nextern CFRunLoopRef CFRunLoopGetMain(void) ;\n\nextern CFStringRef CFRunLoopCopyCurrentMode(CFRunLoopRef rl);\n\nextern CFArrayRef CFRunLoopCopyAllModes(CFRunLoopRef rl);\n\nextern void CFRunLoopAddCommonMode(CFRunLoopRef rl, CFStringRef mode);\n\nextern CFAbsoluteTime CFRunLoopGetNextTimerFireDate(CFRunLoopRef rl, CFStringRef mode);\n\nextern void CFRunLoopRun(void);\nextern SInt32 CFRunLoopRunInMode(CFStringRef mode, CFTimeInterval seconds, Boolean returnAfterSourceHandled);\nextern Boolean CFRunLoopIsWaiting(CFRunLoopRef rl);\nextern void CFRunLoopWakeUp(CFRunLoopRef rl);\nextern void CFRunLoopStop(CFRunLoopRef rl);\n\n\nextern void CFRunLoopPerformBlock(CFRunLoopRef rl, CFTypeRef mode, void (^block)(void)) ;\n\n\nextern Boolean CFRunLoopContainsSource(CFRunLoopRef rl, CFRunLoopSourceRef source, CFStringRef mode);\nextern void CFRunLoopAddSource(CFRunLoopRef rl, CFRunLoopSourceRef source, CFStringRef mode);\nextern void CFRunLoopRemoveSource(CFRunLoopRef rl, CFRunLoopSourceRef source, CFStringRef mode);\n\nextern Boolean CFRunLoopContainsObserver(CFRunLoopRef rl, CFRunLoopObserverRef observer, CFStringRef mode);\nextern void CFRunLoopAddObserver(CFRunLoopRef rl, CFRunLoopObserverRef observer, CFStringRef mode);\nextern void CFRunLoopRemoveObserver(CFRunLoopRef rl, CFRunLoopObserverRef observer, CFStringRef mode);\n\nextern Boolean CFRunLoopContainsTimer(CFRunLoopRef rl, CFRunLoopTimerRef timer, CFStringRef mode);\nextern void CFRunLoopAddTimer(CFRunLoopRef rl, CFRunLoopTimerRef timer, CFStringRef mode);\nextern void CFRunLoopRemoveTimer(CFRunLoopRef rl, CFRunLoopTimerRef timer, CFStringRef mode);\n\ntypedef struct {\n    CFIndex version;\n    void * info;\n    const void *(*retain)(const void *info);\n    void (*release)(const void *info);\n    CFStringRef (*copyDescription)(const void *info);\n    Boolean (*equal)(const void *info1, const void *info2);\n    CFHashCode (*hash)(const void *info);\n    void (*schedule)(void *info, CFRunLoopRef rl, CFStringRef mode);\n    void (*cancel)(void *info, CFRunLoopRef rl, CFStringRef mode);\n    void (*perform)(void *info);\n} CFRunLoopSourceContext;\n\ntypedef struct {\n    CFIndex version;\n    void * info;\n    const void *(*retain)(const void *info);\n    void (*release)(const void *info);\n    CFStringRef (*copyDescription)(const void *info);\n    Boolean (*equal)(const void *info1, const void *info2);\n    CFHashCode (*hash)(const void *info);\n\n    mach_port_t (*getPort)(void *info);\n    void * (*perform)(void *msg, CFIndex size, CFAllocatorRef allocator, void *info);\n\n\n\n\n} CFRunLoopSourceContext1;\n\nextern CFTypeID CFRunLoopSourceGetTypeID(void);\n\nextern CFRunLoopSourceRef CFRunLoopSourceCreate(CFAllocatorRef allocator, CFIndex order, CFRunLoopSourceContext *context);\n\nextern CFIndex CFRunLoopSourceGetOrder(CFRunLoopSourceRef source);\nextern void CFRunLoopSourceInvalidate(CFRunLoopSourceRef source);\nextern Boolean CFRunLoopSourceIsValid(CFRunLoopSourceRef source);\nextern void CFRunLoopSourceGetContext(CFRunLoopSourceRef source, CFRunLoopSourceContext *context);\nextern void CFRunLoopSourceSignal(CFRunLoopSourceRef source);\n\ntypedef struct {\n    CFIndex version;\n    void * info;\n    const void *(*retain)(const void *info);\n    void (*release)(const void *info);\n    CFStringRef (*copyDescription)(const void *info);\n} CFRunLoopObserverContext;\n\ntypedef void (*CFRunLoopObserverCallBack)(CFRunLoopObserverRef observer, CFRunLoopActivity activity, void *info);\n\nextern CFTypeID CFRunLoopObserverGetTypeID(void);\n\nextern CFRunLoopObserverRef CFRunLoopObserverCreate(CFAllocatorRef allocator, CFOptionFlags activities, Boolean repeats, CFIndex order, CFRunLoopObserverCallBack callout, CFRunLoopObserverContext *context);\n\nextern CFOptionFlags CFRunLoopObserverGetActivities(CFRunLoopObserverRef observer);\nextern Boolean CFRunLoopObserverDoesRepeat(CFRunLoopObserverRef observer);\nextern CFIndex CFRunLoopObserverGetOrder(CFRunLoopObserverRef observer);\nextern void CFRunLoopObserverInvalidate(CFRunLoopObserverRef observer);\nextern Boolean CFRunLoopObserverIsValid(CFRunLoopObserverRef observer);\nextern void CFRunLoopObserverGetContext(CFRunLoopObserverRef observer, CFRunLoopObserverContext *context);\n\ntypedef struct {\n    CFIndex version;\n    void * info;\n    const void *(*retain)(const void *info);\n    void (*release)(const void *info);\n    CFStringRef (*copyDescription)(const void *info);\n} CFRunLoopTimerContext;\n\ntypedef void (*CFRunLoopTimerCallBack)(CFRunLoopTimerRef timer, void *info);\n\nextern CFTypeID CFRunLoopTimerGetTypeID(void);\n\nextern CFRunLoopTimerRef CFRunLoopTimerCreate(CFAllocatorRef allocator, CFAbsoluteTime fireDate, CFTimeInterval interval, CFOptionFlags flags, CFIndex order, CFRunLoopTimerCallBack callout, CFRunLoopTimerContext *context);\nextern CFAbsoluteTime CFRunLoopTimerGetNextFireDate(CFRunLoopTimerRef timer);\nextern void CFRunLoopTimerSetNextFireDate(CFRunLoopTimerRef timer, CFAbsoluteTime fireDate);\nextern CFTimeInterval CFRunLoopTimerGetInterval(CFRunLoopTimerRef timer);\nextern Boolean CFRunLoopTimerDoesRepeat(CFRunLoopTimerRef timer);\nextern CFIndex CFRunLoopTimerGetOrder(CFRunLoopTimerRef timer);\nextern void CFRunLoopTimerInvalidate(CFRunLoopTimerRef timer);\nextern Boolean CFRunLoopTimerIsValid(CFRunLoopTimerRef timer);\nextern void CFRunLoopTimerGetContext(CFRunLoopTimerRef timer, CFRunLoopTimerContext *context);\n\n\n# 10 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFMessagePort.h\" 2 3\n\n\n# 1 \"/usr/include/dispatch/dispatch.h\" 1 3 4\n# 26 \"/usr/include/dispatch/dispatch.h\" 3 4\n# 1 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/stddef.h\" 1 3 4\n# 27 \"/usr/include/dispatch/dispatch.h\" 2 3 4\n# 39 \"/usr/include/dispatch/dispatch.h\" 3 4\n# 1 \"/usr/include/dispatch/base.h\" 1 3 4\n# 41 \"/usr/include/dispatch/base.h\" 3 4\ntypedef union {\n struct dispatch_object_s *_do;\n struct dispatch_continuation_s *_dc;\n struct dispatch_queue_s *_dq;\n struct dispatch_queue_attr_s *_dqa;\n struct dispatch_group_s *_dg;\n struct dispatch_source_s *_ds;\n struct dispatch_source_attr_s *_dsa;\n struct dispatch_semaphore_s *_dsema;\n} dispatch_object_t __attribute__((transparent_union));\n\n\ntypedef void (*dispatch_function_t)(void *);\n# 40 \"/usr/include/dispatch/dispatch.h\" 2 3 4\n# 1 \"/usr/include/dispatch/object.h\" 1 3 4\n# 29 \"/usr/include/dispatch/object.h\" 3 4\n\n# 43 \"/usr/include/dispatch/object.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nonnull__(2))) __attribute__((__nothrow__)) __attribute__((__format__(printf,2,3)))\nvoid\ndispatch_debug(dispatch_object_t object, const char *message, ...);\n\n__attribute__((visibility(\"default\")))\n__attribute__((__nonnull__(2))) __attribute__((__nothrow__)) __attribute__((__format__(printf,2,0)))\nvoid\ndispatch_debugv(dispatch_object_t object, const char *message, va_list ap);\n# 67 \"/usr/include/dispatch/object.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nonnull__)) __attribute__((__nothrow__))\nvoid\ndispatch_retain(dispatch_object_t object);\n# 88 \"/usr/include/dispatch/object.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nonnull__)) __attribute__((__nothrow__))\nvoid\ndispatch_release(dispatch_object_t object);\n# 105 \"/usr/include/dispatch/object.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nonnull__)) __attribute__((__pure__)) __attribute__((__warn_unused_result__)) __attribute__((__nothrow__))\nvoid *\ndispatch_get_context(dispatch_object_t object);\n# 123 \"/usr/include/dispatch/object.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nothrow__))\nvoid\ndispatch_set_context(dispatch_object_t object, void *context);\n# 149 \"/usr/include/dispatch/object.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nothrow__))\nvoid\ndispatch_set_finalizer_f(dispatch_object_t object,\n dispatch_function_t finalizer);\n# 173 \"/usr/include/dispatch/object.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nonnull__)) __attribute__((__nothrow__))\nvoid\ndispatch_suspend(dispatch_object_t object);\n# 188 \"/usr/include/dispatch/object.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nonnull__)) __attribute__((__nothrow__))\nvoid\ndispatch_resume(dispatch_object_t object);\n\n\n# 41 \"/usr/include/dispatch/dispatch.h\" 2 3 4\n# 1 \"/usr/include/dispatch/time.h\" 1 3 4\n# 31 \"/usr/include/dispatch/time.h\" 3 4\n\n\nstruct timespec;\n# 57 \"/usr/include/dispatch/time.h\" 3 4\ntypedef uint64_t dispatch_time_t;\n# 82 \"/usr/include/dispatch/time.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nothrow__))\ndispatch_time_t\ndispatch_time(dispatch_time_t when, int64_t delta);\n# 106 \"/usr/include/dispatch/time.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nothrow__))\ndispatch_time_t\ndispatch_walltime(const struct timespec *when, int64_t delta);\n\n\n# 42 \"/usr/include/dispatch/dispatch.h\" 2 3 4\n# 1 \"/usr/include/dispatch/queue.h\" 1 3 4\n# 67 \"/usr/include/dispatch/queue.h\" 3 4\ntypedef struct dispatch_queue_s *dispatch_queue_t;;\n\n\n\n\n\n\n\ntypedef struct dispatch_queue_attr_s *dispatch_queue_attr_t;;\n# 111 \"/usr/include/dispatch/queue.h\" 3 4\ntypedef void (^dispatch_block_t)(void);\n\n\n\n# 145 \"/usr/include/dispatch/queue.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nonnull__)) __attribute__((__nothrow__))\nvoid\ndispatch_async(dispatch_queue_t queue, dispatch_block_t block);\n# 175 \"/usr/include/dispatch/queue.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nonnull__(1))) __attribute__((__nonnull__(3))) __attribute__((__nothrow__))\nvoid\ndispatch_async_f(dispatch_queue_t queue,\n void *context,\n dispatch_function_t work);\n# 213 \"/usr/include/dispatch/queue.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nonnull__)) __attribute__((__nothrow__))\nvoid\ndispatch_sync(dispatch_queue_t queue, dispatch_block_t block);\n# 241 \"/usr/include/dispatch/queue.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nonnull__(1))) __attribute__((__nonnull__(3))) __attribute__((__nothrow__))\nvoid\ndispatch_sync_f(dispatch_queue_t queue,\n void *context,\n dispatch_function_t work);\n# 274 \"/usr/include/dispatch/queue.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nonnull__)) __attribute__((__nothrow__))\nvoid\ndispatch_apply(size_t iterations, dispatch_queue_t queue, void (^block)(size_t));\n# 306 \"/usr/include/dispatch/queue.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nonnull__(2))) __attribute__((__nonnull__(4))) __attribute__((__nothrow__))\nvoid\ndispatch_apply_f(size_t iterations, dispatch_queue_t queue,\n void *context,\n void (*work)(void *, size_t));\n# 328 \"/usr/include/dispatch/queue.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__pure__)) __attribute__((__warn_unused_result__)) __attribute__((__nothrow__))\ndispatch_queue_t\ndispatch_get_current_queue(void);\n# 348 \"/usr/include/dispatch/queue.h\" 3 4\n__attribute__((visibility(\"default\")))\nextern struct dispatch_queue_s _dispatch_main_q;\n# 372 \"/usr/include/dispatch/queue.h\" 3 4\nenum {\n DISPATCH_QUEUE_PRIORITY_HIGH = 2,\n DISPATCH_QUEUE_PRIORITY_DEFAULT = 0,\n DISPATCH_QUEUE_PRIORITY_LOW = -2,\n};\n# 399 \"/usr/include/dispatch/queue.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__pure__)) __attribute__((__warn_unused_result__)) __attribute__((__nothrow__))\ndispatch_queue_t\ndispatch_get_global_queue(long priority, unsigned long flags);\n# 428 \"/usr/include/dispatch/queue.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__malloc__)) __attribute__((__warn_unused_result__)) __attribute__((__nothrow__))\ndispatch_queue_t\ndispatch_queue_create(const char *label, dispatch_queue_attr_t attr);\n# 446 \"/usr/include/dispatch/queue.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nonnull__)) __attribute__((__pure__)) __attribute__((__warn_unused_result__)) __attribute__((__nothrow__))\nconst char *\ndispatch_queue_get_label(dispatch_queue_t queue);\n# 479 \"/usr/include/dispatch/queue.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nonnull__)) __attribute__((__nothrow__))\nvoid\ndispatch_set_target_queue(dispatch_object_t object, dispatch_queue_t queue);\n# 497 \"/usr/include/dispatch/queue.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nothrow__)) __attribute__((__noreturn__))\nvoid\ndispatch_main(void);\n# 525 \"/usr/include/dispatch/queue.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nonnull__(2))) __attribute__((__nonnull__(3))) __attribute__((__nothrow__))\nvoid\ndispatch_after(dispatch_time_t when,\n dispatch_queue_t queue,\n dispatch_block_t block);\n# 558 \"/usr/include/dispatch/queue.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nonnull__(2))) __attribute__((__nonnull__(4))) __attribute__((__nothrow__))\nvoid\ndispatch_after_f(dispatch_time_t when,\n dispatch_queue_t queue,\n void *context,\n dispatch_function_t work);\n\n\n# 43 \"/usr/include/dispatch/dispatch.h\" 2 3 4\n# 1 \"/usr/include/dispatch/source.h\" 1 3 4\n# 30 \"/usr/include/dispatch/source.h\" 3 4\n# 1 \"/usr/include/mach/message.h\" 1 3 4\n# 77 \"/usr/include/mach/message.h\" 3 4\n# 1 \"/usr/include/mach/kern_return.h\" 1 3 4\n# 70 \"/usr/include/mach/kern_return.h\" 3 4\n# 1 \"/usr/include/mach/machine/kern_return.h\" 1 3 4\n# 35 \"/usr/include/mach/machine/kern_return.h\" 3 4\n# 1 \"/usr/include/mach/i386/kern_return.h\" 1 3 4\n# 71 \"/usr/include/mach/i386/kern_return.h\" 3 4\ntypedef int kern_return_t;\n# 36 \"/usr/include/mach/machine/kern_return.h\" 2 3 4\n# 71 \"/usr/include/mach/kern_return.h\" 2 3 4\n# 78 \"/usr/include/mach/message.h\" 2 3 4\n# 89 \"/usr/include/mach/message.h\" 3 4\ntypedef natural_t mach_msg_timeout_t;\n# 172 \"/usr/include/mach/message.h\" 3 4\ntypedef unsigned int mach_msg_bits_t;\ntypedef natural_t mach_msg_size_t;\ntypedef integer_t mach_msg_id_t;\n\n\n\n\ntypedef unsigned int mach_msg_type_name_t;\n# 189 \"/usr/include/mach/message.h\" 3 4\ntypedef unsigned int mach_msg_copy_options_t;\n# 211 \"/usr/include/mach/message.h\" 3 4\ntypedef unsigned int mach_msg_descriptor_type_t;\n\n\n\n\n\n\n#pragma pack(4)\n\ntypedef struct\n{\n  natural_t pad1;\n  mach_msg_size_t pad2;\n  unsigned int pad3 : 24;\n  mach_msg_descriptor_type_t type : 8;\n} mach_msg_type_descriptor_t;\n\ntypedef struct\n{\n  mach_port_t name;\n\n\n  mach_msg_size_t pad1;\n\n  unsigned int pad2 : 16;\n  mach_msg_type_name_t disposition : 8;\n  mach_msg_descriptor_type_t type : 8;\n} mach_msg_port_descriptor_t;\n\ntypedef struct\n{\n  uint32_t address;\n  mach_msg_size_t size;\n  boolean_t deallocate: 8;\n  mach_msg_copy_options_t copy: 8;\n  unsigned int pad1: 8;\n  mach_msg_descriptor_type_t type: 8;\n} mach_msg_ool_descriptor32_t;\n\ntypedef struct\n{\n  uint64_t address;\n  boolean_t deallocate: 8;\n  mach_msg_copy_options_t copy: 8;\n  unsigned int pad1: 8;\n  mach_msg_descriptor_type_t type: 8;\n  mach_msg_size_t size;\n} mach_msg_ool_descriptor64_t;\n\ntypedef struct\n{\n  void* address;\n\n\n\n  boolean_t deallocate: 8;\n  mach_msg_copy_options_t copy: 8;\n  unsigned int pad1: 8;\n  mach_msg_descriptor_type_t type: 8;\n\n  mach_msg_size_t size;\n\n\n\n\n} mach_msg_ool_descriptor_t;\n\ntypedef struct\n{\n  uint32_t address;\n  mach_msg_size_t count;\n  boolean_t deallocate: 8;\n  mach_msg_copy_options_t copy: 8;\n  mach_msg_type_name_t disposition : 8;\n  mach_msg_descriptor_type_t type : 8;\n} mach_msg_ool_ports_descriptor32_t;\n\ntypedef struct\n{\n  uint64_t address;\n  boolean_t deallocate: 8;\n  mach_msg_copy_options_t copy: 8;\n  mach_msg_type_name_t disposition : 8;\n  mach_msg_descriptor_type_t type : 8;\n  mach_msg_size_t count;\n} mach_msg_ool_ports_descriptor64_t;\n\ntypedef struct\n{\n  void* address;\n\n\n\n  boolean_t deallocate: 8;\n  mach_msg_copy_options_t copy: 8;\n  mach_msg_type_name_t disposition : 8;\n  mach_msg_descriptor_type_t type : 8;\n\n  mach_msg_size_t count;\n\n\n\n\n} mach_msg_ool_ports_descriptor_t;\n# 330 \"/usr/include/mach/message.h\" 3 4\ntypedef union\n{\n  mach_msg_port_descriptor_t port;\n  mach_msg_ool_descriptor_t out_of_line;\n  mach_msg_ool_ports_descriptor_t ool_ports;\n  mach_msg_type_descriptor_t type;\n} mach_msg_descriptor_t;\n\n\ntypedef struct\n{\n        mach_msg_size_t msgh_descriptor_count;\n} mach_msg_body_t;\n\n\n\n\ntypedef struct\n{\n  mach_msg_bits_t msgh_bits;\n  mach_msg_size_t msgh_size;\n  mach_port_t msgh_remote_port;\n  mach_port_t msgh_local_port;\n  mach_msg_size_t msgh_reserved;\n  mach_msg_id_t msgh_id;\n} mach_msg_header_t;\n\n\n\ntypedef struct\n{\n        mach_msg_header_t header;\n        mach_msg_body_t body;\n} mach_msg_base_t;\n\ntypedef unsigned int mach_msg_trailer_type_t;\n\n\n\ntypedef unsigned int mach_msg_trailer_size_t;\n\ntypedef struct\n{\n  mach_msg_trailer_type_t msgh_trailer_type;\n  mach_msg_trailer_size_t msgh_trailer_size;\n} mach_msg_trailer_t;\n\ntypedef struct\n{\n  mach_msg_trailer_type_t msgh_trailer_type;\n  mach_msg_trailer_size_t msgh_trailer_size;\n  mach_port_seqno_t msgh_seqno;\n} mach_msg_seqno_trailer_t;\n\ntypedef struct\n{\n  unsigned int val[2];\n} security_token_t;\n\ntypedef struct\n{\n  mach_msg_trailer_type_t msgh_trailer_type;\n  mach_msg_trailer_size_t msgh_trailer_size;\n  mach_port_seqno_t msgh_seqno;\n  security_token_t msgh_sender;\n} mach_msg_security_trailer_t;\n# 406 \"/usr/include/mach/message.h\" 3 4\ntypedef struct\n{\n  unsigned int val[8];\n} audit_token_t;\n\ntypedef struct\n{\n  mach_msg_trailer_type_t msgh_trailer_type;\n  mach_msg_trailer_size_t msgh_trailer_size;\n  mach_port_seqno_t msgh_seqno;\n  security_token_t msgh_sender;\n  audit_token_t msgh_audit;\n} mach_msg_audit_trailer_t;\n\ntypedef struct\n{\n  mach_msg_trailer_type_t msgh_trailer_type;\n  mach_msg_trailer_size_t msgh_trailer_size;\n  mach_port_seqno_t msgh_seqno;\n  security_token_t msgh_sender;\n  audit_token_t msgh_audit;\n  mach_vm_address_t msgh_context;\n} mach_msg_context_trailer_t;\n\n\ntypedef struct\n{\n  mach_port_name_t sender;\n} msg_labels_t;\n\n\n\n\n\n\ntypedef struct\n{\n  mach_msg_trailer_type_t msgh_trailer_type;\n  mach_msg_trailer_size_t msgh_trailer_size;\n  mach_port_seqno_t msgh_seqno;\n  security_token_t msgh_sender;\n  audit_token_t msgh_audit;\n  mach_vm_address_t msgh_context;\n  int msgh_ad;\n  msg_labels_t msgh_labels;\n} mach_msg_mac_trailer_t;\n# 464 \"/usr/include/mach/message.h\" 3 4\ntypedef mach_msg_mac_trailer_t mach_msg_max_trailer_t;\n# 474 \"/usr/include/mach/message.h\" 3 4\ntypedef mach_msg_security_trailer_t mach_msg_format_0_trailer_t;\n\n\n\n\n\n\n\nextern security_token_t KERNEL_SECURITY_TOKEN;\n\n\nextern audit_token_t KERNEL_AUDIT_TOKEN;\n\ntypedef integer_t mach_msg_options_t;\n\ntypedef struct\n{\n  mach_msg_header_t header;\n} mach_msg_empty_send_t;\n\ntypedef struct\n{\n  mach_msg_header_t header;\n  mach_msg_trailer_t trailer;\n} mach_msg_empty_rcv_t;\n\ntypedef union\n{\n  mach_msg_empty_send_t send;\n  mach_msg_empty_rcv_t rcv;\n} mach_msg_empty_t;\n\n#pragma pack()\n# 527 \"/usr/include/mach/message.h\" 3 4\ntypedef natural_t mach_msg_type_size_t;\ntypedef natural_t mach_msg_type_number_t;\n# 571 \"/usr/include/mach/message.h\" 3 4\ntypedef integer_t mach_msg_option_t;\n# 648 \"/usr/include/mach/message.h\" 3 4\ntypedef kern_return_t mach_msg_return_t;\n# 731 \"/usr/include/mach/message.h\" 3 4\n\n# 750 \"/usr/include/mach/message.h\" 3 4\nextern mach_msg_return_t mach_msg_overwrite(\n     mach_msg_header_t *msg,\n     mach_msg_option_t option,\n     mach_msg_size_t send_size,\n     mach_msg_size_t rcv_size,\n     mach_port_name_t rcv_name,\n     mach_msg_timeout_t timeout,\n     mach_port_name_t notify,\n     mach_msg_header_t *rcv_msg,\n     mach_msg_size_t rcv_limit);\n# 770 \"/usr/include/mach/message.h\" 3 4\nextern mach_msg_return_t mach_msg(\n     mach_msg_header_t *msg,\n     mach_msg_option_t option,\n     mach_msg_size_t send_size,\n     mach_msg_size_t rcv_size,\n     mach_port_name_t rcv_name,\n     mach_msg_timeout_t timeout,\n     mach_port_name_t notify);\n\n\n\n# 31 \"/usr/include/dispatch/source.h\" 2 3 4\n# 50 \"/usr/include/dispatch/source.h\" 3 4\ntypedef struct dispatch_source_s *dispatch_source_t;;\n# 63 \"/usr/include/dispatch/source.h\" 3 4\ntypedef const struct dispatch_source_type_s *dispatch_source_type_t;\n# 73 \"/usr/include/dispatch/source.h\" 3 4\n__attribute__((visibility(\"default\")))\nextern const struct dispatch_source_type_s _dispatch_source_type_data_add;\n# 85 \"/usr/include/dispatch/source.h\" 3 4\n__attribute__((visibility(\"default\")))\nextern const struct dispatch_source_type_s _dispatch_source_type_data_or;\n# 96 \"/usr/include/dispatch/source.h\" 3 4\n__attribute__((visibility(\"default\")))\nextern const struct dispatch_source_type_s _dispatch_source_type_mach_send;\n# 106 \"/usr/include/dispatch/source.h\" 3 4\n__attribute__((visibility(\"default\")))\nextern const struct dispatch_source_type_s _dispatch_source_type_mach_recv;\n# 117 \"/usr/include/dispatch/source.h\" 3 4\n__attribute__((visibility(\"default\")))\nextern const struct dispatch_source_type_s _dispatch_source_type_proc;\n# 128 \"/usr/include/dispatch/source.h\" 3 4\n__attribute__((visibility(\"default\")))\nextern const struct dispatch_source_type_s _dispatch_source_type_read;\n# 138 \"/usr/include/dispatch/source.h\" 3 4\n__attribute__((visibility(\"default\")))\nextern const struct dispatch_source_type_s _dispatch_source_type_signal;\n# 149 \"/usr/include/dispatch/source.h\" 3 4\n__attribute__((visibility(\"default\")))\nextern const struct dispatch_source_type_s _dispatch_source_type_timer;\n# 160 \"/usr/include/dispatch/source.h\" 3 4\n__attribute__((visibility(\"default\")))\nextern const struct dispatch_source_type_s _dispatch_source_type_vnode;\n# 171 \"/usr/include/dispatch/source.h\" 3 4\n__attribute__((visibility(\"default\")))\nextern const struct dispatch_source_type_s _dispatch_source_type_write;\n\n\n\n\n\n\n\nenum {\n DISPATCH_MACH_SEND_DEAD = 0x1,\n};\n# 200 \"/usr/include/dispatch/source.h\" 3 4\nenum {\n DISPATCH_PROC_EXIT = 0x80000000,\n DISPATCH_PROC_FORK = 0x40000000,\n DISPATCH_PROC_EXEC = 0x20000000,\n DISPATCH_PROC_SIGNAL = 0x08000000,\n};\n# 231 \"/usr/include/dispatch/source.h\" 3 4\nenum {\n DISPATCH_VNODE_DELETE = 0x1,\n DISPATCH_VNODE_WRITE = 0x2,\n DISPATCH_VNODE_EXTEND = 0x4,\n DISPATCH_VNODE_ATTRIB = 0x8,\n DISPATCH_VNODE_LINK = 0x10,\n DISPATCH_VNODE_RENAME = 0x20,\n DISPATCH_VNODE_REVOKE = 0x40,\n};\n\n\n# 272 \"/usr/include/dispatch/source.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__malloc__)) __attribute__((__nothrow__))\ndispatch_source_t\ndispatch_source_create(dispatch_source_type_t type,\n uintptr_t handle,\n unsigned long mask,\n dispatch_queue_t queue);\n# 294 \"/usr/include/dispatch/source.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nonnull__(1))) __attribute__((__nothrow__))\nvoid\ndispatch_source_set_event_handler(dispatch_source_t source,\n dispatch_block_t handler);\n# 317 \"/usr/include/dispatch/source.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nonnull__(1))) __attribute__((__nothrow__))\nvoid\ndispatch_source_set_event_handler_f(dispatch_source_t source,\n dispatch_function_t handler);\n# 351 \"/usr/include/dispatch/source.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nonnull__(1))) __attribute__((__nothrow__))\nvoid\ndispatch_source_set_cancel_handler(dispatch_source_t source,\n dispatch_block_t cancel_handler);\n# 376 \"/usr/include/dispatch/source.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nonnull__(1))) __attribute__((__nothrow__))\nvoid\ndispatch_source_set_cancel_handler_f(dispatch_source_t source,\n dispatch_function_t cancel_handler);\n# 404 \"/usr/include/dispatch/source.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nonnull__)) __attribute__((__nothrow__))\nvoid\ndispatch_source_cancel(dispatch_source_t source);\n# 422 \"/usr/include/dispatch/source.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nonnull__)) __attribute__((__nothrow__))\nlong\ndispatch_source_testcancel(dispatch_source_t source);\n# 451 \"/usr/include/dispatch/source.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nonnull__)) __attribute__((__warn_unused_result__)) __attribute__((__pure__)) __attribute__((__nothrow__))\nuintptr_t\ndispatch_source_get_handle(dispatch_source_t source);\n# 480 \"/usr/include/dispatch/source.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nonnull__)) __attribute__((__warn_unused_result__)) __attribute__((__pure__)) __attribute__((__nothrow__))\nunsigned long\ndispatch_source_get_mask(dispatch_source_t source);\n# 516 \"/usr/include/dispatch/source.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nonnull__)) __attribute__((__warn_unused_result__)) __attribute__((__pure__)) __attribute__((__nothrow__))\nunsigned long\ndispatch_source_get_data(dispatch_source_t source);\n# 537 \"/usr/include/dispatch/source.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nonnull__)) __attribute__((__nothrow__))\nvoid\ndispatch_source_merge_data(dispatch_source_t source, unsigned long value);\n# 573 \"/usr/include/dispatch/source.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nonnull__)) __attribute__((__nothrow__))\nvoid\ndispatch_source_set_timer(dispatch_source_t source,\n dispatch_time_t start,\n uint64_t interval,\n uint64_t leeway);\n\n\n# 44 \"/usr/include/dispatch/dispatch.h\" 2 3 4\n# 1 \"/usr/include/dispatch/group.h\" 1 3 4\n# 34 \"/usr/include/dispatch/group.h\" 3 4\ntypedef struct dispatch_group_s *dispatch_group_t;;\n\n\n# 52 \"/usr/include/dispatch/group.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__warn_unused_result__))\ndispatch_group_t\ndispatch_group_create(void);\n# 81 \"/usr/include/dispatch/group.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nonnull__))\nvoid\ndispatch_group_async(dispatch_group_t group,\n dispatch_queue_t queue,\n dispatch_block_t block);\n# 115 \"/usr/include/dispatch/group.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nonnull__(1))) __attribute__((__nonnull__(2))) __attribute__((__nonnull__(4)))\nvoid\ndispatch_group_async_f(dispatch_group_t group,\n dispatch_queue_t queue,\n void *context,\n dispatch_function_t work);\n# 158 \"/usr/include/dispatch/group.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nonnull__))\nlong\ndispatch_group_wait(dispatch_group_t group, dispatch_time_t timeout);\n# 194 \"/usr/include/dispatch/group.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nonnull__))\nvoid\ndispatch_group_notify(dispatch_group_t group,\n dispatch_queue_t queue,\n dispatch_block_t block);\n# 224 \"/usr/include/dispatch/group.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nonnull__(1))) __attribute__((__nonnull__(2))) __attribute__((__nonnull__(4)))\nvoid\ndispatch_group_notify_f(dispatch_group_t group,\n dispatch_queue_t queue,\n void *context,\n dispatch_function_t work);\n# 247 \"/usr/include/dispatch/group.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nothrow__)) __attribute__((__nonnull__))\nvoid\ndispatch_group_enter(dispatch_group_t group);\n# 266 \"/usr/include/dispatch/group.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nothrow__)) __attribute__((__nonnull__))\nvoid\ndispatch_group_leave(dispatch_group_t group);\n\n\n# 45 \"/usr/include/dispatch/dispatch.h\" 2 3 4\n# 1 \"/usr/include/dispatch/semaphore.h\" 1 3 4\n# 35 \"/usr/include/dispatch/semaphore.h\" 3 4\ntypedef struct dispatch_semaphore_s *dispatch_semaphore_t;;\n\n\n# 58 \"/usr/include/dispatch/semaphore.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__malloc__)) __attribute__((__nothrow__))\ndispatch_semaphore_t\ndispatch_semaphore_create(long value);\n# 83 \"/usr/include/dispatch/semaphore.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nonnull__)) __attribute__((__nothrow__))\nlong\ndispatch_semaphore_wait(dispatch_semaphore_t dsema, dispatch_time_t timeout);\n# 105 \"/usr/include/dispatch/semaphore.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nonnull__)) __attribute__((__nothrow__))\nlong\ndispatch_semaphore_signal(dispatch_semaphore_t dsema);\n\n\n# 46 \"/usr/include/dispatch/dispatch.h\" 2 3 4\n# 1 \"/usr/include/dispatch/once.h\" 1 3 4\n# 29 \"/usr/include/dispatch/once.h\" 3 4\n\n# 38 \"/usr/include/dispatch/once.h\" 3 4\ntypedef long dispatch_once_t;\n# 58 \"/usr/include/dispatch/once.h\" 3 4\n__attribute__((visibility(\"default\")))\n__attribute__((__nonnull__)) __attribute__((__nothrow__))\nvoid\ndispatch_once(dispatch_once_t *predicate, dispatch_block_t block);\n\n\n\n\n\n__attribute__((visibility(\"default\")))\n__attribute__((__nonnull__(1))) __attribute__((__nonnull__(3))) __attribute__((__nothrow__))\nvoid\ndispatch_once_f(dispatch_once_t *predicate, void *context, void (*function)(void *));\n\n\n\n\n\n# 47 \"/usr/include/dispatch/dispatch.h\" 2 3 4\n# 13 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFMessagePort.h\" 2 3\n\n\n\n\ntypedef struct __CFMessagePort * CFMessagePortRef;\n\nenum {\n    kCFMessagePortSuccess = 0,\n    kCFMessagePortSendTimeout = -1,\n    kCFMessagePortReceiveTimeout = -2,\n    kCFMessagePortIsInvalid = -3,\n    kCFMessagePortTransportError = -4,\n    kCFMessagePortBecameInvalidError = -5\n};\n\ntypedef struct {\n    CFIndex version;\n    void * info;\n    const void *(*retain)(const void *info);\n    void (*release)(const void *info);\n    CFStringRef (*copyDescription)(const void *info);\n} CFMessagePortContext;\n\ntypedef CFDataRef (*CFMessagePortCallBack)(CFMessagePortRef local, SInt32 msgid, CFDataRef data, void *info);\n\ntypedef void (*CFMessagePortInvalidationCallBack)(CFMessagePortRef ms, void *info);\n\nextern CFTypeID CFMessagePortGetTypeID(void);\n\nextern CFMessagePortRef CFMessagePortCreateLocal(CFAllocatorRef allocator, CFStringRef name, CFMessagePortCallBack callout, CFMessagePortContext *context, Boolean *shouldFreeInfo);\nextern CFMessagePortRef CFMessagePortCreateRemote(CFAllocatorRef allocator, CFStringRef name);\n\nextern Boolean CFMessagePortIsRemote(CFMessagePortRef ms);\nextern CFStringRef CFMessagePortGetName(CFMessagePortRef ms);\nextern Boolean CFMessagePortSetName(CFMessagePortRef ms, CFStringRef newName);\nextern void CFMessagePortGetContext(CFMessagePortRef ms, CFMessagePortContext *context);\nextern void CFMessagePortInvalidate(CFMessagePortRef ms);\nextern Boolean CFMessagePortIsValid(CFMessagePortRef ms);\nextern CFMessagePortInvalidationCallBack CFMessagePortGetInvalidationCallBack(CFMessagePortRef ms);\nextern void CFMessagePortSetInvalidationCallBack(CFMessagePortRef ms, CFMessagePortInvalidationCallBack callout);\n\n\nextern SInt32 CFMessagePortSendRequest(CFMessagePortRef remote, SInt32 msgid, CFDataRef data, CFTimeInterval sendTimeout, CFTimeInterval rcvTimeout, CFStringRef replyMode, CFDataRef *returnData);\n\nextern CFRunLoopSourceRef CFMessagePortCreateRunLoopSource(CFAllocatorRef allocator, CFMessagePortRef local, CFIndex order);\n\n\nextern void CFMessagePortSetDispatchQueue(CFMessagePortRef ms, dispatch_queue_t queue) ;\n\n\n\n# 54 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFNumber.h\" 1 3\n# 10 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFNumber.h\" 3\n\n\ntypedef const struct __CFBoolean * CFBooleanRef;\n\nextern\nconst CFBooleanRef kCFBooleanTrue;\nextern\nconst CFBooleanRef kCFBooleanFalse;\n\nextern\nCFTypeID CFBooleanGetTypeID(void);\n\nextern\nBoolean CFBooleanGetValue(CFBooleanRef boolean);\n\nenum {\n\n    kCFNumberSInt8Type = 1,\n    kCFNumberSInt16Type = 2,\n    kCFNumberSInt32Type = 3,\n    kCFNumberSInt64Type = 4,\n    kCFNumberFloat32Type = 5,\n    kCFNumberFloat64Type = 6,\n\n    kCFNumberCharType = 7,\n    kCFNumberShortType = 8,\n    kCFNumberIntType = 9,\n    kCFNumberLongType = 10,\n    kCFNumberLongLongType = 11,\n    kCFNumberFloatType = 12,\n    kCFNumberDoubleType = 13,\n\n    kCFNumberCFIndexType = 14,\n\n    kCFNumberNSIntegerType = 15,\n    kCFNumberCGFloatType = 16,\n    kCFNumberMaxType = 16\n\n\n\n};\ntypedef CFIndex CFNumberType;\n\ntypedef const struct __CFNumber * CFNumberRef;\n\nextern\nconst CFNumberRef kCFNumberPositiveInfinity;\nextern\nconst CFNumberRef kCFNumberNegativeInfinity;\nextern\nconst CFNumberRef kCFNumberNaN;\n\nextern\nCFTypeID CFNumberGetTypeID(void);\n# 72 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFNumber.h\" 3\nextern\nCFNumberRef CFNumberCreate(CFAllocatorRef allocator, CFNumberType theType, const void *valuePtr);\n\n\n\n\n\nextern\nCFNumberType CFNumberGetType(CFNumberRef number);\n\n\n\n\nextern\nCFIndex CFNumberGetByteSize(CFNumberRef number);\n\n\n\n\n\nextern\nBoolean CFNumberIsFloatType(CFNumberRef number);\n# 103 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFNumber.h\" 3\nextern\nBoolean CFNumberGetValue(CFNumberRef number, CFNumberType theType, void *valuePtr);\n# 121 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFNumber.h\" 3\nextern\nCFComparisonResult CFNumberCompare(CFNumberRef number, CFNumberRef otherNumber, void *context);\n\n\n# 55 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFNumberFormatter.h\" 1 3\n# 14 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFNumberFormatter.h\" 3\n\n\ntypedef struct __CFNumberFormatter *CFNumberFormatterRef;\n\n\n\nextern\nCFTypeID CFNumberFormatterGetTypeID(void) ;\n\nenum {\n kCFNumberFormatterNoStyle = 0,\n kCFNumberFormatterDecimalStyle = 1,\n kCFNumberFormatterCurrencyStyle = 2,\n kCFNumberFormatterPercentStyle = 3,\n kCFNumberFormatterScientificStyle = 4,\n kCFNumberFormatterSpellOutStyle = 5\n};\ntypedef CFIndex CFNumberFormatterStyle;\n\n\nextern\nCFNumberFormatterRef CFNumberFormatterCreate(CFAllocatorRef allocator, CFLocaleRef locale, CFNumberFormatterStyle style) ;\n\n\n\nextern\nCFLocaleRef CFNumberFormatterGetLocale(CFNumberFormatterRef formatter) ;\n\nextern\nCFNumberFormatterStyle CFNumberFormatterGetStyle(CFNumberFormatterRef formatter) ;\n\n\nextern\nCFStringRef CFNumberFormatterGetFormat(CFNumberFormatterRef formatter) ;\n\nextern\nvoid CFNumberFormatterSetFormat(CFNumberFormatterRef formatter, CFStringRef formatString) ;\n# 59 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFNumberFormatter.h\" 3\nextern\nCFStringRef CFNumberFormatterCreateStringWithNumber(CFAllocatorRef allocator, CFNumberFormatterRef formatter, CFNumberRef number) ;\n\nextern\nCFStringRef CFNumberFormatterCreateStringWithValue(CFAllocatorRef allocator, CFNumberFormatterRef formatter, CFNumberType numberType, const void *valuePtr) ;\n\n\n\n\nenum {\n    kCFNumberFormatterParseIntegersOnly = 1\n};\ntypedef CFOptionFlags CFNumberFormatterOptionFlags;\n\nextern\nCFNumberRef CFNumberFormatterCreateNumberFromString(CFAllocatorRef allocator, CFNumberFormatterRef formatter, CFStringRef string, CFRange *rangep, CFOptionFlags options) ;\n\nextern\nBoolean CFNumberFormatterGetValueFromString(CFNumberFormatterRef formatter, CFStringRef string, CFRange *rangep, CFNumberType numberType, void *valuePtr) ;\n# 89 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFNumberFormatter.h\" 3\nextern\nvoid CFNumberFormatterSetProperty(CFNumberFormatterRef formatter, CFStringRef key, CFTypeRef value) ;\n\nextern\nCFTypeRef CFNumberFormatterCopyProperty(CFNumberFormatterRef formatter, CFStringRef key) ;\n\n\n\nextern const CFStringRef kCFNumberFormatterCurrencyCode ;\nextern const CFStringRef kCFNumberFormatterDecimalSeparator ;\nextern const CFStringRef kCFNumberFormatterCurrencyDecimalSeparator ;\nextern const CFStringRef kCFNumberFormatterAlwaysShowDecimalSeparator ;\nextern const CFStringRef kCFNumberFormatterGroupingSeparator ;\nextern const CFStringRef kCFNumberFormatterUseGroupingSeparator ;\nextern const CFStringRef kCFNumberFormatterPercentSymbol ;\nextern const CFStringRef kCFNumberFormatterZeroSymbol ;\nextern const CFStringRef kCFNumberFormatterNaNSymbol ;\nextern const CFStringRef kCFNumberFormatterInfinitySymbol ;\nextern const CFStringRef kCFNumberFormatterMinusSign ;\nextern const CFStringRef kCFNumberFormatterPlusSign ;\nextern const CFStringRef kCFNumberFormatterCurrencySymbol ;\nextern const CFStringRef kCFNumberFormatterExponentSymbol ;\nextern const CFStringRef kCFNumberFormatterMinIntegerDigits ;\nextern const CFStringRef kCFNumberFormatterMaxIntegerDigits ;\nextern const CFStringRef kCFNumberFormatterMinFractionDigits ;\nextern const CFStringRef kCFNumberFormatterMaxFractionDigits ;\nextern const CFStringRef kCFNumberFormatterGroupingSize ;\nextern const CFStringRef kCFNumberFormatterSecondaryGroupingSize ;\nextern const CFStringRef kCFNumberFormatterRoundingMode ;\nextern const CFStringRef kCFNumberFormatterRoundingIncrement ;\nextern const CFStringRef kCFNumberFormatterFormatWidth ;\nextern const CFStringRef kCFNumberFormatterPaddingPosition ;\nextern const CFStringRef kCFNumberFormatterPaddingCharacter ;\nextern const CFStringRef kCFNumberFormatterDefaultFormat ;\nextern const CFStringRef kCFNumberFormatterMultiplier ;\nextern const CFStringRef kCFNumberFormatterPositivePrefix ;\nextern const CFStringRef kCFNumberFormatterPositiveSuffix ;\nextern const CFStringRef kCFNumberFormatterNegativePrefix ;\nextern const CFStringRef kCFNumberFormatterNegativeSuffix ;\nextern const CFStringRef kCFNumberFormatterPerMillSymbol ;\nextern const CFStringRef kCFNumberFormatterInternationalCurrencySymbol ;\nextern const CFStringRef kCFNumberFormatterCurrencyGroupingSeparator ;\nextern const CFStringRef kCFNumberFormatterIsLenient ;\nextern const CFStringRef kCFNumberFormatterUseSignificantDigits ;\nextern const CFStringRef kCFNumberFormatterMinSignificantDigits ;\nextern const CFStringRef kCFNumberFormatterMaxSignificantDigits ;\n\nenum {\n    kCFNumberFormatterRoundCeiling = 0,\n    kCFNumberFormatterRoundFloor = 1,\n    kCFNumberFormatterRoundDown = 2,\n    kCFNumberFormatterRoundUp = 3,\n    kCFNumberFormatterRoundHalfEven = 4,\n    kCFNumberFormatterRoundHalfDown = 5,\n    kCFNumberFormatterRoundHalfUp = 6\n};\ntypedef CFIndex CFNumberFormatterRoundingMode;\n\nenum {\n    kCFNumberFormatterPadBeforePrefix = 0,\n    kCFNumberFormatterPadAfterPrefix = 1,\n    kCFNumberFormatterPadBeforeSuffix = 2,\n    kCFNumberFormatterPadAfterSuffix = 3\n};\ntypedef CFIndex CFNumberFormatterPadPosition;\n\n\nextern\nBoolean CFNumberFormatterGetDecimalInfoForCurrencyCode(CFStringRef currencyCode, int32_t *defaultFractionDigits, double *roundingIncrement) ;\n\n\n\n\n\n\n\n# 56 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFPlugIn.h\" 1 3\n# 17 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFPlugIn.h\" 3\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFUUID.h\" 1 3\n# 11 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFUUID.h\" 3\n\n\ntypedef const struct __CFUUID * CFUUIDRef;\n\ntypedef struct {\n    UInt8 byte0;\n    UInt8 byte1;\n    UInt8 byte2;\n    UInt8 byte3;\n    UInt8 byte4;\n    UInt8 byte5;\n    UInt8 byte6;\n    UInt8 byte7;\n    UInt8 byte8;\n    UInt8 byte9;\n    UInt8 byte10;\n    UInt8 byte11;\n    UInt8 byte12;\n    UInt8 byte13;\n    UInt8 byte14;\n    UInt8 byte15;\n} CFUUIDBytes;\n\n\n\n\n\n\nextern\nCFTypeID CFUUIDGetTypeID(void);\n\nextern\nCFUUIDRef CFUUIDCreate(CFAllocatorRef alloc);\n\n\nextern\nCFUUIDRef CFUUIDCreateWithBytes(CFAllocatorRef alloc, UInt8 byte0, UInt8 byte1, UInt8 byte2, UInt8 byte3, UInt8 byte4, UInt8 byte5, UInt8 byte6, UInt8 byte7, UInt8 byte8, UInt8 byte9, UInt8 byte10, UInt8 byte11, UInt8 byte12, UInt8 byte13, UInt8 byte14, UInt8 byte15);\n\n\nextern\nCFUUIDRef CFUUIDCreateFromString(CFAllocatorRef alloc, CFStringRef uuidStr);\n\n\nextern\nCFStringRef CFUUIDCreateString(CFAllocatorRef alloc, CFUUIDRef uuid);\n\n\nextern\nCFUUIDRef CFUUIDGetConstantUUIDWithBytes(CFAllocatorRef alloc, UInt8 byte0, UInt8 byte1, UInt8 byte2, UInt8 byte3, UInt8 byte4, UInt8 byte5, UInt8 byte6, UInt8 byte7, UInt8 byte8, UInt8 byte9, UInt8 byte10, UInt8 byte11, UInt8 byte12, UInt8 byte13, UInt8 byte14, UInt8 byte15);\n\n\nextern\nCFUUIDBytes CFUUIDGetUUIDBytes(CFUUIDRef uuid);\n\nextern\nCFUUIDRef CFUUIDCreateFromUUIDBytes(CFAllocatorRef alloc, CFUUIDBytes bytes);\n\n\n# 18 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFPlugIn.h\" 2 3\n\n\n\n\n\nextern\nconst CFStringRef kCFPlugInDynamicRegistrationKey;\nextern\nconst CFStringRef kCFPlugInDynamicRegisterFunctionKey;\nextern\nconst CFStringRef kCFPlugInUnloadFunctionKey;\nextern\nconst CFStringRef kCFPlugInFactoriesKey;\nextern\nconst CFStringRef kCFPlugInTypesKey;\n\n\n\n\ntypedef void (*CFPlugInDynamicRegisterFunction)(CFPlugInRef plugIn);\ntypedef void (*CFPlugInUnloadFunction)(CFPlugInRef plugIn);\ntypedef void *(*CFPlugInFactoryFunction)(CFAllocatorRef allocator, CFUUIDRef typeUUID);\n\n\n\nextern\nCFTypeID CFPlugInGetTypeID(void);\n\nextern\nCFPlugInRef CFPlugInCreate(CFAllocatorRef allocator, CFURLRef plugInURL);\n\n\nextern\nCFBundleRef CFPlugInGetBundle(CFPlugInRef plugIn);\n\n\n\n\n\n\n\nextern\nvoid CFPlugInSetLoadOnDemand(CFPlugInRef plugIn, Boolean flag);\n\nextern\nBoolean CFPlugInIsLoadOnDemand(CFPlugInRef plugIn);\n\n\n\n\n\nextern\nCFArrayRef CFPlugInFindFactoriesForPlugInType(CFUUIDRef typeUUID);\n\n\nextern\nCFArrayRef CFPlugInFindFactoriesForPlugInTypeInPlugIn(CFUUIDRef typeUUID, CFPlugInRef plugIn);\n\n\nextern\nvoid *CFPlugInInstanceCreate(CFAllocatorRef allocator, CFUUIDRef factoryUUID, CFUUIDRef typeUUID);\n\n\n\n\n\n\nextern\nBoolean CFPlugInRegisterFactoryFunction(CFUUIDRef factoryUUID, CFPlugInFactoryFunction func);\n\nextern\nBoolean CFPlugInRegisterFactoryFunctionByName(CFUUIDRef factoryUUID, CFPlugInRef plugIn, CFStringRef functionName);\n\nextern\nBoolean CFPlugInUnregisterFactory(CFUUIDRef factoryUUID);\n\nextern\nBoolean CFPlugInRegisterPlugInType(CFUUIDRef factoryUUID, CFUUIDRef typeUUID);\n\nextern\nBoolean CFPlugInUnregisterPlugInType(CFUUIDRef factoryUUID, CFUUIDRef typeUUID);\n\n\n\n\n\nextern\nvoid CFPlugInAddInstanceForFactory(CFUUIDRef factoryID);\n\nextern\nvoid CFPlugInRemoveInstanceForFactory(CFUUIDRef factoryID);\n\n\n\n\ntypedef struct __CFPlugInInstance *CFPlugInInstanceRef;\n\ntypedef Boolean (*CFPlugInInstanceGetInterfaceFunction)(CFPlugInInstanceRef instance, CFStringRef interfaceName, void **ftbl);\ntypedef void (*CFPlugInInstanceDeallocateInstanceDataFunction)(void *instanceData);\n\nextern\nBoolean CFPlugInInstanceGetInterfaceFunctionTable(CFPlugInInstanceRef instance, CFStringRef interfaceName, void **ftbl);\nextern\nCFStringRef CFPlugInInstanceGetFactoryName(CFPlugInInstanceRef instance);\nextern\nvoid *CFPlugInInstanceGetInstanceData(CFPlugInInstanceRef instance);\nextern\nCFTypeID CFPlugInInstanceGetTypeID(void);\nextern\nCFPlugInInstanceRef CFPlugInInstanceCreateWithInstanceDataSize(CFAllocatorRef allocator, CFIndex instanceDataSize, CFPlugInInstanceDeallocateInstanceDataFunction deallocateInstanceFunction, CFStringRef factoryName, CFPlugInInstanceGetInterfaceFunction getInterfaceFunction);\n\n\n# 57 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFPreferences.h\" 1 3\n# 12 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFPreferences.h\" 3\n\n\nextern\nconst CFStringRef kCFPreferencesAnyApplication;\nextern\nconst CFStringRef kCFPreferencesCurrentApplication;\nextern\nconst CFStringRef kCFPreferencesAnyHost;\nextern\nconst CFStringRef kCFPreferencesCurrentHost;\nextern\nconst CFStringRef kCFPreferencesAnyUser;\nextern\nconst CFStringRef kCFPreferencesCurrentUser;\n# 41 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFPreferences.h\" 3\nextern\nCFPropertyListRef CFPreferencesCopyAppValue(CFStringRef key, CFStringRef applicationID);\n\n\n\n\nextern\nBoolean CFPreferencesGetAppBooleanValue(CFStringRef key, CFStringRef applicationID, Boolean *keyExistsAndHasValidFormat);\n\n\n\n\nextern\nCFIndex CFPreferencesGetAppIntegerValue(CFStringRef key, CFStringRef applicationID, Boolean *keyExistsAndHasValidFormat);\n\n\n\n\nextern\nvoid CFPreferencesSetAppValue(CFStringRef key, CFPropertyListRef value, CFStringRef applicationID);\n\n\n\n\n\nextern\nvoid CFPreferencesAddSuitePreferencesToApp(CFStringRef applicationID, CFStringRef suiteID);\n\nextern\nvoid CFPreferencesRemoveSuitePreferencesFromApp(CFStringRef applicationID, CFStringRef suiteID);\n\n\n\nextern\nBoolean CFPreferencesAppSynchronize(CFStringRef applicationID);\n\n\n\n\n\nextern\nCFPropertyListRef CFPreferencesCopyValue(CFStringRef key, CFStringRef applicationID, CFStringRef userName, CFStringRef hostName);\n\n\n\n\n\nextern\nCFDictionaryRef CFPreferencesCopyMultiple(CFArrayRef keysToFetch, CFStringRef applicationID, CFStringRef userName, CFStringRef hostName);\n\n\n\nextern\nvoid CFPreferencesSetValue(CFStringRef key, CFPropertyListRef value, CFStringRef applicationID, CFStringRef userName, CFStringRef hostName);\n\n\n\nextern\nvoid CFPreferencesSetMultiple(CFDictionaryRef keysToSet, CFArrayRef keysToRemove, CFStringRef applicationID, CFStringRef userName, CFStringRef hostName);\n\nextern\nBoolean CFPreferencesSynchronize(CFStringRef applicationID, CFStringRef userName, CFStringRef hostName);\n\n\n\n\n\nextern\nCFArrayRef CFPreferencesCopyApplicationList(CFStringRef userName, CFStringRef hostName);\n\n\n\n\nextern\nCFArrayRef CFPreferencesCopyKeyList(CFStringRef applicationID, CFStringRef userName, CFStringRef hostName);\n# 124 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFPreferences.h\" 3\nextern\nBoolean CFPreferencesAppValueIsForced(CFStringRef key, CFStringRef applicationID);\n\n\n\n\n\n# 58 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFPropertyList.h\" 1 3\n# 11 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFPropertyList.h\" 3\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFStream.h\" 1 3\n# 13 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFStream.h\" 3\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFSocket.h\" 1 3\n# 13 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFSocket.h\" 3\ntypedef int CFSocketNativeHandle;\n\n\n\n\n\n\n\ntypedef struct __CFSocket * CFSocketRef;\n# 101 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFSocket.h\" 3\nenum {\n    kCFSocketSuccess = 0,\n    kCFSocketError = -1,\n    kCFSocketTimeout = -2\n};\ntypedef CFIndex CFSocketError;\n\ntypedef struct {\n    SInt32 protocolFamily;\n    SInt32 socketType;\n    SInt32 protocol;\n    CFDataRef address;\n} CFSocketSignature;\n\n\nenum {\n    kCFSocketNoCallBack = 0,\n    kCFSocketReadCallBack = 1,\n    kCFSocketAcceptCallBack = 2,\n    kCFSocketDataCallBack = 3,\n    kCFSocketConnectCallBack = 4\n\n    ,\n    kCFSocketWriteCallBack = 8\n\n};\ntypedef CFOptionFlags CFSocketCallBackType;\n\n\n\nenum {\n    kCFSocketAutomaticallyReenableReadCallBack = 1,\n    kCFSocketAutomaticallyReenableAcceptCallBack = 2,\n    kCFSocketAutomaticallyReenableDataCallBack = 3,\n    kCFSocketAutomaticallyReenableWriteCallBack = 8,\n\n    kCFSocketLeaveErrors = 64,\n\n    kCFSocketCloseOnInvalidate = 128\n};\n\n\ntypedef void (*CFSocketCallBack)(CFSocketRef s, CFSocketCallBackType type, CFDataRef address, const void *data, void *info);\n\n\ntypedef struct {\n    CFIndex version;\n    void * info;\n    const void *(*retain)(const void *info);\n    void (*release)(const void *info);\n    CFStringRef (*copyDescription)(const void *info);\n} CFSocketContext;\n\nextern CFTypeID CFSocketGetTypeID(void);\n\nextern CFSocketRef CFSocketCreate(CFAllocatorRef allocator, SInt32 protocolFamily, SInt32 socketType, SInt32 protocol, CFOptionFlags callBackTypes, CFSocketCallBack callout, const CFSocketContext *context);\nextern CFSocketRef CFSocketCreateWithNative(CFAllocatorRef allocator, CFSocketNativeHandle sock, CFOptionFlags callBackTypes, CFSocketCallBack callout, const CFSocketContext *context);\nextern CFSocketRef CFSocketCreateWithSocketSignature(CFAllocatorRef allocator, const CFSocketSignature *signature, CFOptionFlags callBackTypes, CFSocketCallBack callout, const CFSocketContext *context);\nextern CFSocketRef CFSocketCreateConnectedToSocketSignature(CFAllocatorRef allocator, const CFSocketSignature *signature, CFOptionFlags callBackTypes, CFSocketCallBack callout, const CFSocketContext *context, CFTimeInterval timeout);\n\n\nextern CFSocketError CFSocketSetAddress(CFSocketRef s, CFDataRef address);\nextern CFSocketError CFSocketConnectToAddress(CFSocketRef s, CFDataRef address, CFTimeInterval timeout);\nextern void CFSocketInvalidate(CFSocketRef s);\n\nextern Boolean CFSocketIsValid(CFSocketRef s);\nextern CFDataRef CFSocketCopyAddress(CFSocketRef s);\nextern CFDataRef CFSocketCopyPeerAddress(CFSocketRef s);\nextern void CFSocketGetContext(CFSocketRef s, CFSocketContext *context);\nextern CFSocketNativeHandle CFSocketGetNative(CFSocketRef s);\n\nextern CFRunLoopSourceRef CFSocketCreateRunLoopSource(CFAllocatorRef allocator, CFSocketRef s, CFIndex order);\n\n\nextern CFOptionFlags CFSocketGetSocketFlags(CFSocketRef s);\nextern void CFSocketSetSocketFlags(CFSocketRef s, CFOptionFlags flags);\nextern void CFSocketDisableCallBacks(CFSocketRef s, CFOptionFlags callBackTypes);\nextern void CFSocketEnableCallBacks(CFSocketRef s, CFOptionFlags callBackTypes);\n\n\n\nextern CFSocketError CFSocketSendData(CFSocketRef s, CFDataRef address, CFDataRef data, CFTimeInterval timeout);\n# 201 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFSocket.h\" 3\nextern CFSocketError CFSocketRegisterValue(const CFSocketSignature *nameServerSignature, CFTimeInterval timeout, CFStringRef name, CFPropertyListRef value);\nextern CFSocketError CFSocketCopyRegisteredValue(const CFSocketSignature *nameServerSignature, CFTimeInterval timeout, CFStringRef name, CFPropertyListRef *value, CFDataRef *nameServerAddress);\n\nextern CFSocketError CFSocketRegisterSocketSignature(const CFSocketSignature *nameServerSignature, CFTimeInterval timeout, CFStringRef name, const CFSocketSignature *signature);\nextern CFSocketError CFSocketCopyRegisteredSocketSignature(const CFSocketSignature *nameServerSignature, CFTimeInterval timeout, CFStringRef name, CFSocketSignature *signature, CFDataRef *nameServerAddress);\n\nextern CFSocketError CFSocketUnregister(const CFSocketSignature *nameServerSignature, CFTimeInterval timeout, CFStringRef name);\n\nextern void CFSocketSetDefaultNameRegistryPortNumber(UInt16 port);\nextern UInt16 CFSocketGetDefaultNameRegistryPortNumber(void);\n\n\nextern const CFStringRef kCFSocketCommandKey;\nextern const CFStringRef kCFSocketNameKey;\nextern const CFStringRef kCFSocketValueKey;\nextern const CFStringRef kCFSocketResultKey;\nextern const CFStringRef kCFSocketErrorKey;\nextern const CFStringRef kCFSocketRegisterCommand;\nextern const CFStringRef kCFSocketRetrieveCommand;\n\n\n# 14 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFStream.h\" 2 3\n\n\n\n\nenum {\n    kCFStreamStatusNotOpen = 0,\n    kCFStreamStatusOpening,\n    kCFStreamStatusOpen,\n    kCFStreamStatusReading,\n    kCFStreamStatusWriting,\n    kCFStreamStatusAtEnd,\n    kCFStreamStatusClosed,\n    kCFStreamStatusError\n};\ntypedef CFIndex CFStreamStatus;\n\nenum {\n    kCFStreamEventNone = 0,\n    kCFStreamEventOpenCompleted = 1,\n    kCFStreamEventHasBytesAvailable = 2,\n    kCFStreamEventCanAcceptBytes = 4,\n    kCFStreamEventErrorOccurred = 8,\n    kCFStreamEventEndEncountered = 16\n};\ntypedef CFOptionFlags CFStreamEventType;\n\ntypedef struct {\n    CFIndex version;\n    void *info;\n    void *(*retain)(void *info);\n    void (*release)(void *info);\n    CFStringRef (*copyDescription)(void *info);\n} CFStreamClientContext;\n\ntypedef struct __CFReadStream * CFReadStreamRef;\ntypedef struct __CFWriteStream * CFWriteStreamRef;\n\ntypedef void (*CFReadStreamClientCallBack)(CFReadStreamRef stream, CFStreamEventType type, void *clientCallBackInfo);\ntypedef void (*CFWriteStreamClientCallBack)(CFWriteStreamRef stream, CFStreamEventType type, void *clientCallBackInfo);\n\nextern\nCFTypeID CFReadStreamGetTypeID(void);\nextern\nCFTypeID CFWriteStreamGetTypeID(void);\n\n\n\n\nextern\nconst CFStringRef kCFStreamPropertyDataWritten;\n\n\nextern\nCFReadStreamRef CFReadStreamCreateWithBytesNoCopy(CFAllocatorRef alloc, const UInt8 *bytes, CFIndex length, CFAllocatorRef bytesDeallocator);\n\n\nextern\nCFWriteStreamRef CFWriteStreamCreateWithBuffer(CFAllocatorRef alloc, UInt8 *buffer, CFIndex bufferCapacity);\n\n\nextern\nCFWriteStreamRef CFWriteStreamCreateWithAllocatedBuffers(CFAllocatorRef alloc, CFAllocatorRef bufferAllocator);\n\n\nextern\nCFReadStreamRef CFReadStreamCreateWithFile(CFAllocatorRef alloc, CFURLRef fileURL);\nextern\nCFWriteStreamRef CFWriteStreamCreateWithFile(CFAllocatorRef alloc, CFURLRef fileURL);\nextern\nvoid CFStreamCreateBoundPair(CFAllocatorRef alloc, CFReadStreamRef *readStream, CFWriteStreamRef *writeStream, CFIndex transferBufferSize);\n\n\n\nextern\nconst CFStringRef kCFStreamPropertyAppendToFile;\n\n\n\n\nextern const CFStringRef kCFStreamPropertyFileCurrentOffset ;\n\n\n\n\n\n\nextern\nconst CFStringRef kCFStreamPropertySocketNativeHandle;\n\n\nextern\nconst CFStringRef kCFStreamPropertySocketRemoteHostName;\n\n\nextern\nconst CFStringRef kCFStreamPropertySocketRemotePortNumber;\n\n\nextern\nvoid CFStreamCreatePairWithSocket(CFAllocatorRef alloc, CFSocketNativeHandle sock, CFReadStreamRef *readStream, CFWriteStreamRef *writeStream);\nextern\nvoid CFStreamCreatePairWithSocketToHost(CFAllocatorRef alloc, CFStringRef host, UInt32 port, CFReadStreamRef *readStream, CFWriteStreamRef *writeStream);\n\nextern\nvoid CFStreamCreatePairWithPeerSocketSignature(CFAllocatorRef alloc, const CFSocketSignature *signature, CFReadStreamRef *readStream, CFWriteStreamRef *writeStream);\n\n\n\n\nextern\nCFStreamStatus CFReadStreamGetStatus(CFReadStreamRef stream);\nextern\nCFStreamStatus CFWriteStreamGetStatus(CFWriteStreamRef stream);\n\n\nextern\nCFErrorRef CFReadStreamCopyError(CFReadStreamRef stream) ;\nextern\nCFErrorRef CFWriteStreamCopyError(CFWriteStreamRef stream) ;\n\n\n\n\n\n\nextern\nBoolean CFReadStreamOpen(CFReadStreamRef stream);\nextern\nBoolean CFWriteStreamOpen(CFWriteStreamRef stream);\n\n\n\n\nextern\nvoid CFReadStreamClose(CFReadStreamRef stream);\nextern\nvoid CFWriteStreamClose(CFWriteStreamRef stream);\n\n\n\nextern\nBoolean CFReadStreamHasBytesAvailable(CFReadStreamRef stream);\n# 164 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFStream.h\" 3\nextern\nCFIndex CFReadStreamRead(CFReadStreamRef stream, UInt8 *buffer, CFIndex bufferLength);\n# 176 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFStream.h\" 3\nextern\nconst UInt8 *CFReadStreamGetBuffer(CFReadStreamRef stream, CFIndex maxBytesToRead, CFIndex *numBytesRead);\n\n\n\nextern\nBoolean CFWriteStreamCanAcceptBytes(CFWriteStreamRef stream);\n\n\n\n\n\n\nextern\nCFIndex CFWriteStreamWrite(CFWriteStreamRef stream, const UInt8 *buffer, CFIndex bufferLength);\n# 200 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFStream.h\" 3\nextern\nCFTypeRef CFReadStreamCopyProperty(CFReadStreamRef stream, CFStringRef propertyName);\nextern\nCFTypeRef CFWriteStreamCopyProperty(CFWriteStreamRef stream, CFStringRef propertyName);\n\n\n\n\nextern\nBoolean CFReadStreamSetProperty(CFReadStreamRef stream, CFStringRef propertyName, CFTypeRef propertyValue);\nextern\nBoolean CFWriteStreamSetProperty(CFWriteStreamRef stream, CFStringRef propertyName, CFTypeRef propertyValue);\n# 231 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFStream.h\" 3\nextern\nBoolean CFReadStreamSetClient(CFReadStreamRef stream, CFOptionFlags streamEvents, CFReadStreamClientCallBack clientCB, CFStreamClientContext *clientContext);\nextern\nBoolean CFWriteStreamSetClient(CFWriteStreamRef stream, CFOptionFlags streamEvents, CFWriteStreamClientCallBack clientCB, CFStreamClientContext *clientContext);\n\nextern\nvoid CFReadStreamScheduleWithRunLoop(CFReadStreamRef stream, CFRunLoopRef runLoop, CFStringRef runLoopMode);\nextern\nvoid CFWriteStreamScheduleWithRunLoop(CFWriteStreamRef stream, CFRunLoopRef runLoop, CFStringRef runLoopMode);\n\nextern\nvoid CFReadStreamUnscheduleFromRunLoop(CFReadStreamRef stream, CFRunLoopRef runLoop, CFStringRef runLoopMode);\nextern\nvoid CFWriteStreamUnscheduleFromRunLoop(CFWriteStreamRef stream, CFRunLoopRef runLoop, CFStringRef runLoopMode);\n\n\n\nenum {\n    kCFStreamErrorDomainCustom = -1,\n    kCFStreamErrorDomainPOSIX = 1,\n    kCFStreamErrorDomainMacOSStatus\n};\ntypedef CFIndex CFStreamErrorDomain;\n\ntypedef struct {\n    CFIndex domain;\n    SInt32 error;\n} CFStreamError;\nextern\nCFStreamError CFReadStreamGetError(CFReadStreamRef stream);\nextern\nCFStreamError CFWriteStreamGetError(CFWriteStreamRef stream);\n\n\n\n# 12 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFPropertyList.h\" 2 3\n\n\n\nenum {\n    kCFPropertyListImmutable = 0,\n    kCFPropertyListMutableContainers,\n    kCFPropertyListMutableContainersAndLeaves\n};\ntypedef CFOptionFlags CFPropertyListMutabilityOptions;\n# 32 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFPropertyList.h\" 3\nextern\nCFPropertyListRef CFPropertyListCreateFromXMLData(CFAllocatorRef allocator, CFDataRef xmlData, CFOptionFlags mutabilityOption, CFStringRef *errorString);\n# 47 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFPropertyList.h\" 3\nextern\nCFDataRef CFPropertyListCreateXMLData(CFAllocatorRef allocator, CFPropertyListRef propertyList);\n\n\n\n\n\n\n\nextern\nCFPropertyListRef CFPropertyListCreateDeepCopy(CFAllocatorRef allocator, CFPropertyListRef propertyList, CFOptionFlags mutabilityOption);\n\n\n\nenum {\n    kCFPropertyListOpenStepFormat = 1,\n    kCFPropertyListXMLFormat_v1_0 = 100,\n    kCFPropertyListBinaryFormat_v1_0 = 200\n};\ntypedef CFIndex CFPropertyListFormat;\n\n\n\n\n\n\nextern\nBoolean CFPropertyListIsValid(CFPropertyListRef plist, CFPropertyListFormat format);\n# 86 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFPropertyList.h\" 3\nextern\nCFIndex CFPropertyListWriteToStream(CFPropertyListRef propertyList, CFWriteStreamRef stream, CFPropertyListFormat format, CFStringRef *errorString);\n# 101 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFPropertyList.h\" 3\nextern\nCFPropertyListRef CFPropertyListCreateFromStream(CFAllocatorRef allocator, CFReadStreamRef stream, CFIndex streamLength, CFOptionFlags mutabilityOption, CFPropertyListFormat *format, CFStringRef *errorString);\n\n\n\n\nenum {\n    kCFPropertyListReadCorruptError = 3840,\n    kCFPropertyListReadUnknownVersionError = 3841,\n    kCFPropertyListReadStreamError = 3842,\n    kCFPropertyListWriteStreamError = 3851,\n};\n\n\n\n\nextern\nCFPropertyListRef CFPropertyListCreateWithData(CFAllocatorRef allocator, CFDataRef data, CFOptionFlags options, CFPropertyListFormat *format, CFErrorRef *error) ;\n\n\n\nextern\nCFPropertyListRef CFPropertyListCreateWithStream(CFAllocatorRef allocator, CFReadStreamRef stream, CFIndex streamLength, CFOptionFlags options, CFPropertyListFormat *format, CFErrorRef *error) ;\n\n\n\nextern\nCFIndex CFPropertyListWrite(CFPropertyListRef propertyList, CFWriteStreamRef stream, CFPropertyListFormat format, CFOptionFlags options, CFErrorRef *error) ;\n\n\n\nextern\nCFDataRef CFPropertyListCreateData(CFAllocatorRef allocator, CFPropertyListRef propertyList, CFPropertyListFormat format, CFOptionFlags options, CFErrorRef *error) ;\n\n\n\n# 59 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFSet.h\" 1 3\n# 14 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFSet.h\" 3\n\n# 25 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFSet.h\" 3\ntypedef const void * (*CFSetRetainCallBack)(CFAllocatorRef allocator, const void *value);\n\n\n\n\n\n\n\ntypedef void (*CFSetReleaseCallBack)(CFAllocatorRef allocator, const void *value);\n\n\n\n\n\n\n\ntypedef CFStringRef (*CFSetCopyDescriptionCallBack)(const void *value);\n# 50 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFSet.h\" 3\ntypedef Boolean (*CFSetEqualCallBack)(const void *value1, const void *value2);\n\n\n\n\n\n\n\ntypedef CFHashCode (*CFSetHashCallBack)(const void *value);\n# 84 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFSet.h\" 3\ntypedef struct {\n    CFIndex version;\n    CFSetRetainCallBack retain;\n    CFSetReleaseCallBack release;\n    CFSetCopyDescriptionCallBack copyDescription;\n    CFSetEqualCallBack equal;\n    CFSetHashCallBack hash;\n} CFSetCallBacks;\n\n\n\n\n\n\nextern\nconst CFSetCallBacks kCFTypeSetCallBacks;\n\n\n\n\n\n\n\nextern\nconst CFSetCallBacks kCFCopyStringSetCallBacks;\n# 118 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFSet.h\" 3\ntypedef void (*CFSetApplierFunction)(const void *value, void *context);\n\n\n\n\n\ntypedef const struct __CFSet * CFSetRef;\n\n\n\n\n\ntypedef struct __CFSet * CFMutableSetRef;\n\n\n\n\n\nextern\nCFTypeID CFSetGetTypeID(void);\n# 185 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFSet.h\" 3\nextern\nCFSetRef CFSetCreate(CFAllocatorRef allocator, const void **values, CFIndex numValues, const CFSetCallBacks *callBacks);\n# 206 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFSet.h\" 3\nextern\nCFSetRef CFSetCreateCopy(CFAllocatorRef allocator, CFSetRef theSet);\n# 252 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFSet.h\" 3\nextern\nCFMutableSetRef CFSetCreateMutable(CFAllocatorRef allocator, CFIndex capacity, const CFSetCallBacks *callBacks);\n# 282 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFSet.h\" 3\nextern\nCFMutableSetRef CFSetCreateMutableCopy(CFAllocatorRef allocator, CFIndex capacity, CFSetRef theSet);\n# 292 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFSet.h\" 3\nextern\nCFIndex CFSetGetCount(CFSetRef theSet);\n# 310 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFSet.h\" 3\nextern\nCFIndex CFSetGetCountOfValue(CFSetRef theSet, const void *value);\n# 326 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFSet.h\" 3\nextern\nBoolean CFSetContainsValue(CFSetRef theSet, const void *value);\n# 341 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFSet.h\" 3\nextern\nconst void *CFSetGetValue(CFSetRef theSet, const void *value);\n# 365 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFSet.h\" 3\nextern\nBoolean CFSetGetValueIfPresent(CFSetRef theSet, const void *candidate, const void **value);\n# 379 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFSet.h\" 3\nextern\nvoid CFSetGetValues(CFSetRef theSet, const void **values);\n# 399 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFSet.h\" 3\nextern\nvoid CFSetApplyFunction(CFSetRef theSet, CFSetApplierFunction applier, void *context);\n# 414 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFSet.h\" 3\nextern\nvoid CFSetAddValue(CFMutableSetRef theSet, const void *value);\n# 433 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFSet.h\" 3\nextern\nvoid CFSetReplaceValue(CFMutableSetRef theSet, const void *value);\n# 453 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFSet.h\" 3\nextern\nvoid CFSetSetValue(CFMutableSetRef theSet, const void *value);\n# 468 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFSet.h\" 3\nextern\nvoid CFSetRemoveValue(CFMutableSetRef theSet, const void *value);\n# 478 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFSet.h\" 3\nextern\nvoid CFSetRemoveAllValues(CFMutableSetRef theSet);\n\n\n# 61 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFStringEncodingExt.h\" 1 3\n# 10 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFStringEncodingExt.h\" 3\n\n\nenum {\n\n    kCFStringEncodingMacJapanese = 1,\n    kCFStringEncodingMacChineseTrad = 2,\n    kCFStringEncodingMacKorean = 3,\n    kCFStringEncodingMacArabic = 4,\n    kCFStringEncodingMacHebrew = 5,\n    kCFStringEncodingMacGreek = 6,\n    kCFStringEncodingMacCyrillic = 7,\n    kCFStringEncodingMacDevanagari = 9,\n    kCFStringEncodingMacGurmukhi = 10,\n    kCFStringEncodingMacGujarati = 11,\n    kCFStringEncodingMacOriya = 12,\n    kCFStringEncodingMacBengali = 13,\n    kCFStringEncodingMacTamil = 14,\n    kCFStringEncodingMacTelugu = 15,\n    kCFStringEncodingMacKannada = 16,\n    kCFStringEncodingMacMalayalam = 17,\n    kCFStringEncodingMacSinhalese = 18,\n    kCFStringEncodingMacBurmese = 19,\n    kCFStringEncodingMacKhmer = 20,\n    kCFStringEncodingMacThai = 21,\n    kCFStringEncodingMacLaotian = 22,\n    kCFStringEncodingMacGeorgian = 23,\n    kCFStringEncodingMacArmenian = 24,\n    kCFStringEncodingMacChineseSimp = 25,\n    kCFStringEncodingMacTibetan = 26,\n    kCFStringEncodingMacMongolian = 27,\n    kCFStringEncodingMacEthiopic = 28,\n    kCFStringEncodingMacCentralEurRoman = 29,\n    kCFStringEncodingMacVietnamese = 30,\n    kCFStringEncodingMacExtArabic = 31,\n\n    kCFStringEncodingMacSymbol = 33,\n    kCFStringEncodingMacDingbats = 34,\n    kCFStringEncodingMacTurkish = 35,\n    kCFStringEncodingMacCroatian = 36,\n    kCFStringEncodingMacIcelandic = 37,\n    kCFStringEncodingMacRomanian = 38,\n    kCFStringEncodingMacCeltic = 39,\n    kCFStringEncodingMacGaelic = 40,\n\n    kCFStringEncodingMacFarsi = 0x8C,\n\n    kCFStringEncodingMacUkrainian = 0x98,\n\n    kCFStringEncodingMacInuit = 0xEC,\n    kCFStringEncodingMacVT100 = 0xFC,\n\n    kCFStringEncodingMacHFS = 0xFF,\n\n\n\n\n\n\n    kCFStringEncodingISOLatin2 = 0x0202,\n    kCFStringEncodingISOLatin3 = 0x0203,\n    kCFStringEncodingISOLatin4 = 0x0204,\n    kCFStringEncodingISOLatinCyrillic = 0x0205,\n    kCFStringEncodingISOLatinArabic = 0x0206,\n    kCFStringEncodingISOLatinGreek = 0x0207,\n    kCFStringEncodingISOLatinHebrew = 0x0208,\n    kCFStringEncodingISOLatin5 = 0x0209,\n    kCFStringEncodingISOLatin6 = 0x020A,\n    kCFStringEncodingISOLatinThai = 0x020B,\n    kCFStringEncodingISOLatin7 = 0x020D,\n    kCFStringEncodingISOLatin8 = 0x020E,\n    kCFStringEncodingISOLatin9 = 0x020F,\n\n    kCFStringEncodingISOLatin10 = 0x0210,\n\n\n\n    kCFStringEncodingDOSLatinUS = 0x0400,\n    kCFStringEncodingDOSGreek = 0x0405,\n    kCFStringEncodingDOSBalticRim = 0x0406,\n    kCFStringEncodingDOSLatin1 = 0x0410,\n    kCFStringEncodingDOSGreek1 = 0x0411,\n    kCFStringEncodingDOSLatin2 = 0x0412,\n    kCFStringEncodingDOSCyrillic = 0x0413,\n    kCFStringEncodingDOSTurkish = 0x0414,\n    kCFStringEncodingDOSPortuguese = 0x0415,\n    kCFStringEncodingDOSIcelandic = 0x0416,\n    kCFStringEncodingDOSHebrew = 0x0417,\n    kCFStringEncodingDOSCanadianFrench = 0x0418,\n    kCFStringEncodingDOSArabic = 0x0419,\n    kCFStringEncodingDOSNordic = 0x041A,\n    kCFStringEncodingDOSRussian = 0x041B,\n    kCFStringEncodingDOSGreek2 = 0x041C,\n    kCFStringEncodingDOSThai = 0x041D,\n    kCFStringEncodingDOSJapanese = 0x0420,\n    kCFStringEncodingDOSChineseSimplif = 0x0421,\n    kCFStringEncodingDOSKorean = 0x0422,\n    kCFStringEncodingDOSChineseTrad = 0x0423,\n\n    kCFStringEncodingWindowsLatin2 = 0x0501,\n    kCFStringEncodingWindowsCyrillic = 0x0502,\n    kCFStringEncodingWindowsGreek = 0x0503,\n    kCFStringEncodingWindowsLatin5 = 0x0504,\n    kCFStringEncodingWindowsHebrew = 0x0505,\n    kCFStringEncodingWindowsArabic = 0x0506,\n    kCFStringEncodingWindowsBalticRim = 0x0507,\n    kCFStringEncodingWindowsVietnamese = 0x0508,\n    kCFStringEncodingWindowsKoreanJohab = 0x0510,\n\n\n\n\n    kCFStringEncodingANSEL = 0x0601,\n\n    kCFStringEncodingJIS_X0201_76 = 0x0620,\n    kCFStringEncodingJIS_X0208_83 = 0x0621,\n    kCFStringEncodingJIS_X0208_90 = 0x0622,\n    kCFStringEncodingJIS_X0212_90 = 0x0623,\n    kCFStringEncodingJIS_C6226_78 = 0x0624,\n\n    kCFStringEncodingShiftJIS_X0213 = 0x0628,\n\n\n    kCFStringEncodingShiftJIS_X0213_MenKuTen = 0x0629,\n\n    kCFStringEncodingGB_2312_80 = 0x0630,\n    kCFStringEncodingGBK_95 = 0x0631,\n    kCFStringEncodingGB_18030_2000 = 0x0632,\n    kCFStringEncodingKSC_5601_87 = 0x0640,\n    kCFStringEncodingKSC_5601_92_Johab = 0x0641,\n    kCFStringEncodingCNS_11643_92_P1 = 0x0651,\n    kCFStringEncodingCNS_11643_92_P2 = 0x0652,\n    kCFStringEncodingCNS_11643_92_P3 = 0x0653,\n\n\n    kCFStringEncodingISO_2022_JP = 0x0820,\n    kCFStringEncodingISO_2022_JP_2 = 0x0821,\n    kCFStringEncodingISO_2022_JP_1 = 0x0822,\n    kCFStringEncodingISO_2022_JP_3 = 0x0823,\n    kCFStringEncodingISO_2022_CN = 0x0830,\n    kCFStringEncodingISO_2022_CN_EXT = 0x0831,\n    kCFStringEncodingISO_2022_KR = 0x0840,\n\n\n    kCFStringEncodingEUC_JP = 0x0920,\n    kCFStringEncodingEUC_CN = 0x0930,\n    kCFStringEncodingEUC_TW = 0x0931,\n    kCFStringEncodingEUC_KR = 0x0940,\n\n\n    kCFStringEncodingShiftJIS = 0x0A01,\n    kCFStringEncodingKOI8_R = 0x0A02,\n    kCFStringEncodingBig5 = 0x0A03,\n    kCFStringEncodingMacRomanLatin1 = 0x0A04,\n    kCFStringEncodingHZ_GB_2312 = 0x0A05,\n    kCFStringEncodingBig5_HKSCS_1999 = 0x0A06,\n\n    kCFStringEncodingVISCII = 0x0A07,\n    kCFStringEncodingKOI8_U = 0x0A08,\n    kCFStringEncodingBig5_E = 0x0A09,\n\n\n\n\n\n    kCFStringEncodingNextStepJapanese = 0x0B02,\n\n\n\n    kCFStringEncodingEBCDIC_US = 0x0C01,\n    kCFStringEncodingEBCDIC_CP037 = 0x0C02,\n\n\n    kCFStringEncodingUTF7 = 0x04000100,\n    kCFStringEncodingUTF7_IMAP = 0x0A10,\n\n\n\n    kCFStringEncodingShiftJIS_X0213_00 = 0x0628\n};\ntypedef CFIndex CFStringEncodings;\n\n\n# 65 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFTree.h\" 1 3\n# 15 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFTree.h\" 3\n\n# 27 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFTree.h\" 3\ntypedef const void * (*CFTreeRetainCallBack)(const void *info);\n\n\n\n\n\n\n\ntypedef void (*CFTreeReleaseCallBack)(const void *info);\n# 44 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFTree.h\" 3\ntypedef CFStringRef (*CFTreeCopyDescriptionCallBack)(const void *info);\n# 63 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFTree.h\" 3\ntypedef struct {\n    CFIndex version;\n    void * info;\n    CFTreeRetainCallBack retain;\n    CFTreeReleaseCallBack release;\n    CFTreeCopyDescriptionCallBack copyDescription;\n} CFTreeContext;\n# 79 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFTree.h\" 3\ntypedef void (*CFTreeApplierFunction)(const void *value, void *context);\n\n\n\n\n\ntypedef struct __CFTree * CFTreeRef;\n\n\n\n\n\nextern\nCFTypeID CFTreeGetTypeID(void);\n# 111 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFTree.h\" 3\nextern\nCFTreeRef CFTreeCreate(CFAllocatorRef allocator, const CFTreeContext *context);\n# 121 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFTree.h\" 3\nextern\nCFTreeRef CFTreeGetParent(CFTreeRef tree);\n# 131 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFTree.h\" 3\nextern\nCFTreeRef CFTreeGetNextSibling(CFTreeRef tree);\n# 141 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFTree.h\" 3\nextern\nCFTreeRef CFTreeGetFirstChild(CFTreeRef tree);\n# 155 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFTree.h\" 3\nextern\nvoid CFTreeGetContext(CFTreeRef tree, CFTreeContext *context);\n# 165 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFTree.h\" 3\nextern\nCFIndex CFTreeGetChildCount(CFTreeRef tree);\n# 178 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFTree.h\" 3\nextern\nCFTreeRef CFTreeGetChildAtIndex(CFTreeRef tree, CFIndex idx);\n# 191 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFTree.h\" 3\nextern\nvoid CFTreeGetChildren(CFTreeRef tree, CFTreeRef *children);\n# 212 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFTree.h\" 3\nextern\nvoid CFTreeApplyFunctionToChildren(CFTreeRef tree, CFTreeApplierFunction applier, void *context);\n# 222 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFTree.h\" 3\nextern\nCFTreeRef CFTreeFindRoot(CFTreeRef tree);\n# 239 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFTree.h\" 3\nextern\nvoid CFTreeSetContext(CFTreeRef tree, const CFTreeContext *context);\n# 252 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFTree.h\" 3\nextern\nvoid CFTreePrependChild(CFTreeRef tree, CFTreeRef newChild);\n# 265 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFTree.h\" 3\nextern\nvoid CFTreeAppendChild(CFTreeRef tree, CFTreeRef newChild);\n# 280 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFTree.h\" 3\nextern\nvoid CFTreeInsertSibling(CFTreeRef tree, CFTreeRef newSibling);\n\n\n\n\n\n\n\nextern\nvoid CFTreeRemove(CFTreeRef tree);\n\n\n\n\n\n\n\nextern\nvoid CFTreeRemoveAllChildren(CFTreeRef tree);\n# 318 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFTree.h\" 3\nextern\nvoid CFTreeSortChildren(CFTreeRef tree, CFComparatorFunction comparator, void *context);\n\n\n# 67 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFURLAccess.h\" 1 3\n# 16 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFURLAccess.h\" 3\n\n# 42 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFURLAccess.h\" 3\nextern\nBoolean CFURLCreateDataAndPropertiesFromResource(CFAllocatorRef alloc, CFURLRef url, CFDataRef *resourceData, CFDictionaryRef *properties, CFArrayRef desiredProperties, SInt32 *errorCode) ;\n# 53 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFURLAccess.h\" 3\nextern\nBoolean CFURLWriteDataAndPropertiesToResource(CFURLRef url, CFDataRef dataToWrite, CFDictionaryRef propertiesToWrite, SInt32 *errorCode) ;\n\n\n\nextern\nBoolean CFURLDestroyResource(CFURLRef url, SInt32 *errorCode) ;\n\n\n\nextern\nCFTypeRef CFURLCreatePropertyFromResource(CFAllocatorRef alloc, CFURLRef url, CFStringRef property, SInt32 *errorCode) ;\n\n\n\nenum {\n    kCFURLUnknownError = -10,\n    kCFURLUnknownSchemeError = -11,\n    kCFURLResourceNotFoundError = -12,\n    kCFURLResourceAccessViolationError = -13,\n    kCFURLRemoteHostUnavailableError = -14,\n    kCFURLImproperArgumentsError = -15,\n    kCFURLUnknownPropertyKeyError = -16,\n    kCFURLPropertyKeyUnavailableError = -17,\n    kCFURLTimeoutError = -18\n};\ntypedef CFIndex CFURLError;\n\n\n\nextern\nconst CFStringRef kCFURLFileExists ;\nextern\nconst CFStringRef kCFURLFileDirectoryContents ;\nextern\nconst CFStringRef kCFURLFileLength ;\nextern\nconst CFStringRef kCFURLFileLastModificationTime ;\nextern\nconst CFStringRef kCFURLFilePOSIXMode ;\nextern\nconst CFStringRef kCFURLFileOwnerID ;\nextern\nconst CFStringRef kCFURLHTTPStatusCode ;\nextern\nconst CFStringRef kCFURLHTTPStatusLine ;\n# 111 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFURLAccess.h\" 3\n\n# 69 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFAttributedString.h\" 1 3\n# 20 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFAttributedString.h\" 3\n\n\n\n\n\ntypedef const struct __CFAttributedString *CFAttributedStringRef;\ntypedef struct __CFAttributedString *CFMutableAttributedStringRef;\n\n\n\n\nextern CFTypeID CFAttributedStringGetTypeID(void) ;\n# 40 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFAttributedString.h\" 3\nextern CFAttributedStringRef CFAttributedStringCreate(CFAllocatorRef alloc, CFStringRef str, CFDictionaryRef attributes) ;\n\n\n\n\nextern CFAttributedStringRef CFAttributedStringCreateWithSubstring(CFAllocatorRef alloc, CFAttributedStringRef aStr, CFRange range) ;\n\n\n\n\nextern CFAttributedStringRef CFAttributedStringCreateCopy(CFAllocatorRef alloc, CFAttributedStringRef aStr) ;\n\n\n\n\nextern CFStringRef CFAttributedStringGetString(CFAttributedStringRef aStr) ;\n\n\n\n\nextern CFIndex CFAttributedStringGetLength(CFAttributedStringRef aStr) ;\n\n\n\n\n\n\nextern CFDictionaryRef CFAttributedStringGetAttributes(CFAttributedStringRef aStr, CFIndex loc, CFRange *effectiveRange) ;\n\n\n\n\nextern CFTypeRef CFAttributedStringGetAttribute(CFAttributedStringRef aStr, CFIndex loc, CFStringRef attrName, CFRange *effectiveRange) ;\n\n\n\n\nextern CFDictionaryRef CFAttributedStringGetAttributesAndLongestEffectiveRange(CFAttributedStringRef aStr, CFIndex loc, CFRange inRange, CFRange *longestEffectiveRange) ;\n\n\n\n\nextern CFTypeRef CFAttributedStringGetAttributeAndLongestEffectiveRange(CFAttributedStringRef aStr, CFIndex loc, CFStringRef attrName, CFRange inRange, CFRange *longestEffectiveRange) ;\n# 91 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFAttributedString.h\" 3\nextern CFMutableAttributedStringRef CFAttributedStringCreateMutableCopy(CFAllocatorRef alloc, CFIndex maxLength, CFAttributedStringRef aStr) ;\n\n\n\n\nextern CFMutableAttributedStringRef CFAttributedStringCreateMutable(CFAllocatorRef alloc, CFIndex maxLength) ;\n\n\n\n\n\n\nextern void CFAttributedStringReplaceString(CFMutableAttributedStringRef aStr, CFRange range, CFStringRef replacement) ;\n\n\n\n\n\n\nextern CFMutableStringRef CFAttributedStringGetMutableString(CFMutableAttributedStringRef aStr) ;\n\n\n\n\nextern void CFAttributedStringSetAttributes(CFMutableAttributedStringRef aStr, CFRange range, CFDictionaryRef replacement, Boolean clearOtherAttributes) ;\n\n\n\n\nextern void CFAttributedStringSetAttribute(CFMutableAttributedStringRef aStr, CFRange range, CFStringRef attrName, CFTypeRef value) ;\n\n\n\n\nextern void CFAttributedStringRemoveAttribute(CFMutableAttributedStringRef aStr, CFRange range, CFStringRef attrName) ;\n\n\n\n\nextern void CFAttributedStringReplaceAttributedString(CFMutableAttributedStringRef aStr, CFRange range, CFAttributedStringRef replacement) ;\n\n\n\n\nextern void CFAttributedStringBeginEditing(CFMutableAttributedStringRef aStr) ;\n\n\n\n\nextern void CFAttributedStringEndEditing(CFMutableAttributedStringRef aStr) ;\n\n\n\n# 73 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFNotificationCenter.h\" 1 3\n# 11 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFNotificationCenter.h\" 3\n\n\ntypedef struct __CFNotificationCenter * CFNotificationCenterRef;\n\ntypedef void (*CFNotificationCallback)(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo);\n\nenum {\n    CFNotificationSuspensionBehaviorDrop = 1,\n\n    CFNotificationSuspensionBehaviorCoalesce = 2,\n\n    CFNotificationSuspensionBehaviorHold = 3,\n\n    CFNotificationSuspensionBehaviorDeliverImmediately = 4\n\n};\ntypedef CFIndex CFNotificationSuspensionBehavior;\n\nextern CFTypeID CFNotificationCenterGetTypeID(void);\n\nextern CFNotificationCenterRef CFNotificationCenterGetLocalCenter(void) ;\n\n\nextern CFNotificationCenterRef CFNotificationCenterGetDistributedCenter(void);\n\n\nextern CFNotificationCenterRef CFNotificationCenterGetDarwinNotifyCenter(void) ;\n# 55 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFNotificationCenter.h\" 3\nextern void CFNotificationCenterAddObserver(CFNotificationCenterRef center, const void *observer, CFNotificationCallback callBack, CFStringRef name, const void *object, CFNotificationSuspensionBehavior suspensionBehavior);\n\nextern void CFNotificationCenterRemoveObserver(CFNotificationCenterRef center, const void *observer, CFStringRef name, const void *object);\nextern void CFNotificationCenterRemoveEveryObserver(CFNotificationCenterRef center, const void *observer);\n\nextern void CFNotificationCenterPostNotification(CFNotificationCenterRef center, CFStringRef name, const void *object, CFDictionaryRef userInfo, Boolean deliverImmediately);\n\n\n\nenum {\n    kCFNotificationDeliverImmediately = (1UL << 0),\n    kCFNotificationPostToAllSessions = (1UL << 1)\n};\n\nvoid CFNotificationCenterPostNotificationWithOptions(CFNotificationCenterRef center, CFStringRef name, const void *object, CFDictionaryRef userInfo, CFOptionFlags options) ;\n\n\n\n\n\n# 74 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFURLEnumerator.h\" 1 3\n# 14 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFURLEnumerator.h\" 3\n\n\n\ntypedef const struct __CFURLEnumerator *CFURLEnumeratorRef;\n\n\nextern\nCFTypeID CFURLEnumeratorGetTypeID( void ) ;\n\n\n\nenum {\n    kCFURLEnumeratorDescendRecursively = 1UL << 0,\n    kCFURLEnumeratorSkipInvisibles = 1UL << 1,\n    kCFURLEnumeratorGenerateFileReferenceURLs = 1UL << 2,\n    kCFURLEnumeratorSkipPackageContents = 1UL << 3,\n};\ntypedef CFOptionFlags CFURLEnumeratorOptions;\n\n\n\n\n\n\n\nextern\nCFURLEnumeratorRef CFURLEnumeratorCreateForDirectoryURL( CFAllocatorRef alloc, CFURLRef directoryURL, CFURLEnumeratorOptions option, CFArrayRef propertyKeys ) ;\n# 49 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFURLEnumerator.h\" 3\nextern\nCFURLEnumeratorRef CFURLEnumeratorCreateForMountedVolumes( CFAllocatorRef alloc, CFURLEnumeratorOptions option, CFArrayRef propertyKeys ) ;\n\n\n\nenum {\n    kCFURLEnumeratorSuccess = 1,\n    kCFURLEnumeratorEnd = 2,\n    kCFURLEnumeratorError = 3\n};\ntypedef CFIndex CFURLEnumeratorResult;\n\n\n\n\n\nextern\nCFURLEnumeratorResult CFURLEnumeratorGetNextURL( CFURLEnumeratorRef enumerator, CFURLRef *url, CFErrorRef *error ) ;\n# 76 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFURLEnumerator.h\" 3\nextern\nvoid CFURLEnumeratorSkipDescendents( CFURLEnumeratorRef enumerator ) ;\n\n\n\n\nextern\nCFIndex CFURLEnumeratorGetDescendentLevel( CFURLEnumeratorRef enumerator ) ;\n\n\n\n\nextern\nBoolean CFURLEnumeratorGetSourceDidChange( CFURLEnumeratorRef enumerator ) ;\n\n\n\n# 78 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFFileDescriptor.h\" 1 3\n# 12 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFFileDescriptor.h\" 3\n\n\ntypedef int CFFileDescriptorNativeDescriptor;\n\ntypedef struct __CFFileDescriptor * CFFileDescriptorRef;\n\n\nenum {\n    kCFFileDescriptorReadCallBack = 1UL << 0,\n    kCFFileDescriptorWriteCallBack = 1UL << 1\n};\n\ntypedef void (*CFFileDescriptorCallBack)(CFFileDescriptorRef f, CFOptionFlags callBackTypes, void *info);\n\ntypedef struct {\n    CFIndex version;\n    void * info;\n    void * (*retain)(void *info);\n    void (*release)(void *info);\n    CFStringRef (*copyDescription)(void *info);\n} CFFileDescriptorContext;\n\nextern CFTypeID CFFileDescriptorGetTypeID(void);\n\nextern CFFileDescriptorRef CFFileDescriptorCreate(CFAllocatorRef allocator, CFFileDescriptorNativeDescriptor fd, Boolean closeOnInvalidate, CFFileDescriptorCallBack callout, const CFFileDescriptorContext *context);\n\nextern CFFileDescriptorNativeDescriptor CFFileDescriptorGetNativeDescriptor(CFFileDescriptorRef f);\n\nextern void CFFileDescriptorGetContext(CFFileDescriptorRef f, CFFileDescriptorContext *context);\n\nextern void CFFileDescriptorEnableCallBacks(CFFileDescriptorRef f, CFOptionFlags callBackTypes);\nextern void CFFileDescriptorDisableCallBacks(CFFileDescriptorRef f, CFOptionFlags callBackTypes);\n\nextern void CFFileDescriptorInvalidate(CFFileDescriptorRef f);\nextern Boolean CFFileDescriptorIsValid(CFFileDescriptorRef f);\n\nextern CFRunLoopSourceRef CFFileDescriptorCreateRunLoopSource(CFAllocatorRef allocator, CFFileDescriptorRef f, CFIndex order);\n\n\n\n# 82 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFMachPort.h\" 1 3\n# 11 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFMachPort.h\" 3\n\n\ntypedef struct __CFMachPort * CFMachPortRef;\n\ntypedef struct {\n    CFIndex version;\n    void * info;\n    const void *(*retain)(const void *info);\n    void (*release)(const void *info);\n    CFStringRef (*copyDescription)(const void *info);\n} CFMachPortContext;\n\ntypedef void (*CFMachPortCallBack)(CFMachPortRef port, void *msg, CFIndex size, void *info);\ntypedef void (*CFMachPortInvalidationCallBack)(CFMachPortRef port, void *info);\n\nextern CFTypeID CFMachPortGetTypeID(void);\n\nextern CFMachPortRef CFMachPortCreate(CFAllocatorRef allocator, CFMachPortCallBack callout, CFMachPortContext *context, Boolean *shouldFreeInfo);\nextern CFMachPortRef CFMachPortCreateWithPort(CFAllocatorRef allocator, mach_port_t portNum, CFMachPortCallBack callout, CFMachPortContext *context, Boolean *shouldFreeInfo);\n\nextern mach_port_t CFMachPortGetPort(CFMachPortRef port);\nextern void CFMachPortGetContext(CFMachPortRef port, CFMachPortContext *context);\nextern void CFMachPortInvalidate(CFMachPortRef port);\nextern Boolean CFMachPortIsValid(CFMachPortRef port);\nextern CFMachPortInvalidationCallBack CFMachPortGetInvalidationCallBack(CFMachPortRef port);\nextern void CFMachPortSetInvalidationCallBack(CFMachPortRef port, CFMachPortInvalidationCallBack callout);\n\nextern CFRunLoopSourceRef CFMachPortCreateRunLoopSource(CFAllocatorRef allocator, CFMachPortRef port, CFIndex order);\n\n\n# 83 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n\n\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFUserNotification.h\" 1 3\n# 15 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFUserNotification.h\" 3\n\n\ntypedef struct __CFUserNotification * CFUserNotificationRef;\n# 63 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFUserNotification.h\" 3\ntypedef void (*CFUserNotificationCallBack)(CFUserNotificationRef userNotification, CFOptionFlags responseFlags);\n\nextern\nCFTypeID CFUserNotificationGetTypeID(void);\n\nextern\nCFUserNotificationRef CFUserNotificationCreate(CFAllocatorRef allocator, CFTimeInterval timeout, CFOptionFlags flags, SInt32 *error, CFDictionaryRef dictionary);\n\nextern\nSInt32 CFUserNotificationReceiveResponse(CFUserNotificationRef userNotification, CFTimeInterval timeout, CFOptionFlags *responseFlags);\n\nextern\nCFStringRef CFUserNotificationGetResponseValue(CFUserNotificationRef userNotification, CFStringRef key, CFIndex idx);\n\nextern\nCFDictionaryRef CFUserNotificationGetResponseDictionary(CFUserNotificationRef userNotification);\n\nextern\nSInt32 CFUserNotificationUpdate(CFUserNotificationRef userNotification, CFTimeInterval timeout, CFOptionFlags flags, CFDictionaryRef dictionary);\n\nextern\nSInt32 CFUserNotificationCancel(CFUserNotificationRef userNotification);\n\nextern\nCFRunLoopSourceRef CFUserNotificationCreateRunLoopSource(CFAllocatorRef allocator, CFUserNotificationRef userNotification, CFUserNotificationCallBack callout, CFIndex order);\n\n\n\n\nextern\nSInt32 CFUserNotificationDisplayNotice(CFTimeInterval timeout, CFOptionFlags flags, CFURLRef iconURL, CFURLRef soundURL, CFURLRef localizationURL, CFStringRef alertHeader, CFStringRef alertMessage, CFStringRef defaultButtonTitle);\n\nextern\nSInt32 CFUserNotificationDisplayAlert(CFTimeInterval timeout, CFOptionFlags flags, CFURLRef iconURL, CFURLRef soundURL, CFURLRef localizationURL, CFStringRef alertHeader, CFStringRef alertMessage, CFStringRef defaultButtonTitle, CFStringRef alternateButtonTitle, CFStringRef otherButtonTitle, CFOptionFlags *responseFlags);\n\n\n\n\nenum {\n    kCFUserNotificationStopAlertLevel = 0,\n    kCFUserNotificationNoteAlertLevel = 1,\n    kCFUserNotificationCautionAlertLevel = 2,\n    kCFUserNotificationPlainAlertLevel = 3\n};\n\nenum {\n    kCFUserNotificationDefaultResponse = 0,\n    kCFUserNotificationAlternateResponse = 1,\n    kCFUserNotificationOtherResponse = 2,\n    kCFUserNotificationCancelResponse = 3\n};\n\nenum {\n    kCFUserNotificationNoDefaultButtonFlag = (1UL << 5),\n    kCFUserNotificationUseRadioButtonsFlag = (1UL << 6)\n};\n\nstatic __inline__ __attribute__((always_inline)) CFOptionFlags CFUserNotificationCheckBoxChecked(CFIndex i) {return ((CFOptionFlags)(1UL << (8 + i)));}\nstatic __inline__ __attribute__((always_inline)) CFOptionFlags CFUserNotificationSecureTextField(CFIndex i) {return ((CFOptionFlags)(1UL << (16 + i)));}\nstatic __inline__ __attribute__((always_inline)) CFOptionFlags CFUserNotificationPopUpSelection(CFIndex n) {return ((CFOptionFlags)(n << 24));}\n\n\n\n\nextern\nconst CFStringRef kCFUserNotificationIconURLKey;\n\nextern\nconst CFStringRef kCFUserNotificationSoundURLKey;\n\nextern\nconst CFStringRef kCFUserNotificationLocalizationURLKey;\n\nextern\nconst CFStringRef kCFUserNotificationAlertHeaderKey;\n\nextern\nconst CFStringRef kCFUserNotificationAlertMessageKey;\n\nextern\nconst CFStringRef kCFUserNotificationDefaultButtonTitleKey;\n\nextern\nconst CFStringRef kCFUserNotificationAlternateButtonTitleKey;\n\nextern\nconst CFStringRef kCFUserNotificationOtherButtonTitleKey;\n\nextern\nconst CFStringRef kCFUserNotificationProgressIndicatorValueKey;\n\nextern\nconst CFStringRef kCFUserNotificationPopUpTitlesKey;\n\nextern\nconst CFStringRef kCFUserNotificationTextFieldTitlesKey;\n\nextern\nconst CFStringRef kCFUserNotificationCheckBoxTitlesKey;\n\nextern\nconst CFStringRef kCFUserNotificationTextFieldValuesKey;\n\n\nextern\nconst CFStringRef kCFUserNotificationPopUpSelectionKey ;\n# 179 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFUserNotification.h\" 3\n\n# 86 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFXMLNode.h\" 1 3\n# 20 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFXMLNode.h\" 3\n\n\nenum {\n kCFXMLNodeCurrentVersion = 1\n};\n\ntypedef const struct __CFXMLNode * CFXMLNodeRef;\ntypedef CFTreeRef CFXMLTreeRef;\n# 50 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFXMLNode.h\" 3\nenum {\n    kCFXMLNodeTypeDocument = 1,\n    kCFXMLNodeTypeElement = 2,\n    kCFXMLNodeTypeAttribute = 3,\n    kCFXMLNodeTypeProcessingInstruction = 4,\n    kCFXMLNodeTypeComment = 5,\n    kCFXMLNodeTypeText = 6,\n    kCFXMLNodeTypeCDATASection = 7,\n    kCFXMLNodeTypeDocumentFragment = 8,\n    kCFXMLNodeTypeEntity = 9,\n    kCFXMLNodeTypeEntityReference = 10,\n    kCFXMLNodeTypeDocumentType = 11,\n    kCFXMLNodeTypeWhitespace = 12,\n    kCFXMLNodeTypeNotation = 13,\n    kCFXMLNodeTypeElementTypeDeclaration = 14,\n    kCFXMLNodeTypeAttributeListDeclaration = 15\n};\ntypedef CFIndex CFXMLNodeTypeCode;\n\ntypedef struct {\n    CFDictionaryRef attributes;\n    CFArrayRef attributeOrder;\n    Boolean isEmpty;\n    char _reserved[3];\n} CFXMLElementInfo;\n\ntypedef struct {\n    CFStringRef dataString;\n} CFXMLProcessingInstructionInfo;\n\ntypedef struct {\n    CFURLRef sourceURL;\n    CFStringEncoding encoding;\n} CFXMLDocumentInfo;\n\ntypedef struct {\n    CFURLRef systemID;\n    CFStringRef publicID;\n} CFXMLExternalID;\n\ntypedef struct {\n    CFXMLExternalID externalID;\n} CFXMLDocumentTypeInfo;\n\ntypedef struct {\n    CFXMLExternalID externalID;\n} CFXMLNotationInfo;\n\ntypedef struct {\n\n    CFStringRef contentDescription;\n} CFXMLElementTypeDeclarationInfo;\n\ntypedef struct {\n\n    CFStringRef attributeName;\n    CFStringRef typeString;\n    CFStringRef defaultString;\n} CFXMLAttributeDeclarationInfo;\n\ntypedef struct {\n    CFIndex numberOfAttributes;\n    CFXMLAttributeDeclarationInfo *attributes;\n} CFXMLAttributeListDeclarationInfo;\n\nenum {\n    kCFXMLEntityTypeParameter,\n    kCFXMLEntityTypeParsedInternal,\n    kCFXMLEntityTypeParsedExternal,\n    kCFXMLEntityTypeUnparsed,\n    kCFXMLEntityTypeCharacter\n};\ntypedef CFIndex CFXMLEntityTypeCode;\n\ntypedef struct {\n    CFXMLEntityTypeCode entityType;\n    CFStringRef replacementText;\n    CFXMLExternalID entityID;\n    CFStringRef notationName;\n} CFXMLEntityInfo;\n\ntypedef struct {\n    CFXMLEntityTypeCode entityType;\n} CFXMLEntityReferenceInfo;\n# 155 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFXMLNode.h\" 3\nextern\nCFTypeID CFXMLNodeGetTypeID(void);\n\n\nextern\nCFXMLNodeRef CFXMLNodeCreate(CFAllocatorRef alloc, CFXMLNodeTypeCode xmlType, CFStringRef dataString, const void *additionalInfoPtr, CFIndex version);\n\n\nextern\nCFXMLNodeRef CFXMLNodeCreateCopy(CFAllocatorRef alloc, CFXMLNodeRef origNode);\n\nextern\nCFXMLNodeTypeCode CFXMLNodeGetTypeCode(CFXMLNodeRef node);\n\nextern\nCFStringRef CFXMLNodeGetString(CFXMLNodeRef node);\n\nextern\nconst void *CFXMLNodeGetInfoPtr(CFXMLNodeRef node);\n\nextern\nCFIndex CFXMLNodeGetVersion(CFXMLNodeRef node);\n\n\n\n\nextern\nCFXMLTreeRef CFXMLTreeCreateWithNode(CFAllocatorRef allocator, CFXMLNodeRef node);\n\n\nextern\nCFXMLNodeRef CFXMLTreeGetNode(CFXMLTreeRef xmlTree);\n\n\n# 87 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFXMLParser.h\" 1 3\n# 22 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFXMLParser.h\" 3\n\n\ntypedef struct __CFXMLParser * CFXMLParserRef;\n# 56 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFXMLParser.h\" 3\nenum {\n    kCFXMLParserValidateDocument = (1UL << 0),\n    kCFXMLParserSkipMetaData = (1UL << 1),\n    kCFXMLParserReplacePhysicalEntities = (1UL << 2),\n    kCFXMLParserSkipWhitespace = (1UL << 3),\n    kCFXMLParserResolveExternalEntities = (1UL << 4),\n    kCFXMLParserAddImpliedAttributes = (1UL << 5),\n    kCFXMLParserAllOptions = 0x00FFFFFF,\n    kCFXMLParserNoOptions = 0\n};\ntypedef CFOptionFlags CFXMLParserOptions;\n\n\nenum {\n    kCFXMLStatusParseNotBegun = -2,\n    kCFXMLStatusParseInProgress = -1,\n    kCFXMLStatusParseSuccessful = 0,\n    kCFXMLErrorUnexpectedEOF = 1,\n    kCFXMLErrorUnknownEncoding,\n    kCFXMLErrorEncodingConversionFailure,\n    kCFXMLErrorMalformedProcessingInstruction,\n    kCFXMLErrorMalformedDTD,\n    kCFXMLErrorMalformedName,\n    kCFXMLErrorMalformedCDSect,\n    kCFXMLErrorMalformedCloseTag,\n    kCFXMLErrorMalformedStartTag,\n    kCFXMLErrorMalformedDocument,\n    kCFXMLErrorElementlessDocument,\n    kCFXMLErrorMalformedComment,\n    kCFXMLErrorMalformedCharacterReference,\n    kCFXMLErrorMalformedParsedCharacterData,\n    kCFXMLErrorNoData\n};\ntypedef CFIndex CFXMLParserStatusCode;\n# 133 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFXMLParser.h\" 3\ntypedef void * (*CFXMLParserCreateXMLStructureCallBack)(CFXMLParserRef parser, CFXMLNodeRef nodeDesc, void *info);\ntypedef void (*CFXMLParserAddChildCallBack)(CFXMLParserRef parser, void *parent, void *child, void *info);\ntypedef void (*CFXMLParserEndXMLStructureCallBack)(CFXMLParserRef parser, void *xmlType, void *info);\ntypedef CFDataRef (*CFXMLParserResolveExternalEntityCallBack)(CFXMLParserRef parser, CFXMLExternalID *extID, void *info);\ntypedef Boolean (*CFXMLParserHandleErrorCallBack)(CFXMLParserRef parser, CFXMLParserStatusCode error, void *info);\ntypedef struct {\n    CFIndex version;\n    CFXMLParserCreateXMLStructureCallBack createXMLStructure;\n    CFXMLParserAddChildCallBack addChild;\n    CFXMLParserEndXMLStructureCallBack endXMLStructure;\n    CFXMLParserResolveExternalEntityCallBack resolveExternalEntity;\n    CFXMLParserHandleErrorCallBack handleError;\n} CFXMLParserCallBacks;\n\ntypedef const void * (*CFXMLParserRetainCallBack)(const void *info);\ntypedef void (*CFXMLParserReleaseCallBack)(const void *info);\ntypedef CFStringRef (*CFXMLParserCopyDescriptionCallBack)(const void *info);\ntypedef struct {\n    CFIndex version;\n    void * info;\n    CFXMLParserRetainCallBack retain;\n    CFXMLParserReleaseCallBack release;\n    CFXMLParserCopyDescriptionCallBack copyDescription;\n} CFXMLParserContext;\n\nextern\nCFTypeID CFXMLParserGetTypeID(void);\n# 168 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFXMLParser.h\" 3\nextern\nCFXMLParserRef CFXMLParserCreate(CFAllocatorRef allocator, CFDataRef xmlData, CFURLRef dataSource, CFOptionFlags parseOptions, CFIndex versionOfNodes, CFXMLParserCallBacks *callBacks, CFXMLParserContext *context);\n\n\n\nextern\nCFXMLParserRef CFXMLParserCreateWithDataFromURL(CFAllocatorRef allocator, CFURLRef dataSource, CFOptionFlags parseOptions, CFIndex versionOfNodes, CFXMLParserCallBacks *callBacks, CFXMLParserContext *context);\n\nextern\nvoid CFXMLParserGetContext(CFXMLParserRef parser, CFXMLParserContext *context);\n\nextern\nvoid CFXMLParserGetCallBacks(CFXMLParserRef parser, CFXMLParserCallBacks *callBacks);\n\nextern\nCFURLRef CFXMLParserGetSourceURL(CFXMLParserRef parser);\n\n\nextern\nCFIndex CFXMLParserGetLocation(CFXMLParserRef parser);\n\n\nextern\nCFIndex CFXMLParserGetLineNumber(CFXMLParserRef parser);\n\n\nextern\nvoid *CFXMLParserGetDocument(CFXMLParserRef parser);\n\n\n\n\nextern\nCFXMLParserStatusCode CFXMLParserGetStatusCode(CFXMLParserRef parser);\n\nextern\nCFStringRef CFXMLParserCopyErrorDescription(CFXMLParserRef parser);\n\n\n\n\nextern\nvoid CFXMLParserAbort(CFXMLParserRef parser, CFXMLParserStatusCode errorCode, CFStringRef errorDescription);\n\n\n\n\n\n\nextern\nBoolean CFXMLParserParse(CFXMLParserRef parser);\n\n\n\n\n\n\n\nextern\nCFXMLTreeRef CFXMLTreeCreateFromData(CFAllocatorRef allocator, CFDataRef xmlData, CFURLRef dataSource, CFOptionFlags parseOptions, CFIndex versionOfNodes);\n\n\n\n\nextern\nCFXMLTreeRef CFXMLTreeCreateFromDataWithError(CFAllocatorRef allocator, CFDataRef xmlData, CFURLRef dataSource, CFOptionFlags parseOptions, CFIndex versionOfNodes, CFDictionaryRef *errorDict) ;\n\n\nextern\nCFXMLTreeRef CFXMLTreeCreateWithDataFromURL(CFAllocatorRef allocator, CFURLRef dataSource, CFOptionFlags parseOptions, CFIndex versionOfNodes);\n\n\n\n\n\n\nextern\nCFDataRef CFXMLTreeCreateXMLData(CFAllocatorRef allocator, CFXMLTreeRef xmlTree);\n\n\n\n\n\n\n\nextern\nCFStringRef CFXMLCreateStringByEscapingEntities(CFAllocatorRef allocator, CFStringRef string, CFDictionaryRef entitiesDictionary) ;\n\nextern\nCFStringRef CFXMLCreateStringByUnescapingEntities(CFAllocatorRef allocator, CFStringRef string, CFDictionaryRef entitiesDictionary) ;\n\n\nextern const CFStringRef kCFXMLTreeErrorDescription ;\n\n\nextern const CFStringRef kCFXMLTreeErrorLineNumber ;\n\n\nextern const CFStringRef kCFXMLTreeErrorLocation ;\n\n\nextern const CFStringRef kCFXMLTreeErrorStatusCode ;\n\n\n\n# 88 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n\n# 1 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFStringTokenizer.h\" 1 3\n# 29 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFStringTokenizer.h\" 3\n\n# 51 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFStringTokenizer.h\" 3\nextern\nCFStringRef CFStringTokenizerCopyBestStringLanguage(CFStringRef string, CFRange range) ;\n\n\n\n\n\n\n\ntypedef struct __CFStringTokenizer * CFStringTokenizerRef;\n\n\n\n\nenum {\n\n\n\n\n\n\n\n    kCFStringTokenizerUnitWord = 0,\n    kCFStringTokenizerUnitSentence = 1,\n    kCFStringTokenizerUnitParagraph = 2,\n    kCFStringTokenizerUnitLineBreak = 3,\n\n\n\n\n    kCFStringTokenizerUnitWordBoundary = 4,\n# 92 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFStringTokenizer.h\" 3\n    kCFStringTokenizerAttributeLatinTranscription = 1UL << 16,\n\n\n    kCFStringTokenizerAttributeLanguage = 1UL << 17\n};\n\n\n\n\n\n\nenum {\n\n    kCFStringTokenizerTokenNone = 0,\n\n\n    kCFStringTokenizerTokenNormal = 1UL << 0,\n\n\n\n\n\n    kCFStringTokenizerTokenHasSubTokensMask = 1UL << 1,\n\n\n\n\n\n\n    kCFStringTokenizerTokenHasDerivedSubTokensMask = 1UL << 2,\n\n    kCFStringTokenizerTokenHasHasNumbersMask = 1UL << 3,\n    kCFStringTokenizerTokenHasNonLettersMask = 1UL << 4,\n    kCFStringTokenizerTokenIsCJWordMask = 1UL << 5\n};\ntypedef CFOptionFlags CFStringTokenizerTokenType;\n\n\n\n\n\n\nextern\nCFTypeID CFStringTokenizerGetTypeID(void) ;\n# 156 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFStringTokenizer.h\" 3\nextern\nCFStringTokenizerRef CFStringTokenizerCreate(CFAllocatorRef alloc, CFStringRef string, CFRange range, CFOptionFlags options, CFLocaleRef locale) ;\n# 168 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFStringTokenizer.h\" 3\nextern\nvoid CFStringTokenizerSetString(CFStringTokenizerRef tokenizer, CFStringRef string, CFRange range) ;\n# 186 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFStringTokenizer.h\" 3\nextern\nCFStringTokenizerTokenType CFStringTokenizerGoToTokenAtIndex(CFStringTokenizerRef tokenizer, CFIndex index) ;\n# 210 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFStringTokenizer.h\" 3\nextern\nCFStringTokenizerTokenType CFStringTokenizerAdvanceToNextToken(CFStringTokenizerRef tokenizer) ;\n# 220 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFStringTokenizer.h\" 3\nextern\nCFRange CFStringTokenizerGetCurrentTokenRange(CFStringTokenizerRef tokenizer) ;\n# 234 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFStringTokenizer.h\" 3\nextern\nCFTypeRef CFStringTokenizerCopyCurrentTokenAttribute(CFStringTokenizerRef tokenizer, CFOptionFlags attribute) ;\n# 261 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CFStringTokenizer.h\" 3\nextern\nCFIndex CFStringTokenizerGetCurrentSubTokens(CFStringTokenizerRef tokenizer, CFRange *ranges, CFIndex maxRangeLength, CFMutableArrayRef derivedSubTokens) ;\n\n\n# 90 \"/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h\" 2 3\n# 21 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n# 33 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Finder.h\" 1 3\n# 31 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Finder.h\" 3\n#pragma pack(push, 2)\n\n\nenum {\n  kClippingCreator = 'drag',\n  kClippingPictureType = 'clpp',\n  kClippingTextType = 'clpt',\n  kClippingSoundType = 'clps',\n  kClippingUnknownType = 'clpu'\n};\n\n\n\nenum {\n  kInternetLocationCreator = 'drag',\n  kInternetLocationHTTP = 'ilht',\n  kInternetLocationFTP = 'ilft',\n  kInternetLocationFile = 'ilfi',\n  kInternetLocationMail = 'ilma',\n  kInternetLocationNNTP = 'ilnw',\n  kInternetLocationAFP = 'ilaf',\n  kInternetLocationAppleTalk = 'ilat',\n  kInternetLocationNSL = 'ilns',\n  kInternetLocationGeneric = 'ilge'\n};\n\n\n\nenum {\n  kCustomIconResource = -16455\n};\n\n\n\n\n\n\nenum {\n  kCustomBadgeResourceType = 'badg',\n  kCustomBadgeResourceID = kCustomIconResource,\n  kCustomBadgeResourceVersion = 0\n};\n\nstruct CustomBadgeResource {\n  SInt16 version;\n  SInt16 customBadgeResourceID;\n\n  OSType customBadgeType;\n  OSType customBadgeCreator;\n  OSType windowBadgeType;\n  OSType windowBadgeCreator;\n\n  OSType overrideType;\n  OSType overrideCreator;\n};\ntypedef struct CustomBadgeResource CustomBadgeResource;\ntypedef CustomBadgeResource * CustomBadgeResourcePtr;\ntypedef CustomBadgeResourcePtr * CustomBadgeResourceHandle;\n# 100 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Finder.h\" 3\nenum {\n  kRoutingResourceType = 'rout',\n  kRoutingResourceID = 0\n};\n\nstruct RoutingResourceEntry {\n  OSType creator;\n  OSType fileType;\n  OSType targetFolder;\n  OSType destinationFolder;\n  OSType reservedField;\n};\ntypedef struct RoutingResourceEntry RoutingResourceEntry;\ntypedef RoutingResourceEntry * RoutingResourcePtr;\ntypedef RoutingResourcePtr * RoutingResourceHandle;\n\n\nenum {\n  kContainerFolderAliasType = 'fdrp',\n  kContainerTrashAliasType = 'trsh',\n  kContainerHardDiskAliasType = 'hdsk',\n  kContainerFloppyAliasType = 'flpy',\n  kContainerServerAliasType = 'srvr',\n  kApplicationAliasType = 'adrp',\n  kContainerAliasType = 'drop',\n  kDesktopPrinterAliasType = 'dtpa',\n  kContainerCDROMAliasType = 'cddr',\n  kApplicationCPAliasType = 'acdp',\n  kApplicationDAAliasType = 'addp',\n  kPackageAliasType = 'fpka',\n  kAppPackageAliasType = 'fapa'\n};\n\n\nenum {\n  kSystemFolderAliasType = 'fasy',\n  kAppleMenuFolderAliasType = 'faam',\n  kStartupFolderAliasType = 'fast',\n  kPrintMonitorDocsFolderAliasType = 'fapn',\n  kPreferencesFolderAliasType = 'fapf',\n  kControlPanelFolderAliasType = 'fact',\n  kExtensionFolderAliasType = 'faex'\n};\n\n\nenum {\n  kExportedFolderAliasType = 'faet',\n  kDropFolderAliasType = 'fadr',\n  kSharedFolderAliasType = 'fash',\n  kMountedFolderAliasType = 'famn'\n};\n\n\n\n\n\nenum {\n  kIsOnDesk = 0x0001,\n  kColor = 0x000E,\n\n  kIsShared = 0x0040,\n\n\n\n  kHasNoINITs = 0x0080,\n\n  kHasBeenInited = 0x0100,\n\n\n\n\n\n  kHasCustomIcon = 0x0400,\n  kIsStationery = 0x0800,\n  kNameLocked = 0x1000,\n  kHasBundle = 0x2000,\n\n\n  kIsInvisible = 0x4000,\n  kIsAlias = 0x8000\n};\n\n\nenum {\n  fOnDesk = kIsOnDesk,\n  fHasBundle = kHasBundle,\n  fInvisible = kIsInvisible\n};\n\n\nenum {\n  fTrash = -3,\n  fDesktop = -2,\n  fDisk = 0\n};\n# 205 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Finder.h\" 3\nenum {\n  kExtendedFlagsAreInvalid = 0x8000,\n  kExtendedFlagHasCustomBadge = 0x0100,\n  kExtendedFlagObjectIsBusy = 0x0080,\n  kExtendedFlagHasRoutingInfo = 0x0004\n};\n# 220 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Finder.h\" 3\nenum {\n  kFirstMagicBusyFiletype = 'bzy ',\n  kLastMagicBusyFiletype = 'bzy?'\n};\n\n\n\n\n\n\nenum {\n  kMagicBusyCreationDate = 0x4F3AFDB0\n};\n# 243 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Finder.h\" 3\nstruct FileInfo {\n  OSType fileType;\n  OSType fileCreator;\n  UInt16 finderFlags;\n  Point location;\n\n  UInt16 reservedField;\n};\ntypedef struct FileInfo FileInfo;\nstruct FolderInfo {\n  Rect windowBounds;\n  UInt16 finderFlags;\n  Point location;\n\n  UInt16 reservedField;\n};\ntypedef struct FolderInfo FolderInfo;\nstruct ExtendedFileInfo {\n  SInt16 reserved1[4];\n  UInt16 extendedFinderFlags;\n  SInt16 reserved2;\n  SInt32 putAwayFolderID;\n};\ntypedef struct ExtendedFileInfo ExtendedFileInfo;\nstruct ExtendedFolderInfo {\n  Point scrollPosition;\n  SInt32 reserved1;\n  UInt16 extendedFinderFlags;\n  SInt16 reserved2;\n  SInt32 putAwayFolderID;\n};\ntypedef struct ExtendedFolderInfo ExtendedFolderInfo;\n# 287 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Finder.h\" 3\nstruct FInfo {\n  OSType fdType;\n  OSType fdCreator;\n  UInt16 fdFlags;\n  Point fdLocation;\n\n  SInt16 fdFldr;\n};\ntypedef struct FInfo FInfo;\n\n\n\n\n\n\n\nstruct FXInfo {\n  SInt16 fdIconID;\n  SInt16 fdReserved[3];\n  SInt8 fdScript;\n  SInt8 fdXFlags;\n  SInt16 fdComment;\n  SInt32 fdPutAway;\n};\ntypedef struct FXInfo FXInfo;\n\n\n\n\n\n\nstruct DInfo {\n  Rect frRect;\n  UInt16 frFlags;\n  Point frLocation;\n\n  SInt16 frView;\n};\ntypedef struct DInfo DInfo;\n\n\n\n\n\n\n\nstruct DXInfo {\n  Point frScroll;\n  SInt32 frOpenChain;\n  SInt8 frScript;\n  SInt8 frXFlags;\n  SInt16 frComment;\n  SInt32 frPutAway;\n};\ntypedef struct DXInfo DXInfo;\n\n\n#pragma pack(pop)\n# 34 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FixMath.h\" 1 3\n# 130 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FixMath.h\" 3\nextern Fixed\nFixRatio(\n  short numer,\n  short denom) ;\n# 144 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FixMath.h\" 3\nextern Fixed\nFixMul(\n  Fixed a,\n  Fixed b) ;\n# 158 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FixMath.h\" 3\nextern short\nFixRound(Fixed x) ;\n# 170 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FixMath.h\" 3\nextern Fract\nFix2Frac(Fixed x) ;\n# 182 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FixMath.h\" 3\nextern SInt32\nFix2Long(Fixed x) ;\n# 194 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FixMath.h\" 3\nextern Fixed\nLong2Fix(SInt32 x) ;\n# 206 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FixMath.h\" 3\nextern Fixed\nFrac2Fix(Fract x) ;\n# 218 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FixMath.h\" 3\nextern Fract\nFracMul(\n  Fract x,\n  Fract y) ;\n# 232 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FixMath.h\" 3\nextern Fixed\nFixDiv(\n  Fixed x,\n  Fixed y) ;\n# 246 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FixMath.h\" 3\nextern Fract\nFracDiv(\n  Fract x,\n  Fract y) ;\n# 260 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FixMath.h\" 3\nextern Fract\nFracSqrt(Fract x) ;\n# 272 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FixMath.h\" 3\nextern Fract\nFracSin(Fixed x) ;\n# 284 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FixMath.h\" 3\nextern Fract\nFracCos(Fixed x) ;\n# 296 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FixMath.h\" 3\nextern Fixed\nFixATan2(\n  SInt32 x,\n  SInt32 y) ;\n# 319 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FixMath.h\" 3\nextern double\nFrac2X(Fract x) ;\n# 331 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FixMath.h\" 3\nextern double\nFix2X(Fixed x) ;\n# 343 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FixMath.h\" 3\nextern Fixed\nX2Fix(double x) ;\n# 355 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FixMath.h\" 3\nextern Fract\nX2Frac(double x) ;\n# 379 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FixMath.h\" 3\nextern short\nWideCompare(\n  const wide * target,\n  const wide * source) ;\n# 408 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FixMath.h\" 3\nextern wide *\nWideAdd(\n  wide * target,\n  const wide * source) ;\n# 437 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FixMath.h\" 3\nextern wide *\nWideSubtract(\n  wide * target,\n  const wide * source) ;\n# 462 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FixMath.h\" 3\nextern wide *\nWideNegate(wide * target) ;\n# 487 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FixMath.h\" 3\nextern wide *\nWideShift(\n  wide * target,\n  SInt32 shift) ;\n# 513 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FixMath.h\" 3\nextern UInt32\nWideSquareRoot(const wide * source) ;\n# 541 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FixMath.h\" 3\nextern wide *\nWideMultiply(\n  SInt32 multiplicand,\n  SInt32 multiplier,\n  wide * target) ;\n# 580 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FixMath.h\" 3\nextern SInt32\nWideDivide(\n  const wide * dividend,\n  SInt32 divisor,\n  SInt32 * remainder) ;\n# 615 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FixMath.h\" 3\nextern wide *\nWideWideDivide(\n  wide * dividend,\n  SInt32 divisor,\n  SInt32 * remainder) ;\n# 646 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FixMath.h\" 3\nextern wide *\nWideBitShift(\n  wide * target,\n  SInt32 shift) ;\n# 660 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FixMath.h\" 3\nextern UnsignedFixed\nUnsignedFixedMulDiv(\n  UnsignedFixed value,\n  UnsignedFixed multiplier,\n  UnsignedFixed divisor) ;\n# 38 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Script.h\" 1 3\n# 24 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Script.h\" 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/IntlResources.h\" 1 3\n# 31 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/IntlResources.h\" 3\n#pragma pack(push, 2)\n\nenum {\n\n  itlcShowIcon = 7,\n  itlcDualCaret = 6,\n\n  itlcSysDirection = 15\n};\n\nenum {\n\n  itlcDisableKeyScriptSync = 3\n};\n\nenum {\n\n  itlcDisableKeyScriptSyncMask = 1 << itlcDisableKeyScriptSync\n};\n\n\nenum {\n  tokLeftQuote = 1,\n  tokRightQuote = 2,\n  tokLeadPlacer = 3,\n  tokLeader = 4,\n  tokNonLeader = 5,\n  tokZeroLead = 6,\n  tokPercent = 7,\n  tokPlusSign = 8,\n  tokMinusSign = 9,\n  tokThousands = 10,\n  tokReserved = 11,\n  tokSeparator = 12,\n  tokEscape = 13,\n  tokDecPoint = 14,\n  tokEPlus = 15,\n  tokEMinus = 16,\n  tokMaxSymbols = 31,\n  curNumberPartsVersion = 1\n};\n\nenum {\n  currSymLead = 16,\n  currNegSym = 32,\n  currTrailingZ = 64,\n  currLeadingZ = 128\n};\n\nenum {\n  mdy = 0,\n  dmy = 1,\n  ymd = 2,\n  myd = 3,\n  dym = 4,\n  ydm = 5\n};\n\ntypedef SInt8 DateOrders;\nenum {\n  timeCycle24 = 0,\n  timeCycleZero = 1,\n  timeCycle12 = 255,\n  zeroCycle = 1,\n  longDay = 0,\n  longWeek = 1,\n  longMonth = 2,\n  longYear = 3,\n  supDay = 1,\n  supWeek = 2,\n  supMonth = 4,\n  supYear = 8,\n  dayLdingZ = 32,\n  mntLdingZ = 64,\n  century = 128,\n  secLeadingZ = 32,\n  minLeadingZ = 64,\n  hrLeadingZ = 128\n};\n\n\nstruct OffPair {\n  short offFirst;\n  short offSecond;\n};\ntypedef struct OffPair OffPair;\ntypedef OffPair OffsetTable[3];\nstruct Intl0Rec {\n  char decimalPt;\n  char thousSep;\n  char listSep;\n  char currSym1;\n  char currSym2;\n  char currSym3;\n  UInt8 currFmt;\n  UInt8 dateOrder;\n  UInt8 shrtDateFmt;\n  char dateSep;\n  UInt8 timeCycle;\n  UInt8 timeFmt;\n  char mornStr[4];\n  char eveStr[4];\n  char timeSep;\n  char time1Suff;\n  char time2Suff;\n  char time3Suff;\n  char time4Suff;\n  char time5Suff;\n  char time6Suff;\n  char time7Suff;\n  char time8Suff;\n  UInt8 metricSys;\n  short intl0Vers;\n};\ntypedef struct Intl0Rec Intl0Rec;\ntypedef Intl0Rec * Intl0Ptr;\ntypedef Intl0Ptr * Intl0Hndl;\nstruct Intl1Rec {\n  Str15 days[7];\n  Str15 months[12];\n  UInt8 suppressDay;\n  UInt8 lngDateFmt;\n  UInt8 dayLeading0;\n  UInt8 abbrLen;\n  char st0[4];\n  char st1[4];\n  char st2[4];\n  char st3[4];\n  char st4[4];\n  short intl1Vers;\n  short localRtn[1];\n};\ntypedef struct Intl1Rec Intl1Rec;\ntypedef Intl1Rec * Intl1Ptr;\ntypedef Intl1Ptr * Intl1Hndl;\n\nstruct Itl1ExtRec {\n  Intl1Rec base;\n  short version;\n  short format;\n  short calendarCode;\n  SInt32 extraDaysTableOffset;\n  SInt32 extraDaysTableLength;\n  SInt32 extraMonthsTableOffset;\n  SInt32 extraMonthsTableLength;\n  SInt32 abbrevDaysTableOffset;\n  SInt32 abbrevDaysTableLength;\n  SInt32 abbrevMonthsTableOffset;\n  SInt32 abbrevMonthsTableLength;\n  SInt32 extraSepsTableOffset;\n  SInt32 extraSepsTableLength;\n  short tables[1];\n};\ntypedef struct Itl1ExtRec Itl1ExtRec;\nstruct UntokenTable {\n  short len;\n  short lastToken;\n  short index[256];\n};\ntypedef struct UntokenTable UntokenTable;\ntypedef UntokenTable * UntokenTablePtr;\ntypedef UntokenTablePtr * UntokenTableHandle;\n# 209 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/IntlResources.h\" 3\nunion WideChar {\n  struct {\n    char lo;\n    char hi;\n  } a;\n  short b;\n};\ntypedef union WideChar WideChar;\n# 227 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/IntlResources.h\" 3\nstruct WideCharArr {\n  short size;\n  WideChar data[10];\n};\ntypedef struct WideCharArr WideCharArr;\nstruct NumberParts {\n  short version;\n  WideChar data[31];\n  WideCharArr pePlus;\n  WideCharArr peMinus;\n  WideCharArr peMinusPlus;\n  WideCharArr altNumTable;\n  char reserved[20];\n};\ntypedef struct NumberParts NumberParts;\ntypedef NumberParts * NumberPartsPtr;\n\nstruct Itl4Rec {\n  short flags;\n  SInt32 resourceType;\n  short resourceNum;\n  short version;\n  SInt32 resHeader1;\n  SInt32 resHeader2;\n  short numTables;\n  SInt32 mapOffset;\n  SInt32 strOffset;\n  SInt32 fetchOffset;\n  SInt32 unTokenOffset;\n  SInt32 defPartsOffset;\n  SInt32 resOffset6;\n  SInt32 resOffset7;\n  SInt32 resOffset8;\n};\ntypedef struct Itl4Rec Itl4Rec;\ntypedef Itl4Rec * Itl4Ptr;\ntypedef Itl4Ptr * Itl4Handle;\n\nstruct NItl4Rec {\n  short flags;\n  SInt32 resourceType;\n  short resourceNum;\n  short version;\n  short format;\n  short resHeader;\n  SInt32 resHeader2;\n  short numTables;\n  SInt32 mapOffset;\n  SInt32 strOffset;\n  SInt32 fetchOffset;\n  SInt32 unTokenOffset;\n  SInt32 defPartsOffset;\n  SInt32 whtSpListOffset;\n  SInt32 resOffset7;\n  SInt32 resOffset8;\n  short resLength1;\n  short resLength2;\n  short resLength3;\n  short unTokenLength;\n  short defPartsLength;\n  short whtSpListLength;\n  short resLength7;\n  short resLength8;\n};\ntypedef struct NItl4Rec NItl4Rec;\ntypedef NItl4Rec * NItl4Ptr;\ntypedef NItl4Ptr * NItl4Handle;\n\nstruct TableDirectoryRecord {\n  OSType tableSignature;\n  UInt32 reserved;\n  UInt32 tableStartOffset;\n  UInt32 tableSize;\n};\ntypedef struct TableDirectoryRecord TableDirectoryRecord;\nstruct Itl5Record {\n  Fixed versionNumber;\n  unsigned short numberOfTables;\n  unsigned short reserved[3];\n  TableDirectoryRecord tableDirectory[1];\n};\ntypedef struct Itl5Record Itl5Record;\nstruct RuleBasedTrslRecord {\n  short sourceType;\n  short targetType;\n  short formatNumber;\n  short propertyFlag;\n  short numberOfRules;\n};\ntypedef struct RuleBasedTrslRecord RuleBasedTrslRecord;\n\nstruct ItlcRecord {\n  short itlcSystem;\n  short itlcReserved;\n  SInt8 itlcFontForce;\n  SInt8 itlcIntlForce;\n  SInt8 itlcOldKybd;\n  SInt8 itlcFlags;\n  short itlcIconOffset;\n  SInt8 itlcIconSide;\n  SInt8 itlcIconRsvd;\n  short itlcRegionCode;\n  short itlcSysFlags;\n  SInt8 itlcReserved4[32];\n};\ntypedef struct ItlcRecord ItlcRecord;\nstruct ItlbRecord {\n  short itlbNumber;\n  short itlbDate;\n  short itlbSort;\n  short itlbFlags;\n  short itlbToken;\n  short itlbEncoding;\n  short itlbLang;\n  SInt8 itlbNumRep;\n  SInt8 itlbDateRep;\n  short itlbKeys;\n  short itlbIcon;\n};\ntypedef struct ItlbRecord ItlbRecord;\n\nstruct ItlbExtRecord {\n  ItlbRecord base;\n  SInt32 itlbLocalSize;\n  short itlbMonoFond;\n  short itlbMonoSize;\n  short itlbPrefFond;\n  short itlbPrefSize;\n  short itlbSmallFond;\n  short itlbSmallSize;\n  short itlbSysFond;\n  short itlbSysSize;\n  short itlbAppFond;\n  short itlbAppSize;\n  short itlbHelpFond;\n  short itlbHelpSize;\n  Style itlbValidStyles;\n  Style itlbAliasStyle;\n};\ntypedef struct ItlbExtRecord ItlbExtRecord;\n\n\n\n#pragma pack(pop)\n# 25 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Script.h\" 2 3\n# 39 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Script.h\" 3\n#pragma pack(push, 2)\n\n\nenum {\n  smSystemScript = -1,\n  smCurrentScript = -2,\n  smAllScripts = -3\n};\n# 60 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Script.h\" 3\nenum {\n  smRoman = 0,\n  smJapanese = 1,\n  smTradChinese = 2,\n  smKorean = 3,\n  smArabic = 4,\n  smHebrew = 5,\n  smGreek = 6,\n  smCyrillic = 7,\n  smRSymbol = 8,\n  smDevanagari = 9,\n  smGurmukhi = 10,\n  smGujarati = 11,\n  smOriya = 12,\n  smBengali = 13,\n  smTamil = 14,\n  smTelugu = 15,\n  smKannada = 16,\n  smMalayalam = 17,\n  smSinhalese = 18,\n  smBurmese = 19,\n  smKhmer = 20,\n  smThai = 21,\n  smLao = 22,\n  smGeorgian = 23,\n  smArmenian = 24,\n  smSimpChinese = 25,\n  smTibetan = 26,\n  smMongolian = 27,\n  smEthiopic = 28,\n  smGeez = 28,\n  smCentralEuroRoman = 29,\n  smVietnamese = 30,\n  smExtArabic = 31,\n  smUninterp = 32\n};\n\n\nenum {\n  smUnicodeScript = 0x7E\n};\n\n\nenum {\n  smChinese = 2,\n  smRussian = 7,\n\n  smLaotian = 22,\n  smAmharic = 28,\n  smSlavic = 29,\n  smEastEurRoman = 29,\n  smSindhi = 31,\n  smKlingon = 32\n};\n\n\n\n\n\n\nenum {\n  langEnglish = 0,\n  langFrench = 1,\n  langGerman = 2,\n  langItalian = 3,\n  langDutch = 4,\n  langSwedish = 5,\n  langSpanish = 6,\n  langDanish = 7,\n  langPortuguese = 8,\n  langNorwegian = 9,\n  langHebrew = 10,\n  langJapanese = 11,\n  langArabic = 12,\n  langFinnish = 13,\n  langGreek = 14,\n  langIcelandic = 15,\n  langMaltese = 16,\n  langTurkish = 17,\n  langCroatian = 18,\n  langTradChinese = 19,\n  langUrdu = 20,\n  langHindi = 21,\n  langThai = 22,\n  langKorean = 23\n};\n\nenum {\n  langLithuanian = 24,\n  langPolish = 25,\n  langHungarian = 26,\n  langEstonian = 27,\n  langLatvian = 28,\n  langSami = 29,\n  langFaroese = 30,\n  langFarsi = 31,\n  langPersian = 31,\n  langRussian = 32,\n  langSimpChinese = 33,\n  langFlemish = 34,\n  langIrishGaelic = 35,\n  langAlbanian = 36,\n  langRomanian = 37,\n  langCzech = 38,\n  langSlovak = 39,\n  langSlovenian = 40,\n  langYiddish = 41,\n  langSerbian = 42,\n  langMacedonian = 43,\n  langBulgarian = 44,\n  langUkrainian = 45,\n  langByelorussian = 46,\n  langBelorussian = 46\n};\n\nenum {\n  langUzbek = 47,\n  langKazakh = 48,\n  langAzerbaijani = 49,\n  langAzerbaijanAr = 50,\n  langArmenian = 51,\n  langGeorgian = 52,\n  langMoldavian = 53,\n  langKirghiz = 54,\n  langTajiki = 55,\n  langTurkmen = 56,\n  langMongolian = 57,\n  langMongolianCyr = 58,\n  langPashto = 59,\n  langKurdish = 60,\n  langKashmiri = 61,\n  langSindhi = 62,\n  langTibetan = 63,\n  langNepali = 64,\n  langSanskrit = 65,\n  langMarathi = 66,\n  langBengali = 67,\n  langAssamese = 68,\n  langGujarati = 69,\n  langPunjabi = 70\n};\n\nenum {\n  langOriya = 71,\n  langMalayalam = 72,\n  langKannada = 73,\n  langTamil = 74,\n  langTelugu = 75,\n  langSinhalese = 76,\n  langBurmese = 77,\n  langKhmer = 78,\n  langLao = 79,\n  langVietnamese = 80,\n  langIndonesian = 81,\n  langTagalog = 82,\n  langMalayRoman = 83,\n  langMalayArabic = 84,\n  langAmharic = 85,\n  langTigrinya = 86,\n  langOromo = 87,\n  langSomali = 88,\n  langSwahili = 89,\n  langKinyarwanda = 90,\n  langRuanda = 90,\n  langRundi = 91,\n  langNyanja = 92,\n  langChewa = 92,\n  langMalagasy = 93,\n  langEsperanto = 94\n};\n\nenum {\n  langWelsh = 128,\n  langBasque = 129,\n  langCatalan = 130,\n  langLatin = 131,\n  langQuechua = 132,\n  langGuarani = 133,\n  langAymara = 134,\n  langTatar = 135,\n  langUighur = 136,\n  langDzongkha = 137,\n  langJavaneseRom = 138,\n  langSundaneseRom = 139,\n  langGalician = 140,\n  langAfrikaans = 141\n};\n\nenum {\n  langBreton = 142,\n  langInuktitut = 143,\n  langScottishGaelic = 144,\n  langManxGaelic = 145,\n  langIrishGaelicScript = 146,\n  langTongan = 147,\n  langGreekAncient = 148,\n  langGreenlandic = 149,\n  langAzerbaijanRoman = 150,\n  langNynorsk = 151\n};\n\nenum {\n  langUnspecified = 32767\n};\n\n\n\n\n\nenum {\n  langPortugese = 8,\n  langMalta = 16,\n  langYugoslavian = 18,\n  langChinese = 19,\n  langLettish = 28,\n  langLapponian = 29,\n  langLappish = 29,\n  langSaamisk = 29,\n  langFaeroese = 30,\n  langIrish = 35,\n  langGalla = 87,\n  langAfricaans = 141,\n  langGreekPoly = 148\n};\n# 297 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Script.h\" 3\nenum {\n\n  verUS = 0,\n  verFrance = 1,\n  verBritain = 2,\n  verGermany = 3,\n  verItaly = 4,\n  verNetherlands = 5,\n  verFlemish = 6,\n  verSweden = 7,\n  verSpain = 8,\n  verDenmark = 9,\n  verPortugal = 10,\n  verFrCanada = 11,\n  verNorway = 12,\n  verIsrael = 13,\n  verJapan = 14,\n  verAustralia = 15,\n  verArabic = 16,\n  verFinland = 17,\n  verFrSwiss = 18,\n  verGrSwiss = 19,\n  verGreece = 20,\n  verIceland = 21,\n  verMalta = 22,\n  verCyprus = 23,\n  verTurkey = 24,\n  verYugoCroatian = 25\n};\n\nenum {\n  verNetherlandsComma = 26,\n  verFlemishPoint = 27,\n  verCanadaComma = 28,\n  verCanadaPoint = 29,\n  vervariantPortugal = 30,\n  vervariantNorway = 31,\n  vervariantDenmark = 32\n};\n\nenum {\n  verIndiaHindi = 33,\n  verPakistanUrdu = 34,\n  verTurkishModified = 35,\n  verItalianSwiss = 36,\n  verInternational = 37,\n\n  verRomania = 39,\n  verGreekAncient = 40,\n  verLithuania = 41,\n  verPoland = 42,\n  verHungary = 43,\n  verEstonia = 44,\n  verLatvia = 45,\n  verSami = 46,\n  verFaroeIsl = 47,\n  verIran = 48,\n  verRussia = 49,\n  verIreland = 50,\n  verKorea = 51,\n  verChina = 52,\n  verTaiwan = 53,\n  verThailand = 54,\n  verScriptGeneric = 55,\n  verCzech = 56,\n  verSlovak = 57,\n  verEastAsiaGeneric = 58,\n  verMagyar = 59,\n  verBengali = 60,\n  verBelarus = 61\n};\n\nenum {\n  verUkraine = 62,\n\n  verGreeceAlt = 64,\n  verSerbian = 65,\n  verSlovenian = 66,\n  verMacedonian = 67,\n  verCroatia = 68,\n\n  verGermanReformed = 70,\n  verBrazil = 71,\n  verBulgaria = 72,\n  verCatalonia = 73,\n  verMultilingual = 74,\n  verScottishGaelic = 75,\n  verManxGaelic = 76,\n  verBreton = 77,\n  verNunavut = 78,\n  verWelsh = 79,\n\n  verIrishGaelicScript = 81,\n  verEngCanada = 82,\n  verBhutan = 83,\n  verArmenian = 84,\n  verGeorgian = 85,\n  verSpLatinAmerica = 86,\n\n  verTonga = 88,\n\n\n  verFrenchUniversal = 91,\n  verAustria = 92,\n\n  verGujarati = 94,\n  verPunjabi = 95,\n  verIndiaUrdu = 96,\n  verVietnam = 97\n};\n\nenum {\n  verFrBelgium = 98,\n  verUzbek = 99,\n  verSingapore = 100,\n  verNynorsk = 101,\n  verAfrikaans = 102,\n  verEsperanto = 103,\n  verMarathi = 104,\n  verTibetan = 105,\n  verNepal = 106,\n  verGreenland = 107,\n  verIrelandEnglish = 108\n};\n# 435 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Script.h\" 3\nenum {\n  verFrBelgiumLux = 6,\n  verBelgiumLux = 6,\n  verArabia = 16,\n  verYugoslavia = 25,\n  verBelgiumLuxPoint = 27,\n  verIndia = 33,\n  verPakistan = 34,\n  verRumania = 39,\n  verGreecePoly = 40,\n  verLapland = 46,\n  verFaeroeIsl = 47,\n  verGenericFE = 58,\n  verFarEastGeneric = 58,\n  verByeloRussian = 61,\n  verUkrania = 62,\n  verAlternateGr = 64,\n  verSerbia = 65,\n  verSlovenia = 66,\n  verMacedonia = 67,\n  verBrittany = 77,\n  verWales = 79,\n  verArmenia = 84,\n  verGeorgia = 85,\n  verAustriaGerman = 92,\n  verTibet = 105\n};\n\nenum {\n  minCountry = verUS,\n  maxCountry = verIrelandEnglish\n};\n\nenum {\n\n  calGregorian = 0,\n  calArabicCivil = 1,\n  calArabicLunar = 2,\n  calJapanese = 3,\n  calJewish = 4,\n  calCoptic = 5,\n  calPersian = 6\n};\n\nenum {\n\n  intWestern = 0,\n  intArabic = 1,\n  intRoman = 2,\n  intJapanese = 3,\n  intEuropean = 4,\n  intOutputMask = 0x8000\n};\n\nenum {\n\n  smSingleByte = 0,\n  smFirstByte = -1,\n  smLastByte = 1,\n  smMiddleByte = 2\n};\n\nenum {\n\n  smcTypeMask = 0x000F,\n  smcReserved = 0x00F0,\n  smcClassMask = 0x0F00,\n  smcOrientationMask = 0x1000,\n  smcRightMask = 0x2000,\n  smcUpperMask = 0x4000,\n  smcDoubleMask = 0x8000\n};\n\nenum {\n\n  smCharPunct = 0x0000,\n  smCharAscii = 0x0001,\n  smCharEuro = 0x0007,\n  smCharExtAscii = 0x0007,\n\n  smCharKatakana = 0x0002,\n  smCharHiragana = 0x0003,\n  smCharIdeographic = 0x0004,\n  smCharTwoByteGreek = 0x0005,\n  smCharTwoByteRussian = 0x0006,\n  smCharBidirect = 0x0008,\n  smCharContextualLR = 0x0009,\n  smCharNonContextualLR = 0x000A,\n  smCharHangul = 0x000C,\n  smCharJamo = 0x000D,\n  smCharBopomofo = 0x000E,\n  smCharGanaKana = 0x000F,\n\n  smCharFISKana = 0x0002,\n  smCharFISGana = 0x0003,\n  smCharFISIdeo = 0x0004\n};\n\nenum {\n  smCharFISGreek = 0x0005,\n  smCharFISRussian = 0x0006,\n\n  smPunctNormal = 0x0000,\n  smPunctNumber = 0x0100,\n  smPunctSymbol = 0x0200,\n  smPunctBlank = 0x0300,\n  smPunctRepeat = 0x0400,\n  smPunctGraphic = 0x0500,\n\n  smKanaSmall = 0x0100,\n  smKanaHardOK = 0x0200,\n  smKanaSoftOK = 0x0300,\n\n  smIdeographicLevel1 = 0x0000,\n  smIdeographicLevel2 = 0x0100,\n  smIdeographicUser = 0x0200,\n\n  smFISClassLvl1 = 0x0000,\n  smFISClassLvl2 = 0x0100,\n  smFISClassUser = 0x0200,\n\n  smJamoJaeum = 0x0000,\n  smJamoBogJaeum = 0x0100,\n  smJamoMoeum = 0x0200,\n  smJamoBogMoeum = 0x0300\n};\n\nenum {\n\n  smCharHorizontal = 0x0000,\n  smCharVertical = 0x1000,\n\n  smCharLeft = 0x0000,\n  smCharRight = 0x2000,\n  smCharLower = 0x0000,\n  smCharUpper = 0x4000,\n  smChar1byte = 0x0000,\n  smChar2byte = 0x8000\n};\n\nenum {\n\n  smTransAscii = 0,\n  smTransNative = 1,\n  smTransCase = 0xFE,\n  smTransSystem = 0xFF,\n\n  smTransAscii1 = 2,\n  smTransAscii2 = 3,\n  smTransKana1 = 4,\n  smTransKana2 = 5\n};\n\nenum {\n  smTransGana2 = 7,\n  smTransHangul2 = 8,\n  smTransJamo2 = 9,\n  smTransBopomofo2 = 10,\n\n  smTransLower = 0x4000,\n  smTransUpper = 0x8000,\n\n  smTransRuleBaseFormat = 1,\n  smTransHangulFormat = 2,\n\n  smTransPreDoubleByting = 1,\n  smTransPreLowerCasing = 2\n};\n\nenum {\n\n  smMaskAll = (int)0xFFFFFFFF,\n\n  smMaskAscii = 0x00000001,\n  smMaskNative = 0x00000002,\n\n  smMaskAscii1 = 0x00000004,\n  smMaskAscii2 = 0x00000008,\n  smMaskKana1 = 0x00000010,\n  smMaskKana2 = 0x00000020,\n  smMaskGana2 = 0x00000080,\n  smMaskHangul2 = 0x00000100,\n  smMaskJamo2 = 0x00000200,\n  smMaskBopomofo2 = 0x00000400\n};\n\nenum {\n\n  iuSystemScript = -1,\n  iuCurrentScript = -2\n};\n\nenum {\n\n  smKeyNextScript = -1,\n  smKeySysScript = -2,\n  smKeySwapScript = -3,\n\n  smKeyNextKybd = -4,\n  smKeySwapKybd = -5,\n  smKeyDisableKybds = -6,\n  smKeyEnableKybds = -7,\n  smKeyToggleInline = -8,\n  smKeyToggleDirection = -9,\n  smKeyNextInputMethod = -10,\n  smKeySwapInputMethod = -11,\n  smKeyDisableKybdSwitch = -12,\n  smKeySetDirLeftRight = -15,\n  smKeySetDirRightLeft = -16,\n  smKeyRoman = -17\n};\n\nenum {\n\n  smKeyForceKeyScriptBit = 7,\n  smKeyForceKeyScriptMask = 1 << smKeyForceKeyScriptBit\n};\n\nenum {\n\n\n\n  romanSysFond = 0x3FFF,\n  romanAppFond = 3,\n  romanFlags = 0x0007,\n\n  smFondStart = 0x4000,\n  smFondEnd = 0xC000,\n\n  smUprHalfCharSet = 0x80\n};\n\nenum {\n\n  diaeresisUprY = 0xD9,\n  fraction = 0xDA,\n  intlCurrency = 0xDB,\n  leftSingGuillemet = 0xDC,\n  rightSingGuillemet = 0xDD,\n  fiLigature = 0xDE,\n  flLigature = 0xDF,\n  dblDagger = 0xE0,\n  centeredDot = 0xE1,\n  baseSingQuote = 0xE2,\n  baseDblQuote = 0xE3,\n  perThousand = 0xE4,\n  circumflexUprA = 0xE5,\n  circumflexUprE = 0xE6,\n  acuteUprA = 0xE7,\n  diaeresisUprE = 0xE8,\n  graveUprE = 0xE9,\n  acuteUprI = 0xEA,\n  circumflexUprI = 0xEB,\n  diaeresisUprI = 0xEC,\n  graveUprI = 0xED,\n  acuteUprO = 0xEE,\n  circumflexUprO = 0xEF,\n  appleLogo = 0xF0,\n  graveUprO = 0xF1,\n  acuteUprU = 0xF2,\n  circumflexUprU = 0xF3,\n  graveUprU = 0xF4,\n  dotlessLwrI = 0xF5,\n  circumflex = 0xF6,\n  tilde = 0xF7,\n  macron = 0xF8,\n  breveMark = 0xF9,\n  overDot = 0xFA,\n  ringMark = 0xFB,\n  cedilla = 0xFC,\n  doubleAcute = 0xFD,\n  ogonek = 0xFE,\n  hachek = 0xFF\n};\n\nenum {\n\n  tokenIntl = 4,\n  tokenEmpty = -1\n};\n\nenum {\n  tokenUnknown = 0,\n  tokenWhite = 1,\n  tokenLeftLit = 2,\n  tokenRightLit = 3,\n  tokenAlpha = 4,\n  tokenNumeric = 5,\n  tokenNewLine = 6,\n  tokenLeftComment = 7,\n  tokenRightComment = 8,\n  tokenLiteral = 9,\n  tokenEscape = 10,\n  tokenAltNum = 11,\n  tokenRealNum = 12,\n  tokenAltReal = 13,\n  tokenReserve1 = 14,\n  tokenReserve2 = 15,\n  tokenLeftParen = 16,\n  tokenRightParen = 17,\n  tokenLeftBracket = 18,\n  tokenRightBracket = 19\n};\n\nenum {\n  tokenLeftCurly = 20,\n  tokenRightCurly = 21,\n  tokenLeftEnclose = 22,\n  tokenRightEnclose = 23,\n  tokenPlus = 24,\n  tokenMinus = 25,\n  tokenAsterisk = 26,\n  tokenDivide = 27,\n  tokenPlusMinus = 28,\n  tokenSlash = 29,\n  tokenBackSlash = 30,\n  tokenLess = 31,\n  tokenGreat = 32,\n  tokenEqual = 33,\n  tokenLessEqual2 = 34,\n  tokenLessEqual1 = 35,\n  tokenGreatEqual2 = 36,\n  tokenGreatEqual1 = 37,\n  token2Equal = 38,\n  tokenColonEqual = 39\n};\n\nenum {\n  tokenNotEqual = 40,\n  tokenLessGreat = 41,\n  tokenExclamEqual = 42,\n  tokenExclam = 43,\n  tokenTilde = 44,\n  tokenComma = 45,\n  tokenPeriod = 46,\n  tokenLeft2Quote = 47,\n  tokenRight2Quote = 48,\n  tokenLeft1Quote = 49,\n  tokenRight1Quote = 50,\n  token2Quote = 51,\n  token1Quote = 52,\n  tokenSemicolon = 53,\n  tokenPercent = 54,\n  tokenCaret = 55,\n  tokenUnderline = 56,\n  tokenAmpersand = 57,\n  tokenAtSign = 58,\n  tokenBar = 59\n};\n\nenum {\n  tokenQuestion = 60,\n  tokenPi = 61,\n  tokenRoot = 62,\n  tokenSigma = 63,\n  tokenIntegral = 64,\n  tokenMicro = 65,\n  tokenCapPi = 66,\n  tokenInfinity = 67,\n  tokenColon = 68,\n  tokenHash = 69,\n  tokenDollar = 70,\n  tokenNoBreakSpace = 71,\n  tokenFraction = 72,\n  tokenIntlCurrency = 73,\n  tokenLeftSingGuillemet = 74,\n  tokenRightSingGuillemet = 75,\n  tokenPerThousand = 76,\n  tokenEllipsis = 77,\n  tokenCenterDot = 78,\n  tokenNil = 127\n};\n\nenum {\n  delimPad = -2,\n  tokenTilda = 44,\n  tokenCarat = 55\n};\n\nenum {\n\n  smWordSelectTable = 0,\n  smWordWrapTable = 1,\n  smNumberPartsTable = 2,\n  smUnTokenTable = 3,\n  smWhiteSpaceList = 4,\n  iuWordSelectTable = 0,\n  iuWordWrapTable = 1,\n  iuNumberPartsTable = 2,\n  iuUnTokenTable = 3,\n  iuWhiteSpaceList = 4\n};\n\n\nenum {\n  tokenOK = 0,\n  tokenOverflow = 1,\n  stringOverflow = 2,\n  badDelim = 3,\n  badEnding = 4,\n  crash = 5\n};\n\ntypedef SInt8 TokenResults;\ntypedef char CharByteTable[256];\n\ntypedef short ScriptTokenType;\ntypedef ScriptTokenType DelimType[2];\ntypedef ScriptTokenType CommentType[4];\nstruct TokenRec {\n  ScriptTokenType theToken;\n  Ptr position;\n  long length;\n  StringPtr stringPosition;\n};\ntypedef struct TokenRec TokenRec;\ntypedef TokenRec * TokenRecPtr;\nstruct TokenBlock {\n  Ptr source;\n  long sourceLength;\n  Ptr tokenList;\n  long tokenLength;\n  long tokenCount;\n  Ptr stringList;\n  long stringLength;\n  long stringCount;\n  Boolean doString;\n  Boolean doAppend;\n  Boolean doAlphanumeric;\n  Boolean doNest;\n  ScriptTokenType leftDelims[2];\n  ScriptTokenType rightDelims[2];\n  ScriptTokenType leftComment[4];\n  ScriptTokenType rightComment[4];\n  ScriptTokenType escapeCode;\n  ScriptTokenType decimalCode;\n  Handle itlResource;\n  long reserved[8];\n};\ntypedef struct TokenBlock TokenBlock;\ntypedef TokenBlock * TokenBlockPtr;\n\n\nenum {\n  smNotInstalled = 0,\n  smBadVerb = -1,\n  smBadScript = -2\n};\n\n\n\nenum {\n  smfShowIcon = 31,\n  smfDualCaret = 30,\n  smfNameTagEnab = 29,\n  smfUseAssocFontInfo = 28,\n  smfDisableKeyScriptSync = 27\n};\n\n\nenum {\n  smfDisableKeyScriptSyncMask = 1L << smfDisableKeyScriptSync\n};\n\n\nenum {\n  smSysScript = 18,\n  smKeyScript = 22,\n  smKCHRCache = 38,\n  smRegionCode = 40\n};\n# 992 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Script.h\" 3\nextern long\nGetScriptManagerVariable(short selector) __attribute__((deprecated));\n# 1014 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Script.h\" 3\nextern OSErr\nSetScriptManagerVariable(\n  short selector,\n  long param) __attribute__((deprecated));\n# 1032 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Script.h\" 3\nenum {\n  smsfIntellCP = 0,\n  smsfSingByte = 1,\n  smsfNatCase = 2,\n  smsfContext = 3,\n  smsfNoForceFont = 4,\n  smsfB0Digits = 5,\n  smsfAutoInit = 6,\n  smsfUnivExt = 7,\n  smsfSynchUnstyledTE = 8,\n  smsfForms = 13,\n  smsfLigatures = 14,\n  smsfReverse = 15\n};\n# 1648 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Script.h\" 3\n#pragma pack(pop)\n# 42 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UTCUtils.h\" 1 3\n# 24 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UTCUtils.h\" 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacErrors.h\" 1 3\n# 34 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacErrors.h\" 3\nenum {\n  paramErr = -50,\n  noHardwareErr = -200,\n  notEnoughHardwareErr = -201,\n  userCanceledErr = -128,\n  qErr = -1,\n  vTypErr = -2,\n  corErr = -3,\n  unimpErr = -4,\n  SlpTypeErr = -5,\n  seNoDB = -8,\n  controlErr = -17,\n  statusErr = -18,\n  readErr = -19,\n  writErr = -20,\n  badUnitErr = -21,\n  unitEmptyErr = -22,\n  openErr = -23,\n  closErr = -24,\n  dRemovErr = -25,\n  dInstErr = -26\n};\n\nenum {\n  abortErr = -27,\n  iIOAbortErr = -27,\n  notOpenErr = -28,\n  unitTblFullErr = -29,\n  dceExtErr = -30,\n  slotNumErr = -360,\n  gcrOnMFMErr = -400,\n  dirFulErr = -33,\n  dskFulErr = -34,\n  nsvErr = -35,\n  ioErr = -36,\n  bdNamErr = -37,\n  fnOpnErr = -38,\n  eofErr = -39,\n  posErr = -40,\n  mFulErr = -41,\n  tmfoErr = -42,\n  fnfErr = -43,\n  wPrErr = -44,\n  fLckdErr = -45\n};\n\nenum {\n  vLckdErr = -46,\n  fBsyErr = -47,\n  dupFNErr = -48,\n  opWrErr = -49,\n  rfNumErr = -51,\n  gfpErr = -52,\n  volOffLinErr = -53,\n  permErr = -54,\n  volOnLinErr = -55,\n  nsDrvErr = -56,\n  noMacDskErr = -57,\n  extFSErr = -58,\n  fsRnErr = -59,\n  badMDBErr = -60,\n  wrPermErr = -61,\n  dirNFErr = -120,\n  tmwdoErr = -121,\n  badMovErr = -122,\n  wrgVolTypErr = -123,\n  volGoneErr = -124\n};\n\nenum {\n  fidNotFound = -1300,\n  fidExists = -1301,\n  notAFileErr = -1302,\n  diffVolErr = -1303,\n  catChangedErr = -1304,\n  desktopDamagedErr = -1305,\n  sameFileErr = -1306,\n  badFidErr = -1307,\n  notARemountErr = -1308,\n  fileBoundsErr = -1309,\n  fsDataTooBigErr = -1310,\n  volVMBusyErr = -1311,\n  badFCBErr = -1327,\n  errFSUnknownCall = -1400,\n  errFSBadFSRef = -1401,\n  errFSBadForkName = -1402,\n  errFSBadBuffer = -1403,\n  errFSBadForkRef = -1404,\n  errFSBadInfoBitmap = -1405,\n  errFSMissingCatInfo = -1406,\n  errFSNotAFolder = -1407,\n  errFSForkNotFound = -1409,\n  errFSNameTooLong = -1410,\n  errFSMissingName = -1411,\n  errFSBadPosMode = -1412,\n  errFSBadAllocFlags = -1413,\n  errFSNoMoreItems = -1417,\n  errFSBadItemCount = -1418,\n  errFSBadSearchParams = -1419,\n  errFSRefsDifferent = -1420,\n  errFSForkExists = -1421,\n  errFSBadIteratorFlags = -1422,\n  errFSIteratorNotFound = -1423,\n  errFSIteratorNotSupported = -1424,\n  errFSQuotaExceeded = -1425,\n  errFSOperationNotSupported = -1426,\n  errFSAttributeNotFound = -1427,\n  errFSPropertyNotValid = -1428,\n  errFSNotEnoughSpaceForOperation = -1429,\n  envNotPresent = -5500,\n  envBadVers = -5501,\n  envVersTooBig = -5502,\n  fontDecError = -64,\n  fontNotDeclared = -65,\n  fontSubErr = -66,\n  fontNotOutlineErr = -32615,\n  firstDskErr = -84,\n  lastDskErr = -64,\n  noDriveErr = -64,\n  offLinErr = -65,\n  noNybErr = -66\n};\n\nenum {\n  noAdrMkErr = -67,\n  dataVerErr = -68,\n  badCksmErr = -69,\n  badBtSlpErr = -70,\n  noDtaMkErr = -71,\n  badDCksum = -72,\n  badDBtSlp = -73,\n  wrUnderrun = -74,\n  cantStepErr = -75,\n  tk0BadErr = -76,\n  initIWMErr = -77,\n  twoSideErr = -78,\n  spdAdjErr = -79,\n  seekErr = -80,\n  sectNFErr = -81,\n  fmt1Err = -82,\n  fmt2Err = -83,\n  verErr = -84,\n  clkRdErr = -85,\n  clkWrErr = -86,\n  prWrErr = -87,\n  prInitErr = -88,\n  rcvrErr = -89,\n  breakRecd = -90\n};\n\nenum {\n\n  noScrapErr = -100,\n  noTypeErr = -102\n};\n\nenum {\n\n  eLenErr = -92,\n  eMultiErr = -91\n};\n\nenum {\n  ddpSktErr = -91,\n  ddpLenErr = -92,\n  noBridgeErr = -93,\n  lapProtErr = -94,\n  excessCollsns = -95,\n  portNotPwr = -96,\n  portInUse = -97,\n  portNotCf = -98\n};\n\nenum {\n\n  memROZWarn = -99,\n  memROZError = -99,\n  memROZErr = -99,\n  memFullErr = -108,\n  nilHandleErr = -109,\n  memWZErr = -111,\n  memPurErr = -112,\n  memAdrErr = -110,\n  memAZErr = -113,\n  memPCErr = -114,\n  memBCErr = -115,\n  memSCErr = -116,\n  memLockedErr = -117\n};\n\nenum {\n\n  iMemFullErr = -108,\n  iIOAbort = -27\n};\n\n\nenum {\n  resourceInMemory = -188,\n  writingPastEnd = -189,\n  inputOutOfBounds = -190,\n  resNotFound = -192,\n  resFNotFound = -193,\n  addResFailed = -194,\n  addRefFailed = -195,\n  rmvResFailed = -196,\n  rmvRefFailed = -197,\n  resAttrErr = -198,\n  mapReadErr = -199,\n  CantDecompress = -186,\n  badExtResource = -185,\n  noMemForPictPlaybackErr = -145,\n  rgnOverflowErr = -147,\n  rgnTooBigError = -147,\n  pixMapTooDeepErr = -148,\n  insufficientStackErr = -149,\n  nsStackErr = -149\n};\n\nenum {\n  evtNotEnb = 1\n};\n\n\nenum {\n  cMatchErr = -150,\n  cTempMemErr = -151,\n  cNoMemErr = -152,\n  cRangeErr = -153,\n  cProtectErr = -154,\n  cDevErr = -155,\n  cResErr = -156,\n  cDepthErr = -157,\n  rgnTooBigErr = -500,\n  updPixMemErr = -125,\n  pictInfoVersionErr = -11000,\n  pictInfoIDErr = -11001,\n  pictInfoVerbErr = -11002,\n  cantLoadPickMethodErr = -11003,\n  colorsRequestedErr = -11004,\n  pictureDataErr = -11005\n};\n\n\nenum {\n\n  cmProfileError = -170,\n  cmMethodError = -171,\n  cmMethodNotFound = -175,\n  cmProfileNotFound = -176,\n  cmProfilesIdentical = -177,\n  cmCantConcatenateError = -178,\n  cmCantXYZ = -179,\n  cmCantDeleteProfile = -180,\n  cmUnsupportedDataType = -181,\n  cmNoCurrentProfile = -182\n};\n\n\nenum {\n\n  noHardware = noHardwareErr,\n  notEnoughHardware = notEnoughHardwareErr,\n  queueFull = -203,\n  resProblem = -204,\n  badChannel = -205,\n  badFormat = -206,\n  notEnoughBufferSpace = -207,\n  badFileFormat = -208,\n  channelBusy = -209,\n  buffersTooSmall = -210,\n  channelNotBusy = -211,\n  noMoreRealTime = -212,\n  siVBRCompressionNotSupported = -213,\n  siNoSoundInHardware = -220,\n  siBadSoundInDevice = -221,\n  siNoBufferSpecified = -222,\n  siInvalidCompression = -223,\n  siHardDriveTooSlow = -224,\n  siInvalidSampleRate = -225,\n  siInvalidSampleSize = -226,\n  siDeviceBusyErr = -227,\n  siBadDeviceName = -228,\n  siBadRefNum = -229,\n  siInputDeviceErr = -230,\n  siUnknownInfoType = -231,\n  siUnknownQuality = -232\n};\n\n\nenum {\n  noSynthFound = -240,\n  synthOpenFailed = -241,\n  synthNotReady = -242,\n  bufTooSmall = -243,\n  voiceNotFound = -244,\n  incompatibleVoice = -245,\n  badDictFormat = -246,\n  badInputText = -247\n};\n\n\nenum {\n  midiNoClientErr = -250,\n  midiNoPortErr = -251,\n  midiTooManyPortsErr = -252,\n  midiTooManyConsErr = -253,\n  midiVConnectErr = -254,\n  midiVConnectMade = -255,\n  midiVConnectRmvd = -256,\n  midiNoConErr = -257,\n  midiWriteErr = -258,\n  midiNameLenErr = -259,\n  midiDupIDErr = -260,\n  midiInvalidCmdErr = -261\n};\n\n\nenum {\n  nmTypErr = -299\n};\n\n\nenum {\n  siInitSDTblErr = 1,\n  siInitVBLQsErr = 2,\n  siInitSPTblErr = 3,\n  sdmJTInitErr = 10,\n  sdmInitErr = 11,\n  sdmSRTInitErr = 12,\n  sdmPRAMInitErr = 13,\n  sdmPriInitErr = 14\n};\n\nenum {\n  smSDMInitErr = -290,\n  smSRTInitErr = -291,\n  smPRAMInitErr = -292,\n  smPriInitErr = -293,\n  smEmptySlot = -300,\n  smCRCFail = -301,\n  smFormatErr = -302,\n  smRevisionErr = -303,\n  smNoDir = -304,\n  smDisabledSlot = -305,\n  smNosInfoArray = -306\n};\n\n\nenum {\n  smResrvErr = -307,\n  smUnExBusErr = -308,\n  smBLFieldBad = -309,\n  smFHBlockRdErr = -310,\n  smFHBlkDispErr = -311,\n  smDisposePErr = -312,\n  smNoBoardSRsrc = -313,\n  smGetPRErr = -314,\n  smNoBoardId = -315,\n  smInitStatVErr = -316,\n  smInitTblVErr = -317,\n  smNoJmpTbl = -318,\n  smReservedSlot = -318,\n  smBadBoardId = -319,\n  smBusErrTO = -320,\n\n  svTempDisable = -32768L,\n  svDisabled = -32640,\n  smBadRefId = -330,\n  smBadsList = -331,\n  smReservedErr = -332,\n  smCodeRevErr = -333\n};\n\nenum {\n  smCPUErr = -334,\n  smsPointerNil = -335,\n  smNilsBlockErr = -336,\n  smSlotOOBErr = -337,\n  smSelOOBErr = -338,\n  smNewPErr = -339,\n  smBlkMoveErr = -340,\n  smCkStatusErr = -341,\n  smGetDrvrNamErr = -342,\n  smDisDrvrNamErr = -343,\n  smNoMoresRsrcs = -344,\n  smsGetDrvrErr = -345,\n  smBadsPtrErr = -346,\n  smByteLanesErr = -347,\n  smOffsetErr = -348,\n  smNoGoodOpens = -349,\n  smSRTOvrFlErr = -350,\n  smRecNotFnd = -351\n};\n\n\nenum {\n\n  notBTree = -410,\n  btNoSpace = -413,\n  btDupRecErr = -414,\n  btRecNotFnd = -415,\n  btKeyLenErr = -416,\n  btKeyAttrErr = -417,\n  unknownInsertModeErr = -20000,\n  recordDataTooBigErr = -20001,\n  invalidIndexErr = -20002\n};\n\n\n\n\n\nenum {\n  fsmFFSNotFoundErr = -431,\n  fsmBusyFFSErr = -432,\n  fsmBadFFSNameErr = -433,\n  fsmBadFSDLenErr = -434,\n  fsmDuplicateFSIDErr = -435,\n  fsmBadFSDVersionErr = -436,\n  fsmNoAlternateStackErr = -437,\n  fsmUnknownFSMMessageErr = -438\n};\n\n\nenum {\n\n  editionMgrInitErr = -450,\n  badSectionErr = -451,\n  notRegisteredSectionErr = -452,\n  badEditionFileErr = -453,\n  badSubPartErr = -454,\n  multiplePublisherWrn = -460,\n  containerNotFoundWrn = -461,\n  containerAlreadyOpenWrn = -462,\n  notThePublisherWrn = -463\n};\n\nenum {\n  teScrapSizeErr = -501,\n  hwParamErr = -502,\n  driverHardwareGoneErr = -503\n};\n\nenum {\n\n  procNotFound = -600,\n  memFragErr = -601,\n  appModeErr = -602,\n  protocolErr = -603,\n  hardwareConfigErr = -604,\n  appMemFullErr = -605,\n  appIsDaemon = -606,\n  bufferIsSmall = -607,\n  noOutstandingHLE = -608,\n  connectionInvalid = -609,\n  noUserInteractionAllowed = -610\n};\n\nenum {\n\n  wrongApplicationPlatform = -875,\n  appVersionTooOld = -876,\n  notAppropriateForClassic = -877\n};\n\n\nenum {\n  threadTooManyReqsErr = -617,\n  threadNotFoundErr = -618,\n  threadProtocolErr = -619\n};\n\nenum {\n  threadBadAppContextErr = -616\n};\n\n\nenum {\n  notEnoughMemoryErr = -620,\n  notHeldErr = -621,\n  cannotMakeContiguousErr = -622,\n  notLockedErr = -623,\n  interruptsMaskedErr = -624,\n  cannotDeferErr = -625,\n  noMMUErr = -626\n};\n\n\nenum {\n  vmMorePhysicalThanVirtualErr = -628,\n  vmKernelMMUInitErr = -629,\n  vmOffErr = -630,\n  vmMemLckdErr = -631,\n  vmBadDriver = -632,\n  vmNoVectorErr = -633\n};\n\n\nenum {\n  vmInvalidBackingFileIDErr = -640,\n  vmMappingPrivilegesErr = -641,\n  vmBusyBackingFileErr = -642,\n  vmNoMoreBackingFilesErr = -643,\n  vmInvalidFileViewIDErr = -644,\n  vmFileViewAccessErr = -645,\n  vmNoMoreFileViewsErr = -646,\n  vmAddressNotInFileViewErr = -647,\n  vmInvalidOwningProcessErr = -648\n};\n\n\nenum {\n  rcDBNull = -800,\n  rcDBValue = -801,\n  rcDBError = -802,\n  rcDBBadType = -803,\n  rcDBBreak = -804,\n  rcDBExec = -805,\n  rcDBBadSessID = -806,\n  rcDBBadSessNum = -807,\n  rcDBBadDDEV = -808,\n  rcDBAsyncNotSupp = -809,\n  rcDBBadAsyncPB = -810,\n  rcDBNoHandler = -811,\n  rcDBWrongVersion = -812,\n  rcDBPackNotInited = -813\n};\n\n\n\nenum {\n  hmHelpDisabled = -850,\n  hmBalloonAborted = -853,\n  hmSameAsLastBalloon = -854,\n  hmHelpManagerNotInited = -855,\n  hmSkippedBalloon = -857,\n  hmWrongVersion = -858,\n  hmUnknownHelpType = -859,\n  hmOperationUnsupported = -861,\n  hmNoBalloonUp = -862,\n  hmCloseViewActive = -863\n};\n\n\n\nenum {\n\n  notInitErr = -900,\n  nameTypeErr = -902,\n  noPortErr = -903,\n\n\n  noGlobalsErr = -904,\n  localOnlyErr = -905,\n  destPortErr = -906,\n  sessTableErr = -907,\n  noSessionErr = -908,\n  badReqErr = -909,\n  portNameExistsErr = -910,\n  noUserNameErr = -911,\n  userRejectErr = -912,\n  noMachineNameErr = -913,\n  noToolboxNameErr = -914,\n  noResponseErr = -915,\n  portClosedErr = -916,\n  sessClosedErr = -917,\n  badPortNameErr = -919,\n  noDefaultUserErr = -922,\n  notLoggedInErr = -923,\n  noUserRefErr = -924,\n  networkErr = -925,\n  noInformErr = -926,\n  authFailErr = -927,\n  noUserRecErr = -928,\n  badServiceMethodErr = -930,\n  badLocNameErr = -931,\n  guestNotAllowedErr = -932\n};\n\n\nenum {\n  kFMIterationCompleted = -980L,\n  kFMInvalidFontFamilyErr = -981L,\n  kFMInvalidFontErr = -982L,\n  kFMIterationScopeModifiedErr = -983L,\n  kFMFontTableAccessErr = -984L,\n  kFMFontContainerAccessErr = -985L\n};\n\nenum {\n  noMaskFoundErr = -1000\n};\n\nenum {\n  nbpBuffOvr = -1024,\n  nbpNoConfirm = -1025,\n  nbpConfDiff = -1026,\n  nbpDuplicate = -1027,\n  nbpNotFound = -1028,\n  nbpNISErr = -1029\n};\n\nenum {\n  aspBadVersNum = -1066,\n  aspBufTooSmall = -1067,\n  aspNoMoreSess = -1068,\n  aspNoServers = -1069,\n  aspParamErr = -1070,\n  aspServerBusy = -1071,\n  aspSessClosed = -1072,\n  aspSizeErr = -1073,\n  aspTooMany = -1074,\n  aspNoAck = -1075\n};\n\nenum {\n  reqFailed = -1096,\n  tooManyReqs = -1097,\n  tooManySkts = -1098,\n  badATPSkt = -1099,\n  badBuffNum = -1100,\n  noRelErr = -1101,\n  cbNotFound = -1102,\n  noSendResp = -1103,\n  noDataArea = -1104,\n  reqAborted = -1105\n};\n\n\nenum {\n\n  errRefNum = -1280,\n  errAborted = -1279,\n  errState = -1278,\n  errOpening = -1277,\n  errAttention = -1276,\n  errFwdReset = -1275,\n  errDSPQueueSize = -1274,\n  errOpenDenied = -1273\n};\n\n\n\n\n\n\nenum {\n  errAECoercionFail = -1700,\n  errAEDescNotFound = -1701,\n  errAECorruptData = -1702,\n  errAEWrongDataType = -1703,\n  errAENotAEDesc = -1704,\n  errAEBadListItem = -1705,\n  errAENewerVersion = -1706,\n  errAENotAppleEvent = -1707,\n  errAEEventNotHandled = -1708,\n  errAEReplyNotValid = -1709,\n  errAEUnknownSendMode = -1710,\n  errAEWaitCanceled = -1711,\n  errAETimeout = -1712,\n  errAENoUserInteraction = -1713,\n  errAENotASpecialFunction = -1714,\n  errAEParamMissed = -1715,\n  errAEUnknownAddressType = -1716,\n  errAEHandlerNotFound = -1717,\n  errAEReplyNotArrived = -1718,\n  errAEIllegalIndex = -1719,\n  errAEImpossibleRange = -1720,\n  errAEWrongNumberArgs = -1721,\n  errAEAccessorNotFound = -1723,\n  errAENoSuchLogical = -1725,\n  errAEBadTestKey = -1726,\n  errAENotAnObjSpec = -1727,\n  errAENoSuchObject = -1728,\n  errAENegativeCount = -1729,\n  errAEEmptyListContainer = -1730,\n  errAEUnknownObjectType = -1731,\n  errAERecordingIsAlreadyOn = -1732,\n  errAEReceiveTerminate = -1733,\n  errAEReceiveEscapeCurrent = -1734,\n  errAEEventFiltered = -1735,\n  errAEDuplicateHandler = -1736,\n  errAEStreamBadNesting = -1737,\n  errAEStreamAlreadyConverted = -1738,\n  errAEDescIsNull = -1739,\n  errAEBuildSyntaxError = -1740,\n  errAEBufferTooSmall = -1741\n};\n\nenum {\n  errOSASystemError = -1750,\n  errOSAInvalidID = -1751,\n  errOSABadStorageType = -1752,\n  errOSAScriptError = -1753,\n  errOSABadSelector = -1754,\n  errOSASourceNotAvailable = -1756,\n  errOSANoSuchDialect = -1757,\n  errOSADataFormatObsolete = -1758,\n  errOSADataFormatTooNew = -1759,\n  errOSACorruptData = errAECorruptData,\n  errOSARecordingIsAlreadyOn = errAERecordingIsAlreadyOn,\n  errOSAComponentMismatch = -1761,\n  errOSACantOpenComponent = -1762\n};\n\n\n\n\nenum {\n  errOffsetInvalid = -1800,\n  errOffsetIsOutsideOfView = -1801,\n  errTopOfDocument = -1810,\n  errTopOfBody = -1811,\n  errEndOfDocument = -1812,\n  errEndOfBody = -1813\n};\n\n\nenum {\n\n  badDragRefErr = -1850,\n  badDragItemErr = -1851,\n  badDragFlavorErr = -1852,\n  duplicateFlavorErr = -1853,\n  cantGetFlavorErr = -1854,\n  duplicateHandlerErr = -1855,\n  handlerNotFoundErr = -1856,\n  dragNotAcceptedErr = -1857,\n  unsupportedForPlatformErr = -1858,\n  noSuitableDisplaysErr = -1859,\n  badImageRgnErr = -1860,\n  badImageErr = -1861,\n  nonDragOriginatorErr = -1862\n};\n\n\n\nenum {\n  couldNotResolveDataRef = -2000,\n  badImageDescription = -2001,\n  badPublicMovieAtom = -2002,\n  cantFindHandler = -2003,\n  cantOpenHandler = -2004,\n  badComponentType = -2005,\n  noMediaHandler = -2006,\n  noDataHandler = -2007,\n  invalidMedia = -2008,\n  invalidTrack = -2009,\n  invalidMovie = -2010,\n  invalidSampleTable = -2011,\n  invalidDataRef = -2012,\n  invalidHandler = -2013,\n  invalidDuration = -2014,\n  invalidTime = -2015,\n  cantPutPublicMovieAtom = -2016,\n  badEditList = -2017,\n  mediaTypesDontMatch = -2018,\n  progressProcAborted = -2019,\n  movieToolboxUninitialized = -2020,\n  noRecordOfApp = movieToolboxUninitialized,\n  wfFileNotFound = -2021,\n  cantCreateSingleForkFile = -2022,\n  invalidEditState = -2023,\n  nonMatchingEditState = -2024,\n  staleEditState = -2025,\n  userDataItemNotFound = -2026,\n  maxSizeToGrowTooSmall = -2027,\n  badTrackIndex = -2028,\n  trackIDNotFound = -2029,\n  trackNotInMovie = -2030,\n  timeNotInTrack = -2031,\n  timeNotInMedia = -2032,\n  badEditIndex = -2033,\n  internalQuickTimeError = -2034,\n  cantEnableTrack = -2035,\n  invalidRect = -2036,\n  invalidSampleNum = -2037,\n  invalidChunkNum = -2038,\n  invalidSampleDescIndex = -2039,\n  invalidChunkCache = -2040,\n  invalidSampleDescription = -2041,\n  dataNotOpenForRead = -2042,\n  dataNotOpenForWrite = -2043,\n  dataAlreadyOpenForWrite = -2044,\n  dataAlreadyClosed = -2045,\n  endOfDataReached = -2046,\n  dataNoDataRef = -2047,\n  noMovieFound = -2048,\n  invalidDataRefContainer = -2049,\n  badDataRefIndex = -2050,\n  noDefaultDataRef = -2051,\n  couldNotUseAnExistingSample = -2052,\n  featureUnsupported = -2053,\n  noVideoTrackInMovieErr = -2054,\n  noSoundTrackInMovieErr = -2055,\n  soundSupportNotAvailableErr = -2056,\n  unsupportedAuxiliaryImportData = -2057,\n  auxiliaryExportDataUnavailable = -2058,\n  samplesAlreadyInMediaErr = -2059,\n  noSourceTreeFoundErr = -2060,\n  sourceNotFoundErr = -2061,\n  movieTextNotFoundErr = -2062,\n  missingRequiredParameterErr = -2063,\n  invalidSpriteWorldPropertyErr = -2064,\n  invalidSpritePropertyErr = -2065,\n  gWorldsNotSameDepthAndSizeErr = -2066,\n  invalidSpriteIndexErr = -2067,\n  invalidImageIndexErr = -2068,\n  invalidSpriteIDErr = -2069\n};\n\nenum {\n  internalComponentErr = -2070,\n  notImplementedMusicOSErr = -2071,\n  cantSendToSynthesizerOSErr = -2072,\n  cantReceiveFromSynthesizerOSErr = -2073,\n  illegalVoiceAllocationOSErr = -2074,\n  illegalPartOSErr = -2075,\n  illegalChannelOSErr = -2076,\n  illegalKnobOSErr = -2077,\n  illegalKnobValueOSErr = -2078,\n  illegalInstrumentOSErr = -2079,\n  illegalControllerOSErr = -2080,\n  midiManagerAbsentOSErr = -2081,\n  synthesizerNotRespondingOSErr = -2082,\n  synthesizerOSErr = -2083,\n  illegalNoteChannelOSErr = -2084,\n  noteChannelNotAllocatedOSErr = -2085,\n  tunePlayerFullOSErr = -2086,\n  tuneParseOSErr = -2087,\n  noExportProcAvailableErr = -2089,\n  videoOutputInUseErr = -2090\n};\n\nenum {\n  componentDllLoadErr = -2091,\n  componentDllEntryNotFoundErr = -2092,\n  qtmlDllLoadErr = -2093,\n  qtmlDllEntryNotFoundErr = -2094,\n  qtmlUninitialized = -2095,\n  unsupportedOSErr = -2096,\n  unsupportedProcessorErr = -2097,\n  componentNotThreadSafeErr = -2098\n};\n\nenum {\n  cannotFindAtomErr = -2101,\n  notLeafAtomErr = -2102,\n  atomsNotOfSameTypeErr = -2103,\n  atomIndexInvalidErr = -2104,\n  duplicateAtomTypeAndIDErr = -2105,\n  invalidAtomErr = -2106,\n  invalidAtomContainerErr = -2107,\n  invalidAtomTypeErr = -2108,\n  cannotBeLeafAtomErr = -2109,\n  pathTooLongErr = -2110,\n  emptyPathErr = -2111,\n  noPathMappingErr = -2112,\n  pathNotVerifiedErr = -2113,\n  unknownFormatErr = -2114,\n  wackBadFileErr = -2115,\n  wackForkNotFoundErr = -2116,\n  wackBadMetaDataErr = -2117,\n  qfcbNotFoundErr = -2118,\n  qfcbNotCreatedErr = -2119,\n  AAPNotCreatedErr = -2120,\n  AAPNotFoundErr = -2121,\n  ASDBadHeaderErr = -2122,\n  ASDBadForkErr = -2123,\n  ASDEntryNotFoundErr = -2124,\n  fileOffsetTooBigErr = -2125,\n  notAllowedToSaveMovieErr = -2126,\n  qtNetworkAlreadyAllocatedErr = -2127,\n  urlDataHHTTPProtocolErr = -2129,\n  urlDataHHTTPNoNetDriverErr = -2130,\n  urlDataHHTTPURLErr = -2131,\n  urlDataHHTTPRedirectErr = -2132,\n  urlDataHFTPProtocolErr = -2133,\n  urlDataHFTPShutdownErr = -2134,\n  urlDataHFTPBadUserErr = -2135,\n  urlDataHFTPBadPasswordErr = -2136,\n  urlDataHFTPServerErr = -2137,\n  urlDataHFTPDataConnectionErr = -2138,\n  urlDataHFTPNoDirectoryErr = -2139,\n  urlDataHFTPQuotaErr = -2140,\n  urlDataHFTPPermissionsErr = -2141,\n  urlDataHFTPFilenameErr = -2142,\n  urlDataHFTPNoNetDriverErr = -2143,\n  urlDataHFTPBadNameListErr = -2144,\n  urlDataHFTPNeedPasswordErr = -2145,\n  urlDataHFTPNoPasswordErr = -2146,\n  urlDataHFTPServerDisconnectedErr = -2147,\n  urlDataHFTPURLErr = -2148,\n  notEnoughDataErr = -2149,\n  qtActionNotHandledErr = -2157,\n  qtXMLParseErr = -2158,\n  qtXMLApplicationErr = -2159\n};\n\n\nenum {\n  digiUnimpErr = -2201,\n  qtParamErr = -2202,\n  matrixErr = -2203,\n  notExactMatrixErr = -2204,\n  noMoreKeyColorsErr = -2205,\n  notExactSizeErr = -2206,\n  badDepthErr = -2207,\n  noDMAErr = -2208,\n  badCallOrderErr = -2209\n};\n\n\n\nenum {\n  kernelIncompleteErr = -2401,\n  kernelCanceledErr = -2402,\n  kernelOptionsErr = -2403,\n  kernelPrivilegeErr = -2404,\n  kernelUnsupportedErr = -2405,\n  kernelObjectExistsErr = -2406,\n  kernelWritePermissionErr = -2407,\n  kernelReadPermissionErr = -2408,\n  kernelExecutePermissionErr = -2409,\n  kernelDeletePermissionErr = -2410,\n  kernelExecutionLevelErr = -2411,\n  kernelAttributeErr = -2412,\n  kernelAsyncSendLimitErr = -2413,\n  kernelAsyncReceiveLimitErr = -2414,\n  kernelTimeoutErr = -2415,\n  kernelInUseErr = -2416,\n  kernelTerminatedErr = -2417,\n  kernelExceptionErr = -2418,\n  kernelIDErr = -2419,\n  kernelAlreadyFreeErr = -2421,\n  kernelReturnValueErr = -2422,\n  kernelUnrecoverableErr = -2499\n};\n\n\n\nenum {\n\n  tsmComponentNoErr = 0,\n  tsmUnsupScriptLanguageErr = -2500,\n  tsmInputMethodNotFoundErr = -2501,\n  tsmNotAnAppErr = -2502,\n  tsmAlreadyRegisteredErr = -2503,\n  tsmNeverRegisteredErr = -2504,\n  tsmInvalidDocIDErr = -2505,\n  tsmTSMDocBusyErr = -2506,\n  tsmDocNotActiveErr = -2507,\n  tsmNoOpenTSErr = -2508,\n  tsmCantOpenComponentErr = -2509,\n  tsmTextServiceNotFoundErr = -2510,\n  tsmDocumentOpenErr = -2511,\n  tsmUseInputWindowErr = -2512,\n  tsmTSHasNoMenuErr = -2513,\n  tsmTSNotOpenErr = -2514,\n  tsmComponentAlreadyOpenErr = -2515,\n  tsmInputMethodIsOldErr = -2516,\n  tsmScriptHasNoIMErr = -2517,\n  tsmUnsupportedTypeErr = -2518,\n  tsmUnknownErr = -2519,\n  tsmInvalidContext = -2520,\n  tsmNoHandler = -2521,\n  tsmNoMoreTokens = -2522,\n  tsmNoStem = -2523,\n  tsmDefaultIsNotInputMethodErr = -2524,\n  tsmDocPropertyNotFoundErr = -2528,\n  tsmDocPropertyBufferTooSmallErr = -2529,\n  tsmCantChangeForcedClassStateErr = -2530,\n  tsmComponentPropertyUnsupportedErr = -2531,\n  tsmComponentPropertyNotFoundErr = -2532,\n  tsmInputModeChangeFailedErr = -2533\n};\n\n\nenum {\n\n  mmInternalError = -2526\n};\n\n\nenum {\n  nrLockedErr = -2536,\n  nrNotEnoughMemoryErr = -2537,\n  nrInvalidNodeErr = -2538,\n  nrNotFoundErr = -2539,\n  nrNotCreatedErr = -2540,\n  nrNameErr = -2541,\n  nrNotSlotDeviceErr = -2542,\n  nrDataTruncatedErr = -2543,\n  nrPowerErr = -2544,\n  nrPowerSwitchAbortErr = -2545,\n  nrTypeMismatchErr = -2546,\n  nrNotModifiedErr = -2547,\n  nrOverrunErr = -2548,\n  nrResultCodeBase = -2549,\n  nrPathNotFound = -2550,\n  nrPathBufferTooSmall = -2551,\n  nrInvalidEntryIterationOp = -2552,\n  nrPropertyAlreadyExists = -2553,\n  nrIterationDone = -2554,\n  nrExitedIteratorScope = -2555,\n  nrTransactionAborted = -2556,\n  nrCallNotSupported = -2557\n};\n\n\nenum {\n  invalidIconRefErr = -2580,\n  noSuchIconErr = -2581,\n  noIconDataAvailableErr = -2582\n};\n# 1058 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacErrors.h\" 3\nenum {\n  errOSACantCoerce = errAECoercionFail,\n  errOSACantAccess = errAENoSuchObject,\n  errOSACantAssign = -10006,\n  errOSAGeneralError = -2700,\n  errOSADivideByZero = -2701,\n  errOSANumericOverflow = -2702,\n  errOSACantLaunch = -2703,\n  errOSAAppNotHighLevelEventAware = -2704,\n  errOSACorruptTerminology = -2705,\n  errOSAStackOverflow = -2706,\n  errOSAInternalTableOverflow = -2707,\n  errOSADataBlockTooLarge = -2708,\n  errOSACantGetTerminology = -2709,\n  errOSACantCreate = -2710\n};\n# 1089 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacErrors.h\" 3\nenum {\n  errOSATypeError = errAEWrongDataType,\n  OSAMessageNotUnderstood = errAEEventNotHandled,\n  OSAUndefinedHandler = errAEHandlerNotFound,\n  OSAIllegalAccess = errAEAccessorNotFound,\n  OSAIllegalIndex = errAEIllegalIndex,\n  OSAIllegalRange = errAEImpossibleRange,\n  OSAIllegalAssign = -10003,\n  OSASyntaxError = -2740,\n  OSASyntaxTypeError = -2741,\n  OSATokenTooLong = -2742,\n  OSAMissingParameter = errAEDescNotFound,\n  OSAParameterMismatch = errAEWrongNumberArgs,\n  OSADuplicateParameter = -2750,\n  OSADuplicateProperty = -2751,\n  OSADuplicateHandler = -2752,\n  OSAUndefinedVariable = -2753,\n  OSAInconsistentDeclarations = -2754,\n  OSAControlFlowError = -2755\n};\n# 1130 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacErrors.h\" 3\nenum {\n  errASCantConsiderAndIgnore = -2720,\n  errASCantCompareMoreThan32k = -2721,\n  errASTerminologyNestingTooDeep = -2760,\n  errASIllegalFormalParameter = -2761,\n  errASParameterNotForEvent = -2762,\n  errASNoResultReturned = -2763,\n  errASInconsistentNames = -2780\n};\n\n\n\nenum {\n  cfragFirstErrCode = -2800,\n  cfragContextIDErr = -2800,\n  cfragConnectionIDErr = -2801,\n  cfragNoSymbolErr = -2802,\n  cfragNoSectionErr = -2803,\n  cfragNoLibraryErr = -2804,\n  cfragDupRegistrationErr = -2805,\n  cfragFragmentFormatErr = -2806,\n  cfragUnresolvedErr = -2807,\n  cfragNoPositionErr = -2808,\n  cfragNoPrivateMemErr = -2809,\n  cfragNoClientMemErr = -2810,\n  cfragNoIDsErr = -2811,\n  cfragInitOrderErr = -2812,\n  cfragImportTooOldErr = -2813,\n  cfragImportTooNewErr = -2814,\n  cfragInitLoopErr = -2815,\n  cfragInitAtBootErr = -2816,\n  cfragLibConnErr = -2817,\n  cfragCFMStartupErr = -2818,\n  cfragCFMInternalErr = -2819,\n  cfragFragmentCorruptErr = -2820,\n  cfragInitFunctionErr = -2821,\n  cfragNoApplicationErr = -2822,\n  cfragArchitectureErr = -2823,\n  cfragFragmentUsageErr = -2824,\n  cfragFileSizeErr = -2825,\n  cfragNotClosureErr = -2826,\n  cfragNoRegistrationErr = -2827,\n  cfragContainerIDErr = -2828,\n  cfragClosureIDErr = -2829,\n  cfragAbortClosureErr = -2830,\n  cfragOutputLengthErr = -2831,\n  cfragMapFileErr = -2851,\n  cfragExecFileRefErr = -2854,\n  cfragStdFolderErr = -2855,\n  cfragRsrcForkErr = -2856,\n  cfragCFragRsrcErr = -2857,\n  cfragLastErrCode = -2899\n};\n\nenum {\n\n  cfragFirstReservedCode = -2897,\n  cfragReservedCode_3 = -2897,\n  cfragReservedCode_2 = -2898,\n  cfragReservedCode_1 = -2899\n};\n# 1225 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacErrors.h\" 3\nenum {\n  invalidComponentID = -3000,\n  validInstancesExist = -3001,\n  componentNotCaptured = -3002,\n  componentDontRegister = -3003,\n  unresolvedComponentDLLErr = -3004,\n  retryComponentRegistrationErr = -3005\n};\n\n\nenum {\n  invalidTranslationPathErr = -3025,\n  couldNotParseSourceFileErr = -3026,\n  noTranslationPathErr = -3030,\n  badTranslationSpecErr = -3031,\n  noPrefAppErr = -3032\n};\n\nenum {\n  buf2SmallErr = -3101,\n  noMPPErr = -3102,\n  ckSumErr = -3103,\n  extractErr = -3104,\n  readQErr = -3105,\n  atpLenErr = -3106,\n  atpBadRsp = -3107,\n  recNotFnd = -3108,\n  sktClosedErr = -3109\n};\n\n\n\nenum {\n  kOTNoError = 0,\n  kOTOutOfMemoryErr = -3211,\n  kOTNotFoundErr = -3201,\n  kOTDuplicateFoundErr = -3216,\n  kOTBadAddressErr = -3150,\n  kOTBadOptionErr = -3151,\n  kOTAccessErr = -3152,\n  kOTBadReferenceErr = -3153,\n  kOTNoAddressErr = -3154,\n  kOTOutStateErr = -3155,\n  kOTBadSequenceErr = -3156,\n  kOTSysErrorErr = -3157,\n  kOTLookErr = -3158,\n  kOTBadDataErr = -3159,\n  kOTBufferOverflowErr = -3160,\n  kOTFlowErr = -3161,\n  kOTNoDataErr = -3162,\n  kOTNoDisconnectErr = -3163,\n  kOTNoUDErrErr = -3164,\n  kOTBadFlagErr = -3165,\n  kOTNoReleaseErr = -3166,\n  kOTNotSupportedErr = -3167,\n  kOTStateChangeErr = -3168,\n  kOTNoStructureTypeErr = -3169,\n  kOTBadNameErr = -3170,\n  kOTBadQLenErr = -3171,\n  kOTAddressBusyErr = -3172,\n  kOTIndOutErr = -3173,\n  kOTProviderMismatchErr = -3174,\n  kOTResQLenErr = -3175,\n  kOTResAddressErr = -3176,\n  kOTQFullErr = -3177,\n  kOTProtocolErr = -3178,\n  kOTBadSyncErr = -3179,\n  kOTCanceledErr = -3180,\n  kEPERMErr = -3200,\n  kENOENTErr = -3201,\n  kENORSRCErr = -3202,\n  kEINTRErr = -3203,\n  kEIOErr = -3204,\n  kENXIOErr = -3205,\n  kEBADFErr = -3208,\n  kEAGAINErr = -3210,\n  kENOMEMErr = -3211,\n  kEACCESErr = -3212,\n  kEFAULTErr = -3213,\n  kEBUSYErr = -3215,\n  kEEXISTErr = -3216,\n  kENODEVErr = -3218,\n  kEINVALErr = -3221,\n  kENOTTYErr = -3224,\n  kEPIPEErr = -3231,\n  kERANGEErr = -3233,\n  kEWOULDBLOCKErr = -3234,\n  kEDEADLKErr = -3234,\n  kEALREADYErr = -3236,\n  kENOTSOCKErr = -3237,\n  kEDESTADDRREQErr = -3238,\n  kEMSGSIZEErr = -3239,\n  kEPROTOTYPEErr = -3240,\n  kENOPROTOOPTErr = -3241,\n  kEPROTONOSUPPORTErr = -3242,\n  kESOCKTNOSUPPORTErr = -3243,\n  kEOPNOTSUPPErr = -3244,\n  kEADDRINUSEErr = -3247,\n  kEADDRNOTAVAILErr = -3248,\n  kENETDOWNErr = -3249,\n  kENETUNREACHErr = -3250,\n  kENETRESETErr = -3251,\n  kECONNABORTEDErr = -3252,\n  kECONNRESETErr = -3253,\n  kENOBUFSErr = -3254,\n  kEISCONNErr = -3255,\n  kENOTCONNErr = -3256,\n  kESHUTDOWNErr = -3257,\n  kETOOMANYREFSErr = -3258,\n  kETIMEDOUTErr = -3259,\n  kECONNREFUSEDErr = -3260,\n  kEHOSTDOWNErr = -3263,\n  kEHOSTUNREACHErr = -3264,\n  kEPROTOErr = -3269,\n  kETIMEErr = -3270,\n  kENOSRErr = -3271,\n  kEBADMSGErr = -3272,\n  kECANCELErr = -3273,\n  kENOSTRErr = -3274,\n  kENODATAErr = -3275,\n  kEINPROGRESSErr = -3276,\n  kESRCHErr = -3277,\n  kENOMSGErr = -3278,\n  kOTClientNotInittedErr = -3279,\n  kOTPortHasDiedErr = -3280,\n  kOTPortWasEjectedErr = -3281,\n  kOTBadConfigurationErr = -3282,\n  kOTConfigurationChangedErr = -3283,\n  kOTUserRequestedErr = -3284,\n  kOTPortLostConnection = -3285\n};\n\n\n\nenum {\n  kQDNoPalette = -3950,\n  kQDNoColorHWCursorSupport = -3951,\n  kQDCursorAlreadyRegistered = -3952,\n  kQDCursorNotRegistered = -3953,\n  kQDCorruptPICTDataErr = -3954\n};\n\n\n\n\nenum {\n  firstPickerError = -4000,\n  invalidPickerType = firstPickerError,\n  requiredFlagsDontMatch = -4001,\n  pickerResourceError = -4002,\n  cantLoadPicker = -4003,\n  cantCreatePickerWindow = -4004,\n  cantLoadPackage = -4005,\n  pickerCantLive = -4006,\n  colorSyncNotInstalled = -4007,\n  badProfileError = -4008,\n  noHelpForItem = -4009\n};\n\n\n\n\nenum {\n  kNSL68kContextNotSupported = -4170,\n  kNSLSchedulerError = -4171,\n  kNSLBadURLSyntax = -4172,\n  kNSLNoCarbonLib = -4173,\n  kNSLUILibraryNotAvailable = -4174,\n  kNSLNotImplementedYet = -4175,\n  kNSLErrNullPtrError = -4176,\n  kNSLSomePluginsFailedToLoad = -4177,\n  kNSLNullNeighborhoodPtr = -4178,\n  kNSLNoPluginsForSearch = -4179,\n  kNSLSearchAlreadyInProgress = -4180,\n  kNSLNoPluginsFound = -4181,\n  kNSLPluginLoadFailed = -4182,\n  kNSLBadProtocolTypeErr = -4183,\n  kNSLNullListPtr = -4184,\n  kNSLBadClientInfoPtr = -4185,\n  kNSLCannotContinueLookup = -4186,\n  kNSLBufferTooSmallForData = -4187,\n  kNSLNoContextAvailable = -4188,\n  kNSLRequestBufferAlreadyInList = -4189,\n  kNSLInvalidPluginSpec = -4190,\n  kNSLNoSupportForService = -4191,\n  kNSLBadNetConnection = -4192,\n  kNSLBadDataTypeErr = -4193,\n  kNSLBadServiceTypeErr = -4194,\n  kNSLBadReferenceErr = -4195,\n  kNSLNoElementsInList = -4196,\n  kNSLInsufficientOTVer = -4197,\n  kNSLInsufficientSysVer = -4198,\n  kNSLNotInitialized = -4199,\n  kNSLInitializationFailed = -4200\n};\n\n\n\n\nenum {\n  kDTPHoldJobErr = -4200,\n  kDTPStopQueueErr = -4201,\n  kDTPTryAgainErr = -4202,\n  kDTPAbortJobErr = 128\n};\n\n\n\nenum {\n\n  cmElementTagNotFound = -4200,\n  cmIndexRangeErr = -4201,\n  cmCantDeleteElement = -4202,\n  cmFatalProfileErr = -4203,\n  cmInvalidProfile = -4204,\n  cmInvalidProfileLocation = -4205,\n  cmCantCopyModifiedV1Profile = -4215,\n\n  cmInvalidSearch = -4206,\n  cmSearchError = -4207,\n  cmErrIncompatibleProfile = -4208,\n  cmInvalidColorSpace = -4209,\n  cmInvalidSrcMap = -4210,\n  cmInvalidDstMap = -4211,\n  cmNoGDevicesError = -4212,\n  cmInvalidProfileComment = -4213,\n  cmRangeOverFlow = -4214,\n  cmNamedColorNotFound = -4216,\n  cmCantGamutCheckError = -4217\n};\n\n\nenum {\n  badFolderDescErr = -4270,\n  duplicateFolderDescErr = -4271,\n  noMoreFolderDescErr = -4272,\n  invalidFolderTypeErr = -4273,\n  duplicateRoutingErr = -4274,\n  routingNotFoundErr = -4275,\n  badRoutingSizeErr = -4276\n};\n\n\n\nenum {\n  coreFoundationUnknownErr = -4960\n};\n\n\nenum {\n  errCoreEndianDataTooShortForFormat = -4940,\n  errCoreEndianDataTooLongForFormat = -4941,\n  errCoreEndianDataDoesNotMatchFormat = -4942\n};\n\n\n\nenum {\n  internalScrapErr = -4988,\n  duplicateScrapFlavorErr = -4989,\n  badScrapRefErr = -4990,\n  processStateIncorrectErr = -4991,\n  scrapPromiseNotKeptErr = -4992,\n  noScrapPromiseKeeperErr = -4993,\n  nilScrapFlavorDataErr = -4994,\n  scrapFlavorFlagsMismatchErr = -4995,\n  scrapFlavorSizeMismatchErr = -4996,\n  illegalScrapFlavorFlagsErr = -4997,\n  illegalScrapFlavorTypeErr = -4998,\n  illegalScrapFlavorSizeErr = -4999,\n  scrapFlavorNotFoundErr = -102,\n  needClearScrapErr = -100\n};\n\n\nenum {\n\n  afpAccessDenied = -5000,\n  afpAuthContinue = -5001,\n  afpBadUAM = -5002,\n  afpBadVersNum = -5003,\n  afpBitmapErr = -5004,\n  afpCantMove = -5005,\n  afpDenyConflict = -5006,\n  afpDirNotEmpty = -5007,\n  afpDiskFull = -5008,\n  afpEofError = -5009,\n  afpFileBusy = -5010,\n  afpFlatVol = -5011,\n  afpItemNotFound = -5012,\n  afpLockErr = -5013,\n  afpMiscErr = -5014,\n  afpNoMoreLocks = -5015,\n  afpNoServer = -5016,\n  afpObjectExists = -5017,\n  afpObjectNotFound = -5018,\n  afpParmErr = -5019,\n  afpRangeNotLocked = -5020,\n  afpRangeOverlap = -5021,\n  afpSessClosed = -5022,\n  afpUserNotAuth = -5023,\n  afpCallNotSupported = -5024,\n  afpObjectTypeErr = -5025,\n  afpTooManyFilesOpen = -5026,\n  afpServerGoingDown = -5027,\n  afpCantRename = -5028,\n  afpDirNotFound = -5029,\n  afpIconTypeError = -5030,\n  afpVolLocked = -5031,\n  afpObjectLocked = -5032,\n  afpContainsSharedErr = -5033,\n  afpIDNotFound = -5034,\n  afpIDExists = -5035,\n  afpDiffVolErr = -5036,\n  afpCatalogChanged = -5037,\n  afpSameObjectErr = -5038,\n  afpBadIDErr = -5039,\n  afpPwdSameErr = -5040,\n  afpPwdTooShortErr = -5041,\n  afpPwdExpiredErr = -5042,\n  afpInsideSharedErr = -5043,\n\n  afpInsideTrashErr = -5044,\n\n  afpPwdNeedsChangeErr = -5045,\n  afpPwdPolicyErr = -5046,\n  afpAlreadyLoggedInErr = -5047,\n  afpCallNotAllowed = -5048\n};\n\nenum {\n\n  afpBadDirIDType = -5060,\n  afpCantMountMoreSrvre = -5061,\n  afpAlreadyMounted = -5062,\n  afpSameNodeErr = -5063\n};\n\n\n\n\n\n\nenum {\n  numberFormattingNotANumberErr = -5200,\n  numberFormattingOverflowInDestinationErr = -5201,\n  numberFormattingBadNumberFormattingObjectErr = -5202,\n  numberFormattingSpuriousCharErr = -5203,\n  numberFormattingLiteralMissingErr = -5204,\n  numberFormattingDelimiterMissingErr = -5205,\n  numberFormattingEmptyFormatErr = -5206,\n  numberFormattingBadFormatErr = -5207,\n  numberFormattingBadOptionsErr = -5208,\n  numberFormattingBadTokenErr = -5209,\n  numberFormattingUnOrderedCurrencyRangeErr = -5210,\n  numberFormattingBadCurrencyPositionErr = -5211,\n  numberFormattingNotADigitErr = -5212,\n  numberFormattingUnOrdredCurrencyRangeErr = -5210,\n  numberFortmattingNotADigitErr = -5212\n};\n\n\nenum {\n  textParserBadParamErr = -5220,\n  textParserObjectNotFoundErr = -5221,\n  textParserBadTokenValueErr = -5222,\n  textParserBadParserObjectErr = -5223,\n  textParserParamErr = -5224,\n  textParserNoMoreTextErr = -5225,\n  textParserBadTextLanguageErr = -5226,\n  textParserBadTextEncodingErr = -5227,\n  textParserNoSuchTokenFoundErr = -5228,\n  textParserNoMoreTokensErr = -5229\n};\n\nenum {\n  errUnknownAttributeTag = -5240,\n  errMarginWilllNotFit = -5241,\n  errNotInImagingMode = -5242,\n  errAlreadyInImagingMode = -5243,\n  errEngineNotFound = -5244,\n  errIteratorReachedEnd = -5245,\n  errInvalidRange = -5246,\n  errOffsetNotOnElementBounday = -5247,\n  errNoHiliteText = -5248,\n  errEmptyScrap = -5249,\n  errReadOnlyText = -5250,\n  errUnknownElement = -5251,\n  errNonContiuousAttribute = -5252,\n  errCannotUndo = -5253\n};\n\n\n\nenum {\n  hrHTMLRenderingLibNotInstalledErr = -5360,\n  hrMiscellaneousExceptionErr = -5361,\n  hrUnableToResizeHandleErr = -5362,\n  hrURLNotHandledErr = -5363\n};\n\n\n\nenum {\n  errIANoErr = 0,\n  errIAUnknownErr = -5380,\n  errIAAllocationErr = -5381,\n  errIAParamErr = -5382,\n  errIANoMoreItems = -5383,\n  errIABufferTooSmall = -5384,\n  errIACanceled = -5385,\n  errIAInvalidDocument = -5386,\n  errIATextExtractionErr = -5387,\n  errIAEndOfTextRun = -5388\n};\n\n\n\nenum {\n  qtsBadSelectorErr = -5400,\n  qtsBadStateErr = -5401,\n  qtsBadDataErr = -5402,\n  qtsUnsupportedDataTypeErr = -5403,\n  qtsUnsupportedRateErr = -5404,\n  qtsUnsupportedFeatureErr = -5405,\n  qtsTooMuchDataErr = -5406,\n  qtsUnknownValueErr = -5407,\n  qtsTimeoutErr = -5408,\n  qtsConnectionFailedErr = -5420,\n  qtsAddressBusyErr = -5421\n};\n\n\nenum {\n\n  gestaltUnknownErr = -5550,\n  gestaltUndefSelectorErr = -5551,\n  gestaltDupSelectorErr = -5552,\n  gestaltLocationErr = -5553\n};\n\n\n\nenum {\n  menuPropertyInvalidErr = -5603,\n  menuPropertyInvalid = menuPropertyInvalidErr,\n  menuPropertyNotFoundErr = -5604,\n  menuNotFoundErr = -5620,\n  menuUsesSystemDefErr = -5621,\n  menuItemNotFoundErr = -5622,\n  menuInvalidErr = -5623\n};\n\n\n\nenum {\n  errInvalidWindowPtr = -5600,\n  errInvalidWindowRef = -5600,\n  errUnsupportedWindowAttributesForClass = -5601,\n  errWindowDoesNotHaveProxy = -5602,\n  errInvalidWindowProperty = -5603,\n  errWindowPropertyNotFound = -5604,\n  errUnrecognizedWindowClass = -5605,\n  errCorruptWindowDescription = -5606,\n  errUserWantsToDragWindow = -5607,\n  errWindowsAlreadyInitialized = -5608,\n  errFloatingWindowsNotInitialized = -5609,\n  errWindowNotFound = -5610,\n  errWindowDoesNotFitOnscreen = -5611,\n  windowAttributeImmutableErr = -5612,\n  windowAttributesConflictErr = -5613,\n  windowManagerInternalErr = -5614,\n  windowWrongStateErr = -5615,\n  windowGroupInvalidErr = -5616,\n  windowAppModalStateAlreadyExistsErr = -5617,\n  windowNoAppModalStateErr = -5618,\n  errWindowDoesntSupportFocus = -30583,\n  errWindowRegionCodeInvalid = -30593\n};\n\n\n\nenum {\n  dialogNoTimeoutErr = -5640\n};\n\n\n\nenum {\n  kNavWrongDialogStateErr = -5694,\n  kNavWrongDialogClassErr = -5695,\n  kNavInvalidSystemConfigErr = -5696,\n  kNavCustomControlMessageFailedErr = -5697,\n  kNavInvalidCustomControlMessageErr = -5698,\n  kNavMissingKindStringErr = -5699\n};\n\n\n\nenum {\n  collectionItemLockedErr = -5750,\n  collectionItemNotFoundErr = -5751,\n  collectionIndexRangeErr = -5752,\n  collectionVersionErr = -5753\n};\n\n\n\nenum {\n  kQTSSUnknownErr = -6150\n};\n\n\nenum {\n\n  kDMGenErr = -6220,\n\n  kDMMirroringOnAlready = -6221,\n  kDMWrongNumberOfDisplays = -6222,\n  kDMMirroringBlocked = -6223,\n  kDMCantBlock = -6224,\n  kDMMirroringNotOn = -6225,\n\n  kSysSWTooOld = -6226,\n  kDMSWNotInitializedErr = -6227,\n  kDMDriverNotDisplayMgrAwareErr = -6228,\n  kDMDisplayNotFoundErr = -6229,\n  kDMNotFoundErr = -6229,\n  kDMDisplayAlreadyInstalledErr = -6230,\n  kDMMainDisplayCannotMoveErr = -6231,\n  kDMNoDeviceTableclothErr = -6231,\n  kDMFoundErr = -6232\n};\n\n\n\n\n\nenum {\n  laTooSmallBufferErr = -6984,\n  laEnvironmentBusyErr = -6985,\n  laEnvironmentNotFoundErr = -6986,\n  laEnvironmentExistErr = -6987,\n  laInvalidPathErr = -6988,\n  laNoMoreMorphemeErr = -6989,\n  laFailAnalysisErr = -6990,\n  laTextOverFlowErr = -6991,\n  laDictionaryNotOpenedErr = -6992,\n  laDictionaryUnknownErr = -6993,\n  laDictionaryTooManyErr = -6994,\n  laPropertyValueErr = -6995,\n  laPropertyUnknownErr = -6996,\n  laPropertyIsReadOnlyErr = -6997,\n  laPropertyNotFoundErr = -6998,\n  laPropertyErr = -6999,\n  laEngineNotFoundErr = -7000\n};\n\n\nenum {\n  kUSBNoErr = 0,\n  kUSBNoTran = 0,\n  kUSBNoDelay = 0,\n  kUSBPending = 1\n};\n# 1804 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacErrors.h\" 3\nenum {\n  kUSBNotSent2Err = -6901,\n  kUSBNotSent1Err = -6902,\n  kUSBBufUnderRunErr = -6903,\n  kUSBBufOvrRunErr = -6904,\n  kUSBRes2Err = -6905,\n  kUSBRes1Err = -6906,\n  kUSBUnderRunErr = -6907,\n  kUSBOverRunErr = -6908,\n  kUSBWrongPIDErr = -6909,\n  kUSBPIDCheckErr = -6910,\n  kUSBNotRespondingErr = -6911,\n  kUSBEndpointStallErr = -6912,\n  kUSBDataToggleErr = -6913,\n  kUSBBitstufErr = -6914,\n  kUSBCRCErr = -6915,\n  kUSBLinkErr = -6916\n};\n\n\n\n\n\n\nenum {\n  kUSBQueueFull = -6948,\n  kUSBNotHandled = -6987,\n  kUSBUnknownNotification = -6949,\n  kUSBBadDispatchTable = -6950\n};\n\n\n\n\n\n\n\nenum {\n  kUSBInternalReserved10 = -6951,\n  kUSBInternalReserved9 = -6952,\n  kUSBInternalReserved8 = -6953,\n  kUSBInternalReserved7 = -6954,\n  kUSBInternalReserved6 = -6955,\n  kUSBInternalReserved5 = -6956,\n  kUSBInternalReserved4 = -6957,\n  kUSBInternalReserved3 = -6958,\n  kUSBInternalReserved2 = -6959,\n  kUSBInternalReserved1 = -6960\n};\n\n\nenum {\n  kUSBPortDisabled = -6969,\n  kUSBQueueAborted = -6970,\n  kUSBTimedOut = -6971,\n  kUSBDeviceDisconnected = -6972,\n  kUSBDeviceNotSuspended = -6973,\n  kUSBDeviceSuspended = -6974,\n  kUSBInvalidBuffer = -6975,\n  kUSBDevicePowerProblem = -6976,\n  kUSBDeviceBusy = -6977,\n  kUSBUnknownInterfaceErr = -6978,\n  kUSBPipeStalledError = -6979,\n  kUSBPipeIdleError = -6980,\n  kUSBNoBandwidthError = -6981,\n  kUSBAbortedError = -6982,\n  kUSBFlagsError = -6983,\n  kUSBCompletionError = -6984,\n  kUSBPBLengthError = -6985,\n  kUSBPBVersionError = -6986,\n  kUSBNotFound = -6987,\n  kUSBOutOfMemoryErr = -6988,\n  kUSBDeviceErr = -6989,\n  kUSBNoDeviceErr = -6990,\n  kUSBAlreadyOpenErr = -6991,\n  kUSBTooManyTransactionsErr = -6992,\n  kUSBUnknownRequestErr = -6993,\n  kUSBRqErr = -6994,\n  kUSBIncorrectTypeErr = -6995,\n  kUSBTooManyPipesErr = -6996,\n  kUSBUnknownPipeErr = -6997,\n  kUSBUnknownDeviceErr = -6998,\n  kUSBInternalErr = -6999\n};\n\n\n\n\n\nenum {\n  dcmParamErr = -7100,\n  dcmNotDictionaryErr = -7101,\n  dcmBadDictionaryErr = -7102,\n  dcmPermissionErr = -7103,\n  dcmDictionaryNotOpenErr = -7104,\n  dcmDictionaryBusyErr = -7105,\n  dcmBlockFullErr = -7107,\n  dcmNoRecordErr = -7108,\n  dcmDupRecordErr = -7109,\n  dcmNecessaryFieldErr = -7110,\n  dcmBadFieldInfoErr = -7111,\n  dcmBadFieldTypeErr = -7112,\n  dcmNoFieldErr = -7113,\n  dcmBadKeyErr = -7115,\n  dcmTooManyKeyErr = -7116,\n  dcmBadDataSizeErr = -7117,\n  dcmBadFindMethodErr = -7118,\n  dcmBadPropertyErr = -7119,\n  dcmProtectedErr = -7121,\n  dcmNoAccessMethodErr = -7122,\n  dcmBadFeatureErr = -7124,\n  dcmIterationCompleteErr = -7126,\n  dcmBufferOverflowErr = -7127\n};\n\n\n\nenum {\n  kRAInvalidParameter = -7100,\n  kRAInvalidPort = -7101,\n  kRAStartupFailed = -7102,\n  kRAPortSetupFailed = -7103,\n  kRAOutOfMemory = -7104,\n  kRANotSupported = -7105,\n  kRAMissingResources = -7106,\n  kRAIncompatiblePrefs = -7107,\n  kRANotConnected = -7108,\n  kRAConnectionCanceled = -7109,\n  kRAUnknownUser = -7110,\n  kRAInvalidPassword = -7111,\n  kRAInternalError = -7112,\n  kRAInstallationDamaged = -7113,\n  kRAPortBusy = -7114,\n  kRAUnknownPortState = -7115,\n  kRAInvalidPortState = -7116,\n  kRAInvalidSerialProtocol = -7117,\n  kRAUserLoginDisabled = -7118,\n  kRAUserPwdChangeRequired = -7119,\n  kRAUserPwdEntryRequired = -7120,\n  kRAUserInteractionRequired = -7121,\n  kRAInitOpenTransportFailed = -7122,\n  kRARemoteAccessNotReady = -7123,\n  kRATCPIPInactive = -7124,\n  kRATCPIPNotConfigured = -7125,\n  kRANotPrimaryInterface = -7126,\n  kRAConfigurationDBInitErr = -7127,\n  kRAPPPProtocolRejected = -7128,\n  kRAPPPAuthenticationFailed = -7129,\n  kRAPPPNegotiationFailed = -7130,\n  kRAPPPUserDisconnected = -7131,\n  kRAPPPPeerDisconnected = -7132,\n  kRAPeerNotResponding = -7133,\n  kRAATalkInactive = -7134,\n  kRAExtAuthenticationFailed = -7135,\n  kRANCPRejectedbyPeer = -7136,\n  kRADuplicateIPAddr = -7137,\n  kRACallBackFailed = -7138,\n  kRANotEnabled = -7139\n};\n# 1972 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacErrors.h\" 3\nenum {\n  kATSUInvalidTextLayoutErr = -8790,\n\n\n  kATSUInvalidStyleErr = -8791,\n\n\n  kATSUInvalidTextRangeErr = -8792,\n\n\n  kATSUFontsMatched = -8793,\n\n\n  kATSUFontsNotMatched = -8794,\n\n\n  kATSUNoCorrespondingFontErr = -8795,\n\n\n\n\n\n\n  kATSUInvalidFontErr = -8796,\n  kATSUInvalidAttributeValueErr = -8797,\n\n  kATSUInvalidAttributeSizeErr = -8798,\n\n  kATSUInvalidAttributeTagErr = -8799,\n\n  kATSUInvalidCacheErr = -8800,\n\n\n\n\n  kATSUNotSetErr = -8801,\n\n\n\n  kATSUNoStyleRunsAssignedErr = -8802,\n\n  kATSUQuickDrawTextErr = -8803,\n\n  kATSULowLevelErr = -8804,\n\n  kATSUNoFontCmapAvailableErr = -8805,\n\n  kATSUNoFontScalerAvailableErr = -8806,\n\n  kATSUCoordinateOverflowErr = -8807,\n\n  kATSULineBreakInWord = -8808,\n\n\n  kATSUBusyObjectErr = -8809\n};\n# 2037 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacErrors.h\" 3\nenum {\n\n  kTextUnsupportedEncodingErr = -8738,\n  kTextMalformedInputErr = -8739,\n  kTextUndefinedElementErr = -8740,\n  kTECMissingTableErr = -8745,\n  kTECTableChecksumErr = -8746,\n  kTECTableFormatErr = -8747,\n  kTECCorruptConverterErr = -8748,\n  kTECNoConversionPathErr = -8749,\n  kTECBufferBelowMinimumSizeErr = -8750,\n  kTECArrayFullErr = -8751,\n  kTECBadTextRunErr = -8752,\n  kTECPartialCharErr = -8753,\n  kTECUnmappableElementErr = -8754,\n  kTECIncompleteElementErr = -8755,\n  kTECDirectionErr = -8756,\n  kTECGlobalsUnavailableErr = -8770,\n  kTECItemUnavailableErr = -8771,\n\n  kTECUsedFallbacksStatus = -8783,\n  kTECNeedFlushStatus = -8784,\n  kTECOutputBufferFullStatus = -8785,\n\n  unicodeChecksumErr = -8769,\n  unicodeNoTableErr = -8768,\n  unicodeVariantErr = -8767,\n  unicodeFallbacksErr = -8766,\n  unicodePartConvertErr = -8765,\n  unicodeBufErr = -8764,\n  unicodeCharErr = -8763,\n  unicodeElementErr = -8762,\n  unicodeNotFoundErr = -8761,\n  unicodeTableFormatErr = -8760,\n  unicodeDirectionErr = -8759,\n  unicodeContextualErr = -8758,\n  unicodeTextEncodingDataErr = -8757\n};\n\n\n\nenum {\n  kUTCUnderflowErr = -8850,\n  kUTCOverflowErr = -8851,\n  kIllegalClockValueErr = -8852\n};\n\n\n\n\n\nenum {\n  kATSUInvalidFontFallbacksErr = -8900,\n\n  kATSUUnsupportedStreamFormatErr = -8901,\n\n  kATSUBadStreamErr = -8902,\n\n\n  kATSUOutputBufferTooSmallErr = -8903,\n\n  kATSUInvalidCallInsideCallbackErr = -8904,\n\n  kATSUNoFontNameErr = -8905,\n\n  kATSULastErr = -8959\n};\n\n\n\nenum {\n  codecErr = -8960,\n  noCodecErr = -8961,\n  codecUnimpErr = -8962,\n  codecSizeErr = -8963,\n  codecScreenBufErr = -8964,\n  codecImageBufErr = -8965,\n  codecSpoolErr = -8966,\n  codecAbortErr = -8967,\n  codecWouldOffscreenErr = -8968,\n  codecBadDataErr = -8969,\n  codecDataVersErr = -8970,\n  codecExtensionNotFoundErr = -8971,\n  scTypeNotFoundErr = codecExtensionNotFoundErr,\n  codecConditionErr = -8972,\n  codecOpenErr = -8973,\n  codecCantWhenErr = -8974,\n  codecCantQueueErr = -8975,\n  codecNothingToBlitErr = -8976,\n  codecNoMemoryPleaseWaitErr = -8977,\n  codecDisabledErr = -8978,\n  codecNeedToFlushChainErr = -8979,\n  lockPortBitsBadSurfaceErr = -8980,\n  lockPortBitsWindowMovedErr = -8981,\n  lockPortBitsWindowResizedErr = -8982,\n  lockPortBitsWindowClippedErr = -8983,\n  lockPortBitsBadPortErr = -8984,\n  lockPortBitsSurfaceLostErr = -8985,\n  codecParameterDialogConfirm = -8986,\n  codecNeedAccessKeyErr = -8987,\n  codecOffscreenFailedErr = -8988,\n  codecDroppedFrameErr = -8989,\n  directXObjectAlreadyExists = -8990,\n  lockPortBitsWrongGDeviceErr = -8991,\n  codecOffscreenFailedPleaseRetryErr = -8992,\n  badCodecCharacterizationErr = -8993,\n  noThumbnailFoundErr = -8994\n};\n\n\n\nenum {\n  kBadAdapterErr = -9050,\n  kBadAttributeErr = -9051,\n  kBadBaseErr = -9052,\n  kBadEDCErr = -9053,\n  kBadIRQErr = -9054,\n  kBadOffsetErr = -9055,\n  kBadPageErr = -9056,\n  kBadSizeErr = -9057,\n  kBadSocketErr = -9058,\n  kBadTypeErr = -9059,\n  kBadVccErr = -9060,\n  kBadVppErr = -9061,\n  kBadWindowErr = -9062,\n  kBadArgLengthErr = -9063,\n  kBadArgsErr = -9064,\n  kBadHandleErr = -9065,\n  kBadCISErr = -9066,\n  kBadSpeedErr = -9067,\n  kReadFailureErr = -9068,\n  kWriteFailureErr = -9069,\n  kGeneralFailureErr = -9070,\n  kNoCardErr = -9071,\n  kUnsupportedFunctionErr = -9072,\n  kUnsupportedModeErr = -9073,\n  kBusyErr = -9074,\n  kWriteProtectedErr = -9075,\n  kConfigurationLockedErr = -9076,\n  kInUseErr = -9077,\n  kNoMoreItemsErr = -9078,\n  kOutOfResourceErr = -9079,\n  kNoCardSevicesSocketsErr = -9080,\n  kInvalidRegEntryErr = -9081,\n  kBadLinkErr = -9082,\n  kBadDeviceErr = -9083,\n  k16BitCardErr = -9084,\n  kCardBusCardErr = -9085,\n  kPassCallToChainErr = -9086,\n  kCantConfigureCardErr = -9087,\n  kPostCardEventErr = -9088,\n  kInvalidDeviceNumber = -9089,\n  kUnsupportedVsErr = -9090,\n  kInvalidCSClientErr = -9091,\n  kBadTupleDataErr = -9092,\n  kBadCustomIFIDErr = -9093,\n  kNoIOWindowRequestedErr = -9094,\n  kNoMoreTimerClientsErr = -9095,\n  kNoMoreInterruptSlotsErr = -9096,\n  kNoClientTableErr = -9097,\n  kUnsupportedCardErr = -9098,\n  kNoCardEnablersFoundErr = -9099,\n  kNoEnablerForCardErr = -9100,\n  kNoCompatibleNameErr = -9101,\n  kClientRequestDenied = -9102,\n\n  kNotReadyErr = -9103,\n  kTooManyIOWindowsErr = -9104,\n  kAlreadySavedStateErr = -9105,\n  kAttemptDupCardEntryErr = -9106,\n  kCardPowerOffErr = -9107,\n  kNotZVCapableErr = -9108,\n  kNoCardBusCISErr = -9109\n};\n\n\nenum {\n  noDeviceForChannel = -9400,\n  grabTimeComplete = -9401,\n  cantDoThatInCurrentMode = -9402,\n  notEnoughMemoryToGrab = -9403,\n  notEnoughDiskSpaceToGrab = -9404,\n  couldntGetRequiredComponent = -9405,\n  badSGChannel = -9406,\n  seqGrabInfoNotAvailable = -9407,\n  deviceCantMeetRequest = -9408,\n  badControllerHeight = -9994,\n  editingNotAllowed = -9995,\n  controllerBoundsNotExact = -9996,\n  cannotSetWidthOfAttachedController = -9997,\n  controllerHasFixedHeight = -9998,\n  cannotMoveAttachedController = -9999\n};\n\n\nenum {\n  errAEBadKeyForm = -10002,\n  errAECantHandleClass = -10010,\n  errAECantSupplyType = -10009,\n  errAECantUndo = -10015,\n  errAEEventFailed = -10000,\n  errAEIndexTooLarge = -10007,\n  errAEInTransaction = -10011,\n  errAELocalOnly = -10016,\n  errAENoSuchTransaction = -10012,\n  errAENotAnElement = -10008,\n  errAENotASingleObject = -10014,\n  errAENotModifiable = -10003,\n  errAENoUserSelection = -10013,\n  errAEPrivilegeError = -10004,\n  errAEReadDenied = -10005,\n  errAETypeError = -10001,\n  errAEWriteDenied = -10006,\n  errAENotAnEnumMember = -10023,\n  errAECantPutThatThere = -10024,\n  errAEPropertiesClash = -10025\n};\n\n\nenum {\n  telGenericError = -1,\n  telNoErr = 0,\n  telNoTools = 8,\n  telBadTermErr = -10001,\n  telBadDNErr = -10002,\n  telBadCAErr = -10003,\n  telBadHandErr = -10004,\n  telBadProcErr = -10005,\n  telCAUnavail = -10006,\n  telNoMemErr = -10007,\n  telNoOpenErr = -10008,\n  telBadHTypeErr = -10010,\n  telHTypeNotSupp = -10011,\n  telBadLevelErr = -10012,\n  telBadVTypeErr = -10013,\n  telVTypeNotSupp = -10014,\n  telBadAPattErr = -10015,\n  telAPattNotSupp = -10016,\n  telBadIndex = -10017,\n  telIndexNotSupp = -10018,\n  telBadStateErr = -10019,\n  telStateNotSupp = -10020,\n  telBadIntExt = -10021,\n  telIntExtNotSupp = -10022,\n  telBadDNDType = -10023,\n  telDNDTypeNotSupp = -10024,\n  telFeatNotSub = -10030,\n  telFeatNotAvail = -10031,\n  telFeatActive = -10032,\n  telFeatNotSupp = -10033,\n  telConfLimitErr = -10040,\n  telConfNoLimit = -10041,\n  telConfErr = -10042,\n  telConfRej = -10043,\n  telTransferErr = -10044,\n  telTransferRej = -10045,\n  telCBErr = -10046,\n  telConfLimitExceeded = -10047,\n  telBadDNType = -10050,\n  telBadPageID = -10051,\n  telBadIntercomID = -10052,\n  telBadFeatureID = -10053,\n  telBadFwdType = -10054,\n  telBadPickupGroupID = -10055,\n  telBadParkID = -10056,\n  telBadSelect = -10057,\n  telBadBearerType = -10058,\n  telBadRate = -10059,\n  telDNTypeNotSupp = -10060,\n  telFwdTypeNotSupp = -10061,\n  telBadDisplayMode = -10062,\n  telDisplayModeNotSupp = -10063,\n  telNoCallbackRef = -10064,\n  telAlreadyOpen = -10070,\n  telStillNeeded = -10071,\n  telTermNotOpen = -10072,\n  telCANotAcceptable = -10080,\n  telCANotRejectable = -10081,\n  telCANotDeflectable = -10082,\n  telPBErr = -10090,\n  telBadFunction = -10091,\n\n  telNoSuchTool = -10102,\n  telUnknownErr = -10103,\n  telNoCommFolder = -10106,\n  telInitFailed = -10107,\n  telBadCodeResource = -10108,\n  telDeviceNotFound = -10109,\n  telBadProcID = -10110,\n  telValidateFailed = -10111,\n  telAutoAnsNotOn = -10112,\n  telDetAlreadyOn = -10113,\n  telBadSWErr = -10114,\n  telBadSampleRate = -10115,\n  telNotEnoughdspBW = -10116\n};\n\nenum {\n  errTaskNotFound = -10780\n};\n\n\n\n\n\nenum {\n\n  pmBusyErr = -13000,\n  pmReplyTOErr = -13001,\n  pmSendStartErr = -13002,\n  pmSendEndErr = -13003,\n  pmRecvStartErr = -13004,\n  pmRecvEndErr = -13005\n};\n\n\nenum {\n  kPowerHandlerExistsForDeviceErr = -13006,\n  kPowerHandlerNotFoundForDeviceErr = -13007,\n  kPowerHandlerNotFoundForProcErr = -13008,\n  kPowerMgtMessageNotHandled = -13009,\n  kPowerMgtRequestDenied = -13010,\n  kCantReportProcessorTemperatureErr = -13013,\n  kProcessorTempRoutineRequiresMPLib2 = -13014,\n  kNoSuchPowerSource = -13020,\n  kBridgeSoftwareRunningCantSleep = -13038\n};\n\n\n\nenum {\n  debuggingExecutionContextErr = -13880,\n  debuggingDuplicateSignatureErr = -13881,\n  debuggingDuplicateOptionErr = -13882,\n  debuggingInvalidSignatureErr = -13883,\n  debuggingInvalidOptionErr = -13884,\n  debuggingInvalidNameErr = -13885,\n  debuggingNoCallbackErr = -13886,\n  debuggingNoMatchErr = -13887\n};\n\n\n\nenum {\n  kHIDVersionIncompatibleErr = -13909,\n  kHIDDeviceNotReady = -13910\n};\n\n\n\nenum {\n  kHIDSuccess = 0,\n  kHIDInvalidRangePageErr = -13923,\n  kHIDReportIDZeroErr = -13924,\n  kHIDReportCountZeroErr = -13925,\n  kHIDReportSizeZeroErr = -13926,\n  kHIDUnmatchedDesignatorRangeErr = -13927,\n  kHIDUnmatchedStringRangeErr = -13928,\n  kHIDInvertedUsageRangeErr = -13929,\n  kHIDUnmatchedUsageRangeErr = -13930,\n  kHIDInvertedPhysicalRangeErr = -13931,\n  kHIDInvertedLogicalRangeErr = -13932,\n  kHIDBadLogicalMaximumErr = -13933,\n  kHIDBadLogicalMinimumErr = -13934,\n  kHIDUsagePageZeroErr = -13935,\n  kHIDEndOfDescriptorErr = -13936,\n  kHIDNotEnoughMemoryErr = -13937,\n  kHIDBadParameterErr = -13938,\n  kHIDNullPointerErr = -13939,\n  kHIDInvalidReportLengthErr = -13940,\n  kHIDInvalidReportTypeErr = -13941,\n  kHIDBadLogPhysValuesErr = -13942,\n  kHIDIncompatibleReportErr = -13943,\n  kHIDInvalidPreparsedDataErr = -13944,\n  kHIDNotValueArrayErr = -13945,\n  kHIDUsageNotFoundErr = -13946,\n  kHIDValueOutOfRangeErr = -13947,\n  kHIDBufferTooSmallErr = -13948,\n  kHIDNullStateErr = -13949,\n  kHIDBaseError = -13950\n};\n\n\n\nenum {\n  kModemOutOfMemory = -14000,\n  kModemPreferencesMissing = -14001,\n  kModemScriptMissing = -14002\n};\n\n\n\n\nenum {\n  kTXNEndIterationErr = -22000,\n  kTXNCannotAddFrameErr = -22001,\n  kTXNInvalidFrameIDErr = -22002,\n  kTXNIllegalToCrossDataBoundariesErr = -22003,\n  kTXNUserCanceledOperationErr = -22004,\n  kTXNBadDefaultFileTypeWarning = -22005,\n  kTXNCannotSetAutoIndentErr = -22006,\n  kTXNRunIndexOutofBoundsErr = -22007,\n  kTXNNoMatchErr = -22008,\n  kTXNAttributeTagInvalidForRunErr = -22009,\n  kTXNSomeOrAllTagsInvalidForRunErr = -22010,\n  kTXNInvalidRunIndex = -22011,\n  kTXNAlreadyInitializedErr = -22012,\n  kTXNCannotTurnTSMOffWhenUsingUnicodeErr = -22013,\n  kTXNCopyNotAllowedInEchoModeErr = -22014,\n  kTXNDataTypeNotAllowedErr = -22015,\n  kTXNATSUIIsNotInstalledErr = -22016,\n  kTXNOutsideOfLineErr = -22017,\n  kTXNOutsideOfFrameErr = -22018\n};\n\n\n\n\n\nenum {\n  printerStatusOpCodeNotSupportedErr = -25280\n};\n\n\n\nenum {\n  errKCNotAvailable = -25291,\n  errKCReadOnly = -25292,\n  errKCAuthFailed = -25293,\n  errKCNoSuchKeychain = -25294,\n  errKCInvalidKeychain = -25295,\n  errKCDuplicateKeychain = -25296,\n  errKCDuplicateCallback = -25297,\n  errKCInvalidCallback = -25298,\n  errKCDuplicateItem = -25299,\n  errKCItemNotFound = -25300,\n  errKCBufferTooSmall = -25301,\n  errKCDataTooLarge = -25302,\n  errKCNoSuchAttr = -25303,\n  errKCInvalidItemRef = -25304,\n  errKCInvalidSearchRef = -25305,\n  errKCNoSuchClass = -25306,\n  errKCNoDefaultKeychain = -25307,\n  errKCInteractionNotAllowed = -25308,\n  errKCReadOnlyAttr = -25309,\n  errKCWrongKCVersion = -25310,\n  errKCKeySizeNotAllowed = -25311,\n  errKCNoStorageModule = -25312,\n  errKCNoCertificateModule = -25313,\n  errKCNoPolicyModule = -25314,\n  errKCInteractionRequired = -25315,\n  errKCDataNotAvailable = -25316,\n  errKCDataNotModifiable = -25317,\n  errKCCreateChainFailed = -25318\n};\n\n\n\nenum {\n  kUCOutputBufferTooSmall = -25340,\n  kUCTextBreakLocatorMissingType = -25341\n};\n\nenum {\n  kUCTSNoKeysAddedToObjectErr = -25342,\n  kUCTSSearchListErr = -25343\n};\n\nenum {\n  kUCTokenizerIterationFinished = -25344,\n  kUCTokenizerUnknownLang = -25345,\n  kUCTokenNotFound = -25346\n};\n\n\nenum {\n  kMPIterationEndErr = -29275,\n  kMPPrivilegedErr = -29276,\n  kMPProcessCreatedErr = -29288,\n  kMPProcessTerminatedErr = -29289,\n  kMPTaskCreatedErr = -29290,\n  kMPTaskBlockedErr = -29291,\n  kMPTaskStoppedErr = -29292,\n  kMPBlueBlockingErr = -29293,\n  kMPDeletedErr = -29295,\n  kMPTimeoutErr = -29296,\n  kMPTaskAbortedErr = -29297,\n  kMPInsufficientResourcesErr = -29298,\n  kMPInvalidIDErr = -29299\n};\n\nenum {\n  kMPNanokernelNeedsMemoryErr = -29294\n};\n\n\nenum {\n  kCollateAttributesNotFoundErr = -29500,\n  kCollateInvalidOptions = -29501,\n  kCollateMissingUnicodeTableErr = -29502,\n  kCollateUnicodeConvertFailedErr = -29503,\n  kCollatePatternNotFoundErr = -29504,\n  kCollateInvalidChar = -29505,\n  kCollateBufferTooSmall = -29506,\n  kCollateInvalidCollationRef = -29507\n};\n\n\n\nenum {\n  kFNSInvalidReferenceErr = -29580,\n  kFNSBadReferenceVersionErr = -29581,\n  kFNSInvalidProfileErr = -29582,\n  kFNSBadProfileVersionErr = -29583,\n  kFNSDuplicateReferenceErr = -29584,\n  kFNSMismatchErr = -29585,\n  kFNSInsufficientDataErr = -29586,\n  kFNSBadFlattenedSizeErr = -29587,\n  kFNSNameNotFoundErr = -29589\n};\n\n\n\n\nenum {\n  kLocalesBufferTooSmallErr = -30001,\n  kLocalesTableFormatErr = -30002,\n  kLocalesDefaultDisplayStatus = -30029\n};\n\n\n\nenum {\n  kALMInternalErr = -30049,\n  kALMGroupNotFoundErr = -30048,\n  kALMNoSuchModuleErr = -30047,\n  kALMModuleCommunicationErr = -30046,\n  kALMDuplicateModuleErr = -30045,\n  kALMInstallationErr = -30044,\n  kALMDeferSwitchErr = -30043,\n  kALMRebootFlagsLevelErr = -30042\n};\n\nenum {\n  kALMLocationNotFoundErr = kALMGroupNotFoundErr\n};\n\n\n\nenum {\n  kSSpInternalErr = -30340,\n  kSSpVersionErr = -30341,\n  kSSpCantInstallErr = -30342,\n  kSSpParallelUpVectorErr = -30343,\n  kSSpScaleToZeroErr = -30344\n};\n\n\n\nenum {\n  kNSpInitializationFailedErr = -30360,\n  kNSpAlreadyInitializedErr = -30361,\n  kNSpTopologyNotSupportedErr = -30362,\n  kNSpPipeFullErr = -30364,\n  kNSpHostFailedErr = -30365,\n  kNSpProtocolNotAvailableErr = -30366,\n  kNSpInvalidGameRefErr = -30367,\n  kNSpInvalidParameterErr = -30369,\n  kNSpOTNotPresentErr = -30370,\n  kNSpOTVersionTooOldErr = -30371,\n  kNSpMemAllocationErr = -30373,\n  kNSpAlreadyAdvertisingErr = -30374,\n  kNSpNotAdvertisingErr = -30376,\n  kNSpInvalidAddressErr = -30377,\n  kNSpFreeQExhaustedErr = -30378,\n  kNSpRemovePlayerFailedErr = -30379,\n  kNSpAddressInUseErr = -30380,\n  kNSpFeatureNotImplementedErr = -30381,\n  kNSpNameRequiredErr = -30382,\n  kNSpInvalidPlayerIDErr = -30383,\n  kNSpInvalidGroupIDErr = -30384,\n  kNSpNoPlayersErr = -30385,\n  kNSpNoGroupsErr = -30386,\n  kNSpNoHostVolunteersErr = -30387,\n  kNSpCreateGroupFailedErr = -30388,\n  kNSpAddPlayerFailedErr = -30389,\n  kNSpInvalidDefinitionErr = -30390,\n  kNSpInvalidProtocolRefErr = -30391,\n  kNSpInvalidProtocolListErr = -30392,\n  kNSpTimeoutErr = -30393,\n  kNSpGameTerminatedErr = -30394,\n  kNSpConnectFailedErr = -30395,\n  kNSpSendFailedErr = -30396,\n  kNSpMessageTooBigErr = -30397,\n  kNSpCantBlockErr = -30398,\n  kNSpJoinFailedErr = -30399\n};\n\n\n\nenum {\n  kISpInternalErr = -30420,\n  kISpSystemListErr = -30421,\n  kISpBufferToSmallErr = -30422,\n  kISpElementInListErr = -30423,\n  kISpElementNotInListErr = -30424,\n  kISpSystemInactiveErr = -30425,\n  kISpDeviceInactiveErr = -30426,\n  kISpSystemActiveErr = -30427,\n  kISpDeviceActiveErr = -30428,\n  kISpListBusyErr = -30429\n};\n\n\nenum {\n  kDSpNotInitializedErr = -30440L,\n  kDSpSystemSWTooOldErr = -30441L,\n  kDSpInvalidContextErr = -30442L,\n  kDSpInvalidAttributesErr = -30443L,\n  kDSpContextAlreadyReservedErr = -30444L,\n  kDSpContextNotReservedErr = -30445L,\n  kDSpContextNotFoundErr = -30446L,\n  kDSpFrameRateNotReadyErr = -30447L,\n  kDSpConfirmSwitchWarning = -30448L,\n  kDSpInternalErr = -30449L,\n  kDSpStereoContextErr = -30450L\n};\n\n\n\n\n\n\n\nenum {\n  kFBCvTwinExceptionErr = -30500,\n  kFBCnoIndexesFound = -30501,\n  kFBCallocFailed = -30502,\n  kFBCbadParam = -30503,\n  kFBCfileNotIndexed = -30504,\n  kFBCbadIndexFile = -30505,\n  kFBCcompactionFailed = -30506,\n  kFBCvalidationFailed = -30507,\n  kFBCindexingFailed = -30508,\n  kFBCcommitFailed = -30509,\n  kFBCdeletionFailed = -30510,\n  kFBCmoveFailed = -30511,\n  kFBCtokenizationFailed = -30512,\n  kFBCmergingFailed = -30513,\n  kFBCindexCreationFailed = -30514,\n  kFBCaccessorStoreFailed = -30515,\n  kFBCaddDocFailed = -30516,\n  kFBCflushFailed = -30517,\n  kFBCindexNotFound = -30518,\n  kFBCnoSearchSession = -30519,\n  kFBCindexingCanceled = -30520,\n  kFBCaccessCanceled = -30521,\n  kFBCindexFileDestroyed = -30522,\n  kFBCindexNotAvailable = -30523,\n  kFBCsearchFailed = -30524,\n  kFBCsomeFilesNotIndexed = -30525,\n  kFBCillegalSessionChange = -30526,\n\n  kFBCanalysisNotAvailable = -30527,\n  kFBCbadIndexFileVersion = -30528,\n  kFBCsummarizationCanceled = -30529,\n  kFBCindexDiskIOFailed = -30530,\n  kFBCbadSearchSession = -30531,\n  kFBCnoSuchHit = -30532\n};\n\n\n\nenum {\n  notAQTVRMovieErr = -30540,\n  constraintReachedErr = -30541,\n  callNotSupportedByNodeErr = -30542,\n  selectorNotSupportedByNodeErr = -30543,\n  invalidNodeIDErr = -30544,\n  invalidViewStateErr = -30545,\n  timeNotInViewErr = -30546,\n  propertyNotSupportedByNodeErr = -30547,\n  settingNotSupportedByNodeErr = -30548,\n  limitReachedErr = -30549,\n  invalidNodeFormatErr = -30550,\n  invalidHotSpotIDErr = -30551,\n  noMemoryNodeFailedInitialize = -30552,\n  streamingNodeNotReadyErr = -30553,\n  qtvrLibraryLoadErr = -30554,\n  qtvrUninitialized = -30555\n};\n\n\n\nenum {\n  themeInvalidBrushErr = -30560,\n  themeProcessRegisteredErr = -30561,\n  themeProcessNotRegisteredErr = -30562,\n  themeBadTextColorErr = -30563,\n  themeHasNoAccentsErr = -30564,\n  themeBadCursorIndexErr = -30565,\n  themeScriptFontNotFoundErr = -30566,\n  themeMonitorDepthNotSupportedErr = -30567,\n  themeNoAppropriateBrushErr = -30568\n};\n\n\n\n\n\n\n\nenum {\n\n\n\n\n\n\n  errMessageNotSupported = -30580,\n\n\n\n\n\n\n\n  errDataNotSupported = -30581,\n\n\n\n\n\n\n  errControlDoesntSupportFocus = -30582,\n\n\n\n\n\n\n\n  errUnknownControl = -30584,\n# 2788 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacErrors.h\" 3\n  errCouldntSetFocus = -30585,\n# 2797 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacErrors.h\" 3\n  errNoRootControl = -30586,\n\n\n\n\n\n  errRootAlreadyExists = -30587,\n\n\n\n\n\n  errInvalidPartCode = -30588,\n# 2820 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacErrors.h\" 3\n  errControlsAlreadyExist = -30589,\n\n\n\n\n\n  errControlIsNotEmbedder = -30590,\n\n\n\n\n\n\n  errDataSizeMismatch = -30591,\n\n\n\n\n\n\n  errControlHiddenOrDisabled = -30592,\n\n\n\n\n\n\n  errCantEmbedIntoSelf = -30594,\n\n\n\n\n\n\n  errCantEmbedRoot = -30595,\n\n\n\n\n\n  errItemNotControl = -30596,\n\n\n\n\n\n\n\n  controlInvalidDataVersionErr = -30597,\n\n\n\n\n\n  controlPropertyInvalid = -5603,\n\n\n\n\n\n\n  controlPropertyNotFoundErr = -5604,\n\n\n\n\n  controlHandleInvalidErr = -30599\n};\n\n\n\n\n\nenum {\n  kURLInvalidURLReferenceError = -30770,\n  kURLProgressAlreadyDisplayedError = -30771,\n  kURLDestinationExistsError = -30772,\n  kURLInvalidURLError = -30773,\n  kURLUnsupportedSchemeError = -30774,\n  kURLServerBusyError = -30775,\n  kURLAuthenticationError = -30776,\n  kURLPropertyNotYetKnownError = -30777,\n  kURLUnknownPropertyError = -30778,\n  kURLPropertyBufferTooSmallError = -30779,\n  kURLUnsettablePropertyError = -30780,\n  kURLInvalidCallError = -30781,\n  kURLFileEmptyError = -30783,\n  kURLExtensionFailureError = -30785,\n  kURLInvalidConfigurationError = -30786,\n  kURLAccessNotAvailableError = -30787,\n  kURL68kNotSupportedError = -30788\n};\n# 2922 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacErrors.h\" 3\nenum {\n  errCppGeneral = -32000,\n  errCppbad_alloc = -32001,\n  errCppbad_cast = -32002,\n  errCppbad_exception = -32003,\n  errCppbad_typeid = -32004,\n  errCpplogic_error = -32005,\n  errCppdomain_error = -32006,\n  errCppinvalid_argument = -32007,\n  errCpplength_error = -32008,\n  errCppout_of_range = -32009,\n  errCppruntime_error = -32010,\n  errCppoverflow_error = -32011,\n  errCpprange_error = -32012,\n  errCppunderflow_error = -32013,\n  errCppios_base_failure = -32014,\n  errCppLastSystemDefinedError = -32020,\n  errCppLastUserDefinedError = -32049\n};\n\n\nenum {\n  badComponentInstance = (int)0x80008001,\n  badComponentSelector = (int)0x80008002\n};\n\n\n\nenum {\n  dsBusError = 1,\n  dsAddressErr = 2,\n  dsIllInstErr = 3,\n  dsZeroDivErr = 4,\n  dsChkErr = 5,\n  dsOvflowErr = 6,\n  dsPrivErr = 7,\n  dsTraceErr = 8,\n  dsLineAErr = 9,\n  dsLineFErr = 10,\n  dsMiscErr = 11,\n  dsCoreErr = 12,\n  dsIrqErr = 13,\n  dsIOCoreErr = 14,\n  dsLoadErr = 15,\n  dsFPErr = 16,\n  dsNoPackErr = 17,\n  dsNoPk1 = 18,\n  dsNoPk2 = 19\n};\n\nenum {\n  dsNoPk3 = 20,\n  dsNoPk4 = 21,\n  dsNoPk5 = 22,\n  dsNoPk6 = 23,\n  dsNoPk7 = 24,\n  dsMemFullErr = 25,\n  dsBadLaunch = 26,\n  dsFSErr = 27,\n  dsStknHeap = 28,\n  negZcbFreeErr = 33,\n  dsFinderErr = 41,\n  dsBadSlotInt = 51,\n  dsBadSANEOpcode = 81,\n  dsBadPatchHeader = 83,\n  menuPrgErr = 84,\n  dsMBarNFnd = 85,\n  dsHMenuFindErr = 86,\n  dsWDEFNotFound = 87,\n  dsCDEFNotFound = 88,\n  dsMDEFNotFound = 89\n};\n\nenum {\n  dsNoFPU = 90,\n  dsNoPatch = 98,\n  dsBadPatch = 99,\n  dsParityErr = 101,\n  dsOldSystem = 102,\n  ds32BitMode = 103,\n  dsNeedToWriteBootBlocks = 104,\n  dsNotEnoughRAMToBoot = 105,\n  dsBufPtrTooLow = 106,\n  dsVMDeferredFuncTableFull = 112,\n  dsVMBadBackingStore = 113,\n  dsCantHoldSystemHeap = 114,\n  dsSystemRequiresPowerPC = 116,\n  dsGibblyMovedToDisabledFolder = 117,\n  dsUnBootableSystem = 118,\n  dsMustUseFCBAccessors = 119,\n  dsMacOSROMVersionTooOld = 120,\n  dsLostConnectionToNetworkDisk = 121,\n  dsRAMDiskTooBig = 122,\n  dsWriteToSupervisorStackGuardPage = 128,\n  dsReinsert = 30,\n  shutDownAlert = 42,\n  dsShutDownOrRestart = 20000,\n  dsSwitchOffOrRestart = 20001,\n  dsForcedQuit = 20002,\n  dsRemoveDisk = 20003,\n  dsDirtyDisk = 20004,\n  dsShutDownOrResume = 20109,\n  dsSCSIWarn = 20010,\n  dsMBSysError = 29200,\n  dsMBFlpySysError = 29201,\n  dsMBATASysError = 29202,\n  dsMBATAPISysError = 29203,\n  dsMBExternFlpySysError = 29204,\n  dsPCCardATASysError = 29205\n};\n\n\n\n\n\n\nenum {\n  dsNoExtsMacsBug = -1,\n  dsNoExtsDisassembler = -2,\n  dsMacsBugInstalled = -10,\n  dsDisassemblerInstalled = -11,\n  dsExtensionsDisabled = -13,\n  dsGreeting = 40,\n  dsSysErr = 32767,\n\n  WDEFNFnd = dsWDEFNotFound\n};\n\nenum {\n  CDEFNFnd = dsCDEFNotFound,\n  dsNotThe1 = 31,\n  dsBadStartupDisk = 42,\n  dsSystemFileErr = 43,\n  dsHD20Installed = -12,\n  mBarNFnd = -126,\n  fsDSIntErr = -127,\n  hMenuFindErr = -127,\n  userBreak = -490,\n  strUserBreak = -491,\n  exUserBreak = -492\n};\n\n\nenum {\n\n  dsBadLibrary = 1010,\n  dsMixedModeFailure = 1011\n};\n# 3078 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacErrors.h\" 3\nenum {\n  kPOSIXErrorBase = 100000,\n  kPOSIXErrorEPERM = 100001,\n  kPOSIXErrorENOENT = 100002,\n  kPOSIXErrorESRCH = 100003,\n  kPOSIXErrorEINTR = 100004,\n  kPOSIXErrorEIO = 100005,\n  kPOSIXErrorENXIO = 100006,\n  kPOSIXErrorE2BIG = 100007,\n  kPOSIXErrorENOEXEC = 100008,\n  kPOSIXErrorEBADF = 100009,\n  kPOSIXErrorECHILD = 100010,\n  kPOSIXErrorEDEADLK = 100011,\n  kPOSIXErrorENOMEM = 100012,\n  kPOSIXErrorEACCES = 100013,\n  kPOSIXErrorEFAULT = 100014,\n  kPOSIXErrorENOTBLK = 100015,\n  kPOSIXErrorEBUSY = 100016,\n  kPOSIXErrorEEXIST = 100017,\n  kPOSIXErrorEXDEV = 100018,\n  kPOSIXErrorENODEV = 100019,\n  kPOSIXErrorENOTDIR = 100020,\n  kPOSIXErrorEISDIR = 100021,\n  kPOSIXErrorEINVAL = 100022,\n  kPOSIXErrorENFILE = 100023,\n  kPOSIXErrorEMFILE = 100024,\n  kPOSIXErrorENOTTY = 100025,\n  kPOSIXErrorETXTBSY = 100026,\n  kPOSIXErrorEFBIG = 100027,\n  kPOSIXErrorENOSPC = 100028,\n  kPOSIXErrorESPIPE = 100029,\n  kPOSIXErrorEROFS = 100030,\n  kPOSIXErrorEMLINK = 100031,\n  kPOSIXErrorEPIPE = 100032,\n  kPOSIXErrorEDOM = 100033,\n  kPOSIXErrorERANGE = 100034,\n  kPOSIXErrorEAGAIN = 100035,\n  kPOSIXErrorEINPROGRESS = 100036,\n  kPOSIXErrorEALREADY = 100037,\n  kPOSIXErrorENOTSOCK = 100038,\n  kPOSIXErrorEDESTADDRREQ = 100039,\n  kPOSIXErrorEMSGSIZE = 100040,\n  kPOSIXErrorEPROTOTYPE = 100041,\n  kPOSIXErrorENOPROTOOPT = 100042,\n  kPOSIXErrorEPROTONOSUPPORT = 100043,\n  kPOSIXErrorESOCKTNOSUPPORT = 100044,\n  kPOSIXErrorENOTSUP = 100045,\n  kPOSIXErrorEPFNOSUPPORT = 100046,\n  kPOSIXErrorEAFNOSUPPORT = 100047,\n  kPOSIXErrorEADDRINUSE = 100048,\n  kPOSIXErrorEADDRNOTAVAIL = 100049,\n  kPOSIXErrorENETDOWN = 100050,\n  kPOSIXErrorENETUNREACH = 100051,\n  kPOSIXErrorENETRESET = 100052,\n  kPOSIXErrorECONNABORTED = 100053,\n  kPOSIXErrorECONNRESET = 100054,\n  kPOSIXErrorENOBUFS = 100055,\n  kPOSIXErrorEISCONN = 100056,\n  kPOSIXErrorENOTCONN = 100057,\n  kPOSIXErrorESHUTDOWN = 100058,\n  kPOSIXErrorETOOMANYREFS = 100059,\n  kPOSIXErrorETIMEDOUT = 100060,\n  kPOSIXErrorECONNREFUSED = 100061,\n  kPOSIXErrorELOOP = 100062,\n  kPOSIXErrorENAMETOOLONG = 100063,\n  kPOSIXErrorEHOSTDOWN = 100064,\n  kPOSIXErrorEHOSTUNREACH = 100065,\n  kPOSIXErrorENOTEMPTY = 100066,\n  kPOSIXErrorEPROCLIM = 100067,\n  kPOSIXErrorEUSERS = 100068,\n  kPOSIXErrorEDQUOT = 100069,\n  kPOSIXErrorESTALE = 100070,\n  kPOSIXErrorEREMOTE = 100071,\n  kPOSIXErrorEBADRPC = 100072,\n  kPOSIXErrorERPCMISMATCH = 100073,\n  kPOSIXErrorEPROGUNAVAIL = 100074,\n  kPOSIXErrorEPROGMISMATCH = 100075,\n  kPOSIXErrorEPROCUNAVAIL = 100076,\n  kPOSIXErrorENOLCK = 100077,\n  kPOSIXErrorENOSYS = 100078,\n  kPOSIXErrorEFTYPE = 100079,\n  kPOSIXErrorEAUTH = 100080,\n  kPOSIXErrorENEEDAUTH = 100081,\n  kPOSIXErrorEPWROFF = 100082,\n  kPOSIXErrorEDEVERR = 100083,\n  kPOSIXErrorEOVERFLOW = 100084,\n  kPOSIXErrorEBADEXEC = 100085,\n  kPOSIXErrorEBADARCH = 100086,\n  kPOSIXErrorESHLIBVERS = 100087,\n  kPOSIXErrorEBADMACHO = 100088,\n  kPOSIXErrorECANCELED = 100089,\n  kPOSIXErrorEIDRM = 100090,\n  kPOSIXErrorENOMSG = 100091,\n  kPOSIXErrorEILSEQ = 100092,\n  kPOSIXErrorENOATTR = 100093,\n  kPOSIXErrorEBADMSG = 100094,\n  kPOSIXErrorEMULTIHOP = 100095,\n  kPOSIXErrorENODATA = 100096,\n  kPOSIXErrorENOLINK = 100097,\n  kPOSIXErrorENOSR = 100098,\n  kPOSIXErrorENOSTR = 100099,\n  kPOSIXErrorEPROTO = 100100,\n  kPOSIXErrorETIME = 100101,\n  kPOSIXErrorEOPNOTSUPP = 100102\n};\n# 3193 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacErrors.h\" 3\nextern void\nSysError(short errorCode) ;\n# 25 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UTCUtils.h\" 2 3\n# 39 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UTCUtils.h\" 3\n#pragma pack(push, 2)\n\n\nenum {\n  kUTCDefaultOptions = 0\n};\n\n\nstruct UTCDateTime {\n  UInt16 highSeconds;\n  UInt32 lowSeconds;\n  UInt16 fraction;\n};\ntypedef struct UTCDateTime UTCDateTime;\ntypedef UTCDateTime * UTCDateTimePtr;\ntypedef UTCDateTimePtr * UTCDateTimeHandle;\nstruct LocalDateTime {\n  UInt16 highSeconds;\n  UInt32 lowSeconds;\n  UInt16 fraction;\n};\ntypedef struct LocalDateTime LocalDateTime;\ntypedef LocalDateTime * LocalDateTimePtr;\ntypedef LocalDateTimePtr * LocalDateTimeHandle;\n# 249 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UTCUtils.h\" 3\n#pragma pack(pop)\n# 46 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextCommon.h\" 1 3\n# 35 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextCommon.h\" 3\n#pragma pack(push, 2)\n# 50 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextCommon.h\" 3\nenum {\n\n\n\n\n  kTextFlushDefault = 0,\n\n\n\n\n  kTextCenter = 1,\n\n\n\n\n  kTextFlushRight = -1,\n\n\n\n\n  kTextFlushLeft = -2\n};\n\n\n\ntypedef UInt32 TextEncodingBase;\nenum {\n\n  kTextEncodingMacRoman = 0,\n  kTextEncodingMacJapanese = 1,\n  kTextEncodingMacChineseTrad = 2,\n  kTextEncodingMacKorean = 3,\n  kTextEncodingMacArabic = 4,\n  kTextEncodingMacHebrew = 5,\n  kTextEncodingMacGreek = 6,\n  kTextEncodingMacCyrillic = 7,\n  kTextEncodingMacDevanagari = 9,\n  kTextEncodingMacGurmukhi = 10,\n  kTextEncodingMacGujarati = 11,\n  kTextEncodingMacOriya = 12,\n  kTextEncodingMacBengali = 13,\n  kTextEncodingMacTamil = 14,\n  kTextEncodingMacTelugu = 15,\n  kTextEncodingMacKannada = 16,\n  kTextEncodingMacMalayalam = 17,\n  kTextEncodingMacSinhalese = 18,\n  kTextEncodingMacBurmese = 19,\n  kTextEncodingMacKhmer = 20,\n  kTextEncodingMacThai = 21,\n  kTextEncodingMacLaotian = 22,\n  kTextEncodingMacGeorgian = 23,\n  kTextEncodingMacArmenian = 24,\n  kTextEncodingMacChineseSimp = 25,\n  kTextEncodingMacTibetan = 26,\n  kTextEncodingMacMongolian = 27,\n  kTextEncodingMacEthiopic = 28,\n  kTextEncodingMacCentralEurRoman = 29,\n  kTextEncodingMacVietnamese = 30,\n  kTextEncodingMacExtArabic = 31,\n  kTextEncodingMacSymbol = 33,\n  kTextEncodingMacDingbats = 34,\n  kTextEncodingMacTurkish = 35,\n  kTextEncodingMacCroatian = 36,\n  kTextEncodingMacIcelandic = 37,\n  kTextEncodingMacRomanian = 38,\n  kTextEncodingMacCeltic = 39,\n  kTextEncodingMacGaelic = 40,\n  kTextEncodingMacKeyboardGlyphs = 41\n};\n\n\nenum {\n  kTextEncodingMacTradChinese = kTextEncodingMacChineseTrad,\n  kTextEncodingMacRSymbol = 8,\n  kTextEncodingMacSimpChinese = kTextEncodingMacChineseSimp,\n  kTextEncodingMacGeez = kTextEncodingMacEthiopic,\n  kTextEncodingMacEastEurRoman = kTextEncodingMacCentralEurRoman,\n  kTextEncodingMacUninterp = 32\n};\n# 140 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextCommon.h\" 3\nenum {\n  kTextEncodingMacUnicode = 0x7E\n};\n\n\nenum {\n\n  kTextEncodingMacFarsi = 0x8C,\n\n  kTextEncodingMacUkrainian = 0x98,\n\n  kTextEncodingMacInuit = 0xEC,\n  kTextEncodingMacVT100 = 0xFC\n};\n\n\nenum {\n  kTextEncodingMacHFS = 0xFF\n};\n\n\nenum {\n  kTextEncodingUnicodeDefault = 0x0100,\n  kTextEncodingUnicodeV1_1 = 0x0101,\n  kTextEncodingISO10646_1993 = 0x0101,\n  kTextEncodingUnicodeV2_0 = 0x0103,\n  kTextEncodingUnicodeV2_1 = 0x0103,\n  kTextEncodingUnicodeV3_0 = 0x0104,\n  kTextEncodingUnicodeV3_1 = 0x0105,\n  kTextEncodingUnicodeV3_2 = 0x0106,\n  kTextEncodingUnicodeV4_0 = 0x0108,\n  kTextEncodingUnicodeV5_0 = 0x010A,\n  kTextEncodingUnicodeV5_1 = 0x010B\n};\n\n\nenum {\n  kTextEncodingISOLatin1 = 0x0201,\n  kTextEncodingISOLatin2 = 0x0202,\n  kTextEncodingISOLatin3 = 0x0203,\n  kTextEncodingISOLatin4 = 0x0204,\n  kTextEncodingISOLatinCyrillic = 0x0205,\n  kTextEncodingISOLatinArabic = 0x0206,\n  kTextEncodingISOLatinGreek = 0x0207,\n  kTextEncodingISOLatinHebrew = 0x0208,\n  kTextEncodingISOLatin5 = 0x0209,\n  kTextEncodingISOLatin6 = 0x020A,\n  kTextEncodingISOLatin7 = 0x020D,\n  kTextEncodingISOLatin8 = 0x020E,\n  kTextEncodingISOLatin9 = 0x020F,\n  kTextEncodingISOLatin10 = 0x0210\n};\n\n\nenum {\n  kTextEncodingDOSLatinUS = 0x0400,\n  kTextEncodingDOSGreek = 0x0405,\n  kTextEncodingDOSBalticRim = 0x0406,\n  kTextEncodingDOSLatin1 = 0x0410,\n  kTextEncodingDOSGreek1 = 0x0411,\n  kTextEncodingDOSLatin2 = 0x0412,\n  kTextEncodingDOSCyrillic = 0x0413,\n  kTextEncodingDOSTurkish = 0x0414,\n  kTextEncodingDOSPortuguese = 0x0415,\n  kTextEncodingDOSIcelandic = 0x0416,\n  kTextEncodingDOSHebrew = 0x0417,\n  kTextEncodingDOSCanadianFrench = 0x0418,\n  kTextEncodingDOSArabic = 0x0419,\n  kTextEncodingDOSNordic = 0x041A,\n  kTextEncodingDOSRussian = 0x041B,\n  kTextEncodingDOSGreek2 = 0x041C,\n  kTextEncodingDOSThai = 0x041D,\n  kTextEncodingDOSJapanese = 0x0420,\n  kTextEncodingDOSChineseSimplif = 0x0421,\n  kTextEncodingDOSKorean = 0x0422,\n  kTextEncodingDOSChineseTrad = 0x0423,\n  kTextEncodingWindowsLatin1 = 0x0500,\n  kTextEncodingWindowsANSI = 0x0500,\n  kTextEncodingWindowsLatin2 = 0x0501,\n  kTextEncodingWindowsCyrillic = 0x0502,\n  kTextEncodingWindowsGreek = 0x0503,\n  kTextEncodingWindowsLatin5 = 0x0504,\n  kTextEncodingWindowsHebrew = 0x0505,\n  kTextEncodingWindowsArabic = 0x0506,\n  kTextEncodingWindowsBalticRim = 0x0507,\n  kTextEncodingWindowsVietnamese = 0x0508,\n  kTextEncodingWindowsKoreanJohab = 0x0510\n};\n\n\nenum {\n  kTextEncodingUS_ASCII = 0x0600,\n  kTextEncodingANSEL = 0x0601,\n  kTextEncodingJIS_X0201_76 = 0x0620,\n  kTextEncodingJIS_X0208_83 = 0x0621,\n  kTextEncodingJIS_X0208_90 = 0x0622,\n  kTextEncodingJIS_X0212_90 = 0x0623,\n  kTextEncodingJIS_C6226_78 = 0x0624,\n  kTextEncodingShiftJIS_X0213 = 0x0628,\n  kTextEncodingJIS_X0213_MenKuTen = 0x0629,\n  kTextEncodingGB_2312_80 = 0x0630,\n  kTextEncodingGBK_95 = 0x0631,\n  kTextEncodingGB_18030_2000 = 0x0632,\n  kTextEncodingKSC_5601_87 = 0x0640,\n  kTextEncodingKSC_5601_92_Johab = 0x0641,\n  kTextEncodingCNS_11643_92_P1 = 0x0651,\n  kTextEncodingCNS_11643_92_P2 = 0x0652,\n  kTextEncodingCNS_11643_92_P3 = 0x0653\n};\n\n\nenum {\n  kTextEncodingISO_2022_JP = 0x0820,\n  kTextEncodingISO_2022_JP_2 = 0x0821,\n  kTextEncodingISO_2022_JP_1 = 0x0822,\n  kTextEncodingISO_2022_JP_3 = 0x0823,\n  kTextEncodingISO_2022_CN = 0x0830,\n  kTextEncodingISO_2022_CN_EXT = 0x0831,\n  kTextEncodingISO_2022_KR = 0x0840\n};\n\n\nenum {\n  kTextEncodingEUC_JP = 0x0920,\n  kTextEncodingEUC_CN = 0x0930,\n  kTextEncodingEUC_TW = 0x0931,\n  kTextEncodingEUC_KR = 0x0940\n};\n\n\nenum {\n  kTextEncodingShiftJIS = 0x0A01,\n  kTextEncodingKOI8_R = 0x0A02,\n  kTextEncodingBig5 = 0x0A03,\n  kTextEncodingMacRomanLatin1 = 0x0A04,\n  kTextEncodingHZ_GB_2312 = 0x0A05,\n  kTextEncodingBig5_HKSCS_1999 = 0x0A06,\n  kTextEncodingVISCII = 0x0A07,\n  kTextEncodingKOI8_U = 0x0A08,\n  kTextEncodingBig5_E = 0x0A09\n};\n\n\nenum {\n  kTextEncodingNextStepLatin = 0x0B01,\n  kTextEncodingNextStepJapanese = 0x0B02\n};\n\n\nenum {\n  kTextEncodingEBCDIC_LatinCore = 0x0C01,\n  kTextEncodingEBCDIC_CP037 = 0x0C02\n};\n\n\nenum {\n  kTextEncodingMultiRun = 0x0FFF,\n  kTextEncodingUnknown = 0xFFFF\n};\n\n\nenum {\n  kTextEncodingEBCDIC_US = 0x0C01\n};\n\n\n\ntypedef UInt32 TextEncodingVariant;\n\nenum {\n  kTextEncodingDefaultVariant = 0\n};\n\n\nenum {\n  kMacRomanDefaultVariant = 0,\n  kMacRomanCurrencySignVariant = 1,\n  kMacRomanEuroSignVariant = 2\n};\n\n\nenum {\n  kMacCyrillicDefaultVariant = 0,\n  kMacCyrillicCurrSignStdVariant = 1,\n  kMacCyrillicCurrSignUkrVariant = 2,\n  kMacCyrillicEuroSignVariant = 3\n};\n\n\nenum {\n  kMacIcelandicStdDefaultVariant = 0,\n  kMacIcelandicTTDefaultVariant = 1,\n\n  kMacIcelandicStdCurrSignVariant = 2,\n  kMacIcelandicTTCurrSignVariant = 3,\n\n  kMacIcelandicStdEuroSignVariant = 4,\n  kMacIcelandicTTEuroSignVariant = 5\n};\n\n\nenum {\n  kMacCroatianDefaultVariant = 0,\n  kMacCroatianCurrencySignVariant = 1,\n  kMacCroatianEuroSignVariant = 2\n};\n\n\n\nenum {\n  kMacRomanianDefaultVariant = 0,\n  kMacRomanianCurrencySignVariant = 1,\n  kMacRomanianEuroSignVariant = 2\n};\n\n\n\nenum {\n  kMacJapaneseStandardVariant = 0,\n  kMacJapaneseStdNoVerticalsVariant = 1,\n  kMacJapaneseBasicVariant = 2,\n  kMacJapanesePostScriptScrnVariant = 3,\n  kMacJapanesePostScriptPrintVariant = 4,\n  kMacJapaneseVertAtKuPlusTenVariant = 5\n};\n\n\nenum {\n  kMacArabicStandardVariant = 0,\n  kMacArabicTrueTypeVariant = 1,\n  kMacArabicThuluthVariant = 2,\n  kMacArabicAlBayanVariant = 3\n};\n\n\nenum {\n  kMacFarsiStandardVariant = 0,\n  kMacFarsiTrueTypeVariant = 1\n};\n\n\nenum {\n  kMacHebrewStandardVariant = 0,\n  kMacHebrewFigureSpaceVariant = 1\n};\n\n\nenum {\n  kMacGreekDefaultVariant = 0,\n  kMacGreekNoEuroSignVariant = 1,\n  kMacGreekEuroSignVariant = 2\n};\n\n\nenum {\n  kMacVT100DefaultVariant = 0,\n  kMacVT100CurrencySignVariant = 1,\n  kMacVT100EuroSignVariant = 2\n};\n\n\nenum {\n  kUnicodeNoSubset = 0,\n  kUnicodeNormalizationFormD = 5,\n  kUnicodeNormalizationFormC = 3,\n  kUnicodeHFSPlusDecompVariant = 8,\n  kUnicodeHFSPlusCompVariant = 9\n};\n\n\nenum {\n  kISOLatin1StandardVariant = 0,\n  kISOLatin1MusicCDVariant = 1\n};\n# 434 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextCommon.h\" 3\nenum {\n  kISOLatinArabicImplicitOrderVariant = 0,\n  kISOLatinArabicVisualOrderVariant = 1,\n  kISOLatinArabicExplicitOrderVariant = 2\n};\n\nenum {\n  kISOLatinHebrewImplicitOrderVariant = 0,\n  kISOLatinHebrewVisualOrderVariant = 1,\n  kISOLatinHebrewExplicitOrderVariant = 2\n};\n\n\nenum {\n  kWindowsLatin1StandardVariant = 0,\n  kWindowsLatin1PalmVariant = 1\n};\n\n\nenum {\n  kDOSJapaneseStandardVariant = 0,\n  kDOSJapanesePalmVariant = 1\n};\n\n\n\n\n\n\nenum {\n  kEUC_CN_BasicVariant = 0,\n  kEUC_CN_DOSVariant = 1\n};\n\n\n\n\n\n\nenum {\n  kEUC_KR_BasicVariant = 0,\n  kEUC_KR_DOSVariant = 1\n};\n\n\n\n\n\n\nenum {\n  kShiftJIS_BasicVariant = 0,\n  kShiftJIS_DOSVariant = 1,\n  kShiftJIS_MusicCDVariant = 2\n};\n\n\n\n\n\n\nenum {\n  kBig5_BasicVariant = 0,\n  kBig5_StandardVariant = 1,\n  kBig5_ETenVariant = 2,\n  kBig5_DOSVariant = 3\n};\n\n\nenum {\n  kMacRomanLatin1DefaultVariant = 0,\n  kMacRomanLatin1StandardVariant = 2,\n  kMacRomanLatin1TurkishVariant = 6,\n  kMacRomanLatin1CroatianVariant = 8,\n  kMacRomanLatin1IcelandicVariant = 11,\n  kMacRomanLatin1RomanianVariant = 14\n};\n\n\nenum {\n  kUnicodeNoCompatibilityVariant = 1,\n  kUnicodeNoCorporateVariant = 4\n};\n\n\nenum {\n  kMacRomanStandardVariant = 0,\n  kMacIcelandicStandardVariant = 0,\n  kMacIcelandicTrueTypeVariant = 1,\n  kJapaneseStandardVariant = 0,\n  kJapaneseStdNoVerticalsVariant = 1,\n  kJapaneseBasicVariant = 2,\n  kJapanesePostScriptScrnVariant = 3,\n  kJapanesePostScriptPrintVariant = 4,\n  kJapaneseVertAtKuPlusTenVariant = 5,\n  kTextEncodingShiftJIS_X0213_00 = 0x0628,\n\n\n  kHebrewStandardVariant = 0,\n  kHebrewFigureSpaceVariant = 1,\n\n\n\n\n\n\n  kUnicodeCanonicalDecompVariant = 2,\n  kUnicodeMaxDecomposedVariant = 2,\n  kUnicodeCanonicalCompVariant = 3,\n  kUnicodeNoComposedVariant = 3\n};\n\n\ntypedef UInt32 TextEncodingFormat;\nenum {\n\n  kTextEncodingDefaultFormat = 0,\n  kUnicodeUTF16Format = 0,\n  kUnicodeUTF7Format = 1,\n  kUnicodeUTF8Format = 2,\n  kUnicodeUTF32Format = 3,\n  kUnicodeUTF16BEFormat = 4,\n  kUnicodeUTF16LEFormat = 5,\n  kUnicodeUTF32BEFormat = 6,\n  kUnicodeUTF32LEFormat = 7,\n  kUnicodeSCSUFormat = 8,\n# 568 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextCommon.h\" 3\n  kUnicode16BitFormat = 0,\n  kUnicode32BitFormat = 3\n};\n\n\ntypedef UInt32 TextEncoding;\n\ntypedef UInt32 TextEncodingNameSelector;\nenum {\n  kTextEncodingFullName = 0,\n  kTextEncodingBaseName = 1,\n  kTextEncodingVariantName = 2,\n  kTextEncodingFormatName = 3\n};\n\n\nstruct TextEncodingRun {\n  ByteOffset offset;\n  TextEncoding textEncoding;\n};\ntypedef struct TextEncodingRun TextEncodingRun;\ntypedef TextEncodingRun * TextEncodingRunPtr;\ntypedef const TextEncodingRun * ConstTextEncodingRunPtr;\nstruct ScriptCodeRun {\n  ByteOffset offset;\n  ScriptCode script;\n};\ntypedef struct ScriptCodeRun ScriptCodeRun;\ntypedef ScriptCodeRun * ScriptCodeRunPtr;\ntypedef const ScriptCodeRun * ConstScriptCodeRunPtr;\ntypedef UInt8 * TextPtr;\ntypedef const UInt8 * ConstTextPtr;\n\ntypedef UniChar * UniCharArrayPtr;\ntypedef const UniChar * ConstUniCharArrayPtr;\n\n\n\n\ntypedef UniCharArrayPtr * UniCharArrayHandle;\n\n\n\n\ntypedef unsigned long UniCharArrayOffset;\n\nenum {\n  kTextScriptDontCare = -128,\n  kTextLanguageDontCare = -128,\n  kTextRegionDontCare = -128\n};\n\n\n\nstruct TECInfo {\n  UInt16 format;\n  UInt16 tecVersion;\n  UInt32 tecTextConverterFeatures;\n  UInt32 tecUnicodeConverterFeatures;\n  UInt32 tecTextCommonFeatures;\n  Str31 tecTextEncodingsFolderName;\n  Str31 tecExtensionFileName;\n  UInt16 tecLowestTEFileVersion;\n  UInt16 tecHighestTEFileVersion;\n};\ntypedef struct TECInfo TECInfo;\ntypedef TECInfo * TECInfoPtr;\ntypedef TECInfoPtr * TECInfoHandle;\n\nenum {\n  kTECInfoCurrentFormat = 2\n};\n# 684 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextCommon.h\" 3\nenum {\n  kTECKeepInfoFixBit = 0,\n  kTECFallbackTextLengthFixBit = 1,\n  kTECTextRunBitClearFixBit = 2,\n  kTECTextToUnicodeScanFixBit = 3,\n  kTECAddForceASCIIChangesBit = 4,\n  kTECPreferredEncodingFixBit = 5,\n  kTECAddTextRunHeuristicsBit = 6,\n  kTECAddFallbackInterruptBit = 7\n};\n\nenum {\n  kTECKeepInfoFixMask = 1L << kTECKeepInfoFixBit,\n  kTECFallbackTextLengthFixMask = 1L << kTECFallbackTextLengthFixBit,\n  kTECTextRunBitClearFixMask = 1L << kTECTextRunBitClearFixBit,\n  kTECTextToUnicodeScanFixMask = 1L << kTECTextToUnicodeScanFixBit,\n  kTECAddForceASCIIChangesMask = 1L << kTECAddForceASCIIChangesBit,\n  kTECPreferredEncodingFixMask = 1L << kTECPreferredEncodingFixBit,\n  kTECAddTextRunHeuristicsMask = 1L << kTECAddTextRunHeuristicsBit,\n  kTECAddFallbackInterruptMask = 1L << kTECAddFallbackInterruptBit\n};\n\n\n\n\n\n\n\nenum {\n  kUnicodeByteOrderMark = 0xFEFF,\n  kUnicodeObjectReplacement = 0xFFFC,\n  kUnicodeReplacementChar = 0xFFFD,\n  kUnicodeSwappedByteOrderMark = 0xFFFE,\n  kUnicodeNotAChar = 0xFFFF\n};\n# 727 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextCommon.h\" 3\ntypedef SInt32 UCCharPropertyType;\nenum {\n  kUCCharPropTypeGenlCategory = 1,\n  kUCCharPropTypeCombiningClass = 2,\n  kUCCharPropTypeBidiCategory = 3,\n  kUCCharPropTypeDecimalDigitValue = 4\n};\n\ntypedef UInt32 UCCharPropertyValue;\n\nenum {\n\n  kUCGenlCatOtherNotAssigned = 0,\n  kUCGenlCatOtherControl = 1,\n  kUCGenlCatOtherFormat = 2,\n  kUCGenlCatOtherSurrogate = 3,\n  kUCGenlCatOtherPrivateUse = 4,\n  kUCGenlCatMarkNonSpacing = 5,\n  kUCGenlCatMarkSpacingCombining = 6,\n  kUCGenlCatMarkEnclosing = 7,\n  kUCGenlCatNumberDecimalDigit = 8,\n  kUCGenlCatNumberLetter = 9,\n  kUCGenlCatNumberOther = 10,\n  kUCGenlCatSeparatorSpace = 11,\n  kUCGenlCatSeparatorLine = 12,\n  kUCGenlCatSeparatorParagraph = 13,\n  kUCGenlCatLetterUppercase = 14,\n  kUCGenlCatLetterLowercase = 15,\n  kUCGenlCatLetterTitlecase = 16,\n\n  kUCGenlCatLetterModifier = 17,\n  kUCGenlCatLetterOther = 18,\n  kUCGenlCatPunctConnector = 20,\n  kUCGenlCatPunctDash = 21,\n  kUCGenlCatPunctOpen = 22,\n  kUCGenlCatPunctClose = 23,\n  kUCGenlCatPunctInitialQuote = 24,\n  kUCGenlCatPunctFinalQuote = 25,\n  kUCGenlCatPunctOther = 26,\n  kUCGenlCatSymbolMath = 28,\n  kUCGenlCatSymbolCurrency = 29,\n  kUCGenlCatSymbolModifier = 30,\n  kUCGenlCatSymbolOther = 31\n};\n\n\nenum {\n  kUCBidiCatNotApplicable = 0,\n\n  kUCBidiCatLeftRight = 1,\n  kUCBidiCatRightLeft = 2,\n\n  kUCBidiCatEuroNumber = 3,\n  kUCBidiCatEuroNumberSeparator = 4,\n  kUCBidiCatEuroNumberTerminator = 5,\n  kUCBidiCatArabicNumber = 6,\n  kUCBidiCatCommonNumberSeparator = 7,\n\n  kUCBidiCatBlockSeparator = 8,\n  kUCBidiCatSegmentSeparator = 9,\n\n  kUCBidiCatWhitespace = 10,\n  kUCBidiCatOtherNeutral = 11,\n\n  kUCBidiCatRightLeftArabic = 12,\n  kUCBidiCatLeftRightEmbedding = 13,\n  kUCBidiCatRightLeftEmbedding = 14,\n  kUCBidiCatLeftRightOverride = 15,\n  kUCBidiCatRightLeftOverride = 16,\n  kUCBidiCatPopDirectionalFormat = 17,\n  kUCBidiCatNonSpacingMark = 18,\n  kUCBidiCatBoundaryNeutral = 19\n};\n# 817 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextCommon.h\" 3\nextern TextEncoding\nCreateTextEncoding(\n  TextEncodingBase encodingBase,\n  TextEncodingVariant encodingVariant,\n  TextEncodingFormat encodingFormat) ;\n# 832 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextCommon.h\" 3\nextern TextEncodingBase\nGetTextEncodingBase(TextEncoding encoding) ;\n# 844 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextCommon.h\" 3\nextern TextEncodingVariant\nGetTextEncodingVariant(TextEncoding encoding) ;\n# 856 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextCommon.h\" 3\nextern TextEncodingFormat\nGetTextEncodingFormat(TextEncoding encoding) ;\n# 868 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextCommon.h\" 3\nextern TextEncoding\nResolveDefaultTextEncoding(TextEncoding encoding) ;\n# 880 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextCommon.h\" 3\nextern OSStatus\nGetTextEncodingName(\n  TextEncoding iEncoding,\n  TextEncodingNameSelector iNamePartSelector,\n  RegionCode iPreferredRegion,\n  TextEncoding iPreferredEncoding,\n  ByteCount iOutputBufLen,\n  ByteCount * oNameLength,\n  RegionCode * oActualRegion,\n  TextEncoding * oActualEncoding,\n  TextPtr oEncodingName) ;\n# 901 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextCommon.h\" 3\nextern OSStatus\nTECGetInfo(TECInfoHandle * tecInfo) ;\n# 914 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextCommon.h\" 3\nextern OSStatus\nUpgradeScriptInfoToTextEncoding(\n  ScriptCode iTextScriptID,\n  LangCode iTextLanguageID,\n  RegionCode iRegionID,\n  ConstStr255Param iTextFontname,\n  TextEncoding * oEncoding) ;\n# 931 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextCommon.h\" 3\nextern OSStatus\nRevertTextEncodingToScriptInfo(\n  TextEncoding iEncoding,\n  ScriptCode * oTextScriptID,\n  LangCode * oTextLanguageID,\n  Str255 oTextFontname) ;\n# 984 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextCommon.h\" 3\nextern OSStatus\nGetTextEncodingFromScriptInfo(\n  ScriptCode iTextScriptID,\n  LangCode iTextLanguageID,\n  RegionCode iTextRegionID,\n  TextEncoding * oEncoding) ;\n# 1033 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextCommon.h\" 3\nextern OSStatus\nGetScriptInfoFromTextEncoding(\n  TextEncoding iEncoding,\n  ScriptCode * oTextScriptID,\n  LangCode * oTextLanguageID) ;\n# 1049 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextCommon.h\" 3\nextern OSStatus\nNearestMacTextEncodings(\n  TextEncoding generalEncoding,\n  TextEncoding * bestMacEncoding,\n  TextEncoding * alternateMacEncoding) ;\n# 1064 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextCommon.h\" 3\nextern OSStatus\nUCGetCharProperty(\n  const UniChar * charPtr,\n  UniCharCount textLength,\n  UCCharPropertyType propType,\n  UCCharPropertyValue * propValue) ;\n# 1090 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextCommon.h\" 3\nenum {\n  kUCHighSurrogateRangeStart = 0xD800,\n  kUCHighSurrogateRangeEnd = 0xDBFF,\n  kUCLowSurrogateRangeStart = 0xDC00,\n  kUCLowSurrogateRangeEnd = 0xDFFF\n};\n# 1104 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextCommon.h\" 3\nstatic __inline__ Boolean UCIsSurrogateHighCharacter( UniChar character ) {\n\n   return ( ( character & 0xFC00 ) == kUCHighSurrogateRangeStart );\n}\n\n\n\n\n\n\n\nstatic __inline__ Boolean UCIsSurrogateLowCharacter( UniChar character ) {\n\n    return ( ( character & 0xFC00 ) == kUCLowSurrogateRangeStart );\n}\n# 1129 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextCommon.h\" 3\nstatic __inline__ UnicodeScalarValue UCGetUnicodeScalarValueForSurrogatePair( UniChar surrogateHigh, UniChar surrogateLow ) {\n  return ( ( surrogateHigh - kUCHighSurrogateRangeStart ) << 10 ) + ( surrogateLow - kUCLowSurrogateRangeStart ) + 0x0010000;\n}\n\n\n\n#pragma pack(pop)\n# 50 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 1 3\n# 24 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MixedMode.h\" 1 3\n# 31 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MixedMode.h\" 3\n#pragma pack(push, 2)\n# 47 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MixedMode.h\" 3\nenum {\n  kRoutineDescriptorVersion = 7\n};\n\n\nenum {\n  _MixedModeMagic = 0xAAFE\n};\n\n\nenum {\n  kCurrentMixedModeStateRecord = 1\n};\n\n\ntypedef unsigned short CallingConventionType;\nenum {\n  kPascalStackBased = 0,\n  kCStackBased = 1,\n  kRegisterBased = 2,\n  kD0DispatchedPascalStackBased = 8,\n  kD1DispatchedPascalStackBased = 12,\n  kD0DispatchedCStackBased = 9,\n  kStackDispatchedPascalStackBased = 14,\n  kThinkCStackBased = 5\n};\n\n\ntypedef SInt8 ISAType;\nenum {\n  kM68kISA = 0,\n  kPowerPCISA = 1\n};\n\nenum {\n  kX86ISA = 2\n};\n\n\ntypedef SInt8 RTAType;\nenum {\n  kOld68kRTA = 0 << 4,\n  kPowerPCRTA = 0 << 4,\n  kCFM68kRTA = 1 << 4\n};\n\nenum {\n  kX86RTA = 2 << 4\n};\n# 114 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MixedMode.h\" 3\nenum {\n  kRegisterD0 = 0,\n  kRegisterD1 = 1,\n  kRegisterD2 = 2,\n  kRegisterD3 = 3,\n  kRegisterD4 = 8,\n  kRegisterD5 = 9,\n  kRegisterD6 = 10,\n  kRegisterD7 = 11,\n  kRegisterA0 = 4,\n  kRegisterA1 = 5,\n  kRegisterA2 = 6,\n  kRegisterA3 = 7,\n  kRegisterA4 = 12,\n  kRegisterA5 = 13,\n  kRegisterA6 = 14,\n  kCCRegisterCBit = 16,\n  kCCRegisterVBit = 17,\n  kCCRegisterZBit = 18,\n  kCCRegisterNBit = 19,\n  kCCRegisterXBit = 20\n};\n\ntypedef unsigned short registerSelectorType;\n\nenum {\n  kNoByteCode = 0,\n  kOneByteCode = 1,\n  kTwoByteCode = 2,\n  kFourByteCode = 3\n};\n\n\ntypedef unsigned long ProcInfoType;\n\ntypedef unsigned short RoutineFlagsType;\nenum {\n  kProcDescriptorIsAbsolute = 0x00,\n  kProcDescriptorIsRelative = 0x01\n};\n\nenum {\n  kFragmentIsPrepared = 0x00,\n  kFragmentNeedsPreparing = 0x02\n};\n\nenum {\n  kUseCurrentISA = 0x00,\n  kUseNativeISA = 0x04\n};\n\nenum {\n  kPassSelector = 0x00,\n  kDontPassSelector = 0x08\n};\n\nenum {\n  kRoutineIsNotDispatchedDefaultRoutine = 0x00,\n  kRoutineIsDispatchedDefaultRoutine = 0x10\n};\n\nenum {\n  kProcDescriptorIsProcPtr = 0x00,\n  kProcDescriptorIsIndex = 0x20\n};\n\nstruct RoutineRecord {\n  ProcInfoType procInfo;\n  SInt8 reserved1;\n  ISAType ISA;\n  RoutineFlagsType routineFlags;\n  ProcPtr procDescriptor;\n  UInt32 reserved2;\n  UInt32 selector;\n};\ntypedef struct RoutineRecord RoutineRecord;\ntypedef RoutineRecord * RoutineRecordPtr;\ntypedef RoutineRecordPtr * RoutineRecordHandle;\n\n\ntypedef UInt8 RDFlagsType;\nenum {\n  kSelectorsAreNotIndexable = 0x00,\n  kSelectorsAreIndexable = 0x01\n};\n\n\nstruct RoutineDescriptor {\n  UInt16 goMixedModeTrap;\n  SInt8 version;\n  RDFlagsType routineDescriptorFlags;\n  UInt32 reserved1;\n  UInt8 reserved2;\n  UInt8 selectorInfo;\n  UInt16 routineCount;\n  RoutineRecord routineRecords[1];\n};\ntypedef struct RoutineDescriptor RoutineDescriptor;\ntypedef RoutineDescriptor * RoutineDescriptorPtr;\ntypedef RoutineDescriptorPtr * RoutineDescriptorHandle;\n\nstruct MixedModeStateRecord {\n  UInt32 state1;\n  UInt32 state2;\n  UInt32 state3;\n  UInt32 state4;\n};\ntypedef struct MixedModeStateRecord MixedModeStateRecord;\n# 264 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MixedMode.h\" 3\nenum {\n\n  kCallingConventionWidth = 4,\n  kCallingConventionPhase = 0,\n  kCallingConventionMask = 0x0F,\n  kResultSizeWidth = 2,\n  kResultSizePhase = kCallingConventionWidth,\n  kResultSizeMask = 0x30,\n  kStackParameterWidth = 2,\n  kStackParameterPhase = (kCallingConventionWidth + kResultSizeWidth),\n  kStackParameterMask = (int)0xFFFFFFC0,\n  kRegisterResultLocationWidth = 5,\n  kRegisterResultLocationPhase = (kCallingConventionWidth + kResultSizeWidth),\n  kRegisterParameterWidth = 5,\n  kRegisterParameterPhase = (kCallingConventionWidth + kResultSizeWidth + kRegisterResultLocationWidth),\n  kRegisterParameterMask = 0x7FFFF800,\n  kRegisterParameterSizePhase = 0,\n  kRegisterParameterSizeWidth = 2,\n  kRegisterParameterWhichPhase = kRegisterParameterSizeWidth,\n  kRegisterParameterWhichWidth = 3,\n  kDispatchedSelectorSizeWidth = 2,\n  kDispatchedSelectorSizePhase = (kCallingConventionWidth + kResultSizeWidth),\n  kDispatchedParameterPhase = (kCallingConventionWidth + kResultSizeWidth + kDispatchedSelectorSizeWidth),\n  kSpecialCaseSelectorWidth = 6,\n  kSpecialCaseSelectorPhase = kCallingConventionWidth,\n  kSpecialCaseSelectorMask = 0x03F0\n};\n\nenum {\n  kSpecialCase = 0x000F\n};\n\nenum {\n\n  kSpecialCaseHighHook = 0,\n  kSpecialCaseCaretHook = 0,\n  kSpecialCaseEOLHook = 1,\n  kSpecialCaseWidthHook = 2,\n  kSpecialCaseTextWidthHook = 2,\n  kSpecialCaseNWidthHook = 3,\n  kSpecialCaseDrawHook = 4,\n  kSpecialCaseHitTestHook = 5,\n  kSpecialCaseTEFindWord = 6,\n  kSpecialCaseProtocolHandler = 7,\n  kSpecialCaseSocketListener = 8,\n  kSpecialCaseTERecalc = 9,\n  kSpecialCaseTEDoText = 10,\n  kSpecialCaseGNEFilterProc = 11,\n  kSpecialCaseMBarHook = 12\n};\n# 531 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MixedMode.h\" 3\n#pragma pack(pop)\n# 25 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 2 3\n# 43 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nenum {\n  kCollectionDontWantTag = 0,\n  kCollectionDontWantId = 0,\n  kCollectionDontWantSize = 0,\n  kCollectionDontWantAttributes = 0,\n  kCollectionDontWantIndex = 0,\n  kCollectionDontWantData = 0\n};\n\n\n\nenum {\n  kCollectionNoAttributes = 0x00000000,\n  kCollectionAllAttributes = (int)0xFFFFFFFF,\n  kCollectionUserAttributes = 0x0000FFFF,\n  kCollectionDefaultAttributes = 0x40000000\n};\n\n\n\n\n\n\n\nenum {\n  kCollectionUser0Bit = 0,\n  kCollectionUser1Bit = 1,\n  kCollectionUser2Bit = 2,\n  kCollectionUser3Bit = 3,\n  kCollectionUser4Bit = 4,\n  kCollectionUser5Bit = 5,\n  kCollectionUser6Bit = 6,\n  kCollectionUser7Bit = 7,\n  kCollectionUser8Bit = 8,\n  kCollectionUser9Bit = 9,\n  kCollectionUser10Bit = 10,\n  kCollectionUser11Bit = 11,\n  kCollectionUser12Bit = 12,\n  kCollectionUser13Bit = 13,\n  kCollectionUser14Bit = 14,\n  kCollectionUser15Bit = 15,\n  kCollectionReserved0Bit = 16,\n  kCollectionReserved1Bit = 17,\n  kCollectionReserved2Bit = 18,\n  kCollectionReserved3Bit = 19,\n  kCollectionReserved4Bit = 20,\n  kCollectionReserved5Bit = 21,\n  kCollectionReserved6Bit = 22,\n  kCollectionReserved7Bit = 23,\n  kCollectionReserved8Bit = 24,\n  kCollectionReserved9Bit = 25,\n  kCollectionReserved10Bit = 26,\n  kCollectionReserved11Bit = 27,\n  kCollectionReserved12Bit = 28,\n  kCollectionReserved13Bit = 29,\n  kCollectionPersistenceBit = 30,\n  kCollectionLockBit = 31\n};\n\n\n\nenum {\n  kCollectionUser0Mask = 1L << kCollectionUser0Bit,\n  kCollectionUser1Mask = 1L << kCollectionUser1Bit,\n  kCollectionUser2Mask = 1L << kCollectionUser2Bit,\n  kCollectionUser3Mask = 1L << kCollectionUser3Bit,\n  kCollectionUser4Mask = 1L << kCollectionUser4Bit,\n  kCollectionUser5Mask = 1L << kCollectionUser5Bit,\n  kCollectionUser6Mask = 1L << kCollectionUser6Bit,\n  kCollectionUser7Mask = 1L << kCollectionUser7Bit,\n  kCollectionUser8Mask = 1L << kCollectionUser8Bit,\n  kCollectionUser9Mask = 1L << kCollectionUser9Bit,\n  kCollectionUser10Mask = 1L << kCollectionUser10Bit,\n  kCollectionUser11Mask = 1L << kCollectionUser11Bit,\n  kCollectionUser12Mask = 1L << kCollectionUser12Bit,\n  kCollectionUser13Mask = 1L << kCollectionUser13Bit,\n  kCollectionUser14Mask = 1L << kCollectionUser14Bit,\n  kCollectionUser15Mask = 1L << kCollectionUser15Bit,\n  kCollectionReserved0Mask = 1L << kCollectionReserved0Bit,\n  kCollectionReserved1Mask = 1L << kCollectionReserved1Bit,\n  kCollectionReserved2Mask = 1L << kCollectionReserved2Bit,\n  kCollectionReserved3Mask = 1L << kCollectionReserved3Bit,\n  kCollectionReserved4Mask = 1L << kCollectionReserved4Bit,\n  kCollectionReserved5Mask = 1L << kCollectionReserved5Bit,\n  kCollectionReserved6Mask = 1L << kCollectionReserved6Bit,\n  kCollectionReserved7Mask = 1L << kCollectionReserved7Bit,\n  kCollectionReserved8Mask = 1L << kCollectionReserved8Bit,\n  kCollectionReserved9Mask = 1L << kCollectionReserved9Bit,\n  kCollectionReserved10Mask = 1L << kCollectionReserved10Bit,\n  kCollectionReserved11Mask = 1L << kCollectionReserved11Bit,\n  kCollectionReserved12Mask = 1L << kCollectionReserved12Bit,\n  kCollectionReserved13Mask = 1L << kCollectionReserved13Bit,\n  kCollectionPersistenceMask = 1L << kCollectionPersistenceBit,\n  kCollectionLockMask = 1L << kCollectionLockBit\n};\n\n\n\n\n\n\ntypedef struct OpaqueCollection* Collection;\n\ntypedef FourCharCode CollectionTag;\ntypedef OSErr ( * CollectionFlattenProcPtr)(SInt32 size, void *data, void *refCon);\ntypedef OSErr ( * CollectionExceptionProcPtr)(Collection c, OSErr status);\ntypedef CollectionFlattenProcPtr CollectionFlattenUPP;\ntypedef CollectionExceptionProcPtr CollectionExceptionUPP;\n# 159 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern CollectionFlattenUPP\nNewCollectionFlattenUPP(CollectionFlattenProcPtr userRoutine) ;\n# 170 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern CollectionExceptionUPP\nNewCollectionExceptionUPP(CollectionExceptionProcPtr userRoutine) ;\n# 181 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern void\nDisposeCollectionFlattenUPP(CollectionFlattenUPP userUPP) ;\n# 192 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern void\nDisposeCollectionExceptionUPP(CollectionExceptionUPP userUPP) ;\n# 203 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern OSErr\nInvokeCollectionFlattenUPP(\n  SInt32 size,\n  void * data,\n  void * refCon,\n  CollectionFlattenUPP userUPP) ;\n# 218 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern OSErr\nInvokeCollectionExceptionUPP(\n  Collection c,\n  OSErr status,\n  CollectionExceptionUPP userUPP) ;\n# 253 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern Collection\nNewCollection(void) ;\n# 266 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern void\nDisposeCollection(Collection c) ;\n# 279 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern Collection\nCloneCollection(Collection c) ;\n# 292 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern SInt32\nCountCollectionOwners(Collection c) ;\n# 305 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern OSStatus\nRetainCollection(Collection c) ;\n# 318 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern OSStatus\nReleaseCollection(Collection c) ;\n# 331 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern ItemCount\nGetCollectionRetainCount(Collection c) ;\n# 344 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern Collection\nCopyCollection(\n  Collection srcCollection,\n  Collection dstCollection) ;\n# 359 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern SInt32\nGetCollectionDefaultAttributes(Collection c) ;\n# 372 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern void\nSetCollectionDefaultAttributes(\n  Collection c,\n  SInt32 whichAttributes,\n  SInt32 newAttributes) ;\n# 388 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern SInt32\nCountCollectionItems(Collection c) ;\n# 401 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern OSErr\nAddCollectionItem(\n  Collection c,\n  CollectionTag tag,\n  SInt32 id,\n  SInt32 itemSize,\n  const void * itemData) ;\n# 419 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern OSErr\nGetCollectionItem(\n  Collection c,\n  CollectionTag tag,\n  SInt32 id,\n  SInt32 * itemSize,\n  void * itemData) ;\n# 437 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern OSErr\nRemoveCollectionItem(\n  Collection c,\n  CollectionTag tag,\n  SInt32 id) ;\n# 453 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern OSErr\nSetCollectionItemInfo(\n  Collection c,\n  CollectionTag tag,\n  SInt32 id,\n  SInt32 whichAttributes,\n  SInt32 newAttributes) ;\n# 471 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern OSErr\nGetCollectionItemInfo(\n  Collection c,\n  CollectionTag tag,\n  SInt32 id,\n  SInt32 * itemIndex,\n  SInt32 * itemSize,\n  SInt32 * attributes) ;\n# 490 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern OSErr\nReplaceIndexedCollectionItem(\n  Collection c,\n  SInt32 itemIndex,\n  SInt32 itemSize,\n  const void * itemData) ;\n# 507 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern OSErr\nGetIndexedCollectionItem(\n  Collection c,\n  SInt32 itemIndex,\n  SInt32 * itemSize,\n  void * itemData) ;\n# 524 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern OSErr\nRemoveIndexedCollectionItem(\n  Collection c,\n  SInt32 itemIndex) ;\n# 539 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern OSErr\nSetIndexedCollectionItemInfo(\n  Collection c,\n  SInt32 itemIndex,\n  SInt32 whichAttributes,\n  SInt32 newAttributes) ;\n# 556 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern OSErr\nGetIndexedCollectionItemInfo(\n  Collection c,\n  SInt32 itemIndex,\n  CollectionTag * tag,\n  SInt32 * id,\n  SInt32 * itemSize,\n  SInt32 * attributes) ;\n# 575 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern Boolean\nCollectionTagExists(\n  Collection c,\n  CollectionTag tag) ;\n# 590 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern SInt32\nCountCollectionTags(Collection c) ;\n# 603 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern OSErr\nGetIndexedCollectionTag(\n  Collection c,\n  SInt32 tagIndex,\n  CollectionTag * tag) ;\n# 619 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern SInt32\nCountTaggedCollectionItems(\n  Collection c,\n  CollectionTag tag) ;\n# 634 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern OSErr\nGetTaggedCollectionItem(\n  Collection c,\n  CollectionTag tag,\n  SInt32 whichItem,\n  SInt32 * itemSize,\n  void * itemData) ;\n# 652 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern OSErr\nGetTaggedCollectionItemInfo(\n  Collection c,\n  CollectionTag tag,\n  SInt32 whichItem,\n  SInt32 * id,\n  SInt32 * itemIndex,\n  SInt32 * itemSize,\n  SInt32 * attributes) ;\n# 672 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern void\nPurgeCollection(\n  Collection c,\n  SInt32 whichAttributes,\n  SInt32 matchingAttributes) ;\n# 688 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern void\nPurgeCollectionTag(\n  Collection c,\n  CollectionTag tag) ;\n# 703 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern void\nEmptyCollection(Collection c) ;\n# 715 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern OSErr\nFlattenCollection(\n  Collection c,\n  CollectionFlattenUPP flattenProc,\n  void * refCon) ;\n# 731 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern OSErr\nFlattenPartialCollection(\n  Collection c,\n  CollectionFlattenUPP flattenProc,\n  void * refCon,\n  SInt32 whichAttributes,\n  SInt32 matchingAttributes) ;\n# 749 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern OSErr\nUnflattenCollection(\n  Collection c,\n  CollectionFlattenUPP flattenProc,\n  void * refCon) ;\n# 765 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern CollectionExceptionUPP\nGetCollectionExceptionProc(Collection c) ;\n# 778 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern void\nSetCollectionExceptionProc(\n  Collection c,\n  CollectionExceptionUPP exceptionProc) ;\n# 793 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern Collection\nGetNewCollection(SInt16 collectionID) ;\n# 809 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern OSErr\nAddCollectionItemHdl(\n  Collection aCollection,\n  CollectionTag tag,\n  SInt32 id,\n  Handle itemData) ;\n# 826 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern OSErr\nGetCollectionItemHdl(\n  Collection aCollection,\n  CollectionTag tag,\n  SInt32 id,\n  Handle itemData) ;\n# 843 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern OSErr\nReplaceIndexedCollectionItemHdl(\n  Collection aCollection,\n  SInt32 itemIndex,\n  Handle itemData) ;\n# 859 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern OSErr\nGetIndexedCollectionItemHdl(\n  Collection aCollection,\n  SInt32 itemIndex,\n  Handle itemData) ;\n# 875 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern OSErr\nFlattenCollectionToHdl(\n  Collection aCollection,\n  Handle flattened) ;\n# 890 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Collections.h\" 3\nextern OSErr\nUnflattenCollectionFromHdl(\n  Collection aCollection,\n  Handle flattened) ;\n# 54 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Endian.h\" 1 3\n# 39 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Endian.h\" 3\n#pragma pack(push, 2)\n# 251 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Endian.h\" 3\nstruct BigEndianUInt32 {\n  UInt32 bigEndianValue;\n};\ntypedef struct BigEndianUInt32 BigEndianUInt32;\nstruct BigEndianLong {\n  long bigEndianValue;\n};\ntypedef struct BigEndianLong BigEndianLong;\nstruct BigEndianUnsignedLong {\n  unsigned long bigEndianValue;\n};\ntypedef struct BigEndianUnsignedLong BigEndianUnsignedLong;\nstruct BigEndianShort {\n  short bigEndianValue;\n};\ntypedef struct BigEndianShort BigEndianShort;\nstruct BigEndianUnsignedShort {\n  unsigned short bigEndianValue;\n};\ntypedef struct BigEndianUnsignedShort BigEndianUnsignedShort;\nstruct BigEndianFixed {\n  Fixed bigEndianValue;\n};\ntypedef struct BigEndianFixed BigEndianFixed;\nstruct BigEndianUnsignedFixed {\n  UnsignedFixed bigEndianValue;\n};\ntypedef struct BigEndianUnsignedFixed BigEndianUnsignedFixed;\nstruct BigEndianOSType {\n  OSType bigEndianValue;\n};\ntypedef struct BigEndianOSType BigEndianOSType;\n# 312 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Endian.h\" 3\nenum {\n  kCoreEndianResourceManagerDomain = 'rsrc',\n  kCoreEndianAppleEventManagerDomain = 'aevt'\n};\n# 356 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Endian.h\" 3\ntypedef OSStatus ( * CoreEndianFlipProc)(OSType dataDomain, OSType dataType, SInt16 id, void *dataPtr, ByteCount dataSize, Boolean currentlyNative, void *refcon);\n# 393 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Endian.h\" 3\nextern OSStatus\nCoreEndianInstallFlipper(\n  OSType dataDomain,\n  OSType dataType,\n  CoreEndianFlipProc proc,\n  void * refcon) ;\n# 433 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Endian.h\" 3\nextern OSStatus\nCoreEndianGetFlipper(\n  OSType dataDomain,\n  OSType dataType,\n  CoreEndianFlipProc * proc,\n  void ** refcon) ;\n# 481 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Endian.h\" 3\nextern OSStatus\nCoreEndianFlipData(\n  OSType dataDomain,\n  OSType dataType,\n  SInt16 id,\n  void * data,\n  ByteCount dataLen,\n  Boolean currentlyNative) ;\n\n\n\n\n\n#pragma pack(pop)\n# 58 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Gestalt.h\" 1 3\n# 41 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Gestalt.h\" 3\ntypedef OSErr ( * SelectorFunctionProcPtr)(OSType selector, SInt32 *response);\ntypedef SelectorFunctionProcPtr SelectorFunctionUPP;\n# 128 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Gestalt.h\" 3\nextern OSErr\nGestalt(\n  OSType selector,\n  SInt32 * response) ;\n# 279 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Gestalt.h\" 3\nextern OSErr\nNewGestaltValue(\n  OSType selector,\n  SInt32 newValue) ;\n# 319 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Gestalt.h\" 3\nextern OSErr\nReplaceGestaltValue(\n  OSType selector,\n  SInt32 replacementValue) ;\n# 358 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Gestalt.h\" 3\nextern OSErr\nSetGestaltValue(\n  OSType selector,\n  SInt32 newValue) ;\n# 393 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Gestalt.h\" 3\nextern OSErr\nDeleteGestaltValue(OSType selector) ;\n# 406 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Gestalt.h\" 3\nextern SelectorFunctionUPP\nNewSelectorFunctionUPP(SelectorFunctionProcPtr userRoutine) ;\n# 417 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Gestalt.h\" 3\nextern void\nDisposeSelectorFunctionUPP(SelectorFunctionUPP userUPP) ;\n# 428 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Gestalt.h\" 3\nextern OSErr\nInvokeSelectorFunctionUPP(\n  OSType selector,\n  SInt32 * response,\n  SelectorFunctionUPP userUPP) ;\n# 448 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Gestalt.h\" 3\nenum {\n  gestaltAddressingModeAttr = 'addr',\n  gestalt32BitAddressing = 0,\n  gestalt32BitSysZone = 1,\n  gestalt32BitCapable = 2\n};\n\nenum {\n  gestaltAFPClient = 'afps',\n  gestaltAFPClientVersionMask = 0x0000FFFF,\n\n  gestaltAFPClient3_5 = 0x0001,\n  gestaltAFPClient3_6 = 0x0002,\n  gestaltAFPClient3_6_1 = 0x0003,\n  gestaltAFPClient3_6_2 = 0x0004,\n  gestaltAFPClient3_6_3 = 0x0005,\n  gestaltAFPClient3_7 = 0x0006,\n  gestaltAFPClient3_7_2 = 0x0007,\n  gestaltAFPClient3_8 = 0x0008,\n  gestaltAFPClient3_8_1 = 0x0009,\n  gestaltAFPClient3_8_3 = 0x000A,\n  gestaltAFPClient3_8_4 = 0x000B,\n  gestaltAFPClientAttributeMask = (int)0xFFFF0000,\n\n  gestaltAFPClientCfgRsrc = 16,\n  gestaltAFPClientSupportsIP = 29,\n  gestaltAFPClientVMUI = 30,\n  gestaltAFPClientMultiReq = 31\n};\n\n\nenum {\n  gestaltAliasMgrAttr = 'alis',\n  gestaltAliasMgrPresent = 0,\n  gestaltAliasMgrSupportsRemoteAppletalk = 1,\n  gestaltAliasMgrSupportsAOCEKeychain = 2,\n  gestaltAliasMgrResolveAliasFileWithMountOptions = 3,\n  gestaltAliasMgrFollowsAliasesWhenResolving = 4,\n  gestaltAliasMgrSupportsExtendedCalls = 5,\n  gestaltAliasMgrSupportsFSCalls = 6,\n  gestaltAliasMgrPrefersPath = 7,\n  gestaltAliasMgrRequiresAccessors = 8\n};\n\n\nenum {\n  gestaltAppearanceAttr = 'appr',\n  gestaltAppearanceExists = 0,\n  gestaltAppearanceCompatMode = 1\n};\n\n\n\n\n\n\n\nenum {\n  gestaltAppearanceVersion = 'apvr'\n};\n\nenum {\n  gestaltArbitorAttr = 'arb ',\n  gestaltSerialArbitrationExists = 0\n};\n\nenum {\n  gestaltAppleScriptVersion = 'ascv'\n};\n\nenum {\n  gestaltAppleScriptAttr = 'ascr',\n  gestaltAppleScriptPresent = 0,\n  gestaltAppleScriptPowerPCSupport = 1\n};\n\nenum {\n  gestaltATAAttr = 'ata ',\n  gestaltATAPresent = 0\n};\n\nenum {\n  gestaltATalkVersion = 'atkv'\n};\n\nenum {\n  gestaltAppleTalkVersion = 'atlk'\n};\n# 559 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Gestalt.h\" 3\nenum {\n  gestaltAUXVersion = 'a/ux'\n};\n\nenum {\n  gestaltMacOSCompatibilityBoxAttr = 'bbox',\n  gestaltMacOSCompatibilityBoxPresent = 0,\n  gestaltMacOSCompatibilityBoxHasSerial = 1,\n  gestaltMacOSCompatibilityBoxless = 2\n};\n\nenum {\n  gestaltBusClkSpeed = 'bclk'\n};\n\nenum {\n  gestaltBusClkSpeedMHz = 'bclm'\n};\n\nenum {\n  gestaltCloseViewAttr = 'BSDa',\n  gestaltCloseViewEnabled = 0,\n  gestaltCloseViewDisplayMgrFriendly = 1\n};\n\nenum {\n  gestaltCarbonVersion = 'cbon'\n};\n\nenum {\n  gestaltCFMAttr = 'cfrg',\n  gestaltCFMPresent = 0,\n  gestaltCFMPresentMask = 0x0001,\n  gestaltCFM99Present = 2,\n  gestaltCFM99PresentMask = 0x0004\n};\n\nenum {\n  gestaltProcessorCacheLineSize = 'csiz'\n};\n\nenum {\n  gestaltCollectionMgrVersion = 'cltn'\n};\n\nenum {\n  gestaltColorMatchingAttr = 'cmta',\n  gestaltHighLevelMatching = 0,\n  gestaltColorMatchingLibLoaded = 1\n};\n\nenum {\n  gestaltColorMatchingVersion = 'cmtc',\n  gestaltColorSync10 = 0x0100,\n  gestaltColorSync11 = 0x0110,\n  gestaltColorSync104 = 0x0104,\n  gestaltColorSync105 = 0x0105,\n  gestaltColorSync20 = 0x0200,\n  gestaltColorSync21 = 0x0210,\n  gestaltColorSync211 = 0x0211,\n  gestaltColorSync212 = 0x0212,\n  gestaltColorSync213 = 0x0213,\n  gestaltColorSync25 = 0x0250,\n  gestaltColorSync26 = 0x0260,\n  gestaltColorSync261 = 0x0261,\n  gestaltColorSync30 = 0x0300\n};\n\nenum {\n  gestaltControlMgrVersion = 'cmvr'\n};\n\nenum {\n  gestaltControlMgrAttr = 'cntl',\n  gestaltControlMgrPresent = (1L << 0),\n\n\n  gestaltControlMgrPresentBit = 0,\n  gestaltControlMsgPresentMask = (1L << gestaltControlMgrPresentBit)\n};\n\nenum {\n  gestaltConnMgrAttr = 'conn',\n  gestaltConnMgrPresent = 0,\n  gestaltConnMgrCMSearchFix = 1,\n  gestaltConnMgrErrorString = 2,\n  gestaltConnMgrMultiAsyncIO = 3\n};\n\nenum {\n  gestaltColorPickerVersion = 'cpkr',\n  gestaltColorPicker = 'cpkr'\n};\n\nenum {\n  gestaltComponentMgr = 'cpnt',\n  gestaltComponentPlatform = 'copl'\n};\n# 686 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Gestalt.h\" 3\nenum {\n  gestaltNativeCPUtype = 'cput',\n  gestaltNativeCPUfamily = 'cpuf',\n  gestaltCPU68000 = 0,\n  gestaltCPU68010 = 1,\n  gestaltCPU68020 = 2,\n  gestaltCPU68030 = 3,\n  gestaltCPU68040 = 4,\n  gestaltCPU601 = 0x0101,\n  gestaltCPU603 = 0x0103,\n  gestaltCPU604 = 0x0104,\n  gestaltCPU603e = 0x0106,\n  gestaltCPU603ev = 0x0107,\n  gestaltCPU750 = 0x0108,\n  gestaltCPU604e = 0x0109,\n  gestaltCPU604ev = 0x010A,\n  gestaltCPUG4 = 0x010C,\n  gestaltCPUG47450 = 0x0110\n};\n\nenum {\n  gestaltCPUApollo = 0x0111,\n  gestaltCPUG47447 = 0x0112,\n  gestaltCPU750FX = 0x0120,\n  gestaltCPU970 = 0x0139,\n  gestaltCPU970FX = 0x013C,\n  gestaltCPU970MP = 0x0144\n};\n\nenum {\n\n  gestaltCPU486 = 'i486',\n  gestaltCPUPentium = 'i586',\n  gestaltCPUPentiumPro = 'i5pr',\n  gestaltCPUPentiumII = 'i5ii',\n  gestaltCPUX86 = 'ixxx',\n  gestaltCPUPentium4 = 'i5iv'\n};\n\nenum {\n  gestaltCRMAttr = 'crm ',\n  gestaltCRMPresent = 0,\n  gestaltCRMPersistentFix = 1,\n  gestaltCRMToolRsrcCalls = 2\n};\n\nenum {\n  gestaltControlStripVersion = 'csvr'\n};\n\nenum {\n  gestaltCountOfCPUs = 'cpus'\n};\n\nenum {\n  gestaltCTBVersion = 'ctbv'\n};\n\nenum {\n  gestaltDBAccessMgrAttr = 'dbac',\n  gestaltDBAccessMgrPresent = 0\n};\n\nenum {\n  gestaltDiskCacheSize = 'dcsz'\n};\n\nenum {\n  gestaltSDPFindVersion = 'dfnd'\n};\n\nenum {\n  gestaltDictionaryMgrAttr = 'dict',\n  gestaltDictionaryMgrPresent = 0\n};\n\nenum {\n  gestaltDITLExtAttr = 'ditl',\n  gestaltDITLExtPresent = 0,\n  gestaltDITLExtSupportsIctb = 1\n};\n\nenum {\n  gestaltDialogMgrAttr = 'dlog',\n  gestaltDialogMgrPresent = (1L << 0),\n\n\n  gestaltDialogMgrPresentBit = 0,\n  gestaltDialogMgrHasAquaAlertBit = 2,\n  gestaltDialogMgrPresentMask = (1L << gestaltDialogMgrPresentBit),\n  gestaltDialogMgrHasAquaAlertMask = (1L << gestaltDialogMgrHasAquaAlertBit),\n  gestaltDialogMsgPresentMask = gestaltDialogMgrPresentMask\n};\n\nenum {\n  gestaltDesktopPicturesAttr = 'dkpx',\n  gestaltDesktopPicturesInstalled = 0,\n  gestaltDesktopPicturesDisplayed = 1\n};\n\nenum {\n  gestaltDisplayMgrVers = 'dplv'\n};\n\nenum {\n  gestaltDisplayMgrAttr = 'dply',\n  gestaltDisplayMgrPresent = 0,\n  gestaltDisplayMgrCanSwitchMirrored = 2,\n  gestaltDisplayMgrSetDepthNotifies = 3,\n  gestaltDisplayMgrCanConfirm = 4,\n  gestaltDisplayMgrColorSyncAware = 5,\n  gestaltDisplayMgrGeneratesProfiles = 6,\n  gestaltDisplayMgrSleepNotifies = 7\n};\n\nenum {\n  gestaltDragMgrAttr = 'drag',\n  gestaltDragMgrPresent = 0,\n  gestaltDragMgrFloatingWind = 1,\n  gestaltPPCDragLibPresent = 2,\n  gestaltDragMgrHasImageSupport = 3,\n  gestaltCanStartDragInFloatWindow = 4,\n  gestaltSetDragImageUpdates = 5\n};\n\nenum {\n  gestaltDrawSprocketVersion = 'dspv'\n};\n\nenum {\n  gestaltDigitalSignatureVersion = 'dsig'\n};\n\n\n\n\n\nenum {\n  gestaltDTPFeatures = 'dtpf',\n  kDTPThirdPartySupported = 0x00000004\n};\n\n\n\n\n\n\nenum {\n  gestaltDTPInfo = 'dtpx'\n};\n\nenum {\n  gestaltEasyAccessAttr = 'easy',\n  gestaltEasyAccessOff = 0,\n  gestaltEasyAccessOn = 1,\n  gestaltEasyAccessSticky = 2,\n  gestaltEasyAccessLocked = 3\n};\n\nenum {\n  gestaltEditionMgrAttr = 'edtn',\n  gestaltEditionMgrPresent = 0,\n  gestaltEditionMgrTranslationAware = 1\n};\n\nenum {\n  gestaltAppleEventsAttr = 'evnt',\n  gestaltAppleEventsPresent = 0,\n  gestaltScriptingSupport = 1,\n  gestaltOSLInSystem = 2,\n  gestaltSupportsApplicationURL = 4\n};\n\nenum {\n  gestaltExtensionTableVersion = 'etbl'\n};\n\n\nenum {\n  gestaltFBCIndexingState = 'fbci',\n  gestaltFBCindexingSafe = 0,\n  gestaltFBCindexingCritical = 1\n};\n\nenum {\n  gestaltFBCVersion = 'fbcv',\n  gestaltFBCCurrentVersion = 0x0011,\n  gestaltOSXFBCCurrentVersion = 0x0100\n};\n\n\nenum {\n  gestaltFileMappingAttr = 'flmp',\n  gestaltFileMappingPresent = 0,\n  gestaltFileMappingMultipleFilesFix = 1\n};\n\nenum {\n  gestaltFloppyAttr = 'flpy',\n  gestaltFloppyIsMFMOnly = 0,\n  gestaltFloppyIsManualEject = 1,\n  gestaltFloppyUsesDiskInPlace = 2\n};\n\nenum {\n  gestaltFinderAttr = 'fndr',\n  gestaltFinderDropEvent = 0,\n  gestaltFinderMagicPlacement = 1,\n  gestaltFinderCallsAEProcess = 2,\n  gestaltOSLCompliantFinder = 3,\n  gestaltFinderSupports4GBVolumes = 4,\n  gestaltFinderHasClippings = 6,\n  gestaltFinderFullDragManagerSupport = 7,\n  gestaltFinderFloppyRootComments = 8,\n  gestaltFinderLargeAndNotSavedFlavorsOK = 9,\n  gestaltFinderUsesExtensibleFolderManager = 10,\n  gestaltFinderUnderstandsRedirectedDesktopFolder = 11\n};\n\nenum {\n  gestaltFindFolderAttr = 'fold',\n  gestaltFindFolderPresent = 0,\n  gestaltFolderDescSupport = 1,\n  gestaltFolderMgrFollowsAliasesWhenResolving = 2,\n  gestaltFolderMgrSupportsExtendedCalls = 3,\n  gestaltFolderMgrSupportsDomains = 4,\n  gestaltFolderMgrSupportsFSCalls = 5\n};\n\nenum {\n  gestaltFindFolderRedirectionAttr = 'fole'\n};\n\n\nenum {\n  gestaltFontMgrAttr = 'font',\n  gestaltOutlineFonts = 0\n};\n\nenum {\n  gestaltFPUType = 'fpu ',\n  gestaltNoFPU = 0,\n  gestalt68881 = 1,\n  gestalt68882 = 2,\n  gestalt68040FPU = 3\n};\n\nenum {\n  gestaltFSAttr = 'fs  ',\n  gestaltFullExtFSDispatching = 0,\n  gestaltHasFSSpecCalls = 1,\n  gestaltHasFileSystemManager = 2,\n  gestaltFSMDoesDynamicLoad = 3,\n  gestaltFSSupports4GBVols = 4,\n  gestaltFSSupports2TBVols = 5,\n  gestaltHasExtendedDiskInit = 6,\n  gestaltDTMgrSupportsFSM = 7,\n  gestaltFSNoMFSVols = 8,\n  gestaltFSSupportsHFSPlusVols = 9,\n  gestaltFSIncompatibleDFA82 = 10\n};\n\nenum {\n  gestaltFSSupportsDirectIO = 11\n};\n\nenum {\n  gestaltHasHFSPlusAPIs = 12,\n  gestaltMustUseFCBAccessors = 13,\n  gestaltFSUsesPOSIXPathsForConversion = 14,\n  gestaltFSSupportsExclusiveLocks = 15,\n  gestaltFSSupportsHardLinkDetection = 16,\n  gestaltFSAllowsConcurrentAsyncIO = 17\n};\n\nenum {\n  gestaltAdminFeaturesFlagsAttr = 'fred',\n  gestaltFinderUsesSpecialOpenFoldersFile = 0\n};\n\nenum {\n  gestaltFSMVersion = 'fsm '\n};\n\nenum {\n  gestaltFXfrMgrAttr = 'fxfr',\n  gestaltFXfrMgrPresent = 0,\n  gestaltFXfrMgrMultiFile = 1,\n  gestaltFXfrMgrErrorString = 2,\n  gestaltFXfrMgrAsync = 3\n};\n\nenum {\n  gestaltGraphicsAttr = 'gfxa',\n  gestaltGraphicsIsDebugging = 0x00000001,\n  gestaltGraphicsIsLoaded = 0x00000002,\n  gestaltGraphicsIsPowerPC = 0x00000004\n};\n\nenum {\n  gestaltGraphicsVersion = 'grfx',\n  gestaltCurrentGraphicsVersion = 0x00010200\n};\n\nenum {\n  gestaltHardwareAttr = 'hdwr',\n  gestaltHasVIA1 = 0,\n  gestaltHasVIA2 = 1,\n  gestaltHasASC = 3,\n  gestaltHasSCC = 4,\n  gestaltHasSCSI = 7,\n  gestaltHasSoftPowerOff = 19,\n  gestaltHasSCSI961 = 21,\n  gestaltHasSCSI962 = 22,\n  gestaltHasUniversalROM = 24,\n  gestaltHasEnhancedLtalk = 30\n};\n\nenum {\n  gestaltHelpMgrAttr = 'help',\n  gestaltHelpMgrPresent = 0,\n  gestaltHelpMgrExtensions = 1,\n  gestaltAppleGuideIsDebug = 30,\n  gestaltAppleGuidePresent = 31\n};\n\nenum {\n  gestaltHardwareVendorCode = 'hrad',\n  gestaltHardwareVendorApple = 'Appl'\n};\n\nenum {\n  gestaltCompressionMgr = 'icmp'\n};\n\nenum {\n  gestaltIconUtilitiesAttr = 'icon',\n  gestaltIconUtilitiesPresent = 0,\n  gestaltIconUtilitiesHas48PixelIcons = 1,\n  gestaltIconUtilitiesHas32BitIcons = 2,\n  gestaltIconUtilitiesHas8BitDeepMasks = 3,\n  gestaltIconUtilitiesHasIconServices = 4\n};\n\nenum {\n  gestaltInternalDisplay = 'idsp'\n};\n\n\n\n\n\nenum {\n  gestaltKeyboardType = 'kbd ',\n  gestaltMacKbd = 1,\n  gestaltMacAndPad = 2,\n  gestaltMacPlusKbd = 3,\n  gestaltUnknownThirdPartyKbd = 3,\n  gestaltExtADBKbd = 4,\n  gestaltStdADBKbd = 5,\n  gestaltPrtblADBKbd = 6,\n  gestaltPrtblISOKbd = 7,\n  gestaltStdISOADBKbd = 8,\n  gestaltExtISOADBKbd = 9,\n  gestaltADBKbdII = 10,\n  gestaltADBISOKbdII = 11,\n  gestaltPwrBookADBKbd = 12,\n  gestaltPwrBookISOADBKbd = 13,\n  gestaltAppleAdjustKeypad = 14,\n  gestaltAppleAdjustADBKbd = 15,\n  gestaltAppleAdjustISOKbd = 16,\n  gestaltJapanAdjustADBKbd = 17,\n  gestaltPwrBkExtISOKbd = 20,\n  gestaltPwrBkExtJISKbd = 21,\n  gestaltPwrBkExtADBKbd = 24,\n  gestaltPS2Keyboard = 27,\n  gestaltPwrBkSubDomKbd = 28,\n  gestaltPwrBkSubISOKbd = 29,\n  gestaltPwrBkSubJISKbd = 30,\n  gestaltPortableUSBANSIKbd = 37,\n  gestaltPortableUSBISOKbd = 38,\n  gestaltPortableUSBJISKbd = 39,\n  gestaltThirdPartyANSIKbd = 40,\n  gestaltThirdPartyISOKbd = 41,\n  gestaltThirdPartyJISKbd = 42,\n  gestaltPwrBkEKDomKbd = 195,\n  gestaltPwrBkEKISOKbd = 196,\n  gestaltPwrBkEKJISKbd = 197,\n  gestaltUSBCosmoANSIKbd = 198,\n  gestaltUSBCosmoISOKbd = 199,\n  gestaltUSBCosmoJISKbd = 200,\n  gestaltPwrBk99JISKbd = 201,\n  gestaltUSBAndyANSIKbd = 204,\n  gestaltUSBAndyISOKbd = 205,\n  gestaltUSBAndyJISKbd = 206\n};\n\n\nenum {\n  gestaltPortable2001ANSIKbd = 202,\n  gestaltPortable2001ISOKbd = 203,\n  gestaltPortable2001JISKbd = 207\n};\n\nenum {\n  gestaltUSBProF16ANSIKbd = 34,\n  gestaltUSBProF16ISOKbd = 35,\n  gestaltUSBProF16JISKbd = 36,\n  gestaltProF16ANSIKbd = 31,\n  gestaltProF16ISOKbd = 32,\n  gestaltProF16JISKbd = 33\n};\n\n\n\n\n\nenum {\n  gestaltUDFSupport = 'kudf'\n};\n\nenum {\n  gestaltLowMemorySize = 'lmem'\n};\n\nenum {\n  gestaltLogicalRAMSize = 'lram'\n};\n# 1212 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Gestalt.h\" 3\nenum {\n  gestaltMachineType = 'mach',\n  gestaltClassic = 1,\n  gestaltMacXL = 2,\n  gestaltMac512KE = 3,\n  gestaltMacPlus = 4,\n  gestaltMacSE = 5,\n  gestaltMacII = 6,\n  gestaltMacIIx = 7,\n  gestaltMacIIcx = 8,\n  gestaltMacSE030 = 9,\n  gestaltPortable = 10,\n  gestaltMacIIci = 11,\n  gestaltPowerMac8100_120 = 12,\n  gestaltMacIIfx = 13,\n  gestaltMacClassic = 17,\n  gestaltMacIIsi = 18,\n  gestaltMacLC = 19,\n  gestaltMacQuadra900 = 20,\n  gestaltPowerBook170 = 21,\n  gestaltMacQuadra700 = 22,\n  gestaltClassicII = 23,\n  gestaltPowerBook100 = 24,\n  gestaltPowerBook140 = 25,\n  gestaltMacQuadra950 = 26,\n  gestaltMacLCIII = 27,\n  gestaltPerforma450 = gestaltMacLCIII,\n  gestaltPowerBookDuo210 = 29,\n  gestaltMacCentris650 = 30,\n  gestaltPowerBookDuo230 = 32,\n  gestaltPowerBook180 = 33,\n  gestaltPowerBook160 = 34,\n  gestaltMacQuadra800 = 35,\n  gestaltMacQuadra650 = 36,\n  gestaltMacLCII = 37,\n  gestaltPowerBookDuo250 = 38,\n  gestaltAWS9150_80 = 39,\n  gestaltPowerMac8100_110 = 40,\n  gestaltAWS8150_110 = gestaltPowerMac8100_110,\n  gestaltPowerMac5200 = 41,\n  gestaltPowerMac5260 = gestaltPowerMac5200,\n  gestaltPerforma5300 = gestaltPowerMac5200,\n  gestaltPowerMac6200 = 42,\n  gestaltPerforma6300 = gestaltPowerMac6200,\n  gestaltMacIIvi = 44,\n  gestaltMacIIvm = 45,\n  gestaltPerforma600 = gestaltMacIIvm,\n  gestaltPowerMac7100_80 = 47,\n  gestaltMacIIvx = 48,\n  gestaltMacColorClassic = 49,\n  gestaltPerforma250 = gestaltMacColorClassic,\n  gestaltPowerBook165c = 50,\n  gestaltMacCentris610 = 52,\n  gestaltMacQuadra610 = 53,\n  gestaltPowerBook145 = 54,\n  gestaltPowerMac8100_100 = 55,\n  gestaltMacLC520 = 56,\n  gestaltAWS9150_120 = 57,\n  gestaltPowerMac6400 = 58,\n  gestaltPerforma6400 = gestaltPowerMac6400,\n  gestaltPerforma6360 = gestaltPerforma6400,\n  gestaltMacCentris660AV = 60,\n  gestaltMacQuadra660AV = gestaltMacCentris660AV,\n  gestaltPerforma46x = 62,\n  gestaltPowerMac8100_80 = 65,\n  gestaltAWS8150_80 = gestaltPowerMac8100_80,\n  gestaltPowerMac9500 = 67,\n  gestaltPowerMac9600 = gestaltPowerMac9500,\n  gestaltPowerMac7500 = 68,\n  gestaltPowerMac7600 = gestaltPowerMac7500,\n  gestaltPowerMac8500 = 69,\n  gestaltPowerMac8600 = gestaltPowerMac8500,\n  gestaltAWS8550 = gestaltPowerMac7500,\n  gestaltPowerBook180c = 71,\n  gestaltPowerBook520 = 72,\n  gestaltPowerBook520c = gestaltPowerBook520,\n  gestaltPowerBook540 = gestaltPowerBook520,\n  gestaltPowerBook540c = gestaltPowerBook520,\n  gestaltPowerMac5400 = 74,\n  gestaltPowerMac6100_60 = 75,\n  gestaltAWS6150_60 = gestaltPowerMac6100_60,\n  gestaltPowerBookDuo270c = 77,\n  gestaltMacQuadra840AV = 78,\n  gestaltPerforma550 = 80,\n  gestaltPowerBook165 = 84,\n  gestaltPowerBook190 = 85,\n  gestaltMacTV = 88,\n  gestaltMacLC475 = 89,\n  gestaltPerforma47x = gestaltMacLC475,\n  gestaltMacLC575 = 92,\n  gestaltMacQuadra605 = 94,\n  gestaltMacQuadra630 = 98,\n  gestaltMacLC580 = 99,\n  gestaltPerforma580 = gestaltMacLC580,\n  gestaltPowerMac6100_66 = 100,\n  gestaltAWS6150_66 = gestaltPowerMac6100_66,\n  gestaltPowerBookDuo280 = 102,\n  gestaltPowerBookDuo280c = 103,\n  gestaltPowerMacLC475 = 104,\n  gestaltPowerMacPerforma47x = gestaltPowerMacLC475,\n  gestaltPowerMacLC575 = 105,\n  gestaltPowerMacPerforma57x = gestaltPowerMacLC575,\n  gestaltPowerMacQuadra630 = 106,\n  gestaltPowerMacLC630 = gestaltPowerMacQuadra630,\n  gestaltPowerMacPerforma63x = gestaltPowerMacQuadra630,\n  gestaltPowerMac7200 = 108,\n  gestaltPowerMac7300 = 109,\n  gestaltPowerMac7100_66 = 112,\n  gestaltPowerBook150 = 115,\n  gestaltPowerMacQuadra700 = 116,\n  gestaltPowerMacQuadra900 = 117,\n  gestaltPowerMacQuadra950 = 118,\n  gestaltPowerMacCentris610 = 119,\n  gestaltPowerMacCentris650 = 120,\n  gestaltPowerMacQuadra610 = 121,\n  gestaltPowerMacQuadra650 = 122,\n  gestaltPowerMacQuadra800 = 123,\n  gestaltPowerBookDuo2300 = 124,\n  gestaltPowerBook500PPCUpgrade = 126,\n  gestaltPowerBook5300 = 128,\n  gestaltPowerBook1400 = 310,\n  gestaltPowerBook3400 = 306,\n  gestaltPowerBook2400 = 307,\n  gestaltPowerBookG3Series = 312,\n  gestaltPowerBookG3 = 313,\n  gestaltPowerBookG3Series2 = 314,\n  gestaltPowerMacNewWorld = 406,\n  gestaltPowerMacG3 = 510,\n  gestaltPowerMac5500 = 512,\n  gestalt20thAnniversary = gestaltPowerMac5500,\n  gestaltPowerMac6500 = 513,\n  gestaltPowerMac4400_160 = 514,\n  gestaltPowerMac4400 = 515,\n  gestaltMacOSCompatibility = 1206\n};\n\n\nenum {\n  gestaltQuadra605 = gestaltMacQuadra605,\n  gestaltQuadra610 = gestaltMacQuadra610,\n  gestaltQuadra630 = gestaltMacQuadra630,\n  gestaltQuadra650 = gestaltMacQuadra650,\n  gestaltQuadra660AV = gestaltMacQuadra660AV,\n  gestaltQuadra700 = gestaltMacQuadra700,\n  gestaltQuadra800 = gestaltMacQuadra800,\n  gestaltQuadra840AV = gestaltMacQuadra840AV,\n  gestaltQuadra900 = gestaltMacQuadra900,\n  gestaltQuadra950 = gestaltMacQuadra950\n};\n\nenum {\n  kMachineNameStrID = -16395\n};\n\nenum {\n  gestaltSMPMailerVersion = 'malr'\n};\n\nenum {\n  gestaltMediaBay = 'mbeh',\n  gestaltMBLegacy = 0,\n  gestaltMBSingleBay = 1,\n  gestaltMBMultipleBays = 2\n};\n\nenum {\n  gestaltMessageMgrVersion = 'mess'\n};\n\n\n\nenum {\n  gestaltMenuMgrAttr = 'menu',\n  gestaltMenuMgrPresent = (1L << 0),\n\n\n  gestaltMenuMgrPresentBit = 0,\n  gestaltMenuMgrAquaLayoutBit = 1,\n  gestaltMenuMgrMultipleItemsWithCommandIDBit = 2,\n  gestaltMenuMgrRetainsIconRefBit = 3,\n  gestaltMenuMgrSendsMenuBoundsToDefProcBit = 4,\n  gestaltMenuMgrMoreThanFiveMenusDeepBit = 5,\n  gestaltMenuMgrCGImageMenuTitleBit = 6,\n\n  gestaltMenuMgrPresentMask = (1L << gestaltMenuMgrPresentBit),\n  gestaltMenuMgrAquaLayoutMask = (1L << gestaltMenuMgrAquaLayoutBit),\n  gestaltMenuMgrMultipleItemsWithCommandIDMask = (1L << gestaltMenuMgrMultipleItemsWithCommandIDBit),\n  gestaltMenuMgrRetainsIconRefMask = (1L << gestaltMenuMgrRetainsIconRefBit),\n  gestaltMenuMgrSendsMenuBoundsToDefProcMask = (1L << gestaltMenuMgrSendsMenuBoundsToDefProcBit),\n  gestaltMenuMgrMoreThanFiveMenusDeepMask = (1L << gestaltMenuMgrMoreThanFiveMenusDeepBit),\n  gestaltMenuMgrCGImageMenuTitleMask = (1L << gestaltMenuMgrCGImageMenuTitleBit)\n};\n\n\nenum {\n  gestaltMultipleUsersState = 'mfdr'\n};\n\n\nenum {\n  gestaltMachineIcon = 'micn'\n};\n\nenum {\n  gestaltMiscAttr = 'misc',\n  gestaltScrollingThrottle = 0,\n  gestaltSquareMenuBar = 2\n};\n# 1436 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Gestalt.h\" 3\nenum {\n  gestaltMixedModeVersion = 'mixd'\n};\n\nenum {\n  gestaltMixedModeAttr = 'mixd',\n  gestaltMixedModePowerPC = 0,\n  gestaltPowerPCAware = 0,\n  gestaltMixedModeCFM68K = 1,\n  gestaltMixedModeCFM68KHasTrap = 2,\n  gestaltMixedModeCFM68KHasState = 3\n};\n\nenum {\n  gestaltQuickTimeConferencing = 'mtlk'\n};\n\nenum {\n  gestaltMemoryMapAttr = 'mmap',\n  gestaltMemoryMapSparse = 0\n};\n\nenum {\n  gestaltMMUType = 'mmu ',\n  gestaltNoMMU = 0,\n  gestaltAMU = 1,\n  gestalt68851 = 2,\n  gestalt68030MMU = 3,\n  gestalt68040MMU = 4,\n  gestaltEMMU1 = 5\n};\n\nenum {\n\n\n\n  gestaltUserVisibleMachineName = 'mnam'\n};\n\nenum {\n  gestaltMPCallableAPIsAttr = 'mpsc',\n  gestaltMPFileManager = 0,\n  gestaltMPDeviceManager = 1,\n  gestaltMPTrapCalls = 2\n};\n\nenum {\n  gestaltStdNBPAttr = 'nlup',\n  gestaltStdNBPPresent = 0,\n  gestaltStdNBPSupportsAutoPosition = 1\n};\n\nenum {\n  gestaltNotificationMgrAttr = 'nmgr',\n  gestaltNotificationPresent = 0\n};\n\nenum {\n  gestaltNameRegistryVersion = 'nreg'\n};\n\nenum {\n  gestaltNuBusSlotCount = 'nubs'\n};\n\nenum {\n  gestaltOCEToolboxVersion = 'ocet',\n  gestaltOCETB = 0x0102,\n  gestaltSFServer = 0x0100\n};\n\nenum {\n  gestaltOCEToolboxAttr = 'oceu',\n  gestaltOCETBPresent = 0x01,\n  gestaltOCETBAvailable = 0x02,\n  gestaltOCESFServerAvailable = 0x04,\n  gestaltOCETBNativeGlueAvailable = 0x10\n};\n\nenum {\n  gestaltOpenFirmwareInfo = 'opfw'\n};\n\nenum {\n  gestaltOSAttr = 'os  ',\n  gestaltSysZoneGrowable = 0,\n  gestaltLaunchCanReturn = 1,\n  gestaltLaunchFullFileSpec = 2,\n  gestaltLaunchControl = 3,\n  gestaltTempMemSupport = 4,\n  gestaltRealTempMemory = 5,\n  gestaltTempMemTracked = 6,\n  gestaltIPCSupport = 7,\n  gestaltSysDebuggerSupport = 8,\n  gestaltNativeProcessMgrBit = 19,\n  gestaltAltivecRegistersSwappedCorrectlyBit = 20\n};\n\nenum {\n  gestaltOSTable = 'ostt'\n};\n# 1545 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Gestalt.h\" 3\nenum {\n  gestaltOpenTptNetworkSetup = 'otcf',\n  gestaltOpenTptNetworkSetupLegacyImport = 0,\n  gestaltOpenTptNetworkSetupLegacyExport = 1,\n  gestaltOpenTptNetworkSetupSupportsMultihoming = 2\n};\n\nenum {\n  gestaltOpenTptNetworkSetupVersion = 'otcv'\n};\n\n\n\n\n\n\n\nenum {\n  gestaltOpenTptRemoteAccess = 'otra',\n  gestaltOpenTptRemoteAccessPresent = 0,\n  gestaltOpenTptRemoteAccessLoaded = 1,\n  gestaltOpenTptRemoteAccessClientOnly = 2,\n  gestaltOpenTptRemoteAccessPServer = 3,\n  gestaltOpenTptRemoteAccessMPServer = 4,\n  gestaltOpenTptPPPPresent = 5,\n  gestaltOpenTptARAPPresent = 6\n};\n\nenum {\n  gestaltOpenTptRemoteAccessVersion = 'otrv'\n};\n\n\n\n\n\nenum {\n  gestaltOpenTptVersions = 'otvr'\n};\n\nenum {\n  gestaltOpenTpt = 'otan',\n  gestaltOpenTptPresentMask = 0x00000001,\n  gestaltOpenTptLoadedMask = 0x00000002,\n  gestaltOpenTptAppleTalkPresentMask = 0x00000004,\n  gestaltOpenTptAppleTalkLoadedMask = 0x00000008,\n  gestaltOpenTptTCPPresentMask = 0x00000010,\n  gestaltOpenTptTCPLoadedMask = 0x00000020,\n  gestaltOpenTptIPXSPXPresentMask = 0x00000040,\n  gestaltOpenTptIPXSPXLoadedMask = 0x00000080,\n  gestaltOpenTptPresentBit = 0,\n  gestaltOpenTptLoadedBit = 1,\n  gestaltOpenTptAppleTalkPresentBit = 2,\n  gestaltOpenTptAppleTalkLoadedBit = 3,\n  gestaltOpenTptTCPPresentBit = 4,\n  gestaltOpenTptTCPLoadedBit = 5,\n  gestaltOpenTptIPXSPXPresentBit = 6,\n  gestaltOpenTptIPXSPXLoadedBit = 7\n};\n\n\nenum {\n  gestaltPCCard = 'pccd',\n  gestaltCardServicesPresent = 0,\n  gestaltPCCardFamilyPresent = 1,\n  gestaltPCCardHasPowerControl = 2,\n  gestaltPCCardSupportsCardBus = 3\n};\n\nenum {\n  gestaltProcClkSpeed = 'pclk'\n};\n\nenum {\n  gestaltProcClkSpeedMHz = 'mclk'\n};\n\nenum {\n  gestaltPCXAttr = 'pcxg',\n  gestaltPCXHas8and16BitFAT = 0,\n  gestaltPCXHasProDOS = 1,\n  gestaltPCXNewUI = 2,\n  gestaltPCXUseICMapping = 3\n};\n\nenum {\n  gestaltLogicalPageSize = 'pgsz'\n};\n# 1644 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Gestalt.h\" 3\nenum {\n  gestaltScreenCaptureMain = 'pic1',\n  gestaltScreenCaptureDir = 'pic2'\n};\n\nenum {\n  gestaltGXPrintingMgrVersion = 'pmgr'\n};\n\nenum {\n  gestaltPopupAttr = 'pop!',\n  gestaltPopupPresent = 0\n};\n\nenum {\n  gestaltPowerMgrAttr = 'powr',\n  gestaltPMgrExists = 0,\n  gestaltPMgrCPUIdle = 1,\n  gestaltPMgrSCC = 2,\n  gestaltPMgrSound = 3,\n  gestaltPMgrDispatchExists = 4,\n  gestaltPMgrSupportsAVPowerStateAtSleepWake = 5\n};\n\nenum {\n  gestaltPowerMgrVers = 'pwrv'\n};\n\n\n\n\n\n\n\nenum {\n  gestaltPPCToolboxAttr = 'ppc ',\n  gestaltPPCToolboxPresent = 0x0000,\n  gestaltPPCSupportsRealTime = 0x1000,\n  gestaltPPCSupportsIncoming = 0x0001,\n  gestaltPPCSupportsOutGoing = 0x0002,\n  gestaltPPCSupportsTCP_IP = 0x0004,\n  gestaltPPCSupportsIncomingAppleTalk = 0x0010,\n  gestaltPPCSupportsIncomingTCP_IP = 0x0020,\n  gestaltPPCSupportsOutgoingAppleTalk = 0x0100,\n  gestaltPPCSupportsOutgoingTCP_IP = 0x0200\n};\n\n\n\n\n\n\nenum {\n  gestaltPowerPCProcessorFeatures = 'ppcf',\n  gestaltPowerPCHasGraphicsInstructions = 0,\n  gestaltPowerPCHasSTFIWXInstruction = 1,\n  gestaltPowerPCHasSquareRootInstructions = 2,\n  gestaltPowerPCHasDCBAInstruction = 3,\n  gestaltPowerPCHasVectorInstructions = 4,\n  gestaltPowerPCHasDataStreams = 5,\n  gestaltPowerPCHas64BitSupport = 6,\n  gestaltPowerPCHasDCBTStreams = 7,\n  gestaltPowerPCASArchitecture = 8,\n  gestaltPowerPCIgnoresDCBST = 9\n};\n\nenum {\n  gestaltProcessorType = 'proc',\n  gestalt68000 = 1,\n  gestalt68010 = 2,\n  gestalt68020 = 3,\n  gestalt68030 = 4,\n  gestalt68040 = 5\n};\n\nenum {\n  gestaltSDPPromptVersion = 'prpv'\n};\n\nenum {\n  gestaltParityAttr = 'prty',\n  gestaltHasParityCapability = 0,\n  gestaltParityEnabled = 1\n};\n\nenum {\n  gestaltQD3DVersion = 'q3v '\n};\n\nenum {\n  gestaltQD3DViewer = 'q3vc',\n  gestaltQD3DViewerPresent = 0\n};\n# 1746 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Gestalt.h\" 3\nenum {\n  gestaltQuickdrawVersion = 'qd  ',\n  gestaltOriginalQD = 0x0000,\n  gestalt8BitQD = 0x0100,\n  gestalt32BitQD = 0x0200,\n  gestalt32BitQD11 = 0x0201,\n  gestalt32BitQD12 = 0x0220,\n  gestalt32BitQD13 = 0x0230,\n  gestaltAllegroQD = 0x0250,\n  gestaltMacOSXQD = 0x0300\n};\n\nenum {\n  gestaltQD3D = 'qd3d',\n  gestaltQD3DPresent = 0\n};\n# 1771 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Gestalt.h\" 3\nenum {\n  gestaltGXVersion = 'qdgx'\n};\n\nenum {\n  gestaltQuickdrawFeatures = 'qdrw',\n  gestaltHasColor = 0,\n  gestaltHasDeepGWorlds = 1,\n  gestaltHasDirectPixMaps = 2,\n  gestaltHasGrayishTextOr = 3,\n  gestaltSupportsMirroring = 4,\n  gestaltQDHasLongRowBytes = 5\n};\n\nenum {\n  gestaltQDTextVersion = 'qdtx',\n  gestaltOriginalQDText = 0x0000,\n  gestaltAllegroQDText = 0x0100,\n  gestaltMacOSXQDText = 0x0200\n};\n\nenum {\n  gestaltQDTextFeatures = 'qdtf',\n  gestaltWSIISupport = 0,\n  gestaltSbitFontSupport = 1,\n  gestaltAntiAliasedTextAvailable = 2,\n  gestaltOFA2available = 3,\n  gestaltCreatesAliasFontRsrc = 4,\n  gestaltNativeType1FontSupport = 5,\n  gestaltCanUseCGTextRendering = 6\n};\n\n\nenum {\n  gestaltQuickTimeConferencingInfo = 'qtci'\n};\n\nenum {\n  gestaltQuickTimeVersion = 'qtim',\n  gestaltQuickTime = 'qtim'\n};\n\nenum {\n  gestaltQuickTimeFeatures = 'qtrs',\n  gestaltPPCQuickTimeLibPresent = 0\n};\n\nenum {\n  gestaltQuickTimeStreamingFeatures = 'qtsf'\n};\n\nenum {\n  gestaltQuickTimeStreamingVersion = 'qtst'\n};\n\nenum {\n  gestaltQuickTimeThreadSafeFeaturesAttr = 'qtth',\n  gestaltQuickTimeThreadSafeICM = 0,\n  gestaltQuickTimeThreadSafeMovieToolbox = 1,\n  gestaltQuickTimeThreadSafeMovieImport = 2,\n  gestaltQuickTimeThreadSafeMovieExport = 3,\n  gestaltQuickTimeThreadSafeGraphicsImport = 4,\n  gestaltQuickTimeThreadSafeGraphicsExport = 5,\n  gestaltQuickTimeThreadSafeMoviePlayback = 6\n};\n\nenum {\n  gestaltQTVRMgrAttr = 'qtvr',\n  gestaltQTVRMgrPresent = 0,\n  gestaltQTVRObjMoviesPresent = 1,\n  gestaltQTVRCylinderPanosPresent = 2,\n  gestaltQTVRCubicPanosPresent = 3\n};\n\nenum {\n  gestaltQTVRMgrVers = 'qtvv'\n};\n# 1861 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Gestalt.h\" 3\nenum {\n  gestaltPhysicalRAMSize = 'ram '\n};\n\nenum {\n  gestaltPhysicalRAMSizeInMegabytes = 'ramm'\n};\n\nenum {\n  gestaltRBVAddr = 'rbv '\n};\n\nenum {\n  gestaltROMSize = 'rom '\n};\n\nenum {\n  gestaltROMVersion = 'romv'\n};\n\nenum {\n  gestaltResourceMgrAttr = 'rsrc',\n  gestaltPartialRsrcs = 0,\n  gestaltHasResourceOverrides = 1\n};\n\nenum {\n  gestaltResourceMgrBugFixesAttrs = 'rmbg',\n  gestaltRMForceSysHeapRolledIn = 0,\n  gestaltRMFakeAppleMenuItemsRolledIn = 1,\n  gestaltSanityCheckResourceFiles = 2,\n  gestaltSupportsFSpResourceFileAlreadyOpenBit = 3,\n  gestaltRMSupportsFSCalls = 4,\n  gestaltRMTypeIndexOrderingReverse = 8\n};\n\n\nenum {\n  gestaltRealtimeMgrAttr = 'rtmr',\n  gestaltRealtimeMgrPresent = 0\n};\n\n\nenum {\n  gestaltSafeOFAttr = 'safe',\n  gestaltVMZerosPagesBit = 0,\n  gestaltInitHeapZerosOutHeapsBit = 1,\n  gestaltNewHandleReturnsZeroedMemoryBit = 2,\n  gestaltNewPtrReturnsZeroedMemoryBit = 3,\n  gestaltFileAllocationZeroedBlocksBit = 4\n};\n\n\nenum {\n  gestaltSCCReadAddr = 'sccr'\n};\n\nenum {\n  gestaltSCCWriteAddr = 'sccw'\n};\n\nenum {\n  gestaltScrapMgrAttr = 'scra',\n  gestaltScrapMgrTranslationAware = 0\n};\n\nenum {\n  gestaltScriptMgrVersion = 'scri'\n};\n\nenum {\n  gestaltScriptCount = 'scr#'\n};\n\nenum {\n  gestaltSCSI = 'scsi',\n  gestaltAsyncSCSI = 0,\n  gestaltAsyncSCSIINROM = 1,\n  gestaltSCSISlotBoot = 2,\n  gestaltSCSIPollSIH = 3\n};\n\nenum {\n  gestaltControlStripAttr = 'sdev',\n  gestaltControlStripExists = 0,\n  gestaltControlStripVersionFixed = 1,\n  gestaltControlStripUserFont = 2,\n  gestaltControlStripUserHotKey = 3\n};\n\nenum {\n  gestaltSDPStandardDirectoryVersion = 'sdvr'\n};\n\nenum {\n  gestaltSerialAttr = 'ser ',\n  gestaltHasGPIaToDCDa = 0,\n  gestaltHasGPIaToRTxCa = 1,\n  gestaltHasGPIbToDCDb = 2,\n  gestaltHidePortA = 3,\n  gestaltHidePortB = 4,\n  gestaltPortADisabled = 5,\n  gestaltPortBDisabled = 6\n};\n\nenum {\n  gestaltShutdownAttributes = 'shut',\n  gestaltShutdownHassdOnBootVolUnmount = 0\n};\n\nenum {\n  gestaltNuBusConnectors = 'sltc'\n};\n\nenum {\n  gestaltSlotAttr = 'slot',\n  gestaltSlotMgrExists = 0,\n  gestaltNuBusPresent = 1,\n  gestaltSESlotPresent = 2,\n  gestaltSE30SlotPresent = 3,\n  gestaltPortableSlotPresent = 4\n};\n\nenum {\n  gestaltFirstSlotNumber = 'slt1'\n};\n\nenum {\n  gestaltSoundAttr = 'snd ',\n  gestaltStereoCapability = 0,\n  gestaltStereoMixing = 1,\n  gestaltSoundIOMgrPresent = 3,\n  gestaltBuiltInSoundInput = 4,\n  gestaltHasSoundInputDevice = 5,\n  gestaltPlayAndRecord = 6,\n  gestalt16BitSoundIO = 7,\n  gestaltStereoInput = 8,\n  gestaltLineLevelInput = 9,\n\n  gestaltSndPlayDoubleBuffer = 10,\n  gestaltMultiChannels = 11,\n  gestalt16BitAudioSupport = 12\n};\n\nenum {\n  gestaltSplitOSAttr = 'spos',\n  gestaltSplitOSBootDriveIsNetworkVolume = 0,\n  gestaltSplitOSAware = 1,\n  gestaltSplitOSEnablerVolumeIsDifferentFromBootVolume = 2,\n  gestaltSplitOSMachineNameSetToNetworkNameTemp = 3,\n  gestaltSplitOSMachineNameStartupDiskIsNonPersistent = 5\n};\n\nenum {\n  gestaltSMPSPSendLetterVersion = 'spsl'\n};\n\nenum {\n  gestaltSpeechRecognitionAttr = 'srta',\n  gestaltDesktopSpeechRecognition = 1,\n  gestaltTelephoneSpeechRecognition = 2\n};\n\nenum {\n  gestaltSpeechRecognitionVersion = 'srtb'\n};\n\nenum {\n  gestaltSoftwareVendorCode = 'srad',\n  gestaltSoftwareVendorApple = 'Appl',\n  gestaltSoftwareVendorLicensee = 'Lcns'\n};\n\nenum {\n  gestaltStandardFileAttr = 'stdf',\n  gestaltStandardFile58 = 0,\n  gestaltStandardFileTranslationAware = 1,\n  gestaltStandardFileHasColorIcons = 2,\n  gestaltStandardFileUseGenericIcons = 3,\n  gestaltStandardFileHasDynamicVolumeAllocation = 4\n};\n\nenum {\n  gestaltSysArchitecture = 'sysa',\n  gestalt68k = 1,\n  gestaltPowerPC = 2,\n  gestaltIntel = 10\n};\n\nenum {\n  gestaltSystemUpdateVersion = 'sysu'\n};\n# 2080 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Gestalt.h\" 3\nenum {\n  gestaltSystemVersion = 'sysv',\n  gestaltSystemVersionMajor = 'sys1',\n  gestaltSystemVersionMinor = 'sys2',\n  gestaltSystemVersionBugFix = 'sys3'\n};\n\nenum {\n  gestaltToolboxTable = 'tbtt'\n};\n\nenum {\n  gestaltTextEditVersion = 'te  ',\n  gestaltTE1 = 1,\n  gestaltTE2 = 2,\n  gestaltTE3 = 3,\n  gestaltTE4 = 4,\n  gestaltTE5 = 5\n};\n\nenum {\n  gestaltTE6 = 6\n};\n\nenum {\n  gestaltTEAttr = 'teat',\n  gestaltTEHasGetHiliteRgn = 0,\n  gestaltTESupportsInlineInput = 1,\n  gestaltTESupportsTextObjects = 2,\n  gestaltTEHasWhiteBackground = 3\n};\n\nenum {\n  gestaltTeleMgrAttr = 'tele',\n  gestaltTeleMgrPresent = 0,\n  gestaltTeleMgrPowerPCSupport = 1,\n  gestaltTeleMgrSoundStreams = 2,\n  gestaltTeleMgrAutoAnswer = 3,\n  gestaltTeleMgrIndHandset = 4,\n  gestaltTeleMgrSilenceDetect = 5,\n  gestaltTeleMgrNewTELNewSupport = 6\n};\n\nenum {\n  gestaltTermMgrAttr = 'term',\n  gestaltTermMgrPresent = 0,\n  gestaltTermMgrErrorString = 2\n};\n\nenum {\n  gestaltThreadMgrAttr = 'thds',\n  gestaltThreadMgrPresent = 0,\n  gestaltSpecificMatchSupport = 1,\n  gestaltThreadsLibraryPresent = 2\n};\n\nenum {\n  gestaltTimeMgrVersion = 'tmgr',\n  gestaltStandardTimeMgr = 1,\n  gestaltRevisedTimeMgr = 2,\n  gestaltExtendedTimeMgr = 3,\n  gestaltNativeTimeMgr = 4\n};\n\nenum {\n  gestaltTSMTEVersion = 'tmTV',\n  gestaltTSMTE1 = 0x0100,\n  gestaltTSMTE15 = 0x0150,\n  gestaltTSMTE152 = 0x0152\n};\n\nenum {\n  gestaltTSMTEAttr = 'tmTE',\n  gestaltTSMTEPresent = 0,\n  gestaltTSMTE = 0\n};\n\nenum {\n  gestaltAVLTreeAttr = 'tree',\n  gestaltAVLTreePresentBit = 0,\n  gestaltAVLTreeSupportsHandleBasedTreeBit = 1,\n  gestaltAVLTreeSupportsTreeLockingBit = 2\n};\n\nenum {\n  gestaltALMAttr = 'trip',\n  gestaltALMPresent = 0,\n  gestaltALMHasSFGroup = 1,\n  gestaltALMHasCFMSupport = 2,\n  gestaltALMHasRescanNotifiers = 3\n};\n\nenum {\n  gestaltALMHasSFLocation = gestaltALMHasSFGroup\n};\n\nenum {\n  gestaltTSMgrVersion = 'tsmv',\n  gestaltTSMgr15 = 0x0150,\n  gestaltTSMgr20 = 0x0200,\n  gestaltTSMgr22 = 0x0220,\n  gestaltTSMgr23 = 0x0230\n};\n\nenum {\n  gestaltTSMgrAttr = 'tsma',\n  gestaltTSMDisplayMgrAwareBit = 0,\n  gestaltTSMdoesTSMTEBit = 1\n};\n\nenum {\n  gestaltSpeechAttr = 'ttsc',\n  gestaltSpeechMgrPresent = 0,\n  gestaltSpeechHasPPCGlue = 1\n};\n\nenum {\n  gestaltTVAttr = 'tv  ',\n  gestaltHasTVTuner = 0,\n  gestaltHasSoundFader = 1,\n  gestaltHasHWClosedCaptioning = 2,\n  gestaltHasIRRemote = 3,\n  gestaltHasVidDecoderScaler = 4,\n  gestaltHasStereoDecoder = 5,\n  gestaltHasSerialFader = 6,\n  gestaltHasFMTuner = 7,\n  gestaltHasSystemIRFunction = 8,\n  gestaltIRDisabled = 9,\n  gestaltINeedIRPowerOffConfirm = 10,\n  gestaltHasZoomedVideo = 11\n};\n\n\nenum {\n  gestaltATSUVersion = 'uisv',\n  gestaltOriginalATSUVersion = (1 << 16),\n  gestaltATSUUpdate1 = (2 << 16),\n  gestaltATSUUpdate2 = (3 << 16),\n  gestaltATSUUpdate3 = (4 << 16),\n  gestaltATSUUpdate4 = (5 << 16),\n  gestaltATSUUpdate5 = (6 << 16),\n  gestaltATSUUpdate6 = (7 << 16),\n  gestaltATSUUpdate7 = (8 << 16)\n};\n\nenum {\n  gestaltATSUFeatures = 'uisf',\n  gestaltATSUTrackingFeature = 0x00000001,\n  gestaltATSUMemoryFeature = 0x00000001,\n  gestaltATSUFallbacksFeature = 0x00000001,\n  gestaltATSUGlyphBoundsFeature = 0x00000001,\n  gestaltATSULineControlFeature = 0x00000001,\n  gestaltATSULayoutCreateAndCopyFeature = 0x00000001,\n  gestaltATSULayoutCacheClearFeature = 0x00000001,\n  gestaltATSUTextLocatorUsageFeature = 0x00000002,\n  gestaltATSULowLevelOrigFeatures = 0x00000004,\n  gestaltATSUFallbacksObjFeatures = 0x00000008,\n  gestaltATSUIgnoreLeadingFeature = 0x00000008,\n  gestaltATSUByCharacterClusterFeature = 0x00000010,\n  gestaltATSUAscentDescentControlsFeature = 0x00000010,\n  gestaltATSUHighlightInactiveTextFeature = 0x00000010,\n  gestaltATSUPositionToCursorFeature = 0x00000010,\n  gestaltATSUBatchBreakLinesFeature = 0x00000010,\n  gestaltATSUTabSupportFeature = 0x00000010,\n  gestaltATSUDirectAccess = 0x00000010,\n  gestaltATSUDecimalTabFeature = 0x00000020,\n  gestaltATSUBiDiCursorPositionFeature = 0x00000020,\n  gestaltATSUNearestCharLineBreakFeature = 0x00000020,\n  gestaltATSUHighlightColorControlFeature = 0x00000020,\n  gestaltATSUUnderlineOptionsStyleFeature = 0x00000020,\n  gestaltATSUStrikeThroughStyleFeature = 0x00000020,\n  gestaltATSUDropShadowStyleFeature = 0x00000020\n};\n\nenum {\n  gestaltUSBAttr = 'usb ',\n  gestaltUSBPresent = 0,\n  gestaltUSBHasIsoch = 1\n};\n\nenum {\n  gestaltUSBVersion = 'usbv'\n};\n\nenum {\n  gestaltVersion = 'vers',\n  gestaltValueImplementedVers = 5\n};\n\nenum {\n  gestaltVIA1Addr = 'via1'\n};\n\nenum {\n  gestaltVIA2Addr = 'via2'\n};\n\nenum {\n  gestaltVMAttr = 'vm  ',\n  gestaltVMPresent = 0,\n  gestaltVMHasLockMemoryForOutput = 1,\n  gestaltVMFilemappingOn = 3,\n  gestaltVMHasPagingControl = 4\n};\n\nenum {\n  gestaltVMInfoType = 'vmin',\n\n  gestaltVMInfoSizeStorageType = 0,\n  gestaltVMInfoSizeType = 1,\n  gestaltVMInfoSimpleType = 2,\n  gestaltVMInfoNoneType = 3\n};\n\nenum {\n  gestaltVMBackingStoreFileRefNum = 'vmbs'\n};\n\n\n\nenum {\n  gestaltALMVers = 'walk'\n};\n\nenum {\n  gestaltWindowMgrAttr = 'wind',\n  gestaltWindowMgrPresent = (1L << 0),\n\n\n  gestaltWindowMgrPresentBit = 0,\n  gestaltExtendedWindowAttributes = 1,\n  gestaltExtendedWindowAttributesBit = 1,\n  gestaltHasFloatingWindows = 2,\n  gestaltHasFloatingWindowsBit = 2,\n  gestaltHasWindowBuffering = 3,\n  gestaltHasWindowBufferingBit = 3,\n  gestaltWindowLiveResizeBit = 4,\n  gestaltWindowMinimizeToDockBit = 5,\n  gestaltHasWindowShadowsBit = 6,\n  gestaltSheetsAreWindowModalBit = 7,\n  gestaltFrontWindowMayBeHiddenBit = 8,\n\n  gestaltWindowMgrPresentMask = (1L << gestaltWindowMgrPresentBit),\n  gestaltExtendedWindowAttributesMask = (1L << gestaltExtendedWindowAttributesBit),\n  gestaltHasFloatingWindowsMask = (1L << gestaltHasFloatingWindowsBit),\n  gestaltHasWindowBufferingMask = (1L << gestaltHasWindowBufferingBit),\n  gestaltWindowLiveResizeMask = (1L << gestaltWindowLiveResizeBit),\n  gestaltWindowMinimizeToDockMask = (1L << gestaltWindowMinimizeToDockBit),\n  gestaltHasWindowShadowsMask = (1L << gestaltHasWindowShadowsBit),\n  gestaltSheetsAreWindowModalMask = (1L << gestaltSheetsAreWindowModalBit),\n  gestaltFrontWindowMayBeHiddenMask = (1L << gestaltFrontWindowMayBeHiddenBit)\n};\n\nenum {\n  gestaltHasSingleWindowModeBit = 8,\n  gestaltHasSingleWindowModeMask = (1L << gestaltHasSingleWindowModeBit)\n};\n\n\n\n\n\n\nenum {\n  gestaltX86Features = 'x86f',\n  gestaltX86HasFPU = 0,\n  gestaltX86HasVME = 1,\n  gestaltX86HasDE = 2,\n  gestaltX86HasPSE = 3,\n  gestaltX86HasTSC = 4,\n  gestaltX86HasMSR = 5,\n  gestaltX86HasPAE = 6,\n  gestaltX86HasMCE = 7,\n  gestaltX86HasCX8 = 8,\n  gestaltX86HasAPIC = 9,\n  gestaltX86HasSEP = 11,\n  gestaltX86HasMTRR = 12,\n  gestaltX86HasPGE = 13,\n  gestaltX86HasMCA = 14,\n  gestaltX86HasCMOV = 15,\n\n  gestaltX86HasPAT = 16,\n  gestaltX86HasPSE36 = 17,\n  gestaltX86HasPSN = 18,\n  gestaltX86HasCLFSH = 19,\n  gestaltX86Serviced20 = 20,\n  gestaltX86HasDS = 21,\n  gestaltX86ResACPI = 22,\n  gestaltX86HasMMX = 23,\n  gestaltX86HasFXSR = 24,\n  gestaltX86HasSSE = 25,\n  gestaltX86HasSSE2 = 26,\n  gestaltX86HasSS = 27,\n  gestaltX86HasHTT = 28,\n  gestaltX86HasTM = 29\n};\n\n\n\n\nenum {\n  gestaltX86AdditionalFeatures = 'x86a',\n  gestaltX86HasSSE3 = 0,\n  gestaltX86HasMONITOR = 3,\n  gestaltX86HasDSCPL = 4,\n  gestaltX86HasVMX = 5,\n  gestaltX86HasSMX = 6,\n  gestaltX86HasEST = 7,\n  gestaltX86HasTM2 = 8,\n  gestaltX86HasSupplementalSSE3 = 9,\n  gestaltX86HasCID = 10,\n  gestaltX86HasCX16 = 13,\n  gestaltX86HasxTPR = 14\n};\n\nenum {\n  gestaltTranslationAttr = 'xlat',\n  gestaltTranslationMgrExists = 0,\n  gestaltTranslationMgrHintOrder = 1,\n  gestaltTranslationPPCAvail = 2,\n  gestaltTranslationGetPathAPIAvail = 3\n};\n\nenum {\n  gestaltExtToolboxTable = 'xttt'\n};\n\nenum {\n  gestaltUSBPrinterSharingVersion = 'zak ',\n  gestaltUSBPrinterSharingVersionMask = 0x0000FFFF,\n  gestaltUSBPrinterSharingAttr = 'zak ',\n  gestaltUSBPrinterSharingAttrMask = (int)0xFFFF0000,\n  gestaltUSBPrinterSharingAttrRunning = (int)0x80000000,\n  gestaltUSBPrinterSharingAttrBooted = 0x40000000\n};\n\n\nenum {\n  gestaltWorldScriptIIVersion = 'doub',\n  gestaltWorldScriptIIAttr = 'wsat',\n  gestaltWSIICanPrintWithoutPrGeneralBit = 0\n};\n# 62 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacMemory.h\" 1 3\n# 40 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacMemory.h\" 3\n#pragma pack(push, 2)\n\nenum {\n  maxSize = 0x7FFFFFF0\n};\n# 56 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacMemory.h\" 3\nenum {\n  defaultPhysicalEntryCount = 8\n};\n\nenum {\n\n  kPageInMemory = 0,\n  kPageOnDisk = 1,\n  kNotPaged = 2\n};\n\nenum {\n\n  k32BitHeap = 1,\n  kNewStyleHeap = 2,\n  kNewDebugHeap = 4\n};\n\n\n\n\n\nenum {\n  kHandleIsResourceBit = 5,\n  kHandlePurgeableBit = 6,\n  kHandleLockedBit = 7\n};\n\n\nenum {\n  kHandleIsResourceMask = 0x20,\n  kHandlePurgeableMask = 0x40,\n  kHandleLockedMask = 0x80\n};\n# 326 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacMemory.h\" 3\nextern OSErr\nMemError(void) ;\n# 377 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacMemory.h\" 3\nextern SInt16\nLMGetMemErr(void) ;\n# 404 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacMemory.h\" 3\nextern void\nLMSetMemErr(SInt16 value) ;\n# 447 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacMemory.h\" 3\nextern Handle\nNewHandle(Size byteCount) ;\n# 489 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacMemory.h\" 3\nextern Handle\nNewHandleClear(Size byteCount) ;\n# 528 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacMemory.h\" 3\nextern Handle\nRecoverHandle(Ptr p) ;\n# 564 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacMemory.h\" 3\nextern Ptr\nNewPtr(Size byteCount) ;\n# 601 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacMemory.h\" 3\nextern Ptr\nNewPtrClear(Size byteCount) ;\n# 672 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacMemory.h\" 3\nextern Handle\nNewEmptyHandle(void) ;\n# 721 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacMemory.h\" 3\nextern void\nHLock(Handle h) ;\n# 754 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacMemory.h\" 3\nextern void\nHLockHi(Handle h) ;\n# 787 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacMemory.h\" 3\nextern void\nHUnlock(Handle h) ;\n# 911 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacMemory.h\" 3\nextern Handle\nTempNewHandle(\n  Size logicalSize,\n  OSErr * resultCode) ;\n# 1184 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacMemory.h\" 3\nextern void\nDisposePtr(Ptr p) ;\n# 1217 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacMemory.h\" 3\nextern Size\nGetPtrSize(Ptr p) ;\n# 1232 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacMemory.h\" 3\nextern void\nSetPtrSize(\n  Ptr p,\n  Size newSize) ;\n# 1274 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacMemory.h\" 3\nextern void\nDisposeHandle(Handle h) ;\n# 1317 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacMemory.h\" 3\nextern void\nSetHandleSize(\n  Handle h,\n  Size newSize) ;\n# 1352 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacMemory.h\" 3\nextern Size\nGetHandleSize(Handle h) ;\n# 1394 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacMemory.h\" 3\nextern void\nReallocateHandle(\n  Handle h,\n  Size byteCount) ;\n# 1442 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacMemory.h\" 3\nextern void\nEmptyHandle(Handle h) ;\n# 1460 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacMemory.h\" 3\nextern void\nHSetRBit(Handle h) ;\n# 1478 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacMemory.h\" 3\nextern void\nHClrRBit(Handle h) ;\n# 1534 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacMemory.h\" 3\nextern SInt8\nHGetState(Handle h) ;\n# 1565 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacMemory.h\" 3\nextern void\nHSetState(\n  Handle h,\n  SInt8 flags) ;\n# 1690 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacMemory.h\" 3\nextern OSErr\nHandToHand(Handle * theHndl) ;\n# 1725 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacMemory.h\" 3\nextern OSErr\nPtrToXHand(\n  const void * srcPtr,\n  Handle dstHndl,\n  long size) ;\n# 1768 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacMemory.h\" 3\nextern OSErr\nPtrToHand(\n  const void * srcPtr,\n  Handle * dstHndl,\n  long size) ;\n# 1818 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacMemory.h\" 3\nextern OSErr\nHandAndHand(\n  Handle hand1,\n  Handle hand2) ;\n# 1860 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacMemory.h\" 3\nextern OSErr\nPtrAndHand(\n  const void * ptr1,\n  Handle hand2,\n  long size) ;\n# 2327 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacMemory.h\" 3\nextern Boolean\nIsHeapValid(void) ;\n# 2343 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacMemory.h\" 3\nextern Boolean\nIsHandleValid(Handle h) ;\n# 2359 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacMemory.h\" 3\nextern Boolean\nIsPointerValid(Ptr p) ;\n# 2519 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacMemory.h\" 3\n#pragma pack(pop)\n# 66 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 1 3\n# 51 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern SInt64\nS64Max(void);\n# 73 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern SInt64\nS64Min(void);\n# 98 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern SInt64\nS64Add(\n  SInt64 left,\n  SInt64 right);\n# 125 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern SInt64\nS64Subtract(\n  SInt64 left,\n  SInt64 right);\n# 152 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern SInt64\nS64Negate(SInt64 value);\n# 206 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern SInt64\nS64Multiply(\n  SInt64 left,\n  SInt64 right);\n# 232 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern SInt64\nS64Mod(\n  SInt64 dividend,\n  SInt64 divisor);\n# 265 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern SInt64\nS64Divide(\n  SInt64 dividend,\n  SInt64 divisor,\n  SInt64 * remainder);\n# 289 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern SInt64\nS64Div(\n  SInt64 dividend,\n  SInt64 divisor);\n# 316 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern SInt64\nS64Set(SInt32 value);\n# 339 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern SInt64\nS64SetU(UInt32 value);\n# 362 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern SInt32\nS32Set(SInt64 value);\n# 385 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern Boolean\nS64And(\n  SInt64 left,\n  SInt64 right);\n# 410 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern Boolean\nS64Or(\n  SInt64 left,\n  SInt64 right);\n# 435 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern Boolean\nS64Eor(\n  SInt64 left,\n  SInt64 right);\n# 460 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern Boolean\nS64Not(SInt64 value);\n# 492 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern SInt32\nS64Compare(\n  SInt64 left,\n  SInt64 right) ;\n# 510 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern SInt64\nS64BitwiseAnd(\n  SInt64 left,\n  SInt64 right);\n# 535 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern SInt64\nS64BitwiseOr(\n  SInt64 left,\n  SInt64 right);\n# 560 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern SInt64\nS64BitwiseEor(\n  SInt64 left,\n  SInt64 right);\n# 585 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern SInt64\nS64BitwiseNot(SInt64 value);\n# 608 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern SInt64\nS64ShiftRight(\n  SInt64 value,\n  UInt32 shift);\n# 633 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern SInt64\nS64ShiftLeft(\n  SInt64 value,\n  UInt32 shift);\n# 664 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern long double\nSInt64ToLongDouble(SInt64 value);\n# 691 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern SInt64\nLongDoubleToSInt64(long double value);\n# 716 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern UInt64\nU64Max(void);\n# 740 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern UInt64\nU64Add(\n  UInt64 left,\n  UInt64 right);\n# 766 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern UInt64\nU64Subtract(\n  UInt64 left,\n  UInt64 right);\n# 794 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern UInt64\nU64Multiply(\n  UInt64 left,\n  UInt64 right);\n# 820 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern UInt64\nU64Mod(\n  UInt64 dividend,\n  UInt64 divisor);\n# 852 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern UInt64\nU64Divide(\n  UInt64 dividend,\n  UInt64 divisor,\n  UInt64 * remainder);\n# 878 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern UInt64\nU64Div(\n  UInt64 dividend,\n  UInt64 divisor);\n# 905 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern UInt64\nU64Set(SInt32 value);\n# 928 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern UInt64\nU64SetU(UInt32 value);\n# 951 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern UInt32\nU32SetU(UInt64 value);\n# 974 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern Boolean\nU64And(\n  UInt64 left,\n  UInt64 right);\n# 999 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern Boolean\nU64Or(\n  UInt64 left,\n  UInt64 right);\n# 1024 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern Boolean\nU64Eor(\n  UInt64 left,\n  UInt64 right);\n# 1049 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern Boolean\nU64Not(UInt64 value);\n# 1081 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern SInt32\nU64Compare(\n  UInt64 left,\n  UInt64 right) ;\n# 1098 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern UInt64\nU64BitwiseAnd(\n  UInt64 left,\n  UInt64 right);\n# 1123 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern UInt64\nU64BitwiseOr(\n  UInt64 left,\n  UInt64 right);\n# 1148 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern UInt64\nU64BitwiseEor(\n  UInt64 left,\n  UInt64 right);\n# 1173 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern UInt64\nU64BitwiseNot(UInt64 value);\n# 1196 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern UInt64\nU64ShiftRight(\n  UInt64 value,\n  UInt32 shift);\n# 1221 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern UInt64\nU64ShiftLeft(\n  UInt64 value,\n  UInt32 shift);\n# 1248 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern long double\nUInt64ToLongDouble(UInt64 value);\n# 1271 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern UInt64\nLongDoubleToUInt64(long double value);\n# 1296 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern SInt64\nUInt64ToSInt64(UInt64 value);\n# 1319 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\nextern UInt64\nSInt64ToUInt64(SInt64 value);\n# 1371 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Math64.h\" 3\n       static __inline wide SInt64ToWide ( SInt64 s ) { wide result; result.hi = ( s >> 32 ); result.lo = ( s & 0xffffffffUL ); return result; }\n       static __inline SInt64 WideToSInt64 ( wide w ) { SInt64 result = w.hi; result = ( result << 32 ) | ( w.lo ); return result; }\n\n     static __inline UnsignedWide UInt64ToUnsignedWide ( UInt64 u ) { UnsignedWide result; result.hi = ( u >> 32 ); result.lo = ( u & 0xffffffffUL ); return result; }\n       static __inline UInt64 UnsignedWideToUInt64 ( UnsignedWide uw ) { UInt64 result = uw.hi ; result = ( result << 32 ) | ( uw.lo ); return result; }\n# 70 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n# 81 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/BackupCore.h\" 1 3\n# 66 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/BackupCore.h\" 3\nextern OSStatus\nCSBackupSetItemExcluded(\n  CFURLRef item,\n  Boolean exclude,\n  Boolean excludeByPath) ;\n# 101 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/BackupCore.h\" 3\nextern Boolean\nCSBackupIsItemExcluded(\n  CFURLRef item,\n  Boolean * excludeByPath) ;\n# 82 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 1 3\n# 32 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 1 3\n# 28 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/OSUtils.h\" 1 3\n# 34 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/OSUtils.h\" 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DateTimeUtils.h\" 1 3\n# 47 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DateTimeUtils.h\" 3\n#pragma pack(push, 2)\n# 79 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DateTimeUtils.h\" 3\ntypedef SInt16 ToggleResults;\nenum {\n\n  toggleUndefined = 0,\n  toggleOK = 1,\n  toggleBadField = 2,\n  toggleBadDelta = 3,\n  toggleBadChar = 4,\n  toggleUnknown = 5,\n  toggleBadNum = 6,\n  toggleOutOfRange = 7,\n  toggleErr3 = 7,\n  toggleErr4 = 8,\n  toggleErr5 = 9\n};\n\nenum {\n\n  smallDateBit = 31,\n  togChar12HourBit = 30,\n  togCharZCycleBit = 29,\n  togDelta12HourBit = 28,\n  genCdevRangeBit = 27,\n  validDateFields = -1,\n  maxDateField = 10\n};\n\nenum {\n  eraMask = 0x0001,\n  yearMask = 0x0002,\n  monthMask = 0x0004,\n  dayMask = 0x0008,\n  hourMask = 0x0010,\n  minuteMask = 0x0020,\n  secondMask = 0x0040,\n  dayOfWeekMask = 0x0080,\n  dayOfYearMask = 0x0100,\n  weekOfYearMask = 0x0200,\n  pmMask = 0x0400,\n  dateStdMask = 0x007F\n};\n\ntypedef SInt8 LongDateField;\nenum {\n  eraField = 0,\n  yearField = 1,\n  monthField = 2,\n  dayField = 3,\n  hourField = 4,\n  minuteField = 5,\n  secondField = 6,\n  dayOfWeekField = 7,\n  dayOfYearField = 8,\n  weekOfYearField = 9,\n  pmField = 10,\n  res1Field = 11,\n  res2Field = 12,\n  res3Field = 13\n};\n\ntypedef SInt8 DateForm;\nenum {\n  shortDate = 0,\n  longDate = 1,\n  abbrevDate = 2\n};\n\nenum {\n\n  fatalDateTime = 0x8000,\n  longDateFound = 1,\n  leftOverChars = 2,\n  sepNotIntlSep = 4,\n  fieldOrderNotIntl = 8,\n  extraneousStrings = 16,\n  tooManySeps = 32,\n  sepNotConsistent = 64,\n  tokenErr = 0x8100,\n  cantReadUtilities = 0x8200,\n  dateTimeNotFound = 0x8400,\n  dateTimeInvalid = 0x8800\n};\n\ntypedef short StringToDateStatus;\ntypedef StringToDateStatus String2DateStatus;\nstruct DateCacheRecord {\n  short hidden[256];\n};\ntypedef struct DateCacheRecord DateCacheRecord;\ntypedef DateCacheRecord * DateCachePtr;\nstruct DateTimeRec {\n  short year;\n  short month;\n  short day;\n  short hour;\n  short minute;\n  short second;\n  short dayOfWeek;\n};\ntypedef struct DateTimeRec DateTimeRec;\n\ntypedef SInt64 LongDateTime;\n# 191 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DateTimeUtils.h\" 3\nunion LongDateCvt {\n  SInt64 c;\n  struct {\n    UInt32 lLow;\n    UInt32 lHigh;\n  } hl;\n};\ntypedef union LongDateCvt LongDateCvt;\n\n\nunion LongDateRec {\n  struct {\n    short era;\n    short year;\n    short month;\n    short day;\n    short hour;\n    short minute;\n    short second;\n    short dayOfWeek;\n    short dayOfYear;\n    short weekOfYear;\n    short pm;\n    short res1;\n    short res2;\n    short res3;\n  } ld;\n  short list[14];\n  struct {\n    short eraAlt;\n    DateTimeRec oldDate;\n  } od;\n};\ntypedef union LongDateRec LongDateRec;\n\ntypedef SInt8 DateDelta;\nstruct TogglePB {\n  long togFlags;\n  ResType amChars;\n  ResType pmChars;\n  long reserved[4];\n};\ntypedef struct TogglePB TogglePB;\n# 264 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DateTimeUtils.h\" 3\nextern OSStatus\nUCConvertUTCDateTimeToCFAbsoluteTime(\n  const UTCDateTime * iUTCDate,\n  CFAbsoluteTime * oCFTime) ;\n# 297 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DateTimeUtils.h\" 3\nextern OSStatus\nUCConvertSecondsToCFAbsoluteTime(\n  UInt32 iSeconds,\n  CFAbsoluteTime * oCFTime) ;\n# 330 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DateTimeUtils.h\" 3\nextern OSStatus\nUCConvertLongDateTimeToCFAbsoluteTime(\n  LongDateTime iLongTime,\n  CFAbsoluteTime * oCFTime) ;\n# 363 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DateTimeUtils.h\" 3\nextern OSStatus\nUCConvertCFAbsoluteTimeToUTCDateTime(\n  CFAbsoluteTime iCFTime,\n  UTCDateTime * oUTCDate) ;\n# 396 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DateTimeUtils.h\" 3\nextern OSStatus\nUCConvertCFAbsoluteTimeToSeconds(\n  CFAbsoluteTime iCFTime,\n  UInt32 * oSeconds) ;\n# 429 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DateTimeUtils.h\" 3\nextern OSStatus\nUCConvertCFAbsoluteTimeToLongDateTime(\n  CFAbsoluteTime iCFTime,\n  LongDateTime * oLongDate) ;\n# 987 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DateTimeUtils.h\" 3\n#pragma pack(pop)\n# 35 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/OSUtils.h\" 2 3\n# 52 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/OSUtils.h\" 3\n#pragma pack(push, 2)\n\nenum {\n\n  sortsBefore = -1,\n  sortsEqual = 0,\n  sortsAfter = 1\n};\n\nenum {\n  dummyType = 0,\n  vType = 1,\n  ioQType = 2,\n  drvQType = 3,\n  evType = 4,\n  fsQType = 5,\n  sIQType = 6,\n  dtQType = 7,\n  nmType = 8\n};\n\ntypedef SignedByte QTypes;\nstruct QElem {\n  struct QElem * qLink;\n  short qType;\n  short qData[1];\n};\ntypedef struct QElem QElem;\ntypedef QElem * QElemPtr;\nstruct QHdr {\n  volatile short qFlags;\n  volatile QElemPtr qHead;\n  volatile QElemPtr qTail;\n};\ntypedef struct QHdr QHdr;\ntypedef QHdr * QHdrPtr;\n# 117 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/OSUtils.h\" 3\nstruct MachineLocation {\n    Fract latitude;\n    Fract longitude;\n    union {\n\n\n\n        long gmtDelta;\n        struct {\n\n            SInt8 pad[3];\n\n            SInt8 Delta;\n        } dls;\n    } u;\n};\ntypedef struct MachineLocation MachineLocation;\n# 171 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/OSUtils.h\" 3\nextern Boolean\nIsMetric(void) ;\n# 198 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/OSUtils.h\" 3\nextern void\nDelay(\n  unsigned long numTicks,\n  unsigned long * finalTicks) ;\n# 233 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/OSUtils.h\" 3\nextern void\nEnqueue(\n  QElemPtr qElement,\n  QHdrPtr qHeader) ;\n# 267 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/OSUtils.h\" 3\nextern OSErr\nDequeue(\n  QElemPtr qElement,\n  QHdrPtr qHeader) ;\n# 359 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/OSUtils.h\" 3\nextern void\nReadLocation(MachineLocation * loc) ;\n# 395 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/OSUtils.h\" 3\nextern UInt32\nTickCount(void) ;\n# 423 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/OSUtils.h\" 3\nextern CFStringRef\nCSCopyUserName(Boolean useShortName) ;\n# 446 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/OSUtils.h\" 3\nextern CFStringRef\nCSCopyMachineName(void) ;\n\n\nenum {\n  useFree = 0,\n  useATalk = 1,\n  useAsync = 2,\n  useExtClk = 3,\n  useMIDI = 4\n};\n\nenum {\n  false32b = 0,\n  true32b = 1\n};\n# 480 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/OSUtils.h\" 3\ntypedef void * SysPPtr;\n# 512 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/OSUtils.h\" 3\ntypedef void ( * DeferredTaskProcPtr)(long dtParam);\ntypedef DeferredTaskProcPtr DeferredTaskUPP;\n# 522 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/OSUtils.h\" 3\nextern DeferredTaskUPP\nNewDeferredTaskUPP(DeferredTaskProcPtr userRoutine) ;\n# 533 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/OSUtils.h\" 3\nextern void\nDisposeDeferredTaskUPP(DeferredTaskUPP userUPP) ;\n# 544 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/OSUtils.h\" 3\nextern void\nInvokeDeferredTaskUPP(\n  long dtParam,\n  DeferredTaskUPP userUPP) ;\n# 561 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/OSUtils.h\" 3\nstruct DeferredTask {\n  volatile QElemPtr qLink;\n  short qType;\n  volatile short dtFlags;\n  DeferredTaskUPP dtAddr;\n  long dtParam;\n  long dtReserved;\n};\ntypedef struct DeferredTask DeferredTask;\ntypedef DeferredTask * DeferredTaskPtr;\n# 785 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/OSUtils.h\" 3\n#pragma pack(pop)\n# 29 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 2 3\n# 60 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\n# 1 \"/usr/include/sys/fcntl.h\" 1 3 4\n# 314 \"/usr/include/sys/fcntl.h\" 3 4\nstruct flock {\n off_t l_start;\n off_t l_len;\n pid_t l_pid;\n short l_type;\n short l_whence;\n};\n# 330 \"/usr/include/sys/fcntl.h\" 3 4\nstruct radvisory {\n       off_t ra_offset;\n       int ra_count;\n};\n# 342 \"/usr/include/sys/fcntl.h\" 3 4\ntypedef struct fsignatures {\n off_t fs_file_start;\n void *fs_blob_start;\n size_t fs_blob_size;\n} fsignatures_t;\n# 356 \"/usr/include/sys/fcntl.h\" 3 4\ntypedef struct fstore {\n unsigned int fst_flags;\n int fst_posmode;\n off_t fst_offset;\n off_t fst_length;\n off_t fst_bytesalloc;\n} fstore_t;\n\n\n\ntypedef struct fbootstraptransfer {\n  off_t fbt_offset;\n  size_t fbt_length;\n  void *fbt_buffer;\n} fbootstraptransfer_t;\n# 389 \"/usr/include/sys/fcntl.h\" 3 4\n#pragma pack(4)\n\nstruct log2phys {\n unsigned int l2p_flags;\n off_t l2p_contigbytes;\n off_t l2p_devoffset;\n};\n\n#pragma pack()\n# 408 \"/usr/include/sys/fcntl.h\" 3 4\nstruct _filesec;\ntypedef struct _filesec *filesec_t;\n\n\ntypedef enum {\n FILESEC_OWNER = 1,\n FILESEC_GROUP = 2,\n FILESEC_UUID = 3,\n FILESEC_MODE = 4,\n FILESEC_ACL = 5,\n FILESEC_GRPUUID = 6,\n\n\n FILESEC_ACL_RAW = 100,\n FILESEC_ACL_ALLOCSIZE = 101\n} filesec_property_t;\n\n\n\n\n\n\nint open(const char *, int, ...) __asm(\"_\" \"open\" );\nint creat(const char *, mode_t) __asm(\"_\" \"creat\" );\nint fcntl(int, int, ...) __asm(\"_\" \"fcntl\" );\n\n\nint openx_np(const char *, int, filesec_t);\nint flock(int, int);\nfilesec_t filesec_init(void);\nfilesec_t filesec_dup(filesec_t);\nvoid filesec_free(filesec_t);\nint filesec_get_property(filesec_t, filesec_property_t, void *);\nint filesec_query_property(filesec_t, filesec_property_t, int *);\nint filesec_set_property(filesec_t, filesec_property_t, const void *);\nint filesec_unset_property(filesec_t, filesec_property_t);\n\n\n\n\n# 61 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 2 3\n# 1 \"/usr/include/sys/acl.h\" 1 3 4\n# 26 \"/usr/include/sys/acl.h\" 3 4\n# 1 \"/usr/include/sys/kauth.h\" 1 3 4\n# 55 \"/usr/include/sys/kauth.h\" 3 4\ntypedef struct {\n\n unsigned char g_guid[16];\n} guid_t;\n\n\n\n\n#pragma pack(1)\ntypedef struct {\n u_int8_t sid_kind;\n u_int8_t sid_authcount;\n u_int8_t sid_authority[6];\n\n u_int32_t sid_authorities[16];\n} ntsid_t;\n#pragma pack()\n# 85 \"/usr/include/sys/kauth.h\" 3 4\nstruct kauth_identity_extlookup {\n u_int32_t el_seqno;\n u_int32_t el_result;\n\n\n\n\n\n u_int32_t el_flags;\n# 110 \"/usr/include/sys/kauth.h\" 3 4\n __darwin_pid_t el_info_pid;\n u_int32_t el_info_reserved_1;\n u_int32_t el_info_reserved_2;\n u_int32_t el_info_reserved_3;\n\n uid_t el_uid;\n guid_t el_uguid;\n u_int32_t el_uguid_valid;\n ntsid_t el_usid;\n u_int32_t el_usid_valid;\n gid_t el_gid;\n guid_t el_gguid;\n u_int32_t el_gguid_valid;\n ntsid_t el_gsid;\n u_int32_t el_gsid_valid;\n u_int32_t el_member_valid;\n};\n# 140 \"/usr/include/sys/kauth.h\" 3 4\ntypedef u_int32_t kauth_ace_rights_t;\n\n\nstruct kauth_ace {\n guid_t ace_applicable;\n u_int32_t ace_flags;\n# 164 \"/usr/include/sys/kauth.h\" 3 4\n kauth_ace_rights_t ace_rights;\n\n\n\n\n\n\n};\n\n\n\ntypedef struct kauth_ace *kauth_ace_t;\n\n\n\n\nstruct kauth_acl {\n u_int32_t acl_entrycount;\n u_int32_t acl_flags;\n\n struct kauth_ace acl_ace[1];\n};\n# 225 \"/usr/include/sys/kauth.h\" 3 4\ntypedef struct kauth_acl *kauth_acl_t;\n# 235 \"/usr/include/sys/kauth.h\" 3 4\nstruct kauth_filesec {\n u_int32_t fsec_magic;\n\n guid_t fsec_owner;\n guid_t fsec_group;\n\n struct kauth_acl fsec_acl;\n};\n# 256 \"/usr/include/sys/kauth.h\" 3 4\ntypedef struct kauth_filesec *kauth_filesec_t;\n# 27 \"/usr/include/sys/acl.h\" 2 3 4\n# 38 \"/usr/include/sys/acl.h\" 3 4\ntypedef enum {\n ACL_READ_DATA = (1<<1),\n ACL_LIST_DIRECTORY = (1<<1),\n ACL_WRITE_DATA = (1<<2),\n ACL_ADD_FILE = (1<<2),\n ACL_EXECUTE = (1<<3),\n ACL_SEARCH = (1<<3),\n ACL_DELETE = (1<<4),\n ACL_APPEND_DATA = (1<<5),\n ACL_ADD_SUBDIRECTORY = (1<<5),\n ACL_DELETE_CHILD = (1<<6),\n ACL_READ_ATTRIBUTES = (1<<7),\n ACL_WRITE_ATTRIBUTES = (1<<8),\n ACL_READ_EXTATTRIBUTES = (1<<9),\n ACL_WRITE_EXTATTRIBUTES = (1<<10),\n ACL_READ_SECURITY = (1<<11),\n ACL_WRITE_SECURITY = (1<<12),\n ACL_CHANGE_OWNER = (1<<13)\n} acl_perm_t;\n\n\ntypedef enum {\n ACL_UNDEFINED_TAG = 0,\n ACL_EXTENDED_ALLOW = 1,\n ACL_EXTENDED_DENY = 2\n} acl_tag_t;\n\n\ntypedef enum {\n ACL_TYPE_EXTENDED = 0x00000100,\n\n ACL_TYPE_ACCESS = 0x00000000,\n ACL_TYPE_DEFAULT = 0x00000001,\n\n ACL_TYPE_AFS = 0x00000002,\n ACL_TYPE_CODA = 0x00000003,\n ACL_TYPE_NTFS = 0x00000004,\n ACL_TYPE_NWFS = 0x00000005\n} acl_type_t;\n\n\n\n\n\n\ntypedef enum {\n ACL_FIRST_ENTRY = 0,\n ACL_NEXT_ENTRY = -1,\n ACL_LAST_ENTRY = -2\n} acl_entry_id_t;\n\n\ntypedef enum {\n ACL_FLAG_DEFER_INHERIT = (1 << 0),\n ACL_ENTRY_INHERITED = (1<<4),\n ACL_ENTRY_FILE_INHERIT = (1<<5),\n ACL_ENTRY_DIRECTORY_INHERIT = (1<<6),\n ACL_ENTRY_LIMIT_INHERIT = (1<<7),\n ACL_ENTRY_ONLY_INHERIT = (1<<8)\n} acl_flag_t;\n\n\n\nstruct _acl;\nstruct _acl_entry;\nstruct _acl_permset;\nstruct _acl_flagset;\n\ntypedef struct _acl *acl_t;\ntypedef struct _acl_entry *acl_entry_t;\ntypedef struct _acl_permset *acl_permset_t;\ntypedef struct _acl_flagset *acl_flagset_t;\n\n\n\nextern acl_t acl_dup(acl_t acl);\nextern int acl_free(void *obj_p);\nextern acl_t acl_init(int count);\n\n\nextern int acl_copy_entry(acl_entry_t dest_d, acl_entry_t src_d);\nextern int acl_create_entry(acl_t *acl_p, acl_entry_t *entry_p);\nextern int acl_create_entry_np(acl_t *acl_p, acl_entry_t *entry_p, int entry_index);\nextern int acl_delete_entry(acl_t acl, acl_entry_t entry_d);\nextern int acl_get_entry(acl_t acl, int entry_id, acl_entry_t *entry_p);\nextern int acl_valid(acl_t acl);\nextern int acl_valid_fd_np(int fd, acl_type_t type, acl_t acl);\nextern int acl_valid_file_np(const char *path, acl_type_t type, acl_t acl);\nextern int acl_valid_link_np(const char *path, acl_type_t type, acl_t acl);\n\n\nextern int acl_add_perm(acl_permset_t permset_d, acl_perm_t perm);\nextern int acl_calc_mask(acl_t *acl_p);\nextern int acl_clear_perms(acl_permset_t permset_d);\nextern int acl_delete_perm(acl_permset_t permset_d, acl_perm_t perm);\nextern int acl_get_perm_np(acl_permset_t permset_d, acl_perm_t perm);\nextern int acl_get_permset(acl_entry_t entry_d, acl_permset_t *permset_p);\nextern int acl_set_permset(acl_entry_t entry_d, acl_permset_t permset_d);\n\n\nextern int acl_add_flag_np(acl_flagset_t flagset_d, acl_flag_t flag);\nextern int acl_clear_flags_np(acl_flagset_t flagset_d);\nextern int acl_delete_flag_np(acl_flagset_t flagset_d, acl_flag_t flag);\nextern int acl_get_flag_np(acl_flagset_t flagset_d, acl_flag_t flag);\nextern int acl_get_flagset_np(void *obj_p, acl_flagset_t *flagset_p);\nextern int acl_set_flagset_np(void *obj_p, acl_flagset_t flagset_d);\n\n\nextern void *acl_get_qualifier(acl_entry_t entry_d);\nextern int acl_get_tag_type(acl_entry_t entry_d, acl_tag_t *tag_type_p);\nextern int acl_set_qualifier(acl_entry_t entry_d, const void *tag_qualifier_p);\nextern int acl_set_tag_type(acl_entry_t entry_d, acl_tag_t tag_type);\n\n\nextern int acl_delete_def_file(const char *path_p);\nextern acl_t acl_get_fd(int fd);\nextern acl_t acl_get_fd_np(int fd, acl_type_t type);\nextern acl_t acl_get_file(const char *path_p, acl_type_t type);\nextern acl_t acl_get_link_np(const char *path_p, acl_type_t type);\nextern int acl_set_fd(int fd, acl_t acl);\nextern int acl_set_fd_np(int fd, acl_t acl, acl_type_t acl_type);\nextern int acl_set_file(const char *path_p, acl_type_t type, acl_t acl);\nextern int acl_set_link_np(const char *path_p, acl_type_t type, acl_t acl);\n\n\nextern ssize_t acl_copy_ext(void *buf_p, acl_t acl, ssize_t size);\nextern ssize_t acl_copy_ext_native(void *buf_p, acl_t acl, ssize_t size);\nextern acl_t acl_copy_int(const void *buf_p);\nextern acl_t acl_copy_int_native(const void *buf_p);\nextern acl_t acl_from_text(const char *buf_p);\nextern ssize_t acl_size(acl_t acl);\nextern char *acl_to_text(acl_t acl, ssize_t *len_p);\n\n# 62 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 2 3\n# 1 \"/System/Library/Frameworks/DiskArbitration.framework/Headers/DADisk.h\" 1 3\n# 28 \"/System/Library/Frameworks/DiskArbitration.framework/Headers/DADisk.h\" 3\n# 1 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 1 3\n# 42 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\n# 1 \"/usr/include/mach/mach_types.h\" 1 3 4\n# 80 \"/usr/include/mach/mach_types.h\" 3 4\n# 1 \"/usr/include/mach/host_info.h\" 1 3 4\n# 69 \"/usr/include/mach/host_info.h\" 3 4\n# 1 \"/usr/include/mach/vm_statistics.h\" 1 3 4\n# 84 \"/usr/include/mach/vm_statistics.h\" 3 4\nstruct vm_statistics {\n natural_t free_count;\n natural_t active_count;\n natural_t inactive_count;\n natural_t wire_count;\n natural_t zero_fill_count;\n natural_t reactivations;\n natural_t pageins;\n natural_t pageouts;\n natural_t faults;\n natural_t cow_faults;\n natural_t lookups;\n natural_t hits;\n\n\n natural_t purgeable_count;\n natural_t purges;\n# 109 \"/usr/include/mach/vm_statistics.h\" 3 4\n natural_t speculative_count;\n};\n\n\ntypedef struct vm_statistics *vm_statistics_t;\ntypedef struct vm_statistics vm_statistics_data_t;\n# 139 \"/usr/include/mach/vm_statistics.h\" 3 4\nstruct vm_statistics64 {\n natural_t free_count;\n natural_t active_count;\n natural_t inactive_count;\n natural_t wire_count;\n uint64_t zero_fill_count;\n uint64_t reactivations;\n uint64_t pageins;\n uint64_t pageouts;\n uint64_t faults;\n uint64_t cow_faults;\n uint64_t lookups;\n uint64_t hits;\n\n\n uint64_t purges;\n natural_t purgeable_count;\n# 164 \"/usr/include/mach/vm_statistics.h\" 3 4\n natural_t speculative_count;\n\n}\n\n\n\n;\n\ntypedef struct vm_statistics64 *vm_statistics64_t;\ntypedef struct vm_statistics64 vm_statistics64_data_t;\n# 70 \"/usr/include/mach/host_info.h\" 2 3 4\n# 1 \"/usr/include/mach/machine.h\" 1 3 4\n# 67 \"/usr/include/mach/machine.h\" 3 4\ntypedef integer_t cpu_type_t;\ntypedef integer_t cpu_subtype_t;\ntypedef integer_t cpu_threadtype_t;\n# 71 \"/usr/include/mach/host_info.h\" 2 3 4\n\n# 1 \"/usr/include/mach/time_value.h\" 1 3 4\n# 66 \"/usr/include/mach/time_value.h\" 3 4\nstruct time_value {\n integer_t seconds;\n integer_t microseconds;\n};\n\ntypedef struct time_value time_value_t;\n# 73 \"/usr/include/mach/host_info.h\" 2 3 4\n\n\n\n\n\n\ntypedef integer_t *host_info_t;\ntypedef integer_t *host_info64_t;\n\n\ntypedef integer_t host_info_data_t[(1024)];\n\n\ntypedef char kernel_version_t[(512)];\n\n\ntypedef char kernel_boot_info_t[(4096)];\n\n\n\n\n\ntypedef integer_t host_flavor_t;\n# 104 \"/usr/include/mach/host_info.h\" 3 4\n#pragma pack(4)\n\nstruct host_basic_info {\n integer_t max_cpus;\n integer_t avail_cpus;\n natural_t memory_size;\n cpu_type_t cpu_type;\n cpu_subtype_t cpu_subtype;\n cpu_threadtype_t cpu_threadtype;\n integer_t physical_cpu;\n integer_t physical_cpu_max;\n integer_t logical_cpu;\n integer_t logical_cpu_max;\n uint64_t max_mem;\n};\n\n#pragma pack()\n\ntypedef struct host_basic_info host_basic_info_data_t;\ntypedef struct host_basic_info *host_basic_info_t;\n\n\n\nstruct host_sched_info {\n integer_t min_timeout;\n integer_t min_quantum;\n};\n\ntypedef struct host_sched_info host_sched_info_data_t;\ntypedef struct host_sched_info *host_sched_info_t;\n\n\n\nstruct kernel_resource_sizes {\n natural_t task;\n        natural_t thread;\n        natural_t port;\n        natural_t memory_region;\n        natural_t memory_object;\n};\n\ntypedef struct kernel_resource_sizes kernel_resource_sizes_data_t;\ntypedef struct kernel_resource_sizes *kernel_resource_sizes_t;\n\n\n\nstruct host_priority_info {\n     integer_t kernel_priority;\n     integer_t system_priority;\n     integer_t server_priority;\n     integer_t user_priority;\n     integer_t depress_priority;\n     integer_t idle_priority;\n     integer_t minimum_priority;\n integer_t maximum_priority;\n};\n\ntypedef struct host_priority_info host_priority_info_data_t;\ntypedef struct host_priority_info *host_priority_info_t;\n# 175 \"/usr/include/mach/host_info.h\" 3 4\nstruct host_load_info {\n integer_t avenrun[3];\n integer_t mach_factor[3];\n};\n\ntypedef struct host_load_info host_load_info_data_t;\ntypedef struct host_load_info *host_load_info_t;\n# 209 \"/usr/include/mach/host_info.h\" 3 4\nstruct host_cpu_load_info {\n natural_t cpu_ticks[4];\n};\n\ntypedef struct host_cpu_load_info host_cpu_load_info_data_t;\ntypedef struct host_cpu_load_info *host_cpu_load_info_t;\n# 81 \"/usr/include/mach/mach_types.h\" 2 3 4\n# 1 \"/usr/include/mach/host_notify.h\" 1 3 4\n# 82 \"/usr/include/mach/mach_types.h\" 2 3 4\n# 1 \"/usr/include/mach/host_special_ports.h\" 1 3 4\n# 83 \"/usr/include/mach/mach_types.h\" 2 3 4\n\n\n# 1 \"/usr/include/mach/memory_object_types.h\" 1 3 4\n# 75 \"/usr/include/mach/memory_object_types.h\" 3 4\n# 1 \"/usr/include/mach/vm_prot.h\" 1 3 4\n# 75 \"/usr/include/mach/vm_prot.h\" 3 4\ntypedef int vm_prot_t;\n# 76 \"/usr/include/mach/memory_object_types.h\" 2 3 4\n# 1 \"/usr/include/mach/vm_sync.h\" 1 3 4\n# 66 \"/usr/include/mach/vm_sync.h\" 3 4\ntypedef unsigned vm_sync_t;\n# 77 \"/usr/include/mach/memory_object_types.h\" 2 3 4\n# 1 \"/usr/include/mach/vm_types.h\" 1 3 4\n# 40 \"/usr/include/mach/vm_types.h\" 3 4\ntypedef vm_offset_t pointer_t;\ntypedef vm_offset_t vm_address_t;\n\n\n\n\n\n\n\ntypedef uint64_t addr64_t;\n# 61 \"/usr/include/mach/vm_types.h\" 3 4\ntypedef uint32_t reg64_t;\n\n\n\n\n\n\ntypedef uint32_t ppnum_t;\n\n\n\n\ntypedef mach_port_t vm_map_t;\n# 82 \"/usr/include/mach/vm_types.h\" 3 4\ntypedef uint64_t vm_object_offset_t;\ntypedef uint64_t vm_object_size_t;\n\n\ntypedef mach_port_t upl_t;\ntypedef mach_port_t vm_named_entry_t;\n# 78 \"/usr/include/mach/memory_object_types.h\" 2 3 4\n\n\n\n\n\n\ntypedef unsigned long long memory_object_offset_t;\ntypedef unsigned long long memory_object_size_t;\ntypedef natural_t memory_object_cluster_size_t;\ntypedef natural_t * memory_object_fault_info_t;\n\ntypedef unsigned long long vm_object_id_t;\n\n\n\n\n\n\n\ntypedef mach_port_t memory_object_t;\ntypedef mach_port_t memory_object_control_t;\n\n\ntypedef memory_object_t *memory_object_array_t;\n\n\n\n\ntypedef mach_port_t memory_object_name_t;\n\n\n\ntypedef mach_port_t memory_object_default_t;\n# 120 \"/usr/include/mach/memory_object_types.h\" 3 4\ntypedef int memory_object_copy_strategy_t;\n# 156 \"/usr/include/mach/memory_object_types.h\" 3 4\ntypedef int memory_object_return_t;\n# 185 \"/usr/include/mach/memory_object_types.h\" 3 4\ntypedef int *memory_object_info_t;\ntypedef int memory_object_flavor_t;\ntypedef int memory_object_info_data_t[(1024)];\n\n\n\n\n\n\n\nstruct memory_object_perf_info {\n memory_object_cluster_size_t cluster_size;\n boolean_t may_cache;\n};\n\nstruct memory_object_attr_info {\n memory_object_copy_strategy_t copy_strategy;\n memory_object_cluster_size_t cluster_size;\n boolean_t may_cache_object;\n boolean_t temporary;\n};\n\nstruct memory_object_behave_info {\n memory_object_copy_strategy_t copy_strategy;\n boolean_t temporary;\n boolean_t invalidate;\n boolean_t silent_overwrite;\n boolean_t advisory_pageout;\n};\n\n\ntypedef struct memory_object_behave_info *memory_object_behave_info_t;\ntypedef struct memory_object_behave_info memory_object_behave_info_data_t;\n\ntypedef struct memory_object_perf_info *memory_object_perf_info_t;\ntypedef struct memory_object_perf_info memory_object_perf_info_data_t;\n\ntypedef struct memory_object_attr_info *memory_object_attr_info_t;\ntypedef struct memory_object_attr_info memory_object_attr_info_data_t;\n# 86 \"/usr/include/mach/mach_types.h\" 2 3 4\n\n# 1 \"/usr/include/mach/exception_types.h\" 1 3 4\n# 62 \"/usr/include/mach/exception_types.h\" 3 4\n# 1 \"/usr/include/mach/machine/exception.h\" 1 3 4\n# 35 \"/usr/include/mach/machine/exception.h\" 3 4\n# 1 \"/usr/include/mach/i386/exception.h\" 1 3 4\n# 36 \"/usr/include/mach/machine/exception.h\" 2 3 4\n# 63 \"/usr/include/mach/exception_types.h\" 2 3 4\n# 159 \"/usr/include/mach/exception_types.h\" 3 4\n# 1 \"/usr/include/mach/thread_status.h\" 1 3 4\n# 76 \"/usr/include/mach/thread_status.h\" 3 4\n# 1 \"/usr/include/mach/machine/thread_status.h\" 1 3 4\n# 35 \"/usr/include/mach/machine/thread_status.h\" 3 4\n# 1 \"/usr/include/mach/i386/thread_status.h\" 1 3 4\n# 72 \"/usr/include/mach/i386/thread_status.h\" 3 4\n# 1 \"/usr/include/mach/i386/fp_reg.h\" 1 3 4\n# 64 \"/usr/include/mach/i386/fp_reg.h\" 3 4\nstruct x86_fx_save {\n        unsigned short fx_control;\n        unsigned short fx_status;\n        unsigned char fx_tag;\n        unsigned char fx_bbz1;\n        unsigned short fx_opcode;\n        unsigned int fx_eip;\n        unsigned short fx_cs;\n        unsigned short fx_bbz2;\n        unsigned int fx_dp;\n        unsigned short fx_ds;\n        unsigned short fx_bbz3;\n        unsigned int fx_MXCSR;\n        unsigned int fx_MXCSR_MASK;\n        unsigned short fx_reg_word[8][8];\n        unsigned short fx_XMM_reg[8][16];\n\n        unsigned char fx_reserved[16*6];\n};\n# 73 \"/usr/include/mach/i386/thread_status.h\" 2 3 4\n# 1 \"/usr/include/mach/i386/thread_state.h\" 1 3 4\n# 74 \"/usr/include/mach/i386/thread_status.h\" 2 3 4\n# 1 \"/usr/include/i386/eflags.h\" 1 3 4\n# 75 \"/usr/include/mach/i386/thread_status.h\" 2 3 4\n# 141 \"/usr/include/mach/i386/thread_status.h\" 3 4\nstruct x86_state_hdr {\n int flavor;\n int count;\n};\ntypedef struct x86_state_hdr x86_state_hdr_t;\n# 159 \"/usr/include/mach/i386/thread_status.h\" 3 4\ntypedef struct __darwin_i386_thread_state i386_thread_state_t;\n\n\n\ntypedef struct __darwin_i386_thread_state x86_thread_state32_t;\n\n\n\n\n\n\ntypedef struct __darwin_i386_float_state i386_float_state_t;\n\n\n\ntypedef struct __darwin_i386_float_state x86_float_state32_t;\n\n\n\n\n\n\ntypedef struct __darwin_i386_exception_state i386_exception_state_t;\n\n\n\ntypedef struct __darwin_i386_exception_state x86_exception_state32_t;\n\n\n\n\n\ntypedef struct __darwin_x86_debug_state32 x86_debug_state32_t;\n\n\n\n\n\ntypedef struct __darwin_x86_thread_state64 x86_thread_state64_t;\n\n\n\ntypedef struct __darwin_x86_float_state64 x86_float_state64_t;\n\n\n\ntypedef struct __darwin_x86_exception_state64 x86_exception_state64_t;\n\n\n\n\n\ntypedef struct __darwin_x86_debug_state64 x86_debug_state64_t;\n# 220 \"/usr/include/mach/i386/thread_status.h\" 3 4\nstruct x86_thread_state {\n x86_state_hdr_t tsh;\n union {\n     x86_thread_state32_t ts32;\n     x86_thread_state64_t ts64;\n } uts;\n};\n\nstruct x86_float_state {\n x86_state_hdr_t fsh;\n union {\n  x86_float_state32_t fs32;\n  x86_float_state64_t fs64;\n } ufs;\n};\n\nstruct x86_exception_state {\n x86_state_hdr_t esh;\n union {\n  x86_exception_state32_t es32;\n  x86_exception_state64_t es64;\n } ues;\n};\n\nstruct x86_debug_state {\n x86_state_hdr_t dsh;\n union {\n  x86_debug_state32_t ds32;\n  x86_debug_state64_t ds64;\n } uds;\n};\n\ntypedef struct x86_thread_state x86_thread_state_t;\n\n\n\ntypedef struct x86_float_state x86_float_state_t;\n\n\n\ntypedef struct x86_exception_state x86_exception_state_t;\n\n\n\ntypedef struct x86_debug_state x86_debug_state_t;\n# 288 \"/usr/include/mach/i386/thread_status.h\" 3 4\nstruct x86_seg_load_fault32 {\n unsigned int trapno;\n unsigned int err;\n unsigned int eip;\n unsigned int cs;\n unsigned int efl;\n};\n# 36 \"/usr/include/mach/machine/thread_status.h\" 2 3 4\n# 77 \"/usr/include/mach/thread_status.h\" 2 3 4\n# 1 \"/usr/include/mach/machine/thread_state.h\" 1 3 4\n# 78 \"/usr/include/mach/thread_status.h\" 2 3 4\n\n\n\n\n\ntypedef natural_t *thread_state_t;\n\n\ntypedef natural_t thread_state_data_t[(144)];\n\n\n\n\ntypedef int thread_state_flavor_t;\ntypedef thread_state_flavor_t *thread_state_flavor_array_t;\n# 160 \"/usr/include/mach/exception_types.h\" 2 3 4\n\n\n\n\n\ntypedef int exception_type_t;\ntypedef integer_t exception_data_type_t;\ntypedef int64_t mach_exception_data_type_t;\ntypedef int exception_behavior_t;\ntypedef exception_data_type_t *exception_data_t;\ntypedef mach_exception_data_type_t *mach_exception_data_t;\ntypedef unsigned int exception_mask_t;\ntypedef exception_mask_t *exception_mask_array_t;\ntypedef exception_behavior_t *exception_behavior_array_t;\ntypedef thread_state_flavor_t *exception_flavor_array_t;\ntypedef mach_port_t *exception_port_array_t;\ntypedef mach_exception_data_type_t mach_exception_code_t;\ntypedef mach_exception_data_type_t mach_exception_subcode_t;\n# 88 \"/usr/include/mach/mach_types.h\" 2 3 4\n\n# 1 \"/usr/include/mach/processor_info.h\" 1 3 4\n# 72 \"/usr/include/mach/processor_info.h\" 3 4\n# 1 \"/usr/include/mach/machine/processor_info.h\" 1 3 4\n# 35 \"/usr/include/mach/machine/processor_info.h\" 3 4\n# 1 \"/usr/include/mach/i386/processor_info.h\" 1 3 4\n# 36 \"/usr/include/mach/machine/processor_info.h\" 2 3 4\n# 73 \"/usr/include/mach/processor_info.h\" 2 3 4\n\n\n\n\ntypedef integer_t *processor_info_t;\ntypedef integer_t *processor_info_array_t;\n\n\ntypedef integer_t processor_info_data_t[(1024)];\n\n\ntypedef integer_t *processor_set_info_t;\n\n\ntypedef integer_t processor_set_info_data_t[(1024)];\n\n\n\n\ntypedef int processor_flavor_t;\n\n\n\n\n\nstruct processor_basic_info {\n cpu_type_t cpu_type;\n cpu_subtype_t cpu_subtype;\n boolean_t running;\n int slot_num;\n boolean_t is_master;\n};\n\ntypedef struct processor_basic_info processor_basic_info_data_t;\ntypedef struct processor_basic_info *processor_basic_info_t;\n\n\n\nstruct processor_cpu_load_info {\n        unsigned int cpu_ticks[4];\n};\n\ntypedef struct processor_cpu_load_info processor_cpu_load_info_data_t;\ntypedef struct processor_cpu_load_info *processor_cpu_load_info_t;\n# 125 \"/usr/include/mach/processor_info.h\" 3 4\ntypedef int processor_set_flavor_t;\n\n\nstruct processor_set_basic_info {\n int processor_count;\n int default_policy;\n};\n\ntypedef struct processor_set_basic_info processor_set_basic_info_data_t;\ntypedef struct processor_set_basic_info *processor_set_basic_info_t;\n\n\n\n\n\nstruct processor_set_load_info {\n        int task_count;\n        int thread_count;\n        integer_t load_average;\n        integer_t mach_factor;\n};\n\ntypedef struct processor_set_load_info processor_set_load_info_data_t;\ntypedef struct processor_set_load_info *processor_set_load_info_t;\n# 90 \"/usr/include/mach/mach_types.h\" 2 3 4\n# 1 \"/usr/include/mach/task_info.h\" 1 3 4\n# 71 \"/usr/include/mach/task_info.h\" 3 4\n# 1 \"/usr/include/mach/policy.h\" 1 3 4\n# 79 \"/usr/include/mach/policy.h\" 3 4\ntypedef int policy_t;\ntypedef integer_t *policy_info_t;\ntypedef integer_t *policy_base_t;\ntypedef integer_t *policy_limit_t;\n# 113 \"/usr/include/mach/policy.h\" 3 4\nstruct policy_timeshare_base {\n integer_t base_priority;\n};\nstruct policy_timeshare_limit {\n integer_t max_priority;\n};\nstruct policy_timeshare_info {\n integer_t max_priority;\n integer_t base_priority;\n integer_t cur_priority;\n boolean_t depressed;\n integer_t depress_priority;\n};\n\ntypedef struct policy_timeshare_base *policy_timeshare_base_t;\ntypedef struct policy_timeshare_limit *policy_timeshare_limit_t;\ntypedef struct policy_timeshare_info *policy_timeshare_info_t;\n\ntypedef struct policy_timeshare_base policy_timeshare_base_data_t;\ntypedef struct policy_timeshare_limit policy_timeshare_limit_data_t;\ntypedef struct policy_timeshare_info policy_timeshare_info_data_t;\n# 147 \"/usr/include/mach/policy.h\" 3 4\nstruct policy_rr_base {\n integer_t base_priority;\n integer_t quantum;\n};\nstruct policy_rr_limit {\n integer_t max_priority;\n};\nstruct policy_rr_info {\n integer_t max_priority;\n integer_t base_priority;\n integer_t quantum;\n boolean_t depressed;\n integer_t depress_priority;\n};\n\ntypedef struct policy_rr_base *policy_rr_base_t;\ntypedef struct policy_rr_limit *policy_rr_limit_t;\ntypedef struct policy_rr_info *policy_rr_info_t;\n\ntypedef struct policy_rr_base policy_rr_base_data_t;\ntypedef struct policy_rr_limit policy_rr_limit_data_t;\ntypedef struct policy_rr_info policy_rr_info_data_t;\n# 181 \"/usr/include/mach/policy.h\" 3 4\nstruct policy_fifo_base {\n integer_t base_priority;\n};\nstruct policy_fifo_limit {\n integer_t max_priority;\n};\nstruct policy_fifo_info {\n integer_t max_priority;\n integer_t base_priority;\n boolean_t depressed;\n integer_t depress_priority;\n};\n\ntypedef struct policy_fifo_base *policy_fifo_base_t;\ntypedef struct policy_fifo_limit *policy_fifo_limit_t;\ntypedef struct policy_fifo_info *policy_fifo_info_t;\n\ntypedef struct policy_fifo_base policy_fifo_base_data_t;\ntypedef struct policy_fifo_limit policy_fifo_limit_data_t;\ntypedef struct policy_fifo_info policy_fifo_info_data_t;\n# 213 \"/usr/include/mach/policy.h\" 3 4\nstruct policy_bases {\n policy_timeshare_base_data_t ts;\n policy_rr_base_data_t rr;\n policy_fifo_base_data_t fifo;\n};\n\nstruct policy_limits {\n policy_timeshare_limit_data_t ts;\n policy_rr_limit_data_t rr;\n policy_fifo_limit_data_t fifo;\n};\n\nstruct policy_infos {\n policy_timeshare_info_data_t ts;\n policy_rr_info_data_t rr;\n policy_fifo_info_data_t fifo;\n};\n\ntypedef struct policy_bases policy_base_data_t;\ntypedef struct policy_limits policy_limit_data_t;\ntypedef struct policy_infos policy_info_data_t;\n# 72 \"/usr/include/mach/task_info.h\" 2 3 4\n\n\n\n\n\n\ntypedef natural_t task_flavor_t;\ntypedef integer_t *task_info_t;\n\n\ntypedef integer_t task_info_data_t[(1024)];\n\n\n\n\n\n#pragma pack(4)\n\n\n\n\nstruct task_basic_info_32 {\n        integer_t suspend_count;\n        natural_t virtual_size;\n        natural_t resident_size;\n        time_value_t user_time;\n\n        time_value_t system_time;\n\n policy_t policy;\n};\ntypedef struct task_basic_info_32 task_basic_info_32_data_t;\ntypedef struct task_basic_info_32 *task_basic_info_32_t;\n\n\n\n\n\n\nstruct task_basic_info_64 {\n        integer_t suspend_count;\n        mach_vm_size_t virtual_size;\n        mach_vm_size_t resident_size;\n        time_value_t user_time;\n\n        time_value_t system_time;\n\n policy_t policy;\n};\ntypedef struct task_basic_info_64 task_basic_info_64_data_t;\ntypedef struct task_basic_info_64 *task_basic_info_64_t;\n\n\n\n\n\n\nstruct task_basic_info {\n        integer_t suspend_count;\n        vm_size_t virtual_size;\n        vm_size_t resident_size;\n        time_value_t user_time;\n\n        time_value_t system_time;\n\n policy_t policy;\n};\n\ntypedef struct task_basic_info task_basic_info_data_t;\ntypedef struct task_basic_info *task_basic_info_t;\n# 154 \"/usr/include/mach/task_info.h\" 3 4\nstruct task_events_info {\n integer_t faults;\n integer_t pageins;\n integer_t cow_faults;\n integer_t messages_sent;\n integer_t messages_received;\n        integer_t syscalls_mach;\n integer_t syscalls_unix;\n integer_t csw;\n};\ntypedef struct task_events_info task_events_info_data_t;\ntypedef struct task_events_info *task_events_info_t;\n\n\n\n\n\n\nstruct task_thread_times_info {\n time_value_t user_time;\n\n time_value_t system_time;\n\n};\n\ntypedef struct task_thread_times_info task_thread_times_info_data_t;\ntypedef struct task_thread_times_info *task_thread_times_info_t;\n\n\n\n\n\nstruct task_absolutetime_info {\n uint64_t total_user;\n uint64_t total_system;\n uint64_t threads_user;\n uint64_t threads_system;\n};\n\ntypedef struct task_absolutetime_info task_absolutetime_info_data_t;\ntypedef struct task_absolutetime_info *task_absolutetime_info_t;\n# 209 \"/usr/include/mach/task_info.h\" 3 4\nstruct task_affinity_tag_info {\n integer_t set_count;\n integer_t min;\n integer_t max;\n integer_t task_count;\n};\ntypedef struct task_affinity_tag_info task_affinity_tag_info_data_t;\ntypedef struct task_affinity_tag_info *task_affinity_tag_info_t;\n\n\n\n\n\nstruct task_dyld_info {\n mach_vm_address_t all_image_info_addr;\n mach_vm_size_t all_image_info_size;\n};\ntypedef struct task_dyld_info task_dyld_info_data_t;\ntypedef struct task_dyld_info *task_dyld_info_t;\n\n\n\n#pragma pack()\n# 91 \"/usr/include/mach/mach_types.h\" 2 3 4\n# 1 \"/usr/include/mach/task_policy.h\" 1 3 4\n# 32 \"/usr/include/mach/task_policy.h\" 3 4\n# 1 \"/usr/include/mach/mach_types.h\" 1 3 4\n# 33 \"/usr/include/mach/task_policy.h\" 2 3 4\n# 51 \"/usr/include/mach/task_policy.h\" 3 4\ntypedef natural_t task_policy_flavor_t;\ntypedef integer_t *task_policy_t;\n# 106 \"/usr/include/mach/task_policy.h\" 3 4\nenum task_role {\n TASK_RENICED = -1,\n TASK_UNSPECIFIED = 0,\n TASK_FOREGROUND_APPLICATION,\n TASK_BACKGROUND_APPLICATION,\n TASK_CONTROL_APPLICATION,\n TASK_GRAPHICS_SERVER,\n TASK_THROTTLE_APPLICATION,\n TASK_DEFAULT_APPLICATION\n};\n\ntypedef enum task_role task_role_t;\n\nstruct task_category_policy {\n task_role_t role;\n};\n\ntypedef struct task_category_policy task_category_policy_data_t;\ntypedef struct task_category_policy *task_category_policy_t;\n# 92 \"/usr/include/mach/mach_types.h\" 2 3 4\n# 1 \"/usr/include/mach/task_special_ports.h\" 1 3 4\n# 70 \"/usr/include/mach/task_special_ports.h\" 3 4\ntypedef int task_special_port_t;\n# 93 \"/usr/include/mach/mach_types.h\" 2 3 4\n# 1 \"/usr/include/mach/thread_info.h\" 1 3 4\n# 81 \"/usr/include/mach/thread_info.h\" 3 4\ntypedef natural_t thread_flavor_t;\ntypedef integer_t *thread_info_t;\n\n\ntypedef integer_t thread_info_data_t[(1024)];\n\n\n\n\n\n\nstruct thread_basic_info {\n        time_value_t user_time;\n        time_value_t system_time;\n        integer_t cpu_usage;\n policy_t policy;\n        integer_t run_state;\n        integer_t flags;\n        integer_t suspend_count;\n        integer_t sleep_time;\n\n};\n\ntypedef struct thread_basic_info thread_basic_info_data_t;\ntypedef struct thread_basic_info *thread_basic_info_t;\n\n\n\n\n\nstruct thread_identifier_info {\n uint64_t thread_id;\n uint64_t thread_handle;\n uint64_t dispatch_qaddr;\n};\n\ntypedef struct thread_identifier_info thread_identifier_info_data_t;\ntypedef struct thread_identifier_info *thread_identifier_info_t;\n# 94 \"/usr/include/mach/mach_types.h\" 2 3 4\n# 1 \"/usr/include/mach/thread_policy.h\" 1 3 4\n# 51 \"/usr/include/mach/thread_policy.h\" 3 4\ntypedef natural_t thread_policy_flavor_t;\ntypedef integer_t *thread_policy_t;\n# 86 \"/usr/include/mach/thread_policy.h\" 3 4\nstruct thread_standard_policy {\n natural_t no_data;\n};\n\ntypedef struct thread_standard_policy thread_standard_policy_data_t;\ntypedef struct thread_standard_policy *thread_standard_policy_t;\n# 109 \"/usr/include/mach/thread_policy.h\" 3 4\nstruct thread_extended_policy {\n boolean_t timeshare;\n};\n\ntypedef struct thread_extended_policy thread_extended_policy_data_t;\ntypedef struct thread_extended_policy *thread_extended_policy_t;\n# 148 \"/usr/include/mach/thread_policy.h\" 3 4\nstruct thread_time_constraint_policy {\n uint32_t period;\n uint32_t computation;\n uint32_t constraint;\n boolean_t preemptible;\n};\n\ntypedef struct thread_time_constraint_policy thread_time_constraint_policy_data_t;\n\ntypedef struct thread_time_constraint_policy *thread_time_constraint_policy_t;\n# 176 \"/usr/include/mach/thread_policy.h\" 3 4\nstruct thread_precedence_policy {\n integer_t importance;\n};\n\ntypedef struct thread_precedence_policy thread_precedence_policy_data_t;\ntypedef struct thread_precedence_policy *thread_precedence_policy_t;\n# 206 \"/usr/include/mach/thread_policy.h\" 3 4\nstruct thread_affinity_policy {\n integer_t affinity_tag;\n};\n\n\n\ntypedef struct thread_affinity_policy thread_affinity_policy_data_t;\ntypedef struct thread_affinity_policy *thread_affinity_policy_t;\n# 95 \"/usr/include/mach/mach_types.h\" 2 3 4\n# 1 \"/usr/include/mach/thread_special_ports.h\" 1 3 4\n# 96 \"/usr/include/mach/mach_types.h\" 2 3 4\n\n\n# 1 \"/usr/include/mach/clock_types.h\" 1 3 4\n# 51 \"/usr/include/mach/clock_types.h\" 3 4\ntypedef int alarm_type_t;\ntypedef int sleep_type_t;\ntypedef int clock_id_t;\ntypedef int clock_flavor_t;\ntypedef int *clock_attr_t;\ntypedef int clock_res_t;\n\n\n\n\nstruct mach_timespec {\n unsigned int tv_sec;\n clock_res_t tv_nsec;\n};\ntypedef struct mach_timespec mach_timespec_t;\n# 99 \"/usr/include/mach/mach_types.h\" 2 3 4\n# 1 \"/usr/include/mach/vm_attributes.h\" 1 3 4\n# 76 \"/usr/include/mach/vm_attributes.h\" 3 4\ntypedef unsigned int vm_machine_attribute_t;\n# 85 \"/usr/include/mach/vm_attributes.h\" 3 4\ntypedef int vm_machine_attribute_val_t;\n# 100 \"/usr/include/mach/mach_types.h\" 2 3 4\n# 1 \"/usr/include/mach/vm_inherit.h\" 1 3 4\n# 75 \"/usr/include/mach/vm_inherit.h\" 3 4\ntypedef unsigned int vm_inherit_t;\n# 101 \"/usr/include/mach/mach_types.h\" 2 3 4\n# 1 \"/usr/include/mach/vm_purgable.h\" 1 3 4\n# 53 \"/usr/include/mach/vm_purgable.h\" 3 4\ntypedef int vm_purgable_t;\n# 102 \"/usr/include/mach/mach_types.h\" 2 3 4\n# 1 \"/usr/include/mach/vm_behavior.h\" 1 3 4\n# 47 \"/usr/include/mach/vm_behavior.h\" 3 4\ntypedef int vm_behavior_t;\n# 103 \"/usr/include/mach/mach_types.h\" 2 3 4\n\n\n\n\n# 1 \"/usr/include/mach/vm_region.h\" 1 3 4\n# 47 \"/usr/include/mach/vm_region.h\" 3 4\n# 1 \"/usr/include/mach/machine/vm_param.h\" 1 3 4\n# 48 \"/usr/include/mach/vm_region.h\" 2 3 4\n\n\n\n\n\n#pragma pack(4)\n\n\n\n\ntypedef uint32_t vm32_object_id_t;\n# 67 \"/usr/include/mach/vm_region.h\" 3 4\ntypedef int *vm_region_info_t;\ntypedef int *vm_region_info_64_t;\ntypedef int *vm_region_recurse_info_t;\ntypedef int *vm_region_recurse_info_64_t;\ntypedef int vm_region_flavor_t;\ntypedef int vm_region_info_data_t[(1024)];\n\n\nstruct vm_region_basic_info_64 {\n vm_prot_t protection;\n vm_prot_t max_protection;\n vm_inherit_t inheritance;\n boolean_t shared;\n boolean_t reserved;\n memory_object_offset_t offset;\n vm_behavior_t behavior;\n unsigned short user_wired_count;\n};\ntypedef struct vm_region_basic_info_64 *vm_region_basic_info_64_t;\ntypedef struct vm_region_basic_info_64 vm_region_basic_info_data_64_t;\n# 103 \"/usr/include/mach/vm_region.h\" 3 4\nstruct vm_region_basic_info {\n vm_prot_t protection;\n vm_prot_t max_protection;\n vm_inherit_t inheritance;\n boolean_t shared;\n boolean_t reserved;\n uint32_t offset;\n vm_behavior_t behavior;\n unsigned short user_wired_count;\n};\n\ntypedef struct vm_region_basic_info *vm_region_basic_info_t;\ntypedef struct vm_region_basic_info vm_region_basic_info_data_t;\n# 138 \"/usr/include/mach/vm_region.h\" 3 4\nstruct vm_region_extended_info {\n vm_prot_t protection;\n        unsigned int user_tag;\n        unsigned int pages_resident;\n        unsigned int pages_shared_now_private;\n        unsigned int pages_swapped_out;\n        unsigned int pages_dirtied;\n        unsigned int ref_count;\n        unsigned short shadow_depth;\n        unsigned char external_pager;\n        unsigned char share_mode;\n};\n\ntypedef struct vm_region_extended_info *vm_region_extended_info_t;\ntypedef struct vm_region_extended_info vm_region_extended_info_data_t;\n\n\n\n\n\n\n\nstruct vm_region_top_info {\n        unsigned int obj_id;\n        unsigned int ref_count;\n        unsigned int private_pages_resident;\n        unsigned int shared_pages_resident;\n        unsigned char share_mode;\n};\n\ntypedef struct vm_region_top_info *vm_region_top_info_t;\ntypedef struct vm_region_top_info vm_region_top_info_data_t;\n# 196 \"/usr/include/mach/vm_region.h\" 3 4\nstruct vm_region_submap_info {\n vm_prot_t protection;\n vm_prot_t max_protection;\n vm_inherit_t inheritance;\n uint32_t offset;\n        unsigned int user_tag;\n        unsigned int pages_resident;\n        unsigned int pages_shared_now_private;\n        unsigned int pages_swapped_out;\n        unsigned int pages_dirtied;\n        unsigned int ref_count;\n        unsigned short shadow_depth;\n        unsigned char external_pager;\n        unsigned char share_mode;\n boolean_t is_submap;\n vm_behavior_t behavior;\n vm32_object_id_t object_id;\n unsigned short user_wired_count;\n};\n\ntypedef struct vm_region_submap_info *vm_region_submap_info_t;\ntypedef struct vm_region_submap_info vm_region_submap_info_data_t;\n\n\n\n\nstruct vm_region_submap_info_64 {\n vm_prot_t protection;\n vm_prot_t max_protection;\n vm_inherit_t inheritance;\n memory_object_offset_t offset;\n        unsigned int user_tag;\n        unsigned int pages_resident;\n        unsigned int pages_shared_now_private;\n        unsigned int pages_swapped_out;\n        unsigned int pages_dirtied;\n        unsigned int ref_count;\n        unsigned short shadow_depth;\n        unsigned char external_pager;\n        unsigned char share_mode;\n boolean_t is_submap;\n vm_behavior_t behavior;\n vm32_object_id_t object_id;\n unsigned short user_wired_count;\n};\n\ntypedef struct vm_region_submap_info_64 *vm_region_submap_info_64_t;\ntypedef struct vm_region_submap_info_64 vm_region_submap_info_data_64_t;\n\n\n\n\nstruct vm_region_submap_short_info_64 {\n vm_prot_t protection;\n vm_prot_t max_protection;\n vm_inherit_t inheritance;\n memory_object_offset_t offset;\n        unsigned int user_tag;\n        unsigned int ref_count;\n        unsigned short shadow_depth;\n        unsigned char external_pager;\n        unsigned char share_mode;\n boolean_t is_submap;\n vm_behavior_t behavior;\n vm32_object_id_t object_id;\n unsigned short user_wired_count;\n};\n\ntypedef struct vm_region_submap_short_info_64 *vm_region_submap_short_info_64_t;\ntypedef struct vm_region_submap_short_info_64 vm_region_submap_short_info_data_64_t;\n\n\n\n\n\nstruct mach_vm_read_entry {\n mach_vm_address_t address;\n mach_vm_size_t size;\n};\n\nstruct vm_read_entry {\n vm_address_t address;\n vm_size_t size;\n};\n# 291 \"/usr/include/mach/vm_region.h\" 3 4\ntypedef struct mach_vm_read_entry mach_vm_read_entry_t[(256)];\ntypedef struct vm_read_entry vm_read_entry_t[(256)];\n\n\n\n\n#pragma pack()\n\n\n\ntypedef int *vm_page_info_t;\ntypedef int vm_page_info_data_t[];\ntypedef int vm_page_info_flavor_t;\n\n\nstruct vm_page_info_basic {\n int disposition;\n int ref_count;\n vm_object_id_t object_id;\n memory_object_offset_t offset;\n int depth;\n};\ntypedef struct vm_page_info_basic *vm_page_info_basic_t;\ntypedef struct vm_page_info_basic vm_page_info_basic_data_t;\n# 108 \"/usr/include/mach/mach_types.h\" 2 3 4\n# 1 \"/usr/include/mach/kmod.h\" 1 3 4\n# 43 \"/usr/include/mach/kmod.h\" 3 4\n\n# 56 \"/usr/include/mach/kmod.h\" 3 4\ntypedef int kmod_t;\n\nstruct kmod_info;\ntypedef kern_return_t kmod_start_func_t(struct kmod_info * ki, void * data);\ntypedef kern_return_t kmod_stop_func_t(struct kmod_info * ki, void * data);\n# 70 \"/usr/include/mach/kmod.h\" 3 4\n#pragma pack(4)\n\n\ntypedef struct kmod_reference {\n    struct kmod_reference * next;\n    struct kmod_info * info;\n} kmod_reference_t;\n# 87 \"/usr/include/mach/kmod.h\" 3 4\ntypedef struct kmod_info {\n    struct kmod_info * next;\n    int32_t info_version;\n    uint32_t id;\n    char name[64];\n    char version[64];\n    int32_t reference_count;\n    kmod_reference_t * reference_list;\n    vm_address_t address;\n    vm_size_t size;\n    vm_size_t hdr_size;\n    kmod_start_func_t * start;\n    kmod_stop_func_t * stop;\n} kmod_info_t;\n\n\n\ntypedef struct kmod_info_32_v1 {\n    uint32_t next_addr;\n    int32_t info_version;\n    uint32_t id;\n    uint8_t name[64];\n    uint8_t version[64];\n    int32_t reference_count;\n    uint32_t reference_list_addr;\n    uint32_t address;\n    uint32_t size;\n    uint32_t hdr_size;\n    uint32_t start_addr;\n    uint32_t stop_addr;\n} kmod_info_32_v1_t;\n\n\n\ntypedef struct kmod_info_64_v1 {\n    uint64_t next_addr;\n    int32_t info_version;\n    uint32_t id;\n    uint8_t name[64];\n    uint8_t version[64];\n    int32_t reference_count;\n    uint64_t reference_list_addr;\n    uint64_t address;\n    uint64_t size;\n    uint64_t hdr_size;\n    uint64_t start_addr;\n    uint64_t stop_addr;\n} kmod_info_64_v1_t;\n\n#pragma pack()\n# 174 \"/usr/include/mach/kmod.h\" 3 4\ntypedef void * kmod_args_t;\ntypedef int kmod_control_flavor_t;\ntypedef kmod_info_t * kmod_info_array_t;\n\n\n# 109 \"/usr/include/mach/mach_types.h\" 2 3 4\n\n\n\n\n\n\ntypedef mach_port_t task_t;\ntypedef mach_port_t task_name_t;\ntypedef mach_port_t thread_t;\ntypedef mach_port_t thread_act_t;\ntypedef mach_port_t ipc_space_t;\ntypedef mach_port_t host_t;\ntypedef mach_port_t host_priv_t;\ntypedef mach_port_t host_security_t;\ntypedef mach_port_t processor_t;\ntypedef mach_port_t processor_set_t;\ntypedef mach_port_t processor_set_control_t;\ntypedef mach_port_t semaphore_t;\ntypedef mach_port_t lock_set_t;\ntypedef mach_port_t ledger_t;\ntypedef mach_port_t alarm_t;\ntypedef mach_port_t clock_serv_t;\ntypedef mach_port_t clock_ctrl_t;\n\n\n\n\n\n\n\ntypedef processor_set_t processor_set_name_t;\n\n\n\n\ntypedef mach_port_t clock_reply_t;\ntypedef mach_port_t bootstrap_t;\ntypedef mach_port_t mem_entry_name_port_t;\ntypedef mach_port_t exception_handler_t;\ntypedef exception_handler_t *exception_handler_array_t;\ntypedef mach_port_t vm_task_entry_t;\ntypedef mach_port_t io_master_t;\ntypedef mach_port_t UNDServerRef;\n# 160 \"/usr/include/mach/mach_types.h\" 3 4\ntypedef task_t *task_array_t;\ntypedef thread_t *thread_array_t;\ntypedef processor_set_t *processor_set_array_t;\ntypedef processor_set_t *processor_set_name_array_t;\ntypedef processor_t *processor_array_t;\ntypedef thread_act_t *thread_act_array_t;\ntypedef ledger_t *ledger_array_t;\n\n\n\n\n\n\n\ntypedef task_t task_port_t;\ntypedef task_array_t task_port_array_t;\ntypedef thread_t thread_port_t;\ntypedef thread_array_t thread_port_array_t;\ntypedef ipc_space_t ipc_space_port_t;\ntypedef host_t host_name_t;\ntypedef host_t host_name_port_t;\ntypedef processor_set_t processor_set_port_t;\ntypedef processor_set_t processor_set_name_port_t;\ntypedef processor_set_array_t processor_set_name_port_array_t;\ntypedef processor_set_t processor_set_control_port_t;\ntypedef processor_t processor_port_t;\ntypedef processor_array_t processor_port_array_t;\ntypedef thread_act_t thread_act_port_t;\ntypedef thread_act_array_t thread_act_port_array_t;\ntypedef semaphore_t semaphore_port_t;\ntypedef lock_set_t lock_set_port_t;\ntypedef ledger_t ledger_port_t;\ntypedef ledger_array_t ledger_port_array_t;\ntypedef alarm_t alarm_port_t;\ntypedef clock_serv_t clock_serv_port_t;\ntypedef clock_ctrl_t clock_ctrl_port_t;\ntypedef exception_handler_t exception_port_t;\ntypedef exception_handler_array_t exception_port_arrary_t;\n# 217 \"/usr/include/mach/mach_types.h\" 3 4\ntypedef natural_t ledger_item_t;\n\n\ntypedef mach_vm_offset_t *emulation_vector_t;\ntypedef char *user_subsystem_t;\n\ntypedef char *labelstr_t;\n\n\n\n\n# 1 \"/usr/include/mach/std_types.h\" 1 3 4\n# 229 \"/usr/include/mach/mach_types.h\" 2 3 4\n# 43 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 2 3\n# 1 \"/usr/include/mach/mach_init.h\" 1 3 4\n# 70 \"/usr/include/mach/mach_init.h\" 3 4\n\nextern mach_port_t mach_task_self(void);\nextern mach_port_t mach_host_self(void);\nextern mach_port_t mach_thread_self(void);\nextern kern_return_t host_page_size(host_t, vm_size_t *);\n\nextern mach_port_t mach_task_self_;\n\n\n\n\n# 1 \"/usr/include/mach/mach_traps.h\" 1 3 4\n# 82 \"/usr/include/mach/mach_traps.h\" 3 4\n\n\n\n\nextern kern_return_t macx_swapon(\n    uint64_t filename,\n    int flags,\n    int size,\n    int priority);\n\nextern kern_return_t macx_swapoff(\n    uint64_t filename,\n    int flags);\n\nextern kern_return_t macx_triggers(\n    int hi_water,\n    int low_water,\n    int flags,\n    mach_port_t alert_port);\n\nextern kern_return_t macx_backing_store_suspend(\n    boolean_t suspend);\n\nextern kern_return_t macx_backing_store_recovery(\n    int pid);\n\nextern boolean_t swtch_pri(int pri);\n\nextern boolean_t swtch(void);\n\nextern kern_return_t thread_switch(\n    mach_port_name_t thread_name,\n    int option,\n    mach_msg_timeout_t option_time);\n\nextern mach_port_name_t task_self_trap(void);\n\n\n\n\n\nextern kern_return_t task_for_pid(\n    mach_port_name_t target_tport,\n    int pid,\n    mach_port_name_t *t);\n\nextern kern_return_t task_name_for_pid(\n    mach_port_name_t target_tport,\n    int pid,\n    mach_port_name_t *tn);\n\nextern kern_return_t pid_for_task(\n    mach_port_name_t t,\n    int *x);\n# 150 \"/usr/include/mach/mach_traps.h\" 3 4\n\n# 82 \"/usr/include/mach/mach_init.h\" 2 3 4\n\n\n\n\n\n\nextern mach_port_t bootstrap_port;\nextern mach_port_t name_server_port;\nextern mach_port_t environment_port;\nextern mach_port_t service_port;\n# 109 \"/usr/include/mach/mach_init.h\" 3 4\nextern vm_size_t vm_page_size;\nextern vm_size_t vm_page_mask;\nextern int vm_page_shift;\n# 127 \"/usr/include/mach/mach_init.h\" 3 4\nextern int (*vprintf_stderr_func)(const char *format, va_list ap);\n\n# 44 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 2 3\n\n\n\n\n\n# 1 \"/System/Library/Frameworks/IOKit.framework/Headers/IOTypes.h\" 1 3\n# 38 \"/System/Library/Frameworks/IOKit.framework/Headers/IOTypes.h\" 3\n# 1 \"/System/Library/Frameworks/IOKit.framework/Headers/IOReturn.h\" 1 3\n# 43 \"/System/Library/Frameworks/IOKit.framework/Headers/IOReturn.h\" 3\n# 1 \"/usr/include/mach/error.h\" 1 3 4\n# 111 \"/usr/include/mach/error.h\" 3 4\ntypedef kern_return_t mach_error_t;\ntypedef mach_error_t (* mach_error_fn_t)( void );\n# 44 \"/System/Library/Frameworks/IOKit.framework/Headers/IOReturn.h\" 2 3\n\ntypedef kern_return_t IOReturn;\n# 39 \"/System/Library/Frameworks/IOKit.framework/Headers/IOTypes.h\" 2 3\n# 65 \"/System/Library/Frameworks/IOKit.framework/Headers/IOTypes.h\" 3\ntypedef UInt32 IOOptionBits;\ntypedef SInt32 IOFixed;\ntypedef UInt32 IOVersion;\ntypedef UInt32 IOItemCount;\ntypedef UInt32 IOCacheMode;\n\ntypedef UInt32 IOByteCount32;\ntypedef UInt64 IOByteCount64;\n\ntypedef UInt32 IOPhysicalAddress32;\ntypedef UInt64 IOPhysicalAddress64;\ntypedef UInt32 IOPhysicalLength32;\ntypedef UInt64 IOPhysicalLength64;\n\n\ntypedef mach_vm_address_t IOVirtualAddress;\n\n\n\n\n\n\n\ntypedef IOByteCount32 IOByteCount;\n\n\ntypedef IOVirtualAddress IOLogicalAddress;\n# 102 \"/System/Library/Frameworks/IOKit.framework/Headers/IOTypes.h\" 3\ntypedef IOPhysicalAddress32 IOPhysicalAddress;\ntypedef IOPhysicalLength32 IOPhysicalLength;\n\n\n\n\n\n\ntypedef struct\n{\n    IOPhysicalAddress address;\n    IOByteCount length;\n} IOPhysicalRange;\n\ntypedef struct\n{\n    IOVirtualAddress address;\n    IOByteCount length;\n} IOVirtualRange;\n\n\ntypedef IOVirtualRange IOAddressRange;\n# 135 \"/System/Library/Frameworks/IOKit.framework/Headers/IOTypes.h\" 3\ntypedef struct {\n int value;\n const char *name;\n} IONamedValue;\n\n\n\n\n\ntypedef unsigned int IOAlignment;\n# 159 \"/System/Library/Frameworks/IOKit.framework/Headers/IOTypes.h\" 3\ntypedef mach_port_t io_object_t;\n\n\n# 1 \"/usr/include/device/device_types.h\" 1 3 4\n# 77 \"/usr/include/device/device_types.h\" 3 4\ntypedef char * io_buf_ptr_t;\n# 86 \"/usr/include/device/device_types.h\" 3 4\ntypedef char io_name_t[128];\ntypedef char io_string_t[512];\ntypedef char io_struct_inband_t[4096];\n\n\ntypedef uint64_t io_user_scalar_t;\ntypedef uint64_t io_user_reference_t;\ntypedef io_user_scalar_t io_scalar_inband_t[16];\ntypedef io_user_reference_t io_async_ref_t[8];\ntypedef io_user_scalar_t io_scalar_inband64_t[16];\ntypedef io_user_reference_t io_async_ref64_t[8];\n# 163 \"/System/Library/Frameworks/IOKit.framework/Headers/IOTypes.h\" 2 3\n\ntypedef io_object_t io_connect_t;\ntypedef io_object_t io_enumerator_t;\ntypedef io_object_t io_iterator_t;\ntypedef io_object_t io_registry_entry_t;\ntypedef io_object_t io_service_t;\n\n\n\n\n\n\nenum {\n    kIODefaultMemoryType = 0\n};\n\nenum {\n    kIODefaultCache = 0,\n    kIOInhibitCache = 1,\n    kIOWriteThruCache = 2,\n    kIOCopybackCache = 3,\n    kIOWriteCombineCache = 4\n};\n\n\nenum {\n    kIOMapAnywhere = 0x00000001,\n\n    kIOMapCacheMask = 0x00000700,\n    kIOMapCacheShift = 8,\n    kIOMapDefaultCache = kIODefaultCache << kIOMapCacheShift,\n    kIOMapInhibitCache = kIOInhibitCache << kIOMapCacheShift,\n    kIOMapWriteThruCache = kIOWriteThruCache << kIOMapCacheShift,\n    kIOMapCopybackCache = kIOCopybackCache << kIOMapCacheShift,\n    kIOMapWriteCombineCache = kIOWriteCombineCache << kIOMapCacheShift,\n\n    kIOMapUserOptionsMask = 0x00000fff,\n\n    kIOMapReadOnly = 0x00001000,\n\n    kIOMapStatic = 0x01000000,\n    kIOMapReference = 0x02000000,\n    kIOMapUnique = 0x04000000\n};\n# 216 \"/System/Library/Frameworks/IOKit.framework/Headers/IOTypes.h\" 3\nenum {\n    kNanosecondScale = 1,\n    kMicrosecondScale = 1000,\n    kMillisecondScale = 1000 * 1000,\n    kSecondScale = 1000 * 1000 * 1000,\n    kTickScale = (kSecondScale / 100)\n};\n\n\n\n\ntypedef unsigned int IODeviceNumber;\n# 50 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 2 3\n# 1 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitKeys.h\" 1 3\n# 51 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 2 3\n\n# 1 \"/System/Library/Frameworks/IOKit.framework/Headers/OSMessageNotification.h\" 1 3\n# 46 \"/System/Library/Frameworks/IOKit.framework/Headers/OSMessageNotification.h\" 3\nenum {\n    kFirstIOKitNotificationType = 100,\n    kIOServicePublishNotificationType = 100,\n    kIOServiceMatchedNotificationType = 101,\n    kIOServiceTerminatedNotificationType = 102,\n    kIOAsyncCompletionNotificationType = 150,\n    kIOServiceMessageNotificationType = 160,\n    kLastIOKitNotificationType = 199\n};\n\nenum {\n    kOSNotificationMessageID = 53,\n    kOSAsyncCompleteMessageID = 57,\n    kMaxAsyncArgs = 16\n};\n\nenum {\n    kIOAsyncReservedIndex = 0,\n    kIOAsyncReservedCount,\n\n    kIOAsyncCalloutFuncIndex = kIOAsyncReservedCount,\n    kIOAsyncCalloutRefconIndex,\n    kIOAsyncCalloutCount,\n\n    kIOMatchingCalloutFuncIndex = kIOAsyncReservedCount,\n    kIOMatchingCalloutRefconIndex,\n    kIOMatchingCalloutCount,\n\n    kIOInterestCalloutFuncIndex = kIOAsyncReservedCount,\n    kIOInterestCalloutRefconIndex,\n    kIOInterestCalloutServiceIndex,\n    kIOInterestCalloutCount\n};\n\n\n\n\nenum {\n    kOSAsyncRef64Count = 8,\n    kOSAsyncRef64Size = kOSAsyncRef64Count * ((int) sizeof(io_user_reference_t))\n};\ntypedef io_user_reference_t OSAsyncReference64[kOSAsyncRef64Count];\n\nstruct OSNotificationHeader64 {\n    mach_msg_size_t size;\n    natural_t type;\n    OSAsyncReference64 reference;\n\n\n\n\n    unsigned char content[0];\n\n};\n\n#pragma pack(4)\nstruct IOServiceInterestContent64 {\n    natural_t messageType;\n    io_user_reference_t messageArgument[1];\n};\n#pragma pack()\n\n\n\n\nenum {\n    kOSAsyncRefCount = 8,\n    kOSAsyncRefSize = 32\n};\ntypedef natural_t OSAsyncReference[kOSAsyncRefCount];\n\nstruct OSNotificationHeader {\n    mach_msg_size_t size;\n    natural_t type;\n    OSAsyncReference reference;\n\n\n\n\n    unsigned char content[0];\n\n};\n\n#pragma pack(4)\nstruct IOServiceInterestContent {\n    natural_t messageType;\n    void * messageArgument[1];\n};\n#pragma pack()\n\n\n\nstruct IOAsyncCompletionContent {\n    IOReturn result;\n\n\n\n    void * args[0] __attribute__ ((packed));\n\n};\n\n\ntypedef struct OSNotificationHeader OSNotificationHeader;\ntypedef struct IOServiceInterestContent IOServiceInterestContent;\ntypedef struct IOAsyncCompletionContent IOAsyncCompletionContent;\n# 53 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 2 3\n\n\n\n\n# 65 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\ntypedef struct IONotificationPort * IONotificationPortRef;\n\n\n\n\n\n\n\ntypedef void\n(*IOServiceMatchingCallback)(\n void * refcon,\n io_iterator_t iterator );\n# 86 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\ntypedef void\n(*IOServiceInterestCallback)(\n void * refcon,\n io_service_t service,\n uint32_t messageType,\n void * messageArgument );\n# 100 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nextern\nconst mach_port_t kIOMasterPortDefault;\n# 110 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t\nIOMasterPort( mach_port_t bootstrapPort,\n       mach_port_t * masterPort );\n# 121 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nIONotificationPortRef\nIONotificationPortCreate(\n mach_port_t masterPort );\n\n\n\n\n\nvoid\nIONotificationPortDestroy(\n IONotificationPortRef notify );\n\n\n\n\n\n\n\nCFRunLoopSourceRef\nIONotificationPortGetRunLoopSource(\n IONotificationPortRef notify );\n\n\n\n\n\n\n\nmach_port_t\nIONotificationPortGetMachPort(\n IONotificationPortRef notify );\n# 160 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nvoid\nIODispatchCalloutFromMessage(\n        void *unused,\n        mach_msg_header_t *msg,\n        void *reference );\n# 177 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t\nIOCreateReceivePort( uint32_t msgType, mach_port_t * recvPort );\n# 192 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t\nIOObjectRelease(\n io_object_t object );\n\n\n\n\n\n\n\nkern_return_t\nIOObjectRetain(\n io_object_t object );\n# 213 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t\nIOObjectGetClass(\n io_object_t object,\n io_name_t className );\n\n\n\n\n\n\n\nCFStringRef\nIOObjectCopyClass(io_object_t object)\n;\n\n\n\n\n\n\n\nCFStringRef\nIOObjectCopySuperclassForClass(CFStringRef classname)\n;\n\n\n\n\n\n\n\nCFStringRef\nIOObjectCopyBundleIdentifierForClass(CFStringRef classname)\n;\n# 255 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nboolean_t\nIOObjectConformsTo(\n io_object_t object,\n const io_name_t className );\n# 267 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nboolean_t\nIOObjectIsEqualTo(\n io_object_t object,\n io_object_t anObject );\n\n\n\n\n\n\n\nuint32_t\nIOObjectGetKernelRetainCount(\n io_object_t object )\n;\n\n\n\n\n\n\n\nuint32_t\nIOObjectGetUserRetainCount(\n io_object_t object )\n;\n\n\n\n\n\n\n\nuint32_t\nIOObjectGetRetainCount(\n io_object_t object );\n# 317 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nio_object_t\nIOIteratorNext(\n io_iterator_t iterator );\n\n\n\n\n\n\nvoid\nIOIteratorReset(\n io_iterator_t iterator );\n\n\n\n\n\n\n\nboolean_t\nIOIteratorIsValid(\n io_iterator_t iterator );\n# 355 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nio_service_t\nIOServiceGetMatchingService(\n mach_port_t masterPort,\n CFDictionaryRef matching );\n# 368 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t\nIOServiceGetMatchingServices(\n mach_port_t masterPort,\n CFDictionaryRef matching,\n io_iterator_t * existing );\n\n\nkern_return_t\nIOServiceAddNotification(\n mach_port_t masterPort,\n const io_name_t notificationType,\n CFDictionaryRef matching,\n mach_port_t wakePort,\n uintptr_t reference,\n io_iterator_t * notification ) __attribute__((deprecated));\n# 400 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t\nIOServiceAddMatchingNotification(\n IONotificationPortRef notifyPort,\n const io_name_t notificationType,\n CFDictionaryRef matching,\n        IOServiceMatchingCallback callback,\n        void * refCon,\n io_iterator_t * notification );\n# 421 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t\nIOServiceAddInterestNotification(\n IONotificationPortRef notifyPort,\n        io_service_t service,\n const io_name_t interestType,\n        IOServiceInterestCallback callback,\n        void * refCon,\n        io_object_t * notification );\n# 438 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t\nIOServiceMatchPropertyTable(\n        io_service_t service,\n        CFDictionaryRef matching,\n        boolean_t * matches );\n# 451 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t\nIOServiceGetBusyState(\n io_service_t service,\n uint32_t * busyState );\n# 463 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t\nIOServiceWaitQuiet(\n io_service_t service,\n mach_timespec_t * waitTime );\n# 475 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t\nIOKitGetBusyState(\n mach_port_t masterPort,\n uint32_t * busyState );\n# 487 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t\nIOKitWaitQuiet(\n mach_port_t masterPort,\n mach_timespec_t * waitTime );\n# 501 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t\nIOServiceOpen(\n io_service_t service,\n task_port_t owningTask,\n uint32_t type,\n io_connect_t * connect );\n# 515 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t\nIOServiceRequestProbe(\n io_service_t service,\n uint32_t options );\n# 532 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t\nIOServiceClose(\n io_connect_t connect );\n\n\n\n\n\n\n\nkern_return_t\nIOConnectAddRef(\n io_connect_t connect );\n\n\n\n\n\n\n\nkern_return_t\nIOConnectRelease(\n io_connect_t connect );\n# 563 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t\nIOConnectGetService(\n io_connect_t connect,\n io_service_t * service );\n# 577 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t\nIOConnectSetNotificationPort(\n io_connect_t connect,\n uint32_t type,\n mach_port_t port,\n uintptr_t reference );\n# 607 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t\nIOConnectMapMemory(\n  io_connect_t connect,\n  uint32_t memoryType,\n  task_port_t intoTask,\n  mach_vm_address_t *atAddress,\n  mach_vm_size_t *ofSize,\n  IOOptionBits options );\n# 629 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t IOConnectMapMemory64(\n  io_connect_t connect,\n  uint32_t memoryType,\n  task_port_t intoTask,\n  mach_vm_address_t *atAddress,\n  mach_vm_size_t *ofSize,\n  IOOptionBits options );\n# 657 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t\nIOConnectUnmapMemory(\n io_connect_t connect,\n uint32_t memoryType,\n task_port_t fromTask,\n mach_vm_address_t atAddress );\n# 676 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t IOConnectUnmapMemory64(\n io_connect_t connect,\n  uint32_t memoryType,\n  task_port_t fromTask,\n  mach_vm_address_t atAddress );\n# 690 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t\nIOConnectSetCFProperties(\n io_connect_t connect,\n CFTypeRef properties );\n# 703 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t\nIOConnectSetCFProperty(\n io_connect_t connect,\n        CFStringRef propertyName,\n CFTypeRef property );\n\n\n\n\n\nkern_return_t\nIOConnectCallMethod(\n mach_port_t connection,\n uint32_t selector,\n const uint64_t *input,\n uint32_t inputCnt,\n const void *inputStruct,\n size_t inputStructCnt,\n uint64_t *output,\n uint32_t *outputCnt,\n void *outputStruct,\n size_t *outputStructCnt)\n;\n\nkern_return_t\nIOConnectCallAsyncMethod(\n mach_port_t connection,\n uint32_t selector,\n mach_port_t wake_port,\n uint64_t *reference,\n uint32_t referenceCnt,\n const uint64_t *input,\n uint32_t inputCnt,\n const void *inputStruct,\n size_t inputStructCnt,\n uint64_t *output,\n uint32_t *outputCnt,\n void *outputStruct,\n size_t *outputStructCnt)\n;\n\nkern_return_t\nIOConnectCallStructMethod(\n mach_port_t connection,\n uint32_t selector,\n const void *inputStruct,\n size_t inputStructCnt,\n void *outputStruct,\n size_t *outputStructCnt)\n;\n\nkern_return_t\nIOConnectCallAsyncStructMethod(\n mach_port_t connection,\n uint32_t selector,\n mach_port_t wake_port,\n uint64_t *reference,\n uint32_t referenceCnt,\n const void *inputStruct,\n size_t inputStructCnt,\n void *outputStruct,\n size_t *outputStructCnt)\n;\n\nkern_return_t\nIOConnectCallScalarMethod(\n mach_port_t connection,\n uint32_t selector,\n const uint64_t *input,\n uint32_t inputCnt,\n uint64_t *output,\n uint32_t *outputCnt)\n;\n\nkern_return_t\nIOConnectCallAsyncScalarMethod(\n mach_port_t connection,\n uint32_t selector,\n mach_port_t wake_port,\n uint64_t *reference,\n uint32_t referenceCnt,\n const uint64_t *input,\n uint32_t inputCnt,\n uint64_t *output,\n uint32_t *outputCnt)\n;\n\n\n\nkern_return_t\nIOConnectTrap0(io_connect_t connect,\n        uint32_t index );\n\nkern_return_t\nIOConnectTrap1(io_connect_t connect,\n        uint32_t index,\n        uintptr_t p1 );\n\nkern_return_t\nIOConnectTrap2(io_connect_t connect,\n        uint32_t index,\n        uintptr_t p1,\n        uintptr_t p2);\n\nkern_return_t\nIOConnectTrap3(io_connect_t connect,\n        uint32_t index,\n        uintptr_t p1,\n        uintptr_t p2,\n        uintptr_t p3);\n\nkern_return_t\nIOConnectTrap4(io_connect_t connect,\n        uint32_t index,\n        uintptr_t p1,\n        uintptr_t p2,\n        uintptr_t p3,\n        uintptr_t p4);\n\nkern_return_t\nIOConnectTrap5(io_connect_t connect,\n        uint32_t index,\n        uintptr_t p1,\n        uintptr_t p2,\n        uintptr_t p3,\n        uintptr_t p4,\n        uintptr_t p5);\n\nkern_return_t\nIOConnectTrap6(io_connect_t connect,\n        uint32_t index,\n        uintptr_t p1,\n        uintptr_t p2,\n        uintptr_t p3,\n        uintptr_t p4,\n        uintptr_t p5,\n        uintptr_t p6);\n# 850 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t\nIOConnectAddClient(\n io_connect_t connect,\n io_connect_t client );\n# 867 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nio_registry_entry_t\nIORegistryGetRootEntry(\n mach_port_t masterPort );\n# 878 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nio_registry_entry_t\nIORegistryEntryFromPath(\n mach_port_t masterPort,\n const io_string_t path );\n\n\nenum {\n    kIORegistryIterateRecursively = 0x00000001,\n    kIORegistryIterateParents = 0x00000002\n};\n# 898 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t\nIORegistryCreateIterator(\n mach_port_t masterPort,\n const io_name_t plane,\n IOOptionBits options,\n io_iterator_t * iterator );\n# 914 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t\nIORegistryEntryCreateIterator(\n io_registry_entry_t entry,\n const io_name_t plane,\n IOOptionBits options,\n io_iterator_t * iterator );\n# 932 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t\nIORegistryIteratorEnterEntry(\n io_iterator_t iterator );\n\n\n\n\n\n\nkern_return_t\nIORegistryIteratorExitEntry(\n io_iterator_t iterator );\n# 958 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t\nIORegistryEntryGetName(\n io_registry_entry_t entry,\n io_name_t name );\n# 971 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t\nIORegistryEntryGetNameInPlane(\n io_registry_entry_t entry,\n const io_name_t plane,\n io_name_t name );\n# 985 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t\nIORegistryEntryGetLocationInPlane(\n io_registry_entry_t entry,\n const io_name_t plane,\n io_name_t location );\n# 999 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t\nIORegistryEntryGetPath(\n io_registry_entry_t entry,\n const io_name_t plane,\n io_string_t path );\n# 1012 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t\nIORegistryEntryGetRegistryEntryID(\n io_registry_entry_t entry,\n uint64_t * entryID );\n# 1026 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t\nIORegistryEntryCreateCFProperties(\n io_registry_entry_t entry,\n CFMutableDictionaryRef * properties,\n        CFAllocatorRef allocator,\n IOOptionBits options );\n# 1042 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nCFTypeRef\nIORegistryEntryCreateCFProperty(\n io_registry_entry_t entry,\n CFStringRef key,\n        CFAllocatorRef allocator,\n IOOptionBits options );\n# 1060 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nCFTypeRef\nIORegistryEntrySearchCFProperty(\n io_registry_entry_t entry,\n const io_name_t plane,\n CFStringRef key,\n        CFAllocatorRef allocator,\n IOOptionBits options );\n\n\n\n\nkern_return_t\nIORegistryEntryGetProperty(\n io_registry_entry_t entry,\n const io_name_t propertyName,\n io_struct_inband_t buffer,\n uint32_t * size );\n# 1085 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t\nIORegistryEntrySetCFProperties(\n io_registry_entry_t entry,\n CFTypeRef properties );\n# 1098 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t\nIORegistryEntrySetCFProperty(\n io_registry_entry_t entry,\n        CFStringRef propertyName,\n CFTypeRef property );\n# 1112 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t\nIORegistryEntryGetChildIterator(\n io_registry_entry_t entry,\n const io_name_t plane,\n io_iterator_t * iterator );\n# 1126 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t\nIORegistryEntryGetChildEntry(\n io_registry_entry_t entry,\n const io_name_t plane,\n io_registry_entry_t * child );\n# 1140 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t\nIORegistryEntryGetParentIterator(\n io_registry_entry_t entry,\n const io_name_t plane,\n io_iterator_t * iterator );\n# 1154 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t\nIORegistryEntryGetParentEntry(\n io_registry_entry_t entry,\n const io_name_t plane,\n io_registry_entry_t * parent );\n# 1167 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nboolean_t\nIORegistryEntryInPlane(\n io_registry_entry_t entry,\n const io_name_t plane );\n# 1184 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nCFMutableDictionaryRef\nIOServiceMatching(\n const char * name );\n\n\n\n\n\n\n\nCFMutableDictionaryRef\nIOServiceNameMatching(\n const char * name );\n# 1206 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nCFMutableDictionaryRef\nIOBSDNameMatching(\n mach_port_t masterPort,\n uint32_t options,\n const char * bsdName );\n# 1220 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nCFMutableDictionaryRef\nIOOpenFirmwarePathMatching(\n mach_port_t masterPort,\n uint32_t options,\n const char * path );\n\n\n\n\n\n\n\nCFMutableDictionaryRef\nIORegistryEntryIDMatching(\n uint64_t entryID );\n# 1246 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\nkern_return_t\nIOServiceOFPathToBSDName(mach_port_t masterPort,\n                         const io_name_t openFirmwarePath,\n                         io_name_t bsdName);\n# 1259 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\ntypedef void (*IOAsyncCallback0)(void *refcon, IOReturn result);\n# 1269 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\ntypedef void (*IOAsyncCallback1)(void *refcon, IOReturn result, void *arg0);\n# 1279 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\ntypedef void (*IOAsyncCallback2)(void *refcon, IOReturn result, void *arg0, void *arg1);\n# 1289 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\ntypedef void (*IOAsyncCallback)(void *refcon, IOReturn result, void **args,\n                                uint32_t numArgs);\n\n\n\n\nkern_return_t\nOSGetNotificationFromMessage(\n mach_msg_header_t * msg,\n uint32_t index,\n        uint32_t * type,\n        uintptr_t * reference,\n void ** content,\n        vm_size_t * size );\n\n\n\n\n\nkern_return_t\nIOCatalogueSendData(\n        mach_port_t masterPort,\n        uint32_t flag,\n        const char *buffer,\n        uint32_t size );\n\nkern_return_t\nIOCatalogueTerminate(\n        mach_port_t masterPort,\n        uint32_t flag,\n io_name_t description );\n\nkern_return_t\nIOCatalogueGetData(\n        mach_port_t masterPort,\n        uint32_t flag,\n        char **buffer,\n        uint32_t *size );\n\nkern_return_t\nIOCatalogueModuleLoaded(\n        mach_port_t masterPort,\n        io_name_t name );\n\nkern_return_t\nIOCatalogueReset(\n        mach_port_t masterPort,\n        uint32_t flag );\n# 1510 \"/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h\" 3\n\n# 29 \"/System/Library/Frameworks/DiskArbitration.framework/Headers/DADisk.h\" 2 3\n\n# 1 \"/System/Library/Frameworks/DiskArbitration.framework/Headers/DASession.h\" 1 3\n# 40 \"/System/Library/Frameworks/DiskArbitration.framework/Headers/DASession.h\" 3\ntypedef struct __DASession * DASessionRef;\n\n\n\n\n\n\nextern CFTypeID DASessionGetTypeID( void );\n# 58 \"/System/Library/Frameworks/DiskArbitration.framework/Headers/DASession.h\" 3\nextern DASessionRef DASessionCreate( CFAllocatorRef allocator );\n# 68 \"/System/Library/Frameworks/DiskArbitration.framework/Headers/DASession.h\" 3\nextern void DASessionScheduleWithRunLoop( DASessionRef session, CFRunLoopRef runLoop, CFStringRef runLoopMode );\n# 78 \"/System/Library/Frameworks/DiskArbitration.framework/Headers/DASession.h\" 3\nextern void DASessionUnscheduleFromRunLoop( DASessionRef session, CFRunLoopRef runLoop, CFStringRef runLoopMode );\n\n\n\n\n\n\ntypedef struct __DASession * DAApprovalSessionRef;\n\n\n\n\n\n\nextern CFTypeID DAApprovalSessionGetTypeID( void );\n# 103 \"/System/Library/Frameworks/DiskArbitration.framework/Headers/DASession.h\" 3\nextern DAApprovalSessionRef DAApprovalSessionCreate( CFAllocatorRef allocator );\n# 113 \"/System/Library/Frameworks/DiskArbitration.framework/Headers/DASession.h\" 3\nextern void DAApprovalSessionScheduleWithRunLoop( DAApprovalSessionRef session, CFRunLoopRef runLoop, CFStringRef runLoopMode );\n# 123 \"/System/Library/Frameworks/DiskArbitration.framework/Headers/DASession.h\" 3\nextern void DAApprovalSessionUnscheduleFromRunLoop( DAApprovalSessionRef session, CFRunLoopRef runLoop, CFStringRef runLoopMode );\n# 31 \"/System/Library/Frameworks/DiskArbitration.framework/Headers/DADisk.h\" 2 3\n\n\n\n\n\nextern const CFStringRef kDADiskDescriptionVolumeKindKey;\nextern const CFStringRef kDADiskDescriptionVolumeMountableKey;\nextern const CFStringRef kDADiskDescriptionVolumeNameKey;\nextern const CFStringRef kDADiskDescriptionVolumeNetworkKey;\nextern const CFStringRef kDADiskDescriptionVolumePathKey;\nextern const CFStringRef kDADiskDescriptionVolumeUUIDKey;\n\nextern const CFStringRef kDADiskDescriptionMediaBlockSizeKey;\nextern const CFStringRef kDADiskDescriptionMediaBSDMajorKey;\nextern const CFStringRef kDADiskDescriptionMediaBSDMinorKey;\nextern const CFStringRef kDADiskDescriptionMediaBSDNameKey;\nextern const CFStringRef kDADiskDescriptionMediaBSDUnitKey;\nextern const CFStringRef kDADiskDescriptionMediaContentKey;\nextern const CFStringRef kDADiskDescriptionMediaEjectableKey;\nextern const CFStringRef kDADiskDescriptionMediaIconKey;\nextern const CFStringRef kDADiskDescriptionMediaKindKey;\nextern const CFStringRef kDADiskDescriptionMediaLeafKey;\nextern const CFStringRef kDADiskDescriptionMediaNameKey;\nextern const CFStringRef kDADiskDescriptionMediaPathKey;\nextern const CFStringRef kDADiskDescriptionMediaRemovableKey;\nextern const CFStringRef kDADiskDescriptionMediaSizeKey;\nextern const CFStringRef kDADiskDescriptionMediaTypeKey;\nextern const CFStringRef kDADiskDescriptionMediaUUIDKey;\nextern const CFStringRef kDADiskDescriptionMediaWholeKey;\nextern const CFStringRef kDADiskDescriptionMediaWritableKey;\n\nextern const CFStringRef kDADiskDescriptionDeviceGUIDKey;\nextern const CFStringRef kDADiskDescriptionDeviceInternalKey;\nextern const CFStringRef kDADiskDescriptionDeviceModelKey;\nextern const CFStringRef kDADiskDescriptionDevicePathKey;\nextern const CFStringRef kDADiskDescriptionDeviceProtocolKey;\nextern const CFStringRef kDADiskDescriptionDeviceRevisionKey;\nextern const CFStringRef kDADiskDescriptionDeviceUnitKey;\nextern const CFStringRef kDADiskDescriptionDeviceVendorKey;\n\nextern const CFStringRef kDADiskDescriptionBusNameKey;\nextern const CFStringRef kDADiskDescriptionBusPathKey;\n# 81 \"/System/Library/Frameworks/DiskArbitration.framework/Headers/DADisk.h\" 3\ntypedef struct __DADisk * DADiskRef;\n\n\n\n\n\n\nextern CFTypeID DADiskGetTypeID( void );\n# 103 \"/System/Library/Frameworks/DiskArbitration.framework/Headers/DADisk.h\" 3\nextern DADiskRef DADiskCreateFromBSDName( CFAllocatorRef allocator, DASessionRef session, const char * name );\n# 118 \"/System/Library/Frameworks/DiskArbitration.framework/Headers/DADisk.h\" 3\nextern DADiskRef DADiskCreateFromIOMedia( CFAllocatorRef allocator, DASessionRef session, io_service_t media );\n# 129 \"/System/Library/Frameworks/DiskArbitration.framework/Headers/DADisk.h\" 3\nextern const char * DADiskGetBSDName( DADiskRef disk );\n# 142 \"/System/Library/Frameworks/DiskArbitration.framework/Headers/DADisk.h\" 3\nextern io_service_t DADiskCopyIOMedia( DADiskRef disk );\n# 160 \"/System/Library/Frameworks/DiskArbitration.framework/Headers/DADisk.h\" 3\nextern CFDictionaryRef DADiskCopyDescription( DADiskRef disk );\n# 173 \"/System/Library/Frameworks/DiskArbitration.framework/Headers/DADisk.h\" 3\nextern DADiskRef DADiskCopyWholeDisk( DADiskRef disk );\n# 63 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 2 3\n# 74 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\n#pragma pack(push, 2)\n\n\n\n\nstruct HFSUniStr255 {\n  UInt16 length;\n  UniChar unicode[255];\n};\ntypedef struct HFSUniStr255 HFSUniStr255;\ntypedef const HFSUniStr255 * ConstHFSUniStr255Param;\n# 97 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nenum {\n  fsCurPerm = 0x00,\n  fsRdPerm = 0x01,\n  fsWrPerm = 0x02,\n  fsRdWrPerm = 0x03,\n  fsRdWrShPerm = 0x04\n};\n# 115 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nenum {\n  fsRdAccessPerm = 0x01,\n  fsWrAccessPerm = 0x02,\n  fsRdDenyPerm = 0x10,\n  fsWrDenyPerm = 0x20\n};\n\nenum {\n  fsRtParID = 1,\n  fsRtDirID = 2\n};\n\nenum {\n  fsAtMark = 0,\n  fsFromStart = 1,\n  fsFromLEOF = 2,\n  fsFromMark = 3\n};\n\nenum {\n\n  kFSAllowConcurrentAsyncIOBit = 3,\n  kFSAllowConcurrentAsyncIOMask = 0x0008,\n  kFSPleaseCacheBit = 4,\n  kFSPleaseCacheMask = 0x0010,\n  kFSNoCacheBit = 5,\n  kFSNoCacheMask = 0x0020,\n  kFSRdVerifyBit = 6,\n  kFSRdVerifyMask = 0x0040,\n  kFSForceReadBit = 6,\n  kFSForceReadMask = 0x0040,\n  kFSNewLineBit = 7,\n  kFSNewLineMask = 0x0080,\n  kFSNewLineCharMask = 0xFF00\n};\n\n\nenum {\n\n  fsSBPartialName = 0x01,\n  fsSBFullName = 0x02,\n  fsSBFlAttrib = 0x04,\n  fsSBFlFndrInfo = 0x08,\n  fsSBFlLgLen = 0x20,\n  fsSBFlPyLen = 0x40,\n  fsSBFlRLgLen = 0x80,\n  fsSBFlRPyLen = 0x0100,\n  fsSBFlCrDat = 0x0200,\n  fsSBFlMdDat = 0x0400,\n  fsSBFlBkDat = 0x0800,\n  fsSBFlXFndrInfo = 0x1000,\n  fsSBFlParID = 0x2000,\n  fsSBNegate = 0x4000,\n  fsSBDrUsrWds = 0x08,\n  fsSBDrNmFls = 0x10,\n  fsSBDrCrDat = 0x0200,\n  fsSBDrMdDat = 0x0400,\n  fsSBDrBkDat = 0x0800,\n  fsSBDrFndrInfo = 0x1000,\n  fsSBDrParID = 0x2000,\n  fsSBNodeID = 0x8000,\n  fsSBAttributeModDate = 0x00010000,\n  fsSBAccessDate = 0x00020000,\n  fsSBPermissions = 0x00040000,\n  fsSBSkipPackageContents = 0x00080000,\n  fsSBSkipHiddenItems = 0x00100000,\n  fsSBUserID = 0x00200000,\n  fsSBGroupID = 0x00400000\n};\n\nenum {\n\n  fsSBPartialNameBit = 0,\n  fsSBFullNameBit = 1,\n  fsSBFlAttribBit = 2,\n  fsSBFlFndrInfoBit = 3,\n  fsSBFlLgLenBit = 5,\n  fsSBFlPyLenBit = 6,\n  fsSBFlRLgLenBit = 7,\n  fsSBFlRPyLenBit = 8,\n  fsSBFlCrDatBit = 9,\n  fsSBFlMdDatBit = 10,\n  fsSBFlBkDatBit = 11,\n  fsSBFlXFndrInfoBit = 12,\n  fsSBFlParIDBit = 13,\n  fsSBNegateBit = 14,\n  fsSBDrUsrWdsBit = 3,\n  fsSBDrNmFlsBit = 4,\n  fsSBDrCrDatBit = 9,\n  fsSBDrMdDatBit = 10,\n  fsSBDrBkDatBit = 11,\n  fsSBDrFndrInfoBit = 12,\n  fsSBDrParIDBit = 13,\n  fsSBNodeIDBit = 15,\n  fsSBAttributeModDateBit = 16,\n  fsSBAccessDateBit = 17,\n  fsSBPermissionsBit = 18,\n  fsSBSkipPackageContentsBit = 19,\n  fsSBSkipHiddenItemsBit = 20,\n  fsSBUserIDBit = 21,\n  fsSBGroupIDBit = 22\n};\n\nenum {\n\n  bLimitFCBs = 31,\n  bLocalWList = 30,\n  bNoMiniFndr = 29,\n  bNoVNEdit = 28,\n  bNoLclSync = 27,\n  bTrshOffLine = 26,\n  bNoSwitchTo = 25,\n  bNoDeskItems = 20,\n  bNoBootBlks = 19,\n  bAccessCntl = 18,\n  bNoSysDir = 17,\n  bHasExtFSVol = 16,\n  bHasOpenDeny = 15,\n  bHasCopyFile = 14,\n  bHasMoveRename = 13,\n  bHasDesktopMgr = 12,\n  bHasShortName = 11,\n  bHasFolderLock = 10,\n  bHasPersonalAccessPrivileges = 9,\n  bHasUserGroupList = 8,\n  bHasCatSearch = 7,\n  bHasFileIDs = 6,\n  bHasBTreeMgr = 5,\n  bHasBlankAccessPrivileges = 4,\n  bSupportsAsyncRequests = 3,\n  bSupportsTrashVolumeCache = 2\n};\n\nenum {\n\n  bHasDirectIO = 1\n};\n\nenum {\n\n  bIsEjectable = 0,\n  bSupportsHFSPlusAPIs = 1,\n  bSupportsFSCatalogSearch = 2,\n  bSupportsFSExchangeObjects = 3,\n  bSupports2TBFiles = 4,\n  bSupportsLongNames = 5,\n  bSupportsMultiScriptNames = 6,\n  bSupportsNamedForks = 7,\n  bSupportsSubtreeIterators = 8,\n  bL2PCanMapFileBlocks = 9,\n  bParentModDateChanges = 10,\n  bAncestorModDateChanges = 11,\n  bSupportsSymbolicLinks = 13,\n  bIsAutoMounted = 14,\n  bAllowCDiDataHandler = 17,\n  bSupportsExclusiveLocks = 18,\n  bSupportsJournaling = 19,\n  bNoVolumeSizes = 20,\n  bIsOnInternalBus = 21,\n  bIsCaseSensitive = 22,\n  bIsCasePreserving = 23,\n  bDoNotDisplay = 24,\n  bIsRemovable = 25,\n  bNoRootTimes = 26,\n  bIsOnExternalBus = 27,\n  bSupportsExtendedFileSecurity = 28\n};\n\n\n\n\n\n\nenum {\n\n  kWidePosOffsetBit = 8,\n  kUseWidePositioning = (1 << kWidePosOffsetBit),\n  kMaximumBlocksIn4GB = 0x007FFFFF\n};\n\nenum {\n\n  fsUnixPriv = 1\n};\n\nenum {\n\n  kNoUserAuthentication = 1,\n  kPassword = 2,\n  kEncryptPassword = 3,\n  kTwoWayEncryptPassword = 6\n};\n\n\n\nenum {\n  knoUser = 0,\n  kadministratorUser = 1\n};\n\nenum {\n  knoGroup = 0\n};\n\n\ntypedef SInt16 FSVolumeRefNum;\n\ntypedef int FSIORefNum;\n\n\n\n\nenum {\n  kFSInvalidVolumeRefNum = 0\n};\n\nstruct FSRef {\n  UInt8 hidden[80];\n};\ntypedef struct FSRef FSRef;\ntypedef FSRef * FSRefPtr;\ntypedef struct __FSFileSecurity* FSFileSecurityRef;\n\nstruct CatPositionRec {\n  SInt32 initialize;\n  SInt16 priv[6];\n};\ntypedef struct CatPositionRec CatPositionRec;\n\nstruct FSSpec {\n  UInt8 hidden[70];\n};\ntypedef struct FSSpec FSSpec;\n# 357 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\ntypedef FSSpec * FSSpecPtr;\ntypedef FSSpecPtr * FSSpecHandle;\n\ntypedef FSSpecPtr FSSpecArrayPtr;\n\n\n\n\ntypedef const FSSpec * ConstFSSpecPtr;\ntypedef union ParamBlockRec ParamBlockRec;\n\ntypedef void * ParmBlkPtr;\n\n\n\n\ntypedef void ( * IOCompletionProcPtr)(ParmBlkPtr paramBlock);\ntypedef IOCompletionProcPtr IOCompletionUPP;\n# 1067 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nstruct FSPermissionInfo {\n  UInt32 userID;\n  UInt32 groupID;\n  UInt8 reserved1;\n  UInt8 userAccess;\n  UInt16 mode;\n  FSFileSecurityRef fileSec;\n};\ntypedef struct FSPermissionInfo FSPermissionInfo;\n\n\ntypedef UInt32 FSCatalogInfoBitmap;\nenum {\n  kFSCatInfoNone = 0x00000000,\n  kFSCatInfoTextEncoding = 0x00000001,\n  kFSCatInfoNodeFlags = 0x00000002,\n  kFSCatInfoVolume = 0x00000004,\n  kFSCatInfoParentDirID = 0x00000008,\n  kFSCatInfoNodeID = 0x00000010,\n  kFSCatInfoCreateDate = 0x00000020,\n  kFSCatInfoContentMod = 0x00000040,\n  kFSCatInfoAttrMod = 0x00000080,\n  kFSCatInfoAccessDate = 0x00000100,\n  kFSCatInfoBackupDate = 0x00000200,\n  kFSCatInfoPermissions = 0x00000400,\n  kFSCatInfoFinderInfo = 0x00000800,\n  kFSCatInfoFinderXInfo = 0x00001000,\n  kFSCatInfoValence = 0x00002000,\n  kFSCatInfoDataSizes = 0x00004000,\n  kFSCatInfoRsrcSizes = 0x00008000,\n  kFSCatInfoSharingFlags = 0x00010000,\n  kFSCatInfoUserPrivs = 0x00020000,\n  kFSCatInfoUserAccess = 0x00080000,\n  kFSCatInfoSetOwnership = 0x00100000,\n  kFSCatInfoFSFileSecurityRef = 0x00400000,\n  kFSCatInfoAllDates = 0x000003E0,\n  kFSCatInfoGettableInfo = 0x0003FFFF,\n  kFSCatInfoSettableInfo = 0x00001FE3,\n  kFSCatInfoReserved = (int)0xFFFC0000\n};\n\n\nenum {\n  kFSNodeLockedBit = 0,\n  kFSNodeLockedMask = 0x0001,\n  kFSNodeResOpenBit = 2,\n  kFSNodeResOpenMask = 0x0004,\n  kFSNodeDataOpenBit = 3,\n  kFSNodeDataOpenMask = 0x0008,\n  kFSNodeIsDirectoryBit = 4,\n  kFSNodeIsDirectoryMask = 0x0010,\n  kFSNodeCopyProtectBit = 6,\n  kFSNodeCopyProtectMask = 0x0040,\n  kFSNodeForkOpenBit = 7,\n  kFSNodeForkOpenMask = 0x0080,\n  kFSNodeHardLinkBit = 8,\n  kFSNodeHardLinkMask = 0x00000100\n};\n\n\nenum {\n  kFSNodeInSharedBit = 2,\n  kFSNodeInSharedMask = 0x0004,\n  kFSNodeIsMountedBit = 3,\n  kFSNodeIsMountedMask = 0x0008,\n  kFSNodeIsSharePointBit = 5,\n  kFSNodeIsSharePointMask = 0x0020\n};\n# 1148 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nstruct FSCatalogInfo {\n\n\n\n\n\n  UInt16 nodeFlags;\n\n\n\n\n  FSVolumeRefNum volume;\n\n\n\n\n\n  UInt32 parentDirID;\n\n\n\n\n  UInt32 nodeID;\n\n\n\n\n\n  UInt8 sharingFlags;\n  UInt8 userPrivileges;\n  UInt8 reserved1;\n\n\n\n\n  UInt8 reserved2;\n\n\n\n\n  UTCDateTime createDate;\n\n\n\n\n\n  UTCDateTime contentModDate;\n\n\n\n\n\n  UTCDateTime attributeModDate;\n\n\n\n\n\n  UTCDateTime accessDate;\n\n\n\n\n\n  UTCDateTime backupDate;\n\n\n\n\n\n  FSPermissionInfo permissions;\n\n\n\n\n\n  UInt8 finderInfo[16];\n\n\n\n\n\n  UInt8 extFinderInfo[16];\n\n\n\n\n\n\n  UInt64 dataLogicalSize;\n\n\n\n\n\n  UInt64 dataPhysicalSize;\n\n\n\n\n\n  UInt64 rsrcLogicalSize;\n\n\n\n\n\n  UInt64 rsrcPhysicalSize;\n\n\n\n\n\n  UInt32 valence;\n\n\n\n\n\n  TextEncoding textEncodingHint;\n};\ntypedef struct FSCatalogInfo FSCatalogInfo;\n# 1300 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\ntypedef FSCatalogInfo * FSCatalogInfoPtr;\nstruct FSRefParam {\n  QElemPtr qLink;\n  SInt16 qType;\n  SInt16 ioTrap;\n  Ptr ioCmdAddr;\n  IOCompletionUPP ioCompletion;\n  volatile OSErr ioResult;\n  ConstStringPtr ioNamePtr;\n  FSVolumeRefNum ioVRefNum;\n\n  SInt16 reserved1;\n  UInt8 reserved2;\n  UInt8 reserved3;\n\n  const FSRef * ref;\n  FSCatalogInfoBitmap whichInfo;\n  FSCatalogInfo * catInfo;\n  UniCharCount nameLength;\n  const UniChar * name;\n  UInt32 ioDirID;\n  FSSpecPtr spec;\n  FSRef * parentRef;\n  FSRef * newRef;\n  TextEncoding textEncodingHint;\n  HFSUniStr255 * outName;\n};\ntypedef struct FSRefParam FSRefParam;\ntypedef FSRefParam * FSRefParamPtr;\n\nstruct FSRefForkIOParam {\n  QElemPtr qLink;\n  SInt16 qType;\n  SInt16 ioTrap;\n  Ptr ioCmdAddr;\n  IOCompletionUPP ioCompletion;\n  volatile OSErr ioResult;\n  const FSRef * parentRef;\n  UniCharCount nameLength;\n  const UniChar * name;\n  FSCatalogInfoBitmap whichInfo;\n  const FSCatalogInfo * catInfo;\n  UniCharCount forkNameLength;\n  const UniChar * forkName;\n  SInt8 permissions;\n  UInt8 reserved1;\n  FSIORefNum forkRefNum;\n  FSRef * newRef;\n};\ntypedef struct FSRefForkIOParam FSRefForkIOParam;\ntypedef FSRefForkIOParam * FSRefForkIOParamPtr;\ntypedef struct OpaqueFSIterator* FSIterator;\nenum {\n  kFSIterateFlat = 0,\n  kFSIterateSubtree = 1,\n  kFSIterateDelete = 2,\n  kFSIterateReserved = (int)0xFFFFFFFC\n};\n\ntypedef OptionBits FSIteratorFlags;\nstruct FSSearchParams {\n  Duration searchTime;\n  OptionBits searchBits;\n  UniCharCount searchNameLength;\n  const UniChar * searchName;\n  FSCatalogInfo * searchInfo1;\n  FSCatalogInfo * searchInfo2;\n};\ntypedef struct FSSearchParams FSSearchParams;\ntypedef FSSearchParams * FSSearchParamsPtr;\nstruct FSCatalogBulkParam {\n  QElemPtr qLink;\n  SInt16 qType;\n  SInt16 ioTrap;\n  Ptr ioCmdAddr;\n  IOCompletionUPP ioCompletion;\n  volatile OSErr ioResult;\n  Boolean containerChanged;\n  UInt8 reserved;\n\n  FSIteratorFlags iteratorFlags;\n  FSIterator iterator;\n  const FSRef * container;\n  ItemCount maximumItems;\n  ItemCount actualItems;\n  FSCatalogInfoBitmap whichInfo;\n  FSCatalogInfo * catalogInfo;\n  FSRef * refs;\n  FSSpecPtr specs;\n  HFSUniStr255 * names;\n  const FSSearchParams * searchParams;\n};\ntypedef struct FSCatalogBulkParam FSCatalogBulkParam;\ntypedef FSCatalogBulkParam * FSCatalogBulkParamPtr;\ntypedef UInt16 FSAllocationFlags;\nenum {\n  kFSAllocDefaultFlags = 0x0000,\n  kFSAllocAllOrNothingMask = 0x0001,\n  kFSAllocContiguousMask = 0x0002,\n  kFSAllocNoRoundUpMask = 0x0004,\n  kFSAllocReservedMask = 0xFFF8\n};\n\nstruct FSForkIOParam {\n  QElemPtr qLink;\n  SInt16 qType;\n  SInt16 ioTrap;\n  Ptr ioCmdAddr;\n  IOCompletionUPP ioCompletion;\n  volatile OSErr ioResult;\n  void * reserved1;\n  SInt16 reserved2;\n  FSIORefNum forkRefNum;\n  UInt8 reserved3;\n  SInt8 permissions;\n  const FSRef * ref;\n\n\n  Ptr buffer;\n  UInt32 requestCount;\n  UInt32 actualCount;\n  UInt16 positionMode;\n  SInt64 positionOffset;\n\n  FSAllocationFlags allocationFlags;\n  UInt64 allocationAmount;\n\n  UniCharCount forkNameLength;\n  const UniChar * forkName;\n\n  CatPositionRec forkIterator;\n  HFSUniStr255 * outForkName;\n};\ntypedef struct FSForkIOParam FSForkIOParam;\ntypedef FSForkIOParam * FSForkIOParamPtr;\ntypedef UInt8 FSForkInfoFlags;\nstruct FSForkInfo {\n  FSForkInfoFlags flags;\n  SInt8 permissions;\n  FSVolumeRefNum volume;\n  UInt32 reserved2;\n  UInt32 nodeID;\n  UInt32 forkID;\n  UInt64 currentPosition;\n  UInt64 logicalEOF;\n  UInt64 physicalEOF;\n  UInt64 process;\n};\ntypedef struct FSForkInfo FSForkInfo;\ntypedef FSForkInfo * FSForkInfoPtr;\nstruct FSForkCBInfoParam {\n  QElemPtr qLink;\n  SInt16 qType;\n  SInt16 ioTrap;\n  Ptr ioCmdAddr;\n  IOCompletionUPP ioCompletion;\n  volatile OSErr ioResult;\n  FSIORefNum desiredRefNum;\n  FSVolumeRefNum volumeRefNum;\n  FSIORefNum iterator;\n  FSVolumeRefNum actualRefNum;\n\n  FSRef * ref;\n  FSForkInfo * forkInfo;\n  HFSUniStr255 * forkName;\n};\ntypedef struct FSForkCBInfoParam FSForkCBInfoParam;\ntypedef FSForkCBInfoParam * FSForkCBInfoParamPtr;\n\nstruct FSRangeLockParam {\n  QElemPtr qLink;\n  SInt16 qType;\n  SInt16 ioTrap;\n  Ptr ioCmdAddr;\n  IOCompletionUPP ioCompletion;\n  volatile OSErr ioResult;\n  FSIORefNum forkRefNum;\n  UInt64 requestCount;\n  UInt16 positionMode;\n  SInt64 positionOffset;\n  UInt64 rangeStart;\n\n};\ntypedef struct FSRangeLockParam FSRangeLockParam;\ntypedef FSRangeLockParam * FSRangeLockParamPtr;\ntypedef UInt32 FSVolumeInfoBitmap;\nenum {\n  kFSVolInfoNone = 0x0000,\n  kFSVolInfoCreateDate = 0x0001,\n  kFSVolInfoModDate = 0x0002,\n  kFSVolInfoBackupDate = 0x0004,\n  kFSVolInfoCheckedDate = 0x0008,\n  kFSVolInfoFileCount = 0x0010,\n  kFSVolInfoDirCount = 0x0020,\n  kFSVolInfoSizes = 0x0040,\n  kFSVolInfoBlocks = 0x0080,\n  kFSVolInfoNextAlloc = 0x0100,\n  kFSVolInfoRsrcClump = 0x0200,\n  kFSVolInfoDataClump = 0x0400,\n  kFSVolInfoNextID = 0x0800,\n  kFSVolInfoFinderInfo = 0x1000,\n  kFSVolInfoFlags = 0x2000,\n  kFSVolInfoFSInfo = 0x4000,\n  kFSVolInfoDriveInfo = 0x8000,\n  kFSVolInfoGettableInfo = 0xFFFF,\n  kFSVolInfoSettableInfo = 0x3004\n};\n\n\nenum {\n  kFSVolFlagDefaultVolumeBit = 5,\n  kFSVolFlagDefaultVolumeMask = 0x0020,\n  kFSVolFlagFilesOpenBit = 6,\n  kFSVolFlagFilesOpenMask = 0x0040,\n  kFSVolFlagHardwareLockedBit = 7,\n  kFSVolFlagHardwareLockedMask = 0x0080,\n  kFSVolFlagJournalingActiveBit = 14,\n  kFSVolFlagJournalingActiveMask = 0x4000,\n  kFSVolFlagSoftwareLockedBit = 15,\n  kFSVolFlagSoftwareLockedMask = 0x8000\n};\n\n\nstruct FSVolumeInfo {\n\n  UTCDateTime createDate;\n  UTCDateTime modifyDate;\n  UTCDateTime backupDate;\n  UTCDateTime checkedDate;\n\n\n  UInt32 fileCount;\n  UInt32 folderCount;\n\n\n  UInt64 totalBytes;\n  UInt64 freeBytes;\n\n\n  UInt32 blockSize;\n  UInt32 totalBlocks;\n  UInt32 freeBlocks;\n  UInt32 nextAllocation;\n  UInt32 rsrcClumpSize;\n  UInt32 dataClumpSize;\n  UInt32 nextCatalogID;\n  UInt8 finderInfo[32];\n\n\n  UInt16 flags;\n  UInt16 filesystemID;\n  UInt16 signature;\n  UInt16 driveNumber;\n  FSIORefNum driverRefNum;\n};\ntypedef struct FSVolumeInfo FSVolumeInfo;\ntypedef FSVolumeInfo * FSVolumeInfoPtr;\nstruct FSVolumeInfoParam {\n  QElemPtr qLink;\n  SInt16 qType;\n  SInt16 ioTrap;\n  Ptr ioCmdAddr;\n  IOCompletionUPP ioCompletion;\n  volatile OSErr ioResult;\n  StringPtr ioNamePtr;\n  FSVolumeRefNum ioVRefNum;\n\n  UInt32 volumeIndex;\n  FSVolumeInfoBitmap whichInfo;\n  FSVolumeInfo * volumeInfo;\n  HFSUniStr255 * volumeName;\n  FSRef * ref;\n};\ntypedef struct FSVolumeInfoParam FSVolumeInfoParam;\ntypedef FSVolumeInfoParam * FSVolumeInfoParamPtr;\nstruct GetVolParmsInfoBuffer {\n  SInt16 vMVersion;\n  SInt32 vMAttrib;\n  Handle vMLocalHand;\n  SInt32 vMServerAdr;\n\n  SInt32 vMVolumeGrade;\n  SInt16 vMForeignPrivID;\n\n  SInt32 vMExtendedAttributes;\n\n  void * vMDeviceID;\n\n  UniCharCount vMMaxNameLength;\n\n};\ntypedef struct GetVolParmsInfoBuffer GetVolParmsInfoBuffer;\n\n\n\n\n\n\ntypedef OSType VolumeType;\nenum {\n\n  AppleShareMediaType = 'afpm'\n};\n\n\n\n\nstruct VolMountInfoHeader {\n  SInt16 length;\n  VolumeType media;\n};\ntypedef struct VolMountInfoHeader VolMountInfoHeader;\ntypedef VolMountInfoHeader * VolMountInfoPtr;\n\n\n\n\nstruct VolumeMountInfoHeader {\n  SInt16 length;\n  VolumeType media;\n  SInt16 flags;\n};\ntypedef struct VolumeMountInfoHeader VolumeMountInfoHeader;\ntypedef VolumeMountInfoHeader * VolumeMountInfoHeaderPtr;\n\nenum {\n  volMountNoLoginMsgFlagBit = 0,\n  volMountNoLoginMsgFlagMask = 0x0001,\n  volMountExtendedFlagsBit = 7,\n  volMountExtendedFlagsMask = 0x0080,\n  volMountInteractBit = 15,\n  volMountInteractMask = 0x8000,\n  volMountChangedBit = 14,\n  volMountChangedMask = 0x4000,\n  volMountFSReservedMask = 0x00FF,\n  volMountSysReservedMask = 0xFF00\n};\n\n\n\nstruct AFPVolMountInfo {\n  SInt16 length;\n  VolumeType media;\n  SInt16 flags;\n  SInt8 nbpInterval;\n  SInt8 nbpCount;\n  SInt16 uamType;\n  SInt16 zoneNameOffset;\n  SInt16 serverNameOffset;\n  SInt16 volNameOffset;\n  SInt16 userNameOffset;\n  SInt16 userPasswordOffset;\n  SInt16 volPasswordOffset;\n  char AFPData[144];\n};\ntypedef struct AFPVolMountInfo AFPVolMountInfo;\ntypedef AFPVolMountInfo * AFPVolMountInfoPtr;\n\n\n\nstruct AFPXVolMountInfo {\n  SInt16 length;\n  VolumeType media;\n  SInt16 flags;\n  SInt8 nbpInterval;\n  SInt8 nbpCount;\n  SInt16 uamType;\n  SInt16 zoneNameOffset;\n  SInt16 serverNameOffset;\n  SInt16 volNameOffset;\n  SInt16 userNameOffset;\n  SInt16 userPasswordOffset;\n  SInt16 volPasswordOffset;\n  SInt16 extendedFlags;\n  SInt16 uamNameOffset;\n  SInt16 alternateAddressOffset;\n  char AFPData[176];\n};\ntypedef struct AFPXVolMountInfo AFPXVolMountInfo;\ntypedef AFPXVolMountInfo * AFPXVolMountInfoPtr;\nenum {\n  kAFPExtendedFlagsAlternateAddressMask = 1\n};\n\n\nenum {\n\n  kAFPTagTypeIP = 0x01,\n  kAFPTagTypeIPPort = 0x02,\n  kAFPTagTypeDDP = 0x03,\n  kAFPTagTypeDNS = 0x04\n};\n\n\nenum {\n\n  kAFPTagLengthIP = 0x06,\n  kAFPTagLengthIPPort = 0x08,\n  kAFPTagLengthDDP = 0x06\n};\n\nstruct AFPTagData {\n  UInt8 fLength;\n  UInt8 fType;\n  UInt8 fData[1];\n};\ntypedef struct AFPTagData AFPTagData;\nstruct AFPAlternateAddress {\n\n  UInt8 fVersion;\n  UInt8 fAddressCount;\n  UInt8 fAddressList[1];\n};\ntypedef struct AFPAlternateAddress AFPAlternateAddress;\nenum {\n  kLargeIconSize = 256,\n  kLarge4BitIconSize = 512,\n  kLarge8BitIconSize = 1024,\n  kSmallIconSize = 64,\n  kSmall4BitIconSize = 128,\n  kSmall8BitIconSize = 256\n};\n# 1731 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern IOCompletionUPP\nNewIOCompletionUPP(IOCompletionProcPtr userRoutine) ;\n# 1742 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void\nDisposeIOCompletionUPP(IOCompletionUPP userUPP) ;\n# 1753 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void\nInvokeIOCompletionUPP(\n  ParmBlkPtr paramBlock,\n  IOCompletionUPP userUPP) ;\n# 1794 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr FSMakeFSRefUnicode(const FSRef *parentRef, UniCharCount nameLength, const UniChar *name, TextEncoding textEncodingHint, FSRef *newRef) ;\n# 1808 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr PBMakeFSRefUnicodeSync(FSRefParam * paramBlock) ;\n# 1822 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void PBMakeFSRefUnicodeAsync(FSRefParam * paramBlock) ;\n# 1847 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr FSCompareFSRefs(const FSRef *ref1, const FSRef *ref2) ;\n# 1861 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr PBCompareFSRefsSync(FSRefParam * paramBlock) ;\n# 1875 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void PBCompareFSRefsAsync(FSRefParam * paramBlock) ;\n# 1904 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr FSCreateFileUnicode(const FSRef *parentRef, UniCharCount nameLength, const UniChar *name, FSCatalogInfoBitmap whichInfo, const FSCatalogInfo *catalogInfo, FSRef *newRef, FSSpecPtr newSpec) ;\n# 1918 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr PBCreateFileUnicodeSync(FSRefParam * paramBlock) ;\n# 1932 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void PBCreateFileUnicodeAsync(FSRefParam * paramBlock) ;\n# 1962 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr FSCreateDirectoryUnicode(const FSRef *parentRef, UniCharCount nameLength, const UniChar *name, FSCatalogInfoBitmap whichInfo, const FSCatalogInfo *catalogInfo, FSRef *newRef, FSSpecPtr newSpec, UInt32 *newDirID) ;\n# 1976 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr PBCreateDirectoryUnicodeSync(FSRefParam * paramBlock) ;\n# 1990 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void PBCreateDirectoryUnicodeAsync(FSRefParam * paramBlock) ;\n# 2012 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr FSDeleteObject(const FSRef * ref) ;\n# 2026 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr PBDeleteObjectSync(FSRefParam * paramBlock) ;\n# 2040 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void PBDeleteObjectAsync(FSRefParam * paramBlock) ;\n# 2063 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr FSUnlinkObject(const FSRef * ref) ;\n# 2077 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr PBUnlinkObjectSync(FSRefParam * paramBlock) ;\n# 2091 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void PBUnlinkObjectAsync(FSRefParam * paramBlock) ;\n# 2120 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr FSMoveObject(const FSRef *ref, const FSRef *destDirectory, FSRef *newRef) ;\n# 2134 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr PBMoveObjectSync(FSRefParam * paramBlock) ;\n# 2148 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void PBMoveObjectAsync(FSRefParam * paramBlock) ;\n# 2171 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr FSExchangeObjects(const FSRef *ref, const FSRef *destRef) ;\n# 2185 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr PBExchangeObjectsSync(FSRefParam * paramBlock) ;\n# 2199 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void PBExchangeObjectsAsync(FSRefParam * paramBlock) ;\n# 2320 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nenum {\n\n\n\n\n\n  kFSReplaceObjectDefaultOptions = 0,\n\n\n\n\n\n\n  kFSReplaceObjectReplaceMetadata = 0x01,\n\n\n\n\n\n\n\n  kFSReplaceObjectSaveOriginalAsABackup = 0x02,\n\n\n\n\n  kFSReplaceObjectReplacePermissionInfo = 0x04,\n\n\n\n\n  kFSReplaceObjectPreservePermissionInfo = 0x08,\n# 2363 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\n  kFSReplaceObjectDoNotCheckObjectWriteAccess = 0x10\n};\n# 2413 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSReplaceObject(const FSRef *originalObject, const FSRef *replacementObject, CFStringRef newName, CFStringRef temporaryName, const FSRef *temporaryDirectory, OptionBits flags, FSRef *resultObject) ;\n# 2461 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSPathReplaceObject(const char *originalObjectPath, const char *replacementObjectPath, CFStringRef newName, CFStringRef temporaryName, const char *temporaryDirectoryPath, OptionBits flags) ;\n# 2493 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSGetTemporaryDirectoryForReplaceObject(const FSRef *originalObject, FSRef *temporaryDirectory, OptionBits flags) ;\n# 2529 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSPathGetTemporaryDirectoryForReplaceObject(const char *originalObjectPath, char *temporaryDirectoryPath, UInt32 maxPathSize, OptionBits flags) ;\n# 2560 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr FSRenameUnicode(const FSRef *ref, UniCharCount nameLength, const UniChar *name, TextEncoding textEncodingHint, FSRef *newRef) ;\n# 2574 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr PBRenameUnicodeSync(FSRefParam * paramBlock) ;\n# 2588 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void PBRenameUnicodeAsync(FSRefParam * paramBlock) ;\n# 2617 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr FSGetCatalogInfo(const FSRef *ref, FSCatalogInfoBitmap whichInfo, FSCatalogInfo *catalogInfo, HFSUniStr255 *outName, FSSpecPtr fsSpec, FSRef *parentRef) ;\n# 2631 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr PBGetCatalogInfoSync(FSRefParam * paramBlock) ;\n# 2645 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void PBGetCatalogInfoAsync(FSRefParam * paramBlock) ;\n# 2687 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr FSSetCatalogInfo(const FSRef *ref, FSCatalogInfoBitmap whichInfo, const FSCatalogInfo *catalogInfo) ;\n# 2709 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr PBSetCatalogInfoSync(FSRefParam * paramBlock) ;\n# 2731 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void PBSetCatalogInfoAsync(FSRefParam * paramBlock) ;\n# 2758 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr FSOpenIterator(const FSRef *container, FSIteratorFlags iteratorFlags, FSIterator *iterator) ;\n# 2772 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr PBOpenIteratorSync(FSCatalogBulkParam * paramBlock) ;\n# 2786 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void PBOpenIteratorAsync(FSCatalogBulkParam * paramBlock) ;\n# 2808 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr FSCloseIterator(FSIterator iterator) ;\n# 2822 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr PBCloseIteratorSync(FSCatalogBulkParam * paramBlock) ;\n# 2836 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void PBCloseIteratorAsync(FSCatalogBulkParam * paramBlock) ;\n# 2869 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr FSGetCatalogInfoBulk(FSIterator iterator, ItemCount maximumObjects, ItemCount *actualObjects, Boolean *containerChanged, FSCatalogInfoBitmap whichInfo, FSCatalogInfo *catalogInfos, FSRef *refs, FSSpecPtr specs, HFSUniStr255 *names) ;\n# 2883 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr PBGetCatalogInfoBulkSync(FSCatalogBulkParam * paramBlock) ;\n# 2897 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void PBGetCatalogInfoBulkAsync(FSCatalogBulkParam * paramBlock) ;\n# 2933 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr FSCatalogSearch(FSIterator iterator, const FSSearchParams *searchCriteria, ItemCount maximumObjects, ItemCount *actualObjects, Boolean *containerChanged, FSCatalogInfoBitmap whichInfo, FSCatalogInfo *catalogInfos, FSRef *refs, FSSpecPtr specs, HFSUniStr255 *names) ;\n# 2947 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr PBCatalogSearchSync(FSCatalogBulkParam * paramBlock) ;\n# 2961 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void PBCatalogSearchAsync(FSCatalogBulkParam * paramBlock) ;\n# 2993 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSCreateFileAndOpenForkUnicode(const FSRef *parentRef, UniCharCount nameLength, const UniChar *name, FSCatalogInfoBitmap whichInfo, const FSCatalogInfo *catalogInfo, UniCharCount forkNameLength, const UniChar *forkName, SInt8 permissions, FSIORefNum *forkRefNum, FSRef *newRef) ;\n# 3007 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus PBCreateFileAndOpenForkUnicodeSync(FSRefForkIOParamPtr paramBlock) ;\n# 3021 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void PBCreateFileAndOpenForkUnicodeAsync(FSRefForkIOParamPtr paramBlock) ;\n# 3044 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr FSCreateFork(const FSRef *ref, UniCharCount forkNameLength, const UniChar *forkName) ;\n# 3058 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr PBCreateForkSync(FSForkIOParam * paramBlock) ;\n# 3072 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void PBCreateForkAsync(FSForkIOParam * paramBlock) ;\n# 3096 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr FSDeleteFork(const FSRef *ref, UniCharCount forkNameLength, const UniChar *forkName) ;\n# 3110 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr PBDeleteForkSync(FSForkIOParam * paramBlock) ;\n# 3124 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void PBDeleteForkAsync(FSForkIOParam * paramBlock) ;\n# 3152 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr FSIterateForks(const FSRef *ref, CatPositionRec *forkIterator, HFSUniStr255 *forkName, SInt64 *forkSize, UInt64 *forkPhysicalSize) ;\n# 3166 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr PBIterateForksSync(FSForkIOParam * paramBlock) ;\n# 3180 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void PBIterateForksAsync(FSForkIOParam * paramBlock) ;\n# 3209 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr FSOpenFork(const FSRef *ref, UniCharCount forkNameLength, const UniChar *forkName, SInt8 permissions, FSIORefNum *forkRefNum) ;\n# 3223 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr PBOpenForkSync(FSForkIOParam * paramBlock) ;\n# 3237 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void PBOpenForkAsync(FSForkIOParam * paramBlock) ;\n# 3265 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr FSReadFork(FSIORefNum forkRefNum, UInt16 positionMode, SInt64 positionOffset, ByteCount requestCount, void *buffer, ByteCount *actualCount) ;\n# 3279 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr PBReadForkSync(FSForkIOParam * paramBlock) ;\n# 3293 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void PBReadForkAsync(FSForkIOParam * paramBlock) ;\n# 3321 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr FSWriteFork(FSIORefNum forkRefNum, UInt16 positionMode, SInt64 positionOffset, ByteCount requestCount, const void *buffer, ByteCount *actualCount) ;\n# 3335 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr PBWriteForkSync(FSForkIOParam * paramBlock) ;\n# 3349 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void PBWriteForkAsync(FSForkIOParam * paramBlock) ;\n# 3373 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr FSGetForkPosition(FSIORefNum forkRefNum, SInt64 *position) ;\n# 3387 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr PBGetForkPositionSync(FSForkIOParam * paramBlock) ;\n# 3401 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void PBGetForkPositionAsync(FSForkIOParam * paramBlock) ;\n# 3426 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr FSSetForkPosition(FSIORefNum forkRefNum, UInt16 positionMode, SInt64 positionOffset) ;\n# 3440 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr PBSetForkPositionSync(FSForkIOParam * paramBlock) ;\n# 3454 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void PBSetForkPositionAsync(FSForkIOParam * paramBlock) ;\n# 3477 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr FSGetForkSize(FSIORefNum forkRefNum, SInt64 *forkSize) ;\n# 3491 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr PBGetForkSizeSync(FSForkIOParam * paramBlock) ;\n# 3505 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void PBGetForkSizeAsync(FSForkIOParam * paramBlock) ;\n# 3530 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr FSSetForkSize(FSIORefNum forkRefNum, UInt16 positionMode, SInt64 positionOffset) ;\n# 3544 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr PBSetForkSizeSync(FSForkIOParam * paramBlock) ;\n# 3558 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void PBSetForkSizeAsync(FSForkIOParam * paramBlock) ;\n# 3598 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr FSAllocateFork(FSIORefNum forkRefNum, FSAllocationFlags flags, UInt16 positionMode, SInt64 positionOffset, UInt64 requestCount, UInt64 *actualCount) ;\n# 3612 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr PBAllocateForkSync(FSForkIOParam * paramBlock) ;\n# 3626 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void PBAllocateForkAsync(FSForkIOParam * paramBlock) ;\n# 3649 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr FSFlushFork(FSIORefNum forkRefNum) ;\n# 3663 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr PBFlushForkSync(FSForkIOParam * paramBlock) ;\n# 3677 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void PBFlushForkAsync(FSForkIOParam * paramBlock) ;\n# 3700 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr FSCloseFork(FSIORefNum forkRefNum) ;\n# 3714 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr PBCloseForkSync(FSForkIOParam * paramBlock) ;\n# 3728 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void PBCloseForkAsync(FSForkIOParam * paramBlock) ;\n# 3766 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr FSGetForkCBInfo(FSIORefNum desiredRefNum, FSVolumeRefNum volume, short *iterator, FSIORefNum *actualRefNum, FSForkInfo *forkInfo, FSRef *ref, HFSUniStr255 *outForkName) ;\n# 3780 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr PBGetForkCBInfoSync(FSForkCBInfoParam * paramBlock) ;\n# 3794 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void PBGetForkCBInfoAsync(FSForkCBInfoParam * paramBlock) ;\n# 3820 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSLockRange(FSIORefNum forkRefNum, UInt16 positionMode, SInt64 positionOffset, UInt64 requestCount, UInt64 *rangeStart) ;\n# 3834 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus PBXLockRangeSync(FSRangeLockParamPtr paramBlock) ;\n# 3848 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus PBXLockRangeAsync(FSRangeLockParamPtr paramBlock) ;\n# 3874 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSUnlockRange(FSIORefNum forkRefNum, UInt16 positionMode, SInt64 positionOffset, UInt64 requestCount, UInt64 *rangeStart) ;\n# 3888 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus PBXUnlockRangeSync(FSRangeLockParamPtr paramBlock) ;\n# 3902 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus PBXUnlockRangeAsync(FSRangeLockParamPtr paramBlock) ;\n# 3933 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr FSGetVolumeInfo(FSVolumeRefNum volume, ItemCount volumeIndex, FSVolumeRefNum *actualVolume, FSVolumeInfoBitmap whichInfo, FSVolumeInfo *info, HFSUniStr255 *volumeName, FSRef *rootDirectory) ;\n# 3947 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr PBGetVolumeInfoSync(FSVolumeInfoParam * paramBlock) ;\n# 3961 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void PBGetVolumeInfoAsync(FSVolumeInfoParam * paramBlock) ;\n# 3988 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr FSSetVolumeInfo(FSVolumeRefNum volume, FSVolumeInfoBitmap whichInfo, const FSVolumeInfo *info) ;\n# 4002 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr PBSetVolumeInfoSync(FSVolumeInfoParam * paramBlock) ;\n# 4016 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void PBSetVolumeInfoAsync(FSVolumeInfoParam * paramBlock) ;\n# 4034 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr FSGetDataForkName(HFSUniStr255 * dataForkName) ;\n# 4053 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSErr FSGetResourceForkName(HFSUniStr255 * resourceForkName) ;\n# 4083 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSRefMakePath(const FSRef *ref, UInt8 *path, UInt32 pathBufferSize) ;\n# 4112 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSPathMakeRef(const UInt8 *path, FSRef *ref, Boolean *isDirectory) ;\n# 4122 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nenum {\n  kFSPathMakeRefDefaultOptions = 0,\n  kFSPathMakeRefDoNotFollowLeafSymlink = 0x01\n};\n# 4157 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSPathMakeRefWithOptions(const UInt8 *path, OptionBits options, FSRef *ref, Boolean *isDirectory) ;\n# 4181 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern Boolean FSIsFSRefValid(const FSRef * ref) ;\n# 4194 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\ntypedef UInt32 FNMessage;\nenum {\n  kFNDirectoryModifiedMessage = 1\n};\n# 4235 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FNNotify(const FSRef *ref, FNMessage message, OptionBits flags) ;\n# 4264 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FNNotifyByPath(const UInt8 *path, FNMessage message, OptionBits flags) ;\n# 4292 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FNNotifyAll(FNMessage message, OptionBits flags) ;\n# 4307 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\ntypedef struct OpaqueFNSubscriptionRef* FNSubscriptionRef;\n\n\n\n\n\nenum {\n\n\n\n\n\n\n\n  kFNNoImplicitAllSubscription = (1 << 0),\n\n\n\n\n\n\n\n  kFNNotifyInBackground = (1 << 1)\n};\n# 4354 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\ntypedef void ( * FNSubscriptionProcPtr)(FNMessage message, OptionBits flags, void *refcon, FNSubscriptionRef subscription);\ntypedef FNSubscriptionProcPtr FNSubscriptionUPP;\n# 4364 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern FNSubscriptionUPP\nNewFNSubscriptionUPP(FNSubscriptionProcPtr userRoutine) ;\n# 4375 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void\nDisposeFNSubscriptionUPP(FNSubscriptionUPP userUPP) ;\n# 4386 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void\nInvokeFNSubscriptionUPP(\n  FNMessage message,\n  OptionBits flags,\n  void * refcon,\n  FNSubscriptionRef subscription,\n  FNSubscriptionUPP userUPP) ;\n# 4438 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FNSubscribe(const FSRef *directoryRef, FNSubscriptionUPP callback, void *refcon, OptionBits flags, FNSubscriptionRef *subscription) ;\n# 4473 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FNSubscribeByPath(const UInt8 *directoryPath, FNSubscriptionUPP callback, void *refcon, OptionBits flags, FNSubscriptionRef *subscription) ;\n# 4496 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FNUnsubscribe(FNSubscriptionRef subscription) ;\n# 4526 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FNGetDirectoryForSubscription(FNSubscriptionRef subscription, FSRef *ref) ;\n\n\n\n\nenum {\n  kAsyncMountInProgress = 1,\n  kAsyncMountComplete = 2,\n  kAsyncUnmountInProgress = 3,\n  kAsyncUnmountComplete = 4,\n  kAsyncEjectInProgress = 5,\n  kAsyncEjectComplete = 6\n};\n\n\ntypedef UInt32 FSMountStatus;\ntypedef UInt32 FSEjectStatus;\ntypedef UInt32 FSUnmountStatus;\ntypedef struct OpaqueFSVolumeOperation* FSVolumeOperation;\ntypedef void ( * FSVolumeMountProcPtr)(FSVolumeOperation volumeOp, void *clientData, OSStatus err, FSVolumeRefNum mountedVolumeRefNum);\ntypedef void ( * FSVolumeUnmountProcPtr)(FSVolumeOperation volumeOp, void *clientData, OSStatus err, FSVolumeRefNum volumeRefNum, pid_t dissenter);\ntypedef void ( * FSVolumeEjectProcPtr)(FSVolumeOperation volumeOp, void *clientData, OSStatus err, FSVolumeRefNum volumeRefNum, pid_t dissenter);\ntypedef FSVolumeMountProcPtr FSVolumeMountUPP;\ntypedef FSVolumeUnmountProcPtr FSVolumeUnmountUPP;\ntypedef FSVolumeEjectProcPtr FSVolumeEjectUPP;\n# 4559 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern FSVolumeMountUPP\nNewFSVolumeMountUPP(FSVolumeMountProcPtr userRoutine) ;\n# 4570 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern FSVolumeUnmountUPP\nNewFSVolumeUnmountUPP(FSVolumeUnmountProcPtr userRoutine) ;\n# 4581 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern FSVolumeEjectUPP\nNewFSVolumeEjectUPP(FSVolumeEjectProcPtr userRoutine) ;\n# 4592 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void\nDisposeFSVolumeMountUPP(FSVolumeMountUPP userUPP) ;\n# 4603 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void\nDisposeFSVolumeUnmountUPP(FSVolumeUnmountUPP userUPP) ;\n# 4614 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void\nDisposeFSVolumeEjectUPP(FSVolumeEjectUPP userUPP) ;\n# 4625 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void\nInvokeFSVolumeMountUPP(\n  FSVolumeOperation volumeOp,\n  void * clientData,\n  OSStatus err,\n  FSVolumeRefNum mountedVolumeRefNum,\n  FSVolumeMountUPP userUPP) ;\n# 4641 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void\nInvokeFSVolumeUnmountUPP(\n  FSVolumeOperation volumeOp,\n  void * clientData,\n  OSStatus err,\n  FSVolumeRefNum volumeRefNum,\n  pid_t dissenter,\n  FSVolumeUnmountUPP userUPP) ;\n# 4658 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern void\nInvokeFSVolumeEjectUPP(\n  FSVolumeOperation volumeOp,\n  void * clientData,\n  OSStatus err,\n  FSVolumeRefNum volumeRefNum,\n  pid_t dissenter,\n  FSVolumeEjectUPP userUPP) ;\n# 4697 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nenum {\n\n\n\n\n\n  kFSMountServerMarkDoNotDisplay = (1 << 0),\n\n\n\n\n\n  kFSMountServerMountOnMountDir = (1 << 2)\n};\n# 4719 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nenum {\n\n\n\n\n\n\n  kFSMountServerMountWithoutNotification = (1 << 1)\n};\n\n\n\n\n\n\nenum {\n# 4744 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\n  kFSEjectVolumeForceEject = (1 << 0)\n};\n\n\n\n\n\n\nenum {\n# 4762 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\n  kFSUnmountVolumeForceUnmount = (1 << 0)\n};\n# 4787 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSCreateVolumeOperation(FSVolumeOperation * volumeOp) ;\n# 4810 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSDisposeVolumeOperation(FSVolumeOperation volumeOp) ;\n# 4843 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSMountLocalVolumeSync(CFStringRef diskID, CFURLRef mountDir, FSVolumeRefNum *mountedVolumeRefNum, OptionBits flags) ;\n# 4891 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSMountLocalVolumeAsync(CFStringRef diskID, CFURLRef mountDir, FSVolumeOperation volumeOp, void *clientData, OptionBits flags, FSVolumeMountUPP callback, CFRunLoopRef runloop, CFStringRef runloopMode) ;\n# 4933 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSMountServerVolumeSync(CFURLRef url, CFURLRef mountDir, CFStringRef user, CFStringRef password, FSVolumeRefNum *mountedVolumeRefNum, OptionBits flags) ;\n# 4990 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSMountServerVolumeAsync(CFURLRef url, CFURLRef mountDir, CFStringRef user, CFStringRef password, FSVolumeOperation volumeOp, void *clientData, OptionBits flags, FSVolumeMountUPP callback, CFRunLoopRef runloop, CFStringRef runloopMode) ;\n# 5033 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSGetAsyncMountStatus(FSVolumeOperation volumeOp, FSMountStatus *status, OSStatus *volumeOpStatus, FSVolumeRefNum *mountedVolumeRefNum, void **clientData) ;\n# 5066 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSUnmountVolumeSync(FSVolumeRefNum vRefNum, OptionBits flags, pid_t *dissenter) ;\n# 5110 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSUnmountVolumeAsync(FSVolumeRefNum vRefNum, OptionBits flags, FSVolumeOperation volumeOp, void *clientData, FSVolumeUnmountUPP callback, CFRunLoopRef runloop, CFStringRef runloopMode) ;\n# 5152 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSGetAsyncUnmountStatus(FSVolumeOperation volumeOp, FSUnmountStatus *status, OSStatus *volumeOpStatus, FSVolumeRefNum *volumeRefNum, pid_t *dissenter, void **clientData) ;\n# 5176 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSCancelVolumeOperation(FSVolumeOperation volumeOp) ;\n# 5209 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSEjectVolumeSync(FSVolumeRefNum vRefNum, OptionBits flags, pid_t *dissenter) ;\n# 5253 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSEjectVolumeAsync(FSVolumeRefNum vRefNum, OptionBits flags, FSVolumeOperation volumeOp, void *clientData, FSVolumeEjectUPP callback, CFRunLoopRef runloop, CFStringRef runloopMode) ;\n# 5295 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSGetAsyncEjectStatus(FSVolumeOperation volumeOp, FSEjectStatus *status, OSStatus *volumeOpStatus, FSVolumeRefNum *volumeRefNum, pid_t *dissenter, void **clientData) ;\n# 5322 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSCopyDiskIDForVolume(FSVolumeRefNum vRefNum, CFStringRef *diskID) ;\n# 5348 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSCopyURLForVolume(FSVolumeRefNum vRefNum, CFURLRef *url) ;\n# 5373 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSGetVolumeForDiskID(CFStringRef diskID, FSVolumeRefNum *vRefNum) ;\n# 5400 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSCopyDADiskForVolume(FSVolumeRefNum vRefNum, DADiskRef *disk) ;\n# 5426 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSGetVolumeForDADisk(DADiskRef disk, FSVolumeRefNum *vRefNum) ;\n\n\n\n\ntypedef struct __FSFileOperation* FSFileOperationRef;\ntypedef UInt32 FSFileOperationStage;\n# 5441 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nstruct FSFileOperationClientContext {\n\n\n\n\n\n\n  CFIndex version;\n\n\n\n\n\n  void * info;\n# 5463 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\n  CFAllocatorRetainCallBack retain;\n\n\n\n\n\n  CFAllocatorReleaseCallBack release;\n\n\n\n\n\n\n\n  CFAllocatorCopyDescriptionCallBack copyDescription;\n};\ntypedef struct FSFileOperationClientContext FSFileOperationClientContext;\n# 5516 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\ntypedef void ( * FSFileOperationStatusProcPtr)(FSFileOperationRef fileOp, const FSRef *currentItem, FSFileOperationStage stage, OSStatus error, CFDictionaryRef statusDictionary, void *info);\n# 5555 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\ntypedef void ( * FSPathFileOperationStatusProcPtr)(FSFileOperationRef fileOp, const char *currentItem, FSFileOperationStage stage, OSStatus error, CFDictionaryRef statusDictionary, void *info);\n# 5564 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nenum {\n\n\n\n\n\n  kFSFileOperationDefaultOptions = 0,\n\n\n\n\n\n  kFSFileOperationOverwrite = 0x01,\n\n\n\n\n\n  kFSFileOperationSkipSourcePermissionErrors = 0x02,\n\n\n\n\n\n  kFSFileOperationDoNotMoveAcrossVolumes = 0x04,\n\n\n\n\n\n\n  kFSFileOperationSkipPreflight = 0x08\n};\n# 5607 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nenum {\n\n\n\n\n  kFSOperationStageUndefined = 0,\n\n\n\n\n\n  kFSOperationStagePreflighting = 1,\n\n\n\n\n  kFSOperationStageRunning = 2,\n\n\n\n\n  kFSOperationStageComplete = 3\n};\n# 5647 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern const CFStringRef kFSOperationTotalBytesKey ;\n# 5663 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern const CFStringRef kFSOperationBytesCompleteKey ;\n# 5679 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern const CFStringRef kFSOperationBytesRemainingKey ;\n# 5695 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern const CFStringRef kFSOperationTotalObjectsKey ;\n# 5711 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern const CFStringRef kFSOperationObjectsCompleteKey ;\n# 5727 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern const CFStringRef kFSOperationObjectsRemainingKey ;\n# 5745 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern const CFStringRef kFSOperationTotalUserVisibleObjectsKey ;\n# 5763 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern const CFStringRef kFSOperationUserVisibleObjectsCompleteKey ;\n# 5781 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern const CFStringRef kFSOperationUserVisibleObjectsRemainingKey ;\n# 5795 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern const CFStringRef kFSOperationThroughputKey ;\n# 5831 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSCopyObjectSync(const FSRef *source, const FSRef *destDir, CFStringRef destName, FSRef *target, OptionBits options) ;\n# 5874 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSMoveObjectSync(const FSRef *source, const FSRef *destDir, CFStringRef destName, FSRef *target, OptionBits options) ;\n# 5908 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSMoveObjectToTrashSync(const FSRef *source, FSRef *target, OptionBits options) ;\n# 5947 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSPathCopyObjectSync(const char *sourcePath, const char *destDirPath, CFStringRef destName, char **targetPath, OptionBits options) ;\n# 5991 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSPathMoveObjectSync(const char *sourcePath, const char *destDirPath, CFStringRef destName, char **targetPath, OptionBits options) ;\n# 6026 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSPathMoveObjectToTrashSync(const char *sourcePath, char **targetPath, OptionBits options) ;\n# 6046 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern CFTypeID FSFileOperationGetTypeID(void) ;\n# 6073 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern FSFileOperationRef FSFileOperationCreate(CFAllocatorRef alloc) ;\n# 6105 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSFileOperationScheduleWithRunLoop(FSFileOperationRef fileOp, CFRunLoopRef runLoop, CFStringRef runLoopMode) ;\n# 6136 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSFileOperationUnscheduleFromRunLoop(FSFileOperationRef fileOp, CFRunLoopRef runLoop, CFStringRef runLoopMode) ;\n# 6189 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSCopyObjectAsync(FSFileOperationRef fileOp, const FSRef *source, const FSRef *destDir, CFStringRef destName, OptionBits flags, FSFileOperationStatusProcPtr callback, CFTimeInterval statusChangeInterval, FSFileOperationClientContext *clientContext) ;\n# 6245 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSMoveObjectAsync(FSFileOperationRef fileOp, const FSRef *source, const FSRef *destDir, CFStringRef destName, OptionBits flags, FSFileOperationStatusProcPtr callback, CFTimeInterval statusChangeInterval, FSFileOperationClientContext *clientContext) ;\n# 6294 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSMoveObjectToTrashAsync(FSFileOperationRef fileOp, const FSRef *source, OptionBits flags, FSFileOperationStatusProcPtr callback, CFTimeInterval statusChangeInterval, FSFileOperationClientContext *clientContext) ;\n# 6347 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSPathCopyObjectAsync(FSFileOperationRef fileOp, const char *sourcePath, const char *destDirPath, CFStringRef destName, OptionBits flags, FSPathFileOperationStatusProcPtr callback, CFTimeInterval statusChangeInterval, FSFileOperationClientContext *clientContext) ;\n# 6403 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSPathMoveObjectAsync(FSFileOperationRef fileOp, const char *sourcePath, const char *destDirPath, CFStringRef destName, OptionBits flags, FSPathFileOperationStatusProcPtr callback, CFTimeInterval statusChangeInterval, FSFileOperationClientContext *clientContext) ;\n# 6453 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSPathMoveObjectToTrashAsync(FSFileOperationRef fileOp, const char *sourcePath, OptionBits flags, FSPathFileOperationStatusProcPtr callback, CFTimeInterval statusChangeInterval, FSFileOperationClientContext *clientContext) ;\n# 6476 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSFileOperationCancel(FSFileOperationRef fileOp) ;\n# 6520 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSFileOperationCopyStatus(FSFileOperationRef fileOp, FSRef *currentItem, FSFileOperationStage *stage, OSStatus *error, CFDictionaryRef *statusDictionary, void **info) ;\n# 6565 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSPathFileOperationCopyStatus(FSFileOperationRef fileOp, char **currentItem, FSFileOperationStage *stage, OSStatus *error, CFDictionaryRef *statusDictionary, void **info) ;\n# 6594 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern CFStringRef FSCreateStringFromHFSUniStr(CFAllocatorRef alloc, const HFSUniStr255 *uniStr) ;\n# 6620 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSGetHFSUniStrFromString(CFStringRef theString, HFSUniStr255 *uniStr) ;\n# 6642 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern CFTypeID FSFileSecurityGetTypeID(void) ;\n# 6669 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern FSFileSecurityRef FSFileSecurityCreate(CFAllocatorRef alloc) ;\n# 6683 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern FSFileSecurityRef FSFileSecurityCreateWithFSPermissionInfo(CFAllocatorRef alloc, const FSPermissionInfo *permissions) ;\n# 6697 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern FSFileSecurityRef FSFileSecurityRefCreateCopy(CFAllocatorRef alloc, FSFileSecurityRef fileSec) ;\n# 6728 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSFileSecurityGetOwnerUUID(FSFileSecurityRef fileSec, CFUUIDBytes *owner) ;\n# 6755 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSFileSecuritySetOwnerUUID(FSFileSecurityRef fileSec, const CFUUIDBytes *owner) ;\n# 6784 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSFileSecurityGetGroupUUID(FSFileSecurityRef fileSec, CFUUIDBytes *group) ;\n# 6811 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSFileSecuritySetGroupUUID(FSFileSecurityRef fileSec, const CFUUIDBytes *group) ;\n# 6842 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSFileSecurityCopyAccessControlList(FSFileSecurityRef fileSec, acl_t *accessControlList) ;\n# 6872 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSFileSecuritySetAccessControlList(FSFileSecurityRef fileSec, acl_t accessControlList) ;\n# 6901 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSFileSecurityGetOwner(FSFileSecurityRef fileSec, UInt32 *owner) ;\n# 6927 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSFileSecuritySetOwner(FSFileSecurityRef fileSec, UInt32 owner) ;\n# 6955 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSFileSecurityGetGroup(FSFileSecurityRef fileSec, UInt32 *group) ;\n# 6981 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSFileSecuritySetGroup(FSFileSecurityRef fileSec, UInt32 group) ;\n# 7009 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSFileSecurityGetMode(FSFileSecurityRef fileSec, UInt16 *mode) ;\n# 7035 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSFileSecuritySetMode(FSFileSecurityRef fileSec, UInt16 mode) ;\n\n\n\nenum {\n\n  pleaseCacheBit = 4,\n  pleaseCacheMask = 0x0010,\n  noCacheBit = 5,\n  noCacheMask = 0x0020,\n  rdVerifyBit = 6,\n  rdVerifyMask = 0x0040,\n  rdVerify = 64,\n  forceReadBit = 6,\n  forceReadMask = 0x0040,\n  newLineBit = 7,\n  newLineMask = 0x0080,\n  newLineCharMask = 0xFF00\n};\n\n\n\nenum {\n  kOwnerID2Name = 1,\n  kGroupID2Name = 2,\n  kOwnerName2ID = 3,\n  kGroupName2ID = 4,\n  kReturnNextUser = 1,\n  kReturnNextGroup = 2,\n  kReturnNextUG = 3\n};\n\n\nenum {\n  kVCBFlagsIdleFlushBit = 3,\n  kVCBFlagsIdleFlushMask = 0x0008,\n  kVCBFlagsHFSPlusAPIsBit = 4,\n  kVCBFlagsHFSPlusAPIsMask = 0x0010,\n  kVCBFlagsHardwareGoneBit = 5,\n  kVCBFlagsHardwareGoneMask = 0x0020,\n  kVCBFlagsVolumeDirtyBit = 15,\n  kVCBFlagsVolumeDirtyMask = 0x8000\n};\n\n\nenum {\n  kioVAtrbDefaultVolumeBit = 5,\n  kioVAtrbDefaultVolumeMask = 0x0020,\n  kioVAtrbFilesOpenBit = 6,\n  kioVAtrbFilesOpenMask = 0x0040,\n  kioVAtrbHardwareLockedBit = 7,\n  kioVAtrbHardwareLockedMask = 0x0080,\n  kioVAtrbSoftwareLockedBit = 15,\n  kioVAtrbSoftwareLockedMask = 0x8000\n};\n\n\nenum {\n\n  kioFlAttribLockedBit = 0,\n  kioFlAttribLockedMask = 0x01,\n  kioFlAttribResOpenBit = 2,\n  kioFlAttribResOpenMask = 0x04,\n  kioFlAttribDataOpenBit = 3,\n  kioFlAttribDataOpenMask = 0x08,\n  kioFlAttribDirBit = 4,\n  kioFlAttribDirMask = 0x10,\n  ioDirFlg = 4,\n  ioDirMask = 0x10,\n  kioFlAttribCopyProtBit = 6,\n  kioFlAttribCopyProtMask = 0x40,\n  kioFlAttribFileOpenBit = 7,\n  kioFlAttribFileOpenMask = 0x80,\n  kioFlAttribInSharedBit = 2,\n  kioFlAttribInSharedMask = 0x04,\n  kioFlAttribMountedBit = 3,\n  kioFlAttribMountedMask = 0x08,\n  kioFlAttribSharePointBit = 5,\n  kioFlAttribSharePointMask = 0x20\n};\n\n\n\n\n\nenum {\n  kioFCBWriteBit = 8,\n  kioFCBWriteMask = 0x0100,\n  kioFCBResourceBit = 9,\n  kioFCBResourceMask = 0x0200,\n  kioFCBWriteLockedBit = 10,\n  kioFCBWriteLockedMask = 0x0400,\n  kioFCBLargeFileBit = 11,\n  kioFCBLargeFileMask = 0x0800,\n  kioFCBSharedWriteBit = 12,\n  kioFCBSharedWriteMask = 0x1000,\n  kioFCBFileLockedBit = 13,\n  kioFCBFileLockedMask = 0x2000,\n  kioFCBOwnClumpBit = 14,\n  kioFCBOwnClumpMask = 0x4000,\n  kioFCBModifiedBit = 15,\n  kioFCBModifiedMask = 0x8000\n};\n\n\n\n\nenum {\n  kForkInfoFlagsWriteBit = (kioFCBWriteBit - 8),\n  kForkInfoFlagsWriteMask = (1 << kForkInfoFlagsWriteBit),\n  kForkInfoFlagsResourceBit = (kioFCBResourceBit - 8),\n  kForkInfoFlagsResourceMask = (1 << kForkInfoFlagsResourceBit),\n  kForkInfoFlagsWriteLockedBit = (kioFCBWriteLockedBit - 8),\n  kForkInfoFlagsWriteLockedMask = (1 << kForkInfoFlagsWriteLockedBit),\n  kForkInfoFlagsLargeFileBit = (kioFCBLargeFileBit - 8),\n  kForkInfoFlagsLargeFileMask = (1 << kForkInfoFlagsLargeFileBit),\n  kForkInfoFlagsSharedWriteBit = (kioFCBSharedWriteBit - 8),\n  kForkInfoFlagsSharedWriteMask = (1 << kForkInfoFlagsSharedWriteBit),\n  kForkInfoFlagsFileLockedBit = (kioFCBFileLockedBit - 8),\n  kForkInfoFlagsFileLockedMask = (1 << kForkInfoFlagsFileLockedBit),\n  kForkInfoFlagsOwnClumpBit = (kioFCBOwnClumpBit - 8),\n  kForkInfoFlagsOwnClumpMask = (1 << kForkInfoFlagsOwnClumpBit),\n  kForkInfoFlagsModifiedBit = (kioFCBModifiedBit - 8),\n  kForkInfoFlagsModifiedMask = (1 << kForkInfoFlagsModifiedBit)\n};\n\n\n\nenum {\n  kioACUserNoSeeFolderBit = 0,\n  kioACUserNoSeeFolderMask = 0x01,\n  kioACUserNoSeeFilesBit = 1,\n  kioACUserNoSeeFilesMask = 0x02,\n  kioACUserNoMakeChangesBit = 2,\n  kioACUserNoMakeChangesMask = 0x04,\n  kioACUserNotOwnerBit = 7,\n  kioACUserNotOwnerMask = 0x80\n};\n\n\nenum {\n  kioACAccessOwnerBit = 31,\n  kioACAccessOwnerMask = (int)0x80000000,\n  kioACAccessBlankAccessBit = 28,\n  kioACAccessBlankAccessMask = 0x10000000,\n  kioACAccessUserWriteBit = 26,\n  kioACAccessUserWriteMask = 0x04000000,\n  kioACAccessUserReadBit = 25,\n  kioACAccessUserReadMask = 0x02000000,\n  kioACAccessUserSearchBit = 24,\n  kioACAccessUserSearchMask = 0x01000000,\n  kioACAccessEveryoneWriteBit = 18,\n  kioACAccessEveryoneWriteMask = 0x00040000,\n  kioACAccessEveryoneReadBit = 17,\n  kioACAccessEveryoneReadMask = 0x00020000,\n  kioACAccessEveryoneSearchBit = 16,\n  kioACAccessEveryoneSearchMask = 0x00010000,\n  kioACAccessGroupWriteBit = 10,\n  kioACAccessGroupWriteMask = 0x00000400,\n  kioACAccessGroupReadBit = 9,\n  kioACAccessGroupReadMask = 0x00000200,\n  kioACAccessGroupSearchBit = 8,\n  kioACAccessGroupSearchMask = 0x00000100,\n  kioACAccessOwnerWriteBit = 2,\n  kioACAccessOwnerWriteMask = 0x00000004,\n  kioACAccessOwnerReadBit = 1,\n  kioACAccessOwnerReadMask = 0x00000002,\n  kioACAccessOwnerSearchBit = 0,\n  kioACAccessOwnerSearchMask = 0x00000001,\n  kfullPrivileges = 0x00070007,\n  kownerPrivileges = 0x00000007\n};\n# 7236 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSGetVolumeParms(FSVolumeRefNum volume, GetVolParmsInfoBuffer *buffer, ByteCount bufferSize) ;\n# 7263 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSGetVolumeMountInfoSize(FSVolumeRefNum volume, ByteCount *size) ;\n# 7297 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSGetVolumeMountInfo(FSVolumeRefNum volume, BytePtr buffer, ByteCount bufferSize, ByteCount *actualSize) ;\n# 7323 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSVolumeMount(BytePtr buffer, FSVolumeRefNum *mountedVolume) ;\n# 7338 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSFlushVolume(FSVolumeRefNum vRefNum) ;\n# 7352 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus PBFlushVolumeSync(FSRefParamPtr paramBlock) ;\n# 7366 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus PBFlushVolumeAsync(FSRefParamPtr paramBlock) ;\n# 7393 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus PBFSCopyFileSync(FSRefParamPtr paramBlock) ;\n# 7407 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus PBFSCopyFileAsync(FSRefParamPtr paramBlock) ;\n# 7437 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus FSResolveNodeID(FSVolumeRefNum volume, UInt32 nodeID, FSRefPtr newRef) ;\n# 7458 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus PBFSResolveNodeIDSync(FSRefParamPtr paramBlock) ;\n# 7472 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\nextern OSStatus PBFSResolveNodeIDAsync(FSRefParamPtr paramBlock) ;\n# 10493 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h\" 3\n#pragma pack(pop)\n# 33 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 1 3\n# 43 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\ntypedef SInt16 ResID;\ntypedef SInt16 ResAttributes;\ntypedef SInt16 ResFileAttributes;\ntypedef SInt16 ResourceCount;\ntypedef SInt16 ResourceIndex;\ntypedef FSIORefNum ResFileRefNum;\n\nenum {\n  resSysRefBit = 7,\n  resSysHeapBit = 6,\n  resPurgeableBit = 5,\n  resLockedBit = 4,\n  resProtectedBit = 3,\n  resPreloadBit = 2,\n  resChangedBit = 1\n};\n\n\nenum {\n  resSysHeap = 64,\n  resPurgeable = 32,\n  resLocked = 16,\n  resProtected = 8,\n  resPreload = 4,\n  resChanged = 2\n};\n\n\nenum {\n  mapReadOnlyBit = 7,\n  mapCompactBit = 6,\n  mapChangedBit = 5\n};\n\n\nenum {\n  mapReadOnly = 128,\n  mapCompact = 64,\n  mapChanged = 32\n};\n\n\nenum {\n  kResFileNotOpened = -1,\n  kSystemResFile = 0\n};\n\n\ntypedef void ( * ResErrProcPtr)(OSErr thErr);\ntypedef ResErrProcPtr ResErrUPP;\n# 101 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern ResErrUPP\nNewResErrUPP(ResErrProcPtr userRoutine) ;\n# 112 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern void\nDisposeResErrUPP(ResErrUPP userUPP) ;\n# 123 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern void\nInvokeResErrUPP(\n  OSErr thErr,\n  ResErrUPP userUPP) ;\n# 141 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\ntypedef OSErr ( * ResourceEndianFilterPtr)(Handle theResource, Boolean currentlyNativeEndian);\n# 153 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern void\nCloseResFile(ResFileRefNum refNum) ;\n# 168 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern OSErr\nResError(void) ;\n# 183 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern ResFileRefNum\nCurResFile(void) ;\n# 198 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern ResFileRefNum\nHomeResFile(Handle theResource) ;\n# 213 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern void\nUseResFile(ResFileRefNum refNum) ;\n# 228 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern ResourceCount\nCountTypes(void) ;\n# 243 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern ResourceCount\nCount1Types(void) ;\n# 258 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern void\nGetIndType(\n  ResType * theType,\n  ResourceIndex itemIndex) ;\n# 275 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern void\nGet1IndType(\n  ResType * theType,\n  ResourceIndex itemIndex) ;\n# 292 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern void\nSetResLoad(Boolean load) ;\n# 307 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern ResourceCount\nCountResources(ResType theType) ;\n# 322 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern ResourceCount\nCount1Resources(ResType theType) ;\n# 337 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern Handle\nGetIndResource(\n  ResType theType,\n  ResourceIndex itemIndex) ;\n# 354 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern Handle\nGet1IndResource(\n  ResType theType,\n  ResourceIndex itemIndex) ;\n# 371 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern Handle\nGetResource(\n  ResType theType,\n  ResID theID) ;\n# 388 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern Handle\nGet1Resource(\n  ResType theType,\n  ResID theID) ;\n# 405 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern Handle\nGetNamedResource(\n  ResType theType,\n  ConstStr255Param name) ;\n# 422 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern Handle\nGet1NamedResource(\n  ResType theType,\n  ConstStr255Param name) ;\n# 442 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern void\nLoadResource(Handle theResource) ;\n# 457 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern void\nReleaseResource(Handle theResource) ;\n# 472 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern void\nDetachResource(Handle theResource) ;\n# 487 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern ResID\nUniqueID(ResType theType) ;\n# 502 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern ResID\nUnique1ID(ResType theType) ;\n# 517 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern ResAttributes\nGetResAttrs(Handle theResource) ;\n# 532 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern void\nGetResInfo(\n  Handle theResource,\n  ResID * theID,\n  ResType * theType,\n  Str255 name) ;\n# 551 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern void\nSetResInfo(\n  Handle theResource,\n  ResID theID,\n  ConstStr255Param name) ;\n# 569 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern void\nAddResource(\n  Handle theData,\n  ResType theType,\n  ResID theID,\n  ConstStr255Param name) ;\n# 588 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern long\nGetResourceSizeOnDisk(Handle theResource) ;\n# 603 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern long\nGetMaxResourceSize(Handle theResource) ;\n# 618 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern void\nSetResAttrs(\n  Handle theResource,\n  ResAttributes attrs) ;\n# 635 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern void\nChangedResource(Handle theResource) ;\n# 650 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern void\nRemoveResource(Handle theResource) ;\n# 665 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern void\nUpdateResFile(ResFileRefNum refNum) ;\n# 680 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern void\nWriteResource(Handle theResource) ;\n# 695 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern void\nSetResPurge(Boolean install) ;\n# 710 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern ResFileAttributes\nGetResFileAttrs(ResFileRefNum refNum) ;\n# 725 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern void\nSetResFileAttrs(\n  ResFileRefNum refNum,\n  ResFileAttributes attrs) ;\n# 742 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern void\nReadPartialResource(\n  Handle theResource,\n  long offset,\n  void * buffer,\n  long count) ;\n# 761 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern void\nWritePartialResource(\n  Handle theResource,\n  long offset,\n  const void * buffer,\n  long count) ;\n# 780 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern void\nSetResourceSize(\n  Handle theResource,\n  long newSize) ;\n# 797 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern Handle\nGetNextFOND(Handle fondHandle) ;\n# 820 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\ntypedef SInt16 RsrcChainLocation;\nenum {\n  kRsrcChainBelowSystemMap = 0,\n  kRsrcChainBelowApplicationMap = 1,\n  kRsrcChainAboveApplicationMap = 2,\n  kRsrcChainAboveAllMaps = 4\n};\n# 844 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern OSErr\nInsertResourceFile(\n  ResFileRefNum refNum,\n  RsrcChainLocation where) ;\n# 865 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern OSErr\nDetachResourceFile(ResFileRefNum refNum) ;\n# 884 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern OSErr\nGetTopResourceFile(ResFileRefNum * refNum) ;\n# 905 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern OSErr\nGetNextResourceFile(\n  ResFileRefNum curRefNum,\n  ResFileRefNum * nextRefNum) ;\n# 922 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern ResFileRefNum\nFSOpenResFile(\n  const FSRef * ref,\n  SInt8 permission) ;\n# 939 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern void\nFSCreateResFile(\n  const FSRef * parentRef,\n  UniCharCount nameLength,\n  const UniChar * name,\n  FSCatalogInfoBitmap whichInfo,\n  const FSCatalogInfo * catalogInfo,\n  FSRef * newRef,\n  FSSpecPtr newSpec) ;\n# 968 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern Boolean\nFSResourceFileAlreadyOpen(\n  const FSRef * resourceFileRef,\n  Boolean * inChain,\n  ResFileRefNum * refNum) ;\n# 996 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern OSErr\nFSOpenOrphanResFile(\n  const FSRef * ref,\n  SignedByte permission,\n  ResFileRefNum * refNum) ;\n# 1054 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern OSErr\nFSCreateResourceFile(\n  const FSRef * parentRef,\n  UniCharCount nameLength,\n  const UniChar * name,\n  FSCatalogInfoBitmap whichInfo,\n  const FSCatalogInfo * catalogInfo,\n  UniCharCount forkNameLength,\n  const UniChar * forkName,\n  FSRef * newRef,\n  FSSpecPtr newSpec) ;\n# 1103 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern OSErr\nFSCreateResourceFork(\n  const FSRef * ref,\n  UniCharCount forkNameLength,\n  const UniChar * forkName,\n  UInt32 flags) ;\n# 1147 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Resources.h\" 3\nextern OSErr\nFSOpenResourceFile(\n  const FSRef * ref,\n  UniCharCount forkNameLength,\n  const UniChar * forkName,\n  SInt8 permissions,\n  ResFileRefNum * refNum) ;\n# 37 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 2 3\n# 51 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\n#pragma pack(push, 2)\n\nenum {\n  kAppleManufacturer = 'appl',\n  kComponentResourceType = 'thng',\n  kComponentAliasResourceType = 'thga'\n};\n\nenum {\n  kAnyComponentType = 0,\n  kAnyComponentSubType = 0,\n  kAnyComponentManufacturer = 0,\n  kAnyComponentFlagsMask = 0\n};\n\nenum {\n  cmpThreadSafe = 1L << 28,\n  cmpIsMissing = 1L << 29,\n  cmpWantsRegisterMessage = 1L << 31\n};\n\nenum {\n  kComponentOpenSelect = -1,\n  kComponentCloseSelect = -2,\n  kComponentCanDoSelect = -3,\n  kComponentVersionSelect = -4,\n  kComponentRegisterSelect = -5,\n  kComponentTargetSelect = -6,\n  kComponentUnregisterSelect = -7,\n  kComponentGetMPWorkFunctionSelect = -8,\n  kComponentExecuteWiredActionSelect = -9,\n  kComponentGetPublicResourceSelect = -10\n};\n\n\nenum {\n  componentDoAutoVersion = (1 << 0),\n  componentWantsUnregister = (1 << 1),\n  componentAutoVersionIncludeFlags = (1 << 2),\n  componentHasMultiplePlatforms = (1 << 3),\n  componentLoadResident = (1 << 4)\n};\n\n\n\n\nenum {\n  defaultComponentIdentical = 0,\n  defaultComponentAnyFlags = 1,\n  defaultComponentAnyManufacturer = 2,\n  defaultComponentAnySubType = 4,\n  defaultComponentAnyFlagsAnyManufacturer = (defaultComponentAnyFlags + defaultComponentAnyManufacturer),\n  defaultComponentAnyFlagsAnyManufacturerAnySubType = (defaultComponentAnyFlags + defaultComponentAnyManufacturer + defaultComponentAnySubType)\n};\n\n\nenum {\n  registerComponentGlobal = 1,\n  registerComponentNoDuplicates = 2,\n  registerComponentAfterExisting = 4,\n  registerComponentAliasesOnly = 8\n};\n\n\nstruct ComponentDescription {\n  OSType componentType;\n  OSType componentSubType;\n  OSType componentManufacturer;\n  UInt32 componentFlags;\n  UInt32 componentFlagsMask;\n};\ntypedef struct ComponentDescription ComponentDescription;\n\nstruct ResourceSpec {\n  OSType resType;\n  SInt16 resID;\n};\ntypedef struct ResourceSpec ResourceSpec;\nstruct ComponentResource {\n  ComponentDescription cd;\n  ResourceSpec component;\n  ResourceSpec componentName;\n  ResourceSpec componentInfo;\n  ResourceSpec componentIcon;\n};\ntypedef struct ComponentResource ComponentResource;\ntypedef ComponentResource * ComponentResourcePtr;\ntypedef ComponentResourcePtr * ComponentResourceHandle;\nstruct ComponentPlatformInfo {\n  SInt32 componentFlags;\n  ResourceSpec component;\n  SInt16 platformType;\n};\ntypedef struct ComponentPlatformInfo ComponentPlatformInfo;\nstruct ComponentResourceExtension {\n  SInt32 componentVersion;\n  SInt32 componentRegisterFlags;\n  SInt16 componentIconFamily;\n};\ntypedef struct ComponentResourceExtension ComponentResourceExtension;\nstruct ComponentPlatformInfoArray {\n  SInt32 count;\n  ComponentPlatformInfo platformArray[1];\n};\ntypedef struct ComponentPlatformInfoArray ComponentPlatformInfoArray;\nstruct ExtComponentResource {\n  ComponentDescription cd;\n  ResourceSpec component;\n  ResourceSpec componentName;\n  ResourceSpec componentInfo;\n  ResourceSpec componentIcon;\n  SInt32 componentVersion;\n  SInt32 componentRegisterFlags;\n  SInt16 componentIconFamily;\n  SInt32 count;\n  ComponentPlatformInfo platformArray[1];\n};\ntypedef struct ExtComponentResource ExtComponentResource;\ntypedef ExtComponentResource * ExtComponentResourcePtr;\ntypedef ExtComponentResourcePtr * ExtComponentResourceHandle;\nstruct ComponentAliasResource {\n  ComponentResource cr;\n  ComponentDescription aliasCD;\n};\ntypedef struct ComponentAliasResource ComponentAliasResource;\n\nstruct ComponentParameters {\n  UInt8 flags;\n  UInt8 paramSize;\n  SInt16 what;\n\n\n  UInt32 padding;\n\n\n  long params[1];\n};\ntypedef struct ComponentParameters ComponentParameters;\nstruct ComponentRecord {\n  long data[1];\n};\ntypedef struct ComponentRecord ComponentRecord;\ntypedef ComponentRecord * Component;\nstruct ComponentInstanceRecord {\n  long data[1];\n};\ntypedef struct ComponentInstanceRecord ComponentInstanceRecord;\ntypedef ComponentInstanceRecord * ComponentInstance;\nstruct RegisteredComponentRecord {\n  long data[1];\n};\ntypedef struct RegisteredComponentRecord RegisteredComponentRecord;\ntypedef RegisteredComponentRecord * RegisteredComponentRecordPtr;\nstruct RegisteredComponentInstanceRecord {\n  long data[1];\n};\ntypedef struct RegisteredComponentInstanceRecord RegisteredComponentInstanceRecord;\ntypedef RegisteredComponentInstanceRecord * RegisteredComponentInstanceRecordPtr;\ntypedef SInt32 ComponentResult;\nenum {\n  platform68k = 1,\n  platformPowerPC = 2,\n  platformInterpreted = 3,\n  platformWin32 = 4,\n  platformPowerPCNativeEntryPoint = 5,\n  platformIA32NativeEntryPoint = 6,\n  platformPowerPC64NativeEntryPoint = 7,\n  platformX86_64NativeEntryPoint = 8\n};\n\nenum {\n  platformIRIXmips = 1000,\n  platformSunOSsparc = 1100,\n  platformSunOSintel = 1101,\n  platformLinuxppc = 1200,\n  platformLinuxintel = 1201,\n  platformAIXppc = 1300,\n  platformNeXTIntel = 1400,\n  platformNeXTppc = 1401,\n  platformNeXTsparc = 1402,\n  platformNeXT68k = 1403,\n  platformMacOSx86 = 1500\n};\n\nenum {\n  mpWorkFlagDoWork = (1 << 0),\n  mpWorkFlagDoCompletion = (1 << 1),\n  mpWorkFlagCopyWorkBlock = (1 << 2),\n  mpWorkFlagDontBlock = (1 << 3),\n  mpWorkFlagGetProcessorCount = (1 << 4),\n  mpWorkFlagGetIsRunning = (1 << 6)\n};\n\nenum {\n  cmpAliasNoFlags = 0,\n  cmpAliasOnlyThisFile = 1\n};\n\ntypedef UInt32 CSComponentsThreadMode;\nenum {\n  kCSAcceptAllComponentsMode = 0,\n  kCSAcceptThreadSafeComponentsOnlyMode = 1\n};\n# 287 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern void\nCSSetComponentsThreadMode(CSComponentsThreadMode mode) ;\n# 310 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern CSComponentsThreadMode\nCSGetComponentsThreadMode(void) ;\n\n\nstruct ComponentMPWorkFunctionHeaderRecord {\n  UInt32 headerSize;\n  UInt32 recordSize;\n  UInt32 workFlags;\n  UInt16 processorCount;\n  UInt8 unused;\n  UInt8 isRunning;\n};\ntypedef struct ComponentMPWorkFunctionHeaderRecord ComponentMPWorkFunctionHeaderRecord;\ntypedef ComponentMPWorkFunctionHeaderRecord * ComponentMPWorkFunctionHeaderRecordPtr;\ntypedef ComponentResult ( * ComponentMPWorkFunctionProcPtr)(void *globalRefCon, ComponentMPWorkFunctionHeaderRecordPtr header);\ntypedef ComponentResult ( * ComponentRoutineProcPtr)(ComponentParameters *cp, Handle componentStorage);\ntypedef OSErr ( * GetMissingComponentResourceProcPtr)(Component c, OSType resType, SInt16 resID, void *refCon, Handle *resource);\ntypedef ComponentMPWorkFunctionProcPtr ComponentMPWorkFunctionUPP;\ntypedef ComponentRoutineProcPtr ComponentRoutineUPP;\ntypedef GetMissingComponentResourceProcPtr GetMissingComponentResourceUPP;\n\n\n\n\n\ntypedef UniversalProcPtr ComponentFunctionUPP;\n# 352 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern ComponentFunctionUPP\nNewComponentFunctionUPP(\n  ProcPtr userRoutine,\n  ProcInfoType procInfo) ;\n# 374 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern void\nDisposeComponentFunctionUPP(ComponentFunctionUPP userUPP) ;\n# 418 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern Component\nRegisterComponent(\n  ComponentDescription * cd,\n  ComponentRoutineUPP componentEntryPoint,\n  SInt16 global,\n  Handle componentName,\n  Handle componentInfo,\n  Handle componentIcon) ;\n# 440 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern Component\nRegisterComponentResource(\n  ComponentResourceHandle cr,\n  SInt16 global) ;\n# 458 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern OSErr\nUnregisterComponent(Component aComponent) ;\n# 474 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern Component\nFindNextComponent(\n  Component aComponent,\n  ComponentDescription * looking) ;\n# 492 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern long\nCountComponents(ComponentDescription * looking) ;\n# 508 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern OSErr\nGetComponentInfo(\n  Component aComponent,\n  ComponentDescription * cd,\n  Handle componentName,\n  Handle componentInfo,\n  Handle componentIcon) ;\n# 529 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern SInt32\nGetComponentListModSeed(void) ;\n# 545 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern SInt32\nGetComponentTypeModSeed(OSType componentType) ;\n# 564 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern OSErr\nOpenAComponent(\n  Component aComponent,\n  ComponentInstance * ci) ;\n# 582 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern ComponentInstance\nOpenComponent(Component aComponent) ;\n# 598 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern OSErr\nCloseComponent(ComponentInstance aComponentInstance) ;\n# 614 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern OSErr\nGetComponentInstanceError(ComponentInstance aComponentInstance) ;\n# 633 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern Component\nResolveComponentAlias(Component aComponent) ;\n# 652 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern OSErr\nGetComponentPublicResource(\n  Component aComponent,\n  OSType resourceType,\n  SInt16 resourceID,\n  Handle * theResource) ;\n# 671 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern OSErr\nGetComponentPublicResourceList(\n  OSType resourceType,\n  SInt16 resourceID,\n  SInt32 flags,\n  ComponentDescription * cd,\n  GetMissingComponentResourceUPP missingProc,\n  void * refCon,\n  void * atomContainerPtr) ;\n# 693 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern OSErr\nGetComponentPublicIndString(\n  Component aComponent,\n  Str255 theString,\n  SInt16 strListID,\n  SInt16 index) ;\n# 721 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern void\nSetComponentInstanceError(\n  ComponentInstance aComponentInstance,\n  OSErr theError) ;\n# 739 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern long\nGetComponentRefcon(Component aComponent) ;\n# 755 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern void\nSetComponentRefcon(\n  Component aComponent,\n  long theRefcon) ;\n# 773 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern ResFileRefNum\nOpenComponentResFile(Component aComponent) ;\n# 789 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern OSErr\nOpenAComponentResFile(\n  Component aComponent,\n  ResFileRefNum * resRef) ;\n# 807 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern OSErr\nCloseComponentResFile(ResFileRefNum refnum) ;\n# 824 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern OSErr\nGetComponentResource(\n  Component aComponent,\n  OSType resType,\n  SInt16 resID,\n  Handle * theResource) ;\n# 844 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern OSErr\nGetComponentIndString(\n  Component aComponent,\n  Str255 theString,\n  SInt16 strListID,\n  SInt16 index) ;\n# 867 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern Handle\nGetComponentInstanceStorage(ComponentInstance aComponentInstance) ;\n# 883 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern void\nSetComponentInstanceStorage(\n  ComponentInstance aComponentInstance,\n  Handle theStorage) ;\n# 901 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern long\nCountComponentInstances(Component aComponent) ;\n# 917 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern ComponentResult\nCallComponentFunction(\n  ComponentParameters * params,\n  ComponentFunctionUPP func) ;\n# 935 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern ComponentResult\nCallComponentFunctionWithStorage(\n  Handle storage,\n  ComponentParameters * params,\n  ComponentFunctionUPP func) ;\n# 953 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern ComponentResult\nCallComponentFunctionWithStorageProcInfo(\n  Handle storage,\n  ComponentParameters * params,\n  ProcPtr func,\n  ProcInfoType funcProcInfo) ;\n# 973 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern ComponentResult\nDelegateComponentCall(\n  ComponentParameters * originalParams,\n  ComponentInstance ci) ;\n# 991 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern OSErr\nSetDefaultComponent(\n  Component aComponent,\n  SInt16 flags) ;\n# 1009 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern ComponentInstance\nOpenDefaultComponent(\n  OSType componentType,\n  OSType componentSubType) ;\n# 1027 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern OSErr\nOpenADefaultComponent(\n  OSType componentType,\n  OSType componentSubType,\n  ComponentInstance * ci) ;\n# 1046 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern Component\nCaptureComponent(\n  Component capturedComponent,\n  Component capturingComponent) ;\n# 1064 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern OSErr\nUncaptureComponent(Component aComponent) ;\n# 1080 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern SInt32\nRegisterComponentResourceFile(\n  SInt16 resRefNum,\n  SInt16 global) ;\n# 1168 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern OSErr\nRegisterComponentFileRef(\n  const FSRef * ref,\n  SInt16 global) ;\n# 1185 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern OSErr\nRegisterComponentFileRefEntries(\n  const FSRef * ref,\n  SInt16 global,\n  const ComponentDescription * toRegister,\n  UInt32 registerCount) ;\n# 1269 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern ComponentResult\nCallComponentOpen(\n  ComponentInstance ci,\n  ComponentInstance self) ;\n# 1287 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern ComponentResult\nCallComponentClose(\n  ComponentInstance ci,\n  ComponentInstance self) ;\n# 1305 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern ComponentResult\nCallComponentCanDo(\n  ComponentInstance ci,\n  SInt16 ftnNumber) ;\n# 1323 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern ComponentResult\nCallComponentVersion(ComponentInstance ci) ;\n# 1339 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern ComponentResult\nCallComponentRegister(ComponentInstance ci) ;\n# 1355 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern ComponentResult\nCallComponentTarget(\n  ComponentInstance ci,\n  ComponentInstance target) ;\n# 1373 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern ComponentResult\nCallComponentUnregister(ComponentInstance ci) ;\n# 1389 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern ComponentResult\nCallComponentGetMPWorkFunction(\n  ComponentInstance ci,\n  ComponentMPWorkFunctionUPP * workFunction,\n  void ** refCon) ;\n# 1407 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern ComponentResult\nCallComponentGetPublicResource(\n  ComponentInstance ci,\n  OSType resourceType,\n  SInt16 resourceID,\n  Handle * resource) ;\n# 1431 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern ComponentResult\nCallComponentDispatch(ComponentParameters * cp) ;\n# 1445 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern ComponentMPWorkFunctionUPP\nNewComponentMPWorkFunctionUPP(ComponentMPWorkFunctionProcPtr userRoutine) ;\n# 1456 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern ComponentRoutineUPP\nNewComponentRoutineUPP(ComponentRoutineProcPtr userRoutine) ;\n# 1467 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern GetMissingComponentResourceUPP\nNewGetMissingComponentResourceUPP(GetMissingComponentResourceProcPtr userRoutine) ;\n# 1478 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern void\nDisposeComponentMPWorkFunctionUPP(ComponentMPWorkFunctionUPP userUPP) ;\n# 1489 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern void\nDisposeComponentRoutineUPP(ComponentRoutineUPP userUPP) ;\n# 1500 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern void\nDisposeGetMissingComponentResourceUPP(GetMissingComponentResourceUPP userUPP) ;\n# 1511 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern ComponentResult\nInvokeComponentMPWorkFunctionUPP(\n  void * globalRefCon,\n  ComponentMPWorkFunctionHeaderRecordPtr header,\n  ComponentMPWorkFunctionUPP userUPP) ;\n# 1525 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern ComponentResult\nInvokeComponentRoutineUPP(\n  ComponentParameters * cp,\n  Handle componentStorage,\n  ComponentRoutineUPP userUPP) ;\n# 1539 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nextern OSErr\nInvokeGetMissingComponentResourceUPP(\n  Component c,\n  OSType resType,\n  SInt16 resID,\n  void * refCon,\n  Handle * resource,\n  GetMissingComponentResourceUPP userUPP) ;\n# 1575 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h\" 3\nenum {\n    uppComponentFunctionImplementedProcInfo = 0x000002F0,\n    uppGetComponentVersionProcInfo = 0x000000F0,\n    uppComponentSetTargetProcInfo = 0x000003F0,\n    uppCallComponentOpenProcInfo = 0x000003F0,\n    uppCallComponentCloseProcInfo = 0x000003F0,\n    uppCallComponentCanDoProcInfo = 0x000002F0,\n    uppCallComponentVersionProcInfo = 0x000000F0,\n    uppCallComponentRegisterProcInfo = 0x000000F0,\n    uppCallComponentTargetProcInfo = 0x000003F0,\n    uppCallComponentUnregisterProcInfo = 0x000000F0,\n    uppCallComponentGetMPWorkFunctionProcInfo = 0x00000FF0,\n    uppCallComponentGetPublicResourceProcInfo = 0x00003BF0\n};\n\n\n\n\n\n\n\n#pragma pack(pop)\n# 86 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n# 101 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CodeFragments.h\" 1 3\n# 41 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CodeFragments.h\" 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 1 3\n# 45 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\n#pragma options align=power\n# 202 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nenum {\n  MPLibrary_MajorVersion = 2,\n  MPLibrary_MinorVersion = 3,\n  MPLibrary_Release = 1,\n  MPLibrary_DevelopmentRevision = 1\n};\n\n\n\ntypedef struct OpaqueMPProcessID* MPProcessID;\ntypedef struct OpaqueMPTaskID* MPTaskID;\ntypedef struct OpaqueMPQueueID* MPQueueID;\ntypedef struct OpaqueMPSemaphoreID* MPSemaphoreID;\ntypedef struct OpaqueMPCriticalRegionID* MPCriticalRegionID;\ntypedef struct OpaqueMPTimerID* MPTimerID;\ntypedef struct OpaqueMPEventID* MPEventID;\ntypedef struct OpaqueMPAddressSpaceID* MPAddressSpaceID;\ntypedef struct OpaqueMPNotificationID* MPNotificationID;\ntypedef struct OpaqueMPCoherenceID* MPCoherenceID;\ntypedef struct OpaqueMPCpuID* MPCpuID;\ntypedef struct OpaqueMPAreaID* MPAreaID;\ntypedef struct OpaqueMPConsoleID* MPConsoleID;\ntypedef struct OpaqueMPOpaqueID* MPOpaqueID;\nenum {\n\n  kOpaqueAnyID = 0,\n  kOpaqueProcessID = 1,\n  kOpaqueTaskID = 2,\n  kOpaqueTimerID = 3,\n  kOpaqueQueueID = 4,\n  kOpaqueSemaphoreID = 5,\n  kOpaqueCriticalRegionID = 6,\n  kOpaqueCpuID = 7,\n  kOpaqueAddressSpaceID = 8,\n  kOpaqueEventID = 9,\n  kOpaqueCoherenceID = 10,\n  kOpaqueAreaID = 11,\n  kOpaqueNotificationID = 12,\n  kOpaqueConsoleID = 13\n};\n\ntypedef UInt32 MPOpaqueIDClass;\n\nenum {\n  kMPNoID = 0\n};\n\n\ntypedef OptionBits MPTaskOptions;\ntypedef ItemCount TaskStorageIndex;\ntypedef LogicalAddress TaskStorageValue;\ntypedef ItemCount MPSemaphoreCount;\ntypedef UInt32 MPTaskWeight;\ntypedef UInt32 MPEventFlags;\ntypedef UInt32 MPExceptionKind;\ntypedef UInt32 MPTaskStateKind;\ntypedef UInt32 MPPageSizeClass;\n\nenum {\n  kDurationImmediate = 0,\n  kDurationForever = 0x7FFFFFFF,\n  kDurationMillisecond = 1,\n  kDurationMicrosecond = -1\n};\n# 288 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern ItemCount\nMPProcessors(void) ;\n# 305 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern ItemCount\nMPProcessorsScheduled(void) ;\n# 320 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nenum {\n\n  kMPCreateTaskSuspendedMask = 1L << 0,\n  kMPCreateTaskTakesAllExceptionsMask = 1L << 1,\n  kMPCreateTaskNotDebuggableMask = 1L << 2,\n  kMPCreateTaskValidOptionsMask = kMPCreateTaskSuspendedMask | kMPCreateTaskTakesAllExceptionsMask | kMPCreateTaskNotDebuggableMask\n};\n\n\n\n\n\n\n\ntypedef OSStatus ( * TaskProc)(void * parameter);\n# 347 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPCreateTask(\n  TaskProc entryPoint,\n  void * parameter,\n  ByteCount stackSize,\n  MPQueueID notifyQueue,\n  void * terminationParameter1,\n  void * terminationParameter2,\n  MPTaskOptions options,\n  MPTaskID * task) ;\n# 372 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPTerminateTask(\n  MPTaskID task,\n  OSStatus terminationStatus) ;\n# 391 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPSetTaskWeight(\n  MPTaskID task,\n  MPTaskWeight weight) ;\n# 410 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern Boolean\nMPTaskIsPreemptive(MPTaskID taskID) ;\n# 427 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern void\nMPExit(OSStatus status) ;\n# 444 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern void\nMPYield(void) ;\n# 461 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern MPTaskID\nMPCurrentTaskID(void) ;\n# 478 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPSetTaskType(\n  MPTaskID task,\n  OSType taskType) ;\n# 506 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPAllocateTaskStorageIndex(TaskStorageIndex * taskIndex) ;\n# 523 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPDeallocateTaskStorageIndex(TaskStorageIndex taskIndex) ;\n# 540 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPSetTaskStorageValue(\n  TaskStorageIndex taskIndex,\n  TaskStorageValue value) ;\n# 559 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern TaskStorageValue\nMPGetTaskStorageValue(TaskStorageIndex taskIndex) ;\n# 584 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPCreateQueue(MPQueueID * queue) ;\n# 601 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPDeleteQueue(MPQueueID queue) ;\n# 618 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPNotifyQueue(\n  MPQueueID queue,\n  void * param1,\n  void * param2,\n  void * param3) ;\n# 639 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPWaitOnQueue(\n  MPQueueID queue,\n  void ** param1,\n  void ** param2,\n  void ** param3,\n  Duration timeout) ;\n# 661 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPSetQueueReserve(\n  MPQueueID queue,\n  ItemCount count) ;\n# 683 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPCreateSemaphore(\n  MPSemaphoreCount maximumValue,\n  MPSemaphoreCount initialValue,\n  MPSemaphoreID * semaphore) ;\n# 703 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPDeleteSemaphore(MPSemaphoreID semaphore) ;\n# 720 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPSignalSemaphore(MPSemaphoreID semaphore) ;\n# 737 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPWaitOnSemaphore(\n  MPSemaphoreID semaphore,\n  Duration timeout) ;\n# 762 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPCreateCriticalRegion(MPCriticalRegionID * criticalRegion) ;\n# 779 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPDeleteCriticalRegion(MPCriticalRegionID criticalRegion) ;\n# 796 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPEnterCriticalRegion(\n  MPCriticalRegionID criticalRegion,\n  Duration timeout) ;\n# 815 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPExitCriticalRegion(MPCriticalRegionID criticalRegion) ;\n# 834 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPCreateEvent(MPEventID * event) ;\n# 850 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPDeleteEvent(MPEventID event) ;\n# 867 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPSetEvent(\n  MPEventID event,\n  MPEventFlags flags) ;\n# 885 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPWaitForEvent(\n  MPEventID event,\n  MPEventFlags * flags,\n  Duration timeout) ;\n# 912 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPCreateNotification(MPNotificationID * notificationID) ;\n# 929 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPDeleteNotification(MPNotificationID notificationID) ;\n# 946 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPModifyNotification(\n  MPNotificationID notificationID,\n  MPOpaqueID anID,\n  void * notifyParam1,\n  void * notifyParam2,\n  void * notifyParam3) ;\n# 968 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPModifyNotificationParameters(\n  MPNotificationID notificationID,\n  MPOpaqueIDClass kind,\n  void * notifyParam1,\n  void * notifyParam2,\n  void * notifyParam3) ;\n# 990 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPCauseNotification(MPNotificationID notificationID) ;\n# 1010 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nenum {\n\n  kMPPreserveTimerIDMask = 1L << 0,\n  kMPTimeIsDeltaMask = 1L << 1,\n  kMPTimeIsDurationMask = 1L << 2\n};\n# 1030 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPDelayUntil(AbsoluteTime * expirationTime) ;\n# 1059 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPCreateTimer(MPTimerID * timerID) ;\n# 1076 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPDeleteTimer(MPTimerID timerID) ;\n# 1093 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPSetTimerNotify(\n  MPTimerID timerID,\n  MPOpaqueID anID,\n  void * notifyParam1,\n  void * notifyParam2,\n  void * notifyParam3) ;\n# 1115 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPArmTimer(\n  MPTimerID timerID,\n  AbsoluteTime * expirationTime,\n  OptionBits options) ;\n# 1135 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPCancelTimer(\n  MPTimerID timerID,\n  AbsoluteTime * timeRemaining) ;\n# 1150 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nenum {\n\n  kMPMaxAllocSize = 1024L * 1024 * 1024\n};\n\nenum {\n\n  kMPAllocateDefaultAligned = 0,\n  kMPAllocate8ByteAligned = 3,\n  kMPAllocate16ByteAligned = 4,\n  kMPAllocate32ByteAligned = 5,\n  kMPAllocate1024ByteAligned = 10,\n  kMPAllocate4096ByteAligned = 12,\n  kMPAllocateMaxAlignment = 16,\n  kMPAllocateAltiVecAligned = kMPAllocate16ByteAligned,\n  kMPAllocateVMXAligned = kMPAllocateAltiVecAligned,\n  kMPAllocateVMPageAligned = 254,\n  kMPAllocateInterlockAligned = 255\n};\n\n\n\nenum {\n\n  kMPAllocateClearMask = 0x0001,\n  kMPAllocateGloballyMask = 0x0002,\n  kMPAllocateResidentMask = 0x0004,\n  kMPAllocateNoGrowthMask = 0x0010,\n  kMPAllocateNoCreateMask = 0x0020\n};\n# 1197 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern LogicalAddress\nMPAllocateAligned(\n  ByteCount size,\n  UInt8 alignment,\n  OptionBits options) ;\n# 1217 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern LogicalAddress\nMPAllocate(ByteCount size) ;\n# 1234 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern void\nMPFree(LogicalAddress object) ;\n# 1251 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern ByteCount\nMPGetAllocatedBlockSize(LogicalAddress object) ;\n# 1271 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern void\nMPBlockCopy(\n  LogicalAddress source,\n  LogicalAddress destination,\n  ByteCount size) ;\n# 1291 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern void\nMPBlockClear(\n  LogicalAddress address,\n  ByteCount size) ;\n# 1367 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nenum {\n\n  kMPTaskStateRegisters = 0,\n  kMPTaskStateFPU = 1,\n  kMPTaskStateVectors = 2,\n  kMPTaskStateMachine = 3,\n  kMPTaskState32BitMemoryException = 4,\n  kMPTaskStateTaskInfo = 5\n};\n\n\n\nenum {\n\n  kMPTaskPropagate = 0,\n  kMPTaskResumeStep = 1,\n  kMPTaskResumeBranch = 2,\n  kMPTaskResumeMask = 0x0000,\n  kMPTaskPropagateMask = 1 << kMPTaskPropagate,\n  kMPTaskResumeStepMask = 1 << kMPTaskResumeStep,\n  kMPTaskResumeBranchMask = 1 << kMPTaskResumeBranch\n};\n\n\n\nenum {\n\n  kMPTaskBlocked = 0,\n  kMPTaskReady = 1,\n  kMPTaskRunning = 2\n};\n\nenum {\n\n  kMPTaskInfoVersion = 3\n};\n\n\nstruct MPTaskInfoVersion2 {\n  PBVersion version;\n\n  OSType name;\n\n  OSType queueName;\n  UInt16 runState;\n  UInt16 lastCPU;\n  UInt32 weight;\n\n  MPProcessID processID;\n\n  AbsoluteTime cpuTime;\n  AbsoluteTime schedTime;\n  AbsoluteTime creationTime;\n\n  ItemCount codePageFaults;\n  ItemCount dataPageFaults;\n  ItemCount preemptions;\n\n  MPCpuID cpuID;\n};\ntypedef struct MPTaskInfoVersion2 MPTaskInfoVersion2;\nstruct MPTaskInfo {\n  PBVersion version;\n\n  OSType name;\n\n  OSType queueName;\n  UInt16 runState;\n  UInt16 lastCPU;\n  UInt32 weight;\n\n  MPProcessID processID;\n\n  AbsoluteTime cpuTime;\n  AbsoluteTime schedTime;\n  AbsoluteTime creationTime;\n\n  ItemCount codePageFaults;\n  ItemCount dataPageFaults;\n  ItemCount preemptions;\n\n  MPCpuID cpuID;\n  MPOpaqueID blockedObject;\n  MPAddressSpaceID spaceID;\n\n  LogicalAddress stackBase;\n  LogicalAddress stackLimit;\n  LogicalAddress stackCurr;\n};\ntypedef struct MPTaskInfo MPTaskInfo;\n# 1480 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPSetExceptionHandler(\n  MPTaskID task,\n  MPQueueID exceptionQ) ;\n# 1499 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPDisposeTaskException(\n  MPTaskID task,\n  OptionBits action) ;\n# 1518 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPExtractTaskState(\n  MPTaskID task,\n  MPTaskStateKind kind,\n  void * info) ;\n# 1538 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPSetTaskState(\n  MPTaskID task,\n  MPTaskStateKind kind,\n  void * info) ;\n# 1558 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPThrowException(\n  MPTaskID task,\n  MPExceptionKind kind) ;\n\n\n\n\n\n\ntypedef UInt32 MPDebuggerLevel;\nenum {\n  kMPLowLevelDebugger = 0x00000000,\n  kMPMidLevelDebugger = 0x10000000,\n  kMPHighLevelDebugger = 0x20000000\n};\n# 1588 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPRegisterDebugger(\n  MPQueueID queue,\n  MPDebuggerLevel level) ;\n# 1607 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern OSStatus\nMPUnregisterDebugger(MPQueueID queue) ;\n# 1621 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\ntypedef void * ( * MPRemoteProcedure)(void * parameter);\n\ntypedef UInt8 MPRemoteContext;\nenum {\n  kMPAnyRemoteContext = 0,\n  kMPOwningProcessRemoteContext = 1,\n  kMPInterruptRemoteContext = 2,\n  kMPAsyncInterruptRemoteContext = 3\n};\n# 1691 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern void *\nMPRemoteCall(\n  MPRemoteProcedure remoteProc,\n  void * parameter,\n  MPRemoteContext context) ;\n# 1751 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern void *\nMPRemoteCallCFM(\n  MPRemoteProcedure remoteProc,\n  void * parameter,\n  MPRemoteContext context) ;\n# 1833 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern Boolean\n_MPIsFullyInitialized(void) ;\n\n\ntypedef Boolean ( * MPIsFullyInitializedProc)(void);\n# 1856 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern void\n_MPLibraryVersion(\n  const char ** versionCString,\n  UInt32 * major,\n  UInt32 * minor,\n  UInt32 * release,\n  UInt32 * revision) ;\n# 1926 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\nextern Boolean\n_MPLibraryIsCompatible(\n  const char * versionCString,\n  UInt32 major,\n  UInt32 minor,\n  UInt32 release,\n  UInt32 revision) ;\n# 2013 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Multiprocessing.h\" 3\n#pragma options align=reset\n# 42 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CodeFragments.h\" 2 3\n# 57 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CodeFragments.h\" 3\n#pragma pack(push, 2)\n# 640 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CodeFragments.h\" 3\n#pragma pack(pop)\n# 102 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Aliases.h\" 1 3\n# 39 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Aliases.h\" 3\n#pragma pack(push, 2)\n\ntypedef UInt32 FSAliasInfoBitmap;\nenum {\n  kFSAliasInfoNone = 0x00000000,\n  kFSAliasInfoVolumeCreateDate = 0x00000001,\n  kFSAliasInfoTargetCreateDate = 0x00000002,\n  kFSAliasInfoFinderInfo = 0x00000004,\n  kFSAliasInfoIsDirectory = 0x00000008,\n  kFSAliasInfoIDs = 0x00000010,\n  kFSAliasInfoFSInfo = 0x00000020,\n  kFSAliasInfoVolumeFlags = 0x00000040\n};\n\nenum {\n  rAliasType = 'alis'\n};\n\nenum {\n\n  kARMMountVol = 0x00000001,\n  kARMNoUI = 0x00000002,\n  kARMMultVols = 0x00000008,\n  kARMSearch = 0x00000100,\n  kARMSearchMore = 0x00000200,\n  kARMSearchRelFirst = 0x00000400,\n  kARMTryFileIDFirst = 0x00000800\n};\n\nenum {\n\n  asiZoneName = -3,\n  asiServerName = -2,\n  asiVolumeName = -1,\n  asiAliasName = 0,\n  asiParentName = 1\n};\n\n\nenum {\n  kResolveAliasFileNoUI = 0x00000001,\n  kResolveAliasTryFileIDFirst = 0x00000002\n};\n# 90 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Aliases.h\" 3\nstruct AliasRecord {\n  UInt8 hidden[6];\n};\ntypedef struct AliasRecord AliasRecord;\n# 102 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Aliases.h\" 3\ntypedef AliasRecord * AliasPtr;\ntypedef AliasPtr * AliasHandle;\n\nstruct FSAliasInfo {\n  UTCDateTime volumeCreateDate;\n  UTCDateTime targetCreateDate;\n  OSType fileType;\n  OSType fileCreator;\n  UInt32 parentDirID;\n  UInt32 nodeID;\n  UInt16 filesystemID;\n  UInt16 signature;\n  Boolean volumeIsBootVolume;\n  Boolean volumeIsAutomounted;\n  Boolean volumeIsEjectable;\n  Boolean volumeHasPersistentFileIDs;\n  Boolean isDirectory;\n};\ntypedef struct FSAliasInfo FSAliasInfo;\ntypedef FSAliasInfo * FSAliasInfoPtr;\n\ntypedef short AliasInfoType;\n# 178 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Aliases.h\" 3\ntypedef Boolean ( * FSAliasFilterProcPtr)(const FSRef *ref, Boolean *quitFlag, Ptr myDataPtr);\n# 190 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Aliases.h\" 3\nextern OSErr\nFSNewAlias(\n  const FSRef * fromFile,\n  const FSRef * target,\n  AliasHandle * inAlias) ;\n# 208 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Aliases.h\" 3\nextern OSErr\nFSNewAliasMinimal(\n  const FSRef * target,\n  AliasHandle * inAlias) ;\n# 225 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Aliases.h\" 3\nextern OSErr\nFSIsAliasFile(\n  const FSRef * fileRef,\n  Boolean * aliasFileFlag,\n  Boolean * folderFlag) ;\n# 244 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Aliases.h\" 3\nextern OSErr\nFSResolveAliasWithMountFlags(\n  const FSRef * fromFile,\n  AliasHandle inAlias,\n  FSRef * target,\n  Boolean * wasChanged,\n  unsigned long mountFlags) ;\n# 265 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Aliases.h\" 3\nextern OSErr\nFSResolveAlias(\n  const FSRef * fromFile,\n  AliasHandle alias,\n  FSRef * target,\n  Boolean * wasChanged) ;\n# 285 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Aliases.h\" 3\nextern OSErr\nFSResolveAliasFileWithMountFlags(\n  FSRef * theRef,\n  Boolean resolveAliasChains,\n  Boolean * targetIsFolder,\n  Boolean * wasAliased,\n  unsigned long mountFlags) ;\n# 306 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Aliases.h\" 3\nextern OSErr\nFSResolveAliasFile(\n  FSRef * theRef,\n  Boolean resolveAliasChains,\n  Boolean * targetIsFolder,\n  Boolean * wasAliased) ;\n# 326 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Aliases.h\" 3\nextern OSErr\nFSFollowFinderAlias(\n  FSRef * fromFile,\n  AliasHandle alias,\n  Boolean logon,\n  FSRef * target,\n  Boolean * wasChanged) ;\n# 346 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Aliases.h\" 3\nextern OSErr\nFSUpdateAlias(\n  const FSRef * fromFile,\n  const FSRef * target,\n  AliasHandle alias,\n  Boolean * wasChanged) ;\n# 395 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Aliases.h\" 3\nextern OSErr\nFSNewAliasUnicode(\n  const FSRef * fromFile,\n  const FSRef * targetParentRef,\n  UniCharCount targetNameLength,\n  const UniChar * targetName,\n  AliasHandle * inAlias,\n  Boolean * isDirectory) ;\n# 441 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Aliases.h\" 3\nextern OSErr\nFSNewAliasMinimalUnicode(\n  const FSRef * targetParentRef,\n  UniCharCount targetNameLength,\n  const UniChar * targetName,\n  AliasHandle * inAlias,\n  Boolean * isDirectory) ;\n# 487 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Aliases.h\" 3\nextern OSStatus\nFSNewAliasFromPath(\n  const char * fromFilePath,\n  const char * targetPath,\n  OptionBits flags,\n  AliasHandle * inAlias,\n  Boolean * isDirectory) ;\n# 511 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Aliases.h\" 3\nextern OSStatus\nFSMatchAliasBulk(\n  const FSRef * fromFile,\n  unsigned long rulesMask,\n  AliasHandle inAlias,\n  short * aliasCount,\n  FSRef * aliasList,\n  Boolean * needsUpdate,\n  FSAliasFilterProcPtr aliasFilter,\n  void * yourDataPtr) ;\n# 563 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Aliases.h\" 3\nextern OSStatus\nFSCopyAliasInfo(\n  AliasHandle inAlias,\n  HFSUniStr255 * targetName,\n  HFSUniStr255 * volumeName,\n  CFStringRef * pathString,\n  FSAliasInfoBitmap * whichInfo,\n  FSAliasInfo * info) ;\n# 598 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Aliases.h\" 3\nextern Size\nGetAliasSize(AliasHandle alias) ;\n# 625 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Aliases.h\" 3\nextern OSType\nGetAliasUserType(AliasHandle alias) ;\n# 652 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Aliases.h\" 3\nextern void\nSetAliasUserType(\n  AliasHandle alias,\n  OSType userType) ;\n# 681 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Aliases.h\" 3\nextern Size\nGetAliasSizeFromPtr(const AliasRecord * alias) ;\n# 708 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Aliases.h\" 3\nextern OSType\nGetAliasUserTypeFromPtr(const AliasRecord * alias) ;\n# 735 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Aliases.h\" 3\nextern void\nSetAliasUserTypeWithPtr(\n  AliasPtr alias,\n  OSType userType) ;\n# 1204 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Aliases.h\" 3\n#pragma pack(pop)\n# 106 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacLocales.h\" 1 3\n# 39 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacLocales.h\" 3\n#pragma pack(push, 2)\n# 48 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacLocales.h\" 3\ntypedef struct OpaqueLocaleRef* LocaleRef;\ntypedef UInt32 LocalePartMask;\nenum {\n\n  kLocaleLanguageMask = 1L << 0,\n  kLocaleLanguageVariantMask = 1L << 1,\n  kLocaleScriptMask = 1L << 2,\n  kLocaleScriptVariantMask = 1L << 3,\n  kLocaleRegionMask = 1L << 4,\n  kLocaleRegionVariantMask = 1L << 5,\n  kLocaleAllPartsMask = 0x0000003F\n};\n\ntypedef FourCharCode LocaleOperationClass;\n\ntypedef FourCharCode LocaleOperationVariant;\nstruct LocaleAndVariant {\n  LocaleRef locale;\n  LocaleOperationVariant opVariant;\n};\ntypedef struct LocaleAndVariant LocaleAndVariant;\n\ntypedef UInt32 LocaleNameMask;\nenum {\n\n  kLocaleNameMask = 1L << 0,\n  kLocaleOperationVariantNameMask = 1L << 1,\n  kLocaleAndVariantNameMask = 0x00000003\n};\n# 94 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacLocales.h\" 3\nextern OSStatus\nLocaleRefFromLangOrRegionCode(\n  LangCode lang,\n  RegionCode region,\n  LocaleRef * locale) ;\n# 109 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacLocales.h\" 3\nextern OSStatus\nLocaleRefFromLocaleString(\n  const char localeString[],\n  LocaleRef * locale) ;\n# 123 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacLocales.h\" 3\nextern OSStatus\nLocaleRefGetPartString(\n  LocaleRef locale,\n  LocalePartMask partMask,\n  ByteCount maxStringLen,\n  char partString[]) ;\n# 167 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacLocales.h\" 3\nextern OSStatus\nLocaleStringToLangAndRegionCodes(\n  const char localeString[],\n  LangCode * lang,\n  RegionCode * region) ;\n# 185 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacLocales.h\" 3\nextern OSStatus\nLocaleOperationCountLocales(\n  LocaleOperationClass opClass,\n  ItemCount * localeCount) ;\n# 199 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacLocales.h\" 3\nextern OSStatus\nLocaleOperationGetLocales(\n  LocaleOperationClass opClass,\n  ItemCount maxLocaleCount,\n  ItemCount * actualLocaleCount,\n  LocaleAndVariant localeVariantList[]) ;\n# 217 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacLocales.h\" 3\nextern OSStatus\nLocaleGetName(\n  LocaleRef locale,\n  LocaleOperationVariant opVariant,\n  LocaleNameMask nameMask,\n  LocaleRef displayLocale,\n  UniCharCount maxNameLen,\n  UniCharCount * actualNameLen,\n  UniChar displayName[]) ;\n# 236 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacLocales.h\" 3\nextern OSStatus\nLocaleCountNames(\n  LocaleRef locale,\n  LocaleOperationVariant opVariant,\n  LocaleNameMask nameMask,\n  ItemCount * nameCount) ;\n# 252 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacLocales.h\" 3\nextern OSStatus\nLocaleGetIndName(\n  LocaleRef locale,\n  LocaleOperationVariant opVariant,\n  LocaleNameMask nameMask,\n  ItemCount nameIndex,\n  UniCharCount maxNameLen,\n  UniCharCount * actualNameLen,\n  UniChar displayName[],\n  LocaleRef * displayLocale) ;\n# 302 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacLocales.h\" 3\nextern OSStatus\nLocaleOperationGetName(\n  LocaleOperationClass opClass,\n  LocaleRef displayLocale,\n  UniCharCount maxNameLen,\n  UniCharCount * actualNameLen,\n  UniChar displayName[]) ;\n# 319 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacLocales.h\" 3\nextern OSStatus\nLocaleOperationCountNames(\n  LocaleOperationClass opClass,\n  ItemCount * nameCount) ;\n# 333 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacLocales.h\" 3\nextern OSStatus\nLocaleOperationGetIndName(\n  LocaleOperationClass opClass,\n  ItemCount nameIndex,\n  UniCharCount maxNameLen,\n  UniCharCount * actualNameLen,\n  UniChar displayName[],\n  LocaleRef * displayLocale) ;\n\n\n\n#pragma pack(pop)\n# 110 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Debugging.h\" 1 3\n# 219 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Debugging.h\" 3\n# 1 \"/usr/include/AssertMacros.h\" 1 3 4\n# 220 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Debugging.h\" 2 3\n# 301 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Debugging.h\" 3\nenum {\n  kBlessedBusErrorBait = 0x68F168F1\n};\n# 353 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Debugging.h\" 3\nextern void\nDebugAssert(\n  OSType componentSignature,\n  UInt32 options,\n  const char * assertionString,\n  const char * exceptionLabelString,\n  const char * errorString,\n  const char * fileName,\n  long lineNumber,\n  void * value) ;\n\n\n\n\n\nenum {\n  k68kInterruptLevelMask = 0x00000007,\n  kInVBLTaskMask = 0x00000010,\n  kInDeferredTaskMask = 0x00000020,\n  kInSecondaryIntHandlerMask = 0x00000040,\n  kInNestedInterruptMask = 0x00000080\n};\n# 397 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Debugging.h\" 3\nextern UInt32\nTaskLevel(void) ;\n\n\n\n\n\nenum {\n  kComponentDebugOption = 0\n};\n\nenum {\n  kGetDebugOption = 1,\n  kSetDebugOption = 2\n};\n# 438 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Debugging.h\" 3\ntypedef void ( * DebugComponentCallbackProcPtr)(SInt32 optionSelectorNum, UInt32 command, Boolean *optionSetting);\ntypedef DebugComponentCallbackProcPtr DebugComponentCallbackUPP;\n# 470 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Debugging.h\" 3\nextern OSStatus\nNewDebugComponent(\n  OSType componentSignature,\n  ConstStr255Param componentName,\n  DebugComponentCallbackUPP componentCallback) ;\n# 508 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Debugging.h\" 3\nextern OSStatus\nNewDebugOption(\n  OSType componentSignature,\n  SInt32 optionSelectorNum,\n  ConstStr255Param optionName) ;\n# 539 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Debugging.h\" 3\nextern OSStatus\nDisposeDebugComponent(OSType componentSignature) ;\n# 574 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Debugging.h\" 3\nextern OSStatus\nGetDebugComponentInfo(\n  UInt32 itemIndex,\n  OSType * componentSignature,\n  Str255 componentName) ;\n# 621 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Debugging.h\" 3\nextern OSStatus\nGetDebugOptionInfo(\n  UInt32 itemIndex,\n  OSType componentSignature,\n  SInt32 * optionSelectorNum,\n  Str255 optionName,\n  Boolean * optionSetting) ;\n# 659 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Debugging.h\" 3\nextern OSStatus\nSetDebugOptionValue(\n  OSType componentSignature,\n  SInt32 optionSelectorNum,\n  Boolean newOptionSetting) ;\n# 708 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Debugging.h\" 3\ntypedef void ( * DebugAssertOutputHandlerProcPtr)(OSType componentSignature, UInt32 options, const char *assertionString, const char *exceptionLabelString, const char *errorString, const char *fileName, long lineNumber, void *value, ConstStr255Param outputMsg);\ntypedef DebugAssertOutputHandlerProcPtr DebugAssertOutputHandlerUPP;\n# 729 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Debugging.h\" 3\nextern void\nInstallDebugAssertOutputHandler(DebugAssertOutputHandlerUPP handler) ;\n# 813 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Debugging.h\" 3\nextern const char *\nGetMacOSStatusErrorString(OSStatus err) ;\n# 854 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Debugging.h\" 3\nextern const char *\nGetMacOSStatusCommentString(OSStatus err) ;\n# 871 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Debugging.h\" 3\nextern DebugComponentCallbackUPP\nNewDebugComponentCallbackUPP(DebugComponentCallbackProcPtr userRoutine) ;\n# 882 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Debugging.h\" 3\nextern DebugAssertOutputHandlerUPP\nNewDebugAssertOutputHandlerUPP(DebugAssertOutputHandlerProcPtr userRoutine) ;\n# 893 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Debugging.h\" 3\nextern void\nDisposeDebugComponentCallbackUPP(DebugComponentCallbackUPP userUPP) ;\n# 904 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Debugging.h\" 3\nextern void\nDisposeDebugAssertOutputHandlerUPP(DebugAssertOutputHandlerUPP userUPP) ;\n# 915 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Debugging.h\" 3\nextern void\nInvokeDebugComponentCallbackUPP(\n  SInt32 optionSelectorNum,\n  UInt32 command,\n  Boolean * optionSetting,\n  DebugComponentCallbackUPP userUPP) ;\n# 930 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Debugging.h\" 3\nextern void\nInvokeDebugAssertOutputHandlerUPP(\n  OSType componentSignature,\n  UInt32 options,\n  const char * assertionString,\n  const char * exceptionLabelString,\n  const char * errorString,\n  const char * fileName,\n  long lineNumber,\n  void * value,\n  ConstStr255Param outputMsg,\n  DebugAssertOutputHandlerUPP userUPP) ;\n# 114 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PLStringFuncs.h\" 1 3\n# 75 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PLStringFuncs.h\" 3\nextern short\nPLstrcmp(\n  ConstStr255Param str1,\n  ConstStr255Param str2) __attribute__((deprecated));\n# 127 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PLStringFuncs.h\" 3\nextern short\nPLstrncmp(\n  ConstStr255Param str1,\n  ConstStr255Param str2,\n  short num) __attribute__((deprecated));\n# 170 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PLStringFuncs.h\" 3\nextern StringPtr\nPLstrcpy(\n  StringPtr dest,\n  ConstStr255Param source) __attribute__((deprecated));\n# 219 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PLStringFuncs.h\" 3\nextern StringPtr\nPLstrncpy(\n  StringPtr dest,\n  ConstStr255Param source,\n  short num) __attribute__((deprecated));\n# 266 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PLStringFuncs.h\" 3\nextern StringPtr\nPLstrcat(\n  StringPtr str,\n  ConstStr255Param append) __attribute__((deprecated));\n# 316 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PLStringFuncs.h\" 3\nextern StringPtr\nPLstrncat(\n  StringPtr str1,\n  ConstStr255Param append,\n  short num) __attribute__((deprecated));\n# 359 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PLStringFuncs.h\" 3\nextern Ptr\nPLstrchr(\n  ConstStr255Param str1,\n  short ch1) __attribute__((deprecated));\n# 401 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PLStringFuncs.h\" 3\nextern Ptr\nPLstrrchr(\n  ConstStr255Param str1,\n  short ch1) __attribute__((deprecated));\n# 445 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PLStringFuncs.h\" 3\nextern Ptr\nPLstrpbrk(\n  ConstStr255Param str1,\n  ConstStr255Param charSet) __attribute__((deprecated));\n# 491 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PLStringFuncs.h\" 3\nextern short\nPLstrspn(\n  ConstStr255Param str1,\n  ConstStr255Param charSet) __attribute__((deprecated));\n# 535 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PLStringFuncs.h\" 3\nextern Ptr\nPLstrstr(\n  ConstStr255Param str1,\n  ConstStr255Param searchStr) __attribute__((deprecated));\n# 572 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PLStringFuncs.h\" 3\nextern short\nPLstrlen(ConstStr255Param str) __attribute__((deprecated));\n# 615 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PLStringFuncs.h\" 3\nextern short\nPLpos(\n  ConstStr255Param str1,\n  ConstStr255Param searchStr) __attribute__((deprecated));\n# 118 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverSynchronization.h\" 1 3\n# 77 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverSynchronization.h\" 3\nextern Boolean\nCompareAndSwap(\n  UInt32 oldValue,\n  UInt32 newValue,\n  UInt32 * address) ;\n# 127 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverSynchronization.h\" 3\nextern Boolean\nTestAndClear(\n  UInt32 bit,\n  UInt8 * address) ;\n# 166 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverSynchronization.h\" 3\nextern Boolean\nTestAndSet(\n  UInt32 bit,\n  UInt8 * address) ;\n# 201 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverSynchronization.h\" 3\nextern SInt8\nIncrementAtomic8(SInt8 * address) ;\n# 234 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverSynchronization.h\" 3\nextern SInt8\nDecrementAtomic8(SInt8 * address) ;\n# 270 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverSynchronization.h\" 3\nextern SInt8\nAddAtomic8(\n  SInt32 amount,\n  SInt8 * address) ;\n# 309 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverSynchronization.h\" 3\nextern UInt8\nBitAndAtomic8(\n  UInt32 mask,\n  UInt8 * address) ;\n# 348 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverSynchronization.h\" 3\nextern UInt8\nBitOrAtomic8(\n  UInt32 mask,\n  UInt8 * address) ;\n# 387 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverSynchronization.h\" 3\nextern UInt8\nBitXorAtomic8(\n  UInt32 mask,\n  UInt8 * address) ;\n# 422 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverSynchronization.h\" 3\nextern SInt16\nIncrementAtomic16(SInt16 * address) ;\n# 455 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverSynchronization.h\" 3\nextern SInt16\nDecrementAtomic16(SInt16 * address) ;\n# 491 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverSynchronization.h\" 3\nextern SInt16\nAddAtomic16(\n  SInt32 amount,\n  SInt16 * address) ;\n# 530 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverSynchronization.h\" 3\nextern UInt16\nBitAndAtomic16(\n  UInt32 mask,\n  UInt16 * address) ;\n# 569 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverSynchronization.h\" 3\nextern UInt16\nBitOrAtomic16(\n  UInt32 mask,\n  UInt16 * address) ;\n# 608 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverSynchronization.h\" 3\nextern UInt16\nBitXorAtomic16(\n  UInt32 mask,\n  UInt16 * address) ;\n# 643 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverSynchronization.h\" 3\nextern SInt32\nIncrementAtomic(SInt32 * address) ;\n# 676 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverSynchronization.h\" 3\nextern SInt32\nDecrementAtomic(SInt32 * address) ;\n# 712 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverSynchronization.h\" 3\nextern SInt32\nAddAtomic(\n  SInt32 amount,\n  SInt32 * address) ;\n# 751 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverSynchronization.h\" 3\nextern UInt32\nBitAndAtomic(\n  UInt32 mask,\n  UInt32 * address) ;\n# 790 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverSynchronization.h\" 3\nextern UInt32\nBitOrAtomic(\n  UInt32 mask,\n  UInt32 * address) ;\n# 829 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverSynchronization.h\" 3\nextern UInt32\nBitXorAtomic(\n  UInt32 mask,\n  UInt32 * address) ;\n# 122 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverServices.h\" 1 3\n# 32 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverServices.h\" 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MachineExceptions.h\" 1 3\n# 29 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MachineExceptions.h\" 3\n# 1 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/xmmintrin.h\" 1 3 4\n# 40 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/xmmintrin.h\" 3 4\n# 1 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/mmintrin.h\" 1 3 4\n# 41 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/mmintrin.h\" 3 4\ntypedef long long __m64 __attribute__ ((__vector_size__ (8), __may_alias__));\n\n\ntypedef int __v2si __attribute__ ((__vector_size__ (8)));\ntypedef short __v4hi __attribute__ ((__vector_size__ (8)));\ntypedef char __v8qi __attribute__ ((__vector_size__ (8)));\n# 64 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/mmintrin.h\" 3 4\nstatic __inline void __attribute__((__always_inline__, __nodebug__))\n\n_mm_empty (void)\n{\n  __builtin_ia32_emms ();\n}\n\n\nstatic __inline void __attribute__((__always_inline__, __nodebug__))\n\n_m_empty (void)\n{\n  _mm_empty ();\n}\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtsi32_si64 (int __i)\n{\n  return (__m64) __builtin_ia32_vec_init_v2si (__i, 0);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_from_int (int __i)\n{\n  return _mm_cvtsi32_si64 (__i);\n}\n\n\n\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_from_int64 (long long __i)\n{\n  return (__m64) __i;\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtsi64_m64 (long long __i)\n{\n  return (__m64) __i;\n}\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtsi64x_si64 (long long __i)\n{\n  return (__m64) __i;\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_set_pi64x (long long __i)\n{\n  return (__m64) __i;\n}\n\n\n\n\nstatic __inline int __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtsi64_si32 (__m64 __i)\n{\n  return __builtin_ia32_vec_ext_v2si ((__v2si)__i, 0);\n}\n\n\nstatic __inline int __attribute__((__always_inline__, __nodebug__))\n\n_m_to_int (__m64 __i)\n{\n  return _mm_cvtsi64_si32 (__i);\n}\n\n\n\n\n\n\nstatic __inline long long __attribute__((__always_inline__, __nodebug__))\n\n_m_to_int64 (__m64 __i)\n{\n  return (long long)__i;\n}\n\n\nstatic __inline long long __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtm64_si64 (__m64 __i)\n{\n  return (long long)__i;\n}\n\n\n\nstatic __inline long long __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtsi64_si64x (__m64 __i)\n{\n  return (long long)__i;\n}\n\n\n\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_packs_pi16 (__m64 __m1, __m64 __m2)\n{\n  return (__m64) __builtin_ia32_packsswb ((__v4hi)__m1, (__v4hi)__m2);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_packsswb (__m64 __m1, __m64 __m2)\n{\n  return _mm_packs_pi16 (__m1, __m2);\n}\n\n\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_packs_pi32 (__m64 __m1, __m64 __m2)\n{\n  return (__m64) __builtin_ia32_packssdw ((__v2si)__m1, (__v2si)__m2);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_packssdw (__m64 __m1, __m64 __m2)\n{\n  return _mm_packs_pi32 (__m1, __m2);\n}\n\n\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_packs_pu16 (__m64 __m1, __m64 __m2)\n{\n  return (__m64) __builtin_ia32_packuswb ((__v4hi)__m1, (__v4hi)__m2);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_packuswb (__m64 __m1, __m64 __m2)\n{\n  return _mm_packs_pu16 (__m1, __m2);\n}\n\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_unpackhi_pi8 (__m64 __m1, __m64 __m2)\n{\n  return (__m64) __builtin_ia32_punpckhbw ((__v8qi)__m1, (__v8qi)__m2);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_punpckhbw (__m64 __m1, __m64 __m2)\n{\n  return _mm_unpackhi_pi8 (__m1, __m2);\n}\n\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_unpackhi_pi16 (__m64 __m1, __m64 __m2)\n{\n  return (__m64) __builtin_ia32_punpckhwd ((__v4hi)__m1, (__v4hi)__m2);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_punpckhwd (__m64 __m1, __m64 __m2)\n{\n  return _mm_unpackhi_pi16 (__m1, __m2);\n}\n\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_unpackhi_pi32 (__m64 __m1, __m64 __m2)\n{\n  return (__m64) __builtin_ia32_punpckhdq ((__v2si)__m1, (__v2si)__m2);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_punpckhdq (__m64 __m1, __m64 __m2)\n{\n  return _mm_unpackhi_pi32 (__m1, __m2);\n}\n\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_unpacklo_pi8 (__m64 __m1, __m64 __m2)\n{\n  return (__m64) __builtin_ia32_punpcklbw ((__v8qi)__m1, (__v8qi)__m2);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_punpcklbw (__m64 __m1, __m64 __m2)\n{\n  return _mm_unpacklo_pi8 (__m1, __m2);\n}\n\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_unpacklo_pi16 (__m64 __m1, __m64 __m2)\n{\n  return (__m64) __builtin_ia32_punpcklwd ((__v4hi)__m1, (__v4hi)__m2);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_punpcklwd (__m64 __m1, __m64 __m2)\n{\n  return _mm_unpacklo_pi16 (__m1, __m2);\n}\n\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_unpacklo_pi32 (__m64 __m1, __m64 __m2)\n{\n  return (__m64) __builtin_ia32_punpckldq ((__v2si)__m1, (__v2si)__m2);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_punpckldq (__m64 __m1, __m64 __m2)\n{\n  return _mm_unpacklo_pi32 (__m1, __m2);\n}\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_add_pi8 (__m64 __m1, __m64 __m2)\n{\n  return (__m64) __builtin_ia32_paddb ((__v8qi)__m1, (__v8qi)__m2);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_paddb (__m64 __m1, __m64 __m2)\n{\n  return _mm_add_pi8 (__m1, __m2);\n}\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_add_pi16 (__m64 __m1, __m64 __m2)\n{\n  return (__m64) __builtin_ia32_paddw ((__v4hi)__m1, (__v4hi)__m2);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_paddw (__m64 __m1, __m64 __m2)\n{\n  return _mm_add_pi16 (__m1, __m2);\n}\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_add_pi32 (__m64 __m1, __m64 __m2)\n{\n  return (__m64) __builtin_ia32_paddd ((__v2si)__m1, (__v2si)__m2);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_paddd (__m64 __m1, __m64 __m2)\n{\n  return _mm_add_pi32 (__m1, __m2);\n}\n\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_add_si64 (__m64 __m1, __m64 __m2)\n{\n\n  return (__m64) __builtin_ia32_paddq (__m1, __m2);\n}\n\n\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_adds_pi8 (__m64 __m1, __m64 __m2)\n{\n  return (__m64) __builtin_ia32_paddsb ((__v8qi)__m1, (__v8qi)__m2);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_paddsb (__m64 __m1, __m64 __m2)\n{\n  return _mm_adds_pi8 (__m1, __m2);\n}\n\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_adds_pi16 (__m64 __m1, __m64 __m2)\n{\n  return (__m64) __builtin_ia32_paddsw ((__v4hi)__m1, (__v4hi)__m2);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_paddsw (__m64 __m1, __m64 __m2)\n{\n  return _mm_adds_pi16 (__m1, __m2);\n}\n\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_adds_pu8 (__m64 __m1, __m64 __m2)\n{\n  return (__m64) __builtin_ia32_paddusb ((__v8qi)__m1, (__v8qi)__m2);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_paddusb (__m64 __m1, __m64 __m2)\n{\n  return _mm_adds_pu8 (__m1, __m2);\n}\n\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_adds_pu16 (__m64 __m1, __m64 __m2)\n{\n  return (__m64) __builtin_ia32_paddusw ((__v4hi)__m1, (__v4hi)__m2);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_paddusw (__m64 __m1, __m64 __m2)\n{\n  return _mm_adds_pu16 (__m1, __m2);\n}\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_sub_pi8 (__m64 __m1, __m64 __m2)\n{\n  return (__m64) __builtin_ia32_psubb ((__v8qi)__m1, (__v8qi)__m2);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_psubb (__m64 __m1, __m64 __m2)\n{\n  return _mm_sub_pi8 (__m1, __m2);\n}\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_sub_pi16 (__m64 __m1, __m64 __m2)\n{\n  return (__m64) __builtin_ia32_psubw ((__v4hi)__m1, (__v4hi)__m2);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_psubw (__m64 __m1, __m64 __m2)\n{\n  return _mm_sub_pi16 (__m1, __m2);\n}\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_sub_pi32 (__m64 __m1, __m64 __m2)\n{\n  return (__m64) __builtin_ia32_psubd ((__v2si)__m1, (__v2si)__m2);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_psubd (__m64 __m1, __m64 __m2)\n{\n  return _mm_sub_pi32 (__m1, __m2);\n}\n\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_sub_si64 (__m64 __m1, __m64 __m2)\n{\n\n  return (__m64) __builtin_ia32_psubq (__m1, __m2);\n}\n\n\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_subs_pi8 (__m64 __m1, __m64 __m2)\n{\n  return (__m64) __builtin_ia32_psubsb ((__v8qi)__m1, (__v8qi)__m2);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_psubsb (__m64 __m1, __m64 __m2)\n{\n  return _mm_subs_pi8 (__m1, __m2);\n}\n\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_subs_pi16 (__m64 __m1, __m64 __m2)\n{\n  return (__m64) __builtin_ia32_psubsw ((__v4hi)__m1, (__v4hi)__m2);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_psubsw (__m64 __m1, __m64 __m2)\n{\n  return _mm_subs_pi16 (__m1, __m2);\n}\n\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_subs_pu8 (__m64 __m1, __m64 __m2)\n{\n  return (__m64) __builtin_ia32_psubusb ((__v8qi)__m1, (__v8qi)__m2);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_psubusb (__m64 __m1, __m64 __m2)\n{\n  return _mm_subs_pu8 (__m1, __m2);\n}\n\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_subs_pu16 (__m64 __m1, __m64 __m2)\n{\n  return (__m64) __builtin_ia32_psubusw ((__v4hi)__m1, (__v4hi)__m2);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_psubusw (__m64 __m1, __m64 __m2)\n{\n  return _mm_subs_pu16 (__m1, __m2);\n}\n\n\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_madd_pi16 (__m64 __m1, __m64 __m2)\n{\n  return (__m64) __builtin_ia32_pmaddwd ((__v4hi)__m1, (__v4hi)__m2);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_pmaddwd (__m64 __m1, __m64 __m2)\n{\n  return _mm_madd_pi16 (__m1, __m2);\n}\n\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_mulhi_pi16 (__m64 __m1, __m64 __m2)\n{\n  return (__m64) __builtin_ia32_pmulhw ((__v4hi)__m1, (__v4hi)__m2);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_pmulhw (__m64 __m1, __m64 __m2)\n{\n  return _mm_mulhi_pi16 (__m1, __m2);\n}\n\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_mullo_pi16 (__m64 __m1, __m64 __m2)\n{\n  return (__m64) __builtin_ia32_pmullw ((__v4hi)__m1, (__v4hi)__m2);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_pmullw (__m64 __m1, __m64 __m2)\n{\n  return _mm_mullo_pi16 (__m1, __m2);\n}\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_sll_pi16 (__m64 __m, __m64 __count)\n{\n\n  return (__m64) __builtin_ia32_psllw ((__v4hi)__m, __count);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_psllw (__m64 __m, __m64 __count)\n{\n  return _mm_sll_pi16 (__m, __count);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_slli_pi16 (__m64 __m, int __count)\n{\n\n  return (__m64) __builtin_ia32_psllwi ((__v4hi)__m, __count);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_psllwi (__m64 __m, int __count)\n{\n  return _mm_slli_pi16 (__m, __count);\n}\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_sll_pi32 (__m64 __m, __m64 __count)\n{\n\n  return (__m64) __builtin_ia32_pslld ((__v2si)__m, __count);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_pslld (__m64 __m, __m64 __count)\n{\n  return _mm_sll_pi32 (__m, __count);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_slli_pi32 (__m64 __m, int __count)\n{\n\n  return (__m64) __builtin_ia32_pslldi ((__v2si)__m, __count);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_pslldi (__m64 __m, int __count)\n{\n  return _mm_slli_pi32 (__m, __count);\n}\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_sll_si64 (__m64 __m, __m64 __count)\n{\n\n  return (__m64) __builtin_ia32_psllq (__m, __count);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_psllq (__m64 __m, __m64 __count)\n{\n  return _mm_sll_si64 (__m, __count);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_slli_si64 (__m64 __m, int __count)\n{\n\n  return (__m64) __builtin_ia32_psllqi (__m, __count);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_psllqi (__m64 __m, int __count)\n{\n  return _mm_slli_si64 (__m, __count);\n}\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_sra_pi16 (__m64 __m, __m64 __count)\n{\n\n  return (__m64) __builtin_ia32_psraw ((__v4hi)__m, __count);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_psraw (__m64 __m, __m64 __count)\n{\n  return _mm_sra_pi16 (__m, __count);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_srai_pi16 (__m64 __m, int __count)\n{\n\n  return (__m64) __builtin_ia32_psrawi ((__v4hi)__m, __count);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_psrawi (__m64 __m, int __count)\n{\n  return _mm_srai_pi16 (__m, __count);\n}\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_sra_pi32 (__m64 __m, __m64 __count)\n{\n\n  return (__m64) __builtin_ia32_psrad ((__v2si)__m, __count);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_psrad (__m64 __m, __m64 __count)\n{\n  return _mm_sra_pi32 (__m, __count);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_srai_pi32 (__m64 __m, int __count)\n{\n\n  return (__m64) __builtin_ia32_psradi ((__v2si)__m, __count);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_psradi (__m64 __m, int __count)\n{\n  return _mm_srai_pi32 (__m, __count);\n}\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_srl_pi16 (__m64 __m, __m64 __count)\n{\n\n  return (__m64) __builtin_ia32_psrlw ((__v4hi)__m, __count);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_psrlw (__m64 __m, __m64 __count)\n{\n  return _mm_srl_pi16 (__m, __count);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_srli_pi16 (__m64 __m, int __count)\n{\n\n  return (__m64) __builtin_ia32_psrlwi ((__v4hi)__m, __count);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_psrlwi (__m64 __m, int __count)\n{\n  return _mm_srli_pi16 (__m, __count);\n}\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_srl_pi32 (__m64 __m, __m64 __count)\n{\n\n  return (__m64) __builtin_ia32_psrld ((__v2si)__m, __count);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_psrld (__m64 __m, __m64 __count)\n{\n  return _mm_srl_pi32 (__m, __count);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_srli_pi32 (__m64 __m, int __count)\n{\n\n  return (__m64) __builtin_ia32_psrldi ((__v2si)__m, __count);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_psrldi (__m64 __m, int __count)\n{\n  return _mm_srli_pi32 (__m, __count);\n}\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_srl_si64 (__m64 __m, __m64 __count)\n{\n\n  return (__m64) __builtin_ia32_psrlq (__m, __count);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_psrlq (__m64 __m, __m64 __count)\n{\n  return _mm_srl_si64 (__m, __count);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_srli_si64 (__m64 __m, int __count)\n{\n\n  return (__m64) __builtin_ia32_psrlqi (__m, __count);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_psrlqi (__m64 __m, int __count)\n{\n  return _mm_srli_si64 (__m, __count);\n}\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_and_si64 (__m64 __m1, __m64 __m2)\n{\n  return __builtin_ia32_pand (__m1, __m2);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_pand (__m64 __m1, __m64 __m2)\n{\n  return _mm_and_si64 (__m1, __m2);\n}\n\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_andnot_si64 (__m64 __m1, __m64 __m2)\n{\n  return __builtin_ia32_pandn (__m1, __m2);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_pandn (__m64 __m1, __m64 __m2)\n{\n  return _mm_andnot_si64 (__m1, __m2);\n}\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_or_si64 (__m64 __m1, __m64 __m2)\n{\n  return __builtin_ia32_por (__m1, __m2);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_por (__m64 __m1, __m64 __m2)\n{\n  return _mm_or_si64 (__m1, __m2);\n}\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_xor_si64 (__m64 __m1, __m64 __m2)\n{\n  return __builtin_ia32_pxor (__m1, __m2);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_pxor (__m64 __m1, __m64 __m2)\n{\n  return _mm_xor_si64 (__m1, __m2);\n}\n\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpeq_pi8 (__m64 __m1, __m64 __m2)\n{\n  return (__m64) __builtin_ia32_pcmpeqb ((__v8qi)__m1, (__v8qi)__m2);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_pcmpeqb (__m64 __m1, __m64 __m2)\n{\n  return _mm_cmpeq_pi8 (__m1, __m2);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpgt_pi8 (__m64 __m1, __m64 __m2)\n{\n  return (__m64) __builtin_ia32_pcmpgtb ((__v8qi)__m1, (__v8qi)__m2);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_pcmpgtb (__m64 __m1, __m64 __m2)\n{\n  return _mm_cmpgt_pi8 (__m1, __m2);\n}\n\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpeq_pi16 (__m64 __m1, __m64 __m2)\n{\n  return (__m64) __builtin_ia32_pcmpeqw ((__v4hi)__m1, (__v4hi)__m2);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_pcmpeqw (__m64 __m1, __m64 __m2)\n{\n  return _mm_cmpeq_pi16 (__m1, __m2);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpgt_pi16 (__m64 __m1, __m64 __m2)\n{\n  return (__m64) __builtin_ia32_pcmpgtw ((__v4hi)__m1, (__v4hi)__m2);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_pcmpgtw (__m64 __m1, __m64 __m2)\n{\n  return _mm_cmpgt_pi16 (__m1, __m2);\n}\n\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpeq_pi32 (__m64 __m1, __m64 __m2)\n{\n  return (__m64) __builtin_ia32_pcmpeqd ((__v2si)__m1, (__v2si)__m2);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_pcmpeqd (__m64 __m1, __m64 __m2)\n{\n  return _mm_cmpeq_pi32 (__m1, __m2);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpgt_pi32 (__m64 __m1, __m64 __m2)\n{\n  return (__m64) __builtin_ia32_pcmpgtd ((__v2si)__m1, (__v2si)__m2);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_pcmpgtd (__m64 __m1, __m64 __m2)\n{\n  return _mm_cmpgt_pi32 (__m1, __m2);\n}\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_setzero_si64 (void)\n{\n  return (__m64)0LL;\n}\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_set_pi32 (int __i1, int __i0)\n{\n  return (__m64) __builtin_ia32_vec_init_v2si (__i0, __i1);\n}\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_set_pi16 (short __w3, short __w2, short __w1, short __w0)\n{\n  return (__m64) __builtin_ia32_vec_init_v4hi (__w0, __w1, __w2, __w3);\n}\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_set_pi8 (char __b7, char __b6, char __b5, char __b4,\n      char __b3, char __b2, char __b1, char __b0)\n{\n  return (__m64) __builtin_ia32_vec_init_v8qi (__b0, __b1, __b2, __b3,\n            __b4, __b5, __b6, __b7);\n}\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_setr_pi32 (int __i0, int __i1)\n{\n  return _mm_set_pi32 (__i1, __i0);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_setr_pi16 (short __w0, short __w1, short __w2, short __w3)\n{\n  return _mm_set_pi16 (__w3, __w2, __w1, __w0);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_setr_pi8 (char __b0, char __b1, char __b2, char __b3,\n       char __b4, char __b5, char __b6, char __b7)\n{\n  return _mm_set_pi8 (__b7, __b6, __b5, __b4, __b3, __b2, __b1, __b0);\n}\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_set1_pi32 (int __i)\n{\n  return _mm_set_pi32 (__i, __i);\n}\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_set1_pi16 (short __w)\n{\n  return _mm_set_pi16 (__w, __w, __w, __w);\n}\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_set1_pi8 (char __b)\n{\n  return _mm_set_pi8 (__b, __b, __b, __b, __b, __b, __b, __b);\n}\n# 41 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/xmmintrin.h\" 2 3 4\n\n\n\n\n# 1 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/mm_malloc.h\" 1 3 4\n# 31 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/mm_malloc.h\" 3 4\n# 1 \"/usr/include/errno.h\" 1 3 4\n# 32 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/mm_malloc.h\" 2 3 4\n\nstatic __inline__ void*\n_mm_malloc (size_t size, size_t align)\n{\n  void * malloc_ptr;\n  void * aligned_ptr;\n\n\n  if (align & (align - 1))\n    {\n      (*__error()) = 22;\n      return ((void*) 0);\n    }\n\n  if (size == 0)\n    return ((void *) 0);\n\n\n\n\n\n    if (align < 2 * sizeof (void *))\n      align = 2 * sizeof (void *);\n\n  malloc_ptr = malloc (size + align);\n  if (!malloc_ptr)\n    return ((void *) 0);\n\n\n  aligned_ptr = (void *) (((size_t) malloc_ptr + align)\n     & ~((size_t) (align) - 1));\n\n\n  ((void **) aligned_ptr) [-1] = malloc_ptr;\n\n  return aligned_ptr;\n}\n\nstatic __inline__ void\n_mm_free (void * aligned_ptr)\n{\n  if (aligned_ptr)\n    free (((void **) aligned_ptr) [-1]);\n}\n# 46 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/xmmintrin.h\" 2 3 4\n\n\n\n\n\ntypedef float __m128 __attribute__ ((__vector_size__ (16), __may_alias__));\n\n\ntypedef float __v4sf __attribute__ ((__vector_size__ (16)));\n\n\n\n\n\n\nenum _mm_hint\n{\n  _MM_HINT_T0 = 3,\n  _MM_HINT_T1 = 2,\n  _MM_HINT_T2 = 1,\n  _MM_HINT_NTA = 0\n};\n# 112 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/xmmintrin.h\" 3 4\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_setzero_ps (void)\n{\n  return __extension__ (__m128){ 0.0f, 0.0f, 0.0f, 0.0f };\n}\n\n\n\n\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_add_ss (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_addss ((__v4sf)__A, (__v4sf)__B);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_sub_ss (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_subss ((__v4sf)__A, (__v4sf)__B);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_mul_ss (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_mulss ((__v4sf)__A, (__v4sf)__B);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_div_ss (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_divss ((__v4sf)__A, (__v4sf)__B);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_sqrt_ss (__m128 __A)\n{\n  return (__m128) __builtin_ia32_sqrtss ((__v4sf)__A);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_rcp_ss (__m128 __A)\n{\n  return (__m128) __builtin_ia32_rcpss ((__v4sf)__A);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_rsqrt_ss (__m128 __A)\n{\n  return (__m128) __builtin_ia32_rsqrtss ((__v4sf)__A);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_min_ss (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_minss ((__v4sf)__A, (__v4sf)__B);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_max_ss (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_maxss ((__v4sf)__A, (__v4sf)__B);\n}\n\n\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_add_ps (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_addps ((__v4sf)__A, (__v4sf)__B);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_sub_ps (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_subps ((__v4sf)__A, (__v4sf)__B);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_mul_ps (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_mulps ((__v4sf)__A, (__v4sf)__B);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_div_ps (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_divps ((__v4sf)__A, (__v4sf)__B);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_sqrt_ps (__m128 __A)\n{\n  return (__m128) __builtin_ia32_sqrtps ((__v4sf)__A);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_rcp_ps (__m128 __A)\n{\n  return (__m128) __builtin_ia32_rcpps ((__v4sf)__A);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_rsqrt_ps (__m128 __A)\n{\n  return (__m128) __builtin_ia32_rsqrtps ((__v4sf)__A);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_min_ps (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_minps ((__v4sf)__A, (__v4sf)__B);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_max_ps (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_maxps ((__v4sf)__A, (__v4sf)__B);\n}\n\n\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_and_ps (__m128 __A, __m128 __B)\n{\n  return __builtin_ia32_andps (__A, __B);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_andnot_ps (__m128 __A, __m128 __B)\n{\n  return __builtin_ia32_andnps (__A, __B);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_or_ps (__m128 __A, __m128 __B)\n{\n  return __builtin_ia32_orps (__A, __B);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_xor_ps (__m128 __A, __m128 __B)\n{\n  return __builtin_ia32_xorps (__A, __B);\n}\n\n\n\n\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpeq_ss (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_cmpeqss ((__v4sf)__A, (__v4sf)__B);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmplt_ss (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_cmpltss ((__v4sf)__A, (__v4sf)__B);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmple_ss (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_cmpless ((__v4sf)__A, (__v4sf)__B);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpgt_ss (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_movss ((__v4sf) __A,\n     (__v4sf)\n     __builtin_ia32_cmpltss ((__v4sf) __B,\n        (__v4sf)\n        __A));\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpge_ss (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_movss ((__v4sf) __A,\n     (__v4sf)\n     __builtin_ia32_cmpless ((__v4sf) __B,\n        (__v4sf)\n        __A));\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpneq_ss (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_cmpneqss ((__v4sf)__A, (__v4sf)__B);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpnlt_ss (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_cmpnltss ((__v4sf)__A, (__v4sf)__B);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpnle_ss (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_cmpnless ((__v4sf)__A, (__v4sf)__B);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpngt_ss (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_movss ((__v4sf) __A,\n     (__v4sf)\n     __builtin_ia32_cmpnltss ((__v4sf) __B,\n         (__v4sf)\n         __A));\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpnge_ss (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_movss ((__v4sf) __A,\n     (__v4sf)\n     __builtin_ia32_cmpnless ((__v4sf) __B,\n         (__v4sf)\n         __A));\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpord_ss (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_cmpordss ((__v4sf)__A, (__v4sf)__B);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpunord_ss (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_cmpunordss ((__v4sf)__A, (__v4sf)__B);\n}\n\n\n\n\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpeq_ps (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_cmpeqps ((__v4sf)__A, (__v4sf)__B);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmplt_ps (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_cmpltps ((__v4sf)__A, (__v4sf)__B);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmple_ps (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_cmpleps ((__v4sf)__A, (__v4sf)__B);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpgt_ps (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_cmpgtps ((__v4sf)__A, (__v4sf)__B);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpge_ps (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_cmpgeps ((__v4sf)__A, (__v4sf)__B);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpneq_ps (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_cmpneqps ((__v4sf)__A, (__v4sf)__B);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpnlt_ps (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_cmpnltps ((__v4sf)__A, (__v4sf)__B);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpnle_ps (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_cmpnleps ((__v4sf)__A, (__v4sf)__B);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpngt_ps (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_cmpngtps ((__v4sf)__A, (__v4sf)__B);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpnge_ps (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_cmpngeps ((__v4sf)__A, (__v4sf)__B);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpord_ps (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_cmpordps ((__v4sf)__A, (__v4sf)__B);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpunord_ps (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_cmpunordps ((__v4sf)__A, (__v4sf)__B);\n}\n\n\n\n\n\nstatic __inline int __attribute__((__always_inline__, __nodebug__))\n\n_mm_comieq_ss (__m128 __A, __m128 __B)\n{\n  return __builtin_ia32_comieq ((__v4sf)__A, (__v4sf)__B);\n}\n\n\nstatic __inline int __attribute__((__always_inline__, __nodebug__))\n\n_mm_comilt_ss (__m128 __A, __m128 __B)\n{\n  return __builtin_ia32_comilt ((__v4sf)__A, (__v4sf)__B);\n}\n\n\nstatic __inline int __attribute__((__always_inline__, __nodebug__))\n\n_mm_comile_ss (__m128 __A, __m128 __B)\n{\n  return __builtin_ia32_comile ((__v4sf)__A, (__v4sf)__B);\n}\n\n\nstatic __inline int __attribute__((__always_inline__, __nodebug__))\n\n_mm_comigt_ss (__m128 __A, __m128 __B)\n{\n  return __builtin_ia32_comigt ((__v4sf)__A, (__v4sf)__B);\n}\n\n\nstatic __inline int __attribute__((__always_inline__, __nodebug__))\n\n_mm_comige_ss (__m128 __A, __m128 __B)\n{\n  return __builtin_ia32_comige ((__v4sf)__A, (__v4sf)__B);\n}\n\n\nstatic __inline int __attribute__((__always_inline__, __nodebug__))\n\n_mm_comineq_ss (__m128 __A, __m128 __B)\n{\n  return __builtin_ia32_comineq ((__v4sf)__A, (__v4sf)__B);\n}\n\n\nstatic __inline int __attribute__((__always_inline__, __nodebug__))\n\n_mm_ucomieq_ss (__m128 __A, __m128 __B)\n{\n  return __builtin_ia32_ucomieq ((__v4sf)__A, (__v4sf)__B);\n}\n\n\nstatic __inline int __attribute__((__always_inline__, __nodebug__))\n\n_mm_ucomilt_ss (__m128 __A, __m128 __B)\n{\n  return __builtin_ia32_ucomilt ((__v4sf)__A, (__v4sf)__B);\n}\n\n\nstatic __inline int __attribute__((__always_inline__, __nodebug__))\n\n_mm_ucomile_ss (__m128 __A, __m128 __B)\n{\n  return __builtin_ia32_ucomile ((__v4sf)__A, (__v4sf)__B);\n}\n\n\nstatic __inline int __attribute__((__always_inline__, __nodebug__))\n\n_mm_ucomigt_ss (__m128 __A, __m128 __B)\n{\n  return __builtin_ia32_ucomigt ((__v4sf)__A, (__v4sf)__B);\n}\n\n\nstatic __inline int __attribute__((__always_inline__, __nodebug__))\n\n_mm_ucomige_ss (__m128 __A, __m128 __B)\n{\n  return __builtin_ia32_ucomige ((__v4sf)__A, (__v4sf)__B);\n}\n\n\nstatic __inline int __attribute__((__always_inline__, __nodebug__))\n\n_mm_ucomineq_ss (__m128 __A, __m128 __B)\n{\n  return __builtin_ia32_ucomineq ((__v4sf)__A, (__v4sf)__B);\n}\n\n\n\n\nstatic __inline int __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtss_si32 (__m128 __A)\n{\n  return __builtin_ia32_cvtss2si ((__v4sf) __A);\n}\n\n\nstatic __inline int __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvt_ss2si (__m128 __A)\n{\n  return _mm_cvtss_si32 (__A);\n}\n\n\n\n\n\n\n\nstatic __inline long long __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtss_si64 (__m128 __A)\n{\n  return __builtin_ia32_cvtss2si64 ((__v4sf) __A);\n}\n\n\n\nstatic __inline long long __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtss_si64x (__m128 __A)\n{\n  return __builtin_ia32_cvtss2si64 ((__v4sf) __A);\n}\n\n\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtps_pi32 (__m128 __A)\n{\n  return (__m64) __builtin_ia32_cvtps2pi ((__v4sf) __A);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvt_ps2pi (__m128 __A)\n{\n  return _mm_cvtps_pi32 (__A);\n}\n\n\n\nstatic __inline int __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvttss_si32 (__m128 __A)\n{\n  return __builtin_ia32_cvttss2si ((__v4sf) __A);\n}\n\n\nstatic __inline int __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtt_ss2si (__m128 __A)\n{\n  return _mm_cvttss_si32 (__A);\n}\n\n\n\n\n\n\nstatic __inline long long __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvttss_si64 (__m128 __A)\n{\n  return __builtin_ia32_cvttss2si64 ((__v4sf) __A);\n}\n\n\n\nstatic __inline long long __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvttss_si64x (__m128 __A)\n{\n  return __builtin_ia32_cvttss2si64 ((__v4sf) __A);\n}\n\n\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvttps_pi32 (__m128 __A)\n{\n  return (__m64) __builtin_ia32_cvttps2pi ((__v4sf) __A);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtt_ps2pi (__m128 __A)\n{\n  return _mm_cvttps_pi32 (__A);\n}\n\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtsi32_ss (__m128 __A, int __B)\n{\n  return (__m128) __builtin_ia32_cvtsi2ss ((__v4sf) __A, __B);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvt_si2ss (__m128 __A, int __B)\n{\n  return _mm_cvtsi32_ss (__A, __B);\n}\n\n\n\n\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtsi64_ss (__m128 __A, long long __B)\n{\n  return (__m128) __builtin_ia32_cvtsi642ss ((__v4sf) __A, __B);\n}\n\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtsi64x_ss (__m128 __A, long long __B)\n{\n  return (__m128) __builtin_ia32_cvtsi642ss ((__v4sf) __A, __B);\n}\n\n\n\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtpi32_ps (__m128 __A, __m64 __B)\n{\n  return (__m128) __builtin_ia32_cvtpi2ps ((__v4sf) __A, (__v2si)__B);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvt_pi2ps (__m128 __A, __m64 __B)\n{\n  return _mm_cvtpi32_ps (__A, __B);\n}\n\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtpi16_ps (__m64 __A)\n{\n  __v4hi __sign;\n  __v2si __hisi, __losi;\n  __v4sf __r;\n\n\n\n\n  __sign = __builtin_ia32_pcmpgtw ((__v4hi)0LL, (__v4hi)__A);\n\n\n  __hisi = (__v2si) __builtin_ia32_punpckhwd ((__v4hi)__A, __sign);\n  __losi = (__v2si) __builtin_ia32_punpcklwd ((__v4hi)__A, __sign);\n\n\n  __r = (__v4sf) _mm_setzero_ps ();\n  __r = __builtin_ia32_cvtpi2ps (__r, __hisi);\n  __r = __builtin_ia32_movlhps (__r, __r);\n  __r = __builtin_ia32_cvtpi2ps (__r, __losi);\n\n  return (__m128) __r;\n}\n\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtpu16_ps (__m64 __A)\n{\n  __v2si __hisi, __losi;\n  __v4sf __r;\n\n\n  __hisi = (__v2si) __builtin_ia32_punpckhwd ((__v4hi)__A, (__v4hi)0LL);\n  __losi = (__v2si) __builtin_ia32_punpcklwd ((__v4hi)__A, (__v4hi)0LL);\n\n\n  __r = (__v4sf) _mm_setzero_ps ();\n  __r = __builtin_ia32_cvtpi2ps (__r, __hisi);\n  __r = __builtin_ia32_movlhps (__r, __r);\n  __r = __builtin_ia32_cvtpi2ps (__r, __losi);\n\n  return (__m128) __r;\n}\n\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtpi8_ps (__m64 __A)\n{\n  __v8qi __sign;\n\n\n\n\n  __sign = __builtin_ia32_pcmpgtb ((__v8qi)0LL, (__v8qi)__A);\n\n\n  __A = (__m64) __builtin_ia32_punpcklbw ((__v8qi)__A, __sign);\n\n  return _mm_cvtpi16_ps(__A);\n}\n\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtpu8_ps(__m64 __A)\n{\n  __A = (__m64) __builtin_ia32_punpcklbw ((__v8qi)__A, (__v8qi)0LL);\n  return _mm_cvtpu16_ps(__A);\n}\n\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtpi32x2_ps(__m64 __A, __m64 __B)\n{\n  __v4sf __zero = (__v4sf) _mm_setzero_ps ();\n  __v4sf __sfa = __builtin_ia32_cvtpi2ps (__zero, (__v2si)__A);\n  __v4sf __sfb = __builtin_ia32_cvtpi2ps (__zero, (__v2si)__B);\n  return (__m128) __builtin_ia32_movlhps (__sfa, __sfb);\n}\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtps_pi16(__m128 __A)\n{\n  __v4sf __hisf = (__v4sf)__A;\n  __v4sf __losf = __builtin_ia32_movhlps (__hisf, __hisf);\n  __v2si __hisi = __builtin_ia32_cvtps2pi (__hisf);\n  __v2si __losi = __builtin_ia32_cvtps2pi (__losf);\n  return (__m64) __builtin_ia32_packssdw (__hisi, __losi);\n}\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtps_pi8(__m128 __A)\n{\n  __v4hi __tmp = (__v4hi) _mm_cvtps_pi16 (__A);\n  return (__m64) __builtin_ia32_packsswb (__tmp, (__v4hi)0LL);\n}\n# 922 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/xmmintrin.h\" 3 4\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_unpackhi_ps (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_unpckhps ((__v4sf)__A, (__v4sf)__B);\n}\n\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_unpacklo_ps (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_unpcklps ((__v4sf)__A, (__v4sf)__B);\n}\n\n\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_loadh_pi (__m128 __A, __m64 const *__P)\n{\n  return (__m128) __builtin_ia32_loadhps ((__v4sf)__A, (__v2si *)__P);\n}\n\n\n\nstatic __inline void __attribute__((__always_inline__, __nodebug__))\n\n_mm_storeh_pi (__m64 *__P, __m128 __A)\n{\n  __builtin_ia32_storehps ((__v2si *)__P, (__v4sf)__A);\n}\n\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_movehl_ps (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_movhlps ((__v4sf)__A, (__v4sf)__B);\n}\n\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_movelh_ps (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_movlhps ((__v4sf)__A, (__v4sf)__B);\n}\n\n\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_loadl_pi (__m128 __A, __m64 const *__P)\n{\n  return (__m128) __builtin_ia32_loadlps ((__v4sf)__A, (__v2si *)__P);\n}\n\n\n\nstatic __inline void __attribute__((__always_inline__, __nodebug__))\n\n_mm_storel_pi (__m64 *__P, __m128 __A)\n{\n  __builtin_ia32_storelps ((__v2si *)__P, (__v4sf)__A);\n}\n\n\n\nstatic __inline int __attribute__((__always_inline__, __nodebug__))\n\n_mm_movemask_ps (__m128 __A)\n{\n  return __builtin_ia32_movmskps ((__v4sf)__A);\n}\n\n\n\nstatic __inline unsigned int __attribute__((__always_inline__, __nodebug__))\n\n_mm_getcsr (void)\n{\n  return __builtin_ia32_stmxcsr ();\n}\n\n\n\nstatic __inline unsigned int __attribute__((__always_inline__, __nodebug__))\n\n_MM_GET_EXCEPTION_STATE (void)\n{\n  return _mm_getcsr() & 0x003f;\n}\n\n\nstatic __inline unsigned int __attribute__((__always_inline__, __nodebug__))\n\n_MM_GET_EXCEPTION_MASK (void)\n{\n  return _mm_getcsr() & 0x1f80;\n}\n\n\nstatic __inline unsigned int __attribute__((__always_inline__, __nodebug__))\n\n_MM_GET_ROUNDING_MODE (void)\n{\n  return _mm_getcsr() & 0x6000;\n}\n\n\nstatic __inline unsigned int __attribute__((__always_inline__, __nodebug__))\n\n_MM_GET_FLUSH_ZERO_MODE (void)\n{\n  return _mm_getcsr() & 0x8000;\n}\n\n\n\nstatic __inline void __attribute__((__always_inline__, __nodebug__))\n\n_mm_setcsr (unsigned int __I)\n{\n  __builtin_ia32_ldmxcsr (__I);\n}\n\n\n\nstatic __inline void __attribute__((__always_inline__, __nodebug__))\n\n_MM_SET_EXCEPTION_STATE(unsigned int __mask)\n{\n  _mm_setcsr((_mm_getcsr() & ~0x003f) | __mask);\n}\n\n\nstatic __inline void __attribute__((__always_inline__, __nodebug__))\n\n_MM_SET_EXCEPTION_MASK (unsigned int __mask)\n{\n  _mm_setcsr((_mm_getcsr() & ~0x1f80) | __mask);\n}\n\n\nstatic __inline void __attribute__((__always_inline__, __nodebug__))\n\n_MM_SET_ROUNDING_MODE (unsigned int __mode)\n{\n  _mm_setcsr((_mm_getcsr() & ~0x6000) | __mode);\n}\n\n\nstatic __inline void __attribute__((__always_inline__, __nodebug__))\n\n_MM_SET_FLUSH_ZERO_MODE (unsigned int __mode)\n{\n  _mm_setcsr((_mm_getcsr() & ~0x8000) | __mode);\n}\n\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_set_ss (float __F)\n{\n  return __extension__ (__m128)(__v4sf){ __F, 0, 0, 0 };\n}\n\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_set1_ps (float __F)\n{\n  return __extension__ (__m128)(__v4sf){ __F, __F, __F, __F };\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_set_ps1 (float __F)\n{\n  return _mm_set1_ps (__F);\n}\n\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_load_ss (float const *__P)\n{\n  return _mm_set_ss (*__P);\n}\n\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_load1_ps (float const *__P)\n{\n  return _mm_set1_ps (*__P);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_load_ps1 (float const *__P)\n{\n  return _mm_load1_ps (__P);\n}\n\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_load_ps (float const *__P)\n{\n  return (__m128) *(__v4sf *)__P;\n}\n\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_loadu_ps (float const *__P)\n{\n  return (__m128) __builtin_ia32_loadups (__P);\n}\n\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_loadr_ps (float const *__P)\n{\n  __v4sf __tmp = *(__v4sf *)__P;\n  return (__m128) __builtin_ia32_shufps (__tmp, __tmp, (((0) << 6) | ((1) << 4) | ((2) << 2) | (3)));\n}\n\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_set_ps (const float __Z, const float __Y, const float __X, const float __W)\n{\n  return __extension__ (__m128)(__v4sf){ __W, __X, __Y, __Z };\n}\n\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_setr_ps (float __Z, float __Y, float __X, float __W)\n{\n  return __extension__ (__m128)(__v4sf){ __Z, __Y, __X, __W };\n}\n\n\n\nstatic __inline void __attribute__((__always_inline__, __nodebug__))\n\n_mm_store_ss (float *__P, __m128 __A)\n{\n  *__P = __builtin_ia32_vec_ext_v4sf ((__v4sf)__A, 0);\n}\n\n\nstatic __inline float __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtss_f32 (__m128 __A)\n{\n  return __builtin_ia32_vec_ext_v4sf ((__v4sf)__A, 0);\n}\n\n\n\nstatic __inline void __attribute__((__always_inline__, __nodebug__))\n\n_mm_store_ps (float *__P, __m128 __A)\n{\n  *(__v4sf *)__P = (__v4sf)__A;\n}\n\n\n\nstatic __inline void __attribute__((__always_inline__, __nodebug__))\n\n_mm_storeu_ps (float *__P, __m128 __A)\n{\n  __builtin_ia32_storeups (__P, (__v4sf)__A);\n}\n\n\n\nstatic __inline void __attribute__((__always_inline__, __nodebug__))\n\n_mm_store1_ps (float *__P, __m128 __A)\n{\n  __v4sf __va = (__v4sf)__A;\n  __v4sf __tmp = __builtin_ia32_shufps (__va, __va, (((0) << 6) | ((0) << 4) | ((0) << 2) | (0)));\n  _mm_storeu_ps (__P, __tmp);\n}\n\n\nstatic __inline void __attribute__((__always_inline__, __nodebug__))\n\n_mm_store_ps1 (float *__P, __m128 __A)\n{\n  _mm_store1_ps (__P, __A);\n}\n\n\n\nstatic __inline void __attribute__((__always_inline__, __nodebug__))\n\n_mm_storer_ps (float *__P, __m128 __A)\n{\n  __v4sf __va = (__v4sf)__A;\n  __v4sf __tmp = __builtin_ia32_shufps (__va, __va, (((0) << 6) | ((1) << 4) | ((2) << 2) | (3)));\n  _mm_store_ps (__P, __tmp);\n}\n\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_move_ss (__m128 __A, __m128 __B)\n{\n  return (__m128) __builtin_ia32_movss ((__v4sf)__A, (__v4sf)__B);\n}\n# 1307 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/xmmintrin.h\" 3 4\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_max_pi16 (__m64 __A, __m64 __B)\n{\n  return (__m64) __builtin_ia32_pmaxsw ((__v4hi)__A, (__v4hi)__B);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_pmaxsw (__m64 __A, __m64 __B)\n{\n  return _mm_max_pi16 (__A, __B);\n}\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_max_pu8 (__m64 __A, __m64 __B)\n{\n  return (__m64) __builtin_ia32_pmaxub ((__v8qi)__A, (__v8qi)__B);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_pmaxub (__m64 __A, __m64 __B)\n{\n  return _mm_max_pu8 (__A, __B);\n}\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_min_pi16 (__m64 __A, __m64 __B)\n{\n  return (__m64) __builtin_ia32_pminsw ((__v4hi)__A, (__v4hi)__B);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_pminsw (__m64 __A, __m64 __B)\n{\n  return _mm_min_pi16 (__A, __B);\n}\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_min_pu8 (__m64 __A, __m64 __B)\n{\n  return (__m64) __builtin_ia32_pminub ((__v8qi)__A, (__v8qi)__B);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_pminub (__m64 __A, __m64 __B)\n{\n  return _mm_min_pu8 (__A, __B);\n}\n\n\n\nstatic __inline int __attribute__((__always_inline__, __nodebug__))\n\n_mm_movemask_pi8 (__m64 __A)\n{\n  return __builtin_ia32_pmovmskb ((__v8qi)__A);\n}\n\n\nstatic __inline int __attribute__((__always_inline__, __nodebug__))\n\n_m_pmovmskb (__m64 __A)\n{\n  return _mm_movemask_pi8 (__A);\n}\n\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_mulhi_pu16 (__m64 __A, __m64 __B)\n{\n  return (__m64) __builtin_ia32_pmulhuw ((__v4hi)__A, (__v4hi)__B);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_pmulhuw (__m64 __A, __m64 __B)\n{\n  return _mm_mulhi_pu16 (__A, __B);\n}\n# 1436 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/xmmintrin.h\" 3 4\nstatic __inline void __attribute__((__always_inline__, __nodebug__))\n\n_mm_maskmove_si64 (__m64 __A, __m64 __N, char *__P)\n{\n  __builtin_ia32_maskmovq ((__v8qi)__A, (__v8qi)__N, __P);\n}\n\n\nstatic __inline void __attribute__((__always_inline__, __nodebug__))\n\n_m_maskmovq (__m64 __A, __m64 __N, char *__P)\n{\n  _mm_maskmove_si64 (__A, __N, __P);\n}\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_avg_pu8 (__m64 __A, __m64 __B)\n{\n  return (__m64) __builtin_ia32_pavgb ((__v8qi)__A, (__v8qi)__B);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_pavgb (__m64 __A, __m64 __B)\n{\n  return _mm_avg_pu8 (__A, __B);\n}\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_avg_pu16 (__m64 __A, __m64 __B)\n{\n  return (__m64) __builtin_ia32_pavgw ((__v4hi)__A, (__v4hi)__B);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_pavgw (__m64 __A, __m64 __B)\n{\n  return _mm_avg_pu16 (__A, __B);\n}\n\n\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_sad_pu8 (__m64 __A, __m64 __B)\n{\n  return (__m64) __builtin_ia32_psadbw ((__v8qi)__A, (__v8qi)__B);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_m_psadbw (__m64 __A, __m64 __B)\n{\n  return _mm_sad_pu8 (__A, __B);\n}\n# 1521 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/xmmintrin.h\" 3 4\nstatic __inline void __attribute__((__always_inline__, __nodebug__))\n\n_mm_stream_pi (__m64 *__P, __m64 __A)\n{\n\n  __builtin_ia32_movntq (__P, __A);\n}\n\n\n\nstatic __inline void __attribute__((__always_inline__, __nodebug__))\n\n_mm_stream_ps (float *__P, __m128 __A)\n{\n  __builtin_ia32_movntps (__P, (__v4sf)__A);\n}\n\n\n\n\nstatic __inline void __attribute__((__always_inline__, __nodebug__))\n\n_mm_sfence (void)\n{\n  __builtin_ia32_sfence ();\n}\n\n\n\n\n\nstatic __inline void __attribute__((__always_inline__, __nodebug__))\n\n_mm_pause (void)\n{\n  __asm__ __volatile__ (\"rep; nop\" : : );\n}\n# 1579 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/xmmintrin.h\" 3 4\n# 1 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/emmintrin.h\" 1 3 4\n# 35 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/emmintrin.h\" 3 4\n# 1 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/xmmintrin.h\" 1 3 4\n# 36 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/emmintrin.h\" 2 3 4\n\n\ntypedef double __v2df __attribute__ ((__vector_size__ (16)));\ntypedef long long __v2di __attribute__ ((__vector_size__ (16)));\ntypedef int __v4si __attribute__ ((__vector_size__ (16)));\ntypedef short __v8hi __attribute__ ((__vector_size__ (16)));\ntypedef char __v16qi __attribute__ ((__vector_size__ (16)));\n\n\n\ntypedef long long __m128i __attribute__ ((__vector_size__ (16), __may_alias__));\ntypedef double __m128d __attribute__ ((__vector_size__ (16), __may_alias__));\n# 69 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/emmintrin.h\" 3 4\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_set_sd (double __F)\n{\n  return __extension__ (__m128d){ __F, 0 };\n}\n\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_set1_pd (double __F)\n{\n  return __extension__ (__m128d){ __F, __F };\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_set_pd1 (double __F)\n{\n  return _mm_set1_pd (__F);\n}\n\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_set_pd (double __W, double __X)\n{\n  return __extension__ (__m128d){ __X, __W };\n}\n\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_setr_pd (double __W, double __X)\n{\n  return __extension__ (__m128d){ __W, __X };\n}\n\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_setzero_pd (void)\n{\n  return __extension__ (__m128d){ 0.0, 0.0 };\n}\n\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_move_sd (__m128d __A, __m128d __B)\n{\n  return (__m128d) __builtin_ia32_movsd ((__v2df)__A, (__v2df)__B);\n}\n\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_load_pd (double const *__P)\n{\n  return *(__m128d *)__P;\n}\n\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_loadu_pd (double const *__P)\n{\n  return __builtin_ia32_loadupd (__P);\n}\n\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_load1_pd (double const *__P)\n{\n  return _mm_set1_pd (*__P);\n}\n\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_load_sd (double const *__P)\n{\n  return _mm_set_sd (*__P);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_load_pd1 (double const *__P)\n{\n  return _mm_load1_pd (__P);\n}\n\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_loadr_pd (double const *__P)\n{\n  __m128d __tmp = _mm_load_pd (__P);\n  return __builtin_ia32_shufpd (__tmp, __tmp, (((0) << 1) | (1)));\n}\n\n\n\nstatic __inline void __attribute__((__always_inline__, __nodebug__))\n\n_mm_store_pd (double *__P, __m128d __A)\n{\n  *(__m128d *)__P = __A;\n}\n\n\n\nstatic __inline void __attribute__((__always_inline__, __nodebug__))\n\n_mm_storeu_pd (double *__P, __m128d __A)\n{\n  __builtin_ia32_storeupd (__P, __A);\n}\n\n\n\nstatic __inline void __attribute__((__always_inline__, __nodebug__))\n\n_mm_store_sd (double *__P, __m128d __A)\n{\n  *__P = __builtin_ia32_vec_ext_v2df (__A, 0);\n}\n\n\nstatic __inline double __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtsd_f64 (__m128d __A)\n{\n  return __builtin_ia32_vec_ext_v2df (__A, 0);\n}\n\n\nstatic __inline void __attribute__((__always_inline__, __nodebug__))\n\n_mm_storel_pd (double *__P, __m128d __A)\n{\n  _mm_store_sd (__P, __A);\n}\n\n\n\nstatic __inline void __attribute__((__always_inline__, __nodebug__))\n\n_mm_storeh_pd (double *__P, __m128d __A)\n{\n  *__P = __builtin_ia32_vec_ext_v2df (__A, 1);\n}\n\n\n\n\nstatic __inline void __attribute__((__always_inline__, __nodebug__))\n\n_mm_store1_pd (double *__P, __m128d __A)\n{\n  _mm_store_pd (__P, __builtin_ia32_shufpd (__A, __A, (((0) << 1) | (0))));\n}\n\n\nstatic __inline void __attribute__((__always_inline__, __nodebug__))\n\n_mm_store_pd1 (double *__P, __m128d __A)\n{\n  _mm_store1_pd (__P, __A);\n}\n\n\n\nstatic __inline void __attribute__((__always_inline__, __nodebug__))\n\n_mm_storer_pd (double *__P, __m128d __A)\n{\n  _mm_store_pd (__P, __builtin_ia32_shufpd (__A, __A, (((0) << 1) | (1))));\n}\n\n\nstatic __inline int __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtsi128_si32 (__m128i __A)\n{\n  return __builtin_ia32_vec_ext_v4si ((__v4si)__A, 0);\n}\n\n\n\n\nstatic __inline long long __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtsi128_si64 (__m128i __A)\n{\n  return __builtin_ia32_vec_ext_v2di ((__v2di)__A, 0);\n}\n\n\n\nstatic __inline long long __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtsi128_si64x (__m128i __A)\n{\n  return __builtin_ia32_vec_ext_v2di ((__v2di)__A, 0);\n}\n\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_add_pd (__m128d __A, __m128d __B)\n{\n  return (__m128d)__builtin_ia32_addpd ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_add_sd (__m128d __A, __m128d __B)\n{\n  return (__m128d)__builtin_ia32_addsd ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_sub_pd (__m128d __A, __m128d __B)\n{\n  return (__m128d)__builtin_ia32_subpd ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_sub_sd (__m128d __A, __m128d __B)\n{\n  return (__m128d)__builtin_ia32_subsd ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_mul_pd (__m128d __A, __m128d __B)\n{\n  return (__m128d)__builtin_ia32_mulpd ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_mul_sd (__m128d __A, __m128d __B)\n{\n  return (__m128d)__builtin_ia32_mulsd ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_div_pd (__m128d __A, __m128d __B)\n{\n  return (__m128d)__builtin_ia32_divpd ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_div_sd (__m128d __A, __m128d __B)\n{\n  return (__m128d)__builtin_ia32_divsd ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_sqrt_pd (__m128d __A)\n{\n  return (__m128d)__builtin_ia32_sqrtpd ((__v2df)__A);\n}\n\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_sqrt_sd (__m128d __A, __m128d __B)\n{\n  __v2df __tmp = __builtin_ia32_movsd ((__v2df)__A, (__v2df)__B);\n  return (__m128d)__builtin_ia32_sqrtsd ((__v2df)__tmp);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_min_pd (__m128d __A, __m128d __B)\n{\n  return (__m128d)__builtin_ia32_minpd ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_min_sd (__m128d __A, __m128d __B)\n{\n  return (__m128d)__builtin_ia32_minsd ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_max_pd (__m128d __A, __m128d __B)\n{\n  return (__m128d)__builtin_ia32_maxpd ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_max_sd (__m128d __A, __m128d __B)\n{\n  return (__m128d)__builtin_ia32_maxsd ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_and_pd (__m128d __A, __m128d __B)\n{\n  return (__m128d)__builtin_ia32_andpd ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_andnot_pd (__m128d __A, __m128d __B)\n{\n  return (__m128d)__builtin_ia32_andnpd ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_or_pd (__m128d __A, __m128d __B)\n{\n  return (__m128d)__builtin_ia32_orpd ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_xor_pd (__m128d __A, __m128d __B)\n{\n  return (__m128d)__builtin_ia32_xorpd ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpeq_pd (__m128d __A, __m128d __B)\n{\n  return (__m128d)__builtin_ia32_cmpeqpd ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmplt_pd (__m128d __A, __m128d __B)\n{\n  return (__m128d)__builtin_ia32_cmpltpd ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmple_pd (__m128d __A, __m128d __B)\n{\n  return (__m128d)__builtin_ia32_cmplepd ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpgt_pd (__m128d __A, __m128d __B)\n{\n  return (__m128d)__builtin_ia32_cmpgtpd ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpge_pd (__m128d __A, __m128d __B)\n{\n  return (__m128d)__builtin_ia32_cmpgepd ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpneq_pd (__m128d __A, __m128d __B)\n{\n  return (__m128d)__builtin_ia32_cmpneqpd ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpnlt_pd (__m128d __A, __m128d __B)\n{\n  return (__m128d)__builtin_ia32_cmpnltpd ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpnle_pd (__m128d __A, __m128d __B)\n{\n  return (__m128d)__builtin_ia32_cmpnlepd ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpngt_pd (__m128d __A, __m128d __B)\n{\n  return (__m128d)__builtin_ia32_cmpngtpd ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpnge_pd (__m128d __A, __m128d __B)\n{\n  return (__m128d)__builtin_ia32_cmpngepd ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpord_pd (__m128d __A, __m128d __B)\n{\n  return (__m128d)__builtin_ia32_cmpordpd ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpunord_pd (__m128d __A, __m128d __B)\n{\n  return (__m128d)__builtin_ia32_cmpunordpd ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpeq_sd (__m128d __A, __m128d __B)\n{\n  return (__m128d)__builtin_ia32_cmpeqsd ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmplt_sd (__m128d __A, __m128d __B)\n{\n  return (__m128d)__builtin_ia32_cmpltsd ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmple_sd (__m128d __A, __m128d __B)\n{\n  return (__m128d)__builtin_ia32_cmplesd ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpgt_sd (__m128d __A, __m128d __B)\n{\n  return (__m128d) __builtin_ia32_movsd ((__v2df) __A,\n      (__v2df)\n      __builtin_ia32_cmpltsd ((__v2df) __B,\n         (__v2df)\n         __A));\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpge_sd (__m128d __A, __m128d __B)\n{\n  return (__m128d) __builtin_ia32_movsd ((__v2df) __A,\n      (__v2df)\n      __builtin_ia32_cmplesd ((__v2df) __B,\n         (__v2df)\n         __A));\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpneq_sd (__m128d __A, __m128d __B)\n{\n  return (__m128d)__builtin_ia32_cmpneqsd ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpnlt_sd (__m128d __A, __m128d __B)\n{\n  return (__m128d)__builtin_ia32_cmpnltsd ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpnle_sd (__m128d __A, __m128d __B)\n{\n  return (__m128d)__builtin_ia32_cmpnlesd ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpngt_sd (__m128d __A, __m128d __B)\n{\n  return (__m128d) __builtin_ia32_movsd ((__v2df) __A,\n      (__v2df)\n      __builtin_ia32_cmpnltsd ((__v2df) __B,\n          (__v2df)\n          __A));\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpnge_sd (__m128d __A, __m128d __B)\n{\n  return (__m128d) __builtin_ia32_movsd ((__v2df) __A,\n      (__v2df)\n      __builtin_ia32_cmpnlesd ((__v2df) __B,\n          (__v2df)\n          __A));\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpord_sd (__m128d __A, __m128d __B)\n{\n  return (__m128d)__builtin_ia32_cmpordsd ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpunord_sd (__m128d __A, __m128d __B)\n{\n  return (__m128d)__builtin_ia32_cmpunordsd ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline int __attribute__((__always_inline__, __nodebug__))\n\n_mm_comieq_sd (__m128d __A, __m128d __B)\n{\n  return __builtin_ia32_comisdeq ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline int __attribute__((__always_inline__, __nodebug__))\n\n_mm_comilt_sd (__m128d __A, __m128d __B)\n{\n  return __builtin_ia32_comisdlt ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline int __attribute__((__always_inline__, __nodebug__))\n\n_mm_comile_sd (__m128d __A, __m128d __B)\n{\n  return __builtin_ia32_comisdle ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline int __attribute__((__always_inline__, __nodebug__))\n\n_mm_comigt_sd (__m128d __A, __m128d __B)\n{\n  return __builtin_ia32_comisdgt ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline int __attribute__((__always_inline__, __nodebug__))\n\n_mm_comige_sd (__m128d __A, __m128d __B)\n{\n  return __builtin_ia32_comisdge ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline int __attribute__((__always_inline__, __nodebug__))\n\n_mm_comineq_sd (__m128d __A, __m128d __B)\n{\n  return __builtin_ia32_comisdneq ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline int __attribute__((__always_inline__, __nodebug__))\n\n_mm_ucomieq_sd (__m128d __A, __m128d __B)\n{\n  return __builtin_ia32_ucomisdeq ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline int __attribute__((__always_inline__, __nodebug__))\n\n_mm_ucomilt_sd (__m128d __A, __m128d __B)\n{\n  return __builtin_ia32_ucomisdlt ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline int __attribute__((__always_inline__, __nodebug__))\n\n_mm_ucomile_sd (__m128d __A, __m128d __B)\n{\n  return __builtin_ia32_ucomisdle ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline int __attribute__((__always_inline__, __nodebug__))\n\n_mm_ucomigt_sd (__m128d __A, __m128d __B)\n{\n  return __builtin_ia32_ucomisdgt ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline int __attribute__((__always_inline__, __nodebug__))\n\n_mm_ucomige_sd (__m128d __A, __m128d __B)\n{\n  return __builtin_ia32_ucomisdge ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline int __attribute__((__always_inline__, __nodebug__))\n\n_mm_ucomineq_sd (__m128d __A, __m128d __B)\n{\n  return __builtin_ia32_ucomisdneq ((__v2df)__A, (__v2df)__B);\n}\n\n\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_set_epi64x (long long __q1, long long __q0)\n{\n  return __extension__ (__m128i)(__v2di){ __q0, __q1 };\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_set_epi64 (__m64 __q1, __m64 __q0)\n{\n  return _mm_set_epi64x ((long long)__q1, (long long)__q0);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_set_epi32 (int __q3, int __q2, int __q1, int __q0)\n{\n  return __extension__ (__m128i)(__v4si){ __q0, __q1, __q2, __q3 };\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_set_epi16 (short __q7, short __q6, short __q5, short __q4,\n        short __q3, short __q2, short __q1, short __q0)\n{\n  return __extension__ (__m128i)(__v8hi){\n    __q0, __q1, __q2, __q3, __q4, __q5, __q6, __q7 };\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_set_epi8 (char __q15, char __q14, char __q13, char __q12,\n       char __q11, char __q10, char __q09, char __q08,\n       char __q07, char __q06, char __q05, char __q04,\n       char __q03, char __q02, char __q01, char __q00)\n{\n  return __extension__ (__m128i)(__v16qi){\n    __q00, __q01, __q02, __q03, __q04, __q05, __q06, __q07,\n    __q08, __q09, __q10, __q11, __q12, __q13, __q14, __q15\n  };\n}\n# 798 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/emmintrin.h\" 3 4\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_setr_epi64 (__m64 __q0, __m64 __q1)\n{\n  return _mm_set_epi64 (__q1, __q0);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_setr_epi32 (int __q0, int __q1, int __q2, int __q3)\n{\n  return _mm_set_epi32 (__q3, __q2, __q1, __q0);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_setr_epi16 (short __q0, short __q1, short __q2, short __q3,\n         short __q4, short __q5, short __q6, short __q7)\n{\n  return _mm_set_epi16 (__q7, __q6, __q5, __q4, __q3, __q2, __q1, __q0);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_setr_epi8 (char __q00, char __q01, char __q02, char __q03,\n        char __q04, char __q05, char __q06, char __q07,\n        char __q08, char __q09, char __q10, char __q11,\n        char __q12, char __q13, char __q14, char __q15)\n{\n  return _mm_set_epi8 (__q15, __q14, __q13, __q12, __q11, __q10, __q09, __q08,\n         __q07, __q06, __q05, __q04, __q03, __q02, __q01, __q00);\n}\n\n\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_load_si128 (__m128i const *__P)\n{\n  return *__P;\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_loadu_si128 (__m128i const *__P)\n{\n  return (__m128i) __builtin_ia32_loaddqu ((char const *)__P);\n}\n\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_loadl_epi64 (__m128i const *__P)\n{\n  return (__m128i)__builtin_ia32_loadlv4si ((__v2si *)__P);\n}\n\n\n\nstatic __inline void __attribute__((__always_inline__, __nodebug__))\n\n_mm_store_si128 (__m128i *__P, __m128i __B)\n{\n  *__P = __B;\n}\n\n\nstatic __inline void __attribute__((__always_inline__, __nodebug__))\n\n_mm_storeu_si128 (__m128i *__P, __m128i __B)\n{\n  __builtin_ia32_storedqu ((char *)__P, (__v16qi)__B);\n}\n\n\n\nstatic __inline void __attribute__((__always_inline__, __nodebug__))\n\n_mm_storel_epi64 (__m128i *__P, __m128i __B)\n{\n  __builtin_ia32_storelv4si ((__v2si *)__P, __B);\n}\n\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_movepi64_pi64 (__m128i __B)\n{\n  return (__m64) __builtin_ia32_vec_ext_v2di ((__v2di)__B, 0);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_movpi64_epi64 (__m64 __A)\n{\n  return _mm_set_epi64 ((__m64)0LL, __A);\n}\n\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_move_epi64 (__m128i __A)\n{\n  return (__m128i)__builtin_ia32_movqv4si ((__v4si)__A) ;\n}\n\n\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_setzero_si128 (void)\n{\n  return __extension__ (__m128i)(__v4si){ 0, 0, 0, 0 };\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtepi32_pd (__m128i __A)\n{\n  return (__m128d)__builtin_ia32_cvtdq2pd ((__v4si) __A);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtepi32_ps (__m128i __A)\n{\n  return (__m128)__builtin_ia32_cvtdq2ps ((__v4si) __A);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtpd_epi32 (__m128d __A)\n{\n  return (__m128i)__builtin_ia32_cvtpd2dq ((__v2df) __A);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtpd_pi32 (__m128d __A)\n{\n  return (__m64)__builtin_ia32_cvtpd2pi ((__v2df) __A);\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtpd_ps (__m128d __A)\n{\n  return (__m128)__builtin_ia32_cvtpd2ps ((__v2df) __A);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvttpd_epi32 (__m128d __A)\n{\n  return (__m128i)__builtin_ia32_cvttpd2dq ((__v2df) __A);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvttpd_pi32 (__m128d __A)\n{\n  return (__m64)__builtin_ia32_cvttpd2pi ((__v2df) __A);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtpi32_pd (__m64 __A)\n{\n  return (__m128d)__builtin_ia32_cvtpi2pd ((__v2si) __A);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtps_epi32 (__m128 __A)\n{\n  return (__m128i)__builtin_ia32_cvtps2dq ((__v4sf) __A);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvttps_epi32 (__m128 __A)\n{\n  return (__m128i)__builtin_ia32_cvttps2dq ((__v4sf) __A);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtps_pd (__m128 __A)\n{\n  return (__m128d)__builtin_ia32_cvtps2pd ((__v4sf) __A);\n}\n\n\nstatic __inline int __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtsd_si32 (__m128d __A)\n{\n  return __builtin_ia32_cvtsd2si ((__v2df) __A);\n}\n\n\n\n\nstatic __inline long long __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtsd_si64 (__m128d __A)\n{\n  return __builtin_ia32_cvtsd2si64 ((__v2df) __A);\n}\n\n\n\nstatic __inline long long __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtsd_si64x (__m128d __A)\n{\n  return __builtin_ia32_cvtsd2si64 ((__v2df) __A);\n}\n\n\n\nstatic __inline int __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvttsd_si32 (__m128d __A)\n{\n  return __builtin_ia32_cvttsd2si ((__v2df) __A);\n}\n\n\n\n\nstatic __inline long long __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvttsd_si64 (__m128d __A)\n{\n  return __builtin_ia32_cvttsd2si64 ((__v2df) __A);\n}\n\n\n\nstatic __inline long long __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvttsd_si64x (__m128d __A)\n{\n  return __builtin_ia32_cvttsd2si64 ((__v2df) __A);\n}\n\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtsd_ss (__m128 __A, __m128d __B)\n{\n  return (__m128)__builtin_ia32_cvtsd2ss ((__v4sf) __A, (__v2df) __B);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtsi32_sd (__m128d __A, int __B)\n{\n  return (__m128d)__builtin_ia32_cvtsi2sd ((__v2df) __A, __B);\n}\n\n\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtsi64_sd (__m128d __A, long long __B)\n{\n  return (__m128d)__builtin_ia32_cvtsi642sd ((__v2df) __A, __B);\n}\n\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtsi64x_sd (__m128d __A, long long __B)\n{\n  return (__m128d)__builtin_ia32_cvtsi642sd ((__v2df) __A, __B);\n}\n\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtss_sd (__m128d __A, __m128 __B)\n{\n  return (__m128d)__builtin_ia32_cvtss2sd ((__v2df) __A, (__v4sf)__B);\n}\n\n\n\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_unpackhi_pd (__m128d __A, __m128d __B)\n{\n  return (__m128d)__builtin_ia32_unpckhpd ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_unpacklo_pd (__m128d __A, __m128d __B)\n{\n  return (__m128d)__builtin_ia32_unpcklpd ((__v2df)__A, (__v2df)__B);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_loadh_pd (__m128d __A, double const *__B)\n{\n  return (__m128d)__builtin_ia32_loadhpd ((__v2df)__A, __B);\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_loadl_pd (__m128d __A, double const *__B)\n{\n  return (__m128d)__builtin_ia32_loadlpd ((__v2df)__A, __B);\n}\n\n\nstatic __inline int __attribute__((__always_inline__, __nodebug__))\n\n_mm_movemask_pd (__m128d __A)\n{\n  return __builtin_ia32_movmskpd ((__v2df)__A);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_packs_epi16 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_packsswb128 ((__v8hi)__A, (__v8hi)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_packs_epi32 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_packssdw128 ((__v4si)__A, (__v4si)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_packus_epi16 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_packuswb128 ((__v8hi)__A, (__v8hi)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_unpackhi_epi8 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_punpckhbw128 ((__v16qi)__A, (__v16qi)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_unpackhi_epi16 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_punpckhwd128 ((__v8hi)__A, (__v8hi)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_unpackhi_epi32 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_punpckhdq128 ((__v4si)__A, (__v4si)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_unpackhi_epi64 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_punpckhqdq128 ((__v2di)__A, (__v2di)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_unpacklo_epi8 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_punpcklbw128 ((__v16qi)__A, (__v16qi)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_unpacklo_epi16 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_punpcklwd128 ((__v8hi)__A, (__v8hi)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_unpacklo_epi32 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_punpckldq128 ((__v4si)__A, (__v4si)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_unpacklo_epi64 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_punpcklqdq128 ((__v2di)__A, (__v2di)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_add_epi8 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_paddb128 ((__v16qi)__A, (__v16qi)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_add_epi16 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_paddw128 ((__v8hi)__A, (__v8hi)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_add_epi32 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_paddd128 ((__v4si)__A, (__v4si)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_add_epi64 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_paddq128 ((__v2di)__A, (__v2di)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_adds_epi8 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_paddsb128 ((__v16qi)__A, (__v16qi)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_adds_epi16 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_paddsw128 ((__v8hi)__A, (__v8hi)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_adds_epu8 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_paddusb128 ((__v16qi)__A, (__v16qi)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_adds_epu16 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_paddusw128 ((__v8hi)__A, (__v8hi)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_sub_epi8 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_psubb128 ((__v16qi)__A, (__v16qi)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_sub_epi16 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_psubw128 ((__v8hi)__A, (__v8hi)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_sub_epi32 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_psubd128 ((__v4si)__A, (__v4si)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_sub_epi64 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_psubq128 ((__v2di)__A, (__v2di)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_subs_epi8 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_psubsb128 ((__v16qi)__A, (__v16qi)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_subs_epi16 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_psubsw128 ((__v8hi)__A, (__v8hi)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_subs_epu8 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_psubusb128 ((__v16qi)__A, (__v16qi)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_subs_epu16 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_psubusw128 ((__v8hi)__A, (__v8hi)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_madd_epi16 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_pmaddwd128 ((__v8hi)__A, (__v8hi)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_mulhi_epi16 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_pmulhw128 ((__v8hi)__A, (__v8hi)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_mullo_epi16 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_pmullw128 ((__v8hi)__A, (__v8hi)__B);\n}\n\n\nstatic __inline __m64 __attribute__((__always_inline__, __nodebug__))\n\n_mm_mul_su32 (__m64 __A, __m64 __B)\n{\n  return (__m64)__builtin_ia32_pmuludq ((__v2si)__A, (__v2si)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_mul_epu32 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_pmuludq128 ((__v4si)__A, (__v4si)__B);\n}\n# 1519 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/emmintrin.h\" 3 4\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_sll_epi16 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_psllw128((__v8hi)__A, (__v8hi)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_sll_epi32 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_pslld128((__v4si)__A, (__v4si)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_sll_epi64 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_psllq128((__v2di)__A, (__v2di)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_sra_epi16 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_psraw128 ((__v8hi)__A, (__v8hi)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_sra_epi32 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_psrad128 ((__v4si)__A, (__v4si)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_srl_epi16 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_psrlw128 ((__v8hi)__A, (__v8hi)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_srl_epi32 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_psrld128 ((__v4si)__A, (__v4si)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_srl_epi64 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_psrlq128 ((__v2di)__A, (__v2di)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_and_si128 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_pand128 ((__v2di)__A, (__v2di)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_andnot_si128 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_pandn128 ((__v2di)__A, (__v2di)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_or_si128 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_por128 ((__v2di)__A, (__v2di)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_xor_si128 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_pxor128 ((__v2di)__A, (__v2di)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpeq_epi8 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_pcmpeqb128 ((__v16qi)__A, (__v16qi)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpeq_epi16 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_pcmpeqw128 ((__v8hi)__A, (__v8hi)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpeq_epi32 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_pcmpeqd128 ((__v4si)__A, (__v4si)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmplt_epi8 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_pcmpgtb128 ((__v16qi)__B, (__v16qi)__A);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmplt_epi16 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_pcmpgtw128 ((__v8hi)__B, (__v8hi)__A);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmplt_epi32 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_pcmpgtd128 ((__v4si)__B, (__v4si)__A);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpgt_epi8 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_pcmpgtb128 ((__v16qi)__A, (__v16qi)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpgt_epi16 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_pcmpgtw128 ((__v8hi)__A, (__v8hi)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_cmpgt_epi32 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_pcmpgtd128 ((__v4si)__A, (__v4si)__B);\n}\n# 1710 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/emmintrin.h\" 3 4\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_max_epi16 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_pmaxsw128 ((__v8hi)__A, (__v8hi)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_max_epu8 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_pmaxub128 ((__v16qi)__A, (__v16qi)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_min_epi16 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_pminsw128 ((__v8hi)__A, (__v8hi)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_min_epu8 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_pminub128 ((__v16qi)__A, (__v16qi)__B);\n}\n\n\nstatic __inline int __attribute__((__always_inline__, __nodebug__))\n\n_mm_movemask_epi8 (__m128i __A)\n{\n  return __builtin_ia32_pmovmskb128 ((__v16qi)__A);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_mulhi_epu16 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_pmulhuw128 ((__v8hi)__A, (__v8hi)__B);\n}\n# 1764 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/emmintrin.h\" 3 4\nstatic __inline void __attribute__((__always_inline__, __nodebug__))\n\n_mm_maskmoveu_si128 (__m128i __A, __m128i __B, char *__C)\n{\n  __builtin_ia32_maskmovdqu ((__v16qi)__A, (__v16qi)__B, __C);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_avg_epu8 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_pavgb128 ((__v16qi)__A, (__v16qi)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_avg_epu16 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_pavgw128 ((__v8hi)__A, (__v8hi)__B);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_sad_epu8 (__m128i __A, __m128i __B)\n{\n  return (__m128i)__builtin_ia32_psadbw128 ((__v16qi)__A, (__v16qi)__B);\n}\n\n\nstatic __inline void __attribute__((__always_inline__, __nodebug__))\n\n_mm_stream_si32 (int *__A, int __B)\n{\n  __builtin_ia32_movnti (__A, __B);\n}\n\n\nstatic __inline void __attribute__((__always_inline__, __nodebug__))\n\n_mm_stream_si128 (__m128i *__A, __m128i __B)\n{\n  __builtin_ia32_movntdq ((__v2di *)__A, (__v2di)__B);\n}\n\n\nstatic __inline void __attribute__((__always_inline__, __nodebug__))\n\n_mm_stream_pd (double *__A, __m128d __B)\n{\n  __builtin_ia32_movntpd (__A, (__v2df)__B);\n}\n\n\nstatic __inline void __attribute__((__always_inline__, __nodebug__))\n\n_mm_clflush (void const *__A)\n{\n  __builtin_ia32_clflush (__A);\n}\n\n\nstatic __inline void __attribute__((__always_inline__, __nodebug__))\n\n_mm_lfence (void)\n{\n  __builtin_ia32_lfence ();\n}\n\n\nstatic __inline void __attribute__((__always_inline__, __nodebug__))\n\n_mm_mfence (void)\n{\n  __builtin_ia32_mfence ();\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtsi32_si128 (int __A)\n{\n  return _mm_set_epi32 (0, 0, 0, __A);\n}\n\n\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtsi64_si128 (long long __A)\n{\n  return _mm_set_epi64x (0, __A);\n}\n\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_cvtsi64x_si128 (long long __A)\n{\n  return _mm_set_epi64x (0, __A);\n}\n\n\n\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_castpd_ps(__m128d __A)\n{\n  return (__m128) __A;\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_castpd_si128(__m128d __A)\n{\n  return (__m128i) __A;\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_castps_pd(__m128 __A)\n{\n  return (__m128d) __A;\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_castps_si128(__m128 __A)\n{\n  return (__m128i) __A;\n}\n\n\nstatic __inline __m128 __attribute__((__always_inline__, __nodebug__))\n\n_mm_castsi128_ps(__m128i __A)\n{\n  return (__m128) __A;\n}\n\n\nstatic __inline __m128d __attribute__((__always_inline__, __nodebug__))\n\n_mm_castsi128_pd(__m128i __A)\n{\n  return (__m128d) __A;\n}\n\n\n\n\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_set1_epi64x (long long __A)\n{\n  return _mm_set_epi64x (__A, __A);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_set1_epi64 (__m64 __A)\n{\n  return _mm_set_epi64 (__A, __A);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_set1_epi32 (int __A)\n{\n  return _mm_set_epi32 (__A, __A, __A, __A);\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_set1_epi16 (short __A)\n{\n  __m128i temp, temp2, temp3;\n  temp = _mm_cvtsi32_si128((int)__A);\n  temp2 = _mm_unpacklo_epi16(temp, temp);\n  temp3 = ((__m128i)__builtin_ia32_pshufd ((__v4si)(temp2), 0));\n  return temp3;\n}\n\n\nstatic __inline __m128i __attribute__((__always_inline__, __nodebug__))\n\n_mm_set1_epi8 (char __A)\n{\n    __m128i temp, temp2, temp3, temp4;\n    temp = _mm_cvtsi32_si128 ((int)__A);\n    temp2 = _mm_unpacklo_epi8 (temp, temp);\n    temp3 = _mm_unpacklo_epi8 (temp2, temp2);\n    temp4 = ((__m128i)__builtin_ia32_pshufd ((__v4si)(temp3), 0));\n    return temp4;\n}\n# 1580 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/xmmintrin.h\" 2 3 4\n# 30 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MachineExceptions.h\" 2 3\n# 43 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MachineExceptions.h\" 3\n#pragma options align=power\n\n\ntypedef struct OpaqueAreaID* AreaID;\n# 58 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MachineExceptions.h\" 3\nstruct MachineInformationPowerPC {\n  UnsignedWide CTR;\n  UnsignedWide LR;\n  UnsignedWide PC;\n  unsigned long CRRegister;\n  unsigned long XER;\n  unsigned long MSR;\n  unsigned long MQ;\n  unsigned long ExceptKind;\n  unsigned long DSISR;\n  UnsignedWide DAR;\n  UnsignedWide Reserved;\n};\ntypedef struct MachineInformationPowerPC MachineInformationPowerPC;\nstruct RegisterInformationPowerPC {\n  UnsignedWide R0;\n  UnsignedWide R1;\n  UnsignedWide R2;\n  UnsignedWide R3;\n  UnsignedWide R4;\n  UnsignedWide R5;\n  UnsignedWide R6;\n  UnsignedWide R7;\n  UnsignedWide R8;\n  UnsignedWide R9;\n  UnsignedWide R10;\n  UnsignedWide R11;\n  UnsignedWide R12;\n  UnsignedWide R13;\n  UnsignedWide R14;\n  UnsignedWide R15;\n  UnsignedWide R16;\n  UnsignedWide R17;\n  UnsignedWide R18;\n  UnsignedWide R19;\n  UnsignedWide R20;\n  UnsignedWide R21;\n  UnsignedWide R22;\n  UnsignedWide R23;\n  UnsignedWide R24;\n  UnsignedWide R25;\n  UnsignedWide R26;\n  UnsignedWide R27;\n  UnsignedWide R28;\n  UnsignedWide R29;\n  UnsignedWide R30;\n  UnsignedWide R31;\n};\ntypedef struct RegisterInformationPowerPC RegisterInformationPowerPC;\nstruct FPUInformationPowerPC {\n  UnsignedWide Registers[32];\n  unsigned long FPSCR;\n  unsigned long Reserved;\n};\ntypedef struct FPUInformationPowerPC FPUInformationPowerPC;\nunion Vector128 {\n\n\n\n  unsigned long l[4];\n  unsigned short s[8];\n  unsigned char c[16];\n};\ntypedef union Vector128 Vector128;\nstruct VectorInformationPowerPC {\n  Vector128 Registers[32];\n  Vector128 VSCR;\n  UInt32 VRsave;\n};\ntypedef struct VectorInformationPowerPC VectorInformationPowerPC;\n\nenum {\n  kWriteReference = 0,\n  kReadReference = 1,\n  kFetchReference = 2,\n  writeReference = kWriteReference,\n  readReference = kReadReference,\n  fetchReference = kFetchReference\n};\n\n\ntypedef unsigned long MemoryReferenceKind;\nstruct MemoryExceptionInformation {\n  AreaID theArea;\n  LogicalAddress theAddress;\n  OSStatus theError;\n  MemoryReferenceKind theReference;\n};\ntypedef struct MemoryExceptionInformation MemoryExceptionInformation;\nenum {\n  kUnknownException = 0,\n  kIllegalInstructionException = 1,\n  kTrapException = 2,\n  kAccessException = 3,\n  kUnmappedMemoryException = 4,\n  kExcludedMemoryException = 5,\n  kReadOnlyMemoryException = 6,\n  kUnresolvablePageFaultException = 7,\n  kPrivilegeViolationException = 8,\n  kTraceException = 9,\n  kInstructionBreakpointException = 10,\n  kDataBreakpointException = 11,\n  kIntegerException = 12,\n  kFloatingPointException = 13,\n  kStackOverflowException = 14,\n  kTaskTerminationException = 15,\n  kTaskCreationException = 16,\n  kDataAlignmentException = 17\n};\n# 192 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MachineExceptions.h\" 3\ntypedef unsigned long ExceptionKind;\nunion ExceptionInfo {\n  MemoryExceptionInformation * memoryInfo;\n};\ntypedef union ExceptionInfo ExceptionInfo;\nstruct ExceptionInformationPowerPC {\n  ExceptionKind theKind;\n  MachineInformationPowerPC * machineState;\n  RegisterInformationPowerPC * registerImage;\n  FPUInformationPowerPC * FPUImage;\n  ExceptionInfo info;\n  VectorInformationPowerPC * vectorImage;\n};\ntypedef struct ExceptionInformationPowerPC ExceptionInformationPowerPC;\n# 215 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MachineExceptions.h\" 3\nunion Vector128Intel {\n  __m128 s;\n  __m128i si;\n  __m128d sd;\n  unsigned char c[16];\n};\ntypedef union Vector128Intel Vector128Intel;\n# 284 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MachineExceptions.h\" 3\nstruct MachineInformationIntel64 {\n  unsigned long CS;\n  unsigned long FS;\n  unsigned long GS;\n  unsigned long RFLAGS;\n  unsigned long RIP;\n  unsigned long ExceptTrap;\n  unsigned long ExceptErr;\n  unsigned long ExceptAddr;\n};\ntypedef struct MachineInformationIntel64 MachineInformationIntel64;\nstruct RegisterInformationIntel64 {\n  unsigned long RAX;\n  unsigned long RBX;\n  unsigned long RCX;\n  unsigned long RDX;\n  unsigned long RDI;\n  unsigned long RSI;\n  unsigned long RBP;\n  unsigned long RSP;\n  unsigned long R8;\n  unsigned long R9;\n  unsigned long R10;\n  unsigned long R11;\n  unsigned long R12;\n  unsigned long R13;\n  unsigned long R14;\n  unsigned long R15;\n};\ntypedef struct RegisterInformationIntel64 RegisterInformationIntel64;\n\ntypedef unsigned char FPRegIntel[10];\nstruct FPUInformationIntel64 {\n  FPRegIntel Registers[8];\n  unsigned short Control;\n  unsigned short Status;\n  unsigned short Tag;\n  unsigned short Opcode;\n  unsigned int IP;\n  unsigned int DP;\n  unsigned int DS;\n};\ntypedef struct FPUInformationIntel64 FPUInformationIntel64;\nstruct VectorInformationIntel64 {\n  Vector128Intel Registers[16];\n};\ntypedef struct VectorInformationIntel64 VectorInformationIntel64;\n\ntypedef MachineInformationIntel64 MachineInformation;\ntypedef RegisterInformationIntel64 RegisterInformation;\ntypedef FPUInformationIntel64 FPUInformation;\ntypedef VectorInformationIntel64 VectorInformation;\n\n\n\nstruct ExceptionInformation {\n  ExceptionKind theKind;\n  MachineInformation * machineState;\n  RegisterInformation * registerImage;\n  FPUInformation * FPUImage;\n  ExceptionInfo info;\n  VectorInformation * vectorImage;\n};\ntypedef struct ExceptionInformation ExceptionInformation;\n# 356 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MachineExceptions.h\" 3\ntypedef OSStatus ( * ExceptionHandlerProcPtr)(ExceptionInformation * theException);\ntypedef ExceptionHandlerProcPtr ExceptionHandlerUPP;\n# 366 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MachineExceptions.h\" 3\nextern ExceptionHandlerUPP\nNewExceptionHandlerUPP(ExceptionHandlerProcPtr userRoutine) ;\n# 377 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MachineExceptions.h\" 3\nextern void\nDisposeExceptionHandlerUPP(ExceptionHandlerUPP userUPP) ;\n# 388 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MachineExceptions.h\" 3\nextern OSStatus\nInvokeExceptionHandlerUPP(\n  ExceptionInformation * theException,\n  ExceptionHandlerUPP userUPP) ;\n# 413 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MachineExceptions.h\" 3\ntypedef ExceptionHandlerUPP ExceptionHandlerTPP;\ntypedef ExceptionHandlerTPP ExceptionHandler;\n# 424 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MachineExceptions.h\" 3\nextern ExceptionHandlerTPP InstallExceptionHandler(ExceptionHandlerTPP theHandler) ;\n\n\n\n\n#pragma options align=reset\n# 33 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverServices.h\" 2 3\n# 51 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverServices.h\" 3\n#pragma options align=power\n\n\nenum {\n  durationMicrosecond = -1L,\n  durationMillisecond = 1,\n  durationSecond = 1000,\n  durationMinute = 60000,\n  durationHour = 3600000,\n  durationDay = 86400000,\n  durationNoWait = 0,\n  durationForever = 0x7FFFFFFF\n};\n\n\ntypedef UnsignedWide Nanoseconds;\n# 75 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverServices.h\" 3\nextern AbsoluteTime\nUpTime(void) ;\n# 98 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverServices.h\" 3\nextern Nanoseconds\nAbsoluteToNanoseconds(AbsoluteTime absoluteTime) ;\n# 110 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverServices.h\" 3\nextern Duration\nAbsoluteToDuration(AbsoluteTime absoluteTime) ;\n# 122 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverServices.h\" 3\nextern AbsoluteTime\nNanosecondsToAbsolute(Nanoseconds nanoseconds) ;\n# 134 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverServices.h\" 3\nextern AbsoluteTime\nDurationToAbsolute(Duration duration) ;\n# 146 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverServices.h\" 3\nextern AbsoluteTime\nAddAbsoluteToAbsolute(\n  AbsoluteTime absoluteTime1,\n  AbsoluteTime absoluteTime2) ;\n# 160 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverServices.h\" 3\nextern AbsoluteTime\nSubAbsoluteFromAbsolute(\n  AbsoluteTime leftAbsoluteTime,\n  AbsoluteTime rightAbsoluteTime) ;\n# 174 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverServices.h\" 3\nextern AbsoluteTime\nAddNanosecondsToAbsolute(\n  Nanoseconds nanoseconds,\n  AbsoluteTime absoluteTime) ;\n# 188 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverServices.h\" 3\nextern AbsoluteTime\nAddDurationToAbsolute(\n  Duration duration,\n  AbsoluteTime absoluteTime) ;\n# 202 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverServices.h\" 3\nextern AbsoluteTime\nSubNanosecondsFromAbsolute(\n  Nanoseconds nanoseconds,\n  AbsoluteTime absoluteTime) ;\n# 216 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverServices.h\" 3\nextern AbsoluteTime\nSubDurationFromAbsolute(\n  Duration duration,\n  AbsoluteTime absoluteTime) ;\n# 230 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverServices.h\" 3\nextern Nanoseconds\nAbsoluteDeltaToNanoseconds(\n  AbsoluteTime leftAbsoluteTime,\n  AbsoluteTime rightAbsoluteTime) ;\n# 244 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverServices.h\" 3\nextern Duration\nAbsoluteDeltaToDuration(\n  AbsoluteTime leftAbsoluteTime,\n  AbsoluteTime rightAbsoluteTime) ;\n# 258 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverServices.h\" 3\nextern Nanoseconds\nDurationToNanoseconds(Duration theDuration) ;\n# 270 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverServices.h\" 3\nextern Duration\nNanosecondsToDuration(Nanoseconds theNanoseconds) ;\n\n\n\n\n\n#pragma options align=reset\n# 126 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n\n\n\n\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/NumberFormatting.h\" 1 3\n# 44 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/NumberFormatting.h\" 3\n#pragma pack(push, 2)\n# 62 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/NumberFormatting.h\" 3\nstruct NumFormatString {\n  UInt8 fLength;\n  UInt8 fVersion;\n  char data[254];\n};\ntypedef struct NumFormatString NumFormatString;\ntypedef NumFormatString NumFormatStringRec;\ntypedef short FormatStatus;\nenum {\n  fVNumber = 0\n};\n\ntypedef SInt8 FormatClass;\nenum {\n  fPositive = 0,\n  fNegative = 1,\n  fZero = 2\n};\n\ntypedef SInt8 FormatResultType;\nenum {\n  fFormatOK = 0,\n  fBestGuess = 1,\n  fOutOfSynch = 2,\n  fSpuriousChars = 3,\n  fMissingDelimiter = 4,\n  fExtraDecimal = 5,\n  fMissingLiteral = 6,\n  fExtraExp = 7,\n  fFormatOverflow = 8,\n  fFormStrIsNAN = 9,\n  fBadPartsTable = 10,\n  fExtraPercent = 11,\n  fExtraSeparator = 12,\n  fEmptyFormatString = 13\n};\n\nstruct FVector {\n  short start;\n  short length;\n};\ntypedef struct FVector FVector;\n\ntypedef FVector TripleInt[3];\n# 124 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/NumberFormatting.h\" 3\nextern void\nnumtostring(\n  long theNum,\n  char * theString) ;\n# 282 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/NumberFormatting.h\" 3\n#pragma pack(pop)\n# 134 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n\n\n\n\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/StringCompare.h\" 1 3\n# 77 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/StringCompare.h\" 3\nenum {\n\n  systemCurLang = -2,\n  systemDefLang = -3,\n  currentCurLang = -4,\n  currentDefLang = -5,\n  scriptCurLang = -6,\n  scriptDefLang = -7\n};\n\n\nenum {\n  iuSystemCurLang = systemCurLang,\n  iuSystemDefLang = systemDefLang,\n  iuCurrentCurLang = currentCurLang,\n  iuCurrentDefLang = currentDefLang,\n  iuScriptCurLang = scriptCurLang,\n  iuScriptDefLang = scriptDefLang\n};\n# 142 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextUtils.h\" 1 3\n# 47 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextUtils.h\" 3\n#pragma pack(push, 2)\n# 130 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextUtils.h\" 3\nextern long\nMunger(\n  Handle h,\n  long offset,\n  const void * ptr1,\n  long len1,\n  const void * ptr2,\n  long len2) __attribute__((deprecated));\n# 729 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextUtils.h\" 3\n#pragma pack(pop)\n# 146 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/ToolUtils.h\" 1 3\n# 34 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/ToolUtils.h\" 3\n#pragma pack(push, 2)\n# 78 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/ToolUtils.h\" 3\nextern Boolean\nBitTst(\n  const void * bytePtr,\n  long bitNum) ;\n# 92 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/ToolUtils.h\" 3\nextern void\nBitSet(\n  void * bytePtr,\n  long bitNum) ;\n# 106 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/ToolUtils.h\" 3\nextern void\nBitClr(\n  void * bytePtr,\n  long bitNum) ;\n# 120 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/ToolUtils.h\" 3\nextern long\nBitAnd(\n  long value1,\n  long value2) ;\n# 134 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/ToolUtils.h\" 3\nextern long\nBitOr(\n  long value1,\n  long value2) ;\n# 148 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/ToolUtils.h\" 3\nextern long\nBitXor(\n  long value1,\n  long value2) ;\n# 162 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/ToolUtils.h\" 3\nextern long\nBitNot(long value) ;\n# 174 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/ToolUtils.h\" 3\nextern long\nBitShift(\n  long value,\n  short count) ;\n\n\n\n\n\n\n#pragma pack(pop)\n# 150 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeUtilities.h\" 1 3\n# 52 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeUtilities.h\" 3\n#pragma pack(push, 2)\n# 79 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeUtilities.h\" 3\ntypedef UInt16 UCKeyOutput;\ntypedef UInt16 UCKeyCharSeq;\nenum {\n  kUCKeyOutputStateIndexMask = 0x4000,\n  kUCKeyOutputSequenceIndexMask = 0x8000,\n  kUCKeyOutputTestForIndexMask = 0xC000,\n  kUCKeyOutputGetIndexMask = 0x3FFF\n};\n# 101 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeUtilities.h\" 3\nstruct UCKeyStateRecord {\n  UCKeyCharSeq stateZeroCharData;\n  UInt16 stateZeroNextState;\n  UInt16 stateEntryCount;\n  UInt16 stateEntryFormat;\n\n\n  UInt32 stateEntryData[1];\n};\ntypedef struct UCKeyStateRecord UCKeyStateRecord;\n\n\n\n\nenum {\n  kUCKeyStateEntryTerminalFormat = 0x0001,\n  kUCKeyStateEntryRangeFormat = 0x0002\n};\n\n\n\n\n\n\nstruct UCKeyStateEntryTerminal {\n  UInt16 curState;\n  UCKeyCharSeq charData;\n};\ntypedef struct UCKeyStateEntryTerminal UCKeyStateEntryTerminal;\n\n\n\n\n\n\n\nstruct UCKeyStateEntryRange {\n  UInt16 curStateStart;\n  UInt8 curStateRange;\n  UInt8 deltaMultiplier;\n  UCKeyCharSeq charData;\n  UInt16 nextState;\n};\ntypedef struct UCKeyStateEntryRange UCKeyStateEntryRange;\n# 157 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeUtilities.h\" 3\nstruct UCKeyboardTypeHeader {\n  UInt32 keyboardTypeFirst;\n  UInt32 keyboardTypeLast;\n  UInt32 keyModifiersToTableNumOffset;\n  UInt32 keyToCharTableIndexOffset;\n  UInt32 keyStateRecordsIndexOffset;\n  UInt32 keyStateTerminatorsOffset;\n  UInt32 keySequenceDataIndexOffset;\n};\ntypedef struct UCKeyboardTypeHeader UCKeyboardTypeHeader;\nstruct UCKeyboardLayout {\n\n  UInt16 keyLayoutHeaderFormat;\n  UInt16 keyLayoutDataVersion;\n  UInt32 keyLayoutFeatureInfoOffset;\n  UInt32 keyboardTypeCount;\n  UCKeyboardTypeHeader keyboardTypeList[1];\n};\ntypedef struct UCKeyboardLayout UCKeyboardLayout;\n\nstruct UCKeyLayoutFeatureInfo {\n  UInt16 keyLayoutFeatureInfoFormat;\n  UInt16 reserved;\n  UInt32 maxOutputStringLength;\n};\ntypedef struct UCKeyLayoutFeatureInfo UCKeyLayoutFeatureInfo;\n\nstruct UCKeyModifiersToTableNum {\n  UInt16 keyModifiersToTableNumFormat;\n  UInt16 defaultTableNum;\n  UInt32 modifiersCount;\n  UInt8 tableNum[1];\n\n\n};\ntypedef struct UCKeyModifiersToTableNum UCKeyModifiersToTableNum;\n\nstruct UCKeyToCharTableIndex {\n  UInt16 keyToCharTableIndexFormat;\n  UInt16 keyToCharTableSize;\n  UInt32 keyToCharTableCount;\n  UInt32 keyToCharTableOffsets[1];\n\n\n\n\n\n\n};\ntypedef struct UCKeyToCharTableIndex UCKeyToCharTableIndex;\n\nstruct UCKeyStateRecordsIndex {\n  UInt16 keyStateRecordsIndexFormat;\n  UInt16 keyStateRecordCount;\n  UInt32 keyStateRecordOffsets[1];\n\n\n\n\n};\ntypedef struct UCKeyStateRecordsIndex UCKeyStateRecordsIndex;\n\nstruct UCKeyStateTerminators {\n  UInt16 keyStateTerminatorsFormat;\n  UInt16 keyStateTerminatorCount;\n  UCKeyCharSeq keyStateTerminators[1];\n\n\n\n};\ntypedef struct UCKeyStateTerminators UCKeyStateTerminators;\n\nstruct UCKeySequenceDataIndex {\n  UInt16 keySequenceDataIndexFormat;\n  UInt16 charSequenceCount;\n  UInt16 charSequenceOffsets[1];\n\n\n\n\n\n};\ntypedef struct UCKeySequenceDataIndex UCKeySequenceDataIndex;\n\n\n\nenum {\n  kUCKeyLayoutHeaderFormat = 0x1002,\n  kUCKeyLayoutFeatureInfoFormat = 0x2001,\n  kUCKeyModifiersToTableNumFormat = 0x3001,\n  kUCKeyToCharTableIndexFormat = 0x4001,\n  kUCKeyStateRecordsIndexFormat = 0x5001,\n  kUCKeyStateTerminatorsFormat = 0x6001,\n  kUCKeySequenceDataIndexFormat = 0x7001\n};\n# 260 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeUtilities.h\" 3\nenum {\n  kUCKeyActionDown = 0,\n  kUCKeyActionUp = 1,\n  kUCKeyActionAutoKey = 2,\n  kUCKeyActionDisplay = 3\n};\n\n\n\n\n\n\n\nenum {\n  kUCKeyTranslateNoDeadKeysBit = 0\n};\n\nenum {\n  kUCKeyTranslateNoDeadKeysMask = 1L << kUCKeyTranslateNoDeadKeysBit\n};\n# 288 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeUtilities.h\" 3\nenum {\n  kUnicodeCollationClass = 'ucol'\n};\n\ntypedef struct OpaqueCollatorRef* CollatorRef;\ntypedef UInt32 UCCollateOptions;\nenum {\n\n  kUCCollateComposeInsensitiveMask = 1L << 1,\n  kUCCollateWidthInsensitiveMask = 1L << 2,\n  kUCCollateCaseInsensitiveMask = 1L << 3,\n  kUCCollateDiacritInsensitiveMask = 1L << 4,\n  kUCCollatePunctuationSignificantMask = 1L << 15,\n  kUCCollateDigitsOverrideMask = 1L << 16,\n  kUCCollateDigitsAsNumberMask = 1L << 17\n};\n\nenum {\n  kUCCollateStandardOptions = kUCCollateComposeInsensitiveMask | kUCCollateWidthInsensitiveMask\n};\n\n\n\n\n\nenum {\n  kUCCollateTypeHFSExtended = 1\n};\n\n\nenum {\n  kUCCollateTypeSourceMask = 0x000000FF,\n  kUCCollateTypeShiftBits = 24\n};\n\nenum {\n  kUCCollateTypeMask = kUCCollateTypeSourceMask << kUCCollateTypeShiftBits\n};\n\n\ntypedef UInt32 UCCollationValue;\n# 340 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeUtilities.h\" 3\ntypedef struct OpaqueUCTypeSelectRef* UCTypeSelectRef;\n\n\n\n\ntypedef SInt32 UCTypeSelectCompareResult;\n\n\n\n\ntypedef UInt16 UCTSWalkDirection;\nenum {\n  kUCTSDirectionNext = 0,\n  kUCTSDirectionPrevious = 1\n};\n# 372 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeUtilities.h\" 3\ntypedef UInt16 UCTypeSelectOptions;\nenum {\n  kUCTSOptionsNoneMask = 0,\n  kUCTSOptionsReleaseStringMask = 1,\n  kUCTSOptionsDataIsOrderedMask = 2\n};\n\n\n\n\n\n\ntypedef Boolean ( * IndexToUCStringProcPtr)(UInt32 index, void *listDataPtr, void *refcon, CFStringRef *outString, UCTypeSelectOptions *tsOptions);\n\ntypedef IndexToUCStringProcPtr IndexToUCStringUPP;\n# 395 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeUtilities.h\" 3\nextern IndexToUCStringUPP\nNewIndexToUCStringUPP(IndexToUCStringProcPtr userRoutine) ;\n# 406 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeUtilities.h\" 3\nextern void\nDisposeIndexToUCStringUPP(IndexToUCStringUPP userUPP) ;\n# 417 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeUtilities.h\" 3\nextern Boolean\nInvokeIndexToUCStringUPP(\n  UInt32 index,\n  void * listDataPtr,\n  void * refcon,\n  CFStringRef * outString,\n  UCTypeSelectOptions * tsOptions,\n  IndexToUCStringUPP userUPP) ;\n# 442 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeUtilities.h\" 3\nenum {\n  kUCTypeSelectMaxListSize = (UInt32)0xFFFFFFFF\n};\n# 454 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeUtilities.h\" 3\nenum {\n  kUnicodeTextBreakClass = 'ubrk'\n};\n\ntypedef struct OpaqueTextBreakLocatorRef* TextBreakLocatorRef;\n\n\n\n\n\n\n\ntypedef UInt32 UCTextBreakType;\nenum {\n\n\n\n\n\n\n  kUCTextBreakCharMask = 1L << 0,\n# 485 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeUtilities.h\" 3\n  kUCTextBreakClusterMask = 1L << 2,\n\n\n\n\n\n\n  kUCTextBreakWordMask = 1L << 4,\n  kUCTextBreakLineMask = 1L << 6,\n\n\n\n\n\n\n  kUCTextBreakParagraphMask = 1L << 8\n};\n\ntypedef UInt32 UCTextBreakOptions;\nenum {\n  kUCTextBreakLeadingEdgeMask = 1L << 0,\n  kUCTextBreakGoBackwardsMask = 1L << 1,\n  kUCTextBreakIterateMask = 1L << 2\n};\n# 525 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeUtilities.h\" 3\nextern OSStatus\nUCKeyTranslate(\n  const UCKeyboardLayout * keyLayoutPtr,\n  UInt16 virtualKeyCode,\n  UInt16 keyAction,\n  UInt32 modifierKeyState,\n  UInt32 keyboardType,\n  OptionBits keyTranslateOptions,\n  UInt32 * deadKeyState,\n  UniCharCount maxStringLength,\n  UniCharCount * actualStringLength,\n  UniChar unicodeString[]) ;\n# 549 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeUtilities.h\" 3\nextern OSStatus\nUCCreateCollator(\n  LocaleRef locale,\n  LocaleOperationVariant opVariant,\n  UCCollateOptions options,\n  CollatorRef * collatorRef) ;\n# 565 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeUtilities.h\" 3\nextern OSStatus\nUCGetCollationKey(\n  CollatorRef collatorRef,\n  const UniChar * textPtr,\n  UniCharCount textLength,\n  ItemCount maxKeySize,\n  ItemCount * actualKeySize,\n  UCCollationValue collationKey[]) ;\n# 583 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeUtilities.h\" 3\nextern OSStatus\nUCCompareCollationKeys(\n  const UCCollationValue * key1Ptr,\n  ItemCount key1Length,\n  const UCCollationValue * key2Ptr,\n  ItemCount key2Length,\n  Boolean * equivalent,\n  SInt32 * order) ;\n# 601 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeUtilities.h\" 3\nextern OSStatus\nUCCompareText(\n  CollatorRef collatorRef,\n  const UniChar * text1Ptr,\n  UniCharCount text1Length,\n  const UniChar * text2Ptr,\n  UniCharCount text2Length,\n  Boolean * equivalent,\n  SInt32 * order) ;\n# 620 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeUtilities.h\" 3\nextern OSStatus\nUCDisposeCollator(CollatorRef * collatorRef) ;\n# 634 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeUtilities.h\" 3\nextern OSStatus\nUCCompareTextDefault(\n  UCCollateOptions options,\n  const UniChar * text1Ptr,\n  UniCharCount text1Length,\n  const UniChar * text2Ptr,\n  UniCharCount text2Length,\n  Boolean * equivalent,\n  SInt32 * order) ;\n# 656 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeUtilities.h\" 3\nextern OSStatus\nUCCompareTextNoLocale(\n  UCCollateOptions options,\n  const UniChar * text1Ptr,\n  UniCharCount text1Length,\n  const UniChar * text2Ptr,\n  UniCharCount text2Length,\n  Boolean * equivalent,\n  SInt32 * order) ;\n# 703 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeUtilities.h\" 3\nextern OSStatus\nUCCreateTextBreakLocator(\n  LocaleRef locale,\n  LocaleOperationVariant opVariant,\n  UCTextBreakType breakTypes,\n  TextBreakLocatorRef * breakRef) __attribute__((deprecated));\n# 724 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeUtilities.h\" 3\nextern OSStatus\nUCFindTextBreak(\n  TextBreakLocatorRef breakRef,\n  UCTextBreakType breakType,\n  UCTextBreakOptions options,\n  const UniChar * textPtr,\n  UniCharCount textLength,\n  UniCharArrayOffset startOffset,\n  UniCharArrayOffset * breakOffset) __attribute__((deprecated));\n# 748 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeUtilities.h\" 3\nextern OSStatus\nUCDisposeTextBreakLocator(TextBreakLocatorRef * breakRef) __attribute__((deprecated));\n# 793 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeUtilities.h\" 3\nextern OSStatus\nUCTypeSelectCreateSelector(\n  LocaleRef locale,\n  LocaleOperationVariant opVariant,\n  UCCollateOptions options,\n  UCTypeSelectRef * newSelector) ;\n# 822 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeUtilities.h\" 3\nextern OSStatus\nUCTypeSelectFlushSelectorData(UCTypeSelectRef ref) ;\n# 849 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeUtilities.h\" 3\nextern OSStatus\nUCTypeSelectReleaseSelector(UCTypeSelectRef * ref) ;\n# 887 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeUtilities.h\" 3\nextern Boolean\nUCTypeSelectWouldResetBuffer(\n  UCTypeSelectRef inRef,\n  CFStringRef inText,\n  double inEventTime) ;\n# 939 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeUtilities.h\" 3\nextern OSStatus\nUCTypeSelectAddKeyToSelector(\n  UCTypeSelectRef inRef,\n  CFStringRef inText,\n  double inEventTime,\n  Boolean * updateFlag) ;\n# 987 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeUtilities.h\" 3\nextern OSStatus\nUCTypeSelectCompare(\n  UCTypeSelectRef ref,\n  CFStringRef inText,\n  UCTypeSelectCompareResult * result) ;\n# 1053 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeUtilities.h\" 3\nextern OSStatus\nUCTypeSelectFindItem(\n  UCTypeSelectRef ref,\n  UInt32 listSize,\n  void * listDataPtr,\n  void * refcon,\n  IndexToUCStringUPP userUPP,\n  UInt32 * closestItem) ;\n# 1148 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeUtilities.h\" 3\nextern OSStatus\nUCTypeSelectWalkList(\n  UCTypeSelectRef ref,\n  CFStringRef currSelect,\n  UCTSWalkDirection direction,\n  UInt32 listSize,\n  void * listDataPtr,\n  void * refcon,\n  IndexToUCStringUPP userUPP,\n  UInt32 * closestItem) ;\n\n\n\n#pragma pack(pop)\n# 154 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/fp.h\" 1 3\n# 55 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/fp.h\" 3\n#pragma pack(push, 2)\n# 1197 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/fp.h\" 3\nextern const double_t pi ;\n# 1226 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/fp.h\" 3\nextern double compound(double rate, double periods) ;\n# 1237 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/fp.h\" 3\nextern double annuity(double rate, double periods) ;\n# 1258 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/fp.h\" 3\nextern double_t randomx(double_t * x) ;\n# 1267 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/fp.h\" 3\ntypedef short relop;\nenum {\n  GREATERTHAN = 0,\n  LESSTHAN = 1,\n  EQUALTO = 2,\n  UNORDERED = 3\n};\n# 1284 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/fp.h\" 3\nextern relop relation(double_t x, double_t y) ;\n# 1322 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/fp.h\" 3\nstruct decimal {\n    char sgn;\n    char unused;\n    short exp;\n    struct {\n        unsigned char length;\n        unsigned char text[36];\n        unsigned char unused;\n    } sig;\n};\ntypedef struct decimal decimal;\n\nstruct decform {\n    char style;\n    char unused;\n    short digits;\n};\ntypedef struct decform decform;\n# 1348 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/fp.h\" 3\nextern void num2dec(const decform *f, double_t x, decimal *d) ;\n# 1359 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/fp.h\" 3\nextern double_t dec2num(const decimal * d) ;\n# 1370 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/fp.h\" 3\nextern void dec2str(const decform *f, const decimal *d, char *s) ;\n# 1381 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/fp.h\" 3\nextern void str2dec(const char *s, short *ix, decimal *d, short *vp) ;\n# 1392 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/fp.h\" 3\nextern float dec2f(const decimal * d) ;\n# 1403 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/fp.h\" 3\nextern short dec2s(const decimal * d) ;\n# 1414 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/fp.h\" 3\nextern long dec2l(const decimal * d) ;\n# 2315 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/fp.h\" 3\nextern relop relationl(long double x, long double y);\n# 2334 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/fp.h\" 3\nextern void num2decl(const decform *f, long double x, decimal *d);\n# 2353 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/fp.h\" 3\nextern long double dec2numl(const decimal * d);\n# 2380 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/fp.h\" 3\nextern double x80tod(const extended80 * x80) ;\n# 2391 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/fp.h\" 3\nextern void dtox80(const double *x, extended80 *x80) ;\n# 2410 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/fp.h\" 3\nextern void x80told(const extended80 *x80, long double *x);\n# 2429 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/fp.h\" 3\nextern void ldtox80(const long double *x, extended80 *x80);\n# 2442 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/fp.h\" 3\n#pragma pack(pop)\n# 158 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n\n\n# 1 \"/usr/include/fenv.h\" 1 3 4\n# 26 \"/usr/include/fenv.h\" 3 4\n#pragma GCC fenv\n\n\n\n\n\n# 1 \"/usr/include/architecture/i386/fenv.h\" 1 3 4\n# 39 \"/usr/include/architecture/i386/fenv.h\" 3 4\n#pragma GCC fenv\n# 87 \"/usr/include/architecture/i386/fenv.h\" 3 4\ntypedef struct {\n    unsigned short __control;\n    unsigned short __status;\n    unsigned int __mxcsr;\n    char __reserved[8];\n} fenv_t;\n\ntypedef unsigned short fexcept_t;\n# 111 \"/usr/include/architecture/i386/fenv.h\" 3 4\nextern const fenv_t _FE_DFL_ENV;\n# 133 \"/usr/include/architecture/i386/fenv.h\" 3 4\nextern const fenv_t _FE_DFL_DISABLE_SSE_DENORMS_ENV;\n# 147 \"/usr/include/architecture/i386/fenv.h\" 3 4\nextern int feclearexcept(int );\n# 157 \"/usr/include/architecture/i386/fenv.h\" 3 4\nextern int fegetexceptflag(fexcept_t * , int );\n# 166 \"/usr/include/architecture/i386/fenv.h\" 3 4\nextern int feraiseexcept(int );\n# 179 \"/usr/include/architecture/i386/fenv.h\" 3 4\nextern int fesetexceptflag(const fexcept_t * , int );\n# 194 \"/usr/include/architecture/i386/fenv.h\" 3 4\nextern int fetestexcept(int );\n# 208 \"/usr/include/architecture/i386/fenv.h\" 3 4\nextern int fegetround(void);\n# 219 \"/usr/include/architecture/i386/fenv.h\" 3 4\nextern int fesetround(int );\n# 231 \"/usr/include/architecture/i386/fenv.h\" 3 4\nextern int fegetenv(fenv_t * );\n# 241 \"/usr/include/architecture/i386/fenv.h\" 3 4\nextern int feholdexcept(fenv_t * );\n# 266 \"/usr/include/architecture/i386/fenv.h\" 3 4\nextern int fesetenv(const fenv_t * );\n# 279 \"/usr/include/architecture/i386/fenv.h\" 3 4\nextern int feupdateenv(const fenv_t * );\n# 33 \"/usr/include/fenv.h\" 2 3 4\n# 161 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingConverter.h\" 1 3\n# 43 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingConverter.h\" 3\n#pragma pack(push, 2)\n\ntypedef OSType TECPluginSignature;\ntypedef UInt32 TECPluginVersion;\n\nenum {\n  kTECSignature = 'encv',\n  kTECUnicodePluginSignature = 'puni',\n  kTECJapanesePluginSignature = 'pjpn',\n  kTECChinesePluginSignature = 'pzho',\n  kTECKoreanPluginSignature = 'pkor'\n};\n\n\n\ntypedef struct OpaqueTECObjectRef* TECObjectRef;\ntypedef struct OpaqueTECSnifferObjectRef* TECSnifferObjectRef;\ntypedef OSType TECPluginSig;\nstruct TECConversionInfo {\n  TextEncoding sourceEncoding;\n  TextEncoding destinationEncoding;\n  UInt16 reserved1;\n  UInt16 reserved2;\n};\ntypedef struct TECConversionInfo TECConversionInfo;\n# 76 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingConverter.h\" 3\ntypedef UInt32 TECInternetNameUsageMask;\nenum {\n\n\n\n\n\n\n  kTECInternetNameDefaultUsageMask = 0,\n\n\n\n\n\n  kTECInternetNameStrictUsageMask = 1,\n# 99 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingConverter.h\" 3\n  kTECInternetNameTolerantUsageMask = 2\n};\n\n\nenum {\n  kTEC_MIBEnumDontCare = -1\n};\n\n\nenum {\n  kTECDisableFallbacksBit = 16,\n  kTECDisableLooseMappingsBit = 17\n};\n\nenum {\n  kTECDisableFallbacksMask = 1L << kTECDisableFallbacksBit,\n  kTECDisableLooseMappingsMask = 1L << kTECDisableLooseMappingsBit\n};\n# 128 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingConverter.h\" 3\nextern OSStatus\nTECCountAvailableTextEncodings(ItemCount * numberEncodings) ;\n# 141 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingConverter.h\" 3\nextern OSStatus\nTECGetAvailableTextEncodings(\n  TextEncoding availableEncodings[],\n  ItemCount maxAvailableEncodings,\n  ItemCount * actualAvailableEncodings) ;\n# 157 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingConverter.h\" 3\nextern OSStatus\nTECCountDirectTextEncodingConversions(ItemCount * numberOfEncodings) ;\n# 170 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingConverter.h\" 3\nextern OSStatus\nTECGetDirectTextEncodingConversions(\n  TECConversionInfo availableConversions[],\n  ItemCount maxAvailableConversions,\n  ItemCount * actualAvailableConversions) ;\n# 186 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingConverter.h\" 3\nextern OSStatus\nTECCountDestinationTextEncodings(\n  TextEncoding inputEncoding,\n  ItemCount * numberOfEncodings) ;\n# 201 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingConverter.h\" 3\nextern OSStatus\nTECGetDestinationTextEncodings(\n  TextEncoding inputEncoding,\n  TextEncoding destinationEncodings[],\n  ItemCount maxDestinationEncodings,\n  ItemCount * actualDestinationEncodings) ;\n# 218 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingConverter.h\" 3\nextern OSStatus\nTECGetTextEncodingInternetName(\n  TextEncoding textEncoding,\n  Str255 encodingName) ;\n# 232 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingConverter.h\" 3\nextern OSStatus\nTECGetTextEncodingFromInternetName(\n  TextEncoding * textEncoding,\n  ConstStr255Param encodingName) ;\n# 247 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingConverter.h\" 3\nextern OSStatus\nTECCreateConverter(\n  TECObjectRef * newEncodingConverter,\n  TextEncoding inputEncoding,\n  TextEncoding outputEncoding) ;\n# 262 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingConverter.h\" 3\nextern OSStatus\nTECCreateConverterFromPath(\n  TECObjectRef * newEncodingConverter,\n  const TextEncoding inPath[],\n  ItemCount inEncodings) ;\n# 277 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingConverter.h\" 3\nextern OSStatus\nTECDisposeConverter(TECObjectRef newEncodingConverter) ;\n# 290 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingConverter.h\" 3\nextern OSStatus\nTECClearConverterContextInfo(TECObjectRef encodingConverter) ;\n# 302 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingConverter.h\" 3\nextern OSStatus\nTECConvertText(\n  TECObjectRef encodingConverter,\n  ConstTextPtr inputBuffer,\n  ByteCount inputBufferLength,\n  ByteCount * actualInputLength,\n  TextPtr outputBuffer,\n  ByteCount outputBufferLength,\n  ByteCount * actualOutputLength) ;\n# 321 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingConverter.h\" 3\nextern OSStatus\nTECFlushText(\n  TECObjectRef encodingConverter,\n  TextPtr outputBuffer,\n  ByteCount outputBufferLength,\n  ByteCount * actualOutputLength) ;\n# 338 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingConverter.h\" 3\nextern OSStatus\nTECCountSubTextEncodings(\n  TextEncoding inputEncoding,\n  ItemCount * numberOfEncodings) ;\n# 352 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingConverter.h\" 3\nextern OSStatus\nTECGetSubTextEncodings(\n  TextEncoding inputEncoding,\n  TextEncoding subEncodings[],\n  ItemCount maxSubEncodings,\n  ItemCount * actualSubEncodings) ;\n# 381 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingConverter.h\" 3\nextern OSStatus\nTECGetEncodingList(\n  TECObjectRef encodingConverter,\n  ItemCount * numEncodings,\n  Handle * encodingList) ;\n# 396 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingConverter.h\" 3\nextern OSStatus\nTECCreateOneToManyConverter(\n  TECObjectRef * newEncodingConverter,\n  TextEncoding inputEncoding,\n  ItemCount numOutputEncodings,\n  const TextEncoding outputEncodings[]) ;\n# 412 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingConverter.h\" 3\nextern OSStatus\nTECConvertTextToMultipleEncodings(\n  TECObjectRef encodingConverter,\n  ConstTextPtr inputBuffer,\n  ByteCount inputBufferLength,\n  ByteCount * actualInputLength,\n  TextPtr outputBuffer,\n  ByteCount outputBufferLength,\n  ByteCount * actualOutputLength,\n  TextEncodingRun outEncodingsBuffer[],\n  ItemCount maxOutEncodingRuns,\n  ItemCount * actualOutEncodingRuns) ;\n# 434 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingConverter.h\" 3\nextern OSStatus\nTECFlushMultipleEncodings(\n  TECObjectRef encodingConverter,\n  TextPtr outputBuffer,\n  ByteCount outputBufferLength,\n  ByteCount * actualOutputLength,\n  TextEncodingRun outEncodingsBuffer[],\n  ItemCount maxOutEncodingRuns,\n  ItemCount * actualOutEncodingRuns) ;\n# 454 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingConverter.h\" 3\nextern OSStatus\nTECCountWebTextEncodings(\n  RegionCode locale,\n  ItemCount * numberEncodings) ;\n# 468 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingConverter.h\" 3\nextern OSStatus\nTECGetWebTextEncodings(\n  RegionCode locale,\n  TextEncoding availableEncodings[],\n  ItemCount maxAvailableEncodings,\n  ItemCount * actualAvailableEncodings) ;\n# 484 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingConverter.h\" 3\nextern OSStatus\nTECCountMailTextEncodings(\n  RegionCode locale,\n  ItemCount * numberEncodings) ;\n# 498 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingConverter.h\" 3\nextern OSStatus\nTECGetMailTextEncodings(\n  RegionCode locale,\n  TextEncoding availableEncodings[],\n  ItemCount maxAvailableEncodings,\n  ItemCount * actualAvailableEncodings) ;\n# 515 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingConverter.h\" 3\nextern OSStatus\nTECCountAvailableSniffers(ItemCount * numberOfEncodings) ;\n# 527 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingConverter.h\" 3\nextern OSStatus\nTECGetAvailableSniffers(\n  TextEncoding availableSniffers[],\n  ItemCount maxAvailableSniffers,\n  ItemCount * actualAvailableSniffers) ;\n# 542 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingConverter.h\" 3\nextern OSStatus\nTECCreateSniffer(\n  TECSnifferObjectRef * encodingSniffer,\n  const TextEncoding testEncodings[],\n  ItemCount numTextEncodings) ;\n# 557 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingConverter.h\" 3\nextern OSStatus\nTECSniffTextEncoding(\n  TECSnifferObjectRef encodingSniffer,\n  ConstTextPtr inputBuffer,\n  ByteCount inputBufferLength,\n  TextEncoding testEncodings[],\n  ItemCount numTextEncodings,\n  ItemCount numErrsArray[],\n  ItemCount maxErrs,\n  ItemCount numFeaturesArray[],\n  ItemCount maxFeatures) ;\n# 578 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingConverter.h\" 3\nextern OSStatus\nTECDisposeSniffer(TECSnifferObjectRef encodingSniffer) ;\n# 590 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingConverter.h\" 3\nextern OSStatus\nTECClearSnifferContextInfo(TECSnifferObjectRef encodingSniffer) ;\n# 636 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingConverter.h\" 3\nextern OSStatus\nTECSetBasicOptions(\n  TECObjectRef encodingConverter,\n  OptionBits controlFlags) ;\n# 687 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingConverter.h\" 3\nextern OSStatus\nTECCopyTextEncodingInternetNameAndMIB(\n  TextEncoding textEncoding,\n  TECInternetNameUsageMask usage,\n  CFStringRef * encodingNamePtr,\n  SInt32 * mibEnumPtr) ;\n# 721 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingConverter.h\" 3\nextern OSStatus\nTECGetTextEncodingFromInternetNameOrMIB(\n  TextEncoding * textEncodingPtr,\n  TECInternetNameUsageMask usage,\n  CFStringRef encodingName,\n  SInt32 mibEnum) ;\n\n\n\n\n\n\n#pragma pack(pop)\n# 163 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeConverter.h\" 1 3\n# 43 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeConverter.h\" 3\n#pragma pack(push, 2)\n\n\ntypedef struct OpaqueTextToUnicodeInfo* TextToUnicodeInfo;\ntypedef struct OpaqueUnicodeToTextInfo* UnicodeToTextInfo;\ntypedef struct OpaqueUnicodeToTextRunInfo* UnicodeToTextRunInfo;\ntypedef const TextToUnicodeInfo ConstTextToUnicodeInfo;\ntypedef const UnicodeToTextInfo ConstUnicodeToTextInfo;\n\ntypedef SInt32 UnicodeMapVersion;\nenum {\n  kUnicodeUseLatestMapping = -1,\n  kUnicodeUseHFSPlusMapping = 4\n};\n\n\nstruct UnicodeMapping {\n  TextEncoding unicodeEncoding;\n  TextEncoding otherEncoding;\n  UnicodeMapVersion mappingVersion;\n};\ntypedef struct UnicodeMapping UnicodeMapping;\ntypedef UnicodeMapping * UnicodeMappingPtr;\ntypedef const UnicodeMapping * ConstUnicodeMappingPtr;\n\nenum {\n  kUnicodeUseFallbacksBit = 0,\n  kUnicodeKeepInfoBit = 1,\n  kUnicodeDirectionalityBits = 2,\n  kUnicodeVerticalFormBit = 4,\n  kUnicodeLooseMappingsBit = 5,\n  kUnicodeStringUnterminatedBit = 6,\n  kUnicodeTextRunBit = 7,\n  kUnicodeKeepSameEncodingBit = 8,\n  kUnicodeForceASCIIRangeBit = 9,\n  kUnicodeNoHalfwidthCharsBit = 10,\n  kUnicodeTextRunHeuristicsBit = 11,\n  kUnicodeMapLineFeedToReturnBit = 12,\n\n\n\n\n\n  kUnicodeUseExternalEncodingFormBit = 13\n};\n\nenum {\n  kUnicodeUseFallbacksMask = 1L << kUnicodeUseFallbacksBit,\n  kUnicodeKeepInfoMask = 1L << kUnicodeKeepInfoBit,\n  kUnicodeDirectionalityMask = 3L << kUnicodeDirectionalityBits,\n  kUnicodeVerticalFormMask = 1L << kUnicodeVerticalFormBit,\n  kUnicodeLooseMappingsMask = 1L << kUnicodeLooseMappingsBit,\n  kUnicodeStringUnterminatedMask = 1L << kUnicodeStringUnterminatedBit,\n  kUnicodeTextRunMask = 1L << kUnicodeTextRunBit,\n  kUnicodeKeepSameEncodingMask = 1L << kUnicodeKeepSameEncodingBit,\n  kUnicodeForceASCIIRangeMask = 1L << kUnicodeForceASCIIRangeBit,\n  kUnicodeNoHalfwidthCharsMask = 1L << kUnicodeNoHalfwidthCharsBit,\n  kUnicodeTextRunHeuristicsMask = 1L << kUnicodeTextRunHeuristicsBit,\n  kUnicodeMapLineFeedToReturnMask = 1L << kUnicodeMapLineFeedToReturnBit,\n\n\n\n\n\n  kUnicodeUseExternalEncodingFormMask = 1L << kUnicodeUseExternalEncodingFormBit\n};\n\n\nenum {\n  kUnicodeDefaultDirection = 0,\n  kUnicodeLeftToRight = 1,\n  kUnicodeRightToLeft = 2\n};\n\n\nenum {\n  kUnicodeDefaultDirectionMask = kUnicodeDefaultDirection << kUnicodeDirectionalityBits,\n  kUnicodeLeftToRightMask = kUnicodeLeftToRight << kUnicodeDirectionalityBits,\n  kUnicodeRightToLeftMask = kUnicodeRightToLeft << kUnicodeDirectionalityBits\n};\n# 146 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeConverter.h\" 3\nenum {\n  kUnicodeMatchUnicodeBaseBit = 0,\n  kUnicodeMatchUnicodeVariantBit = 1,\n  kUnicodeMatchUnicodeFormatBit = 2,\n  kUnicodeMatchOtherBaseBit = 3,\n  kUnicodeMatchOtherVariantBit = 4,\n  kUnicodeMatchOtherFormatBit = 5\n};\n\nenum {\n  kUnicodeMatchUnicodeBaseMask = 1L << kUnicodeMatchUnicodeBaseBit,\n  kUnicodeMatchUnicodeVariantMask = 1L << kUnicodeMatchUnicodeVariantBit,\n  kUnicodeMatchUnicodeFormatMask = 1L << kUnicodeMatchUnicodeFormatBit,\n  kUnicodeMatchOtherBaseMask = 1L << kUnicodeMatchOtherBaseBit,\n  kUnicodeMatchOtherVariantMask = 1L << kUnicodeMatchOtherVariantBit,\n  kUnicodeMatchOtherFormatMask = 1L << kUnicodeMatchOtherFormatBit\n};\n\n\nenum {\n  kUnicodeFallbackSequencingBits = 0\n};\n\nenum {\n  kUnicodeFallbackSequencingMask = 3L << kUnicodeFallbackSequencingBits,\n  kUnicodeFallbackInterruptSafeMask = 1L << 2\n};\n\n\nenum {\n  kUnicodeFallbackDefaultOnly = 0,\n  kUnicodeFallbackCustomOnly = 1,\n  kUnicodeFallbackDefaultFirst = 2,\n  kUnicodeFallbackCustomFirst = 3\n};\n\n\n\ntypedef OSStatus ( * UnicodeToTextFallbackProcPtr)(UniChar *iSrcUniStr, ByteCount iSrcUniStrLen, ByteCount *oSrcConvLen, TextPtr oDestStr, ByteCount iDestStrLen, ByteCount *oDestConvLen, LogicalAddress iInfoPtr, ConstUnicodeMappingPtr iUnicodeMappingPtr);\ntypedef UnicodeToTextFallbackProcPtr UnicodeToTextFallbackUPP;\n# 194 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeConverter.h\" 3\nextern UnicodeToTextFallbackUPP\nNewUnicodeToTextFallbackUPP(UnicodeToTextFallbackProcPtr userRoutine) ;\n# 205 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeConverter.h\" 3\nextern void\nDisposeUnicodeToTextFallbackUPP(UnicodeToTextFallbackUPP userUPP) ;\n# 216 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeConverter.h\" 3\nextern OSStatus\nInvokeUnicodeToTextFallbackUPP(\n  UniChar * iSrcUniStr,\n  ByteCount iSrcUniStrLen,\n  ByteCount * oSrcConvLen,\n  TextPtr oDestStr,\n  ByteCount iDestStrLen,\n  ByteCount * oDestConvLen,\n  LogicalAddress iInfoPtr,\n  ConstUnicodeMappingPtr iUnicodeMappingPtr,\n  UnicodeToTextFallbackUPP userUPP) ;\n# 249 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeConverter.h\" 3\nextern OSStatus\nCreateTextToUnicodeInfo(\n  ConstUnicodeMappingPtr iUnicodeMapping,\n  TextToUnicodeInfo * oTextToUnicodeInfo) ;\n# 263 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeConverter.h\" 3\nextern OSStatus\nCreateTextToUnicodeInfoByEncoding(\n  TextEncoding iEncoding,\n  TextToUnicodeInfo * oTextToUnicodeInfo) ;\n# 277 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeConverter.h\" 3\nextern OSStatus\nCreateUnicodeToTextInfo(\n  ConstUnicodeMappingPtr iUnicodeMapping,\n  UnicodeToTextInfo * oUnicodeToTextInfo) ;\n# 291 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeConverter.h\" 3\nextern OSStatus\nCreateUnicodeToTextInfoByEncoding(\n  TextEncoding iEncoding,\n  UnicodeToTextInfo * oUnicodeToTextInfo) ;\n# 305 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeConverter.h\" 3\nextern OSStatus\nCreateUnicodeToTextRunInfo(\n  ItemCount iNumberOfMappings,\n  const UnicodeMapping iUnicodeMappings[],\n  UnicodeToTextRunInfo * oUnicodeToTextInfo) ;\n# 320 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeConverter.h\" 3\nextern OSStatus\nCreateUnicodeToTextRunInfoByEncoding(\n  ItemCount iNumberOfEncodings,\n  const TextEncoding iEncodings[],\n  UnicodeToTextRunInfo * oUnicodeToTextInfo) ;\n# 335 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeConverter.h\" 3\nextern OSStatus\nCreateUnicodeToTextRunInfoByScriptCode(\n  ItemCount iNumberOfScriptCodes,\n  const ScriptCode iScripts[],\n  UnicodeToTextRunInfo * oUnicodeToTextInfo) ;\n# 351 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeConverter.h\" 3\nextern OSStatus\nChangeTextToUnicodeInfo(\n  TextToUnicodeInfo ioTextToUnicodeInfo,\n  ConstUnicodeMappingPtr iUnicodeMapping) ;\n# 366 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeConverter.h\" 3\nextern OSStatus\nChangeUnicodeToTextInfo(\n  UnicodeToTextInfo ioUnicodeToTextInfo,\n  ConstUnicodeMappingPtr iUnicodeMapping) ;\n# 381 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeConverter.h\" 3\nextern OSStatus\nDisposeTextToUnicodeInfo(TextToUnicodeInfo * ioTextToUnicodeInfo) ;\n# 393 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeConverter.h\" 3\nextern OSStatus\nDisposeUnicodeToTextInfo(UnicodeToTextInfo * ioUnicodeToTextInfo) ;\n# 405 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeConverter.h\" 3\nextern OSStatus\nDisposeUnicodeToTextRunInfo(UnicodeToTextRunInfo * ioUnicodeToTextRunInfo) ;\n# 417 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeConverter.h\" 3\nextern OSStatus\nConvertFromTextToUnicode(\n  TextToUnicodeInfo iTextToUnicodeInfo,\n  ByteCount iSourceLen,\n  ConstLogicalAddress iSourceStr,\n  OptionBits iControlFlags,\n  ItemCount iOffsetCount,\n  const ByteOffset iOffsetArray[],\n  ItemCount * oOffsetCount,\n  ByteOffset oOffsetArray[],\n  ByteCount iOutputBufLen,\n  ByteCount * oSourceRead,\n  ByteCount * oUnicodeLen,\n  UniChar oUnicodeStr[]) ;\n# 441 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeConverter.h\" 3\nextern OSStatus\nConvertFromUnicodeToText(\n  UnicodeToTextInfo iUnicodeToTextInfo,\n  ByteCount iUnicodeLen,\n  const UniChar iUnicodeStr[],\n  OptionBits iControlFlags,\n  ItemCount iOffsetCount,\n  const ByteOffset iOffsetArray[],\n  ItemCount * oOffsetCount,\n  ByteOffset oOffsetArray[],\n  ByteCount iOutputBufLen,\n  ByteCount * oInputRead,\n  ByteCount * oOutputLen,\n  LogicalAddress oOutputStr) ;\n# 465 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeConverter.h\" 3\nextern OSStatus\nConvertFromUnicodeToTextRun(\n  UnicodeToTextRunInfo iUnicodeToTextInfo,\n  ByteCount iUnicodeLen,\n  const UniChar iUnicodeStr[],\n  OptionBits iControlFlags,\n  ItemCount iOffsetCount,\n  const ByteOffset iOffsetArray[],\n  ItemCount * oOffsetCount,\n  ByteOffset oOffsetArray[],\n  ByteCount iOutputBufLen,\n  ByteCount * oInputRead,\n  ByteCount * oOutputLen,\n  LogicalAddress oOutputStr,\n  ItemCount iEncodingRunBufLen,\n  ItemCount * oEncodingRunOutLen,\n  TextEncodingRun oEncodingRuns[]) ;\n# 492 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeConverter.h\" 3\nextern OSStatus\nConvertFromUnicodeToScriptCodeRun(\n  UnicodeToTextRunInfo iUnicodeToTextInfo,\n  ByteCount iUnicodeLen,\n  const UniChar iUnicodeStr[],\n  OptionBits iControlFlags,\n  ItemCount iOffsetCount,\n  const ByteOffset iOffsetArray[],\n  ItemCount * oOffsetCount,\n  ByteOffset oOffsetArray[],\n  ByteCount iOutputBufLen,\n  ByteCount * oInputRead,\n  ByteCount * oOutputLen,\n  LogicalAddress oOutputStr,\n  ItemCount iScriptRunBufLen,\n  ItemCount * oScriptRunOutLen,\n  ScriptCodeRun oScriptCodeRuns[]) ;\n# 520 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeConverter.h\" 3\nextern OSStatus\nTruncateForTextToUnicode(\n  ConstTextToUnicodeInfo iTextToUnicodeInfo,\n  ByteCount iSourceLen,\n  ConstLogicalAddress iSourceStr,\n  ByteCount iMaxLen,\n  ByteCount * oTruncatedLen) ;\n# 538 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeConverter.h\" 3\nextern OSStatus\nTruncateForUnicodeToText(\n  ConstUnicodeToTextInfo iUnicodeToTextInfo,\n  ByteCount iSourceLen,\n  const UniChar iSourceStr[],\n  OptionBits iControlFlags,\n  ByteCount iMaxLen,\n  ByteCount * oTruncatedLen) ;\n# 557 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeConverter.h\" 3\nextern OSStatus\nConvertFromPStringToUnicode(\n  TextToUnicodeInfo iTextToUnicodeInfo,\n  ConstStr255Param iPascalStr,\n  ByteCount iOutputBufLen,\n  ByteCount * oUnicodeLen,\n  UniChar oUnicodeStr[]) ;\n# 575 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeConverter.h\" 3\nextern OSStatus\nConvertFromUnicodeToPString(\n  UnicodeToTextInfo iUnicodeToTextInfo,\n  ByteCount iUnicodeLen,\n  const UniChar iUnicodeStr[],\n  Str255 oPascalStr) ;\n# 592 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeConverter.h\" 3\nextern OSStatus\nCountUnicodeMappings(\n  OptionBits iFilter,\n  ConstUnicodeMappingPtr iFindMapping,\n  ItemCount * oActualCount) ;\n# 608 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeConverter.h\" 3\nextern OSStatus\nQueryUnicodeMappings(\n  OptionBits iFilter,\n  ConstUnicodeMappingPtr iFindMapping,\n  ItemCount iMaxCount,\n  ItemCount * oActualCount,\n  UnicodeMapping oReturnedMappings[]) ;\n# 626 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeConverter.h\" 3\nextern OSStatus\nSetFallbackUnicodeToText(\n  UnicodeToTextInfo iUnicodeToTextInfo,\n  UnicodeToTextFallbackUPP iFallback,\n  OptionBits iControlFlags,\n  LogicalAddress iInfoPtr) ;\n# 643 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeConverter.h\" 3\nextern OSStatus\nSetFallbackUnicodeToTextRun(\n  UnicodeToTextRunInfo iUnicodeToTextRunInfo,\n  UnicodeToTextFallbackUPP iFallback,\n  OptionBits iControlFlags,\n  LogicalAddress iInfoPtr) ;\n# 660 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeConverter.h\" 3\nextern OSStatus\nResetTextToUnicodeInfo(TextToUnicodeInfo ioTextToUnicodeInfo) ;\n# 673 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeConverter.h\" 3\nextern OSStatus\nResetUnicodeToTextInfo(UnicodeToTextInfo ioUnicodeToTextInfo) ;\n# 686 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/UnicodeConverter.h\" 3\nextern OSStatus\nResetUnicodeToTextRunInfo(UnicodeToTextRunInfo ioUnicodeToTextRunInfo) ;\n\n\n\n\n#pragma pack(pop)\n# 167 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 1 3\n# 43 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\n#pragma pack(push, 2)\n\n\ntypedef UInt16 ThreadState;\nenum {\n  kReadyThreadState = 0,\n  kStoppedThreadState = 1,\n  kRunningThreadState = 2\n};\n\n\n\n\ntypedef void * ThreadTaskRef;\n\ntypedef UInt32 ThreadStyle;\nenum {\n  kCooperativeThread = 1L << 0,\n  kPreemptiveThread = 1L << 1\n};\n\n\ntypedef unsigned long ThreadID;\nenum {\n  kNoThreadID = 0,\n  kCurrentThreadID = 1,\n  kApplicationThreadID = 2\n};\n\n\ntypedef UInt32 ThreadOptions;\nenum {\n  kNewSuspend = (1 << 0),\n  kUsePremadeThread = (1 << 1),\n  kCreateIfNeeded = (1 << 2),\n  kFPUNotNeeded = (1 << 3),\n  kExactMatchThread = (1 << 4)\n};\n\n\nstruct SchedulerInfoRec {\n  UInt32 InfoRecSize;\n  ThreadID CurrentThreadID;\n  ThreadID SuggestedThreadID;\n  ThreadID InterruptedCoopThreadID;\n};\ntypedef struct SchedulerInfoRec SchedulerInfoRec;\ntypedef SchedulerInfoRec * SchedulerInfoRecPtr;\n\n\n\n\n\n\ntypedef void * voidPtr;\n\ntypedef voidPtr ( * ThreadEntryProcPtr)(void * threadParam);\n\ntypedef ThreadID ( * ThreadSchedulerProcPtr)(SchedulerInfoRecPtr schedulerInfo);\n\ntypedef void ( * ThreadSwitchProcPtr)(ThreadID threadBeingSwitched, void *switchProcParam);\n\ntypedef void ( * ThreadTerminationProcPtr)(ThreadID threadTerminated, void *terminationProcParam);\n\ntypedef void ( * DebuggerNewThreadProcPtr)(ThreadID threadCreated);\n\ntypedef void ( * DebuggerDisposeThreadProcPtr)(ThreadID threadDeleted);\n\ntypedef ThreadID ( * DebuggerThreadSchedulerProcPtr)(SchedulerInfoRecPtr schedulerInfo);\ntypedef ThreadEntryProcPtr ThreadEntryUPP;\ntypedef ThreadSchedulerProcPtr ThreadSchedulerUPP;\ntypedef ThreadSwitchProcPtr ThreadSwitchUPP;\ntypedef ThreadTerminationProcPtr ThreadTerminationUPP;\ntypedef DebuggerNewThreadProcPtr DebuggerNewThreadUPP;\ntypedef DebuggerDisposeThreadProcPtr DebuggerDisposeThreadUPP;\ntypedef DebuggerThreadSchedulerProcPtr DebuggerThreadSchedulerUPP;\n# 127 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern ThreadEntryUPP\nNewThreadEntryUPP(ThreadEntryProcPtr userRoutine) ;\n# 138 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern ThreadSchedulerUPP\nNewThreadSchedulerUPP(ThreadSchedulerProcPtr userRoutine) ;\n# 149 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern ThreadSwitchUPP\nNewThreadSwitchUPP(ThreadSwitchProcPtr userRoutine) ;\n# 160 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern ThreadTerminationUPP\nNewThreadTerminationUPP(ThreadTerminationProcPtr userRoutine) ;\n# 171 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern DebuggerNewThreadUPP\nNewDebuggerNewThreadUPP(DebuggerNewThreadProcPtr userRoutine) ;\n# 182 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern DebuggerDisposeThreadUPP\nNewDebuggerDisposeThreadUPP(DebuggerDisposeThreadProcPtr userRoutine) ;\n# 193 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern DebuggerThreadSchedulerUPP\nNewDebuggerThreadSchedulerUPP(DebuggerThreadSchedulerProcPtr userRoutine) ;\n# 204 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern void\nDisposeThreadEntryUPP(ThreadEntryUPP userUPP) ;\n# 215 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern void\nDisposeThreadSchedulerUPP(ThreadSchedulerUPP userUPP) ;\n# 226 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern void\nDisposeThreadSwitchUPP(ThreadSwitchUPP userUPP) ;\n# 237 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern void\nDisposeThreadTerminationUPP(ThreadTerminationUPP userUPP) ;\n# 248 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern void\nDisposeDebuggerNewThreadUPP(DebuggerNewThreadUPP userUPP) ;\n# 259 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern void\nDisposeDebuggerDisposeThreadUPP(DebuggerDisposeThreadUPP userUPP) ;\n# 270 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern void\nDisposeDebuggerThreadSchedulerUPP(DebuggerThreadSchedulerUPP userUPP) ;\n# 281 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern voidPtr\nInvokeThreadEntryUPP(\n  void * threadParam,\n  ThreadEntryUPP userUPP) ;\n# 294 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern ThreadID\nInvokeThreadSchedulerUPP(\n  SchedulerInfoRecPtr schedulerInfo,\n  ThreadSchedulerUPP userUPP) ;\n# 307 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern void\nInvokeThreadSwitchUPP(\n  ThreadID threadBeingSwitched,\n  void * switchProcParam,\n  ThreadSwitchUPP userUPP) ;\n# 321 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern void\nInvokeThreadTerminationUPP(\n  ThreadID threadTerminated,\n  void * terminationProcParam,\n  ThreadTerminationUPP userUPP) ;\n# 335 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern void\nInvokeDebuggerNewThreadUPP(\n  ThreadID threadCreated,\n  DebuggerNewThreadUPP userUPP) ;\n# 348 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern void\nInvokeDebuggerDisposeThreadUPP(\n  ThreadID threadDeleted,\n  DebuggerDisposeThreadUPP userUPP) ;\n# 361 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern ThreadID\nInvokeDebuggerThreadSchedulerUPP(\n  SchedulerInfoRecPtr schedulerInfo,\n  DebuggerThreadSchedulerUPP userUPP) ;\n# 424 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\ntypedef ThreadEntryUPP ThreadEntryTPP;\ntypedef ThreadSchedulerUPP ThreadSchedulerTPP;\ntypedef ThreadSwitchUPP ThreadSwitchTPP;\ntypedef ThreadTerminationUPP ThreadTerminationTPP;\ntypedef DebuggerNewThreadUPP DebuggerNewThreadTPP;\ntypedef DebuggerDisposeThreadUPP DebuggerDisposeThreadTPP;\ntypedef DebuggerThreadSchedulerUPP DebuggerThreadSchedulerTPP;\n# 439 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern OSErr\nNewThread(\n  ThreadStyle threadStyle,\n  ThreadEntryTPP threadEntry,\n  void * threadParam,\n  Size stackSize,\n  ThreadOptions options,\n  void ** threadResult,\n  ThreadID * threadMade) ;\n# 458 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern OSErr\nSetThreadScheduler(ThreadSchedulerTPP threadScheduler) ;\n# 470 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern OSErr\nSetThreadSwitcher(\n  ThreadID thread,\n  ThreadSwitchTPP threadSwitcher,\n  void * switchProcParam,\n  Boolean inOrOut) ;\n# 486 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern OSErr\nSetThreadTerminator(\n  ThreadID thread,\n  ThreadTerminationTPP threadTerminator,\n  void * terminationProcParam) ;\n# 501 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern OSErr\nSetDebuggerNotificationProcs(\n  DebuggerNewThreadTPP notifyNewThread,\n  DebuggerDisposeThreadTPP notifyDisposeThread,\n  DebuggerThreadSchedulerTPP notifyThreadScheduler) ;\n# 516 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern OSErr\nCreateThreadPool(\n  ThreadStyle threadStyle,\n  SInt16 numToCreate,\n  Size stackSize) ;\n# 531 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern OSErr\nGetDefaultThreadStackSize(\n  ThreadStyle threadStyle,\n  Size * stackSize) ;\n# 545 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern OSErr\nThreadCurrentStackSpace(\n  ThreadID thread,\n  ByteCount * freeStack) ;\n# 559 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern OSErr\nDisposeThread(\n  ThreadID threadToDump,\n  void * threadResult,\n  Boolean recycleThread) ;\n# 574 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern OSErr\nYieldToThread(ThreadID suggestedThread) ;\n# 586 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern OSErr\nYieldToAnyThread(void) ;\n# 601 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern OSErr\nGetCurrentThread(ThreadID * currentThreadID) ;\n# 613 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern OSErr\nGetThreadState(\n  ThreadID threadToGet,\n  ThreadState * threadState) ;\n# 627 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern OSErr\nSetThreadState(\n  ThreadID threadToSet,\n  ThreadState newState,\n  ThreadID suggestedThread) ;\n# 642 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern OSErr\nSetThreadStateEndCritical(\n  ThreadID threadToSet,\n  ThreadState newState,\n  ThreadID suggestedThread) ;\n# 657 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern OSErr\nThreadBeginCritical(void) ;\n# 669 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern OSErr\nThreadEndCritical(void) ;\n# 681 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern OSErr\nGetThreadCurrentTaskRef(ThreadTaskRef * threadTRef) ;\n# 693 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern OSErr\nGetThreadStateGivenTaskRef(\n  ThreadTaskRef threadTRef,\n  ThreadID threadToGet,\n  ThreadState * threadState) ;\n# 708 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\nextern OSErr\nSetThreadReadyGivenTaskRef(\n  ThreadTaskRef threadTRef,\n  ThreadID threadToSet) ;\n# 749 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Threads.h\" 3\n#pragma pack(pop)\n# 171 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Folders.h\" 1 3\n# 43 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Folders.h\" 3\n#pragma pack(push, 2)\n# 69 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Folders.h\" 3\nenum {\n  kOnSystemDisk = -32768L,\n  kOnAppropriateDisk = -32767,\n\n\n  kSystemDomain = -32766,\n  kLocalDomain = -32765,\n  kNetworkDomain = -32764,\n  kUserDomain = -32763,\n  kClassicDomain = -32762,\n  kFolderManagerLastDomain = -32760\n};\n\n\n\n\n\nenum {\n  kLastDomainConstant = -32760\n};\n\nenum {\n  kCreateFolder = 1,\n  kDontCreateFolder = 0\n};\n# 177 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Folders.h\" 3\nextern OSErr\nFindFolder(\n  FSVolumeRefNum vRefNum,\n  OSType folderType,\n  Boolean createFolder,\n  FSVolumeRefNum * foundVRefNum,\n  SInt32 * foundDirID) ;\n# 219 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Folders.h\" 3\nextern OSErr\nReleaseFolder(\n  FSVolumeRefNum vRefNum,\n  OSType folderType) __attribute__((deprecated));\n# 291 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Folders.h\" 3\nextern OSErr\nFSFindFolder(\n  FSVolumeRefNum vRefNum,\n  OSType folderType,\n  Boolean createFolder,\n  FSRef * foundRef) ;\n# 305 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Folders.h\" 3\nenum {\n  kDesktopFolderType = 'desk',\n  kTrashFolderType = 'trsh',\n  kWhereToEmptyTrashFolderType = 'empt',\n  kFontsFolderType = 'font',\n  kPreferencesFolderType = 'pref',\n  kSystemPreferencesFolderType = 'sprf',\n  kTemporaryFolderType = 'temp',\n# 329 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Folders.h\" 3\n  kChewableItemsFolderType = 'flnt',\n  kTemporaryItemsInCacheDataFolderType = 'vtmp',\n  kApplicationsFolderType = 'apps',\n  kVolumeRootFolderType = 'root',\n  kDomainTopLevelFolderType = 'dtop',\n  kDomainLibraryFolderType = 'dlib',\n  kUsersFolderType = 'usrs',\n  kCurrentUserFolderType = 'cusr',\n  kSharedUserDataFolderType = 'sdat'\n};\n\n\n\n\n\nenum {\n  kDocumentsFolderType = 'docs',\n  kPictureDocumentsFolderType = 'pdoc',\n  kMovieDocumentsFolderType = 'mdoc',\n  kMusicDocumentsFolderType = 0xB5646F63 ,\n  kInternetSitesFolderType = 'site',\n  kPublicFolderType = 'pubb'\n};\n\nenum {\n  kSharedLibrariesFolderType = 0xC46C6962 ,\n  kVoicesFolderType = 'fvoc',\n  kUtilitiesFolderType = 0x757469C4 ,\n  kThemesFolderType = 'thme',\n  kFavoritesFolderType = 'favs',\n  kInternetSearchSitesFolderType = 'issf',\n  kInstallerLogsFolderType = 'ilgf',\n  kScriptsFolderType = 0x736372C4 ,\n  kFolderActionsFolderType = 'fasf',\n  kSpeakableItemsFolderType = 'spki',\n  kKeychainFolderType = 'kchn'\n};\n\n\n\nenum {\n  kColorSyncFolderType = 'sync',\n  kColorSyncCMMFolderType = 'ccmm',\n  kColorSyncScriptingFolderType = 'cscr',\n  kPrintersFolderType = 'impr',\n  kSpeechFolderType = 'spch',\n  kCarbonLibraryFolderType = 'carb',\n  kDocumentationFolderType = 'info',\n  kISSDownloadsFolderType = 'issd',\n  kUserSpecificTmpFolderType = 'utmp',\n  kCachedDataFolderType = 'cach',\n  kFrameworksFolderType = 'fram',\n  kPrivateFrameworksFolderType = 'pfrm',\n  kClassicDesktopFolderType = 'sdsk',\n  kSystemSoundsFolderType = 'ssnd',\n  kComponentsFolderType = 'cmpd',\n  kQuickTimeComponentsFolderType = 'wcmp',\n  kCoreServicesFolderType = 'csrv',\n  kAudioSupportFolderType = 'adio',\n  kAudioPresetsFolderType = 'apst',\n  kAudioSoundsFolderType = 'asnd',\n  kAudioSoundBanksFolderType = 'bank',\n  kAudioAlertSoundsFolderType = 'alrt',\n  kAudioPlugInsFolderType = 'aplg',\n  kAudioComponentsFolderType = 'acmp',\n  kKernelExtensionsFolderType = 'kext',\n  kDirectoryServicesFolderType = 'dsrv',\n  kDirectoryServicesPlugInsFolderType = 'dplg',\n  kInstallerReceiptsFolderType = 'rcpt',\n  kFileSystemSupportFolderType = 'fsys',\n  kAppleShareSupportFolderType = 'shar',\n  kAppleShareAuthenticationFolderType = 'auth',\n  kMIDIDriversFolderType = 'midi',\n  kKeyboardLayoutsFolderType = 'klay',\n  kIndexFilesFolderType = 'indx',\n  kFindByContentIndexesFolderType = 'fbcx',\n  kManagedItemsFolderType = 'mang',\n  kBootTimeStartupItemsFolderType = 'empz',\n  kAutomatorWorkflowsFolderType = 'flow',\n  kAutosaveInformationFolderType = 'asav',\n  kSpotlightSavedSearchesFolderType = 'spot',\n\n  kSpotlightImportersFolderType = 'simp',\n  kSpotlightMetadataCacheFolderType = 'scch',\n  kInputManagersFolderType = 'inpt',\n  kInputMethodsFolderType = 'inpf',\n  kLibraryAssistantsFolderType = 'astl',\n  kAudioDigidesignFolderType = 'adig',\n  kAudioVSTFolderType = 'avst',\n  kColorPickersFolderType = 'cpkr',\n  kCompositionsFolderType = 'cmps',\n  kFontCollectionsFolderType = 'fncl',\n  kiMovieFolderType = 'imov',\n  kiMoviePlugInsFolderType = 'impi',\n  kiMovieSoundEffectsFolderType = 'imse',\n  kDownloadsFolderType = 'down'\n};\n\nenum {\n  kColorSyncProfilesFolderType = 'prof',\n  kApplicationSupportFolderType = 'asup',\n  kTextEncodingsFolderType = 0xC4746578 ,\n  kPrinterDescriptionFolderType = 'ppdf',\n  kPrinterDriverFolderType = 0xC4707264 ,\n  kScriptingAdditionsFolderType = 0xC4736372\n};\n\nenum {\n  kClassicPreferencesFolderType = 'cprf'\n};\n\nenum {\n  kQuickLookFolderType = 'qlck'\n};\n\nenum {\n\n  kSystemFolderType = 'macs',\n  kSystemDesktopFolderType = 'sdsk',\n  kSystemTrashFolderType = 'strs',\n  kPrintMonitorDocsFolderType = 'prnt',\n  kALMModulesFolderType = 'walk',\n  kALMPreferencesFolderType = 'trip',\n  kALMLocationsFolderType = 'fall',\n  kAppleExtrasFolderType = 0x616578C4 ,\n  kContextualMenuItemsFolderType = 'cmnu',\n  kMacOSReadMesFolderType = 0x6D6F72C4 ,\n  kStartupFolderType = 'strt',\n  kShutdownFolderType = 'shdf',\n  kAppleMenuFolderType = 'amnu',\n  kControlPanelFolderType = 'ctrl',\n  kSystemControlPanelFolderType = 'sctl',\n  kExtensionFolderType = 'extn',\n  kExtensionDisabledFolderType = 'extD',\n  kControlPanelDisabledFolderType = 'ctrD',\n  kSystemExtensionDisabledFolderType = 'macD',\n  kStartupItemsDisabledFolderType = 'strD',\n  kShutdownItemsDisabledFolderType = 'shdD',\n  kAssistantsFolderType = 0x617374C4 ,\n  kStationeryFolderType = 'odst',\n  kOpenDocFolderType = 'odod',\n  kOpenDocShellPlugInsFolderType = 'odsp',\n  kEditorsFolderType = 'oded',\n  kOpenDocEditorsFolderType = 0xC46F6466 ,\n  kOpenDocLibrariesFolderType = 'odlb',\n  kGenEditorsFolderType = 0xC4656469 ,\n  kHelpFolderType = 0xC4686C70 ,\n  kInternetPlugInFolderType = 0xC46E6574 ,\n  kModemScriptsFolderType = 0xC46D6F64 ,\n  kControlStripModulesFolderType = 'sdev',\n  kInternetFolderType = 0x696E74C4 ,\n  kAppearanceFolderType = 'appr',\n  kSoundSetsFolderType = 'snds',\n  kDesktopPicturesFolderType = 0x647470C4 ,\n  kFindSupportFolderType = 'fnds',\n  kRecentApplicationsFolderType = 'rapp',\n  kRecentDocumentsFolderType = 'rdoc',\n  kRecentServersFolderType = 'rsvr',\n  kLauncherItemsFolderType = 'laun',\n  kQuickTimeExtensionsFolderType = 'qtex',\n  kDisplayExtensionsFolderType = 'dspl',\n  kMultiprocessingFolderType = 'mpxf',\n  kPrintingPlugInsFolderType = 'pplg',\n  kAppleshareAutomountServerAliasesFolderType = 0x737276C4 ,\n  kVolumeSettingsFolderType = 'vsfd',\n  kPreMacOS91ApplicationsFolderType = 0x8C707073 ,\n  kPreMacOS91InstallerLogsFolderType = 0x946C6766 ,\n  kPreMacOS91AssistantsFolderType = 0x8C7374C4 ,\n  kPreMacOS91UtilitiesFolderType = 0x9F7469C4 ,\n  kPreMacOS91AppleExtrasFolderType = 0x8C6578C4 ,\n  kPreMacOS91MacOSReadMesFolderType = 0xB56F72C4 ,\n  kPreMacOS91InternetFolderType = 0x946E74C4 ,\n  kPreMacOS91AutomountedServersFolderType = 0xA77276C4 ,\n  kPreMacOS91StationeryFolderType = 0xBF647374 ,\n  kLocalesFolderType = 0xC46C6F63 ,\n  kFindByContentPluginsFolderType = 'fbcp',\n  kFindByContentFolderType = 'fbcf'\n};\n\n\nenum {\n  kMagicTemporaryItemsFolderType = 'mtmp',\n  kTemporaryItemsInUserDomainFolderType = 'temq',\n  kCurrentUserRemoteFolderLocation = 'rusf',\n  kCurrentUserRemoteFolderType = 'rusr'\n};\n\n\n\n\n\nenum {\n  kDeveloperDocsFolderType = 'ddoc',\n  kDeveloperHelpFolderType = 'devh',\n  kDeveloperFolderType = 'devf',\n  kDeveloperApplicationsFolderType = 'dapp'\n};\n\n\nenum {\n  kCreateFolderAtBoot = 0x00000002,\n  kCreateFolderAtBootBit = 1,\n  kFolderCreatedInvisible = 0x00000004,\n  kFolderCreatedInvisibleBit = 2,\n  kFolderCreatedNameLocked = 0x00000008,\n  kFolderCreatedNameLockedBit = 3,\n  kFolderCreatedAdminPrivs = 0x00000010,\n  kFolderCreatedAdminPrivsBit = 4\n};\n\nenum {\n  kFolderInUserFolder = 0x00000020,\n  kFolderInUserFolderBit = 5,\n  kFolderTrackedByAlias = 0x00000040,\n  kFolderTrackedByAliasBit = 6,\n  kFolderInRemoteUserFolderIfAvailable = 0x00000080,\n  kFolderInRemoteUserFolderIfAvailableBit = 7,\n  kFolderNeverMatchedInIdentifyFolder = 0x00000100,\n  kFolderNeverMatchedInIdentifyFolderBit = 8,\n  kFolderMustStayOnSameVolume = 0x00000200,\n  kFolderMustStayOnSameVolumeBit = 9,\n  kFolderManagerFolderInMacOS9FolderIfMacOSXIsInstalledMask = 0x00000400,\n  kFolderManagerFolderInMacOS9FolderIfMacOSXIsInstalledBit = 10,\n  kFolderInLocalOrRemoteUserFolder = kFolderInUserFolder | kFolderInRemoteUserFolderIfAvailable,\n  kFolderManagerNotCreatedOnRemoteVolumesBit = 11,\n  kFolderManagerNotCreatedOnRemoteVolumesMask = (1 << kFolderManagerNotCreatedOnRemoteVolumesBit),\n  kFolderManagerNewlyCreatedFolderIsLocalizedBit = 12,\n  kFolderManagerNewlyCreatedFolderShouldHaveDotLocalizedCreatedWithinMask = (1 << kFolderManagerNewlyCreatedFolderIsLocalizedBit)\n};\n\ntypedef UInt32 FolderDescFlags;\n\nenum {\n  kRelativeFolder = 'relf',\n  kRedirectedRelativeFolder = 'rrel',\n  kSpecialFolder = 'spcf'\n};\n\ntypedef OSType FolderClass;\n\nenum {\n  kBlessedFolder = 'blsf',\n  kRootFolder = 'rotf'\n};\n\nenum {\n  kCurrentUserFolderLocation = 'cusf'\n};\n\n\nenum {\n  kDictionariesFolderType = 'dict',\n  kLogsFolderType = 'logs',\n  kPreferencePanesFolderType = 'ppan'\n};\n\n\nenum {\n  kWidgetsFolderType = 'wdgt',\n  kScreenSaversFolderType = 'scrn'\n};\n\ntypedef OSType FolderType;\ntypedef OSType FolderLocation;\n\nstruct FolderDesc {\n  Size descSize;\n  FolderType foldType;\n  FolderDescFlags flags;\n  FolderClass foldClass;\n  FolderType foldLocation;\n  OSType badgeSignature;\n  OSType badgeType;\n  UInt32 reserved;\n  StrFileName name;\n};\ntypedef struct FolderDesc FolderDesc;\ntypedef FolderDesc * FolderDescPtr;\n\ntypedef UInt32 RoutingFlags;\nstruct FolderRouting {\n  Size descSize;\n  OSType fileType;\n  FolderType routeFromFolder;\n  FolderType routeToFolder;\n  RoutingFlags flags;\n};\ntypedef struct FolderRouting FolderRouting;\ntypedef FolderRouting * FolderRoutingPtr;\n# 689 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Folders.h\" 3\nextern OSErr\nAddFolderDescriptor(\n  FolderType foldType,\n  FolderDescFlags flags,\n  FolderClass foldClass,\n  FolderLocation foldLocation,\n  OSType badgeSignature,\n  OSType badgeType,\n  ConstStrFileNameParam name,\n  Boolean replaceFlag) ;\n# 741 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Folders.h\" 3\nextern OSErr\nGetFolderTypes(\n  UInt32 requestedTypeCount,\n  UInt32 * totalTypeCount,\n  FolderType * theTypes) ;\n# 769 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Folders.h\" 3\nextern OSErr\nRemoveFolderDescriptor(FolderType foldType) ;\n# 815 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Folders.h\" 3\nextern OSStatus\nGetFolderNameUnicode(\n  FSVolumeRefNum vRefNum,\n  OSType foldType,\n  FSVolumeRefNum * foundVRefNum,\n  HFSUniStr255 * name) ;\n# 862 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Folders.h\" 3\nextern OSErr\nInvalidateFolderDescriptorCache(\n  FSVolumeRefNum vRefNum,\n  SInt32 dirID) ;\n# 907 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Folders.h\" 3\nextern OSErr\nIdentifyFolder(\n  FSVolumeRefNum vRefNum,\n  SInt32 dirID,\n  FolderType * foldType) ;\n# 963 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Folders.h\" 3\nextern OSErr\nFSDetermineIfRefIsEnclosedByFolder(\n  FSVolumeRefNum domainOrVRefNum,\n  OSType folderType,\n  const FSRef * inRef,\n  Boolean * outResult) ;\n# 1025 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Folders.h\" 3\nextern OSErr\nDetermineIfPathIsEnclosedByFolder(\n  FSVolumeRefNum domainOrVRefNum,\n  OSType folderType,\n  const UInt8 * utf8Path,\n  Boolean pathIsRealPath,\n  Boolean * outResult) ;\n# 1571 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Folders.h\" 3\ntypedef OSStatus ( * FolderManagerNotificationProcPtr)(OSType message, void *arg, void *userRefCon);\ntypedef FolderManagerNotificationProcPtr FolderManagerNotificationUPP;\n# 1581 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Folders.h\" 3\nextern FolderManagerNotificationUPP\nNewFolderManagerNotificationUPP(FolderManagerNotificationProcPtr userRoutine) ;\n# 1592 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Folders.h\" 3\nextern void\nDisposeFolderManagerNotificationUPP(FolderManagerNotificationUPP userUPP) ;\n# 1603 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Folders.h\" 3\nextern OSStatus\nInvokeFolderManagerNotificationUPP(\n  OSType message,\n  void * arg,\n  void * userRefCon,\n  FolderManagerNotificationUPP userUPP) ;\n# 1724 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Folders.h\" 3\n#pragma pack(pop)\n# 175 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Timer.h\" 1 3\n# 43 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Timer.h\" 3\n#pragma pack(push, 2)\n# 74 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Timer.h\" 3\nextern void\nMicroseconds(UnsignedWide * microTickCount) ;\n# 112 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Timer.h\" 3\nenum {\n\n  kTMTaskActive = (1L << 15)\n};\n\ntypedef struct TMTask TMTask;\ntypedef TMTask * TMTaskPtr;\ntypedef void ( * TimerProcPtr)(TMTaskPtr tmTaskPtr);\ntypedef TimerProcPtr TimerUPP;\nstruct TMTask {\n  QElemPtr qLink;\n  short qType;\n  TimerUPP tmAddr;\n  long tmCount;\n  long tmWakeUp;\n  long tmReserved;\n};\n# 141 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Timer.h\" 3\nextern void\nInsTime(QElemPtr tmTaskPtr) __attribute__((deprecated));\n# 156 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Timer.h\" 3\nextern void\nInsXTime(QElemPtr tmTaskPtr) __attribute__((deprecated));\n# 171 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Timer.h\" 3\nextern void\nPrimeTime(\n  QElemPtr tmTaskPtr,\n  long count) __attribute__((deprecated));\n# 188 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Timer.h\" 3\nextern void\nRmvTime(QElemPtr tmTaskPtr) __attribute__((deprecated));\n# 228 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Timer.h\" 3\nextern OSErr\nInstallTimeTask(QElemPtr tmTaskPtr) __attribute__((deprecated));\n# 278 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Timer.h\" 3\nextern OSErr\nInstallXTimeTask(QElemPtr tmTaskPtr) __attribute__((deprecated));\n# 341 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Timer.h\" 3\nextern OSErr\nPrimeTimeTask(\n  QElemPtr tmTaskPtr,\n  long count) __attribute__((deprecated));\n# 391 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Timer.h\" 3\nextern OSErr\nRemoveTimeTask(QElemPtr tmTaskPtr) __attribute__((deprecated));\n# 404 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Timer.h\" 3\nextern TimerUPP\nNewTimerUPP(TimerProcPtr userRoutine) ;\n# 415 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Timer.h\" 3\nextern void\nDisposeTimerUPP(TimerUPP userUPP) ;\n# 426 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Timer.h\" 3\nextern void\nInvokeTimerUPP(\n  TMTaskPtr tmTaskPtr,\n  TimerUPP userUPP) ;\n# 446 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Timer.h\" 3\n#pragma pack(pop)\n# 179 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MultiprocessingInfo.h\" 1 3\n# 48 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MultiprocessingInfo.h\" 3\n#pragma options align=power\n# 156 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MultiprocessingInfo.h\" 3\nextern OSStatus\nMPGetNextCpuID(\n  MPCoherenceID owningCoherenceID,\n  MPCpuID * cpuID) ;\n# 190 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MultiprocessingInfo.h\" 3\nextern OSStatus\nMPGetNextTaskID(\n  MPProcessID owningProcessID,\n  MPTaskID * taskID) ;\n# 307 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MultiprocessingInfo.h\" 3\nenum {\n\n  kMPQueueInfoVersion = 1L | (kOpaqueQueueID << 16),\n  kMPSemaphoreInfoVersion = 1L | (kOpaqueSemaphoreID << 16),\n  kMPEventInfoVersion = 1L | (kOpaqueEventID << 16),\n  kMPCriticalRegionInfoVersion = 1L | (kOpaqueCriticalRegionID << 16),\n  kMPNotificationInfoVersion = 1L | (kOpaqueNotificationID << 16),\n  kMPAddressSpaceInfoVersion = 1L | (kOpaqueAddressSpaceID << 16)\n};\n\n\nstruct MPQueueInfo {\n  PBVersion version;\n\n  MPProcessID processID;\n  OSType queueName;\n\n  ItemCount nWaiting;\n  MPTaskID waitingTaskID;\n\n  ItemCount nMessages;\n  ItemCount nReserved;\n\n  void * p1;\n  void * p2;\n  void * p3;\n};\ntypedef struct MPQueueInfo MPQueueInfo;\nstruct MPSemaphoreInfo {\n  PBVersion version;\n\n  MPProcessID processID;\n  OSType semaphoreName;\n\n  ItemCount nWaiting;\n  MPTaskID waitingTaskID;\n\n  ItemCount maximum;\n  ItemCount count;\n};\ntypedef struct MPSemaphoreInfo MPSemaphoreInfo;\nstruct MPEventInfo {\n  PBVersion version;\n\n  MPProcessID processID;\n  OSType eventName;\n\n  ItemCount nWaiting;\n  MPTaskID waitingTaskID;\n\n  MPEventFlags events;\n};\ntypedef struct MPEventInfo MPEventInfo;\nstruct MPCriticalRegionInfo {\n  PBVersion version;\n\n  MPProcessID processID;\n  OSType regionName;\n\n  ItemCount nWaiting;\n  MPTaskID waitingTaskID;\n\n  MPTaskID owningTask;\n  ItemCount count;\n};\ntypedef struct MPCriticalRegionInfo MPCriticalRegionInfo;\nstruct MPNotificationInfo {\n  PBVersion version;\n\n  MPProcessID processID;\n  OSType notificationName;\n\n  MPQueueID queueID;\n  void * p1;\n  void * p2;\n  void * p3;\n\n  MPEventID eventID;\n  MPEventFlags events;\n\n  MPSemaphoreID semaphoreID;\n};\ntypedef struct MPNotificationInfo MPNotificationInfo;\nstruct MPAddressSpaceInfo {\n  PBVersion version;\n\n  MPProcessID processID;\n  MPCoherenceID groupID;\n  ItemCount nTasks;\n  UInt32 vsid[16];\n};\ntypedef struct MPAddressSpaceInfo MPAddressSpaceInfo;\n# 468 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MultiprocessingInfo.h\" 3\n#pragma options align=reset\n# 183 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n# 194 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/LowMem.h\" 1 3\n# 52 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/LowMem.h\" 3\n#pragma pack(push, 2)\n# 262 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/LowMem.h\" 3\nextern SInt16 LMGetBootDrive(void) ;\n# 273 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/LowMem.h\" 3\nextern void LMSetBootDrive(SInt16 value) ;\n# 939 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/LowMem.h\" 3\nextern SInt16 LMGetApFontID(void) __attribute__((deprecated));\n# 954 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/LowMem.h\" 3\nextern void LMSetApFontID(SInt16 value) __attribute__((deprecated));\n# 1012 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/LowMem.h\" 3\nextern SInt16 LMGetSysMap(void) ;\n# 1023 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/LowMem.h\" 3\nextern void LMSetSysMap(SInt16 value) ;\n# 1034 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/LowMem.h\" 3\nextern UInt8 LMGetResLoad(void) ;\n# 1045 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/LowMem.h\" 3\nextern void LMSetResLoad(UInt8 value) ;\n# 1056 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/LowMem.h\" 3\nextern SInt16 LMGetResErr(void) ;\n# 1067 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/LowMem.h\" 3\nextern void LMSetResErr(SInt16 value) ;\n# 1078 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/LowMem.h\" 3\nextern UInt8 LMGetTmpResLoad(void) ;\n# 1089 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/LowMem.h\" 3\nextern void LMSetTmpResLoad(UInt8 value) ;\n# 1101 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/LowMem.h\" 3\nextern Ptr LMGetIntlSpec(void) ;\n# 1112 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/LowMem.h\" 3\nextern void LMSetIntlSpec(Ptr value) ;\n# 1146 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/LowMem.h\" 3\nextern void LMSetSysFontFam(SInt16 value) __attribute__((deprecated));\n# 1161 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/LowMem.h\" 3\nextern SInt16 LMGetSysFontSize(void) __attribute__((deprecated));\n# 1176 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/LowMem.h\" 3\nextern void LMSetSysFontSize(SInt16 value) ;\n# 1416 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/LowMem.h\" 3\n#pragma pack(pop)\n# 195 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/AVLTree.h\" 1 3\n# 39 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/AVLTree.h\" 3\n#pragma pack(push, 2)\n# 48 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/AVLTree.h\" 3\ntypedef UInt16 AVLVisitStage;\nenum {\n\n\n\n\n  kAVLPreOrder = 0,\n\n\n\n\n\n  kAVLInOrder = 1,\n\n\n\n\n  kAVLPostOrder = 2\n};\n# 75 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/AVLTree.h\" 3\ntypedef UInt16 AVLOrder;\nenum {\n\n\n\n\n  kLeftToRight = 0,\n\n\n\n\n  kRightToLeft = 1\n};\n# 96 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/AVLTree.h\" 3\ntypedef UInt16 AVLNodeType;\nenum {\n  kAVLIsTree = 0,\n  kAVLIsLeftBranch = 1,\n  kAVLIsRightBranch = 2,\n  kAVLIsLeaf = 3,\n  kAVLNullNode = 4\n};\n\nenum {\n  errItemAlreadyInTree = -960,\n  errNotValidTree = -961,\n  errItemNotFoundInTree = -962,\n  errCanNotInsertWhileWalkProcInProgress = -963,\n  errTreeIsLocked = -964\n};\n# 124 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/AVLTree.h\" 3\nstruct AVLTreeStruct {\n  OSType signature;\n  unsigned long privateStuff[8];\n};\ntypedef struct AVLTreeStruct AVLTreeStruct;\ntypedef AVLTreeStruct * AVLTreePtr;\n# 166 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/AVLTree.h\" 3\ntypedef SInt32 ( * AVLCompareItemsProcPtr)(AVLTreePtr tree, const void *i1, const void *i2, AVLNodeType nd_typ);\n# 192 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/AVLTree.h\" 3\ntypedef ByteCount ( * AVLItemSizeProcPtr)(AVLTreePtr tree, const void *itemPtr);\n# 216 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/AVLTree.h\" 3\ntypedef void ( * AVLDisposeItemProcPtr)(AVLTreePtr tree, const void *dataP);\n# 269 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/AVLTree.h\" 3\ntypedef OSErr ( * AVLWalkProcPtr)(AVLTreePtr tree, const void *dataPtr, AVLVisitStage visitStage, AVLNodeType node, UInt32 level, SInt32 balance, void *refCon);\ntypedef AVLCompareItemsProcPtr AVLCompareItemsUPP;\ntypedef AVLItemSizeProcPtr AVLItemSizeUPP;\ntypedef AVLDisposeItemProcPtr AVLDisposeItemUPP;\ntypedef AVLWalkProcPtr AVLWalkUPP;\n# 282 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/AVLTree.h\" 3\nextern AVLCompareItemsUPP\nNewAVLCompareItemsUPP(AVLCompareItemsProcPtr userRoutine) __attribute__((deprecated));\n# 293 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/AVLTree.h\" 3\nextern AVLItemSizeUPP\nNewAVLItemSizeUPP(AVLItemSizeProcPtr userRoutine) __attribute__((deprecated));\n# 304 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/AVLTree.h\" 3\nextern AVLDisposeItemUPP\nNewAVLDisposeItemUPP(AVLDisposeItemProcPtr userRoutine) __attribute__((deprecated));\n# 315 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/AVLTree.h\" 3\nextern AVLWalkUPP\nNewAVLWalkUPP(AVLWalkProcPtr userRoutine) __attribute__((deprecated));\n# 326 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/AVLTree.h\" 3\nextern void\nDisposeAVLCompareItemsUPP(AVLCompareItemsUPP userUPP) __attribute__((deprecated));\n# 337 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/AVLTree.h\" 3\nextern void\nDisposeAVLItemSizeUPP(AVLItemSizeUPP userUPP) __attribute__((deprecated));\n# 348 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/AVLTree.h\" 3\nextern void\nDisposeAVLDisposeItemUPP(AVLDisposeItemUPP userUPP) __attribute__((deprecated));\n# 359 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/AVLTree.h\" 3\nextern void\nDisposeAVLWalkUPP(AVLWalkUPP userUPP) __attribute__((deprecated));\n# 370 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/AVLTree.h\" 3\nextern SInt32\nInvokeAVLCompareItemsUPP(\n  AVLTreePtr tree,\n  const void * i1,\n  const void * i2,\n  AVLNodeType nd_typ,\n  AVLCompareItemsUPP userUPP) __attribute__((deprecated));\n# 386 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/AVLTree.h\" 3\nextern ByteCount\nInvokeAVLItemSizeUPP(\n  AVLTreePtr tree,\n  const void * itemPtr,\n  AVLItemSizeUPP userUPP) __attribute__((deprecated));\n# 400 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/AVLTree.h\" 3\nextern void\nInvokeAVLDisposeItemUPP(\n  AVLTreePtr tree,\n  const void * dataP,\n  AVLDisposeItemUPP userUPP) __attribute__((deprecated));\n# 414 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/AVLTree.h\" 3\nextern OSErr\nInvokeAVLWalkUPP(\n  AVLTreePtr tree,\n  const void * dataPtr,\n  AVLVisitStage visitStage,\n  AVLNodeType node,\n  UInt32 level,\n  SInt32 balance,\n  void * refCon,\n  AVLWalkUPP userUPP) __attribute__((deprecated));\n# 896 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/AVLTree.h\" 3\n#pragma pack(pop)\n# 199 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PEFBinaryFormat.h\" 1 3\n# 33 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PEFBinaryFormat.h\" 3\n#pragma pack(push, 2)\n# 102 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PEFBinaryFormat.h\" 3\nstruct PEFContainerHeader {\n  OSType tag1;\n  OSType tag2;\n  OSType architecture;\n  UInt32 formatVersion;\n  UInt32 dateTimeStamp;\n  UInt32 oldDefVersion;\n  UInt32 oldImpVersion;\n  UInt32 currentVersion;\n  UInt16 sectionCount;\n  UInt16 instSectionCount;\n  UInt32 reservedA;\n};\ntypedef struct PEFContainerHeader PEFContainerHeader;\nenum {\n  kPEFTag1 = 'Joy!',\n  kPEFTag2 = 'peff',\n  kPEFVersion = 0x00000001\n};\n\n\nenum {\n  kPEFFirstSectionHeaderOffset = sizeof(PEFContainerHeader)\n};\n# 138 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PEFBinaryFormat.h\" 3\nstruct PEFSectionHeader {\n  SInt32 nameOffset;\n  UInt32 defaultAddress;\n  UInt32 totalLength;\n  UInt32 unpackedLength;\n  UInt32 containerLength;\n  UInt32 containerOffset;\n  UInt8 sectionKind;\n  UInt8 shareKind;\n  UInt8 alignment;\n  UInt8 reservedA;\n};\ntypedef struct PEFSectionHeader PEFSectionHeader;\nenum {\n\n\n  kPEFCodeSection = 0,\n  kPEFUnpackedDataSection = 1,\n  kPEFPackedDataSection = 2,\n  kPEFConstantSection = 3,\n  kPEFExecDataSection = 6,\n\n  kPEFLoaderSection = 4,\n  kPEFDebugSection = 5,\n  kPEFExceptionSection = 7,\n  kPEFTracebackSection = 8\n};\n\n\nenum {\n\n  kPEFProcessShare = 1,\n  kPEFGlobalShare = 4,\n  kPEFProtectedShare = 5\n};\n# 197 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PEFBinaryFormat.h\" 3\nenum {\n\n  kPEFPkDataZero = 0,\n  kPEFPkDataBlock = 1,\n  kPEFPkDataRepeat = 2,\n  kPEFPkDataRepeatBlock = 3,\n  kPEFPkDataRepeatZero = 4\n};\n\n\nenum {\n  kPEFPkDataOpcodeShift = 5,\n  kPEFPkDataCount5Mask = 0x1F,\n  kPEFPkDataMaxCount5 = 31,\n  kPEFPkDataVCountShift = 7,\n  kPEFPkDataVCountMask = 0x7F,\n  kPEFPkDataVCountEndMask = 0x80\n};\n# 313 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PEFBinaryFormat.h\" 3\nstruct PEFLoaderInfoHeader {\n  SInt32 mainSection;\n  UInt32 mainOffset;\n  SInt32 initSection;\n  UInt32 initOffset;\n  SInt32 termSection;\n  UInt32 termOffset;\n  UInt32 importedLibraryCount;\n  UInt32 totalImportedSymbolCount;\n  UInt32 relocSectionCount;\n  UInt32 relocInstrOffset;\n  UInt32 loaderStringsOffset;\n  UInt32 exportHashOffset;\n  UInt32 exportHashTablePower;\n  UInt32 exportedSymbolCount;\n};\ntypedef struct PEFLoaderInfoHeader PEFLoaderInfoHeader;\n\n\n\n\n\n\n\nstruct PEFImportedLibrary {\n  UInt32 nameOffset;\n  UInt32 oldImpVersion;\n  UInt32 currentVersion;\n  UInt32 importedSymbolCount;\n  UInt32 firstImportedSymbol;\n  UInt8 options;\n  UInt8 reservedA;\n  UInt16 reservedB;\n};\ntypedef struct PEFImportedLibrary PEFImportedLibrary;\nenum {\n\n  kPEFWeakImportLibMask = 0x40,\n  kPEFInitLibBeforeMask = 0x80\n};\n# 375 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PEFBinaryFormat.h\" 3\nstruct PEFImportedSymbol {\n  UInt32 classAndName;\n};\ntypedef struct PEFImportedSymbol PEFImportedSymbol;\nenum {\n  kPEFImpSymClassShift = 24,\n  kPEFImpSymNameOffsetMask = 0x00FFFFFF,\n  kPEFImpSymMaxNameOffset = 0x00FFFFFF\n};\n\n\n\n\n\n\n\nenum {\n\n  kPEFCodeSymbol = 0x00,\n  kPEFDataSymbol = 0x01,\n  kPEFTVectorSymbol = 0x02,\n  kPEFTOCSymbol = 0x03,\n  kPEFGlueSymbol = 0x04,\n  kPEFUndefinedSymbol = 0x0F,\n  kPEFWeakImportSymMask = 0x80\n};\n# 469 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PEFBinaryFormat.h\" 3\nstruct PEFExportedSymbolHashSlot {\n  UInt32 countAndStart;\n};\ntypedef struct PEFExportedSymbolHashSlot PEFExportedSymbolHashSlot;\nenum {\n  kPEFHashSlotSymCountShift = 18,\n  kPEFHashSlotFirstKeyMask = 0x0003FFFF,\n  kPEFHashSlotMaxSymbolCount = 0x00003FFF,\n  kPEFHashSlotMaxKeyIndex = 0x0003FFFF\n};\n# 497 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PEFBinaryFormat.h\" 3\nstruct PEFSplitHashWord {\n  UInt16 nameLength;\n  UInt16 hashValue;\n};\ntypedef struct PEFSplitHashWord PEFSplitHashWord;\nstruct PEFExportedSymbolKey {\n  union {\n    UInt32 fullHashWord;\n    PEFSplitHashWord splitHashWord;\n  } u;\n};\ntypedef struct PEFExportedSymbolKey PEFExportedSymbolKey;\nenum {\n  kPEFHashLengthShift = 16,\n  kPEFHashValueMask = 0x0000FFFF,\n  kPEFHashMaxLength = 0x0000FFFF\n};\n# 560 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PEFBinaryFormat.h\" 3\nstruct PEFExportedSymbol {\n  UInt32 classAndName;\n  UInt32 symbolValue;\n  SInt16 sectionIndex;\n};\ntypedef struct PEFExportedSymbol PEFExportedSymbol;\n# 578 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PEFBinaryFormat.h\" 3\nenum {\n  kPEFExpSymClassShift = 24,\n  kPEFExpSymNameOffsetMask = 0x00FFFFFF,\n  kPEFExpSymMaxNameOffset = 0x00FFFFFF\n};\n\n\n\n\n\n\n\nenum {\n\n  kPEFAbsoluteExport = -2,\n  kPEFReexportedImport = -3\n};\n# 618 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PEFBinaryFormat.h\" 3\ntypedef UInt16 PEFRelocChunk;\nstruct PEFLoaderRelocationHeader {\n  UInt16 sectionIndex;\n  UInt16 reservedA;\n  UInt32 relocCount;\n  UInt32 firstRelocOffset;\n};\ntypedef struct PEFLoaderRelocationHeader PEFLoaderRelocationHeader;\n# 662 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PEFBinaryFormat.h\" 3\nenum {\n  kPEFRelocBasicOpcodeRange = 128\n};\n# 675 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PEFBinaryFormat.h\" 3\nenum {\n  kPEFRelocBySectDWithSkip = 0x00,\n  kPEFRelocBySectC = 0x20,\n  kPEFRelocBySectD = 0x21,\n  kPEFRelocTVector12 = 0x22,\n  kPEFRelocTVector8 = 0x23,\n  kPEFRelocVTable8 = 0x24,\n  kPEFRelocImportRun = 0x25,\n  kPEFRelocSmByImport = 0x30,\n  kPEFRelocSmSetSectC = 0x31,\n  kPEFRelocSmSetSectD = 0x32,\n  kPEFRelocSmBySection = 0x33,\n  kPEFRelocIncrPosition = 0x40,\n  kPEFRelocSmRepeat = 0x48,\n  kPEFRelocSetPosition = 0x50,\n  kPEFRelocLgByImport = 0x52,\n  kPEFRelocLgRepeat = 0x58,\n  kPEFRelocLgSetOrBySection = 0x5A,\n  kPEFRelocUndefinedOpcode = 0xFF\n};\n# 704 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PEFBinaryFormat.h\" 3\nenum {\n  kPEFRelocLgBySectionSubopcode = 0x00,\n  kPEFRelocLgSetSectCSubopcode = 0x01,\n  kPEFRelocLgSetSectDSubopcode = 0x02\n};\n# 788 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PEFBinaryFormat.h\" 3\nenum {\n  kPEFRelocWithSkipMaxSkipCount = 255,\n  kPEFRelocWithSkipMaxRelocCount = 63\n};\n# 822 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PEFBinaryFormat.h\" 3\nenum {\n  kPEFRelocRunMaxRunLength = 512\n};\n# 861 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PEFBinaryFormat.h\" 3\nenum {\n  kPEFRelocSmIndexMaxIndex = 511\n};\n# 897 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PEFBinaryFormat.h\" 3\nenum {\n  kPEFRelocIncrPositionMaxOffset = 4096\n};\n# 927 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PEFBinaryFormat.h\" 3\nenum {\n  kPEFRelocSmRepeatMaxChunkCount = 16,\n  kPEFRelocSmRepeatMaxRepeatCount = 256\n};\n# 958 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PEFBinaryFormat.h\" 3\nenum {\n  kPEFRelocSetPosMaxOffset = 0x03FFFFFF\n};\n# 992 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PEFBinaryFormat.h\" 3\nenum {\n  kPEFRelocLgByImportMaxIndex = 0x03FFFFFF\n};\n# 1027 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PEFBinaryFormat.h\" 3\nenum {\n  kPEFRelocLgRepeatMaxChunkCount = 16,\n  kPEFRelocLgRepeatMaxRepeatCount = 0x003FFFFF\n};\n# 1065 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PEFBinaryFormat.h\" 3\nenum {\n  kPEFRelocLgSetOrBySectionMaxIndex = 0x003FFFFF\n};\n# 1147 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PEFBinaryFormat.h\" 3\nstruct XLibContainerHeader {\n\n\n\n  OSType tag1;\n  OSType tag2;\n  UInt32 currentFormat;\n  UInt32 containerStringsOffset;\n  UInt32 exportHashOffset;\n  UInt32 exportKeyOffset;\n  UInt32 exportSymbolOffset;\n  UInt32 exportNamesOffset;\n  UInt32 exportHashTablePower;\n  UInt32 exportedSymbolCount;\n\n\n\n  UInt32 fragNameOffset;\n  UInt32 fragNameLength;\n  UInt32 dylibPathOffset;\n  UInt32 dylibPathLength;\n  OSType cpuFamily;\n  OSType cpuModel;\n  UInt32 dateTimeStamp;\n  UInt32 currentVersion;\n  UInt32 oldDefVersion;\n  UInt32 oldImpVersion;\n\n};\ntypedef struct XLibContainerHeader XLibContainerHeader;\nenum {\n  kXLibTag1 = (int)0xF04D6163 ,\n  kVLibTag2 = 'VLib',\n  kBLibTag2 = 'BLib',\n  kXLibVersion = 0x00000001\n};\n\n\n\ntypedef PEFExportedSymbolHashSlot XLibExportedSymbolHashSlot;\ntypedef PEFExportedSymbolKey XLibExportedSymbolKey;\nstruct XLibExportedSymbol {\n  UInt32 classAndName;\n  UInt32 bpOffset;\n};\ntypedef struct XLibExportedSymbol XLibExportedSymbol;\n# 1579 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/PEFBinaryFormat.h\" 3\n#pragma pack(pop)\n# 203 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/HFSVolumes.h\" 1 3\n# 32 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/HFSVolumes.h\" 3\n# 1 \"/usr/include/hfs/hfs_format.h\" 1 3 4\n# 51 \"/usr/include/hfs/hfs_format.h\" 3 4\nenum {\n kHFSSigWord = 0x4244,\n kHFSPlusSigWord = 0x482B,\n kHFSXSigWord = 0x4858,\n\n kHFSPlusVersion = 0x0004,\n kHFSXVersion = 0x0005,\n\n kHFSPlusMountVersion = 0x31302E30,\n kHFSJMountVersion = 0x4846534a,\n kFSKMountVersion = 0x46534b21\n};\n# 120 \"/usr/include/hfs/hfs_format.h\" 3 4\nenum {\n kHardLinkFileType = 0x686C6E6B,\n kHFSPlusCreator = 0x6866732B\n};\n\n\n\n\n\nenum {\n      kSymLinkFileType = 0x736C6E6B,\n      kSymLinkCreator = 0x72686170\n};\n# 146 \"/usr/include/hfs/hfs_format.h\" 3 4\nenum {\n kHFSMaxVolumeNameChars = 27,\n kHFSMaxFileNameChars = 31,\n kHFSPlusMaxFileNameChars = 255\n};\n\n\n\n\n\nstruct HFSExtentKey {\n u_int8_t keyLength;\n u_int8_t forkType;\n u_int32_t fileID;\n u_int16_t startBlock;\n} __attribute__((aligned(2), packed));\ntypedef struct HFSExtentKey HFSExtentKey;\n\n\nstruct HFSPlusExtentKey {\n u_int16_t keyLength;\n u_int8_t forkType;\n u_int8_t pad;\n u_int32_t fileID;\n u_int32_t startBlock;\n} __attribute__((aligned(2), packed));\ntypedef struct HFSPlusExtentKey HFSPlusExtentKey;\n\n\nenum {\n kHFSExtentDensity = 3,\n kHFSPlusExtentDensity = 8\n};\n\n\nstruct HFSExtentDescriptor {\n u_int16_t startBlock;\n u_int16_t blockCount;\n} __attribute__((aligned(2), packed));\ntypedef struct HFSExtentDescriptor HFSExtentDescriptor;\n\n\nstruct HFSPlusExtentDescriptor {\n u_int32_t startBlock;\n u_int32_t blockCount;\n} __attribute__((aligned(2), packed));\ntypedef struct HFSPlusExtentDescriptor HFSPlusExtentDescriptor;\n\n\ntypedef HFSExtentDescriptor HFSExtentRecord[3];\n\n\ntypedef HFSPlusExtentDescriptor HFSPlusExtentRecord[8];\n\n\n\nstruct FndrFileInfo {\n u_int32_t fdType;\n u_int32_t fdCreator;\n u_int16_t fdFlags;\n struct {\n     int16_t v;\n     int16_t h;\n } fdLocation;\n int16_t opaque;\n} __attribute__((aligned(2), packed));\ntypedef struct FndrFileInfo FndrFileInfo;\n\nstruct FndrDirInfo {\n struct {\n     int16_t top;\n     int16_t left;\n     int16_t bottom;\n     int16_t right;\n } frRect;\n unsigned short frFlags;\n struct {\n     u_int16_t v;\n     u_int16_t h;\n } frLocation;\n int16_t opaque;\n} __attribute__((aligned(2), packed));\ntypedef struct FndrDirInfo FndrDirInfo;\n\nstruct FndrOpaqueInfo {\n int8_t opaque[16];\n} __attribute__((aligned(2), packed));\ntypedef struct FndrOpaqueInfo FndrOpaqueInfo;\n\n\n\nstruct HFSPlusForkData {\n u_int64_t logicalSize;\n u_int32_t clumpSize;\n u_int32_t totalBlocks;\n HFSPlusExtentRecord extents;\n} __attribute__((aligned(2), packed));\ntypedef struct HFSPlusForkData HFSPlusForkData;\n\n\n\n\n\n\n\nstruct HFSPlusBSDInfo {\n u_int32_t ownerID;\n u_int32_t groupID;\n u_int8_t adminFlags;\n u_int8_t ownerFlags;\n u_int16_t fileMode;\n union {\n     u_int32_t iNodeNum;\n     u_int32_t linkCount;\n     u_int32_t rawDevice;\n } special;\n} __attribute__((aligned(2), packed));\ntypedef struct HFSPlusBSDInfo HFSPlusBSDInfo;\n# 287 \"/usr/include/hfs/hfs_format.h\" 3 4\nenum {\n kHFSRootParentID = 1,\n kHFSRootFolderID = 2,\n kHFSExtentsFileID = 3,\n kHFSCatalogFileID = 4,\n kHFSBadBlockFileID = 5,\n kHFSAllocationFileID = 6,\n kHFSStartupFileID = 7,\n kHFSAttributesFileID = 8,\n kHFSAttributeDataFileID = 13,\n\n kHFSRepairCatalogFileID = 14,\n kHFSBogusExtentFileID = 15,\n kHFSFirstUserCatalogNodeID = 16\n};\n\n\nstruct HFSCatalogKey {\n u_int8_t keyLength;\n u_int8_t reserved;\n u_int32_t parentID;\n u_int8_t nodeName[kHFSMaxFileNameChars + 1];\n} __attribute__((aligned(2), packed));\ntypedef struct HFSCatalogKey HFSCatalogKey;\n\n\nstruct HFSPlusCatalogKey {\n u_int16_t keyLength;\n u_int32_t parentID;\n HFSUniStr255 nodeName;\n} __attribute__((aligned(2), packed));\ntypedef struct HFSPlusCatalogKey HFSPlusCatalogKey;\n\n\nenum {\n\n kHFSFolderRecord = 0x0100,\n kHFSFileRecord = 0x0200,\n kHFSFolderThreadRecord = 0x0300,\n kHFSFileThreadRecord = 0x0400,\n\n\n kHFSPlusFolderRecord = 1,\n kHFSPlusFileRecord = 2,\n kHFSPlusFolderThreadRecord = 3,\n kHFSPlusFileThreadRecord = 4\n};\n\n\n\nenum {\n kHFSFileLockedBit = 0x0000,\n kHFSFileLockedMask = 0x0001,\n\n kHFSThreadExistsBit = 0x0001,\n kHFSThreadExistsMask = 0x0002,\n\n kHFSHasAttributesBit = 0x0002,\n kHFSHasAttributesMask = 0x0004,\n\n kHFSHasSecurityBit = 0x0003,\n kHFSHasSecurityMask = 0x0008,\n\n kHFSHasFolderCountBit = 0x0004,\n kHFSHasFolderCountMask = 0x0010,\n\n kHFSHasLinkChainBit = 0x0005,\n kHFSHasLinkChainMask = 0x0020,\n\n kHFSHasChildLinkBit = 0x0006,\n kHFSHasChildLinkMask = 0x0040\n};\n\n\n\nstruct HFSCatalogFolder {\n int16_t recordType;\n u_int16_t flags;\n u_int16_t valence;\n u_int32_t folderID;\n u_int32_t createDate;\n u_int32_t modifyDate;\n u_int32_t backupDate;\n FndrDirInfo userInfo;\n FndrOpaqueInfo finderInfo;\n u_int32_t reserved[4];\n} __attribute__((aligned(2), packed));\ntypedef struct HFSCatalogFolder HFSCatalogFolder;\n\n\nstruct HFSPlusCatalogFolder {\n int16_t recordType;\n u_int16_t flags;\n u_int32_t valence;\n u_int32_t folderID;\n u_int32_t createDate;\n u_int32_t contentModDate;\n u_int32_t attributeModDate;\n u_int32_t accessDate;\n u_int32_t backupDate;\n HFSPlusBSDInfo bsdInfo;\n FndrDirInfo userInfo;\n FndrOpaqueInfo finderInfo;\n u_int32_t textEncoding;\n u_int32_t folderCount;\n} __attribute__((aligned(2), packed));\ntypedef struct HFSPlusCatalogFolder HFSPlusCatalogFolder;\n\n\nstruct HFSCatalogFile {\n int16_t recordType;\n u_int8_t flags;\n int8_t fileType;\n FndrFileInfo userInfo;\n u_int32_t fileID;\n u_int16_t dataStartBlock;\n int32_t dataLogicalSize;\n int32_t dataPhysicalSize;\n u_int16_t rsrcStartBlock;\n int32_t rsrcLogicalSize;\n int32_t rsrcPhysicalSize;\n u_int32_t createDate;\n u_int32_t modifyDate;\n u_int32_t backupDate;\n FndrOpaqueInfo finderInfo;\n u_int16_t clumpSize;\n HFSExtentRecord dataExtents;\n HFSExtentRecord rsrcExtents;\n u_int32_t reserved;\n} __attribute__((aligned(2), packed));\ntypedef struct HFSCatalogFile HFSCatalogFile;\n\n\nstruct HFSPlusCatalogFile {\n int16_t recordType;\n u_int16_t flags;\n u_int32_t reserved1;\n u_int32_t fileID;\n u_int32_t createDate;\n u_int32_t contentModDate;\n u_int32_t attributeModDate;\n u_int32_t accessDate;\n u_int32_t backupDate;\n HFSPlusBSDInfo bsdInfo;\n FndrFileInfo userInfo;\n FndrOpaqueInfo finderInfo;\n u_int32_t textEncoding;\n u_int32_t reserved2;\n\n\n HFSPlusForkData dataFork;\n HFSPlusForkData resourceFork;\n} __attribute__((aligned(2), packed));\ntypedef struct HFSPlusCatalogFile HFSPlusCatalogFile;\n\n\nstruct HFSCatalogThread {\n int16_t recordType;\n int32_t reserved[2];\n u_int32_t parentID;\n u_int8_t nodeName[kHFSMaxFileNameChars + 1];\n} __attribute__((aligned(2), packed));\ntypedef struct HFSCatalogThread HFSCatalogThread;\n\n\nstruct HFSPlusCatalogThread {\n int16_t recordType;\n int16_t reserved;\n u_int32_t parentID;\n HFSUniStr255 nodeName;\n} __attribute__((aligned(2), packed));\ntypedef struct HFSPlusCatalogThread HFSPlusCatalogThread;\n\n\n\n\n\n\nenum {\n kHFSPlusAttrInlineData = 0x10,\n kHFSPlusAttrForkData = 0x20,\n kHFSPlusAttrExtents = 0x30\n};\n# 478 \"/usr/include/hfs/hfs_format.h\" 3 4\nstruct HFSPlusAttrForkData {\n u_int32_t recordType;\n u_int32_t reserved;\n HFSPlusForkData theFork;\n} __attribute__((aligned(2), packed));\ntypedef struct HFSPlusAttrForkData HFSPlusAttrForkData;\n\n\n\n\n\n\nstruct HFSPlusAttrExtents {\n u_int32_t recordType;\n u_int32_t reserved;\n HFSPlusExtentRecord extents;\n} __attribute__((aligned(2), packed));\ntypedef struct HFSPlusAttrExtents HFSPlusAttrExtents;\n\n\n\n\n\n\n\nstruct HFSPlusAttrData {\n u_int32_t recordType;\n u_int32_t reserved[2];\n u_int32_t attrSize;\n u_int8_t attrData[2];\n} __attribute__((aligned(2), packed));\ntypedef struct HFSPlusAttrData HFSPlusAttrData;\n\n\n\nstruct HFSPlusAttrInlineData {\n u_int32_t recordType;\n u_int32_t reserved;\n u_int32_t logicalSize;\n u_int8_t userData[2];\n} __attribute__((aligned(2), packed));\ntypedef struct HFSPlusAttrInlineData HFSPlusAttrInlineData;\n\n\n\nunion HFSPlusAttrRecord {\n u_int32_t recordType;\n HFSPlusAttrInlineData inlineData;\n HFSPlusAttrData attrData;\n HFSPlusAttrForkData forkData;\n HFSPlusAttrExtents overflowExtents;\n};\ntypedef union HFSPlusAttrRecord HFSPlusAttrRecord;\n\n\nenum { kHFSMaxAttrNameLen = 127 };\nstruct HFSPlusAttrKey {\n u_int16_t keyLength;\n u_int16_t pad;\n u_int32_t fileID;\n u_int32_t startBlock;\n u_int16_t attrNameLen;\n u_int16_t attrName[kHFSMaxAttrNameLen];\n} __attribute__((aligned(2), packed));\ntypedef struct HFSPlusAttrKey HFSPlusAttrKey;\n# 551 \"/usr/include/hfs/hfs_format.h\" 3 4\nenum {\n kHFSPlusExtentKeyMaximumLength = sizeof(HFSPlusExtentKey) - sizeof(u_int16_t),\n kHFSExtentKeyMaximumLength = sizeof(HFSExtentKey) - sizeof(u_int8_t),\n kHFSPlusCatalogKeyMaximumLength = sizeof(HFSPlusCatalogKey) - sizeof(u_int16_t),\n kHFSPlusCatalogKeyMinimumLength = kHFSPlusCatalogKeyMaximumLength - sizeof(HFSUniStr255) + sizeof(u_int16_t),\n kHFSCatalogKeyMaximumLength = sizeof(HFSCatalogKey) - sizeof(u_int8_t),\n kHFSCatalogKeyMinimumLength = kHFSCatalogKeyMaximumLength - (kHFSMaxFileNameChars + 1) + sizeof(u_int8_t),\n kHFSPlusCatalogMinNodeSize = 4096,\n kHFSPlusExtentMinNodeSize = 512,\n kHFSPlusAttrMinNodeSize = 4096\n};\n\n\nenum {\n\n kHFSVolumeHardwareLockBit = 7,\n kHFSVolumeUnmountedBit = 8,\n kHFSVolumeSparedBlocksBit = 9,\n kHFSVolumeNoCacheRequiredBit = 10,\n kHFSBootVolumeInconsistentBit = 11,\n kHFSCatalogNodeIDsReusedBit = 12,\n kHFSVolumeJournaledBit = 13,\n kHFSVolumeInconsistentBit = 14,\n kHFSVolumeSoftwareLockBit = 15,\n\n\n\n\n kHFSUnusedNodeFixBit = 31,\n\n kHFSVolumeHardwareLockMask = 1 << kHFSVolumeHardwareLockBit,\n kHFSVolumeUnmountedMask = 1 << kHFSVolumeUnmountedBit,\n kHFSVolumeSparedBlocksMask = 1 << kHFSVolumeSparedBlocksBit,\n kHFSVolumeNoCacheRequiredMask = 1 << kHFSVolumeNoCacheRequiredBit,\n kHFSBootVolumeInconsistentMask = 1 << kHFSBootVolumeInconsistentBit,\n kHFSCatalogNodeIDsReusedMask = 1 << kHFSCatalogNodeIDsReusedBit,\n kHFSVolumeJournaledMask = 1 << kHFSVolumeJournaledBit,\n kHFSVolumeInconsistentMask = 1 << kHFSVolumeInconsistentBit,\n kHFSVolumeSoftwareLockMask = 1 << kHFSVolumeSoftwareLockBit,\n kHFSUnusedNodeFixMask = 1 << kHFSUnusedNodeFixBit,\n kHFSMDBAttributesMask = 0x8380\n};\n\nenum {\n kHFSUnusedNodesFixDate = 0xc5ef2480\n};\n\n\n\nstruct HFSMasterDirectoryBlock {\n u_int16_t drSigWord;\n u_int32_t drCrDate;\n u_int32_t drLsMod;\n u_int16_t drAtrb;\n u_int16_t drNmFls;\n u_int16_t drVBMSt;\n u_int16_t drAllocPtr;\n u_int16_t drNmAlBlks;\n u_int32_t drAlBlkSiz;\n u_int32_t drClpSiz;\n u_int16_t drAlBlSt;\n u_int32_t drNxtCNID;\n u_int16_t drFreeBks;\n u_int8_t drVN[kHFSMaxVolumeNameChars + 1];\n u_int32_t drVolBkUp;\n u_int16_t drVSeqNum;\n u_int32_t drWrCnt;\n u_int32_t drXTClpSiz;\n u_int32_t drCTClpSiz;\n u_int16_t drNmRtDirs;\n u_int32_t drFilCnt;\n u_int32_t drDirCnt;\n u_int32_t drFndrInfo[8];\n u_int16_t drEmbedSigWord;\n HFSExtentDescriptor drEmbedExtent;\n u_int32_t drXTFlSize;\n HFSExtentRecord drXTExtRec;\n u_int32_t drCTFlSize;\n HFSExtentRecord drCTExtRec;\n} __attribute__((aligned(2), packed));\ntypedef struct HFSMasterDirectoryBlock HFSMasterDirectoryBlock;\n# 644 \"/usr/include/hfs/hfs_format.h\" 3 4\nstruct HFSPlusVolumeHeader {\n u_int16_t signature;\n u_int16_t version;\n u_int32_t attributes;\n u_int32_t lastMountedVersion;\n u_int32_t journalInfoBlock;\n\n u_int32_t createDate;\n u_int32_t modifyDate;\n u_int32_t backupDate;\n u_int32_t checkedDate;\n\n u_int32_t fileCount;\n u_int32_t folderCount;\n\n u_int32_t blockSize;\n u_int32_t totalBlocks;\n u_int32_t freeBlocks;\n\n u_int32_t nextAllocation;\n u_int32_t rsrcClumpSize;\n u_int32_t dataClumpSize;\n u_int32_t nextCatalogID;\n\n u_int32_t writeCount;\n u_int64_t encodingsBitmap;\n\n u_int8_t finderInfo[32];\n\n HFSPlusForkData allocationFile;\n HFSPlusForkData extentsFile;\n HFSPlusForkData catalogFile;\n HFSPlusForkData attributesFile;\n HFSPlusForkData startupFile;\n} __attribute__((aligned(2), packed));\ntypedef struct HFSPlusVolumeHeader HFSPlusVolumeHeader;\n\n\n\n\nenum BTreeKeyLimits{\n kMaxKeyLength = 520\n};\n\nunion BTreeKey{\n u_int8_t length8;\n u_int16_t length16;\n u_int8_t rawData [kMaxKeyLength+2];\n};\ntypedef union BTreeKey BTreeKey;\n\n\nstruct BTNodeDescriptor {\n u_int32_t fLink;\n u_int32_t bLink;\n int8_t kind;\n u_int8_t height;\n u_int16_t numRecords;\n u_int16_t reserved;\n} __attribute__((aligned(2), packed));\ntypedef struct BTNodeDescriptor BTNodeDescriptor;\n\n\nenum {\n kBTLeafNode = -1,\n kBTIndexNode = 0,\n kBTHeaderNode = 1,\n kBTMapNode = 2\n};\n\n\nstruct BTHeaderRec {\n u_int16_t treeDepth;\n u_int32_t rootNode;\n u_int32_t leafRecords;\n u_int32_t firstLeafNode;\n u_int32_t lastLeafNode;\n u_int16_t nodeSize;\n u_int16_t maxKeyLength;\n u_int32_t totalNodes;\n u_int32_t freeNodes;\n u_int16_t reserved1;\n u_int32_t clumpSize;\n u_int8_t btreeType;\n u_int8_t keyCompareType;\n u_int32_t attributes;\n u_int32_t reserved3[16];\n} __attribute__((aligned(2), packed));\ntypedef struct BTHeaderRec BTHeaderRec;\n\n\nenum {\n kBTBadCloseMask = 0x00000001,\n kBTBigKeysMask = 0x00000002,\n kBTVariableIndexKeysMask = 0x00000004\n};\n\n\n\nenum {\n kHFSCaseFolding = 0xCF,\n kHFSBinaryCompare = 0xBC\n};\n\n# 1 \"/usr/include/uuid/uuid.h\" 1 3 4\n# 42 \"/usr/include/uuid/uuid.h\" 3 4\ntypedef __darwin_uuid_t uuid_t;\n\n\n\n\ntypedef __darwin_uuid_string_t uuid_string_t;\n# 57 \"/usr/include/uuid/uuid.h\" 3 4\nvoid uuid_clear(uuid_t uu);\n\nint uuid_compare(const uuid_t uu1, const uuid_t uu2);\n\nvoid uuid_copy(uuid_t dst, const uuid_t src);\n\nvoid uuid_generate(uuid_t out);\nvoid uuid_generate_random(uuid_t out);\nvoid uuid_generate_time(uuid_t out);\n\nint uuid_is_null(const uuid_t uu);\n\nint uuid_parse(const uuid_string_t in, uuid_t uu);\n\nvoid uuid_unparse(const uuid_t uu, uuid_string_t out);\nvoid uuid_unparse_lower(const uuid_t uu, uuid_string_t out);\nvoid uuid_unparse_upper(const uuid_t uu, uuid_string_t out);\n# 749 \"/usr/include/hfs/hfs_format.h\" 2 3 4\n# 760 \"/usr/include/hfs/hfs_format.h\" 3 4\nstruct JournalInfoBlock {\n u_int32_t flags;\n     u_int32_t device_signature[8];\n u_int64_t offset;\n u_int64_t size;\n uuid_string_t ext_jnl_uuid;\n char machine_serial_num[48];\n char reserved[((32*sizeof(u_int32_t)) - sizeof(uuid_string_t) - 48)];\n} __attribute__((aligned(2), packed));\ntypedef struct JournalInfoBlock JournalInfoBlock;\n\nenum {\n    kJIJournalInFSMask = 0x00000001,\n    kJIJournalOnOtherDeviceMask = 0x00000002,\n    kJIJournalNeedInitMask = 0x00000004\n};\n# 33 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/HFSVolumes.h\" 2 3\n# 41 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/HFSVolumes.h\" 3\ntypedef UInt32 HFSCatalogNodeID;\n# 207 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/AIFF.h\" 1 3\n# 31 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/AIFF.h\" 3\n#pragma pack(push, 2)\n\nenum {\n  AIFFID = 'AIFF',\n  AIFCID = 'AIFC',\n  FormatVersionID = 'FVER',\n  CommonID = 'COMM',\n  FORMID = 'FORM',\n  SoundDataID = 'SSND',\n  MarkerID = 'MARK',\n  InstrumentID = 'INST',\n  MIDIDataID = 'MIDI',\n  AudioRecordingID = 'AESD',\n  ApplicationSpecificID = 'APPL',\n  CommentID = 'COMT',\n  NameID = 'NAME',\n  AuthorID = 'AUTH',\n  CopyrightID = '(c) ',\n  AnnotationID = 'ANNO'\n};\n\nenum {\n  NoLooping = 0,\n  ForwardLooping = 1,\n  ForwardBackwardLooping = 2\n};\n\n\nenum {\n\n  AIFCVersion1 = (uint32_t)0xA2805140\n};\n\n\n\n\n\n\n\nenum {\n\n  NoneType = 'NONE',\n  ACE2Type = 'ACE2',\n  ACE8Type = 'ACE8',\n  MACE3Type = 'MAC3',\n  MACE6Type = 'MAC6'\n};\n# 86 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/AIFF.h\" 3\ntypedef SInt16 MarkerIdType;\nstruct ChunkHeader {\n  UInt32 ckID;\n  SInt32 ckSize;\n};\ntypedef struct ChunkHeader ChunkHeader;\nstruct ContainerChunk {\n  UInt32 ckID;\n  SInt32 ckSize;\n  UInt32 formType;\n};\ntypedef struct ContainerChunk ContainerChunk;\nstruct FormatVersionChunk {\n  UInt32 ckID;\n  SInt32 ckSize;\n  UInt32 timestamp;\n};\ntypedef struct FormatVersionChunk FormatVersionChunk;\ntypedef FormatVersionChunk * FormatVersionChunkPtr;\nstruct CommonChunk {\n  UInt32 ckID;\n  SInt32 ckSize;\n  SInt16 numChannels;\n  UInt32 numSampleFrames;\n  SInt16 sampleSize;\n  extended80 sampleRate;\n};\ntypedef struct CommonChunk CommonChunk;\ntypedef CommonChunk * CommonChunkPtr;\nstruct ExtCommonChunk {\n  UInt32 ckID;\n  SInt32 ckSize;\n  SInt16 numChannels;\n  UInt32 numSampleFrames;\n  SInt16 sampleSize;\n  extended80 sampleRate;\n  UInt32 compressionType;\n  char compressionName[1];\n};\ntypedef struct ExtCommonChunk ExtCommonChunk;\ntypedef ExtCommonChunk * ExtCommonChunkPtr;\nstruct SoundDataChunk {\n  UInt32 ckID;\n  SInt32 ckSize;\n  UInt32 offset;\n  UInt32 blockSize;\n};\ntypedef struct SoundDataChunk SoundDataChunk;\ntypedef SoundDataChunk * SoundDataChunkPtr;\nstruct Marker {\n  MarkerIdType id;\n  UInt32 position;\n  Str255 markerName;\n};\ntypedef struct Marker Marker;\nstruct MarkerChunk {\n  UInt32 ckID;\n  SInt32 ckSize;\n  UInt16 numMarkers;\n  Marker Markers[1];\n};\ntypedef struct MarkerChunk MarkerChunk;\ntypedef MarkerChunk * MarkerChunkPtr;\nstruct AIFFLoop {\n  SInt16 playMode;\n  MarkerIdType beginLoop;\n  MarkerIdType endLoop;\n};\ntypedef struct AIFFLoop AIFFLoop;\nstruct InstrumentChunk {\n  UInt32 ckID;\n  SInt32 ckSize;\n  UInt8 baseFrequency;\n  UInt8 detune;\n  UInt8 lowFrequency;\n  UInt8 highFrequency;\n  UInt8 lowVelocity;\n  UInt8 highVelocity;\n  SInt16 gain;\n  AIFFLoop sustainLoop;\n  AIFFLoop releaseLoop;\n};\ntypedef struct InstrumentChunk InstrumentChunk;\ntypedef InstrumentChunk * InstrumentChunkPtr;\nstruct MIDIDataChunk {\n  UInt32 ckID;\n  SInt32 ckSize;\n  UInt8 MIDIdata[1];\n};\ntypedef struct MIDIDataChunk MIDIDataChunk;\ntypedef MIDIDataChunk * MIDIDataChunkPtr;\nstruct AudioRecordingChunk {\n  UInt32 ckID;\n  SInt32 ckSize;\n  UInt8 AESChannelStatus[24];\n};\ntypedef struct AudioRecordingChunk AudioRecordingChunk;\ntypedef AudioRecordingChunk * AudioRecordingChunkPtr;\nstruct ApplicationSpecificChunk {\n  UInt32 ckID;\n  SInt32 ckSize;\n  OSType applicationSignature;\n  UInt8 data[1];\n};\ntypedef struct ApplicationSpecificChunk ApplicationSpecificChunk;\ntypedef ApplicationSpecificChunk * ApplicationSpecificChunkPtr;\nstruct Comment {\n  UInt32 timeStamp;\n  MarkerIdType marker;\n  UInt16 count;\n  char text[1];\n};\ntypedef struct Comment Comment;\nstruct CommentsChunk {\n  UInt32 ckID;\n  SInt32 ckSize;\n  UInt16 numComments;\n  Comment comments[1];\n};\ntypedef struct CommentsChunk CommentsChunk;\ntypedef CommentsChunk * CommentsChunkPtr;\nstruct TextChunk {\n  UInt32 ckID;\n  SInt32 ckSize;\n  char text[1];\n};\ntypedef struct TextChunk TextChunk;\ntypedef TextChunk * TextChunkPtr;\n\n#pragma pack(pop)\n# 211 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingPlugin.h\" 1 3\n# 39 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingPlugin.h\" 3\n#pragma pack(push, 2)\n# 52 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingPlugin.h\" 3\nenum {\n  kTECAvailableEncodingsResType = 'cven',\n  kTECAvailableSniffersResType = 'cvsf',\n  kTECSubTextEncodingsResType = 'cvsb',\n  kTECConversionInfoResType = 'cvif',\n  kTECMailEncodingsResType = 'cvml',\n  kTECWebEncodingsResType = 'cvwb',\n  kTECInternetNamesResType = 'cvmm'\n};\n\nenum {\n  kTECPluginType = 'ecpg',\n  kTECPluginCreator = 'encv',\n  kTECPluginOneToOne = 'otoo',\n  kTECPluginOneToMany = 'otom',\n  kTECPluginManyToOne = 'mtoo',\n  kTECPluginSniffObj = 'snif'\n};\n\nenum {\n  verUnspecified = 32767,\n  kTECResourceID = 128\n};\n# 84 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingPlugin.h\" 3\nstruct TextEncodingRec {\n  UInt32 base;\n  UInt32 variant;\n  UInt32 format;\n};\ntypedef struct TextEncodingRec TextEncodingRec;\n\nstruct TECEncodingsListRec {\n  UInt32 count;\n  TextEncodingRec encodings;\n};\ntypedef struct TECEncodingsListRec TECEncodingsListRec;\ntypedef TECEncodingsListRec * TECEncodingsListPtr;\ntypedef TECEncodingsListPtr * TECEncodingsListHandle;\n\nstruct TECSubTextEncodingRec {\n  UInt32 offset;\n  TextEncodingRec searchEncoding;\n  UInt32 count;\n  TextEncodingRec subEncodings;\n};\ntypedef struct TECSubTextEncodingRec TECSubTextEncodingRec;\nstruct TECSubTextEncodingsRec {\n  UInt32 count;\n  TECSubTextEncodingRec subTextEncodingRec;\n};\ntypedef struct TECSubTextEncodingsRec TECSubTextEncodingsRec;\ntypedef TECSubTextEncodingsRec * TECSubTextEncodingsPtr;\ntypedef TECSubTextEncodingsPtr * TECSubTextEncodingsHandle;\n\nstruct TECEncodingPairRec {\n  TextEncodingRec source;\n  TextEncodingRec dest;\n};\ntypedef struct TECEncodingPairRec TECEncodingPairRec;\nstruct TECEncodingPairs {\n  TECEncodingPairRec encodingPair;\n  UInt32 flags;\n  UInt32 speed;\n};\ntypedef struct TECEncodingPairs TECEncodingPairs;\nstruct TECEncodingPairsRec {\n  UInt32 count;\n  TECEncodingPairs encodingPairs;\n};\ntypedef struct TECEncodingPairsRec TECEncodingPairsRec;\ntypedef TECEncodingPairsRec * TECEncodingPairsPtr;\ntypedef TECEncodingPairsPtr * TECEncodingPairsHandle;\n\nstruct TECLocaleListToEncodingListRec {\n  UInt32 offset;\n  UInt32 count;\n  RegionCode locales;\n\n};\ntypedef struct TECLocaleListToEncodingListRec TECLocaleListToEncodingListRec;\ntypedef TECLocaleListToEncodingListRec * TECLocaleListToEncodingListPtr;\nstruct TECLocaleToEncodingsListRec {\n  UInt32 count;\n  TECLocaleListToEncodingListRec localeListToEncodingList;\n};\ntypedef struct TECLocaleToEncodingsListRec TECLocaleToEncodingsListRec;\ntypedef TECLocaleToEncodingsListRec * TECLocaleToEncodingsListPtr;\ntypedef TECLocaleToEncodingsListPtr * TECLocaleToEncodingsListHandle;\n\nstruct TECInternetNameRec {\n  UInt32 offset;\n  TextEncodingRec searchEncoding;\n  UInt8 encodingNameLength;\n  UInt8 encodingName[1];\n};\ntypedef struct TECInternetNameRec TECInternetNameRec;\nstruct TECInternetNamesRec {\n  UInt32 count;\n  TECInternetNameRec InternetNames;\n};\ntypedef struct TECInternetNamesRec TECInternetNamesRec;\ntypedef TECInternetNamesRec * TECInternetNamesPtr;\ntypedef TECInternetNamesPtr * TECInternetNamesHandle;\n\nstruct TECBufferContextRec {\n  ConstTextPtr textInputBuffer;\n  ConstTextPtr textInputBufferEnd;\n  TextPtr textOutputBuffer;\n  TextPtr textOutputBufferEnd;\n\n  ConstTextEncodingRunPtr encodingInputBuffer;\n  ConstTextEncodingRunPtr encodingInputBufferEnd;\n  TextEncodingRunPtr encodingOutputBuffer;\n  TextEncodingRunPtr encodingOutputBufferEnd;\n};\ntypedef struct TECBufferContextRec TECBufferContextRec;\nstruct TECPluginStateRec {\n\n  UInt8 state1;\n  UInt8 state2;\n  UInt8 state3;\n  UInt8 state4;\n\n  UInt32 longState1;\n  UInt32 longState2;\n  UInt32 longState3;\n  UInt32 longState4;\n};\ntypedef struct TECPluginStateRec TECPluginStateRec;\nstruct TECConverterContextRec {\n\n\n  Ptr pluginRec;\n  TextEncoding sourceEncoding;\n  TextEncoding destEncoding;\n  UInt32 reserved1;\n  UInt32 reserved2;\n  TECBufferContextRec bufferContext;\n\n  URefCon contextRefCon;\n  ProcPtr conversionProc;\n  ProcPtr flushProc;\n  ProcPtr clearContextInfoProc;\n  UInt32 options1;\n  UInt32 options2;\n  TECPluginStateRec pluginState;\n};\ntypedef struct TECConverterContextRec TECConverterContextRec;\nstruct TECSnifferContextRec {\n\n  Ptr pluginRec;\n  TextEncoding encoding;\n  ItemCount maxErrors;\n  ItemCount maxFeatures;\n  ConstTextPtr textInputBuffer;\n  ConstTextPtr textInputBufferEnd;\n  ItemCount numFeatures;\n  ItemCount numErrors;\n\n  URefCon contextRefCon;\n  ProcPtr sniffProc;\n  ProcPtr clearContextInfoProc;\n  TECPluginStateRec pluginState;\n};\ntypedef struct TECSnifferContextRec TECSnifferContextRec;\n\n\n\n\n\n\ntypedef OSStatus ( * TECPluginNewEncodingConverterPtr)(TECObjectRef *newEncodingConverter, TECConverterContextRec *plugContext, TextEncoding inputEncoding, TextEncoding outputEncoding);\ntypedef OSStatus ( * TECPluginClearContextInfoPtr)(TECObjectRef encodingConverter, TECConverterContextRec *plugContext);\ntypedef OSStatus ( * TECPluginConvertTextEncodingPtr)(TECObjectRef encodingConverter, TECConverterContextRec *plugContext);\ntypedef OSStatus ( * TECPluginFlushConversionPtr)(TECObjectRef encodingConverter, TECConverterContextRec *plugContext);\ntypedef OSStatus ( * TECPluginDisposeEncodingConverterPtr)(TECObjectRef newEncodingConverter, TECConverterContextRec *plugContext);\ntypedef OSStatus ( * TECPluginNewEncodingSnifferPtr)(TECSnifferObjectRef *encodingSniffer, TECSnifferContextRec *snifContext, TextEncoding inputEncoding);\ntypedef OSStatus ( * TECPluginClearSnifferContextInfoPtr)(TECSnifferObjectRef encodingSniffer, TECSnifferContextRec *snifContext);\ntypedef OSStatus ( * TECPluginSniffTextEncodingPtr)(TECSnifferObjectRef encodingSniffer, TECSnifferContextRec *snifContext);\ntypedef OSStatus ( * TECPluginDisposeEncodingSnifferPtr)(TECSnifferObjectRef encodingSniffer, TECSnifferContextRec *snifContext);\ntypedef OSStatus ( * TECPluginGetCountAvailableTextEncodingsPtr)(TextEncoding *availableEncodings, ItemCount maxAvailableEncodings, ItemCount *actualAvailableEncodings);\ntypedef OSStatus ( * TECPluginGetCountAvailableTextEncodingPairsPtr)(TECConversionInfo *availableEncodings, ItemCount maxAvailableEncodings, ItemCount *actualAvailableEncodings);\ntypedef OSStatus ( * TECPluginGetCountDestinationTextEncodingsPtr)(TextEncoding inputEncoding, TextEncoding *destinationEncodings, ItemCount maxDestinationEncodings, ItemCount *actualDestinationEncodings);\ntypedef OSStatus ( * TECPluginGetCountSubTextEncodingsPtr)(TextEncoding inputEncoding, TextEncoding subEncodings[], ItemCount maxSubEncodings, ItemCount *actualSubEncodings);\ntypedef OSStatus ( * TECPluginGetCountAvailableSniffersPtr)(TextEncoding *availableEncodings, ItemCount maxAvailableEncodings, ItemCount *actualAvailableEncodings);\ntypedef OSStatus ( * TECPluginGetTextEncodingInternetNamePtr)(TextEncoding textEncoding, Str255 encodingName);\ntypedef OSStatus ( * TECPluginGetTextEncodingFromInternetNamePtr)(TextEncoding *textEncoding, ConstStr255Param encodingName);\ntypedef OSStatus ( * TECPluginGetCountWebEncodingsPtr)(TextEncoding *availableEncodings, ItemCount maxAvailableEncodings, ItemCount *actualAvailableEncodings);\ntypedef OSStatus ( * TECPluginGetCountMailEncodingsPtr)(TextEncoding *availableEncodings, ItemCount maxAvailableEncodings, ItemCount *actualAvailableEncodings);\n\n\n\n\n\n\nenum {\n  kTECPluginDispatchTableVersion1 = 0x00010000,\n  kTECPluginDispatchTableVersion1_1 = 0x00010001,\n  kTECPluginDispatchTableVersion1_2 = 0x00010002,\n  kTECPluginDispatchTableCurrentVersion = kTECPluginDispatchTableVersion1_2\n};\n\nstruct TECPluginDispatchTable {\n\n  TECPluginVersion version;\n  TECPluginVersion compatibleVersion;\n  TECPluginSignature PluginID;\n\n  TECPluginNewEncodingConverterPtr PluginNewEncodingConverter;\n  TECPluginClearContextInfoPtr PluginClearContextInfo;\n  TECPluginConvertTextEncodingPtr PluginConvertTextEncoding;\n  TECPluginFlushConversionPtr PluginFlushConversion;\n  TECPluginDisposeEncodingConverterPtr PluginDisposeEncodingConverter;\n\n  TECPluginNewEncodingSnifferPtr PluginNewEncodingSniffer;\n  TECPluginClearSnifferContextInfoPtr PluginClearSnifferContextInfo;\n  TECPluginSniffTextEncodingPtr PluginSniffTextEncoding;\n  TECPluginDisposeEncodingSnifferPtr PluginDisposeEncodingSniffer;\n\n  TECPluginGetCountAvailableTextEncodingsPtr PluginGetCountAvailableTextEncodings;\n  TECPluginGetCountAvailableTextEncodingPairsPtr PluginGetCountAvailableTextEncodingPairs;\n  TECPluginGetCountDestinationTextEncodingsPtr PluginGetCountDestinationTextEncodings;\n  TECPluginGetCountSubTextEncodingsPtr PluginGetCountSubTextEncodings;\n  TECPluginGetCountAvailableSniffersPtr PluginGetCountAvailableSniffers;\n  TECPluginGetCountWebEncodingsPtr PluginGetCountWebTextEncodings;\n  TECPluginGetCountMailEncodingsPtr PluginGetCountMailTextEncodings;\n\n  TECPluginGetTextEncodingInternetNamePtr PluginGetTextEncodingInternetName;\n  TECPluginGetTextEncodingFromInternetNamePtr PluginGetTextEncodingFromInternetName;\n\n};\ntypedef struct TECPluginDispatchTable TECPluginDispatchTable;\n# 301 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/TextEncodingPlugin.h\" 3\ntypedef TECPluginDispatchTable * ( * TECPluginGetPluginDispatchTablePtr)(void);\n\n\n\n\n\n\n#pragma pack(pop)\n# 215 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 1 3\n# 28 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 3\n# 1 \"/usr/include/Block.h\" 1 3 4\n# 29 \"/usr/include/Block.h\" 3 4\nextern void *_Block_copy(const void *aBlock);\n\n\nextern void _Block_release(const void *aBlock);\n# 29 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 2 3\n# 43 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 3\n#pragma pack(push, 2)\n# 196 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 3\ntypedef UInt32 FSEventStreamCreateFlags;\n# 205 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 3\nenum {\n\n\n\n\n  kFSEventStreamCreateFlagNone = 0x00000000,\n\n\n\n\n\n\n\n  kFSEventStreamCreateFlagUseCFTypes = 0x00000001,\n# 237 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 3\n  kFSEventStreamCreateFlagNoDefer = 0x00000002,\n# 254 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 3\n  kFSEventStreamCreateFlagWatchRoot = 0x00000004,\n  kFSEventStreamCreateFlagIgnoreSelf = 0x00000008\n};\n# 265 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 3\ntypedef UInt32 FSEventStreamEventFlags;\n\n\n\n\n\n\n\nenum {\n\n\n\n\n\n  kFSEventStreamEventFlagNone = 0x00000000,\n# 294 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 3\n  kFSEventStreamEventFlagMustScanSubDirs = 0x00000001,\n# 309 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 3\n  kFSEventStreamEventFlagUserDropped = 0x00000002,\n  kFSEventStreamEventFlagKernelDropped = 0x00000004,\n\n\n\n\n\n\n\n  kFSEventStreamEventFlagEventIdsWrapped = 0x00000008,\n# 331 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 3\n  kFSEventStreamEventFlagHistoryDone = 0x00000010,\n# 344 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 3\n  kFSEventStreamEventFlagRootChanged = 0x00000020,\n# 359 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 3\n  kFSEventStreamEventFlagMount = 0x00000040,\n# 372 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 3\n  kFSEventStreamEventFlagUnmount = 0x00000080\n};\n# 385 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 3\ntypedef UInt64 FSEventStreamEventId;\n\nenum {\n    kFSEventStreamEventIdSinceNow = 0xFFFFFFFFFFFFFFFFULL\n};\n# 398 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 3\ntypedef struct __FSEventStream* FSEventStreamRef;\n\n\n\n\n\n\n\ntypedef const struct __FSEventStream* ConstFSEventStreamRef;\n# 415 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 3\nstruct FSEventStreamContext {\n\n\n\n\n  CFIndex version;\n# 431 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 3\n  void * info;\n\n\n\n\n  CFAllocatorRetainCallBack retain;\n\n\n\n\n\n  CFAllocatorReleaseCallBack release;\n\n\n\n\n\n\n  CFAllocatorCopyDescriptionCallBack copyDescription;\n};\ntypedef struct FSEventStreamContext FSEventStreamContext;\n# 515 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 3\ntypedef void ( * FSEventStreamCallback)(ConstFSEventStreamRef streamRef, void *clientCallBackInfo, size_t numEvents, void *eventPaths, const FSEventStreamEventFlags eventFlags[], const FSEventStreamEventId eventIds[]);\n# 580 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 3\nextern FSEventStreamRef\nFSEventStreamCreate(\n  CFAllocatorRef allocator,\n  FSEventStreamCallback callback,\n  FSEventStreamContext * context,\n  CFArrayRef pathsToWatch,\n  FSEventStreamEventId sinceWhen,\n  CFTimeInterval latency,\n  FSEventStreamCreateFlags flags) ;\n# 663 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 3\nextern FSEventStreamRef\nFSEventStreamCreateRelativeToDevice(\n  CFAllocatorRef allocator,\n  FSEventStreamCallback callback,\n  FSEventStreamContext * context,\n  dev_t deviceToWatch,\n  CFArrayRef pathsToWatchRelativeToDevice,\n  FSEventStreamEventId sinceWhen,\n  CFTimeInterval latency,\n  FSEventStreamCreateFlags flags) ;\n# 700 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 3\nextern FSEventStreamEventId\nFSEventStreamGetLatestEventId(ConstFSEventStreamRef streamRef) ;\n# 724 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 3\nextern dev_t\nFSEventStreamGetDeviceBeingWatched(ConstFSEventStreamRef streamRef) ;\n# 749 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 3\nextern CFArrayRef\nFSEventStreamCopyPathsBeingWatched(ConstFSEventStreamRef streamRef) ;\n# 769 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 3\nextern FSEventStreamEventId\nFSEventsGetCurrentEventId(void) ;\n# 805 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 3\nextern CFUUIDRef\nFSEventsCopyUUIDForDevice(dev_t dev) ;\n# 842 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 3\nextern FSEventStreamEventId\nFSEventsGetLastEventIdForDeviceBeforeTime(\n  dev_t dev,\n  CFAbsoluteTime time) ;\n# 871 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 3\nextern Boolean\nFSEventsPurgeEventsForDeviceUpToEventId(\n  dev_t dev,\n  FSEventStreamEventId eventId) ;\n# 897 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 3\nextern void\nFSEventStreamRetain(FSEventStreamRef streamRef) ;\n# 919 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 3\nextern void\nFSEventStreamRelease(FSEventStreamRef streamRef) ;\n# 955 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 3\nextern void\nFSEventStreamScheduleWithRunLoop(\n  FSEventStreamRef streamRef,\n  CFRunLoopRef runLoop,\n  CFStringRef runLoopMode) ;\n# 985 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 3\nextern void\nFSEventStreamUnscheduleFromRunLoop(\n  FSEventStreamRef streamRef,\n  CFRunLoopRef runLoop,\n  CFStringRef runLoopMode) ;\n# 1026 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 3\nextern void\nFSEventStreamSetDispatchQueue(\n  FSEventStreamRef streamRef,\n  dispatch_queue_t q) ;\n# 1054 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 3\nextern void\nFSEventStreamInvalidate(FSEventStreamRef streamRef) ;\n# 1087 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 3\nextern Boolean\nFSEventStreamStart(FSEventStreamRef streamRef) ;\n# 1117 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 3\nextern FSEventStreamEventId\nFSEventStreamFlushAsync(FSEventStreamRef streamRef) ;\n# 1144 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 3\nextern void\nFSEventStreamFlushSync(FSEventStreamRef streamRef) ;\n# 1169 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 3\nextern void\nFSEventStreamStop(FSEventStreamRef streamRef) ;\n# 1193 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 3\nextern void\nFSEventStreamShow(ConstFSEventStreamRef streamRef) ;\n# 1213 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/FSEvents.h\" 3\nextern CFStringRef\nFSEventStreamCopyDescription(ConstFSEventStreamRef streamRef) ;\n\n\n\n\n\n\n\n#pragma pack(pop)\n# 219 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h\" 2 3\n# 21 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AE.h\" 2 3\n\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 1 3\n# 34 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\n#pragma pack(push, 2)\n\n\nenum {\n  typeBoolean = 'bool',\n  typeChar = 'TEXT'\n};\n\n\n\n\n\nenum {\n  typeStyledUnicodeText = 'sutx',\n  typeEncodedString = 'encs',\n  typeUnicodeText = 'utxt',\n  typeCString = 'cstr',\n  typePString = 'pstr'\n};\n\n\n\n\nenum {\n  typeUTF16ExternalRepresentation = 'ut16',\n  typeUTF8Text = 'utf8'\n};\n\n\nenum {\n  typeSInt16 = 'shor',\n  typeUInt16 = 'ushr',\n  typeSInt32 = 'long',\n  typeUInt32 = 'magn',\n  typeSInt64 = 'comp',\n  typeUInt64 = 'ucom',\n  typeIEEE32BitFloatingPoint = 'sing',\n  typeIEEE64BitFloatingPoint = 'doub',\n  type128BitFloatingPoint = 'ldbl',\n  typeDecimalStruct = 'decm'\n};\n# 118 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nenum {\n  typeAEList = 'list',\n  typeAERecord = 'reco',\n  typeAppleEvent = 'aevt',\n  typeEventRecord = 'evrc',\n  typeTrue = 'true',\n  typeFalse = 'fals',\n  typeAlias = 'alis',\n  typeEnumerated = 'enum',\n  typeType = 'type',\n  typeAppParameters = 'appa',\n  typeProperty = 'prop',\n  typeFSRef = 'fsrf',\n  typeFileURL = 'furl',\n  typeBookmarkData = 'bmrk',\n  typeKeyword = 'keyw',\n  typeSectionH = 'sect',\n  typeWildCard = '****',\n  typeApplSignature = 'sign',\n  typeQDRectangle = 'qdrt',\n  typeFixed = 'fixd',\n  typeProcessSerialNumber = 'psn ',\n  typeApplicationURL = 'aprl',\n  typeNull = 'null'\n};\n# 156 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nenum {\n  typeCFAttributedStringRef = 'cfas',\n  typeCFMutableAttributedStringRef = 'cfaa',\n  typeCFStringRef = 'cfst',\n  typeCFMutableStringRef = 'cfms',\n  typeCFArrayRef = 'cfar',\n  typeCFMutableArrayRef = 'cfma',\n  typeCFDictionaryRef = 'cfdc',\n  typeCFMutableDictionaryRef = 'cfmd',\n  typeCFNumberRef = 'cfnb',\n  typeCFBooleanRef = 'cftf',\n  typeCFTypeRef = 'cfty'\n};\n\n\nenum {\n  typeKernelProcessID = 'kpid',\n  typeMachPort = 'port'\n};\n\n\nenum {\n  typeApplicationBundleID = 'bund'\n};\n\n\nenum {\n  keyTransactionIDAttr = 'tran',\n  keyReturnIDAttr = 'rtid',\n  keyEventClassAttr = 'evcl',\n  keyEventIDAttr = 'evid',\n  keyAddressAttr = 'addr',\n  keyOptionalKeywordAttr = 'optk',\n  keyTimeoutAttr = 'timo',\n  keyInteractLevelAttr = 'inte',\n  keyEventSourceAttr = 'esrc',\n  keyMissedKeywordAttr = 'miss',\n  keyOriginalAddressAttr = 'from',\n  keyAcceptTimeoutAttr = 'actm',\n  keyReplyRequestedAttr = 'repq',\n  keySenderEUIDAttr = 'seid',\n  keySenderEGIDAttr = 'sgid',\n  keySenderUIDAttr = 'uids',\n  keySenderGIDAttr = 'gids',\n  keySenderPIDAttr = 'spid'\n};\n\n\nenum {\n  kAEDebugPOSTHeader = (1 << 0),\n  kAEDebugReplyHeader = (1 << 1),\n  kAEDebugXMLRequest = (1 << 2),\n  kAEDebugXMLResponse = (1 << 3),\n  kAEDebugXMLDebugAll = (int)0xFFFFFFFF\n};\n\n\n\n\n\nenum {\n  kSOAP1999Schema = 'ss99',\n  kSOAP2001Schema = 'ss01'\n};\n\nenum {\n\n  keyUserNameAttr = 'unam',\n  keyUserPasswordAttr = 'pass',\n  keyDisableAuthenticationAttr = 'auth',\n\n\n  keyXMLDebuggingAttr = 'xdbg',\n\n  kAERPCClass = 'rpc ',\n  kAEXMLRPCScheme = 'RPC2',\n  kAESOAPScheme = 'SOAP',\n  kAESharedScriptHandler = 'wscp',\n\n  keyRPCMethodName = 'meth',\n  keyRPCMethodParam = 'parm',\n  keyRPCMethodParamOrder = '/ord',\n\n  keyAEPOSTHeaderData = 'phed',\n  keyAEReplyHeaderData = 'rhed',\n  keyAEXMLRequestData = 'xreq',\n  keyAEXMLReplyData = 'xrep',\n\n  keyAdditionalHTTPHeaders = 'ahed',\n  keySOAPAction = 'sact',\n  keySOAPMethodNameSpace = 'mspc',\n  keySOAPMethodNameSpaceURI = 'mspu',\n  keySOAPSchemaVersion = 'ssch'\n};\n# 266 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nenum {\n  keySOAPStructureMetaData = '/smd',\n  keySOAPSMDNamespace = 'ssns',\n  keySOAPSMDNamespaceURI = 'ssnu',\n  keySOAPSMDType = 'sstp'\n};\n\n\n\n\n\n\nenum {\n\n  kAEUseHTTPProxyAttr = 'xupr',\n\n  kAEHTTPProxyPortAttr = 'xhtp',\n  kAEHTTPProxyHostAttr = 'xhth'\n};\n\n\n\n\n\n\nenum {\n  kAESocks4Protocol = 4,\n  kAESocks5Protocol = 5\n};\n\nenum {\n  kAEUseSocksAttr = 'xscs',\n\n  kAESocksProxyAttr = 'xsok',\n\n  kAESocksHostAttr = 'xshs',\n  kAESocksPortAttr = 'xshp',\n  kAESocksUserAttr = 'xshu',\n\n  kAESocksPasswordAttr = 'xshw'\n};\n\n\n\nenum {\n  kAEDescListFactorNone = 0,\n  kAEDescListFactorType = 4,\n  kAEDescListFactorTypeAndSize = 8\n};\n\n\nenum {\n\n  kAutoGenerateReturnID = -1,\n\n  kAnyTransactionID = 0\n};\n\n\ntypedef ResType DescType;\ntypedef FourCharCode AEKeyword;\n\ntypedef struct OpaqueAEDataStorageType* AEDataStorageType;\n\n\n\n\ntypedef AEDataStorageType * AEDataStorage;\nstruct AEDesc {\n  DescType descriptorType;\n  AEDataStorage dataHandle;\n};\ntypedef struct AEDesc AEDesc;\ntypedef AEDesc * AEDescPtr;\nstruct AEKeyDesc {\n  AEKeyword descKey;\n  AEDesc descContent;\n};\ntypedef struct AEKeyDesc AEKeyDesc;\n\n\ntypedef AEDesc AEDescList;\n\ntypedef AEDescList AERecord;\n\ntypedef AEDesc AEAddressDesc;\n\ntypedef AERecord AppleEvent;\ntypedef AppleEvent * AppleEventPtr;\ntypedef SInt16 AEReturnID;\ntypedef SInt32 AETransactionID;\ntypedef FourCharCode AEEventClass;\ntypedef FourCharCode AEEventID;\ntypedef SInt8 AEArrayType;\nenum {\n  kAEDataArray = 0,\n  kAEPackedArray = 1,\n  kAEDescArray = 3,\n  kAEKeyDescArray = 4\n};\n\n\nenum {\n  kAEHandleArray = 2\n};\n\nunion AEArrayData {\n  SInt16 kAEDataArray[1];\n  char kAEPackedArray[1];\n  Handle kAEHandleArray[1];\n  AEDesc kAEDescArray[1];\n  AEKeyDesc kAEKeyDescArray[1];\n};\ntypedef union AEArrayData AEArrayData;\ntypedef AEArrayData * AEArrayDataPointer;\n\n\n\n\ntypedef SInt16 AESendPriority;\nenum {\n  kAENormalPriority = 0x00000000,\n  kAEHighPriority = 0x00000001\n};\n\n\ntypedef SInt32 AESendMode;\nenum {\n  kAENoReply = 0x00000001,\n  kAEQueueReply = 0x00000002,\n  kAEWaitReply = 0x00000003,\n  kAEDontReconnect = 0x00000080,\n  kAEWantReceipt = 0x00000200,\n  kAENeverInteract = 0x00000010,\n  kAECanInteract = 0x00000020,\n  kAEAlwaysInteract = 0x00000030,\n  kAECanSwitchLayer = 0x00000040,\n  kAEDontRecord = 0x00001000,\n  kAEDontExecute = 0x00002000,\n  kAEProcessNonReplyEvents = 0x00008000\n};\n\n\n\nenum {\n  kAEDefaultTimeout = -1,\n  kNoTimeOut = -2\n};\n\n\n\n\n\ntypedef OSErr ( * AECoerceDescProcPtr)(const AEDesc *fromDesc, DescType toType, SRefCon handlerRefcon, AEDesc *toDesc);\ntypedef OSErr ( * AECoercePtrProcPtr)(DescType typeCode, const void *dataPtr, Size dataSize, DescType toType, SRefCon handlerRefcon, AEDesc *result);\ntypedef AECoerceDescProcPtr AECoerceDescUPP;\ntypedef AECoercePtrProcPtr AECoercePtrUPP;\n# 431 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern AECoerceDescUPP\nNewAECoerceDescUPP(AECoerceDescProcPtr userRoutine) ;\n# 442 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern AECoercePtrUPP\nNewAECoercePtrUPP(AECoercePtrProcPtr userRoutine) ;\n# 453 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern void\nDisposeAECoerceDescUPP(AECoerceDescUPP userUPP) ;\n# 464 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern void\nDisposeAECoercePtrUPP(AECoercePtrUPP userUPP) ;\n# 475 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern OSErr\nInvokeAECoerceDescUPP(\n  const AEDesc * fromDesc,\n  DescType toType,\n  SRefCon handlerRefcon,\n  AEDesc * toDesc,\n  AECoerceDescUPP userUPP) ;\n# 491 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern OSErr\nInvokeAECoercePtrUPP(\n  DescType typeCode,\n  const void * dataPtr,\n  Size dataSize,\n  DescType toType,\n  SRefCon handlerRefcon,\n  AEDesc * result,\n  AECoercePtrUPP userUPP) ;\n# 523 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\ntypedef AECoerceDescUPP AECoercionHandlerUPP;\n# 589 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern OSErr\nAEInstallCoercionHandler(\n  DescType fromType,\n  DescType toType,\n  AECoercionHandlerUPP handler,\n  SRefCon handlerRefcon,\n  Boolean fromTypeIsDesc,\n  Boolean isSysHandler) ;\n# 635 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern OSErr\nAERemoveCoercionHandler(\n  DescType fromType,\n  DescType toType,\n  AECoercionHandlerUPP handler,\n  Boolean isSysHandler) ;\n# 690 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern OSErr\nAEGetCoercionHandler(\n  DescType fromType,\n  DescType toType,\n  AECoercionHandlerUPP * handler,\n  SRefCon * handlerRefcon,\n  Boolean * fromTypeIsDesc,\n  Boolean isSysHandler) ;\n# 740 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern OSErr\nAECoercePtr(\n  DescType typeCode,\n  const void * dataPtr,\n  Size dataSize,\n  DescType toType,\n  AEDesc * result) ;\n# 780 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern OSErr\nAECoerceDesc(\n  const AEDesc * theAEDesc,\n  DescType toType,\n  AEDesc * result) ;\n# 816 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern void\nAEInitializeDesc(AEDesc * desc) ;\n# 871 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern OSErr\nAECreateDesc(\n  DescType typeCode,\n  const void * dataPtr,\n  Size dataSize,\n  AEDesc * result) ;\n# 913 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern OSErr\nAEDisposeDesc(AEDesc * theAEDesc) ;\n# 957 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern OSErr\nAEDuplicateDesc(\n  const AEDesc * theAEDesc,\n  AEDesc * result) ;\n\n\n\ntypedef void ( * AEDisposeExternalProcPtr)(const void *dataPtr, Size dataLength, SRefCon refcon);\ntypedef AEDisposeExternalProcPtr AEDisposeExternalUPP;\n# 1038 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern OSStatus\nAECreateDescFromExternalPtr(\n  OSType descriptorType,\n  const void * dataPtr,\n  Size dataLength,\n  AEDisposeExternalUPP disposeCallback,\n  SRefCon disposeRefcon,\n  AEDesc * theDesc) ;\n# 1094 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern OSErr\nAECreateList(\n  const void * factoringPtr,\n  Size factoredSize,\n  Boolean isRecord,\n  AEDescList * resultList) ;\n# 1126 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern OSErr\nAECountItems(\n  const AEDescList * theAEDescList,\n  long * theCount) ;\n# 1171 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern OSErr\nAEPutPtr(\n  AEDescList * theAEDescList,\n  long index,\n  DescType typeCode,\n  const void * dataPtr,\n  Size dataSize) ;\n# 1213 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern OSErr\nAEPutDesc(\n  AEDescList * theAEDescList,\n  long index,\n  const AEDesc * theAEDesc) ;\n# 1290 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern OSErr\nAEGetNthPtr(\n  const AEDescList * theAEDescList,\n  long index,\n  DescType desiredType,\n  AEKeyword * theAEKeyword,\n  DescType * typeCode,\n  void * dataPtr,\n  Size maximumSize,\n  Size * actualSize) ;\n# 1356 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern OSErr\nAEGetNthDesc(\n  const AEDescList * theAEDescList,\n  long index,\n  DescType desiredType,\n  AEKeyword * theAEKeyword,\n  AEDesc * result) ;\n# 1401 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern OSErr\nAESizeOfNthItem(\n  const AEDescList * theAEDescList,\n  long index,\n  DescType * typeCode,\n  Size * dataSize) ;\n# 1469 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern OSErr\nAEGetArray(\n  const AEDescList * theAEDescList,\n  AEArrayType arrayType,\n  AEArrayDataPointer arrayPtr,\n  Size maximumSize,\n  DescType * itemType,\n  Size * itemSize,\n  long * itemCount) ;\n# 1532 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern OSErr\nAEPutArray(\n  AEDescList * theAEDescList,\n  AEArrayType arrayType,\n  const AEArrayData * arrayPtr,\n  DescType itemType,\n  Size itemSize,\n  long itemCount) ;\n# 1570 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern OSErr\nAEDeleteItem(\n  AEDescList * theAEDescList,\n  long index) ;\n# 1597 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern Boolean\nAECheckIsRecord(const AEDesc * theDesc) ;\n# 1697 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern OSErr\nAECreateAppleEvent(\n  AEEventClass theAEEventClass,\n  AEEventID theAEEventID,\n  const AEAddressDesc * target,\n  AEReturnID returnID,\n  AETransactionID transactionID,\n  AppleEvent * result) ;\n# 1749 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern OSErr\nAEPutParamPtr(\n  AppleEvent * theAppleEvent,\n  AEKeyword theAEKeyword,\n  DescType typeCode,\n  const void * dataPtr,\n  Size dataSize) ;\n# 1787 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern OSErr\nAEPutParamDesc(\n  AppleEvent * theAppleEvent,\n  AEKeyword theAEKeyword,\n  const AEDesc * theAEDesc) ;\n# 1882 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern OSErr\nAEGetParamPtr(\n  const AppleEvent * theAppleEvent,\n  AEKeyword theAEKeyword,\n  DescType desiredType,\n  DescType * actualType,\n  void * dataPtr,\n  Size maximumSize,\n  Size * actualSize) ;\n# 1947 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern OSErr\nAEGetParamDesc(\n  const AppleEvent * theAppleEvent,\n  AEKeyword theAEKeyword,\n  DescType desiredType,\n  AEDesc * result) ;\n# 1987 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern OSErr\nAESizeOfParam(\n  const AppleEvent * theAppleEvent,\n  AEKeyword theAEKeyword,\n  DescType * typeCode,\n  Size * dataSize) ;\n# 2019 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern OSErr\nAEDeleteParam(\n  AppleEvent * theAppleEvent,\n  AEKeyword theAEKeyword) ;\n# 2109 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern OSErr\nAEGetAttributePtr(\n  const AppleEvent * theAppleEvent,\n  AEKeyword theAEKeyword,\n  DescType desiredType,\n  DescType * typeCode,\n  void * dataPtr,\n  Size maximumSize,\n  Size * actualSize) ;\n# 2170 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern OSErr\nAEGetAttributeDesc(\n  const AppleEvent * theAppleEvent,\n  AEKeyword theAEKeyword,\n  DescType desiredType,\n  AEDesc * result) ;\n# 2209 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern OSErr\nAESizeOfAttribute(\n  const AppleEvent * theAppleEvent,\n  AEKeyword theAEKeyword,\n  DescType * typeCode,\n  Size * dataSize) ;\n# 2253 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern OSErr\nAEPutAttributePtr(\n  AppleEvent * theAppleEvent,\n  AEKeyword theAEKeyword,\n  DescType typeCode,\n  const void * dataPtr,\n  Size dataSize) ;\n# 2302 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern OSErr\nAEPutAttributeDesc(\n  AppleEvent * theAppleEvent,\n  AEKeyword theAEKeyword,\n  const AEDesc * theAEDesc) ;\n# 2342 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern Size\nAESizeOfFlattenedDesc(const AEDesc * theAEDesc) ;\n# 2389 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern OSStatus\nAEFlattenDesc(\n  const AEDesc * theAEDesc,\n  Ptr buffer,\n  Size bufferSize,\n  Size * actualSize) ;\n# 2426 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern OSStatus\nAEUnflattenDesc(\n  const void * buffer,\n  AEDesc * result) ;\n# 2471 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern OSErr\nAEGetDescData(\n  const AEDesc * theAEDesc,\n  void * dataPtr,\n  Size maximumSize) ;\n# 2498 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern Size\nAEGetDescDataSize(const AEDesc * theAEDesc) ;\n# 2532 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern OSErr\nAEReplaceDescData(\n  DescType typeCode,\n  const void * dataPtr,\n  Size dataSize,\n  AEDesc * theAEDesc) ;\n# 2577 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern OSStatus\nAEGetDescDataRange(\n  const AEDesc * dataDesc,\n  void * buffer,\n  Size offset,\n  Size length) ;\n\n\n\n\n\ntypedef OSErr ( * AEEventHandlerProcPtr)(const AppleEvent *theAppleEvent, AppleEvent *reply, SRefCon handlerRefcon);\ntypedef AEEventHandlerProcPtr AEEventHandlerUPP;\n# 2598 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern AEDisposeExternalUPP\nNewAEDisposeExternalUPP(AEDisposeExternalProcPtr userRoutine) ;\n# 2609 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern AEEventHandlerUPP\nNewAEEventHandlerUPP(AEEventHandlerProcPtr userRoutine) ;\n# 2620 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern void\nDisposeAEDisposeExternalUPP(AEDisposeExternalUPP userUPP) ;\n# 2631 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern void\nDisposeAEEventHandlerUPP(AEEventHandlerUPP userUPP) ;\n# 2642 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern void\nInvokeAEDisposeExternalUPP(\n  const void * dataPtr,\n  Size dataLength,\n  SRefCon refcon,\n  AEDisposeExternalUPP userUPP) ;\n# 2657 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\nextern OSErr\nInvokeAEEventHandlerUPP(\n  const AppleEvent * theAppleEvent,\n  AppleEvent * reply,\n  SRefCon handlerRefcon,\n  AEEventHandlerUPP userUPP) ;\n# 2684 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEDataModel.h\" 3\n#pragma pack(pop)\n# 26 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AE.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AppleEvents.h\" 1 3\n# 47 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AppleEvents.h\" 3\n#pragma pack(push, 2)\n\nenum {\n\n  keyDirectObject = '----',\n  keyErrorNumber = 'errn',\n  keyErrorString = 'errs',\n  keyProcessSerialNumber = 'psn ',\n  keyPreDispatch = 'phac',\n  keySelectProc = 'selh',\n\n  keyAERecorderCount = 'recr',\n\n  keyAEVersion = 'vers'\n};\n\n\nenum {\n  kCoreEventClass = 'aevt'\n};\n\n\nenum {\n  kAEOpenApplication = 'oapp',\n  kAEOpenDocuments = 'odoc',\n  kAEPrintDocuments = 'pdoc',\n  kAEOpenContents = 'ocon',\n  kAEQuitApplication = 'quit',\n  kAEAnswer = 'ansr',\n  kAEApplicationDied = 'obit',\n  kAEShowPreferences = 'pref'\n};\n\n\nenum {\n  kAEStartRecording = 'reca',\n  kAEStopRecording = 'recc',\n  kAENotifyStartRecording = 'rec1',\n  kAENotifyStopRecording = 'rec0',\n  kAENotifyRecording = 'recr'\n};\n# 96 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AppleEvents.h\" 3\ntypedef SInt8 AEEventSource;\nenum {\n  kAEUnknownSource = 0,\n  kAEDirectCall = 1,\n  kAESameProcess = 2,\n  kAELocalProcess = 3,\n  kAERemoteProcess = 4\n};\n# 119 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AppleEvents.h\" 3\nextern OSErr\nAEInstallEventHandler(\n  AEEventClass theAEEventClass,\n  AEEventID theAEEventID,\n  AEEventHandlerUPP handler,\n  SRefCon handlerRefcon,\n  Boolean isSysHandler) ;\n# 139 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AppleEvents.h\" 3\nextern OSErr\nAERemoveEventHandler(\n  AEEventClass theAEEventClass,\n  AEEventID theAEEventID,\n  AEEventHandlerUPP handler,\n  Boolean isSysHandler) ;\n# 158 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AppleEvents.h\" 3\nextern OSErr\nAEGetEventHandler(\n  AEEventClass theAEEventClass,\n  AEEventID theAEEventID,\n  AEEventHandlerUPP * handler,\n  SRefCon * handlerRefcon,\n  Boolean isSysHandler) ;\n# 184 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AppleEvents.h\" 3\nextern OSErr\nAEInstallSpecialHandler(\n  AEKeyword functionClass,\n  AEEventHandlerUPP handler,\n  Boolean isSysHandler) ;\n# 202 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AppleEvents.h\" 3\nextern OSErr\nAERemoveSpecialHandler(\n  AEKeyword functionClass,\n  AEEventHandlerUPP handler,\n  Boolean isSysHandler) ;\n# 220 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AppleEvents.h\" 3\nextern OSErr\nAEGetSpecialHandler(\n  AEKeyword functionClass,\n  AEEventHandlerUPP * handler,\n  Boolean isSysHandler) ;\n# 245 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AppleEvents.h\" 3\nextern OSErr\nAEManagerInfo(\n  AEKeyword keyWord,\n  long * result) ;\n# 285 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AppleEvents.h\" 3\nextern const CFStringRef kAERemoteProcessURLKey ;\n# 298 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AppleEvents.h\" 3\nextern const CFStringRef kAERemoteProcessNameKey ;\n# 311 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AppleEvents.h\" 3\nextern const CFStringRef kAERemoteProcessUserIDKey ;\n# 324 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AppleEvents.h\" 3\nextern const CFStringRef kAERemoteProcessProcessIDKey ;\n# 334 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AppleEvents.h\" 3\nstruct AERemoteProcessResolverContext {\n\n\n\n\n  CFIndex version;\n\n\n\n\n  void * info;\n\n\n\n\n  CFAllocatorRetainCallBack retain;\n\n\n\n\n  CFAllocatorReleaseCallBack release;\n\n\n\n\n  CFAllocatorCopyDescriptionCallBack copyDescription;\n};\ntypedef struct AERemoteProcessResolverContext AERemoteProcessResolverContext;\n# 373 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AppleEvents.h\" 3\ntypedef struct AERemoteProcessResolver* AERemoteProcessResolverRef;\n# 406 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AppleEvents.h\" 3\nextern AERemoteProcessResolverRef\nAECreateRemoteProcessResolver(\n  CFAllocatorRef allocator,\n  CFURLRef url) ;\n# 433 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AppleEvents.h\" 3\nextern void\nAEDisposeRemoteProcessResolver(AERemoteProcessResolverRef ref) ;\n# 474 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AppleEvents.h\" 3\nextern CFArrayRef\nAERemoteProcessResolverGetProcesses(\n  AERemoteProcessResolverRef ref,\n  CFStreamError * outError) ;\n# 489 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AppleEvents.h\" 3\ntypedef void ( * AERemoteProcessResolverCallback)(AERemoteProcessResolverRef ref, void *info);\n# 529 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AppleEvents.h\" 3\nextern void\nAERemoteProcessResolverScheduleWithRunLoop(\n  AERemoteProcessResolverRef ref,\n  CFRunLoopRef runLoop,\n  CFStringRef runLoopMode,\n  AERemoteProcessResolverCallback callback,\n  const AERemoteProcessResolverContext * ctx) ;\n\n\n\n\n\n\n#pragma pack(pop)\n# 30 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AE.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEPackObject.h\" 1 3\n# 47 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEPackObject.h\" 3\nextern OSErr\nCreateOffsetDescriptor(\n  long theOffset,\n  AEDesc * theDescriptor) ;\n# 64 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEPackObject.h\" 3\nextern OSErr\nCreateCompDescriptor(\n  DescType comparisonOperator,\n  AEDesc * operand1,\n  AEDesc * operand2,\n  Boolean disposeInputs,\n  AEDesc * theDescriptor) ;\n# 84 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEPackObject.h\" 3\nextern OSErr\nCreateLogicalDescriptor(\n  AEDescList * theLogicalTerms,\n  DescType theLogicOperator,\n  Boolean disposeInputs,\n  AEDesc * theDescriptor) ;\n# 104 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEPackObject.h\" 3\nextern OSErr\nCreateObjSpecifier(\n  DescType desiredClass,\n  AEDesc * theContainer,\n  DescType keyForm,\n  AEDesc * keyData,\n  Boolean disposeInputs,\n  AEDesc * objSpecifier) ;\n# 125 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEPackObject.h\" 3\nextern OSErr\nCreateRangeDescriptor(\n  AEDesc * rangeStart,\n  AEDesc * rangeStop,\n  Boolean disposeInputs,\n  AEDesc * theDescriptor) ;\n# 34 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AE.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEObjects.h\" 1 3\n# 39 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEObjects.h\" 3\n#pragma pack(push, 2)\n\nenum {\n\n  kAEAND = 'AND ',\n  kAEOR = 'OR  ',\n  kAENOT = 'NOT ',\n\n  kAEFirst = 'firs',\n  kAELast = 'last',\n  kAEMiddle = 'midd',\n  kAEAny = 'any ',\n  kAEAll = 'all ',\n\n  kAENext = 'next',\n  kAEPrevious = 'prev',\n\n  keyAECompOperator = 'relo',\n  keyAELogicalTerms = 'term',\n  keyAELogicalOperator = 'logc',\n  keyAEObject1 = 'obj1',\n  keyAEObject2 = 'obj2',\n\n  keyAEDesiredClass = 'want',\n  keyAEContainer = 'from',\n  keyAEKeyForm = 'form',\n  keyAEKeyData = 'seld'\n};\n\nenum {\n\n  keyAERangeStart = 'star',\n  keyAERangeStop = 'stop',\n\n  keyDisposeTokenProc = 'xtok',\n  keyAECompareProc = 'cmpr',\n  keyAECountProc = 'cont',\n  keyAEMarkTokenProc = 'mkid',\n  keyAEMarkProc = 'mark',\n  keyAEAdjustMarksProc = 'adjm',\n  keyAEGetErrDescProc = 'indc'\n};\n\n\nenum {\n\n  formAbsolutePosition = 'indx',\n  formRelativePosition = 'rele',\n  formTest = 'test',\n  formRange = 'rang',\n  formPropertyID = 'prop',\n  formName = 'name',\n  formUniqueID = 'ID  ',\n\n  typeObjectSpecifier = 'obj ',\n  typeObjectBeingExamined = 'exmn',\n  typeCurrentContainer = 'ccnt',\n  typeToken = 'toke',\n  typeRelativeDescriptor = 'rel ',\n  typeAbsoluteOrdinal = 'abso',\n  typeIndexDescriptor = 'inde',\n  typeRangeDescriptor = 'rang',\n  typeLogicalDescriptor = 'logi',\n  typeCompDescriptor = 'cmpd',\n  typeOSLTokenList = 'ostl'\n};\n\n\nenum {\n  kAEIDoMinimum = 0x0000,\n  kAEIDoWhose = 0x0001,\n  kAEIDoMarking = 0x0004,\n  kAEPassSubDescs = 0x0008,\n  kAEResolveNestedLists = 0x0010,\n  kAEHandleSimpleRanges = 0x0020,\n  kAEUseRelativeIterators = 0x0040\n};\n\n\nenum {\n  typeWhoseDescriptor = 'whos',\n  formWhose = 'whos',\n  typeWhoseRange = 'wrng',\n  keyAEWhoseRangeStart = 'wstr',\n  keyAEWhoseRangeStop = 'wstp',\n  keyAEIndex = 'kidx',\n  keyAETest = 'ktst'\n};\n\n\n\n\n\n\n\nstruct ccntTokenRecord {\n  DescType tokenClass;\n  AEDesc token;\n};\ntypedef struct ccntTokenRecord ccntTokenRecord;\ntypedef ccntTokenRecord * ccntTokenRecPtr;\ntypedef ccntTokenRecPtr * ccntTokenRecHandle;\n\n\n\n\n\n\ntypedef OSErr ( * OSLAccessorProcPtr)(DescType desiredClass, const AEDesc *container, DescType containerClass, DescType form, const AEDesc *selectionData, AEDesc *value, SRefCon accessorRefcon);\ntypedef OSErr ( * OSLCompareProcPtr)(DescType oper, const AEDesc *obj1, const AEDesc *obj2, Boolean *result);\ntypedef OSErr ( * OSLCountProcPtr)(DescType desiredType, DescType containerClass, const AEDesc *container, long *result);\ntypedef OSErr ( * OSLDisposeTokenProcPtr)(AEDesc * unneededToken);\ntypedef OSErr ( * OSLGetMarkTokenProcPtr)(const AEDesc *dContainerToken, DescType containerClass, AEDesc *result);\ntypedef OSErr ( * OSLGetErrDescProcPtr)(AEDesc ** appDescPtr);\ntypedef OSErr ( * OSLMarkProcPtr)(const AEDesc *dToken, const AEDesc *markToken, long index);\ntypedef OSErr ( * OSLAdjustMarksProcPtr)(long newStart, long newStop, const AEDesc *markToken);\ntypedef OSLAccessorProcPtr OSLAccessorUPP;\ntypedef OSLCompareProcPtr OSLCompareUPP;\ntypedef OSLCountProcPtr OSLCountUPP;\ntypedef OSLDisposeTokenProcPtr OSLDisposeTokenUPP;\ntypedef OSLGetMarkTokenProcPtr OSLGetMarkTokenUPP;\ntypedef OSLGetErrDescProcPtr OSLGetErrDescUPP;\ntypedef OSLMarkProcPtr OSLMarkUPP;\ntypedef OSLAdjustMarksProcPtr OSLAdjustMarksUPP;\n# 171 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEObjects.h\" 3\nextern OSLAccessorUPP\nNewOSLAccessorUPP(OSLAccessorProcPtr userRoutine) ;\n# 182 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEObjects.h\" 3\nextern OSLCompareUPP\nNewOSLCompareUPP(OSLCompareProcPtr userRoutine) ;\n# 193 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEObjects.h\" 3\nextern OSLCountUPP\nNewOSLCountUPP(OSLCountProcPtr userRoutine) ;\n# 204 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEObjects.h\" 3\nextern OSLDisposeTokenUPP\nNewOSLDisposeTokenUPP(OSLDisposeTokenProcPtr userRoutine) ;\n# 215 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEObjects.h\" 3\nextern OSLGetMarkTokenUPP\nNewOSLGetMarkTokenUPP(OSLGetMarkTokenProcPtr userRoutine) ;\n# 226 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEObjects.h\" 3\nextern OSLGetErrDescUPP\nNewOSLGetErrDescUPP(OSLGetErrDescProcPtr userRoutine) ;\n# 237 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEObjects.h\" 3\nextern OSLMarkUPP\nNewOSLMarkUPP(OSLMarkProcPtr userRoutine) ;\n# 248 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEObjects.h\" 3\nextern OSLAdjustMarksUPP\nNewOSLAdjustMarksUPP(OSLAdjustMarksProcPtr userRoutine) ;\n# 259 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEObjects.h\" 3\nextern void\nDisposeOSLAccessorUPP(OSLAccessorUPP userUPP) ;\n# 270 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEObjects.h\" 3\nextern void\nDisposeOSLCompareUPP(OSLCompareUPP userUPP) ;\n# 281 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEObjects.h\" 3\nextern void\nDisposeOSLCountUPP(OSLCountUPP userUPP) ;\n# 292 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEObjects.h\" 3\nextern void\nDisposeOSLDisposeTokenUPP(OSLDisposeTokenUPP userUPP) ;\n# 303 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEObjects.h\" 3\nextern void\nDisposeOSLGetMarkTokenUPP(OSLGetMarkTokenUPP userUPP) ;\n# 314 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEObjects.h\" 3\nextern void\nDisposeOSLGetErrDescUPP(OSLGetErrDescUPP userUPP) ;\n# 325 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEObjects.h\" 3\nextern void\nDisposeOSLMarkUPP(OSLMarkUPP userUPP) ;\n# 336 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEObjects.h\" 3\nextern void\nDisposeOSLAdjustMarksUPP(OSLAdjustMarksUPP userUPP) ;\n# 347 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEObjects.h\" 3\nextern OSErr\nInvokeOSLAccessorUPP(\n  DescType desiredClass,\n  const AEDesc * container,\n  DescType containerClass,\n  DescType form,\n  const AEDesc * selectionData,\n  AEDesc * value,\n  SRefCon accessorRefcon,\n  OSLAccessorUPP userUPP) ;\n# 366 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEObjects.h\" 3\nextern OSErr\nInvokeOSLCompareUPP(\n  DescType oper,\n  const AEDesc * obj1,\n  const AEDesc * obj2,\n  Boolean * result,\n  OSLCompareUPP userUPP) ;\n# 382 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEObjects.h\" 3\nextern OSErr\nInvokeOSLCountUPP(\n  DescType desiredType,\n  DescType containerClass,\n  const AEDesc * container,\n  long * result,\n  OSLCountUPP userUPP) ;\n# 398 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEObjects.h\" 3\nextern OSErr\nInvokeOSLDisposeTokenUPP(\n  AEDesc * unneededToken,\n  OSLDisposeTokenUPP userUPP) ;\n# 411 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEObjects.h\" 3\nextern OSErr\nInvokeOSLGetMarkTokenUPP(\n  const AEDesc * dContainerToken,\n  DescType containerClass,\n  AEDesc * result,\n  OSLGetMarkTokenUPP userUPP) ;\n# 426 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEObjects.h\" 3\nextern OSErr\nInvokeOSLGetErrDescUPP(\n  AEDesc ** appDescPtr,\n  OSLGetErrDescUPP userUPP) ;\n# 439 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEObjects.h\" 3\nextern OSErr\nInvokeOSLMarkUPP(\n  const AEDesc * dToken,\n  const AEDesc * markToken,\n  long index,\n  OSLMarkUPP userUPP) ;\n# 454 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEObjects.h\" 3\nextern OSErr\nInvokeOSLAdjustMarksUPP(\n  long newStart,\n  long newStop,\n  const AEDesc * markToken,\n  OSLAdjustMarksUPP userUPP) ;\n# 529 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEObjects.h\" 3\nextern OSErr\nAEObjectInit(void) ;\n# 546 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEObjects.h\" 3\nextern OSErr\nAESetObjectCallbacks(\n  OSLCompareUPP myCompareProc,\n  OSLCountUPP myCountProc,\n  OSLDisposeTokenUPP myDisposeTokenProc,\n  OSLGetMarkTokenUPP myGetMarkTokenProc,\n  OSLMarkUPP myMarkProc,\n  OSLAdjustMarksUPP myAdjustMarksProc,\n  OSLGetErrDescUPP myGetErrDescProcPtr) ;\n# 568 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEObjects.h\" 3\nextern OSErr\nAEResolve(\n  const AEDesc * objectSpecifier,\n  short callbackFlags,\n  AEDesc * theToken) ;\n# 586 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEObjects.h\" 3\nextern OSErr\nAEInstallObjectAccessor(\n  DescType desiredClass,\n  DescType containerType,\n  OSLAccessorUPP theAccessor,\n  SRefCon accessorRefcon,\n  Boolean isSysHandler) ;\n# 606 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEObjects.h\" 3\nextern OSErr\nAERemoveObjectAccessor(\n  DescType desiredClass,\n  DescType containerType,\n  OSLAccessorUPP theAccessor,\n  Boolean isSysHandler) ;\n# 625 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEObjects.h\" 3\nextern OSErr\nAEGetObjectAccessor(\n  DescType desiredClass,\n  DescType containerType,\n  OSLAccessorUPP * accessor,\n  SRefCon * accessorRefcon,\n  Boolean isSysHandler) ;\n# 645 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEObjects.h\" 3\nextern OSErr\nAEDisposeToken(AEDesc * theToken) ;\n# 660 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEObjects.h\" 3\nextern OSErr\nAECallObjectAccessor(\n  DescType desiredClass,\n  const AEDesc * containerToken,\n  DescType containerClass,\n  DescType keyForm,\n  const AEDesc * keyData,\n  AEDesc * token) ;\n\n\n\n#pragma pack(pop)\n# 38 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AE.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AERegistry.h\" 1 3\n# 35 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AERegistry.h\" 3\n#pragma pack(push, 2)\n\nenum {\n  cAEList = 'list',\n  cApplication = 'capp',\n  cArc = 'carc',\n  cBoolean = 'bool',\n  cCell = 'ccel',\n  cChar = 'cha ',\n  cColorTable = 'clrt',\n  cColumn = 'ccol',\n  cDocument = 'docu',\n  cDrawingArea = 'cdrw',\n  cEnumeration = 'enum',\n  cFile = 'file',\n  cFixed = 'fixd',\n  cFixedPoint = 'fpnt',\n  cFixedRectangle = 'frct',\n  cGraphicLine = 'glin',\n  cGraphicObject = 'cgob',\n  cGraphicShape = 'cgsh',\n  cGraphicText = 'cgtx',\n  cGroupedGraphic = 'cpic'\n};\n\nenum {\n  cInsertionLoc = 'insl',\n  cInsertionPoint = 'cins',\n  cIntlText = 'itxt',\n  cIntlWritingCode = 'intl',\n  cItem = 'citm',\n  cLine = 'clin',\n  cLongDateTime = 'ldt ',\n  cLongFixed = 'lfxd',\n  cLongFixedPoint = 'lfpt',\n  cLongFixedRectangle = 'lfrc',\n  cLongInteger = 'long',\n  cLongPoint = 'lpnt',\n  cLongRectangle = 'lrct',\n  cMachineLoc = 'mLoc',\n  cMenu = 'cmnu',\n  cMenuItem = 'cmen',\n  cObject = 'cobj',\n  cObjectSpecifier = 'obj ',\n  cOpenableObject = 'coob',\n  cOval = 'covl'\n};\n\nenum {\n  cParagraph = 'cpar',\n  cPICT = 'PICT',\n  cPixel = 'cpxl',\n  cPixelMap = 'cpix',\n  cPolygon = 'cpgn',\n  cProperty = 'prop',\n  cQDPoint = 'QDpt',\n  cQDRectangle = 'qdrt',\n  cRectangle = 'crec',\n  cRGBColor = 'cRGB',\n  cRotation = 'trot',\n  cRoundedRectangle = 'crrc',\n  cRow = 'crow',\n  cSelection = 'csel',\n  cShortInteger = 'shor',\n  cTable = 'ctbl',\n  cText = 'ctxt',\n  cTextFlow = 'cflo',\n  cTextStyles = 'tsty',\n  cType = 'type'\n};\n\nenum {\n  cVersion = 'vers',\n  cWindow = 'cwin',\n  cWord = 'cwor',\n  enumArrows = 'arro',\n  enumJustification = 'just',\n  enumKeyForm = 'kfrm',\n  enumPosition = 'posi',\n  enumProtection = 'prtn',\n  enumQuality = 'qual',\n  enumSaveOptions = 'savo',\n  enumStyle = 'styl',\n  enumTransferMode = 'tran',\n  kAEAbout = 'abou',\n  kAEAfter = 'afte',\n  kAEAliasSelection = 'sali',\n  kAEAllCaps = 'alcp',\n  kAEArrowAtEnd = 'aren',\n  kAEArrowAtStart = 'arst',\n  kAEArrowBothEnds = 'arbo'\n};\n\nenum {\n  kAEAsk = 'ask ',\n  kAEBefore = 'befo',\n  kAEBeginning = 'bgng',\n  kAEBeginsWith = 'bgwt',\n  kAEBeginTransaction = 'begi',\n  kAEBold = 'bold',\n  kAECaseSensEquals = 'cseq',\n  kAECentered = 'cent',\n  kAEChangeView = 'view',\n  kAEClone = 'clon',\n  kAEClose = 'clos',\n  kAECondensed = 'cond',\n  kAEContains = 'cont',\n  kAECopy = 'copy',\n  kAECoreSuite = 'core',\n  kAECountElements = 'cnte',\n  kAECreateElement = 'crel',\n  kAECreatePublisher = 'cpub',\n  kAECut = 'cut ',\n  kAEDelete = 'delo'\n};\n\nenum {\n  kAEDoObjectsExist = 'doex',\n  kAEDoScript = 'dosc',\n  kAEDrag = 'drag',\n  kAEDuplicateSelection = 'sdup',\n  kAEEditGraphic = 'edit',\n  kAEEmptyTrash = 'empt',\n  kAEEnd = 'end ',\n  kAEEndsWith = 'ends',\n  kAEEndTransaction = 'endt',\n  kAEEquals = '=   ',\n  kAEExpanded = 'pexp',\n  kAEFast = 'fast',\n  kAEFinderEvents = 'FNDR',\n  kAEFormulaProtect = 'fpro',\n  kAEFullyJustified = 'full',\n  kAEGetClassInfo = 'qobj',\n  kAEGetData = 'getd',\n  kAEGetDataSize = 'dsiz',\n  kAEGetEventInfo = 'gtei',\n  kAEGetInfoSelection = 'sinf'\n};\n\nenum {\n  kAEGetPrivilegeSelection = 'sprv',\n  kAEGetSuiteInfo = 'gtsi',\n  kAEGreaterThan = '>   ',\n  kAEGreaterThanEquals = '>=  ',\n  kAEGrow = 'grow',\n  kAEHidden = 'hidn',\n  kAEHiQuality = 'hiqu',\n  kAEImageGraphic = 'imgr',\n  kAEIsUniform = 'isun',\n  kAEItalic = 'ital',\n  kAELeftJustified = 'left',\n  kAELessThan = '<   ',\n  kAELessThanEquals = '<=  ',\n  kAELowercase = 'lowc',\n  kAEMakeObjectsVisible = 'mvis',\n  kAEMiscStandards = 'misc',\n  kAEModifiable = 'modf',\n  kAEMove = 'move',\n  kAENo = 'no  ',\n  kAENoArrow = 'arno'\n};\n\nenum {\n  kAENonmodifiable = 'nmod',\n  kAEOpen = 'odoc',\n  kAEOpenSelection = 'sope',\n  kAEOutline = 'outl',\n  kAEPageSetup = 'pgsu',\n  kAEPaste = 'past',\n  kAEPlain = 'plan',\n  kAEPrint = 'pdoc',\n  kAEPrintSelection = 'spri',\n  kAEPrintWindow = 'pwin',\n  kAEPutAwaySelection = 'sput',\n  kAEQDAddOver = 'addo',\n  kAEQDAddPin = 'addp',\n  kAEQDAdMax = 'admx',\n  kAEQDAdMin = 'admn',\n  kAEQDBic = 'bic ',\n  kAEQDBlend = 'blnd',\n  kAEQDCopy = 'cpy ',\n  kAEQDNotBic = 'nbic',\n  kAEQDNotCopy = 'ncpy'\n};\n\nenum {\n  kAEQDNotOr = 'ntor',\n  kAEQDNotXor = 'nxor',\n  kAEQDOr = 'or  ',\n  kAEQDSubOver = 'subo',\n  kAEQDSubPin = 'subp',\n  kAEQDSupplementalSuite = 'qdsp',\n  kAEQDXor = 'xor ',\n  kAEQuickdrawSuite = 'qdrw',\n  kAEQuitAll = 'quia',\n  kAERedo = 'redo',\n  kAERegular = 'regl',\n  kAEReopenApplication = 'rapp',\n  kAEReplace = 'rplc',\n  kAERequiredSuite = 'reqd',\n  kAERestart = 'rest',\n  kAERevealSelection = 'srev',\n  kAERevert = 'rvrt',\n  kAERightJustified = 'rght',\n  kAESave = 'save',\n  kAESelect = 'slct',\n  kAESetData = 'setd'\n};\n\nenum {\n  kAESetPosition = 'posn',\n  kAEShadow = 'shad',\n  kAEShowClipboard = 'shcl',\n  kAEShutDown = 'shut',\n  kAESleep = 'slep',\n  kAESmallCaps = 'smcp',\n  kAESpecialClassProperties = 'c@#!',\n  kAEStrikethrough = 'strk',\n  kAESubscript = 'sbsc',\n  kAESuperscript = 'spsc',\n  kAETableSuite = 'tbls',\n  kAETextSuite = 'TEXT',\n  kAETransactionTerminated = 'ttrm',\n  kAEUnderline = 'undl',\n  kAEUndo = 'undo',\n  kAEWholeWordEquals = 'wweq',\n  kAEYes = 'yes ',\n  kAEZoom = 'zoom'\n};\n\n\nenum {\n  kAELogOut = 'logo',\n  kAEReallyLogOut = 'rlgo',\n  kAEShowRestartDialog = 'rrst',\n  kAEShowShutdownDialog = 'rsdn'\n};\n\n\nenum {\n  kAEMouseClass = 'mous',\n  kAEDown = 'down',\n  kAEUp = 'up  ',\n  kAEMoved = 'move',\n  kAEStoppedMoving = 'stop',\n  kAEWindowClass = 'wind',\n  kAEUpdate = 'updt',\n  kAEActivate = 'actv',\n  kAEDeactivate = 'dact',\n  kAECommandClass = 'cmnd',\n  kAEKeyClass = 'keyc',\n  kAERawKey = 'rkey',\n  kAEVirtualKey = 'keyc',\n  kAENavigationKey = 'nave',\n  kAEAutoDown = 'auto',\n  kAEApplicationClass = 'appl',\n  kAESuspend = 'susp',\n  kAEResume = 'rsme',\n  kAEDiskEvent = 'disk',\n  kAENullEvent = 'null',\n  kAEWakeUpEvent = 'wake',\n  kAEScrapEvent = 'scrp',\n  kAEHighLevel = 'high'\n};\n\nenum {\n  keyAEAngle = 'kang',\n  keyAEArcAngle = 'parc'\n};\n\nenum {\n  keyAEBaseAddr = 'badd',\n  keyAEBestType = 'pbst',\n  keyAEBgndColor = 'kbcl',\n  keyAEBgndPattern = 'kbpt',\n  keyAEBounds = 'pbnd',\n  keyAECellList = 'kclt',\n  keyAEClassID = 'clID',\n  keyAEColor = 'colr',\n  keyAEColorTable = 'cltb',\n  keyAECurveHeight = 'kchd',\n  keyAECurveWidth = 'kcwd',\n  keyAEDashStyle = 'pdst',\n  keyAEData = 'data',\n  keyAEDefaultType = 'deft',\n  keyAEDefinitionRect = 'pdrt',\n  keyAEDescType = 'dstp',\n  keyAEDestination = 'dest',\n  keyAEDoAntiAlias = 'anta',\n  keyAEDoDithered = 'gdit',\n  keyAEDoRotate = 'kdrt'\n};\n\nenum {\n  keyAEDoScale = 'ksca',\n  keyAEDoTranslate = 'ktra',\n  keyAEEditionFileLoc = 'eloc',\n  keyAEElements = 'elms',\n  keyAEEndPoint = 'pend',\n  keyAEEventClass = 'evcl',\n  keyAEEventID = 'evti',\n  keyAEFile = 'kfil',\n  keyAEFileType = 'fltp',\n  keyAEFillColor = 'flcl',\n  keyAEFillPattern = 'flpt',\n  keyAEFlipHorizontal = 'kfho',\n  keyAEFlipVertical = 'kfvt',\n  keyAEFont = 'font',\n  keyAEFormula = 'pfor',\n  keyAEGraphicObjects = 'gobs',\n  keyAEID = 'ID  ',\n  keyAEImageQuality = 'gqua',\n  keyAEInsertHere = 'insh',\n  keyAEKeyForms = 'keyf'\n};\n\nenum {\n  keyAEKeyword = 'kywd',\n  keyAELevel = 'levl',\n  keyAELineArrow = 'arro',\n  keyAEName = 'pnam',\n  keyAENewElementLoc = 'pnel',\n  keyAEObject = 'kobj',\n  keyAEObjectClass = 'kocl',\n  keyAEOffStyles = 'ofst',\n  keyAEOnStyles = 'onst',\n  keyAEParameters = 'prms',\n  keyAEParamFlags = 'pmfg',\n  keyAEPenColor = 'ppcl',\n  keyAEPenPattern = 'pppa',\n  keyAEPenWidth = 'ppwd',\n  keyAEPixelDepth = 'pdpt',\n  keyAEPixMapMinus = 'kpmm',\n  keyAEPMTable = 'kpmt',\n  keyAEPointList = 'ptlt',\n  keyAEPointSize = 'ptsz',\n  keyAEPosition = 'kpos'\n};\n\nenum {\n  keyAEPropData = 'prdt',\n  keyAEProperties = 'qpro',\n  keyAEProperty = 'kprp',\n  keyAEPropFlags = 'prfg',\n  keyAEPropID = 'prop',\n  keyAEProtection = 'ppro',\n  keyAERenderAs = 'kren',\n  keyAERequestedType = 'rtyp',\n  keyAEResult = '----',\n  keyAEResultInfo = 'rsin',\n  keyAERotation = 'prot',\n  keyAERotPoint = 'krtp',\n  keyAERowList = 'krls',\n  keyAESaveOptions = 'savo',\n  keyAEScale = 'pscl',\n  keyAEScriptTag = 'psct',\n  keyAESearchText = 'stxt',\n  keyAEShowWhere = 'show',\n  keyAEStartAngle = 'pang',\n  keyAEStartPoint = 'pstp',\n  keyAEStyles = 'ksty'\n};\n\nenum {\n  keyAESuiteID = 'suit',\n  keyAEText = 'ktxt',\n  keyAETextColor = 'ptxc',\n  keyAETextFont = 'ptxf',\n  keyAETextPointSize = 'ptps',\n  keyAETextStyles = 'txst',\n  keyAETextLineHeight = 'ktlh',\n  keyAETextLineAscent = 'ktas',\n  keyAETheText = 'thtx',\n  keyAETransferMode = 'pptm',\n  keyAETranslation = 'ptrs',\n  keyAETryAsStructGraf = 'toog',\n  keyAEUniformStyles = 'ustl',\n  keyAEUpdateOn = 'pupd',\n  keyAEUserTerm = 'utrm',\n  keyAEWindow = 'wndw',\n  keyAEWritingCode = 'wrcd'\n};\n\nenum {\n  keyMiscellaneous = 'fmsc',\n  keySelection = 'fsel',\n  keyWindow = 'kwnd',\n\n  keyWhen = 'when',\n  keyWhere = 'wher',\n  keyModifiers = 'mods',\n  keyKey = 'key ',\n  keyKeyCode = 'code',\n  keyKeyboard = 'keyb',\n  keyDriveNumber = 'drv#',\n  keyErrorCode = 'err#',\n  keyHighLevelClass = 'hcls',\n  keyHighLevelID = 'hid '\n};\n\nenum {\n  pArcAngle = 'parc',\n  pBackgroundColor = 'pbcl',\n  pBackgroundPattern = 'pbpt',\n  pBestType = 'pbst',\n  pBounds = 'pbnd',\n  pClass = 'pcls',\n  pClipboard = 'pcli',\n  pColor = 'colr',\n  pColorTable = 'cltb',\n  pContents = 'pcnt',\n  pCornerCurveHeight = 'pchd',\n  pCornerCurveWidth = 'pcwd',\n  pDashStyle = 'pdst',\n  pDefaultType = 'deft',\n  pDefinitionRect = 'pdrt',\n  pEnabled = 'enbl',\n  pEndPoint = 'pend',\n  pFillColor = 'flcl',\n  pFillPattern = 'flpt',\n  pFont = 'font'\n};\n\nenum {\n  pFormula = 'pfor',\n  pGraphicObjects = 'gobs',\n  pHasCloseBox = 'hclb',\n  pHasTitleBar = 'ptit',\n  pID = 'ID  ',\n  pIndex = 'pidx',\n  pInsertionLoc = 'pins',\n  pIsFloating = 'isfl',\n  pIsFrontProcess = 'pisf',\n  pIsModal = 'pmod',\n  pIsModified = 'imod',\n  pIsResizable = 'prsz',\n  pIsStationeryPad = 'pspd',\n  pIsZoomable = 'iszm',\n  pIsZoomed = 'pzum',\n  pItemNumber = 'itmn',\n  pJustification = 'pjst',\n  pLineArrow = 'arro',\n  pMenuID = 'mnid',\n  pName = 'pnam'\n};\n\nenum {\n  pNewElementLoc = 'pnel',\n  pPenColor = 'ppcl',\n  pPenPattern = 'pppa',\n  pPenWidth = 'ppwd',\n  pPixelDepth = 'pdpt',\n  pPointList = 'ptlt',\n  pPointSize = 'ptsz',\n  pProtection = 'ppro',\n  pRotation = 'prot',\n  pScale = 'pscl',\n  pScript = 'scpt',\n  pScriptTag = 'psct',\n  pSelected = 'selc',\n  pSelection = 'sele',\n  pStartAngle = 'pang',\n  pStartPoint = 'pstp',\n  pTextColor = 'ptxc',\n  pTextFont = 'ptxf',\n  pTextItemDelimiters = 'txdl',\n  pTextPointSize = 'ptps'\n};\n\nenum {\n  pTextStyles = 'txst',\n  pTransferMode = 'pptm',\n  pTranslation = 'ptrs',\n  pUniformStyles = 'ustl',\n  pUpdateOn = 'pupd',\n  pUserSelection = 'pusl',\n  pVersion = 'vers',\n  pVisible = 'pvis'\n};\n\nenum {\n  typeAEText = 'tTXT',\n  typeArc = 'carc',\n  typeBest = 'best',\n  typeCell = 'ccel',\n  typeClassInfo = 'gcli',\n  typeColorTable = 'clrt',\n  typeColumn = 'ccol',\n  typeDashStyle = 'tdas',\n  typeData = 'tdta',\n  typeDrawingArea = 'cdrw',\n  typeElemInfo = 'elin',\n  typeEnumeration = 'enum',\n  typeEPS = 'EPS ',\n  typeEventInfo = 'evin'\n};\n\nenum {\n  typeFinderWindow = 'fwin',\n  typeFixedPoint = 'fpnt',\n  typeFixedRectangle = 'frct',\n  typeGraphicLine = 'glin',\n  typeGraphicText = 'cgtx',\n  typeGroupedGraphic = 'cpic',\n  typeInsertionLoc = 'insl',\n  typeIntlText = 'itxt',\n  typeIntlWritingCode = 'intl',\n  typeLongDateTime = 'ldt ',\n  typeCFAbsoluteTime = 'cfat',\n  typeISO8601DateTime = 'isot',\n  typeLongFixed = 'lfxd',\n  typeLongFixedPoint = 'lfpt',\n  typeLongFixedRectangle = 'lfrc',\n  typeLongPoint = 'lpnt',\n  typeLongRectangle = 'lrct',\n  typeMachineLoc = 'mLoc',\n  typeOval = 'covl',\n  typeParamInfo = 'pmin',\n  typePict = 'PICT'\n};\n\nenum {\n  typePixelMap = 'cpix',\n  typePixMapMinus = 'tpmm',\n  typePolygon = 'cpgn',\n  typePropInfo = 'pinf',\n  typePtr = 'ptr ',\n  typeQDPoint = 'QDpt',\n  typeQDRegion = 'Qrgn',\n  typeRectangle = 'crec',\n  typeRGB16 = 'tr16',\n  typeRGB96 = 'tr96',\n  typeRGBColor = 'cRGB',\n  typeRotation = 'trot',\n  typeRoundedRectangle = 'crrc',\n  typeRow = 'crow',\n  typeScrapStyles = 'styl',\n  typeScript = 'scpt',\n  typeStyledText = 'STXT',\n  typeSuiteInfo = 'suin',\n  typeTable = 'ctbl',\n  typeTextStyles = 'tsty'\n};\n\nenum {\n  typeTIFF = 'TIFF',\n  typeJPEG = 'JPEG',\n  typeGIF = 'GIFf',\n  typeVersion = 'vers'\n};\n\nenum {\n  kAEMenuClass = 'menu',\n  kAEMenuSelect = 'mhit',\n  kAEMouseDown = 'mdwn',\n  kAEMouseDownInBack = 'mdbk',\n  kAEKeyDown = 'kdwn',\n  kAEResized = 'rsiz',\n  kAEPromise = 'prom'\n};\n\nenum {\n  keyMenuID = 'mid ',\n  keyMenuItem = 'mitm',\n  keyCloseAllWindows = 'caw ',\n  keyOriginalBounds = 'obnd',\n  keyNewBounds = 'nbnd',\n  keyLocalWhere = 'lwhr'\n};\n\nenum {\n  typeHIMenu = 'mobj',\n  typeHIWindow = 'wobj'\n};\n\nenum {\n  kAEQuitReason = 'why?'\n};\n\nenum {\n  kBySmallIcon = 0,\n  kByIconView = 1,\n  kByNameView = 2,\n  kByDateView = 3,\n  kBySizeView = 4,\n  kByKindView = 5,\n  kByCommentView = 6,\n  kByLabelView = 7,\n  kByVersionView = 8\n};\n\nenum {\n  kAEInfo = 11,\n  kAEMain = 0,\n  kAESharing = 13\n};\n\nenum {\n  kAEZoomIn = 7,\n  kAEZoomOut = 8\n};\n\nenum {\n  kTextServiceClass = 'tsvc',\n  kUpdateActiveInputArea = 'updt',\n  kShowHideInputWindow = 'shiw',\n  kPos2Offset = 'p2st',\n  kOffset2Pos = 'st2p',\n  kUnicodeNotFromInputMethod = 'unim',\n  kGetSelectedText = 'gtxt',\n  keyAETSMDocumentRefcon = 'refc',\n  keyAEServerInstance = 'srvi',\n  keyAETheData = 'kdat',\n  keyAEFixLength = 'fixl',\n  keyAEUpdateRange = 'udng',\n  keyAECurrentPoint = 'cpos',\n  keyAEBufferSize = 'buff',\n  keyAEMoveView = 'mvvw',\n  keyAENextBody = 'nxbd',\n  keyAETSMScriptTag = 'sclg',\n  keyAETSMTextFont = 'ktxf',\n  keyAETSMTextFMFont = 'ktxm',\n  keyAETSMTextPointSize = 'ktps',\n  keyAETSMEventRecord = 'tevt',\n  keyAETSMEventRef = 'tevr',\n  keyAETextServiceEncoding = 'tsen',\n  keyAETextServiceMacEncoding = 'tmen',\n  keyAETSMGlyphInfoArray = 'tgia',\n  typeTextRange = 'txrn',\n  typeComponentInstance = 'cmpi',\n  typeOffsetArray = 'ofay',\n  typeTextRangeArray = 'tray',\n  typeLowLevelEventRecord = 'evtr',\n  typeGlyphInfoArray = 'glia',\n  typeEventRef = 'evrf',\n  typeText = typeChar\n};\n\n\n\nenum {\n  kTSMOutsideOfBody = 1,\n  kTSMInsideOfBody = 2,\n  kTSMInsideOfActiveInputArea = 3\n};\n\nenum {\n  kNextBody = 1,\n  kPreviousBody = 2\n};\n\nstruct TextRange {\n  SInt32 fStart;\n  SInt32 fEnd;\n  SInt16 fHiliteStyle;\n};\ntypedef struct TextRange TextRange;\ntypedef TextRange * TextRangePtr;\ntypedef TextRangePtr * TextRangeHandle;\nstruct TextRangeArray {\n  SInt16 fNumOfRanges;\n  TextRange fRange[1];\n};\ntypedef struct TextRangeArray TextRangeArray;\ntypedef TextRangeArray * TextRangeArrayPtr;\ntypedef TextRangeArrayPtr * TextRangeArrayHandle;\nstruct OffsetArray {\n  SInt16 fNumOfOffsets;\n  SInt32 fOffset[1];\n};\ntypedef struct OffsetArray OffsetArray;\ntypedef OffsetArray * OffsetArrayPtr;\ntypedef OffsetArrayPtr * OffsetArrayHandle;\nstruct WritingCode {\n  ScriptCode theScriptCode;\n  LangCode theLangCode;\n};\ntypedef struct WritingCode WritingCode;\nstruct IntlText {\n  ScriptCode theScriptCode;\n  LangCode theLangCode;\n  char theText[1];\n};\ntypedef struct IntlText IntlText;\n\n\nenum {\n  kTSMHiliteCaretPosition = 1,\n  kTSMHiliteRawText = 2,\n  kTSMHiliteSelectedRawText = 3,\n  kTSMHiliteConvertedText = 4,\n  kTSMHiliteSelectedConvertedText = 5,\n  kTSMHiliteBlockFillText = 6,\n  kTSMHiliteOutlineText = 7,\n  kTSMHiliteSelectedText = 8,\n  kTSMHiliteNoHilite = 9\n};\n# 748 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AERegistry.h\" 3\nenum {\n  keyAEHiliteRange = 'hrng',\n  keyAEPinRange = 'pnrg',\n  keyAEClauseOffsets = 'clau',\n  keyAEOffset = 'ofst',\n  keyAEPoint = 'gpos',\n  keyAELeftSide = 'klef',\n  keyAERegionClass = 'rgnc',\n  keyAEDragging = 'bool'\n};\n# 767 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AERegistry.h\" 3\nenum {\n\n  typeMeters = 'metr',\n  typeInches = 'inch',\n  typeFeet = 'feet',\n  typeYards = 'yard',\n  typeMiles = 'mile',\n  typeKilometers = 'kmtr',\n  typeCentimeters = 'cmtr',\n  typeSquareMeters = 'sqrm',\n  typeSquareFeet = 'sqft',\n  typeSquareYards = 'sqyd',\n  typeSquareMiles = 'sqmi',\n  typeSquareKilometers = 'sqkm',\n  typeLiters = 'litr',\n  typeQuarts = 'qrts',\n  typeGallons = 'galn',\n  typeCubicMeters = 'cmet',\n  typeCubicFeet = 'cfet',\n  typeCubicInches = 'cuin',\n  typeCubicCentimeter = 'ccmt',\n  typeCubicYards = 'cyrd',\n  typeKilograms = 'kgrm',\n  typeGrams = 'gram',\n  typeOunces = 'ozs ',\n  typePounds = 'lbs ',\n  typeDegreesC = 'degc',\n  typeDegreesF = 'degf',\n  typeDegreesK = 'degk'\n};\n\nenum {\n\n  kFAServerApp = 'ssrv',\n  kDoFolderActionEvent = 'fola',\n  kFolderActionCode = 'actn',\n  kFolderOpenedEvent = 'fopn',\n  kFolderClosedEvent = 'fclo',\n  kFolderWindowMovedEvent = 'fsiz',\n  kFolderItemsAddedEvent = 'fget',\n  kFolderItemsRemovedEvent = 'flos',\n  kItemList = 'flst',\n  kNewSizeParameter = 'fnsz',\n  kFASuiteCode = 'faco',\n  kFAAttachCommand = 'atfa',\n  kFARemoveCommand = 'rmfa',\n  kFAEditCommand = 'edfa',\n  kFAFileParam = 'faal',\n  kFAIndexParam = 'indx'\n};\n\n\nenum {\n\n  kAEInternetSuite = 'gurl',\n  kAEISWebStarSuite = 0x575757BD\n};\n\nenum {\n\n  kAEISGetURL = 'gurl',\n  KAEISHandleCGI = 'sdoc'\n};\n\nenum {\n\n  cURL = 'url ',\n  cInternetAddress = 'IPAD',\n  cHTML = 'html',\n  cFTPItem = 'ftp '\n};\n\nenum {\n\n  kAEISHTTPSearchArgs = 'kfor',\n  kAEISPostArgs = 'post',\n  kAEISMethod = 'meth',\n  kAEISClientAddress = 'addr',\n  kAEISUserName = 'user',\n  kAEISPassword = 'pass',\n  kAEISFromUser = 'frmu',\n  kAEISServerName = 'svnm',\n  kAEISServerPort = 'svpt',\n  kAEISScriptName = 'scnm',\n  kAEISContentType = 'ctyp',\n  kAEISReferrer = 'refr',\n  kAEISUserAgent = 'Agnt',\n  kAEISAction = 'Kact',\n  kAEISActionPath = 'Kapt',\n  kAEISClientIP = 'Kcip',\n  kAEISFullRequest = 'Kfrq'\n};\n\nenum {\n\n  pScheme = 'pusc',\n  pHost = 'HOST',\n  pPath = 'FTPc',\n  pUserName = 'RAun',\n  pUserPassword = 'RApw',\n  pDNSForm = 'pDNS',\n  pURL = 'pURL',\n  pTextEncoding = 'ptxe',\n  pFTPKind = 'kind'\n};\n\nenum {\n\n  eScheme = 'esch',\n  eurlHTTP = 'http',\n  eurlHTTPS = 'htps',\n  eurlFTP = 'ftp ',\n  eurlMail = 'mail',\n  eurlFile = 'file',\n  eurlGopher = 'gphr',\n  eurlTelnet = 'tlnt',\n  eurlNews = 'news',\n  eurlSNews = 'snws',\n  eurlNNTP = 'nntp',\n  eurlMessage = 'mess',\n  eurlMailbox = 'mbox',\n  eurlMulti = 'mult',\n  eurlLaunch = 'laun',\n  eurlAFP = 'afp ',\n  eurlAT = 'at  ',\n  eurlEPPC = 'eppc',\n  eurlRTSP = 'rtsp',\n  eurlIMAP = 'imap',\n  eurlNFS = 'unfs',\n  eurlPOP = 'upop',\n  eurlLDAP = 'uldp',\n  eurlUnknown = 'url?'\n};\n\nenum {\n\n  kConnSuite = 'macc',\n  cDevSpec = 'cdev',\n  cAddressSpec = 'cadr',\n  cADBAddress = 'cadb',\n  cAppleTalkAddress = 'cat ',\n  cBusAddress = 'cbus',\n  cEthernetAddress = 'cen ',\n  cFireWireAddress = 'cfw ',\n  cIPAddress = 'cip ',\n  cLocalTalkAddress = 'clt ',\n  cSCSIAddress = 'cscs',\n  cTokenRingAddress = 'ctok',\n  cUSBAddress = 'cusb',\n\n  pDeviceType = 'pdvt',\n  pDeviceAddress = 'pdva',\n  pConduit = 'pcon',\n  pProtocol = 'pprt',\n  pATMachine = 'patm',\n  pATZone = 'patz',\n  pATType = 'patt',\n  pDottedDecimal = 'pipd',\n  pDNS = 'pdns',\n  pPort = 'ppor',\n  pNetwork = 'pnet',\n  pNode = 'pnod',\n  pSocket = 'psoc',\n  pSCSIBus = 'pscb',\n  pSCSILUN = 'pslu',\n\n  eDeviceType = 'edvt',\n  eAddressSpec = 'eads',\n  eConduit = 'econ',\n  eProtocol = 'epro',\n  eADB = 'eadb',\n  eAnalogAudio = 'epau',\n  eAppleTalk = 'epat',\n  eAudioLineIn = 'ecai',\n  eAudioLineOut = 'ecal',\n  eAudioOut = 'ecao',\n  eBus = 'ebus',\n  eCDROM = 'ecd ',\n  eCommSlot = 'eccm',\n  eDigitalAudio = 'epda',\n  eDisplay = 'edds',\n  eDVD = 'edvd',\n  eEthernet = 'ecen',\n  eFireWire = 'ecfw',\n  eFloppy = 'efd ',\n  eHD = 'ehd ',\n  eInfrared = 'ecir',\n  eIP = 'epip',\n  eIrDA = 'epir',\n  eIRTalk = 'epit',\n  eKeyboard = 'ekbd',\n  eLCD = 'edlc',\n  eLocalTalk = 'eclt',\n  eMacIP = 'epmi',\n  eMacVideo = 'epmv',\n  eMicrophone = 'ecmi',\n  eModemPort = 'ecmp',\n  eModemPrinterPort = 'empp',\n  eModem = 'edmm',\n  eMonitorOut = 'ecmn',\n  eMouse = 'emou',\n  eNuBusCard = 'ednb',\n  eNuBus = 'enub',\n  ePCcard = 'ecpc',\n  ePCIbus = 'ecpi',\n  ePCIcard = 'edpi',\n  ePDSslot = 'ecpd',\n  ePDScard = 'epds',\n  ePointingDevice = 'edpd',\n  ePostScript = 'epps',\n  ePPP = 'eppp',\n  ePrinterPort = 'ecpp',\n  ePrinter = 'edpr',\n  eSvideo = 'epsv',\n  eSCSI = 'ecsc',\n  eSerial = 'epsr',\n  eSpeakers = 'edsp',\n  eStorageDevice = 'edst',\n  eSVGA = 'epsg',\n  eTokenRing = 'etok',\n  eTrackball = 'etrk',\n  eTrackpad = 'edtp',\n  eUSB = 'ecus',\n  eVideoIn = 'ecvi',\n  eVideoMonitor = 'edvm',\n  eVideoOut = 'ecvo'\n};\n\nenum {\n\n  cKeystroke = 'kprs',\n  pKeystrokeKey = 'kMsg',\n  pModifiers = 'kMod',\n  pKeyKind = 'kknd',\n  eModifiers = 'eMds',\n  eOptionDown = 'Kopt',\n  eCommandDown = 'Kcmd',\n  eControlDown = 'Kctl',\n  eShiftDown = 'Ksft',\n  eCapsLockDown = 'Kclk',\n  eKeyKind = 'ekst',\n\n  eEscapeKey = 0x6B733500,\n  eDeleteKey = 0x6B733300,\n  eTabKey = 0x6B733000,\n  eReturnKey = 0x6B732400,\n  eClearKey = 0x6B734700,\n  eEnterKey = 0x6B734C00,\n  eUpArrowKey = 0x6B737E00,\n  eDownArrowKey = 0x6B737D00,\n  eLeftArrowKey = 0x6B737B00,\n  eRightArrowKey = 0x6B737C00,\n  eHelpKey = 0x6B737200,\n  eHomeKey = 0x6B737300,\n  ePageUpKey = 0x6B737400,\n  ePageDownKey = 0x6B737900,\n  eForwardDelKey = 0x6B737500,\n  eEndKey = 0x6B737700,\n  eF1Key = 0x6B737A00,\n  eF2Key = 0x6B737800,\n  eF3Key = 0x6B736300,\n  eF4Key = 0x6B737600,\n  eF5Key = 0x6B736000,\n  eF6Key = 0x6B736100,\n  eF7Key = 0x6B736200,\n  eF8Key = 0x6B736400,\n  eF9Key = 0x6B736500,\n  eF10Key = 0x6B736D00,\n  eF11Key = 0x6B736700,\n  eF12Key = 0x6B736F00,\n  eF13Key = 0x6B736900,\n  eF14Key = 0x6B736B00,\n  eF15Key = 0x6B737100\n};\n\nenum {\n  keyAELaunchedAsLogInItem = 'lgit',\n  keyAELaunchedAsServiceItem = 'svit'\n};\n\n\n#pragma pack(pop)\n# 42 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AE.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEUserTermTypes.h\" 1 3\n# 30 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEUserTermTypes.h\" 3\n#pragma pack(push, 2)\n\nenum {\n  kAEUserTerminology = 'aeut',\n  kAETerminologyExtension = 'aete',\n  kAEScriptingSizeResource = 'scsz',\n  kAEOSAXSizeResource = 'osiz'\n};\n\nenum {\n  kAEUTHasReturningParam = 31,\n  kAEUTOptional = 15,\n  kAEUTlistOfItems = 14,\n  kAEUTEnumerated = 13,\n  kAEUTReadWrite = 12,\n  kAEUTChangesState = 12,\n  kAEUTTightBindingFunction = 12,\n\n  kAEUTEnumsAreTypes = 11,\n  kAEUTEnumListIsExclusive = 10,\n  kAEUTReplyIsReference = 9,\n  kAEUTDirectParamIsReference = 9,\n  kAEUTParamIsReference = 9,\n  kAEUTPropertyIsReference = 9,\n  kAEUTNotDirectParamIsTarget = 8,\n  kAEUTParamIsTarget = 8,\n  kAEUTApostrophe = 3,\n  kAEUTFeminine = 2,\n  kAEUTMasculine = 1,\n  kAEUTPlural = 0\n};\n\nstruct TScriptingSizeResource {\n  SInt16 scriptingSizeFlags;\n  UInt32 minStackSize;\n  UInt32 preferredStackSize;\n  UInt32 maxStackSize;\n  UInt32 minHeapSize;\n  UInt32 preferredHeapSize;\n  UInt32 maxHeapSize;\n};\ntypedef struct TScriptingSizeResource TScriptingSizeResource;\nenum {\n  kLaunchToGetTerminology = (1 << 15),\n  kDontFindAppBySignature = (1 << 14),\n  kAlwaysSendSubject = (1 << 13)\n};\n\n\nenum {\n  kReadExtensionTermsMask = (1 << 15)\n};\n\nenum {\n\n\n  kOSIZDontOpenResourceFile = 15,\n  kOSIZdontAcceptRemoteEvents = 14,\n  kOSIZOpenWithReadPermission = 13,\n  kOSIZCodeInSharedLibraries = 11\n};\n\n\n#pragma pack(pop)\n# 46 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AE.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEHelpers.h\" 1 3\n# 47 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEHelpers.h\" 3\n#pragma pack(push, 2)\n# 63 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEHelpers.h\" 3\ntypedef UInt32 AEBuildErrorCode;\nenum {\n  aeBuildSyntaxNoErr = 0,\n  aeBuildSyntaxBadToken = 1,\n  aeBuildSyntaxBadEOF = 2,\n  aeBuildSyntaxNoEOF = 3,\n  aeBuildSyntaxBadNegative = 4,\n  aeBuildSyntaxMissingQuote = 5,\n  aeBuildSyntaxBadHex = 6,\n  aeBuildSyntaxOddHex = 7,\n  aeBuildSyntaxNoCloseHex = 8,\n  aeBuildSyntaxUncoercedHex = 9,\n  aeBuildSyntaxNoCloseString = 10,\n  aeBuildSyntaxBadDesc = 11,\n  aeBuildSyntaxBadData = 12,\n  aeBuildSyntaxNoCloseParen = 13,\n  aeBuildSyntaxNoCloseBracket = 14,\n  aeBuildSyntaxNoCloseBrace = 15,\n  aeBuildSyntaxNoKey = 16,\n  aeBuildSyntaxNoColon = 17,\n  aeBuildSyntaxCoercedList = 18,\n  aeBuildSyntaxUncoercedDoubleAt = 19\n};\n\n\n\nstruct AEBuildError {\n  AEBuildErrorCode fError;\n  UInt32 fErrorPos;\n};\ntypedef struct AEBuildError AEBuildError;\n# 109 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEHelpers.h\" 3\nextern OSStatus\nAEBuildDesc(\n  AEDesc * dst,\n  AEBuildError * error,\n  const char * src,\n  ...) ;\n# 129 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEHelpers.h\" 3\nextern OSStatus\nvAEBuildDesc(\n  AEDesc * dst,\n  AEBuildError * error,\n  const char * src,\n  va_list args) ;\n# 150 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEHelpers.h\" 3\nextern OSStatus\nAEBuildParameters(\n  AppleEvent * event,\n  AEBuildError * error,\n  const char * format,\n  ...) ;\n# 170 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEHelpers.h\" 3\nextern OSStatus\nvAEBuildParameters(\n  AppleEvent * event,\n  AEBuildError * error,\n  const char * format,\n  va_list args) ;\n# 190 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEHelpers.h\" 3\nextern OSStatus\nAEBuildAppleEvent(\n  AEEventClass theClass,\n  AEEventID theID,\n  DescType addressType,\n  const void * addressData,\n  Size addressLength,\n  SInt16 returnID,\n  SInt32 transactionID,\n  AppleEvent * result,\n  AEBuildError * error,\n  const char * paramsFmt,\n  ...) ;\n# 217 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEHelpers.h\" 3\nextern OSStatus\nvAEBuildAppleEvent(\n  AEEventClass theClass,\n  AEEventID theID,\n  DescType addressType,\n  const void * addressData,\n  Size addressLength,\n  SInt16 returnID,\n  SInt32 transactionID,\n  AppleEvent * resultEvt,\n  AEBuildError * error,\n  const char * paramsFmt,\n  va_list args) ;\n# 252 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEHelpers.h\" 3\nextern OSStatus\nAEPrintDescToHandle(\n  const AEDesc * desc,\n  Handle * result) ;\n# 268 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEHelpers.h\" 3\ntypedef struct OpaqueAEStreamRef* AEStreamRef;\n# 284 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEHelpers.h\" 3\nextern AEStreamRef\nAEStreamOpen(void) ;\n# 304 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEHelpers.h\" 3\nextern OSStatus\nAEStreamClose(\n  AEStreamRef ref,\n  AEDesc * desc) ;\n# 325 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEHelpers.h\" 3\nextern OSStatus\nAEStreamOpenDesc(\n  AEStreamRef ref,\n  DescType newType) ;\n# 343 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEHelpers.h\" 3\nextern OSStatus\nAEStreamWriteData(\n  AEStreamRef ref,\n  const void * data,\n  Size length) ;\n# 365 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEHelpers.h\" 3\nextern OSStatus\nAEStreamCloseDesc(AEStreamRef ref) ;\n# 381 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEHelpers.h\" 3\nextern OSStatus\nAEStreamWriteDesc(\n  AEStreamRef ref,\n  DescType newType,\n  const void * data,\n  Size length) ;\n# 401 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEHelpers.h\" 3\nextern OSStatus\nAEStreamWriteAEDesc(\n  AEStreamRef ref,\n  const AEDesc * desc) ;\n# 422 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEHelpers.h\" 3\nextern OSStatus\nAEStreamOpenList(AEStreamRef ref) ;\n# 438 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEHelpers.h\" 3\nextern OSStatus\nAEStreamCloseList(AEStreamRef ref) ;\n# 457 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEHelpers.h\" 3\nextern OSStatus\nAEStreamOpenRecord(\n  AEStreamRef ref,\n  DescType newType) ;\n# 475 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEHelpers.h\" 3\nextern OSStatus\nAEStreamSetRecordType(\n  AEStreamRef ref,\n  DescType newType) ;\n# 493 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEHelpers.h\" 3\nextern OSStatus\nAEStreamCloseRecord(AEStreamRef ref) ;\n# 512 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEHelpers.h\" 3\nextern OSStatus\nAEStreamWriteKeyDesc(\n  AEStreamRef ref,\n  AEKeyword key,\n  DescType newType,\n  const void * data,\n  Size length) ;\n# 536 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEHelpers.h\" 3\nextern OSStatus\nAEStreamOpenKeyDesc(\n  AEStreamRef ref,\n  AEKeyword key,\n  DescType newType) ;\n# 555 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEHelpers.h\" 3\nextern OSStatus\nAEStreamWriteKey(\n  AEStreamRef ref,\n  AEKeyword key) ;\n# 577 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEHelpers.h\" 3\nextern AEStreamRef\nAEStreamCreateEvent(\n  AEEventClass clazz,\n  AEEventID id,\n  DescType targetType,\n  const void * targetData,\n  Size targetLength,\n  SInt16 returnID,\n  SInt32 transactionID) ;\n# 607 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEHelpers.h\" 3\nextern AEStreamRef\nAEStreamOpenEvent(AppleEvent * event) ;\n# 623 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEHelpers.h\" 3\nextern OSStatus\nAEStreamOptionalParam(\n  AEStreamRef ref,\n  AEKeyword key) ;\n\n\n\n#pragma pack(pop)\n# 50 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AE.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEMach.h\" 1 3\n# 83 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEMach.h\" 3\nenum {\n  keyReplyPortAttr = 'repp'\n};\n\n\nenum {\n  typeReplyPortAttr = keyReplyPortAttr\n};\n# 112 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEMach.h\" 3\nextern mach_port_t\nAEGetRegisteredMachPort(void) ;\n# 151 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEMach.h\" 3\nextern OSStatus\nAEDecodeMessage(\n  mach_msg_header_t * header,\n  AppleEvent * event,\n  AppleEvent * reply) ;\n# 179 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEMach.h\" 3\nextern OSStatus\nAEProcessMessage(mach_msg_header_t * header) ;\n# 215 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AEMach.h\" 3\nextern OSStatus\nAESendMessage(\n  const AppleEvent * event,\n  AppleEvent * reply,\n  AESendMode sendMode,\n  long timeOutInTicks) ;\n# 54 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AE.h\" 2 3\n# 22 \"/System/Library/Frameworks/CoreServices.framework/Headers/CoreServices.h\" 2 3\n\n\n\n\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/OSServices.h\" 1 3\n# 30 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/OSServices.h\" 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentityAuthority.h\" 1 3\n# 43 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentityAuthority.h\" 3\ntypedef struct __CSIdentityAuthority* CSIdentityAuthorityRef;\n# 61 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentityAuthority.h\" 3\nextern CFTypeID\nCSIdentityAuthorityGetTypeID(void) ;\n# 89 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentityAuthority.h\" 3\nextern CSIdentityAuthorityRef\nCSGetDefaultIdentityAuthority(void) ;\n# 112 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentityAuthority.h\" 3\nextern CSIdentityAuthorityRef\nCSGetLocalIdentityAuthority(void) ;\n# 140 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentityAuthority.h\" 3\nextern CSIdentityAuthorityRef\nCSGetManagedIdentityAuthority(void) ;\n# 167 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentityAuthority.h\" 3\nextern CFStringRef\nCSIdentityAuthorityCopyLocalizedName(CSIdentityAuthorityRef authority) ;\n# 31 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/OSServices.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 1 3\n# 30 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\n# 1 \"/System/Library/Frameworks/Security.framework/Headers/SecBase.h\" 1 3\n# 45 \"/System/Library/Frameworks/Security.framework/Headers/SecBase.h\" 3\ntypedef struct OpaqueSecKeychainRef *SecKeychainRef;\n\n\n\n\n\ntypedef struct OpaqueSecKeychainItemRef *SecKeychainItemRef;\n\n\n\n\n\ntypedef struct OpaqueSecKeychainSearchRef *SecKeychainSearchRef;\n\n\n\n\n\ntypedef OSType SecKeychainAttrType;\n# 72 \"/System/Library/Frameworks/Security.framework/Headers/SecBase.h\" 3\nstruct SecKeychainAttribute\n{\n    SecKeychainAttrType tag;\n    UInt32 length;\n    void *data;\n};\ntypedef struct SecKeychainAttribute SecKeychainAttribute;\n\n\n\n\n\ntypedef SecKeychainAttribute *SecKeychainAttributePtr;\n\n\n\n\n\n\n\nstruct SecKeychainAttributeList\n{\n    UInt32 count;\n    SecKeychainAttribute *attr;\n};\ntypedef struct SecKeychainAttributeList SecKeychainAttributeList;\n\n\n\n\n\ntypedef UInt32 SecKeychainStatus;\n\n\n\n\n\n\ntypedef struct OpaqueSecTrustedApplicationRef *SecTrustedApplicationRef;\n\n\n\n\n\ntypedef struct OpaqueSecPolicyRef *SecPolicyRef;\n\n\n\n\n\ntypedef struct OpaqueSecCertificateRef *SecCertificateRef;\n\n\n\n\n\ntypedef struct OpaqueSecAccessRef *SecAccessRef;\n\n\n\n\n\ntypedef struct OpaqueSecIdentityRef *SecIdentityRef;\n\n\n\n\n\ntypedef struct OpaqueSecKeyRef *SecKeyRef;\n\n\n\n\n\ntypedef struct OpaqueSecTrustRef *SecACLRef;\n\n\n\n\n\ntypedef struct OpaqueSecPasswordRef *SecPasswordRef;\n# 162 \"/System/Library/Frameworks/Security.framework/Headers/SecBase.h\" 3\nstruct SecKeychainAttributeInfo\n{\n    UInt32 count;\n    UInt32 *tag;\n UInt32 *format;\n};\ntypedef struct SecKeychainAttributeInfo SecKeychainAttributeInfo;\n# 177 \"/System/Library/Frameworks/Security.framework/Headers/SecBase.h\" 3\nCFStringRef SecCopyErrorMessageString(OSStatus status, void *reserved);\n# 241 \"/System/Library/Frameworks/Security.framework/Headers/SecBase.h\" 3\nenum\n{\n    errSecSuccess = 0,\n    errSecUnimplemented = -4,\n    errSecParam = -50,\n    errSecAllocate = -108,\n\n    errSecNotAvailable = -25291,\n    errSecReadOnly = -25292,\n    errSecAuthFailed = -25293,\n    errSecNoSuchKeychain = -25294,\n    errSecInvalidKeychain = -25295,\n    errSecDuplicateKeychain = -25296,\n    errSecDuplicateCallback = -25297,\n    errSecInvalidCallback = -25298,\n    errSecDuplicateItem = -25299,\n    errSecItemNotFound = -25300,\n    errSecBufferTooSmall = -25301,\n    errSecDataTooLarge = -25302,\n    errSecNoSuchAttr = -25303,\n    errSecInvalidItemRef = -25304,\n    errSecInvalidSearchRef = -25305,\n    errSecNoSuchClass = -25306,\n    errSecNoDefaultKeychain = -25307,\n    errSecInteractionNotAllowed = -25308,\n    errSecReadOnlyAttr = -25309,\n    errSecWrongSecVersion = -25310,\n    errSecKeySizeNotAllowed = -25311,\n    errSecNoStorageModule = -25312,\n    errSecNoCertificateModule = -25313,\n    errSecNoPolicyModule = -25314,\n    errSecInteractionRequired = -25315,\n    errSecDataNotAvailable = -25316,\n    errSecDataNotModifiable = -25317,\n    errSecCreateChainFailed = -25318,\n errSecInvalidPrefsDomain = -25319,\n\n errSecACLNotSimple = -25240,\n errSecPolicyNotFound = -25241,\n errSecInvalidTrustSetting = -25242,\n errSecNoAccessForItem = -25243,\n errSecInvalidOwnerEdit = -25244,\n errSecTrustNotAvailable = -25245,\n errSecUnsupportedFormat = -25256,\n errSecUnknownFormat = -25257,\n errSecKeyIsSensitive = -25258,\n errSecMultiplePrivKeys = -25259,\n errSecPassphraseRequired = -25260,\n errSecInvalidPasswordRef = -25261,\n errSecInvalidTrustSettings = -25262,\n errSecNoTrustSettings = -25263,\n errSecPkcs12VerifyFailure = -25264,\n\n    errSecDecode = -26275,\n};\n# 31 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/Security.framework/Headers/Authorization.h\" 1 3\n# 86 \"/System/Library/Frameworks/Security.framework/Headers/Authorization.h\" 3\nenum {\n errAuthorizationSuccess = 0,\n errAuthorizationInvalidSet = -60001,\n errAuthorizationInvalidRef = -60002,\n errAuthorizationInvalidTag = -60003,\n errAuthorizationInvalidPointer = -60004,\n errAuthorizationDenied = -60005,\n errAuthorizationCanceled = -60006,\n errAuthorizationInteractionNotAllowed = -60007,\n errAuthorizationInternal = -60008,\n errAuthorizationExternalizeNotAllowed = -60009,\n errAuthorizationInternalizeNotAllowed = -60010,\n errAuthorizationInvalidFlags = -60011,\n errAuthorizationToolExecuteFailure = -60031,\n errAuthorizationToolEnvironmentError = -60032,\n errAuthorizationBadAddress = -60033,\n};\n\n\n\n\n\n\nenum {\n kAuthorizationFlagDefaults = 0,\n kAuthorizationFlagInteractionAllowed = (1 << 0),\n kAuthorizationFlagExtendRights = (1 << 1),\n kAuthorizationFlagPartialRights = (1 << 2),\n kAuthorizationFlagDestroyRights = (1 << 3),\n kAuthorizationFlagPreAuthorize = (1 << 4),\n\n\n kAuthorizationFlagNoData = (1 << 20)\n};\n\n\n\n\n\n\ntypedef UInt32 AuthorizationFlags;\n\n\n\n\n\n\nenum {\n kAuthorizationFlagCanNotPreAuthorize = (1 << 0)\n};\n\n\n\n\n\n\ntypedef const struct AuthorizationOpaqueRef *AuthorizationRef;\n\n\n\n\n\n\ntypedef const char *AuthorizationString;\n# 164 \"/System/Library/Frameworks/Security.framework/Headers/Authorization.h\" 3\ntypedef struct {\n AuthorizationString name;\n size_t valueLength;\n void *value;\n UInt32 flags;\n} AuthorizationItem;\n# 179 \"/System/Library/Frameworks/Security.framework/Headers/Authorization.h\" 3\ntypedef struct {\n UInt32 count;\n AuthorizationItem *items;\n} AuthorizationItemSet;\n# 197 \"/System/Library/Frameworks/Security.framework/Headers/Authorization.h\" 3\nenum {\n kAuthorizationExternalFormLength = 32\n};\n\ntypedef struct {\n char bytes[kAuthorizationExternalFormLength];\n} AuthorizationExternalForm;\n# 212 \"/System/Library/Frameworks/Security.framework/Headers/Authorization.h\" 3\ntypedef AuthorizationItemSet AuthorizationRights;\n\n\n\n\n\n\n\ntypedef AuthorizationItemSet AuthorizationEnvironment;\n# 253 \"/System/Library/Frameworks/Security.framework/Headers/Authorization.h\" 3\nOSStatus AuthorizationCreate(const AuthorizationRights *rights,\n const AuthorizationEnvironment *environment,\n AuthorizationFlags flags,\n AuthorizationRef *authorization);\n# 275 \"/System/Library/Frameworks/Security.framework/Headers/Authorization.h\" 3\nOSStatus AuthorizationFree(AuthorizationRef authorization, AuthorizationFlags flags);\n# 311 \"/System/Library/Frameworks/Security.framework/Headers/Authorization.h\" 3\nOSStatus AuthorizationCopyRights(AuthorizationRef authorization,\n const AuthorizationRights *rights,\n const AuthorizationEnvironment *environment,\n AuthorizationFlags flags,\n AuthorizationRights **authorizedRights);\n# 335 \"/System/Library/Frameworks/Security.framework/Headers/Authorization.h\" 3\nOSStatus AuthorizationCopyInfo(AuthorizationRef authorization,\n AuthorizationString tag,\n AuthorizationItemSet **info);\n# 359 \"/System/Library/Frameworks/Security.framework/Headers/Authorization.h\" 3\nOSStatus AuthorizationMakeExternalForm(AuthorizationRef authorization,\n AuthorizationExternalForm *extForm);\n# 376 \"/System/Library/Frameworks/Security.framework/Headers/Authorization.h\" 3\nOSStatus AuthorizationCreateFromExternalForm(const AuthorizationExternalForm *extForm,\n AuthorizationRef *authorization);\n# 391 \"/System/Library/Frameworks/Security.framework/Headers/Authorization.h\" 3\nOSStatus AuthorizationFreeItemSet(AuthorizationItemSet *set);\n# 411 \"/System/Library/Frameworks/Security.framework/Headers/Authorization.h\" 3\nOSStatus AuthorizationExecuteWithPrivileges(AuthorizationRef authorization,\n const char *pathToTool,\n AuthorizationFlags options,\n char * const *arguments,\n FILE **communicationsPipe);\n# 426 \"/System/Library/Frameworks/Security.framework/Headers/Authorization.h\" 3\nOSStatus AuthorizationCopyPrivilegedReference(AuthorizationRef *authorization,\n AuthorizationFlags flags);\n# 35 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 2 3\n# 49 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\n#pragma pack(push, 2)\n# 63 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nextern const CFStringRef kCSIdentityErrorDomain ;\n\n\n\n\n\n\n\nenum {\n\n\n\n\n  kCSIdentityUnknownAuthorityErr = -1,\n\n\n\n\n  kCSIdentityAuthorityNotAccessibleErr = -2,\n\n\n\n\n  kCSIdentityPermissionErr = -3,\n\n\n\n\n  kCSIdentityDeletedErr = -4,\n\n\n\n\n  kCSIdentityInvalidFullNameErr = -5,\n\n\n\n\n  kCSIdentityDuplicateFullNameErr = -6,\n\n\n\n\n\n  kCSIdentityInvalidPosixNameErr = -7,\n\n\n\n\n  kCSIdentityDuplicatePosixNameErr = -8\n};\n# 147 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\ntypedef struct __CSIdentity* CSIdentityRef;\n# 156 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\ntypedef struct __CSIdentityQuery* CSIdentityQueryRef;\n# 171 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nextern const CFStringRef kCSIdentityGeneratePosixName ;\n# 180 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nenum {\n\n\n\n\n  kCSIdentityClassUser = 1,\n\n\n\n\n  kCSIdentityClassGroup = 2\n};\n\ntypedef CFIndex CSIdentityClass;\n\n\n\n\n\n\n\nenum {\n\n\n\n\n  kCSIdentityFlagNone = 0,\n# 215 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\n  kCSIdentityFlagHidden = 1\n};\n\ntypedef CFOptionFlags CSIdentityFlags;\n# 236 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nextern CFTypeID\nCSIdentityGetTypeID(void) ;\n# 298 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nextern CSIdentityRef\nCSIdentityCreate(\n  CFAllocatorRef allocator,\n  CSIdentityClass identityClass,\n  CFStringRef fullName,\n  CFStringRef posixName,\n  CSIdentityFlags flags,\n  CSIdentityAuthorityRef authority) ;\n# 335 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nextern CSIdentityRef\nCSIdentityCreateCopy(\n  CFAllocatorRef allocator,\n  CSIdentityRef identity) ;\n# 369 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nextern CSIdentityClass\nCSIdentityGetClass(CSIdentityRef identity) ;\n# 396 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nextern CSIdentityAuthorityRef\nCSIdentityGetAuthority(CSIdentityRef identity) ;\n# 424 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nextern CFUUIDRef\nCSIdentityGetUUID(CSIdentityRef identity) ;\n# 456 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nextern CFStringRef\nCSIdentityGetFullName(CSIdentityRef identity) ;\n# 483 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nextern id_t\nCSIdentityGetPosixID(CSIdentityRef identity) ;\n# 516 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nextern CFStringRef\nCSIdentityGetPosixName(CSIdentityRef identity) ;\n# 545 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nextern CFStringRef\nCSIdentityGetEmailAddress(CSIdentityRef identity) ;\n# 575 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nextern CFURLRef\nCSIdentityGetImageURL(CSIdentityRef identity) ;\n# 604 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nextern CFDataRef\nCSIdentityGetImageData(CSIdentityRef identity) ;\n# 633 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nextern CFStringRef\nCSIdentityGetImageDataType(CSIdentityRef identity) ;\n# 668 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nextern CFArrayRef\nCSIdentityGetAliases(CSIdentityRef identity) ;\n# 699 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nextern Boolean\nCSIdentityIsMemberOfGroup(\n  CSIdentityRef identity,\n  CSIdentityRef group) ;\n# 728 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nextern Boolean\nCSIdentityIsHidden(CSIdentityRef identity) ;\n# 771 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nextern CFDataRef\nCSIdentityCreatePersistentReference(\n  CFAllocatorRef allocator,\n  CSIdentityRef identity) ;\n# 812 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nextern Boolean\nCSIdentityIsEnabled(CSIdentityRef user) ;\n# 842 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nextern Boolean\nCSIdentityAuthenticateUsingPassword(\n  CSIdentityRef user,\n  CFStringRef password) ;\n# 877 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nextern SecCertificateRef\nCSIdentityGetCertificate(CSIdentityRef user) ;\n# 918 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nextern CSIdentityQueryRef\nCSIdentityCreateGroupMembershipQuery(\n  CFAllocatorRef allocator,\n  CSIdentityRef group) ;\n# 956 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nextern void\nCSIdentitySetFullName(\n  CSIdentityRef identity,\n  CFStringRef fullName) ;\n# 989 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nextern void\nCSIdentitySetEmailAddress(\n  CSIdentityRef identity,\n  CFStringRef emailAddress) ;\n# 1022 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nextern void\nCSIdentitySetImageURL(\n  CSIdentityRef identity,\n  CFURLRef url) ;\n# 1058 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nextern void\nCSIdentitySetImageData(\n  CSIdentityRef identity,\n  CFDataRef imageData,\n  CFStringRef imageDataType) ;\n# 1091 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nextern void\nCSIdentityAddAlias(\n  CSIdentityRef identity,\n  CFStringRef alias) ;\n# 1123 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nextern void\nCSIdentityRemoveAlias(\n  CSIdentityRef identity,\n  CFStringRef alias) ;\n# 1162 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nextern void\nCSIdentityAddMember(\n  CSIdentityRef group,\n  CSIdentityRef member) ;\n# 1194 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nextern void\nCSIdentityRemoveMember(\n  CSIdentityRef group,\n  CSIdentityRef member) ;\n# 1236 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nextern void\nCSIdentitySetIsEnabled(\n  CSIdentityRef user,\n  Boolean isEnabled) ;\n# 1272 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nextern void\nCSIdentitySetPassword(\n  CSIdentityRef user,\n  CFStringRef password) ;\n# 1308 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nextern void\nCSIdentitySetCertificate(\n  CSIdentityRef user,\n  SecCertificateRef certificate) ;\n# 1342 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nextern void\nCSIdentityDelete(CSIdentityRef identity) ;\n# 1389 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nextern Boolean\nCSIdentityCommit(\n  CSIdentityRef identity,\n  AuthorizationRef authorization,\n  CFErrorRef * error) ;\n# 1402 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nenum {\n\n\n\n\n  kCSIdentityCommitCompleted = 1\n};\n\n\ntypedef void ( * CSIdentityStatusUpdatedCallback)(CSIdentityRef identity, CFIndex status, CFErrorRef error, void *info);\n# 1420 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nstruct CSIdentityClientContext {\n\n\n\n\n\n  CFIndex version;\n\n\n\n\n\n  void * info;\n# 1441 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\n  CFAllocatorRetainCallBack retain;\n\n\n\n\n\n  CFAllocatorReleaseCallBack release;\n\n\n\n\n\n\n  CFAllocatorCopyDescriptionCallBack copyDescription;\n\n\n\n\n\n  CSIdentityStatusUpdatedCallback statusUpdated;\n};\ntypedef struct CSIdentityClientContext CSIdentityClientContext;\n# 1507 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nextern Boolean\nCSIdentityCommitAsynchronously(\n  CSIdentityRef identity,\n  const CSIdentityClientContext * clientContext,\n  CFRunLoopRef runLoop,\n  CFStringRef runLoopMode,\n  AuthorizationRef authorization) ;\n# 1539 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nextern Boolean\nCSIdentityIsCommitting(CSIdentityRef identity) ;\n# 1570 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h\" 3\nextern void\nCSIdentityRemoveClient(CSIdentityRef identity) ;\n\n\n\n\n#pragma pack(pop)\n# 35 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/OSServices.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentityQuery.h\" 1 3\n# 36 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentityQuery.h\" 3\n#pragma pack(push, 2)\n# 53 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentityQuery.h\" 3\nextern CFTypeID\nCSIdentityQueryGetTypeID(void) ;\n# 68 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentityQuery.h\" 3\nenum {\n\n\n\n\n\n  kCSIdentityQueryGenerateUpdateEvents = 0x0001,\n\n\n\n\n\n  kCSIdentityQueryIncludeHiddenIdentities = 0x0002\n};\n\ntypedef CFOptionFlags CSIdentityQueryFlags;\n# 95 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentityQuery.h\" 3\nenum {\n\n\n\n\n  kCSIdentityQueryStringEquals = 1,\n\n\n\n\n  kCSIdentityQueryStringBeginsWith = 2\n};\n\ntypedef CFIndex CSIdentityQueryStringComparisonMethod;\n# 142 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentityQuery.h\" 3\nextern CSIdentityQueryRef\nCSIdentityQueryCreate(\n  CFAllocatorRef allocator,\n  CSIdentityClass identityClass,\n  CSIdentityAuthorityRef authority) ;\n# 188 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentityQuery.h\" 3\nextern CSIdentityQueryRef\nCSIdentityQueryCreateForName(\n  CFAllocatorRef allocator,\n  CFStringRef name,\n  CSIdentityQueryStringComparisonMethod comparisonMethod,\n  CSIdentityClass identityClass,\n  CSIdentityAuthorityRef authority) ;\n# 229 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentityQuery.h\" 3\nextern CSIdentityQueryRef\nCSIdentityQueryCreateForUUID(\n  CFAllocatorRef allocator,\n  CFUUIDRef uuid,\n  CSIdentityAuthorityRef authority) ;\n# 271 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentityQuery.h\" 3\nextern CSIdentityQueryRef\nCSIdentityQueryCreateForPosixID(\n  CFAllocatorRef allocator,\n  id_t posixID,\n  CSIdentityClass identityClass,\n  CSIdentityAuthorityRef authority) ;\n# 310 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentityQuery.h\" 3\nextern CSIdentityQueryRef\nCSIdentityQueryCreateForPersistentReference(\n  CFAllocatorRef allocator,\n  CFDataRef referenceData) ;\n# 339 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentityQuery.h\" 3\nextern CSIdentityQueryRef\nCSIdentityQueryCreateForCurrentUser(CFAllocatorRef allocator) ;\n# 370 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentityQuery.h\" 3\nextern CFArrayRef\nCSIdentityQueryCopyResults(CSIdentityQueryRef query) ;\n# 405 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentityQuery.h\" 3\nextern Boolean\nCSIdentityQueryExecute(\n  CSIdentityQueryRef query,\n  CSIdentityQueryFlags flags,\n  CFErrorRef * error) ;\n# 423 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentityQuery.h\" 3\nenum {\n\n\n\n\n\n\n  kCSIdentityQueryEventSearchPhaseFinished = 1,\n\n\n\n\n  kCSIdentityQueryEventResultsAdded = 2,\n\n\n\n\n\n  kCSIdentityQueryEventResultsChanged = 3,\n\n\n\n\n  kCSIdentityQueryEventResultsRemoved = 4,\n\n\n\n\n\n  kCSIdentityQueryEventErrorOccurred = 5\n};\n\ntypedef CFIndex CSIdentityQueryEvent;\n# 481 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentityQuery.h\" 3\ntypedef void ( * CSIdentityQueryReceiveEventCallback)(CSIdentityQueryRef query, CSIdentityQueryEvent event, CFArrayRef identities, CFErrorRef error, void *info);\n\n\n\n\n\n\n\nstruct CSIdentityQueryClientContext {\n  CFIndex version;\n  void * info;\n  CFAllocatorRetainCallBack retainInfo;\n  CFAllocatorReleaseCallBack releaseInfo;\n  CFAllocatorCopyDescriptionCallBack copyInfoDescription;\n  CSIdentityQueryReceiveEventCallback receiveEvent;\n};\ntypedef struct CSIdentityQueryClientContext CSIdentityQueryClientContext;\n# 533 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentityQuery.h\" 3\nextern Boolean\nCSIdentityQueryExecuteAsynchronously(\n  CSIdentityQueryRef query,\n  CSIdentityQueryFlags flags,\n  const CSIdentityQueryClientContext * clientContext,\n  CFRunLoopRef runLoop,\n  CFStringRef runLoopMode) ;\n# 568 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentityQuery.h\" 3\nextern void\nCSIdentityQueryStop(CSIdentityQueryRef query) ;\n\n\n\n\n#pragma pack(pop)\n# 39 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/OSServices.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/IconStorage.h\" 1 3\n# 31 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/IconStorage.h\" 3\n#pragma pack(push, 2)\n\n\n\nenum {\n  kIconServices16PixelDataARGB = 'ic04',\n  kIconServices32PixelDataARGB = 'ic05',\n  kIconServices48PixelDataARGB = 'ic06',\n  kIconServices128PixelDataARGB = 'ic07'\n};\n\n\n\nenum {\n  kIconServices256PixelDataARGB = 'ic08',\n  kIconServices512PixelDataARGB = 'ic09',\n  kThumbnail32BitData = 'it32',\n  kThumbnail8BitMask = 't8mk'\n};\n\nenum {\n  kHuge1BitMask = 'ich#',\n  kHuge4BitData = 'ich4',\n  kHuge8BitData = 'ich8',\n  kHuge32BitData = 'ih32',\n  kHuge8BitMask = 'h8mk'\n};\n\n\n\nenum {\n  kLarge1BitMask = 'ICN#',\n  kLarge4BitData = 'icl4',\n  kLarge8BitData = 'icl8',\n  kLarge32BitData = 'il32',\n  kLarge8BitMask = 'l8mk',\n  kSmall1BitMask = 'ics#',\n  kSmall4BitData = 'ics4',\n  kSmall8BitData = 'ics8',\n  kSmall32BitData = 'is32',\n  kSmall8BitMask = 's8mk',\n  kMini1BitMask = 'icm#',\n  kMini4BitData = 'icm4',\n  kMini8BitData = 'icm8'\n};\n\n\nenum {\n  large1BitMask = kLarge1BitMask,\n  large4BitData = kLarge4BitData,\n  large8BitData = kLarge8BitData,\n  small1BitMask = kSmall1BitMask,\n  small4BitData = kSmall4BitData,\n  small8BitData = kSmall8BitData,\n  mini1BitMask = kMini1BitMask,\n  mini4BitData = kMini4BitData,\n  mini8BitData = kMini8BitData\n};\n# 106 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/IconStorage.h\" 3\nenum {\n  kIconFamilyType = 'icns'\n};\n\n\nstruct IconFamilyElement {\n  OSType elementType;\n  SInt32 elementSize;\n  unsigned char elementData[1];\n};\ntypedef struct IconFamilyElement IconFamilyElement;\nstruct IconFamilyResource {\n  OSType resourceType;\n  SInt32 resourceSize;\n  IconFamilyElement elements[1];\n\n};\ntypedef struct IconFamilyResource IconFamilyResource;\ntypedef IconFamilyResource * IconFamilyPtr;\ntypedef IconFamilyPtr * IconFamilyHandle;\n\n\n\nenum {\n  kTileIconVariant = 'tile',\n  kRolloverIconVariant = 'over',\n  kDropIconVariant = 'drop',\n  kOpenIconVariant = 'open',\n  kOpenDropIconVariant = 'odrp'\n};\n\n\n#pragma pack(pop)\n# 43 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/OSServices.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/SystemSound.h\" 1 3\n# 42 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/SystemSound.h\" 3\nenum {\n  kSystemSoundNoError = 0,\n  kSystemSoundUnspecifiedError = -1500,\n  kSystemSoundClientTimedOutError = -1501\n};\n\n\n\n\ntypedef UInt32 SystemSoundActionID;\ntypedef OSStatus ( * SystemSoundCompletionProcPtr)(SystemSoundActionID actionID, void *userData);\ntypedef SystemSoundCompletionProcPtr SystemSoundCompletionUPP;\n# 62 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/SystemSound.h\" 3\nextern SystemSoundCompletionUPP\nNewSystemSoundCompletionUPP(SystemSoundCompletionProcPtr userRoutine) __attribute__((deprecated));\n# 73 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/SystemSound.h\" 3\nextern void\nDisposeSystemSoundCompletionUPP(SystemSoundCompletionUPP userUPP) __attribute__((deprecated));\n# 84 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/SystemSound.h\" 3\nextern OSStatus\nInvokeSystemSoundCompletionUPP(\n  SystemSoundActionID actionID,\n  void * userData,\n  SystemSoundCompletionUPP userUPP) __attribute__((deprecated));\n# 124 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/SystemSound.h\" 3\nextern void\nAlertSoundPlay(void) __attribute__((deprecated));\n# 153 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/SystemSound.h\" 3\nextern void\nAlertSoundPlayCustomSound(SystemSoundActionID inAction) __attribute__((deprecated));\n# 183 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/SystemSound.h\" 3\nextern void\nSystemSoundPlay(SystemSoundActionID inAction) __attribute__((deprecated));\n# 223 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/SystemSound.h\" 3\nextern OSStatus\nSystemSoundGetActionID(\n  const FSRef * userFile,\n  SystemSoundActionID * outAction) __attribute__((deprecated));\n# 256 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/SystemSound.h\" 3\nextern OSStatus\nSystemSoundRemoveActionID(SystemSoundActionID inAction) __attribute__((deprecated));\n# 304 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/SystemSound.h\" 3\nextern OSStatus\nSystemSoundSetCompletionRoutine(\n  SystemSoundActionID inAction,\n  CFRunLoopRef inRunLoop,\n  CFStringRef inRunLoopMode,\n  SystemSoundCompletionUPP inCompletionRoutine,\n  void * inUserData) __attribute__((deprecated));\n# 340 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/SystemSound.h\" 3\nextern void\nSystemSoundRemoveCompletionRoutine(SystemSoundActionID inAction) __attribute__((deprecated));\n# 47 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/OSServices.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSTypes.h\" 1 3\n# 45 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSTypes.h\" 3\n#pragma pack(push, 2)\n\n\n\n\n\nenum {\n  errWSInternalError = -65793L,\n  errWSTransportError = -65794L,\n  errWSParseError = -65795L,\n  errWSTimeoutError = -65796L\n};\n# 70 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSTypes.h\" 3\nenum WSTypeID {\n\n\n\n\n  eWSUnknownType = 0,\n\n\n\n\n  eWSNullType = 1,\n\n\n\n\n  eWSBooleanType = 2,\n\n\n\n\n  eWSIntegerType = 3,\n\n\n\n\n  eWSDoubleType = 4,\n\n\n\n\n  eWSStringType = 5,\n\n\n\n\n  eWSDateType = 6,\n\n\n\n\n  eWSDataType = 7,\n\n\n\n\n  eWSArrayType = 8,\n\n\n\n\n  eWSDictionaryType = 9\n};\ntypedef enum WSTypeID WSTypeID;\n\ntypedef void * ( * WSClientContextRetainCallBackProcPtr)(void * info);\ntypedef void ( * WSClientContextReleaseCallBackProcPtr)(void * info);\ntypedef CFStringRef ( * WSClientContextCopyDescriptionCallBackProcPtr)(void * info);\n# 137 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSTypes.h\" 3\nstruct WSClientContext {\n\n\n\n\n  CFIndex version;\n\n\n\n\n  void * info;\n\n\n\n\n  WSClientContextRetainCallBackProcPtr retain;\n\n\n\n\n  WSClientContextReleaseCallBackProcPtr release;\n\n\n\n\n  WSClientContextCopyDescriptionCallBackProcPtr copyDescription;\n};\ntypedef struct WSClientContext WSClientContext;\n# 176 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSTypes.h\" 3\nextern CFStringRef kWSXMLRPCProtocol;\nextern CFStringRef kWSSOAP1999Protocol;\nextern CFStringRef kWSSOAP2001Protocol;\n# 206 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSTypes.h\" 3\nextern WSTypeID\nWSGetWSTypeIDFromCFType(CFTypeRef ref);\n# 234 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSTypes.h\" 3\nextern CFTypeID\nWSGetCFTypeIDFromWSTypeID(WSTypeID typeID);\n\n\n\n\n\n\n\n#pragma pack(pop)\n# 51 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/OSServices.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSMethodInvocation.h\" 1 3\n# 54 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSMethodInvocation.h\" 3\nextern CFStringRef kWSMethodInvocationResult;\n\n\n\nextern CFStringRef kWSFaultString;\nextern CFStringRef kWSFaultCode;\nextern CFStringRef kWSFaultExtra;\n# 70 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSMethodInvocation.h\" 3\nextern CFStringRef kWSNetworkStreamFaultString;\nextern CFStringRef kWSStreamErrorMessage;\nextern CFStringRef kWSStreamErrorDomain;\nextern CFStringRef kWSStreamErrorError;\n# 90 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSMethodInvocation.h\" 3\nextern CFStringRef kWSHTTPMessage;\nextern CFStringRef kWSHTTPResponseMessage;\n\n\n\n\n\nextern CFStringRef kWSHTTPVersion;\nextern CFStringRef kWSHTTPExtraHeaders;\nextern CFStringRef kWSHTTPProxy;\nextern CFStringRef kWSHTTPFollowsRedirects;\n# 114 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSMethodInvocation.h\" 3\nextern CFStringRef kWSDebugOutgoingHeaders;\nextern CFStringRef kWSDebugOutgoingBody;\nextern CFStringRef kWSDebugIncomingHeaders;\nextern CFStringRef kWSDebugIncomingBody;\n\n\n\n\n\nextern CFStringRef kWSSOAPMethodNamespaceURI;\nextern CFStringRef kWSSOAPBodyEncodingStyle;\nextern CFStringRef kWSSOAPStyleDoc;\nextern CFStringRef kWSSOAPStyleRPC;\n\n\n\n\n\n\n\nextern CFStringRef kWSSOAPMessageHeaders;\n\n\n\n\n\nextern CFStringRef kWSRecordParameterOrder;\nextern CFStringRef kWSRecordNamespaceURI;\nextern CFStringRef kWSRecordType;\n\n\n\n\n\nextern CFStringRef kWSMethodInvocationResultParameterName;\n\n\n\n\n\n\nextern CFStringRef kWSMethodInvocationTimeoutValue;\n# 184 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSMethodInvocation.h\" 3\ntypedef struct OpaqueWSMethodInvocationRef* WSMethodInvocationRef;\n# 196 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSMethodInvocation.h\" 3\nextern CFTypeID\nWSMethodInvocationGetTypeID(void);\n# 233 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSMethodInvocation.h\" 3\nextern WSMethodInvocationRef\nWSMethodInvocationCreate(\n  CFURLRef url,\n  CFStringRef methodName,\n  CFStringRef protocol);\n# 265 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSMethodInvocation.h\" 3\nextern WSMethodInvocationRef\nWSMethodInvocationCreateFromSerialization(CFDataRef contract);\n# 293 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSMethodInvocation.h\" 3\nextern CFDataRef\nWSMethodInvocationCopySerialization(WSMethodInvocationRef invocation);\n# 329 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSMethodInvocation.h\" 3\nextern void\nWSMethodInvocationSetParameters(\n  WSMethodInvocationRef invocation,\n  CFDictionaryRef parameters,\n  CFArrayRef parameterOrder);\n# 366 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSMethodInvocation.h\" 3\nextern CFDictionaryRef\nWSMethodInvocationCopyParameters(\n  WSMethodInvocationRef invocation,\n  CFArrayRef * parameterOrder);\n# 406 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSMethodInvocation.h\" 3\nextern void\nWSMethodInvocationSetProperty(\n  WSMethodInvocationRef invocation,\n  CFStringRef propertyName,\n  CFTypeRef propertyValue);\n# 442 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSMethodInvocation.h\" 3\nextern CFTypeRef\nWSMethodInvocationCopyProperty(\n  WSMethodInvocationRef invocation,\n  CFStringRef propertyName);\n# 476 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSMethodInvocation.h\" 3\nextern CFDictionaryRef\nWSMethodInvocationInvoke(WSMethodInvocationRef invocation);\n# 526 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSMethodInvocation.h\" 3\ntypedef void ( * WSMethodInvocationCallBackProcPtr)(WSMethodInvocationRef invocation, void *info, CFDictionaryRef outRef);\n# 554 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSMethodInvocation.h\" 3\nextern void\nWSMethodInvocationSetCallBack(\n  WSMethodInvocationRef invocation,\n  WSMethodInvocationCallBackProcPtr clientCB,\n  WSClientContext * context);\n# 587 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSMethodInvocation.h\" 3\nextern void\nWSMethodInvocationScheduleWithRunLoop(\n  WSMethodInvocationRef invocation,\n  CFRunLoopRef runLoop,\n  CFStringRef runLoopMode);\n# 623 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSMethodInvocation.h\" 3\nextern void\nWSMethodInvocationUnscheduleFromRunLoop(\n  WSMethodInvocationRef invocation,\n  CFRunLoopRef runLoop,\n  CFStringRef runLoopMode);\n# 662 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSMethodInvocation.h\" 3\nextern Boolean\nWSMethodResultIsFault(CFDictionaryRef methodResult);\n# 701 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSMethodInvocation.h\" 3\ntypedef CFStringRef ( * WSMethodInvocationSerializationProcPtr)(WSMethodInvocationRef invocation, CFTypeRef obj, void *info);\n# 734 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSMethodInvocation.h\" 3\nextern void\nWSMethodInvocationAddSerializationOverride(\n  WSMethodInvocationRef invocation,\n  CFTypeID objType,\n  WSMethodInvocationSerializationProcPtr serializationProc,\n  WSClientContext * context);\n# 773 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSMethodInvocation.h\" 3\ntypedef CFTypeRef ( * WSMethodInvocationDeserializationProcPtr)(WSMethodInvocationRef invocation, CFXMLTreeRef msgRoot, CFXMLTreeRef deserializeRoot, void *info);\n# 810 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSMethodInvocation.h\" 3\nextern void\nWSMethodInvocationAddDeserializationOverride(\n  WSMethodInvocationRef invocation,\n  CFStringRef typeNamespace,\n  CFStringRef typeName,\n  WSMethodInvocationDeserializationProcPtr deserializationProc,\n  WSClientContext * context);\n# 55 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/OSServices.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSProtocolHandler.h\" 1 3\n# 63 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSProtocolHandler.h\" 3\ntypedef struct OpaqueWSProtocolHandlerRef* WSProtocolHandlerRef;\n# 75 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSProtocolHandler.h\" 3\nextern CFTypeID\nWSProtocolHandlerGetTypeID(void);\n# 107 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSProtocolHandler.h\" 3\nextern WSProtocolHandlerRef\nWSProtocolHandlerCreate(\n  CFAllocatorRef allocator,\n  CFStringRef protocol);\n# 149 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSProtocolHandler.h\" 3\nextern CFDictionaryRef\nWSProtocolHandlerCopyRequestDictionary(\n  WSProtocolHandlerRef ref,\n  CFDataRef data);\n# 189 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSProtocolHandler.h\" 3\nextern CFDictionaryRef\nWSProtocolHandlerCopyReplyDictionary(\n  WSProtocolHandlerRef ref,\n  CFStringRef methodName,\n  CFDataRef data);\n# 227 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSProtocolHandler.h\" 3\nextern CFDataRef\nWSProtocolHandlerCopyReplyDocument(\n  WSProtocolHandlerRef ref,\n  CFDictionaryRef methodContext,\n  CFTypeRef resultValue);\n# 265 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSProtocolHandler.h\" 3\nextern CFDataRef\nWSProtocolHandlerCopyFaultDocument(\n  WSProtocolHandlerRef ref,\n  CFDictionaryRef methodContext,\n  CFDictionaryRef faultDict);\n# 309 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSProtocolHandler.h\" 3\nextern CFDataRef\nWSProtocolHandlerCopyRequestDocument(\n  WSProtocolHandlerRef ref,\n  CFStringRef methodName,\n  CFDictionaryRef methodParams,\n  CFArrayRef methodParamOrder,\n  CFDictionaryRef methodExtras);\n# 347 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSProtocolHandler.h\" 3\nextern CFTypeRef\nWSProtocolHandlerCopyProperty(\n  WSProtocolHandlerRef ref,\n  CFStringRef propertyName);\n# 378 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSProtocolHandler.h\" 3\nextern void\nWSProtocolHandlerSetProperty(\n  WSProtocolHandlerRef ref,\n  CFStringRef propertyName,\n  CFTypeRef propertyValue);\n# 421 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSProtocolHandler.h\" 3\ntypedef CFStringRef ( * WSProtocolHandlerSerializationProcPtr)(WSProtocolHandlerRef protocol, CFTypeRef obj, void *info);\n# 454 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSProtocolHandler.h\" 3\nextern void\nWSProtocolHandlerSetSerializationOverride(\n  WSProtocolHandlerRef protocol,\n  CFTypeID objType,\n  WSProtocolHandlerSerializationProcPtr serializationProc,\n  WSClientContext * context);\n# 494 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSProtocolHandler.h\" 3\ntypedef CFTypeRef ( * WSProtocolHandlerDeserializationProcPtr)(WSProtocolHandlerRef protocol, CFXMLTreeRef msgRoot, CFXMLTreeRef deserializeRoot, void *info);\n# 531 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/WSProtocolHandler.h\" 3\nextern void\nWSProtocolHandlerSetDeserializationOverride(\n  WSProtocolHandlerRef protocol,\n  CFStringRef typeNamespace,\n  CFStringRef typeName,\n  WSProtocolHandlerDeserializationProcPtr deserializationProc,\n  WSClientContext * context);\n# 59 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/OSServices.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/Power.h\" 1 3\n# 47 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/Power.h\" 3\n#pragma pack(push, 2)\n\nenum {\n\n  kSleepRequest = 1,\n  kSleepDemand = 2,\n  kSleepWakeUp = 3,\n  kSleepRevoke = 4,\n  kSleepUnlock = 4,\n  kSleepDeny = 5,\n  kSleepNow = 6,\n  kDozeDemand = 7,\n  kDozeWakeUp = 8,\n  kDozeRequest = 9,\n  kEnterStandby = 10,\n  kEnterRun = 11,\n  kSuspendRequest = 12,\n  kSuspendDemand = 13,\n  kSuspendRevoke = 14,\n  kSuspendWakeUp = 15,\n  kGetPowerLevel = 16,\n  kSetPowerLevel = 17,\n  kDeviceInitiatedWake = 18,\n  kWakeToDoze = 19,\n  kDozeToFullWakeUp = 20,\n  kGetPowerInfo = 21,\n  kGetWakeOnNetInfo = 22,\n  kSuspendWakeToDoze = 23,\n  kEnterIdle = 24,\n  kStillIdle = 25,\n  kExitIdle = 26\n};\n\nenum {\n\n  noCalls = 1,\n  noRequest = 2,\n  slpQType = 16,\n  sleepQType = 16\n};\n# 95 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/Power.h\" 3\nenum {\n  OverallAct = 0,\n  UsrActivity = 1,\n  NetActivity = 2,\n  HDActivity = 3,\n  IdleActivity = 4\n};\n\ntypedef struct SleepQRec SleepQRec;\ntypedef SleepQRec * SleepQRecPtr;\ntypedef long ( * SleepQProcPtr)(long message, SleepQRecPtr qRecPtr);\ntypedef SleepQProcPtr SleepQUPP;\n# 115 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/Power.h\" 3\nextern SleepQUPP\nNewSleepQUPP(SleepQProcPtr userRoutine) ;\n# 126 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/Power.h\" 3\nextern void\nDisposeSleepQUPP(SleepQUPP userUPP) ;\n# 137 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/Power.h\" 3\nextern long\nInvokeSleepQUPP(\n  long message,\n  SleepQRecPtr qRecPtr,\n  SleepQUPP userUPP) ;\n# 155 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/Power.h\" 3\nstruct SleepQRec {\n  SleepQRecPtr sleepQLink;\n  short sleepQType;\n  SleepQUPP sleepQProc;\n  short sleepQFlags;\n};\n# 177 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/Power.h\" 3\nextern long\nGetCPUSpeed(void) ;\n# 197 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/Power.h\" 3\nextern void\nSleepQInstall(SleepQRecPtr qRecPtr) ;\n# 217 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/Power.h\" 3\nextern void\nSleepQRemove(SleepQRecPtr qRecPtr) ;\n# 236 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/Power.h\" 3\nextern short\nMaximumProcessorSpeed(void) ;\n# 256 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/Power.h\" 3\nextern short\nMinimumProcessorSpeed(void) ;\n# 278 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/Power.h\" 3\nextern short\nCurrentProcessorSpeed(void) ;\n# 296 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/Power.h\" 3\nextern short\nBatteryCount(void) ;\n# 343 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/Power.h\" 3\nextern OSErr\nUpdateSystemActivity(UInt8 activity) ;\n# 425 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/Power.h\" 3\ntypedef unsigned long RegEntryID;\ntypedef OSStatus ( * PowerHandlerProcPtr)(UInt32 message, void *param, UInt32 refCon, RegEntryID *regEntryID);\ntypedef PowerHandlerProcPtr PowerHandlerUPP;\n# 668 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/Power.h\" 3\ntypedef struct HDQueueElement HDQueueElement;\ntypedef struct PMgrQueueElement PMgrQueueElement;\ntypedef void ( * HDSpindownProcPtr)(HDQueueElement * theElement);\ntypedef void ( * PMgrStateChangeProcPtr)(PMgrQueueElement *theElement, long stateBits);\ntypedef HDSpindownProcPtr HDSpindownUPP;\ntypedef PMgrStateChangeProcPtr PMgrStateChangeUPP;\n# 1428 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/Power.h\" 3\nextern HDSpindownUPP\nNewHDSpindownUPP(HDSpindownProcPtr userRoutine) ;\n# 1439 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/Power.h\" 3\nextern PMgrStateChangeUPP\nNewPMgrStateChangeUPP(PMgrStateChangeProcPtr userRoutine) ;\n# 1450 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/Power.h\" 3\nextern void\nDisposeHDSpindownUPP(HDSpindownUPP userUPP) ;\n# 1461 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/Power.h\" 3\nextern void\nDisposePMgrStateChangeUPP(PMgrStateChangeUPP userUPP) ;\n# 1472 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/Power.h\" 3\nextern void\nInvokeHDSpindownUPP(\n  HDQueueElement * theElement,\n  HDSpindownUPP userUPP) ;\n# 1485 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/Power.h\" 3\nextern void\nInvokePMgrStateChangeUPP(\n  PMgrQueueElement * theElement,\n  long stateBits,\n  PMgrStateChangeUPP userUPP) ;\n# 1510 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/Power.h\" 3\n#pragma pack(pop)\n# 63 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/OSServices.h\" 2 3\n# 77 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/OSServices.h\" 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/NSLCore.h\" 1 3\n# 34 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/NSLCore.h\" 3\n#pragma pack(push, 2)\n\n\nenum {\n  kNSLMinSystemVersion = 0x0900,\n  kNSLMinOTVersion = 0x0130\n};\n\nenum {\n  kNSLDefaultListSize = 256\n};\n\nenum {\n  kNSLURLDelimiter = ','\n};\n\n\n\n\nenum {\n  kNSLNoContext = 0\n};\n\nstruct NSLError {\n  OSStatus theErr;\n  UInt32 theContext;\n};\ntypedef struct NSLError NSLError;\ntypedef NSLError * NSLErrorPtr;\nenum {\n\n\n\n\n  kNSLDuplicateSearchInProgress = 100,\n  kNSLUserCanceled = userCanceledErr,\n\n  kNSLInvalidEnumeratorRef = 0\n};\n\ntypedef UInt16 NSLSearchState;\nenum {\n\n  kNSLSearchStateBufferFull = 1,\n  kNSLSearchStateOnGoing = 2,\n  kNSLSearchStateComplete = 3,\n  kNSLSearchStateStalled = 4,\n  kNSLWaitingForContinue = 5\n};\n\ntypedef UInt32 NSLEventCode;\nenum {\n\n  kNSLServicesLookupDataEvent = 6,\n  kNSLNeighborhoodLookupDataEvent = 7,\n  kNSLNewDataEvent = 8,\n  kNSLContinueLookupEvent = 9\n};\n\n\ntypedef UInt32 NSLClientRef;\ntypedef UInt32 NSLRequestRef;\ntypedef UInt32 NSLOneBasedIndex;\ntypedef char * NSLPath;\ntypedef char * NSLServiceType;\ntypedef Handle NSLServicesList;\ntypedef unsigned char * NSLNeighborhood;\n\n\n\n\n\n\nstruct NSLClientAsyncInfo {\n  void * clientContextPtr;\n  void * mgrContextPtr;\n  char * resultBuffer;\n  long bufferLen;\n  long maxBufferSize;\n  UInt32 startTime;\n  UInt32 intStartTime;\n  UInt32 maxSearchTime;\n  UInt32 alertInterval;\n  UInt32 totalItems;\n  UInt32 alertThreshold;\n  NSLSearchState searchState;\n  NSLError searchResult;\n  NSLEventCode searchDataType;\n\n};\ntypedef struct NSLClientAsyncInfo NSLClientAsyncInfo;\ntypedef NSLClientAsyncInfo * NSLClientAsyncInfoPtr;\n\n\nstruct NSLPluginAsyncInfo {\n  void * mgrContextPtr;\n  void * pluginContextPtr;\n  void * pluginPtr;\n  char * resultBuffer;\n  long bufferLen;\n  long maxBufferSize;\n  UInt32 maxSearchTime;\n  UInt32 reserved1;\n  UInt32 reserved2;\n  UInt32 reserved3;\n  NSLClientRef clientRef;\n  NSLRequestRef requestRef;\n  NSLSearchState searchState;\n  OSStatus searchResult;\n};\ntypedef struct NSLPluginAsyncInfo NSLPluginAsyncInfo;\ntypedef NSLPluginAsyncInfo * NSLPluginAsyncInfoPtr;\n\n\ntypedef void ( * NSLMgrNotifyProcPtr)(NSLPluginAsyncInfo * thePluginAsyncInfo);\n\n\ntypedef void ( * NSLClientNotifyProcPtr)(NSLClientAsyncInfo * theClientAsyncInfo);\ntypedef NSLMgrNotifyProcPtr NSLMgrNotifyUPP;\ntypedef NSLClientNotifyProcPtr NSLClientNotifyUPP;\n# 162 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/NSLCore.h\" 3\nextern NSLMgrNotifyUPP\nNewNSLMgrNotifyUPP(NSLMgrNotifyProcPtr userRoutine) __attribute__((deprecated));\n# 173 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/NSLCore.h\" 3\nextern NSLClientNotifyUPP\nNewNSLClientNotifyUPP(NSLClientNotifyProcPtr userRoutine) __attribute__((deprecated));\n# 184 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/NSLCore.h\" 3\nextern void\nDisposeNSLMgrNotifyUPP(NSLMgrNotifyUPP userUPP) __attribute__((deprecated));\n# 195 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/NSLCore.h\" 3\nextern void\nDisposeNSLClientNotifyUPP(NSLClientNotifyUPP userUPP) __attribute__((deprecated));\n# 206 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/NSLCore.h\" 3\nextern void\nInvokeNSLMgrNotifyUPP(\n  NSLPluginAsyncInfo * thePluginAsyncInfo,\n  NSLMgrNotifyUPP userUPP) __attribute__((deprecated));\n# 219 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/NSLCore.h\" 3\nextern void\nInvokeNSLClientNotifyUPP(\n  NSLClientAsyncInfo * theClientAsyncInfo,\n  NSLClientNotifyUPP userUPP) __attribute__((deprecated));\n# 247 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/NSLCore.h\" 3\nstruct NSLTypedData {\n  unsigned long dataType;\n  unsigned long lengthOfData;\n\n\n};\ntypedef struct NSLTypedData NSLTypedData;\ntypedef NSLTypedData * NSLTypedDataPtr;\n\n\n\n\n\n\n\nstruct NSLServicesListHeader {\n  unsigned long numServices;\n  unsigned long logicalLen;\n\n\n};\ntypedef struct NSLServicesListHeader NSLServicesListHeader;\ntypedef NSLServicesListHeader * NSLServicesListHeaderPtr;\n# 285 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/NSLCore.h\" 3\nstruct NSLPluginData {\n  long reserved1;\n  long reserved2;\n  long reserved3;\n  Boolean supportsRegistration;\n  Boolean isPurgeable;\n  UInt16 totalLen;\n  UInt16 dataTypeOffset;\n  UInt16 serviceListOffset;\n  UInt16 protocolListOffset;\n  UInt16 commentStringOffset;\n\n\n};\ntypedef struct NSLPluginData NSLPluginData;\ntypedef NSLPluginData * NSLPluginDataPtr;\n# 954 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/NSLCore.h\" 3\n#pragma pack(pop)\n# 78 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/OSServices.h\" 2 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/SecurityCore.h\" 1 3\n# 25 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/SecurityCore.h\" 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 1 3\n# 51 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\n#pragma pack(push, 2)\n# 75 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\ntypedef SecKeychainRef KCRef;\ntypedef SecKeychainItemRef KCItemRef;\ntypedef SecKeychainSearchRef KCSearchRef;\ntypedef SecKeychainAttribute KCAttribute;\ntypedef SecKeychainAttributeList KCAttributeList;\ntypedef SecKeychainAttrType KCAttrType;\ntypedef SecKeychainStatus KCStatus;\ntypedef UInt16 KCEvent;\nenum {\n  kIdleKCEvent = 0,\n  kLockKCEvent = 1,\n  kUnlockKCEvent = 2,\n  kAddKCEvent = 3,\n  kDeleteKCEvent = 4,\n  kUpdateKCEvent = 5,\n  kPasswordChangedKCEvent = 6,\n  kSystemKCEvent = 8,\n  kDefaultChangedKCEvent = 9,\n  kDataAccessKCEvent = 10,\n  kKeychainListChangedKCEvent = 11\n};\n\ntypedef UInt16 KCEventMask;\nenum {\n  kIdleKCEventMask = 1 << kIdleKCEvent,\n  kLockKCEventMask = 1 << kLockKCEvent,\n  kUnlockKCEventMask = 1 << kUnlockKCEvent,\n  kAddKCEventMask = 1 << kAddKCEvent,\n  kDeleteKCEventMask = 1 << kDeleteKCEvent,\n  kUpdateKCEventMask = 1 << kUpdateKCEvent,\n  kPasswordChangedKCEventMask = 1 << kPasswordChangedKCEvent,\n  kSystemEventKCEventMask = 1 << kSystemKCEvent,\n  kDefaultChangedKCEventMask = 1 << kDefaultChangedKCEvent,\n  kDataAccessKCEventMask = 1 << kDataAccessKCEvent,\n  kEveryKCEventMask = 0xFFFF\n};\n\ntypedef UInt8 AFPServerSignature[16];\ntypedef UInt8 KCPublicKeyHash[20];\nstruct KCCallbackInfo {\n  UInt32 version;\n  KCItemRef item;\n  SInt32 processID[2];\n  SInt32 event[4];\n  KCRef keychain;\n};\ntypedef struct KCCallbackInfo KCCallbackInfo;\nenum {\n  kUnlockStateKCStatus = 1,\n  kRdPermKCStatus = 2,\n  kWrPermKCStatus = 4\n};\n\n\nenum {\n  kCertificateKCItemClass = 'cert',\n  kAppleSharePasswordKCItemClass = 'ashp',\n  kInternetPasswordKCItemClass = 'inet',\n  kGenericPasswordKCItemClass = 'genp'\n};\n\n\ntypedef FourCharCode KCItemClass;\nenum {\n\n  kClassKCItemAttr = 'clas',\n  kCreationDateKCItemAttr = 'cdat',\n  kModDateKCItemAttr = 'mdat',\n  kDescriptionKCItemAttr = 'desc',\n  kCommentKCItemAttr = 'icmt',\n  kCreatorKCItemAttr = 'crtr',\n  kTypeKCItemAttr = 'type',\n  kScriptCodeKCItemAttr = 'scrp',\n  kLabelKCItemAttr = 'labl',\n  kInvisibleKCItemAttr = 'invi',\n  kNegativeKCItemAttr = 'nega',\n  kCustomIconKCItemAttr = 'cusi',\n  kAccountKCItemAttr = 'acct',\n\n  kServiceKCItemAttr = 'svce',\n  kGenericKCItemAttr = 'gena',\n\n  kSecurityDomainKCItemAttr = 'sdmn',\n  kServerKCItemAttr = 'srvr',\n  kAuthTypeKCItemAttr = 'atyp',\n  kPortKCItemAttr = 'port',\n  kPathKCItemAttr = 'path',\n\n  kVolumeKCItemAttr = 'vlme',\n  kAddressKCItemAttr = 'addr',\n  kSignatureKCItemAttr = 'ssig',\n\n  kProtocolKCItemAttr = 'ptcl',\n\n  kSubjectKCItemAttr = 'subj',\n  kCommonNameKCItemAttr = 'cn  ',\n  kIssuerKCItemAttr = 'issu',\n  kSerialNumberKCItemAttr = 'snbr',\n  kEMailKCItemAttr = 'mail',\n  kPublicKeyHashKCItemAttr = 'hpky',\n  kIssuerURLKCItemAttr = 'iurl',\n\n  kEncryptKCItemAttr = 'encr',\n  kDecryptKCItemAttr = 'decr',\n  kSignKCItemAttr = 'sign',\n  kVerifyKCItemAttr = 'veri',\n  kWrapKCItemAttr = 'wrap',\n  kUnwrapKCItemAttr = 'unwr',\n  kStartDateKCItemAttr = 'sdat',\n  kEndDateKCItemAttr = 'edat'\n};\n\ntypedef FourCharCode KCItemAttr;\nenum {\n  kKCAuthTypeNTLM = 'ntlm',\n  kKCAuthTypeMSN = 'msna',\n  kKCAuthTypeDPA = 'dpaa',\n  kKCAuthTypeRPA = 'rpaa',\n  kKCAuthTypeHTTPDigest = 'httd',\n  kKCAuthTypeDefault = 'dflt'\n};\n\ntypedef FourCharCode KCAuthType;\nenum {\n  kKCProtocolTypeFTP = 'ftp ',\n  kKCProtocolTypeFTPAccount = 'ftpa',\n  kKCProtocolTypeHTTP = 'http',\n  kKCProtocolTypeIRC = 'irc ',\n  kKCProtocolTypeNNTP = 'nntp',\n  kKCProtocolTypePOP3 = 'pop3',\n  kKCProtocolTypeSMTP = 'smtp',\n  kKCProtocolTypeSOCKS = 'sox ',\n  kKCProtocolTypeIMAP = 'imap',\n  kKCProtocolTypeLDAP = 'ldap',\n  kKCProtocolTypeAppleTalk = 'atlk',\n  kKCProtocolTypeAFP = 'afp ',\n  kKCProtocolTypeTelnet = 'teln'\n};\n\ntypedef FourCharCode KCProtocolType;\ntypedef UInt32 KCCertAddOptions;\nenum {\n  kSecOptionReserved = 0x000000FF,\n  kCertUsageShift = 8,\n  kCertUsageSigningAdd = 1 << (kCertUsageShift + 0),\n  kCertUsageSigningAskAndAdd = 1 << (kCertUsageShift + 1),\n  kCertUsageVerifyAdd = 1 << (kCertUsageShift + 2),\n  kCertUsageVerifyAskAndAdd = 1 << (kCertUsageShift + 3),\n  kCertUsageEncryptAdd = 1 << (kCertUsageShift + 4),\n  kCertUsageEncryptAskAndAdd = 1 << (kCertUsageShift + 5),\n  kCertUsageDecryptAdd = 1 << (kCertUsageShift + 6),\n  kCertUsageDecryptAskAndAdd = 1 << (kCertUsageShift + 7),\n  kCertUsageKeyExchAdd = 1 << (kCertUsageShift + 8),\n  kCertUsageKeyExchAskAndAdd = 1 << (kCertUsageShift + 9),\n  kCertUsageRootAdd = 1 << (kCertUsageShift + 10),\n  kCertUsageRootAskAndAdd = 1 << (kCertUsageShift + 11),\n  kCertUsageSSLAdd = 1 << (kCertUsageShift + 12),\n  kCertUsageSSLAskAndAdd = 1 << (kCertUsageShift + 13),\n  kCertUsageAllAdd = 0x7FFFFF00\n};\n\ntypedef UInt16 KCVerifyStopOn;\nenum {\n  kPolicyKCStopOn = 0,\n  kNoneKCStopOn = 1,\n  kFirstPassKCStopOn = 2,\n  kFirstFailKCStopOn = 3\n};\n\ntypedef UInt32 KCCertSearchOptions;\nenum {\n  kCertSearchShift = 0,\n  kCertSearchSigningIgnored = 0,\n  kCertSearchSigningAllowed = 1 << (kCertSearchShift + 0),\n  kCertSearchSigningDisallowed = 1 << (kCertSearchShift + 1),\n  kCertSearchSigningMask = ((kCertSearchSigningAllowed) | (kCertSearchSigningDisallowed)),\n  kCertSearchVerifyIgnored = 0,\n  kCertSearchVerifyAllowed = 1 << (kCertSearchShift + 2),\n  kCertSearchVerifyDisallowed = 1 << (kCertSearchShift + 3),\n  kCertSearchVerifyMask = ((kCertSearchVerifyAllowed) | (kCertSearchVerifyDisallowed)),\n  kCertSearchEncryptIgnored = 0,\n  kCertSearchEncryptAllowed = 1 << (kCertSearchShift + 4),\n  kCertSearchEncryptDisallowed = 1 << (kCertSearchShift + 5),\n  kCertSearchEncryptMask = ((kCertSearchEncryptAllowed) | (kCertSearchEncryptDisallowed)),\n  kCertSearchDecryptIgnored = 0,\n  kCertSearchDecryptAllowed = 1 << (kCertSearchShift + 6),\n  kCertSearchDecryptDisallowed = 1 << (kCertSearchShift + 7),\n  kCertSearchDecryptMask = ((kCertSearchDecryptAllowed) | (kCertSearchDecryptDisallowed)),\n  kCertSearchWrapIgnored = 0,\n  kCertSearchWrapAllowed = 1 << (kCertSearchShift + 8),\n  kCertSearchWrapDisallowed = 1 << (kCertSearchShift + 9),\n  kCertSearchWrapMask = ((kCertSearchWrapAllowed) | (kCertSearchWrapDisallowed)),\n  kCertSearchUnwrapIgnored = 0,\n  kCertSearchUnwrapAllowed = 1 << (kCertSearchShift + 10),\n  kCertSearchUnwrapDisallowed = 1 << (kCertSearchShift + 11),\n  kCertSearchUnwrapMask = ((kCertSearchUnwrapAllowed) | (kCertSearchUnwrapDisallowed)),\n  kCertSearchPrivKeyRequired = 1 << (kCertSearchShift + 12),\n  kCertSearchAny = 0\n};\n\n\nenum {\n  kAnyPort = 0\n};\n\nenum {\n  kAnyProtocol = 0,\n  kAnyAuthType = 0\n};\n# 297 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern OSStatus\nKCGetKeychainManagerVersion(UInt32 * returnVers);\n# 328 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern OSStatus\nKCSetInteractionAllowed(Boolean state) __attribute__((deprecated));\n# 343 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern Boolean\nKCIsInteractionAllowed(void) __attribute__((deprecated));\n# 379 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern OSStatus\nKCMakeKCRefFromFSRef(\n  FSRef * keychainFSRef,\n  KCRef * keychain) __attribute__((deprecated));\n# 396 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern OSStatus\nKCMakeKCRefFromAlias(\n  AliasHandle keychainAlias,\n  KCRef * keychain) __attribute__((deprecated));\n# 413 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern OSStatus\nKCMakeAliasFromKCRef(\n  KCRef keychain,\n  AliasHandle * keychainAlias) __attribute__((deprecated));\n# 430 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern OSStatus\nKCReleaseKeychain(KCRef * keychain) __attribute__((deprecated));\n# 446 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern OSStatus\nKCGetDefaultKeychain(KCRef * keychain) __attribute__((deprecated));\n# 461 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern OSStatus\nKCSetDefaultKeychain(KCRef keychain) __attribute__((deprecated));\n# 477 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern OSStatus\nKCGetStatus(\n  KCRef keychain,\n  UInt32 * keychainStatus) __attribute__((deprecated));\n# 494 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern OSStatus\nKCGetKeychain(\n  KCItemRef item,\n  KCRef * keychain) __attribute__((deprecated));\n# 511 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern OSStatus\nKCGetKeychainName(\n  KCRef keychain,\n  StringPtr keychainName) __attribute__((deprecated));\n# 529 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern UInt16\nKCCountKeychains(void) __attribute__((deprecated));\n# 544 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern OSStatus\nKCGetIndKeychain(\n  UInt16 index,\n  KCRef * keychain) __attribute__((deprecated));\n\n\ntypedef OSStatus ( * KCCallbackProcPtr)(KCEvent keychainEvent, KCCallbackInfo *info, void *userContext);\ntypedef KCCallbackProcPtr KCCallbackUPP;\n# 560 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern KCCallbackUPP\nNewKCCallbackUPP(KCCallbackProcPtr userRoutine) __attribute__((deprecated));\n# 571 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern void\nDisposeKCCallbackUPP(KCCallbackUPP userUPP) __attribute__((deprecated));\n# 582 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern OSStatus\nInvokeKCCallbackUPP(\n  KCEvent keychainEvent,\n  KCCallbackInfo * info,\n  void * userContext,\n  KCCallbackUPP userUPP) __attribute__((deprecated));\n# 613 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern OSStatus\nKCFindAppleSharePassword(\n  AFPServerSignature * serverSignature,\n  ConstStringPtr serverAddress,\n  ConstStringPtr serverName,\n  ConstStringPtr volumeName,\n  ConstStringPtr accountName,\n  UInt32 maxLength,\n  void * passwordData,\n  UInt32 * actualLength,\n  KCItemRef * item) __attribute__((deprecated));\n# 637 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern OSStatus\nKCFindInternetPassword(\n  ConstStringPtr serverName,\n  ConstStringPtr securityDomain,\n  ConstStringPtr accountName,\n  UInt16 port,\n  OSType protocol,\n  OSType authType,\n  UInt32 maxLength,\n  void * passwordData,\n  UInt32 * actualLength,\n  KCItemRef * item) __attribute__((deprecated));\n# 662 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern OSStatus\nKCFindInternetPasswordWithPath(\n  ConstStringPtr serverName,\n  ConstStringPtr securityDomain,\n  ConstStringPtr accountName,\n  ConstStringPtr path,\n  UInt16 port,\n  OSType protocol,\n  OSType authType,\n  UInt32 maxLength,\n  void * passwordData,\n  UInt32 * actualLength,\n  KCItemRef * item) __attribute__((deprecated));\n# 688 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern OSStatus\nKCFindGenericPassword(\n  ConstStringPtr serviceName,\n  ConstStringPtr accountName,\n  UInt32 maxLength,\n  void * passwordData,\n  UInt32 * actualLength,\n  KCItemRef * item) __attribute__((deprecated));\n# 710 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern OSStatus\nKCAddCallback(\n  KCCallbackUPP callbackProc,\n  KCEventMask eventMask,\n  void * userContext) __attribute__((deprecated));\n# 728 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern OSStatus\nKCRemoveCallback(KCCallbackUPP callbackProc) __attribute__((deprecated));\n# 744 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern OSStatus\nKCNewItem(\n  KCItemClass itemClass,\n  OSType itemCreator,\n  UInt32 length,\n  const void * data,\n  KCItemRef * item) __attribute__((deprecated));\n# 764 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern OSStatus\nKCSetAttribute(\n  KCItemRef item,\n  KCAttribute * attr) __attribute__((deprecated));\n# 781 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern OSStatus\nKCGetAttribute(\n  KCItemRef item,\n  KCAttribute * attr,\n  UInt32 * actualLength) __attribute__((deprecated));\n# 799 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern OSStatus\nKCSetData(\n  KCItemRef item,\n  UInt32 length,\n  const void * data) __attribute__((deprecated));\n# 818 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern OSStatus\nKCUpdateItem(KCItemRef item) __attribute__((deprecated));\n# 833 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern OSStatus\nKCReleaseItem(KCItemRef * item) __attribute__((deprecated));\n# 848 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern OSStatus\nKCCopyItem(\n  KCItemRef item,\n  KCRef destKeychain,\n  KCItemRef * copy) __attribute__((deprecated));\n# 868 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern OSStatus\nKCFindFirstItem(\n  KCRef keychain,\n  const KCAttributeList * attrList,\n  KCSearchRef * search,\n  KCItemRef * item) __attribute__((deprecated));\n# 887 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern OSStatus\nKCFindNextItem(\n  KCSearchRef search,\n  KCItemRef * item) __attribute__((deprecated));\n# 904 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern OSStatus\nKCReleaseSearch(KCSearchRef * search) __attribute__((deprecated));\n# 920 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern OSStatus\nKCDeleteItem(KCItemRef item) __attribute__((deprecated));\n# 935 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern OSStatus\nKCGetData(\n  KCItemRef item,\n  UInt32 maxLength,\n  void * data,\n  UInt32 * actualLength) __attribute__((deprecated));\n# 955 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern OSStatus\nKCLock(KCRef keychain) __attribute__((deprecated));\n# 971 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern OSStatus\nkcgetkeychainname(\n  KCRef keychain,\n  char * keychainName) __attribute__((deprecated));\n# 988 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern OSStatus\nkcfindapplesharepassword(\n  AFPServerSignature * serverSignature,\n  const char * serverAddress,\n  const char * serverName,\n  const char * volumeName,\n  const char * accountName,\n  UInt32 maxLength,\n  void * passwordData,\n  UInt32 * actualLength,\n  KCItemRef * item) __attribute__((deprecated));\n# 1012 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern OSStatus\nkcfindinternetpassword(\n  const char * serverName,\n  const char * securityDomain,\n  const char * accountName,\n  UInt16 port,\n  OSType protocol,\n  OSType authType,\n  UInt32 maxLength,\n  void * passwordData,\n  UInt32 * actualLength,\n  KCItemRef * item) __attribute__((deprecated));\n# 1037 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern OSStatus\nkcfindinternetpasswordwithpath(\n  const char * serverName,\n  const char * securityDomain,\n  const char * accountName,\n  const char * path,\n  UInt16 port,\n  OSType protocol,\n  OSType authType,\n  UInt32 maxLength,\n  void * passwordData,\n  UInt32 * actualLength,\n  KCItemRef * item) __attribute__((deprecated));\n# 1063 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/KeychainCore.h\" 3\nextern OSStatus\nkcfindgenericpassword(\n  const char * serviceName,\n  const char * accountName,\n  UInt32 maxLength,\n  void * passwordData,\n  UInt32 * actualLength,\n  KCItemRef * item) __attribute__((deprecated));\n\n\n\n#pragma pack(pop)\n# 26 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/SecurityCore.h\" 2 3\n# 79 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/OSServices.h\" 2 3\n# 30 \"/System/Library/Frameworks/CoreServices.framework/Headers/CoreServices.h\" 2 3\n\n\n\n\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetwork.h\" 1 3\n# 23 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetwork.h\" 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetworkDefs.h\" 1 3\n# 24 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetwork.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetworkErrors.h\" 1 3\n# 18 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetworkErrors.h\" 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetworkDefs.h\" 1 3\n# 19 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetworkErrors.h\" 2 3\n# 53 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetworkErrors.h\" 3\nextern const CFStringRef kCFErrorDomainCFNetwork __attribute__((visibility(\"default\")));\n# 67 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetworkErrors.h\" 3\nextern const CFStringRef kCFErrorDomainWinSock __attribute__((visibility(\"default\")));\n# 77 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetworkErrors.h\" 3\nenum CFNetworkErrors {\n  kCFHostErrorHostNotFound = 1,\n  kCFHostErrorUnknown = 2,\n\n  kCFSOCKSErrorUnknownClientVersion = 100,\n  kCFSOCKSErrorUnsupportedServerVersion = 101,\n\n  kCFSOCKS4ErrorRequestFailed = 110,\n  kCFSOCKS4ErrorIdentdFailed = 111,\n  kCFSOCKS4ErrorIdConflict = 112,\n  kCFSOCKS4ErrorUnknownStatusCode = 113,\n\n  kCFSOCKS5ErrorBadState = 120,\n  kCFSOCKS5ErrorBadResponseAddr = 121,\n  kCFSOCKS5ErrorBadCredentials = 122,\n  kCFSOCKS5ErrorUnsupportedNegotiationMethod = 123,\n  kCFSOCKS5ErrorNoAcceptableMethod = 124,\n\n  kCFFTPErrorUnexpectedStatusCode = 200,\n\n  kCFErrorHTTPAuthenticationTypeUnsupported = 300,\n  kCFErrorHTTPBadCredentials = 301,\n  kCFErrorHTTPConnectionLost = 302,\n  kCFErrorHTTPParseFailure = 303,\n  kCFErrorHTTPRedirectionLoopDetected = 304,\n  kCFErrorHTTPBadURL = 305,\n  kCFErrorHTTPProxyConnectionFailure = 306,\n  kCFErrorHTTPBadProxyCredentials = 307,\n  kCFErrorPACFileError = 308,\n  kCFErrorPACFileAuth = 309,\n  kCFErrorHTTPSProxyConnectionFailure = 310,\n\n\n  kCFURLErrorUnknown = -998,\n  kCFURLErrorCancelled = -999,\n  kCFURLErrorBadURL = -1000,\n  kCFURLErrorTimedOut = -1001,\n  kCFURLErrorUnsupportedURL = -1002,\n  kCFURLErrorCannotFindHost = -1003,\n  kCFURLErrorCannotConnectToHost = -1004,\n  kCFURLErrorNetworkConnectionLost = -1005,\n  kCFURLErrorDNSLookupFailed = -1006,\n  kCFURLErrorHTTPTooManyRedirects = -1007,\n  kCFURLErrorResourceUnavailable = -1008,\n  kCFURLErrorNotConnectedToInternet = -1009,\n  kCFURLErrorRedirectToNonExistentLocation = -1010,\n  kCFURLErrorBadServerResponse = -1011,\n  kCFURLErrorUserCancelledAuthentication = -1012,\n  kCFURLErrorUserAuthenticationRequired = -1013,\n  kCFURLErrorZeroByteResource = -1014,\n  kCFURLErrorCannotDecodeRawData = -1015,\n  kCFURLErrorCannotDecodeContentData = -1016,\n  kCFURLErrorCannotParseResponse = -1017,\n  kCFURLErrorInternationalRoamingOff = -1018,\n  kCFURLErrorCallIsActive = -1019,\n  kCFURLErrorDataNotAllowed = -1020,\n  kCFURLErrorRequestBodyStreamExhausted = -1021,\n  kCFURLErrorFileDoesNotExist = -1100,\n  kCFURLErrorFileIsDirectory = -1101,\n  kCFURLErrorNoPermissionsToReadFile = -1102,\n  kCFURLErrorDataLengthExceedsMaximum = -1103,\n\n  kCFURLErrorSecureConnectionFailed = -1200,\n  kCFURLErrorServerCertificateHasBadDate = -1201,\n  kCFURLErrorServerCertificateUntrusted = -1202,\n  kCFURLErrorServerCertificateHasUnknownRoot = -1203,\n  kCFURLErrorServerCertificateNotYetValid = -1204,\n  kCFURLErrorClientCertificateRejected = -1205,\n  kCFURLErrorClientCertificateRequired = -1206,\n  kCFURLErrorCannotLoadFromNetwork = -2000,\n\n  kCFURLErrorCannotCreateFile = -3000,\n  kCFURLErrorCannotOpenFile = -3001,\n  kCFURLErrorCannotCloseFile = -3002,\n  kCFURLErrorCannotWriteToFile = -3003,\n  kCFURLErrorCannotRemoveFile = -3004,\n  kCFURLErrorCannotMoveFile = -3005,\n  kCFURLErrorDownloadDecodingFailedMidStream = -3006,\n  kCFURLErrorDownloadDecodingFailedToComplete = -3007,\n\n\n  kCFHTTPCookieCannotParseCookieFile = -4000,\n\n\n  kCFNetServiceErrorUnknown = -72000L,\n  kCFNetServiceErrorCollision = -72001L,\n  kCFNetServiceErrorNotFound = -72002L,\n  kCFNetServiceErrorInProgress = -72003L,\n  kCFNetServiceErrorBadArgument = -72004L,\n  kCFNetServiceErrorCancel = -72005L,\n  kCFNetServiceErrorInvalid = -72006L,\n  kCFNetServiceErrorTimeout = -72007L,\n  kCFNetServiceErrorDNSServiceFailure = -73000L\n};\ntypedef enum CFNetworkErrors CFNetworkErrors;\n# 187 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetworkErrors.h\" 3\nextern const CFStringRef kCFURLErrorFailingURLErrorKey __attribute__((visibility(\"default\")));\n# 202 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetworkErrors.h\" 3\nextern const CFStringRef kCFURLErrorFailingURLStringErrorKey __attribute__((visibility(\"default\")));\n# 217 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetworkErrors.h\" 3\nextern const CFStringRef kCFGetAddrInfoFailureKey __attribute__((visibility(\"default\")));\n# 231 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetworkErrors.h\" 3\nextern const CFStringRef kCFSOCKSStatusCodeKey __attribute__((visibility(\"default\")));\n# 246 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetworkErrors.h\" 3\nextern const CFStringRef kCFSOCKSVersionKey __attribute__((visibility(\"default\")));\n# 261 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetworkErrors.h\" 3\nextern const CFStringRef kCFSOCKSNegotiationMethodKey __attribute__((visibility(\"default\")));\n# 276 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetworkErrors.h\" 3\nextern const CFStringRef kCFDNSServiceFailureKey __attribute__((visibility(\"default\")));\n# 291 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetworkErrors.h\" 3\nextern const CFStringRef kCFFTPStatusCodeKey __attribute__((visibility(\"default\")));\n# 28 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetwork.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 1 3\n# 18 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetworkDefs.h\" 1 3\n# 19 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 2 3\n\n\n\n\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHost.h\" 1 3\n# 18 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHost.h\" 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetworkDefs.h\" 1 3\n# 19 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHost.h\" 2 3\n# 41 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHost.h\" 3\n#pragma pack(push, 2)\n# 54 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHost.h\" 3\ntypedef struct __CFHost* CFHostRef;\n# 67 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHost.h\" 3\nextern const SInt32 kCFStreamErrorDomainNetDB __attribute__((visibility(\"default\")));\n# 81 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHost.h\" 3\nextern const SInt32 kCFStreamErrorDomainSystemConfiguration __attribute__((visibility(\"default\")));\n# 91 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHost.h\" 3\nenum CFHostInfoType {\n\n\n\n\n\n  kCFHostAddresses = 0,\n\n\n\n\n  kCFHostNames = 1,\n\n\n\n\n\n  kCFHostReachability = 2\n};\ntypedef enum CFHostInfoType CFHostInfoType;\n# 120 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHost.h\" 3\nstruct CFHostClientContext {\n\n\n\n\n\n\n  CFIndex version;\n\n\n\n\n\n  void * info;\n# 142 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHost.h\" 3\n  CFAllocatorRetainCallBack retain;\n\n\n\n\n\n  CFAllocatorReleaseCallBack release;\n\n\n\n\n\n\n\n  CFAllocatorCopyDescriptionCallBack copyDescription;\n};\ntypedef struct CFHostClientContext CFHostClientContext;\n# 182 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHost.h\" 3\ntypedef void ( * CFHostClientCallBack)(CFHostRef theHost, CFHostInfoType typeInfo, const CFStreamError *error, void *info);\n# 199 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHost.h\" 3\nextern CFTypeID\nCFHostGetTypeID(void) __attribute__((visibility(\"default\")));\n# 233 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHost.h\" 3\nextern CFHostRef\nCFHostCreateWithName(\n  CFAllocatorRef allocator,\n  CFStringRef hostname) __attribute__((visibility(\"default\")));\n# 269 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHost.h\" 3\nextern CFHostRef\nCFHostCreateWithAddress(\n  CFAllocatorRef allocator,\n  CFDataRef addr) __attribute__((visibility(\"default\")));\n# 306 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHost.h\" 3\nextern CFHostRef\nCFHostCreateCopy(\n  CFAllocatorRef alloc,\n  CFHostRef host) __attribute__((visibility(\"default\")));\n# 350 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHost.h\" 3\nextern Boolean\nCFHostStartInfoResolution(\n  CFHostRef theHost,\n  CFHostInfoType info,\n  CFStreamError * error) __attribute__((visibility(\"default\")));\n# 390 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHost.h\" 3\nextern CFArrayRef\nCFHostGetAddressing(\n  CFHostRef theHost,\n  Boolean * hasBeenResolved) __attribute__((visibility(\"default\")));\n# 428 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHost.h\" 3\nextern CFArrayRef\nCFHostGetNames(\n  CFHostRef theHost,\n  Boolean * hasBeenResolved) __attribute__((visibility(\"default\")));\n# 470 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHost.h\" 3\nextern CFDataRef\nCFHostGetReachability(\n  CFHostRef theHost,\n  Boolean * hasBeenResolved) __attribute__((visibility(\"default\")));\n# 501 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHost.h\" 3\nextern void\nCFHostCancelInfoResolution(\n  CFHostRef theHost,\n  CFHostInfoType info) __attribute__((visibility(\"default\")));\n# 545 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHost.h\" 3\nextern Boolean\nCFHostSetClient(\n  CFHostRef theHost,\n  CFHostClientCallBack clientCB,\n  CFHostClientContext * clientContext) __attribute__((visibility(\"default\")));\n# 584 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHost.h\" 3\nextern void\nCFHostScheduleWithRunLoop(\n  CFHostRef theHost,\n  CFRunLoopRef runLoop,\n  CFStringRef runLoopMode) __attribute__((visibility(\"default\")));\n# 623 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHost.h\" 3\nextern void\nCFHostUnscheduleFromRunLoop(\n  CFHostRef theHost,\n  CFRunLoopRef runLoop,\n  CFStringRef runLoopMode) __attribute__((visibility(\"default\")));\n\n\n\n\n\n\n\n#pragma pack(pop)\n# 27 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 1 3\n# 18 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetworkDefs.h\" 1 3\n# 19 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 2 3\n# 42 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\n#pragma pack(push, 2)\n# 56 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\ntypedef struct __CFNetService* CFNetServiceRef;\n# 65 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\ntypedef struct __CFNetServiceMonitor* CFNetServiceMonitorRef;\n# 74 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\ntypedef struct __CFNetServiceBrowser* CFNetServiceBrowserRef;\n# 87 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern const SInt32 kCFStreamErrorDomainMach __attribute__((visibility(\"default\")));\n# 104 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern const SInt32 kCFStreamErrorDomainNetServices __attribute__((visibility(\"default\")));\n# 114 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nenum CFNetServicesError {\n\n\n\n\n  kCFNetServicesErrorUnknown = -72000L,\n\n\n\n\n\n\n  kCFNetServicesErrorCollision = -72001L,\n\n\n\n\n  kCFNetServicesErrorNotFound = -72002L,\n\n\n\n\n\n  kCFNetServicesErrorInProgress = -72003L,\n\n\n\n\n  kCFNetServicesErrorBadArgument = -72004L,\n\n\n\n\n  kCFNetServicesErrorCancel = -72005L,\n\n\n\n\n\n  kCFNetServicesErrorInvalid = -72006L,\n\n\n\n\n\n  kCFNetServicesErrorTimeout = -72007L\n};\ntypedef enum CFNetServicesError CFNetServicesError;\n# 172 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nenum CFNetServiceMonitorType {\n\n\n\n\n  kCFNetServiceMonitorTXT = 1\n};\ntypedef enum CFNetServiceMonitorType CFNetServiceMonitorType;\n# 188 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nenum {\n  kCFNetServiceFlagNoAutoRename = 1\n};\n# 199 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nenum {\n  kCFNetServiceFlagMoreComing = 1,\n  kCFNetServiceFlagIsDomain = 2,\n  kCFNetServiceFlagIsDefault = 4,\n  kCFNetServiceFlagIsRegistrationDomain = 4,\n  kCFNetServiceFlagRemove = 8\n};\n# 216 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nstruct CFNetServiceClientContext {\n\n\n\n\n\n\n  CFIndex version;\n\n\n\n\n\n  void * info;\n# 239 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\n  CFAllocatorRetainCallBack retain;\n\n\n\n\n\n  CFAllocatorReleaseCallBack release;\n\n\n\n\n\n\n\n  CFAllocatorCopyDescriptionCallBack copyDescription;\n};\ntypedef struct CFNetServiceClientContext CFNetServiceClientContext;\n# 278 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\ntypedef void ( * CFNetServiceClientCallBack)(CFNetServiceRef theService, CFStreamError *error, void *info);\n# 307 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\ntypedef void ( * CFNetServiceMonitorClientCallBack)(CFNetServiceMonitorRef theMonitor, CFNetServiceRef theService, CFNetServiceMonitorType typeInfo, CFDataRef rdata, CFStreamError *error, void *info);\n# 337 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\ntypedef void ( * CFNetServiceBrowserClientCallBack)(CFNetServiceBrowserRef browser, CFOptionFlags flags, CFTypeRef domainOrService, CFStreamError *error, void *info);\n# 352 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern CFTypeID\nCFNetServiceGetTypeID(void) __attribute__((visibility(\"default\")));\n# 370 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern CFTypeID\nCFNetServiceMonitorGetTypeID(void) __attribute__((visibility(\"default\")));\n# 388 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern CFTypeID\nCFNetServiceBrowserGetTypeID(void) __attribute__((visibility(\"default\")));\n# 442 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern CFNetServiceRef\nCFNetServiceCreate(\n  CFAllocatorRef alloc,\n  CFStringRef domain,\n  CFStringRef serviceType,\n  CFStringRef name,\n  SInt32 port) __attribute__((visibility(\"default\")));\n# 483 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern CFNetServiceRef\nCFNetServiceCreateCopy(\n  CFAllocatorRef alloc,\n  CFNetServiceRef service) __attribute__((visibility(\"default\")));\n# 516 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern CFStringRef\nCFNetServiceGetDomain(CFNetServiceRef theService) __attribute__((visibility(\"default\")));\n# 547 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern CFStringRef\nCFNetServiceGetType(CFNetServiceRef theService) __attribute__((visibility(\"default\")));\n# 578 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern CFStringRef\nCFNetServiceGetName(CFNetServiceRef theService) __attribute__((visibility(\"default\")));\n# 625 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern Boolean\nCFNetServiceRegisterWithOptions(\n  CFNetServiceRef theService,\n  CFOptionFlags options,\n  CFStreamError * error) __attribute__((visibility(\"default\")));\n# 674 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern Boolean\nCFNetServiceResolveWithTimeout(\n  CFNetServiceRef theService,\n  CFTimeInterval timeout,\n  CFStreamError * error) __attribute__((visibility(\"default\")));\n# 701 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern void\nCFNetServiceCancel(CFNetServiceRef theService) __attribute__((visibility(\"default\")));\n# 734 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern CFStringRef\nCFNetServiceGetTargetHost(CFNetServiceRef theService) __attribute__((visibility(\"default\")));\n# 764 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern SInt32\nCFNetServiceGetPortNumber(CFNetServiceRef theService) __attribute__((visibility(\"default\")));\n# 798 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern CFArrayRef\nCFNetServiceGetAddressing(CFNetServiceRef theService) __attribute__((visibility(\"default\")));\n# 832 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern CFDataRef\nCFNetServiceGetTXTData(CFNetServiceRef theService) __attribute__((visibility(\"default\")));\n# 863 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern Boolean\nCFNetServiceSetTXTData(\n  CFNetServiceRef theService,\n  CFDataRef txtRecord) __attribute__((visibility(\"default\")));\n# 902 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern CFDictionaryRef\nCFNetServiceCreateDictionaryWithTXTData(\n  CFAllocatorRef alloc,\n  CFDataRef txtRecord) __attribute__((visibility(\"default\")));\n# 949 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern CFDataRef\nCFNetServiceCreateTXTDataWithDictionary(\n  CFAllocatorRef alloc,\n  CFDictionaryRef keyValuePairs) __attribute__((visibility(\"default\")));\n# 999 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern Boolean\nCFNetServiceSetClient(\n  CFNetServiceRef theService,\n  CFNetServiceClientCallBack clientCB,\n  CFNetServiceClientContext * clientContext) __attribute__((visibility(\"default\")));\n# 1034 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern void\nCFNetServiceScheduleWithRunLoop(\n  CFNetServiceRef theService,\n  CFRunLoopRef runLoop,\n  CFStringRef runLoopMode) __attribute__((visibility(\"default\")));\n# 1070 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern void\nCFNetServiceUnscheduleFromRunLoop(\n  CFNetServiceRef theService,\n  CFRunLoopRef runLoop,\n  CFStringRef runLoopMode) __attribute__((visibility(\"default\")));\n# 1115 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern CFNetServiceMonitorRef\nCFNetServiceMonitorCreate(\n  CFAllocatorRef alloc,\n  CFNetServiceRef theService,\n  CFNetServiceMonitorClientCallBack clientCB,\n  CFNetServiceClientContext * clientContext) __attribute__((visibility(\"default\")));\n# 1145 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern void\nCFNetServiceMonitorInvalidate(CFNetServiceMonitorRef monitor) __attribute__((visibility(\"default\")));\n# 1188 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern Boolean\nCFNetServiceMonitorStart(\n  CFNetServiceMonitorRef monitor,\n  CFNetServiceMonitorType recordType,\n  CFStreamError * error) __attribute__((visibility(\"default\")));\n# 1223 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern void\nCFNetServiceMonitorStop(\n  CFNetServiceMonitorRef monitor,\n  CFStreamError * error) __attribute__((visibility(\"default\")));\n# 1260 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern void\nCFNetServiceMonitorScheduleWithRunLoop(\n  CFNetServiceMonitorRef monitor,\n  CFRunLoopRef runLoop,\n  CFStringRef runLoopMode) __attribute__((visibility(\"default\")));\n# 1295 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern void\nCFNetServiceMonitorUnscheduleFromRunLoop(\n  CFNetServiceMonitorRef monitor,\n  CFRunLoopRef runLoop,\n  CFStringRef runLoopMode) __attribute__((visibility(\"default\")));\n# 1336 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern CFNetServiceBrowserRef\nCFNetServiceBrowserCreate(\n  CFAllocatorRef alloc,\n  CFNetServiceBrowserClientCallBack clientCB,\n  CFNetServiceClientContext * clientContext) __attribute__((visibility(\"default\")));\n# 1362 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern void\nCFNetServiceBrowserInvalidate(CFNetServiceBrowserRef browser) __attribute__((visibility(\"default\")));\n# 1407 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern Boolean\nCFNetServiceBrowserSearchForDomains(\n  CFNetServiceBrowserRef browser,\n  Boolean registrationDomains,\n  CFStreamError * error) __attribute__((visibility(\"default\")));\n# 1457 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern Boolean\nCFNetServiceBrowserSearchForServices(\n  CFNetServiceBrowserRef browser,\n  CFStringRef domain,\n  CFStringRef serviceType,\n  CFStreamError * error) __attribute__((visibility(\"default\")));\n# 1495 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern void\nCFNetServiceBrowserStopSearch(\n  CFNetServiceBrowserRef browser,\n  CFStreamError * error) __attribute__((visibility(\"default\")));\n# 1532 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern void\nCFNetServiceBrowserScheduleWithRunLoop(\n  CFNetServiceBrowserRef browser,\n  CFRunLoopRef runLoop,\n  CFStringRef runLoopMode) __attribute__((visibility(\"default\")));\n# 1567 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern void\nCFNetServiceBrowserUnscheduleFromRunLoop(\n  CFNetServiceBrowserRef browser,\n  CFRunLoopRef runLoop,\n  CFStringRef runLoopMode) __attribute__((visibility(\"default\")));\n# 1618 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern Boolean\nCFNetServiceRegister(\n  CFNetServiceRef theService,\n  CFStreamError * error) __attribute__((deprecated,visibility(\"default\")));\n# 1670 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern Boolean\nCFNetServiceResolve(\n  CFNetServiceRef theService,\n  CFStreamError * error) __attribute__((deprecated,visibility(\"default\")));\n# 1713 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern CFStringRef\nCFNetServiceGetProtocolSpecificInformation(CFNetServiceRef theService) __attribute__((deprecated,visibility(\"default\")));\n# 1746 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\nextern void\nCFNetServiceSetProtocolSpecificInformation(\n  CFNetServiceRef theService,\n  CFStringRef theInfo) __attribute__((deprecated,visibility(\"default\")));\n# 1759 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetServices.h\" 3\n#pragma pack(pop)\n# 31 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 2 3\n# 58 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 3\nextern const CFStringRef kCFStreamPropertySSLPeerTrust __attribute__((visibility(\"default\")));\n# 74 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 3\nextern const CFStringRef kCFStreamSSLValidatesCertificateChain __attribute__((visibility(\"default\")));\n# 89 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 3\nextern const CFStringRef kCFStreamPropertySSLSettings __attribute__((visibility(\"default\")));\n# 104 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 3\nextern const CFStringRef kCFStreamSSLLevel __attribute__((visibility(\"default\")));\n# 121 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 3\nextern const CFStringRef kCFStreamSSLPeerName __attribute__((visibility(\"default\")));\n# 137 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 3\nextern const CFStringRef kCFStreamSSLCertificates __attribute__((visibility(\"default\")));\n# 154 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 3\nextern const CFStringRef kCFStreamSSLIsServer __attribute__((visibility(\"default\")));\n# 196 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 3\nextern const CFStringRef kCFStreamPropertySSLPeerCertificates __attribute__((visibility(\"default\")));\n# 212 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 3\nextern const CFStringRef kCFStreamSSLAllowsExpiredCertificates __attribute__((visibility(\"default\")));\n# 228 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 3\nextern const CFStringRef kCFStreamSSLAllowsExpiredRoots __attribute__((visibility(\"default\")));\n# 244 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 3\nextern const CFStringRef kCFStreamSSLAllowsAnyRoot __attribute__((visibility(\"default\")));\n# 260 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 3\nextern const CFIndex kCFStreamErrorDomainWinSock __attribute__((visibility(\"default\")));\n# 273 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 3\nextern const int kCFStreamErrorDomainSOCKS;\n\n\n\nstatic __inline__ __attribute__((always_inline))\nSInt32 CFSocketStreamSOCKSGetErrorSubdomain(const CFStreamError* error) {\n return ((error->error >> 16) & 0x0000FFFF);\n}\n\nstatic __inline__ __attribute__((always_inline))\nSInt32 CFSocketStreamSOCKSGetError(const CFStreamError* error) {\n return (error->error & 0x0000FFFF);\n}\n\nenum {\n  kCFStreamErrorSOCKSSubDomainNone = 0,\n  kCFStreamErrorSOCKSSubDomainVersionCode = 1,\n  kCFStreamErrorSOCKS4SubDomainResponse = 2,\n  kCFStreamErrorSOCKS5SubDomainUserPass = 3,\n  kCFStreamErrorSOCKS5SubDomainMethod = 4,\n  kCFStreamErrorSOCKS5SubDomainResponse = 5\n};\n\n\n\nenum {\n  kCFStreamErrorSOCKS5BadResponseAddr = 1,\n  kCFStreamErrorSOCKS5BadState = 2,\n  kCFStreamErrorSOCKSUnknownClientVersion = 3\n};\n\n\nenum {\n  kCFStreamErrorSOCKS4RequestFailed = 91,\n  kCFStreamErrorSOCKS4IdentdFailed = 92,\n  kCFStreamErrorSOCKS4IdConflict = 93\n};\n\n\nenum {\n  kSOCKS5NoAcceptableMethod = 0xFF\n};\n# 336 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 3\nextern const CFStringRef kCFStreamPropertySOCKSProxy;\n# 352 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 3\nextern const CFStringRef kCFStreamPropertySOCKSProxyHost;\n# 369 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 3\nextern const CFStringRef kCFStreamPropertySOCKSProxyPort;\n# 386 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 3\nextern const CFStringRef kCFStreamPropertySOCKSVersion;\n# 400 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 3\nextern const CFStringRef kCFStreamSocketSOCKSVersion4;\n# 414 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 3\nextern const CFStringRef kCFStreamSocketSOCKSVersion5;\n# 432 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 3\nextern const CFStringRef kCFStreamPropertySOCKSUser;\n# 450 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 3\nextern const CFStringRef kCFStreamPropertySOCKSPassword;\n# 463 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 3\nextern const int kCFStreamErrorDomainSSL;\n# 481 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 3\nextern const CFStringRef kCFStreamPropertySocketSecurityLevel;\n# 495 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 3\nextern const CFStringRef kCFStreamSocketSecurityLevelNone;\n# 509 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 3\nextern const CFStringRef kCFStreamSocketSecurityLevelSSLv2;\n# 523 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 3\nextern const CFStringRef kCFStreamSocketSecurityLevelSSLv3;\n# 537 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 3\nextern const CFStringRef kCFStreamSocketSecurityLevelTLSv1;\n# 552 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 3\nextern const CFStringRef kCFStreamSocketSecurityLevelNegotiatedSSL;\n# 573 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 3\nextern const CFStringRef kCFStreamPropertyShouldCloseNativeSocket;\n# 588 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 3\nextern const CFStringRef kCFStreamPropertySocketRemoteHost __attribute__((visibility(\"default\")));\n# 603 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 3\nextern const CFStringRef kCFStreamPropertySocketRemoteNetService __attribute__((visibility(\"default\")));\n# 644 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 3\nextern void\nCFStreamCreatePairWithSocketToCFHost(\n  CFAllocatorRef alloc,\n  CFHostRef host,\n  SInt32 port,\n  CFReadStreamRef * readStream,\n  CFWriteStreamRef * writeStream) __attribute__((visibility(\"default\")));\n# 689 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 3\nextern void\nCFStreamCreatePairWithSocketToNetService(\n  CFAllocatorRef alloc,\n  CFNetServiceRef service,\n  CFReadStreamRef * readStream,\n  CFWriteStreamRef * writeStream) __attribute__((visibility(\"default\")));\n# 708 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 3\nenum CFStreamSocketSecurityProtocol {\n\n\n\n\n  kCFStreamSocketSecurityNone = 0,\n\n\n\n\n  kCFStreamSocketSecuritySSLv2 = 1,\n\n\n\n\n  kCFStreamSocketSecuritySSLv3 = 2,\n\n\n\n\n  kCFStreamSocketSecuritySSLv23 = 3,\n\n\n\n\n  kCFStreamSocketSecurityTLSv1 = 4\n};\ntypedef enum CFStreamSocketSecurityProtocol CFStreamSocketSecurityProtocol;\n# 772 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 3\nextern Boolean\nCFSocketStreamPairSetSecurityProtocol(\n  CFReadStreamRef socketReadStream,\n  CFWriteStreamRef socketWriteStream,\n  CFStreamSocketSecurityProtocol securityProtocol) __attribute__((deprecated,visibility(\"default\")));\n# 795 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFSocketStream.h\" 3\nextern const CFStringRef kCFStreamPropertyProxyLocalBypass __attribute__((visibility(\"default\")));\n# 32 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetwork.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFFTPStream.h\" 1 3\n# 18 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFFTPStream.h\" 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetworkDefs.h\" 1 3\n# 19 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFFTPStream.h\" 2 3\n# 48 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFFTPStream.h\" 3\nextern const SInt32 kCFStreamErrorDomainFTP __attribute__((visibility(\"default\")));\n# 73 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFFTPStream.h\" 3\nextern const CFStringRef kCFStreamPropertyFTPUserName __attribute__((visibility(\"default\")));\n# 89 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFFTPStream.h\" 3\nextern const CFStringRef kCFStreamPropertyFTPPassword __attribute__((visibility(\"default\")));\n# 105 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFFTPStream.h\" 3\nextern const CFStringRef kCFStreamPropertyFTPUsePassiveMode __attribute__((visibility(\"default\")));\n# 120 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFFTPStream.h\" 3\nextern const CFStringRef kCFStreamPropertyFTPResourceSize __attribute__((visibility(\"default\")));\n# 138 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFFTPStream.h\" 3\nextern const CFStringRef kCFStreamPropertyFTPFetchResourceInfo __attribute__((visibility(\"default\")));\n# 153 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFFTPStream.h\" 3\nextern const CFStringRef kCFStreamPropertyFTPFileTransferOffset __attribute__((visibility(\"default\")));\n# 169 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFFTPStream.h\" 3\nextern const CFStringRef kCFStreamPropertyFTPAttemptPersistentConnection __attribute__((visibility(\"default\")));\n# 186 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFFTPStream.h\" 3\nextern const CFStringRef kCFStreamPropertyFTPProxy __attribute__((visibility(\"default\")));\n# 204 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFFTPStream.h\" 3\nextern const CFStringRef kCFStreamPropertyFTPProxyHost __attribute__((visibility(\"default\")));\n# 222 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFFTPStream.h\" 3\nextern const CFStringRef kCFStreamPropertyFTPProxyPort __attribute__((visibility(\"default\")));\n# 232 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFFTPStream.h\" 3\nextern const CFStringRef kCFStreamPropertyFTPProxyUser __attribute__((visibility(\"default\")));\n# 241 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFFTPStream.h\" 3\nextern const CFStringRef kCFStreamPropertyFTPProxyPassword __attribute__((visibility(\"default\")));\n# 263 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFFTPStream.h\" 3\nextern const CFStringRef kCFFTPResourceMode __attribute__((visibility(\"default\")));\n# 278 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFFTPStream.h\" 3\nextern const CFStringRef kCFFTPResourceName __attribute__((visibility(\"default\")));\n# 293 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFFTPStream.h\" 3\nextern const CFStringRef kCFFTPResourceOwner __attribute__((visibility(\"default\")));\n# 308 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFFTPStream.h\" 3\nextern const CFStringRef kCFFTPResourceGroup __attribute__((visibility(\"default\")));\n# 324 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFFTPStream.h\" 3\nextern const CFStringRef kCFFTPResourceLink __attribute__((visibility(\"default\")));\n# 339 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFFTPStream.h\" 3\nextern const CFStringRef kCFFTPResourceSize __attribute__((visibility(\"default\")));\n# 354 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFFTPStream.h\" 3\nextern const CFStringRef kCFFTPResourceType __attribute__((visibility(\"default\")));\n# 369 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFFTPStream.h\" 3\nextern const CFStringRef kCFFTPResourceModDate __attribute__((visibility(\"default\")));\n# 408 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFFTPStream.h\" 3\nextern CFReadStreamRef\nCFReadStreamCreateWithFTPURL(\n  CFAllocatorRef alloc,\n  CFURLRef ftpURL) __attribute__((visibility(\"default\")));\n# 456 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFFTPStream.h\" 3\nextern CFIndex\nCFFTPCreateParsedResourceListing(\n  CFAllocatorRef alloc,\n  const UInt8 * buffer,\n  CFIndex bufferLength,\n  CFDictionaryRef * parsed) __attribute__((visibility(\"default\")));\n# 500 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFFTPStream.h\" 3\nextern CFWriteStreamRef\nCFWriteStreamCreateWithFTPURL(\n  CFAllocatorRef alloc,\n  CFURLRef ftpURL) __attribute__((visibility(\"default\")));\n# 36 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetwork.h\" 2 3\n\n\n\n\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPMessage.h\" 1 3\n# 18 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPMessage.h\" 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetworkDefs.h\" 1 3\n# 19 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPMessage.h\" 2 3\n# 52 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPMessage.h\" 3\nextern const CFStringRef kCFHTTPVersion1_0 __attribute__((visibility(\"default\")));\n# 66 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPMessage.h\" 3\nextern const CFStringRef kCFHTTPVersion1_1 __attribute__((visibility(\"default\")));\n# 80 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPMessage.h\" 3\nextern const CFStringRef kCFHTTPAuthenticationSchemeBasic __attribute__((visibility(\"default\")));\n# 94 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPMessage.h\" 3\nextern const CFStringRef kCFHTTPAuthenticationSchemeDigest __attribute__((visibility(\"default\")));\n# 107 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPMessage.h\" 3\nextern const CFStringRef kCFHTTPAuthenticationSchemeNTLM __attribute__((visibility(\"default\")));\n# 120 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPMessage.h\" 3\nextern const CFStringRef kCFHTTPAuthenticationSchemeNegotiate __attribute__((visibility(\"default\")));\n# 133 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPMessage.h\" 3\nextern const CFStringRef kCFHTTPAuthenticationSchemeNegotiate2 __attribute__((visibility(\"default\")));\n# 143 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPMessage.h\" 3\ntypedef struct __CFHTTPMessage* CFHTTPMessageRef;\n# 162 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPMessage.h\" 3\nextern CFTypeID\nCFHTTPMessageGetTypeID(void) __attribute__((visibility(\"default\")));\n# 205 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPMessage.h\" 3\nextern CFHTTPMessageRef\nCFHTTPMessageCreateRequest(\n  CFAllocatorRef alloc,\n  CFStringRef requestMethod,\n  CFURLRef url,\n  CFStringRef httpVersion) __attribute__((visibility(\"default\")));\n# 252 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPMessage.h\" 3\nextern CFHTTPMessageRef\nCFHTTPMessageCreateResponse(\n  CFAllocatorRef alloc,\n  CFIndex statusCode,\n  CFStringRef statusDescription,\n  CFStringRef httpVersion) __attribute__((visibility(\"default\")));\n# 292 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPMessage.h\" 3\nextern CFHTTPMessageRef\nCFHTTPMessageCreateEmpty(\n  CFAllocatorRef alloc,\n  Boolean isRequest) __attribute__((visibility(\"default\")));\n# 329 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPMessage.h\" 3\nextern CFHTTPMessageRef\nCFHTTPMessageCreateCopy(\n  CFAllocatorRef alloc,\n  CFHTTPMessageRef message) __attribute__((visibility(\"default\")));\n# 360 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPMessage.h\" 3\nextern Boolean\nCFHTTPMessageIsRequest(CFHTTPMessageRef message) __attribute__((visibility(\"default\")));\n# 388 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPMessage.h\" 3\nextern CFStringRef\nCFHTTPMessageCopyVersion(CFHTTPMessageRef message) __attribute__((visibility(\"default\")));\n# 416 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPMessage.h\" 3\nextern CFDataRef\nCFHTTPMessageCopyBody(CFHTTPMessageRef message) __attribute__((visibility(\"default\")));\n# 444 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPMessage.h\" 3\nextern void\nCFHTTPMessageSetBody(\n  CFHTTPMessageRef message,\n  CFDataRef bodyData) __attribute__((visibility(\"default\")));\n# 478 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPMessage.h\" 3\nextern CFStringRef\nCFHTTPMessageCopyHeaderFieldValue(\n  CFHTTPMessageRef message,\n  CFStringRef headerField) __attribute__((visibility(\"default\")));\n# 508 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPMessage.h\" 3\nextern CFDictionaryRef\nCFHTTPMessageCopyAllHeaderFields(CFHTTPMessageRef message) __attribute__((visibility(\"default\")));\n# 540 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPMessage.h\" 3\nextern void\nCFHTTPMessageSetHeaderFieldValue(\n  CFHTTPMessageRef message,\n  CFStringRef headerField,\n  CFStringRef value) __attribute__((visibility(\"default\")));\n# 579 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPMessage.h\" 3\nextern Boolean\nCFHTTPMessageAppendBytes(\n  CFHTTPMessageRef message,\n  const UInt8 * newBytes,\n  CFIndex numBytes) __attribute__((visibility(\"default\")));\n# 610 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPMessage.h\" 3\nextern Boolean\nCFHTTPMessageIsHeaderComplete(CFHTTPMessageRef message) __attribute__((visibility(\"default\")));\n# 639 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPMessage.h\" 3\nextern CFDataRef\nCFHTTPMessageCopySerializedMessage(CFHTTPMessageRef request) __attribute__((visibility(\"default\")));\n# 670 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPMessage.h\" 3\nextern CFURLRef\nCFHTTPMessageCopyRequestURL(CFHTTPMessageRef request) __attribute__((visibility(\"default\")));\n# 697 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPMessage.h\" 3\nextern CFStringRef\nCFHTTPMessageCopyRequestMethod(CFHTTPMessageRef request) __attribute__((visibility(\"default\")));\n# 746 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPMessage.h\" 3\nextern Boolean\nCFHTTPMessageAddAuthentication(\n  CFHTTPMessageRef request,\n  CFHTTPMessageRef authenticationFailureResponse,\n  CFStringRef username,\n  CFStringRef password,\n  CFStringRef authenticationScheme,\n  Boolean forProxy) __attribute__((visibility(\"default\")));\n# 783 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPMessage.h\" 3\nextern CFIndex\nCFHTTPMessageGetResponseStatusCode(CFHTTPMessageRef response) __attribute__((visibility(\"default\")));\n# 812 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPMessage.h\" 3\nextern CFStringRef\nCFHTTPMessageCopyResponseStatusLine(CFHTTPMessageRef response) __attribute__((visibility(\"default\")));\n# 44 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetwork.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPStream.h\" 1 3\n# 18 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPStream.h\" 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetworkDefs.h\" 1 3\n# 19 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPStream.h\" 2 3\n# 58 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPStream.h\" 3\nextern const SInt32 kCFStreamErrorDomainHTTP __attribute__((visibility(\"default\")));\n\n\n\n\n\n\n\nenum CFStreamErrorHTTP {\n\n\n\n\n  kCFStreamErrorHTTPParseFailure = -1,\n\n\n\n\n  kCFStreamErrorHTTPRedirectionLoop = -2,\n\n\n\n\n  kCFStreamErrorHTTPBadURL = -3\n};\ntypedef enum CFStreamErrorHTTP CFStreamErrorHTTP;\n# 97 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPStream.h\" 3\nextern const CFStringRef kCFStreamPropertyHTTPResponseHeader __attribute__((visibility(\"default\")));\n# 114 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPStream.h\" 3\nextern const CFStringRef kCFStreamPropertyHTTPFinalURL __attribute__((visibility(\"default\")));\n# 130 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPStream.h\" 3\nextern const CFStringRef kCFStreamPropertyHTTPFinalRequest __attribute__((visibility(\"default\")));\n# 150 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPStream.h\" 3\nextern const CFStringRef kCFStreamPropertyHTTPProxy __attribute__((visibility(\"default\")));\n# 165 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPStream.h\" 3\nextern const CFStringRef kCFStreamPropertyHTTPProxyHost __attribute__((visibility(\"default\")));\n# 179 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPStream.h\" 3\nextern const CFStringRef kCFStreamPropertyHTTPProxyPort __attribute__((visibility(\"default\")));\n# 194 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPStream.h\" 3\nextern const CFStringRef kCFStreamPropertyHTTPSProxyHost __attribute__((visibility(\"default\")));\n# 209 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPStream.h\" 3\nextern const CFStringRef kCFStreamPropertyHTTPSProxyPort __attribute__((visibility(\"default\")));\n# 225 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPStream.h\" 3\nextern const CFStringRef kCFStreamPropertyHTTPShouldAutoredirect __attribute__((visibility(\"default\")));\n# 243 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPStream.h\" 3\nextern const CFStringRef kCFStreamPropertyHTTPAttemptPersistentConnection __attribute__((visibility(\"default\")));\n# 260 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPStream.h\" 3\nextern const CFStringRef kCFStreamPropertyHTTPRequestBytesWrittenCount __attribute__((visibility(\"default\")));\n# 302 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPStream.h\" 3\nextern CFReadStreamRef\nCFReadStreamCreateForHTTPRequest(\n  CFAllocatorRef alloc,\n  CFHTTPMessageRef request) __attribute__((visibility(\"default\")));\n# 352 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPStream.h\" 3\nextern CFReadStreamRef\nCFReadStreamCreateForStreamedHTTPRequest(\n  CFAllocatorRef alloc,\n  CFHTTPMessageRef requestHeaders,\n  CFReadStreamRef requestBody) __attribute__((visibility(\"default\")));\n# 382 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPStream.h\" 3\nextern void\nCFHTTPReadStreamSetRedirectsAutomatically(\n  CFReadStreamRef httpStream,\n  Boolean shouldAutoRedirect) __attribute__((deprecated,visibility(\"default\")));\n# 413 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPStream.h\" 3\nextern void\nCFHTTPReadStreamSetProxy(\n  CFReadStreamRef httpStream,\n  CFStringRef proxyHost,\n  CFIndex proxyPort) __attribute__((deprecated,visibility(\"default\")));\n# 48 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetwork.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPAuthentication.h\" 1 3\n# 18 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPAuthentication.h\" 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetworkDefs.h\" 1 3\n# 19 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPAuthentication.h\" 2 3\n# 54 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPAuthentication.h\" 3\ntypedef struct _CFHTTPAuthentication* CFHTTPAuthenticationRef;\n# 64 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPAuthentication.h\" 3\nenum CFStreamErrorHTTPAuthentication {\n\n\n\n\n\n  kCFStreamErrorHTTPAuthenticationTypeUnsupported = -1000,\n\n\n\n\n\n  kCFStreamErrorHTTPAuthenticationBadUserName = -1001,\n\n\n\n\n\n  kCFStreamErrorHTTPAuthenticationBadPassword = -1002\n};\ntypedef enum CFStreamErrorHTTPAuthentication CFStreamErrorHTTPAuthentication;\n# 100 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPAuthentication.h\" 3\nextern const CFStringRef kCFHTTPAuthenticationUsername __attribute__((visibility(\"default\")));\n# 115 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPAuthentication.h\" 3\nextern const CFStringRef kCFHTTPAuthenticationPassword __attribute__((visibility(\"default\")));\n# 130 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPAuthentication.h\" 3\nextern const CFStringRef kCFHTTPAuthenticationAccountDomain __attribute__((visibility(\"default\")));\n# 146 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPAuthentication.h\" 3\nextern CFTypeID\nCFHTTPAuthenticationGetTypeID(void) __attribute__((visibility(\"default\")));\n# 182 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPAuthentication.h\" 3\nextern CFHTTPAuthenticationRef\nCFHTTPAuthenticationCreateFromResponse(\n  CFAllocatorRef alloc,\n  CFHTTPMessageRef response) __attribute__((visibility(\"default\")));\n# 228 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPAuthentication.h\" 3\nextern Boolean\nCFHTTPAuthenticationIsValid(\n  CFHTTPAuthenticationRef auth,\n  CFStreamError * error) __attribute__((visibility(\"default\")));\n# 265 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPAuthentication.h\" 3\nextern Boolean\nCFHTTPAuthenticationAppliesToRequest(\n  CFHTTPAuthenticationRef auth,\n  CFHTTPMessageRef request) __attribute__((visibility(\"default\")));\n# 300 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPAuthentication.h\" 3\nextern Boolean\nCFHTTPAuthenticationRequiresOrderedRequests(CFHTTPAuthenticationRef auth) __attribute__((visibility(\"default\")));\n# 349 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPAuthentication.h\" 3\nextern Boolean\nCFHTTPMessageApplyCredentials(\n  CFHTTPMessageRef request,\n  CFHTTPAuthenticationRef auth,\n  CFStringRef username,\n  CFStringRef password,\n  CFStreamError * error) __attribute__((visibility(\"default\")));\n# 401 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPAuthentication.h\" 3\nextern Boolean\nCFHTTPMessageApplyCredentialDictionary(\n  CFHTTPMessageRef request,\n  CFHTTPAuthenticationRef auth,\n  CFDictionaryRef dict,\n  CFStreamError * error) __attribute__((visibility(\"default\")));\n# 440 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPAuthentication.h\" 3\nextern CFStringRef\nCFHTTPAuthenticationCopyRealm(CFHTTPAuthenticationRef auth) __attribute__((visibility(\"default\")));\n# 475 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPAuthentication.h\" 3\nextern CFArrayRef\nCFHTTPAuthenticationCopyDomains(CFHTTPAuthenticationRef auth) __attribute__((visibility(\"default\")));\n# 508 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPAuthentication.h\" 3\nextern CFStringRef\nCFHTTPAuthenticationCopyMethod(CFHTTPAuthenticationRef auth) __attribute__((visibility(\"default\")));\n# 540 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPAuthentication.h\" 3\nextern Boolean\nCFHTTPAuthenticationRequiresUserNameAndPassword(CFHTTPAuthenticationRef auth) __attribute__((visibility(\"default\")));\n# 573 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFHTTPAuthentication.h\" 3\nextern Boolean\nCFHTTPAuthenticationRequiresAccountDomain(CFHTTPAuthenticationRef auth) __attribute__((visibility(\"default\")));\n# 52 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetwork.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetDiagnostics.h\" 1 3\n# 18 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetDiagnostics.h\" 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetworkDefs.h\" 1 3\n# 19 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetDiagnostics.h\" 2 3\n# 50 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetDiagnostics.h\" 3\ntypedef struct __CFNetDiagnostic* CFNetDiagnosticRef;\n\n\n\n\n\n\n\nenum CFNetDiagnosticStatusValues {\n\n\n\n\n  kCFNetDiagnosticNoErr = 0,\n\n\n\n\n  kCFNetDiagnosticErr = -66560L,\n\n\n\n\n  kCFNetDiagnosticConnectionUp = -66559L,\n  kCFNetDiagnosticConnectionIndeterminate = -66558L,\n\n\n\n\n  kCFNetDiagnosticConnectionDown = -66557L\n};\ntypedef enum CFNetDiagnosticStatusValues CFNetDiagnosticStatusValues;\n# 90 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetDiagnostics.h\" 3\ntypedef CFIndex CFNetDiagnosticStatus;\n# 119 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetDiagnostics.h\" 3\nextern CFNetDiagnosticRef\nCFNetDiagnosticCreateWithStreams(\n  CFAllocatorRef alloc,\n  CFReadStreamRef readStream,\n  CFWriteStreamRef writeStream) __attribute__((visibility(\"default\")));\n# 149 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetDiagnostics.h\" 3\nextern CFNetDiagnosticRef\nCFNetDiagnosticCreateWithURL(\n  CFAllocatorRef alloc,\n  CFURLRef url) __attribute__((visibility(\"default\")));\n# 180 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetDiagnostics.h\" 3\nextern void\nCFNetDiagnosticSetName(\n  CFNetDiagnosticRef details,\n  CFStringRef name) __attribute__((visibility(\"default\")));\n# 210 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetDiagnostics.h\" 3\nextern CFNetDiagnosticStatus\nCFNetDiagnosticDiagnoseProblemInteractively(CFNetDiagnosticRef details) __attribute__((visibility(\"default\")));\n# 244 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetDiagnostics.h\" 3\nextern CFNetDiagnosticStatus\nCFNetDiagnosticCopyNetworkStatusPassively(\n  CFNetDiagnosticRef details,\n  CFStringRef * description) __attribute__((visibility(\"default\")));\n# 56 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetwork.h\" 2 3\n\n\n\n\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFProxySupport.h\" 1 3\n# 18 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFProxySupport.h\" 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetworkDefs.h\" 1 3\n# 19 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFProxySupport.h\" 2 3\n# 83 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFProxySupport.h\" 3\nextern CFDictionaryRef\nCFNetworkCopySystemProxySettings( void ) __attribute__((visibility(\"default\")));\n# 114 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFProxySupport.h\" 3\nextern CFArrayRef\nCFNetworkCopyProxiesForURL(\n  CFURLRef url,\n  CFDictionaryRef proxySettings) __attribute__((visibility(\"default\")));\n# 148 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFProxySupport.h\" 3\ntypedef void ( * CFProxyAutoConfigurationResultCallback)(void *client, CFArrayRef proxyList, CFErrorRef error);\n# 179 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFProxySupport.h\" 3\nextern CFArrayRef\nCFNetworkCopyProxiesForAutoConfigurationScript(\n  CFStringRef proxyAutoConfigurationScript,\n  CFURLRef targetURL,\n  CFErrorRef * error) __attribute__((visibility(\"default\")));\n# 225 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFProxySupport.h\" 3\nextern CFRunLoopSourceRef\nCFNetworkExecuteProxyAutoConfigurationScript(\n  CFStringRef proxyAutoConfigurationScript,\n  CFURLRef targetURL,\n  CFProxyAutoConfigurationResultCallback cb,\n  CFStreamClientContext * clientContext) __attribute__((visibility(\"default\")));\n# 250 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFProxySupport.h\" 3\nextern CFRunLoopSourceRef\nCFNetworkExecuteProxyAutoConfigurationURL(\n  CFURLRef proxyAutoConfigURL,\n  CFURLRef targetURL,\n  CFProxyAutoConfigurationResultCallback cb,\n  CFStreamClientContext * clientContext) __attribute__((visibility(\"default\")));\n# 270 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFProxySupport.h\" 3\nextern const CFStringRef kCFProxyTypeKey __attribute__((visibility(\"default\")));\n# 284 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFProxySupport.h\" 3\nextern const CFStringRef kCFProxyHostNameKey __attribute__((visibility(\"default\")));\n# 298 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFProxySupport.h\" 3\nextern const CFStringRef kCFProxyPortNumberKey __attribute__((visibility(\"default\")));\n# 314 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFProxySupport.h\" 3\nextern const CFStringRef kCFProxyAutoConfigurationURLKey __attribute__((visibility(\"default\")));\n# 330 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFProxySupport.h\" 3\nextern const CFStringRef kCFProxyUsernameKey __attribute__((visibility(\"default\")));\n# 346 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFProxySupport.h\" 3\nextern const CFStringRef kCFProxyPasswordKey __attribute__((visibility(\"default\")));\n# 365 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFProxySupport.h\" 3\nextern const CFStringRef kCFProxyTypeNone __attribute__((visibility(\"default\")));\n# 374 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFProxySupport.h\" 3\nextern const CFStringRef kCFProxyTypeHTTP __attribute__((visibility(\"default\")));\n# 383 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFProxySupport.h\" 3\nextern const CFStringRef kCFProxyTypeHTTPS __attribute__((visibility(\"default\")));\n# 392 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFProxySupport.h\" 3\nextern const CFStringRef kCFProxyTypeSOCKS __attribute__((visibility(\"default\")));\n# 401 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFProxySupport.h\" 3\nextern const CFStringRef kCFProxyTypeFTP __attribute__((visibility(\"default\")));\n# 410 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFProxySupport.h\" 3\nextern const CFStringRef kCFProxyTypeAutoConfigurationURL __attribute__((visibility(\"default\")));\n# 420 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFProxySupport.h\" 3\nextern const CFStringRef kCFProxyAutoConfigurationHTTPResponseKey __attribute__((visibility(\"default\")));\n# 431 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFProxySupport.h\" 3\nextern const CFStringRef kCFNetworkProxiesExceptionsList __attribute__((visibility(\"default\")));\n# 440 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFProxySupport.h\" 3\nextern const CFStringRef kCFNetworkProxiesExcludeSimpleHostnames __attribute__((visibility(\"default\")));\n\n\n\n\n\n\n\nextern const CFStringRef kCFNetworkProxiesFTPEnable __attribute__((visibility(\"default\")));\n# 457 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFProxySupport.h\" 3\nextern const CFStringRef kCFNetworkProxiesFTPPassive __attribute__((visibility(\"default\")));\n\n\n\n\n\n\n\nextern const CFStringRef kCFNetworkProxiesFTPPort __attribute__((visibility(\"default\")));\n\n\n\n\n\n\n\nextern const CFStringRef kCFNetworkProxiesFTPProxy __attribute__((visibility(\"default\")));\n\n\n\n\n\n\n\nextern const CFStringRef kCFNetworkProxiesGopherEnable __attribute__((visibility(\"default\")));\n\n\n\n\n\n\n\nextern const CFStringRef kCFNetworkProxiesGopherPort __attribute__((visibility(\"default\")));\n\n\n\n\n\n\n\nextern const CFStringRef kCFNetworkProxiesGopherProxy __attribute__((visibility(\"default\")));\n\n\n\n\n\n\n\nextern const CFStringRef kCFNetworkProxiesHTTPEnable __attribute__((visibility(\"default\")));\n\n\n\n\n\n\n\nextern const CFStringRef kCFNetworkProxiesHTTPPort __attribute__((visibility(\"default\")));\n\n\n\n\n\n\n\nextern const CFStringRef kCFNetworkProxiesHTTPProxy __attribute__((visibility(\"default\")));\n\n\n\n\n\n\n\nextern const CFStringRef kCFNetworkProxiesHTTPSEnable __attribute__((visibility(\"default\")));\n\n\n\n\n\n\n\nextern const CFStringRef kCFNetworkProxiesHTTPSPort __attribute__((visibility(\"default\")));\n\n\n\n\n\n\n\nextern const CFStringRef kCFNetworkProxiesHTTPSProxy __attribute__((visibility(\"default\")));\n\n\n\n\n\n\n\nextern const CFStringRef kCFNetworkProxiesRTSPEnable __attribute__((visibility(\"default\")));\n\n\n\n\n\n\n\nextern const CFStringRef kCFNetworkProxiesRTSPPort __attribute__((visibility(\"default\")));\n\n\n\n\n\n\n\nextern const CFStringRef kCFNetworkProxiesRTSPProxy __attribute__((visibility(\"default\")));\n\n\n\n\n\n\n\nextern const CFStringRef kCFNetworkProxiesSOCKSEnable __attribute__((visibility(\"default\")));\n\n\n\n\n\n\n\nextern const CFStringRef kCFNetworkProxiesSOCKSPort __attribute__((visibility(\"default\")));\n\n\n\n\n\n\n\nextern const CFStringRef kCFNetworkProxiesSOCKSProxy __attribute__((visibility(\"default\")));\n\n\n\n\n\n\n\nextern const CFStringRef kCFNetworkProxiesProxyAutoConfigEnable __attribute__((visibility(\"default\")));\n\n\n\n\n\n\n\nextern const CFStringRef kCFNetworkProxiesProxyAutoConfigURLString __attribute__((visibility(\"default\")));\n\n\n\n\n\n\n\nextern const CFStringRef kCFNetworkProxiesProxyAutoDiscoveryEnable __attribute__((visibility(\"default\")));\n# 64 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/Headers/CFNetwork.h\" 2 3\n# 38 \"/System/Library/Frameworks/CoreServices.framework/Headers/CoreServices.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LaunchServices.h\" 1 3\n# 21 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LaunchServices.h\" 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/IconsCore.h\" 1 3\n# 40 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/IconsCore.h\" 3\nenum {\n  kGenericDocumentIconResource = -4000,\n  kGenericStationeryIconResource = -3985,\n  kGenericEditionFileIconResource = -3989,\n  kGenericApplicationIconResource = -3996,\n  kGenericDeskAccessoryIconResource = -3991,\n  kGenericFolderIconResource = -3999,\n  kPrivateFolderIconResource = -3994,\n  kFloppyIconResource = -3998,\n  kTrashIconResource = -3993,\n  kGenericRAMDiskIconResource = -3988,\n  kGenericCDROMIconResource = -3987\n};\n\n\n\nenum {\n  kDesktopIconResource = -3992,\n  kOpenFolderIconResource = -3997,\n  kGenericHardDiskIconResource = -3995,\n  kGenericFileServerIconResource = -3972,\n  kGenericSuitcaseIconResource = -3970,\n  kGenericMoverObjectIconResource = -3969\n};\n\n\n\nenum {\n  kGenericPreferencesIconResource = -3971,\n  kGenericQueryDocumentIconResource = -16506,\n  kGenericExtensionIconResource = -16415,\n  kSystemFolderIconResource = -3983,\n  kHelpIconResource = -20271,\n  kAppleMenuFolderIconResource = -3982\n};\n\n\nenum {\n  genericDocumentIconResource = kGenericDocumentIconResource,\n  genericStationeryIconResource = kGenericStationeryIconResource,\n  genericEditionFileIconResource = kGenericEditionFileIconResource,\n  genericApplicationIconResource = kGenericApplicationIconResource,\n  genericDeskAccessoryIconResource = kGenericDeskAccessoryIconResource,\n  genericFolderIconResource = kGenericFolderIconResource,\n  privateFolderIconResource = kPrivateFolderIconResource,\n  floppyIconResource = kFloppyIconResource,\n  trashIconResource = kTrashIconResource,\n  genericRAMDiskIconResource = kGenericRAMDiskIconResource,\n  genericCDROMIconResource = kGenericCDROMIconResource,\n  desktopIconResource = kDesktopIconResource,\n  openFolderIconResource = kOpenFolderIconResource,\n  genericHardDiskIconResource = kGenericHardDiskIconResource,\n  genericFileServerIconResource = kGenericFileServerIconResource,\n  genericSuitcaseIconResource = kGenericSuitcaseIconResource,\n  genericMoverObjectIconResource = kGenericMoverObjectIconResource,\n  genericPreferencesIconResource = kGenericPreferencesIconResource,\n  genericQueryDocumentIconResource = kGenericQueryDocumentIconResource,\n  genericExtensionIconResource = kGenericExtensionIconResource,\n  systemFolderIconResource = kSystemFolderIconResource,\n  appleMenuFolderIconResource = kAppleMenuFolderIconResource\n};\n\n\nenum {\n  kStartupFolderIconResource = -3981,\n  kOwnedFolderIconResource = -3980,\n  kDropFolderIconResource = -3979,\n  kSharedFolderIconResource = -3978,\n  kMountedFolderIconResource = -3977,\n  kControlPanelFolderIconResource = -3976,\n  kPrintMonitorFolderIconResource = -3975,\n  kPreferencesFolderIconResource = -3974,\n  kExtensionsFolderIconResource = -3973,\n  kFontsFolderIconResource = -3968,\n  kFullTrashIconResource = -3984\n};\n\n\nenum {\n  startupFolderIconResource = kStartupFolderIconResource,\n  ownedFolderIconResource = kOwnedFolderIconResource,\n  dropFolderIconResource = kDropFolderIconResource,\n  sharedFolderIconResource = kSharedFolderIconResource,\n  mountedFolderIconResource = kMountedFolderIconResource,\n  controlPanelFolderIconResource = kControlPanelFolderIconResource,\n  printMonitorFolderIconResource = kPrintMonitorFolderIconResource,\n  preferencesFolderIconResource = kPreferencesFolderIconResource,\n  extensionsFolderIconResource = kExtensionsFolderIconResource,\n  fontsFolderIconResource = kFontsFolderIconResource,\n  fullTrashIconResource = kFullTrashIconResource\n};\n\n\ntypedef struct OpaqueIconRef* IconRef;\n# 152 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/IconsCore.h\" 3\nenum {\n  kSystemIconsCreator = 'macs'\n};\n# 164 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/IconsCore.h\" 3\nenum {\n  kClipboardIcon = 'CLIP',\n  kClippingUnknownTypeIcon = 'clpu',\n  kClippingPictureTypeIcon = 'clpp',\n  kClippingTextTypeIcon = 'clpt',\n  kClippingSoundTypeIcon = 'clps',\n  kDesktopIcon = 'desk',\n  kFinderIcon = 'FNDR',\n  kComputerIcon = 'root',\n  kFontSuitcaseIcon = 'FFIL',\n  kFullTrashIcon = 'ftrh',\n  kGenericApplicationIcon = 'APPL',\n  kGenericCDROMIcon = 'cddr',\n  kGenericControlPanelIcon = 'APPC',\n  kGenericControlStripModuleIcon = 'sdev',\n  kGenericComponentIcon = 'thng',\n  kGenericDeskAccessoryIcon = 'APPD',\n  kGenericDocumentIcon = 'docu',\n  kGenericEditionFileIcon = 'edtf',\n  kGenericExtensionIcon = 'INIT',\n  kGenericFileServerIcon = 'srvr',\n  kGenericFontIcon = 'ffil',\n  kGenericFontScalerIcon = 'sclr',\n  kGenericFloppyIcon = 'flpy',\n  kGenericHardDiskIcon = 'hdsk',\n  kGenericIDiskIcon = 'idsk',\n  kGenericRemovableMediaIcon = 'rmov',\n  kGenericMoverObjectIcon = 'movr',\n  kGenericPCCardIcon = 'pcmc',\n  kGenericPreferencesIcon = 'pref',\n  kGenericQueryDocumentIcon = 'qery',\n  kGenericRAMDiskIcon = 'ramd',\n  kGenericSharedLibaryIcon = 'shlb',\n  kGenericStationeryIcon = 'sdoc',\n  kGenericSuitcaseIcon = 'suit',\n  kGenericURLIcon = 'gurl',\n  kGenericWORMIcon = 'worm',\n  kInternationalResourcesIcon = 'ifil',\n  kKeyboardLayoutIcon = 'kfil',\n  kSoundFileIcon = 'sfil',\n  kSystemSuitcaseIcon = 'zsys',\n  kTrashIcon = 'trsh',\n  kTrueTypeFontIcon = 'tfil',\n  kTrueTypeFlatFontIcon = 'sfnt',\n  kTrueTypeMultiFlatFontIcon = 'ttcf',\n  kUserIDiskIcon = 'udsk',\n  kUnknownFSObjectIcon = 'unfs',\n  kInternationResourcesIcon = kInternationalResourcesIcon\n};\n\n\nenum {\n  kInternetLocationHTTPIcon = 'ilht',\n  kInternetLocationFTPIcon = 'ilft',\n  kInternetLocationAppleShareIcon = 'ilaf',\n  kInternetLocationAppleTalkZoneIcon = 'ilat',\n  kInternetLocationFileIcon = 'ilfi',\n  kInternetLocationMailIcon = 'ilma',\n  kInternetLocationNewsIcon = 'ilnw',\n  kInternetLocationNSLNeighborhoodIcon = 'ilns',\n  kInternetLocationGenericIcon = 'ilge'\n};\n\n\nenum {\n  kGenericFolderIcon = 'fldr',\n  kDropFolderIcon = 'dbox',\n  kMountedFolderIcon = 'mntd',\n  kOpenFolderIcon = 'ofld',\n  kOwnedFolderIcon = 'ownd',\n  kPrivateFolderIcon = 'prvf',\n  kSharedFolderIcon = 'shfl'\n};\n\n\nenum {\n  kSharingPrivsNotApplicableIcon = 'shna',\n  kSharingPrivsReadOnlyIcon = 'shro',\n  kSharingPrivsReadWriteIcon = 'shrw',\n  kSharingPrivsUnknownIcon = 'shuk',\n  kSharingPrivsWritableIcon = 'writ'\n};\n\n\n\nenum {\n  kUserFolderIcon = 'ufld',\n  kWorkgroupFolderIcon = 'wfld',\n  kGuestUserIcon = 'gusr',\n  kUserIcon = 'user',\n  kOwnerIcon = 'susr',\n  kGroupIcon = 'grup'\n};\n\n\nenum {\n  kAppearanceFolderIcon = 'appr',\n  kAppleExtrasFolderIcon = 0x616578C4 ,\n  kAppleMenuFolderIcon = 'amnu',\n  kApplicationsFolderIcon = 'apps',\n  kApplicationSupportFolderIcon = 'asup',\n  kAssistantsFolderIcon = 0x617374C4 ,\n  kColorSyncFolderIcon = 'prof',\n  kContextualMenuItemsFolderIcon = 'cmnu',\n  kControlPanelDisabledFolderIcon = 'ctrD',\n  kControlPanelFolderIcon = 'ctrl',\n  kControlStripModulesFolderIcon = 0x736476C4 ,\n  kDocumentsFolderIcon = 'docs',\n  kExtensionsDisabledFolderIcon = 'extD',\n  kExtensionsFolderIcon = 'extn',\n  kFavoritesFolderIcon = 'favs',\n  kFontsFolderIcon = 'font',\n  kHelpFolderIcon = (int)0xC4686C70 ,\n  kInternetFolderIcon = 0x696E74C4 ,\n  kInternetPlugInFolderIcon = (int)0xC46E6574 ,\n  kInternetSearchSitesFolderIcon = 'issf',\n  kLocalesFolderIcon = (int)0xC46C6F63 ,\n  kMacOSReadMeFolderIcon = 0x6D6F72C4 ,\n  kPublicFolderIcon = 'pubf',\n  kPreferencesFolderIcon = 0x707266C4 ,\n  kPrinterDescriptionFolderIcon = 'ppdf',\n  kPrinterDriverFolderIcon = (int)0xC4707264 ,\n  kPrintMonitorFolderIcon = 'prnt',\n  kRecentApplicationsFolderIcon = 'rapp',\n  kRecentDocumentsFolderIcon = 'rdoc',\n  kRecentServersFolderIcon = 'rsrv',\n  kScriptingAdditionsFolderIcon = (int)0xC4736372 ,\n  kSharedLibrariesFolderIcon = (int)0xC46C6962 ,\n  kScriptsFolderIcon = 0x736372C4 ,\n  kShutdownItemsDisabledFolderIcon = 'shdD',\n  kShutdownItemsFolderIcon = 'shdf',\n  kSpeakableItemsFolder = 'spki',\n  kStartupItemsDisabledFolderIcon = 'strD',\n  kStartupItemsFolderIcon = 'strt',\n  kSystemExtensionDisabledFolderIcon = 'macD',\n  kSystemFolderIcon = 'macs',\n  kTextEncodingsFolderIcon = (int)0xC4746578 ,\n  kUsersFolderIcon = 0x757372C4 ,\n  kUtilitiesFolderIcon = 0x757469C4 ,\n  kVoicesFolderIcon = 'fvoc'\n};\n\n\nenum {\n  kAppleScriptBadgeIcon = 'scrp',\n  kLockedBadgeIcon = 'lbdg',\n  kMountedBadgeIcon = 'mbdg',\n  kSharedBadgeIcon = 'sbdg',\n  kAliasBadgeIcon = 'abdg',\n  kAlertCautionBadgeIcon = 'cbdg'\n};\n\n\nenum {\n  kAlertNoteIcon = 'note',\n  kAlertCautionIcon = 'caut',\n  kAlertStopIcon = 'stop'\n};\n\n\nenum {\n  kAppleTalkIcon = 'atlk',\n  kAppleTalkZoneIcon = 'atzn',\n  kAFPServerIcon = 'afps',\n  kFTPServerIcon = 'ftps',\n  kHTTPServerIcon = 'htps',\n  kGenericNetworkIcon = 'gnet',\n  kIPFileServerIcon = 'isrv'\n};\n\n\nenum {\n  kToolbarCustomizeIcon = 'tcus',\n  kToolbarDeleteIcon = 'tdel',\n  kToolbarFavoritesIcon = 'tfav',\n  kToolbarHomeIcon = 'thom',\n  kToolbarAdvancedIcon = 'tbav',\n  kToolbarInfoIcon = 'tbin',\n  kToolbarLabelsIcon = 'tblb',\n  kToolbarApplicationsFolderIcon = 'tAps',\n  kToolbarDocumentsFolderIcon = 'tDoc',\n  kToolbarMovieFolderIcon = 'tMov',\n  kToolbarMusicFolderIcon = 'tMus',\n  kToolbarPicturesFolderIcon = 'tPic',\n  kToolbarPublicFolderIcon = 'tPub',\n  kToolbarDesktopFolderIcon = 'tDsk',\n  kToolbarDownloadsFolderIcon = 'tDwn',\n  kToolbarLibraryFolderIcon = 'tLib',\n  kToolbarUtilitiesFolderIcon = 'tUtl',\n  kToolbarSitesFolderIcon = 'tSts'\n};\n\n\nenum {\n  kAppleLogoIcon = 'capl',\n  kAppleMenuIcon = 'sapl',\n  kBackwardArrowIcon = 'baro',\n  kFavoriteItemsIcon = 'favr',\n  kForwardArrowIcon = 'faro',\n  kGridIcon = 'grid',\n  kHelpIcon = 'help',\n  kKeepArrangedIcon = 'arng',\n  kLockedIcon = 'lock',\n  kNoFilesIcon = 'nfil',\n  kNoFolderIcon = 'nfld',\n  kNoWriteIcon = 'nwrt',\n  kProtectedApplicationFolderIcon = 'papp',\n  kProtectedSystemFolderIcon = 'psys',\n  kRecentItemsIcon = 'rcnt',\n  kShortcutIcon = 'shrt',\n  kSortAscendingIcon = 'asnd',\n  kSortDescendingIcon = 'dsnd',\n  kUnlockedIcon = 'ulck',\n  kConnectToIcon = 'cnct',\n  kGenericWindowIcon = 'gwin',\n  kQuestionMarkIcon = 'ques',\n  kDeleteAliasIcon = 'dali',\n  kEjectMediaIcon = 'ejec',\n  kBurningIcon = 'burn',\n  kRightContainerArrowIcon = 'rcar'\n};\n\n\n\ntypedef UInt32 IconServicesUsageFlags;\nenum {\n  kIconServicesNormalUsageFlag = 0x00000000,\n  kIconServicesNoBadgeFlag = 0x00000001,\n  kIconServicesUpdateIfNeededFlag = 0x00000002\n};\n# 403 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/IconsCore.h\" 3\nenum {\n  kIconServicesCatalogInfoMask = (kFSCatInfoNodeID | kFSCatInfoParentDirID | kFSCatInfoVolume | kFSCatInfoNodeFlags | kFSCatInfoFinderInfo | kFSCatInfoFinderXInfo | kFSCatInfoUserAccess | kFSCatInfoPermissions | kFSCatInfoContentMod)\n};\n# 434 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/IconsCore.h\" 3\nextern OSErr\nGetIconRefOwners(\n  IconRef theIconRef,\n  UInt16 * owners) ;\n# 457 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/IconsCore.h\" 3\nextern OSErr\nAcquireIconRef(IconRef theIconRef) ;\n# 483 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/IconsCore.h\" 3\nextern OSErr\nReleaseIconRef(IconRef theIconRef) ;\n# 560 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/IconsCore.h\" 3\nextern OSErr\nGetIconRef(\n  SInt16 vRefNum,\n  OSType creator,\n  OSType iconType,\n  IconRef * theIconRef) ;\n# 593 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/IconsCore.h\" 3\nextern OSErr\nGetIconRefFromFolder(\n  SInt16 vRefNum,\n  SInt32 parentFolderID,\n  SInt32 folderID,\n  SInt8 attributes,\n  SInt8 accessPrivileges,\n  IconRef * theIconRef) ;\n# 653 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/IconsCore.h\" 3\nextern OSStatus\nGetIconRefFromFileInfo(\n  const FSRef * inRef,\n  UniCharCount inFileNameLength,\n  const UniChar * inFileName,\n  FSCatalogInfoBitmap inWhichInfo,\n  const FSCatalogInfo * inCatalogInfo,\n  IconServicesUsageFlags inUsageFlags,\n  IconRef * outIconRef,\n  SInt16 * outLabel) ;\n# 709 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/IconsCore.h\" 3\nextern OSErr\nGetIconRefFromTypeInfo(\n  OSType inCreator,\n  OSType inType,\n  CFStringRef inExtension,\n  CFStringRef inMIMEType,\n  IconServicesUsageFlags inUsageFlags,\n  IconRef * outIconRef) ;\n# 749 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/IconsCore.h\" 3\nextern OSStatus\nGetIconRefFromIconFamilyPtr(\n  const IconFamilyResource * inIconFamilyPtr,\n  Size inSize,\n  IconRef * outIconRef) ;\n# 784 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/IconsCore.h\" 3\nextern OSStatus\nGetIconRefFromComponent(\n  Component inComponent,\n  IconRef * outIconRef) ;\n# 820 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/IconsCore.h\" 3\nextern OSErr\nRegisterIconRefFromIconFamily(\n  OSType creator,\n  OSType iconType,\n  IconFamilyHandle iconFamily,\n  IconRef * theIconRef) ;\n# 893 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/IconsCore.h\" 3\nextern OSStatus\nRegisterIconRefFromFSRef(\n  OSType creator,\n  OSType iconType,\n  const FSRef * iconFile,\n  IconRef * theIconRef) ;\n# 920 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/IconsCore.h\" 3\nextern OSErr\nUnregisterIconRef(\n  OSType creator,\n  OSType iconType) ;\n# 951 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/IconsCore.h\" 3\nextern OSErr\nUpdateIconRef(IconRef theIconRef) ;\n# 1005 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/IconsCore.h\" 3\nextern OSErr\nOverrideIconRef(\n  IconRef oldIconRef,\n  IconRef newIconRef) ;\n# 1029 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/IconsCore.h\" 3\nextern OSErr\nRemoveIconRefOverride(IconRef theIconRef) ;\n# 1059 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/IconsCore.h\" 3\nextern OSErr\nCompositeIconRef(\n  IconRef backgroundIconRef,\n  IconRef foregroundIconRef,\n  IconRef * compositeIconRef) ;\n# 1084 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/IconsCore.h\" 3\nextern OSErr\nIsIconRefComposite(\n  IconRef compositeIconRef,\n  IconRef * backgroundIconRef,\n  IconRef * foregroundIconRef) ;\n# 1115 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/IconsCore.h\" 3\nextern Boolean\nIsValidIconRef(IconRef theIconRef) ;\n# 1147 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/IconsCore.h\" 3\nextern Boolean\nIsDataAvailableInIconRef(\n  OSType inIconKind,\n  IconRef inIconRef) ;\n# 1238 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/IconsCore.h\" 3\nextern OSErr\nSetCustomIconsEnabled(\n  SInt16 vRefNum,\n  Boolean enableCustomIcons) ;\n# 1262 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/IconsCore.h\" 3\nextern OSErr\nGetCustomIconsEnabled(\n  SInt16 vRefNum,\n  Boolean * customIconsEnabled) ;\n# 1381 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/IconsCore.h\" 3\nextern OSStatus\nReadIconFromFSRef(\n  const FSRef * ref,\n  IconFamilyHandle * iconFamily) ;\n# 22 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LaunchServices.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 1 3\n# 38 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\n#pragma pack(push, 2)\n\n\n\n\n\nenum {\n  kLSAppInTrashErr = -10660,\n  kLSExecutableIncorrectFormat = -10661,\n  kLSAttributeNotFoundErr = -10662,\n  kLSAttributeNotSettableErr = -10663,\n  kLSIncompatibleApplicationVersionErr = -10664,\n  kLSNoRosettaEnvironmentErr = -10665,\n  kLSUnknownErr = -10810,\n  kLSNotAnApplicationErr = -10811,\n  kLSNotInitializedErr = -10812,\n  kLSDataUnavailableErr = -10813,\n  kLSApplicationNotFoundErr = -10814,\n  kLSUnknownTypeErr = -10815,\n  kLSDataTooOldErr = -10816,\n  kLSDataErr = -10817,\n  kLSLaunchInProgressErr = -10818,\n  kLSNotRegisteredErr = -10819,\n  kLSAppDoesNotClaimTypeErr = -10820,\n  kLSAppDoesNotSupportSchemeWarning = -10821,\n  kLSServerCommunicationErr = -10822,\n  kLSCannotSetInfoErr = -10823,\n  kLSNoRegistrationInfoErr = -10824,\n  kLSIncompatibleSystemVersionErr = -10825,\n  kLSNoLaunchPermissionErr = -10826,\n  kLSNoExecutableErr = -10827,\n  kLSNoClassicEnvironmentErr = -10828,\n  kLSMultipleSessionsNotSupportedErr = -10829\n};\n\ntypedef OptionBits LSInitializeFlags;\nenum {\n  kLSInitializeDefaults = 0x00000001\n};\n\nenum {\n  kLSMinCatInfoBitmap = (kFSCatInfoNodeFlags | kFSCatInfoParentDirID | kFSCatInfoFinderInfo | kFSCatInfoFinderXInfo)\n};\n\n\ntypedef OptionBits LSRequestedInfo;\nenum {\n  kLSRequestExtension = 0x00000001,\n  kLSRequestTypeCreator = 0x00000002,\n  kLSRequestBasicFlagsOnly = 0x00000004,\n  kLSRequestAppTypeFlags = 0x00000008,\n  kLSRequestAllFlags = 0x00000010,\n  kLSRequestIconAndKind = 0x00000020,\n  kLSRequestExtensionFlagsOnly = 0x00000040,\n  kLSRequestAllInfo = (UInt32)0xFFFFFFFF\n};\n\ntypedef OptionBits LSItemInfoFlags;\nenum {\n  kLSItemInfoIsPlainFile = 0x00000001,\n  kLSItemInfoIsPackage = 0x00000002,\n  kLSItemInfoIsApplication = 0x00000004,\n  kLSItemInfoIsContainer = 0x00000008,\n  kLSItemInfoIsAliasFile = 0x00000010,\n  kLSItemInfoIsSymlink = 0x00000020,\n  kLSItemInfoIsInvisible = 0x00000040,\n  kLSItemInfoIsNativeApp = 0x00000080,\n  kLSItemInfoIsClassicApp = 0x00000100,\n  kLSItemInfoAppPrefersNative = 0x00000200,\n  kLSItemInfoAppPrefersClassic = 0x00000400,\n  kLSItemInfoAppIsScriptable = 0x00000800,\n  kLSItemInfoIsVolume = 0x00001000,\n  kLSItemInfoExtensionIsHidden = 0x00100000\n};\n\ntypedef OptionBits LSRolesMask;\nenum {\n  kLSRolesNone = 0x00000001,\n  kLSRolesViewer = 0x00000002,\n  kLSRolesEditor = 0x00000004,\n  kLSRolesShell = 0x00000008,\n  kLSRolesAll = (UInt32)0xFFFFFFFF\n};\n# 129 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nenum {\n  kLSUnknownType = 0,\n  kLSUnknownCreator = 0\n};\n\nstruct LSItemInfoRecord {\n  LSItemInfoFlags flags;\n  OSType filetype;\n  OSType creator;\n  CFStringRef extension;\n\n\n\n\n\n\n};\ntypedef struct LSItemInfoRecord LSItemInfoRecord;\n\ntypedef OptionBits LSAcceptanceFlags;\nenum {\n  kLSAcceptDefault = 0x00000001,\n  kLSAcceptAllowLoginUI = 0x00000002\n};\n# 170 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern OSStatus\nLSInit(LSInitializeFlags inFlags) __attribute__((deprecated));\n# 186 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern OSStatus\nLSTerm(void) __attribute__((deprecated));\n# 220 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern OSStatus\nLSCopyItemInfoForRef(\n  const FSRef * inItemRef,\n  LSRequestedInfo inWhichInfo,\n  LSItemInfoRecord * outItemInfo) ;\n# 256 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern OSStatus\nLSCopyItemInfoForURL(\n  CFURLRef inURL,\n  LSRequestedInfo inWhichInfo,\n  LSItemInfoRecord * outItemInfo) ;\n# 295 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern OSStatus\nLSGetExtensionInfo(\n  UniCharCount inNameLen,\n  const UniChar inNameBuffer[],\n  UniCharCount * outExtStartIndex) ;\n# 330 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern OSStatus\nLSCopyDisplayNameForRef(\n  const FSRef * inRef,\n  CFStringRef * outDisplayName) ;\n# 364 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern OSStatus\nLSCopyDisplayNameForURL(\n  CFURLRef inURL,\n  CFStringRef * outDisplayName) ;\n# 399 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern OSStatus\nLSSetExtensionHiddenForRef(\n  const FSRef * inRef,\n  Boolean inHide) ;\n# 434 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern OSStatus\nLSSetExtensionHiddenForURL(\n  CFURLRef inURL,\n  Boolean inHide) ;\n# 468 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern OSStatus\nLSCopyKindStringForRef(\n  const FSRef * inFSRef,\n  CFStringRef * outKindString) ;\n# 502 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern OSStatus\nLSCopyKindStringForURL(\n  CFURLRef inURL,\n  CFStringRef * outKindString) ;\n# 553 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern OSStatus\nLSCopyKindStringForTypeInfo(\n  OSType inType,\n  OSType inCreator,\n  CFStringRef inExtension,\n  CFStringRef * outKindString) ;\n# 589 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern OSStatus\nLSCopyKindStringForMIMEType(\n  CFStringRef inMIMEType,\n  CFStringRef * outKindString) ;\n# 635 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern OSStatus\nLSGetApplicationForItem(\n  const FSRef * inItemRef,\n  LSRolesMask inRoleMask,\n  FSRef * outAppRef,\n  CFURLRef * outAppURL) ;\n# 692 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern OSStatus\nLSGetApplicationForInfo(\n  OSType inType,\n  OSType inCreator,\n  CFStringRef inExtension,\n  LSRolesMask inRoleMask,\n  FSRef * outAppRef,\n  CFURLRef * outAppURL) ;\n# 738 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern OSStatus\nLSCopyApplicationForMIMEType(\n  CFStringRef inMIMEType,\n  LSRolesMask inRoleMask,\n  CFURLRef * outAppURL) ;\n# 786 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern OSStatus\nLSGetApplicationForURL(\n  CFURLRef inURL,\n  LSRolesMask inRoleMask,\n  FSRef * outAppRef,\n  CFURLRef * outAppURL) ;\n# 837 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern OSStatus\nLSFindApplicationForInfo(\n  OSType inCreator,\n  CFStringRef inBundleID,\n  CFStringRef inName,\n  FSRef * outAppRef,\n  CFURLRef * outAppURL) ;\n# 885 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern OSStatus\nLSCanRefAcceptItem(\n  const FSRef * inItemFSRef,\n  const FSRef * inTargetRef,\n  LSRolesMask inRoleMask,\n  LSAcceptanceFlags inFlags,\n  Boolean * outAcceptsItem) ;\n# 933 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern OSStatus\nLSCanURLAcceptURL(\n  CFURLRef inItemURL,\n  CFURLRef inTargetURL,\n  LSRolesMask inRoleMask,\n  LSAcceptanceFlags inFlags,\n  Boolean * outAcceptsItem) ;\n# 976 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern OSStatus\nLSRegisterURL(\n  CFURLRef inURL,\n  Boolean inUpdate) ;\n# 1015 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern OSStatus\nLSRegisterFSRef(\n  const FSRef * inRef,\n  Boolean inUpdate) ;\n# 1058 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern CFArrayRef\nLSCopyApplicationURLsForURL(\n  CFURLRef inURL,\n  LSRolesMask inRoleMask) ;\n# 1143 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern const CFStringRef kLSItemContentType ;\n# 1152 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern const CFStringRef kLSItemFileType ;\n# 1161 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern const CFStringRef kLSItemFileCreator ;\n# 1170 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern const CFStringRef kLSItemExtension ;\n# 1179 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern const CFStringRef kLSItemDisplayName ;\n# 1188 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern const CFStringRef kLSItemDisplayKind ;\n# 1197 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern const CFStringRef kLSItemRoleHandlerDisplayName ;\n# 1206 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern const CFStringRef kLSItemIsInvisible ;\n# 1215 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern const CFStringRef kLSItemExtensionIsHidden ;\n# 1224 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern const CFStringRef kLSItemQuarantineProperties ;\n# 1261 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern OSStatus\nLSCopyItemAttribute(\n  const FSRef * inItem,\n  LSRolesMask inRoles,\n  CFStringRef inAttributeName,\n  CFTypeRef * outValue) ;\n# 1309 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern OSStatus\nLSCopyItemAttributes(\n  const FSRef * inItem,\n  LSRolesMask inRoles,\n  CFArrayRef inAttributeNames,\n  CFDictionaryRef * outValues) ;\n# 1353 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern OSStatus\nLSSetItemAttribute(\n  const FSRef * inItem,\n  LSRolesMask inRoles,\n  CFStringRef inAttributeName,\n  CFTypeRef inValue) ;\n# 1385 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern CFStringRef\nLSCopyDefaultRoleHandlerForContentType(\n  CFStringRef inContentType,\n  LSRolesMask inRole) ;\n# 1413 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern CFArrayRef\nLSCopyAllRoleHandlersForContentType(\n  CFStringRef inContentType,\n  LSRolesMask inRole) ;\n# 1439 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern OSStatus\nLSSetDefaultRoleHandlerForContentType(\n  CFStringRef inContentType,\n  LSRolesMask inRole,\n  CFStringRef inHandlerBundleID) ;\n# 1458 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\ntypedef OptionBits LSHandlerOptions;\nenum {\n  kLSHandlerOptionsDefault = 0,\n  kLSHandlerOptionsIgnoreCreator = 1\n};\n# 1481 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern LSHandlerOptions\nLSGetHandlerOptionsForContentType(CFStringRef inContentType) ;\n# 1502 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern OSStatus\nLSSetHandlerOptionsForContentType(\n  CFStringRef inContentType,\n  LSHandlerOptions inOptions) ;\n# 1527 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern CFStringRef\nLSCopyDefaultHandlerForURLScheme(CFStringRef inURLScheme) ;\n# 1552 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern CFArrayRef\nLSCopyAllHandlersForURLScheme(CFStringRef inURLScheme) ;\n# 1575 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfo.h\" 3\nextern OSStatus\nLSSetDefaultHandlerForURLScheme(\n  CFStringRef inURLScheme,\n  CFStringRef inHandlerBundleID) ;\n\n\n\n#pragma pack(pop)\n# 26 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LaunchServices.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSOpen.h\" 1 3\n# 48 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSOpen.h\" 3\n#pragma pack(push, 2)\n\n\n\n\n\ntypedef OptionBits LSLaunchFlags;\nenum {\n  kLSLaunchDefaults = 0x00000001,\n  kLSLaunchAndPrint = 0x00000002,\n  kLSLaunchReserved2 = 0x00000004,\n  kLSLaunchReserved3 = 0x00000008,\n  kLSLaunchReserved4 = 0x00000010,\n  kLSLaunchReserved5 = 0x00000020,\n  kLSLaunchAndDisplayErrors = 0x00000040,\n  kLSLaunchInhibitBGOnly = 0x00000080,\n  kLSLaunchDontAddToRecents = 0x00000100,\n  kLSLaunchDontSwitch = 0x00000200,\n  kLSLaunchNoParams = 0x00000800,\n  kLSLaunchAsync = 0x00010000,\n  kLSLaunchStartClassic = 0x00020000,\n  kLSLaunchInClassic = 0x00040000,\n  kLSLaunchNewInstance = 0x00080000,\n  kLSLaunchAndHide = 0x00100000,\n  kLSLaunchAndHideOthers = 0x00200000,\n  kLSLaunchHasUntrustedContents = 0x00400000\n};\n\nstruct LSLaunchFSRefSpec {\n  const FSRef * appRef;\n  ItemCount numDocs;\n  const FSRef * itemRefs;\n  const AEDesc * passThruParams;\n\n  LSLaunchFlags launchFlags;\n  void * asyncRefCon;\n};\ntypedef struct LSLaunchFSRefSpec LSLaunchFSRefSpec;\nstruct LSLaunchURLSpec {\n  CFURLRef appURL;\n  CFArrayRef itemURLs;\n  const AEDesc * passThruParams;\n  LSLaunchFlags launchFlags;\n  void * asyncRefCon;\n};\ntypedef struct LSLaunchURLSpec LSLaunchURLSpec;\n# 131 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSOpen.h\" 3\nextern OSStatus\nLSOpenFSRef(\n  const FSRef * inRef,\n  FSRef * outLaunchedRef) ;\n# 171 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSOpen.h\" 3\nextern OSStatus\nLSOpenCFURLRef(\n  CFURLRef inURL,\n  CFURLRef * outLaunchedURL) ;\n# 205 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSOpen.h\" 3\nextern OSStatus\nLSOpenFromRefSpec(\n  const LSLaunchFSRefSpec * inLaunchSpec,\n  FSRef * outLaunchedRef) ;\n# 241 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSOpen.h\" 3\nextern OSStatus\nLSOpenFromURLSpec(\n  const LSLaunchURLSpec * inLaunchSpec,\n  CFURLRef * outLaunchedURL) ;\n# 262 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSOpen.h\" 3\nstruct LSApplicationParameters {\n  CFIndex version;\n  LSLaunchFlags flags;\n  const FSRef * application;\n  void * asyncLaunchRefCon;\n  CFDictionaryRef environment;\n\n  CFArrayRef argv;\n\n  AppleEvent * initialEvent;\n};\ntypedef struct LSApplicationParameters LSApplicationParameters;\n# 301 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSOpen.h\" 3\nextern OSStatus\nLSOpenApplication(\n  const LSApplicationParameters * appParams,\n  ProcessSerialNumber * outPSN) ;\n# 346 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSOpen.h\" 3\nextern OSStatus\nLSOpenItemsWithRole(\n  const FSRef * inItems,\n  CFIndex inItemCount,\n  LSRolesMask inRole,\n  const AEKeyDesc * inAEParam,\n  const LSApplicationParameters * inAppParams,\n  ProcessSerialNumber * outPSNs,\n  CFIndex inMaxPSNCount) ;\n# 399 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSOpen.h\" 3\nextern OSStatus\nLSOpenURLsWithRole(\n  CFArrayRef inURLs,\n  LSRolesMask inRole,\n  const AEKeyDesc * inAEParam,\n  const LSApplicationParameters * inAppParams,\n  ProcessSerialNumber * outPSNs,\n  CFIndex inMaxPSNCount) ;\n\n\n\n\n\n#pragma pack(pop)\n# 30 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LaunchServices.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSQuarantine.h\" 1 3\n# 100 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSQuarantine.h\" 3\nextern const CFStringRef kLSQuarantineAgentNameKey ;\n# 109 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSQuarantine.h\" 3\nextern const CFStringRef kLSQuarantineAgentBundleIdentifierKey ;\n# 118 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSQuarantine.h\" 3\nextern const CFStringRef kLSQuarantineTimeStampKey ;\n# 127 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSQuarantine.h\" 3\nextern const CFStringRef kLSQuarantineTypeKey ;\n# 136 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSQuarantine.h\" 3\nextern const CFStringRef kLSQuarantineTypeWebDownload ;\n# 145 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSQuarantine.h\" 3\nextern const CFStringRef kLSQuarantineTypeOtherDownload ;\n# 154 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSQuarantine.h\" 3\nextern const CFStringRef kLSQuarantineTypeEmailAttachment ;\n# 163 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSQuarantine.h\" 3\nextern const CFStringRef kLSQuarantineTypeInstantMessageAttachment ;\n# 172 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSQuarantine.h\" 3\nextern const CFStringRef kLSQuarantineTypeCalendarEventAttachment ;\n# 181 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSQuarantine.h\" 3\nextern const CFStringRef kLSQuarantineTypeOtherAttachment ;\n# 190 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSQuarantine.h\" 3\nextern const CFStringRef kLSQuarantineOriginURLKey ;\n# 199 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSQuarantine.h\" 3\nextern const CFStringRef kLSQuarantineDataURLKey ;\n# 34 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LaunchServices.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h\" 1 3\n# 54 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h\" 3\ntypedef struct OpaqueLSSharedFileListRef* LSSharedFileListRef;\ntypedef struct OpaqueLSSharedFileListItemRef* LSSharedFileListItemRef;\n# 67 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h\" 3\nextern CFStringRef kLSSharedFileListFavoriteVolumes ;\n# 78 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h\" 3\nextern CFStringRef kLSSharedFileListFavoriteItems ;\n# 89 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h\" 3\nextern CFStringRef kLSSharedFileListRecentApplicationItems ;\n# 100 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h\" 3\nextern CFStringRef kLSSharedFileListRecentDocumentItems ;\n# 111 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h\" 3\nextern CFStringRef kLSSharedFileListRecentServerItems ;\n# 122 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h\" 3\nextern CFStringRef kLSSharedFileListSessionLoginItems ;\n# 133 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h\" 3\nextern CFStringRef kLSSharedFileListGlobalLoginItems ;\n# 151 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h\" 3\nextern CFStringRef kLSSharedFileListRecentItemsMaxAmount ;\n# 165 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h\" 3\nextern CFStringRef kLSSharedFileListVolumesComputerVisible ;\n# 179 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h\" 3\nextern CFStringRef kLSSharedFileListVolumesIDiskVisible ;\n# 193 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h\" 3\nextern CFStringRef kLSSharedFileListVolumesNetworkVisible ;\n# 210 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h\" 3\nextern LSSharedFileListItemRef kLSSharedFileListItemBeforeFirst ;\n# 224 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h\" 3\nextern LSSharedFileListItemRef kLSSharedFileListItemLast ;\n# 241 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h\" 3\nextern CFStringRef kLSSharedFileListItemHidden ;\n# 254 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h\" 3\nextern CFStringRef kLSSharedFileListLoginItemHidden ;\n\n\nenum {\n  kLSSharedFileListNoUserInteraction = 1 << 0,\n  kLSSharedFileListDoNotMountVolumes = 1 << 1\n};\n# 270 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h\" 3\ntypedef void ( * LSSharedFileListChangedProcPtr)(LSSharedFileListRef inList, void *context);\n# 290 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h\" 3\nextern CFTypeID\nLSSharedFileListGetTypeID(void) ;\n# 312 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h\" 3\nextern CFTypeID\nLSSharedFileListItemGetTypeID(void) ;\n# 353 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h\" 3\nextern LSSharedFileListRef\nLSSharedFileListCreate(\n  CFAllocatorRef inAllocator,\n  CFStringRef inListType,\n  CFTypeRef listOptions) ;\n# 389 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h\" 3\nextern OSStatus\nLSSharedFileListSetAuthorization(\n  LSSharedFileListRef inList,\n  AuthorizationRef inAuthorization) ;\n# 431 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h\" 3\nextern void\nLSSharedFileListAddObserver(\n  LSSharedFileListRef inList,\n  CFRunLoopRef inRunloop,\n  CFStringRef inRunloopMode,\n  LSSharedFileListChangedProcPtr callback,\n  void * context) ;\n# 474 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h\" 3\nextern void\nLSSharedFileListRemoveObserver(\n  LSSharedFileListRef inList,\n  CFRunLoopRef inRunloop,\n  CFStringRef inRunloopMode,\n  LSSharedFileListChangedProcPtr callback,\n  void * context) ;\n# 505 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h\" 3\nextern UInt32\nLSSharedFileListGetSeedValue(LSSharedFileListRef inList) ;\n# 539 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h\" 3\nextern CFTypeRef\nLSSharedFileListCopyProperty(\n  LSSharedFileListRef inList,\n  CFStringRef inPropertyName) ;\n# 573 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h\" 3\nextern OSStatus\nLSSharedFileListSetProperty(\n  LSSharedFileListRef inList,\n  CFStringRef inPropertyName,\n  CFTypeRef inPropertyData) ;\n# 610 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h\" 3\nextern CFArrayRef\nLSSharedFileListCopySnapshot(\n  LSSharedFileListRef inList,\n  UInt32 * outSnapshotSeed) ;\n# 667 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h\" 3\nextern LSSharedFileListItemRef\nLSSharedFileListInsertItemURL(\n  LSSharedFileListRef inList,\n  LSSharedFileListItemRef insertAfterThisItem,\n  CFStringRef inDisplayName,\n  IconRef inIconRef,\n  CFURLRef inURL,\n  CFDictionaryRef inPropertiesToSet,\n  CFArrayRef inPropertiesToClear) ;\n# 729 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h\" 3\nextern LSSharedFileListItemRef\nLSSharedFileListInsertItemFSRef(\n  LSSharedFileListRef inList,\n  LSSharedFileListItemRef insertAfterThisItem,\n  CFStringRef inDisplayName,\n  IconRef inIconRef,\n  const FSRef * inFSRef,\n  CFDictionaryRef inPropertiesToSet,\n  CFArrayRef inPropertiesToClear) ;\n# 770 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h\" 3\nextern OSStatus\nLSSharedFileListItemMove(\n  LSSharedFileListRef inList,\n  LSSharedFileListItemRef inItem,\n  LSSharedFileListItemRef inMoveAfterItem) ;\n# 802 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h\" 3\nextern OSStatus\nLSSharedFileListItemRemove(\n  LSSharedFileListRef inList,\n  LSSharedFileListItemRef inItem) ;\n# 830 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h\" 3\nextern OSStatus\nLSSharedFileListRemoveAllItems(LSSharedFileListRef inList) ;\n# 851 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h\" 3\nextern UInt32\nLSSharedFileListItemGetID(LSSharedFileListItemRef inItem) ;\n# 876 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h\" 3\nextern IconRef\nLSSharedFileListItemCopyIconRef(LSSharedFileListItemRef inItem) ;\n# 898 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h\" 3\nextern CFStringRef\nLSSharedFileListItemCopyDisplayName(LSSharedFileListItemRef inItem) ;\n# 934 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h\" 3\nextern OSStatus\nLSSharedFileListItemResolve(\n  LSSharedFileListItemRef inItem,\n  UInt32 inFlags,\n  CFURLRef * outURL,\n  FSRef * outRef) ;\n# 960 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h\" 3\nextern CFTypeRef\nLSSharedFileListItemCopyProperty(\n  LSSharedFileListItemRef inItem,\n  CFStringRef inPropertyName) ;\n# 983 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h\" 3\nextern OSStatus\nLSSharedFileListItemSetProperty(\n  LSSharedFileListItemRef inItem,\n  CFStringRef inPropertyName,\n  CFTypeRef inPropertyData) ;\n# 38 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LaunchServices.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 1 3\n# 101 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeItem ;\n# 110 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeContent ;\n# 119 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeCompositeContent ;\n# 128 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeApplication ;\n# 137 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeMessage ;\n# 146 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeContact ;\n# 155 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeArchive ;\n# 164 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeDiskImage ;\n# 251 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeData ;\n# 260 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeDirectory ;\n# 269 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeResolvable ;\n# 278 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeSymLink ;\n# 287 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeMountPoint ;\n# 296 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeAliasFile ;\n# 305 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeAliasRecord ;\n# 314 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeURL ;\n# 323 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeFileURL ;\n# 469 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeText ;\n# 478 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypePlainText ;\n# 487 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeUTF8PlainText ;\n# 496 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeUTF16ExternalPlainText ;\n# 505 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeUTF16PlainText ;\n# 514 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeRTF ;\n# 523 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeHTML ;\n# 532 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeXML ;\n# 541 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeSourceCode ;\n# 550 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeCSource ;\n# 559 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeObjectiveCSource ;\n# 568 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeCPlusPlusSource ;\n# 577 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeObjectiveCPlusPlusSource ;\n# 586 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeCHeader ;\n# 595 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeCPlusPlusHeader ;\n# 604 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeJavaSource ;\n# 659 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypePDF ;\n# 668 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeRTFD ;\n# 677 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeFlatRTFD ;\n# 686 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeTXNTextAndMultimediaData ;\n# 695 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeWebArchive ;\n# 796 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeImage ;\n# 805 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeJPEG ;\n# 814 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeJPEG2000 ;\n# 823 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeTIFF ;\n# 832 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypePICT ;\n# 841 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeGIF ;\n# 850 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypePNG ;\n# 859 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeQuickTimeImage ;\n# 868 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeAppleICNS ;\n# 877 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeBMP ;\n# 886 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeICO ;\n# 982 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeAudiovisualContent ;\n# 991 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeMovie ;\n# 1000 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeVideo ;\n# 1009 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeAudio ;\n# 1018 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeQuickTimeMovie ;\n# 1027 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeMPEG ;\n# 1036 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeMPEG4 ;\n# 1045 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeMP3 ;\n# 1054 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeMPEG4Audio ;\n# 1063 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeAppleProtectedMPEG4Audio ;\n# 1115 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeFolder ;\n# 1124 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeVolume ;\n# 1133 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypePackage ;\n# 1142 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeBundle ;\n# 1151 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeFramework ;\n# 1179 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeApplicationBundle ;\n# 1188 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeApplicationFile ;\n# 1208 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeVCard ;\n# 1228 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTCoreTypes.h\" 3\nextern const CFStringRef kUTTypeInkText ;\n# 42 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LaunchServices.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTType.h\" 1 3\n# 217 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTType.h\" 3\nextern const CFStringRef kUTExportedTypeDeclarationsKey ;\n# 226 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTType.h\" 3\nextern const CFStringRef kUTImportedTypeDeclarationsKey ;\n# 235 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTType.h\" 3\nextern const CFStringRef kUTTypeIdentifierKey ;\n# 244 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTType.h\" 3\nextern const CFStringRef kUTTypeTagSpecificationKey ;\n# 253 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTType.h\" 3\nextern const CFStringRef kUTTypeConformsToKey ;\n# 262 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTType.h\" 3\nextern const CFStringRef kUTTypeDescriptionKey ;\n# 271 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTType.h\" 3\nextern const CFStringRef kUTTypeIconFileKey ;\n# 280 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTType.h\" 3\nextern const CFStringRef kUTTypeReferenceURLKey ;\n# 289 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTType.h\" 3\nextern const CFStringRef kUTTypeVersionKey ;\n# 307 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTType.h\" 3\nextern const CFStringRef kUTTagClassFilenameExtension ;\n# 316 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTType.h\" 3\nextern const CFStringRef kUTTagClassMIMEType ;\n# 325 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTType.h\" 3\nextern const CFStringRef kUTTagClassNSPboardType ;\n# 334 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTType.h\" 3\nextern const CFStringRef kUTTagClassOSType ;\n# 385 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTType.h\" 3\nextern CFStringRef\nUTTypeCreatePreferredIdentifierForTag(\n  CFStringRef inTagClass,\n  CFStringRef inTag,\n  CFStringRef inConformingToUTI) ;\n# 436 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTType.h\" 3\nextern CFArrayRef\nUTTypeCreateAllIdentifiersForTag(\n  CFStringRef inTagClass,\n  CFStringRef inTag,\n  CFStringRef inConformingToUTI) ;\n# 473 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTType.h\" 3\nextern CFStringRef\nUTTypeCopyPreferredTagWithClass(\n  CFStringRef inUTI,\n  CFStringRef inTagClass) ;\n# 507 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTType.h\" 3\nextern Boolean\nUTTypeEqual(\n  CFStringRef inUTI1,\n  CFStringRef inUTI2) ;\n# 538 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTType.h\" 3\nextern Boolean\nUTTypeConformsTo(\n  CFStringRef inUTI,\n  CFStringRef inConformsToUTI) ;\n# 567 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTType.h\" 3\nextern CFStringRef\nUTTypeCopyDescription(CFStringRef inUTI) ;\n# 597 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTType.h\" 3\nextern CFDictionaryRef\nUTTypeCopyDeclaration(CFStringRef inUTI) ;\n# 625 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTType.h\" 3\nextern CFURLRef\nUTTypeCopyDeclaringBundleURL(CFStringRef inUTI) ;\n# 654 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTType.h\" 3\nextern CFStringRef\nUTCreateStringForOSType(OSType inOSType) ;\n# 683 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/UTType.h\" 3\nextern OSType\nUTGetOSTypeFromString(CFStringRef inString) ;\n# 46 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LaunchServices.h\" 2 3\n# 42 \"/System/Library/Frameworks/CoreServices.framework/Headers/CoreServices.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SearchKit.h\" 1 3\n# 30 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SearchKit.h\" 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKDocument.h\" 1 3\n# 51 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKDocument.h\" 3\ntypedef CFTypeRef SKDocumentRef;\n# 66 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKDocument.h\" 3\nextern CFTypeID\nSKDocumentGetTypeID(void) ;\n# 97 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKDocument.h\" 3\nextern SKDocumentRef\nSKDocumentCreateWithURL(CFURLRef inURL) ;\n# 115 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKDocument.h\" 3\nextern CFURLRef\nSKDocumentCopyURL(SKDocumentRef inDocument) ;\n# 156 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKDocument.h\" 3\nextern SKDocumentRef\nSKDocumentCreate(\n  CFStringRef inScheme,\n  SKDocumentRef inParent,\n  CFStringRef inName) ;\n# 182 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKDocument.h\" 3\nextern CFStringRef\nSKDocumentGetSchemeName(SKDocumentRef inDocument) ;\n# 205 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKDocument.h\" 3\nextern CFStringRef\nSKDocumentGetName(SKDocumentRef inDocument) ;\n# 229 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKDocument.h\" 3\nextern SKDocumentRef\nSKDocumentGetParent(SKDocumentRef inDocument) ;\n# 31 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SearchKit.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKAnalysis.h\" 1 3\n# 54 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKAnalysis.h\" 3\nextern const CFStringRef kSKMinTermLength ;\n# 71 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKAnalysis.h\" 3\nextern const CFStringRef kSKSubstitutions ;\n# 88 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKAnalysis.h\" 3\nextern const CFStringRef kSKStopWords ;\n# 107 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKAnalysis.h\" 3\nextern const CFStringRef kSKProximityIndexing ;\n# 127 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKAnalysis.h\" 3\nextern const CFStringRef kSKMaximumTerms ;\n# 146 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKAnalysis.h\" 3\nextern const CFStringRef kSKTermChars ;\n# 165 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKAnalysis.h\" 3\nextern const CFStringRef kSKStartTermChars ;\n# 184 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKAnalysis.h\" 3\nextern const CFStringRef kSKEndTermChars ;\n# 207 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKAnalysis.h\" 3\nextern const CFStringRef kSKLanguageTypes __attribute__((deprecated));\n# 35 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SearchKit.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 1 3\n# 62 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\ntypedef struct __SKIndex* SKIndexRef;\n# 74 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\nextern CFTypeID\nSKIndexGetTypeID(void) ;\n# 86 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\ntypedef struct __SKIndexDocumentIterator* SKIndexDocumentIteratorRef;\n# 98 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\nextern CFTypeID\nSKIndexDocumentIteratorGetTypeID(void) ;\n# 112 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\nenum SKIndexType {\n\n\n\n\n  kSKIndexUnknown = 0,\n\n\n\n\n  kSKIndexInverted = 1,\n\n\n\n\n  kSKIndexVector = 2,\n\n\n\n\n\n  kSKIndexInvertedVector = 3\n};\ntypedef enum SKIndexType SKIndexType;\n# 144 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\nenum SKDocumentIndexState {\n\n\n\n\n  kSKDocumentStateNotIndexed = 0,\n\n\n\n\n  kSKDocumentStateIndexed = 1,\n\n\n\n\n\n  kSKDocumentStateAddPending = 2,\n\n\n\n\n\n  kSKDocumentStateDeletePending = 3\n};\ntypedef enum SKDocumentIndexState SKDocumentIndexState;\n# 213 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\nextern SKIndexRef\nSKIndexCreateWithURL(\n  CFURLRef inURL,\n  CFStringRef inIndexName,\n  SKIndexType inIndexType,\n  CFDictionaryRef inAnalysisProperties) ;\n# 254 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\nextern SKIndexRef\nSKIndexOpenWithURL(\n  CFURLRef inURL,\n  CFStringRef inIndexName,\n  Boolean inWriteAccess) ;\n# 293 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\nextern SKIndexRef\nSKIndexCreateWithMutableData(\n  CFMutableDataRef inData,\n  CFStringRef inIndexName,\n  SKIndexType inIndexType,\n  CFDictionaryRef inAnalysisProperties) ;\n# 330 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\nextern SKIndexRef\nSKIndexOpenWithData(\n  CFDataRef inData,\n  CFStringRef inIndexName) ;\n# 366 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\nextern SKIndexRef\nSKIndexOpenWithMutableData(\n  CFMutableDataRef inData,\n  CFStringRef inIndexName) ;\n# 393 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\nextern Boolean\nSKIndexFlush(SKIndexRef inIndex) ;\n# 408 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\nextern void\nSKIndexSetMaximumBytesBeforeFlush(\n  SKIndexRef inIndex,\n  CFIndex inBytesForUpdate) ;\n# 429 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\nextern CFIndex\nSKIndexGetMaximumBytesBeforeFlush(SKIndexRef inIndex) ;\n# 455 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\nextern Boolean\nSKIndexCompact(SKIndexRef inIndex) ;\n# 478 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\nextern SKIndexType\nSKIndexGetIndexType(SKIndexRef inIndex) ;\n# 497 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\nextern CFDictionaryRef\nSKIndexGetAnalysisProperties(SKIndexRef inIndex) ;\n# 521 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\nextern CFIndex\nSKIndexGetDocumentCount(SKIndexRef inIndex) ;\n# 536 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\nextern void\nSKIndexClose(SKIndexRef inIndex) ;\n\n\n\n\n\ntypedef CFIndex SKDocumentID;\n# 574 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\nextern Boolean\nSKIndexAddDocumentWithText(\n  SKIndexRef inIndex,\n  SKDocumentRef inDocument,\n  CFStringRef inDocumentText,\n  Boolean inCanReplace) ;\n# 623 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\nextern Boolean\nSKIndexAddDocument(\n  SKIndexRef inIndex,\n  SKDocumentRef inDocument,\n  CFStringRef inMIMETypeHint,\n  Boolean inCanReplace) ;\n# 655 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\nextern Boolean\nSKIndexRemoveDocument(\n  SKIndexRef inIndex,\n  SKDocumentRef inDocument) ;\n# 676 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\nextern CFDictionaryRef\nSKIndexCopyDocumentProperties(\n  SKIndexRef inIndex,\n  SKDocumentRef inDocument) ;\n# 695 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\nextern void\nSKIndexSetDocumentProperties(\n  SKIndexRef inIndex,\n  SKDocumentRef inDocument,\n  CFDictionaryRef inProperties) ;\n# 720 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\nextern SKDocumentIndexState\nSKIndexGetDocumentState(\n  SKIndexRef inIndex,\n  SKDocumentRef inDocument) ;\n# 741 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\nextern SKDocumentID\nSKIndexGetDocumentID(\n  SKIndexRef inIndex,\n  SKDocumentRef inDocument) ;\n# 758 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\nextern SKDocumentRef\nSKIndexCopyDocumentForDocumentID(\n  SKIndexRef inIndex,\n  SKDocumentID inDocumentID) ;\n# 775 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\nextern Boolean\nSKIndexRenameDocument(\n  SKIndexRef inIndex,\n  SKDocumentRef inDocument,\n  CFStringRef inNewName) ;\n# 793 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\nextern Boolean\nSKIndexMoveDocument(\n  SKIndexRef inIndex,\n  SKDocumentRef inDocument,\n  SKDocumentRef inNewParent) ;\n# 812 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\nextern SKIndexDocumentIteratorRef\nSKIndexDocumentIteratorCreate(\n  SKIndexRef inIndex,\n  SKDocumentRef inParentDocument) ;\n# 834 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\nextern SKDocumentRef\nSKIndexDocumentIteratorCopyNext(SKIndexDocumentIteratorRef inIterator) ;\n# 852 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\nextern SKDocumentID\nSKIndexGetMaximumDocumentID(SKIndexRef inIndex) ;\n# 867 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\nextern CFIndex\nSKIndexGetDocumentTermCount(\n  SKIndexRef inIndex,\n  SKDocumentID inDocumentID) ;\n# 887 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\nextern CFArrayRef\nSKIndexCopyTermIDArrayForDocumentID(\n  SKIndexRef inIndex,\n  SKDocumentID inDocumentID) ;\n# 904 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\nextern CFIndex\nSKIndexGetDocumentTermFrequency(\n  SKIndexRef inIndex,\n  SKDocumentID inDocumentID,\n  CFIndex inTermID) ;\n# 927 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\nextern CFIndex\nSKIndexGetMaximumTermID(SKIndexRef inIndex) ;\n# 942 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\nextern CFIndex\nSKIndexGetTermDocumentCount(\n  SKIndexRef inIndex,\n  CFIndex inTermID) ;\n# 962 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\nextern CFArrayRef\nSKIndexCopyDocumentIDArrayForTermID(\n  SKIndexRef inIndex,\n  CFIndex inTermID) ;\n# 979 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\nextern CFStringRef\nSKIndexCopyTermStringForTermID(\n  SKIndexRef inIndex,\n  CFIndex inTermID) ;\n# 999 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\nextern CFIndex\nSKIndexGetTermIDForTermString(\n  SKIndexRef inIndex,\n  CFStringRef inTermString) ;\n# 1025 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKIndex.h\" 3\nextern void\nSKLoadDefaultExtractorPlugIns(void) ;\n# 39 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SearchKit.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKSearch.h\" 1 3\n# 66 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKSearch.h\" 3\ntypedef struct __SKSearch* SKSearchRef;\n# 78 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKSearch.h\" 3\nextern CFTypeID\nSKSearchGetTypeID(void) ;\n# 90 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKSearch.h\" 3\ntypedef UInt32 SKSearchOptions;\nenum {\n  kSKSearchOptionDefault = 0,\n  kSKSearchOptionNoRelevanceScores = 1L << 0,\n  kSKSearchOptionSpaceMeansOR = 1L << 1,\n  kSKSearchOptionFindSimilar = 1L << 2\n};\n# 128 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKSearch.h\" 3\nextern SKSearchRef\nSKSearchCreate(\n  SKIndexRef inIndex,\n  CFStringRef inQuery,\n  SKSearchOptions inSearchOptions) ;\n# 146 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKSearch.h\" 3\nextern void\nSKSearchCancel(SKSearchRef inSearch) ;\n# 194 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKSearch.h\" 3\nextern Boolean\nSKSearchFindMatches(\n  SKSearchRef inSearch,\n  CFIndex inMaximumCount,\n  SKDocumentID * outDocumentIDsArray,\n  float * outScoresArray,\n  CFTimeInterval maximumTime,\n  CFIndex * outFoundCount) ;\n# 235 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKSearch.h\" 3\nextern void\nSKIndexCopyInfoForDocumentIDs(\n  SKIndexRef inIndex,\n  CFIndex inCount,\n  SKDocumentID * inDocumentIDsArray,\n  CFStringRef * outNamesArray,\n  SKDocumentID * outParentIDsArray) ;\n# 269 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKSearch.h\" 3\nextern void\nSKIndexCopyDocumentRefsForDocumentIDs(\n  SKIndexRef inIndex,\n  CFIndex inCount,\n  SKDocumentID * inDocumentIDsArray,\n  SKDocumentRef * outDocumentRefsArray) ;\n# 302 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKSearch.h\" 3\nextern void\nSKIndexCopyDocumentURLsForDocumentIDs(\n  SKIndexRef inIndex,\n  CFIndex inCount,\n  SKDocumentID * inDocumentIDsArray,\n  CFURLRef * outDocumentURLsArray) ;\n# 323 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKSearch.h\" 3\ntypedef struct __SKSearchGroup* SKSearchGroupRef;\n# 335 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKSearch.h\" 3\nextern CFTypeID\nSKSearchGroupGetTypeID(void) __attribute__((deprecated));\n# 346 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKSearch.h\" 3\ntypedef struct __SKSearchResults* SKSearchResultsRef;\n# 358 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKSearch.h\" 3\nextern CFTypeID\nSKSearchResultsGetTypeID(void) __attribute__((deprecated));\n# 374 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKSearch.h\" 3\nenum SKSearchType {\n\n\n\n\n  kSKSearchRanked = 0,\n\n\n\n\n\n  kSKSearchBooleanRanked = 1,\n\n\n\n\n  kSKSearchRequiredRanked = 2,\n\n\n\n\n  kSKSearchPrefixRanked = 3\n};\ntypedef enum SKSearchType SKSearchType;\n# 411 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKSearch.h\" 3\ntypedef Boolean ( * SKSearchResultsFilterCallBack)(SKIndexRef inIndex, SKDocumentRef inDocument, void *inContext);\n# 434 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKSearch.h\" 3\nextern SKSearchGroupRef\nSKSearchGroupCreate(CFArrayRef inArrayOfInIndexes) __attribute__((deprecated));\n# 452 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKSearch.h\" 3\nextern CFArrayRef\nSKSearchGroupCopyIndexes(SKSearchGroupRef inSearchGroup) __attribute__((deprecated));\n# 498 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKSearch.h\" 3\nextern SKSearchResultsRef\nSKSearchResultsCreateWithQuery(\n  SKSearchGroupRef inSearchGroup,\n  CFStringRef inQuery,\n  SKSearchType inSearchType,\n  CFIndex inMaxFoundDocuments,\n  void * inContext,\n  SKSearchResultsFilterCallBack inFilterCallBack) __attribute__((deprecated));\n# 548 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKSearch.h\" 3\nextern SKSearchResultsRef\nSKSearchResultsCreateWithDocuments(\n  SKSearchGroupRef inSearchGroup,\n  CFArrayRef inExampleDocuments,\n  CFIndex inMaxFoundDocuments,\n  void * inContext,\n  SKSearchResultsFilterCallBack inFilterCallBack) __attribute__((deprecated));\n# 568 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKSearch.h\" 3\nextern CFIndex\nSKSearchResultsGetCount(SKSearchResultsRef inSearchResults) __attribute__((deprecated));\n# 617 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKSearch.h\" 3\nextern CFIndex\nSKSearchResultsGetInfoInRange(\n  SKSearchResultsRef inSearchResults,\n  CFRange inRange,\n  SKDocumentRef * outDocumentsArray,\n  SKIndexRef * outIndexesArray,\n  float * outScoresArray) __attribute__((deprecated));\n# 649 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKSearch.h\" 3\nextern CFArrayRef\nSKSearchResultsCopyMatchingTerms(\n  SKSearchResultsRef inSearchResults,\n  CFIndex inItem) __attribute__((deprecated));\n# 43 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SearchKit.h\" 2 3\n\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKSummary.h\" 1 3\n# 53 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKSummary.h\" 3\ntypedef struct __SKSummary* SKSummaryRef;\n# 68 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKSummary.h\" 3\nextern CFTypeID\nSKSummaryGetTypeID(void) ;\n# 96 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKSummary.h\" 3\nextern SKSummaryRef\nSKSummaryCreateWithString(CFStringRef inString) ;\n# 116 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKSummary.h\" 3\nextern CFIndex\nSKSummaryGetSentenceCount(SKSummaryRef summary) ;\n# 136 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKSummary.h\" 3\nextern CFIndex\nSKSummaryGetParagraphCount(SKSummaryRef summary) ;\n# 159 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKSummary.h\" 3\nextern CFStringRef\nSKSummaryCopySentenceAtIndex(\n  SKSummaryRef summary,\n  CFIndex i) ;\n# 184 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKSummary.h\" 3\nextern CFStringRef\nSKSummaryCopyParagraphAtIndex(\n  SKSummaryRef summary,\n  CFIndex i) ;\n# 210 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKSummary.h\" 3\nextern CFStringRef\nSKSummaryCopySentenceSummaryString(\n  SKSummaryRef summary,\n  CFIndex numSentences) ;\n# 236 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKSummary.h\" 3\nextern CFStringRef\nSKSummaryCopyParagraphSummaryString(\n  SKSummaryRef summary,\n  CFIndex numParagraphs) ;\n# 277 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKSummary.h\" 3\nextern CFIndex\nSKSummaryGetSentenceSummaryInfo(\n  SKSummaryRef summary,\n  CFIndex numSentencesInSummary,\n  CFIndex * outRankOrderOfSentences,\n  CFIndex * outSentenceIndexOfSentences,\n  CFIndex * outParagraphIndexOfSentences) ;\n# 317 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SKSummary.h\" 3\nextern CFIndex\nSKSummaryGetParagraphSummaryInfo(\n  SKSummaryRef summary,\n  CFIndex numParagraphsInSummary,\n  CFIndex * outRankOrderOfParagraphs,\n  CFIndex * outParagraphIndexOfParagraphs) ;\n# 47 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/Headers/SearchKit.h\" 2 3\n# 46 \"/System/Library/Frameworks/CoreServices.framework/Headers/CoreServices.h\" 2 3\n\n\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/Metadata.h\" 1 3\n# 10 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/Metadata.h\" 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDItem.h\" 1 3\n# 62 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDItem.h\" 3\n\n\n\n\n\n\n\ntypedef struct __MDItem *MDItemRef;\n\n\n\n\n\nextern CFTypeID MDItemGetTypeID(void) ;\n# 89 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDItem.h\" 3\nextern MDItemRef MDItemCreate(CFAllocatorRef allocator, CFStringRef path) ;\n# 103 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDItem.h\" 3\nextern MDItemRef MDItemCreateWithURL(CFAllocatorRef allocator, CFURLRef url) ;\n# 113 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDItem.h\" 3\nextern CFTypeRef MDItemCopyAttribute(MDItemRef item, CFStringRef name) ;\n# 126 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDItem.h\" 3\nextern CFDictionaryRef MDItemCopyAttributes(MDItemRef item, CFArrayRef names) ;\n# 140 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDItem.h\" 3\nextern CFDictionaryRef MDItemCopyAttributeList(MDItemRef item, ... ) ;\n# 149 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDItem.h\" 3\nextern CFArrayRef MDItemCopyAttributeNames(MDItemRef item) ;\n# 425 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDItem.h\" 3\nextern const CFStringRef kMDItemAttributeChangeDate ;\nextern const CFStringRef kMDItemContentType ;\nextern const CFStringRef kMDItemContentTypeTree ;\nextern const CFStringRef kMDItemKeywords ;\nextern const CFStringRef kMDItemTitle ;\nextern const CFStringRef kMDItemAuthors ;\nextern const CFStringRef kMDItemEditors ;\nextern const CFStringRef kMDItemParticipants ;\nextern const CFStringRef kMDItemProjects ;\nextern const CFStringRef kMDItemWhereFroms ;\nextern const CFStringRef kMDItemComment ;\nextern const CFStringRef kMDItemCopyright ;\nextern const CFStringRef kMDItemLastUsedDate ;\nextern const CFStringRef kMDItemContentCreationDate ;\nextern const CFStringRef kMDItemContentModificationDate ;\nextern const CFStringRef kMDItemDurationSeconds ;\nextern const CFStringRef kMDItemContactKeywords ;\nextern const CFStringRef kMDItemVersion ;\n\nextern const CFStringRef kMDItemPixelHeight ;\nextern const CFStringRef kMDItemPixelWidth ;\nextern const CFStringRef kMDItemPixelCount ;\nextern const CFStringRef kMDItemColorSpace ;\nextern const CFStringRef kMDItemBitsPerSample ;\nextern const CFStringRef kMDItemFlashOnOff ;\nextern const CFStringRef kMDItemFocalLength ;\nextern const CFStringRef kMDItemAcquisitionMake ;\nextern const CFStringRef kMDItemAcquisitionModel ;\nextern const CFStringRef kMDItemISOSpeed ;\nextern const CFStringRef kMDItemOrientation ;\nextern const CFStringRef kMDItemLayerNames ;\nextern const CFStringRef kMDItemWhiteBalance ;\nextern const CFStringRef kMDItemAperture ;\nextern const CFStringRef kMDItemProfileName ;\nextern const CFStringRef kMDItemResolutionWidthDPI ;\nextern const CFStringRef kMDItemResolutionHeightDPI ;\nextern const CFStringRef kMDItemExposureMode ;\nextern const CFStringRef kMDItemExposureTimeSeconds ;\nextern const CFStringRef kMDItemEXIFVersion ;\n\nextern const CFStringRef kMDItemEXIFGPSVersion ;\nextern const CFStringRef kMDItemAltitude ;\nextern const CFStringRef kMDItemLatitude ;\nextern const CFStringRef kMDItemLongitude ;\nextern const CFStringRef kMDItemSpeed ;\nextern const CFStringRef kMDItemTimestamp ;\nextern const CFStringRef kMDItemGPSTrack ;\nextern const CFStringRef kMDItemImageDirection ;\nextern const CFStringRef kMDItemNamedLocation ;\n\nextern const CFStringRef kMDItemCodecs ;\nextern const CFStringRef kMDItemMediaTypes ;\nextern const CFStringRef kMDItemStreamable ;\nextern const CFStringRef kMDItemTotalBitRate ;\nextern const CFStringRef kMDItemVideoBitRate ;\nextern const CFStringRef kMDItemAudioBitRate ;\nextern const CFStringRef kMDItemDeliveryType ;\n\nextern const CFStringRef kMDItemAlbum ;\nextern const CFStringRef kMDItemHasAlphaChannel ;\nextern const CFStringRef kMDItemRedEyeOnOff ;\nextern const CFStringRef kMDItemMeteringMode ;\nextern const CFStringRef kMDItemMaxAperture ;\nextern const CFStringRef kMDItemFNumber ;\nextern const CFStringRef kMDItemExposureProgram ;\nextern const CFStringRef kMDItemExposureTimeString ;\n\n\nextern const CFStringRef kMDItemHeadline ;\nextern const CFStringRef kMDItemInstructions ;\nextern const CFStringRef kMDItemCity ;\nextern const CFStringRef kMDItemStateOrProvince ;\nextern const CFStringRef kMDItemCountry ;\n# 559 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDItem.h\" 3\nextern const CFStringRef kMDItemFSName ;\nextern const CFStringRef kMDItemDisplayName ;\nextern const CFStringRef kMDItemPath ;\nextern const CFStringRef kMDItemFSSize ;\nextern const CFStringRef kMDItemFSCreationDate ;\nextern const CFStringRef kMDItemFSContentChangeDate ;\nextern const CFStringRef kMDItemFSOwnerUserID ;\nextern const CFStringRef kMDItemFSOwnerGroupID ;\nextern const CFStringRef kMDItemFSExists __attribute__((deprecated));\nextern const CFStringRef kMDItemFSIsReadable __attribute__((deprecated));\nextern const CFStringRef kMDItemFSIsWriteable __attribute__((deprecated));\nextern const CFStringRef kMDItemFSHasCustomIcon ;\nextern const CFStringRef kMDItemFSIsExtensionHidden ;\nextern const CFStringRef kMDItemFSIsStationery ;\nextern const CFStringRef kMDItemFSInvisible ;\nextern const CFStringRef kMDItemFSLabel ;\nextern const CFStringRef kMDItemFSNodeCount ;\n\nextern const CFStringRef kMDItemTextContent ;\n# 639 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDItem.h\" 3\nextern const CFStringRef kMDItemAudioSampleRate ;\nextern const CFStringRef kMDItemAudioChannelCount ;\nextern const CFStringRef kMDItemTempo ;\nextern const CFStringRef kMDItemKeySignature ;\nextern const CFStringRef kMDItemTimeSignature ;\nextern const CFStringRef kMDItemAudioEncodingApplication ;\nextern const CFStringRef kMDItemComposer ;\nextern const CFStringRef kMDItemLyricist ;\nextern const CFStringRef kMDItemAudioTrackNumber ;\nextern const CFStringRef kMDItemRecordingDate ;\nextern const CFStringRef kMDItemMusicalGenre ;\nextern const CFStringRef kMDItemIsGeneralMIDISequence ;\nextern const CFStringRef kMDItemRecordingYear ;\n# 722 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDItem.h\" 3\nextern const CFStringRef kMDItemOrganizations ;\nextern const CFStringRef kMDItemLanguages ;\nextern const CFStringRef kMDItemRights ;\nextern const CFStringRef kMDItemPublishers ;\nextern const CFStringRef kMDItemContributors ;\nextern const CFStringRef kMDItemCoverage ;\nextern const CFStringRef kMDItemSubject ;\nextern const CFStringRef kMDItemTheme ;\nextern const CFStringRef kMDItemDescription ;\nextern const CFStringRef kMDItemIdentifier ;\nextern const CFStringRef kMDItemAudiences ;\n# 791 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDItem.h\" 3\nextern const CFStringRef kMDItemNumberOfPages ;\nextern const CFStringRef kMDItemPageWidth ;\nextern const CFStringRef kMDItemPageHeight ;\nextern const CFStringRef kMDItemSecurityMethod ;\nextern const CFStringRef kMDItemCreator ;\nextern const CFStringRef kMDItemEncodingApplications ;\nextern const CFStringRef kMDItemDueDate ;\nextern const CFStringRef kMDItemStarRating ;\nextern const CFStringRef kMDItemPhoneNumbers ;\nextern const CFStringRef kMDItemEmailAddresses ;\nextern const CFStringRef kMDItemInstantMessageAddresses ;\nextern const CFStringRef kMDItemKind ;\nextern const CFStringRef kMDItemRecipients ;\nextern const CFStringRef kMDItemFinderComment ;\nextern const CFStringRef kMDItemFonts ;\n# 864 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDItem.h\" 3\nextern const CFStringRef kMDItemAppleLoopsRootKey ;\nextern const CFStringRef kMDItemAppleLoopsKeyFilterType ;\nextern const CFStringRef kMDItemAppleLoopsLoopMode ;\nextern const CFStringRef kMDItemAppleLoopDescriptors ;\nextern const CFStringRef kMDItemMusicalInstrumentCategory ;\nextern const CFStringRef kMDItemMusicalInstrumentName ;\n\nextern const CFStringRef kMDItemCFBundleIdentifier ;\nextern const CFStringRef kMDItemSupportFileType __attribute__((deprecated));\n# 914 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDItem.h\" 3\nextern const CFStringRef kMDItemInformation ;\nextern const CFStringRef kMDItemDirector ;\nextern const CFStringRef kMDItemProducer ;\nextern const CFStringRef kMDItemGenre ;\nextern const CFStringRef kMDItemPerformers ;\nextern const CFStringRef kMDItemOriginalFormat ;\nextern const CFStringRef kMDItemOriginalSource ;\nextern const CFStringRef kMDItemAuthorEmailAddresses ;\nextern const CFStringRef kMDItemRecipientEmailAddresses ;\nextern const CFStringRef kMDItemAuthorAddresses ;\nextern const CFStringRef kMDItemRecipientAddresses ;\nextern const CFStringRef kMDItemURL ;\n\n\n\n\n\n\n\n\nextern CFDictionaryRef __MDItemCopyAttributesEllipsis1(MDItemRef item, ...) ;\n\n# 11 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/Metadata.h\" 2 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDQuery.h\" 1 3\n# 73 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDQuery.h\" 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDItem.h\" 1 3\n# 74 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDQuery.h\" 2 3\n\n\n\n\n\n\n\n\n\ntypedef struct __MDQuery *MDQueryRef;\n\ntypedef enum {\n    kMDQuerySynchronous = 1,\n    kMDQueryWantsUpdates = 4\n} MDQueryOptionFlags;\n# 118 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDQuery.h\" 3\nextern CFTypeID MDQueryGetTypeID(void) ;\n# 154 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDQuery.h\" 3\nextern MDQueryRef MDQueryCreate(CFAllocatorRef allocator, CFStringRef queryString, CFArrayRef valueListAttrs, CFArrayRef sortingAttrs) ;\n# 194 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDQuery.h\" 3\nextern MDQueryRef MDQueryCreateSubset(CFAllocatorRef allocator, MDQueryRef query, CFStringRef queryString, CFArrayRef valueListAttrs, CFArrayRef sortingAttrs) ;\n\n\n\n\n\n\n\nextern CFStringRef MDQueryCopyQueryString(MDQueryRef query) ;\n# 211 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDQuery.h\" 3\nextern CFArrayRef MDQueryCopyValueListAttributes(MDQueryRef query) ;\n# 220 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDQuery.h\" 3\nextern CFArrayRef MDQueryCopySortingAttributes(MDQueryRef query) ;\n# 265 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDQuery.h\" 3\ntypedef struct {\n    size_t first_max_num;\n    size_t first_max_ms;\n    size_t progress_max_num;\n    size_t progress_max_ms;\n    size_t update_max_num;\n    size_t update_max_ms;\n} MDQueryBatchingParams;\n# 282 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDQuery.h\" 3\nextern MDQueryBatchingParams MDQueryGetBatchingParameters(MDQueryRef query) ;\n\n\n\n\n\n\n\nextern void MDQuerySetBatchingParameters(MDQueryRef query, MDQueryBatchingParams params) ;\n# 321 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDQuery.h\" 3\ntypedef const void *(*MDQueryCreateResultFunction)(MDQueryRef query, MDItemRef item, void *context);\n# 388 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDQuery.h\" 3\nextern void MDQuerySetCreateResultFunction(MDQueryRef query, MDQueryCreateResultFunction func, void *context, const CFArrayCallBacks *cb) ;\n# 412 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDQuery.h\" 3\ntypedef const void *(*MDQueryCreateValueFunction)(MDQueryRef query, CFStringRef attrName, CFTypeRef attrValue, void *context);\n# 477 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDQuery.h\" 3\nextern void MDQuerySetCreateValueFunction(MDQueryRef query, MDQueryCreateValueFunction func, void *context, const CFArrayCallBacks *cb) ;\n# 490 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDQuery.h\" 3\nextern void MDQuerySetDispatchQueue(MDQueryRef query, dispatch_queue_t queue) ;\n# 526 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDQuery.h\" 3\nextern Boolean MDQueryExecute(MDQueryRef query, CFOptionFlags optionFlags) ;\n# 551 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDQuery.h\" 3\nextern void MDQueryStop(MDQueryRef query) ;\n# 562 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDQuery.h\" 3\nextern void MDQueryDisableUpdates(MDQueryRef query) ;\n# 573 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDQuery.h\" 3\nextern void MDQueryEnableUpdates(MDQueryRef query) ;\n# 583 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDQuery.h\" 3\nextern Boolean MDQueryIsGatheringComplete(MDQueryRef query) ;\n# 593 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDQuery.h\" 3\nextern CFIndex MDQueryGetResultCount(MDQueryRef query) ;\n# 614 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDQuery.h\" 3\nextern const void *MDQueryGetResultAtIndex(MDQueryRef query, CFIndex idx) ;\n# 636 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDQuery.h\" 3\nextern CFIndex MDQueryGetIndexOfResult(MDQueryRef query, const void *result) ;\n# 653 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDQuery.h\" 3\nextern void *MDQueryGetAttributeValueOfResultAtIndex(MDQueryRef query, CFStringRef name, CFIndex idx) ;\n# 669 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDQuery.h\" 3\nextern CFArrayRef MDQueryCopyValuesOfAttribute(MDQueryRef query, CFStringRef name) ;\n# 688 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDQuery.h\" 3\nextern CFIndex MDQueryGetCountOfResultsWithAttributeValue(MDQueryRef query, CFStringRef name, CFTypeRef value) ;\n# 719 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDQuery.h\" 3\ntypedef CFComparisonResult (*MDQuerySortComparatorFunction)(const CFTypeRef attrs1[], const CFTypeRef attrs2[], void *context);\n# 750 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDQuery.h\" 3\nextern void MDQuerySetSortComparator(MDQueryRef query, MDQuerySortComparatorFunction comparator, void *context) ;\n# 775 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDQuery.h\" 3\nextern void MDQuerySetSortComparatorBlock(MDQueryRef query, CFComparisonResult (^comparator)(const CFTypeRef attrs1[], const CFTypeRef attrs2[])) ;\n# 794 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDQuery.h\" 3\nextern const CFStringRef kMDQueryProgressNotification ;\n# 807 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDQuery.h\" 3\nextern const CFStringRef kMDQueryDidFinishNotification ;\n# 822 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDQuery.h\" 3\nextern const CFStringRef kMDQueryDidUpdateNotification ;\n# 833 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDQuery.h\" 3\nextern const CFStringRef kMDQueryUpdateAddedItems ;\n# 850 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDQuery.h\" 3\nextern const CFStringRef kMDQueryUpdateChangedItems ;\n# 865 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDQuery.h\" 3\nextern const CFStringRef kMDQueryUpdateRemovedItems ;\n# 893 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDQuery.h\" 3\nextern const CFStringRef kMDQueryResultContentRelevance ;\n# 913 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDQuery.h\" 3\nextern void MDQuerySetSearchScope(MDQueryRef query, CFArrayRef scopeDirectories, OptionBits scopeOptions) ;\n\n\n\n\n\n\n\nextern const CFStringRef kMDQueryScopeHome ;\n\n\n\n\n\n\n\nextern const CFStringRef kMDQueryScopeComputer ;\n\n\n\n\n\n\nextern const CFStringRef kMDQueryScopeNetwork ;\n\n\n\n\n\n\n\nextern const CFStringRef kMDQueryScopeAllIndexed ;\n\n\n\n\n\n\n\nextern const CFStringRef kMDQueryScopeComputerIndexed ;\n\n\n\n\n\n\nextern const CFStringRef kMDQueryScopeNetworkIndexed ;\n# 968 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDQuery.h\" 3\nextern void MDQuerySetMaxCount(MDQueryRef query, CFIndex size) ;\n\n\n# 12 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/Metadata.h\" 2 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDSchema.h\" 1 3\n# 19 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDSchema.h\" 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDItem.h\" 1 3\n# 20 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDSchema.h\" 2 3\n\n\n# 32 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDSchema.h\" 3\nextern CFDictionaryRef MDSchemaCopyAttributesForContentType(CFStringRef contentTypeUTI) ;\n\n\n\n\n\n\n\nextern CFDictionaryRef MDSchemaCopyMetaAttributesForAttribute(CFStringRef name) ;\n\n\n\n\n\n\nextern CFArrayRef MDSchemaCopyAllAttributes(void) ;\n# 56 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDSchema.h\" 3\nextern CFStringRef MDSchemaCopyDisplayNameForAttribute(CFStringRef name) ;\n# 65 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDSchema.h\" 3\nextern CFStringRef MDSchemaCopyDisplayDescriptionForAttribute(CFStringRef name) ;\n\n\nextern const CFStringRef kMDAttributeDisplayValues ;\n\n\n\nextern const CFStringRef kMDAttributeAllValues ;\n\n\n\nextern const CFStringRef kMDAttributeReadOnlyValues ;\n\n\n\n\nextern const CFStringRef kMDExporterAvaliable ;\n\n\n\n\n\n\nextern const CFStringRef kMDAttributeName ;\nextern const CFStringRef kMDAttributeType ;\nextern const CFStringRef kMDAttributeMultiValued ;\n\n\n# 13 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/Metadata.h\" 2 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDImporter.h\" 1 3\n# 22 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDImporter.h\" 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDItem.h\" 1 3\n# 23 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/MDImporter.h\" 2 3\n# 14 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Headers/Metadata.h\" 2 3\n# 49 \"/System/Library/Frameworks/CoreServices.framework/Headers/CoreServices.h\" 2 3\n# 1 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/DictionaryServices.framework/Headers/DictionaryServices.h\" 1 3\n# 26 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/DictionaryServices.framework/Headers/DictionaryServices.h\" 3\ntypedef const struct __DCSDictionary* DCSDictionaryRef;\n# 43 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/DictionaryServices.framework/Headers/DictionaryServices.h\" 3\nextern CFRange DCSGetTermRangeInString( DCSDictionaryRef dictionary, CFStringRef textString, CFIndex offset )\n ;\n# 57 \"/System/Library/Frameworks/CoreServices.framework/Frameworks/DictionaryServices.framework/Headers/DictionaryServices.h\" 3\nextern CFStringRef DCSCopyTextDefinition( DCSDictionaryRef dictionary, CFStringRef textString, CFRange range )\n ;\n# 50 \"/System/Library/Frameworks/CoreServices.framework/Headers/CoreServices.h\" 2 3\n# 14 \"unixfile.c\" 2\n\n\n\n\n\n\n# 1 \"/usr/include/errno.h\" 1 3 4\n# 21 \"unixfile.c\" 2\n# 1 \"/usr/include/pwd.h\" 1 3 4\n# 119 \"/usr/include/pwd.h\" 3 4\nstruct passwd {\n char *pw_name;\n char *pw_passwd;\n uid_t pw_uid;\n gid_t pw_gid;\n __darwin_time_t pw_change;\n char *pw_class;\n char *pw_gecos;\n char *pw_dir;\n char *pw_shell;\n __darwin_time_t pw_expire;\n};\n\n\n\n\nstruct passwd *getpwuid(uid_t);\nstruct passwd *getpwnam(const char *);\nint getpwuid_r(uid_t, struct passwd *, char *, size_t, struct passwd **);\nint getpwnam_r(const char *, struct passwd *, char *, size_t, struct passwd **);\nstruct passwd *getpwent(void);\n\nint setpassent(int);\nchar *user_from_uid(uid_t, int);\n\nvoid setpwent(void);\nvoid endpwent(void);\n\n# 22 \"unixfile.c\" 2\n\n# 1 \"/usr/include/sys/stat.h\" 1 3 4\n# 79 \"/usr/include/sys/stat.h\" 3 4\n# 1 \"/usr/include/sys/_structs.h\" 1 3 4\n# 80 \"/usr/include/sys/stat.h\" 2 3 4\n# 153 \"/usr/include/sys/stat.h\" 3 4\nstruct ostat {\n __uint16_t st_dev;\n ino_t st_ino;\n mode_t st_mode;\n nlink_t st_nlink;\n __uint16_t st_uid;\n __uint16_t st_gid;\n __uint16_t st_rdev;\n __int32_t st_size;\n struct timespec st_atimespec;\n struct timespec st_mtimespec;\n struct timespec st_ctimespec;\n __int32_t st_blksize;\n __int32_t st_blocks;\n __uint32_t st_flags;\n __uint32_t st_gen;\n};\n# 225 \"/usr/include/sys/stat.h\" 3 4\nstruct stat { dev_t st_dev; mode_t st_mode; nlink_t st_nlink; __darwin_ino64_t st_ino; uid_t st_uid; gid_t st_gid; dev_t st_rdev; struct timespec st_atimespec; struct timespec st_mtimespec; struct timespec st_ctimespec; struct timespec st_birthtimespec; off_t st_size; blkcnt_t st_blocks; blksize_t st_blksize; __uint32_t st_flags; __uint32_t st_gen; __int32_t st_lspare; __int64_t st_qspare[2]; };\n# 264 \"/usr/include/sys/stat.h\" 3 4\nstruct stat64 { dev_t st_dev; mode_t st_mode; nlink_t st_nlink; __darwin_ino64_t st_ino; uid_t st_uid; gid_t st_gid; dev_t st_rdev; struct timespec st_atimespec; struct timespec st_mtimespec; struct timespec st_ctimespec; struct timespec st_birthtimespec; off_t st_size; blkcnt_t st_blocks; blksize_t st_blksize; __uint32_t st_flags; __uint32_t st_gen; __int32_t st_lspare; __int64_t st_qspare[2]; };\n# 427 \"/usr/include/sys/stat.h\" 3 4\n\n\nint chmod(const char *, mode_t) __asm(\"_\" \"chmod\" );\nint fchmod(int, mode_t) __asm(\"_\" \"fchmod\" );\nint fstat(int, struct stat *) __asm(\"_\" \"fstat\" \"$INODE64\");\nint lstat(const char *, struct stat *) __asm(\"_\" \"lstat\" \"$INODE64\");\nint mkdir(const char *, mode_t);\nint mkfifo(const char *, mode_t);\nint stat(const char *, struct stat *) __asm(\"_\" \"stat\" \"$INODE64\");\nint mknod(const char *, mode_t, dev_t);\nmode_t umask(mode_t);\n\n\n\n\n\n\n\nint chflags(const char *, __uint32_t);\nint chmodx_np(const char *, filesec_t);\nint fchflags(int, __uint32_t);\nint fchmodx_np(int, filesec_t);\nint fstatx_np(int, struct stat *, filesec_t) __asm(\"_\" \"fstatx_np\" \"$INODE64\");\nint lchflags(const char *, __uint32_t);\nint lchmod(const char *, mode_t);\nint lstatx_np(const char *, struct stat *, filesec_t) __asm(\"_\" \"lstatx_np\" \"$INODE64\");\nint mkdirx_np(const char *, filesec_t);\nint mkfifox_np(const char *, filesec_t);\nint statx_np(const char *, struct stat *, filesec_t) __asm(\"_\" \"statx_np\" \"$INODE64\");\nint umaskx_np(filesec_t);\n\n\n\nint fstatx64_np(int, struct stat64 *, filesec_t) __attribute__((deprecated,visibility(\"default\")));\nint lstatx64_np(const char *, struct stat64 *, filesec_t) __attribute__((deprecated,visibility(\"default\")));\nint statx64_np(const char *, struct stat64 *, filesec_t) __attribute__((deprecated,visibility(\"default\")));\nint fstat64(int, struct stat64 *) __attribute__((deprecated,visibility(\"default\")));\nint lstat64(const char *, struct stat64 *) __attribute__((deprecated,visibility(\"default\")));\nint stat64(const char *, struct stat64 *) __attribute__((deprecated,visibility(\"default\")));\n\n\n\n\n# 24 \"unixfile.c\" 2\n# 1 \"/usr/include/dirent.h\" 1 3 4\n# 65 \"/usr/include/dirent.h\" 3 4\n# 1 \"/usr/include/sys/dirent.h\" 1 3 4\n# 89 \"/usr/include/sys/dirent.h\" 3 4\n#pragma pack(4)\n# 101 \"/usr/include/sys/dirent.h\" 3 4\n#pragma pack()\n# 115 \"/usr/include/sys/dirent.h\" 3 4\nstruct dirent { __uint64_t d_ino; __uint64_t d_seekoff; __uint16_t d_reclen; __uint16_t d_namlen; __uint8_t d_type; char d_name[1024]; };\n# 66 \"/usr/include/dirent.h\" 2 3 4\n\n\nstruct _telldir;\n\n\ntypedef struct {\n int __dd_fd;\n long __dd_loc;\n long __dd_size;\n char *__dd_buf;\n int __dd_len;\n long __dd_seek;\n long __dd_rewind;\n int __dd_flags;\n __darwin_pthread_mutex_t __dd_lock;\n struct _telldir *__dd_td;\n} DIR;\n# 102 \"/usr/include/dirent.h\" 3 4\n\n\nint alphasort(const void *, const void *) __asm(\"_\" \"alphasort\" \"$INODE64\");\n\nint closedir(DIR *) __asm(\"_\" \"closedir\" );\n\nint getdirentries(int, char *, int, long *)\n\n\n\n\n\n      __asm(\"_getdirentries_is_not_available_when_64_bit_inodes_are_in_effect\")\n\n\n\n;\n\nDIR *opendir(const char *) __asm(\"_\" \"opendir\" \"$INODE64\" );\n\nDIR *__opendir2(const char *, int) __asm(\"_\" \"__opendir2\" \"$INODE64\" );\n\nstruct dirent *readdir(DIR *) __asm(\"_\" \"readdir\" \"$INODE64\");\nint readdir_r(DIR *, struct dirent *, struct dirent **) __asm(\"_\" \"readdir_r\" \"$INODE64\");\nvoid rewinddir(DIR *) __asm(\"_\" \"rewinddir\" \"$INODE64\" );\n\nint scandir(const char *, struct dirent ***,\n    int (*)(struct dirent *), int (*)(const void *, const void *)) __asm(\"_\" \"scandir\" \"$INODE64\");\n\nint scandir_b(const char *, struct dirent ***,\n    int (^)(struct dirent *), int (^)(const void *, const void *)) __asm(\"_\" \"scandir_b\" \"$INODE64\");\n\n\nvoid seekdir(DIR *, long) __asm(\"_\" \"seekdir\" \"$INODE64\" );\nlong telldir(DIR *) __asm(\"_\" \"telldir\" \"$INODE64\" );\n\n# 25 \"unixfile.c\" 2\n# 1 \"/usr/include/unistd.h\" 1 3 4\n# 72 \"/usr/include/unistd.h\" 3 4\n# 1 \"/usr/include/sys/unistd.h\" 1 3 4\n# 138 \"/usr/include/sys/unistd.h\" 3 4\nstruct accessx_descriptor {\n unsigned int ad_name_offset;\n int ad_flags;\n int ad_pad[2];\n};\n# 73 \"/usr/include/unistd.h\" 2 3 4\n# 414 \"/usr/include/unistd.h\" 3 4\n\n\nvoid _exit(int) __attribute__((__noreturn__));\nint access(const char *, int);\nunsigned int\n  alarm(unsigned int);\nint chdir(const char *);\nint chown(const char *, uid_t, gid_t);\nint close(int) __asm(\"_\" \"close\" );\nsize_t confstr(int, char *, size_t) __asm(\"_\" \"confstr\" );\nchar *crypt(const char *, const char *);\nchar *ctermid(char *);\nint dup(int);\nint dup2(int, int);\n\nvoid encrypt(char *, int) __asm(\"_\" \"encrypt\" );\n\n\n\nint execl(const char *, const char *, ...);\nint execle(const char *, const char *, ...);\nint execlp(const char *, const char *, ...);\nint execv(const char *, char * const *);\nint execve(const char *, char * const *, char * const *);\nint execvp(const char *, char * const *);\nint fchown(int, uid_t, gid_t);\nint fchdir(int);\npid_t fork(void);\nlong fpathconf(int, int);\nint fsync(int) __asm(\"_\" \"fsync\" );\nint ftruncate(int, off_t);\nchar *getcwd(char *, size_t);\ngid_t getegid(void);\nuid_t geteuid(void);\ngid_t getgid(void);\n\n\n\nint getgroups(int, gid_t []);\n\nlong gethostid(void);\nint gethostname(char *, size_t);\nchar *getlogin(void);\nint getlogin_r(char *, size_t);\nint getopt(int, char * const [], const char *) __asm(\"_\" \"getopt\" );\npid_t getpgid(pid_t);\npid_t getpgrp(void);\npid_t getpid(void);\npid_t getppid(void);\npid_t getsid(pid_t);\nuid_t getuid(void);\nchar *getwd(char *);\nint isatty(int);\nint lchown(const char *, uid_t, gid_t) __asm(\"_\" \"lchown\" );\nint link(const char *, const char *);\nint lockf(int, int, off_t) __asm(\"_\" \"lockf\" );\noff_t lseek(int, off_t, int);\nint nice(int) __asm(\"_\" \"nice\" );\nlong pathconf(const char *, int);\nint pause(void) __asm(\"_\" \"pause\" );\nint pipe(int [2]);\nssize_t pread(int, void *, size_t, off_t) __asm(\"_\" \"pread\" );\nssize_t pwrite(int, const void *, size_t, off_t) __asm(\"_\" \"pwrite\" );\nssize_t read(int, void *, size_t) __asm(\"_\" \"read\" );\nssize_t readlink(const char * , char * , size_t);\nint rmdir(const char *);\nint setegid(gid_t);\nint seteuid(uid_t);\nint setgid(gid_t);\nint setpgid(pid_t, pid_t);\n\npid_t setpgrp(void) __asm(\"_\" \"setpgrp\" );\n\n\n\nint setregid(gid_t, gid_t) __asm(\"_\" \"setregid\" );\nint setreuid(uid_t, uid_t) __asm(\"_\" \"setreuid\" );\npid_t setsid(void);\nint setuid(uid_t);\nunsigned int\n  sleep(unsigned int) __asm(\"_\" \"sleep\" );\nvoid swab(const void * , void * , ssize_t);\nint symlink(const char *, const char *);\nvoid sync(void);\nlong sysconf(int);\npid_t tcgetpgrp(int);\nint tcsetpgrp(int, pid_t);\nint truncate(const char *, off_t);\nchar *ttyname(int);\n\nint ttyname_r(int, char *, size_t) __asm(\"_\" \"ttyname_r\" );\n\n\n\nuseconds_t\n  ualarm(useconds_t, useconds_t);\nint unlink(const char *);\nint usleep(useconds_t) __asm(\"_\" \"usleep\" );\npid_t vfork(void);\nssize_t write(int, const void *, size_t) __asm(\"_\" \"write\" );\n\nextern char *optarg;\nextern int optind, opterr, optopt;\n\n\n# 1 \"/usr/include/sys/select.h\" 1 3 4\n# 78 \"/usr/include/sys/select.h\" 3 4\n# 1 \"/usr/include/sys/_structs.h\" 1 3 4\n# 79 \"/usr/include/sys/select.h\" 2 3 4\n# 134 \"/usr/include/sys/select.h\" 3 4\n\n\n\nint pselect(int, fd_set * , fd_set * ,\n  fd_set * , const struct timespec * ,\n  const sigset_t * )\n\n\n\n\n  __asm(\"_\" \"pselect\" \"$1050\")\n\n\n\n\n  ;\n\n\n# 1 \"/usr/include/sys/_select.h\" 1 3 4\n# 39 \"/usr/include/sys/_select.h\" 3 4\nint select(int, fd_set * , fd_set * ,\n  fd_set * , struct timeval * )\n\n\n\n\n  __asm(\"_\" \"select\" \"$1050\")\n\n\n\n\n  ;\n# 153 \"/usr/include/sys/select.h\" 2 3 4\n\n\n# 520 \"/usr/include/unistd.h\" 2 3 4\n\nvoid _Exit(int) __attribute__((__noreturn__));\nint accessx_np(const struct accessx_descriptor *, size_t, int *, uid_t);\nint acct(const char *);\nint add_profil(char *, size_t, unsigned long, unsigned int);\nvoid *brk(const void *);\nint chroot(const char *);\nvoid endusershell(void);\nint execvP(const char *, const char *, char * const *);\nchar *fflagstostr(unsigned long);\nint getdtablesize(void);\nint getdomainname(char *, int);\nint getgrouplist(const char *, int, int *, int *);\nint gethostuuid(uuid_t, const struct timespec *);\nmode_t getmode(const void *, mode_t);\nint getpagesize(void) __attribute__((__const__));\nchar *getpass(const char *);\nint getpeereid(int, uid_t *, gid_t *);\nint getpgid(pid_t _pid);\nint getsgroups_np(int *, uuid_t);\nint getsid(pid_t _pid);\nchar *getusershell(void);\nint getwgroups_np(int *, uuid_t);\nint initgroups(const char *, int);\nint iruserok(unsigned long, int, const char *, const char *);\nint iruserok_sa(const void *, int, int, const char *, const char *);\nint issetugid(void);\nchar *mkdtemp(char *);\nint mknod(const char *, mode_t, dev_t);\nint mkstemp(char *);\nint mkstemps(char *, int);\nchar *mktemp(char *);\nint nfssvc(int, void *);\nint profil(char *, size_t, unsigned long, unsigned int);\nint pthread_setugid_np(uid_t, gid_t);\nint pthread_getugid_np( uid_t *, gid_t *);\nint rcmd(char **, int, const char *, const char *, const char *, int *);\nint rcmd_af(char **, int, const char *, const char *, const char *, int *,\n  int);\nint reboot(int);\nint revoke(const char *);\nint rresvport(int *);\nint rresvport_af(int *, int);\nint ruserok(const char *, int, const char *, const char *);\nvoid *sbrk(int);\nint setdomainname(const char *, int);\nint setgroups(int, const gid_t *);\nvoid sethostid(long);\nint sethostname(const char *, int);\n\nvoid setkey(const char *) __asm(\"_\" \"setkey\" );\n\n\n\nint setlogin(const char *);\nvoid *setmode(const char *) __asm(\"_\" \"setmode\" );\nint setrgid(gid_t);\nint setruid(uid_t);\nint setsgroups_np(int, const uuid_t);\nvoid setusershell(void);\nint setwgroups_np(int, const uuid_t);\nint strtofflags(char **, unsigned long *, unsigned long *);\nint swapon(const char *);\nint syscall(int, ...);\nint ttyslot(void);\nint undelete(const char *);\nint unwhiteout(const char *);\nvoid *valloc(size_t);\n\nextern char *suboptarg;\nint getsubopt(char **, char * const *, char **);\n\n\n\nint fgetattrlist(int,void*,void*,size_t,unsigned int);\nint fsetattrlist(int,void*,void*,size_t,unsigned int);\nint getattrlist(const char*,void*,void*,size_t,unsigned int) __asm(\"_\" \"getattrlist\" );\nint setattrlist(const char*,void*,void*,size_t,unsigned int) __asm(\"_\" \"setattrlist\" );\nint exchangedata(const char*,const char*,unsigned int);\nint getdirentriesattr(int,void*,void*,size_t,unsigned int*,unsigned int*,unsigned int*,unsigned int);\n# 611 \"/usr/include/unistd.h\" 3 4\nstruct fssearchblock;\nstruct searchstate;\n\nint searchfs(const char *, struct fssearchblock *, unsigned long *, unsigned int, unsigned int, struct searchstate *);\nint fsctl(const char *,unsigned long,void*,unsigned int);\nint ffsctl(int,unsigned long,void*,unsigned int);\n\nextern int optreset;\n\n\n\n# 26 \"unixfile.c\" 2\n# 1 \"cslib.h\" 1\n# 25 \"cslib.h\"\n# 1 \"/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/stddef.h\" 1 3 4\n# 26 \"cslib.h\" 2\n# 39 \"cslib.h\"\ntypedef enum {0, 1} bool;\n\n\n\n\n\n\n\ntypedef char *string;\n\n\n\n\n\n\n\ntypedef void (*proc)();\n\nextern char undefined_object[];\n# 82 \"cslib.h\"\nvoid *getBlock(size_t nbytes);\n# 92 \"cslib.h\"\nvoid *getTypedBlock(size_t nbytes, string type);\n# 105 \"cslib.h\"\nvoid freeBlock(void *ptr);\n# 118 \"cslib.h\"\nstring getBlockType(void *ptr);\n# 167 \"cslib.h\"\n   void error(string msg, ...);\n# 27 \"unixfile.c\" 2\n# 1 \"filelib.h\" 1\n# 16 \"filelib.h\"\n# 1 \"iterator.h\" 1\n# 18 \"iterator.h\"\ntypedef struct IteratorCDT *Iterator;\n# 55 \"iterator.h\"\nIterator newIterator(void *collection);\n# 67 \"iterator.h\"\nbool stepIterator(Iterator iterator, void *ep);\n# 76 \"iterator.h\"\nvoid freeIterator(Iterator iterator);\n# 17 \"filelib.h\" 2\n# 27 \"filelib.h\"\nstring getDirectoryPathSeparator(void);\n# 36 \"filelib.h\"\nstring getSearchPathSeparator(void);\n# 50 \"filelib.h\"\nstring getRoot(string filename);\n# 70 \"filelib.h\"\nstring getExtension(string filename);\n# 89 \"filelib.h\"\nstring getHead(string pathname);\n# 108 \"filelib.h\"\nstring getTail(string pathname);\n# 120 \"filelib.h\"\nstring defaultExtension(string filename, string ext);\n# 140 \"filelib.h\"\nFILE *openOnPath(string path, string filename, string mode);\n# 153 \"filelib.h\"\nstring findOnPath(string path, string filename);\n# 163 \"filelib.h\"\nvoid deleteFile(string filename);\n# 173 \"filelib.h\"\nvoid renameFile(string oldname, string newname);\n# 182 \"filelib.h\"\nbool fileExists(string pathname);\n# 191 \"filelib.h\"\nbool isFile(string pathname);\n# 200 \"filelib.h\"\nbool isSymbolicLink(string pathname);\n# 209 \"filelib.h\"\nbool isDirectory(string pathname);\n# 223 \"filelib.h\"\nvoid createDirectory(string pathname);\n# 234 \"filelib.h\"\nvoid createDirectoryPath(string pathname);\n# 243 \"filelib.h\"\nvoid setCurrentDirectory(string path);\n# 252 \"filelib.h\"\nstring getCurrentDirectory(void);\n# 261 \"filelib.h\"\nstring expandPathname(string filename);\n# 272 \"filelib.h\"\nstring *listDirectory(string dir);\n# 282 \"filelib.h\"\nIterator newDirectoryIterator(string dir);\n# 291 \"filelib.h\"\nIterator newDirectoryTreeIterator(string dir);\n# 316 \"filelib.h\"\nbool matchFilenamePattern(string filename, string pattern);\n# 326 \"filelib.h\"\nstring getFileType(string filename);\n# 336 \"filelib.h\"\nstring getFileCreator(string filename);\n# 346 \"filelib.h\"\nvoid setFileTypeAndCreator(string pathname, string type,\n                                     string creator);\n# 357 \"filelib.h\"\nvoid copyFileTypeAndCreator(string src, string dst);\n# 28 \"unixfile.c\" 2\n# 1 \"strlib.h\" 1\n# 51 \"strlib.h\"\nstring concat(string s1, string s2);\n# 70 \"strlib.h\"\nchar ithChar(string s, int i);\n# 89 \"strlib.h\"\nstring substring(string s, int p1, int p2);\n# 102 \"strlib.h\"\nstring charToString(char ch);\n# 111 \"strlib.h\"\nint stringLength(string s);\n# 123 \"strlib.h\"\nstring copyString(string s);\n# 139 \"strlib.h\"\nbool stringEqual(string s1, string s2);\n# 149 \"strlib.h\"\nbool stringEqualIgnoreCase(string s1, string s2);\n# 160 \"strlib.h\"\nint stringCompare(string s1, string s2);\n# 169 \"strlib.h\"\nbool startsWith(string s1, string s2);\n# 178 \"strlib.h\"\nbool endsWith(string s1, string s2);\n# 191 \"strlib.h\"\nint findChar(char ch, string text, int start);\n# 202 \"strlib.h\"\nint findString(string str, string text, int start);\n# 212 \"strlib.h\"\nint findLastChar(char ch, string text);\n# 222 \"strlib.h\"\nint findLastString(string str, string text);\n# 234 \"strlib.h\"\nstring toLowerCase(string s);\n# 244 \"strlib.h\"\nstring toUpperCase(string s);\n# 255 \"strlib.h\"\nstring integerToString(int n);\n# 266 \"strlib.h\"\nint stringToInteger(string s);\n# 278 \"strlib.h\"\nstring realToString(double d);\n# 290 \"strlib.h\"\ndouble stringToReal(string s);\n# 302 \"strlib.h\"\nstring trim(string str);\n# 314 \"strlib.h\"\nstring quoteString(string str);\n# 324 \"strlib.h\"\nstring quoteHTML(string str);\n# 333 \"strlib.h\"\nint stringArrayLength(string array[]);\n# 344 \"strlib.h\"\nint searchStringArray(string str, string array[]);\n# 355 \"strlib.h\"\ntypedef struct StringBufferCDT *StringBuffer;\n# 365 \"strlib.h\"\nStringBuffer newStringBuffer();\n# 374 \"strlib.h\"\nvoid freeStringBuffer(StringBuffer sb);\n# 384 \"strlib.h\"\nvoid pushChar(StringBuffer sb, char ch);\n# 393 \"strlib.h\"\nchar popChar(StringBuffer sb);\n# 402 \"strlib.h\"\nvoid appendString(StringBuffer sb, string str);\n# 411 \"strlib.h\"\nbool isEmptyStringBuffer(StringBuffer vec);\n# 420 \"strlib.h\"\nint sizeStringBuffer(StringBuffer vector);\n# 429 \"strlib.h\"\nvoid clearStringBuffer(StringBuffer sb);\n# 439 \"strlib.h\"\nstring toString(StringBuffer sb);\n# 29 \"unixfile.c\" 2\n# 1 \"vector.h\" 1\n# 12 \"vector.h\"\n# 1 \"generic.h\" 1\n# 12 \"generic.h\"\n# 1 \"cmpfn.h\" 1\n# 24 \"cmpfn.h\"\ntypedef int (*cmpFnT)(const void *p1, const void *p2);\n# 33 \"cmpfn.h\"\nint intCmpFn(const void *p1, const void *p2);\n# 42 \"cmpfn.h\"\nint shortCmpFn(const void *p1, const void *p2);\n# 51 \"cmpfn.h\"\nint longCmpFn(const void *p1, const void *p2);\n# 60 \"cmpfn.h\"\nint charCmpFn(const void *p1, const void *p2);\n# 69 \"cmpfn.h\"\nint floatCmpFn(const void *p1, const void *p2);\n# 78 \"cmpfn.h\"\nint doubleCmpFn(const void *p1, const void *p2);\n# 87 \"cmpfn.h\"\nint unsignedCmpFn(const void *p1, const void *p2);\n# 96 \"cmpfn.h\"\nint unsignedShortCmpFn(const void *p1, const void *p2);\n# 105 \"cmpfn.h\"\nint unsignedLongCmpFn(const void *p1, const void *p2);\n# 114 \"cmpfn.h\"\nint unsignedCharCmpFn(const void *p1, const void *p2);\n# 123 \"cmpfn.h\"\nint stringCmpFn(const void *p1, const void *p2);\n# 133 \"cmpfn.h\"\nint pointerCmpFn(const void *p1, const void *p2);\n# 13 \"generic.h\" 2\n# 22 \"generic.h\"\ntypedef union {\n    int intRep;\n    short shortRep;\n    long longRep;\n    float floatRep;\n    double doubleRep;\n    char charRep;\n    bool boolRep;\n    unsigned unsignedRep;\n    unsigned short unsignedShortRep;\n    unsigned long unsignedLongRep;\n    unsigned char unsignedCharRep;\n    void *pointerRep;\n} genericT;\n# 47 \"generic.h\"\ntypedef void (*argFnT)(va_list args, genericT *dst);\n\n\n\n\n\n\n\ntypedef string (*toStringFnT)(genericT any);\n# 66 \"generic.h\"\nint getTypeSize(string type);\n# 77 \"generic.h\"\ncmpFnT getCmpFn(string type);\n# 88 \"generic.h\"\nargFnT getArgFn(string type);\n# 100 \"generic.h\"\ntoStringFnT getToStringFn(string type);\n\n\n\nint size(void *arg);\nbool isEmpty(void *arg);\nvoid clear(void *arg);\nvoid *get(void *arg, ...);\nvoid set(void *arg, ...);\nvoid put(void *arg, ...);\nvoid add(void *arg, ...);\n# 13 \"vector.h\" 2\n\n\n\n\n\n\n\ntypedef struct VectorCDT *Vector;\n# 31 \"vector.h\"\nVector newVector(void);\n# 40 \"vector.h\"\nvoid freeVector(Vector vector);\n# 51 \"vector.h\"\nVector arrayToVector(void *array[], int n);\n# 62 \"vector.h\"\nvoid **vectorToArray(Vector vector);\n# 71 \"vector.h\"\nbool isEmptyVector(Vector vector);\n# 80 \"vector.h\"\nint sizeVector(Vector vector);\n# 89 \"vector.h\"\nvoid clearVector(Vector vector);\n# 99 \"vector.h\"\nvoid *getVector(Vector vector, int index);\n# 109 \"vector.h\"\nvoid setVector(Vector vector, int index, void *value);\n# 118 \"vector.h\"\nvoid addVector(Vector vector, void *value);\n# 127 \"vector.h\"\nvoid insert(Vector vector, int index, void *value);\n# 136 \"vector.h\"\nvoid xremove(Vector vector, int index);\n# 30 \"unixfile.c\" 2\n\nstatic string SKIP_FILES[] = {\n   \".\",\n   \"..\",\n   \".DS_Store\",\n   ((void *)0)\n};\n\nstatic int alphaCompare(const void *p1, const void *p2) {\n   return strcmp(*(string *) p1, *(string *) p2);\n}\n\nstring getDirectoryPathSeparator(void) {\n   return \"/\";\n}\n\nstring getSearchPathSeparator(void) {\n   return \":\";\n}\n\nbool fileExists(string path) {\n   struct stat sblk;\n   return stat(path, &sblk) == 0;\n}\n\nbool isFile(string path) {\n   struct stat sblk;\n   if (lstat(path, &sblk) != 0) return 0;\n   return (sblk.st_mode & 0170000) == 0100000;\n}\n\nbool isSymbolicLink(string path) {\n   struct stat sblk;\n   if (lstat(path, &sblk) != 0) return 0;\n   return (sblk.st_mode & 0170000) == 0120000;\n}\n\nbool isDirectory(string path) {\n   struct stat sblk;\n   if (lstat(path, &sblk) != 0) return 0;\n   return (sblk.st_mode & 0170000) == 0040000;\n}\n\nvoid createDirectory(string path) {\n   if (endsWith(path, \"/\")) {\n      path = substring(path, 0, stringLength(path) - 2);\n   }\n   if (mkdir(path, 0777) != 0) {\n      if ((*__error()) == 17 && isDirectory(path)) return;\n      error(\"createDirectory: %s\", strerror((*__error())));\n   }\n}\n\nvoid deleteFile(string filename) {\n   if (unlink(filename) != 0) {\n      if ((*__error()) == 2) return;\n      error(\"deleteFile: %s\", strerror((*__error())));\n   }\n}\n\nvoid renameFile(string oldname, string newname) {\n   if (rename(oldname, newname) != 0) {\n      error(\"renameFile: %s\", strerror((*__error())));\n   }\n}\n\nstring *listDirectory(string path) {\n   string *result, name;\n   struct dirent *ep;\n   DIR *dir;\n   Vector list;\n   int i, n;\n\n   if (path == ((void *)0)) path = \".\";\n   dir = opendir(path);\n   if (dir == ((void *)0)) error(\"listDirectory: Can't open directory %s\", path);\n   list = newVector();\n   while (1) {\n      ep = readdir(dir);\n      if (ep == ((void *)0)) break;\n      name = ep->d_name;\n      if (searchStringArray(name, SKIP_FILES) == -1) {\n         add(list, copyString(name));\n      }\n   }\n   closedir(dir);\n   n = size(list);\n   result = ((string *) getTypedBlock((n + 1) * sizeof(string), \"string\" \"[]\"));\n   for (i = 0; i < n; i++) {\n      result[i] = get(list, i);\n   }\n   result[n] = ((void *)0);\n   freeVector(list);\n   qsort(result, n, sizeof(string), alphaCompare);\n   return result;\n}\n\nvoid setCurrentDirectory(string path) {\n   chdir(path);\n}\n\nstring getCurrentDirectory(void) {\n   string cwd, result;\n\n   cwd = getcwd(((void *)0), 0);\n   result = copyString(cwd);\n   free(cwd);\n   return result;\n}\n\nstring expandPathname(string filename) {\n   string homedir;\n   char *spos;\n   struct passwd *pw;\n\n   if (*filename == '~') {\n      spos = filename;\n      while ((*spos != '/') && (*spos != '\\\\') && (*spos != '\\0')) {\n         spos++;\n      }\n      if (spos - filename == 1) {\n         homedir = getenv(\"HOME\");\n         if (homedir == ((void *)0)) homedir = getpwuid(getuid())->pw_dir;\n      } else {\n         homedir = substring(filename, 1, spos - filename - 1);\n         pw = getpwnam(homedir);\n         if (pw == ((void *)0)) error(\"expandPathname: No user %s\", homedir);\n         homedir = pw->pw_dir;\n      }\n      filename = concat(homedir, spos);\n   } else {\n      filename = copyString(filename);\n   }\n   for (spos = filename; *spos != '\\0'; spos++) {\n      if (*spos == '\\\\') *spos = '/';\n   }\n   return filename;\n}\n\n\n\nstring convertOSTypeToString(OSType type) {\n   string str;\n   int i;\n\n   str = ((char *) getTypedBlock((5) * sizeof(char), \"char\" \"[]\"));\n   for (i = 3; i >= 0; i--) {\n      str[i] = type & 0xFF;\n      type >>= 8;\n   }\n   str[4] = '\\0';\n   return str;\n}\n\nOSType stringToOSType(string str) {\n   int i, result;\n\n   result = 0;\n   str = concat(str, \"   \");\n   for (i = 0; i < 4; i++) {\n      result = (result << 8) | str[i];\n   }\n   return (OSType) result;\n}\n\n\n\nstring getFileType(string filename) {\n\n\n\n   FSCatalogInfo ci;\n   FileInfo *info;\n   FSRef fsr;\n   FSRef *ref;\n   int err;\n\n   ref = &fsr;\n   err = FSPathMakeRef((UInt8 *) filename, ref, ((void *)0));\n   if (err != 0) error(\"Internal error: Can't find file %s\", filename);\n   err = FSGetCatalogInfo(ref, kFSCatInfoFinderInfo, &ci, ((void *)0), ((void *)0), ((void *)0));\n   info = (FileInfo *) &ci.finderInfo;\n   if (err != 0) error(\"Internal error: Can't get finder info for %s\", filename);\n   return convertOSTypeToString(info->fileType);\n\n\n\n\n\n\n\n}\n\nstring getFileCreator(string filename) {\n\n\n\n   FSCatalogInfo ci;\n   FileInfo *info;\n   FSRef fsr;\n   FSRef *ref;\n   int err;\n\n   ref = &fsr;\n   err = FSPathMakeRef((UInt8 *) filename, ref, ((void *)0));\n   if (err != 0) error(\"Internal error: Can't find file %s\", filename);\n   err = FSGetCatalogInfo(ref, kFSCatInfoFinderInfo, &ci, ((void *)0), ((void *)0), ((void *)0));\n   info = (FileInfo *) &ci.finderInfo;\n   if (err != 0) error(\"Internal error: Can't get finder info for %s\", filename);\n   return convertOSTypeToString(info->fileCreator);\n\n\n\n\n\n\n\n}\n\nvoid setFileTypeAndCreator(string path, string type, string creator) {\n\n\n\n   FSCatalogInfo ci;\n   FileInfo *info;\n   FSRef fsr;\n   FSRef *ref;\n   int err;\n\n   ref = &fsr;\n   err = FSPathMakeRef((UInt8 *) path, ref, ((void *)0));\n   if (err != 0) error(\"Internal error: Can't find file %s\", path);\n   err = FSGetCatalogInfo(ref, kFSCatInfoFinderInfo, &ci, ((void *)0), ((void *)0), ((void *)0));\n   info = (FileInfo *) &ci.finderInfo;\n   if (err != 0) error(\"Internal error: Can't get finder info for %s\", path);\n   info->fileType = stringToOSType(type);\n   info->fileCreator = stringToOSType(creator);\n   FSSetCatalogInfo(ref, kFSCatInfoFinderInfo, &ci);\n\n\n\n}\n\nvoid copyFileTypeAndCreator(string src, string dst) {\n\n\n\n   FSCatalogInfo ci;\n   FileInfo *info;\n   FSRef fsr;\n   FSRef *ref;\n   OSType type, creator;\n   int err;\n\n   ref = &fsr;\n   err = FSPathMakeRef((UInt8 *) src, ref, ((void *)0));\n   if (err != 0) error(\"Internal error: Can't find file %s\", src);\n   err = FSGetCatalogInfo(ref, kFSCatInfoFinderInfo, &ci, ((void *)0), ((void *)0), ((void *)0));\n   info = (FileInfo *) &ci.finderInfo;\n   if (err != 0) error(\"Internal error: Can't get finder info for %s\", src);\n   type = info->fileType;\n   creator = info->fileCreator;\n   err = FSPathMakeRef((UInt8 *) dst, ref, ((void *)0));\n   if (err != 0) error(\"Internal error: Can't find file %s\", dst);\n   err = FSGetCatalogInfo(ref, kFSCatInfoFinderInfo, &ci, ((void *)0), ((void *)0), ((void *)0));\n   info = (FileInfo *) &ci.finderInfo;\n   if (err != 0) error(\"Internal error: Can't get finder info for %s\", dst);\n   info->fileType = type;\n   info->fileCreator = creator;\n   FSSetCatalogInfo(ref, kFSCatInfoFinderInfo, &ci);\n\n\n\n}\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/vector.c",
    "content": "/*\n * File: vector.c\n * Last modified on Tue Jan 15 15:27:23 2013 by eroberts\n * -----------------------------------------------------\n * This file implements the vector.h interface.\n */\n\n#include <stdio.h>\n#include \"cslib.h\"\n#include \"generic.h\"\n#include \"iterator.h\"\n#include \"itertype.h\"\n#include \"strlib.h\"\n#include \"unittest.h\"\n#include \"vector.h\"\n\n/*\n * Constant: INITIAL_CAPACITY\n * --------------------------\n * This constant defines the initial capacity of the array.\n * Any positive value will work correctly, although changing\n * this parameter can affect performance.  Making this value\n * larger postpones the first reallocation but causes vectors\n * to consume more memory.\n */\n\n#define INITIAL_CAPACITY 10\n\n/*\n * Type: VectorCDT\n * ---------------\n * The type VectorCDT is the concrete representation of the type\n * Vector defined by the interface.\n */\n\nstruct VectorCDT {\n   IteratorHeader header;\n   void **elements;\n   int count;\n   int capacity;\n};\n\n/* Private function prototypes */\n\nstatic void expandCapacity(Vector vector);\nstatic Iterator newVectorIterator(void *collection);\n\n/* Exported entries */\n\nVector newVector(void) {\n   Vector vector;\n\n   vector = newBlock(Vector);\n   enableIteration(vector, newVectorIterator);\n   vector->elements = newArray(INITIAL_CAPACITY, void *);\n   vector->count = 0;\n   vector->capacity = INITIAL_CAPACITY;\n   return vector;\n}\n\nvoid freeVector(Vector vector) {\n   freeBlock(vector->elements);\n   freeBlock(vector);\n}\n\nVector arrayToVector(void *array[], int n) {\n   Vector vector;\n   int i;\n\n   if (array == NULL) return NULL;\n   vector = newBlock(Vector);\n   enableIteration(vector, newVectorIterator);\n   vector->elements = newArray(n, void *);\n   vector->count = n;\n   vector->capacity = n;\n   for (i = 0; i < n; i++) {\n      vector->elements[i] = array[i];\n   }\n   return vector;\n}\n\nvoid **vectorToArray(Vector vector) {\n   void **array;\n   int i, n;\n\n   if (vector == NULL) return NULL;\n   n = vector->count;\n   array = newArray(n + 1, void *);\n   for (i = 0; i < n; i++) {\n      array[i] = vector->elements[i];\n   }\n   array[n] = NULL;\n   return array;\n}\n\nbool isEmptyVector(Vector vector) {\n   return vector->count == 0;\n}\n\nint sizeVector(Vector vector) {\n   return vector->count;\n}\n\nvoid clearVector(Vector vector) {\n   vector->count = 0;\n}\n\nVector cloneVector(Vector vector) {\n   Vector newvec;\n   int i;\n\n   newvec = newBlock(Vector);\n   enableIteration(newvec, newVectorIterator);\n   newvec->count = vector->count;\n   newvec->capacity = vector->capacity;\n   newvec->elements = newArray(vector->capacity, void *);\n   for (i = 0; i < vector->count; i++) {\n      newvec->elements[i] = vector->elements[i];\n   }\n   return newvec;\n}\n\nvoid *getVector(Vector vector, int index) {\n   if (index < 0 || index >= vector->count) {\n      error(\"get: Index value out of range\");\n   }\n   return vector->elements[index];\n}\n\nvoid setVector(Vector vector, int index, void *value) {\n   if (index < 0 || index >= vector->count) {\n      error(\"get: Index value out of range\");\n   }\n   vector->elements[index] = value;\n}\n\nvoid addVector(Vector vector, void *value) {\n   if (vector->count == vector->capacity) {\n      expandCapacity(vector);\n   }\n   vector->elements[vector->count++] = value;\n}\n\nvoid insert(Vector vector, int index, void *value) {\n   int i;\n\n   if (index < 0 || index > vector->count) {\n      error(\"insert: Index value out of range\");\n   }\n   if (vector->count == vector->capacity) {\n      expandCapacity(vector);\n   }\n   for (i = vector->count; i > index; i--) {\n      vector->elements[i] = vector->elements[i - 1];\n   }\n   vector->elements[index] = value;\n   vector->count++;\n}\n\nvoid removeVector(Vector vector, int index) {\n   int i;\n\n   if (index < 0 || index >= vector->count) {\n      error(\"remove: Index value out of range\");\n   }\n   vector->count--;\n   for (i = index; i < vector->count; i++) {\n      vector->elements[i] = vector->elements[i + 1];\n   }\n}\n\n/* Private functions */\n\nstatic void expandCapacity(Vector vector) {\n   void **array;\n   int i, newCapacity;\n\n   newCapacity = vector->capacity * 2;\n   array = newArray(newCapacity, void *);\n   for (i = 0; i < vector->count; i++) {\n      array[i] = vector->elements[i];\n   }\n   freeBlock(vector->elements);\n   vector->elements = array;\n   vector->capacity = newCapacity;\n}\n\n/*\n * Implementation notes: newVectorIterator\n * ---------------------------------------\n * This functions makes it possible to use the general iterator\n * facility on vectors.  For details on the general strategy, see\n * the comments in the itertype.h interface.\n */\n\nstatic Iterator newVectorIterator(void *collection) {\n   Vector vector;\n   Iterator iterator;\n   int i;\n\n   vector = (Vector) collection;\n   iterator = newListIterator(sizeof (void *), NULL);\n   for (i = 0; i < vector->count; i++) {\n      addToIteratorList(iterator, &vector->elements[i]);\n   }\n   return iterator;\n}\n\n/**********************************************************************/\n/* Unit test for the vector module                                    */\n/**********************************************************************/\n\n#ifndef _NOTEST_\n\n/* Unit test */\n\nvoid testVectorModule(void) {\n   Vector vec, vec2;\n\n   trace(vec = newVector());\n   test(isEmpty(vec), true);\n   trace(add(vec, \"A\"));\n   test(isEmpty(vec), false);\n   trace(add(vec, \"C\"));\n   trace(add(vec, \"D\"));\n   trace(insert(vec, 1, \"B\"));\n   test(size(vec), 4);\n   test(get(vec, 0), \"A\");\n   test(get(vec, 1), \"B\");\n   test(get(vec, 2), \"C\");\n   test(get(vec, 3), \"D\");\n   testError(get(vec, 4));\n   testError(get(vec, -1));\n   trace(vec2 = clone(vec));\n   trace(set(vec, 0, \"a\"));\n   test(get(vec, 0), \"a\");\n   trace(remove(vec, 0));\n   test(size(vec), 3);\n   trace(insert(vec, 0, \"A\"));\n   test(get(vec, 0), \"A\");\n   trace(insert(vec, size(vec), \"E\"));\n   test(get(vec, 4), \"E\");\n   test(get(vec2, 0), \"A\");\n   test(get(vec2, 1), \"B\");\n   test(get(vec2, 2), \"C\");\n   test(get(vec2, 3), \"D\");\n}\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/vector.h",
    "content": "/*\n * File: vector.h\n * --------------\n * This interface exports an array-like indexed collection type.\n */\n\n#ifndef _vector_h_\n#define _vector_h_\n\n#include \"cslib.h\"\n#include \"generic.h\"\n\n/*\n * Type: Vector\n * ------------\n * This type defines the abstract vector type.\n */\n\ntypedef struct VectorCDT *Vector;\n\n/* Exported entries */\n\n/*\n * Function: newVector\n * Usage: vector = newVector();\n * ----------------------------\n * Returns an empty <code>Vector</code>.\n */\n\nVector newVector(void);\n\n/*\n * Function: freeVector\n * Usage: freeVector(vector);\n * --------------------------\n * Frees the storage associated with vector.\n */\n\nvoid freeVector(Vector vector);\n\n/*\n * Function: arrayToVector\n * Usage: vector = arrayToVector(array, n);\n * ----------------------------------------\n * Creates a vector from an array of <code>void&nbsp;*</code> pointers.\n * If the <code>array</code> argument is <code>NULL</code>, this\n * function returns <code>NULL</code>.\n */\n\nVector arrayToVector(void *array[], int n);\n\n/*\n * Function: vectorToArray\n * Usage: array = vectorToArray(vector);\n * -------------------------------------\n * Returns a <code>NULL</code>-terminated array with the same\n * elements as vector.  If vector is <code>NULL</code>, this\n * function returns <code>NULL</code>.\n */\n\nvoid **vectorToArray(Vector vector);\n\n/*\n * Function: isEmpty\n * Usage: if (isEmpty(vector)) . . .\n * ---------------------------------\n * Returns <code>true</code> if the vector is empty.\n */\n\nbool isEmptyVector(Vector vector);\n\n/*\n * Function: size\n * Usage: n = size(vector);\n * ------------------------\n * Returns the number of elements in the vector.\n */\n\nint sizeVector(Vector vector);\n\n/*\n * Function: clear\n * Usage: clear(vector);\n * ---------------------\n * Removes all elements from the vector.\n */\n\nvoid clearVector(Vector vector);\n\n/*\n * Function: clone\n * Usage: newvec = clone(vector);\n * ------------------------------\n * Creates a copy of the vector.  The <code>clone</code> function copies\n * only the first level of the structure and does not copy the individual\n * elements.\n */\n\nVector cloneVector(Vector vector);\n\n/*\n * Function: get\n * Usage: value = get(vector, index);\n * ----------------------------------\n * Gets the element at the specified index position, raising an\n * error if the index is out of range.\n */\n\nvoid *getVector(Vector vector, int index);\n\n/*\n * Function: set\n * Usage: set(vector, index, value);\n * ---------------------------------\n * Sets the element at the specified index position, raising an\n * error if the index is out of range.\n */\n\nvoid setVector(Vector vector, int index, void *value);\n\n/*\n * Function: add\n * Usage: add(vector, value);\n * --------------------------\n * Adds a new value to the end of the vector.\n */\n\nvoid addVector(Vector vector, void *value);\n\n/*\n * Function: insert\n * Usage: insert(vector, index, value);\n * ------------------------------------\n * Inserts a new value before the specified index position.\n */\n\nvoid insert(Vector vector, int index, void *value);\n\n/*\n * Function: remove\n * Usage: remove(vector, index);\n * -----------------------------\n * Deletes the element at the specified index position.\n */\n\nvoid removeVector(Vector vector, int index);\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/winfile.c",
    "content": "/*\n * File: winfile.c\n * Last modified on Mon Jul  8 19:31:36 2013 by eroberts\n * -----------------------------------------------------\n * Implements the machine-specific functions in the filelib.h\n * interface for WIN32 platforms.\n */\n\n#ifdef __WIN32__\n\n#include <stdio.h>\n#include <ctype.h>\n#include <errno.h>\n#include <io.h>\n#include <sys/types.h>\n#include <sys/stat.h>\n#include \"filelib.h\"\n#include \"cslib.h\"\n#include \"strlib.h\"\n\nstring getDirectoryPathSeparator(void) {\n   return \"\\\\\";\n}\n\nstring getSearchPathSeparator(void) {\n   return \";\";\n}\n\nbool fileExists(string path) {\n   int status;\n\n   if (path == NULL) error(\"fileExists: NULL filename\");\n   status = _access(path, 0);\n   if (status == 0) return true;\n   if (errno == EINVAL) error(\"fileExists: Invalid parameter\");\n   return false;\n}\n\nbool isFile(string path) {\n   struct _stat sblk;\n   if (_stat(path, &sblk) != 0) return false;\n   return (sblk.st_mode & _S_IFREG) == _S_IFREG;\n}\n\nbool isSymbolicLink(string path) {\n   return false;\n}\n\nbool isDirectory(string path) {\n   struct _stat sblk;\n   if (_stat(path, &sblk) != 0) return false;\n   return (sblk.st_mode & _S_IFDIR) == _S_IFDIR;\n}\n\nvoid createDirectory(string path) {\n   if (endsWith(path, \"/\")) {\n      path = substring(path, 0, stringLength(path) - 2);\n   }\n   if (_mkdir(path) != 0) {\n      if (errno == EEXIST && isDirectory(path)) return;\n      error(\"createDirectory: %s\", strerror(errno));\n   }\n}\n\nvoid deleteFile(string filename) {\n   if (_unlink(filename) != 0) {\n      if (errno == ENOENT) return;\n      error(\"deleteFile: %s\", strerror(errno));\n   }\n}\n\nvoid renameFile(string oldname, string newname) {\n   if (rename(oldname, newname) != 0) {\n      error(\"renameFile: %s\", strerror(errno));\n   }\n}\n\nstring *listDirectory(string path) {\n   struct _finddata_t data;\n   intptr_t fp;\n   string *result;\n   int i, n;\n\n   path = expandPathname(path);\n   if (!isDirectory(path)) error(\"listDirectory: Path is not a directory\");\n   fp = _findfirst(concat(path, \"\\\\*\"), &data);\n   if ((long) fp == -1L) {\n      if (errno != ENOENT) {\n         error(\"listDirectory: %s\", strerror(errno));\n      }\n      result = newArray(1, string);\n      result[0] = NULL;\n      return result;\n   }\n   n = 1;\n   while (_findnext(fp, &data) == 0) n++;\n   _findclose(fp);\n   result = newArray(n + 1, string);\n   fp = _findfirst(concat(path, \"\\\\*\"), &data);\n   result[0] = copyString(data.name);\n   for (i = 1; i < n; i++) {\n      _findnext(fp, &data);\n      result[i] = copyString(data.name);\n   }\n   result[n] = NULL;\n   return result;\n}\n\nvoid setCurrentDirectory(string path) {\n   _chdir(path);\n}\n\nstring getCurrentDirectory(void) {\n   string cwd, result;\n\n   cwd = _getcwd(NULL, 0);\n   result = copyString(cwd);\n   free(cwd);\n   return result;\n}\n\nstring expandPathname(string filename) {\n   string homedir;\n   char *spos;\n   struct passwd *pw;\n\n   if (*filename == '~') {\n      spos = filename;\n      while ((*spos != '/') && (*spos != '\\\\') && (*spos != '\\0')) {\n         spos++;\n      }\n      if (spos - filename == 1) {\n         homedir = getenv(\"HOME\");\n         if (homedir == NULL) {\n            error(\"expandPathname: No HOME environment variable\");\n         }\n      } else {\n         homedir = substring(filename, 1, spos - filename - 1);\n         homedir = concat(\"\\\\Users\\\\\", homedir);\n      }\n      filename = concat(homedir, spos);\n   } else {\n      filename = copyString(filename);\n   }\n   for (spos = filename; *spos != '\\0'; spos++) {\n      if (*spos == '/') *spos = '\\\\';\n   }\n   return filename;\n}\n\n#endif\n"
  },
  {
    "path": "Archived/cpplib_old_eroberts/cslib/winthread.c",
    "content": "/*\n * File: winthread.c\n * Last modified on Mon Oct 20 17:56:40 2008 by eroberts\n * -----------------------------------------------------\n * This file is the top-level file in the implementation of the\n * thread.h interface using WIN32.\n */\n\n#ifdef __WIN32__\n\n#include <stdio.h>\n#include <windows.h>\n#include \"exception.h\"\n#include \"cslib.h\"\n#include \"strlib.h\"\n#include \"thread.h\"\n\n/* Constants */\n\n#define MAX_AUTOMATIC_THREAD_NAME 30\n\n/* Define the concrete type for a thread */\n\nstruct ThreadCDT {\n   DWORD id;\n   string name;\n   bool terminated;\n   Lock lock;\n};\n\n/* Define the concrete type for a lock */\n\nstruct LockCDT {\n   HANDLE mutex;\n   HANDLE semaphore;\n   HANDLE event;\n   bool exitFlag;\n   int waitingThreads;\n   int depth;\n   Thread owner;\n};\n\n/* Define a data block as a wrapper for the thread data */\n\ntypedef struct {\n   proc fn;\n   void *data;\n   Thread thread;\n} *ThreadDataBlock;\n\n/* Private variables */\n\nstatic bool initialized = false;\nstatic DWORD threadIndex;\nstatic DWORD cbIndex;\n\n/* Private function prototypes */\n\nstatic void initThreadPackage(void);\nstatic DWORD threadProc(LPVOID arg);\nstatic void popLockException(void);\n\n/* Section 1 - Functions on threads */\n\nThread forkThread(proc fn, void *data) {\n   Thread thread;\n   ThreadDataBlock data;\n   HANDLE threadHandle;\n\n   if (!initialized) initThreadPackage();\n   thread = newBlock(Thread);\n   thread->name = NULL;\n   thread->terminated = false;\n   thread->lock = newLock();\n   data = newBlock(ThreadDataBlock);\n   data->fn = fn;\n   data->data = data;\n   data->thread = thread;\n   threadHandle = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) threadProc,\n                               data, 0, &thread->id);\n   if (threadHandle == 0) error(\"forkThread: Can't create new thread\");\n   return thread;\n}\n\nvoid joinThread(Thread thread) {\n   if (thread->lock == NULL) {\n      error(\"joinThread: Can't join with the main thread\");\n   }\n   synchronized (thread->lock) {\n      while (!thread->terminated) {\n         waitThread(thread->lock);\n      }\n   }\n}\n\nvoid yield(void) {\n   switchToThread();\n}\n\nThread GetCurrentThread(void) {\n   Thread thread;\n\n   if (!initialized) initThreadPackage();\n   thread = (Thread) TlsGetValue(threadIndex);\n   if (thread == NULL) {\n      thread = newBlock(Thread);\n      thread->name = \"Main\";\n      thread->id = 0;\n      TlsSetValue(threadIndex, thread);\n   }\n   return thread;\n}\n\nvoid setThreadName(Thread thread, string name) {\n   thread->name = name;\n}\n\nstring getThreadName(Thread thread) {\n   char buffer[MAX_AUTOMATIC_THREAD_NAME];\n\n   if (thread == NULL) return \"NULL\";\n   if (thread->name == NULL) {\n      sprintf(buffer, \"Thread<%lu>\", (long) thread->id);\n      thread->name = copyString(buffer);\n   }\n   return thread->name;\n}\n\n/* Section 2 - Functions on locks */\n\nLock newLock(void) {\n   Lock lock;\n\n   lock = newBlock(Lock);\n   lock->mutex = CreateMutex(NULL, false, NULL);\n   lock->semaphore = CreateSemaphore(NULL, 0, 0x7FFFFFFF, NULL);\n   lock->event = CreateEvent(NULL, false, false, NULL);\n   lock->exitFlag = false;\n   lock->waitingThreads = 0;\n   lock->depth = 0;\n   return lock;\n}\n\nvoid waitThread(Lock lock) {\n   lock->waitingThreads++;\n   signalObjectAndWait(lock->mutex, lock->semaphore, INFINITE, false);\n   lock->waitingThreads--;\n   if (lock->waitingThreads == 0) {\n      signalObjectAndWait(lock->event, lock->mutex, INFINITE, false);\n   } else {\n      waitForSingleObject(lock->mutex, INFINITE);\n   }\n}\n\nvoid signalThread(Lock lock) {\n   if (lock->waitingThreads > 0) {\n      ReleaseMutex(lock->mutex);\n      ReleaseSemaphore(lock->semaphore, lock->waitingThreads, 0);\n      waitForSingleObject(lock->event, INFINITE);\n      waitForSingleObject(lock->mutex, INFINITE);\n   }\n}\n\nvoid lockInternal(Lock lock) {\n   waitForSingleObject(lock->mutex, INFINITE);\n   if (lock->depth++ == 0) lock->owner = GetCurrentThread();\n}\n\nvoid unlockInternal(Lock lock) {\n   if (--lock->depth == 0) lock->owner = NULL;\n   ReleaseMutex(lock->mutex);\n}\n\nbool startSync(Lock lock) {\n   ExceptionContextBlock *xcb;\n\n   if (lock->exitFlag) {\n      lock->exitFlag = false;\n      popLockException();\n      return false;\n   }\n   lockInternal(lock);\n   xcb = newBlock(ExceptionContextBlock *);\n   xcb->lock = lock;\n   pushExceptionStack(xcb);\n   return true;\n}\n\nvoid XEndSync(Lock lock) {\n   lock->exitFlag = true;\n}\n\nThread getOwner(Lock lock) {\n   return lock->owner;\n}\n\n/* Section 3 -- Internal interface to the exception module */\n\nExceptionContextBlock *XGetThreadSpecificStack(void) {\n   ExceptionContextBlock *stack;\n\n   if (!initialized) initThreadPackage();\n   stack = (ExceptionContextBlock *) TlsGetValue(cbIndex);\n   while (stack != NULL && stack->lock != NULL) {\n      popLockException();\n      stack = stack->link;\n   }\n   return stack;\n}\n\nvoid pushThreadSpecificStack(ExceptionContextBlock *cptr) {\n   ExceptionContextBlock *stack;\n\n   if (!initialized) initThreadPackage();\n   stack = (ExceptionContextBlock *) TlsGetValue(cbIndex);\n   cptr->link = stack;\n   TlsSetValue(cbIndex, cptr);\n}\n\nvoid popThreadSpecificStack(void) {\n   ExceptionContextBlock *stack;\n\n   if (!initialized) initThreadPackage();\n   stack = XGetThreadSpecificStack();\n   if (stack != NULL) stack = stack->link;\n   TlsSetValue(cbIndex, stack);\n}\n\n/* Private functions */\n\nstatic void initThreadPackage(void) {\n   threadIndex = TlsAlloc();\n   cbIndex = TlsAlloc();\n   if (threadIndex == TLS_OUT_OF_INDEXES || cbIndex == TLS_OUT_OF_INDEXES) {\n      error(\"initThreadPackage: Out of thread storage\");\n   }\n   initialized = true;\n}\n\nstatic DWORD threadProc(LPVOID arg) {\n   ThreadDataBlock data;\n\n   data = (ThreadDataBlock) arg;\n   if (!TlsSetValue(threadIndex, data->thread)) {\n      error(\"forkThread: Can't store thread identifier\");\n   }\n   if (!TlsSetValue(cbIndex, NULL)) {\n      error(\"forkThread: Can't initialize exception handler chain\");\n   }\n   data->fn(data->data);\n   synchronized (data->thread->lock) {\n      data->thread->terminated = true;\n      signalThread(data->thread->lock);\n   }\n   return 0;\n}\n\nstatic void popLockException(void) {\n   ExceptionContextBlock *stack;\n\n   if (!initialized) initThreadPackage();\n   stack = (ExceptionContextBlock *) TlsGetValue(cbIndex);\n   if (stack == NULL) error(\"popLockException: Internal error\");\n   TlsSetValue(cbIndex, stack->link);\n   unlockInternal((Lock) stack->lock);\n   freeBlock(stack);\n}\n\n#endif\n"
  },
  {
    "path": "Archived/doc/customdoxygen.css",
    "content": "/* The standard CSS for doxygen 1.8.14 */\n\nbody, table, div, p, dl {\n\t/* font: 400 14px/22px Roboto,sans-serif */;\n}\n\np.reference, p.definition {\n\t/* font: 400 14px/22px Roboto,sans-serif */;\n}\n\n/* @group Heading Levels */\n\nh1.groupheader {\n\tfont-size: 150%;\n}\n\n.title {\n\t/* font: 400 14px/22px Roboto,sans-serif */;\n\tfont-size: 150%;\n\tfont-weight: bold;\n\tmargin: 10px 2px;\n}\n\nh2.groupheader {\n\tborder-bottom: 1px solid #879ECB;\n\tcolor: #354C7B;\n\tfont-size: 150%;\n\tfont-weight: normal;\n\tmargin-top: 1.75em;\n\tpadding-top: 8px;\n\tpadding-bottom: 4px;\n\twidth: 100%;\n}\n\nh3.groupheader {\n\tfont-size: 100%;\n}\n\nh1, h2, h3, h4, h5, h6 {\n\t-webkit-transition: text-shadow 0.5s linear;\n\t-moz-transition: text-shadow 0.5s linear;\n\t-ms-transition: text-shadow 0.5s linear;\n\t-o-transition: text-shadow 0.5s linear;\n\ttransition: text-shadow 0.5s linear;\n\tmargin-right: 15px;\n}\n\nh1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {\n\ttext-shadow: 0 0 15px cyan;\n}\n\ndt {\n\tfont-weight: bold;\n}\n\ndiv.multicol {\n\t-moz-column-gap: 1em;\n\t-webkit-column-gap: 1em;\n\t-moz-column-count: 3;\n\t-webkit-column-count: 3;\n}\n\np.startli, p.startdd {\n\tmargin-top: 2px;\n}\n\np.starttd {\n\tmargin-top: 0px;\n}\n\np.endli {\n\tmargin-bottom: 0px;\n}\n\np.enddd {\n\tmargin-bottom: 4px;\n}\n\np.endtd {\n\tmargin-bottom: 2px;\n}\n\n/* @end */\n\ncaption {\n\tfont-weight: bold;\n}\n\nspan.legend {\n        font-size: 70%;\n        text-align: center;\n}\n\nh3.version {\n        font-size: 90%;\n        text-align: center;\n}\n\ndiv.qindex, div.navtab{\n\tbackground-color: #EBEFF6;\n\tborder: 1px solid #A3B4D7;\n\ttext-align: center;\n}\n\ndiv.qindex, div.navpath {\n\twidth: 100%;\n\tline-height: 140%;\n}\n\ndiv.navtab {\n\tmargin-right: 15px;\n}\n\n/* @group Link Styling */\n\na {\n\tcolor: #3D578C;\n\tfont-weight: normal;\n\ttext-decoration: none;\n}\n\n.contents a:visited {\n\tcolor: #4665A2;\n}\n\na:hover {\n\ttext-decoration: underline;\n}\n\na.qindex {\n\tfont-weight: bold;\n}\n\na.qindexHL {\n\tfont-weight: bold;\n\tbackground-color: #9CAFD4;\n\tcolor: #ffffff;\n\tborder: 1px double #869DCA;\n}\n\n.contents a.qindexHL:visited {\n        color: #ffffff;\n}\n\na.el {\n\tfont-weight: bold;\n}\n\na.elRef {\n}\n\na.code, a.code:visited, a.line, a.line:visited {\n\tcolor: #4665A2; \n}\n\na.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {\n\tcolor: #4665A2; \n}\n\n/* @end */\n\ndl.el {\n\tmargin-left: -1cm;\n}\n\npre.fragment {\n        border: 1px solid #C4CFE5;\n        background-color: #FBFCFD;\n        padding: 4px 6px;\n        margin: 4px 8px 4px 2px;\n        overflow: auto;\n        word-wrap: break-word;\n        font-size:  9pt;\n        line-height: 125%;\n        font-family: monospace, fixed;\n        font-size: 105%;\n}\n\ndiv.fragment {\n        padding: 0px;\n        margin: 4px 8px 4px 2px;\n\tbackground-color: #FBFCFD;\n\tborder: 1px solid #C4CFE5;\n}\n\ndiv.line {\n\tfont-family: monospace, fixed;\n        font-size: 13px;\n\tmin-height: 13px;\n\tline-height: 1.0;\n\ttext-wrap: unrestricted;\n\twhite-space: -moz-pre-wrap; /* Moz */\n\twhite-space: -pre-wrap;     /* Opera 4-6 */\n\twhite-space: -o-pre-wrap;   /* Opera 7 */\n\twhite-space: pre-wrap;      /* CSS3  */\n\tword-wrap: break-word;      /* IE 5.5+ */\n\ttext-indent: -53px;\n\tpadding-left: 53px;\n\tpadding-bottom: 0px;\n\tmargin: 0px;\n\t-webkit-transition-property: background-color, box-shadow;\n\t-webkit-transition-duration: 0.5s;\n\t-moz-transition-property: background-color, box-shadow;\n\t-moz-transition-duration: 0.5s;\n\t-ms-transition-property: background-color, box-shadow;\n\t-ms-transition-duration: 0.5s;\n\t-o-transition-property: background-color, box-shadow;\n\t-o-transition-duration: 0.5s;\n\ttransition-property: background-color, box-shadow;\n\ttransition-duration: 0.5s;\n}\n\ndiv.line:after {\n    content:\"\\000A\";\n    white-space: pre;\n}\n\ndiv.line.glow {\n\tbackground-color: cyan;\n\tbox-shadow: 0 0 10px cyan;\n}\n\n\nspan.lineno {\n\tpadding-right: 4px;\n\ttext-align: right;\n\tborder-right: 2px solid #0F0;\n\tbackground-color: #E8E8E8;\n        white-space: pre;\n}\nspan.lineno a {\n\tbackground-color: #D8D8D8;\n}\n\nspan.lineno a:hover {\n\tbackground-color: #C8C8C8;\n}\n\n.lineno {\n\t-webkit-touch-callout: none;\n\t-webkit-user-select: none;\n\t-khtml-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n}\n\ndiv.ah, span.ah {\n\tbackground-color: black;\n\tfont-weight: bold;\n\tcolor: #ffffff;\n\tmargin-bottom: 3px;\n\tmargin-top: 3px;\n\tpadding: 0.2em;\n\tborder: solid thin #333;\n\tborder-radius: 0.5em;\n\t-webkit-border-radius: .5em;\n\t-moz-border-radius: .5em;\n\tbox-shadow: 2px 2px 3px #999;\n\t-webkit-box-shadow: 2px 2px 3px #999;\n\t-moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;\n\tbackground-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));\n\tbackground-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%);\n}\n\ndiv.classindex ul {\n        list-style: none;\n        padding-left: 0;\n}\n\ndiv.classindex span.ai {\n        display: inline-block;\n}\n\ndiv.groupHeader {\n\tmargin-left: 16px;\n\tmargin-top: 12px;\n\tfont-weight: bold;\n}\n\ndiv.groupText {\n\tmargin-left: 16px;\n\tfont-style: italic;\n}\n\nbody {\n\tbackground-color: white;\n\tcolor: black;\n        margin: 0;\n}\n\ndiv.contents {\n\tmargin-top: 10px;\n\tmargin-left: 12px;\n\tmargin-right: 8px;\n}\n\ntd.indexkey {\n\tbackground-color: #EBEFF6;\n\tfont-weight: bold;\n\tborder: 1px solid #C4CFE5;\n\tmargin: 2px 0px 2px 0;\n\tpadding: 2px 10px;\n        white-space: nowrap;\n        vertical-align: top;\n}\n\ntd.indexvalue {\n\tbackground-color: #EBEFF6;\n\tborder: 1px solid #C4CFE5;\n\tpadding: 2px 10px;\n\tmargin: 2px 0px;\n}\n\ntr.memlist {\n\tbackground-color: #EEF1F7;\n}\n\np.formulaDsp {\n\ttext-align: center;\n}\n\nimg.formulaDsp {\n\t\n}\n\nimg.formulaInl {\n\tvertical-align: middle;\n}\n\ndiv.center {\n\ttext-align: center;\n        margin-top: 0px;\n        margin-bottom: 0px;\n        padding: 0px;\n}\n\ndiv.center img {\n\tborder: 0px;\n}\n\naddress.footer {\n\ttext-align: right;\n\tpadding-right: 12px;\n}\n\nimg.footer {\n\tborder: 0px;\n\tvertical-align: middle;\n}\n\n/* @group Code Colorization */\n\nspan.keyword {\n\tcolor: #008000\n}\n\nspan.keywordtype {\n\tcolor: #604020\n}\n\nspan.keywordflow {\n\tcolor: #e08000\n}\n\nspan.comment {\n\tcolor: #800000\n}\n\nspan.preprocessor {\n\tcolor: #806020\n}\n\nspan.stringliteral {\n\tcolor: #002080\n}\n\nspan.charliteral {\n\tcolor: #008080\n}\n\nspan.vhdldigit { \n\tcolor: #ff00ff \n}\n\nspan.vhdlchar { \n\tcolor: #000000 \n}\n\nspan.vhdlkeyword { \n\tcolor: #700070 \n}\n\nspan.vhdllogic { \n\tcolor: #ff0000 \n}\n\nblockquote {\n        background-color: #F7F8FB;\n        border-left: 2px solid #9CAFD4;\n        margin: 0 24px 0 4px;\n        padding: 0 12px 0 16px;\n}\n\n/* @end */\n\n/*\n.search {\n\tcolor: #003399;\n\tfont-weight: bold;\n}\n\nform.search {\n\tmargin-bottom: 0px;\n\tmargin-top: 0px;\n}\n\ninput.search {\n\tfont-size: 75%;\n\tcolor: #000080;\n\tfont-weight: normal;\n\tbackground-color: #e8eef2;\n}\n*/\n\ntd.tiny {\n\tfont-size: 75%;\n}\n\n.dirtab {\n\tpadding: 4px;\n\tborder-collapse: collapse;\n\tborder: 1px solid #A3B4D7;\n}\n\nth.dirtab {\n\tbackground: #EBEFF6;\n\tfont-weight: bold;\n}\n\nhr {\n\theight: 0px;\n\tborder: none;\n\tborder-top: 1px solid #4A6AAA;\n}\n\nhr.footer {\n\theight: 1px;\n}\n\n/* @group Member Descriptions */\n\ntable.memberdecls {\n\tborder-spacing: 0px;\n\tpadding: 0px;\n}\n\n.memberdecls td, .fieldtable tr {\n\t-webkit-transition-property: background-color, box-shadow;\n\t-webkit-transition-duration: 0.5s;\n\t-moz-transition-property: background-color, box-shadow;\n\t-moz-transition-duration: 0.5s;\n\t-ms-transition-property: background-color, box-shadow;\n\t-ms-transition-duration: 0.5s;\n\t-o-transition-property: background-color, box-shadow;\n\t-o-transition-duration: 0.5s;\n\ttransition-property: background-color, box-shadow;\n\ttransition-duration: 0.5s;\n}\n\n.memberdecls td.glow, .fieldtable tr.glow {\n\tbackground-color: cyan;\n\tbox-shadow: 0 0 15px cyan;\n}\n\n.mdescLeft, .mdescRight,\n.memItemLeft, .memItemRight,\n.memTemplItemLeft, .memTemplItemRight, .memTemplParams {\n\tbackground-color: #F9FAFC;\n\tborder: none;\n\tmargin: 4px;\n\tpadding: 1px 0 0 8px;\n}\n\n.mdescLeft, .mdescRight {\n\tpadding: 0px 8px 4px 8px;\n\tcolor: #555;\n}\n\n.memSeparator {\n        border-bottom: 1px solid #DEE4F0;\n        line-height: 1px;\n        margin: 0px;\n        padding: 0px;\n}\n\n.memItemLeft, .memTemplItemLeft {\n        white-space: nowrap;\n}\n\n.memItemRight {\n\twidth: 100%;\n}\n\n.memTemplParams {\n\tcolor: #4665A2;\n        white-space: nowrap;\n\tfont-size: 80%;\n}\n\n/* @end */\n\n/* @group Member Details */\n\n/* Styles for detailed member documentation */\n\n.memtitle {\n\tpadding: 8px;\n\tborder-top: 1px solid #A8B8D9;\n\tborder-left: 1px solid #A8B8D9;\n\tborder-right: 1px solid #A8B8D9;\n\tborder-top-right-radius: 4px;\n\tborder-top-left-radius: 4px;\n\tmargin-bottom: -1px;\n\tbackground-image: url('nav_f.png');\n\tbackground-repeat: repeat-x;\n\tbackground-color: #E2E8F2;\n\tline-height: 1.25;\n\tfont-weight: 300;\n\tfloat:left;\n}\n\n.permalink\n{\n        font-size: 65%;\n        display: inline-block;\n        vertical-align: middle;\n}\n\n.memtemplate {\n\tfont-size: 80%;\n\tcolor: #4665A2;\n\tfont-weight: normal;\n\tmargin-left: 9px;\n}\n\n.memnav {\n\tbackground-color: #EBEFF6;\n\tborder: 1px solid #A3B4D7;\n\ttext-align: center;\n\tmargin: 2px;\n\tmargin-right: 15px;\n\tpadding: 2px;\n}\n\n.mempage {\n\twidth: 100%;\n}\n\n.memitem {\n\tpadding: 0;\n\tmargin-bottom: 10px;\n\tmargin-right: 5px;\n        -webkit-transition: box-shadow 0.5s linear;\n        -moz-transition: box-shadow 0.5s linear;\n        -ms-transition: box-shadow 0.5s linear;\n        -o-transition: box-shadow 0.5s linear;\n        transition: box-shadow 0.5s linear;\n        display: table !important;\n        width: 100%;\n}\n\n.memitem.glow {\n         box-shadow: 0 0 15px cyan;\n}\n\n.memname {\n        font-weight: 400;\n        margin-left: 6px;\n}\n\n.memname td {\n\tvertical-align: bottom;\n}\n\n.memproto, dl.reflist dt {\n        border-top: 1px solid #A8B8D9;\n        border-left: 1px solid #A8B8D9;\n        border-right: 1px solid #A8B8D9;\n        padding: 6px 0px 6px 0px;\n        color: #253555;\n        font-weight: bold;\n        text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);\n        background-color: #DFE5F1;\n        /* opera specific markup */\n        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);\n        border-top-right-radius: 4px;\n        /* firefox specific markup */\n        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;\n        -moz-border-radius-topright: 4px;\n        /* webkit specific markup */\n        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);\n        -webkit-border-top-right-radius: 4px;\n\n}\n\n.overload {\n        font-family: \"courier new\",courier,monospace;\n\tfont-size: 65%;\n}\n\n.memdoc, dl.reflist dd {\n        border-bottom: 1px solid #A8B8D9;      \n        border-left: 1px solid #A8B8D9;      \n        border-right: 1px solid #A8B8D9; \n        padding: 6px 10px 2px 10px;\n        background-color: #FBFCFD;\n        border-top-width: 0;\n        background-image:url('nav_g.png');\n        background-repeat:repeat-x;\n        background-color: #FFFFFF;\n        /* opera specific markup */\n        border-bottom-left-radius: 4px;\n        border-bottom-right-radius: 4px;\n        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);\n        /* firefox specific markup */\n        -moz-border-radius-bottomleft: 4px;\n        -moz-border-radius-bottomright: 4px;\n        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;\n        /* webkit specific markup */\n        -webkit-border-bottom-left-radius: 4px;\n        -webkit-border-bottom-right-radius: 4px;\n        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);\n}\n\ndl.reflist dt {\n        padding: 5px;\n}\n\ndl.reflist dd {\n        margin: 0px 0px 10px 0px;\n        padding: 5px;\n}\n\n.paramkey {\n\ttext-align: right;\n}\n\n.paramtype {\n\twhite-space: nowrap;\n}\n\n.paramname {\n\tcolor: #602020;\n\twhite-space: nowrap;\n}\n.paramname em {\n\tfont-style: normal;\n}\n.paramname code {\n        line-height: 14px;\n}\n\n.params, .retval, .exception, .tparams {\n        margin-left: 0px;\n        padding-left: 0px;\n}       \n\n.params .paramname, .retval .paramname {\n        font-weight: bold;\n        vertical-align: top;\n}\n        \n.params .paramtype {\n        font-style: italic;\n        vertical-align: top;\n}       \n        \n.params .paramdir {\n        font-family: \"courier new\",courier,monospace;\n        vertical-align: top;\n}\n\ntable.mlabels {\n\tborder-spacing: 0px;\n}\n\ntd.mlabels-left {\n\twidth: 100%;\n\tpadding: 0px;\n}\n\ntd.mlabels-right {\n\tvertical-align: bottom;\n\tpadding: 0px;\n\twhite-space: nowrap;\n}\n\nspan.mlabels {\n        margin-left: 8px;\n}\n\nspan.mlabel {\n        background-color: #728DC1;\n        border-top:1px solid #5373B4;\n        border-left:1px solid #5373B4;\n        border-right:1px solid #C4CFE5;\n        border-bottom:1px solid #C4CFE5;\n\ttext-shadow: none;\n\tcolor: white;\n\tmargin-right: 4px;\n\tpadding: 2px 3px;\n\tborder-radius: 3px;\n\tfont-size: 7pt;\n\twhite-space: nowrap;\n\tvertical-align: middle;\n}\n\n\n\n/* @end */\n\n/* these are for tree view inside a (index) page */\n\ndiv.directory {\n        margin: 10px 0px;\n        border-top: 1px solid #9CAFD4;\n        border-bottom: 1px solid #9CAFD4;\n        width: 100%;\n}\n\n.directory table {\n        border-collapse:collapse;\n}\n\n.directory td {\n        margin: 0px;\n        padding: 0px;\n\tvertical-align: top;\n}\n\n.directory td.entry {\n        white-space: nowrap;\n        padding-right: 6px;\n\tpadding-top: 3px;\n}\n\n.directory td.entry a {\n        outline:none;\n}\n\n.directory td.entry a img {\n        border: none;\n}\n\n.directory td.desc {\n        width: 100%;\n        padding-left: 6px;\n\tpadding-right: 6px;\n\tpadding-top: 3px;\n\tborder-left: 1px solid rgba(0,0,0,0.05);\n}\n\n.directory tr.even {\n\tpadding-left: 6px;\n\tbackground-color: #F7F8FB;\n}\n\n.directory img {\n\tvertical-align: -30%;\n}\n\n.directory .levels {\n        white-space: nowrap;\n        width: 100%;\n        text-align: right;\n        font-size: 9pt;\n}\n\n.directory .levels span {\n        cursor: pointer;\n        padding-left: 2px;\n        padding-right: 2px;\n\tcolor: #3D578C;\n}\n\n.arrow {\n    color: #9CAFD4;\n    -webkit-user-select: none;\n    -khtml-user-select: none;\n    -moz-user-select: none;\n    -ms-user-select: none;\n    user-select: none;\n    cursor: pointer;\n    font-size: 80%;\n    display: inline-block;\n    width: 16px;\n    height: 22px;\n}\n\n.icon {\n    font-family: Arial, Helvetica;\n    font-weight: bold;\n    font-size: 12px;\n    height: 14px;\n    width: 16px;\n    display: inline-block;\n    background-color: #728DC1;\n    color: white;\n    text-align: center;\n    border-radius: 4px;\n    margin-left: 2px;\n    margin-right: 2px;\n}\n\n.icona {\n    width: 24px;\n    height: 22px;\n    display: inline-block;\n}\n\n.iconfopen {\n    width: 24px;\n    height: 18px;\n    margin-bottom: 4px;\n    background-image:url('folderopen.png');\n    background-position: 0px -4px;\n    background-repeat: repeat-y;\n    vertical-align:top;\n    display: inline-block;\n}\n\n.iconfclosed {\n    width: 24px;\n    height: 18px;\n    margin-bottom: 4px;\n    background-image:url('folderclosed.png');\n    background-position: 0px -4px;\n    background-repeat: repeat-y;\n    vertical-align:top;\n    display: inline-block;\n}\n\n.icondoc {\n    width: 24px;\n    height: 18px;\n    margin-bottom: 4px;\n    background-image:url('doc.png');\n    background-position: 0px -4px;\n    background-repeat: repeat-y;\n    vertical-align:top;\n    display: inline-block;\n}\n\ntable.directory {\n\t/* font: 400 14px Roboto,sans-serif */;\n}\n\n/* @end */\n\ndiv.dynheader {\n        margin-top: 8px;\n\t-webkit-touch-callout: none;\n\t-webkit-user-select: none;\n\t-khtml-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n}\n\naddress {\n\tfont-style: normal;\n\tcolor: #2A3D61;\n}\n\ntable.doxtable caption {\n\tcaption-side: top;\n}\n\ntable.doxtable {\n\tborder-collapse:collapse;\n        margin-top: 4px;\n        margin-bottom: 4px;\n}\n\ntable.doxtable td, table.doxtable th {\n\tborder: 1px solid #2D4068;\n\tpadding: 3px 7px 2px;\n}\n\ntable.doxtable th {\n\tbackground-color: #374F7F;\n\tcolor: #FFFFFF;\n\tfont-size: 110%;\n\tpadding-bottom: 4px;\n\tpadding-top: 5px;\n}\n\ntable.fieldtable {\n        /*width: 100%;*/\n        margin-bottom: 10px;\n        border: 1px solid #A8B8D9;\n        border-spacing: 0px;\n        -moz-border-radius: 4px;\n        -webkit-border-radius: 4px;\n        border-radius: 4px;\n        -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;\n        -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);\n        box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);\n}\n\n.fieldtable td, .fieldtable th {\n        padding: 3px 7px 2px;\n}\n\n.fieldtable td.fieldtype, .fieldtable td.fieldname {\n        white-space: nowrap;\n        border-right: 1px solid #A8B8D9;\n        border-bottom: 1px solid #A8B8D9;\n        vertical-align: top;\n}\n\n.fieldtable td.fieldname {\n        padding-top: 3px;\n}\n\n.fieldtable td.fielddoc {\n        border-bottom: 1px solid #A8B8D9;\n        /*width: 100%;*/\n}\n\n.fieldtable td.fielddoc p:first-child {\n        margin-top: 0px;\n}       \n        \n.fieldtable td.fielddoc p:last-child {\n        margin-bottom: 2px;\n}\n\n.fieldtable tr:last-child td {\n        border-bottom: none;\n}\n\n.fieldtable th {\n        background-image:url('nav_f.png');\n        background-repeat:repeat-x;\n        background-color: #E2E8F2;\n        font-size: 90%;\n        color: #253555;\n        padding-bottom: 4px;\n        padding-top: 5px;\n        text-align:left;\n        font-weight: 400;\n        -moz-border-radius-topleft: 4px;\n        -moz-border-radius-topright: 4px;\n        -webkit-border-top-left-radius: 4px;\n        -webkit-border-top-right-radius: 4px;\n        border-top-left-radius: 4px;\n        border-top-right-radius: 4px;\n        border-bottom: 1px solid #A8B8D9;\n}\n\n\n.tabsearch {\n\ttop: 0px;\n\tleft: 10px;\n\theight: 36px;\n\tbackground-image: url('tab_b.png');\n\tz-index: 101;\n\toverflow: hidden;\n\tfont-size: 13px;\n}\n\n.navpath ul\n{\n\tfont-size: 11px;\n\tbackground-image:url('tab_b.png');\n\tbackground-repeat:repeat-x;\n\tbackground-position: 0 -5px;\n\theight:30px;\n\tline-height:30px;\n\tcolor:#8AA0CC;\n\tborder:solid 1px #C2CDE4;\n\toverflow:hidden;\n\tmargin:0px;\n\tpadding:0px;\n}\n\n.navpath li\n{\n\tlist-style-type:none;\n\tfloat:left;\n\tpadding-left:10px;\n\tpadding-right:15px;\n\tbackground-image:url('bc_s.png');\n\tbackground-repeat:no-repeat;\n\tbackground-position:right;\n\tcolor:#364D7C;\n}\n\n.navpath li.navelem a\n{\n\theight:32px;\n\tdisplay:block;\n\ttext-decoration: none;\n\toutline: none;\n\tcolor: #283A5D;\n\tfont-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;\n\ttext-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);\n\ttext-decoration: none;        \n}\n\n.navpath li.navelem a:hover\n{\n\tcolor:#6884BD;\n}\n\n.navpath li.footer\n{\n        list-style-type:none;\n        float:right;\n        padding-left:10px;\n        padding-right:15px;\n        background-image:none;\n        background-repeat:no-repeat;\n        background-position:right;\n        color:#364D7C;\n        font-size: 8pt;\n}\n\n\ndiv.summary\n{\n\tfloat: right;\n\tfont-size: 8pt;\n\tpadding-right: 5px;\n\twidth: 50%;\n\ttext-align: right;\n}       \n\ndiv.summary a\n{\n\twhite-space: nowrap;\n}\n\ntable.classindex\n{\n        margin: 10px;\n        white-space: nowrap;\n        margin-left: 3%;\n        margin-right: 3%;\n        width: 94%;\n        border: 0;\n        border-spacing: 0; \n        padding: 0;\n}\n\ndiv.ingroups\n{\n\tfont-size: 8pt;\n\twidth: 50%;\n\ttext-align: left;\n}\n\ndiv.ingroups a\n{\n\twhite-space: nowrap;\n}\n\ndiv.header\n{\n        background-image:url('nav_h.png');\n        background-repeat:repeat-x;\n\tbackground-color: #F9FAFC;\n\tmargin:  0px;\n\tborder-bottom: 1px solid #C4CFE5;\n}\n\ndiv.headertitle\n{\n\tpadding: 5px 5px 5px 10px;\n}\n\ndl\n{\n        padding: 0 0 0 10px;\n}\n\n/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */\ndl.section\n{\n\tmargin-left: 0px;\n\tpadding-left: 0px;\n}\n\ndl.note\n{\n        margin-left:-7px;\n        padding-left: 3px;\n        border-left:4px solid;\n        border-color: #D0C000;\n}\n\ndl.warning, dl.attention\n{\n        margin-left:-7px;\n        padding-left: 3px;\n        border-left:4px solid;\n        border-color: #FF0000;\n}\n\ndl.pre, dl.post, dl.invariant\n{\n        margin-left:-7px;\n        padding-left: 3px;\n        border-left:4px solid;\n        border-color: #00D000;\n}\n\ndl.deprecated\n{\n        margin-left:-7px;\n        padding-left: 3px;\n        border-left:4px solid;\n        border-color: #505050;\n}\n\ndl.todo\n{\n        margin-left:-7px;\n        padding-left: 3px;\n        border-left:4px solid;\n        border-color: #00C0E0;\n}\n\ndl.test\n{\n        margin-left:-7px;\n        padding-left: 3px;\n        border-left:4px solid;\n        border-color: #3030E0;\n}\n\ndl.bug\n{\n        margin-left:-7px;\n        padding-left: 3px;\n        border-left:4px solid;\n        border-color: #C08050;\n}\n\ndl.section dd {\n\tmargin-bottom: 6px;\n}\n\n\n#projectlogo\n{\n\ttext-align: center;\n\tvertical-align: bottom;\n\tborder-collapse: separate;\n}\n \n#projectlogo img\n{ \n\tborder: 0px none;\n}\n \n#projectalign\n{\n        vertical-align: middle;\n}\n\n#projectname\n{\n\tfont: 300% Tahoma, Arial,sans-serif;\n\tmargin: 0px;\n\tpadding: 2px 0px;\n}\n    \n#projectbrief\n{\n\tfont: 120% Tahoma, Arial,sans-serif;\n\tmargin: 0px;\n\tpadding: 0px;\n}\n\n#projectnumber\n{\n\tfont: 50% Tahoma, Arial,sans-serif;\n\tmargin: 0px;\n\tpadding: 0px;\n}\n\n#titlearea\n{\n\tpadding: 0px;\n\tmargin: 0px;\n\twidth: 100%;\n\tborder-bottom: 1px solid #5373B4;\n}\n\n.image\n{\n        text-align: center;\n}\n\n.dotgraph\n{\n        text-align: center;\n}\n\n.mscgraph\n{\n        text-align: center;\n}\n\n.plantumlgraph\n{\n        text-align: center;\n}\n\n.diagraph\n{\n        text-align: center;\n}\n\n.caption\n{\n\tfont-weight: bold;\n}\n\ndiv.zoom\n{\n\tborder: 1px solid #90A5CE;\n}\n\ndl.citelist {\n        margin-bottom:50px;\n}\n\ndl.citelist dt {\n        color:#334975;\n        float:left;\n        font-weight:bold;\n        margin-right:10px;\n        padding:5px;\n}\n\ndl.citelist dd {\n        margin:2px 0;\n        padding:5px 0;\n}\n\ndiv.toc {\n        padding: 14px 25px;\n        background-color: #F4F6FA;\n        border: 1px solid #D8DFEE;\n        border-radius: 7px 7px 7px 7px;\n        float: right;\n        height: auto;\n        margin: 0 8px 10px 10px;\n        width: 200px;\n}\n\ndiv.toc li {\n        background: url(\"bdwn.png\") no-repeat scroll 0 5px transparent;\n        font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;\n        margin-top: 5px;\n        padding-left: 10px;\n        padding-top: 2px;\n}\n\ndiv.toc h3 {\n        font: bold 12px/1.2 Arial,FreeSans,sans-serif;\n\tcolor: #4665A2;\n        border-bottom: 0 none;\n        margin: 0;\n}\n\ndiv.toc ul {\n        list-style: none outside none;\n        border: medium none;\n        padding: 0px;\n}       \n\ndiv.toc li.level1 {\n        margin-left: 0px;\n}\n\ndiv.toc li.level2 {\n        margin-left: 15px;\n}\n\ndiv.toc li.level3 {\n        margin-left: 30px;\n}\n\ndiv.toc li.level4 {\n        margin-left: 45px;\n}\n\n.inherit_header {\n        font-weight: bold;\n        color: gray;\n        cursor: pointer;\n\t-webkit-touch-callout: none;\n\t-webkit-user-select: none;\n\t-khtml-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n}\n\n.inherit_header td {\n        padding: 6px 0px 2px 5px;\n}\n\n.inherit {\n        display: none;\n}\n\ntr.heading h2 {\n        margin-top: 12px;\n        margin-bottom: 4px;\n}\n\n/* tooltip related style info */\n\n.ttc {\n        position: absolute;\n        display: none;\n}\n\n#powerTip {\n\tcursor: default;\n\twhite-space: nowrap;\n\tbackground-color: white;\n\tborder: 1px solid gray;\n\tborder-radius: 4px 4px 4px 4px;\n\tbox-shadow: 1px 1px 7px gray;\n\tdisplay: none;\n\tfont-size: smaller;\n\tmax-width: 80%;\n\topacity: 0.9;\n\tpadding: 1ex 1em 1em;\n\tposition: absolute;\n\tz-index: 2147483647;\n}\n\n#powerTip div.ttdoc {\n        color: grey;\n\tfont-style: italic;\n}\n\n#powerTip div.ttname a {\n        font-weight: bold;\n}\n\n#powerTip div.ttname {\n        font-weight: bold;\n}\n\n#powerTip div.ttdeci {\n        color: #006318;\n}\n\n#powerTip div {\n        margin: 0px;\n        padding: 0px;\n        font-size: 12px/16px;\n}\n\n#powerTip:before, #powerTip:after {\n\tcontent: \"\";\n\tposition: absolute;\n\tmargin: 0px;\n}\n\n#powerTip.n:after,  #powerTip.n:before,\n#powerTip.s:after,  #powerTip.s:before,\n#powerTip.w:after,  #powerTip.w:before,\n#powerTip.e:after,  #powerTip.e:before,\n#powerTip.ne:after, #powerTip.ne:before,\n#powerTip.se:after, #powerTip.se:before,\n#powerTip.nw:after, #powerTip.nw:before,\n#powerTip.sw:after, #powerTip.sw:before {\n\tborder: solid transparent;\n\tcontent: \" \";\n\theight: 0;\n\twidth: 0;\n\tposition: absolute;\n}\n\n#powerTip.n:after,  #powerTip.s:after,\n#powerTip.w:after,  #powerTip.e:after,\n#powerTip.nw:after, #powerTip.ne:after,\n#powerTip.sw:after, #powerTip.se:after {\n\tborder-color: rgba(255, 255, 255, 0);\n}\n\n#powerTip.n:before,  #powerTip.s:before,\n#powerTip.w:before,  #powerTip.e:before,\n#powerTip.nw:before, #powerTip.ne:before,\n#powerTip.sw:before, #powerTip.se:before {\n\tborder-color: rgba(128, 128, 128, 0);\n}\n\n#powerTip.n:after,  #powerTip.n:before,\n#powerTip.ne:after, #powerTip.ne:before,\n#powerTip.nw:after, #powerTip.nw:before {\n\ttop: 100%;\n}\n\n#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {\n\tborder-top-color: #ffffff;\n\tborder-width: 10px;\n\tmargin: 0px -10px;\n}\n#powerTip.n:before {\n\tborder-top-color: #808080;\n\tborder-width: 11px;\n\tmargin: 0px -11px;\n}\n#powerTip.n:after, #powerTip.n:before {\n\tleft: 50%;\n}\n\n#powerTip.nw:after, #powerTip.nw:before {\n\tright: 14px;\n}\n\n#powerTip.ne:after, #powerTip.ne:before {\n\tleft: 14px;\n}\n\n#powerTip.s:after,  #powerTip.s:before,\n#powerTip.se:after, #powerTip.se:before,\n#powerTip.sw:after, #powerTip.sw:before {\n\tbottom: 100%;\n}\n\n#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {\n\tborder-bottom-color: #ffffff;\n\tborder-width: 10px;\n\tmargin: 0px -10px;\n}\n\n#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {\n\tborder-bottom-color: #808080;\n\tborder-width: 11px;\n\tmargin: 0px -11px;\n}\n\n#powerTip.s:after, #powerTip.s:before {\n\tleft: 50%;\n}\n\n#powerTip.sw:after, #powerTip.sw:before {\n\tright: 14px;\n}\n\n#powerTip.se:after, #powerTip.se:before {\n\tleft: 14px;\n}\n\n#powerTip.e:after, #powerTip.e:before {\n\tleft: 100%;\n}\n#powerTip.e:after {\n\tborder-left-color: #ffffff;\n\tborder-width: 10px;\n\ttop: 50%;\n\tmargin-top: -10px;\n}\n#powerTip.e:before {\n\tborder-left-color: #808080;\n\tborder-width: 11px;\n\ttop: 50%;\n\tmargin-top: -11px;\n}\n\n#powerTip.w:after, #powerTip.w:before {\n\tright: 100%;\n}\n#powerTip.w:after {\n\tborder-right-color: #ffffff;\n\tborder-width: 10px;\n\ttop: 50%;\n\tmargin-top: -10px;\n}\n#powerTip.w:before {\n\tborder-right-color: #808080;\n\tborder-width: 11px;\n\ttop: 50%;\n\tmargin-top: -11px;\n}\n\n@media print\n{\n  #top { display: none; }\n  #side-nav { display: none; }\n  #nav-path { display: none; }\n  body { overflow:visible; }\n  h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }\n  .summary { display: none; }\n  .memitem { page-break-inside: avoid; }\n  #doc-content\n  {\n    margin-left:0 !important;\n    height:auto !important;\n    width:auto !important;\n    overflow:inherit;\n    display:inline;\n  }\n}\n\n/* @group Markdown */\n\n/*\ntable.markdownTable {\n\tborder-collapse:collapse;\n        margin-top: 4px;\n        margin-bottom: 4px;\n}\n\ntable.markdownTable td, table.markdownTable th {\n\tborder: 1px solid #2D4068;\n\tpadding: 3px 7px 2px;\n}\n\ntable.markdownTableHead tr {\n}\n\ntable.markdownTableBodyLeft td, table.markdownTable th {\n\tborder: 1px solid #2D4068;\n\tpadding: 3px 7px 2px;\n}\n\nth.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone {\n\tbackground-color: #374F7F;\n\tcolor: #FFFFFF;\n\tfont-size: 110%;\n\tpadding-bottom: 4px;\n\tpadding-top: 5px;\n}\n\nth.markdownTableHeadLeft {\n\ttext-align: left\n}\n\nth.markdownTableHeadRight {\n\ttext-align: right\n}\n\nth.markdownTableHeadCenter {\n\ttext-align: center\n}\n*/\n\ntable.markdownTable {\n\tborder-collapse:collapse;\n        margin-top: 4px;\n        margin-bottom: 4px;\n}\n\ntable.markdownTable td, table.markdownTable th {\n\tborder: 1px solid #2D4068;\n\tpadding: 3px 7px 2px;\n}\n\ntable.markdownTable tr {\n}\n\nth.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone {\n\tbackground-color: #374F7F;\n\tcolor: #FFFFFF;\n\tfont-size: 110%;\n\tpadding-bottom: 4px;\n\tpadding-top: 5px;\n}\n\nth.markdownTableHeadLeft, td.markdownTableBodyLeft {\n\ttext-align: left\n}\n\nth.markdownTableHeadRight, td.markdownTableBodyRight {\n\ttext-align: right\n}\n\nth.markdownTableHeadCenter, td.markdownTableBodyCenter {\n\ttext-align: center\n}\n\n\n/* added by Marty */\n\nbody, h1, h2, h3, h4, h5, h6 {\n\tfont-family: \"Candara\", \"Calibri\", \"Helvetica Neue\", \"Helvetica\", \"Arial\", \"sans-serif\";\n}\n\ncode,\npre,\nsamp,\ntt,\nxmp,\n.mdescRight .el,\n.memdoc .el,\n.memItemLeft,\n.memItemRight,\n.memname,\n.memtemplate,\n.memtitle {\n\tfont-family: Consolas, \"Courier New\", monospaced;\n}\n\naddress.footer {\n\tdisplay: none;\n}\n\n.deprecated {\n\tcolor: #777;\n\tfont-size: smaller;\n\tfont-style: italic;\n}\n\n/* @end */\n"
  },
  {
    "path": "Archived/doc/doxygen.ini",
    "content": "# Doxyfile 1.8.16\n\n# This file describes the settings to be used by the documentation system\n# doxygen (www.doxygen.org) for a project.\n#\n# All text after a double hash (##) is considered a comment and is placed in\n# front of the TAG it is preceding.\n#\n# All text after a single hash (#) is considered a comment and will be ignored.\n# The format is:\n# TAG = value [value, ...]\n# For lists, items can also be appended using:\n# TAG += value [value, ...]\n# Values that contain spaces should be placed between quotes (\\\" \\\").\n\n#---------------------------------------------------------------------------\n# Project related configuration options\n#---------------------------------------------------------------------------\n\n# This tag specifies the encoding used for all characters in the configuration\n# file that follow. The default is UTF-8 which is also the encoding used for all\n# text before the first occurrence of this tag. Doxygen uses libiconv (or the\n# iconv built into libc) for the transcoding. See\n# https://www.gnu.org/software/libiconv/ for the list of possible encodings.\n# The default value is: UTF-8.\n\nDOXYFILE_ENCODING      = UTF-8\n\n# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by\n# double-quotes, unless you are using Doxywizard) that should identify the\n# project for which the documentation is generated. This name is used in the\n# title of most generated pages and in a few other places.\n# The default value is: My Project.\n\nPROJECT_NAME           = \"StanfordCPPLib\"\n\n# The PROJECT_NUMBER tag can be used to enter a project or revision number. This\n# could be handy for archiving the generated documentation or if some version\n# control system is used.\n\nPROJECT_NUMBER         =\n\n# Using the PROJECT_BRIEF tag one can provide an optional one line description\n# for a project that appears at the top of each page and should give viewer a\n# quick idea about the purpose of the project. Keep the description short.\n\nPROJECT_BRIEF          =\n\n# With the PROJECT_LOGO tag one can specify a logo or an icon that is included\n# in the documentation. The maximum height of the logo should not exceed 55\n# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy\n# the logo to the output directory.\n\nPROJECT_LOGO           =\n\n# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path\n# into which the generated documentation will be written. If a relative path is\n# entered, it will be relative to the location where doxygen was started. If\n# left blank the current directory will be used.\n\nOUTPUT_DIRECTORY       =\n\n# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-\n# directories (in 2 levels) under the output directory of each output format and\n# will distribute the generated files over these directories. Enabling this\n# option can be useful when feeding doxygen a huge amount of source files, where\n# putting all generated files in the same directory would otherwise causes\n# performance problems for the file system.\n# The default value is: NO.\n\nCREATE_SUBDIRS         = NO\n\n# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII\n# characters to appear in the names of generated files. If set to NO, non-ASCII\n# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode\n# U+3044.\n# The default value is: NO.\n\nALLOW_UNICODE_NAMES    = NO\n\n# The OUTPUT_LANGUAGE tag is used to specify the language in which all\n# documentation generated by doxygen is written. Doxygen will use this\n# information to generate all constant output in the proper language.\n# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,\n# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),\n# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,\n# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),\n# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,\n# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,\n# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,\n# Ukrainian and Vietnamese.\n# The default value is: English.\n\nOUTPUT_LANGUAGE        = English\n\n# The OUTPUT_TEXT_DIRECTION tag is used to specify the direction in which all\n# documentation generated by doxygen is written. Doxygen will use this\n# information to generate all generated output in the proper direction.\n# Possible values are: None, LTR, RTL and Context.\n# The default value is: None.\n\nOUTPUT_TEXT_DIRECTION  = None\n\n# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member\n# descriptions after the members that are listed in the file and class\n# documentation (similar to Javadoc). Set to NO to disable this.\n# The default value is: YES.\n\nBRIEF_MEMBER_DESC      = YES\n\n# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief\n# description of a member or function before the detailed description\n#\n# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the\n# brief descriptions will be completely suppressed.\n# The default value is: YES.\n\nREPEAT_BRIEF           = YES\n\n# This tag implements a quasi-intelligent brief description abbreviator that is\n# used to form the text in various listings. Each string in this list, if found\n# as the leading text of the brief description, will be stripped from the text\n# and the result, after processing the whole list, is used as the annotated\n# text. Otherwise, the brief description is used as-is. If left blank, the\n# following values are used ($name is automatically replaced with the name of\n# the entity):The $name class, The $name widget, The $name file, is, provides,\n# specifies, contains, represents, a, an and the.\n\nABBREVIATE_BRIEF       = \"The $name class\" \\\n                         \"The $name widget\" \\\n                         \"The $name file\" \\\n                         is \\\n                         provides \\\n                         specifies \\\n                         contains \\\n                         represents \\\n                         a \\\n                         an \\\n                         the\n\n# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then\n# doxygen will generate a detailed section even if there is only a brief\n# description.\n# The default value is: NO.\n\nALWAYS_DETAILED_SEC    = NO\n\n# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all\n# inherited members of a class in the documentation of that class as if those\n# members were ordinary class members. Constructors, destructors and assignment\n# operators of the base classes will not be shown.\n# The default value is: NO.\n\nINLINE_INHERITED_MEMB  = YES\n\n# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path\n# before files name in the file list and in the header files. If set to NO the\n# shortest path that makes the file name unique will be used\n# The default value is: YES.\n\nFULL_PATH_NAMES        = YES\n\n# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.\n# Stripping is only done if one of the specified strings matches the left-hand\n# part of the path. The tag can be used to show relative paths in the file list.\n# If left blank the directory from which doxygen is run is used as the path to\n# strip.\n#\n# Note that you can specify absolute paths here, but also relative paths, which\n# will be relative from the directory where doxygen is started.\n# This tag requires that the tag FULL_PATH_NAMES is set to YES.\n\nSTRIP_FROM_PATH        =\n\n# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the\n# path mentioned in the documentation of a class, which tells the reader which\n# header file to include in order to use a class. If left blank only the name of\n# the header file containing the class definition is used. Otherwise one should\n# specify the list of include paths that are normally passed to the compiler\n# using the -I flag.\n\nSTRIP_FROM_INC_PATH    =\n\n# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but\n# less readable) file names. This can be useful is your file systems doesn't\n# support long names like on DOS, Mac, or CD-ROM.\n# The default value is: NO.\n\nSHORT_NAMES            = NO\n\n# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the\n# first line (until the first dot) of a Javadoc-style comment as the brief\n# description. If set to NO, the Javadoc-style will behave just like regular Qt-\n# style comments (thus requiring an explicit @brief command for a brief\n# description.)\n# The default value is: NO.\n\nJAVADOC_AUTOBRIEF      = YES\n\n# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line\n# such as\n# /***************\n# as being the beginning of a Javadoc-style comment \"banner\". If set to NO, the\n# Javadoc-style will behave just like regular comments and it will not be\n# interpreted by doxygen.\n# The default value is: NO.\n\nJAVADOC_BANNER         = NO\n\n# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first\n# line (until the first dot) of a Qt-style comment as the brief description. If\n# set to NO, the Qt-style will behave just like regular Qt-style comments (thus\n# requiring an explicit \\brief command for a brief description.)\n# The default value is: NO.\n\nQT_AUTOBRIEF           = NO\n\n# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a\n# multi-line C++ special comment block (i.e. a block of //! or /// comments) as\n# a brief description. This used to be the default behavior. The new default is\n# to treat a multi-line C++ comment block as a detailed description. Set this\n# tag to YES if you prefer the old behavior instead.\n#\n# Note that setting this tag to YES also means that rational rose comments are\n# not recognized any more.\n# The default value is: NO.\n\nMULTILINE_CPP_IS_BRIEF = NO\n\n# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the\n# documentation from any documented member that it re-implements.\n# The default value is: YES.\n\nINHERIT_DOCS           = YES\n\n# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new\n# page for each member. If set to NO, the documentation of a member will be part\n# of the file/class/namespace that contains it.\n# The default value is: NO.\n\nSEPARATE_MEMBER_PAGES  = NO\n\n# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen\n# uses this value to replace tabs by spaces in code fragments.\n# Minimum value: 1, maximum value: 16, default value: 4.\n\nTAB_SIZE               = 4\n\n# This tag can be used to specify a number of aliases that act as commands in\n# the documentation. An alias has the form:\n# name=value\n# For example adding\n# \"sideeffect=@par Side Effects:\\n\"\n# will allow you to put the command \\sideeffect (or @sideeffect) in the\n# documentation, which will result in a user-defined paragraph with heading\n# \"Side Effects:\". You can put \\n's in the value part of an alias to insert\n# newlines (in the resulting output). You can put ^^ in the value part of an\n# alias to insert a newline as if a physical newline was in the original file.\n# When you need a literal { or } or , in the value part of an alias you have to\n# escape them by means of a backslash (\\), this can lead to conflicts with the\n# commands \\{ and \\} for these it is advised to use the version @{ and @} or use\n# a double escape (\\\\{ and \\\\})\n\nALIASES                =\nALIASES                += \"bigoh=\\xrefitem BigOh \\\"Big-Oh\\\" \\\"BigOh\\\"  \"\n\n# This tag can be used to specify a number of word-keyword mappings (TCL only).\n# A mapping has the form \"name=value\". For example adding \"class=itcl::class\"\n# will allow you to use the command class in the itcl::class meaning.\n\nTCL_SUBST              =\n\n# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources\n# only. Doxygen will then generate output that is more tailored for C. For\n# instance, some of the names that are used will be different. The list of all\n# members will be omitted, etc.\n# The default value is: NO.\n\nOPTIMIZE_OUTPUT_FOR_C  = NO\n\n# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or\n# Python sources only. Doxygen will then generate output that is more tailored\n# for that language. For instance, namespaces will be presented as packages,\n# qualified scopes will look different, etc.\n# The default value is: NO.\n\nOPTIMIZE_OUTPUT_JAVA   = NO\n\n# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran\n# sources. Doxygen will then generate output that is tailored for Fortran.\n# The default value is: NO.\n\nOPTIMIZE_FOR_FORTRAN   = NO\n\n# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL\n# sources. Doxygen will then generate output that is tailored for VHDL.\n# The default value is: NO.\n\nOPTIMIZE_OUTPUT_VHDL   = NO\n\n# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice\n# sources only. Doxygen will then generate output that is more tailored for that\n# language. For instance, namespaces will be presented as modules, types will be\n# separated into more groups, etc.\n# The default value is: NO.\n\nOPTIMIZE_OUTPUT_SLICE  = NO\n\n# Doxygen selects the parser to use depending on the extension of the files it\n# parses. With this tag you can assign which parser to use for a given\n# extension. Doxygen has a built-in mapping, but you can override or extend it\n# using this tag. The format is ext=language, where ext is a file extension, and\n# language is one of the parsers supported by doxygen: IDL, Java, Javascript,\n# Csharp (C#), C, C++, D, PHP, md (Markdown), Objective-C, Python, Slice,\n# Fortran (fixed format Fortran: FortranFixed, free formatted Fortran:\n# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser\n# tries to guess whether the code is fixed or free formatted code, this is the\n# default for Fortran type files), VHDL, tcl. For instance to make doxygen treat\n# .inc files as Fortran files (default is PHP), and .f files as C (default is\n# Fortran), use: inc=Fortran f=C.\n#\n# Note: For files without extension you can use no_extension as a placeholder.\n#\n# Note that for custom extensions you also need to set FILE_PATTERNS otherwise\n# the files are not read by doxygen.\n\nEXTENSION_MAPPING      =\n\n# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments\n# according to the Markdown format, which allows for more readable\n# documentation. See https://daringfireball.net/projects/markdown/ for details.\n# The output of markdown processing is further processed by doxygen, so you can\n# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in\n# case of backward compatibilities issues.\n# The default value is: YES.\n\nMARKDOWN_SUPPORT       = YES\n\n# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up\n# to that level are automatically included in the table of contents, even if\n# they do not have an id attribute.\n# Note: This feature currently applies only to Markdown headings.\n# Minimum value: 0, maximum value: 99, default value: 5.\n# This tag requires that the tag MARKDOWN_SUPPORT is set to YES.\n\nTOC_INCLUDE_HEADINGS   = 0\n\n# When enabled doxygen tries to link words that correspond to documented\n# classes, or namespaces to their corresponding documentation. Such a link can\n# be prevented in individual cases by putting a % sign in front of the word or\n# globally by setting AUTOLINK_SUPPORT to NO.\n# The default value is: YES.\n\nAUTOLINK_SUPPORT       = YES\n\n# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want\n# to include (a tag file for) the STL sources as input, then you should set this\n# tag to YES in order to let doxygen match functions declarations and\n# definitions whose arguments contain STL classes (e.g. func(std::string);\n# versus func(std::string) {}). This also make the inheritance and collaboration\n# diagrams that involve STL classes more complete and accurate.\n# The default value is: NO.\n\nBUILTIN_STL_SUPPORT    = YES\n\n# If you use Microsoft's C++/CLI language, you should set this option to YES to\n# enable parsing support.\n# The default value is: NO.\n\nCPP_CLI_SUPPORT        = NO\n\n# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:\n# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen\n# will parse them like normal C++ but will assume all classes use public instead\n# of private inheritance when no explicit protection keyword is present.\n# The default value is: NO.\n\nSIP_SUPPORT            = NO\n\n# For Microsoft's IDL there are propget and propput attributes to indicate\n# getter and setter methods for a property. Setting this option to YES will make\n# doxygen to replace the get and set methods by a property in the documentation.\n# This will only work if the methods are indeed getting or setting a simple\n# type. If this is not the case, or you want to show the methods anyway, you\n# should set this option to NO.\n# The default value is: YES.\n\nIDL_PROPERTY_SUPPORT   = YES\n\n# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC\n# tag is set to YES then doxygen will reuse the documentation of the first\n# member in the group (if any) for the other members of the group. By default\n# all members of a group must be documented explicitly.\n# The default value is: NO.\n\nDISTRIBUTE_GROUP_DOC   = NO\n\n# If one adds a struct or class to a group and this option is enabled, then also\n# any nested class or struct is added to the same group. By default this option\n# is disabled and one has to add nested compounds explicitly via \\ingroup.\n# The default value is: NO.\n\nGROUP_NESTED_COMPOUNDS = NO\n\n# Set the SUBGROUPING tag to YES to allow class member groups of the same type\n# (for instance a group of public functions) to be put as a subgroup of that\n# type (e.g. under the Public Functions section). Set it to NO to prevent\n# subgrouping. Alternatively, this can be done per class using the\n# \\nosubgrouping command.\n# The default value is: YES.\n\nSUBGROUPING            = YES\n\n# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions\n# are shown inside the group in which they are included (e.g. using \\ingroup)\n# instead of on a separate page (for HTML and Man pages) or section (for LaTeX\n# and RTF).\n#\n# Note that this feature does not work in combination with\n# SEPARATE_MEMBER_PAGES.\n# The default value is: NO.\n\nINLINE_GROUPED_CLASSES = NO\n\n# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions\n# with only public data fields or simple typedef fields will be shown inline in\n# the documentation of the scope in which they are defined (i.e. file,\n# namespace, or group documentation), provided this scope is documented. If set\n# to NO, structs, classes, and unions are shown on a separate page (for HTML and\n# Man pages) or section (for LaTeX and RTF).\n# The default value is: NO.\n\nINLINE_SIMPLE_STRUCTS  = NO\n\n# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or\n# enum is documented as struct, union, or enum with the name of the typedef. So\n# typedef struct TypeS {} TypeT, will appear in the documentation as a struct\n# with name TypeT. When disabled the typedef will appear as a member of a file,\n# namespace, or class. And the struct will be named TypeS. This can typically be\n# useful for C code in case the coding convention dictates that all compound\n# types are typedef'ed and only the typedef is referenced, never the tag name.\n# The default value is: NO.\n\nTYPEDEF_HIDES_STRUCT   = NO\n\n# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This\n# cache is used to resolve symbols given their name and scope. Since this can be\n# an expensive process and often the same symbol appears multiple times in the\n# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small\n# doxygen will become slower. If the cache is too large, memory is wasted. The\n# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range\n# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536\n# symbols. At the end of a run doxygen will report the cache usage and suggest\n# the optimal cache size from a speed point of view.\n# Minimum value: 0, maximum value: 9, default value: 0.\n\nLOOKUP_CACHE_SIZE      = 0\n\n#---------------------------------------------------------------------------\n# Build related configuration options\n#---------------------------------------------------------------------------\n\n# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in\n# documentation are documented, even if no documentation was available. Private\n# class members and static file members will be hidden unless the\n# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.\n# Note: This will also disable the warnings about undocumented members that are\n# normally produced when WARNINGS is set to YES.\n# The default value is: NO.\n\nEXTRACT_ALL            = YES\n\n# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will\n# be included in the documentation.\n# The default value is: NO.\n\nEXTRACT_PRIVATE        = NO\n\n# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual\n# methods of a class will be included in the documentation.\n# The default value is: NO.\n\nEXTRACT_PRIV_VIRTUAL   = NO\n\n# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal\n# scope will be included in the documentation.\n# The default value is: NO.\n\nEXTRACT_PACKAGE        = NO\n\n# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be\n# included in the documentation.\n# The default value is: NO.\n\nEXTRACT_STATIC         = NO\n\n# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined\n# locally in source files will be included in the documentation. If set to NO,\n# only classes defined in header files are included. Does not have any effect\n# for Java sources.\n# The default value is: YES.\n\nEXTRACT_LOCAL_CLASSES  = YES\n\n# This flag is only useful for Objective-C code. If set to YES, local methods,\n# which are defined in the implementation section but not in the interface are\n# included in the documentation. If set to NO, only methods in the interface are\n# included.\n# The default value is: NO.\n\nEXTRACT_LOCAL_METHODS  = NO\n\n# If this flag is set to YES, the members of anonymous namespaces will be\n# extracted and appear in the documentation as a namespace called\n# 'anonymous_namespace{file}', where file will be replaced with the base name of\n# the file that contains the anonymous namespace. By default anonymous namespace\n# are hidden.\n# The default value is: NO.\n\nEXTRACT_ANON_NSPACES   = NO\n\n# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all\n# undocumented members inside documented classes or files. If set to NO these\n# members will be included in the various overviews, but no documentation\n# section is generated. This option has no effect if EXTRACT_ALL is enabled.\n# The default value is: NO.\n\nHIDE_UNDOC_MEMBERS     = NO\n\n# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all\n# undocumented classes that are normally visible in the class hierarchy. If set\n# to NO, these classes will be included in the various overviews. This option\n# has no effect if EXTRACT_ALL is enabled.\n# The default value is: NO.\n\nHIDE_UNDOC_CLASSES     = NO\n\n# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend\n# (class|struct|union) declarations. If set to NO, these declarations will be\n# included in the documentation.\n# The default value is: NO.\n\nHIDE_FRIEND_COMPOUNDS  = NO\n\n# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any\n# documentation blocks found inside the body of a function. If set to NO, these\n# blocks will be appended to the function's detailed documentation block.\n# The default value is: NO.\n\nHIDE_IN_BODY_DOCS      = NO\n\n# The INTERNAL_DOCS tag determines if documentation that is typed after a\n# \\internal command is included. If the tag is set to NO then the documentation\n# will be excluded. Set it to YES to include the internal documentation.\n# The default value is: NO.\n\nINTERNAL_DOCS          = NO\n\n# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file\n# names in lower-case letters. If set to YES, upper-case letters are also\n# allowed. This is useful if you have classes or files whose names only differ\n# in case and if your file system supports case sensitive file names. Windows\n# (including Cygwin) ands Mac users are advised to set this option to NO.\n# The default value is: system dependent.\n\nCASE_SENSE_NAMES       = YES\n\n# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with\n# their full class and namespace scopes in the documentation. If set to YES, the\n# scope will be hidden.\n# The default value is: NO.\n\nHIDE_SCOPE_NAMES       = YES\n\n# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will\n# append additional text to a page's title, such as Class Reference. If set to\n# YES the compound reference will be hidden.\n# The default value is: NO.\n\nHIDE_COMPOUND_REFERENCE= NO\n\n# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of\n# the files that are included by a file in the documentation of that file.\n# The default value is: YES.\n\nSHOW_INCLUDE_FILES     = YES\n\n# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each\n# grouped member an include statement to the documentation, telling the reader\n# which file to include in order to use the member.\n# The default value is: NO.\n\nSHOW_GROUPED_MEMB_INC  = NO\n\n# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include\n# files with double quotes in the documentation rather than with sharp brackets.\n# The default value is: NO.\n\nFORCE_LOCAL_INCLUDES   = NO\n\n# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the\n# documentation for inline members.\n# The default value is: YES.\n\nINLINE_INFO            = YES\n\n# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the\n# (detailed) documentation of file and class members alphabetically by member\n# name. If set to NO, the members will appear in declaration order.\n# The default value is: YES.\n\nSORT_MEMBER_DOCS       = YES\n\n# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief\n# descriptions of file, namespace and class members alphabetically by member\n# name. If set to NO, the members will appear in declaration order. Note that\n# this will also influence the order of the classes in the class list.\n# The default value is: NO.\n\nSORT_BRIEF_DOCS        = YES\n\n# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the\n# (brief and detailed) documentation of class members so that constructors and\n# destructors are listed first. If set to NO the constructors will appear in the\n# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.\n# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief\n# member documentation.\n# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting\n# detailed member documentation.\n# The default value is: NO.\n\nSORT_MEMBERS_CTORS_1ST = YES\n\n# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy\n# of group names into alphabetical order. If set to NO the group names will\n# appear in their defined order.\n# The default value is: NO.\n\nSORT_GROUP_NAMES       = YES\n\n# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by\n# fully-qualified names, including namespaces. If set to NO, the class list will\n# be sorted only by class name, not including the namespace part.\n# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.\n# Note: This option applies only to the class list, not to the alphabetical\n# list.\n# The default value is: NO.\n\nSORT_BY_SCOPE_NAME     = NO\n\n# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper\n# type resolution of all parameters of a function it will reject a match between\n# the prototype and the implementation of a member function even if there is\n# only one candidate or it is obvious which candidate to choose by doing a\n# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still\n# accept a match between prototype and implementation in such cases.\n# The default value is: NO.\n\nSTRICT_PROTO_MATCHING  = NO\n\n# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo\n# list. This list is created by putting \\todo commands in the documentation.\n# The default value is: YES.\n\nGENERATE_TODOLIST      = YES\n\n# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test\n# list. This list is created by putting \\test commands in the documentation.\n# The default value is: YES.\n\nGENERATE_TESTLIST      = YES\n\n# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug\n# list. This list is created by putting \\bug commands in the documentation.\n# The default value is: YES.\n\nGENERATE_BUGLIST       = YES\n\n# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO)\n# the deprecated list. This list is created by putting \\deprecated commands in\n# the documentation.\n# The default value is: YES.\n\nGENERATE_DEPRECATEDLIST= YES\n\n# The ENABLED_SECTIONS tag can be used to enable conditional documentation\n# sections, marked by \\if <section_label> ... \\endif and \\cond <section_label>\n# ... \\endcond blocks.\n\nENABLED_SECTIONS       =\n\n# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the\n# initial value of a variable or macro / define can have for it to appear in the\n# documentation. If the initializer consists of more lines than specified here\n# it will be hidden. Use a value of 0 to hide initializers completely. The\n# appearance of the value of individual variables and macros / defines can be\n# controlled using \\showinitializer or \\hideinitializer command in the\n# documentation regardless of this setting.\n# Minimum value: 0, maximum value: 10000, default value: 30.\n\nMAX_INITIALIZER_LINES  = 30\n\n# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at\n# the bottom of the documentation of classes and structs. If set to YES, the\n# list will mention the files that were used to generate the documentation.\n# The default value is: YES.\n\nSHOW_USED_FILES        = NO\n\n# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This\n# will remove the Files entry from the Quick Index and from the Folder Tree View\n# (if specified).\n# The default value is: YES.\n\nSHOW_FILES             = NO\n\n# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces\n# page. This will remove the Namespaces entry from the Quick Index and from the\n# Folder Tree View (if specified).\n# The default value is: YES.\n\nSHOW_NAMESPACES        = NO\n\n# The FILE_VERSION_FILTER tag can be used to specify a program or script that\n# doxygen should invoke to get the current version for each file (typically from\n# the version control system). Doxygen will invoke the program by executing (via\n# popen()) the command command input-file, where command is the value of the\n# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided\n# by doxygen. Whatever the program writes to standard output is used as the file\n# version. For an example see the documentation.\n\nFILE_VERSION_FILTER    =\n\n# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed\n# by doxygen. The layout file controls the global structure of the generated\n# output files in an output format independent way. To create the layout file\n# that represents doxygen's defaults, run doxygen with the -l option. You can\n# optionally specify a file name after the option, if omitted DoxygenLayout.xml\n# will be used as the name of the layout file.\n#\n# Note that if you run doxygen from a directory containing a file called\n# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE\n# tag is left empty.\n\nLAYOUT_FILE            =\n\n# The CITE_BIB_FILES tag can be used to specify one or more bib files containing\n# the reference definitions. This must be a list of .bib files. The .bib\n# extension is automatically appended if omitted. This requires the bibtex tool\n# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info.\n# For LaTeX the style of the bibliography can be controlled using\n# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the\n# search path. See also \\cite for info how to create references.\n\nCITE_BIB_FILES         =\n\n#---------------------------------------------------------------------------\n# Configuration options related to warning and progress messages\n#---------------------------------------------------------------------------\n\n# The QUIET tag can be used to turn on/off the messages that are generated to\n# standard output by doxygen. If QUIET is set to YES this implies that the\n# messages are off.\n# The default value is: NO.\n\nQUIET                  = NO\n\n# The WARNINGS tag can be used to turn on/off the warning messages that are\n# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES\n# this implies that the warnings are on.\n#\n# Tip: Turn warnings on while writing the documentation.\n# The default value is: YES.\n\nWARNINGS               = YES\n\n# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate\n# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag\n# will automatically be disabled.\n# The default value is: YES.\n\nWARN_IF_UNDOCUMENTED   = YES\n\n# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for\n# potential errors in the documentation, such as not documenting some parameters\n# in a documented function, or documenting parameters that don't exist or using\n# markup commands wrongly.\n# The default value is: YES.\n\nWARN_IF_DOC_ERROR      = YES\n\n# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that\n# are documented, but have no documentation for their parameters or return\n# value. If set to NO, doxygen will only warn about wrong or incomplete\n# parameter documentation, but not about the absence of documentation. If\n# EXTRACT_ALL is set to YES then this flag will automatically be disabled.\n# The default value is: NO.\n\nWARN_NO_PARAMDOC       = NO\n\n# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when\n# a warning is encountered.\n# The default value is: NO.\n\nWARN_AS_ERROR          = NO\n\n# The WARN_FORMAT tag determines the format of the warning messages that doxygen\n# can produce. The string should contain the $file, $line, and $text tags, which\n# will be replaced by the file and line number from which the warning originated\n# and the warning text. Optionally the format may contain $version, which will\n# be replaced by the version of the file (if it could be obtained via\n# FILE_VERSION_FILTER)\n# The default value is: $file:$line: $text.\n\nWARN_FORMAT            = \"$file:$line: $text\"\n\n# The WARN_LOGFILE tag can be used to specify a file to which warning and error\n# messages should be written. If left blank the output is written to standard\n# error (stderr).\n\nWARN_LOGFILE           =\n\n#---------------------------------------------------------------------------\n# Configuration options related to the input files\n#---------------------------------------------------------------------------\n\n# The INPUT tag is used to specify the files and/or directories that contain\n# documented source files. You may enter file names like myfile.cpp or\n# directories like /usr/src/myproject. Separate the files or directories with\n# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING\n# Note: If this tag is empty the current directory is searched.\n\nINPUT                  = ../StanfordCPPLib/\n\n# This tag can be used to specify the character encoding of the source files\n# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses\n# libiconv (or the iconv built into libc) for the transcoding. See the libiconv\n# documentation (see: https://www.gnu.org/software/libiconv/) for the list of\n# possible encodings.\n# The default value is: UTF-8.\n\nINPUT_ENCODING         = UTF-8\n\n# If the value of the INPUT tag contains directories, you can use the\n# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and\n# *.h) to filter out the source-files in the directories.\n#\n# Note that for custom extensions or not directly supported extensions you also\n# need to set EXTENSION_MAPPING for the extension otherwise the files are not\n# read by doxygen.\n#\n# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp,\n# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h,\n# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc,\n# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f95, *.f03, *.f08,\n# *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, *.qsf and *.ice.\n\nFILE_PATTERNS          = *.c \\\n                         *.cc \\\n                         *.cxx \\\n                         *.cpp \\\n                         *.c++ \\\n                         *.java \\\n                         *.ii \\\n                         *.ixx \\\n                         *.ipp \\\n                         *.i++ \\\n                         *.inl \\\n                         *.idl \\\n                         *.ddl \\\n                         *.odl \\\n                         *.h \\\n                         *.hh \\\n                         *.hxx \\\n                         *.hpp \\\n                         *.h++ \\\n                         *.cs \\\n                         *.d \\\n                         *.php \\\n                         *.php4 \\\n                         *.php5 \\\n                         *.phtml \\\n                         *.inc \\\n                         *.m \\\n                         *.markdown \\\n                         *.md \\\n                         *.mm \\\n                         *.dox \\\n                         *.py \\\n                         *.pyw \\\n                         *.f90 \\\n                         *.f95 \\\n                         *.f03 \\\n                         *.f08 \\\n                         *.f \\\n                         *.for \\\n                         *.tcl \\\n                         *.vhd \\\n                         *.vhdl \\\n                         *.ucf \\\n                         *.qsf \\\n                         *.ice\n\n# The RECURSIVE tag can be used to specify whether or not subdirectories should\n# be searched for input files as well.\n# The default value is: NO.\n\nRECURSIVE              = YES\n\n# The EXCLUDE tag can be used to specify files and/or directories that should be\n# excluded from the INPUT source files. This way you can easily exclude a\n# subdirectory from a directory tree whose root is specified with the INPUT tag.\n#\n# Note that relative paths are relative to the directory from which doxygen is\n# run.\n\nEXCLUDE                =\n\n# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or\n# directories that are symbolic links (a Unix file system feature) are excluded\n# from the input.\n# The default value is: NO.\n\nEXCLUDE_SYMLINKS       = YES\n\n# If the value of the INPUT tag contains directories, you can use the\n# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude\n# certain files from those directories.\n#\n# Note that the wildcards are matched against the file with absolute path, so to\n# exclude all test directories for example use the pattern */test/*\n\nEXCLUDE_PATTERNS       = */autograder/*\n\n# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names\n# (namespaces, classes, functions, etc.) that should be excluded from the\n# output. The symbol name can be a fully qualified name, a word, or if the\n# wildcard * is used, a substring. Examples: ANamespace, AClass,\n# AClass::ANamespace, ANamespace::*Test\n#\n# Note that the wildcards are matched against the file with absolute path, so to\n# exclude all test directories use the pattern */test/*\n\nEXCLUDE_SYMBOLS        = _Internal_* \\\n                         _fepatch* \\\n                         _fe_* \\\n                         InterruptedIOException \\\n                         redi::* \\\n                         StartWithClientData \\\n                         StartWithVoid\n\n# The EXAMPLE_PATH tag can be used to specify one or more files or directories\n# that contain example code fragments that are included (see the \\include\n# command).\n\nEXAMPLE_PATH           =\n\n# If the value of the EXAMPLE_PATH tag contains directories, you can use the\n# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and\n# *.h) to filter out the source-files in the directories. If left blank all\n# files are included.\n\nEXAMPLE_PATTERNS       = *\n\n# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be\n# searched for input files to be used with the \\include or \\dontinclude commands\n# irrespective of the value of the RECURSIVE tag.\n# The default value is: NO.\n\nEXAMPLE_RECURSIVE      = NO\n\n# The IMAGE_PATH tag can be used to specify one or more files or directories\n# that contain images that are to be included in the documentation (see the\n# \\image command).\n\nIMAGE_PATH             =\n\n# The INPUT_FILTER tag can be used to specify a program that doxygen should\n# invoke to filter for each input file. Doxygen will invoke the filter program\n# by executing (via popen()) the command:\n#\n# <filter> <input-file>\n#\n# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the\n# name of an input file. Doxygen will then use the output that the filter\n# program writes to standard output. If FILTER_PATTERNS is specified, this tag\n# will be ignored.\n#\n# Note that the filter must not add or remove lines; it is applied before the\n# code is scanned, but not when the output code is generated. If lines are added\n# or removed, the anchors will not be placed correctly.\n#\n# Note that for custom extensions or not directly supported extensions you also\n# need to set EXTENSION_MAPPING for the extension otherwise the files are not\n# properly processed by doxygen.\n\nINPUT_FILTER           =\n\n# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern\n# basis. Doxygen will compare the file name with each pattern and apply the\n# filter if there is a match. The filters are a list of the form: pattern=filter\n# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how\n# filters are used. If the FILTER_PATTERNS tag is empty or if none of the\n# patterns match the file name, INPUT_FILTER is applied.\n#\n# Note that for custom extensions or not directly supported extensions you also\n# need to set EXTENSION_MAPPING for the extension otherwise the files are not\n# properly processed by doxygen.\n\nFILTER_PATTERNS        =\n\n# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using\n# INPUT_FILTER) will also be used to filter the input files that are used for\n# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).\n# The default value is: NO.\n\nFILTER_SOURCE_FILES    = NO\n\n# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file\n# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and\n# it is also possible to disable source filtering for a specific pattern using\n# *.ext= (so without naming a filter).\n# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.\n\nFILTER_SOURCE_PATTERNS =\n\n# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that\n# is part of the input, its contents will be placed on the main page\n# (index.html). This can be useful if you have a project on for instance GitHub\n# and want to reuse the introduction page also for the doxygen output.\n\nUSE_MDFILE_AS_MAINPAGE =\n\n#---------------------------------------------------------------------------\n# Configuration options related to source browsing\n#---------------------------------------------------------------------------\n\n# If the SOURCE_BROWSER tag is set to YES then a list of source files will be\n# generated. Documented entities will be cross-referenced with these sources.\n#\n# Note: To get rid of all source code in the generated output, make sure that\n# also VERBATIM_HEADERS is set to NO.\n# The default value is: NO.\n\nSOURCE_BROWSER         = NO\n\n# Setting the INLINE_SOURCES tag to YES will include the body of functions,\n# classes and enums directly into the documentation.\n# The default value is: NO.\n\nINLINE_SOURCES         = NO\n\n# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any\n# special comment blocks from generated source code fragments. Normal C, C++ and\n# Fortran comments will always remain visible.\n# The default value is: YES.\n\nSTRIP_CODE_COMMENTS    = YES\n\n# If the REFERENCED_BY_RELATION tag is set to YES then for each documented\n# entity all documented functions referencing it will be listed.\n# The default value is: NO.\n\nREFERENCED_BY_RELATION = NO\n\n# If the REFERENCES_RELATION tag is set to YES then for each documented function\n# all documented entities called/used by that function will be listed.\n# The default value is: NO.\n\nREFERENCES_RELATION    = NO\n\n# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set\n# to YES then the hyperlinks from functions in REFERENCES_RELATION and\n# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will\n# link to the documentation.\n# The default value is: YES.\n\nREFERENCES_LINK_SOURCE = YES\n\n# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the\n# source code will show a tooltip with additional information such as prototype,\n# brief description and links to the definition and documentation. Since this\n# will make the HTML file larger and loading of large files a bit slower, you\n# can opt to disable this feature.\n# The default value is: YES.\n# This tag requires that the tag SOURCE_BROWSER is set to YES.\n\nSOURCE_TOOLTIPS        = YES\n\n# If the USE_HTAGS tag is set to YES then the references to source code will\n# point to the HTML generated by the htags(1) tool instead of doxygen built-in\n# source browser. The htags tool is part of GNU's global source tagging system\n# (see https://www.gnu.org/software/global/global.html). You will need version\n# 4.8.6 or higher.\n#\n# To use it do the following:\n# - Install the latest version of global\n# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file\n# - Make sure the INPUT points to the root of the source tree\n# - Run doxygen as normal\n#\n# Doxygen will invoke htags (and that will in turn invoke gtags), so these\n# tools must be available from the command line (i.e. in the search path).\n#\n# The result: instead of the source browser generated by doxygen, the links to\n# source code will now point to the output of htags.\n# The default value is: NO.\n# This tag requires that the tag SOURCE_BROWSER is set to YES.\n\nUSE_HTAGS              = NO\n\n# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a\n# verbatim copy of the header file for each class for which an include is\n# specified. Set to NO to disable this.\n# See also: Section \\class.\n# The default value is: YES.\n\nVERBATIM_HEADERS       = YES\n\n# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the\n# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the\n# cost of reduced performance. This can be particularly helpful with template\n# rich C++ code for which doxygen's built-in parser lacks the necessary type\n# information.\n# Note: The availability of this option depends on whether or not doxygen was\n# generated with the -Duse_libclang=ON option for CMake.\n# The default value is: NO.\n\nCLANG_ASSISTED_PARSING = NO\n\n# If clang assisted parsing is enabled you can provide the compiler with command\n# line options that you would normally use when invoking the compiler. Note that\n# the include paths will already be set by doxygen for the files and directories\n# specified with INPUT and INCLUDE_PATH.\n# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.\n\nCLANG_OPTIONS          =\n\n# If clang assisted parsing is enabled you can provide the clang parser with the\n# path to the compilation database (see:\n# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) used when the files\n# were built. This is equivalent to specifying the \"-p\" option to a clang tool,\n# such as clang-check. These options will then be passed to the parser.\n# Note: The availability of this option depends on whether or not doxygen was\n# generated with the -Duse_libclang=ON option for CMake.\n\nCLANG_DATABASE_PATH    =\n\n#---------------------------------------------------------------------------\n# Configuration options related to the alphabetical class index\n#---------------------------------------------------------------------------\n\n# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all\n# compounds will be generated. Enable this if the project contains a lot of\n# classes, structs, unions or interfaces.\n# The default value is: YES.\n\nALPHABETICAL_INDEX     = YES\n\n# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in\n# which the alphabetical index list will be split.\n# Minimum value: 1, maximum value: 20, default value: 5.\n# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.\n\nCOLS_IN_ALPHA_INDEX    = 5\n\n# In case all classes in a project start with a common prefix, all classes will\n# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag\n# can be used to specify a prefix (or a list of prefixes) that should be ignored\n# while generating the index headers.\n# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.\n\nIGNORE_PREFIX          =\n\n#---------------------------------------------------------------------------\n# Configuration options related to the HTML output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output\n# The default value is: YES.\n\nGENERATE_HTML          = YES\n\n# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a\n# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of\n# it.\n# The default directory is: html.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_OUTPUT            = html\n\n# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each\n# generated HTML page (for example: .htm, .php, .asp).\n# The default value is: .html.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_FILE_EXTENSION    = .html\n\n# The HTML_HEADER tag can be used to specify a user-defined HTML header file for\n# each generated HTML page. If the tag is left blank doxygen will generate a\n# standard header.\n#\n# To get valid HTML the header file that includes any scripts and style sheets\n# that doxygen needs, which is dependent on the configuration options used (e.g.\n# the setting GENERATE_TREEVIEW). It is highly recommended to start with a\n# default header using\n# doxygen -w html new_header.html new_footer.html new_stylesheet.css\n# YourConfigFile\n# and then modify the file new_header.html. See also section \"Doxygen usage\"\n# for information on how to generate the default header that doxygen normally\n# uses.\n# Note: The header is subject to change so you typically have to regenerate the\n# default header when upgrading to a newer version of doxygen. For a description\n# of the possible markers and block names see the documentation.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_HEADER            =\n\n# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each\n# generated HTML page. If the tag is left blank doxygen will generate a standard\n# footer. See HTML_HEADER for more information on how to generate a default\n# footer and what special commands can be used inside the footer. See also\n# section \"Doxygen usage\" for information on how to generate the default footer\n# that doxygen normally uses.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_FOOTER            =\n\n# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style\n# sheet that is used by each HTML page. It can be used to fine-tune the look of\n# the HTML output. If left blank doxygen will generate a default style sheet.\n# See also section \"Doxygen usage\" for information on how to generate the style\n# sheet that doxygen normally uses.\n# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as\n# it is more robust and this tag (HTML_STYLESHEET) will in the future become\n# obsolete.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_STYLESHEET        =\n\n# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined\n# cascading style sheets that are included after the standard style sheets\n# created by doxygen. Using this option one can overrule certain style aspects.\n# This is preferred over using HTML_STYLESHEET since it does not replace the\n# standard style sheet and is therefore more robust against future updates.\n# Doxygen will copy the style sheet files to the output directory.\n# Note: The order of the extra style sheet files is of importance (e.g. the last\n# style sheet in the list overrules the setting of the previous ones in the\n# list). For an example see the documentation.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_EXTRA_STYLESHEET  = customdoxygen.css\n\n# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or\n# other source files which should be copied to the HTML output directory. Note\n# that these files will be copied to the base HTML output directory. Use the\n# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these\n# files. In the HTML_STYLESHEET file, use the file name only. Also note that the\n# files will be copied as-is; there are no commands or markers available.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_EXTRA_FILES       =\n\n# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen\n# will adjust the colors in the style sheet and background images according to\n# this color. Hue is specified as an angle on a colorwheel, see\n# https://en.wikipedia.org/wiki/Hue for more information. For instance the value\n# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300\n# purple, and 360 is red again.\n# Minimum value: 0, maximum value: 359, default value: 220.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_COLORSTYLE_HUE    = 220\n\n# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors\n# in the HTML output. For a value of 0 the output will use grayscales only. A\n# value of 255 will produce the most vivid colors.\n# Minimum value: 0, maximum value: 255, default value: 100.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_COLORSTYLE_SAT    = 100\n\n# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the\n# luminance component of the colors in the HTML output. Values below 100\n# gradually make the output lighter, whereas values above 100 make the output\n# darker. The value divided by 100 is the actual gamma applied, so 80 represents\n# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not\n# change the gamma.\n# Minimum value: 40, maximum value: 240, default value: 80.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_COLORSTYLE_GAMMA  = 80\n\n# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML\n# page will contain the date and time when the page was generated. Setting this\n# to YES can help to show when doxygen was last run and thus if the\n# documentation is up to date.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_TIMESTAMP         = NO\n\n# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML\n# documentation will contain a main index with vertical navigation menus that\n# are dynamically created via Javascript. If disabled, the navigation index will\n# consists of multiple levels of tabs that are statically embedded in every HTML\n# page. Disable this option to support browsers that do not have Javascript,\n# like the Qt help browser.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_DYNAMIC_MENUS     = YES\n\n# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML\n# documentation will contain sections that can be hidden and shown after the\n# page has loaded.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_DYNAMIC_SECTIONS  = NO\n\n# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries\n# shown in the various tree structured indices initially; the user can expand\n# and collapse entries dynamically later on. Doxygen will expand the tree to\n# such a level that at most the specified number of entries are visible (unless\n# a fully collapsed tree already exceeds this amount). So setting the number of\n# entries 1 will produce a full collapsed tree by default. 0 is a special value\n# representing an infinite number of entries and will result in a full expanded\n# tree by default.\n# Minimum value: 0, maximum value: 9999, default value: 100.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_INDEX_NUM_ENTRIES = 100\n\n# If the GENERATE_DOCSET tag is set to YES, additional index files will be\n# generated that can be used as input for Apple's Xcode 3 integrated development\n# environment (see: https://developer.apple.com/xcode/), introduced with OSX\n# 10.5 (Leopard). To create a documentation set, doxygen will generate a\n# Makefile in the HTML output directory. Running make will produce the docset in\n# that directory and running make install will install the docset in\n# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at\n# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy\n# genXcode/_index.html for more information.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nGENERATE_DOCSET        = NO\n\n# This tag determines the name of the docset feed. A documentation feed provides\n# an umbrella under which multiple documentation sets from a single provider\n# (such as a company or product suite) can be grouped.\n# The default value is: Doxygen generated docs.\n# This tag requires that the tag GENERATE_DOCSET is set to YES.\n\nDOCSET_FEEDNAME        = \"Doxygen generated docs\"\n\n# This tag specifies a string that should uniquely identify the documentation\n# set bundle. This should be a reverse domain-name style string, e.g.\n# com.mycompany.MyDocSet. Doxygen will append .docset to the name.\n# The default value is: org.doxygen.Project.\n# This tag requires that the tag GENERATE_DOCSET is set to YES.\n\nDOCSET_BUNDLE_ID       = org.doxygen.Project\n\n# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify\n# the documentation publisher. This should be a reverse domain-name style\n# string, e.g. com.mycompany.MyDocSet.documentation.\n# The default value is: org.doxygen.Publisher.\n# This tag requires that the tag GENERATE_DOCSET is set to YES.\n\nDOCSET_PUBLISHER_ID    = org.doxygen.Publisher\n\n# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.\n# The default value is: Publisher.\n# This tag requires that the tag GENERATE_DOCSET is set to YES.\n\nDOCSET_PUBLISHER_NAME  = Publisher\n\n# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three\n# additional HTML index files: index.hhp, index.hhc, and index.hhk. The\n# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop\n# (see: https://www.microsoft.com/en-us/download/details.aspx?id=21138) on\n# Windows.\n#\n# The HTML Help Workshop contains a compiler that can convert all HTML output\n# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML\n# files are now used as the Windows 98 help format, and will replace the old\n# Windows help format (.hlp) on all Windows platforms in the future. Compressed\n# HTML files also contain an index, a table of contents, and you can search for\n# words in the documentation. The HTML workshop also contains a viewer for\n# compressed HTML files.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nGENERATE_HTMLHELP      = NO\n\n# The CHM_FILE tag can be used to specify the file name of the resulting .chm\n# file. You can add a path in front of the file if the result should not be\n# written to the html output directory.\n# This tag requires that the tag GENERATE_HTMLHELP is set to YES.\n\nCHM_FILE               =\n\n# The HHC_LOCATION tag can be used to specify the location (absolute path\n# including file name) of the HTML help compiler (hhc.exe). If non-empty,\n# doxygen will try to run the HTML help compiler on the generated index.hhp.\n# The file has to be specified with full path.\n# This tag requires that the tag GENERATE_HTMLHELP is set to YES.\n\nHHC_LOCATION           =\n\n# The GENERATE_CHI flag controls if a separate .chi index file is generated\n# (YES) or that it should be included in the master .chm file (NO).\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTMLHELP is set to YES.\n\nGENERATE_CHI           = NO\n\n# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc)\n# and project file content.\n# This tag requires that the tag GENERATE_HTMLHELP is set to YES.\n\nCHM_INDEX_ENCODING     =\n\n# The BINARY_TOC flag controls whether a binary table of contents is generated\n# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it\n# enables the Previous and Next buttons.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTMLHELP is set to YES.\n\nBINARY_TOC             = NO\n\n# The TOC_EXPAND flag can be set to YES to add extra items for group members to\n# the table of contents of the HTML help documentation and to the tree view.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTMLHELP is set to YES.\n\nTOC_EXPAND             = NO\n\n# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and\n# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that\n# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help\n# (.qch) of the generated HTML documentation.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nGENERATE_QHP           = NO\n\n# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify\n# the file name of the resulting .qch file. The path specified is relative to\n# the HTML output folder.\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQCH_FILE               =\n\n# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help\n# Project output. For more information please see Qt Help Project / Namespace\n# (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace).\n# The default value is: org.doxygen.Project.\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQHP_NAMESPACE          = org.doxygen.Project\n\n# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt\n# Help Project output. For more information please see Qt Help Project / Virtual\n# Folders (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-\n# folders).\n# The default value is: doc.\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQHP_VIRTUAL_FOLDER     = doc\n\n# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom\n# filter to add. For more information please see Qt Help Project / Custom\n# Filters (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-\n# filters).\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQHP_CUST_FILTER_NAME   =\n\n# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the\n# custom filter to add. For more information please see Qt Help Project / Custom\n# Filters (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-\n# filters).\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQHP_CUST_FILTER_ATTRS  =\n\n# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this\n# project's filter section matches. Qt Help Project / Filter Attributes (see:\n# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes).\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQHP_SECT_FILTER_ATTRS  =\n\n# The QHG_LOCATION tag can be used to specify the location of Qt's\n# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the\n# generated .qhp file.\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQHG_LOCATION           =\n\n# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be\n# generated, together with the HTML files, they form an Eclipse help plugin. To\n# install this plugin and make it available under the help contents menu in\n# Eclipse, the contents of the directory containing the HTML and XML files needs\n# to be copied into the plugins directory of eclipse. The name of the directory\n# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.\n# After copying Eclipse needs to be restarted before the help appears.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nGENERATE_ECLIPSEHELP   = NO\n\n# A unique identifier for the Eclipse help plugin. When installing the plugin\n# the directory name containing the HTML and XML files should also have this\n# name. Each documentation set should have its own identifier.\n# The default value is: org.doxygen.Project.\n# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.\n\nECLIPSE_DOC_ID         = org.doxygen.Project\n\n# If you want full control over the layout of the generated HTML pages it might\n# be necessary to disable the index and replace it with your own. The\n# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top\n# of each HTML page. A value of NO enables the index and the value YES disables\n# it. Since the tabs in the index contain the same information as the navigation\n# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nDISABLE_INDEX          = YES\n\n# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index\n# structure should be generated to display hierarchical information. If the tag\n# value is set to YES, a side panel will be generated containing a tree-like\n# index structure (just like the one that is generated for HTML Help). For this\n# to work a browser that supports JavaScript, DHTML, CSS and frames is required\n# (i.e. any modern browser). Windows users are probably better off using the\n# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can\n# further fine-tune the look of the index. As an example, the default style\n# sheet generated by doxygen has an example that shows how to put an image at\n# the root of the tree instead of the PROJECT_NAME. Since the tree basically has\n# the same information as the tab index, you could consider setting\n# DISABLE_INDEX to YES when enabling this option.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nGENERATE_TREEVIEW      = NO\n\n# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that\n# doxygen will group on one line in the generated HTML documentation.\n#\n# Note that a value of 0 will completely suppress the enum values from appearing\n# in the overview section.\n# Minimum value: 0, maximum value: 20, default value: 4.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nENUM_VALUES_PER_LINE   = 20\n\n# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used\n# to set the initial width (in pixels) of the frame in which the tree is shown.\n# Minimum value: 0, maximum value: 1500, default value: 250.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nTREEVIEW_WIDTH         = 250\n\n# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to\n# external symbols imported via tag files in a separate window.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nEXT_LINKS_IN_WINDOW    = NO\n\n# Use this tag to change the font size of LaTeX formulas included as images in\n# the HTML documentation. When you change the font size after a successful\n# doxygen run you need to manually remove any form_*.png images from the HTML\n# output directory to force them to be regenerated.\n# Minimum value: 8, maximum value: 50, default value: 10.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nFORMULA_FONTSIZE       = 10\n\n# Use the FORMULA_TRANSPARENT tag to determine whether or not the images\n# generated for formulas are transparent PNGs. Transparent PNGs are not\n# supported properly for IE 6.0, but are supported on all modern browsers.\n#\n# Note that when changing this option you need to delete any form_*.png files in\n# the HTML output directory before the changes have effect.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nFORMULA_TRANSPARENT    = YES\n\n# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see\n# https://www.mathjax.org) which uses client side Javascript for the rendering\n# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX\n# installed or if you want to formulas look prettier in the HTML output. When\n# enabled you may also need to install MathJax separately and configure the path\n# to it using the MATHJAX_RELPATH option.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nUSE_MATHJAX            = NO\n\n# When MathJax is enabled you can set the default output format to be used for\n# the MathJax output. See the MathJax site (see:\n# http://docs.mathjax.org/en/latest/output.html) for more details.\n# Possible values are: HTML-CSS (which is slower, but has the best\n# compatibility), NativeMML (i.e. MathML) and SVG.\n# The default value is: HTML-CSS.\n# This tag requires that the tag USE_MATHJAX is set to YES.\n\nMATHJAX_FORMAT         = HTML-CSS\n\n# When MathJax is enabled you need to specify the location relative to the HTML\n# output directory using the MATHJAX_RELPATH option. The destination directory\n# should contain the MathJax.js script. For instance, if the mathjax directory\n# is located at the same level as the HTML output directory, then\n# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax\n# Content Delivery Network so you can quickly see the result without installing\n# MathJax. However, it is strongly recommended to install a local copy of\n# MathJax from https://www.mathjax.org before deployment.\n# The default value is: https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/.\n# This tag requires that the tag USE_MATHJAX is set to YES.\n\nMATHJAX_RELPATH        = https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/\n\n# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax\n# extension names that should be enabled during MathJax rendering. For example\n# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols\n# This tag requires that the tag USE_MATHJAX is set to YES.\n\nMATHJAX_EXTENSIONS     =\n\n# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces\n# of code that will be used on startup of the MathJax code. See the MathJax site\n# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an\n# example see the documentation.\n# This tag requires that the tag USE_MATHJAX is set to YES.\n\nMATHJAX_CODEFILE       =\n\n# When the SEARCHENGINE tag is enabled doxygen will generate a search box for\n# the HTML output. The underlying search engine uses javascript and DHTML and\n# should work on any modern browser. Note that when using HTML help\n# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)\n# there is already a search function so this one should typically be disabled.\n# For large projects the javascript based search engine can be slow, then\n# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to\n# search using the keyboard; to jump to the search box use <access key> + S\n# (what the <access key> is depends on the OS and browser, but it is typically\n# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down\n# key> to jump into the search results window, the results can be navigated\n# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel\n# the search. The filter options can be selected when the cursor is inside the\n# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>\n# to select a filter and <Enter> or <escape> to activate or cancel the filter\n# option.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nSEARCHENGINE           = YES\n\n# When the SERVER_BASED_SEARCH tag is enabled the search engine will be\n# implemented using a web server instead of a web client using Javascript. There\n# are two flavors of web server based searching depending on the EXTERNAL_SEARCH\n# setting. When disabled, doxygen will generate a PHP script for searching and\n# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing\n# and searching needs to be provided by external tools. See the section\n# \"External Indexing and Searching\" for details.\n# The default value is: NO.\n# This tag requires that the tag SEARCHENGINE is set to YES.\n\nSERVER_BASED_SEARCH    = NO\n\n# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP\n# script for searching. Instead the search results are written to an XML file\n# which needs to be processed by an external indexer. Doxygen will invoke an\n# external search engine pointed to by the SEARCHENGINE_URL option to obtain the\n# search results.\n#\n# Doxygen ships with an example indexer (doxyindexer) and search engine\n# (doxysearch.cgi) which are based on the open source search engine library\n# Xapian (see: https://xapian.org/).\n#\n# See the section \"External Indexing and Searching\" for details.\n# The default value is: NO.\n# This tag requires that the tag SEARCHENGINE is set to YES.\n\nEXTERNAL_SEARCH        = NO\n\n# The SEARCHENGINE_URL should point to a search engine hosted by a web server\n# which will return the search results when EXTERNAL_SEARCH is enabled.\n#\n# Doxygen ships with an example indexer (doxyindexer) and search engine\n# (doxysearch.cgi) which are based on the open source search engine library\n# Xapian (see: https://xapian.org/). See the section \"External Indexing and\n# Searching\" for details.\n# This tag requires that the tag SEARCHENGINE is set to YES.\n\nSEARCHENGINE_URL       =\n\n# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed\n# search data is written to a file for indexing by an external tool. With the\n# SEARCHDATA_FILE tag the name of this file can be specified.\n# The default file is: searchdata.xml.\n# This tag requires that the tag SEARCHENGINE is set to YES.\n\nSEARCHDATA_FILE        = searchdata.xml\n\n# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the\n# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is\n# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple\n# projects and redirect the results back to the right project.\n# This tag requires that the tag SEARCHENGINE is set to YES.\n\nEXTERNAL_SEARCH_ID     =\n\n# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen\n# projects other than the one defined by this configuration file, but that are\n# all added to the same external search index. Each project needs to have a\n# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of\n# to a relative location where the documentation can be found. The format is:\n# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...\n# This tag requires that the tag SEARCHENGINE is set to YES.\n\nEXTRA_SEARCH_MAPPINGS  =\n\n#---------------------------------------------------------------------------\n# Configuration options related to the LaTeX output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output.\n# The default value is: YES.\n\nGENERATE_LATEX         = NO\n\n# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a\n# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of\n# it.\n# The default directory is: latex.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_OUTPUT           = latex\n\n# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be\n# invoked.\n#\n# Note that when not enabling USE_PDFLATEX the default is latex when enabling\n# USE_PDFLATEX the default is pdflatex and when in the later case latex is\n# chosen this is overwritten by pdflatex. For specific output languages the\n# default can have been set differently, this depends on the implementation of\n# the output language.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_CMD_NAME         =\n\n# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate\n# index for LaTeX.\n# Note: This tag is used in the Makefile / make.bat.\n# See also: LATEX_MAKEINDEX_CMD for the part in the generated output file\n# (.tex).\n# The default file is: makeindex.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nMAKEINDEX_CMD_NAME     = makeindex\n\n# The LATEX_MAKEINDEX_CMD tag can be used to specify the command name to\n# generate index for LaTeX. In case there is no backslash (\\) as first character\n# it will be automatically added in the LaTeX code.\n# Note: This tag is used in the generated output file (.tex).\n# See also: MAKEINDEX_CMD_NAME for the part in the Makefile / make.bat.\n# The default value is: makeindex.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_MAKEINDEX_CMD    = makeindex\n\n# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX\n# documents. This may be useful for small projects and may help to save some\n# trees in general.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nCOMPACT_LATEX          = NO\n\n# The PAPER_TYPE tag can be used to set the paper type that is used by the\n# printer.\n# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x\n# 14 inches) and executive (7.25 x 10.5 inches).\n# The default value is: a4.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nPAPER_TYPE             = a4\n\n# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names\n# that should be included in the LaTeX output. The package can be specified just\n# by its name or with the correct syntax as to be used with the LaTeX\n# \\usepackage command. To get the times font for instance you can specify :\n# EXTRA_PACKAGES=times or EXTRA_PACKAGES={times}\n# To use the option intlimits with the amsmath package you can specify:\n# EXTRA_PACKAGES=[intlimits]{amsmath}\n# If left blank no extra packages will be included.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nEXTRA_PACKAGES         =\n\n# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the\n# generated LaTeX document. The header should contain everything until the first\n# chapter. If it is left blank doxygen will generate a standard header. See\n# section \"Doxygen usage\" for information on how to let doxygen write the\n# default header to a separate file.\n#\n# Note: Only use a user-defined header if you know what you are doing! The\n# following commands have a special meaning inside the header: $title,\n# $datetime, $date, $doxygenversion, $projectname, $projectnumber,\n# $projectbrief, $projectlogo. Doxygen will replace $title with the empty\n# string, for the replacement values of the other commands the user is referred\n# to HTML_HEADER.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_HEADER           =\n\n# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the\n# generated LaTeX document. The footer should contain everything after the last\n# chapter. If it is left blank doxygen will generate a standard footer. See\n# LATEX_HEADER for more information on how to generate a default footer and what\n# special commands can be used inside the footer.\n#\n# Note: Only use a user-defined footer if you know what you are doing!\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_FOOTER           =\n\n# The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined\n# LaTeX style sheets that are included after the standard style sheets created\n# by doxygen. Using this option one can overrule certain style aspects. Doxygen\n# will copy the style sheet files to the output directory.\n# Note: The order of the extra style sheet files is of importance (e.g. the last\n# style sheet in the list overrules the setting of the previous ones in the\n# list).\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_EXTRA_STYLESHEET =\n\n# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or\n# other source files which should be copied to the LATEX_OUTPUT output\n# directory. Note that the files will be copied as-is; there are no commands or\n# markers available.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_EXTRA_FILES      =\n\n# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is\n# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will\n# contain links (just like the HTML output) instead of page references. This\n# makes the output suitable for online browsing using a PDF viewer.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nPDF_HYPERLINKS         = YES\n\n# If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate\n# the PDF file directly from the LaTeX files. Set this option to YES, to get a\n# higher quality PDF documentation.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nUSE_PDFLATEX           = YES\n\n# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode\n# command to the generated LaTeX files. This will instruct LaTeX to keep running\n# if errors occur, instead of asking the user for help. This option is also used\n# when generating formulas in HTML.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_BATCHMODE        = NO\n\n# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the\n# index chapters (such as File Index, Compound Index, etc.) in the output.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_HIDE_INDICES     = NO\n\n# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source\n# code with syntax highlighting in the LaTeX output.\n#\n# Note that which sources are shown also depends on other settings such as\n# SOURCE_BROWSER.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_SOURCE_CODE      = NO\n\n# The LATEX_BIB_STYLE tag can be used to specify the style to use for the\n# bibliography, e.g. plainnat, or ieeetr. See\n# https://en.wikipedia.org/wiki/BibTeX and \\cite for more info.\n# The default value is: plain.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_BIB_STYLE        = plain\n\n# If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated\n# page will contain the date and time when the page was generated. Setting this\n# to NO can help when comparing the output of multiple runs.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_TIMESTAMP        = NO\n\n# The LATEX_EMOJI_DIRECTORY tag is used to specify the (relative or absolute)\n# path from which the emoji images will be read. If a relative path is entered,\n# it will be relative to the LATEX_OUTPUT directory. If left blank the\n# LATEX_OUTPUT directory will be used.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_EMOJI_DIRECTORY  =\n\n#---------------------------------------------------------------------------\n# Configuration options related to the RTF output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The\n# RTF output is optimized for Word 97 and may not look too pretty with other RTF\n# readers/editors.\n# The default value is: NO.\n\nGENERATE_RTF           = NO\n\n# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a\n# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of\n# it.\n# The default directory is: rtf.\n# This tag requires that the tag GENERATE_RTF is set to YES.\n\nRTF_OUTPUT             = rtf\n\n# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF\n# documents. This may be useful for small projects and may help to save some\n# trees in general.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_RTF is set to YES.\n\nCOMPACT_RTF            = NO\n\n# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will\n# contain hyperlink fields. The RTF file will contain links (just like the HTML\n# output) instead of page references. This makes the output suitable for online\n# browsing using Word or some other Word compatible readers that support those\n# fields.\n#\n# Note: WordPad (write) and others do not support links.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_RTF is set to YES.\n\nRTF_HYPERLINKS         = NO\n\n# Load stylesheet definitions from file. Syntax is similar to doxygen's\n# configuration file, i.e. a series of assignments. You only have to provide\n# replacements, missing definitions are set to their default value.\n#\n# See also section \"Doxygen usage\" for information on how to generate the\n# default style sheet that doxygen normally uses.\n# This tag requires that the tag GENERATE_RTF is set to YES.\n\nRTF_STYLESHEET_FILE    =\n\n# Set optional variables used in the generation of an RTF document. Syntax is\n# similar to doxygen's configuration file. A template extensions file can be\n# generated using doxygen -e rtf extensionFile.\n# This tag requires that the tag GENERATE_RTF is set to YES.\n\nRTF_EXTENSIONS_FILE    =\n\n# If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code\n# with syntax highlighting in the RTF output.\n#\n# Note that which sources are shown also depends on other settings such as\n# SOURCE_BROWSER.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_RTF is set to YES.\n\nRTF_SOURCE_CODE        = NO\n\n#---------------------------------------------------------------------------\n# Configuration options related to the man page output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for\n# classes and files.\n# The default value is: NO.\n\nGENERATE_MAN           = NO\n\n# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a\n# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of\n# it. A directory man3 will be created inside the directory specified by\n# MAN_OUTPUT.\n# The default directory is: man.\n# This tag requires that the tag GENERATE_MAN is set to YES.\n\nMAN_OUTPUT             = man\n\n# The MAN_EXTENSION tag determines the extension that is added to the generated\n# man pages. In case the manual section does not start with a number, the number\n# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is\n# optional.\n# The default value is: .3.\n# This tag requires that the tag GENERATE_MAN is set to YES.\n\nMAN_EXTENSION          = .3\n\n# The MAN_SUBDIR tag determines the name of the directory created within\n# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by\n# MAN_EXTENSION with the initial . removed.\n# This tag requires that the tag GENERATE_MAN is set to YES.\n\nMAN_SUBDIR             =\n\n# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it\n# will generate one additional man file for each entity documented in the real\n# man page(s). These additional files only source the real man page, but without\n# them the man command would be unable to find the correct page.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_MAN is set to YES.\n\nMAN_LINKS              = NO\n\n#---------------------------------------------------------------------------\n# Configuration options related to the XML output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that\n# captures the structure of the code including all documentation.\n# The default value is: NO.\n\nGENERATE_XML           = NO\n\n# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a\n# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of\n# it.\n# The default directory is: xml.\n# This tag requires that the tag GENERATE_XML is set to YES.\n\nXML_OUTPUT             = xml\n\n# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program\n# listings (including syntax highlighting and cross-referencing information) to\n# the XML output. Note that enabling this will significantly increase the size\n# of the XML output.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_XML is set to YES.\n\nXML_PROGRAMLISTING     = YES\n\n# If the XML_NS_MEMB_FILE_SCOPE tag is set to YES, doxygen will include\n# namespace members in file scope as well, matching the HTML output.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_XML is set to YES.\n\nXML_NS_MEMB_FILE_SCOPE = NO\n\n#---------------------------------------------------------------------------\n# Configuration options related to the DOCBOOK output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files\n# that can be used to generate PDF.\n# The default value is: NO.\n\nGENERATE_DOCBOOK       = NO\n\n# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.\n# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in\n# front of it.\n# The default directory is: docbook.\n# This tag requires that the tag GENERATE_DOCBOOK is set to YES.\n\nDOCBOOK_OUTPUT         = docbook\n\n# If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the\n# program listings (including syntax highlighting and cross-referencing\n# information) to the DOCBOOK output. Note that enabling this will significantly\n# increase the size of the DOCBOOK output.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_DOCBOOK is set to YES.\n\nDOCBOOK_PROGRAMLISTING = NO\n\n#---------------------------------------------------------------------------\n# Configuration options for the AutoGen Definitions output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an\n# AutoGen Definitions (see http://autogen.sourceforge.net/) file that captures\n# the structure of the code including all documentation. Note that this feature\n# is still experimental and incomplete at the moment.\n# The default value is: NO.\n\nGENERATE_AUTOGEN_DEF   = NO\n\n#---------------------------------------------------------------------------\n# Configuration options related to the Perl module output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module\n# file that captures the structure of the code including all documentation.\n#\n# Note that this feature is still experimental and incomplete at the moment.\n# The default value is: NO.\n\nGENERATE_PERLMOD       = NO\n\n# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary\n# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI\n# output from the Perl module output.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_PERLMOD is set to YES.\n\nPERLMOD_LATEX          = NO\n\n# If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely\n# formatted so it can be parsed by a human reader. This is useful if you want to\n# understand what is going on. On the other hand, if this tag is set to NO, the\n# size of the Perl module output will be much smaller and Perl will parse it\n# just the same.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_PERLMOD is set to YES.\n\nPERLMOD_PRETTY         = YES\n\n# The names of the make variables in the generated doxyrules.make file are\n# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful\n# so different doxyrules.make files included by the same Makefile don't\n# overwrite each other's variables.\n# This tag requires that the tag GENERATE_PERLMOD is set to YES.\n\nPERLMOD_MAKEVAR_PREFIX =\n\n#---------------------------------------------------------------------------\n# Configuration options related to the preprocessor\n#---------------------------------------------------------------------------\n\n# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all\n# C-preprocessor directives found in the sources and include files.\n# The default value is: YES.\n\nENABLE_PREPROCESSING   = YES\n\n# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names\n# in the source code. If set to NO, only conditional compilation will be\n# performed. Macro expansion can be done in a controlled way by setting\n# EXPAND_ONLY_PREDEF to YES.\n# The default value is: NO.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nMACRO_EXPANSION        = NO\n\n# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then\n# the macro expansion is limited to the macros specified with the PREDEFINED and\n# EXPAND_AS_DEFINED tags.\n# The default value is: NO.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nEXPAND_ONLY_PREDEF     = NO\n\n# If the SEARCH_INCLUDES tag is set to YES, the include files in the\n# INCLUDE_PATH will be searched if a #include is found.\n# The default value is: YES.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nSEARCH_INCLUDES        = YES\n\n# The INCLUDE_PATH tag can be used to specify one or more directories that\n# contain include files that are not input files but should be processed by the\n# preprocessor.\n# This tag requires that the tag SEARCH_INCLUDES is set to YES.\n\nINCLUDE_PATH           =\n\n# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard\n# patterns (like *.h and *.hpp) to filter out the header-files in the\n# directories. If left blank, the patterns specified with FILE_PATTERNS will be\n# used.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nINCLUDE_FILE_PATTERNS  =\n\n# The PREDEFINED tag can be used to specify one or more macro names that are\n# defined before the preprocessor is started (similar to the -D option of e.g.\n# gcc). The argument of the tag is a list of macros of the form: name or\n# name=definition (no spaces). If the definition and the \"=\" are omitted, \"=1\"\n# is assumed. To prevent a macro definition from being undefined via #undef or\n# recursively expanded use the := operator instead of the = operator.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nPREDEFINED             =\n\n# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this\n# tag can be used to specify a list of macro names that should be expanded. The\n# macro definition that is found in the sources will be used. Use the PREDEFINED\n# tag if you want to use a different macro definition that overrules the\n# definition found in the source code.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nEXPAND_AS_DEFINED      =\n\n# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will\n# remove all references to function-like macros that are alone on a line, have\n# an all uppercase name, and do not end with a semicolon. Such function macros\n# are typically used for boiler-plate code, and will confuse the parser if not\n# removed.\n# The default value is: YES.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nSKIP_FUNCTION_MACROS   = YES\n\n#---------------------------------------------------------------------------\n# Configuration options related to external references\n#---------------------------------------------------------------------------\n\n# The TAGFILES tag can be used to specify one or more tag files. For each tag\n# file the location of the external documentation should be added. The format of\n# a tag file without this location is as follows:\n# TAGFILES = file1 file2 ...\n# Adding location for the tag files is done as follows:\n# TAGFILES = file1=loc1 \"file2 = loc2\" ...\n# where loc1 and loc2 can be relative or absolute paths or URLs. See the\n# section \"Linking to external documentation\" for more information about the use\n# of tag files.\n# Note: Each tag file must have a unique name (where the name does NOT include\n# the path). If a tag file is not located in the directory in which doxygen is\n# run, you must also specify the path to the tagfile here.\n\nTAGFILES               =\n\n# When a file name is specified after GENERATE_TAGFILE, doxygen will create a\n# tag file that is based on the input files it reads. See section \"Linking to\n# external documentation\" for more information about the usage of tag files.\n\nGENERATE_TAGFILE       =\n\n# If the ALLEXTERNALS tag is set to YES, all external class will be listed in\n# the class index. If set to NO, only the inherited external classes will be\n# listed.\n# The default value is: NO.\n\nALLEXTERNALS           = NO\n\n# If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed\n# in the modules index. If set to NO, only the current project's groups will be\n# listed.\n# The default value is: YES.\n\nEXTERNAL_GROUPS        = YES\n\n# If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in\n# the related pages index. If set to NO, only the current project's pages will\n# be listed.\n# The default value is: YES.\n\nEXTERNAL_PAGES         = YES\n\n#---------------------------------------------------------------------------\n# Configuration options related to the dot tool\n#---------------------------------------------------------------------------\n\n# If the CLASS_DIAGRAMS tag is set to YES, doxygen will generate a class diagram\n# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to\n# NO turns the diagrams off. Note that this option also works with HAVE_DOT\n# disabled, but it is recommended to install and use dot, since it yields more\n# powerful graphs.\n# The default value is: YES.\n\nCLASS_DIAGRAMS         = YES\n\n# You can include diagrams made with dia in doxygen documentation. Doxygen will\n# then run dia to produce the diagram and insert it in the documentation. The\n# DIA_PATH tag allows you to specify the directory where the dia binary resides.\n# If left empty dia is assumed to be found in the default search path.\n\nDIA_PATH               =\n\n# If set to YES the inheritance and collaboration graphs will hide inheritance\n# and usage relations if the target is undocumented or is not a class.\n# The default value is: YES.\n\nHIDE_UNDOC_RELATIONS   = YES\n\n# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is\n# available from the path. This tool is part of Graphviz (see:\n# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent\n# Bell Labs. The other options in this section have no effect if this option is\n# set to NO\n# The default value is: NO.\n\nHAVE_DOT               = NO\n\n# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed\n# to run in parallel. When set to 0 doxygen will base this on the number of\n# processors available in the system. You can set it explicitly to a value\n# larger than 0 to get control over the balance between CPU load and processing\n# speed.\n# Minimum value: 0, maximum value: 32, default value: 0.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_NUM_THREADS        = 0\n\n# When you want a differently looking font in the dot files that doxygen\n# generates you can specify the font name using DOT_FONTNAME. You need to make\n# sure dot is able to find the font, which can be done by putting it in a\n# standard location or by setting the DOTFONTPATH environment variable or by\n# setting DOT_FONTPATH to the directory containing the font.\n# The default value is: Helvetica.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_FONTNAME           = Helvetica\n\n# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of\n# dot graphs.\n# Minimum value: 4, maximum value: 24, default value: 10.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_FONTSIZE           = 10\n\n# By default doxygen will tell dot to use the default font as specified with\n# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set\n# the path where dot can find it using this tag.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_FONTPATH           =\n\n# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for\n# each documented class showing the direct and indirect inheritance relations.\n# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nCLASS_GRAPH            = YES\n\n# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a\n# graph for each documented class showing the direct and indirect implementation\n# dependencies (inheritance, containment, and class references variables) of the\n# class with other documented classes.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nCOLLABORATION_GRAPH    = YES\n\n# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for\n# groups, showing the direct groups dependencies.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nGROUP_GRAPHS           = YES\n\n# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and\n# collaboration diagrams in a style similar to the OMG's Unified Modeling\n# Language.\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nUML_LOOK               = NO\n\n# If the UML_LOOK tag is enabled, the fields and methods are shown inside the\n# class node. If there are many fields or methods and many nodes the graph may\n# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the\n# number of items for each type to make the size more manageable. Set this to 0\n# for no limit. Note that the threshold may be exceeded by 50% before the limit\n# is enforced. So when you set the threshold to 10, up to 15 fields may appear,\n# but if the number exceeds 15, the total amount of fields shown is limited to\n# 10.\n# Minimum value: 0, maximum value: 100, default value: 10.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nUML_LIMIT_NUM_FIELDS   = 10\n\n# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and\n# collaboration graphs will show the relations between templates and their\n# instances.\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nTEMPLATE_RELATIONS     = NO\n\n# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to\n# YES then doxygen will generate a graph for each documented file showing the\n# direct and indirect include dependencies of the file with other documented\n# files.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nINCLUDE_GRAPH          = YES\n\n# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are\n# set to YES then doxygen will generate a graph for each documented file showing\n# the direct and indirect include dependencies of the file with other documented\n# files.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nINCLUDED_BY_GRAPH      = YES\n\n# If the CALL_GRAPH tag is set to YES then doxygen will generate a call\n# dependency graph for every global function or class method.\n#\n# Note that enabling this option will significantly increase the time of a run.\n# So in most cases it will be better to enable call graphs for selected\n# functions only using the \\callgraph command. Disabling a call graph can be\n# accomplished by means of the command \\hidecallgraph.\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nCALL_GRAPH             = NO\n\n# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller\n# dependency graph for every global function or class method.\n#\n# Note that enabling this option will significantly increase the time of a run.\n# So in most cases it will be better to enable caller graphs for selected\n# functions only using the \\callergraph command. Disabling a caller graph can be\n# accomplished by means of the command \\hidecallergraph.\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nCALLER_GRAPH           = NO\n\n# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical\n# hierarchy of all classes instead of a textual one.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nGRAPHICAL_HIERARCHY    = YES\n\n# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the\n# dependencies a directory has on other directories in a graphical way. The\n# dependency relations are determined by the #include relations between the\n# files in the directories.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDIRECTORY_GRAPH        = YES\n\n# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images\n# generated by dot. For an explanation of the image formats see the section\n# output formats in the documentation of the dot tool (Graphviz (see:\n# http://www.graphviz.org/)).\n# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order\n# to make the SVG files visible in IE 9+ (other browsers do not have this\n# requirement).\n# Possible values are: png, jpg, gif, svg, png:gd, png:gd:gd, png:cairo,\n# png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and\n# png:gdiplus:gdiplus.\n# The default value is: png.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_IMAGE_FORMAT       = png\n\n# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to\n# enable generation of interactive SVG images that allow zooming and panning.\n#\n# Note that this requires a modern browser other than Internet Explorer. Tested\n# and working are Firefox, Chrome, Safari, and Opera.\n# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make\n# the SVG files visible. Older versions of IE do not have SVG support.\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nINTERACTIVE_SVG        = NO\n\n# The DOT_PATH tag can be used to specify the path where the dot tool can be\n# found. If left blank, it is assumed the dot tool can be found in the path.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_PATH               =\n\n# The DOTFILE_DIRS tag can be used to specify one or more directories that\n# contain dot files that are included in the documentation (see the \\dotfile\n# command).\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOTFILE_DIRS           =\n\n# The MSCFILE_DIRS tag can be used to specify one or more directories that\n# contain msc files that are included in the documentation (see the \\mscfile\n# command).\n\nMSCFILE_DIRS           =\n\n# The DIAFILE_DIRS tag can be used to specify one or more directories that\n# contain dia files that are included in the documentation (see the \\diafile\n# command).\n\nDIAFILE_DIRS           =\n\n# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the\n# path where java can find the plantuml.jar file. If left blank, it is assumed\n# PlantUML is not used or called during a preprocessing step. Doxygen will\n# generate a warning when it encounters a \\startuml command in this case and\n# will not generate output for the diagram.\n\nPLANTUML_JAR_PATH      =\n\n# When using plantuml, the PLANTUML_CFG_FILE tag can be used to specify a\n# configuration file for plantuml.\n\nPLANTUML_CFG_FILE      =\n\n# When using plantuml, the specified paths are searched for files specified by\n# the !include statement in a plantuml block.\n\nPLANTUML_INCLUDE_PATH  =\n\n# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes\n# that will be shown in the graph. If the number of nodes in a graph becomes\n# larger than this value, doxygen will truncate the graph, which is visualized\n# by representing a node as a red box. Note that doxygen if the number of direct\n# children of the root node in a graph is already larger than\n# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that\n# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.\n# Minimum value: 0, maximum value: 10000, default value: 50.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_GRAPH_MAX_NODES    = 50\n\n# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs\n# generated by dot. A depth value of 3 means that only nodes reachable from the\n# root by following a path via at most 3 edges will be shown. Nodes that lay\n# further from the root node will be omitted. Note that setting this option to 1\n# or 2 may greatly reduce the computation time needed for large code bases. Also\n# note that the size of a graph can be further restricted by\n# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.\n# Minimum value: 0, maximum value: 1000, default value: 0.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nMAX_DOT_GRAPH_DEPTH    = 0\n\n# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent\n# background. This is disabled by default, because dot on Windows does not seem\n# to support this out of the box.\n#\n# Warning: Depending on the platform used, enabling this option may lead to\n# badly anti-aliased labels on the edges of a graph (i.e. they become hard to\n# read).\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_TRANSPARENT        = NO\n\n# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output\n# files in one run (i.e. multiple -o and -T options on the command line). This\n# makes dot run faster, but since only newer versions of dot (>1.8.10) support\n# this, this feature is disabled by default.\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_MULTI_TARGETS      = NO\n\n# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page\n# explaining the meaning of the various boxes and arrows in the dot generated\n# graphs.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nGENERATE_LEGEND        = YES\n\n# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate dot\n# files that are used to generate the various graphs.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_CLEANUP            = YES\n"
  },
  {
    "path": "Archived/doc/postprocess-doc-file.pl",
    "content": "#!/usr/bin/perl -w\n\nmy $filename = shift @ARGV or die(\"Usage: postprocess-doc-file.pl FILENAME\");\nmy $outfile = $filename;\nif ($#ARGV >= 0) {\n\t$outfile = shift @ARGV;\n}\n\nmy $filetext = `cat $filename`;\nmy $output = \"\";\n\nforeach my $line (split(/\\r?\\n/, $filetext)) {\n\t$line =~ s/const std::string &amp;/string /gi;\n\t$line =~ s/QWidget [*]/QWidget* /gi;\n\t$line =~ s/std::string/string/gi;\n\t$line =~ s/Q_DECL_OVERRIDE//gi;\n\t$line =~ s/Q_DECL_DEPRECATED/\\<span class=\\\"deprecated\\\"\\>\\(deprecated\\)\\<\\/span\\>/gi;\n\t$line =~ s/(<tr class=\\\"memitem.*>)virtual(?:&#160;| )?/$1/gi;\n\t$line =~ s/(<tr class=\\\"memitem.*<\\/a>) \\(/$1(/gi;\n\t\n\t$line =~ s/(\\<p\\>\\<code\\>#include )&lt;(.*)&gt;/$1\"$2\"/;\n\t$output .= \"$line\\n\";\n}\n\nopen OUTPUT, \">\", $outfile or die(\"Can't open $outfile for writing: $!\");\nprint OUTPUT $output;\nclose OUTPUT;\n"
  },
  {
    "path": "Archived/docs/_old/console-h.html",
    "content": "<html>\n<head>\n<title>../include/console.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: console.h\n * ---------------\n * This file redirects the cin, cout, and cerr channels to use a console\n * window.  This file must be included in the source file that contains the\n * main method, although it may be included in other source files as well.\n */\n</scan>\n#ifndef _console_h\n#define _console_h\n\n#include &lt;string&gt;\n\n<a name=\"Function:clearConsole\"><scan class=comment>/*\n * Function: clearConsole\n * Usage: clearConsole();\n * ----------------------\n * Erases the contents of the console window.\n */\n</scan>\nvoid clearConsole();\n\n<a name=\"Function:setConsoleFont\"><scan class=comment>/*\n * Function: setConsoleFont\n * Usage: setConsoleFont(font);\n * ----------------------------\n * Changes the font used for the console.  The font parameter is typically\n * a string in the form family-style-size.  In this string, family is the\n * name of the font family; style is either missing (indicating a plain\n * font) or one of the strings Bold, Italic, or BoldItalic; and size is an\n * integer indicating the point size.  If any of these components is\n * specified as an asterisk, the existing value is retained.  The font\n * parameter can also be a sequence of such specifications separated by\n * semicolons, in which case the first available font on the system is\n * used.\n */\n</scan>\nvoid setConsoleFont(const std::string &amp; font);\n\n<a name=\"Function:setConsoleSize\"><scan class=comment>/*\n * Function: setConsoleSize\n * Usage: setConsoleSize(width, height);\n * -------------------------------------\n * Changes the size of the console to the specified dimensions, measured in\n * pixels.\n */\n</scan>\nvoid setConsoleSize(double width, double height);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/docs/_old/direction-h.html",
    "content": "<html>\n<head>\n<title>../include/direction.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: direction.h\n * -----------------\n * This file exports an enumerated type called Direction whose elements are\n * the four compass points: NORTH, EAST, SOUTH, and WEST.\n */\n</scan>\n#ifndef _direction_h\n#define _direction_h\n\n#include &lt;iostream&gt;\n#include &lt;string&gt;\n\n<a name=\"Type:Direction\"><scan class=comment>/*\n * Type: Direction\n * ---------------\n * This enumerated type is used to represent the four compass directions.\n */\n</scan>\nenum Direction { NORTH, EAST, SOUTH, WEST };\n\n<a name=\"Function:leftFrom\"><scan class=comment>/*\n * Function: leftFrom\n * Usage: Direction newdir = leftFrom(dir);\n * ----------------------------------------\n * Returns the direction that is to the left of the argument.\n */\n</scan>\nDirection leftFrom(Direction dir);\n\n<a name=\"Function:rightFrom\"><scan class=comment>/*\n * Function: rightFrom\n * Usage: Direction newdir = rightFrom(dir);\n * -----------------------------------------\n * Returns the direction that is to the right of the argument.\n */\n</scan>\nDirection rightFrom(Direction dir);\n\n<a name=\"Function:opposite\"><scan class=comment>/*\n * Function: opposite\n * Usage: Direction newdir = opposite(dir);\n * ----------------------------------------\n * Returns the direction that is opposite to the argument.\n */\n</scan>\nDirection opposite(Direction dir);\n\n<a name=\"Function:directionToString\"><scan class=comment>/*\n * Function: directionToString\n * Usage: string str = directionToString(dir);\n * -------------------------------------------\n * Returns the name of the direction as a string.\n */\n</scan>\nstd::string directionToString(Direction dir);\n\n<a name=\"Operator:<<\"><scan class=comment>/*\n * Operator: &lt;&lt;\n * Usage: os &lt;&lt; dir;\n * -----------------\n * Overloads the &lt;&lt; operator so that it is able to display Direction\n * values.\n */\n</scan>\nstd::ostream &amp; operator&lt;&lt;(std::ostream &amp; os, const Direction &amp; dir);\n\n<a name=\"Operator:>>\"><scan class=comment>/*\n * Operator: &gt;&gt;\n * Usage: is &gt;&gt; dir;\n * -----------------\n * Overloads the &gt;&gt; operator so that it is able to read Direction values.\n */\n</scan>\nstd::istream &amp; operator&gt;&gt;(std::istream &amp; os, Direction &amp; dir);\n\n<a name=\"Operator:++\"><scan class=comment>/*\n * Operator: ++\n * Usage: dir++\n * ------------\n * Overloads the suffix version of the ++ operator to work with Direction\n * values.  The sole purpose of this definition is to support the idiom\n *\n *    for (Direction dir = NORTH; dir &lt;= WEST; dir++) ...\n */\n</scan>\nDirection operator++(Direction &amp; dir, int);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/docs/_old/error-h.html",
    "content": "<html>\n<head>\n<title>../include/error.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: error.h\n * -------------\n * This file defines the ErrorException class and the error function.\n */\n</scan>\n#ifndef _error_h\n#define _error_h\n\n#include &lt;string&gt;\n#include &lt;exception&gt;\n\n<a name=\"Class:ErrorException\"><scan class=comment>/*\n * Class: ErrorException\n * ---------------------\n * This exception is thrown by calls to the error function.  Typical code\n * for catching errors looks like this:\n *\n *    try {\n *       ... code in which an error might occur ...\n *    } catch (ErrorException \n *       ... code to handle the error condition ...\n *    }\n *\n * If an ErrorException is thrown at any point in the range of the try\n * (including in functions called from that code), control will jump\n * immediately to the error handler.\n */\n</scan>\nclass ErrorException : public std::exception {\npublic:\n   ErrorException(std::string msg);\n   virtual ~ErrorException() throw ();\n   virtual std::string getMessage() const;\n   virtual const char *what() const throw ();\n\nprivate:\n   std::string msg;\n};\n\n<a name=\"Function:error\"><scan class=comment>/*\n * Function: error\n * Usage: error(msg);\n * ------------------\n * Signals an error condition in a program by throwing an ErrorException\n * with the specified message.\n */\n</scan>\nvoid error(std::string msg);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/docs/_old/filelib-h.html",
    "content": "<html>\n<head>\n<title>../include/filelib.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: filelib.h\n * ---------------\n * This file exports a standardized set of tools for working with files. \n * The library offers at least some portability across the file systems\n * used in the three supported platforms: Mac OSX, Windows, and Linux. \n * Directory and search paths are allowed to contain separators in any of\n * the supported styles, which usually makes it possible to use the same\n * code on different platforms.\n */\n</scan>\n#ifndef _filelib_h\n#define _filelib_h\n\n#include &lt;iostream&gt;\n#include &lt;fstream&gt;\n#include &lt;string&gt;\n#include &lt;vector&gt;\n#include \"vector.h\"\n\n<a name=\"Function:openFile\"><scan class=comment>/*\n * Function: openFile\n * Usage: if (openFile(stream, filename)) ...\n * ------------------------------------------\n * Opens the filestream stream using the specified filename.  This function\n * is similar to the open method of the stream classes, but uses a C++\n * string object instead of the older C-style string.  If the operation\n * succeeds, openFile returns true; if it fails, openFile sets the failure\n * flag in the stream and returns false.\n */\n</scan>\nbool openFile(std::ifstream &amp; stream, std::string filename);\nbool openFile(std::ofstream &amp; stream, std::string filename);\n\n<a name=\"Function:promptUserForFile\"><scan class=comment>/*\n * Function: promptUserForFile\n * Usage: string filename = promptUserForFile(stream, prompt);\n * -----------------------------------------------------------\n * Asks the user for the name of a file.  The file is opened using the\n * reference parameter stream, and the function returns the name of the\n * file.  If the requested file cannot be opened, the user is given\n * additional chances to enter a valid file.  The optional prompt argument\n * provides an input prompt for the user.\n */\n</scan>\nstd::string promptUserForFile(std::ifstream &amp; stream, std::string prompt = \"\");\nstd::string promptUserForFile(std::ofstream &amp; stream, std::string prompt = \"\");\n\n<a name=\"Function:openFileDialog\"><scan class=comment>/*\n * Function: openFileDialog\n * Usage: string filename = openFileDialog(stream);\n *        string filename = openFileDialog(stream, title);\n *        string filename = openFileDialog(stream, title, path);\n * -------------------------------------------------------------\n * Opens a dialog that allows the user to choose the file.  The title\n * parameter is displayed in the dialog title.  The path parameter is used\n * to set the working directory; if path does not appear, openFileDialog\n * uses the current directory.\n */\n</scan>\nstd::string openFileDialog(std::ifstream &amp; stream);\nstd::string openFileDialog(std::ifstream &amp; stream, std::string title);\nstd::string openFileDialog(std::ifstream &amp; stream, std::string title,\n                                                   std::string path);\nstd::string openFileDialog(std::ofstream &amp; stream);\nstd::string openFileDialog(std::ofstream &amp; stream, std::string title);\nstd::string openFileDialog(std::ofstream &amp; stream, std::string title,\n                                                   std::string path);\n\n<a name=\"Function:readEntireFile\"><scan class=comment>/*\n * Function: readEntireFile\n * Usage: readEntireFile(is, lines);\n * ---------------------------------\n * Reads the entire contents of the specified input stream into the string\n * vector lines.  The client is responsible for opening and closing the\n * stream.  The vector can be either an STL vector or a Vector as defined\n * in the Stanford C++ libraries.\n */\n</scan>\nvoid readEntireFile(std::istream &amp; is, Vector&lt;std::string&gt; &amp; lines);\nvoid readEntireFile(std::istream &amp; is, std::vector&lt;std::string&gt; &amp; lines);\n\n<a name=\"Function:getRoot\"><scan class=comment>/*\n * Function: getRoot\n * Usage: string root = getRoot(filename);\n * ---------------------------------------\n * Returns the root of filename.  The root consists of everything in\n * filename up to the last dot and the subsequent extension.  If no dot\n * appears in the final component of the filename, getRoot returns the\n * entire name.\n */\n</scan>\nstd::string getRoot(std::string filename);\n\n<a name=\"Function:getExtension\"><scan class=comment>/*\n * Function: getExtension\n * Usage: ext = getExtension(filename);\n * ------------------------------------\n * Returns the extension of filename.  The extension consists of the\n * separating dot and all subsequent characters.  If no dot exists in the\n * final component, getExtension returns the empty string.  These semantics\n * ensure that concatenating the root and the extension always returns the\n * original filename.\n */\n</scan>\nstd::string getExtension(std::string filename);\n\n<a name=\"Function:getHead\"><scan class=comment>/*\n * Function: getHead\n * Usage: head = getHead(filename);\n * --------------------------------\n * Returns all but the last component of a path name.  The components of\n * the path name can be separated by any of the directory path separators\n * (forward or reverse slashes).  The special cases are illustrated by the\n * following examples:\n *\n *    getHead(\"a/b\")  = \"a\"     getTail(\"a/b\")   = \"b\"\n *    getHead(\"a\")    = \"\"      getTail(\"a\")     = \"a\"\n *    getHead(\"/a\")   = \"/\"     getTail(\"/a\")    = \"a\"\n *    getHead(\"/\")    = \"/\"     getTail(\"/\")     = \"\"\n */\n</scan>\nstd::string getHead(std::string filename);\n\n<a name=\"Function:getTail\"><scan class=comment>/*\n * Function: getTail\n * Usage: tail = getTail(filename);\n * --------------------------------\n * Returns the last component of a path name.  The components of the path\n * name can be separated by any of the directory path separators (forward\n * or reverse slashes).  For details on the interpretation of special\n * cases, see the comments for the getHead function.\n */\n</scan>\nstd::string getTail(std::string filename);\n\n<a name=\"Function:defaultExtension\"><scan class=comment>/*\n * Function: defaultExtension\n * Usage: string newname = defaultExtension(filename, ext);\n * --------------------------------------------------------\n * Adds an extension to a file name if none already exists.  If the\n * extension argument begins with a leading *, any existing extension in\n * filename is replaced by ext.\n */\n</scan>\nstd::string defaultExtension(std::string filename, std::string ext);\n\n<a name=\"Function:openOnPath\"><scan class=comment>/*\n * Function: openOnPath\n * Usage: string pathname = openOnPath(stream, path, filename);\n * ------------------------------------------------------------\n * Opens a file using a search path.  If openOnPath is successful, it\n * returns the first path name on the search path for which stream.open\n * succeeds.  The path argument consists of a list of directories that are\n * prepended to the filename, unless filename begins with an absolute\n * directory marker, such as / or ~.  The directories in the search path\n * may be separated either by colons (Unix or Mac OS) or semicolons\n * (Windows).  If the file cannot be opened, the failure bit is set in the\n * stream parameter, and the openOnPath function returns the empty string.\n */\n</scan>\nstd::string openOnPath(std::ifstream &amp; stream, std::string path,\n                                               std::string filename);\nstd::string openOnPath(std::ofstream &amp; stream, std::string path,\n                                               std::string filename);\n\n<a name=\"Function:findOnPath\"><scan class=comment>/*\n * Function: findOnPath\n * Usage: string pathname = findOnPath(path, filename);\n * ----------------------------------------------------\n * Returns the canonical name of a file found using a search path.  The\n * findOnPath function is similar to openOnPath, except that it doesn't\n * actually return an open stream.  If no matching file is found,\n * findOnPath returns the empty string.\n */\n</scan>\nstd::string findOnPath(std::string path, std::string filename);\n\n<a name=\"Function:deleteFile\"><scan class=comment>/*\n * Function: deleteFile\n * Usage: deleteFile(filename);\n * ----------------------------\n * Deletes the specified file.  Errors are reported by calling error.\n */\n</scan>\nvoid deleteFile(std::string filename);\n\n<a name=\"Function:renameFile\"><scan class=comment>/*\n * Function: renameFile\n * Usage: renameFile(oldname, newname);\n * ------------------------------------\n * Renames a file.  Errors are reported by calling error in the\n * implementation.\n */\n</scan>\nvoid renameFile(std::string oldname, std::string newname);\n\n<a name=\"Function:fileExists\"><scan class=comment>/*\n * Function: fileExists\n * Usage: if (fileExists(filename)) ...\n * ------------------------------------\n * Returns true if the specified file exists.\n */\n</scan>\nbool fileExists(std::string filename);\n\n<a name=\"Function:isFile\"><scan class=comment>/*\n * Function: isFile\n * Usage: if (isFile(filename)) ...\n * --------------------------------\n * Returns true if the specified file is a regular file.\n */\n</scan>\nbool isFile(std::string filename);\n\n<a name=\"Function:isSymbolicLink\"><scan class=comment>/*\n * Function: isSymbolicLink\n * Usage: if (isSymbolicLink(filename)) ...\n * ----------------------------------------\n * Returns true if the specified file is a symbolic link.\n */\n</scan>\nbool isSymbolicLink(std::string filename);\n\n<a name=\"Function:isDirectory\"><scan class=comment>/*\n * Function: isDirectory\n * Usage: if (isDirectory(filename)) ...\n * -------------------------------------\n * Returns true if the specified file is a directory.\n */\n</scan>\nbool isDirectory(std::string filename);\n\n<a name=\"Function:setCurrentDirectory\"><scan class=comment>/*\n * Function: setCurrentDirectory\n * Usage: setCurrentDirectory(filename);\n * -------------------------------------\n * Changes the current directory to the specified path.\n */\n</scan>\nvoid setCurrentDirectory(std::string path);\n\n<a name=\"Function:getCurrentDirectory\"><scan class=comment>/*\n * Function: getCurrentDirectory\n * Usage: string filename = getCurrentDirectory();\n * -----------------------------------------------\n * Returns an absolute filename for the current directory.\n */\n</scan>\nstd::string getCurrentDirectory();\n\n<a name=\"Function:createDirectory\"><scan class=comment>/*\n * Function: createDirectory\n * Usage: createDirectory(path);\n * -----------------------------\n * Creates a new directory for the specified path.  The createDirectory\n * function does not report an error if the directory already exists. \n * Unlike createDirectoryPath, createDirectory does not create missing\n * directories along the path.  If some component of path does not exist,\n * this function signals an error.\n */\n</scan>\nvoid createDirectory(std::string path);\n\n<a name=\"Function:createDirectoryPath\"><scan class=comment>/*\n * Function: createDirectoryPath\n * Usage: createDirectoryPath(path);\n * ---------------------------------\n * Creates a new directory for the specified path.   If intermediate\n * components of path do not exist, this function creates them as needed.\n */\n</scan>\nvoid createDirectoryPath(std::string path);\n\n<a name=\"Function:expandPathname\"><scan class=comment>/*\n * Function: expandPathname\n * Usage: string pathname = expandPathname(filename);\n * --------------------------------------------------\n * Expands a filename into a canonical name for the platform.\n */\n</scan>\nstd::string expandPathname(std::string filename);\n\n<a name=\"Function:listDirectory\"><scan class=comment>/*\n * Function: listDirectory\n * Usage: listDirectory(path, list);\n * ---------------------------------\n * Adds an alphabetized list of the files in the specified directory to the\n * string vector list.  This list excludes the names . and .. entries.\n */\n</scan>\nvoid listDirectory(std::string path, Vector&lt;std::string&gt; &amp; list);\nvoid listDirectory(std::string path, std::vector&lt;std::string&gt; &amp; list);\n\n<a name=\"Function:matchFilenamePattern\"><scan class=comment>/*\n * Function: matchFilenamePattern\n * Usage: if (matchFilenamePattern(filename, pattern)) ...\n * -------------------------------------------------------\n * Determines whether the filename matches the specified pattern.  The\n * pattern string is interpreted in much the same way that a Unix shell\n * expands filenames and supports the following wildcard options:\n *\n *    ?      Matches any single character\n *    *      Matches any sequence of characters\n *    [...]  Matches any of the specified characters\n *    [^...] Matches any character except the specified ones\n *\n * The last two options allow a range of characters to be specified in the\n * form a-z.\n */\n</scan>\nbool matchFilenamePattern(std::string filename, std::string pattern);\n\n<a name=\"Function:getDirectoryPathSeparator\"><scan class=comment>/*\n * Function: getDirectoryPathSeparator\n * Usage: string sep = getDirectoryPathSeparator();\n * ------------------------------------------------\n * Returns the standard directory path separator used on this platform.\n */\n</scan>\nstd::string getDirectoryPathSeparator();\n\n<a name=\"Function:getSearchPathSeparator\"><scan class=comment>/*\n * Function: getSearchPathSeparator\n * Usage: string sep = getSearchPathSeparator();\n * ---------------------------------------------\n * Returns the standard search path separator used on this platform.\n */\n</scan>\nstd::string getSearchPathSeparator();\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/docs/_old/foreach-h.html",
    "content": "<html>\n<head>\n<title>../include/foreach.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: foreach.h\n * ---------------\n * This file defines the foreach keyword, which implements a substitute for\n * the range-based for loop from C++11.  All iterable classes in the\n * Stanford libraries import this file, so clients don't ordinarily need to\n * do so explicitly.  This version of foreach also supports C++ strings and\n * arrays.\n */\n</scan>\n#ifndef _foreach_h\n#define _foreach_h\n\n<a name=\"Statement:foreach\"><scan class=comment>/*\n * Statement: foreach\n * Usage: foreach (type var in collection) { ... }\n * -----------------------------------------------\n * The foreach statement steps through the elements in a collection.  It\n * works correctly with the collection classes in both the Standard\n * Template Library and the Stanford C++ libraries, but can also be used\n * with C++ strings and statically initialized arrays.\n *\n * The following code, for example, prints every element in the string\n * vector lines:\n *\n *    foreach (string str in lines) {\n *       cout &lt;&lt; str &lt;&lt; endl;\n *    }\n *\n * Similarly, the following function calculates the sum of the character\n * codes in a string:\n *\n *    int sumCharacterCodes(string str) {\n *       int sum = 0;\n *       foreach (char ch in str) sum += ch;\n *       return sum;\n *    }\n *\n * As a simplification when iterating over maps, the foreach macro iterates\n * through the keys rather than the key/value pairs.\n */\n</scan>\n<scan class=comment>/* Private section */</scan>\n\n<scan class=comment>/**********************************************************************/</scan>\n<scan class=comment>/* Note: Everything below this point in the file is logically part    */</scan>\n<scan class=comment>/* of the implementation and should not be of interest to clients.    */</scan>\n<scan class=comment>/**********************************************************************/</scan>\n\n#include &lt;iterator&gt;\n#include &lt;map&gt;\n#include &lt;cstddef&gt;\n#include &lt;cstring&gt;\n\n<scan class=comment>/* These #includes are for files that contain \"in\" as a token */</scan>\n\n#include &lt;ios&gt;\n#include &lt;fstream&gt;\n#include &lt;sstream&gt;\nusing namespace std;\n\n<scan class=comment>/* Redefine the ios constants (one of which is \"in\") */</scan>\n\nstatic const ios::openmode IOS_APP = ios::app;\nstatic const ios::openmode IOS_ATE = ios::ate;\nstatic const ios::openmode IOS_BINARY = ios::binary;\nstatic const ios::openmode IOS_IN = ios::in;\nstatic const ios::openmode IOS_OUT = ios::out;\nstatic const ios::openmode IOS_TRUNC = ios::trunc;\n\n<scan class=comment>/* Private implementation namespace */</scan>\n\nnamespace _fe {\n   struct Range {\n      virtual ~Range() { };\n   };\n\n   template &lt;typename T&gt;\n   struct ArrayRange : Range {\n      ArrayRange(const T *begin, const T *end) : iter(begin), end(end) { }\n      const T *iter;\n      const T *end;\n   };\n\n   template &lt;typename CType&gt;\n   struct CRange : Range {\n      CRange(const CType&amp; c) :\n         cont(c), iter(cont.begin()), end(cont.end()) { }\n      CType cont;\n      typename CType::iterator iter, end;\n   };\n\n   template &lt;typename KT, typename VT, typename CT, typename AT&gt;\n   struct MapRange : Range {\n      MapRange(const map&lt;KT,VT,CT,AT&gt; &amp; c) :\n         cont(c), iter(cont.begin()), end(cont.end()) { }\n      map&lt;KT,VT,CT,AT&gt; cont;\n      typename map&lt;KT,VT,CT,AT&gt;::iterator iter, end;\n   };\n\n<scan class=comment>/*\n * The State struct glues together all of these pieces and\n * stores all of the information throughout the loops.\n */</scan>\n\n   struct State {\n      State() : state(0), itr(NULL) { }\n      ~State() { delete itr; }\n      int state;\n      Range *itr;\n   };\n\n<scan class=comment>/* General hook function */</scan>\n\n   template &lt;typename DowncastType, typename ValueType&gt;\n   ValueType HookImpl(State&amp; fe) {\n      DowncastType *ip = (DowncastType *) fe.itr;\n      if (ip-&gt;iter == ip-&gt;end) {\n         fe.state = 2;\n         return ValueType();\n      }\n      fe.state = 1;\n      ValueType vp = *ip-&gt;iter;     <scan class=comment>/* Subtle implementation note:    */</scan>\n      ++ip-&gt;iter;                   <scan class=comment>/* Using *ip-&gt;iter++ here would   */</scan>\n      return vp;                    <scan class=comment>/* require copying the iterator.  */</scan>\n   }\n\n<scan class=comment>/* Foreach implementation for containers */</scan>\n\n   template &lt;typename CType&gt;\n   CRange&lt;CType&gt; *Init(State &amp; fe, const CType &amp; collection) {\n      fe.itr = new CRange&lt;CType&gt;(collection);\n      return (CRange&lt;CType&gt;*) fe.itr;\n   }\n\n   template &lt;typename CType&gt;\n   typename iterator_traits&lt;typename CType::iterator&gt;::value_type\n   Hook(State &amp; fe, CRange&lt;CType&gt; *) {\n      return HookImpl&lt;CRange&lt;CType&gt;,\n         typename iterator_traits&lt;typename CType::iterator&gt;::value_type&gt;(fe);\n   }\n\n<scan class=comment>/* For maps */</scan>\n\n   template &lt;typename K, typename V, typename C, typename A&gt;\n   MapRange&lt;K,V,C,A&gt; *Init(State &amp; fe, const map&lt;K,V,C,A&gt; &amp; collection) {\n      fe.itr = new MapRange&lt;K,V,C,A&gt;(collection);\n      return (MapRange&lt;K,V,C,A&gt;*) fe.itr;\n   }\n\n   template &lt;typename DowncastType, typename ValueType&gt;\n   ValueType MapHookImpl(State &amp; fe) {\n      DowncastType *ip = (DowncastType *) fe.itr;\n      if (ip-&gt;iter == ip-&gt;end) {\n         fe.state = 2;\n         return ValueType();\n      }\n      fe.state = 1;\n      ValueType key = ip-&gt;iter-&gt;first;\n      ++ip-&gt;iter;\n      return key;\n   }\n\n   template &lt;typename K, typename V, typename C, typename A&gt;\n   K Hook(State &amp; fe, MapRange&lt;K,V,C,A&gt; *) {\n      return MapHookImpl&lt;MapRange&lt;K,V,C,A&gt;,K&gt;(fe);\n   }\n\n<scan class=comment>/* For C strings */</scan>\n\n   template &lt;size_t n&gt;\n   ArrayRange&lt;char&gt; *Init(State &amp; fe, char (&amp;str)[n]) {\n      fe.itr = new ArrayRange&lt;char&gt;(str, str + strlen(str));\n      return (ArrayRange&lt;char&gt;*) fe.itr;\n   }\n\n   template &lt;size_t n&gt;\n   ArrayRange&lt;char&gt; *Init(State &amp; fe, const char (&amp;str)[n]) {\n      fe.itr = new ArrayRange&lt;char&gt;(str, str + strlen(str));\n      return (ArrayRange&lt;char&gt;*) fe.itr;\n   }\n\n<scan class=comment>/* For arrays */</scan>\n\n   template &lt;typename T, size_t n&gt;\n   ArrayRange&lt;T&gt; *Init(State &amp; fe, T (&amp;arr)[n]) {\n      fe.itr = new ArrayRange&lt;T&gt;(arr, arr + n);\n      return (ArrayRange&lt;T&gt;*) fe.itr;\n   }\n\n   template &lt;typename T, size_t n&gt;\n   ArrayRange&lt;T&gt; *Init(State &amp; fe, const T (&amp;arr)[n]) {\n      fe.itr = new ArrayRange&lt;T&gt;(arr, arr + n);\n      return (ArrayRange&lt;T&gt;*) fe.itr;\n   }\n\n   template &lt;typename T&gt;\n   T Hook(State&amp; fe, ArrayRange&lt;T&gt;*) {\n      return HookImpl&lt;ArrayRange&lt;T&gt;, T&gt;(fe);\n   }\n\n}\n\n<scan class=comment>/* The actual foreach and in macros */</scan>\n\n#define foreach(arg) \\\n   for (_fe::State _fe; _fe.state &lt; 2; ) \\\n      for (arg)); _fe.state++ == 1; _fe.state = 0)\n\n#define in = _fe::Hook(_fe, _fe.state != 0 ? NULL : _fe::Init(_fe,\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/docs/_old/gevents-h.html",
    "content": "<html>\n<head>\n<title>../include/gevents.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: gevents.h\n * ---------------\n * This file defines the event types used in the StanfordCPPLib graphics\n * libraries.  The structure of this package is adapted from the Java event\n * model.\n */\n</scan>\n#ifndef _gevents_h\n#define _gevents_h\n\n#include &lt;string&gt;\n#include \"gtimer.h\"\n#include \"gwindow.h\"\n\n<a name=\"Type:EventClassType\"><scan class=comment>/*\n * Type: EventClassType\n * --------------------\n * This enumeration type defines the event classes.  The element values are\n * each a single bit and can be added or ORed together to generate an event\n * mask.  The CLICK_EVENT class responds only to the MOUSE_CLICKED event\n * type.  The ANY_EVENT class selects any event.\n */\n</scan>\nenum EventClassType {\n   NULL_EVENT   = 0x000,\n   ACTION_EVENT = 0x010,\n   KEY_EVENT    = 0x020,\n   TIMER_EVENT  = 0x040,\n   WINDOW_EVENT = 0x080,\n   MOUSE_EVENT  = 0x100,\n   CLICK_EVENT  = 0x200,\n   ANY_EVENT    = 0x3F0\n};\n\n<a name=\"Type:EventType\"><scan class=comment>/*\n * Type: EventType\n * ---------------\n * This enumeration type defines the event types for all events.\n */\n</scan>\ntypedef enum {\n   WINDOW_CLOSED    = WINDOW_EVENT + 1,\n   WINDOW_RESIZED   = WINDOW_EVENT + 2,\n   ACTION_PERFORMED = ACTION_EVENT + 1,\n   MOUSE_CLICKED    = MOUSE_EVENT + 1,\n   MOUSE_PRESSED    = MOUSE_EVENT + 2,\n   MOUSE_RELEASED   = MOUSE_EVENT + 3,\n   MOUSE_MOVED      = MOUSE_EVENT + 4,\n   MOUSE_DRAGGED    = MOUSE_EVENT + 5,\n   KEY_PRESSED      = KEY_EVENT + 1,\n   KEY_RELEASED     = KEY_EVENT + 2,\n   KEY_TYPED        = KEY_EVENT + 3,\n   TIMER_TICKED     = TIMER_EVENT + 1,\n} EventType;\n\n<a name=\"Type:ModifierCodes\"><scan class=comment>/*\n * Type: ModifierCodes\n * -------------------\n * This enumeration type defines a set of constants used to check whether\n * modifiers are in effect.\n */\n</scan>\nenum ModifierCodes {\n   SHIFT_DOWN     = 1 &lt;&lt; 0,\n   CTRL_DOWN      = 1 &lt;&lt; 1,\n   META_DOWN      = 1 &lt;&lt; 2,\n   ALT_DOWN       = 1 &lt;&lt; 3,\n   ALT_GRAPH_DOWN = 1 &lt;&lt; 4,\n   BUTTON1_DOWN   = 1 &lt;&lt; 5,\n   BUTTON2_DOWN   = 1 &lt;&lt; 6,\n   BUTTON3_DOWN   = 1 &lt;&lt; 7\n};\n\n<a name=\"Type:KeyCodes\"><scan class=comment>/*\n * Type: KeyCodes\n * --------------\n * This type defines the names of the key codes returned in a key event.\n */\n</scan>\nenum KeyCodes {\n   BACKSPACE_KEY = 8,\n   TAB_KEY = 9,\n   ENTER_KEY = 10,\n   CLEAR_KEY = 12,\n   ESCAPE_KEY = 27,\n   PAGE_UP_KEY = 33,\n   PAGE_DOWN_KEY = 34,\n   END_KEY = 35,\n   HOME_KEY = 36,\n   LEFT_ARROW_KEY = 37,\n   UP_ARROW_KEY = 38,\n   RIGHT_ARROW_KEY = 39,\n   DOWN_ARROW_KEY = 40,\n   F1_KEY = 112,\n   F2_KEY = 113,\n   F3_KEY = 114,\n   F4_KEY = 115,\n   F5_KEY = 116,\n   F6_KEY = 117,\n   F7_KEY = 118,\n   F8_KEY = 119,\n   F9_KEY = 120,\n   F10_KEY = 121,\n   F11_KEY = 122,\n   F12_KEY = 123,\n   DELETE_KEY = 127,\n   HELP_KEY = 156\n};\n\n<scan class=comment>/* Forward definitions */</scan>\n\nclass GWindowEvent;\nclass GActionEvent;\nclass GMouseEvent;\nclass GKeyEvent;\nclass GTimerEvent;\nclass GObject;\n\n<a name=\"Class:GEvent\"><scan class=comment>/*\n * Class: GEvent\n * -------------\n * This class is the root of the hierarchy for all events.\n *\n * The standard paradigm for using GEvent is illustrated by the following\n * program, which allows the user to draw lines on the graphics window:\n *\n *    int main() {\n *       GWindow gw;\n *       GLine *line;\n *       cout &lt;&lt; \"This program lets the user draw lines by dragging.\" &lt;&lt; endl;\n *       while (true) {\n *          GMouseEvent e = waitForEvent(MOUSE_EVENT);\n *          if (e.getEventType() == MOUSE_PRESSED) {\n *             line = new GLine(e.getX(), e.getY(), e.getX(), e.getY());\n *             gw.add(line);\n *          } else if (e.getEventType() == MOUSE_DRAGGED) {\n *             line-&gt;setEndPoint(e.getX(), e.getY());\n *          }\n *       }\n *    }\n */\n</scan>\nclass GEvent {\n\npublic:\n\n<a name=\"Friend constructor:GEvent\"><scan class=comment>/*\n * Friend constructor: GEvent\n * Usage: GEvent event;\n * --------------------\n * Ensures that an event is properly initialized to a NULL event.\n */\n</scan>\n   GEvent();\n\n<a name=\"Method:getEventClass\"><scan class=comment>/*\n * Method: getEventClass\n * Usage: EventClassType eventClass = e.getEventClass();\n * -----------------------------------------------------\n * Returns the enumerated type constant indicating the class of the event.\n */\n</scan>\n   EventClassType getEventClass() const;\n\n<a name=\"Method:getEventType\"><scan class=comment>/*\n * Method: getEventType\n * Usage: EventType type = e.getEventType();\n * -----------------------------------------\n * Returns the enumerated type constant corresponding to the specific event\n * type.\n */\n</scan>\n   EventType getEventType() const;\n\n<a name=\"Method:getEventTime\"><scan class=comment>/*\n * Method: getEventTime\n * Usage: double time = e.getEventTime();\n * --------------------------------------\n * Returns the system time in milliseconds at which the event occurred.  To\n * ensure portability among systems that represent time in different ways,\n * the StanfordCPPLib packages use type double to represent time, which is\n * always encoded as the number of milliseconds that have elapsed since\n * 00:00:00 UTC on January 1, 1970, which is the conventional zero point\n * for computer-based time systems.\n */\n</scan>\n   double getEventTime() const;\n\n<a name=\"Method:getModifiers\"><scan class=comment>/*\n * Method: getModifiers\n * Usage: int modifiers = e.getModifiers();\n * ----------------------------------------\n * Returns an integer whose bits indicate what modifiers are in effect.  To\n * check whether the shift key is down, for example, one could use the\n * following code:\n *\n *    if (e.getModifiers() \n */\n</scan>\n   int getModifiers() const;\n\n<a name=\"Method:toString\"><scan class=comment>/*\n * Method: toString\n * Usage: string str = e.toString();\n * ---------------------------------\n * Converts the event to a human-readable representation of the event.\n */\n</scan>\n   virtual std::string toString() const;\n\n<a name=\"Method:isValid\"><scan class=comment>/*\n * Method: isValid\n * Usage: if (e.isValid()) ...\n * ---------------------------\n * Returns true if the event is valid.\n */\n</scan>\n   bool isValid();\n\n<scan class=comment>/* Private section */</scan>\n\n<scan class=comment>/**********************************************************************/</scan>\n<scan class=comment>/* Note: Everything below this point in the file is logically part    */</scan>\n<scan class=comment>/* of the implementation and should not be of interest to clients.    */</scan>\n<scan class=comment>/**********************************************************************/</scan>\n\n<a name=\"Method:setEventTime\"><scan class=comment>/*\n * Method: setEventTime\n * Usage: e.setEventTime(time);\n * ----------------------------\n * Sets the event time field for this event.  The event system needs access\n * to this method, but conventional clients don't.\n */\n</scan>\n   void setEventTime(double time);\n\n<a name=\"Method:setModifiers\"><scan class=comment>/*\n * Method: setModifiers\n * Usage: e.setModifiers(modifiers);\n * ---------------------------------\n * Sets the modifiers field for this event.  The event system needs access\n * to this method, but conventional clients don't.\n */\n</scan>\n   void setModifiers(int modifiers);\n\nprivate:\n\n<scan class=comment>/*\n * Instance variables\n * ------------------\n * Implementation note: All the variables from the subclasses are included\n * in the outer class to make it possible to convert between general events\n * and the various subclasses.  By keeping all event classes the same size,\n * this design avoids any issues of slicing off parts of the data during\n * such conversions.\n */\n</scan>\n<scan class=comment>/* General events */</scan>\n\n   EventClassType eventClass;\n   int eventType;\n   int modifiers;\n   double eventTime;\n   bool valid;\n   std::string sourceKey;\n\n<scan class=comment>/* Window, mouse, and key events */</scan>\n\n   GWindowData *gwd;\n\n<scan class=comment>/* Action events */</scan>\n\n   GObject *source;\n   std::string actionCommand;\n\n<scan class=comment>/* Mouse events */</scan>\n\n   double x;\n   double y;\n\n<scan class=comment>/* Key events */</scan>\n\n   int keyChar;\n   int keyCode;\n\n<scan class=comment>/* Timer events */</scan>\n\n   GTimerData *gtd;\n\n<scan class=comment>/* Friend specifications */</scan>\n\nfriend class GWindowEvent;\nfriend class GActionEvent;\nfriend class GMouseEvent;\nfriend class GKeyEvent;\nfriend class GTimerEvent;\n\n};\n\n<a name=\"Function:waitForClick\"><scan class=comment>/*\n * Function: waitForClick\n * Usage: waitForClick();\n * ----------------------\n * Waits for a mouse click in any window, discarding any other events.\n */\n</scan>\nvoid waitForClick();\n\n<a name=\"Function:waitForEvent\"><scan class=comment>/*\n * Function: waitForEvent\n * Usage: GEvent e = waitForEvent(mask);\n * -------------------------------------\n * Dismisses the process until an event occurs whose type is covered by the\n * event mask.  The mask parameter is a combination of the events of\n * interest.  For example, to wait for a mouse event or an action event,\n * clients can use the following call:\n *\n *    e = waitForEvent(MOUSE_EVENT + ACTION_EVENT);\n *\n * The mask parameter is optional.  If it is missing, waitForEvent accepts\n * any event.\n *\n * As a more sophisticated example, the following code is the canonical\n * event loop for an animated application that needs to respond to mouse,\n * key, and timer events:\n *\n *    GTimer timer(ANIMATION_DELAY_IN_MILLISECONDS);\n *    timer.start();\n *    while (true) {\n *       GEvent e = waitForEvent(TIMER_EVENT + MOUSE_EVENT + KEY_EVENT);\n *       switch (e.getEventClass()) {\n *        case TIMER_EVENT:\n *          takeAnimationStep();\n *          break;\n *        case MOUSE_EVENT:\n *          handleMouseEvent(GMouseEvent(e));\n *          break;\n *        case KEY_EVENT:\n *          handleKeyEvent(GKeyEvent(e));\n *          break;\n *       }\n *    }\n */\n</scan>\nGEvent waitForEvent(int mask = ANY_EVENT);\n\n<a name=\"Function:getNextEvent\"><scan class=comment>/*\n * Function: getNextEvent\n * Usage: GEvent e = getNextEvent(mask);\n * -------------------------------------\n * Checks to see if there are any events of the desired type waiting on the\n * event queue.  If so, this function returns the event in exactly the same\n * fashion as waitForEvent; if not, getNextEvent returns an invalid event. \n * The mask parameter is optional.  If it is missing, getNextEvent accepts\n * any event.\n */\n</scan>\nGEvent getNextEvent(int mask = ANY_EVENT);\n\n<a name=\"Class:GWindowEvent\"><scan class=comment>/*\n * Class: GWindowEvent\n * -------------------\n * This event subclass represents a window event.  Each GWindowEvent keeps\n * track of the event type (WINDOW_CLOSED, WINDOW_RESIZED) along with the\n * identity of the window.\n */\n</scan>\nclass GWindowEvent : public GEvent {\n\npublic:\n\n<a name=\"Constructor:GWindowEvent\"><scan class=comment>/*\n * Constructor: GWindowEvent\n * Usage: GWindowEvent windowEvent(type, gw);\n * ------------------------------------------\n * Creates a GWindowEvent using the specified parameters.\n */\n</scan>\n   GWindowEvent(EventType type, const GWindow &amp; gw);\n\n<a name=\"Method:getGWindow\"><scan class=comment>/*\n * Method: getGWindow\n * Usage: GWindow gw = e.getGWindow();\n * -----------------------------------\n * Returns the graphics window in which this event occurred.\n */\n</scan>\n   GWindow getGWindow() const;\n\n<a name=\"Method:toString\"><scan class=comment>/*\n * Method: toString\n * Usage: string str = e.toString();\n * ---------------------------------\n * Converts the event to a human-readable representation of the event.\n */\n</scan>\n   std::string toString() const;\n\n<scan class=comment>/* Private section */</scan>\n\n   GWindowEvent();\n   GWindowEvent(GEvent e);\n\n};\n\n<a name=\"Class:GActionEvent\"><scan class=comment>/*\n * Class: GActionEvent\n * -------------------\n * This event subclass represents an action event.  Action events are\n * generated by the classes in the GInteractor hierarchy.  As an example,\n * the following program displays a button that, when pushed, generates the\n * message Please do not press this button again (with thanks to Douglas\n * Adamss Hitchhikers Guide to the Galaxy):\n *\n *    int main() {\n *       GWindow gw;\n *       GButton *button = new GButton(\"RED\");\n *       gw.addToRegion(button, \"SOUTH\");\n *       while (true) {\n *          GEvent e = waitForEvent(ACTION_EVENT | CLICK_EVENT);\n *          if (e.getEventType() == MOUSE_CLICKED) break;\n *          cout &lt;&lt; \"Please do not press this button again.\" &lt;&lt; endl;\n *       }\n *       return 0;\n *    }\n */\n</scan>\nclass GActionEvent : public GEvent {\n\npublic:\n\n<a name=\"Constructor:GActionEvent\"><scan class=comment>/*\n * Constructor: GActionEvent\n * Usage: GActionEvent actionEvent(type, source, actionCommand);\n * -------------------------------------------------------------\n * Creates a GActionEvent using the specified parameters.\n */\n</scan>\n   GActionEvent(EventType type, GObject *source, std::string actionCommand);\n\n<a name=\"Method:getSource\"><scan class=comment>/*\n * Method: getSource\n * Usage: GObject *gobj = e.getSource();\n * -------------------------------------\n * Returns a pointer to the GObject that generated this event.\n */\n</scan>\n   GObject *getSource() const;\n\n<a name=\"Method:getActionCommand\"><scan class=comment>/*\n * Method: getActionCommand\n * Usage: string cmd = e.getActionCommand();\n * -----------------------------------------\n * Returns the action command associated with this event.\n */\n</scan>\n   std::string getActionCommand() const;\n\n<a name=\"Method:toString\"><scan class=comment>/*\n * Method: toString\n * Usage: string str = e.toString();\n * ---------------------------------\n * Converts the event to a human-readable representation of the event.\n */\n</scan>\n   std::string toString() const;\n\n<scan class=comment>/* Private section */</scan>\n\n   GActionEvent();\n   GActionEvent(GEvent e);\n\n};\n\n<a name=\"Class:GMouseEvent\"><scan class=comment>/*\n * Class: GMouseEvent\n * ------------------\n * This event subclass represents a mouse event.  Each mouse event records\n * the event type (MOUSE_PRESSED, MOUSE_RELEASED, MOUSE_CLICKED,\n * MOUSE_MOVED, MOUSE_DRAGGED) along with the coordinates of the event. \n * Clicking the mouse generates three events in the following order:\n * MOUSE_PRESSED, MOUSE_RELEASED, MOUSE_CLICKED.\n *\n * As an example, the following program uses mouse events to let the user\n * draw rectangles on the graphics window.  The only complexity in this\n * code is the use of the library functions min and abs to ensure that the\n * dimensions of the rectangle are positive.\n *\n *    int main() {\n *       GWindow gw;\n *       cout &lt;&lt; \"This program lets the user draw rectangles.\" &lt;&lt; endl;\n *       GRect *rect;\n *       double startX;\n *       double startY;\n *       while (true) {\n *          GMouseEvent e = waitForEvent();\n *          if (e.getEventType() == MOUSE_PRESSED) {\n *             startX = e.getX();\n *             startY = e.getY();\n *             rect = new GRect(startX, startY, 0, 0);\n *             rect-&gt;setFilled(true);\n *             gw.add(rect);\n *          } else if (e.getEventType() == MOUSE_DRAGGED) {\n *             double x = min(e.getX(), startX);\n *             double y = min(e.getY(), startY);\n *             double width = abs(e.getX() - startX);\n *             double height = abs(e.getY() - startY);\n *             rect-&gt;setBounds(x, y, width, height);\n *          }\n *       }\n *    }\n */\n</scan>\nclass GMouseEvent : public GEvent {\n\npublic:\n\n<a name=\"Constructor:GMouseEvent\"><scan class=comment>/*\n * Constructor: GMouseEvent\n * Usage: GMouseEvent mouseEvent(type, gw, x, y);\n * ----------------------------------------------\n * Creates a GMouseEvent using the specified parameters.\n */\n</scan>\n   GMouseEvent(EventType type, const GWindow &amp; gw, double x, double y);\n\n<a name=\"Method:getGWindow\"><scan class=comment>/*\n * Method: getGWindow\n * Usage: GWindow gw = e.getGWindow();\n * -----------------------------------\n * Returns the graphics window in which this event occurred.\n */\n</scan>\n   GWindow getGWindow() const;\n\n<a name=\"Method:getX\"><scan class=comment>/*\n * Method: getX\n * Usage: double x = getX();\n * -------------------------\n * Returns the x coordinate at which the event occurred relative to the\n * window origin at the upper left corner of the window.\n */\n</scan>\n   double getX() const;\n\n<a name=\"Method:getY\"><scan class=comment>/*\n * Method: getY\n * Usage: double y = getY();\n * -------------------------\n * Returns the y coordinate at which the event occurred relative to the\n * window origin at the upper left corner of the window.\n */\n</scan>\n   double getY() const;\n\n<a name=\"Method:toString\"><scan class=comment>/*\n * Method: toString\n * Usage: string str = e.toString();\n * ---------------------------------\n * Converts the event to a human-readable representation of the event.\n */\n</scan>\n   std::string toString() const;\n\n<scan class=comment>/* Private section */</scan>\n\n   GMouseEvent();\n   GMouseEvent(GEvent e);\n\n};\n\n<a name=\"Class:GKeyEvent\"><scan class=comment>/*\n * Class: GKeyEvent\n * ----------------\n * This event subclass represents a key event.  Each key event records the\n * event type along with two representations of the key.  The getKeyChar\n * function is more generally useful and returns the character after taking\n * into account modifier keys.  The getKeyCode function returns an integer\n * identifying the key, which can be a function key as well as a standard\n * key.  The codes return by getKeyCode are listed in the KeyCodes\n * enumeration.\n */\n</scan>\nclass GKeyEvent : public GEvent {\n\npublic:\n\n<a name=\"Constructor:GKeyEvent\"><scan class=comment>/*\n * Constructor: GKeyEvent\n * Usage: GKeyEvent keyEvent(type, gw, keyChar, keyCode);\n * ------------------------------------------------------\n * Creates a GKeyEvent using the specified parameters.\n */\n</scan>\n   GKeyEvent(EventType type, const GWindow &amp; gw, int keyChar, int keyCode);\n\n<a name=\"Method:getGWindow\"><scan class=comment>/*\n * Method: getGWindow\n * Usage: GWindow gw = e.getGWindow();\n * -----------------------------------\n * Returns the graphics window in which this event occurred.\n */\n</scan>\n   GWindow getGWindow() const;\n\n<a name=\"Method:getKeyChar\"><scan class=comment>/*\n * Method: getKeyChar\n * Usage: char ch = e.getKeyChar();\n * --------------------------------\n * Returns the character represented by the keystroke, taking the modifier\n * keys into account.  For example, if the user types the 'a' key with the\n * shift key down, getKeyChar will return 'A'.  If the key code in the\n * event does not correspond to a character, getKeyChar returns the null\n * character.\n */\n</scan>\n   char getKeyChar() const;\n\n<a name=\"Method:getKeyCode\"><scan class=comment>/*\n * Method: getKeyCode\n * Usage: int key = getKeyCode();\n * ------------------------------\n * Returns the integer code associated with the key in the event.\n */\n</scan>\n   int getKeyCode() const;\n\n<a name=\"Method:toString\"><scan class=comment>/*\n * Method: toString\n * Usage: string str = e.toString();\n * ---------------------------------\n * Converts the event to a human-readable representation of the event.\n */\n</scan>\n   std::string toString() const;\n\n<scan class=comment>/* Private section */</scan>\n\n   GKeyEvent();\n   GKeyEvent(GEvent e);\n\n};\n\n<a name=\"Class:GTimerEvent\"><scan class=comment>/*\n * Class: GTimerEvent\n * ------------------\n * This event subclass represents a timer event.  Timer events are\n * generated by a GTimer object, which produces a new event at a fixed\n * interval measured in milliseconds.  As an example, the following program\n * generates a timer event every two seconds, stopping when the user clicks\n * somewhere in the window:\n *\n *    int main() {\n *       cout &lt;&lt; \"This program generates timer events.\" &lt;&lt; endl;\n *       GTimer timer(2000);\n *       timer.start();\n *       while (true) {\n *          GEvent e = waitForEvent(CLICK_EVENT | TIMER_EVENT);\n *          if (e.getEventType() == MOUSE_CLICKED) break;\n *          cout &lt;&lt; \"Timer ticked\" &lt;&lt; endl;\n *       }\n *       return 0;\n *    }\n */\n</scan>\nclass GTimerEvent : public GEvent {\n\npublic:\n\n<a name=\"Constructor:GTimerEvent\"><scan class=comment>/*\n * Constructor: GTimerEvent\n * Usage: GTimerEvent timerEvent(type, timer);\n * -------------------------------------------\n * Creates a GTimerEvent for the specified timer.\n */\n</scan>\n   GTimerEvent(EventType type, const GTimer &amp; timer);\n\n<a name=\"Method:getGTimer\"><scan class=comment>/*\n * Method: getGTimer\n * Usage: GTimer timer = e.getGTimer();\n * ------------------------------------\n * Returns the timer that generated this event.\n */\n</scan>\n   GTimer getGTimer() const;\n\n<a name=\"Method:toString\"><scan class=comment>/*\n * Method: toString\n * Usage: string str = e.toString();\n * ---------------------------------\n * Converts the event to a human-readable representation of the event.\n */\n</scan>\n   std::string toString() const;\n\n<scan class=comment>/* Private section */</scan>\n\n   GTimerEvent();\n   GTimerEvent(GEvent e);\n\n};\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/docs/_old/ginteractors-h.html",
    "content": "<html>\n<head>\n<title>../include/ginteractors.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: ginteractors.h\n * --------------------\n * This file exports a hierarchy of graphical interactors similar to those\n * provided in the Java Swing libraries.\n */\n</scan>\n#ifndef _ginteractors_h\n#define _ginteractors_h\n\n#include \"gobjects.h\"\n#include \"gtypes.h\"\n#include \"gwindow.h\"\n#include \"vector.h\"\n\n<a name=\"Class:GInteractor\"><scan class=comment>/*\n * Class: GInteractor\n * ------------------\n * This abstract class is the superclass for all graphical interactors.  In\n * most applications, interactors will be added to a control strip along\n * one of the sides of the GWindow, but they can also be placed in specific\n * positions just like any other GObject.\n */\n</scan>\nclass GInteractor : public GObject {\n\npublic:\n\n<a name=\"Method:setActionCommand\"><scan class=comment>/*\n * Method: setActionCommand\n * Usage: interactor.setActionCommand(cmd);\n * ----------------------------------------\n * Sets the action command to the indicated string.  If the string is not\n * empty, activating the interactor generates a GActionEvent.\n */\n</scan>\n   void setActionCommand(std::string cmd);\n\n<a name=\"Method:getActionCommand\"><scan class=comment>/*\n * Method: getActionCommand\n * Usage: string cmd = interactor.getActionCommand();\n * --------------------------------------------------\n * Returns the action command associated with the interactor.\n */\n</scan>\n   std::string getActionCommand();\n\n<a name=\"Method:setSize\"><scan class=comment>/*\n * Method: setSize\n * Usage: interactor.setSize(size);\n *        interactor.setSize(width, height);\n * -----------------------------------------\n * Changes the size of the interactor to the specified width and height.\n */\n</scan>\n   void setSize(const GDimension &amp; size);\n   void setSize(double width, double height);\n\n<a name=\"Method:setBounds\"><scan class=comment>/*\n * Method: setBounds\n * Usage: interactor.setBounds(rect);\n *        interactor.setBounds(x, y, width, height);\n * -------------------------------------------------\n * Changes the bounds of the interactor to the specified values.\n */\n</scan>\n   void setBounds(const GRectangle &amp; size);\n   void setBounds(double x, double y, double width, double height);\n\n<scan class=comment>/* Prototypes for the virtual methods */</scan>\n\n   virtual GRectangle getBounds() const;\n\nprotected:\n\n   GInteractor();\n\n   std::string actionCommand;\n\n};\n\n<a name=\"Class:GButton\"><scan class=comment>/*\n * Class: GButton\n * --------------\n * This interactor subclass represents an onscreen button.  The following\n * program displays a button that, when pressed, generates the message\n * Please do not press this button again (with thanks to Douglas Adamss\n * Hitchhikers Guide to the Galaxy):\n *\n *    int main() {\n *       GWindow gw;\n *       GButton *button = new GButton(\"RED\");\n *       gw.addToRegion(button, \"SOUTH\");\n *       while (true) {\n *          GEvent e = waitForEvent(ACTION_EVENT | CLICK_EVENT);\n *          if (e.getEventType() == MOUSE_CLICKED) break;\n *          cout &lt;&lt; \"Please do not press this button again.\" &lt;&lt; endl;\n *       }\n *       return 0;\n *    }\n */\n</scan>\nclass GButton : public GInteractor {\n\npublic:\n\n<a name=\"Constructor:GButton\"><scan class=comment>/*\n * Constructor: GButton\n * Usage: GButton *button = new GButton(label);\n * --------------------------------------------\n * Creates a GButton with the specified label.  This constructor also sets\n * the action command for the button to the label string.\n */\n</scan>\n   GButton(std::string label);\n\n<scan class=comment>/* Prototypes for the virtual methods */</scan>\n\n   virtual std::string getType() const;\n   virtual std::string toString() const;\n\nprivate:\n   std::string label;\n\n};\n\n<a name=\"Class:GCheckBox\"><scan class=comment>/*\n * Class: GCheckBox\n * ----------------\n * This interactor subclass represents an onscreen check box.  Clicking\n * once on the check box selects it; clicking again removes the selection. \n * If a GCheckBox has an action command, clicking on the box generates a\n * GActionEvent.\n */\n</scan>\nclass GCheckBox : public GInteractor {\n\npublic:\n\n<a name=\"Constructor:GCheckBox\"><scan class=comment>/*\n * Constructor: GCheckBox\n * Usage: GCheckBox *chkbox = new GCheckBox(label);\n * ------------------------------------------------\n * Creates a GCheckBox with the specified label.  In contrast to the\n * GButton constructor, this constructor does not set an action command.\n */\n</scan>\n   GCheckBox(std::string label);\n\n<a name=\"Method:setSelected\"><scan class=comment>/*\n * Method: setSelected\n * Usage: chkbox-&gt;setSelected(state);\n * ----------------------------------\n * Sets the state of the check box.\n */\n</scan>\n   void setSelected(bool state);\n\n<a name=\"Method:isSelected\"><scan class=comment>/*\n * Method: isSelected\n * Usage: if (chkbox-&gt;isSelected()) ...\n * ------------------------------------\n * Returns true if the check box is selected.\n */\n</scan>\n   bool isSelected();\n\n<scan class=comment>/* Prototypes for the virtual methods */</scan>\n\n   virtual std::string getType() const;\n   virtual std::string toString() const;\n\nprivate:\n   std::string label;\n\n};\n\n<a name=\"Class:GSlider\"><scan class=comment>/*\n * Class: GSlider\n * --------------\n * This interactor subclass represents an onscreen slider.  Dragging the\n * slider control generates an ActionEvent if the slider has a nonempty\n * action command.\n */\n</scan>\nclass GSlider : public GInteractor {\n\npublic:\n\n<a name=\"Constructor:GSlider\"><scan class=comment>/*\n * Constructor: GSlider\n * Usage: GSlider *slider = new GSlider();\n *        GSlider *slider = new GSlider(min, max, value);\n * ------------------------------------------------------\n * Creates a horizontal GSlider.  The second form allows the client to\n * specify the minimum value, maximum value, and current value of the\n * slider.  The first form is equivalent to calling GSlider(0, 100, 50). \n * Assigning an action command to the slider causes the slider to generate\n * an action event whenever the slider value changes.\n */\n</scan>\n   GSlider();\n   GSlider(int min, int max, int value);\n\n<a name=\"Method:setValue\"><scan class=comment>/*\n * Method: setValue\n * Usage: slider-&gt;setValue(value);\n * -------------------------------\n * Sets the current value of the slider.\n */\n</scan>\n   void setValue(int value);\n\n<a name=\"Method:getValue\"><scan class=comment>/*\n * Method: getValue\n * Usage: int value = slider-&gt;getValue();\n * --------------------------------------\n * Returns the current value of the slider.\n */\n</scan>\n   int getValue();\n\n<scan class=comment>/* Prototypes for the virtual methods */</scan>\n\n   virtual std::string getType() const;\n   virtual std::string toString() const;\n\nprivate:\n   void create(int min, int max, int value);\n   int min;\n   int max;\n\n};\n\n<a name=\"Class:GTextField\"><scan class=comment>/*\n * Class: GTextField\n * -----------------\n * This interactor subclass represents a text field for entering short text\n * strings.  Hitting enter in a text field generates a GActionEvent if the\n * text field has a nonempty action command.\n\n */\n</scan>\nclass GTextField : public GInteractor {\n\npublic:\n\n<a name=\"Constructor:GTextField\"><scan class=comment>/*\n * Constructor: GTextField\n * Usage: GTextField *field = new GTextField();\n *        GTextField *field = new GTextField(nChars);\n * --------------------------------------------------\n * Creates a text field capable of holding nChars characters, which\n * defaults to 10.  Assigning an action command to the text field causes it\n * to generate an action event whenever the user types the ENTER key.\n */\n</scan>\n   GTextField();\n   GTextField(int nChars);\n\n<a name=\"Method:setText\"><scan class=comment>/*\n * Method: setText\n * Usage: field-&gt;setText(str);\n * ---------------------------\n * Sets the text of the field to the specified string.\n */\n</scan>\n   void setText(std::string str);\n\n<a name=\"Method:getText\"><scan class=comment>/*\n * Method: getText\n * Usage: string str = field-&gt;getText();\n * -------------------------------------\n * Returns the contents of the text field.\n */\n</scan>\n   std::string getText();\n\n<scan class=comment>/* Prototypes for the virtual methods */</scan>\n\n   virtual std::string getType() const;\n   virtual std::string toString() const;\n\n};\n\n<a name=\"Class:GChooser\"><scan class=comment>/*\n * Class: GChooser\n * ---------------\n * This interactor subclass represents a selectable list.  The GChooser\n * constructor creates an empty chooser.  Once the chooser has been\n * created, clients can use addItem to add the options.  For example, the\n * following code creates a GChooser containing the four strings \"Small\",\n * \"Medium\", \"Large\", and \"X-Large\":\n *\n *    GChooser *sizeChooser = new GChooser();\n *    sizeChooser-&gt;addItem(\"Small\");\n *    sizeChooser-&gt;addItem(\"Medium\");\n *    sizeChooser-&gt;addItem(\"Large\");\n *    sizeChooser-&gt;addItem(\"X-Large\");\n */\n</scan>\nclass GChooser : public GInteractor {\n\npublic:\n\n<a name=\"Constructor:GChooser\"><scan class=comment>/*\n * Constructor: GChooser\n * Usage: GChooser *chooser = new GChooser();\n * ------------------------------------------\n * Creates a chooser that initially contains no items, which are added\n * using the addItem method.  Assigning an action command to the chooser\n * causes it to generate an action event whenever the user selects an item.\n */\n</scan>\n   GChooser();\n\n<a name=\"Method:addItem\"><scan class=comment>/*\n * Method: addItem\n * Usage: chooser-&gt;addItem(item);\n * ------------------------------\n * Adds a new item consisting of the specified string.\n */\n</scan>\n   void addItem(std::string item);\n\n<a name=\"Method:setSelectedItem\"><scan class=comment>/*\n * Method: setSelectedItem\n * Usage: chooser-&gt;setSelectedItem(item);\n * --------------------------------------\n * Sets the chooser so that it shows the specified item.  If the item does\n * not exist in the chooser, no change occurs.\n */\n</scan>\n   void setSelectedItem(std::string item);\n\n<a name=\"Method:getSelectedItem\"><scan class=comment>/*\n * Method: getSelectedItem\n * Usage: string item = chooser-&gt;getSelectedItem();\n * ------------------------------------------------\n * Returns the current item selected in the chooser.\n */\n</scan>\n   std::string getSelectedItem();\n\n<scan class=comment>/* Prototypes for the virtual methods */</scan>\n\n   virtual std::string getType() const;\n   virtual std::string toString() const;\n\n};\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/docs/_old/gmath-h.html",
    "content": "<html>\n<head>\n<title>../include/gmath.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: gmath.h\n * -------------\n * This file exports several functions for working with graphical geometry\n * along with the mathematical constants PI and E.\n */\n</scan>\n#ifndef _gmath_h\n#define _gmath_h\n\n#include \"gtypes.h\"\n\n<a name=\"Constant:PI\"><scan class=comment>/*\n * Constant: PI\n * ------------\n * The mathematical constant pi, which is the ratio of the circumference of\n * a circle to its diameter.\n */\n</scan>\nextern const double PI;\n\n<a name=\"Constant:E\"><scan class=comment>/*\n * Constant: E\n * -----------\n * The mathematical constant e, which is the base of natural logarithms.\n */\n</scan>\nextern const double E;\n\n<a name=\"Function:sinDegrees\"><scan class=comment>/*\n * Function: sinDegrees\n * Usage: double sine = sinDegrees(angle);\n * ---------------------------------------\n * Returns the trigonometric sine of angle, which is expressed in degrees.\n */\n</scan>\ndouble sinDegrees(double angle);\n\n<a name=\"Function:cosDegrees\"><scan class=comment>/*\n * Function: cosDegrees\n * Usage: double cosine = cosDegrees(angle);\n * -----------------------------------------\n * Returns the trigonometric cosine of angle, which is expressed in\n * degrees.\n */\n</scan>\ndouble cosDegrees(double angle);\n\n<a name=\"Function:tanDegrees\"><scan class=comment>/*\n * Function: tanDegrees\n * Usage: double tangent = tanDegrees(angle);\n * ------------------------------------------\n * Returns the trigonometric tangent of angle, which is expressed in\n * degrees.\n */\n</scan>\ndouble tanDegrees(double angle);\n\n<a name=\"Function:toDegrees\"><scan class=comment>/*\n * Function: toDegrees\n * Usage: double degrees = toDegrees(radians);\n * -------------------------------------------\n * Converts an angle from radians to degrees.\n */\n</scan>\ndouble toDegrees(double radians);\n\n<a name=\"Function:toRadians\"><scan class=comment>/*\n * Function: toRadians\n * Usage: double radians = toRadians(degrees);\n * -------------------------------------------\n * Converts an angle from degrees to radians.\n */\n</scan>\ndouble toRadians(double degrees);\n\n<a name=\"Function:vectorDistance\"><scan class=comment>/*\n * Function: vectorDistance\n * Usage: double r = vectorDistance(pt);\n *        double r = vectorDistance(x, y);\n * ---------------------------------------\n * Computes the distance between the origin and the specified point.\n */\n</scan>\ndouble vectorDistance(const GPoint &amp; pt);\ndouble vectorDistance(double x, double y);\n\n<a name=\"Function:vectorAngle\"><scan class=comment>/*\n * Function: vectorAngle\n * Usage: double angle = vectorAngle(pt);\n *        double angle = vectorAngle(x, y);\n * ----------------------------------------\n * Returns the angle in degrees from the origin to the specified point. \n * This function takes account of the fact that the graphics coordinate\n * system is flipped in the y direction from the traditional Cartesian\n * plane.\n */\n</scan>\ndouble vectorAngle(const GPoint &amp; pt);\ndouble vectorAngle(double x, double y);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/docs/_old/gobjects-h.html",
    "content": "<html>\n<head>\n<title>../include/gobjects.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: gobjects.h\n * ----------------\n * This file exports a hierarchy of graphical shapes based on the model\n * developed for the ACM Java Graphics.\n */\n</scan>\n#ifndef _gobjects_h\n#define _gobjects_h\n\n#include \"gtypes.h\"\n#include \"gwindow.h\"\n#include \"vector.h\"\n\nclass GCompound;\n\n<a name=\"Class:GObject\"><scan class=comment>/*\n * Class: GObject\n * --------------\n * This class is the common superclass of all graphical objects that can be\n * displayed on a graphical window.  The class GObject itself is an\n * abstract class, which means that you are not allowed to construct a\n * GObject directly but must instead construct one of the concrete\n * subclasses.\n *\n * Most methods used for graphics take a pointer to a GObject rather than\n * the GObject itself.  Applications that use GObject pointers therefore\n * use the arrow operator (-&gt;) to apply methods to the object pointer.  For\n * examples illustrating the use of the GObject class, see the descriptions\n * of the individual subclasses.\n */\n</scan>\nclass GObject {\n\npublic:\n\n<a name=\"Destructor:~GObject\"><scan class=comment>/*\n * Destructor: ~GObject\n * --------------------\n * Frees the storage for the object.\n */\n</scan>\n   virtual ~GObject();\n\n<a name=\"Method:getX\"><scan class=comment>/*\n * Method: getX\n * Usage: double x = gobj-&gt;getX();\n * -------------------------------\n * Returns the x-coordinate of the object.\n */\n</scan>\n   double getX() const;\n\n<a name=\"Method:getY\"><scan class=comment>/*\n * Method: getY\n * Usage: double y = gobj-&gt;getY();\n * -------------------------------\n * Returns the y-coordinate of the object.\n */\n</scan>\n   double getY() const;\n\n<a name=\"Method:getLocation\"><scan class=comment>/*\n * Method: getLocation\n * Usage: GPoint pt = gobj-&gt;getLocation();\n * ---------------------------------------\n * Returns the location of this object as a GPoint.\n */\n</scan>\n   GPoint getLocation() const;\n\n<a name=\"Method:setLocation\"><scan class=comment>/*\n * Method: setLocation\n * Usage: gobj-&gt;setLocation(pt);\n *        gobj-&gt;setLocation(x, y);\n * -------------------------------\n * Sets the location of this object to the specified point.\n */\n</scan>\n   void setLocation(const GPoint &amp; pt);\n   void setLocation(double x, double y);\n\n<a name=\"Method:move\"><scan class=comment>/*\n * Method: move\n * Usage: gobj-&gt;move(dx, dy);\n * --------------------------\n * Moves the object on the screen using the displacements dx and dy.\n */\n</scan>\n   void move(double dx, double dy);\n\n<a name=\"Method:getWidth\"><scan class=comment>/*\n * Method: getWidth\n * Usage: double width = gobj-&gt;getWidth();\n * ---------------------------------------\n * Returns the width of this object, which is defined to be the width of\n * the bounding box.\n */\n</scan>\n   double getWidth() const;\n\n<a name=\"Method:getHeight\"><scan class=comment>/*\n * Method: getHeight\n * Usage: double height = gobj-&gt;getHeight();\n * -----------------------------------------\n * Returns the height of this object, which is defined to be the height of\n * the bounding box.\n */\n</scan>\n   double getHeight() const;\n\n<a name=\"Method:getSize\"><scan class=comment>/*\n * Method: getSize\n * Usage: GDimension size = gobj-&gt;getSize();\n * -----------------------------------------\n * Returns the size of the object as a GDimension.\n */\n</scan>\n   GDimension getSize() const;\n\n<a name=\"Method:getBounds\"><scan class=comment>/*\n * Method: getBounds\n * Usage: GRectangle rect = gobj-&gt;getBounds();\n * -------------------------------------------\n * Returns the bounding box of this object, which is defined to be the\n * smallest rectangle that covers everything drawn by the figure.  The\n * coordinates of this rectangle do not necessarily match the location\n * returned by getLocation.  Given a GLabel object, for example,\n * getLocation returns the coordinates of the point on the baseline at\n * which the string begins; the getBounds method, by contrast, returns a\n * rectangle that covers the entire window area occupied by the string.\n */\n</scan>\n   virtual GRectangle getBounds() const = 0;\n\n<a name=\"Method:setColor\"><scan class=comment>/*\n * Method: setColor\n * Usage: gobj-&gt;setColor(color);\n * -----------------------------\n * Sets the color used to display this object.  The color string is usually\n * one of the predefined color names:\n *\n *    BLACK,\n *    BLUE,\n *    CYAN,\n *    DARK_GRAY,\n *    GRAY,\n *    GREEN,\n *    LIGHT_GRAY,\n *    MAGENTA,\n *    ORANGE,\n *    PINK,\n *    RED,\n *    WHITE, and\n *    YELLOW.\n *\n * The case of the individual letters in the color name is ignored, as are\n * spaces and underscores, so that the color DARK_GRAY can be written as\n * \"Dark Gray\".\n *\n * The color can also be specified as a string in the form \"#rrggbb\" where\n * rr, gg, and bb are pairs of hexadecimal digits indicating the red,\n * green, and blue components of the color, respectively.\n */\n</scan>\n   void setColor(std::string color);\n   void setColor(int rgb);\n\n<a name=\"Method:getColor\"><scan class=comment>/*\n * Method: getColor\n * Usage: string color = gobj-&gt;getColor();\n * ---------------------------------------\n * Returns the color used to display this object.  This color is always\n * returned as a string in the form \"#rrggbb\", where rr, gg, and bb are the\n * red, green, and blue components of the color, expressed as two-digit\n * hexadecimal values.\n */\n</scan>\n   std::string getColor() const;\n\n<a name=\"Method:setVisible\"><scan class=comment>/*\n * Method: setVisible\n * Usage: gobj-&gt;setVisible(flag);\n * ------------------------------\n * Sets whether this object is visible.\n */\n</scan>\n   void setVisible(bool flag);\n\n<a name=\"Method:isVisible\"><scan class=comment>/*\n * Method: isVisible\n * Usage: if (gobj-&gt;isVisible()) ...\n * ---------------------------------\n * Returns true if this object is visible.\n */\n</scan>\n   bool isVisible() const;\n\n<a name=\"Method:sendForward\"><scan class=comment>/*\n * Method: sendForward\n * Usage: gobj-&gt;sendForward();\n * ---------------------------\n * Moves this object one step toward the front in the z dimension.  If it\n * was already at the front of the stack, nothing happens.\n */\n</scan>\n   void sendForward();\n\n<a name=\"Method:sendToFront\"><scan class=comment>/*\n * Method: sendToFront\n * Usage: gobj-&gt;sendToFront();\n * ---------------------------\n * Moves this object to the front of the display in the z dimension.  By\n * moving it to the front, this object will appear to be on top of the\n * other graphical objects on the display and may hide any objects that are\n * further back.\n */\n</scan>\n   void sendToFront();\n\n<a name=\"Method:sendBackward\"><scan class=comment>/*\n * Method: sendBackward\n * Usage: gobj-&gt;sendBackward();\n * ----------------------------\n * Moves this object one step toward the back in the z dimension.  If it\n * was already at the back of the stack, nothing happens.\n */\n</scan>\n   void sendBackward();\n\n<a name=\"Method:sendToBack\"><scan class=comment>/*\n * Method: sendToBack\n * Usage: gobj-&gt;sendToBack();\n * --------------------------\n * Moves this object to the back of the display in the z dimension.  By\n * moving it to the back, this object will appear to be behind the other\n * graphical objects on the display and may be obscured by other objects in\n * front.\n */\n</scan>\n   void sendToBack();\n\n<a name=\"Method:contains\"><scan class=comment>/*\n * Method: contains\n * Usage: if (gobj-&gt;contains(pt)) ...\n *        if (gobj-&gt;contains(x, y)) ...\n * ------------------------------------\n * Returns true if the specified point is inside the object.\n */\n</scan>\n   bool contains(GPoint pt) const;\n   virtual bool contains(double x, double y) const;\n\n<a name=\"Method:getType\"><scan class=comment>/*\n * Method: getType\n * Usage: string type = gobj-&gt;getType();\n * -------------------------------------\n * Returns the concrete type of the object as a string, as in \"GOval\" or\n * \"GRect\".\n */\n</scan>\n   virtual std::string getType() const = 0;\n\n<a name=\"Method:toString\"><scan class=comment>/*\n * Method: toString\n * Usage: gobj-&gt;toString();\n * ------------------------\n * Returns a printable representation of the object.\n */\n</scan>\n   virtual std::string toString() const = 0;\n\n<a name=\"Method:getParent\"><scan class=comment>/*\n * Method: getParent\n * Usage: GCompound *parent = gobj-&gt;getParent();\n * ---------------------------------------------\n * Returns a pointer to the GCompound that contains this object.  Every\n * GWindow is initialized to contain a single GCompound that is aligned\n * with the window.  Adding objects to the window adds them to that\n * GCompound, which means that every object you add to the window has a\n * parent.  Calling getParent on the top-level GCompound returns NULL.\n */\n</scan>\n   GCompound *getParent() const;\n\n<scan class=comment>/* Private section */</scan>\n\nprivate:\n   const GObject &amp; operator=(const GObject &amp; src) { return *this; }\n   GObject(const GObject &amp; src) { }\n\n<scan class=comment>/* Instance variables */</scan>\n\n   double x;                       <scan class=comment>/* The x coordinate of the origin    */</scan>\n   double y;                       <scan class=comment>/* The y coordinate of the origin    */</scan>\n   std::string color;              <scan class=comment>/* The color of the object           */</scan>\n   bool visible;                   <scan class=comment>/* Indicates if object is visible    */</scan>\n   GCompound *parent;              <scan class=comment>/* Pointer to the parent             */</scan>\n\nprotected:\n   GObject();\n\n   friend class GArc;\n   friend class GButton;\n   friend class GCheckBox;\n   friend class GChooser;\n   friend class GCompound;\n   friend class GImage;\n   friend class GInteractor;\n   friend class GLabel;\n   friend class GLine;\n   friend class GOval;\n   friend class GPolygon;\n   friend class GRect;\n   friend class GRoundRect;\n   friend class GSlider;\n   friend class GTextField;\n   friend class G3DRect;\n\n};\n\n<a name=\"Class:GRect\"><scan class=comment>/*\n * Class: GRect\n * ------------\n * This class represents a graphical object whose appearance consists of a\n * rectangular box.  For example, the following code adds a filled, red\n * 200x100 rectangle at the upper left corner of the graphics window:\n *\n *    int main() {\n *       GWindow gw;\n *       cout &lt;&lt; \"This program draws a red rectangle at (0, 0).\" &lt;&lt; endl;\n *       GRect *rect = new GRect(0, 0, 200, 100);\n *       rect-&gt;setFilled(true);\n *       rect-&gt;setColor(\"RED\");\n *       gw.add(rect);\n *       return 0;\n *    }\n */\n</scan>\nclass GRect : public GObject {\n\npublic:\n\n<a name=\"Constructor:GRect\"><scan class=comment>/*\n * Constructor: GRect\n * Usage: GRect *rect = new GRect(width, height);\n *        GRect *rect = new GRect(x, y, width, height);\n * ----------------------------------------------------\n * Constructs a rectangle with the specified width and height.  The first\n * form is positioned at the origin; the second at the coordinates given by\n * x and y.\n */\n</scan>\n   GRect(double width, double height);\n   GRect(double x, double y, double width, double height);\n\n<a name=\"Destructor:~GRect\"><scan class=comment>/*\n * Destructor: ~GRect\n * ------------------\n * Frees any resources maintained by this object.\n */\n</scan>\n   virtual ~GRect();\n\n<a name=\"Method:setSize\"><scan class=comment>/*\n * Method: setSize\n * Usage: rect-&gt;setSize(size);\n *        rect-&gt;setSize(width, height);\n * ------------------------------------\n * Changes the size of this rectangle to the specified width and height.\n */\n</scan>\n   void setSize(const GDimension &amp; size);\n   void setSize(double width, double height);\n\n<a name=\"Method:setBounds\"><scan class=comment>/*\n * Method: setBounds\n * Usage: rect-&gt;setBounds(rect);\n *        rect-&gt;setBounds(x, y, width, height);\n * --------------------------------------------\n * Changes the bounds of this rectangle to the specified values.\n */\n</scan>\n   void setBounds(const GRectangle &amp; size);\n   void setBounds(double x, double y, double width, double height);\n\n<a name=\"Method:setFilled\"><scan class=comment>/*\n * Method: setFilled\n * Usage: rect-&gt;setFilled(flag);\n * -----------------------------\n * Sets the fill status for the rectangle, where false is outlined and true\n * is filled.\n */\n</scan>\n   void setFilled(bool flag);\n\n<a name=\"Method:isFilled\"><scan class=comment>/*\n * Method: isFilled\n * Usage: if (rect-&gt;isFilled()) ...\n * --------------------------------\n * Returns true if the rectangle is filled.\n */\n</scan>\n   bool isFilled() const;\n\n<a name=\"Method:setFillColor\"><scan class=comment>/*\n * Method: setFillColor\n * Usage: rect-&gt;setFillColor(color);\n * ---------------------------------\n * Sets the color used to display the filled region of this rectangle.\n */\n</scan>\n   void setFillColor(std::string color);\n   void setFillColor(int rgb);\n\n<a name=\"Method:getFillColor\"><scan class=comment>/*\n * Method: getFillColor\n * Usage: string color = rect-&gt;getFillColor();\n * -------------------------------------------\n * Returns the color used to display the filled region of this rectangle. \n * If none has been set, getFillColor returns the empty string.\n */\n</scan>\n   std::string getFillColor() const;\n\n<scan class=comment>/* Prototypes for the virtual methods */</scan>\n\n   virtual GRectangle getBounds() const;\n   virtual std::string getType() const;\n   virtual std::string toString() const;\n\nprotected:\n\n<scan class=comment>/* Instance variables */</scan>\n\n   double width;           <scan class=comment>/* The width of the rectangle              */</scan>\n   double height;          <scan class=comment>/* The height of the rectangle             */</scan>\n   bool fillFlag;          <scan class=comment>/* Indicates whether the object is filled  */</scan>\n   std::string fillColor;  <scan class=comment>/* Color used to fill the object           */</scan>\n\n<scan class=comment>/* Protected methods */</scan>\n\n   GRect();\n   virtual void create(double width, double height);\n\n};\n\n<a name=\"Class:GRoundRect\"><scan class=comment>/*\n * Class: GRoundRect\n * -----------------\n * This class represents a graphical object whose appearance consists of a\n * rectangular box with rounded corners.\n */\n</scan>\nclass GRoundRect : public GRect {\n\npublic:\n\n<a name=\"Constructor:GRoundRect\"><scan class=comment>/*\n * Constructor: GRoundRect\n * Usage: GRoundRect *rect = new GRoundRect(width, height);\n *        GRoundRect *rect = new GRoundRect(width, height, corner);\n *        GRoundRect *rect = new GRoundRect(x, y, width, height);\n *        GRoundRect *rect = new GRoundRect(x, y, width, height, corner);\n * ----------------------------------------------------------------------\n * Constructs a new rectangle with the specified width and height.  If the\n * x and y parameters are specified, they are used to specify the origin. \n * The corner parameter specifies the diameter of the arc forming the\n * corner.\n */\n</scan>\n   GRoundRect(double width, double height);\n   GRoundRect(double width, double height, double corner);\n   GRoundRect(double x, double y, double width, double height);\n   GRoundRect(double x, double y, double width, double height, double corner);\n\n<a name=\"Destructor:~GRoundRect\"><scan class=comment>/*\n * Destructor: ~GRoundRect\n * -----------------------\n * Frees any resources maintained by this object.\n */\n</scan>\n   virtual ~GRoundRect();\n\n<scan class=comment>/* Prototypes for the virtual methods */</scan>\n\n   virtual std::string getType() const;\n   virtual std::string toString() const;\n\nprotected:\n\n   double corner;\n\n<scan class=comment>/* Protected methods */</scan>\n\n   void create(double width, double height, double corner);\n\n};\n\n<a name=\"Class:G3DRect\"><scan class=comment>/*\n * Class: G3DRect\n * --------------\n * This graphical object subclass represents a rectangular box that can be\n * raised or lowered.\n */\n</scan>\nclass G3DRect : public GRect {\n\npublic:\n\n<a name=\"Constructor:G3DRect\"><scan class=comment>/*\n * Constructor: G3DRect\n * Usage: G3DRect *rect = new G3DRect(width, height);\n *        G3DRect *rect = new G3DRect(width, height, raised);\n *        G3DRect *rect = new G3DRect(x, y, width, height);\n *        G3DRect *rect = new G3DRect(x, y, width, height, raised);\n * ----------------------------------------------------------------\n * Constructs a new 3D rectangle with the specified width and height.  If\n * the x and y parameters are specified, they are used to specify the\n * origin.  The raised parameter determines whether the rectangle should be\n * drawn with highlights that suggest that it is raised about the\n * background.\n */\n</scan>\n   G3DRect(double width, double height);\n   G3DRect(double width, double height, bool raised);\n   G3DRect(double x, double y, double width, double height);\n   G3DRect(double x, double y, double width, double height, bool raised);\n\n<a name=\"Destructor:~G3DRect\"><scan class=comment>/*\n * Destructor: ~G3DRect\n * --------------------\n * Frees any resources maintained by this object.\n */\n</scan>\n   virtual ~G3DRect();\n\n<a name=\"Method:setRaised\"><scan class=comment>/*\n * Method: setRaised\n * Usage: rect-&gt;setRaised(raised);\n * -------------------------------\n * Indicates whether this object appears raised.\n */\n</scan>\n   void setRaised(bool raised);\n\n<a name=\"Method:isRaised\"><scan class=comment>/*\n * Method: isRaised\n * Usage: if (rect-&gt;isRaised()) ...\n * --------------------------------\n * Returns true if this object appears raised.\n */\n</scan>\n   bool isRaised() const;\n\n<scan class=comment>/* Prototypes for the virtual methods */</scan>\n\n   virtual std::string getType() const;\n   virtual std::string toString() const;\n\nprotected:\n\n   bool raised;\n\n<scan class=comment>/* Protected methods */</scan>\n\n   void create(double width, double height, bool raised);\n\n};\n\n<a name=\"Class:GOval\"><scan class=comment>/*\n * Class: GOval\n * ------------\n * This graphical object subclass represents an oval inscribed in a\n * rectangular box.  For example, the following code displays a filled\n * green oval inscribed in the graphics window:\n *\n *    int main() {\n *       GWindow gw;\n *       cout &lt;&lt; \"This program draws a green oval filling the window.\" &lt;&lt; endl;\n *       GOval *oval = new GOval(gw.getWidth(), gw.getHeight());\n *       oval-&gt;setFilled(true);\n *       oval-&gt;setColor(\"GREEN\");\n *       gw.add(oval);\n *       return 0;\n *    }\n */\n</scan>\nclass GOval : public GObject {\n\npublic:\n\n<a name=\"Constructor:GOval\"><scan class=comment>/*\n * Constructor: GOval\n * Usage: GOval *oval = new GOval(width, height);\n *        GOval *oval = new GOval(x, y, width, height);\n * ----------------------------------------------------\n * Constructs a new oval inscribed in the specified rectangle.  The first\n * form is positioned at the origin; the second at the coordinates given by\n * x and y.\n */\n</scan>\n   GOval(double width, double height);\n   GOval(double x, double y, double width, double height);\n\n<a name=\"Destructor:~GOval\"><scan class=comment>/*\n * Destructor: ~GOval\n * ------------------\n * Frees any resources maintained by this object.\n */\n</scan>\n   virtual ~GOval();\n\n<a name=\"Method:setSize\"><scan class=comment>/*\n * Method: setSize\n * Usage: oval-&gt;setSize(size);\n *        oval-&gt;setSize(width, height);\n * ------------------------------------\n * Changes the size of the bounding rectangle to the specified width and\n * height.\n */\n</scan>\n   void setSize(const GDimension &amp; size);\n   void setSize(double width, double height);\n\n<a name=\"Method:setBounds\"><scan class=comment>/*\n * Method: setBounds\n * Usage: oval-&gt;setBounds(rect);\n *        oval-&gt;setBounds(x, y, width, height);\n * --------------------------------------------\n * Changes the bounds of the oval to the specified values.\n */\n</scan>\n   void setBounds(const GRectangle &amp; size);\n   void setBounds(double x, double y, double width, double height);\n\n<a name=\"Method:setFilled\"><scan class=comment>/*\n * Method: setFilled\n * Usage: oval-&gt;setFilled(flag);\n * -----------------------------\n * Sets the fill status for the oval, where false is outlined and true is\n * filled.\n */\n</scan>\n   void setFilled(bool flag);\n\n<a name=\"Method:isFilled\"><scan class=comment>/*\n * Method: isFilled\n * Usage: if (oval-&gt;isFilled()) ...\n * --------------------------------\n * Returns true if the oval is filled.\n */\n</scan>\n   bool isFilled() const;\n\n<a name=\"Method:setFillColor\"><scan class=comment>/*\n * Method: setFillColor\n * Usage: oval-&gt;setFillColor(color);\n * ---------------------------------\n * Sets the color used to display the filled region of this oval.\n */\n</scan>\n   void setFillColor(std::string color);\n   void setFillColor(int rgb);\n\n<a name=\"Method:getFillColor\"><scan class=comment>/*\n * Method: getFillColor\n * Usage: string color = oval-&gt;getFillColor();\n * -------------------------------------------\n * Returns the color used to display the filled region of this oval.  If\n * none has been set, getFillColor returns the empty string.\n */\n</scan>\n   std::string getFillColor() const;\n\n<scan class=comment>/* Prototypes for the virtual methods */</scan>\n\n   virtual GRectangle getBounds() const;\n   virtual bool contains(double x, double y) const;\n   virtual std::string getType() const;\n   virtual std::string toString() const;\n\nprotected:\n\n<scan class=comment>/* Instance variables */</scan>\n\n   double width;           <scan class=comment>/* The width of the bounding oval          */</scan>\n   double height;          <scan class=comment>/* The height of the bounding oval         */</scan>\n   bool fillFlag;          <scan class=comment>/* Indicates whether the object is filled  */</scan>\n   std::string fillColor;  <scan class=comment>/* Color used to fill the object           */</scan>\n\n<scan class=comment>/* Protected methods */</scan>\n\n   void create(double width, double height);\n\n};\n\n<a name=\"Class:GArc\"><scan class=comment>/*\n * Class: GArc\n * -----------\n * This graphical object subclass represents an elliptical arc.  The arc is\n * specified by the following parameters:\n *\n * \n *   The coordinates of the bounding rectangle (x,\n *       y, width, height)\n *   The angle at which the arc starts (start)\n *   The number of degrees that the arc covers (sweep)\n *\n * All angles in a GArc description are measured in degrees moving\n * counterclockwise from the +x axis.  Negative values for either start or\n * sweep indicate motion in a clockwise direction.\n */\n</scan>\nclass GArc : public GObject {\n\npublic:\n\n<a name=\"Constructor:GArc\"><scan class=comment>/*\n * Constructor: GArc\n * Usage: GArc *arc = new GArc(width, height, start, sweep);\n *        GArc *arc = new GArc(x, y, width, height, start, sweep);\n * ---------------------------------------------------------------\n * Creates a new GArc object consisting of an elliptical arc.  The first\n * form creates a GArc whose origin is the point (0, 0); the second form\n * positions the GArc at the point (x, y).\n */\n</scan>\n   GArc(double width, double height, double start, double sweep);\n   GArc(double x, double y, double width, double height,\n                            double start, double sweep);\n\n<a name=\"Method:setStartAngle\"><scan class=comment>/*\n * Method: setStartAngle\n * Usage: arc-&gt;setStartAngle(start);\n * ---------------------------------\n * Sets the starting angle for this GArc object.\n */\n</scan>\n   void setStartAngle(double start);\n\n<a name=\"Method:getStartAngle\"><scan class=comment>/*\n * Method: getStartAngle\n * Usage: double angle = arc-&gt;getStartAngle();\n * -------------------------------------------\n * Returns the starting angle for this GArc object.\n */\n</scan>\n   double getStartAngle() const;\n\n<a name=\"Method:setSweepAngle\"><scan class=comment>/*\n * Method: setSweepAngle\n * Usage: arc-&gt;setSweepAngle(start);\n * ---------------------------------\n * Sets the sweep angle for this GArc object.\n */\n</scan>\n   void setSweepAngle(double start);\n\n<a name=\"Method:getSweepAngle\"><scan class=comment>/*\n * Method: getSweepAngle\n * Usage: double angle = arc-&gt;getSweepAngle();\n * -------------------------------------------\n * Returns the sweep angle for this GArc object.\n */\n</scan>\n   double getSweepAngle() const;\n\n<a name=\"Method:getStartPoint\"><scan class=comment>/*\n * Method: getStartPoint\n * Usage: GPoint pt = arc-&gt;getStartPoint();\n * ----------------------------------------\n * Returns the point at which the arc starts.\n */\n</scan>\n   GPoint getStartPoint() const;\n\n<a name=\"Method:getEndPoint\"><scan class=comment>/*\n * Method: getEndPoint\n * Usage: GPoint pt = arc-&gt;getEndPoint();\n * --------------------------------------\n * Returns the point at which the arc ends.\n */\n</scan>\n   GPoint getEndPoint() const;\n\n<a name=\"Method:setFrameRectangle\"><scan class=comment>/*\n * Method: setFrameRectangle\n * Usage: arc-&gt;setFrameRectangle(rect);\n *        arc-&gt;setFrameRectangle(x, y, width, height);\n * ---------------------------------------------------\n * Changes the boundaries of the rectangle used to frame the arc.\n */\n</scan>\n   void setFrameRectangle(const GRectangle &amp; rect);\n   void setFrameRectangle(double x, double y, double width, double height);\n\n<a name=\"Method:getFrameRectangle\"><scan class=comment>/*\n * Method: getFrameRectangle\n * Usage: GRectangle rect = arc-&gt;getFrameRectangle();\n * --------------------------------------------------\n * Returns the boundaries of the rectangle used to frame the arc.\n */\n</scan>\n   GRectangle getFrameRectangle() const;\n\n<a name=\"Method:setFilled\"><scan class=comment>/*\n * Method: setFilled\n * Usage: arc-&gt;setFilled(flag);\n * ----------------------------\n * Sets the fill status for the arc, where false is outlined and true is\n * filled.  If a GArc is unfilled, the figure consists only of the arc\n * itself.  If a GArc is filled, the figure consists of the pie-shaped\n * wedge formed by connecting the endpoints of the arc to the center.  As\n * an example, the following program draws a 270-degree arc starting at 45\n * degrees, filled in yellow, much like the character in the PacMan video\n * game:\n *\n *    int main() {\n *       GWindow gw;\n *       cout &lt;&lt; \"This program draws the PacMan character.\" &lt;&lt; endl;\n *       double cx = gw.getWidth() / 2;\n *       double cy = gw.getHeight() / 2;\n *       double r = 25;\n *       GArc *pacman = new GArc(cx - r, cy - r, 2 * r, 2 * r, 45, 270);\n *       pacman-&gt;setFilled(true);\n *       pacman-&gt;setFillColor(\"YELLOW\");\n *       gw.add(pacman);\n *       return 0;\n *    }\n */\n</scan>\n   void setFilled(bool flag);\n\n<a name=\"Method:isFilled\"><scan class=comment>/*\n * Method: isFilled\n * Usage: if (arc-&gt;isFilled()) ...\n * -------------------------------\n * Returns true if the arc is filled.\n */\n</scan>\n   bool isFilled() const;\n\n<a name=\"Method:setFillColor\"><scan class=comment>/*\n * Method: setFillColor\n * Usage: arc-&gt;setFillColor(color);\n * --------------------------------\n * Sets the color used to display the filled region of this arc.  Colors\n * are specified as strings as described in the notes for the setColor\n * method.\n */\n</scan>\n   void setFillColor(std::string color);\n   void setFillColor(int rgb);\n\n<a name=\"Method:getFillColor\"><scan class=comment>/*\n * Method: getFillColor\n * Usage: string color = arc-&gt;getFillColor();\n * ------------------------------------------\n * Returns the color used to display the filled region of this arc.  If\n * none has been set, getFillColor returns the empty string.\n */\n</scan>\n   std::string getFillColor() const;\n\n<scan class=comment>/* Prototypes for the virtual methods */</scan>\n\n   virtual GRectangle getBounds() const;\n   virtual bool contains(double x, double y) const;\n   virtual std::string getType() const;\n   virtual std::string toString() const;\n\nprivate:\n\n   GPoint getArcPoint(double theta) const;\n   bool containsAngle(double theta) const;\n   void create(double width, double height, double start, double sweep);\n\n<scan class=comment>/* Instance variables */</scan>\n\n   double start;                   <scan class=comment>/* Starting angle of the arc       */</scan>\n   double sweep;                   <scan class=comment>/* How many degrees the arc runs   */</scan>\n   double frameWidth;              <scan class=comment>/* The width of the bounding box   */</scan>\n   double frameHeight;             <scan class=comment>/* The height of the bounding box  */</scan>\n   std::string fillColor;          <scan class=comment>/* The color of the interior       */</scan>\n   bool fillFlag;                  <scan class=comment>/* Indicates if the arc is filled  */</scan>\n\n};\n\n<a name=\"Class:GCompound\"><scan class=comment>/*\n * Class: GCompound\n * ----------------\n * This graphical object subclass consists of a collection of other\n * graphical objects.  Once assembled, the internal objects can be\n * manipulated as a unit.  The GCompound keeps track of its own position,\n * and all items within it are drawn relative to that location.\n */\n</scan>\nclass GCompound : public GObject {\n\npublic:\n\n<a name=\"Constructor:GCompound\"><scan class=comment>/*\n * Constructor: GCompound\n * Usage: GCompound *comp = new GCompound();\n * -----------------------------------------\n * Creates a GCompound object with no internal components.\n */\n</scan>\n   GCompound();\n\n<a name=\"Method:add\"><scan class=comment>/*\n * Method: add\n * Usage: comp-&gt;add(gobj);\n *        comp-&gt;add(gobj, x, y);\n * -----------------------------\n * Adds a new graphical object to the GCompound.  The second form moves the\n * object to the point (x, y) first.\n */\n</scan>\n   void add(GObject *gobj);\n   void add(GObject *gobj, double x, double y);\n\n<a name=\"Method:remove\"><scan class=comment>/*\n * Method: remove\n * Usage: comp-&gt;remove(gobj);\n * --------------------------\n * Removes the specified object from the GCompound.\n */\n</scan>\n   void remove(GObject *gobj);\n\n<a name=\"Method:removeAll\"><scan class=comment>/*\n * Method: removeAll\n * Usage: comp-&gt;removeAll();\n * -------------------------\n * Removes all graphical objects from the GCompound.\n */\n</scan>\n   void removeAll();\n\n<a name=\"Method:getElementCount\"><scan class=comment>/*\n * Method: getElementCount\n * Usage: int n = comp-&gt;getElementCount();\n * ---------------------------------------\n * Returns the number of graphical objects stored in the GCompound.\n */\n</scan>\n   int getElementCount();\n\n<a name=\"Method:getElement\"><scan class=comment>/*\n * Method: getElement\n * Usage: GObject *gobj = comp-&gt;getElement(index);\n * -----------------------------------------------\n * Returns a pointer to the graphical object at the specified index,\n * numbering from back to front in the the z dimension.\n */\n</scan>\n   GObject *getElement(int index);\n\n<scan class=comment>/* Prototypes for the virtual methods */</scan>\n\n   virtual GRectangle getBounds() const;\n   virtual bool contains(double x, double y) const;\n   virtual std::string getType() const;\n   virtual std::string toString() const;\n\nprivate:\n   void sendForward(GObject *gobj);\n   void sendToFront(GObject *gobj);\n   void sendBackward(GObject *gobj);\n   void sendToBack(GObject *gobj);\n   int findGObject(GObject *gobj);\n   void removeAt(int index);\n\n<scan class=comment>/* Instance variables */</scan>\n\n   Vector&lt;GObject *&gt; contents;\n\n<scan class=comment>/* Friend declarations */</scan>\n\n   friend class GObject;\n\n};\n\n<a name=\"Class:GImage\"><scan class=comment>/*\n * Class: GImage\n * -------------\n * This graphical object subclass represents an image from a file.  For\n * example, the following code displays a GImage containing the Stanford\n * tree at the center of the window, assuming that the image file\n * StanfordTree.png exists, either in the current directory or an images\n * subdirectory:\n *\n *    int main() {\n *       GWindow gw;\n *       cout &lt;&lt; \"This program draws the Stanford tree.\" &lt;&lt; endl;\n *       GImage *tree = new GImage(\"StanfordTree.png\");\n *       double x = (gw.getWidth() - tree-&gt;getWidth()) / 2;\n *       double y = (gw.getHeight() - tree-&gt;getHeight()) / 2;\n *       gw.add(tree, x, y);\n *       return 0;\n *    }\n */\n</scan>\nclass GImage : public GObject {\n\npublic:\n\n<a name=\"Constructor:GImage\"><scan class=comment>/*\n * Constructor: GImage\n * Usage: GImage *image = new GImage(filename);\n *        GImage *image = new GImage(filename, x, y);\n * --------------------------------------------------\n * Constructs a new image by loading the image from the specified file,\n * which is either in the current directory or a subdirectory named images.\n * By default, the upper left corner of the image appears at the origin;\n * the second form automatically sets the location to the point (x, y).\n */\n</scan>\n   GImage(std::string filename);\n   GImage(std::string filename, double x, double y);\n\n<scan class=comment>/* Prototypes for the virtual methods */</scan>\n\n   virtual GRectangle getBounds() const;\n   virtual std::string getType() const;\n   virtual std::string toString() const;\n\nprivate:\n   std::string filename;\n   double width;\n   double height;\n\n   void create(std::string filename);\n\n};\n\n<a name=\"Class:GLabel\"><scan class=comment>/*\n * Class: GLabel\n * -------------\n * This graphical object subclass represents a text string.  For example,\n * the following code adds a GLabel containing the string \"hello, world\" to\n * the center of the window:\n *\n *    int main() {\n *       GWindow gw;\n *       cout &lt;&lt; \"This program draws the 'hello, world' message.\" &lt;&lt; endl;\n *       GLabel *label = new GLabel(\"hello, world\");\n *       label-&gt;setFont(\"SansSerif-18\");\n *       double x = (gw.getWidth() - label-&gt;getWidth()) / 2;\n *       double y = (gw.getHeight() + label-&gt;getFontAscent()) / 2;\n *       gw.add(label, x, y);\n *       return 0;\n *    }\n *\n * Controlling the appearance and positioning of a GLabel depends on\n * understanding the following terms:\n *\n * \n *   The baseline is the horizontal line on which the\n *       characters rest.\n *   The origin is the point on the baseline at which\n *       the label begins.\n *   The height is the distance that separate two\n *       successive lines.\n *   The ascent is the maximum distance a character\n *       in this font extends above the baseline.\n *   The descent is the maximum distance a character\n *       in this font extends below the baseline.\n */\n</scan>\nclass GLabel : public GObject {\n\npublic:\n\n<a name=\"Constructor:GLabel\"><scan class=comment>/*\n * Constructor: GLabel\n * Usage: GLabel *label = new GLabel(str);\n *        GLabel *label = new GLabel(str, x, y);\n * ---------------------------------------------\n * Creates a GLabel object containing the specified string.  By default,\n * the baseline of the first character appears at the origin; the second\n * form automatically resets the location of the GLabel to the point (x,\n * y).\n */\n</scan>\n   GLabel(std::string str);\n   GLabel(std::string str, double x, double y);\n\n<a name=\"Method:setFont\"><scan class=comment>/*\n * Method: setFont\n * Usage: label-&gt;setFont(font);\n * ----------------------------\n * Changes the font used to display the GLabel as specified by the string\n * font, which has the following format:\n *\n *    family-style-size\n *\n * where both style and size are optional.  If any of these elements are\n * missing or specified as an asterisk, the existing value is retained.\n */\n</scan>\n   void setFont(std::string font);\n\n<a name=\"Method:getFont\"><scan class=comment>/*\n * Method: getFont\n * Usage: string font = label-&gt;getFont();\n * --------------------------------------\n * Returns the current font for the GLabel.\n */\n</scan>\n   std::string getFont() const;\n\n<a name=\"Method:setLabel\"><scan class=comment>/*\n * Method: setLabel\n * Usage: label-&gt;setLabel(str);\n * ----------------------------\n * Changes the string stored within the GLabel object, so that a new text\n * string appears on the display.\n */\n</scan>\n   void setLabel(std::string str);\n\n<a name=\"Method:getLabel\"><scan class=comment>/*\n * Method: getLabel\n * Usage: string str = label-&gt;getLabel();\n * --------------------------------------\n * Returns the string displayed by this object.\n */\n</scan>\n   std::string getLabel() const;\n\n<a name=\"Method:getFontAscent\"><scan class=comment>/*\n * Method: getFontAscent\n * Usage: double ascent = label-&gt;getFontAscent();\n * ----------------------------------------------\n * Returns the maximum distance strings in this font extend above the\n * baseline.\n */\n</scan>\n   double getFontAscent() const;\n\n<a name=\"Method:getFontDescent\"><scan class=comment>/*\n * Method: getFontDescent\n * Usage: double descent = label-&gt;getFontDescent();\n * ------------------------------------------------\n * Returns the maximum distance strings in this font descend below the\n * baseline.\n */\n</scan>\n   double getFontDescent() const;\n\n<scan class=comment>/* Prototypes for the virtual methods */</scan>\n\n   virtual GRectangle getBounds() const;\n   virtual std::string getType() const;\n   virtual std::string toString() const;\n\nprivate:\n\n<scan class=comment>/* Instance variables */</scan>\n\n   std::string str;                <scan class=comment>/* The string displayed by the label */</scan>\n   std::string font;               <scan class=comment>/* The font string of the label      */</scan>\n   double width;                   <scan class=comment>/* Width of the bounding box         */</scan>\n   double height;                  <scan class=comment>/* Height of the bounding box        */</scan>\n   double ascent;                  <scan class=comment>/* Font ascent                       */</scan>\n   double descent;                 <scan class=comment>/* Font descent                      */</scan>\n\n   void create(const std::string &amp; str);\n\n};\n\n<a name=\"Class:GLine\"><scan class=comment>/*\n * Class: GLine\n * ------------\n * This graphical object subclass represents a line segment.  For example,\n * the following code adds lines that mark the diagonals of the graphics\n * window:\n *\n *    int main() {\n *       GWindow gw;\n *       cout &lt;&lt; \"This program draws the diagonals on the window.\" &lt;&lt; endl;\n *       gw.add(new GLine(0, 0, gw.getWidth(), gw.getHeight()));\n *       gw.add(new GLine(0, gw.getHeight(), gw.getWidth(), 0));\n *       return 0;\n *    }\n */\n</scan>\nclass GLine : public GObject {\n\npublic:\n\n<a name=\"Constructor:GLine\"><scan class=comment>/*\n * Constructor: GLine\n * Usage: GLine *gline = new GLine(x0, y0, x1, y1);\n * ------------------------------------------------\n * Constructs a line segment from its endpoints.  The point (x0, y0)\n * defines the start of the line and the point (x1, y1) defines the end.\n */\n</scan>\n   GLine(double x0, double y0, double x1, double y1);\n\n<a name=\"Method:setStartPoint\"><scan class=comment>/*\n * Method: setStartPoint\n * Usage: line-&gt;setStartPoint(x, y);\n * ---------------------------------\n * Sets the initial point in the line to (x, y), leaving the end point\n * unchanged.  This method is therefore different from setLocation, which\n * moves both components of the line segment.\n */\n</scan>\n   void setStartPoint(double x, double y);\n\n<a name=\"Method:getStartPoint\"><scan class=comment>/*\n * Method: getStartPoint\n * Usage: GPoint pt = line-&gt;getStartPoint();\n * -----------------------------------------\n * Returns the point at which the line starts.\n */\n</scan>\n   GPoint getStartPoint() const;\n\n<a name=\"Method:setEndPoint\"><scan class=comment>/*\n * Method: setEndPoint\n * Usage: line-&gt;setEndPoint(x, y);\n * -------------------------------\n * Sets the end point in the line to (x, y), leaving the start point\n * unchanged.  This method is therefore different from setLocation, which\n * moves both components of the line segment.\n */\n</scan>\n   void setEndPoint(double x, double y);\n\n<a name=\"Method:getEndPoint\"><scan class=comment>/*\n * Method: getEndPoint\n * Usage: GPoint pt = line-&gt;getEndPoint();\n * ---------------------------------------\n * Returns the point at which the line ends.\n */\n</scan>\n   GPoint getEndPoint() const;\n\n<scan class=comment>/* Prototypes for the virtual methods */</scan>\n\n   virtual GRectangle getBounds() const;\n   virtual bool contains(double x, double y) const;\n   virtual std::string getType() const;\n   virtual std::string toString() const;\n\nprotected:\n\n<scan class=comment>/* Instance variables */</scan>\n\n   double dx;                   <scan class=comment>/* The x displacement of the line */</scan>\n   double dy;                   <scan class=comment>/* The y displacement of the line */</scan>\n\n};\n\n<a name=\"Class:GPolygon\"><scan class=comment>/*\n * Class: GPolygon\n * ---------------\n * This graphical object subclass represents a polygon bounded by line\n * segments.  The GPolygon constructor creates an empty polygon.  To\n * complete the figure, you need to add vertices to the polygon using the\n * methods addVertex, addEdge, and addPolarEdge.  As an example, the\n * following code adds a filled red octagon to the center of the window:\n *\n *    int main() {\n *       GWindow gw;\n *       cout &lt;&lt; \"This program draws a red octagon.\" &lt;&lt; endl;\n *       double edge = 75;\n *       GPolygon *stopSign = new GPolygon();\n *       stopSign-&gt;addVertex(-edge / 2, edge / 2 + edge / sqrt(2.0));\n *       for (int i = 0; i &lt; 8; i++) {\n *          stopSign-&gt;addPolarEdge(edge, 45 * i);\n *       }\n *       stopSign-&gt;setFilled(true);\n *       stopSign-&gt;setColor(\"RED\");\n *       gw.add(stopSign, gw.getWidth() / 2, gw.getHeight() / 2);\n *       return 0;\n *    }\n */\n</scan>\nclass GPolygon : public GObject {\n\npublic:\n\n<a name=\"Constructor:GPolygon\"><scan class=comment>/*\n * Constructor: GPolygon\n * Usage: GPolygon *poly = new GPolygon();\n * ---------------------------------------\n * Constructs a new empty polygon at the origin.\n */\n</scan>\n   GPolygon();\n\n<a name=\"Method:addVertex\"><scan class=comment>/*\n * Method: addVertex\n * Usage: poly-&gt;addVertex(x, y);\n * -----------------------------\n * Adds a vertex at (x, y) relative to the polygon origin.\n */\n</scan>\n   void addVertex(double x, double y);\n\n<a name=\"Method:addEdge\"><scan class=comment>/*\n * Method: addEdge\n * Usage: poly-&gt;addEdge(dx, dy);\n * -----------------------------\n * Adds an edge to the polygon whose components are given by the\n * displacements dx and dy from the last vertex.\n */\n</scan>\n   void addEdge(double dx, double dy);\n\n<a name=\"Method:addPolarEdge\"><scan class=comment>/*\n * Method: addPolarEdge\n * Usage: poly-&gt;addPolarEdge(r, theta);\n * ------------------------------------\n * Adds an edge to the polygon specified in polar coordinates.  The length\n * of the edge is given by r, and the edge extends in direction theta,\n * measured in degrees counterclockwise from the +x axis.\n */\n</scan>\n   void addPolarEdge(double r, double theta);\n\n<a name=\"Method:getVertices\"><scan class=comment>/*\n * Method: getVertices\n * Usage: Vector&lt;GPoint&gt; vec = poly-&gt;getVertices();\n * ------------------------------------------------\n * Returns a vector of the points in the polygon.\n */\n</scan>\n   Vector&lt;GPoint&gt; getVertices() const;\n\n<a name=\"Method:setFilled\"><scan class=comment>/*\n * Method: setFilled\n * Usage: poly-&gt;setFilled(flag);\n * -----------------------------\n * Sets the fill status for the polygon, where false is outlined and true\n * is filled.\n */\n</scan>\n   void setFilled(bool flag);\n\n<a name=\"Method:isFilled\"><scan class=comment>/*\n * Method: isFilled\n * Usage: if (poly-&gt;isFilled()) ...\n * --------------------------------\n * Returns true if the polygon is filled.\n */\n</scan>\n   bool isFilled() const;\n\n<a name=\"Method:setFillColor\"><scan class=comment>/*\n * Method: setFillColor\n * Usage: poly-&gt;setFillColor(color);\n * ---------------------------------\n * Sets the color used to display the filled region of this polygon.\n */\n</scan>\n   void setFillColor(std::string color);\n   void setFillColor(int rgb);\n\n<a name=\"Method:getFillColor\"><scan class=comment>/*\n * Method: getFillColor\n * Usage: string color = poly-&gt;getFillColor();\n * -------------------------------------------\n * Returns the color used to display the filled region of this polygon.  If\n * none has been set, getFillColor returns the empty string.\n */\n</scan>\n   std::string getFillColor() const;\n\n<scan class=comment>/* Prototypes for the virtual methods */</scan>\n\n   virtual GRectangle getBounds() const;\n   virtual bool contains(double x, double y) const;\n   virtual std::string getType() const;\n   virtual std::string toString() const;\n\nprivate:\n\n<scan class=comment>/* Instance variables */</scan>\n\n   Vector&lt;GPoint&gt; vertices;        <scan class=comment>/* The vertices of the polygon   */</scan>\n   double cx;                      <scan class=comment>/* The most recent x coordinate  */</scan>\n   double cy;                      <scan class=comment>/* The most recent y coordinate  */</scan>\n   std::string fillColor;          <scan class=comment>/* The color of the interior     */</scan>\n   bool fillFlag;                  <scan class=comment>/* Indicates if object is filled */</scan>\n\n};\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/docs/_old/graph-h.html",
    "content": "<html>\n<head>\n<title>../include/graph.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: graph.h\n * -------------\n * This file exports a parameterized Graph class used to represent graphs,\n * which consist of a set of nodes and a set of arcs.\n */\n</scan>\n#ifndef _graph_h\n#define _graph_h\n\n#include &lt;string&gt;\n#include \"map.h\"\n#include \"set.h\"\n#include \"tokenscanner.h\"\n\n<a name=\"Class:Graph<NodeType,ArcType>\"><scan class=comment>/*\n * Class: Graph&lt;NodeType,ArcType&gt;\n * ------------------------------\n * This class represents a graph with the specified node and arc types. \n * The NodeType and ArcType parameters indicate the structure type or class\n * used for nodes and arcs, respectively.  These types can contain any\n * fields or methods required by the client, but must contain the following\n * fields required by the Graph package itself:\n *\n * The NodeType definition must include:\n *   A string field called name\n *   A Set&lt;ArcType *&gt; field called arcs\n *\n * The ArcType definition must include:\n *   A NodeType * field called start\n *   A NodeType * field called finish\n */\n</scan>\ntemplate &lt;typename NodeType,typename ArcType&gt;\nclass Graph {\n\npublic:\n\n<a name=\"Constructor:Graph\"><scan class=comment>/*\n * Constructor: Graph\n * Usage: Graph&lt;NodeType,ArcType&gt; g;\n * ---------------------------------\n * Creates an empty Graph object.\n */\n</scan>\n   Graph();\n\n<a name=\"Destructor:~Graph\"><scan class=comment>/*\n * Destructor: ~Graph\n * ------------------\n * Frees the internal storage allocated to represent the graph.\n */\n</scan>\n   virtual ~Graph();\n\n<a name=\"Method:size\"><scan class=comment>/*\n * Method: size\n * Usage: int size = g.size();\n * ---------------------------\n * Returns the number of nodes in the graph.\n */\n</scan>\n   int size() const;\n\n<a name=\"Method:isEmpty\"><scan class=comment>/*\n * Method: isEmpty\n * Usage: if (g.isEmpty()) ...\n * ---------------------------\n * Returns true if the graph is empty.\n */\n</scan>\n   bool isEmpty() const;\n\n<a name=\"Method:clear\"><scan class=comment>/*\n * Method: clear\n * Usage: g.clear();\n * -----------------\n * Reinitializes the graph to be empty, freeing any heap storage.\n */\n</scan>\n   void clear();\n\n<a name=\"Method:addNode\"><scan class=comment>/*\n * Method: addNode\n * Usage: NodeType *node = g.addNode(name);\n *        NodeType *node = g.addNode(node);\n * ----------------------------------------\n * Adds a node to the graph.  The first version of this method creates a\n * new node of the appropriate type and initializes its fields; the second\n * assumes that the client has already created the node and simply adds it\n * to the graph.  Both versions of this method return a pointer to the\n * node.\n */\n</scan>\n   NodeType *addNode(std::string name);\n   NodeType *addNode(NodeType *node);\n\n<a name=\"Method:removeNode\"><scan class=comment>/*\n * Method: removeNode\n * Usage: g.removeNode(name);\n *        g.removeNode(node);\n * --------------------------\n * Removes a node from the graph, where the node can be specified either by\n * its name or as a pointer value.  Removing a node also removes all arcs\n * that contain that node.\n */\n</scan>\n   void removeNode(std::string name);\n   void removeNode(NodeType *node);\n\n<a name=\"Method:getNode\"><scan class=comment>/*\n * Method: getNode\n * Usage: NodeType *node = g.getNode(name);\n * ----------------------------------------\n * Looks up a node in the name table attached to the graph and returns a\n * pointer to that node.  If no node with the specified name exists,\n * getNode returns NULL.\n */\n</scan>\n   NodeType *getNode(std::string name) const;\n\n<a name=\"Method:addArc\"><scan class=comment>/*\n * Method: addArc\n * Usage: g.addArc(s1, s2);\n *        g.addArc(n1, n2);\n *        g.addArc(arc);\n * ---------------------\n * Adds an arc to the graph.  The endpoints of the arc can be specified\n * either as strings indicating the names of the nodes or as pointers to\n * the node structures.  Alternatively, the client can create the arc\n * structure explicitly and pass that pointer to the addArc method.  All\n * three of these versions return a pointer to the arc in case the client\n * needs to capture this value.\n */\n</scan>\n   ArcType *addArc(std::string s1, std::string s2);\n   ArcType *addArc(NodeType *n1, NodeType *n2);\n   ArcType *addArc(ArcType *arc);\n\n<a name=\"Method:removeArc\"><scan class=comment>/*\n * Method: removeArc\n * Usage: g.removeArc(s1, s2);\n *        g.removeArc(n1, n2);\n *        g.removeArc(arc);\n * ------------------------\n * Removes an arc from the graph, where the arc can be specified in any of\n * three ways: by the names of its endpoints, by the node pointers at its\n * endpoints, or as an arc pointer.  If more than one arc connects the\n * specified endpoints, all of them are removed.\n */\n</scan>\n   void removeArc(std::string s1, std::string s2);\n   void removeArc(NodeType *n1, NodeType *n2);\n   void removeArc(ArcType *arc);\n\n<a name=\"Method:isConnected\"><scan class=comment>/*\n * Method: isConnected\n * Usage: if (g.isConnected(n1, n2)) ...\n *        if (g.isConnected(s1, s2)) ...\n * -------------------------------------\n * Returns true if the graph contains an arc from n1 to n2.  As in the\n * addArc method, nodes can be specified either as node pointers or by\n * name.\n */\n</scan>\n   bool isConnected(NodeType *n1, NodeType *n2) const;\n   bool isConnected(std::string s1, std::string s2) const;\n\n<a name=\"Method:getNodeSet\"><scan class=comment>/*\n * Method: getNodeSet\n * Usage: foreach (NodeType *node in g.getNodeSet()) ...\n * -----------------------------------------------------\n * Returns the set of all nodes in the graph.\n */\n</scan>\n   const Set&lt;NodeType *&gt; &amp; getNodeSet() const;\n\n<a name=\"Method:getArcSet\"><scan class=comment>/*\n * Method: getArcSet\n * Usage: foreach (ArcType *arc in g.getArcSet()) ...\n *        foreach (ArcType *arc in g.getArcSet(node)) ...\n *        foreach (ArcType *arc in g.getArcSet(name)) ...\n * ------------------------------------------------------\n * Returns the set of all arcs in the graph or, in the second and third\n * forms, the arcs that start at the specified node, which can be indicated\n * either as a pointer or by name.\n */\n</scan>\n   const Set&lt;ArcType *&gt; &amp; getArcSet() const;\n   const Set&lt;ArcType *&gt; &amp; getArcSet(NodeType *node) const;\n   const Set&lt;ArcType *&gt; &amp; getArcSet(std::string name) const;\n\n<a name=\"Method:getNeighbors\"><scan class=comment>/*\n * Method: getNeighbors\n * Usage: foreach (NodeType *node in g.getNeighbors(node)) ...\n *        foreach (NodeType *node in g.getNeighbors(name)) ...\n * -----------------------------------------------------------\n * Returns the set of nodes that are neighbors of the specified node, which\n * can be indicated either as a pointer or by name.\n */\n</scan>\n   const Set&lt;NodeType *&gt; getNeighbors(NodeType *node) const;\n   const Set&lt;NodeType *&gt; getNeighbors(std::string node) const;\n\n<a name=\"Method:toString\"><scan class=comment>/*\n * Method: toString\n * Usage: string str = g.toString();\n * ---------------------------------\n * Converts the graph to a printable string representation.\n */\n</scan>\n   std::string toString();\n\n<a name=\"Friend method:writeNodeData\"><scan class=comment>/*\n * Friend method: writeNodeData\n * Usage: writeNodeData(os, NodeType *node);\n * -----------------------------------------\n * Writes the data for the node to the output stream.  The default\n * implementation of this method is empty.  Clients that want to store\n * other fields from the node must override this method so that it writes\n * that data in a form that scanNodeData can read.\n */\n</scan>\n   virtual void writeNodeData(std::ostream &amp; os, NodeType *node) const {\n      <scan class=comment>/* Empty */</scan>\n   }\n\n<a name=\"Friend method:writeArcData\"><scan class=comment>/*\n * Friend method: writeArcData\n * Usage: writeArcData(os, ArcType *arc);\n * --------------------------------------\n * Writes the data for the arc to the output stream.  The default\n * implementation of this method is empty.  Clients that want to store\n * other fields from the arc must override this method so that it writes\n * that data in a form that scanArcData can read.\n */\n</scan>\n   virtual void writeArcData(std::ostream &amp; os, ArcType *arc) const {\n      <scan class=comment>/* Empty */</scan>\n   }\n\n<a name=\"Friend method:scanGraphEntry\"><scan class=comment>/*\n * Friend method: scanGraphEntry\n * Usage: while (g.scanGraphEntry(scanner)) { }\n * --------------------------------------------\n * This method reads one \"entry\" for the graph, which is either a node\n * description or an arc description.  The scanGraphEntry method returns\n * true if it reads an entry, and false at the end of file or at text that\n * cannot be recognized as a graph entry.\n *\n * Node entries consist of the name of a node (which may be quoted if it\n * contains special characters), optionally followed by data for the node. \n * Arc descriptions have one of the following forms:\n *\n *    n1 -&gt; n2\n *    n1 - n2\n *\n * either of which can be followed by data for the arc.  The first form\n * creates a single directed arc; the second creates two arcs, one in each\n * direction.\n *\n * Clients who want to read node or arc data must override the empty\n * versions of scanNodeData and scanArcData included in this interface.\n */\n</scan>\n   virtual bool scanGraphEntry(TokenScanner &amp; scanner);\n\n<a name=\"Friend method:scanNodeData\"><scan class=comment>/*\n * Friend method: scanNodeData\n * Usage: scanNodeData(scanner, NodeType *node);\n * ---------------------------------------------\n * Reads the data for the specified node from the scanner.  The default\n * implementation of this method is empty.  Clients that want to initialize\n * other fields in the node from the token stream must override this\n * method.\n */\n</scan>\n   virtual void scanNodeData(TokenScanner &amp; scanner, NodeType *node) {\n      <scan class=comment>/* Empty */</scan>\n   }\n\n<a name=\"Friend method:scanArcData\"><scan class=comment>/*\n * Friend method: scanArcData\n * Usage: scanArcData(scanner, ArcType *forward, ArcType *backward);\n * -----------------------------------------------------------------\n * Reads the data for an arc from the scanner.  The forward argument points\n * to the arc in the forward direction.  If the arc is undirected, backward\n * points to the reverse arc; for directed arcs, the backward pointer is\n * NULL.  The default implementation of this method is empty.  Clients that\n * want to initialize other fields in the arc must override this method so\n * that it initializes one or both arc, as appropriate.\n */\n</scan>\n   virtual void scanArcData(TokenScanner &amp; scanner, ArcType *forward,\n                                                    ArcType *backward) {\n      <scan class=comment>/* Empty */</scan>\n   }\n\n<scan class=comment>/* Private section */</scan>\n\n<scan class=comment>/**********************************************************************/</scan>\n<scan class=comment>/* Note: Everything below this point in the file is logically part    */</scan>\n<scan class=comment>/* of the implementation and should not be of interest to clients.    */</scan>\n<scan class=comment>/**********************************************************************/</scan>\n\n<a name=\"Private class:GraphComparator\"><scan class=comment>/*\n * Private class: GraphComparator\n * ------------------------------\n * This template class establishes the ordering for nodes and arcs.  Nodes\n * are processed in alphabetical order by node name; arcs are compared in\n * much the same way, looking first at the start node and then continuing\n * on to look at the finish node if the start nodes match.  These\n * functions, however, indicate equality only if the arguments are\n * identical, in the sense that they are at the same address.  If two\n * distinct arcs, for example, connect the same pair of nodes (which is\n * perfectly legal in the graph abstraction and can be used, for example,\n * to represent multiple modes of travel between two nodes), those arcs are\n * not the same.\n */\n</scan>\n   class GraphComparator {\n   public:\n\n      bool operator()(NodeType *n1, NodeType *n2) {\n         return compare(n1, n2) &lt; 0;\n      }\n\n      bool operator()(ArcType *a1, ArcType *a2) {\n         return compare(a1, a2) &lt; 0;\n      }\n\n   };\n\nprivate:\n\n<scan class=comment>/* Instance variables */</scan>\n\n   Set&lt;NodeType *&gt; nodes;                 <scan class=comment>/* The set of nodes in the graph */</scan>\n   Set&lt;ArcType *&gt; arcs;                   <scan class=comment>/* The set of arcs in the graph  */</scan>\n   Map&lt;std::string, NodeType *&gt; nodeMap;  <scan class=comment>/* A map from names to nodes     */</scan>\n   GraphComparator comparator;            <scan class=comment>/* The comparator for this graph */</scan>\n\n<a name=\"Functions:operator=, copy constructor\"><scan class=comment>/*\n * Functions: operator=, copy constructor\n * --------------------------------------\n * These functions are part of the public interface of the class but are\n * defined here to avoid adding confusion to the Graph class.\n */\n</scan>\npublic:\n\n   Graph &amp; operator=(const Graph &amp; src);\n   Graph(const Graph &amp; src);\n\n   static int compare(NodeType *n1, NodeType *n2) {\n      if (n1 == n2) return 0;\n      if (n1-&gt;name &lt; n2-&gt;name) return -1;\n      if (n1-&gt;name &gt; n2-&gt;name) return +1;\n      return (n1 &lt; n2) ? -1 : +1;\n   }\n\n   static int compare(ArcType *a1, ArcType *a2) {\n      if (a1 == a2) return 0;\n      NodeType *n1 = a1-&gt;start;\n      NodeType *n2 = a2-&gt;start;\n      if (n1 != n2) return compare(n1, n2);\n      n1 = a1-&gt;finish;\n      n2 = a2-&gt;finish;\n      if (n1 != n2) return compare(n1, n2);\n      return (a1 &lt; a2) ? -1 : +1;\n   }\n\nprivate:\n\n   void deepCopy(const Graph &amp; src);\n   NodeType *getExistingNode(std::string name) const;\n   NodeType *scanNode(TokenScanner &amp; scanner);\n\n};\n\nextern void error(std::string msg);\n\n<a name=\"Implementation notes:Graph constructor\"><scan class=comment>/*\n * Implementation notes: Graph constructor\n * ---------------------------------------\n * Even though the body of the Graph constructor is empty, important work\n * is done by the initializers, which ensure that the nodes and arcs set\n * are given the correct comparison functions.\n */\n</scan>\ntemplate &lt;typename NodeType,typename ArcType&gt;\nGraph&lt;NodeType,ArcType&gt;::Graph() {\n   comparator = GraphComparator();\n   nodes = Set&lt;NodeType *&gt;(comparator);\n   arcs = Set&lt;ArcType *&gt;(comparator);\n}\n\n<a name=\"Implementation notes:Graph destructor\"><scan class=comment>/*\n * Implementation notes: Graph destructor\n * --------------------------------------\n * The destructor must free all heap storage used by this graph to\n * represent the nodes and arcs.  The clear metho must also reclaim this\n * memory, which means that the destructor can simply call clear to do the\n * work.\n */\n</scan>\ntemplate &lt;typename NodeType,typename ArcType&gt;\nGraph&lt;NodeType,ArcType&gt;::~Graph() {\n   clear();\n}\n\n<a name=\"Implementation notes:size, isEmpty\"><scan class=comment>/*\n * Implementation notes: size, isEmpty\n * -----------------------------------\n * These methods are defined in terms of the node set, so the\n * implementation simply forwards the request there.  Note that it is\n * impossible for a graph to have arcs if it has no nodes.\n */\n</scan>\ntemplate &lt;typename NodeType,typename ArcType&gt;\nint Graph&lt;NodeType,ArcType&gt;::size() const {\n   return nodes.size();\n}\n\ntemplate &lt;typename NodeType,typename ArcType&gt;\nbool Graph&lt;NodeType,ArcType&gt;::isEmpty() const {\n   return nodes.isEmpty();\n}\n\n<a name=\"Implementation notes:clear\"><scan class=comment>/*\n * Implementation notes: clear\n * ---------------------------\n * The implementation of clear first frees the nodes and arcs in their\n * respective sets and then uses the Set class clear method to ensure that\n * these sets are empty.\n */\n</scan>\ntemplate &lt;typename NodeType,typename ArcType&gt;\nvoid Graph&lt;NodeType,ArcType&gt;::clear() {\n   foreach (NodeType *node in nodes) {\n      delete node;\n   }\n   foreach (ArcType *arc in arcs) {\n      delete arc;\n   }\n   arcs.clear();\n   nodes.clear();\n   nodeMap.clear();\n}\n\n<a name=\"Implementation notes:addNode\"><scan class=comment>/*\n * Implementation notes: addNode\n * -----------------------------\n * The addNode method appears in two forms: one that creates a node from\n * its name and one that assumes that the client has created the new node. \n * In each case, the implementation must add the node the set of nodes for\n * the graph and add the name-to-node association to the node map.\n */\n</scan>\ntemplate &lt;typename NodeType,typename ArcType&gt;\nNodeType *Graph&lt;NodeType,ArcType&gt;::addNode(std::string name) {\n   NodeType *node = new NodeType();\n   node-&gt;arcs = Set&lt;ArcType *&gt;(comparator);\n   node-&gt;name = name;\n   return addNode(node);\n}\n\ntemplate &lt;typename NodeType,typename ArcType&gt;\nNodeType *Graph&lt;NodeType,ArcType&gt;::addNode(NodeType *node) {\n   if (nodeMap.containsKey(node-&gt;name)) {\n      error(\"addNode: node \" + node-&gt;name + \" already exists\");\n   }\n   nodes.add(node);\n   nodeMap[node-&gt;name] = node;\n   return node;\n}\n\n<a name=\"Implementation notes:removeNode\"><scan class=comment>/*\n * Implementation notes: removeNode\n * --------------------------------\n * The removeNode method must remove the specified node but must also\n * remove any arcs in the graph containing the node.  To avoid changing the\n * node set during iteration, this implementation creates a vector of arcs\n * that require deletion.\n */\n</scan>\ntemplate &lt;typename NodeType,typename ArcType&gt;\nvoid Graph&lt;NodeType,ArcType&gt;::removeNode(std::string name) {\n   removeNode(getExistingNode(name));\n}\n\ntemplate &lt;typename NodeType,typename ArcType&gt;\nvoid Graph&lt;NodeType,ArcType&gt;::removeNode(NodeType *node) {\n   Vector&lt;ArcType *&gt; toRemove;\n   foreach (ArcType *arc in arcs) {\n      if (arc-&gt;start == node || arc-&gt;finish == node) {\n         toRemove.add(arc);\n      }\n   }\n   foreach (ArcType *arc in toRemove) {\n      removeArc(arc);\n   }\n   nodes.remove(node);\n}\n\n<a name=\"Implementation notes:getNode, getExistingNode\"><scan class=comment>/*\n * Implementation notes: getNode, getExistingNode\n * ----------------------------------------------\n * The getNode method simply looks up the name in the map, which correctly\n * returns NULL if the name is not found.  Other methods in the\n * implementation call the private method getExistingNode instead, which\n * checks for a NULL value and signals an error.\n */\n</scan>\ntemplate &lt;typename NodeType,typename ArcType&gt;\nNodeType *Graph&lt;NodeType,ArcType&gt;::getNode(std::string name) const {\n   return nodeMap.get(name);\n}\n\ntemplate &lt;typename NodeType,typename ArcType&gt;\nNodeType *Graph&lt;NodeType,ArcType&gt;::getExistingNode(std::string name) const {\n   NodeType *node = nodeMap.get(name);\n   if (node == NULL) error(\"Graph class: No node named \" + name);\n   return node;\n}\n\n<a name=\"Implementation notes:addArc\"><scan class=comment>/*\n * Implementation notes: addArc\n * ----------------------------\n * The addArc method appears in three forms, as described in the interface.\n * The code for each form of the method, however, is quite straightforward.\n */\n</scan>\ntemplate &lt;typename NodeType,typename ArcType&gt;\nArcType *Graph&lt;NodeType,ArcType&gt;::addArc(std::string s1, std::string s2) {\n   return addArc(getExistingNode(s1), getExistingNode(s2));\n}\n\ntemplate &lt;typename NodeType,typename ArcType&gt;\nArcType *Graph&lt;NodeType,ArcType&gt;::addArc(NodeType *n1, NodeType *n2) {\n   ArcType *arc = new ArcType();\n   arc-&gt;start = n1;\n   arc-&gt;finish = n2;\n   return addArc(arc);\n}\n\ntemplate &lt;typename NodeType,typename ArcType&gt;\nArcType *Graph&lt;NodeType,ArcType&gt;::addArc(ArcType *arc) {\n   arc-&gt;start-&gt;arcs.add(arc);\n   arcs.add(arc);\n   return arc;\n}\n\n<a name=\"Implementation notes:removeArc\"><scan class=comment>/*\n * Implementation notes: removeArc\n * -------------------------------\n * These methods remove arcs from the graph, which is ordinarily simply a\n * matter of removing the arc from two sets: the set of arcs in the graph\n * as a whole and the set of arcs in the starting node.  The methods that\n * remove an arc specified by its endpoints, however, must take account of\n * the fact that there might be more than one such arc and delete all of\n * them.\n */\n</scan>\ntemplate &lt;typename NodeType,typename ArcType&gt;\nvoid Graph&lt;NodeType,ArcType&gt;::removeArc(std::string s1, std::string s2) {\n   removeArc(getExistingNode(s1), getExistingNode(s2));\n}\n\ntemplate &lt;typename NodeType,typename ArcType&gt;\nvoid Graph&lt;NodeType,ArcType&gt;::removeArc(NodeType *n1, NodeType *n2) {\n   Vector&lt;ArcType *&gt; toRemove;\n   foreach (ArcType *arc in arcs) {\n      if (arc-&gt;start == n1 &amp;&amp; arc-&gt;finish == n2) {\n         toRemove.add(arc);\n      }\n   }\n   foreach (ArcType *arc in toRemove) {\n      removeArc(arc);\n   }\n}\n\ntemplate &lt;typename NodeType,typename ArcType&gt;\nvoid Graph&lt;NodeType,ArcType&gt;::removeArc(ArcType *arc) {\n   arc-&gt;start-&gt;arcs.remove(arc);\n   arcs.remove(arc);\n}\n\n<a name=\"Implementation notes:isConnected\"><scan class=comment>/*\n * Implementation notes: isConnected\n * ---------------------------------\n * Node n1 is connected to n2 if any of the arcs leaving n1 finish at n2. \n * The two versions of this method allow nodes to be specified either as\n * node pointers or by name.\n */\n</scan>\ntemplate &lt;typename NodeType,typename ArcType&gt;\nbool Graph&lt;NodeType,ArcType&gt;::isConnected(NodeType *n1, NodeType *n2) const {\n   foreach (ArcType *arc in n1-&gt;arcs) {\n      if (arc-&gt;finish == n2) return true;\n   }\n   return false;\n}\n\ntemplate &lt;typename NodeType,typename ArcType&gt;\nbool Graph&lt;NodeType,ArcType&gt;::isConnected(std::string s1,\n                                          std::string s2) const {\n   return isConnected(getExistingNode(s1), getExistingNode(s2));\n}\n\n<a name=\"Implementation notes:getNodeSet, getArcSet\"><scan class=comment>/*\n * Implementation notes: getNodeSet, getArcSet\n * -------------------------------------------\n * These methods simply return the set requested by the client.  The sets\n * are returned by reference for efficiency, because doing so eliminates\n * the need to copy the set.\n */\n</scan>\ntemplate &lt;typename NodeType,typename ArcType&gt;\nconst Set&lt;NodeType *&gt; &amp; Graph&lt;NodeType,ArcType&gt;::getNodeSet() const {\n   return nodes;\n}\n\ntemplate &lt;typename NodeType,typename ArcType&gt;\nconst Set&lt;ArcType *&gt; &amp; Graph&lt;NodeType,ArcType&gt;::getArcSet() const {\n   return arcs;\n}\n\ntemplate &lt;typename NodeType,typename ArcType&gt;\nconst Set&lt;ArcType *&gt; &amp;\n      Graph&lt;NodeType,ArcType&gt;::getArcSet(NodeType *node) const {\n   return node-&gt;arcs;\n}\n\ntemplate &lt;typename NodeType,typename ArcType&gt;\nconst Set&lt;ArcType *&gt; &amp;\n      Graph&lt;NodeType,ArcType&gt;::getArcSet(std::string name) const {\n   return getArcSet(getExistingNode(name));\n}\n\n<a name=\"Implementation notes:getNeighbors\"><scan class=comment>/*\n * Implementation notes: getNeighbors\n * ----------------------------------\n * This implementation recomputes the set each time, which is reasonably\n * efficient if the degree of the node is small.\n */\n</scan>\ntemplate &lt;typename NodeType,typename ArcType&gt;\nconst Set&lt;NodeType *&gt;\n          Graph&lt;NodeType,ArcType&gt;::getNeighbors(NodeType *node) const {\n   Set&lt;NodeType *&gt; nodes = Set&lt;NodeType *&gt;(comparator);\n   foreach (ArcType *arc in node-&gt;arcs) {\n      nodes.add(arc-&gt;finish);\n   }\n   return nodes;\n}\n\ntemplate &lt;typename NodeType,typename ArcType&gt;\nconst Set&lt;NodeType *&gt;\n          Graph&lt;NodeType,ArcType&gt;::getNeighbors(std::string name) const {\n   return getNeighbors(getExistingNode(name));\n}\n\n<a name=\"Implementation notes:operator=, copy constructor\"><scan class=comment>/*\n * Implementation notes: operator=, copy constructor\n * -------------------------------------------------\n * These methods ensure that copying a graph creates an entirely new\n * parallel structure of nodes and arcs.\n */\n</scan>\ntemplate &lt;typename NodeType,typename ArcType&gt;\nGraph&lt;NodeType,ArcType&gt;\n           &amp; Graph&lt;NodeType,ArcType&gt;::operator=(const Graph &amp; src) {\n   if (this != &amp;src) {\n      clear();\n      deepCopy(src);\n   }\n   return *this;\n}\n\ntemplate &lt;typename NodeType,typename ArcType&gt;\nGraph&lt;NodeType,ArcType&gt;::Graph(const Graph &amp; src) {\n   nodes = Set&lt;NodeType *&gt;(comparator);\n   arcs = Set&lt;ArcType *&gt;(comparator);\n   deepCopy(src);\n}\n\n<a name=\"Private method:deepCopy\"><scan class=comment>/*\n * Private method: deepCopy\n * ------------------------\n * Common code factored out of the copy constructor and operator= to copy\n * the contents from the other graph.\n */\n</scan>\ntemplate &lt;typename NodeType,typename ArcType&gt;\nvoid Graph&lt;NodeType,ArcType&gt;::deepCopy(const Graph &amp; src) {\n   foreach (NodeType *oldNode in src.nodes) {\n      NodeType *newNode = new NodeType();\n      *newNode = *oldNode;\n      newNode-&gt;arcs.clear();\n      addNode(newNode);\n   }\n   foreach (ArcType *oldArc in src.arcs) {\n      ArcType *newArc = new ArcType();\n      *newArc = *oldArc;\n      newArc-&gt;start = getExistingNode(oldArc-&gt;start-&gt;name);\n      newArc-&gt;finish = getExistingNode(oldArc-&gt;finish-&gt;name);\n      addArc(newArc);\n   }\n}\n\ntemplate &lt;typename NodeType,typename ArcType&gt;\nstd::string Graph&lt;NodeType,ArcType&gt;::toString() {\n   ostringstream os;\n   os &lt;&lt; *this;\n   return os.str();\n}\n\n<a name=\"Implementation notes:scanGraphEntry\"><scan class=comment>/*\n * Implementation notes: scanGraphEntry\n * ------------------------------------\n * The scanGraphEntry and its helper methods take a scanner that is\n * initialized to the input stream and has the options ignoreWhitespace,\n * scanStrings, and scanNumbers set.\n */\n</scan>\ntemplate &lt;typename NodeType,typename ArcType&gt;\nbool Graph&lt;NodeType,ArcType&gt;::scanGraphEntry(TokenScanner &amp; scanner) {\n   NodeType *n1 = scanNode(scanner);\n   if (n1 == NULL) return false;\n   std::string op = scanner.nextToken();\n   if (op != \"-\" &amp;&amp; op != \"-&gt;\") {\n      scanner.saveToken(op);\n      return true;\n   }\n   NodeType *n2 = scanNode(scanner);\n   if (n2 == NULL) error(\"scanGraphEntry: Missing node after \" + op);\n   ArcType *forward = new ArcType();\n   forward-&gt;start = n1;\n   forward-&gt;finish = n2;\n   addArc(forward);\n   ArcType *backward = NULL;\n   if (op == \"-\") {\n      backward = new ArcType();\n      backward-&gt;start = n2;\n      backward-&gt;finish = n1;\n      addArc(backward);\n   }\n   scanArcData(scanner, forward, backward);\n   return true;\n}\n\ntemplate &lt;typename NodeType,typename ArcType&gt;\nNodeType *Graph&lt;NodeType,ArcType&gt;::scanNode(TokenScanner &amp; scanner) {\n   std::string token = scanner.nextToken();\n   switch (scanner.getTokenType(token)) {\n    case WORD: break;\n    case STRING: token = scanner.getStringValue(token); break;\n    default: scanner.saveToken(token); return NULL;\n   }\n   NodeType *node = getNode(token);\n   if (node == NULL) {\n      node = new NodeType();\n      node-&gt;name = token;\n      scanNodeData(scanner, node);\n      addNode(node);\n   }\n   return node;\n}\n\n<a name=\"Implementation notes:<< and >>\"><scan class=comment>/*\n * Implementation notes: &lt;&lt; and &gt;&gt;\n * -------------------------------\n * The insertion and extraction operators for graphs are more complicated\n * than for the standard collection types because the nodes and arcs can\n * contain client-specific data.  To ensure that this information is\n * correctly written and read by these operators, clients must override the\n * methods writeNodeData, writeArcData, scanNodeData, and scanArcData.\n */\n</scan>\ntemplate &lt;typename NodeType,typename ArcType&gt;\nstd::ostream &amp; operator&lt;&lt;(std::ostream &amp; os,\n                          const Graph&lt;NodeType,ArcType&gt; &amp; g) {\n   os &lt;&lt; \"{\";\n   bool started = false;\n   foreach (NodeType *node in g.getNodeSet()) {\n      if (started) os &lt;&lt; \", \";\n      writeGenericValue(os, node-&gt;name, false);\n      g.writeNodeData(os, node);\n      started = true;\n   }\n   foreach (ArcType *arc in g.getArcSet()) {\n      os &lt;&lt; \", \";\n      writeGenericValue(os, arc-&gt;start-&gt;name, false);\n      os &lt;&lt; \" -&gt; \";\n      writeGenericValue(os, arc-&gt;finish-&gt;name, false);\n      g.writeArcData(os, arc);\n   }\n   return os &lt;&lt; \"}\";\n}\n\ntemplate &lt;typename NodeType,typename ArcType&gt;\nstd::istream &amp; operator&gt;&gt;(std::istream &amp; is, Graph&lt;NodeType,ArcType&gt; &amp; g) {\n   TokenScanner scanner(is);\n   scanner.ignoreWhitespace();\n   scanner.scanNumbers();\n   scanner.scanStrings();\n   scanner.addOperator(\"-&gt;\");\n   std::string token = scanner.nextToken();\n   if (token != \"{\") error(\"operator &gt;&gt;: Missing {\");\n   g.clear();\n   while (g.scanGraphEntry(scanner)) {\n      token = scanner.nextToken();\n      if (token == \"}\") {\n         scanner.saveToken(token);\n      } else if (token != \",\") {\n         error(\"operator &gt;&gt;: Unexpected token \" + token);\n      }\n   }\n   token = scanner.nextToken();\n   if (token != \"}\") error(\"operator &gt;&gt;: Missing }\");\n   return is;\n}\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/docs/_old/grid-h.html",
    "content": "<html>\n<head>\n<title>../include/grid.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: grid.h\n * ------------\n * This file exports the Grid class, which offers a convenient abstraction\n * for representing a two-dimensional array.\n */\n</scan>\n#ifndef _grid_h\n#define _grid_h\n\n#include \"strlib.h\"\n#include \"vector.h\"\n\n<a name=\"Class:Grid<ValueType>\"><scan class=comment>/*\n * Class: Grid&lt;ValueType&gt;\n * ----------------------\n * This class stores an indexed, two-dimensional array.  The following\n * code, for example, creates an identity matrix of size n, in which the\n * elements are 1.0 along the main diagonal and 0.0 everywhere else:\n *\n *    Grid&lt;double&gt; createIdentityMatrix(int n) {\n *       Grid&lt;double&gt; matrix(n, n);\n *       for (int i = 0; i &lt; n; i++) {\n *          matrix[i][i] = 1.0;\n *       }\n *       return matrix;\n *    }\n */\n</scan>\ntemplate &lt;typename ValueType&gt;\nclass Grid {\n\npublic:\n\n<scan class=comment>/* Forward reference */</scan>\n   class GridRow;\n\n<a name=\"Constructor:Grid\"><scan class=comment>/*\n * Constructor: Grid\n * Usage: Grid&lt;ValueType&gt; grid;\n *        Grid&lt;ValueType&gt; grid(nRows, nCols);\n * ------------------------------------------\n * Initializes a new grid.  The second form of the constructor is more\n * common and creates a grid with the specified number of rows and columns.\n * Each element of the grid is initialized to the default value for the\n * type.  The default constructor creates an empty grid for which the\n * client must call resize to set the dimensions.\n */\n</scan>\n   Grid();\n   Grid(int nRows, int nCols);\n\n<a name=\"Destructor:~Grid\"><scan class=comment>/*\n * Destructor: ~Grid\n * -----------------\n * Frees any heap storage associated with this grid.\n */\n</scan>\n   virtual ~Grid();\n\n<a name=\"Method:numRows\"><scan class=comment>/*\n * Method: numRows\n * Usage: int nRows = grid.numRows();\n * ----------------------------------\n * Returns the number of rows in the grid.\n */\n</scan>\n   int numRows() const;\n\n<a name=\"Method:numCols\"><scan class=comment>/*\n * Method: numCols\n * Usage: int nCols = grid.numCols();\n * ----------------------------------\n * Returns the number of columns in the grid.\n */\n</scan>\n   int numCols() const;\n\n<a name=\"Method:resize\"><scan class=comment>/*\n * Method: resize\n * Usage: grid.resize(nRows, nCols);\n * ---------------------------------\n * Reinitializes the grid to have the specified number of rows and columns.\n * Any previous grid contents are discarded.\n */\n</scan>\n   void resize(int nRows, int nCols);\n\n<a name=\"Method:inBounds\"><scan class=comment>/*\n * Method: inBounds\n * Usage: if (grid.inBounds(row, col)) ...\n * ---------------------------------------\n * Returns true if the specified row and column position is inside the\n * bounds of the grid.\n */\n</scan>\n   bool inBounds(int row, int col) const;\n\n<a name=\"Method:get\"><scan class=comment>/*\n * Method: get\n * Usage: ValueType value = grid.get(row, col);\n * --------------------------------------------\n * Returns the element at the specified row/col position in this grid. \n * This method signals an error if the row and col arguments are outside\n * the grid boundaries.\n */\n</scan>\n   ValueType get(int row, int col);\n   const ValueType &amp; get(int row, int col) const;\n\n<a name=\"Method:set\"><scan class=comment>/*\n * Method: set\n * Usage: grid.set(row, col, value);\n * ---------------------------------\n * Replaces the element at the specified row/col location in this grid with\n * a new value.  This method signals an error if the row and col arguments\n * are outside the grid boundaries.\n */\n</scan>\n   void set(int row, int col, ValueType value);\n\n<a name=\"Operator:[]\"><scan class=comment>/*\n * Operator: []\n * Usage:  grid[row][col]\n * ----------------------\n * Overloads [] to select elements from this grid.  This extension enables\n * the use of traditional array notation to get or set individual elements.\n * This method signals an error if the row and col arguments are outside\n * the grid boundaries.\n */\n</scan>\n   GridRow operator[](int row);\n   const GridRow operator[](int row) const;\n\n<a name=\"Method:toString\"><scan class=comment>/*\n * Method: toString\n * Usage: string str = grid.toString();\n * ------------------------------------\n * Converts the grid to a printable string representation.\n */\n</scan>\n   std::string toString();\n\n<a name=\"Method:mapAll\"><scan class=comment>/*\n * Method: mapAll\n * Usage: grid.mapAll(fn);\n * -----------------------\n * Calls the specified function on each element of the grid.  The elements\n * are processed in row-major order, in which all the elements of row 0 are\n * processed, followed by the elements in row 1, and so on.\n */\n</scan>\n   void mapAll(void (*fn)(ValueType value)) const;\n   void mapAll(void (*fn)(const ValueType &amp; value)) const;\n\n   template &lt;typename FunctorType&gt;\n   void mapAll(FunctorType fn) const;\n\n<scan class=comment>/*\n * Additional Grid operations\n * --------------------------\n * In addition to the methods listed in this interface, the Grid class\n * supports the following operations:\n *\n *   - Stream I/O using the &lt;&lt; and &gt;&gt; operators\n *   - Deep copying for the copy constructor and assignment operator\n *   - Iteration using the range-based for statement and STL iterators\n *\n * The iteration forms process the grid in row-major order.\n */\n</scan>\n<scan class=comment>/* Private section */</scan>\n\n<scan class=comment>/**********************************************************************/</scan>\n<scan class=comment>/* Note: Everything below this point in the file is logically part    */</scan>\n<scan class=comment>/* of the implementation and should not be of interest to clients.    */</scan>\n<scan class=comment>/**********************************************************************/</scan>\n\n<a name=\"Implementation notes:Grid data structure\"><scan class=comment>/*\n * Implementation notes: Grid data structure\n * -----------------------------------------\n * The Grid is internally managed as a dynamic array of elements.  The\n * array itself is one-dimensional, the logical separation into rows and\n * columns is done by arithmetic computation.  The layout is in row-major\n * order, which is to say that the entire first row is laid out\n * contiguously, followed by the entire second row, and so on.\n */\n</scan>\n<scan class=comment>/* Instance variables */</scan>\n\n   ValueType *elements;  <scan class=comment>/* A dynamic array of the elements   */</scan>\n   int nRows;            <scan class=comment>/* The number of rows in the grid    */</scan>\n   int nCols;            <scan class=comment>/* The number of columns in the grid */</scan>\n\n<scan class=comment>/* Private method prototypes */</scan>\n\n   void checkRange(int row, int col);\n\n<scan class=comment>/*\n * Hidden features\n * ---------------\n * The remainder of this file consists of the code required to support deep\n * copying and iteration.  Including these methods in the public interface\n * would make that interface more difficult to understand for the average\n * client.\n */\n</scan>\n<scan class=comment>/*\n * Deep copying support\n * --------------------\n * This copy constructor and operator= are defined to make a deep copy,\n * making it possible to pass/return grids by value and assign from one\n * grid to another.  The entire contents of the grid, including all\n * elements, are copied.  Each grid element is copied from the original\n * grid to the copy using assignment (operator=).  Making copies is\n * generally avoided because of the expense and thus, grids are typically\n * passed by reference, however, when a copy is needed, these operations\n * are supported.\n */\n</scan>\n   void deepCopy(const Grid &amp; grid) {\n      int n = grid.nRows * grid.nCols;\n      elements = new ValueType[n];\n      for (int i = 0; i &lt; n; i++) {\n         elements[i] = grid.elements[i];\n      }\n      nRows = grid.nRows;\n      nCols = grid.nCols;\n   }\n\npublic:\n\n   Grid &amp; operator=(const Grid &amp; src) {\n      if (this != &amp;src) {\n         delete[] elements;\n         deepCopy(src);\n      }\n      return *this;\n   }\n\n   Grid(const Grid &amp; src) {\n      deepCopy(src);\n   }\n\n<scan class=comment>/*\n * Iterator support\n * ----------------\n * The classes in the StanfordCPPLib collection implement input iterators\n * so that they work symmetrically with respect to the corresponding STL\n * classes.\n */\n</scan>\n   class iterator : public std::iterator&lt;std::input_iterator_tag, ValueType&gt; {\n\n   public:\n\n      iterator(const Grid *gp, int index) {\n         this-&gt;gp = gp;\n         this-&gt;index = index;\n      }\n\n      iterator(const iterator &amp; it) {\n         this-&gt;gp = it.gp;\n         this-&gt;index = it.index;\n      }\n\n      iterator &amp; operator++() {\n         index++;\n         return *this;\n      }\n\n      iterator operator++(int) {\n         iterator copy(*this);\n         operator++();\n         return copy;\n      }\n\n      bool operator==(const iterator &amp; rhs) {\n         return gp == rhs.gp &amp;&amp; index == rhs.index;\n      }\n\n      bool operator!=(const iterator &amp; rhs) {\n         return !(*this == rhs);\n      }\n\n      ValueType &amp; operator*() {\n         return gp-&gt;elements[index];\n      }\n\n      ValueType *operator-&gt;() {\n         return &amp;gp-&gt;elements[index];\n      }\n\n   private:\n      const Grid *gp;\n      int index;\n   };\n\n   iterator begin() const {\n      return iterator(this, 0);\n   }\n\n   iterator end() const {\n      return iterator(this, nRows * nCols);\n   }\n\n<a name=\"Private class:Grid<ValType>::GridRow\"><scan class=comment>/*\n * Private class: Grid&lt;ValType&gt;::GridRow\n * -------------------------------------\n * This section of the code defines a nested class within the Grid template\n * that makes it possible to use traditional subscripting on Grid values.\n */\n</scan>\n   class GridRow {\n   public:\n      GridRow() {\n         <scan class=comment>/* Empty */</scan>\n      }\n\n      ValueType &amp; operator[](int col) {\n         extern void error(std::string msg);\n         if (!gp-&gt;inBounds(row, col)) {\n            error(\"Grid index values out of range\");\n         }\n         return gp-&gt;elements[(row * gp-&gt;nCols) + col];\n      }\n\n      ValueType operator[](int col) const {\n         extern void error(std::string msg);\n         if (!gp-&gt;inBounds(row, col)) {\n            error(\"Grid index values out of range\");\n         }\n         return gp-&gt;elements[(row * gp-&gt;nCols) + col];\n      }\n\n   private:\n      GridRow(Grid *gridRef, int index) {\n         gp = gridRef;\n         row = index;\n      }\n\n      Grid *gp;\n      int row;\n      friend class Grid;\n   };\n   friend class GridRow;\n\n};\n\nextern void error(std::string msg);\n\ntemplate &lt;typename ValueType&gt;\nGrid&lt;ValueType&gt;::Grid() {\n   elements = NULL;\n   nRows = 0;\n   nCols = 0;\n}\n\ntemplate &lt;typename ValueType&gt;\nGrid&lt;ValueType&gt;::Grid(int nRows, int nCols) {\n   elements = NULL;\n   resize(nRows, nCols);\n}\n\ntemplate &lt;typename ValueType&gt;\nGrid&lt;ValueType&gt;::~Grid() {\n   if (elements != NULL) delete[] elements;\n}\n\ntemplate &lt;typename ValueType&gt;\nint Grid&lt;ValueType&gt;::numRows() const {\n   return nRows;\n}\n\ntemplate &lt;typename ValueType&gt;\nint Grid&lt;ValueType&gt;::numCols() const {\n   return nCols;\n}\n\ntemplate &lt;typename ValueType&gt;\nvoid Grid&lt;ValueType&gt;::resize(int nRows, int nCols) {\n   if (nRows &lt; 0 || nCols &lt; 0) {\n      error(\"Attempt to resize grid to invalid size (\"\n            + integerToString(nRows) + \", \"\n            + integerToString(nCols) + \")\");\n   }\n   if (elements != NULL) delete[] elements;\n   this-&gt;nRows = nRows;\n   this-&gt;nCols = nCols;\n   elements = new ValueType[nRows * nCols];\n   ValueType value = ValueType();\n   for (int i = 0; i &lt; nRows * nCols; i++) {\n      elements[i] = value;\n   }\n}\n\ntemplate &lt;typename ValueType&gt;\nbool Grid&lt;ValueType&gt;::inBounds(int row, int col) const {\n   return row &gt;= 0 &amp;&amp; col &gt;= 0 &amp;&amp; row &lt; nRows &amp;&amp; col &lt; nCols;\n}\n\ntemplate &lt;typename ValueType&gt;\nValueType Grid&lt;ValueType&gt;::get(int row, int col) {\n   if (!inBounds(row, col)) error(\"get: Grid indices out of bounds\");\n   return elements[(row * nCols) + col];\n}\n\ntemplate &lt;typename ValueType&gt;\nconst ValueType &amp; Grid&lt;ValueType&gt;::get(int row, int col) const {\n   if (!inBounds(row, col)) error(\"get: Grid indices out of bounds\");\n   return elements[(row * nCols) + col];\n}\n\ntemplate &lt;typename ValueType&gt;\nvoid Grid&lt;ValueType&gt;::set(int row, int col, ValueType value) {\n   if (!inBounds(row, col)) error(\"set: Grid indices out of bounds\");\n   elements[(row * nCols) + col] = value;\n}\n\ntemplate &lt;typename ValueType&gt;\ntypename Grid&lt;ValueType&gt;::GridRow Grid&lt;ValueType&gt;::operator[](int row) {\n   return GridRow(this, row);\n}\n\ntemplate &lt;typename ValueType&gt;\nconst typename Grid&lt;ValueType&gt;::GridRow\n               Grid&lt;ValueType&gt;::operator[](int row) const {\n   return GridRow(this, row);\n}\n\ntemplate &lt;typename ValueType&gt;\nvoid Grid&lt;ValueType&gt;::mapAll(void (*fn)(ValueType value)) const {\n   for (int i = 0; i &lt; nRows; i++) {\n      for (int j = 0; j &lt; nCols; j++) {\n         fn(get(i, j));\n      }\n   }\n}\n\ntemplate &lt;typename ValueType&gt;\nvoid Grid&lt;ValueType&gt;::mapAll(void (*fn)(const ValueType &amp; value)) const {\n   for (int i = 0; i &lt; nRows; i++) {\n      for (int j = 0; j &lt; nCols; j++) {\n         fn(get(i, j));\n      }\n   }\n}\n\ntemplate &lt;typename ValueType&gt;\ntemplate &lt;typename FunctorType&gt;\nvoid Grid&lt;ValueType&gt;::mapAll(FunctorType fn) const {\n   for (int i = 0; i &lt; nRows; i++) {\n      for (int j = 0; j &lt; nCols; j++) {\n         fn(get(i, j));\n      }\n   }\n}\n\ntemplate &lt;typename ValueType&gt;\nstd::string Grid&lt;ValueType&gt;::toString() {\n   ostringstream os;\n   os &lt;&lt; *this;\n   return os.str();\n}\n\n<a name=\"Implementation notes:<< and >>\"><scan class=comment>/*\n * Implementation notes: &lt;&lt; and &gt;&gt;\n * -------------------------------\n * The insertion and extraction operators use the template facilities in\n * strlib.h to read and write generic values in a way that treats strings\n * specially.\n */\n</scan>\ntemplate &lt;typename ValueType&gt;\nstd::ostream &amp; operator&lt;&lt;(std::ostream &amp; os, const Grid&lt;ValueType&gt; &amp; grid) {\n   os &lt;&lt; \"{\";\n   int nRows = grid.numRows();\n   int nCols = grid.numCols();\n   for (int i = 0; i &lt; nRows; i++) {\n      if (i &gt; 0) os &lt;&lt; \", \";\n      os &lt;&lt; \"{\";\n      for (int j = 0; j &lt; nCols; j++) {\n         if (j &gt; 0) os &lt;&lt; \", \";\n         writeGenericValue(os, grid.get(i, j), true);\n      }\n      os &lt;&lt; \"}\";\n   }\n   return os &lt;&lt; \"}\";\n}\n\ntemplate &lt;typename ValueType&gt;\nstd::istream &amp; operator&gt;&gt;(std::istream &amp; is, Grid&lt;ValueType&gt; &amp; grid) {\n   Vector&lt; Vector&lt;ValueType&gt; &gt; vec2d;\n   is &gt;&gt; vec2d;\n   int nRows = vec2d.size();\n   int nCols = (nRows == 0) ? 0 : vec2d[0].size();\n   grid.resize(nRows, nCols);\n   for (int i = 0; i &lt; nRows; i++) {\n      for (int j = 0; j &lt; nCols; j++) {\n         grid[i][j] = vec2d[i][j];\n      }\n   }\n   return is;\n}\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/docs/_old/gtimer-h.html",
    "content": "<html>\n<head>\n<title>../include/gtimer.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: gtimer.h\n * --------------\n * This file defines the GTimer class, which implements a general interval\n * timer.\n */\n</scan>\n#ifndef _gtimer_h\n#define _gtimer_h\n\n#include &lt;string&gt;\n\n<a name=\"Friend type:GTimerData\"><scan class=comment>/*\n * Friend type: GTimerData\n * -----------------------\n * This type maintains a reference count to determine when it is possible\n * to free the timer.  The address of this block is used as the timer id.\n */\n</scan>\nstruct GTimerData {\n   int refCount;\n};\n\n<a name=\"Class:GTimer\"><scan class=comment>/*\n * Class: GTimer\n * -------------\n * This class implements a simple interval timer that generates a\n * GTimerEvent with a specified frequency.  Copying a GTimer object is\n * legal and creates an object that refers to the same internal timer.\n */\n</scan>\nclass GTimer {\n\npublic:\n\n<a name=\"Constructor:GTimer\"><scan class=comment>/*\n * Constructor: GTimer\n * Usage: GTimer timer(milliseconds);\n * ----------------------------------\n * Creates a timer object that generates a GTimerEvent each time the\n * specified number of milliseconds has elapsed.  No events are generated\n * until the client calls start on the timer.  For more details on using\n * timers, see the documentation for the GTimerEvent class.\n */\n</scan>\n   GTimer(double milliseconds);\n\n<a name=\"Destructor:~GTimer\"><scan class=comment>/*\n * Destructor: ~GTimer\n * -------------------\n * Frees the resources associated with the timer.\n */\n</scan>\n   virtual ~GTimer();\n\n<a name=\"Method:start\"><scan class=comment>/*\n * Method: start\n * Usage: timer.start();\n * ---------------------\n * Starts the timer.  A timer continues to generate timer events until it\n * is stopped; to achieve the effect of a one-shot timer, the simplest\n * approach is to call the stop method inside the event handler.\n */\n</scan>\n   void start();\n\n<a name=\"Method:stop\"><scan class=comment>/*\n * Method: stop\n * Usage: timer.stop();\n * --------------------\n * Stops the timer so that it stops generating events until it is\n * restarted.\n */\n</scan>\n   void stop();\n\n<a name=\"Friend operator:==\"><scan class=comment>/*\n * Friend operator: ==\n * Usage: if (t1 == t2) ...\n * ------------------------\n * Checks whether the two objects refer to the same timer.\n */\n</scan>\n   bool operator==(GTimer t2);\n\n<a name=\"Friend operator:!=\"><scan class=comment>/*\n * Friend operator: !=\n * Usage: if (t1 != t2) ...\n * ------------------------\n * Checks whether the two objects refer to the different timers.\n */\n</scan>\n   bool operator!=(GTimer t2);\n\n<scan class=comment>/* Private section */</scan>\n\n   GTimer(GTimerData *gtd);\n   GTimer(const GTimer &amp; src);\n   GTimer &amp; operator=(const GTimer &amp; src);\n\nprivate:\n\n<scan class=comment>/* Instance variables */</scan>\n\n   GTimerData *gtd;\n\n   friend class Platform;\n   friend class GTimerEvent;\n\n};\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/docs/_old/gtypes-h.html",
    "content": "<html>\n<head>\n<title>../include/gtypes.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: gtypes.h\n * --------------\n * This file defines classes for representing points, dimensions, and\n * rectangles.\n */\n</scan>\n#ifndef _gtypes_h\n#define _gtypes_h\n\n#include &lt;iostream&gt;\n#include &lt;string&gt;\n\n<a name=\"Class:GPoint\"><scan class=comment>/*\n * Class: GPoint\n * -------------\n * This class contains real-valued x and y fields.  It is used to represent\n * a location on the graphics plane.\n */\n</scan>\nclass GPoint {\n\npublic:\n\n<a name=\"Constructor:GPoint\"><scan class=comment>/*\n * Constructor: GPoint\n * Usage: GPoint origin;\n *        GPoint pt(x, y);\n * -----------------------\n * Creates a GPoint object with the specified x and y coordinates.  If the\n * coordinates are not supplied, the default constructor sets these fields\n * to 0.\n */\n</scan>\n   GPoint();\n   GPoint(double x, double y);\n\n<a name=\"Method:getX\"><scan class=comment>/*\n * Method: getX\n * Usage: double x = pt.getX();\n * ----------------------------\n * Returns the x component of the point.\n */\n</scan>\n   double getX() const;\n\n<a name=\"Method:getY\"><scan class=comment>/*\n * Method: getY\n * Usage: double y = pt.getY();\n * ----------------------------\n * Returns the y component of the point.\n */\n</scan>\n   double getY() const;\n\n<a name=\"Method:toString\"><scan class=comment>/*\n * Method: toString\n * Usage: string str = pt.toString();\n * ----------------------------------\n * Converts the GPoint to a string in the form \"(x, y)\".\n */\n</scan>\n   std::string toString() const;\n\n<scan class=comment>/* Private section */</scan>\n\n<scan class=comment>/**********************************************************************/</scan>\n<scan class=comment>/* Note: Everything below this point in this class is logically part  */</scan>\n<scan class=comment>/* of the implementation and should not be of interest to clients.    */</scan>\n<scan class=comment>/**********************************************************************/</scan>\n\nprivate:\n\n<scan class=comment>/* Instance variables */</scan>\n\n   double x;                       <scan class=comment>/* The x-coordinate of the point */</scan>\n   double y;                       <scan class=comment>/* The y-coordinate of the point */</scan>\n\n<scan class=comment>/* Friend declarations */</scan>\n\n   friend bool operator==(const GPoint &amp; p1, const GPoint &amp; p2);\n   friend bool operator!=(const GPoint &amp; p1, const GPoint &amp; p2);\n   friend int hashCode(const GPoint &amp; pt);\n\n};\n\n<a name=\"Class:GDimension\"><scan class=comment>/*\n * Class: GDimension\n * -----------------\n * This class contains real-valued width and height fields.  It is used to\n * indicate the size of a graphical object.\n */\n</scan>\nclass GDimension {\n\npublic:\n\n<a name=\"Constructor:GDimension\"><scan class=comment>/*\n * Constructor: GDimension\n * Usage: GDimension empty;\n *        GDimension dim(width, height);\n * -------------------------------------\n * Creates a GDimension object with the specified width and height\n * coordinates.  If the coordinates are not supplied, the default\n * constructor sets these fields to 0.\n */\n</scan>\n   GDimension();\n   GDimension(double width, double height);\n\n<a name=\"Method:getWidth\"><scan class=comment>/*\n * Method: getWidth\n * Usage: double width = dim.getWidth();\n * -------------------------------------\n * Returns the width component of the GDimension object.\n */\n</scan>\n   double getWidth() const;\n\n<a name=\"Method:getHeight\"><scan class=comment>/*\n * Method: getHeight\n * Usage: double height = dim.getHeight();\n * ---------------------------------------\n * Returns the height component of the GDimension object.\n */\n</scan>\n   double getHeight() const;\n\n<a name=\"Method:toString\"><scan class=comment>/*\n * Method: toString\n * Usage: string str = dim.toString();\n * -----------------------------------\n * Converts the GDimension to a string in the form \"(width, height)\".\n */\n</scan>\n   std::string toString() const;\n\n<scan class=comment>/* Private section */</scan>\n\n<scan class=comment>/**********************************************************************/</scan>\n<scan class=comment>/* Note: Everything below this point in this class is logically part  */</scan>\n<scan class=comment>/* of the implementation and should not be of interest to clients.    */</scan>\n<scan class=comment>/**********************************************************************/</scan>\n\nprivate:\n\n<scan class=comment>/* Instance variables */</scan>\n\n   double width;                   <scan class=comment>/* The width of the GDimension       */</scan>\n   double height;                  <scan class=comment>/* The height of the GDimension      */</scan>\n\n<scan class=comment>/* Friend declarations */</scan>\n\n   friend bool operator==(const GDimension &amp; d1, const GDimension &amp; d2);\n   friend bool operator!=(const GDimension &amp; d1, const GDimension &amp; d2);\n   friend int hashCode(const GDimension &amp; dim);\n\n};\n\n<a name=\"Class:GRectangle\"><scan class=comment>/*\n * Class: GRectangle\n * -----------------\n * This type contains real-valued x, y, width, and height fields.  It is\n * used to represent the bounding box of a graphical object.\n */\n</scan>\nclass GRectangle {\n\npublic:\n\n<a name=\"Constructor:GRectangle\"><scan class=comment>/*\n * Constructor: GRectangle\n * Usage: GRectangle empty;\n *        GRectangle r(x, y, width, height);\n * -----------------------------------------\n * Creates a GRectangle object with the specified components.  If these\n * parameters are not supplied, the default constructor sets these fields\n * to 0.\n */\n</scan>\n   GRectangle();\n   GRectangle(double x, double y, double width, double height);\n\n<a name=\"Method:getX\"><scan class=comment>/*\n * Method: getX\n * Usage: double x = r.getX();\n * ---------------------------\n * Returns the x component of the rectangle.\n */\n</scan>\n   double getX() const;\n\n<a name=\"Method:getY\"><scan class=comment>/*\n * Method: getY\n * Usage: double y = pt.getY();\n * ----------------------------\n * Returns the y component of the rectangle.\n */\n</scan>\n   double getY() const;\n\n<a name=\"Method:getWidth\"><scan class=comment>/*\n * Method: getWidth\n * Usage: double width = r.getWidth();\n * -----------------------------------\n * Returns the width component of the rectangle.\n */\n</scan>\n   double getWidth() const;\n\n<a name=\"Method:getHeight\"><scan class=comment>/*\n * Method: getHeight\n * Usage: double height = pt.getHeight();\n * --------------------------------------\n * Returns the height component of the rectangle.\n */\n</scan>\n   double getHeight() const;\n\n<a name=\"Method:isEmpty\"><scan class=comment>/*\n * Method: isEmpty\n * Usage: if (r.isEmpty()) ...\n * ---------------------------\n * Returns true if the rectangle is empty.\n */\n</scan>\n   bool isEmpty() const;\n\n<a name=\"Method:contains\"><scan class=comment>/*\n * Method: contains\n * Usage: if (r.contains(pt)) ...\n *        if (r.contains(x, y)) ...\n * --------------------------------\n * Returns true if the rectangle contains the given point, which may be\n * specified either as a point or as distinct coordinates.\n */\n</scan>\n   bool contains(GPoint pt) const;\n   bool contains(double x, double y) const;\n\n<a name=\"Method:toString\"><scan class=comment>/*\n * Method: toString\n * Usage: string str = r.toString();\n * ---------------------------------\n * Converts the GRectangle to a string in the form \"(x, y, width, height)\".\n */\n</scan>\n   std::string toString() const;\n\n<scan class=comment>/* Private section */</scan>\n\n<scan class=comment>/**********************************************************************/</scan>\n<scan class=comment>/* Note: Everything below this point in this class is logically part  */</scan>\n<scan class=comment>/* of the implementation and should not be of interest to clients.    */</scan>\n<scan class=comment>/**********************************************************************/</scan>\n\nprivate:\n\n<scan class=comment>/* Instance variables */</scan>\n\n   double x;                       <scan class=comment>/* The x-coordinate of the rectangle */</scan>\n   double y;                       <scan class=comment>/* The y-coordinate of the rectangle */</scan>\n   double width;                   <scan class=comment>/* The width of the rectangle        */</scan>\n   double height;                  <scan class=comment>/* The height of the rectangle       */</scan>\n\n<scan class=comment>/* Friend declarations */</scan>\n\n   friend bool operator==(const GRectangle &amp; r1, const GRectangle &amp; r2);\n   friend bool operator!=(const GRectangle &amp; r1, const GRectangle &amp; r2);\n   friend int hashCode(const GRectangle &amp; r);\n\n};\n\n<scan class=comment>/*\n * Free functions\n * --------------\n * This section of the interface defines the insertion, comparison, and\n * hashCode functions for the geometric types.\n */\n</scan>\nstd::ostream &amp; operator&lt;&lt;(std::ostream &amp; os, const GPoint &amp; pt);\nbool operator==(const GPoint &amp; p1, const GPoint &amp; p2);\nbool operator!=(const GPoint &amp; p1, const GPoint &amp; p2);\nint hashCode(const GPoint &amp; pt);\n\nstd::ostream &amp; operator&lt;&lt;(std::ostream &amp; os, const GDimension &amp; dim);\nbool operator==(const GDimension &amp; d1, const GDimension &amp; d2);\nbool operator!=(const GDimension &amp; d1, const GDimension &amp; d2);\nint hashCode(const GDimension &amp; dim);\n\nstd::ostream &amp; operator&lt;&lt;(std::ostream &amp; os, const GRectangle &amp; rect);\nbool operator==(const GRectangle &amp; r1, const GRectangle &amp; r2);\nbool operator!=(const GRectangle &amp; r1, const GRectangle &amp; r2);\nint hashCode(const GRectangle &amp; r);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/docs/_old/gwindow-h.html",
    "content": "<html>\n<head>\n<title>../include/gwindow.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: gwindow.h\n * ---------------\n * This file defines the GWindow class which supports drawing graphical\n * objects on the screen.\n */\n</scan>\n#ifndef _gwindow_h\n#define _gwindow_h\n\n#include &lt;string&gt;\n#include \"gtypes.h\"\n#include \"vector.h\"\n\nclass GCompound;\nclass GInteractor;\nclass GLabel;\nclass GObject;\n\n<a name=\"Friend type:GWindowData\"><scan class=comment>/*\n * Friend type: GWindowData\n * ------------------------\n * This block contains all data pertaining to the window.  Shallow copying\n * of the GWindow object ensures that all copies refer to the same onscreen\n * window.\n */\n</scan>\nstruct GWindowData {\n   double windowWidth;\n   double windowHeight;\n   std::string windowTitle;\n   std::string color;\n   bool visible;\n   GCompound *top;\n};\n\n<a name=\"Class:GWindow\"><scan class=comment>/*\n * Class: GWindow\n * --------------\n * This class represents a graphics window that supports simple graphics. \n * Each GWindow consists of two layers.  The background layer provides a\n * surface for drawing static pictures that involve no animation. \n * Graphical objects drawn in the background layer are persistent and do\n * not require the client to update the contents of the window.  The\n * foreground layer contains graphical objects that are redrawn as\n * necessary.\n *\n * The GWindow class includes several methods that draw lines, rectangles,\n * and ovals on the background layer without making use of the facilities\n * of the gobjects.h interface.  For example, the following program draws a\n * diamond, rectangle, and oval at the center of the window.\n *\n *    int main() {\n *       GWindow gw;\n *       cout &lt;&lt; \"This program draws a diamond, rectangle, and oval.\" &lt;&lt; endl;\n *       double width = gw.getWidth();\n *       double height = gw.getHeight();\n *       gw.drawLine(0, height / 2, width / 2, 0);\n *       gw.drawLine(width / 2, 0, width, height / 2);\n *       gw.drawLine(width, height / 2, width / 2, height);\n *       gw.drawLine(width / 2, height, 0, height / 2);\n *       gw.setColor(\"BLUE\");\n *       gw.fillRect(width / 4, height / 4, width / 2, height / 2);\n *       gw.setColor(\"GRAY\");\n *       gw.fillOval(width / 4, height / 4, width / 2, height / 2);\n *       return 0;\n *    }\n *\n * A GWindow object may be freely copied, after which all copies refer to\n * the same window.\n */\n</scan>\nclass GWindow {\n\npublic:\n\n<a name=\"Constructor:GWindow\"><scan class=comment>/*\n * Constructor: GWindow\n * Usage: GWindow gw;\n *        GWindow gw(width, height);\n * ---------------------------------\n * Creates a window, either of the specified size or a default size.\n */\n</scan>\n   GWindow();\n   GWindow(double width, double height);\n\n<a name=\"Destructor:~GWindow\"><scan class=comment>/*\n * Destructor: ~GWindow\n * --------------------\n * Reclaims the internal storage for the window.  Note that the window is\n * not closed by this operation, but persists until it is closed by the\n * client or the user exits the program.\n */\n</scan>\n   virtual ~GWindow();\n\n<a name=\"Method:close\"><scan class=comment>/*\n * Method: close\n * Usage: gw.close();\n * ------------------\n * Deletes the window from the screen.\n */\n</scan>\n   void close();\n\n<a name=\"Method:requestFocus\"><scan class=comment>/*\n * Method: requestFocus\n * Usage: gw.requestFocus();\n * -------------------------\n * Asks the system to assign the keyboard focus to the window, which brings\n * it to the top and ensures that key events are delivered to the window. \n * Clicking in the window automatically requests the focus.\n */\n</scan>\n   void requestFocus();\n\n<a name=\"Method:clear\"><scan class=comment>/*\n * Method: clear\n * Usage: gw.clear();\n * ------------------\n * Clears the contents of the window.\n */\n</scan>\n   void clear();\n\n<a name=\"Method:setVisible\"><scan class=comment>/*\n * Method: setVisible\n * Usage: gw.setVisible(flag);\n * ---------------------------\n * Determines whether the window is visible on the screen.\n */\n</scan>\n   void setVisible(bool flag);\n\n<a name=\"Method:isVisible\"><scan class=comment>/*\n * Method: isVisible\n * Usage: if (gw.isVisible()) ...\n * ------------------------------\n * Tests whether the window is visible.\n */\n</scan>\n   bool isVisible();\n\n<a name=\"Method:drawLine\"><scan class=comment>/*\n * Method: drawLine\n * Usage: gw.drawLine(p0, p1);\n *        gw.drawLine(x0, y0, x1, y1);\n * -----------------------------------\n * Draws a line connecting the specified points.\n */\n</scan>\n   void drawLine(const GPoint &amp; p0, const GPoint &amp; p1);\n   void drawLine(double x0, double y0, double x1, double y1);\n\n<a name=\"Method:drawPolarLine\"><scan class=comment>/*\n * Method: drawPolarLine\n * Usage: GPoint p1 = gw.drawPolarLine(p0, r, theta);\n *        GPoint p1 = gw.drawPolarLine(x0, y0, r, theta);\n * ------------------------------------------------------\n * Draws a line of length r in the direction theta from the initial point. \n * The angle theta is measured in degrees counterclockwise from the +x\n * axis.  The method returns the end point of the line.\n */\n</scan>\n   GPoint drawPolarLine(const GPoint &amp; p0, double r, double theta);\n   GPoint drawPolarLine(double x0, double y0, double r, double theta);\n\n<a name=\"Method:drawOval\"><scan class=comment>/*\n * Method: drawOval\n * Usage: gw.drawOval(bounds);\n *        gw.drawOval(x, y, width, height);\n * ----------------------------------------\n * Draws the frame of a oval with the specified bounds.\n */\n</scan>\n   void drawOval(const GRectangle &amp; bounds);\n   void drawOval(double x, double y, double width, double height);\n\n<a name=\"Method:fillOval\"><scan class=comment>/*\n * Method: fillOval\n * Usage: gw.fillOval(bounds);\n *        gw.fillOval(x, y, width, height);\n * ----------------------------------------\n * Fills the frame of a oval with the specified bounds.\n */\n</scan>\n   void fillOval(const GRectangle &amp; bounds);\n   void fillOval(double x, double y, double width, double height);\n\n<a name=\"Method:drawRect\"><scan class=comment>/*\n * Method: drawRect\n * Usage: gw.drawRect(bounds);\n *        gw.drawRect(x, y, width, height);\n * ----------------------------------------\n * Draws the frame of a rectangle with the specified bounds.\n */\n</scan>\n   void drawRect(const GRectangle &amp; bounds);\n   void drawRect(double x, double y, double width, double height);\n\n<a name=\"Method:fillRect\"><scan class=comment>/*\n * Method: fillRect\n * Usage: gw.fillRect(bounds);\n *        gw.fillRect(x, y, width, height);\n * ----------------------------------------\n * Fills the frame of a rectangle with the specified bounds.\n */\n</scan>\n   void fillRect(const GRectangle &amp; bounds);\n   void fillRect(double x, double y, double width, double height);\n\n<a name=\"Method:setColor\"><scan class=comment>/*\n * Method: setColor\n * Usage: gw.setColor(color);\n * --------------------------\n * Sets the color used for drawing.  The color parameter is usually one of\n * the predefined color names:\n *\n *    BLACK,\n *    BLUE,\n *    CYAN,\n *    DARK_GRAY,\n *    GRAY,\n *    GREEN,\n *    LIGHT_GRAY,\n *    MAGENTA,\n *    ORANGE,\n *    PINK,\n *    RED,\n *    WHITE, and\n *    YELLOW.\n *\n * The case of the individual letters in the color name is ignored, as are\n * spaces and underscores, so that the color DARK_GRAY can be written as\n * \"Dark Gray\".\n *\n * The color can also be specified as a string in the form \"#rrggbb\" where\n * rr, gg, and bb are pairs of hexadecimal digits indicating the red,\n * green, and blue components of the color.\n */\n</scan>\n   void setColor(std::string color);\n   void setColor(int color);\n\n<a name=\"Method:getColor\"><scan class=comment>/*\n * Method: getColor\n * Usage: string color = gw.getColor();\n * ------------------------------------\n * Returns the current color as a string in the form \"#rrggbb\".  In this\n * string, the values rr, gg, and bb are two-digit hexadecimal values\n * representing the red, green, and blue components of the color,\n * respectively.\n */\n</scan>\n   std::string getColor();\n\n<a name=\"Method:getWidth\"><scan class=comment>/*\n * Method: getWidth\n * Usage: double width = gw.getWidth();\n * ------------------------------------\n * Returns the width of the graphics window in pixels.\n */\n</scan>\n   double getWidth();\n\n<a name=\"Method:getHeight\"><scan class=comment>/*\n * Method: getHeight\n * Usage: double height = gw.getHeight();\n * --------------------------------------\n * Returns the height of the graphics window in pixels.\n */\n</scan>\n   double getHeight();\n\n<a name=\"Method:repaint\"><scan class=comment>/*\n * Method: repaint\n * Usage: gw.repaint();\n * --------------------\n * Schedule a repaint on this window.\n */\n</scan>\n   void repaint();\n\n<a name=\"Method:setWindowTitle\"><scan class=comment>/*\n * Method: setWindowTitle\n * Usage: gw.setWindowTitle(title);\n * --------------------------------\n * Sets the title of the graphics window.\n */\n</scan>\n   void setWindowTitle(std::string title);\n\n<a name=\"Method:getWindowTitle\"><scan class=comment>/*\n * Method: getWindowTitle\n * Usage: string title = gw.getWindowTitle();\n * ------------------------------------------\n * Returns the title of the graphics window.\n */\n</scan>\n   std::string getWindowTitle();\n\n<a name=\"Method:draw\"><scan class=comment>/*\n * Method: draw\n * Usage: gw.draw(gobj);\n *        gw.draw(gobj, x, y);\n * ---------------------------\n * Draws the GObject on the background layer.  For convenience, the gobj\n * parameter may be passed either as a constant reference or as a pointer. \n * If the x and y parameters are included, the object is moved to that\n * location before drawing.\n */\n</scan>\n   void draw(const GObject &amp; gobj);\n   void draw(GObject *gobj);\n   void draw(const GObject *gobj);\n   void draw(GObject &amp; gobj, double x, double y);\n   void draw(GObject *gobj, double x, double y);\n\n<a name=\"Method:add\"><scan class=comment>/*\n * Method: add\n * Usage: gw.add(gobj);\n *        gw.add(gobj, x, y);\n * --------------------------\n * Adds the GObject to the foreground layer of the window.  The second form\n * of the call sets the location of the object to (x, y) first.\n *\n * In terms of memory management, adding a GObject pointer to a GWindow\n * transfers control of that object from the client to the window manager. \n * Deleting a GWindow automatically deletes any GObjects it contains.\n */\n</scan>\n   void add(GObject *gobj);\n   void add(GObject *gobj, double x, double y);\n\n<a name=\"Method:remove\"><scan class=comment>/*\n * Method: remove\n * Usage: gw.remove(gobj);\n * -----------------------\n * Removes the object from the window.\n */\n</scan>\n   void remove(GObject *gobj);\n\n<a name=\"Method:addToRegion\"><scan class=comment>/*\n * Method: addToRegion\n * Usage: gw.addToRegion(interactor, region);\n * ------------------------------------------\n * Adds the interactor (which can also be a GLabel) to the control strip\n * specified by the region parameter.  The region parameter must be one of\n * the strings \"NORTH\", \"EAST\", \"SOUTH\", or \"WEST\".\n */\n</scan>\n   void addToRegion(GInteractor *gobj, std::string region);\n   void addToRegion(GLabel *gobj, std::string region);\n\n<a name=\"Method:removeFromRegion\"><scan class=comment>/*\n * Method: removeFromRegion\n * Usage: gw.removeFromRegion(interactor, region);\n * -----------------------------------------------\n * Adds the interactor (which can also be a GLabel) to the control strip\n * specified by the region parameter.  The region parameter must be one of\n * the strings \"NORTH\", \"EAST\", \"SOUTH\", or \"WEST\".\n */\n</scan>\n   void removeFromRegion(GInteractor *gobj, std::string region);\n   void removeFromRegion(GLabel *gobj, std::string region);\n\n<a name=\"Method:getGObjectAt\"><scan class=comment>/*\n * Method: getGObjectAt\n * Usage: GObject *gobj = getGObjectAt(x, y);\n * ------------------------------------------\n * Returns a pointer to the topmost GObject containing the point (x, y), or\n * NULL if no such object exists.\n */\n</scan>\n   GObject *getGObjectAt(double x, double y);\n\n<a name=\"Method:setRegionAlignment\"><scan class=comment>/*\n * Method: setRegionAlignment\n * Usage: gw.setRegionAlignment(region, align);\n * --------------------------------------------\n * Sets the alignment of the specified side region as specified by the\n * string align.  The region parameter must be one of the strings \"NORTH\",\n * \"EAST\", \"SOUTH\", or \"WEST\" and the align parameter must be \"LEFT\",\n * \"RIGHT\", or \"CENTER\".  By default, side panels use CENTER alignment.\n */\n</scan>\n   void setRegionAlignment(std::string region, std::string align);\n\n<a name=\"Operator:==\"><scan class=comment>/*\n * Operator: ==\n * Usage: if (w1 == w2) ...\n * ------------------------\n * Checks whether the two objects refer to the same window.\n */\n</scan>\n   bool operator==(GWindow w2);\n\n<a name=\"Operator:!=\"><scan class=comment>/*\n * Operator: !=\n * Usage: if (w1 != w2) ...\n * ------------------------\n * Checks whether the two objects refer to different windows.\n */\n</scan>\n   bool operator!=(GWindow w2);\n\n<scan class=comment>/* Private section */</scan>\n\n<scan class=comment>/**********************************************************************/</scan>\n<scan class=comment>/* Note: Everything below this point in the file is logically part    */</scan>\n<scan class=comment>/* of the implementation and should not be of interest to clients.    */</scan>\n<scan class=comment>/**********************************************************************/</scan>\n\n   explicit GWindow(bool visible);\n   GWindow(double width, double height, bool visible);\n   GWindow(GWindowData *gwd);\n\nprivate:\n\n<scan class=comment>/* Instance variables */</scan>\n\n   GWindowData *gwd;\n\n<scan class=comment>/* Private methods */</scan>\n\n   void initGWindow(double width, double height, bool visible);\n\n   friend class Platform;\n   friend class GKeyEvent;\n   friend class GMouseEvent;\n   friend class GWindowEvent;\n\n};\n\n<a name=\"Function:repaint\"><scan class=comment>/*\n * Function: repaint\n * Usage: repaint();\n * -----------------\n * Issues a request to update all graphics windows.  This function is\n * called automatically when the program pauses, waits for an event, waits\n * for user input on the console, or terminates.  As a result, most clients\n * never need to call repaint explicitly.\n */\n</scan>\nvoid repaint();\n\n<a name=\"Function:pause\"><scan class=comment>/*\n * Function: pause\n * Usage: pause(milliseconds);\n * ---------------------------\n * Pauses for the indicated number of milliseconds.  This function is\n * useful for animation where the motion would otherwise be too fast.\n */\n</scan>\nvoid pause(double milliseconds);\n\n<a name=\"Function:getScreenWidth\"><scan class=comment>/*\n * Function: getScreenWidth\n * Usage: width = getScreenWidth();\n * --------------------------------\n * Returns the width of the entire display screen.\n */\n</scan>\ndouble getScreenWidth();\n\n<a name=\"Function:getScreenHeight\"><scan class=comment>/*\n * Function: getScreenHeight\n * Usage: height = getScreenHeight();\n * ----------------------------------\n * Returns the height of the entire display screen.\n */\n</scan>\ndouble getScreenHeight();\n\n<a name=\"Function:convertColorToRGB\"><scan class=comment>/*\n * Function: convertColorToRGB\n * Usage: int rgb = convertColorToRGB(colorName);\n * ----------------------------------------------\n * Converts a color name into an integer that encodes the red, green, and\n * blue components of the color.\n */\n</scan>\nint convertColorToRGB(std::string colorName);\n\n<a name=\"Function:convertRGBToColor\"><scan class=comment>/*\n * Function: convertRGBToColor\n * Usage: int colorName = convertRGBToColor(rgb);\n * ----------------------------------------------\n * Converts an rgb value into a color name in the form \"#rrggbb\".  Each of\n * the rr, gg, and bb values are two-digit hexadecimal numbers indicating\n * the intensity of that component.\n */\n</scan>\nstd::string convertRGBToColor(int rgb);\n\n<a name=\"Function:waitForClick\"><scan class=comment>/*\n * Function: waitForClick\n * Usage: waitForClick();\n * ----------------------\n * Waits for a mouse click to occur anywhere in any window.\n */\n</scan>\nvoid waitForClick();\n\n<a name=\"Function:exitGraphics\"><scan class=comment>/*\n * Function: exitGraphics\n * Usage: exitGraphics();\n * ----------------------\n * Closes all graphics windows and exits from the application without\n * waiting for any additional user interaction.\n */\n</scan>\nvoid exitGraphics();\n\n#include \"console.h\"\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/docs/_old/hashmap-h.html",
    "content": "<html>\n<head>\n<title>../include/hashmap.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: hashmap.h\n * ---------------\n * This file exports the HashMap class, which stores a set of key-value\n * pairs.\n */\n</scan>\n#ifndef _hashmap_h\n#define _hashmap_h\n\n#include &lt;cstdlib&gt;\n#include &lt;string&gt;\n#include \"vector.h\"\n\n<a name=\"Function:hashCode\"><scan class=comment>/*\n * Function: hashCode\n * Usage: int hash = hashCode(key);\n * --------------------------------\n * Returns a hash code for the specified key, which is always a nonnegative\n * integer.  This function is overloaded to support all of the primitive\n * types and the C++ string type.\n */\n</scan>\nint hashCode(const std::string &amp; key);\nint hashCode(int key);\nint hashCode(char key);\nint hashCode(long key);\nint hashCode(double key);\n\n<a name=\"Class:HashMap<KeyType,ValueType>\"><scan class=comment>/*\n * Class: HashMap&lt;KeyType,ValueType&gt;\n * ---------------------------------\n * This class implements an efficient association between keys and values. \n * This class is identical to the Map class except for the fact that it\n * uses a hash table as its underlying representation.  Although the\n * HashMap class operates in constant time, the iterator for HashMap\n * returns the values in a seemingly random order.\n */\n</scan>\ntemplate &lt;typename KeyType, typename ValueType&gt;\nclass HashMap {\n\npublic:\n\n<a name=\"Constructor:HashMap\"><scan class=comment>/*\n * Constructor: HashMap\n * Usage: HashMap&lt;KeyType,ValueType&gt; map;\n * --------------------------------------\n * Initializes a new empty map that associates keys and values of the\n * specified types.  The type used for the key must define the == operator,\n * and there must be a free function with the following signature:\n *\n *    int hashCode(KeyType key);\n *\n * that returns a positive integer determined by the key.  This interface\n * exports hashCode functions for string and the C++ primitive types.\n */\n</scan>\n   HashMap();\n\n<a name=\"Destructor:~HashMap\"><scan class=comment>/*\n * Destructor: ~HashMap\n * --------------------\n * Frees any heap storage associated with this map.\n */\n</scan>\n   virtual ~HashMap();\n\n<a name=\"Method:size\"><scan class=comment>/*\n * Method: size\n * Usage: int nEntries = map.size();\n * ---------------------------------\n * Returns the number of entries in this map.\n */\n</scan>\n   int size() const;\n\n<a name=\"Method:isEmpty\"><scan class=comment>/*\n * Method: isEmpty\n * Usage: if (map.isEmpty()) ...\n * -----------------------------\n * Returns true if this map contains no entries.\n */\n</scan>\n   bool isEmpty() const;\n\n<a name=\"Method:put\"><scan class=comment>/*\n * Method: put\n * Usage: map.put(key, value);\n * ---------------------------\n * Associates key with value in this map.  Any previous value associated\n * with key is replaced by the new value.\n */\n</scan>\n   void put(KeyType key, ValueType value);\n\n<a name=\"Method:get\"><scan class=comment>/*\n * Method: get\n * Usage: ValueType value = map.get(key);\n * --------------------------------------\n * Returns the value associated with key in this map.  If key is not found,\n * get returns the default value for ValueType.\n */\n</scan>\n   ValueType get(KeyType key) const;\n\n<a name=\"Method:containsKey\"><scan class=comment>/*\n * Method: containsKey\n * Usage: if (map.containsKey(key)) ...\n * ------------------------------------\n * Returns true if there is an entry for key in this map.\n */\n</scan>\n   bool containsKey(KeyType key) const;\n\n<a name=\"Method:remove\"><scan class=comment>/*\n * Method: remove\n * Usage: map.remove(key);\n * -----------------------\n * Removes any entry for key from this map.\n */\n</scan>\n   void remove(KeyType key);\n\n<a name=\"Method:clear\"><scan class=comment>/*\n * Method: clear\n * Usage: map.clear();\n * -------------------\n * Removes all entries from this map.\n */\n</scan>\n   void clear();\n\n<a name=\"Operator:[]\"><scan class=comment>/*\n * Operator: []\n * Usage: map[key]\n * ---------------\n * Selects the value associated with key.  This syntax makes it easy to\n * think of a map as an \"associative array\" indexed by the key type.  If\n * key is already present in the map, this function returns a reference to\n * its associated value.  If key is not present in the map, a new entry is\n * created whose value is set to the default for the value type.\n */\n</scan>\n   ValueType &amp; operator[](KeyType key);\n   ValueType operator[](KeyType key) const;\n\n<a name=\"Method:toString\"><scan class=comment>/*\n * Method: toString\n * Usage: string str = map.toString();\n * -----------------------------------\n * Converts the map to a printable string representation.\n */\n</scan>\n   std::string toString();\n\n<a name=\"Method:mapAll\"><scan class=comment>/*\n * Method: mapAll\n * Usage: map.mapAll(fn);\n * ----------------------\n * Iterates through the map entries and calls fn(key, value) for each one. \n * The keys are processed in an undetermined order.\n */\n</scan>\n   void mapAll(void (*fn)(KeyType, ValueType)) const;\n   void mapAll(void (*fn)(const KeyType &amp;, const ValueType &amp;)) const;\n   template &lt;typename FunctorType&gt;\n   void mapAll(FunctorType fn) const;\n\n<scan class=comment>/*\n * Additional HashMap operations\n * -----------------------------\n * In addition to the methods listed in this interface, the HashMap class\n * supports the following operations:\n *\n *   - Stream I/O using the &lt;&lt; and &gt;&gt; operators\n *   - Deep copying for the copy constructor and assignment operator\n *   - Iteration using the range-based for statement and STL iterators\n *\n * The HashMap class makes no guarantees about the order of iteration.\n */\n</scan>\n<scan class=comment>/* Private section */</scan>\n\n<scan class=comment>/**********************************************************************/</scan>\n<scan class=comment>/* Note: Everything below this point in the file is logically part    */</scan>\n<scan class=comment>/* of the implementation and should not be of interest to clients.    */</scan>\n<scan class=comment>/**********************************************************************/</scan>\n\n<scan class=comment>/*\n * Implementation notes:\n * ---------------------\n * The HashMap class is represented using a hash table that uses bucket\n * chaining to resolve collisions.\n */\n</scan>\nprivate:\n\n<scan class=comment>/* Constant definitions */</scan>\n\n   static const int INITIAL_BUCKET_COUNT = 101;\n   static const int MAX_LOAD_PERCENTAGE = 70;\n\n<scan class=comment>/* Type definition for cells in the bucket chain */</scan>\n\n   struct Cell {\n      KeyType key;\n      ValueType value;\n      Cell *next;\n   };\n\n<scan class=comment>/* Instance variables */</scan>\n\n   Vector&lt;Cell *&gt; buckets;\n   int nBuckets;\n   int numEntries;\n\n<scan class=comment>/* Private methods */</scan>\n\n<a name=\"Private method:createBuckets\"><scan class=comment>/*\n * Private method: createBuckets\n * Usage: createBuckets(nBuckets);\n * -------------------------------\n * Sets up the vector of buckets to have nBuckets entries, each NULL.  If\n * asked to make empty vector, makes one bucket just to simplify handling\n * elsewhere.\n */\n</scan>\n   void createBuckets(int nBuckets) {\n      if (nBuckets == 0) nBuckets = 1;\n      buckets = Vector&lt;Cell *&gt;(nBuckets, NULL);\n      this-&gt;nBuckets = nBuckets;\n      numEntries = 0;\n   }\n\n<a name=\"Private method:deleteBuckets\"><scan class=comment>/*\n * Private method: deleteBuckets\n * Usage: deleteBuckets(buckets);\n * ------------------------------\n * Deletes all the cells in the linked lists contained in vector.\n */\n</scan>\n   void deleteBuckets(Vector &lt;Cell *&gt; &amp; buckets) {\n      for (int i = 0; i &lt; buckets.size(); i++) {\n         Cell *cp = buckets[i];\n         while (cp != NULL) {\n            Cell *np = cp-&gt;next;\n            delete cp;\n            cp = np;\n         }\n         buckets[i] = NULL;\n      }\n   }\n\n<a name=\"Private method:expandAndRehash\"><scan class=comment>/*\n * Private method: expandAndRehash\n * Usage: expandAndRehash();\n * -------------------------\n * This method is used to increase the number of buckets in the map and\n * then rehashes all existing entries and adds them into new buckets.  This\n * operation is used when the load factor (i.e. the number of cells per\n * bucket) has increased enough to warrant this O(N) operation to enlarge\n * and redistribute the entries.\n */\n</scan>\n   void expandAndRehash() {\n      Vector&lt;Cell *&gt;oldBuckets = buckets;\n      createBuckets(oldBuckets.size() * 2 + 1);\n      for (int i = 0; i &lt; oldBuckets.size(); i++) {\n         for (Cell *cp = oldBuckets[i]; cp != NULL; cp = cp-&gt;next) {\n            put(cp-&gt;key, cp-&gt;value);\n         }\n      }\n      deleteBuckets(oldBuckets);\n   }\n\n<a name=\"Private method:findCell\"><scan class=comment>/*\n * Private method: findCell\n * Usage: Cell *cp = findCell(bucket, key);\n *        Cell *cp = findCell(bucket, key, parent);\n * ------------------------------------------------\n * Finds a cell in the chain for the specified bucket that matches key.  If\n * a match is found, the return value is a pointer to the cell containing\n * the matching key.  If no match is found, the function returns NULL.  If\n * the optional third argument is supplied, it is filled in with the cell\n * preceding the matching cell to allow the client to splice out the target\n * cell in the delete call.  If parent is NULL, it indicates that the cell\n * is the first cell in the bucket chain.\n */\n</scan>\n   Cell *findCell(int bucket, KeyType key) const {\n      Cell *dummy;\n      return findCell(bucket, key, dummy);\n   }\n\n   Cell *findCell(int bucket, KeyType key, Cell * &amp; parent) const {\n      parent = NULL;\n      Cell *cp = buckets.get(bucket);\n      while (cp != NULL &amp;&amp; key != cp-&gt;key) {\n         parent = cp;\n         cp = cp-&gt;next;\n      }\n      return cp;\n   }\n\n   void deepCopy(const HashMap &amp; src) {\n      createBuckets(src.nBuckets);\n      for (int i = 0; i &lt; src.nBuckets; i++) {\n         for (Cell *cp = src.buckets.get(i); cp != NULL; cp = cp-&gt;next) {\n            put(cp-&gt;key, cp-&gt;value);\n         }\n      }\n   }\n\npublic:\n\n<scan class=comment>/*\n * Hidden features\n * ---------------\n * The remainder of this file consists of the code required to support deep\n * copying and iteration.  Including these methods in the public interface\n * would make that interface more difficult to understand for the average\n * client.\n */\n</scan>\n<scan class=comment>/*\n * Deep copying support\n * --------------------\n * This copy constructor and operator= are defined to make a deep copy,\n * making it possible to pass/return maps by value and assign from one map\n * to another.\n */\n</scan>\n   HashMap &amp; operator=(const HashMap &amp; src) {\n      if (this != &amp;src) {\n         clear();\n         deepCopy(src);\n      }\n      return *this;\n   }\n\n   HashMap(const HashMap &amp; src) {\n      deepCopy(src);\n   }\n\n<scan class=comment>/*\n * Iterator support\n * ----------------\n * The classes in the StanfordCPPLib collection implement input iterators\n * so that they work symmetrically with respect to the corresponding STL\n * classes.\n */\n</scan>\n   class iterator : public std::iterator&lt;std::input_iterator_tag,KeyType&gt; {\n\n   private:\n\n      const HashMap *mp;           <scan class=comment>/* Pointer to the map           */</scan>\n      int bucket;                  <scan class=comment>/* Index of current bucket      */</scan>\n      Cell *cp;                    <scan class=comment>/* Current cell in bucket chain */</scan>\n\n   public:\n\n      iterator() {\n        <scan class=comment>/* Empty */</scan>\n      }\n\n      iterator(const HashMap *mp, bool end) {\n         this-&gt;mp = mp;\n         if (end) {\n            bucket = mp-&gt;nBuckets;\n            cp = NULL;\n         } else {\n            bucket = 0;\n            cp = mp-&gt;buckets.get(bucket);\n            while (cp == NULL &amp;&amp; ++bucket &lt; mp-&gt;nBuckets) {\n               cp = mp-&gt;buckets.get(bucket);\n            }\n         }\n      }\n\n      iterator(const iterator &amp; it) {\n         mp = it.mp;\n         bucket = it.bucket;\n         cp = it.cp;\n      }\n\n      iterator &amp; operator++() {\n         cp = cp-&gt;next;\n         while (cp == NULL &amp;&amp; ++bucket &lt; mp-&gt;nBuckets) {\n            cp = mp-&gt;buckets.get(bucket);\n         }\n         return *this;\n      }\n\n      iterator operator++(int) {\n         iterator copy(*this);\n         operator++();\n         return copy;\n      }\n\n      bool operator==(const iterator &amp; rhs) {\n         return mp == rhs.mp &amp;&amp; bucket == rhs.bucket &amp;&amp; cp == rhs.cp;\n      }\n\n      bool operator!=(const iterator &amp; rhs) {\n         return !(*this == rhs);\n      }\n\n      KeyType operator*() {\n         return cp-&gt;key;\n      }\n\n      KeyType *operator-&gt;() {\n         return &amp;cp-&gt;key;\n      }\n\n      friend class HashMap;\n\n   };\n\n   iterator begin() const {\n      return iterator(this, false);\n   }\n\n   iterator end() const {\n      return iterator(this, true);\n   }\n\n};\n\n<a name=\"Implementation notes:HashMap class\"><scan class=comment>/*\n * Implementation notes: HashMap class\n * -----------------------------------\n * In this map implementation, the entries are stored in a hashtable.  The\n * hashtable keeps a vector of \"buckets\", where each bucket is a linked\n * list of elements that share the same hash code (i.e. hash collisions are\n * resolved by chaining). The buckets are dynamically allocated so that we\n * can change the the number of buckets (rehash) when the load factor\n * becomes too high. The map should provide O(1) performance on the\n * put/remove/get operations.\n */\n</scan>\ntemplate &lt;typename KeyType,typename ValueType&gt;\nHashMap&lt;KeyType,ValueType&gt;::HashMap() {\n   createBuckets(INITIAL_BUCKET_COUNT);\n}\n\ntemplate &lt;typename KeyType,typename ValueType&gt;\nHashMap&lt;KeyType,ValueType&gt;::~HashMap() {\n   deleteBuckets(buckets);\n}\n\ntemplate &lt;typename KeyType,typename ValueType&gt;\nint HashMap&lt;KeyType,ValueType&gt;::size() const {\n   return numEntries;\n}\n\ntemplate &lt;typename KeyType,typename ValueType&gt;\nbool HashMap&lt;KeyType,ValueType&gt;::isEmpty() const {\n   return size() == 0;\n}\n\ntemplate &lt;typename KeyType,typename ValueType&gt;\nvoid HashMap&lt;KeyType,ValueType&gt;::put(KeyType key, ValueType value) {\n   (*this)[key] = value;\n}\n\ntemplate &lt;typename KeyType,typename ValueType&gt;\nValueType HashMap&lt;KeyType,ValueType&gt;::get(KeyType key) const {\n   Cell *cp = findCell(hashCode(key) % nBuckets, key);\n   if (cp == NULL) return ValueType();\n   return cp-&gt;value;\n}\n\ntemplate &lt;typename KeyType,typename ValueType&gt;\nbool HashMap&lt;KeyType,ValueType&gt;::containsKey(KeyType key) const {\n   return findCell(hashCode(key) % nBuckets, key) != NULL;\n}\n\ntemplate &lt;typename KeyType,typename ValueType&gt;\nvoid HashMap&lt;KeyType,ValueType&gt;::remove(KeyType key) {\n   int bucket = hashCode(key) % nBuckets;\n   Cell *parent;\n   Cell *cp = findCell(bucket, key, parent);\n   if (cp != NULL) {\n      if (parent == NULL) {\n         buckets[bucket] = cp-&gt;next;\n      } else {\n         parent-&gt;next = cp-&gt;next;\n      }\n      delete cp;\n      numEntries--;\n   }\n}\n\ntemplate &lt;typename KeyType,typename ValueType&gt;\nvoid HashMap&lt;KeyType,ValueType&gt;::clear() {\n   deleteBuckets(buckets);\n   numEntries = 0;\n}\n\ntemplate &lt;typename KeyType,typename ValueType&gt;\nValueType &amp; HashMap&lt;KeyType,ValueType&gt;::operator[](KeyType key) {\n   int bucket = hashCode(key) % nBuckets;\n   Cell *cp = findCell(bucket, key);\n   if (cp == NULL) {\n      if (numEntries &gt; MAX_LOAD_PERCENTAGE * nBuckets / 100.0) {\n         expandAndRehash();\n         bucket = hashCode(key) % nBuckets;\n      }\n      cp = new Cell;\n      cp-&gt;key = key;\n      cp-&gt;value = ValueType();\n      cp-&gt;next = buckets[bucket];\n      buckets[bucket] = cp;\n      numEntries++;\n   }\n   return cp-&gt;value;\n}\n\ntemplate &lt;typename KeyType,typename ValueType&gt;\nvoid HashMap&lt;KeyType,ValueType&gt;::mapAll(void (*fn)(KeyType, ValueType)) const {\n   for (int i = 0 ; i &lt; buckets.size(); i++) {\n      for (Cell *cp = buckets.get(i); cp != NULL; cp = cp-&gt;next) {\n         fn(cp-&gt;key, cp-&gt;value);\n      }\n   }\n}\n\ntemplate &lt;typename KeyType,typename ValueType&gt;\nvoid HashMap&lt;KeyType,ValueType&gt;::mapAll(void (*fn)(const KeyType &amp;,\n                                                   const ValueType &amp;)) const {\n   for (int i = 0 ; i &lt; buckets.size(); i++) {\n      for (Cell *cp = buckets.get(i); cp != NULL; cp = cp-&gt;next) {\n         fn(cp-&gt;key, cp-&gt;value);\n      }\n   }\n}\n\ntemplate &lt;typename KeyType,typename ValueType&gt;\ntemplate &lt;typename FunctorType&gt;\nvoid HashMap&lt;KeyType,ValueType&gt;::mapAll(FunctorType fn) const {\n   for (int i = 0 ; i &lt; buckets.size(); i++) {\n      for (Cell *cp = buckets.get(i); cp != NULL; cp = cp-&gt;next) {\n         fn(cp-&gt;key, cp-&gt;value);\n      }\n   }\n}\n\ntemplate &lt;typename KeyType, typename ValueType&gt;\nValueType HashMap&lt;KeyType,ValueType&gt;::operator[](KeyType key) const {\n   return get(key);\n}\n\ntemplate &lt;typename KeyType, typename ValueType&gt;\nstd::string HashMap&lt;KeyType,ValueType&gt;::toString() {\n   ostringstream os;\n   os &lt;&lt; *this;\n   return os.str();\n}\n\n<a name=\"Implementation notes:<< and >>\"><scan class=comment>/*\n * Implementation notes: &lt;&lt; and &gt;&gt;\n * -------------------------------\n * The insertion and extraction operators use the template facilities in\n * strlib.h to read and write generic values in a way that treats strings\n * specially.\n */\n</scan>\ntemplate &lt;typename KeyType, typename ValueType&gt;\nstd::ostream &amp; operator&lt;&lt;(std::ostream &amp; os,\n                          const HashMap&lt;KeyType,ValueType&gt; &amp; map) {\n   os &lt;&lt; \"{\";\n   typename HashMap&lt;KeyType,ValueType&gt;::iterator begin = map.begin();\n   typename HashMap&lt;KeyType,ValueType&gt;::iterator end = map.end();\n   typename HashMap&lt;KeyType,ValueType&gt;::iterator it = begin;\n   while (it != end) {\n      if (it != begin) os &lt;&lt; \", \";\n      writeGenericValue(os, *it, false);\n      os &lt;&lt; \":\";\n      writeGenericValue(os, map[*it], false);\n      ++it;\n   }\n   return os &lt;&lt; \"}\";\n}\n\ntemplate &lt;typename KeyType, typename ValueType&gt;\nstd::istream &amp; operator&gt;&gt;(std::istream &amp; is,\n                          HashMap&lt;KeyType,ValueType&gt; &amp; map) {\n   char ch;\n   is &gt;&gt; ch;\n   if (ch != '{') error(\"operator &gt;&gt;: Missing {\");\n   map.clear();\n   is &gt;&gt; ch;\n   if (ch != '}') {\n      is.unget();\n      while (true) {\n         KeyType key;\n         readGenericValue(is, key);\n         is &gt;&gt; ch;\n         if (ch != ':') error(\"operator &gt;&gt;: Missing colon after key\");\n         ValueType value;\n         readGenericValue(is, value);\n         map[key] = value;\n         is &gt;&gt; ch;\n         if (ch == '}') break;\n         if (ch != ',') {\n            error(std::string(\"operator &gt;&gt;: Unexpected character \") + ch);\n         }\n      }\n   }\n   return is;\n}\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/docs/_old/hashset-h.html",
    "content": "<html>\n<head>\n<title>../include/hashset.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: hashset.h\n * ---------------\n * This file exports the HashSet class, which implements an efficient\n * abstraction for storing sets of values.\n */\n</scan>\n#ifndef _hashset_h\n#define _hashset_h\n\n#include &lt;iostream&gt;\n#include \"hashmap.h\"\n#include \"vector.h\"\n\n<a name=\"Class:HashSet<ValueType>\"><scan class=comment>/*\n * Class: HashSet&lt;ValueType&gt;\n * -------------------------\n * This class implements an efficient abstraction for storing sets of\n * distinct elements.  This class is identical to the Set class except for\n * the fact that it uses a hash table as its underlying representation. \n * The advantage of the HashSet class is that it operates in constant time,\n * as opposed to the O(log N) time for the Set class.  The disadvantage of\n * HashSet is that iterators return the values in a seemingly random order.\n */\n</scan>\ntemplate &lt;typename ValueType&gt;\nclass HashSet {\n\npublic:\n\n<a name=\"Constructor:HashSet\"><scan class=comment>/*\n * Constructor: HashSet\n * Usage: HashSet&lt;ValueType&gt; set;\n * ------------------------------\n * Initializes an empty set of the specified element type.\n */\n</scan>\n   HashSet();\n\n<a name=\"Destructor:~HashSet\"><scan class=comment>/*\n * Destructor: ~HashSet\n * --------------------\n * Frees any heap storage associated with this set.\n */\n</scan>\n   virtual ~HashSet();\n\n<a name=\"Method:size\"><scan class=comment>/*\n * Method: size\n * Usage: count = set.size();\n * --------------------------\n * Returns the number of elements in this set.\n */\n</scan>\n   int size() const;\n\n<a name=\"Method:isEmpty\"><scan class=comment>/*\n * Method: isEmpty\n * Usage: if (set.isEmpty()) ...\n * -----------------------------\n * Returns true if this set contains no elements.\n */\n</scan>\n   bool isEmpty() const;\n\n<a name=\"Method:add\"><scan class=comment>/*\n * Method: add\n * Usage: set.add(value);\n * ----------------------\n * Adds an element to this set, if it was not already there.  For\n * compatibility with the STL set class, this method is also exported as\n * insert.\n */\n</scan>\n   void add(const ValueType &amp; value);\n   void insert(const ValueType &amp; value);\n\n<a name=\"Method:remove\"><scan class=comment>/*\n * Method: remove\n * Usage: set.remove(value);\n * -------------------------\n * Removes an element from this set.  If the value was not contained in the\n * set, no error is generated and the set remains unchanged.\n */\n</scan>\n   void remove(const ValueType &amp; value);\n\n<a name=\"Method:contains\"><scan class=comment>/*\n * Method: contains\n * Usage: if (set.contains(value)) ...\n * -----------------------------------\n * Returns true if the specified value is in this set.\n */\n</scan>\n   bool contains(const ValueType &amp; value) const;\n\n<a name=\"Method:isSubsetOf\"><scan class=comment>/*\n * Method: isSubsetOf\n * Usage: if (set.isSubsetOf(set2)) ...\n * ------------------------------------\n * Implements the subset relation on sets.  It returns true if every\n * element of this set is contained in set2.\n */\n</scan>\n   bool isSubsetOf(const HashSet &amp; set2) const;\n\n<a name=\"Method:clear\"><scan class=comment>/*\n * Method: clear\n * Usage: set.clear();\n * -------------------\n * Removes all elements from this set.\n */\n</scan>\n   void clear();\n\n<a name=\"Operator:==\"><scan class=comment>/*\n * Operator: ==\n * Usage: set1 == set2\n * -------------------\n * Returns true if set1 and set2 contain the same elements.\n */\n</scan>\n   bool operator==(const HashSet &amp; set2) const;\n\n<a name=\"Operator:!=\"><scan class=comment>/*\n * Operator: !=\n * Usage: set1 != set2\n * -------------------\n * Returns true if set1 and set2 are different.\n */\n</scan>\n   bool operator!=(const HashSet &amp; set2) const;\n\n<a name=\"Operator:+\"><scan class=comment>/*\n * Operator: +\n * Usage: set1 + set2\n *        set1 + element\n * ---------------------\n * Returns the union of sets set1 and set2, which is the set of elements\n * that appear in at least one of the two sets.  The right hand set can be\n * replaced by an element of the value type, in which case the operator\n * returns a new set formed by adding that element.\n */\n</scan>\n   HashSet operator+(const HashSet &amp; set2) const;\n   HashSet operator+(const ValueType &amp; element) const;\n\n<a name=\"Operator:*\"><scan class=comment>/*\n * Operator: *\n * Usage: set1 * set2\n * ------------------\n * Returns the intersection of sets set1 and set2, which is the set of all\n * elements that appear in both.\n */\n</scan>\n   HashSet operator*(const HashSet &amp; set2) const;\n\n<a name=\"Operator:-\"><scan class=comment>/*\n * Operator: -\n * Usage: set1 - set2\n *        set1 - element\n * ---------------------\n * Returns the difference of sets set1 and set2, which is all of the\n * elements that appear in set1 but not set2.  The right hand set can be\n * replaced by an element of the value type, in which case the operator\n * returns a new set formed by removing that element.\n */\n</scan>\n   HashSet operator-(const HashSet &amp; set2) const;\n   HashSet operator-(const ValueType &amp; element) const;\n\n<a name=\"Operator:+=\"><scan class=comment>/*\n * Operator: +=\n * Usage: set1 += set2;\n *        set1 += value;\n * ---------------------\n * Adds all of the elements from set2 (or the single specified value) to\n * set1.  As a convenience, the HashSet package also overloads the comma\n * operator so that it is possible to initialize a set like this:\n *\n *    HashSet&lt;int&lt; digits;\n *    digits += 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;\n */\n</scan>\n   HashSet &amp; operator+=(const HashSet &amp; set2);\n   HashSet &amp; operator+=(const ValueType &amp; value);\n\n<a name=\"Operator:*=\"><scan class=comment>/*\n * Operator: *=\n * Usage: set1 *= set2;\n * --------------------\n * Removes any elements from set1 that are not present in set2.\n */\n</scan>\n   HashSet &amp; operator*=(const HashSet &amp; set2);\n\n<a name=\"Operator:-=\"><scan class=comment>/*\n * Operator: -=\n * Usage: set1 -= set2;\n *        set1 -= value;\n * ---------------------\n * Removes the elements from set2 (or the single specified value) from\n * set1.  As a convenience, the HashSet package also overloads the comma\n * operator so that it is possible to remove multiple elements from a set\n * like this:\n *\n *    digits -= 0, 2, 4, 6, 8;\n *\n * which removes the values 0, 2, 4, 6, and 8 from the set digits.\n */\n</scan>\n   HashSet &amp; operator-=(const HashSet &amp; set2);\n   HashSet &amp; operator-=(const ValueType &amp; value);\n\n<a name=\"Method:first\"><scan class=comment>/*\n * Method: first\n * Usage: ValueType value = set.first();\n * -------------------------------------\n * Returns the first value in the set in the order established by the\n * foreach macro.  If the set is empty, first generates an error.\n */\n</scan>\n   ValueType first() const;\n\n<a name=\"Method:toString\"><scan class=comment>/*\n * Method: toString\n * Usage: string str = set.toString();\n * -----------------------------------\n * Converts the set to a printable string representation.\n */\n</scan>\n   std::string toString();\n\n<a name=\"Method:mapAll\"><scan class=comment>/*\n * Method: mapAll\n * Usage: set.mapAll(fn);\n * ----------------------\n * Iterates through the elements of the set and calls fn(value) for each\n * one.  The values are processed in ascending order, as defined by the\n * comparison function.\n */\n</scan>\n   void mapAll(void (*fn)(ValueType)) const;\n   void mapAll(void (*fn)(const ValueType &amp;)) const;\n\n   template &lt;typename FunctorType&gt;\n   void mapAll(FunctorType fn) const;\n\n<scan class=comment>/*\n * Additional HashSet operations\n * -----------------------------\n * In addition to the methods listed in this interface, the HashSet class\n * supports the following operations:\n *\n *   - Stream I/O using the &lt;&lt; and &gt;&gt; operators\n *   - Deep copying for the copy constructor and assignment operator\n *   - Iteration using the range-based for statement and STL iterators\n *\n * The iteration forms process the HashSet in an unspecified order.\n */\n</scan>\n<scan class=comment>/* Private section */</scan>\n\n<scan class=comment>/**********************************************************************/</scan>\n<scan class=comment>/* Note: Everything below this point in the file is logically part    */</scan>\n<scan class=comment>/* of the implementation and should not be of interest to clients.    */</scan>\n<scan class=comment>/**********************************************************************/</scan>\n\nprivate:\n\n   HashMap&lt;ValueType,bool&gt; map;        <scan class=comment>/* Map used to store the element     */</scan>\n   bool removeFlag;                    <scan class=comment>/* Flag to differentiate += and -=   */</scan>\n\npublic:\n\n<scan class=comment>/*\n * Hidden features\n * ---------------\n * The remainder of this file consists of the code required to support the\n * comma operator, deep copying, and iteration.  Including these methods in\n * the public interface would make that interface more difficult to\n * understand for the average client.\n */\n</scan>\n   HashSet &amp; operator,(const ValueType &amp; value) {\n      if (this-&gt;removeFlag) {\n         this-&gt;remove(value);\n      } else {\n         this-&gt;add(value);\n      }\n      return *this;\n   }\n\n<scan class=comment>/*\n * Iterator support\n * ----------------\n * The classes in the StanfordCPPLib collection implement input iterators\n * so that they work symmetrically with respect to the corresponding STL\n * classes.\n */\n</scan>\n   class iterator : public std::iterator&lt;std::input_iterator_tag,ValueType&gt; {\n\n   private:\n\n      typename HashMap&lt;ValueType,bool&gt;::iterator mapit;\n\n   public:\n\n      iterator() {\n         <scan class=comment>/* Empty */</scan>\n      }\n\n      iterator(typename HashMap&lt;ValueType,bool&gt;::iterator it) : mapit(it) {\n         <scan class=comment>/* Empty */</scan>\n      }\n\n      iterator(const iterator &amp; it) {\n         mapit = it.mapit;\n      }\n\n      iterator &amp; operator++() {\n         ++mapit;\n         return *this;\n      }\n\n      iterator operator++(int) {\n         iterator copy(*this);\n         operator++();\n         return copy;\n      }\n\n      bool operator==(const iterator &amp; rhs) {\n         return mapit == rhs.mapit;\n      }\n\n      bool operator!=(const iterator &amp; rhs) {\n         return !(*this == rhs);\n      }\n\n      ValueType operator*() {\n         return *mapit;\n      }\n\n      ValueType *operator-&gt;() {\n         return mapit;\n      }\n   };\n\n   iterator begin() const {\n      return iterator(map.begin());\n   }\n\n   iterator end() const {\n      return iterator(map.end());\n   }\n\n};\n\nextern void error(std::string msg);\n\ntemplate &lt;typename ValueType&gt;\nHashSet&lt;ValueType&gt;::HashSet() {\n   <scan class=comment>/* Empty */</scan>\n}\n\ntemplate &lt;typename ValueType&gt;\nHashSet&lt;ValueType&gt;::~HashSet() {\n   <scan class=comment>/* Empty */</scan>\n}\n\ntemplate &lt;typename ValueType&gt;\nint HashSet&lt;ValueType&gt;::size() const {\n   return map.size();\n}\n\ntemplate &lt;typename ValueType&gt;\nbool HashSet&lt;ValueType&gt;::isEmpty() const {\n   return map.isEmpty();\n}\n\ntemplate &lt;typename ValueType&gt;\nvoid HashSet&lt;ValueType&gt;::add(const ValueType &amp; value) {\n   map.put(value, true);\n}\n\ntemplate &lt;typename ValueType&gt;\nvoid HashSet&lt;ValueType&gt;::insert(const ValueType &amp; value) {\n   map.put(value, true);\n}\n\ntemplate &lt;typename ValueType&gt;\nvoid HashSet&lt;ValueType&gt;::remove(const ValueType &amp; value) {\n   map.remove(value);\n}\n\ntemplate &lt;typename ValueType&gt;\nbool HashSet&lt;ValueType&gt;::contains(const ValueType &amp; value) const {\n   return map.containsKey(value);\n}\n\ntemplate &lt;typename ValueType&gt;\nvoid HashSet&lt;ValueType&gt;::clear() {\n   map.clear();\n}\n\ntemplate &lt;typename ValueType&gt;\nbool HashSet&lt;ValueType&gt;::isSubsetOf(const HashSet &amp; set2) const {\n   iterator it = begin();\n   iterator end = this-&gt;end();\n   while (it != end) {\n      if (!set2.map.containsKey(*it)) return false;\n      ++it;\n   }\n   return true;\n}\n\n<a name=\"Implementation notes:set operators\"><scan class=comment>/*\n * Implementation notes: set operators\n * -----------------------------------\n * The implementations for the set operators use iteration to walk over the\n * elements in one or both sets.\n */\n</scan>\ntemplate &lt;typename ValueType&gt;\nbool HashSet&lt;ValueType&gt;::operator==(const HashSet &amp; set2) const {\n   return this-&gt;isSubsetOf(set2) &amp;&amp; set2.isSubsetOf(*this);\n}\n\ntemplate &lt;typename ValueType&gt;\nbool HashSet&lt;ValueType&gt;::operator!=(const HashSet &amp; set2) const {\n   return !(*this == set2);\n}\n\ntemplate &lt;typename ValueType&gt;\nHashSet&lt;ValueType&gt; HashSet&lt;ValueType&gt;::operator+(const HashSet &amp; set2) const {\n   HashSet&lt;ValueType&gt; set = *this;\n   foreach (ValueType value in set2) {\n      set.add(value);\n   }\n   return set;\n}\n\ntemplate &lt;typename ValueType&gt;\nHashSet&lt;ValueType&gt;\nHashSet&lt;ValueType&gt;::operator+(const ValueType &amp; element) const {\n   HashSet&lt;ValueType&gt; set = *this;\n   set.add(element);\n   return set;\n}\n\ntemplate &lt;typename ValueType&gt;\nHashSet&lt;ValueType&gt; HashSet&lt;ValueType&gt;::operator*(const HashSet &amp; set2) const {\n   HashSet&lt;ValueType&gt; set;\n   foreach (ValueType value in *this) {\n      if (set2.map.containsKey(value)) set.add(value);\n   }\n   return set;\n}\n\ntemplate &lt;typename ValueType&gt;\nHashSet&lt;ValueType&gt; HashSet&lt;ValueType&gt;::operator-(const HashSet &amp; set2) const {\n   HashSet&lt;ValueType&gt; set;\n   foreach (ValueType value in *this) {\n      if (!set2.map.containsKey(value)) set.add(value);\n   }\n   return set;\n}\n\ntemplate &lt;typename ValueType&gt;\nHashSet&lt;ValueType&gt;\nHashSet&lt;ValueType&gt;::operator-(const ValueType &amp; element) const {\n   HashSet&lt;ValueType&gt; set = *this;\n   set.remove(element);\n   return set;\n}\n\ntemplate &lt;typename ValueType&gt;\nHashSet&lt;ValueType&gt; &amp; HashSet&lt;ValueType&gt;::operator+=(const HashSet &amp; set2) {\n   foreach (ValueType value in set2) {\n      this-&gt;add(value);\n   }\n   return *this;\n}\n\ntemplate &lt;typename ValueType&gt;\nHashSet&lt;ValueType&gt; &amp; HashSet&lt;ValueType&gt;::operator+=(const ValueType &amp; value) {\n   this-&gt;add(value);\n   this-&gt;removeFlag = false;\n   return *this;\n}\n\ntemplate &lt;typename ValueType&gt;\nHashSet&lt;ValueType&gt; &amp; HashSet&lt;ValueType&gt;::operator*=(const HashSet &amp; set2) {\n   Vector&lt;ValueType&gt; toRemove;\n   foreach (ValueType value in *this) {\n      if (!set2.map.containsKey(value)) toRemove.add(value);\n   }\n   foreach (ValueType value in toRemove) {\n      this-&gt;remove(value);\n   }\n   return *this;\n}\n\ntemplate &lt;typename ValueType&gt;\nHashSet&lt;ValueType&gt; &amp; HashSet&lt;ValueType&gt;::operator-=(const HashSet &amp; set2) {\n   Vector&lt;ValueType&gt; toRemove;\n   foreach (ValueType value in *this) {\n      if (set2.map.containsKey(value)) toRemove.add(value);\n   }\n   foreach (ValueType value in toRemove) {\n      this-&gt;remove(value);\n   }\n   return *this;\n}\n\ntemplate &lt;typename ValueType&gt;\nHashSet&lt;ValueType&gt; &amp; HashSet&lt;ValueType&gt;::operator-=(const ValueType &amp; value) {\n   this-&gt;remove(value);\n   this-&gt;removeFlag = true;\n   return *this;\n}\n\ntemplate &lt;typename ValueType&gt;\nValueType HashSet&lt;ValueType&gt;::first() const {\n   if (isEmpty()) error(\"first: set is empty\");\n   return *begin();\n}\n\ntemplate &lt;typename ValueType&gt;\nstd::string HashSet&lt;ValueType&gt;::toString() {\n   ostringstream os;\n   os &lt;&lt; *this;\n   return os.str();\n}\n\ntemplate &lt;typename ValueType&gt;\nvoid HashSet&lt;ValueType&gt;::mapAll(void (*fn)(ValueType)) const {\n   map.mapAll(fn);\n}\n\ntemplate &lt;typename ValueType&gt;\nvoid HashSet&lt;ValueType&gt;::mapAll(void (*fn)(const ValueType &amp;)) const {\n   map.mapAll(fn);\n}\n\ntemplate &lt;typename ValueType&gt;\ntemplate &lt;typename FunctorType&gt;\nvoid HashSet&lt;ValueType&gt;::mapAll(FunctorType fn) const {\n   map.mapAll(fn);\n}\n\ntemplate &lt;typename ValueType&gt;\nstd::ostream &amp; operator&lt;&lt;(std::ostream &amp; os, const HashSet&lt;ValueType&gt; &amp; set) {\n   os &lt;&lt; \"{\";\n   bool started = false;\n   foreach (ValueType value in set) {\n      if (started) os &lt;&lt; \", \";\n      writeGenericValue(os, value, true);\n      started = true;\n   }\n   os &lt;&lt; \"}\";\n   return os;\n}\n\ntemplate &lt;typename ValueType&gt;\nstd::istream &amp; operator&gt;&gt;(std::istream &amp; is, HashSet&lt;ValueType&gt; &amp; set) {\n   char ch;\n   is &gt;&gt; ch;\n   if (ch != '{') error(\"operator &gt;&gt;: Missing {\");\n   set.clear();\n   is &gt;&gt; ch;\n   if (ch != '}') {\n      is.unget();\n      while (true) {\n         ValueType value;\n         readGenericValue(is, value);\n         set += value;\n         is &gt;&gt; ch;\n         if (ch == '}') break;\n         if (ch != ',') {\n            error(std::string(\"operator &gt;&gt;: Unexpected character \") + ch);\n         }\n      }\n   }\n   return is;\n}\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/docs/_old/lexicon-h.html",
    "content": "<html>\n<head>\n<title>../include/lexicon.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: lexicon.h\n * ---------------\n * This file exports the Lexicon class, which is a compact structure for\n * storing a list of words.\n */\n</scan>\n#ifndef _lexicon_h\n#define _lexicon_h\n\n#include &lt;string&gt;\n#include \"set.h\"\n#include \"stack.h\"\n\n<a name=\"Class:Lexicon\"><scan class=comment>/*\n * Class: Lexicon\n * --------------\n * This class is used to represent a lexicon, or word list.  The main\n * difference between a lexicon and a dictionary is that a lexicon does not\n * provide any mechanism for storing definitions; the lexicon contains only\n * words, with no associated information.  It is therefore similar to a set\n * of strings, but with a more space-efficient internal representation. \n * The Lexicon class supports efficient lookup operations for words and\n * prefixes.\n *\n * As an example of the use of the Lexicon class, the following program\n * lists all the two-letter words in the lexicon stored in\n * EnglishWords.dat:\n *\n *    int main() {\n *       Lexicon english(\"EnglishWords.dat\");\n *       foreach (string word in english) {\n *          if (word.length() == 2) {\n *             cout &lt;&lt; word &lt;&lt; endl;\n *          }\n *       }\n *       return 0;\n *    }\n */\n</scan>\n#include &lt;cctype&gt;\n\nclass Lexicon {\n\npublic:\n\n<a name=\"Constructor:Lexicon\"><scan class=comment>/*\n * Constructor: Lexicon\n * Usage: Lexicon lex;\n *        Lexicon lex(filename);\n * -----------------------------\n * Initializes a new lexicon.  The default constructor creates an empty\n * lexicon.  The second form reads in the contents of the lexicon from the\n * specified data file.  The data file must be in one of two formats: (1) a\n * space-efficient precompiled binary format or (2) a text file containing\n * one word per line.  The Stanford library distribution includes a binary\n * lexicon file named English.dat containing a list of words in English. \n * The standard code pattern to initialize that lexicon looks like this:\n *\n *    Lexicon english(\"English.dat\");\n */\n</scan>\n   Lexicon();\n   Lexicon(std::string filename);\n\n<a name=\"Destructor:~Lexicon\"><scan class=comment>/*\n * Destructor: ~Lexicon\n * --------------------\n * The destructor deallocates any storage associated with the lexicon.\n */\n</scan>\n   virtual ~Lexicon();\n\n<a name=\"Method:size\"><scan class=comment>/*\n * Method: size\n * Usage: int n = lex.size();\n * --------------------------\n * Returns the number of words contained in the lexicon.\n */\n</scan>\n   int size() const;\n\n<a name=\"Method:isEmpty\"><scan class=comment>/*\n * Method: isEmpty\n * Usage: if (lex.isEmpty()) ...\n * -----------------------------\n * Returns true if the lexicon contains no words.\n */\n</scan>\n   bool isEmpty() const;\n\n<a name=\"Method:clear\"><scan class=comment>/*\n * Method: clear\n * Usage: lex.clear();\n * -------------------\n * Removes all words from the lexicon.\n */\n</scan>\n   void clear();\n\n<a name=\"Method:add\"><scan class=comment>/*\n * Method: add\n * Usage: lex.add(word);\n * ---------------------\n * Adds the specified word to the lexicon.\n */\n</scan>\n   void add(std::string word);\n\n<a name=\"Method:addWordsFromFile\"><scan class=comment>/*\n * Method: addWordsFromFile\n * Usage: lex.addWordsFromFile(filename);\n * --------------------------------------\n * Reads the file and adds all of its words to the lexicon.\n */\n</scan>\n   void addWordsFromFile(std::string filename);\n\n<a name=\"Method:contains\"><scan class=comment>/*\n * Method: contains\n * Usage: if (lex.contains(word)) ...\n * ----------------------------------\n * Returns true if word is contained in the lexicon.  In the Lexicon class,\n * the case of letters is ignored, so \"Zoo\" is the same as \"ZOO\" or \"zoo\".\n */\n</scan>\n   bool contains(std::string word) const;\n\n<a name=\"Method:containsPrefix\"><scan class=comment>/*\n * Method: containsPrefix\n * Usage: if (lex.containsPrefix(prefix)) ...\n * ------------------------------------------\n * Returns true if any words in the lexicon begin with prefix.  Like\n * containsWord, this method ignores the case of letters so that \"MO\" is a\n * prefix of \"monkey\" or \"Monday\".\n */\n</scan>\n   bool containsPrefix(std::string prefix) const;\n\n<a name=\"Method:mapAll\"><scan class=comment>/*\n * Method: mapAll\n * Usage: lexicon.mapAll(fn);\n * --------------------------\n * Calls the specified function on each word in the lexicon.\n */\n</scan>\n   void mapAll(void (*fn)(std::string)) const;\n   void mapAll(void (*fn)(const std::string &amp;)) const;\n\n   template &lt;typename FunctorType&gt;\n   void mapAll(FunctorType fn) const;\n\n<scan class=comment>/*\n * Additional Lexicon operations\n * -----------------------------\n * In addition to the methods listed in this interface, the Lexicon class\n * supports the following operations:\n *\n *   - Deep copying for the copy constructor and assignment operator\n *   - Iteration using the range-based for statement and STL iterators\n *\n * All iteration is guaranteed to proceed in alphabetical order.  All words\n * in the lexicon are stored in lowercase.\n */\n</scan>\n<scan class=comment>/* Private section */</scan>\n\n<scan class=comment>/**********************************************************************/</scan>\n<scan class=comment>/* Note: Everything below this point in the file is logically part    */</scan>\n<scan class=comment>/* of the implementation and should not be of interest to clients.    */</scan>\n<scan class=comment>/**********************************************************************/</scan>\n\nprivate:\n\n#ifdef _MSC_VER\n#define LITTLE_ENDIAN 1\n#define BYTE_ORDER LITTLE_ENDIAN\n#endif\n\n   struct Edge {\n#if defined(BYTE_ORDER) &amp;&amp; BYTE_ORDER == LITTLE_ENDIAN\n      unsigned long letter:5;\n      unsigned long lastEdge:1;\n      unsigned long accept:1;\n      unsigned long unused:1;\n      unsigned long children:24;\n#else\n      unsigned long children:24;\n      unsigned long unused:1;\n      unsigned long accept:1;\n      unsigned long lastEdge:1;\n      unsigned long letter:5;\n#endif\n   };\n\n   Edge *edges, *start;\n   int numEdges, numDawgWords;\n   Set&lt;std::string&gt; otherWords;\n\npublic:\n\n<scan class=comment>/*\n * Deep copying support\n * --------------------\n * This copy constructor and operator= are defined to make a deep copy,\n * making it possible to pass/return lexicons by value and assign from one\n * lexicon to another.  The entire contents of the lexicon, including all\n * words, are copied.  Making copies is generally avoided because of the\n * expense and thus, lexicons are typically passed by reference.  When a\n * copy is needed, these operations are supported.\n */\n</scan>\n   Lexicon(const Lexicon &amp; src);\n   Lexicon &amp; operator=(const Lexicon &amp; src);\n\n<scan class=comment>/*\n * Iterator support\n * ----------------\n * The classes in the StanfordCPPLib collection implement input iterators\n * so that they work symmetrically with respect to the corresponding STL\n * classes.\n */\n</scan>\n   class iterator : public std::iterator&lt;std::input_iterator_tag,std::string&gt; {\n   private:\n      const Lexicon *lp;\n      int index;\n      std::string currentDawgPrefix;\n      std::string currentSetWord;\n      std::string tmpWord;\n      Edge *edgePtr;\n      Stack&lt;Edge *&gt; stack;\n      Set&lt;std::string&gt;::iterator setIterator;\n      Set&lt;std::string&gt;::iterator setEnd;\n\n      void advanceToNextWordInDawg();\n      void advanceToNextWordInSet();\n      void advanceToNextEdge();\n\n   public:\n      iterator() {\n         this-&gt;lp = NULL;\n      }\n\n      iterator(const Lexicon *lp, bool endFlag) {\n         this-&gt;lp = lp;\n         if (endFlag) {\n            index = lp-&gt;size();\n         } else {\n            index = 0;\n            edgePtr = NULL;\n            setIterator = lp-&gt;otherWords.begin();\n            setEnd = lp-&gt;otherWords.end();\n            currentDawgPrefix = \"\";\n            currentSetWord = \"\";\n            advanceToNextWordInDawg();\n            advanceToNextWordInSet();\n         }\n      }\n\n      iterator(const iterator &amp; it) {\n         lp = it.lp;\n         index = it.index;\n         currentDawgPrefix = it.currentDawgPrefix;\n         currentSetWord = it.currentSetWord;\n         edgePtr = it.edgePtr;\n         stack = it.stack;\n         setIterator = it.setIterator;\n      }\n\n      iterator &amp; operator++() {\n         if (edgePtr == NULL) {\n            advanceToNextWordInSet();\n         } else {\n            if (currentSetWord == \"\" || currentDawgPrefix &lt; currentSetWord) {\n               advanceToNextWordInDawg();\n            } else {\n               advanceToNextWordInSet();\n            }\n         }\n         index++;\n         return *this;\n      }\n\n      iterator operator++(int) {\n         iterator copy(*this);\n         operator++();\n         return copy;\n      }\n\n      bool operator==(const iterator &amp; rhs) {\n         return lp == rhs.lp &amp;&amp; index == rhs.index;\n      }\n\n      bool operator!=(const iterator &amp; rhs) {\n         return !(*this == rhs);\n      }\n\n      std::string operator*() {\n         if (edgePtr == NULL) return currentSetWord;\n         if (currentSetWord == \"\" || currentDawgPrefix &lt; currentSetWord) {\n            return currentDawgPrefix + lp-&gt;ordToChar(edgePtr-&gt;letter);\n         } else {\n            return currentSetWord;\n         }\n      }\n\n      std::string *operator-&gt;() {\n         if (edgePtr == NULL) return &amp;currentSetWord;\n         if (currentSetWord == \"\" || currentDawgPrefix &lt; currentSetWord) {\n            tmpWord = currentDawgPrefix + lp-&gt;ordToChar(edgePtr-&gt;letter);\n            return &amp;tmpWord;\n         } else {\n            return &amp;currentSetWord;\n         }\n      }\n\n   };\n\n   iterator begin() const {\n      return iterator(this, false);\n   }\n\n   iterator end() const {\n      return iterator(this, true);\n   }\n\nprivate:\n\n   Edge *findEdgeForChar(Edge *children, char ch) const;\n   Edge *traceToLastEdge(const std::string &amp; s) const;\n   void readBinaryFile(std::string filename);\n   void deepCopy(const Lexicon &amp; src);\n   int countDawgWords(Edge *start) const;\n\n   unsigned int charToOrd(char ch) const {\n      return ((unsigned int)(tolower(ch) - 'a' + 1));\n   }\n\n   char ordToChar(unsigned int ord) const {\n      return ((char)(ord - 1 + 'a'));\n   }\n\n};\n\ntemplate &lt;typename FunctorType&gt;\nvoid Lexicon::mapAll(FunctorType fn) const {\n   foreach (std::string word in *this) {\n      fn(word);\n   }\n}\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/docs/_old/map-h.html",
    "content": "<html>\n<head>\n<title>../include/map.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: map.h\n * -----------\n * This file exports the template class Map, which maintains a collection\n * of key-value pairs.\n */\n</scan>\n#ifndef _map_h\n#define _map_h\n\n#include &lt;cstdlib&gt;\n#include \"stack.h\"\n\n<a name=\"Class:Map<KeyType,ValueType>\"><scan class=comment>/*\n * Class: Map&lt;KeyType,ValueType&gt;\n * -----------------------------\n * This class maintains an association between keys and values.  The types\n * used for keys and values are specified using templates, which makes it\n * possible to use this structure with any data type.\n */\n</scan>\ntemplate &lt;typename KeyType, typename ValueType&gt;\nclass Map {\n\npublic:\n\n<a name=\"Constructor:Map\"><scan class=comment>/*\n * Constructor: Map\n * Usage: Map&lt;KeyType,ValueType&gt; map;\n * ----------------------------------\n * Initializes a new empty map that associates keys and values of the\n * specified types.\n */\n</scan>\n   Map();\n\n<a name=\"Destructor:~Map\"><scan class=comment>/*\n * Destructor: ~Map\n * ----------------\n * Frees any heap storage associated with this map.\n */\n</scan>\n   virtual ~Map();\n\n<a name=\"Method:size\"><scan class=comment>/*\n * Method: size\n * Usage: int nEntries = map.size();\n * ---------------------------------\n * Returns the number of entries in this map.\n */\n</scan>\n   int size() const;\n\n<a name=\"Method:isEmpty\"><scan class=comment>/*\n * Method: isEmpty\n * Usage: if (map.isEmpty()) ...\n * -----------------------------\n * Returns true if this map contains no entries.\n */\n</scan>\n   bool isEmpty() const;\n\n<a name=\"Method:put\"><scan class=comment>/*\n * Method: put\n * Usage: map.put(key, value);\n * ---------------------------\n * Associates key with value in this map.  Any previous value associated\n * with key is replaced by the new value.\n */\n</scan>\n   void put(const KeyType &amp; key, const ValueType &amp; value);\n\n<a name=\"Method:get\"><scan class=comment>/*\n * Method: get\n * Usage: ValueType value = map.get(key);\n * --------------------------------------\n * Returns the value associated with key in this map.  If key is not found,\n * get returns the default value for ValueType.\n */\n</scan>\n   ValueType get(const KeyType &amp; key) const;\n\n<a name=\"Method:containsKey\"><scan class=comment>/*\n * Method: containsKey\n * Usage: if (map.containsKey(key)) ...\n * ------------------------------------\n * Returns true if there is an entry for key in this map.\n */\n</scan>\n   bool containsKey(const KeyType &amp; key) const;\n\n<a name=\"Method:remove\"><scan class=comment>/*\n * Method: remove\n * Usage: map.remove(key);\n * -----------------------\n * Removes any entry for key from this map.\n */\n</scan>\n   void remove(const KeyType &amp; key);\n\n<a name=\"Method:clear\"><scan class=comment>/*\n * Method: clear\n * Usage: map.clear();\n * -------------------\n * Removes all entries from this map.\n */\n</scan>\n   void clear();\n\n<a name=\"Operator:[]\"><scan class=comment>/*\n * Operator: []\n * Usage: map[key]\n * ---------------\n * Selects the value associated with key.  This syntax makes it easy to\n * think of a map as an \"associative array\" indexed by the key type.  If\n * key is already present in the map, this function returns a reference to\n * its associated value.  If key is not present in the map, a new entry is\n * created whose value is set to the default for the value type.\n */\n</scan>\n   ValueType &amp; operator[](const KeyType &amp; key);\n   ValueType operator[](const KeyType &amp; key) const;\n\n<a name=\"Method:toString\"><scan class=comment>/*\n * Method: toString\n * Usage: string str = map.toString();\n * -----------------------------------\n * Converts the map to a printable string representation.\n */\n</scan>\n   std::string toString();\n\n<a name=\"Method:mapAll\"><scan class=comment>/*\n * Method: mapAll\n * Usage: map.mapAll(fn);\n * ----------------------\n * Iterates through the map entries and calls fn(key, value) for each one. \n * The keys are processed in ascending order, as defined by the comparison\n * function.\n */\n</scan>\n   void mapAll(void (*fn)(KeyType, ValueType)) const;\n   void mapAll(void (*fn)(const KeyType &amp;, const ValueType &amp;)) const;\n   template &lt;typename FunctorType&gt;\n   void mapAll(FunctorType fn) const;\n\n<scan class=comment>/*\n * Additional Map operations\n * -------------------------\n * In addition to the methods listed in this interface, the Map class\n * supports the following operations:\n *\n *   - Stream I/O using the &lt;&lt; and &gt;&gt; operators\n *   - Deep copying for the copy constructor and assignment operator\n *   - Iteration using the range-based for statement and STL iterators\n *\n * All iteration is guaranteed to proceed in the order established by the\n * comparison function passed to the constructor, which ordinarily matches\n * the order of the key type.\n */\n</scan>\n<scan class=comment>/* Private section */</scan>\n\n<scan class=comment>/**********************************************************************/</scan>\n<scan class=comment>/* Note: Everything below this point in the file is logically part    */</scan>\n<scan class=comment>/* of the implementation and should not be of interest to clients.    */</scan>\n<scan class=comment>/**********************************************************************/</scan>\n\n<scan class=comment>/*\n * Implementation notes:\n * ---------------------\n * The map class is represented using a binary search tree.  The specific\n * implementation used here is the classic AVL algorithm developed by\n * Georgii Adel'son-Vel'skii and Evgenii Landis in 1962.\n */\n</scan>\nprivate:\n\n<scan class=comment>/* Constant definitions */</scan>\n\n   static const int BST_LEFT_HEAVY = -1;\n   static const int BST_IN_BALANCE = 0;\n   static const int BST_RIGHT_HEAVY = +1;\n\n<scan class=comment>/* Type definition for nodes in the binary search tree */</scan>\n\n   struct BSTNode {\n      KeyType key;             <scan class=comment>/* The key stored in this node         */</scan>\n      ValueType value;         <scan class=comment>/* The corresponding value             */</scan>\n      BSTNode *left;           <scan class=comment>/* Subtree containing all smaller keys */</scan>\n      BSTNode *right;          <scan class=comment>/* Subtree containing all larger keys  */</scan>\n      int bf;                  <scan class=comment>/* AVL balance factor                  */</scan>\n   };\n\n<a name=\"Implementation notes:Comparator\"><scan class=comment>/*\n * Implementation notes: Comparator\n * --------------------------------\n * The Comparator class encapsulates a functor that compares two values of\n * KeyType.  In contrast to the classes in the STL, all of which embed the\n * comparator in the type, the Map class and its derivatives pass an\n * optional Comparator value.  While this strategy results in a more\n * complex implementation, it has the advantage of allowing maps and sets\n * to carry their own comparators without forcing the client to include the\n * comparator in the template declaration.  This simplification is\n * particularly important for the Graph class.\n */\n</scan>\n   class Comparator {\n   public:\n      virtual bool lessThan(const KeyType &amp; k1, const KeyType &amp; k2) = 0;\n      virtual Comparator *clone() = 0;\n   };\n\n   template &lt;typename CompareType&gt;\n   class TemplateComparator : public Comparator {\n   public:\n      TemplateComparator(CompareType cmp) {\n         this-&gt;cmp = cmp;\n      }\n\n      virtual bool lessThan(const KeyType &amp; k1, const KeyType &amp; k2) {\n         return cmp(k1, k2);\n      }\n\n      virtual Comparator *clone() {\n         return new TemplateComparator&lt;CompareType&gt;(cmp);\n      }\n\n   private:\n      CompareType cmp;\n   };\n\n   Comparator &amp; getComparator() const {\n      return *cmpp;\n   }\n\n<scan class=comment>/* Instance variables */</scan>\n\n   BSTNode *root;                  <scan class=comment>/* Pointer to the root of the tree */</scan>\n   int nodeCount;                  <scan class=comment>/* Number of entries in the map    */</scan>\n   Comparator *cmpp;               <scan class=comment>/* Pointer to the comparator       */</scan>\n\n   int (*cmpFn)(const KeyType &amp;, const KeyType &amp;);\n\n<scan class=comment>/* Private methods */</scan>\n\n<a name=\"Implementation notes:findNode(t, key)\"><scan class=comment>/*\n * Implementation notes: findNode(t, key)\n * --------------------------------------\n * Searches the tree rooted at t to find the specified key, searching in\n * the left or right subtree, as approriate.  If a matching node is found,\n * findNode returns a pointer to the value cell in that node.  If no\n * matching node exists in the tree, findNode returns NULL.\n */\n</scan>\n   ValueType *findNode(BSTNode *t, const KeyType &amp; key) const {\n      if (t == NULL)  return NULL;\n      int sign = compareKeys(key, t-&gt;key);\n      if (sign == 0) return &amp;t-&gt;value;\n      if (sign &lt; 0) {\n         return findNode(t-&gt;left, key);\n      } else {\n         return findNode(t-&gt;right, key);\n      }\n   }\n\n<a name=\"Implementation notes:addNode(t, key, heightFlag)\"><scan class=comment>/*\n * Implementation notes: addNode(t, key, heightFlag)\n * -------------------------------------------------\n * Searches the tree rooted at t to find the specified key, searching in\n * the left or right subtree, as approriate.  If a matching node is found,\n * addNode returns a pointer to the value cell in that node, just like\n * findNode.  If no matching node exists in the tree, addNode creates a new\n * node with a default value.  The heightFlag reference parameter returns a\n * bool indicating whether the height of the tree was changed by this\n * operation.\n */\n</scan>\n   ValueType *addNode(BSTNode * &amp; t, const KeyType &amp; key, bool &amp; heightFlag) {\n      heightFlag = false;\n      if (t == NULL)  {\n         t = new BSTNode();\n         t-&gt;key = key;\n         t-&gt;value = ValueType();\n         t-&gt;bf = BST_IN_BALANCE;\n         t-&gt;left = t-&gt;right = NULL;\n         heightFlag = true;\n         nodeCount++;\n         return &amp;t-&gt;value;\n      }\n      int sign = compareKeys(key, t-&gt;key);\n      if (sign == 0) return &amp;t-&gt;value;\n      ValueType *vp = NULL;\n      int bfDelta = BST_IN_BALANCE;\n      if (sign &lt; 0) {\n         vp = addNode(t-&gt;left, key, heightFlag);\n         if (heightFlag) bfDelta = BST_LEFT_HEAVY;\n      } else {\n         vp = addNode(t-&gt;right, key, heightFlag);\n         if (heightFlag) bfDelta = BST_RIGHT_HEAVY;\n      }\n      updateBF(t, bfDelta);\n      heightFlag = (bfDelta != 0 &amp;&amp; t-&gt;bf != BST_IN_BALANCE);\n      return vp;\n   }\n\n<a name=\"Implementation notes:removeNode(t, key)\"><scan class=comment>/*\n * Implementation notes: removeNode(t, key)\n * ----------------------------------------\n * Removes the node containing the specified key from the tree rooted at t.\n * The return value is true if the height of this subtree changes.  The\n * removeTargetNode method does the actual deletion.\n */\n</scan>\n   bool removeNode(BSTNode * &amp; t, const KeyType &amp; key) {\n      if (t == NULL) return false;\n      int sign = compareKeys(key, t-&gt;key);\n      if (sign == 0) return removeTargetNode(t);\n      int bfDelta = BST_IN_BALANCE;\n      if (sign &lt; 0) {\n         if (removeNode(t-&gt;left, key)) bfDelta = BST_RIGHT_HEAVY;\n      } else {\n         if (removeNode(t-&gt;right, key)) bfDelta = BST_LEFT_HEAVY;\n      }\n      updateBF(t, bfDelta);\n      return bfDelta != 0 &amp;&amp; t-&gt;bf == BST_IN_BALANCE;\n   }\n\n<a name=\"Implementation notes:removeTargetNode(t)\"><scan class=comment>/*\n * Implementation notes: removeTargetNode(t)\n * -----------------------------------------\n * Removes the node which is passed by reference as t.  The easy case\n * occurs when either (or both) of the children is NULL; all you need to do\n * is replace the node with its non-NULL child, if any.  If both children\n * are non-NULL, this code finds the rightmost descendent of the left\n * child; this node may not be a leaf, but will have no right child.  Its\n * left child replaces it in the tree, after which the replacement data is\n * moved to the position occupied by the target node.\n */\n</scan>\n   bool removeTargetNode(BSTNode * &amp; t) {\n      BSTNode *toDelete = t;\n      if (t-&gt;left == NULL) {\n         t = t-&gt;right;\n         delete toDelete;\n         nodeCount--;\n         return true;\n      } else if (t-&gt;right == NULL) {\n         t = t-&gt;left;\n         delete toDelete;\n         nodeCount--;\n         return true;\n      } else {\n         BSTNode *successor = t-&gt;left;\n         while (successor-&gt;right != NULL) {\n            successor = successor-&gt;right;\n         }\n         t-&gt;key = successor-&gt;key;\n         t-&gt;value = successor-&gt;value;\n         if (removeNode(t-&gt;left, successor-&gt;key)) {\n            updateBF(t, BST_RIGHT_HEAVY);\n            return (t-&gt;bf == BST_IN_BALANCE);\n         }\n         return false;\n      }\n   }\n\n<a name=\"Implementation notes:updateBF(t, bfDelta)\"><scan class=comment>/*\n * Implementation notes: updateBF(t, bfDelta)\n * ------------------------------------------\n * Updates the balance factor in the node and rebalances the tree if\n * necessary.\n */\n</scan>\n   void updateBF(BSTNode * &amp; t, int bfDelta) {\n      t-&gt;bf += bfDelta;\n      if (t-&gt;bf &lt; BST_LEFT_HEAVY) {\n         fixLeftImbalance(t);\n      } else if (t-&gt;bf &gt; BST_RIGHT_HEAVY) {\n         fixRightImbalance(t);\n      }\n   }\n\n<a name=\"Implementation notes:fixLeftImbalance(t)\"><scan class=comment>/*\n * Implementation notes: fixLeftImbalance(t)\n * -----------------------------------------\n * This function is called when a node has been found that is out of\n * balance with the longer subtree on the left.  Depending on the balance\n * factor of the left child, the code performs a single or double rotation.\n */\n</scan>\n   void fixLeftImbalance(BSTNode * &amp; t) {\n      BSTNode *child = t-&gt;left;\n      if (child-&gt;bf == BST_RIGHT_HEAVY) {\n         int oldBF = child-&gt;right-&gt;bf;\n         rotateLeft(t-&gt;left);\n         rotateRight(t);\n         t-&gt;bf = BST_IN_BALANCE;\n         switch (oldBF) {\n          case BST_LEFT_HEAVY:\n            t-&gt;left-&gt;bf = BST_IN_BALANCE;\n            t-&gt;right-&gt;bf = BST_RIGHT_HEAVY;\n            break;\n          case BST_IN_BALANCE:\n            t-&gt;left-&gt;bf = t-&gt;right-&gt;bf = BST_IN_BALANCE;\n            break;\n          case BST_RIGHT_HEAVY:\n            t-&gt;left-&gt;bf = BST_LEFT_HEAVY;\n            t-&gt;right-&gt;bf = BST_IN_BALANCE;\n            break;\n         }\n      } else if (child-&gt;bf == BST_IN_BALANCE) {\n         rotateRight(t);\n         t-&gt;bf = BST_RIGHT_HEAVY;\n         t-&gt;right-&gt;bf = BST_LEFT_HEAVY;\n      } else {\n         rotateRight(t);\n         t-&gt;right-&gt;bf = t-&gt;bf = BST_IN_BALANCE;\n      }\n   }\n\n<a name=\"Implementation notes:rotateLeft(t)\"><scan class=comment>/*\n * Implementation notes: rotateLeft(t)\n * -----------------------------------\n * This function performs a single left rotation of the tree that is passed\n * by reference.  The balance factors are unchanged by this function and\n * must be corrected at a higher level of the algorithm.\n */\n</scan>\n   void rotateLeft(BSTNode * &amp; t) {\n      BSTNode *child = t-&gt;right;\n      t-&gt;right = child-&gt;left;\n      child-&gt;left = t;\n      t = child;\n   }\n\n<a name=\"Implementation notes:fixRightImbalance(t)\"><scan class=comment>/*\n * Implementation notes: fixRightImbalance(t)\n * ------------------------------------------\n * This function is called when a node has been found that is out of\n * balance with the longer subtree on the right.  Depending on the balance\n * factor of the right child, the code performs a single or double\n * rotation.\n */\n</scan>\n   void fixRightImbalance(BSTNode * &amp; t) {\n      BSTNode *child = t-&gt;right;\n      if (child-&gt;bf == BST_LEFT_HEAVY) {\n         int oldBF = child-&gt;left-&gt;bf;\n         rotateRight(t-&gt;right);\n         rotateLeft(t);\n         t-&gt;bf = BST_IN_BALANCE;\n         switch (oldBF) {\n          case BST_LEFT_HEAVY:\n            t-&gt;left-&gt;bf = BST_IN_BALANCE;\n            t-&gt;right-&gt;bf = BST_RIGHT_HEAVY;\n            break;\n          case BST_IN_BALANCE:\n            t-&gt;left-&gt;bf = t-&gt;right-&gt;bf = BST_IN_BALANCE;\n            break;\n          case BST_RIGHT_HEAVY:\n            t-&gt;left-&gt;bf = BST_LEFT_HEAVY;\n            t-&gt;right-&gt;bf = BST_IN_BALANCE;\n            break;\n         }\n      } else if (child-&gt;bf == BST_IN_BALANCE) {\n         rotateLeft(t);\n         t-&gt;bf = BST_LEFT_HEAVY;\n         t-&gt;left-&gt;bf = BST_RIGHT_HEAVY;\n      } else {\n         rotateLeft(t);\n         t-&gt;left-&gt;bf = t-&gt;bf = BST_IN_BALANCE;\n      }\n   }\n\n<a name=\"Implementation notes:rotateRight(t)\"><scan class=comment>/*\n * Implementation notes: rotateRight(t)\n * ------------------------------------\n * This function performs a single right rotation of the tree that is\n * passed by reference.  The balance factors are unchanged by this function\n * and must be corrected at a higher level of the algorithm.\n */\n</scan>\n   void rotateRight(BSTNode * &amp; t) {\n\n      BSTNode *child = t-&gt;left;\n      t-&gt;left = child-&gt;right;\n      child-&gt;right = t;\n      t = child;\n   }\n\n<a name=\"Implementation notes:deleteTree(t)\"><scan class=comment>/*\n * Implementation notes: deleteTree(t)\n * -----------------------------------\n * Deletes all the nodes in the tree.\n */\n</scan>\n   void deleteTree(BSTNode *t) {\n      if (t != NULL) {\n         deleteTree(t-&gt;left);\n         deleteTree(t-&gt;right);\n         delete t;\n      }\n   }\n\n<a name=\"Implementation notes:mapAll\"><scan class=comment>/*\n * Implementation notes: mapAll\n * ----------------------------\n * Calls fn(key, value) for every key-value pair in the tree.\n */\n</scan>\n   void mapAll(BSTNode *t, void (*fn)(KeyType, ValueType)) const {\n      if (t != NULL) {\n         mapAll(t-&gt;left, fn);\n         fn(t-&gt;key, t-&gt;value);\n         mapAll(t-&gt;right, fn);\n      }\n   }\n\n   void mapAll(BSTNode *t,\n               void (*fn)(const KeyType &amp;, const ValueType &amp;)) const {\n      if (t != NULL) {\n         mapAll(t-&gt;left, fn);\n         fn(t-&gt;key, t-&gt;value);\n         mapAll(t-&gt;right, fn);\n      }\n   }\n\n   template &lt;typename FunctorType&gt;\n   void mapAll(BSTNode *t, FunctorType fn) const {\n      if (t != NULL) {\n         mapAll(t-&gt;left, fn);\n         fn(t-&gt;key, t-&gt;value);\n         mapAll(t-&gt;right, fn);\n      }\n   }\n\n   void deepCopy(const Map &amp; other) {\n      root = copyTree(other.root);\n      nodeCount = other.nodeCount;\n      cmpp = (other.cmpp == NULL) ? NULL : other.cmpp-&gt;clone();\n   }\n\n   BSTNode *copyTree(BSTNode * const t) {\n      if (t == NULL) return NULL;\n      BSTNode *np = new BSTNode();\n      np-&gt;key = t-&gt;key;\n      np-&gt;value = t-&gt;value;\n      np-&gt;bf = t-&gt;bf;\n      np-&gt;left = copyTree(t-&gt;left);\n      np-&gt;right = copyTree(t-&gt;right);\n      return np;\n   }\n\npublic:\n\n<scan class=comment>/*\n * Hidden features\n * ---------------\n * The remainder of this file consists of the code required to support deep\n * copying and iteration.  Including these methods in the public portion of\n * the interface would make that interface more difficult to understand for\n * the average client.\n */\n</scan>\n<scan class=comment>/* Extended constructors */</scan>\n\n   template &lt;typename CompareType&gt;\n   explicit Map(CompareType cmp) {\n      root = NULL;\n      nodeCount = 0;\n      cmpp = new TemplateComparator&lt;CompareType&gt;(cmp);\n   }\n\n<a name=\"Implementation notes:compareKeys(k1, k2)\"><scan class=comment>/*\n * Implementation notes: compareKeys(k1, k2)\n * -----------------------------------------\n * Compares the keys k1 and k2 and returns an integer (-1, 0, or +1)\n * depending on whether k1 &lt; k2, k1 == k2, or k1 &gt; k2, respectively.\n */\n</scan>\n   int compareKeys(const KeyType &amp; k1, const KeyType &amp; k2) const {\n      if (cmpp-&gt;lessThan(k1, k2)) return -1;\n      if (cmpp-&gt;lessThan(k2, k1)) return +1;\n      return 0;\n   }\n\n<scan class=comment>/*\n * Deep copying support\n * --------------------\n * This copy constructor and operator= are defined to make a deep copy,\n * making it possible to pass/return maps by value and assign from one map\n * to another.\n */\n</scan>\n   Map &amp; operator=(const Map &amp; src) {\n      if (this != &amp;src) {\n         clear();\n         deepCopy(src);\n      }\n      return *this;\n   }\n\n   Map(const Map &amp; src) {\n      deepCopy(src);\n   }\n\n<scan class=comment>/*\n * Iterator support\n * ----------------\n * The classes in the StanfordCPPLib collection implement input iterators\n * so that they work symmetrically with respect to the corresponding STL\n * classes.\n */\n</scan>\n   class iterator : public std::iterator&lt;std::input_iterator_tag,KeyType&gt; {\n\n   private:\n\n      struct NodeMarker {\n         BSTNode *np;\n         bool processed;\n      };\n\n      const Map *mp;               <scan class=comment>/* Pointer to the map         */</scan>\n      int index;                   <scan class=comment>/* Index of current element   */</scan>\n      Stack&lt;NodeMarker&gt; stack;     <scan class=comment>/* Stack of unprocessed nodes */</scan>\n\n      void findLeftmostChild() {\n         BSTNode *np = stack.peek().np;\n         if (np == NULL) return;\n         while (np-&gt;left != NULL) {\n            NodeMarker marker = { np-&gt;left,  false };\n            stack.push(marker);\n            np = np-&gt;left;\n         }\n      }\n\n   public:\n\n      iterator() {\n        <scan class=comment>/* Empty */</scan>\n      }\n\n      iterator(const Map *mp, bool end) {\n         this-&gt;mp = mp;\n         if (end || mp-&gt;nodeCount == 0) {\n            index = mp-&gt;nodeCount;\n         } else {\n            index = 0;\n            NodeMarker marker = { mp-&gt;root, false };\n            stack.push(marker);\n            findLeftmostChild();\n         }\n      }\n\n      iterator(const iterator &amp; it) {\n         mp = it.mp;\n         index = it.index;\n         stack = it.stack;\n      }\n\n      iterator &amp; operator++() {\n         NodeMarker marker = stack.pop();\n         BSTNode *np = marker.np;\n         if (np-&gt;right == NULL) {\n            while (!stack.isEmpty() &amp;&amp; stack.peek().processed) {\n               stack.pop();\n            }\n         } else {\n            marker.processed = true;\n            stack.push(marker);\n            marker.np = np-&gt;right;\n            marker.processed = false;\n            stack.push(marker);\n            findLeftmostChild();\n         }\n         index++;\n         return *this;\n      }\n\n      iterator operator++(int) {\n         iterator copy(*this);\n         operator++();\n         return copy;\n      }\n\n      bool operator==(const iterator &amp; rhs) {\n         return mp == rhs.mp &amp;&amp; index == rhs.index;\n      }\n\n      bool operator!=(const iterator &amp; rhs) {\n         return !(*this == rhs);\n      }\n\n      KeyType operator*() {\n         return stack.peek().np-&gt;key;\n      }\n\n      KeyType *operator-&gt;() {\n         return &amp;stack.peek().np-&gt;key;\n      }\n\n      friend class Map;\n\n   };\n\n   iterator begin() const {\n      return iterator(this, false);\n   }\n\n   iterator end() const {\n      return iterator(this, true);\n   }\n\n};\n\ntemplate &lt;typename KeyType, typename ValueType&gt;\nMap&lt;KeyType,ValueType&gt;::Map() {\n   root = NULL;\n   nodeCount = 0;\n   cmpp = new TemplateComparator&lt; less&lt;KeyType&gt; &gt;(less&lt;KeyType&gt;());\n}\n\ntemplate &lt;typename KeyType, typename ValueType&gt;\nMap&lt;KeyType,ValueType&gt;::~Map() {\n   if (cmpp != NULL) delete cmpp;\n   deleteTree(root);\n}\n\ntemplate &lt;typename KeyType, typename ValueType&gt;\nint Map&lt;KeyType,ValueType&gt;::size() const {\n   return nodeCount;\n}\n\ntemplate &lt;typename KeyType, typename ValueType&gt;\nbool Map&lt;KeyType,ValueType&gt;::isEmpty() const {\n   return nodeCount == 0;\n}\n\ntemplate &lt;typename KeyType, typename ValueType&gt;\nvoid Map&lt;KeyType,ValueType&gt;::put(const KeyType &amp; key,\n                                 const ValueType &amp; value) {\n   bool dummy;\n   *addNode(root, key, dummy) = value;\n}\n\ntemplate &lt;typename KeyType, typename ValueType&gt;\nValueType Map&lt;KeyType,ValueType&gt;::get(const KeyType &amp; key) const {\n   ValueType *vp = findNode(root, key);\n   if (vp == NULL) return ValueType();\n   return *vp;\n}\n\ntemplate &lt;typename KeyType, typename ValueType&gt;\nvoid Map&lt;KeyType,ValueType&gt;::remove(const KeyType &amp; key) {\n   removeNode(root, key);\n}\n\ntemplate &lt;typename KeyType, typename ValueType&gt;\nvoid Map&lt;KeyType,ValueType&gt;::clear() {\n   deleteTree(root);\n   root = NULL;\n   nodeCount = 0;\n}\n\ntemplate &lt;typename KeyType, typename ValueType&gt;\nbool Map&lt;KeyType,ValueType&gt;::containsKey(const KeyType &amp; key) const {\n   return findNode(root, key) != NULL;\n}\n\ntemplate &lt;typename KeyType, typename ValueType&gt;\nValueType &amp; Map&lt;KeyType,ValueType&gt;::operator[](const KeyType &amp; key) {\n   bool dummy;\n   return *addNode(root, key, dummy);\n}\n\ntemplate &lt;typename KeyType, typename ValueType&gt;\nValueType Map&lt;KeyType,ValueType&gt;::operator[](const KeyType &amp; key) const {\n   return get(key);\n}\n\ntemplate &lt;typename KeyType, typename ValueType&gt;\nvoid Map&lt;KeyType,ValueType&gt;::mapAll(void (*fn)(KeyType, ValueType)) const {\n   mapAll(root, fn);\n}\n\ntemplate &lt;typename KeyType, typename ValueType&gt;\nvoid Map&lt;KeyType,ValueType&gt;::mapAll(void (*fn)(const KeyType &amp;,\n                                               const ValueType &amp;)) const {\n   mapAll(root, fn);\n}\n\ntemplate &lt;typename KeyType, typename ValueType&gt;\ntemplate &lt;typename FunctorType&gt;\nvoid Map&lt;KeyType,ValueType&gt;::mapAll(FunctorType fn) const {\n   mapAll(root, fn);\n}\n\ntemplate &lt;typename KeyType, typename ValueType&gt;\nstd::string Map&lt;KeyType,ValueType&gt;::toString() {\n   ostringstream os;\n   os &lt;&lt; *this;\n   return os.str();\n}\n\n<a name=\"Implementation notes:<< and >>\"><scan class=comment>/*\n * Implementation notes: &lt;&lt; and &gt;&gt;\n * -------------------------------\n * The insertion and extraction operators use the template facilities in\n * strlib.h to read and write generic values in a way that treats strings\n * specially.\n */\n</scan>\ntemplate &lt;typename KeyType, typename ValueType&gt;\nstd::ostream &amp; operator&lt;&lt;(std::ostream &amp; os,\n                          const Map&lt;KeyType,ValueType&gt; &amp; map) {\n   os &lt;&lt; \"{\";\n   typename Map&lt;KeyType,ValueType&gt;::iterator begin = map.begin();\n   typename Map&lt;KeyType,ValueType&gt;::iterator end = map.end();\n   typename Map&lt;KeyType,ValueType&gt;::iterator it = begin;\n   while (it != end) {\n      if (it != begin) os &lt;&lt; \", \";\n      writeGenericValue(os, *it, false);\n      os &lt;&lt; \":\";\n      writeGenericValue(os, map[*it], false);\n      ++it;\n   }\n   return os &lt;&lt; \"}\";\n}\n\ntemplate &lt;typename KeyType, typename ValueType&gt;\nstd::istream &amp; operator&gt;&gt;(std::istream &amp; is, Map&lt;KeyType,ValueType&gt; &amp; map) {\n   char ch;\n   is &gt;&gt; ch;\n   if (ch != '{') error(\"operator &gt;&gt;: Missing {\");\n   map.clear();\n   is &gt;&gt; ch;\n   if (ch != '}') {\n      is.unget();\n      while (true) {\n         KeyType key;\n         readGenericValue(is, key);\n         is &gt;&gt; ch;\n         if (ch != ':') error(\"operator &gt;&gt;: Missing colon after key\");\n         ValueType value;\n         readGenericValue(is, value);\n         map[key] = value;\n         is &gt;&gt; ch;\n         if (ch == '}') break;\n         if (ch != ',') {\n            error(std::string(\"operator &gt;&gt;: Unexpected character \") + ch);\n         }\n      }\n   }\n   return is;\n}\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/docs/_old/point-h.html",
    "content": "<html>\n<head>\n<title>../include/point.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: point.h\n * -------------\n * This file exports a class representing an integer-valued x-y pair.\n */\n</scan>\n#ifndef _point_h\n#define _point_h\n\n#include &lt;string&gt;\n\n<a name=\"Class:Point\"><scan class=comment>/*\n * Class: Point\n * ------------\n * This class represents an x-y coordinate point on a two-dimensional\n * integer grid.  If you need to work with real-valued points, you should\n * use the gtypes.h interface instead.\n */\n</scan>\nclass Point {\n\npublic:\n\n<a name=\"Constructor:Point\"><scan class=comment>/*\n * Constructor: Point\n * Usage: Point origin;\n *        Point pt(x, y);\n * ----------------------\n * Creates a Point object with the specified x and y coordinates.  If the\n * coordinates are not supplied, the default constructor sets these fields\n * to 0.\n */\n</scan>\n   Point();\n   Point(int x, int y);\n\n<a name=\"Method:getX\"><scan class=comment>/*\n * Method: getX\n * Usage: int x = pt.getX();\n * -------------------------\n * Returns the x-coordinate of the point.\n */\n</scan>\n   int getX() const;\n\n<a name=\"Method:getY\"><scan class=comment>/*\n * Method: getY\n * Usage: int y = pt.getY();\n * -------------------------\n * Returns the y-coordinate of the point.\n */\n</scan>\n   int getY() const;\n\n<a name=\"Method:toString\"><scan class=comment>/*\n * Method: toString\n * Usage: string str = pt.toString();\n * ----------------------------------\n * Returns a string representation of the Point in the form \"(x, y)\".\n */\n</scan>\n   std::string toString() const;\n\n<a name=\"Friend operator:==\"><scan class=comment>/*\n * Friend operator: ==\n * Usage: if (p1 == p2) ...\n * ------------------------\n * Returns true if p1 and p2 are the same point.\n */\n</scan>\n   bool operator==(const Point &amp; p2) const;\n\n<a name=\"Friend operator:!=\"><scan class=comment>/*\n * Friend operator: !=\n * Usage: if (p1 != p2) ...\n * ------------------------\n * Returns true if p1 and p2 are different.\n */\n</scan>\n   bool operator!=(const Point &amp; p2) const;\n\n<scan class=comment>/* Private section */</scan>\n\n<scan class=comment>/**********************************************************************/</scan>\n<scan class=comment>/* Note: Everything below this point in the file is logically part    */</scan>\n<scan class=comment>/* of the implementation and should not be of interest to clients.    */</scan>\n<scan class=comment>/**********************************************************************/</scan>\n\nprivate:\n\n<scan class=comment>/* Instance variables */</scan>\n\n   int x;                         <scan class=comment>/* The x-coordinate of the point */</scan>\n   int y;                         <scan class=comment>/* The y-coordinate of the point */</scan>\n\n};\n\n<a name=\"Operator:<<\"><scan class=comment>/*\n * Operator: &lt;&lt;\n * Usage: cout &lt;&lt; pt;\n * ------------------\n * Overloads the &lt;&lt; operator so that it is able to display Point values.\n */\n</scan>\nstd::ostream &amp; operator&lt;&lt;(std::ostream &amp; os, const Point &amp; pt);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/docs/_old/pqueue-h.html",
    "content": "<html>\n<head>\n<title>../include/pqueue.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: pqueue.h\n * --------------\n * This file exports the PriorityQueue class, a collection in which values\n * are processed in priority order.\n */\n</scan>\n#ifndef _pqueue_h\n#define _pqueue_h\n\n#include \"vector.h\"\n\n<a name=\"Class:PriorityQueue<ValueType>\"><scan class=comment>/*\n * Class: PriorityQueue&lt;ValueType&gt;\n * -------------------------------\n * This class models a structure called a priority queue in which values\n * are processed in order of priority.  As in conventional English usage,\n * lower priority numbers correspond to higher effective priorities, so\n * that a priority 1 item takes precedence over a priority 2 item.\n */\n</scan>\ntemplate &lt;typename ValueType&gt;\nclass PriorityQueue {\n\npublic:\n\n<a name=\"Constructor:PriorityQueue\"><scan class=comment>/*\n * Constructor: PriorityQueue\n * Usage: PriorityQueue&lt;ValueType&gt; pq;\n * -----------------------------------\n * Initializes a new priority queue, which is initially empty.\n */\n</scan>\n   PriorityQueue();\n\n<a name=\"Destructor:~PriorityQueue\"><scan class=comment>/*\n * Destructor: ~PriorityQueue\n * --------------------------\n * Frees any heap storage associated with this priority queue.\n */\n</scan>\n   virtual ~PriorityQueue();\n\n<a name=\"Method:size\"><scan class=comment>/*\n * Method: size\n * Usage: int n = pq.size();\n * -------------------------\n * Returns the number of values in the priority queue.\n */\n</scan>\n   int size() const;\n\n<a name=\"Method:isEmpty\"><scan class=comment>/*\n * Method: isEmpty\n * Usage: if (pq.isEmpty()) ...\n * ----------------------------\n * Returns true if the priority queue contains no elements.\n */\n</scan>\n   bool isEmpty() const;\n\n<a name=\"Method:clear\"><scan class=comment>/*\n * Method: clear\n * Usage: pq.clear();\n * ------------------\n * Removes all elements from the priority queue.\n */\n</scan>\n   void clear();\n\n<a name=\"Method:enqueue\"><scan class=comment>/*\n * Method: enqueue\n * Usage: pq.enqueue(value, priority);\n * -----------------------------------\n * Adds value to the queue with the specified priority.  Lower priority\n * numbers correspond to higher priorities, which means that all priority 1\n * elements are dequeued before any priority 2 elements.\n */\n</scan>\n   void enqueue(ValueType value, double priority);\n\n<a name=\"Method:dequeue\"><scan class=comment>/*\n * Method: dequeue\n * Usage: ValueType first = pq.dequeue();\n * --------------------------------------\n * Removes and returns the highest priority value.  If multiple entries in\n * the queue have the same priority, those values are dequeued in the same\n * order in which they were enqueued.\n */\n</scan>\n   ValueType dequeue();\n\n<a name=\"Method:peek\"><scan class=comment>/*\n * Method: peek\n * Usage: ValueType first = pq.peek();\n * -----------------------------------\n * Returns the value of highest priority in the queue, without removing it.\n */\n</scan>\n   ValueType peek() const;\n\n<a name=\"Method:peekPriority\"><scan class=comment>/*\n * Method: peekPriority\n * Usage: double priority = pq.peekPriority();\n * -------------------------------------------\n * Returns the priority of the first element in the queue, without removing\n * it.\n */\n</scan>\n   double peekPriority() const;\n\n<a name=\"Method:front\"><scan class=comment>/*\n * Method: front\n * Usage: ValueType first = pq.front();\n * ------------------------------------\n * Returns the first value in the queue by reference.\n */\n</scan>\n   ValueType &amp; front();\n\n<a name=\"Method:back\"><scan class=comment>/*\n * Method: back\n * Usage: ValueType last = pq.back();\n * ----------------------------------\n * Returns the last value in the queue by reference.\n */\n</scan>\n   ValueType &amp; back();\n\n<a name=\"Method:toString\"><scan class=comment>/*\n * Method: toString\n * Usage: string str = pq.toString();\n * ----------------------------------\n * Converts the queue to a printable string representation.\n */\n</scan>\n   std::string toString();\n\n<scan class=comment>/* Private section */</scan>\n\n<scan class=comment>/**********************************************************************/</scan>\n<scan class=comment>/* Note: Everything below this point in the file is logically part    */</scan>\n<scan class=comment>/* of the implementation and should not be of interest to clients.    */</scan>\n<scan class=comment>/**********************************************************************/</scan>\n\n<a name=\"Implementation notes:PriorityQueue data structure\"><scan class=comment>/*\n * Implementation notes: PriorityQueue data structure\n * --------------------------------------------------\n * The PriorityQueue class is implemented using a data structure called a\n * heap.\n */\n</scan>\nprivate:\n\n<scan class=comment>/* Type used for each heap entry */</scan>\n\n   struct HeapEntry {\n      ValueType value;\n      double priority;\n      long sequence;\n   };\n\n<scan class=comment>/* Instance variables */</scan>\n\n   Vector&lt;HeapEntry&gt; heap;\n   long enqueueCount;\n   int backIndex;\n   int count;\n   int capacity;\n\n<scan class=comment>/* Private function prototypes */</scan>\n\n   void enqueueHeap(ValueType &amp; value, double priority);\n   ValueType dequeueHeap();\n   bool takesPriority(int i1, int i2);\n   void swapHeapEntries(int i1, int i2);\n\n};\n\nextern void error(std::string msg);\n\ntemplate &lt;typename ValueType&gt;\nPriorityQueue&lt;ValueType&gt;::PriorityQueue() {\n   clear();\n}\n\n<a name=\"Implementation notes:~PriorityQueue destructor\"><scan class=comment>/*\n * Implementation notes: ~PriorityQueue destructor\n * -----------------------------------------------\n * All of the dynamic memory is allocated in the Vector class, so no work\n * is required at this level.\n */\n</scan>\ntemplate &lt;typename ValueType&gt;\nPriorityQueue&lt;ValueType&gt;::~PriorityQueue() {\n   <scan class=comment>/* Empty */</scan>\n}\n\ntemplate &lt;typename ValueType&gt;\nint PriorityQueue&lt;ValueType&gt;::size() const {\n   return count;\n}\n\ntemplate &lt;typename ValueType&gt;\nbool PriorityQueue&lt;ValueType&gt;::isEmpty() const {\n   return count == 0;\n}\n\ntemplate &lt;typename ValueType&gt;\nvoid PriorityQueue&lt;ValueType&gt;::clear() {\n   heap.clear();\n   count = 0;\n}\n\ntemplate &lt;typename ValueType&gt;\nvoid PriorityQueue&lt;ValueType&gt;::enqueue(ValueType value, double priority) {\n   if (count == heap.size()) heap.add(HeapEntry());\n   int index = count++;\n   heap[index].value = value;\n   heap[index].priority = priority;\n   heap[index].sequence = enqueueCount++;\n   if (index == 0 || takesPriority(backIndex, index)) backIndex = index;\n   while (index &gt; 0) {\n      int parent = (index - 1) / 2;\n      if (takesPriority(parent, index)) break;\n      swapHeapEntries(parent, index);\n      index = parent;\n   }\n}\n\n<a name=\"Implementation notes:dequeue, peek, peekPriority\"><scan class=comment>/*\n * Implementation notes: dequeue, peek, peekPriority\n * -------------------------------------------------\n * These methods must check for an empty queue and report an error if there\n * is no first element.\n */\n</scan>\ntemplate &lt;typename ValueType&gt;\nValueType PriorityQueue&lt;ValueType&gt;::dequeue() {\n   if (count == 0) error(\"dequeue: Attempting to dequeue an empty queue\");\n   count--;\n   bool wasBack = (backIndex == count);\n   ValueType value = heap[0].value;\n   swapHeapEntries(0, count);\n   int index = 0;\n   while (true) {\n      int left = 2 * index + 1;\n      int right = 2 * index + 2;\n      if (left &gt;= count) break;\n      int child = left;\n      if (right &lt; count &amp;&amp; takesPriority(right, left)) child = right;\n      if (takesPriority(index, child)) break;\n      swapHeapEntries(index, child);\n      index = child;\n   }\n   if (wasBack) backIndex = index;\n   return value;\n}\n\ntemplate &lt;typename ValueType&gt;\nValueType PriorityQueue&lt;ValueType&gt;::peek() const {\n   if (count == 0) error(\"peek: Attempting to peek at an empty queue\");\n   return heap.get(0).value;\n}\n\ntemplate &lt;typename ValueType&gt;\ndouble PriorityQueue&lt;ValueType&gt;::peekPriority() const {\n   if (count == 0) error(\"peekPriority: Attempting to peek at an empty queue\");\n   return heap.get(0).priority;\n}\n\ntemplate &lt;typename ValueType&gt;\nValueType &amp; PriorityQueue&lt;ValueType&gt;::front() {\n   if (count == 0) error(\"front: Attempting to read front of an empty queue\");\n   return heap.get(0).value;\n}\n\ntemplate &lt;typename ValueType&gt;\nValueType &amp; PriorityQueue&lt;ValueType&gt;::back() {\n   if (count == 0) error(\"back: Attempting to read back of an empty queue\");\n   return heap.get(backIndex).value;\n}\n\ntemplate &lt;typename ValueType&gt;\nbool PriorityQueue&lt;ValueType&gt;::takesPriority(int i1, int i2) {\n   if (heap[i1].priority &lt; heap[i2].priority) return true;\n   if (heap[i1].priority &gt; heap[i2].priority) return false;\n   return (heap[i1].sequence &lt; heap[i2].sequence);\n}\n\ntemplate &lt;typename ValueType&gt;\nvoid PriorityQueue&lt;ValueType&gt;::swapHeapEntries(int i1, int i2) {\n   HeapEntry entry = heap[i1];\n   heap[i1] = heap[i2];\n   heap[i2] = entry;\n}\n\ntemplate &lt;typename ValueType&gt;\nstd::string PriorityQueue&lt;ValueType&gt;::toString() {\n   ostringstream os;\n   os &lt;&lt; *this;\n   return os.str();\n}\n\ntemplate &lt;typename ValueType&gt;\nstd::ostream &amp; operator&lt;&lt;(std::ostream &amp; os,\n                          const PriorityQueue&lt;ValueType&gt; &amp; pq) {\n   os &lt;&lt; \"{\";\n   PriorityQueue&lt;ValueType&gt; copy = pq;\n   int len = pq.size();\n   for (int i = 0; i &lt; len; i++) {\n      if (i &gt; 0) os &lt;&lt; \", \";\n      os &lt;&lt; copy.peekPriority() &lt;&lt; \":\";\n      writeGenericValue(os, copy.dequeue(), true);\n   }\n   return os &lt;&lt; \"}\";\n}\n\ntemplate &lt;typename ValueType&gt;\nstd::istream &amp; operator&gt;&gt;(std::istream &amp; is, PriorityQueue&lt;ValueType&gt; &amp; pq) {\n   char ch;\n   is &gt;&gt; ch;\n   if (ch != '{') error(\"operator &gt;&gt;: Missing {\");\n   pq.clear();\n   is &gt;&gt; ch;\n   if (ch != '}') {\n      is.unget();\n      while (true) {\n         double priority;\n         is &gt;&gt; priority &gt;&gt; ch;\n         if (ch != ':') error(\"operator &gt;&gt;: Missing colon after priority\");\n         ValueType value;\n         readGenericValue(is, value);\n         pq.enqueue(value, priority);\n         is &gt;&gt; ch;\n         if (ch == '}') break;\n         if (ch != ',') {\n            error(std::string(\"operator &gt;&gt;: Unexpected character \") + ch);\n         }\n      }\n   }\n   return is;\n}\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/docs/_old/queue-h.html",
    "content": "<html>\n<head>\n<title>../include/queue.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: queue.h\n * -------------\n * This file exports the Queue class, a collection in which values are\n * ordinarily processed in a first-in/first-out (FIFO) order.\n */\n</scan>\n#ifndef _queue_h\n#define _queue_h\n\n#include \"vector.h\"\n\n<a name=\"Class:Queue<ValueType>\"><scan class=comment>/*\n * Class: Queue&lt;ValueType&gt;\n * -----------------------\n * This class models a linear structure called a queue in which values are\n * added at one end and removed from the other.  This discipline gives rise\n * to a first-in/first-out behavior (FIFO) that is the defining feature of\n * queues.\n */\n</scan>\ntemplate &lt;typename ValueType&gt;\nclass Queue {\n\npublic:\n\n<a name=\"Constructor:Queue\"><scan class=comment>/*\n * Constructor: Queue\n * Usage: Queue&lt;ValueType&gt; queue;\n * ------------------------------\n * Initializes a new empty queue.\n */\n</scan>\n   Queue();\n\n<a name=\"Destructor:~Queue\"><scan class=comment>/*\n * Destructor: ~Queue\n * ------------------\n * Frees any heap storage associated with this queue.\n */\n</scan>\n   virtual ~Queue();\n\n<a name=\"Method:size\"><scan class=comment>/*\n * Method: size\n * Usage: int n = queue.size();\n * ----------------------------\n * Returns the number of values in the queue.\n */\n</scan>\n   int size() const;\n\n<a name=\"Method:isEmpty\"><scan class=comment>/*\n * Method: isEmpty\n * Usage: if (queue.isEmpty()) ...\n * -------------------------------\n * Returns true if the queue contains no elements.\n */\n</scan>\n   bool isEmpty() const;\n\n<a name=\"Method:clear\"><scan class=comment>/*\n * Method: clear\n * Usage: queue.clear();\n * ---------------------\n * Removes all elements from the queue.\n */\n</scan>\n   void clear();\n\n<a name=\"Method:enqueue\"><scan class=comment>/*\n * Method: enqueue\n * Usage: queue.enqueue(value);\n * ----------------------------\n * Adds value to the end of the queue.\n */\n</scan>\n   void enqueue(ValueType value);\n\n<a name=\"Method:dequeue\"><scan class=comment>/*\n * Method: dequeue\n * Usage: ValueType first = queue.dequeue();\n * -----------------------------------------\n * Removes and returns the first item in the queue.\n */\n</scan>\n   ValueType dequeue();\n\n<a name=\"Method:peek\"><scan class=comment>/*\n * Method: peek\n * Usage: ValueType first = queue.peek();\n * --------------------------------------\n * Returns the first value in the queue, without removing it.  For\n * compatibility with the STL classes, this method is also exported under\n * the name front, in which case it returns the value by reference.\n */\n</scan>\n   ValueType peek() const;\n\n<a name=\"Method:front\"><scan class=comment>/*\n * Method: front\n * Usage: ValueType first = queue.front();\n * ---------------------------------------\n * Returns the first value in the queue by reference.\n */\n</scan>\n   ValueType &amp; front();\n\n<a name=\"Method:back\"><scan class=comment>/*\n * Method: back\n * Usage: ValueType last = queue.back();\n * -------------------------------------\n * Returns the last value in the queue by reference.\n */\n</scan>\n   ValueType &amp; back();\n\n<a name=\"Method:toString\"><scan class=comment>/*\n * Method: toString\n * Usage: string str = queue.toString();\n * -------------------------------------\n * Converts the queue to a printable string representation.\n */\n</scan>\n   std::string toString();\n\n<scan class=comment>/* Private section */</scan>\n\n<scan class=comment>/**********************************************************************/</scan>\n<scan class=comment>/* Note: Everything below this point in the file is logically part    */</scan>\n<scan class=comment>/* of the implementation and should not be of interest to clients.    */</scan>\n<scan class=comment>/**********************************************************************/</scan>\n\n<a name=\"Implementation notes:Queue data structure\"><scan class=comment>/*\n * Implementation notes: Queue data structure\n * ------------------------------------------\n * The Queue class is implemented using a ring buffer.\n */\n</scan>\nprivate:\n\n<scan class=comment>/* Instance variables */</scan>\n\n   Vector&lt;ValueType&gt; ringBuffer;\n   int count;\n   int capacity;\n   int head;\n   int tail;\n\n<scan class=comment>/* Private functions */</scan>\n\n   void expandRingBufferCapacity();\n\n};\n\nextern void error(std::string msg);\n\n<a name=\"Implementation notes:Queue data structure\"><scan class=comment>/*\n * Implementation notes: Queue data structure\n * ------------------------------------------\n * The array-based queue stores the elements in successive index positions\n * in a vector, just as a stack does.  What makes the queue structure more\n * complex is the need to avoid shifting elements as the queue expands and\n * contracts.  In the array model, this goal is achieved by keeping track\n * of both the head and tail indices.  The tail index increases by one each\n * time an element is enqueued, and the head index increases by one each\n * time an element is dequeued.  Each index therefore marches toward the\n * end of the allocated vector and will eventually reach the end.  Rather\n * than allocate new memory, this implementation lets each index wrap\n * around back to the beginning as if the ends of the array of elements\n * were joined to form a circle.  This representation is called a ring\n * buffer.\n */\n</scan>\nconst int INITIAL_CAPACITY = 10;\n\n<a name=\"Implementation notes:Queue constructor\"><scan class=comment>/*\n * Implementation notes: Queue constructor\n * ---------------------------------------\n * The constructor must allocate the array storage for the queue elements\n * and initialize the fields of the object.\n */\n</scan>\ntemplate &lt;typename ValueType&gt;\nQueue&lt;ValueType&gt;::Queue() {\n   clear();\n}\n\n<a name=\"Implementation notes:~Queue destructor\"><scan class=comment>/*\n * Implementation notes: ~Queue destructor\n * ---------------------------------------\n * All of the dynamic memory is allocated in the Vector class, so no work\n * is required at this level.\n */\n</scan>\ntemplate &lt;typename ValueType&gt;\nQueue&lt;ValueType&gt;::~Queue() {\n   <scan class=comment>/* Empty */</scan>\n}\n\ntemplate &lt;typename ValueType&gt;\nint Queue&lt;ValueType&gt;::size() const {\n   return count;\n}\n\ntemplate &lt;typename ValueType&gt;\nbool Queue&lt;ValueType&gt;::isEmpty() const {\n   return count == 0;\n}\n\ntemplate &lt;typename ValueType&gt;\nvoid Queue&lt;ValueType&gt;::clear() {\n   capacity = INITIAL_CAPACITY;\n   ringBuffer = Vector&lt;ValueType&gt;(capacity);\n   head = 0;\n   tail = 0;\n   count = 0;\n}\n\ntemplate &lt;typename ValueType&gt;\nvoid Queue&lt;ValueType&gt;::enqueue(ValueType value) {\n   if (count &gt;= capacity - 1) expandRingBufferCapacity();\n   ringBuffer[tail] = value;\n   tail = (tail + 1) % capacity;\n   count++;\n}\n\n<a name=\"Implementation notes:dequeue, peek\"><scan class=comment>/*\n * Implementation notes: dequeue, peek\n * -----------------------------------\n * These methods must check for an empty queue and report an error if there\n * is no first element.\n */\n</scan>\ntemplate &lt;typename ValueType&gt;\nValueType Queue&lt;ValueType&gt;::dequeue() {\n   if (count == 0) error(\"dequeue: Attempting to dequeue an empty queue\");\n   ValueType result = ringBuffer[head];\n   head = (head + 1) % capacity;\n   count--;\n   return result;\n}\n\ntemplate &lt;typename ValueType&gt;\nValueType Queue&lt;ValueType&gt;::peek() const {\n   if (count == 0) error(\"peek: Attempting to peek at an empty queue\");\n   return ringBuffer.get(head);\n}\n\ntemplate &lt;typename ValueType&gt;\nValueType &amp; Queue&lt;ValueType&gt;::front() {\n   if (count == 0) error(\"front: Attempting to read front of an empty queue\");\n   return ringBuffer[head];\n}\n\ntemplate &lt;typename ValueType&gt;\nValueType &amp; Queue&lt;ValueType&gt;::back() {\n   if (count == 0) error(\"back: Attempting to read back of an empty queue\");\n   return ringBuffer[(tail + capacity - 1) % capacity];\n}\n\n<a name=\"Implementation notes:expandRingBufferCapacity\"><scan class=comment>/*\n * Implementation notes: expandRingBufferCapacity\n * ----------------------------------------------\n * This private method doubles the capacity of the ringBuffer vector.  Note\n * that this implementation also shifts all the elements back to the\n * beginning of the vector.\n */\n</scan>\ntemplate &lt;typename ValueType&gt;\nvoid Queue&lt;ValueType&gt;::expandRingBufferCapacity() {\n   Vector&lt;ValueType&gt; copy = ringBuffer;\n   ringBuffer = Vector&lt;ValueType&gt;(2 * capacity);\n   for (int i = 0; i &lt; count; i++) {\n      ringBuffer[i] = copy[(head + i) % capacity];\n   }\n   head = 0;\n   tail = count;\n   capacity *= 2;\n}\n\ntemplate &lt;typename ValueType&gt;\nstd::string Queue&lt;ValueType&gt;::toString() {\n   ostringstream os;\n   os &lt;&lt; *this;\n   return os.str();\n}\n\ntemplate &lt;typename ValueType&gt;\nstd::ostream &amp; operator&lt;&lt;(std::ostream &amp; os, const Queue&lt;ValueType&gt; &amp; queue) {\n   os &lt;&lt; \"{\";\n   Queue&lt;ValueType&gt; copy = queue;\n   int len = queue.size();\n   for (int i = 0; i &lt; len; i++) {\n      if (i &gt; 0) os &lt;&lt; \", \";\n      writeGenericValue(os, copy.dequeue(), true);\n   }\n   return os &lt;&lt; \"}\";\n}\n\ntemplate &lt;typename ValueType&gt;\nstd::istream &amp; operator&gt;&gt;(std::istream &amp; is, Queue&lt;ValueType&gt; &amp; queue) {\n   char ch;\n   is &gt;&gt; ch;\n   if (ch != '{') error(\"operator &gt;&gt;: Missing {\");\n   queue.clear();\n   is &gt;&gt; ch;\n   if (ch != '}') {\n      is.unget();\n      while (true) {\n         ValueType value;\n         readGenericValue(is, value);\n         queue.enqueue(value);\n         is &gt;&gt; ch;\n         if (ch == '}') break;\n         if (ch != ',') {\n            error(std::string(\"operator &gt;&gt;: Unexpected character \") + ch);\n         }\n      }\n   }\n   return is;\n}\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/docs/_old/random-h.html",
    "content": "<html>\n<head>\n<title>../include/random.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: random.h\n * --------------\n * This file exports functions for generating pseudorandom numbers.\n */\n</scan>\n#ifndef _random_h\n#define _random_h\n\n<a name=\"Function:randomInteger\"><scan class=comment>/*\n * Function: randomInteger\n * Usage: int n = randomInteger(low, high);\n * ----------------------------------------\n * Returns a random integer in the range low to high, inclusive.\n */\n</scan>\nint randomInteger(int low, int high);\n\n<a name=\"Function:randomReal\"><scan class=comment>/*\n * Function: randomReal\n * Usage: double d = randomReal(low, high);\n * ----------------------------------------\n * Returns a random real number in the half-open interval [low .. high).  A\n * half-open interval includes the first endpoint but not the second, which\n * means that the result is always greater than or equal to low but\n * strictly less than high.\n */\n</scan>\ndouble randomReal(double low, double high);\n\n<a name=\"Function:randomChance\"><scan class=comment>/*\n * Function: randomChance\n * Usage: if (randomChance(p)) ...\n * -------------------------------\n * Returns true with the probability indicated by p.  The argument p must\n * be a floating-point number between 0 (never) and 1 (always).  For\n * example, calling randomChance(.30) returns true 30 percent of the time.\n */\n</scan>\nbool randomChance(double p);\n\n<a name=\"Function:setRandomSeed\"><scan class=comment>/*\n * Function: setRandomSeed\n * Usage: setRandomSeed(seed);\n * ---------------------------\n * Sets the internal random number seed to the specified value.  You can\n * use this function to set a specific starting point for the pseudorandom\n * sequence or to ensure that program behavior is repeatable during the\n * debugging phase.\n */\n</scan>\nvoid setRandomSeed(int seed);\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/docs/_old/set-h.html",
    "content": "<html>\n<head>\n<title>../include/set.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: set.h\n * -----------\n * This file exports the Set class, which implements a collection for\n * storing a set of distinct elements.\n */\n</scan>\n#ifndef _set_h\n#define _set_h\n\n#include &lt;iostream&gt;\n#include \"map.h\"\n#include \"vector.h\"\n\n<a name=\"Class:Set<ValueType>\"><scan class=comment>/*\n * Class: Set&lt;ValueType&gt;\n * ---------------------\n * This class stores a collection of distinct elements.\n */\n</scan>\ntemplate &lt;typename ValueType&gt;\nclass Set {\n\npublic:\n\n<a name=\"Constructor:Set\"><scan class=comment>/*\n * Constructor: Set\n * Usage: Set&lt;ValueType&gt; set;\n * --------------------------\n * Creates an empty set of the specified element type.\n */\n</scan>\n   Set();\n\n<a name=\"Destructor:~Set\"><scan class=comment>/*\n * Destructor: ~Set\n * ----------------\n * Frees any heap storage associated with this set.\n */\n</scan>\n   virtual ~Set();\n\n<a name=\"Method:size\"><scan class=comment>/*\n * Method: size\n * Usage: count = set.size();\n * --------------------------\n * Returns the number of elements in this set.\n */\n</scan>\n   int size() const;\n\n<a name=\"Method:isEmpty\"><scan class=comment>/*\n * Method: isEmpty\n * Usage: if (set.isEmpty()) ...\n * -----------------------------\n * Returns true if this set contains no elements.\n */\n</scan>\n   bool isEmpty() const;\n\n<a name=\"Method:add\"><scan class=comment>/*\n * Method: add\n * Usage: set.add(value);\n * ----------------------\n * Adds an element to this set, if it was not already there.  For\n * compatibility with the STL set class, this method is also exported as\n * insert.\n */\n</scan>\n   void add(const ValueType &amp; value);\n   void insert(const ValueType &amp; value);\n\n<a name=\"Method:remove\"><scan class=comment>/*\n * Method: remove\n * Usage: set.remove(value);\n * -------------------------\n * Removes an element from this set.  If the value was not contained in the\n * set, no error is generated and the set remains unchanged.\n */\n</scan>\n   void remove(const ValueType &amp; value);\n\n<a name=\"Method:contains\"><scan class=comment>/*\n * Method: contains\n * Usage: if (set.contains(value)) ...\n * -----------------------------------\n * Returns true if the specified value is in this set.\n */\n</scan>\n   bool contains(const ValueType &amp; value) const;\n\n<a name=\"Method:isSubsetOf\"><scan class=comment>/*\n * Method: isSubsetOf\n * Usage: if (set.isSubsetOf(set2)) ...\n * ------------------------------------\n * Implements the subset relation on sets.  It returns true if every\n * element of this set is contained in set2.\n */\n</scan>\n   bool isSubsetOf(const Set &amp; set2) const;\n\n<a name=\"Method:clear\"><scan class=comment>/*\n * Method: clear\n * Usage: set.clear();\n * -------------------\n * Removes all elements from this set.\n */\n</scan>\n   void clear();\n\n<a name=\"Operator:==\"><scan class=comment>/*\n * Operator: ==\n * Usage: set1 == set2\n * -------------------\n * Returns true if set1 and set2 contain the same elements.\n */\n</scan>\n   bool operator==(const Set &amp; set2) const;\n\n<a name=\"Operator:!=\"><scan class=comment>/*\n * Operator: !=\n * Usage: set1 != set2\n * -------------------\n * Returns true if set1 and set2 are different.\n */\n</scan>\n   bool operator!=(const Set &amp; set2) const;\n\n<a name=\"Operator:+\"><scan class=comment>/*\n * Operator: +\n * Usage: set1 + set2\n *        set1 + element\n * ---------------------\n * Returns the union of sets set1 and set2, which is the set of elements\n * that appear in at least one of the two sets.  The right hand set can be\n * replaced by an element of the value type, in which case the operator\n * returns a new set formed by adding that element.\n */\n</scan>\n   Set operator+(const Set &amp; set2) const;\n   Set operator+(const ValueType &amp; element) const;\n\n<a name=\"Operator:*\"><scan class=comment>/*\n * Operator: *\n * Usage: set1 * set2\n * ------------------\n * Returns the intersection of sets set1 and set2, which is the set of all\n * elements that appear in both.\n */\n</scan>\n   Set operator*(const Set &amp; set2) const;\n\n<a name=\"Operator:-\"><scan class=comment>/*\n * Operator: -\n * Usage: set1 - set2\n *        set1 - element\n * ---------------------\n * Returns the difference of sets set1 and set2, which is all of the\n * elements that appear in set1 but not set2.  The right hand set can be\n * replaced by an element of the value type, in which case the operator\n * returns a new set formed by removing that element.\n */\n</scan>\n   Set operator-(const Set &amp; set2) const;\n   Set operator-(const ValueType &amp; element) const;\n\n<a name=\"Operator:+=\"><scan class=comment>/*\n * Operator: +=\n * Usage: set1 += set2;\n *        set1 += value;\n * ---------------------\n * Adds all of the elements from set2 (or the single specified value) to\n * set1.  As a convenience, the Set package also overloads the comma\n * operator so that it is possible to initialize a set like this:\n *\n *    Set digits;\n *    digits += 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;\n */\n</scan>\n   Set &amp; operator+=(const Set &amp; set2);\n   Set &amp; operator+=(const ValueType &amp; value);\n\n<a name=\"Operator:*=\"><scan class=comment>/*\n * Operator: *=\n * Usage: set1 *= set2;\n * --------------------\n * Removes any elements from set1 that are not present in set2.\n */\n</scan>\n   Set &amp; operator*=(const Set &amp; set2);\n\n<a name=\"Operator:-=\"><scan class=comment>/*\n * Operator: -=\n * Usage: set1 -= set2;\n *        set1 -= value;\n * ---------------------\n * Removes the elements from set2 (or the single specified value) from\n * set1.  As a convenience, the Set package also overloads the comma\n * operator so that it is possible to remove multiple elements from a set\n * like this:\n *\n *    digits -= 0, 2, 4, 6, 8;\n *\n * which removes the values 0, 2, 4, 6, and 8 from the set digits.\n */\n</scan>\n   Set &amp; operator-=(const Set &amp; set2);\n   Set &amp; operator-=(const ValueType &amp; value);\n\n<a name=\"Method:first\"><scan class=comment>/*\n * Method: first\n * Usage: ValueType value = set.first();\n * -------------------------------------\n * Returns the first value in the set in the order established by the\n * foreach macro.  If the set is empty, first generates an error.\n */\n</scan>\n   ValueType first() const;\n\n<a name=\"Method:toString\"><scan class=comment>/*\n * Method: toString\n * Usage: string str = set.toString();\n * -----------------------------------\n * Converts the set to a printable string representation.\n */\n</scan>\n   std::string toString();\n\n<a name=\"Method:mapAll\"><scan class=comment>/*\n * Method: mapAll\n * Usage: set.mapAll(fn);\n * ----------------------\n * Iterates through the elements of the set and calls fn(value) for each\n * one.  The values are processed in ascending order, as defined by the\n * comparison function.\n */\n</scan>\n   void mapAll(void (*fn)(ValueType)) const;\n   void mapAll(void (*fn)(const ValueType &amp;)) const;\n\n   template &lt;typename FunctorType&gt;\n   void mapAll(FunctorType fn) const;\n\n<scan class=comment>/*\n * Additional Set operations\n * -------------------------\n * In addition to the methods listed in this interface, the Set class\n * supports the following operations:\n *\n *   - Stream I/O using the &lt;&lt; and &gt;&gt; operators\n *   - Deep copying for the copy constructor and assignment operator\n *   - Iteration using the range-based for statement and STL iterators\n *\n * The iteration forms process the Set in ascending order.\n */\n</scan>\n<scan class=comment>/* Private section */</scan>\n\n<scan class=comment>/**********************************************************************/</scan>\n<scan class=comment>/* Note: Everything below this point in the file is logically part    */</scan>\n<scan class=comment>/* of the implementation and should not be of interest to clients.    */</scan>\n<scan class=comment>/**********************************************************************/</scan>\n\nprivate:\n\n   Map&lt;ValueType,bool&gt; map;            <scan class=comment>/* Map used to store the element     */</scan>\n   bool removeFlag;                    <scan class=comment>/* Flag to differentiate += and -=   */</scan>\n\npublic:\n\n<scan class=comment>/*\n * Hidden features\n * ---------------\n * The remainder of this file consists of the code required to support the\n * comma operator, deep copying, and iteration.  Including these methods in\n * the public interface would make that interface more difficult to\n * understand for the average client.\n */\n</scan>\n<scan class=comment>/* Extended constructors */</scan>\n\n   template &lt;typename CompareType&gt;\n   explicit Set(CompareType cmp) : map(Map&lt;ValueType,bool&gt;(cmp)) {\n      <scan class=comment>/* Empty */</scan>\n   }\n\n   Set &amp; operator,(const ValueType &amp; value) {\n      if (this-&gt;removeFlag) {\n         this-&gt;remove(value);\n      } else {\n         this-&gt;add(value);\n      }\n      return *this;\n   }\n\n<scan class=comment>/*\n * Iterator support\n * ----------------\n * The classes in the StanfordCPPLib collection implement input iterators\n * so that they work symmetrically with respect to the corresponding STL\n * classes.\n */\n</scan>\n   class iterator : public std::iterator&lt;std::input_iterator_tag,ValueType&gt; {\n\n   private:\n\n      typename Map&lt;ValueType,bool&gt;::iterator mapit;  <scan class=comment>/* Iterator for the map */</scan>\n\n   public:\n\n                iterator() {\n              <scan class=comment>/* Empty */</scan>\n      }\n\n      iterator(typename Map&lt;ValueType,bool&gt;::iterator it) : mapit(it) {\n         <scan class=comment>/* Empty */</scan>\n      }\n\n      iterator(const iterator &amp; it) {\n         mapit = it.mapit;\n      }\n\n      iterator &amp; operator++() {\n         ++mapit;\n         return *this;\n      }\n\n      iterator operator++(int) {\n         iterator copy(*this);\n         operator++();\n         return copy;\n      }\n\n      bool operator==(const iterator &amp; rhs) {\n         return mapit == rhs.mapit;\n      }\n\n      bool operator!=(const iterator &amp; rhs) {\n         return !(*this == rhs);\n      }\n\n      ValueType operator*() {\n         return *mapit;\n      }\n\n      ValueType *operator-&gt;() {\n         return mapit;\n      }\n   };\n\n   iterator begin() const {\n      return iterator(map.begin());\n   }\n\n   iterator end() const {\n      return iterator(map.end());\n   }\n\n};\n\nextern void error(std::string msg);\n\ntemplate &lt;typename ValueType&gt;\nSet&lt;ValueType&gt;::Set() {\n   <scan class=comment>/* Empty */</scan>\n}\n\ntemplate &lt;typename ValueType&gt;\nSet&lt;ValueType&gt;::~Set() {\n   <scan class=comment>/* Empty */</scan>\n}\n\ntemplate &lt;typename ValueType&gt;\nint Set&lt;ValueType&gt;::size() const {\n   return map.size();\n}\n\ntemplate &lt;typename ValueType&gt;\nbool Set&lt;ValueType&gt;::isEmpty() const {\n   return map.isEmpty();\n}\n\ntemplate &lt;typename ValueType&gt;\nvoid Set&lt;ValueType&gt;::add(const ValueType &amp; value) {\n   map.put(value, true);\n}\n\ntemplate &lt;typename ValueType&gt;\nvoid Set&lt;ValueType&gt;::insert(const ValueType &amp; value) {\n   map.put(value, true);\n}\n\ntemplate &lt;typename ValueType&gt;\nvoid Set&lt;ValueType&gt;::remove(const ValueType &amp; value) {\n   map.remove(value);\n}\n\ntemplate &lt;typename ValueType&gt;\nbool Set&lt;ValueType&gt;::contains(const ValueType &amp; value) const {\n   return map.containsKey(value);\n}\n\ntemplate &lt;typename ValueType&gt;\nvoid Set&lt;ValueType&gt;::clear() {\n   map.clear();\n}\n\ntemplate &lt;typename ValueType&gt;\nbool Set&lt;ValueType&gt;::isSubsetOf(const Set &amp; set2) const {\n   iterator it = begin();\n   iterator end = this-&gt;end();\n   while (it != end) {\n      if (!set2.map.containsKey(*it)) return false;\n      ++it;\n   }\n   return true;\n}\n\n<a name=\"Implementation notes:set operators\"><scan class=comment>/*\n * Implementation notes: set operators\n * -----------------------------------\n * The implementations for the set operators use iteration to walk over the\n * elements in one or both sets.\n */\n</scan>\ntemplate &lt;typename ValueType&gt;\nbool Set&lt;ValueType&gt;::operator==(const Set &amp; set2) const {\n   if (size() != set2.map.size()) return false;\n   iterator it1 = begin();\n   iterator it2 = set2.map.begin();\n   iterator end = this-&gt;end();\n   while (it1 != end) {\n      if (map.compareKeys(*it1, *it2) != 0) return false;\n      ++it1;\n      ++it2;\n   }\n   return true;\n}\n\ntemplate &lt;typename ValueType&gt;\nbool Set&lt;ValueType&gt;::operator!=(const Set &amp; set2) const {\n   return !(*this == set2);\n}\n\ntemplate &lt;typename ValueType&gt;\nSet&lt;ValueType&gt; Set&lt;ValueType&gt;::operator+(const Set &amp; set2) const {\n   Set&lt;ValueType&gt; set = *this;\n   foreach (ValueType value in set2) {\n      set.add(value);\n   }\n   return set;\n}\n\ntemplate &lt;typename ValueType&gt;\nSet&lt;ValueType&gt; Set&lt;ValueType&gt;::operator+(const ValueType &amp; element) const {\n   Set&lt;ValueType&gt; set = *this;\n   set.add(element);\n   return set;\n}\n\ntemplate &lt;typename ValueType&gt;\nSet&lt;ValueType&gt; Set&lt;ValueType&gt;::operator*(const Set &amp; set2) const {\n   Set&lt;ValueType&gt; set = *this;\n   set.clear();\n   foreach (ValueType value in *this) {\n      if (set2.contains(value)) set.add(value);\n   }\n   return set;\n}\n\ntemplate &lt;typename ValueType&gt;\nSet&lt;ValueType&gt; Set&lt;ValueType&gt;::operator-(const Set &amp; set2) const {\n   Set&lt;ValueType&gt; set = *this;\n   foreach (ValueType value in set2) {\n      set.remove(value);\n   }\n   return set;\n}\n\ntemplate &lt;typename ValueType&gt;\nSet&lt;ValueType&gt; Set&lt;ValueType&gt;::operator-(const ValueType &amp; element) const {\n   Set&lt;ValueType&gt; set = *this;\n   set.remove(element);\n   return set;\n}\n\ntemplate &lt;typename ValueType&gt;\nSet&lt;ValueType&gt; &amp; Set&lt;ValueType&gt;::operator+=(const Set &amp; set2) {\n   foreach (ValueType value in set2) {\n      this-&gt;add(value);\n   }\n   return *this;\n}\n\ntemplate &lt;typename ValueType&gt;\nSet&lt;ValueType&gt; &amp; Set&lt;ValueType&gt;::operator+=(const ValueType &amp; value) {\n   this-&gt;add(value);\n   this-&gt;removeFlag = false;\n   return *this;\n}\n\ntemplate &lt;typename ValueType&gt;\nSet&lt;ValueType&gt; &amp; Set&lt;ValueType&gt;::operator*=(const Set &amp; set2) {\n   Vector&lt;ValueType&gt; toRemove;\n   foreach (ValueType value in *this) {\n      if (!set2.map.containsKey(value)) toRemove.add(value);\n   }\n   foreach (ValueType value in toRemove) {\n      this-&gt;remove(value);\n   }\n   return *this;\n}\n\ntemplate &lt;typename ValueType&gt;\nSet&lt;ValueType&gt; &amp; Set&lt;ValueType&gt;::operator-=(const Set &amp; set2) {\n   Vector&lt;ValueType&gt; toRemove;\n   foreach (ValueType value in *this) {\n      if (set2.map.containsKey(value)) toRemove.add(value);\n   }\n   foreach (ValueType value in toRemove) {\n      this-&gt;remove(value);\n   }\n   return *this;\n}\n\ntemplate &lt;typename ValueType&gt;\nSet&lt;ValueType&gt; &amp; Set&lt;ValueType&gt;::operator-=(const ValueType &amp; value) {\n   this-&gt;remove(value);\n   this-&gt;removeFlag = true;\n   return *this;\n}\n\ntemplate &lt;typename ValueType&gt;\nValueType Set&lt;ValueType&gt;::first() const {\n   if (isEmpty()) error(\"first: set is empty\");\n   return *begin();\n}\n\ntemplate &lt;typename ValueType&gt;\nstd::string Set&lt;ValueType&gt;::toString() {\n   ostringstream os;\n   os &lt;&lt; *this;\n   return os.str();\n}\n\ntemplate &lt;typename ValueType&gt;\nvoid Set&lt;ValueType&gt;::mapAll(void (*fn)(ValueType)) const {\n   map.mapAll(fn);\n}\n\ntemplate &lt;typename ValueType&gt;\nvoid Set&lt;ValueType&gt;::mapAll(void (*fn)(const ValueType &amp;)) const {\n   map.mapAll(fn);\n}\n\ntemplate &lt;typename ValueType&gt;\ntemplate &lt;typename FunctorType&gt;\nvoid Set&lt;ValueType&gt;::mapAll(FunctorType fn) const {\n   map.mapAll(fn);\n}\n\ntemplate &lt;typename ValueType&gt;\nstd::ostream &amp; operator&lt;&lt;(std::ostream &amp; os, const Set&lt;ValueType&gt; &amp; set) {\n   os &lt;&lt; \"{\";\n   bool started = false;\n   foreach (ValueType value in set) {\n      if (started) os &lt;&lt; \", \";\n      writeGenericValue(os, value, true);\n      started = true;\n   }\n   os &lt;&lt; \"}\";\n   return os;\n}\n\ntemplate &lt;typename ValueType&gt;\nstd::istream &amp; operator&gt;&gt;(std::istream &amp; is, Set&lt;ValueType&gt; &amp; set) {\n   char ch;\n   is &gt;&gt; ch;\n   if (ch != '{') error(\"operator &gt;&gt;: Missing {\");\n   set.clear();\n   is &gt;&gt; ch;\n   if (ch != '}') {\n      is.unget();\n      while (true) {\n         ValueType value;\n         readGenericValue(is, value);\n         set += value;\n         is &gt;&gt; ch;\n         if (ch == '}') break;\n         if (ch != ',') {\n            error(std::string(\"operator &gt;&gt;: Unexpected character \") + ch);\n         }\n      }\n   }\n   return is;\n}\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/docs/_old/simpio-h.html",
    "content": "<html>\n<head>\n<title>../include/simpio.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: simpio.h\n * --------------\n * This file exports a set of functions that simplify input/output\n * operations in C++ and provide some error-checking on console input.\n */\n</scan>\n#ifndef _simpio_h\n#define _simpio_h\n\n#include &lt;string&gt;\n\n<a name=\"Function:getInteger\"><scan class=comment>/*\n * Function: getInteger\n * Usage: int n = getInteger(prompt);\n * ----------------------------------\n * Reads a complete line from cin and scans it as an integer. If the scan\n * succeeds, the integer value is returned. If the argument is not a legal\n * integer or if extraneous characters (other than whitespace) appear in\n * the string, the user is given a chance to reenter the value. If\n * supplied, the optional prompt string is printed before reading the\n * value.\n */\n</scan>\nint getInteger(std::string prompt = \"\");\n\n<a name=\"Function:getReal\"><scan class=comment>/*\n * Function: getReal\n * Usage: double x = getReal(prompt);\n * ----------------------------------\n * Reads a complete line from cin and scans it as a floating-point number.\n * If the scan succeeds, the floating-point value is returned.  If the\n * input is not a legal number or if extraneous characters (other than\n * whitespace) appear in the string, the user is given a chance to reenter\n * the value. If supplied, the optional prompt string is printed before\n * reading the value.\n */\n</scan>\ndouble getReal(std::string prompt = \"\");\n\n<a name=\"Function:getLine\"><scan class=comment>/*\n * Function: getLine\n * Usage: string line = getLine(prompt);\n * -------------------------------------\n * Reads a line of text from cin and returns that line as a string.  The\n * newline character that terminates the input is not stored as part of the\n * return value.  If supplied, the optional prompt string is printed before\n * reading the value.\n */\n</scan>\nstd::string getLine(std::string prompt = \"\");\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/docs/_old/sound-h.html",
    "content": "<html>\n<head>\n<title>../include/sound.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: sound.h\n * -------------\n * This file defines a class that represents a sound.\n */\n</scan>\n#ifndef _sound_h\n#define _sound_h\n\n<a name=\"Class:Sound\"><scan class=comment>/*\n * Class: Sound\n * ------------\n * This class encapsulates a sound file.  The sound file is specified in\n * the constructor and must be a file in either the current directory or a\n * subdirectory named sounds.\n *\n * The following code, for example, plays the sound file ringtone.wav:\n *\n *    Sound ringtone(\"ringtone.wav\");\n *    ringtone.play();\n */\n</scan>\nclass Sound {\n\npublic:\n\n<a name=\"Constructor:Sound\"><scan class=comment>/*\n * Constructor: Sound\n * Usage: Sound sound;\n *        Sound sound(filename);\n * -----------------------------\n * Creates a Sound object.  The default constructor creates an empty sound\n * that cannot be played.  The second form initializes the sound by reading\n * in the contents of the specified file.\n */\n</scan>\n   Sound(std::string filename);\n\n<a name=\"Destructor:~Sound\"><scan class=comment>/*\n * Destructor: ~Sound\n * ------------------\n * Frees the memory associated with the sound.\n */\n</scan>\n   virtual ~Sound();\n\n<a name=\"Method:play\"><scan class=comment>/*\n * Method: play\n * Usage: sound.play();\n * --------------------\n * Starts playing the sound.  This call returns immediately without waiting\n * for the sound to finish.\n */\n</scan>\n   void play();\n\n};\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/docs/_old/stack-h.html",
    "content": "<html>\n<head>\n<title>../include/stack.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: stack.h\n * -------------\n * This file exports the Stack class, which implements a collection that\n * processes values in a last-in/first-out (LIFO) order.\n */\n</scan>\n#ifndef _stack_h\n#define _stack_h\n\n#include \"vector.h\"\n\n<a name=\"Class:Stack<ValueType>\"><scan class=comment>/*\n * Class: Stack&lt;ValueType&gt;\n * -----------------------\n * This class models a linear structure called a stack in which values are\n * added and removed only from one end.  This discipline gives rise to a\n * last-in/first-out behavior (LIFO) that is the defining feature of\n * stacks.  The fundamental stack operations are push (add to top) and pop\n * (remove from top).\n */\n</scan>\ntemplate &lt;typename ValueType&gt;\nclass Stack {\n\npublic:\n\n<a name=\"Constructor:Stack\"><scan class=comment>/*\n * Constructor: Stack\n * Usage: Stack&lt;ValueType&gt; stack;\n * ------------------------------\n * Initializes a new empty stack.\n */\n</scan>\n   Stack();\n\n<a name=\"Destructor:~Stack\"><scan class=comment>/*\n * Destructor: ~Stack\n * ------------------\n * Frees any heap storage associated with this stack.\n */\n</scan>\n   virtual ~Stack();\n\n<a name=\"Method:size\"><scan class=comment>/*\n * Method: size\n * Usage: int n = stack.size();\n * ----------------------------\n * Returns the number of values in this stack.\n */\n</scan>\n   int size() const;\n\n<a name=\"Method:isEmpty\"><scan class=comment>/*\n * Method: isEmpty\n * Usage: if (stack.isEmpty()) ...\n * -------------------------------\n * Returns true if this stack contains no elements.\n */\n</scan>\n   bool isEmpty() const;\n\n<a name=\"Method:clear\"><scan class=comment>/*\n * Method: clear\n * Usage: stack.clear();\n * ---------------------\n * Removes all elements from this stack.\n */\n</scan>\n   void clear();\n\n<a name=\"Method:push\"><scan class=comment>/*\n * Method: push\n * Usage: stack.push(value);\n * -------------------------\n * Pushes the specified value onto this stack.\n */\n</scan>\n   void push(ValueType value);\n\n<a name=\"Method:pop\"><scan class=comment>/*\n * Method: pop\n * Usage: ValueType top = stack.pop();\n * -----------------------------------\n * Removes the top element from this stack and returns it.  This method\n * signals an error if called on an empty stack.\n */\n</scan>\n   ValueType pop();\n\n<a name=\"Method:peek\"><scan class=comment>/*\n * Method: peek\n * Usage: ValueType top = stack.peek();\n * ------------------------------------\n * Returns the value of top element from this stack, without removing it. \n * This method signals an error if called on an empty stack.  For\n * compatibility with the STL classes, this method is also exported under\n * the name top, in which case it returns the value by reference.\n */\n</scan>\n   ValueType peek() const;\n   ValueType &amp; top();\n\n<a name=\"Method:toString\"><scan class=comment>/*\n * Method: toString\n * Usage: string str = stack.toString();\n * -------------------------------------\n * Converts the stack to a printable string representation.\n */\n</scan>\n   std::string toString();\n\n<scan class=comment>/* Private section */</scan>\n\n<scan class=comment>/**********************************************************************/</scan>\n<scan class=comment>/* Note: Everything below this point in the file is logically part    */</scan>\n<scan class=comment>/* of the implementation and should not be of interest to clients.    */</scan>\n<scan class=comment>/**********************************************************************/</scan>\n\n<a name=\"Implementation notes:Stack data structure\"><scan class=comment>/*\n * Implementation notes: Stack data structure\n * ------------------------------------------\n * The easiest way to implement a stack is to store the elements in a\n * Vector.  Doing so means that the problems of dynamic memory allocation\n * and copy assignment are already solved by the implementation of the\n * underlying Vector class.\n */\n</scan>\nprivate:\n   Vector&lt;ValueType&gt; elements;\n\n};\n\nextern void error(std::string msg);\n\n<scan class=comment>/*\n * Stack class implementation\n * --------------------------\n * The Stack is internally managed using a Vector.  This layered design\n * makes the implementation extremely simple, to the point that most\n * methods can be implemented in as single line.\n */\n</scan>\ntemplate &lt;typename ValueType&gt;\nStack&lt;ValueType&gt;::Stack() {\n   <scan class=comment>/* Empty */</scan>\n}\n\ntemplate &lt;typename ValueType&gt;\nStack&lt;ValueType&gt;::~Stack() {\n   <scan class=comment>/* Empty */</scan>\n}\n\ntemplate &lt;typename ValueType&gt;\nint Stack&lt;ValueType&gt;::size() const {\n   return elements.size();\n}\n\ntemplate &lt;typename ValueType&gt;\nbool Stack&lt;ValueType&gt;::isEmpty() const {\n   return size() == 0;\n}\n\ntemplate &lt;typename ValueType&gt;\nvoid Stack&lt;ValueType&gt;::push(ValueType value) {\n   elements.add(value);\n}\n\ntemplate &lt;typename ValueType&gt;\nValueType Stack&lt;ValueType&gt;::pop() {\n   if (isEmpty()) error(\"pop: Attempting to pop an empty stack\");\n   ValueType top = elements[elements.size() - 1];\n   elements.remove(elements.size() - 1);\n   return top;\n}\n\ntemplate &lt;typename ValueType&gt;\nValueType Stack&lt;ValueType&gt;::peek() const {\n   if (isEmpty()) error(\"peek: Attempting to peek at an empty stack\");\n   return elements.get(elements.size() - 1);\n}\n\ntemplate &lt;typename ValueType&gt;\nValueType &amp; Stack&lt;ValueType&gt;::top() {\n   if (isEmpty()) error(\"top: Attempting to read top of an empty stack\");\n   return elements[elements.size() - 1];\n}\n\ntemplate &lt;typename ValueType&gt;\nvoid Stack&lt;ValueType&gt;::clear() {\n   elements.clear();\n}\n\ntemplate &lt;typename ValueType&gt;\nstd::string Stack&lt;ValueType&gt;::toString() {\n   ostringstream os;\n   os &lt;&lt; *this;\n   return os.str();\n}\n\ntemplate &lt;typename ValueType&gt;\nstd::ostream &amp; operator&lt;&lt;(std::ostream &amp; os, const Stack&lt;ValueType&gt; &amp; stack) {\n   os &lt;&lt; \"{\";\n   Stack&lt;ValueType&gt; copy = stack;\n   Stack&lt;ValueType&gt; reversed;\n   while (!copy.isEmpty()) {\n      reversed.push(copy.pop());\n   }\n   int len = stack.size();\n   for (int i = 0; i &lt; len; i++) {\n      if (i &gt; 0) os &lt;&lt; \", \";\n      writeGenericValue(os, reversed.pop(), true);\n   }\n   return os &lt;&lt; \"}\";\n}\n\ntemplate &lt;typename ValueType&gt;\nstd::istream &amp; operator&gt;&gt;(std::istream &amp; is, Stack&lt;ValueType&gt; &amp; stack) {\n   char ch;\n   is &gt;&gt; ch;\n   if (ch != '{') error(\"operator &gt;&gt;: Missing {\");\n   stack.clear();\n   is &gt;&gt; ch;\n   if (ch != '}') {\n      is.unget();\n      while (true) {\n         ValueType value;\n         readGenericValue(is, value);\n         stack.push(value);\n         is &gt;&gt; ch;\n         if (ch == '}') break;\n         if (ch != ',') {\n            error(std::string(\"operator &gt;&gt;: Unexpected character \") + ch);\n         }\n      }\n   }\n   return is;\n}\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/docs/_old/strlib-h.html",
    "content": "<html>\n<head>\n<title>../include/strlib.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: strlib.h\n * --------------\n * This file exports several useful string functions that are not included\n * in the C++ string library.\n */\n</scan>\n#ifndef _strlib_h\n#define _strlib_h\n\n#include &lt;iostream&gt;\n#include &lt;string&gt;\n\n<a name=\"Function:integerToString\"><scan class=comment>/*\n * Function: integerToString\n * Usage: string s = integerToString(n);\n * -------------------------------------\n * Converts an integer into the corresponding string of digits.  For\n * example, calling integerToString(123) returns the string \"123\".\n */\n</scan>\nstd::string integerToString(int n);\n\n<a name=\"Function:stringToInteger\"><scan class=comment>/*\n * Function: stringToInteger\n * Usage: int n = stringToInteger(str);\n * ------------------------------------\n * Converts a string of digits into an integer.  If the string is not a\n * legal integer or contains extraneous characters other than whitespace,\n * stringToInteger calls error with an appropriate message.\n */\n</scan>\nint stringToInteger(std::string str);\n\n<a name=\"Function:realToString\"><scan class=comment>/*\n * Function: realToString\n * Usage: string s = realToString(d);\n * ----------------------------------\n * Converts a floating-point number into the corresponding string form. \n * For example, calling realToString(23.45) returns the string \"23.45\".\n */\n</scan>\nstd::string realToString(double d);\n\n<a name=\"Function:stringToReal\"><scan class=comment>/*\n * Function: stringToReal\n * Usage: double d = stringToReal(str);\n * ------------------------------------\n * Converts a string representing a real number into its corresponding\n * value.  If the string is not a legal floating-point number or contains\n * extraneous characters other than whitespace, stringToReal calls error\n * with an appropriate message.\n */\n</scan>\ndouble stringToReal(std::string str);\n\n<a name=\"Function:toUpperCase\"><scan class=comment>/*\n * Function: toUpperCase\n * Usage: string s = toUpperCase(str);\n * -----------------------------------\n * Returns a new string in which all lowercase characters have been\n * converted into their uppercase equivalents.\n */\n</scan>\nstd::string toUpperCase(std::string str);\n\n<a name=\"Function:toLowerCase\"><scan class=comment>/*\n * Function: toLowerCase\n * Usage: string s = toLowerCase(str);\n * -----------------------------------\n * Returns a new string in which all uppercase characters have been\n * converted into their lowercase equivalents.\n */\n</scan>\nstd::string toLowerCase(std::string str);\n\n<a name=\"Function:equalsIgnoreCase\"><scan class=comment>/*\n * Function: equalsIgnoreCase\n * Usage: if (equalsIgnoreCase(s1, s2)) ...\n * ----------------------------------------\n * Returns true if s1 and s2 are equal discounting differences in case.\n */\n</scan>\nbool equalsIgnoreCase(std::string s1, std::string s2);\n\n<a name=\"Function:startsWith\"><scan class=comment>/*\n * Function: startsWith\n * Usage: if (startsWith(str, prefix)) ...\n * ---------------------------------------\n * Returns true if the string str starts with the specified prefix, which\n * may be either a string or a character.\n */\n</scan>\nbool startsWith(std::string str, std::string prefix);\nbool startsWith(std::string str, char prefix);\n\n<a name=\"Function:endsWith\"><scan class=comment>/*\n * Function: endsWith\n * Usage: if (endsWith(str, suffix)) ...\n * -------------------------------------\n * Returns true if the string str ends with the specified suffix, which may\n * be either a string or a character.\n */\n</scan>\nbool endsWith(std::string str, std::string suffix);\nbool endsWith(std::string str, char suffix);\n\n<a name=\"Function:trim\"><scan class=comment>/*\n * Function: trim\n * Usage: string trimmed = trim(str);\n * ----------------------------------\n * Returns a new string after removing any whitespace characters from the\n * beginning and end of the argument.\n */\n</scan>\nstd::string trim(std::string str);\n\n<scan class=comment>/* Private section */</scan>\n\n<scan class=comment>/**********************************************************************/</scan>\n<scan class=comment>/* Note: Everything below this point in the file is logically part    */</scan>\n<scan class=comment>/* of the implementation and should not be of interest to clients.    */</scan>\n<scan class=comment>/**********************************************************************/</scan>\n\n<a name=\"Friend function:writeQuotedString\"><scan class=comment>/*\n * Friend function: writeQuotedString\n * Usage: writeQuotedString(outfile, str, forceQuotes);\n * ----------------------------------------------------\n * Writes the string str to outfile surrounded by double quotes, converting\n * special characters to escape sequences, as necessary.  If the optional\n * parameter forceQuotes is explicitly set to false, quotes are included in\n * the output only if necessary.\n */\n</scan>\nvoid writeQuotedString(std::ostream &amp; os, const std::string &amp; str,\n                       bool forceQuotes = true);\n\n<a name=\"Friend function:readQuotedString\"><scan class=comment>/*\n * Friend function: readQuotedString\n * Usage: readQuotedString(infile, str);\n * -------------------------------------\n * Reads the next string from infile into the reference parameter str.  If\n * the first character (other than whitespace) is either a single or a\n * double quote, this function reads characters up to the matching quote,\n * processing standard escape sequences as it goes.  If not, readString\n * reads characters up to any of the characters in the string\n * STRING_DELIMITERS in the implementation file.\n */\n</scan>\nvoid readQuotedString(std::istream &amp; is, std::string &amp; str);\n\n<a name=\"Friend function:stringNeedsQuoting\"><scan class=comment>/*\n * Friend function: stringNeedsQuoting\n * Usage: if (stringNeedsQuoting(str)) ...\n * ---------------------------------------\n * Checks whether the string needs quoting in order to be read correctly.\n */\n</scan>\nbool stringNeedsQuoting(const std::string &amp; str);\n\n<a name=\"Friend function:writeGenericValue\"><scan class=comment>/*\n * Friend function: writeGenericValue\n * Usage: writeGenericValue(os, value, forceQuotes);\n * -------------------------------------------------\n * Writes a generic value to the output stream.  If that value is a string,\n * this function uses writeQuotedString to write the value.\n */\n</scan>\ntemplate &lt;typename ValueType&gt;\nvoid writeGenericValue(std::ostream &amp; os, const ValueType &amp; value,\n                       bool forceQuotes) {\n   os &lt;&lt; value;\n}\n\ntemplate &lt;&gt;\ninline void writeGenericValue(std::ostream &amp; os, const std::string &amp; value,\n                              bool forceQuotes) {\n   writeQuotedString(os, value, forceQuotes);\n}\n\n<a name=\"Friend function:readGenericValue\"><scan class=comment>/*\n * Friend function: readGenericValue\n * Usage: readGenericValue(is, value);\n * -----------------------------------\n * Reads a generic value from the input stream.  If that value is a string,\n * this function uses readQuotedString to read the value.\n */\n</scan>\ntemplate &lt;typename ValueType&gt;\nvoid readGenericValue(std::istream &amp; is, ValueType &amp; value) {\n   is &gt;&gt; value;\n}\n\ntemplate &lt;&gt;\ninline void readGenericValue(std::istream &amp; is, std::string &amp; value) {\n   readQuotedString(is, value);\n}\n\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/docs/_old/thread-h.html",
    "content": "<html>\n<head>\n<title>../include/thread.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: thread.h\n * --------------\n * This file exports a simple, platform-independent thread abstraction,\n * along with simple tools for concurrency control.\n */\n</scan>\n#ifndef _thread_h\n#define _thread_h\n\n#include &lt;string&gt;\n\n<scan class=comment>/* Forward definition */</scan>\n\nclass Lock;\n\n<a name=\"Class:Thread\"><scan class=comment>/*\n * Class: Thread\n * -------------\n * This class encapsulates a lightweight process running in the same\n * address space as the creator.  The class itself is opaque and is\n * manipulated by top-level functions as illustrated in the following\n * paradigm:\n *\n *    Thread child = fork(fn);\n *    ... code for the parent thread ...\n *    join(child);\n *\n * This code calls fn so that it runs in parallel with the parent code.\n */\n</scan>\nclass Thread {\n\npublic:\n\n<a name=\"Constructor:Thread\"><scan class=comment>/*\n * Constructor: Thread\n * Usage: Thread thread;\n * ---------------------\n * Creates an inactive thread variable that will typically be overwritten\n * by the result of a fork call.\n */\n</scan>\n   Thread();\n\n<a name=\"Destructor:~Thread\"><scan class=comment>/*\n * Destructor: ~Thread\n * -------------------\n * Frees any dynamic storage associated with the thread.\n */\n</scan>\n   virtual ~Thread();\n\n<a name=\"Method:toString\"><scan class=comment>/*\n * Method: toString\n * Usage: string str = thread.toString();\n * --------------------------------------\n * Converts the thread to a string.\n */\n</scan>\n   std::string toString();\n\n<scan class=comment>/* Private section */</scan>\n\n<scan class=comment>/**********************************************************************/</scan>\n<scan class=comment>/* Note: Everything below this point in this class is logically part  */</scan>\n<scan class=comment>/* of the implementation and should not be of interest to clients.    */</scan>\n<scan class=comment>/**********************************************************************/</scan>\n\n   long id;   <scan class=comment>/* id linking this thread to the platform-specific data */</scan>\n\n};\n\n<a name=\"Function:fork\"><scan class=comment>/*\n * Function: fork\n * Usage: Thread child = fork(fn);\n *        Thread child = fork(fn, data);\n * -------------------------------------\n * Creates a child thread that calls fn in an address space shared with the\n * current thread.  The second form makes it possible to pass an argument\n * to fn, which may be of any type.\n */\n</scan>\nThread fork(void (*fn)());\n\ntemplate &lt;typename ClientType&gt;\nThread fork(void (*fn)(ClientType &amp; data), ClientType &amp; data);\n\n<a name=\"Function:join\"><scan class=comment>/*\n * Function: join\n * Usage: join(thread);\n * --------------------\n * Waits for the specified thread to finish before proceeding.\n */\n</scan>\nvoid join(Thread &amp; thread);\n\n<a name=\"Function:yield\"><scan class=comment>/*\n * Function: yield\n * Usage: yield();\n * ---------------\n * Yields the processor to allow another thread to run.\n */\n</scan>\nvoid yield();\n\n<a name=\"Function:getCurrentThread\"><scan class=comment>/*\n * Function: getCurrentThread\n * Usage: Thread self = getCurrentThread();\n * ----------------------------------------\n * Returns the currently executing thread.\n */\n</scan>\nThread getCurrentThread();\n\n<a name=\"Class:Lock\"><scan class=comment>/*\n * Class: Lock\n * -----------\n * This class represents a simple lock used to control concurrency.  The\n * usual strategy for using locks is to use the synchronized macro\n * described later in this interface.\n */\n</scan>\nclass Lock {\n\npublic:\n\n<a name=\"Constructor:Lock\"><scan class=comment>/*\n * Constructor: Lock\n * Usage: Lock lock;\n * -----------------\n * Initializes a lock, which is initially in the unlocked state.\n */\n</scan>\n   Lock();\n\n<a name=\"Destructor:~Lock\"><scan class=comment>/*\n * Destructor: ~Lock\n * -----------------\n * Frees any heap storage associated with the lock.\n */\n</scan>\n   ~Lock();\n\n<a name=\"Method:wait\"><scan class=comment>/*\n * Method: wait\n * Usage: lock.wait();\n * -------------------\n * Waits for some other thread to call signal on this lock.  This call\n * requires that the lock be held by the calling thread.  The effect of the\n * wait method is to release the lock and then wait until the desired\n * signal operation occurs, at which point the lock is reacquired and\n * control returns from the wait call.  The wait method is typically used\n * inside a critical section containing a while loop to check for a\n * specific condition.  The standard paradigm for using the waitThread\n * function looks like this:\n *\n *    synchronized (lock) {\n *       while (conditional test) {\n *          lock.wait();\n *       }\n *       ... code to manipulate the locked resource ...\n *    }\n */\n</scan>\n   void wait();\n\n<a name=\"Method:signal\"><scan class=comment>/*\n * Method: signal\n * Usage: lock.signal();\n * ---------------------\n * Signals all threads waiting on the lock so that they wake up and recheck\n * the corresponding condition.\n */\n</scan>\n   void signal();\n\n<scan class=comment>/**********************************************************************/</scan>\n<scan class=comment>/* Note: Everything below this point in this class is logically part  */</scan>\n<scan class=comment>/* of the implementation and should not be of interest to clients.    */</scan>\n<scan class=comment>/**********************************************************************/</scan>\n\nprivate:\n\n   long id;     <scan class=comment>/* id linking this lock to the platform-specific data */</scan>\n\n   friend class Lock_State;\n\n};\n\n<a name=\"Statement:synchronized\"><scan class=comment>/*\n * Statement: synchronized\n * Usage: synchronized (lock) ...\n * ------------------------------\n * Defines a critical section protected by the specified lock.  The general\n * strategy for using this facility is shown in the following paradigmatic\n * pattern:\n *\n *    synchronized (lock) {\n *       ... statements in the critical section ...\n *    }\n */\n</scan>\nvoid lockForPlatform(int id);\nvoid unlockForPlatform(int id);\n\nclass Lock_State {\npublic:\n\n   Lock_State(Lock &amp; lock) {\n      lp = &amp;lock;\n      finished = false;\n   }\n\n   bool advance() {\n      if (finished) {\n         unlockForPlatform(lp-&gt;id);\n         return false;\n      } else {\n         finished = true;\n         lockForPlatform(lp-&gt;id);\n         return true;\n      }\n   }\n\nprivate:\n   Lock *lp;\n   bool finished;\n\n};\n\n#define synchronized(lock) for (Lock_State ls(lock) ; ls.advance(); )\n\nint forkForPlatform(void (*fn)(void *), void *dp);\n\nstruct StartWithVoid {\n   void (*fn)();\n};\n\ntemplate &lt;typename ClientType&gt;\nstruct StartWithClientData {\n   void (*fn)(ClientType &amp; data);\n   ClientType *dp;\n};\n\ntemplate &lt;typename ClientType&gt;\nstatic void forkWithClientData(void *arg) {\n   StartWithClientData&lt;ClientType&gt; *startup =\n      (StartWithClientData&lt;ClientType&gt; *) arg;\n   startup-&gt;fn(*startup-&gt;dp);\n}\n\ntemplate &lt;typename ClientType&gt;\nThread fork(void (*fn)(ClientType &amp; data), ClientType &amp; data) {\n   StartWithClientData&lt;ClientType&gt; startup = { fn, &amp;data };\n   Thread thread;\n   thread.id = forkForPlatform(forkWithClientData&lt;ClientType&gt;, &amp;startup);\n   return thread;\n}\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/docs/_old/tokenscanner-h.html",
    "content": "<html>\n<head>\n<title>../include/tokenscanner.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: tokenscanner.h\n * --------------------\n * This file exports a TokenScanner class that divides a string into\n * individual logical units called tokens.\n */\n</scan>\n#ifndef _tokenscanner_h\n#define _tokenscanner_h\n\n#include &lt;iostream&gt;\n#include &lt;string&gt;\n\n<a name=\"Type:TokenType\"><scan class=comment>/*\n * Type: TokenType\n * ---------------\n * This enumerated type defines the values of the getTokenType method.\n */\n</scan>\nenum TokenType { SEPARATOR, WORD, NUMBER, STRING, OPERATOR };\n\n<a name=\"Class:TokenScanner\"><scan class=comment>/*\n * Class: TokenScanner\n * -------------------\n * This class divides a string into individual tokens.  The typical use of\n * the TokenScanner class is illustrated by the following pattern, which\n * reads the tokens in the string variable input:\n *\n *    TokenScanner scanner(input);\n *    while (scanner.hasMoreTokens()) {\n *       string token = scanner.nextToken();\n *       ... process the token ...\n *    }\n *\n * The TokenScanner class exports several additional methods that give\n * clients more control over its behavior.  Those methods are described\n * individually in the documentation.\n */\n</scan>\nclass TokenScanner {\n\npublic:\n\n<a name=\"Constructor:TokenScanner\"><scan class=comment>/*\n * Constructor: TokenScanner\n * Usage: TokenScanner scanner;\n *        TokenScanner scanner(str);\n *        TokenScanner scanner(infile);\n * ------------------------------------\n * Initializes a scanner object.  The initial token stream comes from the\n * specified string or input stream, if supplied.  The default constructor\n * creates a scanner with an empty token stream.\n */\n</scan>\n   TokenScanner();\n   TokenScanner(std::string str);\n   TokenScanner(std::istream &amp; infile);\n\n<a name=\"Destructor:~TokenScanner\"><scan class=comment>/*\n * Destructor: ~TokenScanner\n * -------------------------\n * Deallocates the storage associated with this scanner.\n */\n</scan>\n   virtual ~TokenScanner();\n\n<a name=\"Method:setInput\"><scan class=comment>/*\n * Method: setInput\n * Usage: scanner.setInput(str);\n *        scanner.setInput(infile);\n * --------------------------------\n * Sets the token stream for this scanner to the specified string or input\n * stream.  Any previous token stream is discarded.\n */\n</scan>\n   void setInput(std::string str);\n   void setInput(std::istream &amp; infile);\n\n<a name=\"Method:hasMoreTokens\"><scan class=comment>/*\n * Method: hasMoreTokens\n * Usage: if (scanner.hasMoreTokens()) ...\n * ---------------------------------------\n * Returns true if there are additional tokens for this scanner to read.\n */\n</scan>\n   bool hasMoreTokens();\n\n<a name=\"Method:nextToken\"><scan class=comment>/*\n * Method: nextToken\n * Usage: token = scanner.nextToken();\n * -----------------------------------\n * Returns the next token from this scanner.  If nextToken is called when\n * no tokens are available, it returns the empty string.\n */\n</scan>\n   std::string nextToken();\n\n<a name=\"Method:saveToken\"><scan class=comment>/*\n * Method: saveToken\n * Usage: scanner.saveToken(token);\n * --------------------------------\n * Pushes the specified token back into this scanner's input stream.  On\n * the next call to nextToken, the scanner will return the saved token\n * without reading any additional characters from the token stream.\n */\n</scan>\n   void saveToken(std::string token);\n\n<a name=\"Method:getPosition\"><scan class=comment>/*\n * Method: getPosition\n * Usage: int pos = scanner.getPosition();\n * ---------------------------------------\n * Returns the current position of the scanner in the input stream.  If\n * saveToken has been called, this position corresponds to the beginning of\n * the saved token.  If saveToken is called more than once, getPosition\n * returns -1.\n */\n</scan>\n   int getPosition() const;\n\n<a name=\"Method:ignoreWhitespace\"><scan class=comment>/*\n * Method: ignoreWhitespace\n * Usage: scanner.ignoreWhitespace();\n * ----------------------------------\n * Tells the scanner to ignore whitespace characters.  By default, the\n * nextToken method treats whitespace characters (typically spaces and\n * tabs) just like any other punctuation mark and returns them as\n * single-character tokens.  Calling\n *\n *    scanner.ignoreWhitespace();\n *\n * changes this behavior so that the scanner ignore whitespace characters.\n */\n</scan>\n   void ignoreWhitespace();\n\n<a name=\"Method:ignoreComments\"><scan class=comment>/*\n * Method: ignoreComments\n * Usage: scanner.ignoreComments();\n * --------------------------------\n * Tells the scanner to ignore comments.  The scanner package recognizes\n * both the slash-star and slash-slash comment format from the C-based\n * family of languages.  Calling\n *\n *    scanner.ignoreComments();\n *\n * sets the parser to ignore comments.\n */\n</scan>\n   void ignoreComments();\n\n<a name=\"Method:scanNumbers\"><scan class=comment>/*\n * Method: scanNumbers\n * Usage: scanner.scanNumbers();\n * -----------------------------\n * Controls how the scanner treats tokens that begin with a digit.  By\n * default, the nextToken method treats numbers and letters identically and\n * therefore does not provide any special processing for numbers.  Calling\n *\n *    scanner.scanNumbers();\n *\n * changes this behavior so that nextToken returns the longest substring\n * that can be interpreted as a real number.\n */\n</scan>\n   void scanNumbers();\n\n<a name=\"Method:scanStrings\"><scan class=comment>/*\n * Method: scanStrings\n * Usage: scanner.scanStrings();\n * -----------------------------\n * Controls how the scanner treats tokens enclosed in quotation marks.  By\n * default, quotation marks (either single or double) are treated just like\n * any other punctuation character.  Calling\n *\n *    scanner.scanStrings();\n *\n * changes this assumption so that nextToken returns a single token\n * consisting of all characters through the matching quotation mark.  The\n * quotation marks are returned as part of the scanned token so that\n * clients can differentiate strings from other token types.\n */\n</scan>\n   void scanStrings();\n\n<a name=\"Method:addWordCharacters\"><scan class=comment>/*\n * Method: addWordCharacters\n * Usage: scanner.addWordCharacters(str);\n * --------------------------------------\n * Adds the characters in str to the set of characters legal in a WORD\n * token.  For example, calling addWordCharacters(\"_\") adds the underscore\n * to the set of characters that are accepted as part of a word.\n */\n</scan>\n   void addWordCharacters(std::string str);\n\n<a name=\"Method:isWordCharacter\"><scan class=comment>/*\n * Method: isWordCharacter\n * Usage: if (scanner.isWordCharacter(ch)) ...\n * -------------------------------------------\n * Returns true if the character is valid in a word.\n */\n</scan>\n   bool isWordCharacter(char ch) const;\n\n<a name=\"Method:addOperator\"><scan class=comment>/*\n * Method: addOperator\n * Usage: scanner.addOperator(op);\n * -------------------------------\n * Defines a new multicharacter operator.  Whenever you call nextToken when\n * the input stream contains operator characters, the scanner returns the\n * longest possible operator string that can be read at that point.\n */\n</scan>\n   void addOperator(std::string op);\n\n<a name=\"Method:verifyToken\"><scan class=comment>/*\n * Method: verifyToken\n * Usage: scanner.verifyToken(expected);\n * -------------------------------------\n * Reads the next token and makes sure it matches the string expected.  If\n * it does not, verifyToken throws an error.\n */\n</scan>\n   void verifyToken(std::string expected);\n\n<a name=\"Method:getTokenType\"><scan class=comment>/*\n * Method: getTokenType\n * Usage: TokenType type = scanner.getTokenType(token);\n * ----------------------------------------------------\n * Returns the type of this token.  This type will match one of the\n * following enumerated type constants: EOF, SEPARATOR, WORD, NUMBER,\n * STRING, or OPERATOR.\n */\n</scan>\nTokenType getTokenType(std::string token) const;\n\n<a name=\"Method:getChar\"><scan class=comment>/*\n * Method: getChar\n * Usage: int ch = scanner.getChar();\n * ----------------------------------\n * Reads the next character from the scanner input stream.\n */\n</scan>\nint getChar();\n\n<a name=\"Method:ungetChar\"><scan class=comment>/*\n * Method: ungetChar\n * Usage: scanner.ungetChar(ch);\n * -----------------------------\n * Pushes the character ch back into the scanner stream.  The character\n * must match the one that was read.\n */\n</scan>\nvoid ungetChar(int ch);\n\n<a name=\"Method:getStringValue\"><scan class=comment>/*\n * Method: getStringValue\n * Usage: string str = scanner.getStringValue(token);\n * --------------------------------------------------\n * Returns the string value of a token.  This value is formed by removing\n * any surrounding quotation marks and replacing escape sequences by the\n * appropriate characters.\n */\n</scan>\n   std::string getStringValue(std::string token) const;\n\n<scan class=comment>/* Private section */</scan>\n\n<scan class=comment>/**********************************************************************/</scan>\n<scan class=comment>/* Note: Everything below this point in the file is logically part    */</scan>\n<scan class=comment>/* of the implementation and should not be of interest to clients.    */</scan>\n<scan class=comment>/**********************************************************************/</scan>\n\nprivate:\n\n<a name=\"Private type:StringCell\"><scan class=comment>/*\n * Private type: StringCell\n * ------------------------\n * This type is used to construct linked lists of cells, which are used to\n * represent both the stack of saved tokens and the set of defined\n * operators.  These types cannot use the Stack and Lexicon classes\n * directly because tokenscanner.h is an extremely low-level interface, and\n * doing so would create circular dependencies in the .h files.\n */\n</scan>\n   struct StringCell {\n      std::string str;\n      StringCell *link;\n   };\n\n   enum NumberScannerState {\n      INITIAL_STATE,\n      BEFORE_DECIMAL_POINT,\n      AFTER_DECIMAL_POINT,\n      STARTING_EXPONENT,\n      FOUND_EXPONENT_SIGN,\n      SCANNING_EXPONENT,\n      FINAL_STATE\n   };\n\n   std::string buffer;              <scan class=comment>/* The original argument string */</scan>\n   std::istream *isp;               <scan class=comment>/* The input stream for tokens  */</scan>\n   bool stringInputFlag;            <scan class=comment>/* Flag indicating string input */</scan>\n   bool ignoreWhitespaceFlag;       <scan class=comment>/* Scanner ignores whitespace   */</scan>\n   bool ignoreCommentsFlag;         <scan class=comment>/* Scanner ignores comments     */</scan>\n   bool scanNumbersFlag;            <scan class=comment>/* Scanner parses numbers       */</scan>\n   bool scanStringsFlag;            <scan class=comment>/* Scanner parses strings       */</scan>\n   std::string wordChars;           <scan class=comment>/* Additional word characters   */</scan>\n   StringCell *savedTokens;         <scan class=comment>/* Stack of saved tokens        */</scan>\n   StringCell *operators;           <scan class=comment>/* List of multichar operators  */</scan>\n\n<scan class=comment>/* Private method prototypes */</scan>\n\n   void initScanner();\n   void skipSpaces();\n   std::string scanWord();\n   std::string scanNumber();\n   std::string scanString();\n   bool isOperator(std::string op);\n   bool isOperatorPrefix(std::string op);\n\n};\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/docs/_old/vector-h.html",
    "content": "<html>\n<head>\n<title>../include/vector.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<pre class=code>\n<scan class=comment>/*\n * File: vector.h\n * --------------\n * This file exports the Vector class, which provides an efficient, safe,\n * convenient replacement for the array type in C++.\n */\n</scan>\n#ifndef _vector_h\n#define _vector_h\n\n#include &lt;iterator&gt;\n#include &lt;iostream&gt;\n#include &lt;sstream&gt;\n#include &lt;string&gt;\n#include \"strlib.h\"\n\n<a name=\"Class:Vector<ValueType>\"><scan class=comment>/*\n * Class: Vector&lt;ValueType&gt;\n * ------------------------\n * This class stores an ordered list of values similar to an array.  It\n * supports traditional array selection using square brackets, but also\n * supports inserting and deleting elements.  It is similar in function to\n * the STL vector type, but is simpler both to use and to implement.\n */\n</scan>\ntemplate &lt;typename ValueType&gt;\nclass Vector {\n\npublic:\n\n<a name=\"Constructor:Vector\"><scan class=comment>/*\n * Constructor: Vector\n * Usage: Vector&lt;ValueType&gt; vec;\n *        Vector&lt;ValueType&gt; vec(n, value);\n * ---------------------------------------\n * Initializes a new vector.  The default constructor creates an empty\n * vector.  The second form creates an array with n elements, each of which\n * is initialized to value; if value is missing, the elements are\n * initialized to the default value for the type.\n */\n</scan>\n   Vector();\n   explicit Vector(int n, ValueType value = ValueType());\n\n<a name=\"Destructor:~Vector\"><scan class=comment>/*\n * Destructor: ~Vector\n * -------------------\n * Frees any heap storage allocated by this vector.\n */\n</scan>\n   virtual ~Vector();\n\n<a name=\"Method:size\"><scan class=comment>/*\n * Method: size\n * Usage: int nElems = vec.size();\n * -------------------------------\n * Returns the number of elements in this vector.\n */\n</scan>\n   int size() const;\n\n<a name=\"Method:isEmpty\"><scan class=comment>/*\n * Method: isEmpty\n * Usage: if (vec.isEmpty()) ...\n * -----------------------------\n * Returns true if this vector contains no elements.\n */\n</scan>\n   bool isEmpty() const;\n\n<a name=\"Method:clear\"><scan class=comment>/*\n * Method: clear\n * Usage: vec.clear();\n * -------------------\n * Removes all elements from this vector.\n */\n</scan>\n   void clear();\n\n<a name=\"Method:get\"><scan class=comment>/*\n * Method: get\n * Usage: ValueType val = vec.get(index);\n * --------------------------------------\n * Returns the element at the specified index in this vector.  This method\n * signals an error if the index is not in the array range.\n */\n</scan>\n   const ValueType &amp; get(int index) const;\n\n<a name=\"Method:set\"><scan class=comment>/*\n * Method: set\n * Usage: vec.set(index, value);\n * -----------------------------\n * Replaces the element at the specified index in this vector with a new\n * value.  The previous value at that index is overwritten.  This method\n * signals an error if the index is not in the array range.\n */\n</scan>\n   void set(int index, const ValueType &amp; value);\n\n<a name=\"Method:insert\"><scan class=comment>/*\n * Method: insert\n * Usage: vec.insert(0, value);\n * ----------------------------\n * Inserts the element into this vector before the specified index.  All\n * subsequent elements are shifted one position to the right.  This method\n * signals an error if the index is outside the range from 0 up to and\n * including the length of the vector.\n */\n</scan>\n   void insert(int index, ValueType value);\n\n<a name=\"Method:remove\"><scan class=comment>/*\n * Method: remove\n * Usage: vec.remove(index);\n * -------------------------\n * Removes the element at the specified index from this vector.  All\n * subsequent elements are shifted one position to the left.  This method\n * signals an error if the index is outside the array range.\n */\n</scan>\n   void remove(int index);\n\n<a name=\"Method:add\"><scan class=comment>/*\n * Method: add\n * Usage: vec.add(value);\n * ----------------------\n * Adds a new value to the end of this vector.  To ensure compatibility\n * with the vector class in the Standard Template Library, this method is\n * also called push_back.\n */\n</scan>\n   void add(ValueType value);\n   void push_back(ValueType value);\n\n<a name=\"Operator:[]\"><scan class=comment>/*\n * Operator: []\n * Usage: vec[index]\n * -----------------\n * Overloads [] to select elements from this vector.  This extension\n * enables the use of traditional array notation to get or set individual\n * elements.  This method signals an error if the index is outside the\n * array range.  The file supports two versions of this operator, one for\n * const vectors and one for mutable vectors.\n */\n</scan>\n   ValueType &amp; operator[](int index);\n   const ValueType &amp; operator[](int index) const;\n\n<a name=\"Operator:+\"><scan class=comment>/*\n * Operator: +\n * Usage: v1 + v2\n * --------------\n * Concatenates two vectors.\n */\n</scan>\n   Vector operator+(const Vector &amp; v2) const;\n\n<a name=\"Operator:+=\"><scan class=comment>/*\n * Operator: +=\n * Usage: v1 += v2;\n *        v1 += value;\n * -------------------\n * Adds all of the elements from v2 (or the single specified value) to v1. \n * As a convenience, the Vector package also overloads the comma operator\n * so that it is possible to initialize a vector like this:\n *\n *    Vector&lt;int&gt; digits;\n *    digits += 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;\n */\n</scan>\n   Vector &amp; operator+=(const Vector &amp; v2);\n   Vector &amp; operator+=(const ValueType &amp; value);\n\n<a name=\"Method:toString\"><scan class=comment>/*\n * Method: toString\n * Usage: string str = vec.toString();\n * -----------------------------------\n * Converts the vector to a printable string representation.\n */\n</scan>\n   std::string toString();\n\n<a name=\"Method:mapAll\"><scan class=comment>/*\n * Method: mapAll\n * Usage: vec.mapAll(fn);\n * ----------------------\n * Calls the specified function on each element of the vector in ascending\n * index order.\n */\n</scan>\n   void mapAll(void (*fn)(ValueType)) const;\n   void mapAll(void (*fn)(const ValueType &amp;)) const;\n\n   template &lt;typename FunctorType&gt;\n   void mapAll(FunctorType fn) const;\n\n<scan class=comment>/*\n * Additional Vector operations\n * ----------------------------\n * In addition to the methods listed in this interface, the Vector class\n * supports the following operations:\n *\n *   - Stream I/O using the &lt;&lt; and &gt;&gt; operators\n *   - Deep copying for the copy constructor and assignment operator\n *   - Iteration using the range-based for statement or STL iterators\n *\n * The iteration forms process the Vector in index order.\n */\n</scan>\n<scan class=comment>/* Private section */</scan>\n\n<scan class=comment>/**********************************************************************/</scan>\n<scan class=comment>/* Note: Everything below this point in the file is logically part    */</scan>\n<scan class=comment>/* of the implementation and should not be of interest to clients.    */</scan>\n<scan class=comment>/**********************************************************************/</scan>\n\nprivate:\n\n<a name=\"Implementation notes:Vector data structure\"><scan class=comment>/*\n * Implementation notes: Vector data structure\n * -------------------------------------------\n * The elements of the Vector are stored in a dynamic array of the\n * specified element type.  If the space in the array is ever exhausted,\n * the implementation doubles the array capacity.\n */\n</scan>\n<scan class=comment>/* Instance variables */</scan>\n\n   ValueType *elements;        <scan class=comment>/* A dynamic array of the elements   */</scan>\n   int capacity;               <scan class=comment>/* The allocated size of the array   */</scan>\n   int count;                  <scan class=comment>/* The number of elements in use     */</scan>\n\n<scan class=comment>/* Private methods */</scan>\n\n   void expandCapacity();\n   void deepCopy(const Vector &amp; src);\n\n<scan class=comment>/*\n * Hidden features\n * ---------------\n * The remainder of this file consists of the code required to support deep\n * copying and iteration.  Including these methods in the public interface\n * would make that interface more difficult to understand for the average\n * client.\n */\n</scan>\npublic:\n\n<scan class=comment>/*\n * Deep copying support\n * --------------------\n * This copy constructor and operator= are defined to make a deep copy,\n * making it possible to pass or return vectors by value and assign from\n * one vector to another.\n */\n</scan>\n   Vector(const Vector &amp; src);\n   Vector &amp; operator=(const Vector &amp; src);\n\n<a name=\"Operator:,\"><scan class=comment>/*\n * Operator: ,\n * -----------\n * Adds an element to the vector passed as the left-hand operatand.  This\n * form makes it easier to initialize vectors in old versions of C++.\n */\n</scan>\n   Vector &amp; operator,(const ValueType &amp; value);\n\n<scan class=comment>/*\n * Iterator support\n * ----------------\n * The classes in the StanfordCPPLib collection implement input iterators\n * so that they work symmetrically with respect to the corresponding STL\n * classes.\n */\n</scan>\n   class iterator :\n      public std::iterator&lt;std::random_access_iterator_tag, ValueType&gt; {\n\n   private:\n      const Vector *vp;\n      int index;\n\n   public:\n\n      iterator() {\n         this-&gt;vp = NULL;\n      }\n\n      iterator(const iterator &amp; it) {\n         this-&gt;vp = it.vp;\n         this-&gt;index = it.index;\n      }\n\n      iterator(const Vector *vp, int index) {\n         this-&gt;vp = vp;\n         this-&gt;index = index;\n      }\n\n      iterator &amp; operator++() {\n         index++;\n         return *this;\n      }\n\n      iterator operator++(int) {\n         iterator copy(*this);\n         operator++();\n         return copy;\n      }\n\n      iterator &amp; operator--() {\n         index--;\n         return *this;\n      }\n\n      iterator operator--(int) {\n         iterator copy(*this);\n         operator--();\n         return copy;\n      }\n\n      bool operator==(const iterator &amp; rhs) {\n         return vp == rhs.vp &amp;&amp; index == rhs.index;\n      }\n\n      bool operator!=(const iterator &amp; rhs) {\n         return !(*this == rhs);\n      }\n\n      bool operator&lt;(const iterator &amp; rhs) {\n         extern void error(std::string msg);\n         if (vp != rhs.vp) error(\"Iterators are in different vectors\");\n         return index &lt; rhs.index;\n      }\n\n      bool operator&lt;=(const iterator &amp; rhs) {\n         extern void error(std::string msg);\n         if (vp != rhs.vp) error(\"Iterators are in different vectors\");\n         return index &lt;= rhs.index;\n      }\n\n      bool operator&gt;(const iterator &amp; rhs) {\n         extern void error(std::string msg);\n         if (vp != rhs.vp) error(\"Iterators are in different vectors\");\n         return index &gt; rhs.index;\n      }\n\n      bool operator&gt;=(const iterator &amp; rhs) {\n         extern void error(std::string msg);\n         if (vp != rhs.vp) error(\"Iterators are in different vectors\");\n         return index &gt;= rhs.index;\n      }\n\n      iterator operator+(const int &amp; rhs) {\n         return iterator(vp, index + rhs);\n      }\n\n      iterator operator+=(const int &amp; rhs) {\n         index += rhs;\n         return *this;\n      }\n\n      iterator operator-(const int &amp; rhs) {\n         return iterator(vp, index - rhs);\n      }\n\n      iterator operator-=(const int &amp; rhs) {\n         index -= rhs;\n         return *this;\n      }\n\n      int operator-(const iterator &amp; rhs) {\n         extern void error(std::string msg);\n         if (vp != rhs.vp) error(\"Iterators are in different vectors\");\n         return index - rhs.index;\n      }\n\n      ValueType &amp; operator*() {\n         return vp-&gt;elements[index];\n      }\n\n      ValueType *operator-&gt;() {\n         return &amp;vp-&gt;elements[index];\n      }\n\n      ValueType &amp; operator[](int k) {\n         return vp-&gt;elements[index + k];\n      }\n\n   };\n\n   iterator begin() const {\n      return iterator(this, 0);\n   }\n\n   iterator end() const {\n      return iterator(this, count);\n   }\n\n};\n\n<scan class=comment>/* Implementation section */</scan>\n\nextern void error(std::string msg);\n\n<a name=\"Implementation notes:Vector constructor and destructor\"><scan class=comment>/*\n * Implementation notes: Vector constructor and destructor\n * -------------------------------------------------------\n * The constructor allocates storage for the dynamic array and initializes\n * the other fields of the object.  The destructor frees the memory used\n * for the array.\n */\n</scan>\ntemplate &lt;typename ValueType&gt;\nVector&lt;ValueType&gt;::Vector() {\n   count = capacity = 0;\n   elements = NULL;\n}\n\ntemplate &lt;typename ValueType&gt;\nVector&lt;ValueType&gt;::Vector(int n, ValueType value) {\n   count = capacity = n;\n   elements = (n == 0) ? NULL : new ValueType[n];\n   for (int i = 0; i &lt; n; i++) {\n      elements[i] = value;\n   }\n}\n\ntemplate &lt;typename ValueType&gt;\nVector&lt;ValueType&gt;::~Vector() {\n   if (elements != NULL) delete[] elements;\n}\n\n<a name=\"Implementation notes:Vector methods\"><scan class=comment>/*\n * Implementation notes: Vector methods\n * ------------------------------------\n * The basic Vector methods are straightforward and should require no\n * detailed documentation.\n */\n</scan>\ntemplate &lt;typename ValueType&gt;\nint Vector&lt;ValueType&gt;::size() const {\n   return count;\n}\n\ntemplate &lt;typename ValueType&gt;\nbool Vector&lt;ValueType&gt;::isEmpty() const {\n   return count == 0;\n}\n\ntemplate &lt;typename ValueType&gt;\nvoid Vector&lt;ValueType&gt;::clear() {\n   if (elements != NULL) delete[] elements;\n   count = capacity = 0;\n   elements = NULL;\n}\n\ntemplate &lt;typename ValueType&gt;\nconst ValueType &amp; Vector&lt;ValueType&gt;::get(int index) const {\n   if (index &lt; 0 || index &gt;= count) error(\"get: index out of range\");\n   return elements[index];\n}\n\ntemplate &lt;typename ValueType&gt;\nvoid Vector&lt;ValueType&gt;::set(int index, const ValueType &amp; value) {\n   if (index &lt; 0 || index &gt;= count) error(\"set: index out of range\");\n   elements[index] = value;\n}\n\n<a name=\"Implementation notes:insert, remove, add\"><scan class=comment>/*\n * Implementation notes: insert, remove, add\n * -----------------------------------------\n * These methods must shift the existing elements in the array to make room\n * for a new element or to close up the space left by a deleted one.\n */\n</scan>\ntemplate &lt;typename ValueType&gt;\nvoid Vector&lt;ValueType&gt;::insert(int index, ValueType value) {\n   if (count == capacity) expandCapacity();\n   if (index &lt; 0 || index &gt; count) {\n      error(\"insert: index out of range\");\n   }\n   for (int i = count; i &gt; index; i--) {\n      elements[i] = elements[i - 1];\n   }\n   elements[index] = value;\n   count++;\n}\n\ntemplate &lt;typename ValueType&gt;\nvoid Vector&lt;ValueType&gt;::remove(int index) {\n   if (index &lt; 0 || index &gt;= count) error(\"remove: index out of range\");\n   for (int i = index; i &lt; count - 1; i++) {\n      elements[i] = elements[i + 1];\n   }\n   count--;\n}\n\ntemplate &lt;typename ValueType&gt;\nvoid Vector&lt;ValueType&gt;::add(ValueType value) {\n   insert(count, value);\n}\n\ntemplate &lt;typename ValueType&gt;\nvoid Vector&lt;ValueType&gt;::push_back(ValueType value) {\n   insert(count, value);\n}\n\n<a name=\"Implementation notes:Vector selection\"><scan class=comment>/*\n * Implementation notes: Vector selection\n * --------------------------------------\n * The following code implements traditional array selection using square\n * brackets for the index.\n */\n</scan>\ntemplate &lt;typename ValueType&gt;\nValueType &amp; Vector&lt;ValueType&gt;::operator[](int index) {\n   if (index &lt; 0 || index &gt;= count) error(\"Selection index out of range\");\n   return elements[index];\n}\ntemplate &lt;typename ValueType&gt;\nconst ValueType &amp; Vector&lt;ValueType&gt;::operator[](int index) const {\n   if (index &lt; 0 || index &gt;= count) error(\"Selection index out of range\");\n   return elements[index];\n}\n\ntemplate &lt;typename ValueType&gt;\nVector&lt;ValueType&gt; Vector&lt;ValueType&gt;::operator+(const Vector &amp; v2) const {\n   Vector&lt;ValueType&gt; vec = *this;\n   foreach (ValueType value in v2) {\n      vec.add(value);\n   }\n   return vec;\n}\n\ntemplate &lt;typename ValueType&gt;\nVector&lt;ValueType&gt; &amp; Vector&lt;ValueType&gt;::operator+=(const Vector &amp; v2) {\n   foreach (ValueType value in v2) {\n      *this += value;\n   }\n   return *this;\n}\n\ntemplate &lt;typename ValueType&gt;\nVector&lt;ValueType&gt; &amp; Vector&lt;ValueType&gt;::operator+=(const ValueType &amp; value) {\n   this-&gt;add(value);\n   return *this;\n}\n\ntemplate &lt;typename ValueType&gt;\nstd::string Vector&lt;ValueType&gt;::toString() {\n   ostringstream os;\n   os &lt;&lt; *this;\n   return os.str();\n}\n\n<a name=\"Implementation notes:copy constructor and assignment operator\"><scan class=comment>/*\n * Implementation notes: copy constructor and assignment operator\n * --------------------------------------------------------------\n * The constructor and assignment operators follow a standard paradigm, as\n * described in the associated textbook.\n */\n</scan>\ntemplate &lt;typename ValueType&gt;\nVector&lt;ValueType&gt;::Vector(const Vector &amp; src) {\n   deepCopy(src);\n}\n\ntemplate &lt;typename ValueType&gt;\nVector&lt;ValueType&gt; &amp; Vector&lt;ValueType&gt;::operator=(const Vector &amp; src) {\n   if (this != &amp;src) {\n      if (elements != NULL) delete[] elements;\n      deepCopy(src);\n   }\n   return *this;\n}\n\ntemplate &lt;typename ValueType&gt;\nvoid Vector&lt;ValueType&gt;::deepCopy(const Vector &amp; src) {\n   count = capacity = src.count;\n   elements = (capacity == 0) ? NULL : new ValueType[capacity];\n   for (int i = 0; i &lt; count; i++) {\n      elements[i] = src.elements[i];\n   }\n}\n\n<a name=\"Implementation notes:The , operator\"><scan class=comment>/*\n * Implementation notes: The , operator\n * ------------------------------------\n * The comma operator works adding the right operand to the vector and then\n * returning the vector by reference so that it is set for the next value\n * in the chain.\n */\n</scan>\ntemplate &lt;typename ValueType&gt;\nVector&lt;ValueType&gt; &amp; Vector&lt;ValueType&gt;::operator,(const ValueType &amp; value) {\n   this-&gt;add(value);\n   return *this;\n}\n\n<a name=\"Implementation notes:mapAll\"><scan class=comment>/*\n * Implementation notes: mapAll\n * ----------------------------\n * The various versions of the mapAll function apply the function or\n * function object to each element in ascending index order.\n */\n</scan>\ntemplate &lt;typename ValueType&gt;\nvoid Vector&lt;ValueType&gt;::mapAll(void (*fn)(ValueType)) const {\n   for (int i = 0; i &lt; count; i++) {\n      fn(elements[i]);\n   }\n}\n\ntemplate &lt;typename ValueType&gt;\nvoid Vector&lt;ValueType&gt;::mapAll(void (*fn)(const ValueType &amp;)) const {\n   for (int i = 0; i &lt; count; i++) {\n      fn(elements[i]);\n   }\n}\n\ntemplate &lt;typename ValueType&gt;\ntemplate &lt;typename FunctorType&gt;\nvoid Vector&lt;ValueType&gt;::mapAll(FunctorType fn) const {\n   for (int i = 0; i &lt; count; i++) {\n      fn(elements[i]);\n   }\n}\n\n<a name=\"Implementation notes:expandCapacity\"><scan class=comment>/*\n * Implementation notes: expandCapacity\n * ------------------------------------\n * This function doubles the array capacity, copies the old elements into\n * the new array, and then frees the old one.\n */\n</scan>\ntemplate &lt;typename ValueType&gt;\nvoid Vector&lt;ValueType&gt;::expandCapacity() {\n   capacity = max(1, capacity * 2);\n   ValueType *array = new ValueType[capacity];\n   for (int i = 0; i &lt; count; i++) {\n      array[i] = elements[i];\n   }\n   if (elements != NULL) delete[] elements;\n   elements = array;\n}\n\n<a name=\"Implementation notes:<< and >>\"><scan class=comment>/*\n * Implementation notes: &lt;&lt; and &gt;&gt;\n * -------------------------------\n * The insertion and extraction operators use the template facilities in\n * strlib.h to read and write generic values in a way that treats strings\n * specially.\n */\n</scan>\ntemplate &lt;typename ValueType&gt;\nstd::ostream &amp; operator&lt;&lt;(std::ostream &amp; os, const Vector&lt;ValueType&gt; &amp; vec) {\n   os &lt;&lt; \"{\";\n   int len = vec.size();\n   for (int i = 0; i &lt; len; i++) {\n      if (i &gt; 0) os &lt;&lt; \", \";\n      writeGenericValue(os, vec[i], true);\n   }\n   return os &lt;&lt; \"}\";\n}\n\ntemplate &lt;typename ValueType&gt;\nstd::istream &amp; operator&gt;&gt;(std::istream &amp; is, Vector&lt;ValueType&gt; &amp; vec) {\n   char ch;\n   is &gt;&gt; ch;\n   if (ch != '{') error(\"operator &gt;&gt;: Missing {\");\n   vec.clear();\n   is &gt;&gt; ch;\n   if (ch != '}') {\n      is.unget();\n      while (true) {\n         ValueType value;\n         readGenericValue(is, value);\n         vec += value;\n         is &gt;&gt; ch;\n         if (ch == '}') break;\n         if (ch != ',') {\n            error(std::string(\"operator &gt;&gt;: Unexpected character \") + ch);\n         }\n      }\n   }\n   return is;\n}\n\n#endif\n</pre>\n</body>\n</html>\n"
  },
  {
    "path": "Archived/sample-project/res/readme.txt",
    "content": "This is a random resource file.\r\nWhen student code gets executed, you can open \nit by loading \"readme.txt\" in code.\r\nThis will work with subdirectories as \nwell:\r\n\n\nIf you create a subdirectory called \"images\", and place picture-of-kitten.jpg\n in it,\r\nthen students can load that file by loading\n \"images/picture-of-kitten.jpg\".\n\r\nThis will work for arbitrarily named files, directories, and subdirectories.\n"
  },
  {
    "path": "Archived/sample-project/sample-project.pro",
    "content": "#####################################################################\n## Stanford CS 106 B/X Qt Creator project file                     ##\n#####################################################################\n#\n# This file specifies the information about your project to Qt Creator.\n# You should not need to modify this file to complete your assignment.\n#\n# @author Marty Stepp (past authors/support by Keith Schwarz, Reid Watson, etc.)\n# @version 2019/04/23\n# - revert copydata code for copying resource files\nDEFINES += SPL_PROJECT_VERSION=20190423   # kludgy YYYYMMDD constant used by lib to know its version\n\n# global Qt/project settings\nTEMPLATE = app\nPROJECT_FILTER =\nQT       += core gui multimedia network\ngreaterThan(QT_MAJOR_VERSION, 4): QT += widgets\n\n###############################################################################\n# BEGIN SECTION FOR SPECIFYING SOURCE/LIBRARY/RESOURCE FILES OF PROJECT       #\n###############################################################################\n\n# remove spaces from target executable for better Windows compatibility\nTARGET = $$replace(TARGET, \" \", _)\n\n# checks to make sure we haven't accidentally opened the project\n# from within a ZIP archive (common mistake on Windows)\n\nwin32 {\n    contains(PWD, .*\\.zip.*) | contains(PWD, .*\\.ZIP.*) {\n        message(\"\")\n        message(*******************************************************************)\n        message(*** ERROR: You are trying to open this project from within a .ZIP archive:)\n        message(*** $$PWD)\n        message(*** You need to extract the files out of the ZIP file first.)\n        message(*** Open the ZIP in your file explorer and press the Extract button.)\n        message(*******************************************************************)\n        message(\"\")\n        error(Exiting.)\n    }\n}\n\n# check for intl chars in path (common issue for intl students)\nPWD_WITHOUT_BAD_CHARS = $$PWD\nPWD_WITHOUT_BAD_CHARS ~= s|[^a-zA-Z0-9_ ().\\/:;+-]+|???\nBAD_CHARS = $$PWD\nBAD_CHARS ~= s|[a-zA-Z0-9_ ().\\/:;-]+|\n!isEmpty(BAD_CHARS) {\n    message(\"\")\n    message(*******************************************************************)\n    message(*** ERROR: Your project directory contains invalid characters:)\n    message(*** $$PWD)\n    message(***)\n    message(*** The characters that are invalid are: $$BAD_CHARS)\n    message(***)\n    message(*** You need to store your project in a directory without any punctuation)\n    message(*** marks such as commas, or international symbols such as)\n    message(*** Chinese or Korean symbols.)\n    message(*** If you keep seeing this error try creating a simple directory)\n    message(*** name such as \"C:\\Programs\\Homework1.\")\n    message(*******************************************************************)\n    message(\"\")\n    error(Exiting.)\n}\n\n# checks to ensure that the Stanford C++ library is present in this project\n!exists($$PWD/lib/StanfordCPPLib/private/version.h) {\n    message(\"\")\n    message(*******************************************************************)\n    message(*** ERROR: Stanford C++ library not found!)\n    message(*** This project cannot run without the folder lib/StanfordCPPLib/.)\n    message(*** Place that folder into your project and try again.)\n    message(*******************************************************************)\n    message(\"\")\n    error(Exiting.)\n}\n\nwin64 {\n    !exists($$PWD/lib/addr2line64.exe) {\n        message(\"\")\n        message(*******************************************************************)\n        message(*** ERROR: Stanford C++ library support file 'addr2line64.exe' not found!)\n        message(*** Our library needs this file present to produce stack traces.)\n        message(*** Place that file into your lib/ folder and try again.)\n        message(*******************************************************************)\n        message(\"\")\n        warning(Exiting.)\n    }\n}\n\nwin32 {\n    !exists($$PWD/lib/addr2line.exe) {\n        message(\"\")\n        message(*******************************************************************)\n        message(*** ERROR: Stanford C++ library support file 'addr2line.exe' not found!)\n        message(*** Our library needs this file present to produce stack traces.)\n        message(*** Place that file into your lib/ folder and try again.)\n        message(*******************************************************************)\n        message(\"\")\n        warning(Exiting.)\n    }\n}\n\n!exists($$PWD/lib/iconstrip.png) {\n    message(\"\")\n    message(*******************************************************************)\n    message(*** ERROR: Stanford library cannot find image strip file:)\n    message(*** lib/iconstrip.png)\n    message(*** This project cannot run without this file present.)\n    message(*** Place the file into your lib/ folder and try again.)\n    message(*******************************************************************)\n    message(\"\")\n    warning(Exiting.)\n}\n\n# precompiled header speeds up build times\n!win32 {\nPRECOMPILED_HEADER = $$files($$PWD/lib/StanfordCPPLib/private/precompiled.h)\n}\n\n# honeypot to trick Qt Creator so that adding files works from within IDE;\n# Qt looks for first 'SOURCES *=' line and adds newly added .cpp/h files there.\n# But then that causes the files to be added twice because of *.cpp/h rules below.\n# To get around this, we follow the first 'SOURCES *=' line by a line that clears\n# out SOURCES, so that the Qt Creator .pro modification is ineffectual.\nDISTFILES *= \"\"\nDISTFILES = \"\"\nHEADERS *= \"\"\nHEADERS = \"\"\nSOURCES *= \"\"\nSOURCES = \"\"\n\n# include various source .cpp files and header .h files in the build process\n# (student's source code can be put into project root, or src/ subfolder)\nSOURCES *= $$files($$PWD/lib/StanfordCPPLib/*.cpp, true)\nSOURCES *= $$files($$PWD/src/*.cpp, true)\nexists($$PWD/$$PROJECT_FILTER*.cpp) {\n    SOURCES *= $$files($$PWD/$$PROJECT_FILTER*.cpp)\n}\n\nexists($$PWD/lib/StanfordCPPLib/*.h) {\n    HEADERS *= $$files($$PWD/lib/StanfordCPPLib/*.h)\n}\nHEADERS *= $$files($$PWD/lib/StanfordCPPLib/*.h, true)\nHEADERS *= $$files($$PWD/src/*.h, true)\nexists($$PWD/$$PROJECT_FILTER*.h) {\n    HEADERS *= $$files($$PWD/$$PROJECT_FILTER*.h)\n}\n\n# directories examined by Qt Creator when student writes an #include statement\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/collections/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/graphics/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/io/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/system/\nINCLUDEPATH *= $$PWD/lib/StanfordCPPLib/util/\nexists($$PWD/lib/StanfordCPPLib/autograder/*) {\n    INCLUDEPATH *= $$PWD/lib/StanfordCPPLib/autograder/\n}\nINCLUDEPATH *= $$PWD/src/\nINCLUDEPATH *= $$PWD/\nexists($$PWD/src/autograder/$$PROJECT_FILTER/*.h) {\n    INCLUDEPATH *= $$PWD/src/autograder/$$PROJECT_FILTER/\n}\nexists($$PWD/src/test/*.h) {\n    INCLUDEPATH *= $$PWD/src/test/\n}\n\n# directories listed as \"Other files\" in left Project pane of Qt Creator\nexists($$PWD/res/*) {\n    OTHER_FILES *= $$files($$PWD/res/*, true)\n}\nexists($$PWD/*.txt) {\n    OTHER_FILES *= $$files($$PWD/*.txt)\n}\nexists($$PWD/input/*) {\n    OTHER_FILES *= $$files($$PWD/input/*, true)\n}\nexists($$PWD/output/*) {\n    OTHER_FILES *= $$files($$PWD/output/*, true)\n}\n\n###############################################################################\n# END SECTION FOR SPECIFYING SOURCE/LIBRARY/RESOURCE FILES OF PROJECT         #\n###############################################################################\n\n\n###############################################################################\n# BEGIN SECTION FOR SPECIFYING COMPILER/LINKER FLAGS AND LIBRARIES            #\n###############################################################################\n\n# set up flags for the C++ compiler\n# (In general, many warnings/errors are enabled to tighten compile-time checking.\n# A few overly pedantic/confusing errors are turned off for simplicity.)\nCONFIG += no_include_pwd         # make sure we do not accidentally #include files placed in 'resources'\nCONFIG += sdk_no_version_check   # removes spurious warnings on Mac OS X\n# CONFIG += warn_off\n\n# gives us a bit more precision about which errors are printed\nQMAKE_CFLAGS_WARN_ON -= -Wall\nQMAKE_CFLAGS_WARN_ON -= -Wextra\nQMAKE_CFLAGS_WARN_ON -= -W\nQMAKE_CXXFLAGS_WARN_ON -= -Wall\nQMAKE_CXXFLAGS_WARN_ON -= -Wextra\nQMAKE_CXXFLAGS_WARN_ON -= -W\n\nwin32 {\n    # some Windows systems have old MinGW compilers, so be safe and use C++11\n    CONFIG += c++11\n} else {\n    # Mac/Linux should support the latest C++ features\n    CONFIG += c++14\n}\n\n# uncomment this if you want to dump the preprocessor output into the .o files\n# (useful when debugging advanced preprocessor hacking)\n# QMAKE_CXXFLAGS += -E\n\nQMAKE_CXXFLAGS += -Wall\n#QMAKE_CXXFLAGS += -Wextra\nQMAKE_CXXFLAGS += -Wcast-align\n#QMAKE_CXXFLAGS += -Wfloat-equal\nQMAKE_CXXFLAGS += -Wformat=2\nQMAKE_CXXFLAGS += -Wlogical-op\nQMAKE_CXXFLAGS += -Wno-missing-field-initializers\nQMAKE_CXXFLAGS += -Wno-old-style-cast\nQMAKE_CXXFLAGS += -Wno-sign-compare\nQMAKE_CXXFLAGS += -Wno-sign-conversion\nQMAKE_CXXFLAGS += -Wno-write-strings\nQMAKE_CXXFLAGS += -Wreturn-type\nQMAKE_CXXFLAGS += -Werror=return-type\nQMAKE_CXXFLAGS += -Werror=uninitialized\nQMAKE_CXXFLAGS += -Wunreachable-code\nQMAKE_CXXFLAGS += -Wunused-parameter\nexists($$PWD/lib/autograder/*.h) | exists($$PWD/lib/StanfordCPPLib/autograder/$$PROJECT_FILTER/*.h) | exists($$PWD/lib/autograder/$$PROJECT_FILTER/*.cpp) {\n    # omit some warnings/errors in autograder projects\n    # (largely because the Google Test framework violates them a ton of times)\n    QMAKE_CXXFLAGS += -Wno-deprecated\n    QMAKE_CXXFLAGS += -Wno-reorder\n    QMAKE_CXXFLAGS += -Wno-unused-function\n    QMAKE_CXXFLAGS += -Wno-useless-cast\n}\n\n# additional flags for Windows\nwin32 {\n    LIBS += -lDbghelp\n    LIBS += -lbfd\n    LIBS += -limagehlp\n    cache()\n} else {\n    # flags that don't work on Windows MinGW compiler\n    QMAKE_CXXFLAGS += -Wno-unused-const-variable\n    LIBS += -ldl\n}\n\n# additional flags for Mac OS X\nmacx {\n    # calling cache() reduces warnings on Mac OS X systems\n    cache()\n    QMAKE_MAC_SDK = macosx\n}\n\n# additional flags for Linux\nunix:!macx {\n    cache()\n}\n\n# libraries for all OSes\nLIBS += -lpthread\n\n# additional flags for clang compiler (default on Mac)\nCOMPILERNAME = $$QMAKE_CXX\nCOMPILERNAME ~= s|.*/|\nequals(COMPILERNAME, clang++) {\n    QMAKE_CXXFLAGS += -Wempty-init-stmt\n    QMAKE_CXXFLAGS += -Wignored-qualifiers\n    QMAKE_CXXFLAGS += -Winitializer-overrides\n    QMAKE_CXXFLAGS += -Wmissing-field-initializers\n    QMAKE_CXXFLAGS += -Wmissing-method-return-type\n    QMAKE_CXXFLAGS += -Wnull-pointer-arithmetic\n    QMAKE_CXXFLAGS += -Wsemicolon-before-method-body\n    QMAKE_CXXFLAGS += -Wno-format-nonliteral\n    QMAKE_CXXFLAGS += -Wno-inconsistent-missing-override\n    QMAKE_CXXFLAGS += -Wno-overloaded-virtual\n    QMAKE_CXXFLAGS += -Wno-unknown-warning-option\n}\n\n# set up configuration flags used internally by the Stanford C++ libraries\n# These flags are all optional but can simplify project configuration.\n# (setting x/y to 999999 centers the window)\n# (see platform.cpp/h for descriptions of some of these flags)\n\n# wrapper name for 'main' function (needed so student can write 'int main'\n# but our library can grab the actual main function to initialize itself)\nDEFINES += SPL_REPLACE_MAIN_FUNCTION=1\nDEFINES += main=qMain\n\n# x/y location and w/h of the graphical console window; set to -1 to center\nDEFINES += SPL_CONSOLE_X=-1\nDEFINES += SPL_CONSOLE_Y=-1\nDEFINES += SPL_CONSOLE_WIDTH=900\nDEFINES += SPL_CONSOLE_HEIGHT=550\n\n# font size of the font in the graphical console window; can also be set via window menu\n#DEFINES += SPL_CONSOLE_FONTSIZE=18\n\n# echo graphical console onto the plain text console as well?\nDEFINES += SPL_CONSOLE_ECHO\n\n# quit the C++ program when the graphical console is closed?\nDEFINES += SPL_CONSOLE_EXIT_ON_CLOSE\n\n# crash if the .pro is older than the minimum specified in version.h? (SPL_PROJECT_VERSION)\nDEFINES += SPL_VERIFY_PROJECT_VERSION\n\n# allow clients to access the internal data inside the heap of PriorityQueue?\n# (used for some practice exam exercises/demos)\nDEFINES += SPL_PQUEUE_ALLOW_HEAP_ACCESS\n\n# should toString / << of a PriorityQueue display the elements in sorted order,\n# or in heap internal order? the former is more expected by client; the latter\n# is faster and avoids a deep-copy\nDEFINES += SPL_PQUEUE_PRINT_IN_HEAP_ORDER\n\n# flag to throw exceptions when a collection iterator is used after it has\n# been invalidated (e.g. if you remove from a Map while iterating over it)\nDEFINES += SPL_THROW_ON_INVALID_ITERATOR\n\n# flag to add members like 'cost', 'visited', etc. to BasicGraph Vertex/Edge\n# (we are going to disable these to force more interesting implementations)\n# DEFINES += SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n\n# should we throw an error() when operator >> fails on a collection?\n# for years this was true, but the C++ standard says you should just silently\n# set the fail bit on the stream and exit, so that has been made the default.\n# DEFINES += SPL_ERROR_ON_STREAM_EXTRACT\n\n# scale up the console window on high-DPI screens?\n# DEFINES += SPL_SCALE_HIGH_DPI_SCREEN\n\n# is the .cpp portion of the library merged into a single .cpp file\n# to speed up compilation?\nDEFINES += SPL_MERGED_LIBRARY_SINGLE_FILE\n\n# should we attempt to precompile the Qt moc_*.cpp files for speed?\nDEFINES += SPL_PRECOMPILE_QT_MOC_FILES\n\n# build-specific options (debug vs release)\n\n# options for the 'debug' target (default):\n# use no optimization, generate debugger symbols,\n# and catch/print to console any uncaught exceptions thrown by the program\nCONFIG(debug, debug|release) {\n    QMAKE_CXXFLAGS += -g3\n    QMAKE_CXXFLAGS += -fno-inline\n    QMAKE_CXXFLAGS += -fno-omit-frame-pointer\n\n    unix:!macx {\n        equals(COMPILERNAME, g++) {\n            # on Linux g++, these flags help us gather line numbers for stack traces\n            QMAKE_CXXFLAGS += -rdynamic\n            QMAKE_CXXFLAGS += -export-dynamic\n            QMAKE_CXXFLAGS += -Wl,--export-dynamic\n            QMAKE_LFLAGS += -export-dynamic\n            QMAKE_LFLAGS += -rdynamic\n        }\n    }\n    unix:macx {\n        equals(COMPILERNAME, clang++) {\n            QMAKE_CXXFLAGS += -Wno-unused-command-line-argument\n            QMAKE_CXXFLAGS += -Wl,-export_dynamic\n            QMAKE_CXXFLAGS += -Wl,-export-dynamic\n            QMAKE_CXXFLAGS += -Wl,--export-dynamic\n            QMAKE_LFLAGS += -rdynamic\n            QMAKE_LFLAGS += -Wl,-no_pie\n        }\n    }\n\n    # print details about uncaught exceptions with red error text / stack trace\n    DEFINES += SPL_CONSOLE_PRINT_EXCEPTIONS\n}\n\n# options for the 'release' target:\n# enable some compiler optimizations, and\n# make it statically linked so it is a stand-alone executable\nCONFIG(release, debug|release) {\n    QMAKE_CXXFLAGS += -O2\n    # commenting out -static because it doesn't link to Qt libraries properly\n    #QMAKE_LFLAGS += -static\n\n    macx {\n        QMAKE_POST_LINK += 'macdeployqt $${OUT_PWD}/$${TARGET}.app'\n    }\n    unix:!macx {\n        QMAKE_LFLAGS += -static-libgcc\n        QMAKE_LFLAGS += -static-libstdc++\n    }\n    win32 {\n        TARGET_PATH = $${OUT_PWD}/release/$${TARGET}.exe\n        TARGET_PATH ~= s,/,\\\\,g\n\n        OUT_PATH = $${OUT_PWD}/\n        OUT_PATH ~= s,/,\\\\,g\n\n        QMAKE_LFLAGS += -static-libgcc\n        QMAKE_LFLAGS += -static-libstdc++\n        QMAKE_POST_LINK += copy '\"'$${TARGET_PATH}'\"' '\"'$${OUT_PATH}'\"'\n    }\n}\n\n###############################################################################\n# END SECTION FOR SPECIFYING COMPILER/LINKER FLAGS AND LIBRARIES              #\n###############################################################################\n\n\n###############################################################################\n# BEGIN SECTION FOR CS 106B/X AUTOGRADER PROGRAMS                             #\n###############################################################################\n\n# settings specific to CS 106 B/X auto-grading programs; do not modify\nexists($$PWD/lib/autograder/*.h) | exists($$PWD/lib/StanfordCPPLib/autograder/*.h) | exists($$PWD/src/autograder/$$PROJECT_FILTER/*.cpp) {\n    # include the various autograder source code and libraries in the build process\n    exists($$PWD/lib/autograder/*.cpp) {\n        SOURCES *= $$files($$PWD/lib/autograder/*.cpp, true)\n    }\n    exists($$PWD/lib/autograder/*.h) {\n        HEADERS *= $$files($$PWD/lib/autograder/*.h, true)\n    }\n    exists($$PWD/lib/autograder/*) {\n        INCLUDEPATH *= $$PWD/lib/autograder/\n    }\n    exists($$PWD/lib/StanfordCPPLib/autograder/*) {\n        INCLUDEPATH *= $$PWD/lib/StanfordCPPLib/autograder/\n    }\n    exists($$PWD/src/autograder/*.h) {\n        INCLUDEPATH *= $$PWD/src/autograder/\n    }\n    exists($$PWD/src/autograder/$$PROJECT_FILTER/*.h) {\n        INCLUDEPATH *= $$PWD/src/autograder/$$PROJECT_FILTER/\n    }\n\n    DEFINES += SPL_AUTOGRADER_MODE\n\n    # define the style of autograder you want to use (GUI vs console)\n    DEFINES += SPL_GRAPHICAL_AUTOGRADER\n    # DEFINES += SPL_CONSOLE_AUTOGRADER\n\n    # a check to ensure that required autograder resources are present in this project\n    !exists($$PWD/lib/iconstrip-autograder.png) {\n        message(\"\")\n        message(*******************************************************************)\n        message(*** ERROR: Stanford library cannot find autograder image strip file:)\n        message(*** lib/iconstrip-autograder.png)\n        message(*** This project cannot run without this file present.)\n        message(*** Place the file into your lib/ folder and try again.)\n        message(*******************************************************************)\n        message(\"\")\n        error(Exiting.)\n    }\n}\n###############################################################################\n# END SECTION FOR CS 106B/X AUTOGRADER PROGRAMS                               #\n###############################################################################\n\n\n###############################################################################\n# BEGIN SECTION FOR DEFINING HELPER FUNCTIONS FOR RESOURCE COPYING            #\n###############################################################################\n\nCOPY_RESOURCE_FILES_INPUT = \"\"\n\nwin32 {\n    # copy addr2line exe program(s) to capture stack traces on Windows\n    exists($$PWD/lib/*.exe) {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/lib/*.exe)\n    }\n    # optional .dll files for network features on Windows\n    exists($$PWD/lib/*.dll) {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/lib/*.dll)\n    }\n}\n# copy icons and image strips for library GUI/console windows\nexists($$PWD/lib/*.png) {\n    COPY_RESOURCE_FILES_INPUT += $$files($$PWD/lib/*.png)\n}\nexists($$PWD/*.txt) {\n    COPY_RESOURCE_FILES_INPUT += $$files($$PWD/*.txt)\n}\nexists($$PWD/res/*) {\n    win32 {\n        exists($$PWD/res/*/*) {\n            # this will preserve the nested res/ directory structure on Windows,\n            # at the unfortunate cost of copying res/ to build dir on every run;\n            # recommended: avoid res subfolders to avoid this penalty on Windows\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/res)\n        } else {\n            # res/ with no subdirectories will properly be copied only on modification\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/res/*.*)\n        }\n    } else {\n        # Mac/Linux have proper recursive file-copying semantics in all cases\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/res/*, true)\n    }\n}\n# input/ and output/ have same nested subfolder issue as res/\nexists($$PWD/input/*) {\n    win32 {\n        exists($$PWD/input/*/*) {\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/input)\n        } else {\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/input/*.*)\n        }\n    } else {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/input, true)\n    }\n}\nexists($$PWD/output/*) {\n    win32 {\n        exists($$PWD/output/*/*) {\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/output)\n        } else {\n            COPY_RESOURCE_FILES_INPUT += $$files($$PWD/output/*.*)\n        }\n    } else {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/output, true)\n    }\n}\nexists($$PWD/lib/autograder/*.h) | exists($$PWD/lib/StanfordCPPLib/autograder/*.h) | exists($$PWD/src/autograder/$$PROJECT_FILTER/*.cpp) {\n    # in autograder projects, copy over student's .cpp and .h files for possible style checking\n    exists($$PWD/*.cpp) {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/*.cpp)\n    }\n    exists($$PWD/*.h) {\n        COPY_RESOURCE_FILES_INPUT += $$files($$PWD/*.h)\n    }\n}\n\n# platform-specific commands to copy files and folders to build directory\ncopy_resource_files.name = Copy resource files to the build directory\nwin32 {\n    # https://support.microsoft.com/en-us/help/289483/switches-that-you-can-use-with-xcopy-and-xcopy32-commands\n    # /s - copy subfolders\n    # /q - quiet (no verbose output)\n    # /y - overwrite without prompting\n    # /i - if destination does not exist and copying more than one file, assumes destination is a folder\n    copy_resource_files.commands = xcopy /s /q /y ${QMAKE_FILE_IN}\n} else {\n    copy_resource_files.commands = cp -rf ${QMAKE_FILE_IN} .\n}\n# copy_resource_files.commands = ${COPY_FILE} ${QMAKE_FILE_IN} ${QMAKE_FILE_OUT}\ncopy_resource_files.input = COPY_RESOURCE_FILES_INPUT\ncopy_resource_files.output = $${OUT_PWD}/${QMAKE_FILE_BASE}${QMAKE_FILE_EXT}\ncopy_resource_files.CONFIG = no_link no_clean target_predeps\nQMAKE_EXTRA_COMPILERS += copy_resource_files\n\n###############################################################################\n# END SECTION FOR DEFINING HELPER FUNCTIONS FOR RESOURCE COPYING              #\n###############################################################################\n\n# END OF FILE (this should be line #560; if not, your .pro has been changed!)\n"
  },
  {
    "path": "Archived/sample-project/src/hello.cpp",
    "content": "/*\n * CS 106B/X Sample Project\n * last updated: 2018/09/19 by Marty Stepp\n *\n * This project helps test that your Qt Creator system is installed correctly.\n * Compile and run this program to see a console and a graphical window.\n * If you see these windows, your Qt Creator is installed correctly.\n */\n\n#include <iostream>\n#include \"console.h\"\n#include \"ginteractors.h\" // for GWindow\n#include \"gwindow.h\" // for GWindow\n#include \"simpio.h\"  // for getLine\n#include \"vector.h\"  // for Vector\nusing namespace std;\n\nint main() {\n    cout << \"This sample project helps you check and make sure that\" << endl;\n    cout << \"you have successfully installed Qt Creator, C++ compiler/libs,\" << endl;\n    cout << \"and that the Stanford C++ libraries work on your machine.\" << endl;\n    cout << endl;\n    cout << \"If this project is working properly on your computer,\" << endl;\n    cout << \"You should see a \\\"Sample Project\\\" window with a\" << endl;\n    cout << \"smiley face pop up when you build and run it.\" << endl;\n    cout << endl;\n    cout << \"If it doesn't run, please double-check the Qt Creator\" << endl;\n    cout << \"installation instructions linked from the class web site.\" << endl;\n    cout << endl;\n\n    GWindow* window = new GWindow(300, 200);\n    window->setTitle(\"Sample Project\");\n    window->setLocation(50, 50);\n    window->setExitOnClose(true);\n    window->setBackground(\"White\");\n    window->clear();\n    window->setColor(\"Black\");\n    window->drawOval( 10, 10, 180, 180);   // head\n    window->setColor(\"blue\");\n    window->fillOval( 50, 50,  20,  20);   // eye\n    window->fillOval(130, 50,  20,  20);   // eye\n    window->setColor(\"red\");\n    window->fillOval( 95, 95,  10,  10);   // nose\n    window->setColor(\"black\");\n    window->drawString(\"Go Stanford!\", 180, 30);\n\n    // draw the mouth using a Vector to make sure the Stanford collections work\n    Vector<GPoint> mouth;\n    mouth.add(GPoint( 40, 120));\n    mouth.add(GPoint( 70, 150));\n    mouth.add(GPoint(130, 150));\n    mouth.add(GPoint(160, 120));\n    for (int i = 0; i < mouth.size() - 1; i++) {\n        GPoint p1 = mouth.get(i);\n        GPoint p2 = mouth.get(i + 1);\n        window->drawLine(p1, p2);   // mouth\n    }\n\n    window->setVisible(true);\n    window->requestFocus();\n\n    return 0;\n}\n"
  },
  {
    "path": "Archived/sample-project/src/hello.h",
    "content": "// This header file doesn't do much, but it's good to demonstrate that it's\n// possible to create and edit header files\n\n#include <iostream>\n"
  },
  {
    "path": "Archived/spl.cpp",
    "content": "// Stanford C++ library (extracted)\n// @author Marty Stepp\n// @version Sat Oct 12 18:21:52 PDT 2019\n//\n// This library has been merged into a single .h and .cpp file by an automatic script\n// to make it easier to include and use with the CodeStepByStep tool.\n// DO NOT EDIT THIS FILE DIRECTLY!\n// If you want to make changes or additions to the Stanford C++ library,\n// make them to the library's original source as separate .cpp / .h files,\n// then re-run the script to extract the library into these single large merged files.\n\n#include \"spl.h\"\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/private/init.cpp ///////////////////////\n/*\n * File: init.cpp\n * --------------\n *\n * TODO\n *\n * @author Marty Stepp\n * @version 2018/11/22\n * - added headless mode support\n * @version 2018/08/28\n * - refactor to use stanfordcpplib namespace\n * @version 2018/08/27\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\n#ifdef _WIN32\n#  include <direct.h>   // for chdir\n#else // _WIN32\n#  include <unistd.h>   // for chdir\n#endif // _WIN32\n\n\nnamespace stanfordcpplib {\n\nnamespace qtgui {\nextern void initializeQtGraphicalConsole();\nextern void shutdownConsole();\n}\n\nstatic void parseArgsQt(int argc, char** argv);\n\nSTATIC_VARIABLE_DECLARE(bool, isExitEnabled, true)\n\nbool exitEnabled() {\n    return STATIC_VARIABLE(isExitEnabled);\n}\n\n// called automatically by real main() function;\n// call to this is inserted by library init.h\n// to be run in Qt GUI main thread\nvoid initializeLibrary(int argc, char** argv) {\n    // ensure that library is initialized only once\n    static bool _initialized = false;\n    if (_initialized) {\n        return;\n    }\n    _initialized = true;\n\n#ifndef SPL_HEADLESS_MODE\n    GThread::setMainThread();\n#endif // SPL_HEADLESS_MODE\n\n    parseArgsQt(argc, argv);\n\n#ifndef SPL_HEADLESS_MODE\n    // initialize the main Qt graphics subsystem\n    QtGui::instance()->setArgs(argc, argv);\n    QtGui::instance()->initializeQt();\n\n    // initialize Qt graphical console (if student #included it)\n    initializeQtGraphicalConsole();\n#endif // SPL_HEADLESS_MODE\n}\n\nvoid initializeLibraryStudentThread() {\n#if defined(SPL_CONSOLE_PRINT_EXCEPTIONS)\n    setConsolePrintExceptions(true, /* force */ true);\n#endif\n}\n\n// this should be roughly the same code as platform.cpp's parseArgs function\nstatic void parseArgsQt(int argc, char** argv) {\n    if (argc <= 0) {\n        return;\n    }\n    std::string arg0 = argv[0];\n    exceptions::setProgramNameForStackTrace(argv[0]);\n    // programName() = getRoot(getTail(arg0));\n\n#ifndef _WIN32\n    // on Mac only, may need to change folder because of app's nested dir structure\n    size_t ax = arg0.find(\".app/Contents/\");\n    if (ax != std::string::npos) {\n        while (ax > 0 && arg0[ax] != '/') {\n            ax--;\n        }\n        if (ax > 0) {\n            std::string cwd = arg0.substr(0, ax);\n            chdir(cwd.c_str());\n        }\n    }\n#endif // _WIN32\n\n    char* noConsoleFlag = getenv(\"NOCONSOLE\");\n    if (noConsoleFlag && startsWith(std::string(noConsoleFlag), \"t\")) {\n        return;\n    }\n}\n\n// called automatically by real main() function;\n// call to this is inserted by library init.h\n// to be run in Qt main thread\n#ifdef SPL_HEADLESS_MODE\nvoid runMainInThread(int (* mainFunc)(void)) {\n    mainFunc();\n}\n\nvoid runMainInThread(std::function<int()> mainFunc) {\n    mainFunc();\n}\n\nvoid runMainInThreadVoid(void (* mainFuncVoid)(void)) {\n    mainFuncVoid();\n}\n\nvoid runMainInThreadVoid(std::function<void()> mainFuncVoid) {\n    mainFuncVoid();\n}\n#else // SPL_HEADLESS_MODE\nvoid runMainInThread(int (* mainFunc)(void)) {\n    QtGui::instance()->startBackgroundEventLoop(mainFunc);\n}\n\nvoid runMainInThread(std::function<int()> mainFunc) {\n    QtGui::instance()->startBackgroundEventLoop(mainFunc);\n}\n\nvoid runMainInThreadVoid(void (* mainFuncVoid)(void)) {\n    QtGui::instance()->startBackgroundEventLoopVoid(mainFuncVoid);\n}\n\nvoid runMainInThreadVoid(std::function<void()> mainFuncVoid) {\n    QtGui::instance()->startBackgroundEventLoopVoid(mainFuncVoid);\n}\n#endif // SPL_HEADLESS_MODE\n\nvoid setExitEnabled(bool enabled) {\n    STATIC_VARIABLE(isExitEnabled) = enabled;\n    // TODO: notify GConsoleWindow?\n}\n\n// shut down the Qt graphical console window;\n// to be run in Qt main thread\nvoid shutdownLibrary() {\n#ifdef SPL_HEADLESS_MODE\n    // empty\n#else\n    shutdownConsole();\n#endif // SPL_HEADLESS_MODE\n}\n\nvoid staticInitializeLibrary() {\n    // empty\n}\n\n} // namespace stanfordcpplib\n\nnamespace std {\nvoid __stanfordcpplib__exitLibrary(int status) {\n    if (stanfordcpplib::exitEnabled()) {\n        // call std::exit (has been renamed)\n\n#ifdef exit\n#undef exit\n        std::exit(status);\n#define exit __stanfordcpplib__exitLibrary\n#endif // exit\n\n    } else {\n        // not allowed to call exit(); produce error message\n        std::ostringstream out;\n        out << \"Program tried to call exit(\" << status << \") to quit. \" << std::endl;\n        out << \"*** This function has been disabled; main should end through \" << std::endl;\n        out << \"*** normal program control flow.\" << std::endl;\n        error(out.str());\n    }\n}\n\n} // namespace std\n\n/////////////////////// END code extracted from StanfordCPPLib/private/init.cpp ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/collections/collections.cpp ///////////////////////\n/*\n * File: collections.cpp\n * ---------------------\n * This file implements the collections.h interface.\n * \n * @version 2019/04/11\n * - added functions to read/write quoted char values\n * @version 2018/10/20\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n#include <iomanip>\n#include <iostream>\n\n/*\n * Implementation notes: readQuotedString and writeQuotedString\n * ------------------------------------------------------------\n * Most of the work in these functions has to do with escape sequences.\n */\n\nSTATIC_CONST_VARIABLE_DECLARE(std::string, STRING_DELIMITERS, \",:)}]\\n\")\n\nbool stringNeedsQuoting(const std::string& str) {\n    int n = str.length();\n    for (int i = 0; i < n; i++) {\n        char ch = str[i];\n        if (isspace(ch)) return false;\n        if (STATIC_VARIABLE(STRING_DELIMITERS).find(ch) != std::string::npos) return true;\n    }\n    return false;\n}\n\nbool readQuotedChar(std::istream& is, char& ch, bool throwOnError) {\n    // skip whitespace\n    char temp;\n    while (is.get(temp) && isspace(temp)) {\n        // empty\n    }\n    if (is.fail()) {\n        return true;\n    }\n\n    // now we are either at a character, like X, or at the start of a quoted\n    // character such as 'X' or '\\n'\n    if (temp == '\\'' || temp == '\"') {\n        // quoted character; defer to string-reading code\n        is.unget();\n        std::string s;\n        bool result = readQuotedString(is, s, throwOnError);\n        if (result && !s.empty()) {\n            ch = s[0];\n        }\n        return result;\n    } else {\n        // unquoted character; read it ourselves\n        // special case: \\ (e.g. \\n, \\t)\n        if (temp == '\\\\') {\n            // TODO\n            char temp2;\n            if (is.get(temp2)) {\n                switch (temp2) {\n                    case 'a':  ch = '\\a'; break;\n                    case 'b':  ch = '\\b'; break;\n                    case 'f':  ch = '\\f'; break;\n                    case 'n':  ch = '\\n'; break;\n                    case 'r':  ch = '\\r'; break;\n                    case 't':  ch = '\\t'; break;\n                    case 'v':  ch = '\\v'; break;\n                    case '0':  ch = '\\0'; break;\n                    case '\\\\': ch = '\\\\'; break;\n                    case '\\'': ch = '\\''; break;\n                    case '\"':  ch = '\"'; break;\n                    default:   ch = '\\0'; break;\n                }\n            }\n        } else {\n            ch = temp;\n        }\n        return true;\n    }\n}\n\nbool readQuotedString(std::istream& is, std::string& str, bool throwOnError) {\n    str = \"\";\n    char ch;\n    while (is.get(ch) && isspace(ch)) {\n        /* Empty */\n    }\n    if (is.fail()) {\n        return true;   // empty string?\n    }\n    if (ch == '\\'' || ch == '\"') {\n        char delim = ch;\n        while (is.get(ch) && ch != delim) {\n            if (is.fail()) {\n                if (throwOnError) {\n                    error(\"Unterminated string\");\n                }\n                return false;\n            }\n            if (ch == '\\\\') {\n                if (!is.get(ch)) {\n                    if (throwOnError) {\n                        error(\"Unterminated string\");\n                    }\n                    is.setstate(std::ios_base::failbit);\n                    return false;\n                }\n                if (isdigit(ch) || ch == 'x') {\n                    int maxDigits = 3;\n                    int base = 8;\n                    if (ch == 'x') {\n                        base = 16;\n                        maxDigits = 2;\n                    }\n                    int result = 0;\n                    int digit = 0;\n                    for (int i = 0; i < maxDigits && ch != delim; i++) {\n                        if (isdigit(ch)) {\n                            digit = ch - '0';\n                        } else if (base == 16 && isxdigit(ch)) {\n                            digit = toupper(ch) - 'A' + 10;\n                        } else {\n                            break;\n                        }\n                        result = base * result + digit;\n                        if (!is.get(ch)) {\n                            if (throwOnError) {\n                                error(\"Unterminated string\");\n                            }\n                            is.setstate(std::ios_base::failbit);\n                            return false;\n                        }\n                    }\n                    ch = char(result);\n                    is.unget();\n                } else {\n                    switch (ch) {\n                    case 'a': ch = '\\a'; break;\n                    case 'b': ch = '\\b'; break;\n                    case 'f': ch = '\\f'; break;\n                    case 'n': ch = '\\n'; break;\n                    case 'r': ch = '\\r'; break;\n                    case 't': ch = '\\t'; break;\n                    case 'v': ch = '\\v'; break;\n                    case '\"': ch = '\"'; break;\n                    case '\\'': ch = '\\''; break;\n                    case '\\\\': ch = '\\\\'; break;\n                    }\n                }\n            }\n            str += ch;\n        }\n    } else {\n        str += ch;\n        int endTrim = 0;\n        while (is.get(ch) && STATIC_VARIABLE(STRING_DELIMITERS).find(ch) == std::string::npos) {\n            str += ch;\n            if (!isspace(ch)) {\n                endTrim = str.length();\n            }\n        }\n        if (is) is.unget();\n        str = str.substr(0, endTrim);\n    }\n    return true;   // read successfully\n}\n\nstd::ostream& writeQuotedChar(std::ostream& os, char ch, bool forceQuotes) {\n    if (forceQuotes) {\n        os << '\\'';\n    }\n    switch (ch) {\n    case '\\a': os << \"\\\\a\"; break;\n    case '\\b': os << \"\\\\b\"; break;\n    case '\\f': os << \"\\\\f\"; break;\n    case '\\n': os << \"\\\\n\"; break;\n    case '\\r': os << \"\\\\r\"; break;\n    case '\\t': os << \"\\\\t\"; break;\n    case '\\v': os << \"\\\\v\"; break;\n    case '\\\\': os << \"\\\\\\\\\"; break;\n    default:\n        if (isprint(ch) && ch != '\\'') {\n            os << ch;\n        } else {\n            std::ostringstream oss;\n            oss << std::oct << std::setw(3) << std::setfill('0') << (int(ch) & 0xFF);\n            os << \"\\\\\" << oss.str();\n        }\n    }\n    if (forceQuotes) {\n        os << '\\'';\n    }\n    return os;\n}\n\nstd::ostream& writeQuotedString(std::ostream& os, const std::string& str, bool forceQuotes) {\n    if (!forceQuotes && stringNeedsQuoting(str)) {\n        forceQuotes = true;\n    }\n    if (forceQuotes) {\n        os << '\"';\n    }\n    int len = str.length();\n    for (int i = 0; i < len; i++) {\n        char ch = str.at(i);\n        switch (ch) {\n        case '\\a': os << \"\\\\a\"; break;\n        case '\\b': os << \"\\\\b\"; break;\n        case '\\f': os << \"\\\\f\"; break;\n        case '\\n': os << \"\\\\n\"; break;\n        case '\\r': os << \"\\\\r\"; break;\n        case '\\t': os << \"\\\\t\"; break;\n        case '\\v': os << \"\\\\v\"; break;\n        case '\\\\': os << \"\\\\\\\\\"; break;\n        default:\n            if (isprint(ch) && ch != '\"') {\n                os << ch;\n            } else {\n                std::ostringstream oss;\n                oss << std::oct << std::setw(3) << std::setfill('0') << (int(ch) & 0xFF);\n                os << \"\\\\\" << oss.str();\n            }\n        }\n    }\n    if (forceQuotes) {\n        os << '\"';\n    }\n    return os;\n}\n\n/////////////////////// END code extracted from StanfordCPPLib/collections/collections.cpp ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/collections/basicgraph.cpp ///////////////////////\n/*\n * File: basicgraph.cpp\n * --------------------\n * This file implements any non-template functionality used by\n * the BasicGraph class.\n *\n * @version 2016/12/01\n */\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\nint hashCode(const BasicGraph& graph) {\n    int code = hashSeed();\n    for (Vertex* v : graph) {\n        code = hashMultiplier() * code + hashCode(v->name);\n    }\n    for (Edge* e : graph.getEdgeSet()) {\n        code = hashMultiplier() * code + hashCode(e->start->name);\n        code = hashMultiplier() * code + hashCode(e->finish->name);\n    }\n    return (code & hashMask());\n}\n\n/////////////////////// END code extracted from StanfordCPPLib/collections/basicgraph.cpp ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/collections/dawglexicon.cpp ///////////////////////\n/*\n * File: dawglexicon.cpp\n * ---------------------\n * A lexicon is a word list. This lexicon is backed by two separate data\n * structures for storing the words in the list:\n *\n * 1) a DAWG (directed acyclic word graph)\n * 2) a Set<string> of other words.\n *\n * Typically the DAWG is used for a large list read from a file in binary\n * format.  The STL set is for words added piecemeal at runtime.\n *\n * The DAWG idea comes from an article by Appel & Jacobson, CACM May 1988.\n * This lexicon implementation only has the code to load/search the DAWG.\n * The DAWG builder code is quite a bit more intricate, see Julie Zelenski\n * if you need it.\n * \n * @version 2018/03/10\n * - added method front\n * @version 2017/11/14\n * - added iterator version checking support\n * @version 2016/08/10\n * - added constructor support for std initializer_list usage, such as {\"a\", \"b\", \"c\"}\n * @version 2016/08/04\n * - added operator >>\n * @version 2015/07/05\n * - using global hashing functions rather than global variables\n * @version 2014/11/13\n * - added comparison operators <, >=, etc.\n * - added hashCode function\n * @version 2014/10/10\n * - removed 'using namespace' statement\n * - added equals method, ==, != operators\n * - fixed inclusion of foreach macro to avoid errors\n * - BUGFIX: operator << now shows \"\" marks around words to match Lexicon\n */\n\n#define INTERNAL_INCLUDE 1\n\n#include <algorithm>\n#include <cstdlib>\n#include <cstring>\n#include <fstream>\n#include <iostream>\n#include <sstream>\n#include <stdint.h>\n#include <string>\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\nstatic uint32_t my_ntohl(uint32_t arg);\n\n/*\n * The DAWG is stored as an array of edges. Each edge is represented by\n * one 32-bit struct.  The 5 \"letter\" bits indicate the character on this\n * transition (expressed as integer from 1 to 26), the  \"accept\" bit indicates\n * if you accept after appending that char (current path forms word), and the\n * \"lastEdge\" bit marks this as the last edge in a sequence of childeren.\n * The bulk of the bits (24) are used for the index within the edge array for\n * the children of this node. The children are laid out contiguously in\n * alphabetical order.  Since we read edges as binary bits from a file in\n * a big-endian format, we have to swap the struct order for little-endian\n * machines.\n */\n\nDawgLexicon::DawgLexicon() :\n        _edges(nullptr),\n        _start(nullptr),\n        _edgeCount(0),\n        _dawgWordsCount(0) {\n    // empty\n}\n\nDawgLexicon::DawgLexicon(std::istream& input) :\n        _edges(nullptr),\n        _start(nullptr),\n        _edgeCount(0),\n        _dawgWordsCount(0) {\n    addWordsFromFile(input);\n}\n\nDawgLexicon::DawgLexicon(const std::string& filename) :\n        _edges(nullptr),\n        _start(nullptr),\n        _edgeCount(0),\n        _dawgWordsCount(0) {\n    addWordsFromFile(filename);\n}\n\nDawgLexicon::DawgLexicon(const DawgLexicon& src) :\n        _edges(nullptr),\n        _start(nullptr),\n        _edgeCount(0),\n        _dawgWordsCount(0) {\n    deepCopy(src);\n}\n\nDawgLexicon::DawgLexicon(std::initializer_list<std::string> list) :\n        _edges(nullptr),\n        _start(nullptr),\n        _edgeCount(0),\n        _dawgWordsCount(0) {\n    addAll(list);\n}\n\nDawgLexicon::~DawgLexicon() {\n    if (_edges) {\n        delete[] _edges;\n    }\n}\n\nvoid DawgLexicon::add(const std::string& word) {\n    std::string copy = word;\n    toLowerCaseInPlace(copy);\n    if (!contains(copy)) {\n        _otherWords.add(copy);\n    }\n}\n\nDawgLexicon& DawgLexicon::addAll(const DawgLexicon& lex) {\n    for (const std::string& word : lex) {\n        add(word);\n    }\n    return *this;\n}\n\nDawgLexicon& DawgLexicon::addAll(std::initializer_list<std::string> list) {\n    for (const std::string& word : list) {\n        add(word);\n    }\n    return *this;\n}\n\n/*\n * Check for DAWG in first 4 to identify as special binary format,\n * otherwise assume ASCII, one word per line\n */\nvoid DawgLexicon::addWordsFromFile(std::istream& input) {\n    char firstFour[4], expected[] = \"DAWG\";\n    if (input.fail()) {\n        error(\"DawgLexicon::addWordsFromFile: Couldn't read input\");\n    }\n    input.read(firstFour, 4);\n    if (strncmp(firstFour, expected, 4) == 0) {\n        if (_otherWords.size() != 0) {\n            error(\"DawgLexicon::addWordsFromFile: Binary files require an empty lexicon\");\n        }\n        readBinaryFile(input);\n    } else {\n        // plain text file\n        input.seekg(0);\n        std::string line;\n        while (getline(input, line)) {\n            add(line);\n        }\n    }\n}\n\n/*\n * Check for DAWG in first 4 to identify as special binary format,\n * otherwise assume ASCII, one word per line\n */\nvoid DawgLexicon::addWordsFromFile(const std::string& filename) {\n    std::ifstream input(filename.c_str());\n    if (input.fail()) {\n        error(\"DawgLexicon::addWordsFromFile: Couldn't open lexicon file \" + filename);\n    }\n    addWordsFromFile(input);\n    input.close();\n}\n\nvoid DawgLexicon::clear() {\n    if (_edges) {\n        delete[] _edges;\n    }\n    _edges = _start = nullptr;\n    _edgeCount = _dawgWordsCount = 0;\n    _otherWords.clear();\n}\n\nbool DawgLexicon::contains(const std::string& word) const {\n    std::string copy = word;\n    toLowerCaseInPlace(copy);\n    Edge* lastEdge = traceToLastEdge(copy);\n    if (lastEdge && lastEdge->accept) {\n        return true;\n    }\n    return _otherWords.contains(copy);\n}\n\nbool DawgLexicon::containsAll(const DawgLexicon& lex2) const {\n    for (const std::string& word : lex2) {\n        if (!contains(word)) {\n            return false;\n        }\n    }\n    return true;\n}\n\nbool DawgLexicon::containsAll(std::initializer_list<std::string> list) const {\n    for (const std::string& word : list) {\n        if (!contains(word)) {\n            return false;\n        }\n    }\n    return true;\n}\n\nbool DawgLexicon::containsPrefix(const std::string& prefix) const {\n    if (prefix.empty()) {\n        return true;\n    }\n    std::string copy = prefix;\n    toLowerCaseInPlace(copy);\n    if (traceToLastEdge(copy)) {\n        return true;\n    }\n    for (std::string word : _otherWords) {\n        if (startsWith(word, copy)) {\n            return true;\n        }\n        if (copy < word) {\n            return false;\n        }\n    }\n    return false;\n}\n\nbool DawgLexicon::equals(const DawgLexicon& lex2) const {\n    return stanfordcpplib::collections::equals(*this, lex2);\n}\n\nstd::string DawgLexicon::front() const {\n    if (isEmpty()) {\n        error(\"DawgLexicon::front: lexicon is empty\");\n    }\n    auto it = begin();\n    return *it;\n}\n\nvoid DawgLexicon::insert(const std::string& word) {\n    add(word);\n}\n\nbool DawgLexicon::isEmpty() const {\n    return size() == 0;\n}\n\nbool DawgLexicon::isSubsetOf(const DawgLexicon& lex2) const {\n    auto it = begin();\n    auto end = this->end();\n    while (it != end) {\n        if (!lex2.contains(*it)) {\n            return false;\n        }\n        ++it;\n    }\n    return true;\n}\n\nbool DawgLexicon::isSubsetOf(std::initializer_list<std::string> list) const {\n    DawgLexicon lex2(list);\n    return isSubsetOf(lex2);\n}\n\nbool DawgLexicon::isSupersetOf(const DawgLexicon& lex2) const {\n    return containsAll(lex2);\n}\n\nbool DawgLexicon::isSupersetOf(std::initializer_list<std::string> list) const {\n    return containsAll(list);\n}\n\nvoid DawgLexicon::mapAll(void (*fn)(std::string)) const {\n    for (std::string word : *this) {\n        fn(word);\n    }\n}\n\nvoid DawgLexicon::mapAll(void (*fn)(const std::string &)) const {\n    for (std::string word : *this) {\n        fn(word);\n    }\n}\n\nint DawgLexicon::size() const {\n    return _dawgWordsCount + _otherWords.size();\n}\n\nstd::string DawgLexicon::toString() const {\n    std::ostringstream out;\n    out << *this;\n    return out.str();\n}\n\n/*\n * Operators\n */\nbool DawgLexicon::operator ==(const DawgLexicon& lex2) const {\n    return equals(lex2);\n}\n\nbool DawgLexicon::operator !=(const DawgLexicon& lex2) const {\n    return !equals(lex2);\n}\n\nbool DawgLexicon::operator <(const DawgLexicon& lex2) const {\n    return stanfordcpplib::collections::compare(*this, lex2) < 0;\n}\n\nbool DawgLexicon::operator <=(const DawgLexicon& lex2) const {\n    return stanfordcpplib::collections::compare(*this, lex2) <= 0;\n}\n\nbool DawgLexicon::operator >(const DawgLexicon& lex2) const {\n    return stanfordcpplib::collections::compare(*this, lex2) > 0;\n}\n\nbool DawgLexicon::operator >=(const DawgLexicon& lex2) const {\n    return stanfordcpplib::collections::compare(*this, lex2) >= 0;\n}\n\nDawgLexicon DawgLexicon::operator +(const DawgLexicon& lex2) const {\n    DawgLexicon lex = *this;\n    lex.addAll(lex2);\n    return lex;\n}\n\nDawgLexicon DawgLexicon::operator +(std::initializer_list<std::string> list) const {\n    DawgLexicon lex = *this;\n    lex.addAll(list);\n    return lex;\n}\n\nDawgLexicon DawgLexicon::operator +(const std::string& word) const {\n    DawgLexicon lex = *this;\n    lex.add(word);\n    return lex;\n}\n\nDawgLexicon& DawgLexicon::operator +=(const DawgLexicon& lex2) {\n    return addAll(lex2);\n}\n\nDawgLexicon& DawgLexicon::operator +=(std::initializer_list<std::string> list) {\n    return addAll(list);\n}\n\nDawgLexicon& DawgLexicon::operator +=(const std::string& word) {\n    add(word);\n    return *this;\n}\n\n/*\n * Private methods and helpers\n */\n\nDawgLexicon& DawgLexicon::operator ,(const std::string& word) {\n    add(word);\n    return *this;\n}\n\nint DawgLexicon::countDawgWords(Edge* ep) const {\n    int count = 0;\n    while (true) {\n        if (ep->accept) count++;\n        if (ep->children != 0) {\n            count += countDawgWords(&_edges[ep->children]);\n        }\n        if (ep->lastEdge) break;\n        ep++;\n    }\n    return count;\n}\n\nvoid DawgLexicon::deepCopy(const DawgLexicon& src) {\n    if (!src._edges) {\n        _edges = nullptr;\n        _start = nullptr;\n    } else {\n        _edgeCount = src._edgeCount;\n        _edges = new Edge[src._edgeCount];\n        memcpy(_edges, src._edges, sizeof(Edge)*src._edgeCount);\n        _start = _edges + (src._start - src._edges);\n    }\n    _dawgWordsCount = src._dawgWordsCount;\n    _otherWords = src._otherWords;\n}\n\n/*\n * Implementation notes: findEdgeForChar\n * -------------------------------------\n * Iterate over sequence of children to find one that\n * matches the given char.  Returns nullptr if we get to\n * last child without finding a match (thus no such\n * child edge exists).\n */\nDawgLexicon::Edge* DawgLexicon::findEdgeForChar(Edge* children, char ch) const {\n    Edge* curEdge = children;\n    while (true) {\n        if (curEdge->letter == charToOrd(ch)) {\n            return curEdge;\n        }\n        if (curEdge->lastEdge) {\n            return nullptr;\n        }\n        curEdge++;\n    }\n}\n\n/*\n * Implementation notes: readBinaryFile\n * ------------------------------------\n * The binary lexicon file format must follow this pattern:\n * DAWG:<startnode index>:<num bytes>:<num bytes block of edge data>\n */\nvoid DawgLexicon::readBinaryFile(std::istream& input) {\n    input.clear();\n    input.seekg(0, std::ios::beg);\n    long startIndex, numBytes;\n    char firstFour[4], expected[] = \"DAWG\";\n    if (input.fail()) {\n        error(\"DawgLexicon::addWordsFromFile: Couldn't read input\");\n    }\n    input.read(firstFour, 4);\n    input.get();\n    input >> startIndex;\n    input.get();\n    input >> numBytes;\n    input.get();\n    if (input.fail() || strncmp(firstFour, expected, 4) != 0\n            || startIndex < 0 || numBytes < 0) {\n        error(\"DawgLexicon::addWordsFromFile: Improperly formed lexicon file\");\n    }\n    _edgeCount = numBytes / sizeof(Edge);\n    _edges = new Edge[_edgeCount];\n    _start = &_edges[startIndex];\n    input.read((char*) _edges, numBytes);\n    if (input.fail() && !input.eof()) {\n        error(\"DawgLexicon::addWordsFromFile: Improperly formed lexicon file\");\n    }\n\n#if defined(BYTE_ORDER) && BYTE_ORDER == LITTLE_ENDIAN\n    // uint32_t* cur = (uint32_t*) edges;\n    uint32_t* cur = reinterpret_cast<uint32_t*>(_edges);\n    for (int i = 0; i < _edgeCount; i++, cur++) {\n        *cur = my_ntohl(*cur);\n    }\n#endif\n\n    _dawgWordsCount = countDawgWords(_start);\n}\n\n/*\n * Implementation notes: readBinaryFile\n * ------------------------------------\n * The binary lexicon file format must follow this pattern:\n * DAWG:<startnode index>:<num bytes>:<num bytes block of edge data>\n */\nvoid DawgLexicon::readBinaryFile(const std::string& filename) {\n#ifdef _foreachpatch_h\n    std::ifstream input(filename.c_str(), __IOS_IN__ | __IOS_BINARY__);\n#else\n    std::ifstream input(filename.c_str(), std::ios::in | std::ios::binary);\n#endif // _foreachpatch_h\n    if (input.fail()) {\n        error(\"DawgLexicon::addWordsFromFile: Couldn't open lexicon file \" + filename);\n    }\n    readBinaryFile(input);\n    input.close();\n}\n\n/*\n * Implementation notes: traceToLastEdge\n * -------------------------------------\n * Given a string, trace out path through the DAWG edge-by-edge.\n * If a path exists, return last edge; otherwise return nullptr.\n */\n\nDawgLexicon::Edge* DawgLexicon::traceToLastEdge(const std::string& s) const {\n    if (!_start) {\n        return nullptr;\n    }\n    Edge* curEdge = findEdgeForChar(_start, s[0]);\n    int len = (int) s.length();\n    for (int i = 1; i < len; i++) {\n        if (!curEdge || !curEdge->children) {\n            return nullptr;\n        }\n        curEdge = findEdgeForChar(&_edges[curEdge->children], s[i]);\n    }\n    return curEdge;\n}\n\nDawgLexicon& DawgLexicon::operator =(const DawgLexicon& src) {\n    if (this != &src) {\n        if (_edges) {\n            delete[] _edges;\n        }\n        deepCopy(src);\n    }\n    return *this;\n}\n\nvoid DawgLexicon::iterator::advanceToNextWordInSet() {\n    if (setIterator == setEnd) {\n        currentSetWord = \"\";\n    } else {\n        currentSetWord = *setIterator;\n        ++setIterator;\n    }\n}\n\nvoid DawgLexicon::iterator::advanceToNextEdge() {\n    Edge *ep = edgePtr;\n    if (ep->children == 0) {\n        while (ep && ep->lastEdge) {\n            if (stack.isEmpty()) {\n                edgePtr = nullptr;\n                return;\n            } else {\n                ep = stack.pop();\n                currentDawgPrefix.resize(currentDawgPrefix.length() - 1);\n            }\n        }\n        edgePtr = ep + 1;\n    } else {\n        stack.push(ep);\n        currentDawgPrefix.push_back(lp->ordToChar(ep->letter));\n        edgePtr = &lp->_edges[ep->children];\n    }\n}\n\nvoid DawgLexicon::iterator::advanceToNextWordInDawg() {\n    if (!edgePtr) {\n        edgePtr = lp->_start;\n    } else {\n        advanceToNextEdge();\n    }\n    while (edgePtr && !edgePtr->accept) {\n        advanceToNextEdge();\n    }\n}\n\nstd::ostream& operator <<(std::ostream& os, const DawgLexicon& lex) {\n    return stanfordcpplib::collections::writeCollection(os, lex);\n}\n\nstd::istream& operator >>(std::istream& is, DawgLexicon& lex) {\n    std::string element;\n    return stanfordcpplib::collections::readCollection(is, lex, element, /* descriptor */ \"DawgLexicon::operator >>\");\n}\n\nint hashCode(const DawgLexicon& lex) {\n    return stanfordcpplib::collections::hashCodeCollection(lex);\n}\n\n/*\n * Swaps a 4-byte long from big to little endian byte order\n */\nstatic uint32_t my_ntohl(uint32_t arg) {\n    uint32_t result = ((arg & 0xff000000) >> 24) |\n            ((arg & 0x00ff0000) >> 8) |\n            ((arg & 0x0000ff00) << 8) |\n            ((arg & 0x000000ff) << 24);\n    return result;\n}\n\n/////////////////////// END code extracted from StanfordCPPLib/collections/dawglexicon.cpp ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/collections/hashcode.cpp ///////////////////////\n/*\n * File: hashcode.cpp\n * ------------------\n * This file implements the interface declared in hashcode.h.\n *\n * @version 2019/04/16\n * - bugfix for win64 involving hashCode for void* pointers\n * @version 2018/08/10\n * - bugfixes involving negative hash codes, unified string hashing\n * @version 2017/10/21\n * - added hash codes for short, unsigned integers\n * @version 2015/07/05\n * - using global hashing functions rather than global variables\n */\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n#include <cstddef>       // For size_t\n#include <cstdint>       // For uintptr_t\n#include <cstring>       // For strlen\n\nstatic const int HASH_SEED = 5381;               // Starting point for first cycle\nstatic const int HASH_MULTIPLIER = 33;           // Multiplier for each cycle\nstatic const int HASH_MASK = unsigned(-1) >> 1;  // All 1 bits except the sign\n\nint hashSeed() {\n    return HASH_SEED;\n}\n\nint hashMultiplier() {\n    return HASH_MULTIPLIER;\n}\n\nint hashMask() {\n    return HASH_MASK;\n}\n\n/* \n * Implementation notes: hashCode(int)\n * -----------------------------------\n * Hash code for integers masks off the sign bit, guaranteeing a nonnegative value.\n */\nint hashCode(int key) {\n    return key & HASH_MASK;\n}\n\n/* \n * Implementation notes: hashCode(other primitive types)\n * -----------------------------------------------------\n * Hash codes for all other primitive types forward to the hash code for integers.\n * This ensures that all hash codes get the proper masking treatment.\n *\n * Thanks to Jeremy Barenholtz for identifying that the original versions of these\n * functions, which just cast their arguments to integers, could lead to negative\n * results.\n */\nint hashCode(bool key) {\n    return hashCode(static_cast<int>(key));\n}\n\nint hashCode(char key) {\n    return hashCode(static_cast<int>(key));\n}\n\nint hashCode(unsigned int key) {\n    return hashCode(static_cast<int>(key));\n}\n\nint hashCode(long key) {\n    return hashCode(static_cast<int>(key));\n}\n\nint hashCode(unsigned long key) {\n    return hashCode(static_cast<int>(key));\n}\n\nint hashCode(short key) {\n    return hashCode(static_cast<int>(key));\n}\n\nint hashCode(unsigned short key) {\n    return hashCode(static_cast<int>(key));\n}\n\n#ifdef _WIN64\nint hashCode(uintptr_t key) {\n    return hashCode(static_cast<unsigned long>(key));\n}\n#endif // _WIN64\n\n/* \n * Implementation notes: hashCode(void*)\n * -----------------------------------------------------\n * Catch-all handler for pointers not matched by other\n * overloads just treats the pointer value numerically.\n */\nint hashCode(void* key) {\n    return hashCode(reinterpret_cast<uintptr_t>(key));\n}\n\n/*\n * Implementation notes: hashCode(string), hashCode(double)\n * --------------------------------------------------------\n * This function takes a string key and uses it to derive a hash code,\n * which is a nonnegative integer related to the key by a deterministic\n * function that distributes keys well across the space of integers.\n * The general method is called linear congruence, which is also used\n * in random-number generators.  The specific algorithm used here is\n * called djb2 after the initials of its inventor, Daniel J. Bernstein,\n * Professor of Mathematics at the University of Illinois at Chicago.\n */\nint hashCode(const char* base, size_t numBytes) {\n    unsigned hash = HASH_SEED;\n    for (size_t i = 0; i < numBytes; i++) {\n        hash = HASH_MULTIPLIER * hash + base[i];\n    }\n    return hashCode(hash);\n} \n\nint hashCode(const char* str) {\n    return hashCode(str, strlen(str));\n}\n\nint hashCode(const std::string& str) {\n    return hashCode(str.data(), str.length());\n}\n\nint hashCode(double key) {\n    return hashCode(reinterpret_cast<const char *>(&key), sizeof(double));\n}\n\nint hashCode(float key) {\n    return hashCode(reinterpret_cast<const char *>(&key), sizeof(float));\n}\n\nint hashCode(long double key) {\n    return hashCode(reinterpret_cast<const char *>(&key), sizeof(long double));\n}\n\n/////////////////////// END code extracted from StanfordCPPLib/collections/hashcode.cpp ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/collections/lexicon.cpp ///////////////////////\n/*\n * File: lexicon.cpp\n * -----------------\n * A Lexicon is a word list. This Lexicon is backed by a data\n * structure called a prefix tree or trie (\"try\").\n *\n * This is a re-implementation of Lexicon.  Its previous implementation used\n * a pair of structures: a directed acyclic word graph (DAWG) and an STL set.\n * That implementation was discarded because of several reasons:\n *\n * - It relied on binary file formats that were not readable by students.\n * - It did not provide for expected class members like remove.\n * - It had a clunky pair of data structures that had to be searched separately.\n * - It was optimized for space usage over ease of use and maintenance.\n *\n * The original DAWG implementation is retained as dawglexicon.h/cpp.\n * \n * @version 2018/03/10\n * - added method front\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * @version 2016/08/11\n * - added operators +, +=, -, -=, *, *= to better match Set/HashSet\n * @version 2016/08/10\n * - added constructor support for std initializer_list usage, such as {\"a\", \"b\", \"c\"}\n * @version 2016/08/04\n * - fixed operator >> to not throw errors\n * @version 2015/07/05\n * - using global hashing functions rather than global variables\n * @version 2014/11/13\n * - added comparison operators <, >=, etc.\n * - added hashCode function\n * @version 2014/10/10\n * - added comparison operators ==, !=\n * - removed 'using namespace' statement\n */\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n#include <cctype>\n#include <cstdlib>\n#include <cstring>\n#include <fstream>\n#include <iostream>\n#include <sstream>\n#include <string>\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\nstatic bool scrub(std::string& str);\n\nLexicon::Lexicon() :\n        _root(nullptr),\n        _size(0),\n        _removeFlag(false) {\n    // empty\n}\n\nLexicon::Lexicon(std::istream& input) :\n        _root(nullptr),\n        _size(0),\n        _removeFlag(false) {\n    addWordsFromFile(input);\n}\n\nLexicon::Lexicon(const std::string& filename) :\n        _root(nullptr),\n        _size(0),\n        _removeFlag(false) {\n    addWordsFromFile(filename);\n}\n\nLexicon::Lexicon(std::initializer_list<std::string> list) :\n        _root(nullptr),\n        _size(0),\n        _removeFlag(false) {\n    addAll(list);\n}\n\nLexicon::Lexicon(const Lexicon& src) :\n        _root(nullptr),\n        _size(0),\n        _removeFlag(false) {\n    deepCopy(src);\n}\n\nLexicon::~Lexicon() {\n    clear();\n}\n\nbool Lexicon::add(const std::string& word) {\n    if (word.empty()) {\n        return false;\n    }\n    std::string scrubbed = word;\n    if (!scrub(scrubbed)) {\n        return false;\n    }\n    return addHelper(_root, scrubbed, /* originalWord */ scrubbed);\n}\n\nLexicon& Lexicon::addAll(const Lexicon& lex) {\n    for (const std::string& word : lex) {\n        add(word);\n    }\n    return *this;\n}\n\nLexicon& Lexicon::addAll(std::initializer_list<std::string> list) {\n    for (const std::string& word : list) {\n        add(word);\n    }\n    return *this;\n}\n\nvoid Lexicon::addWordsFromFile(std::istream& input) {\n    bool isDAWG = isDAWGFile(input);\n    rewindStream(input);\n    if (isDAWG) {\n        readBinaryFile(input);\n    } else {\n        if (input.fail()) {\n            error(\"Lexicon::addWordsFromFile: Couldn't read from input\");\n        }\n        std::string line;\n        while (getline(input, line)) {\n            add(trim(line));\n        }\n    }\n}\n\nvoid Lexicon::addWordsFromFile(const std::string& filename) {\n    std::ifstream input(filename.c_str());\n    if (input.fail()) {\n        error(\"Lexicon::addWordsFromFile: Couldn't read from input file \" + filename);\n    }\n    addWordsFromFile(input);\n    input.close();\n}\n\nstd::string Lexicon::back() const {\n    if (isEmpty()) {\n        error(\"Lexicon::back: lexicon is empty\");\n    }\n    return _allWords.back();\n}\n\nvoid Lexicon::clear() {\n    _size = 0;\n    _allWords.clear();\n    deleteTree(_root);\n    _root = nullptr;\n}\n\nbool Lexicon::contains(const std::string& word) const {\n    if (word.empty()) {\n        return false;\n    }\n    std::string scrubbed = word;\n    if (!scrub(scrubbed)) {\n        return false;\n    }\n    return containsHelper(_root, scrubbed, /* isPrefix */ false);\n}\n\nbool Lexicon::containsAll(const Lexicon& lex2) const {\n    for (const std::string& word : lex2) {\n        if (!contains(word)) {\n            return false;\n        }\n    }\n    return true;\n}\n\nbool Lexicon::containsAll(std::initializer_list<std::string> list) const {\n    for (const std::string& word : list) {\n        if (!contains(word)) {\n            return false;\n        }\n    }\n    return true;\n}\n\nbool Lexicon::containsPrefix(const std::string& prefix) const {\n    if (prefix.empty()) {\n        return true;\n    }\n    std::string scrubbed = prefix;\n    if (!scrub(scrubbed)) {\n        return false;\n    }\n    return containsHelper(_root, scrubbed, /* isPrefix */ true);\n}\n\nbool Lexicon::equals(const Lexicon& lex2) const {\n    return stanfordcpplib::collections::equals(*this, lex2);\n}\n\nstd::string Lexicon::first() const {\n    if (isEmpty()) {\n        error(\"Lexicon::first: lexicon is empty\");\n    }\n    return _allWords.front();\n}\n\nstd::string Lexicon::front() const {\n    if (isEmpty()) {\n        error(\"Lexicon::front: lexicon is empty\");\n    }\n    return _allWords.front();\n}\n\nvoid Lexicon::insert(const std::string& word) {\n    add(word);\n}\n\nbool Lexicon::isEmpty() const {\n    return size() == 0;\n}\n\nbool Lexicon::isSubsetOf(const Lexicon& lex2) const {\n    auto it = begin();\n    auto end = this->end();\n    while (it != end) {\n        if (!lex2.contains(*it)) {\n            return false;\n        }\n        ++it;\n    }\n    return true;\n}\n\nbool Lexicon::isSubsetOf(std::initializer_list<std::string> list) const {\n    Lexicon lex2(list);\n    return isSubsetOf(lex2);\n}\n\nbool Lexicon::isSupersetOf(const Lexicon& lex2) const {\n    return containsAll(lex2);\n}\n\nbool Lexicon::isSupersetOf(std::initializer_list<std::string> list) const {\n    return containsAll(list);\n}\n\nvoid Lexicon::mapAll(void (*fn)(std::string)) const {\n    for (std::string word : _allWords) {\n        fn(word);\n    }\n}\n\nvoid Lexicon::mapAll(void (*fn)(const std::string&)) const {\n    for (std::string word : _allWords) {\n        fn(word);\n    }\n}\n\nbool Lexicon::remove(const std::string& word) {\n    if (word.empty()) {\n        return false;\n    }\n    std::string scrubbed = word;\n    if (!scrub(scrubbed)) {\n        return false;\n    }\n    return removeHelper(_root, scrubbed, /* originalWord */ scrubbed, /* isPrefix */ false);\n}\n\nLexicon& Lexicon::removeAll(const Lexicon& lex2) {\n    Vector<std::string> toRemove;\n    for (const std::string& word : *this) {\n        if (lex2.contains(word)) {\n            toRemove.add(word);\n        }\n    }\n    for (const std::string& word : toRemove) {\n        remove(word);\n    }\n    return *this;\n}\n\nLexicon& Lexicon::removeAll(std::initializer_list<std::string> list) {\n    for (const std::string& word : list) {\n        remove(word);\n    }\n    return *this;\n}\n\nbool Lexicon::removePrefix(const std::string& prefix) {\n    if (prefix.empty()) {\n        bool result = !isEmpty();\n        clear();\n        return result;\n    }\n    std::string scrubbed = prefix;\n    if (!scrub(scrubbed)) {\n        return false;\n    }\n    \n    return removeHelper(_root, scrubbed, /* originalWord */ scrubbed, /* isPrefix */ true);\n}\n\nLexicon& Lexicon::retainAll(const Lexicon& lex2) {\n    Vector<std::string> toRemove;\n    for (const std::string& word : *this) {\n        if (!lex2.contains(word)) {\n            toRemove.add(word);\n        }\n    }\n    for (const std::string& word : toRemove) {\n        remove(word);\n    }\n    return *this;\n}\n\nLexicon& Lexicon::retainAll(std::initializer_list<std::string> list) {\n    Lexicon lex2(list);\n    return retainAll(lex2);\n}\n\nint Lexicon::size() const {\n    return _size;\n}\n\nstd::string Lexicon::toString() const {\n    std::ostringstream out;\n    out << *this;\n    return out.str();\n}\n\n/*\n * Operators\n */\nbool Lexicon::operator ==(const Lexicon& lex2) const {\n    return equals(lex2);\n}\n\nbool Lexicon::operator !=(const Lexicon& lex2) const {\n    return !equals(lex2);\n}\n\nbool Lexicon::operator <(const Lexicon& lex2) const {\n    return stanfordcpplib::collections::compare(*this, lex2) < 0;\n}\n\nbool Lexicon::operator <=(const Lexicon& lex2) const {\n    return stanfordcpplib::collections::compare(*this, lex2) <= 0;\n}\n\nbool Lexicon::operator >(const Lexicon& lex2) const {\n    return stanfordcpplib::collections::compare(*this, lex2) > 0;\n}\n\nbool Lexicon::operator >=(const Lexicon& lex2) const {\n    return stanfordcpplib::collections::compare(*this, lex2) >= 0;\n}\n\nLexicon Lexicon::operator +(const Lexicon& lex2) const {\n    Lexicon lex = *this;\n    lex.addAll(lex2);\n    return lex;\n}\n\nLexicon Lexicon::operator +(std::initializer_list<std::string> list) const {\n    Lexicon lex = *this;\n    lex.addAll(list);\n    return lex;\n}\n\nLexicon Lexicon::operator +(const std::string& word) const {\n    Lexicon lex = *this;\n    lex.add(word);\n    return lex;\n}\n\nLexicon Lexicon::operator *(const Lexicon& lex2) const {\n    Lexicon lex = *this;\n    return lex.retainAll(lex2);\n}\n\nLexicon Lexicon::operator *(std::initializer_list<std::string> list) const {\n    Lexicon lex = *this;\n    return lex.retainAll(list);\n}\n\nLexicon Lexicon::operator -(const Lexicon& lex2) const {\n    Lexicon lex = *this;\n    return lex.removeAll(lex2);\n}\n\nLexicon Lexicon::operator -(std::initializer_list<std::string> list) const {\n    Lexicon lex = *this;\n    return lex.removeAll(list);\n}\n\nLexicon Lexicon::operator -(const std::string& word) const {\n    Lexicon lex = *this;\n    lex.remove(word);\n    return lex;\n}\n\nLexicon& Lexicon::operator +=(const Lexicon& lex2) {\n    return addAll(lex2);\n}\n\nLexicon& Lexicon::operator +=(std::initializer_list<std::string> list) {\n    return addAll(list);\n}\n\nLexicon& Lexicon::operator +=(const std::string& word) {\n    add(word);\n    _removeFlag = false;\n    return *this;\n}\n\nLexicon& Lexicon::operator *=(const Lexicon& lex2) {\n    return retainAll(lex2);\n}\n\nLexicon& Lexicon::operator *=(std::initializer_list<std::string> list) {\n    return retainAll(list);\n}\n\nLexicon& Lexicon::operator -=(const Lexicon& lex2) {\n    return removeAll(lex2);\n}\n\nLexicon& Lexicon::operator -=(std::initializer_list<std::string> list) {\n    return removeAll(list);\n}\n\nLexicon& Lexicon::operator -=(const std::string& word) {\n    remove(word);\n    _removeFlag = true;\n    return *this;\n}\n\n/* private helpers implementation */\n\nLexicon& Lexicon::operator ,(const std::string& word) {\n    if (_removeFlag) {\n        remove(word);\n    } else {\n        add(word);\n    }\n    return *this;\n}\n\n// pre: word is scrubbed to contain only lowercase a-z letters\nbool Lexicon::addHelper(TrieNode*& node, const std::string& word, const std::string& originalWord) {\n    if (!node) {\n        // create nodes all the way down, one for each letter of the word\n        node = new TrieNode();\n    }\n\n    if (word.empty()) {\n        // base case: we have added all of the letters of this word\n        if (node->isWord()) {\n            return false;   // duplicate word; already present\n        } else {\n            // new word; add it\n            node->setWord(true);\n            _size++;\n            _allWords.add(originalWord);\n            return true;\n        }\n    } else {\n        // recursive case: chop off first letter, traverse the rest\n        return addHelper(node->child(word[0]), word.substr(1), originalWord);\n    }\n}\n\n// pre: word is scrubbed to contain only lowercase a-z letters\nbool Lexicon::containsHelper(TrieNode* node, const std::string& word, bool isPrefix) const {\n    if (!node) {\n        // base case: no pointer down to here, so prefix must not exist\n        return false;\n    } else if (word.length() == 0) {\n        // base case: Found nodes all the way down.\n        // If we are looking for a prefix, this means this path IS a prefix,\n        // so we should return true.\n        // If we are looking for an exact word match rather than a prefix,\n        // we must check the isWord flag to see that this word was added\n        return (isPrefix ? true : node->isWord());\n    } else {\n        // recursive case: follow appropriate child pointer for one letter\n        return containsHelper(node->child(word[0]), word.substr(1), isPrefix);\n    }\n}\n\n// pre: word is scrubbed to contain only lowercase a-z letters\nbool Lexicon::removeHelper(TrieNode*& node, const std::string& word, const std::string& originalWord, bool isPrefix) {\n    if (!node) {\n        // base case: dead end; this word/prefix must not be contained\n        return false;\n    } else if (word.empty()) {\n        // base case: we have walked all of the letters of this word/prefix\n        // and now we must do the removal\n        if (isPrefix) {\n            // remove this node and all of its descendents\n            removeSubtreeHelper(node, originalWord);   // removes from m_allWords, sets m_size\n            node = nullptr;\n        } else {\n            // found this word in the lexicon;\n            if (node->isLeaf()) {\n                // remove this leaf node only\n                delete node;\n                node = nullptr;\n            } else {\n                // de-word-ify this node, but leave it because it may\n                // still have children that are valid words\n                if (node->isWord()) {\n                    node->setWord(false);\n                }\n            }\n            _allWords.remove(originalWord);\n            _size--;\n        }\n        return true;\n    } else {\n        // recursive case: chop off first letter, traverse the rest\n        bool wasLeaf = node->isLeaf();\n        bool result = removeHelper(node->child(word[0]), word.substr(1), originalWord, isPrefix);\n\n        // memory cleanup: if I wasn't a leaf but now am, and am not a word,\n        // then I am now unneeded, so remove me too\n        if (result && !wasLeaf && node\n                && node->isLeaf() && !node->isWord()) {\n            delete node;\n            node = nullptr;\n        }\n        return result;\n    }\n}\n\n// remove/free this node and all descendents\nvoid Lexicon::removeSubtreeHelper(TrieNode*& node, const std::string& originalWord) {\n    if (node) {\n        for (char letter = 'a'; letter <= 'z'; letter++) {\n            removeSubtreeHelper(node->child(letter), originalWord + letter);\n        }\n        if (node->isWord()) {\n            _allWords.remove(originalWord);\n            _size--;\n        }\n        delete node;\n        node = nullptr;\n    }\n}\n\nvoid Lexicon::deepCopy(const Lexicon& src) {\n    for (std::string word : src._allWords) {\n        add(word);\n    }\n}\n\nvoid Lexicon::deleteTree(TrieNode* node) {\n    if (node) {\n        for (char letter = 'a'; letter <= 'z'; letter++) {\n            deleteTree(node->child(letter));\n        }\n        delete node;\n    }\n}\n\n/*\n * Returns true if the given file (probably) represents a\n * binary DAWG lexicon data file.\n */\nbool Lexicon::isDAWGFile(std::istream& input) const {\n    char firstFour[4], expected[] = \"DAWG\";\n    if (input.fail()) {\n        error(std::string(\"Lexicon::addWordsFromFile: Couldn't read input\"));\n    }\n    input.read(firstFour, 4);\n    bool result = strncmp(firstFour, expected, 4) == 0;\n    return result;\n}\n\n/*\n * Returns true if the given file (probably) represents a\n * binary DAWG lexicon data file.\n */\nbool Lexicon::isDAWGFile(const std::string& filename) const {\n    std::ifstream input(filename.c_str());\n    if (input.fail()) {\n        error(std::string(\"Lexicon::addWordsFromFile: Couldn't open lexicon file \") + filename);\n    }\n    bool result = isDAWGFile(input);\n    input.close();\n    return result;\n}\n\n/*\n * We just delegate to DawgLexicon, the old implementation, to read a binary\n * lexicon data file, and then we extract its yummy data into our trie.\n */\nvoid Lexicon::readBinaryFile(std::istream& input) {\n    DawgLexicon ldawg(input);\n    for (std::string word : ldawg) {\n        add(word);\n    }\n}\n\n/*\n * We just delegate to DawgLexicon, the old implementation, to read a binary\n * lexicon data file, and then we extract its yummy data into our trie.\n */\nvoid Lexicon::readBinaryFile(const std::string& filename) {\n    DawgLexicon ldawg(filename);\n    for (std::string word : ldawg) {\n        add(word);\n    }\n}\n\nLexicon& Lexicon::operator =(const Lexicon& src) {\n    if (this != &src) {\n        clear();\n        deepCopy(src);\n    }\n    return *this;\n}\n\nstd::ostream& operator <<(std::ostream& out, const Lexicon& lex) {\n    out << lex._allWords;\n    return out;\n}\n\nstd::istream& operator >>(std::istream& is, Lexicon& lex) {\n    std::string element;\n    return stanfordcpplib::collections::readCollection(is, lex, element, /* descriptor */ \"Lexicon::operator >>\");\n}\n\n/*\n * Hash function for lexicons.\n */\nint hashCode(const Lexicon& lex) {\n    return stanfordcpplib::collections::hashCodeCollection(lex);\n}\n\nstatic bool scrub(std::string& str) {\n    size_t nChars = str.length();\n    size_t outIndex = 0;\n    for (size_t i = 0; i < nChars; i++) {\n        std::string::value_type ch = tolower(str[i]);\n        if (ch < 'a' || ch > 'z') {\n            return false;   // illegal string\n        } else {\n            str[outIndex] = ch;\n            outIndex++;\n        }\n    }\n    if (outIndex != nChars) {\n        str.erase(outIndex, nChars - outIndex);\n    }\n    return true;\n}\n\n/////////////////////// END code extracted from StanfordCPPLib/collections/lexicon.cpp ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/collections/shuffle.cpp ///////////////////////\n/*\n * File: shuffle.cpp\n * -----------------\n * Implementation of the functions in shuffle.h.\n * See shuffle.h for documentation of each function.\n *\n * @author Marty Stepp\n * @version 2014/10/08\n * - removed 'using namespace' statement\n * @since 2014/02/01\n */\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\n/*\n * Randomly rearranges the characters of the given string and returns the\n * rearranged version.\n */\nstd::string shuffle(std::string s) {\n    for (int i = 0, length = s.length(); i < length; i++) {\n        int j = randomInteger(i, length - 1);\n        if (i != j) {\n            std::string::value_type temp = s[i];\n            s[i] = s[j];\n            s[j] = temp;\n        }\n    }\n    return s;\n}\n\n/////////////////////// END code extracted from StanfordCPPLib/collections/shuffle.cpp ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/collections/gridlocation.cpp ///////////////////////\n/*\n * File: gridlocation.cpp\n * ----------------------\n * This file implements the members of the <code>GridLocation</code> structure\n * and the <code>GridLocationRange</code> class.\n * See gridlocation.h for the declarations of each member.\n *\n * @version 2018/03/12\n * - initial version\n */\n\n#define INTERNAL_INCLUDE 1\n\n#include <sstream>\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\nGridLocation::GridLocation(int row, int col) {\n    this->row = row;\n    this->col = col;\n}\n\nGridLocationRange GridLocation::neighbors(int range, bool rowMajor) const {\n    return GridLocationRange(row - range, col - range, row + range, col + range, rowMajor);\n}\n\nstd::string GridLocation::toString() const {\n    std::ostringstream out;\n    out << *this;\n    return out.str();\n}\n\nint hashCode(const GridLocation& loc) {\n    return hashCode(loc.row, loc.col);\n}\n\nbool operator <(const GridLocation& loc1, const GridLocation& loc2) {\n    return loc1.row < loc2.row ||\n            (loc1.row == loc2.row && loc1.col < loc2.col);\n}\n\nbool operator <=(const GridLocation& loc1, const GridLocation& loc2) {\n    return loc1 < loc2 || loc1 == loc2;\n}\n\nbool operator ==(const GridLocation& loc1, const GridLocation& loc2) {\n    return loc1.row == loc2.row && loc1.col == loc2.col;\n}\n\nbool operator !=(const GridLocation& loc1, const GridLocation& loc2) {\n    return !(loc1 == loc2);\n}\n\nbool operator >(const GridLocation& loc1, const GridLocation& loc2) {\n    return loc2 < loc1;\n}\n\nbool operator >=(const GridLocation& loc1, const GridLocation& loc2) {\n    return !(loc1 < loc2);\n}\n\nstd::ostream& operator <<(std::ostream& out, const GridLocation& loc) {\n    return out << \"r\" << loc.row << \"c\" << loc.col;\n}\n\nstd::istream& operator >>(std::istream& input, GridLocation& loc) {\n    // read 'r'\n    input.get();\n    if (!input) {\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n\n    // read row\n    int row;\n    if (!(input >> row)) {\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n\n    // read 'c'\n    input.get();\n    if (!input) {\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n\n    // read row\n    int col;\n    if (!(input >> col)) {\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n\n    // success!\n    loc.row = row;\n    loc.col = col;\n    return input;\n}\n\nGridLocationRange::GridLocationRange(int startRow, int startCol, int endRow, int endCol, bool isRowMajor)\n        : _start(startRow, startCol),\n          _end(endRow, endCol),\n          _isRowMajor(isRowMajor) {\n    // empty\n}\n\nGridLocationRange::GridLocationRange(const GridLocation& startLoc, const GridLocation& endLoc, bool isRowMajor)\n        : _start(startLoc),\n          _end(endLoc),\n          _isRowMajor(isRowMajor) {\n    // empty\n}\n\nGridLocationRange::GridLocationRangeIterator GridLocationRange::begin() const {\n    return GridLocationRangeIterator(this, /* end */ false);\n}\n\nbool GridLocationRange::contains(const GridLocation& loc) const {\n    return _start <= loc && loc <= _end;\n}\n\nGridLocationRange::GridLocationRangeIterator GridLocationRange::end() const {\n    return GridLocationRangeIterator(this, /* end */ true);\n}\n\nint GridLocationRange::endCol() const {\n    return _end.col;\n}\n\nconst GridLocation& GridLocationRange::endLocation() const {\n    return _end;\n}\n\nint GridLocationRange::endRow() const {\n    return _end.row;\n}\n\nbool GridLocationRange::isEmpty() const {\n    return _start > _end;\n}\n\nbool GridLocationRange::isRowMajor() const {\n    return _isRowMajor;\n}\n\nint GridLocationRange::startCol() const {\n    return _start.col;\n}\n\nconst GridLocation& GridLocationRange::startLocation() const {\n    return _start;\n}\n\nint GridLocationRange::startRow() const {\n    return _start.row;\n}\n\nstd::string GridLocationRange::toString() const {\n    std::ostringstream out;\n    out << *this;\n    return out.str();\n}\n\nstd::ostream& operator <<(std::ostream& out, const GridLocationRange& range) {\n    return out << range.startLocation() << \" .. \" << range.endLocation();\n}\n\n/////////////////////// END code extracted from StanfordCPPLib/collections/gridlocation.cpp ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/io/base64.cpp ///////////////////////\n/*\n * File: base64.cpp\n * ----------------\n * This file defines a set of functions for encoding and decoding binary data\n * in the base64 format, as declared in base64.h.  See:\n * http://en.wikipedia.org/wiki/Base64\n *\n * @author Marty Stepp, based upon open-source Apache Base64 en/decoder\n * @version 2017/10/18\n * - fixed compiler warnings\n * @version 2014/10/08\n * - removed 'using namespace' statement\n * 2014/08/14\n * - Fixed bug with variables declared with deprecated 'register' keyword.\n * @since 2014/08/03\n */\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n#include <cstring>\n#include <sstream>\n\n/* aaaack but it's fast and const should make it shared text page. */\nstatic const unsigned char pr2six[256] = {\n    /* ASCII table */\n    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,\n    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,\n    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 62, 64, 64, 64, 63,\n    52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 64, 64, 64, 64, 64, 64,\n    64,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,\n    15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 64, 64, 64, 64, 64,\n    64, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,\n    41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 64, 64, 64, 64, 64,\n    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,\n    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,\n    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,\n    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,\n    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,\n    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,\n    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,\n    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64\n};\n\nint Base64decode_len(const char *bufcoded) {\n    int nbytesdecoded;\n    const unsigned char *bufin;\n    int nprbytes;\n\n    bufin = (const unsigned char *) bufcoded;\n    while (pr2six[*(bufin++)] <= 63);\n\n    nprbytes = (bufin - (const unsigned char *) bufcoded) - 1;\n    nbytesdecoded = ((nprbytes + 3) / 4) * 3;\n\n    return nbytesdecoded + 1;\n}\n\nint Base64decode(char *bufplain, const char *bufcoded) {\n    int nbytesdecoded;\n    const unsigned char *bufin;\n    unsigned char *bufout;\n    int nprbytes;\n\n    bufin = (const unsigned char *) bufcoded;\n    while (pr2six[*(bufin++)] <= 63);\n    nprbytes = (bufin - (const unsigned char *) bufcoded) - 1;\n    nbytesdecoded = ((nprbytes + 3) / 4) * 3;\n\n    bufout = (unsigned char *) bufplain;\n    bufin = (const unsigned char *) bufcoded;\n\n    while (nprbytes > 4) {\n        *(bufout++) =\n                (unsigned char) (pr2six[*bufin] << 2 | pr2six[bufin[1]] >> 4);\n        *(bufout++) =\n                (unsigned char) (pr2six[bufin[1]] << 4 | pr2six[bufin[2]] >> 2);\n        *(bufout++) =\n                (unsigned char) (pr2six[bufin[2]] << 6 | pr2six[bufin[3]]);\n        bufin += 4;\n        nprbytes -= 4;\n    }\n\n    /* Note: (nprbytes == 1) would be an error, so just ingore that case */\n    if (nprbytes > 1) {\n        *(bufout++) =\n                (unsigned char) (pr2six[*bufin] << 2 | pr2six[bufin[1]] >> 4);\n    }\n    if (nprbytes > 2) {\n        *(bufout++) =\n                (unsigned char) (pr2six[bufin[1]] << 4 | pr2six[bufin[2]] >> 2);\n    }\n    if (nprbytes > 3) {\n        *(bufout++) =\n                (unsigned char) (pr2six[bufin[2]] << 6 | pr2six[bufin[3]]);\n    }\n\n    *(bufout++) = '\\0';\n    nbytesdecoded -= (4 - nprbytes) & 3;\n    return nbytesdecoded;\n}\n\nstatic const char basis_64[] =\n        \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\nint Base64encode_len(int len) {\n    return ((len + 2) / 3 * 4) + 1;\n}\n\nint Base64encode(char *encoded, const char *string, int len) {\n    int i;\n    char *p;\n\n    p = encoded;\n    for (i = 0; i < len - 2; i += 3) {\n        *p++ = basis_64[(string[i] >> 2) & 0x3F];\n        *p++ = basis_64[((string[i] & 0x3) << 4) | ((string[i + 1] & 0xF0) >> 4)];\n        *p++ = basis_64[((string[i + 1] & 0xF) << 2) | ((string[i + 2] & 0xC0) >> 6)];\n        *p++ = basis_64[string[i + 2] & 0x3F];\n    }\n    if (i < len) {\n        *p++ = basis_64[(string[i] >> 2) & 0x3F];\n        if (i == (len - 1)) {\n            *p++ = basis_64[((string[i] & 0x3) << 4)];\n            *p++ = '=';\n        }\n        else {\n            *p++ = basis_64[((string[i] & 0x3) << 4) | ((string[i + 1] & 0xF0) >> 4)];\n            *p++ = basis_64[((string[i + 1] & 0xF) << 2)];\n        }\n        *p++ = '=';\n    }\n\n    *p++ = '\\0';\n    return p - encoded;\n}\n\nnamespace Base64 {\nstd::string encode(const std::string& s) {\n    // make C char* buffer to store the encoded output (for compatibility)\n    int len = Base64encode_len(s.length());\n    char* buf = (char*) malloc(len);\n    memset(buf, 0, len);\n    Base64encode(buf, s.c_str(), s.length());\n    \n    // convert back into a C++ string, and return it\n    // (unlike below in decode(), I can just directly construct the C++\n    // string from the C one, because the Base64-encoded C string will\n    // not contain any intermediate null bytes by definition)\n    std::string result(buf);\n    free(buf);\n    return result;\n}\n\nstd::string decode(const std::string& s) {\n    // convert into C string and decode into that char* buffer\n    const char* cstr = s.c_str();\n    int len = Base64decode_len(cstr);\n    char* buf = (char*) malloc(len);\n    memset(buf, 0, len);\n    Base64decode(buf, cstr);\n    \n    // read bytes from that buffer into a C++ string\n    // (cannot just construct/assign C++ string from C char* buffer,\n    // because that will terminate the string at the first null \\0 byte)\n    std::ostringstream out;\n    for (int i = 0; i < len; i++) {\n        out << buf[i];\n    }\n    std::string result = out.str();\n    \n    free(buf);\n    return result;\n}\n\n} // namespace Base64\n\n/////////////////////// END code extracted from StanfordCPPLib/io/base64.cpp ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/io/bitstream.cpp ///////////////////////\n/*\n * File: bitstream.cpp\n * -------------------\n * This file contains the implementation of ibitstream and obitstream classes.\n * These classes are patterned after (and, in fact, inherit from) the standard\n * ifstream and ofstream classes.  Please see bitstream.h for information about\n * how a client properly uses these classes.\n *\n * @author Keith Schwarz, Eric Roberts, Marty Stepp\n * @version 2019/04/20\n * - added toPrintable(string)\n * @version 2016/11/12\n * - made toPrintable non-static and visible\n * @version 2014/10/08\n * - removed 'using namespace' statement\n * 2014/01/23\n * - added slightly more descriptive error messages e.g. in writeBit\n * - whitespace reformatting\n * Previously last modified on Mon May 21 19:50:00 PST 2012 by Keith Schwarz\n */\n\n#define INTERNAL_INCLUDE 1\n\n#include <iostream>\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\nstatic const int NUM_BITS_IN_BYTE = 8;\n\ninline int GetNthBit(int n, int fromByte) {\n    return ((fromByte & (1 << n)) != 0);\n}\n\ninline void SetNthBit(int n, int & inByte) {\n    inByte |= (1 << n);\n}\n\nstd::string toPrintable(int ch) {\n    if (ch == '\\n') {\n        return \"'\\\\n'\";\n    } else if (ch == '\\t') {\n        return \"'\\\\t'\";\n    } else if (ch == '\\r') {\n        return \"'\\\\r'\";\n    } else if (ch == '\\f') {\n        return \"'\\\\f'\";\n    } else if (ch == '\\b') {\n        return \"'\\\\b'\";\n    } else if (ch == '\\0') {\n        return \"'\\\\0'\";\n    } else if (ch == ' ') {\n        return \"' '\";\n    } else if (ch == (int) PSEUDO_EOF) {\n        return \"EOF\";\n    } else if (ch == (int) NOT_A_CHAR) {\n        return \"NONE\";\n    } else if (!isgraph(ch)) {\n        return \"???\";\n    } else {\n        return std::string(\"'\") + (char) ch + std::string(\"'\");\n    }\n}\n\nstd::string toPrintable(const std::string& s) {\n    std::ostringstream out;\n    for (char ch : s) {\n        if (ch == '\\n') {\n            out << \"\\\\n\";\n        } else if (ch == '\\t') {\n            out << \"\\\\t\";\n        } else if (ch == '\\r') {\n            out << \"\\\\r\";\n        } else if (ch == '\\f') {\n            out << \"\\\\f\";\n        } else if (ch == '\\b') {\n            out << \"\\\\b\";\n        } else if (ch == '\\0') {\n            out << \"\\\\0\";\n        } else if (ch == ' ') {\n            out << ' ';\n        } else if (isgraph(ch)) {\n            out << ch;\n        } else {\n            out << '\\\\';\n            out << (static_cast<int>(ch & 0xff));\n        }\n    }\n    return out.str();\n}\n\n/* Constructor ibitstream::ibitstream\n * ----------------------------------\n * Each ibitstream tracks 3 integers as private data.\n * \"lastTell\" is streampos of the last byte that was read (this is used\n * to detect when other non-readBit activity has changed the tell)\n * \"curByte\" contains contents of byte currently being read\n * \"pos\" is the bit position within curByte that is next to read\n * We set initial state for lastTell and curByte to 0, then pos is\n * set at 8 so that next readBit will trigger a fresh read.\n */\nibitstream::ibitstream() : std::istream(nullptr), lastTell(0), curByte(0), pos(NUM_BITS_IN_BYTE) {\n    this->fake = false;\n}\n\n/* Member function ibitstream::readBit\n * -----------------------------------\n * If bits remain in curByte, retrieve next and increment pos\n * Else if end of curByte (or some other read happened), then read next byte\n * and start reading from bit position 0 of that byte.\n * If read byte from file at EOF, return EOF.\n */\nint ibitstream::readBit() {\n    if (!is_open()) {\n        error(\"ibitstream::readBit: Cannot read a bit from a stream that is not open.\");\n    }\n\n    if (this->fake) {\n        int bit = get();\n        if (bit == 0 || bit == '0') {\n            return 0;\n        } else {\n            return 1;\n        }\n    } else {\n        // if just finished bits from curByte or if data read from stream after last readBit()\n        if (lastTell != tellg() || pos == NUM_BITS_IN_BYTE) {\n            if ((curByte = get()) == EOF) {\n                // read next single byte from file\n                return EOF;\n            }\n            pos = 0; // start reading from first bit of new byte\n            lastTell = tellg();\n        }\n        int result = GetNthBit(pos, curByte);\n        pos++;   // advance bit position for next call to readBit\n        return result;\n    }\n}\n\n/* Member function ibitstream::rewind\n * ----------------------------------\n * Simply seeks back to beginning of file, so reading begins again\n * from start.\n */\nvoid ibitstream::rewind() {\n    if (!is_open()) {\n        error(\"ibitstream::rewind: Cannot rewind stream that is not open.\");\n    }\n    clear();\n    seekg(0, std::ios::beg);\n}\n\nvoid ibitstream::setFake(bool fake) {\n    this->fake = fake;\n}\n\n/* Member function ibitstream::size\n * --------------------------------\n * Seek to file end and use tell to retrieve position.\n * In order to not disrupt reading, we also record cur streampos and\n * re-seek to there before returning.\n */\nlong ibitstream::size() {\n    if (!is_open()) {\n        error(\"ibitstream::size: Cannot get size of stream which is not open.\");\n    }\n    clear();                    // clear any error state\n    streampos cur = tellg();    // save current streampos\n    seekg(0, std::ios::end);    // seek to end\n    streampos end = tellg();    // get offset\n    seekg(cur);                 // seek back to original pos\n    return long(end);\n}\n\n/* Member function ibitstream::is_open\n * -----------------------------------\n * Default implementation of is_open has the stream always\n * open.  Subclasses can customize this if they'd like.\n */\nbool ibitstream::is_open() {\n    return true;\n}\n\n/* Constructor obitstream::obitstream\n * ----------------------------------\n * Each obitstream tracks 3 integers as private data.\n * \"lastTell\" is streampos of the last byte that was written (this is used\n * to detect when other non-writeBit activity has changed the tell)\n * \"curByte\" contains contents of byte currently being written\n * \"pos\" is the bit position within curByte that is next to write\n * We set initial state for lastTell and curByte to 0, then pos is\n * set at 8 so that next writeBit will start a new byte.\n */\nobitstream::obitstream() : std::ostream(nullptr), lastTell(0), curByte(0), pos(NUM_BITS_IN_BYTE) {\n    this->fake = false;\n}\n\n/* Member function obitstream::writeBit\n * ------------------------------------\n * If bits remain to be written in curByte, add bit into byte and increment pos\n * Else if end of curByte (or some other write happened), then start a fresh\n * byte at position 0.\n * We write the byte out for each bit (backing up to overwrite as needed), rather\n * than waiting for 8 bits.  This is because the client might make\n * 3 writeBit calls and then start using << so we can't wait til full-byte\n * boundary to flush any partial-byte bits.\n */\nvoid obitstream::writeBit(int bit) {\n    if (bit != 0 && bit != 1) {\n        error(std::string(\"obitstream::writeBit: must pass an integer argument of 0 or 1. You passed the integer \")\n              + toPrintable(bit) + \" (\" + std::to_string(bit) + \").\");\n    }\n    if (!is_open()) {\n        error(\"obitstream::writeBit: stream is not open\");\n    }\n\n    if (this->fake) {\n        put(bit == 1 ? '1' : '0');\n    } else {\n        // if just filled curByte or if data written to stream after last writeBit()\n        if (lastTell != tellp() || pos == NUM_BITS_IN_BYTE) {\n            curByte = 0;   // zero out byte for next writes\n            pos = 0;       // start writing to first bit of new byte\n        }\n\n        if (bit) {\n            // only need to change if bit needs to be 1 (byte starts already zeroed)\n            SetNthBit(pos, curByte);\n        }\n\n        if (pos == 0 || bit) {   // only write if first bit in byte or changing 0 to 1\n            if (pos != 0) {\n                seekp(-1, std::ios::cur);   // back up to overwite if pos > 0\n            }\n            put(curByte);\n        }\n\n        pos++; // advance to next bit position for next write\n        lastTell = tellp();\n    }\n}\n\nvoid obitstream::setFake(bool fake) {\n    this->fake = fake;\n}\n\n/* Member function obitstream::size\n * --------------------------------\n * Seek to file end and use tell to retrieve position.\n * In order to not disrupt writing, we also record cur streampos and\n * re-seek to there before returning.\n */\nlong obitstream::size() {\n    if (!is_open()) {\n        error(\"obitstream::size: stream is not open\");\n    }\n    clear();                    // clear any error state\n    streampos cur = tellp();    // save current streampos\n    seekp(0, std::ios::end);    // seek to end\n    streampos end = tellp();    // get offset\n    seekp(cur);                 // seek back to original pos\n    return long(end);\n}\n\n/* Member function obitstream::is_open\n * -----------------------------------\n * Default implementation of is_open has the stream always\n * open.  Subclasses can customize this if they'd like.\n */\nbool obitstream::is_open() {\n    return true;\n}\n\n/* Constructor ifbitstream::ifbitstream\n * ------------------------------------\n * Wires up the stream class so that it knows to read data\n * from disk.\n */\nifbitstream::ifbitstream() {\n    init(&fb);\n}\n\n/* Constructor ifbitstream::ifbitstream\n * ------------------------------------\n * Wires up the stream class so that it knows to read data\n * from disk, then opens the given file.\n */\nifbitstream::ifbitstream(const char* filename) {\n    init(&fb);\n    open(filename);\n}\nifbitstream::ifbitstream(const std::string& filename) {\n    init(&fb);\n    open(filename);\n}\n\n/* Member function ifbitstream::open\n * ---------------------------------\n * Attempts to open the specified file, failing if unable\n * to do so.\n */\nvoid ifbitstream::open(const char* filename) {\n    if (!fb.open(filename, std::ios::in | std::ios::binary)) {\n        setstate(std::ios::failbit);\n    }\n}\n\nvoid ifbitstream::open(const std::string& filename) {\n    open(filename.c_str());\n}\n\n/* Member function ifbitstream::is_open\n * ------------------------------------\n * Determines whether the file stream is open.\n */\nbool ifbitstream::is_open() {\n    return fb.is_open();\n}\n\n/* Member function ifbitstream::close\n * ----------------------------------\n * Closes the file stream, if one is open.\n */\nvoid ifbitstream::close() {\n    if (!fb.close()) {\n        setstate(std::ios::failbit);\n    }\n}\n\n/* Constructor ofbitstream::ofbitstream\n * ------------------------------------\n * Wires up the stream class so that it knows to write data\n * to disk.\n */\nofbitstream::ofbitstream() {\n    init(&fb);\n}\n\n/* Constructor ofbitstream::ofbitstream\n * ------------------------------------\n * Wires up the stream class so that it knows to write data\n * to disk, then opens the given file.\n */\nofbitstream::ofbitstream(const char* filename) {\n    init(&fb);\n    open(filename);\n}\n\nofbitstream::ofbitstream(const std::string& filename) {\n    init(&fb);\n    open(filename);\n}\n\n/* Member function ofbitstream::open\n * ---------------------------------\n * Attempts to open the specified file, failing if unable\n * to do so.\n */\nvoid ofbitstream::open(const char* filename) {\n    // Confirm we aren't about to do something that could potentially be a\n    // Very Bad Idea.\n    if (endsWith(filename, \".cpp\") || endsWith(filename, \".h\") ||\n            endsWith(filename, \".hh\") || endsWith(filename, \".cc\")) {\n        setstate(std::ios::failbit);\n        error(std::string(\"ofbitstream::open: It is potentially dangerous to write to file \")\n              + filename + \", because that might be your own source code.  \"\n              + \"We are explicitly disallowing this operation.  Please choose a \"\n              + \"different filename.\");\n    } else {\n        if (!fb.open(filename, std::ios::out | std::ios::binary)) {\n            setstate(std::ios::failbit);\n        }\n    }\n}\nvoid ofbitstream::open(const std::string& filename) {\n    open(filename.c_str());\n}\n\n/* Member function ofbitstream::is_open\n * ------------------------------------\n * Determines whether the file stream is open.\n */\nbool ofbitstream::is_open() {\n    return fb.is_open();\n}\n\n/* Member function ofbitstream::close\n * ----------------------------------\n * Closes the given file.\n */\nvoid ofbitstream::close() {\n    if (!fb.close()) {\n        setstate(std::ios::failbit);\n    }\n}\n\n/* Constructor istringbitstream::istringbitstream\n * ----------------------------------------------\n * Sets the stream to use the string buffer, then sets\n * the initial string to the specified value.\n */\nistringbitstream::istringbitstream(const std::string& s) {\n    init(&sb);\n    sb.str(s);\n}\n\n/* Member function istringbitstream::str\n * -------------------------------------\n * Sets the underlying string in the buffer to the\n * specified string.\n */\nvoid istringbitstream::str(const std::string& s) {\n    sb.str(s);\n}\n\n/* Member function ostringbitstream::ostringbitstream\n * --------------------------------------------------\n * Sets the stream to use the string buffer.\n */\nostringbitstream::ostringbitstream() {\n    init(&sb);\n}\n\n/* Member function ostringbitstream::str\n * -------------------------------------\n * Retrives the underlying string data.\n */\nstd::string ostringbitstream::str() {\n    return sb.str();\n}\n\n/////////////////////// END code extracted from StanfordCPPLib/io/bitstream.cpp ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/io/filelib.cpp ///////////////////////\n/*\n * File: filelib.cpp\n * -----------------\n * This file implements the filelib.h interface.\n * Platform-dependent functions are handled through filelib_* functions\n * defined in filelibunix.cpp and filelibwindows.cpp.\n * \n * @version 2016/11/20\n * - small bug fix in readEntireStream method (failed for non-text files)\n * @version 2016/11/12\n * - added fileSize, readEntireStream\n * @version 2016/08/12\n * - added second overload of openFileDialog that accepts path parameter\n * @version 2015/07/05\n * - removed static global Platform variable, replaced by getPlatform as needed\n * - moved appendSpace function to simpio\n * @version 2015/04/12\n * - added promptUserForFile overload without stream parameter\n * @version 2014/10/19\n * - alphabetized function declarations\n * - converted many funcs to take const string& rather than string for efficiency\n * - added listDirectory overload that returns a Vector\n * @version 2014/10/08\n * - removed 'using namespace' statement\n */\n\n#define INTERNAL_INCLUDE 1\n\n#include <algorithm>\n#include <cctype>\n#include <cstdio>\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\n/* Prototypes */\n\nstatic void splitPath(const std::string& path, Vector<std::string> list);\nstatic bool recursiveMatch(const std::string& str, int sx, const std::string& pattern, int px);\n\n/* Implementations */\n\nvoid createDirectory(const std::string& path) {\n    return platform::filelib_createDirectory(expandPathname(path));\n}\n\nvoid createDirectoryPath(const std::string& path) {\n    size_t cp = 0;\n    if (path == \"\") return;\n    std::string expandedPath = expandPathname(path);\n    char sep = getDirectoryPathSeparator()[0];\n    if (expandedPath.substr(1, 2) == \":\\\\\") { // Windows drive letter followed by ':\\'\n        cp = 2;\n    }\n    while ((cp = expandedPath.find(sep, cp + 1)) != std::string::npos) {\n       createDirectory(expandedPath.substr(0, cp));\n    }\n    createDirectory(expandedPath);\n}\n\nstd::string defaultExtension(const std::string& filename, const std::string& ext) {\n    std::string extCopy = ext;\n    bool force = (extCopy[0] == '*');\n    if (force) extCopy = extCopy.substr(1);\n    int dot = -1;\n    int len = filename.length();\n    for (int i = 0; i < len; i++) {\n        char ch = filename[i];\n        if (ch == '.') dot = i;\n        if (ch == '/' || ch == '\\\\') dot = -1;\n    }\n    if (dot == -1) {\n        force = true;\n        dot = len;\n    }\n    if (force) {\n        return filename.substr(0, dot) + extCopy;\n    } else {\n        return filename;\n    }\n}\n\nvoid deleteFile(const std::string& filename) {\n    platform::filelib_deleteFile(expandPathname(filename));\n}\n\nstd::string expandPathname(const std::string& filename) {\n    return platform::filelib_expandPathname(filename);\n}\n\nbool fileExists(const std::string& filename) {\n    return platform::filelib_fileExists(filename);\n}\n\nint fileSize(const std::string& filename) {\n    std::ifstream input;\n    input.open(filename.c_str(), std::ifstream::binary);\n    if (input.fail()) {\n        return -1;\n    } else {\n        input.seekg(0, std::ifstream::end);\n        return (int) input.tellg();\n    }\n}\n\nstd::string findOnPath(const std::string& path, const std::string& filename) {\n    std::ifstream stream;\n    std::string result = openOnPath(stream, path, filename);\n    if (result != \"\") stream.close();\n    return result;\n}\n\nstd::string getAbsolutePath(const std::string& path) {\n    return platform::filelib_getAbsolutePath(path);\n}\n\nstd::string getCurrentDirectory() {\n    return platform::filelib_getCurrentDirectory();\n}\n\nstd::string getDirectoryPathSeparator() {\n    return platform::filelib_getDirectoryPathSeparator();\n}\n\nstd::string getExtension(const std::string& filename) {\n    int dot = -1;\n    int len = filename.length();\n    for (int i = 0; i < len; i++) {\n        char ch = filename[i];\n        if (ch == '.') dot = i;\n        if (ch == '/' || ch == '\\\\') dot = -1;\n    }\n    if (dot == -1) {\n        return \"\";\n    } else {\n        return filename.substr(dot);\n    }\n}\n\nstd::string getHead(const std::string& filename) {\n    size_t slash = std::string::npos;\n    size_t len = filename.length();\n    for (size_t i = 0; i < len; i++) {\n        char ch = filename[i];\n        if (ch == '/' || ch == '\\\\') slash = i;\n    }\n    if (slash == std::string::npos) {\n        return \"\";\n    } else if (slash == 0) {\n        return \"/\";\n    } else {\n        return filename.substr(0, slash);\n    }\n}\n\nstd::string getRoot(const std::string& filename) {\n    int dot = -1;\n    int len = filename.length();\n    for (int i = 0; i < len; i++) {\n        char ch = filename[i];\n        if (ch == '.') dot = i;\n        if (ch == '/' || ch == '\\\\') dot = -1;\n    }\n    if (dot == -1) {\n        return filename;\n    } else {\n        return filename.substr(0, dot);\n    }\n}\n\nstd::string getSearchPathSeparator() {\n    return platform::filelib_getSearchPathSeparator();\n}\n\nstd::string getTail(const std::string& filename) {\n    size_t slash = std::string::npos;\n    size_t len = filename.length();\n    for (size_t i = 0; i < len; i++) {\n        char ch = filename[i];\n        if (ch == '/' || ch == '\\\\') slash = i;\n    }\n    if (slash == std::string::npos) {\n        return filename;\n    } else {\n        return filename.substr(slash + 1);\n    }\n}\n\nstd::string getTempDirectory() {\n    return platform::filelib_getTempDirectory();\n}\n\nbool isDirectory(const std::string& filename) {\n    return platform::filelib_isDirectory(expandPathname(filename));\n}\n\nbool isFile(const std::string& filename) {\n    return platform::filelib_isFile(expandPathname(filename));\n}\n\nbool isSymbolicLink(const std::string& filename) {\n    return platform::filelib_isSymbolicLink(filename);\n}\n\nvoid listDirectory(const std::string& path, Vector<std::string>& list) {\n    list.clear();\n    return platform::filelib_listDirectory(expandPathname(path), list);\n}\n\nVector<std::string> listDirectory(const std::string& path) {\n    Vector<std::string> vec;\n    listDirectory(path, vec);\n    return vec;\n}\n\nbool matchFilenamePattern(const std::string& filename, const std::string& pattern) {\n    return recursiveMatch(filename, 0, pattern, 0);\n}\n\nbool openFile(std::ifstream& stream, const std::string& filename) {\n    stream.clear();\n    stream.open(expandPathname(filename).c_str());\n    return !stream.fail();\n}\n\nbool openFile(std::ofstream& stream, const std::string& filename) {\n    stream.clear();\n    stream.open(expandPathname(filename).c_str());\n    return !stream.fail();\n}\n\nstd::string openFileDialog(std::ifstream& stream) {\n    return openFileDialog(stream, \"Open File\", \"\");\n}\n\nstd::string openFileDialog(std::ifstream& stream,\n                           const std::string& title) {\n    return openFileDialog(stream, title, \"\");\n}\n\nstd::string openFileDialog(std::ifstream& stream,\n                           const std::string& title,\n                           const std::string& path) {\n    std::string filename = platform::file_openFileDialog(title, \"load\", path);\n    if (filename == \"\") return \"\";\n    stream.open(filename.c_str());\n    return (stream.fail()) ? \"\" : filename;\n}\n\nstd::string openFileDialog(const std::string& title,\n                           const std::string& path) {\n    std::string filename = platform::file_openFileDialog(title, \"load\", path);\n    if (filename == \"\") return \"\";\n    return (fileExists(filename)) ? filename : \"\";\n}\n\nstd::string openFileDialog(std::ofstream& stream) {\n    return openFileDialog(stream, \"Open File\", \"\");\n}\n\nstd::string openFileDialog(std::ofstream& stream,\n                           const std::string& title) {\n    return openFileDialog(stream, title, \"\");\n}\n\nstd::string openFileDialog(std::ofstream& stream,\n                           const std::string& title,\n                           const std::string& path) {\n    std::string filename = platform::file_openFileDialog(title, \"save\", path);\n    if (filename == \"\") return \"\";\n    stream.open(filename.c_str());\n    return (stream.fail()) ? \"\" : filename;\n}\n\nstd::string openOnPath(std::ifstream& stream,\n                       const std::string& path,\n                       const std::string& filename) {\n    Vector<std::string> paths;\n    splitPath(path, paths);\n    for (std::string dir : paths) {\n        std::string pathname = dir + \"/\" + filename;\n        if (openFile(stream, pathname)) return pathname;\n    }\n    return \"\";\n}\n\nstd::string openOnPath(std::ofstream& stream,\n                       const std::string& path,\n                       const std::string& filename) {\n    Vector<std::string> paths;\n    splitPath(path, paths);\n    for (std::string dir : paths) {\n        std::string pathname = dir + \"/\" + filename;\n        if (openFile(stream, pathname)) return pathname;\n    }\n    return \"\";\n}\n\nstd::string promptUserForFile(std::ifstream& stream,\n                              const std::string& prompt,\n                              const std::string& reprompt) {\n    std::string promptCopy = prompt;\n    std::string repromptCopy = reprompt;\n    if (reprompt == \"\") {\n        repromptCopy = \"Unable to open that file.  Try again.\";\n    }\n    appendSpace(promptCopy);\n    while (true) {\n        std::cout << promptCopy;\n        std::string filename;\n        getline(std::cin, filename);\n        if (!filename.empty()) {\n            openFile(stream, filename);\n            if (!stream.fail()) return filename;\n            stream.clear();\n        }\n        std::cout << repromptCopy << std::endl;\n        if (promptCopy == \"\") promptCopy = \"Input file: \";\n    }\n}\n\nstd::string promptUserForFile(std::ofstream& stream,\n                              const std::string& prompt,\n                              const std::string& reprompt) {\n    std::string promptCopy = prompt;\n    std::string repromptCopy = reprompt;\n    if (reprompt == \"\") {\n        repromptCopy = \"Unable to open that file.  Try again.\";\n    }\n    appendSpace(promptCopy);\n    while (true) {\n        std::cout << promptCopy;\n        std::string filename;\n        getline(std::cin, filename);\n        if (!filename.empty()) {\n            openFile(stream, filename);\n            if (!stream.fail()) return filename;\n            stream.clear();\n        }\n        std::cout << repromptCopy << std::endl;\n        if (promptCopy == \"\") promptCopy = \"Output file: \";\n    }\n}\n\nstd::string promptUserForFile(const std::string& prompt,\n                              const std::string& reprompt) {\n    std::string promptCopy = prompt;\n    std::string repromptCopy = reprompt;\n    if (reprompt == \"\") {\n        repromptCopy = \"Unable to open that file.  Try again.\";\n    }\n    appendSpace(promptCopy);\n    while (true) {\n        std::cout << promptCopy;\n        std::string filename;\n        getline(std::cin, filename);\n        if (!filename.empty()) {\n            std::ifstream stream;\n            openFile(stream, filename);\n            if (!stream.fail()) {\n                stream.close();\n                return filename;\n            }\n        }\n        std::cout << repromptCopy << std::endl;\n        if (promptCopy == \"\") promptCopy = \"Input file: \";\n    }\n}\n\nvoid readEntireFile(std::istream& is, Vector<std::string>& lines) {\n    lines.clear();\n    while (true) {\n        std::string line;\n        getline(is, line);\n        if (is.fail()) break;\n        lines.add(line);\n    }\n}\n\nstd::string readEntireFile(const std::string& filename) {\n    std::string out;\n    if (readEntireFile(filename, out)) {\n        return out;\n    } else {\n        error(std::string(\"input file not found or cannot be opened: \") + filename);\n        return \"\";\n    }\n}\n\nbool readEntireFile(const std::string& filename, std::string& out) {\n    std::ifstream input;\n    input.open(filename.c_str());\n    if (input.fail()) {\n        return false;\n    }\n    readEntireStream(input, out);\n    input.close();\n    return true;\n}\n\nstd::string readEntireStream(std::istream& input) {\n    std::string out;\n    readEntireStream(input, out);\n    return out;\n}\n\nvoid readEntireStream(std::istream& input, std::string& out) {\n    std::ostringstream output;\n    while (true) {\n        int ch = input.get();\n        if (input.fail()) {\n            break;\n        }\n        output.put(ch);\n    }\n    out = output.str();\n}\n\nvoid renameFile(const std::string& oldname, const std::string& newname) {\n    std::string oldExpand = expandPathname(oldname);\n    std::string newExpand = expandPathname(newname);\n    rename(oldExpand.c_str(), newExpand.c_str());\n}\n\nvoid rewindStream(std::istream& input) {\n    input.clear();                  // removes any current eof/failure flags\n    input.seekg(0, std::ios::beg);  // tells the stream to seek back to the beginning\n}\n\nvoid setCurrentDirectory(const std::string& path) {\n    return platform::filelib_setCurrentDirectory(path);\n}\n\nbool writeEntireFile(const std::string& filename,\n                     const std::string& text,\n                     bool append) {\n    std::ofstream output;\n    if (append) {\n        output.open(filename.c_str(), std::ios_base::out | std::ios_base::app);\n    } else {\n        output.open(filename.c_str());\n    }\n    if (output.fail()) {\n        return false;\n    }\n    output << text;\n    output.close();\n    return !output.fail();\n}\n\n/* Private functions */\n\nstatic void splitPath(const std::string& path, Vector<std::string> list) {\n    char sep = (path.find(';') == std::string::npos) ? ':' : ';';\n    std::string pathCopy = path + sep;\n    size_t start = 0;\n    while (true) {\n        size_t finish = pathCopy.find(sep, start);\n        if (finish == std::string::npos) break;\n        if (finish > start + 1) {\n            list.add(pathCopy.substr(start, finish - start - 1));\n        }\n        start = finish + 1;\n    }\n}\n\nstatic bool recursiveMatch(const std::string& str, int sx, const std::string& pattern, int px) {\n    int slen = str.length();\n    int plen = pattern.length();\n    if (px == plen) return (sx == slen);\n    char pch = pattern[px];\n    if (pch == '*') {\n        for (int i = sx; i <= slen; i++) {\n            if (recursiveMatch(str, i, pattern, px + 1)) return true;\n        }\n        return false;\n    }\n    if (sx == slen) return false;\n    char sch = str[sx];\n    if (pch == '[') {\n        bool match = false;\n        bool invert = false;\n        px++;\n        if (px == plen) {\n            error(\"matchFilenamePattern: missing ]\");\n        }\n        if (pattern[px] == '^') {\n            px++;\n            invert = true;\n        }\n        while (px < plen && pattern[px] != ']') {\n            if (px + 2 < plen && pattern[px + 1] == '-') {\n                match |= (sch >= pattern[px] && sch <= pattern[px + 2]);\n                px += 3;\n            } else {\n                match |= (sch == pattern[px]);\n                px++;\n            }\n        }\n        if (px == plen) {\n            error(\"matchFilenamePattern: missing ]\");\n        }\n        if (match == invert) return false;\n    } else if (pch != '?') {\n        if (pch != sch) return false;\n    }\n    return recursiveMatch(str, sx + 1, pattern, px + 1);\n}\n\n/////////////////////// END code extracted from StanfordCPPLib/io/filelib.cpp ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/private/filelibunix.cpp ///////////////////////\n/*\n * File: filelibunix.cpp\n * ---------------------\n * This file contains Unix implementations of filelib.h primitives.\n * This code used to live in platform.cpp before the Java back-end was retired.\n *\n * @version 2018/10/23\n * - added getAbsolutePath\n */\n\n#define INTERNAL_INCLUDE 1\n\n\n// define all of the following only on non-Windows OS\n// (see filelibwindows.cpp for Windows versions)\n#ifndef _WIN32\n#include <sys/types.h>\n#include <sys/stat.h>\n#include <sys/resource.h>\n#include <dirent.h>\n#include <errno.h>\n#include <pwd.h>\n#include <stdint.h>\n#include <unistd.h>\n#include <cstdio>\n#include <cstdlib>\n#include <cstring>\n#include <fstream>\n#include <iomanip>\n#include <iostream>\n#include <ios>\n#include <string>\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\nnamespace platform {\n\nvoid filelib_createDirectory(const std::string& path) {\n    std::string pathStr = path;\n    if (endsWith(path, \"/\")) {\n        pathStr = path.substr(0, path.length() - 1);\n    }\n    if (mkdir(pathStr.c_str(), 0777) != 0) {\n        if (errno == EEXIST && filelib_isDirectory(pathStr)) {\n            return;\n        }\n        std::string msg = \"createDirectory: \";\n        std::string err = std::string(strerror(errno));\n        error(msg + err);\n    }\n}\n\nvoid filelib_deleteFile(const std::string& path) {\n    remove(path.c_str());\n}\n\nstd::string filelib_expandPathname(const std::string& filename) {\n    if (filename == \"\") {\n        return \"\";\n    }\n    int len = filename.length();\n    std::string expanded = filename;\n    if (expanded[0] == '~') {\n        int spos = 1;\n        while (spos < len && expanded[spos] != '\\\\' && expanded[spos] != '/') {\n            spos++;\n        }\n        char *homedir = nullptr;\n        if (spos == 1) {\n            homedir = getenv(\"HOME\");\n            if (!homedir) {\n                homedir = getpwuid(getuid())->pw_dir;\n            }\n        } else {\n            struct passwd *pw = getpwnam(expanded.substr(1, spos - 1).c_str());\n            if (!pw) {\n                error(\"expandPathname: No such user\");\n            } else {\n                homedir = pw->pw_dir;\n            }\n        }\n        expanded = std::string(homedir) + expanded.substr(spos);\n        len = expanded.length();\n    }\n    for (int i = 0; i < len; i++) {\n        if (expanded[i] == '\\\\') {\n            expanded[i] = '/';\n        }\n    }\n    return expanded;\n}\n\nbool filelib_fileExists(const std::string& filename) {\n    struct stat fileInfo;\n    return stat(filename.c_str(), &fileInfo) == 0;\n}\n\nstd::string filelib_getAbsolutePath(const std::string& path) {\n    char realpathOut[4096];\n    realpath(path.c_str(), realpathOut);\n    std::string absPath(realpathOut);\n    return absPath;\n}\n\nstd::string filelib_getCurrentDirectory() {\n    char currentDirBuf[4096] = {'\\0'};\n    char* cwd = getcwd(currentDirBuf, 4096 - 1);\n    std::string result;\n    if (cwd) {\n        result = std::string(cwd);\n    } else {\n        error(\"getCurrentDirectory: \" + std::string(strerror(errno)));\n    }\n    return result;\n}\n\nstd::string filelib_getDirectoryPathSeparator() {\n    return \"/\";\n}\n\nstd::string filelib_getSearchPathSeparator() {\n    return \":\";\n}\n\n// http://stackoverflow.com/questions/8087805/\n// how-to-get-system-or-user-temp-folder-in-unix-and-windows\nstd::string filelib_getTempDirectory() {\n    char* dir = getenv(\"TMPDIR\");\n    if (!dir) dir = getenv(\"TMP\");\n    if (!dir) dir = getenv(\"TEMP\");\n    if (!dir) dir = getenv(\"TEMPDIR\");\n    if (!dir) return \"/tmp\";\n    return dir;\n}\n\nbool filelib_isDirectory(const std::string& filename) {\n    struct stat fileInfo;\n    if (stat(filename.c_str(), &fileInfo) != 0) {\n        return false;\n    }\n    return S_ISDIR(fileInfo.st_mode) != 0;\n}\n\nbool filelib_isFile(const std::string& filename) {\n    struct stat fileInfo;\n    if (stat(filename.c_str(), &fileInfo) != 0) {\n        return false;\n    }\n    return S_ISREG(fileInfo.st_mode) != 0;\n}\n\nbool filelib_isSymbolicLink(const std::string& filename) {\n    struct stat fileInfo;\n    if (lstat(filename.c_str(), &fileInfo) != 0) {\n        return false;\n    }\n    return S_ISLNK(fileInfo.st_mode) != 0;\n}\n\nvoid filelib_listDirectory(const std::string& path, Vector<std::string>& list) {\n    DIR* dir = opendir(path.empty() ? \".\" : path.c_str());\n    if (!dir) {\n        error(std::string(\"listDirectory: Can't open \\\"\") + path + \"\\\"\");\n    }\n    list.clear();\n    while (true) {\n        struct dirent* ep = readdir(dir);\n        if (!ep) {\n            break;\n        }\n        std::string name = std::string(ep->d_name);\n        if (name != \".\" && name != \"..\") {\n            list.push_back(name);\n        }\n    }\n    closedir(dir);\n    sort(list.begin(), list.end());\n}\n\nstd::string file_openFileDialog(const std::string& /*title*/,\n                                const std::string& /*mode*/,\n                                const std::string& /*path*/) {\n    // TODO\n    return \"\";\n}\n\nvoid filelib_setCurrentDirectory(const std::string& path) {\n    if (chdir(path.c_str()) != 0) {\n        std::string msg = \"setCurrentDirectory: \";\n        std::string err = std::string(strerror(errno));\n        error(msg + err);\n    }\n}\n\n} // namespace platform\n\n#endif // _WIN32\n\n/////////////////////// END code extracted from StanfordCPPLib/private/filelibunix.cpp ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/io/simpio.cpp ///////////////////////\n/*\n * File: simpio.cpp\n * ----------------\n * This file implements the simpio.h interface.\n * \n * @version 2016/09/29\n * - added getDouble method\n * @version 2015/07/05\n * - increased visibility of appendSpace function used by various IO\n *   prompting functions (no longer static)\n * @version 2014/10/19\n * - alphabetized functions\n * - converted many funcs to take const string& rather than string for efficiency\n * @version 2014/10/08\n * - removed 'using namespace' statement\n */\n\n#define INTERNAL_INCLUDE 1\n\n#include <cctype>\n#include <fstream>\n#include <iostream>\n#include <sstream>\n#include <string>\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\nSTATIC_CONST_VARIABLE_DECLARE(std::string, GETCHAR_DEFAULT_PROMPT, \"Enter a character: \")\nSTATIC_CONST_VARIABLE_DECLARE(std::string, GETCHAR_DEFAULT_REPROMPT, \"You must type a single character. Try again.\")\nSTATIC_CONST_VARIABLE_DECLARE(std::string, GETINTEGER_DEFAULT_PROMPT, \"Enter an integer: \")\nSTATIC_CONST_VARIABLE_DECLARE(std::string, GETINTEGER_DEFAULT_REPROMPT, \"Illegal integer format. Try again.\")\nSTATIC_CONST_VARIABLE_DECLARE(std::string, GETREAL_DEFAULT_PROMPT, \"Enter a number: \")\nSTATIC_CONST_VARIABLE_DECLARE(std::string, GETREAL_DEFAULT_REPROMPT, \"Illegal numeric format. Try again.\")\nSTATIC_CONST_VARIABLE_DECLARE(std::string, GETYESORNO_DEFAULT_PROMPT, \"Try again: \")\nSTATIC_CONST_VARIABLE_DECLARE(std::string, GETYESORNO_DEFAULT_REPROMPT, \"Please type a word that starts with 'Y' or 'N'.\")\n\n/*\n * Implementation notes: getChar, getDouble, getInteger, getReal\n * -------------------------------------------------------------\n * Each of these functions reads a complete input line and then uses the\n * <sstream> library to parse that line into a value of the desired type.\n * If that fails, the implementation asks the user for a new value.\n */\n\nchar getChar(const std::string& prompt,\n             const std::string& reprompt) {\n    std::string promptCopy = prompt;\n    appendSpace(promptCopy);\n    char value = '\\0';\n    while (true) {\n        std::cout << promptCopy;\n        std::string line;\n        if (!getline(std::cin, line)) {\n            error(\"getChar: End of input reached while waiting for character value.\");\n        }\n        if (line.length() == 1) {\n            value = line[0];\n            break;\n        }\n\n        std::cout.flush();\n        std::cerr << (reprompt.empty() ? STATIC_VARIABLE(GETCHAR_DEFAULT_REPROMPT) : reprompt) << std::endl;\n        std::cerr.flush();\n        if (promptCopy.empty()) {\n            promptCopy = STATIC_VARIABLE(GETCHAR_DEFAULT_PROMPT);\n        }\n    }\n    return value;\n}\n\ndouble getDouble(const std::string& prompt,\n                 const std::string& reprompt) {\n    return getReal(prompt, reprompt);\n}\n\ndouble getDoubleBetween(const std::string& prompt, double min, double max) {\n    return getRealBetween(prompt, min, max);\n}\n\nint getInteger(const std::string& prompt,\n               const std::string& reprompt) {\n    std::string promptCopy = prompt;\n    appendSpace(promptCopy);\n    int value = 0;\n    while (true) {\n        std::cout << promptCopy;\n        std::string line;\n        if (!getline(std::cin, line)) {\n            error(\"getInteger: End of input reached while waiting for integer value.\");\n        }\n        trimInPlace(line);\n        std::istringstream stream(line);\n        stream >> value;\n        if (!stream.fail() && stream.eof()) {\n            break;\n        }\n        std::cout.flush();\n        std::cerr << (reprompt.empty() ? STATIC_VARIABLE(GETINTEGER_DEFAULT_REPROMPT) : reprompt) << std::endl;\n        std::cerr.flush();\n        if (promptCopy.empty()) {\n            promptCopy = STATIC_VARIABLE(GETINTEGER_DEFAULT_PROMPT);\n        }\n    }\n    return value;\n}\n\nint getIntegerBetween(const std::string& prompt, int min, int max) {\n    int value = 0;\n    while (true) {\n        value = getInteger(prompt);\n        if (value < min || value > max) {\n            std::cout.flush();\n            std::cerr << \"Please type a value between \" << min\n                      << \" and \" << max << \".\" << std::endl;\n            std::cerr.flush();\n        } else {\n            break;\n        }\n    }\n    return value;\n}\n\n/*\n * Implementation notes: getLine\n * -----------------------------\n * The getLine function simply combines the process of displaying a\n * prompt and reading an input line into a single call.  The primary\n * reason for including this function in the library is to ensure\n * that the process of reading integers, floating-point numbers, and\n * strings remains as consistent as possible.\n */\nstd::string getLine(const std::string& prompt) {\n    std::string line;\n    getLine(prompt, line);\n    return line;\n}\n\nvoid getLine(const std::string& prompt,\n             std::string& out) {\n    std::string promptCopy = prompt;\n    appendSpace(promptCopy);\n    std::cout << promptCopy;\n    if (!getline(std::cin, out)) {\n        error(\"getLine: End of input reached while waiting for line.\");\n    }\n}\n\nvoid getLine(std::istream& input,\n             std::string& out) {\n    if (!getline(input, out)) {\n        error(\"getLine: End of input reached while waiting for line.\");\n    }\n}\n\ndouble getReal(const std::string& prompt,\n               const std::string& reprompt) {\n    std::string promptCopy = prompt;\n    appendSpace(promptCopy);\n    double value = 0.0;\n    while (true) {\n        std::cout << promptCopy;\n        std::string line;\n        if (!getline(std::cin, line)) {\n            error(\"getReal: End of input reached while waiting for real value.\");\n        }\n        trimInPlace(line);\n        std::istringstream stream(line);\n        stream >> value;\n        if (!stream.fail() && stream.eof()) {\n            break;\n        }\n        std::cout.flush();\n        std::cerr << (reprompt.empty() ? STATIC_VARIABLE(GETREAL_DEFAULT_REPROMPT) : reprompt) << std::endl;\n        std::cerr.flush();\n        if (promptCopy.empty()) {\n            promptCopy = STATIC_VARIABLE(GETREAL_DEFAULT_PROMPT);\n        }\n    }\n    return value;\n}\n\ndouble getRealBetween(const std::string& prompt, double min, double max) {\n    double value = 0;\n    while (true) {\n        value = getReal(prompt);\n        if (value < min || value > max) {\n            std::cout.flush();\n            std::cerr << \"Please type a value between \" << min\n                      << \" and \" << max << \".\" << std::endl;\n            std::cerr.flush();\n        } else {\n            break;\n        }\n    }\n    return value;\n}\n\nbool getYesOrNo(const std::string& prompt,\n                const std::string& reprompt,\n                const std::string& defaultValue) {\n    std::string promptCopy = prompt;\n    appendSpace(promptCopy);\n    bool value = false;\n    while (true) {\n        std::cout << promptCopy;\n        std::string line;\n        if (!getline(std::cin, line)) {\n            error(\"getYesOrNo: End of input reached while waiting for yes/no value.\");\n        }\n        if (line.empty()) {\n            line = defaultValue;\n        }\n        if ((int) line.length() > 0) {\n            char first = tolower(line[0]);\n            if (first == 'y') {\n                value = true;\n                break;\n            } else if (first == 'n') {\n                value = false;\n                break;\n            }\n        }\n        std::cout.flush();\n        std::cerr << (reprompt.empty() ? STATIC_VARIABLE(GETYESORNO_DEFAULT_REPROMPT) : reprompt) << std::endl;\n        std::cerr.flush();\n        if (promptCopy.empty()) {\n            promptCopy = STATIC_VARIABLE(GETYESORNO_DEFAULT_PROMPT);\n        }\n    }\n    return value;\n}\n\nvoid appendSpace(std::string& prompt) {\n    if (!prompt.empty() && !isspace(prompt[prompt.length() - 1])) {\n        prompt += ' ';\n    }\n}\n\n/////////////////////// END code extracted from StanfordCPPLib/io/simpio.cpp ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/io/tokenscanner.cpp ///////////////////////\n/*\n * File: tokenscanner.cpp\n * ----------------------\n * Implementation for the TokenScanner class.\n * \n * @version 2016/11/26\n * - added getInput method\n * - replaced occurrences of string with const string& for efficiency\n * - alphabetized method ordering\n * - added operator << for printing a scanner\n * @version 2014/10/08\n * - removed 'using namespace' statement\n */\n\n#define INTERNAL_INCLUDE 1\n\n#include <cctype>\n#include <iostream>\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\nTokenScanner::TokenScanner() {\n    initScanner();\n    setInput(\"\");\n}\n\nTokenScanner::TokenScanner(std::istream& infile) {\n    initScanner();\n    setInput(infile);\n}\n\nTokenScanner::TokenScanner(const std::string& str) {\n    initScanner();\n    setInput(str);\n}\n\nTokenScanner::~TokenScanner() {\n    if (stringInputFlag) {\n        delete isp;\n    }\n}\n\nvoid TokenScanner::addOperator(const std::string& op) {\n    StringCell* cp = new StringCell;\n    cp->str = op;\n    cp->link = operators;\n    operators = cp;\n}\n\nvoid TokenScanner::addWordCharacters(const std::string& str) {\n    wordChars += str;\n}\n\nint TokenScanner::getChar() {\n    return isp->get();\n}\n\nstd::string TokenScanner::getInput() const {\n    return buffer;\n}\n\nint TokenScanner::getPosition() const {\n    if (!savedTokens) {\n        return int(isp->tellg());\n    } else {\n        return int(isp->tellg()) - savedTokens->str.length();\n    }\n}\n\nstd::string TokenScanner::getStringValue(const std::string& token) const {\n    std::string str = \"\";\n    int start = 0;\n    int finish = token.length();\n    if (finish > 1 && (token[0] == '\"' || token[0] == '\\'')) {\n        start = 1;\n        finish--;\n    }\n    for (int i = start; i < finish; i++) {\n        char ch = token[i];\n        if (ch == '\\\\') {\n            ch = token[++i];\n            if (isdigit(ch) || ch == 'x') {\n                int base = 8;\n                if (ch == 'x') {\n                    base = 16;\n                    i++;\n                }\n                int result = 0;\n                int digit = 0;\n                while (i < finish) {\n                    ch = token[i];\n                    if (isdigit(ch)) {\n                        digit = ch - '0';\n                    } else if (isalpha(ch)) {\n                        digit = toupper(ch) - 'A' + 10;\n                    } else {\n                        digit = base;\n                    }\n                    if (digit >= base) {\n                        break;\n                    }\n                    result = base * result + digit;\n                    i++;\n                }\n                ch = char(result);\n                i--;\n            } else {\n                switch (ch) {\n                case 'a': ch = '\\a'; break;\n                case 'b': ch = '\\b'; break;\n                case 'f': ch = '\\f'; break;\n                case 'n': ch = '\\n'; break;\n                case 'r': ch = '\\r'; break;\n                case 't': ch = '\\t'; break;\n                case 'v': ch = '\\v'; break;\n                case '\"': ch = '\"'; break;\n                case '\\'': ch = '\\''; break;\n                case '\\\\': ch = '\\\\'; break;\n                }\n            }\n        }\n        str += ch;\n    }\n    return str;\n}\n\nTokenScanner::TokenType TokenScanner::getTokenType(const std::string& token) const {\n    if (token.empty()) {\n        return TokenType(EOF);\n    }\n\n    char ch = token[0];\n    if (isspace(ch)) {\n        return SEPARATOR;\n    } else if (ch == '\"' || (ch == '\\'' && token.length() > 1)) {\n        return STRING;\n    } else if (isdigit(ch)) {\n        return NUMBER;\n    } else if (isWordCharacter(ch)) {\n        return WORD;\n    } else {\n        return OPERATOR;\n    }\n}\n\nbool TokenScanner::hasMoreTokens() {\n    std::string token = nextToken();\n    saveToken(token);\n    return !token.empty();\n}\n\nvoid TokenScanner::ignoreComments() {\n    ignoreCommentsFlag = true;\n}\n\nvoid TokenScanner::ignoreWhitespace() {\n    ignoreWhitespaceFlag = true;\n}\n\nbool TokenScanner::isWordCharacter(char ch) const {\n    return isalnum(ch) || wordChars.find(ch) != std::string::npos;\n}\n\nstd::string TokenScanner::nextToken() {\n    if (savedTokens) {\n        StringCell* cp = savedTokens;\n        std::string token = cp->str;\n        savedTokens = cp->link;\n        delete cp;\n        return token;\n    }\n\n    while (true) {\n        if (ignoreWhitespaceFlag) {\n            skipSpaces();\n        }\n        int ch = isp->get();\n        if (ch == '/' && ignoreCommentsFlag) {\n            ch = isp->get();\n            if (ch == '/') {\n                while (true) {\n                    ch = isp->get();\n                    if (ch == '\\n' || ch == '\\r' || ch == EOF) {\n                        break;\n                    }\n                }\n                continue;\n            } else if (ch == '*') {\n                int prev = EOF;\n                while (true) {\n                    ch = isp->get();\n                    if (ch == EOF || (prev == '*' && ch == '/')) {\n                        break;\n                    }\n                    prev = ch;\n                }\n                continue;\n            }\n            if (ch != EOF) {\n                isp->unget();\n            }\n            ch = '/';\n        }\n        if (ch == EOF) {\n            return \"\";\n        }\n        if ((ch == '\"' || ch == '\\'') && scanStringsFlag) {\n            isp->unget();\n            return scanString();\n        }\n        if (isdigit(ch) && scanNumbersFlag) {\n            isp->unget();\n            return scanNumber();\n        }\n        if (isWordCharacter(ch)) {\n            isp->unget();\n            return scanWord();\n        }\n        std::string op = std::string(1, ch);\n        while (isOperatorPrefix(op)) {\n            ch = isp->get();\n            if (ch == EOF) {\n                break;\n            }\n            op += ch;\n        }\n        while (op.length() > 1 && !isOperator(op)) {\n            isp->unget();\n            op.erase(op.length() - 1, 1);\n        }\n        return op;\n    }\n}\n\nvoid TokenScanner::saveToken(const std::string& token) {\n    StringCell* cp = new StringCell;\n    cp->str = token;\n    cp->link = savedTokens;\n    savedTokens = cp;\n}\n\nvoid TokenScanner::scanNumbers() {\n    scanNumbersFlag = true;\n}\n\nvoid TokenScanner::scanStrings() {\n    scanStringsFlag = true;\n}\n\nvoid TokenScanner::setInput(std::istream& infile) {\n    stringInputFlag = false;\n    isp = &infile;\n    savedTokens = nullptr;\n}\n\nvoid TokenScanner::setInput(const std::string& str) {\n    stringInputFlag = true;\n    buffer = str;\n    isp = new std::istringstream(buffer);\n    savedTokens = nullptr;\n}\n\nvoid TokenScanner::ungetChar(int) {\n    isp->unget();\n}\n\nvoid TokenScanner::verifyToken(const std::string& expected) {\n    std::string token = nextToken();\n    if (token != expected) {\n        std::string msg = \"TokenScanner::verifyToken: Found \\\"\" + token + \"\\\"\"\n                + \" when expecting \\\"\" + expected + \"\\\"\";\n        if (!buffer.empty()) {\n            msg += \"\\ninput = \\\"\" + buffer + \"\\\"\";\n        }\n        error(msg);\n    }\n}\n\n/* Private methods */\n\nvoid TokenScanner::initScanner() {\n    ignoreWhitespaceFlag = false;\n    ignoreCommentsFlag = false;\n    scanNumbersFlag = false;\n    scanStringsFlag = false;\n    operators = nullptr;\n}\n\n/*\n * Implementation notes: isOperator, isOperatorPrefix\n * --------------------------------------------------\n * These methods search the list of operators and return true if the\n * specified operator is either in the list or a prefix of an operator\n * in the list, respectively.  This code could be made considerably more\n * efficient by implementing operators as a trie.\n */\nbool TokenScanner::isOperator(const std::string& op) {\n    for (StringCell *cp = operators; cp != nullptr; cp = cp->link) {\n        if (op == cp->str) {\n            return true;\n        }\n    }\n    return false;\n}\n\nbool TokenScanner::isOperatorPrefix(const std::string& op) {\n    for (StringCell* cp = operators; cp != nullptr; cp = cp->link) {\n        if (startsWith(cp->str, op)) {\n            return true;\n        }\n    }\n    return false;\n}\n\n/*\n * Implementation notes: scanNumber\n * --------------------------------\n * Reads characters until the scanner reaches the end of a legal number.\n * The function operates by simulating what computer scientists\n * call a finite-state machine.  The program uses the variable\n * <code>state</code> to record the history of the process and\n * determine what characters would be legal at this point in time.\n */\nstd::string TokenScanner::scanNumber() {\n    std::string token = \"\";\n    NumberScannerState state = INITIAL_STATE;\n    while (state != FINAL_STATE) {\n        int ch = isp->get();\n        switch (state) {\n        case INITIAL_STATE:\n            if (!isdigit(ch)) {\n                error(\"TokenScanner::scanNumber: internal error: illegal call\");\n            }\n            state = BEFORE_DECIMAL_POINT;\n            break;\n        case BEFORE_DECIMAL_POINT:\n            if (ch == '.') {\n                state = AFTER_DECIMAL_POINT;\n            } else if (ch == 'E' || ch == 'e') {\n                state = STARTING_EXPONENT;\n            } else if (!isdigit(ch)) {\n                if (ch != EOF) {\n                    isp->unget();\n                }\n                state = FINAL_STATE;\n            }\n            break;\n        case AFTER_DECIMAL_POINT:\n            if (ch == 'E' || ch == 'e') {\n                state = STARTING_EXPONENT;\n            } else if (!isdigit(ch)) {\n                if (ch != EOF) {\n                    isp->unget();\n                }\n                state = FINAL_STATE;\n            }\n            break;\n        case STARTING_EXPONENT:\n            if (ch == '+' || ch == '-') {\n                state = FOUND_EXPONENT_SIGN;\n            } else if (isdigit(ch)) {\n                state = SCANNING_EXPONENT;\n            } else {\n                if (ch != EOF) {\n                    isp->unget();\n                }\n                isp->unget();\n                state = FINAL_STATE;\n            }\n            break;\n        case FOUND_EXPONENT_SIGN:\n            if (isdigit(ch)) {\n                state = SCANNING_EXPONENT;\n            } else {\n                if (ch != EOF) {\n                    isp->unget();\n                }\n                isp->unget();\n                isp->unget();\n                state = FINAL_STATE;\n            }\n            break;\n        case SCANNING_EXPONENT:\n            if (!isdigit(ch)) {\n                if (ch != EOF) {\n                    isp->unget();\n                }\n                state = FINAL_STATE;\n            }\n            break;\n        default:\n            state = FINAL_STATE;\n            break;\n        }\n        if (state != FINAL_STATE) {\n            token += char(ch);\n        }\n    }\n    return token;\n}\n\n/*\n * Implementation notes: scanString\n * --------------------------------\n * Reads and returns a quoted string from the scanner, continuing until\n * it scans the matching delimiter.  The scanner generates an error if\n * there is no closing quotation mark before the end of the input.\n */\nstd::string TokenScanner::scanString() {\n    std::string token = \"\";\n    char delim = isp->get();\n    token += delim;\n    bool escape = false;\n    while (true) {\n        int ch = isp->get();\n        if (ch == EOF) {\n            error(\"TokenScanner::scanString: found unterminated string\");\n        }\n        if (ch == delim && !escape) {\n            break;\n        }\n        escape = (ch == '\\\\') && !escape;\n        token += ch;\n    }\n    return token + delim;\n}\n\n/*\n * Implementation notes: scanWord\n * ------------------------------\n * Reads characters until the scanner reaches the end of a sequence\n * of word characters.\n */\nstd::string TokenScanner::scanWord() {\n    std::string token = \"\";\n    while (true) {\n        int ch = isp->get();\n        if (ch == EOF) {\n            break;\n        }\n        if (!isWordCharacter(ch)) {\n            isp->unget();\n            break;\n        }\n        token += char(ch);\n    }\n    return token;\n}\n\n/*\n * Implementation notes: skipSpaces\n * --------------------------------\n * Advances the position of the scanner until the current character is\n * not a whitespace character.\n */\nvoid TokenScanner::skipSpaces() {\n    while (true) {\n        int ch = isp->get();\n        if (ch == EOF) {\n            return;\n        }\n        if (!isspace(ch)) {\n            isp->unget();\n            return;\n        }\n    }\n}\n\nstd::ostream& operator <<(std::ostream& out, const TokenScanner& scanner) {\n    out << \"TokenScanner{\";\n    bool first = true;\n    if (!scanner.buffer.empty()) {\n        out << \"input=\\\"\" << scanner.buffer << \"\\\"\";\n        first = false;\n    }\n    out << (first ? \"\" : \",\") << \"position=\" << scanner.getPosition();\n    first = false;\n\n    if (scanner.scanNumbersFlag) {\n        out << (first ? \"\" : \",\") << \"scanNumbers\";\n        first = false;\n    }\n    if (scanner.scanStringsFlag) {\n        out << (first ? \"\" : \",\") << \"scanStrings\";\n        first = false;\n    }\n    if (!scanner.wordChars.empty()) {\n        out << (first ? \"\" : \",\") << \"wordChars=[\" << scanner.wordChars << \"]\";\n        first = false;\n    }\n    if (scanner.ignoreWhitespaceFlag) {\n        out << (first ? \"\" : \",\") << \"ignoreWhitespace\";\n        first = false;\n    }\n    if (scanner.ignoreCommentsFlag) {\n        out << (first ? \"\" : \",\") << \"ignoreComments\";\n        // first = false;\n    }\n    out << \"}\";\n    return out;\n}\n\n/////////////////////// END code extracted from StanfordCPPLib/io/tokenscanner.cpp ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/private/version.cpp ///////////////////////\n/*\n * File: version.cpp\n * -----------------\n * This file implements functions for checking the version number of the\n * Stanford C++ library, its Java back-end, and the project properties\n * file (.pro).\n *\n * @author Marty Stepp \n * @version 2016/09/24\n * - bug fix for std::quick_exit function\n * @version 2015/07/05\n * - removed static global Platform variable, replaced by getPlatform as needed\n * @version 2014/11/13\n * - ifdef'd out macroIntegerToDate function to remove unused function warning on some platforms\n * @since 2014/10/31\n */\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n#include <cstdio>\n#include <iomanip>\n#include <iostream>\n#include <sstream>\n#include <string>\n\nnamespace version {\n#ifdef SPL_PROJECT_VERSION\n/*\n * converts an 8-digit integer into a YYYY/MM/DD date string,\n * e.g. 20140907 -> \"2014/09/07\"\n * needed because I can't have a string as a -D command-line defined flag\n */\nstatic std::string macroIntegerToDate(int macroInteger) {\n    int year = (macroInteger / 10000);          // 2014\n    int month = (macroInteger % 10000 / 100);   // 09\n    int day = (macroInteger % 100);             // 07\n    std::ostringstream out;\n    out << std::setw(4) << std::setfill('0') << year\n        << \"/\" << std::setw(2) << std::setfill('0') << month\n        << \"/\" << std::setw(2) << std::setfill('0') << day;\n    return out.str();\n}\n#endif // SPL_PROJECT_VERSION\n\nstatic void ensureProjectVersionHelper(std::string minVersion) {\n#ifdef SPL_PROJECT_VERSION\n    std::string projectVersion = macroIntegerToDate(SPL_PROJECT_VERSION);\n#else\n    std::string projectVersion = \"\";\n#endif\n\n    if (projectVersion < minVersion) {\n        fputs(\"\\n\", stderr);\n        fputs(\"***\\n\", stderr);\n        fputs(\"*** STANFORD C++ LIBRARY ERROR:\\n\", stderr);\n        fputs(\"*** Your project's properties (from your .pro file) are too old\\n\", stderr);\n        fputs(\"*** and are not compatible with this version of the C++ library.\\n\", stderr);\n        fputs(\"*** Exiting immediately to avoid compatibility errors.\\n\", stderr);\n        fputs(\"*** Please update your .pro to a newer compatible version.\\n\", stderr);\n        fprintf(stderr, \"*** Your .pro version found : %s\\n\", projectVersion.c_str());\n        fprintf(stderr, \"*** Minimum version accepted: %s\\n\", minVersion.c_str());\n        fputs(\"***\\n\", stderr);\n        fputs(\"\\n\", stderr);\n        fflush(stderr);\n        \n        std::exit(1);\n    }\n}\n\nvoid ensureJavaBackEndVersion(std::string /*minVersion*/) {\n    // empty\n}\n\nvoid ensureProjectVersion(std::string minVersion) {\n    if (minVersion.empty()) {\n#ifdef SPL_MINIMUM_PROJECT_VERSION\n        minVersion = SPL_MINIMUM_PROJECT_VERSION;\n#else\n        minVersion = STANFORD_CPP_PROJECT_MINIMUM_VERSION;\n#endif\n    }\n    ensureProjectVersionHelper(minVersion);\n}\n\nstd::string getCppLibraryDocsUrl() {\n    return STANFORD_CPP_LIB_DOCS_URL;\n}\n\nstd::string getCppLibraryVersion() {\n    return STANFORD_CPP_LIB_VERSION;\n}\n\nstd::string getJavaBackEndVersion() {\n    return \"?\";\n}\n\n/*\n * Returns version of project properties as defined in .pro file.\n */\nstd::string getProjectVersion() {\n#ifdef SPL_PROJECT_VERSION\n    // 20141031 -> \"2014/10/31\"\n    std::ostringstream out;\n    out << (SPL_PROJECT_VERSION / 10000);         // 2014\n    out << \"/\";\n    out << (SPL_PROJECT_VERSION % 10000 / 100);   // 10\n    out << \"/\";\n    out << (SPL_PROJECT_VERSION % 100);           // 31\n    return out.str();\n#endif\n    return \"\";\n}\n\n} // namespace version\n\n/////////////////////// END code extracted from StanfordCPPLib/private/version.cpp ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/system/call_stack_gcc.cpp ///////////////////////\n/*\n * File: call_stack_gcc.cpp\n * ------------------------\n * Linux/gcc implementation of the call_stack class.\n *\n * @author Marty Stepp, based on code from Fredrik Orderud\n * @version 2019/04/16\n * - bug fix for stack trace line numbers on some Mac systems (thanks to Julie Zelenski)\n * @version 2018/10/22\n * - bug fix for STL vector vs Stanford Vector\n * @version 2018/10/18\n * - added addr2line_functionName to resolve some function names not in backtrace\n * - improved calculation of function offsets for better stack trace resolving\n * @version 2017/10/18\n * - small bug fix for pointer comparison\n * @version 2017/09/02\n * - small bug fix for new clang warning about ordered comparison between pointer and zero\n * @version 2016/12/01\n * - bug fixes for call stack line number retrieval\n * @version 2016/10/14\n * - modified floating-point equality tests to use floatingPointEqual function\n * @version 2016/10/04\n * - removed all static variables (replaced with STATIC_VARIABLE macros)\n * @version 2015/05/28\n */\n\n/* Copyright (c) 2009, Fredrik Orderud\n   License: BSD licence (http://www.opensource.org/licenses/bsd-license.php)\n   Based on: http://stupefydeveloper.blogspot.com/2008/10/cc-call-stack.html */\n\n#define INTERNAL_INCLUDE 1\n#ifdef __GNUC__\n#include <stdio.h>\n#include <cxxabi.h>\n#ifdef _WIN32\n#include <windows.h>\n#include <tchar.h>\n#include <stdio.h>\n#include <strsafe.h>\n#undef MOUSE_EVENT\n#undef KEY_EVENT\n#undef MOUSE_MOVED\n#undef HELP_KEY\n#else // _WIN32\n#include <execinfo.h>\n#include <dlfcn.h>\n#include <cstring>\n#endif // _WIN32\n#endif // __GNUC__\n#if defined(__APPLE__)\n#include <mach-o/dyld.h>   // for _dyld_get_image_header\n#endif // __APPLE__\n#include <iomanip>\n#include <iostream>\n#include <sstream>\n#include <stdlib.h>\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\nnamespace platform {\nstd::string os_getLastError() {\n#ifdef _WIN32\n    // Windows error-reporting code\n    DWORD lastErrorCode = ::GetLastError();\n    char* errorMsg = nullptr;\n    // Ask Windows to prepare a standard message for a GetLastError() code:\n    ::FormatMessageA(\n                   /* dwFlags */ FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,\n                   /* lpSource */ nullptr,\n                   /* dwMessageId */ lastErrorCode,\n                   /* dwLanguageId */ LANG_NEUTRAL,\n                   /* lpBuffer */ reinterpret_cast<LPSTR>(&errorMsg),\n                   /* dwSize */ 0,\n                   /* arguments */ nullptr);\n    if (errorMsg) {\n        return std::string(errorMsg);\n    } else {\n        return \"\";\n    }\n#else\n    // Linux/Mac error-reporting code\n    return std::string(strerror(errno));\n#endif // _WIN32\n}\n} // namespace platform\n\nnamespace stacktrace {\n\n/*\n * Run a sub-process and capture its output.\n */\nint execAndCapture(std::string cmd, std::string& output) {\n#ifdef _WIN32\n    // Windows code for external process (ugly)\n    HANDLE g_hChildStd_IN_Rd = nullptr;\n    HANDLE g_hChildStd_IN_Wr = nullptr;\n    HANDLE g_hChildStd_OUT_Rd = nullptr;\n    HANDLE g_hChildStd_OUT_Wr = nullptr;\n    SECURITY_ATTRIBUTES saAttr;\n    saAttr.nLength = sizeof(SECURITY_ATTRIBUTES);\n    saAttr.bInheritHandle = TRUE;\n    saAttr.lpSecurityDescriptor = nullptr;\n    if (!CreatePipe(&g_hChildStd_OUT_Rd, &g_hChildStd_OUT_Wr, &saAttr, 0)) {\n        return 1;   // fail\n    }\n    if (!SetHandleInformation(g_hChildStd_OUT_Rd, HANDLE_FLAG_INHERIT, 0)) {\n        return 1;   // fail\n    }\n    if (!CreatePipe(&g_hChildStd_IN_Rd, &g_hChildStd_IN_Wr, &saAttr, 0)) {\n        return 1;   // fail\n    }\n    if (!SetHandleInformation(g_hChildStd_IN_Wr, HANDLE_FLAG_INHERIT, 0) ) {\n        return 1;   // fail\n    }\n\n    // CreateChildProcess();\n    PROCESS_INFORMATION piProcInfo;\n    STARTUPINFOA siStartInfo;\n    ZeroMemory(&piProcInfo, sizeof(PROCESS_INFORMATION));\n    ZeroMemory( &siStartInfo, sizeof(STARTUPINFOA) );\n    siStartInfo.cb = sizeof(STARTUPINFO);\n    siStartInfo.hStdError = g_hChildStd_OUT_Wr;\n    siStartInfo.hStdOutput = g_hChildStd_OUT_Wr;\n    siStartInfo.hStdInput = g_hChildStd_IN_Rd;\n    siStartInfo.dwFlags |= STARTF_USESTDHANDLES;\n\n    if (!CreateProcessA(\n            nullptr,\n            const_cast<char*>(cmd.c_str()),    // command line\n            nullptr,                           // process security attributes\n            nullptr,                           // primary thread security attributes\n            TRUE,                              // handles are inherited\n            CREATE_NO_WINDOW,                  // creation flags\n            nullptr,                           // use parent's environment\n            nullptr,                           // use parent's current directory\n            &siStartInfo,                      // STARTUPINFO pointer\n            &piProcInfo)) {                    // receives PROCESS_INFORMATION\n        std::cerr << \"CREATE PROCESS FAIL: \" << platform::os_getLastError() << std::endl;\n        std::cerr << cmd << std::endl;\n        return 1;   // fail\n    }\n\n    // close the subprocess's handles (waits for it to finish)\n    WaitForSingleObject(piProcInfo.hProcess, INFINITE);\n    CloseHandle(piProcInfo.hProcess);\n    CloseHandle(piProcInfo.hThread);\n\n    // ReadFromPipe();\n    DWORD dwRead;\n    const int BUFSIZE = 65536;\n    CHAR chBuf[BUFSIZE] = {0};\n    if (!ReadFile(g_hChildStd_OUT_Rd, chBuf, BUFSIZE, &dwRead, nullptr) || dwRead == 0) {\n        return 1;\n    }\n    std::ostringstream out;\n    for (int i = 0; i < static_cast<int>(dwRead); i++) {\n        out.put(chBuf[i]);\n    }\n\n    output = out.str();\n    return 0;\n#else\n    // Linux / Mac code for external process\n    cmd += \" 2>&1\";\n    FILE* pipe = popen(cmd.c_str(), \"r\");\n    if (!pipe) {\n        return -1;\n    }\n    char buffer[65536] = {0};\n    output = \"\";\n    while (!feof(pipe)) {\n        if (fgets(buffer, 65536, pipe) != nullptr) {\n            output += buffer;\n        }\n    }\n    return pclose(pipe);\n#endif // _WIN32\n}\n\nstd::string addr2line_clean(std::string line) {\n#if defined(_WIN32)\n    // TODO: implement on Windows\n    // \"ZN10stacktrace25print_stack_trace_windowsEv at C:\\Users\\stepp\\Documents\\StanfordCPPLib\\build\\stanfordcpplib-windows-Desktop_Qt_5_3_MinGW_32bit-Debug/../../StanfordCPPLib/stacktrace/call_stack_windows.cpp:126\"\n#elif defined(__APPLE__)\n    // Mac OS X version (atos)\n    // \"Vector<int>::checkIndex(int) const (in Autograder_QtCreatorProject) (vector.h:764)\"\n    if (line.find(\" (\") != std::string::npos) {\n        line = line.substr(line.rfind(\" (\") + 2);\n    }\n    if (line.find(')') != std::string::npos) {\n        line = line.substr(0, line.rfind(')'));\n    }\n    line = trim(line);\n#elif defined(__GNUC__)\n    // Linux version (addr2line)\n    // \"_Z4Mainv at /home/stepp/.../FooProject/src/mainfunc.cpp:131\"\n    if (line.find(\" at \") != std::string::npos) {\n        line = line.substr(line.rfind(\" at \") + 4);\n    }\n    if (line.find('/') != std::string::npos) {\n        line = line.substr(line.rfind('/') + 1);\n    }\n\n    // strip extra parenthesized info from the end\n    if (line.find(\" (\") != std::string::npos) {\n        line = line.substr(0, line.rfind(\" (\"));\n    }\n    line = trim(line);\n#endif\n    return line;\n}\n\nstd::string addr2line_functionName(std::string line) {\n#if defined(_WIN32)\n    // TODO: implement on Windows\n    // \"ZN10stacktrace25print_stack_trace_windowsEv at C:\\Users\\stepp\\Documents\\StanfordCPPLib\\build\\stanfordcpplib-windows-Desktop_Qt_5_3_MinGW_32bit-Debug/../../StanfordCPPLib/stacktrace/call_stack_windows.cpp:126\"\n#elif defined(__APPLE__)\n    // Mac OS X version (atos)\n    // \"Vector<int>::checkIndex(int) const (in Autograder_QtCreatorProject) (vector.h:764)\"\n    if (line.find(\" (\") != std::string::npos) {\n        line = line.substr(0, line.rfind(\" (\") - 1);\n    }\n    if (line.find(\"(in \") != std::string::npos) {\n        line = line.substr(0, line.rfind(\"(in \"));\n    }\n    line = trim(line);\n#elif defined(__GNUC__)\n    // Linux version (addr2line)\n    // \"_Z4Mainv at /home/stepp/.../FooProject/src/mainfunc.cpp:131\"\n    // \"std::_Function_handler<void (), stanfordcpplib::autograder::GuiAutograder::runTest(stanfordcpplib::autograder::AutograderTest*)::{lambda()#1}>::_M_invoke(std::_Any_data const&) at std_function.h:318\"\n    if (line.find(\" at \") != std::string::npos) {\n        line = line.substr(0, line.rfind(\" at \"));\n    }\n    line = trim(line);\n#endif\n    return line;\n}\n\nint addr2line_all(Vector<void*> addrsVector, std::string& output) {\n    int length = static_cast<int>(addrsVector.size());\n    void* addrs[length];\n    for (int i = 0; i < length; i++) {\n        addrs[i] = addrsVector[i];\n    }\n    return addr2line_all(addrs, length, output);\n}\n\nint addr2line_all(void** addrs, int length, std::string& output) {\n    // turn the addresses into a space-separated string\n    std::ostringstream out;\n    for (int i = 0; i < length; i++) {\n        out << \" \" << std::hex << std::setfill('0') << addrs[i];\n    }\n    std::string addrsStr = out.str();\n    out.str(\"\");\n\n    // have addr2line map the address to the relevant line in the code\n#if defined(__APPLE__)\n    // Mac OS X\n    // JL : change \"atos\" to \"xcrun atos\"?\n    void *base = (void *) _dyld_get_image_header(0);\n    if (base) {\n        out << \"atos -l \" << base << \" -o \" << exceptions::getProgramNameForStackTrace() << addrsStr;\n    } else {\n        out << \"atos -o \" << exceptions::getProgramNameForStackTrace() << addrsStr;\n    }\n#elif defined(_WIN64)\n    // Windows\n    if (fileExists(\"addr2line64.exe\")) {\n        out << \"addr2line64.exe -f -i -C -s -p -e \\\"\" << exceptions::getProgramNameForStackTrace() << \"\\\"\" << addrsStr;\n    } else {\n        out << \"(addr2line64.exe unavailable; no stack trace produced)\";\n    }\n#elif defined(_WIN32)\n    // Windows\n    if (fileExists(\"addr2line.exe\")) {\n        out << \"addr2line.exe -f -i -C -s -p -e \\\"\" << exceptions::getProgramNameForStackTrace() << \"\\\"\" << addrsStr;\n    } else {\n        out << \"(addr2line.exe unavailable; no stack trace produced)\";\n    }\n#else\n    // Linux\n    out << \"addr2line -f -i -C -s -p -e \" << exceptions::getProgramNameForStackTrace() << addrsStr;\n#endif\n    std::string command = out.str();\n    int result = execAndCapture(command, output);\n    return result;\n}\n\n/*\n * Resolve symbol name and source location given the path to the executable\n * and an address\n */\nint addr2line(void* addr, std::string& line) {\n    void* addrs[1] = {addr};\n    return addr2line_all(addrs, 1, line);\n}\n\nvoid*& fakeCallStackPointer() {\n    static void* fakeCallStackPointer = nullptr;\n    return fakeCallStackPointer;\n}\n} // namespace stacktrace\n\n\n/*\n * Below is the Linux/Mac-specific stack trace code.\n */\n#ifndef _WIN32\n\nnamespace stacktrace {\nSTATIC_CONST_VARIABLE_DECLARE(int, STACK_FRAMES_TO_SKIP, 0)\nSTATIC_CONST_VARIABLE_DECLARE(int, STACK_FRAMES_MAX, 50)\n\nstd::ostream& operator <<(std::ostream& out, const entry& ent) {\n    return out << ent.toString();\n}\n\ncall_stack::call_stack(const size_t /*num_discard = 0*/) {\n    // retrieve call-stack as an array of void* pointers to each function on stack\n    void* trace[STATIC_VARIABLE(STACK_FRAMES_MAX)];\n    for (int i = 0; i < STATIC_VARIABLE(STACK_FRAMES_MAX); i++) {\n        trace[i] = nullptr;\n    }\n\n    int stack_depth = backtrace(trace, STATIC_VARIABLE(STACK_FRAMES_MAX));\n\n    // First pass: read linker symbol info and get address offsets.\n    for (int i = STATIC_VARIABLE(STACK_FRAMES_TO_SKIP); i < stack_depth; i++) {\n        // DL* = programmer API to dynamic linking loader\n\n        // https://linux.die.net/man/3/dladdr\n        // const char *dli_fname;   // pathname of shared object (file) that contains address\n        // void       *dli_fbase;   // address at which shared object is loaded in system memory\n        // const char *dli_sname;   // name of nearest symbol with address lower than addr\n        // void       *dli_saddr;   // exact address of symbol named in dli_sname\n\n        Dl_info dlinfo;\n        if (!dladdr(trace[i], &dlinfo)) {\n            continue;\n        }\n\n        const char* symname = dlinfo.dli_sname;\n\n        int   status;\n        char* demangled = abi::__cxa_demangle(symname, /* buffer */ nullptr,\n                                              /* length pointer */ nullptr, &status);\n        if (status == 0 && demangled) {\n            symname = demangled;\n        }\n\n        // debug code left in because we occasionally need to debug stack traces\n//        std::cout << \"call_stack: I am thread \" << GThread::getCurrentThread()->objectName().toStdString() << std::endl;\n//        std::cout << \"info for \" << trace[i] << \":\" << std::endl;\n//        std::cout << \"dlinfo \" << i << \":\"\n//                  << \" fbase=\" << dlinfo.dli_fbase\n//                  << \" fname=\" << (dlinfo.dli_fname ? dlinfo.dli_fname : \"NULL\")\n//                  << \" sname=\" << (dlinfo.dli_sname ? dlinfo.dli_sname : \"NULL\")\n//                  << \" saddr=\" << dlinfo.dli_saddr\n//                  << std::endl;\n//        if (demangled) {\n//            std::cout << \"demangled name \" << i << \": \" << std::string(demangled) << \" (status \" << status << \")\" << std::endl;\n//        } else {\n//            std::cout << \"demangled name \" << i << \": NULL\" << \" (status \" << status << \")\" << std::endl;\n//        }\n//        std::cout << std::endl;\n        \n        // store entry to stack\n        if (dlinfo.dli_fname) {\n            entry e;\n            e.file     = dlinfo.dli_fname;\n            e.line     = 0;   // unsupported; use lineStr instead (later)\n            e.function = symname ? symname : \"(unknown)\";\n            e.address  = trace[i];\n\n            // The dli_fbase gives an overall offset into the file itself;\n            // the dli_saddr is the offset of that symbol/function/line.\n            // by subtracting them we get the offset of the function within the file\n            // which addr2line can use to look up function line numbers.\n\n            if (dlinfo.dli_fbase) {\n                // subtract smaller address from larger one to get offset\n                if (trace[i] >= dlinfo.dli_fbase) {\n                    e.address2 = (void*) ((long) trace[i] - (long) dlinfo.dli_fbase);\n                } else {\n                    e.address2 = (void*) ((long) dlinfo.dli_fbase - (long) trace[i]);\n                }\n            } else {\n                e.address2 = dlinfo.dli_saddr;\n            }\n            stack.push_back(e);\n        }\n\n        if (demangled) {\n            free(demangled);\n        }\n    }\n\n    if (stack_depth == 0 || stack.isEmpty()) {\n        return;\n    }\n\n    // Second pass: try to look up line numbers.\n    //\n    // let's also try to get the line numbers via an 'addr2line' external process\n    // (for max compatibility with GCC and Clang, we look up the addresses 2 ways:\n    // 1) by the raw void* given to us from backtrace(), and\n    // 2) by the offsetted pointer where we subtract the addr of the exe file.\n    // Option 1 used to work for all compilers, but sometime around summer 2016\n    // GCC started failing unless we use option 2.\n    // Clang and other compilers still need option 1 and fail with option 2,\n    // and to avoid running external addr2line process twice, we just look it up\n    // both ways and then figure out which one is best by string length.\n    // The failing one will emit a lot of short \"??:?? 0\" lines.\n\n    Vector<void*> addrsToLookup;\n    for (const entry& e : stack) {\n        addrsToLookup.add(e.address);\n        addrsToLookup.add(e.address2);\n    }\n\n    std::string addr2lineOutput;\n    addr2line_all(addrsToLookup, addr2lineOutput);\n\n    Vector<std::string> addr2lineLines = stringSplit(addr2lineOutput, \"\\n\");\n    int numAddrLines = (int) addr2lineLines.size();\n    for (int i = 0, size = (int) stack.size(); i < size; i++) {\n        std::string opt1 = (2 * i < numAddrLines ? addr2lineLines[2 * i] : std::string());\n        std::string opt2 = (2 * i + 1 < numAddrLines ? addr2lineLines[2 * i + 1] : std::string());\n        std::string best = opt1.length() > opt2.length() ? opt1 : opt2;\n        stack[i].lineStr = addr2line_clean(best);\n        if (stack[i].function.empty() || stack[i].function == \"(unknown)\") {\n            stack[i].function = addr2line_functionName(best);\n        }\n    }\n}\n\ncall_stack::~call_stack() throw() {\n    // automatic cleanup\n}\n\n} // namespace stacktrace\n\n#endif // _WIN32\n\n/////////////////////// END code extracted from StanfordCPPLib/system/call_stack_gcc.cpp ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/system/error.cpp ///////////////////////\n/*\n * File: error.cpp\n * ---------------\n * Implementation of the error function.\n * \n * @version 2016/11/23\n * - added operator << to print ErrorExceptions\n * @version 2014/10/08\n * - removed 'using namespace' statement\n */\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#include <sstream>\n#undef INTERNAL_INCLUDE\n\n/* Definitions for the ErrorException class */\n\nErrorException::ErrorException(std::string msg)\n        : _kind(\"error\") {\n    _msg = msg;\n\n#if defined(SPL_CONSOLE_PRINT_EXCEPTIONS)\n    std::ostringstream out;\n    exceptions::printStackTrace(out);\n    _stackTrace = out.str();\n#endif // SPL_CONSOLE_PRINT_EXCEPTIONS\n}\n\nvoid ErrorException::dump() const {\n    dump(std::cerr);\n}\n\nvoid ErrorException::dump(std::ostream& out) const {\n    out << std::endl;\n    out << \"***\" << std::endl;\n    out << \"*** STANFORD C++ LIBRARY\" << std::endl;\n    out << \"*** An ErrorException occurred during program execution:\" << std::endl;\n    if (!_msg.empty()) {\n        out << (\"*** \" + _msg) << std::endl;\n    }\n    out << \"***\" << std::endl;\n    out << insertStarsBeforeEachLine(getStackTrace()) << std::endl;\n    // out << \"***\" << std::endl;\n    // out << \"*** To learn more about the crash, we strongly\" << std::endl;\n    // out << \"*** suggest running your program under the debugger.\" << std::endl;\n    // out << \"***\" << std::endl;\n    out.flush();\n}\n\nstd::string ErrorException::getKind() const {\n    return _kind;\n}\n\nstd::string ErrorException::getMessage() const {\n    return _msg;\n}\n\nbool ErrorException::hasStackTrace() const {\n    return !_stackTrace.empty();\n}\n\nstd::string ErrorException::getStackTrace() const {\n    return _stackTrace;\n}\n\nstd::string ErrorException::insertStarsBeforeEachLine(const std::string& s) {\n    std::string result;\n    for (std::string line : stringSplit(s, \"\\n\")) {\n        if (!result.empty()) {\n            if (!startsWith(line, \"***\")) {\n                line = \"*** \" + line;\n            }\n            result += \"\\n\";\n        }\n        result += line;\n    }\n    return result;\n}\n\nvoid ErrorException::setKind(const std::string& kind) {\n    _kind = kind;\n}\n\nvoid ErrorException::setStackTrace(const std::string& stackTrace) {\n    _stackTrace = stackTrace;\n}\n\nconst char* ErrorException::what() const noexcept {\n    // stepp : The original \"Error: \" prefix is commented out here,\n    // because in many error cases, the attempt to do the string concatenation\n    // ends up garbling the string and leading to garbage exception text\n    // return (\"Error: \" + msg).c_str();\n    return _msg.c_str();\n}\n\nstd::ostream& operator <<(std::ostream& out, const ErrorException& ex) {\n    out << \"ErrorException: \" << ex.what();\n    std::string stack = ex.getStackTrace();\n    if (!stack.empty()) {\n        out << \"Stack trace:\" << std::endl;\n        out << stack;\n        out.flush();\n    }\n    return out;\n}\n\n/*\n * Implementation notes: error\n * ---------------------------\n * Earlier implementations of error made it possible, at least on the\n * Macintosh, to help the debugger generate a backtrace at the point\n * of the error.  Unfortunately, doing so is no longer possible if\n * the errors are catchable.\n */\n\n/* [[noreturn]] */ void error(const std::string& msg) {\n    throw ErrorException(msg);\n}\n\n/////////////////////// END code extracted from StanfordCPPLib/system/error.cpp ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/io/plainconsole.cpp ///////////////////////\n/*\n * File: plainconsole.cpp\n * ----------------------\n * This file defines the implementation of functions to add utility to the\n * C++ plain text console streams, cin/cout/cerr.\n * See plainconsole.h for documentation of each function.\n *\n * @author Marty Stepp\n * @version 2017/11/12\n * - changed limited stream to throw error rather than raise SIGABRT for better displaying\n * @version 2017/10/20\n * - fixed compiler warning about 0 vs nullptr\n * @version 2015/10/21\n * @since 2015/10/21\n */\n\n#define INTERNAL_INCLUDE 1\n\n#include <csignal>\n#include <iostream>\n#include <string>\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\nnamespace plainconsole {\n/*\n * A stream buffer that just forwards everything to a delegate,\n * but echoes any user input read from it.\n * Used to (sometimes) echo console input when redirected in from a file.\n * http://www.cplusplus.com/reference/streambuf/streambuf/\n */\nclass EchoingStreambuf : public std::streambuf {\nprivate:\n    /* Constants */\n    static const int BUFFER_SIZE = 4096;\n\n    /* Instance variables */\n    char inBuffer[BUFFER_SIZE];\n    char outBuffer[BUFFER_SIZE];\n    std::istream instream;\n    std::ostream& outstream;\n    int outputLimit;\n    int outputPrinted;\n\npublic:\n    EchoingStreambuf(std::streambuf& buf, std::ostream& out)\n            : instream(&buf),\n              outstream(out),\n              outputLimit(0),\n              outputPrinted(0) {\n        // outstream.rdbuf(&buf);\n        setg(inBuffer, inBuffer, inBuffer);\n        setp(outBuffer, outBuffer + BUFFER_SIZE);\n    }\n\n    ~EchoingStreambuf() {\n        /* Empty */\n    }\n    \n    virtual void setOutputLimit(int limit) {\n        outputLimit = limit;\n    }\n\n    virtual int underflow() {\n        // 'return 0' handles end-of-input from stdin redirect\n        std::string line;\n        if (!getline(instream, line)) {\n            return 0;\n        }\n        \n        int n = line.length();\n        if (n + 1 >= BUFFER_SIZE) {\n            error(\"EchoingStreambuf::underflow: String too long\");\n        }\n        for (int i = 0; i < n; i++) {\n            inBuffer[i] = line[i];\n        }\n        inBuffer[n++] = '\\n';\n        inBuffer[n] = '\\0';\n        setg(inBuffer, inBuffer, inBuffer + n);\n        \n        // this is the place to echo the input\n        // fprintf(stdout, \"inBuffer: \\\"%s\\\"\\n\", inBuffer);\n        // fflush(stdout);\n        outstream << inBuffer;\n        outstream.flush();\n        \n        return inBuffer[0];\n    }\n\n    virtual int overflow(int ch = EOF) {\n        std::string line = \"\";\n        for (char *cp = pbase(); cp < pptr(); cp++) {\n            if (*cp == '\\n') {\n                // puts(line.c_str());\n                outputPrinted += line.length();\n                if (outputLimit > 0 && outputPrinted > outputLimit) {\n                    error(\"excessive output printed\");\n                }\n                line = \"\";\n            } else {\n                line += *cp;\n            }\n        }\n        if (line != \"\") {\n            // puts(line.c_str());\n            outputPrinted += line.length();\n            if (outputLimit > 0 && outputPrinted > outputLimit) {\n                error(\"excessive output printed\");\n            }\n        }\n        setp(outBuffer, outBuffer + BUFFER_SIZE);\n        if (ch != EOF) {\n            outBuffer[0] = ch;\n            pbump(1);\n        }\n        return ch != EOF;\n    }\n    \n    virtual int sync() {\n        return overflow();\n    }\n};\n\n/*\n * A stream buffer that limits how many characters you can print to it.\n * If you exceed that many, it throws an ErrorException.\n */\nclass LimitedStreambuf : public std::streambuf {\nprivate:\n    std::ostream outstream;\n    int outputLimit;\n    int outputPrinted;\n\npublic:\n    LimitedStreambuf(std::streambuf& buf, int limit)\n            : outstream(&buf),\n              outputLimit(limit),\n              outputPrinted(0) {\n        setp(nullptr, nullptr);   // // no buffering, overflow on every char\n    }\n\n    virtual void setOutputLimit(int limit) {\n        outputLimit = limit;\n    }\n\n    virtual int overflow(int ch = EOF) {\n        outputPrinted++;\n        if (outputLimit > 0 && outputPrinted > outputLimit) {\n            // error(\"excessive output printed\");\n            // outstream.setstate(std::ios::failbit | std::ios::badbit | std::ios::eofbit);\n            // kill the program\n            // (use a signal rather than error/exception\n            // so student won't try to catch it)\n            // error(\"Excessive output printed; you may have an infinite loop in your code.\");\n            raise(SIGUSR1);\n        } else {\n            outstream.put(ch);\n        }\n        return ch;\n    }\n};\n\nvoid setOutputLimit(int limit) {\n    if (limit <= 0) {\n        error(\"Platform::setConsoleOutputLimit: limit must be a positive integer\");\n    }\n    LimitedStreambuf* limitedbufOut = new LimitedStreambuf(*std::cout.rdbuf(), limit);\n    LimitedStreambuf* limitedbufErr = new LimitedStreambuf(*std::cerr.rdbuf(), limit);\n    std::cout.rdbuf(limitedbufOut);\n    std::cerr.rdbuf(limitedbufErr);\n}\n\nvoid setEcho(bool value) {\n    static EchoingStreambuf* echobufIn = nullptr;\n    static std::streambuf* oldBuf = nullptr;\n    \n    if (!echobufIn && value) {\n        // start to echo user input pulled from cin\n        oldBuf = std::cin.rdbuf();\n        echobufIn = new EchoingStreambuf(*std::cin.rdbuf(), std::cout);\n        std::cin.rdbuf(echobufIn);\n    } else if (echobufIn && !value) {\n        // stop echo\n        std::cin.rdbuf(oldBuf);\n        oldBuf = nullptr;\n        echobufIn = nullptr;\n    }\n}\n\n} // namespace plainconsole\n\n/////////////////////// END code extracted from StanfordCPPLib/io/plainconsole.cpp ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/system/exceptions.cpp ///////////////////////\n/*\n * File: exceptions.cpp\n * --------------------\n * This file contains a top-level exception handler to print exceptions thrown\n * by student code on the console.\n * \n * @author Marty Stepp\n * @version 2019/05/16\n * - added more function names to filter from stack trace\n * @version 2019/04/16\n * - filter Qt/std thread methods from stack trace\n * @version 2019/04/02\n * - small fix for warning about -Wreturn-std-move on string exception\n * @version 2018/10/18\n * - added set_unexpected handler (used by autograders when errors are thrown)\n * - added some new function names to filter from stack traces\n * @version 2018/09/27\n * - bug fixes to print better stack traces when used with threads\n * @version 2018/09/25\n * - modify setTopLevelExceptionHandlerEnabled to work better with threads\n * @version 2016/12/23\n * - added more function names for stack trace filtering (mainly thread stuff)\n * @version 2016/12/09\n * - added insertStarsBeforeEachLine\n * @version 2016/11/07\n * - added cleanupFunctionNameForStackTrace\n * - slight refactor of shouldFilterOutFromStackTrace\n * @version 2016/10/30\n * - moved recursion functions to recursion.h/cpp\n * @version 2016/10/04\n * - removed all static variables (replaced with STATIC_VARIABLE macros)\n * @version 2016/08/02\n * - added some new cxx11 filters to stack traces\n * - fixed spacing on *** messages from exception handlers\n * @version 2015/10/13\n * - bug fix in terminate handler to turn off signal handler at end\n * @version 2015/05/28\n * - tiny bug fix to exception stack trace printing format on Windows\n * @version 2014/11/19\n * - disabled SetThreadErrorMode to avoid compiler errors on Windows systems\n * @version 2014/11/18\n * - fixed minor bug with filtering out nested <> template args from stack traces\n * @version 2014/11/14\n * - fixed bug with SIGABRT handling in autograder mode (was muffling unit test failures)\n * @version 2014/11/12\n * - made printStackTrace function publicly available\n * - added top-level signal handler (for null-pointer derefs etc.)\n * @since 2014/11/05\n */\n\n#define INTERNAL_INCLUDE 1\n\n#include <csignal>\n#include <cstdlib>\n#include <iomanip>\n#include <iostream>\n#include <string>\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#ifdef _WIN32\n#include <windows.h>\n#  undef MOUSE_EVENT\n#  undef KEY_EVENT\n#  undef MOUSE_MOVED\n#  undef HELP_KEY\n#endif\n#undef INTERNAL_INCLUDE\n\n// uncomment the definition below to use an alternative 'signal stack'\n// which helps in handling stack overflow errors\n// (disabled because it currently breaks stack traces for other errors)\n// #define SHOULD_USE_SIGNAL_STACK\n\nnamespace exceptions {\n// just some value that is not any existing signal\n#define SIGSTACK (static_cast<int>(0xdeadbeef))\n#define SIGUNKNOWN (static_cast<int>(0xcafebabe))\n#define SIGTIMEOUT (static_cast<int>(0xf00df00d))\n\n// static 'variables' (as functions to avoid initialization ordering bugs)\nSTATIC_CONST_VARIABLE_DECLARE(bool, STACK_TRACE_SHOULD_FILTER, true)\nSTATIC_CONST_VARIABLE_DECLARE(bool, STACK_TRACE_SHOW_TOP_BOTTOM_BARS, false)\n\nSTATIC_VARIABLE_DECLARE(std::string, programNameForStackTrace, \"\")\nSTATIC_VARIABLE_DECLARE(bool, topLevelExceptionHandlerEnabled, false)\n\n// handle SIGABRT in normal mode, but not autograder mode\n// (Google Test uses SIGABRT internally so we can't catch it)\n#ifdef SPL_AUTOGRADER_MODE\nSTATIC_CONST_VARIABLE_DECLARE_COLLECTION(Vector<int>, SIGNALS_HANDLED, SIGSEGV, SIGILL, SIGFPE, SIGINT)\n#else\nSTATIC_CONST_VARIABLE_DECLARE_COLLECTION(Vector<int>, SIGNALS_HANDLED, SIGSEGV, SIGILL, SIGFPE, SIGABRT)\n#endif // SPL_AUTOGRADER_MODE\n\nstatic void signalHandlerDisable();\nstatic void signalHandlerEnable();\nstatic void stanfordCppLibSignalHandler(int sig);\n[[noreturn]] static void stanfordCppLibTerminateHandler();\nstatic void stanfordCppLibUnexpectedHandler();\n\nstd::string cleanupFunctionNameForStackTrace(std::string function) {\n    // remove references to std:: namespace\n    stringReplaceInPlace(function, \"std::\", \"\");\n    stringReplaceInPlace(function, \"__cxx11::\", \"\");\n    stringReplaceInPlace(function, \"__cxxabi::\", \"\");\n    stringReplaceInPlace(function, \"__cxxabiv1::\", \"\");\n    stringReplaceInPlace(function, \"[abi:cxx11]\", \"\");\n    stringReplaceInPlace(function, \"__1::\", \"\");   // on Mac\n\n    // a few substitutions related to predefined types for simplicity\n    stringReplaceInPlace(function, \"basic_ostream\", \"ostream\");\n    stringReplaceInPlace(function, \"basic_istream\", \"istream\");\n    stringReplaceInPlace(function, \"basic_ofstream\", \"ofstream\");\n    stringReplaceInPlace(function, \"basic_ifstream\", \"ifstream\");\n    stringReplaceInPlace(function, \"basic_string\", \"string\");\n    stringReplaceInPlace(function, \"stanfordcpplib::collections::GenericSet\", \"Set\");\n\n    // remove empty/unknown function names\n    stringReplaceInPlace(function, \"?? ??:0\", \"\");\n\n    // cleanup autograder test case names\n    stringReplaceInPlace(function, \"_Test::TestRealBody\", \"\");\n    stringReplaceInPlace(function, \"_Test::TestBody\", \"\");\n\n    // remove template arguments\n    // TODO: does not work well for nested templates\n    int lessThan = stringIndexOf(function, \"<\");\n    while (lessThan >= 0) {\n        // see if there is a matching > for this <\n        int greaterThan = lessThan + 1;\n        int count = 1;\n        while (greaterThan < (int) function.length()) {\n            if (function[greaterThan] == '<') {\n                count++;\n            } else if (function[greaterThan] == '>') {\n                count--;\n                if (count == 0) {\n                    break;\n                }\n            }\n            greaterThan++;\n        }\n        if (count == 0 && lessThan >= 0 && greaterThan > lessThan) {\n            function.erase(lessThan, greaterThan - lessThan + 1);\n        } else {\n            // look for the next < in the string, if any, to see if it has a matching >\n            lessThan = stringIndexOf(function, \"<\", lessThan + 1);\n        }\n    }\n\n    // addr2line oddly writes \"const Foo&\" as \"Foo const&\"\n    stringReplaceInPlace(function, \"string const&\", \"const string&\");\n\n    // small patch for renamed main function\n    if (function == \"_main_\") {\n        function = \"main\";\n    }\n\n    return function;\n}\n\nstd::string& getProgramNameForStackTrace() {\n    return STATIC_VARIABLE(programNameForStackTrace);\n}\n\nbool getTopLevelExceptionHandlerEnabled() {\n    return STATIC_VARIABLE(topLevelExceptionHandlerEnabled);\n}\n\nvoid setProgramNameForStackTrace(char* programName) {\n    STATIC_VARIABLE(programNameForStackTrace) = programName;\n}\n\n#ifdef _WIN32\nvoid myInvalidParameterHandler(const wchar_t* expression,\n        const wchar_t* function,\n        const wchar_t* file,\n        unsigned int line,\n        uintptr_t /*pReserved*/) {\n    wprintf(L\"Invalid parameter detected in function %s.\"\n            L\" File: %s Line: %d\\n\", function, file, line);\n    wprintf(L\"Expression: %s\\n\", expression);\n}\n\nLONG WINAPI UnhandledException(LPEXCEPTION_POINTERS exceptionInfo) {\n    // dear student: if you get a compiler error about 'Eip' not being found here,\n    // it means you're using a 64-bit compiler like the MS Visual C++ compiler,\n    // and not the 32-bit MinGW compiler we instructed you to install.\n    // Please re-install Qt Creator with the proper compiler (MinGW 32-bit) enabled.\n#if _WIN64\n    if (exceptionInfo && exceptionInfo->ContextRecord && exceptionInfo->ContextRecord->Rip) {\n        stacktrace::fakeCallStackPointer() = (void*) exceptionInfo;\n    }\n#else\n    if (exceptionInfo && exceptionInfo->ContextRecord && exceptionInfo->ContextRecord->Eip) {\n        stacktrace::fakeCallStackPointer() = (void*) exceptionInfo;\n    }\n#endif // _WIN64\n    DWORD code = exceptionInfo->ExceptionRecord->ExceptionCode;\n    if (code == EXCEPTION_STACK_OVERFLOW || code == EXCEPTION_FLT_STACK_CHECK) {\n        stanfordCppLibSignalHandler(SIGSTACK);\n    } else if (code == EXCEPTION_IN_PAGE_ERROR || code == EXCEPTION_ACCESS_VIOLATION) {\n        stanfordCppLibSignalHandler(SIGSEGV);\n    } else if (code == EXCEPTION_FLT_DENORMAL_OPERAND || code == EXCEPTION_FLT_DIVIDE_BY_ZERO\n               || code == EXCEPTION_FLT_INEXACT_RESULT || code == EXCEPTION_FLT_INVALID_OPERATION\n               || code == EXCEPTION_FLT_OVERFLOW || code == EXCEPTION_FLT_UNDERFLOW\n               || code == EXCEPTION_INT_DIVIDE_BY_ZERO || code == EXCEPTION_INT_OVERFLOW) {\n        stanfordCppLibSignalHandler(SIGFPE);\n    } else if (code == EXCEPTION_ILLEGAL_INSTRUCTION || code == EXCEPTION_PRIV_INSTRUCTION) {\n        stanfordCppLibSignalHandler(SIGILL);\n    } else {\n        stanfordCppLibSignalHandler(SIGUNKNOWN);\n    }\n    return EXCEPTION_EXECUTE_HANDLER;\n}\n#endif // _WIN32\n\nvoid setTopLevelExceptionHandlerEnabled(bool enabled, bool force) {\n    static void (* old_terminate)() = nullptr;\n    static void (* old_unexpected)() = nullptr;\n\n    if ((!STATIC_VARIABLE(topLevelExceptionHandlerEnabled) || force) && enabled) {\n        if (!old_terminate) {\n            old_terminate = std::set_terminate(stanfordCppLibTerminateHandler);\n            old_unexpected = std::set_unexpected(stanfordCppLibUnexpectedHandler);\n        } else {\n            std::set_terminate(stanfordCppLibTerminateHandler);\n            std::set_unexpected(stanfordCppLibUnexpectedHandler);\n        }\n#ifdef _WIN32\n        // disabling this code for now because it messes with the\n        // newly added uncaught signal handler\n        // SetErrorMode(SEM_NOGPFAULTERRORBOX);\n        SetErrorMode(SEM_FAILCRITICALERRORS);\n        // SetThreadErrorMode(SEM_FAILCRITICALERRORS, nullptr);\n        SetUnhandledExceptionFilter(UnhandledException);\n        // _invalid_parameter_handler newHandler;\n        // newHandler = myInvalidParameterHandler;\n        // _set_invalid_parameter_handler(newHandler);\n        //_set_error_mode(_OUT_TO_STDERR);\n#endif // _WIN32\n        \n        // also set up a signal handler for things like segfaults / null-pointer-dereferences\n        signalHandlerEnable();\n    } else if ((STATIC_VARIABLE(topLevelExceptionHandlerEnabled) || force) && !enabled) {\n        std::set_terminate(old_terminate);\n        std::set_unexpected(old_unexpected);\n    }\n    STATIC_VARIABLE(topLevelExceptionHandlerEnabled) = enabled;\n}\n\n/*\n * Some lines from the stack trace are filtered out because they come from\n * private library code or OS code and would confuse the student.\n */\nbool shouldFilterOutFromStackTrace(const std::string& function) {\n    // exact names that should be matched and filtered\n    static const Vector<std::string> FORBIDDEN_NAMES {\n        \"\",\n        \"??\",\n        \"call_stack\",\n        \"_clone\",\n        \"clone\",\n        \"error\",\n        \"error(const string&)\",\n        \"error(string)\",\n        \"ErrorException\",\n        \"__libc_start_main\",\n        \"_start\",\n        \"startupMain(int, char**)\",\n        \"(unknown)\",\n        \"_Unwind_Resume\"\n    };\n\n    // substrings to filter (don't show any func whose name contains these)\n    static const Vector<std::string> FORBIDDEN_SUBSTRINGS {\n        \" error(\",\n        \"__cxa_rethrow\",\n        \"__cxa_call_terminate\",\n        \"__cxa_call_unexpected\",\n        \"__func::\",\n        \"__function::\",\n        \"_endthreadex\",\n        \"_Function_base::_Base_manager::\",\n        \"_Function_handler\",\n        \"_Internal_\",\n        \"__invoke_impl\",\n        \"__invoke_result::type\",\n        \"__invoke_void\",\n        \"__unexpected\",\n        \"thread::_Invoker\",\n        \"thread::_State_impl\",\n        \"_M_invoke\",\n        \"_sigtramp\",\n        \"autograderMain\",\n        \"BaseThreadInitThunk\",\n        \"call_stack_gcc.cpp\",\n        \"call_stack_windows.cpp\",\n        \"CFRunLoopDoSource\",\n        \"CFRunLoopRun\",\n        \"CFRUNLOOP_IS\",\n        \"crtexe.c\",\n        \"decltype(forward\",\n        \"ErrorException::ErrorException\",\n        \"exceptions.cpp\",\n        \"function::operator\",\n        \"GetModuleFileName\",\n        \"GetProfileString\",\n        // \"GStudentThread::run\",\n        \"GThreadQt::run\",\n        \"GThreadQt::start\",\n        \"GThreadStd::run\",\n        \"GThreadStd::start\",\n        \"InitializeExceptionChain\",\n        \"KnownExceptionFilter\",\n        \"M_invoke\",\n        \"multimain.cpp\",\n        // \"operator\",\n        \"pthread_body\",\n        \"pthread_start\",\n        \"printStackTrace\",\n        // \"QAbstractItemModel::\",\n        // \"QAbstractProxyModel::\",\n        \"QApplication::notify\",\n        \"QApplicationPrivate::\",\n        \"QCoreApplication::\",\n        \"QGuiApplicationPrivate::\",\n        \"QMetaMethod::\",\n        \"QMetaObject::\",\n        \"QObjectPrivate::\",\n        \"qt_plugin_instance\",\n        \"QtGui::startBackgroundEventLoop\",\n        // \"QWidget::\",\n        \"QWidgetBackingStore::\",\n        \"QWindowSystemInterface::\",\n        \"require::_errorMessage\",\n        \"RunCurrentEventLoopInMode\",\n        \"shouldFilterOutFromStackTrace\",\n        \"stacktrace::\",\n        \"stanfordCppLibPosixSignalHandler\",\n        \"stanfordCppLibSignalHandler\",\n        \"stanfordCppLibTerminateHandler\",\n        \"stanfordCppLibUnexpectedHandler\",\n        \"testing::\",\n        \"UnhandledException\",\n        \"WinMain@\"\n    };\n\n    // prefixes to filter (don't show any func whose name starts with these)\n    static const Vector<std::string> FORBIDDEN_PREFIXES {\n        // \"__\"\n    };\n\n    for (const std::string& name : FORBIDDEN_NAMES) {\n        if (function == name) {\n            return true;\n        }\n    }\n\n    for (const std::string& name : FORBIDDEN_SUBSTRINGS) {\n        if (function.find(name) != std::string::npos) {\n            return true;\n        }\n    }\n\n    for (const std::string& name : FORBIDDEN_PREFIXES) {\n        if (function.find(name) == 0) {\n            return true;\n        }\n    }\n\n    return false;\n}\n\nvoid printStackTrace() {\n    printStackTrace(std::cerr);\n}\n\nvoid printStackTrace(std::ostream& out) {\n    // constructing the following object jumps into fancy code in call_stack_gcc/windows.cpp\n    // to rebuild the stack trace; implementation differs for each operating system\n    stacktrace::call_stack trace;\n    Vector<stacktrace::entry> entries = trace.stack;\n    \n    // get longest line string length to line up stack traces\n    void* fakeStackPtr = stacktrace::fakeCallStackPointer();\n    int entriesToShowCount = 0;\n    int funcNameLength = 0;\n    int lineStrLength = 0;\n    for (int i = 0; i < entries.size(); ++i) {\n        entries[i].function = cleanupFunctionNameForStackTrace(entries[i].function);\n        if (!STATIC_VARIABLE(STACK_TRACE_SHOULD_FILTER)\n                || (!shouldFilterOutFromStackTrace(entries[i].function)\n                    && !shouldFilterOutFromStackTrace(entries[i].file)\n                    && !shouldFilterOutFromStackTrace(entries[i].lineStr))) {\n            lineStrLength = std::max(lineStrLength, (int) entries[i].lineStr.length());\n            funcNameLength = std::max(funcNameLength, (int) entries[i].function.length());\n            entriesToShowCount++;\n        }\n    }\n    \n    if (entries.isEmpty() || entriesToShowCount == 0) {\n        return;   // couldn't get a stack trace, or had no useful data  :-(\n    }\n    \n    if (lineStrLength > 0) {\n        out << \"*** Stack trace (line numbers are approximate):\" << std::endl;\n        if (STATIC_VARIABLE(STACK_TRACE_SHOW_TOP_BOTTOM_BARS)) {\n            std::ostringstream lineout;\n            lineout << \"*** \" << std::setw(lineStrLength) << std::left\n                    << \"file:line\" << \"  \" << \"function\" << std::endl\n                    << \"*** \" << std::string(lineStrLength + 2 + funcNameLength, '=') << std::endl;\n            out << lineout.str() << std::endl;\n        }\n    } else {\n        out << \"*** Stack trace:\" << std::endl;\n    }\n    \n    for (int i = 0; i < entries.size(); ++i) {\n        stacktrace::entry entry = entries[i];\n        entry.file = getTail(entry.file);\n        \n        // skip certain entries for clarity\n        if (STATIC_VARIABLE(STACK_TRACE_SHOULD_FILTER)\n                && (shouldFilterOutFromStackTrace(entry.function)\n                    || shouldFilterOutFromStackTrace(entry.file)\n                    || shouldFilterOutFromStackTrace(entry.lineStr))) {\n            continue;\n        }\n        \n        // show Main() as main() to hide hidden case-change by Stanford C++ lib internals\n        if (startsWith(entry.function, \"Main(\")) {\n            entry.function.replace(0, 5, \"main(\");\n        }\n\n        // for some reason, some functions don't show () parens after; add them\n        if (!entry.function.empty() && !stringContains(entry.function, \"(\")) {\n            entry.function += \"()\";\n        }\n\n        // fix main to hide int/char**\n        if (entry.function == \"main(int, char**)\") {\n            entry.function = \"main()\";\n        }\n\n        // fix qMain => main to hide Qt main renaming\n        if (entry.function == \"qMain()\") {\n            entry.function = \"main()\";\n        }\n\n        std::string lineStr = \"\";\n        if (!entry.lineStr.empty()) {\n            lineStr = trimEnd(entry.lineStr);\n            if (lineStr == \"?? ??:0\") {\n                lineStr = \"(unknown)\";\n            }\n\n            if (entry.line == 0 && stringContains(lineStr, \":\")) {\n                Vector<std::string> tokens = stringSplit(lineStr, \":\");\n                if (stringIsInteger(tokens[tokens.size() - 1])) {\n                    entry.line = stringToInteger(tokens[tokens.size() - 1]);\n                }\n            }\n        }\n        if (entry.lineStr.empty() && entry.line > 0) {\n            lineStr = \"line \" + std::to_string(entry.line);\n        }\n        \n        // we use a temporary 'lineout' because cerr aggressively flushes on <<,\n        // leading to awkward line breaks in the output pane\n        std::ostringstream lineout;\n        lineout << \"*** \" << std::left << std::setw(lineStrLength) << lineStr\n                  << \"  \" << entry.function;\n        out << lineout.str() << std::endl;\n        \n        // don't show entries beneath the student's main() function, for simplicity\n        if (entry.function == \"main\"\n                || entry.function == \"main()\"\n                || entry.function == \"main(int, char**)\"\n                || entry.function == \"qMain\"\n                || entry.function == \"qMain()\") {\n            break;\n        }\n    }\n    if (entries.size() == 1 && fakeStackPtr && entries[0].address == fakeStackPtr) {\n        out << \"*** (partial stack due to crash)\" << std::endl;\n    }\n\n    if (STATIC_VARIABLE(STACK_TRACE_SHOW_TOP_BOTTOM_BARS) && lineStrLength > 0) {\n        std::ostringstream lineout;\n        lineout << \"*** \" << std::string(lineStrLength + 2 + funcNameLength, '=');\n        out << lineout.str() << std::endl;\n    }\n    \n    out << \"***\" << std::endl;\n    out << \"*** To learn more about the crash, we strongly\" << std::endl;\n    out << \"*** suggest running your program under the debugger.\" << std::endl;\n    out << \"***\" << std::endl;\n}\n\n// macro to avoid lots of redundancy in catch statements below\n#ifdef _WIN32\n#define THROW_NOT_ON_WINDOWS(ex)\n#else\n#define THROW_NOT_ON_WINDOWS(ex) throw(ex)\n#endif // _WIN32\n\n#define FILL_IN_EXCEPTION_TRACE(ex, kind, desc) \\\n    {\\\n    std::string __kind = (kind); \\\n    std::string __desc = (desc); \\\n    if ((!__kind.empty())) { stringReplaceInPlace(msg, DEFAULT_EXCEPTION_KIND, __kind); } \\\n    if ((!__desc.empty())) { stringReplaceInPlace(msg, DEFAULT_EXCEPTION_DETAILS, __desc); } \\\n    out << msg; \\\n    out.flush(); \\\n    printStackTrace(out); \\\n    THROW_NOT_ON_WINDOWS(ex); \\\n    }\n\n#define FILL_IN_EXCEPTION_TRACE_AND_THROW_ERROREXCEPTION(ex, kind, desc) \\\n    {\\\n    std::string __kind = (kind); \\\n    std::string __desc = (desc); \\\n    if ((!__kind.empty())) { stringReplaceInPlace(msg, DEFAULT_EXCEPTION_KIND, __kind); } \\\n    if ((!__desc.empty())) { stringReplaceInPlace(msg, DEFAULT_EXCEPTION_DETAILS, __desc); } \\\n    out << msg; \\\n    printStackTrace(out); \\\n    ErrorException errorEx(out.str()); \\\n    errorEx.setKind(kind); \\\n    THROW_NOT_ON_WINDOWS(errorEx); \\\n    }\n\nstatic void signalHandlerDisable() {\n    for (int sig : STATIC_VARIABLE(SIGNALS_HANDLED)) {\n        signal(sig, SIG_DFL);\n    }\n}\n\n#ifndef _WIN32\nvoid stanfordCppLibPosixSignalHandler(int sig, siginfo_t* /*siginfo*/, void* /*context*/) {\n    stanfordCppLibSignalHandler(sig);\n}\n#endif\n\nstatic void signalHandlerEnable() {\n    bool handled = false;\n#ifdef SHOULD_USE_SIGNAL_STACK\n#if !defined(_WIN32)\n    // alternate stack on Linux for stack overflows\n    static uint8_t alternate_stack[SIGSTKSZ];\n    stack_t ss = {};\n    ss.ss_sp = (void*) alternate_stack;\n    ss.ss_size = SIGSTKSZ;\n    ss.ss_flags = 0;\n    sigaltstack(&ss, nullptr);\n    \n    struct sigaction sig_action = {};\n    sig_action.sa_sigaction = stanfordCppLibPosixSignalHandler;\n    sigemptyset(&sig_action.sa_mask);\n#ifdef __APPLE__\n    // backtrace() doesn't work on OS X when we use an alternate stack\n    sig_action.sa_flags = SA_SIGINFO;\n#else\n    sig_action.sa_flags = SA_SIGINFO | SA_ONSTACK;\n#endif // __APPLE__\n    sigaction(SIGSEGV, &sig_action, nullptr);\n    sigaction(SIGFPE,  &sig_action, nullptr);\n    sigaction(SIGILL,  &sig_action, nullptr);\n    sigaction(SIGTERM, &sig_action, nullptr);\n    sigaction(SIGUSR1, &sig_action, nullptr);\n#ifdef SPL_AUTOGRADER_MODE\n    sigaction(SIGINT,  &sig_action, nullptr);\n#else // not SPL_AUTOGRADER_MODE\n    sigaction(SIGABRT, &sig_action, nullptr);\n#endif // SPL_AUTOGRADER_MODE\n    handled = true;\n#endif\n#endif // SHOULD_USE_SIGNAL_STACK\n\n    if (!handled) {\n        for (int sig : STATIC_VARIABLE(SIGNALS_HANDLED)) {\n            signal(sig, stanfordCppLibSignalHandler);\n        }\n    }\n}\n\n/*\n * A general handler for process signals.\n * Prints details about the signal and then tries to print a stack trace.\n */\nstatic void stanfordCppLibSignalHandler(int sig) {\n#ifndef SPL_AUTOGRADER_MODE\n    // turn the signal handler off (should run only once; avoid infinite cycle)\n    signalHandlerDisable();\n#endif // SPL_AUTOGRADER_MODE\n\n    // tailor the error message to the kind of signal that occurred\n    std::string SIGNAL_KIND = \"A fatal error\";\n    std::string SIGNAL_DETAILS = \"No details were provided about the error.\";\n    if (sig == SIGSEGV) {\n        SIGNAL_KIND = \"A segmentation fault (SIGSEGV)\";\n        SIGNAL_DETAILS = \"This typically happens when you try to dereference a pointer\\n*** that is null or invalid.\";\n    } else if (sig == SIGABRT) {\n        SIGNAL_KIND = \"An abort error (SIGABRT)\";\n        SIGNAL_DETAILS = \"This error is thrown by system functions that detect corrupt state.\";\n    } else if (sig == SIGILL) {\n        SIGNAL_KIND = \"An illegal instruction error (SIGILL)\";\n        SIGNAL_DETAILS = \"This typically happens when you have corrupted your program's memory.\";\n    } else if (sig == SIGFPE) {\n        SIGNAL_KIND = \"An arithmetic error (SIGFPE)\";\n        SIGNAL_DETAILS = \"This typically happens when you divide by 0 or produce an overflow.\";\n    } else if (sig == SIGINT) {\n        SIGNAL_KIND = \"An interrupt error (SIGINT)\";\n        SIGNAL_DETAILS = \"This typically happens when your code timed out because it was stuck in an infinite loop.\";\n    } else if (sig == SIGSTACK) {\n        SIGNAL_KIND = \"A stack overflow\";\n        SIGNAL_DETAILS = \"This can happen when you have a function that calls itself infinitely.\";\n    } else if (sig == SIGUSR1) {\n        SIGNAL_KIND = \"Custom signal 1\";\n        SIGNAL_DETAILS = \"This can happen when you produce infinite output in your code.\";\n    }\n    \n#ifndef SPL_AUTOGRADER_MODE\n    std::cerr << std::endl;\n    std::cerr << \"***\" << std::endl;\n    std::cerr << \"*** STANFORD C++ LIBRARY\" << std::endl;\n    std::cerr << (std::string(\"*** \") + SIGNAL_KIND + \" occurred during program execution.\") << std::endl;\n    std::cerr << (std::string(\"*** \") + SIGNAL_DETAILS) << std::endl;\n    std::cerr << \"***\" << std::endl;\n    \n//    if (sig != SIGSTACK) {\n        exceptions::printStackTrace();\n//    } else {\n//        std::string line;\n//        stacktrace::addr2line(stacktrace::getFakeCallStackPointer(), line);\n//        std::cerr << \"*** (unable to print stack trace because of stack memory corruption.)\" << std::endl;\n//        std::cerr << \"*** \" << line << std::endl;\n//    }\n    std::cerr.flush();\n\n    // if in autograder mode, swallow the signal;\n    // if in student code, let it bubble out to crash the app\n    raise(sig == SIGSTACK ? SIGABRT : sig);\n#else // SPL_AUTOGRADER_MODE\n    // throw an exception\n    std::ostringstream out;\n    out << SIGNAL_KIND << \".\" << std::endl;\n    out << SIGNAL_DETAILS << std::endl;\n    error(out.str());\n#endif // SPL_AUTOGRADER_MODE\n}\n\n// puts \"*** \" before each line for multi-line error messages\nstatic std::string insertStarsBeforeEachLine(const std::string& s) {\n    std::string result;\n    for (std::string line : stringSplit(s, \"\\n\")) {\n        if (!result.empty()) {\n            if (!startsWith(line, \"***\")) {\n                line = \"*** \" + line;\n            }\n            result += \"\\n\";\n        }\n        result += line;\n    }\n    return result;\n}\n\n/*\n * A general handler for any uncaught exception.\n * Prints details about the exception and then tries to print a stack trace.\n */\n[[noreturn]] static void stanfordCppLibTerminateHandler() {\n    std::string DEFAULT_EXCEPTION_KIND = \"An exception\";\n    std::string DEFAULT_EXCEPTION_DETAILS = \"(unknown exception details)\";\n    \n    std::string msg;\n    msg += \"\\n\";\n    msg += \"***\\n\";\n    msg += \"*** STANFORD C++ LIBRARY \\n\";\n    msg += \"*** \" + DEFAULT_EXCEPTION_KIND + \" occurred during program execution: \\n\";\n    msg += \"*** \" + DEFAULT_EXCEPTION_DETAILS + \"\\n\";\n    msg += \"***\\n\";\n    \n    std::ostream& out = std::cerr;   // used by FILL_IN_EXCEPTION_TRACE macro\n    try {\n        signalHandlerDisable();   // don't want both a signal AND a terminate() call\n        throw;   // re-throws the exception that already occurred\n    } catch (const ErrorException& ex) {\n        if (ex.hasStackTrace()) {\n            ex.dump();\n        } else {\n            FILL_IN_EXCEPTION_TRACE(ex, \"An ErrorException\", insertStarsBeforeEachLine(ex.what()));\n        }\n    } catch (const std::exception& ex) {\n        FILL_IN_EXCEPTION_TRACE(ex, \"A C++ exception\", insertStarsBeforeEachLine(ex.what()));\n    } catch (const std::string& str) {\n        FILL_IN_EXCEPTION_TRACE(str, \"A string exception\", insertStarsBeforeEachLine(str));\n    } catch (char const* str) {\n        FILL_IN_EXCEPTION_TRACE(str, \"A string exception\", insertStarsBeforeEachLine(str));\n    } catch (int n) {\n        FILL_IN_EXCEPTION_TRACE(n, \"An int exception\", std::to_string(n));\n    } catch (long l) {\n        FILL_IN_EXCEPTION_TRACE(l, \"A long exception\", std::to_string(l));\n    } catch (char c) {\n        FILL_IN_EXCEPTION_TRACE(c, \"A char exception\", charToString(c));\n    } catch (bool b) {\n        FILL_IN_EXCEPTION_TRACE(b, \"A bool exception\", boolToString(b));\n    } catch (double d) {\n        FILL_IN_EXCEPTION_TRACE(d, \"A double exception\", realToString(d));\n    } catch (...) {\n        std::string ex = \"Unknown\";\n        FILL_IN_EXCEPTION_TRACE(ex, \"An exception\", std::string());\n    }\n\n    abort();   // terminate the program with a SIGABRT signal\n}\n\n/*\n * A general handler for any exception thrown that is missing from the throw()\n * clause of a function header.\n * Prints details about the exception and then tries to print a stack trace.\n */\nstatic void stanfordCppLibUnexpectedHandler() {\n    std::string DEFAULT_EXCEPTION_KIND = \"An exception\";\n    std::string DEFAULT_EXCEPTION_DETAILS = \"(unknown exception details)\";\n\n    std::string msg;\n    msg += \"\\n\";\n    msg += \"***\\n\";\n    msg += \"*** STANFORD C++ LIBRARY \\n\";\n    msg += \"*** \" + DEFAULT_EXCEPTION_KIND + \" occurred during program execution: \\n\";\n    msg += \"*** \" + DEFAULT_EXCEPTION_DETAILS + \"\\n\";\n    msg += \"***\\n\";\n\n    std::string kind = \"error\";\n    std::string message = \"\";\n    try {\n        throw;   // re-throws the exception that already occurred\n    } catch (bool b) {\n        kind = \"bool\";\n        message = boolToString(b);\n    } catch (char c) {\n        kind = \"char\";\n        message = charToString(c);\n    } catch (char const* str) {\n        kind = \"string\";\n        message = str;\n    } catch (double d) {\n        kind = \"double\";\n        message = realToString(d);\n    } catch (const ErrorException& ex) {\n        kind = \"error\";\n        message = ex.what();\n    } catch (const std::exception& ex) {\n        kind = \"exception\";\n        message = ex.what();\n    } catch (int n) {\n        kind = \"int\";\n        message = std::to_string(n);\n    } catch (long l) {\n        kind = \"long\";\n        message = std::to_string(l);\n    } catch (std::string str) {\n        kind = \"string\";\n        message = str;\n    } catch (...) {\n        kind = \"unknown\";\n    }\n\n    ErrorException errorEx(message);\n    errorEx.setKind(kind);\n    throw errorEx;\n}\n\n} // namespace exceptions\n\n\n/////////////////////// END code extracted from StanfordCPPLib/system/exceptions.cpp ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/util/recursion.cpp ///////////////////////\n/*\n * File: recursion.cpp\n * -------------------\n * This file implements the recursion.h interface.\n */\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\nint getRecursionIndentLevel() {\n    // constructing the following object jumps into fancy code in call_stack_gcc/windows.cpp\n    // to rebuild the stack trace; implementation differs for each operating system\n    stacktrace::call_stack trace;\n    Vector<stacktrace::entry> entries = trace.stack;\n\n    std::string currentFunction = \"\";\n    int currentFunctionCount = 0;\n    for (int i = 0; i < entries.size(); ++i) {\n        // remove references to std:: namespace\n        if (exceptions::shouldFilterOutFromStackTrace(entries[i].function)\n                || entries[i].function.find(\"recursionIndent(\") != std::string::npos\n                || entries[i].function.find(\"getRecursionIndentLevel(\") != std::string::npos) {\n            continue;\n        } else if (currentFunction.empty()) {\n            currentFunction = entries[i].function;\n            currentFunctionCount = 1;\n        } else if (entries[i].function == currentFunction) {\n            currentFunctionCount++;\n        } else {\n            break;\n        }\n    }\n    return currentFunctionCount;\n}\n\nstd::string recursionIndent(const std::string& indenter) {\n    int indent = getRecursionIndentLevel();\n    std::string result = \"\";\n    for (int i = 0; i < indent - 1; i++) {\n        result += indenter;\n    }\n    return result;\n}\n\n/////////////////////// END code extracted from StanfordCPPLib/util/recursion.cpp ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/util/direction.cpp ///////////////////////\n/*\n * File: direction.cpp\n * -------------------\n * This file implements the direction.h interface.\n * \n * @version 2016/08/04\n * - fixed operator >> to not throw errors\n * @version 2014/10/08\n * - removed 'using namespace' statement\n */\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\n/*\n * Implementation notes: leftFrom, rightFrom, opposite\n * ---------------------------------------------------\n * These functions use the remainder operator to cycle through the\n * internal values of the enumeration type.  Note that the leftFrom\n * function cannot subtract 1 from the direction because the result\n * might then be negative; adding 3 achieves the same effect but\n * ensures that the values remain positive.\n */\n\nDirection leftFrom(Direction dir) {\n    return Direction((dir + 3) % 4);\n}\n\nDirection rightFrom(Direction dir) {\n    return Direction((dir + 1) % 4);\n}\n\nDirection opposite(Direction dir) {\n    return Direction((dir + 2) % 4);\n}\n\n/*\n * Implementation notes: directionToString\n * ---------------------------------------\n * The C++ compiler requires the default clause to ensure that this\n * function always returns a string, even if the direction is not one\n * of the legal values.\n */\n\nstd::string directionToString(Direction dir) {\n    switch (dir) {\n    case NORTH:\n        return \"NORTH\";\n    case EAST:\n        return \"EAST\";\n    case SOUTH:\n        return \"SOUTH\";\n    default:\n    // case WEST:\n        return \"WEST\";   // BUGFIX 2014/07/09: removed unreachable 'default' case\n    }\n}\n\n/*\n * Implementation notes: <<\n * ------------------------\n * This operator must return the stream by reference after printing\n * the value.  The operator << returns this stream, so the function\n * can be implemented as a single line.\n */\n\nstd::ostream& operator <<(std::ostream& os, const Direction& dir) {\n    return os << directionToString(dir);\n}\n\n/*\n * Implementation notes: >>\n * ------------------------\n * This implementation uses the TokenScanner to read tokens from the\n * stream.\n */\n\nstd::istream& operator >>(std::istream& is, Direction& dir) {\n    TokenScanner scanner(is);\n    scanner.ignoreWhitespace();\n    std::string token = toUpperCase(scanner.nextToken());\n    if (token == \"\") {\n        dir = Direction(-1);\n    } else if (startsWith(\"NORTH\", token)) {\n        dir = NORTH;\n    } else if (startsWith(\"EAST\", token)) {\n        dir = EAST;\n    } else if (startsWith(\"SOUTH\", token)) {\n        dir = SOUTH;\n    } else if (startsWith(\"WEST\", token)) {\n        dir = WEST;\n    } else {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n        error(\"Direction::operator >>: Unrecognized direction \\\"\" + token + \"\\\"\");\n#endif\n        is.setstate(std::ios_base::failbit);\n        return is;\n    }\n    return is;\n}\n\n/*\n * Implementation notes: ++\n * ------------------------\n * The int parameter in the signature for this operator is a marker used\n * by the C++ compiler to identify the suffix form of the operator.  Note\n * that the value after incrementing a variable containing WEST will be\n * out of the Direction range.  That fact will not cause a problem if\n * this operator is used only in the for loop idiom for which it is defined.\n */\n\nDirection operator ++(Direction& dir, int) {\n    Direction old = dir;\n    dir = Direction(dir + 1);\n    return old;\n}\n\n/////////////////////// END code extracted from StanfordCPPLib/util/direction.cpp ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/util/gmath.cpp ///////////////////////\n/*\n * File: gmath.cpp\n * ---------------\n * This file implements the gmath.h interface.  In all cases, the\n * implementation for each function requires only one line of code,\n * which makes detailed documentation unnecessary.\n *\n * @version 2018/11/22\n * - added headless mode support\n * - alphabetized methods\n * @version 2016/10/14\n * - modified floating-point equality tests to use floatingPointEqual function\n */\n\n#define INTERNAL_INCLUDE 1\n\n#include <cmath>\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\nextern const double PI = 3.14159265358979323846;\nextern const double E  = 2.71828182845904523536;\n\ndouble cosDegrees(double angle) {\n    return cos(toRadians(angle));\n}\n\nint countDigits(int n, int base) {\n    if (base <= 0) {\n        error(\"countDigits: base must be 1 or greater\");\n    }\n    if (n == 0) {\n        return 0;\n    } else if (n < 0) {\n        n = -n;\n    }\n\n    int digits = 0;\n    for (int temp = n; temp > 0 && digits < 65; temp /= base) {\n        digits++;\n    }\n    return digits;\n}\n\ndouble sinDegrees(double angle) {\n    return sin(toRadians(angle));\n}\n\ndouble tanDegrees(double angle) {\n    return tan(toRadians(angle));\n}\n\ndouble toDegrees(double radians) {\n    return radians * 180 / PI;\n}\n\ndouble toRadians(double degrees) {\n    return degrees * PI / 180;\n}\n\ndouble vectorAngle(double x, double y) {\n    return floatingPointEqual(x, 0) && floatingPointEqual(y, 0)\n            ? 0 : toDegrees(atan2(-y, x));\n}\n\n#ifndef SPL_HEADLESS_MODE\ndouble vectorAngle(const GPoint& pt) {\n    return vectorAngle(pt.getX(), pt.getY());\n}\n#endif // SPL_HEADLESS_MODE\n\ndouble vectorAngle(const Point& pt) {\n    return vectorAngle(pt.getX(), pt.getY());\n}\n\ndouble vectorDistance(double x, double y) {\n    return sqrt(x * x + y * y);\n}\n\n#ifndef SPL_HEADLESS_MODE\ndouble vectorDistance(const GPoint& pt) {\n    return vectorDistance(pt.getX(), pt.getY());\n}\n#endif // SPL_HEADLESS_MODE\n\ndouble vectorDistance(const Point& pt) {\n    return vectorDistance(pt.getX(), pt.getY());\n}\n\n/////////////////////// END code extracted from StanfordCPPLib/util/gmath.cpp ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/util/point.cpp ///////////////////////\n/*\n * File: point.cpp\n * ---------------\n * This file implements the point.h interface.\n * \n * @version 2018/11/22\n * - added headless mode support\n * @version 2017/09/29\n * - updated to use composite hashCode function\n * @version 2014/10/08\n * - removed 'using namespace' statement\n */\n\n#define INTERNAL_INCLUDE 1\n\n#include <string>\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\nPoint::Point() {\n    x = 0;\n    y = 0;\n}\n\nPoint::Point(int x, int y) {\n    this->x = x;\n    this->y = y;\n}\n\n#ifndef SPL_HEADLESS_MODE\nPoint::Point(const GPoint& point) {\n    this->x = (int) point.getX();\n    this->y = (int) point.getY();\n}\n#endif // SPL_HEADLESS_MODE\n\nint Point::getX() const {\n    return x;\n}\n\nint Point::getY() const {\n    return y;\n}\n\nstd::string Point::toString() const {\n    return \"(\" + std::to_string(x) + \",\" + std::to_string(y) + \")\";\n}\n\nbool Point::operator ==(const Point& p2) const {\n    return (x == p2.x) && (y == p2.y);\n}\n\nbool Point::operator !=(const Point& p2) const {\n    return (x != p2.x) || (y != p2.y);\n}\n\nstd::ostream& operator <<(std::ostream& os, const Point& pt) {\n    return os << pt.toString();\n}\n\nint hashCode(const Point& pt) {\n    return hashCode(pt.getX(), pt.getY());\n}\n\n/////////////////////// END code extracted from StanfordCPPLib/util/point.cpp ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/util/random.cpp ///////////////////////\n/*\n * File: random.cpp\n * ----------------\n * This file implements the random.h interface.\n * \n * @version 2019/05/16\n * - added randomColor that takes min/max RGB\n * @version 2017/10/05\n * - added randomFeedClear\n * @version 2017/09/28\n * - moved random 'feed' functions into autograder namespace\n * - ensure that randomly fed integers are within the specified range\n * @version 2016/10/04\n * - removed all static variables (replaced with STATIC_VARIABLE macros)\n * @version 2016/08/02\n * - added randomColor, randomColorString\n * @version 2014/10/19\n * - alphabetized functions\n * @version 2014/10/08\n * - removed 'using namespace' statement\n */\n\n#define INTERNAL_INCLUDE 1\n\n#include <cstdlib>\n#include <cmath>\n#include <ctime>\n#include <iostream>\n#include <iomanip>\n#include <queue>\n#include <sstream>\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\n/* Private function prototype */\n\nstatic void initRandomSeed();\n\n/* internal buffer of fixed random numbers to return; used by autograders */\nSTATIC_VARIABLE_DECLARE_COLLECTION_EMPTY(std::queue<bool>, fixedBools)\nSTATIC_VARIABLE_DECLARE_COLLECTION_EMPTY(std::queue<int>, fixedInts)\nSTATIC_VARIABLE_DECLARE_COLLECTION_EMPTY(std::queue<double>, fixedReals)\n\nnamespace autograder {\nvoid randomFeedBool(bool value) {\n    STATIC_VARIABLE(fixedBools).push(value);\n}\n\nvoid randomFeedClear() {\n    STATIC_VARIABLE(fixedBools) = std::queue<bool>();\n    STATIC_VARIABLE(fixedInts) = std::queue<int>();\n    STATIC_VARIABLE(fixedReals) = std::queue<double>();\n}\n\nvoid randomFeedInteger(int value) {\n    STATIC_VARIABLE(fixedInts).push(value);\n}\n\nvoid randomFeedReal(double value) {\n    STATIC_VARIABLE(fixedReals).push(value);\n}\n}\n/* end 'fixed' internal stuff */\n\nbool randomBool() {\n    return randomChance(0.5);\n}\n\n/*\n * Implementation notes: randomChance\n * ----------------------------------\n * The code for randomChance calls randomReal(0, 1) and then checks\n * whether the result is less than the requested probability.\n */\nbool randomChance(double p) {\n    if (!STATIC_VARIABLE(fixedBools).empty()) {\n        bool top = STATIC_VARIABLE(fixedBools).front();\n        STATIC_VARIABLE(fixedBools).pop();\n        return top;\n    }\n    initRandomSeed();\n    return randomReal(0, 1) < p;\n}\n\nint randomColor() {\n    if (!STATIC_VARIABLE(fixedInts).empty()) {\n        int top = STATIC_VARIABLE(fixedInts).front();\n        STATIC_VARIABLE(fixedInts).pop();\n        return top & 0x00ffffff;\n    }\n    initRandomSeed();\n    return rand() & 0x00ffffff;\n}\n\nint randomColor(int minRGB, int maxRGB) {\n    if (!STATIC_VARIABLE(fixedInts).empty()) {\n        return randomColor();\n    }\n    if (minRGB < 0 || minRGB > 255 || maxRGB < 0 || maxRGB > 255\n            || minRGB > maxRGB) {\n        error(\"randomColor: min/max values out of range\");\n    }\n    int r = randomInteger(minRGB, maxRGB);\n    int g = randomInteger(minRGB, maxRGB);\n    int b = randomInteger(minRGB, maxRGB);\n    return r << 16 | g << 8 | b;\n}\n\n// see convertRGBToColor in gcolor.h (repeated here to avoid Qt dependency)\nstd::string randomColorString() {\n    int rgb = randomColor();\n    std::ostringstream os;\n    os << std::hex << std::uppercase << \"#\";\n    os << std::setw(2) << std::setfill('0') << (rgb >> 16 & 0xFF);\n    os << std::setw(2) << std::setfill('0') << (rgb >> 8 & 0xFF);\n    os << std::setw(2) << std::setfill('0') << (rgb & 0xFF);\n    return os.str();\n}\n\nstd::string randomColorString(int minRGB, int maxRGB) {\n    int rgb = randomColor(minRGB, maxRGB);\n    std::ostringstream os;\n    os << std::hex << std::uppercase << \"#\";\n    os << std::setw(2) << std::setfill('0') << (rgb >> 16 & 0xFF);\n    os << std::setw(2) << std::setfill('0') << (rgb >> 8 & 0xFF);\n    os << std::setw(2) << std::setfill('0') << (rgb & 0xFF);\n    return os.str();\n}\n\n/*\n * Implementation notes: randomInteger\n * -----------------------------------\n * The code for randomInteger produces the number in four steps:\n *\n * 1. Generate a random real number d in the range [0 .. 1).\n * 2. Scale the number to the range [0 .. N) where N is the number of values.\n * 3. Translate the number so that the range starts at the appropriate value.\n * 4. Convert the result to the next lower integer.\n *\n * The implementation is complicated by the fact that both the expression\n *\n *     RAND_MAX + 1\n *\n * and the expression for the number of values\n *\n *     high - low + 1\n *\n * can overflow the integer range.  These calculations must therefore be\n * performed using doubles instead of ints.\n */\nint randomInteger(int low, int high) {\n    if (!STATIC_VARIABLE(fixedInts).empty()) {\n        int top = STATIC_VARIABLE(fixedInts).front();\n        STATIC_VARIABLE(fixedInts).pop();\n        if (top < low || top > high) {\n            // make sure the value is in the given range\n            // (assumes that low/high don't overflow int range)\n            int range = high - low + 1;\n            top = low + std::abs(top) % range;\n        }\n        return top;\n    }\n    initRandomSeed();\n    double d = rand() / (double(RAND_MAX) + 1);\n    double s = d * (double(high) - low + 1);\n    return int(floor(low + s));\n}\n\n/*\n * Implementation notes: randomReal\n * --------------------------------\n * The code for randomReal is similar to that for randomInteger,\n * without the final conversion step.\n */\ndouble randomReal(double low, double high) {\n    if (!STATIC_VARIABLE(fixedReals).empty()) {\n        double top = STATIC_VARIABLE(fixedReals).front();\n        STATIC_VARIABLE(fixedReals).pop();\n        return top;\n    }\n    initRandomSeed();\n    double d = rand() / (double(RAND_MAX) + 1);\n    double s = d * (high - low);\n    return low + s;\n}\n\n/*\n * Implementation notes: setRandomSeed\n * -----------------------------------\n * The setRandomSeed function simply forwards its argument to srand.\n * The call to initRandomSeed is required to set the initialized flag.\n */\nvoid setRandomSeed(int seed) {\n    initRandomSeed();\n    srand(seed);\n}\n\n/*\n * Implementation notes: initRandomSeed\n * ------------------------------------\n * The initRandomSeed function declares a static variable that keeps track\n * of whether the seed has been initialized.  The first time initRandomSeed\n * is called, initialized is false, so the seed is set to the current time.\n */\nstatic void initRandomSeed() {\n    static bool _initialized = false;\n    if (!_initialized) {\n        srand(int(time(nullptr)));\n        rand();   // BUGFIX: throwaway call to get randomness going\n        _initialized = true;\n    }\n}\n\n/////////////////////// END code extracted from StanfordCPPLib/util/random.cpp ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/util/regexpr.cpp ///////////////////////\n/*\n * File: regexpr.cpp\n * -----------------\n * Implementation of the functions in regexpr.h.\n * See regexpr.h for documentation of each function.\n *\n * @author Marty Stepp\n * @version 2018/12/16\n * - added CodeStepByStep disabling of regexes\n * @version 2018/11/22\n * - added headless (non-Qt) mode support\n * @version 2015/07/05\n * - removed static global Platform variable, replaced by getPlatform as needed\n * @version 2014/10/14\n * - removed regexMatchCountWithLines for simplicity\n * 2014/10/08\n * - removed 'using namespace' statement\n * @since 2014/03/01\n */\n\n#define INTERNAL_INCLUDE 1\n\n#ifndef SPL_HEADLESS_MODE\n#include <QtGlobal>\n#endif // SPL_HEADLESS_MODE\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\n#if defined(SPL_CODESTEPBYSTEP) || QT_VERSION < QT_VERSION_CHECK(5, 9, 0)\nbool regexMatch(const std::string& /*s*/, const std::string& /*regexp*/) {\n    return false;   // not supported\n}\n\nint regexMatchCount(const std::string& /*s*/, const std::string& /*regexp*/) {\n    return 0;   // not supported\n}\n\nvoid regexMatchCountWithLines(const std::string& /*s*/, const std::string& /*regexp*/,\n                             Vector<int>& /*linesOut*/) {\n    // empty; not supported\n}\n\nstd::string regexReplace(const std::string& s, const std::string& /*regexp*/, const std::string& /*replacement*/, int /*limit*/) {\n    return s;   // not supported\n}\n\n#else // QT_VERSION\n\n// C++ regex support\n#include <iterator>\n#include <regex>\n\nbool regexMatch(const std::string& s, const std::string& regexp) {\n    std::regex reg(regexp);\n    std::smatch match;\n    return std::regex_search(s, match, reg);\n}\n\nint regexMatchCount(const std::string& s, const std::string& regexp) {\n    std::regex reg(regexp);\n    auto it1 = std::sregex_iterator(s.begin(), s.end(), reg);\n    auto it2 = std::sregex_iterator();\n    return std::distance(it1, it2);\n}\n\nvoid regexMatchCountWithLines(const std::string& s, const std::string& regexp,\n                             Vector<int>& linesOut) {\n    linesOut.clear();\n\n    // keep a running index and line#, and each time we find a regex match,\n    // \"walk\" forward to its index.  when we see a \\n, increment line number\n    int currentIndex = 0;\n    int currentLine = 1;\n\n    // get all regex matches by character position/index\n    std::regex reg(regexp);\n    for (std::sregex_iterator itr = std::sregex_iterator(s.begin(), s.end(), reg),\n            end = std::sregex_iterator();\n            itr != end;\n            ++itr) {\n        std::smatch match = *itr;\n        int matchIndex = (int) match.position();\n        while (currentIndex < (int) s.length() && currentIndex < matchIndex) {\n            if (s[currentIndex] == '\\n') {\n                currentLine++;\n            }\n            currentIndex++;\n        }\n        linesOut.add(currentLine);\n    }\n}\n\nstd::string regexReplace(const std::string& s, const std::string& regexp, const std::string& replacement, int limit) {\n    std::regex reg(regexp);\n    std::string result;\n    if (limit == 1) {\n        // replace single occurrence\n        result = std::regex_replace(s, reg, replacement,\n                                    std::regex_constants::format_first_only);\n    } else if (limit <= 0) {\n        // replace all\n        result = std::regex_replace(s, reg, replacement);\n    } else {\n        error(\"regexReplace: given limit not supported.\");\n    }\n    return result;\n}\n#endif // QT_VERSION\n\n// this function can be implemented the same way whether regexes are available or not\nint regexMatchCountWithLines(const std::string& s, const std::string& regexp, std::string& linesOut) {\n    Vector<int> linesOutVec;\n    regexMatchCountWithLines(s, regexp, linesOutVec);\n\n    // concatenate the vector into a string like \"1, 4, 7, 7, 19\"\n    linesOut = \"\";\n    if (!linesOutVec.isEmpty()) {\n        linesOut += std::to_string(linesOutVec[0]);\n        for (int i = 1; i < linesOutVec.size(); i++) {\n            linesOut += \", \" + std::to_string(linesOutVec[i]);\n        }\n    }\n    return linesOutVec.size();\n}\n\n/////////////////////// END code extracted from StanfordCPPLib/util/regexpr.cpp ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/util/strlib.cpp ///////////////////////\n/*\n * File: strlib.cpp\n * ----------------\n * This file implements the strlib.h interface.\n * \n * @version 2018/11/14\n * - added std::to_string for bool, char, pointer, and generic template type T\n * - bug fix for pointerToString (was putting two \"0x\" prefixes)\n * @version 2018/09/02\n * - added padLeft, padRight\n * @version 2017/10/24\n * - print nullptr instead of null in uppercase\n * @version 2016/11/07\n * - bug fix: urlDecode throws error on invalid encodings (courtesy GitHub @scinart)\n * @version 2016/10/30\n * - alphabetized functions\n * - added overloads that take type char instead of string:\n *   stringContains, stringIndexOf, stringJoin, stringLastIndexOf, stringReplace,\n *   stringSplit, toLowerCase, toUpperCase\n * @version 2016/10/13\n * - modified writeQuotedString to return ostream\n * @version 2016/08/03\n * - modified readQuotedString not to throw error() on parse failures\n *   (needed to support idiomatic silent-failing >> operators)\n * @version 2015/11/07\n * - fixed bugs in urlDecode (wasn't decoding % sequences properly, oops)\n * @version 2015/10/26\n * - added charToInteger/integerToChar functions\n * @version 2015/06/19\n * - slight bug fix to make stringToInteger functions compile with int radix\n * @version 2015/05/22\n * - slight bug fix in stringToBool function\n * @version 2014/10/31\n * - fixed infinite loop bug in stringReplace function\n * @version 2014/10/19\n * - alphabetized functions\n * - added several 'inPlace' variants of existing functions that return strings\n * @version 2014/10/08\n * - removed 'using namespace' statement\n */\n\n#define INTERNAL_INCLUDE 1\n\n#include <cctype>\n#include <iomanip>\n#include <iostream>\n#include <sstream>\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\n/* Function prototypes */\n\nstd::string boolToString(bool b) {\n    return (b ? \"true\" : \"false\");\n}\n\nstd::string boolToString(int b) {\n    return (b ? \"true\" : \"false\");\n}\n\nint charToInteger(char c) {\n    if (c < '0' || c > '9') {\n        std::ostringstream out;\n        out << \"charToInteger: character is not numeric: '\" << c\n            << \"' (ASCII value \" << (int) c << \")\";\n        error(out.str());\n    }\n    return c - '0';\n}\n\nstd::string charToString(char c) {\n    std::string s;\n    s += c;\n    return s;\n}\n\nstd::string doubleToString(double d) {\n    return realToString(d);\n}\n\nbool endsWith(const std::string& str, char suffix) {\n    return str.length() > 0 && str[str.length() - 1] == suffix;\n}\n\nbool endsWith(const std::string& str, const std::string& suffix) {\n    int nChars = suffix.length();\n    int start = str.length() - nChars;\n    if (start < 0) return false;\n    for (int i = 0; i < nChars; i++) {\n        if (str[start + i] != suffix[i]) return false;\n    }\n    return true;\n}\n\n/*\n * Implementation notes: equalsIgnoreCase\n * --------------------------------------\n * This implementation uses a for loop to cycle through the characters in\n * each string.  Converting each string to uppercase and then comparing\n * the results makes for a shorter but less efficient implementation.\n */\nbool equalsIgnoreCase(const std::string& s1, const std::string& s2) {\n    if (s1.length() != s2.length()) return false;\n    int nChars = s1.length();\n    for (int i = 0; i < nChars; i++) {\n        if (tolower(s1[i]) != tolower(s2[i])) return false;\n    }\n    return true;\n}\n\nstd::string htmlDecode(const std::string& s) {\n    std::string result = s;\n    stringReplaceInPlace(result, \"&lt;\", \"<\");\n    stringReplaceInPlace(result, \"&gt;\", \">\");\n    stringReplaceInPlace(result, \"&quot;\", \"\\\"\");\n    stringReplaceInPlace(result, \"&amp;\", \"&\");\n    return result;\n}\n\nstd::string htmlEncode(const std::string& s) {\n    std::string result = s;\n    stringReplaceInPlace(result, \"&\", \"&amp;\");\n    stringReplaceInPlace(result, \"<\", \"&lt;\");\n    stringReplaceInPlace(result, \">\", \"&gt;\");\n    stringReplaceInPlace(result, \"\\\"\", \"&quot;\");\n    return result;\n}\n\nchar integerToChar(int n) {\n    if (n < 0 || n > 9) {\n        std::ostringstream out;\n        out << \"integerToChar: number must be between 0-9: \" << n;\n        error(out.str());\n    }\n    return (char) (n + '0');\n}\n\n/*\n * Implementation notes: numeric conversion\n * ----------------------------------------\n * These functions use the <sstream> library to perform the conversion.\n */\nstd::string integerToString(int n, int radix) {\n    if (radix <= 0) {\n        error(\"integerToString: Illegal radix: \" + std::to_string(radix));\n    }\n    std::ostringstream stream;\n    if (radix != 10) {\n        stream << std::setbase(radix);\n    }\n    stream << n;\n    return stream.str();\n}\n\nstd::string longToString(long n, int radix) {\n    if (radix <= 0) {\n        error(\"longToString: Illegal radix: \" + std::to_string(radix));\n    }\n    std::ostringstream stream;\n    if (radix != 10) {\n        stream << std::setbase(radix);\n    }\n    stream << n;\n    return stream.str();\n}\n\nstd::string padLeft(const std::string& s, int length, char fill) {\n    if ((int) s.length() >= length) {\n        return s;\n    } else {\n        std::ostringstream out;\n        for (int i = 0, count = length - (int) s.length(); i < count; i++) {\n            out << fill;\n        }\n        out << s;\n        return out.str();\n    }\n}\n\nstd::string padRight(const std::string& s, int length, char fill) {\n    if ((int) s.length() >= length) {\n        return s;\n    } else {\n        std::ostringstream out;\n        out << s;\n        for (int i = 0, count = length - (int) s.length(); i < count; i++) {\n            out << fill;\n        }\n        return out.str();\n    }\n}\n\nstd::string pointerToString(void* p) {\n    if (p) {\n        std::ostringstream stream;\n        stream << std::hex;\n        stream << p;\n        return stream.str();\n    } else {\n        return \"nullptr\";\n    }\n}\n\nstd::string realToString(double d) {\n    std::ostringstream stream;\n    stream << std::uppercase << d;\n    return stream.str();\n}\n\nbool startsWith(const std::string& str, char prefix) {\n    return str.length() > 0 && str[0] == prefix;\n}\n\nbool startsWith(const std::string& str, const std::string& prefix) {\n    if (str.length() < prefix.length()) return false;\n    int nChars = prefix.length();\n    for (int i = 0; i < nChars; i++) {\n        if (str[i] != prefix[i]) return false;\n    }\n    return true;\n}\n\nbool stringIsBool(const std::string& str) {\n    return str == \"true\" || str == \"false\";\n}\n\nbool stringIsDouble(const std::string& str) {\n    return stringIsReal(str);\n}\n\nbool stringIsInteger(const std::string& str, int radix) {\n    if (radix <= 0) {\n        error(\"stringIsInteger: Illegal radix: \" + std::to_string(radix));\n    }\n    std::istringstream stream(trim(str));\n    stream >> std::setbase(radix);\n    int value;\n    stream >> value;\n    return !(stream.fail() || !stream.eof());\n}\n\nbool stringIsLong(const std::string& str, int radix) {\n    if (radix <= 0) {\n        error(\"stringIsLong: Illegal radix: \" + std::to_string(radix));\n    }\n    std::istringstream stream(trim(str));\n    stream >> std::setbase(radix);\n    long value;\n    stream >> value;\n    return !(stream.fail() || !stream.eof());\n}\n\nbool stringIsReal(const std::string& str) {\n    std::istringstream stream(trim(str));\n    double value;\n    stream >> value;\n    return !(stream.fail() || !stream.eof());\n}\n\nbool stringContains(const std::string& s, char ch) {\n    return s.find(ch) != std::string::npos;\n}\n\nbool stringContains(const std::string& s, const std::string& substring) {\n    return s.find(substring) != std::string::npos;\n}\n\nint stringIndexOf(const std::string& s, char ch, int startIndex) {\n    size_t index = s.find(ch, (size_t) startIndex);\n    if (index == std::string::npos) {\n        return -1;\n    } else {\n        return index;\n    }\n}\n\nint stringIndexOf(const std::string& s, const std::string& substring, int startIndex) {\n    size_t index = s.find(substring, (size_t) startIndex);\n    if (index == std::string::npos) {\n        return -1;\n    } else {\n        return index;\n    }\n}\n\nstd::string stringJoin(const Vector<std::string>& v, char delimiter) {\n    std::string delim = charToString(delimiter);\n    return stringJoin(v, delim);\n}\n\nstd::string stringJoin(const Vector<std::string>& v, const std::string& delimiter) {\n    if (v.isEmpty()) {\n        return \"\";\n    } else {\n        std::ostringstream out;\n        out << v[0];\n        for (int i = 1; i < (int) v.size(); i++) {\n            out << delimiter;\n            out << v[i];\n        }\n        return out.str();\n    }\n}\n\nint stringLastIndexOf(const std::string& s, char ch, int startIndex) {\n    size_t index = s.rfind(ch, (size_t) startIndex);\n    if (index == std::string::npos) {\n        return -1;\n    } else {\n        return index;\n    }\n}\n\nint stringLastIndexOf(const std::string& s, const std::string& substring, int startIndex) {\n    size_t index = s.rfind(substring, (size_t) startIndex);\n    if (index == std::string::npos) {\n        return -1;\n    } else {\n        return index;\n    }\n}\n\nstd::string stringReplace(const std::string& str, char old, char replacement, int limit) {\n    std::string str2 = str;\n    stringReplaceInPlace(str2, old, replacement, limit);\n    return str2;\n}\n\nstd::string stringReplace(const std::string& str, const std::string& old, const std::string& replacement, int limit) {\n    std::string str2 = str;\n    stringReplaceInPlace(str2, old, replacement, limit);\n    return str2;\n}\n\nint stringReplaceInPlace(std::string& str, char old, char replacement, int limit) {\n    int count = 0;\n    for (size_t i = 0, len = str.length(); i < len; i++) {\n        if (str[i] == old) {\n            str[i] = replacement;\n            count++;\n            if (limit > 0 && count >= limit) {\n                break;\n            }\n        }\n    }\n    return count;\n}\n\nint stringReplaceInPlace(std::string& str, const std::string& old, const std::string& replacement, int limit) {\n    int count = 0;\n    size_t startIndex = 0;\n    size_t rlen = replacement.length();\n    while (limit <= 0 || count < limit) {\n        size_t index = str.find(old, startIndex);\n        if (index == std::string::npos) {\n            break;\n        }\n        str.replace(index, old.length(), replacement);\n        startIndex = index + rlen;\n        count++;\n    }\n    return count;\n}\n\nVector<std::string> stringSplit(const std::string& str, char delimiter, int limit) {\n    std::string delim = charToString(delimiter);\n    return stringSplit(str, delim, limit);\n}\n\nVector<std::string> stringSplit(const std::string& str, const std::string& delimiter, int limit) {\n    std::string str2 = str;\n    Vector<std::string> result;\n    int count = 0;\n    size_t index = 0;\n    while (limit < 0 || count < limit) {\n        index = str2.find(delimiter);\n        if (index == std::string::npos) {\n            break;\n        }\n        result.add(str2.substr(0, index));\n        str2.erase(str2.begin(), str2.begin() + index + delimiter.length());\n        count++;\n    }\n    if ((int) str2.length() > 0) {\n        result.add(str2);\n    }\n\n    return result;\n}\n\nbool stringToBool(const std::string& str) {\n    if (str == \"true\" || str == \"1\") {\n        return true;\n    } else if (str == \"false\" || str == \"0\") {\n        return false;\n    }\n    std::istringstream stream(trim(str));\n    bool value;\n    stream >> std::boolalpha >> value;\n    if (stream.fail() || !stream.eof()) {\n        error(\"stringToBool: Illegal bool format (\" + str + \")\");\n    }\n    return value;\n}\n\nchar stringToChar(const std::string& str) {\n    std::string str2 = trim(str);\n    if ((int) str2.length() != 1) {\n        error(\"stringToChar: string must contain exactly 1 non-whitespace character\");\n    }\n    return str2[0];\n}\n\ndouble stringToDouble(const std::string& str) {\n    return stringToReal(str);\n}\n\nint stringToInteger(const std::string& str, int radix) {\n    if (radix <= 0) {\n        error(\"stringToInteger: Illegal radix: \" + std::to_string(radix));\n    }\n    std::istringstream stream(trim(str));\n    stream >> std::setbase(radix);\n    int value;\n    stream >> value;\n    if (stream.fail() || !stream.eof()) {\n        error(\"stringToInteger: Illegal integer format: \\\"\" + str + \"\\\"\");\n    }\n    return value;\n}\n\nlong stringToLong(const std::string& str, int radix) {\n    if (radix <= 0) {\n        error(\"stringToLong: Illegal radix: \" + std::to_string(radix));\n    }\n    std::istringstream stream(trim(str));\n    stream >> std::setbase(radix);\n    long value;\n    stream >> value;\n    if (stream.fail() || !stream.eof()) {\n        error(\"stringToLong: Illegal long format \\\"\" + str + \"\\\"\");\n    }\n    return value;\n}\n\ndouble stringToReal(const std::string& str) {\n    std::istringstream stream(trim(str));\n    double value;\n    stream >> value;\n    if (stream.fail() || !stream.eof()) {\n        error(\"stringToReal: Illegal floating-point format (\" + str + \")\");\n    }\n    return value;\n}\n\nchar toLowerCase(char ch) {\n    return (char) tolower(ch);\n}\n\nstd::string toLowerCase(const std::string& str) {\n    std::string str2 = str;\n    toLowerCaseInPlace(str2);\n    return str2;\n}\n\nvoid toLowerCaseInPlace(std::string& str) {\n    int nChars = str.length();\n    for (int i = 0; i < nChars; i++) {\n        str[i] = tolower(str[i]);\n    }\n}\n\nchar toUpperCase(char ch) {\n    return (char) toupper(ch);\n}\n\nstd::string toUpperCase(const std::string& str) {\n    std::string str2 = str;\n    toUpperCaseInPlace(str2);\n    return str2;\n}\n\nvoid toUpperCaseInPlace(std::string& str) {\n    int nChars = str.length();\n    for (int i = 0; i < nChars; i++) {\n        str[i] = toupper(str[i]);\n    }\n}\n\nstd::string trim(const std::string& str) {\n    std::string str2 = str;\n    trimInPlace(str2);\n    return str2;\n}\n\nvoid trimInPlace(std::string& str) {\n    trimEndInPlace(str);\n    trimStartInPlace(str);\n}\n\nstd::string trimEnd(const std::string& str) {\n    std::string str2 = str;\n    trimEndInPlace(str2);\n    return str2;\n}\n\nvoid trimEndInPlace(std::string& str) {\n    int end = (int) str.length();\n    int finish = end;\n    while (finish > 0 && isspace(str[finish - 1])) {\n        finish--;\n    }\n    if (finish < end) {\n        str.erase(finish, end - finish);\n    }\n}\n\nstd::string trimStart(const std::string& str) {\n    std::string str2 = str;\n    trimStartInPlace(str2);\n    return str2;\n}\n\nvoid trimStartInPlace(std::string& str) {\n    int start = 0;\n    int finish = (int) str.length() - 1;\n    while (start <= finish && isspace(str[start])) {\n        start++;\n    }\n    if (start > 0) {\n        str.erase(0, start);\n    }\n}\n\nstd::string urlDecode(const std::string& str) {\n    std::ostringstream unescaped;\n    for (std::string::const_iterator i = str.begin(), n = str.end(); i != n; ++i) {\n        std::string::value_type c = (*i);\n        if (isalnum(c) || c == '-' || c == '_' || c == '.' || c == '~' || c == '*') {\n            unescaped << c;\n        } else if (c == '+')  {\n            unescaped << ' ';\n        } else if (c == '%') {\n            // throw error if string is invalid and doesn't have 2 char after,\n            // or if it has non-hex chars here (courtesy GitHub @scinart)\n            if (i + 2 >= n || !isxdigit(*(i + 1)) || !isxdigit(*(i + 2))) {\n                error(\"urlDecode: Invalid percent-encoding\");\n            }\n\n            // decode a URL-encoded ASCII character, e.g. %40 => &\n            char ch1 = *(i + 1);\n            char ch2 = *(i + 2);\n            int hex1 = (isdigit(ch1) ? (ch1 - '0') : (toupper(ch1) - 'A' + 10));\n            int hex2 = (isdigit(ch2) ? (ch2 - '0') : (toupper(ch2) - 'A' + 10));\n            int decodedChar = (hex1 << 4) + hex2;\n            unescaped << (char) decodedChar;\n            i += 2;\n        } else {\n            std::ostringstream msg;\n            msg << \"urlDecode: Unexpected character in string: \"\n                << (int) c << \" (\" << c << \")\";\n            error(msg.str());\n        }\n    }\n\n    return unescaped.str();\n}\n\nvoid urlDecodeInPlace(std::string& str) {\n    str = urlDecode(str);   // no real efficiency gain here\n}\n\nstd::string urlEncode(const std::string& str) {\n    std::ostringstream escaped;\n    escaped.fill('0');\n    escaped << std::hex << std::uppercase;\n\n    for (std::string::const_iterator i = str.begin(), n = str.end(); i != n; ++i) {\n        std::string::value_type c = (*i);\n        if (isalnum(c) || c == '-' || c == '_' || c == '.' || c == '~' || c == '*') {\n            escaped << c;\n        } else if (c == ' ')  {\n            escaped << '+';\n        } else {\n            escaped << '%' << std::setw(2) << ((int) c) << std::setw(0);\n        }\n    }\n\n    return escaped.str();\n}\n\nvoid urlEncodeInPlace(std::string& str) {\n    str = urlEncode(str);   // no real efficiency gain here\n}\n\nnamespace std {\nbool stob(const std::string& str) {\n    return ::stringToBool(str);\n}\n\nchar stoc(const std::string& str) {\n    return ::stringToChar(str);\n}\n\nstd::string to_string(bool b) {\n    return ::boolToString(b);\n}\n\nstd::string to_string(char c) {\n    return ::charToString(c);\n}\n\nstd::string to_string(void* p) {\n    return ::pointerToString(p);\n}\n} // namespace std\n\n/////////////////////// END code extracted from StanfordCPPLib/util/strlib.cpp ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/util/timer.cpp ///////////////////////\n/*\n * File: timer.cpp\n * ---------------\n * Implementation of the Timer class as declared in timer.h.\n */\n\n#define INTERNAL_INCLUDE 1\n\n#include <sys/time.h>\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\nTimer::Timer(bool autostart) {\n    _startMS = 0;\n    _stopMS = 0;\n    _isStarted = false;\n    if (autostart) {\n        start();\n    }\n}\n\nlong Timer::elapsed() const {\n    return _stopMS - _startMS;\n}\n\nbool Timer::isStarted() const {\n    return _isStarted;\n}\n\nvoid Timer::start() {\n    _startMS = currentTimeMS();\n    _isStarted = true;\n}\n\nlong Timer::stop() {\n    _stopMS = currentTimeMS();\n    if (!_isStarted) {\n        // error(\"Timer is not started\");\n        _startMS = _stopMS;\n    }\n    _isStarted = false;\n    return elapsed();\n}\n\nlong Timer::currentTimeMS() {\n    timeval time;\n    gettimeofday(&time, nullptr);\n    return (time.tv_sec * 1000000 + time.tv_usec) / 1000;\n}\n\n/////////////////////// END code extracted from StanfordCPPLib/util/timer.cpp ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/graphics/console.cpp ///////////////////////\n/*\n * File: console.cpp\n * -----------------\n * This file implements the console .h interface.\n *\n * @author Marty Stepp\n * @version 2019/04/12\n * - added pause() implementation (empty) in headless mode\n * @version 2018/11/22\n * - added headless mode support\n * @version 2018/10/01\n * - bug fix for graphical console popping up even if not included\n * @version 2018/08/23\n * - renamed to console .cpp/h to replace Java version\n * - separated out gconsolewindow.h/cpp\n * @version 2018/07/15\n * - initial version, based on io/console .cpp\n */\n\n#define INTERNAL_INCLUDE 1\n\n#include <cstdio>\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\n#ifdef SPL_HEADLESS_MODE\n\nvoid clearConsole() {\n    // empty\n}\n\nbool getConsoleClearEnabled() {\n    return true;\n}\n\n/* GWindow::CloseOperation */ int getConsoleCloseOperation() {\n    return 0;\n}\n\nbool getConsoleEcho() {\n    return true;\n}\n\nbool getConsoleEnabled() {\n    return true;\n}\n\nbool getConsoleEventOnClose() {\n    return true;\n}\n\nbool getConsoleExitProgramOnClose() {\n    return true;\n}\n\nstd::string getConsoleFont() {\n    return \"\";\n}\n\ndouble getConsoleHeight() {\n    return 0;\n}\n\nbool getConsoleLocationSaved() {\n    return false;\n}\n\nbool getConsolePrintExceptions() {\n    return exceptions::getTopLevelExceptionHandlerEnabled();\n}\n\nbool getConsoleSettingsLocked() {\n    return false;\n}\n\ndouble getConsoleWidth() {\n    return 0;\n}\n\nstd::string getConsoleWindowTitle() {\n    return \"\";\n}\n\nvoid pause(double /*milliseconds*/) {\n    // empty\n}\n\nvoid setConsoleClearEnabled(bool /*value*/) {\n    // empty\n}\n\nvoid setConsoleCloseOperation(int /*op*/) {\n    // empty\n}\n\nvoid setConsoleEcho(bool /*echo*/) {\n    // empty\n}\n\nvoid setConsoleEnabled(bool /*enabled*/) {\n    // empty\n}\n\nvoid setConsoleErrorColor(const std::string& /*color*/) {\n    // empty\n}\n\nvoid setConsoleEventOnClose(bool /*eventOnClose*/) {\n    // empty\n}\n\nvoid setConsoleExitProgramOnClose(bool /*exitOnClose*/) {\n    // empty\n}\n\nvoid setConsoleFont(const std::string& /*font*/) {\n    // empty\n}\n\nvoid setConsoleLocation(double /*x*/, double /*y*/) {\n    // empty\n}\n\nvoid setConsoleLocationSaved(bool /*value*/) {\n    // empty\n}\n\nvoid setConsoleOutputColor(const std::string& /*color*/) {\n    // empty\n}\n\nvoid setConsolePrintExceptions(bool printExceptions, bool force) {\n    if (getConsoleSettingsLocked()) { return; }\n    exceptions::setTopLevelExceptionHandlerEnabled(printExceptions, force);\n}\n\nvoid setConsoleSettingsLocked(bool /*value*/) {\n    // empty\n}\n\nvoid setConsoleSize(double /*width*/, double /*height*/) {\n    // empty\n}\n\nvoid setConsoleWindowTitle(const std::string& /*title*/) {\n    // empty\n}\n\nvoid shutdownConsole() {\n    // empty\n}\n\n#else // SPL_HEADLESS_MODE\n\nvoid clearConsole() {\n    GConsoleWindow::instance()->clearConsole();\n}\n\nbool getConsoleClearEnabled() {\n    return GConsoleWindow::instance()->isClearEnabled();\n}\n\n/* GWindow::CloseOperation */ int getConsoleCloseOperation() {\n    return GConsoleWindow::instance()->getCloseOperation();\n}\n\nbool getConsoleEcho() {\n    return GConsoleWindow::instance()->isEcho();\n}\n\nbool getConsoleEnabled() {\n#ifdef __DONT_ENABLE_QT_GRAPHICAL_CONSOLE\n    return false;\n#else\n    return GConsoleWindow::consoleEnabled();\n#endif\n}\n\nbool getConsoleEventOnClose() {\n    return true;\n}\n\nbool getConsoleExitProgramOnClose() {\n    return GConsoleWindow::instance()->getCloseOperation() == GWindow::CLOSE_EXIT;\n}\n\nstd::string getConsoleFont() {\n#ifdef __DONT_ENABLE_QT_GRAPHICAL_CONSOLE\n    return GConsoleWindow::getDefaultFont();\n#else\n    return GConsoleWindow::instance()->getFont();\n#endif\n}\n\ndouble getConsoleHeight() {\n    return GConsoleWindow::instance()->getHeight();\n}\n\nGPoint getConsoleLocation() {\n    return GConsoleWindow::instance()->getLocation();\n}\n\nbool getConsoleLocationSaved() {\n    return GConsoleWindow::instance()->isLocationSaved();\n}\n\nbool getConsolePrintExceptions() {\n    return exceptions::getTopLevelExceptionHandlerEnabled();\n}\n\nbool getConsoleSettingsLocked() {\n    return GConsoleWindow::isInitialized()\n            && GConsoleWindow::instance()->isLocked();\n}\n\nGDimension getConsoleSize() {\n    return GConsoleWindow::instance()->getSize();\n}\n\ndouble getConsoleWidth() {\n    return GConsoleWindow::instance()->getWidth();\n}\n\nGConsoleWindow* getConsoleWindow() {\n    return GConsoleWindow::instance();\n}\n\nstd::string getConsoleWindowTitle() {\n    return GConsoleWindow::instance()->getTitle();\n}\n\nvoid setConsoleClearEnabled(bool value) {\n    if (getConsoleSettingsLocked()) { return; }\n    GConsoleWindow::instance()->setClearEnabled(value);\n}\n\nvoid setConsoleCloseOperation(/*GWindow::CloseOperation*/ int op) {\n    GWindow::CloseOperation gwcop = static_cast<GWindow::CloseOperation>(op);\n    if (getConsoleSettingsLocked()) { return; }\n    GConsoleWindow::instance()->setCloseOperation(gwcop);\n}\n\nvoid setConsoleEcho(bool echo) {\n    if (getConsoleSettingsLocked()) { return; }\n    GConsoleWindow::instance()->setEcho(echo);\n}\n\nvoid setConsoleEnabled(bool enabled) {\n    GConsoleWindow::setConsoleEnabled(enabled);\n}\n\nvoid setConsoleErrorColor(const std::string& color) {\n    if (getConsoleSettingsLocked()) { return; }\n    GConsoleWindow::instance()->setErrorColor(color);\n}\n\nvoid setConsoleEventOnClose(bool /*eventOnClose*/) {\n    // empty\n}\n\nvoid setConsoleExitProgramOnClose(bool exitOnClose) {\n    if (getConsoleSettingsLocked()) { return; }\n    GConsoleWindow::instance()->setExitOnClose(exitOnClose);\n}\n\nvoid setConsoleFont(const std::string& font) {\n    if (getConsoleSettingsLocked()) { return; }\n    GConsoleWindow::instance()->setFont(font);\n}\n\nvoid setConsoleLocation(double x, double y) {\n    if (getConsoleSettingsLocked()) { return; }\n    if (floatingPointEqual(x, -1) && floatingPointEqual(y, -1)) {\n        GConsoleWindow::instance()->center();\n    } else {\n        GConsoleWindow::instance()->setLocation(x, y);\n    }\n}\n\nvoid setConsoleLocationSaved(bool value) {\n    GConsoleWindow::instance()->setLocationSaved(value);\n}\n\nvoid setConsoleOutputColor(const std::string& color) {\n    GConsoleWindow::instance()->setOutputColor(color);\n}\n\nvoid setConsolePrintExceptions(bool printExceptions, bool force) {\n    if (getConsoleSettingsLocked()) { return; }\n    exceptions::setTopLevelExceptionHandlerEnabled(printExceptions, force);\n}\n\nvoid setConsoleSettingsLocked(bool value) {\n    GConsoleWindow::instance()->setLocked(value);\n}\n\nvoid setConsoleSize(double width, double height) {\n    if (getConsoleSettingsLocked()) { return; }\n    GConsoleWindow::instance()->setConsoleSize(width, height);\n}\n\nvoid setConsoleWindowTitle(const std::string& title) {\n    if (getConsoleSettingsLocked()) { return; }\n    GConsoleWindow::instance()->setTitle(title);\n}\n\nvoid shutdownConsole() {\n    if (getConsoleEnabled() && !GConsoleWindow::instance()->isLocked()) {\n        GConsoleWindow::instance()->shutdown();\n    }\n}\n\n#endif // SPL_HEADLESS_MODE\n\n/*\n * Sets up console settings like window size, location, exit-on-close, etc.\n * based on compiler options set in the .pro file.\n */\nvoid setConsolePropertiesQt() {\n#if defined(SPL_CONSOLE_FONTSIZE)\n    std::string fontStr = std::string(\"Monospaced-Bold-\") + std::to_string(SPL_CONSOLE_FONTSIZE);\n    setConsoleFont(fontStr);\n#endif\n\n#if defined(SPL_CONSOLE_WIDTH) && defined(SPL_CONSOLE_HEIGHT)\n    setConsoleSize(SPL_CONSOLE_WIDTH, SPL_CONSOLE_HEIGHT);\n#endif\n\n#if defined(SPL_CONSOLE_X) && defined(SPL_CONSOLE_Y)\n    setConsoleLocation(SPL_CONSOLE_X, SPL_CONSOLE_Y);\n#endif\n\n#if defined(SPL_CONSOLE_ECHO)\n    setConsoleEcho(true);\n#endif\n\n#if defined(SPL_CONSOLE_EXIT_ON_CLOSE)\n    setConsoleExitProgramOnClose(true);\n#endif\n\n#if defined(SPL_CONSOLE_LOCATION_SAVED)\n    setConsoleLocationSaved(true);\n#endif\n\n#if defined(SPL_CONSOLE_PRINT_EXCEPTIONS)\n    setConsolePrintExceptions(true);\n#endif\n\n#if defined(SPL_VERIFY_PROJECT_VERSION)\n    version::ensureProjectVersion();\n#endif\n}\n\nvoid initializeQtGraphicalConsole() {\n#ifndef __DONT_ENABLE_QT_GRAPHICAL_CONSOLE\n    // ensure that console is initialized only once\n    static bool _initialized = false;\n    if (_initialized) {\n        return;\n    }\n    _initialized = true;\n\n    // declaring this object ensures that std::cin, cout, cerr are initialized\n    // properly before our lib tries to mess with them / redirect them\n    static std::ios_base::Init ios_base_init;\n\n#ifndef SPL_HEADLESS_MODE\n    if (GConsoleWindow::consoleEnabled()) {\n        GConsoleWindow::instance();   // ensure that console window is ready\n        setConsolePropertiesQt();\n    }\n#endif // SPL_HEADLESS_MODE\n\n#endif // __DONT_ENABLE_QT_GRAPHICAL_CONSOLE\n}\n\n/////////////////////// END code extracted from StanfordCPPLib/graphics/console.cpp ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib_CodeStepByStep_Project/src/ArrayIntList.cpp ///////////////////////\n/*\n * CS 106B, Marty Stepp\n * ArrayIntList.cpp implements the ArrayIntList class behavior declared in ArrayIntList.h.\n * \n * @version 2016/08/23\n * - added initializer_list support to match other lib collections\n */\n\n#define INTERNAL_INCLUDE 1\n\n\n\n#undef INTERNAL_INCLUDE\n\n/*\n * Constructs a new empty list (capacity 10).\n */\nArrayIntList::ArrayIntList() {\n    elements = new int[10]();\n    mysize = 0;\n    capacity = 10;\n}\n\n/*\n * Constructs a new empty list with the given capacity.\n */\nArrayIntList::ArrayIntList(int cap) {\n    elements = new int[cap]();\n    mysize = 0;\n    capacity = cap;\n}\n\n/*\n * Constructs a new empty list storing the given elements.\n */\nArrayIntList::ArrayIntList(std::initializer_list<int> list) {\n    elements = new int[list.size()]();\n    mysize = 0;\n    capacity = list.size();\n    for (int n : list) {\n        add(n);\n    }\n}\n\n/*\n * Destructor is called when an ArrayIntList object is destroyed\n * (when the closing } brace is reached in the function where\n * it is declared).\n */\nArrayIntList::~ArrayIntList() {\n    delete[] elements;\n}\n\n/*\n * Appends the given value to the end of the list.\n */\nvoid ArrayIntList::add(int value) {\n    ensureCapacity(mysize + 1);\n    elements[mysize] = value;\n    mysize++;\n}\n\n/*\n * Removes all elements from the list.\n */\nvoid ArrayIntList::clear() {\n    mysize = 0;\n}\n\n/*\n * Returns the value at the given 0-based index of the list.\n */\nint ArrayIntList::get(int index) const {\n    checkIndex(index, 0, mysize - 1);\n    return elements[index];\n}\n\n/*\n * Adds the given value just before the given 0-based index in the list,\n * shifting subsequent elements right as necessary to make room.\n * Throws a string exception if the index is out of bounds.\n */\nvoid ArrayIntList::insert(int index, int value) {\n    checkIndex(index, 0, mysize);\n    ensureCapacity(mysize + 1);\n    for (int i = mysize; i > index; i--) {\n        elements[i] = elements[i - 1];\n    }\n    elements[index] = value;\n    mysize++;\n}\n\n/*\n * Returns true if there are no elements in the list.\n */\nbool ArrayIntList::isEmpty() const {\n    return mysize == 0;\n}\n\n/*\n * Removes the element at the given index from the list,\n * shifting elements left to make room.\n * Throws a string exception if the index is out of bounds.\n */\nvoid ArrayIntList::remove(int index) {\n    checkIndex(index, 0, mysize - 1);\n    for (int i = index; i < mysize - 1; i++) {\n        elements[i] = elements[i + 1];\n    }\n    mysize--;\n}\n\n/*\n * Stores the given value at the given index in the list.\n * Throws a string exception if the index is out of bounds.\n */\nvoid ArrayIntList::set(int index, int value) {\n    checkIndex(index, 0, mysize - 1);\n    elements[index] = value;\n}\n\n/*\n * Returns the number of elements in the list.\n */\nint ArrayIntList::size() const {\n    return mysize;\n}\n\n/*\n * Prints the list to the given output stream, in a format such as:\n * {42, -7, 19, 106}\n */\nostream& operator <<(ostream& out, const ArrayIntList& list) {\n    out << \"{\";\n    if (!list.isEmpty()) {\n        out << list.get(0);   // fencepost\n        for (int i = 1; i < list.size(); i++) {\n            out << \", \" << list.get(i);\n        }\n    }\n    out << \"}\";\n    return out;\n}\n\nistream& operator >>(istream& input, ArrayIntList& list) {\n    char ch = '\\0';\n    input >> ch;\n    if (ch != '{') {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n        error(\"ArrayIntList::operator >>: Missing {\");\n#endif\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n    list.clear();\n    input >> ch;\n    if (ch != '}') {\n        input.unget();\n        while (true) {\n            int value;\n            if (!readGenericValue(input, value)) {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n                error(\"ArrayIntList::operator >>: parse error\");\n#endif\n                return input;\n            }\n            list.add(value);\n            input >> ch;\n            if (ch == '}') {\n                break;\n            } else if (ch != ',') {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n                error(std::string(\"ArrayIntList::operator >>: Unexpected character \") + ch);\n#endif\n                input.setstate(std::ios_base::failbit);\n                return input;\n            }\n        }\n    }\n    return input;\n}\n\n/*\n * Throws a string exception if the given index is not between\n * min and max, inclusive.\n */\nvoid ArrayIntList::checkIndex(int index, int min, int max) const {\n    if (index < min || index > max) {\n        throw \"Index out of bounds: \" + integerToString(index);\n    }\n}\n\n/*\n * Grows the internal array to be at least as large as the given capacity.\n * Resizes by factors of 2 to ensure amortized O(1) add performance.\n */\nvoid ArrayIntList::ensureCapacity(int cap) {\n    if (capacity < cap) {\n        while (capacity < cap) {\n            capacity *= 2;\n        }\n        \n        // copy all elements into a bigger array\n        int* bigger = new int[capacity];\n        for (int i = 0; i < mysize; i++) {\n            bigger[i] = elements[i];\n        }\n        \n        // swap in the new bigger array for the old one\n        delete[] elements;\n        elements = bigger;\n    }\n}\n\nArrayIntList& ArrayIntList::operator =(const ArrayIntList& src) {\n    if (this != &src) {\n        // deep copy\n        clear();\n        ensureCapacity(src.size());\n        for (int i = 0; i < src.size(); i++) {\n            add(src.get(i));\n        }\n    }\n    return *this;\n}\n\n/////////////////////// END code extracted from StanfordCPPLib_CodeStepByStep_Project/src/ArrayIntList.cpp ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib_CodeStepByStep_Project/src/BinaryTree.cpp ///////////////////////\n/*\n * This file contains the implementation of members of the BinaryTree class,\n * which defines a binary tree of integers.\n * See BinaryTree.h for a description of each member.\n *\n * @version 2015/07/21\n */\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\nBinaryTree::BinaryTree(BinaryTreeNode* root) {\n    this->root = root;\n}\n\nBinaryTree::~BinaryTree() {\n    // TODO: free memory\n    root = nullptr;\n}\n\nstatic void binaryTreeClearHelper(BinaryTreeNode*& node) {\n    if (node) {\n        binaryTreeClearHelper(node->left);\n        binaryTreeClearHelper(node->right);\n        delete node;\n        node = nullptr;\n    }\n}\n\nvoid BinaryTree::clear() {\n    binaryTreeClearHelper(root);\n}\n\nstd::string BinaryTree::toString() {\n    return toString(root);\n}\nstd::string BinaryTree::toString(BinaryTreeNode* node) {\n    if (!node) {\n        return \"/\";\n    } else if (node->left == nullptr && node->right == nullptr) {\n        return integerToString(node->data);\n    } else {\n        return \"(\" + integerToString(node->data) + \", \"\n             + toString(node->left) + \", \" + toString(node->right) + \")\";\n    }\n}\n\nvoid BinaryTree::deleteTree(BinaryTreeNode* node) {\n    if (node) {\n        deleteTree(node->left);\n        deleteTree(node->right);\n        delete node;\n    }\n}\n\nstd::ostream& operator <<(std::ostream& out, const BinaryTree& tree) {\n    return binaryTreeOpLtLtHelper(out, tree.root);\n}\n\nstd::istream& operator >>(std::istream& input, BinaryTree& tree) {\n    tree.clear();\n    std::string line;\n    if (getline(input, line)) {\n        makeTreeFromString(line, tree.root);\n    }\n    return input;\n}\n\n/////////////////////// END code extracted from StanfordCPPLib_CodeStepByStep_Project/src/BinaryTree.cpp ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib_CodeStepByStep_Project/src/BinaryTreeMap.cpp ///////////////////////\n/*\n * CS 106B, Marty Stepp\n * This file contains the implementation of the BinaryTreeMap class,\n * which defines a map from string->integer using a binary search tree.\n * See BinaryTreeMap.h for a description of each member.\n *\n * @version 2015/07/21\n */\n\n#define INTERNAL_INCLUDE 1\n#include <string>\n\n\n#undef INTERNAL_INCLUDE\n\nBinaryTreeMap::BinaryTreeMap() {\n    m_root = nullptr;\n}\n\nBinaryTreeMap::~BinaryTreeMap() {\n    // TODO: implement\n\n}\n\nbool BinaryTreeMap::containsKey(string key) const {\n    return containsKey(m_root, key);\n}\n\nbool BinaryTreeMap::containsKey(BinaryTreeMapNode* node, string key) const {\n    if (!node) {\n        return false;\n    } else if (key == node->key) {\n        return true;\n    } else if (key < node->key) {\n        return containsKey(node->left, key);\n    } else {  // key > node->key\n        return containsKey(node->right, key);\n    }\n}\n\nint BinaryTreeMap::get(string key) const {\n    return get(m_root, key);\n}\n\nint BinaryTreeMap::get(BinaryTreeMapNode* node, string key) const {\n    if (!node) {\n        return 0;\n    } else if (key == node->key) {\n        return node->value;\n    } else if (key < node->key) {\n        return get(node->left, key);\n    } else {  // key > node->key\n        return get(node->right, key);\n    }\n}\n\nbool BinaryTreeMap::isEmpty() const {\n    return m_size == 0;\n}\n\nvoid BinaryTreeMap::put(string key, int value) {\n    put(m_root, key, value);\n}\n\nvoid BinaryTreeMap::put(BinaryTreeMapNode*& node, string key, int value) {\n    if (!node) {\n        node = new BinaryTreeMapNode(key, value);\n        m_size++;\n    } else if (node->key == key) {\n        node->value = value;\n    } else if (key < node->key) {\n        put(node->left, key, value);\n    } else {  // key > node->key\n        put(node->right, key, value);\n    }\n}\n\nvoid BinaryTreeMap::remove(string key) {\n    remove(m_root, key);\n}\n\nvoid BinaryTreeMap::remove(BinaryTreeMapNode*& node, string key) {\n    if (!node) {\n        // not here, nothing to do\n    } else if (key == node->key) {\n        // remove THIS node\n        BinaryTreeMapNode* trash = nullptr;\n        if (node->isLeaf()) {\n            trash = node;\n            node = nullptr;\n        } else if (!node->right) {\n            // left child only; replace me with left\n            trash = node;\n            node = node->left;\n        } else if (!node->left) {\n            // right child only; replace me with right\n            trash = node;\n            node = node->right;\n        } else {\n            // :-( both children alive\n            BinaryTreeMapNode* rightMinNode = getMin(node->right);\n            node->key = rightMinNode->key;\n            node->value = rightMinNode->value;\n            remove(node->right, rightMinNode->key);\n        }\n\n        m_size--;\n        if (trash) {\n            delete trash;\n        }\n    } else if (key < node->key) {\n        remove(node->left, key);\n    } else {  // key > node->key\n        remove(node->right, key);\n    }\n}\n\nBinaryTreeMapNode* BinaryTreeMap::getMin(BinaryTreeMapNode* node) const {\n    if (!node || !node->left) {\n        return node;\n    } else {\n        return getMin(node->left);\n    }\n}\n\nint BinaryTreeMap::size() const {\n    return m_size;\n}\n\n/////////////////////// END code extracted from StanfordCPPLib_CodeStepByStep_Project/src/BinaryTreeMap.cpp ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib_CodeStepByStep_Project/src/HashTableSet.cpp ///////////////////////\n/*\n * CS 106B, Marty Stepp\n * This file contains the implementation of the HashTableSet class, which implements\n * a set of integers using a hash table.\n * See HashTableSet.h for the declarations of each member.\n *\n * @version 2015/07/21\n */\n\n#define INTERNAL_INCLUDE 1\n#include <iostream>\n#include <iomanip>\n\n#undef INTERNAL_INCLUDE\n\nHashTableSet::HashTableSet() {\n    m_size = 0;\n    m_capacity = 10;\n    m_elements = new HashTableNode*[m_capacity]();   // all null\n}\n\nvoid HashTableSet::add(int value) {\n    if (!contains(value)) {\n        int index = hashCode(value);\n        HashTableNode* node = new HashTableNode(value);\n        node->next = m_elements[index];\n        m_elements[index] = node;\n        m_size++;\n    }\n}\n\nbool HashTableSet::contains(int value) const {\n    int index = hashCode(value);\n    HashTableNode* current = m_elements[index];\n    while (current) {\n        if (current->data == value) {\n            return true;\n        }\n        current = current->next;\n    }\n    return false;\n}\n\nint HashTableSet::hashCode(int value) const {\n    return abs(value) % m_capacity;\n}\n\nvoid HashTableSet::remove(int /*value*/) {\n    // not implemented\n}\n\nvoid HashTableSet::printStructure() const {\n    for (int i = 0; i < m_capacity; i++) {\n        std::cout << \"[\" << std::setw(2) << i << \"]:\";\n        HashTableNode* curr = m_elements[i];\n        while (curr) {\n            std::cout << \" -> \" << std::setw(2) << curr->data;\n            curr = curr->next;\n        }\n        std::cout << \" /\" << std::endl;\n    }\n    // cout << \"size = \" << m_size << \", load factor = \" << loadFactor() << endl;\n}\n\n/////////////////////// END code extracted from StanfordCPPLib_CodeStepByStep_Project/src/HashTableSet.cpp ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib_CodeStepByStep_Project/src/HeapPriorityQueue.cpp ///////////////////////\n/*\n * CS 106B, Marty Stepp\n * This file implements the HeapPriorityQueue class.\n *\n * @version 2015/07/29\n */\n\n#define INTERNAL_INCLUDE 1\n\n#include <string>\n\n\n\n#undef INTERNAL_INCLUDE\n\nHeapPriorityQueue::HeapPriorityQueue(PQEntry* elements, int capacity, int mysize) {\n    this->elements = elements;\n    this->capacity = capacity;\n    this->mysize = mysize;\n    this->hackPQ = new PriorityQueue<string>();\n}\n\nHeapPriorityQueue::~HeapPriorityQueue() {\n    if (elements) {\n        delete[] elements;\n    }\n    delete hackPQ;\n}\n\nvoid HeapPriorityQueue::changePriority(string value, double newPriority) {\n    hackPQ->changePriority(value, newPriority);\n}\n\nvoid HeapPriorityQueue::clear() {\n    hackPQ->clear();\n    mysize = hackPQ->size();\n}\n\nstring HeapPriorityQueue::dequeue() {\n    string result = hackPQ->dequeue();\n    mysize = hackPQ->size();\n    return result;\n}\n\nvoid HeapPriorityQueue::enqueue(string value, double priority) {\n    hackPQ->enqueue(value, priority);\n    mysize = hackPQ->size();\n}\n\nbool HeapPriorityQueue::isEmpty() const {\n    return hackPQ->isEmpty();\n}\n\nstring HeapPriorityQueue::peek() const {\n    return hackPQ->peek();\n}\n\ndouble HeapPriorityQueue::peekPriority() const {\n    return hackPQ->peekPriority();\n}\n\nvoid HeapPriorityQueue::printSideways(int index, string indent) const {\n    if (index <= size()) {\n        printSideways(index*2+1, indent + \"    \");   // right\n        string value    = hackPQ->__getValueFromHeap(index-1);\n        double priority = hackPQ->__getPriorityFromHeap(index-1);\n        cout << indent << value << \":\" << priority << endl;\n        printSideways(index*2, indent + \"    \");     // left\n    }\n}\n\nint HeapPriorityQueue::size() const {\n    return mysize;\n}\n\nstring HeapPriorityQueue::toString() const {\n    ostringstream out;\n    out << *this;\n    return out.str();\n}\n\nostream& operator <<(ostream& out, const HeapPriorityQueue& pq) {\n    out << *pq.hackPQ;\n    return out;\n}\n\nistream& operator >>(istream& input, HeapPriorityQueue& pq) {\n    char ch = '\\0';\n    input >> ch;\n    if (ch != '{') {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n        error(\"HeapPriorityQueue::operator >>: Missing {\");\n#endif\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n    pq.clear();\n    input >> ch;\n    if (ch != '}') {\n        input.unget();\n        while (true) {\n            std::string value;\n            if (!readGenericValue(input, value)) {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n                error(\"HeapPriorityQueue::operator >>: parse error\");\n#endif\n                return input;\n            }\n            input >> ch;\n            if (ch != ':') {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n                error(\"HeapPriorityQueue::operator >>: Missing colon after priority\");\n#endif\n                input.setstate(std::ios_base::failbit);\n                return input;\n            }\n            double priority = 0.0;\n            input >> priority;\n            pq.enqueue(value, priority);\n            \n            input >> ch;\n            if (ch == '}') {\n                break;\n            }\n            if (ch != ',') {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n                error(std::string(\"HeapPriorityQueue::operator >>: Unexpected character \") + ch);\n#endif\n                input.setstate(std::ios_base::failbit);\n                return input;\n            }\n        }\n    }\n    return input;\n}\n\nvoid stringToPQ(HeapPriorityQueue& pq, string elements) {\n    Vector<string> pairs = stringSplit(elements, \", \");\n    for (string pair : pairs) {\n        Vector<string> parts = stringSplit(pair, \":\");\n        string value = parts[0];\n        int priority = stringToInteger(parts[1]);\n        pq.enqueue(value, priority);\n    }\n}\n\n/////////////////////// END code extracted from StanfordCPPLib_CodeStepByStep_Project/src/HeapPriorityQueue.cpp ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib_CodeStepByStep_Project/src/LinkedIntList.cpp ///////////////////////\n/*\n * LinkedIntList.cpp implements the LinkedIntList class behavior declared in LinkedIntList.h.\n *\n * @version 2016/11/11\n * - made into template class\n */\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\nLinkedIntList::LinkedIntList()\n        : front(nullptr), m_locked(false) {\n    // empty\n}\n\n/*\n * Constructs a new empty list storing the given elements.\n */\nLinkedIntList::LinkedIntList(std::initializer_list<int> list)\n        : front(nullptr), m_locked(false) {\n    for (int n : list) {\n        add(n);\n    }\n}\n\nLinkedIntList::~LinkedIntList() {\n    m_locked = false;\n    clear();\n}\n\nvoid LinkedIntList::add(int value) {\n    checkLocked(\"add\");\n    if (!front) {\n        // empty list: add this node as the new front\n        front = new ListNode(value);\n    } else {\n        // non-empty list: move to end, attach new node\n        ListNode* current = front;\n        while (current->next) {\n            current = current->next;\n        }\n        current->next = new ListNode(value);\n    }\n}\n\nvoid LinkedIntList::clear() {\n    checkLocked(\"clear\");\n    while (front) {\n        ListNode* temp = front;\n        front = front->next;\n        delete temp;\n    }\n}\n\nint LinkedIntList::get(int index) const {\n    checkLocked(\"get\");\n    checkIndex(index, 0, size() - 1);\n    ListNode* current = front;\n    for (int i = 0; i < index; i++) {\n        current = current->next;\n    }\n    return current->data;\n}\n\nvoid LinkedIntList::insert(int index, int value) {\n    checkLocked(\"insert\");\n    checkIndex(index, 0, size());\n    if (index == 0) {\n        ListNode* temp = front;\n        front = new ListNode(value, temp);\n    } else {\n        ListNode* current = front;\n        for (int i = 0; i < index - 1; i++) {\n            current = current->next;\n        }\n        ListNode* temp = current->next;\n        current->next = new ListNode(value, temp);\n    }\n}\n\nbool LinkedIntList::isEmpty() const {\n    return front == nullptr;\n}\n\nvoid LinkedIntList::remove(int index) {\n    checkLocked(\"remove\");\n    checkIndex(index, 0, size() - 1);\n    ListNode* trash;\n    if (index == 0) {\n        trash = front;\n        front = front->next;\n    } else {\n        ListNode* curr = front;\n        for (int i = 0; i < index-1; i++) {\n            curr = curr->next;\n        }\n        trash = curr->next;\n        curr->next = curr->next->next;\n    }\n    delete trash;\n}\n\nvoid LinkedIntList::set(int index, int value) {\n    checkLocked(\"set\");\n    checkIndex(index, 0, size() - 1);\n    ListNode* current = front;\n    for (int i = 0; i < index; i++) {\n        current = current->next;\n    }\n    current->data = value;\n}\n\nint LinkedIntList::size() const {\n    checkLocked(\"size\");\n    int count = 0;\n    ListNode* current = front;\n    while (current) {\n        count++;\n        current = current->next;\n    }\n    return count;\n}\n\n// TODO: put printing code into operator <<, call that from toString\nstd::string LinkedIntList::toString() const {\n    std::ostringstream out;\n    out << *this;\n    return out.str();\n}\n\nvoid LinkedIntList::setLocked(bool locked) {\n    m_locked = locked;\n}\n\nvoid LinkedIntList::checkIndex(int index, int min, int max) const {\n    if (index < min || index > max) {\n        throw std::string(\"Invalid index\");\n    }\n}\n\nvoid LinkedIntList::checkLocked(std::string memberName) const {\n    if (m_locked) {\n        error(\"LinkedIntList forbidden from calling member function \" + memberName);\n    }\n}\n\nLinkedIntList& LinkedIntList::operator =(const LinkedIntList& src) {\n    if (this != &src) {\n        // deep copy\n        clear();\n        for (int i = 0; i < src.size(); i++) {\n            add(src.get(i));\n        }\n    }\n    return *this;\n}\n\nstd::ostream& operator <<(std::ostream& out, const LinkedIntList& list) {\n    if (list.isEmpty()) {\n        out << \"{}\";\n    } else {\n        out << list.front;\n    }\n    return out;\n}\n\nstd::istream& operator >>(std::istream& input, LinkedIntList& list) {\n    char ch = '\\0';\n    input >> ch;\n    if (ch != '{') {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n        error(\"LinkedIntList::operator >>: Missing {\");\n#endif\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n    list.clear();\n    input >> ch;\n    if (ch != '}') {\n        input.unget();\n        while (true) {\n            int value;\n            if (!readGenericValue(input, value)) {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n                error(\"LinkedIntList::operator >>: parse error\");\n#endif\n                return input;\n            }\n            list.add(value);\n            input >> ch;\n            if (ch == '}') {\n                break;\n            } else if (ch != ',') {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n                error(std::string(\"LinkedIntList::operator >>: Unexpected character \") + ch);\n#endif\n                input.setstate(std::ios_base::failbit);\n                return input;\n            }\n        }\n    }\n    return input;\n}\n\n/////////////////////// END code extracted from StanfordCPPLib_CodeStepByStep_Project/src/LinkedIntList.cpp ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib_CodeStepByStep_Project/src/graphsupport.cpp ///////////////////////\n/*\n * @version 2017/10/24\n * - replaced null in uppercase with nullptr\n */\n\n#define INTERNAL_INCLUDE 1\n\n#include <iomanip>\n\n#undef INTERNAL_INCLUDE\n\n// definitions for colors\nconst int NUM_COLORS = 7;\n\nconst Color UNCOLORED = 0;\nconst Color WHITE = 1;\nconst Color GRAY = 2;\nconst Color YELLOW = 3;\nconst Color GREEN = 4;\nconst Color RED = 5;\nconst Color BLUE = 6;\n\nconst Color COLORS[7] = {\n    UNCOLORED,\n    WHITE,\n    GRAY,\n    YELLOW,\n    GREEN,\n    RED,\n    BLUE\n};\n\nconst string COLOR_NAMES[7] = {\n    \"uncolored\",\n    \"white\",\n    \"gray\",\n    \"yellow\",\n    \"green\",\n    \"red\",\n    \"blue\"\n};\n\nbool graph_canReach(BasicGraph& graph, Vertex* start, Vertex* end, Set<Vertex*>& visited, Vector<Vertex*>* path) {\n    // cout << \"    canReach(graph, start=\" << start->name << \", end=\" << end->name << \")\" << endl;\n    if (start == end) {\n        return true;\n    } else if (visited.contains(start)) {\n        return false;\n    } else {\n        visited.add(start);\n        if (path) {\n            path->add(start);\n        }\n        for (Vertex* neighbor : graph.getNeighbors(start->name)) {\n            if (graph_canReach(graph, neighbor, end, visited, path)) {\n                return true;\n            }\n        }\n        visited.remove(start);\n        if (path) {\n            path->remove(path->size() - 1);\n        }\n        return false;\n    }\n}\n\nbool graph_isConnected(BasicGraph& graph, bool checkWeak) {\n    bool weak = false;\n    for (Vertex* v1 : graph.getVertexSet()) {\n        for (Vertex* v2 : graph.getVertexSet()) {\n            if (v1 == v2) {\n                continue;\n            }\n            // cout << \"    \" << v1->name << \" ... \" << v2->name << endl;\n            graph.resetData();\n            Set<Vertex*> visited;\n            if (!graph_canReach(graph, v1, v2, visited)) {\n                if (checkWeak && graph_canReach(graph, v2, v1, visited)) {\n                    weak = true;\n                    continue;\n                }\n                cout << \"vertex \" << v1->name << \" cannot reach \" << v2->name << endl;\n                return false;\n            }\n        }\n    }\n    \n    if (weak) {\n        cout << \"(weakly connected)\" << endl;\n    }\n    return !weak;\n}\n\nbool graph_isCyclic(BasicGraph& graph) {\n    for (Vertex* v : graph.getVertexSet()) {\n        for (Vertex* neighbor : graph.getNeighbors(v)) {\n            Vector<Vertex*> path;\n            graph.resetData();\n            Set<Vertex*> visited;\n            if (graph_canReach(graph, neighbor, v, visited, &path)) {\n                path.insert(0, v);\n                path.add(v);\n                cout << \"cycle starting from \" << v->name << \": \" << graph_pathToString(path) << endl;\n                return true;\n            }\n        }\n    }\n    \n    return false;\n}\n\nvoid graph_printEdgeList(BasicGraph& graph) {\n    cout << \"edge list:\" << endl;\n    Vector<string> edgeList;\n    for (Edge* edge : graph.getEdgeSet()) {\n        string edgeStr = \"\" + edge->start->name + \" -> \" + edge->finish->name;\n        if (!floatingPointEqual(edge->weight, 0.0)) {\n            edgeStr += \" : \" + realToString(edge->weight);\n        }\n        cout << \"  \" << edgeStr << endl;\n    }\n}\n\nvoid graph_printAdjacencyList(BasicGraph& graph) {\n    cout << \"adjacency list:\" << endl;\n    for (Vertex* v : graph.getVertexSet()) {\n        cout << \"  \" << v->name << \" : \";\n        int count = 0;\n        for (Vertex* neighbor : graph.getNeighbors(v)) {\n            if (count > 0) {\n                cout << \", \";\n            }\n            cout << \"(\" << neighbor->name;\n            Edge* edge = graph.getEdge(v, neighbor);\n            if (!floatingPointEqual(edge->weight, 0.0)) {\n                cout << \":\" << edge->weight;\n            }\n            count++;\n            cout << \")\";\n        }\n        cout << endl;\n    }\n}\n\nvoid graph_printAdjacencyMatrix(BasicGraph& graph) {\n    cout << \"adjacency matrix:\" << endl;\n    \n    const int COL_WIDTH = 5;\n    \n    // column headers\n    cout << setw(COL_WIDTH) << \"\";\n    for (Vertex* v1 : graph.getVertexSet()) {\n        cout << setw(COL_WIDTH) << v1->name;\n    }\n    cout << endl;\n    \n    for (Vertex* v1 : graph.getVertexSet()) {\n        // row header\n        cout << setw(COL_WIDTH) << v1->name;\n        \n        for (Vertex* v2 : graph.getVertexSet()) {\n            double toPrint = 0;\n            if (graph.isNeighbor(v1, v2)) {\n                Edge* edge = graph.getEdge(v1, v2);\n                if (!floatingPointEqual(edge->weight, 0.0)) {\n                    toPrint = edge->weight;\n                } else {\n                    toPrint = 1;\n                }\n            }\n            cout << setw(COL_WIDTH) << toPrint;\n        }\n        cout << endl;\n    }\n}\n\nvoid graph_printVertexDegrees(BasicGraph& graph) {\n    cout << \"vertex degrees:\" << endl;\n    for (Vertex* v : graph.getVertexSet()) {\n        cout << \"  \" << v->name << \" : \";\n        int inDegree = 0;\n        for (Vertex* v2 : graph.getVertexSet()) {\n            if (graph.isNeighbor(v2, v)) {\n                inDegree++;\n            }\n        }\n        cout << \"in-degree: \" << inDegree;\n        cout << \", out-degree: \" << v->edges.size() << endl;\n    }\n}\n\nstring graph_pathToString(const Vector<Vertex*>& path) {\n    Vector<string> path2;\n    for (Vertex* v : path) {\n        if (v) {\n            path2.add(v->name);\n        } else {\n            path2.add(\"nullptr\");\n        }\n    }\n    return path2.toString();\n}\n\nvoid graph_printPath(const Vector<Vertex*>& path) {\n    cout << \"{\";\n    int i = 0;\n    for (Vertex* v : path) {\n        if (i > 0) {\n            cout << \", \";\n        }\n        if (!v) {\n            cout << \"nullptr\";\n        } else {\n            cout << v->name;\n        }\n        i++;\n    }\n    cout << \"}\" << endl;\n}\n\nvoid BasicGraph_fromString(BasicGraph& obj, string str) {\n    istringstream input(str);\n    input >> obj;\n}\n\nostream& operator <<(ostream& out, const Vector<Vertex*>& path) {\n    out << \"{\";\n    int i = 0;\n    for (Vertex* v : path) {\n        if (i > 0) {\n            out << \", \";\n        }\n        if (!v) {\n            out << \"nullptr\";\n        } else {\n            out << v->name;\n        }\n        i++;\n    }\n    out << \"}\";\n    return out;\n}\n\nostream& operator <<(ostream& out, const Set<Vertex*>& set) {\n    out << \"{\";\n    int i = 0;\n    for (Vertex* v : set) {\n        if (i > 0) {\n            out << \", \";\n        }\n        if (!v) {\n            out << \"nullptr\";\n        } else {\n            out << v->name;\n        }\n        i++;\n    }\n    out << \"}\";\n    return out;\n}\n\n/////////////////////// END code extracted from StanfordCPPLib_CodeStepByStep_Project/src/graphsupport.cpp ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib_CodeStepByStep_Project/src/types.cpp ///////////////////////\n/*\n * Various support classes and types used in practice problems.\n *\n * @version 2015/08/10\n */\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\nDomino::Domino(int f, int s) {\n    first = f;\n    second = s;\n}\n\nostream& operator <<(ostream& out, const Domino& d) {\n    return out << \"(\" << d.first << \":\" << d.second << \")\";\n}\n\nistream& operator >>(istream& input, Domino& d) {\n    char ch = '\\0';\n    input >> ch;   // (\n    input >> ch;   // first\n    d.first = ch - '0';\n    input >> ch;   // :\n    input >> ch;   // second\n    d.second = ch - '0';\n    input >> ch;   // )\n    return input;\n}\n\n/////////////////////// END code extracted from StanfordCPPLib_CodeStepByStep_Project/src/types.cpp ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib_CodeStepByStep_Project/src/codestepbystep.cpp ///////////////////////\n/*\n * @version 2019/05/17\n * - add AssassinNode support\n * @version 2018/12/16\n * - improved printing of real numbers to XML output\n * @version 2017/11/12\n * - added output limit of 100k chars to avoid infinite student solution output\n * @version 2017/10/06\n * - hid POSIX signal handler behind preprocessor macro\n * @version 2016/12/07\n * - added assert* methods\n */\n\n#include <climits>\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\n#ifndef SIGSTACK\n#define SIGSTACK (static_cast<int>(0xdeadbeef))\n#endif // SIGSTACK\n\nextern void startupMainDontRunMain(int argc, char** argv);\n\nnamespace CodeStepByStep {\nstatic std::string __testToRun = \"\";\nstatic bool __runAllTests = false;\nstatic std::string __xmlOutFilename;\nstatic std::ofstream* __xout = nullptr;\nstatic void (*old_terminate)() = nullptr;\n\n// only use these if we can't use __getXmlOut (e.g. in a signal handler)\nstatic FILE* __xfout = nullptr;\n\nstd::string testToRun() {\n    return __testToRun;\n}\n\nbool runAllTests() {\n    return __runAllTests;\n}\n\nstd::string htmlDecode(const std::string& s) {\n    return ::htmlDecode(s);\n}\n\nstd::string htmlEncode(const std::string& s) {\n    return ::htmlEncode(s);\n}\n\nstd::ofstream& __getXmlOut() {\n    if (!__xout) {\n        __xout = new std::ofstream();\n    }\n    return *__xout;\n}\n\nvoid printXml(const std::string& s) {\n    __getXmlOut() << s;\n}\n\nvoid printlnXml(const std::string& s) {\n    __getXmlOut() << s << std::endl;\n}\n\nvoid printXml(bool b) {\n    __getXmlOut() << std::boolalpha << b;\n}\n\nvoid printlnXml(bool b) {\n    __getXmlOut() << std::boolalpha << b << std::endl;\n}\n\nvoid printXml(double d) {\n    // stop C++ from printing large values in scientific notation\n    // (the values below seem to be the thresholds at which auto scientific\n    // notation starts to be used in printing output of real numbers)\n    const double SCI_NOTATION_POS = 1.0e6;\n    const double SCI_NOTATION_NEG = -1.0e6;\n\n    std::string result;\n    std::stringstream out;\n    if (d >= SCI_NOTATION_POS || d <= SCI_NOTATION_NEG) {\n        // in sci. notation range; print in 'fixed' precision mode\n        // (need to manually set max precision to avoid truncation at ~6 digits)\n        out << std::fixed << std::showpoint << std::setprecision(std::numeric_limits<double>::max_digits10) << d;\n    } else {\n        // not in sci. notation range; print in normal format, but\n        // mandate decimal point, e.g. 4 => \"4.0\"\n        out << std::showpoint << d;\n    }\n    result = out.str();\n\n    // stop unnecessary 0 digits after decimal\n    // e.g. \"123.4560000\" => \"123.456\"\n    // e.g. \"123.0000000\" => \"123.0\"\n    while (endsWith(result, \"0\")) {\n        result.erase(result.length() - 1, 1);\n    }\n    if (result.empty() || endsWith(result, \".\")) {\n        result += \"0\";\n    }\n\n    // actually write the real number to the output stream\n    __getXmlOut() << result;\n}\n\nvoid printlnXml(double d) {\n    printXml(d);\n    __getXmlOut() << std::endl;\n}\n\n// print in fixed mode, not scientific notation\nvoid printXml(float f) {\n    __getXmlOut() << std::fixed << std::showpoint << f;\n}\n\nvoid printlnXml(float f) {\n    printXml(static_cast<double>(f));\n    __getXmlOut() << std::endl;\n}\n\nstd::string __stackTraceToString() {\n    std::ostringstream out;\n    exceptions::printStackTrace(out);\n    return out.str();\n}\n\nvoid __printException(const std::string& type, const std::string& message,\n                      const std::string& stacktrace, int lineNumber) {\n    CodeStepByStep::__getXmlOut() << \"<exception>\\n\"\n            << \"<type>\" << type << \"</type>\" << std::endl\n            << \"<message>\" << htmlEncode(message) << \"</message>\" << std::endl\n            << \"<line>\" << lineNumber << \"</line>\" << std::endl\n            << \"<stacktrace>\" << htmlEncode(stacktrace) << \"</stacktrace>\" << std::endl\n            << \"</exception>\" << std::endl;\n    CodeStepByStep::__getXmlOut().flush();\n}\n\nvoid __openXmlOldWay(const std::string& filename) {\n    if (__xout) {\n        __getXmlOut().flush();\n        __getXmlOut().close();\n        __xout = nullptr;\n    }\n    __xfout = fopen(filename.c_str(), \"a+\");   // open for appending\n}\n\nvoid __closeXml() {\n    if (__xout) {\n        __getXmlOut().close();\n    }\n    if (__xfout) {\n        fclose(__xfout);\n        __xfout = nullptr;\n    }\n}\n\nvoid __printXml(const char* s) {\n    fputs(s, __xfout);\n    fflush(__xfout);\n}\n\nvoid __printXml(const std::string& s) {\n    fputs(s.c_str(), __xfout);\n    fflush(__xfout);\n}\n\nvoid __printlnXml(const char* s) {\n    fputs(s, __xfout);\n    fputs(\"\\n\", __xfout);\n    fflush(__xfout);\n}\n\nvoid __printlnXml(const std::string& s) {\n    fputs(s.c_str(), __xfout);\n    fputs(\"\\n\", __xfout);\n    fflush(__xfout);\n}\n\n\n// functions to parse various collections from strings\nvoid ArrayIntList_fromString(ArrayIntList& list, const std::string& str) {\n    std::istringstream input(str);\n    input >> list;\n}\n\nvoid AssassinNode_fromString(AssassinNode*& ptr, const std::string& str) {\n    std::istringstream input(str);\n    input >> ptr;\n}\n\nvoid BasicGraph_fromString(BasicGraph& graph, const std::string& str) {\n    std::istringstream input(str);\n    input >> graph;\n}\n\nvoid BinaryTree_fromString(BinaryTree& tree, const std::string& str) {\n    std::istringstream input(str);\n    input >> tree;\n}\n\nvoid BinaryTreeNode_fromString(BinaryTreeNode*& root, const std::string& str) {\n    std::istringstream input(str);\n    input >> root;\n}\n\nvoid BinaryTreeNodeptr_fromString(BinaryTreeNode*& root, const std::string& str) {\n    std::istringstream input(str);\n    input >> root;\n}\n\nvoid BinaryTreeNodeChar_fromString(BinaryTreeNodeChar*& root, const std::string& str) {\n    std::istringstream input(str);\n    input >> root;\n}\n\nvoid BinaryTreeNodeCharptr_fromString(BinaryTreeNodeChar*& root, const std::string& str) {\n    std::istringstream input(str);\n    input >> root;\n}\n\nvoid BinaryTreeNodeDouble_fromString(BinaryTreeNodeDouble*& root, const std::string& str) {\n    std::istringstream input(str);\n    input >> root;\n}\n\nvoid BinaryTreeNodeString_fromString(BinaryTreeNodeString*& root, const std::string& str) {\n    std::istringstream input(str);\n    input >> root;\n}\n\nvoid HeapPriorityQueue_fromString(HeapPriorityQueue& pqueue, const std::string& str) {\n    std::istringstream input(str);\n    input >> pqueue;\n}\n\nvoid LinkedIntList_fromString(LinkedIntList& list, const std::string& str) {\n    std::istringstream input(str);\n    input >> list;\n}\n\nvoid ListNode_fromString(ListNode*& ptr, const std::string& str) {\n    std::istringstream input(str);\n    input >> ptr;\n}\n\nvoid ListNodeptr_fromString(ListNode*& ptr, const std::string& str) {\n    std::istringstream input(str);\n    input >> ptr;\n}\n\nvoid ListNodeDouble_fromString(ListNodeDouble*& ptr, const std::string& str) {\n    std::istringstream input(str);\n    input >> ptr;\n}\n\nvoid ListNodeDoubleptr_fromString(ListNodeDouble*& ptr, const std::string& str) {\n    std::istringstream input(str);\n    input >> ptr;\n}\n\nvoid ListNodeString_fromString(ListNodeString*& ptr, const std::string& str) {\n    std::istringstream input(str);\n    input >> ptr;\n}\n\nvoid ListNodeStringptr_fromString(ListNodeString*& ptr, const std::string& str) {\n    std::istringstream input(str);\n    input >> ptr;\n}\n\nSet<string> setFromFile(const std::string& filename, bool cache) {\n    static Map<std::string, Set<string>> CACHE;\n    if (cache && CACHE.containsKey(filename)) {\n        return CACHE[filename];\n    }\n\n    ifstream input;\n    input.open(filename.c_str());\n    Set<string> result;\n    string line;\n    while (getline(input, line)) {\n        result.add(toLowerCase(trim(line)));\n    }\n    if (cache) {\n        CACHE[filename] = result;\n    }\n    return result;\n}\n\n\n// CODE FOR HANDLING SIGNALS (VARIOUS PROGRAM CRASHES)\nvoid __codeStepByStepSignalHandler(int sig) {\n    signal(sig, SIG_DFL);   // turn signal handler off\n\n    // tailor the error message to the kind of signal that occurred\n    CodeStepByStep::__closeXml();\n    __openXmlOldWay(__xmlOutFilename);\n    if (sig == SIGSEGV) {\n        __printXml(\"<exception>\\n<type>SIGSEGV</type>\\n<message>segmentation fault</message>\\n</exception>\\n\");\n    } else if (sig == SIGABRT) {\n        __printXml(\"<exception>\\n<type>SIGABRT</type>\\n<message>abort</message>\\n</exception>\\n\");\n    } else if (sig == SIGILL) {\n        __printXml(\"<exception>\\n<type>SIGILL</type>\\n<message>illegal instruction</message>\\n</exception>\\n\");\n    } else if (sig == SIGFPE) {\n        __printXml(\"<exception>\\n<type>SIGFPE</type>\\n<message>arithmetic error</message>\\n</exception>\\n\");\n    } else if (sig == SIGINT) {\n        __printXml(\"<exception>\\n<type>SIGINT</type>\\n<message>interrupt error</message>\\n</exception>\\n\");\n    } else if (sig == SIGSTACK) {\n        __printXml(\"<exception>\\n<type>SIGSTACK</type>\\n<message>stack overflow</message>\\n</exception>\\n\");\n    } else if (sig == SIGTERM) {\n        __printXml(\"<exception>\\n<type>SIGTERM</type>\\n<message>terminated</message>\\n</exception>\\n\");\n    } else if (sig == SIGUSR1) {\n        __printXml(\"<exception>\\n<type>SIGUSR1</type>\\n<message>Excessive output printed; you may have an infinite loop in your code.</message>\\n</exception>\\n\");\n    } else {\n        __printXml(\"<exception>\\n<type>SIGFATAL</type>\\n<message>fatal error</message>\\n</exception>\\n\");\n    }\n\n    if (__runAllTests) {\n        __printXml(\"</test>\\n\");\n        __printXml(\"</tests>\\n\");\n    }\n\n    __closeXml();\n    std::exit(1);\n}\n\n#if !defined(_WIN32)\nvoid __posixSignalHandler(int sig, siginfo_t* /*siginfo*/, void* /*context*/) {\n    __codeStepByStepSignalHandler(sig);\n}\n#endif // !defined(_WIN32)\n\nstatic void __setupSignalHandler() {\n    bool handled = false;\n#ifdef SHOULD_USE_SIGNAL_STACK\n#if !defined(_WIN32)\n    // alternate stack on Linux for stack overflows\n    static uint8_t alternate_stack[SIGSTKSZ];\n    stack_t ss = {};\n    ss.ss_sp = (void*) alternate_stack;\n    ss.ss_size = SIGSTKSZ;\n    ss.ss_flags = 0;\n    sigaltstack(&ss, nullptr);\n\n    struct sigaction sig_action = {};\n    sig_action.sa_sigaction = __posixSignalHandler;\n    sigemptyset(&sig_action.sa_mask);\n#ifdef __APPLE__\n    // backtrace() doesn't work on OS X when we use an alternate stack\n    sig_action.sa_flags = SA_SIGINFO;\n#else\n    sig_action.sa_flags = SA_SIGINFO | SA_ONSTACK;\n#endif // __APPLE__\n    sigaction(SIGSEGV, &sig_action, nullptr);\n    sigaction(SIGFPE,  &sig_action, nullptr);\n    sigaction(SIGILL,  &sig_action, nullptr);\n    sigaction(SIGTERM, &sig_action, nullptr);\n    sigaction(SIGINT,  &sig_action, nullptr);\n    sigaction(SIGABRT, &sig_action, nullptr);\n    sigaction(SIGUSR1, &sig_action, nullptr);\n    handled = true;\n#endif\n#endif // SHOULD_USE_SIGNAL_STACK\n\n    if (!handled) {\n        signal(SIGABRT, CodeStepByStep::__codeStepByStepSignalHandler);\n        signal(SIGFPE,  CodeStepByStep::__codeStepByStepSignalHandler);\n        signal(SIGILL,  CodeStepByStep::__codeStepByStepSignalHandler);\n        signal(SIGINT,  CodeStepByStep::__codeStepByStepSignalHandler);\n        signal(SIGSEGV, CodeStepByStep::__codeStepByStepSignalHandler);\n        signal(SIGTERM, CodeStepByStep::__codeStepByStepSignalHandler);\n        signal(SIGUSR1, CodeStepByStep::__codeStepByStepSignalHandler);\n    }\n}\n\nstatic void __disableSignalHandler() {\n    signal(SIGABRT, SIG_DFL);\n    signal(SIGFPE,  SIG_DFL);\n    signal(SIGILL,  SIG_DFL);\n    signal(SIGINT,  SIG_DFL);\n    signal(SIGSEGV, SIG_DFL);\n    signal(SIGTERM, SIG_DFL);\n    signal(SIGUSR1, SIG_DFL);\n}\n\nstatic void __terminateHandler() {\n    __disableSignalHandler();   // don't want both a signal AND a terminate() call\n\n    std::string stackTrace;\n    try {\n        std::ostringstream out;\n        exceptions::printStackTrace(out);\n        stackTrace = out.str();\n        throw;   // re-throws the exception that already occurred\n    } catch (int value) {\n        CodeStepByStep::__printException(\"int\", integerToString(value), stackTrace);\n    } catch (long value) {\n        CodeStepByStep::__printException(\"long\", longToString(value), stackTrace);\n    } catch (float value) {\n        CodeStepByStep::__printException(\"float\", doubleToString((double) value), stackTrace);\n    } catch (double value) {\n        CodeStepByStep::__printException(\"double\", doubleToString(value), stackTrace);\n    } catch (bool value) {\n        CodeStepByStep::__printException(\"bool\", boolToString(value), stackTrace);\n    } catch (char value) {\n        CodeStepByStep::__printException(\"char\", \"'\" + charToString(value) + \"'\", stackTrace);\n    } catch (std::string value) {\n        CodeStepByStep::__printException(\"string\", value, stackTrace);\n    } catch (const char* value) {\n        CodeStepByStep::__printException(\"string\", value, stackTrace);\n    } catch (ErrorException value) {\n        CodeStepByStep::__printException(\"ErrorException\", value.what(), stackTrace);\n    } catch (std::exception& value) {\n        CodeStepByStep::__printException(\"exception\", value.what(), stackTrace);\n    } catch (...) {\n        CodeStepByStep::__printException(\"unknown\", \"\", stackTrace);\n    }\n\n    if (CodeStepByStep::__runAllTests) {\n        CodeStepByStep::__getXmlOut() << \"</test>\" << std::endl;\n        CodeStepByStep::__getXmlOut() << \"</tests>\" << std::endl;\n    }\n    CodeStepByStep::__closeXml();\n}\n\n\nvoid main_begin(int argc, char** argv) {\n    // initialize Stanford library\n    // TODO\n    // __initializeStanfordCppLibrary(argc, argv);\n\n    // set up signal handler to process serious errors\n    CodeStepByStep::__setupSignalHandler();\n    CodeStepByStep::old_terminate = std::set_terminate(CodeStepByStep::__terminateHandler);\n\n    // echo console input\n    plainconsole::setEcho(true);\n\n    // max amount of output a solution can print before it should be halted\n    const int __OUTPUT_PRINT_MAX = 100000;\n    plainconsole::setOutputLimit(__OUTPUT_PRINT_MAX);\n\n    // parse command-line args\n    CodeStepByStep::__testToRun = \"\";\n    for (int i = 1; i < argc; i++) {\n        std::string arg = argv[i];\n        if (i < argc - 1 && arg == \"--test\") {\n            CodeStepByStep::__testToRun = argv[i + 1];\n        } else if (arg == \"--all\") {\n            CodeStepByStep::__testToRun = \"--all\";\n            CodeStepByStep::__runAllTests = true;\n        } else if (i < argc - 1 && arg == \"--xml\") {\n            CodeStepByStep::__xmlOutFilename = argv[i + 1];\n            CodeStepByStep::__getXmlOut().open(argv[i + 1]);\n            // CodeStepByStep::__openXml(__xmlOutFilename);\n        }\n    }\n\n    if (CodeStepByStep::__runAllTests) {\n        // output XML prolog\n        CodeStepByStep::__getXmlOut() << \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\" << std::endl\n                << \"<tests>\" << std::endl;\n        CodeStepByStep::__getXmlOut().flush();\n    }\n}\n\nvoid main_end() {\n    if (CodeStepByStep::__runAllTests) {\n        CodeStepByStep::__getXmlOut() << \"</tests>\" << std::endl;\n        CodeStepByStep::__getXmlOut().flush();\n    }\n\n    CodeStepByStep::__closeXml();\n}\n\n\nnamespace Assertions {\nvoid assertEqualsBool(const std::string& msg, bool expected, bool actual) {\n    assertEquals(msg, \"bool\", boolToString(expected), boolToString(actual));\n}\n\nvoid assertEqualsChar(const std::string& msg, char expected, char actual) {\n    assertEquals(msg, \"char\", charToString(expected), charToString(actual));\n}\n\nvoid assertEqualsDouble(const std::string& msg, double expected, double actual, double tolerance) {\n    Map<std::string, std::string> attrs;\n    attrs[\"tolerance\"] = doubleToString(tolerance);\n    assertEquals(msg, \"double\", doubleToString(expected), doubleToString(actual), attrs);\n}\n\nvoid assertEqualsInt(const std::string& msg, int expected, int actual) {\n    assertEquals(msg, \"int\", integerToString(expected), integerToString(actual));\n}\n\nvoid assertEqualsString(const std::string& msg, std::string expected, std::string actual) {\n    assertEquals(msg, \"string\", expected, actual);\n}\n\nvoid assertTrue(const std::string& msg, bool test) {\n    assertionPrint(msg, \"assertTrue\", \"bool\", \"true\", boolToString(test));\n}\n\nvoid assertFalse(const std::string& msg, bool test) {\n    assertionPrint(msg, \"assertFalse\", \"bool\", \"false\", boolToString(test));\n}\n\nvoid assertFail(const std::string& msg) {\n    assertionPrint(msg, \"assertFail\", \"bool\", /* expected */ \"pass\", /* actual */ \"fail\");\n}\n\nvoid setTestName(const std::string& name) {\n    assertionPrint(/* message */ name, \"setTestName\", \"string\", /* expected */ \"\", /* actual */ \"\");\n}\n\nvoid assertionPrint(const std::string& msg,\n                    const std::string& assertType,\n                    const std::string& valueType,\n                    const std::string& expected,\n                    const std::string& actual,\n                    Map<std::string, std::string> attrs) {\n    CodeStepByStep::__getXmlOut() << \"<assertion type=\\\"\" << htmlEncode(assertType) << \"\\\"\";\n    for (std::string attr : attrs) {\n        CodeStepByStep::__getXmlOut() << \" \" << attr << \"=\\\"\" << htmlEncode(attrs[attr]) << \"\\\"\";\n    }\n    CodeStepByStep::__getXmlOut() << \">\" << std::endl;\n    CodeStepByStep::__getXmlOut() << \"<message>\" << htmlEncode(msg) << \"</message>\" << std::endl;\n    CodeStepByStep::__getXmlOut() << \"<type>\" << htmlEncode(valueType) << \"</type>\" << std::endl;\n    CodeStepByStep::__getXmlOut() << \"<expected>\" << htmlEncode(expected) << \"</expected>\" << std::endl;\n    CodeStepByStep::__getXmlOut() << \"<actual>\" << htmlEncode(actual) << \"</actual>\" << std::endl;\n    CodeStepByStep::__getXmlOut() << \"</assertion>\" << std::endl;\n}\n} // namespace CodeStepByStep::Assertions\n\n} // namespace CodeStepByStep\n\n/////////////////////// END code extracted from StanfordCPPLib_CodeStepByStep_Project/src/codestepbystep.cpp ///////////////////////\n\n"
  },
  {
    "path": "Archived/spl.h",
    "content": "// Stanford C++ library (extracted)\n// @author Marty Stepp\n// @version Sat Oct 12 18:21:52 PDT 2019\n//\n// This library has been merged into a single .h and .cpp file by an automatic script\n// to make it easier to include and use with the CodeStepByStep tool.\n// DO NOT EDIT THIS FILE DIRECTLY!\n// If you want to make changes or additions to the Stanford C++ library,\n// make them to the library's original source as separate .cpp / .h files,\n// then re-run the script to extract the library into these single large merged files.\n\n#define STANFORD_CPP_LIB_PRESENT true\n\nusing namespace std;\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/private/init.h ///////////////////////\n/*\n * File: init.h\n * ------------\n * This file contains code to check whether the Stanford C++ library has been\n * initialized, and if not, to initialize it.\n * This file must be included by every student-facing header in the Stanford\n * C++ library to make sure that the library is initialized before it is used.\n *\n * There used to be a group of files such as private/main.h, main.cpp, and\n * startup.cpp that contained various initialization code.  These were removed\n * and replaced with this style of initialization for the following reasons:\n *\n * - simplicity/consolidation\n * - allow student to NOT include console.h and use plain text console\n *\n * @version 2018/08/28\n * - refactor to use stanfordcpplib namespace and init.cpp\n * @version 2018/07/03\n * - add code to handle Qt GUI library initialization\n * @version 2017/04/25\n * - wrap library initializer in an #ifndef to avoid multiple declaration\n *\n * TODO: figure out how to support both 0-arg and 2-arg main()\n */\n\n#ifndef _init_h\n#define _init_h\n\n#include <cstdlib>\n#include <functional>\n#include <stdio.h>\n\nnamespace stanfordcpplib {\n\n/**\n * Returns true if the std::exit function is enabled.\n * This will be true unless disabled by, say, an autograder.\n */\nbool exitEnabled();\n\n/**\n * Initializes the Stanford C++ library.\n * A call to this function is inserted before the student's main() runs.\n * This should be run from the Qt GUI (main) thread.\n */\nvoid initializeLibrary(int argc, char** argv);\n\n/**\n * This is for any initialization that needs to be done in the student's thread\n * rather than on the Qt GUI main thread.\n * Currently this is used primarily to set up exception handlers for the\n * student's thread so we can print usable stack traces.\n */\nvoid initializeLibraryStudentThread();\n\n/**\n * Runs the student's main function in its own thread, creating that thread\n * as an object of type GThread.\n */\nvoid runMainInThread(int (* mainFunc)(void));\n\n/**\n * Runs the student's main function in its own thread, creating that thread\n * as an object of type GThread.\n */\nvoid runMainInThread(std::function<int()> mainFunc);\n\n/**\n * Runs the student's main function in its own thread, creating that thread\n * as an object of type GThread.\n */\nvoid runMainInThreadVoid(void (* mainFuncVoid)(void));\n\n/**\n * Runs the student's main function in its own thread, creating that thread\n * as an object of type GThread.\n */\nvoid runMainInThreadVoid(std::function<void()> mainFuncVoid);\n\n/**\n * Sets whether the std::exit function will be enabled or not.\n * If disabled, an error() will be thrown if student tries to exit().\n */\nvoid setExitEnabled(bool enabled);\n\n/**\n * Shuts down the Stanford C++ library.\n * A call to this function is inserted after the student's main().\n */\nvoid shutdownLibrary();\n\n/**\n * Performs any initialization needed by the library during static-init phase,\n * which occurs before main() is launched.\n * The StanfordCppLibraryInitializer class below helps us do this properly.\n */\nvoid staticInitializeLibrary();\n\n#ifndef StanfordCppLibraryInitializer_created\n#define StanfordCppLibraryInitializer_created\nclass StanfordCppLibraryInitializer {\npublic:\n    /*\n     * Code to initialize the library.\n     * Implemented as a class constructor so that it will run before the\n     * student's main function.\n     * Here we put anything that we need to initialize during the static\n     * phase before main() runs.\n     * Presently there is nothing that requires such initialization,\n     * so this is blank.\n     */\n    StanfordCppLibraryInitializer() {\n        staticInitializeLibrary();\n    }\n};\nstatic StanfordCppLibraryInitializer __stanfordcpplib_init;\n#endif // __StanfordCppLibraryInitializer_created\n\n} // namespace stanfordcpplib\n\n// bypass std::exit function\nnamespace std {\nvoid __stanfordcpplib__exitLibrary(int status);\n} // namespace std\n\n#define STD_EXIT __std_exit_function_\n#define exit __stanfordcpplib__exitLibrary\n\n#ifdef SPL_HEADLESS_MODE\n\n#endif // SPL_HEADLESS_MODE\n\n#ifdef SPL_OVERLOAD_PROBLEMATIC_POINTER_ARITHMETIC\n\n#endif // SPL_OVERLOAD_PROBLEMATIC_POINTER_ARITHMETIC\n\n#endif // _init_h\n\n/////////////////////// END code extracted from StanfordCPPLib/private/init.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/private/static.h ///////////////////////\n/*\n * File: static.h\n * --------------\n * This file provides several macros for declaring static variables and functions\n * in ways that are safe for usage during the C++ static initiialization phase.\n * These macros should be used to declare all not-inside-function static data\n * used by the library, since a lot of library code runs during the\n * static initialization phase.\n *\n * @version 2017/10/05\n * - added STATIC_VARIABLE_NAMESPACE\n */\n\n#ifndef _static_h\n#define _static_h\n\n// macros for concatenating two macros\n#ifndef CONCAT_IMPL\n#define MACRO_CONCAT(a, ...) PRIMITIVE_CONCAT(a, __VA_ARGS__)\n#define PRIMITIVE_CONCAT(a, ...) a ## __VA_ARGS__\n#define MACRO_IDENT(x) x\n#endif // CONCAT_IMPL\n\n// declare static var/func and assign it the given value\n#define STATIC_VARIABLE_DECLARE(type, name, value) \\\n    static type & s_##name() { \\\n        static type __##name = (value); \\\n        return __##name; \\\n    }\n\n// declare but don't assign a value (use type's default value)\n#define STATIC_VARIABLE_DECLARE_BLANK(type, name) \\\n    static type & s_##name() { \\\n        static type __##name; \\\n        return __##name; \\\n    }\n\n// declare static const var/func and assign it the given value\n#define STATIC_CONST_VARIABLE_DECLARE(type, name, value) \\\n    static const type & s_##name() { \\\n        static const type __##name = (value); \\\n        return __##name; \\\n    }\n\n// declare static var/func collection and assign it the given elements\n// (these seem to not work for multi-template collections like Map<K, V>  :-/\n//  but they work for single-template collections like Vector<E>)\n#define STATIC_VARIABLE_DECLARE_COLLECTION(type, name, ...) \\\n    static type & s_##name() { \\\n        static type __##name = { __VA_ARGS__ }; \\\n        return __##name; \\\n    }\n\n// declare static var/func collection and leave it empty\n#define STATIC_VARIABLE_DECLARE_COLLECTION_EMPTY(type, name) \\\n    static type & s_##name() { \\\n        static type __##name; \\\n        return __##name; \\\n    }\n\n#define STATIC_VARIABLE_DECLARE_MAP_EMPTY(maptype, keytype, valuetype, name) \\\n    static maptype < keytype , valuetype > & s_##name() { \\\n        static maptype < keytype , valuetype > __##name; \\\n        return __##name; \\\n    }\n\n// declare static const var/func collection and assign it the given elements\n#define STATIC_CONST_VARIABLE_DECLARE_COLLECTION(type, name, ...) \\\n    static const type & s_##name() { \\\n        static const type __##name { __VA_ARGS__ }; \\\n        return __##name; \\\n    }\n\n// look up the value of the given static variable (by calling its static s_ function)\n#define STATIC_VARIABLE(name) \\\n    (s_##name())\n\n// look up the value of the given static variable in another namespace\n#define STATIC_VARIABLE_NAMESPACE(namespacename, name) \\\n    (namespacename::s_##name())\n\n#endif // _static_h\n\n/////////////////////// END code extracted from StanfordCPPLib/private/static.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/system/error.h ///////////////////////\n/*\n * File: error.h\n * -------------\n * This file defines the <code>ErrorException</code> class and the\n * <code>error</code> function.\n *\n * @version 2018/10/18\n * - added getKind for ErrorExceptions that wrap other types of errors\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2017/11/29\n * - fix for undefined SIGUSR1 on Windows systems\n * @version 2016/11/29\n * - changed error() to accept const string& instead of string\n * @version 2016/11/23\n * - added operator << to print ErrorExceptions\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _error_h\n#define _error_h\n\n#include <csignal>\n#include <exception>\n#include <iostream>\n#include <string>\n\n// bug fix for missing SIGUSR1 on some Windows systems\n#ifndef SIGUSR1\n#define SIGUSR1 10\n#endif // SIGUSR2\n\n/**\n * This exception is thrown by calls to the <code>error</code>\n * function.  Typical code for catching errors looks like this:\n *\n *<pre>\n *    try {\n *       ... code in which an error might occur ...\n *    } catch (ErrorException& ex) {\n *       ... code to handle the error condition ...\n *    }\n *</pre>\n *\n * If an <code>ErrorException</code> is thrown at any point in the\n * range of the <code>try</code> (including in functions called from\n * that code), control will jump immediately to the error handler.\n */\nclass ErrorException : public std::exception {\npublic:\n    /**\n     * Creates a new ErrorException with the given error message.\n     */\n    ErrorException(std::string msg);\n\n    /**\n     * Frees any memory allocated by the exception.\n     */\n    virtual ~ErrorException() noexcept = default;\n\n    /**\n     * Prints the exception to the standard error stream (cerr),\n     * including its message and stack trace if any.\n     */\n    virtual void dump() const;\n\n    /**\n     * Prints the exception to the given output stream,\n     * including its message and stack trace if any.\n     */\n    virtual void dump(std::ostream& out) const;\n\n    /**\n     * Returns what kind of exception this is.\n     * In general this returns \"error\", but in some cases we catch other kinds\n     * of exceptions (like thrown ints or strings) and wrap them up as\n     * ErrorExceptions. In such cases, the kind will be \"int\" or \"string\" etc.\n     */\n    virtual std::string getKind() const;\n\n    /**\n     * Returns the exception's error message as passed to its constructor.\n     */\n    virtual std::string getMessage() const;\n\n    /**\n     * Returns a stack trace for this exception as a multi-line string.\n     * See exceptions.h/cpp for descriptions of the format.\n     * Not every exception has a proper stack trace, based on when/why it was\n     * thrown, platform incompatibilities, and other issues; use hasStackTrace to\n     * check if a given exception's stack trace is populated.\n     */\n    virtual std::string getStackTrace() const;\n\n    /**\n     * Returns whether this exception has a non-empty stack trace.\n     * Not every exception has a proper stack trace, based on when/why it was\n     * thrown, platform incompatibilities, and other issues; use hasStackTrace to\n     * check if a given exception's stack trace is populated.\n     */\n    virtual bool hasStackTrace() const;\n\n    /**\n     * Sets what kind of exception this is.\n     * Default is \"error\".\n     */\n    void setKind(const std::string& kind);\n\n    /**\n     * Returns the exception's error message as a C string.\n     */\n    virtual const char* what() const noexcept;\n\nprotected:\n    /**\n     * Sets this exception's stack trace to the given multi-line string.\n     */\n    void setStackTrace(const std::string& stackTrace);\n\nprivate:\n    std::string _kind;\n    std::string _msg;\n    std::string _stackTrace;\n\n    /**\n     * Prepends \"*** \" to each line of the given string.\n     * Used to format stack traces that print to the console.\n     */\n    static std::string insertStarsBeforeEachLine(const std::string& s);\n};\n\n/**\n * Prints the error exception to the given output stream.\n */\nstd::ostream& operator <<(std::ostream& out, const ErrorException& ex);\n\n/**\n * Signals an error condition in a program by throwing an\n * <code>ErrorException</code> with the specified message.\n */\n[[noreturn]] void error(const std::string& msg);\n\n#endif // _error_h\n\n/////////////////////// END code extracted from StanfordCPPLib/system/error.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/util/require.h ///////////////////////\n/*\n * File: require.h\n * ---------------\n *\n * This file contains assertion functions for argument checking within the\n * code of the Stanford C++ library itself.\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _require_h\n#define _require_h\n\n#include <string>\n\n/**\n * @private\n */\nnamespace require {\n\nvoid inRange(double value, double min, double max, const std::string& caller = \"\", const std::string& valueName = \"\", const std::string& details = \"\");\nvoid inRange(int value, int min, int max, const std::string& caller = \"\", const std::string& valueName = \"\", const std::string& details = \"\");\nvoid inRange2D(double x, double y, double maxX, double maxY, const std::string& caller = \"\", const std::string& xValueName = \"\", const std::string& yValueName = \"\", const std::string& details = \"\");\nvoid inRange2D(double x, double y, double minX, double minY, double maxX, double maxY, const std::string& caller = \"\", const std::string& xValueName = \"\", const std::string& yValueName = \"\", const std::string& details = \"\");\nvoid inRange2D(int x, int y, int maxX, int maxY, const std::string& caller = \"\", const std::string& xValueName = \"\", const std::string& yValueName = \"\", const std::string& details = \"\");\nvoid inRange2D(int x, int y, int minX, int minY, int maxX, int maxY, const std::string& caller = \"\", const std::string& xValueName = \"\", const std::string& yValueName = \"\", const std::string& details = \"\");\nvoid nonEmpty(const std::string& str, const std::string& caller = \"\", const std::string& valueName = \"\", const std::string& details = \"\");\nvoid nonNegative(double value, const std::string& caller = \"\", const std::string& valueName = \"\", const std::string& details = \"\");\nvoid nonNegative(int value, const std::string& caller = \"\", const std::string& valueName = \"\", const std::string& details = \"\");\nvoid nonNegative(long value, const std::string& caller = \"\", const std::string& valueName = \"\", const std::string& details = \"\");\nvoid nonNegative2D(double x, double y, const std::string& caller = \"\", const std::string& xValueName = \"\", const std::string& yValueName = \"\", const std::string& details = \"\");\nvoid nonNegative2D(int x, int y, const std::string& caller = \"\", const std::string& xValueName = \"\", const std::string& yValueName = \"\", const std::string& details = \"\");\nvoid nonNull(const void* ptr, const std::string& caller = \"\", const std::string& valueName = \"\", const std::string& details = \"\");\nvoid positive(double value, const std::string& caller = \"\", const std::string& valueName = \"\", const std::string& details = \"\");\nvoid positive(int value, const std::string& caller = \"\", const std::string& valueName = \"\", const std::string& details = \"\");\nvoid require(bool test, const std::string& caller = \"\", const std::string& details = \"\");\n\n} // namespace require\n\n#endif // _require_h\n\n/////////////////////// END code extracted from StanfordCPPLib/util/require.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/private/headless.h ///////////////////////\n/*\n * File: headless.h\n * ----------------\n * This file contains some code for running in \"headless\" mode with no GUI.\n *\n * @version 2018/11/22\n * - initial version\n */\n\n\n\n#ifndef _headless_h\n#define _headless_h\n\n#ifdef SPL_HEADLESS_MODE\n\n// make up a Qt version\n#define QT_VERSION 5110\n\n// make Qt version macro produce a version less than this\n#define QT_VERSION_CHECK(a, b, c) 5090\n\n#endif // SPL_HEADLESS_MODE\n\n#endif // _headless_h\n\n/////////////////////// END code extracted from StanfordCPPLib/private/headless.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/io/base64.h ///////////////////////\n/*\n * File: base64.h\n * --------------\n * This file declares a set of functions for encoding and decoding binary data\n * in the base64 format.  See:\n * http://en.wikipedia.org/wiki/Base64\n *\n * @author Marty Stepp, based upon open-source Apache Base64 en/decoder\n * @version 2014/08/03\n * @since 2014/08/03\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _base64_h\n#define _base64_h\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif // __cplusplus\n\nint Base64encode_len(int len);\nint Base64encode(char* coded_dst, const char* plain_src, int len_plain_src);\n\nint Base64decode_len(const char* coded_src);\nint Base64decode(char* plain_dst, const char* coded_src);\n\n#ifdef __cplusplus\n}\n\n#include <string>\n\nnamespace Base64 {\n/**\n * Returns a Base64-encoded equivalent of the given string.\n */\nstd::string encode(const std::string& s);\n\n/**\n * Decodes the given Base64-encoded string and returns the decoded\n * original contents.\n */\nstd::string decode(const std::string& s);\n}\n#endif // __cplusplus\n\n#endif // _base64_h\n\n/////////////////////// END code extracted from StanfordCPPLib/io/base64.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/util/direction.h ///////////////////////\n/*\n * File: direction.h\n * -----------------\n * This file exports an enumerated type called <code>Direction</code>\n * whose elements are the four compass points: <code>NORTH</code>,\n * <code>EAST</code>, <code>SOUTH</code>, and <code>WEST</code>.\n *\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _direction_h\n#define _direction_h\n\n#include <iostream>\n#include <string>\n\n/**\n * This enumerated type is used to represent the four compass directions.\n */\nenum Direction { NORTH, EAST, SOUTH, WEST };\n\n/**\n * Returns the direction that is to the left of the argument.\n */\nDirection leftFrom(Direction dir);\n\n/**\n * Returns the direction that is to the right of the argument.\n */\nDirection rightFrom(Direction dir);\n\n/**\n * Returns the direction that is opposite to the argument.\n */\nDirection opposite(Direction dir);\n\n/**\n * Returns the name of the direction as a string.\n */\nstd::string directionToString(Direction dir);\n\n/**\n * Overloads the <code>&lt;&lt;</code> operator so that it is able\n * to display <code>Direction</code> values.\n */\nstd::ostream& operator <<(std::ostream& os, const Direction& dir);\n\n/**\n * Overloads the <code>&gt;&gt;</code> operator so that it is able\n * to read <code>Direction</code> values.\n */\nstd::istream& operator >>(std::istream& os, Direction& dir);\n\n/**\n * Overloads the suffix version of the <code>++</code> operator to\n * work with <code>Direction</code> values.  The sole purpose of this\n * definition is to support the idiom\n *\n *<pre>\n *    for (Direction dir = NORTH; dir &lt;= WEST; dir++) ...\n *</pre>\n */\nDirection operator ++(Direction& dir, int);\n\n#endif // _direction_h\n\n/////////////////////// END code extracted from StanfordCPPLib/util/direction.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/collections/hashcode.h ///////////////////////\n/*\n * File: hashcode.h\n * ----------------\n * This file declares global hashing functions for various common data types.\n * These functions are used by the HashMap and HashSet collections, as well as\n * by other collections that wish to be used as elements within HashMaps/Sets.\n *\n * @version 2017/10/21\n * - added hash codes for short, unsigned integers\n * @version 2017/09/29\n * - added composite hashCode functions (hashCode2, 3, 4, ...)\n * @version 2015/07/05\n * - using global hashing functions rather than global variables\n *   (hashSeed(), hashMultiplier(), and hashMask())\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _hashcode_h\n#define _hashcode_h\n\n#include <string>\n#include <utility>\n\n/*\n * Function: hashCode\n * Usage: int hash = hashCode(key);\n * --------------------------------\n * Returns a hash code for the specified key, which is always a\n * nonnegative integer.  This function is overloaded to support\n * all of the primitive types and the C++ <code>string</code> type.\n */\nint hashCode(bool key);\nint hashCode(char key);\nint hashCode(double key);\nint hashCode(float key);\nint hashCode(long double key);\nint hashCode(int key);\nint hashCode(unsigned int key);\nint hashCode(long key);\nint hashCode(unsigned long key);\nint hashCode(short key);\nint hashCode(unsigned short key);\nint hashCode(const char* str);\nint hashCode(const std::string& str);\nint hashCode(void* key);\n\n/*\n * Constants that are used to help implement these functions\n * (see hashcode.h for example usage)\n */\nint hashSeed();         // Starting point for first cycle\nint hashMultiplier();   // Multiplier for each cycle\nint hashMask();         // All 1 bits except the sign\n\n/*\n * Computes a composite hash code from a list of multiple values.\n * The components are scaled up so as to spread out the range of values\n * and reduce collisions.\n * The type of each value passed must have a suitable hashCode() function.\n */\ntemplate <typename T1, typename T2, typename... Others>\nint hashCode(T1&& first, T2&& second, Others&&... remaining) {\n    int result = hashSeed();\n\n    /* Compute the hash code for the last n - 1 arguments. */\n    result += hashCode(std::forward<T2>(second), std::forward<Others>(remaining)...);\n\n    /* Update the hash to factor in the hash of the first element. */\n    result *= hashMultiplier();\n    result += hashCode(std::forward<T1>(first));\n\n    /* Hash the resulting integer to mask off any unneeded bits. */\n    return hashCode(result);\n}\n\n#endif // _hashcode_h\n\n/////////////////////// END code extracted from StanfordCPPLib/collections/hashcode.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/util/random.h ///////////////////////\n/*\n * File: random.h\n * --------------\n * This file exports functions for generating pseudorandom numbers.\n * \n * @version 2019/05/16\n * - added randomColor that takes min/max RGB\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2017/10/05\n * - added randomFeedClear\n * @version 2017/09/28\n * - moved random 'feed' functions into autograder namespace\n * @version 2016/08/02\n * - added randomColor, randomColorString\n * @version 2014/10/19\n * - alphabetized functions\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _random_h\n#define _random_h\n\n#include <string>\n\n/**\n * Returns <code>true</code> with 50% probability.\n */\nbool randomBool();\n\n/**\n * Returns <code>true</code> with the probability indicated by <code>p</code>.\n * The argument <code>p</code> must be a floating-point number between\n * 0 (never) and 1 (always).  For example, calling\n * <code>randomChance(.30)</code> returns <code>true</code> 30 percent\n * of the time.\n */\nbool randomChance(double p);\n\n/**\n * Returns a random RGB color as an integer.\n * See also: gwindow.h convertRGBToColor()\n */\nint randomColor();\n\n/**\n * Returns a random RGB color as an integer, with the value of the RGB components\n * bounded between the given minimum and maximum.\n * @throw ErrorException if min or max is not in [0..255] or min > max\n * See also: gwindow.h convertRGBToColor()\n */\nint randomColor(int minRGB, int maxRGB);\n\n/**\n * Returns a random RGB color as a hex string like \"#ff00ff\" for magenta.\n * See also: gwindow.h convertColorToRGB()\n */\nstd::string randomColorString();\n\n/**\n * Returns a random RGB color as a hex string like \"#ff00ff\" for magenta,\n * with the value of the RGB components bounded between the given minimum and maximum.\n * @throw ErrorException if min or max is not in [0..255] or min > max\n * See also: gwindow.h convertColorToRGB()\n */\nstd::string randomColorString(int minRGB, int maxRGB);\n\n/**\n * Returns a random integer in the range <code>low</code> to\n * <code>high</code>, inclusive.\n */\nint randomInteger(int low, int high);\n\n/**\n * Returns a random real number in the half-open interval\n * [<code>low</code>&nbsp;..&nbsp;<code>high</code>).  A half-open\n * interval includes the first endpoint but not the second, which\n * means that the result is always greater than or equal to\n * <code>low</code> but strictly less than <code>high</code>.\n */\ndouble randomReal(double low, double high);\n\n/**\n * Sets the internal random number seed to the specified value.  You\n * can use this function to set a specific starting point for the\n * pseudorandom sequence or to ensure that program behavior is\n * repeatable during the debugging phase.\n */\nvoid setRandomSeed(int seed);\n\n/**\n * Extra functions to facilitate creation of autograder programs.\n * @private\n */\nnamespace autograder {\n/**\n * Inserts the given boolean value to be returned by the random number\n * generator, rather than truly random choices.\n */\nvoid randomFeedBool(bool value);\n\n/**\n * Removes any previously 'fed' random integers so that future calls\n * to random functions will return truly random values.\n */\nvoid randomFeedClear();\n\n/**\n * Inserts the given integer to be returned by the random number generator,\n * rather than truly random numbers.\n */\nvoid randomFeedInteger(int value);\n\n/**\n * Inserts the given real number to be returned by the random number generator,\n * rather than truly random numbers.\n */\nvoid randomFeedReal(double value);\n}\n\n#endif // _random_h\n\n/////////////////////// END code extracted from StanfordCPPLib/util/random.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/util/point.h ///////////////////////\n/*\n * File: point.h\n * -------------\n * This file exports a class representing an integer-valued <i>x</i>-<i>y</i>\n * pair.\n *\n * @version 2018/11/22\n * - added headless mode support\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _point_h\n#define _point_h\n\n#include <string>\n\n#ifndef SPL_HEADLESS_MODE\nclass GPoint;   // forward declaration\n#endif // SPL_HEADLESS_MODE\n\n/**\n * This class represents an <i>x</i>-<i>y</i> coordinate point on a\n * two-dimensional integer grid.  If you need to work with real-valued points,\n * you should use the <a href=\"gtypes.html\"><code>gtypes.h</code></a>\n * interface instead.\n */\nclass Point {\npublic:\n    /**\n     * Creates a <code>Point</code> object at (0, 0).\n     */\n    Point();\n\n    /**\n     * Creates a <code>Point</code> object with the specified x and y coordinates.\n     */\n    Point(int x, int y);\n\n#ifndef SPL_HEADLESS_MODE\n    /**\n     * Creates a <code>Point</code> object with the same x and y coordinates\n     * as the given other point.\n     */\n    Point(const GPoint& point);\n#endif // SPL_HEADLESS_MODE\n\n    /**\n     * Returns the <i>x</i>-coordinate of the point.\n     */\n    int getX() const;\n\n    /**\n     * Returns the <i>y</i>-coordinate of the point.\n     */\n    int getY() const;\n\n    /**\n     * Returns a string representation of the <code>Point</code> in the form\n     * <code>\"(x, y)\"</code>.\n     */\n    std::string toString() const;\n\n    /**\n     * Returns <code>true</code> if <code>p1</code> and <code>p2</code>\n     * are the same point.\n     */\n    bool operator ==(const Point& p2) const;\n\n    /**\n     * Returns <code>true</code> if <code>p1</code> and <code>p2</code>\n     * are different.\n     */\n    bool operator !=(const Point& p2) const;\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\nprivate:\n    // instance variables\n    int x;                         // the x-coordinate of the point\n    int y;                         // the y-coordinate of the point\n};\n\n/**\n * Overloads the <code>&lt;&lt;</code> operator so that it is able\n * to display <code>Point</code> values.\n */\nstd::ostream& operator <<(std::ostream& os, const Point& pt);\n\n/**\n * Hash code function for Point objects.\n */\nint hashCode(const Point& pt);\n\n#endif // _point_h\n\n/////////////////////// END code extracted from StanfordCPPLib/util/point.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/io/simpio.h ///////////////////////\n/*\n * File: simpio.h\n * --------------\n * This file exports a set of functions that simplify input/output\n * operations in C++ and provide some error-checking on console input.\n * \n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2016/09/29\n * - added getDouble method\n * @version 2015/07/05\n * - increased visibility of appendSpace function used by various IO\n *   prompting functions (no longer static)\n * @version 2014/10/19\n * - alphabetized functions\n * - converted many funcs to take const string& rather than string for efficiency\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _simpio_h\n#define _simpio_h\n\n#include <iostream>\n#include <string>\n\n/**\n * Adds a space at the end of the given string by reference if none is present.\n * @private\n */\nvoid appendSpace(std::string& prompt);\n\n/**\n * Reads a complete line from <code>cin</code>, expecting the user to type a\n * single character. If this is the case, that character value is returned.\n * If the user types anything other than a one-character line of input,\n * the user is given a chance to reenter the value.\n *\n * If supplied, the optional <code>prompt</code> string is printed before\n * reading the value.\n *\n * The also optional <code>reprompt</code> argument provides an output message\n * displayed each time if the user types a file that is not found.\n * If no value is passed, defaults to, \"You must type a single character. Try again.\".\n */\nchar getChar(const std::string& prompt = \"\",\n             const std::string& reprompt = \"\");\n\n/**\n * Reads a complete line from <code>cin</code> and scans it as a\n * floating-point number. If the scan succeeds, the floating-point\n * value is returned.  If the input is not a legal number or if\n * extraneous characters (other than whitespace) appear in the string,\n * the user is given a chance to reenter the value.\n *\n * If supplied, the optional <code>prompt</code> string is printed before\n * reading the value.\n *\n * The also optional <code>reprompt</code> argument provides an output message\n * displayed each time if the user types a file that is not found.\n * If no value is passed, defaults to, \"Illegal numeric format. Try again.\".\n *\n * Equivalent to getReal.\n */\ndouble getDouble(const std::string& prompt = \"\",\n                 const std::string& reprompt = \"\");\n\n/**\n * Reads a complete line from <code>cin</code> and scans it as a\n * floating-point number. If the scan succeeds, the floating-point\n * value is returned.  If the input is not a legal number or if\n * it is not between min and max, or if extraneous characters\n * (other than whitespace) appear in the string,\n * the user is given a chance to reenter the value.\n *\n * The required <code>prompt</code> string is printed before reading the value.\n *\n * Equivalent to getRealBetween.\n */\ndouble getDoubleBetween(const std::string& prompt, double min, double max);\n\n\n/**\n * Reads a complete line from <code>cin</code> and scans it as an\n * integer. If the scan succeeds, the integer value is returned. If\n * the argument is not a legal integer or if extraneous characters\n * (other than whitespace) appear in the string, the user is given\n * a chance to reenter the value.\n *\n * If supplied, the optional <code>prompt</code> string is printed before\n * reading the value.\n *\n * The also optional <code>reprompt</code> argument provides an output message\n * displayed each time if the user types a file that is not found.\n * If no value is passed, defaults to, \"Illegal integer format. Try again.\".\n */\nint getInteger(const std::string& prompt = \"\",\n               const std::string& reprompt = \"\");\n\n/**\n * Reads a complete line from <code>cin</code> and scans it as an\n * integer. If the scan succeeds, the integer value is returned. If\n * the argument is not a legal integer, if it is not between min and max,\n * or if extraneous characters (other than whitespace) appear in the string,\n * the user is given a chance to reenter the value.\n *\n * The required <code>prompt</code> string is printed before reading the value.\n */\nint getIntegerBetween(const std::string& prompt, int min, int max);\n\n/**\n * Reads a line of text from <code>cin</code> and returns that line\n * as a string.  The newline character that terminates the input is\n * not stored as part of the return value.  If supplied, the optional\n * <code>prompt</code> string is printed before reading the value.\n */\nstd::string getLine(const std::string& prompt = \"\");\n\n/**\n * Alternate version of getLine that accepts a prompt and fills a given output\n * variable with its result.\n */\nvoid getLine(const std::string& prompt,\n             std::string& out);\n\n/**\n * Alternate version of getLine that accepts an input stream to read from.\n * Meant as a drop-in replacement for the standard C++ getline (lowercase L)\n * function.\n */\nvoid getLine(std::istream& input,\n             std::string& out);\n\n/**\n * Reads a complete line from <code>cin</code> and scans it as a\n * floating-point number. If the scan succeeds, the floating-point\n * value is returned.  If the input is not a legal number or if\n * extraneous characters (other than whitespace) appear in the string,\n * the user is given a chance to reenter the value.\n *\n * If supplied, the optional <code>prompt</code> string is printed before\n * reading the value.\n *\n * The also optional <code>reprompt</code> argument provides an output message\n * displayed each time if the user types a file that is not found.\n * If no value is passed, defaults to, \"Illegal numeric format. Try again.\".\n *\n * Equivalent to getDouble.\n */\ndouble getReal(const std::string& prompt = \"\",\n               const std::string& reprompt = \"\");\n\n/**\n * Reads a complete line from <code>cin</code> and scans it as a\n * floating-point number. If the scan succeeds, the floating-point\n * value is returned.  If the input is not a legal number or if\n * it is not between min and max, or if extraneous characters\n * (other than whitespace) appear in the string,\n * the user is given a chance to reenter the value.\n *\n * The required <code>prompt</code> string is printed before reading the value.\n *\n * Equivalent to getDoubleBetween.\n */\ndouble getRealBetween(const std::string& prompt, double min, double max);\n\n/**\n * Reads a complete line from <code>cin</code> and treats it as a\n * yes-or-no answer to a question.  Returns <code>true</code> if the line\n * typed begins with a 'y' or 'Y', and returns <code>false</code> if it begins\n * with a 'n' or 'N'.  Otherwise the user is given a chance to reenter the\n * value.\n *\n * If supplied, the optional <code>prompt</code> string is printed before\n * reading the value.\n *\n * The also optional <code>reprompt</code> argument provides an output message\n * displayed each time if the user types a file that is not found.\n * If no value is passed, defaults to,\n * \"Please type a word that starts with 'Y' or 'N'.\".\n * \n * The also also optional <code>defaultValue</code> argument indicates what\n * should happen if the user just presses Enter rather than typing Y or N.\n * By default, the user is re-prompted, but if a defaultValue is passed here,\n * pressing Enter will be equivalent to having typed that value.\n * This is useful where the default Y/N answer is Yes or No and you want to\n * let the user avoid typing.\n */\nbool getYesOrNo(const std::string& prompt = \"\",\n                const std::string& reprompt = \"\",\n                const std::string& defaultValue = \"\");\n\n#endif // _simpio_h\n\n/////////////////////// END code extracted from StanfordCPPLib/io/simpio.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/collections/functional.h ///////////////////////\n/*\n * File: functional.h\n * ------------------\n * Contains a few functions for functional programming.\n *\n * The map, filter, and reduce operations are quite common in functional\n * programming systems.  They allow for elegant functional solutions to many\n * common programming tasks involving collections of data.\n *\n * There are similar functions in the C++ STL algorithm package.\n * But those functions often operate on STL iterators.\n * By contrast, these functions accept collections as parameters instead.\n * This is preferable for introductory students who are just learning.\n *\n * Implementation detail: Each function has several overloads.\n * Some of these are to allow for functions and predicates that accept their\n * arguments either by value or by const reference.\n * Other overloads allow either returning the result collection or passing it in\n * by reference as an output parameter to be filled in.\n *\n * We do not support \"in-place\" versions of these functions, partly because\n * there is not a perfect standard \"remove\" member across all collections that\n * accepts a value to remove as its parameter, and partly because the more common\n * functional style is to expect a new collection result to be returned.\n *\n * @author Marty Stepp\n * @version 2018/03/10\n * - initial version\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _functional_h\n#define _functional_h\n\n#include <functional> // The standard header one. :-)\n\nnamespace functional {\n\n/*\n * Performs a filter operation on the given collection,\n * returning a new collection that retains only the elements\n * for which the given predicate function returns true.\n */\ntemplate <typename CollectionType, typename ElementType>\nCollectionType filter(CollectionType collection,\n                      bool (*predicate)(ElementType)) {\n    CollectionType result;\n    for (const ElementType& element : collection) {\n        if (predicate(element)) {\n            result.add(element);\n        }\n    }\n    return result;\n}\n\n/*\n * Performs a filter operation on the given collection,\n * returning a new collection that retains only the elements\n * for which the given predicate function returns true.\n */\ntemplate <typename CollectionType, typename ElementType>\nCollectionType filter(CollectionType collection,\n                      bool (*predicate)(const ElementType&)) {\n    CollectionType result;\n    for (const ElementType& element : collection) {\n        if (predicate(element)) {\n            result.add(element);\n        }\n    }\n    return result;\n}\n\n/*\n * Performs a filter operation on the given collection,\n * building a new collection that retains only the elements\n * for which the given predicate function returns true.\n * The new collection is stored in the given 'result' variable.\n * A reference to that same result is returned for convenience.\n */\ntemplate <typename CollectionType, typename ElementType>\nCollectionType& filter(CollectionType collection,\n                       bool (*predicate)(ElementType),\n                       CollectionType& result) {\n    for (const ElementType& element : collection) {\n        if (predicate(element)) {\n            result.add(element);\n        }\n    }\n    return result;\n}\n\n/*\n * Performs a filter operation on the given collection,\n * building a new collection that retains only the elements\n * for which the given predicate function returns true.\n * The new collection is stored in the given 'result' variable.\n * A reference to that same result is returned for convenience.\n */\ntemplate <typename CollectionType, typename ElementType>\nCollectionType& filter(CollectionType collection,\n                       bool (*predicate)(const ElementType&),\n                       CollectionType& result) {\n    for (const ElementType& element : collection) {\n        if (predicate(element)) {\n            result.add(element);\n        }\n    }\n    return result;\n}\n\n/**\n * Performs a filter operation on the given collection,\n * returning a new collection that retains only the elements\n * for which the given predicate function returns true.\n */\ntemplate <typename CollectionType, typename ElementType>\nCollectionType filter(CollectionType collection,\n                      std::function<bool (const ElementType &)> predicate) {\n    CollectionType result;\n    for (const ElementType& element : collection) {\n        if (predicate(element)) {\n            result.add(element);\n        }\n    }\n    return result;\n}\n\n/**\n * Performs a filter operation on the given collection,\n * building a new collection that retains only the elements\n * for which the given predicate function returns true.\n * The new collection is stored in the given 'result' variable.\n * A reference to that same result is returned for convenience.\n */\ntemplate <typename CollectionType, typename ElementType>\nCollectionType& filter(CollectionType collection,\n                       std::function<bool (const ElementType &)> predicate,\n                       CollectionType& result) {\n    for (const ElementType& element : collection) {\n        if (predicate(element)) {\n            result.add(element);\n        }\n    }\n    return result;\n}\n\n/*\n * Applies the given function to each element of the given collection,\n * producing and returning a new collection containing the results.\n */\ntemplate <typename CollectionType, typename ElementType>\nCollectionType map(CollectionType collection,\n                   ElementType (*fn)(ElementType)) {\n    CollectionType result;\n    for (const ElementType& element : collection) {\n        result.add(fn(element));\n    }\n    return result;\n}\n\n/*\n * Applies the given function to each element of the given collection,\n * producing and returning a new collection containing the results.\n */\ntemplate <typename CollectionType, typename ElementType>\nCollectionType map(CollectionType collection,\n                   ElementType (*fn)(const ElementType&)) {\n    CollectionType result;\n    for (const ElementType& element : collection) {\n        result.add(fn(element));\n    }\n    return result;\n}\n\n/*\n * Applies the given function to each element of the given collection,\n * producing a new collection containing the results.\n * The new collection is stored in the 'result' variable.\n * A reference to that same result is returned for convenience.\n */\ntemplate <typename CollectionType, typename ElementType,\n          typename CollectionType2, typename ElementType2>\nCollectionType2& map(CollectionType collection,\n                     ElementType2 (*fn)(ElementType),\n                     CollectionType2& result) {\n    for (const ElementType& element : collection) {\n        result.add(fn(element));\n    }\n    return result;\n}\n\n/*\n * Applies the given function to each element of the given collection,\n * producing a new collection containing the results.\n * The new collection is stored in the 'result' variable.\n * A reference to that same result is returned for convenience.\n */\ntemplate <typename CollectionType, typename ElementType,\n          typename CollectionType2, typename ElementType2>\nCollectionType2& map(CollectionType collection,\n                     ElementType2 (*fn)(const ElementType&),\n                     CollectionType2& result) {\n    for (const ElementType& element : collection) {\n        result.add(fn(element));\n    }\n    return result;\n}\n\n/**\n * Applies the given function to each element of the given collection,\n * producing and returning a new collection containing the results.\n */\ntemplate <typename CollectionType, typename ElementType>\nCollectionType map(CollectionType collection,\n                   std::function<ElementType (const ElementType &)> fn) {\n    CollectionType result;\n    for (const ElementType& element : collection) {\n        result.add(fn(element));\n    }\n    return result;\n}\n\n/**\n * Applies the given function to each element of the given collection,\n * producing a new collection containing the results.\n * The new collection is stored in the 'result' variable.\n * A reference to that same result is returned for convenience.\n */\ntemplate <typename CollectionType, typename ElementType,\n          typename CollectionType2, typename ElementType2>\nCollectionType2& map(CollectionType collection,\n                     std::function<ElementType (const ElementType &)> fn,\n                     CollectionType2& result) {\n    for (const ElementType& element : collection) {\n        result.add(fn(element));\n    }\n    return result;\n}\n\n/*\n * Performs a reduction operation, applying a function to each neighboring pair\n * of elements of the collection until they are all combined (reduced) into a\n * single value, which is then returned.\n */\ntemplate <typename CollectionType, typename ElementType>\nElementType reduce(CollectionType collection,\n                   ElementType (*fn)(ElementType e1, ElementType e2),\n                   ElementType startValue) {\n    ElementType prev = startValue;\n    for (const ElementType& element : collection) {\n        prev = fn(prev, element);\n    }\n    return prev;\n}\n\n/*\n * Performs a reduction operation, applying a function to each neighboring pair\n * of elements of the collection until they are all combined (reduced) into a\n * single value, which is then returned.\n */\ntemplate <typename CollectionType, typename ElementType>\nElementType reduce(CollectionType collection,\n                   ElementType (*fn)(ElementType e1, ElementType e2)) {\n    bool first = true;\n    ElementType prev;\n    for (const ElementType& element : collection) {\n        if (first) {\n            prev = element;\n            first = false;\n        } else {\n            prev = fn(prev, element);\n        }\n    }\n    return prev;\n}\n\n/*\n * Performs a reduction operation, applying a function to each neighboring pair\n * of elements of the collection until they are all combined (reduced) into a\n * single value, which is then returned.\n * Begins the reduction with the given starting value, which is then merged\n * with each value from the collection one at a time.\n */\ntemplate <typename CollectionType, typename ElementType>\nElementType reduce(CollectionType collection,\n                   ElementType (*fn)(const ElementType& e1, const ElementType& e2),\n                   ElementType startValue) {\n    ElementType prev = startValue;\n    for (const ElementType& element : collection) {\n        prev = fn(prev, element);\n    }\n    return prev;\n}\n\n/*\n * Performs a reduction operation, applying a function to each neighboring pair\n * of elements of the collection until they are all combined (reduced) into a\n * single value, which is then returned.\n * Begins the reduction with the given starting value, which is then merged\n * with each value from the collection one at a time.\n */\ntemplate <typename CollectionType, typename ElementType>\nElementType reduce(CollectionType collection,\n                   ElementType (*fn)(const ElementType& e1, const ElementType& e2)) {\n    bool first = true;\n    ElementType prev;\n    for (const ElementType& element : collection) {\n        if (first) {\n            prev = element;\n            first = false;\n        } else {\n            prev = fn(prev, element);\n        }\n    }\n    return prev;\n}\n\n/**\n * Performs a reduction operation, applying a function to each neighboring pair\n * of elements of the collection until they are all combined (reduced) into a\n * single value, which is then returned.\n * Begins with a \"default\" value of the starting type.\n */\ntemplate <typename CollectionType, typename ElementType>\nElementType reduce(CollectionType collection,\n                   std::function<ElementType (const ElementType&, const ElementType &)> fn) {\n    ElementType prev;\n    for (const ElementType& element : collection) {\n        prev = fn(prev, element);\n    }\n    return prev;\n}\n\n/**\n * Performs a reduction operation, applying a function to each neighboring pair\n * of elements of the collection until they are all combined (reduced) into a\n * single value, which is then returned.\n * Begins the reduction with the given starting value, which is then merged\n * with each value from the collection one at a time.\n */\ntemplate <typename CollectionType, typename ElementType>\nElementType reduce(CollectionType collection,\n                   std::function<ElementType (const ElementType&, const ElementType &)> fn,\n                   ElementType startValue) {\n    ElementType prev = startValue;\n    for (const ElementType& element : collection) {\n        prev = fn(prev, element);\n    }\n    return prev;\n}\n\n} // namespace functional\n\n#endif // _functional_h\n\n/////////////////////// END code extracted from StanfordCPPLib/collections/functional.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/util/gmath.h ///////////////////////\n/*\n * File: gmath.h\n * -------------\n * This file exports several functions for working with graphical\n * geometry along with the mathematical constants <code>PI</code>\n * and <code>E</code>.\n *\n * @version 2018/11/22\n * - added headless mode support\n * - alphabetized methods\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2017/12/12\n * - added floatingPointEqual(a, b, tolerance)\n * @version 2016/10/14\n * - added floatingPointEqual method for comparing floats and doubles\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _gmath_h\n#define _gmath_h\n\n#include <cmath>\n#include <limits>\n\n#ifndef SPL_HEADLESS_MODE\n#define INTERNAL_INCLUDE 1\n\n#endif // SPL_HEADLESS_MODE\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\n/**\n * The mathematical constant pi, which is the ratio of the circumference\n * of a circle to its diameter.\n */\nextern const double PI;\n\n/**\n * Constant: E\n * -----------\n * The mathematical constant e, which is the base of natural logarithms.\n */\nextern const double E;\n\n/**\n * Returns the trigonometric cosine of <code>angle</code>, which is\n * expressed in degrees.\n */\ndouble cosDegrees(double angle);\n\n\n/**\n * Returns the number of digits in the given integer in the given base.\n * Defaults to base-10, decimal.\n * @example countDigits(3456) returns 4.\n * @example countDigits(0)    returns 1.\n * @example countDigits(-778) returns 3.\n * @throw ErrorException if base is 0 or negative.\n */\nint countDigits(int n, int base = 10);\n\n/**\n * Returns true if the two given floating-point numbers are \"equal\" to each other,\n * within a given tolerance.\n * Floating-point equality is tricky because of round-off errors, which can cause\n * the numbers to be nearly the same but not identical.\n *\n * See also:\n * http://stackoverflow.com/questions/4548004/how-to-correctly-and-standardly-compare-floats\n */\ntemplate<typename T>\nbool floatingPointEqual(T f1, T f2, T tolerance) {\n    return (std::fabs(f1 - f2) <= tolerance);\n}\n\n/**\n * Returns true if the two given floating-point numbers are \"equal\" to each other.\n * Floating-point equality is tricky because of round-off errors, which can cause\n * the numbers to be nearly the same but not identical.\n *\n * See also:\n * http://stackoverflow.com/questions/4548004/how-to-correctly-and-standardly-compare-floats\n */\ntemplate<typename T>\nbool floatingPointEqual(T f1, T f2) {\n    return floatingPointEqual(f1, f2, /* tolerance */ (T) std::numeric_limits<T>::epsilon() * std::fmax(fabs(f1), fabs(f2)));\n}\n\n/**\n * Returns true if the given floating-point number is \"equal\" to the given integer.\n * Floating-point equality is tricky because of round-off errors, which can cause\n * the numbers to be nearly the same but not identical.\n *\n * See also:\n * http://stackoverflow.com/questions/4548004/how-to-correctly-and-standardly-compare-floats\n */\ntemplate<typename T>\nbool floatingPointEqual(T f1, int f2) {\n    return floatingPointEqual(f1, (T) f2);\n}\n\n/**\n * Returns true if the given floating-point number is \"equal\" to the given integer.\n * Floating-point equality is tricky because of round-off errors, which can cause\n * the numbers to be nearly the same but not identical.\n *\n * See also:\n * http://stackoverflow.com/questions/4548004/how-to-correctly-and-standardly-compare-floats\n */\ntemplate<typename T>\nbool floatingPointEqual(int f1, T f2) {\n    return floatingPointEqual((T) f1, f2);\n}\n\n/**\n * Returns true if the given floating-point number is \"equal\" to the given integer.\n * Floating-point equality is tricky because of round-off errors, which can cause\n * the numbers to be nearly the same but not identical.\n *\n * See also:\n * http://stackoverflow.com/questions/4548004/how-to-correctly-and-standardly-compare-floats\n */\ntemplate<typename T>\nbool floatingPointEqual(T f1, long int f2) {\n    return floatingPointEqual(f1, (T) f2);\n}\n\n/**\n * Returns true if the given floating-point number is \"equal\" to the given integer.\n * Floating-point equality is tricky because of round-off errors, which can cause\n * the numbers to be nearly the same but not identical.\n *\n * See also:\n * http://stackoverflow.com/questions/4548004/how-to-correctly-and-standardly-compare-floats\n */\ntemplate<typename T>\nbool floatingPointEqual(long int f1, T f2) {\n    return floatingPointEqual((T) f1, f2);\n}\n\n/**\n * Returns the trigonometric sine of <code>angle</code>, which is\n * expressed in degrees.\n */\ndouble sinDegrees(double angle);\n\n/**\n * Returns the trigonometric tangent of <code>angle</code>, which is\n * expressed in degrees.\n */\ndouble tanDegrees(double angle);\n\n/**\n * Converts an angle from radians to degrees.\n */\ndouble toDegrees(double radians);\n\n/**\n * Converts an angle from degrees to radians.\n */\ndouble toRadians(double degrees);\n\n/**\n * Returns the angle in degrees from the origin to the specified point.\n * This function takes account of the fact that the graphics coordinate\n * system is flipped in the <i>y</i> direction from the traditional\n * Cartesian plane.\n */\ndouble vectorAngle(double x, double y);\n\n/**\n * Returns the angle in degrees from the origin to the specified point.\n * This function takes account of the fact that the graphics coordinate\n * system is flipped in the <i>y</i> direction from the traditional\n * Cartesian plane.\n */\n#ifndef SPL_HEADLESS_MODE\ndouble vectorAngle(const GPoint& pt);\n#endif // SPL_HEADLESS_MODE\ndouble vectorAngle(const Point& pt);\n\n/**\n * Computes the distance between the origin and the specified point.\n */\ndouble vectorDistance(double x, double y);\n\n/**\n * Computes the distance between the origin and the specified point.\n */\n#ifndef SPL_HEADLESS_MODE\ndouble vectorDistance(const GPoint& pt);\n#endif // SPL_HEADLESS_MODE\ndouble vectorDistance(const Point& pt);\n\n#endif // _gmath_h\n\n/////////////////////// END code extracted from StanfordCPPLib/util/gmath.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/collections/shuffle.h ///////////////////////\n/*\n * File: shuffle.h\n * ---------------\n * This file contains implementation of a shuffling function that operates on\n * a 1-D and 2-D array, Vector, or Grid of any type.\n *\n * @author Marty Stepp\n * @since 2014/02/01\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _shuffle_h\n#define _shuffle_h\n\n#include <string>\n#include <algorithm>\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\n/*\n * Randomly rearranges the elements of the given array up to the given length.\n * Precondition: The array pointer points to a valid non-null array in memory,\n * and that array contains at least 'length' elements.\n */\ntemplate <typename T>\nvoid shuffle(T* array, int length) {\n    for (int i = 0; i < length; i++) {\n        int j = randomInteger(i, length - 1);\n        if (i != j) std::swap(array[i], array[j]);\n    }\n}\n\n/*\n * Randomly rearranges the elements of the given 2-D array up to the given\n * number of rows and columns.\n * Precondition: The array pointer points to a valid non-null 2-D array in\n * memory, and that array contains at least the given number of rows/columns.\n */\ntemplate <typename T>\nvoid shuffle(T** array2d, int rows, int cols) {\n    int length = rows * cols;\n    for (int i = 0; i < length; i++) {\n        int j = randomInteger(i, length - 1);\n        if (i != j) {\n            int r1 = i / cols;\n            int c1 = i % cols;\n            int r2 = j / cols;\n            int c2 = j % cols;\n\n            std::swap(array2d[r1][c1], array2d[r2][c2]);\n        }\n    }\n}\n\n/*\n * Randomly rearranges the characters of the given string and returns the\n * rearranged version.\n */\nstd::string shuffle(std::string s);\n\n#endif // _shuffle_h\n\n/////////////////////// END code extracted from StanfordCPPLib/collections/shuffle.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/collections/collections.h ///////////////////////\n/*\n * File: collections.h\n * -------------------\n * Contains general-purpose functions for use with many collections.\n *\n * For example, we have functions for comparing any collections that have\n * a visible iterator (begin(), end()).\n * Used to implement comparison operators like < and >= on collections.\n *\n * @author Marty Stepp\n * @version 2019/10/12\n * - added ARRAY_LENGTH macro\n * @version 2019/04/12\n * - added GenericSet unionWith, intersect, difference methods\n * - added functions to read/write quoted char values\n * - changed comment formatting\n * @version 2017/12/12\n * - added equalsDouble for collections of double values (can't compare with ==)\n * @version 2017/10/18\n * - fix compiler warnings\n * @version 2017/09/29\n * - added compareTo1-5\n * @version 2016/12/09\n * - added checkVersion for iterators\n * @version 2016/09/24\n * - renamed compare.h to collections.h\n * - added printing functions\n * @version 2014/10/10\n * - initial version as compare.h\n * @since 2014/10/10\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _collections_h\n#define _collections_h\n\n#include <iostream>\n#include <sstream>\n#include <type_traits>\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\n// macro to get the length of a stack-allocated array\n#define ARRAY_LENGTH(a) (sizeof(a) / sizeof((a)[0]))\n\n// begin global namespace string read/writing functions from strlib.h\n\n/**\n * Reads the next char from infile into the reference parameter ch.\n * If the first character (other than whitespace) is either a single\n * or a double quote, this function reads characters up to the\n * matching quote, processing standard escape sequences as it goes.\n * If not, readQuotedChar reads characters up to any of the characters\n * in the string STRING_DELIMITERS in the implementation file.\n *\n * @private\n */\nbool readQuotedChar(std::istream& is, char& ch, bool throwOnError = true);\n\n/**\n * Reads the next string from infile into the reference parameter str.\n * If the first character (other than whitespace) is either a single\n * or a double quote, this function reads characters up to the\n * matching quote, processing standard escape sequences as it goes.\n * If not, readQuoted String reads characters up to any of the characters\n * in the string STRING_DELIMITERS in the implementation file.\n *\n * @private\n */\nbool readQuotedString(std::istream& is, std::string& str, bool throwOnError = true);\n\n/**\n * Writes the char ch to outfile surrounded by single quotes, converting\n * special characters to escape sequences, as necessary.  If the optional\n * parameter forceQuotes is explicitly set to false, quotes are included\n * in the output only if necessary.\n *\n * @private\n */\nstd::ostream& writeQuotedChar(std::ostream& os, char ch, bool forceQuotes = true);\n\n/**\n * Writes the string str to outfile surrounded by double quotes, converting\n * special characters to escape sequences, as necessary.  If the optional\n * parameter forceQuotes is explicitly set to false, quotes are included\n * in the output only if necessary.\n *\n * @private\n */\nstd::ostream& writeQuotedString(std::ostream& os, const std::string& str,\n                                bool forceQuotes = true);\n\n/**\n * Checks whether the string needs quoting in order to be read correctly.\n * @private\n */\nbool stringNeedsQuoting(const std::string& str);\n\n/**\n * Writes a generic value to the output stream.  If that value is a string,\n * this function uses writeQuotedString to write the value.\n * @private\n */\ntemplate <typename ValueType>\nstd::ostream& writeGenericValue(std::ostream& os, const ValueType& value, bool) {\n    return os << std::boolalpha << value;\n}\n\ninline std::ostream& writeGenericValue(std::ostream& os, char value,\n                                       bool forceQuotes) {\n    return writeQuotedChar(os, value, forceQuotes);\n}\n\ninline std::ostream& writeGenericValue(std::ostream& os, const std::string& value,\n                                       bool forceQuotes) {\n    return writeQuotedString(os, value, forceQuotes);\n}\n\ntemplate <typename ValueType>\ninline std::string genericValueToString(const ValueType& value,\n                                        bool forceQuotes = false) {\n    std::ostringstream os;\n    writeGenericValue(os, value, forceQuotes);\n    return os.str();\n}\n\ninline std::string genericValueToString(const std::string& value,\n                                        bool forceQuotes) {\n    std::ostringstream os;\n    writeQuotedString(os, value, forceQuotes);\n    return os.str();\n}\n\n/**\n * Reads a generic value from the input stream.  If that value is a string,\n * this function uses readQuotedString to read the value.\n * @private\n */\ntemplate <typename ValueType>\nbool readGenericValue(std::istream& is, ValueType& value) {\n    return (bool) (is >> value);\n}\n\ninline bool readGenericValue(std::istream& is, char& value) {\n    return readQuotedChar(is, value, /* throwOnError */ false);\n}\n\ninline bool readGenericValue(std::istream& is, std::string& value) {\n    return readQuotedString(is, value, /* throwOnError */ false);\n}\n\n// end of global namespace string read/writing functions from strlib.h\nnamespace stanfordcpplib {\nnamespace collections {\n\n#ifdef SPL_THROW_ON_INVALID_ITERATOR\ntemplate <typename CollectionType, typename IteratorType>\nvoid checkVersion(const CollectionType& coll, const IteratorType& itr,\n                  const std::string& memberName = \"\") {\n    unsigned int collVersion = coll.version();\n    unsigned int itrVersion = itr.version();\n    if (itrVersion != collVersion) {\n        std::string msg = memberName;\n        if (!msg.empty()) {\n            msg += \": \";\n        }\n        msg += \"Collection modified during iteration. Iterator is now invalid.\\n\";\n        msg += \"Do not modify a collection during a for-each loop or iterator traversal.\";\n        error(msg);\n    }\n}\n#else // SPL_THROW_ON_INVALID_ITERATOR\ntemplate <typename CollectionType, typename IteratorType>\nvoid checkVersion(const CollectionType&, const IteratorType&,\n                  const std::string& = \"\") {\n    // empty\n}\n#endif\n\n/*\n * Performs a comparison for ordering between the given two collections\n * by comparing their elements pairwise to each other.\n * Returns -1 if collection 1 is \"less than\" collection 2;\n * Returns  1 if collection 1 is \"greater than\" collection 2;\n * Returns  0 if collection 1 is \"equal to\" collection 2.\n * The element type must have an operator <.\n */\ntemplate <typename CollectionType>\nint compare(const CollectionType& coll1, const CollectionType& coll2) {\n    // optimization: if they are the same object, then they are equal\n    if (&coll1 == &coll2) {\n        return 0;\n    }\n    \n    auto itr1 = coll1.begin(),\n         itr2 = coll2.begin(),\n         end1 = coll1.end(),\n         end2 = coll2.end();\n    for (;\n         itr1 != end1 && itr2 != end2;\n         ++itr1, ++itr2) {\n        // compare each pair of elements from iterators\n        \n        // TO STUDENT:\n        // If the line below is failing to compile in your program, it probably\n        // means that you are trying to make a nested collection\n        // (e.g. Set<Vector<T>>) for some element type T that does not have a\n        // less-than < operator.  That operator is *required* in order to make\n        // a Set or Map of Vectors, so that the set/map knows how to sort the\n        // elements into their ascending order.\n        // You should either add a < operator to your class, or consider a\n        // different nested collection solution.  Good luck!\n        if (*itr1 < *itr2) {\n            return -1;\n        } else if (*itr2 < *itr1) {\n            return 1;\n        }\n    }\n    \n    // if we get here, everything from v1 matched v2, so they are either equal,\n    // or one is shorter than the other (fewer elements) and is therefore less\n    if (itr1 == end1 && itr2 == end2) {\n        return 0;\n    } else if (itr1 == end1) {\n        return -1;\n    } else {\n        return 1;\n    }\n}\n\n/*\n * Performs a comparison for ordering between the given two maps\n * by comparing their key/value pairs pairwise to each other.\n * Returns -1 if collection 1 is \"less than\" collection 2;\n * Returns  1 if collection 1 is \"greater than\" collection 2;\n * Returns  0 if collection 1 is \"equal to\" collection 2.\n * Note that the order of keys and values in the maps matter here;\n * the same map with keys in different orders would produce a different result.\n * The key and value types must both have an operator <.\n */\ntemplate <typename MapType>\nint compareMaps(const MapType& map1, const MapType& map2) {\n    // optimization: if they are the same object, then they are equal\n    if (&map1 == &map2) {\n        return 0;\n    }\n    \n    auto itr1 = map1.begin(),\n         itr2 = map2.begin(),\n         end1 = map1.end(),\n         end2 = map2.end();\n    for (;\n         itr1 != end1 && itr2 != end2;\n         ++itr1, ++itr2) {\n        // compare each pair of elements from iterators\n        \n        // TO STUDENT:\n        // If the line below is failing to compile in your program, it probably\n        // means that you are trying to make a nested collection\n        // (e.g. Set<Map<K, V>>) for some element type K or V that does not have a\n        // less-than < operator.  That operator is *required* in order to make\n        // a Set or Map of Maps, so that the set/map knows how to sort the\n        // keys and values into their ascending order.\n        // You should either add a < operator to your key/value types, or consider a\n        // different nested collection solution.  Good luck!\n        if (*itr1 < *itr2) {\n            return -1;\n        } else if (*itr2 < *itr1) {\n            return 1;\n        }\n        \n        // key1 == key2, so compare values\n        auto value1 = map1[*itr1];\n        auto value2 = map2[*itr2];\n        if (value1 < value2) {\n            return -1;\n        } else if (value2 < value1) {\n            return 1;\n        }\n    }\n    \n    // if we get here, everything from v1 matched v2, so they are either equal,\n    // or one is shorter than the other (fewer elements) and is therefore less\n    if (itr1 == end1 && itr2 == end2) {\n        return 0;\n    } else if (itr1 == end1) {\n        return -1;\n    } else {\n        return 1;\n    }\n}\n\n/*\n * Template functions to compare two interleaved sequences of values, returning\n * -1 if the first value is less than the second,\n *  0 if the values are equal,\n *  1 if the first value is greater than the second.\n * The type passed must support a < less-than operator.\n */\ninline int compareTo() {\n    return 0;\n}\ntemplate <typename T, typename... Rest>\nint compareTo(const T& first, const T& second, const Rest&... rest) {\n    if (first < second) return -1;\n    if (second < first) return +1;\n    return compareTo(rest...);\n}\n\n/*\n * Returns true if the two collections contain the same elements in the same order.\n * The element type must have an operator ==.\n */\ntemplate <typename CollectionType>\nbool equals(const CollectionType& coll1, const CollectionType& coll2) {\n    // optimization: if literally same collection, stop\n    if (&coll1 == &coll2) {\n        return true;\n    }\n    // optimization: if not same size, don't bother comparing pairwise\n    if (coll1.size() != coll2.size()) {\n        return false;\n    }\n\n    // check each pair of elements for equality\n    auto itr1 = coll1.begin();\n    auto end1 = coll1.end();\n    auto itr2 = coll2.begin();\n    auto end2 = coll2.end();\n    while (itr1 != end1 && itr2 != end2) {\n        if (!(*itr1 == *itr2)) {\n            return false;\n        }\n        ++itr1;\n        ++itr2;\n    }\n    return true;\n}\n\n/*\n * Returns true if the two collections contain the same elements in the same order.\n * The element type must be double, float, or any floating-point type.\n */\ntemplate <typename CollectionType>\nbool equalsDouble(const CollectionType& coll1, const CollectionType& coll2) {\n    // optimization: if literally same collection, stop\n    if (&coll1 == &coll2) {\n        return true;\n    }\n    // optimization: if not same size, don't bother comparing pairwise\n    if (coll1.size() != coll2.size()) {\n        return false;\n    }\n\n    // check each pair of elements for equality\n    auto itr1 = coll1.begin();\n    auto end1 = coll1.end();\n    auto itr2 = coll2.begin();\n    auto end2 = coll2.end();\n    while (itr1 != end1 && itr2 != end2) {\n        if (!floatingPointEqual(*itr1, *itr2)) {\n            return false;\n        }\n        ++itr1;\n        ++itr2;\n    }\n    return true;\n}\n\n/*\n * Returns true if the given two maps contain the same set of keys and each\n * key maps to the same value in both maps.\n * The order of the keys is not considered.\n * The key and value types must both have an operator ==.\n */\ntemplate <typename MapType>\nbool equalsMap(const MapType& map1, const MapType& map2) {\n    // optimization: if literally same map, stop\n    if (&map1 == &map2) {\n        return true;\n    }\n    // optimization: if not same size, don't bother comparing pairwise\n    if (map1.size() != map2.size()) {\n        return false;\n    }\n\n    // check whether each element in the first map is also in the second.\n    // since the sizes are the same, if this is true, the maps are equal.\n    for (auto itr1 = map1.begin(), end1 = map1.end(); itr1 != end1; ++itr1) {\n        if (!map2.containsKey(*itr1) || !(map1.get(*itr1) == map2.get(*itr1))) {\n            return false;\n        }\n    }\n    return true;\n}\n\n/*\n * Computes a hashCode for any iterable type.\n * Pass true for 'orderMatters' for collections that maintain some kind of element\n * ordering that is of importance.  This would be true for almost all collections\n * except hash-based ones where the ordering is semi-random and unimportant.\n */\ntemplate <typename IteratorType>\nint hashCodeIterable(IteratorType begin, IteratorType end, bool orderMatters = true) {\n    int code = hashSeed();\n    while (begin != end) {\n        if (orderMatters) {\n            code *= hashMultiplier();\n        }\n        code += hashCode(*begin);\n        ++begin;\n    }\n    return int(code & hashMask());\n}\n\n/*\n * Computes a hashCode for any type of collection.\n * The collection must have begin() and end()\n */\ntemplate <typename CollectionType>\nint hashCodeCollection(const CollectionType& collection, bool orderMatters = true) {\n    return hashCodeIterable(collection.begin(), collection.end(), orderMatters);\n}\n\n/*\n * Template hash function for hash maps.\n * Requires the key and value types in the HashMap to have a hashCode function.\n */\ntemplate <typename MapType>\nint hashCodeMap(const MapType& map, bool orderMatters = true) {\n    int code = hashSeed();\n    auto begin = map.begin();\n    auto end = map.end();\n    while (begin != end) {\n        if (orderMatters) {\n            code *= hashMultiplier();\n        }\n        code += hashCode(*begin);\n\n        if (orderMatters) {\n            code *= hashMultiplier();\n        }\n        code += hashCode(map[*begin]);\n        ++begin;\n    }\n    return int(code & hashMask());\n}\n\n/*\n * Returns a randomly chosen element of the given collection.\n * Throws an error if the set is empty.\n */\ntemplate <typename Collection>\nauto randomElement(const Collection& collection) -> const decltype(*collection.begin())& {\n    if (collection.isEmpty()) {\n        error(\"randomElement: empty collection was passed\");\n    }\n    return *std::next(collection.begin(), randomInteger(0, collection.size() - 1));\n}\n\n/*\n * Returns a randomly chosen element of the given collection.\n * The collection must have an index [] operator.\n * Throws an error if the set is empty.\n */\ntemplate <template <typename> class CollectionType, class ElementType>\nconst ElementType& randomElementIndexed(const CollectionType<ElementType>& collection) {\n    if (collection.isEmpty()) {\n        error(\"randomElement: empty collection was passed\");\n    }\n    int index = randomInteger(0, collection.size() - 1);\n    return collection[index];\n}\n\n/*\n * Reads in any collection from the given input stream.\n * The collection must have an add() method that takes a single value,\n * and a clear() method that removes all elements from the collection.\n */\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\ntemplate <typename CollectionType, typename ElementType>\nstd::istream& readCollection(std::istream& input, CollectionType& collection, ElementType& element, std::string descriptor = \"readIterable\") {\n#else\ntemplate <typename CollectionType, typename ElementType>\nstd::istream& readCollection(std::istream& input, CollectionType& collection, ElementType& element, std::string /* descriptor */) {\n#endif\n    char ch = '\\0';\n    input >> ch;\n    if (ch != '{') {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n        error(descriptor + \": Missing {\");\n#endif\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n    collection.clear();\n    input >> ch;\n    if (ch != '}') {\n        input.unget();\n        while (true) {\n            if (!readGenericValue(input, element)) {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n                error(descriptor + \": parse error\");\n#endif\n                return input;\n            }\n            collection.add(element);\n            input >> ch;\n            if (ch == '}') {\n                break;\n            }\n            if (ch != ',') {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n                error(std::string(descriptor + \": Unexpected character \") + ch);\n#endif\n                input.setstate(std::ios_base::failbit);\n                return input;\n            }\n        }\n    }\n    return input;\n}\n\n/*\n * Reads in any Map collection from the given input stream.\n * The collection must have an add() method that takes a single value,\n * and a clear() method that removes all elements from the collection.\n */\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\ntemplate <typename MapType, typename KeyType, typename ValueType>\nstd::istream& readMap(std::istream& input, MapType& map, KeyType& key, ValueType& value, std::string descriptor = \"readIterable\") {\n#else\ntemplate <typename MapType, typename KeyType, typename ValueType>\nstd::istream& readMap(std::istream& input, MapType& map, KeyType& key, ValueType& value, std::string /* descriptor */) {\n#endif\n    char ch = '\\0';\n    input >> ch;\n    if (ch != '{') {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n        error(descriptor + \": Missing {\");\n#endif\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n    map.clear();\n    input >> ch;\n    if (ch != '}') {\n        input.unget();\n        while (true) {\n            if (!readGenericValue(input, key)) {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n                error(descriptor + \": parse key error\");\n#endif\n                return input;\n            }\n            input >> ch;\n            if (ch != ':') {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n                error(descriptor + \": Missing colon after key\");\n#endif\n                input.setstate(std::ios_base::failbit);\n                return input;\n            }\n            if (!readGenericValue(input, value)) {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n                error(descriptor + \": parse value error\");\n#endif\n                return input;\n            }\n            map.put(key, value);\n            input >> ch;\n            if (ch == '}') {\n                break;\n            }\n            if (ch != ',') {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n                error(std::string(descriptor + \": Unexpected character \") + ch);\n#endif\n                input.setstate(std::ios_base::failbit);\n                return input;\n            }\n        }\n    }\n    return input;\n}\n\n/*\n * Writes out any collection to the given output stream using its two iterators,\n * begin and end.\n */\ntemplate <typename IteratorType>\nstd::ostream& writeIterable(std::ostream& out, IteratorType begin, IteratorType end) {\n    out << \"{\";\n    bool first = true;\n    while (begin != end) {\n        if (!first) {\n            out << \", \";\n        }\n        first = false;\n        writeGenericValue(out, *begin, /* forceQuotes */ true);\n        ++begin;\n    }\n    out << \"}\";\n    return out;\n}\n\n/*\n * Writes out any collection to the given output stream using its two iterators,\n * begin and end.\n */\ntemplate <typename CollectionType>\nstd::ostream& writeCollection(std::ostream& out, CollectionType collection) {\n    return writeIterable(out, collection.begin(), collection.end());\n}\n\n/*\n * Writes out any collection to the given output stream using its two iterators,\n * begin and end.\n */\ntemplate <typename IteratorType>\nstd::ostream& writeIterableOfPointers(std::ostream& out, IteratorType begin, IteratorType end) {\n    out << \"{\";\n    bool first = true;\n    while (begin != end) {\n        if (!first) {\n            out << \", \";\n        }\n        first = false;\n        writeGenericValue(out, **begin, /* forceQuotes */ true);\n        ++begin;\n    }\n    out << \"}\";\n    return out;\n}\n\n/*\n * Writes out any collection to the given output stream using its two iterators,\n * begin and end.\n */\ntemplate <typename CollectionType>\nstd::ostream& writeCollectionOfPointers(std::ostream& out, CollectionType collection) {\n    return writeIterableOfPointers(out, collection.begin(), collection.end());\n}\n\n/*\n * Implementation notes: << and >>\n * -------------------------------\n * The insertion and extraction operators use the template facilities in\n * strlib.h to read and write generic values in a way that treats strings\n * specially.\n */\ntemplate <typename MapType>\nstd::ostream& writeMap(std::ostream& out, const MapType& map) {\n    out << \"{\";\n    auto begin = map.begin();\n    auto end = map.end();\n    bool first = true;\n    while (begin != end) {\n        if (!first) {\n            out << \", \";\n        }\n        first = false;\n        writeGenericValue(out, *begin, /* forceQuotes */ true);\n        out << \":\";\n        writeGenericValue(out, map[*begin], /* forceQuotes */ true);\n        ++begin;\n    }\n    out << \"}\";\n    return out;\n}\n\n/*\n * Type responsible for tracking the version of some object. This is factored out into\n * its own object with unusual copy functions so that any time the underlying object\n * is moved or assigned the underlying version number is updated.\n */\nclass VersionTracker {\npublic:\n    /* Assigning a VersionTracker increments the underlying version number. */\n    VersionTracker& operator= (VersionTracker) {\n        ++mVersion;\n        return *this;\n    }\n\n    /* Move-constructing a VersionTracker implements the version number of the\n     * object being moved.\n     */\n    VersionTracker(VersionTracker&& rhs) {\n        rhs.mVersion++;\n    }\n\n    /* Use default constructor and default copy constructor. */\n    VersionTracker() = default;\n    VersionTracker(const VersionTracker &) = default;\n\n    /* Marks that the version must be updated. */\n    void update() {\n        ++mVersion;\n    }\n\n    /* Returns the version number. */\n    unsigned int version() const {\n        return mVersion;\n    }\n\nprivate:\n    unsigned int mVersion = 0;\n};\n\n/*\n * Checked iterator type that wraps an underlying iterator type, adding in bounds-checking\n * and version-checking.\n */\ntemplate <typename Iterator> class CheckedIterator {\npublic:\n    /* We're whatever sort of iterator we're wrapping. */\n    using difference_type   = typename std::iterator_traits<Iterator>::difference_type;\n    using iterator_category = typename std::iterator_traits<Iterator>::iterator_category;\n    using pointer           = typename std::iterator_traits<Iterator>::pointer;\n    using reference         = typename std::iterator_traits<Iterator>::reference;\n    using value_type        = typename std::iterator_traits<Iterator>::value_type;\n\n    /*\n     * Default constructor must be explicitly declared so that the private constructor\n     * doesn't shadow us.\n     */\n    CheckedIterator() = default;\n\n    /* Constructs an iterator given information about the underlying container. */\n    template <typename Container>\n    CheckedIterator(const VersionTracker* owner, Iterator iter, Container& c)\n        : mVersion(owner->version()), mOwner(owner), mIter(iter), mBegin(c.begin()), mEnd(c.end()) {\n\n    }\n\n    /*\n     * We're friends with all other CheckedIterator types, allowing for cross-construction\n     * and the like.\n     */\n    template <typename OtherItr> friend class CheckedIterator;\n\n    /* Conversion constructor, when permitted. */\n    template <typename OtherItr> CheckedIterator(const CheckedIterator<OtherItr>& rhs)\n        : mVersion(rhs.mVersion),\n          mOwner(rhs.mOwner),\n          mIter(rhs.mIter),\n          mBegin(rhs.mBegin),\n          mEnd(rhs.mEnd) {\n\n    }\n\n    template <typename OtherItr> operator CheckedIterator<OtherItr>() const {\n        return CheckedIterator<OtherItr>{mVersion, mOwner, mIter, mBegin, mEnd};\n    }\n\n    /* All possible iterator functions. */\n\n    /* Comparison operators. */\n    template <typename OtherItr> bool operator ==(const CheckedIterator<OtherItr>& rhs) const {\n        if (!mOwner || !rhs.mOwner) {\n            error(\"Cannot compare an uninitialized iterator.\");\n        }\n        if ( mOwner !=  rhs.mOwner) {\n            error(\"Cannot compare iterators from two different containers.\");\n        }\n        return mIter == rhs.mIter;\n    }\n    template <typename OtherItr> bool operator !=(const CheckedIterator<OtherItr>& rhs) const {\n        return !(*this == rhs);\n    }\n\n    /*\n     * We report errors if the underlying owners are different, since otherwise\n     * the behavior is undefined.\n     */\n    template <typename OtherItr> bool operator <(const CheckedIterator<OtherItr>& rhs) const {\n        if (!mOwner || !rhs.mOwner) {\n            error(\"Cannot compare an uninitialized iterator.\");\n        }\n        if (mOwner != rhs.mOwner) {\n            error(\"Cannot compare iterators from different containers.\");\n        }\n        return mIter < rhs.mIter;\n    }\n    template <typename OtherItr> bool operator >(const CheckedIterator<OtherItr>& rhs) const {\n        return rhs < *this;\n    }\n    template <typename OtherItr> bool operator <=(const CheckedIterator<OtherItr>& rhs) const {\n        return !(*this > rhs);\n    }\n    template <typename OtherItr> bool operator >=(const CheckedIterator<OtherItr>& rhs) const {\n        return !(*this < rhs);\n    }\n\n    /* Random access. */\n    reference operator [](difference_type index) const {\n        if (!mOwner) {\n            error(\"Cannot access elements through an uninitialized iterator.\");\n        }\n        ::stanfordcpplib::collections::checkVersion(*mOwner, *this);\n        if (index >= 0 &&  index >= mEnd - mIter) {\n            error(\"Out of bounds.\");\n        }\n        if (index <  0 && -index >  mIter - mBegin) {\n            error(\"Out of bounds.\");\n        }\n\n        return mIter[index];\n    }\n\n    CheckedIterator& operator +=(difference_type index) {\n        if (!mOwner) error(\"Cannot advance uninitialized iterators.\");\n        ::stanfordcpplib::collections::checkVersion(*mOwner, *this);\n        mIter += index;\n        return *this;\n    }\n    CheckedIterator& operator -=(difference_type index) {\n        return *this += (-index);\n    }\n\n    CheckedIterator operator +(difference_type index) const {\n        auto result = *this;\n        return result += index;\n    }\n    CheckedIterator operator -(difference_type index) const {\n        return *this + (-index);\n    }\n\n    template <typename OtherItr>\n    difference_type operator -(const CheckedIterator<OtherItr>& rhs) const {\n        if (!mOwner || !rhs.mOwner) {\n            error(\"Cannot subtract uninitialized iterators.\");\n        }\n\n        ::stanfordcpplib::collections::checkVersion(*mOwner, *this);\n        if (mOwner != rhs.mOwner) {\n            error(\"Cannot subtract iterators from two different containers.\");\n        }\n\n        return mIter - rhs.mIter;\n    }\n\n    /* Forwards and backwards. */\n    CheckedIterator& operator ++() {\n        if (!mOwner) {\n            error(\"Cannot advance an uninitialized iterator.\");\n        }\n\n        ::stanfordcpplib::collections::checkVersion(*mOwner, *this);\n        if (mIter == mEnd) {\n            error(\"Cannot advance an iterator past end of range.\");\n        }\n        ++mIter;\n        return *this;\n    }\n    CheckedIterator operator ++(int) {\n        auto result = *this;\n        ++*this;\n        return result;\n    }\n\n    CheckedIterator& operator --() {\n        if (!mOwner) {\n            error(\"Cannot back up an uninitialized iterator.\");\n        }\n\n        ::stanfordcpplib::collections::checkVersion(*mOwner, *this);\n        if (mIter == mBegin) {\n            error(\"Cannot back up an iteartor before start of range.\");\n        }\n\n        --mIter;\n        return *this;\n    }\n    CheckedIterator operator --(int) {\n        auto result = *this;\n        --*this;\n        return result;\n    }\n\n    /* Dereferencing. */\n    reference operator *() const {\n        if (!mOwner) {\n            error(\"Cannot dereference an uninitialized iterator.\");\n        }\n        ::stanfordcpplib::collections::checkVersion(*mOwner, *this);\n\n        if (mIter == mEnd) {\n            error(\"Iterator out of range.\");\n        }\n        return *mIter;\n    }\n    pointer operator ->() const {\n        return &**this;\n    }\n\n    /* Direct version access. */\n    unsigned int version() const {\n        if (!mOwner) {\n            error(\"Cannot get version from an uninitialized iterator.\");\n        }\n        return mVersion;\n    }\n\nprivate:\n    unsigned int mVersion = 0;\n    const VersionTracker* mOwner = nullptr;\n    Iterator mIter;\n    Iterator mBegin, mEnd;\n};\n\n/*\n * Iterator over a pairs that projects out the first component. Essentially, this turns an\n * iterator over pair<const Key, Value> into an iterator over const Key.\n *\n * All bounds-checking, error-handling, etc. are presumed to come from the underlying\n * iterator type.\n */\ntemplate <typename Iterator> class ProjectingIterator {\npublic:\n    /* The sort of thing that we're wrapping. */\n    using value_type       = typename std::remove_reference<decltype(std::declval<Iterator>()->first)>::type;\n\n    /* We're whatever sort of iterator we're wrapping. */\n    using difference_type   = typename std::iterator_traits<Iterator>::difference_type;\n    using iterator_category = typename std::iterator_traits<Iterator>::iterator_category;\n    using pointer           = const value_type *;\n    using reference         = const value_type &;\n\n    /*\n     * Default constructor must be explicitly declared so that the private constructor\n     * doesn't shadow us.\n     */\n    ProjectingIterator() = default;\n\n    /* Wraps an existing iterator. */\n    explicit ProjectingIterator(Iterator iter) : mIter(iter) {\n        // Empty\n    }\n\n    /*\n     * We're friends with all other related types, allowing for cross-construction\n     * and the like.\n     */\n    template <typename OtherItr> friend class ProjectingIterator;\n\n    /* Conversion constructor, when permitted. */\n    template <typename OtherItr> ProjectingIterator(const ProjectingIterator<OtherItr>& rhs)\n        : mIter(rhs.mIter) {\n        // Empty\n    }\n\n    template <typename OtherItr> operator ProjectingIterator<OtherItr>() const {\n        return ProjectingIterator<OtherItr>(mIter);\n    }\n\n    /* All possible iterator functions. */\n\n    /* Comparison operators. */\n    template <typename OtherItr> bool operator ==(const ProjectingIterator<OtherItr>& rhs) {\n        return mIter == rhs.mIter;\n    }\n    template <typename OtherItr> bool operator !=(const ProjectingIterator<OtherItr>& rhs) {\n        return !(*this == rhs);\n    }\n\n    template <typename OtherItr> bool operator <(const ProjectingIterator<OtherItr>& rhs) {\n        return mIter < rhs.mIter;\n    }\n    template <typename OtherItr> bool operator >(const ProjectingIterator<OtherItr>& rhs) {\n        return rhs < *this;\n    }\n    template <typename OtherItr> bool operator <=(const ProjectingIterator<OtherItr>& rhs) {\n        return !(*this > rhs);\n    }\n    template <typename OtherItr> bool operator >=(const ProjectingIterator<OtherItr>& rhs) {\n        return !(*this < rhs);\n    }\n\n    /* Random access. */\n    reference operator [](difference_type index) const {\n        return mIter[index];\n    }\n    ProjectingIterator& operator +=(difference_type index) {\n        mIter += index;\n        return *this;\n    }\n    ProjectingIterator& operator -=(difference_type index) {\n        return *this += (-index);\n    }\n    ProjectingIterator operator +(difference_type index) const {\n        auto result = *this;\n        return result += index;\n    }\n    ProjectingIterator operator -(difference_type index) const {\n        return *this + (-index);\n    }\n    template <typename OtherItr>\n    difference_type operator -(const ProjectingIterator<OtherItr>& rhs) const {\n        return mIter - rhs.mIter;\n    }\n\n    /* Forwards and backwards. */\n    ProjectingIterator& operator ++() {\n        ++mIter;\n        return *this;\n    }\n    ProjectingIterator operator ++(int) {\n        auto result = *this;\n        ++*this;\n        return result;\n    }\n\n    ProjectingIterator& operator --() {\n        --mIter;\n        return *this;\n    }\n    ProjectingIterator operator --(int) {\n        auto result = *this;\n        --*this;\n        return result;\n    }\n\n    /* Dereferencing. */\n    reference operator *() const {\n        return mIter->first;\n    }\n    pointer operator ->() const {\n        return &**this;\n    }\n\nprivate:\n    Iterator mIter;\n};\n\n/**\n * Class: GenericSet<SetTraits>\n * ----------------------------\n * This class stores a collection of distinct elements. SetTraits should be\n * a type containing the following:\n *\n *     typename ValueType:          whatever is stored in the map\n *     typename MapType:            should be a Map<ValueType, bool>\n *     static std::string name():   should return the name of the type.\n *\n * There's one more requirement: you need to define a function\n *\n *     template <typename... Args>\n *        static MapType construct(Args&&... args)\n *\n * that constructs an internal MapType object with the specified arguments.\n * This function should do something creative or clever to ensure that there\n * is a nice compiler error generated in the event that the arguments are\n * invalid, since otherwise the error is going to be deeply nested inside the\n * GenericSet template.\n *\n * This is not meant to be used directly by students.\n */\ntemplate <typename SetTraits>\nclass GenericSet {\npublic:\n    /**\n     * Utility alias to make things easier to work with.\n     */\n    using value_type = typename SetTraits::ValueType;\n\n    /**\n     * Constructor: GenericSet\n     * Usage: GenericSet<ValueType, SetTraits> set;\n     * --------------------------------------------\n     * Initializes an empty set of the specified element type.\n     */\n    GenericSet() = default;\n\n    /**\n     * Constructor: GenericSet\n     * Usage: GenericSet<ValueType, SetTraits> set {1, 2, 3};\n     * ------------------------------------------------------\n     * Initializes a new set that stores the given elements.\n     */\n    GenericSet(std::initializer_list<value_type> list);\n\n    /**\n     * Constructor: GenericSet\n     * Usage: GenericSet<ValueType, SetTraits> set(... things for the map ...);\n     * ------------------------------------------------------------------------\n     * Forwards the specified arguments down to the underlying Map type.\n     */\n    template <typename... Args>\n    explicit GenericSet(Args... args);\n\n    /**\n     * Constructor: GenericSet\n     * Usage: GenericSet<ValueType, SetTraits> set({1, 2, 3}, ... things for the map ...);\n     * -----------------------------------------------------------------------------------\n     * Constructs a set using the specified elements, forwarding the arguments to the\n     * underlying map.\n     */\n    template <typename... Args>\n    GenericSet(std::initializer_list<value_type> list,\n               Args... args);\n\n    /**\n     * Destructor: ~Set\n     * ----------------\n     * Frees any heap storage associated with this set.\n     */\n    virtual ~GenericSet() = default;\n\n    /**\n     * Method: add\n     * Usage: set.add(value);\n     * ----------------------\n     * Adds an element to this set, if it was not already there.  For\n     * compatibility with the STL <code>set</code> class, this method\n     * is also exported as <code>insert</code>.\n     */\n    void add(const value_type& value);\n\n    /**\n     * Method: addAll\n     * Usage: set.addAll(set2);\n     * ------------------------\n     * Adds all elements of the given other set to this set.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     * Returns a reference to this set.\n     *\n     * Note that this function modifies the current set in place rather than\n     * returning a new set. If you want a new set, consider using the + operator\n     * instead (not +=), which returns a newly created copy set.\n     *\n     * Identical in behavior to the += operator.\n     */\n    GenericSet& addAll(const GenericSet& set);\n\n    /**\n     * Method: back\n     * Usage: ValueType value = set.back();\n     * ------------------------------------\n     * Returns the last value in the set in the order established by the\n     * <code>foreach</code> macro.  If the set is empty, generates an error.\n     */\n    value_type back() const;\n\n    /**\n     * Method: clear\n     * Usage: set.clear();\n     * -------------------\n     * Removes all elements from this set.\n     */\n    void clear();\n\n    /**\n     * Method: contains\n     * Usage: if (set.contains(value)) ...\n     * -----------------------------------\n     * Returns <code>true</code> if the specified value is in this set.\n     */\n    bool contains(const value_type& value) const;\n\n    /**\n     * Method: containsAll\n     * Usage: if (set.containsAll(set2)) ...\n     * -------------------------------------\n     * Returns <code>true</code> if every value from the given other set\n     * is also found in this set.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     * Equivalent in behavior to isSupersetOf.\n     */\n    bool containsAll(const GenericSet& set2) const;\n\n    /**\n     * Method: difference\n     * Usage: set.difference(set2);\n     * ----------------------------\n     * Removes all elements of the given other set from this set.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     * Returns a reference to this set.\n     *\n     * Note that this function modifies the current set in place rather than\n     * returning a new set. If you want a new set, consider using the - operator\n     * instead (not -=), which returns a newly created copy set.\n     *\n     * Identical in behavior to the -= operator and the removeAll function.\n     */\n    GenericSet& difference(const GenericSet& set);\n\n    /**\n     * Method: equals\n     * Usage: if (set.equals(set2)) ...\n     * --------------------------------\n     * Returns <code>true</code> if this set contains exactly the same values\n     * as the given other set.\n     * Identical in behavior to the == operator.\n     */\n    bool equals(const GenericSet& set2) const;\n\n    /**\n     * Method: first\n     * Usage: ValueType value = set.first();\n     * -------------------------------------\n     * Returns the first value in the set in the order established by the\n     * <code>foreach</code> macro.  If the set is empty, <code>first</code>\n     * generates an error.\n     * Equivalent to front.\n     */\n    value_type first() const;\n\n    /**\n     * Method: front\n     * Usage: ValueType value = set.front();\n     * -------------------------------------\n     * Returns the first value in the set in the order established by the\n     * <code>foreach</code> macro.  If the set is empty, generates an error.\n     * Equivalent to first.\n     */\n    value_type front() const;\n\n    /**\n     * Method: insert\n     * Usage: set.insert(value);\n     * -------------------------\n     * Adds an element to this set, if it was not already there.  This\n     * method is exported for compatibility with the STL <code>set</code> class.\n     */\n    void insert(const value_type& value);\n\n    /**\n     * Method: intersect\n     * Usage: set.intersect(set2);\n     * ---------------------------\n     * Removes all elements from this set that are not contained in the given\n     * other set.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     * Returns a reference to this set.\n     *\n     * Note that this function modifies the current set in place rather than\n     * returning a new set. If you want a new set, consider using the * operator\n     * instead (not *=), which returns a newly created copy set.\n     *\n     * Identical in behavior to the *= operator and the retainAll function.\n     */\n    GenericSet& intersect(const GenericSet& set);\n\n    /**\n     * Method: isEmpty\n     * Usage: if (set.isEmpty()) ...\n     * -----------------------------\n     * Returns <code>true</code> if this set contains no elements.\n     */\n    bool isEmpty() const;\n\n    /**\n     * Method: isSubsetOf\n     * Usage: if (set.isSubsetOf(set2)) ...\n     * ------------------------------------\n     * Implements the subset relation on sets.  It returns\n     * <code>true</code> if every element of this set is\n     * contained in <code>set2</code>.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     */\n    bool isSubsetOf(const GenericSet& set2) const;\n\n    /**\n     * Method: isSupersetOf\n     * Usage: if (set.isSupersetOf(set2)) ...\n     * --------------------------------------\n     * Implements the superset relation on sets.  It returns\n     * <code>true</code> if every element of this set is\n     * contained in <code>set2</code>.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     * Equivalent in behavior to containsAll.\n     */\n    bool isSupersetOf(const GenericSet& set2) const;\n\n    /**\n     * Method: mapAll\n     * Usage: set.mapAll(fn);\n     * ----------------------\n     * Iterates through the elements of the set and calls <code>fn(value)</code>\n     * for each one.  The iteration order matches the underlying order in which\n     * the elements are stored.  For Set, this is sorted order according to the\n     * comparison function; for LinkedHashSet, this is the insertion order; and\n     * for HashSet, this is whatever order the elements happen to be in.\n     */\n    void mapAll(std::function<void (const value_type&)> fn) const;\n\n    /**\n     * Method: remove\n     * Usage: set.remove(value);\n     * -------------------------\n     * Removes an element from this set.  If the value was not\n     * contained in the set, no error is generated and the set\n     * remains unchanged.\n     */\n    void remove(const value_type& value);\n\n    /**\n     * Method: removeAll\n     * Usage: set.removeAll(set2);\n     * ---------------------------\n     * Removes all elements of the given other set from this set.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     * Returns a reference to this set.\n     *\n     * Note that this function modifies the current set in place rather than\n     * returning a new set. If you want a new set, consider using the - operator\n     * instead (not -=), which returns a newly created copy set.\n     *\n     * Identical in behavior to the -= operator and the difference function.\n     */\n    GenericSet& removeAll(const GenericSet& set);\n\n    /**\n     * Method: retainAll\n     * Usage: set.retainAll(set2);\n     * ---------------------------\n     * Removes all elements from this set that are not contained in the given\n     * other set.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     * Returns a reference to this set.\n     *\n     * Note that this function modifies the current set in place rather than\n     * returning a new set. If you want a new set, consider using the * operator\n     * instead (not *=), which returns a newly created copy set.\n     *\n     * Identical in behavior to the *= operator and the intersect function.\n     */\n    GenericSet& retainAll(const GenericSet& set);\n\n    /**\n     * Method: size\n     * Usage: count = set.size();\n     * --------------------------\n     * Returns the number of elements in this set.\n     */\n    int size() const;\n\n    /**\n     * Method: toString\n     * Usage: string str = set.toString();\n     * -----------------------------------\n     * Converts the set to a printable string representation.\n     */\n    std::string toString() const;\n\n    /**\n     * Method: unionWith\n     * Usage: set.unionWith(set2);\n     * ---------------------------\n     * Adds all elements of the given other set to this set.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     * Returns a reference to this set.\n     * Identical in behavior to the += operator and the addAll function.\n     *\n     * Note that this function modifies the current set in place rather than\n     * returning a new set. If you want a new set, consider using the + operator\n     * instead (not +=), which returns a newly created copy set.\n     *\n     * (Implementation note: This function cannot be named 'union' because\n     * that is a C/C++ keyword.)\n     */\n    GenericSet& unionWith(const GenericSet& set);\n\n    /**\n     * Operator: ==\n     * Usage: set1 == set2\n     * -------------------\n     * Returns <code>true</code> if <code>set1</code> and <code>set2</code>\n     * contain the same elements.\n     */\n    bool operator ==(const GenericSet& set2) const;\n\n    /**\n     * Operator: !=\n     * Usage: set1 != set2\n     * -------------------\n     * Returns <code>true</code> if <code>set1</code> and <code>set2</code>\n     * are different.\n     */\n    bool operator !=(const GenericSet& set2) const;\n\n    /**\n     * Operators: <, >, <=, >=\n     * Usage: if (set1 <= set2) ...\n     * ...\n     * ----------------------------\n     * Relational operators to compare two sets.\n     * The <, >, <=, >= operators require that the value type has a < operator\n     * so that the elements can be compared pairwise.\n     *\n     * These are implemented as friend functions so that if we fully instantiate\n     * this type, we don't get errors when using relational operators.\n     */\n    template <typename Traits>\n    friend bool operator <(const GenericSet<Traits>& set1, const GenericSet<Traits>& set2);\n    template <typename Traits>\n    friend bool operator <=(const GenericSet<Traits>& set1, const GenericSet<Traits>& set2);\n    template <typename Traits>\n    friend bool operator >(const GenericSet<Traits>& set1, const GenericSet<Traits>& set2);\n    template <typename Traits>\n    friend bool operator >=(const GenericSet<Traits>& set1, const GenericSet<Traits>& set2);\n\n    /**\n     * Operator: +\n     * Usage: set1 + set2\n     *        set1 + element\n     * ---------------------\n     * Returns the union of sets <code>set1</code> and <code>set2</code>, which\n     * is the set of elements that appear in at least one of the two sets.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     * The right hand set can be replaced by an element of the value type, in\n     * which case the operator returns a new set formed by adding that element.\n     */\n    GenericSet operator +(const GenericSet& set2) const;\n    GenericSet operator +(const value_type& element) const;\n\n    /**\n     * Operator: *\n     * Usage: set1 * set2\n     * ------------------\n     * Returns the intersection of sets <code>set1</code> and <code>set2</code>,\n     * which is the set of all elements that appear in both.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     */\n    GenericSet operator *(const GenericSet& set2) const;\n\n    /**\n     * Operator: -\n     * Usage: set1 - set2\n     *        set1 - element\n     * ---------------------\n     * Returns the difference of sets <code>set1</code> and <code>set2</code>,\n     * which is all of the elements that appear in <code>set1</code> but\n     * not <code>set2</code>.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     * The right hand set can be replaced by an element of the value type, in\n     * which case the operator returns a new set formed by removing that element.\n     */\n    GenericSet operator -(const GenericSet& set2) const;\n    GenericSet operator -(const value_type& element) const;\n\n    /**\n     * Operator: +=\n     * Usage: set1 += set2;\n     *        set1 += value;\n     * ---------------------\n     * Adds all of the elements from <code>set2</code> (or the single\n     * specified value) to <code>set1</code>.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     * As a convenience, the <code>Set</code> package also overloads the comma\n     * operator so that it is possible to initialize a set like this:\n     *\n     *<pre>\n     *    Set&lt;int&gt; digits;\n     *    digits += 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;\n     *</pre>\n     */\n    GenericSet& operator +=(const GenericSet& set2);\n    GenericSet& operator +=(const value_type& value);\n\n    /**\n     * Operator: *=\n     * Usage: set1 *= set2;\n     * --------------------\n     * Removes any elements from <code>set1</code> that are not present in\n     * <code>set2</code>.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     */\n    GenericSet& operator *=(const GenericSet& set2);\n\n    /**\n     * Operator: -=\n     * Usage: set1 -= set2;\n     *        set1 -= value;\n     * ---------------------\n     * Removes the elements from <code>set2</code> (or the single\n     * specified value) from <code>set1</code>.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     * As a convenience, the <code>Set</code> package also overloads the comma\n     * operator so that it is possible to remove multiple elements from a set\n     * like this:\n     *\n     *<pre>\n     *    digits -= 0, 2, 4, 6, 8;\n     *</pre>\n     *\n     * which removes the values 0, 2, 4, 6, and 8 from the set\n     * <code>digits</code>.\n     */\n    GenericSet& operator -=(const GenericSet& set2);\n    GenericSet& operator -=(const value_type& value);\n\n    /*\n     * Additional Set operations\n     * -------------------------\n     * In addition to the methods listed in this interface, the Set\n     * class supports the following operations:\n     *\n     *   - Stream I/O using the << and >> operators\n     *   - Deep copying for the copy constructor and assignment operator\n     *   - Iteration using the range-based for statement and STL iterators\n     *\n     * The iteration forms process the Set in ascending order.\n     */\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\nprivate:\n    typename SetTraits::MapType map = SetTraits::construct();  /* Map used to store the elements    */\n    bool removeFlag = false;                                   /* Flag to differentiate += and -=   */\n\npublic:\n    /*\n     * Hidden features\n     * ---------------\n     * The remainder of this file consists of the code required to\n     * support the comma operator, copying, and iteration.\n     *\n     * Including these methods in the public interface would make\n     * that interface more difficult to understand for the average client.\n     */\n    GenericSet& operator ,(const value_type& value) {\n        if (this->removeFlag) {\n            this->remove(value);\n        } else {\n            this->add(value);\n        }\n        return *this;\n    }\n\n    using const_iterator = typename SetTraits::MapType::const_iterator;\n    using iterator = const_iterator;\n\n    iterator begin() const {\n        return map.begin();\n    }\n\n    iterator end() const {\n        return map.end();\n    }\n\n    friend int hashCode(const GenericSet& set) {\n        return hashCode(set.map);\n    }\n};\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits>::GenericSet(std::initializer_list<value_type> list)\n    : map(SetTraits::construct()) {\n    /* Can't do addAll because that would recursively try constructing a GenericSet.\n     * Instead, directly add everything here. This becomes the focal point for\n     * all initializer_list conversions.\n     */\n    for (const auto& elem: list) {\n        add(elem);\n    }\n}\n\ntemplate <typename SetTraits>\ntemplate <typename... Args>\nGenericSet<SetTraits>::GenericSet(Args... args) : GenericSet({}, std::move(args)...) {\n    // Handled by other constructor\n}\n\ntemplate <typename SetTraits>\ntemplate <typename... Args>\nGenericSet<SetTraits>::GenericSet(std::initializer_list<value_type> list, Args... args)\n    : map(SetTraits::construct(std::move(args)...)) {\n\n    /* Can't do addAll because that would recursively try constructing a GenericSet.\n     * Instead, directly add everything here. This becomes the focal point for\n     * all initializer_list conversions.\n     */\n    for (const auto& elem: list) {\n        add(elem);\n    }\n}\n\ntemplate <typename SetTraits>\nvoid GenericSet<SetTraits>::add(const value_type& value) {\n    map.put(value, true);\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits>& GenericSet<SetTraits>::addAll(const GenericSet& set2) {\n    for (const auto& value : set2) {\n        add(value);\n    }\n    return *this;\n}\n\ntemplate <typename SetTraits>\ntypename GenericSet<SetTraits>::value_type\nGenericSet<SetTraits>::back() const {\n    if (isEmpty()) {\n        error(SetTraits::name() + \"::back: set is empty\");\n    }\n    return map.back();\n}\n\ntemplate <typename SetTraits>\nvoid GenericSet<SetTraits>::clear() {\n    map.clear();\n}\n\ntemplate <typename SetTraits>\nbool GenericSet<SetTraits>::contains(const value_type& value) const {\n    return map.containsKey(value);\n}\n\ntemplate <typename SetTraits>\nbool GenericSet<SetTraits>::containsAll(const GenericSet& set2) const {\n    for (const auto& value: set2) {\n        if (!contains(value)) {\n            return false;\n        }\n    }\n    return true;\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits>& GenericSet<SetTraits>::difference(const GenericSet<SetTraits>& set) {\n    return removeAll(set);\n}\n\ntemplate <typename SetTraits>\nbool GenericSet<SetTraits>::equals(const GenericSet& set2) const {\n    // optimization: if literally same set, stop\n    if (this == &set2) {\n        return true;\n    }\n\n    /* We are equal if we have the same size and we're a subset of the other\n     * set.\n     */\n    if (size() != set2.size()) {\n        return false;\n    }\n    return isSubsetOf(set2);\n}\n\ntemplate <typename SetTraits>\ntypename GenericSet<SetTraits>::value_type\nGenericSet<SetTraits>::first() const {\n    if (isEmpty()) {\n        error(SetTraits::name() + \"::first: set is empty\");\n    }\n    return *begin();\n}\n\ntemplate <typename SetTraits>\ntypename GenericSet<SetTraits>::value_type\nGenericSet<SetTraits>::front() const {\n    if (isEmpty()) {\n        error(SetTraits::name() + \"::front: set is empty\");\n    }\n    return map.front();\n}\n\ntemplate <typename SetTraits>\nvoid GenericSet<SetTraits>::insert(const value_type& value) {\n    map.put(value, true);\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits>& GenericSet<SetTraits>::intersect(const GenericSet<SetTraits>& set) {\n    return retainAll(set);\n}\n\ntemplate <typename SetTraits>\nbool GenericSet<SetTraits>::isEmpty() const {\n    return map.isEmpty();\n}\n\ntemplate <typename SetTraits>\nbool GenericSet<SetTraits>::isSubsetOf(const GenericSet& set2) const {\n    for (const auto& elem: *this) {\n        if (!set2.contains(elem)) {\n            return false;\n        }\n    }\n    return true;\n}\n\ntemplate <typename SetTraits>\nbool GenericSet<SetTraits>::isSupersetOf(const GenericSet& set2) const {\n    return containsAll(set2);\n}\n\ntemplate <typename SetTraits>\nvoid GenericSet<SetTraits>::mapAll(std::function<void (const value_type &)> fn) const {\n    map.mapAll([&](const value_type& elem, bool) {\n        fn(elem);\n    });\n}\n\ntemplate <typename SetTraits>\nvoid GenericSet<SetTraits>::remove(const value_type& value) {\n    map.remove(value);\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits>& GenericSet<SetTraits>::removeAll(const GenericSet& set2) {\n    map.removeAll(set2.map);\n    return *this;\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits>& GenericSet<SetTraits>::retainAll(const GenericSet& set2) {\n    map.retainAll(set2.map);\n    return *this;\n}\n\ntemplate <typename SetTraits>\nint GenericSet<SetTraits>::size() const {\n    return map.size();\n}\n\ntemplate <typename SetTraits>\nstd::string GenericSet<SetTraits>::toString() const {\n    std::ostringstream os;\n    os << *this;\n    return os.str();\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits>& GenericSet<SetTraits>::unionWith(const GenericSet<SetTraits>& set) {\n    return addAll(set);\n}\n\n\n/*\n * Implementation notes: set operators\n * -----------------------------------\n * The implementations for the set operators use iteration to walk\n * over the elements in one or both sets.\n */\ntemplate <typename SetTraits>\nbool GenericSet<SetTraits>::operator ==(const GenericSet& set2) const {\n    return equals(set2);\n}\n\ntemplate <typename SetTraits>\nbool GenericSet<SetTraits>::operator !=(const GenericSet& set2) const {\n    return !equals(set2);\n}\n\ntemplate <typename SetTraits>\nbool operator <(const GenericSet<SetTraits>& set1, const GenericSet<SetTraits>& set2) {\n    return set1.map < set2.map;\n}\n\ntemplate <typename SetTraits>\nbool operator <=(const GenericSet<SetTraits>& set1, const GenericSet<SetTraits>& set2) {\n    return set1.map <= set2.map;\n}\n\ntemplate <typename SetTraits>\nbool operator >(const GenericSet<SetTraits>& set1, const GenericSet<SetTraits>& set2) {\n    return set1.map > set2.map;\n}\n\ntemplate <typename SetTraits>\nbool operator >=(const GenericSet<SetTraits>& set1, const GenericSet<SetTraits>& set2) {\n    return set1.map >= set2.map;\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits> GenericSet<SetTraits>::operator +(const GenericSet& set2) const {\n    return GenericSet(*this).addAll(set2);\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits> GenericSet<SetTraits>::operator +(const value_type& element) const {\n    GenericSet result = *this;\n    result.add(element);\n    return result;\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits> GenericSet<SetTraits>::operator *(const GenericSet& set2) const {\n    return GenericSet(*this).retainAll(set2);\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits> GenericSet<SetTraits>::operator -(const GenericSet& set2) const {\n    return GenericSet(*this).removeAll(set2);\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits> GenericSet<SetTraits>::operator -(const value_type& element) const {\n    GenericSet result = *this;\n    result.remove(element);\n    return result;\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits>& GenericSet<SetTraits>::operator +=(const GenericSet& set2) {\n    removeFlag = false;\n    return addAll(set2);\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits>& GenericSet<SetTraits>::operator +=(const value_type& value) {\n    add(value);\n    removeFlag = false;\n    return *this;\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits>& GenericSet<SetTraits>::operator *=(const GenericSet& set2) {\n    return retainAll(set2);\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits>& GenericSet<SetTraits>::operator -=(const GenericSet& set2) {\n    removeFlag = true;\n    return removeAll(set2);\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits>& GenericSet<SetTraits>::operator -=(const value_type& value) {\n    remove(value);\n    removeFlag = true;\n    return *this;\n}\n\ntemplate <typename SetTraits>\nstd::ostream& operator <<(std::ostream& os, const GenericSet<SetTraits>& set) {\n    return stanfordcpplib::collections::writeCollection(os, set);\n}\n\ntemplate <typename SetTraits>\nstd::istream& operator >>(std::istream& is, GenericSet<SetTraits>& set) {\n    typename SetTraits::ValueType element;\n    return stanfordcpplib::collections::readCollection(is, set, element, /* descriptor */ SetTraits::name() + \"::operator >>\");\n}\n\n\n/*\n * Types used to automatically check whether a type is comparable using\n * the < operator and whether a type supports operator== and hashCode.\n *\n * This is used to provide better compiler diagnostics to students when\n * they try to instantiate our times incorrectly.\n *\n * Later on, when C++20 concepts are rolled out, we should consider\n * replacing this code with concepts.\n */\ntemplate <typename T>\nstruct IsLessThanComparable {\nprivate:\n    /* Use SFNIAE overloading to detect which of these two options to pick. */\n    struct Yes{};\n    struct No {};\n\n    template <typename U>\n    static Yes check(int,\n                     decltype(std::declval<U>() < std::declval<U>()) = 0);\n    template <typename U> static No  check(...);\n\npublic:\n    static constexpr bool value =\n            std::conditional<std::is_same<decltype(check<T>(0)), Yes>::value,\n                             std::true_type,\n                             std::false_type>::type::value;\n};\n\ntemplate <typename T>\nstruct IsHashable {\nprivate:\n    /* Use SFNIAE overloading to detect which of these two options to pick. */\n    struct Yes{};\n    struct No {};\n\n    template <typename U>\n    static Yes check(int,\n                     decltype(hashCode(std::declval<U>())) = 0,\n                     decltype(std::declval<U>() == std::declval<U>()) = 0);\n    template <typename U> static No  check(...);\n\npublic:\n    static constexpr bool value =\n            std::conditional<std::is_same<decltype(check<T>(0)), Yes>::value,\n                             std::true_type,\n                             std::false_type>::type::value;\n};\n\n/*\n * Returns std::less<T>, except with a nice static assertion wrapped around it to\n * make sure that in the event that T isn't comparable via <, the error message is\n * more readable.\n */\ntemplate <typename T>\nstd::function<bool (const T&, const T&)> checkedLess() {\n    static_assert(IsLessThanComparable<T>::value,\n                  \"Oops! You tried using a type as a key in our Map without making it comparable. Click this error for more details.\");\n    /*\n     * Hello CS106 students! If you got directed to this line of code in a compiler error,\n     * it probably means that you tried making a Map with a custom struct or class type\n     * as the key type or a Set with a custom struct as a value type.\n     *\n     * In order to have a type be a key type in a Map - or to have a type be a value type\n     * in a Set - it needs to have be comparable using the < operator. By default, types in C++\n     * can't be compared using the < operator, hence the error.\n     *\n     * There are two ways to fix this. The first option would simply be to not use your custom\n     * type as a key in the Map or value in a Set. This is probably the easiest option.\n     *\n     * The second way to fix this is to explicitly define an operator< function for your custom\n     * type. Here's the syntax for doing that:\n     *\n     *     bool operator< (const YourCustomType& lhs, const YourCustomType& rhs) {\n     *         return compareTo(lhs.data1, rhs.data1,\n     *                          lhs.data2, rhs.data2,\n     *                          ...\n     *                          lhs.dataN, rhs.dataN);\n     *     }\n     *\n     * where data1, data2, ... dataN are the data members of your type. For example, if you had\n     * a custom type\n     *\n     *     struct MyType {\n     *         int myInt;\n     *         string myString;\n     *     };\n     *\n     * you would define the function\n     *\n     *     bool operator< (const MyType& lhs, const MyType& rhs) {\n     *         return compareTo(lhs.myInt,    rhs.myInt,\n     *                          lhs.myString, rhs.myString);\n     *     }\n     *\n     * Hope this helps!\n     */\n    return std::less<T>();\n}\n\n/*\n * Utility traits type that always contains a value that's false.\n */\ntemplate <typename... Args> struct Fail {\n    static constexpr bool value = false;\n};\n\n} // namespace collections\n} // namespace stanfordcpplib\n\n#endif // _collections_h\n\n/////////////////////// END code extracted from StanfordCPPLib/collections/collections.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/util/observable.h ///////////////////////\n/*\n * File: observable.h\n * ------------------\n * This file defines an abstract superclass named <code>Observable</code> that\n * allows objects to store lists of observers, which are other objects that are\n * notified when some part of the state of the observable object changes.\n * This is an example of the classic Observer/Observable design pattern.\n *\n * @author Marty Stepp\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2017/10/25\n * - added addObserver/removeObserver overloads that accept reference param\n * @version 2016/11/20\n * - refactored to use template for event type\n * @version 2014/10/08\n * - removed 'using namespace' statement\n * - fixed bug in error string on removeObserver (said 'addObserver')\n * @version 2014/03/09\n * - initial version\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _observable_h\n#define _observable_h\n\n#include <set>\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\n// forward declarations\ntemplate <class T>\nclass Observer;\n\n/**\n * This abstract superclass allows objects to store lists of observers,\n * which are other objects that would like to be notified when some part of the\n * state of the observable object changes.\n *\n * The intended usage is that you should extend Observable in the object you\n * want to be watched, then call notifyObservers in its code at appropriate\n * places.  Then create some other object that extends Observer and defines an\n * update method, and attach it to the Observable so it will be notified.\n */\ntemplate <typename T>\nclass Observable {\npublic:\n    /**\n     * Adds the given observer object to this observable object's internal list\n     * of observers.  The observer's update method will be called when the\n     * notifyObservers method is called afterward.\n     * Precondition: obs != nullptr\n     */\n    void addObserver(Observer<T>* obs);\n\n    /**\n     * Adds the given observer object to this observable object's internal list\n     * of observers.  The observer's update method will be called when the\n     * notifyObservers method is called afterward.\n     */\n    void addObserver(Observer<T>& obs);\n\n    /**\n     * Calls the update method of all observers that have been added previously\n     * to this observable object.\n     * The given argument can be passed to provide extra information to the\n     * observers if necessary.  If no argument is passed, nullptr is used.\n     */\n    void notifyObservers(T arg = T());\n\n    /**\n     * Removes the given observer object from this observable object's internal\n     * list of observers.  The observer will no longer be notified.\n     */\n    void removeObserver(Observer<T>* obs);\n\n    /**\n     * Removes the given observer object from this observable object's internal\n     * list of observers.  The observer will no longer be notified.\n     */\n    void removeObserver(Observer<T>& obs);\n\nprivate:\n    // a list of observers to notify when notifyObservers is called\n    std::set<Observer<T>*> m_observers;\n};\n\n/**\n * An object that wishes to be notified when the state of an observable object\n * changes.\n */\ntemplate <typename T>\nclass Observer {\npublic:\n    /**\n     * Called by an Observable to inform this observer that its state changed.\n     * The 'obs' parameter will be a pointer to the observable object itself\n     * on which the state change occurred.  The 'arg' parameter will be\n     * the extra information passed by the Observable when it called\n     * notifyObservers, if any.\n     */\n    virtual void update(Observable<T>* obs, const T& arg = T()) = 0;\n};\n\ntemplate <typename T>\nvoid Observable<T>::addObserver(Observer<T>* obs) {\n    if (!obs) {\n        error(\"Observable::addObserver: null observer passed\");\n    }\n    m_observers.insert(obs);\n}\n\ntemplate <typename T>\nvoid Observable<T>::addObserver(Observer<T>& obs) {\n    addObserver(&obs);\n}\n\ntemplate <typename T>\nvoid Observable<T>::notifyObservers(T arg) {\n    for (Observer<T>* obs : m_observers) {\n        obs->update(this, arg);\n    }\n}\n\ntemplate <typename T>\nvoid Observable<T>::removeObserver(Observer<T>* obs) {\n    if (!obs) {\n        error(\"Observable::removeObserver: null observer passed\");\n    }\n    m_observers.erase(obs);\n}\n\ntemplate <typename T>\nvoid Observable<T>::removeObserver(Observer<T>& obs) {\n    removeObserver(&obs);\n}\n\n#endif // _observable_h\n\n/////////////////////// END code extracted from StanfordCPPLib/util/observable.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/util/recursion.h ///////////////////////\n/*\n * File: recursion.h\n * -----------------\n * This file includes a few utility functions related to recursion.\n * You can use them to print a debug message that is indented relative\n * to the level of recursion you are currently nested in.\n *\n * @author Marty Stepp\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2016/10/30\n * - initial version (extracted from exceptions.h)\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _recursion_h\n#define _recursion_h\n\n#include <string>\n\n/**\n * Returns number of calls deep we are in the current recursive function.\n * For example, if f() calls f() calls f(), this function returns 3.\n *\n * NOTE: Doesn't usually work when used with 'static' functions, because their names\n * are not exported or revealed to the internal stack trace grabber.\n * So if you want to use this function, make your function non-static.\n */\nint getRecursionIndentLevel();\n\n/**\n * Returns a string of indentation that can be used to pretty-print recursive calls\n * at their corresponding level of nesting.\n * Indents by 4 spaces per level but can be overridden by passing 'indenter' param.\n *\n * NOTE: Doesn't usually work when used with static functions, because their names\n * are not exported or revealed to the internal stack trace grabber.\n * So if you want to use this function, make your function non-static.\n */\nstd::string recursionIndent(const std::string& indenter = \"    \");\n\n#endif // _recursion_h\n\n/////////////////////// END code extracted from StanfordCPPLib/util/recursion.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/system/exceptions.h ///////////////////////\n/*\n * File: exceptions.h\n * ------------------\n * This file contains a top-level exception handler to print exceptions thrown\n * by student code on the console.\n * It also contains some wizardry to try to retrieve a stack trace when the\n * exception is thrown, though it is hard to consistently do this on all platforms.\n * \n * @author Marty Stepp\n * @version 2018/09/25\n * - add 'force' parameter to setTopLevelExceptionHandlerEnabled\n *   (helps it to work better with threads)\n * - added doc comments for new documentation generation\n * @version 2016/11/07\n * - added cleanupFunctionNameForStackTrace\n * @version 2016/10/30\n * - moved recursion functions to recursion.h/cpp\n * @version 2014/11/12\n * - made printStackTrace function publicly available\n * - added top-level signal handler (for null-pointer derefs etc.)\n * @since 2014/11/05\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _exceptions_h\n#define _exceptions_h\n\n#include <iostream>\n\nnamespace exceptions {\n/**\n * Strips some extraneous text from a function's name/header to make it look\n * better when printed in a stack trace.\n * e.g. basic_string -> string, removes std::, removes some weird compiler gibberish.\n */\nstd::string cleanupFunctionNameForStackTrace(std::string function);\n\n/**\n * Called by C++ lib's main wrapper so that the stack trace knows the program's name.\n * (Taken from argv[0].)\n */\nstd::string& getProgramNameForStackTrace();\n\n/**\n * Returns whether the top-level exception handler is enabled.\n * Initially false.\n */\nbool getTopLevelExceptionHandlerEnabled();\n\n/**\n * Prints a stack trace to the system standard error console (cerr).\n * (Stack traces are highly OS- and compiler-dependent, so this function\n *  may not work perfectly on all platforms.  It has been tested to work\n *  on Linux with GCC/G++, Mac OS X with clang++, and Windows with MinGW.)\n */\nvoid printStackTrace();\n\n/**\n * Prints a stack trace to the given output stream.\n * Defaults to the system standard error console (cerr).\n * (Stack traces are highly OS- and compiler-dependent, so this function\n *  may not work perfectly on all platforms.  It has been tested to work\n *  on Linux with GCC/G++, Mac OS X with clang++, and Windows with MinGW.)\n */\nvoid printStackTrace(std::ostream& out);\n\n/**\n * Called by C++ lib's main wrapper so that the stack trace knows the program's name.\n * (Taken from argv[0].)\n */\nvoid setProgramNameForStackTrace(char* programName);\n\n/**\n * Sets whether the top-level exception handler is enabled.\n * If the optional 'force' parameter is passed, will set the handler again\n * even if it was set before.\n */\nvoid setTopLevelExceptionHandlerEnabled(bool enabled, bool force = false);\n\n/**\n * Whether the given function should be filtered out when displaying a stack trace.\n * Not meant to be called by clients.\n */\nbool shouldFilterOutFromStackTrace(const std::string& function);\n}\n\n#endif // _exceptions_h\n\n/////////////////////// END code extracted from StanfordCPPLib/system/exceptions.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/collections/vector.h ///////////////////////\n/*\n * File: vector.h\n * --------------\n * This file exports the <code>Vector</code> class, which provides an\n * efficient, safe, convenient replacement for the array type in C++.\n *\n * @version 2019/04/09\n * - renamed private members with underscore naming scheme for consistency\n * @version 2019/02/04\n * - changed internal implementation to wrap std collections\n * @version 2018/09/06\n * - refreshed doc comments for new documentation generation\n * @version 2018/01/07\n * - added front, back, removeFront, removeBack, pop_front, pop_back, push_front\n * @version 2017/11/15\n * - added contains, indexOf, lastIndexOf, removeValue, reverse, shuffle, sort\n * @version 2017/10/18\n * - fix compiler warnings\n * @version 2016/12/09\n * - added iterator version checking support\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * @version 2016/08/12\n * - bug fix for constructor based on initializer list\n * @version 2016/08/10\n * - added support for std initializer_list usage, such as {1, 2, 3}\n *   in constructor, addAll, +, +=\n * @version 2016/08/04\n * - fixed operator >> to not throw errors\n * @version 2015/10/13\n * - nulled out pointer fields in destructor after deletion to avoid double-free\n * @version 2015/07/05\n * - using global hashing functions rather than global variables\n * @version 2014/11/13\n * - added comparison operators <, >=, etc.\n * - added template hashCode function\n * @version 2014/10/19\n * - added subList method\n * @version 2014/10/10\n * - removed usage of __foreach macro\n * 2014/07/09\n * - changed checkVectorIndex range checking function into a private member\n *   function to avoid unused-function errors on some newer compilers\n * 2014/04/27\n * - fixed bug in addAll method that was not returning reference properly.\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _vector_h\n#define _vector_h\n\n#include <algorithm>\n#include <initializer_list>\n#include <iostream>\n#include <iterator>\n#include <sstream>\n#include <string>\n#include <vector>\n#include <deque>\n#include <type_traits>\n#include <functional>\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\n/**\n * This class stores an ordered list of values similar to an array.\n * It supports traditional array selection using square brackets, but\n * also supports inserting and deleting elements.  It is similar in\n * function to the STL <code>vector</code> type, but is simpler both\n * to use and to implement.\n */\ntemplate <typename ValueType>\nclass Vector {\npublic:\n    /**\n     * Initializes a new empty vector.\n     * @bigoh O(1)\n     */\n    Vector() = default;\n\n    /**\n     * Initializes a new vector, creating an array with <code>n</code>\n     * elements, each of which is initialized to <code>value</code>.\n     * If <code>value</code> is missing, the elements are initialized\n     * to the default value for the type.\n     * @bigoh O(N)\n     */\n    explicit Vector(int n, ValueType value = ValueType());\n\n    /**\n     * Uses an initializer list to set up the vector.\n     * @bigoh O(N)\n     */\n    Vector(std::initializer_list<ValueType> list);\n\n    /**\n     * Frees any heap storage allocated by this vector.\n     * @bigoh O(1)\n     */\n    virtual ~Vector() = default;\n\n    /**\n     * Adds a new value to the end of this vector.\n     * @bigoh O(1)\n     */\n    void add(const ValueType& value);\n\n    /**\n     * Adds all elements of the given other vector to this vector.\n     * Returns a reference to this vector.\n     * Identical in behavior to the += operator.\n     * @bigoh O(N)\n     */\n    Vector<ValueType>& addAll(const Vector<ValueType>& v);\n\n    /**\n     * Returns the element at index (size - 1) in this vector (without removing it).\n     * @throw ErrorException if vector is empty\n     * @bigoh O(1)\n     */\n    ValueType& back();\n\n    /**\n     * Returns the element at index (size - 1) in this vector (without removing it).\n     * @throw ErrorException if vector is empty\n     * @bigoh O(1)\n     */\n    const ValueType& back() const;\n\n    /**\n     * Removes all elements from this vector.\n     * @bigoh O(1)\n     */\n    void clear();\n\n    /**\n     * Returns true if the vector contains the given value.\n     * The ValueType must have an == operator to use this method.\n     * @bigoh O(N)\n     */\n    bool contains(const ValueType& value) const;\n\n    /**\n     * Guarantees that the vector's internal array is at least the given length.\n     * If necessary, resizes the array to be the given length or larger.\n     * @bigoh O(N)\n     */\n    void ensureCapacity(int cap);\n\n    /**\n     * Compares two vectors for equality.\n     * Returns <code>true</code> if this vector contains exactly the same\n     * values as the given other vector.\n     * Identical in behavior to the == operator.\n     * @bigoh O(N)\n     */\n    bool equals(const Vector<ValueType>& v) const;\n\n    /**\n     * Returns the element at index 0 in this vector (without removing it).\n     * @throw ErrorExceptoin if vector is empty\n     * @bigoh O(1)\n     */\n    ValueType& front();\n\n    /**\n     * Returns the element at index 0 in this vector (without removing it).\n     * @throw ErrorExceptoin if vector is empty\n     * @bigoh O(1)\n     */\n    const ValueType& front() const;\n\n    /**\n     * Returns the element at the specified index in this vector.\n     * Similar in behavior to the [] operator.\n     * @throw ErrorException if the index is not in the array range\n     * @bigoh O(1)\n     */\n    const ValueType& get(int index) const;\n\n    /**\n     * Returns the index of the first occurrence of the given value.\n     * If the value is not found in the vector, returns -1.\n     * The ValueType must have an == operator to use this method.\n     * @bigoh O(N)\n     */\n    int indexOf(const ValueType& value) const;\n\n    /**\n     * Inserts the element into this vector before the specified index.\n     * All subsequent elements are shifted one position to the right.\n     * @throw ErrorException if the index is not in the array range from 0\n     * up to and including the length of the vector.\n     * @bigoh O(N)\n     */\n    void insert(int index, const ValueType& value);\n\n    /**\n     * Returns <code>true</code> if this vector contains no elements.\n     * @bigoh O(1)\n     */\n    bool isEmpty() const;\n\n    /**\n     * Returns the index of the last occurrence of the given value.\n     * If the value is not found in the vector, returns -1.\n     * The ValueType must have an == operator to use this method.\n     * @bigoh O(N)\n     */\n    int lastIndexOf(const ValueType& value) const;\n\n    /**\n     * Calls the specified function on each element of the vector in\n     * ascending index order.\n     * @bigoh O(N)\n     */\n    void mapAll(std::function<void (const ValueType&)> fn) const;\n\n    /**\n     * Removes and returns the first value of this vector.\n     * Equivalent to removeFront.\n     * @throw ErrorException if the vector is empty\n     * @bigoh O(N)\n     */\n    ValueType pop_front();\n\n    /**\n     * Removes and returns the last value of this vector.\n     * Equivalent to removeBack.\n     * @throw ErrorException if the vector is empty\n     * @bigoh O(1)\n     */\n    ValueType pop_back();\n\n    /**\n     * Adds a new value to the end of this vector.\n     * This method is a synonym of the add method that is provided to\n     * ensure compatibility with the STL <code>vector</code> class.\n     * @bigoh O(1)\n     */\n    void push_back(const ValueType& value);\n\n    /**\n     * Adds a new value to the start of this vector.\n     * This method is equivalent to calling insert(0, value) and is provided to\n     * improve compatibility with the STL <code>vector</code> class.\n     * @bigoh O(N)\n     */\n    void push_front(const ValueType& value);\n\n    /**\n     * Removes the element at the specified index from this vector.\n     * All subsequent elements are shifted one position to the left.\n     * @throw ErrorException if the index is not in the array range\n     * @bigoh O(N)\n     */\n    void remove(int index);\n\n    /**\n     * Removes and returns the element at index 0 in this vector.\n     * @throw ErrorException if the vector is empty\n     * @bigoh O(N)\n     */\n    ValueType removeFront();\n\n    /**\n     * Removes and returns the element at index (size - 1) in this vector.\n     * @throw ErrorException if the vector is empty\n     * @bigoh O(1)\n     */\n    ValueType removeBack();\n\n    /**\n     * Removes the first occurrence of the element value from this vector.\n     * All subsequent elements are shifted one position to the left.\n     * If the vector does not contain the given value, has no effect.\n     * The ValueType must have an == operator to use this method.\n     * @bigoh O(N)\n     */\n    void removeValue(const ValueType& value);\n\n    /**\n     * Reverses the order of the elements in this vector.\n     * For example, if vector stores {1, 3, 4, 9}, changes it to store {9, 4, 3, 1}.\n     * @bigoh O(N)\n     */\n    void reverse();\n\n    /**\n     * Replaces the element at the specified index in this vector with\n     * a new value.  The previous value at that index is overwritten.\n     * Similar in behavior to the [] operator.\n     * @throw ErrorException if the index is not in the array range\n     * @bigoh O(1)\n     */\n    void set(int index, const ValueType& value);\n    \n    /**\n     * Returns the number of elements in this vector.\n     * @bigoh O(1)\n     */\n    int size() const;\n\n    /**\n     * Rearranges the order of the elements in this vector into a random order.\n     * @bigoh O(N)\n     */\n    void shuffle();\n\n    /**\n     * Rearranges the order of the elements in this vector into sorted order.\n     * For example, if vector stores {9, 1, 4, 3}, changes it to store {1, 3, 4, 9}.\n     * The ValueType must have an operator < to call this method.\n     * @bigoh O(N log N)\n     */\n    void sort();\n\n    /**\n     * Returns a new vector containing the given subset range of elements\n     * from this vector. The new vector is a deep copy, not linked to this one.\n     * @throw ErrorException if the range (start .. start + length) is not\n     *        within the bounds of this vector, or if length is negative\n     * @bigoh O(N)\n     */\n    Vector<ValueType> subList(int start, int length) const;\n\n    /**\n     * Returns a new vector containing the elements from the start position\n     * to the end of the vector.\n     *\n     * @throw ErrorException if start > size()\n     * @bigoh O(N)\n     */\n    Vector<ValueType> subList(int start) const;\n\n    /**\n     * Converts the vector to a printable string representation\n     * such as \"{10, 20, 30, 40}\".\n     * @bigoh O(N)\n     */\n    std::string toString() const;\n\n    /**\n     * Overloads <code>[]</code> to select elements from this vector.\n     * This extension enables the use of traditional array notation to\n     * get or set individual elements.\n     * @throw ErrorException if the index is not in the array range\n     * @bigoh O(1)\n     */\n    ValueType& operator [](int index);\n\n    /**\n     * Overloads <code>[]</code> to select elements from this vector.\n     * This extension enables the use of traditional array notation to\n     * get or set individual elements.\n     * @throw ErrorException if the index is not in the array range\n     * @bigoh O(1)\n     */\n    const ValueType& operator [](int index) const;\n\n    /**\n     * Concatenates two vectors and returns the result.\n     * @bigoh O(N)\n     */\n    Vector operator +(const Vector& v2) const;\n\n    /**\n     * Produces a vector formed by appending the given element to this vector.\n     * @bigoh O(N)\n     */\n    Vector operator +(const ValueType& elem) const;\n\n    /**\n     * Adds all of the elements from <code>v2</code> to the end of this vector.\n     * @bigoh O(N)\n     */\n    Vector& operator +=(const Vector& v2);\n\n    /**\n     * Adds the single specified value) to the end of the vector.\n     * @bigoh O(1)\n     */\n    Vector& operator +=(const ValueType& value);\n\n\n    /**\n     * Compares two vectors for equality.\n     * The ValueType must have an == operator.\n     * @bigoh O(N)\n     */\n    bool operator ==(const Vector& v2) const;\n\n    /**\n     * Compares two vectors for inequality.\n     * The ValueType must have a != operator.\n     * @bigoh O(N)\n     */\n    bool operator !=(const Vector& v2) const;\n\n    /**\n     * Relational operators to compare two vectors.\n     * Each element is compared pairwise to the corresponding element at the\n     * same index in the other vector; for example, we first check the values\n     * at index 0, then 1, and so on.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     * @bigoh O(N)\n     */\n    bool operator <(const Vector& v2) const;\n\n    /**\n     * Relational operators to compare two vectors.\n     * Each element is compared pairwise to the corresponding element at the\n     * same index in the other vector; for example, we first check the values\n     * at index 0, then 1, and so on.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     * @bigoh O(N)\n     */\n    bool operator <=(const Vector& v2) const;\n\n    /**\n     * Relational operators to compare two vectors.\n     * Each element is compared pairwise to the corresponding element at the\n     * same index in the other vector; for example, we first check the values\n     * at index 0, then 1, and so on.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     * @bigoh O(N)\n     */\n    bool operator >(const Vector& v2) const;\n\n    /**\n     * Relational operators to compare two vectors.\n     * Each element is compared pairwise to the corresponding element at the\n     * same index in the other vector; for example, we first check the values\n     * at index 0, then 1, and so on.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     * @bigoh O(N)\n     */\n    bool operator >=(const Vector& v2) const;\n\n    /*\n     * Additional Vector operations\n     * ----------------------------\n     * In addition to the methods listed in this interface, the Vector\n     * class supports the following operations:\n     *\n     *   - Stream I/O using the << and >> operators\n     *   - Deep copying for the copy constructor and assignment operator\n     *   - Iteration using the range-based for statement or STL iterators\n     *\n     * The iteration forms process the Vector in index order.\n     */\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\nprivate:\n    /*\n     * Implementation notes: Vector data structure\n     * -------------------------------------------\n     * The elements are stored in a std::vector, the regular C++ library\n     * type representing a sequence of elements. We wrap std::vector because\n     * it has no runtime safety checks, something that's tricky to get used\n     * to when you're first learning to use these types.\n     *\n     * There's an edge case in the C++ libraries where std::vector<bool> doesn't\n     * work as you might think it does. This is widely regarded as a mistake\n     * in the language design and there's been a proposal to fix it for many\n     * years now. In the interim, we get around this by falling back on the\n     * std::deque type in the event that the client wants to make a\n     * Vector<bool>\n     */\n    using ContainerType = typename std::conditional<std::is_same<ValueType, bool>::value,\n                                                    std::deque<bool>,\n                                                    std::vector<ValueType>>::type;\n\n    /* Instance variables */\n    ContainerType _elements;\n    stanfordcpplib::collections::VersionTracker _version;\n\n    /* Private methods */\n\n    /*\n     * Throws an ErrorException if the given index is not within the range of\n     * [min..max] inclusive.\n     * This is a consolidated error handler for all various Vector members that\n     * accept index parameters.\n     * The prefix parameter represents a text string to place at the start of\n     * the error message, generally to help indicate which member threw the error.\n     *\n     * We make prefix a const char* rather than a std::string to avoid having to\n     * construct and then destroy the prefix with each call.\n     */\n    void checkIndex(int index, int min, int max, const char* prefix) const;\n\n    /*\n     * Hidden features\n     * ---------------\n     * The remainder of this file consists of the code required to\n     * support deep copying and iteration.  Including these methods\n     * in the public interface would make that interface more\n     * difficult to understand for the average client.\n     */\n\npublic:\n    /**\n     * Adds an element to the vector passed as the left-hand operatand.\n     * This form makes it easier to initialize vectors in old versions of C++.\n     * @bigoh O(1)\n     */\n    Vector& operator ,(const ValueType& value);\n\n    using iterator = stanfordcpplib::collections::CheckedIterator<typename ContainerType::iterator>;\n    using const_iterator = stanfordcpplib::collections::CheckedIterator<typename ContainerType::const_iterator>;\n\n    iterator begin();\n    iterator end();\n    const_iterator begin() const;\n    const_iterator end() const;\n\n    /* Updates the internal version count. Only our libraries need this, and they only\n     * need it in rare cases where an operation that's semantically mutating but bitwise\n     * non-mutating occurs.\n     */\n    void updateVersion();\n};\n\n/* Implementation section */\n\ntemplate <typename ValueType>\nVector<ValueType>::Vector(int n, ValueType value) {\n    if (n < 0) error(\"Cannot create a Vector with a negative number of elements.\");\n    _elements.assign(n, value);\n}\n\ntemplate <typename ValueType>\nVector<ValueType>::Vector(std::initializer_list<ValueType> list)\n        : _elements(list) {\n}\n\n/*\n * Implementation notes: Vector methods\n * ------------------------------------\n * The basic Vector methods are straightforward and should require\n * no detailed documentation.\n */\ntemplate <typename ValueType>\nvoid Vector<ValueType>::add(const ValueType& value) {\n    insert(size(), value);\n}\n\ntemplate <typename ValueType>\nVector<ValueType>& Vector<ValueType>::addAll(const Vector<ValueType>& v) {\n    for (const ValueType& value : v) {\n        add(value);\n    }\n    return *this;   // BUGFIX 2014/04/27\n}\n\ntemplate <typename ValueType>\nValueType& Vector<ValueType>::back() {\n    return const_cast<ValueType&>(static_cast<const Vector &>(*this).back());\n}\n\ntemplate <typename ValueType>\nconst ValueType& Vector<ValueType>::back() const {\n    if (isEmpty()) {\n        error(\"Vector::back: vector is empty\");\n    }\n    return _elements.back();\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::clear() {\n    _elements.clear();\n    _version.update();\n}\n\ntemplate <typename ValueType>\nbool Vector<ValueType>::contains(const ValueType& value) const {\n    return indexOf(value) >= 0;\n}\n\ntemplate <typename ValueType>\nbool Vector<ValueType>::equals(const Vector<ValueType>& v) const {\n    return stanfordcpplib::collections::equals(*this, v);\n}\n\ntemplate <typename ValueType>\nValueType& Vector<ValueType>::front() {\n    return const_cast<ValueType&>(static_cast<const Vector &>(*this).front());\n}\n\ntemplate <typename ValueType>\nconst ValueType& Vector<ValueType>::front() const {\n    if (isEmpty()) {\n        error(\"Vector::front: vector is empty\");\n    }\n    return _elements.front();\n}\n\ntemplate <typename ValueType>\nconst ValueType& Vector<ValueType>::get(int index) const {\n    checkIndex(index, 0, size()-1, \"get\");\n    return _elements[index];\n}\n\ntemplate <typename ValueType>\nint Vector<ValueType>::indexOf(const ValueType& value) const {\n    auto result = std::find(_elements.begin(), _elements.end(), value);\n    if (result == _elements.end()) return -1;\n    return result - _elements.begin();\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::insert(int index, const ValueType& value) {\n    checkIndex(index, 0, size(), \"insert\");\n    _elements.insert(_elements.begin() + index, value);\n    _version.update();\n}\n\ntemplate <typename ValueType>\nbool Vector<ValueType>::isEmpty() const {\n    return _elements.empty();\n}\n\ntemplate <typename ValueType>\nint Vector<ValueType>::lastIndexOf(const ValueType& value) const {\n    auto result = std::find(_elements.rbegin(), _elements.rend(), value);\n    if (result == _elements.rend()) return -1;\n\n    /* These iterators are going in the reverse direction, and so the index they give is the number of\n     * steps from the end of the range, not from the beginning. Reverse this before returning the\n     * value.\n     */\n    return (size() - 1) - (result - _elements.rbegin());\n}\n\n/*\n * Implementation notes: mapAll\n * ----------------------------\n * The various versions of the mapAll function apply the function or\n * function object to each element in ascending index order.\n */\ntemplate <typename ValueType>\nvoid Vector<ValueType>::mapAll(std::function<void (const ValueType&)> fn) const {\n    for (const auto& elem: _elements) {\n        fn(elem);\n    }\n}\n\ntemplate <typename ValueType>\nValueType Vector<ValueType>::pop_back() {\n    if (isEmpty()) {\n        error(\"Vector::pop_back: vector is empty\");\n    }\n    auto result = _elements.back();\n    _elements.pop_back();\n    _version.update();\n    return result;\n}\n\ntemplate <typename ValueType>\nValueType Vector<ValueType>::pop_front() {\n    if (isEmpty()) {\n        error(\"Vector::pop_front: vector is empty\");\n    }\n    auto result = _elements.front();\n    _elements.erase(_elements.begin());\n    _version.update();\n    return result;\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::push_back(const ValueType& value) {\n    insert(size(), value);\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::push_front(const ValueType& value) {\n    insert(0, value);\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::remove(int index) {\n    checkIndex(index, 0, size() - 1, \"remove\");\n    _elements.erase(_elements.begin() + index);\n    _version.update();\n}\n\ntemplate <typename ValueType>\nValueType Vector<ValueType>::removeBack() {\n    return pop_back();\n}\n\ntemplate <typename ValueType>\nValueType Vector<ValueType>::removeFront() {\n    return pop_front();\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::removeValue(const ValueType& value) {\n    int index = indexOf(value);\n    if (index >= 0) {\n        remove(index);\n    }\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::reverse() {\n    std::reverse(begin(), end());\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::set(int index, const ValueType& value) {\n    checkIndex(index, 0, size()-1, \"set\");\n    _elements[index] = value;\n}\n\ntemplate <typename ValueType>\nint Vector<ValueType>::size() const {\n    return _elements.size();\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::shuffle() {\n    for (int i = 0; i < size() - 1; i++) {\n        std::swap(_elements[i], _elements[randomInteger(i, size() - 1)]);\n    }\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::sort() {\n    std::sort(begin(), end());\n}\n\ntemplate <typename ValueType>\nVector<ValueType> Vector<ValueType>::subList(int start, int length) const {\n    checkIndex(start, 0, size(), \"subList\");\n    checkIndex(start + length, 0, size(), \"subList\");\n    if (length < 0) {\n        error(\"Vector::subList: length cannot be negative\");\n    }\n    Vector<ValueType> result;\n    for (int i = start; i < start + length; i++) {\n        result.add(get(i));\n    }\n    return result;\n}\n\ntemplate <typename ValueType>\nVector<ValueType> Vector<ValueType>::subList(int start) const {\n    return subList(start, size() - start);\n}\n\ntemplate <typename ValueType>\nstd::string Vector<ValueType>::toString() const {\n    std::ostringstream os;\n    os << *this;\n    return os.str();\n}\n\n/*\n * Implementation notes: Vector selection\n * --------------------------------------\n * The following code implements traditional array selection using\n * square brackets for the index.\n */\ntemplate <typename ValueType>\nValueType& Vector<ValueType>::operator [](int index) {\n    return const_cast<ValueType&>(static_cast<const Vector &>(*this)[index]);\n}\ntemplate <typename ValueType>\nconst ValueType& Vector<ValueType>::operator [](int index) const {\n    checkIndex(index, 0, size()-1, \"operator []\");\n    return _elements[index];\n}\n\ntemplate <typename ValueType>\nVector<ValueType> Vector<ValueType>::operator +(const Vector& v2) const {\n    Vector<ValueType> result = *this;\n    return result.addAll(v2);\n}\n\ntemplate <typename ValueType>\nVector<ValueType> Vector<ValueType>::operator +(const ValueType& elem) const {\n    Vector<ValueType> result = *this;\n    return result += elem;\n}\n\ntemplate <typename ValueType>\nVector<ValueType>& Vector<ValueType>::operator +=(const Vector& v2) {\n    return addAll(v2);\n}\n\ntemplate <typename ValueType>\nVector<ValueType>& Vector<ValueType>::operator +=(const ValueType& value) {\n    add(value);\n    return *this;\n}\n\ntemplate <typename ValueType>\nbool Vector<ValueType>::operator ==(const Vector& v2) const {\n    return equals(v2);\n}\n\ntemplate <typename ValueType>\nbool Vector<ValueType>::operator !=(const Vector& v2) const {\n    return !equals(v2);\n}\n\ntemplate <typename ValueType>\nbool Vector<ValueType>::operator <(const Vector& v2) const {\n    return stanfordcpplib::collections::compare(*this, v2) < 0;\n}\n\ntemplate <typename ValueType>\nbool Vector<ValueType>::operator <=(const Vector& v2) const {\n    return stanfordcpplib::collections::compare(*this, v2) <= 0;\n}\n\ntemplate <typename ValueType>\nbool Vector<ValueType>::operator >(const Vector& v2) const {\n    return stanfordcpplib::collections::compare(*this, v2) > 0;\n}\n\ntemplate <typename ValueType>\nbool Vector<ValueType>::operator >=(const Vector& v2) const {\n    return stanfordcpplib::collections::compare(*this, v2) >= 0;\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::checkIndex(int index, int min, int max, const char* prefix) const {\n    if (index < min || index > max) {\n        std::ostringstream out;\n        out << \"Vector::\" << prefix << \": index of \" << index\n            << \" is outside of valid range \";\n        if (isEmpty()) {\n            out << \" (empty vector)\";\n        } else {\n            out << \"[\";\n            if (min < max) {\n                out << min << \"..\" << max;\n            } else if (min == max) {\n                out << min;\n            } // else min > max, no range, empty vector\n            out << \"]\";\n        }\n        error(out.str());\n    }\n}\n\n/*\n * Implementation notes: The , operator\n * ------------------------------------\n * The comma operator works adding the right operand to the vector and\n * then returning the vector by reference so that it is set for the next\n * value in the chain.\n */\ntemplate <typename ValueType>\nVector<ValueType>& Vector<ValueType>::operator ,(const ValueType& value) {\n    add(value);\n    return *this;\n}\n\n/*\n * Implementation notes: << and >>\n * -------------------------------\n * The insertion and extraction operators use the template facilities in\n * strlib.h to read and write generic values in a way that treats strings\n * specially.\n */\ntemplate <typename ValueType>\nstd::ostream& operator <<(std::ostream& os, const Vector<ValueType>& vec) {\n    return stanfordcpplib::collections::writeCollection(os, vec);\n}\n\ntemplate <typename ValueType>\nstd::istream& operator >>(std::istream& is, Vector<ValueType>& vec) {\n    ValueType element;\n    return stanfordcpplib::collections::readCollection(is, vec, element, /* descriptor */ \"Vector::operator >>\");\n}\n\n\n/*\n * Implementation notes: Iterator support\n * --------------------------------------\n * We used the checked iterator type, which requires us to provide information\n * about the full range of values available.\n */\ntemplate <typename ValueType>\ntypename Vector<ValueType>::iterator Vector<ValueType>::begin() {\n    return { &_version, _elements.begin(), _elements };\n}\ntemplate <typename ValueType>\ntypename Vector<ValueType>::const_iterator Vector<ValueType>::begin() const {\n    return { &_version, _elements.begin(), _elements };\n}\ntemplate <typename ValueType>\ntypename Vector<ValueType>::iterator Vector<ValueType>::end() {\n    return { &_version, _elements.end(), _elements };\n}\ntemplate <typename ValueType>\ntypename Vector<ValueType>::const_iterator Vector<ValueType>::end() const {\n    return { &_version, _elements.end(), _elements };\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::updateVersion() {\n    _version.update();\n}\n\n/*\n * Template hash function for vectors.\n * Requires the element type in the Vector to have a hashCode function.\n */\ntemplate <typename ValueType>\nint hashCode(const Vector<ValueType>& vec) {\n    return stanfordcpplib::collections::hashCodeCollection(vec);\n}\n\n/*\n * Function: randomElement\n * Usage: element = randomElement(v);\n * ----------------------------------\n * Returns a randomly chosen element of the given vector.\n * Throws an error if the vector is empty.\n */\ntemplate <typename T>\nconst T& randomElement(const Vector<T>& vec) {\n    return stanfordcpplib::collections::randomElementIndexed(vec);\n}\n\n/*\n * Randomly rearranges the elements of the given vector.\n */\ntemplate <typename T>\nvoid shuffle(Vector<T>& v) {\n    v.shuffle();\n}\n\n#endif // _vector_h\n\n/////////////////////// END code extracted from StanfordCPPLib/collections/vector.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/util/strlib.h ///////////////////////\n/*\n * File: strlib.h\n * --------------\n * This file exports several useful string functions that are not\n * included in the C++ string library.\n * \n * @version 2018/11/14\n * - added std::to_string for bool, char, pointer, and generic template type T\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2018/09/02\n * - added padLeft, padRight\n * @version 2016/11/09\n * - added boolalpha to writeGenericValue (improves bool printing in\n *   collection toString output)\n * @version 2016/10/30\n * - added overloads that take type char instead of string:\n *   stringContains, stringIndexOf, stringJoin, stringLastIndexOf, stringReplace,\n *   stringSplit, toLowerCase, toUpperCase\n * @version 2016/10/26\n * - bug fix for stringLastIndexOf default index arg\n * @version 2016/10/13\n * - modified writeGenericValue, writeQuotedString to return ostream\n * @version 2016/08/03\n * - modified readGenericValue not to throw error() on parse failures\n *   (needed to support idiomatic silent-failing >> operators)\n * @version 2015/10/26\n * - added charToInteger/integerToChar functions\n * @version 2015/08/02\n * - added htmlEncode/Decode functions (not 100% perfect but works for common cases)\n * @version 2014/10/19\n * - alphabetized functions\n * - added several 'inPlace' variants of existing functions that return strings\n * @version 2014/10/08\n * - removed dependency on 'using namespace' statement\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _strlib_h\n#define _strlib_h\n\n#include <iostream>\n#include <sstream>\n#include <string>\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\n/**\n * Returns the string \"true\" if b is true, or \"false\" if b is false.\n */\nstd::string boolToString(bool b);\n\n/**\n * Returns the string \"true\" if b is nonzero, or \"false\" if b is 0.\n */\nstd::string boolToString(int b);\n\n/**\n * Returns an integer equivalent of the given numeric character.\n * For example, charToInteger('3') returns the int 3.\n * If the character is not '0' through '9', throws an error.\n */\nint charToInteger(char c);\n\n/**\n * Returns a single-character string containing the given character.\n * For example, charToString('Q') returns the string \"Q\".\n */\nstd::string charToString(char c);\n\n/**\n * Converts a floating-point number into the corresponding string form.\n * For example, calling <code>doubleToString(23.45)</code> returns\n * the string <code>\"23.45\"</code>.\n * Equivalent to realToString.\n */\nstd::string doubleToString(double d);\n\n/**\n * Returns <code>true</code> if the string <code>str</code> ends with\n * the specified suffix.\n */\nbool endsWith(const std::string& str, const std::string& suffix);\n\n/**\n * Returns <code>true</code> if the string <code>str</code> ends with\n * the specified character.\n */\nbool endsWith(const std::string& str, char suffix);\n\n/**\n * Returns <code>true</code> if <code>s1</code> and <code>s2</code> are\n * equal discounting differences in case.\n */\nbool equalsIgnoreCase(const std::string& s1, const std::string& s2);\n\n/**\n * Converts the given string from an HTML-encoded version to its decoded\n * equivalent; the opposite of htmlEncode. Any escaped HTML character entities\n * will be replaced by their unescaped equivalents.\n * For example, <code>htmlEncode(\"&lt;p class=&quot;abc&quot;&gt;I love you &amp; me&lt;/p&gt;\")\n * returns \"<p class=\\\"abc\\\">I love you & me</p>\".\n */\nstd::string htmlDecode(const std::string& s);\n\n/**\n * Converts the given string into an HTML-encoded equivalent version, with\n * any relevant HTML character entities replaced by escaped equivalents.\n * For example, <code>htmlEncode(\"<p class=\\\"abc\\\">I love you & me</p>\") returns\n * \"&lt;p class=&quot;abc&quot;&gt;I love you &amp; me&lt;/p&gt;\".\n */\nstd::string htmlEncode(const std::string& s);\n\n/**\n * Converts an integer into the corresponding numeric character.\n * For example, calling <code>integerToChar(3)</code> returns\n * the char <code>'3'</code>.\n * @throw ErrorException if the given integer is not a single-digit number from 0-9 inclusive\n */\nchar integerToChar(int n);\n\n/**\n * Converts an integer into the corresponding string of digits.\n * For example, calling <code>integerToString(123)</code> returns\n * the string <code>\"123\"</code>.\n */\nstd::string integerToString(int n, int radix = 10);\n\n/**\n * Converts an integer into the corresponding string of digits.\n * For example, calling <code>longToString(123)</code> returns\n * the string <code>\"123\"</code>.\n */\nstd::string longToString(long n, int radix = 10);\n\n/**\n * Inserts spaces at the start of the given string until it is at least\n * the given length.\n * You can optionally pass a fill character (other than space) as a third parameter.\n *\n * Note that if you are printing strings and want your output to line up\n * at a given number of characters, you may be better served using the built-in\n * C++ ostream manipulators such as setw(int), left, and right, as defined in\n * the iomanip library.\n */\nstd::string padLeft(const std::string& s, int length, char fill = ' ');\n\n/**\n * Inserts spaces at the end of the given string until it is at least\n * the given length.\n * You can optionally pass a fill character (other than space) as a third parameter.\n *\n * Note that if you are printing strings and want your output to line up\n * at a given number of characters, you may be better served using the built-in\n * C++ ostream manipulators such as setw(int), left, and right, as defined in\n * the iomanip library.\n */\nstd::string padRight(const std::string& s, int length);\n\n/**\n * Returns a hexadecimal string for the given pointer, such as \"0x3f0427b\".\n * Returns \"nullptr\" if p is a null pointer.\n */\nstd::string pointerToString(void* p);\n\n/**\n * Converts a floating-point number into the corresponding string form.\n * For example, calling <code>realToString(23.45)</code> returns\n * the string <code>\"23.45\"</code>.\n */\nstd::string realToString(double d);\n\n/**\n * Returns <code>true</code> if the string <code>str</code> starts with\n * the specified prefix.\n */\nbool startsWith(const std::string& str, char prefix);\n\n/**\n * Returns <code>true</code> if the string <code>str</code> starts with\n * the specified character.\n */\nbool startsWith(const std::string& str, const std::string& prefix);\n\n/**\n * Returns true if the given character occurs somewhere in s.\n */\nbool stringContains(const std::string& s, char ch);\n\n/**\n * Returns true if the given substring occurs somewhere in s.\n */\nbool stringContains(const std::string& s, const std::string& substring);\n\n/**\n * Returns the index of the start of the first occurrence of the given character\n * in s, if it occurs in s.  If it does not occur, returns -1.\n * This function is very similar to string.find, but find returns string::npos\n * when the string is not found.\n */\nint stringIndexOf(const std::string& s, char ch, int startIndex = 0);\n\n/**\n * Returns the index of the start of the first occurrence of the given substring\n * in s, if it occurs in s.  If it does not occur, returns -1.\n * This function is very similar to string.find, but find returns string::npos\n * when the string is not found.\n */\nint stringIndexOf(const std::string& s, const std::string& substring, int startIndex = 0);\n\n/**\n * Returns true if the given string is either \"true\" or \"false\".\n */\nbool stringIsBool(const std::string& str);\n\n/**\n * Returns true if the given string could be converted to an real number\n * successfully by the stringToReal function, which will be true if\n * the string has the format of a real number such as \"3.14\" or \"-46\".\n * Equivalent to stringIsReal.\n */\nbool stringIsDouble(const std::string& str);   // alias\n\n/**\n * Returns true if the given string could be converted to an integer\n * successfully by the stringToInteger function, which will be true if\n * the string has the format of an integer such as \"1234\" or \"-8\".\n * Optionally accepts a radix (base) parameter if base-10 is not desired.\n */\nbool stringIsInteger(const std::string& str, int radix = 10);\n\n/**\n * Returns true if the given string could be converted to a long\n * successfully by the stringToLong function, which will be true if\n * the string has the format of an integer such as \"1234\" or \"-8\".\n * Optionally accepts a radix (base) parameter if base-10 is not desired.\n */\nbool stringIsLong(const std::string& str, int radix = 10);\n\n/**\n * Returns true if the given string could be converted to an real number\n * successfully by the stringToReal function, which will be true if\n * the string has the format of a real number such as \"3.14\" or \"-46\".\n */\nbool stringIsReal(const std::string& str);\n\n/**\n * Combines the elements of the given vector into a single string,\n * with the given delimiter separating neighboring elements, and returns it.\n * For example, joining the elements of the vector\n * {\"Hi\", \"there\", \"\", \"Jim\"} with the delimiter '?' returns \"Hi?there??Jim\".\n */\nstd::string stringJoin(const Vector<std::string>& v, char delimiter = '\\n');\n\n/**\n * Combines the elements of the given STL vector into a single string,\n * with the given delimiter separating neighboring elements, and returns it.\n * For example, joining the elements of the vector\n * {\"Hi\", \"there\", \"\", \"Jim\"} with the delimiter \"??\" returns \"Hi??there????Jim\".\n */\nstd::string stringJoin(const Vector<std::string>& v, const std::string& delimiter = \"\\n\");\n\n/**\n * Returns the index of the start of the last occurrence of the given character\n * in s, if it occurs in s.  If it does not occur, returns -1.\n * This function is very similar to string.rfind, but rfind returns string::npos\n * when the string is not found.\n */\nint stringLastIndexOf(const std::string& s, char ch, int startIndex = (int) std::string::npos);\n\n/**\n * Returns the index of the start of the last occurrence of the given substring\n * in s, if it occurs in s.  If it does not occur, returns -1.\n * This function is very similar to string.rfind, but rfind returns string::npos\n * when the string is not found.\n */\nint stringLastIndexOf(const std::string& s, const std::string& substring, int startIndex = (int) std::string::npos);\n\n/**\n * Returns a new string formed by replacing any occurrences of the given 'old'\n * character with the given replacement character in 'str'.\n * Note that this is NOT a regular expression replacement; it looks for the\n * 'old' string literally.  If you want regular expressions, see regexpr.h.\n * The 'inPlace' variant modifies an existing string rather than returning a new one,\n * and returns the number of occurrences of 'old' were replaced.\n */\nstd::string stringReplace(const std::string& str, char old, char replacement, int limit = -1);\n\n/**\n * Returns a new string formed by replacing any occurrences of the given 'old'\n * text with the given replacement text in 'str'.\n * Note that this is NOT a regular expression replacement; it looks for the\n * 'old' string literally.  If you want regular expressions, see regexpr.h.\n * The 'inPlace' variant modifies an existing string rather than returning a new one,\n * and returns the number of occurrences of 'old' were replaced.\n */\nstd::string stringReplace(const std::string& str, const std::string& old, const std::string& replacement, int limit = -1);\n\n/**\n * A variant of stringReplace, except that it accepts the string as a reference\n * and modifies it in-place rather than returning a new string.\n */\nint stringReplaceInPlace(std::string& str, char old, char replacement, int limit = -1);\n\n/**\n * A variant of stringReplace, except that it accepts the string as a reference\n * and modifies it in-place rather than returning a new string.\n */\nint stringReplaceInPlace(std::string& str, const std::string& old, const std::string& replacement, int limit = -1);\n\n/**\n * Returns a vector whose elements are strings formed by splitting the\n * given string 'str' by the given separator character.\n * For example, splitting \"Hi there  Jim!\" on \" \" returns\n * {\"Hi\", \"there\", \"\", \"Jim!\"}.\n */\nVector<std::string> stringSplit(const std::string& str, char delimiter, int limit = -1);\n\n/**\n * Returns a vector whose elements are strings formed by splitting the\n * given string 'str' by the given separator text.\n * For example, splitting \"Hi there  Jim!\" on \" \" returns\n * {\"Hi\", \"there\", \"\", \"Jim!\"}.\n */\nVector<std::string> stringSplit(const std::string& str, const std::string& delimiter, int limit = -1);\n\n/**\n * If str is \"true\", returns the bool value true.\n * If str is \"false\", returns the bool value false.\n * @throw ErrorException if str is any other value than \"true\" or \"false\"\n */\nbool stringToBool(const std::string& str);\n\n/**\n * Converts a single-character string into its corresponding char value.\n * For example, stringToChar(\"hello\") returns the char 'h'.\n * @throw ErrorException if the given string does not contain exactly 1 character\n */\nchar stringToChar(const std::string& str);\n\n/**\n * Converts a string representing a real number into its corresponding\n * value.\n * Equivalent to stringToReal.\n * @throw ErrorException if the string is not a legal floating-point number\n *        or contains extraneous characters other than whitespace\n */\ndouble stringToDouble(const std::string& str);   // alias\n\n/**\n * Converts a string of digits into an integer.\n * The function accepts an optional radix (base); for example,\n * stringToInteger(\"234\", 16) assumes that the string is in base-16 and\n * returns 2*16*16 + 3*16 + 4 = 564.\n * @throw ErrorException if the string is not a legal integer or contains\n *        extraneous characters other than whitespace\n */\nint stringToInteger(const std::string& str, int radix = 10);\n\n/**\n * Converts a string of digits into a long.\n * The function accepts an optional radix (base); for example,\n * stringToLong(\"234\", 16) assumes that the string is in base-16 and\n * returns 2*16*16 + 3*16 + 4 = 564.\n * @throw ErrorException if the string is not a legal long or contains\n *        extraneous characters other than whitespace\n */\nlong stringToLong(const std::string& str, int radix = 10);\n\n/**\n * Converts a string representing a real number into its corresponding\n * value.\n * Equivalent to stringToDouble.\n * @throw ErrorException if the string is not a legal floating-point number or\n * contains extraneous characters other than whitespace\n */\ndouble stringToReal(const std::string& str);\n\n/**\n * Returns a new character in which the given uppercase character has been\n * converted into its lowercase equivalent.\n */\nchar toLowerCase(char ch);\n\n/**\n * Returns a new string in which all uppercase characters have been converted\n * into their lowercase equivalents.\n */\nstd::string toLowerCase(const std::string& str);\n\n/**\n * Modifies the given string in-place such that all uppercase characters have\n * been converted into their lowercase equivalents.\n */\nvoid toLowerCaseInPlace(std::string& str);\n\n/**\n * Returns a new character in which the given lowercase character has been\n * converted into its uppercase equivalent.\n */\nchar toUpperCase(char ch);\n\n/**\n * Returns a new string in which all lowercase characters have been converted\n * into their uppercase equivalents.\n */\nstd::string toUpperCase(const std::string& str);\n\n/**\n * Modifies the given string in-place such that all lowercase characters have\n * been converted into their uppercase equivalents.\n */\nvoid toUpperCaseInPlace(std::string& str);\n\n/**\n * Returns a new string after removing any whitespace characters\n * from the beginning and end of the argument.\n */\nstd::string trim(const std::string& str);\n\n/**\n * Modifies the given string in-place where any whitespace characters\n * from the beginning and end of the argument are removed.\n */\nvoid trimInPlace(std::string& str);\n\n/**\n * Returns a new string after removing any whitespace characters\n * from the end of the argument.\n */\nstd::string trimEnd(const std::string& str);\n\n/**\n * Modifies the given string in-place to remove any whitespace characters\n * from its end.\n */\nvoid trimEndInPlace(std::string& str);\n\n/**\n * Returns a new string after removing any whitespace characters\n * from the beginning of the argument.\n */\nstd::string trimStart(const std::string& str);\n\n/**\n * Modifies the given string in-place to remove removing any whitespace characters\n * from the beginning of it.\n */\nvoid trimStartInPlace(std::string& str);\n\n/**\n * Returns a URL-decoded version of the given string, where any %xx character\n * codes are converted back to the equivalent characters.\n */\nstd::string urlDecode(const std::string& str);\n\n/**\n * Modifies the given string in-place into a URL-decoded version of itself,\n * where any %xx character codes are converted back to the equivalent characters.\n */\nvoid urlDecodeInPlace(std::string& str);\n\n/**\n * Returns a URL-encoded version of the given string, where most non-\n * alphabetic characters are replaced by %xx character codes.\n */\nstd::string urlEncode(const std::string& str);\n\n/**\n * Modifies the given string in-place into a URL-encoded version of itself,\n * where most non- alphabetic characters are replaced by %xx character codes.\n */\nvoid urlEncodeInPlace(std::string& str);\n\n// add to_string overloads for some common types missing from C++ standard\nnamespace std {\n/**\n * String-to-bool conversion function.\n * If str is \"true\", returns the bool value true.\n * If str is \"false\", returns the bool value false.\n * @throw ErrorException if str is any other value than \"true\" or \"false\"\n */\nbool stob(const std::string& str);\n\n/**\n * String-to-char conversion function.\n * Converts a single-character string into its corresponding char value.\n * For example, stringToChar(\"hello\") returns the char 'h'.\n * @throw ErrorException if the given string does not contain exactly 1 character\n */\nchar stoc(const std::string& str);\n\n/**\n * Returns the string \"true\" if b is true, or \"false\" if b is false.\n */\nstd::string to_string(bool b);\n\n/**\n * Returns a single-character string containing the given character.\n * For example, charToString('Q') returns the string \"Q\".\n */\nstd::string to_string(char c);\n\n/**\n * Returns a hexadecimal string for the given pointer, such as \"0x3f0427b\".\n * Returns \"nullptr\" if p is a null pointer.\n */\nstd::string to_string(void* p);\n\n/**\n * Generic to_string function for any type that has an operator <<.\n */\ntemplate <typename T>\nstd::string to_string(const T& value) {\n    std::ostringstream out;\n    out << value;   // if you get an error here, your type might not have a << operator\n    return out.str();\n}\n} // namespace std\n\n#endif // _strlib_h\n\n/////////////////////// END code extracted from StanfordCPPLib/util/strlib.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/util/stringutils.h ///////////////////////\n/*\n * File: stringutils.h\n * -------------------\n * This file contains declarations of utility functions related to strings.\n * Arguably some of this functionality could be moved into strlib.{h,cpp},\n * but it is mostly written to support autograders so it is placed here.\n * \n * @author Marty Stepp\n * @version 2017/10/20\n * - changed string to const string& in all functions\n * @version 2016/11/09\n * - added trimToSize function\n * @since 2014/03/01\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _stringutils_h\n#define _stringutils_h\n\n#include <string>\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\n/**\n * @private\n */\nnamespace stringutils {\nint charsDifferent(const std::string& s1, const std::string& s2);\nstd::string collapseSpaces(const std::string& s);\nVector<std::string> explodeLines(const std::string& s);\nint height(const std::string& s);\nstd::string implode(const Vector<std::string>& v, const std::string& delimiter = \"\\n\");\nstd::string indent(const std::string& s, int spaces);\n\n/*\n * Removes blank lines and collapses multiple spaces into one.\n * Used to facilitate approximate output matching.\n */\nstd::string makeSloppy(const std::string& s);\nstd::string removeBlankLines(const std::string& s);\nstd::string toLowerCase(const std::string& s);\nstd::string trimR(const std::string& s);\nstd::string trimToHeight(const std::string& s, int height, const std::string& suffix = \"...\");\nstd::string trimToSize(const std::string& s, int width, int height, const std::string& suffix = \" ...\");\nstd::string trimToWidth(const std::string& s, int width, const std::string& suffix = \" ...\");\nstd::string stripWhitespace(const std::string& s);\nstd::string truncate(const std::string& s, int length, const std::string& suffix = \" ...\");\nstd::string toPrintable(int ch);\nint width(const std::string& s);\n} // namespace stringutils\n\n#endif // _stringutils_h\n\n/////////////////////// END code extracted from StanfordCPPLib/util/stringutils.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/util/intrange.h ///////////////////////\n/*\n * File: intrange.h\n * ----------------\n * This file exports the <code>IntRange</code> class, which represents an iterable\n * contiguous range of integers that can be processed using a for-each loop.\n * The range is not stored all in memory, so it does not require O(N) space.\n *\n * See intrange.cpp for the implementation of each member.\n *\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2018/08/25\n * - renamed from range.h to intrange.h\n * @version 2018/03/12\n * - initial version\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _intrange_h\n#define _intrange_h\n\n#include <iostream>\n#include <iterator>\n#include <limits>\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\n/**\n * An IntRange is an iterable contiguous range of integers.\n * It can be processed using a for-each loop.\n * The integers are not actually all stored in this object, so it does not\n * require O(N) memory usage.\n */\nclass IntRange {\nprivate:\n    /**\n     * Internal iterator for looping over a range.\n     */\n    class IntRangeIterator : public std::iterator<std::random_access_iterator_tag, int> {\n    private:\n        const IntRange* r;\n        int val;\n\n    public:\n        IntRangeIterator(const IntRange* r, bool end) {\n            this->r = r;\n            this->val = (end ? r->max() + 1 : r->min());\n        }\n\n        IntRangeIterator(const IntRangeIterator& itr)\n            : r(itr.r),\n              val(itr.val) {\n            // empty\n        }\n\n        IntRangeIterator& operator ++() {\n            val++;\n            if (!r->contains(val)) {\n                val = r->max() + 1;\n            }\n            return *this;\n        }\n\n        IntRangeIterator operator ++(int) {\n            IntRangeIterator copy(*this);\n            operator++();\n            return copy;\n        }\n\n        IntRangeIterator& operator --() {\n            val--;\n            return *this;\n        }\n\n        IntRangeIterator operator --(int) {\n            IntRangeIterator copy(*this);\n            operator--();\n            return copy;\n        }\n\n        bool operator ==(const IntRangeIterator& rhs) {\n            return r == rhs.r && val == rhs.val;\n        }\n\n        bool operator !=(const IntRangeIterator& rhs) {\n            return !(*this == rhs);\n        }\n\n        bool operator <(const IntRangeIterator& rhs) {\n            if (r != rhs.r) {\n                error(\"Range Iterator::operator <: Iterators are in different ranges\");\n            }\n            return val < rhs.val;\n        }\n\n        bool operator <=(const IntRangeIterator& rhs) {\n            if (r != rhs.r) {\n                error(\"Range Iterator::operator <=: Iterators are in different ranges\");\n            }\n            return val <= rhs.val;\n        }\n\n        bool operator >(const IntRangeIterator& rhs) {\n            if (r != rhs.r) {\n                error(\"Range Iterator::operator >: Iterators are in different ranges\");\n            }\n            return val > rhs.val;\n        }\n\n        bool operator >=(const IntRangeIterator& rhs) {\n            if (r != rhs.r) {\n                error(\"Range Iterator::operator >=: Iterators are in different ranges\");\n            }\n            return val >= rhs.val;\n        }\n\n        IntRangeIterator operator +(const int& rhs) {\n            return IntRangeIterator(r, val + rhs);\n        }\n\n        IntRangeIterator operator +=(const int& rhs) {\n            val += rhs;\n            return *this;\n        }\n\n        IntRangeIterator operator -(const int& rhs) {\n            return IntRangeIterator(r, val - rhs);\n        }\n\n        IntRangeIterator operator -=(const int& rhs) {\n            val -= rhs;\n            return *this;\n        }\n\n        int operator -(const IntRangeIterator& rhs) {\n            if (r != rhs.r) {\n                error(\"Range Iterator::operator -: Iterators are in different ranges\");\n            }\n            return val - rhs.val;\n        }\n\n        int operator *() {\n            return val;\n        }\n\n        int* operator ->() {\n            return &val;\n        }\n\n        int operator [](int k) {\n            return val + k;\n        }\n    };\n\n    int _min;\n    int _max;\n\n    friend std::istream& operator >>(std::istream& input, IntRange& r);\n\npublic:\n    /**\n     * Constructs a range from 0 (inclusive) of the given length.\n     * Its endpoints are [0 .. length-1].\n     */\n    IntRange(int length = 0);\n\n    /**\n     * Constructs a range from minValue to maxValue (inclusive).\n     */\n    IntRange(int minValue, int maxValue);\n\n    /**\n     * Returns an iterator over the elements of this range.\n     */\n    IntRangeIterator begin() const;\n\n    /**\n     * Returns true if the given integer is within the bounds of this range.\n     */\n    bool contains(int n) const;\n\n    /**\n     * Returns true if the given range is entirely contained within this range.\n     */\n    bool contains(const IntRange& r) const;\n\n    /**\n     * Returns true if this range contains no integers, meaning that its max\n     * is less than its min.\n     * Equivalent to isEmpty.\n     */\n    bool empty() const;\n\n    IntRangeIterator end() const;\n\n//    bool intersects(const Range& r) const;\n\n    /**\n     * Returns true if this range contains no integers, meaning that its max\n     * is less than its min.\n     * Equivalent to empty.\n     */\n    bool isEmpty() const;\n\n    /**\n     * Returns the number of integers in the range.\n     * Equivalent to size.\n     */\n    int length() const;\n\n    /**\n     * Returns the maximum value in the range, inclusive.\n     */\n    int max() const;\n\n    /**\n     * Returns the minimum value in the range.\n     */\n    int min() const;\n\n    /**\n     * Returns the number of integers in the range.\n     * Equivalent to length.\n     */\n    int size() const;\n\n    /**\n     * Returns a string representation of this range,\n     * such as \"[1 .. 10]\".\n     */\n    std::string toString() const;\n};\n\n/**\n * Returns an integer hash code for this range.\n */\nint hashCode(const IntRange& r);\n\n/**\n * Convenience functions for constructing a range.\n * See Range constructor.\n */\nIntRange range(int length = 0);\nIntRange range(int min, int max);\n\n/**\n * Relational operators for comparing ranges.\n * Ranges are ordered by their min values with ties broken by max values.\n */\nbool operator <(const IntRange& r1, const IntRange& r2);\nbool operator <=(const IntRange& r1, const IntRange& r2);\nbool operator ==(const IntRange& r1, const IntRange& r2);\nbool operator !=(const IntRange& r1, const IntRange& r2);\nbool operator >(const IntRange& r1, const IntRange& r2);\nbool operator >=(const IntRange& r1, const IntRange& r2);\n\n/**\n * Writes the given range to the given output stream in its toString format.\n */\nstd::ostream& operator <<(std::ostream& out, const IntRange& r);\n\n/**\n * Reads the given range to the given input stream in its toString format.\n */\nstd::istream& operator >>(std::istream& input, IntRange& r);\n\n\n/////////////////////////////////////////////////////////////////////\n// IntRange2D\n/////////////////////////////////////////////////////////////////////\n\n/**\n * An IntRange2D is an iterable contiguous 2-dimensional range of integers.\n * It can be processed using a for-each loop to emit the range as a series\n * of Point objects in y-major (default) or x-major order.\n * The points are not actually all stored in this object, so it does not\n * require O(WxH) memory usage.\n */\nclass IntRange2D {\nprivate:\n    /**\n     * Internal iterator for looping over a 2D range.\n     */\n    class IntRange2DIterator : public std::iterator<std::input_iterator_tag, Point> {\n    private:\n        const IntRange2D* r;\n        int x;\n        int y;\n\n    public:\n        IntRange2DIterator(const IntRange2D* r, bool end) {\n            this->r = r;\n            if (end) {\n                this->x = r->maxX() + 1;\n                this->y = r->maxY() + 1;\n            } else {\n                this->x = r->minX();\n                this->y = r->minY();\n            }\n        }\n\n        IntRange2DIterator(const IntRange2DIterator& itr)\n            : r(itr.r),\n              x(itr.x),\n              y(itr.y) {\n            // empty\n        }\n\n        IntRange2DIterator& operator ++() {\n            if (r->isYMajor()) {\n                x++;\n                if (x > r->maxX()) {\n                    x = r->minX();\n                    y++;\n                }\n            } else {\n                y++;\n                if (y > r->maxY()) {\n                    y = r->minY();\n                    x++;\n                }\n            }\n            if (!r->contains(x, y)) {\n                x = r->maxX() + 1;\n                y = r->maxY() + 1;\n            }\n            return *this;\n        }\n\n        IntRange2DIterator operator ++(int) {\n            IntRange2DIterator copy(*this);\n            operator++();\n            return copy;\n        }\n\n        IntRange2DIterator& operator --() {\n            if (r->isYMajor()) {\n                x--;\n                if (x < r->minX()) {\n                    x = r->maxX();\n                    y--;\n                }\n            } else {\n                y--;\n                if (y < r->minY()) {\n                    y = r->maxY();\n                    x--;\n                }\n            }\n            return *this;\n        }\n\n        IntRange2DIterator operator --(int) {\n            IntRange2DIterator copy(*this);\n            operator--();\n            return copy;\n        }\n\n        bool operator ==(const IntRange2DIterator& rhs) const {\n            return r == rhs.r && x == rhs.x && y == rhs.y;\n        }\n\n        bool operator !=(const IntRange2DIterator& rhs) const {\n            return !(*this == rhs);\n        }\n\n        bool operator <(const IntRange2DIterator& rhs) const {\n            if (r != rhs.r) {\n                error(\"Range2D Iterator::operator <: Iterators are in different ranges\");\n            }\n            return x < rhs.x || (x == rhs.x && y < rhs.y);\n        }\n\n        bool operator <=(const IntRange2DIterator& rhs) const {\n            if (r != rhs.r) {\n                error(\"Range2D Iterator::operator <=: Iterators are in different ranges\");\n            }\n            return (*this < rhs) || (*this == rhs);\n        }\n\n        bool operator >(const IntRange2DIterator& rhs) const {\n            if (r != rhs.r) {\n                error(\"Range2D Iterator::operator >: Iterators are in different ranges\");\n            }\n            return (rhs < *this);\n        }\n\n        bool operator >=(const IntRange2DIterator& rhs) const {\n            if (r != rhs.r) {\n                error(\"Range2D Iterator::operator >=: Iterators are in different ranges\");\n            }\n            return (*this > rhs) || (*this == rhs);\n        }\n\n        Point operator *() const {\n            return Point(x, y);\n        }\n\n        Point* operator ->() const {\n            return new Point(x, y);\n        }\n    };\n\n    int _minX;\n    int _minY;\n    int _maxX;\n    int _maxY;\n    bool _yMajor;\n\n    friend std::istream& operator >>(std::istream& input, IntRange2D& r);\n\npublic:\n    /**\n     * Constructs a 2D range of the given width and height, default 0.\n     * Its bounds will be [0,0 .. w-1,h-1] inclusive.\n     * The yMajor parameter indicates whether the range will emit its members\n     * in y-major (default) or x-major order.\n     */\n    IntRange2D(int width = 0, int height = 0, bool yMajor = true);\n\n    /**\n     * Constructs a 2D range between the given min/max locations, inclusive.\n     * The yMajor parameter indicates whether the range will emit its members\n     * in y-major (default) or x-major order.\n     */\n    IntRange2D(int minX, int minY, int maxX, int maxY, bool yMajor = true);\n\n    /**\n     * Returns an iterator over the elements of this 2D range.\n     */\n    IntRange2DIterator begin() const;\n\n    /**\n     * Returns true if the given x/y location is contained in this 2D range.\n     */\n    bool contains(int x, int y) const;\n\n    /**\n     * Returns true if the given 2D range is entirely contained in this 2D range.\n     */\n    bool contains(const IntRange2D& r) const;\n\n    /**\n     * Returns true if this range does not contain any integers in one dimension\n     * or the other or both (if max X/Y is less than min X/Y).\n     * Equivalent to isEmpty.\n     */\n    bool empty() const;\n\n    /**\n     * Returns an iterator at the end of the elements of this 2D range.\n     */\n    IntRange2DIterator end() const;\n\n    /**\n     * Returns the range of y-values in this 2D range.\n     * For example, in the range [0,0 .. 4,7], the height is 8.\n     */\n    int height() const;\n\n//    bool intersects(const Range2D& r) const;\n\n    /**\n     * Returns true if this range does not contain any integers in one dimension\n     * or the other or both (if max X/Y is less than min X/Y).\n     * Equivalent to empty.\n     */\n    bool isEmpty() const;\n\n    /**\n     * Returns true if this range should emit its integers in y-major order\n     * as passed to the constructor (default true).\n     */\n    bool isYMajor() const;\n\n    /**\n     * Returns the maximum x-value in this 2D range.\n     */\n    int maxX() const;\n\n    /**\n     * Returns the maximum y-value in this 2D range.\n     */\n    int maxY() const;\n\n    /**\n     * Returns the minimum x-value in this 2D range.\n     */\n    int minX() const;\n\n    /**\n     * Returns the minimum y-value in this 2D range.\n     */\n    int minY() const;\n\n    /**\n     * Returns the total number of integers in this 2D range.\n     * For example, in the range [0,0 .. 4,7], the size is 5x8 = 40.\n     */\n    int size() const;\n\n    /**\n     * Returns the range of x-values in this 2D range.\n     * For example, in the range [0,0 .. 4,7], the height is 5.\n     */\n    int width() const;\n\n    /**\n     * Returns a string representation of this 2D range,\n     * such as \"[0,0 .. 4,7]\".\n     */\n    std::string toString() const;\n};\n\n/**\n * Returns an integer hash code of this 2D range.\n */\nint hashCode(const IntRange2D& r);\n\n/**\n * Convenience function for constructing a 2D range.\n * See Range2D constructors.\n */\nIntRange2D range2d(int width = 0, int height = 0, bool yMajor = false);\n\n/**\n * Convenience function for constructing a 2D range.\n * See Range2D constructors.\n */\nIntRange2D range2d(int minX, int minY, int maxX, int maxY, bool yMajor = false);\n\n/**\n * Relational operators for comparing 2D ranges.\n * Ranges are ordered by their minX values, then minY, then maxX, then maxY.\n */\nbool operator <(const IntRange2D& r1, const IntRange2D& r2);\nbool operator <=(const IntRange2D& r1, const IntRange2D& r2);\nbool operator ==(const IntRange2D& r1, const IntRange2D& r2);\nbool operator !=(const IntRange2D& r1, const IntRange2D& r2);\nbool operator >(const IntRange2D& r1, const IntRange2D& r2);\nbool operator >=(const IntRange2D& r1, const IntRange2D& r2);\n\n/**\n * Writes the given 2D range to the given output stream in its toString format.\n */\nstd::ostream& operator <<(std::ostream& out, const IntRange2D& r);\n\n/**\n * Reads the given 2D range to the given input stream in its toString format.\n */\nstd::istream& operator >>(std::istream& input, IntRange2D& r);\n\n#endif // _intrange_h\n\n/////////////////////// END code extracted from StanfordCPPLib/util/intrange.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/io/filelib.h ///////////////////////\n/*\n * File: filelib.h\n * ---------------\n * This file exports a standardized set of tools for working with\n * files.  The library offers at least some portability across the\n * file systems used in the three supported platforms: Mac OSX,\n * Windows, and Linux.  Directory and search paths are allowed to\n * contain separators in any of the supported styles, which usually\n * makes it possible to use the same code on different platforms.\n * \n * @version 2018/10/23\n * - added getAbsolutePath\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2016/11/12\n * - added fileSize, readEntireStream\n * @version 2016/08/12\n * - added second overload of openFileDialog that accepts path parameter\n * @version 2015/04/12\n * - added promptUserForFile overload without stream parameter\n * @version 2014/10/19\n * - alphabetized function declarations\n * - converted many funcs to take const string& rather than string for efficiency\n * - added listDirectory overload that returns a Vector\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _filelib_h\n#define _filelib_h\n\n#include <iostream>\n#include <fstream>\n#include <string>\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\n/**\n * Creates a new directory for the specified path.  The\n * <code>createDirectory</code> function does not report an error if\n * the directory already exists.  Unlike <code>createDirectoryPath</code>,\n * <code>createDirectory</code> does not create missing directories\n * along the path.\n * @throw ErrorException if some component of <code>path</code> does not exist\n */\nvoid createDirectory(const std::string& path);\n\n/**\n * Creates a new directory for the specified path.   If intermediate\n * components of <code>path</code> do not exist, this function creates\n * them as needed.\n */\nvoid createDirectoryPath(const std::string& path);\n\n/**\n * Adds an extension to a file name if none already exists.  If the\n * <code>extension</code> argument begins with a leading <code>*</code>,\n * any existing extension in <code>filename</code> is replaced by\n * <code>ext</code>.\n */\nstd::string defaultExtension(const std::string& filename, const std::string& ext);\n\n/**\n * Deletes the specified file.\n * @throw ErrorException if the file does not exist or cannot be deleted\n */\nvoid deleteFile(const std::string& filename);\n\n/**\n * Expands a filename into a canonical name for the platform.\n */\nstd::string expandPathname(const std::string& filename);\n\n/**\n * Returns <code>true</code> if the specified file exists.\n */\nbool fileExists(const std::string& filename);\n\n/**\n * Returns the size of the given file in bytes.\n * Returns -1 if the file does not exist or cannot be read.\n */\nint fileSize(const std::string& filename);\n\n/**\n * Returns the canonical name of a file found using a search path.\n * The <code>findOnPath</code> function is similar to\n * <code>openOnPath</code>, except that it doesn't actually\n * return an open stream.  If no matching file is found,\n * <code>findOnPath</code> returns the empty string.\n */\nstd::string findOnPath(const std::string& path, const std::string& filename);\n\n/**\n * Returns an absolute filename for the given file or directory.\n * This converts from, for example, \"temp/foo.txt\" to \"/Users/jsmith12/Documents/temp/foo.txt\".\n */\nstd::string getAbsolutePath(const std::string& path);\n\n/**\n * Returns an absolute filename for the current directory.\n */\nstd::string getCurrentDirectory();\n\n/**\n * Returns the standard directory path separator used on this platform.\n */\nstd::string getDirectoryPathSeparator();\n\n/**\n * Returns the extension of <code>filename</code>.  The extension\n * consists of the separating dot and all subsequent characters.\n * If no dot exists in the final component, <code>getExtension</code>\n * returns the empty string.  These semantics ensure that concatenating\n * the root and the extension always returns the original filename.\n */\nstd::string getExtension(const std::string& filename);\n\n/**\n * Returns all but the last component of a path name.  The components\n * of the path name can be separated by any of the directory path\n * separators (forward or reverse slashes).  The special cases are\n * illustrated by the following examples:\n *\n *<pre>\n *    getHead(\"a/b\")  = \"a\"     getTail(\"a/b\")   = \"b\"\n *    getHead(\"a\")    = \"\"      getTail(\"a\")     = \"a\"\n *    getHead(\"/a\")   = \"/\"     getTail(\"/a\")    = \"a\"\n *    getHead(\"/\")    = \"/\"     getTail(\"/\")     = \"\"\n *</pre>\n */\nstd::string getHead(const std::string& filename);\n\n/**\n * Returns the root of <code>filename</code>.  The root consists\n * of everything in <code>filename</code> up to the last dot and\n * the subsequent extension.  If no dot appears in the final component\n * of the filename, <code>getRoot</code> returns the entire name.\n */\nstd::string getRoot(const std::string& filename);\n\n/**\n * Returns the standard search path separator used on this platform.\n */\nstd::string getSearchPathSeparator();\n\n/**\n * Returns the last component of a path name.  The components of the\n * path name can be separated by any of the directory path separators\n * (forward or reverse slashes).  For details on the interpretation of\n * special cases, see the comments for the <code>getHead</code> function.\n */\nstd::string getTail(const std::string& filename);\n\n/**\n * Returns the operating system's \"temp\" folder.\n * Can be useful if your program needs to store temporary files.\n */\nstd::string getTempDirectory();\n\n/**\n * Returns <code>true</code> if the specified file is a directory.\n */\nbool isDirectory(const std::string& filename);\n\n/**\n * Returns <code>true</code> if the specified file is a regular file,\n * not a symbolic link or directory.\n */\nbool isFile(const std::string& filename);\n\n/**\n * Returns <code>true</code> if the specified file is a symbolic link.\n */\nbool isSymbolicLink(const std::string& filename);\n\n/**\n * Adds an alphabetized list of the files in the specified directory\n * to the string vector <code>list</code>.  This list excludes the\n * names <code>.</code> and <code>..</code> entries.\n */\nvoid listDirectory(const std::string& path, Vector<std::string>& list);\n\n/**\n * Adds an alphabetized list of the files in the specified directory\n * to the STL string vector <code>list</code>.  This list excludes the\n * names <code>.</code> and <code>..</code> entries.\n */\nvoid listDirectory(const std::string& path, Vector<std::string>& list);\n\n/**\n * Adds an alphabetized list of the files in the specified directory\n * to a vector that is returned.  This list excludes the\n * names <code>.</code> and <code>..</code> entries.\n */\nVector<std::string> listDirectory(const std::string& path);\n\n/**\n * Determines whether the filename matches the specified pattern.  The\n * pattern string is interpreted in much the same way that a Unix shell\n * expands filenames and supports the following wildcard options:\n *\n *<pre>\n *    ?      Matches any single character\n *    *      Matches any sequence of characters\n *    [...]  Matches any of the specified characters\n *    [^...] Matches any character <i>except</i> the specified ones\n *</pre>\n *\n * The last two options allow a range of characters to be specified in the\n * form <code>a-z</code>.\n */\nbool matchFilenamePattern(const std::string& filename, const std::string& pattern);\n\n/**\n * Opens the file input stream <code>stream</code> using the specified\n * filename.  This function is similar to the <code>open</code>\n * method of the stream classes, but uses a C++ <code>string</code>\n * object instead of the older C-style string.  If the operation\n * succeeds, <code>openFile</code> returns <code>true</code>;\n * if it fails, <code>openFile</code> sets the failure flag in the\n * stream and returns <code>false</code>.\n */\nbool openFile(std::ifstream& stream, const std::string& filename);\n\n/**\n * Opens the file output stream <code>stream</code> using the specified\n * filename.  This function is similar to the <code>open</code>\n * method of the stream classes, but uses a C++ <code>string</code>\n * object instead of the older C-style string.  If the operation\n * succeeds, <code>openFile</code> returns <code>true</code>;\n * if it fails, <code>openFile</code> sets the failure flag in the\n * stream and returns <code>false</code>.\n */\nbool openFile(std::ofstream& stream, const std::string& filename);\n\n/**\n * Opens a dialog that allows the user to choose a file to read.\n * The dialog begins in the current directory.\n */\nstd::string openFileDialog(std::ifstream& stream);\n\n/**\n * Opens a dialog that allows the user to choose a file to read.\n * The <code>title</code> parameter is displayed in the dialog title.\n * The dialog begins in the current directory.\n */\nstd::string openFileDialog(std::ifstream& stream,\n                           const std::string& title);\n\n/**\n * Opens a dialog that allows the user to choose a file to read.\n * The <code>title</code> parameter is displayed in the dialog title.\n * The <code>path</code> parameter is used to set the working directory.\n */\nstd::string openFileDialog(std::ifstream& stream,\n                           const std::string& title,\n                           const std::string& path);\n\n/**\n * Opens a dialog that allows the user to choose a file to write.\n * The dialog begins in the current directory.\n */\nstd::string openFileDialog(std::ofstream& stream);\n\n/**\n * Opens a dialog that allows the user to choose a file to write.\n * The <code>title</code> parameter is displayed in the dialog title.\n * The dialog begins in the current directory.\n */\nstd::string openFileDialog(std::ofstream& stream,\n                           const std::string& title);\n\n/**\n * Opens a dialog that allows the user to choose a file to write.\n * The <code>title</code> parameter is displayed in the dialog title.\n * The <code>path</code> parameter is used to set the working directory.\n */\nstd::string openFileDialog(std::ofstream& stream,\n                           const std::string& title,\n                           const std::string& path);\n\n/**\n * Opens a dialog that allows the user to choose a file name to read or write.\n * The <code>title</code> parameter is displayed in the dialog title.\n * The <code>path</code> parameter is used to set the working directory.\n * If the <code>path</code> is omitted, the dialog begins in the current directory.\n */\nstd::string openFileDialog(const std::string& title = \"Open File ...\",\n                           const std::string& path = \"\");\n\n/**\n * Opens a file to read using a search path.  If <code>openOnPath</code>\n * is successful, it returns the first path name on the search path\n * for which <code>stream.open</code> succeeds.  The <code>path</code>\n * argument consists of a list of directories that are prepended to the\n * filename, unless <code>filename</code> begins with an absolute\n * directory marker, such as <code>/</code> or <code>~</code>.\n * The directories in the search path may be separated either\n * by colons (Unix or Mac OS) or semicolons (Windows).  If the file\n * cannot be opened, the failure bit is set in the <code>stream</code>\n * parameter, and the <code>openOnPath</code> function returns the\n * empty string.\n */\nstd::string openOnPath(std::ifstream& stream,\n                       const std::string& path,\n                       const std::string& filename);\n\n/**\n * Opens a file to write using a search path.  If <code>openOnPath</code>\n * is successful, it returns the first path name on the search path\n * for which <code>stream.open</code> succeeds.  The <code>path</code>\n * argument consists of a list of directories that are prepended to the\n * filename, unless <code>filename</code> begins with an absolute\n * directory marker, such as <code>/</code> or <code>~</code>.\n * The directories in the search path may be separated either\n * by colons (Unix or Mac OS) or semicolons (Windows).  If the file\n * cannot be opened, the failure bit is set in the <code>stream</code>\n * parameter, and the <code>openOnPath</code> function returns the\n * empty string.\n */\nstd::string openOnPath(std::ofstream& stream,\n                       const std::string& path,\n                       const std::string& filename);\n\n/**\n * Asks the user for the name of a file to read.\n * The file is opened using the reference parameter <code>stream</code>.\n * The function returns the name of the file.\n * If the requested file cannot be opened, the user is given additional chances\n * to type a valid file name.\n *\n * The optional <code>prompt</code> argument provides an input prompt\n * for the user.\n *\n * The also optional <code>reprompt</code> argument provides an output message\n * displayed each time if the user types a file that is not found.\n * If no value is passed, defaults to, \"Unable to open that file.  Try again.\".\n */\nstd::string promptUserForFile(std::ifstream& stream,\n                              const std::string& prompt = \"\",\n                              const std::string& reprompt = \"\");\n\n/**\n * Asks the user for the name of a file to read.\n * The file is opened using the reference parameter <code>stream</code>.\n * The function returns the name of the file.\n * If the requested file cannot be opened, the user is given additional chances\n * to type a valid file name.\n *\n * The optional <code>prompt</code> argument provides an input prompt\n * for the user.\n *\n * The also optional <code>reprompt</code> argument provides an output message\n * displayed each time if the user types a file that is not found.\n * If no value is passed, defaults to, \"Unable to open that file.  Try again.\".\n */\nstd::string promptUserForFile(std::ofstream& stream,\n                              const std::string& prompt = \"\",\n                              const std::string& reprompt = \"\");\n\n/**\n * Asks the user for the name of a file to read.\n * The function returns the name of the file.\n * If the requested file cannot be opened, the user is given additional chances\n * to type a valid file name.\n *\n * The optional <code>prompt</code> argument provides an input prompt\n * for the user.\n *\n * The also optional <code>reprompt</code> argument provides an output message\n * displayed each time if the user types a file that is not found.\n * If no value is passed, defaults to, \"Unable to open that file.  Try again.\".\n */\nstd::string promptUserForFile(const std::string& prompt = \"\",\n                              const std::string& reprompt = \"\");\n\n/**\n * Reads the entire contents of the specified input stream into the\n * string vector <code>lines</code>.  The client is responsible for\n * opening and closing the stream.  The vector can be either an STL\n * <code>vector</code> or a <code>Vector</code> as defined in the\n * Stanford C++ libraries.\n */\nvoid readEntireFile(std::istream& is, Vector<std::string>& lines);\n\n/**\n * Reads the entire contents of the specified input stream into the\n * string STL vector <code>lines</code>.  The client is responsible for\n * opening and closing the stream.  The vector can be either an STL\n * <code>vector</code> or a <code>Vector</code> as defined in the\n * Stanford C++ libraries.\n */\nvoid readEntireFile(std::istream& is, Vector<std::string>& lines);\n\n/**\n * An overload of readEntireFile that just returns the whole file as a very\n * long single string, rather than a vector of lines.\n * @throw ErrorException if the file is not found or cannot be read.\n */\nstd::string readEntireFile(const std::string& filename);\n\n/**\n * An overload of readEntireFile that just reads the whole file as a very\n * long single string, rather than a vector of lines.\n *\n * This version fills an output reference with the text read.\n * Returns true if the read was successful or false if the file was not found\n * or unable to be opened for reading.\n */\nbool readEntireFile(const std::string& filename, std::string& out);\n\n/**\n * Reads the contents of the given stream until its end and returns them as\n * a string.\n */\nstd::string readEntireStream(std::istream& input);\n\n/**\n * Reads the contents of the given stream until its end and stores them\n * in the given string 'out' by reference.\n */\nvoid readEntireStream(std::istream& input, std::string& out);\n\n/**\n * Renames a file.\n * @throw ErrorException if the old file does not exist, cannot be read,\n *        the new file name already exists,\n *        or the old file cannot otherwise be renamed to the new file name\n */\nvoid renameFile(const std::string& oldname, const std::string& newname);\n\n/**\n * Moves the given input stream back to its beginning, so that it can\n * be read again from start to finish.\n */\nvoid rewindStream(std::istream& input);\n\n/**\n * Changes the current directory to the specified path.\n */\nvoid setCurrentDirectory(const std::string& path);\n\n/**\n * Opens the given file and writes the given text into it.\n * Normally this function replaces any previous contents of the file, but\n * if the optional 'append' parameter is passed, the given text is added\n * at the end of the file, retaining any previous contents.\n * Returns true if the write was successful and false if the file was unable\n * to be opened for writing.\n */\nbool writeEntireFile(const std::string& filename,\n                     const std::string& text,\n                     bool append = false);\n\n/**\n * Platform-dependent functions that differ by operating system.\n * @private\n */\nnamespace platform {\n    std::string file_openFileDialog(const std::string& title, const std::string& mode, const std::string& path);\n    void filelib_createDirectory(const std::string& path);\n    void filelib_deleteFile(const std::string& path);\n    std::string filelib_expandPathname(const std::string& filename);\n    bool filelib_fileExists(const std::string& filename);\n    std::string filelib_getAbsolutePath(const std::string& path);\n    std::string filelib_getCurrentDirectory();\n    std::string filelib_getDirectoryPathSeparator();\n    std::string filelib_getSearchPathSeparator();\n    std::string filelib_getTempDirectory();\n    bool filelib_isDirectory(const std::string& filename);\n    bool filelib_isFile(const std::string& filename);\n    bool filelib_isSymbolicLink(const std::string& filename);\n    void filelib_listDirectory(const std::string& path, Vector<std::string>& list);\n    void filelib_setCurrentDirectory(const std::string& path);\n}\n\n#endif // _filelib_h\n\n/////////////////////// END code extracted from StanfordCPPLib/io/filelib.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/collections/deque.h ///////////////////////\n/*\n * File: deque.h\n * -------------\n * This file exports the <code>Deque</code> class, a collection\n * in which values can be added and removed from the front or back.\n * It combines much of the functionality of a stack and a queue.\n * \n * @version 2019/04/09\n * - renamed private members with underscore naming scheme for consistency\n * @version 2019/02/04\n * - changed internal implementation to wrap std collections\n * @version 2017/11/14\n * - added iterator version checking support\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * @version 2016/09/22\n * - added constructor support for std initializer_list usage, such as {1, 2, 3}\n * @version 2016/08/04\n * - fixed operator >> to not throw errors\n * @version 2015/07/05\n * - using global hashing functions rather than global variables\n * @version 2014/10/29\n * - added comparison operators ==, !=, <, etc.\n * @since 2014/10/29\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _deque_h\n#define _deque_h\n\n#include <deque>\n#include <initializer_list>\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\n/*\n * Class: Deque<ValueType>\n * -----------------------\n * This class models a linear structure called a <b><i>deque</i></b>\n * in which values can be added and removed at either end.\n * This discipline allows first-in/first-out (FIFO) and/or\n * last-in/first-out (LIFO) behavior. That is the defining\n * feature of deques.\n */\ntemplate <typename ValueType>\nclass Deque {\npublic:\n    /*\n     * Constructor: Deque\n     * Usage: Deque<ValueType> deque;\n     * ------------------------------\n     * Initializes a new empty deque.\n     */\n    Deque() = default;\n\n    /*\n     * Constructor: Deque\n     * Usage: Deque<ValueType> queue {1, 2, 3};\n     * ----------------------------------------\n     * Initializes a new deque that stores the given elements from front-back.\n     */\n    Deque(std::initializer_list<ValueType> list);\n\n    /*\n     * Destructor: ~Deque\n     * ------------------\n     * Frees any heap storage associated with this deque.\n     */\n    virtual ~Deque() = default;\n    \n    /*\n     * Method: add\n     * Usage: deque.add(value);\n     * ------------------------\n     * Adds <code>value</code> to the end of the deque.\n     * A synonym for the enqueueBack method.\n     */\n    void add(const ValueType& value);\n    void addBack(const ValueType& value);\n    void addFront(const ValueType& value);\n\n    /*\n     * Method: back\n     * Usage: ValueType last = deque.back();\n     * -------------------------------------\n     * Returns the last value in the deque by reference.\n     */\n    const ValueType& back() const;\n\n    /*\n     * Method: clear\n     * Usage: deque.clear();\n     * ---------------------\n     * Removes all elements from the deque.\n     */\n    void clear();\n    \n    /*\n     * Method: dequeue\n     * Usage: ValueType first = deque.dequeue();\n     * -----------------------------------------\n     * Removes and returns the first item in the deque.\n     * A synonym for the dequeueFront method.\n     */\n    ValueType dequeue();\n    ValueType dequeueBack();\n    ValueType dequeueFront();\n\n    /*\n     * Method: enqueue\n     * Usage: deque.enqueue(value);\n     * ----------------------------\n     * Adds <code>value</code> to the end of the deque.\n     * A synonym for the enqueueBack method.\n     */\n    void enqueue(const ValueType& value);\n    void enqueueBack(const ValueType& value);\n    void enqueueFront(const ValueType& value);\n    \n    /*\n     * Method: equals\n     * Usage: if (deque.equals(deque2)) ...\n     * ------------------------------------\n     * Compares two deques for equality.\n     * Returns <code>true</code> if this deque contains exactly the same\n     * values as the given other deque.\n     * Identical in behavior to the == operator.\n     */\n    bool equals(const Deque<ValueType>& deque2) const;\n    \n    /*\n     * Method: front\n     * Usage: ValueType first = deque.front();\n     * ---------------------------------------\n     * Returns the first value in the deque by reference.\n     */\n    const ValueType& front() const;\n\n    /*\n     * Method: isEmpty\n     * Usage: if (deque.isEmpty()) ...\n     * -------------------------------\n     * Returns <code>true</code> if the deque contains no elements.\n     */\n    bool isEmpty() const;\n    \n    /*\n     * Method: peek\n     * Usage: ValueType first = deque.peek();\n     * --------------------------------------\n     * Returns the first value in the deque, without removing it.  For\n     * compatibility with the STL classes, this method is also exported\n     * under the name <code>front</code>, in which case it returns the\n     * value by reference.\n     * A synonym for the peekFront method.\n     */\n    const ValueType& peek() const;\n    const ValueType& peekBack() const;\n    const ValueType& peekFront() const;\n\n    /*\n     * Method: remove\n     * Usage: ValueType first = deque.remove();\n     * ----------------------------------------\n     * Removes and returns the first item in the deque.\n     * A synonym for the dequeue method.\n     */\n    ValueType remove();\n    ValueType removeBack();\n    ValueType removeFront();\n\n    /*\n     * Method: size\n     * Usage: int n = deque.size();\n     * ----------------------------\n     * Returns the number of values in the deque.\n     */\n    int size() const;\n    \n    /*\n     * Returns an STL deque object with the same elements as this Deque.\n     */\n    std::deque<ValueType> toStlDeque() const;\n    \n    /*\n     * Method: toString\n     * Usage: string str = deque.toString();\n     * -------------------------------------\n     * Converts the deque to a printable string representation.\n     */\n    std::string toString() const;\n\n    /*\n     * Operators: ==, !=, <, >, <=, >=\n     * Usage: if (deque1 == deque2) ...\n     * Usage: if (deque1 < deque2) ...\n     * ...\n     * --------------------------------\n     * Relational operators to compare two deques.\n     * The ==, != operators require that the ValueType has a == operator\n     * so that the elements can be tested for equality.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     */\n    bool operator ==(const Deque& deque2) const;\n    bool operator !=(const Deque& deque2) const;\n    bool operator <(const Deque& deque2) const;\n    bool operator <=(const Deque& deque2) const;\n    bool operator >(const Deque& deque2) const;\n    bool operator >=(const Deque& deque2) const;\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\n    template <typename T>\n    friend int hashCode(const Deque<T>& s);\n    \n    template <typename T>\n    friend std::ostream& operator <<(std::ostream& os, const Deque<T>& deque);\n\nprivate:\n    // Instance variables\n    std::deque<ValueType> _elements;\n    stanfordcpplib::collections::VersionTracker _version;\n\npublic:\n\n    using iterator = stanfordcpplib::collections::CheckedIterator<typename std::deque<ValueType>::iterator>;\n    using const_iterator = stanfordcpplib::collections::CheckedIterator<typename std::deque<ValueType>::const_iterator>;\n\n    iterator begin();\n    iterator end();\n    const_iterator begin() const;\n    const_iterator end() const;\n};\n\ntemplate <typename ValueType>\nDeque<ValueType>::Deque(std::initializer_list<ValueType> list) : _elements(list) {\n\n}\n\ntemplate <typename ValueType>\nvoid Deque<ValueType>::add(const ValueType& value) {\n    enqueue(value);\n}\n\ntemplate <typename ValueType>\nvoid Deque<ValueType>::addBack(const ValueType& value) {\n    enqueueBack(value);\n}\n\ntemplate <typename ValueType>\nvoid Deque<ValueType>::addFront(const ValueType& value) {\n    enqueueFront(value);\n}\n\ntemplate <typename ValueType>\nconst ValueType& Deque<ValueType>::back() const {\n    if (isEmpty()) {\n        error(\"Deque::back: Attempting to read back of an empty deque\");\n    }\n    return _elements.back();\n}\n\ntemplate <typename ValueType>\nvoid Deque<ValueType>::clear() {\n    _elements.clear();\n    _version.update();\n}\n\n/*\n * Implementation notes: dequeue, peek\n * -----------------------------------\n * These methods must check for an empty deque and report an error\n * if there is no first element.\n */\ntemplate <typename ValueType>\nValueType Deque<ValueType>::dequeue() {\n    return dequeueFront();\n}\n\ntemplate <typename ValueType>\nValueType Deque<ValueType>::dequeueBack() {\n    if (isEmpty()) {\n        error(\"Deque::dequeueBack: Attempting to dequeue from an empty deque\");\n    }\n    auto result = _elements.back();\n    _elements.pop_back();\n    _version.update();\n    return result;\n}\n\ntemplate <typename ValueType>\nValueType Deque<ValueType>::dequeueFront() {\n    if (isEmpty()) {\n        error(\"Deque::dequeueFront: Attempting to dequeue from an empty deque\");\n    }\n    auto result = _elements.front();\n    _elements.pop_front();\n    _version.update();\n    return result;\n}\n\ntemplate <typename ValueType>\nvoid Deque<ValueType>::enqueue(const ValueType& value) {\n    enqueueBack(value);\n}\n\ntemplate <typename ValueType>\nvoid Deque<ValueType>::enqueueBack(const ValueType& value) {\n    _elements.push_back(value);\n    _version.update();\n}\n\ntemplate <typename ValueType>\nvoid Deque<ValueType>::enqueueFront(const ValueType& value) {\n    _elements.push_front(value);\n    _version.update();\n}\n\ntemplate <typename ValueType>\nbool Deque<ValueType>::equals(const Deque<ValueType>& deque2) const {\n    return _elements == deque2._elements;\n}\n\ntemplate <typename ValueType>\nconst ValueType& Deque<ValueType>::front() const {\n    if (isEmpty()) {\n        error(\"Deque::front: Attempting to read front of an empty deque\");\n    }\n    return _elements.front();\n}\n\ntemplate <typename ValueType>\nbool Deque<ValueType>::isEmpty() const {\n    return _elements.empty();\n}\n\ntemplate <typename ValueType>\nconst ValueType& Deque<ValueType>::peek() const {\n    return peekFront();\n}\n\ntemplate <typename ValueType>\nconst ValueType& Deque<ValueType>::peekBack() const {\n    if (isEmpty()) {\n        error(\"Deque::peekBack: Attempting to peek at an empty deque\");\n    }\n    return back();\n}\n\ntemplate <typename ValueType>\nconst ValueType& Deque<ValueType>::peekFront() const {\n    if (isEmpty()) {\n        error(\"Deque::peekFront: Attempting to peek at an empty deque\");\n    }\n    return front();\n}\n\ntemplate <typename ValueType>\nValueType Deque<ValueType>::remove() {\n    return dequeue();\n}\n\ntemplate <typename ValueType>\nValueType Deque<ValueType>::removeBack() {\n    if (isEmpty()) {\n        error(\"Deque::removeBack: Attempting to remove from an empty deque\");\n    }\n    return dequeueBack();\n}\n\ntemplate <typename ValueType>\nValueType Deque<ValueType>::removeFront() {\n    if (isEmpty()) {\n        error(\"Deque::removeFront: Attempting to remove from an empty deque\");\n    }\n    return dequeueFront();\n}\n\ntemplate <typename ValueType>\nint Deque<ValueType>::size() const {\n    return _elements.size();\n}\n\ntemplate <typename ValueType>\nstd::deque<ValueType> Deque<ValueType>::toStlDeque() const {\n    return _elements;\n}\n\ntemplate <typename ValueType>\nstd::string Deque<ValueType>::toString() const {\n    std::ostringstream os;\n    os << *this;\n    return os.str();\n}\n\ntemplate <typename ValueType>\nbool Deque<ValueType>::operator ==(const Deque& deque2) const {\n    return equals(deque2);\n}\n\ntemplate <typename ValueType>\nbool Deque<ValueType>::operator !=(const Deque& deque2) const {\n    return !equals(deque2);\n}\n\ntemplate <typename ValueType>\nbool Deque<ValueType>::operator <(const Deque& deque2) const {\n    return stanfordcpplib::collections::compare(_elements, deque2._elements) < 0;\n}\n\ntemplate <typename ValueType>\nbool Deque<ValueType>::operator <=(const Deque& deque2) const {\n    return stanfordcpplib::collections::compare(_elements, deque2._elements) <= 0;\n}\n\ntemplate <typename ValueType>\nbool Deque<ValueType>::operator >(const Deque& deque2) const {\n    return stanfordcpplib::collections::compare(_elements, deque2._elements) > 0;\n}\n\ntemplate <typename ValueType>\nbool Deque<ValueType>::operator >=(const Deque& deque2) const {\n    return stanfordcpplib::collections::compare(_elements, deque2._elements) >= 0;\n}\n\ntemplate <typename ValueType>\nstd::ostream& operator <<(std::ostream& os, const Deque<ValueType>& deque) {\n    return stanfordcpplib::collections::writeCollection(os, deque);\n}\n\ntemplate <typename ValueType>\nstd::istream& operator >>(std::istream& is, Deque<ValueType>& deque) {\n    ValueType element;\n    return stanfordcpplib::collections::readCollection(is, deque, element, /* descriptor */ \"Deque::operator >>\");\n}\n\ntemplate <typename ValueType>\ntypename Deque<ValueType>::iterator Deque<ValueType>::begin() {\n    return { &_version, _elements.begin(), _elements };\n}\ntemplate <typename ValueType>\ntypename Deque<ValueType>::const_iterator Deque<ValueType>::begin() const {\n    return { &_version, _elements.begin(), _elements };\n}\n\ntemplate <typename ValueType>\ntypename Deque<ValueType>::iterator Deque<ValueType>::end() {\n    return { &_version, _elements.end(), _elements };\n}\ntemplate <typename ValueType>\ntypename Deque<ValueType>::const_iterator Deque<ValueType>::end() const {\n    return { &_version, _elements.end(), _elements };\n}\n\n/*\n * Template hash function for deques.\n * Requires the element type in the deque to have a hashCode function.\n */\ntemplate <typename T>\nint hashCode(const Deque<T>& deq) {\n    return stanfordcpplib::collections::hashCodeCollection(deq);\n}\n\n#endif // _deque_h\n\n/////////////////////// END code extracted from StanfordCPPLib/collections/deque.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/collections/queue.h ///////////////////////\n/*\n * File: queue.h\n * -------------\n * This file exports the <code>Queue</code> class, a collection\n * in which values are ordinarily processed in a first-in/first-out\n * (FIFO) order.\n * \n * @version 2019/04/09\n * - renamed private members with underscore naming scheme for consistency\n * @version 2019/02/04\n * - changed internal implementation to wrap std collections\n * @version 2018/01/23\n * - fixed bad reference bug on queue.enqueue(queue.peek())\n * @version 2017/11/14\n * - added iterator version checking support\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * - added iterators begin(), end()\n * @version 2016/09/22\n * - optimized equals, ==, != to avoid deep-copy\n * @version 2016/08/10\n * - added constructor support for std initializer_list usage, such as {1, 2, 3}\n * @version 2016/08/04\n * - fixed operator >> to not throw errors\n * @version 2015/07/05\n * - using global hashing functions rather than global variables\n * @version 2014/11/13\n * - added comparison operators ==, !=, <, etc.\n * - added add() method as synonym for enqueue()\n * - added remove() method as synonym for dequeue()\n * - added template hashCode function\n * - optimized some functions (operator <<, toStlQueue) to avoid making unneeded deep copy\n * @version 2014/10/10\n * - removed dependency on 'using namespace' statement\n * - removed usage of __foreach macro\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _queue_h\n#define _queue_h\n\n#include <initializer_list>\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\n/*\n * Class: Queue<ValueType>\n * -----------------------\n * This class models a linear structure called a <b><i>queue</i></b>\n * in which values are added at one end and removed from the other.\n * This discipline gives rise to a first-in/first-out behavior (FIFO)\n * that is the defining feature of queues.\n */\ntemplate <typename ValueType>\nclass Queue {\npublic:\n    /*\n     * Constructor: Queue\n     * Usage: Queue<ValueType> queue;\n     * ------------------------------\n     * Initializes a new empty queue.\n     */\n    Queue() = default;\n\n    /*\n     * Constructor: Queue\n     * Usage: Queue<ValueType> queue {1, 2, 3};\n     * ----------------------------------------\n     * Initializes a new queue that stores the given elements from front-back.\n     */\n    Queue(std::initializer_list<ValueType> list);\n\n    /*\n     * Destructor: ~Queue\n     * ------------------\n     * Frees any heap storage associated with this queue.\n     */\n    virtual ~Queue() = default;\n    \n    /*\n     * Method: add\n     * Usage: queue.add(value);\n     * ------------------------\n     * Adds <code>value</code> to the end of the queue.\n     * A synonym for the enqueue method.\n     */\n    void add(const ValueType& value);\n\n    /*\n     * Method: back\n     * Usage: ValueType last = queue.back();\n     * -------------------------------------\n     * Returns the last value in the queue by reference.\n     */\n    const ValueType& back() const;\n\n    /*\n     * Method: clear\n     * Usage: queue.clear();\n     * ---------------------\n     * Removes all elements from the queue.\n     */\n    void clear();\n    \n    /*\n     * Method: dequeue\n     * Usage: ValueType first = queue.dequeue();\n     * -----------------------------------------\n     * Removes and returns the first item in the queue.\n     */\n    ValueType dequeue();\n\n    /*\n     * Method: enqueue\n     * Usage: queue.enqueue(value);\n     * ----------------------------\n     * Adds <code>value</code> to the end of the queue.\n     */\n    void enqueue(const ValueType& value);\n    \n    /*\n     * Method: equals\n     * Usage: if (queue.equals(queue2)) ...\n     * ------------------------------------\n     * Compares two queues for equality.\n     * Returns <code>true</code> if this queue contains exactly the same\n     * values as the given other queue.\n     * Identical in behavior to the == operator.\n     */\n    bool equals(const Queue<ValueType>& queue2) const;\n    \n    /*\n     * Method: front\n     * Usage: ValueType first = queue.front();\n     * ---------------------------------------\n     * Returns the first value in the queue by reference.\n     */\n    const ValueType& front() const;\n\n    /*\n     * Method: isEmpty\n     * Usage: if (queue.isEmpty()) ...\n     * -------------------------------\n     * Returns <code>true</code> if the queue contains no elements.\n     */\n    bool isEmpty() const;\n    \n    /*\n     * Method: peek\n     * Usage: ValueType first = queue.peek();\n     * --------------------------------------\n     * Returns the first value in the queue, without removing it.  For\n     * compatibility with the STL classes, this method is also exported\n     * under the name <code>front</code>, in which case it returns the\n     * value by reference.\n     */\n    const ValueType& peek() const;\n\n    /*\n     * Method: remove\n     * Usage: ValueType first = queue.remove();\n     * ----------------------------------------\n     * Removes and returns the first item in the queue.\n     * A synonym for the dequeue method.\n     */\n    ValueType remove();\n\n    /*\n     * Method: size\n     * Usage: int n = queue.size();\n     * ----------------------------\n     * Returns the number of values in the queue.\n     */\n    int size() const;\n\n    /*\n     * Method: toString\n     * Usage: string str = queue.toString();\n     * -------------------------------------\n     * Converts the queue to a printable string representation.\n     */\n    std::string toString() const;\n\n    /*\n     * Operator: ==\n     * Usage: queue1 == queue2\n     * -------------------\n     * Returns <code>true</code> if <code>queue1</code> and <code>queue2</code>\n     * contain the same elements.\n     */\n    bool operator ==(const Queue& queue2) const;\n\n    /*\n     * Operator: !=\n     * Usage: queue1 != queue2\n     * -------------------\n     * Returns <code>true</code> if <code>queue1</code> and <code>queue2</code>\n     * do not contain the same elements.\n     */\n    bool operator !=(const Queue& queue2) const;\n\n    /*\n     * Operators: <, >, <=, >=\n     * Usage: queue1 < queue2 ...\n     * --------------------------\n     * Relational operators to compare two queues.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     */\n    bool operator <(const Queue& queue2) const;\n    bool operator <=(const Queue& queue2) const;\n    bool operator >(const Queue& queue2) const;\n    bool operator >=(const Queue& queue2) const;\n\n    template <typename T>\n    friend int hashCode(const Queue<T>& s);\n    \n    template <typename T>\n    friend std::ostream& operator <<(std::ostream& os, const Queue<T>& queue);\n    \n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\nprivate:\n    /* Instance variables */\n    Deque<ValueType> _elements;\n};\n\ntemplate <typename ValueType>\nQueue<ValueType>::Queue(std::initializer_list<ValueType> list) : _elements(list) {\n    // empty\n}\n\ntemplate <typename ValueType>\nvoid Queue<ValueType>::add(const ValueType& value) {\n    enqueue(value);\n}\n\ntemplate <typename ValueType>\nconst ValueType& Queue<ValueType>::back() const {\n    if (isEmpty()) {\n        error(\"Queue::back: Attempting to read back of an empty queue\");\n    }\n    return _elements.back();\n}\n\ntemplate <typename ValueType>\nvoid Queue<ValueType>::clear() {\n    _elements.clear();\n}\n\n/*\n * Implementation notes: dequeue, peek\n * -----------------------------------\n * These methods must check for an empty queue and report an error\n * if there is no first element.\n */\ntemplate <typename ValueType>\nValueType Queue<ValueType>::dequeue() {\n    if (isEmpty()) {\n        error(\"Queue::dequeue: Attempting to dequeue an empty queue\");\n    }\n    return _elements.dequeueFront();\n}\n\ntemplate <typename ValueType>\nvoid Queue<ValueType>::enqueue(const ValueType& value) {\n    _elements.enqueueBack(value);\n}\n\ntemplate <typename ValueType>\nbool Queue<ValueType>::equals(const Queue<ValueType>& queue2) const {\n    return *this == queue2;\n}\n\ntemplate <typename ValueType>\nconst ValueType& Queue<ValueType>::front() const {\n    if (isEmpty()) {\n        error(\"Queue::front: Attempting to read front of an empty queue\");\n    }\n    return _elements.front();\n}\n\ntemplate <typename ValueType>\nbool Queue<ValueType>::isEmpty() const {\n    return _elements.isEmpty();\n}\n\ntemplate <typename ValueType>\nconst ValueType& Queue<ValueType>::peek() const {\n    return front();\n}\n\ntemplate <typename ValueType>\nValueType Queue<ValueType>::remove() {\n    // this isEmpty check is also done in dequeue(), but we repeat it\n    // here so that the possible error message will be more descriptive.\n    if (isEmpty()) {\n        error(\"Queue::remove: Attempting to remove from an empty queue\");\n    }\n    return dequeue();\n}\n\ntemplate <typename ValueType>\nint Queue<ValueType>::size() const {\n    return _elements.size();\n}\n\ntemplate <typename ValueType>\nstd::string Queue<ValueType>::toString() const {\n    std::ostringstream os;\n    os << *this;\n    return os.str();\n}\n\ntemplate <typename ValueType>\nbool Queue<ValueType>::operator ==(const Queue& queue2) const {\n    return _elements == queue2._elements;\n}\n\ntemplate <typename ValueType>\nbool Queue<ValueType>::operator !=(const Queue& queue2) const {\n    return _elements != queue2._elements;\n}\n\ntemplate <typename ValueType>\nbool Queue<ValueType>::operator <(const Queue& queue2) const {\n    return _elements < queue2._elements;\n}\n\ntemplate <typename ValueType>\nbool Queue<ValueType>::operator <=(const Queue& queue2) const {\n    return _elements <= queue2._elements;\n}\n\ntemplate <typename ValueType>\nbool Queue<ValueType>::operator >(const Queue& queue2) const {\n    return _elements > queue2._elements;\n}\n\ntemplate <typename ValueType>\nbool Queue<ValueType>::operator >=(const Queue& queue2) const {\n    return _elements >= queue2._elements;\n}\n\ntemplate <typename ValueType>\nstd::ostream& operator <<(std::ostream& os, const Queue<ValueType>& queue) {\n    return os << queue._elements;\n}\n\ntemplate <typename ValueType>\nstd::istream& operator >>(std::istream& is, Queue<ValueType>& queue) {\n    ValueType element;\n    return stanfordcpplib::collections::readCollection(is, queue, queue._elements, /* descriptor */ \"Queue::operator >>\");\n}\n\n/*\n * Template hash function for queues.\n * Requires the element type in the queue to have a hashCode function.\n */\ntemplate <typename T>\nint hashCode(const Queue<T>& q) {\n    return hashCode(q._elements);\n}\n\n#endif // _queue_h\n\n/////////////////////// END code extracted from StanfordCPPLib/collections/queue.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/collections/stack.h ///////////////////////\n/*\n * File: stack.h\n * -------------\n * This file exports the <code>Stack</code> class, which implements\n * a collection that processes values in a last-in/first-out (LIFO) order.\n * \n * @version 2019/04/09\n * - renamed private members with underscore naming scheme for consistency\n * @version 2019/02/04\n * - changed internal implementation to wrap std collections\n * @version 2016/12/09\n * - added iterator version checking support (implicitly via Vector)\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * - made const iterators public\n * @version 2016/08/10\n * - added constructor support for std initializer_list usage, such as {1, 2, 3}\n * @version 2016/08/04\n * - fixed operator >> to not throw errors\n * @version 2014/11/13\n * - added add() method as synonym for push()\n * - added remove() method as synonym for pop()\n * - added comparison operators <, >=, etc.\n * - added template hashCode function\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _stack_h\n#define _stack_h\n\n#include <initializer_list>\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\n/*\n * Class: Stack<ValueType>\n * -----------------------\n * This class models a linear structure called a <b><i>stack</i></b>\n * in which values are added and removed only from one end.\n * This discipline gives rise to a last-in/first-out behavior (LIFO)\n * that is the defining feature of stacks.  The fundamental stack\n * operations are <code>push</code> (add to top) and <code>pop</code>\n * (remove from top).\n */\ntemplate <typename ValueType>\nclass Stack {\npublic:\n    /*\n     * Constructor: Stack\n     * Usage: Stack<ValueType> stack;\n     * ------------------------------\n     * Initializes a new empty stack.\n     */\n    Stack() = default;\n\n    /*\n     * Constructor: Stack\n     * Usage: Stack<ValueType> stack {1, 2, 3};\n     * ----------------------------------------\n     * Initializes a new stack that stores the given elements from bottom-top.\n     */\n    Stack(std::initializer_list<ValueType> list);\n\n    /*\n     * Destructor: ~Stack\n     * ------------------\n     * Frees any heap storage associated with this stack.\n     */\n    virtual ~Stack() = default;\n    \n    /*\n     * Method: add\n     * Usage: stack.add(value);\n     * -------------------------\n     * Pushes the specified value onto the top of this stack.\n     * A synonym for the push method.\n     */\n    void add(const ValueType& value);\n    \n    /*\n     * Method: clear\n     * Usage: stack.clear();\n     * ---------------------\n     * Removes all elements from this stack.\n     */\n    void clear();\n    \n    /*\n     * Method: equals\n     * Usage: if (stack.equals(stack2)) ...\n     * ------------------------------------\n     * Returns <code>true</code> if this stack contains exactly the same values\n     * as the given other stack.\n     * Identical in behavior to the == operator.\n     */\n    bool equals(const Stack<ValueType>& stack2) const;\n    \n    /*\n     * Method: isEmpty\n     * Usage: if (stack.isEmpty()) ...\n     * -------------------------------\n     * Returns <code>true</code> if this stack contains no elements.\n     */\n    bool isEmpty() const;\n    \n    /*\n     * Method: peek\n     * Usage: ValueType top = stack.peek();\n     * ------------------------------------\n     * Returns the value of top element from this stack, without removing\n     * it.  This method signals an error if called on an empty stack.\n     */\n    ValueType peek() const;\n    \n    /*\n     * Method: pop\n     * Usage: ValueType top = stack.pop();\n     * -----------------------------------\n     * Removes the top element from this stack and returns it.  This\n     * method signals an error if called on an empty stack.\n     */\n    ValueType pop();\n    \n    /*\n     * Method: push\n     * Usage: stack.push(value);\n     * -------------------------\n     * Pushes the specified value onto the top of this stack.\n     */\n    void push(const ValueType& value);\n\n    /*\n     * Method: remove\n     * Usage: ValueType top = stack.remove();\n     * -----------------------------------\n     * Removes the top element from this stack and returns it.\n     * A synonym for the pop method.\n     */\n    ValueType remove();\n\n    /*\n     * Method: size\n     * Usage: int n = stack.size();\n     * ----------------------------\n     * Returns the number of values in this stack.\n     */\n    int size() const;\n    \n    /*\n     * Method: top\n     * Usage: ValueType top = stack.top();\n     * ------------------------------------\n     * Returns the value of top element from this stack, without removing\n     * it.  This method signals an error if called on an empty stack.  For\n     * compatibility with the STL classes, this method is exported\n     * under the name <code>top</code>, in which case it returns the value\n     * by reference.\n     */\n    ValueType& top();\n\n    /*\n     * Method: toString\n     * Usage: string str = stack.toString();\n     * -------------------------------------\n     * Converts the stack to a printable string representation.\n     */\n    std::string toString() const;\n\n    /*\n     * Operator: ==\n     * Usage: stack1 == stack2\n     * -----------------------\n     * Returns <code>true</code> if <code>stack1</code> and <code>stack2</code>\n     * contain the same elements.\n     */\n    bool operator ==(const Stack& stack2) const;\n\n    /*\n     * Operator: !=\n     * Usage: stack1 != stack2\n     * -----------------------\n     * Returns <code>true</code> if <code>stack1</code> and <code>stack2</code>\n     * do not contain the same elements.\n     */\n    bool operator !=(const Stack& stack2) const;\n\n    /*\n     * Operators: <, >, <=, >=\n     * Usage: if (stack1 < stack2) ...\n     * -------------------------------\n     * Relational operators to compare two stacks.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     */\n    bool operator <(const Stack& stack2) const;\n    bool operator <=(const Stack& stack2) const;\n    bool operator >(const Stack& stack2) const;\n    bool operator >=(const Stack& stack2) const;\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\n    /*\n     * Implementation notes: Stack data structure\n     * ------------------------------------------\n     * The easiest way to implement a stack is to store the elements in a\n     * Vector.  Doing so means that the problems of dynamic memory allocation\n     * and copy assignment are already solved by the implementation of the\n     * underlying Vector class.\n     */\n\n    template <typename T>\n    friend int hashCode(const Stack<T>& s);\n    \n    template <typename T>\n    friend std::ostream& operator <<(std::ostream& os, const Stack<T>& stack);\n    \nprivate:\n    Vector<ValueType> _elements;\n};\n\n/*\n * Stack class implementation\n * --------------------------\n * The Stack is internally managed using a Vector.  This layered design\n * makes the implementation extremely simple, to the point that most\n * methods can be implemented in as single line.\n */\n\ntemplate <typename ValueType>\nStack<ValueType>::Stack(std::initializer_list<ValueType> list) : _elements(list) {\n\n}\n\ntemplate <typename ValueType>\nvoid Stack<ValueType>::add(const ValueType& value) {\n    push(value);\n}\n\ntemplate <typename ValueType>\nvoid Stack<ValueType>::clear() {\n    _elements.clear();\n}\n\ntemplate <typename ValueType>\nbool Stack<ValueType>::equals(const Stack<ValueType>& stack2) const {\n    return stanfordcpplib::collections::equals(_elements, stack2._elements);\n}\n\ntemplate <typename ValueType>\nbool Stack<ValueType>::isEmpty() const {\n    return size() == 0;\n}\n\ntemplate <typename ValueType>\nValueType Stack<ValueType>::peek() const {\n    if (isEmpty()) {\n        error(\"Stack::peek: Attempting to peek at an empty stack\");\n    }\n    return _elements.back();\n}\n\ntemplate <typename ValueType>\nValueType Stack<ValueType>::pop() {\n    if (isEmpty()) {\n        error(\"Stack::pop: Attempting to pop an empty stack\");\n    }\n    return _elements.pop_back();\n}\n\ntemplate <typename ValueType>\nvoid Stack<ValueType>::push(const ValueType& value) {\n    _elements.push_back(value);\n}\n\ntemplate <typename ValueType>\nValueType Stack<ValueType>::remove() {\n    return pop();\n}\n\ntemplate <typename ValueType>\nint Stack<ValueType>::size() const {\n    return _elements.size();\n}\n\ntemplate <typename ValueType>\nValueType & Stack<ValueType>::top() {\n    if (isEmpty()) {\n        error(\"Stack::top: Attempting to read top of an empty stack\");\n    }\n    return _elements.back();\n}\n\ntemplate <typename ValueType>\nstd::string Stack<ValueType>::toString() const {\n    std::ostringstream os;\n    os << *this;\n    return os.str();\n}\n\ntemplate <typename ValueType>\nbool Stack<ValueType>::operator ==(const Stack& stack2) const {\n    return _elements == stack2._elements;\n}\n\ntemplate <typename ValueType>\nbool Stack<ValueType>::operator !=(const Stack & stack2) const {\n    return _elements != stack2._elements;\n}\n\ntemplate <typename ValueType>\nbool Stack<ValueType>::operator <(const Stack & stack2) const {\n    return _elements < stack2._elements;\n}\n\ntemplate <typename ValueType>\nbool Stack<ValueType>::operator <=(const Stack & stack2) const {\n    return _elements <= stack2._elements;\n}\n\ntemplate <typename ValueType>\nbool Stack<ValueType>::operator >(const Stack & stack2) const {\n    return _elements > stack2._elements;\n}\n\ntemplate <typename ValueType>\nbool Stack<ValueType>::operator >=(const Stack & stack2) const {\n    return _elements >= stack2._elements;\n}\n\ntemplate <typename ValueType>\nstd::ostream& operator <<(std::ostream& os, const Stack<ValueType>& stack) {\n    return os << stack._elements;\n}\n\ntemplate <typename ValueType>\nstd::istream& operator >>(std::istream& is, Stack<ValueType>& stack) {\n    ValueType element;\n    return stanfordcpplib::collections::readCollection(is, stack, element, /* descriptor */ \"Stack::operator >>\");\n}\n\n/*\n * Template hash function for stacks.\n * Requires the element type in the Stack to have a hashCode function.\n */\ntemplate <typename T>\nint hashCode(const Stack<T>& s) {\n    return hashCode(s._elements);\n}\n\n#endif // _stack_h\n\n/////////////////////// END code extracted from StanfordCPPLib/collections/stack.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/io/tokenscanner.h ///////////////////////\n/*\n * File: tokenscanner.h\n * --------------------\n * This file exports a <code>TokenScanner</code> class that divides\n * a string into individual logical units called <b><i>tokens</i></b>.\n *\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2018/09/23\n * - moved TokenType enum to inside TokenScanner class to avoid namespace conflicts\n *   (may break some client code)\n * - remove private/tokenpatch.h\n * @version 2016/11/26\n * - added getInput method\n * - replaced occurrences of string with const string& for efficiency\n * - alphabetized method ordering\n * - added operator << for printing a scanner\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _tokenscanner_h\n#define _tokenscanner_h\n\n#include <iostream>\n#include <string>\n\n/**\n * This class divides a string into individual tokens.  The typical\n * use of the <code>TokenScanner</code> class is illustrated by the\n * following pattern, which reads the tokens in the string variable\n * <code>input</code>:\n *\n *<pre>\n *    TokenScanner scanner(input);\n *    while (scanner.hasMoreTokens()) {\n *       string token = scanner.nextToken();\n *       ... process the token ...\n *    }\n *</pre>\n *\n * The <code>TokenScanner</code> class exports several additional methods\n * that give clients more control over its behavior.  Those methods are\n * described individually in the documentation.\n */\nclass TokenScanner {\npublic:\n    /**\n     * This enumerated type defines the values of the\n     * <code>getTokenType</code> method.\n     */\n    enum TokenType {SEPARATOR, WORD, NUMBER, STRING, OPERATOR};\n\n    /**\n     * Initializes a scanner object with an empty token stream.\n     */\n    TokenScanner();\n\n    /**\n     * Initializes a scanner object.  The initial token stream comes from\n     * the specified input stream.\n     */\n    TokenScanner(std::istream& infile);\n\n    /**\n     * Initializes a scanner object.  The initial token stream comes from\n     * the specified string.\n     */\n    TokenScanner(const std::string& str);\n\n    /**\n     * Deallocates the storage associated with this scanner.\n     */\n    virtual ~TokenScanner();\n\n    /**\n     * Defines a new multicharacter operator.  Whenever you call\n     * <code>nextToken</code> when the input stream contains operator\n     * characters, the scanner returns the longest possible operator\n     * string that can be read at that point.\n     */\n    void addOperator(const std::string& op);\n\n    /**\n     * Adds the characters in <code>str</code> to the set of characters\n     * legal in a <code>WORD</code> token.  For example, calling\n     * <code>addWordCharacters(\"_\")</code> adds the underscore to the\n     * set of characters that are accepted as part of a word.\n     */\n    void addWordCharacters(const std::string& str);\n\n    /**\n     * Reads the next character from the scanner input stream.\n     */\n    int getChar();\n\n    /**\n     * Returns the string that is used as the input buffer for this scanner,\n     * if any. If this scanner was created using an istream instead of a\n     * string, returns an empty string.\n     */\n    std::string getInput() const;\n\n    /**\n     * Returns the current position of the scanner in the input stream.\n     * If <code>saveToken</code> has been called, this position corresponds\n     * to the beginning of the saved token.  If <code>saveToken</code> is\n     * called more than once, <code>getPosition</code> returns -1.\n     */\n    int getPosition() const;\n\n    /**\n     * Returns the string value of a token.  This value is formed by removing\n     * any surrounding quotation marks and replacing escape sequences by the\n     * appropriate characters.\n     */\n    std::string getStringValue(const std::string& token) const;\n\n    /**\n     * Returns the type of this token.  This type will match one of the\n     * following enumerated type constants: <code>EOF</code>,\n     * <code>SEPARATOR</code>, <code>WORD</code>, <code>NUMBER</code>,\n     * <code>STRING</code>, or <code>OPERATOR</code>.\n     */\n    TokenType getTokenType(const std::string& token) const;\n\n    /**\n     * Returns <code>true</code> if there are additional tokens for this\n     * scanner to read.\n     */\n    bool hasMoreTokens();\n\n    /**\n     * Tells the scanner to ignore comments.  The scanner package recognizes\n     * both the slash-star and slash-slash comment format from the C-based\n     * family of languages.  Calling:\n     *\n     *<pre>\n     *    scanner.ignoreComments();\n     *</pre>\n     *\n     * sets the parser to ignore comments.\n     */\n    void ignoreComments();\n\n    /**\n     * Tells the scanner to ignore whitespace characters.  By default,\n     * the <code>nextToken</code> method treats whitespace characters\n     * (typically spaces and tabs) just like any other punctuation mark\n     * and returns them as single-character tokens.\n     * Calling:\n     *\n     *<pre>\n     *    scanner.ignoreWhitespace();\n     *</pre>\n     *\n     * changes this behavior so that the scanner ignore whitespace characters.\n     */\n    void ignoreWhitespace();\n\n    /**\n     * Returns <code>true</code> if the character is valid in a word.\n     */\n    bool isWordCharacter(char ch) const;\n\n    /**\n     * Returns the next token from this scanner.  If <code>nextToken</code>\n     * is called when no tokens are available, it returns the empty string.\n     */\n    std::string nextToken();\n\n    /**\n     * Pushes the specified token back into this scanner's input stream.\n     * On the next call to <code>nextToken</code>, the scanner will return\n     * the saved token without reading any additional characters from the\n     * token stream.\n     */\n    void saveToken(const std::string& token);\n\n    /**\n     * Controls how the scanner treats tokens that begin with a digit.  By\n     * default, the <code>nextToken</code> method treats numbers and letters\n     * identically and therefore does not provide any special processing for\n     * numbers.  Calling:\n     *\n     *<pre>\n     *    scanner.scanNumbers();\n     *</pre>\n     *\n     * changes this behavior so that <code>nextToken</code> returns the\n     * longest substring that can be interpreted as a real number.\n     */\n    void scanNumbers();\n\n    /**\n     * Controls how the scanner treats tokens enclosed in quotation marks.  By\n     * default, quotation marks (either single or double) are treated just like\n     * any other punctuation character.  Calling:\n     *\n     *<pre>\n     *    scanner.scanStrings();\n     *</pre>\n     *\n     * changes this assumption so that <code>nextToken</code> returns a single\n     * token consisting of all characters through the matching quotation mark.\n     * The quotation marks are returned as part of the scanned token so that\n     * clients can differentiate strings from other token types.\n     */\n    void scanStrings();\n\n    /**\n     * Sets the token stream for this scanner to the specified input stream.\n     * Any previous token stream is discarded.\n     */\n    void setInput(std::istream& infile);\n\n    /**\n     * Sets the token stream for this scanner to the specified string.\n     * Any previous token stream is discarded.\n     */\n    void setInput(const std::string& str);\n\n    /**\n     * Pushes the character <code>ch</code> back into the scanner stream.\n     * The character must match the one that was read.\n     */\n    void ungetChar(int ch);\n\n    /**\n     * Reads the next token and makes sure it matches the string\n     * <code>expected</code>.  If it does not, <code>verifyToken</code>\n     * throws an error.\n     * @throw ErrorException if the next token does not match the given string\n     */\n    void verifyToken(const std::string& expected);\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\nprivate:\n    /*\n     * Private type: StringCell\n     * ------------------------\n     * This type is used to construct linked lists of cells, which are used\n     * to represent both the stack of saved tokens and the set of defined\n     * operators.  These types cannot use the Stack and Lexicon classes\n     * directly because tokenscanner.h is an extremely low-level interface,\n     * and doing so would create circular dependencies in the .h files.\n     */\n    struct StringCell {\n        std::string str;\n        StringCell *link;\n    };\n\n    enum NumberScannerState {\n        INITIAL_STATE,\n        BEFORE_DECIMAL_POINT,\n        AFTER_DECIMAL_POINT,\n        STARTING_EXPONENT,\n        FOUND_EXPONENT_SIGN,\n        SCANNING_EXPONENT,\n        FINAL_STATE\n    };\n\n    std::string buffer;              /* The original argument string */\n    std::istream* isp;               /* The input stream for tokens  */\n    bool stringInputFlag;            /* Flag indicating string input */\n    bool ignoreWhitespaceFlag;       /* Scanner ignores whitespace   */\n    bool ignoreCommentsFlag;         /* Scanner ignores comments     */\n    bool scanNumbersFlag;            /* Scanner parses numbers       */\n    bool scanStringsFlag;            /* Scanner parses strings       */\n    std::string wordChars;           /* Additional word characters   */\n    StringCell* savedTokens;         /* Stack of saved tokens        */\n    StringCell* operators;           /* List of multichar operators  */\n\n    /* Private method prototypes */\n    void initScanner();\n    bool isOperator(const std::string& op);\n    bool isOperatorPrefix(const std::string& op);\n    std::string scanNumber();\n    std::string scanString();\n    std::string scanWord();\n    void skipSpaces();\n\n    friend std::ostream& operator <<(std::ostream& out, const TokenScanner& scanner);\n};\n\n/**\n * Prints the token scanner to the given output stream.\n */\nstd::ostream& operator <<(std::ostream& out, const TokenScanner& scanner);\n\n#endif // _tokenscanner_h\n\n/////////////////////// END code extracted from StanfordCPPLib/io/tokenscanner.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/collections/map.h ///////////////////////\n/*\n * File: map.h\n * -----------\n * This file exports the template class <code>Map</code>, which\n * maintains a collection of <i>key</i>-<i>value</i> pairs.\n * \n * @version 2019/04/09\n * - renamed private members with underscore naming scheme for consistency\n * @version 2019/02/04\n * - changed internal implementation to wrap std collections\n * @version 2018/03/19\n * - added constructors that accept a comparison function\n * @version 2018/03/10\n * - added methods front, back\n * @version 2017/10/18\n * - fix compiler warnings\n * @version 2016/12/09\n * - added iterator version checking support\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * @version 2016/09/22\n * - bug fix for operators <, <=, >, >= (was comparing only keys!)\n * @version 2016/08/10\n * - added support for std initializer_list usage, such as\n *   {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}} in constructor, addAll, putAll,\n *   removeAll, retainAll, and operators +, +=, -, -=, *, *=\n * - added addAll method\n * @version 2016/08/04\n * - fixed operator >> to not throw errors\n * @version 2015/10/13\n * - nulled out pointer fields in destructor after deletion to avoid double-free\n * @version 2015/07/05\n * - using global hashing functions rather than global variables\n * - fixed bug where string quotes would not show when map was printed\n * @version 2014/11/13\n * - added comparison operators <, >=, etc.\n * - added add() method as synonym for put()\n * - added template hashCode function\n * @version 2014/10/10\n * - removed usage of __foreach macro\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _map_h\n#define _map_h\n\n#include <cstdlib>\n#include <initializer_list>\n#include <utility>\n#include <type_traits>\n#include <map>\n#include <functional>\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\n/*\n * Class: Map<KeyType,ValueType>\n * -----------------------------\n * This class maintains an association between <b><i>keys</i></b> and\n * <b><i>values</i></b>.  The types used for keys and values are\n * specified using templates, which makes it possible to use\n * this structure with any data type.\n */\ntemplate <typename KeyType, typename ValueType>\nclass Map {\npublic:\n    /*\n     * Constructor: Map\n     * Usage: Map<KeyType,ValueType> map;\n     * ----------------------------------\n     * Initializes a new empty map that associates keys and values of the\n     * specified types.\n     */\n    Map();\n\n    /*\n     * Constructor: Map\n     * Usage: Map<KeyType,ValueType> map(lessFunc);\n     * --------------------------------------------\n     * Initializes a new empty map that associates keys and values of the\n     * specified types, using the given \"less-than\" comparison function\n     * to order any keys that will be later added to it.\n     * The function can accept the two keys to compare either by value\n     * or by const reference.\n     */\n    Map(std::function<bool (const KeyType&, const KeyType&)> lessFunc);\n\n    /*\n     * Constructor: Map\n     * Usage: Map<ValueType> map {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}};\n     * ---------------------------------------------------------\n     * Initializes a new map that stores the given pairs.\n     * Note that the pairs are stored in key-sorted order internally and not\n     * necessarily the order in which they are written in the initializer list.\n     */\n    Map(std::initializer_list<std::pair<const KeyType, ValueType>> list);\n\n    /*\n     * Constructor: Map\n     * Usage: Map<ValueType> map({{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}, lessFunc);\n     * --------------------------------------------------------------------\n     * Initializes a new empty map that associates keys and values of the\n     * specified types, using the given \"less-than\" comparison function\n     * to order any keys that will be later added to it.\n     * The function can accept the two keys to compare either by value\n     * or by const reference.\n     */\n    Map(std::initializer_list<std::pair<const KeyType, ValueType>> list,\n        std::function<bool (const KeyType&, const KeyType&)> lessFunc);\n\n    /*\n     * Destructor: ~Map\n     * ----------------\n     * Frees any heap storage associated with this map.\n     */\n    virtual ~Map() = default;\n    \n    /*\n     * Method: add\n     * Usage: map.add(key, value);\n     * ---------------------------\n     * Associates <code>key</code> with <code>value</code> in this map.\n     * A synonym for the put method.\n     */\n    void add(const KeyType& key, const ValueType& value);\n\n    /*\n     * Method: addAll\n     * Usage: map.addAll(map2);\n     * ------------------------\n     * Adds all key/value pairs from the given map to this map.\n     * If both maps contain a pair for the same key, the one from map2 will\n     * replace the one from this map.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     * Returns a reference to this map.\n     * Identical in behavior to putAll.\n     */\n    Map& addAll(const Map& map2);\n\n    /*\n     * Method: back\n     * Usage: KeyType value = map.back();\n     * ------------------------------------\n     * Returns the last key in the map in the order established by the\n     * <code>foreach</code> macro.  If the map is empty, generates an error.\n     */\n    KeyType back() const;\n\n    /*\n     * Method: clear\n     * Usage: map.clear();\n     * -------------------\n     * Removes all entries from this map.\n     */\n    void clear();\n    \n    /*\n     * Method: containsKey\n     * Usage: if (map.containsKey(key)) ...\n     * ------------------------------------\n     * Returns <code>true</code> if there is an entry for <code>key</code>\n     * in this map.\n     */\n    bool containsKey(const KeyType& key) const;\n\n    /*\n     * Method: equals\n     * Usage: if (map.equals(map2)) ...\n     * --------------------------------\n     * Returns <code>true</code> if the two maps contain exactly the same\n     * key/value pairs, and <code>false</code> otherwise.\n     */\n    bool equals(const Map& map2) const;\n\n    /*\n     * Method: front\n     * Usage: KeyType value = map.front();\n     * -------------------------------------\n     * Returns the first key in the map in the order established by the\n     * <code>foreach</code> macro.  If the map is empty, generates an error.\n     */\n    KeyType front() const;\n\n    /*\n     * Method: get\n     * Usage: ValueType value = map.get(key);\n     * --------------------------------------\n     * Returns the value associated with <code>key</code> in this map.\n     * If <code>key</code> is not found, <code>get</code> returns the\n     * default value for <code>ValueType</code>.\n     */\n    ValueType get(const KeyType& key) const;\n\n    /*\n     * Method: isEmpty\n     * Usage: if (map.isEmpty()) ...\n     * -----------------------------\n     * Returns <code>true</code> if this map contains no entries.\n     */\n    bool isEmpty() const;\n    \n    /*\n     * Method: keys\n     * Usage: Vector<KeyType> keys = map.keys();\n     * -----------------------------------------\n     * Returns a collection containing all keys in this map.\n     * Note that this implementation makes a deep copy of the keys,\n     * so it is inefficient to call on large maps.\n     */\n    Vector<KeyType> keys() const;\n    \n    /*\n     * Method: mapAll\n     * Usage: map.mapAll(fn);\n     * ----------------------\n     * Iterates through the map entries and calls <code>fn(key, value)</code>\n     * for each one.  The keys are processed in ascending order, as defined\n     * by the comparison function.\n     */\n    void mapAll(std::function<void (const KeyType&, const ValueType&)> fn) const;\n\n    /*\n     * Method: put\n     * Usage: map.put(key, value);\n     * ---------------------------\n     * Associates <code>key</code> with <code>value</code> in this map.\n     * Any previous value associated with <code>key</code> is replaced\n     * by the new value.\n     */\n    void put(const KeyType& key, const ValueType& value);\n\n    /*\n     * Method: putAll\n     * Usage: map.putAll(map2);\n     * ------------------------\n     * Adds all key/value pairs from the given map to this map.\n     * If both maps contain a pair for the same key, the one from map2 will\n     * replace the one from this map.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     * Returns a reference to this map.\n     * Identical in behavior to addAll.\n     */\n    Map& putAll(const Map& map2);\n\n    /*\n     * Method: remove\n     * Usage: map.remove(key);\n     * -----------------------\n     * Removes any entry for <code>key</code> from this map.\n     */\n    void remove(const KeyType& key);\n\n    /*\n     * Method: removeAll\n     * Usage: map.removeAll(map2);\n     * ---------------------------\n     * Removes all key/value pairs from this map that are contained in the given map.\n     * If both maps contain the same key but it maps to different values, that\n     * mapping will not be removed.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     * Returns a reference to this map.\n     */\n    Map& removeAll(const Map& map2);\n\n    /*\n     * Method: retainAll\n     * Usage: map.retainAll(map2);\n     * ---------------------------\n     * Removes all key/value pairs from this map that are not contained in the given map.\n     * If both maps contain the same key but it maps to different values, that\n     * mapping will be removed.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     * Returns a reference to this map.\n     */\n    Map& retainAll(const Map& map2);\n\n    /*\n     * Method: size\n     * Usage: int nEntries = map.size();\n     * ---------------------------------\n     * Returns the number of entries in this map.\n     */\n    int size() const;\n    \n    /*\n     * Method: toString\n     * Usage: string str = map.toString();\n     * -----------------------------------\n     * Converts the map to a printable string representation.\n     */\n    std::string toString() const;\n\n    /*\n     * Method: values\n     * Usage: Vector<ValueType> values = map.values();\n     * -----------------------------------------------\n     * Returns a collection containing all values in this map.\n     * Note that this implementation makes a deep copy of the values,\n     * so it is inefficient to call on large maps.\n     */\n    Vector<ValueType> values() const;\n\n    /*\n     * Operator: []\n     * Usage: map[key]\n     * ---------------\n     * Selects the value associated with <code>key</code>.  This syntax\n     * makes it easy to think of a map as an \"associative array\"\n     * indexed by the key type.  If <code>key</code> is already present\n     * in the map, this function returns a reference to its associated\n     * value.  If key is not present in the map, a new entry is created\n     * whose value is set to the default for the value type.\n     */\n    ValueType& operator [](const KeyType& key);\n    ValueType operator [](const KeyType& key) const;\n\n    /*\n     * Operator: ==\n     * Usage: if (map1 == map2) ...\n     * ----------------------------\n     * Compares two maps for equality.\n     */\n    bool operator ==(const Map& map2) const;\n\n    /*\n     * Operator: !=\n     * Usage: if (map1 != map2) ...\n     * ----------------------------\n     * Compares two maps for inequality.\n     */\n    bool operator !=(const Map& map2) const;\n\n    /*\n     * Operators: <, <=, >, >=\n     * Usage: if (map1 < map2) ...\n     * ---------------------------\n     * Relational operators to compare two maps.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     */\n    bool operator <(const Map& map2) const;\n    bool operator <=(const Map& map2) const;\n    bool operator >(const Map& map2) const;\n    bool operator >=(const Map& map2) const;\n\n    /*\n     * Operator: +\n     * Usage: map1 + map2\n     * ------------------\n     * Returns the union of the two maps, equivalent to a copy of the first map\n     * with addAll called on it passing the second map as a parameter.\n     * If the two maps both contain a mapping for the same key, the mapping\n     * from the second map is favored.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     */\n    Map operator +(const Map& map2) const;\n\n    /*\n     * Operator: +=\n     * Usage: map1 += map2;\n     * --------------------\n     * Adds all key/value pairs from the given map to this map.\n     * Equivalent to calling addAll(map2).\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     */\n    Map& operator +=(const Map& map2);\n\n    /*\n     * Operator: -\n     * Usage: map1 - map2\n     * ------------------\n     * Returns the difference of the two maps, equivalent to a copy of the first map\n     * with removeAll called on it passing the second map as a parameter.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     */\n    Map operator -(const Map& map2) const;\n\n    /*\n     * Operator: -=\n     * Usage: map1 -= map2;\n     * --------------------\n     * Removes all key/value pairs from the given map to this map.\n     * Equivalent to calling removeAll(map2).\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     */\n    Map& operator -=(const Map& map2);\n\n    /*\n     * Operator: *\n     * Usage: map1 * map2\n     * ------------------\n     * Returns the intersection of the two maps, equivalent to a copy of the first map\n     * with retainAll called on it passing the second map as a parameter.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     */\n    Map operator *(const Map& map2) const;\n\n    /*\n     * Operator: *=\n     * Usage: map1 *= map2;\n     * ---------------------\n     * Removes all key/value pairs that are not found in the given map from this map.\n     * Equivalent to calling retainAll(map2).\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     */\n    Map& operator *=(const Map& map2);\n\n    /*\n     * Additional Map operations\n     * -------------------------\n     * In addition to the methods listed in this interface, the Map\n     * class supports the following operations:\n     *\n     *   - Stream I/O using the << and >> operators\n     *   - Deep copying for the copy constructor and assignment operator\n     *   - Iteration using the range-based for statement and STL iterators\n     *\n     * All iteration is guaranteed to proceed in the order established by\n     * the comparison function passed to the constructor, which ordinarily\n     * matches the order of the key type.\n     */\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\nprivate:\n    using MapType = std::map<KeyType, ValueType, std::function<bool(const KeyType&, const KeyType&)>>;\n    MapType _elements;\n    stanfordcpplib::collections::VersionTracker _version;\n\npublic:\n    /*\n     * Hidden features\n     * ---------------\n     * The remainder of this file consists of the code required to\n     * support deep copying and iteration.  Including these methods in\n     * the public portion of the interface would make that interface more\n     * difficult to understand for the average client.\n     */\n\n    using const_iterator = stanfordcpplib::collections::ProjectingIterator<stanfordcpplib::collections::CheckedIterator<typename MapType::const_iterator>>;\n    using iterator = const_iterator;\n\n    const_iterator begin() const;\n    const_iterator end() const;\n};\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType>::Map() : _elements(stanfordcpplib::collections::checkedLess<KeyType>()) {\n    // Handled in initializer\n}\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType>::Map(std::function<bool(const KeyType&, const KeyType&)> lessFunc)\n        : _elements(lessFunc) {\n}\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType>::Map(std::initializer_list<std::pair<const KeyType, ValueType>> list)\n        : _elements(list, stanfordcpplib::collections::checkedLess<KeyType>()) {\n    // Handled in initializer\n}\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType>::Map(std::initializer_list<std::pair<const KeyType, ValueType>> list,\n                             std::function<bool(const KeyType&, const KeyType&)> lessFunc)\n        : _elements(list, lessFunc) {\n}\n\ntemplate <typename KeyType, typename ValueType>\nvoid Map<KeyType, ValueType>::add(const KeyType& key,\n                                  const ValueType& value) {\n    put(key, value);\n}\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType>& Map<KeyType, ValueType>::addAll(const Map& map2) {\n    return putAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nKeyType Map<KeyType, ValueType>::back() const {\n    if (isEmpty()) {\n        error(\"Map::back: map is empty\");\n    }\n    return _elements.rbegin()->first;\n}\n\ntemplate <typename KeyType, typename ValueType>\nvoid Map<KeyType, ValueType>::clear() {\n    _elements.clear();\n    _version.update();\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool Map<KeyType, ValueType>::containsKey(const KeyType& key) const {\n    return !!_elements.count(key);\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool Map<KeyType, ValueType>::equals(const Map<KeyType, ValueType>& map2) const {\n    return stanfordcpplib::collections::equalsMap(*this, map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nKeyType Map<KeyType, ValueType>::front() const {\n    if (isEmpty()) {\n        error(\"Map::front: map is empty\");\n    }\n    return _elements.begin()->first;\n}\n\ntemplate <typename KeyType, typename ValueType>\nValueType Map<KeyType, ValueType>::get(const KeyType& key) const {\n    auto itr = _elements.find(key);\n    return itr == _elements.end()? ValueType() : itr->second;\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool Map<KeyType, ValueType>::isEmpty() const {\n    return _elements.empty();\n}\n\ntemplate <typename KeyType,typename ValueType>\nVector<KeyType> Map<KeyType, ValueType>::keys() const {\n    Vector<KeyType> keyset;\n    for (const auto& entry: _elements) {\n        keyset.add(entry.first);\n    }\n    return keyset;\n}\n\ntemplate <typename KeyType, typename ValueType>\nvoid Map<KeyType, ValueType>::mapAll(std::function<void (const KeyType&, const ValueType&)> fn) const {\n    for (const auto& entry: _elements) {\n        fn(entry.first, entry.second);\n    }\n}\n\ntemplate <typename KeyType, typename ValueType>\nvoid Map<KeyType, ValueType>::put(const KeyType& key,\n                                  const ValueType& value) {\n    int presize = size();\n    _elements[key] = value;\n    if (presize != size()) _version.update();\n}\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType>& Map<KeyType, ValueType>::putAll(const Map& map2) {\n    for (const KeyType& key : map2) {\n        put(key, map2.get(key));\n    }\n    return *this;\n}\n\ntemplate <typename KeyType, typename ValueType>\nvoid Map<KeyType, ValueType>::remove(const KeyType& key) {\n    _elements.erase(key);\n    _version.update();\n}\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType>& Map<KeyType, ValueType>::removeAll(const Map& map2) {\n    for (const KeyType& key : map2) {\n        if (containsKey(key) && get(key) == map2.get(key)) {\n            remove(key);\n        }\n    }\n    return *this;\n}\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType>& Map<KeyType, ValueType>::retainAll(const Map& map2) {\n    Vector<KeyType> toRemove;\n    for (const KeyType& key : *this) {\n        if (!map2.containsKey(key) || get(key) != map2.get(key)) {\n            toRemove.add(key);\n        }\n    }\n    for (const KeyType& key : toRemove) {\n        remove(key);\n    }\n    return *this;\n}\n\ntemplate <typename KeyType, typename ValueType>\nint Map<KeyType, ValueType>::size() const {\n    return _elements.size();\n}\n\ntemplate <typename KeyType, typename ValueType>\nstd::string Map<KeyType, ValueType>::toString() const {\n    std::ostringstream os;\n    os << *this;\n    return os.str();\n}\n\ntemplate <typename KeyType,typename ValueType>\nVector<ValueType> Map<KeyType, ValueType>::values() const {\n    Vector<ValueType> values;\n    for (const auto& entry: _elements) {\n        values.add(entry.second);\n    }\n    return values;\n}\n\ntemplate <typename KeyType, typename ValueType>\nValueType& Map<KeyType, ValueType>::operator [](const KeyType& key) {\n    auto presize = size();\n    auto& result = _elements[key];\n\n    /* If the size was updated, we must have inserted something. */\n    if (presize != size()) _version.update();\n    return result;\n}\n\ntemplate <typename KeyType, typename ValueType>\nValueType Map<KeyType, ValueType>::operator [](const KeyType& key) const {\n    return get(key);\n}\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType> Map<KeyType, ValueType>::operator +(const Map& map2) const {\n    Map<KeyType, ValueType> result = *this;\n    return result.putAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType>& Map<KeyType, ValueType>::operator +=(const Map& map2) {\n    return putAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType> Map<KeyType, ValueType>::operator -(const Map& map2) const {\n    Map<KeyType, ValueType> result = *this;\n    return result.removeAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType>& Map<KeyType, ValueType>::operator -=(const Map& map2) {\n    return removeAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType> Map<KeyType, ValueType>::operator *(const Map& map2) const {\n    Map<KeyType, ValueType> result = *this;\n    return result.retainAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType>& Map<KeyType, ValueType>::operator *=(const Map& map2) {\n    return retainAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool Map<KeyType, ValueType>::operator ==(const Map& map2) const {\n    return equals(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool Map<KeyType, ValueType>::operator !=(const Map& map2) const {\n    return !equals(map2);   // BUGFIX 2016/01/27, thanks to O. Zeng\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool Map<KeyType, ValueType>::operator <(const Map& map2) const {\n    return stanfordcpplib::collections::compareMaps(*this, map2) < 0;\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool Map<KeyType, ValueType>::operator <=(const Map& map2) const {\n    return stanfordcpplib::collections::compareMaps(*this, map2) <= 0;\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool Map<KeyType, ValueType>::operator >(const Map& map2) const {\n    return stanfordcpplib::collections::compareMaps(*this, map2) > 0;\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool Map<KeyType, ValueType>::operator >=(const Map& map2) const {\n    return stanfordcpplib::collections::compareMaps(*this, map2) >= 0;\n}\n\ntemplate <typename KeyType, typename ValueType>\ntypename Map<KeyType, ValueType>::iterator Map<KeyType, ValueType>::begin() const {\n    return iterator({ &_version, _elements.begin(), _elements });\n}\n\ntemplate <typename KeyType, typename ValueType>\ntypename Map<KeyType, ValueType>::iterator Map<KeyType, ValueType>::end() const {\n    return iterator({ &_version, _elements.end(), _elements });\n}\n\n/*\n * Implementation notes: << and >>\n * -------------------------------\n * The insertion and extraction operators use the template facilities in\n * strlib.h to read and write generic values in a way that treats strings\n * specially.\n */\ntemplate <typename KeyType, typename ValueType>\nstd::ostream& operator <<(std::ostream& os,\n                          const Map<KeyType, ValueType>& map) {\n    return stanfordcpplib::collections::writeMap(os, map);\n}\n\ntemplate <typename KeyType, typename ValueType>\nstd::istream& operator >>(std::istream& is, Map<KeyType,ValueType>& map) {\n    KeyType key;\n    ValueType value;\n    return stanfordcpplib::collections::readMap(is, map, key, value, /* descriptor */ std::string(\"Map::operator >>\"));\n}\n\n/*\n * Template hash function for maps.\n * Requires the key and value types in the Map to have a hashCode function.\n */\ntemplate <typename K, typename V>\nint hashCode(const Map<K, V>& map) {\n    return stanfordcpplib::collections::hashCodeMap(map);\n}\n\n/*\n * Function: randomKey\n * Usage: element = randomKey(map);\n * --------------------------------\n * Returns a randomly chosen key of the given map.\n * Throws an error if the map is empty.\n */\ntemplate <typename K, typename V>\nconst K& randomKey(const Map<K, V>& map) {\n    return stanfordcpplib::collections::randomElement(map);\n}\n\n#endif // _map_h\n\n/////////////////////// END code extracted from StanfordCPPLib/collections/map.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/collections/set.h ///////////////////////\n/*\n * File: set.h\n * -----------\n * This file exports the <code>Set</code> class, which implements a\n * collection for storing a set of distinct elements.\n * \n * @version 2019/02/04\n * - changed internal implementation to wrap std collections\n * @version 2018/03/19\n * - added constructors that accept a comparison function\n * @version 2018/03/10\n * - added methods front, back\n * @version 2016/12/09\n * - added iterator version checking support (implicitly via Map)\n * @version 2016/12/06\n * - slight speedup bug fix in equals() method\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * @version 2016/08/11\n * - added containsAll, isSupersetOf methods\n * @version 2016/08/10\n * - added support for std initializer_list usage, such as {1, 2, 3}\n *   in constructor, addAll, containsAll, isSubsetOf, isSupersetOf, removeAll,\n *   retainAll, and operators +, +=, -, -=, *, *=\n * @version 2016/08/04\n * - fixed operator >> to not throw errors\n * @version 2015/07/05\n * - using global hashing functions rather than global variables\n * @version 2014/11/13\n * - added comparison operators <, >=, etc.\n * - added template hashCode function\n * @version 2014/10/10\n * - removed use of __foreach macro\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _set_h\n#define _set_h\n\n#include <initializer_list>\n#include <iostream>\n#include <set>\n#include <functional>\n#include <type_traits>\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\n/* Traits type for the Set, which wraps an underlying Map. */\nnamespace stanfordcpplib {\n    namespace collections {\n        template <typename T> struct SetTraits {\n            using ValueType = T;\n            using MapType   = Map<T, bool>;\n            static std::string name() {\n                return \"Set\";\n            }\n\n            /* The Set type does allow you to construct the underlying Map by handing\n             * along a std::function.\n             */\n            template <typename Function>\n            static MapType construct(Function comparator) {\n                static_assert(std::is_assignable<std::function<bool(const ValueType&, const ValueType&)>, Function>::value,\n                              \"Oops! Seems like you tried to initialize a Set incorrectly. Click here for details.\");\n                /*\n                 * Hello student! If you are reading this message, it means that you tried to\n                 * initialize a Set improperly. For example, you might have tried to write\n                 * something like this:\n                 *\n                 *     Set<int> mySet = 137; // Oops!\n                 *\n                 * Here, for example, you're trying to assign an int to a Set<int>.\n                 *\n                 * or perhaps you had a function like this one:\n                 *\n                 *     void myFunction(Set<int>& mySet);\n                 *\n                 * and you called it by writing\n                 *\n                 *     myFunction(someSet + someOtherSet); // Oops!\n                 *     myFunction({ });                    // Oops!\n                 *\n                 * In these cases, you're trying to pass a value into a function that takes\n                 * its argument by (non-const) reference. C++ doesn't allow you to do this.\n                 *\n                 * To see where the actual error comes from, look in the list of error messages\n                 * in Qt Creator. You should see a line that says \"required from here\" that\n                 * points somewhere in your code. That's the actual line you wrote that caused\n                 * the problem, so double-click on that error message and see where it takes\n                 * you. Now you know where to look!\n                 *\n                 * Hope this helps!\n                 */\n                return MapType(comparator);\n            }\n\n            /* You can also default-construct it. */\n            static MapType construct() {\n                return {};\n            }\n\n            /* However, you can't pass in any other arguments. */\n            template <typename... Args>\n            static void construct(MapType &, Args&&...) {\n                static_assert(Fail<Args...>::value, \"Oops! Seems like you tried to initialize a Set incorrectly. Click here for details.\");\n\n                /*\n                 * Hello student! If you are reading this message, it means that you tried to\n                 * initialize a Set improperly. For example, you might have tried to write\n                 * something like this:\n                 *\n                 *     Set<int> mySet = 137; // Oops!\n                 *\n                 * Here, for example, you're trying to assign an int to a Set<int>.\n                 *\n                 * or perhaps you had a function like this one:\n                 *\n                 *     void myFunction(Set<int>& mySet);\n                 *\n                 * and you called it by writing\n                 *\n                 *     myFunction(someSet + someOtherSet); // Oops!\n                 *     myFunction({ });                    // Oops!\n                 *\n                 * In these cases, you're trying to pass a value into a function that takes\n                 * its argument by (non-const) reference. C++ doesn't allow you to do this.\n                 *\n                 * To see where the actual error comes from, look in the list of error messages\n                 * in Qt Creator. You should see a line that says \"required from here\" that\n                 * points somewhere in your code. That's the actual line you wrote that caused\n                 * the problem, so double-click on that error message and see where it takes\n                 * you. Now you know where to look!\n                 *\n                 * Hope this helps!\n                 */\n                error(\"static_assert failed?\");\n            }\n        };\n    }\n}\n\n/*\n * A set of elements stored in sorted order. The elements must be comparable\n * using the < operator in order to be stored here.\n */\ntemplate <typename ValueType>\n    using Set = stanfordcpplib::collections::GenericSet<stanfordcpplib::collections::SetTraits<ValueType>>;\n\n#endif // _set_h\n\n/////////////////////// END code extracted from StanfordCPPLib/collections/set.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/collections/hashmap.h ///////////////////////\n/*\n * File: hashmap.h\n * ---------------\n * This file exports the <code>HashMap</code> class, which stores\n * a set of <i>key</i>-<i>value</i> pairs.\n * \n * @version 2019/04/09\n * - renamed private members with underscore naming scheme for consistency\n * @version 2019/02/04\n * - changed internal implementation to wrap std collections\n * @version 2018/03/10\n * - added methods front, back\n * @version 2017/11/30\n * - bug fix for iterator version checking support\n * @version 2017/11/14\n * - added iterator version checking support\n * @version 2016/10/14\n * - modified floating-point equality tests to use floatingPointEqual function\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * @version 2016/08/10\n * - added support for std initializer_list usage, such as\n *   {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}} in constructor, putAll, removeAll, retainAll,\n *   operators +, +=, -, -=, *, *=\n * - added addAll method\n * @version 2016/08/04\n * - fixed operator >> to not throw errors\n * @version 2015/07/05\n * - using global hashing functions rather than global variables\n * - fixed bug where string quotes would not show when map was printed\n * @version 2015/06/19\n * - fixed deepCopy code that was causing copies to have different hash code than\n *   the original they were copied from (credit to SL Wen Zhang for finding the bug)\n * @version 2014/11/13\n * - added add() method as synonym for put()\n * - added template hashCode function\n * - moved hashCode functions to hashcode.h/cpp\n * @version 2014/10/29\n * - moved hashCode functions out to hashcode.h\n * @version 2014/10/10\n * - added comparison operators ==, !=\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _hashmap_h\n#define _hashmap_h\n\n#include <cstdlib>\n#include <initializer_list>\n#include <string>\n#include <utility>\n#include <unordered_map>\n#include <functional>\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\n/*\n * Class: HashMap<KeyType,ValueType>\n * ---------------------------------\n * This class implements an efficient association between\n * <b><i>keys</i></b> and <b><i>values</i></b>.  This class is\n * identical to the <a href=\"Map-class.html\"><code>Map</code></a> class\n * except for the fact that it uses a hash table as its underlying\n * representation.  Although the <code>HashMap</code> class operates in\n * constant time, the iterator for <code>HashMap</code> returns the\n * values in a seemingly random order.\n */\ntemplate <typename KeyType, typename ValueType>\nclass HashMap {\npublic:\n    /*\n     * Constructor: HashMap\n     * Usage: HashMap<KeyType,ValueType> map;\n     * --------------------------------------\n     * Initializes a new empty map that associates keys and values of\n     * the specified types.  The type used for the key must define\n     * the <code>==</code> operator, and there must be a free function\n     * with the following signature:\n     *\n     *<pre>\n     *    int hashCode(KeyType key);\n     *</pre>\n     *\n     * that returns a positive integer determined by the key.  This interface\n     * exports <code>hashCode</code> functions for <code>string</code> and\n     * the C++ primitive types.\n     */\n    HashMap() = default;\n\n    /*\n     * Constructor: HashMap\n     * Usage: HashMap<ValueType> map {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}};\n     * -------------------------------------------------------------\n     * Initializes a new map that stores the given pairs.\n     * Note that the pairs are stored in unpredictable order internally and not\n     * necessarily the order in which they are written in the initializer list.\n     */\n    HashMap(std::initializer_list<std::pair<const KeyType, ValueType>> list);\n\n    /*\n     * Destructor: ~HashMap\n     * --------------------\n     * Frees any heap storage associated with this map.\n     */\n    virtual ~HashMap() = default;\n\n    /*\n     * Method: add\n     * Usage: map.add(key, value);\n     * ---------------------------\n     * Associates <code>key</code> with <code>value</code> in this map.\n     * A synonym for the put method.\n     */\n    void add(const KeyType& key, const ValueType& value);\n\n    /*\n     * Method: addAll\n     * Usage: map.addAll(map2);\n     * ------------------------\n     * Adds all key/value pairs from the given map to this map.\n     * If both maps contain a pair for the same key, the one from map2 will\n     * replace the one from this map.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     * Returns a reference to this map.\n     * Identical in behavior to putAll.\n     */\n    HashMap& addAll(const HashMap& map2);\n\n    /*\n     * Method: back\n     * Usage: KeyType value = map.back();\n     * ----------------------------------\n     * Returns the last key in the map in the order established by the\n     * <code>foreach</code> macro.\n     * Note that since the keys are stored in an unpredictable order,\n     * this is not necessarily equal to the \"largest\" key value in any particular\n     * sorting order; it is just the key that would happen to be emitted last\n     * from a for-each loop.\n     * If the map is empty, generates an error.\n     */\n    KeyType back() const;\n\n    /*\n     * Method: clear\n     * Usage: map.clear();\n     * -------------------\n     * Removes all entries from this map.\n     */\n    void clear();\n\n    /*\n     * Method: containsKey\n     * Usage: if (map.containsKey(key)) ...\n     * ------------------------------------\n     * Returns <code>true</code> if there is an entry for <code>key</code>\n     * in this map.\n     */\n    bool containsKey(const KeyType& key) const;\n\n    /*\n     * Method: equals\n     * Usage: if (map.equals(map2)) ...\n     * --------------------------------\n     * Returns <code>true</code> if the two maps contain exactly the same\n     * key/value pairs, and <code>false</code> otherwise.\n     */\n    bool equals(const HashMap& map2) const;\n\n    /*\n     * Method: front\n     * Usage: KeyType value = map.front();\n     * -----------------------------------\n     * Returns the first key in the map in the order established by the\n     * <code>foreach</code> macro.\n     * Note that since the keys are stored in an unpredictable order,\n     * this is not necessarily equal to the \"smallest\" key value in any particular\n     * sorting order; it is just the key that would happen to be emitted first\n     * from a for-each loop.\n     * If the map is empty, generates an error.\n     */\n    KeyType front() const;\n\n    /*\n     * Method: get\n     * Usage: ValueType value = map.get(key);\n     * --------------------------------------\n     * Returns the value associated with <code>key</code> in this map.\n     * If <code>key</code> is not found, <code>get</code> returns the\n     * default value for <code>ValueType</code>.\n     */\n    ValueType get(const KeyType& key) const;\n\n    /*\n     * Method: isEmpty\n     * Usage: if (map.isEmpty()) ...\n     * -----------------------------\n     * Returns <code>true</code> if this map contains no entries.\n     */\n    bool isEmpty() const;\n    \n    /*\n     * Method: keys\n     * Usage: Vector<KeyType> keys = map.keys();\n     * -----------------------------------------\n     * Returns a collection containing all keys in this map.\n     * Note that this implementation makes a deep copy of the keys,\n     * so it is inefficient to call on large maps.\n     */\n    Vector<KeyType> keys() const;\n\n    /*\n     * Method: mapAll\n     * Usage: map.mapAll(fn);\n     * ----------------------\n     * Iterates through the map entries and calls <code>fn(key, value)</code>\n     * for each one.  The keys are processed in an undetermined order.\n     */\n    void mapAll(std::function<void(const KeyType&, const ValueType&)> fn) const;\n\n    /*\n     * Method: put\n     * Usage: map.put(key, value);\n     * ---------------------------\n     * Associates <code>key</code> with <code>value</code> in this map.\n     * Any previous value associated with <code>key</code> is replaced\n     * by the new value.\n     */\n    void put(const KeyType& key, const ValueType& value);\n\n    /*\n     * Method: putAll\n     * Usage: map.putAll(map2);\n     * ---------------------------\n     * Adds all key/value pairs from the given map to this map.\n     * If both maps contain a pair for the same key, the one from map2 will\n     * replace the one from this map.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     * Returns a reference to this map.\n     */\n    HashMap& putAll(const HashMap& map2);\n\n    /*\n     * Method: remove\n     * Usage: map.remove(key);\n     * -----------------------\n     * Removes any entry for <code>key</code> from this map.\n     * If the given key is not found, has no effect.\n     */\n    void remove(const KeyType& key);\n\n    /*\n     * Method: removeAll\n     * Usage: map.removeAll(map2);\n     * ---------------------------\n     * Removes all key/value pairs from this map that are contained in the given map.\n     * If both maps contain the same key but it maps to different values, that\n     * mapping will not be removed.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     * Returns a reference to this map.\n     */\n    HashMap& removeAll(const HashMap& map2);\n\n    /*\n     * Method: retainAll\n     * Usage: map.retainAll(map2);\n     * ---------------------------\n     * Removes all key/value pairs from this map that are not contained in the given map.\n     * If both maps contain the same key but it maps to different values, that\n     * mapping will be removed.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     * Returns a reference to this map.\n     */\n    HashMap& retainAll(const HashMap& map2);\n\n    /*\n     * Method: size\n     * Usage: int nEntries = map.size();\n     * ---------------------------------\n     * Returns the number of entries in this map.\n     */\n    int size() const;\n\n    /*\n     * Method: toString\n     * Usage: string str = map.toString();\n     * -----------------------------------\n     * Converts the map to a printable string representation.\n     */\n    std::string toString() const;\n\n    /*\n     * Method: values\n     * Usage: Vector<ValueType> values = map.values();\n     * -----------------------------------------------\n     * Returns a collection containing all values in this map.\n     * Note that this implementation makes a deep copy of the values,\n     * so it is inefficient to call on large maps.\n     */\n    Vector<ValueType> values() const;\n\n    /*\n     * Operator: []\n     * Usage: map[key]\n     * ---------------\n     * Selects the value associated with <code>key</code>.  This syntax\n     * makes it easy to think of a map as an \"associative array\"\n     * indexed by the key type.  If <code>key</code> is already present\n     * in the map, this function returns a reference to its associated\n     * value.  If key is not present in the map, a new entry is created\n     * whose value is set to the default for the value type.\n     */\n    ValueType& operator [](const KeyType& key);\n    ValueType operator [](const KeyType& key) const;\n\n    /*\n     * Operator: +\n     * Usage: map1 + map2\n     * ------------------\n     * Returns the union of the two maps, equivalent to a copy of the first map\n     * with addAll called on it passing the second map as a parameter.\n     * If the two maps both contain a mapping for the same key, the mapping\n     * from the second map is favored.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     */\n    HashMap operator +(const HashMap& map2) const;\n\n    /*\n     * Operator: +=\n     * Usage: map1 += map2;\n     * --------------------\n     * Adds all key/value pairs from the given map to this map.\n     * Equivalent to calling addAll(map2).\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     */\n    HashMap& operator +=(const HashMap& map2);\n\n    /*\n     * Operator: -\n     * Usage: map1 - map2\n     * ------------------\n     * Returns the difference of the two maps, equivalent to a copy of the first map\n     * with removeAll called on it passing the second map as a parameter.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     */\n    HashMap operator -(const HashMap& map2) const;\n\n    /*\n     * Operator: -=\n     * Usage: map1 -= map2;\n     * --------------------\n     * Removes all key/value pairs from the given map to this map.\n     * Equivalent to calling removeAll(map2).\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     */\n    HashMap& operator -=(const HashMap& map2);\n\n    /*\n     * Operator: *\n     * Usage: map1 * map2\n     * ------------------\n     * Returns the intersection of the two maps, equivalent to a copy of the first map\n     * with retainAll called on it passing the second map as a parameter.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     */\n    HashMap operator *(const HashMap& map2) const;\n\n    /*\n     * Operator: *=\n     * Usage: map1 *= map2;\n     * ---------------------\n     * Removes all key/value pairs that are not found in the given map from this map.\n     * Equivalent to calling retainAll(map2).\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     */\n    HashMap& operator *=(const HashMap& map2);\n\n    /*\n     * Additional HashMap operations\n     * -----------------------------\n     * In addition to the methods listed in this interface, the HashMap\n     * class supports the following operations:\n     *\n     *   - Stream I/O using the << and >> operators\n     *   - Deep copying for the copy constructor and assignment operator\n     *   - Iteration using the range-based for statement and STL iterators\n     *\n     * The HashMap class makes no guarantees about the order of iteration.\n     */\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\nprivate:\n    static_assert(stanfordcpplib::collections::IsHashable<KeyType>::value,\n                  \"Oops! You tried using a type as a key in our HashMap without making it hashable. Click this error for more details.\");\n    /*\n     * Hello CS106 students! If you got directed to this line of code in a compiler error,\n     * it probably means that you tried making a HashMap with a custom struct or class type\n     * as the key type or a HashSet with a custom struct as a value type. (The same also\n     * applies for LinkedHashMap and LinkedHashSet.)\n     *\n     * In order to have a type be a key type in a HashMap - or to have a type be a value type\n     * in a HashSet - it needs to have a hashCode function defined and be capable of being\n     * compared using the == operator. If you were directed here, one of those two conditions\n     * wasn't met.\n     *\n     * There are two ways to fix this. The first option would simply be to not use your custom\n     * type as a key in the HashMap or value in a HashSet. This is probably the easiest option.\n     *\n     * The second way to fix this is to explicitly define a hashCode() and operator== function\n     * for your type. To do so, first define hashCode as follows:\n     *\n     *     int hashCode(const YourCustomType& obj) {\n     *         return hashCode(obj.data1, obj.data2, ..., obj.dataN);\n     *     }\n     *\n     * where data1, data2, ... dataN are the data members of your type. For example, if you had\n     * a custom type\n     *\n     *     struct MyType {\n     *         int myInt;\n     *         string myString;\n     *     };\n     *\n     * you would define the function\n     *\n     *     int hashCode(const MyType& obj) {\n     *         return hashCode(obj.myInt, obj.myString);\n     *     }\n     *\n     * Second, define operator== as follows:\n     *\n     *     bool operator== (const YourCustomType& lhs, const YourCustomType& rhs) {\n     *         return lhs.data1 == rhs.data1 &&\n     *                lhs.data2 == rhs.data2 &&\n     *                         ...\n     *                lhs.dataN == rhs.dataN;\n     *     }\n     *\n     * Using the MyType example from above, we'd write\n     *\n     *     bool operator== (const MyType& lhs, const MyType& rhs) {\n     *         return lhs.myInt == rhs.myInt && lhs.myString == rhs.myString;\n     *     }\n     *\n     * Hope this helps!\n     */\n\n    struct Hasher {\n        std::size_t operator()(const KeyType& key) const {\n            return hashCode(key);\n        }\n    };\n\n    std::unordered_map<KeyType, ValueType, Hasher> _elements;\n    stanfordcpplib::collections::VersionTracker _version;\n\n    /* Private methods */\n\npublic:\n    /*\n     * Hidden features\n     * ---------------\n     * The remainder of this file consists of the code required to\n     * support deep copying and iteration.  Including these methods\n     * in the public interface would make that interface more\n     * difficult to understand for the average client.\n     */\n\n    /*\n     * Iterator support\n     */\n\n    using const_iterator = stanfordcpplib::collections::ProjectingIterator<stanfordcpplib::collections::CheckedIterator<typename std::unordered_map<KeyType, ValueType, Hasher>::const_iterator>>;\n    using iterator = const_iterator;\n\n    iterator begin() const;\n    iterator end() const;\n\n    /*\n     * Hashing support.\n     */\n    bool operator== (const HashMap& rhs) const;\n    bool operator!= (const HashMap& rhs) const;\n\n    template <typename K, typename V>\n    friend int hashCode(const HashMap<K, V>& map);\n};\n\ntemplate <typename KeyType, typename ValueType>\nHashMap<KeyType, ValueType>::HashMap(std::initializer_list<std::pair<const KeyType, ValueType>> list)\n        : _elements(list) {\n}\n\ntemplate <typename KeyType, typename ValueType>\nvoid HashMap<KeyType, ValueType>::add(const KeyType& key, const ValueType& value) {\n    put(key, value);\n}\n\ntemplate <typename KeyType, typename ValueType>\nHashMap<KeyType, ValueType>& HashMap<KeyType, ValueType>::addAll(const HashMap& map2) {\n    return putAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nKeyType HashMap<KeyType, ValueType>::back() const {\n    if (isEmpty()) {\n        error(\"HashMap::back: map is empty\");\n    }\n\n    return std::next(_elements.begin(), _elements.size() - 1)->first;\n}\n\ntemplate <typename KeyType, typename ValueType>\nvoid HashMap<KeyType, ValueType>::clear() {\n    _elements.clear();\n    _version.update();\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool HashMap<KeyType, ValueType>::containsKey(const KeyType& key) const {\n    return !!_elements.count(key);\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool HashMap<KeyType, ValueType>::equals(const HashMap<KeyType, ValueType>& map2) const {\n    return stanfordcpplib::collections::equalsMap(*this, map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nKeyType HashMap<KeyType, ValueType>::front() const {\n    if (isEmpty()) {\n        error(\"HashMap::front: map is empty\");\n    }\n    return *begin();\n}\n\ntemplate <typename KeyType, typename ValueType>\nValueType HashMap<KeyType, ValueType>::get(const KeyType& key) const {\n    auto itr = _elements.find(key);\n    return itr == _elements.end()? ValueType() : itr->second;\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool HashMap<KeyType, ValueType>::isEmpty() const {\n    return _elements.empty();\n}\n\ntemplate <typename KeyType, typename ValueType>\nVector<KeyType> HashMap<KeyType, ValueType>::keys() const {\n    Vector<KeyType> keyset;\n    for (const auto& entry: _elements) {\n        keyset.add(entry.first);\n    }\n    return keyset;\n}\n\ntemplate <typename KeyType, typename ValueType>\nvoid HashMap<KeyType, ValueType>::mapAll(std::function<void (const KeyType&, const ValueType&)> fn) const {\n    for (const auto& entry: _elements) {\n        fn(entry.first, entry.second);\n    }\n}\n\ntemplate <typename KeyType, typename ValueType>\nvoid HashMap<KeyType, ValueType>::put(const KeyType& key, const ValueType& value) {\n    int presize = size();\n    _elements[key] = value;\n\n    if (presize != size()) _version.update();\n}\n\ntemplate <typename KeyType, typename ValueType>\nHashMap<KeyType, ValueType>& HashMap<KeyType, ValueType>::putAll(const HashMap& map2) {\n    for (const KeyType& key : map2) {\n        put(key, map2.get(key));\n    }\n    return *this;\n}\n\ntemplate <typename KeyType, typename ValueType>\nvoid HashMap<KeyType, ValueType>::remove(const KeyType& key) {\n    auto itr = _elements.find(key);\n    if (itr != _elements.end()) {\n        _elements.erase(itr);\n        _version.update();\n    }\n}\n\ntemplate <typename KeyType, typename ValueType>\nHashMap<KeyType, ValueType>& HashMap<KeyType, ValueType>::removeAll(const HashMap& map2) {\n    for (const KeyType& key : map2) {\n        if (containsKey(key) && get(key) == map2.get(key)) {\n            remove(key);\n        }\n    }\n    return *this;\n}\n\ntemplate <typename KeyType, typename ValueType>\nHashMap<KeyType, ValueType>& HashMap<KeyType, ValueType>::retainAll(const HashMap& map2) {\n    Vector<KeyType> toRemove;\n    for (const KeyType& key : *this) {\n        if (!map2.containsKey(key) || get(key) != map2.get(key)) {\n            toRemove.add(key);\n        }\n    }\n    for (const KeyType& key : toRemove) {\n        remove(key);\n    }\n    return *this;\n}\n\ntemplate <typename KeyType, typename ValueType>\nint HashMap<KeyType, ValueType>::size() const {\n    return _elements.size();\n}\n\ntemplate <typename KeyType, typename ValueType>\nstd::string HashMap<KeyType, ValueType>::toString() const {\n    std::ostringstream os;\n    os << *this;\n    return os.str();\n}\n\ntemplate <typename KeyType, typename ValueType>\nVector<ValueType> HashMap<KeyType, ValueType>::values() const {\n    Vector<ValueType> values;\n    for (const auto& entry: _elements) {\n        values.add(entry.second);\n    }\n    return values;\n}\n\ntemplate <typename KeyType, typename ValueType>\nValueType& HashMap<KeyType, ValueType>::operator [](const KeyType& key) {\n    int presize = size();\n    ValueType& result = _elements[key];\n\n    if (presize != size()) _version.update();\n    return result;\n}\n\ntemplate <typename KeyType, typename ValueType>\nValueType HashMap<KeyType, ValueType>::operator [](const KeyType& key) const {\n    return get(key);\n}\n\ntemplate <typename KeyType, typename ValueType>\nHashMap<KeyType, ValueType> HashMap<KeyType, ValueType>::operator +(const HashMap& map2) const {\n    HashMap<KeyType, ValueType> result = *this;\n    return result.putAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nHashMap<KeyType, ValueType>& HashMap<KeyType, ValueType>::operator +=(const HashMap& map2) {\n    return putAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nHashMap<KeyType, ValueType> HashMap<KeyType, ValueType>::operator -(const HashMap& map2) const {\n    HashMap<KeyType, ValueType> result = *this;\n    return result.removeAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nHashMap<KeyType, ValueType>& HashMap<KeyType, ValueType>::operator -=(const HashMap& map2) {\n    return removeAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nHashMap<KeyType, ValueType> HashMap<KeyType, ValueType>::operator *(const HashMap& map2) const {\n    HashMap<KeyType, ValueType> result = *this;\n    return result.retainAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nHashMap<KeyType, ValueType>& HashMap<KeyType, ValueType>::operator *=(const HashMap& map2) {\n    return retainAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\ntypename HashMap<KeyType, ValueType>::iterator HashMap<KeyType, ValueType>::begin() const {\n    return iterator({ &_version, _elements.begin(), _elements });\n}\n\ntemplate <typename KeyType, typename ValueType>\ntypename HashMap<KeyType, ValueType>::iterator HashMap<KeyType, ValueType>::end() const {\n    return iterator({ &_version, _elements.end(), _elements });\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool HashMap<KeyType, ValueType>::operator == (const HashMap<KeyType, ValueType>& rhs) const {\n    return stanfordcpplib::collections::equalsMap(*this, rhs);\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool HashMap<KeyType, ValueType>::operator != (const HashMap<KeyType, ValueType>& rhs) const {\n    return !(*this == rhs);\n}\n\ntemplate <typename KeyType, typename ValueType>\nint hashCode(const HashMap<KeyType, ValueType>& map) {\n    return stanfordcpplib::collections::hashCodeMap(map, false);\n}\n\n/*\n * Implementation notes: << and >>\n * -------------------------------\n * The insertion and extraction operators use the template facilities in\n * strlib.h to read and write generic values in a way that treats strings\n * specially.\n */\ntemplate <typename KeyType, typename ValueType>\nstd::ostream& operator <<(std::ostream& os,\n                          const HashMap<KeyType, ValueType>& map) {\n    return stanfordcpplib::collections::writeMap(os, map);\n}\n\ntemplate <typename KeyType, typename ValueType>\nstd::istream& operator >>(std::istream& is,\n                          HashMap<KeyType, ValueType>& map) {\n    KeyType key;\n    ValueType value;\n    return stanfordcpplib::collections::readMap(is, map, key, value, /* descriptor */ std::string(\"HashMap::operator >>\"));\n}\n\n/*\n * Function: randomKey\n * Usage: element = randomKey(map);\n * --------------------------------\n * Returns a randomly chosen key of the given map.\n * Throws an error if the map is empty.\n */\ntemplate <typename K, typename V>\nconst K& randomKey(const HashMap<K, V>& map) {\n    return stanfordcpplib::collections::randomElement(map);\n}\n\n#endif // _hashmap_h\n\n/////////////////////// END code extracted from StanfordCPPLib/collections/hashmap.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/collections/hashset.h ///////////////////////\n/*\n * File: hashset.h\n * ---------------\n * This file exports the <code>HashSet</code> class, which\n * implements an efficient abstraction for storing sets of values.\n * \n * @version 2019/02/04\n * - changed internal implementation to wrap std collections\n * @version 2018/03/10\n * - added methods front, back\n * @version 2016/12/09\n * - added iterator version checking support (implicitly via HashMap)\n * @version 2016/12/06\n * - slight speedup bug fix in equals() method\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * @version 2016/08/11\n * - added containsAll, isSupersetOf methods\n * @version 2016/08/10\n * - added support for std initializer_list usage, such as {1, 2, 3}\n *   in constructor, addAll, containsAll, isSubsetOf, isSupersetOf, removeAll,\n *   retainAll, and operators +, +=, -, -=, *, *=\n * - bug fix in hashCode function\n * @version 2016/08/04\n * - fixed operator >> to not throw errors\n * @version 2015/07/05\n * - using global hashing functions rather than global variables\n * @version 2014/11/13\n * - added template hashCode function\n * @version 2014/10/10\n * - removed foreach patch\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _hashset_h\n#define _hashset_h\n\n#include <initializer_list>\n#include <iostream>\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\n/* Traits type for the HashSet, which wraps an underlying HashMap. */\nnamespace stanfordcpplib {\n    namespace collections {\n        template <typename T> struct HashSetTraits {\n            using ValueType = T;\n            using MapType   = HashMap<T, bool>;\n            static std::string name() {\n                return \"HashSet\";\n            }\n            /* You can default-construct a LinkedHashSet. */\n            static MapType construct() {\n                return {};\n            }\n\n            /* However, you can't pass in any other arguments. */\n            template <typename... Args>\n            static void construct(Args&&...) {\n                static_assert(Fail<Args...>::value, \"Oops! Seems like you tried to initialize a LinkedHashSet incorrectly. Click here for details.\");\n\n                /*\n                 * Hello student! If you are reading this message, it means that you tried to\n                 * initialize a HashSet improperly. For example, you might have tried to\n                 * write something like this:\n                 *\n                 *     HashSet<int> mySet = 137; // Oops!\n                 *\n                 * Here, for example, you're trying to assign an int to a LinkedHashSet<int>.\n                 *\n                 * or perhaps you had a function like this one:\n                 *\n                 *     void myFunction(LinkedHashSet<int>& mySet);\n                 *\n                 * and you called it by writing\n                 *\n                 *     myFunction(someSet + someOtherSet); // Oops!\n                 *     myFunction({ });                    // Oops!\n                 *\n                 * In these cases, you're trying to pass a value into a function that takes\n                 * its argument by (non-const) reference. C++ doesn't allow you to do this.\n                 *\n                 * To see where the actual error comes from, look in the list of error messages\n                 * in Qt Creator. You should see a line that says \"required from here\" that\n                 * points somewhere in your code. That's the actual line you wrote that caused\n                 * the problem, so double-click on that error message and see where it takes\n                 * you. Now you know where to look!\n                 *\n                 * Hope this helps!\n                 */\n                error(\"static_assert succeeded?\");\n            }\n        };\n    }\n}\n\n/*\n * A set of elements stored in no particular order. Elements can only be stored here\n * if they support a function\n *\n *     int hashCode(ValueType);\n *\n * that returns a nonnegative integer, along with equality comparison using ==.\n */\ntemplate <typename ValueType>\n    using HashSet = stanfordcpplib::collections::GenericSet<stanfordcpplib::collections::HashSetTraits<ValueType>>;\n\n#endif // _hashset_h\n\n/////////////////////// END code extracted from StanfordCPPLib/collections/hashset.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/collections/graph.h ///////////////////////\n/*\n * File: graph.h\n * -------------\n * This file exports a parameterized Graph class used to represent graphs,\n * which consist of a set of nodes (vertices) and a set of arcs (edges).\n * \n * @version 2019/08/13\n * - fixed compiler error with Graph default constructor on older g++ compilers\n * @version 2018/09/07\n * - reformatted doc-style comments\n * @version 2018/03/10\n * - added methods front, back\n * - fixed compiler issue with getArcSet call\n * @version 2017/11/14\n * - added nodeCount, arcCount, getNodeNames\n * @version 2016/12/09\n * - added iterator version checking support (implicitly via Map)\n * - fixed bug in getInverseNeighborNames function\n * @version 2016/12/01\n * - removed memory leaks of graph node and arc structures\n * - fixed bug in containsNode method (was returning false positives)\n * - fixed bugs in some node/arc methods (should not crash on empty/null args)\n * @version 2016/11/29\n * - added getNeighborNames, getInverseNeighborNames\n * @version 2016/11/26\n * - added getInverseArcSet\n * @version 2016/11/19\n * - changed addNode to not throw when adding duplicates\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * @version 2016/08/04\n * - fixed operator >> to not throw errors\n * @version 2015/07/05\n * - using global hashing functions rather than global variables\n * @version 2014/11/13\n * - added iterator begin(), end() support so that students can directly\n *   for-each over the vertices of a graph.\n * - added comparison operators ==, !=, <, etc.\n * - added template hashCode function\n * @version 2014/10/20\n * - converted functions to accept const string& rather than string for speed\n * - added iterator/for-each support over nodes; begin() / end() members\n * - updated various methods that accept node/arc pointers to verify\n *   that those nodes/arcs are part of the graph first, and to check for null\n * @version 2014/10/10\n * - removed use of __foreach macro\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _graph_h\n#define _graph_h\n\n#include <string>\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\n/**\n * This class represents a graph with the specified node and arc types.\n * The <code>NodeType</code> and <code>ArcType</code> parameters indicate\n * the structure type or class used for nodes and arcs, respectively.\n * These types can contain any fields or methods required by the client,\n * but must contain the following fields required by the <code>Graph</code>\n * package itself:\n *\n * <p>The <code>NodeType</code> definition must include:\n * <ul>\n *   <li>A <code>string</code> field called <code>name</code>\n *   <li>A <code>Set&lt;ArcType *&gt;</code> field called <code>arcs</code>\n * </ul>\n *\n * <p>The <code>ArcType</code> definition must include:\n * <ul>\n *   <li>A <code>NodeType *</code> field called <code>start</code>\n *   <li>A <code>NodeType *</code> field called <code>finish</code>\n * </ul>\n */\ntemplate <typename NodeType, typename ArcType>\nclass Graph {\npublic:\n    /**\n     * Creates an empty graph.\n     * @bigoh O(1)\n     */\n    Graph();\n    \n    /**\n     * Frees the internal storage allocated to represent the graph.\n     * @bigoh O(V + E)\n     */\n    virtual ~Graph();\n    \n    /**\n     * Adds a directed arc to the graph from node n1 to n2.\n     * If either node is not found in the graph, said node will be added to the graph.\n     * Returns a pointer to the arc in case the client needs to capture this value.\n     * @bigoh O(log V + log E)\n     */\n    ArcType* addArc(const std::string& n1, const std::string& n2);\n\n    /**\n     * Adds a directed arc to the graph from node n1 to n2.\n     * If either node is not found in the graph, said node will be added to the graph.\n     * Returns a pointer to the arc in case the client needs to capture this value.\n     *\n     * @throw ErrorException if any pointer passed is null\n     * @bigoh O(log V + log E)\n     */\n    ArcType* addArc(NodeType* n1, NodeType* n2);\n\n    /**\n     * Adds the given arc to the graph.\n     * If the start/finish nodes passed are not already part of the graph,\n     * they are added to the graph.\n     * Returns a pointer to the arc in case the client needs to capture this value.\n     *\n     * Memory management: Once you hand me this ArcType* pointer, our code owns it.\n     * We will delete/free it when done with it.\n     * You do not need to (and should not) free it yourself.\n     *\n     * @throw ErrorException if any pointer passed is null\n     * @bigoh O(log V + log E)\n     */\n    ArcType* addArc(ArcType* arc);\n\n    /**\n     * Adds a node to the graph.  The first version of this method\n     * creates a new node of the appropriate type and initializes its\n     * fields; the second assumes that the client has already created\n     * the node and simply adds it to the graph.\n     * Returns a pointer to the node.\n     * If a node with the given name is already present, does nothing.\n     *\n     * Memory management: Once you hand me this NodeType* pointer, our code owns it.\n     * We will delete/free it when done with it.\n     * You do not need to (and should not) free it yourself.\n     *\n     * @throw ErrorException if any pointer passed is null\n     * @bigoh O(log V)\n     */\n    NodeType* addNode(const std::string& name);\n\n    /**\n     * Adds a node to the graph.\n     * This version assumes that the client has already created the node structure\n     * and simply adds it to the graph.\n     * Returns a pointer to the node.\n     * If a node with the given name is already present, does nothing.\n     *\n     * Memory management: Once you hand me this NodeType* pointer, our code owns it.\n     * We will delete/free it when done with it.\n     * You do not need to (and should not) free it yourself.\n     *\n     * @throw ErrorException if any pointer passed is null\n     * @bigoh O(log V)\n     */\n    NodeType* addNode(NodeType* node);\n\n    /**\n     * Returns the number of arcs in the graph.\n     * @bigoh O(1)\n     */\n    int arcCount() const;\n\n    /**\n     * Returns the last node in the graph in the order as would be returned by\n     * a for-each loop or iterator.\n     * @throw ErrorException if the graph is empty\n     * @bigoh O(1)\n     */\n    NodeType* back() const;\n\n    /**\n     * Reinitializes the graph to be empty, removing all nodes and arcs\n     * and freeing any heap storage used by their corresponding internal structures.\n     * @bigoh O(V + E)\n     */\n    void clear();\n\n    /**\n     * Removes all arcs from the graph, freeing the heap storage used by their\n     * corresponding internal structures. The graph's nodes remain intact.\n     * @bigoh O(E)\n     */\n    void clearArcs();\n\n    /**\n     * Removes all arcs from the graph that start from the given node,\n     * freeing the heap storage used by their corresponding internal structures.\n     * The graph's nodes remain intact.\n     * If the given node pointer is null or not found in the graph, has no effect.\n     * @bigoh O(log V + E)\n     */\n    void clearArcs(NodeType* node);\n\n    /**\n     * Removes all arcs from the graph that start from the given node,\n     * freeing the heap storage used by their corresponding internal structures.\n     * The graph's nodes remain intact.\n     * If the given node is not found in the graph, has no effect.\n     * @bigoh O(E log E)\n     */\n    void clearArcs(const std::string& name);\n\n    /**\n     * Returns true if there exists an arc directly between the given two nodes.\n     * If either node is null or is not contained in this graph, returns false.\n     * @bigoh O(log E)\n     */\n    bool containsArc(NodeType* node1, NodeType* node2) const;\n\n    /**\n     * Returns true if there exists an arc directly between the given two nodes.\n     * If either node is not contained in this graph, returns false.\n     * @bigoh O(log E)\n     */\n    bool containsArc(const std::string& node1, const std::string& node2) const;\n\n    /**\n     * Returns true if the given arc exists in this graph.\n     * If the given arc is null or either of its nodes are not contained in\n     * this graph, returns false.\n     * @bigoh O(log E)\n     */\n    bool containsArc(ArcType* arc) const;\n\n    /**\n     * Returns true if there exists a node in this graph with the given name.\n     * @bigoh O(log V)\n     */\n    bool containsNode(const std::string& name) const;\n\n    /**\n     * Returns true if the given node is part of this graph.\n     * If the pointer passed is null, returns false.\n     * @bigoh O(log V)\n     */\n    bool containsNode(NodeType* node) const;\n\n    /**\n     * Compares two graphs for equality.\n     * Returns <code>true</code> if this graph contains exactly the same\n     * nodes, arcs, and connections as the given other graph.\n     * Identical in behavior to the == operator.\n     * @bigoh O(V log V + E log E)\n     */\n    bool equals(const Graph<NodeType, ArcType>& graph2) const;\n    \n    /**\n     * Returns the first node in the graph in the order as would be returned by\n     * a for-each loop or iterator.\n     * @throw ErrorException if the graph is empty\n     * @bigoh O(1)\n     */\n    NodeType* front() const;\n\n    /**\n     * Returns the arc, if any, from node1 to node2.\n     * If multiple arcs exist between the given two nodes, which is returned is unspecified.\n     * If either pointer passed is null or no such arc exists, returns a null pointer.\n     * @bigoh O(log V + log E)\n     */\n    ArcType* getArc(NodeType* node1, NodeType* node2) const;\n\n    /**\n     * Returns the arc, if any, from node1 to node2.\n     * If multiple arcs exist between the given two nodes, which is returned is unspecified.\n     * If no such arc exists, returns a null pointer.\n     * @bigoh O(log V + log E)\n     */\n    ArcType* getArc(const std::string& node1, const std::string& node2) const;\n\n    /**\n     * Returns the set of all arcs in the graph.\n     * @bigoh O(1)\n     */\n    const Set<ArcType*>& getArcSet() const;\n\n    /**\n     * Returns the set of all arcs that start at the specified node,\n     * indicated as a pointer to its node structure.\n     * If the pointer passed is null or the given node is not found in the graph,\n     * returns an empty set.\n     * @bigoh O(1)\n     */\n    const Set<ArcType*>& getArcSet(NodeType* node) const;\n\n    /**\n     * Returns the set of all arcs that start at the specified node.\n     * If the given node is not found in the graph, returns an empty set.\n     * @bigoh O(1)\n     */\n    const Set<ArcType*>& getArcSet(const std::string& name) const;\n\n    /**\n     * Returns the set of outbound arcs to the given node from other nodes.\n     * In other words, getInverseArcSet(n1) is the set of all nodes n2\n     * such that there exists an arc E starting from n2 and ending at n1.\n     *\n     * If any pointer passed is null, or if the given node is not found\n     * in this graph, returns an empty set.\n     * @bigoh O(E)\n     */\n    const Set<ArcType*> getInverseArcSet(NodeType* node) const;\n\n    /**\n     * Returns the set of outbound arcs to the given node from other nodes.\n     * In other words, getInverseArcSet(n1) is the set of all nodes n2\n     * such that there exists an arc E starting from n2 and ending at n1.\n     *\n     * If the given node is not found in this graph, returns an empty set.\n     * @bigoh O(E)\n     */\n    const Set<ArcType*> getInverseArcSet(const std::string& name) const;\n\n    /**\n     * Returns the set of strings of names of nodes that are neighbors of the\n     * given node.\n     * In other words, getInverseNeighborNames(n1) is the set of all strings n2\n     * such that there exists an arc E starting from n2 and ending at n1.\n     *\n     * If any pointer passed is null, or if the given node is not found\n     * in this graph, returns an empty set.\n     * @bigoh O(E)\n     */\n    Set<std::string> getInverseNeighborNames(NodeType* node) const;\n\n    /**\n     * Returns the set of strings of names of nodes that are neighbors of the\n     * given node.\n     * In other words, getInverseNeighborNames(n1) is the set of all strings n2\n     * such that there exists an arc E starting from n2 and ending at n1.\n     *\n     * If the given node is not found in this graph, returns an empty set.\n     * @bigoh O(E)\n     */\n    Set<std::string> getInverseNeighborNames(const std::string& node) const;\n\n    /**\n     * Returns the set of nodes that are neighbors of the specified node.\n     * In other words, getInverseNeighbors(n1) is the set of all nodes n2\n     * such that there exists an arc E starting from n2 and ending at n1.\n     *\n     * If any pointer passed is null, or if the given node is not found\n     * in this graph, returns an empty set.\n     * @bigoh O(E)\n     */\n    Set<NodeType*> getInverseNeighbors(NodeType* node) const;\n\n    /**\n     * Returns the set of nodes that are neighbors of the specified node.\n     * In other words, getInverseNeighbors(n1) is the set of all nodes n2\n     * such that there exists an arc E starting from n2 and ending at n1.\n     *\n     * If the given node is not found in this graph, returns an empty set.\n     * @bigoh O(E)\n     */\n    Set<NodeType*> getInverseNeighbors(const std::string& node) const;\n\n    /**\n     * Returns the set of node names that are neighbors of the specified node.\n     * In other words, getNeighbors(n1) is the set of all strings n2\n     * such that there exists an arc E starting from n1 and ending at n2.\n     *\n     * If any pointer passed is null, or if the given node is not found\n     * in this graph, returns an empty set.\n     * @bigoh O(log V)\n     */\n    Set<std::string> getNeighborNames(NodeType* node) const;\n\n    /**\n     * Returns the set of node names that are neighbors of the specified node.\n     * In other words, getNeighbors(n1) is the set of all strings n2\n     * such that there exists an arc E starting from n1 and ending at n2.\n     *\n     * If the given node is not found in this graph, returns an empty set.\n     * @bigoh O(log V)\n     */\n    Set<std::string> getNeighborNames(const std::string& node) const;\n\n    /**\n     * Returns the set of nodes that are neighbors of the specified node.\n     * In other words, getNeighbors(n1) is the set of all nodes n2\n     * such that there exists an arc E starting from n1 and ending at n2.\n     *\n     * If any pointer passed is null, or if the given node is not found\n     * in this graph, returns an empty set.\n     * @bigoh O(log V)\n     */\n    Set<NodeType*> getNeighbors(NodeType* node) const;\n\n    /**\n     * Returns the set of nodes that are neighbors of the specified node.\n     * In other words, getNeighbors(n1) is the set of all nodes n2\n     * such that there exists an arc E starting from n1 and ending at n2.\n     *\n     * If the given node is not found in this graph, returns an empty set.\n     * @bigoh O(log V)\n     */\n    Set<NodeType*> getNeighbors(const std::string& node) const;\n\n    /**\n     * Looks up a node in the name table attached to the graph and\n     * returns a pointer to that node.\n     * If no node with the specified name exists, returns <code>nullptr</code>.\n     * @bigoh O(log V)\n     */\n    NodeType* getNode(const std::string& name) const;\n\n    /**\n     * Returns the set of the names of all nodes in the graph.\n     * Similar to getNodeSet but returns a set of strings rather than a set\n     * of pointers to nodes.\n     * @bigoh O(V log V)\n     */\n    Set<std::string> getNodeNames() const;\n    \n    /**\n     * Returns the set of all nodes in the graph.\n     * These are direct pointers to the internal NodeType* structures in the\n     * graph, so any modifications you make to them will be reflected in the graph.\n     * @bigoh O(1)\n     */\n    const Set<NodeType*>& getNodeSet() const;\n\n    /**\n     * Returns <code>true</code> if the graph contains an arc from\n     * <code>n1</code> to <code>n2</code>.\n     * If any pointer passed is null, or if either node is not contained\n     * in this graph, returns false.\n     * @bigoh O(log V)\n     */\n    bool isConnected(NodeType* n1, NodeType* n2) const;\n\n    /**\n     * Returns <code>true</code> if the graph contains an arc from\n     * <code>n1</code> to <code>n2</code>.\n     * If either node is not contained in this graph, returns false.\n     * @bigoh O(log V)\n     */\n    bool isConnected(const std::string& s1, const std::string& s2) const;\n\n    /**\n     * Returns true if the graph contains an edge from v1 to v2.\n     * If either of the vertexes supplied is not found in the graph, returns false.\n     * @bigoh O(log V)\n     */\n    bool isNeighbor(const std::string& node1, const std::string& node2) const;\n\n    /**\n     * Returns true if the graph contains an edge from v1 to v2.\n     * If either of the vertexes supplied is null or is not found in the graph, returns false.\n     * @bigoh O(log V)\n     */\n    bool isNeighbor(NodeType* node1, NodeType* node2) const;\n\n    /**\n     * Returns <code>true</code> if the graph contains no vertexes.\n     * @bigoh O(1)\n     */\n    bool isEmpty() const;\n\n    /**\n     * Returns the number of nodes in the graph.\n     * Equivalent to size().\n     * @bigoh O(1)\n     */\n    int nodeCount() const;\n\n    /**\n     * Removes an arc from v1 to v2 in the graph, specified by the names of its endpoints.\n     * If more than one arc connects the specified endpoints, all of them are removed.\n     * If no arc connects the given endpoints, or the given arc is not found,\n     * the call has no effect.\n     * @bigoh O(E + log V)\n     */\n    void removeArc(const std::string& s1, const std::string& s2);\n\n    /**\n     * Removes an arc from v1 to v2 in the graph, specified by the node pointers\n     * at its endpoints.\n     * If more than one arc connects the specified endpoints, all of them are removed.\n     * If no arc connects the given endpoints, or the given arc is not found,\n     * the call has no effect.\n     * @bigoh O(E + log V)\n     */\n    void removeArc(NodeType* n1, NodeType* n2);\n\n    /**\n     * Removes the given arc from the graph, specified as an arc pointer.\n     * If more than one arc connects the specified endpoints, all of them are removed.\n     * If no arc connects the given endpoints, or the given arc is not found,\n     * the call has no effect.\n     *\n     * Memory management: Our code will delete/free the ArcType* object when done with it.\n     * You do not need to (and should not) free it yourself.\n     * @bigoh O(log E + log V)\n     */\n    void removeArc(ArcType* arc);\n\n    /**\n     * Removes the node with the given name from the graph.\n     * Removing a node also removes all arcs that contain that node.\n     * If a node name is passed that is not part of the graph,\n     * the call has no effect.\n     * @bigoh O(E + log V)\n     */\n    void removeNode(const std::string& name);\n\n    /**\n     * Removes a node from the graph, specified as a pointer value.\n     * Removing a node also removes all arcs that contain that node.\n     * If a node or name is passed that is null or is not part of the graph,\n     * the call has no effect.\n     *\n     * Memory management: Our code will delete/free the NodeType* object when done with it.\n     * You do not need to (and should not) free it yourself.\n     * @bigoh O(E + log V)\n     */\n    void removeNode(NodeType* node);\n\n    /**\n     * Reads the data for an arc from the scanner.\n     * The <code>forward</code> argument points to the arc in the forward direction.\n     * If the arc is undirected, <code>backward</code> points to the reverse arc;\n     * for directed arcs, the <code>backward</code> pointer is <code>nullptr</code>.\n     *\n     * The default implementation of this method is empty.\n     * Clients that want to initialize other fields in the arc must override\n     * this method so that it initializes one or both arc, as appropriate.\n     */\n    virtual void scanArcData(TokenScanner &, ArcType* /*forward*/, ArcType* /*backward*/) {\n        // empty\n    }\n\n    /**\n     * This method reads one \"entry\" for the graph, which is either a node\n     * description or an arc description.  The <code>scanGraphEntry</code>\n     * method returns <code>true</code> if it reads an entry, and\n     * <code>false</code> at the end of file or at text that cannot be\n     * recognized as a graph entry.\n     *\n     * Node entries consist of the name of a node (which may be quoted\n     * if it contains special characters), optionally followed by data for\n     * the node.  Arc descriptions have one of the following forms:\n     *\n     * <pre>\n     * n1 -> n2\n     * n1 - n2\n     * </pre>\n     *\n     * either of which can be followed by data for the arc.\n     * The first form creates a single directed arc; the second creates two arcs,\n     * one in each direction.\n     *\n     * Clients who want to read node or arc data must override the empty\n     * versions of <code>scanNodeData</code> and <code>scanArcData</code>\n     * included in this interface.\n     */\n    virtual bool scanGraphEntry(TokenScanner& scanner);\n\n    /**\n     * Reads the data for the specified node from the scanner.\n     * The default implementation of this method is empty.\n     * Clients that want to initialize other fields in the node from the token\n     * stream must override this method.\n     */\n    virtual void scanNodeData(TokenScanner&, NodeType*) {\n        /* Empty */\n    }\n\n    /**\n     * Returns the number of nodes in the graph.\n     * Equivalent to nodeCount.\n     * @bigoh O(1)\n     */\n    int size() const;\n\n    /**\n     * Converts the graph to a printable string representation.\n     * @return a string such as <code>\"{A, B, C, D, A - B, B - D, C - D}\"</code>.\n     * @bigoh O(V + E)\n     */\n    std::string toString() const;\n    \n    /**\n     * Writes the data for the arc to the output stream.\n     * The default implementation of this method is empty.\n     * Clients that want to store other fields from the arc must override this\n     * method so that it writes that data in a form that scanArcData can read.\n     */\n    virtual void writeArcData(std::ostream&, ArcType*) const {\n        // empty\n    }\n\n    /**\n     * Writes the data for the node to the output stream.\n     * The default implementation of this method is empty.\n     * Clients that want to store other fields from the node must override this\n     * method so that it writes that data in a form that scanNodeData can read.\n     */\n    virtual void writeNodeData(std::ostream&, NodeType*) const {\n        // empty\n    }\n\n    using graph_iterator = typename Set<NodeType *>::const_iterator;\n    \n    /**\n     * Returns an STL iterator positioned at the first vertex in the graph.\n     * @bigoh O(1)\n     */\n    graph_iterator begin() const {\n        return _nodes.begin();\n    }\n\n    /**\n     * Returns an STL iterator positioned after the last vertex in the graph.\n     * @bigoh O(1)\n     */\n    graph_iterator end() const {\n        return _nodes.end();\n    }\n    \n    /**\n     * Relational operators to compare two graphs.\n     * The ==, != operators require that the ValueType has a == operator\n     * so that the elements can be tested for equality.\n     * @bigoh O(V log V + E log E)\n     */\n    bool operator ==(const Graph& graph2) const;\n\n    /**\n     * Relational operators to compare two graphs.\n     * The ==, != operators require that the ValueType has a == operator\n     * so that the elements can be tested for equality.\n     * @bigoh O(V log V + E log E)\n     */\n    bool operator !=(const Graph& graph2) const;\n\n    /**\n     * Relational operators to compare two graphs.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     * @bigoh O(V log V + E log E)\n     */\n    bool operator <(const Graph& graph2) const;\n\n    /**\n     * Relational operators to compare two graphs.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     * @bigoh O(V log V + E log E)\n     */\n    bool operator <=(const Graph& graph2) const;\n\n    /**\n     * Relational operators to compare two graphs.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     * @bigoh O(V log V + E log E)\n     */\n    bool operator >(const Graph& graph2) const;\n\n    /**\n     * Relational operators to compare two graphs.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     * @bigoh O(V log V + E log E)\n     */\n    bool operator >=(const Graph& graph2) const;\n\nprivate:\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\n    /**\n     * This template class establishes the ordering for nodes and arcs.\n     * Nodes are processed in alphabetical order by node name; arcs are\n     * compared in much the same way, looking first at the start node and\n     * then continuing on to look at the finish node if the start nodes\n     * match.  These functions, however, indicate equality only if the\n     * arguments are identical, in the sense that they are at the same\n     * address.  If two distinct arcs, for example, connect the same pair\n     * of nodes (which is perfectly legal in the graph abstraction and can\n     * be used, for example, to represent multiple modes of travel between\n     * two nodes), those arcs are not the same.\n     *\n     * @private\n     */\n    class GraphComparator {\n    public:\n        bool operator ()(NodeType* n1, NodeType* n2) {\n            return compare(n1, n2) < 0;\n        }\n\n        bool operator ()(ArcType* a1, ArcType* a2) {\n            return compare(a1, a2) < 0;\n        }\n    };\n\n    Set<NodeType*> _nodes{GraphComparator()}; /* The set of nodes in the graph */\n    Set<ArcType*> _arcs{GraphComparator()};   /* The set of arcs in the graph  */\n    Map<std::string, NodeType*> _nodeMap;     /* A map from names to nodes     */\n\npublic:\n    /**\n     * These functions are part of the public interface of the class but are\n     * defined here to avoid adding confusion to the Graph class.\n     *\n     * @private\n     */\n    Graph& operator =(const Graph& src);\n\n    /**\n     * These functions are part of the public interface of the class but are\n     * defined here to avoid adding confusion to the Graph class.\n     *\n     * @private\n     */\n    Graph(const Graph& src);\n\n    /**\n     * Compares two nodes for ordering within a set.\n     *\n     * @private\n     */\n    static int compare(NodeType* n1, NodeType* n2) {\n        if (n1 == n2) {\n            return 0;\n        }\n        if (n1->name < n2->name) {\n            return -1;\n        }\n        if (n1->name > n2->name) {\n            return +1;\n        }\n        return (n1 < n2) ? -1 : +1;\n    }\n\n    /**\n     * Compares two arcs for ordering within a set.\n     *\n     * @private\n     */\n    static int compare(ArcType* a1, ArcType* a2) {\n        if (a1 == a2) {\n            return 0;\n        }\n        NodeType* n1 = a1->start;\n        NodeType* n2 = a2->start;\n        if (n1 != n2) {\n            return compare(n1, n2);\n        }\n        n1 = a1->finish;\n        n2 = a2->finish;\n        if (n1 != n2) {\n            return compare(n1, n2);\n        }\n        return (a1 < a2) ? -1 : +1;\n    }\n\nprivate:\n    void deepCopy(const Graph& src);\n    NodeType* getExistingNode(const std::string& name, const std::string& member = \"\") const;\n    int graphCompare(const Graph& graph2) const;\n    bool isExistingArc(ArcType* arc) const;\n    bool isExistingNode(NodeType* node) const;\n    void verifyExistingNode(NodeType* node, const std::string& member = \"\") const;\n    void verifyNotNull(void* p, const std::string& member = \"\") const;\n    NodeType* scanNode(TokenScanner& scanner);\n};\n\n/*\n * Implementation notes: Graph constructor\n * ---------------------------------------\n * Even though the body of the Graph constructor is empty, important\n * work is done by the initializers, which ensure that the nodes and\n * arcs set are given the correct comparison functions.\n */\n\ntemplate <typename NodeType, typename ArcType>\nGraph<NodeType, ArcType>::Graph() {\n    // empty\n}\n\ntemplate <typename NodeType, typename ArcType>\nGraph<NodeType, ArcType>::Graph(const Graph& src) {\n    deepCopy(src);\n}\n\n/*\n * Implementation notes: Graph destructor\n * --------------------------------------\n * The destructor must free all heap storage used by this graph to\n * represent the nodes and arcs.  The clear method must also reclaim\n * this memory, which means that the destructor can simply call\n * clear to do the work.\n */\ntemplate <typename NodeType, typename ArcType>\nGraph<NodeType, ArcType>::~Graph() {\n    clear();\n}\n\n/*\n * Implementation notes: addArc\n * ----------------------------\n * The addArc method appears in three forms, as described in the\n * interface.  The code for each form of the method, however, is\n * quite straightforward.\n */\ntemplate <typename NodeType, typename ArcType>\nArcType* Graph<NodeType, ArcType>::addArc(const std::string& s1, const std::string& s2) {\n    return addArc(getExistingNode(s1, \"addArc\"), getExistingNode(s2, \"addArc\"));\n}\n\ntemplate <typename NodeType, typename ArcType>\nArcType* Graph<NodeType, ArcType>::addArc(NodeType* n1, NodeType* n2) {\n    verifyExistingNode(n1, \"addArc\");\n    verifyExistingNode(n2, \"addArc\");\n    ArcType* arc = getArc(n1, n2);\n    if (arc) {\n        return arc;\n    } else {\n        arc = new ArcType();\n        arc->start = n1;\n        arc->finish = n2;\n        return addArc(arc);\n    }\n}\n\ntemplate <typename NodeType, typename ArcType>\nArcType* Graph<NodeType, ArcType>::addArc(ArcType* arc) {\n    verifyNotNull(arc, \"addArc\");\n    if (!isExistingNode(arc->start)) {\n        addNode(arc->start);\n    }\n    if (!isExistingNode(arc->finish)) {\n        addNode(arc->finish);\n    }\n    arc->start->arcs.add(arc);\n    _arcs.add(arc);\n    return arc;\n}\n\n/*\n * Implementation notes: addNode\n * -----------------------------\n * The addNode method appears in two forms: one that creates a node\n * from its name and one that assumes that the client has created\n * the new node.  In each case, the implementation must add the node\n * the set of nodes for the graph and add the name-to-node association\n * to the node map.\n */\ntemplate <typename NodeType, typename ArcType>\nNodeType* Graph<NodeType, ArcType>::addNode(const std::string& name) {\n    NodeType* node = getNode(name);\n    if (node) {\n        return node;   // vertex already exists\n    }\n    node = new NodeType();\n    node->arcs = Set<ArcType*>(GraphComparator());\n    node->name = name;\n    return addNode(node);\n}\n\ntemplate <typename NodeType, typename ArcType>\nNodeType* Graph<NodeType, ArcType>::addNode(NodeType* node) {\n    verifyNotNull(node, \"addNode\");\n    NodeType* existingNode = getNode(node->name);\n    if (existingNode) {\n        *existingNode = *node;   // copy state from parameter\n        return existingNode;\n    } else {\n        _nodes.add(node);\n        _nodeMap[node->name] = node;\n        return node;\n    }\n}\n\ntemplate <typename NodeType, typename ArcType>\nint Graph<NodeType, ArcType>::arcCount() const {\n    return getArcSet().size();\n}\n\ntemplate <typename NodeType, typename ArcType>\nNodeType* Graph<NodeType, ArcType>::back() const {\n    if (this->isEmpty()) {\n        error(\"Graph::back: graph is empty\");\n    }\n    return this->_nodes.back();\n}\n\n/*\n * Implementation notes: clear\n * ---------------------------\n * The implementation of clear first frees the nodes and arcs in\n * their respective sets and then uses the Set class clear method\n * to ensure that these sets are empty.\n */\ntemplate <typename NodeType, typename ArcType>\nvoid Graph<NodeType, ArcType>::clear() {\n    for (NodeType* node : _nodes) {\n        delete node;\n    }\n    for (ArcType* arc : _arcs) {\n        delete arc;\n    }\n    _arcs.clear();\n    _nodes.clear();\n    _nodeMap.clear();\n}\n\ntemplate <typename NodeType, typename ArcType>\nvoid Graph<NodeType, ArcType>::clearArcs() {\n    Set<ArcType*> arcsCopy = getArcSet();   // makes a copy\n    for (ArcType* arc : arcsCopy) {\n        removeArc(arc);\n    }\n}\n\ntemplate <typename NodeType, typename ArcType>\nvoid Graph<NodeType, ArcType>::clearArcs(NodeType* node) {\n    if (isExistingNode(node)) {\n        Set<ArcType*> arcsCopy = getArcSet(node);   // makes a copy\n        for (ArcType* arc : arcsCopy) {\n            removeArc(arc);\n        }\n    }\n}\n\ntemplate <typename NodeType, typename ArcType>\nvoid Graph<NodeType, ArcType>::clearArcs(const std::string& name) {\n    Set<ArcType*> arcsCopy = getArcSet(name);   // makes a copy\n    for (ArcType* arc : arcsCopy) {\n        removeArc(arc);\n    }\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::containsArc(NodeType* node1, NodeType* node2) const {\n    return getArc(node1, node2) != nullptr;\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::containsArc(const std::string& node1, const std::string& node2) const {\n    return getArc(node1, node2) != nullptr;\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::containsArc(ArcType* arc) const {\n    if (!arc) {\n        return false;\n    } else {\n        return this->getArcSet().contains(arc);\n    }\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::containsNode(const std::string& name) const {\n    return _nodeMap.containsKey(name);\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::containsNode(NodeType* node) const {\n    if (node) {\n        return _nodes.contains(node);\n    } else {\n        return false;\n    }\n}\n\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::equals(const Graph<NodeType, ArcType>& graph2) const {\n    return *this == graph2;\n}\n\ntemplate <typename NodeType, typename ArcType>\nNodeType* Graph<NodeType, ArcType>::front() const {\n    if (this->isEmpty()) {\n        error(\"Graph::front: graph is empty\");\n    }\n    return this->_nodes.front();\n}\n\ntemplate <typename NodeType, typename ArcType>\nArcType* Graph<NodeType, ArcType>::getArc(NodeType* node1, NodeType* node2) const {\n    if (!containsNode(node1) || !containsNode(node2)) {\n        return nullptr;\n    }\n    for (ArcType* arc : getArcSet(node1)) {\n        if (arc->finish == node2) {\n            return arc;\n        }\n    }\n    return nullptr;\n}\n\ntemplate <typename NodeType, typename ArcType>\nArcType* Graph<NodeType, ArcType>::getArc(const std::string& node1, const std::string& node2) const {\n    return getArc(getNode(node1), getNode(node2));\n}\n\ntemplate <typename NodeType, typename ArcType>\nconst Set<ArcType*>& Graph<NodeType, ArcType>::getArcSet() const {\n    return _arcs;\n}\n\ntemplate <typename NodeType, typename ArcType>\nconst Set<ArcType*>& Graph<NodeType, ArcType>::getArcSet(NodeType* node) const {\n    if (isExistingNode(node)) {\n        return node->arcs;\n    } else {\n        static Set<ArcType*> set;   // empty\n        return set;\n    }\n}\n\ntemplate <typename NodeType, typename ArcType>\nconst Set<ArcType*>& Graph<NodeType, ArcType>::getArcSet(const std::string& name) const {\n    return getArcSet(getNode(name));\n}\n\ntemplate <typename NodeType, typename ArcType>\nNodeType* Graph<NodeType, ArcType>::getExistingNode(const std::string& name, const std::string& member) const {\n    NodeType* node = _nodeMap.get(name);\n    if (!node) {\n        error(\"Graph::\" + member + \": no node named \" + name);\n    }\n    return node;\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::isExistingArc(ArcType* arc) const {\n    return arc && _arcs.contains(arc);\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::isExistingNode(NodeType* node) const {\n    return node && _nodeMap.containsKey(node->name) && _nodeMap.get(node->name) == node;\n}\n\ntemplate <typename NodeType, typename ArcType>\nvoid Graph<NodeType, ArcType>::verifyExistingNode(NodeType* node, const std::string& member) const {\n    verifyNotNull(node, member);\n    if (!isExistingNode(node)) {\n        error(\"Graph::\" + member + \": node not found in graph\");\n    }\n}\n\ntemplate <typename NodeType, typename ArcType>\nvoid Graph<NodeType, ArcType>::verifyNotNull(void* p, const std::string& member) const {\n    if (!p) {\n        error(\"Graph::\" + member + \": parameter cannot be null\");\n    }\n}\n\ntemplate <typename NodeType, typename ArcType>\nconst Set<ArcType*> Graph<NodeType, ArcType>::getInverseArcSet(NodeType* node) const {\n    Set<ArcType*> set;\n    if (isExistingNode(node)) {\n        for (ArcType* arc : getArcSet()) {\n            if (arc->finish == node) {\n                set.add(arc);\n            }\n        }\n    }\n    return set;\n}\n\ntemplate <typename NodeType, typename ArcType>\nconst Set<ArcType*> Graph<NodeType, ArcType>::getInverseArcSet(const std::string& nodeName) const {\n    return getInverseArcSet(getNode(nodeName));\n}\n\ntemplate <typename NodeType, typename ArcType>\nSet<std::string> Graph<NodeType, ArcType>::getInverseNeighborNames(NodeType* node) const {\n    Set<std::string> set;\n    if (isExistingNode(node)) {\n        for (ArcType* arc : getArcSet()) {\n            if (arc->finish == node) {\n                set.add(arc->start->name);\n            }\n        }\n    }\n    return set;\n}\n\ntemplate <typename NodeType, typename ArcType>\nSet<std::string> Graph<NodeType, ArcType>::getInverseNeighborNames(const std::string& name) const {\n    return getInverseNeighborNames(getNode(name));\n}\n\ntemplate <typename NodeType, typename ArcType>\nSet<NodeType*> Graph<NodeType, ArcType>::getInverseNeighbors(NodeType* node) const {\n    Set<NodeType*> set;\n    if (isExistingNode(node)) {\n        for (ArcType* arc : getArcSet()) {\n            if (arc->finish == node) {\n                set.add(arc->start);\n            }\n        }\n    }\n    return set;\n}\n\ntemplate <typename NodeType, typename ArcType>\nSet<NodeType*> Graph<NodeType, ArcType>::getInverseNeighbors(const std::string& nodeName) const {\n    return getInverseNeighbors(getNode(nodeName));\n}\n\ntemplate <typename NodeType, typename ArcType>\nSet<std::string> Graph<NodeType, ArcType>::getNeighborNames(NodeType* node) const {\n    Set<std::string> neighbors;\n    if (isExistingNode(node)) {\n        for (ArcType* arc : node->arcs) {\n            neighbors.add(arc->finish->name);\n        }\n    }\n    return neighbors;\n}\n\ntemplate <typename NodeType, typename ArcType>\nSet<std::string> Graph<NodeType, ArcType>::getNeighborNames(const std::string& name) const {\n    return getNeighborNames(getNode(name));\n}\n\n/*\n * Implementation notes: getNeighbors\n * ----------------------------------\n * This implementation recomputes the set each time, which is reasonably\n * efficient if the degree of the node is small.\n */\ntemplate <typename NodeType, typename ArcType>\nSet<NodeType*> Graph<NodeType, ArcType>::getNeighbors(NodeType* node) const {\n    Set<NodeType*> nodesResult{GraphComparator{}};\n    if (isExistingNode(node)) {\n        for (ArcType* arc : node->arcs) {\n            nodesResult.add(arc->finish);\n        }\n    }\n    return nodesResult;\n}\n\ntemplate <typename NodeType, typename ArcType>\nSet<NodeType*> Graph<NodeType, ArcType>::getNeighbors(const std::string& name) const {\n    return getNeighbors(getNode(name));\n}\n\n/*\n * Implementation notes: getNode, getExistingNode\n * ----------------------------------------------\n * The getNode method simply looks up the name in the map, which correctly\n * returns nullptr if the name is not found.  Other methods in the\n * implementation call the private method getExistingNode instead,\n * which checks for a null value and signals an error.\n */\ntemplate <typename NodeType, typename ArcType>\nNodeType* Graph<NodeType, ArcType>::getNode(const std::string& name) const {\n    return _nodeMap.get(name);\n}\n\ntemplate <typename NodeType, typename ArcType>\nSet<std::string> Graph<NodeType, ArcType>::getNodeNames() const {\n    Set<std::string> nodeNames;\n    for (NodeType* node : _nodes) {\n        nodeNames.add(node->name);\n    }\n    return nodeNames;\n}\n\n/*\n * Implementation notes: getNodeSet, getArcSet\n * -------------------------------------------\n * These methods simply return the set requested by the client.  The\n * sets are returned by reference for efficiency, because doing so\n * eliminates the need to copy the set.\n */\ntemplate <typename NodeType, typename ArcType>\nconst Set<NodeType*>& Graph<NodeType, ArcType>::getNodeSet() const {\n    return _nodes;\n}\n\n/*\n * Implementation notes: isConnected\n * ---------------------------------\n * Node n1 is connected to n2 if any of the arcs leaving n1 finish at n2.\n * The two versions of this method allow nodes to be specified either as\n * node pointers or by name.\n */\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::isConnected(NodeType* n1, NodeType* n2) const {\n    // don't call verifyExistingNode here because it will throw an error\n    // if n1 or n2 is not found; should just make the call return false\n    if (!isExistingNode(n1) || !isExistingNode(n2)) {\n        return false;\n    }\n    for (ArcType* arc : n1->arcs) {\n        if (arc->finish == n2) {\n            return true;\n        }\n    }\n    return false;\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::isConnected(const std::string& s1, const std::string& s2) const {\n    // don't call getExistingNode here because it will throw an error\n    // if s1 or s2 is not found; should just make the call return false\n    return isConnected(_nodeMap.get(s1), _nodeMap.get(s2));\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::isNeighbor(const std::string& node1, const std::string& node2) const {\n    return isConnected(node1, node2);\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::isNeighbor(NodeType* node1, NodeType* node2) const {\n    return isConnected(node1, node2);\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::isEmpty() const {\n    return _nodes.isEmpty();\n}\n\ntemplate <typename NodeType, typename ArcType>\nint Graph<NodeType, ArcType>::nodeCount() const {\n    return getNodeSet().size();\n}\n\n/*\n * Implementation notes: removeArc\n * -------------------------------\n * These methods remove arcs from the graph, which is ordinarily simply\n * a matter of removing the arc from two sets: the set of arcs in the\n * graph as a whole and the set of arcs in the starting node.  The\n * methods that remove an arc specified by its endpoints, however,\n * must take account of the fact that there might be more than one\n * such arc and delete all of them.\n */\ntemplate <typename NodeType, typename ArcType>\nvoid Graph<NodeType, ArcType>::removeArc(const std::string& s1, const std::string& s2) {\n    // don't call getExistingNode here because it will throw an error\n    // if s1 or s2 is not found; should just make the call have no effect\n    removeArc(_nodeMap.get(s1), _nodeMap.get(s2));\n}\n\ntemplate <typename NodeType, typename ArcType>\nvoid Graph<NodeType, ArcType>::removeArc(NodeType* n1, NodeType* n2) {\n    // don't call verifyExistingNode here because it will throw an error\n    // if n1 or n2 is not found; should just make the call have no effect\n    if (!isExistingNode(n1) || !isExistingNode(n2)) {\n        return;\n    }\n    Vector<ArcType*> toRemove;\n    for (ArcType* arc : _arcs) {\n        if (arc->start == n1 && arc->finish == n2) {\n            toRemove.add(arc);\n        }\n    }\n    for (ArcType* arc : toRemove) {\n        removeArc(arc);\n    }\n}\n\ntemplate <typename NodeType, typename ArcType>\nvoid Graph<NodeType, ArcType>::removeArc(ArcType* arc) {\n    if (!isExistingArc(arc)) {\n        return;\n    }\n    arc->start->arcs.remove(arc);\n    _arcs.remove(arc);\n    delete arc;\n}\n\n/*\n * Implementation notes: removeNode\n * --------------------------------\n * The removeNode method must remove the specified node but must\n * also remove any arcs in the graph containing the node.  To avoid\n * changing the node set during iteration, this implementation creates\n * a vector of arcs that require deletion.\n */\ntemplate <typename NodeType, typename ArcType>\nvoid Graph<NodeType, ArcType>::removeNode(const std::string& name) {\n    // don't call getExistingNode here because it will throw an error\n    // if name is not found; should just make the call have no effect\n    removeNode(_nodeMap.get(name));\n}\n\ntemplate <typename NodeType, typename ArcType>\nvoid Graph<NodeType, ArcType>::removeNode(NodeType* node) {\n    // don't call verifyExistingNode here because it will throw an error\n    // if node is not found; should just make the call have no effect\n    if (!isExistingNode(node)) {\n        return;\n    }\n    Vector<ArcType*> toRemove;\n    for (ArcType* arc : _arcs) {\n        if (arc->start == node || arc->finish == node) {\n            toRemove.add(arc);\n        }\n    }\n    for (ArcType* arc : toRemove) {\n        removeArc(arc);\n    }\n    _nodes.remove(node);\n    _nodeMap.remove(node->name);\n    delete node;\n}\n\n/*\n * Implementation notes: scanGraphEntry\n * ------------------------------------\n * The scanGraphEntry and its helper methods take a scanner that is\n * initialized to the input stream and has the options ignoreWhitespace,\n * scanStrings, and scanNumbers set.\n */\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::scanGraphEntry(TokenScanner& scanner) {\n    NodeType* n1 = scanNode(scanner);\n    if (!n1) {\n        return false;\n    }\n    std::string op = scanner.nextToken();\n    if (op != \"-\" && op != \"->\") {\n        scanner.saveToken(op);\n        return true;\n    }\n    NodeType* n2 = scanNode(scanner);\n    if (!n2) {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n        error(\"Graph::scanGraphEntry: Missing node after \" + op);\n#endif\n        return false;\n    }\n    ArcType* forward = new ArcType();\n    forward->start = n1;\n    forward->finish = n2;\n    addArc(forward);\n    ArcType* backward = nullptr;\n    if (op == \"-\") {\n        backward = new ArcType();\n        backward->start = n2;\n        backward->finish = n1;\n        addArc(backward);\n    }\n    scanArcData(scanner, forward, backward);\n    return true;\n}\n\ntemplate <typename NodeType, typename ArcType>\nNodeType* Graph<NodeType, ArcType>::scanNode(TokenScanner& scanner) {\n    std::string token = scanner.nextToken();\n    switch (scanner.getTokenType(token)) {\n    case TokenScanner::WORD:\n        break;\n    case TokenScanner::STRING:\n        token = scanner.getStringValue(token);\n        break;\n    default:\n        scanner.saveToken(token);\n        return nullptr;\n    }\n    NodeType* node = getNode(token);\n    if (!node) {\n        node = new NodeType();\n        node->name = token;\n        scanNodeData(scanner, node);\n        addNode(node);\n    }\n    return node;\n}\n\n/*\n * Implementation notes: size, isEmpty\n * -----------------------------------\n * These methods are defined in terms of the node set, so the implementation\n * simply forwards the request there.  Note that it is impossible for a\n * graph to have arcs if it has no nodes.\n */\ntemplate <typename NodeType, typename ArcType>\nint Graph<NodeType, ArcType>::size() const {\n    return _nodes.size();\n}\n\ntemplate <typename NodeType, typename ArcType>\nstd::string Graph<NodeType, ArcType>::toString() const {\n    std::ostringstream os;\n    os << *this;\n    return os.str();\n}\n\n/*\n * Implementation notes: operator =, copy constructor\n * -------------------------------------------------\n * These methods ensure that copying a graph creates an entirely new\n * parallel structure of nodes and arcs.\n */\ntemplate <typename NodeType, typename ArcType>\nGraph<NodeType,ArcType>&\nGraph<NodeType, ArcType>::operator =(const Graph& src) {\n    if (this != &src) {\n        clear();\n        deepCopy(src);\n    }\n    return *this;\n}\n\n/*\n * Private method: deepCopy\n * ------------------------\n * Common code factored out of the copy constructor and operator= to\n * copy the contents from the other graph.\n */\ntemplate <typename NodeType, typename ArcType>\nvoid Graph<NodeType, ArcType>::deepCopy(const Graph& src) {\n    for (NodeType* oldNode : src._nodes) {\n        NodeType* newNode = new NodeType();\n        *newNode = *oldNode;\n        newNode->arcs.clear();\n        addNode(newNode);\n    }\n    for (ArcType* oldArc : src._arcs) {\n        ArcType* newArc = new ArcType();\n        *newArc = *oldArc;\n        newArc->start = getExistingNode(oldArc->start->name, \"deepCopy\");\n        newArc->finish = getExistingNode(oldArc->finish->name, \"deepCopy\");\n        addArc(newArc);\n    }\n}\n\n\n/**\n * Compares two graphs for <, <=, ==, !=, >, >= relational operators.\n * Vertices are compared, including their neighboring arcs.\n *\n * @private\n */\ntemplate <typename NodeType, typename ArcType>\nint Graph<NodeType, ArcType>::graphCompare(const Graph<NodeType, ArcType>& graph2) const {\n    // optimization: if literally the same graph, return true\n    if (this == &graph2) {\n        return 0;\n    }\n    \n    auto itr1 = begin();\n    auto itr2 = graph2.begin();\n    auto g1end = end();\n    auto g2end = graph2.end();\n    \n    while (itr1 != g1end && itr2 != g2end) {\n        // compare each pair of elements from iterators\n        NodeType* node1 = *itr1;\n        NodeType* node2 = *itr2;\n        \n        // optimization: if literally same node, equal; don't compare\n        if (node1 != node2) {\n            // first check names\n            if (node1->name != node2->name) {\n                return node1->name.compare(node2->name);\n            }\n            \n            // then check all arcs, pairwise\n            auto eitr1 = node1->arcs.begin();\n            auto eitr2 = node2->arcs.begin();\n            auto e1end = node1->arcs.end();\n            auto e2end = node2->arcs.end();\n            while (eitr1 != e1end && eitr2 != e2end) {\n                ArcType* arc1 = *eitr1;\n                ArcType* arc2 = *eitr2;\n                \n                // optimization: if literally same arc, equal; don't compare\n                if (arc1 != arc2) {\n                    // first check start vertex names, then end vertex names\n                    if (arc1->start->name != arc2->start->name) {\n                        return arc1->start->name.compare(arc2->start->name);\n                    } else if (arc1->finish->name != arc2->finish->name) {\n                        return arc1->finish->name.compare(arc2->finish->name);\n                    }\n                }\n                eitr1++;\n                eitr2++;\n            }\n            \n            // if we get here, everything from me matched graph2, so either arcs equal,\n            // or one is shorter than the other (fewer arcs) and is therefore less\n            if (eitr1 == e1end && eitr2 == e2end) {\n                // keep going\n            } else if (eitr1 == e1end) {\n                return -1;\n            } else {\n                return 1;\n            }\n        }\n        \n        // if we get here, those two vertices and their outbound arcs\n        // were equal; so advance to next element\n        itr1++;\n        itr2++;\n    }\n    \n    // if we get here, everything from me matched graph2, so either equal,\n    // or one is shorter than the other (fewer vertices) and is therefore less\n    if (itr1 == g1end && itr2 == g2end) {\n        return 0;\n    } else if (itr1 == g1end) {\n        return -1;\n    } else {\n        return 1;\n    }\n}\n\n/*\n * Operators\n */\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::operator ==(const Graph& graph2) const {\n    // optimization: if sizes not same, graphs not equal\n    if (_nodes.size() != graph2._nodes.size()\n            || _arcs.size() != graph2._arcs.size()\n            || _nodeMap.size() != graph2._nodeMap.size()) {\n        return false;\n    }\n    return graphCompare(graph2) == 0;\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::operator !=(const Graph& graph2) const {\n    return !(*this == graph2);\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::operator <(const Graph& graph2) const {\n    return graphCompare(graph2) < 0;\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::operator <=(const Graph& graph2) const {\n    return graphCompare(graph2) <= 0;\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::operator >(const Graph& graph2) const {\n    return graphCompare(graph2) > 0;\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::operator >=(const Graph& graph2) const {\n    return graphCompare(graph2) >= 0;\n}\n\n/**\n * Writes the given graph to the given output stream.\n * The insertion and extraction operators for graphs are more complicated\n * than for the standard collection types because the nodes and arcs can\n * contain client-specific data.  To ensure that this information is\n * correctly written and read by these operators, clients must override\n * the methods writeNodeData, writeArcData, scanNodeData, and scanArcData.\n */\ntemplate <typename NodeType, typename ArcType>\nstd::ostream& operator <<(std::ostream& os, const Graph<NodeType, ArcType>& g) {\n    os << \"{\";\n    bool started = false;\n    for (NodeType* node : g.getNodeSet()) {\n        if (started) {\n            os << \", \";\n        }\n        writeGenericValue(os, node->name, stringIsInteger(node->name) || stringIsReal(node->name));\n        g.writeNodeData(os, node);\n        started = true;\n    }\n    for (ArcType* arc : g.getArcSet()) {\n        os << \", \";\n        writeGenericValue(os, arc->start->name, stringIsInteger(arc->start->name) || stringIsReal(arc->start->name));\n        os << \" -> \";\n        writeGenericValue(os, arc->finish->name, stringIsInteger(arc->finish->name) || stringIsReal(arc->finish->name));\n        g.writeArcData(os, arc);\n    }\n    return os << \"}\";\n}\n\n/**\n * Reads the given graph from the given input stream.\n * The insertion and extraction operators for graphs are more complicated\n * than for the standard collection types because the nodes and arcs can\n * contain client-specific data.  To ensure that this information is\n * correctly written and read by these operators, clients must override\n * the methods writeNodeData, writeArcData, scanNodeData, and scanArcData.\n */\ntemplate <typename NodeType, typename ArcType>\nstd::istream& operator >>(std::istream& is, Graph<NodeType, ArcType>& g) {\n    TokenScanner scanner(is);\n    scanner.ignoreWhitespace();\n    scanner.scanNumbers();\n    scanner.scanStrings();\n    scanner.addOperator(\"->\");\n    std::string token = scanner.nextToken();\n    if (token != \"{\") {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n        error(\"Graph::operator >>: Missing {\");\n#endif\n        is.setstate(std::ios_base::failbit);\n        return is;\n    }\n    g.clear();\n    while (g.scanGraphEntry(scanner)) {\n        token = scanner.nextToken();\n        if (token == \"}\") {\n            scanner.saveToken(token);\n        } else if (token != \",\") {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n            error(\"Graph::operator >>: Unexpected token \" + token);\n#endif\n            is.setstate(std::ios_base::failbit);\n            return is;\n        }\n    }\n    token = scanner.nextToken();\n    if (token != \"}\") {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n        error(\"Graph::operator >>: Missing }\");\n#endif\n        is.setstate(std::ios_base::failbit);\n        return is;\n    }\n    return is;\n}\n\n/**\n * Template hash function for graphs.\n */\ntemplate <typename NodeType, typename ArcType>\nint hashCode(const Graph<NodeType, ArcType>& graph) {\n    int code = hashSeed();\n    for (NodeType* node : graph) {\n        code = hashMultiplier() * code + hashCode(node->name);\n    }\n    for (ArcType* arc : graph.getArcSet()) {\n        code = hashMultiplier() * code + hashCode(arc->start->name);\n        code = hashMultiplier() * code + hashCode(arc->finish->name);\n    }\n    return (code & hashMask());\n}\n\n#endif // _graph_h\n\n/////////////////////// END code extracted from StanfordCPPLib/collections/graph.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/collections/gridlocation.h ///////////////////////\n/*\n * File: gridlocation.h\n * --------------------\n * This file exports the <code>GridLocation</code> structure, which is a small\n * structure representing a row and column.\n * The row/column values are allowed to be negative or out of bounds; if an\n * out-of-bounds location is passed to a grid, the grid will throw an error.\n *\n * Several members of the <code>Grid</code> and <code>SparseGrid</code> classes\n * have been retrofitted to accept <code>GridLocation</code>s in place of integers\n * for row/column indexes.\n *\n * This file also declares the <code>GridLocationRange</code> class,\n * which represents a 2D range of grid locations that can be looped over.\n *\n * See gridlocation.cpp for the implementation of each member.\n *\n * @version 2018/03/12\n * - initial version\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _gridlocation_h\n#define _gridlocation_h\n\n#include <iostream>\n#include <iterator>\n#include <string>\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\nclass GridLocationRange;   // forward declaration\n\nstruct GridLocation {\npublic:\n    /*\n     * Constructs a location representing the given row and column (default 0).\n     * Any indexes are allowed, including negatives and out-of-bounds indexes.\n     */\n    GridLocation(int row = 0, int col = 0);\n\n    /*\n     * Returns a range of locations that are <= the given range away from this one.\n     * For example, if you pass 1, will return the 9 locations in range (r-1, c-1) thru (r+1, c+1).\n     * The rowMajor parameter indicates whether the range will emit its members\n     * in row-major (default) or column-major order.\n     */\n    GridLocationRange neighbors(int range = 1, bool rowMajor = true) const;\n\n    /*\n     * Returns a string representation of this location, such as \"r2c17\".\n     */\n    std::string toString() const;\n\n    /* row and column data - may be directly accessed or modified */\n    int row;\n    int col;\n};\n\n/*\n * Returns an integer hash code for this grid location.\n */\nint hashCode(const GridLocation& loc);\n\n/*\n * Relational operators for comparing grid locations.\n */\nbool operator <(const GridLocation& loc1, const GridLocation& loc2);\nbool operator <=(const GridLocation& loc1, const GridLocation& loc2);\nbool operator ==(const GridLocation& loc1, const GridLocation& loc2);\nbool operator !=(const GridLocation& loc1, const GridLocation& loc2);\nbool operator >(const GridLocation& loc1, const GridLocation& loc2);\nbool operator >=(const GridLocation& loc1, const GridLocation& loc2);\n\n/*\n * I/O stream operators for reading or writing locations in their toString format.\n */\nstd::ostream& operator <<(std::ostream& out, const GridLocation& loc);\nstd::istream& operator >>(std::istream& input, GridLocation& loc);\n\n\n/*\n * Represents a range of grid locations.\n * The actual individual grid locations are not all created and stored in\n * this object; that would require a lot of memory usage.\n * Instead, we primarily use this class for for-each looping over a given range\n * of locations using its internal iterator.\n *\n * Common usage pattern:\n * GridLocationRange range(0, 0, 10, 5);\n * for (GridLocation loc : range) { ... }\n *\n * or, if you have a Grid collection, its locations() method returns a GridLocationRange\n * object that you can loop over directly.\n *\n * for (GridLocation loc : grid.locations()) { ... }\n */\nclass GridLocationRange {\nprivate:\n    /*\n     * Internal iterator over range of indexes.\n     */\n    class GridLocationRangeIterator : public std::iterator<std::input_iterator_tag, GridLocation> {\n    private:\n        const GridLocationRange* glr;\n        GridLocation loc;\n\n    public:\n        GridLocationRangeIterator(const GridLocationRange* glr, bool end)\n                : glr(glr) {\n            if (end) {\n                loc.row = glr->endRow() + 1;\n                loc.col = glr->endCol() + 1;\n            } else {\n                loc = glr->startLocation();\n            }\n        }\n\n        GridLocationRangeIterator(const GridLocationRangeIterator& itr)\n                : glr(itr.glr),\n                  loc(itr.loc) {\n            // empty\n        }\n\n        GridLocationRangeIterator& operator ++() {\n            if (glr->isRowMajor()) {\n                loc.col++;\n                if (loc.col > glr->endCol()) {\n                    loc.col = glr->startCol();\n                    loc.row++;\n                }\n            } else {\n                loc.row++;\n                if (loc.row > glr->endRow()) {\n                    loc.row = glr->startRow();\n                    loc.col++;\n                }\n            }\n            if (!glr->contains(loc)) {\n                loc.row = glr->endRow() + 1;\n                loc.col = glr->endCol() + 1;\n            }\n            return *this;\n        }\n\n        GridLocationRangeIterator operator ++(int) {\n            GridLocationRangeIterator copy(*this);\n            operator++();\n            return copy;\n        }\n\n        GridLocationRangeIterator& operator --() {\n            if (glr->isRowMajor()) {\n                loc.col--;\n                if (loc.col < glr->startCol()) {\n                    loc.col = glr->endCol();\n                    loc.row--;\n                }\n            } else {\n                loc.row--;\n                if (loc.row < glr->startRow()) {\n                    loc.row = glr->endRow();\n                    loc.col--;\n                }\n            }\n            return *this;\n        }\n\n        GridLocationRangeIterator operator --(int) {\n            GridLocationRangeIterator copy(*this);\n            operator--();\n            return copy;\n        }\n\n        bool operator ==(const GridLocationRangeIterator& rhs) const {\n            return loc == rhs.loc;\n        }\n\n        bool operator !=(const GridLocationRangeIterator& rhs) const {\n            return !(*this == rhs);\n        }\n\n        bool operator <(const GridLocationRangeIterator& rhs) const {\n            if (glr != rhs.glr) {\n                error(\"GridLocationRange Iterator::operator <: Iterators are in different ranges\");\n            }\n            return loc < rhs.loc;\n        }\n\n        bool operator <=(const GridLocationRangeIterator& rhs) const {\n            if (glr != rhs.glr) {\n                error(\"GridLocationRange Iterator::operator <=: Iterators are in different ranges\");\n            }\n            return loc <= rhs.loc;\n        }\n\n        bool operator >(const GridLocationRangeIterator& rhs) const {\n            if (glr != rhs.glr) {\n                error(\"GridLocationRange Iterator::operator >: Iterators are in different ranges\");\n            }\n            return loc > rhs.loc;\n        }\n\n        bool operator >=(const GridLocationRangeIterator& rhs) const {\n            if (glr != rhs.glr) {\n                error(\"GridLocationRange Iterator::operator >=: Iterators are in different ranges\");\n            }\n            return loc >= rhs.loc;\n        }\n\n        const GridLocation& operator *() const {\n            return loc;\n        }\n\n        const GridLocation* operator ->() const {\n            return &loc;\n        }\n    };\n\n    GridLocation _start;\n    GridLocation _end;\n    bool _isRowMajor;\n\npublic:\n    /*\n     * Constructs a range over the given start/end locations, inclusive.\n     * The isRowMajor flag indicates whether we will loop over the range in\n     * row-major order (true, default) or column-major order (false).\n     */\n    GridLocationRange(int startRow = 0, int startCol = 0, int endRow = 0, int endCol = 0, bool isRowMajor = true);\n\n    /*\n     * Constructs a range over the given start/end locations, inclusive.\n     * The isRowMajor flag indicates whether we will loop over the range in\n     * row-major order (true, default) or column-major order (false).\n     */\n    GridLocationRange(const GridLocation& startLoc, const GridLocation& endLoc, bool isRowMajor = true);\n\n    /*\n     * Returns an iterator over the range.\n     */\n    GridLocationRangeIterator begin() const;\n\n    /*\n     * Returns true if this range entirely contains the given other range.\n     */\n    bool contains(const GridLocation& loc) const;\n\n    /*\n     * Returns an iterator at the end of the range.\n     */\n    GridLocationRangeIterator end() const;\n\n    /*\n     * Returns the last column in this range, inclusive.\n     */\n    int endCol() const;\n\n    /*\n     * Returns the last row/column location in this range, inclusive.\n     */\n    const GridLocation& endLocation() const;\n\n    /*\n     * Returns the last row in this range, inclusive.\n     */\n    int endRow() const;\n\n    /*\n     * Returns true if this range contains no rows or columns.\n     */\n    bool isEmpty() const;\n\n    /*\n     * Returns true if this range should be traversed in row-major order,\n     * as specified at time of construction (default true).\n     */\n    bool isRowMajor() const;\n\n    /*\n     * Returns the first column in this range.\n     */\n    int startCol() const;\n\n    /*\n     * Returns the first row/column location in this range.\n     */\n    const GridLocation& startLocation() const;\n\n    /*\n     * Returns the first row in this range.\n     */\n    int startRow() const;\n\n    /*\n     * Returns a string representation of this range,\n     * such as \"[r1c3 .. r4c7]\".\n     */\n    std::string toString() const;\n};\n\n/*\n * I/O stream operators for writing location ranges in their toString format.\n */\nstd::ostream& operator <<(std::ostream& out, const GridLocationRange& range);\n\n#endif // _gridlocation_h\n\n/////////////////////// END code extracted from StanfordCPPLib/collections/gridlocation.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/collections/grid.h ///////////////////////\n/*\n * File: grid.h\n * ------------\n * This file exports the <code>Grid</code> class, which offers a\n * convenient abstraction for representing a two-dimensional array.\n *\n * @version 2019/04/09\n * - renamed private members with underscore naming scheme for consistency\n * @version 2018/03/12\n * - added overloads that accept GridLocation: get, inBounds, locations, set, operator []\n * @version 2018/03/10\n * - added methods front, back, clear\n * @version 2017/11/14\n * - added iterator version checking support\n * @version 2017/10/18\n * - fix compiler warnings\n * @version 2016/12/09\n * - bug fix in resize method (credit to Liu Ren)\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * - made member variables actually private (oops)\n * - added size() method\n * @version 2016/08/10\n * - added constructor support for std initializer_list usage, such as\n *   {{1, 2, 3}, {4, 5, 6}}\n * @version 2016/08/04\n * - fixed operator >> to not throw errors\n * @version 2015/07/05\n * - using global hashing functions rather than global variables\n * @version 2014/11/20\n * - minor bug fixes in member initializers\n * @version 2014/11/13\n * - added comparison operators <, >=, etc.\n * - added template hashCode function\n * @version 2014/10/10\n * - added resize(true) function with ability to retain old contents\n * - made ==, != operators const as they should be\n * - added comparison operators ==, !=\n * 2014/08/16\n * - added width, height functions; added mapAllColumnMajor\n * 2014/07/09\n * - changed checkGridIndexes range checking function into a private member\n *   function to avoid unused-function errors on some newer compilers\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _grid_h\n#define _grid_h\n\n#include <initializer_list>\n#include <iostream>\n#include <string>\n#include <sstream>\n#include <functional>\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\n/*\n * Class: Grid<ValueType>\n * ----------------------\n * This class stores an indexed, two-dimensional array.  The following code,\n * for example, creates an identity matrix of size <code>n</code>, in which\n * the elements are 1.0 along the main diagonal and 0.0 everywhere else:\n *\n *<pre>\n *    Grid&lt;double&gt; createIdentityMatrix(int n) {\n *       Grid&lt;double&gt; matrix(n, n);\n *       for (int i = 0; i &lt; n; i++) {\n *          matrix[i][i] = 1.0;\n *       }\n *       return matrix;\n *    }\n *</pre>\n */\n\ntemplate <typename ValueType>\nclass Grid {\npublic:\n    /* Forward reference */\n    class GridRow;\n    class GridRowConst;\n\n    /*\n     * Constructor: Grid\n     * Usage: Grid<ValueType> grid;\n     *        Grid<ValueType> grid(nRows, nCols);\n     * ------------------------------------------\n     * Initializes a new grid.  The second form of the constructor is\n     * more common and creates a grid with the specified number of rows\n     * and columns.  Each element of the grid is initialized to the\n     * default value for the type.  The default constructor creates an\n     * empty grid for which the client must call <code>resize</code> to\n     * set the dimensions.\n     * The three-argument constructor also accepts an initial value and\n     * fills every cell of the grid with that value.\n     */\n    Grid() = default;\n    Grid(int _rowCount, int _columnCount);\n    Grid(int _rowCount, int _columnCount, const ValueType& value);\n\n    /*\n     * This constructor uses an initializer list to set up the grid.\n     * Usage: Grid<int> grid {{1, 2, 3}, {4, 5, 6}};\n     */\n    Grid(std::initializer_list<std::initializer_list<ValueType>> list);\n\n    /*\n     * Destructor: ~Grid\n     * -----------------\n     * Frees any heap storage associated with this grid.\n     */\n    virtual ~Grid() = default;\n    \n    /*\n     * Method: back\n     * Usage: ValueType value = grid.back();\n     * -------------------------------------\n     * Returns the last value in the grid in the order established by the\n     * <code>foreach</code> macro.\n     * This is equivalent to grid[numRows - 1][numCols - 1].\n     * If the grid is empty, generates an error.\n     */\n    ValueType back() const;\n\n    /*\n     * Method: clear\n     * Usage: grid.clear();\n     * --------------------\n     * Sets every value in the grid to its element type's default value.\n     */\n    void clear();\n\n    /*\n     * Method: equals\n     * Usage: if (grid.equals(grid2)) ...\n     * ----------------------------------\n     * Returns <code>true</code> if this grid contains exactly the same\n     * values as the given other grid.\n     * Identical in behavior to the == operator.\n     */\n    bool equals(const Grid<ValueType>& grid2) const;\n    \n    /*\n     * Method: fill\n     * Usage: grid.fill(value);\n     * ------------------------\n     * Stores the given value in every cell of this grid.\n     */\n    void fill(const ValueType& value);\n\n    /*\n     * Method: front\n     * Usage: ValueType value = grid.front();\n     * --------------------------------------\n     * Returns the first value in the grid in the order established by the\n     * <code>foreach</code> macro.  This is equivalent to grid[0][0].\n     * If the grid is empty, generates an error.\n     */\n    ValueType front() const;\n\n    /*\n     * Method: get\n     * Usage: ValueType value = grid.get(row, col);\n     * --------------------------------------------\n     * Returns the element at the specified <code>row</code>/<code>col</code>\n     * position in this grid.  This method signals an error if the\n     * <code>row</code> and <code>col</code> arguments are outside\n     * the grid boundaries.\n     */\n    ValueType get(int row, int col);\n    const ValueType& get(int row, int col) const;\n    ValueType get(const GridLocation& loc);\n    const ValueType& get(const GridLocation& loc) const;\n\n    /*\n     * Method: height\n     * Usage: int nRows = grid.height();\n     * ---------------------------------\n     * Returns the grid's height, that is, the number of rows in the grid.\n     */\n    int height() const;\n    \n    /*\n     * Method: inBounds\n     * Usage: if (grid.inBounds(row, col)) ...\n     * ---------------------------------------\n     * Returns <code>true</code> if the specified row and column position\n     * is inside the bounds of the grid.\n     */\n    bool inBounds(int row, int col) const;\n    bool inBounds(const GridLocation& loc) const;\n\n    /*\n     * Method: isEmpty\n     * Usage: if (grid.isEmpty()) ...\n     * ---------------------------------------\n     * Returns <code>true</code> if the grid has 0 rows and/or 0 columns.\n     */\n    bool isEmpty() const;\n\n    /*\n     * Method: locations\n     * Usage: for (GridLocation loc : grid.locations()) ...\n     * ----------------------------------------------------\n     * Returns a range of (row,col) locations found in this grid.\n     * This allows a nice abstraction for looping over the 2D grid range\n     * of indexes using a single for loop.\n     * By default the locations are arranged in row-major order,\n     * but if you pass the rowMajor parameter of false, the locations will be\n     * returned in column-major order instead.\n     */\n    GridLocationRange locations(bool rowMajor = true) const;\n\n    /*\n     * Method: mapAll\n     * Usage: grid.mapAll(fn);\n     * -----------------------\n     * Calls the specified function on each element of the grid.  The\n     * elements are processed in <b><i>row-major order,</i></b> in which\n     * all the elements of row 0 are processed, followed by the elements\n     * in row 1, and so on.\n     */\n    void mapAll(std::function<void (const ValueType &)>) const;\n\n    /*\n     * Method: mapAllColumnMajor\n     * Usage: grid.mapAllColumnMajor(fn);\n     * ----------------------------------\n     * Calls the specified function on each element of the grid.  The\n     * elements are processed in <b><i>column-major order,</i></b> in which\n     * all the elements of column 0 are processed, followed by the elements\n     * in column 1, and so on.\n     */\n    void mapAllColumnMajor(std::function<void (const ValueType &)>) const;\n\n    /*\n     * Method: numCols\n     * Usage: int nCols = grid.numCols();\n     * ----------------------------------\n     * Returns the number of columns in the grid.\n     * This is equal to the grid's width.\n     */\n    int numCols() const;\n\n    /*\n     * Method: numRows\n     * Usage: int nRows = grid.numRows();\n     * ----------------------------------\n     * Returns the number of rows in the grid.\n     * This is equal to the grid's height.\n     */\n    int numRows() const;\n\n    /*\n     * Method: resize\n     * Usage: grid.resize(nRows, nCols);\n     * ---------------------------------\n     * Reinitializes the grid to have the specified number of rows\n     * and columns.  If the 'retain' parameter is true,\n     * the previous grid contents are retained as much as possible.\n     * If 'retain' is not passed or is false, any previous grid contents\n     * are discarded.\n     */\n    void resize(int _rowCount, int _columnCount, bool retain = false);\n\n    /*\n     * Method: set\n     * Usage: grid.set(row, col, value);\n     * ---------------------------------\n     * Replaces the element at the specified <code>row</code>/<code>col</code>\n     * location in this grid with a new value.  This method signals an error\n     * if the <code>row</code> and <code>col</code> arguments are outside\n     * the grid boundaries.\n     */\n    void set(int row, int col, const ValueType& value);\n    void set(const GridLocation& loc, const ValueType& value);\n\n    /*\n     * Method: size\n     * Usage: int size = grid.size();\n     * ------------------------------\n     * Returns the total number of elements in the grid, which is equal to the\n     * number of rows times the number of columns.\n     */\n    int size() const;\n\n    /*\n     * Method: toString\n     * Usage: string str = grid.toString();\n     * ------------------------------------\n     * Converts the grid to a printable string representation.\n     * The string returned is a 1-dimensional representation such as:\n     * \"{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}\"\n     */\n    std::string toString() const;\n\n    /*\n     * Method: toString2D\n     * Usage: string str = grid.toString2D();\n     * --------------------------------------\n     * Converts the grid to a printable string representation.\n     * The string returned is a 2-dimensional representation such as:\n     * \"{{1, 2, 3},\\n\n     *   {4, 5, 6},\\n\n     *   {7, 8, 9}}\"\n     */\n    std::string toString2D(\n            std::string rowStart = \"{\",\n            std::string rowEnd = \"}\",\n            std::string colSeparator = \", \",\n            std::string rowSeparator = \",\\n \") const;\n\n    /*\n     * Method: width\n     * Usage: int nCols = grid.width();\n     * --------------------------------\n     * Returns the grid's width, that is, the number of columns in the grid.\n     */\n    int width() const;\n\n\n    /*\n     * Operator: []\n     * Usage:  grid[row][col]\n     * ----------------------\n     * Overloads <code>[]</code> to select elements from this grid.\n     * This extension enables the use of traditional array notation to\n     * get or set individual elements.  This method signals an error if\n     * the <code>row</code> and <code>col</code> arguments are outside\n     * the grid boundaries.\n     */\n    GridRow operator [](int row);\n    const GridRowConst operator [](int row) const;\n    ValueType& operator [](const GridLocation& loc);\n    const ValueType& operator [](const GridLocation& loc) const;\n\n    /*\n     * Additional Grid operations\n     * --------------------------\n     * In addition to the methods listed in this interface, the Grid\n     * class supports the following operations:\n     *\n     *   - Stream I/O using the << and >> operators\n     *   - Deep copying for the copy constructor and assignment operator\n     *   - Iteration using the range-based for statement and STL iterators\n     *\n     * The iteration forms process the grid in row-major order.\n     */\n    \n    /*\n     * Operator: ==\n     * Usage: if (grid1 == grid2) ...\n     * ------------------------------\n     * Compares two grids for equality.\n     */\n    bool operator ==(const Grid& grid2) const;\n\n    /*\n     * Operator: !=\n     * Usage: if (grid1 != grid2) ...\n     * ------------------------------\n     * Compares two grids for inequality.\n     */\n    bool operator !=(const Grid& grid2) const;\n    \n    /*\n     * Operators: <, >, <=, >=\n     * Usage: if (grid1 < grid2) ...\n     * -----------------------------\n     * Relational operators to compare two grids.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     */\n    bool operator <(const Grid& grid2) const;\n    bool operator <=(const Grid& grid2) const;\n    bool operator >(const Grid& grid2) const;\n    bool operator >=(const Grid& grid2) const;\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\n    /*\n     * Implementation notes: Grid data structure\n     * -----------------------------------------\n     * The Grid is internally managed as a dynamic array of elements.\n     * The array itself is one-dimensional, the logical separation into\n     * rows and columns is done by arithmetic computation.  The layout\n     * is in row-major order, which is to say that the entire first row\n     * is laid out contiguously, followed by the entire second row,\n     * and so on.\n     */\n\nprivate:\n    /* Instance variables */\n    Vector<ValueType> _elements;   // The elements, in row-major order\n    int _rowCount = 0;             // The number of rows in the grid\n    int _columnCount = 0;          // The number of columns in the grid\n\n    /* Private method prototypes */\n\n    /*\n     * Throws an ErrorException if the given row/col are not within the range of\n     * (0,0) through (rowMax-1,colMax-1) inclusive.\n     * This is a consolidated error handler for all various Grid members that\n     * accept index parameters.\n     * The prefix parameter represents a text string to place at the start of\n     * the error message, generally to help indicate which member threw the error.\n     */\n    void checkIndexes(int row, int col,\n                      int rowMax, int colMax,\n                      std::string prefix) const;\n    int gridCompare(const Grid& grid2) const;\n\n    /*\n     * Hidden features\n     * ---------------\n     * The remainder of this file consists of the code required to\n     * support deep copying and iteration.  Including these methods\n     * in the public interface would make that interface more\n     * difficult to understand for the average client.\n     */\n\npublic:\n    using iterator       = typename Vector<ValueType>::iterator;\n    using const_iterator = typename Vector<ValueType>::const_iterator;\n\n    iterator begin() {\n        return _elements.begin();\n    }\n    iterator end() {\n        return _elements.end();\n    }\n\n    const_iterator begin() const {\n        return _elements.begin();\n    }\n    const_iterator end() const {\n        return _elements.end();\n    }\n\n    /*\n     * Private class: Grid<ValType>::GridRow\n     * -------------------------------------\n     * This section of the code defines a nested class within the Grid template\n     * that makes it possible to use traditional subscripting on Grid values.\n     */\n    class GridRow {\n    public:\n        GridRow() : _gp(nullptr), _row(0) {\n            /* Empty */\n        }\n\n        ValueType& operator [](int col) {\n            _gp->checkIndexes(_row, col, _gp->_rowCount-1, _gp->_columnCount-1, \"operator [][]\");\n            return _gp->_elements[(_row * _gp->_columnCount) + col];\n        }\n\n        ValueType operator [](int col) const {\n            _gp->checkIndexes(_row, col, _gp->_rowCount-1, _gp->_columnCount-1, \"operator [][]\");\n            return _gp->_elements[(_row * _gp->_columnCount) + col];\n        }\n\n        int size() const {\n            return _gp->width();\n        }\n\n    private:\n        GridRow(Grid* gridRef, int index) {\n            _gp = gridRef;\n            _row = index;\n        }\n\n        Grid* _gp;\n        int _row;\n        friend class Grid;\n    };\n    friend class GridRow;\n\n    class GridRowConst {\n    public:\n        GridRowConst() : _gp(nullptr), _row(0) {\n            /* Empty */\n        }\n\n        const ValueType operator [](int col) const {\n            _gp->checkIndexes(_row, col, _gp->_rowCount-1, _gp->_columnCount-1, \"operator [][]\");\n            return _gp->_elements[(_row * _gp->_columnCount) + col];\n        }\n\n        int size() const {\n            return _gp->width();\n        }\n\n    private:\n        GridRowConst(Grid* const gridRef, int index) : _gp(gridRef), _row(index) {}\n\n        const Grid* const _gp;\n        const int _row;\n        friend class Grid;\n    };\n    friend class GridRowConst;\n\n    template <typename T>\n    friend int hashCode(const Grid<T>& g);\n};\n\ntemplate <typename ValueType>\nGrid<ValueType>::Grid(int numRows, int numCols) {\n    resize(numRows, numCols);\n}\n\ntemplate <typename ValueType>\nGrid<ValueType>::Grid(int numRows, int numCols, const ValueType& value) {\n    resize(numRows, numCols);\n    fill(value);\n}\n\ntemplate <typename ValueType>\nGrid<ValueType>::Grid(std::initializer_list<std::initializer_list<ValueType>> list) {\n    // create the grid at the proper size\n    _rowCount = list.size();\n    if (list.begin() != list.end()) {\n        _columnCount = list.begin()->size();\n    }\n    resize(_rowCount, _columnCount);\n\n    // copy the data from the initializer list into the Grid\n    auto rowItr = list.begin();\n    for (int row = 0; row < _rowCount; row++) {\n        if (static_cast<int>(rowItr->size()) != _columnCount) {\n            error(\"Grid::constructor: initializer list is not rectangular (must have same # cols in each row)\");\n        }\n        auto colItr = rowItr->begin();\n        for (int col = 0; col < _columnCount; col++) {\n            set(row, col, *colItr);\n            colItr++;\n        }\n        rowItr++;\n    }\n}\n\ntemplate <typename ValueType>\nValueType Grid<ValueType>::back() const {\n    if (isEmpty()) {\n        error(\"Grid::back: grid is empty\");\n    }\n    return get(_rowCount - 1, _columnCount - 1);\n}\n\ntemplate <typename ValueType>\nvoid Grid<ValueType>::clear() {\n    ValueType defaultValue = ValueType();\n    for (int r = 0; r < _rowCount; r++) {\n        for (int c = 0; c < _columnCount; c++) {\n            set(r, c, defaultValue);\n        }\n    }\n}\n\ntemplate <typename ValueType>\nbool Grid<ValueType>::equals(const Grid<ValueType>& grid2) const {\n    // optimization: if literally same grid, stop\n    if (this == &grid2) {\n        return true;\n    }\n    \n    if (_rowCount != grid2._rowCount || _columnCount != grid2._columnCount) {\n        return false;\n    }\n    for (int row = 0; row < _rowCount; row++) {\n        for (int col = 0; col < _columnCount; col++) {\n            if (get(row, col) != grid2.get(row, col)) {\n                return false;\n            }\n        }\n    }\n    return true;\n}\n\ntemplate <typename ValueType>\nvoid Grid<ValueType>::fill(const ValueType& value) {\n    for (int row = 0; row < _rowCount; row++) {\n        for (int col = 0; col < _columnCount; col++) {\n            set(row, col, value);\n        }\n    }\n\n    /* This counts as a semantic update, so we must update the version. */\n    _elements.updateVersion();\n}\n\ntemplate <typename ValueType>\nValueType Grid<ValueType>::front() const {\n    if (isEmpty()) {\n        error(\"Grid::front: grid is empty\");\n    }\n    return get(0, 0);\n}\n\ntemplate <typename ValueType>\nValueType Grid<ValueType>::get(int row, int col) {\n    checkIndexes(row, col, _rowCount-1, _columnCount-1, \"get\");\n    return _elements[(row * _columnCount) + col];\n}\n\ntemplate <typename ValueType>\nconst ValueType& Grid<ValueType>::get(int row, int col) const {\n    checkIndexes(row, col, _rowCount-1, _columnCount-1, \"get\");\n    return _elements[(row * _columnCount) + col];\n}\n\ntemplate <typename ValueType>\nValueType Grid<ValueType>::get(const GridLocation& loc) {\n    return get(loc.row, loc.col);\n}\n\ntemplate <typename ValueType>\nconst ValueType& Grid<ValueType>::get(const GridLocation& loc) const {\n    return get(loc.row, loc.col);\n}\n\ntemplate <typename ValueType>\nint Grid<ValueType>::height() const {\n    return _rowCount;\n}\n\ntemplate <typename ValueType>\nbool Grid<ValueType>::inBounds(int row, int col) const {\n    return row >= 0 && col >= 0 && row < _rowCount && col < _columnCount;\n}\n\ntemplate <typename ValueType>\nbool Grid<ValueType>::inBounds(const GridLocation& loc) const {\n    return inBounds(loc.row, loc.col);\n}\n\ntemplate <typename ValueType>\nbool Grid<ValueType>::isEmpty() const {\n    return _rowCount == 0 || _columnCount == 0;\n}\n\ntemplate <typename ValueType>\nGridLocationRange Grid<ValueType>::locations(bool rowMajor) const {\n    return GridLocationRange(0, 0, numRows() - 1, numCols() - 1, rowMajor);\n}\n\ntemplate <typename ValueType>\nvoid Grid<ValueType>::mapAll(std::function<void (const ValueType &)> fn) const {\n    for (int i = 0; i < _rowCount; i++) {\n        for (int j = 0; j < _columnCount; j++) {\n            fn(get(i, j));\n        }\n    }\n}\n\ntemplate <typename ValueType>\nvoid Grid<ValueType>::mapAllColumnMajor(std::function<void (const ValueType &)> fn) const {\n    for (int j = 0; j < _columnCount; j++) {\n        for (int i = 0; i < _rowCount; i++) {\n            fn(get(i, j));\n        }\n    }\n}\n\ntemplate <typename ValueType>\nint Grid<ValueType>::numCols() const {\n    return _columnCount;\n}\n\ntemplate <typename ValueType>\nint Grid<ValueType>::numRows() const {\n    return _rowCount;\n}\n\ntemplate <typename ValueType>\nvoid Grid<ValueType>::resize(int numRows, int numCols, bool retain) {\n    if (numRows < 0 || numCols < 0) {\n        std::ostringstream out;\n        out << \"Grid::resize: Attempt to resize grid to invalid size (\"\n               << numRows << \", \" << numCols << \")\";\n        error(out.str());\n    }\n\n    // optimization: don't do the resize if we are already that size\n    if (numRows == this->_rowCount && numCols == this->_columnCount && retain) {\n        /* We need to update the version because semantically we've changed the grid,\n         * but we haven't touched our vector.\n         */\n        _elements.updateVersion();\n        return;\n    }\n    \n    // save backup of old array/size\n    Vector<ValueType> oldElements = std::move(_elements);\n    int oldnRows = this->_rowCount;\n    int oldnCols = this->_columnCount;\n    \n    // create new empty array and set new size\n    this->_rowCount = numRows;\n    this->_columnCount = numCols;\n    this->_elements = Vector<ValueType>(numRows * numCols, ValueType());\n    \n    // possibly retain old contents\n    if (retain) {\n        int minRows = oldnRows < numRows ? oldnRows : numRows;\n        int minCols = oldnCols < numCols ? oldnCols : numCols;\n        for (int row = 0; row < minRows; row++) {\n            for (int col = 0; col < minCols; col++) {\n                this->_elements[(row * numCols) + col] = oldElements[(row * oldnCols) + col];\n            }\n        }\n    }\n}\n\ntemplate <typename ValueType>\nvoid Grid<ValueType>::set(int row, int col, const ValueType& value) {\n    checkIndexes(row, col, _rowCount - 1, _columnCount - 1, \"set\");\n    _elements[(row * _columnCount) + col] = value;\n}\n\ntemplate <typename ValueType>\nvoid Grid<ValueType>::set(const GridLocation& loc, const ValueType& value) {\n    set(loc.row, loc.col, value);\n}\n\ntemplate <typename ValueType>\nint Grid<ValueType>::size() const {\n    return _rowCount * _columnCount;\n}\n\ntemplate <typename ValueType>\nstd::string Grid<ValueType>::toString() const {\n    std::ostringstream os;\n    os << *this;\n    return os.str();\n}\n\ntemplate <typename ValueType>\nstd::string Grid<ValueType>::toString2D(\n        std::string rowStart, std::string rowEnd,\n        std::string colSeparator, std::string rowSeparator) const {\n    std::ostringstream os;\n    os << rowStart;\n    int nr = numRows();\n    int nc = numCols();\n    for (int i = 0; i < nr ; i++) {\n        if (i > 0) {\n            os << rowSeparator;\n        }\n        os << rowStart;\n        for (int j = 0; j < nc; j++) {\n            if (j > 0) {\n                os << colSeparator;\n            }\n            writeGenericValue(os, get(i, j), /* forceQuotes */ true);\n        }\n        os << rowEnd;\n    }\n    os << rowEnd;\n    return os.str();\n}\n\ntemplate <typename ValueType>\nint Grid<ValueType>::width() const {\n    return _columnCount;\n}\n\ntemplate <typename ValueType>\ntypename Grid<ValueType>::GridRow Grid<ValueType>::operator [](int row) {\n    return GridRow(this, row);\n}\n\ntemplate <typename ValueType>\nValueType& Grid<ValueType>::operator [](const GridLocation& loc) {\n    checkIndexes(loc.row, loc.col, _rowCount-1, _columnCount-1, \"operator []\");\n    return _elements[(loc.row * _columnCount) + loc.col];\n}\n\ntemplate <typename ValueType>\nconst typename Grid<ValueType>::GridRowConst\nGrid<ValueType>::operator [](int row) const {\n    return GridRowConst(const_cast<Grid*>(this), row);\n}\n\ntemplate <typename ValueType>\nconst ValueType& Grid<ValueType>::operator [](const GridLocation& loc) const {\n    checkIndexes(loc.row, loc.col, _rowCount-1, _columnCount-1, \"operator []\");\n    return _elements[(loc.row * _columnCount) + loc.col];\n}\n\ntemplate <typename ValueType>\nbool Grid<ValueType>::operator ==(const Grid& grid2) const {\n    return equals(grid2);\n}\n\ntemplate <typename ValueType>\nbool Grid<ValueType>::operator !=(const Grid& grid2) const {\n    return !equals(grid2);\n}\n\ntemplate <typename ValueType>\nbool Grid<ValueType>::operator <(const Grid& grid2) const {\n    return gridCompare(grid2) < 0;\n}\n\ntemplate <typename ValueType>\nbool Grid<ValueType>::operator <=(const Grid& grid2) const {\n    return gridCompare(grid2) <= 0;\n}\n\ntemplate <typename ValueType>\nbool Grid<ValueType>::operator >(const Grid& grid2) const {\n    return gridCompare(grid2) > 0;\n}\n\ntemplate <typename ValueType>\nbool Grid<ValueType>::operator >=(const Grid& grid2) const {\n    return gridCompare(grid2) >= 0;\n}\n\ntemplate <typename ValueType>\nvoid Grid<ValueType>::checkIndexes(int row, int col,\n                                   int rowMax, int colMax,\n                                   std::string prefix) const {\n    const int rowMin = 0;\n    const int colMin = 0;\n    if (row < rowMin || row > rowMax || col < colMin || col > colMax) {\n        std::ostringstream out;\n        out << \"Grid::\" << prefix << \": (\" << row << \", \" << col << \")\"\n            << \" is outside of valid range [\";\n        if (rowMin < rowMax && colMin < colMax) {\n            out << \"(\" << rowMin << \", \" << colMin <<  \")..(\"\n                << rowMax << \", \" << colMax << \")\";\n        } else if (rowMin == rowMax && colMin == colMax) {\n            out << \"(\" << rowMin << \", \" << colMin <<  \")\";\n        } // else min > max, no range, empty grid\n        out << \"]\";\n        error(out.str());\n    }\n}\n\ntemplate <typename ValueType>\nint Grid<ValueType>::gridCompare(const Grid& grid2) const {\n    if (_rowCount != grid2._rowCount) return _rowCount - grid2._rowCount;\n    if (_columnCount != grid2._columnCount) return _columnCount - grid2._columnCount;\n    return stanfordcpplib::collections::compare(_elements, grid2._elements);\n}\n\ntemplate <typename ValueType>\nint hashCode(const Grid<ValueType>& g) {\n    return hashCode(g._rowCount, g._columnCount, g._elements);\n}\n\n/*\n * Implementation notes: << and >>\n * -------------------------------\n * The insertion and extraction operators use the template facilities in\n * strlib.h to read and write generic values in a way that treats strings\n * specially.\n */\ntemplate <typename ValueType>\nstd::ostream& operator <<(std::ostream& os, const Grid<ValueType>& grid) {\n    os << \"{\";\n    int nRows = grid.numRows();\n    int nCols = grid.numCols();\n    for (int i = 0; i < nRows; i++) {\n        if (i > 0) {\n            os << \", \";\n        }\n        os << \"{\";\n        for (int j = 0; j < nCols; j++) {\n            if (j > 0) {\n                os << \", \";\n            }\n            writeGenericValue(os, grid.get(i, j), /* forceQuotes */ true);\n        }\n        os << \"}\";\n    }\n    return os << \"}\";\n}\n\ntemplate <typename ValueType>\nstd::istream& operator >>(std::istream& is, Grid<ValueType>& grid) {\n    Vector<Vector<ValueType>> vec2d;\n    if (!(is >> vec2d)) {\n        is.setstate(std::ios_base::failbit);\n        return is;\n    }\n\n    int nRows = vec2d.size();\n    int nCols = (nRows == 0) ? 0 : vec2d[0].size();\n    grid.resize(nRows, nCols);\n    for (int i = 0; i < nRows; i++) {\n        for (int j = 0; j < nCols; j++) {\n            grid[i][j] = vec2d[i][j];\n        }\n    }\n\n    return is;\n}\n\n/*\n * Function: randomElement\n * Usage: element = randomElement(grid);\n * -------------------------------------\n * Returns a randomly chosen element of the given grid.\n * Throws an error if the grid is empty.\n */\ntemplate <typename T>\nconst T& randomElement(const Grid<T>& grid) {\n    if (grid.isEmpty()) {\n        error(\"randomElement: empty grid was passed\");\n    }\n\n    int randomIndex = randomInteger(0, grid.size() - 1);\n    int row = randomIndex / grid.numCols();\n    int col = randomIndex % grid.numCols();\n    return grid.get(row, col);\n}\n\n/*\n * Randomly rearranges the elements of the given grid.\n */\ntemplate <typename T>\nvoid shuffle(Grid<T>& grid) {\n    int rows = grid.numRows();\n    int cols = grid.numCols();\n    int length = rows * cols;\n    for (int i = 0; i < length; i++) {\n        int j = randomInteger(i, length - 1);\n        if (i != j) {\n            int r1 = i / cols;\n            int c1 = i % cols;\n            int r2 = j / cols;\n            int c2 = j % cols;\n            T temp = grid[r1][c1];\n            grid[r1][c1] = grid[r2][c2];\n            grid[r2][c2] = temp;\n        }\n    }\n}\n\n#endif // _grid_h\n\n/////////////////////// END code extracted from StanfordCPPLib/collections/grid.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/collections/lexicon.h ///////////////////////\n/*\n * File: lexicon.h\n * ---------------\n * This file exports the <code>Lexicon</code> class, which is a\n * compact structure for storing a list of words.\n *\n * @version 2019/04/09\n * - renamed private members with underscore naming scheme for consistency\n * @author Marty Stepp\n * @version 2018/03/10\n * - added methods front, back\n * @version 2016/12/09\n * - added iterator version checking support (implicitly via Set)\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * @version 2016/08/12\n * - added methods addAll, containsAll, removeAll, retainAll,\n *   operators +, +=, -, -=, *, *= to better match Set/HashSet\n * @version 2016/08/10\n * - added constructor support for std initializer_list usage, such as {\"a\", \"b\", \"c\"}\n * @version 2014/11/13\n * - added comparison operators <, >= etc.\n * - added hashCode function\n * @version 2014/10/10\n * - added equals method, comparison operators ==, !=\n * - fixed inclusion of foreach macro to avoid errors\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _lexicon_h\n#define _lexicon_h\n\n#include <initializer_list>\n#include <iterator>\n#include <set>\n#include <string>\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\n/**\n * This class is used to represent a <b><i>lexicon,</i></b> or word list.\n * The main difference between a lexicon and a dictionary is that\n * a lexicon does not provide any mechanism for storing definitions;\n * the lexicon contains only words, with no associated information.\n * It is therefore similar to a set of strings, but with a more\n * space-efficient internal representation.  The <code>Lexicon</code>\n * class supports efficient lookup operations for words and prefixes.\n *\n * <p>As an example of the use of the <code>Lexicon</code> class, the\n * following program lists all the two-letter words in the lexicon\n * stored in <code>EnglishWords.dat</code>:\n *\n *<pre>\n *    int main() {\n *       Lexicon english(\"EnglishWords.dat\");\n *       for (string word : english) {\n *          if (word.length() == 2) {\n *             cout << word << endl;\n *          }\n *       }\n *       return 0;\n *    }\n *</pre>\n */\n\nclass Lexicon {\npublic:\n    /*\n     * Constructor: Lexicon\n     * Usage: Lexicon lex;\n     *        Lexicon lex(filename);\n     * -----------------------------\n     * Initializes a new lexicon.  The default constructor creates an empty\n     * lexicon.  The second form reads in the contents of the lexicon from\n     * the specified data file.  The data file must be in one of two formats:\n     * (1) a space-efficient precompiled binary format or (2) a text file\n     * containing one word per line.  The Stanford library distribution\n     * includes a binary lexicon file named <code>English.dat</code>\n     * containing a list of words in English.  The standard code pattern\n     * to initialize that lexicon looks like this:\n     *\n     *<pre>\n     *    Lexicon english(\"English.dat\");\n     *</pre>\n     */\n    Lexicon();\n    Lexicon(std::istream& input);\n    Lexicon(const std::string& filename);\n\n    /*\n     * This constructor uses an initializer list to set up the lexicon.\n     * Usage: Lexicon lex {1, 2, 3};\n     */\n    Lexicon(std::initializer_list<std::string> list);\n\n    /*\n     * Destructor: ~Lexicon\n     * --------------------\n     * The destructor deallocates any storage associated with the lexicon.\n     */\n    virtual ~Lexicon();\n\n    /**\n     * Adds the specified word to the lexicon, if not already present.\n     * The word is converted to lowercase before adding it to the lexicon.\n     * If the word contains any non-alphabetic characters (including whitespace),\n     * it will not be added. The empty string cannot be added to a lexicon.\n     * Returns true if the word was added successfully to the lexicon.\n     */\n    bool add(const std::string& word);\n\n    /**\n     * Adds all elements of the given other lexicon to this lexicon.\n     * Returns a reference to this lexicon.\n     * Identical in behavior to the += operator.\n     */\n    Lexicon& addAll(const Lexicon& lex);\n\n    /**\n     * Adds all elements of the given initializer list to this lexicon.\n     * Returns a reference to this lexicon.\n     * Identical in behavior to the += operator.\n     */\n    Lexicon& addAll(std::initializer_list<std::string> list);\n\n    /**\n     * Reads the given input stream and adds all of its words to the lexicon.\n     * Each word from the stream is converted to lowercase before adding it.\n     */\n    void addWordsFromFile(std::istream& input);\n    \n    /**\n     * Reads the file and adds all of its words to the lexicon.\n     * Each word from the file is converted to lowercase before adding it.\n     */\n    void addWordsFromFile(const std::string& filename);\n\n    /**\n     * Returns the last value in the lexicon in alphabetical order.\n     * If the set is empty, generates an error.\n     */\n    std::string back() const;\n\n    /**\n     * Removes all words from the lexicon.\n     */\n    void clear();\n\n    /**\n     * Returns <code>true</code> if <code>word</code> is contained in the\n     * lexicon.  In the <code>Lexicon</code> class, the case of letters is\n     * ignored, so \"Zoo\" is the same as \"ZOO\" or \"zoo\".\n     * The empty string cannot be contained in a lexicon, nor can any word\n     * containing any non-alphabetic characters such as punctuation or whitespace.\n     */\n    bool contains(const std::string& word) const;\n\n    /**\n     * Returns <code>true</code> if every value from the given other lexicon\n     * is also found in this lexicon.\n     * Equivalent in behavior to isSupersetOf.\n     */\n    bool containsAll(const Lexicon& set2) const;\n\n    /**\n     * Returns <code>true</code> if every value from the given initializer list\n     * is also found in this lexicon.\n     * Equivalent in behavior to isSupersetOf.\n     */\n    bool containsAll(std::initializer_list<std::string> list) const;\n\n    /**\n     * Returns true if any words in the lexicon begin with <code>prefix</code>.\n     * Like <code>containsWord</code>, this method ignores the case of letters\n     * so that \"MO\" is a prefix of \"monkey\" or \"Monday\".\n     * The empty string is a prefix of every string, so this method returns\n     * true when passed the empty string.\n     */\n    bool containsPrefix(const std::string& prefix) const;\n\n    /**\n     * Compares two lexicons for equality.\n     */\n    bool equals(const Lexicon& lex2) const;\n\n    /**\n     * Returns the first value in the lexicon in alphabetical order.\n     * If the set is empty, <code>first</code> generates an error.\n     * Equivalent to first.\n     */\n    std::string first() const;\n\n    /**\n     * Returns the first value in the lexicon in alphabetical order.\n     * If the set is empty, generates an error.\n     * Equivalent to first.\n     */\n    std::string front() const;\n\n    /**\n     * Adds an element to this lexicon, if it was not already there.  This\n     * method is exported for compatibility with the STL <code>set</code> class.\n     */\n    void insert(const std::string& word);\n\n    /**\n     * Returns <code>true</code> if the lexicon contains no words.\n     */\n    bool isEmpty() const;\n\n    /**\n     * Returns whether every word of this lexicon is contained in the given set.\n     */\n    bool isSubsetOf(const Lexicon& lex2) const;\n\n    /**\n     * Returns whether every word of this lexicon is contained in the given\n     * initializer list.\n     */\n    bool isSubsetOf(std::initializer_list<std::string> list) const;\n\n    /**\n     * Returns whether every word of the given lexicon is contained in this lexicon.\n     * Equivalent in behavior to containsAll.\n     */\n    bool isSupersetOf(const Lexicon& lex2) const;\n\n    /**\n     * Returns whether every word of the given list is contained in this lexicon.\n     * Equivalent in behavior to containsAll.\n     */\n    bool isSupersetOf(std::initializer_list<std::string> list) const;\n\n    /**\n     * Calls the specified function on each word in the lexicon.\n     */\n    void mapAll(void (*fn)(std::string)) const;\n\n    /**\n     * Calls the specified function on each word in the lexicon.\n     */\n    void mapAll(void (*fn)(const std::string&)) const;\n\n    /**\n     * Calls the specified function on each word in the lexicon.\n     */\n    template <typename FunctorType>\n    void mapAll(FunctorType fn) const;\n\n    /**\n     * Removes the specified word from the lexicon, if it was present.\n     * Returns true if the word was previously contained in the lexicon;\n     * in other words, if a word was removed.\n     * The empty string cannot be contained in a lexicon, so passing the\n     * empty string to this method returns false.\n     */\n    bool remove(const std::string& word);\n\n    /**\n     * Removes all elements of the given other lexicon from this lexicon.\n     * Returns a reference to this lexicon.\n     * Identical in behavior to the -= operator.\n     */\n    Lexicon& removeAll(const Lexicon& lex);\n\n    /**\n     * Removes all elements of the given other list from this lexicon.\n     * Returns a reference to this lexicon.\n     * Identical in behavior to the -= operator.\n     */\n    Lexicon& removeAll(std::initializer_list<std::string> list);\n\n    /**\n     * Removes all words from the lexicon that begin with the given prefix.\n     * Returns true if the prefix was previously contained in the lexicon;\n     * in other words, if any words were removed.\n     * If the empty string is passed, since all words begin with the empty\n     * string, all words will be removed and this method will\n     * return true if the lexicon was non-empty prior to the call.\n     */\n    bool removePrefix(const std::string& prefix);\n\n    /**\n     * Removes all elements from this lexicon that are not contained in the given\n     * other lexicon.\n     * Returns a reference to this lexicon.\n     * Identical in behavior to the *= operator.\n     */\n    Lexicon& retainAll(const Lexicon& lex);\n\n    /**\n     * Removes all elements from this lexicon that are not contained in the given\n     * initializer list.\n     * Returns a reference to this lexicon.\n     * Identical in behavior to the *= operator.\n     */\n    Lexicon& retainAll(std::initializer_list<std::string> list);\n\n    /**\n     * Returns the number of words contained in the lexicon.\n     */\n    int size() const;\n\n    /**\n     * Converts the lexicon to a printable string representation\n     * such as <code>{\"a\", \"b\", \"c\"}</code>.\n     * Note that this can be an expensive operation if the lexicon contains\n     * a large number of words.\n     */\n    std::string toString() const;\n\n    /**\n     * Returns true if two lexicons have the same elements.\n     */\n    bool operator ==(const Lexicon& lex2) const;\n\n    /**\n     * Returns true if two lexicons do not have the same elements.\n     */\n    bool operator !=(const Lexicon& lex2) const;\n\n    /**\n     * Relational operators to compare two lexicons.\n     */\n    bool operator <(const Lexicon& lex2) const;\n\n    /**\n     * Relational operators to compare two lexicons.\n     */\n    bool operator <=(const Lexicon& lex2) const;\n\n    /**\n     * Relational operators to compare two lexicons.\n     */\n    bool operator >(const Lexicon& lex2) const;\n\n    /**\n     * Relational operators to compare two lexicons.\n     */\n    bool operator >=(const Lexicon& lex2) const;\n\n    /**\n     * Returns the union of lexicons <code>lex1</code> and <code>lex2</code>,\n     * which is the set of words that appear in at least one of the two.\n     */\n    Lexicon operator +(const Lexicon& lex2) const;\n\n    /**\n     * Returns the union of this lexicon and the words in the given list,\n     * which is the set of words that appear in at least one of the two.\n     */\n    Lexicon operator +(std::initializer_list<std::string> list) const;\n\n    /**\n     * Returns the union of this lexicon and the given word.\n     */\n    Lexicon operator +(const std::string& word) const;\n\n    /**\n     * Returns the intersection of two lexicons,\n     * which is the set of all words that appear in both.\n     */\n    Lexicon operator *(const Lexicon& lex2) const;\n\n    /**\n     * Returns the intersection of this lexicons and the given list,\n     * which is the set of all words that appear in both.\n     */\n    Lexicon operator *(std::initializer_list<std::string> list) const;\n\n    /**\n     * Returns the difference of two lexicons,\n     * which is all of the words that appear in <code>lex1</code> but\n     * not <code>lex2</code>.\n     * You can also pass an initializer list such as {\"a\", \"b\", \"c\"}.\n     * The right hand set can be replaced by a single word, in\n     * which case the operator returns a new lexicon formed by removing that word.\n     */\n    Lexicon operator -(const Lexicon& lex2) const;\n\n    /**\n     * Returns the difference of two lexicons,\n     * which is all of the words that appear in this lexicon but not in\n     * the given initializer list.\n     */\n    Lexicon operator -(std::initializer_list<std::string> list) const;\n\n    /**\n     * Returns a new lexicon formed by removing the given word from this lexicon.\n     */\n    Lexicon operator -(const std::string& word) const;\n\n    /**\n     * Adds all of the words from the given lexicon to this lexicon.\n     */\n    Lexicon& operator +=(const Lexicon& lex2);\n\n    /**\n     * Adds all of the words from the given list to this lexicon.\n     */\n    Lexicon& operator +=(std::initializer_list<std::string> list);\n\n    /**\n     * Adds the specified word to this lexicon.\n     */\n    Lexicon& operator +=(const std::string& word);\n\n    /**\n     * Removes any elements from this lexicon that are not present in\n     * <code>lex2</code>.\n     */\n    Lexicon& operator *=(const Lexicon& lex2);\n\n    /**\n     * Removes any elements from this lexicon that are not present in\n     * the given initializer list.\n     */\n    Lexicon& operator *=(std::initializer_list<std::string> list);\n\n    /**\n     * Removes all elements in the given lexicon from this lexicon.\n     */\n    Lexicon& operator -=(const Lexicon& lex2);\n\n    /**\n     * Removes all elements in the given list from this lexicon.\n     */\n    Lexicon& operator -=(std::initializer_list<std::string> list);\n\n    /**\n     * Removes the given word from this lexicon.\n     */\n    Lexicon& operator -=(const std::string& value);\n\n    /**\n     * Allows you to add multiple elements to a lexicon.\n     * @example lex += \"she\", \"sells\", \"sea\", \"shells\";\n     */\n    Lexicon& operator ,(const std::string& word);\n\n    /*\n     * Additional Lexicon operations\n     * -----------------------------\n     * In addition to the methods listed in this interface, the Lexicon\n     * class supports the following operations:\n     *\n     *   - Deep copying for the copy constructor and assignment operator\n     *   - Iteration using the range-based for statement and STL iterators\n     *\n     * All iteration is guaranteed to proceed in alphabetical order.  All\n     * words in the lexicon are stored in lowercase.\n     */\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\nprivate:\n    struct TrieNode {\n    public:\n        TrieNode() {\n            _isWord = false;\n            for (int i = 0; i < 26; i++) {\n                _children[i] = nullptr;\n            }\n        }\n\n        // pre: letter is between 'a' and 'z' in lowercase\n        inline TrieNode*& child(char letter) {\n            return _children[letter - 'a'];\n        }\n\n        inline int childCount() const {\n            int count = 0;\n            for (int i = 0; i < 26; i++) {\n                if (_children[i] != nullptr) {\n                    count++;\n                }\n            }\n            return count;\n        }\n\n        inline bool isLeaf() const {\n            return childCount() == 0;\n        }\n\n        inline bool isWord() const {\n            return _isWord;\n        }\n\n        inline void setWord(bool value) {\n            _isWord = value;\n        }\n\n    private:\n        /* instance variables */\n        bool _isWord;\n        TrieNode* _children[26];   // 0=a, 1=b, 2=c, ..., 25=z\n    };\n\n    /*\n     * private helper functions, including\n     * recursive helpers to implement public add/contains/remove\n     */\n    bool addHelper(TrieNode*& node, const std::string& word, const std::string& originalWord);\n    bool containsHelper(TrieNode* node, const std::string& word, bool isPrefix) const;\n    void deepCopy(const Lexicon& src);\n    void deleteTree(TrieNode* node);\n    bool isDAWGFile(std::istream& input) const;\n    bool isDAWGFile(const std::string& filename) const;\n    void readBinaryFile(std::istream& input);\n    void readBinaryFile(const std::string& filename);\n    bool removeHelper(TrieNode*& node, const std::string& word, const std::string& originalWord, bool isPrefix);\n    void removeSubtreeHelper(TrieNode*& node, const std::string& originalWord);\n    \n    friend std::ostream& operator <<(std::ostream& os, const Lexicon& lex);\n    friend std::istream& operator >>(std::istream& is, Lexicon& lex);\n\n    /* instance variables */\n    TrieNode* _root;\n    int _size;\n    bool _removeFlag;             // flag to differentiate += and -= when used with ,\n    Set<std::string> _allWords;   // secondary structure of all words for foreach;\n                                  // basically a cop-out so I can loop over words\n\npublic:\n    /*\n     * Deep copying support\n     * --------------------\n     * This copy constructor and operator= are defined to make a\n     * deep copy, making it possible to pass/return lexicons by value\n     * and assign from one lexicon to another.  The entire contents of\n     * the lexicon, including all words, are copied.  Making copies is\n     * generally avoided because of the expense and thus, lexicons are\n     * typically passed by reference.  When a copy is needed, these\n     * operations are supported.\n     */\n    Lexicon(const Lexicon& src);\n    Lexicon& operator =(const Lexicon& src);\n\n    /*\n     * Iterator support\n     * ----------------\n     * The classes in the StanfordCPPLib collection implement input\n     * iterators so that they work symmetrically with respect to the\n     * corresponding STL classes.\n     */\n    class iterator : public Set<std::string>::iterator {\n    public:\n        iterator() : Set<std::string>::iterator() {}\n        iterator(const iterator& it) : Set<std::string>::iterator(it) {}\n        iterator(const Set<std::string>::iterator& it) : Set<std::string>::iterator(it) {}\n    };\n\n    /**\n     * Returns an iterator positioned at the first word in the lexicon.\n     */\n    iterator begin() const {\n        return iterator(_allWords.begin());\n    }\n\n    /**\n     * Returns an iterator positioned at the last word in the lexicon.\n     */\n    iterator end() const {\n        return iterator(_allWords.end());\n    }\n};\n\ntemplate <typename FunctorType>\nvoid Lexicon::mapAll(FunctorType fn) const {\n    for (std::string word : *this) {\n        fn(word);\n    }\n}\n\n/**\n * Hashing function for lexicons.\n */\nint hashCode(const Lexicon& l);\n\n/**\n * Prints the lexicon to the given output stream.\n */\nstd::ostream& operator <<(std::ostream& os, const Lexicon& lex);\n\n/**\n * Reads the contents of a lexicon from the given input stream.\n */\nstd::istream& operator >>(std::istream& is, Lexicon& lex);\n\n#endif // _lexicon_h\n\n/////////////////////// END code extracted from StanfordCPPLib/collections/lexicon.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/collections/linkedlist.h ///////////////////////\n/*\n * File: linkedlist.h\n * ------------------\n * This file exports the <code>LinkedList</code> class, which provides an\n * implementation of a doubly-linked list of objects and provides a\n * public interface similar to that of the <code>Vector</code> class.\n *\n * @version 2019/04/09\n * - renamed private members with underscore naming scheme for consistency\n * @version 2019/02/04\n * - changed internal implementation to wrap std collections\n * @version 2018/01/07\n * - added removeFront, removeBack\n * @version 2017/11/15\n * - added contains, indexOf, lastIndexOf, removeValue, reverse, shuffle, sort\n * @version 2017/11/14\n * - added iterator version checking support\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * @version 2016/08/10\n * - added support for std initializer_list usage, such as {1, 2, 3}\n *   in constructor, addAll, +, +=\n * @version 2016/08/04\n * - fixed operator >> to not throw errors\n * @version 2015/07/05\n * - using global hashing functions rather than global variables\n * @version 2014/11/13\n * - added comparison operators <, >=, etc.\n * - added template hashCode function\n * @version 2014/10/19\n * - added subList method\n * @version 2014/10/10\n * - removed usage of __foreach macro\n * 2014/07/10\n *  - fixed compiler errors/bugs in initial implementation:\n *    back(), front() members, etc.\n *  - changed checkLinkedListIndex into a member function to avoid warnings\n * @since 2014/07/10\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _linkedlist_h\n#define _linkedlist_h\n\n#include <algorithm>\n#include <initializer_list>\n#include <iostream>\n#include <iterator>\n#include <list>\n#include <sstream>\n#include <string>\n#include <functional>\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\n/*\n * Class: LinkedList<ValueType>\n * ----------------------------\n * This class stores an ordered list of values similar to an array.\n * It supports traditional array selection using square brackets, but\n * also supports inserting and deleting elements.  It is similar in\n * function to the STL <code>list</code> type.\n */\ntemplate <typename ValueType>\nclass LinkedList {\npublic:\n    /*\n     * Constructor: LinkedList\n     * Usage: LinkedList<ValueType> list;\n     * ----------------------------------\n     * Initializes a new LinkedList.  The default constructor creates an\n     * empty LinkedList.\n     */\n    LinkedList() = default;\n    /* implicit */ LinkedList(const std::list<ValueType>& v);\n\n    /*\n     * This constructor uses an initializer list to set up the linked list.\n     * Usage: LinkedList<int> list {1, 2, 3};\n     */\n    LinkedList(std::initializer_list<ValueType> list);\n\n    /*\n     * Destructor: ~LinkedList\n     * -------------------\n     * Frees any heap storage allocated by this LinkedList.\n     */\n    virtual ~LinkedList() = default;\n    \n    /*\n     * Method: add\n     * Usage: list.add(value);\n     * ----------------------\n     * Adds a new value to the end of this LinkedList.  To ensure compatibility\n     * with the <code>LinkedList</code> class in the Standard Template Library,\n     * this method is also called <code>push_back</code>.\n     */\n    void add(ValueType value);\n    \n    /*\n     * Method: addAll\n     * Usage: list.addAll(l2);\n     * -----------------------\n     * Adds all elements of the given other linked list to this list.\n     * Returns a reference to this list.\n     * Identical in behavior to the += operator.\n     * You may also pass an initializer list such as {1, 2, 3}.\n     */\n    LinkedList<ValueType>& addAll(const LinkedList<ValueType>& list);\n    LinkedList<ValueType>& addAll(std::initializer_list<ValueType> list);\n\n    /*\n     * Method: back\n     * Usage: ValueType val = list.back();\n     * -----------------------------------\n     * Returns the element at the back (index size-1) of this LinkedList.\n     * This method signals an error if the list is empty.\n     */\n    ValueType& back();\n    const ValueType& back() const;\n\n    /*\n     * Method: clear\n     * Usage: list.clear();\n     * --------------------\n     * Removes all elements from this LinkedList.\n     */\n    void clear();\n    \n    /*\n     * Method: contains\n     * Usage: if (list.contains(value)) ...\n     * ------------------------------------\n     * Returns true if the list contains the given value.\n     * The ValueType must have an == operator to use this method.\n     */\n    bool contains(const ValueType& value) const;\n\n    /*\n     * Method: equals\n     * Usage: if (list.equals(l2)) ...\n     * -------------------------------\n     * Returns <code>true</code> if this linked list contains exactly the same\n     * values as the given other list.\n     * Identical in behavior to the == operator.\n     */\n    bool equals(const LinkedList<ValueType>& l2) const;\n    \n    /*\n     * Method: front\n     * Usage: ValueType val = list.front();\n     * ------------------------------------\n     * Returns the element at the front (index 0) of this LinkedList.\n     * This method signals an error if the list is empty.\n     */\n    ValueType& front();\n    const ValueType& front() const;\n\n    /*\n     * Method: get\n     * Usage: ValueType val = list.get(index);\n     * ---------------------------------------\n     * Returns the element at the specified index in this LinkedList.  This\n     * method signals an error if the index is not in the list range.\n     *\n     * The client should be mindful that unlike with a vector, this operation\n     * is O(N) for linked lists because it must traverse the list to reach\n     * the given index.\n     */\n    const ValueType& get(int index) const;\n\n    /*\n     * Method: indexOf\n     * Usage: int index = list.indexOf(value);\n     * ---------------------------------------\n     * Returns the index of the first occurrence of the given value.\n     * If the value is not found in the vector, returns -1.\n     * The ValueType must have an == operator to use this method.\n     */\n    int indexOf(const ValueType& value) const;\n\n    /*\n     * Method: insert\n     * Usage: list.insert(0, value);\n     * -----------------------------\n     * Inserts the element into this LinkedList before the specified index.\n     * This method signals an error if the index is outside the range from 0\n     * up to and including the length of the LinkedList.\n     */\n    void insert(int index, ValueType value);\n\n    /*\n     * Method: isEmpty\n     * Usage: if (list.isEmpty()) ...\n     * ------------------------------\n     * Returns <code>true</code> if this LinkedList contains no elements.\n     */\n    bool isEmpty() const;\n\n    /*\n     * Method: lastIndexOf\n     * Usage: int index = list.lastIndexOf(value);\n     * -------------------------------------------\n     * Returns the index of the last occurrence of the given value.\n     * If the value is not found in the vector, returns -1.\n     * The ValueType must have an == operator to use this method.\n     */\n    int lastIndexOf(const ValueType& value) const;\n\n    /*\n     * Method: mapAll\n     * Usage: list.mapAll(fn);\n     * ----------------------\n     * Calls the specified function on each element of the LinkedList in\n     * ascending index order.\n     */\n    void mapAll(std::function<void (const ValueType &)> fn) const;\n    \n    /*\n     * Method: pop_back\n     * Usage: ValueType back = list.pop_back();\n     * ------------------------------------------\n     * Removes and returns the last value of this LinkedList.\n     * Throws an error if the list is empty.\n     */\n    ValueType pop_back();\n\n    /*\n     * Method: pop_front\n     * Usage: ValueType front = list.pop_front();\n     * ------------------------------------------\n     * Removes and returns the first value of this LinkedList.\n     * Throws an error if the list is empty.\n     */\n    ValueType pop_front();\n    \n    /*\n     * Method: push_back\n     * Usage: list.push_back(value);\n     * -----------------------------\n     * Adds a new value to the end of this LinkedList.\n     * Same behavior as the <code>add</code> method.\n     */\n    void push_back(const ValueType& value);\n\n    /*\n     * Method: push_front\n     * Usage: list.push_front(value);\n     * ------------------------------\n     * Adds a new value to the front of this LinkedList.\n     */\n    void push_front(const ValueType& value);\n    \n    /*\n     * Method: remove\n     * Usage: list.remove(index);\n     * -------------------------\n     * Removes the element at the specified index from this LinkedList.\n     * This method signals an error if the index is outside the list range.\n     */\n    void remove(int index);\n\n    /*\n     * Method: removeFirst\n     * Usage: ValueType val = list.removeFirst();\n     * ------------------------------------------\n     * Removes and returns the element at index 0 in this list.\n     * This method signals an error if list is empty.\n     */\n    ValueType removeFront();\n\n    /*\n     * Method: removeLast\n     * Usage: ValueType val = list.removeLast();\n     * -----------------------------------------\n     * Removes and returns the element at index (size - 1) in this list.\n     * This method signals an error if list is empty.\n     */\n    ValueType removeBack();\n\n    /*\n     * Method: removeValue\n     * Usage: list.removeValue(value);\n     * -------------------------------\n     * Removes the first occurrence of the element value from this list.\n     * All subsequent elements are shifted one position to the left.\n     * If the vector does not contain the given value, has no effect.\n     * The ValueType must have an == operator to use this method.\n     */\n    void removeValue(const ValueType& value);\n\n    /*\n     * Method: reverse\n     * Usage: list.reverse();\n     * ----------------------\n     * Reverses the order of the elements in this list.\n     * For example, if the list stores {1, 3, 4, 9}, changes it to store {9, 4, 3, 1}.\n     */\n    void reverse();\n\n    /*\n     * Method: set\n     * Usage: list.set(index, value);\n     * ------------------------------\n     * Replaces the element at the specified index in this LinkedList with\n     * a new value.  The previous value at that index is overwritten.\n     * This method signals an error if the index is not in the list range.\n     *\n     * The client should be mindful that unlike with a vector, this operation\n     * is O(N) for linked lists because it must traverse the list to reach\n     * the given index.\n     */\n    void set(int index, const ValueType& value);\n\n    /*\n     * Method: shuffle\n     * Usage: list.shuffle();\n     * ----------------------\n     * Rearranges the order of the elements in this list into a random order.\n     */\n    void shuffle();\n\n    /*\n     * Method: size\n     * Usage: int nElems = list.size();\n     * --------------------------------\n     * Returns the number of elements in this LinkedList.\n     */\n    int size() const;\n\n    /*\n     * Method: sort\n     * Usage: list.sort();\n     * -------------------\n     * Rearranges the order of the elements in this list into sorted order.\n     * For example, if the list stores {9, 1, 4, 3}, changes it to store {1, 3, 4, 9}.\n     * The ValueType must have an operator < to call this method.\n     */\n    void sort();\n\n    /*\n     * Method: subList\n     * Usage: LinkedList<ValueType> sub = list.subList(start, length);\n     * ---------------------------------------------------------------\n     * Returns a new list containing the given subset range of elements\n     * from this list. The new list is a deep copy, not linked to this one.\n     * Throws an error if the range (start .. start + length) is not contained\n     * within the bounds of this list, or if length is negative.\n     */\n    LinkedList<ValueType> subList(int start, int length) const;\n    \n    /*\n     * Method: toString\n     * Usage: string str = list.toString();\n     * ------------------------------------\n     * Converts the LinkedList to a printable string representation.\n     */\n    std::string toString() const;\n\n    /*\n     * Operator: []\n     * Usage: list[index]\n     * -----------------\n     * Overloads <code>[]</code> to select elements from this LinkedList.\n     * This extension enables the use of traditional array notation to\n     * get or set individual elements.  This method signals an error if\n     * the index is outside the list range.  The file supports two\n     * versions of this operator, one for <code>const</code> LinkedLists and\n     * one for mutable LinkedLists.\n     *\n     * The client should be mindful that this operation is O(N) for linked\n     * lists because it must traverse the list to reach the given index.\n     */\n    ValueType& operator [](int index);\n    const ValueType& operator [](int index) const;\n\n    /*\n     * Operator: +\n     * Usage: v1 + l2\n     * --------------\n     * Concatenates two LinkedLists, or concatenates this linked list with an\n     * initializer list such as {1, 2, 3}.\n     */\n    LinkedList operator +(const LinkedList& l2) const;\n    LinkedList operator +(std::initializer_list<ValueType> list) const;\n\n    /*\n     * Operator: +=\n     * Usage: l1 += l2;\n     *        l1 += value;\n     * -------------------\n     * Adds all of the elements from <code>l2</code> (or the single\n     * specified value) to <code>l1</code>.  As a convenience, the\n     * <code>LinkedList</code> package also overloads the comma operator so\n     * that it is possible to initialize a LinkedList like this:\n     *\n     *<pre>\n     *    LinkedList&lt;int&gt; digits;\n     *    digits += 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;\n     *</pre>\n     * You can also pass an initializer list such as {1, 2, 3}.\n     */\n    LinkedList& operator +=(const LinkedList& l2);\n    LinkedList& operator +=(std::initializer_list<ValueType> list);\n    LinkedList& operator +=(const ValueType& value);\n\n    /*\n     * Comparing LinkedLists for equality.\n     */\n    bool operator ==(const LinkedList& list2) const;\n    bool operator !=(const LinkedList& list2) const;\n\n\n    /*\n     * Operators: <, >, <=, >=\n     * Usage: if (list1 == list2) ...\n     * ...\n     * -------------------------------\n     * Relational operators to compare two lists.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     */\n    bool operator <(const LinkedList& list2) const;\n    bool operator <=(const LinkedList& list2) const;\n    bool operator >(const LinkedList& list2) const;\n    bool operator >=(const LinkedList& list2) const;\n\n    /*\n     * Additional LinkedList operations\n     * --------------------------------\n     * In addition to the methods listed in this interface, the LinkedList\n     * class supports the following operations:\n     *\n     *   - Stream I/O using the << and >> operators\n     *   - Deep copying for the copy constructor and assignment operator\n     *   - Iteration using the range-based for statement or STL iterators\n     *\n     * The iteration forms process the LinkedList in index order.\n     */\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\nprivate:\n    /*\n     * Implementation notes: LinkedList data structure\n     * -------------------------------------------\n     * The elements of the LinkedList are stored in a dynamic array of\n     * the specified element type.  If the space in the array is ever\n     * exhausted, the implementation doubles the array capacity.\n     */\n\n    /* Instance variables */\n    std::list<ValueType> _elements;   // STL linked list as backing storage\n    stanfordcpplib::collections::VersionTracker _version;\n\n    /* Private methods */\n\n    /*\n     * Throws an ErrorException if the given index is not within the range of\n     * [min..max] inclusive.\n     * This is a consolidated error handler for all various LinkedList members that\n     * accept index parameters.\n     * The prefix parameter represents a text string to place at the start of\n     * the error message, generally to help indicate which member threw the error.\n     *\n     * We make prefix a const char* rather than a std::string to avoid having to\n     * construct and then destroy the prefix with each call.\n     */\n    void checkIndex(int index, int min, int max, const char* prefix) const;\n\n    /*\n     * Hidden features\n     * ---------------\n     * The remainder of this file consists of the code required to\n     * support deep copying and iteration.  Including these methods\n     * in the public interface would make that interface more\n     * difficult to understand for the average client.\n     */\n\npublic:\n\n    /*\n     * Operator: ,\n     * -----------\n     * Adds an element to the LinkedList passed as the left-hand operatand.\n     * This form makes it easier to initialize LinkedLists in old versions of C++.\n     */\n    LinkedList& operator ,(const ValueType& value);\n\n    /*\n     * Iterator support.\n     */\n    using iterator = stanfordcpplib::collections::CheckedIterator<typename std::list<ValueType>::iterator>;\n    using const_iterator = stanfordcpplib::collections::CheckedIterator<typename std::list<ValueType>::const_iterator>;\n\n    iterator begin() {\n        return { &_version, _elements.begin(), _elements };\n    }\n    iterator end() {\n        return { &_version, _elements.end(), _elements };\n    }\n    const_iterator begin() const {\n        return { &_version, _elements.begin(), _elements };\n    }\n    const_iterator end() const {\n        return { &_version, _elements.end(), _elements };\n    }\n};\n\n/* Implementation section */\n\ntemplate <typename ValueType>\nLinkedList<ValueType>::LinkedList(const std::list<ValueType>& v)\n        : _elements(v) {\n    // empty\n}\n\ntemplate <typename ValueType>\nLinkedList<ValueType>::LinkedList(std::initializer_list<ValueType> list) : _elements(list) {\n    // empty\n}\n\ntemplate <typename ValueType>\nvoid LinkedList<ValueType>::add(ValueType value) {\n    _elements.push_back(value);\n    _version.update();\n}\n\ntemplate <typename ValueType>\nLinkedList<ValueType>&\nLinkedList<ValueType>::addAll(const LinkedList<ValueType>& list) {\n    for (const ValueType& value : list) {\n        add(value);\n    }\n    _version.update();\n    return *this;\n}\n\ntemplate <typename ValueType>\nLinkedList<ValueType>& LinkedList<ValueType>::addAll(std::initializer_list<ValueType> list) {\n    for (const ValueType& value : list) {\n        add(value);\n    }\n    _version.update();\n    return *this;\n}\n\ntemplate <typename ValueType>\nValueType& LinkedList<ValueType>::back() {\n    return const_cast<ValueType&>(static_cast<const LinkedList &>(*this).back());\n}\n\ntemplate <typename ValueType>\nconst ValueType& LinkedList<ValueType>::back() const {\n    if (isEmpty()) {\n        error(\"LinkedList::back: list is empty\");\n    }\n    return _elements.back();\n}\n\ntemplate <typename ValueType>\nvoid LinkedList<ValueType>::clear() {\n    _elements.clear();\n    _version.update();\n}\n\ntemplate <typename ValueType>\nbool LinkedList<ValueType>::contains(const ValueType& value) const {\n    return indexOf(value) >= 0;\n}\n\ntemplate <typename ValueType>\nbool LinkedList<ValueType>::equals(const LinkedList<ValueType>& list2) const {\n    return _elements == list2._elements;\n}\n\ntemplate <typename ValueType>\nValueType& LinkedList<ValueType>::front() {\n    return const_cast<ValueType&>(static_cast<const LinkedList &>(*this).front());\n}\n\ntemplate <typename ValueType>\nconst ValueType& LinkedList<ValueType>::front() const {\n    if (isEmpty()) {\n        error(\"LinkedList::front: list is empty\");\n    }\n    return _elements.front();\n}\n\ntemplate <typename ValueType>\nconst ValueType & LinkedList<ValueType>::get(int index) const {\n    checkIndex(index, 0, size()-1, \"get\");\n    return *std::next(_elements.begin(), index);\n}\n\ntemplate <typename ValueType>\nint LinkedList<ValueType>::indexOf(const ValueType& value) const {\n    // loop using iterator to avoid O(N^2) runtime\n    int i = 0;\n    for (const ValueType& element : *this) {\n        if (element == value) {\n            return i;\n        }\n        i++;\n    }\n    return -1;\n}\n\ntemplate <typename ValueType>\nvoid LinkedList<ValueType>::insert(int index, ValueType value) {\n    checkIndex(index, 0, size(), \"insert\");\n    auto itr = _elements.begin();\n    std::advance(itr, index);\n    _elements.insert(itr, value);\n    _version.update();\n}\n\ntemplate <typename ValueType>\nbool LinkedList<ValueType>::isEmpty() const {\n    return _elements.empty();\n}\n\ntemplate <typename ValueType>\nint LinkedList<ValueType>::lastIndexOf(const ValueType& value) const {\n    // loop using iterator to avoid O(N^2) runtime\n    int i = size();\n    auto begin = this->begin();\n    auto itr = this->end();\n    while (itr != begin) {\n        itr--;\n        i--;\n        if (*itr == value) {\n            return i;\n        }\n    }\n    return -1;\n}\n\n/*\n * Implementation notes: mapAll\n * ----------------------------\n * The various versions of the mapAll function apply the function or\n * function object to each element in ascending index order.\n */\ntemplate <typename ValueType>\nvoid LinkedList<ValueType>::mapAll(std::function<void (const ValueType &)> fn) const {\n    for (ValueType element : *this) {\n        fn(element);\n    }\n}\n\ntemplate <typename ValueType>\nValueType LinkedList<ValueType>::pop_back() {\n    if (isEmpty()) {\n        error(\"LinkedList::pop_back: list is empty\");\n    }\n    ValueType back = _elements.back();\n    _elements.pop_back();\n    _version.update();\n    return back;\n}\n\ntemplate <typename ValueType>\nValueType LinkedList<ValueType>::pop_front() {\n    if (isEmpty()) {\n        error(\"LinkedList::pop_front: list is empty\");\n    }\n    ValueType front = _elements.front();\n    _elements.pop_front();\n    _version.update();\n    return front;\n}\n\ntemplate <typename ValueType>\nvoid LinkedList<ValueType>::push_back(const ValueType& value) {\n    _elements.push_back(value);\n    _version.update();\n}\n\ntemplate <typename ValueType>\nvoid LinkedList<ValueType>::push_front(const ValueType& value) {\n    _elements.push_front(value);\n    _version.update();\n}\n\ntemplate <typename ValueType>\nvoid LinkedList<ValueType>::remove(int index) {\n    checkIndex(index, 0, size()-1, \"remove\");\n    auto itr = _elements.begin();\n    advance(itr, index);\n    _elements.erase(itr);\n    _version.update();\n}\n\ntemplate <typename ValueType>\nValueType LinkedList<ValueType>::removeBack() {\n    return pop_back();\n}\n\ntemplate <typename ValueType>\nValueType LinkedList<ValueType>::removeFront() {\n    return pop_front();\n}\n\ntemplate <typename ValueType>\nvoid LinkedList<ValueType>::removeValue(const ValueType& value) {\n    auto itr = std::find(_elements.begin(), _elements.end(), value);\n    if (itr != _elements.end()) {\n        _elements.erase(itr);\n        _version.update();\n    }\n}\n\ntemplate <typename ValueType>\nvoid LinkedList<ValueType>::reverse() {\n    _elements.reverse();\n    _version.update();\n}\n\ntemplate <typename ValueType>\nvoid LinkedList<ValueType>::set(int index, const ValueType & value) {\n    checkIndex(index, 0, size()-1, \"set\");\n    (*this)[index] = value;\n}\n\ntemplate <typename ValueType>\nvoid LinkedList<ValueType>::shuffle() {\n    // actually shuffle a vector to avoid O(N^2) runtime\n    // at the cost of O(N) extra memory usage\n    Vector<ValueType> vec;\n    for (ValueType element : *this) {\n        vec.add(element);\n    }\n    for (int i = 0, length = vec.size(); i < length; i++) {\n        int j = randomInteger(i, length - 1);\n        if (i != j) {\n            std::swap(vec[i], vec[j]);\n        }\n    }\n\n    clear();\n    for (const ValueType& element : vec) {\n        add(element);\n    }\n}\n\ntemplate <typename ValueType>\nint LinkedList<ValueType>::size() const {\n    return _elements.size();\n}\n\n\ntemplate <typename ValueType>\nvoid LinkedList<ValueType>::sort() {\n    // actually sort a vector to avoid O(N^2) runtime\n    // at the cost of O(N) extra memory usage\n    Vector<ValueType> vec;\n    for (ValueType element : *this) {\n        vec.add(element);\n    }\n    std::sort(vec.begin(), vec.end());\n\n    clear();\n    for (const ValueType& element : vec) {\n        add(element);\n    }\n}\n\ntemplate <typename ValueType>\nLinkedList<ValueType> LinkedList<ValueType>::subList(int start, int length) const {\n    checkIndex(start, 0, size(), \"subList\");\n    checkIndex(start + length, 0, size(), \"subList\");\n    if (length < 0) {\n        error(\"LinkedList::subList: length cannot be negative\");\n    }\n    LinkedList<ValueType> result;\n    auto itr = begin();\n    for (int i = 0; i < start; i++) {\n        ++itr;\n    }\n    for (int i = 0; i < length; i++) {\n        result.add(*itr);\n        ++itr;\n    }\n    return result;\n}\n\ntemplate <typename ValueType>\nstd::string LinkedList<ValueType>::toString() const {\n    std::ostringstream os;\n    os << *this;\n    return os.str();\n}\n\n/*\n * Implementation notes: LinkedList selection\n * ------------------------------------------\n * The following code implements traditional array selection using\n * square brackets for the index.\n */\ntemplate <typename ValueType>\nValueType& LinkedList<ValueType>::operator [](int index) {\n    checkIndex(index, 0, size()-1, \"operator []\");\n    auto itr = begin();\n    advance(itr, index);\n    return *itr;\n}\ntemplate <typename ValueType>\nconst ValueType& LinkedList<ValueType>::operator [](int index) const {\n    checkIndex(index, 0, size()-1, \"operator []\");\n    auto itr = begin();\n    advance(itr, index);\n    return *itr;\n}\n\ntemplate <typename ValueType>\nLinkedList<ValueType>\nLinkedList<ValueType>::operator +(const LinkedList& list2) const {\n    LinkedList<ValueType> list = *this;\n    return list.addAll(list2);\n}\n\ntemplate <typename ValueType>\nLinkedList<ValueType> LinkedList<ValueType>::operator +(std::initializer_list<ValueType> list) const {\n    LinkedList<ValueType> result = *this;\n    return result.addAll(list);\n}\n\ntemplate <typename ValueType>\nLinkedList<ValueType>&\nLinkedList<ValueType>::operator +=(const LinkedList& list2) {\n    return addAll(list2);\n}\n\ntemplate <typename ValueType>\nLinkedList<ValueType>& LinkedList<ValueType>::operator +=(std::initializer_list<ValueType> list) {\n    return addAll(list);\n}\n\ntemplate <typename ValueType>\nLinkedList<ValueType>&\nLinkedList<ValueType>::operator +=(const ValueType& value) {\n    add(value);\n    return *this;\n}\n\n/*\n * Implementation notes: relational operators\n * These operators just forward to the underlying STL list.\n */\ntemplate <typename ValueType>\nbool LinkedList<ValueType>::operator ==(const LinkedList& list2) const {\n    return _elements == list2._elements;\n}\n\ntemplate <typename ValueType>\nbool LinkedList<ValueType>::operator !=(const LinkedList& list2) const {\n    return _elements != list2._elements;\n}\n\ntemplate <typename ValueType>\nbool LinkedList<ValueType>::operator <(const LinkedList& list2) const {\n    return _elements < list2._elements;\n}\n\ntemplate <typename ValueType>\nbool LinkedList<ValueType>::operator <=(const LinkedList& list2) const {\n    return _elements <= list2._elements;\n}\n\ntemplate <typename ValueType>\nbool LinkedList<ValueType>::operator >(const LinkedList& list2) const {\n    return _elements > list2._elements;\n}\n\ntemplate <typename ValueType>\nbool LinkedList<ValueType>::operator >=(const LinkedList& list2) const {\n    return this->_elements >= list2._elements;\n}\n\ntemplate <typename ValueType>\nvoid LinkedList<ValueType>::checkIndex(int index, int min, int max, const char* prefix) const {\n    if (index < min || index > max) {\n        std::ostringstream out;\n        out << \"LinkedList::\" << prefix << \": index of \" << index\n            << \" is outside of valid range [\";\n        if (min < max) {\n            out << min << \"..\" << max;\n        } else if (min == max) {\n            out << min;\n        } // else min > max, no range, empty LinkedList\n        out << \"]\";\n        error(out.str());\n    }\n}\n\n/*\n * Implementation notes: The , operator\n * ------------------------------------\n * The comma operator works adding the right operand to the LinkedList and\n * then returning the LinkedList by reference so that it is set for the next\n * value in the chain.\n */\ntemplate <typename ValueType>\nLinkedList<ValueType>&\nLinkedList<ValueType>::operator ,(const ValueType& value) {\n    add(value);\n    return *this;\n}\n\n/*\n * Implementation notes: << and >>\n * -------------------------------\n * The insertion and extraction operators use the template facilities in\n * strlib.h to read and write generic values in a way that treats strings\n * specially.\n */\ntemplate <typename ValueType>\nstd::ostream& operator <<(std::ostream& os, const LinkedList<ValueType>& list) {\n    return stanfordcpplib::collections::writeCollection(os, list);\n}\n\ntemplate <typename ValueType>\nstd::istream& operator >>(std::istream& is, LinkedList<ValueType>& list) {\n    ValueType element;\n    return stanfordcpplib::collections::readCollection(is, list, element, /* descriptor */ \"LinkedList::operator >>\");\n}\n\n/*\n * Template hash function for linked lists.\n * Requires the element type in the LinkedList to have a hashCode function.\n */\ntemplate <typename T>\nint hashCode(const LinkedList<T>& list) {\n    return stanfordcpplib::collections::hashCodeCollection(list);\n}\n\n/*\n * Function: randomElement\n * Usage: element = randomElement(list);\n * -------------------------------------\n * Returns a randomly chosen element of the given list.\n * Throws an error if the list is empty.\n */\ntemplate <typename T>\nconst T& randomElement(const LinkedList<T>& list) {\n    return stanfordcpplib::collections::randomElementIndexed(list);\n}\n\n/*\n * Randomly rearranges the elements of the given list.\n * Because it is slow to arbitrarily access/modify indexes in a linked list,\n * this function uses an auxiliary Vector to assist in its implementation,\n * although doing so increases the memory consumption of the algorithm.\n */\ntemplate <typename T>\nvoid shuffle(LinkedList<T>& list) {\n    list.shuffle();\n}\n\n#endif // _linkedlist_h\n\n/////////////////////// END code extracted from StanfordCPPLib/collections/linkedlist.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/collections/priorityqueue.h ///////////////////////\n/*\n * File: priorityqueue.h\n * ---------------------\n * This file exports the <code>PriorityQueue</code> class, a\n * collection in which values are processed in priority order.\n * \n * @version 2019/04/09\n * - renamed private members with underscore naming scheme for consistency\n * @version 2016/11/07\n * - small const-correctness bug fix in front() / back() (courtesy Truman Cranor)\n * @version 2016/10/14\n * - modified floating-point equality tests to use floatingPointEqual function\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * @version 2016/09/22\n * - renamed from pqueue.h to priorityqueue.h (old name left as an alias)\n * @version 2016/08/10\n * - added constructor support for std initializer_list usage, such as\n *   {{1.0, \"a\"}, {2.0, \"b\"}, {3.0, \"c\"}}\n * @version 2016/08/04\n * - fixed operator >> to not throw errors\n * @version 2015/07/05\n * - using global hashing functions rather than global variables\n * @version 2015/06/22\n * - added optional compiler flag SPL_PQUEUE_PRINT_IN_HEAP_ORDER to indicate\n *   that PQ should be printed in heap-internal order rather than sorted order\n * - added optional compiler flag SPL_PQUEUE_ALLOW_HEAP_ACCESS and corresponding\n *   semi-private methods to access value/priority at a given index\n *   (wanted internally for some testing and for practice exam problems;\n *    not meant to be called explicitly by students or most clients)\n * @version 2014/12/04\n * - moved comparison operators <, >=, etc. behind a (default-disabled)\n *   compiler flag because implementation is inefficient\n * @version 2014/11/13\n * - added comparison operators <, >=, etc.\n * - added add() method as synonym for enqueue()\n * - added remove() method as synonym for dequeue()\n * - added template hashCode function\n * @version 2014/10/20\n * - added equals method, ==, != operators\n * @version 2014/10/10\n * - removed usage of __foreach macro\n * 2014/02/01\n * - added changePriority member to raise a given value's priority\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _priorityqueue_h\n#define _priorityqueue_h\n\n#include <cmath>\n#include <initializer_list>\n#include <utility>\n#include <queue>\n#include <algorithm>\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\n/*\n * Class: PriorityQueue<ValueType>\n * -------------------------------\n * This class models a structure called a <b><i>priority&nbsp;queue</i></b>\n * in which values are processed in order of priority.  As in conventional\n * English usage, lower priority numbers correspond to higher effective\n * priorities, so that a priority 1 item takes precedence over a\n * priority 2 item.\n */\n\ntemplate <typename ValueType>\nclass PriorityQueue {\npublic:\n    /*\n     * Constructor: PriorityQueue\n     * Usage: PriorityQueue<ValueType> pq;\n     * -----------------------------------\n     * Initializes a new priority queue, which is initially empty.\n     */\n    PriorityQueue() = default;\n\n    /*\n     * Constructor: PriorityQueue\n     * Usage: PriorityQueue<ValueType> pq {{1.0, \"a\"}, {2.0, \"b\"}, {3.0, \"c\"}};\n     * -------------------------------------------------------------------------\n     * Initializes a new priority that stores the given pairs.\n     * Note that the pairs are stored in priority order and not\n     * necessarily the order in which they are written in the initializer list.\n     */\n    PriorityQueue(std::initializer_list<std::pair<double, ValueType>> list);\n\n    /*\n     * Destructor: ~PriorityQueue\n     * --------------------------\n     * Frees any heap storage associated with this priority queue.\n     */\n    virtual ~PriorityQueue() = default;\n    \n    /*\n     * Method: add\n     * Usage: pq.add(value, priority);\n     * -------------------------------\n     * A synonym for the enqueue method.\n     */\n    void add(const ValueType& value, double priority);\n    \n    /*\n     * Method: back\n     * Usage: ValueType last = pq.back();\n     * ----------------------------------\n     * Returns the last value in the queue by reference.\n     */\n    ValueType& back();\n    \n    /*\n     * Method: changePriority\n     * Usage: pq.changePriority(value, newPriority);\n     * ---------------------------------------------\n     * Adjusts <code>value</code> in the queue to now have the specified new priority,\n     * which must be at least as urgent (lower number) than that value's previous\n     * priority in the queue.\n     * Throws an error if the element value is not present in the queue, or if the\n     * new priority passed is not at least as urgent as its current priority.\n     */\n    void changePriority(ValueType value, double newPriority);\n\n    /*\n     * Method: clear\n     * Usage: pq.clear();\n     * ------------------\n     * Removes all elements from the priority queue.\n     */\n    void clear();\n    \n    /*\n     * Method: dequeue\n     * Usage: ValueType first = pq.dequeue();\n     * --------------------------------------\n     * Removes and returns the highest priority value.  If multiple\n     * entries in the queue have the same priority, those values are\n     * dequeued in the same order in which they were enqueued.\n     */\n    ValueType dequeue();\n\n    /*\n     * Method: enqueue\n     * Usage: pq.enqueue(value, priority);\n     * -----------------------------------\n     * Adds <code>value</code> to the queue with the specified priority.\n     * Lower priority numbers correspond to higher priorities, which\n     * means that all priority 1 elements are dequeued before any\n     * priority 2 elements.\n     */\n    void enqueue(const ValueType& value, double priority);\n    \n    /*\n     * Method: equals\n     * Usage: if (pq.equals(pq2)) ...\n     * ------------------------------\n     * Compares two priority queues for equality.\n     * Returns <code>true</code> if this queue contains exactly the same\n     * values and priorities as the given other queue.\n     * Identical in behavior to the == operator.\n     */\n    bool equals(const PriorityQueue<ValueType>& pq2) const;\n    \n    /*\n     * Method: front\n     * Usage: ValueType first = pq.front();\n     * ------------------------------------\n     * Returns the first value in the queue by reference.\n     */\n    ValueType& front();\n\n    /*\n     * Method: isEmpty\n     * Usage: if (pq.isEmpty()) ...\n     * ----------------------------\n     * Returns <code>true</code> if the priority queue contains no elements.\n     */\n    bool isEmpty() const;\n    \n    /*\n     * Method: peek\n     * Usage: ValueType first = pq.peek();\n     * -----------------------------------\n     * Returns the value of highest priority in the queue, without\n     * removing it.\n     */\n    ValueType peek() const;\n\n    /*\n     * Method: peekPriority\n     * Usage: double priority = pq.peekPriority();\n     * -------------------------------------------\n     * Returns the priority of the first element in the queue, without\n     * removing it.\n     */\n    double peekPriority() const;\n\n    /*\n     * Method: remove\n     * Usage: ValueType first = pq.remove();\n     * --------------------------------------\n     * A synonym for the dequeue method.\n     */\n    ValueType remove();\n\n    /*\n     * Method: size\n     * Usage: int n = pq.size();\n     * -------------------------\n     * Returns the number of values in the priority queue.\n     */\n    int size() const;\n\n    /*\n     * Method: toString\n     * Usage: string str = pq.toString();\n     * ----------------------------------\n     * Converts the queue to a printable string representation.\n     */\n    std::string toString() const;\n    \n    /*\n     * Operator: <<\n     * Prints the priority queue to the given output stream.\n     */\n    template <typename T>\n    friend std::ostream& operator <<(std::ostream& os, const PriorityQueue<T>& pq);\n    \n    /*\n     * Operators: ==, !=\n     * Usage: if (pq1 == pq2) ...\n     * --------------------------\n     * Relational operators to compare two queues to see if they have the same elements.\n     * The ==, != operators require that the ValueType has a == operator\n     * so that the elements can be tested for equality.\n     */\n    bool operator ==(const PriorityQueue& pq2) const;\n    bool operator !=(const PriorityQueue& pq2) const;\n\n#ifdef SPL_PQUEUE_COMPARISON_OPERATORS_ENABLED\n    /*\n     * Operators: <, <=, >, >=\n     * Usage: if (pq1 < pq2) ...\n     * -------------------------\n     * Relational operators to compare two queues.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     */\n    bool operator <(const PriorityQueue& pq2) const;\n    bool operator <=(const PriorityQueue& pq2) const;\n    bool operator >(const PriorityQueue& pq2) const;\n    bool operator >=(const PriorityQueue& pq2) const;\n#endif // SPL_PQUEUE_COMPARISON_OPERATORS_ENABLED\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\n    /*\n     * Implementation notes: PriorityQueue data structure\n     * --------------------------------------------------\n     * The PriorityQueue class is implemented using a data structure called\n     * a heap.\n     */\nprivate:\n    /* Type used for each heap entry */\n    struct HeapEntry {\n        ValueType value;\n        double priority;\n        long sequence;\n\n        bool operator < (const HeapEntry& rhs) const;\n    };\n\n    /* Instance variables */\n    Vector<HeapEntry> _heap;\n    long _enqueueCount = 0;\n\n#ifdef SPL_PQUEUE_COMPARISON_OPERATORS_ENABLED\n    int pqCompare(const PriorityQueue& other) const;\n#endif // SPL_PQUEUE_COMPARISON_OPERATORS_ENABLED\n\npublic:\n    /* private implentation section */\n\n    template <typename Collection>\n    friend int stanfordcpplib::collections::compare(const Collection& pq1, const Collection& pq2);\n\n#ifdef SPL_PQUEUE_ALLOW_HEAP_ACCESS\n    const ValueType& __getValueFromHeap(int index) const;\n    double __getPriorityFromHeap(int index) const;\n#endif // SPL_PQUEUE_ALLOW_HEAP_ACCESS\n};\n\ntemplate <typename ValueType>\nPriorityQueue<ValueType>::PriorityQueue(\n        std::initializer_list<std::pair<double, ValueType>> list) {\n    for (std::pair<double, ValueType> pair : list) {\n        enqueue(pair.second, pair.first);\n    }\n}\n\ntemplate <typename ValueType>\nvoid PriorityQueue<ValueType>::add(const ValueType& value, double priority) {\n    enqueue(value, priority);\n}\n\ntemplate <typename ValueType>\nValueType & PriorityQueue<ValueType>::back() {\n    if (isEmpty()) {\n        error(\"PriorityQueue::back: Attempting to read back of an empty queue\");\n    }\n    return _heap.back().value;\n}\n\n/*\n * changePriority function added by Marty Stepp.\n * Parts of this implementation are adapted from TrailblazerPQueue.h,\n * which was written by Keith Schwarz.\n */\ntemplate <typename ValueType>\nvoid PriorityQueue<ValueType>::changePriority(ValueType value, double newPriority) {\n    if (std::isnan(newPriority)) {\n        error(\"PriorityQueue::changePriority: Attempted to use NaN as a priority.\");\n    }\n    if (floatingPointEqual(newPriority, -0.0)) {\n        newPriority = 0.0;\n    }\n\n    /* Find the element to change. */\n    auto itr = std::find_if(_heap.begin(), _heap.end(), [&](const HeapEntry& entry) {\n        return entry.value == value;\n    });\n    if (itr == _heap.end()) {\n        error(\"PriorityQueue::changePriority: Element not found in priority queue.\");\n    }\n\n    if (itr->priority < newPriority) {\n        error(\"PriorityQueue::changePriority: new priority cannot be less urgent than current priority.\");\n    }\n    itr->priority = newPriority;\n    std::push_heap(_heap.begin(), itr + 1);\n}\n\ntemplate <typename ValueType>\nvoid PriorityQueue<ValueType>::clear() {\n    _heap.clear();\n    _enqueueCount = 0;   // BUGFIX 2014/10/10: was previously using garbage unassigned value\n}\n\n/*\n * Implementation notes: dequeue, peek, peekPriority\n * -------------------------------------------------\n * These methods must check for an empty queue and report an error\n * if there is no first element.\n */\ntemplate <typename ValueType>\nValueType PriorityQueue<ValueType>::dequeue() {\n    if (isEmpty()) {\n        error(\"PriorityQueue::dequeue: Attempting to dequeue an empty queue\");\n    }\n\n    ValueType result = _heap[0].value;\n    std::pop_heap(_heap.begin(), _heap.end());\n    _heap.pop_back();\n    return result;\n}\n\ntemplate <typename ValueType>\nvoid PriorityQueue<ValueType>::enqueue(const ValueType& value, double priority) {\n    if (std::isnan(priority)) {\n        error(\"PriorityQueue::enqueue: Attempted to use NaN as a priority.\");\n    }\n    if (floatingPointEqual(priority, -0.0)) {\n        priority = 0.0;\n    }\n\n    _heap.add({ value, priority, _enqueueCount++ });\n    std::push_heap(_heap.begin(), _heap.end());\n}\n\ntemplate <typename ValueType>\nbool PriorityQueue<ValueType>::equals(const PriorityQueue<ValueType>& pq2) const {\n    // optimization: if literally same pq, stop\n    if (this == &pq2) {\n        return true;\n    }\n    if (size() != pq2.size()) {\n        return false;\n    }\n    PriorityQueue<ValueType> backup1 = *this;\n    PriorityQueue<ValueType> backup2 = pq2;\n    while (!backup1.isEmpty() && !backup2.isEmpty()) {\n        if (!floatingPointEqual(backup1.peekPriority(), backup2.peekPriority())) {\n            return false;\n        }\n        if (backup1.dequeue() != backup2.dequeue()) {\n            return false;\n        }\n    }\n    return backup1.isEmpty() == backup2.isEmpty();\n}\n\ntemplate <typename ValueType>\nValueType& PriorityQueue<ValueType>::front() {\n    if (isEmpty()) {\n        error(\"PriorityQueue::front: Attempting to read front of an empty queue\");\n    }\n    return _heap[0].value;\n}\n\ntemplate <typename ValueType>\nbool PriorityQueue<ValueType>::isEmpty() const {\n    return _heap.size() == 0;\n}\n\ntemplate <typename ValueType>\nValueType PriorityQueue<ValueType>::peek() const {\n    if (isEmpty()) {\n        error(\"PriorityQueue::peek: Attempting to peek at an empty queue\");\n    }\n    return _heap.front().value;\n}\n\ntemplate <typename ValueType>\ndouble PriorityQueue<ValueType>::peekPriority() const {\n    if (isEmpty()) {\n        error(\"PriorityQueue::peekPriority: Attempting to peek at an empty queue\");\n    }\n    return _heap.get(0).priority;\n}\n\ntemplate <typename ValueType>\nValueType PriorityQueue<ValueType>::remove() {\n    return dequeue();\n}\n\ntemplate <typename ValueType>\nint PriorityQueue<ValueType>::size() const {\n    return _heap.size();\n}\n\ntemplate <typename ValueType>\nstd::string PriorityQueue<ValueType>::toString() const {\n    std::ostringstream os;\n    os << *this;\n    return os.str();\n}\n\n#ifdef SPL_PQUEUE_COMPARISON_OPERATORS_ENABLED\n/*\n * Implementation note: Due to the complexity and unpredictable heap ordering of the elements,\n * this function sadly makes a deep copy of both PQs for comparing.\n * Therefore it is recommended not to use PQs in a context where <, <=, etc. are being\n * called on them frequently.\n */\ntemplate <typename ValueType>\nint PriorityQueue<ValueType>::pqCompare(const PriorityQueue& pq2) const {\n    if (this == &pq2) {\n        return 0;\n    }\n    PriorityQueue<ValueType> backup1 = *this;\n    PriorityQueue<ValueType> backup2 = pq2;\n    while (!backup1.isEmpty() && !backup2.isEmpty()) {\n        if (backup1.peek() < backup2.peek()) {\n            return -1;\n        } else if (backup2.peek() < backup1.peek()) {\n            return 1;\n        }\n        \n        double pri1 = backup1.peekPriority();\n        double pri2 = backup2.peekPriority();\n        if (pri1 < pri2) {\n            return -1;\n        } else if (pri2 < pri1) {\n            return 1;\n        }\n        \n        backup1.dequeue();\n        backup2.dequeue();\n    }\n    if (backup1.size() < backup2.size()) {\n        return -1;\n    } else if (backup2.size() < backup1.size()) {\n        return 1;\n    } else {\n        return 0;\n    }\n}\n#endif // SPL_PQUEUE_COMPARISON_OPERATORS_ENABLED\n\n/*\n * Comparison function for heap entries. The comparison is lexicographic, first by\n * priority, then by sequence number.\n *\n * Because std::push_heap and std::pop_heap try creating a max-heap whereas we want\n * a min-heap, the priority comparisons are reversed.\n */\ntemplate <typename ValueType>\nbool PriorityQueue<ValueType>::HeapEntry::operator < (const HeapEntry& rhs) const {\n    if (priority > rhs.priority) return true;\n    if (rhs.priority > priority) return false;\n\n    return sequence < rhs.sequence;\n}\n\ntemplate <typename ValueType>\nbool PriorityQueue<ValueType>::operator ==(const PriorityQueue& pq2) const {\n    return equals(pq2);\n}\n\ntemplate <typename ValueType>\nbool PriorityQueue<ValueType>::operator !=(const PriorityQueue& pq2) const {\n    return !equals(pq2);\n}\n\n#ifdef SPL_PQUEUE_COMPARISON_OPERATORS_ENABLED\ntemplate <typename ValueType>\nbool PriorityQueue<ValueType>::operator <(const PriorityQueue& pq2) const {\n    return pqCompare(pq2) < 0;\n}\n\ntemplate <typename ValueType>\nbool PriorityQueue<ValueType>::operator <=(const PriorityQueue& pq2) const {\n    return pqCompare(pq2) <= 0;\n}\n\ntemplate <typename ValueType>\nbool PriorityQueue<ValueType>::operator >(const PriorityQueue& pq2) const {\n    return pqCompare(pq2) > 0;\n}\n\ntemplate <typename ValueType>\nbool PriorityQueue<ValueType>::operator >=(const PriorityQueue& pq2) const {\n    return pqCompare(pq2) >= 0;\n}\n#endif // SPL_PQUEUE_COMPARISON_OPERATORS_ENABLED\n\n/*\n * Template hash function for priority queues.\n * Requires the element type in the priority queue to have a hashCode function.\n */\ntemplate <typename T>\nint hashCode(const PriorityQueue<T>& pq) {\n    // (slow, memory-inefficient) implementation: copy pq, dequeue all, and hash together\n    PriorityQueue<T> backup = pq;\n    int code = hashSeed();\n    while (!backup.isEmpty()) {\n        code = hashMultiplier() * code + hashCode(backup.peek());\n        code = hashMultiplier() * code + hashCode(backup.peekPriority());\n        backup.dequeue();\n    }\n    return int(code & hashMask());\n}\n\n#ifdef SPL_PQUEUE_ALLOW_HEAP_ACCESS\ntemplate <typename ValueType>\nconst ValueType& PriorityQueue<ValueType>::__getValueFromHeap(int index) const {\n    return _heap[index].value;\n}\n\ntemplate <typename ValueType>\ndouble PriorityQueue<ValueType>::__getPriorityFromHeap(int index) const {\n    return _heap[index].priority;\n}\n#endif // SPL_PQUEUE_ALLOW_HEAP_ACCESS\n\ntemplate <typename ValueType>\nstd::ostream& operator <<(std::ostream& os,\n                          const PriorityQueue<ValueType>& pq) {\n    os << \"{\";\n\n#ifdef SPL_PQUEUE_PRINT_IN_HEAP_ORDER\n    // faster implementation: print in heap order\n    // (only downside: doesn't print in 'sorted' priority order,\n    //  which might confuse student client)\n    for (int i = 0, len = pq.size(); i < len; i++) {\n        if (i > 0) {\n            os << \", \";\n        }\n        os << pq._heap[i].priority << \":\";\n        writeGenericValue(os, pq._heap[i].value, /* forceQuotes */ true);\n    }\n#else // SPL_PQUEUE_PRINT_IN_HEAP_ORDER\n    // (default) slow, memory-inefficient implementation: copy pq and print\n    PriorityQueue<ValueType> copy = pq;\n    for (int i = 0, len = pq.size(); i < len; i++) {\n        if (i > 0) {\n            os << \", \";\n        }\n        os << copy.peekPriority() << \":\";\n        writeGenericValue(os, copy.dequeue(), /* forceQuotes */ true);\n    }\n#endif // SPL_PQUEUE_PRINT_IN_HEAP_ORDER\n    return os << \"}\";\n}\n\ntemplate <typename ValueType>\nstd::istream& operator >>(std::istream& is, PriorityQueue<ValueType>& pq) {\n    char ch = '\\0';\n    is >> ch;\n    if (ch != '{') {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n        error(\"PriorityQueue::operator >>: Missing {\");\n#endif\n        is.setstate(std::ios_base::failbit);\n        return is;\n    }\n    pq.clear();\n    is >> ch;\n    if (ch != '}') {\n        is.unget();\n        while (true) {\n            double priority = 0.0;\n            is >> priority >> ch;\n            if (ch != ':') {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n                error(\"PriorityQueue::operator >>: Missing colon after priority\");\n#endif\n                is.setstate(std::ios_base::failbit);\n                return is;\n            }\n            ValueType value;\n            if (!readGenericValue(is, value)) {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n                error(\"PriorityQueue::operator >>: parse error\");\n#endif\n                return is;\n            }\n            pq.enqueue(value, priority);\n            is >> ch;\n            if (ch == '}') {\n                break;\n            }\n            if (ch != ',') {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n                error(std::string(\"PriorityQueue::operator >>: Unexpected character \") + ch);\n#endif\n                is.setstate(std::ios_base::failbit);\n                return is;\n            }\n        }\n    }\n    return is;\n}\n\n#endif // _priorityqueue_h\n\n/////////////////////// END code extracted from StanfordCPPLib/collections/priorityqueue.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/collections/pqueue.h ///////////////////////\n/*\n * This is an alias for priorityqueue.h left in for backward compatibility.\n * See priorityqueue.h for the implementation of the PriorityQueue class.\n *\n * @author Marty Stepp\n * @version 2016/09/22\n * - initial version\n */\n\n#ifndef _pqueue_h\n#define _pqueue_h\n\n#endif // _pqueue_h\n\n/////////////////////// END code extracted from StanfordCPPLib/collections/pqueue.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/collections/sparsegrid.h ///////////////////////\n/*\n * File: sparsegrid.h\n * ------------------\n * This file exports the <code>SparseGrid</code> class, which offers a\n * convenient abstraction for representing a two-dimensional array.\n * Unlike Grid, SparseGrid is optimized for grids in which most of the cells\n * are empty.  It uses far less memory in such cases than a Grid does.\n * If the grid is expected to be mostly full of meaningful data,\n * Grid is recommended for use over SparseGrid.\n * \n * @author Marty Stepp\n * @version 2018/03/12\n * - added overloads that accept GridLocation: get, inBounds, isSet, locations,\n *   set, unset, operator []\n * @version 2018/03/10\n * - added methods front, back, clear\n * @version 2017/11/14\n * - added iterator version checking support\n * @version 2016/10/22\n * - bug fix for size method\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * - added size() method\n * @version 2016/08/10\n * - added constructor support for std initializer_list usage, such as\n *   {{1, 2, 3}, {4, 5, 6}}\n * @version 2016/08/04\n * - fixed operator >> to not throw errors\n * @version 2015/07/05\n * - using global hashing functions rather than global variables\n * @version 2014/11/13\n * - added comparison operators <, >=, etc.\n * - added template hashCode function\n * @version 2014/10/20\n * - added width(), height() methods to be consistent with Grid\n * @version 2014/10/10\n * - removed usage of __foreach macro\n * - made ==, != operators const as they should be\n * - added resize(true) function with ability to retain old contents\n * @since 2014/07/09\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _sparsegrid_h\n#define _sparsegrid_h\n\n#include <initializer_list>\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\n/*\n * Class: SparseGrid<ValueType>\n * ----------------------------\n * This class stores an indexed, two-dimensional array.\n */\n\ntemplate <typename ValueType>\nclass SparseGrid {\npublic:\n    /* Forward reference */\n    class SparseGridRow;\n    class SparseGridRowConst;\n\n    /*\n     * Constructor: SparseGrid\n     * Usage: SparseGrid<ValueType> grid;\n     *        SparseGrid<ValueType> grid(nRows, nCols);\n     * ------------------------------------------------\n     * Initializes a new grid.  The second form of the constructor is\n     * more common and creates a grid with the specified number of rows\n     * and columns.  Each element of the grid is initialized to the\n     * default value for the type.  The default constructor creates an\n     * empty grid for which the client must call <code>resize</code> to\n     * set the dimensions.\n     * The three-argument constructor also accepts an initial value and\n     * fills every cell of the grid with that value.\n     */\n    SparseGrid();\n    SparseGrid(int _rowCount, int _columnCount);\n    SparseGrid(int _rowCount, int _columnCount, const ValueType& value);\n\n    /*\n     * This constructor uses an initializer list to set up the grid.\n     * Usage: SparseGrid<int> grid {{1, 2, 3}, {4, 5, 6}};\n     */\n    SparseGrid(std::initializer_list<std::initializer_list<ValueType>> list);\n\n    /*\n     * Destructor: ~SparseGrid\n     * -----------------------\n     * Frees any heap storage associated with this grid.\n     */\n    virtual ~SparseGrid();\n\n    /*\n     * Method: back\n     * Usage: ValueType value = grid.back();\n     * -------------------------------------\n     * Returns the last value in the grid in the order established by the\n     * <code>foreach</code> macro.  This is the highest row/col value that has\n     * been explicitly set.\n     * If the grid is empty, generates an error.\n     */\n    ValueType back() const;\n\n    /*\n     * Method: clear\n     * Usage: grid.clear();\n     * --------------------\n     * Sets every value in the grid to its element type's default value.\n     */\n    void clear();\n\n    /*\n     * Method: equals\n     * Usage: if (grid.equals(grid2)) ...\n     * ----------------------------------\n     * Returns <code>true</code> if this grid contains exactly the same\n     * values as the given other grid.\n     * Identical in behavior to the == operator.\n     */\n    bool equals(const SparseGrid<ValueType>& grid) const;\n\n    /*\n     * Method: fill\n     * Usage: grid.fill(value);\n     * ------------------------\n     * Stores the given value in every cell of this grid.\n     */\n    void fill(const ValueType& value);\n\n    /*\n     * Method: front\n     * Usage: ValueType value = grid.front();\n     * --------------------------------------\n     * Returns the first value in the grid in the order established by the\n     * <code>foreach</code> macro.  Typically this is equivalent to grid[0][0].\n     * If the grid is empty, generates an error.\n     */\n    ValueType front() const;\n\n    /*\n     * Method: get\n     * Usage: ValueType value = grid.get(row, col);\n     * --------------------------------------------\n     * Returns the element at the specified <code>row</code>/<code>col</code>\n     * position in this grid.\n     *\n     * If no data was set at the given row/column position, this method returns\n     * a default value for the grid's value type.\n     *\n     * This method signals an error if the <code>row</code> and <code>col</code>\n     * arguments are outside the grid boundaries.\n     */\n    ValueType get(int row, int col);\n    const ValueType& get(int row, int col) const;\n    ValueType get(const GridLocation& loc);\n    const ValueType& get(const GridLocation& loc) const;\n\n    /*\n     * Method: height\n     * Usage: int nRows = grid.height();\n     * ---------------------------------\n     * Returns the grid's height, that is, the number of rows in the grid.\n     */\n    int height() const;\n    \n    /*\n     * Method: inBounds\n     * Usage: if (grid.inBounds(row, col)) ...\n     * ---------------------------------------\n     * Returns <code>true</code> if the specified row and column position\n     * is inside the bounds of the grid.\n     */\n    bool inBounds(int row, int col) const;\n    bool inBounds(const GridLocation& loc) const;\n\n    /*\n     * Method: isEmpty\n     * Usage: if (grid.isEmpty()) ...\n     * ---------------------------------------\n     * Returns <code>true</code> if the specified grid has 0 rows and/or columns,\n     * or if none of the individual cell values has been set yet.\n     */\n    bool isEmpty() const;\n\n    /*\n     * Method: isSet\n     * Usage: if (grid.isSet(row, col)) ...\n     * ---------------------------------------\n     * Returns <code>true</code> if the specified row and column position\n     * stores meaningful data; in other words, if it has had a value set\n     * there by a previous call to fill, set, [], etc.\n     */\n    bool isSet(int row, int col) const;\n    bool isSet(const GridLocation& loc) const;\n\n    /*\n     * Method: locations\n     * Usage: for (GridLocation loc : grid.locations()) ...\n     * ----------------------------------------------------\n     * Returns a range of (row,col) locations found in this grid.\n     * This allows a nice abstraction for looping over the 2D grid range\n     * of indexes using a single for loop.\n     * By default the locations are arranged in row-major order,\n     * but if you pass the rowMajor parameter of false, the locations will be\n     * returned in column-major order instead.\n     */\n    GridLocationRange locations(bool rowMajor = true) const;\n\n    /*\n     * Method: mapAll\n     * Usage: grid.mapAll(fn);\n     * -----------------------\n     * Calls the specified function on each element of the grid.  The\n     * elements are processed in <b><i>row-major order,</i></b> in which\n     * all the elements of row 0 are processed, followed by the elements\n     * in row 1, and so on.\n     */\n    void mapAll(void (*fn)(ValueType value)) const;\n    void mapAll(void (*fn)(const ValueType& value)) const;\n\n    template <typename FunctorType>\n    void mapAll(FunctorType fn) const;\n\n    /*\n     * Method: numCols\n     * Usage: int nCols = grid.numCols();\n     * ----------------------------------\n     * Returns the number of columns in the grid.\n     */\n    int numCols() const;\n\n    /*\n     * Method: numRows\n     * Usage: int nRows = grid.numRows();\n     * ----------------------------------\n     * Returns the number of rows in the grid.\n     */\n    int numRows() const;\n\n    /*\n     * Method: resize\n     * Usage: grid.resize(nRows, nCols);\n     * ---------------------------------\n     * Reinitializes the grid to have the specified number of rows\n     * and columns.  If the 'retain' parameter is true,\n     * the previous grid contents are retained as much as possible.\n     * If 'retain' is not passed or is false, any previous grid contents\n     * are discarded.\n     */\n    void resize(int _rowCount, int _columnCount, bool retain = false);\n\n    /*\n     * Method: set\n     * Usage: grid.set(row, col, value);\n     * ---------------------------------\n     * Replaces the element at the specified <code>row</code>/<code>col</code>\n     * location in this grid with a new value.  This method signals an error\n     * if the <code>row</code> and <code>col</code> arguments are outside\n     * the grid boundaries.\n     */\n    void set(int row, int col, const ValueType& value);\n    void set(const GridLocation& loc, const ValueType& value);\n\n    /*\n     * Method: size\n     * Usage: int size = grid.size();\n     * ------------------------------\n     * Returns the total number of elements that have been set in the grid.\n     * Note that this may not be equal to the number of rows times the number of\n     * columns, because not every index may have been set.\n     */\n    int size() const;\n\n    /*\n     * Method: toString\n     * Usage: string str = grid.toString();\n     * ------------------------------------\n     * Converts the grid to a printable string representation.\n     * Unlike the representation of a Grid, this one displays only the\n     * cells in which data has been explicitly set, such as:\n     * \"{0:{2:88}, 1:{3:42}}, 3 x 4\"\n     */\n    std::string toString() const;\n\n    /*\n     * Method: toString2D\n     * Usage: string str = grid.toString2D();\n     * --------------------------------------\n     * Converts the grid to a printable string representation.\n     * The string returned is a 2-dimensional representation such as:\n     * \"{{1, 2, 3},\\n\n     *   {4, 5, 6},\\n\n     *   {7, 8, 9}}\"\n     */\n    std::string toString2D(\n            std::string rowStart = \"{\",\n            std::string rowEnd = \"}\",\n            std::string colSeparator = \", \",\n            std::string rowSeparator = \",\\n \") const;\n\n    /*\n     * Method: unset\n     * Usage: grid.unset(row, col, value);\n     * -----------------------------------\n     * Replaces the element at the specified <code>row</code>/<code>col</code>\n     * location in this grid with an empty default value.\n     * If the element at the specified row and column was not set, has no effect.\n     * This method signals an error if the <code>row</code> and <code>col</code>\n     * arguments are outside the grid boundaries.\n     */\n    void unset(int row, int col);\n    void unset(const GridLocation& loc);\n\n    /*\n     * Method: width\n     * Usage: int nCols = grid.width();\n     * --------------------------------\n     * Returns the grid's width, that is, the number of columns in the grid.\n     */\n    int width() const;\n\n    /*\n     * Operator: []\n     * Usage:  grid[row][col]\n     * ----------------------\n     * Overloads <code>[]</code> to select elements from this grid.\n     * This extension enables the use of traditional array notation to\n     * get or set individual elements.\n     *\n     * If no data was set at the given row/column position, this method returns\n     * a default value for the grid's value type.\n     *\n     * This method signals an error if the <code>row</code> and <code>col</code>\n     * arguments are outside the grid boundaries.\n     */\n    SparseGridRow operator [](int row);\n    const SparseGridRowConst operator [](int row) const;\n    ValueType& operator [](const GridLocation& loc);\n    const ValueType& operator [](const GridLocation& loc) const;\n\n    /*\n     * Additional SparseGrid operations\n     * --------------------------\n     * In addition to the methods listed in this interface, the SparseGrid\n     * class supports the following operations:\n     *\n     *   - Stream I/O using the << and >> operators\n     *   - Deep copying for the copy constructor and assignment operator\n     *   - Iteration using the range-based for statement and STL iterators\n     *\n     * The iteration forms process the grid in row-major order.\n     */\n\n    /*\n     * Operator: ==\n     * Usage: if (grid1 == grid2) ...\n     * ------------------------------\n     * Compares two grids for equality.\n     */\n    bool operator ==(const SparseGrid& grid2) const;\n\n    /*\n     * Operator: !=\n     * Usage: if (grid1 != grid2) ...\n     * ------------------------------\n     * Compares two grids for inequality.\n     */\n    bool operator !=(const SparseGrid& grid2) const;\n\n    /*\n     * Operators: <, >, <=, >=\n     * Usage: if (grid1 < grid2) ...\n     * -----------------------------\n     * Relational operators to compare two grids.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     */\n    bool operator <(const SparseGrid& grid2) const;\n    bool operator <=(const SparseGrid& grid2) const;\n    bool operator >(const SparseGrid& grid2) const;\n    bool operator >=(const SparseGrid& grid2) const;\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\n    /*\n     * Implementation notes: SparseGrid data structure\n     * -----------------------------------------------\n     * The SparseGrid is internally managed as a dynamic array of elements.\n     * The array itself is one-dimensional, the logical separation into\n     * rows and columns is done by arithmetic computation.  The layout\n     * is in row-major order, which is to say that the entire first row\n     * is laid out contiguously, followed by the entire second row,\n     * and so on.\n     */\n\nprivate:\n    /* Instance variables */\n    Map<int, Map<int, ValueType>> _elements;   // 2D map of the elements\n    int _rowCount;                             // the number of rows in the grid\n    int _columnCount;                          // the number of columns in the grid\n    unsigned int _version = 0;                 // structure version for detecting invalid iterators\n\n    /* Private method prototypes */\n\n    /*\n     * Throws an ErrorException if the given row/col are not within the range of\n     * (0,0) through (rowMax-1,colMax-1) inclusive.\n     * This is a consolidated error handler for all various SparseGrid members that\n     * accept index parameters.\n     * The prefix parameter represents a text string to place at the start of\n     * the error message, generally to help indicate which member threw the error.\n     */\n    void checkIndexes(int row, int col,\n                      int rowMax, int colMax,\n                      std::string prefix) const;\n    int gridCompare(const SparseGrid& grid2) const;\n\n    /*\n     * Hidden features\n     * ---------------\n     * The remainder of this file consists of the code required to\n     * support deep copying and iteration.  Including these methods\n     * in the public interface would make that interface more\n     * difficult to understand for the average client.\n     */\n\n    /*\n     * Deep copying support\n     * --------------------\n     * This copy constructor and operator= are defined to make a\n     * deep copy, making it possible to pass/return grids by value\n     * and assign from one grid to another.  The entire contents of\n     * the grid, including all elements, are copied.  Each grid\n     * element is copied from the original grid to the copy using\n     * assignment (operator=).  Making copies is generally avoided\n     * because of the expense and thus, grids are typically passed\n     * by reference, however, when a copy is needed, these operations\n     * are supported.\n     */\n    void deepCopy(const SparseGrid& grid) {\n        _elements = grid._elements;\n        _rowCount = grid._rowCount;\n        _columnCount = grid._columnCount;\n    }\n\n    template <typename T>\n    friend const T& randomElement(const SparseGrid<T>& grid);\n\n    template <typename T>\n    friend std::ostream& operator <<(std::ostream& os, const SparseGrid<T>& grid);\n\n    template <typename T>\n    friend std::istream& operator >>(std::istream& is, SparseGrid<T>& grid);\n\npublic:\n    SparseGrid& operator =(const SparseGrid& src) {\n        if (this != &src) {\n            deepCopy(src);\n        }\n        return *this;\n    }\n\n    SparseGrid(const SparseGrid& src) {\n        deepCopy(src);\n    }\n\n    /*\n     * Iterator support\n     * ----------------\n     * The classes in the StanfordCPPLib collection implement input\n     * iterators so that they work symmetrically with respect to the\n     * corresponding STL classes.\n     */\n    class iterator : public std::iterator<std::input_iterator_tag, ValueType> {\n    public:\n        iterator(const SparseGrid* gp, int index)\n                : gp(gp),\n                  index(index),\n                  itr_version(gp->version()) {\n            // empty\n        }\n\n        iterator(const iterator& it)\n                : gp(it.gp),\n                  index(it.index),\n                  itr_version(it.itr_version) {\n            // empty\n        }\n\n        iterator& operator ++() {\n            stanfordcpplib::collections::checkVersion(*gp, *this);\n            index++;\n            return *this;\n        }\n\n        iterator operator ++(int) {\n            stanfordcpplib::collections::checkVersion(*gp, *this);\n            iterator copy(*this);\n            operator++();\n            return copy;\n        }\n\n        bool operator ==(const iterator& rhs) {\n            return gp == rhs.gp && index == rhs.index;\n        }\n\n        bool operator !=(const iterator& rhs) {\n            return !(*this == rhs);\n        }\n\n        ValueType operator *() {\n            stanfordcpplib::collections::checkVersion(*gp, *this);\n            int row = index / gp->_columnCount;\n            int col = index % gp->_columnCount;\n            return gp->_elements[row][col];\n        }\n\n        ValueType* operator ->() {\n            stanfordcpplib::collections::checkVersion(*gp, *this);\n            int row = index / gp->_columnCount;\n            int col = index % gp->_columnCount;\n            return &gp->_elements[row][col];\n        }\n\n        unsigned int version() const {\n            return itr_version;\n        }\n\n    private:\n        const SparseGrid* gp;\n        int index;\n        unsigned int itr_version;\n    };\n\n    iterator begin() const {\n        return iterator(this, 0);\n    }\n\n    iterator end() const {\n        return iterator(this, _rowCount * _columnCount);\n    }\n\n    /*\n     * Returns the internal version of this collection.\n     * This is used to check for invalid iterators and issue error messages.\n     */\n    unsigned int version() const;\n\n    /*\n     * Private class: SparseGrid<ValType>::SparseGridRow\n     * -------------------------------------\n     * This section of the code defines a nested class within the SparseGrid template\n     * that makes it possible to use traditional subscripting on SparseGrid values.\n     */\n    class SparseGridRow {\n    public:\n        SparseGridRow() {\n            /* Empty */\n        }\n\n        ValueType& operator [](int col) {\n            _gp->checkIndexes(_row, col, _gp->_rowCount-1, _gp->_columnCount-1, \"operator [][]\");\n            return _gp->_elements[_row][col];\n        }\n\n        const ValueType& operator [](int col) const {\n            _gp->checkIndexes(_row, col, _gp->_rowCount-1, _gp->_columnCount-1, \"operator [][]\");\n            return _gp->_elements[_row][col];\n        }\n\n    private:\n        SparseGridRow(SparseGrid* gridRef, int index) {\n            _gp = gridRef;\n            _row = index;\n        }\n\n        SparseGrid* _gp;\n        int _row;\n        friend class SparseGrid;\n    };\n    friend class SparseGridRow;\n\n    class SparseGridRowConst {\n    public:\n        const ValueType operator [](int col) const {\n            _gp->checkIndexes(_row, col, _gp->_rowCount-1, _gp->_columnCount-1, \"operator [][]\");\n            return _gp->_elements[_row][col];\n        }\n\n    private:\n        SparseGridRowConst(SparseGrid* const gridRef, int index) : _gp(gridRef), _row(index) {\n            // empty\n        }\n\n        const SparseGrid* const _gp;\n        const int _row;\n        friend class SparseGrid;\n    };\n    friend class SparseGridRowConst;\n};\n\ntemplate <typename ValueType>\nSparseGrid<ValueType>::SparseGrid()\n        : _rowCount(0),\n          _columnCount(0) {\n    // empty\n}\n\ntemplate <typename ValueType>\nSparseGrid<ValueType>::SparseGrid(int nRows, int nCols) {\n    resize(nRows, nCols);\n}\n\ntemplate <typename ValueType>\nSparseGrid<ValueType>::SparseGrid(int nRows, int nCols, const ValueType& value) {\n    resize(nRows, nCols);\n    fill(value);\n}\n\ntemplate <typename ValueType>\nSparseGrid<ValueType>::SparseGrid(std::initializer_list<std::initializer_list<ValueType>> list)\n        : _rowCount(0),\n          _columnCount(0) {\n    // create the grid at the proper size\n    _rowCount = list.size();\n    if (list.begin() != list.end()) {\n        _columnCount = list.begin()->size();\n    }\n    resize(_rowCount, _columnCount);\n\n    // copy the data from the initializer list into the Grid\n    auto rowItr = list.begin();\n    for (int row = 0; row < _rowCount; row++) {\n        if ((int) rowItr->size() != _columnCount) {\n            error(\"SparseGrid::constructor: initializer list is not rectangular (must have same # cols in each row)\");\n        }\n        auto colItr = rowItr->begin();\n        for (int col = 0; col < _columnCount; col++) {\n            set(row, col, *colItr);\n            colItr++;\n        }\n        rowItr++;\n    }\n}\n\n\ntemplate <typename ValueType>\nSparseGrid<ValueType>::~SparseGrid() {\n    // empty\n}\n\ntemplate <typename ValueType>\nValueType SparseGrid<ValueType>::back() const {\n    if (isEmpty()) {\n        error(\"SparseGrid::back: grid is empty\");\n    }\n    int lastRow = _elements.back();\n    int lastCol = _elements[lastRow].back();\n    return _elements[lastRow][lastCol];\n}\n\ntemplate <typename ValueType>\nvoid SparseGrid<ValueType>::clear() {\n    _elements.clear();\n}\n\ntemplate <typename ValueType>\nbool SparseGrid<ValueType>::equals(const SparseGrid<ValueType>& grid2) const {\n    // optimization: if literally same grid, stop\n    if (this == &grid2) {\n        return true;\n    }\n    if (_rowCount != grid2._rowCount || _columnCount != grid2._columnCount) {\n        return false;\n    }\n    for (int row = 0; row < _rowCount; row++) {\n        for (int col = 0; col < _columnCount; col++) {\n            if (isSet(row, col)) {\n                // I have data there; he must, too, and it must be the same data\n                if (!grid2.isSet(row, col) || get(row, col) != grid2.get(row, col)) {\n                    return false;\n                }\n            } else {\n                // I don't have data there; he must also not have it there\n                if (grid2.isSet(row, col)) {\n                    return false;\n                }\n            }\n        }\n    }\n    return true;\n}\n\ntemplate <typename ValueType>\nvoid SparseGrid<ValueType>::fill(const ValueType& value) {\n    for (int row = 0; row < _rowCount; row++) {\n        for (int col = 0; col < _columnCount; col++) {\n            set(row, col, value);\n        }\n    }\n}\n\ntemplate <typename ValueType>\nValueType SparseGrid<ValueType>::front() const {\n    if (isEmpty()) {\n        error(\"SparseGrid::front: grid is empty\");\n    }\n    return *begin();\n}\n\ntemplate <typename ValueType>\nValueType SparseGrid<ValueType>::get(int row, int col) {\n    checkIndexes(row, col, _rowCount-1, _columnCount-1, \"get\");\n    return _elements[row][col];\n}\n\ntemplate <typename ValueType>\nconst ValueType& SparseGrid<ValueType>::get(int row, int col) const {\n    checkIndexes(row, col, _rowCount-1, _columnCount-1, \"get\");\n    return _elements[row][col];\n}\n\ntemplate <typename ValueType>\nValueType SparseGrid<ValueType>::get(const GridLocation& loc) {\n    return get(loc.row, loc.col);\n}\n\ntemplate <typename ValueType>\nconst ValueType& SparseGrid<ValueType>::get(const GridLocation& loc) const {\n    return get(loc.row, loc.col);\n}\n\ntemplate <typename ValueType>\nint SparseGrid<ValueType>::height() const {\n    return _rowCount;\n}\n\ntemplate <typename ValueType>\nbool SparseGrid<ValueType>::inBounds(int row, int col) const {\n    return row >= 0 && col >= 0 && row < _rowCount && col < _columnCount;\n}\n\ntemplate <typename ValueType>\nbool SparseGrid<ValueType>::inBounds(const GridLocation& loc) const {\n    return inBounds(loc.row, loc.col);\n}\n\ntemplate <typename ValueType>\nbool SparseGrid<ValueType>::isEmpty() const {\n    return _elements.isEmpty();\n}\n\ntemplate <typename ValueType>\nbool SparseGrid<ValueType>::isSet(int row, int col) const {\n    return inBounds(row, col) && _elements.containsKey(row) &&\n            _elements[row].containsKey(col);\n}\n\ntemplate <typename ValueType>\nbool SparseGrid<ValueType>::isSet(const GridLocation& loc) const {\n    return isSet(loc.row, loc.col);\n}\n\ntemplate <typename ValueType>\nGridLocationRange SparseGrid<ValueType>::locations(bool rowMajor) const {\n    return GridLocationRange(0, 0, numRows() - 1, numCols() - 1, rowMajor);\n}\n\ntemplate <typename ValueType>\nvoid SparseGrid<ValueType>::mapAll(void (*fn)(ValueType value)) const {\n    for (int row = 0; row < _rowCount; row++) {\n        for (int col = 0; col < _columnCount; col++) {\n            if (isSet(row, col)) {\n                fn(get(row, col));\n            }\n        }\n    }\n}\n\ntemplate <typename ValueType>\nvoid SparseGrid<ValueType>::mapAll(void (*fn)(const ValueType& value)) const {\n    for (int row = 0; row < _rowCount; row++) {\n        for (int col = 0; col < _columnCount; col++) {\n            if (isSet(row, col)) {\n                fn(get(row, col));\n            }\n        }\n    }\n}\n\ntemplate <typename ValueType>\ntemplate <typename FunctorType>\nvoid SparseGrid<ValueType>::mapAll(FunctorType fn) const {\n    for (int row = 0; row < _rowCount; row++) {\n        for (int col = 0; col < _columnCount; col++) {\n            if (isSet(row, col)) {\n                fn(get(row, col));\n            }\n        }\n    }\n}\n\ntemplate <typename ValueType>\nint SparseGrid<ValueType>::numCols() const {\n    return _columnCount;\n}\n\ntemplate <typename ValueType>\nint SparseGrid<ValueType>::numRows() const {\n    return _rowCount;\n}\n\ntemplate <typename ValueType>\nvoid SparseGrid<ValueType>::resize(int nRows, int nCols, bool retain) {\n    if (nRows < 0 || nCols < 0) {\n        std::ostringstream out;\n        out << \"SparseGrid::resize: Attempt to resize grid to invalid size (\"\n               << nRows << \", \" << nCols << \")\";\n        error(out.str());\n    }\n    int oldnRows = this->_rowCount;\n    int oldnCols = this->_columnCount;\n    this->_rowCount = nRows;\n    this->_columnCount = nCols;\n    \n    if (retain) {\n        // if resizing to a smaller size, must evict any row/col entries\n        // that exceed the new grid's bounds\n        if (nRows < oldnRows || nCols < oldnCols) {\n            Map<int, Map<int, ValueType>> newElements;\n            for (int row : _elements) {\n                if (row >= nRows) {\n                    break;   // don't add any entries beyond this row\n                }\n                for (int col : _elements[row]) {\n                    if (col >= nCols) {\n                        break;   // don't add any entries beyond this row\n                    }\n                    newElements[row][col] = _elements[row][col];\n                }\n            }\n            _elements = newElements;\n        }\n    } else {\n        _elements.clear();\n    }\n    _version++;\n}\n\ntemplate <typename ValueType>\nvoid SparseGrid<ValueType>::set(int row, int col, const ValueType& value) {\n    checkIndexes(row, col, _rowCount-1, _columnCount-1, \"set\");\n    _elements[row][col] = value;\n    _version++;\n}\n\ntemplate <typename ValueType>\nvoid SparseGrid<ValueType>::set(const GridLocation& loc, const ValueType& value) {\n    set(loc.row, loc.col, value);\n}\n\ntemplate <typename ValueType>\nint SparseGrid<ValueType>::size() const {\n    int count = 0;\n    for (int row : _elements) {\n        count += _elements[row].size();\n    }\n    return count;\n}\n\ntemplate <typename ValueType>\nstd::string SparseGrid<ValueType>::toString() const {\n    std::ostringstream os;\n    os << *this;\n    return os.str();\n}\n\ntemplate <typename ValueType>\nstd::string SparseGrid<ValueType>::toString2D(\n        std::string rowStart, std::string rowEnd,\n        std::string colSeparator, std::string rowSeparator) const {\n    std::ostringstream os;\n    os << rowStart;\n    int nRows = numRows();\n    int nCols = numCols();\n    for (int i = 0; i < nRows; i++) {\n        if (!_elements.containsKey(i) || _elements[i].isEmpty()) {\n            continue;\n        }\n        if (i > 0) {\n            os << rowSeparator;\n        }\n        os << rowStart;\n        for (int j = 0; j < nCols; j++) {\n            if (j > 0) {\n                os << colSeparator;\n            }\n            if (isSet(i, j)) {\n                writeGenericValue(os, get(i, j), true);\n            }\n        }\n        os << rowEnd;\n    }\n    os << rowEnd;\n    return os.str();\n}\n\ntemplate <typename ValueType>\nvoid SparseGrid<ValueType>::unset(int row, int col) {\n    checkIndexes(row, col, _rowCount-1, _columnCount-1, \"unset\");\n    if (_elements.containsKey(row)) {\n        _elements[row].remove(col);\n        if (_elements[row].isEmpty()) {\n            _elements.remove(row);\n        }\n    }\n    _version++;\n}\n\ntemplate <typename ValueType>\nvoid SparseGrid<ValueType>::unset(const GridLocation& loc) {\n    unset(loc.row, loc.col);\n}\n\ntemplate <typename ValueType>\nunsigned int SparseGrid<ValueType>::version() const {\n    return _version;\n}\n\ntemplate <typename ValueType>\nint SparseGrid<ValueType>::width() const {\n    return _columnCount;\n}\n\ntemplate <typename ValueType>\nvoid SparseGrid<ValueType>::checkIndexes(int row, int col,\n                                         int rowMax, int colMax,\n                                         std::string prefix) const {\n    const int rowMin = 0;\n    const int colMin = 0;\n    if (row < rowMin || row > rowMax || col < colMin || col > colMax) {\n        std::ostringstream out;\n        out << \"SparseGrid::\" << prefix << \": (\" << row << \", \" << col << \")\"\n            << \" is outside of valid range [\";\n        if (rowMin < rowMax && colMin < colMax) {\n            out << \"(\" << rowMin << \", \" << colMin <<  \")..(\"\n                << rowMax << \", \" << colMax << \")\";\n        } else if (rowMin == rowMax && colMin == colMax) {\n            out << \"(\" << rowMin << \", \" << colMin <<  \")\";\n        } // else min > max, no range, empty grid\n        out << \"]\";\n        error(out.str());\n    }\n}\n\ntemplate <typename ValueType>\nint SparseGrid<ValueType>::gridCompare(const SparseGrid& grid2) const {\n    int h1 = height();\n    int w1 = width();\n    int h2 = grid2.height();\n    int w2 = grid2.width();\n    int rows = h1 > h2 ? h1 : h2;\n    int cols = w1 > w2 ? w1 : w2;\n    for (int r = 0; r < rows; r++) {\n        for (int c = 0; c < cols; c++) {\n            if (r >= h1) {\n                return -1;\n            } else if (r >= h2) {\n                return 1;\n            }\n            \n            if (c >= w1) {\n                return -1;\n            } else if (c >= w2) {\n                return 1;\n            }\n            \n            if (!isSet(r, c) && grid2.isSet(r, c)) {\n                return -1;\n            } else if (isSet(r, c) && !grid2.isSet(r, c)) {\n                return 1;\n            }\n            \n            if (get(r, c) < grid2.get(r, c)) {\n                return -1;\n            } else if (grid2.get(r, c) < get(r, c)) {\n                return 1;\n            }\n        }\n    }\n    return 0;\n}\n\ntemplate <typename ValueType>\ntypename SparseGrid<ValueType>::SparseGridRow SparseGrid<ValueType>::operator [](int row) {\n    return SparseGridRow(this, row);\n}\n\ntemplate <typename ValueType>\nconst typename SparseGrid<ValueType>::SparseGridRowConst\nSparseGrid<ValueType>::operator [](int row) const {\n    return SparseGridRowConst(const_cast<SparseGrid*>(this), row);\n}\n\ntemplate <typename ValueType>\nValueType& SparseGrid<ValueType>::operator [](const GridLocation& loc) {\n    checkIndexes(loc.row, loc.col, _rowCount-1, _columnCount-1, \"operator []\");\n    return _elements[loc.row][loc.col];\n}\n\ntemplate <typename ValueType>\nconst ValueType& SparseGrid<ValueType>::operator [](const GridLocation& loc) const {\n    checkIndexes(loc.row, loc.col, _rowCount-1, _columnCount-1, \"operator []\");\n    return _elements[loc.row][loc.col];\n}\n\ntemplate <typename ValueType>\nbool SparseGrid<ValueType>::operator ==(const SparseGrid& grid2) const {\n    return equals(grid2);\n}\n\ntemplate <typename ValueType>\nbool SparseGrid<ValueType>::operator !=(const SparseGrid& grid2) const {\n    return !equals(grid2);\n}\n\ntemplate <typename ValueType>\nbool SparseGrid<ValueType>::operator <(const SparseGrid& grid2) const {\n    return gridCompare(grid2) < 0;\n}\n\ntemplate <typename ValueType>\nbool SparseGrid<ValueType>::operator <=(const SparseGrid& grid2) const {\n    return gridCompare(grid2) <= 0;\n}\n\ntemplate <typename ValueType>\nbool SparseGrid<ValueType>::operator >(const SparseGrid& grid2) const {\n    return gridCompare(grid2) > 0;\n}\n\ntemplate <typename ValueType>\nbool SparseGrid<ValueType>::operator >=(const SparseGrid& grid2) const {\n    return gridCompare(grid2) >= 0;\n}\n\n/*\n * Implementation notes: << and >>\n * -------------------------------\n * The insertion and extraction operators use the template facilities in\n * strlib.h to read and write generic values in a way that treats strings\n * specially.\n */\ntemplate <typename ValueType>\nstd::ostream& operator <<(std::ostream& os, const SparseGrid<ValueType>& grid) {\n    os << grid._elements << \", \" << grid._rowCount << \" x \" << grid._columnCount;\n    return os;\n}\n\ntemplate <typename ValueType>\nstd::istream& operator >>(std::istream& is, SparseGrid<ValueType>& grid) {\n    // \"{...}, 4 x 3\"\n\n    // read \"{...}\" (map of elements)\n    if (!(is >> grid._elements)) {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n        error(\"SparseGrid::operator >>: Invalid elements\");\n#endif\n        is.setstate(std::ios_base::failbit);\n        return is;\n    }\n\n    // throw away ', ' token\n    std::string comma;\n    if (!(is >> comma)) {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n        error(\"SparseGrid::operator >>: Invalid format\");\n#endif\n        is.setstate(std::ios_base::failbit);\n        return is;\n    }\n\n    if (!(is >> grid._rowCount)) {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n        error(\"SparseGrid::operator >>: Invalid number of rows\");\n#endif\n        is.setstate(std::ios_base::failbit);\n        return is;\n    }\n\n    std::string x;\n    is >> x;       // throw away 'x' token\n\n    if (!(is >> grid._columnCount)) {\n#ifdef SPL_ERROR_ON_COLLECTION_PARSE\n        error(\"SparseGrid::operator >>: Invalid number of rows\");\n#endif\n        is.setstate(std::ios_base::failbit);\n        return is;\n    }\n    return is;\n}\n\n/*\n * Template hash function for sparse grids.\n * Requires the element type in the SparseGrid to have a hashCode function.\n */\ntemplate <typename T>\nint hashCode(const SparseGrid<T>& grid) {\n    return stanfordcpplib::collections::hashCodeCollection(grid);\n}\n\n/*\n * Function: randomElement\n * Usage: element = randomElement(grid);\n * -------------------------------------\n * Returns a randomly chosen element of the given grid.\n * Throws an error if the grid is empty.\n */\ntemplate <typename T>\nconst T& randomElement(const SparseGrid<T>& grid) {\n    if (grid.isEmpty()) {\n        error(\"randomElement: empty sparse grid was passed\");\n    }\n    \n    // pick a non-empty row, then pick a random element from it\n    // TODO: fix, this is NOT evenly distributed when rows/cols are unequal in size\n    int row = randomKey(grid._elements);\n    int col = randomKey(grid._elements[row]);\n    return grid.get(row, col);\n}\n\n#endif // _sparsegrid_h\n\n/////////////////////// END code extracted from StanfordCPPLib/collections/sparsegrid.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/collections/dawglexicon.h ///////////////////////\n/*\n * File: dawglexicon.h\n * -------------------\n * This file exports the <code>DawgLexicon</code> class, which is a\n * compact structure for storing a list of words.\n * \n * @version 2019/04/09\n * - renamed private members with underscore naming scheme for consistency\n * @version 2018/03/10\n * - added method front\n * @version 2017/11/14\n * - added iterator version checking support\n * @version 2017/10/18\n * - fix compiler warnings\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * @version 2016/08/11\n * - added methods addAll, containsAll,\n *   operators +, +=, *, *= to better match Set/HashSet\n * @version 2016/08/10\n * - added constructor support for std initializer_list usage, such as {\"a\", \"b\", \"c\"}\n * @version 2016/08/04\n * - added operator >>\n * @version 2014/11/13\n * - added comparison operators <, >=, etc.\n * - added hashCode function\n * @version 2014/10/10\n * - added equals method\n * - added comparison operators ==, !=\n * - added toStlSet method\n * - fixed inclusion of foreach macro to avoid errors\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _dawglexicon_h\n#define _dawglexicon_h\n\n#include <initializer_list>\n#include <set>\n#include <string>\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\n/**\n * This class is used to represent a <b><i>lexicon,</i></b> or word list.\n * The main difference between a lexicon and a dictionary is that\n * a lexicon does not provide any mechanism for storing definitions;\n * the lexicon contains only words, with no associated information.\n * It is therefore similar to a set of strings, but with a more\n * space-efficient internal representation.  The <code>DawgLexicon</code>\n * class supports efficient lookup operations for words and prefixes.\n *\n * Currently the recommended implementation of a lexicon is the\n * <code>Lexicon</code> class, which supports more operations than this one.\n */\n\n#include <cctype>\n\nclass DawgLexicon {\npublic:\n    /**\n     * Initializes a new empty lexicon.\n     */\n    DawgLexicon();\n\n    /**\n     * Initializes a new lexicon, reading in the contents of the lexicon from\n     * the specified data file.\n     *\n     * The data file must be in one of two formats:\n     * (1) a space-efficient precompiled binary format or\n     * (2) a text file containing one word per line.\n     *\n     * The Stanford library distribution includes a binary lexicon file named\n     * <code>English.dat</code> containing a list of words in English.  The\n     * standard code pattern to initialize that lexicon looks like this:\n     *\n     *<pre>\n     * DawgLexicon english(\"English.dat\");\n     *</pre>\n     */\n    DawgLexicon(std::istream& input);\n\n    /**\n     * Initializes a new lexicon, reading in the contents of the lexicon from\n     * the specified data file.\n     *\n     * The data file must be in one of two formats:\n     * (1) a space-efficient precompiled binary format (e.g. English.dat) or\n     * (2) a text file containing one word per line.\n     *\n     * @example DawgLexicon english(\"English.dat\");\n     */\n    DawgLexicon(const std::string& filename);\n\n    /**\n     * This constructor uses an initializer list to set up the lexicon.\n     * @example DawgLexicon lex {1, 2, 3};\n     */\n    DawgLexicon(std::initializer_list<std::string> list);\n\n    /**\n     * The destructor deallocates any storage associated with the lexicon.\n     */\n    virtual ~DawgLexicon();\n    \n    /**\n     * Adds the specified word to the lexicon.\n     */\n    void add(const std::string& word);\n\n    /**\n     * Adds all elements of the given other lexicon to this lexicon.\n     * Identical in behavior to the += operator.\n     */\n    DawgLexicon& addAll(const DawgLexicon& lex);\n\n    /**\n     * Adds all elements of the given list to this lexicon.\n     * Identical in behavior to the += operator.\n     */\n    DawgLexicon& addAll(std::initializer_list<std::string> list);\n\n    /**\n     * Reads the input stream and adds all of its words to the lexicon.\n     */\n    void addWordsFromFile(std::istream& input);\n    \n    /**\n     * Reads the file and adds all of its words to the lexicon.\n     */\n    void addWordsFromFile(const std::string& filename);\n    \n    /**\n     * Removes all words from the lexicon.\n     */\n    void clear();\n    \n    /**\n     * Returns <code>true</code> if <code>word</code> is contained in the\n     * lexicon.  In the <code>DawgLexicon</code> class, the case of letters is\n     * ignored, so \"Zoo\" is the same as \"ZOO\" or \"zoo\".\n     */\n    bool contains(const std::string& word) const;\n\n    /**\n     * Returns <code>true</code> if every value from the given other lexicon\n     * is also found in this lexicon.\n     * Equivalent in behavior to isSupersetOf.\n     */\n    bool containsAll(const DawgLexicon& set2) const;\n\n    /**\n     * Returns <code>true</code> if every value from the given list\n     * is also found in this lexicon.\n     * Equivalent in behavior to isSupersetOf.\n     */\n    bool containsAll(std::initializer_list<std::string> list) const;\n\n    /**\n     * Returns true if any words in the lexicon begin with <code>prefix</code>.\n     * Like <code>containsWord</code>, this method ignores the case of letters\n     * so that \"MO\" is a prefix of \"monkey\" or \"Monday\".\n     */\n    bool containsPrefix(const std::string& prefix) const;\n    \n    /**\n     * Compares two lexicons for equality.\n     * Returns <code>true</code> if this lexicon contains exactly the same\n     * values as the given other lexicon.\n     * Identical in behavior to the == operator.\n     */\n    bool equals(const DawgLexicon& lex2) const;\n\n    /**\n     * Returns the first element in alphabetical order from this lexicon (without removing it).\n     * This method signals an error if lexicon is empty.\n     */\n    std::string front() const;\n\n    /**\n     * Adds an element to this lexicon, if it was not already there.  This\n     * method is exported for compatibility with the STL <code>set</code> class.\n     */\n    void insert(const std::string& word);\n\n    /**\n     * Returns <code>true</code> if the lexicon contains no words.\n     */\n    bool isEmpty() const;\n\n    /**\n     * Returns <code>true</code> if every word of this lexicon is contained in\n     * the given other lexicon.\n     */\n    bool isSubsetOf(const DawgLexicon& lex2) const;\n\n    /**\n     * Returns <code>true</code> if every word of this lexicon is contained in\n     * the given list.\n     */\n    bool isSubsetOf(std::initializer_list<std::string> list) const;\n\n    /**\n     * Returns <code>true</code> if every word of this lexicon is contained in\n     * the given other lexicon.\n     * Equivalent in behavior to containsAll.\n     */\n    bool isSupersetOf(const DawgLexicon& lex2) const;\n\n    /**\n     * Returns <code>true</code> if every word of this lexicon is contained in\n     * the given list.\n     * Equivalent in behavior to containsAll.\n     */\n    bool isSupersetOf(std::initializer_list<std::string> list) const;\n\n    /**\n     * Calls the specified function on each word in the lexicon.\n     */\n    void mapAll(void (*fn)(std::string)) const;\n\n    /**\n     * Calls the specified function on each word in the lexicon.\n     */\n    void mapAll(void (*fn)(const std::string&)) const;\n\n    /**\n     * Calls the specified function on each word in the lexicon.\n     */\n    template <typename FunctorType>\n    void mapAll(FunctorType fn) const;\n\n    // implementation note: DawgLexicon does not support removal,\n    // so there are no methods remove(), removeAll, retainAll, etc.\n    // nor operators -, -=, *=\n\n    /**\n     * Returns the number of words contained in the lexicon.\n     */\n    int size() const;\n\n    /**\n     * Converts the lexicon to a printable string representation such as\n     * {\"a\", \"b\", \"c\"}.\n     * Note that this can be an expensive operation if the lexicon contains\n     * a large number of words.\n     */\n    std::string toString() const;\n    \n    /**\n     * Returns true if the two lexicons have the same elements.\n     */\n    bool operator ==(const DawgLexicon& lex2) const;\n\n    /**\n     * Returns true if the two lexicons do not have the same elements.\n     */\n    bool operator !=(const DawgLexicon& lex2) const;\n\n    /**\n     * Relational operators to compare two lexicons for ordering.\n     */\n    bool operator <(const DawgLexicon& lex2) const;\n\n    /**\n     * Relational operators to compare two lexicons for ordering.\n     */\n    bool operator <=(const DawgLexicon& lex2) const;\n\n    /**\n     * Relational operators to compare two lexicons for ordering.\n     */\n    bool operator >(const DawgLexicon& lex2) const;\n\n    /**\n     * Relational operators to compare two lexicons for ordering.\n     */\n    bool operator >=(const DawgLexicon& lex2) const;\n\n    /**\n     * Returns the union of this lexicon and the given other lexicon,\n     * which is the set of words that appear in at least one of the two.\n     */\n    DawgLexicon operator +(const DawgLexicon& lex2) const;\n\n    /**\n     * Returns the union of this lexicon and the given list,\n     * which is the set of words that appear in at least one of the two.\n     */\n    DawgLexicon operator +(std::initializer_list<std::string> list) const;\n\n    /**\n     * Returns the union of this lexicon and the given word.\n     */\n    DawgLexicon operator +(const std::string& word) const;\n\n    /**\n     * Adds all of the words from the given lexicon to this one.\n     */\n    DawgLexicon& operator +=(const DawgLexicon& lex2);\n\n    /**\n     * Adds all of the words from the given list to this lexicon.\n     */\n    DawgLexicon& operator +=(std::initializer_list<std::string> list);\n\n    /**\n     * Adds the given word to this lexicon.\n     */\n    DawgLexicon& operator +=(const std::string& word);\n\n    /**\n     * Allows you to add multiple elements to a lexicon.\n     * @example lex += \"she\", \"sells\", \"sea\", \"shells\";\n     */\n    DawgLexicon& operator ,(const std::string& word);\n\n    // Implementation note: DawgLexicon does not support -, -=, *, and *=\n    // operators like the standard Lexicon.  Because of its binary internal\n    // format, it is non-trivial to support removal from a DawgLexicon.\n\n    /*\n     * Additional DawgLexicon operations\n     * ---------------------------------\n     * In addition to the methods listed in this interface, the DawgLexicon\n     * class supports the following operations:\n     *\n     *   - Deep copying for the copy constructor and assignment operator\n     *   - Iteration using the range-based for statement and STL iterators\n     *\n     * All iteration is guaranteed to proceed in alphabetical order.  All\n     * words in the lexicon are stored in lowercase.\n     */\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\nprivate:\n#ifdef _WIN32\n#define LITTLE_ENDIAN 1\n#define BYTE_ORDER LITTLE_ENDIAN\n#endif\n\n#pragma pack(1)\n    struct Edge {\n#if defined(BYTE_ORDER) && BYTE_ORDER == LITTLE_ENDIAN\n        unsigned long letter:5;\n        unsigned long lastEdge:1;\n        unsigned long accept:1;\n        unsigned long unused:1;\n        unsigned long children:24;\n#else\n        unsigned long children:24;\n        unsigned long unused:1;\n        unsigned long accept:1;\n        unsigned long lastEdge:1;\n        unsigned long letter:5;\n#endif\n    };\n#pragma pack()\n    Edge* _edges;\n    Edge* _start;\n    int _edgeCount;\n    int _dawgWordsCount;\n    Set<std::string> _otherWords;\n\npublic:\n    /*\n     * Deep copying support\n     * --------------------\n     * This copy constructor and operator= are defined to make a\n     * deep copy, making it possible to pass/return lexicons by value\n     * and assign from one lexicon to another.  The entire contents of\n     * the lexicon, including all words, are copied.  Making copies is\n     * generally avoided because of the expense and thus, lexicons are\n     * typically passed by reference.  When a copy is needed, these\n     * operations are supported.\n     */\n    DawgLexicon(const DawgLexicon& src);\n    DawgLexicon& operator =(const DawgLexicon& src);\n\n    /*\n     * Iterator support\n     * ----------------\n     * The classes in the StanfordCPPLib collection implement input\n     * iterators so that they work symmetrically with respect to the\n     * corresponding STL classes.\n     */\n    class iterator : public std::iterator<std::input_iterator_tag, std::string> {\n    private:\n        const DawgLexicon* lp;\n        int index;\n        std::string currentDawgPrefix;\n        std::string currentSetWord;\n        std::string tmpWord;\n        Edge* edgePtr;\n        Stack<Edge*> stack;\n        Set<std::string>::iterator setIterator;\n        Set<std::string>::iterator setEnd;\n\n        void advanceToNextWordInDawg();\n        void advanceToNextWordInSet();\n        void advanceToNextEdge();\n\n    public:\n        iterator() : lp(nullptr), index(0), edgePtr(nullptr) {\n            /* empty */\n        }\n\n        iterator(const DawgLexicon* theLP, bool endFlag) {\n            this->lp = theLP;\n            if (endFlag) {\n                index = lp->size();\n            } else {\n                index = 0;\n                edgePtr = nullptr;\n                setIterator = lp->_otherWords.begin();\n                setEnd = lp->_otherWords.end();\n                currentDawgPrefix = \"\";\n                currentSetWord = \"\";\n                advanceToNextWordInDawg();\n                advanceToNextWordInSet();\n            }\n        }\n\n        iterator(const iterator& it) {\n            lp = it.lp;\n            index = it.index;\n            currentDawgPrefix = it.currentDawgPrefix;\n            currentSetWord = it.currentSetWord;\n            edgePtr = it.edgePtr;\n            stack = it.stack;\n            setIterator = it.setIterator;\n        }\n\n        iterator& operator ++() {\n            if (!edgePtr) {\n                advanceToNextWordInSet();\n            } else {\n                if (currentSetWord == \"\" || currentDawgPrefix < currentSetWord) {\n                    advanceToNextWordInDawg();\n                } else {\n                    advanceToNextWordInSet();\n                }\n            }\n            index++;\n            return *this;\n        }\n\n        iterator operator ++(int) {\n            iterator copy(*this);\n            operator++();\n            return copy;\n        }\n\n        bool operator ==(const iterator& rhs) {\n            return lp == rhs.lp && index == rhs.index;\n        }\n\n        bool operator !=(const iterator& rhs) {\n            return !(*this == rhs);\n        }\n\n        std::string operator *() {\n            if (!edgePtr) {\n                return currentSetWord;\n            }\n            if (currentSetWord == \"\" || currentDawgPrefix < currentSetWord) {\n                return currentDawgPrefix + lp->ordToChar(edgePtr->letter);\n            } else {\n                return currentSetWord;\n            }\n        }\n\n        std::string* operator ->() {\n            if (!edgePtr) {\n                return &currentSetWord;\n            }\n            if (currentSetWord == \"\" || currentDawgPrefix < currentSetWord) {\n                tmpWord = currentDawgPrefix + lp->ordToChar(edgePtr->letter);\n                return &tmpWord;\n            } else {\n                return &currentSetWord;\n            }\n        }\n    };\n\n    /**\n     * Returns an iterator positioned at the first word in the lexicon.\n     */\n    iterator begin() const {\n        return iterator(this, /* end */ false);\n    }\n\n    /**\n     * Returns an iterator positioned at the last word in the lexicon.\n     */\n    iterator end() const {\n        return iterator(this, /* end */ true);\n    }\n\nprivate:\n    Edge* findEdgeForChar(Edge* children, char ch) const;\n    Edge* traceToLastEdge(const std::string& s) const;\n    void readBinaryFile(std::istream& input);\n    void readBinaryFile(const std::string& filename);\n    void deepCopy(const DawgLexicon& src);\n    int countDawgWords(Edge* _start) const;\n\n    unsigned int charToOrd(char ch) const {\n        return ((unsigned int)(tolower(ch) - 'a' + 1));\n    }\n\n    char ordToChar(unsigned int ord) const {\n        return ((char)(ord - 1 + 'a'));\n    }\n};\n\ntemplate <typename FunctorType>\nvoid DawgLexicon::mapAll(FunctorType fn) const {\n    for (std::string word : *this) {\n        fn(word);\n    }\n}\n\n/**\n * Hashing function for lexicons.\n */\nint hashCode(const DawgLexicon& lex);\n\n/**\n * Prints the lexicon to the given output stream.\n */\nstd::ostream& operator <<(std::ostream& os, const DawgLexicon& lex);\n\n/**\n * Reads the contents of a lexicon from the given input stream.\n */\nstd::istream& operator >>(std::istream& is, DawgLexicon& lex);\n\n#endif // _dawglexicon_h\n\n/////////////////////// END code extracted from StanfordCPPLib/collections/dawglexicon.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/collections/linkedhashmap.h ///////////////////////\n/*\n * File: linkedhashmap.h\n * ---------------------\n * This file exports the <code>LinkedHashMap</code> class, which stores\n * a set of <i>key</i>-<i>value</i> pairs.\n * Identical to a HashMap except that upon iteration using a for-each loop\n * or << / toString call, it will emit its key/value pairs in the order they\n * were originally inserted.  This is provided at a runtime and memory\n * cost due to needing to store an extra copy of the keys.\n * \n * @author Marty Stepp\n * @version 2019/04/09\n * - renamed private members with underscore naming scheme for consistency\n * @version 2018/03/10\n * - added methods front, back\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * @version 2016/09/22\n * - added support for std initializer_list usage, such as\n *   {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}} in constructor, putAll, removeAll, retainAll,\n *   operators +, +=, -, -=, *, *=\n * - added addAll method\n * - added operators <, <=, >, >=\n * @version 2016/08/12\n * - bug fix in operator >>\n * @version 2016/08/04\n * - fixed operator >> to not throw errors\n * @version 2015/10/26\n * - initial version\n * @since 2015/10/26\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _linkedhashmap_h\n#define _linkedhashmap_h\n\n#include <initializer_list>\n#include <iterator>\n#include <string>\n#include <functional>\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\n/*\n * Class: LinkedHashMap<KeyType,ValueType>\n * ---------------------------------------\n * \n */\ntemplate <typename KeyType, typename ValueType>\nclass LinkedHashMap {\npublic:\n    /*\n     * Constructor: LinkedHashMap\n     * Usage: LinkedHashMap<KeyType, ValueType> map;\n     * ---------------------------------------------\n     * Initializes a new empty map that associates keys and values of\n     * the specified types.  The type used for the key must define\n     * the <code>==</code> operator, and there must be a free function\n     * with the following signature:\n     *\n     *<pre>\n     *    int hashCode(KeyType key);\n     *</pre>\n     *\n     * that returns a positive integer determined by the key.  This interface\n     * exports <code>hashCode</code> functions for <code>string</code> and\n     * the C++ primitive types.\n     */\n    LinkedHashMap() = default;\n\n    /*\n     * Constructor: LinkedHashMap\n     * Usage: LinkedHashMap<ValueType> map {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}};\n     * -------------------------------------------------------------------\n     * Initializes a new map that stores the given pairs.\n     * Note that the pairs are stored in unpredictable order internally and not\n     * necessarily the order in which they are written in the initializer list.\n     */\n    LinkedHashMap(std::initializer_list<std::pair<const KeyType, ValueType>> list);\n\n    /*\n     * Destructor: ~LinkedHashMap\n     * --------------------\n     * Frees any heap storage associated with this map.\n     */\n    virtual ~LinkedHashMap() = default;\n\n    /*\n     * Method: add\n     * Usage: map.add(key, value);\n     * ---------------------------\n     * Associates <code>key</code> with <code>value</code> in this map.\n     * A synonym for the put method.\n     */\n    void add(const KeyType& key, const ValueType& value);\n\n    /*\n     * Method: addAll\n     * Usage: map.addAll(map2);\n     * ------------------------\n     * Adds all key/value pairs from the given map to this map.\n     * If both maps contain a pair for the same key, the one from map2 will\n     * replace the one from this map.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     * Returns a reference to this map.\n     * Identical in behavior to putAll.\n     */\n    LinkedHashMap& addAll(const LinkedHashMap& map2);\n\n    /*\n     * Method: back\n     * Usage: KeyType value = map.back();\n     * ------------------------------------\n     * Returns the last key in the map in the order established by the\n     * <code>foreach</code> macro.  If the map is empty, generates an error.\n     */\n    KeyType back() const;\n\n    /*\n     * Method: clear\n     * Usage: map.clear();\n     * -------------------\n     * Removes all entries from this map.\n     */\n    void clear();\n\n    /*\n     * Method: containsKey\n     * Usage: if (map.containsKey(key)) ...\n     * ------------------------------------\n     * Returns <code>true</code> if there is an entry for <code>key</code>\n     * in this map.\n     */\n    bool containsKey(const KeyType& key) const;\n\n    /*\n     * Method: equals\n     * Usage: if (map.equals(map2)) ...\n     * --------------------------------\n     * Returns <code>true</code> if the two maps contain exactly the same\n     * key/value pairs, and <code>false</code> otherwise.\n     */\n    bool equals(const LinkedHashMap& map2) const;\n\n    /*\n     * Method: front\n     * Usage: KeyType value = map.front();\n     * -------------------------------------\n     * Returns the first key in the map in the order established by the\n     * <code>foreach</code> macro.  If the map is empty, generates an error.\n     */\n    KeyType front() const;\n\n    /*\n     * Method: get\n     * Usage: ValueType value = map.get(key);\n     * --------------------------------------\n     * Returns the value associated with <code>key</code> in this map.\n     * If <code>key</code> is not found, <code>get</code> returns the\n     * default value for <code>ValueType</code>.\n     */\n    ValueType get(const KeyType& key) const;\n\n    /*\n     * Method: isEmpty\n     * Usage: if (map.isEmpty()) ...\n     * -----------------------------\n     * Returns <code>true</code> if this map contains no entries.\n     */\n    bool isEmpty() const;\n    \n    /*\n     * Method: keys\n     * Usage: Vector<KeyType> keys = map.keys();\n     * -----------------------------------------\n     * Returns a collection containing all keys in this map.\n     * This implementation already retains an internal copy of the keys,\n     * so it is efficient to call this function even on large maps.\n     */\n    const Vector<KeyType>& keys() const;\n\n    /*\n     * Method: mapAll\n     * Usage: map.mapAll(fn);\n     * ----------------------\n     * Iterates through the map entries and calls <code>fn(key, value)</code>\n     * for each one.  The keys are processed in an undetermined order.\n     */\n    void mapAll(std::function<void (const KeyType&, const ValueType &)> fn) const;\n\n    /*\n     * Method: put\n     * Usage: map.put(key, value);\n     * ---------------------------\n     * Associates <code>key</code> with <code>value</code> in this map.\n     * Any previous value associated with <code>key</code> is replaced\n     * by the new value.\n     */\n    void put(const KeyType& key, const ValueType& value);\n\n    /*\n     * Method: putAll\n     * Usage: map.putAll(map2);\n     * ---------------------------\n     * Adds all key/value pairs from the given map to this map.\n     * If both maps contain a pair for the same key, the one from map2 will\n     * replace the one from this map.\n     * Returns a reference to this map.\n     */\n    LinkedHashMap& putAll(const LinkedHashMap& map2);\n\n    /*\n     * Method: remove\n     * Usage: map.remove(key);\n     * -----------------------\n     * Removes any entry for <code>key</code> from this map.\n     * If the given key is not found, has no effect.\n     */\n    void remove(const KeyType& key);\n\n    /*\n     * Method: removeAll\n     * Usage: map.removeAll(map2);\n     * ---------------------------\n     * Removes all key/value pairs from this map that are contained in the given map.\n     * If both maps contain the same key but it maps to different values, that\n     * mapping will not be removed.\n     * Returns a reference to this map.\n     */\n    LinkedHashMap& removeAll(const LinkedHashMap& map2);\n\n    /*\n     * Method: retainAll\n     * Usage: map.retainAll(map2);\n     * ---------------------------\n     * Removes all key/value pairs from this map that are not contained in the given map.\n     * If both maps contain the same key but it maps to different values, that\n     * mapping will be removed.\n     * Returns a reference to this map.\n     */\n    LinkedHashMap& retainAll(const LinkedHashMap& map2);\n\n    /*\n     * Method: size\n     * Usage: int nEntries = map.size();\n     * ---------------------------------\n     * Returns the number of entries in this map.\n     */\n    int size() const;\n\n    /*\n     * Method: toString\n     * Usage: string str = map.toString();\n     * -----------------------------------\n     * Converts the map to a printable string representation.\n     */\n    std::string toString() const;\n\n    /*\n     * Method: values\n     * Usage: Vector<ValueType> values = map.values();\n     * -----------------------------------------------\n     * Returns a collection containing all values in this map.\n     * Note that this implementation makes a deep copy of the values,\n     * so it is inefficient to call on large maps.\n     */\n    Vector<ValueType> values() const;\n\n    /*\n     * Operator: []\n     * Usage: map[key]\n     * ---------------\n     * Selects the value associated with <code>key</code>.  This syntax\n     * makes it easy to think of a map as an \"associative array\"\n     * indexed by the key type.  If <code>key</code> is already present\n     * in the map, this function returns a reference to its associated\n     * value.  If key is not present in the map, a new entry is created\n     * whose value is set to the default for the value type.\n     */\n    // ValueType& operator [](const KeyType& key);\n    ValueType operator [](const KeyType& key) const;\n\n    /*\n     * Operator: ==\n     * Usage: if (map1 == map2) ...\n     * ----------------------------\n     * Compares two maps for equality.\n     */\n    bool operator ==(const LinkedHashMap& map2) const;\n\n    /*\n     * Operator: !=\n     * Usage: if (map1 != map2) ...\n     * ----------------------------\n     * Compares two maps for inequality.\n     */\n    bool operator !=(const LinkedHashMap& map2) const;\n\n    /*\n     * Operators: <, <=, >, >=\n     * Usage: if (map1 < map2) ...\n     * ---------------------------\n     * Relational operators to compare two maps.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     */\n    bool operator <(const LinkedHashMap& map2) const;\n    bool operator <=(const LinkedHashMap& map2) const;\n    bool operator >(const LinkedHashMap& map2) const;\n    bool operator >=(const LinkedHashMap& map2) const;\n\n    /*\n     * Operator: +\n     * Usage: map1 + map2\n     * ------------------\n     * Returns the union of the two maps, equivalent to a copy of the first map\n     * with addAll called on it passing the second map as a parameter.\n     * If the two maps both contain a mapping for the same key, the mapping\n     * from the second map is favored.\n     */\n    LinkedHashMap operator +(const LinkedHashMap& map2) const;\n\n    /*\n     * Operator: +=\n     * Usage: map1 += map2;\n     * --------------------\n     * Adds all key/value pairs from the given map to this map.\n     * Equivalent to calling addAll(map2).\n     */\n    LinkedHashMap& operator +=(const LinkedHashMap& map2);\n\n\n    /*\n     * Operator: -\n     * Usage: map1 - map2\n     * ------------------\n     * Returns the difference of the two maps, equivalent to a copy of the first map\n     * with removeAll called on it passing the second map as a parameter.\n     */\n    LinkedHashMap operator -(const LinkedHashMap& map2) const;\n\n\n    /*\n     * Operator: -=\n     * Usage: map1 -= map2;\n     * --------------------\n     * Removes all key/value pairs from the given map to this map.\n     * Equivalent to calling removeAll(map2).\n     */\n    LinkedHashMap& operator -=(const LinkedHashMap& map2);\n\n\n    /*\n     * Operator: *\n     * Usage: map1 * map2\n     * ------------------\n     * Returns the intersection of the two maps, equivalent to a copy of the first map\n     * with retainAll called on it passing the second map as a parameter.\n     */\n    LinkedHashMap operator *(const LinkedHashMap& map2) const;\n\n\n    /*\n     * Operator: *=\n     * Usage: map1 *= map2;\n     * ---------------------\n     * Removes all key/value pairs that are not found in the given map from this map.\n     * Equivalent to calling retainAll(map2).\n     */\n    LinkedHashMap& operator *=(const LinkedHashMap& map2);\n\n    template <typename K, typename V>\n    friend std::ostream& operator <<(std::ostream& os, const LinkedHashMap<K, V>& map);\n    \n    /*\n     * Additional LinkedHashMap operations\n     * -----------------------------------\n     * In addition to the methods listed in this interface, the HashMap\n     * class supports the following operations:\n     *\n     *   - Stream I/O using the << and >> operators\n     *   - Deep copying for the copy constructor and assignment operator\n     *   - Iteration using the range-based for statement and STL iterators\n     *\n     * During iteration, the LinkedHashMap class returns its keys in the\n     * order they were added.\n     */\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\n    /*\n     * Implementation notes:\n     * ---------------------\n     * The LinkedHashMap class is represented using a hash map along with a\n     * Vector to remember the order of insertion.\n    */\nprivate:\n    HashMap<KeyType, ValueType> _map;\n    Vector<KeyType> _keys;\n\npublic:\n    /*\n     * Hidden features\n     * ---------------\n     * The remainder of this file consists of the code required to\n     * support deep copying and iteration.  Including these methods\n     * in the public interface would make that interface more\n     * difficult to understand for the average client.\n     */\n\n    /*\n     * Iterator support\n     * ----------------\n     * The classes in the StanfordCPPLib collection implement input\n     * iterators so that they work symmetrically with respect to the\n     * corresponding STL classes.\n     */\n    using const_iterator = typename Vector<KeyType>::const_iterator;\n    using iterator = const_iterator;\n\n    /*\n     * Returns an iterator positioned at the first key of the map.\n     */\n    const_iterator begin() const {\n        return _keys.begin();\n    }\n\n    /*\n     * Returns an iterator positioned at the last key of the map.\n     */\n    const_iterator end() const {\n        return _keys.end();\n    }\n};\n\n/*\n * Implementation notes: LinkedHashMap class\n * -----------------------------------------\n * ...\n */\ntemplate <typename KeyType, typename ValueType>\nLinkedHashMap<KeyType, ValueType>::LinkedHashMap(std::initializer_list<std::pair<const KeyType, ValueType>> list) {\n    for (const auto& entry: list) {\n        put(entry.first, entry.second);\n    }\n}\n\ntemplate <typename KeyType, typename ValueType>\nvoid LinkedHashMap<KeyType, ValueType>::add(const KeyType& key, const ValueType& value) {\n    put(key, value);\n}\n\ntemplate <typename KeyType, typename ValueType>\nLinkedHashMap<KeyType, ValueType>& LinkedHashMap<KeyType, ValueType>::addAll(const LinkedHashMap& map2) {\n    return putAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nKeyType LinkedHashMap<KeyType, ValueType>::back() const {\n    if (isEmpty()) {\n        error(\"LinkedHashMap::back: map is empty\");\n    }\n    return _keys.back();\n}\n\ntemplate <typename KeyType, typename ValueType>\nvoid LinkedHashMap<KeyType, ValueType>::clear() {\n    _map.clear();\n    _keys.clear();\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool LinkedHashMap<KeyType, ValueType>::containsKey(const KeyType& key) const {\n    return _map.containsKey(key);\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool LinkedHashMap<KeyType, ValueType>::equals(const LinkedHashMap<KeyType, ValueType>& map2) const {\n    return stanfordcpplib::collections::equalsMap(*this, map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nKeyType LinkedHashMap<KeyType, ValueType>::front() const {\n    if (isEmpty()) {\n        error(\"LinkedHashMap::front: map is empty\");\n    }\n    return _keys.front();\n}\n\ntemplate <typename KeyType, typename ValueType>\nValueType LinkedHashMap<KeyType, ValueType>::get(const KeyType& key) const {\n    return _map.get(key);\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool LinkedHashMap<KeyType, ValueType>::isEmpty() const {\n    return _map.isEmpty();\n}\n\ntemplate <typename KeyType, typename ValueType>\nconst Vector<KeyType>& LinkedHashMap<KeyType, ValueType>::keys() const {\n    return _keys;\n}\n\ntemplate <typename KeyType, typename ValueType>\nvoid LinkedHashMap<KeyType, ValueType>::mapAll(std::function<void (const KeyType&, const ValueType &)> fn) const {\n    _map.mapAll(fn);\n}\n\ntemplate <typename KeyType, typename ValueType>\nvoid LinkedHashMap<KeyType, ValueType>::put(const KeyType& key, const ValueType& value) {\n    _map.put(key, value);\n    _keys.add(key);\n}\n\ntemplate <typename KeyType, typename ValueType>\nLinkedHashMap<KeyType, ValueType>& LinkedHashMap<KeyType, ValueType>::putAll(const LinkedHashMap& map2) {\n    for (const KeyType& key : map2) {\n        put(key, map2.get(key));\n    }\n    return *this;\n}\n\ntemplate <typename KeyType, typename ValueType>\nvoid LinkedHashMap<KeyType, ValueType>::remove(const KeyType& key) {\n    _map.remove(key);\n    for (int i = 0, sz = _keys.size(); i < sz; i++) {\n        if (_keys[i] == key) {\n            _keys.remove(i);\n            break;\n        }\n    }\n}\n\ntemplate <typename KeyType, typename ValueType>\nLinkedHashMap<KeyType, ValueType>& LinkedHashMap<KeyType, ValueType>::removeAll(const LinkedHashMap& map2) {\n    for (const KeyType& key : map2) {\n        if (containsKey(key) && get(key) == map2.get(key)) {\n            remove(key);\n        }\n    }\n    return *this;\n}\n\ntemplate <typename KeyType, typename ValueType>\nLinkedHashMap<KeyType, ValueType>& LinkedHashMap<KeyType, ValueType>::retainAll(const LinkedHashMap& map2) {\n    Vector<KeyType> toRemove;\n    for (const KeyType& key : *this) {\n        if (!map2.containsKey(key) || get(key) != map2.get(key)) {\n            toRemove.add(key);\n        }\n    }\n    for (const KeyType& key : toRemove) {\n        remove(key);\n    }\n    return *this;\n}\n\ntemplate <typename KeyType, typename ValueType>\nint LinkedHashMap<KeyType, ValueType>::size() const {\n    return _map.size();\n}\n\ntemplate <typename KeyType, typename ValueType>\nstd::string LinkedHashMap<KeyType, ValueType>::toString() const {\n    std::ostringstream os;\n    os << *this;\n    return os.str();\n}\n\ntemplate <typename KeyType, typename ValueType>\nVector<ValueType> LinkedHashMap<KeyType, ValueType>::values() const {\n    Vector<ValueType> values;\n    for (const KeyType& key : *this) {\n        values.add(get(key));\n    }\n    return values;\n}\n\ntemplate <typename KeyType, typename ValueType>\nValueType LinkedHashMap<KeyType, ValueType>::operator [](const KeyType& key) const {\n    return _map[key];\n}\n\ntemplate <typename KeyType, typename ValueType>\nLinkedHashMap<KeyType, ValueType> LinkedHashMap<KeyType, ValueType>::operator +(const LinkedHashMap& map2) const {\n    LinkedHashMap<KeyType, ValueType> result = *this;\n    return result.putAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nLinkedHashMap<KeyType, ValueType>& LinkedHashMap<KeyType, ValueType>::operator +=(const LinkedHashMap& map2) {\n    return putAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nLinkedHashMap<KeyType, ValueType> LinkedHashMap<KeyType, ValueType>::operator -(const LinkedHashMap& map2) const {\n    LinkedHashMap<KeyType, ValueType> result = *this;\n    return result.removeAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nLinkedHashMap<KeyType, ValueType>& LinkedHashMap<KeyType, ValueType>::operator -=(const LinkedHashMap& map2) {\n    return removeAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nLinkedHashMap<KeyType, ValueType> LinkedHashMap<KeyType, ValueType>::operator *(const LinkedHashMap& map2) const {\n    LinkedHashMap<KeyType, ValueType> result = *this;\n    return result.retainAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nLinkedHashMap<KeyType, ValueType>& LinkedHashMap<KeyType, ValueType>::operator *=(const LinkedHashMap& map2) {\n    return retainAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool LinkedHashMap<KeyType, ValueType>::operator ==(const LinkedHashMap& map2) const {\n    return equals(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool LinkedHashMap<KeyType, ValueType>::operator !=(const LinkedHashMap& map2) const {\n    return !equals(map2);\n}\n\n// Implementation note:\n// The definitions of <, <=, >, and >= are a bit unintuitive here.\n// Because Maps are considered to be \"equal\" if they have the same key/value pairs,\n// regardless of order, the equals() method and == / != operators ignore order.\n//\n// Similarly, if you ask whether a map is <= or >= to another, this includes\n// the notion of equality, so it should return true if the maps contain the same\n// pairs, regardless of order.\n//\n// If you ask whether a map is < or > to another, it is assumed that you don't\n// want this to return true if they are \"equal\", so we must check for non-equality\n// before checking the K/V pairs pairwise.\n//\n// This issue is unique to LinkedHashMap because Map sorts into a predictable sorted order\n// and HashMap opts not to implement <, <=, >, or >= due to its unpredictable hash order.\n\ntemplate <typename KeyType, typename ValueType>\nbool LinkedHashMap<KeyType, ValueType>::operator <(const LinkedHashMap& map2) const {\n    return !equals(map2) && stanfordcpplib::collections::compareMaps(*this, map2) < 0;\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool LinkedHashMap<KeyType, ValueType>::operator <=(const LinkedHashMap& map2) const {\n    return equals(map2) || stanfordcpplib::collections::compareMaps(*this, map2) <= 0;\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool LinkedHashMap<KeyType, ValueType>::operator >(const LinkedHashMap& map2) const {\n    return !equals(map2) && stanfordcpplib::collections::compareMaps(*this, map2) > 0;\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool LinkedHashMap<KeyType, ValueType>::operator >=(const LinkedHashMap& map2) const {\n    return equals(map2) || stanfordcpplib::collections::compareMaps(*this, map2) >= 0;\n}\n\n/*\n * Implementation notes: << and >>\n * -------------------------------\n * The insertion and extraction operators use the template facilities in\n * strlib.h to read and write generic values in a way that treats strings\n * specially.\n */\ntemplate <typename KeyType, typename ValueType>\nstd::ostream& operator <<(std::ostream& os,\n                          const LinkedHashMap<KeyType, ValueType>& map) {\n    return stanfordcpplib::collections::writeMap(os, map);\n}\n\ntemplate <typename KeyType, typename ValueType>\nstd::istream& operator >>(std::istream& is,\n                          LinkedHashMap<KeyType, ValueType>& map) {\n    KeyType key;\n    ValueType value;\n    return stanfordcpplib::collections::readMap(is, map, key, value, /* descriptor */ std::string(\"LinkedHashMap::operator >>\"));\n}\n\n/*\n * Template hash function for hash maps.\n * Requires the key and value types in the LinkedHashMap to have a hashCode function.\n */\ntemplate <typename K, typename V>\nint hashCode(const LinkedHashMap<K, V>& map) {\n    return stanfordcpplib::collections::hashCodeMap(map, /* orderMatters */ false);\n}\n\n/*\n * Function: randomKey\n * Usage: element = randomKey(map);\n * --------------------------------\n * Returns a randomly chosen key of the given map.\n * Throws an error if the map is empty.\n */\ntemplate <typename K, typename V>\nconst K& randomKey(const LinkedHashMap<K, V>& map) {\n    return stanfordcpplib::collections::randomElement(map);\n}\n\n#endif // _linkedhashmap_h\n\n/////////////////////// END code extracted from StanfordCPPLib/collections/linkedhashmap.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/collections/linkedhashset.h ///////////////////////\n/*\n * File: linkedhashset.h\n * ---------------------\n * This file exports the <code>LinkedHashSet</code> class, which\n * implements an efficient abstraction for storing sets of values.\n * \n * @author Marty Stepp\n * @version 2019/02/04\n * - changed internal implementation to wrap std collections\n * @version 2018/03/10\n * - added methods front, back\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * @version 2016/09/22\n * - added containsAll, isSupersetOf methods\n * - added support for std initializer_list usage, such as {1, 2, 3}\n *   in constructor, addAll, containsAll, isSubsetOf, isSupersetOf, removeAll,\n *   retainAll, and operators +, +=, -, -=, *, *=\n * - bug fix in hashCode function\n * - added operators <, <=, >, >=\n * @version 2016/08/04\n * - fixed operator >> to not throw errors\n * @version 2015/10/26\n * - initial version\n * @since 2015/10/26\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _linkedhashset_h\n#define _linkedhashset_h\n\n#include <initializer_list>\n#include <iostream>\n#include <functional>\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\n/* Traits type for the LinkedHashSet, which wraps an underlying LinkedHashMap. */\nnamespace stanfordcpplib {\n    namespace collections {\n        template <typename T> struct LinkedHashSetTraits {\n            using ValueType = T;\n            using MapType   = LinkedHashMap<T, bool>;\n            static std::string name() {\n                return \"LinkedHashSet\";\n            }\n\n            /* You can default-construct a LinkedHashSet. */\n            static MapType construct() {\n                return {};\n            }\n\n            /* However, you can't pass in any other arguments. */\n            template <typename... Args>\n            static void construct(Args&&...) {\n                static_assert(Fail<Args...>::value, \"Oops! Seems like you tried to initialize a LinkedHashSet incorrectly. Click here for details.\");\n\n                /*\n                 * Hello student! If you are reading this message, it means that you tried to\n                 * initialize a LinkedHashSet improperly. For example, you might have tried to\n                 * write something like this:\n                 *\n                 *     LinkedHashSet<int> mySet = 137; // Oops!\n                 *\n                 * Here, for example, you're trying to assign an int to a LinkedHashSet<int>.\n                 *\n                 * or perhaps you had a function like this one:\n                 *\n                 *     void myFunction(LinkedHashSet<int>& mySet);\n                 *\n                 * and you called it by writing\n                 *\n                 *     myFunction(someSet + someOtherSet); // Oops!\n                 *     myFunction({ });                    // Oops!\n                 *\n                 * In these cases, you're trying to pass a value into a function that takes\n                 * its argument by (non-const) reference. C++ doesn't allow you to do this.\n                 *\n                 * To see where the actual error comes from, look in the list of error messages\n                 * in Qt Creator. You should see a line that says \"required from here\" that\n                 * points somewhere in your code. That's the actual line you wrote that caused\n                 * the problem, so double-click on that error message and see where it takes\n                 * you. Now you know where to look!\n                 *\n                 * Hope this helps!\n                 */\n                error(\"static_assert succeeded?\");\n            }\n        };\n    }\n}\n\n/*\n * A set of elements that remembers their insertion order during iteration. To use\n * this type, the underlying elements must support a function\n *\n *     int hashCode(ValueType);\n *\n * that returns a nonnegative integer, along with equality comparison using ==.\n */\ntemplate <typename ValueType>\n    using LinkedHashSet = stanfordcpplib::collections::GenericSet<stanfordcpplib::collections::LinkedHashSetTraits<ValueType>>;\n\n#endif // _linkedhashset_h\n\n/////////////////////// END code extracted from StanfordCPPLib/collections/linkedhashset.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/collections/basicgraph.h ///////////////////////\n/*\n * File: basicgraph.h\n * ------------------\n * This file contains the declaration of some useful graph types,\n * specifically the Vertex and Edge structures used in the typical graph.\n * together in lecture.  We also declare BasicGraph, an instantiation of\n * Stanford's Graph class using Vertex and Edge as its type parameters.\n *\n * Most members are implemented in this file, since the class is a template.\n * See BasicGraph.cpp for implementation of some non-template members.\n *\n * @author Marty Stepp\n * @version 2018/09/07\n * - reformatted doc-style comments\n * @version 2018/03/10\n * - added methods front, back, toMap\n * - added operator << for various collections of Vertex* and Edge*\n * @version 2018/02/28\n * - compiler flag to enable/disable Vertex fields like visited, previous\n * @version 2017/11/14\n * - fix missing \"this->\" on some methods\n * - added getVertexNames, vertexCount, edgeCount\n * @version 2017/10/24\n * - print nullptr instead of null in uppercase\n * @version 2017/10/18\n * - fix compiler warnings\n * @version 2016/12/09\n * - added iterator version checking support (implicitly via Graph)\n * @version 2016/12/04\n * - bug fix in resetData method (was referring to Vertex* and Edge*)\n * @version 2016/12/01\n * - bug fix in addEdge method (now correctly adds vertexes if not present)\n * - fixed bugs in some node/arc methods (should not crash on empty/null args)\n * @version 2016/11/26\n * - added BasicGraphV, VertexV, EdgeV macros\n * - added getInverseEdgeSet\n * @version 2016/11/19\n * - changed addVertex to not throw when adding duplicates\n * - added operator []\n * @version 2016/11/07\n * - small bug fix for printing cost in operator << (courtesy GitHub @hsivnightbeam)\n * @version 2016/10/14\n * - modified floating-point equality tests to use floatingPointEqual function\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * @version 2016/09/22\n * - bug fix for hashCode function\n * @version 2016/08/12\n * - added initializer_list functionality\n * @version 2014/12/04\n * - bug fix: Edge end reference was not properly pointing at finish field\n * @version 2014/11/21\n * - bug fix: Edge weight reference was not properly pointing at cost field\n * @version 2014/11/13\n * - added iterator begin(), end() support so that students can directly\n *   for-each over the vertices of a graph.\n * - added comparison operators ==, !=, <, etc.\n * - bug fix to Edge to add move/copy = operators\n * @version 2014/10/31\n * - bug fix: extraData was being nulled accidentally in Vertex::resetData()\n * @version 2014/10/23\n * - bug fixes based on cppcheck lint output\n * @version 2014/10/20\n * - converted functions to accept const string& rather than string for speed\n * @version 2014/08/16\n * - added Vertex 'weight' alias for 'cost'\n * - added Edge 'weight' alias for 'cost, and 'end' alias for 'finish'\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _basicgraph_h\n#define _basicgraph_h\n\n#include <initializer_list>\n#include <sstream>\n#include <string>\n#include <utility>\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\n/**\n * Forward declarations of Vertex/Edge structures so that they can refer\n * to each other mutually.\n * @private\n */\ntemplate <typename V = void*, typename E = void*>\nclass EdgeGen;\n\n/**\n * Canonical Vertex (Node) structure implementation needed by Graph class template.\n * Each Vertex structure represents a single vertex in the graph.\n */\ntemplate <typename V = void*, typename E = void*>\nclass VertexGen : public Observable<int> {\npublic:\n    /**\n     * The vertex's name as a string.\n     */\n    std::string name;\n\n    /**\n     * The edges outbound from this vertex to its neighbors.\n     */\n    Set<EdgeGen<V, E>*> arcs;     // required by Stanford Graph;\n\n    /**\n     * The edges outbound from this vertex to its neighbors;\n     * an alias of the 'arcs' member.\n     */\n    Set<EdgeGen<V, E>*>& edges;\n\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    /**\n     * The cost to reach this vertex; initially 0.\n     */\n    double cost;\n\n    /**\n     * An alias for the 'cost' member.\n     */\n    double& weight;\n\n    /**\n     * Whether this vertex has been visited before; initally false.\n     */\n    bool visited;\n\n    /**\n     * The vertex that comes before this one; initially null.\n     */\n    VertexGen* previous;\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n\n    /**\n     * The following pointer can point to any extra data needed by the vertex.\n     * This field is generally not necessary and can be ignored.\n     */\n    V data;\n\n    /**\n     * @private\n     */\n    V& extraData;       // alias of data; they are the same field\n\n    /**\n     * Constructs a vertex with the given name.\n     */\n    VertexGen(const std::string& name = \"\");\n\n    /**\n     * Copy constructor.\n     */\n    VertexGen(const VertexGen& other);\n\n    /**\n     * Frees up any memory dynamically allocated by this vertex.\n     */\n    ~VertexGen();\n\n    /**\n     * Returns the color of this vertex, if any.  Initially WHITE.\n     */\n    /* Color */ int getColor() const;\n\n    /**\n     * Wipes the supplementary data of this vertex back to its initial state.\n     * Specifically, sets cost to 0, visited to false, and previous to nullptr.\n     */\n    void resetData();\n\n    /**\n     * Sets the color of this vertex to be the given color.\n     * The color must be one of WHITE, GRAY, YELLOW, or GREEN.\n     * Future calls to getColor will return the color you pass here.\n     */\n    void setColor(/* Color */ int c);\n\n    /**\n     * Returns a string representation of this vertex for debugging, such as\n     * \"Vertex{name=r13c42, cost=11, visited=true, previous=r12c41, neighbors={r12c41, r12c43}}\".\n     */\n    std::string toString() const;\n\n    /**\n     * Copy assignment operator.\n     */\n    VertexGen& operator =(const VertexGen& other);\n\n    /**\n     * Move assignment operator.\n     */\n    VertexGen& operator =(VertexGen&& other);\n\nprivate:\n    /* Color */ int _color;   // vertex's color as passed to setColor\n};\n\n/**\n * Makes a vertex printable to an output stream.\n * See toString for an example of the output format.\n * Note that printing a vertex is not the same as printing a vertex pointer.\n * If you try to print a pointer, you will just see its address in hex.\n */\ntemplate <typename V, typename E>\nstd::ostream& operator <<(std::ostream& out, const VertexGen<V, E>& v);\n\n/**\n * Canonical Edge (Arc) structure implementation needed by Graph class template.\n * Each Edge structure represents a single edge in the graph.\n */\ntemplate <typename V, typename E>\nclass EdgeGen {\npublic:\n    /**\n     * The edge's starting vertex.\n     */\n    VertexGen<V, E>* start;\n\n    /**\n     * The edge's ending vertex.\n     */\n    VertexGen<V, E>* finish;   // required by Stanford Graph;\n\n    /**\n     * An alias of finish; they are the same field.\n     */\n    VertexGen<V, E>*& end;\n\n    /**\n     * The edge's weight; default 0.\n     */\n    double cost;\n\n    /**\n     * An alias for the 'cost' member.\n     */\n    double& weight;\n\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    /**\n     * Whether this edge has been visited before; initally false.\n     */\n    bool visited;\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n\n    /**\n     * A pointer that can point to any extra data needed by the vertex.\n     * This field is generally not necessary and can be ignored.\n     */\n    void* data;\n\n    /**\n     * An alias for the 'data' member.\n     */\n    void*& extraData;\n\n    /**\n     * Constructs a new edge between the given start/end vertices with\n     * the given cost.\n     */\n    EdgeGen(VertexGen<V, E>* start = nullptr, VertexGen<V, E>* finish = nullptr, double cost = 0.0);\n\n    /**\n     * Frees up any memory dynamically allocated by this edge.\n     */\n    ~EdgeGen();\n\n    /**\n     * Wipes the supplementary data of this edge back to its initial state.\n     */\n    void resetData();\n\n    /**\n     * Returns a string representation of this edge for debugging, such as\n     * \"Arc{start=r12c42, finish=r12c41, cost=0.75}\".\n     */\n    std::string toString() const;\n\n    /**\n     * Copy assignment operator.\n     */\n    EdgeGen& operator =(const EdgeGen& other);\n\n    /**\n     * Move assignment operator.\n     */\n    EdgeGen& operator =(EdgeGen&& other);\n};\n\n/**\n * Makes an edge printable to an output stream.\n * See toString for an example of the output format.\n * Note that printing an edge is not the same as printing an edge pointer.\n * If you try to print a pointer, you will just see its address in hex.\n */\ntemplate <typename V, typename E>\nstd::ostream& operator <<(std::ostream& out, const EdgeGen<V, E>& edge);\n\n\n/**\n * BasicGraph is just basically an instantiation of Graph using Vertex and Edge\n * as its template parameters.  It also adds a few convenience functions such\n * as mirroring members like \"addArc\" with an equivalent more familiar name\n * like \"addEdge\".\n *\n * There are a few convenience functions related to neighbors, like isNeighbor.\n * BasicGraph contains a DFS implementation called isReachable, not found\n * in the normal Stanford Graph class.\n *\n * There are also a few functions added to make edges more convenient to work with:\n * getEdge(v1, v2) to get the edge between a given pair of vertices,\n * and getInverseEdge(edge) to get the edge v2 -> v1 for a given edge v1 -> v2.\n */\ntemplate <typename V = void*, typename E = void*>\nclass BasicGraphGen : public Graph<VertexGen<V, E>, EdgeGen<V, E>> {\npublic:\n    /**\n     * Constructs a new empty graph.\n     * @bigoh O(1)\n     */\n    BasicGraphGen();\n\n    /**\n     * Constructs a new graph containing the given vertexes.\n     * @bigoh O(V)\n     */\n    BasicGraphGen(std::initializer_list<std::string> vertexList);\n\n    /**\n     * Adds a directed edge to the graph from vertex v1 to vertex v2.\n     * Note that it is allowed to have multiple edges between the same pair of vertexes.\n     *\n     * Returns a pointer to the edge, though clients need not store that pointer;\n     * you can get the pointer again later by calling getEdge and passing the two vertexes.\n     *\n     * Equivalent to addNode.\n     *\n     * @return a pointer to the edge created\n     * @bigoh O(log V + log E)\n     */\n    EdgeGen<V, E>* addEdge(const std::string& v1, const std::string& v2, double cost = 0.0, bool directed = true);\n\n    /**\n     * Adds a directed edge to the graph from vertex v1 to vertex v2.\n     * If either vertex is not found in the graph, said vertex will be added to the graph.\n     * Note that it is allowed to have multiple edges between the same pair of vertexes.\n     *\n     * Returns a pointer to the edge, though clients need not store that pointer;\n     * you can get the pointer again later by calling getEdge and passing the two vertexes.\n     *\n     * Equivalent to addNode.\n     *\n     * @return a pointer to the edge created\n     * @throw ErrorException if either vertex is null\n     * @bigoh O(log V + log E)\n     */\n    EdgeGen<V, E>* addEdge(VertexGen<V, E>* v1, VertexGen<V, E>* v2, double cost = 0.0, bool directed = true);\n\n    /**\n     * Adds the given directed edge to the graph from vertex v1 to vertex v2.\n     * If either vertex is not found in the graph, said vertex will be added to the graph.\n     * Note that it is allowed to have multiple edges between the same pair of vertexes.\n     *\n     * Returns a pointer to the edge, though clients need not store that pointer;\n     * you can get the pointer again later by calling getEdge and passing the two vertexes.\n     *\n     * Equivalent to addNode.\n     *\n     * @return a pointer to the edge created\n     * @throw ErrorException if either vertex is null\n     * @bigoh O(log V + log E)\n     */\n    EdgeGen<V, E>* addEdge(EdgeGen<V, E>* e, bool directed = true);\n\n    /**\n     * Adds a vertex to the graph, if no vertex with that name already exists in the graph.\n     * This version of this method accepts a string for the vertex's name,\n     * creates a new vertex of the appropriate type and initializes its fields.\n     * Returns a pointer to the vertex, though clients need not store that pointer;\n     * you can get the pointer again later by calling getVertex and passing the same name.\n     *\n     * The vertexes in a graph must have unique names.\n     * If this graph already contains a vertex with the given name,\n     * the vertex will not be added and the graph's state will not change.\n     *\n     * Equivalent to addNode.\n     *\n     * @return a pointer to the vertex created\n     * @bigoh O(log V)\n     */\n    VertexGen<V, E>* addVertex(const std::string& name);\n\n    /**\n     * Adds a vertex to the graph, if no vertex with that name already exists in the graph.\n     * This version of this method accepts a string for the vertex's name,\n     * creates a new vertex of the appropriate type and initializes its fields.\n     * The other accepts a structure representing the vertex and its data.\n     * Returns a pointer to the vertex, though clients need not store that pointer;\n     * you can get the pointer again later by calling getVertex and passing the same name.\n     *\n     * The vertexes in a graph must have unique names.\n     * If this graph already contains a vertex with the given name,\n     * the vertex will not be added and the graph's state will not change.\n     *\n     * When calling this function, you are relinquishing ownership of the Vertex\n     * structure's lifecycle to the graph; our graph will free it when done with it.\n     *\n     * Equivalent to addNode.\n     *\n     * @return a pointer to the vertex created\n     * @throws ErrorException if vertex is null\n     * @bigoh O(log V)\n     */\n    VertexGen<V, E>* addVertex(VertexGen<V, E>* v);\n\n    /**\n     * Removes all edges from the graph.\n     * Frees any edge objects that were internally allocated as heap storage.\n     *\n     * Equivalent to clearArcs.\n     * @bigoh O(E log E)\n     */\n    void clearEdges();\n\n    /**\n     * Removes all outbound edges of the given vertex from the graph.\n     * The vertex itself is not removed.\n     * If the vertex is null or is not found in the graph, has no effect.\n     *\n     * Equivalent to clearArcs.\n     * @bigoh O(E log E)\n     * @bigoh O(log V + E)\n     */\n    void clearEdges(VertexGen<V, E>* v);\n\n    /**\n     * Removes all outbound edges of the given vertex from the graph.\n     * The vertex itself is not removed.\n     * If the vertex is not found in the graph, has no effect.\n     *\n     * Equivalent to clearArcs.\n     * @bigoh O(E log E)\n     */\n    void clearEdges(const std::string& v);\n\n    /**\n     * Returns true if the graph has an edge from v1 to v2 in the graph.\n     * If either of the vertexes supplied is null or is not found in the graph, returns false.\n     *\n     * Equivalent to containsArc.\n     * @bigoh O(log E)\n     */\n    bool containsEdge(VertexGen<V, E>* v1, VertexGen<V, E>* v2) const;\n\n    /**\n     * Returns true if the graph has an edge from v1 to v2 in the graph.\n     * If either of the vertexes supplied is not found in the graph, returns false.\n     *\n     * Equivalent to containsArc.\n     * @bigoh O(log E)\n     */\n    bool containsEdge(const std::string& v1, const std::string& v2) const;\n\n    /**\n     * Returns true if the graph contains the given edge.\n     * If the edge structure is null, returns false.\n     *\n     * Equivalent to containsArc.\n     * @bigoh O(log E)\n     */\n    bool containsEdge(EdgeGen<V, E>* edge) const;\n\n    /**\n     * Returns whether the graph contains a vertex with the given name.\n     *\n     * Equivalent to containsNode.\n     * @bigoh O(log V)\n     */\n    bool containsVertex(const std::string& name) const;\n\n    /**\n     * Returns whether the graph contains the given vertex.\n     * If a null pointer is passed, returns false.\n     *\n     * Equivalent to containsNode.\n     * @bigoh O(log V)\n     */\n    bool containsVertex(VertexGen<V, E>* v) const;\n\n    /**\n     * Returns the number of edges in the graph.\n     *\n     * Equivalent to arcCount.\n     * @bigoh O(log V)\n     */\n    int edgeCount() const;\n\n    /**\n     * Returns the structure representing the edge from v1 to v2 in the graph.\n     * If either of the vertexes supplied is null or is not found in the graph, the function will return nullptr.\n     * If there are multiple edges between the given pair of vertexes, which of the edges will be returned is unspecified.\n     *\n     * Equivalent to getArc.\n     *\n     * @param v1 start vertex\n     * @param v2 end vertex\n     * @return edge from v1 to v2, or nullptr if there is no such edge\n     * @bigoh O(log V + log E)\n     */\n    EdgeGen<V, E>* getEdge(VertexGen<V, E>* v1, VertexGen<V, E>* v2) const;\n\n    /**\n     * Returns the structure representing the edge from v1 to v2 in the graph.\n     * If either of the vertexes supplied is not found in the graph, the function will return nullptr.\n     * If there are multiple edges between the given pair of vertexes, which of the edges will be returned is unspecified.\n     *\n     * Equivalent to getArc.\n     *\n     * @param v1 start vertex\n     * @param v2 end vertex\n     * @return edge from v1 to v2, or nullptr if there is no such edge\n     * @bigoh O(log V + log E)\n     */\n    EdgeGen<V, E>* getEdge(const std::string& v1, const std::string& v2) const;\n\n    /**\n     * Returns the set of all edges in the graph.\n     *\n     * Equivalent to getArcSet.\n     * @bigoh O(1)\n     */\n    const Set<EdgeGen<V, E>*>& getEdgeSet() const;\n\n    /**\n     * Returns the set of all edges that start at the specified vertex.\n     * If the vertex supplied is null or is not found in the graph,\n     * the function will return an empty set.\n     *\n     * Equivalent to getArcSet.\n     * @bigoh O(1)\n     */\n    const Set<EdgeGen<V, E>*>& getEdgeSet(VertexGen<V, E>* v) const;\n\n    /**\n     * Returns the set of all edges that start at the specified vertex.\n     * If the vertex supplied is not found in the graph,\n     * the function will return an empty set.\n     *\n     * Equivalent to getArcSet.\n     * @bigoh O(1)\n     */\n    const Set<EdgeGen<V, E>*>& getEdgeSet(const std::string& v) const;\n\n    /**\n     * Returns the edge that is the opposite of the given edge;\n     * that is, if the specified edge e starts at v1 and ends at v2,\n     * will return the edge that starts at v2 and ends at v1,\n     * if such an edge exists in the graph.\n     *\n     * If the edge supplied is nullptr, is not found in the graph,\n     * or has no inverse, the function will return nullptr.\n     *\n     * If there are multiple edges between the given pair of vertexes,\n     * which of the edges will be returned is unspecified.\n     *\n     * Equivalent to getInverseEdge.\n     * @bigoh O(E)\n     */\n    EdgeGen<V, E>* getInverseArc(EdgeGen<V, E>* edge) const;\n\n    /**\n     * Returns the edge that is the opposite of the given edge;\n     * that is, if the specified edge e starts at v1 and ends at v2,\n     * will return the edge that starts at v2 and ends at v1,\n     * if such an edge exists in the graph.\n     *\n     * If the edge supplied is nullptr, is not found in the graph,\n     * or has no inverse, the function will return nullptr.\n     *\n     * If there are multiple edges between the given pair of vertexes,\n     * which of the edges will be returned is unspecified.\n     *\n     * Equivalent to getInverseArc.\n     * @bigoh O(E)\n     */\n    EdgeGen<V, E>* getInverseEdge(EdgeGen<V, E>* edge) const;\n\n    /**\n     * Returns the set of all edges in the graph that end at the specified vertex.\n     * If the vertex supplied is null or is not found in the graph,\n     * the function will return an empty set.\n     *\n     * Equivalent to getInverseArcSet.\n     * @bigoh O(E)\n     */\n    const Set<EdgeGen<V, E>*> getInverseEdgeSet(VertexGen<V, E>* v) const;\n\n    /**\n     * Returns the set of all edges in the graph that end at the specified vertex.\n     * If the vertex supplied is null or is not found in the graph,\n     * the function will return an empty set.\n     *\n     * Equivalent to getInverseArcSet.\n     * @bigoh O(E)\n     */\n    const Set<EdgeGen<V, E>*> getInverseEdgeSet(const std::string& v) const;\n\n    /**\n     * Looks up a vertex in the graph by name and returns a pointer to\n     * its internal data structure.\n     * If no vertex with the specified name exists, returns nullptr.\n     * @bigoh O(log V)\n     */\n    VertexGen<V, E>* getVertex(const std::string& name) const;\n\n    /**\n     * Returns a set of the names of all vertexes in the graph.\n     * The vertexes will be sorted by name in case-sensitive alphabetical order.\n     * @bigoh O(V log V)\n     */\n    Set<std::string> getVertexNames() const;\n\n    /**\n     * Returns the set of all vertexes in the graph.\n     * The vertexes will be sorted by name in case-sensitive alphabetical order.\n     * @bigoh O(V log V)\n     */\n    const Set<VertexGen<V, E>*>& getVertexSet() const;\n\n    /**\n     * Removes the edge from v1 to v2 from the graph.\n     * If more than one edge connects the specified endpoints, all of them are removed.\n     * If either of the vertexes supplied is not found in the graph,\n     * calling this function will have no effect on the graph.\n     * @bigoh O(E + log V)\n     */\n    void removeEdge(const std::string& v1, const std::string& v2, bool directed = true);\n\n    /**\n     * Removes the edge from v1 to v2 from the graph.\n     * If more than one edge connects the specified endpoints, all of them are removed.\n     * If either of the vertexes supplied is null or not found in the graph,\n     * calling this function will have no effect on the graph.\n     * @bigoh O(E + log V)\n     */\n    void removeEdge(VertexGen<V, E>* v1, VertexGen<V, E>* v2, bool directed = true);\n\n    /**\n     * Removes the given edge from the graph.\n     * If the edge supplied is not found in the graph,\n     * calling this function will have no effect on the graph.\n     * @bigoh O(log E + log V)\n     */\n    void removeEdge(EdgeGen<V, E>* e, bool directed = true);\n\n    /**\n     * Removes the given vertex from the graph.\n     * If the vertex is not found in the graph, the call has no effect.\n     * @bigoh O(E + log V)\n     */\n    void removeVertex(const std::string& name);\n\n    /**\n     * Removes the given vertex from the graph.\n     * If the vertex is null or is not found in the graph, the call has no effect.\n     * @bigoh O(E + log V)\n     */\n    void removeVertex(VertexGen<V, E>* v);\n\n    /**\n     * Sets the data stored in each vertex and edge back to its original value\n     * by calling resetData on every vertex and edge.\n     * @private\n     * @bigoh O(V + E)\n     */\n    void resetData();\n\n    /**\n     * Sets whether the resetData method is enabled (default true).\n     * @private\n     * @bigoh O(1)\n     */\n    void setResetEnabled(bool enabled);\n\n    /* @inherit */\n    virtual void scanArcData(TokenScanner& scanner, EdgeGen<V, E>* edge, EdgeGen<V, E>* inverse);\n\n    /* @inherit */\n    virtual void writeArcData(std::ostream& out, EdgeGen<V, E>* edge) const;\n\n    /**\n     * Returns a Map representing an adjacency list equivalent to this graph.\n     * Each vertex's name is a key in the map, and its neighboring vertexes' names\n     * are stored in a Set as the value associated with that key.\n     * It should be noted that this member does not preserve the weights of the edges\n     * between the neighboring vertexes, so it is not ideal for use with weighted graphs.\n     * @bigoh O(V + E)\n     */\n    Map<std::string, Set<std::string>> toMap() const;\n\n    /**\n     * Returns the number of vertexes in the graph.\n     * Equivalent to size.\n     * @bigoh O(1)\n     */\n    int vertexCount() const;\n\n    /**\n     * Overloads <code>[]</code> to return vertex pointers by vertex name.\n     * @bigoh O(log V)\n     */\n    VertexGen<V, E>* operator [](const std::string& name);\n\n    /**\n     * Overloads <code>[]</code> to return vertex pointers by vertex name.\n     * @bigoh O(log V)\n     */\n    const VertexGen<V, E>* operator [](const std::string& name) const;\n\nprivate:\n    bool m_resetEnabled;\n};\n\n/**\n * Hash function for BasicGraphGen.\n */\ntemplate <typename V, typename E>\nint hashCode(const BasicGraphGen<V, E>& graph);\n\n/*\n * Defines a Vertex to be a VertexGen with its data bound to be a void*.\n * Retained for backward compatibility.\n */\ntypedef VertexGen<void*, void*> Vertex;\n#define VertexV VertexGen\n\n/*\n * You can refer to a Vertex as a Node if you prefer.\n */\n#define Node Vertex\n\n/*\n * Defines an Edge to be an EdgeGen with its data bound to be a void*.\n * Retained for backward compatibility.\n */\ntypedef EdgeGen<void*, void*> Edge;\n#define EdgeV EdgeGen\n\n/*\n * You can refer to an Edge as an Arc if you prefer.\n */\n#define Arc Edge\n\n/*\n * Defines a BasicGraph to be a BasicGraphGen with its data bound to be a void*.\n * Retained for backward compatibility.\n */\ntypedef BasicGraphGen<void*, void*> BasicGraph;\n#define BasicGraphV BasicGraphGen\n\n/**\n * Hash function for BasicGraph.\n */\nint hashCode(const BasicGraph& graph);\n\n\n/*\n * Vertex member implementations\n */\ntemplate <typename V, typename E>\nVertexGen<V, E>::VertexGen(const std::string& theName)\n        : name(theName),\n          edges(arcs),\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n          weight(cost),\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n          data(V()),\n          extraData(data) {\n    resetData();\n}\n\ntemplate <typename V, typename E>\nVertexGen<V, E>::VertexGen(const VertexGen& other)\n    : name(other.name),\n      arcs(other.arcs),\n      edges(arcs),\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n      cost(other.cost),\n      weight(cost),\n      visited(other.visited),\n      previous(other.previous),\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n      data(other.data),\n      extraData(data),\n      _color(other._color) {\n    // empty\n}\n\ntemplate <typename V, typename E>\nVertexGen<V, E>::~VertexGen() {\n    // empty\n}\n\ntemplate <typename V, typename E>\nint VertexGen<V, E>::getColor() const {\n    return _color;\n}\n\ntemplate <typename V, typename E>\nvoid VertexGen<V, E>::resetData() {\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    cost = 0.0;\n    previous = nullptr;\n    visited = false;\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    _color = /* UNCOLORED */ 0;\n}\n\ntemplate <typename V, typename E>\nvoid VertexGen<V, E>::setColor(int c) {\n    _color = c;\n    notifyObservers();\n}\n\ntemplate <typename V, typename E>\nstd::string VertexGen<V, E>::toString() const {\n    std::ostringstream out;\n    out << *this;\n    return out.str();\n}\n\ntemplate <typename V, typename E>\nVertexGen<V, E>& VertexGen<V, E>::operator =(const VertexGen& other) {\n    if (this != &other) {\n        name = other.name;\n        arcs = other.arcs;\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n        cost = other.cost;\n        visited = other.visited;\n        previous = other.previous;\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n        data = other.data;\n        _color = other._color;\n    }\n    return *this;\n}\n\ntemplate <typename V, typename E>\nVertexGen<V, E>& VertexGen<V, E>::operator =(VertexGen&& other) {\n    if (this != &other) {\n        name = other.name;\n        arcs = other.arcs;\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n        cost = other.cost;\n        visited = other.visited;\n        previous = other.previous;\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n        data = other.data;\n        _color = other._color;\n    }\n    return *this;\n}\n\ntemplate <typename V, typename E>\nstd::ostream& operator <<(std::ostream& out, const VertexGen<V, E>& v) {\n    out << \"Vertex{name=\" << v.name;\n\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    if (!floatingPointEqual(v.cost, 0.0)) {\n        out << \", cost=\" << v.cost;\n    }\n    out << \", visited=\" << (v.visited ? \"true\" : \"false\");\n    out << \", previous=\" << (v.previous == nullptr ? std::string(\"nullptr\") : v.previous->name);\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n\n    // print neighbors\n    out << \", neighbors={\";\n    int i = 0;\n    for (EdgeGen<V, E>* edge : v.edges) {\n        if (i > 0) {\n            out << \", \";\n        }\n        i++;\n        if (edge->finish) {\n            out << edge->finish->name;\n        } else {\n            out << \"nullptr\";\n        }\n    }\n    out << \"}\";   // end of neighbors\n\n    out << \"}\";   // end of Vertex\n    return out;\n}\n\n\n/*\n * Edge member implementations\n */\ntemplate <typename V, typename E>\nEdgeGen<V, E>::EdgeGen(VertexGen<V, E>* theStart, VertexGen<V, E>* theFinish, double theCost)\n        : start(theStart),\n          finish(theFinish),\n          end(this->finish),\n          cost(theCost),\n          weight(this->cost),\n          data(nullptr),\n          extraData(data) {\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    this->extraData = nullptr;\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    this->resetData();\n}\n\ntemplate <typename V, typename E>\nEdgeGen<V, E>::~EdgeGen() {\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    if (this->extraData != nullptr) {\n        this->extraData = nullptr;\n        // delete this->extraData;\n    }\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n}\n\ntemplate <typename V, typename E>\nvoid EdgeGen<V, E>::resetData() {\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    this->visited = false;\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n}\n\ntemplate <typename V, typename E>\nstd::string EdgeGen<V, E>::toString() const {\n    std::ostringstream out;\n    out << *this;\n    return out.str();\n}\n\ntemplate <typename V, typename E>\nEdgeGen<V, E>& EdgeGen<V, E>::operator =(const EdgeGen& other) {\n    if (this != &other) {\n        start = other.start;\n        finish = other.finish;\n        cost = other.cost;\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n        visited = other.visited;\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    }\n    return *this;\n}\n\ntemplate <typename V, typename E>\nEdgeGen<V, E>& EdgeGen<V, E>::operator =(EdgeGen&& other) {\n    start = other.start;\n    finish = other.finish;\n    cost = other.cost;\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    visited = other.visited;\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    return *this;\n}\n\n/**\n * Writes the given edge structure to the given output stream.\n */\ntemplate <typename V, typename E>\nstd::ostream& operator <<(std::ostream& out, const EdgeGen<V, E>& edge) {\n    out << \"Edge{start=\";\n    if (!edge.start) {\n        out << \"nullptr\";\n    } else {\n        out << edge.start->name;\n    }\n    out << \", finish=\";\n    if (!edge.finish) {\n        out << \"nullptr\";\n    } else {\n        out << edge.finish->name;\n    }\n    if (!floatingPointEqual(edge.cost, 0.0)) {\n        out << \", cost=\" << edge.cost;\n    }\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    if (edge.visited) {\n        out << \", visited=\" << (edge.visited ? \"true\" : \"false\");\n    }\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    out << \"}\";\n    return out;\n}\n\n\n/*\n * BasicGraph member implementations\n */\ntemplate <typename V, typename E>\nBasicGraphGen<V, E>::BasicGraphGen() : Graph<VertexGen<V, E>, EdgeGen<V, E>>() {\n    m_resetEnabled = true;\n}\n\ntemplate <typename V, typename E>\nBasicGraphGen<V, E>::BasicGraphGen(std::initializer_list<std::string> vertexList)\n        : Graph<VertexGen<V, E>, EdgeGen<V, E>>() {\n    m_resetEnabled = true;\n    for (const std::string& vertexName : vertexList) {\n        this->addVertex(vertexName);\n    }\n}\n\ntemplate <typename V, typename E>\nvoid BasicGraphGen<V, E>::clearEdges() {\n    this->clearArcs();\n}\n\ntemplate <typename V, typename E>\nvoid BasicGraphGen<V, E>::clearEdges(VertexGen<V, E>* v) {\n    this->clearArcs(v);\n}\n\ntemplate <typename V, typename E>\nvoid BasicGraphGen<V, E>::clearEdges(const std::string& v) {\n    this->clearArcs(v);\n}\n\ntemplate <typename V, typename E>\nbool BasicGraphGen<V, E>::containsEdge(VertexGen<V, E>* v1, VertexGen<V, E>* v2) const {\n    return this->containsArc(v1, v2);\n}\n\ntemplate <typename V, typename E>\nbool BasicGraphGen<V, E>::containsEdge(const std::string& v1, const std::string& v2) const {\n    return this->containsArc(v1, v2);\n}\n\ntemplate <typename V, typename E>\nbool BasicGraphGen<V, E>::containsEdge(EdgeGen<V, E>* edge) const {\n    return this->containsArc(edge);\n}\n\ntemplate <typename V, typename E>\nbool BasicGraphGen<V, E>::containsVertex(const std::string& name) const {\n    return this->containsNode(name);\n}\n\ntemplate <typename V, typename E>\nbool BasicGraphGen<V, E>::containsVertex(VertexGen<V, E>* v) const {\n    return this->containsNode(v);\n}\n\ntemplate <typename V, typename E>\nint BasicGraphGen<V, E>::edgeCount() const {\n    return this->arcCount();\n}\n\ntemplate <typename V, typename E>\nEdgeGen<V, E>* BasicGraphGen<V, E>::getEdge(VertexGen<V, E>* v1, VertexGen<V, E>* v2) const {\n    return this->getArc(v1, v2);\n}\n\ntemplate <typename V, typename E>\nEdgeGen<V, E>* BasicGraphGen<V, E>::getEdge(const std::string& v1, const std::string& v2) const {\n    return this->getArc(v1, v2);\n}\n\ntemplate <typename V, typename E>\nEdgeGen<V, E>* BasicGraphGen<V, E>::getInverseArc(EdgeGen<V, E>* edge) const {\n    return this->getArc(edge->finish, edge->start);\n}\n\ntemplate <typename V, typename E>\nEdgeGen<V, E>* BasicGraphGen<V, E>::getInverseEdge(EdgeGen<V, E>* edge) const {\n    return this->getInverseArc(edge);\n}\n\ntemplate <typename V, typename E>\nvoid BasicGraphGen<V, E>::resetData() {\n    if (m_resetEnabled) {\n        for (VertexGen<V, E>* v : this->getVertexSet()) {\n            v->resetData();\n        }\n        for (EdgeGen<V, E>* e : this->getEdgeSet()) {\n            e->resetData();\n        }\n    }\n}\n\ntemplate <typename V, typename E>\nvoid BasicGraphGen<V, E>::setResetEnabled(bool enabled) {\n    m_resetEnabled = enabled;\n}\n\ntemplate <typename V, typename E>\nEdgeGen<V, E>* BasicGraphGen<V, E>::addEdge(const std::string& v1, const std::string& v2, double cost, bool directed) {\n    if (!this->containsVertex(v1)) {\n        this->addVertex(v1);\n    }\n    if (!this->containsVertex(v2)) {\n        this->addVertex(v2);\n    }\n    return this->addEdge(this->getVertex(v1), this->getVertex(v2), cost, directed);\n}\n\ntemplate <typename V, typename E>\nEdgeGen<V, E>* BasicGraphGen<V, E>::addEdge(VertexGen<V, E>* v1, VertexGen<V, E>* v2, double cost, bool directed) {\n    EdgeGen<V, E>* e = new EdgeGen<V, E>(v1, v2, cost);\n    return this->addEdge(e, directed);\n}\n\ntemplate <typename V, typename E>\nEdgeGen<V, E>* BasicGraphGen<V, E>::addEdge(EdgeGen<V, E>* e, bool directed) {\n    EdgeGen<V, E>* result = this->addArc(e);\n    if (!directed) {\n        EdgeGen<V, E>* result2 = this->addArc(e->finish, e->start);\n        result2->cost = e->cost;\n    }\n    return result;\n}\n\ntemplate <typename V, typename E>\nVertexGen<V, E>* BasicGraphGen<V, E>::addVertex(const std::string& name) {\n    return this->addNode(name);\n}\n\ntemplate <typename V, typename E>\nVertexGen<V, E>* BasicGraphGen<V, E>::addVertex(VertexGen<V, E>* v) {\n    return this->addNode(v);\n}\n\ntemplate <typename V, typename E>\nconst Set<EdgeGen<V, E>*>& BasicGraphGen<V, E>::getEdgeSet() const {\n    return this->getArcSet();\n}\n\ntemplate <typename V, typename E>\nconst Set<EdgeGen<V, E>*>& BasicGraphGen<V, E>::getEdgeSet(VertexGen<V, E>* v) const {\n    return this->getArcSet(v);\n}\n\ntemplate <typename V, typename E>\nconst Set<EdgeGen<V, E>*>& BasicGraphGen<V, E>::getEdgeSet(const std::string& v) const {\n    return this->getArcSet(v);\n}\n\ntemplate <typename V, typename E>\nconst Set<EdgeGen<V, E>*> BasicGraphGen<V, E>::getInverseEdgeSet(VertexGen<V, E>* v) const {\n    return this->getInverseArcSet(v);\n}\n\ntemplate <typename V, typename E>\nconst Set<EdgeGen<V, E>*> BasicGraphGen<V, E>::getInverseEdgeSet(const std::string& v) const {\n    return this->getInverseArcSet(v);\n}\n\n\ntemplate <typename V, typename E>\nVertexGen<V, E>* BasicGraphGen<V, E>::getVertex(const std::string& name) const {\n    return this->getNode(name);\n}\n\ntemplate <typename V, typename E>\nSet<std::string> BasicGraphGen<V, E>::getVertexNames() const {\n    return this->getNodeNames();\n}\n\n\ntemplate <typename V, typename E>\nconst Set<VertexGen<V, E>*>& BasicGraphGen<V, E>::getVertexSet() const {\n    return this->getNodeSet();\n}\n\ntemplate <typename V, typename E>\nvoid BasicGraphGen<V, E>::removeEdge(const std::string& v1, const std::string& v2, bool directed) {\n    this->removeEdge(this->getVertex(v1), this->getVertex(v2), directed);\n}\n\ntemplate <typename V, typename E>\nvoid BasicGraphGen<V, E>::removeEdge(VertexGen<V, E>* v1, VertexGen<V, E>* v2, bool directed) {\n    this->removeArc(v1, v2);\n    if (!directed) {\n        this->removeArc(v2, v1);\n    }\n}\n\ntemplate <typename V, typename E>\nvoid BasicGraphGen<V, E>::removeEdge(EdgeGen<V, E>* e, bool directed) {\n    this->removeArc(e);\n    if (!directed) {\n        this->removeArc(e->finish, e->start);\n    }\n}\n\ntemplate <typename V, typename E>\nvoid BasicGraphGen<V, E>::removeVertex(const std::string& name) {\n    this->removeNode(name);\n}\n\ntemplate <typename V, typename E>\nvoid BasicGraphGen<V, E>::removeVertex(VertexGen<V, E>* v) {\n    this->removeNode(v);\n}\n\ntemplate <typename V, typename E>\nMap<std::string, Set<std::string>> BasicGraphGen<V, E>::toMap() const {\n    Map<std::string, Set<std::string>> result;\n    for (Vertex* v : this->getVertexSet()) {\n        Set<std::string> neighborSet;\n        for (Vertex* neighbor : this->getNeighbors(v)) {\n            neighborSet += neighbor->name;\n        }\n        result[v->name] = neighborSet;\n    }\n    return result;\n}\n\ntemplate <typename V, typename E>\nint BasicGraphGen<V, E>::vertexCount() const {\n    return this->nodeCount();\n}\n\ntemplate <typename V, typename E>\nVertexGen<V, E>* BasicGraphGen<V, E>::operator [](const std::string& name) {\n    return this->getVertex(name);\n}\n\ntemplate <typename V, typename E>\nconst VertexGen<V, E>* BasicGraphGen<V, E>::operator [](const std::string& name) const {\n    return this->getVertex(name);\n}\n\ntemplate <typename V, typename E>\nvoid BasicGraphGen<V, E>::scanArcData(TokenScanner& scanner, EdgeGen<V, E>* edge, EdgeGen<V, E>* inverse) {\n    std::string colon = scanner.nextToken();   // \":\", skip over\n    if (colon == \":\") {\n        std::string costStr = scanner.nextToken();\n        edge->cost = stringToReal(costStr);\n        if (inverse) {\n            inverse->cost = edge->cost;\n        }\n    } else {\n        // no cost for this edge (cost 0); un-read the colon token because\n        // it probably wasn't actually a colon\n        scanner.saveToken(colon);\n    }\n}\n\ntemplate <typename V, typename E>\nvoid BasicGraphGen<V, E>::writeArcData(std::ostream& out, EdgeGen<V, E>* edge) const {\n    if (!floatingPointEqual(edge->cost, 0.0)) {\n        out << \" : \";\n        out << edge->cost;\n    }\n}\n\n/**\n * Template hash function for graphs.\n */\ntemplate <typename V, typename E>\nint hashCode(const BasicGraphGen<V, E>& graph) {\n    int code = hashSeed();\n    for (VertexGen<V, E>* v : graph) {\n        code = hashMultiplier() * code + hashCode(v->name);\n    }\n    for (EdgeGen<V, E>* e : graph.getEdgeSet()) {\n        code = hashMultiplier() * code + hashCode(e->start->name);\n        code = hashMultiplier() * code + hashCode(e->finish->name);\n    }\n    return (code & hashMask());\n}\n\n/**\n * Overloaded operator to print a set of edge pointers.\n * Normally it is unwise to override operators for printing pointers,\n * because the pointer could be null or garbage.\n * But in this case we have decided that it is better for students if their\n * attempts to print collections of vertexes and edges are easy to read.\n */\ntemplate <typename V, typename E>\nstd::ostream& operator <<(std::ostream& out, const HashSet<EdgeGen<V, E>*>& sete) {\n    out << \"{\";\n    if (!sete.isEmpty()) {\n        bool first = true;\n        for (EdgeGen<V, E>* e : sete) {\n            if (!first) {\n                out << \", \";\n            }\n            first = false;\n            if (e) {\n                if (e->start) {\n                    out << e->start->name;\n                } else {\n                    out << \"null\";\n                }\n                out << \" -> \";\n                if (e->finish) {\n                    out << e->finish->name;\n                } else {\n                    out << \"null\";\n                }\n            } else {\n                out << \"null\";\n            }\n        }\n    }\n    out << \"}\";\n    return out;\n}\n\n/**\n * Overloaded operator to print a set of vertex pointers.\n * Normally it is unwise to override operators for printing pointers,\n * because the pointer could be null or garbage.\n * But in this case we have decided that it is better for students if their\n * attempts to print collections of vertexes and edges are easy to read.\n */\ntemplate <typename V, typename E>\nstd::ostream& operator <<(std::ostream& out, const HashSet<VertexGen<V, E>*>& setv) {\n    out << \"{\";\n    if (!setv.isEmpty()) {\n        bool first = true;\n        for (VertexGen<V, E>* v : setv) {\n            if (!first) {\n                out << \", \";\n            }\n            first = false;\n            if (v) {\n                out << v->name;\n            } else {\n                out << \"null\";\n            }\n        }\n    }\n    out << \"}\";\n    return out;\n}\n\n/**\n * Overloaded operator to print a list of edge pointers.\n * Normally it is unwise to override operators for printing pointers,\n * because the pointer could be null or garbage.\n * But in this case we have decided that it is better for students if their\n * attempts to print collections of vertexes and edges are easy to read.\n */\ntemplate <typename V, typename E>\nstd::ostream& operator <<(std::ostream& out, const LinkedList<EdgeGen<V, E>*>& liste) {\n    out << \"{\";\n    if (!liste.isEmpty()) {\n        bool first = true;\n        for (EdgeGen<V, E>* e : liste) {\n            if (!first) {\n                out << \", \";\n            }\n            first = false;\n            if (e) {\n                if (e->start) {\n                    out << e->start->name;\n                } else {\n                    out << \"null\";\n                }\n                out << \" -> \";\n                if (e->finish) {\n                    out << e->finish->name;\n                } else {\n                    out << \"null\";\n                }\n            } else {\n                out << \"null\";\n            }\n        }\n    }\n    out << \"}\";\n    return out;\n}\n\n/**\n * Overloaded operator to print a list of vertex pointers.\n * Normally it is unwise to override operators for printing pointers,\n * because the pointer could be null or garbage.\n * But in this case we have decided that it is better for students if their\n * attempts to print collections of vertexes and edges are easy to read.\n */\ntemplate <typename V, typename E>\nstd::ostream& operator <<(std::ostream& out, const LinkedList<VertexGen<V, E>*>& lst) {\n    out << \"{\";\n    if (!lst.isEmpty()) {\n        bool first = true;\n        for (VertexGen<V, E>* v : lst) {\n            if (!first) {\n                out << \", \";\n            }\n            first = false;\n            if (v) {\n                out << v->name;\n            } else {\n                out << \"null\";\n            }\n        }\n    }\n    out << \"}\";\n    return out;\n}\n\n/**\n * Overloaded operator to print a set of edge pointers.\n * Normally it is unwise to override operators for printing pointers,\n * because the pointer could be null or garbage.\n * But in this case we have decided that it is better for students if their\n * attempts to print collections of vertexes and edges are easy to read.\n */\ntemplate <typename V, typename E>\nstd::ostream& operator <<(std::ostream& out, const Set<EdgeGen<V, E>*>& sete) {\n    out << \"{\";\n    if (!sete.isEmpty()) {\n        bool first = true;\n        for (EdgeGen<V, E>* e : sete) {\n            if (!first) {\n                out << \", \";\n            }\n            first = false;\n            if (e) {\n                if (e->start) {\n                    out << e->start->name;\n                } else {\n                    out << \"null\";\n                }\n                out << \" -> \";\n                if (e->finish) {\n                    out << e->finish->name;\n                } else {\n                    out << \"null\";\n                }\n            } else {\n                out << \"null\";\n            }\n        }\n    }\n    out << \"}\";\n    return out;\n}\n\n/**\n * Overloaded operator to print a set of vertex pointers.\n * Normally it is unwise to override operators for printing pointers,\n * because the pointer could be null or garbage.\n * But in this case we have decided that it is better for students if their\n * attempts to print collections of vertexes and edges are easy to read.\n */\ntemplate <typename V, typename E>\nstd::ostream& operator <<(std::ostream& out, const Set<VertexGen<V, E>*>& setv) {\n    out << \"{\";\n    if (!setv.isEmpty()) {\n        bool first = true;\n        for (VertexGen<V, E>* v : setv) {\n            if (!first) {\n                out << \", \";\n            }\n            first = false;\n            if (v) {\n                out << v->name;\n            } else {\n                out << \"null\";\n            }\n        }\n    }\n    out << \"}\";\n    return out;\n}\n\n/**\n * Overloaded operator to print a vector of edge pointers.\n * Normally it is unwise to override operators for printing pointers,\n * because the pointer could be null or garbage.\n * But in this case we have decided that it is better for students if their\n * attempts to print collections of vertexes and edges are easy to read.\n */\ntemplate <typename V, typename E>\nstd::ostream& operator <<(std::ostream& out, const Vector<EdgeGen<V, E>*>& vece) {\n    out << \"{\";\n    if (!vece.isEmpty()) {\n        bool first = true;\n        for (EdgeGen<V, E>* e : vece) {\n            if (!first) {\n                out << \", \";\n            }\n            first = false;\n            if (e) {\n                if (e->start) {\n                    out << e->start->name;\n                } else {\n                    out << \"null\";\n                }\n                out << \" -> \";\n                if (e->finish) {\n                    out << e->finish->name;\n                } else {\n                    out << \"null\";\n                }\n            } else {\n                out << \"null\";\n            }\n        }\n    }\n    out << \"}\";\n    return out;\n}\n\n/**\n * Overloaded operator to print a vector of vertex pointers.\n * Normally it is unwise to override operators for printing pointers,\n * because the pointer could be null or garbage.\n * But in this case we have decided that it is better for students if their\n * attempts to print collections of vertexes and edges are easy to read.\n */\ntemplate <typename V, typename E>\nstd::ostream& operator <<(std::ostream& out, const Vector<VertexGen<V, E>*>& vec) {\n    out << \"{\";\n    if (!vec.isEmpty()) {\n        bool first = true;\n        for (VertexGen<V, E>* v : vec) {\n            if (!first) {\n                out << \", \";\n            }\n            first = false;\n            if (v) {\n                out << v->name;\n            } else {\n                out << \"null\";\n            }\n        }\n    }\n    out << \"}\";\n    return out;\n}\n\n#endif // _basicgraph_h\n\n/////////////////////// END code extracted from StanfordCPPLib/collections/basicgraph.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/collections/stl.h ///////////////////////\n/*\n * File: stl.h\n * -----------\n * Contains utility functions related to the STL collections.\n *\n * @author Marty Stepp\n * @version 2018/10/19\n * - added toStl* methods (moved here from being members of our collections)\n *   This is to avoid a default include of STL containers in student code.\n * @version 2016/10/22\n * - added toString\n * @version 2016/09/22\n * - initial version\n * @since 2016/09/22\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _stl_h\n#define _stl_h\n\n#include <initializer_list>\n#include <iostream>\n#include <iterator>\n#include <list>\n#include <map>\n#include <queue>\n#include <set>\n#include <sstream>\n#include <stack>\n#include <vector>\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\n// STL containers:\n// array, vector, deque, forward_list, ist, stack, queue, priority_queue,\n// set, multiset, map, multimap, unordered_*, bitset, valarray\n\n/**\n * Writes the given list of values to the given output stream\n * in a \"{10, 20, 30}\" format.\n */\ntemplate <typename T>\nstd::ostream& operator <<(std::ostream& out, const std::initializer_list<T>& list) {\n    return stanfordcpplib::collections::writeCollection(out, list);\n}\n\n/**\n * Writes the given vector of values to the given output stream\n * in a \"{10, 20, 30}\" format.\n */\ntemplate <typename T>\nstd::ostream& operator <<(std::ostream& out, const std::vector<T>& vec) {\n    return stanfordcpplib::collections::writeCollection(out, vec);\n}\n\n/**\n * Returns an STL queue object with the same elements as this Queue.\n */\ntemplate <typename ValueType>\nstd::deque<ValueType> toStlDeque(const Queue<ValueType>& q) {\n    Queue<ValueType> copy = q;\n    std::deque<ValueType> result;\n    while (!copy.isEmpty()) {\n        result.push_back(copy.dequeue());\n    }\n    return result;\n}\n\n/**\n * Returns an STL list object with the same elements as this LinkedList.\n */\ntemplate <typename ValueType>\nstd::list<ValueType> toStlList(const LinkedList<ValueType>& l) {\n    std::list<ValueType> result;\n    for (const ValueType& value : l) {\n        result.push_back(value);\n    }\n    return result;\n}\n\n/**\n * Returns an STL map object with the same elements as this map.\n */\ntemplate <typename KeyType, typename ValueType>\nstd::map<KeyType, ValueType> toStlMap(const Map<KeyType, ValueType>& m) {\n    std::map<KeyType, ValueType> result;\n    for (const KeyType& key : m) {\n        result[key] = m[key];\n    }\n    return result;\n}\n\n/**\n * Returns an STL queue object with the same elements as this Queue.\n */\ntemplate <typename ValueType>\nstd::queue<ValueType> toStlQueue(const Queue<ValueType>& q) {\n    Queue<ValueType> copy = q;\n    std::queue<ValueType> result;\n    while (!copy.isEmpty()) {\n        result.push_back(copy.dequeue());\n    }\n    return result;\n}\n\n/**\n * Returns an STL set object with the same elements as this DawgLexicon.\n */\nstd::set<std::string> toStlSet(const DawgLexicon& lex);\n\n/**\n * Returns an STL set object with the same elements as this Lexicon.\n */\nstd::set<std::string> toStlSet(const Lexicon& lex);\n\n/**\n * Returns an STL set object with the same elements as this Set.\n */\ntemplate <typename ValueType>\nstd::set<ValueType> toStlSet(const Set<ValueType>& s) {\n    std::set<ValueType> result;\n    for (ValueType& value : s) {\n        result.insert(value);\n    }\n    return result;\n}\n\n/**\n * Returns an STL stack object with the same elements as this Stack.\n */\ntemplate <typename ValueType>\nstd::stack<ValueType> toStlStack(const Stack<ValueType>& s) {\n    Stack<ValueType> copy = s;\n    std::stack<ValueType> result;\n    while (!copy.isEmpty()) {\n        result.push(copy.pop());\n    }\n    return result;\n}\n\n/**\n * Returns an STL vector object with the same elements as this Vector.\n */\ntemplate <typename ValueType>\nstd::vector<ValueType> toStlVector(const Vector<ValueType>& v) {\n    std::vector<ValueType> result;\n    for (int i = 0; i < v.size(); i++) {\n        result.push_back(v[i]);\n    }\n    return result;\n}\n\n/**\n * Converts the given list of values to a string such as \"{1, 2, 3}\".\n */\ntemplate <typename T>\nstd::string toString(const std::initializer_list<T>& list) {\n    std::ostringstream out;\n    out << list;\n    return out.str();\n}\n\n/**\n * Converts the given vector of values to a string such as \"{1, 2, 3}\".\n */\ntemplate <typename T>\nstd::string toString(const std::vector<T>& vec) {\n    std::ostringstream out;\n    out << vec;\n    return out.str();\n}\n\n#endif // _stl_h\n\n/////////////////////// END code extracted from StanfordCPPLib/collections/stl.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/graphics/consoletext.h ///////////////////////\n/*\n * File: consoletext.h\n * -------------------\n * This file provides a way to use the functions from console.h\n * without mandating the use of the Stanford C++ library's\n * graphical console window.\n * \n * @author Marty Stepp\n * @version 2018/08/31\n * - initial version\n */\n\n#define __DONT_ENABLE_QT_GRAPHICAL_CONSOLE\n\n#undef __DONT_ENABLE_QT_GRAPHICAL_CONSOLE\n\n/////////////////////// END code extracted from StanfordCPPLib/graphics/consoletext.h ///////////////////////\n\n#define __DONT_ENABLE_GRAPHICAL_CONSOLE\n/////////////////////// BEGIN code extracted from StanfordCPPLib/graphics/console.h ///////////////////////\n/*\n * File: console.h\n * ---------------\n * This file contains functions related to the library's graphical console window,\n * implemented using the Qt graphics library in native C++ instead of Java.\n * In general if you #include this file, it will implicitly enable the graphical\n * console.  If you don't want to do that, you should #define a flag named\n * __DONT_ENABLE_QT_GRAPHICAL_CONSOLE right before #include'ing this header.\n * Once the graphical console has been enabled, it cannot easily be turned off\n * again for that program.\n * \n * @author Marty Stepp\n * @version 2018/11/22\n * - added headless mode support\n * @version 2018/10/18\n * - fixed includes to avoid accidentally enabling GUI unintentionally\n * @version 2018/09/08\n * - added doc comments for new documentation generation\n * @version 2018/08/27\n * - cleaned up comments\n * @version 2018/08/23\n * - renamed to console.h to replace Java version\n * - separated out gconsolewindow.h/cpp\n * @version 2018/07/29\n * - menu, icons, hotkeys\n * @version 2018/07/26\n * - refactored GConsoleWindow class\n * @version 2018/07/15\n * - initial version, based on io/console.h\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _console_h\n#define _console_h\n\n#include <iostream>\n#include <sstream>\n#include <string>\n\n#ifndef SPL_HEADLESS_MODE\nclass GConsoleWindow;\nclass GDimension;\nclass GPoint;\n#endif // SPL_HEADLESS_MODE\n\n/**\n * Erases the contents of the console window.\n */\nvoid clearConsole();\n\n/**\n * Returns whether the console's \"clear\" function should be enabled.\n * Default true.  If false, clear() will just print a message\n * rather than actually clearing the console.\n * @private\n */\nbool getConsoleClearEnabled();\n\n/**\n * Returns what the console will do when the user hits its \"close\" button.\n * By default, this is CONSOLE_HIDE_ON_CLOSE unless set otherwise.\n */\n/* GWindow::CloseOperation */ int getConsoleCloseOperation();\n\n/**\n * Returns whether or not the input/output from the Stanford graphical\n * console window is being echoed onto the standard operating system terminal\n * window. Initially this is false unless set to true by a previous call to\n * setConsoleEcho(true).\n */\nbool getConsoleEcho();\n\n/**\n * Returns whether the graphical console window is enabled.\n * This is true if you have included \"qconsole.h\" in your program.\n */\nbool getConsoleEnabled();\n\n/**\n * Returns whether an event should be generated if the console\n * window is closed.  By default this is false initially.\n * @private\n * @deprecated\n */\nbool getConsoleEventOnClose();\n\n/**\n * Returns whether the overall C++ program will terminate if the console\n * window is closed.  By default this is false initially.\n */\nbool getConsoleExitProgramOnClose();\n\n/**\n * Returns the font currently being used by the console.  The font\n * is typically a string in the form <code>family-style-size</code>.\n * In this string, <code>family</code> is the name of the font family;\n * <code>style</code> is either missing (indicating a plain font) or one\n * of the strings <code>Bold</code>, <code>Italic</code>, or\n * <code>BoldItalic</code>; and <code>size</code> is an integer\n * indicating the point size.\n * See gfont.h for more information about font strings.\n */\nstd::string getConsoleFont();\n\n/**\n * Returns the height of the console window in pixels.\n */\ndouble getConsoleHeight();\n\n/**\n * Returns the x/y position of the top-left corner of the console window.\n */\n#ifndef SPL_HEADLESS_MODE\nGPoint getConsoleLocation();\n#endif // SPL_HEADLESS_MODE\n\n/**\n * Returns whether the location of the console window should be remembered and\n * restored between runs of the program.  Initially false.\n */\nbool getConsoleLocationSaved();\n\n/**\n * Returns whether or not a feature is enabled that causes exceptions to be\n * echoed to the Stanford graphical console window when they are thrown.\n * Disabled (false) by default.\n */\nbool getConsolePrintExceptions();\n\n/**\n * Returns whether functions like setConsoleFont or setConsoleSize\n * are currently ignored.  See setConsoleSettingsLocked.\n * Clients should generally not call this method.\n * @private\n */\nbool getConsoleSettingsLocked();\n\n/**\n * Returns the size of the console window in pixels.\n */\n#ifndef SPL_HEADLESS_MODE\nGDimension getConsoleSize();\n#endif // SPL_HEADLESS_MODE\n\n/**\n * Returns the width of the console window in pixels.\n */\ndouble getConsoleWidth();\n\n/**\n * Returns a pointer to the graphical console window,\n * which is a subclass of GWindow, so you can manipulate it as you would\n * any other window.\n *\n * @private\n */\n#ifndef SPL_HEADLESS_MODE\nGConsoleWindow* getConsoleWindow();\n#endif // SPL_HEADLESS_MODE\n\n/**\n * Returns the title bar text of the console window.\n */\nstd::string getConsoleWindowTitle();\n\n/**\n * Initializes the state of the Qt graphical console, if it has not already\n * been initialized.\n * Clients should generally not call this method.\n * @private\n */\nvoid initializeQtGraphicalConsole();\n\n// defined in gwindow.h/cpp\nextern void pause(double milliseconds);\n\n/**\n * Returns whether the console's \"clear\" function should be enabled.\n * Default true.  If false, clear() will just print a message\n * rather than actually clearing the console.\n * This is sometimes used to facilitate creation of auto-grading scripts.\n * @private\n */\nvoid setConsoleClearEnabled(bool value);\n\n/**\n * Sets what the console should do when the user hits its \"close\" button.\n */\nvoid setConsoleCloseOperation(/*GWindow::CloseOperation*/ int op);\n\n/**\n * Enables or disables echoing the input/output from the Stanford graphical\n * console window onto the standard operating system terminal window.\n * Normally you don't need this echoing, but if you want to be able to copy\n * and paste your console interaction into another window, it is useful.\n */\nvoid setConsoleEcho(bool echo);\n\n/**\n * Sets the color used to display text in the console window.\n * The color string passed should be in a hex format such as \"#ffa32f\";\n * See gcolor.h for more detail about colors and color strings.\n */\nvoid setConsoleErrorColor(const std::string& color);\n\n/**\n * Sets whether an event should be generated if the console\n * window is closed.  By default this is false initially.\n * @private\n * @deprecated\n */\nvoid setConsoleEventOnClose(bool eventOnClose);\n\n/**\n * Sets whether the overall C++ program should terminate if the console\n * window is closed.  By default this is false initially.\n */\nvoid setConsoleExitProgramOnClose(bool exitOnClose);\n\n/**\n * Changes the font used for the console.  The <code>font</code> parameter\n * is typically a string in the form <code>family-style-size</code>.\n * In this string, <code>family</code> is the name of the font family;\n * <code>style</code> is either missing (indicating a plain font) or one\n * of the strings <code>Bold</code>, <code>Italic</code>, or\n * <code>BoldItalic</code>; and <code>size</code> is an integer\n * indicating the point size.  If any of these components is\n * specified as an asterisk, the existing value is retained.\n * The <code>font</code> parameter can also be a sequence of\n * such specifications separated by semicolons, in which case the\n * first available font on the system is used.\n * See gfont.h for more detail about font strings.\n */\nvoid setConsoleFont(const std::string& font);\n\n/**\n * Changes the (x, y) pixel position of the top-left corner of the console to\n * the specified coordinates, relative to the top/left of the screen.\n */\nvoid setConsoleLocation(double x, double y);\n\n/**\n * Sets whether the location of the console window should be remembered and\n * restored between runs of the program.  Default false.\n */\nvoid setConsoleLocationSaved(bool value);\n\n/**\n * Sets the color used to display text in the console window.\n * The color string passed should be in a hex format such as \"#ffa32f\";\n * See gcolor.h for more detail about color strings.\n */\nvoid setConsoleOutputColor(const std::string& color);\n\n/**\n * Enables or disables a feature that causes exceptions to be echoed to the\n * Stanford graphical console window when they are thrown.\n * Disabled (false) by default.\n * Note that using this feature may make it harder to get a stack trace in the\n * debugger if you are debugging the cause of an exception.\n */\nvoid setConsolePrintExceptions(bool printExceptions, bool force = false);\n\n/**\n * If set to true, disables functions like setConsoleFont or setConsoleSize,\n * to facilitate autograder construction by negating any such calls in the\n * student's main program.  Initially false.\n * Clients should generally not call this method.\n * @private\n */\nvoid setConsoleSettingsLocked(bool value);\n\n/**\n * Changes the size of the console to the specified dimensions in pixels.\n */\nvoid setConsoleSize(double width, double height);\n\n/**\n * Changes the title bar text of the console window to the specified text.\n */\nvoid setConsoleWindowTitle(const std::string& title);\n\n/**\n * Closes the graphical console window and turns it off.\n */\nvoid shutdownConsole();\n\n#endif // _console_h\n\n\n/*\n * console.h is weird in that a student's program must be able to #include it\n * and then magically receive the graphical console instead of the standard one;\n * but we want other lib files to be able to include console.h to get the\n * function prototypes without actually turning the graphical console on.\n * To achieve this, we have the __DONT_ENABLE_QT_GRAPHICAL_CONSOLE flag that lib\n * files can set right before #include'ing console.h.  If they do so, it will\n * declare the prototypes but not initialize the graphical console.\n */\n#ifndef __DONT_ENABLE_QT_GRAPHICAL_CONSOLE\n\n// signal that graphical console is in use (so it will be initialized)\n#define SPL_GRAPHICAL_CONSOLE_IN_USE 1\n\nextern void setConsoleEnabled(bool);\n\nnamespace stanfordcpplib {\nnamespace qtgui {\n\n#ifndef QtConsoleInitializer_created\n#define QtConsoleInitializer_created\n/**\n * @private\n */\nclass QtConsoleInitializer_private {\npublic:\n    /*\n     * Code to initialize the library.\n     * Implemented as a class constructor so that it will run during\n     * static initialization phase, which happens before the student's\n     * main function.\n     */\n    QtConsoleInitializer_private() {\n        setConsoleEnabled(true);\n    }\n};\n\n/**\n * @private\n */\nstatic QtConsoleInitializer_private __qt_console_init;\n#endif // QtConsoleInitializer_created\n\n} // namespace qtgui\n} // namespace stanfordcpplib\n\n#endif // __DONT_ENABLE_QT_GRAPHICAL_CONSOLE\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n/////////////////////// END code extracted from StanfordCPPLib/graphics/console.h ///////////////////////\n\n#undef __DONT_ENABLE_GRAPHICAL_CONSOLE\n/////////////////////// BEGIN code extracted from StanfordCPPLib/io/bitstream.h ///////////////////////\n/*\n * File: bitstream.h\n * -----------------\n * This file defines the ibitstream and obitstream classes which are basically\n * same as the ordinary istream and ostream classes, but add the\n * functionality to read and write one bit at a time.\n *\n * The idea is that you can substitute an ibitstream in place of an\n * istream and use the same operations (get, fail, >>, etc.)\n * along with added member functions of readBit, rewind, and size.\n *\n * Similarly, the obitstream can be used in place of ofstream, and has\n * same operations (put, fail, <<, etc.) along with additional\n * member functions writeBit and size.\n *\n * There are two subclasses of ibitstream: ifbitstream and istringbitstream,\n * which are similar to the ifstream and istringstream classes.  The\n * obitstream class similarly has ofbitstream and ostringbitstream as\n * subclasses.\n *\n * @author Keith Schwarz, Eric Roberts, Marty Stepp\n * @version 2019/04/20\n * - added toPrintable(string)\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2016/11/12\n * - made toPrintable non-static and visible\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _bitstream_h\n#define _bitstream_h\n\n#include <istream>\n#include <ostream>\n#include <fstream>\n#include <sstream>\n\n/**\n * Constant: PSEUDO_EOF\n * A constant representing the PSEUDO_EOF marker that you will\n * write at the end of your Huffman-encoded file.\n */\nconst int PSEUDO_EOF = 256;\n\n/**\n * Constant: NOT_A_CHAR\n * A constant representing an extended character that does not\n * actually hold a value.  When you are constructing your Huffman\n * encoding tree, you should set the characters in each internal\n * node (non-leaf) to this value to explicitly mark that they are not\n * being used.\n */\nconst int NOT_A_CHAR = 257;\n\n/**\n * Defines a class for reading files with all the functionality of istream\n * along with an added member function for reading a single bit and convenience\n * functions for rewinding the stream back to the beginning and getting the stream\n * size.\n *\n * You will probably not create instances of this class directly.  Instead, you\n * will create ifbitstreams or istringbitstreams to read from files or string buffers.\n */\nclass ibitstream: public std::istream {\npublic:\n    /**\n     * Initializes a new ibitstream that is not attached to any source.  You are\n     * unlikely to use this function directly.\n     */\n    ibitstream();\n\n    /**\n     * Reads a single bit from the ibitstream and returns 0 or 1 depending on\n     * the bit value.  If the stream is exhausted, EOF (-1) is returned.\n     * Raises an error if this ibitstream has not been properly opened.\n     */\n    int readBit();\n\n    /**\n     * Rewinds the ibitstream back to the beginning so that subsequent reads\n     * start again from the beginning.  Raises an error if this ibitstream\n     * has not been properly opened.\n     */\n    void rewind();\n    \n    /**\n     * Sets 'fake' mode, where it actually reads bytes when you say readBit.\n     */\n    void setFake(bool fake);\n\n    /**\n     * Returns the size in bytes of the data attached to this stream.\n     * Raises an error if this ibitstream has not been properly opened.\n     */\n    long size();\n\n    /**\n     * Returns whether or not this ibitstream is opened.  This only has\n     * meaning if the ibitstream is a file stream; otherwise it always\n     * returns true.\n     */\n    virtual bool is_open();\n\nprivate:\n    std::streampos lastTell;\n    int curByte;\n    int pos;\n    bool fake;\n};\n\n\n/**\n * Defines a class for writing files with all the functionality of ostream\n * along with an added member function for writing a single bit and a convenience\n * function for getting the stream size.\n *\n * You are unlikely to instantiate this class directly; instead, instantiate one\n * of the subclasses.\n */\nclass obitstream: public std::ostream {\npublic:\n    /**\n     * Initializes a new obitstream that is not attached to any file.  Use the\n     * open member function from ofstream to attach the stream to a file.\n     */\n    obitstream();\n\n    /**\n     * Writes a single bit to the obitstream.\n     * Raises an error if this obitstream has not been properly opened.\n     */\n    void writeBit(int bit);\n\n    /**\n     * Returns the size in bytes of the file attached to this stream.\n     * Raises an error if this obitstream has not been properly opened.\n     */\n    long size();\n\n    /**\n     * Sets 'fake' mode, where it actually writes bytes when you say writeBit.\n     */\n    void setFake(bool fake);\n    \n    /**\n     * Returns whether or not this obitstream is opened.  This only has\n     * meaning if the obitstream is a file stream; otherwise it always\n     * returns true.\n     */\n    virtual bool is_open();\n\nprivate:\n    std::streampos lastTell;\n    int curByte;\n    int pos;\n    bool fake;\n};\n\n/**\n * A class for reading files in all of the usual ways, plus bit-by-bit.\n * You can treat this class like a normal ifstream, except that there is\n * extra support for bit-level operations.\n */\nclass ifbitstream: public ibitstream {\npublic:\n    /**\n     * Constructs a new ifbitstream not attached to any file.  You can\n     * open a file for reading using the .open() member functions.\n     */\n    ifbitstream();\n\n    /**\n     * Constructs a new ifbitstream that reads the file with the given name,\n     * if it exists.  If not, the stream enters an error state.\n     */\n    ifbitstream(const char* filename);\n\n    /**\n     * Constructs a new ifbitstream that reads the specified file, if\n     * it exists.  If not, the stream enters an error state.\n     */\n    ifbitstream(const std::string& filename);\n\n    /**\n     * Opens the specified file for reading.  If an error occurs, the\n     * stream enters a failure state, which can be detected by calling\n     * ifb.fail().\n     */\n    void open(const char* filename);\n\n    /**\n     * Opens the specified file for reading.  If an error occurs, the\n     * stream enters a failure state, which can be detected by calling\n     * ifb.fail().\n     */\n    void open(const std::string& filename);\n\n    /**\n     * Returns whether or not this ifbitstream is connected to a file for\n     * reading.\n     */\n    bool is_open();\n\n    /**\n     * Closes the currently-opened file, if the stream is open.  If the\n     * stream is not open, puts the stream into a fail state.\n     */\n    void close();\n\nprivate:\n    // the actual file buffer which does reading and writing.\n    std::filebuf fb;\n};\n\n/**\n * A class for writing files in all of the usual ways, plus bit-by-bit.\n * You can treat this class like a normal ofstream, except that there is\n * extra support for bit-level operations.\n *\n * As a safety feature, you cannot use ofbitstream to open files that end\n * in .h, .hh, .cpp, or .cc for writing, as this could very easily cause\n * you to destroy your source files.\n */\nclass ofbitstream: public obitstream {\npublic:\n    /**\n     * Constructs a new ofbitstream not attached to any file.  You can\n     * open a file for writing using the .open() member functions.\n     */\n    ofbitstream();\n\n    /**\n     * Constructs a new ofbitstream that writes the specified file, if\n     * it exists.  If not, the stream enters an error state.  Read\n     * the documentation on \"open\" for more details.\n     */\n    ofbitstream(const char* filename);\n\n    /**\n     * Constructs a new ofbitstream that writes the specified file, if\n     * it exists.  If not, the stream enters an error state.  Read\n     * the documentation on \"open\" for more details.\n     */\n    ofbitstream(const std::string& filename);\n\n    /**\n     * Opens the specified file for writing.  If an error occurs, the\n     * stream enters a failure state, which can be detected by calling\n     * ifb.fail().  If an invalid filename is specified (for example,\n     * a source file), reports an error.\n     */\n    void open(const char* filename);\n\n    /**\n     * Opens the specified file for writing.  If an error occurs, the\n     * stream enters a failure state, which can be detected by calling\n     * ifb.fail().  If an invalid filename is specified (for example,\n     * a source file), reports an error.\n     */\n    void open(const std::string& filename);\n\n    /**\n     * Returns whether or not this ofbitstream is connected to a file for\n     * reading.\n     */\n    bool is_open();\n\n    /**\n     * Closes the currently-opened file, if the stream is open.  If the\n     * stream is not open, puts the stream into a fail state.\n     */\n    void close();\n\nprivate:\n    // the actual file buffer which does reading and writing.\n    std::filebuf fb;\n};\n\n/**\n * A variant on C++'s istringstream class, which acts as a stream that\n * reads its data from a string.  This is mostly used by the testing\n * code to test your Huffman encoding without having to read or write\n * files on disk, but you can use it in your own testing if you would\n * like.\n */\nclass istringbitstream: public ibitstream {\npublic:\n    /**\n     * Constructs an istringbitstream reading the specified string.\n     */\n    istringbitstream(const std::string& s = \"\");\n\n    /**\n     * Sets the underlying string of the istringbitstream.\n     */\n    void str(const std::string& s);\nprivate:\n    // the actual string buffer that does character storage\n    std::stringbuf sb;\n};\n\n/**\n * A variant on C++'s ostringstream class, which acts as a stream that\n * writes its data to a string.  This is mostly used by the testing\n * code to test your Huffman encoding without having to read or write\n * files on disk, but you can use it in your own testing if you would\n * like.\n */\nclass ostringbitstream: public obitstream {\npublic:\n    /**\n     * Constructs an ostringbitstream.\n     */\n    ostringbitstream();\n\n    /**\n     * Retrieves the underlying string of the istringbitstream.\n     */\n    std::string str();\n\nprivate:\n    // the actual string buffer that does character storage\n    std::stringbuf sb;\n};\n\n/**\n * Returns a printable string for the given character.\n * @example toPrintable('c') returns \"c\"\n * @example toPrintable('\\n') returns \"\\\\n\"\n */\nstd::string toPrintable(int ch);\n\n/**\n * Returns a string with each non-printable character in the given string\n * replaced by one that is printable.\n * Certain common escape characters are replaced by a backslash representation,\n * and non-printable ASCII characters are replaced by a backslash and their\n * ASCII numeric representation, such as \\255.\n * @example toPrintable(\"hi \\0 there\\n') returns \"hi \\\\0 there\\\\n\"\n */\nstd::string toPrintable(const std::string& s);\n\n#endif // _bitstream_h\n\n/////////////////////// END code extracted from StanfordCPPLib/io/bitstream.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/io/plainconsole.h ///////////////////////\n/*\n * File: plainconsole.h\n * --------------------\n * This file declares functions to add utility to the\n * C++ plain text console streams, cin/cout/cerr.\n * See plainconsole.cpp for implementation of each function.\n *\n * @author Marty Stepp\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2015/10/21\n * @since 2015/10/21\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _plainconsole_h\n#define _plainconsole_h\n\nnamespace plainconsole {\n/**\n * Sets the cout console to throw an error if more than the given number of\n * total characters are ever printed to it.\n * This can be used to stop student programs that try to print infinite output.\n */\nvoid setOutputLimit(int limit);\n\n/**\n * Sets whether user input values read from cin are echoed back to cout.\n * This is useful when capturing output dialogues for comparison/diffing.\n */\nvoid setEcho(bool value);\n} // namespace plainconsole\n\n#endif // _plainconsole_h\n\n/////////////////////// END code extracted from StanfordCPPLib/io/plainconsole.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/util/complex.h ///////////////////////\n/*\n * File: complex.h\n * ---------------\n * This file exports a type representing complex numbers.\n *\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2017/10/18\n * - initial version\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _complex_h\n#define _complex_h\n\n#include <iostream>\n#include <string>\n\n/**\n * A Complex object represents a complex number of the form a + bi.\n */\nclass Complex {\npublic:\n    /**\n     * Constructs a new imaginary number: (a + b * i).\n     */\n    Complex(double a = 0.0, double b = 0.0);\n\n    /**\n     * Returns the absolute value of the complex number.\n     */\n    double abs() const;\n\n    /**\n     * Returns the imaginary value of the complex number.\n     */\n    double imag() const;\n\n    /**\n     * Returns the real value of the complex number.\n     */\n    double real() const;\n\n    /**\n     * Returns a string representation of this complex number,\n     * such as \"4+3i\" or \"-2-4i\" or \"0\".\n     */\n    std::string toString() const;\n\n    /**\n     * Adds two complex numbers and returns\n     * the result as a new complex number.\n     */\n    friend Complex operator +(const Complex& m, const Complex& n);\n\n    /**\n     * Subtracts two complex numbers and returns\n     * the result as a new complex number.\n     */\n    friend Complex operator -(const Complex& m, const Complex& n);\n\n    /**\n     * Multiplies two complex numbers and returns\n     * the result as a new complex number.\n     */\n    friend Complex operator *(const Complex& m, const Complex& n);\n\n    friend std::istream& operator >>(std::istream& out, Complex& c);\n\nprivate:\n    double a;   // real value\n    double b;   // imag value\n};\n\n/**\n * Returns an integer hash code for complex numbers so that they\n * can be stored in HashSet and HashMap collections.\n */\nint hashCode(const Complex& c);\n\n/**\n * These relational operators define a total ordering for complex numbers.\n * Mathematically this is not well-defined, but we provide this simply so\n * that Complex objects can be stored in a Set or Map collection.\n */\nbool operator <(const Complex& c1, const Complex& c2);\nbool operator <=(const Complex& c1, const Complex& c2);\nbool operator >(const Complex& c1, const Complex& c2);\nbool operator >=(const Complex& c1, const Complex& c2);\nbool operator ==(const Complex& c1, const Complex& c2);\nbool operator !=(const Complex& c1, const Complex& c2);\n\n/**\n * Writes the complex number to an output stream.\n */\nstd::ostream& operator <<(std::ostream& out, const Complex& c);\n\n/**\n * Reads a complex number from an output stream.\n */\nstd::istream& operator >>(std::istream& input, Complex& c);\n\n#endif // _complex_h\n\n/////////////////////// END code extracted from StanfordCPPLib/util/complex.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/util/biginteger.h ///////////////////////\n/*\n * File: biginteger.h\n * ------------------\n * This file exports a class for arbitrary-size integer arithmetic.\n * It is meant to help get around the max/min value limit for types\n * such as int and long.\n *\n * In general, a BigInteger supports the standard operators and operations\n * that you would expect to be able to use on an int or long value.\n *\n * Example usage:\n *\n * BigInteger bi(\"1234567890123456789\");\n * for (int i = 0; i < 10; i++) {\n *     bi *= 12345678;\n * }\n * cout << \"really big number is: \" << bi << endl;\n *\n * Implementation notes:\n * This code is heavily based on a BigInteger library taken from:\n * https://github.com/panks/BigInteger\n *\n * The implementation stores the big integer as a string of base-10 digits\n * along with a sign bit represented as a bool.\n * In general the operations are not heavily optimized; this class should not\n * be used in situations where performance is critical.\n * Note that better Big Integer libraries exist in other places for more\n * serious work and can be found using your favorite search engine.\n *\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2017/10/28\n * - initial version\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _biginteger_h\n#define _biginteger_h\n\n#include <iostream>\n#include <string>\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\nclass BigInteger {\npublic:\n    /**\n     * Constants to represent very commonly used big integer values\n     */\n    static const BigInteger NEGATIVE_ONE;\n    static const BigInteger ZERO;\n    static const BigInteger ONE;\n    static const BigInteger TWO;\n    static const BigInteger TEN;\n    static const BigInteger MAX_INT;\n    static const BigInteger MIN_INT;\n    static const BigInteger MAX_UINT;\n    static const BigInteger MAX_LONG;\n    static const BigInteger MIN_LONG;\n    static const BigInteger MAX_ULONG;\n    static const BigInteger MAX_SHORT;\n    static const BigInteger MIN_SHORT;\n    static const BigInteger MAX_USHORT;\n\n    /**\n     * Constructs a new big integer set to zero.\n     *\n     * @example BigInteger bi;\n     */\n    BigInteger();\n\n    /**\n     * Constructs a new big integer whose value is a copy of another big integer.\n     *\n     * @example BigInteger bi1(bi2);\n     */\n    BigInteger(const BigInteger& other);\n\n    /**\n     * Constructs a new big integer set to the given value.\n     *\n     * @example BigInteger bi(\"1234567890123456789\");\n     */\n    BigInteger(const std::string& s, int radix = 10);\n\n    /**\n     * Constructs a new big integer set to the given value.\n     *\n     * @example BigInteger bi(12345);\n     * @example BigInteger bi2(-42);\n     */\n    BigInteger(long n);\n\n    /**\n     * Returns a new BigInteger whose value is the absolute value of this one.\n     */\n    BigInteger abs() const;\n\n    /**\n     * Returns the greatest common divisor of this and the given other big integer.\n     * For example, gcd(24, 16) is 8.\n     */\n    BigInteger gcd(const BigInteger& other) const;\n\n    /**\n     * Returns true if this BigInteger's value is within the range of values\n     * that can be stored as an int.\n     */\n    bool isInt() const;\n\n    /**\n     * Returns true if this BigInteger's value is within the range of values\n     * that can be stored as a long.\n     */\n    bool isLong() const;\n\n    /**\n     * Returns true if this BigInteger represents a negative number < 0.\n     * You could just perform the check yourself by testing whether number > 0,\n     * but this member is faster because it doesn't need to create a temporary\n     * BigInteger instance for doing the comparison.\n     */\n    bool isNegative() const;\n\n    /**\n     * Returns true if this BigInteger represents a non-negative number >= 0.\n     * You could just perform the check yourself by testing whether number > 0,\n     * but this member is faster because it doesn't need to create a temporary\n     * BigInteger instance for doing the comparison.\n     */\n    bool isNonNegative() const;\n\n    /**\n     * Returns true if this BigInteger represents a positive number > 0.\n     * You could just perform the check yourself by testing whether number > 0,\n     * but this member is faster because it doesn't need to create a temporary\n     * BigInteger instance for doing the comparison.\n     */\n    bool isPositive() const;\n\n    /**\n     * Returns whichever is larger between this big integer and the given\n     * other big integer.\n     */\n    const BigInteger& max(const BigInteger& other) const;\n\n    /**\n     * Returns whichever is smaller between this big integer and the given\n     * other big integer.\n     */\n    const BigInteger& min(const BigInteger& other) const;\n\n    /**\n     * Returns a new BigInteger whose value is (this ^^ exp) % m.\n     * @throw ErrorException if exp is negative or if m is 0.\n     */\n    BigInteger modPow(const BigInteger& exp, const BigInteger& m) const;\n\n    /**\n     * Returns a new BigInteger whose value is the value of this BigInteger\n     * raised to the given exponent.\n     * @throw ErrorException if the exponent is negative.\n     */\n    BigInteger pow(long exp) const;\n\n    /**\n     * Returns a new BigInteger whose value is the value of this BigInteger\n     * raised to the given exponent.\n     * @throw ErrorException if the exponent is negative.\n     */\n    BigInteger pow(const BigInteger& exp) const;\n\n    /**\n     * Returns an int representation of this BigInteger, such as\n     * -12345678.\n     * @throw ErrorException if this BigInteger is out of the range of int.\n     */\n    int toInt() const;\n\n    /**\n     * Returns a long representation of this BigInteger, such as\n     * -123456789.\n     * @throw ErrorException if this BigInteger is out of the range of long.\n     */\n    long toLong() const;\n\n    /**\n     * Returns a string representation of this BigInteger, such as\n     * \"-1234567890123456789\".\n     */\n    std::string toString(int radix = 10) const;\n\n    /**\n     * Increases the value of this BigInteger by 1 (prefix).\n     */\n    BigInteger& operator ++(); // prefix\n\n    /**\n     * Increases the value of this BigInteger by 1 (posfix).\n     */\n    BigInteger  operator ++(int); // postfix\n\n    /**\n     * Decreases the value of this BigInteger by 1 (prefix).\n     */\n    BigInteger& operator --(); // prefix\n\n    /**\n     * Decreases the value of this BigInteger by 1 (postfix).\n     */\n    BigInteger  operator --(int); // postfix\n\n    /**\n     * Assigns this BigInteger to store the sum of itself\n     * and the given other BigInteger.\n     */\n    BigInteger& operator +=(const BigInteger& b);\n\n    /**\n     * Assigns this BigInteger to store the result of subtracting\n     * the given other BigInteger from this BigInteger.\n     */\n    BigInteger& operator -=(const BigInteger& b);\n\n    /**\n     * Assigns this BigInteger to store the product of itself\n     * and the given other BigInteger.\n     */\n    BigInteger& operator *=(const BigInteger& b);\n\n    /**\n     * Assigns this BigInteger to store the quotient of dividing\n     * itself by the given other BigInteger.\n     * @throw ErrorException if denominator is 0.\n     * @throw ErrorException if denominator is not within the range of type long.\n     */\n    BigInteger& operator /=(const BigInteger& b);\n\n    /**\n     * Assigns this BigInteger to store the remainder of dividing\n     * itself by the given other BigInteger.\n     * @throw ErrorException if denominator is 0.\n     * @throw ErrorException if denominator is not within the range of type long.\n     */\n    BigInteger& operator %=(const BigInteger& b);\n\n    /**\n     * Sets this big integer to a bitwise AND between this integer and the given other integer,\n     * retaining only bits that are set in both.\n     */\n    BigInteger& operator &=(const BigInteger& b);\n\n    /**\n     * Sets this big integer to a bitwise OR between this integer and the given other integer,\n     * retaining bits that are set in this integer or the other integer or both.\n     */\n    BigInteger& operator |=(const BigInteger& b);\n\n    /**\n     * Sets this big integer to a bitwise XOR between this integer and the given other integer,\n     * retaining bits that are set in this integer or the other integer but not both.\n     */\n    BigInteger& operator ^=(const BigInteger& b);\n\n    /**\n     * Performs a bitwise NOT on this integer,\n     * inverting the values of all of its bits.\n     */\n    BigInteger operator ~() const;\n\n    /**\n     * Performs a logical NOT on this integer,\n     * setting it to 0 if non-zero, or to 1 if zero.\n     */\n    BigInteger operator !() const;\n\n    /**\n     * Sets this BigInteger to store the same value as the given other big integer.\n     */\n    BigInteger& operator =(const BigInteger& other);\n\n    /**\n     * Unary negation; returns a new BigInteger that is\n     * the negative of this BigInteger.\n     */\n    BigInteger operator -() const;\n\n    /**\n     * Returns a new big integer whose value is equal to the value of\n     * this big integer bit-shifted left by the given number of bits.\n     * Equivalent to multiplying by 2 ^ shift.\n     */\n    BigInteger operator <<(unsigned int shift) const;\n\n    /**\n     * Modifies this big integer to be bit-shifted left by the given number of bits.\n     * Equivalent to multiplying by 2 ^ shift.\n     */\n    BigInteger& operator <<=(unsigned int shift);\n\n    /**\n     * Returns a new big integer whose value is equal to the value of\n     * this big integer bit-shifted right by the given number of bits.\n     * Equivalent to dividing by 2 ^ shift.\n     */\n    BigInteger operator >>(unsigned int shift) const;\n\n    /**\n     * Modifies this big integer to be bit-shifted right by the given number of bits.\n     * Equivalent to dividing by 2 ^ shift.\n     */\n    BigInteger& operator >>=(unsigned int shift);\n\n    /**\n     * Converts this BigInteger into a boolean value.\n     * The value will be false if this BigInteger stores 0, or true otherwise.\n     */\n    explicit operator bool() const;\n\n    /**\n     * Converts this BigInteger into a double.\n     * @throw ErrorException if this big integer is not within the range of type long.\n     */\n    // explicit operator double() const;\n\n    /**\n     * Converts this BigInteger into a float.\n     * @throw ErrorException if this big integer is not within the range of type long.\n     */\n    // explicit operator float() const;\n\n    /**\n     * Converts this BigInteger into an integer.\n     * @throw ErrorException if this big integer is not within the range of type int.\n     */\n    explicit operator int() const;\n\n    /**\n     * Converts this BigInteger into a long.\n     * @throw ErrorException if this big integer is not within the range of type long.\n     */\n    explicit operator long() const;\n\n    /**\n     * Converts this BigInteger into a string.\n     */\n    explicit operator std::string() const;\n\nprivate:\n    /*\n     * Constructs a new big integer set to the given value,\n     * with optional sign (true=negative, false=positive).\n     *\n     * Example:\n     * BigInteger bi(\"1234567890123456789\", true);   // negative\n     */\n    BigInteger(const std::string& s, bool sin); // \"string\" constructor\n\n    // add two big integers as string and return result; used by operator +\n    static std::string add(const std::string& number1, const std::string& number2);\n\n    // checks that the given string is in the proper format that it could be\n    // interpreted as an integer in the given base; if not, issues an error()\n    static void checkStringIsNumeric(const std::string& s, int radix = 10);\n\n    // TODO: make work for big integer division\n    // divide n by den and return result; used by operator /\n    static std::pair<std::string, long> divide(const std::string& n, long den);\n    static std::pair<BigInteger, BigInteger> divideBig(const BigInteger& numer, const BigInteger& denom);\n\n    // return true if two BigIntegers are equal; used by operator ==\n    static bool equals(const BigInteger& n1, const BigInteger& n2);\n\n    // checks for -0 case and changes to 0\n    void fixNegativeZero();\n\n    /*\n     * Returns the number stored by this BigInteger as a string.\n     * If this BigInteger represents a negative number, the sign will be omitted.\n     * Example: \"1234567890123456789\"\n     */\n    const std::string& getNumber() const; // retrieves the number\n\n    /*\n     * Returns the sign of this BigInteger; true if negative, false if not.\n     */\n    bool getSign() const;\n\n    // return true if n1 > n2; used by operator >\n    static bool greater(const BigInteger& n1, const BigInteger& n2);\n\n    // return true if n1 < n2; used by operator <\n    static bool less(const BigInteger& n1, const BigInteger& n2);\n\n    // multiply two big integers as string and return result; used by operator *\n    static std::string multiply(const std::string& n1, const std::string& n2);\n\n    // removes leading 0s except one from given number\n    static std::string removeLeadingZeros(const std::string& s);\n\n    /*\n     * Sets the number and the sign stored by this BigInteger.\n     */\n    void setValue(const std::string& s, int radix = 10);\n\n    /*\n     * Sets the number stored by this BigInteger.\n     */\n    void setNumber(const std::string& s, int radix = 10);\n\n    /*\n     * Sets the sign stored by this BigInteger.\n     * The value true means negative; false means positive.\n     */\n    void setSign(bool s);\n\n    // e.g. \"0xfff\" => \"fff\"\n    static std::string stripNumberPrefix(const std::string& num, int radix = 10);\n\n    // subtract num2 from num1 as string and return result; used by operator -\n    static std::string subtract(const std::string& number1, const std::string& number2);\n\n    // convert a string value into a long\n    static long toLong(const std::string& s);\n\n    // convert a long value to a string\n    static std::string toString(long n);\n\n    // TODO: remove?\n    BigInteger& operator [](int n);\n\n    friend int hashCode(const BigInteger& b);\n    friend BigInteger operator +(const BigInteger& b1, const BigInteger& b2);\n    friend BigInteger operator -(const BigInteger& b1, const BigInteger& b2);\n    friend BigInteger operator *(const BigInteger& b1, const BigInteger& b2);\n    friend BigInteger operator /(const BigInteger& b1, const BigInteger& b2);\n    friend BigInteger operator %(const BigInteger& b1, const BigInteger& b2);\n    friend BigInteger operator &(const BigInteger& b1, const BigInteger& b2);\n    friend BigInteger operator |(const BigInteger& b1, const BigInteger& b2);\n    friend BigInteger operator ^(const BigInteger& b1, const BigInteger& b2);\n    friend bool operator ==(const BigInteger& b1, const BigInteger& b2);\n    friend bool operator !=(const BigInteger& b1, const BigInteger& b2);\n    friend bool operator >(const BigInteger& b1, const BigInteger& b2);\n    friend bool operator <(const BigInteger& b1, const BigInteger& b2);\n    friend bool operator >=(const BigInteger& b1, const BigInteger& b2);\n    friend bool operator <=(const BigInteger& b1, const BigInteger& b2);\n    friend std::istream& operator >>(std::istream& input, BigInteger& b);\n    friend std::ostream& operator <<(std::ostream& out, const BigInteger& b);\n\n    // member variables\n    std::string number;   // string representation of this big integer in base-10, e.g. \"1234567890123456789\"\n    bool sign;            // true if number is negative\n};\n\n/**\n * Returns a string representation of the given big integer.\n * Equivalent to calling bi.toString().\n * Provided for consistency with the other lib functions like integerToString.\n */\nstd::string bigIntegerToString(const BigInteger& bi, int radix = 10);\n\n/**\n * Returns an integer hash code for the given BigInteger.\n */\nint hashCode(const BigInteger& b);\n\n/**\n * Returns a new BigInteger that is the sum of this BigInteger\n * and the given other BigInteger.\n */\nBigInteger operator +(const BigInteger& b1, const BigInteger& b2);\n\n/**\n * Returns a new BigInteger that is the result of subtracting\n * the given other BigInteger from this BigInteger.\n */\nBigInteger operator -(const BigInteger& b1, const BigInteger& b2);\n\n/**\n * Returns a new BigInteger that is the product of this BigInteger\n * and the given other BigInteger.\n */\nBigInteger operator *(const BigInteger& b1, const BigInteger& b2);\n\n/**\n * Returns a new BigInteger that is the quotient of dividing\n * this BigInteger by the given other BigInteger.\n * @throw ErrorException if denominator is 0.\n * @throw ErrorException if denominator is not within the range of type long.\n */\nBigInteger operator /(const BigInteger& b1, const BigInteger& b2);\n\n/**\n * Returns a new BigInteger that is the remainder of dividing\n * this BigInteger by the given other BigInteger.\n * @throw ErrorException if denominator is 0.\n * @throw ErrorException if denominator is not within the range of type long.\n */\nBigInteger operator %(const BigInteger& b1, const BigInteger& b2);\n\n/**\n * Performs a bitwise AND between this integer and the given other integer,\n * retaining only bits that are set in both.\n */\nBigInteger operator &(const BigInteger& b1, const BigInteger& b2);\n\n/**\n * Performs a bitwise OR between this integer and the given other integer,\n * retaining bits that are set in this integer or the other integer or both.\n */\nBigInteger operator |(const BigInteger& b1, const BigInteger& b2);\n\n/**\n * Performs a bitwise XOR between this integer and the given other integer,\n * retaining bits that are set in this integer or the other integer but not both.\n */\nBigInteger operator ^(const BigInteger& b1, const BigInteger& b2);\n\n/**\n * Returns true if two BigIntegers store the same value.\n */\nbool operator ==(const BigInteger& b1, const BigInteger& b2);\n\n/**\n * Returns true if two BigIntegers do not store the same value.\n */\nbool operator !=(const BigInteger& b1, const BigInteger& b2);\n\n/**\n * Returns true if this BigInteger stores a larger value than the given other one.\n */\nbool operator >(const BigInteger& b1, const BigInteger& b2);\n\n/**\n * Returns true if this BigInteger stores a smaller value than the given other one.\n */\nbool operator <(const BigInteger& b1, const BigInteger& b2);\n\n/**\n * Returns true if this BigInteger stores a value that is\n * greater than or equal to the given other one.\n */\nbool operator >=(const BigInteger& b1, const BigInteger& b2);\n\n/**\n * Returns true if this BigInteger stores a value that is\n * less than or equal to the given other one.\n */\nbool operator <=(const BigInteger& b1, const BigInteger& b2);\n\n/**\n * Reads a BigInteger from the given input stream.\n */\nstd::istream& operator >>(std::istream& input, BigInteger& b);\n\n/**\n * Writes this BigInteger to the given output stream.\n */\nstd::ostream& operator <<(std::ostream& out, const BigInteger& b);\n\n/*\n * Free-standing arithmetic operators between int/long and BigInteger.\n * (Commenting these out because when present they seem to also match double,\n * producing bad results.)\n */\n//BigInteger operator +(long n, const BigInteger& b);\n//BigInteger operator -(long n, const BigInteger& b);\n//BigInteger operator *(long n, const BigInteger& b);\n//BigInteger operator /(long n, const BigInteger& b);\n//BigInteger operator %(long n, const BigInteger& b);\n\n// aliases for BigInteger for those who like abbreviations and lowercase\ntypedef BigInteger BigInt;\ntypedef BigInteger bigint;\n\n#endif // _biginteger_h\n\n/////////////////////// END code extracted from StanfordCPPLib/util/biginteger.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/util/bigfloat.h ///////////////////////\n///// BEGIN BASE.H\n//#pragma once\n\n//#ifndef INTERNAL_INCLUDE\n//\n//#endif // INTERNAL_INCLUDE\n\n//#include <stddef.h>\n//#include <stdio.h>\n//#include <stdarg.h>\n//#include <vector>\n//#include <map>\n//#include <stdexcept>\n//#include <string>\n//#include <sstream>\n\n//#ifdef _MSC_VER\n//# define INLINE __forceinline\n//  typedef  unsigned __int64 u8;\n//  typedef  unsigned __int32 u4;\n//  typedef  unsigned __int16 u2;\n//  typedef  unsigned __int8  u1;\n//  typedef  __int64 s8;\n//  typedef  __int32 s4;\n//  typedef  __int16 s2;\n//  typedef  __int8  s1;\n//#else\n//# include <stdint.h>\n//# define INLINE inline\n//  typedef  uint64_t  u8;\n//  typedef  uint32_t  u4;\n//  typedef  uint16_t  u2;\n//  typedef  uint8_t   u1;\n//  typedef  int64_t  s8;\n//  typedef  int32_t  s4;\n//  typedef  int16_t  s2;\n//  typedef  int8_t   s1;\n//#endif\n\n//class CosmosException : public std::exception\n//{\n//public:\n//    CosmosException(const char* m) : _msg(m) {}\n//    CosmosException(const std::string& m) : _msg(m) {}\n//    virtual ~CosmosException() throw() {}\n//    virtual const char* what() const throw()\n//    {\n//        return _msg.c_str();\n//    }\n//protected:\n//    std::string _msg;\n//};\n\n/*#define ASSERT(condition, ...) do { \\\n  if (!(condition)) Assert(__LINE__, __FILE__, #condition, ##__VA_ARGS__); \\\n} while(0) */\n\n/*#define ASSERTFG(f,g) do { \\\n  double fr = (f); double gr = (g); double diff = (fr-gr); \\\n  if (diff > 1.0e-10 || diff < -1.0e-10) \\\n  Assert(__LINE__, __FILE__, #f \",\" #g, \"%f, %f, %f\", fr, gr, diff); \\\n} while(0) */\n\n//static void Assert(\n//    int line,\n//    const char* filename,\n//    const char* condition)\n//{\n//\tstatic const int bufSize = 4000;\n//    char y[bufSize];\n//    sprintf(y, \"line=[%d], file=[%s], condition=[%s]\",\n//            line, filename, condition);\n//    throw CosmosException(y);\n//}\n\n//static void Assert(\n//    int line,\n//    const char* filename,\n//    const char* condition,\n//    const char* fmt,\n//    ...)\n//{\n//\tstatic const int bufSize = 4000;\n//    char x[bufSize];\n//    char y[bufSize];\n//    va_list args;\n//    va_start(args, fmt);\n//    vsprintf(x, fmt, args);\n//    va_end(args);\n//    sprintf(y, \"line=[%d], file=[%s], condition=[%s], %s\",\n//            line, filename, condition, x);\n//    throw CosmosException(y);\n//}\n\n///// END BASE.H\n\n\n\n\n\n\n////#pragma once\n////\n\n\n//// This is not fast, but it has good accuracy.\n//// I need this because orbital problems have a lot of nth-degree\n//// polynomial approximations, and the coefficients of those polynomial\n//// approximations are things like 48471792742212/237758976000.  The only\n//// way to get the definitions of coefficients right is to do Gaussian\n//// elimination on at least n equations with n unknowns, and a precision\n//// about twice as great as the coefficients I want to end up with,\n//// followed by continued fractions on the result to find the proper\n//// fractional representation.\n//class BigFloat\n//{\n//public:\n//    BigFloat() { Zero(); }\n//    BigFloat(const BigFloat& n) { Copy(n); }\n//    BigFloat(s8 n) { FromInteger(n); }\n//    BigFloat(s8 n, s8 exponent) { FromInteger(n, exponent); }\n//    ~BigFloat() {}\n\n//    // translation\n//    BigFloat& FromInteger(s8 num, s8 exponent=0);\n//    s8 ToInteger() const;  // it will truncate, but not overflow\n//    static s8 RoundInteger(s8 value);  // round an s8 to right precision\n//    double ToDouble() const;\n//    bool IsNegative() const { return _isNegative; }\n//    s8 ToExponent() const { return _exponent; }\n//    u8 ToDigits() const;  // return digits filling an integer\n//    void ToFraction(BigFloat& num, BigFloat& denom, int iter=1024) const;\n//    void Print() const;\n//    void PrintHex() const;\n//    void PrintContinuedFraction() const;\n//    void PrintDouble() const;\n\n//    // arithmetic\n//    BigFloat& PZero()\n//    {\n//        _exponent = c_zeroExponent;\n//        _length = 0;\n//        _isNegative = false;\n//        return *this;\n//    }\n//    BigFloat& NZero()\n//    {\n//        _exponent = c_zeroExponent;\n//        _length = 0;\n//        _isNegative = true;\n//        return *this;\n//    }\n//    BigFloat& Zero( bool neg = false) { return neg ? NZero() : PZero(); }\n//    BigFloat& PInf()\n//    {\n//        _exponent = c_zeroExponent;\n//        _length = 1;\n//        _isNegative = false;\n//        return *this;\n//    }\n//    BigFloat& NInf()\n//    {\n//        _exponent = c_zeroExponent;\n//        _length = 1;\n//        _isNegative = true;\n//        return *this;\n//    }\n//    BigFloat& Inf( bool negative = false) { return negative ? NInf() : PInf(); }\n//    BigFloat& NaN()\n//    {\n//        _exponent = c_zeroExponent;\n//        _length = 2;\n//        _isNegative = false;\n//        return *this;\n//    }\n\n//    BigFloat& Copy(const BigFloat& n);\n//    BigFloat& Negate();\n\n//    // round to c_digits digits\n//    //   carry=true: there should be an additional top digit of 1\n//    //   previousDigit: what _d[c_digits] would have been, or 0\n//    BigFloat& Round(bool carry, s8 previousDigit);\n//    BigFloat& Round(u8 previousDigit);\n\n//    // truncate to the nearest integer, towards zero\n//    BigFloat& Trunc();\n\n//    // -1 if |this|<|n|, 0 if |this|==|n|, 1 if |this|>|n|\n//    int CompareAbsolute(const BigFloat& n) const;\n\n\n//    // -1 if this<n, 0 if this==n, 1 if this>n\n//    int Compare(const BigFloat& n) const;\n\n//    bool IsZero() const\n//    {\n//        return\n//            _exponent == c_zeroExponent &&\n//            _length == 0;\n//    }\n//    bool IsPZero() const\n//    {\n//        return\n//            _exponent == c_zeroExponent &&\n//            _length == 0 &&\n//            _isNegative == false;\n//    }\n//    bool IsNZero() const\n//    {\n//        return\n//            _exponent == c_zeroExponent &&\n//            _length == 0 &&\n//            _isNegative == true;\n//    }\n//    bool IsInf() const\n//    {\n//        return\n//            _exponent == c_zeroExponent &&\n//            _length == 1;\n//    }\n//    bool IsPInf() const\n//    {\n//        return\n//            _exponent == c_zeroExponent &&\n//            _length == 1 &&\n//            _isNegative == false;\n//    }\n//    bool IsNInf() const\n//    {\n//        return\n//            _exponent == c_zeroExponent &&\n//            _length == 1 &&\n//            _isNegative == true;\n//    }\n//    bool IsNaN() const\n//    {\n//        return\n//            _exponent == c_zeroExponent &&\n//            _length == 2;\n//    }\n//    bool IsSpecial() const\n//    {\n//        return _exponent == c_zeroExponent;\n//    }\n\n//    BigFloat& Add(const BigFloat& n) { return AddOrSubtract(n, false); }\n//    BigFloat& Sub(const BigFloat& n) { return AddOrSubtract(n, true); }\n//    BigFloat& Mult(const BigFloat& n); // x => x*n\n//    BigFloat& Div(const BigFloat& n); // x => x/n\n//    BigFloat& Invert(); // x => 1/x\n//    BigFloat& Sqrt(); // x => positive square root of x\n//    BigFloat& Cos(); // x => cosine of x (x in radians)\n//    BigFloat& Sin(); // x => sine of x (x in radians)\n//    BigFloat& Sec(); // x => secant of x (x in radians)\n//    BigFloat& Csc(); // x => cosecant of x (x in radians)\n//    BigFloat& Tan(); // x => tangent of x (x in radians)\n//    BigFloat& Exp(); // x => e to the xth power\n//    BigFloat& ASin(); // x => arcsin of x (-1 => -pi/2, 1 => pi/2)\n//    BigFloat& ACos(); // x => arccos of x (-1 => pi, 1 => 0)\n//    BigFloat& ATan(); // x => arctan of x (-inf => -pi/2, inf => pi/2)\n//    BigFloat& Ln();  // replaces x with the natural log of x\n//    BigFloat& Log(const BigFloat& n);  // x => natural log of n base x\n//    BigFloat& Power(const BigFloat& n); // replaces x with x to the nth\n//    BigFloat& Rand(); // not impl: uniformly distributed value in [0,1)\n//    BigFloat& RandNorm(); // not impl: pseudorandom normally-distributed value\n\n//    // constants\n//    static const BigFloat& Pi();  // length of unit circle, 3.14159...\n//    static const BigFloat& E();  // the natural base for exponents, 2.71828...\n//    static const BigFloat& ConstZero();\n//    static const BigFloat& ConstOne();\n//    static const BigFloat& ConstMinusOne();\n\n//    // variations where arguments are signed integers\n//    int Compare(s8 n, s8 exponent=0);\n//    BigFloat& Add(s8 n, s8 exponent=0);\n//    BigFloat& Sub(s8 n, s8 exponent=0);\n//    BigFloat& Mult(s8 n, s8 exponent=0);\n//    BigFloat& Div(s8 n, s8 exponent=0);\n//    BigFloat& Power(s8 n, s8 exponent=0);  // not implemented\n\n//    // Given an m*(m+1) matrix of BigFloat where the last col means =const,\n//    // solve, and fill m[i][m] with the value for the ith variable.\n//    static void GaussianElimination(BigFloat** m, s8 rows, s8 cols);\n    \n//    // assure that it works as expected\n//    static void UnitTest();\n        \n//private:\n//    // First, this => this mod 2pi.\n//    // Return the quadrant (int)(this / (pi/4)), value 0..7\n//    // this => (this + pi/4) mod pi/2 (positive), - pi/4.\n//    // That means a negative value for odd quadrants and positive for even.\n//    s8 Quadrant();\n//    BigFloat& PartialSin();  // sin, but only for -pi/4 to pi/4\n//    BigFloat& PartialCos();  // cos, but only for -pi/4 to pi/4\n    \n//    // this+n, or this-n if minus==true\n//    BigFloat& AddOrSubtract(const BigFloat& n, bool minus);\n\n//    // test whether this is the right representation of this integer\n//    static void TestInteger(const BigFloat& n, s8 x);\n\n//    // test addition and subtraction of two integers\n//    static void TestAdd(s8 x, s8 y);\n\n//    // test multiplication of two numbers\n//    static void TestMult(s8 x, s8 ex, s8 y, s8 ey);\n\n//    // test inverse of one number\n//    static void TestInverse(s8 x, s8 ex);\n\n//    // test sqrt of one number\n//    static void TestSqrt(s8 x, s8 ex);\n\n//    // representation: c_digits digits, each with range 0..c_range-1\n//    // _d[0] is the most significant digit\n//#ifdef BIGFLOAT_TEST\n//    static const s8 c_digits = 4;\n//    static const s8 c_log = 2;\n//    static const s8 c_zeroExponent = -(((s8)1) << 4);\n//#else\n//    static const s8 c_digits = 10;\n//    static const s8 c_log = 32;\n\n//    // -1<<63 is a signed value, but 1<<63 is not, so 1<<62 then\n//    static const s8 c_zeroExponent = -(((s8)1) << 62);\n//#endif\n//    static const s8 c_minExponent = c_zeroExponent + c_digits;\n//    static const s8 c_maxExponent =  -c_zeroExponent;\n//    static const u8 c_range = (((u8)1)<<c_log);\n\n//    s8 _exponent;\n//    u4 _d[c_digits];\n//    bool _isNegative;\n//    u2 _length; // number of digits used\n//};\n\n//class BigFloatCache\n//{\n//public:\n//    static bool _isInitialized;\n//    static BigFloat _zero;\n//    static BigFloat _e;\n//    static BigFloat *_ePower; // [i] is e^^(2^^i), i in -6..ePowerLen-1\n//    static BigFloat *_eInvPower; // [i] is e^^-(2^^i), i in -6..ePowerLen-1\n//    static s8 _ePowerLen;\n//    static const s8 _ePowerNeg = -7;\n//    static BigFloat _pi;\n//    static BigFloat _twoPi;\n//    static BigFloat _overTwoPi;\n//    static BigFloat _piOverTwo;\n//    static BigFloat _threePiOverTwo;\n//    static BigFloat _piOverFour;\n//    static s8 _overFactLen;\n//    static BigFloat* _overFact;\n\n//    // fill in _pi, _e, and various cached arrays\n//    static void Init();\n//};\n\n/////////////////////// END code extracted from StanfordCPPLib/util/bigfloat.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/private/version.h ///////////////////////\n/*\n * File: version.h\n * ---------------\n * This file contains declarations of the version number of the\n * Stanford C++ library.\n *\n * @author Marty Stepp\n * @version 2019/10/12\n */\n\n#ifndef _version_h\n#define _version_h\n\n#include <string>\n\n/*\n * Current version of the Stanford C++ library.\n * NOTE: This value and the other date values here all\n *       *MUST* be zero-padded to YYYY/MM/DD format;\n *       if month or day is < 10, insert a preceding 0\n */\n#define STANFORD_CPP_LIB_VERSION \"2019/10/12\"\n\n/*\n * Minimum version of your IDE's project that is supported.\n * platform.cpp checks this and exits if project .pro is older than\n * this to avoid incompatible versions.\n *\n * NOTE: This value and the other date values here all\n *       *MUST* be zero-padded to YYYY/MM/DD format;\n *       if month or day is < 10, insert a preceding 0\n */\n#define STANFORD_CPP_PROJECT_MINIMUM_VERSION \"2019/04/22\"\n\n/*\n * URL at which documentation about the libraries can be found.\n */\n#define STANFORD_CPP_LIB_DOCS_URL \"http://stanford.edu/~stepp/cppdoc/\"\n\n\nnamespace version {\nvoid ensureJavaBackEndVersion(std::string minVersion = \"\") /* deprecated */;\nvoid ensureProjectVersion(std::string minVersion = \"\");\nstd::string getCppLibraryDocsUrl();\nstd::string getCppLibraryVersion();\nstd::string getJavaBackEndVersion() /* deprecated */;\nstd::string getProjectVersion();\n} // namespace version\n\n#endif // _version_h\n\n/////////////////////// END code extracted from StanfordCPPLib/private/version.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/util/regexpr.h ///////////////////////\n/*\n * File: regexpr.h\n * ---------------\n * This file exports functions for performing regular expression operations\n * on C++ strings.  It will be unnecessary once the C++11 regex library\n * is widely available, but as of this writing the regex library is not\n * supported on gcc and other major C++ compilers.\n * \n * The regular expression functions are implemented by sending the strings and\n * regexes to the Java Back-End to run the operations in Java.  This is a bit\n * kludgy but we don't want to write our own regex parser from scratch.\n * Using Java's is a compromise for now.\n *\n * @author Marty Stepp\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2018/09/20\n * - added Qt version checking around some regex functions for compatibility\n * @version 2014/10/14\n * - removed regexMatchCountWithLines for simplicity\n * @since 2014/03/01\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _regexpr_h\n#define _regexpr_h\n\n#include <string>\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\n/**\n * Returns true if the given string s matches the given regular expression\n * as a substring.\n * For an exact match instead, put \"^\" and \"$\" in your regex as start/end anchors.\n */\nbool regexMatch(const std::string& s, const std::string& regexp);\n\n/**\n * Returns the number of times the given regular expression is found inside\n * the given string s.\n * Returns 0 if there are no matches for the regexp.\n */\nint regexMatchCount(const std::string& s, const std::string& regexp);\n\n/**\n * Finds all matches of the given regular expression in the given string s\n * and fills 'linesOut' with a comma-separated string representing the line\n * numbers within the string at which the matches occur, such as \"2,14,27,36\".\n * This is mainly useful for grading programs.\n * Returns the number of times the given regular expression is found inside\n * the given string s.  Returns 0 if there are no matches for the regexp.\n */\nint regexMatchCountWithLines(const std::string& s, const std::string& regexp,\n                             std::string& linesOut);\n\n/**\n * Finds all matches of the given regular expression in the given string s\n * and fills 'linesOut' with the line numbers within the string at which the\n * matches occur, such as [2, 14, 27, 36].\n * This is mainly useful for grading programs.\n * Returns the number of times the given regular expression is found inside\n * the given string s.  Returns 0 if there are no matches for the regexp.\n */\nvoid regexMatchCountWithLines(const std::string& s, const std::string& regexp,\n                              Vector<int>& linesOut);\n\n/**\n * Replaces occurrences of the given regular expression in s with the given\n * replacement text, and returns the resulting string.\n * If limit >  0 is passed, replaces that many occurrences of the regex.\n * If limit <= 0 is passed (or omitted), all occurrences are replaced.\n */\nstd::string regexReplace(const std::string& s, const std::string& regexp,\n                         const std::string& replacement, int limit = -1);\n\n#endif // _regexpr_h\n\n/////////////////////// END code extracted from StanfordCPPLib/util/regexpr.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/system/call_stack.h ///////////////////////\n/*\n * Copyright (c) 2009, Fredrik Orderud\n * License: BSD licence (http://www.opensource.org/licenses/bsd-license.php)\n *\n * @author Marty Stepp (made changes to F.Orderud version)\n * @version 2018/10/22\n * - bug fix for STL vector vs Stanford Vector\n * @version 2018/10/18\n * - added addr2line_functionName to resolve some function names not in backtrace\n * @version 2016/12/01\n * - bug fixes for call stack line number retrieval\n * - slight refactor of entry class\n * @version 2015/07/05\n * - replaced pragma once with ifndef/define for greater compatibility\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _call_stack_h\n#define _call_stack_h\n#include <string>\n#include <sstream>\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\nnamespace stacktrace {\n\nint execAndCapture(std::string cmd, std::string& output);\nint addr2line(void* addr, std::string& line);\nint addr2line_all(Vector<void*> addrsVector, std::string& output);\nint addr2line_all(void** addrs, int length, std::string& output);\nstd::string addr2line_clean(std::string line);\nstd::string addr2line_functionName(std::string line);\n\n/*\n * Function to get/set a fake call stack pointer for use in printing a stack trace.\n * Called on Windows only after a signal / SEH handler is invoked to get a stack pointer.\n */\nvoid*& fakeCallStackPointer();\n\n/** Call-stack entry datastructure. */\nstruct entry {\npublic:\n    /** Default constructor that clears all fields. */\n    entry() : line(0), address(nullptr) {\n        // empty\n    }\n\n    std::string file;       // filename\n    size_t      line;       // line number\n    std::string lineStr;    // line number string (not always set)\n    std::string function;   // name of function or method\n    void* address;          // memory address of stack pointer (raw)\n    void* address2;         // memory address of stack pointer (from dladdr; data segment offset subtracted)\n\n    /** Serialize entry into a text string. */\n    std::string toString() const {\n        std::ostringstream os;\n        os << \"file=\\\"\" << file << \"\\\"\";\n        if (line > 0) {\n            os << \" (line=\" << line << \")\";\n        } else if (!lineStr.empty()) {\n            os << \" (lineStr=\\\"\" << lineStr << \"\\\")\";\n        }\n        os << \" function=\\\"\" << function << \"\\\"\";\n        return os.str();\n    }\n};\n\nstd::ostream& operator <<(std::ostream& out, const entry& ent);\n\n/** Stack-trace base class, for retrieving the current call-stack. */\nclass call_stack {\npublic:\n    /** Stack-trace consructor.\n     \\param num_discard - number of stack entries to discard at the top. */\n    call_stack(const size_t num_discard = 0);\n\n    virtual ~call_stack() throw();\n\n    /** Serializes the entire call-stack into a text string. */\n    std::string to_string() const {\n        std::ostringstream os;\n        for (int i = 0; i < stack.size(); i++)\n            os << stack[i].toString() << std::endl;\n        return os.str();\n    }\n\n    /** Call stack. */\n    Vector<entry> stack;\n};\n\n} // namespace stacktrace\n\n#endif // _call_stack_h\n\n/////////////////////// END code extracted from StanfordCPPLib/system/call_stack.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/util/timer.h ///////////////////////\n/*\n * File: timer.h\n * -------------\n * This file exports a Timer class that is useful for measuring the elapsed\n * time of a program in milliseconds over a given interval.\n *\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _timer_h\n#define _timer_h\n\n/**\n * A Timer object is useful for measuring the elapsed\n * time of a program in milliseconds over a given interval.\n * Usage example:\n *\n *<pre>\n * Timer tim;\n * tim.start();\n * ... code that takes a while ...\n * tim.stop();\n * cout << \"That took \" << tim.elapsed() << \"ms.\" << endl;\n *</pre>\n */\nclass Timer {\npublic:\n    /**\n     * Constructs a new timer.\n     * If an optional bool parameter of true is passed, also starts the timer.\n     */\n    Timer(bool autostart = false);\n\n    /**\n     * Returns the number of milliseconds that have elapsed since this timer\n     * was started.\n     * Returns 0 if the timer was never started.\n     */\n    long elapsed() const;\n\n    /**\n     * Returns true if the timer has been started.\n     */\n    bool isStarted() const;\n\n    /**\n     * Starts the timer.\n     * If the timer was already started, restarts it such that its 'elapsed'\n     * time will be 0 at the moment of the call.\n     */\n    void start();\n\n    /**\n     * Stops the timer and returns the number of elapsed milliseconds.\n     * If the timer was never started, 0 ms will be considered to have elapsed.\n     */\n    long stop();\n\n    /**\n     * A static utility function for getting the current time as a Unix\n     * timestamp of milliseconds since the epoch.\n     */\n    static long currentTimeMS();\n\nprivate:\n    // instance variables\n    long _startMS;\n    long _stopMS;\n    bool _isStarted;\n};\n\n#endif // _timer_h\n\n/////////////////////// END code extracted from StanfordCPPLib/util/timer.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib/util/note.h ///////////////////////\n/*\n * File: note.h\n * ------------\n * This file defines a class named Note that can play musical notes.\n *\n * @author Marty Stepp\n * @version 2016/09/26\n * - initial version\n * @since 2016/09/26\n */\n\n\n\n#ifndef INTERNAL_INCLUDE\n\n#endif // INTERNAL_INCLUDE\n\n#ifndef _note_h\n#define _note_h\n\n#include <iostream>\n#include <string>\n\n/**\n * Constant for the minimum legal value that an octave can have.\n */\n#define OCTAVE_MIN 1\n\n/**\n * Constant for the maximum legal value that an octave can have.\n */\n#define OCTAVE_MAX 10\n\n/**\n * Should Note objects print a message to the console as they play?\n */\n#define NOTE_DEBUG false\n\n/**\n * Each Note object represents a musical note or rest.\n * A Note encapsulates a pitch (A-G), a duration in seconds, an octave,\n * an accidental (sharp, flat, or natural), and a flag of whether it is the\n * start/end of a repeated section or not.\n * A song or melody can be thought of as a list or array of Note objects.\n */\nclass Note {\npublic:\n    /**\n     * Represents a musical pitch from A-G or rest.\n     */\n    enum Pitch {A, B, C, D, E, F, G, R};\n\n    /**\n     * Represents a musical accidental: sharp, natural, or flat.\n     */\n    enum Accidental {SHARP, NATURAL, FLAT};\n\n    /**\n     * Constructs a Note with the information contained in the given line.\n     * @param line a line of input data such as \"0.2 C 4 NATURAL false\" or \"0.4 R false\" for a rest\n     * @throws an error if line is empty.\n     * @throws an error if duration is negative or octave is not\n     *         between OCTAVE_MIN and OCTAVE_MAX inclusive.\n     */\n    Note(std::string line);\n\n    /**\n     * Constructs a Note with the given information.\n     * @param duration Note's duration in seconds.\n     * @param pitch Note's pitch from A through G, or R for a rest.\n     * @param octave Note's octave from OCTAVE_MIN through OCTAVE_MAX inclusive.\n     * @param accidental Note's accidental from SHARP, FLAT, or NATURAL.\n     * @param repeat true if this note starts/ends a repeated section.\n     * @throws an error if any value passed is illegal.\n     */\n    Note(double duration = 0.0, Pitch pitch = R, int octave = OCTAVE_MIN, Accidental accidental = NATURAL, bool repeat = false);\n\n    /**\n     * Returns true if note2 has the same state as this Note object; otherwise false.\n     * @param o the object to compare against\n     */\n    bool equals(const Note& note2) const;\n\n    /**\n     * Returns this Note's accidental value of SHARP, FLAT, or NATURAL.\n     * The accidental value is meaningless for a rest; this method will\n     * return NATURAL by default if called on a rest.\n     * @return this Note's accidental value of SHARP, FLAT, or NATURAL.\n     */\n    Accidental getAccidental() const;\n\n    /**\n     * Returns this Note's duration in seconds.\n     * @return this Note's duration in seconds.\n     */\n    double getDuration() const;\n\n    /**\n     * Returns this Note's octave.\n     * The octave value is meaningless for a rest; this method will return\n     * OCTAVE_MIN + 1 by default if called on a rest.\n     * @return this Note's octave from OCTAVE_MIN to OCTAVE_MAX.\n     */\n    int getOctave() const;\n\n    /**\n     * Returns this Note's pitch value of A-G or R for a rest.\n     * @return this Note's pitch value of A-G or R for a rest.\n     */\n    Pitch getPitch() const;\n\n    /**\n     * Returns true if this Note is the start or end of a repeated section.\n     * @return true if this Note is the start or end of a repeated section,\n     *         otherwise false.\n     */\n    bool isRepeat() const;\n\n    /**\n     * Returns true if this Note is a rest.  Equivalent to checking whether\n     * this note's pitch is Pitch.R.  Provided for convenience.\n     * @return true if this Note is a rest, otherwise false.\n     */\n    bool isRest() const;\n\n    /**\n     * Plays this note through the underlying audio system.\n     * Also may print a message to the system console for debugging.\n     * If the audio system is muted or paused, the note may not play.\n     */\n    void play() const;\n\n    /**\n     * Sets this Note's accidental value to be the given value: SHARP, FLAT, or NATURAL.\n     * The accidental value is meaningless for a rest, but the Note object still\n     * maintains an accidental value internally (initially NATURAL)\n     * which is ignored.\n     * @param accidental Note's accidental from SHARP, FLAT, or NATURAL.\n     * @throws an error if the accidental value passed is illegal.\n     */\n    void setAccidental(Accidental accidental);\n\n    /**\n     * Sets this Note's duration in seconds to be the given value.\n     * @param duration Note's duration in seconds.\n     * @throws an error if duration is negative.\n     */\n    void setDuration(double duration);\n\n    /**\n     * Sets this Note's octave to be the given value.\n     * The octave value is meaningless for a rest, but the Note object still\n     * maintains an octave value internally (initially OCTAVE_MIN + 1)\n     * which is ignored.\n     * @param octave Note's octave from OCTAVE_MIN through OCTAVE_MAX inclusive.\n     * @throws an error if octave is not between OCTAVE_MIN and OCTAVE_MAX inclusive.\n     */\n    void setOctave(int octave);\n\n    /**\n     * Sets this Note's pitch to be the given value.\n     * @param pitch Note's pitch from A through G, or R for a rest.\n     * @throws an error if pitch is invalid.\n     */\n    void setPitch(Pitch pitch);\n\n    /**\n     * Sets this Note's repeat flag to be the given value.\n     * @param repeat true to indicate that this note is the start/end of a\n     *               repeated section, or false if not.\n     */\n    void setRepeat(bool repeat);\n\n    /**\n     * Returns a string representation of this note.\n     * @return A string such as \"0.4 C 5 NATURAL false\".\n     */\n    std::string toString() const;\n\nprivate:\n    // member variables (a.k.a. instance variables; fields)\n    double duration;\n    Pitch pitch;\n    int octave;\n    Accidental accidental;\n    bool repeat;\n};\n\n/**\n * Compares the given two Note objects for equality.\n */\nbool operator ==(const Note& note1, const Note& note2);\n\n/**\n * Compares the given two Note objects for inequality.\n */\nbool operator !=(const Note& note1, const Note& note2);\n\nstd::ostream& operator <<(std::ostream& out, const Note& note);\n\n/**\n * Returns a unique integer hash code for the given Note object.\n */\nint hashCode(const Note& note);\n\n#endif // _note_h\n\n/////////////////////// END code extracted from StanfordCPPLib/util/note.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib_CodeStepByStep_Project/src/ArrayIntList.h ///////////////////////\n/*\n * CS 106B, Marty Stepp\n * ArrayIntList is our example of implementing a basic data structure.\n * The list can store only ints for now.\n * See ArrayIntList.cpp for documentation of each member.\n *\n * @version 2016/08/23\n * - added initializer_list support to match other lib collections\n * @version 2016/07/10\n * - added removeDuplicates() declaration\n */\n\n#ifndef _arrayintlist_h\n#define _arrayintlist_h\n\n#include <fstream>\n#include <initializer_list>\n#include <iostream>\n#include <string>\n\nusing namespace std;\n\nclass ArrayIntList {\npublic:\n    // constructor\n    ArrayIntList();\n    ArrayIntList(int capacity);\n    ArrayIntList(std::initializer_list<int> list);\n    ~ArrayIntList();\n    \n    // member functions (methods)\n    void add(int value);\n    void clear();\n    void ensureCapacity(int capacity);\n    int get(int index) const;\n    void insert(int index, int value);\n    bool isEmpty() const;\n    void remove(int index);\n    void set(int index, int value);\n    int size() const;\n    void debug() const;\n    \n    // section problems\n    int maxCount() const;\n    \n    // exam problems\n    void stretch(int k);\n    void mirror();\n    int longestSortedSequence() const;\n    bool filter(const Set<int>& set);\n    void removeDuplicates();\n\n    ArrayIntList& operator =(const ArrayIntList& src);\n\nprivate:\n    // member variables (fields)\n    int* elements;   // array storing element data\n    int mysize;      // number of elements in the array\n    int capacity;    // array's length\n    \n    void checkIndex(int index, int min, int max) const;\n};\n\n// overloaded operators\nostream& operator <<(ostream& out, const ArrayIntList& list);\nistream& operator >>(istream& in, ArrayIntList& list);\n\n#endif\n\n\n\n\n\n\n\n\n/////////////////////// END code extracted from StanfordCPPLib_CodeStepByStep_Project/src/ArrayIntList.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib_CodeStepByStep_Project/src/BinaryTreeNode.h ///////////////////////\n/*\n * This file contains the declaration of the BinaryTreeNode structure.\n * A BinaryTreeNode stores one integer piece of data in a binary tree of integers.\n *\n * @version 2015/11/10\n * - added nodes for char, double, string\n * @version 2015/07/21\n * - initial version\n */\n\n#ifndef _binarytreenode_h\n#define _binarytreenode_h\n\n#include <iostream>\n#include <string>\n\n\n\ntemplate <typename T>\nclass BinaryTreeNodeGen {\npublic:\n    static int s_allocated;\n    static int s_freed;\n    T data;\n    BinaryTreeNodeGen<T>* left;\n    BinaryTreeNodeGen<T>* right;\n\n    /*\n     * Constructs a new tree node with the given data and left/right links.\n     */\n    BinaryTreeNodeGen<T>(const T& data = T(), BinaryTreeNodeGen* left = nullptr, BinaryTreeNodeGen* right = nullptr);\n    ~BinaryTreeNodeGen<T>();\n    bool isLeaf() const;\n};\n\n// define various node types so that some students need not learn C++ templates\ntypedef BinaryTreeNodeGen<int> BinaryTreeNode;\ntypedef BinaryTreeNodeGen<char> BinaryTreeNodeChar;\ntypedef BinaryTreeNodeGen<double> BinaryTreeNodeDouble;\ntypedef BinaryTreeNodeGen<std::string> BinaryTreeNodeString;\n\ntemplate <typename T>\nstd::ostream& operator <<(std::ostream& out, BinaryTreeNodeGen<T>* node);\n\ntemplate <typename T>\nstd::istream& operator >>(std::istream& input, BinaryTreeNodeGen<T>*& node);\n\n\n// begin \".cpp\" section\n\ntemplate <typename T>\nint BinaryTreeNodeGen<T>::s_allocated = 0;\n\ntemplate <typename T>\nint BinaryTreeNodeGen<T>::s_freed = 0;\n\n/*\n * Constructs a new tree node with the given data and left/right links.\n */\ntemplate <typename T>\nBinaryTreeNodeGen<T>::BinaryTreeNodeGen(const T& data, BinaryTreeNodeGen* left, BinaryTreeNodeGen* right) {\n    this->data = data;\n    this->left = left;\n    this->right = right;\n    s_allocated++;\n}\n\ntemplate <typename T>\nBinaryTreeNodeGen<T>::~BinaryTreeNodeGen() {\n    s_freed++;\n    this->left = nullptr;\n    this->right = nullptr;\n}\n\ntemplate <typename T>\nbool BinaryTreeNodeGen<T>::isLeaf() const {\n    return left == nullptr && right == nullptr;\n}\n\ntemplate <typename T>\nvoid parseBinaryTreeNodeFromQueue(Queue<std::string>& tokenQueue, BinaryTreeNodeGen<T>*& node) {\n    if (tokenQueue.isEmpty()) {\n        node = nullptr;\n    } else if (tokenQueue.peek() == \"(\") {\n        // start of a new node\n        tokenQueue.dequeue();   // the \"(\" token\n        T data;\n        std::istringstream isstr(tokenQueue.dequeue());\n        readGenericValue(isstr, data);\n        node = new BinaryTreeNodeGen<T>(data);\n        parseBinaryTreeNodeFromQueue(tokenQueue, node->left);\n        parseBinaryTreeNodeFromQueue(tokenQueue, node->right);\n        tokenQueue.dequeue();   // the \")\" token\n    } else if (tokenQueue.peek() == \"NULL\" || tokenQueue.peek() == \"null\"\n               || tokenQueue.peek() == \"nullptr\" || tokenQueue.peek() == \"/\") {\n        tokenQueue.dequeue();\n        node = nullptr;\n    } else {\n        node = nullptr;\n    }\n}\n\ntemplate <typename T>\nvoid makeTreeFromString(std::string s, BinaryTreeNodeGen<T>*& node) {\n    // make easier for tokenizing\n    s = stringReplace(s, \"(\", \"( \");\n    s = stringReplace(s, \"[\", \"( \");\n    s = stringReplace(s, \")\", \" ) \");\n    s = stringReplace(s, \"]\", \" ) \");\n    s = stringReplace(s, \", \", \" , \");\n    s = stringReplace(s, \"  \", \" \");\n    s = stringReplace(s, \"  \", \" \");\n    s = stringReplace(s, \"  \", \" \");\n    s = stringReplace(s, \"  \", \" \");\n    Vector<std::string> tokens = stringSplit(s, \" \");\n    Queue<std::string> tokenQueue;\n    for (const std::string& token : tokens) {\n        tokenQueue.enqueue(token);\n    }\n\n    parseBinaryTreeNodeFromQueue(tokenQueue, node);\n}\n\ntemplate <typename T>\nstd::ostream& binaryTreeOpLtLtHelper(std::ostream& out, BinaryTreeNodeGen<T>* node) {\n    if (!node) {\n        out << \"/\";\n    } else {\n        out << \"(\";\n        writeGenericValue(out, node->data, /* forceQuotes */ true);\n        if (!node->isLeaf()) {\n            out << \" \";\n            binaryTreeOpLtLtHelper(out, node->left);\n            if (node->right) {\n                out << \" \";\n                binaryTreeOpLtLtHelper(out, node->right);\n            }\n        }\n        out << \")\";\n    }\n    return out;\n}\n\ntemplate <typename T>\nstd::ostream& operator <<(std::ostream& out, BinaryTreeNodeGen<T>* node) {\n    binaryTreeOpLtLtHelper(out, node);\n    return out;\n}\n\ntemplate <typename T>\nstd::istream& operator >>(std::istream& input, BinaryTreeNodeGen<T>*& node) {\n    std::string line;\n    if (getline(input, line)) {\n        makeTreeFromString(line, node);\n    } else {\n        node = nullptr;\n    }\n    return input;\n}\n\n#endif // _binarytreenode_h\n\n/////////////////////// END code extracted from StanfordCPPLib_CodeStepByStep_Project/src/BinaryTreeNode.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib_CodeStepByStep_Project/src/BinaryTree.h ///////////////////////\n/*\n * This file contains the declaration of the BinaryTree class,\n * which defines a binary tree of integers.\n * See BinaryTree.cpp for implementation of each member.\n *\n * @version 2017/10/20\n * - replaced nulls with nullptr\n * @version 2015/07/21\n */\n\n#ifndef _binarytree_h\n#define _binarytree_h\n\n#include <iostream>\n#include <string>\n\n\nusing namespace std;\n\nclass BinaryTree {\npublic:\n    // public just for exam testing\n    BinaryTreeNode* root;   // topmost node in the tree (null if empty)\n\n    BinaryTree(BinaryTreeNode* root = nullptr);\n    virtual ~BinaryTree();\n    \n    void clear();\n    // int height();\n    string toString();\n    \n    // lecture problems\n    void print() const;\n    int size() const;\n    void printSideways() const;\n    bool contains(int value) const;\n\n    // section problems\n    int height() const;\n    int countLeftNodes() const;\n    bool isBalanced() const;\n    bool isBST() const;\n    void removeLeaves();\n    void completeToLevel(int k);\n    void tighten();\n    void limitPathSum(int max);\n    \n    // exam problems\n    bool hasPath(int start, int end) const;\n    bool isConsecutive() const;\n    void limitLeaves(int n);\n    int makeFull();\n    int range(int min, int max);\n    void removeMatchingLeaves(const BinaryTree& other);\n    void swapChildrenAtLevel(int level);\n\n    // operators for reading/writing trees based on a root pointer\n    // (these are used by the CodeStepByStep tool)\n    friend ostream& operator <<(ostream& out, BinaryTreeNode* node);\n    friend istream& operator >>(istream& input, BinaryTreeNode*& node);\n\nprivate:\n    int size(BinaryTreeNode* node);\n    string toString(BinaryTreeNode* node);\n    void deleteTree(BinaryTreeNode* node);\n};\n\nostream& operator <<(ostream& out, const BinaryTree& tree);\nistream& operator >>(istream& input, BinaryTree& tree);\n\nenum Order {PRE_ORDER, IN_ORDER, POST_ORDER};\n\ntemplate <typename T>\nclass TreeSet {\npublic:\n    TreeSet(BinaryTreeNodeGen<T>* root = nullptr);\n    virtual ~TreeSet();\n    \n    void add(T value);\n    bool contains(T value);\n    T getMin() const;\n    int height() const;\n    bool isBalanced() const;\n    void print(int order = IN_ORDER);\n    void printSideways();\n    void remove(T value);\n    \nprivate:\n    BinaryTreeNodeGen<T>* root;   // topmost node in the tree (nullptr if empty)\n\n    void add(BinaryTreeNodeGen<T>*& node, T value);\n    bool contains(BinaryTreeNodeGen<T>* node, T value);\n    T getMin(BinaryTreeNodeGen<T>* node) const;\n    int height(BinaryTreeNodeGen<T>* node) const;\n    bool isBalanced(BinaryTreeNodeGen<T>* node) const;\n    void print(BinaryTreeNodeGen<T>* node, int order = IN_ORDER);\n    void printSideways(BinaryTreeNodeGen<T>* node, string indent);\n    void remove(BinaryTreeNodeGen<T>*& node, T value);\n};\n\n// method bodies must be in .h file for template classes\n\ntemplate <typename T>\nTreeSet<T>::TreeSet(BinaryTreeNodeGen<T>* root) {\n    this->root = root;\n}\n\ntemplate <typename T>\nTreeSet<T>::~TreeSet() {\n    // TODO\n    root = nullptr;\n}\n\ntemplate <typename T>\nvoid TreeSet<T>::add(T value) {\n    add(root, value);\n}\n\ntemplate <typename T>\nvoid TreeSet<T>::add(BinaryTreeNodeGen<T>*& node, T value) {\n    if (!node) {\n        node = new BinaryTreeNodeGen<T>(value);\n    } else if (value < node->data) {\n        add(node->left, value);\n    } else if (value > node->data) {\n        add(node->right, value);\n    }\n}\n\ntemplate <typename T>\nbool TreeSet<T>::contains(T value) {\n    return contains(root, value);\n}\n\ntemplate <typename T>\nbool TreeSet<T>::contains(BinaryTreeNodeGen<T>* node, T value) {\n    if (!node) {\n        return false;\n    } else if (value == node->data) {\n        return true;\n    } else if (value < node->data) {\n        return contains(node->left, value);\n    } else {\n        return contains(node->right, value);\n    }\n}\n\ntemplate <typename T>\nT TreeSet<T>::getMin() const {\n    return getMin(root);\n}\n\ntemplate <typename T>\nT TreeSet<T>::getMin(BinaryTreeNodeGen<T>* node) const {\n    if (!node) {\n        throw \":-(\";\n    } else if (!node->left) {\n        return node->data;\n    } else {\n        return getMin(node->left);\n    }\n}\n\ntemplate <typename T>\nint TreeSet<T>::height() const {\n    return height(root);\n}\n\ntemplate <typename T>\nint TreeSet<T>::height(BinaryTreeNodeGen<T>* node) const {\n    if (!node) {\n        return 0;\n    } else {\n        int l = height(node->left);\n        int r = height(node->right);\n        return max(l, r) + 1;\n    }\n}\n\ntemplate <typename T>\nbool TreeSet<T>::isBalanced() const {\n    return isBalanced(root);\n}\n\ntemplate <typename T>\nbool TreeSet<T>::isBalanced(BinaryTreeNodeGen<T>* node) const {\n    if (!node) {\n        return true;\n    } else {\n        int l = height(node->left);\n        int r = height(node->right);\n        int bf = r - l;\n        if (abs(bf) > 1) {\n            cout << \"imbalanced: \" << node->data << \" (balance factor: \" << bf << \")\" << endl;\n        }\n        // inefficient because we want to print ALL imbalanced nodes\n        bool balL = isBalanced(node->left);\n        bool balR = isBalanced(node->right);\n        return abs(l - r) <= 1 && balL && balR;\n    }\n}\n\ntemplate <typename T>\nvoid TreeSet<T>::print(int order) {\n    print(root, order);\n    cout << endl;\n}\n\ntemplate <typename T>\nvoid TreeSet<T>::print(BinaryTreeNodeGen<T>* node, int order) {\n    if (node) {\n        if (order == PRE_ORDER) {\n            cout << node->data << \" \";\n            cout.flush();\n        }\n        print(node->left, order);\n        if (order == IN_ORDER) {\n            cout << node->data << \" \";\n            cout.flush();\n        }\n        print(node->right, order);\n        if (order == POST_ORDER) {\n            cout << node->data << \" \";\n            cout.flush();\n        }\n    }\n}\n\ntemplate <typename T>\nvoid TreeSet<T>::printSideways() {\n    printSideways(root, \"\");\n}\n\ntemplate <typename T>\nvoid TreeSet<T>::printSideways(BinaryTreeNodeGen<T>* node, string indent) {\n    if (node) {\n        printSideways(node->right, indent + \"  \");\n        cout << indent << node->data << endl;\n        printSideways(node->left, indent + \"  \");\n    }\n}\n\ntemplate <typename T>\nvoid TreeSet<T>::remove(T value) {\n    remove(root, value);\n}\n\ntemplate <typename T>\nvoid TreeSet<T>::remove(BinaryTreeNodeGen<T>*& node, T value) {\n    if (!node) {\n        // do nothing\n    } else if (value < node->data) {\n        remove(node->left, value);\n    } else if (value > node->data) {\n        remove(node->right, value);\n    } else {\n        // remove this node\n        if (!node->left && !node->right) {\n            delete node;\n            node = nullptr;\n        } else if (!node->left) {\n            BinaryTreeNodeGen<T>* trash = node;\n            node = node->right;\n            delete trash;\n        } else if (!node->right) {\n            BinaryTreeNodeGen<T>* trash = node;\n            node = node->left;\n            delete trash;\n        } else {\n            T min = getMin(node->right);\n            remove(node->right, min);\n            node->data = min;\n        }\n    }\n}\n\n#endif // _binarytree_h\n\n/////////////////////// END code extracted from StanfordCPPLib_CodeStepByStep_Project/src/BinaryTree.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib_CodeStepByStep_Project/src/BinaryTreeMapNode.h ///////////////////////\n/*\n * CS 106B, Marty Stepp\n * This file contains the declaration of the TreeMapNode structure.\n * A TreeMapNode stores one string/integer key/value pair in a tree map.\n *\n * @version 2015/07/21\n */\n\n#ifndef _binarytreemapnode_h\n#define _binarytreemapnode_h\n\n#include <string>\nusing namespace std;\n\nstruct BinaryTreeMapNode {\n    string key;\n    int value;\n    BinaryTreeMapNode* left;\n    BinaryTreeMapNode* right;\n\n    /*\n     * Constructs a new tree node with the given key/value and left/right links.\n     */\n    BinaryTreeMapNode(string key, int value, BinaryTreeMapNode* left = nullptr, BinaryTreeMapNode* right = nullptr) {\n        this->key = key;\n        this->value = value;\n        this->left = left;\n        this->right = right;\n    }\n    \n    /*\n     * Returns true if this node has no children.\n     */\n    bool isLeaf() {\n        return !left && !right;\n    }\n};\n\n#endif\n\n/////////////////////// END code extracted from StanfordCPPLib_CodeStepByStep_Project/src/BinaryTreeMapNode.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib_CodeStepByStep_Project/src/BinaryTreeMap.h ///////////////////////\n/*\n * CS 106B, Marty Stepp\n * This file contains the declaration of the BinaryTreeMap class,\n * which defines a map from string->integer using a binary search tree.\n * See BinaryTreeMap.cpp for implementation of each member.\n *\n * @version 2015/07/21\n */\n\n#ifndef _binarytreemap_h\n#define _binarytreemap_h\n\n#include <iostream>\n#include <string>\n\nusing namespace std;\n\nclass BinaryTreeMap {\npublic:\n    /*\n     * Constructs a new tree map.\n     */\n    BinaryTreeMap();\n\n    /*\n     * Frees memory that was allocated by this tree map.\n     */\n    ~BinaryTreeMap();\n    \n    /*\n     * Returns true if the given key is contained in this map.\n     */\n    bool containsKey(string key) const;\n\n    /*\n     * Returns the value associated with the given key in this map.\n     * If the given key is not associated with any value, returns 0.\n     */\n    int get(string key) const;\n\n    /*\n     * Returns true if this map does not contain any key/value pairs.\n     */\n    bool isEmpty() const;\n\n    /*\n     * Adds the given key/value pair to this tree map, if not already present.\n     */\n    void put(string key, int value);\n\n    /*\n     * Removes the given key and its associated value from this tree map, if it was present.\n     */\n    void remove(string key);\n\n    /*\n     * Returns the number of key/value pairs in this map.\n     */\n    int size() const;\n    \nprivate:\n    BinaryTreeMapNode* m_root;   // topmost node in the tree (null if empty)\n    int m_size;            // # of k/v pairs in map (0 if empty)\n\n    /*\n     * Recursive helpers to implement the above public members.\n     * Each helper accepts a pointer to the part of the tree to process.\n     */\n    bool containsKey(BinaryTreeMapNode* node, string key) const;\n    int get(BinaryTreeMapNode* node, string key) const;\n    BinaryTreeMapNode* getMin(BinaryTreeMapNode* node) const;\n    void put(BinaryTreeMapNode*& node, string key, int value);\n    void remove(BinaryTreeMapNode*& node, string key);\n};\n\n#endif\n\n/////////////////////// END code extracted from StanfordCPPLib_CodeStepByStep_Project/src/BinaryTreeMap.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib_CodeStepByStep_Project/src/HashTableMap.h ///////////////////////\n/*\n * CS 106B, Marty Stepp\n * This file contains the declaration of the HashTableMap class, which implements\n * a map using a hash table.\n * The hash table uses separate chaining (a linked list of values in each\n * hash bucket) to resolve hash collisions.\n *\n * @version 2015/07/21\n */\n\n#ifndef _hashtablemap_h\n#define _hashtablemap_h\n\n#include <iomanip>\n#include <iostream>\n#include <string>\n\n/*\n * A HashNode stores a single integer of data and a link to another node.\n */\ntemplate <typename K, typename V>\nstruct HashTableMapNode {\n    K key;\n    V value;\n    HashTableMapNode* next;\n    HashTableMapNode(K key, V value, HashTableMapNode* next = nullptr) {\n        this->key = key;\n        this->value = value;\n        this->next = next;\n    }\n};\n\ntemplate <typename K, typename V>\nclass HashTableMap {\npublic:\n    HashTableMap(int capacity = 10, double rehashLoadFactor = 0.5);\n    void put(K key, V value);\n    bool containsKey(K key) const;\n    V get(K key) const;\n    double loadFactor() const;\n    void printStructure() const;\n    void remove(K key);\n    void setRehashLoadFactor(double loadFactor);\n\nprivate:\n    HashTableMapNode<K, V>** elements;\n    int mysize;\n    int capacity;\n    double rehashLoadFactor;\n    int __hashCode(int n) const;\n    int __hashCode(double d) const;\n    int __hashCode(string s) const;\n    int _hashCode(K key) const;\n\n    void rehash();\n};\n\ntemplate <typename K, typename V>\nHashTableMap<K, V>::HashTableMap(int capacity, double rehashLoadFactor) {\n    mysize = 0;\n    this->capacity = capacity;\n    elements = new HashTableMapNode<K, V>*[capacity]();\n    this->rehashLoadFactor = rehashLoadFactor;\n}\n\ntemplate <typename K, typename V>\nvoid HashTableMap<K, V>::put(K key, V value) {\n    int index = _hashCode(key);\n    if (containsKey(key)) {\n        // already has a pair for this key; replace the value\n        HashTableMapNode<K, V>* current = elements[index];\n        while (current) {\n            if (current->key == key) {\n                current->value = value;\n                break;\n            }\n            current = current->next;\n        }\n    } else {\n        // add a new pair to the front of the chain\n        elements[index] = new HashTableMapNode<K, V>(key, value, elements[index]);\n        mysize++;\n        if (loadFactor() >= rehashLoadFactor) {\n            rehash();\n        }\n    }\n}\n\ntemplate <typename K, typename V>\nbool HashTableMap<K, V>::containsKey(K key) const {\n    int index = _hashCode(key);\n    HashTableMapNode<K, V>* current = elements[index];\n    while (current) {\n        if (current->key == key) {\n            return true;\n        }\n        current = current->next;\n    }\n    return false;\n}\n\ntemplate <typename K, typename V>\nV HashTableMap<K, V>::get(K key) const {\n    int index = _hashCode(key);\n    HashTableMapNode<K, V>* current = elements[index];\n    while (current) {\n        if (current->key == key) {\n            return current->value;\n        }\n        current = current->next;\n    }\n    return V();\n}\n\ntemplate <typename K, typename V>\nint HashTableMap<K, V>::__hashCode(int n) const {\n    return n;\n}\n\ntemplate <typename K, typename V>\nint HashTableMap<K, V>::__hashCode(double d) const {\n    return hashCode(d);\n}\n\ntemplate <typename K, typename V>\nint HashTableMap<K, V>::__hashCode(string s) const {\n    return hashCode(s);\n}\n\ntemplate <typename K, typename V>\nint HashTableMap<K, V>::_hashCode(K key) const {\n    return abs(__hashCode(key)) % capacity;\n}\n\ntemplate <typename K, typename V>\ndouble HashTableMap<K, V>::loadFactor() const {\n    return (double) mysize / capacity;\n}\n\ntemplate <typename K, typename V>\nvoid HashTableMap<K, V>::printStructure() const {\n    for (int i = 0; i < capacity; i++) {\n        cout << \"[\" << setw(2) << i << \"]:\";\n        HashTableMapNode<K, V>* curr = elements[i];\n        while (curr) {\n            cout << \" -> \" << setw(2) << curr->key << \":\" << curr->value;\n            curr = curr->next;\n        }\n        cout << endl;\n    }\n    cout << \"size        = \" << mysize << endl;\n    cout << \"capacity    = \" << capacity << endl;\n    cout << \"load factor = \" << loadFactor() << endl;\n}\n\ntemplate <typename K, typename V>\nvoid HashTableMap<K, V>::rehash() {\n    HashTableMapNode<K, V>** oldElements = elements;\n    elements = new HashTableMapNode<K, V>*[capacity * 2]();\n    capacity *= 2;\n    mysize = 0;\n    \n    for (int i = 0; i < capacity/2; i++) {\n        HashTableMapNode<K, V>* curr = oldElements[i];\n        while (curr) {\n            put(curr->key, curr->value);\n            HashTableMapNode<K, V>* trash = curr;\n            curr = curr->next;\n            delete trash;\n        }\n    }\n    \n    delete oldElements;\n}\n\ntemplate <typename K, typename V>\nvoid HashTableMap<K, V>::remove(K key) {\n    int index = _hashCode(key);\n    if (!elements[index]) {\n        return;\n    } else if (elements[index]->key == key) {\n        // remove from front\n        HashTableMapNode<K, V>* trash = elements[index];\n        elements[index] = elements[index]->next;\n        delete trash;\n        mysize--;\n    } else {\n        // remove from later in the chain\n        HashTableMapNode<K, V>* current = elements[index];\n        while (current->next) {\n            if (current->next->key == key) {\n                HashTableMapNode<K, V>* trash = current->next;\n                current->next = current->next->next;\n                delete trash;\n                mysize--;\n                break;\n            }\n            current = current->next;\n        }\n    }\n}\n\ntemplate <typename K, typename V>\nvoid HashTableMap<K, V>::setRehashLoadFactor(double loadFactor) {\n    this->rehashLoadFactor = loadFactor;\n}\n\n#endif\n\n/////////////////////// END code extracted from StanfordCPPLib_CodeStepByStep_Project/src/HashTableMap.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib_CodeStepByStep_Project/src/HashTableSet.h ///////////////////////\n/*\n * CS 106B, Marty Stepp\n * This file contains the declaration of the HashTableSet class, which implements\n * a set of integers using a hash table.\n * The hash table uses separate chaining (a linked list of values in each\n * hash bucket) to resolve hash collisions.\n * See HashTableSet.cpp for the implementation of each member.\n *\n * @version 2015/07/21\n */\n\n#ifndef _hashtableset_h\n#define _hashtableset_h\n\n#include <iostream>\n#include <string>\n\n/*\n * A HashNode stores a single integer of data and a link to another node.\n */\nstruct HashTableNode {\n    int data;\n    HashTableNode* next;\n    HashTableNode(int data = 0, HashTableNode* next = nullptr) {\n        this->data = data;\n        this->next = next;\n    }\n};\n\nclass HashTableSet {\npublic:\n    HashTableSet();\n    void add(int value);\n    bool contains(int value) const;\n    void remove(int value);\n    void printStructure() const;\n\n    void trimChains(int k);\n\nprivate:\n    HashTableNode** m_elements;\n    int m_size;\n    int m_capacity;\n    int hashCode(int value) const;\n};\n\n#endif\n\n\n\n\n\n\n/////////////////////// END code extracted from StanfordCPPLib_CodeStepByStep_Project/src/HashTableSet.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib_CodeStepByStep_Project/src/HeapPriorityQueue.h ///////////////////////\n/*\n * CS 106B, Marty Stepp\n * This file declares the HeapPriorityQueue class.\n *\n * @version 2015/07/29\n */\n\n#ifndef _heappriorityqueue_h\n#define _heappriorityqueue_h\n\n#include <fstream>\n#include <iostream>\n#include <string>\n\n\nusing namespace std;\n\nstruct PQEntry {\n    string data;\n    double priority;\n};\n\nclass HeapPriorityQueue {\npublic:\n    HeapPriorityQueue(PQEntry* elements = nullptr, int capacity = 10, int mysize = 0);\n    ~HeapPriorityQueue();\n    void changePriority(string value, double newPriority);\n    void clear();\n    string dequeue();\n    void enqueue(string value, double priority);\n    bool isEmpty() const;\n    string peek() const;\n    double peekPriority() const;\n    void printSideways(int index = 1, string indent = \"\") const;\n    int size() const;\n    string toString() const;\n    \n    friend ostream& operator <<(ostream& out, const HeapPriorityQueue& pq);\n    friend istream& operator >>(istream& input, HeapPriorityQueue& pq);\n    \n    // exam problems\n    int atLevel(int level) const;\n\nprivate:\n    PQEntry* elements;   // array of element data\n    int capacity;        // length of elements array\n    int mysize;          // number of elements that have been added\n    \n    PriorityQueue<string>* hackPQ;\n};\n\n// \"a:4, b:16, c:7\" => PQ\nvoid stringToPQ(HeapPriorityQueue& pq, string elements);\n\n#endif\n\n/////////////////////// END code extracted from StanfordCPPLib_CodeStepByStep_Project/src/HeapPriorityQueue.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib_CodeStepByStep_Project/src/LinkedIntList.h ///////////////////////\n/*\n * LinkedIntList is an example of a second implementation of a basic data structure.\n * A LinkedIntList is a sequential collection of integers stored with 0-based integer\n * indexes and internally represented as a list of linked node structures.\n *\n * @version 2019/05/17\n * - added AssassinNode\n * @version 2018/03/19\n * - changed nullptr output to {}\n * @version 2016/11/11\n * - made into template class\n * @version 2016/08/23\n * - added initializer_list support to match other lib collections\n */\n\n#ifndef _linkedintlist_h\n#define _linkedintlist_h\n\n#include <initializer_list>\n#include <iostream>\n#include <string>\n\n\n\n\n\n\n/*\n * The internal structure representing a single node.\n */\ntemplate <typename T>\nclass ListNodeGen {\npublic:\n    // global count of how many nodes have been created/destroyed\n    static int s_allocated;\n    static int s_freed;\n\n    T data;           // element stored in each node\n    ListNodeGen<T>* next;   // pointer to the next node (null if none)\n\n    ListNodeGen(T d = T(), ListNodeGen<T>* n = nullptr);\n    ~ListNodeGen();\n\n    static void printChain(ListNodeGen<T>* list, std::string name = \"list\", int maxLength = 10);\n};\n\ntemplate <typename T>\nstd::ostream& operator <<(std::ostream& out, ListNodeGen<T>* front);\n\ntemplate <typename T>\nstd::istream& operator >>(std::istream& input, ListNodeGen<T>*& front);\n\n\n// begin \"cpp\" section of ListNode\n\ntemplate <typename T>\nint ListNodeGen<T>::s_allocated = 0;\n\ntemplate <typename T>\nint ListNodeGen<T>::s_freed = 0;\n\ntemplate <typename T>\nListNodeGen<T>::ListNodeGen(T d, ListNodeGen<T>* n) {\n    data = d;\n    next = n;\n    s_allocated++;\n}\n\ntemplate <typename T>\nListNodeGen<T>::~ListNodeGen() {\n    s_freed++;\n    next = nullptr;\n}\n\ntemplate <typename T>\nvoid ListNodeGen<T>::printChain(ListNodeGen<T>* list, std::string name, int maxLength) {\n    std::cout << name << \": \";\n    if (!list) {\n        std::cout << \"nullptr\" << std::endl;\n    } else {\n        ListNodeGen<T>* curr = list;\n        bool hasCycle = false;\n        for (int i = 0; curr && (maxLength <= 0 || i < maxLength); i++, curr = curr->next) {\n            std::cout << curr->data;\n            if (curr->next) {\n                std::cout << \" -> \";\n            }\n            if (i == maxLength - 1) {\n                std::cout << \" ... (cycle)\";\n                hasCycle = true;\n            }\n        }\n        if (!hasCycle) {\n            std::cout << \" /\";\n        }\n        std::cout << std::endl;\n    }\n}\n\ntemplate <typename T>\nstd::ostream& operator <<(std::ostream& out, ListNodeGen<T>* front) {\n    if (!front) {\n        // out << \"nullptr\";\n        out << \"{}\";\n    } else {\n        out << \"{\";\n        if (front) {\n            HashSet<ListNodeGen<T>*> visited;\n            writeGenericValue(out, front->data, /* forceQuotes */ true);\n            visited.add(front);\n\n            ListNodeGen<T>* curr = front->next;\n            while (curr) {\n                out << \", \";\n                writeGenericValue(out, curr->data, /* forceQuotes */ true);\n                if (visited.contains(curr)) {\n                    out << \" (cycle!)\";\n                    break;\n                }\n\n                visited.add(curr);\n                curr = curr->next;\n            }\n        }\n        out << \"}\";\n    }\n    return out;\n}\n\ntemplate <typename T>\nstd::istream& operator >>(std::istream& input, ListNodeGen<T>*& front) {\n    // read into a vector first (yeah yeah, wastes some space, oh well)\n    Vector<T> vec;\n    T element;\n    stanfordcpplib::collections::readCollection(input, vec, element, /* descriptor */ \"ListNode::operator >>\");\n\n    // now convert into a linked list\n    if (vec.isEmpty()) {\n        front = nullptr;\n    } else {\n        front = new ListNodeGen<T>(vec[0]);\n        ListNodeGen<T>* curr = front;\n        for (int i = 1; i < vec.size(); i++) {\n            curr->next = new ListNodeGen<T>(vec[i]);\n            curr = curr->next;\n        }\n    }\n\n    return input;\n}\n\ntypedef ListNodeGen<int> ListNode;\ntypedef ListNodeGen<int> ListNodeInt;\ntypedef ListNodeGen<double> ListNodeDouble;\ntypedef ListNodeGen<std::string> ListNodeString;\ntypedef ListNodeGen<std::string> AssassinNode;\n\n// end \"cpp\" section of ListNode\n\n\nclass LinkedIntList {\npublic:\n    LinkedIntList();\n    LinkedIntList(std::initializer_list<int> list);\n    ~LinkedIntList();\n\n    void add(int value);\n    void clear();\n    int get(int index) const;\n    void insert(int index, int value);\n    bool isEmpty() const;\n    void remove(int index);\n    void set(int index, int value);\n    int size() const;\n    std::string toString() const;\n\n    // section problems\n    void setLocked(bool locked);\n    int min() const;\n    bool isSorted() const;\n    int countDuplicates() const;\n    void stutter();\n    int deleteBack();\n    void split();\n    void removeAll(int value);\n    void doubleList();\n    void rotate();\n    void reverse();\n    void consume(LinkedIntList& list2);\n    void transferEvens(LinkedIntList& list2);\n\n    // exam questions\n    void chopBothSides(int k);\n    void combineDuplicates();\n    void expand(int k);\n    bool isSortedBy(int k) const;\n    void mergeUpTo(int max);\n    void partitionSort();\n    bool removeRange(int min, int max);\n\n    LinkedIntList& operator =(const LinkedIntList& src);\n\n    // declared here so they can access front\n    friend std::ostream& operator <<(std::ostream& out, const LinkedIntList& list);\n    friend std::istream& operator >>(std::istream& input, LinkedIntList& list);\n\nprivate:\n    ListNode* front;   // pointer to front node in list;  null if empty\n\n    bool m_locked;     // whether to forbid method calls (for problems)\n\n    void checkIndex(int index, int min, int max) const;\n    void checkLocked(std::string memberName = \"\") const;\n};\n\n#endif // _linkedintlist_h\n\n/////////////////////// END code extracted from StanfordCPPLib_CodeStepByStep_Project/src/LinkedIntList.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib_CodeStepByStep_Project/src/graphsupport.h ///////////////////////\n#ifndef _graphsupport_h\n#define _graphsupport_h\n\n#include <iostream>\n#include <sstream>\n\n\nusing namespace std;\n\n// colors for graph problems\ntypedef int Color;\nextern const Color UNCOLORED, WHITE, GRAY, YELLOW, GREEN, RED, BLUE;\nextern const int NUM_COLORS;\nextern const Color COLORS[7];\nextern const std::string COLOR_NAMES[7];\n\nbool graph_canReach(BasicGraph& graph, Vertex* start, Vertex* end, Set<Vertex*>& visited, Vector<Vertex*>* path = nullptr);\nbool graph_isConnected(BasicGraph& graph, bool checkWeak = false);\nbool graph_isCyclic(BasicGraph& graph);\nvoid graph_printEdgeList(BasicGraph& graph);\nvoid graph_printAdjacencyList(BasicGraph& graph);\nvoid graph_printAdjacencyMatrix(BasicGraph& graph);\nvoid graph_printVertexDegrees(BasicGraph& graph);\nstring graph_pathToString(const Vector<Vertex*>& path);\nvoid graph_printPath(const Vector<Vertex*>& path);\nvoid BasicGraph_fromString(BasicGraph& obj, string str);\nostream& operator <<(ostream& out, const Vector<Vertex*>& path);\nostream& operator <<(ostream& out, const Set<Vertex*>& set);\n\n#endif //_graphsupport_h\n\n/////////////////////// END code extracted from StanfordCPPLib_CodeStepByStep_Project/src/graphsupport.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib_CodeStepByStep_Project/src/types.h ///////////////////////\n/*\n * Various support classes and types used in practice problems.\n *\n * @version 2015/08/10\n */\n\n#ifndef _types_h\n#define _types_h\n\n#include <iostream>\nusing namespace std;\n\nstruct Domino {\n    int first;\n    int second;\n    \n    Domino(int f = 0, int s = 0);\n};\n\nostream& operator <<(ostream& out, const Domino& d);\nistream& operator >>(istream& input, Domino& d);\n\n#endif // _types_h\n\n/////////////////////// END code extracted from StanfordCPPLib_CodeStepByStep_Project/src/types.h ///////////////////////\n\n/////////////////////// BEGIN code extracted from StanfordCPPLib_CodeStepByStep_Project/src/codestepbystep.h ///////////////////////\n/*\n * @version 2019/10/12\n * - add arrayToString template\n * @version 2019/05/17\n * - add AssassinNode support\n * @version 2019/04/24\n * - add setFromFile\n * - remove STL includes\n * @version 2017/10/06\n * - hid POSIX signal handler behind preprocessor macro\n * @version 2016/12/07\n * - added assert* methods\n */\n\n#ifndef _codestepbystep_h\n#define _codestepbystep_h\n\n// basic standard library stuff\n#include <cctype>\n#include <climits>\n#include <cmath>\n#include <csignal>\n#include <fstream>\n#include <iomanip>\n#include <iostream>\n#include <sstream>\n#include <string>\n\n//// STL\n//#include <algorithm>\n//#include <deque>\n//#include <list>\n//#include <map>\n//#include <queue>\n//#include <set>\n//#include <stack>\n//#include <vector>\n\n// Stanford lib stuff\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#define INTERNAL_INCLUDE 1\n\n#undef INTERNAL_INCLUDE\n\nnamespace CodeStepByStep {\n\nstd::string testToRun();\nbool runAllTests();\n\nstd::string htmlDecode(const std::string& s);\nstd::string htmlEncode(const std::string& s);\n\ntemplate <typename T>\nstd::string htmlEncode(const T& obj) {\n    std::ostringstream out;\n    out << obj;\n    std::string s = out.str();\n    return ::htmlEncode(s);\n}\n\nstd::ofstream& __getXmlOut();\n\nvoid printXml(const std::string& s);\n\nvoid printlnXml(const std::string& s);\n\nvoid printXml(bool b);\n\nvoid printlnXml(bool b);\n\nvoid printXml(double d);\n\nvoid printlnXml(double d);\n\nvoid printXml(float f);\n\nvoid printlnXml(float f);\n\ntemplate <typename T>\nvoid printXml(const T& value) {\n    __getXmlOut() << value;\n}\n\ntemplate <typename T>\nvoid printlnXml(const T& value) {\n    __getXmlOut() << value << std::endl;\n}\n\nstd::string __stackTraceToString();\n\nvoid __printException(const std::string& type, const std::string& message = \"\",\n                      const std::string& stacktrace = \"\", int lineNumber = -1);\n\nvoid __openXmlOldWay(const std::string& filename);\n\nvoid __closeXml();\n\nvoid __printXml(const char* s);\n\nvoid __printXml(const std::string& s);\n\nvoid __printlnXml(const char* s);\n\nvoid __printlnXml(const std::string& s);\n\n// CODE FOR HANDLING SIGNALS (VARIOUS PROGRAM CRASHES)\n// #define SIGSTACK ((int) 0xdeadbeef)\n// #define SIGUNKNOWN ((int) 0xcafebabe)\n// #define SIGTIMEOUT ((int) 0xf00df00d)\n\nvoid __codeStepByStepSignalHandler(int sig);\n#if !defined(_WIN32)\nvoid __posixSignalHandler(int sig, siginfo_t* /*siginfo*/, void* /*context*/);\n#endif // !defined(_WIN32)\n\n// function to convert an array to string for printing\ntemplate <typename T>\nstd::string arrayToString(T a[], int length) {\n    std::ostringstream out;\n    out << \"{\";\n    if (length > 0) {\n        writeGenericValue(out, a[0], /* forceQuotes */ true);\n        for (int i = 1; i < length; i++) {\n            out << \", \";\n            writeGenericValue(out, a[i], /* forceQuotes */ true);\n        }\n    }\n    out << \"}\";\n    return out.str();\n}\n\n// functions to parse various collections from strings\nvoid ArrayIntList_fromString(ArrayIntList& list, const std::string& str);\nvoid AssassinNode_fromString(AssassinNode*& ptr, const std::string& str);\nvoid BasicGraph_fromString(BasicGraph& graph, const std::string& str);\nvoid BinaryTree_fromString(BinaryTree& tree, const std::string& str);\nvoid BinaryTreeNode_fromString(BinaryTreeNode*& root, const std::string& str);\nvoid BinaryTreeNodeptr_fromString(BinaryTreeNode*& root, const std::string& str);\nvoid BinaryTreeNodeChar_fromString(BinaryTreeNodeChar*& root, const std::string& str);\nvoid BinaryTreeNodeCharptr_fromString(BinaryTreeNodeChar*& root, const std::string& str);\nvoid BinaryTreeNodeDouble_fromString(BinaryTreeNodeDouble*& root, const std::string& str);\nvoid BinaryTreeNodeString_fromString(BinaryTreeNodeString*& root, const std::string& str);\nvoid HeapPriorityQueue_fromString(HeapPriorityQueue& pqueue, const std::string& str);\nvoid LinkedIntList_fromString(LinkedIntList& list, const std::string& str);\nvoid ListNode_fromString(ListNode*& ptr, const std::string& str);\nvoid ListNodeptr_fromString(ListNode*& ptr, const std::string& str);\nvoid ListNodeDouble_fromString(ListNodeDouble*& ptr, const std::string& str);\nvoid ListNodeDoubleptr_fromString(ListNodeDouble*& ptr, const std::string& str);\nvoid ListNodeString_fromString(ListNodeString*& ptr, const std::string& str);\nvoid ListNodeStringptr_fromString(ListNodeString*& ptr, const std::string& str);\n\n// this one's body must be here in .h file because it's a template\ntemplate <typename T>\nvoid Vector_fromString(Vector<T>& v, const std::string& str) {\n    std::istringstream input(str);\n    input >> v;\n}\n\n// build a set of words from a file, a la Lexicon\n// (we use this to initialize a set of words from a file in one line)\nSet<string> setFromFile(const std::string& filename, bool cache = true);\n\n// helpers for parts of main() function\nvoid main_begin(int argc, char** argv);\nvoid main_end();\n\n// code for assertions (used in classes+objects problems)\n#ifndef _codestepbystep_assertions\n#define _codestepbystep_assertions\nnamespace Assertions {\nvoid assertionPrint(const std::string& msg,\n                    const std::string& assertType,\n                    const std::string& valueType,\n                    const std::string& expected,\n                    const std::string& actual,\n                    Map<std::string, std::string> attrs = {});\n\ntemplate <typename T>\nvoid assertEquals(const std::string& msg, const std::string& type, T expected, T actual,\n                  Map<std::string, std::string> attrs = {}) {\n    std::string expStr = genericValueToString(expected);\n    std::string actStr = genericValueToString(actual);\n    assertionPrint(msg, \"assertEquals\", type, expStr, actStr, attrs);\n}\n\ntemplate <typename T>\nvoid assertEquals(const std::string& msg, T expected, T actual,\n                  Map<std::string, std::string> attrs = {}) {\n    assertEquals(msg, \"T\", expected, actual, attrs);\n}\n\nvoid assertEqualsBool(const std::string& msg, bool expected, bool actual);\nvoid assertEqualsChar(const std::string& msg, char expected, char actual);\nvoid assertEqualsDouble(const std::string& msg, double expected, double actual, double tolerance = 0.0001);\nvoid assertEqualsInt(const std::string& msg, int expected, int actual);\nvoid assertEqualsString(const std::string& msg, std::string expected, std::string actual);\nvoid assertTrue(const std::string& msg, bool test);\nvoid assertFalse(const std::string& msg, bool test);\nvoid assertFail(const std::string& msg);\nvoid setTestName(const std::string& name);\n} // namespace CodeStepByStep::Assertions\n#endif // _codestepbystep_assertions\n\n} // namespace CodeStepByStep\n\n\n#endif // _codestepbystep_h\n\n/////////////////////// END code extracted from StanfordCPPLib_CodeStepByStep_Project/src/codestepbystep.h ///////////////////////\n\n"
  },
  {
    "path": "Archived/spl_cpp_header_autograder_text.txt",
    "content": "/******************************************************************\n * The Stanford C++ Autograder Library                            *\n * splautograder.cpp                                              *\n * -------------------------------------------------------------- *\n * This file contains the C++ code to implement the functionality *\n * of the Stanford C++ Autograder Library.                        *\n * The library has been packed into a single very large .cpp file *\n * for speed of compilation and ease of distribution.             *\n * Do not edit this file; if you want to fix bugs or make changes *\n * to the library, please contribute to the project's original    *\n * source on GitHub by talking to its current maintainers.        *\n ******************************************************************/\n\n"
  },
  {
    "path": "Archived/spl_cpp_header_text.txt",
    "content": "/******************************************************************\n * The Stanford C++ Library                                       *\n * spl.cpp                                                        *\n * -------------------------------------------------------------- *\n * This file contains the C++ code to implement the functionality *\n * of the Stanford C++ Library.                                   *\n * The library has been packed into a single very large .cpp file *\n * for speed of compilation and ease of distribution.             *\n * Do not edit this file; if you want to fix bugs or make changes *\n * to the library, please contribute to the project's original    *\n * source on GitHub by talking to its current maintainers.        *\n ******************************************************************/\n\n"
  },
  {
    "path": "BothLibraryWelcome.pro",
    "content": "TEMPLATE = subdirs\nSUBDIRS = Library Welcome\n\n# ordered forces subprojects to build sequentially, according to SUBDIRS\nCONFIG += ordered\n\n# pass var down to subprojects\nCURRENTLY_INSTALLING_LIBRARY = $$PWD\ncache(CURRENTLY_INSTALLING_LIBRARY)\n"
  },
  {
    "path": "DebugHelper/DebugHelper.pro",
    "content": "###############################################################################\n# Project file for CS106B/X student program\n#\n# @version Winter Quarter 2025.2 for Qt 6\n# @author Julie Zelenski\n#   build client program using installed static library\n###############################################################################\n\nSPL_VERSION = 2025.2\nSPL_URL = https://web.stanford.edu/dept/cs_edu/qt\n\nTEMPLATE    =   app\nQT          +=  core gui widgets network multimedia\nCONFIG      +=  silent debug         # quiet build and debug symbols always\nCONFIG      -=  depend_includepath   # library headers not changing, don't add depend\n\n###############################################################################\n#       Find/use installed version of cs106 lib and headers                   #\n###############################################################################\n\n# Library installed into per-user writable data location from QtStandardPaths\nwin32|win64     { QTP_EXE = qtpaths.exe } else { QTP_EXE = qtpaths }\nUSER_DATA_DIR   =   $$system($$[QT_INSTALL_BINS]/$$QTP_EXE --writable-path GenericDataLocation)\n\nSPL_DIR         =   $${USER_DATA_DIR}/cs106\nSTATIC_LIB      =   $$system_path($${SPL_DIR}/lib/libcs106.a)\nVERSION_FILE =      $$system_path($${SPL_DIR}/lib/spl_version)\n\n# link against libcs106.a, add library headers to search path\n# libcs106 requires libpthread, add link here\nLIBS            +=  -lcs106 -lpthread\nQMAKE_LFLAGS    =   -L$$shell_quote($${SPL_DIR}/lib)\n# put PWD first in search list to allow local copy to shadow if needed\nINCLUDEPATH     +=  $$PWD \"$${SPL_DIR}/include\"\n\n###############################################################################\n#       Configure project with custom settings                                #\n###############################################################################\n\n# changes to headers require recompilation\nDEPENDPATH += $$PWD\n\n# remove spaces from target executable for better Windows compatibility\nTARGET      =   $$replace(TARGET, \" \", _)\n\n# set DESTDIR to project root dir, this is where executable/app will deploy and run\nDESTDIR     =   $$PWD\n\n# student writes ordinary main() function, but it must be called within a\n# wrapper main() that handles library setup/teardown. Rename student's\n# to distinguish between the two main() functions and avoid symbol clash\n# Ask Julie if you are curious why main->qMain->studentMain\nDEFINES     +=  main=qMain qMain=studentMain\n\n###############################################################################\n#       Gather files to list in Qt Creator project browser                    #\n###############################################################################\n\n# honeypot to trick Qt Creator to allow glob-all to coexist with user-added files\n# Qt looks for first 'SOURCES *=' line and lists user-added .cpp/h files there.\n# Afterward we glob-add files to SOURCES ourselves. Operator *= will unique\n# entries, so no worries about duplicates\nSOURCES         *=  \"\"\nHEADERS         *=  \"\"\n\n# Gather any .cpp or .h files within the project folder (student/starter code).\n# Second argument true makes search recursive\nSOURCES         *=  $$files(*.cpp, true)\nHEADERS         *=  $$files(*.h, true)\n\n# Gather resource files (image/sound/etc) from res dir, list under \"Other files\"\nOTHER_FILES     *=  $$files(res/*, true)\n# Gather text files from root dir or anywhere recursively\nOTHER_FILES     *=  $$files(*.txt, true)\n\n###############################################################################\n#       Configure compiler, compile flags                                     #\n###############################################################################\n\n# Configure flags for the C++ compiler\n# (In general, many warnings/errors are enabled to tighten compile-time checking.\n# A few overly pedantic/confusing errors are turned off to avoid confusion.)\n\nCONFIG          +=  sdk_no_version_check   # removes spurious warnings on Mac OS X\n\n# MinGW compiler lags, be conservative and use C++11 on all platforms\n# rather than special case\nCONFIG          +=  c++11\n\n# WARN_ON has -Wall -Wextra, add/remove a few specific warnings\nQMAKE_CXXFLAGS_WARN_ON      +=  -Werror=return-type\nQMAKE_CXXFLAGS_WARN_ON      +=  -Werror=uninitialized\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wunused-parameter\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wmissing-field-initializers\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wno-old-style-cast\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wno-sign-compare\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wno-sign-conversion\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wno-unused-const-variable\n\n*-clang { # warning flags specific to clang\n    QMAKE_CXXFLAGS_WARN_ON  +=  -Wempty-init-stmt\n    QMAKE_CXXFLAGS_WARN_ON  +=  -Wignored-qualifiers\n}\n\n*-g++ {   # warning flags specific to g++\n    QMAKE_CXXFLAGS_WARN_ON  +=  -Wlogical-op\n}\n\n###############################################################################\n#       Detect/report errors in project structure                             #\n###############################################################################\n\n# error if project opened from within a ZIP archive (common mistake on Windows)\nwin32|win64 {\n    contains(PWD, .*\\.zip.*) | contains(PWD, .*\\.ZIP.*) {\n        warning( \"*** You are trying to open this project from within a ZIP archive.\" )\n        warning( \"*** You must first extract the files then open in Qt Creator.\" )\n        warning( \"*** In File Explorer open the ZIP and choose to Extract All.\" )\n        error( Exiting. Extract project from ZIP first.)\n    }\n}\n\n# error if name of directory has chars that may cause trouble for qmake/make/shell\nPROJECT_DIR = $$basename(PWD)\nFOUND  = $$PROJECT_DIR\nFOUND ~= s|[a-z A-Z 0-9 _.+-]||   # yes, spaces ok, limited punctuation, $ % & are dicey\n!isEmpty(FOUND) {\n    warning( \"*** The name of your project directory contains the disallowed characters: $$FOUND\" )\n    warning( \"*** The allowed characters are letters, numbers, and simple punctuation.\" )\n    warning( \"*** Please rename to a simple name such as Assignment_1 that contains no disallowed characters.\" )\n    error(Exiting. Rename project directory to remove disallowed characters. )\n}\n\n\n!isEmpty(CURRENTLY_INSTALLING_LIBRARY) { # special case for Welcome app in CS106 package\n    message(\"Installing cs106 package, will skip library version check\")\n} else {\n    !exists($$STATIC_LIB) {             # confirm static lib exists\n        warning(\"No CS106 library found. Need to install.\")\n        error(Exiting. Install CS106 package following instructions at $$SPL_URL)\n    }\n    !exists($$VERSION_FILE) {           # confirm version file exists\n         warning(\"Installed library has no version. Re-install to get correct version.\")\n         error(Exiting. Re-install CS106 package following instructions at $$SPL_URL)\n    }\n    CONTENTS = $$cat($$VERSION_FILE)    # confirm version file contents match this .pro file\n    !equals(CONTENTS, $$SPL_VERSION) {\n        warning( \"Installed library version $$CONTENTS, expected $$SPL_VERSION\" )\n        error(Exiting. Re-install CS106 package following instructions at $$SPL_URL)\n    }\n}\n"
  },
  {
    "path": "DebugHelper/README.md",
    "content": "Use generate.py to generate C++ program to instantiate 106B collections with various element types.\nCompile and run under debugger and inspect variables to observe that debug helpers are properly installed and working.\n\nReminders of useful documentation about the debug pretty printers\n\n- Qt Creator.app/Contents/Resources/debugger/README.txt\n- Qt Creator.app/Contents/Resources/debugger/personaltypes.py\n- https://doc.qt.io/qtcreator/creator-debugging-helpers.html\n\n\nstanfordtypes.py\n----------------\nLinear types (Vector, Deque, Stack, Queue) under the hood are using std::vector or std::deque, same for Grid and PriorityQueue too\nThese collections tend to either all work or all broken, find the underlying fix will usually corrects all\n\nTree types (Map, Set)\nKeep in mind that Set<T> is actually Map<T,bool>\nDissection of key/value blob is where most of the problems have been\n\nHash types (HashMap, HashSet)\nKeep in mind that HashSet<T> is actually HashMap<T,bool>\nDissection of key/value blob is where most of the problems have been\n\n\nBug reports\nhttps://bugreports.qt.io/browse/QTCREATORBUG-18287\nFrom https://forum.qt.io/topic/142639/qt-creator-debugger-is-slow\n\n!qtcreatorcdbext.script print(cdbext.lookupType('std::vector<unsigned __int64,std::allocator<unsigned __int64> >*',0).name())\n\nThis can be pasted into the Command field of the Debugger Log which can be enabled under View -> Views 0> Debugger Log while in debug mode.\n\n\nFall 2025\n---------\nIn past Qt did not compute the alignment for a struct correctly, just guessed 8.\nAs of 6.9, it is trying to compute max alignment from fields\nbut it iterates over get_fields_array() when it should instead b get_members_array()\nthis causes it to ignore base class members, and for class such as std::string this is deadly.. ugh.\nI put in a patch into stanfordtypes.py to do the correct calculation where we depend on alignment\nsuch as extract key/value pair for map and hashmap, this brought map and hashmap back to working.\nNeeded a followup to also fix alignment for struct which is typedef\n"
  },
  {
    "path": "DebugHelper/assign_uses.cpp",
    "content": "#include \"shared.h\"\nusing namespace std;\n\nvoid assign_uses() {\n    Vector<Bit> huffBit_Vector = {0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1};\n    Queue<Bit> huffBit_Queue =   {1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0};\n    Map<char, Queue<Bit>> huffBit_Map_Q {{'a', {0, 1, 1, 1}}, {'b', {1, 0}}};\n    Map<char, Vector<Bit>> huffBit_Map_V = {{'a', {1, 1, 1, 0}}, {'b', {0, 0}}};\n\n    Node *ptr = new Node {'A', nullptr, nullptr};\n    Node on_stack = {'Z', nullptr, nullptr};\n    PriorityQueue<Node *> huffNodePtr_PQ {{4.0, ptr}};\n    Vector<Node *> huffNodePtr_Vector = {ptr, &on_stack};\n    Set<Node *> huffNodePtr_Set = {ptr};\n    Map<char, Node *> huffNodePtr_Map = {{'a', ptr}, {'b', &on_stack}};\n\n    Map<string, Set<string>> siteIndex_Map_Set =  {{\"home\", {\"the\", \"end\"}}, {\"faq\", {\"what\", \"why\"}}};\n    Grid<char> boggle_Grid = {{'B', 'O', 'G'}, {'G', 'L', 'E'}};\n    GridLocationRange redistrict_Range(0,0,3,6);\n    GridLocation maze_Loc(2, 4);\n    Stack<GridLocation> maze_Stack_Loc = { {1, 2}, {3, 4}, {5, 6}, {7, 8}};\n    BREAKPOINT;\n}\n"
  },
  {
    "path": "DebugHelper/bits.cpp",
    "content": "#include \"bits.h\"\n#include \"error.h\"\n#include <string>\n#include <vector>\nusing namespace std;\n\n/**\n * Routines for managing Bit class and for reading/write Bits within EncodedData\n * objects to a stream.  The public interface is provided in bits.h header file.\n * You do not need to revew the implementation details in this file but are welcome\n * to take a peek if you're curious.\n */\n\nBit::Bit(int value) {\n    /* Check for use of chararacter values. */\n    if (value == '0' || value == '1') {\n        error(\"You have attempted to create a bit equal to the character '0' or '1'. \"\n              \"The characters '0' and '1' are not the same as the numbers 0 and 1. \"\n              \"Edit your code to instead use the numeric values 0 and 1 instead.\");\n    }\n    if (value != 0 && value != 1) {\n        error(\"Illegal value for a bit: \" + to_string(value));\n    }\n\n    _value = (value == 1);\n}\n\nbool operator== (Bit lhs, Bit rhs) {\n    return lhs._value == rhs._value;\n}\nbool operator!= (Bit lhs, Bit rhs) {\n    return !(lhs == rhs);\n}\nostream& operator<< (ostream& out, Bit bit) {\n    return out << (bit._value? '1' : '0');\n}\n\n\nnamespace {\n    /**\n     * Validates that the given EncodedData obeys all the invariants we expect it to.\n     */\n    void checkIntegrityOf(const EncodedData& data) {\n        /* Number of distinct characters must be at least two. */\n        if (data.treeLeaves.size() < 2) {\n            error(\"File must contain at least two distinct characters.\");\n        }\n\n        /* Number of bits in tree shape should be exactly 2c - 1, where c is the number of\n         * distinct characters.\n         */\n        if (data.treeShape.size() != data.treeLeaves.size() * 2 - 1) {\n            error(\"Wrong number of tree bits for the given leaves.\");\n        }\n    }\n\n    /* Utility types for reading/writing individual bits. Inspired by a\n     * similar implementation by Julie Zelenski.\n     */\n    class BitWriter {\n    public:\n        explicit BitWriter(ostream& o) : _out(o) {}\n        ~BitWriter() {\n            if (_bitIndex != 0) flush();\n        }\n\n        void put(Bit b) {\n            if (b != 0) {\n                _bitBuffer |= (1U << _bitIndex);\n            }\n\n            _bitIndex++;\n            if (_bitIndex == 8) {\n                flush();\n            }\n        }\n\n    private:\n        void flush() {\n            _out.put(_bitBuffer);\n            _bitBuffer = 0;\n            _bitIndex = 0;\n        }\n\n        ostream& _out;\n        uint8_t _bitBuffer = 0;\n        uint8_t _bitIndex  = 0;\n    };\n\n    class BitReader {\n    public:\n        explicit BitReader(istream& i) : _in(i) {}\n\n        Bit get() {\n            if (_bitIndex == 8) readMore();\n\n            Bit result = !!(_bitBuffer & (1U << _bitIndex));\n            _bitIndex++;\n            return result;\n        }\n\n    private:\n        istream& _in;\n        uint8_t _bitBuffer = 0;\n        uint8_t _bitIndex  = 8;\n\n        void readMore() {\n            char read;\n            if (!_in.get(read)) {\n                error(\"Unexpected end of file when reading bits.\");\n            }\n\n            _bitBuffer = read;\n            _bitIndex = 0;\n        }\n    };\n\n    /* \"CS106B A7\" */\n    const uint32_t kFileHeader = 0xC5106BA7;\n}\n\n/**\n * We store EncodedData on disk as follows:\n *\n *\n * 1 byte:  number of distinct characters, minus one.\n * c bytes: the leaves of the tree, in order.\n * 1 byte:  number of valid bits in the last byte.\n * n bits:  tree bits, followed by message bits.\n *\n * We don't need to store how many bits are in the tree, since it's always given\n * by 2*c - 1, as this is the number of nodes in a full binary tree with c leaves.\n */\nvoid writeData(EncodedData& data, ostream& out) {\n    /* Validate invariants. */\n    checkIntegrityOf(data);\n\n    /* Write magic header. */\n    out.write(reinterpret_cast<const char *>(&kFileHeader), sizeof kFileHeader);\n\n    /* Number of characters. */\n    const uint8_t charByte = data.treeLeaves.size() - 1;\n    out.put(charByte);\n\n    /* Tree leaves. */\n    while (!data.treeLeaves.isEmpty()) out.put(data.treeLeaves.dequeue());\n\n    /* Number of bits in the last byte to read. */\n    uint8_t modulus = (data.treeShape.size() + data.messageBits.size()) % 8;\n    if (modulus == 0) modulus = 8;\n    out.put(modulus);\n\n    /* Bits themselves. */\n    BitWriter writer(out);\n    while (!data.treeShape.isEmpty()) writer.put(data.treeShape.dequeue());\n    while (!data.messageBits.isEmpty()) writer.put(data.messageBits.dequeue());\n}\n\n/**\n * Reads EncodedData from stream.\n */\nEncodedData readData(istream& in) {\n    /* Read back the magic header and make sure it matches. */\n    uint32_t header;\n    if (!in.read(reinterpret_cast<char *>(&header), sizeof header) ||\n        header != kFileHeader) {\n        error(\"Chosen file is not a Huffman-compressed file.\");\n    }\n\n    EncodedData data;\n\n    /* Read the character count. */\n    char skewCharCount;\n    if (!in.get(skewCharCount)) {\n        error(\"Error reading character count.\");\n    }\n\n    /* We offset this by one - add the one back. */\n    int charCount = uint8_t(skewCharCount);\n    charCount++;\n\n    if (charCount < 2) {\n        error(\"Character count is too low for this to be a valid file.\");\n    }\n\n    /* Read in the leaves. */\n    vector<char> leaves(charCount);\n    if (!in.read(leaves.data(), leaves.size())) {\n        error(\"Could not read in all tree leaves.\");\n    }\n    for (char leaf: leaves) {\n        data.treeLeaves.enqueue(leaf);\n    }\n\n    /* Read in the modulus. */\n    char signedModulus;\n    if (!in.get(signedModulus)) {\n        error(\"Error reading modulus.\");\n    }\n    uint8_t modulus = signedModulus;\n\n    /* See how many bits we need to read. To do this, jump to the end of the file\n     * and back to where we are to count the bytes, then transform that to a number\n     * of bits.\n     *\n     * Thanks to Julie Zelenski for coming up with this technique!\n     */\n    auto currPos = in.tellg();\n    if (!in.seekg(0, istream::end)) {\n        error(\"Error seeking to end of file.\");\n    }\n    auto endPos  = in.tellg();\n    if (!in.seekg(currPos, istream::beg)) {\n        error(\"Error seeking back to middle of file.\");\n    }\n\n    /* Number of bits to read = (#bytes - 1) * 8 + modulus. */\n    uint64_t bitsToRead = (endPos - currPos - 1) * 8 + modulus;\n\n    /* Read in the tree shape bits. */\n    BitReader reader(in);\n    for (int i = 0; i < 2 * charCount - 1; i++) {\n        data.treeShape.enqueue(reader.get());\n        bitsToRead--;\n    }\n\n    /* Read in the message bits. */\n    while (bitsToRead > 0) {\n        data.messageBits.enqueue(reader.get());\n        bitsToRead--;\n    }\n\n    return data;\n}\n\n/* For debugging purposes. */\nostream& operator<< (ostream& out, const EncodedData& data) {\n    ostringstream builder;\n    builder << \"{treeShape:\" << data.treeShape\n            << \",treeLeaves:\" << data.treeLeaves\n            << \",messageBits:\" << data.messageBits\n            << \"}\";\n    return out << builder.str();\n}\n"
  },
  {
    "path": "DebugHelper/bits.h",
    "content": "#pragma once\n#include <ostream>\n#include \"queue.h\"\n\n/**\n * Type representing a single bit value (0 or 1).  A Bit is largely\n * interchangeable with an int, except that a Bit raises an error\n * if value is anything other than 0 or 1.\n *\n *     Bit zero = 0;\n *\n *     queue.enqueue(0);\n *     queue.enqueue(Bit(1));\n *\n *     if (bit == 0) { ... }\n */\nclass Bit {\npublic:\n    Bit() = default;\n    Bit(int value);\n\n    friend bool operator== (Bit lhs, Bit rhs);\n    friend bool operator!= (Bit lhs, Bit rhs);\n    friend std::ostream& operator<< (std::ostream& out, Bit bit);\n\nprivate:\n    bool _value;\n};\n\n\n\n/*\n * Type representing a binary-encoded message. The messageBits contains\n * the encoded message text and the treeShape and treeLeaves are the\n * flattened representation of the encoding tree.\n */\nstruct EncodedData {\n    Queue<Bit>  treeShape;\n    Queue<char> treeLeaves;\n    Queue<Bit>  messageBits;\n};\n\n\n/* For debugging purposes, you can print EncodedData objects to cout to see\n * what they contain.\n */\nstd::ostream& operator<< (std::ostream& out, const EncodedData& data);\n\n\n\n/**\n * Routines for reading and writing EncodedData objects to a stream. The code in\n * here is what actually touches files on disk.\n */\nvoid writeData(EncodedData& file, std::ostream& out);\nEncodedData readData(std::istream& in);\n\n"
  },
  {
    "path": "DebugHelper/generate_class_coverage.py",
    "content": "#! /usr/bin/env python3\n#\n# Generate C++ code with 106B collection classes of various elem type\n# Authored by Jeremy Barenholz & Julie Zelenski\n\nimport copy\nfrom typing import List, Optional, Any\n\nclass Type:\n    def __init__(\n        self,\n        inner: 'Type',\n        container: Optional['Type'] = None,\n        first: Optional['Type'] = None\n    ) -> None:\n        self.inner = inner\n        self.container = container\n        self.first = first\n\n    def varname(self) -> str:\n        if not self.container and not self.first:\n            return f'{self.inner}'\n        elif not self.first:\n            return f'{self.container}_{self.inner.varname()}'\n        else:\n            return (f'{self.container}_{self.first.varname()}'\n                    f'_{self.inner.varname()}')\n\n    def __str__(self) -> str:\n        if not self.container and not self.first:\n            return f'{self.inner}'\n        elif not self.first:\n            return f'{self.container}<{self.inner}>'\n        else:\n            return f'{self.container}<{self.first}, {self.inner}>'\n\n    def __repr__(self) -> str:\n        return f'Type({str(self)})'\n\n    def __eq__(self, other) -> bool:\n        return str(self) == str(other)\n\n    def __hash__(self) -> int:\n        return hash(str(self))\n\nbasic_types = [\n    'bool',\n    'char',\n    'double',\n    'int',\n    'string',\n    'GridLocation',\n    'Thing'\n]\n\nbasic_values = {\n    'bool': ['false', 'true'],\n    'char': [f\"'{c}'\" for c in 'bB'],\n    'double': [str(d) for d in [3.14159, -0.25]],\n    'int': [str(i) for i in [106, 1891]],\n    'string': [f'\"{s}\"' for s in ['stanford', 'abcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ']],\n    'GridLocation': [f'{{{r}, {c}}}' for r,c in [(3,14)]],\n    'Thing': [f'(Thing){{{len(s)}, \"{s}\"}}' for s in ['purple']]}\n\ndef create_init_list_str(type: Type) -> str:\n    if type.container == 'Grid':\n        n_rows = 3\n        inner_parts = ['{' + f\"{', '.join(basic_values[type.inner])}\" + '}'\n                       for i in range(n_rows)]\n    elif type.container == 'PriorityQueue' and not type.first:\n        new_type = copy.copy(type)\n        new_type.first = Type('int')\n        return create_init_list_str(new_type)\n    elif type.first:\n        n = min(len(basic_values[type.inner]), len(basic_values[type.first]))\n        inner_parts = [\n            '{'\n            + f'{basic_values[type.first][i]}, {basic_values[type.inner][i]}'\n            + '}'\n            for i in range(n)\n        ]\n    else:\n        inner_parts = basic_values[type.inner]\n\n    return '{' + f\"{', '.join(inner_parts)}\" + '}'\n\ndef types_for_container(outer) -> List[Type]:\n    types = []\n    for inner in [Type(b) for b in basic_types]:\n        if outer.endswith('Map'):\n            for key in basic_types:\n                types.append(Type(inner, outer, Type(key)))\n        else:\n            types.append(Type(inner, outer))\n    return types\n\ndef generate_all_combos(fn_name, containers) -> str:\n    lines = [f\"void {fn_name}() {{\"]\n    for outer in containers:\n        lines += ['\\t{'] + [\n        '\\t\\t'\n        + ' '.join([str(t), t.varname().lower(), '=', create_init_list_str(t) + ';'])\n        for t in types_for_container(outer)] + ['\\t\\tBREAKPOINT;\\n\\t}']\n    lines += [\"}\\n\\n\"]\n    return '\\n'.join(lines)\n\ndef generate_module(fn_name, containers):\n    code = '#include \"shared.h\"\\nusing namespace std;\\n\\n' + generate_all_combos(fn_name, containers)\n    with open(fn_name + \".cpp\", \"w\") as f:\n        f.write(code)\n\nif __name__ == '__main__':\n    generate_module(\"stanford_linear\", ['Deque', 'Grid', 'Queue','Stack','Vector'])\n    generate_module(\"stanford_hash\", ['HashMap', 'HashSet'])\n    generate_module(\"stanford_tree\",  ['Map', 'Set'])\n    generate_module(\"stanford_pq\", ['PriorityQueue'])\n"
  },
  {
    "path": "DebugHelper/main.cpp",
    "content": "#include \"shared.h\"\n\nvoid stanford_linear();\nvoid stanford_hash();\nvoid stanford_tree();\nvoid stanford_pq();\nvoid assign_uses();\nvoid node_pair();\nvoid stl();\n\nint main() {\n    stanford_linear();\n    stanford_hash();\n    stanford_tree();\n    stanford_pq();\n    node_pair();\n    assign_uses();\n    stl();\n    return 0;\n}\n"
  },
  {
    "path": "DebugHelper/node_pair.cpp",
    "content": "#include \"shared.h\"\nusing namespace std;\n\nvoid node_pair() {\n    // key align 1,4,8 and val align 1,4,8\n    Thing t = {1891, \"stanford\"};\n    GridLocation gl = {3, 14};\n    {\n        Map<char, char> treenode_11 = { {'B','b'} };\n        Map<char, int> treenode_14 = { {'B',106} };\n        Map<char, double> treenode_18 = { {'B',0.5} };\n        Map<int, char> treenode_41 = { {106,'B'} };\n        Map<int, int> treenode_44 = { {106,1891} };\n        Map<int, double> treenode_48 = { {106,0.5} };\n        Map<double, char> treenode_81 = { {0.5,'B'} };\n        Map<double, int> treenode_84 = { {0.5,106} };\n        Map<double, double> treenode_88 = { {0.5,0.25} };\n        BREAKPOINT;\n    }\n    {\n        HashMap<char, char> hashnode_11 = { {'B','b'} };\n        HashMap<char, int> hashnode_14 = { {'B',106} };\n        HashMap<char, double> hashnode_18 = { {'B',0.5} };\n        HashMap<int, char> hashnode_41 = { {106,'B'} };\n        HashMap<int, int> hashnode_44 = { {106,1891} };\n        HashMap<int, double> hashnode_48 = { {106,0.5} };\n        HashMap<double, char> hashnode_81 = { {0.5,'B'} };\n        HashMap<double, int> hashnode_84 = { {0.5,106} };\n        HashMap<double, double> hashnode_88 = { {0.5,0.25} };\n        BREAKPOINT;\n    }\n    // struct with align 4,8 as key, again as val\n    {\n        Map<char, GridLocation> treenode_14 = { {'B',gl} };\n        Map<char, Thing> treenode_18 = { {'B',t} };\n        Map<int, GridLocation> treenode_44 = { {106,gl} };\n        Map<int, Thing> treenode_48 = { {106,t} };\n        Map<double, GridLocation> treenode_84 = { {0.5,gl} };\n        Map<double, Thing> treenode_88 = { {0.5,t} };\n\n        Map<GridLocation, char> treenode_41 = { {gl,'B'} };\n        Map<Thing, char> treenode_81 = { {t,'B'} };\n        Map<GridLocation, int> treenode_44s = { {gl,106} };\n        Map<Thing, int> treenode_48s = { {t,106} };\n        Map<GridLocation, double> treenode_84s = { {gl,0.5} };\n        Map<Thing, double> treenode_88s = { {t,0.5} };\n        BREAKPOINT;\n    }\n    {\n        HashMap<char, GridLocation> hashnode_14 = { {'B',gl} };\n        HashMap<char, Thing> hashnode_18 = { {'B',t} };\n        HashMap<int, GridLocation> hashnode_44 = { {106,gl} };\n        HashMap<int, Thing> hashnode_48 = { {106,t} };\n        HashMap<double, GridLocation> hashnode_84 = { {0.5,gl} };\n        HashMap<double, Thing> hashnode_88 = { {0.5,t} };\n\n        HashMap<GridLocation, char> hashnode_41 = { {gl,'B'} };\n        HashMap<Thing, char> hashnode_81 = { {t,'B'} };\n        HashMap<GridLocation, int> hashnode_44s = { {gl,106} };\n        HashMap<Thing, int> hashnode_48s = { {t,106} };\n        HashMap<GridLocation, double> hashnode_84s = { {gl,0.5} };\n        HashMap<Thing, double> hashnode_88s = { {t,0.5} };\n        BREAKPOINT;\n    }\n}\n\n"
  },
  {
    "path": "DebugHelper/shared.cpp",
    "content": "#include \"shared.h\"\n\nint hashCode(const Thing& t) {\n    return t.num;\n}\nbool operator ==(const Thing& t1, const Thing& t2) {\n    return t1.num == t2.num && t1.label == t2.label;\n}\nbool operator <(const Thing& t1, const Thing& t2) {\n    return stanfordcpplib::collections::compareTo(t1.num, t2.num, t1.label, t2.label) < 0;\n}"
  },
  {
    "path": "DebugHelper/shared.h",
    "content": "#pragma once\n#include \"deque.h\"\n#include \"grid.h\"\n#include \"queue.h\"\n#include \"stack.h\"\n#include \"vector.h\"\n#include \"hashmap.h\"\n#include \"hashset.h\"\n#include \"map.h\"\n#include \"set.h\"\n#include \"priorityqueue.h\"\n#include \"bits.h\"\n\nstruct Thing {\n    int num;\n    std::string label;\n};\nint hashCode(const Thing& t);\nbool operator ==(const Thing& t1, const Thing& t2);\nbool operator <(const Thing& t1, const Thing& t2);\n\nstruct Node {\n    char letter;\n    Node *left, *right;\n};\n\n#if defined(__APPLE__)\n#define BREAKPOINT __builtin_debugtrap(); cout << \"BREAK @\" << __LINE__ << endl;\n#elif defined(_WIN32)\n#define BREAKPOINT __debugbreak(); cout << \"BREAK @\" << __LINE__ << endl;\n#else\nraise(SIGTRAP); cout << \"BREAK @\" << __LINE__ << endl;\n#endif"
  },
  {
    "path": "DebugHelper/stanford_hash.cpp",
    "content": "#include \"shared.h\"\nusing namespace std;\n\nvoid stanford_hash() {\n\t{\n\t\tHashMap<bool, bool> hashmap_bool_bool = {{false, false}, {true, true}};\n\t\tHashMap<char, bool> hashmap_char_bool = {{'b', false}, {'B', true}};\n\t\tHashMap<double, bool> hashmap_double_bool = {{3.14159, false}, {-0.25, true}};\n\t\tHashMap<int, bool> hashmap_int_bool = {{106, false}, {1891, true}};\n\t\tHashMap<string, bool> hashmap_string_bool = {{\"stanford\", false}, {\"abcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\", true}};\n\t\tHashMap<GridLocation, bool> hashmap_gridlocation_bool = {{{3, 14}, false}};\n\t\tHashMap<Thing, bool> hashmap_thing_bool = {{(Thing){6, \"purple\"}, false}};\n\t\tHashMap<bool, char> hashmap_bool_char = {{false, 'b'}, {true, 'B'}};\n\t\tHashMap<char, char> hashmap_char_char = {{'b', 'b'}, {'B', 'B'}};\n\t\tHashMap<double, char> hashmap_double_char = {{3.14159, 'b'}, {-0.25, 'B'}};\n\t\tHashMap<int, char> hashmap_int_char = {{106, 'b'}, {1891, 'B'}};\n\t\tHashMap<string, char> hashmap_string_char = {{\"stanford\", 'b'}, {\"abcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\", 'B'}};\n\t\tHashMap<GridLocation, char> hashmap_gridlocation_char = {{{3, 14}, 'b'}};\n\t\tHashMap<Thing, char> hashmap_thing_char = {{(Thing){6, \"purple\"}, 'b'}};\n\t\tHashMap<bool, double> hashmap_bool_double = {{false, 3.14159}, {true, -0.25}};\n\t\tHashMap<char, double> hashmap_char_double = {{'b', 3.14159}, {'B', -0.25}};\n\t\tHashMap<double, double> hashmap_double_double = {{3.14159, 3.14159}, {-0.25, -0.25}};\n\t\tHashMap<int, double> hashmap_int_double = {{106, 3.14159}, {1891, -0.25}};\n\t\tHashMap<string, double> hashmap_string_double = {{\"stanford\", 3.14159}, {\"abcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\", -0.25}};\n\t\tHashMap<GridLocation, double> hashmap_gridlocation_double = {{{3, 14}, 3.14159}};\n\t\tHashMap<Thing, double> hashmap_thing_double = {{(Thing){6, \"purple\"}, 3.14159}};\n\t\tHashMap<bool, int> hashmap_bool_int = {{false, 106}, {true, 1891}};\n\t\tHashMap<char, int> hashmap_char_int = {{'b', 106}, {'B', 1891}};\n\t\tHashMap<double, int> hashmap_double_int = {{3.14159, 106}, {-0.25, 1891}};\n\t\tHashMap<int, int> hashmap_int_int = {{106, 106}, {1891, 1891}};\n\t\tHashMap<string, int> hashmap_string_int = {{\"stanford\", 106}, {\"abcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\", 1891}};\n\t\tHashMap<GridLocation, int> hashmap_gridlocation_int = {{{3, 14}, 106}};\n\t\tHashMap<Thing, int> hashmap_thing_int = {{(Thing){6, \"purple\"}, 106}};\n\t\tHashMap<bool, string> hashmap_bool_string = {{false, \"stanford\"}, {true, \"abcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"}};\n\t\tHashMap<char, string> hashmap_char_string = {{'b', \"stanford\"}, {'B', \"abcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"}};\n\t\tHashMap<double, string> hashmap_double_string = {{3.14159, \"stanford\"}, {-0.25, \"abcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"}};\n\t\tHashMap<int, string> hashmap_int_string = {{106, \"stanford\"}, {1891, \"abcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"}};\n\t\tHashMap<string, string> hashmap_string_string = {{\"stanford\", \"stanford\"}, {\"abcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\", \"abcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"}};\n\t\tHashMap<GridLocation, string> hashmap_gridlocation_string = {{{3, 14}, \"stanford\"}};\n\t\tHashMap<Thing, string> hashmap_thing_string = {{(Thing){6, \"purple\"}, \"stanford\"}};\n\t\tHashMap<bool, GridLocation> hashmap_bool_gridlocation = {{false, {3, 14}}};\n\t\tHashMap<char, GridLocation> hashmap_char_gridlocation = {{'b', {3, 14}}};\n\t\tHashMap<double, GridLocation> hashmap_double_gridlocation = {{3.14159, {3, 14}}};\n\t\tHashMap<int, GridLocation> hashmap_int_gridlocation = {{106, {3, 14}}};\n\t\tHashMap<string, GridLocation> hashmap_string_gridlocation = {{\"stanford\", {3, 14}}};\n\t\tHashMap<GridLocation, GridLocation> hashmap_gridlocation_gridlocation = {{{3, 14}, {3, 14}}};\n\t\tHashMap<Thing, GridLocation> hashmap_thing_gridlocation = {{(Thing){6, \"purple\"}, {3, 14}}};\n\t\tHashMap<bool, Thing> hashmap_bool_thing = {{false, (Thing){6, \"purple\"}}};\n\t\tHashMap<char, Thing> hashmap_char_thing = {{'b', (Thing){6, \"purple\"}}};\n\t\tHashMap<double, Thing> hashmap_double_thing = {{3.14159, (Thing){6, \"purple\"}}};\n\t\tHashMap<int, Thing> hashmap_int_thing = {{106, (Thing){6, \"purple\"}}};\n\t\tHashMap<string, Thing> hashmap_string_thing = {{\"stanford\", (Thing){6, \"purple\"}}};\n\t\tHashMap<GridLocation, Thing> hashmap_gridlocation_thing = {{{3, 14}, (Thing){6, \"purple\"}}};\n\t\tHashMap<Thing, Thing> hashmap_thing_thing = {{(Thing){6, \"purple\"}, (Thing){6, \"purple\"}}};\n\t\tBREAKPOINT;\n\t}\n\t{\n\t\tHashSet<bool> hashset_bool = {false, true};\n\t\tHashSet<char> hashset_char = {'b', 'B'};\n\t\tHashSet<double> hashset_double = {3.14159, -0.25};\n\t\tHashSet<int> hashset_int = {106, 1891};\n\t\tHashSet<string> hashset_string = {\"stanford\", \"abcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"};\n\t\tHashSet<GridLocation> hashset_gridlocation = {{3, 14}};\n\t\tHashSet<Thing> hashset_thing = {(Thing){6, \"purple\"}};\n\t\tBREAKPOINT;\n\t}\n}\n\n"
  },
  {
    "path": "DebugHelper/stanford_linear.cpp",
    "content": "#include \"shared.h\"\nusing namespace std;\n\nvoid stanford_linear() {\n\t{\n\t\tDeque<bool> deque_bool = {false, true};\n\t\tDeque<char> deque_char = {'b', 'B'};\n\t\tDeque<double> deque_double = {3.14159, -0.25};\n\t\tDeque<int> deque_int = {106, 1891};\n\t\tDeque<string> deque_string = {\"stanford\", \"abcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"};\n\t\tDeque<GridLocation> deque_gridlocation = {{3, 14}};\n\t\tDeque<Thing> deque_thing = {(Thing){6, \"purple\"}};\n\t\tBREAKPOINT;\n\t}\n\t{\n\t\tGrid<bool> grid_bool = {{false, true}, {false, true}, {false, true}};\n\t\tGrid<char> grid_char = {{'b', 'B'}, {'b', 'B'}, {'b', 'B'}};\n\t\tGrid<double> grid_double = {{3.14159, -0.25}, {3.14159, -0.25}, {3.14159, -0.25}};\n\t\tGrid<int> grid_int = {{106, 1891}, {106, 1891}, {106, 1891}};\n\t\tGrid<string> grid_string = {{\"stanford\", \"abcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"}, {\"stanford\", \"abcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"}, {\"stanford\", \"abcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"}};\n\t\tGrid<GridLocation> grid_gridlocation = {{{3, 14}}, {{3, 14}}, {{3, 14}}};\n\t\tGrid<Thing> grid_thing = {{(Thing){6, \"purple\"}}, {(Thing){6, \"purple\"}}, {(Thing){6, \"purple\"}}};\n\t\tBREAKPOINT;\n\t}\n\t{\n\t\tQueue<bool> queue_bool = {false, true};\n\t\tQueue<char> queue_char = {'b', 'B'};\n\t\tQueue<double> queue_double = {3.14159, -0.25};\n\t\tQueue<int> queue_int = {106, 1891};\n\t\tQueue<string> queue_string = {\"stanford\", \"abcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"};\n\t\tQueue<GridLocation> queue_gridlocation = {{3, 14}};\n\t\tQueue<Thing> queue_thing = {(Thing){6, \"purple\"}};\n\t\tBREAKPOINT;\n\t}\n\t{\n\t\tStack<bool> stack_bool = {false, true};\n\t\tStack<char> stack_char = {'b', 'B'};\n\t\tStack<double> stack_double = {3.14159, -0.25};\n\t\tStack<int> stack_int = {106, 1891};\n\t\tStack<string> stack_string = {\"stanford\", \"abcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"};\n\t\tStack<GridLocation> stack_gridlocation = {{3, 14}};\n\t\tStack<Thing> stack_thing = {(Thing){6, \"purple\"}};\n\t\tBREAKPOINT;\n\t}\n\t{\n\t\tVector<bool> vector_bool = {false, true};\n\t\tVector<char> vector_char = {'b', 'B'};\n\t\tVector<double> vector_double = {3.14159, -0.25};\n\t\tVector<int> vector_int = {106, 1891};\n\t\tVector<string> vector_string = {\"stanford\", \"abcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"};\n\t\tVector<GridLocation> vector_gridlocation = {{3, 14}};\n\t\tVector<Thing> vector_thing = {(Thing){6, \"purple\"}};\n\t\tBREAKPOINT;\n\t}\n}\n\n"
  },
  {
    "path": "DebugHelper/stanford_pq.cpp",
    "content": "#include \"shared.h\"\nusing namespace std;\n\nvoid stanford_pq() {\n\t{\n\t\tPriorityQueue<bool> priorityqueue_bool = {{106, false}, {1891, true}};\n\t\tPriorityQueue<char> priorityqueue_char = {{106, 'b'}, {1891, 'B'}};\n\t\tPriorityQueue<double> priorityqueue_double = {{106, 3.14159}, {1891, -0.25}};\n\t\tPriorityQueue<int> priorityqueue_int = {{106, 106}, {1891, 1891}};\n\t\tPriorityQueue<string> priorityqueue_string = {{106, \"stanford\"}, {1891, \"abcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"}};\n\t\tPriorityQueue<GridLocation> priorityqueue_gridlocation = {{106, {3, 14}}};\n\t\tPriorityQueue<Thing> priorityqueue_thing = {{106, (Thing){6, \"purple\"}}};\n\t\tBREAKPOINT;\n\t}\n}\n\n"
  },
  {
    "path": "DebugHelper/stanford_tree.cpp",
    "content": "#include \"shared.h\"\nusing namespace std;\n\nvoid stanford_tree() {\n\t{\n\t\tMap<bool, bool> map_bool_bool = {{false, false}, {true, true}};\n\t\tMap<char, bool> map_char_bool = {{'b', false}, {'B', true}};\n\t\tMap<double, bool> map_double_bool = {{3.14159, false}, {-0.25, true}};\n\t\tMap<int, bool> map_int_bool = {{106, false}, {1891, true}};\n\t\tMap<string, bool> map_string_bool = {{\"stanford\", false}, {\"abcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\", true}};\n\t\tMap<GridLocation, bool> map_gridlocation_bool = {{{3, 14}, false}};\n\t\tMap<Thing, bool> map_thing_bool = {{(Thing){6, \"purple\"}, false}};\n\t\tMap<bool, char> map_bool_char = {{false, 'b'}, {true, 'B'}};\n\t\tMap<char, char> map_char_char = {{'b', 'b'}, {'B', 'B'}};\n\t\tMap<double, char> map_double_char = {{3.14159, 'b'}, {-0.25, 'B'}};\n\t\tMap<int, char> map_int_char = {{106, 'b'}, {1891, 'B'}};\n\t\tMap<string, char> map_string_char = {{\"stanford\", 'b'}, {\"abcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\", 'B'}};\n\t\tMap<GridLocation, char> map_gridlocation_char = {{{3, 14}, 'b'}};\n\t\tMap<Thing, char> map_thing_char = {{(Thing){6, \"purple\"}, 'b'}};\n\t\tMap<bool, double> map_bool_double = {{false, 3.14159}, {true, -0.25}};\n\t\tMap<char, double> map_char_double = {{'b', 3.14159}, {'B', -0.25}};\n\t\tMap<double, double> map_double_double = {{3.14159, 3.14159}, {-0.25, -0.25}};\n\t\tMap<int, double> map_int_double = {{106, 3.14159}, {1891, -0.25}};\n\t\tMap<string, double> map_string_double = {{\"stanford\", 3.14159}, {\"abcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\", -0.25}};\n\t\tMap<GridLocation, double> map_gridlocation_double = {{{3, 14}, 3.14159}};\n\t\tMap<Thing, double> map_thing_double = {{(Thing){6, \"purple\"}, 3.14159}};\n\t\tMap<bool, int> map_bool_int = {{false, 106}, {true, 1891}};\n\t\tMap<char, int> map_char_int = {{'b', 106}, {'B', 1891}};\n\t\tMap<double, int> map_double_int = {{3.14159, 106}, {-0.25, 1891}};\n\t\tMap<int, int> map_int_int = {{106, 106}, {1891, 1891}};\n\t\tMap<string, int> map_string_int = {{\"stanford\", 106}, {\"abcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\", 1891}};\n\t\tMap<GridLocation, int> map_gridlocation_int = {{{3, 14}, 106}};\n\t\tMap<Thing, int> map_thing_int = {{(Thing){6, \"purple\"}, 106}};\n\t\tMap<bool, string> map_bool_string = {{false, \"stanford\"}, {true, \"abcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"}};\n\t\tMap<char, string> map_char_string = {{'b', \"stanford\"}, {'B', \"abcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"}};\n\t\tMap<double, string> map_double_string = {{3.14159, \"stanford\"}, {-0.25, \"abcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"}};\n\t\tMap<int, string> map_int_string = {{106, \"stanford\"}, {1891, \"abcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"}};\n\t\tMap<string, string> map_string_string = {{\"stanford\", \"stanford\"}, {\"abcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\", \"abcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"}};\n\t\tMap<GridLocation, string> map_gridlocation_string = {{{3, 14}, \"stanford\"}};\n\t\tMap<Thing, string> map_thing_string = {{(Thing){6, \"purple\"}, \"stanford\"}};\n\t\tMap<bool, GridLocation> map_bool_gridlocation = {{false, {3, 14}}};\n\t\tMap<char, GridLocation> map_char_gridlocation = {{'b', {3, 14}}};\n\t\tMap<double, GridLocation> map_double_gridlocation = {{3.14159, {3, 14}}};\n\t\tMap<int, GridLocation> map_int_gridlocation = {{106, {3, 14}}};\n\t\tMap<string, GridLocation> map_string_gridlocation = {{\"stanford\", {3, 14}}};\n\t\tMap<GridLocation, GridLocation> map_gridlocation_gridlocation = {{{3, 14}, {3, 14}}};\n\t\tMap<Thing, GridLocation> map_thing_gridlocation = {{(Thing){6, \"purple\"}, {3, 14}}};\n\t\tMap<bool, Thing> map_bool_thing = {{false, (Thing){6, \"purple\"}}};\n\t\tMap<char, Thing> map_char_thing = {{'b', (Thing){6, \"purple\"}}};\n\t\tMap<double, Thing> map_double_thing = {{3.14159, (Thing){6, \"purple\"}}};\n\t\tMap<int, Thing> map_int_thing = {{106, (Thing){6, \"purple\"}}};\n\t\tMap<string, Thing> map_string_thing = {{\"stanford\", (Thing){6, \"purple\"}}};\n\t\tMap<GridLocation, Thing> map_gridlocation_thing = {{{3, 14}, (Thing){6, \"purple\"}}};\n\t\tMap<Thing, Thing> map_thing_thing = {{(Thing){6, \"purple\"}, (Thing){6, \"purple\"}}};\n\t\tBREAKPOINT;\n\t}\n\t{\n\t\tSet<bool> set_bool = {false, true};\n\t\tSet<char> set_char = {'b', 'B'};\n\t\tSet<double> set_double = {3.14159, -0.25};\n\t\tSet<int> set_int = {106, 1891};\n\t\tSet<string> set_string = {\"stanford\", \"abcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"};\n\t\tSet<GridLocation> set_gridlocation = {{3, 14}};\n\t\tSet<Thing> set_thing = {(Thing){6, \"purple\"}};\n\t\tBREAKPOINT;\n\t}\n}\n\n"
  },
  {
    "path": "DebugHelper/stl.cpp",
    "content": "#include \"shared.h\"\nusing namespace::std;\n\nvoid stl() {\n    std::vector<int> stl_v = {106,107};\n    Vector<int> stanford_v = {106, 107};\n    std::unordered_map<int, string> stl_um = {{106, \"stanford\"}};\n    std::map<int, string> stl_m = {{106, \"stanford\"}};\n    HashMap<int, string> stanford_hm = {{106, \"stanford\"}};\n    Map<int, string> stanford_m = {{106, \"stanford\"}};\n    BREAKPOINT;\n}\n\n"
  },
  {
    "path": "Docs/ErrorException.html",
    "content": "<html>\n<head>\n<title>ErrorException</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"img/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>libcs106</code> library, Academic Year 2025-26\n</div></td>\n</tr></table>\n<hr>\n<div class=include>#include \"error.h\"</div>\n<h1 class=header><code>class ErrorException</code></h1>\nThis exception is thrown by calls to the <code>error</code>\nfunction.  Typical code for catching errors looks like this:\n\n<pre>\n   try {\n      ... code in which an error might occur ...\n   } catch (ErrorException& ex) {\n      ... code to handle the error condition ...\n   }\n</pre>\n\nIf an <code>ErrorException</code> is thrown at any point in the\nrange of the <code>try</code> (including in functions called from\nthat code), control will jump immediately to the error handler.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Function</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:error\">error(<var>msg</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Signals an error condition in a program by throwing an <code>ErrorException</code> with the specified message.</td></tr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:error\"></a>\n<pre class=detailCode>\nvoid error(string msg);\n</pre>\n<div class=detailHTML>\nSignals an error condition in a program by throwing an\n<code>ErrorException</code> with the specified message.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nerror(msg);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Docs/GPoint.html",
    "content": "<html><head>\n<title>GPoint</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\">\n\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"img/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>libcs106</code> library, Academic Year 2025-26\n</div></td>\n</tr></table>\n<hr>\n<div class=\"include\">#include \"gtypes.h\"</div>\n<h1 class=\"header\"><code>struct GPoint</code></h1>\nThis struct contains two real-valued fields, <code>x</code> and <code>y</code>.  It is used to\nrepresent a location on the graphics plane.\n<table class=\"index\" width=\"100%\"><tbody>\n    <tr><td class=indexHead colspan=2>Fields</td>\n    </tr>\n    <tr>\n        <td class=indexKey><nobr>x<br></nobr></td><td class=indexSynopsis>&nbsp;</td>\n    </tr>\n    <tr>\n        <td class=indexKey><nobr>y<br></nobr></td><td class=indexSynopsis>&nbsp;</td>\n    </tr>\n\n<tr><td class=\"indexHead\" colspan=\"2\">Constructor</td>\n</tr>\n<tr>\n    <td class=\"indexKey\"><nobr><a href=\"#Constructor:GPoint\">GPoint()</a><br><a href=\"#Constructor:GPoint\">GPoint(x,&nbsp;y)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Creates a <code>GPoint</code> object with the specified <code>x</code> and <code>y</code> coordinates.</td>\n</tr>\n<tr>\n    <td class=\"indexHead\" colspan=\"2\">Methods</td>\n</tr>\n<tr>\n    <tr>\n        <td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a printable string representation of this <code>GPoint</code>.</td></tr>\n\n    </tr>\n</tbody></table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:GPoint\"></a>\n<pre class=\"detailCode\">GPoint();\nGPoint(double x, double y);\n</pre>\n<div class=\"detailHTML\">\nCreates a <code>GPoint</code> object with the specified <code>x</code>\nand <code>y</code> coordinates.  If the coordinates are not supplied,\nthe default constructor sets these fields to 0. The GPoint fields <code>x</code> and\n<code>y</code> can also directly accessed using dot notation.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">GPoint origin;\nGPoint pt(x, y);\n\npt.x = 44.5;\nif (pt.x < pt.y) ...\n</pre>\n\n<hr>\n<h2>Method detail</h2>\n\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=\"detailCode\">string toString() const;\n</pre>\n<div class=\"detailHTML\">\nConverts the <code>GPoint</code> to a string in the form\n<code>\"(</code><i>x</i><code>,</code>&nbsp;<i>y</i><code>)\"</code>.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">string str = pt.toString();\n</pre>\n\n<hr>\n\n\n</body></html>"
  },
  {
    "path": "Docs/Grid.html",
    "content": "<html>\n<head>\n<title>Grid</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"img/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>libcs106</code> library, Academic Year 2025-26\n</div></td>\n</tr></table>\n<hr>\n<div class=include>#include \"grid.h\"</div>\n<h1 class=header><code>class Grid&lt;<var>ValueType</var>&gt;</code></h1>\nThis class stores an indexed, two-dimensional array.\nRows and columns of the grid are accessed by 0-based indexes.\n\n<p>The following code,\nfor example, creates an identity matrix of size <code>n</code>, in which\nthe elements are 1.0 along the main diagonal and 0.0 everywhere else:\n\n<pre>\n   Grid&lt;double&gt; createIdentityMatrix(int n) {\n      Grid&lt;double&gt; matrix(n, n);\n      for (int i = 0; i &lt; n; i++) {\n         matrix[i][i] = 1.0;\n      }\n      return matrix;\n   }\n</pre>\n\n<table class=index width=100%>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Constructor</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Constructor:Grid\">Grid()</a></nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Initializes a new empty 0x0 grid.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Constructor:Grid\">Grid(<var>nRows</var>,&nbsp;<var>nCols</var>)</a></nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Initializes a new grid of the given size.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Constructor:Grid\">Grid(<var>nRows</var>,&nbsp;<var>nCols</var>,&nbsp;<var>value</var>)</a></nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Initializes a new grid of the given size, with every element set to the specified value.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Methods</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:clear\">clear()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Removes all elements from this grid.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:equals\">equals(<var>grid</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the two grids contain the same elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:fill\">fill(<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Sets every element in this grid to the given value.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:get\">get(<var>row</var>,&nbsp;<var>col</var>)</a>&nbsp;</nobr><br>\n\t\t\t<nobr><a href=\"#Method:get\">get(<var>gridLocation</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the element at the specified <code>row</code>/<code>col</code> or <code>gridLocation</code>  in this grid.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:inBounds\">inBounds(<var>row</var>,&nbsp;<var>col</var>)</a>&nbsp;</nobr><br>\n\t\t<nobr><a href=\"#Method:inBounds\">inBounds(<var>gridLocation</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the specified <code>row</code>/<code>col</code> or <code>gridLocation</code> is inside the bounds of this grid.</td>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:isEmpty\">isEmpty()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns true if this grid has 0 rows and/or 0 columns.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:locations\">locations()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns a range containing all GridLocations for this grid.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:mapAll\">mapAll(<var>fn</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Calls the specified function on each element of this grid.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:numCols\">numCols()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the number of columns in this grid.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:numRows\">numRows()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the number of rows in this grid.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:resize\">resize(<var>nRows</var>,&nbsp;<var>nCols</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Reinitializes this grid to have the specified number of rows and columns.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:set\">set(<var>row</var>,&nbsp;<var>col</var>,&nbsp;<var>value</var>)</a>&nbsp;</nobr><br>\n\t\t<nobr><a href=\"#Method:set\">set(<var>gridLocation</var>,&nbsp;<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Replaces the element at the specified <code>row</code>/<code>col</code>  or <code>gridLocation</code> in this grid with a new value.</td>\n\t</tr>\n\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:size\">size()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the total number of elements in this grid.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns a printable single-line string of this grid.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:toString2D\">toString2D()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns a printable 2-D string representation of this grid.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Operator</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:foreach\">for (ValueType elem : grid)&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Iterates through the elements in a grid in row-major order.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:[]\"><var>grid</var>[<var>row</var>][<var>col</var>]</a>&nbsp;</nobr><br>\n\t\t\t<a href=\"#Operator:[]\"><var>grid</var>[<var>gridLocation</var>]</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Overloads <code>[]</code> to select elements from this grid by row/col or GridLocation.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:==\"><var>grid1</var> == <var>grid2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>grid1</code> and <code>grid2</code> contain the same elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:!=\"><var>grid1</var> != <var>grid2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>grid1</code> and <code>grid2</code> are different.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:<<\"><var>ostream</var>&nbsp;&lt;&lt;&nbsp;<var>grid</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Outputs the contents of the grid to the given output stream.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:>>\"><var>istream</var>&nbsp;&gt;&gt;&nbsp;<var>grid</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Reads the contents of the given input stream into the grid.</td>\n\t</tr>\n</table>\n\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:Grid\"></a>\n<pre class=detailCode>\nGrid();\nGrid(int nRows, int nCols);\nGrid(int nRows, int nCols, const ValueType&amp; value);\n</pre>\n<div class=detailHTML>\nInitializes a new grid.\nThe first form of the constructor creates an empty grid that\ncontains zero rows and columns. The client must subsequently\ncall <code>resize</code> to set the dimensions.\n\n<p>The second form of the constructor is\nmore common and creates a grid with the specified number of rows\nand columns.  Each element of the grid is initialized to the\ndefault value for the type.\n\n<p>The third form also fills every location of the grid with the given value.\n\n<p>The second and third constructors signal an error if a negative number of rows or columns is passed.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGrid&lt;ValueType&gt; grid;\nGrid&lt;ValueType&gt; grid(nRows, nCols);\nGrid&lt;ValueType&gt; grid(nRows, nCols, value);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n\n<hr>\n<a name=\"Method:clear\"></a>\n<pre class=detailCode>\nvoid clear();\n</pre>\n<div class=detailHTML>\n\tSets every value in the grid to its element type's default value.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngrid.clear();\n</pre>\n\n\n<hr>\n<a name=\"Method:equals\"></a>\n<pre class=detailCode>\nbool equals(const Grid&amp; grid) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the two grids are the same size and contain exactly the same element values.\nIdentical in behavior to the <code>==</code> operator.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (grid.equals(grid2)) ...\n</pre>\n\n<hr>\n<a name=\"Method:fill\"></a>\n<pre class=detailCode>\nvoid fill(const ValueType&amp; value) const;\n</pre>\n<div class=detailHTML>\nSets every element in this grid to the given value.\nThe entire contents of the grid are replaced with this value in every location.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngrid.fill(value);\n</pre>\n\n<hr>\n<a name=\"Method:get\"></a>\n<pre class=detailCode>\nValueType get(int row, int col);\nValueType get(GridLocation loc);\nconst ValueType&amp; get(int row, int col) const;\nconst ValueType&amp; get(GridLocation loc) const;\n</pre>\n<div class=detailHTML>\nReturns the element at the specified <code>row</code>/<code>col</code>\nlocation or <code>GridLocation</code> in this grid.  This method signals an error if the\nspecified location is outside the grid boundaries.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType value = grid.get(row, col);\nValueType value = grid.get(gridLocation);\n</pre>\n\n<hr>\n<a name=\"Method:inBounds\"></a>\n<pre class=detailCode>\nbool inBounds(int row, int col) const;\nbool inBounds(GridLocation loc) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the specified <code>row</code>/<code>col</code>\nlocation or <code>GridLocation</code> is inside the bounds of the grid.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (grid.inBounds(row, col)) ...\nif (grid.inBounds(gridLocation)) ...\n</pre>\n\n<hr>\n<a name=\"Method:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty() const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the grid does not contain any rows or columns (size 0x0).\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (grid.isEmpty()) ...\n</pre>\n\n<hr>\n<a name=\"Method:locations\"></a>\n<pre class=detailCode>\nGridLocationRange locations() const;\n</pre>\n<div class=detailHTML>\nReturns a range of all GridLocations found in this grid. This allows a nice abstraction for looping over all of the grid values using a single for loop.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfor (GridLocation loc: grid.locations() {\n    ValueType val = grid[loc];\n}\n</pre>\n\n\n<hr>\n<a name=\"Method:mapAll\"></a>\n<pre class=detailCode>\nvoid mapAll(std::function&lt;void (const ValueType&amp;)&gt; fn) const;\n</pre>\n<div class=detailHTML>\nCalls the specified function on each element of the grid.  The\nelements are processed in <b><i>row-major order,</i></b> in which\nall the elements of row 0 are processed, followed by the elements\nin row 1, and so on.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngrid.mapAll(fn);\n</pre>\n\n<hr>\n<a name=\"Method:numCols\"></a>\n<pre class=detailCode>\nint numCols() const;\n</pre>\n<div class=detailHTML>\nReturns the number of columns in the grid.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint nCols = grid.numCols();\n</pre>\n\n<hr>\n<a name=\"Method:numRows\"></a>\n<pre class=detailCode>\nint numRows() const;\n</pre>\n<div class=detailHTML>\nReturns the number of rows in the grid.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint nRows = grid.numRows();\n</pre>\n\n<hr>\n<a name=\"Method:resize\"></a>\n<pre class=detailCode>\nvoid resize(int nRows, int nCols, bool retain = false);\n</pre>\n<div class=detailHTML>\nReinitializes the grid to have the specified number of rows\nand columns.  Each element of the newly resized grid is\ninitialized to the default value for the type.\nIf the optional <code>retain</code> argument is true, it retains whatever previous grid contents can\nbe. If <code>retain</code> is false or not given, all previous contents are discarded.\n<p>This function signals an error if a negative number of rows or columns is passed.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngrid.resize(nRows, nCols);\n</pre>\n\n<hr>\n<a name=\"Method:set\"></a>\n<pre class=detailCode>\nvoid set(int row, int col, const ValueType&amp; value);\nvoid set(GridLocation loc, const ValueType&amp; value);\n</pre>\n<div class=detailHTML>\nReplaces the element at the specified <code>row</code>/<code>col</code>\nlocation or <code>GridLocation</code> in this grid with a new value.  This method signals an error\nif the specified location is outside\nthe grid boundaries.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngrid.set(row, col, value);\ngrid.set(gridLocation, value);\n</pre>\n\n<hr>\n<a name=\"Method:size\"></a>\n<pre class=detailCode>\nint size() const;\n</pre>\n<div class=detailHTML>\nReturns the total number of elements in the grid,\nwhich is equal to the number of rows times the number of columns.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint sz = grid.size();\n</pre>\n\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString() const;\n</pre>\n<div class=detailHTML>\nReturns a printable string representation of this grid, such as <code>&quot;{{r0c0, r0c1, r0c2}, {r1c0, r1c1, r1c2}}&quot;</code> for a 2x3 grid.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = grid.toString();\n</pre>\n\n<hr>\n<a name=\"Method:toString2D\"></a>\n<pre class=detailCode>\nstring toString2D() const;\n</pre>\n<div class=detailHTML>\nReturns a printable 2-D string representation, such as the following for a 4x3 grid:\n<pre>\n&quot;{{r0c0, r0c1, r0c2},\\n\n {r1c0, r1c1, r1c2},\\n\n {r2c0, r2c1, r2c2},\\n\n {r3c0, r3c1, r3c2}}&quot;\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = grid.toString2D();\n</pre>\n\n<hr>\n</table>\n\n<h2>Operator detail</h2>\n<hr>\n<a name=\"Operator:[]\"></a>\n<pre class=detailCode>\nValueType operator[];\n</pre>\n<div class=detailHTML>\nOverloads <code>[]</code> to select elements from this grid. Can select elements\nby single argument of GridLocation or pair of brackets to select by row, then column.\nThis extension enables the use of traditional array notation to\nget or set individual elements. This method signals an error if\nthe <code>row</code> and <code>col</code> arguments are outside\nthe grid boundaries.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ngrid[row][col]\ngrid[gridLocation]\n</pre>\n\n<hr>\n<a name=\"Operator:foreach\"></a>\n<pre class=detailCode>\nfor (ValueType elem : grid)\nfor (ValueType&amp; elem : grid)\n</pre>\n<div class=detailHTML>\nThe range-based for loop can be used to iterate through the elements in a collection. Iteration over a grid accesses the grid elements in row-major order.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfor (ValueType elem : grid) {\n    cout << elem << endl;\n}\n\nfor (ValueType&amp; elem : grid) { // if reference type, elements are mutable\n    elem *= 2;\n}\n</pre>\n\n<hr>\n<a name=\"Operator:<<\"></a>\n<pre class=detailCode>\nostream&amp; operator&lt;&lt;(const Grid&amp; grid);\n</pre>\nOutputs the contents of <code>grid</code> to the given output stream.\nThe output is in the form <code>{ {r0c0, r0c1, r0c2}, {r1c0, r1c1, r1c2} }</code>\nwhere elements are listed in row-major order.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncout << grid << endl;\n</pre>\n\n\n<hr>\n<a name=\"Operator:>>\"></a>\n<pre class=detailCode>\nistream&amp; operator&gt;&gt;(Grid&amp; grid);\n</pre>\nReads the contents of the given input stream into <code>grid</code>. Any previous\ncontents of the grid are replaced.\nThe input is expected to be in the form <code>{ {r0c0, r0c1, r0c2}, {r1c0, r1c1, r1c2} }</code>\nwhere elements are listed in row-major order. If unable to read a proper\ngrid from the stream, the operation results in a stream fail state.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (infile >> grid) ...\n</pre>\n\n\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Docs/GridLocation.html",
    "content": "<html>\n<head>\n<title>GridLocation</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"img/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>libcs106</code> library, Academic Year 2025-26\n</div></td>\n</tr></table>\n<hr>\n<div class=include>#include \"gridlocation.h\"</div>\n<h1 class=header><code>struct GridLocation</code></h1>\nThis struct contains two integer-valued fields, <code>row</code> and <code>col</code>.  A GridLocation can be used to\nrepresent a location in a two-dimensional grid.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Fields</td>\n</tr>\n<tr>\n    <td class=indexKey><nobr>row<br></nobr></td><td class=indexSynopsis>&nbsp;</td>\n</tr>\n<tr>\n    <td class=indexKey><nobr>col<br></nobr></td><td class=indexSynopsis>&nbsp;</td>\n</tr>\n<tr>\n    <td class=indexHead colspan=2>Constructor</td>\n</tr>\n<tr>\n    <td class=indexKey><nobr><a href=\"#Constructor:GridLocation\">GridLocation()</a><br>\n<a href=\"#Constructor:GridLocation\">GridLocation(<var>row</var>,&nbsp;<var>col</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a <code>GridLocation</code> with the specified <code>row</code> and <code>col</code>.</td>\n</tr>\n<tr>\n    <td class=indexHead colspan=2>Methods</td>\n</tr>\n<tr>\n    <td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a printable string representation of this <code>GridLocation</code>.</td></tr>\n    <td class=indexHead colspan=3>Operators</td>\n</tr>\n<tr>\n\n    <td class=indexKey><nobr><a href=\"#Operator:==\"><var>loc1</var> == <var>loc2</var></a>&nbsp;</nobr></td>\n    <td class=indexSynopsis width=100%>Returns <code>true</code> if <code>loc1</code> and <code>loc2</code> are the same location.</td>\n</tr>\n<tr>\n\n    <td class=indexKey><nobr><a href=\"#Operator:!=\"><var>loc1</var> != <var>loc2</var></a>&nbsp;</nobr></td>\n    <td class=indexSynopsis width=100%>Returns <code>true</code> if <code>loc1</code> and <code>loc2</code> are different locations.</td>\n\n</tr>\n<tr>\n\n    <td class=indexKey><nobr><a href=\"#Operator:<<\"><var>ostream</var>&nbsp;&lt;&lt;&nbsp;<var>loc</var></a></nobr></td>\n    <td class=indexSynopsis width=100%>Outputs the location to the given output stream.</td>\n\n</tr>\n<tr>\n\n    <td class=indexKey><nobr><a href=\"#Operator:<<\"><var>istream</var>&nbsp;&gt;&gt;&nbsp;<var>loc</var></a></nobr></td>\n    <td class=indexSynopsis width=100%>Reads a location from the given input stream.</td>\n</tr>\n</table>\n\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:GridLocation\"></a>\n<pre class=detailCode>\nGridLocation();\nGridLocation(int row, int col);\n</pre>\n<div class=detailHTML>\nCreates a <code>GridLocation</code> object with the specified <code>row</code>\nand <code>col</code> location.  If the row and col are not supplied,\nthe default constructor sets these fields to 0. The GridLocation fields <code>row</code> and\n<code>col</code> can also directly accessed using dot notation.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGridLocation origin;\nGridLocation loc(5, 10);\n\norigin.col = 0;\nif (loc.row == loc.col) ...\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString() const;\n</pre>\n<div class=detailHTML>\nReturns a printable string for this GridLocation in the form\n<code>\"r5c8\"</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = loc.toString();\n</pre>\n\n<hr>\n<a name=\"Operator:<<\"></a>\n<pre class=detailCode>\nostream&amp; operator&lt;&lt;(const GridLocation&amp; loc);\n</pre>\nOutputs the <code>GridLocation</code> to the given output stream.\nThe output is in the form <code>r5c8</code>.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncout << loc << endl;\n</pre>\n\n\n<hr>\n<a name=\"Operator:>>\"></a>\n<pre class=detailCode>\nistream&amp; operator&gt;&gt;(GridLocation&amp; loc);\n</pre>\nReads a GridLocation from the given input stream.\nThe input is expected to be in the form <code>r5c8</code>. If unable to read a proper\nlocation from the stream, the operation results in a stream fail state.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (infile >> loc) ...\n</pre>\n\n\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Docs/GridLocationRange.html",
    "content": "<html>\n<head>\n<title>GridLocationRange</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"img/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>libcs106</code> library, Academic Year 2025-26\n</div></td>\n</tr></table>\n<hr>\n<div class=include>#include \"gridlocation.h\"</div>\n<h1 class=header><code>class GridLocationRange</code></h1>\nThis class represents a two-dimensional rectangular ange of grid locations that can be looped over.\n<BR>\n<BR>\nCommon usage patterns:\n<pre>GridLocationRange range(0, 0, 10, 5);\nfor (GridLocation loc : range) {\n    cout << loc << endl; // print location itself\n}\n</pre>\n The <code>locations()</code> method of the <code>Grid</code> class returns a <code>GridLocationRange</code> for the entire grid.\n <pre>\nfor (GridLocation loc : grid.locations()) {\n    cout << grid[loc] << endl; // access grid element at each location and print it\n}\n</pre>\n\n<table class=index width=100%>\n    <td class=indexHead colspan=2>Constructor</td>\n</tr>\n<tr>\n    <td class=indexKey><nobr><a href=\"#Constructor:GridLocationRange\">GridLocationRange(<var>startLocation</var>,&nbsp;<var>endLocation</var>)</a><br>\n<a href=\"#Constructor:GridLocationRange\">GridLocationRange(<var>startRow</var>,&nbsp;<var>startCol</var>,&nbsp;<var>endRow</var>,&nbsp;<var>endCol</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Creates a <code>GridLocationRange</code> with the specified boundaries.</td>\n</tr>\n<tr>\n    <td class=indexHead colspan=2>Methods</td>\n</tr>\n<tr>\n    <td class=indexKey><nobr><a href=\"#Method:contains\">contains(loc)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns true if <code>loc</code> is contained in this range.</td></tr>\n    <td class=indexKey><nobr><a href=\"#Method:endCol\">endCol()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the last column in this range, inclusive.</td></tr>\n    <td class=indexKey><nobr><a href=\"#Method:endLocation\">endLocation()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the last row/column location in this range, inclusive.</td></tr>\n    <td class=indexKey><nobr><a href=\"#Method:endRow\">endRow()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the last row in this range, inclusive.</td></tr>\n    <td class=indexKey><nobr><a href=\"#Method:isEmpty\">isEmpty()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns true if this range contains no rows or columns.</td></tr>\n    <td class=indexKey><nobr><a href=\"#Method:numCols\">numCols()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the count of columns in this range.</td></tr>\n    <td class=indexKey><nobr><a href=\"#Method:numRows\">numRows()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the count of rows in this range.</td></tr>\n    <td class=indexKey><nobr><a href=\"#Method:size\">size()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the total number of locations in this range.</td></tr>\n   <td class=indexKey><nobr><a href=\"#Method:startCol\">startCol()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the first column in this range, inclusive.</td></tr>\n    <td class=indexKey><nobr><a href=\"#Method:startLocation\">startLocation()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the first row/column location in this range, inclusive.</td></tr>\n    <td class=indexKey><nobr><a href=\"#Method:startRow\">startRow()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the first row in this range, inclusive.</td></tr>\n    <td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a printable string representation of this range.</td></tr>\n\n    <td class=indexHead colspan=3>Operators</td>\n</tr>\n<tr>\n    <td class=indexKey><nobr><a href=\"#Operator:<<\"><var>ostream</var>&nbsp;&lt;&lt;&nbsp;<var>range</var></a></nobr></td>\n    <td class=indexSynopsis width=100%>Outputs a range to the given output stream.</td>\n</tr>\n<tr>\n    <td class=indexKey><nobr><a href=\"#Operator:<<\"><var>istream</var>&nbsp;&gt;&gt;&nbsp;<var>range</var></a></nobr></td>\n    <td class=indexSynopsis width=100%>Reads a range from the given input stream.</td>\n</tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:GridLocationRange\"></a>\n<pre class=detailCode>\nGridLocationRange(int startRow, int startCol, int endRow, int endCol);\nGridLocationRange(GridLocation startLocation, GridLocation endLocation);\n</pre>\n</table>\n\n<div class=detailHTML>\nCreates a <code>GridLocationRange</code> object with the specified boundaries. The range of locations extends from the corner at <code>(startRow, startCol)</code> to the corner at <code>(endRow, endCol)</code> inclusive.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGridLocationRange row(0, 0, 0, 10);\nGridLocationRange box(2, 3, 7, 9);\nGridLocationRange byCorners(GridLocation(2, 3), GridLocation(7, 9));\n\nGridLocationRange range;  // no arguments initializes to default 0,0,0,0\nrange = GridLocationRange(0, 0, 5, 5); // set range to have new boundaries\n</pre>\n\n\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:contains\"></a>\n<pre class=detailCode>\nbool contains(GridLocation loc) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the specified location is contained in this range.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (range.contains(loc)) ...\n</pre>\n\n<hr>\n<a name=\"Method:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty() const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if this range contains no rows or columns.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (range.isEmpty()) ...\n</pre>\n\n<hr>\n<a name=\"Method:endCol\"></a>\n<pre class=detailCode>\nint endCol() const;\n</pre>\n<div class=detailHTML>\nReturns the last column in this range.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint last = range.endCol();\n</pre>\n\n<hr>\n<a name=\"Method:endLocation\"></a>\n<pre class=detailCode>\nGridLocation endLocation() const;\n</pre>\n<div class=detailHTML>\nReturns the last row/column location in this range.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGridLocation last = range.endLocation();\n</pre>\n\n<hr>\n<a name=\"Method:endRow\"></a>\n<pre class=detailCode>\nint endRow() const;\n</pre>\n<div class=detailHTML>\nReturns the last row in this range.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint last = range.endRow();\n</pre>\n\n<hr>\n<a name=\"Method:numCols\"></a>\n<pre class=detailCode>\nint numCols() const;\n</pre>\n<div class=detailHTML>\nReturns the count of columns in this range.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint n = range.numCols();\n</pre>\n\n<hr>\n<a name=\"Method:numRows\"></a>\n<pre class=detailCode>\nint numRows() const;\n</pre>\n<div class=detailHTML>\nReturns the count of rows in this range.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint n = range.numRows();\n</pre>\n\n<hr>\n<a name=\"Method:size\"></a>\n<pre class=detailCode>\nint size() const;\n</pre>\n<div class=detailHTML>\nReturns the total number of locations in this range.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint n = range.size();\n</pre>\n\n<hr>\n<a name=\"Method:startCol\"></a>\n<pre class=detailCode>\nint startCol() const;\n</pre>\n<div class=detailHTML>\nReturns the first column in this range.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint first = range.startCol();\n</pre>\n\n\n<hr>\n<a name=\"Method:startLocation\"></a>\n<pre class=detailCode>\nGridLocation startLocation() const;\n</pre>\n<div class=detailHTML>\nReturns the first row/column location in this range.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nGridLocation first = range.startLocation();\n</pre>\n\n<hr>\n<a name=\"Method:startRow\"></a>\n<pre class=detailCode>\nint startRow() const;\n</pre>\n<div class=detailHTML>\nReturns the first row in this range.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint first = range.startRow();\n</pre>\n\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString() const;\n</pre>\n<div class=detailHTML>\nReturns a printable string for this <code>GridLocationRange</code> in the form\n<code>\"r5c8...r6c9\"</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = range.toString();\n</pre>\n\n<hr>\n<a name=\"Operator:<<\"></a>\n<pre class=detailCode>\nostream&amp; operator&lt;&lt;(const GridLocationRange&amp; range);\n</pre>\nOutputs the <code>GridLocationRange</code> to the given output stream.\nThe output is in the form <code>r5c8...r6c9</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncout << range << endl;\n</pre>\n\n<hr>\n<a name=\"Operator:>>\"></a>\n<pre class=detailCode>\nistream&amp; operator&gt;&gt;(GridLocationRange&amp; range);\n</pre>\nReads a <code>GridLocationRange</code> from the given input stream.\nThe input is expected to be in the form <code>r5c8...r6c9</code>. If unable to read a proper\nrange from the stream, the operation results in a stream fail state.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (infile >> range) ...\n</pre>\n\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Docs/HashMap.html",
    "content": "<html>\n<head>\n<title>HashMap</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"img/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>libcs106</code> library, Academic Year 2025-26\n</div></td>\n</tr></table>\n<hr>\n<div class=include>#include \"hashmap.h\"</div>\n<h1 class=header><code>class HashMap&lt;<var>KeyType</var>,&nbsp;<var>ValueType</var>&gt;</code></h1>\nThis class implements an efficient association between\n<b><i>keys</i></b> and <b><i>values</i></b>.  This class is\nidentical in interface to the <a href=\"Map.html\"><code>Map</code></a> class\nexcept for the fact that it uses a hash table as its underlying\nrepresentation which allows it to operate in O(1) time.   The disadvantage of\n<code>HashMap</code> is range-based for loop and other iteration patterns\nwill access the keys in an unpredictable and seemingly random order.\nThe HashMap operations to add/access/remove an entry run in O(1) time.\n\n<table class=index width=100%>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Constructor</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Constructor:HashMap\">HashMap()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Initializes a new empty map that associates keys and values of the specified types.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=2>Methods</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:clear\">clear()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Removes all entries from this map.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:containsKey\">containsKey(<var>key</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if there is an entry for <code>key</code> in this map.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:equals\">equals(<var>map</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the two maps contain the same entries.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:firstKey\">firstKey()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the first key in this map in the order established by a for-each loop.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:get\">get(<var>key</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the value associated with <code>key</code> in this map.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:isEmpty\">isEmpty()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if this map contains no entries.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:keys\">keys()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns a <code>Vector</code> copy of all keys in this map.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:lastKey\">lastKey()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the last value in this map in the order established by a for-each loop.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:mapAll\">mapAll(<var>fn</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Iterates through the map entries and calls <code>fn(key, value)</code> for each one.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:put\">put(<var>key</var>,&nbsp;<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Associates <code>key</code> with <code>value</code> in this map.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:remove\">remove(<var>key</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Removes any entry for <code>key</code> from this map.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:size\">size()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the number of entries in this map.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns a printable string representation of this map.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:values\">values()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns a <code>Vector</code> copy of all values in this map.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Operators</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:foreach\">for (KeyType key : map)&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Iterates through the keys in a map.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:[]\"><var>map</var>[<var>key</var>]</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Selects the value associated with <code>key</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:==\"><var>map1</var> == <var>map1</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>map1</code> and <code>map2</code> contain the same entries.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:!=\"><var>map1</var> != <var>map2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>map1</code> and <code>map2</code> are different.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:+\"><var>map1</var> + <var>map2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Creates a new map which contains all <code>map1</code> entries added to all <code>map2</code> entries.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:+=\"><var>map1</var> += <var>map2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Adds all <code>map2</code> entries to <code>map1</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:-\"><var>map1</var> - <var>map2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Creates a new map which contains all <code>map1</code> entries minus all <code>map2</code> entries.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:-=\"><var>map1</var> -= <var>map2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Removes all <code>map2</code> entries from <code>map1</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:*\"><var>map1</var> * <var>map2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Creates a new map which contains all entries that appear in both <code>map1</code> and <code>map2</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:*=\"><var>map1</var> *= <var>map2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Removes any entries from <code>map1</code> that are not present in <code>map2</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:<<\"><var>ostream</var>&nbsp;&lt;&lt;&nbsp;<var>map</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Outputs the contents of the map to the given output stream.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:>>\"><var>istream</var>&nbsp;&gt;&gt;&nbsp;<var>map</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Reads the contents of the given input stream into the map.</td>\n\t</tr>\n</table>\n\n<h2>Constructor detail</h2>\n\n<hr>\n<a name=\"Constructor:HashMap\"></a>\n<pre class=detailCode>\nHashMap();\n</pre>\n<div class=detailHTML>\nInitializes a new empty map that associates keys and values of the\nspecified types. You may also optionally provide an initializer list of key-value pairs. The newly created map will contain those entries.\n<p>\n\t The type used for the key must define\n\tthe <code>==</code> operator, and there must be a free function\n\twith the following signature:\n\n\t<pre>\n\t    int hashCode(KeyType key);\n\t</pre>\n\n\tthat returns a positive integer determined by the key.  This interface\n\texports <code>hashCode</code> functions for <code>string</code> and\n\tthe C++ primitive types.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nHashMap&lt;KeyType, ValueType&gt; map;\nHashMap&lt;KeyType, ValueType&gt; map = {{ k1, v1}, { k2, v2 }};\n\n</pre>\n<hr>\n</table>\n\n<h2>Method detail</h2>\n\n<hr>\n<a name=\"Method:clear\"></a>\n<pre class=detailCode>\nvoid clear();\n</pre>\n<div class=detailHTML>\nRemoves all entries from this map.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap.clear();\n</pre>\n\n<hr>\n<a name=\"Method:containsKey\"></a>\n<pre class=detailCode>\nbool containsKey(const KeyType&amp; key) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if there is an entry for <code>key</code>\nin this map.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (map.containsKey(key)) ...\n</pre>\n\n<hr>\n<a name=\"Method:equals\"></a>\n<pre class=detailCode>\nbool equals(const HashMap&amp; map) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the two maps contain exactly the same key/value pairs.\nIdentical in behavior to the <code>==</code> operator.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (map1.equals(map2)) ...\n</pre>\n\n<hr>\n<a name=\"Method:firstKey\"></a>\n<pre class=detailCode>\nKeyType firstKey() const;\n</pre>\n<div class=detailHTML>\nReturns the first key in the map in the order established by\na for-each loop.  If map is empty, <code>firstKey</code>\nsignals an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nKeyType first = map.firstKey();\n</pre>\n\n\n<hr>\n<a name=\"Method:get\"></a>\n<pre class=detailCode>\nValueType get(const KeyType&amp; key) const;\n</pre>\n<div class=detailHTML>\nReturns the value associated with <code>key</code> in this map.\nIf <code>key</code> is not found, <code>get</code> returns the\ndefault value for <code>ValueType</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType value = map.get(key);\n</pre>\n\n<hr>\n<a name=\"Method:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty() const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if this map contains no entries.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (map.isEmpty()) ...\n</pre>\n\n<hr>\n<a name=\"Method:keys\"></a>\n<pre class=detailCode>\nVector&lt;KeyType&gt; keys() const;\n</pre>\n<div class=detailHTML>\nReturns a <code>Vector</code> copy of all keys in this map.\nThe keys will appear in the same order that a for-each loop over the map would produce them.\nBecause a map cannot contain duplicate keys, the elements of the vector will be unique.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nVector&lt;KeyType&gt; keys = map.keys();\n</pre>\n\n<hr>\n<a name=\"Method:lastKey\"></a>\n<pre class=detailCode>\nKeyType lastKey() const;\n</pre>\n<div class=detailHTML>\nReturns the last key in the map in the order established by\na for-each loop.  If map is empty, <code>lastKey</code>\nsignals an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nKeyType last = map.lastKey();\n</pre>\n\n\n<hr>\n<a name=\"Method:mapAll\"></a>\n<pre class=detailCode>\nvoid mapAll(std::function&lt;void (const KeyType&amp;, const ValueType&amp;)&gt; fn) const;\n</pre>\n<div class=detailHTML>\nIterates through the map entries and calls <code>fn(key, value)</code>\nfor each one.  The entries are processed in unpredictable order.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap.mapAll(fn);\n</pre>\n\n<hr>\n<a name=\"Method:put\"></a>\n<pre class=detailCode>\nvoid put(const KeyType&amp; key, const ValueType&amp; value);\n</pre>\n<div class=detailHTML>\nAssociates <code>key</code> with <code>value</code> in this map.\nAny previous value associated with <code>key</code> is replaced\nby the new value.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap.put(key, value);\n</pre>\n\n<hr>\n<a name=\"Method:remove\"></a>\n<pre class=detailCode>\nvoid remove(const KeyType&amp; key);\n</pre>\n<div class=detailHTML>\nRemoves any entry for <code>key</code> from this map.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap.remove(key);\n</pre>\n\n<hr>\n<a name=\"Method:size\"></a>\n<pre class=detailCode>\nint size() const;\n</pre>\n<div class=detailHTML>\nReturns the number of entries in this map.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint nEntries = map.size();\n</pre>\n\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString() const;\n</pre>\n<div class=detailHTML>\nReturns a printable string representation of this map, such as <code>&quot;{k1:v1, k2:v2, k3:v3}&quot;</code>.\nThe key/value pairs will be listed in unpredictable order.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = map.toString();\n</pre>\n\n<hr>\n<a name=\"Method:values\"></a>\n<pre class=detailCode>\nVector&lt;ValueType&gt; values() const;\n</pre>\n<div class=detailHTML>\nReturns a <code>Vector</code> copy of all values in this map.\nThe values will appear in the same order that a for-each loop over the map would produce them.\nA map can contain duplicate values, so the elements of the vector are not guaranteed to be unique.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nVector&lt;ValueType&gt; values = map.values();\n</pre>\n\n<hr>\n</table>\n<h2>Operator detail</h2>\n\n<hr>\n<a name=\"Operator:foreach\"></a>\n<pre class=detailCode>\nfor (KeyType key : map)\n</pre>\n<div class=detailHTML>\nThe range-based for loop can be used to iterate through the elements in a collection. The iteration accesses map keys in unpredictable order. An error is signaled if you attempt to add/remove elements from a collection while iterating over it.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfor (KeyType key : map) {\n\tcout << key << \" = \" << map[key] << endl;\n}\n\n</pre>\n\n\n<hr>\n<a name=\"Operator:[]\"></a>\n<pre class=detailCode>\nValueType&amp; operator[](const KeyType&amp; key);\nconst ValueType&amp; operator[](const KeyType&amp; key) const;\n</pre>\n<div class=detailHTML>\nSelects the value associated with <code>key</code>.  This syntax\nmakes it easy to think of a map as an \"associative array\"\nindexed by the key type.  If <code>key</code> is already present\nin the map, this function returns a reference to its associated\nvalue.  If key is not present in the map, a new entry is created\nwhose value is set to the default for the value type.\n\n<p>Note: <code>get</code> and <code>operator[]</code> have a small\nbut significant difference when used to retrieve the value for a key\nnot contained in the map. Both expressions return the default\nvalue, but accessing <code>map[key]</code> adds this new entry\nto the map while <code>map.get(key)</code> does not.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap[key]\n</pre>\n\n<hr>\n<a name=\"Operator:+\"></a>\n<pre class=detailCode>\nHashMap operator+(const HashMap&amp; map2) const;\n</pre>\n<div class=detailHTML>\nCreates a new map which combines the entries from <code>map1</code> and <code>map2</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap1 + map2\n</pre>\n\n<hr>\n<a name=\"Operator:*\"></a>\n<pre class=detailCode>\nHashMap operator*(const HashMap&amp; map2) const;\n</pre>\n<div class=detailHTML>\nCreates a new map which contains those entries that appear in both <code>map1</code> and <code>map2</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap1 * map2\n</pre>\n\n<hr>\n<a name=\"Operator:-\"></a>\n<pre class=detailCode>\nHashMap operator-(const HashMap&amp; map2) const;\n</pre>\n<div class=detailHTML>\nCreates a new map which is the difference of the entries in <code>map1</code> minus those in <code>map2</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap1 - map2\n</pre>\n\n<hr>\n<a name=\"Operator:+=\"></a>\n<pre class=detailCode>\nHashMap&amp; operator+=(const HashMap&amp; map2);\n</pre>\n<div class=detailHTML>\nAdds all of the entries from <code>map2</code> to <code>map1</code>.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap1 += map2;\n</pre>\n\n<hr>\n<a name=\"Operator:*=\"></a>\n<pre class=detailCode>\nHashMap&amp; operator*=(const HashMap&amp; map2);\n</pre>\n<div class=detailHTML>\nRemoves any entries from <code>map1</code> that are not present in\n<code>map2</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap1 *= map2;\n</pre>\n\n<hr>\n<a name=\"Operator:-=\"></a>\n<pre class=detailCode>\nHashMap&amp; operator-=(const HashMap&amp; map2);\n</pre>\n<div class=detailHTML>\nRemoves the entries in <code>map2</code> from <code>map1</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap1 -= map2;\n</pre>\n\n<hr>\n<a name=\"Operator:<<\"></a>\n<pre class=detailCode>\nostream&amp; operator&lt;&lt;(const HashMap&amp; map);\n</pre>\nOutputs the contents of <code>map</code> to the given output stream.\nThe output is in the form <code>{k1:v1, k2:v2, k3:v3}</code>. The entries\nwill be listed in unpredictable order.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncout << map << endl;\n</pre>\n\n\n<hr>\n<a name=\"Operator:>>\"></a>\n<pre class=detailCode>\nistream&amp; operator&gt;&gt;(HashMap&amp; map);\n</pre>\nReads the contents of the given input stream into <code>map</code>. Any previous\ncontents of the map are replaced.\nThe input is expected to be in the form <code>{k1:v1, k2:v2, k3:v3}</code>. If unable to read a proper\nmap from the stream, the operation results in a stream fail state.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (infile >> map) ...\n</pre>\n\n\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Docs/HashSet.html",
    "content": "<html>\n<head>\n<title>HashSet</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"img/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>libcs106</code> library, Academic Year 2025-26\n</div></td>\n</tr></table>\n<hr>\n<div class=include>#include \"hashset.h\"</div>\n<h1 class=header><code>class HashSet&lt;<var>ValueType</var>&gt;</code></h1>\nThis class stores a collection of distinct elements.\n\nThis class implements an efficient abstraction for storing sets\nof distinct elements.  This class is identical in interface to the <code>Set</code>\nclass except for the fact that it uses a hash table as its underlying\nrepresentation.  The advantage of the <code>HashSet</code> class is that\nit operates in constant time, as opposed to the <i>O</i>(log <i>N</i>)\ntime for the <code>Set</code> class.  The disadvantage of\n<code>HashSet</code> is that range-based for loops and other iteration patterns\nwill access the elements in an unpredictable and seemingly random order.\nThe HashSet operations to add/access/remove an element run in O(1) time.\n\n<table class=index width=100%>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Constructor</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Constructor:HashSet\">HashSet()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Initializes a new HashSet of the specified element type.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Methods</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:add\">add(<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Adds an element to this HashSet, if it was not already there.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:clear\">clear()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Removes all elements from this HashSet.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:contains\">contains(<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the specified value is in this HashSet.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:difference\">difference(<var>otherSet</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Subtracts <code>otherSet</code> from this HashSet. The difference removes those elements that appear in <code>otherSet</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:equals\">equals(<var>set</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the two sets contain the same elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:first\">first()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the first value in this HashSet in the order established by a for-each loop.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:intersect\">intersect(<var>otherSet</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Intersects <code>otherSet</code> with this HashSet. The intersection retains only those elements also contained in <code>otherSet</code>.</td>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:isEmpty\">isEmpty()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if this HashSet contains no elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:isSubsetOf\">isSubsetOf(<var>otherSet</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if this HashSet is a subset of <code>otherSet</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:isSupersetOf\">isSupersetOf(<var>otherSet</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if this HashSet is a superset of <code>otherSet</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:last\">last()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the last value in this HashSet in the order established by a for-each loop.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:mapAll\">mapAll(<var>fn</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Calls <code>fn(value)</code> for each element of this HashSet.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:remove\">remove(<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Removes an element from this HashSet.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:size\">size()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the number of elements in this HashSet.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns a printable string representation of this set.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:unionWith\">unionWith(<var>otherSet</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Unions <code>otherSet</code> with this HashSet. The union adds all elements from <code>otherSet</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Operators</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:foreach\">for (ValueType elem : set)&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Iterates through the elements in a set.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:==\"><var>set1</var> == <var>set2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Evaluates to <code>true</code> if <code>set1</code> and <code>set2</code> contain the same elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:!=\"><var>set1</var> != <var>set2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Evaluates to <code>true</code> if <code>set1</code> and <code>set2</code> are different.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:+\"><var>set1</var> + <var>set2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Creates a new set which is the union of <code>set1</code> with <code>set2</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:+\"><var>set</var> + <var>value</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Creates a new set which is the union of <code>set</code> with the single <code>value</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:+=\"><var>set1</var> += <var>set2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Adds all of the elements from <code>set2</code> to <code>set1</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:+=\"><var>set</var> += <var>value</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Adds the single <code>value</code> to <code>set</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:-\"><var>set1</var> - <var>set2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Creates a new set which is the difference of <code>set1</code> minus <code>set2</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:-\"><var>set</var> - <var>value</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Creates a new set which is the difference of <code>set</code> minus the single <code>value</code>.\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:-=\"><var>set1</var> -= <var>set2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Removes the elements of <code>set2</code> from <code>set1</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:-=\"><var>set</var> -= <var>value</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Removes the single <code>value</code> from <code>set</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:*\"><var>set1</var> * <var>set2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Creates a new set which is the intersection of <code>set1</code> and <code>set2</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:*=\"><var>set1</var> *= <var>set2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Removes any elements from <code>set1</code> that are not present in <code>set2</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:<<\"><var>ostream</var>&nbsp;&lt;&lt;&nbsp;<var>set</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Outputs the contents of <code>set</code> to the given output stream.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:>>\"><var>istream</var>&nbsp;&gt;&gt;&nbsp;<var>set</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Reads the contents of the given input stream into <code>set</code>.</td>\n\t</tr>\n</table>\n\n<h2>Constructor detail</h2>\n\n<hr>\n<a name=\"Constructor:HashSet\"></a>\n<pre class=detailCode>\nHashSet();\n</pre>\n<div class=detailHTML>\nCreates an empty HashSet of the specified element type. You may also optionally provide an initializer list of values. The newly created set will contain those values.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nHashSet&lt;ValueType&gt; set;\nHashSet&lt;ValueType&gt; set = { value1, value2, value3 };\n</pre>\n\n<hr>\n</table>\n<h2>Method detail</h2>\n\n<hr>\n<a name=\"Method:add\"></a>\n<pre class=detailCode>\nvoid add(const ValueType&amp; value);\n</pre>\n<div class=detailHTML>\nAdds an element to this HashSet, if it was not already there.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset.add(value);\n</pre>\n\n<hr>\n<a name=\"Method:clear\"></a>\n<pre class=detailCode>\nvoid clear();\n</pre>\n<div class=detailHTML>\nRemoves all elements from this HashSet.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset.clear();\n</pre>\n\n<hr>\n<a name=\"Method:contains\"></a>\n<pre class=detailCode>\nbool contains(const ValueType&amp; value) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the specified value is in this HashSet.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (set.contains(value)) ...\n</pre>\n\n<hr>\n<a name=\"Method:difference\"></a>\n<pre class=detailCode>\nHashSet&amp; difference(const HashSet&amp; set2);\n</pre>\n<div class=detailHTML>\nRemoves from this HashSet all elements that are present in <code>set2</code>. Returns a reference to this HashSet, which has been modified in place. If you want a new HashSet, consider <code><a href=\"#Operator:-\">set1 - set2</a></code> instead.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1.difference(set2);\n</pre>\n<hr>\n<a name=\"Method:equals\"></a>\n<pre class=detailCode>\nbool equals(const HashSet&amp; set2) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the two HashSets contain exactly the same element values.\nIdentical in behavior to the <code>==</code> operator.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (set1.equals(set2)) ...\n</pre>\n\n<hr>\n<a name=\"Method:first\"></a>\n<pre class=detailCode>\nValueType first() const;\n</pre>\n<div class=detailHTML>\nReturns the first value in the HashSet in the order established by\na for-each loop.  If the HashSet is empty, <code>first</code>\nsignals an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType value = set.first();\n</pre>\n\n<hr>\n<a name=\"Method:intersect\"></a>\n<pre class=detailCode>\nHashSet&amp; intersect(const HashSet&amp; set2);\n</pre>\n<div class=detailHTML>\nRemoves from this HashSet all elements that are not present in <code>set2</code>. Returns a reference to this HashSet, which has been modified in place. If you want a new HashSet, consider <code><a href=\"#Operator:*\">set1 * set2</a></code> instead.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1.intersect(set2);\n</pre>\n\n<hr>\n<a name=\"Method:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty() const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if this HashSet contains no elements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (set.isEmpty()) ...\n</pre>\n\n<hr>\n<a name=\"Method:isSubsetOf\"></a>\n<pre class=detailCode>\nbool isSubsetOf(const HashSet&amp; set2) const;\n</pre>\n<div class=detailHTML>\nReturns\n<code>true</code> if every element of this HashSet is\ncontained in <code>set2</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (set1.isSubsetOf(set2)) ...\n</pre>\n\n<hr>\n<a name=\"Method:isSupersetOf\"></a>\n<pre class=detailCode>\nbool isSupersetOf(const HashSet&amp; set2) const;\n</pre>\n<div class=detailHTML>\nReturns\n<code>true</code> if every element of <code>set2</code> is\ncontained in this HashSet.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (set1.isSupersetOf(set2)) ...\n</pre>\n\n\n<hr>\n<a name=\"Method:last\"></a>\n<pre class=detailCode>\nValueType last() const;\n</pre>\n<div class=detailHTML>\nReturns the last value in the HashSet in the order established by\na for-each loop.  If HashSet is empty, <code>last</code>\nsignals an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType value = set.last();\n</pre>\n\n\n<hr>\n<a name=\"Method:mapAll\"></a>\n<pre class=detailCode>\nvoid mapAll(std::function&lt;void (const ValueType&amp;)&gt; fn) const;\n</pre>\n<div class=detailHTML>\nIterates through the elements of the HashSet and calls <code>fn(value)</code>\nfor each one.  The elements are processed in unpredictable order.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset.mapAll(fn);\n</pre>\n\n\n<hr>\n<a name=\"Method:remove\"></a>\n<pre class=detailCode>\nvoid remove(const ValueType&amp; value);\n</pre>\n<div class=detailHTML>\nRemoves an element from this HashSet.  If the value was not\ncontained in the HashSet, there is no error and the HashSet\nremains unchanged.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset.remove(value);\n</pre>\n\n<hr>\n<a name=\"Method:size\"></a>\n<pre class=detailCode>\nint size() const;\n</pre>\n<div class=detailHTML>\nReturns the number of elements in this HashSet.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncount = set.size();\n</pre>\n\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString() const;\n</pre>\n<div class=detailHTML>\nReturns a printable string representation of this HashSet, such as <code>&quot;{value1, value2, value3}&quot;</code>.\nThe values are listed in unpredictable order.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = set.toString();\n</pre>\n\n<hr>\n<a name=\"Method:unionWith\"></a>\n<pre class=detailCode>\nHashSet&amp; unionWith(const HashSet&amp; set2);\n</pre>\n<div class=detailHTML>\nAdds to this HashSet all elements from <code>set2</code>. Returns a reference to this HashSet, which has been modified in place. If you want a new HashSet, consider <code><a href=\"#Operator:+\">set1 + set2</a></code> instead.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1.unionWith(set2);\n</pre>\n\n<hr>\n</table>\n<h2>Operator detail</h2>\n\n<hr>\n<a name=\"Operator:foreach\"></a>\n<pre class=detailCode>\nfor (ValueType elem : set)\n</pre>\n<div class=detailHTML>\nThe range-based for loop can be used to iterate through the elements in a collection. The elements in a HashSet are accessed in unpredictable order. An error is signaled if you attempt to add/remove elements from a collection while iterating over it.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfor (ValueType elem : set) {\n\tcout << elem << endl;\n}\n</pre>\n\n\n<hr>\n<a name=\"Operator:==\"></a>\n<pre class=detailCode>\nbool operator==(const HashSet&amp; set2) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if <code>set1</code> and <code>set2</code>\ncontain the same elements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1 == set2\n</pre>\n\n<hr>\n<a name=\"Operator:!=\"></a>\n<pre class=detailCode>\nbool operator!=(const HashSet&amp; set2) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if <code>set1</code> and <code>set2</code>\nare different.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1 != set2\n</pre>\n\n<hr>\n<a name=\"Operator:+\"></a>\n<pre class=detailCode>\nHashSet operator+(const HashSet&amp; set2) const;\nHashSet operator+(const ValueType&amp; element) const;\n</pre>\n<div class=detailHTML>\nCreates a new HashSet which is the union of <code>set1</code> with <code>set2</code> (or with the single <code>value</code>).\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1 + set2\nset1 + value\n</pre>\n\n<hr>\n<a name=\"Operator:*\"></a>\n<pre class=detailCode>\nHashSet operator*(const HashSet&amp; set2) const;\n</pre>\n<div class=detailHTML>\nCreates a new HashSet which is the intersection of <code>set1</code> and <code>set2</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1 * set2\n</pre>\n\n<hr>\n<a name=\"Operator:-\"></a>\n<pre class=detailCode>\nHashSet operator-(const HashSet&amp; set2) const;\nHashSet operator-(const ValueType&amp; element) const;\n</pre>\n<div class=detailHTML>\nCreates a new HashSet which is the difference of <code>set1</code> minus <code>set2</code> (or minus the single <code>value</code>).\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1 - set2\nset1 - value\n</pre>\n\n<hr>\n<a name=\"Operator:+=\"></a>\n<pre class=detailCode>\nHashSet&amp; operator+=(const HashSet&amp; set2);\nHashSet&amp; operator+=(const ValueType&amp; value);\n</pre>\n<div class=detailHTML>\nAdds all of the elements from <code>set2</code> (or the single <code>value</code>) to <code>set1</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1 += set2;\nset1 += value;\n</pre>\n\n<hr>\n<a name=\"Operator:*=\"></a>\n<pre class=detailCode>\nHashSet&amp; operator*=(const HashSet&amp; set2);\n</pre>\n<div class=detailHTML>\nRemoves any elements from <code>set1</code> that are not present in\n<code>set2</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1 *= set2;\n</pre>\n\n<hr>\n<a name=\"Operator:-=\"></a>\n<pre class=detailCode>\nHashSet&amp; operator-=(const HashSet&amp; set2);\nHashSet&amp; operator-=(const ValueType&amp; value);\n</pre>\n<div class=detailHTML>\nRemoves the elements from <code>set2</code> (or the single <code>value</code>) from <code>set1</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1 -= set2;\nset1 -= value;\n</pre>\n\n<hr>\n<a name=\"Operator:<<\"></a>\n<pre class=detailCode>\nostream&amp; operator&lt;&lt;(const HashSet&amp; set);\n</pre>\nOutputs the contents of <code>set</code> to the given output stream.\nThe output is in the form <code>{value1, value2, value3}</code>\nwhere elements are listed in unpredictable order.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncout << set << endl;\n</pre>\n\n\n<hr>\n<a name=\"Operator:>>\"></a>\n<pre class=detailCode>\nistream&amp; operator&gt;&gt;(HashSet&amp; set);\n</pre>\nReads the contents of the given input stream into <code>set</code>. Any previous\ncontents of the set are replaced.\nThe input is expected to be in the form <code>{value1, value2, value3}</code>. If unable to read a proper\nset from the stream, the operation results in a stream fail state.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (infile >> set) ...\n</pre>\n\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Docs/Lexicon.html",
    "content": "<html>\n<head>\n<title>Lexicon</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"img/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>libcs106</code> library, Academic Year 2025-26\n</div></td>\n</tr></table>\n<hr>\n<div class=include>#include \"lexicon.h\"</div>\n<h1 class=header><code>class Lexicon</code></h1>\nThis class is used to represent a <b><i>lexicon,</i></b> or word list.\nThe main difference between a lexicon and a dictionary is that\na lexicon does not provide any mechanism for storing definitions;\nthe lexicon contains only words, with no associated information.\nIt is therefore similar to a set of strings, but with a different\ninternal representation.  The <code>Lexicon</code>\nclass supports efficient lookup operations for words and prefixes.\n\n<p>\n\tThis version of <code>Lexicon</code> is implemented internally using a data structure called a <em>prefix tree</em> or <em>trie</em> (pronounced \"try\"), which allows for efficient prefix and word searching.\n\tSome runtimes below are expressed in terms of \"W\" where W represents the length of the word being added.\n</p>\n\n<table class=index width=100%>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Constructor</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Constructor:Lexicon\">Lexicon()</a></nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Initializes a new empty lexicon.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Constructor:Lexicon\">Lexicon(<var>filename</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(WN)</td>\n\t\t<td class=indexSynopsis width=100%>Initializes a new lexicon that reads words from the given file or input stream.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Methods</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:contains\">contains(<var>word</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(W)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>word</code> is contained in the lexicon.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:containsPrefix\">containsPrefix(<var>prefix</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(W)</td>\n\t\t<td class=indexSynopsis width=100%>Returns true if any words in the lexicon begin with <code>prefix</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:size\">size()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the number of words contained in the lexicon.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Operators</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:foreach\">for (string word : lex)&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Iterates through the words in a lexicon in alphabetical order.</td>\n\t</tr>\n</table>\n\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:Lexicon\"></a>\n<pre class=detailCode>\nLexicon();\nLexicon(string filename);\n</pre>\n<div class=detailHTML>\nInitializes a new lexicon.  The default constructor creates an empty\nlexicon.  The second form reads in the contents of the lexicon from\nthe specified data file.\nThe data file must be in one of two formats:\n(1) a space-efficient precompiled binary format or (2) a text file\ncontaining one word per line.  The Stanford library distribution\nincludes a binary lexicon file named <code>EnglishWords.dat</code>\ncontaining a list of words in English.  The standard code pattern\nto initialize that lexicon looks like this:\n<pre>\nLexicon english(\"EnglishWords.dat\");\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nLexicon lex;\nLexicon lex(filename);\n</pre>\n<hr>\n</table>\n\n<h2>Method detail</h2>\n\n\n<hr>\n<a name=\"Method:contains\"></a>\n<pre class=detailCode>\nbool contains(string word) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if <code>word</code> is contained in the\nlexicon.  In the <code>Lexicon</code> class, the case of letters is\nignored, so \"Zoo\" is the same as \"ZOO\" or \"zoo\".\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (lex.contains(word)) ...\n</pre>\n\n<hr>\n<a name=\"Method:containsPrefix\"></a>\n<pre class=detailCode>\nbool containsPrefix(string prefix) const;\n</pre>\n<div class=detailHTML>\nReturns true if any words in the lexicon begin with <code>prefix</code>.\nLike <code>containsWord</code>, this method ignores the case of letters\nso that \"MO\" is a prefix of \"monkey\" or \"Monday\".\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (lex.containsPrefix(prefix)) ...\n</pre>\n\n<hr>\n<a name=\"Method:size\"></a>\n<pre class=detailCode>\nint size() const;\n</pre>\n<div class=detailHTML>\nReturns the number of words contained in the lexicon.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint n = lex.size();\n</pre>\n\n\n<hr>\n</table>\n\n\n<h2>Operator detail</h2>\n\n<hr>\n<a name=\"Operator:foreach\"></a>\n<pre class=detailCode>\nfor (string word : lex)\n</pre>\n<div class=detailHTML>\nThe range-based for loop can be used to iterate through the elements in a collection. The iteration accesses the lexicon words in alphabetical order.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfor (string word : lex) {\n\tcout << word << endl;\n}\n\n</pre>\n\n\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Docs/Map.html",
    "content": "<html>\n<head>\n<title>Map</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"img/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>libcs106</code> library, Academic Year 2025-26\n</div></td>\n</tr></table>\n<hr>\n<div class=include>#include \"map.h\"</div>\n<h1 class=header><code>class Map&lt;<var>KeyType</var>,&nbsp;<var>ValueType</var>&gt;</code></h1>\nThis class maintains an association between <b><i>keys</i></b> and\n<b><i>values</i></b>.  The types used for keys and values are\nspecified using templates, which makes it possible to use\nthis structure with any data type.\n\n<p>The map uses a binary search tree (BST) structure internally.\nBecause of this choice of internal representation, the <code>KeyType</code> for the keys stored in a <code>Map</code> must define a natural ordering through a <a target=\"_blank\" href=\"http://www.cplusplus.com/reference/functional/less/\"><code>less</code> function</a> and/or <code>&lt;</code> operator so that the keys can be compared and ordered.  The <code>ValueType</code> does not need to provide any such natural ordering. The range-based for loop will iterate over the map keys in sorted order.  The Map operations to add/access/remove an entry run in O(logN) time.\n.\n\n<table class=index width=100%>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Constructor</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Constructor:Map\">Map()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Initializes a new empty map that associates keys and values of the specified types.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=2>Methods</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:clear\">clear()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Removes all entries from this map.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:containsKey\">containsKey(<var>key</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(log N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if there is an entry for <code>key</code> in this map.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:equals\">equals(<var>map</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the two maps contain the same entries.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:firstKey\">firstKey()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the first key in this map in the order established by a for-each loop.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:get\">get(<var>key</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(log N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the value associated with <code>key</code> in this map.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:isEmpty\">isEmpty()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if this map contains no entries.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:keys\">keys()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns a <code>Vector</code> copy of all keys in this map.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:lastKey\">lastKey()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(log N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the last value in this map in the order established by a for-each loop.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:mapAll\">mapAll(<var>fn</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Iterates through the map entries and calls <code>fn(key, value)</code> for each one.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:put\">put(<var>key</var>,&nbsp;<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(log N)</td>\n\t\t<td class=indexSynopsis width=100%>Associates <code>key</code> with <code>value</code> in this map.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:remove\">remove(<var>key</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(log N)</td>\n\t\t<td class=indexSynopsis width=100%>Removes any entry for <code>key</code> from this map.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:size\">size()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the number of entries in this map.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns a printable string representation of this map.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:values\">values()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns a <code>Vector</code> copy of all values in this map.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Operators</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:foreach\">for (KeyType key : map)&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Iterates through the keys in a map.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:[]\"><var>map</var>[<var>key</var>]</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(log N)</td>\n\t\t<td class=indexSynopsis width=100%>Selects the value associated with <code>key</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:==\"><var>map1</var> == <var>map1</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>map1</code> and <code>map2</code> contain the same entries.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:!=\"><var>map1</var> != <var>map2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>map1</code> and <code>map2</code> are different.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:+\"><var>map1</var> + <var>map2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(NlogN)</td>\n\t\t<td class=indexSynopsis width=100%>Creates a new map which contains all <code>map1</code> entries added to all <code>map2</code> entries.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:+=\"><var>map1</var> += <var>map2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(NlogN)</td>\n\t\t<td class=indexSynopsis width=100%>Adds all <code>map2</code> entries to <code>map1</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:-\"><var>map1</var> - <var>map2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(NlogN)</td>\n\t\t<td class=indexSynopsis width=100%>Creates a new map which contains all <code>map1</code> entries minus all <code>map2</code> entries.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:-=\"><var>map1</var> -= <var>map2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(NlogN)</td>\n\t\t<td class=indexSynopsis width=100%>Removes all <code>map2</code> entries from <code>map1</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:*\"><var>map1</var> * <var>map2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(NlogN)</td>\n\t\t<td class=indexSynopsis width=100%>Creates a new map which contains all entries that appear in both <code>map1</code> and <code>map2</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:*=\"><var>map1</var> *= <var>map2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(NlogN)</td>\n\t\t<td class=indexSynopsis width=100%>Removes any entries from <code>map1</code> that are not present in <code>map2</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:<<\"><var>ostream</var>&nbsp;&lt;&lt;&nbsp;<var>map</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Outputs the contents of the map to the given output stream.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:>>\"><var>istream</var>&nbsp;&gt;&gt;&nbsp;<var>map</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N log N)</td>\n\t\t<td class=indexSynopsis width=100%>Reads the contents of the given input stream into the map.</td>\n\t</tr>\n</table>\n\n<h2>Constructor detail</h2>\n\n<hr>\n<a name=\"Constructor:Map\"></a>\n<pre class=detailCode>\nMap();\n</pre>\n<div class=detailHTML>\nInitializes a new empty map that associates keys and values of the\nspecified types. You may also optionally provide an initializer list of key-value pairs. The newly created map will contain those entries.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nMap&lt;KeyType, ValueType&gt; map;\nMap&lt;KeyType, ValueType&gt; map = {{ k1, v1}, { k2, v2 }};\n\n</pre>\n<hr>\n</table>\n\n<h2>Method detail</h2>\n\n<hr>\n<a name=\"Method:clear\"></a>\n<pre class=detailCode>\nvoid clear();\n</pre>\n<div class=detailHTML>\nRemoves all entries from this map.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap.clear();\n</pre>\n\n<hr>\n<a name=\"Method:containsKey\"></a>\n<pre class=detailCode>\nbool containsKey(const KeyType&amp; key) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if there is an entry for <code>key</code>\nin this map.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (map.containsKey(key)) ...\n</pre>\n\n<hr>\n<a name=\"Method:equals\"></a>\n<pre class=detailCode>\nbool equals(const Map&amp; map) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the two maps contain exactly the same key/value pairs.\nIdentical in behavior to the <code>==</code> operator.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (map1.equals(map2)) ...\n</pre>\n\n<hr>\n<a name=\"Method:firstKey\"></a>\n<pre class=detailCode>\nKeyType firstKey() const;\n</pre>\n<div class=detailHTML>\nReturns the first key in the map in the order established by\na for-each loop.  If map is empty, <code>firstKey</code>\nsignals an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nKeyType first = map.firstKey();\n</pre>\n\n\n<hr>\n<a name=\"Method:get\"></a>\n<pre class=detailCode>\nValueType get(const KeyType&amp; key) const;\n</pre>\n<div class=detailHTML>\nReturns the value associated with <code>key</code> in this map.\nIf <code>key</code> is not found, <code>get</code> returns the\ndefault value for <code>ValueType</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType value = map.get(key);\n</pre>\n\n<hr>\n<a name=\"Method:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty() const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if this map contains no entries.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (map.isEmpty()) ...\n</pre>\n\n<hr>\n<a name=\"Method:keys\"></a>\n<pre class=detailCode>\nVector&lt;KeyType&gt; keys() const;\n</pre>\n<div class=detailHTML>\nReturns a <code>Vector</code> copy of all keys in this map.\nThe keys will appear in the same order that a for-each loop over the map would produce them.\nBecause a map cannot contain duplicate keys, the elements of the vector will be unique.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nVector&lt;KeyType&gt; keys = map.keys();\n</pre>\n\n<hr>\n<a name=\"Method:lastKey\"></a>\n<pre class=detailCode>\nKeyType lastKey() const;\n</pre>\n<div class=detailHTML>\nReturns the last key in the map in the order established by\na for-each loop.  If map is empty, <code>lastKey</code>\nsignals an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nKeyType last = map.lastKey();\n</pre>\n\n\n<hr>\n<a name=\"Method:mapAll\"></a>\n<pre class=detailCode>\nvoid mapAll(std::function&lt;void (const KeyType&amp;, const ValueType&amp;)&gt; fn) const;\n</pre>\n<div class=detailHTML>\nIterates through the map entries and calls <code>fn(key, value)</code>\nfor each one.  The keys are processed in ascending order, as defined\nby the comparison function.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap.mapAll(fn);\n</pre>\n\n<hr>\n<a name=\"Method:put\"></a>\n<pre class=detailCode>\nvoid put(const KeyType&amp; key, const ValueType&amp; value);\n</pre>\n<div class=detailHTML>\nAssociates <code>key</code> with <code>value</code> in this map.\nAny previous value associated with <code>key</code> is replaced\nby the new value.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap.put(key, value);\n</pre>\n\n<hr>\n<a name=\"Method:remove\"></a>\n<pre class=detailCode>\nvoid remove(const KeyType&amp; key);\n</pre>\n<div class=detailHTML>\nRemoves any entry for <code>key</code> from this map.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap.remove(key);\n</pre>\n\n<hr>\n<a name=\"Method:size\"></a>\n<pre class=detailCode>\nint size() const;\n</pre>\n<div class=detailHTML>\nReturns the number of entries in this map.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint nEntries = map.size();\n</pre>\n\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString() const;\n</pre>\n<div class=detailHTML>\nReturns a printable string representation of this map. such as <code>&quot;{k1:v1, k2:v2, k3:v3}&quot;</code>.\nThe key/value pairs will be listed in ascending order by key.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = map.toString();\n</pre>\n\n<hr>\n<a name=\"Method:values\"></a>\n<pre class=detailCode>\nVector&lt;ValueType&gt; values() const;\n</pre>\n<div class=detailHTML>\nReturns a <code>Vector</code> copy of all values in this map.\nThe values will appear in the same order that a for-each loop over the map would produce them.\nA map can contain duplicate values, so the elements of the vector are not guaranteed to be unique.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nVector&lt;ValueType&gt; values = map.values();\n</pre>\n\n<hr>\n</table>\n<h2>Operator detail</h2>\n\n<hr>\n<a name=\"Operator:foreach\"></a>\n<pre class=detailCode>\nfor (KeyType key : map)\n</pre>\n<div class=detailHTML>\nThe range-based for loop can be used to iterate through the elements in a collection. The iteration accesses map keys in ascending order. An error is signaled if you attempt to add/remove elements from a collection while iterating over it.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfor (KeyType key : map) {\n\tcout << key << \" = \" << map[key] << endl;\n}\n\n</pre>\n\n\n<hr>\n<a name=\"Operator:[]\"></a>\n<pre class=detailCode>\nValueType&amp; operator[](const KeyType&amp; key);\nconst ValueType&amp; operator[](const KeyType&amp; key) const;\n</pre>\n<div class=detailHTML>\nSelects the value associated with <code>key</code>.  This syntax\nmakes it easy to think of a map as an \"associative array\"\nindexed by the key type.  If <code>key</code> is already present\nin the map, this function returns a reference to its associated\nvalue.  If key is not present in the map, a new entry is created\nwhose value is set to the default for the value type.\n\n<p>Note: <code>get</code> and <code>operator[]</code> have a small\nbut significant difference when used to retrieve the value for a key\nnot contained in the map. Both expressions return the default\nvalue, but accessing <code>map[key]</code> adds this new entry\nto the map while <code>map.get(key)</code> does not.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap[key]\n</pre>\n\n<hr>\n<a name=\"Operator:+\"></a>\n<pre class=detailCode>\nMap operator+(const Map&amp; map2) const;\n</pre>\n<div class=detailHTML>\nCreates a new map which combines the entries from <code>map1</code> and <code>map2</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap1 + map2\n</pre>\n\n<hr>\n<a name=\"Operator:*\"></a>\n<pre class=detailCode>\nMap operator*(const Map&amp; map2) const;\n</pre>\n<div class=detailHTML>\nCreates a new map which contains those entries that appear in both <code>map1</code> and <code>map2</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap1 * map2\n</pre>\n\n<hr>\n<a name=\"Operator:-\"></a>\n<pre class=detailCode>\nMap operator-(const Map&amp; map2) const;\n</pre>\n<div class=detailHTML>\nCreates a new map which is the difference of the entries in <code>map1</code> minus those in <code>map2</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap1 - map2\n</pre>\n\n<hr>\n<a name=\"Operator:+=\"></a>\n<pre class=detailCode>\nMap&amp; operator+=(const Map&amp; map2);\n</pre>\n<div class=detailHTML>\nAdds all of the entries from <code>map2</code> to <code>map1</code>.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap1 += map2;\n</pre>\n\n<hr>\n<a name=\"Operator:*=\"></a>\n<pre class=detailCode>\nMap&amp; operator*=(const Map&amp; map2);\n</pre>\n<div class=detailHTML>\nRemoves any entries from <code>map1</code> that are not present in\n<code>map2</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap1 *= map2;\n</pre>\n\n<hr>\n<a name=\"Operator:-=\"></a>\n<pre class=detailCode>\nMap&amp; operator-=(const Map&amp; map2);\n</pre>\n<div class=detailHTML>\nRemoves the entries in <code>map2</code> from <code>map1</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nmap1 -= map2;\n</pre>\n\n<hr>\n<a name=\"Operator:<<\"></a>\n<pre class=detailCode>\nostream&amp; operator&lt;&lt;(const Map&amp; map);\n</pre>\nOutputs the contents of <code>map</code> to the given output stream.\nThe output is in the form <code>{k1:v1, k2:v2, k3:v3}</code>. The entries\nwill be listed in ascending order of key.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncout << map << endl;\n</pre>\n\n\n<hr>\n<a name=\"Operator:>>\"></a>\n<pre class=detailCode>\nistream&amp; operator&gt;&gt;(Map&amp; map);\n</pre>\nReads the contents of the given input stream into <code>map</code>. Any previous\ncontents of the map are replaced.\nThe input is expected to be in the form <code>{k1:v1, k2:v2, k3:v3}</code>. If unable to read a proper\nmap from the stream, the operation results in a stream fail state.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (infile >> map) ...\n</pre>\n\n\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Docs/PriorityQueue.html",
    "content": "<html>\n<head>\n<title>PriorityQueue</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"img/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>libcs106</code> library, Academic Year 2025-26\n</div></td>\n</tr></table>\n<hr>\n<div class=include>#include \"priorityqueue.h\"</div>\n<h1 class=header><code>class PriorityQueue&lt;<var>ValueType</var>&gt;</code></h1>\nThis class models a structure called a <b><i>priority&nbsp;queue</i></b>\nin which values are processed in order of priority.  As in conventional\nEnglish usage, lower priority numbers correspond to more urgent\npriorities, so that a priority 1 item takes precedence over a\npriority 2 item.\n\nThe fundamental priority queue operations are <code>enqueue</code> (add value with assigned priority)\nand <code>dequeue</code> (remove value with most urgent priority). Both of these operations run in O(logN) time.\n\n<p>Priority queues do not allow access to elements by index, nor can you iterate\nthrough the elements using the range-based for loop.\n\n<table class=index width=100%>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Constructor</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Constructor:PriorityQueue\">PriorityQueue()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Initializes a new priority queue, which is initially empty.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Methods</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:changePriority\">changePriority(<var>value</var>,&nbsp;<var>newPriority</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Reassigns the priority of an existing value in the priority queue.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:clear\">clear()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Removes all elements from the priority queue.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:dequeue\">dequeue()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(log N)</td>\n\t\t<td class=indexSynopsis width=100%>Removes and returns the frontmost (most urgent) value.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:enqueue\">enqueue(<var>value</var>,&nbsp;<var>priority</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(log N)</td>\n\t\t<td class=indexSynopsis width=100%>Adds <code>value</code> to the priority queue with the specified priority.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:equals\">equals(<var>pq</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N log N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the two priority queues contain the same elements with the same priorities.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:isEmpty\">isEmpty()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the priority queue contains no elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:peek\">peek()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the value of the frontmost (most urgent) element, without removing it.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:peekPriority\">peekPriority()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the priority of the frontmost (most urgent) element, without removing it.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:size\">size()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the number of values in the priority queue.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns a printable string representation of the priority queue.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Operators</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:==\"><var>pq1</var> == <var>pq1</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N log N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>pq1</code> and <code>pq2</code> contain the same elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:!=\"><var>pq1</var> != <var>pq2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N log N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>pq1</code> and <code>pq2</code> have different contents.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:<<\"><var>ostream</var>&nbsp;&lt;&lt;&nbsp;<var>pq</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Outputs the contents of the priority queue to the given output stream.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:>>\"><var>istream</var>&nbsp;&gt;&gt;&nbsp;<var>pq</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(NlogN)</td>\n\t\t<td class=indexSynopsis width=100%>Reads the contents of the given input stream into the priority queue.</td>\n\t</tr>\n</table>\n\n<h2>Constructor detail</h2>\n\n<hr>\n<a name=\"Constructor:PriorityQueue\"></a>\n<pre class=detailCode>\nPriorityQueue();\n</pre>\n<div class=detailHTML>\nInitializes a new priority queue, which is initially empty.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nPriorityQueue&lt;ValueType&gt; pq;\n</pre>\n\n<hr>\n</table>\n<h2>Method detail</h2>\n\n<hr>\n<a name=\"Method:changePriority\"></a>\n<pre class=detailCode>\nvoid changePriority(ValueType value, double newPriority);\n</pre>\n<div class=detailHTML>\nRe-assigns <code>value</code> to the specified <code>newPriority</code>,\nwhich must be at least as urgent as (&le;) the value's previous\npriority.\n<p>This function raises an error if the value is not present in this priority queue or if the\nnew priority passed is not at least as urgent as its current priority.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\npq.changePriority(value, newPriority);\n</pre>\n\n<hr>\n<a name=\"Method:clear\"></a>\n<pre class=detailCode>\nvoid clear();\n</pre>\n<div class=detailHTML>\nRemoves all elements from the priority queue.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\npq.clear();\n</pre>\n\n<hr>\n<a name=\"Method:dequeue\"></a>\n<pre class=detailCode>\nValueType dequeue();\n</pre>\n<div class=detailHTML>\nRemoves and returns the frontmost value from the priority queue. The value\nwith the most urgent priority is frontmost. If multiple\nentries in the queue have the same priority, those values are\ndequeued in the <bold>reverse</bold> order in which they were enqueued.\n<p>This function throws an error if the queue is empty.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType front = pq.dequeue();\n</pre>\n\n<hr>\n<a name=\"Method:enqueue\"></a>\n<pre class=detailCode>\nvoid enqueue(const ValueType&amp; value, double priority);\n</pre>\n<div class=detailHTML>\nAdds <code>value</code> to the queue with the specified priority.\nLower priority numbers correspond to more urgent priorities, which\nmeans that all priority 1 elements are dequeued before any\npriority 2 elements.\n<p>Negative priorities are allowed and are not treated differently from other values.\nThat is, a priority of -1 comes before one of 0, which comes before 1, 2, 3, etc.\n<p>This function throws an error if NaN (not-a-number) is passed as the priority.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\npq.enqueue(value, priority);\n</pre>\n\n<hr>\n<a name=\"Method:equals\"></a>\n<pre class=detailCode>\nbool equals(const PriorityQueue&amp; pq) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the two queues contain exactly the same element values with the same priorities.\nIdentical in behavior to the <code>==</code> operator.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (pq.equals(pq2)) ...\n</pre>\n\n<hr>\n<a name=\"Method:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty() const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the priority queue contains no elements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (pq.isEmpty()) ...\n</pre>\n\n<hr>\n<a name=\"Method:peek\"></a>\n<pre class=detailCode>\nconst ValueType&amp; peek() const;\n</pre>\n<div class=detailHTML>\nReturns the value of the frontmost element, without removing it.\nIn a priority queue, the value with the most urgent priority is frontmost.\n<p>This function throws an error if the queue is empty.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType front = pq.peek();\n</pre>\n\n<hr>\n<a name=\"Method:peekPriority\"></a>\n<pre class=detailCode>\ndouble peekPriority() const;\n</pre>\n<div class=detailHTML>\nReturns the priority of the frontmost element, without removing it.\nIn a priority queue, the value with the most urgent priority is frontmost.\n<p>This function throws an error if the queue is empty.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble priority = pq.peekPriority();\n</pre>\n\n<hr>\n<a name=\"Method:size\"></a>\n<pre class=detailCode>\nint size() const;\n</pre>\n<div class=detailHTML>\nReturns the number of values in the priority queue.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint n = pq.size();\n</pre>\n\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString() const;\n</pre>\n<div class=detailHTML>\nReturns a printable string representation of the elements in the priority queue. The format is a list of priority-value pairs <code>&quot;{pri1:value1, pri2:value2, pri3:value3}&quot;</code>.\nThe order of elements in the list is unpredictable.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = pq.toString();\n</pre>\n\n<hr>\n<a name=\"Operator:<<\"></a>\n<pre class=detailCode>\nostream&amp; operator&lt;&lt;(const PriorityQueue&amp; pq);\n</pre>\nOutputs the contents of <code>pq</code> to the given output stream.\nThe format is the same as specified by <code>toString</code>.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncout << queue << endl;\n</pre>\n\n\n<hr>\n<a name=\"Operator:>>\"></a>\n<pre class=detailCode>\nistream&amp; operator&gt;&gt;(PriorityQueue&amp; pq);\n</pre>\nReads the contents of the given input stream into <code>pq</code>. Any previous\ncontents of the priority queue are replaced.\nThe input is expected to be in the form <code>{pri1:value1, pri2:value2}</code>\nwhere the elements can be listed in any order. If unable to read a proper\npriority queue from the stream, the operation results in a stream fail state.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (infile >> queue) ...\n</pre>\n\n\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Docs/Queue.html",
    "content": "<html>\n<head>\n<title>Queue</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"img/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>libcs106</code> library, Academic Year 2025-26\n</div></td>\n</tr></table>\n<hr>\n<div class=include>#include \"queue.h\"</div>\n<h1 class=header><code>class Queue&lt;<var>ValueType</var>&gt;</code></h1>\nThis class models a linear structure called a <b><i>queue</i></b>\nin which values are added at one end and removed from the other.\nThis discipline gives rise to a first-in/first-out behavior (FIFO)\nthat is the defining feature of queues.\nThe fundamental queue operations are <code>enqueue</code> (add to back)\nand <code>dequeue</code> (remove from front). Both of these operations run in O(1) time.\n\n<p>Queues do not allow access to elements by index, nor can you iterate\nthrough the elements using the range-based for loop.\n\n<table class=index width=100%>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Constructor</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Constructor:Queue\">Queue()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Initializes a new empty queue.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Methods</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:clear\">clear()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Removes all elements from the queue.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:dequeue\">dequeue()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Removes and returns the frontmost element in the queue.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:enqueue\">enqueue(<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Adds <code>value</code> to the back of the queue.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:equals\">equals(<var>q</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the two queues contain the same elements in the same order.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:isEmpty\">isEmpty()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the queue contains no elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:peek\">peek()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the frontmost element in the queue, without removing it.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:size\">size()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the number of values in the queue.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns a printable string representation of this queue.</td>\n\t<tr>\n\n\t<tr>\n\t\t<td class=indexHead colspan=3>Operators</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:==\"><var>queue1</var> == <var>queue1</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>queue1</code> and <code>queue2</code> contain the same elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:!=\"><var>queue1</var> != <var>queue2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>queue1</code> and <code>queue2</code> are different.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:<<\"><var>ostream</var>&nbsp;&lt;&lt;&nbsp;<var>queue</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Outputs the contents of the queue to the given output stream.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:>>\"><var>istream</var>&nbsp;&gt;&gt;&nbsp;<var>queue</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Reads the contents of the given input stream into the queue.</td>\n\t</tr>\n</table>\n\n<h2>Constructor detail</h2>\n\n<hr>\n<a name=\"Constructor:Queue\"></a>\n<pre class=detailCode>\nQueue();\n</pre>\n<div class=detailHTML>\nInitializes a new empty queue. You may also optionally provide an initializer\nlist of values. The newly created queue will contain those values listed left-to-right\nin order from front of the queue to the back.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nQueue&lt;ValueType&gt; queue;\nQueue&lt;ValueType&gt; queue = { frontValue, middleValue, backValue };\n</pre>\n\n<hr>\n</table>\n<h2>Method detail</h2>\n\n<hr>\n<a name=\"Method:clear\"></a>\n<pre class=detailCode>\nvoid clear();\n</pre>\n<div class=detailHTML>\nRemoves all elements from the queue.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nqueue.clear();\n</pre>\n\n<hr>\n<a name=\"Method:dequeue\"></a>\n<pre class=detailCode>\nValueType dequeue();\n</pre>\n<div class=detailHTML>\nRemoves and returns the frontmost element in the queue. If the queue is empty, this function signals an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType first = queue.dequeue();\n</pre>\n\n<hr>\n<a name=\"Method:enqueue\"></a>\n<pre class=detailCode>\nvoid enqueue(const ValueType&amp; value);\n</pre>\n<div class=detailHTML>\nAdds <code>value</code> to the back of the queue.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nqueue.enqueue(value);\n</pre>\n\n<hr>\n<a name=\"Method:equals\"></a>\n<pre class=detailCode>\nbool equals(const Queue&amp; queue) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the two queues contain exactly the same values in the same order.\nIdentical in behavior to the <code>==</code> operator.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (queue1.equals(queue2)) ...\n</pre>\n\n<hr>\n<a name=\"Method:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty() const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the queue contains no elements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (queue.isEmpty()) ...\n</pre>\n\n<hr>\n<a name=\"Method:peek\"></a>\n<pre class=detailCode>\nconst ValueType&amp; peek() const;\n</pre>\n<div class=detailHTML>\nReturns the frontmost element in the queue, without removing it. If the queue is empty, this function signals an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType first = queue.peek();\n</pre>\n\n<hr>\n<a name=\"Method:size\"></a>\n<pre class=detailCode>\nint size() const;\n</pre>\n<div class=detailHTML>\nReturns the number of values in the queue.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint n = queue.size();\n</pre>\n\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString() const;\n</pre>\n<div class=detailHTML>\nReturns a printable string representation of this queue. The elements are listed left-to-right from the front of the queue to the back, such as <code>&quot;{value1, value2, value3}&quot;</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = queue.toString();\n</pre>\n\n<hr>\n<a name=\"Operator:<<\"></a>\n<pre class=detailCode>\nostream&amp; operator&lt;&lt;(const Queue&amp; queue);\n</pre>\nOutputs the contents of <code>queue</code> to the given output stream.\nThe output is in the form <code>{value1, value2, value3}</code>\nwhere elements are listed left-to-right from the front of the queue to the back.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncout << queue << endl;\n</pre>\n\n\n<hr>\n<a name=\"Operator:>>\"></a>\n<pre class=detailCode>\nistream&amp; operator&gt;&gt;(Queue&amp; queue);\n</pre>\nReads the contents of the given input stream into <code>queue</code>. Any previous\ncontents of the queue are replaced.\nThe input is expected to be in the form <code>{value1, value2, value3}</code>\nwhere elements are listed left-to-right from the front of the queue to the back. If unable to read a proper\nqueue from the stream, the operation results in a stream fail state.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (infile >> queue) ...\n</pre>\n\n\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Docs/Set.html",
    "content": "<html>\n<head>\n<title>Set</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"img/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>libcs106</code> library, Academic Year 2025-26\n</div></td>\n</tr></table>\n<hr>\n<div class=include>#include \"set.h\"</div>\n<h1 class=header><code>class Set&lt;<var>ValueType</var>&gt;</code></h1>\nThis class stores a collection of distinct elements.\n\n<p>The set uses a binary search tree (BST) structure internally.\nBecause of this choice of internal representation, the <code>ValueType</code> for the type of elements stored in a <code>Set</code> must define a natural ordering through a <a target=\"_blank\" href=\"http://www.cplusplus.com/reference/functional/less/\"><code>less</code> function</a> and/or <code>&lt;</code> operator so that the elements can be compared and ordered. The range-based for loop will iterate over the elements in sorted order. The Set operations to add/find/remove an element run in O(logN) time.\n\n\n<table class=index width=100%>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Constructor</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Constructor:Set\">Set()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Initializes a new set of the specified element type.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Methods</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:add\">add(<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(log N)</td>\n\t\t<td class=indexSynopsis width=100%>Adds an element to this set, if it was not already there.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:clear\">clear()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Removes all elements from this set.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:contains\">contains(<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(log N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the specified value is in this set.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:difference\">difference(<var>otherSet</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N log N)</td>\n\t\t<td class=indexSynopsis width=100%>Subtracts <code>otherSet</code> from this set. The difference removes those elements that appear in <code>otherSet</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:equals\">equals(<var>set</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the two sets contain the same elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:first\">first()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the first value in this set when considered in sorted order.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:intersect\">intersect(<var>otherSet</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N log N)</td>\n\t\t<td class=indexSynopsis width=100%>Intersects <code>otherSet</code> with this set. The intersection retains only those elements also contained in <code>otherSet</code>.</td>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:isEmpty\">isEmpty()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if this set contains no elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:isSubsetOf\">isSubsetOf(<var>otherSet</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if this set is a subset of <code>otherSet</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:isSupersetOf\">isSupersetOf(<var>otherSet</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if this set is a superset of <code>otherSet</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:last\">last()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(log N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the last value in this set when considered in sorted order.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:mapAll\">mapAll(<var>fn</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Calls <code>fn(value)</code> for each element of this set.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:remove\">remove(<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(log N)</td>\n\t\t<td class=indexSynopsis width=100%>Removes an element from this set.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:size\">size()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the number of elements in this set.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns a printable string representation of this set.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:unionWith\">unionWith(<var>otherSet</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N log N)</td>\n\t\t<td class=indexSynopsis width=100%>Unions <code>otherSet</code> with this set. The union adds all elements from <code>otherSet</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Operators</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:foreach\">for (ValueType elem : set)&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Iterates through the elements in a set.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:==\"><var>set1</var> == <var>set2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Evaluates to <code>true</code> if <code>set1</code> and <code>set2</code> contain the same elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:!=\"><var>set1</var> != <var>set2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Evaluates to <code>true</code> if <code>set1</code> and <code>set2</code> are different.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:+\"><var>set</var> + <var>value</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Creates a new set which is the union of <code>set</code> with the single <code>value</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:+\"><var>set1</var> + <var>set2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N log N)</td>\n\t\t<td class=indexSynopsis width=100%>Creates a new set which is the union of <code>set1</code> with <code>set2</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:+=\"><var>set</var> += <var>value</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(log N)</td>\n\t\t<td class=indexSynopsis width=100%>Adds the single <code>value</code> to <code>set</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:+=\"><var>set1</var> += <var>set2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N log N)</td>\n\t\t<td class=indexSynopsis width=100%>Adds all of the elements from <code>set2</code> to <code>set1</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:-\"><var>set</var> - <var>value</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Creates a new set which contains all values in <code>set</code> minus <code>value</code>.\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:-\"><var>set1</var> - <var>set2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N log N)</td>\n\t\t<td class=indexSynopsis width=100%>Creates a new set containing the elements in <code>set1</code> that aren't in <code>set2</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:-=\"><var>set</var> -= <var>value</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(log N)</td>\n\t\t<td class=indexSynopsis width=100%>Removes the single <code>value</code> from <code>set</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:-=\"><var>set1</var> -= <var>set2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N log N)</td>\n\t\t<td class=indexSynopsis width=100%>Removes the elements of <code>set2</code> from <code>set1</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:*\"><var>set1</var> * <var>set2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N log N)</td>\n\t\t<td class=indexSynopsis width=100%>Creates a new set which is the intersection of <code>set1</code> and <code>set2</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:*=\"><var>set1</var> *= <var>set2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N log N)</td>\n\t\t<td class=indexSynopsis width=100%>Removes any elements from <code>set1</code> that are not present in <code>set2</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:<<\"><var>ostream</var>&nbsp;&lt;&lt;&nbsp;<var>set</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Outputs the contents of <code>set</code> to the given output stream.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:>>\"><var>istream</var>&nbsp;&gt;&gt;&nbsp;<var>set</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N log N)</td>\n\t\t<td class=indexSynopsis width=100%>Reads the contents of the given input stream into <code>set</code>.</td>\n\t</tr>\n</table>\n\n<h2>Constructor detail</h2>\n\n<hr>\n<a name=\"Constructor:Set\"></a>\n<pre class=detailCode>\nSet();\n</pre>\n<div class=detailHTML>\nCreates an empty set of the specified element type. You may also optionally provide an initializer list of values. The newly created set will contain those values.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nSet&lt;ValueType&gt; set;\nSet&lt;ValueType&gt; set = { value1, value2, value3 };\n</pre>\n\n<hr>\n</table>\n<h2>Method detail</h2>\n\n<hr>\n<a name=\"Method:add\"></a>\n<pre class=detailCode>\nvoid add(const ValueType&amp; value);\n</pre>\n<div class=detailHTML>\nAdds an element to this set, if it was not already there.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset.add(value);\n</pre>\n\n<hr>\n<a name=\"Method:clear\"></a>\n<pre class=detailCode>\nvoid clear();\n</pre>\n<div class=detailHTML>\nRemoves all elements from this set.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset.clear();\n</pre>\n\n<hr>\n<a name=\"Method:contains\"></a>\n<pre class=detailCode>\nbool contains(const ValueType&amp;  value) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the specified value is in this set.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (set.contains(value)) ...\n</pre>\n\n<hr>\n<a name=\"Method:difference\"></a>\n<pre class=detailCode>\nSet&amp; difference(const Set&amp; set2);\n</pre>\n<div class=detailHTML>\nRemoves from this set all elements that are present in <code>set2</code>. Returns a reference to this set, which has been modified in place. If you want a new set, consider <code><a href=\"#Operator:-\">set1 - set2</a></code> instead.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1.difference(set2);\n</pre>\n<hr>\n<a name=\"Method:equals\"></a>\n<pre class=detailCode>\nbool equals(const Set&amp; set2) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the two sets contain exactly the same element values.\nIdentical in behavior to the <code>==</code> operator.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (set1.equals(set2)) ...\n</pre>\n\n<hr>\n<a name=\"Method:first\"></a>\n<pre class=detailCode>\nValueType first() const;\n</pre>\n<div class=detailHTML>\nReturns the first value in the set when considered in sorted order.  If set is empty, <code>first</code>\nsignals an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType value = set.first();\n</pre>\n\n<hr>\n<a name=\"Method:intersect\"></a>\n<pre class=detailCode>\nSet&amp; intersect(const Set&amp; set2);\n</pre>\n<div class=detailHTML>\nRemoves from this set all elements that are not present in <code>set2</code>. Returns a reference to this set, which has been modified in place. If you want a new set, consider <code><a href=\"#Operator:*\">set1 * set2</a></code> instead.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset.intersect(set2);\n</pre>\n\n<hr>\n<a name=\"Method:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty() const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if this set contains no elements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (set.isEmpty()) ...\n</pre>\n\n<hr>\n<a name=\"Method:isSubsetOf\"></a>\n<pre class=detailCode>\nbool isSubsetOf(const Set&amp; set2) const;\n</pre>\n<div class=detailHTML>\nReturns\n<code>true</code> if every element of this set is\ncontained in <code>set2</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (set1.isSubsetOf(set2)) ...\n</pre>\n\n<hr>\n<a name=\"Method:isSupersetOf\"></a>\n<pre class=detailCode>\nbool isSupersetOf(const Set&amp; set2) const;\n</pre>\n<div class=detailHTML>\nReturns\n<code>true</code> if every element of <code>set2</code> is\ncontained in this set.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (set1.isSupersetOf(set2)) ...\n</pre>\n\n\n<hr>\n<a name=\"Method:last\"></a>\n<pre class=detailCode>\nValueType last() const;\n</pre>\n<div class=detailHTML>\nReturns the last value in the set when considered in sorted order.  If set is empty, <code>last</code>\nsignals an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType value = set.last();\n</pre>\n\n\n<hr>\n<a name=\"Method:mapAll\"></a>\n<pre class=detailCode>\nvoid mapAll(std::function&lt;void (const ValueType&amp;)&gt; fn) const;\n</pre>\n<div class=detailHTML>\nIterates through the elements of the set and calls <code>fn(value)</code>\nfor each one.  The elements are processed in sorted order.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset.mapAll(fn);\n</pre>\n\n\n<hr>\n<a name=\"Method:remove\"></a>\n<pre class=detailCode>\nvoid remove(const ValueType&amp;  value);\n</pre>\n<div class=detailHTML>\nRemoves an element from this set.  If the value was not\ncontained in the set, there is no error and the set\nremains unchanged.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset.remove(value);\n</pre>\n\n<hr>\n<a name=\"Method:size\"></a>\n<pre class=detailCode>\nint size() const;\n</pre>\n<div class=detailHTML>\nReturns the number of elements in this set.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint count = set.size();\n</pre>\n\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString() const;\n</pre>\n<div class=detailHTML>\nReturns a printable string representation of this set, such as <code>&quot;{value1, value2, value3}&quot;</code>.\nThe values are listed in sorted order.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = set.toString();\n</pre>\n\n<hr>\n<a name=\"Method:unionWith\"></a>\n<pre class=detailCode>\nSet&amp; unionWith(const Set&amp; set2);\n</pre>\n<div class=detailHTML>\nAdds to this set all elements from <code>set2</code>. Returns a reference to this set, which has been modified in place. If you want a new set, consider <code><a href=\"#Operator:+\">set1 + set2</a></code> instead.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1.unionWith(set2);\n</pre>\n\n<hr>\n</table>\n<h2>Operator detail</h2>\n\n<hr>\n<a name=\"Operator:foreach\"></a>\n<pre class=detailCode>\nfor (ValueType elem : set)\n</pre>\n<div class=detailHTML>\nThe range-based for loop can be used to iterate through the elements in a collection. The elements in a set are accessed in sorted order. An error is signaled if you attempt to add/remove elements from a collection while iterating over it.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfor (ValueType elem : set) {\n\tcout << elem << endl;\n}\n</pre>\n\n\n<hr>\n<a name=\"Operator:==\"></a>\n<pre class=detailCode>\nbool operator==(const Set&amp; set2) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if <code>set1</code> and <code>set2</code>\ncontain the same elements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1 == set2\n</pre>\n\n<hr>\n<a name=\"Operator:!=\"></a>\n<pre class=detailCode>\nbool operator!=(const Set&amp; set2) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if <code>set1</code> and <code>set2</code>\nare different.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1 != set2\n</pre>\n\n<hr>\n<a name=\"Operator:+\"></a>\n<pre class=detailCode>\nSet operator+(const Set&amp; set2) const;\nSet operator+(const ValueType&amp; element) const;\n</pre>\n<div class=detailHTML>\nCreates a new set which is the union of <code>set1</code> with <code>set2</code> (or with the single <code>value</code>).\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1 + set2\nset1 + value\n</pre>\n\n<hr>\n<a name=\"Operator:*\"></a>\n<pre class=detailCode>\nSet operator*(const Set&amp; set2) const;\n</pre>\n<div class=detailHTML>\nCreates a new set which is the intersection of <code>set1</code> and <code>set2</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1 * set2\n</pre>\n\n<hr>\n<a name=\"Operator:-\"></a>\n<pre class=detailCode>\nSet operator-(const Set&amp; set2) const;\nSet operator-(const ValueType&amp; value) const;\n</pre>\n<div class=detailHTML>\nCreates a new set which is the difference of <code>set1</code> minus <code>set2</code> (or minus the single <code>value</code>).\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1 - set2\nset1 - value\n</pre>\n\n<hr>\n<a name=\"Operator:+=\"></a>\n<pre class=detailCode>\nSet&amp; operator+=(const Set&amp; set2);\nSet&amp; operator+=(const ValueType&amp; value);\n</pre>\n<div class=detailHTML>\nAdds all of the elements from <code>set2</code> (or the single <code>value</code>) to <code>set1</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1 += set2;\nset1 += value;\n</pre>\n\n<hr>\n<a name=\"Operator:*=\"></a>\n<pre class=detailCode>\nSet&amp; operator*=(const Set&amp; set2);\n</pre>\n<div class=detailHTML>\nRemoves any elements from <code>set1</code> that are not present in\n<code>set2</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1 *= set2;\n</pre>\n\n<hr>\n<a name=\"Operator:-=\"></a>\n<pre class=detailCode>\nSet&amp; operator-=(const Set&amp; set2);\nSet&amp; operator-=(const ValueType&amp; value);\n</pre>\n<div class=detailHTML>\nRemoves the all elements in <code>set2</code> (or the single <code>value</code>) from <code>set1</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nset1 -= set2;\nset1 -= value;\n</pre>\n\n<hr>\n<a name=\"Operator:<<\"></a>\n<pre class=detailCode>\nostream&amp; operator&lt;&lt;(const Set&amp; set);\n</pre>\nOutputs the contents of <code>set</code> to the given output stream.\nThe output is in the form <code>{value1, value2, value3}</code>\nwhere elements are listed in sorted order.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncout << set << endl;\n</pre>\n\n\n<hr>\n<a name=\"Operator:>>\"></a>\n<pre class=detailCode>\nistream&amp; operator&gt;&gt;(Set&amp; set);\n</pre>\nReads the contents of the given input stream into <code>set</code>. Any previous\ncontents of the set are replaced.\nThe input is expected to be in the form <code>{value1, value2, value3}</code>. If unable to read a proper\nset from the stream, the operation results in a stream fail state.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (infile >> set) ...\n</pre>\n\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Docs/Stack.html",
    "content": "<html>\n<head>\n<title>Stack</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"img/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>libcs106</code> library, Academic Year 2025-26\n</div></td>\n</tr></table>\n<hr>\n<div class=include>#include \"stack.h\"</div>\n<h1 class=header><code>class Stack&lt;<var>ValueType</var>&gt;</code></h1>\nThis class models a linear structure called a <b><i>stack</i></b>\nin which values are added and removed only from one end.\nThis discipline gives rise to a last-in/first-out behavior (LIFO)\nthat is the defining feature of stacks.  The fundamental stack\noperations are <code>push</code> (add to top) and <code>pop</code>\n(remove from top). Both of these operations run in O(1) time.\n\n<p>Stacks do not allow access to elements by index, nor can you iterate\nthrough the elements using the range-based for loop.\n\n<table class=index width=100%>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Constructor</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Constructor:Stack\">Stack()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Initializes a new empty stack.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Methods</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:clear\">clear()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Removes all elements from this stack.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:equals\">equals(<var>stack</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the two stacks contain the same elements in the same order.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:isEmpty\">isEmpty()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if this stack contains no elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:peek\">peek()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the element on top of this stack, without removing it.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:pop\">pop()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Removes the element on top of this stack and returns it.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:push\">push(<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Adds <code>value</code> onto this stack.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:size\">size()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the number of values in this stack.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns a printable string representation of this stack.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Operators</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:==\"><var>stack1</var> == <var>stack2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>stack1</code> and <code>stack2</code> contain the same elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:!=\"><var>stack1</var> != <var>stack2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>stack1</code> and <code>stack2</code> are different.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:<<\"><var>ostream</var>&nbsp;&lt;&lt;&nbsp;<var>stack</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Outputs the contents of the stack to the given output stream.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:>>\"><var>istream</var>&nbsp;&gt;&gt;&nbsp;<var>stack</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Reads the contents of the given input stream into the stack.</td>\n\t</tr>\n</table>\n\n<h2>Constructor detail</h2>\n\n<hr>\n<a name=\"Constructor:Stack\"></a>\n<pre class=detailCode>\nStack();\n</pre>\n<div class=detailHTML>\nInitializes a new empty stack. You may also optionally provide an initializer\nlist of values. The newly created stack will contain those values listed left-to-right\nin order from bottom of the stack to top of stack.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nStack&lt;ValueType&gt; stack;\nStack&lt;ValueType&gt; stack = { bottomValue, middleValue, topValue };\n\n</pre>\n\n<hr>\n</table>\n<h2>Method detail</h2>\n\n<hr>\n<a name=\"Method:clear\"></a>\n<pre class=detailCode>\nvoid clear();\n</pre>\n<div class=detailHTML>\nRemoves all elements from this stack.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstack.clear();\n</pre>\n\n<hr>\n<a name=\"Method:equals\"></a>\n<pre class=detailCode>\nbool equals(const Stack&amp; stack) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the two stacks contain the exact same element values in the same order.\nIdentical in behavior to the <code>==</code> operator.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (stack1.equals(stack2)) ...\n</pre>\n\n<hr>\n<a name=\"Method:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty() const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if this stack contains no elements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (stack.isEmpty()) ...\n</pre>\n\n<hr>\n<a name=\"Method:peek\"></a>\n<pre class=detailCode>\nconst ValueType&amp; peek() const;\n</pre>\n<div class=detailHTML>\nReturns the element on top of this stack, without removing\nit.  If the stack is empty, this function signals an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType top = stack.peek();\n</pre>\n\n<hr>\n<a name=\"Method:pop\"></a>\n<pre class=detailCode>\nValueType pop();\n</pre>\n<div class=detailHTML>\nRemoves the element from top of this stack and returns it. If the stack is empty, this function signals an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType top = stack.pop();\n</pre>\n\n<hr>\n<a name=\"Method:push\"></a>\n<pre class=detailCode>\nvoid push(const ValueType&amp; value);\n</pre>\n<div class=detailHTML>\nAdds the specified value onto this stack.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstack.push(value);\n</pre>\n\n<hr>\n<a name=\"Method:size\"></a>\n<pre class=detailCode>\nint size() const;\n</pre>\n<div class=detailHTML>\nReturns the number of values in this stack.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint n = stack.size();\n</pre>\n\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString() const;\n</pre>\n<div class=detailHTML>\nReturns a printable string representation of this stack. The elements listed from left-to-right from the bottom of the stack to the top, such as <code>&quot;{value1, value2, value3}&quot;</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = stack.toString();\n</pre>\n\n<hr>\n<a name=\"Operator:<<\"></a>\n<pre class=detailCode>\nostream&amp; operator&lt;&lt;(const Stack&amp; stack);\n</pre>\nOutputs the contents of <code>stack</code> to the given output stream.\nThe output is in the form <code>{value1, value2, value3}</code>\nwhere elements are listed left-to-right from the bottom of the stack to the top.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncout << stack << endl;\n</pre>\n\n\n<hr>\n<a name=\"Operator:>>\"></a>\n<pre class=detailCode>\nistream&amp; operator&gt;&gt;(Stack&amp; stack);\n</pre>\nReads the contents of the given input stream into <code>stack</code>. Any previous\ncontents of the stack are replaced.\nThe input is expected to be in the form <code>{value1, value2, value3}</code>\nwhere elements are listed left-to-right from the bottom of the stack to the top. If unable to read a proper\nstack from the stream, the operation results in a stream fail state.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (infile >> stack) ...\n</pre>\n\n\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Docs/Vector.html",
    "content": "<html>\n<head>\n<title>Vector</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"img/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>libcs106</code> library, Academic Year 2025-26\n</div></td>\n</tr></table>\n<hr>\n<div class=include>#include \"vector.h\"</div>\n<h1 class=header><code>class Vector&lt;<var>ValueType</var>&gt;</code></h1>\nThis class stores an ordered list of values similar to an array.\nIt supports traditional array selection using square brackets, as well as inserting and removing elements.  Operations that access elements by index run in O(1) time. Operations, such\nas insert and remove, that must rearrange elements run in O(N) time.\n\n<table class=index width=100%>\n\t<tr><td class=indexHead colspan=3>Constructor</td></tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Constructor:Vector\">Vector()</a></nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td><td class=indexSynopsis width=100%>Initializes a new empty vector.</td></tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Constructor:Vector\">Vector(<var>n</var>,&nbsp;<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Initializes a new vector storing <em>n</em> copies of the given value.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Methods</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:add\">add(<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Adds a new value to the end of this vector.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:clear\">clear()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Removes all elements from this vector.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:equals\">equals(<var>vec</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if the two vectors contain the same elements in the same order.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:get\">get(<var>index</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the element at the specified index in this vector.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:insert\">insert(<var>index</var>,&nbsp;<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Inserts <code>value</code> into this vector at the specified index.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:isEmpty\">isEmpty()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if this vector contains no elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:mapAll\">mapAll(<var>fn</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Calls the specified function on each element of this vector in order of ascending index.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:remove\">remove(<var>index</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Removes the element at the specified index from this vector.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:set\">set(<var>index</var>,&nbsp;<var>value</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Replaces the element at the specified index in this vector with <code>value</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:size\">size()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Returns the number of elements in this vector.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:sort\">sort()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(NlogN)</td>\n\t\t<td class=indexSynopsis width=100%>Rearranges the elements in this vector into sorted order.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:subList\">subList(<var>start</var>, <var>length</var>)</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns a new vector containing elements from a sub-range of this vector.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Method:toString\">toString()</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns a printable string representation of this vector.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexHead colspan=3>Operators</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:foreach\">for (ValueType elem : vec)&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Iterates through the elements in a vector in order of ascending index.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:[]\"><var>vec</var>[<var>index</var>]</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Overloads <code>[]</code> to select elements from this vector.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:+\"><var>vec1</var>&nbsp;+&nbsp;<var>vec2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Concatenates two vectors.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:+=\"><var>vec1</var>&nbsp;+=&nbsp;<var>vec2</var>;</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Adds all of the elements from <code>vec2</code> to <code>vec1</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:+=\"><var>vec</var>&nbsp;+=&nbsp;<var>value</var>;</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Adds the single specified value to <code>vec</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:,\"><var>vec</var>&nbsp;+=&nbsp;<var>a</var>,&nbsp;<var>b</var>,&nbsp;<var>c</var>;</a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(1)</td>\n\t\t<td class=indexSynopsis width=100%>Adds multiple individual values to <code>vec</code>.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:==\"><var>vec1</var> == <var>vec2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>vec1</code> and <code>vec2</code> contain the same elements.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:!=\"><var>vec1</var> != <var>vec2</var></a>&nbsp;</nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Returns <code>true</code> if <code>vec1</code> and <code>vec2</code> are different.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:<<\"><var>ostream</var>&nbsp;&lt;&lt;&nbsp;<var>vec</var></a></nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Outputs the contents of the vector to the given output stream.</td>\n\t</tr>\n\t<tr>\n\t\t<td class=indexKey><nobr><a href=\"#Operator:<<\"><var>istream</var>&nbsp;&gt;&gt;&nbsp;<var>vec</var></a></nobr></td>\n\t\t<td class=\"bigoh\">O(N)</td>\n\t\t<td class=indexSynopsis width=100%>Reads the contents of the given input stream into the vector.</td>\n\t</tr>\n</table>\n\n<h2>Constructor detail</h2>\n\n<hr>\n<a name=\"Constructor:Vector\"></a>\n<pre class=detailCode>\nVector();\nVector(int n, ValueType value = ValueType());\n</pre>\n<div class=detailHTML>\nInitializes a new vector.  The default constructor creates an\nempty vector.  The second form creates an array with <code>n</code>\nelements, each of which is initialized to <code>value</code>;\nif <code>value</code> is missing, the elements are initialized\nto the default value for the type. You may also provide an initializer\nlist of values. The newly created vector will contain those values in order.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nVector&lt;ValueType&gt; vec;\nVector&lt;ValueType&gt; vec(n, value);\nVector&lt;ValueType&gt; vec = { value1, value2, value3 };\n</pre>\n\n<hr>\n</table>\n<h2>Method detail</h2>\n\n<hr>\n<a name=\"Method:add\"></a>\n<pre class=detailCode>\nvoid add(const ValueType&amp; value);\n</pre>\n<div class=detailHTML>\nAdds a new value to the end of this vector.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvec.add(value);\n</pre>\n\n<hr>\n<a name=\"Method:clear\"></a>\n<pre class=detailCode>\nvoid clear();\n</pre>\n<div class=detailHTML>\nRemoves all elements from this vector.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvec.clear();\n</pre>\n\n<hr>\n<a name=\"Method:equals\"></a>\n<pre class=detailCode>\nbool equals(const Vector&amp; v) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the two vectors contain exactly the same element values in the same order.\nIdentical in behavior to the <code>==</code> operator.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (vec1.equals(vec2)) ...\n</pre>\n\n<hr>\n<a name=\"Method:get\"></a>\n<pre class=detailCode>\nconst ValueType&amp; get(int index) const;\n</pre>\n<div class=detailHTML>\nReturns the element at the specified index in this vector.  This\nmethod signals an error if the index is not in the array range.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType val = vec.get(index);\n</pre>\n\n<hr>\n<a name=\"Method:insert\"></a>\n<pre class=detailCode>\nvoid insert(int index, const ValueType&amp; value);\n</pre>\n<div class=detailHTML>\nInserts a new value into this vector at the specified index.\nAll subsequent elements are shifted one position to the right.  This\nmethod signals an error if the index is outside the range from 0\nup to and including the length of this vector.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvec.insert(0, value);\n</pre>\n\n<hr>\n<a name=\"Method:isEmpty\"></a>\n<pre class=detailCode>\nbool isEmpty() const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if this vector contains no elements.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (vec.isEmpty()) ...\n</pre>\n\n<hr>\n<a name=\"Method:mapAll\"></a>\n<pre class=detailCode>\nvoid mapAll(std::function&lt;void (const ValueType&amp;)&gt; fn) const;\n</pre>\n<div class=detailHTML>\nCalls the specified function on each element of this vector in\norder of ascending index.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvec.mapAll(fn);\n</pre>\n\n<hr>\n<a name=\"Method:remove\"></a>\n<pre class=detailCode>\nValueType remove(int index);\n</pre>\n<div class=detailHTML>\nRemoves the element at the specified index from this vector and returns it.\nAll subsequent elements are shifted one position to the left.  This\nmethod signals an error if the index is outside the array range.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nValueType val = vec.remove(index);\n</pre>\n\n<hr>\n<a name=\"Method:set\"></a>\n<pre class=detailCode>\nvoid set(int index, const ValueType&amp; value);\n</pre>\n<div class=detailHTML>\nReplaces the element at the specified index in this vector with\na new value.  The previous value at that index is overwritten.\nThis method signals an error if the index is not in the array range.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvec.set(index, value);\n</pre>\n\n<hr>\n<a name=\"Method:size\"></a>\n<pre class=detailCode>\nint size() const;\n</pre>\n<div class=detailHTML>\nReturns the number of elements in this vector.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint nElems = vec.size();\n</pre>\n\n<hr>\n<a name=\"Method:sort\"></a>\n<pre class=detailCode>\nvoid sort();\n</pre>\n<div class=detailHTML>\nRearrange the elements in this vector into sorted order. Elements are compared using the < operator. In sorted order, the minimum element is placed at index 0; the maximum is at index size()-1.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvec.sort();\n</pre>\n\n<hr>\n<a name=\"Method:subList\"></a>\n<pre class=detailCode>\nVector subList(int start, int length) const;\nVector subList(int start) const;\n</pre>\n<div class=detailHTML>\nReturns a new vector containing elements from a sub-range of this vector. If only one argument is given, the sub-range length is to the end of this vector.\nFor example, the call of subList(2, 4) would return a new vector containing elements 2-5 of the original vector in its indexes 0-3.\nThrows an error if the range [start, start+length) is not contained within the range [0, size()].\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nVector&lt;ValueType&gt; sub = vec.subList(start, length);\n</pre>\n\n<hr>\n<a name=\"Method:toString\"></a>\n<pre class=detailCode>\nstring toString() const;\n</pre>\n<div class=detailHTML>\nReturns a printable string representation of this vector, such as <code>&quot;{value1, value2, value3}&quot;</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = vec.toString();\n</pre>\n\n<hr>\n</table>\n<h2>Operator detail</h2>\n\n<hr>\n<a name=\"Operator:foreach\"></a>\n<pre class=detailCode>\nfor (ValueType elem : vec)\nfor (ValueType&amp; elem : vec)\n</pre>\n<div class=detailHTML>\nThe range-based for loop can be used to iterate through the elements in a collection. The iteration accesses vector elements in order of ascending index. An error is signaled if you attempt to add/remove elements from a collection while iterating over it.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nfor (ValueType elem : vec) {\n\tcout << elem << endl;\n}\n\nfor (ValueType&amp; elem : vec) { // if reference type, elements are mutable\n\telem *= 2;\n}\n</pre>\n\n<hr>\n<a name=\"Operator:[]\"></a>\n<pre class=detailCode>\nValueType&amp; operator[](int index);\nconst ValueType&amp; operator[](int index) const;\n</pre>\n<div class=detailHTML>\nOverloads <code>[]</code> to select elements from this vector.\nThis extension enables the use of traditional array notation to\nget or set individual elements.  This method signals an error if\nthe index is outside the array range.  The file supports two\nversions of this operator, one for <code>const</code> vectors and\none for mutable vectors.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvec[index]\n</pre>\n\n<hr>\n<a name=\"Operator:+\"></a>\n<pre class=detailCode>\nVector operator+(const Vector&amp; vec2) const;\n</pre>\n<div class=detailHTML>\nConcatenates two vectors.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvec1 + vec2\n</pre>\n\n<hr>\n<a name=\"Operator:+=\"></a>\n<pre class=detailCode>\nVector&amp; operator+=(const Vector&amp; vec2);\nVector&amp; operator+=(ValueType value);\n</pre>\n<div class=detailHTML>\nAdds all of the elements from <code>vec2</code> (or the single\nspecified value) to <code>vec1</code>.  As a convenience, the\n<code>Vector</code> package also overloads the comma operator so\nthat it is possible to initialize a vector like this:\n\n<pre>\n   Vector&lt;int&gt; digits;\n   digits += 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;\n</pre>\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nvec1 += vec2;\nvec1 += value;\n</pre>\n\n<hr>\n<a name=\"Operator:<<\"></a>\n<pre class=detailCode>\nostream&amp; operator&lt;&lt;(const Vector&amp; vec);\n</pre>\nOutputs the contents of <code>vec</code> to the given output stream.\nThe output is in the form <code>{value1, value2, value3}</code>\nwhere elements are listed in order of ascending index.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ncout << vec << endl;\n</pre>\n\n<hr>\n<a name=\"Operator:>>\"></a>\n<pre class=detailCode>\nistream&amp; operator&gt;&gt;(Vector&amp; vec);\n</pre>\nReads the contents of the given input stream into <code>vec</code>. Any previous\ncontents of the vector are replaced.\nThe input is expected to be in the form <code>{value1, value2, value3}</code>\nwhere elements are listed in order of ascending index. If unable to read a proper\nvector from the stream, the operation results in a stream fail state.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (infile >> vec) ...\n</pre>\n\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Docs/_tokenscanner.html",
    "content": "\n<html>\n<head>\n<title>TokenScanner</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"img/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>libcs106</code> library, Academic Year 2025-26</div></td>\n</tr></table>\n<hr>\n<div class=include>#include \"tokenscanner.h\"</div>\n<h1 class=header><code>class TokenScanner</code></h1>\nThis class divides a string into individual tokens.  The typical\nuse of the <code>TokenScanner</code> class is illustrated by the\nfollowing pattern, which reads the tokens in the string variable\n<code>input</code>:\n\n<pre>\n   TokenScanner scanner(input);\n   while (scanner.hasMoreTokens()) {\n      string token = scanner.nextToken();\n      ... process the token ...\n   }\n</pre>\n\nThe <code>TokenScanner</code> class exports several additional methods\nthat give clients more control over its behavior.  Those methods are\ndescribed individually in the documentation.\n\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Constructor</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Constructor:TokenScanner\">TokenScanner()</a><br><a href=\"#Constructor:TokenScanner\">TokenScanner(<var>str</var>)</a><br><a href=\"#Constructor:TokenScanner\">TokenScanner(<var>infile</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Initializes a scanner object.</td></tr>\n<tr><td class=indexHead colspan=2>Methods</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:addOperator\">addOperator(<var>op</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Defines a new multicharacter operator.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:addWordCharacters\">addWordCharacters(<var>str</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Adds the characters in <code>str</code> to the set of characters legal in a <code>WORD</code> token.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getChar\">getChar()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Reads the next character from the scanner input stream.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getPosition\">getPosition()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the current position of the scanner in the input stream.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getStringValue\">getStringValue(<var>token</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the string value of a token.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:getTokenType\">getTokenType(<var>token</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the type of this token.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:hasMoreTokens\">hasMoreTokens()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if there are additional tokens for this scanner to read.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:ignoreComments\">ignoreComments()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Tells the scanner to ignore comments.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:ignoreWhitespace\">ignoreWhitespace()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Tells the scanner to ignore whitespace characters.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:isWordCharacter\">isWordCharacter(<var>ch</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> if the character is valid in a word.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:nextToken\">nextToken()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns the next token from this scanner.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:saveToken\">saveToken(<var>token</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Pushes the specified token back into this scanner's input stream.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:scanNumbers\">scanNumbers()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Controls how the scanner treats tokens that begin with a digit.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:scanStrings\">scanStrings()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Controls how the scanner treats tokens enclosed in quotation marks.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:setInput\">setInput(<var>str</var>)</a><br>\n<a href=\"#Method:setInput\">setInput(<var>infile</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the token stream for this scanner to the specified string or input stream.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:ungetChar\">ungetChar(<var>ch</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Pushes the character <code>ch</code> back into the scanner stream.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Method:verifyToken\">verifyToken(<var>expected</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Reads the next token and makes sure it matches the string <code>expected</code>.</td></tr>\n</table>\n<h2>Constructor detail</h2>\n<hr>\n<a name=\"Constructor:TokenScanner\"></a>\n<pre class=detailCode>\nTokenScanner();\nTokenScanner(string str);\nTokenScanner(istream &amp; infile);\n</pre>\n<div class=detailHTML>\nInitializes a scanner object.  The initial token stream comes from\nthe specified string or input stream, if supplied.  The default\nconstructor creates a scanner with an empty token stream.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nTokenScanner scanner;\nTokenScanner scanner(str);\nTokenScanner scanner(infile);\n</pre>\n<hr>\n</table>\n<h2>Method detail</h2>\n<hr>\n<a name=\"Method:setInput\"></a>\n<pre class=detailCode>\nvoid setInput(string str);\nvoid setInput(istream &amp; infile);\n</pre>\n<div class=detailHTML>\nSets the token stream for this scanner to the specified string or\ninput stream.  Any previous token stream is discarded.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nscanner.setInput(str);\nscanner.setInput(infile);\n</pre>\n<hr>\n<a name=\"Method:hasMoreTokens\"></a>\n<pre class=detailCode>\nbool hasMoreTokens();\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if there are additional tokens for this\nscanner to read.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (scanner.hasMoreTokens()) ...\n</pre>\n<hr>\n<a name=\"Method:nextToken\"></a>\n<pre class=detailCode>\nstring nextToken();\n</pre>\n<div class=detailHTML>\nReturns the next token from this scanner.  If <code>nextToken</code>\nis called when no tokens are available, it returns the empty string.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ntoken = scanner.nextToken();\n</pre>\n<hr>\n<a name=\"Method:saveToken\"></a>\n<pre class=detailCode>\nvoid saveToken(string token);\n</pre>\n<div class=detailHTML>\nPushes the specified token back into this scanner's input stream.\nOn the next call to <code>nextToken</code>, the scanner will return\nthe saved token without reading any additional characters from the\ntoken stream.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nscanner.saveToken(token);\n</pre>\n<hr>\n<a name=\"Method:getPosition\"></a>\n<pre class=detailCode>\nint getPosition() const;\n</pre>\n<div class=detailHTML>\nReturns the current position of the scanner in the input stream.\nIf <code>saveToken</code> has been called, this position corresponds\nto the beginning of the saved token.  If <code>saveToken</code> is\ncalled more than once, <code>getPosition</code> returns -1.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint pos = scanner.getPosition();\n</pre>\n<hr>\n<a name=\"Method:ignoreWhitespace\"></a>\n<pre class=detailCode>\nvoid ignoreWhitespace();\n</pre>\n<div class=detailHTML>\nTells the scanner to ignore whitespace characters.  By default,\nthe <code>nextToken</code> method treats whitespace characters\n(typically spaces and tabs) just like any other punctuation mark\nand returns them as single-character tokens.\nCalling\n\n<pre>\n   scanner.ignoreWhitespace();\n</pre>\n\nchanges this behavior so that the scanner ignore whitespace characters.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nscanner.ignoreWhitespace();\n</pre>\n<hr>\n<a name=\"Method:ignoreComments\"></a>\n<pre class=detailCode>\nvoid ignoreComments();\n</pre>\n<div class=detailHTML>\nTells the scanner to ignore comments.  The scanner package recognizes\nboth the slash-star and slash-slash comment format from the C-based\nfamily of languages.  Calling\n\n<pre>\n   scanner.ignoreComments();\n</pre>\n\nsets the parser to ignore comments.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nscanner.ignoreComments();\n</pre>\n<hr>\n<a name=\"Method:scanNumbers\"></a>\n<pre class=detailCode>\nvoid scanNumbers();\n</pre>\n<div class=detailHTML>\nControls how the scanner treats tokens that begin with a digit.  By\ndefault, the <code>nextToken</code> method treats numbers and letters\nidentically and therefore does not provide any special processing for\nnumbers.  Calling\n\n<pre>\n   scanner.scanNumbers();\n</pre>\n\nchanges this behavior so that <code>nextToken</code> returns the\nlongest substring that can be interpreted as a real number.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nscanner.scanNumbers();\n</pre>\n<hr>\n<a name=\"Method:scanStrings\"></a>\n<pre class=detailCode>\nvoid scanStrings();\n</pre>\n<div class=detailHTML>\nControls how the scanner treats tokens enclosed in quotation marks.  By\ndefault, quotation marks (either single or double) are treated just like\nany other punctuation character.  Calling\n\n<pre>\n   scanner.scanStrings();\n</pre>\n\nchanges this assumption so that <code>nextToken</code> returns a single\ntoken consisting of all characters through the matching quotation mark.\nThe quotation marks are returned as part of the scanned token so that\nclients can differentiate strings from other token types.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nscanner.scanStrings();\n</pre>\n<hr>\n<a name=\"Method:addWordCharacters\"></a>\n<pre class=detailCode>\nvoid addWordCharacters(string str);\n</pre>\n<div class=detailHTML>\nAdds the characters in <code>str</code> to the set of characters\nlegal in a <code>WORD</code> token.  For example, calling\n<code>addWordCharacters(\"_\")</code> adds the underscore to the\nset of characters that are accepted as part of a word.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nscanner.addWordCharacters(str);\n</pre>\n<hr>\n<a name=\"Method:isWordCharacter\"></a>\n<pre class=detailCode>\nbool isWordCharacter(char ch) const;\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> if the character is valid in a word.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (scanner.isWordCharacter(ch)) ...\n</pre>\n<hr>\n<a name=\"Method:addOperator\"></a>\n<pre class=detailCode>\nvoid addOperator(string op);\n</pre>\n<div class=detailHTML>\nDefines a new multicharacter operator.  Whenever you call\n<code>nextToken</code> when the input stream contains operator\ncharacters, the scanner returns the longest possible operator\nstring that can be read at that point.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nscanner.addOperator(op);\n</pre>\n<hr>\n<a name=\"Method:verifyToken\"></a>\n<pre class=detailCode>\nvoid verifyToken(string expected);\n</pre>\n<div class=detailHTML>\nReads the next token and makes sure it matches the string\n<code>expected</code>.  If it does not, <code>verifyToken</code>\nthrows an error.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nscanner.verifyToken(expected);\n</pre>\n<hr>\n<a name=\"Method:getTokenType\"></a>\n<pre class=detailCode>\nTokenType getTokenType(string token) const;\n</pre>\n<div class=detailHTML>\nReturns the type of this token.  This type will match one of the\nfollowing enumerated type constants: <code>EOF</code>,\n<code>SEPARATOR</code>, <code>WORD</code>, <code>NUMBER</code>,\n<code>STRING</code>, or <code>OPERATOR</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nTokenType type = scanner.getTokenType(token);\n</pre>\n<hr>\n<a name=\"Method:getChar\"></a>\n<pre class=detailCode>\nint getChar();\n</pre>\n<div class=detailHTML>\nReads the next character from the scanner input stream.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint ch = scanner.getChar();\n</pre>\n<hr>\n<a name=\"Method:ungetChar\"></a>\n<pre class=detailCode>\nvoid ungetChar(int ch);\n</pre>\n<div class=detailHTML>\nPushes the character <code>ch</code> back into the scanner stream.\nThe character must match the one that was read.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nscanner.ungetChar(ch);\n</pre>\n<hr>\n<a name=\"Method:getStringValue\"></a>\n<pre class=detailCode>\nstring getStringValue(string token) const;\n</pre>\n<div class=detailHTML>\nReturns the string value of a token.  This value is formed by removing\nany surrounding quotation marks and replacing escape sequences by the\nappropriate characters.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring str = scanner.getStringValue(token);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Docs/cppdoc.css",
    "content": "body, h1, h2, h3, h4, h5, h6 {\n\tfont-family:\"Candara\", \"Calibri\", \"Helvetica Neue\", \"Helvetica\", \"Arial\", \"sans-serif\";\n}\n\nbody {\n\tfont-size:100%;\n}\n\nh1 {\n\tfont-size:1.5em;\n\tfont-weight: 700;\n}\n\nh2 {\n\tfont-size:1.4em;\n\tfont-weight: 700;\n\tmargin-bottom:0px;\n}\n\n.header {\n\tfont-size:125%;\n}\n\n.new {\n\tcolor: #cc0000;\n\tfont-weight: 700;\n}\n\npre, code, .code, .indexKey, .include, .detailCode, .usageCode {\n\tfont-family: Consolas, Inconsolata, \"Lucida Console\", Menlo, Courier, monospace;\n\tfont-weight: 700;\n}\n\n.comment {\n\tcolor:blue;\n}\n\n.deprecated,\n.deprecated * {\n\tbackground-color: #e0e0e0 !important;\n\tcolor: #aaa !important;\n}\n\n.detailCode {\n\tpadding:0px;\n}\n\n.detailHTML {\n\tfont-size:1em;\n\tmargin-left:20px;\n}\n\n.it {\n\tfont-weight:normal;\n\tfont-style:italic;\n\tfont-size:90%;\n}\n\n.banner {\n\tborder:0;\n}\n\n.bannerText {\n\tfont-size:1.6em;\n\tfont-weight:bold;\n}\n\n.index {\n\tborder-collapse:collapse;\n\tmargin-top:1px;\n}\n\n.index tr, .index td {\n\tborder-color: #9eadc0;\n}\n\n.index tr:nth-child(2N) {\n\tbackground-color: #f6f6f6;\n}\n\n.index tbody tr:hover {\n\tbackground-color: #ffffee !important;\n}\n\n.index td.bigoh {\n\tborder:1px solid #9eadc0;\n\tvertical-align: top;\n\twhite-space: nowrap;\n\ttext-align: center;\n\tfont-weight: 500;\n}\n\n.indexHead {\n\tfont-size:1.4em;\n\tfont-weight:bold;\n\tpadding-top:1em;\n}\n\n.indexKey {\n\tborder:1px solid black;\n\tpadding:3px 5px;\n\tfont-size:95%;\n\tvertical-align: top;\n}\n\n.indexKey var {\n\tfont-style: italic;\n}\n\n.indexSynopsis {\n\tborder:1px solid black;\n\tpadding:3px 5px;\n\tvertical-align: top;\n}\n\n.inset {\n\tmargin-left:36px;\n}\n\n.usageCode {\n\tfont-size:95%;\n\tmargin-left:40px;\n}\n\n.since {\n\tbackground-color: #ffffee;\n\tborder: 1px dotted #bbbbff;\n\tcolor: #555;\n\tfont-size: 85%;\n\tfont-style: italic;\n\tpadding: 0.2em 0.5em;\n}\n"
  },
  {
    "path": "Docs/direction.html",
    "content": "<html>\n<head>\n<title>direction.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"img/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>libcs106</code> library, Academic Year 2025-26\n</div></td>\n</tr></table>\n\n<hr>\n<h1 class=\"header\"><code>direction.h</code></h1>\nThis file exports an enumerated type called <code>Direction</code>\nwhose elements are the four compass points: <code>NORTH</code>,\n<code>EAST</code>, <code>SOUTH</code>, and <code>WEST</code>.\n<table class=\"index\" width=\"100%\">\n<tbody><tr><td class=\"indexHead\" colspan=\"2\">Type</td>\n</tr>\n<tr>\n    <td class=\"indexKey\"><nobr><a href=\"#Type:Direction\">Direction</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">This enumerated type is used to represent the four compass directions.</td>\n</tr>\n<tr>\n    <td class=\"indexHead\" colspan=\"2\">Functions</td>\n</tr>\n<tr>\n    <td class=\"indexKey\"><nobr><a href=\"#Function:directionToString\">directionToString(<var>dir</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns the name of the direction as a string.</td>\n</tr>\n<tr>\n    <td class=\"indexKey\"><nobr><a href=\"#Function:leftFrom\">leftFrom(<var>dir</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns the direction that is to the left of the argument.</td>\n</tr>\n<tr>\n    <td class=\"indexKey\"><nobr><a href=\"#Function:opposite\">opposite(<var>dir</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns the direction that is opposite to the argument.</td>\n</tr>\n<tr>\n    <td class=\"indexKey\"><nobr><a href=\"#Function:rightFrom\">rightFrom(<var>dir</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns the direction that is to the right of the argument.</td></tr>\n</tbody></table>\n<h2>Type detail</h2>\n\n<hr>\n<a name=\"Type:Direction\"></a>\n<pre class=\"detailCode\">enum Direction { NORTH, EAST, SOUTH, WEST };\n</pre>\n<div class=\"detailHTML\">\nThis enumerated type is used to represent the four compass directions.\n</div>\n\n<hr>\n\n<h2>Function detail</h2>\n\n<hr>\n<a name=\"Function:leftFrom\"></a>\n<pre class=\"detailCode\">Direction leftFrom(Direction dir);\n</pre>\n<div class=\"detailHTML\">\nReturns the direction that is to the left of the argument.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">Direction newdir = leftFrom(dir);\n</pre>\n\n<hr>\n<a name=\"Function:rightFrom\"></a>\n<pre class=\"detailCode\">Direction rightFrom(Direction dir);\n</pre>\n<div class=\"detailHTML\">\nReturns the direction that is to the right of the argument.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">Direction newdir = rightFrom(dir);\n</pre>\n\n<hr>\n<a name=\"Function:opposite\"></a>\n<pre class=\"detailCode\">Direction opposite(Direction dir);\n</pre>\n<div class=\"detailHTML\">\nReturns the direction that is opposite to the argument.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">Direction newdir = opposite(dir);\n</pre>\n\n<hr>\n<a name=\"Function:directionToString\"></a>\n<pre class=\"detailCode\">string directionToString(Direction dir);\n</pre>\n<div class=\"detailHTML\">\nReturns the name of the direction as a string.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">string str = directionToString(dir);\n</pre>\n\n<hr>\n\n\n\n</body></html>"
  },
  {
    "path": "Docs/error.html",
    "content": "<html>\n<head>\n<title>error.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"img/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>libcs106</code> library, Academic Year 2025-26\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>error.h</code></h1>\nThis file defines the <code>ErrorException</code> class and the\n<code>error</code> function.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Class</td></tr>\n<tr><td class=indexKey><nobr><a href=\"ErrorException-class.html\">ErrorException</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This exception is thrown by calls to the <code>error</code> function.</td></tr>\n<tr><td class=indexHead colspan=2>Function</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:error\">error(<var>msg</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Signals an error condition in a program by throwing an <code>ErrorException</code> with the specified message.</td></tr>\n</table>\n<h2>Function detail</h2>\n<hr>\n<a name=\"Function:error\"></a>\n<pre class=detailCode>\nvoid error(string msg);\n</pre>\n<div class=detailHTML>\nSignals an error condition in a program by throwing an\n<code>ErrorException</code> with the specified message.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nerror(msg);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Docs/filelib.html",
    "content": "<html>\n<head>\n<title>filelib.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"img/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>libcs106</code> library, Academic Year 2025-26\n</div></td>\n</tr></table>\n\n<hr>\n<h1 class=\"header\"><code>filelib.h</code></h1>\nThis file exports a standardized set of tools for working with\nfiles.  The library offers at least some portability across the\nfile systems used in the three supported platforms: Mac OSX,\nWindows, and Linux.  Directory and search paths are allowed to\ncontain separators in any of the supported styles, which usually\nmakes it possible to use the same code on different platforms.\n<table class=\"index\" width=\"100%\">\n<tbody><tr><td class=\"indexHead\" colspan=\"2\">Functions</td>\n</tr>\n<tr>\n   <td class=\"indexKey\"><nobr><a href=\"#Function:chooseFilenameDialog\">chooseFilenameDialog(<var>title</var>,&nbsp;<var>path</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Opens a dialog that allows the user to choose a file from the specified path.</td>\n</tr>\n\n<tr>\n   <td class=\"indexKey\"><nobr><a href=\"#Function:createDirectory\">createDirectory(<var>path</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Creates a new directory for the specified path.</td>\n</tr>\n<tr>\n   <td class=\"indexKey\"><nobr><a href=\"#Function:createDirectoryPath\">createDirectoryPath(<var>path</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Creates a new directory for the specified path.</td>\n</tr>\n<tr>\n   <td class=\"indexKey\"><nobr><a href=\"#Function:defaultExtension\">defaultExtension(<var>filename</var>,&nbsp;<var>ext</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Adds an extension to a file name if none already exists.</td>\n</tr>\n<tr>\n   <td class=\"indexKey\"><nobr><a href=\"#Function:deleteFile\">deleteFile(<var>filename</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Deletes the specified file.</td>\n</tr>\n<tr>\n   <td class=\"indexKey\"><nobr><a href=\"#Function:expandPathname\">expandPathname(<var>filename</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Expands a filename into a canonical name for the platform.</td>\n</tr>\n<tr>\n   <td class=\"indexKey\"><nobr><a href=\"#Function:fileExists\">fileExists(<var>filename</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns <code>true</code> if the specified file exists.</td>\n</tr>\n<tr>\n   <td class=\"indexKey\"><nobr><a href=\"#Function:fileSize\">fileSize(<var>filename</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns size of specified file or -1 if no such file exists.</td>\n</tr>\n\n<tr>\n   <td class=\"indexKey\"><nobr><a href=\"#Function:findOnPath\">findOnPath(<var>searchpath</var>,&nbsp;<var>filename</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns the canonical name of a file found using a search path.</td>\n</tr>\n<tr>\n   <td class=\"indexKey\"><nobr><a href=\"#Function:getCurrentDirectory\">getCurrentDirectory()</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns an absolute filename for the current directory.</td>\n</tr>\n<tr>\n   <td class=\"indexKey\"><nobr><a href=\"#Function:getDirectoryPathSeparator\">getDirectoryPathSeparator()</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns the standard directory path separator used on this platform.</td>\n</tr>\n<tr>\n   <td class=\"indexKey\"><nobr><a href=\"#Function:getExtension\">getExtension(<var>filename</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns the extension of <code>filename</code>.</td>\n</tr>\n<tr>\n   <td class=\"indexKey\"><nobr><a href=\"#Function:getHead\">getHead(<var>filename</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns all but the last component of a path name.</td>\n</tr>\n<tr>\n   <td class=\"indexKey\"><nobr><a href=\"#Function:getRoot\">getRoot(<var>filename</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns the root of <code>filename</code>.</td>\n</tr>\n<tr>\n   <td class=\"indexKey\"><nobr><a href=\"#Function:getSearchPathSeparator\">getSearchPathSeparator()</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns the standard search path separator used on this platform.</td>\n</tr>\n<tr>\n   <td class=\"indexKey\"><nobr><a href=\"#Function:getTail\">getTail(<var>filename</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns the last component of a path name.</td>\n</tr>\n<tr>\n   <td class=\"indexKey\"><nobr><a href=\"#Function:getTempDirectory\">getTempDirectory()</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns the operating system's temporary directory path as a string.</td>\n</tr>\n<tr>\n   <td class=\"indexKey\"><nobr><a href=\"#Function:isDirectory\">isDirectory(<var>filename</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns <code>true</code> if the specified file is a directory.</td>\n</tr>\n<tr>\n   <td class=\"indexKey\"><nobr><a href=\"#Function:isFile\">isFile(<var>filename</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns <code>true</code> if the specified file is a regular file.</td>\n</tr>\n<tr>\n   <td class=\"indexKey\"><nobr><a href=\"#Function:listDirectory\">listDirectory(<var>path</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns an alphabetized vector of the files in the specified directory.</td>\n</tr>\n<tr>\n   <td class=\"indexKey\"><nobr><a href=\"#Function:matchFilenamePattern\">matchFilenamePattern(<var>filename</var>,&nbsp;<var>pattern</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Determines whether the filename matches the specified pattern.</td>\n</tr>\n<tr>\n   <td class=\"indexKey\"><nobr><a href=\"#Function:openFile\">openFile(<var>stream</var>,&nbsp;<var>filename</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Opens the filestream <code>stream</code> using the specified filename.</td>\n</tr>\n<tr>\n   <td class=\"indexKey\"><nobr><a href=\"#Function:readEntire\">readEntire(<var>is</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Reads the entire contents of a filestream and returns them as a <code>string</code>.</td>\n</tr>\n<tr>\n   <td class=\"indexKey\"><nobr><a href=\"#Function:readLines\">readLines(<var>is</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Reads the entire contents of a filestream and returns them as a vector of lines.</td>\n</tr>\n<tr>\n   <td class=\"indexKey\"><nobr><a href=\"#Function:renameFile\">renameFile(<var>oldname</var>,&nbsp;<var>newname</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Renames a file.</td>\n</tr>\n<tr>\n   <td class=\"indexKey\"><nobr><a href=\"#Function:rewindStream\">rewindStream(<var>stream</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Moves an input stream back to its beginning so it can be read again.</td>\n</tr>\n<tr>\n   <td class=\"indexKey\"><nobr><a href=\"#Function:setCurrentDirectory\">setCurrentDirectory(<var>filename</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Changes the current directory to the specified path.</td>\n</tr>\n<tr>\n   <td class=\"indexKey\"><nobr><a href=\"#Function:writeEntireFile\">writeEntireFile(<var>filename</var>,&nbsp;<var>text</var>,&nbsp;<var>append</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Writes the given text to the specified file.</td></tr>\n</tbody></table>\n<h2>Function detail</h2>\n\n<hr>\n<a name=\"Function:openFile\"></a>\n<pre class=\"detailCode\">bool openFile(ifstream&amp; stream, string filename);\nbool openFile(ofstream&amp; stream, string filename);\n</pre>\n<div class=\"detailHTML\">\nOpens the filestream <code>stream</code> using the specified\nfilename.  If the operation\nsucceeds, <code>openFile</code> returns <code>true</code>;\nif it fails, <code>openFile</code> sets the failure flag in the\nstream and returns <code>false</code>. If <code>stream</code> is of type <code>ifstream</code>, the file\nis opened for reading; if of type <code>ofstream</code>, it is opened for writing.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">if (openFile(stream, filename)) ...\n</pre>\n\n\n<hr>\n<a name=\"Function:readEntire\"></a>\n<pre class=\"detailCode\">string readEntire(istream&amp; is);\n</pre>\n<div class=\"detailHTML\">\nReads the entire contents of a filestream and returns them as a <code>string</code>.  The client is responsible for\nopening and closing the stream.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">string data = readEntire(is);\n</pre>\n\n<hr>\n<a name=\"Function:readLines\"></a>\n<pre class=\"detailCode\">Vector&lt;string&gt; readLines(istream&amp; is);\n</pre>\n<div class=\"detailHTML\">\nReads the entire contents of a filestream and returns them as a vector of lines.  The client is responsible for\nopening and closing the stream.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">Vector&lt;string&gt; lines = readLines(is);\n</pre>\n\n<hr>\n<a name=\"Function:chooseFilenameDialog\"></a>\n<pre class=\"detailCode\">string chooseFilenameDialog(string title, string path);\n</pre>\n<div class=\"detailHTML\">\nOpens a dialog that allows the user to choose the file.  The\n<code>title</code> parameter is displayed in the dialog title.\nThe <code>path</code> parameter is used to set the working directory;\nif <code>path</code> does not appear, <code>chooseFilenameDialog</code>\nuses the current directory.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">string filename = chooseFilenameDialog(\"Choose a file\");\n</pre>\n\n<hr>\n<a name=\"Function:getRoot\"></a>\n<pre class=\"detailCode\">string getRoot(string filename);\n</pre>\n<div class=\"detailHTML\">\nReturns the root of <code>filename</code>.  The root consists\nof everything in <code>filename</code> up to the last dot and\nthe subsequent extension.  If no dot appears in the final component\nof the filename, <code>getRoot</code> returns the entire name.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">string root = getRoot(filename);\n</pre>\n\n<hr>\n<a name=\"Function:getExtension\"></a>\n<pre class=\"detailCode\">string getExtension(string filename);\n</pre>\n<div class=\"detailHTML\">\nReturns the extension of <code>filename</code>.  The extension\nconsists of the separating dot and all subsequent characters.\nIf no dot exists in the final component, <code>getExtension</code>\nreturns the empty string.  These semantics ensure that concatenating\nthe root and the extension always returns the original filename.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">ext = getExtension(filename);\n</pre>\n\n<hr>\n<a name=\"Function:getHead\"></a>\n<pre class=\"detailCode\">string getHead(string filename);\n</pre>\n<div class=\"detailHTML\">\nReturns all but the last component of a path name.  The components\nof the path name can be separated by any of the directory path\nseparators (forward or reverse slashes).  The special cases are\nillustrated by the following examples:\n\n<pre>   getHead(\"a/b\")  = \"a\"     getTail(\"a/b\")   = \"b\"\n   getHead(\"a\")    = \"\"      getTail(\"a\")     = \"a\"\n   getHead(\"/a\")   = \"/\"     getTail(\"/a\")    = \"a\"\n   getHead(\"/\")    = \"/\"     getTail(\"/\")     = \"\"\n</pre>\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">head = getHead(filename);\n</pre>\n\n<hr>\n<a name=\"Function:getTail\"></a>\n<pre class=\"detailCode\">string getTail(string filename);\n</pre>\n<div class=\"detailHTML\">\nReturns the last component of a path name.  The components of the\npath name can be separated by any of the directory path separators\n(forward or reverse slashes).  For details on the interpretation of\nspecial cases, see the comments for the <code>getHead</code> function.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">tail = getTail(filename);\n</pre>\n\n<hr>\n<a name=\"Function:getTempDirectory\"></a>\n<pre class=\"detailCode\">string getTempDirectory();\n</pre>\n<div class=\"detailHTML\">\nReturns the operating system's temporary directory path as a string.\nFor example, on a Linux system this is often <code>\"/tmp\"</code> or <code>\"/var/tmp\"</code>\nand on a Windows system it is often something like <code>\"C:\\Users\\YourUserName\\Local Settings\\Temp\"</code>.\n\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">string tempdir = getTempDirectory();\n</pre>\n\n<hr>\n<a name=\"Function:defaultExtension\"></a>\n<pre class=\"detailCode\">string defaultExtension(string filename, string ext);\n</pre>\n<div class=\"detailHTML\">\nAdds an extension to a file name if none already exists.  If the\n<code>extension</code> argument begins with a leading <code>*</code>,\nany existing extension in <code>filename</code> is replaced by\n<code>ext</code>.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">string newname = defaultExtension(filename, ext);\n</pre>\n\n<hr>\n<a name=\"Function:findOnPath\"></a>\n<pre class=\"detailCode\">string findOnPath(string searchpath, string filename);\n</pre>\n<div class=\"detailHTML\">\nReturns the canonical name of a file found using a search path. The searchpath argument consists of a list of directories that are prepended to the filename, unless filename begins with an absolute directory marker, such as / or ~. The directories in the search path may be separated either by colons (Unix or Mac OS) or semicolons (Windows).  If no matching file is found,\n<code>findOnPath</code> returns the empty string.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">string pathname = findOnPath(searchpath, filename);\n</pre>\n\n<hr>\n<a name=\"Function:deleteFile\"></a>\n<pre class=\"detailCode\">void deleteFile(string filename);\n</pre>\n<div class=\"detailHTML\">\nDeletes the specified file.  Errors are reported by calling\n<code>error</code>.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">deleteFile(filename);\n</pre>\n\n<hr>\n<a name=\"Function:renameFile\"></a>\n<pre class=\"detailCode\">void renameFile(string oldname, string newname);\n</pre>\n<div class=\"detailHTML\">\nRenames a file.  Errors are reported by calling\n<code>error</code> in the implementation.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">renameFile(oldname, newname);\n</pre>\n\n<hr>\n<a name=\"Function:fileExists\"></a>\n<pre class=\"detailCode\">bool fileExists(string filename);\n</pre>\n<div class=\"detailHTML\">\nReturns <code>true</code> if the specified file exists.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">if (fileExists(filename)) ...\n</pre>\n\n<hr>\n<a name=\"Function:fileSize\"></a>\n<pre class=\"detailCode\">int fileSize(string filename);\n</pre>\n<div class=\"detailHTML\">\nReturns size in bytes of specified file or -1 if no such file exists.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">int n = fileSize(filename);\n</pre>\n\n<hr>\n<a name=\"Function:isFile\"></a>\n<pre class=\"detailCode\">bool isFile(string filename);\n</pre>\n<div class=\"detailHTML\">\nReturns <code>true</code> if the specified file is a regular file.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">if (isFile(filename)) ...\n</pre>\n\n<hr>\n<a name=\"Function:isDirectory\"></a>\n<pre class=\"detailCode\">bool isDirectory(string filename);\n</pre>\n<div class=\"detailHTML\">\nReturns <code>true</code> if the specified file is a directory.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">if (isDirectory(filename)) ...\n</pre>\n\n<hr>\n<a name=\"Function:setCurrentDirectory\"></a>\n<pre class=\"detailCode\">void setCurrentDirectory(string path);\n</pre>\n<div class=\"detailHTML\">\nChanges the current directory to the specified path.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">setCurrentDirectory(filename);\n</pre>\n\n<hr>\n<a name=\"Function:getCurrentDirectory\"></a>\n<pre class=\"detailCode\">string getCurrentDirectory();\n</pre>\n<div class=\"detailHTML\">\nReturns an absolute filename for the current directory.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">string filename = getCurrentDirectory();\n</pre>\n\n<hr>\n<a name=\"Function:createDirectory\"></a>\n<pre class=\"detailCode\">void createDirectory(string path);\n</pre>\n<div class=\"detailHTML\">\nCreates a new directory for the specified path.  The\n<code>createDirectory</code> function does not report an error if\nthe directory already exists.  Unlike <code>createDirectoryPath</code>,\n<code>createDirectory</code> does not create missing directories\nalong the path.  If some component of <code>path</code> does\nnot exist, this function signals an error.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">createDirectory(path);\n</pre>\n\n<hr>\n<a name=\"Function:createDirectoryPath\"></a>\n<pre class=\"detailCode\">void createDirectoryPath(string path);\n</pre>\n<div class=\"detailHTML\">\nCreates a new directory for the specified path.   If intermediate\ncomponents of <code>path</code> do not exist, this function creates\nthem as needed.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">createDirectoryPath(path);\n</pre>\n\n<hr>\n<a name=\"Function:expandPathname\"></a>\n<pre class=\"detailCode\">string expandPathname(string filename);\n</pre>\n<div class=\"detailHTML\">\nExpands a filename into a canonical name for the platform.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">string pathname = expandPathname(filename);\n</pre>\n\n<hr>\n<a name=\"Function:listDirectory\"></a>\n<pre class=\"detailCode\">Vector&lt;string&gt; listDirectory(string path);\n</pre>\n<div class=\"detailHTML\">\nReturns an alphabetized list of the names of the files in the specified directory.\nThe entries <code>.</code> and <code>..</code> are excluded from the list.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">\nVector&lt;string&gt; filenames = listDirectory(path);\n</pre>\n\n<hr>\n<a name=\"Function:matchFilenamePattern\"></a>\n<pre class=\"detailCode\">bool matchFilenamePattern(string filename, string pattern);\n</pre>\n<div class=\"detailHTML\">\nDetermines whether the filename matches the specified pattern.  The\npattern string is interpreted in much the same way that a Unix shell\nexpands filenames and supports the following wildcard options:\n\n<pre>   ?      Matches any single character\n   *      Matches any sequence of characters\n   [...]  Matches any of the specified characters\n   [^...] Matches any character <i>except</i> the specified ones\n</pre>\n\nThe last two options allow a range of characters to be specified in the\nform <code>a-z</code>.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">if (matchFilenamePattern(filename, pattern)) ...\n</pre>\n\n<hr>\n<a name=\"Function:getDirectoryPathSeparator\"></a>\n<pre class=\"detailCode\">string getDirectoryPathSeparator();\n</pre>\n<div class=\"detailHTML\">\nReturns the standard directory path separator used on this platform.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">string sep = getDirectoryPathSeparator();\n</pre>\n\n<hr>\n<a name=\"Function:getSearchPathSeparator\"></a>\n<pre class=\"detailCode\">string getSearchPathSeparator();\n</pre>\n<div class=\"detailHTML\">\nReturns the standard search path separator used on this platform.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">string sep = getSearchPathSeparator();\n</pre>\n\n<hr>\n<a name=\"Function:rewindStream\"></a>\n<pre class=\"detailCode\">void rewindStream(istream&amp; stream);\n</pre>\n<div class=\"detailHTML\">\nMoves an input stream back to its beginning so it can be read again.\nThis function is implemented by calling the <code>clear</code> member function on the stream to reset any flags such as the <code>fail</code> flag, then calling the <code>seekg</code> member function to move the stream's internal cursor back to its beginning.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">rewindStream(stream);\n</pre>\n\n\n<hr>\n<a name=\"Function:writeEntireFile\"></a>\n<pre class=\"detailCode\">bool writeEntireFile(string filename, string text, bool append = false);\n</pre>\n<div class=\"detailHTML\">\nWrites the given text into the specified file.\nIf the <code>append</code> parameter is passed with a <code>true</code> value, adds the given text to the end of the file.\nIf <code>append</code> is omitted or <code>false</code>, overwrites any previous contents of the file.\nIf the file cannot be opened or written, returns <code>false</code>, otherwise returns <code>true</code>.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">writeEntireFile(filename, text);\n</pre>\n\n\n<hr>\n\n</body></html>"
  },
  {
    "path": "Docs/gmath.html",
    "content": "<html>\n<head>\n<title>gmath.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"img/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>libcs106</code> library, Academic Year 2025-26\n</div></td>\n</tr></table>\n<hr>\n<h1 class=\"header\"><code>gmath.h</code></h1>\nThis file exports several functions for working with graphical\ngeometry along with the mathematical constants <code>PI</code>\nand <code>E</code>.\n<table class=\"index\" width=\"100%\">\n<tbody><tr><td class=\"indexHead\" colspan=\"2\">Constants</td>\n</tr>\n<tr>\n    <td class=\"indexKey\"><nobr>E&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">The mathematical constant e, which is the base of natural logarithms.</td>\n</tr>\n<tr>\n    <td class=\"indexKey\"><nobr>PI&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">The mathematical constant pi, which is the ratio of the circumference of a circle to its diameter.</td>\n</tr>\n<tr>\n    <td class=\"indexHead\" colspan=\"2\">Functions</td>\n</tr>\n<tr>\n    <td class=\"indexKey\"><nobr><a href=\"#Function:cosDegrees\">cosDegrees(<var>angle</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns the trigonometric cosine of <code>angle</code>, which is expressed in degrees.</td>\n</tr>\n<tr>\n    <td class=\"indexKey\"><nobr><a href=\"#Function:sinDegrees\">sinDegrees(<var>angle</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns the trigonometric sine of <code>angle</code>, which is expressed in degrees.</td>\n</tr>\n<tr>\n    <td class=\"indexKey\"><nobr><a href=\"#Function:tanDegrees\">tanDegrees(<var>angle</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns the trigonometric tangent of <code>angle</code>, which is expressed in degrees.</td>\n</tr>\n<tr>\n    <td class=\"indexKey\"><nobr><a href=\"#Function:toDegrees\">toDegrees(<var>radians</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Converts an angle from radians to degrees.</td>\n</tr>\n<tr>\n    <td class=\"indexKey\"><nobr><a href=\"#Function:toRadians\">toRadians(<var>degrees</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Converts an angle from degrees to radians.</td>\n</tr>\n<tr>\n    <td class=\"indexKey\"><nobr><a href=\"#Function:vectorAngle\">vectorAngle(<var>pt</var>)</a><br>\n<a href=\"#Function:vectorAngle\">vectorAngle(<var>x</var>,&nbsp;<var>y</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns the angle in degrees from the origin to the specified point.</td>\n</tr>\n<tr>\n    <td class=\"indexKey\"><nobr><a href=\"#Function:vectorDistance\">vectorDistance(<var>pt</var>)</a><br>\n<a href=\"#Function:vectorDistance\">vectorDistance(<var>x</var>,&nbsp;<var>y</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Computes the distance between the origin and the specified point.</td></tr>\n</tbody></table>\n<h2>Function detail</h2>\n\n<hr>\n\n\n<a name=\"Function:sinDegrees\"></a>\n<pre class=\"detailCode\">double sinDegrees(double angle);\n</pre>\n<div class=\"detailHTML\">\nReturns the trigonometric sine of <code>angle</code>, which is\nexpressed in degrees.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">double sine = sinDegrees(angle);\n</pre>\n\n<hr>\n<a name=\"Function:cosDegrees\"></a>\n<pre class=\"detailCode\">double cosDegrees(double angle);\n</pre>\n<div class=\"detailHTML\">\nReturns the trigonometric cosine of <code>angle</code>, which is\nexpressed in degrees.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">double cosine = cosDegrees(angle);\n</pre>\n\n<hr>\n<a name=\"Function:tanDegrees\"></a>\n<pre class=\"detailCode\">double tanDegrees(double angle);\n</pre>\n<div class=\"detailHTML\">\nReturns the trigonometric tangent of <code>angle</code>, which is\nexpressed in degrees.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">double tangent = tanDegrees(angle);\n</pre>\n<hr>\n<a name=\"Function:toDegrees\"></a>\n<pre class=\"detailCode\">double toDegrees(double radians);\n</pre>\n<div class=\"detailHTML\">\nConverts an angle from radians to degrees.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">double degrees = toDegrees(radians);\n</pre>\n<hr>\n<a name=\"Function:toRadians\"></a>\n<pre class=\"detailCode\">double toRadians(double degrees);\n</pre>\n<div class=\"detailHTML\">\nConverts an angle from degrees to radians.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">double radians = toRadians(degrees);\n</pre>\n<hr>\n<a name=\"Function:vectorDistance\"></a>\n<pre class=\"detailCode\">double vectorDistance(const GPoint &amp; pt);\ndouble vectorDistance(double x, double y);\n</pre>\n<div class=\"detailHTML\">\nComputes the distance between the origin and the specified point.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">double r = vectorDistance(pt);\ndouble r = vectorDistance(x, y);\n</pre>\n<hr>\n<a name=\"Function:vectorAngle\"></a>\n<pre class=\"detailCode\">double vectorAngle(const GPoint &amp; pt);\ndouble vectorAngle(double x, double y);\n</pre>\n<div class=\"detailHTML\">\nReturns the angle in degrees from the origin to the specified point.\nThis function takes account of the fact that the graphics coordinate\nsystem is flipped in the <i>y</i> direction from the traditional\nCartesian plane.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">double angle = vectorAngle(pt);\ndouble angle = vectorAngle(x, y);\n</pre>\n\n<hr>\n\n\n</body></html>"
  },
  {
    "path": "Docs/index.html",
    "content": "<html>\n<head>\n<title>The Stanford Library documentation</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"img/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>libcs106</code> library, Academic Year 2025-26\n\n</div></td>\n</tr></table>\n<hr>\n\n\n<h2>Collection classes</h2>\nSeveral of the classes represent collections of other objects.These collections work in much the same way as the similar classes in\nthe Standard Template Library (STL).\n\n<p>Each of these collections is documented in its own page, along with sample code.\n<table class=index width=100%>\n<tr><td class=indexKey><nobr><a href=\"Vector.html\">Vector&lt;<var>ValueType</var>&gt;</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>A Vector is an indexed sequence of values similar to an <b>array</b>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"Grid\">Grid&lt;<var>ValueType</var>&gt;</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>A Grid is an indexed, <b>two-dimensional array</b>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"GridLocation.html\">GridLocation</nobr></td><td class=indexSynopsis width=100%>A GridLocation struct is a <b>row/col</b> pair.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"GridLocationRange.html\">GridLocationRange</nobr></td><td class=indexSynopsis width=100%>A GridLocationRange is a <b>two-dimensional range</b> of grid locations.</td></tr>\n\n<tr><td class=indexKey><nobr><a href=\"Stack\">Stack&lt;<var>ValueType</var>&gt;</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>A Stack is a linear structure in which values are added and removed only from one end, <b>LIFO</b>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"Queue\">Queue&lt;<var>ValueType</var>&gt;</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>A Queue is a linear structure in which values are added at one end and removed from the other, <b>FIFO</b>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"PriorityQueue\">PriorityQueue&lt;<var>ValueType</var>&gt;</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>A PriorityQueue is a specialized queue in which values are processed <b>in order of priority</b>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"Map\">Map&lt;<var>KeyType</var>,&nbsp;<var>ValueType</var>&gt;</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>A Map maintains an ordered association between <b>keys</b> and <b>values</b>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"HashMap\">HashMap&lt;<var>KeyType</var>,&nbsp;<var>ValueType</var>&gt;</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>A HashMap is a highly efficient and unordered implementation of the Map abstraction.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"Set\">Set&lt;<var>ValueType</var>&gt;</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>A Set is an ordered collection of <b>distinct values</b>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"HashSet\">HashSet&lt;<var>ValueType</var>&gt;</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>A HashSet is a highly efficient and unordered implementation of the Set abstraction.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"Lexicon\">Lexicon</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>A Lexicon is a highly efficient implementation of a <b>word list</b>.</td></tr>\n\n</table>\n\n\n<table class=index width=100%>\n<h2>Utility header files</h2>\nThese headers export various utility functions, grouped thematically. Some of these have been updated for Fall Quarter 2022; others are pending updates.\n<tr><td class=indexKey><nobr><a href=\"direction.html\">direction.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file exports an enumerated type called <code>Direction</code> whose elements are the four compass points: <code>NORTH</code>, <code>EAST</code>, <code>SOUTH</code>, and <code>WEST</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"error.html\">error.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file defines the <code>ErrorException</code> class and the <code>error</code> function.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"filelib.html\">filelib.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file exports a standardized set of tools for working with files.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"GPoint.html\">GPoint</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>A GPoint struct is a x/y pair to represent a location in the graphics plane.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"random.html\">random.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file exports functions for generating pseudorandom numbers.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"simpio.html\">simpio.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file exports a set of functions that simplify input/output operations in C++ and provide some error-checking on console input.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"strlib.html\">strlib.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file exports several useful string functions that are not included in the C++ string library.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"timer.html\">timer.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file exports a class for measuring intervals of time.</td></tr>\n<!--<tr><td class=indexKey><nobr><a href=\"tokenscanner.html\">tokenscanner.h</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>This file exports a <code>TokenScanner</code> class that divides a string into individual logical units called <b><i>tokens</i></b>.</td></tr>-->\n</table>\n\n\n</body>\n</html>\n"
  },
  {
    "path": "Docs/random.html",
    "content": "<html>\n<head>\n<title>random.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"img/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>libcs106</code> library, Academic Year 2025-26\n</div></td>\n</tr></table>\n<hr>\n<h1 class=header><code>random.h</code></h1>\nThis file exports functions for generating pseudorandom numbers.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Functions</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:randomBool\">randomBool()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> or <code>false</code> with 50% probability.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:randomChance\">randomChance(<var>p</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns <code>true</code> with the probability indicated by <code>p</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:randomColor\">randomColor()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a random RGB color as an integer such as <code>0xff00ff</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:randomColorString\">randomColorString()</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a random RGB color as a string such as <code>\"#ff00ff\"</code>.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:randomElement\">randomElement(<var>grid</var>)</a>&nbsp;<br>\n\t<a href=\"#Function:randomElement\">randomElement(<var>list</var>)</a>&nbsp;<br>\n\t<a href=\"#Function:randomElement\">randomElement(<var>set</var>)</a>&nbsp;\n\t<a href=\"#Function:randomElement\">randomElement(<var>v</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a randomly chosen element from the given collection.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:randomInteger\">randomInteger(<var>low</var>,&nbsp;<var>high</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a random integer in the range <code>low</code> to <code>high</code>, inclusive.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:randomKey\">randomKey(<var>map</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a randomly chosen key from the given map.</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:randomReal\">randomReal(<var>low</var>,&nbsp;<var>high</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Returns a random real number in the half-open interval [<code>low</code>&nbsp;..&nbsp;<code>high</code>).</td></tr>\n<tr><td class=indexKey><nobr><a href=\"#Function:setRandomSeed\">setRandomSeed(<var>seed</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Sets the internal random number seed to the specified value.</td></tr>\n</table>\n\n<h2>Function detail</h2>\n<hr>\n\n<a name=\"Function:randomBool\"></a>\n<pre class=detailCode>\nbool randomBool();\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> or <code>false</code> with 50% probability each.\nThis is equivalent to calling <code>randomChance(0.5)</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (randomBool()) ...\n</pre>\n<hr>\n\n<a name=\"Function:randomChance\"></a>\n<pre class=detailCode>\nbool randomChance(double p);\n</pre>\n<div class=detailHTML>\nReturns <code>true</code> with the probability indicated by <code>p</code>.\nThe argument <code>p</code> must be a floating-point number between\n0 (never) and 1 (always).  For example, calling\n<code>randomChance(.30)</code> returns <code>true</code> 30 percent\nof the time.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (randomChance(p)) ...\n</pre>\n<hr>\n\n<a name=\"Function:randomColor\"></a>\n<pre class=detailCode>\nint randomColor();\n</pre>\n<div class=detailHTML>\nReturns a random RGB color as an integer such as <code>0xff00ff</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint color = randomColor();\n</pre>\n\n<hr>\n<a name=\"Function:randomColorString\"></a>\n<pre class=detailCode>\nstring randomColorString();\n</pre>\n<div class=detailHTML>\nReturns a random RGB color as a string such as <code>\"#ff00ff\"</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring color = randomColorString();\n</pre>\n\n<hr>\n\n<a name=\"Function:randomElement\"></a>\n<pre class=detailCode>\ntemplate &lt;typename T&gt;\nconst T&amp; randomElement(const Grid&lt;T&gt;&amp; grid)\n\ntemplate &lt;typename T&gt;\nconst T&amp; randomElement(const HashSet&lt;T&gt;&amp; set)\n\ntemplate &lt;typename T&gt;\nconst T&amp; randomElement(const LinkedList&lt;T&gt;&amp; list)\n\ntemplate &lt;typename T&gt;\nconst T&amp; randomElement(const Set&lt;T&gt;&amp; set)\n\ntemplate &lt;typename T&gt;\nconst T&amp; randomElement(const SparseGrid&lt;T&gt;&amp; grid)\n\ntemplate &lt;typename T&gt;\nconst T&amp; randomElement(const Vector&lt;T&gt;&amp; v)\n</pre>\n<div class=detailHTML>\nReturns a randomly chosen element of the given collection.\nThrows an error if the collection is empty.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nelement = randomElement(v);\n</pre>\n\n<hr>\n\n<a name=\"Function:randomInteger\"></a>\n<pre class=detailCode>\nint randomInteger(int low, int high);\n</pre>\n<div class=detailHTML>\nReturns a random integer in the range <code>low</code> to\n<code>high</code>, inclusive.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint n = randomInteger(low, high);\n</pre>\n<hr>\n\n<a name=\"Function:randomKey\"></a>\n<pre class=detailCode>\ntemplate &lt;typename K, typename V&gt;\nK randomKey(const HashMap&lt;K, V&gt;&amp; map)\n\ntemplate &lt;typename K, typename V&gt;\nK randomKey(const Map&lt;K, V&gt;&amp; map)\n</pre>\n<div class=detailHTML>\nReturns a randomly chosen key of the given map.\nThrows an error if the map is empty.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nkey = randomKey(map);\n</pre>\n\n<hr>\n\n<a name=\"Function:randomReal\"></a>\n<pre class=detailCode>\ndouble randomReal(double low, double high);\n</pre>\n<div class=detailHTML>\nReturns a random real number in the half-open interval\n[<code>low</code>&nbsp;..&nbsp;<code>high</code>).  A half-open\ninterval includes the first endpoint but not the second, which\nmeans that the result is always greater than or equal to\n<code>low</code> but strictly less than <code>high</code>.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble d = randomReal(low, high);\n</pre>\n<hr>\n\n<a name=\"Function:setRandomSeed\"></a>\n<pre class=detailCode>\nvoid setRandomSeed(int seed);\n</pre>\n<div class=detailHTML>\nSets the internal random number seed to the specified value.  You\ncan use this function to set a specific starting point for the\npseudorandom sequence or to ensure that program behavior is\nrepeatable during the debugging phase.\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nsetRandomSeed(seed);\n</pre>\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Docs/simpio.html",
    "content": "<html>\n<head>\n<title>simpio.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"img/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>libcs106</code> library, Academic Year 2025-26\n</div></td>\n</tr></table>\n\n<hr>\n<h1 class=header><code>simpio.h</code></h1>\nThis file exports a set of functions that simplify input/output\noperations in C++ and provide some error-checking on user input.\n<table class=index width=100%>\n<tr><td class=indexHead colspan=2>Functions</td>\n</tr>\n<tr>\n    <td class=indexKey><nobr><a href=\"#Function:getInteger\">getInteger(<var>prompt</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Reads a complete line from user input and scans it as an integer.</td>\n</tr>\n<tr>\n    <td class=indexKey><nobr><a href=\"#Function:getLine\">getLine(<var>prompt</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Reads a line of text from user input and returns that line as a string.</td>\n</tr>\n<tr>\n    <td class=indexKey><nobr><a href=\"#Function:getReal\">getReal(<var>prompt</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Reads a complete line from user input and scans it as a floating-point number.</td>\n</tr>\n<tr>\n    <td class=indexKey><nobr><a href=\"#Function:getYesOrNo\">getYesOrNo(<var>prompt</var>)</a>&nbsp;</nobr></td><td class=indexSynopsis width=100%>Reads a complete line from user input and treats it as a yes-or-no answer to a question, returning a boolean value of <code>true</code> for yes and <code>false</code> for no.</td>\n</tr>\n<tr>\n    <td class=\"indexKey\"><nobr><a href=\"#Function:promptUserForFilename\">promptUserForFilename(<var>prompt</var>)</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Prompts user to enter the name of a file and returns it.</td>\n</tr>\n\n</table>\n<h2>Function detail</h2>\n\n<hr>\n<a name=\"Function:getInteger\"></a>\n<pre class=detailCode>\nint getInteger(string prompt = \"\", string reprompt = \"\");\n</pre>\n<div class=detailHTML>\nReads a complete line from user input and scans it as an\ninteger. If supplied, the optional\n<code>prompt</code> string is printed before reading the value.\n\n<p>If the scan succeeds, the integer value is returned. If\nthe argument is not a legal integer or if extraneous characters\n(other than whitespace) appear in the string, the user is given\na chance to reenter the value. The optional <code>reprompt</code> message is\ndisplayed before asking the user to reenter an illegal value.\nIf no reprompt argument is given, the message defaults to \"Illegal integer format. Try again.\".\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nint age = getInteger(\"Please enter your age:\");\n</pre>\n\n<hr>\n<a name=\"Function:getReal\"></a>\n<pre class=detailCode>\ndouble getReal(string prompt = \"\", string reprompt = \"\");\n</pre>\n<div class=detailHTML>\nReads a complete line from user input and scans it as a\nfloating-point number. If supplied, the\noptional <code>prompt</code> string is printed before reading the value.\n\n<p>If the scan succeeds, the floating-point\nvalue is returned.  If the input is not a legal number or if\nextraneous characters (other than whitespace) appear in the string,\nthe user is given a chance to reenter the value. The optional <code>reprompt</code> message is\ndisplayed before asking the user to reenter an illegal value.\nIf no reprompt argument is given, the message defaults to \"Illegal numeric format. Try again.\".\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\ndouble price = getReal(\"Enter the item price:\");\n</pre>\n\n<hr>\n<a name=\"Function:getLine\"></a>\n<pre class=detailCode>\nstring getLine(string prompt = \"\");\n</pre>\n<div class=detailHTML>\nReads a line of text from user input and returns that line\nas a string.  The newline character that terminates the input is\nnot stored as part of the return value.  If the user only enters\na newline, the return value is the empty string. If supplied, the optional\n<code>prompt</code> string is printed before reading the value.\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nstring line = getLine(\"What is your name?\");\n</pre>\n\n<hr>\n<a name=\"Function:getYesOrNo\"></a>\n<pre class=detailCode>\nbool getYesOrNo(string prompt = \"\", string reprompt = \"\");\n</pre>\n<div class=detailHTML>\nReads a complete line from user input and treats it as a yes-or-no answer to a question.  Returns <code>true</code> if the line typed begins with a 'y' or 'Y', and returns <code>false</code> if it begins with a 'n' or 'N'.  If supplied, the optional <code>prompt</code> string is printed before reading the value.\n\n<p>If the user's input is not a valid Y or N response, they are asked to reenter.\nThe optional <code>reprompt</code> message is\ndisplayed before asking the user to reenter an illegal value.\nIf no reprompt argument is given, the message defaults to \"Please type a word that starts with 'Y' or 'N'.\".\n\n<p>Usage:<br>\n</div>\n<pre class=usageCode>\nif (getYesOrNo(\"Do you want to play another round?\")) { ...\n</pre>\n\n<hr>\n<a name=\"Function:promptUserForFilename\"></a>\n<pre class=\"detailCode\">string promptUserForFilename(string prompt = \"\", string reprompt = \"\");\n</pre>\n<div class=\"detailHTML\">\nPrompts the user to enter the name of a file, reads a complete line from user input and treats it as filename.\n If the named file does not exist, the user is given additional chances to enter a valid file name.\n\n<p>The optional <code>prompt</code> argument provides an input prompt\nfor the user.\n\n</p><p>The also optional <code>reprompt</code> argument provides an output message displayed each time if the user types a file that is not found.\nIf no value is passed it defaults to, \"Unable to open that file.  Try again.\".\n\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">string filename = promptUserForFilename(\"Enter a filename: \");\n</pre>\n\n<hr>\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "Docs/strlib.html",
    "content": "<html>\n<head>\n<title>strlib.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"img/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>libcs106</code> library, Academic Year 2025-26\n</div></td>\n</tr></table>\n<hr>\n<h1 class=\"header\"><code>strlib.h</code></h1>\nThis file exports several useful string functions that are not\nincluded in the C++ string library. It also includes some functions that\neffectively re-write standard C++ string functions, in order to provide that\nsame funtionality in a simpler or safer formulation.\n<table class=\"index\" width=\"100%\">\n<tbody><tr><td class=\"indexHead\" colspan=\"2\">Functions</td></tr>\n\n<tr><td class=\"indexKey\"><nobr><a href=\"#Function:boolToString\">boolToString(<var>b</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Converts a boolean value into the corresponding string form.</td>\n</tr>\n<tr>\n\t<td class=\"indexKey\"><nobr><a href=\"#Function:charToInteger\">charToInteger(<var>c</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Converts a digit character into the corresponding integer.</td>\n</tr>\n<tr>\n\t<td class=\"indexKey\"><nobr><a href=\"#Function:charToString\">charToString(<var>c</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Converts a character value into the corresponding string form.</td>\n</tr>\n<tr>\n\t<td class=\"indexKey\"><nobr><a href=\"#Function:endsWith\">endsWith(<var>str</var>,&nbsp;<var>suffix</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns <code>true</code> if the string <code>str</code> ends with the specified suffix, which may be either a string or a character.</td>\n</tr>\n<tr>\n\t<td class=\"indexKey\"><nobr><a href=\"#Function:equalsIgnoreCase\">equalsIgnoreCase(<var>s1</var>,&nbsp;<var>s2</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns <code>true</code> if <code>s1</code> and <code>s2</code> are equal discounting differences in case.</td>\n</tr>\n<tr>\n\t<td class=\"indexKey\"><nobr><a href=\"#Function:integerToString\">integerToString(<var>n</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Converts an integer into the corresponding string of digits.</td>\n</tr>\n<tr>\n\t<td class=\"indexKey\"><nobr><a href=\"#Function:realToString\">realToString(<var>d</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Converts a floating-point number into the corresponding string form.</td>\n</tr>\n<tr>\n\t<td class=\"indexKey\"><nobr><a href=\"#Function:startsWith\">startsWith(<var>str</var>,&nbsp;<var>prefix</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns <code>true</code> if the string <code>str</code> starts with the specified prefix, which may be either a string or a character.</td>\n</tr>\n<tr>\n\t<td class=\"indexKey\"><nobr><a href=\"#Function:stringContains\">stringContains(<var>str</var>,&nbsp;<var>substr</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns whether the given substring can be found in the given string.</td>\n</tr>\n<tr>\n\t<td class=\"indexKey\"><nobr><a href=\"#Function:stringIndexOf\">stringIndexOf(<var>str</var>,&nbsp;<var>substr</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns the index of the start of the first occurrence of the given substring in the given string.</td>\n</tr>\n<tr>\n\t<td class=\"indexKey\"><nobr><a href=\"#Function:stringIsInteger\">stringIsInteger(<var>str</var>)</a>&nbsp;<br>\n<a href=\"#Function:stringIsInteger\">stringIsInteger(<var>str</var>, <var>radix</var>)</a></nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns whether the given string can be successfully converted into an integer.</td>\n</tr>\n<tr>\n\t<td class=\"indexKey\"><nobr><a href=\"#Function:stringIsReal\">stringIsReal(<var>str</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns whether the given string can be successfully converted into a real number.</td>\n</tr>\n<tr>\n\t<td class=\"indexKey\"><nobr><a href=\"#Function:stringJoin\">stringJoin(<var>v</var>,&nbsp;<var>delimiter</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Concatenates the given vector of strings into a single string using the given separator.</td>\n</tr>\n<tr>\n\t<td class=\"indexKey\"><nobr><a href=\"#Function:stringLastIndexOf\">stringLastIndexOf(<var>str</var>,&nbsp;<var>substr</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns the index of the start of the last occurrence of the given substring in the given string.</td>\n</tr>\n<tr>\n\t<td class=\"indexKey\"><nobr><a href=\"#Function:stringReplace\">stringReplace(<var>str</var>,&nbsp;<var>old</var>,&nbsp;<var>new</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns a new string with all occurrences of <var>old</var> changed into <var>new</var>.</td>\n</tr>\n<tr>\n\t<td class=\"indexKey\"><nobr><a href=\"#Function:stringSplit\">stringSplit(<var>str</var>,&nbsp;<var>delimiter</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Breaks apart the given string using the given separator.</td>\n</tr>\n<tr>\n\t<td class=\"indexKey\"><nobr><a href=\"#Function:stringToBool\">stringToBool(<var>str</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Converts a string representing a boolean value into its corresponding value.</td>\n</tr>\n<tr>\n\t<td class=\"indexKey\"><nobr><a href=\"#Function:stringToChar\">stringToChar(<var>str</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Converts a single-character string into its corresponding char value.</td>\n</tr>\n<tr>\n\t<td class=\"indexKey\"><nobr><a href=\"#Function:stringToInteger\">stringToInteger(<var>str</var>)</a><br>\n<a href=\"#Function:stringToInteger\">stringToInteger(<var>str</var>, <var>radix</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Converts a string of digits into an integer.</td>\n</tr>\n<tr>\n\t<td class=\"indexKey\"><nobr><a href=\"#Function:stringToReal\">stringToReal(<var>str</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Converts a string representing a real number into its corresponding value.</td>\n</tr>\n<tr>\n\t<td class=\"indexKey\"><nobr><a href=\"#Function:toLowerCase\">toLowerCase(<var>str</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns a new string in which all uppercase characters have been converted into their lowercase equivalents.</td>\n</tr>\n<tr>\n\t<td class=\"indexKey\"><nobr><a href=\"#Function:toUpperCase\">toUpperCase(<var>str</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns a new string in which all lowercase characters have been converted into their uppercase equivalents.</td>\n</tr>\n<tr>\n\t<td class=\"indexKey\"><nobr><a href=\"#Function:trim\">trim(<var>str</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns a new string after removing any whitespace characters from the beginning and end of the argument.</td>\n</tr>\n<tr>\n\t<td class=\"indexKey\"><nobr><a href=\"#Function:trimEnd\">trimEnd(<var>str</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns a new string after removing any whitespace characters from the end of the argument.</td>\n</tr>\n<tr>\n\t<td class=\"indexKey\"><nobr><a href=\"#Function:trimStart\">trimStart(<var>str</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns a new string after removing any whitespace characters from the beginning of the argument.</td>\n</tr>\n<tr>\n\t<td class=\"indexKey\"><nobr><a href=\"#Function:urlDecode\">urlDecode(<var>str</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns a URL-decoded version of the given string.</td>\n</tr>\n<tr>\n\t<td class=\"indexKey\"><nobr><a href=\"#Function:urlEncode\">urlEncode(<var>str</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns a URL-encoded version of the given string.</td></tr>\n</tbody></table>\n\n<h2>Function detail</h2>\n\n<hr>\n<a name=\"Function:integerToString\"></a>\n<pre class=\"detailCode\">string integerToString(int n);\n</pre>\n<div class=\"detailHTML\">\nConverts an integer into the corresponding string of digits.\nFor example, calling <code>integerToString(123)</code> returns\nthe string <code>\"123\"</code>.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">string s = integerToString(n);\n</pre>\n\n<hr>\n<a name=\"Function:stringToInteger\"></a>\n<pre class=\"detailCode\">int stringToInteger(string str);\nint stringToInteger(string str, int radix);\n</pre>\n<div class=\"detailHTML\">\nConverts a string of digits into an integer.  If the string is not a\nlegal integer or contains extraneous characters other than whitespace,\n<code>stringToInteger</code> calls <code>error</code> with an\nappropriate message.\nThe function accepts an optional radix (base); for example,\n<code>stringToInteger(\"234\", 16)</code> assumes that the string is in base-16 and\nreturns 2*16*16 + 3*16 + 4 = 564.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">int n = stringToInteger(str);\nint n2 = stringToInteger(str, radix);\n</pre>\n\n\n<hr>\n<a name=\"Function:stringIsInteger\"></a>\n<pre class=\"detailCode\">bool stringIsInteger(string str);\nbool stringIsInteger(string str, int radix);\n</pre>\n<div class=\"detailHTML\">\nReturns <code>true</code> if the given string can be successfully converted into an integer; that is, if it consists of digits and an optional +/- sign at the front.\nIt can be useful to call this function before calling <code>stringToInteger</code> to make sure that the conversion will not fail.\nOptionally accepts a radix (base) parameter if base-10 is not desired.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">if (stringIsInteger(str)) { ...\n</pre>\n\n\n<hr>\n<a name=\"Function:stringIsReal\"></a>\n<pre class=\"detailCode\">bool stringIsReal(string str);\n</pre>\n<div class=\"detailHTML\">\nReturns <code>true</code> if the given string can be successfully converted into a real number; that is, if it consists of digits, an optional decimal point, an optional +/- sign at the front, and so on.\nIt can be useful to call this function before calling <code>stringToReal</code> to make sure that the conversion will not fail.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">if (stringIsReal(str)) { ...\n</pre>\n\n\n<hr>\n<a name=\"Function:realToString\"></a>\n<pre class=\"detailCode\">string realToString(double d);\n</pre>\n<div class=\"detailHTML\">\nConverts a floating-point number into the corresponding string form.\nFor example, calling <code>realToString(23.45)</code> returns\nthe string <code>\"23.45\"</code>.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">string s = realToString(d);\n</pre>\n<hr>\n<a name=\"Function:stringToReal\"></a>\n<pre class=\"detailCode\">double stringToReal(string str);\n</pre>\n<div class=\"detailHTML\">\nConverts a string representing a real number into its corresponding\nvalue.  If the string is not a legal floating-point number or contains\nextraneous characters other than whitespace, <code>stringToReal</code>\ncalls <code>error</code> with an appropriate message.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">double d = stringToReal(str);\n</pre>\n<hr>\n<a name=\"Function:boolToString\"></a>\n<pre class=\"detailCode\">string boolToString(bool b);\n</pre>\n<div class=\"detailHTML\">\nConverts a boolean value into the corresponding string form.\nFor example, calling <code>boolToString(true)</code> returns\nthe string <code>\"true\"</code>.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">string s = boolToString(b);\n</pre>\n\n\n<hr>\n<a name=\"Function:stringToBool\"></a>\n<pre class=\"detailCode\">bool stringToBool(string str);\n</pre>\n<div class=\"detailHTML\">\nConverts a string representing a boolean value into its corresponding\nvalue.  The only values recognized are the string literals <code>\"true\"</code> or <code>\"false\"</code>.\nIf the string is not <code>\"true\"</code> or <code>\"false\"</code> or contains\nextraneous characters other than whitespace, <code>stringToBool</code>\ncalls <code>error</code> with an appropriate message.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">bool b = stringToBool(str);\n</pre>\n\n<hr>\n<a name=\"Function:charToInteger\"></a>\n<pre class=\"detailCode\">int charToInteger(char c);\n</pre>\n<div class=\"detailHTML\">\nConverts a digit character into the corresponding integer.\nFor example, <code>charToInteger('3')</code> returns the int 3.\n If the character is not a valid digit character '0' through '9', <code>charToInteger</code> calls <code>error</code>.\n\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">int n = charToInteger(c);\n</pre>\n\n<hr>\n<a name=\"Function:charToString\"></a>\n<pre class=\"detailCode\">string charToString(char c);\n</pre>\n<div class=\"detailHTML\">\nConverts a character into the corresponding string form.\nFor example, calling <code>charToString('Q')</code> returns\nthe string <code>\"Q\"</code>.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">string s = charToString(c);\n</pre>\n\n\n<hr>\n<a name=\"Function:stringTochar\"></a>\n<pre class=\"detailCode\">char stringToChar(string str);\n</pre>\n<div class=\"detailHTML\">\nConverts a single-character string into its corresponding <code>char</code>\nvalue.  Typically you can just write <code>str[0]</code> to access the\nfirst character of a string; this function is merely provided for consistency\nwith the other type-conversion functions.\n\nIf the string is not exactly 1 character in length or contains\nextraneous characters other than whitespace, <code>stringTochar</code>\ncalls <code>error</code> with an appropriate message.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">char c = stringToChar(str);\n</pre>\n\n\n<hr>\n<a name=\"Function:stringContains\"></a>\n<pre class=\"detailCode\">bool stringContains(string str, string substr);\n</pre>\n<div class=\"detailHTML\">\nReturns <code>true</code> if the given substring can be found within the given string.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">if (stringContains(str, substr)) { ...\n</pre>\n\n\n<hr>\n<a name=\"Function:stringReplace\"></a>\n<pre class=\"detailCode\">string stringReplace(string str, string old, string replacement);\n</pre>\n<div class=\"detailHTML\">\nReturns a new string that is the same as <code>str</code> but with all occurrences of <code>old</code> changed into <code>replacement</code>.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">string s = stringReplace(s, \"foo\", \"bar\");\n</pre>\n\n\n<hr>\n<a name=\"Function:toUpperCase\"></a>\n<pre class=\"detailCode\">string toUpperCase(string str);\n</pre>\n<div class=\"detailHTML\">\nReturns a new string in which all lowercase characters have been converted\ninto their uppercase equivalents.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">string s = toUpperCase(str);\n</pre>\n<hr>\n<a name=\"Function:toLowerCase\"></a>\n<pre class=\"detailCode\">string toLowerCase(string str);\n</pre>\n<div class=\"detailHTML\">\nReturns a new string in which all uppercase characters have been converted\ninto their lowercase equivalents.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">string s = toLowerCase(str);\n</pre>\n<hr>\n<a name=\"Function:equalsIgnoreCase\"></a>\n<pre class=\"detailCode\">bool equalsIgnoreCase(string s1, string s2);\n</pre>\n<div class=\"detailHTML\">\nReturns <code>true</code> if <code>s1</code> and <code>s2</code> are\nequal discounting differences in case.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">if (equalsIgnoreCase(s1, s2)) ...\n</pre>\n<hr>\n<a name=\"Function:startsWith\"></a>\n<pre class=\"detailCode\">bool startsWith(string str, string prefix);\nbool startsWith(string str, char prefix);\n</pre>\n<div class=\"detailHTML\">\nReturns <code>true</code> if the string <code>str</code> starts with\nthe specified prefix, which may be either a string or a character.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">if (startsWith(str, prefix)) ...\n</pre>\n<hr>\n<a name=\"Function:endsWith\"></a>\n<pre class=\"detailCode\">bool endsWith(string str, string suffix);\nbool endsWith(string str, char suffix);\n</pre>\n<div class=\"detailHTML\">\nReturns <code>true</code> if the string <code>str</code> ends with\nthe specified suffix, which may be either a string or a character.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">if (endsWith(str, suffix)) ...\n</pre>\n<hr>\n<a name=\"Function:trim\"></a>\n<pre class=\"detailCode\">string trim(string str);\n</pre>\n<div class=\"detailHTML\">\nReturns a new string after removing any whitespace characters\nfrom the beginning and end of the argument.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">string trimmed = trim(str);\n</pre>\n<hr>\n<a name=\"Function:trimEnd\"></a>\n<pre class=\"detailCode\">string trimEnd(string str);\n</pre>\n<div class=\"detailHTML\">\nReturns a new string after removing any whitespace characters\nfrom the end of the argument.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">string trimmed = trimEnd(str);\n</pre>\n<hr>\n<a name=\"Function:trimStart\"></a>\n<pre class=\"detailCode\">string trimStart(string str);\n</pre>\n<div class=\"detailHTML\">\nReturns a new string after removing any whitespace characters\nfrom the beginning of the argument.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">string trimmed = trimStart(str);\n</pre>\n\n<hr>\n\n<a name=\"Function:stringIndexOf\"></a>\n<pre class=\"detailCode\">int stringIndexOf(string s, string substring);\n</pre>\n<div class=\"detailHTML\">\nReturns the index of the start of the first occurrence of the given substring in <code>s</code>, if it occurs in <code>s</code>.\nIf it does not occur, returns <code>-1</code>.\nThis function is very similar to <code>string.find</code>, but <code>find</code> returns <code>string::npos</code> when the string is not found.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">int index = stringIndexOf(s, sub);\n</pre>\n\n<hr>\n<a name=\"Function:stringLastIndexOf\"></a>\n<pre class=\"detailCode\">int stringLastIndexOf(string s, string substring);\n</pre>\n<div class=\"detailHTML\">\nReturns the index of the start of the last occurrence of the given substring in <code>s</code>, if it occurs in <code>s</code>.\nIf it does not occur, returns <code>-1</code>.\nThis function is very similar to <code>string.rfind</code>, but <code>find</code> returns <code>string::npos</code> when the string is not found.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">int index = stringLastIndexOf(s, sub);\n</pre>\n\n\n<hr>\n<a name=\"Function:stringSplit\"></a>\n<pre class=\"detailCode\">Vector&lt;string&gt; stringSplit(string str, string delimiter);\n</pre>\n<div class=\"detailHTML\">\nReturns a Vector whose elements are strings formed by splitting the given string by the given delimiter.\nAny adjacent delimiters are coalesced. For example, splitting <code>\"Hi&nbsp;there&nbsp;&nbsp;&nbsp;Jim!\"</code> on delimter <code>\"&nbsp;\"</code> returns <code>{\"Hi\", \"there\", \"Jim!\"}</code>.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">Vector&lt;string&gt; v = stringSplit(str, delimiter);\n</pre>\n\n\n<hr>\n<a name=\"Function:stringJoin\"></a>\n<pre class=\"detailCode\">string stringJoin(const Vector&lt;string&gt;&amp; v, string delimiter = \"\\n\");\n</pre>\n<div class=\"detailHTML\">\nCombines the elements of the given Vector into a single string, with the given delimiter separating neighboring elements, and returns it.\nFor example, joining the elements of the vector <code>{\"Hi\", \"there\", \"\", \"Jim\"}</code> with the delimiter <code>\"-\"</code> returns <code>\"Hi-there--Jim\"</code>.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">string s = stringJoin(v, delimiter);\n</pre>\n\n<hr>\n<a name=\"Function:urlDecode\"></a>\n<pre class=\"detailCode\">string urlDecode(string value);\n</pre>\n<div class=\"detailHTML\">\nReturns a URL-decoded version of the given string, where any %xx character codes are converted back to the equivalent characters.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">string s = urlDecode(value);\n</pre>\n\n<hr>\n<a name=\"Function:urlEncode\"></a>\n<pre class=\"detailCode\">string urlEncode(string value);\n</pre>\n<div class=\"detailHTML\">\nReturns a URL-encoded version of the given string, where most non- alphabetic characters are replaced by %xx character codes.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">string s = urlEncode(value);\n</pre>\n\n\n<hr>\n\n\n\n\n</body></html>"
  },
  {
    "path": "Docs/timer.html",
    "content": "<html>\n<head>\n<title>time.h</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"cppdoc.css\" />\n</head>\n<body>\n<table class=banner>\n<tr>\n<td valign=middle><image src=\"img/StanfordTreeLogo.png\" height=32></td>\n<td valign=middle><div class=bannerText>\nThe Stanford <code>libcs106</code> library, Academic Year 2025-26\n</div></td>\n</tr></table>\n\n<hr>\n<div class=\"include\">#include \"timer.h\"</div>\n<h1 class=\"header\"><code>class Timer</code></h1>\nThis class implements a simple start/stop timer that can tell you how much time has elapsed since it was started.\nTypical usage of this class looks like this:\n\n<pre>   Timer tim;\n   tim.start();\n   ... run some code that takes a while ...\n   tim.stop();\n   cout &lt;&lt; \"The code took \" &lt;&lt; tim.elapsed() &lt;&lt; \"ms to finish.\" &lt;&lt; endl;\n</pre>\n\n<table class=\"index\" width=\"100%\">\n<tbody><tr><td class=\"indexHead\" colspan=\"2\">Constructor</td>\n</tr>\n<tr>\n   <td class=\"indexKey\"><nobr><a href=\"#Constructor:Timer\">Timer()</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Creates a timer object that has not yet been started.</td>\n</tr>\n<tr>\n   <td class=\"indexKey\"><nobr><a href=\"#Constructor:Timer2\">Timer(<var>autostart</var>)</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Creates a timer object and optionally starts it.</td>\n</tr>\n<tr>\n   <td class=\"indexHead\" colspan=\"2\">Methods</td>\n</tr>\n<tr>\n   <td class=\"indexKey\"><nobr><a href=\"#Method:elapsed\">elapsed()</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns the number of milliseconds since the timer was started.</td>\n</tr>\n<tr>\n   <td class=\"indexKey\"><nobr><a href=\"#Method:isStarted\">isStarted()</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Returns whether the timer has been started.</td>\n</tr>\n<tr>\n   <td class=\"indexKey\"><nobr><a href=\"#Method:start\">start()</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Starts the timer.</td>\n</tr>\n<tr>\n   <td class=\"indexKey\"><nobr><a href=\"#Method:stop\">stop()</a>&nbsp;</nobr></td><td class=\"indexSynopsis\" width=\"100%\">Stops the timer.</td></tr>\n</tbody></table>\n\n<h2>Constructor detail</h2>\n\n<hr>\n<a name=\"Constructor:Timer\"></a>\n<pre class=\"detailCode\">Timer();\n</pre>\n<div class=\"detailHTML\">\nCreates a timer object that has not yet been started.\nYou can start it afterward by calling its <code>start</code> function.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">Timer timer();\n</pre>\n\n<hr>\n<a name=\"Constructor:Timer2\"></a>\n<pre class=\"detailCode\">Timer(bool autostart);\n</pre>\n<div class=\"detailHTML\">\nCreates a timer object and optionally starts it, if <code>true</code> is passed.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">Timer timer(true);   // timer will start immediately\n</pre>\n\n<hr>\n\n\n<h2>Method detail</h2>\n\n<hr>\n<a name=\"Method:elapsed\"></a>\n<pre class=\"detailCode\">long elapsed();\n</pre>\n<div class=\"detailHTML\">\nReturns the number of milliseconds since the last time <code>start</code> was called.\nIf the timer is still active (if <code>stop</code> has not been called), this number will be continually growing as time passes.\nIf <code>stop</code> has already been called, this function will return the number of milliseconds between when <code>start</code> was called and when <code>stop</code> was called.\nReturns 0 if the timer was never started.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">long elapsedMS = timer.elapsed();\n</pre>\n\n<hr>\n<a name=\"Method:isStarted\"></a>\n<pre class=\"detailCode\">bool isStarted();\n</pre>\n<div class=\"detailHTML\">\nReturns <code>true</code> if this timer has been started and has not yet been stopped.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">if (timer.isStarted()) { ...\n</pre>\n\n<hr>\n<a name=\"Method:start\"></a>\n<pre class=\"detailCode\">void start();\n</pre>\n<div class=\"detailHTML\">\nStarts the timer.  The timer will capture the current time and remember it so that when you later call <code>stop</code> or <code>elapsed</code>, the amount of time will be relative to this start time.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">timer.start();\n</pre>\n\n<hr>\n<a name=\"Method:stop\"></a>\n<pre class=\"detailCode\">void stop();\n</pre>\n<div class=\"detailHTML\">\nStops the timer.  After stopping the timer, future calls to <code>elapsed</code> will return the number of milliseconds between when <code>start</code> was called and when <code>stop</code> was called.\n<p>Usage:<br>\n</p></div>\n<pre class=\"usageCode\">timer.stop();\n</pre>\n\n<hr>\n\n\n\n</body></html>"
  },
  {
    "path": "Library/Library.pro",
    "content": "###############################################################################\n# Project file for CS106B/X Library\n#\n# @author Julie Zelenski\n# @version Winter Quarter 2025.2 for Qt 6\n#    build static lib and install into user data\n###############################################################################\n\nTEMPLATE    =   lib\nTARGET      =   cs106\nCONFIG      +=  staticlib nostrip\n\nSPL_VERSION         =   2025.2\nREQUIRES_QT_VERSION =   6.9\n\n###############################################################################\n#       Gather files                                                          #\n###############################################################################\n\nLIB_SUBDIRS         =   collections console graphics io system util testing\n\nfor(dir, LIB_SUBDIRS) {\n    PUBLIC_HEADERS  +=  $$files($${dir}/*.h)\n    SOURCES         +=  $$files($${dir}/*.cpp)\n}\n\nPRIVATE_HEADERS     +=  $$files(private/*.h)\nSOURCES             +=  $$files(private/*.cpp)\nHEADERS             +=  $$PUBLIC_HEADERS $$PRIVATE_HEADERS\n\nRESOURCES           =   images.qrc\nOTHER_FILES         =   stanfordtypes.py\nRESOURCE_FILES      =   $$files(resources/*)\nQMAKE_SUBSTITUTES   =   private/build.h.in\n\nINCLUDEPATH         +=  $$LIB_SUBDIRS\nQT                  +=  core gui widgets network multimedia\n\n###############################################################################\n#       Build settings                                                        #\n###############################################################################\n\n# MinGW compiler lags, be conservative and use C++11 on all platforms\n# rather than special case\nCONFIG              +=  c++11\n\n# Set develop_mode to enable warnings, deprecated, nit-picks, all of it.\n# Pay attention and fix! Library should compile cleanly.\n# Disable mode when publish to quiet build for student.\n\ndevelop_mode {\n    CONFIG          +=  debug\n    CONFIG          -=  silent\n    CONFIG          +=  warn_on\n    QMAKE_CXXFLAGS  +=  -Wall -Wextra\n    QMAKE_CXXFLAGS  +=  -Wno-inconsistent-missing-override\n    DEFINES         +=  QT_DEPRECATED_WARNINGS\n} else {\n    CONFIG          +=  warn_off\n    CONFIG          +=  sdk_no_version_check\n    CONFIG          +=  silent\n    CONFIG          +=  release\n}\n\nwin32|win64 {\n        # disable g++ interprocedural ra shenanigans (root cause of Lexicon crash 2025/04)\n    QMAKE_CXXFLAGS  += -fno-ipa-ra\n}\n\n\n###############################################################################\n#       Make install                                                          #\n###############################################################################\n\n# Use makefile include to set default goal to install target\nQMAKE_EXTRA_INCLUDES += $$relative_path($$absolute_path(assume_install.mk), $$OUT_PWD)\n\nwin32|win64 { QTP_EXE = qtpaths.exe } else { QTP_EXE = qtpaths }\nUSER_DATA_DIR = $$system($$[QT_INSTALL_BINS]/$$QTP_EXE --writable-path GenericDataLocation)\nSPL_DIR = $${USER_DATA_DIR}/cs106\n\nINSTALLS            +=  target headers resources versionfile debughelper\n\ntarget.path         =   \"$${SPL_DIR}/lib\"\nheaders.files       =   $$PUBLIC_HEADERS\nheaders.path        =   \"$${SPL_DIR}/include\"\nresources.files     =   $$RESOURCE_FILES\nresources.path      =   \"$${SPL_DIR}/resources\"\nversionfile.files   =   spl_version\nversionfile.path    =   \"$${SPL_DIR}/lib\"\nQMAKE_SUBSTITUTES   +=  spl_version.in\ndebughelper.files   =   stanfordtypes.py\nmac         { debughelper.path = \"$$(HOME)/Qt/Qt Creator.app/Contents/Resources/debugger\" }\nwin32|win64 { debughelper.path = \"C:\\Qt\\Tools\\QtCreator\\share\\qtcreator\\debugger\" }\nunix:!mac   { debughelper.path = \"$$(HOME)/Qt/Tools/QtCreator/share/qtcreator/debugger\" }\n!build_pass:!exists($$debughelper.path) {\n    warning(\"Debug helper: no such path $$debughelper.path\")\n    debughelper.path = \"$${SPL_DIR}\"\n}\n\n# Add dependency before install to remove any existing SPL_DIR\nunix {\n    rmexisting.commands = rm -rf \\\"$$SPL_DIR\\\"\n}\nwin32 {\n    rmexisting.commands = if exist \\\"$$shell_path($$SPL_DIR)\\\" rd /s /q \\\"$$shell_path($$SPL_DIR)\\\"\n}\ninstall.depends = rmexisting\nQMAKE_EXTRA_TARGETS += install rmexisting\n\n###############################################################################\n#       Requirements                                                          #\n###############################################################################\n\n!versionAtLeast(QT_VERSION, $$REQUIRES_QT_VERSION) {\n    error(The CS106 library $$SPL_VERSION requires Qt version $$REQUIRES_QT_VERSION and\\\n         your computer has older Qt version $$[QT_VERSION]. You must uninstall Qt and install version $$REQUIRES_QT_VERSION or newer.)\n}\n"
  },
  {
    "path": "Library/assume_install.mk",
    "content": "# @author Julie Zelenski\n# This sets the default goal of Makefile so that\n# make with no argument will trigger make install.\n# This is to get the staticlib + headers copied\n# to install location without requiring student to\n# select install target.\n\n.DEFAULT_GOAL = assume_install\n\nassume_install: message install\n\nmessage:\n\t@echo \"NOTE: Library project assuming install target\"\n"
  },
  {
    "path": "Library/collections/basicgraph.cpp",
    "content": "/*\n * File: basicgraph.cpp\n * --------------------\n * This file implements any non-template functionality used by\n * the BasicGraph class.\n *\n * @version 2016/12/01\n */\n\n#include \"basicgraph.h\"\n\nint hashCode(const BasicGraph& graph) {\n    int code = hashSeed();\n    for (Vertex* v : graph) {\n        code = hashMultiplier() * code + hashCode(v->name);\n    }\n    for (Edge* e : graph.getEdgeSet()) {\n        code = hashMultiplier() * code + hashCode(e->start->name);\n        code = hashMultiplier() * code + hashCode(e->finish->name);\n    }\n    return (code & hashMask());\n}\n"
  },
  {
    "path": "Library/collections/basicgraph.h",
    "content": "/*\n * File: basicgraph.h\n * ------------------\n * This file contains the declaration of some useful graph types,\n * specifically the Vertex and Edge structures used in the typical graph.\n * together in lecture.  We also declare BasicGraph, an instantiation of\n * Stanford's Graph class using Vertex and Edge as its type parameters.\n *\n * Most members are implemented in this file, since the class is a template.\n * See BasicGraph.cpp for implementation of some non-template members.\n */\n\n\n#ifndef _basicgraph_h\n#define _basicgraph_h\n\n#include <initializer_list>\n#include <sstream>\n#include <string>\n#include <utility>\n\n#include \"gmath.h\"\n#include \"graph.h\"\n#include \"grid.h\"\n#include \"hashset.h\"\n#include \"linkedlist.h\"\n#include \"observable.h\"\n#include \"set.h\"\n#include \"vector.h\"\n\n/**\n * Forward declarations of Vertex/Edge structures so that they can refer\n * to each other mutually.\n * @private\n */\ntemplate <typename V = void*, typename E = void*>\nclass EdgeGen;\n\n/**\n * Canonical Vertex (Node) structure implementation needed by Graph class template.\n * Each Vertex structure represents a single vertex in the graph.\n */\ntemplate <typename V = void*, typename E = void*>\nclass VertexGen : public Observable<int> {\npublic:\n    /**\n     * The vertex's name as a string.\n     */\n    std::string name;\n\n    /**\n     * The edges outbound from this vertex to its neighbors.\n     */\n    Set<EdgeGen<V, E>*> arcs;     // required by Stanford Graph;\n\n    /**\n     * The edges outbound from this vertex to its neighbors;\n     * an alias of the 'arcs' member.\n     */\n    Set<EdgeGen<V, E>*>& edges;\n\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    /**\n     * The cost to reach this vertex; initially 0.\n     */\n    double cost;\n\n    /**\n     * An alias for the 'cost' member.\n     */\n    double& weight;\n\n    /**\n     * Whether this vertex has been visited before; initally false.\n     */\n    bool visited;\n\n    /**\n     * The vertex that comes before this one; initially null.\n     */\n    VertexGen* previous;\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n\n    /**\n     * The following pointer can point to any extra data needed by the vertex.\n     * This field is generally not necessary and can be ignored.\n     */\n    V data;\n\n    /**\n     * @private\n     */\n    V& extraData;       // alias of data; they are the same field\n\n    /**\n     * Constructs a vertex with the given name.\n     */\n    VertexGen(const std::string& name = \"\");\n\n    /**\n     * Copy constructor.\n     */\n    VertexGen(const VertexGen& other);\n\n    /**\n     * Frees up any memory dynamically allocated by this vertex.\n     */\n    ~VertexGen();\n\n    /**\n     * Returns the color of this vertex, if any.  Initially WHITE.\n     */\n    /* Color */ int getColor() const;\n\n    /**\n     * Wipes the supplementary data of this vertex back to its initial state.\n     * Specifically, sets cost to 0, visited to false, and previous to nullptr.\n     */\n    void resetData();\n\n    /**\n     * Sets the color of this vertex to be the given color.\n     * The color must be one of WHITE, GRAY, YELLOW, or GREEN.\n     * Future calls to getColor will return the color you pass here.\n     */\n    void setColor(/* Color */ int c);\n\n    /**\n     * Returns a string representation of this vertex for debugging, such as\n     * \"Vertex{name=r13c42, cost=11, visited=true, previous=r12c41, neighbors={r12c41, r12c43}}\".\n     */\n    std::string toString() const;\n\n    /**\n     * Copy assignment operator.\n     */\n    VertexGen& operator =(const VertexGen& other);\n\n    /**\n     * Move assignment operator.\n     */\n    VertexGen& operator =(VertexGen&& other);\n\nprivate:\n    /* Color */ int _color;   // vertex's color as passed to setColor\n};\n\n/**\n * Makes a vertex printable to an output stream.\n * See toString for an example of the output format.\n * Note that printing a vertex is not the same as printing a vertex pointer.\n * If you try to print a pointer, you will just see its address in hex.\n */\ntemplate <typename V, typename E>\nstd::ostream& operator <<(std::ostream& out, const VertexGen<V, E>& v);\n\n/**\n * Canonical Edge (Arc) structure implementation needed by Graph class template.\n * Each Edge structure represents a single edge in the graph.\n */\ntemplate <typename V, typename E>\nclass EdgeGen {\npublic:\n    /**\n     * The edge's starting vertex.\n     */\n    VertexGen<V, E>* start;\n\n    /**\n     * The edge's ending vertex.\n     */\n    VertexGen<V, E>* finish;   // required by Stanford Graph;\n\n    /**\n     * An alias of finish; they are the same field.\n     */\n    VertexGen<V, E>*& end;\n\n    /**\n     * The edge's weight; default 0.\n     */\n    double cost;\n\n    /**\n     * An alias for the 'cost' member.\n     */\n    double& weight;\n\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    /**\n     * Whether this edge has been visited before; initally false.\n     */\n    bool visited;\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n\n    /**\n     * A pointer that can point to any extra data needed by the vertex.\n     * This field is generally not necessary and can be ignored.\n     */\n    void* data;\n\n    /**\n     * An alias for the 'data' member.\n     */\n    void*& extraData;\n\n    /**\n     * Constructs a new edge between the given start/end vertices with\n     * the given cost.\n     */\n    EdgeGen(VertexGen<V, E>* start = nullptr, VertexGen<V, E>* finish = nullptr, double cost = 0.0);\n\n    /**\n     * Frees up any memory dynamically allocated by this edge.\n     */\n    ~EdgeGen();\n\n    /**\n     * Wipes the supplementary data of this edge back to its initial state.\n     */\n    void resetData();\n\n    /**\n     * Returns a string representation of this edge for debugging, such as\n     * \"Arc{start=r12c42, finish=r12c41, cost=0.75}\".\n     */\n    std::string toString() const;\n\n    /**\n     * Copy assignment operator.\n     */\n    EdgeGen& operator =(const EdgeGen& other);\n\n    /**\n     * Move assignment operator.\n     */\n    EdgeGen& operator =(EdgeGen&& other);\n};\n\n/**\n * Makes an edge printable to an output stream.\n * See toString for an example of the output format.\n * Note that printing an edge is not the same as printing an edge pointer.\n * If you try to print a pointer, you will just see its address in hex.\n */\ntemplate <typename V, typename E>\nstd::ostream& operator <<(std::ostream& out, const EdgeGen<V, E>& edge);\n\n\n/**\n * BasicGraph is just basically an instantiation of Graph using Vertex and Edge\n * as its template parameters.  It also adds a few convenience functions such\n * as mirroring members like \"addArc\" with an equivalent more familiar name\n * like \"addEdge\".\n *\n * There are a few convenience functions related to neighbors, like isNeighbor.\n * BasicGraph contains a DFS implementation called isReachable, not found\n * in the normal Stanford Graph class.\n *\n * There are also a few functions added to make edges more convenient to work with:\n * getEdge(v1, v2) to get the edge between a given pair of vertices,\n * and getInverseEdge(edge) to get the edge v2 -> v1 for a given edge v1 -> v2.\n */\ntemplate <typename V = void*, typename E = void*>\nclass BasicGraphGen : public Graph<VertexGen<V, E>, EdgeGen<V, E>> {\npublic:\n    /**\n     * Constructs a new empty graph.\n     * @bigoh O(1)\n     */\n    BasicGraphGen();\n\n    /**\n     * Constructs a new graph containing the given vertexes.\n     * @bigoh O(V)\n     */\n    BasicGraphGen(std::initializer_list<std::string> vertexList);\n\n    /**\n     * Adds a directed edge to the graph from vertex v1 to vertex v2.\n     * Note that it is allowed to have multiple edges between the same pair of vertexes.\n     *\n     * Returns a pointer to the edge, though clients need not store that pointer;\n     * you can get the pointer again later by calling getEdge and passing the two vertexes.\n     *\n     * Equivalent to addNode.\n     *\n     * @return a pointer to the edge created\n     * @bigoh O(log V + log E)\n     */\n    EdgeGen<V, E>* addEdge(const std::string& v1, const std::string& v2, double cost = 0.0, bool directed = true);\n\n    /**\n     * Adds a directed edge to the graph from vertex v1 to vertex v2.\n     * If either vertex is not found in the graph, said vertex will be added to the graph.\n     * Note that it is allowed to have multiple edges between the same pair of vertexes.\n     *\n     * Returns a pointer to the edge, though clients need not store that pointer;\n     * you can get the pointer again later by calling getEdge and passing the two vertexes.\n     *\n     * Equivalent to addNode.\n     *\n     * @return a pointer to the edge created\n     * @throw ErrorException if either vertex is null\n     * @bigoh O(log V + log E)\n     */\n    EdgeGen<V, E>* addEdge(VertexGen<V, E>* v1, VertexGen<V, E>* v2, double cost = 0.0, bool directed = true);\n\n    /**\n     * Adds the given directed edge to the graph from vertex v1 to vertex v2.\n     * If either vertex is not found in the graph, said vertex will be added to the graph.\n     * Note that it is allowed to have multiple edges between the same pair of vertexes.\n     *\n     * Returns a pointer to the edge, though clients need not store that pointer;\n     * you can get the pointer again later by calling getEdge and passing the two vertexes.\n     *\n     * Equivalent to addNode.\n     *\n     * @return a pointer to the edge created\n     * @throw ErrorException if either vertex is null\n     * @bigoh O(log V + log E)\n     */\n    EdgeGen<V, E>* addEdge(EdgeGen<V, E>* e, bool directed = true);\n\n    /**\n     * Adds a vertex to the graph, if no vertex with that name already exists in the graph.\n     * This version of this method accepts a string for the vertex's name,\n     * creates a new vertex of the appropriate type and initializes its fields.\n     * Returns a pointer to the vertex, though clients need not store that pointer;\n     * you can get the pointer again later by calling getVertex and passing the same name.\n     *\n     * The vertexes in a graph must have unique names.\n     * If this graph already contains a vertex with the given name,\n     * the vertex will not be added and the graph's state will not change.\n     *\n     * Equivalent to addNode.\n     *\n     * @return a pointer to the vertex created\n     * @bigoh O(log V)\n     */\n    VertexGen<V, E>* addVertex(const std::string& name);\n\n    /**\n     * Adds a vertex to the graph, if no vertex with that name already exists in the graph.\n     * This version of this method accepts a string for the vertex's name,\n     * creates a new vertex of the appropriate type and initializes its fields.\n     * The other accepts a structure representing the vertex and its data.\n     * Returns a pointer to the vertex, though clients need not store that pointer;\n     * you can get the pointer again later by calling getVertex and passing the same name.\n     *\n     * The vertexes in a graph must have unique names.\n     * If this graph already contains a vertex with the given name,\n     * the vertex will not be added and the graph's state will not change.\n     *\n     * When calling this function, you are relinquishing ownership of the Vertex\n     * structure's lifecycle to the graph; our graph will free it when done with it.\n     *\n     * Equivalent to addNode.\n     *\n     * @return a pointer to the vertex created\n     * @throw ErrorException if vertex is null\n     * @bigoh O(log V)\n     */\n    VertexGen<V, E>* addVertex(VertexGen<V, E>* v);\n\n    /**\n     * Removes all edges from the graph.\n     * Frees any edge objects that were internally allocated as heap storage.\n     *\n     * Equivalent to clearArcs.\n     * @bigoh O(E log E)\n     */\n    void clearEdges();\n\n    /**\n     * Removes all outbound edges of the given vertex from the graph.\n     * The vertex itself is not removed.\n     * If the vertex is null or is not found in the graph, has no effect.\n     *\n     * Equivalent to clearArcs.\n     * @bigoh O(E log E)\n     * @bigoh O(log V + E)\n     */\n    void clearEdges(VertexGen<V, E>* v);\n\n    /**\n     * Removes all outbound edges of the given vertex from the graph.\n     * The vertex itself is not removed.\n     * If the vertex is not found in the graph, has no effect.\n     *\n     * Equivalent to clearArcs.\n     * @bigoh O(E log E)\n     */\n    void clearEdges(const std::string& v);\n\n    /**\n     * Returns true if the graph has an edge from v1 to v2 in the graph.\n     * If either of the vertexes supplied is null or is not found in the graph, returns false.\n     *\n     * Equivalent to containsArc.\n     * @bigoh O(log E)\n     */\n    bool containsEdge(VertexGen<V, E>* v1, VertexGen<V, E>* v2) const;\n\n    /**\n     * Returns true if the graph has an edge from v1 to v2 in the graph.\n     * If either of the vertexes supplied is not found in the graph, returns false.\n     *\n     * Equivalent to containsArc.\n     * @bigoh O(log E)\n     */\n    bool containsEdge(const std::string& v1, const std::string& v2) const;\n\n    /**\n     * Returns true if the graph contains the given edge.\n     * If the edge structure is null, returns false.\n     *\n     * Equivalent to containsArc.\n     * @bigoh O(log E)\n     */\n    bool containsEdge(EdgeGen<V, E>* edge) const;\n\n    /**\n     * Returns whether the graph contains a vertex with the given name.\n     *\n     * Equivalent to containsNode.\n     * @bigoh O(log V)\n     */\n    bool containsVertex(const std::string& name) const;\n\n    /**\n     * Returns whether the graph contains the given vertex.\n     * If a null pointer is passed, returns false.\n     *\n     * Equivalent to containsNode.\n     * @bigoh O(log V)\n     */\n    bool containsVertex(VertexGen<V, E>* v) const;\n\n    /**\n     * Returns the number of edges in the graph.\n     *\n     * Equivalent to arcCount.\n     * @bigoh O(log V)\n     */\n    int edgeCount() const;\n\n    /**\n     * Returns the structure representing the edge from v1 to v2 in the graph.\n     * If either of the vertexes supplied is null or is not found in the graph, the function will return nullptr.\n     * If there are multiple edges between the given pair of vertexes, which of the edges will be returned is unspecified.\n     *\n     * Equivalent to getArc.\n     *\n     * @param v1 start vertex\n     * @param v2 end vertex\n     * @return edge from v1 to v2, or nullptr if there is no such edge\n     * @bigoh O(log V + log E)\n     */\n    EdgeGen<V, E>* getEdge(VertexGen<V, E>* v1, VertexGen<V, E>* v2) const;\n\n    /**\n     * Returns the structure representing the edge from v1 to v2 in the graph.\n     * If either of the vertexes supplied is not found in the graph, the function will return nullptr.\n     * If there are multiple edges between the given pair of vertexes, which of the edges will be returned is unspecified.\n     *\n     * Equivalent to getArc.\n     *\n     * @param v1 start vertex\n     * @param v2 end vertex\n     * @return edge from v1 to v2, or nullptr if there is no such edge\n     * @bigoh O(log V + log E)\n     */\n    EdgeGen<V, E>* getEdge(const std::string& v1, const std::string& v2) const;\n\n    /**\n     * Returns the set of all edges in the graph.\n     *\n     * Equivalent to getArcSet.\n     * @bigoh O(1)\n     */\n    const Set<EdgeGen<V, E>*>& getEdgeSet() const;\n\n    /**\n     * Returns the set of all edges that start at the specified vertex.\n     * If the vertex supplied is null or is not found in the graph,\n     * the function will return an empty set.\n     *\n     * Equivalent to getArcSet.\n     * @bigoh O(1)\n     */\n    const Set<EdgeGen<V, E>*>& getEdgeSet(VertexGen<V, E>* v) const;\n\n    /**\n     * Returns the set of all edges that start at the specified vertex.\n     * If the vertex supplied is not found in the graph,\n     * the function will return an empty set.\n     *\n     * Equivalent to getArcSet.\n     * @bigoh O(1)\n     */\n    const Set<EdgeGen<V, E>*>& getEdgeSet(const std::string& v) const;\n\n    /**\n     * Returns the edge that is the opposite of the given edge;\n     * that is, if the specified edge e starts at v1 and ends at v2,\n     * will return the edge that starts at v2 and ends at v1,\n     * if such an edge exists in the graph.\n     *\n     * If the edge supplied is nullptr, is not found in the graph,\n     * or has no inverse, the function will return nullptr.\n     *\n     * If there are multiple edges between the given pair of vertexes,\n     * which of the edges will be returned is unspecified.\n     *\n     * Equivalent to getInverseEdge.\n     * @bigoh O(E)\n     */\n    EdgeGen<V, E>* getInverseArc(EdgeGen<V, E>* edge) const;\n\n    /**\n     * Returns the edge that is the opposite of the given edge;\n     * that is, if the specified edge e starts at v1 and ends at v2,\n     * will return the edge that starts at v2 and ends at v1,\n     * if such an edge exists in the graph.\n     *\n     * If the edge supplied is nullptr, is not found in the graph,\n     * or has no inverse, the function will return nullptr.\n     *\n     * If there are multiple edges between the given pair of vertexes,\n     * which of the edges will be returned is unspecified.\n     *\n     * Equivalent to getInverseArc.\n     * @bigoh O(E)\n     */\n    EdgeGen<V, E>* getInverseEdge(EdgeGen<V, E>* edge) const;\n\n    /**\n     * Returns the set of all edges in the graph that end at the specified vertex.\n     * If the vertex supplied is null or is not found in the graph,\n     * the function will return an empty set.\n     *\n     * Equivalent to getInverseArcSet.\n     * @bigoh O(E)\n     */\n    const Set<EdgeGen<V, E>*> getInverseEdgeSet(VertexGen<V, E>* v) const;\n\n    /**\n     * Returns the set of all edges in the graph that end at the specified vertex.\n     * If the vertex supplied is null or is not found in the graph,\n     * the function will return an empty set.\n     *\n     * Equivalent to getInverseArcSet.\n     * @bigoh O(E)\n     */\n    const Set<EdgeGen<V, E>*> getInverseEdgeSet(const std::string& v) const;\n\n    /**\n     * Looks up a vertex in the graph by name and returns a pointer to\n     * its internal data structure.\n     * If no vertex with the specified name exists, returns nullptr.\n     * @bigoh O(log V)\n     */\n    VertexGen<V, E>* getVertex(const std::string& name) const;\n\n    /**\n     * Returns a set of the names of all vertexes in the graph.\n     * The vertexes will be sorted by name in case-sensitive alphabetical order.\n     * @bigoh O(V log V)\n     */\n    Set<std::string> getVertexNames() const;\n\n    /**\n     * Returns the set of all vertexes in the graph.\n     * The vertexes will be sorted by name in case-sensitive alphabetical order.\n     * @bigoh O(V log V)\n     */\n    const Set<VertexGen<V, E>*>& getVertexSet() const;\n\n    /**\n     * Removes the edge from v1 to v2 from the graph.\n     * If more than one edge connects the specified endpoints, all of them are removed.\n     * If either of the vertexes supplied is not found in the graph,\n     * calling this function will have no effect on the graph.\n     * @bigoh O(E + log V)\n     */\n    void removeEdge(const std::string& v1, const std::string& v2, bool directed = true);\n\n    /**\n     * Removes the edge from v1 to v2 from the graph.\n     * If more than one edge connects the specified endpoints, all of them are removed.\n     * If either of the vertexes supplied is null or not found in the graph,\n     * calling this function will have no effect on the graph.\n     * @bigoh O(E + log V)\n     */\n    void removeEdge(VertexGen<V, E>* v1, VertexGen<V, E>* v2, bool directed = true);\n\n    /**\n     * Removes the given edge from the graph.\n     * If the edge supplied is not found in the graph,\n     * calling this function will have no effect on the graph.\n     * @bigoh O(log E + log V)\n     */\n    void removeEdge(EdgeGen<V, E>* e, bool directed = true);\n\n    /**\n     * Removes the given vertex from the graph.\n     * If the vertex is not found in the graph, the call has no effect.\n     * @bigoh O(E + log V)\n     */\n    void removeVertex(const std::string& name);\n\n    /**\n     * Removes the given vertex from the graph.\n     * If the vertex is null or is not found in the graph, the call has no effect.\n     * @bigoh O(E + log V)\n     */\n    void removeVertex(VertexGen<V, E>* v);\n\n    /**\n     * Sets the data stored in each vertex and edge back to its original value\n     * by calling resetData on every vertex and edge.\n     * @private\n     * @bigoh O(V + E)\n     */\n    void resetData();\n\n    /**\n     * Sets whether the resetData method is enabled (default true).\n     * @private\n     * @bigoh O(1)\n     */\n    void setResetEnabled(bool enabled);\n\n    /* @inherit */\n    virtual void scanArcData(TokenScanner& scanner, EdgeGen<V, E>* edge, EdgeGen<V, E>* inverse);\n\n    /* @inherit */\n    virtual void writeArcData(std::ostream& out, EdgeGen<V, E>* edge) const;\n\n    /**\n     * Returns a Map representing an adjacency list equivalent to this graph.\n     * Each vertex's name is a key in the map, and its neighboring vertexes' names\n     * are stored in a Set as the value associated with that key.\n     * It should be noted that this member does not preserve the weights of the edges\n     * between the neighboring vertexes, so it is not ideal for use with weighted graphs.\n     * @bigoh O(V + E)\n     */\n    Map<std::string, Set<std::string>> toMap() const;\n\n    /**\n     * Returns the number of vertexes in the graph.\n     * Equivalent to size.\n     * @bigoh O(1)\n     */\n    int vertexCount() const;\n\n    /**\n     * Overloads <code>[]</code> to return vertex pointers by vertex name.\n     * @bigoh O(log V)\n     */\n    VertexGen<V, E>* operator [](const std::string& name);\n\n    /**\n     * Overloads <code>[]</code> to return vertex pointers by vertex name.\n     * @bigoh O(log V)\n     */\n    const VertexGen<V, E>* operator [](const std::string& name) const;\n\nprivate:\n    bool m_resetEnabled;\n};\n\n/**\n * Hash function for BasicGraphGen.\n */\ntemplate <typename V, typename E>\nint hashCode(const BasicGraphGen<V, E>& graph);\n\n/*\n * Defines a Vertex to be a VertexGen with its data bound to be a void*.\n * Retained for backward compatibility.\n */\ntypedef VertexGen<void*, void*> Vertex;\n#define VertexV VertexGen\n\n/*\n * You can refer to a Vertex as a Node if you prefer.\n */\n#define Node Vertex\n\n/*\n * Defines an Edge to be an EdgeGen with its data bound to be a void*.\n * Retained for backward compatibility.\n */\ntypedef EdgeGen<void*, void*> Edge;\n#define EdgeV EdgeGen\n\n/*\n * You can refer to an Edge as an Arc if you prefer.\n */\n#define Arc Edge\n\n/*\n * Defines a BasicGraph to be a BasicGraphGen with its data bound to be a void*.\n * Retained for backward compatibility.\n */\ntypedef BasicGraphGen<void*, void*> BasicGraph;\n#define BasicGraphV BasicGraphGen\n\n/**\n * Hash function for BasicGraph.\n */\nint hashCode(const BasicGraph& graph);\n\n\n/*\n * Vertex member implementations\n */\ntemplate <typename V, typename E>\nVertexGen<V, E>::VertexGen(const std::string& theName)\n        : name(theName),\n          edges(arcs),\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n          weight(cost),\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n          data(V()),\n          extraData(data) {\n    resetData();\n}\n\ntemplate <typename V, typename E>\nVertexGen<V, E>::VertexGen(const VertexGen& other)\n    : name(other.name),\n      arcs(other.arcs),\n      edges(arcs),\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n      cost(other.cost),\n      weight(cost),\n      visited(other.visited),\n      previous(other.previous),\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n      data(other.data),\n      extraData(data),\n      _color(other._color) {\n    // empty\n}\n\ntemplate <typename V, typename E>\nVertexGen<V, E>::~VertexGen() {\n    // empty\n}\n\ntemplate <typename V, typename E>\nint VertexGen<V, E>::getColor() const {\n    return _color;\n}\n\ntemplate <typename V, typename E>\nvoid VertexGen<V, E>::resetData() {\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    cost = 0.0;\n    previous = nullptr;\n    visited = false;\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    _color = /* UNCOLORED */ 0;\n}\n\ntemplate <typename V, typename E>\nvoid VertexGen<V, E>::setColor(int c) {\n    _color = c;\n    notifyObservers();\n}\n\ntemplate <typename V, typename E>\nstd::string VertexGen<V, E>::toString() const {\n    std::ostringstream out;\n    out << *this;\n    return out.str();\n}\n\ntemplate <typename V, typename E>\nVertexGen<V, E>& VertexGen<V, E>::operator =(const VertexGen& other) {\n    if (this != &other) {\n        name = other.name;\n        arcs = other.arcs;\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n        cost = other.cost;\n        visited = other.visited;\n        previous = other.previous;\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n        data = other.data;\n        _color = other._color;\n    }\n    return *this;\n}\n\ntemplate <typename V, typename E>\nVertexGen<V, E>& VertexGen<V, E>::operator =(VertexGen&& other) {\n    if (this != &other) {\n        name = other.name;\n        arcs = other.arcs;\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n        cost = other.cost;\n        visited = other.visited;\n        previous = other.previous;\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n        data = other.data;\n        _color = other._color;\n    }\n    return *this;\n}\n\ntemplate <typename V, typename E>\nstd::ostream& operator <<(std::ostream& out, const VertexGen<V, E>& v) {\n    out << \"Vertex{name=\" << v.name;\n\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    if (!floatingPointEqual(v.cost, 0.0)) {\n        out << \", cost=\" << v.cost;\n    }\n    out << \", visited=\" << (v.visited ? \"true\" : \"false\");\n    out << \", previous=\" << (v.previous == nullptr ? std::string(\"nullptr\") : v.previous->name);\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n\n    // print neighbors\n    out << \", neighbors={\";\n    int i = 0;\n    for (EdgeGen<V, E>* edge : v.edges) {\n        if (i > 0) {\n            out << \", \";\n        }\n        i++;\n        if (edge->finish) {\n            out << edge->finish->name;\n        } else {\n            out << \"nullptr\";\n        }\n    }\n    out << \"}\";   // end of neighbors\n\n    out << \"}\";   // end of Vertex\n    return out;\n}\n\n\n/*\n * Edge member implementations\n */\ntemplate <typename V, typename E>\nEdgeGen<V, E>::EdgeGen(VertexGen<V, E>* theStart, VertexGen<V, E>* theFinish, double theCost)\n        : start(theStart),\n          finish(theFinish),\n          end(this->finish),\n          cost(theCost),\n          weight(this->cost),\n          data(nullptr),\n          extraData(data) {\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    this->extraData = nullptr;\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    this->resetData();\n}\n\ntemplate <typename V, typename E>\nEdgeGen<V, E>::~EdgeGen() {\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    if (this->extraData != nullptr) {\n        this->extraData = nullptr;\n        // delete this->extraData;\n    }\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n}\n\ntemplate <typename V, typename E>\nvoid EdgeGen<V, E>::resetData() {\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    this->visited = false;\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n}\n\ntemplate <typename V, typename E>\nstd::string EdgeGen<V, E>::toString() const {\n    std::ostringstream out;\n    out << *this;\n    return out.str();\n}\n\ntemplate <typename V, typename E>\nEdgeGen<V, E>& EdgeGen<V, E>::operator =(const EdgeGen& other) {\n    if (this != &other) {\n        start = other.start;\n        finish = other.finish;\n        cost = other.cost;\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n        visited = other.visited;\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    }\n    return *this;\n}\n\ntemplate <typename V, typename E>\nEdgeGen<V, E>& EdgeGen<V, E>::operator =(EdgeGen&& other) {\n    start = other.start;\n    finish = other.finish;\n    cost = other.cost;\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    visited = other.visited;\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    return *this;\n}\n\n/**\n * Writes the given edge structure to the given output stream.\n */\ntemplate <typename V, typename E>\nstd::ostream& operator <<(std::ostream& out, const EdgeGen<V, E>& edge) {\n    out << \"Edge{start=\";\n    if (!edge.start) {\n        out << \"nullptr\";\n    } else {\n        out << edge.start->name;\n    }\n    out << \", finish=\";\n    if (!edge.finish) {\n        out << \"nullptr\";\n    } else {\n        out << edge.finish->name;\n    }\n    if (!floatingPointEqual(edge.cost, 0.0)) {\n        out << \", cost=\" << edge.cost;\n    }\n#ifdef SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    if (edge.visited) {\n        out << \", visited=\" << (edge.visited ? \"true\" : \"false\");\n    }\n#endif // SPL_BASICGRAPH_VERTEX_EDGE_RICH_MEMBERS\n    out << \"}\";\n    return out;\n}\n\n\n/*\n * BasicGraph member implementations\n */\ntemplate <typename V, typename E>\nBasicGraphGen<V, E>::BasicGraphGen() : Graph<VertexGen<V, E>, EdgeGen<V, E>>() {\n    m_resetEnabled = true;\n}\n\ntemplate <typename V, typename E>\nBasicGraphGen<V, E>::BasicGraphGen(std::initializer_list<std::string> vertexList)\n        : Graph<VertexGen<V, E>, EdgeGen<V, E>>() {\n    m_resetEnabled = true;\n    for (const std::string& vertexName : vertexList) {\n        this->addVertex(vertexName);\n    }\n}\n\ntemplate <typename V, typename E>\nvoid BasicGraphGen<V, E>::clearEdges() {\n    this->clearArcs();\n}\n\ntemplate <typename V, typename E>\nvoid BasicGraphGen<V, E>::clearEdges(VertexGen<V, E>* v) {\n    this->clearArcs(v);\n}\n\ntemplate <typename V, typename E>\nvoid BasicGraphGen<V, E>::clearEdges(const std::string& v) {\n    this->clearArcs(v);\n}\n\ntemplate <typename V, typename E>\nbool BasicGraphGen<V, E>::containsEdge(VertexGen<V, E>* v1, VertexGen<V, E>* v2) const {\n    return this->containsArc(v1, v2);\n}\n\ntemplate <typename V, typename E>\nbool BasicGraphGen<V, E>::containsEdge(const std::string& v1, const std::string& v2) const {\n    return this->containsArc(v1, v2);\n}\n\ntemplate <typename V, typename E>\nbool BasicGraphGen<V, E>::containsEdge(EdgeGen<V, E>* edge) const {\n    return this->containsArc(edge);\n}\n\ntemplate <typename V, typename E>\nbool BasicGraphGen<V, E>::containsVertex(const std::string& name) const {\n    return this->containsNode(name);\n}\n\ntemplate <typename V, typename E>\nbool BasicGraphGen<V, E>::containsVertex(VertexGen<V, E>* v) const {\n    return this->containsNode(v);\n}\n\ntemplate <typename V, typename E>\nint BasicGraphGen<V, E>::edgeCount() const {\n    return this->arcCount();\n}\n\ntemplate <typename V, typename E>\nEdgeGen<V, E>* BasicGraphGen<V, E>::getEdge(VertexGen<V, E>* v1, VertexGen<V, E>* v2) const {\n    return this->getArc(v1, v2);\n}\n\ntemplate <typename V, typename E>\nEdgeGen<V, E>* BasicGraphGen<V, E>::getEdge(const std::string& v1, const std::string& v2) const {\n    return this->getArc(v1, v2);\n}\n\ntemplate <typename V, typename E>\nEdgeGen<V, E>* BasicGraphGen<V, E>::getInverseArc(EdgeGen<V, E>* edge) const {\n    return this->getArc(edge->finish, edge->start);\n}\n\ntemplate <typename V, typename E>\nEdgeGen<V, E>* BasicGraphGen<V, E>::getInverseEdge(EdgeGen<V, E>* edge) const {\n    return this->getInverseArc(edge);\n}\n\ntemplate <typename V, typename E>\nvoid BasicGraphGen<V, E>::resetData() {\n    if (m_resetEnabled) {\n        for (VertexGen<V, E>* v : this->getVertexSet()) {\n            v->resetData();\n        }\n        for (EdgeGen<V, E>* e : this->getEdgeSet()) {\n            e->resetData();\n        }\n    }\n}\n\ntemplate <typename V, typename E>\nvoid BasicGraphGen<V, E>::setResetEnabled(bool enabled) {\n    m_resetEnabled = enabled;\n}\n\ntemplate <typename V, typename E>\nEdgeGen<V, E>* BasicGraphGen<V, E>::addEdge(const std::string& v1, const std::string& v2, double cost, bool directed) {\n    if (!this->containsVertex(v1)) {\n        this->addVertex(v1);\n    }\n    if (!this->containsVertex(v2)) {\n        this->addVertex(v2);\n    }\n    return this->addEdge(this->getVertex(v1), this->getVertex(v2), cost, directed);\n}\n\ntemplate <typename V, typename E>\nEdgeGen<V, E>* BasicGraphGen<V, E>::addEdge(VertexGen<V, E>* v1, VertexGen<V, E>* v2, double cost, bool directed) {\n    EdgeGen<V, E>* e = new EdgeGen<V, E>(v1, v2, cost);\n    return this->addEdge(e, directed);\n}\n\ntemplate <typename V, typename E>\nEdgeGen<V, E>* BasicGraphGen<V, E>::addEdge(EdgeGen<V, E>* e, bool directed) {\n    EdgeGen<V, E>* result = this->addArc(e);\n    if (!directed) {\n        EdgeGen<V, E>* result2 = this->addArc(e->finish, e->start);\n        result2->cost = e->cost;\n    }\n    return result;\n}\n\ntemplate <typename V, typename E>\nVertexGen<V, E>* BasicGraphGen<V, E>::addVertex(const std::string& name) {\n    return this->addNode(name);\n}\n\ntemplate <typename V, typename E>\nVertexGen<V, E>* BasicGraphGen<V, E>::addVertex(VertexGen<V, E>* v) {\n    return this->addNode(v);\n}\n\ntemplate <typename V, typename E>\nconst Set<EdgeGen<V, E>*>& BasicGraphGen<V, E>::getEdgeSet() const {\n    return this->getArcSet();\n}\n\ntemplate <typename V, typename E>\nconst Set<EdgeGen<V, E>*>& BasicGraphGen<V, E>::getEdgeSet(VertexGen<V, E>* v) const {\n    return this->getArcSet(v);\n}\n\ntemplate <typename V, typename E>\nconst Set<EdgeGen<V, E>*>& BasicGraphGen<V, E>::getEdgeSet(const std::string& v) const {\n    return this->getArcSet(v);\n}\n\ntemplate <typename V, typename E>\nconst Set<EdgeGen<V, E>*> BasicGraphGen<V, E>::getInverseEdgeSet(VertexGen<V, E>* v) const {\n    return this->getInverseArcSet(v);\n}\n\ntemplate <typename V, typename E>\nconst Set<EdgeGen<V, E>*> BasicGraphGen<V, E>::getInverseEdgeSet(const std::string& v) const {\n    return this->getInverseArcSet(v);\n}\n\n\ntemplate <typename V, typename E>\nVertexGen<V, E>* BasicGraphGen<V, E>::getVertex(const std::string& name) const {\n    return this->getNode(name);\n}\n\ntemplate <typename V, typename E>\nSet<std::string> BasicGraphGen<V, E>::getVertexNames() const {\n    return this->getNodeNames();\n}\n\n\ntemplate <typename V, typename E>\nconst Set<VertexGen<V, E>*>& BasicGraphGen<V, E>::getVertexSet() const {\n    return this->getNodeSet();\n}\n\ntemplate <typename V, typename E>\nvoid BasicGraphGen<V, E>::removeEdge(const std::string& v1, const std::string& v2, bool directed) {\n    this->removeEdge(this->getVertex(v1), this->getVertex(v2), directed);\n}\n\ntemplate <typename V, typename E>\nvoid BasicGraphGen<V, E>::removeEdge(VertexGen<V, E>* v1, VertexGen<V, E>* v2, bool directed) {\n    this->removeArc(v1, v2);\n    if (!directed) {\n        this->removeArc(v2, v1);\n    }\n}\n\ntemplate <typename V, typename E>\nvoid BasicGraphGen<V, E>::removeEdge(EdgeGen<V, E>* e, bool directed) {\n    this->removeArc(e);\n    if (!directed) {\n        this->removeArc(e->finish, e->start);\n    }\n}\n\ntemplate <typename V, typename E>\nvoid BasicGraphGen<V, E>::removeVertex(const std::string& name) {\n    this->removeNode(name);\n}\n\ntemplate <typename V, typename E>\nvoid BasicGraphGen<V, E>::removeVertex(VertexGen<V, E>* v) {\n    this->removeNode(v);\n}\n\ntemplate <typename V, typename E>\nMap<std::string, Set<std::string>> BasicGraphGen<V, E>::toMap() const {\n    Map<std::string, Set<std::string>> result;\n    for (Vertex* v : this->getVertexSet()) {\n        Set<std::string> neighborSet;\n        for (Vertex* neighbor : this->getNeighbors(v)) {\n            neighborSet += neighbor->name;\n        }\n        result[v->name] = neighborSet;\n    }\n    return result;\n}\n\ntemplate <typename V, typename E>\nint BasicGraphGen<V, E>::vertexCount() const {\n    return this->nodeCount();\n}\n\ntemplate <typename V, typename E>\nVertexGen<V, E>* BasicGraphGen<V, E>::operator [](const std::string& name) {\n    return this->getVertex(name);\n}\n\ntemplate <typename V, typename E>\nconst VertexGen<V, E>* BasicGraphGen<V, E>::operator [](const std::string& name) const {\n    return this->getVertex(name);\n}\n\ntemplate <typename V, typename E>\nvoid BasicGraphGen<V, E>::scanArcData(TokenScanner& scanner, EdgeGen<V, E>* edge, EdgeGen<V, E>* inverse) {\n    std::string colon = scanner.nextToken();   // \":\", skip over\n    if (colon == \":\") {\n        std::string costStr = scanner.nextToken();\n        edge->cost = stringToReal(costStr);\n        if (inverse) {\n            inverse->cost = edge->cost;\n        }\n    } else {\n        // no cost for this edge (cost 0); un-read the colon token because\n        // it probably wasn't actually a colon\n        scanner.saveToken(colon);\n    }\n}\n\ntemplate <typename V, typename E>\nvoid BasicGraphGen<V, E>::writeArcData(std::ostream& out, EdgeGen<V, E>* edge) const {\n    if (!floatingPointEqual(edge->cost, 0.0)) {\n        out << \" : \";\n        out << edge->cost;\n    }\n}\n\n/**\n * Template hash function for graphs.\n */\ntemplate <typename V, typename E>\nint hashCode(const BasicGraphGen<V, E>& graph) {\n    int code = hashSeed();\n    for (VertexGen<V, E>* v : graph) {\n        code = hashMultiplier() * code + hashCode(v->name);\n    }\n    for (EdgeGen<V, E>* e : graph.getEdgeSet()) {\n        code = hashMultiplier() * code + hashCode(e->start->name);\n        code = hashMultiplier() * code + hashCode(e->finish->name);\n    }\n    return (code & hashMask());\n}\n\n/**\n * Overloaded operator to print a set of edge pointers.\n * Normally it is unwise to override operators for printing pointers,\n * because the pointer could be null or garbage.\n * But in this case we have decided that it is better for students if their\n * attempts to print collections of vertexes and edges are easy to read.\n */\ntemplate <typename V, typename E>\nstd::ostream& operator <<(std::ostream& out, const HashSet<EdgeGen<V, E>*>& sete) {\n    out << \"{\";\n    if (!sete.isEmpty()) {\n        bool first = true;\n        for (EdgeGen<V, E>* e : sete) {\n            if (!first) {\n                out << \", \";\n            }\n            first = false;\n            if (e) {\n                if (e->start) {\n                    out << e->start->name;\n                } else {\n                    out << \"null\";\n                }\n                out << \" -> \";\n                if (e->finish) {\n                    out << e->finish->name;\n                } else {\n                    out << \"null\";\n                }\n            } else {\n                out << \"null\";\n            }\n        }\n    }\n    out << \"}\";\n    return out;\n}\n\n/**\n * Overloaded operator to print a set of vertex pointers.\n * Normally it is unwise to override operators for printing pointers,\n * because the pointer could be null or garbage.\n * But in this case we have decided that it is better for students if their\n * attempts to print collections of vertexes and edges are easy to read.\n */\ntemplate <typename V, typename E>\nstd::ostream& operator <<(std::ostream& out, const HashSet<VertexGen<V, E>*>& setv) {\n    out << \"{\";\n    if (!setv.isEmpty()) {\n        bool first = true;\n        for (VertexGen<V, E>* v : setv) {\n            if (!first) {\n                out << \", \";\n            }\n            first = false;\n            if (v) {\n                out << v->name;\n            } else {\n                out << \"null\";\n            }\n        }\n    }\n    out << \"}\";\n    return out;\n}\n\n/**\n * Overloaded operator to print a list of edge pointers.\n * Normally it is unwise to override operators for printing pointers,\n * because the pointer could be null or garbage.\n * But in this case we have decided that it is better for students if their\n * attempts to print collections of vertexes and edges are easy to read.\n */\ntemplate <typename V, typename E>\nstd::ostream& operator <<(std::ostream& out, const LinkedList<EdgeGen<V, E>*>& liste) {\n    out << \"{\";\n    if (!liste.isEmpty()) {\n        bool first = true;\n        for (EdgeGen<V, E>* e : liste) {\n            if (!first) {\n                out << \", \";\n            }\n            first = false;\n            if (e) {\n                if (e->start) {\n                    out << e->start->name;\n                } else {\n                    out << \"null\";\n                }\n                out << \" -> \";\n                if (e->finish) {\n                    out << e->finish->name;\n                } else {\n                    out << \"null\";\n                }\n            } else {\n                out << \"null\";\n            }\n        }\n    }\n    out << \"}\";\n    return out;\n}\n\n/**\n * Overloaded operator to print a list of vertex pointers.\n * Normally it is unwise to override operators for printing pointers,\n * because the pointer could be null or garbage.\n * But in this case we have decided that it is better for students if their\n * attempts to print collections of vertexes and edges are easy to read.\n */\ntemplate <typename V, typename E>\nstd::ostream& operator <<(std::ostream& out, const LinkedList<VertexGen<V, E>*>& lst) {\n    out << \"{\";\n    if (!lst.isEmpty()) {\n        bool first = true;\n        for (VertexGen<V, E>* v : lst) {\n            if (!first) {\n                out << \", \";\n            }\n            first = false;\n            if (v) {\n                out << v->name;\n            } else {\n                out << \"null\";\n            }\n        }\n    }\n    out << \"}\";\n    return out;\n}\n\n/**\n * Overloaded operator to print a set of edge pointers.\n * Normally it is unwise to override operators for printing pointers,\n * because the pointer could be null or garbage.\n * But in this case we have decided that it is better for students if their\n * attempts to print collections of vertexes and edges are easy to read.\n */\ntemplate <typename V, typename E>\nstd::ostream& operator <<(std::ostream& out, const Set<EdgeGen<V, E>*>& sete) {\n    out << \"{\";\n    if (!sete.isEmpty()) {\n        bool first = true;\n        for (EdgeGen<V, E>* e : sete) {\n            if (!first) {\n                out << \", \";\n            }\n            first = false;\n            if (e) {\n                if (e->start) {\n                    out << e->start->name;\n                } else {\n                    out << \"null\";\n                }\n                out << \" -> \";\n                if (e->finish) {\n                    out << e->finish->name;\n                } else {\n                    out << \"null\";\n                }\n            } else {\n                out << \"null\";\n            }\n        }\n    }\n    out << \"}\";\n    return out;\n}\n\n/**\n * Overloaded operator to print a set of vertex pointers.\n * Normally it is unwise to override operators for printing pointers,\n * because the pointer could be null or garbage.\n * But in this case we have decided that it is better for students if their\n * attempts to print collections of vertexes and edges are easy to read.\n */\ntemplate <typename V, typename E>\nstd::ostream& operator <<(std::ostream& out, const Set<VertexGen<V, E>*>& setv) {\n    out << \"{\";\n    if (!setv.isEmpty()) {\n        bool first = true;\n        for (VertexGen<V, E>* v : setv) {\n            if (!first) {\n                out << \", \";\n            }\n            first = false;\n            if (v) {\n                out << v->name;\n            } else {\n                out << \"null\";\n            }\n        }\n    }\n    out << \"}\";\n    return out;\n}\n\n/**\n * Overloaded operator to print a vector of edge pointers.\n * Normally it is unwise to override operators for printing pointers,\n * because the pointer could be null or garbage.\n * But in this case we have decided that it is better for students if their\n * attempts to print collections of vertexes and edges are easy to read.\n */\ntemplate <typename V, typename E>\nstd::ostream& operator <<(std::ostream& out, const Vector<EdgeGen<V, E>*>& vece) {\n    out << \"{\";\n    if (!vece.isEmpty()) {\n        bool first = true;\n        for (EdgeGen<V, E>* e : vece) {\n            if (!first) {\n                out << \", \";\n            }\n            first = false;\n            if (e) {\n                if (e->start) {\n                    out << e->start->name;\n                } else {\n                    out << \"null\";\n                }\n                out << \" -> \";\n                if (e->finish) {\n                    out << e->finish->name;\n                } else {\n                    out << \"null\";\n                }\n            } else {\n                out << \"null\";\n            }\n        }\n    }\n    out << \"}\";\n    return out;\n}\n\n/**\n * Overloaded operator to print a vector of vertex pointers.\n * Normally it is unwise to override operators for printing pointers,\n * because the pointer could be null or garbage.\n * But in this case we have decided that it is better for students if their\n * attempts to print collections of vertexes and edges are easy to read.\n */\ntemplate <typename V, typename E>\nstd::ostream& operator <<(std::ostream& out, const Vector<VertexGen<V, E>*>& vec) {\n    out << \"{\";\n    if (!vec.isEmpty()) {\n        bool first = true;\n        for (VertexGen<V, E>* v : vec) {\n            if (!first) {\n                out << \", \";\n            }\n            first = false;\n            if (v) {\n                out << v->name;\n            } else {\n                out << \"null\";\n            }\n        }\n    }\n    out << \"}\";\n    return out;\n}\n\n#endif // _basicgraph_h\n"
  },
  {
    "path": "Library/collections/collections.cpp",
    "content": "/*\n * File: collections.cpp\n * ---------------------\n * This file implements the collections.h interface.\n * \n * @version 2019/04/11\n * - added functions to read/write quoted char values\n * @version 2018/10/20\n * - initial version\n */\n\n#include \"collections.h\"\n#include \"private/static.h\"\n#include <iomanip>\n#include <iostream>\n\n/*\n * Implementation notes: readQuotedString and writeQuotedString\n * ------------------------------------------------------------\n * Most of the work in these functions has to do with escape sequences.\n */\n\nSTATIC_CONST_VARIABLE_DECLARE(std::string, STRING_DELIMITERS, \",:)}]\\n\")\n\nbool stringNeedsQuoting(const std::string& str) {\n    int n = str.length();\n    for (int i = 0; i < n; i++) {\n        char ch = str[i];\n        if (isspace(ch)) return false;\n        if (STATIC_VARIABLE(STRING_DELIMITERS).find(ch) != std::string::npos) return true;\n    }\n    return false;\n}\n\nbool readQuotedChar(std::istream& is, char& ch, bool throwOnError) {\n    // skip whitespace\n    char temp;\n    while (is.get(temp) && isspace(temp)) {\n        // empty\n    }\n    if (is.fail()) {\n        return true;\n    }\n\n    // now we are either at a character, like X, or at the start of a quoted\n    // character such as 'X' or '\\n'\n    if (temp == '\\'' || temp == '\"') {\n        // quoted character; defer to string-reading code\n        is.unget();\n        std::string s;\n        bool result = readQuotedString(is, s, throwOnError);\n        if (result && !s.empty()) {\n            ch = s[0];\n        }\n        return result;\n    } else {\n        // unquoted character; read it ourselves\n        // special case: \\ (e.g. \\n, \\t)\n        if (temp == '\\\\') {\n            // TODO\n            char temp2;\n            if (is.get(temp2)) {\n                switch (temp2) {\n                    case 'a':  ch = '\\a'; break;\n                    case 'b':  ch = '\\b'; break;\n                    case 'f':  ch = '\\f'; break;\n                    case 'n':  ch = '\\n'; break;\n                    case 'r':  ch = '\\r'; break;\n                    case 't':  ch = '\\t'; break;\n                    case 'v':  ch = '\\v'; break;\n                    case '0':  ch = '\\0'; break;\n                    case '\\\\': ch = '\\\\'; break;\n                    case '\\'': ch = '\\''; break;\n                    case '\"':  ch = '\"'; break;\n                    default:   ch = '\\0'; break;\n                }\n            }\n        } else {\n            ch = temp;\n        }\n        return true;\n    }\n}\n\nbool readQuotedString(std::istream& is, std::string& str, bool throwOnError) {\n    str = \"\";\n    char ch;\n    while (is.get(ch) && isspace(ch)) {\n        /* Empty */\n    }\n    if (is.fail()) {\n        return true;   // empty string?\n    }\n    if (ch == '\\'' || ch == '\"') { // if starts with single or double quote, read to match close\n        char delim = ch; // record open delimiter (either \" or ') to match later\n        while (true) {\n            if (!is.get(ch) || is.fail()) {\n                if (throwOnError) {\n                    error(\"Unterminated string\");\n                }\n                return false;\n            }\n            if (ch == delim) {\n                break; // read to end of string\n            }\n            if (ch == '\\\\') {\n                if (!is.get(ch)) {\n                    if (throwOnError) {\n                        error(\"Unterminated escape sequence\");\n                    }\n                    is.setstate(std::ios_base::failbit);\n                    return false;\n                }\n                if (isdigit(ch) || ch == 'x') {\n                    int maxDigits = 3;\n                    int base = 8;\n                    if (ch == 'x') {\n                        base = 16;\n                        maxDigits = 2;\n                        if (!is.get(ch)) { // read past x\n                          if (throwOnError) {\n                              error(\"Unterminated escape sequence\");\n                          }\n                          is.setstate(std::ios_base::failbit);\n                          return false;\n                        }\n                    }\n                    int result = 0;\n                    int digit = 0;\n                    for (int i = 0; i < maxDigits && ch != delim; i++) {\n                        if (isdigit(ch)) {\n                            digit = ch - '0';\n                        } else if (base == 16 && isxdigit(ch)) {\n                            digit = toupper(ch) - 'A' + 10;\n                        } else {\n                            break;\n                        }\n                        result = base * result + digit;\n                        if (!is.get(ch)) { // read ahead one\n                            if (throwOnError) {\n                                error(\"Unterminated string\");\n                            }\n                            is.setstate(std::ios_base::failbit);\n                            return false;\n                        }\n                    }\n                    ch = char(result);\n                    is.unget(); // unget last char (had to read one too far)\n                } else {\n                    switch (ch) {\n                    case 'a': ch = '\\a'; break;\n                    case 'b': ch = '\\b'; break;\n                    case 'f': ch = '\\f'; break;\n                    case 'n': ch = '\\n'; break;\n                    case 'r': ch = '\\r'; break;\n                    case 't': ch = '\\t'; break;\n                    case 'v': ch = '\\v'; break;\n                    case '\"': ch = '\"'; break;\n                    case '\\'': ch = '\\''; break;\n                    case '\\\\': ch = '\\\\'; break;\n                    }\n                }\n            }\n            str += ch;\n        }\n    } else { // not quoted string at all, fallback read until EOF/delim (sketchy..?)\n        str += ch;\n        int endTrim = 0;\n        while (is.get(ch) && STATIC_VARIABLE(STRING_DELIMITERS).find(ch) == std::string::npos) {\n            str += ch;\n            if (!isspace(ch)) {\n                endTrim = str.length();\n            }\n        }\n        if (is) is.unget();\n        str = str.substr(0, endTrim);\n    }\n    return true;   // read successfully\n}\n\nstd::ostream& writeQuotedChar(std::ostream& os, char ch, bool forceQuotes) {\n    if (forceQuotes) {\n        os << '\\'';\n    }\n    switch (ch) {\n    case '\\a': os << \"\\\\a\"; break;\n    case '\\b': os << \"\\\\b\"; break;\n    case '\\f': os << \"\\\\f\"; break;\n    case '\\n': os << \"\\\\n\"; break;\n    case '\\r': os << \"\\\\r\"; break;\n    case '\\t': os << \"\\\\t\"; break;\n    case '\\v': os << \"\\\\v\"; break;\n    case '\\\\': os << \"\\\\\\\\\"; break;\n    default:\n        if (isprint(ch) && ch != '\\'') {\n            os << ch;\n        } else {\n            std::ostringstream oss;\n            oss << std::oct << std::setw(3) << std::setfill('0') << (int(ch) & 0xFF);\n            os << \"\\\\\" << oss.str();\n        }\n    }\n    if (forceQuotes) {\n        os << '\\'';\n    }\n    return os;\n}\n\nstd::ostream& writeQuotedString(std::ostream& os, const std::string& str, bool forceQuotes) {\n    if (!forceQuotes && stringNeedsQuoting(str)) {\n        forceQuotes = true;\n    }\n    if (forceQuotes) {\n        os << '\"';\n    }\n    int len = str.length();\n    for (int i = 0; i < len; i++) {\n        char ch = str.at(i);\n        switch (ch) {\n        case '\\a': os << \"\\\\a\"; break;\n        case '\\b': os << \"\\\\b\"; break;\n        case '\\f': os << \"\\\\f\"; break;\n        case '\\n': os << \"\\\\n\"; break;\n        case '\\r': os << \"\\\\r\"; break;\n        case '\\t': os << \"\\\\t\"; break;\n        case '\\v': os << \"\\\\v\"; break;\n        case '\\\\': os << \"\\\\\\\\\"; break;\n        default:\n            if (isprint(ch) && ch != '\"') {\n                os << ch;\n            } else {\n                std::ostringstream oss;\n                oss << std::oct << std::setw(3) << std::setfill('0') << (int(ch) & 0xFF);\n                os << \"\\\\\" << oss.str();\n            }\n        }\n    }\n    if (forceQuotes) {\n        os << '\"';\n    }\n    return os;\n}\n"
  },
  {
    "path": "Library/collections/collections.h",
    "content": "/*\n * File: collections.h\n * -------------------\n * Contains general-purpose functions for use with many collections.\n *\n * For example, we have functions for comparing any collections that have\n * a visible iterator (begin(), end()).\n * Used to implement comparison operators like < and >= on collections.\n */\n\n#ifndef _collections_h\n#define _collections_h\n\n#include <functional>\n#include <iostream>\n#include <sstream>\n#include <type_traits>\n\n#include \"error.h\"\n#include \"gmath.h\"\n#include \"hashcode.h\"\n#include \"random.h\"\n\n// begin global namespace string read/writing functions from strlib.h\n\n/**\n * Reads the next char from infile into the reference parameter ch.\n * If the first character (other than whitespace) is either a single\n * or a double quote, this function reads characters up to the\n * matching quote, processing standard escape sequences as it goes.\n * If not, readQuotedChar reads characters up to any of the characters\n * in the string STRING_DELIMITERS in the implementation file.\n *\n * @private\n */\nbool readQuotedChar(std::istream& is, char& ch, bool throwOnError = true);\n\n/**\n * Reads the next string from infile into the reference parameter str.\n * If the first character (other than whitespace) is either a single\n * or a double quote, this function reads characters up to the\n * matching quote, processing standard escape sequences as it goes.\n * If not, readQuoted String reads characters up to any of the characters\n * in the string STRING_DELIMITERS in the implementation file.\n *\n * @private\n */\nbool readQuotedString(std::istream& is, std::string& str, bool throwOnError = true);\n\n/**\n * Writes the char ch to outfile surrounded by single quotes, converting\n * special characters to escape sequences, as necessary.  If the optional\n * parameter forceQuotes is explicitly set to false, quotes are included\n * in the output only if necessary.\n *\n * @private\n */\nstd::ostream& writeQuotedChar(std::ostream& os, char ch, bool forceQuotes = true);\n\n/**\n * Writes the string str to outfile surrounded by double quotes, converting\n * special characters to escape sequences, as necessary.  If the optional\n * parameter forceQuotes is explicitly set to false, quotes are included\n * in the output only if necessary.\n *\n * @private\n */\nstd::ostream& writeQuotedString(std::ostream& os, const std::string& str,\n                                bool forceQuotes = true);\n\n/**\n * Checks whether the string needs quoting in order to be read correctly.\n * @private\n */\nbool stringNeedsQuoting(const std::string& str);\n\n/**\n * Writes a generic value to the output stream.  If that value is a string,\n * this function uses writeQuotedString to write the value.\n * @private\n */\ntemplate <typename ValueType>\nstd::ostream& writeGenericValue(std::ostream& os, const ValueType& value, bool) {\n    return os << std::boolalpha << value;\n}\n\ninline std::ostream& writeGenericValue(std::ostream& os, char value,\n                                       bool forceQuotes) {\n    return writeQuotedChar(os, value, forceQuotes);\n}\n\ninline std::ostream& writeGenericValue(std::ostream& os, const std::string& value,\n                                       bool forceQuotes) {\n    return writeQuotedString(os, value, forceQuotes);\n}\n\ntemplate <typename ValueType>\ninline std::string genericValueToString(const ValueType& value,\n                                        bool forceQuotes = false) {\n    std::ostringstream os;\n    writeGenericValue(os, value, forceQuotes);\n    return os.str();\n}\n\ninline std::string genericValueToString(const std::string& value,\n                                        bool forceQuotes) {\n    std::ostringstream os;\n    writeQuotedString(os, value, forceQuotes);\n    return os.str();\n}\n\n/**\n * Reads a generic value from the input stream.  If that value is a string,\n * this function uses readQuotedString to read the value.\n * @private\n */\ntemplate <typename ValueType>\nbool readGenericValue(std::istream& is, ValueType& value) {\n    return (bool) (is >> value);\n}\n\ninline bool readGenericValue(std::istream& is, char& value) {\n    return readQuotedChar(is, value, /* throwOnError */ false);\n}\n\ninline bool readGenericValue(std::istream& is, std::string& value) {\n    return readQuotedString(is, value, /* throwOnError */ false);\n}\n\n// end of global namespace string read/writing functions from strlib.h\nnamespace stanfordcpplib {\nnamespace collections {\n\ntemplate <typename CollectionType, typename IteratorType>\nvoid checkVersion(const CollectionType& coll, const IteratorType& itr,\n                  const std::string& memberName = \"\") {\n    unsigned int collVersion = coll.version();\n    unsigned int itrVersion = itr.version();\n    if (itrVersion != collVersion) {\n        std::string msg = memberName;\n        if (!msg.empty()) {\n            msg += \": \";\n        }\n        msg += \"A collection was modified during iteration, which invalidates operation.\\n\";\n        msg += \"Do not modify a collection within a for-each loop!\";\n        error(msg);\n    }\n}\n\n/*\n * Performs a comparison for ordering between the given two collections\n * by comparing their elements pairwise to each other.\n * Returns -1 if collection 1 is \"less than\" collection 2;\n * Returns  1 if collection 1 is \"greater than\" collection 2;\n * Returns  0 if collection 1 is \"equal to\" collection 2.\n * The element type must have an operator <.\n */\ntemplate <typename CollectionType>\nint compare(const CollectionType& coll1, const CollectionType& coll2) {\n    // optimization: if they are the same object, then they are equal\n    if (&coll1 == &coll2) {\n        return 0;\n    }\n\n    auto itr1 = coll1.begin(),\n         itr2 = coll2.begin(),\n         end1 = coll1.end(),\n         end2 = coll2.end();\n    for (;\n         itr1 != end1 && itr2 != end2;\n         ++itr1, ++itr2) {\n        // compare each pair of elements from iterators\n\n        // TO STUDENT:\n        // If the line below is failing to compile in your program, it probably\n        // means that you are trying to make a nested collection\n        // (e.g. Set<Vector<T>>) for some element type T that does not have a\n        // less-than < operator.  That operator is *required* in order to make\n        // a Set or Map of Vectors, so that the set/map knows how to sort the\n        // elements into their ascending order.\n        // You should either add a < operator to your class, or consider a\n        // different nested collection solution.  Good luck!\n        if (*itr1 < *itr2) {\n            return -1;\n        } else if (*itr2 < *itr1) {\n            return 1;\n        }\n    }\n\n    // if we get here, everything from v1 matched v2, so they are either equal,\n    // or one is shorter than the other (fewer elements) and is therefore less\n    if (itr1 == end1 && itr2 == end2) {\n        return 0;\n    } else if (itr1 == end1) {\n        return -1;\n    } else {\n        return 1;\n    }\n}\n\n/*\n * Performs a comparison for ordering between the given two maps\n * by comparing their key/value pairs pairwise to each other.\n * Returns -1 if collection 1 is \"less than\" collection 2;\n * Returns  1 if collection 1 is \"greater than\" collection 2;\n * Returns  0 if collection 1 is \"equal to\" collection 2.\n * Note that the order of keys and values in the maps matter here;\n * the same map with keys in different orders would produce a different result.\n * The key and value types must both have an operator <.\n */\ntemplate <typename MapType>\nint compareMaps(const MapType& map1, const MapType& map2) {\n    // optimization: if they are the same object, then they are equal\n    if (&map1 == &map2) {\n        return 0;\n    }\n\n    auto itr1 = map1.begin(),\n         itr2 = map2.begin(),\n         end1 = map1.end(),\n         end2 = map2.end();\n    for (;\n         itr1 != end1 && itr2 != end2;\n         ++itr1, ++itr2) {\n        // compare each pair of elements from iterators\n\n        // TO STUDENT:\n        // If the line below is failing to compile in your program, it probably\n        // means that you are trying to make a nested collection\n        // (e.g. Set<Map<K, V>>) for some element type K or V that does not have a\n        // less-than < operator.  That operator is *required* in order to make\n        // a Set or Map of Maps, so that the set/map knows how to sort the\n        // keys and values into their ascending order.\n        // You should either add a < operator to your key/value types, or consider a\n        // different nested collection solution.  Good luck!\n        if (*itr1 < *itr2) {\n            return -1;\n        } else if (*itr2 < *itr1) {\n            return 1;\n        }\n\n        // key1 == key2, so compare values\n        auto value1 = map1[*itr1];\n        auto value2 = map2[*itr2];\n        if (value1 < value2) {\n            return -1;\n        } else if (value2 < value1) {\n            return 1;\n        }\n    }\n\n    // if we get here, everything from v1 matched v2, so they are either equal,\n    // or one is shorter than the other (fewer elements) and is therefore less\n    if (itr1 == end1 && itr2 == end2) {\n        return 0;\n    } else if (itr1 == end1) {\n        return -1;\n    } else {\n        return 1;\n    }\n}\n\n/*\n * Template functions to compare two interleaved sequences of values, returning\n * -1 if the first value is less than the second,\n *  0 if the values are equal,\n *  1 if the first value is greater than the second.\n * The type passed must support a < less-than operator.\n */\ninline int compareTo() {\n    return 0;\n}\ntemplate <typename T, typename... Rest>\nint compareTo(const T& first, const T& second, const Rest&... rest) {\n    if (first < second) return -1;\n    if (second < first) return +1;\n    return compareTo(rest...);\n}\n\n/*\n * Returns true if the two collections contain the same elements in the same order.\n * The element type must have an operator ==.\n */\ntemplate <typename CollectionType>\nbool equals(const CollectionType& coll1, const CollectionType& coll2) {\n    // optimization: if literally same collection, stop\n    if (&coll1 == &coll2) {\n        return true;\n    }\n    // optimization: if not same size, don't bother comparing pairwise\n    if (coll1.size() != coll2.size()) {\n        return false;\n    }\n\n    // check each pair of elements for equality\n    auto itr1 = coll1.begin();\n    auto end1 = coll1.end();\n    auto itr2 = coll2.begin();\n    auto end2 = coll2.end();\n    while (itr1 != end1 && itr2 != end2) {\n        if (!(*itr1 == *itr2)) {\n            return false;\n        }\n        ++itr1;\n        ++itr2;\n    }\n    return true;\n}\n\n/*\n * Returns true if the two collections contain the same elements in the same order.\n * The element type must be double, float, or any floating-point type.\n */\ntemplate <typename CollectionType>\nbool equalsDouble(const CollectionType& coll1, const CollectionType& coll2) {\n    // optimization: if literally same collection, stop\n    if (&coll1 == &coll2) {\n        return true;\n    }\n    // optimization: if not same size, don't bother comparing pairwise\n    if (coll1.size() != coll2.size()) {\n        return false;\n    }\n\n    // check each pair of elements for equality\n    auto itr1 = coll1.begin();\n    auto end1 = coll1.end();\n    auto itr2 = coll2.begin();\n    auto end2 = coll2.end();\n    while (itr1 != end1 && itr2 != end2) {\n        if (!floatingPointEqual(*itr1, *itr2)) {\n            return false;\n        }\n        ++itr1;\n        ++itr2;\n    }\n    return true;\n}\n\n/*\n * Returns true if the given two maps contain the same set of keys and each\n * key maps to the same value in both maps.\n * The order of the keys is not considered.\n * The key and value types must both have an operator ==.\n */\ntemplate <typename MapType>\nbool equalsMap(const MapType& map1, const MapType& map2) {\n    // optimization: if literally same map, stop\n    if (&map1 == &map2) {\n        return true;\n    }\n    // optimization: if not same size, don't bother comparing pairwise\n    if (map1.size() != map2.size()) {\n        return false;\n    }\n\n    // check whether each element in the first map is also in the second.\n    // since the sizes are the same, if this is true, the maps are equal.\n    for (auto itr1 = map1.begin(), end1 = map1.end(); itr1 != end1; ++itr1) {\n        if (!map2.containsKey(*itr1) || !(map1.get(*itr1) == map2.get(*itr1))) {\n            return false;\n        }\n    }\n    return true;\n}\n\n/*\n * Computes a hashCode for any iterable type.\n * Pass true for 'orderMatters' for collections that maintain some kind of element\n * ordering that is of importance.  This would be true for almost all collections\n * except hash-based ones where the ordering is semi-random and unimportant.\n */\ntemplate <typename IteratorType>\nint hashCodeIterable(IteratorType begin, IteratorType end, bool orderMatters = true) {\n    int code = hashSeed();\n    while (begin != end) {\n        if (orderMatters) {\n            code *= hashMultiplier();\n        }\n        code += hashCode(*begin);\n        ++begin;\n    }\n    return int(code & hashMask());\n}\n\n/*\n * Computes a hashCode for any type of collection.\n * The collection must have begin() and end()\n */\ntemplate <typename CollectionType>\nint hashCodeCollection(const CollectionType& collection, bool orderMatters = true) {\n    return hashCodeIterable(collection.begin(), collection.end(), orderMatters);\n}\n\n/*\n * Template hash function for hash maps.\n * Requires the key and value types in the HashMap to have a hashCode function.\n */\ntemplate <typename MapType>\nint hashCodeMap(const MapType& map, bool orderMatters = true) {\n    int code = hashSeed();\n    auto begin = map.begin();\n    auto end = map.end();\n    while (begin != end) {\n        if (orderMatters) {\n            code *= hashMultiplier();\n        }\n        code += hashCode(*begin);\n\n        if (orderMatters) {\n            code *= hashMultiplier();\n        }\n        code += hashCode(map[*begin]);\n        ++begin;\n    }\n    return int(code & hashMask());\n}\n\n/*\n * Returns a randomly chosen element of the given collection.\n * Throws an error if the set is empty.\n */\ntemplate <typename Collection>\nauto randomElement(const Collection& collection) -> const decltype(*collection.begin())& {\n    if (collection.isEmpty()) {\n        error(\"randomElement: empty collection was passed\");\n    }\n    return *std::next(collection.begin(), randomInteger(0, collection.size() - 1));\n}\n\n/*\n * Returns a randomly chosen element of the given collection.\n * The collection must have an index [] operator.\n * Throws an error if the set is empty.\n */\ntemplate <template <typename> class CollectionType, class ElementType>\nconst ElementType& randomElementIndexed(const CollectionType<ElementType>& collection) {\n    if (collection.isEmpty()) {\n        error(\"randomElement: empty collection was passed\");\n    }\n    int index = randomInteger(0, collection.size() - 1);\n    return collection[index];\n}\n\n\ntemplate <typename CollectionType, typename ElementType>\n    void readOne(CollectionType& collection, const ElementType& elem)\n        { collection.add(elem); }\n/*\n * Reads in any collection from the given input stream.\n * The collection must eiither have an add() method that takes a single value,\n * (or provide own callback to use as add operation)\n * and a clear() method that removes all elements from the collection.\n */\ntemplate <typename CollectionType, typename ElementType>\nstd::istream& readCollection(std::istream& input, CollectionType& collection, ElementType& element, std::string /* descriptor */,\n        void (*fn)(CollectionType&, const ElementType&) = readOne<CollectionType,ElementType>)\n{\n\n    char ch = '\\0';\n    input >> ch;\n    if (ch != '{') {\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n    collection.clear();\n    input >> ch;\n    if (ch != '}') {\n        input.unget();\n        while (true) {\n            if (!readGenericValue(input, element)) {\n                return input;\n            }\n            fn(collection, element);\n            input >> ch;\n            if (ch == '}') {\n                break;\n            }\n            if (ch != ',') {\n                input.setstate(std::ios_base::failbit);\n                return input;\n            }\n        }\n    }\n    return input;\n}\n\n\ntemplate <typename CollectionType, typename KeyType, typename ValueType>\n    void readOne(CollectionType& collection, const KeyType& key, const ValueType& value)\n        { collection.put(key, value); }\n/*\n * Reads in any paired collection (Map or Priority Queue) from the given input stream.\n * The collection must have a put() method that takes key and value\n * (or provide a callback to use as add operation)\n * and a clear() method that removes all elements from the collection.\n */\n\ntemplate <typename CollectionType, typename KeyType, typename ValueType>\nstd::istream& readPairedCollection(std::istream& input, CollectionType& collection, KeyType& key, ValueType& value, std::string /* descriptor */,\n        void (*fn)(CollectionType&, const KeyType&, const ValueType&) = readOne<CollectionType,KeyType,ValueType>)\n{\n    char ch = '\\0';\n    input >> ch;\n    if (ch != '{') {\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n    collection.clear();\n    input >> ch;\n    if (ch != '}') {\n        input.unget();\n        while (true) {\n            if (!readGenericValue(input, key)) {\n                return input;\n            }\n            input >> ch;\n            if (ch != ':') {\n                input.setstate(std::ios_base::failbit);\n                return input;\n            }\n            if (!readGenericValue(input, value)) {\n                return input;\n            }\n            fn(collection, key, value);\n            input >> ch;\n            if (ch == '}') {\n                break;\n            }\n            if (ch != ',') {\n                input.setstate(std::ios_base::failbit);\n                return input;\n            }\n        }\n    }\n    return input;\n}\n\n/*\n * Writes out any collection to the given output stream using its two iterators,\n * begin and end.\n */\ntemplate <typename IteratorType>\nstd::ostream& writeIterable(std::ostream& out, IteratorType begin, IteratorType end) {\n    out << \"{\";\n    bool first = true;\n    while (begin != end) {\n        if (!first) {\n            out << \", \";\n        }\n        first = false;\n        writeGenericValue(out, *begin, /* forceQuotes */ true);\n        ++begin;\n    }\n    out << \"}\";\n    return out;\n}\n\n/*\n * Writes out any collection to the given output stream using its two iterators,\n * begin and end.\n */\ntemplate <typename CollectionType>\nstd::ostream& writeCollection(std::ostream& out, CollectionType collection) {\n    return writeIterable(out, collection.begin(), collection.end());\n}\n\n/*\n * Writes out any collection to the given output stream using its two iterators,\n * begin and end.\n */\ntemplate <typename IteratorType>\nstd::ostream& writeIterableOfPointers(std::ostream& out, IteratorType begin, IteratorType end) {\n    out << \"{\";\n    bool first = true;\n    while (begin != end) {\n        if (!first) {\n            out << \", \";\n        }\n        first = false;\n        writeGenericValue(out, **begin, /* forceQuotes */ true);\n        ++begin;\n    }\n    out << \"}\";\n    return out;\n}\n\n/*\n * Writes out any collection to the given output stream using its two iterators,\n * begin and end.\n */\ntemplate <typename CollectionType>\nstd::ostream& writeCollectionOfPointers(std::ostream& out, CollectionType collection) {\n    return writeIterableOfPointers(out, collection.begin(), collection.end());\n}\n\n/*\n * Implementation notes: << and >>\n * -------------------------------\n * The insertion and extraction operators use the template facilities in\n * strlib.h to read and write generic values in a way that treats strings\n * specially.\n */\ntemplate <typename MapType>\nstd::ostream& writeMap(std::ostream& out, const MapType& map) {\n    out << \"{\";\n    auto begin = map.begin();\n    auto end = map.end();\n    bool first = true;\n    while (begin != end) {\n        if (!first) {\n            out << \", \";\n        }\n        first = false;\n        writeGenericValue(out, *begin, /* forceQuotes */ true);\n        out << \":\";\n        writeGenericValue(out, map[*begin], /* forceQuotes */ true);\n        ++begin;\n    }\n    out << \"}\";\n    return out;\n}\n\n/*\n * Type responsible for tracking the version of some object. This is factored out into\n * its own object with unusual copy functions so that any time the underlying object\n * is moved or assigned the underlying version number is updated.\n */\nclass VersionTracker {\npublic:\n    /* Assigning a VersionTracker increments the underlying version number. */\n    VersionTracker& operator= (VersionTracker) {\n        ++_version;\n        return *this;\n    }\n\n    /* Move-constructing a VersionTracker implements the version number of the\n     * object being moved.\n     */\n    VersionTracker(VersionTracker&& rhs) {\n        rhs._version++;\n    }\n\n    /* Use default constructor and default copy constructor. */\n    VersionTracker() = default;\n    VersionTracker(const VersionTracker &) = default;\n\n    /* Marks that the version must be updated. */\n    void update() {\n        ++_version;\n    }\n\n    /* Returns the version number. */\n    unsigned int version() const {\n        return _version;\n    }\n\nprivate:\n    unsigned int _version = 0;\n};\n\n/*\n * Checked iterator type that wraps an underlying iterator type, adding in bounds-checking\n * and version-checking.\n */\ntemplate <typename Iterator> class CheckedIterator {\npublic:\n    /* We're whatever sort of iterator we're wrapping. */\n    using difference_type   = typename std::iterator_traits<Iterator>::difference_type;\n    using iterator_category = typename std::iterator_traits<Iterator>::iterator_category;\n    using pointer           = typename std::iterator_traits<Iterator>::pointer;\n    using reference         = typename std::iterator_traits<Iterator>::reference;\n    using value_type        = typename std::iterator_traits<Iterator>::value_type;\n\n    /*\n     * Default constructor must be explicitly declared so that the private constructor\n     * doesn't shadow us.\n     */\n    CheckedIterator() = default;\n\n    /* Constructs an iterator given information about the underlying container. */\n    template <typename Container>\n    CheckedIterator(const VersionTracker* owner, Iterator iter, Container& c)\n        : _version(owner->version()), _owner(owner), _iter(iter), _begin(c.begin()), _end(c.end()) {\n\n    }\n\n    /*\n     * We're friends with all other CheckedIterator types, allowing for cross-construction\n     * and the like.\n     */\n    template <typename OtherItr> friend class CheckedIterator;\n\n    /* Conversion constructor, when permitted. */\n    template <typename OtherItr> CheckedIterator(const CheckedIterator<OtherItr>& rhs)\n        : _version(rhs._version),\n          _owner(rhs._owner),\n          _iter(rhs._iter),\n          _begin(rhs._begin),\n          _end(rhs._end) {\n\n    }\n\n    template <typename OtherItr> operator CheckedIterator<OtherItr>() const {\n        return CheckedIterator<OtherItr>{_version, _owner, _iter, _begin, _end};\n    }\n\n    /* All possible iterator functions. */\n\n    /* Comparison operators. */\n    template <typename OtherItr> bool operator ==(const CheckedIterator<OtherItr>& rhs) const {\n        if (!_owner || !rhs._owner) {\n            error(\"Cannot compare an uninitialized iterator.\");\n        }\n        if ( _owner !=  rhs._owner) {\n            error(\"Cannot compare iterators from two different containers.\");\n        }\n        return _iter == rhs._iter;\n    }\n    template <typename OtherItr> bool operator !=(const CheckedIterator<OtherItr>& rhs) const {\n        return !(*this == rhs);\n    }\n\n    /*\n     * We report errors if the underlying owners are different, since otherwise\n     * the behavior is undefined.\n     */\n    template <typename OtherItr> bool operator <(const CheckedIterator<OtherItr>& rhs) const {\n        if (!_owner || !rhs._owner) {\n            error(\"Cannot compare an uninitialized iterator.\");\n        }\n        if (_owner != rhs._owner) {\n            error(\"Cannot compare iterators from different containers.\");\n        }\n        return _iter < rhs._iter;\n    }\n    template <typename OtherItr> bool operator >(const CheckedIterator<OtherItr>& rhs) const {\n        return rhs < *this;\n    }\n    template <typename OtherItr> bool operator <=(const CheckedIterator<OtherItr>& rhs) const {\n        return !(*this > rhs);\n    }\n    template <typename OtherItr> bool operator >=(const CheckedIterator<OtherItr>& rhs) const {\n        return !(*this < rhs);\n    }\n\n    /* Random access. */\n    reference operator [](difference_type index) const {\n        if (!_owner) {\n            error(\"Cannot access elements through an uninitialized iterator.\");\n        }\n        ::stanfordcpplib::collections::checkVersion(*_owner, *this);\n        if (index >= 0 &&  index >= _end - _iter) {\n            error(\"Out of bounds.\");\n        }\n        if (index <  0 && -index >  _iter - _begin) {\n            error(\"Out of bounds.\");\n        }\n\n        return _iter[index];\n    }\n\n    CheckedIterator& operator +=(difference_type index) {\n        if (!_owner) error(\"Cannot advance uninitialized iterators.\");\n        ::stanfordcpplib::collections::checkVersion(*_owner, *this);\n        _iter += index;\n        return *this;\n    }\n    CheckedIterator& operator -=(difference_type index) {\n        return *this += (-index);\n    }\n\n    CheckedIterator operator +(difference_type index) const {\n        auto result = *this;\n        return result += index;\n    }\n    CheckedIterator operator -(difference_type index) const {\n        return *this + (-index);\n    }\n\n    template <typename OtherItr>\n    difference_type operator -(const CheckedIterator<OtherItr>& rhs) const {\n        if (!_owner || !rhs._owner) {\n            error(\"Cannot subtract uninitialized iterators.\");\n        }\n\n        ::stanfordcpplib::collections::checkVersion(*_owner, *this);\n        if (_owner != rhs._owner) {\n            error(\"Cannot subtract iterators from two different containers.\");\n        }\n\n        return _iter - rhs._iter;\n    }\n\n    /* Forwards and backwards. */\n    CheckedIterator& operator ++() {\n        if (!_owner) {\n            error(\"Cannot advance an uninitialized iterator.\");\n        }\n\n        ::stanfordcpplib::collections::checkVersion(*_owner, *this);\n        if (_iter == _end) {\n            error(\"Cannot advance an iterator past end of range.\");\n        }\n        ++_iter;\n        return *this;\n    }\n    CheckedIterator operator ++(int) {\n        auto result = *this;\n        ++*this;\n        return result;\n    }\n\n    CheckedIterator& operator --() {\n        if (!_owner) {\n            error(\"Cannot back up an uninitialized iterator.\");\n        }\n\n        ::stanfordcpplib::collections::checkVersion(*_owner, *this);\n        if (_iter == _begin) {\n            error(\"Cannot back up an iteartor before start of range.\");\n        }\n\n        --_iter;\n        return *this;\n    }\n    CheckedIterator operator --(int) {\n        auto result = *this;\n        --*this;\n        return result;\n    }\n\n    /* Dereferencing. */\n    reference operator *() const {\n        if (!_owner) {\n            error(\"Cannot dereference an uninitialized iterator.\");\n        }\n        ::stanfordcpplib::collections::checkVersion(*_owner, *this);\n\n        if (_iter == _end) {\n            error(\"Iterator out of range.\");\n        }\n        return *_iter;\n    }\n    pointer operator ->() const {\n        return &**this;\n    }\n\n    /* Direct version access. */\n    unsigned int version() const {\n        if (!_owner) {\n            error(\"Cannot get version from an uninitialized iterator.\");\n        }\n        return _version;\n    }\n\nprivate:\n    unsigned int _version = 0;\n    const VersionTracker* _owner = nullptr;\n    Iterator _iter;\n    Iterator _begin, _end;\n};\n\n/*\n * Iterator over a pairs that projects out the first component. Essentially, this turns an\n * iterator over pair<const Key, Value> into an iterator over const Key.\n *\n * All bounds-checking, error-handling, etc. are presumed to come from the underlying\n * iterator type.\n */\ntemplate <typename Iterator> class ProjectingIterator {\npublic:\n    /* The sort of thing that we're wrapping. */\n    using value_type       = typename std::remove_reference<decltype(std::declval<Iterator>()->first)>::type;\n\n    /* We're whatever sort of iterator we're wrapping. */\n    using difference_type   = typename std::iterator_traits<Iterator>::difference_type;\n    using iterator_category = typename std::iterator_traits<Iterator>::iterator_category;\n    using pointer           = const value_type *;\n    using reference         = const value_type &;\n\n    /*\n     * Default constructor must be explicitly declared so that the private constructor\n     * doesn't shadow us.\n     */\n    ProjectingIterator() = default;\n\n    /* Wraps an existing iterator. */\n    explicit ProjectingIterator(Iterator iter) : _iter(iter) {\n        // Empty\n    }\n\n    /*\n     * We're friends with all other related types, allowing for cross-construction\n     * and the like.\n     */\n    template <typename OtherItr> friend class ProjectingIterator;\n\n    /* Conversion constructor, when permitted. */\n    template <typename OtherItr> ProjectingIterator(const ProjectingIterator<OtherItr>& rhs)\n        : _iter(rhs._iter) {\n        // Empty\n    }\n\n    template <typename OtherItr> operator ProjectingIterator<OtherItr>() const {\n        return ProjectingIterator<OtherItr>(_iter);\n    }\n\n    /* All possible iterator functions. */\n\n    /* Comparison operators. */\n    template <typename OtherItr> bool operator ==(const ProjectingIterator<OtherItr>& rhs) {\n        return _iter == rhs._iter;\n    }\n    template <typename OtherItr> bool operator !=(const ProjectingIterator<OtherItr>& rhs) {\n        return !(*this == rhs);\n    }\n\n    template <typename OtherItr> bool operator <(const ProjectingIterator<OtherItr>& rhs) {\n        return _iter < rhs._iter;\n    }\n    template <typename OtherItr> bool operator >(const ProjectingIterator<OtherItr>& rhs) {\n        return rhs < *this;\n    }\n    template <typename OtherItr> bool operator <=(const ProjectingIterator<OtherItr>& rhs) {\n        return !(*this > rhs);\n    }\n    template <typename OtherItr> bool operator >=(const ProjectingIterator<OtherItr>& rhs) {\n        return !(*this < rhs);\n    }\n\n    /* Random access. */\n    reference operator [](difference_type index) const {\n        return _iter[index];\n    }\n    ProjectingIterator& operator +=(difference_type index) {\n        _iter += index;\n        return *this;\n    }\n    ProjectingIterator& operator -=(difference_type index) {\n        return *this += (-index);\n    }\n    ProjectingIterator operator +(difference_type index) const {\n        auto result = *this;\n        return result += index;\n    }\n    ProjectingIterator operator -(difference_type index) const {\n        return *this + (-index);\n    }\n    template <typename OtherItr>\n    difference_type operator -(const ProjectingIterator<OtherItr>& rhs) const {\n        return _iter - rhs._iter;\n    }\n\n    /* Forwards and backwards. */\n    ProjectingIterator& operator ++() {\n        ++_iter;\n        return *this;\n    }\n    ProjectingIterator operator ++(int) {\n        auto result = *this;\n        ++*this;\n        return result;\n    }\n\n    ProjectingIterator& operator --() {\n        --_iter;\n        return *this;\n    }\n    ProjectingIterator operator --(int) {\n        auto result = *this;\n        --*this;\n        return result;\n    }\n\n    /* Dereferencing. */\n    reference operator *() const {\n        return _iter->first;\n    }\n    pointer operator ->() const {\n        return &**this;\n    }\n\nprivate:\n    Iterator _iter;\n};\n\n/**\n * Class: GenericSet<SetTraits>\n * ----------------------------\n * This class stores a collection of distinct elements. SetTraits should be\n * a type containing the following:\n *\n *     typename ValueType:          whatever is stored in the map\n *     typename MapType:            should be a Map<ValueType, bool>\n *     static std::string name():   should return the name of the type.\n *\n * There's one more requirement: you need to define a function\n *\n *     template <typename... Args>\n *        static MapType construct(Args&&... args)\n *\n * that constructs an internal MapType object with the specified arguments.\n * This function should do something creative or clever to ensure that there\n * is a nice compiler error generated in the event that the arguments are\n * invalid, since otherwise the error is going to be deeply nested inside the\n * GenericSet template.\n *\n * This is not meant to be used directly by students.\n */\ntemplate <typename SetTraits>\nclass GenericSet {\npublic:\n    /**\n     * Utility alias to make things easier to work with.\n     */\n    using value_type = typename SetTraits::ValueType;\n\n    /**\n     * Constructor: GenericSet\n     * Usage: GenericSet<ValueType, SetTraits> set;\n     * --------------------------------------------\n     * Initializes an empty set of the specified element type.\n     */\n    GenericSet() = default;\n\n    /**\n     * Constructor: GenericSet\n     * Usage: GenericSet<ValueType, SetTraits> set {1, 2, 3};\n     * ------------------------------------------------------\n     * Initializes a new set that stores the given elements.\n     */\n    GenericSet(std::initializer_list<value_type> list);\n\n    /**\n     * Constructor: GenericSet\n     * Usage: GenericSet<ValueType, SetTraits> set(... things for the map ...);\n     * ------------------------------------------------------------------------\n     * Forwards the specified arguments down to the underlying Map type.\n     */\n    template <typename... Args>\n    explicit GenericSet(Args... args);\n\n    /**\n     * Constructor: GenericSet\n     * Usage: GenericSet<ValueType, SetTraits> set({1, 2, 3}, ... things for the map ...);\n     * -----------------------------------------------------------------------------------\n     * Constructs a set using the specified elements, forwarding the arguments to the\n     * underlying map.\n     */\n    template <typename... Args>\n    GenericSet(std::initializer_list<value_type> list,\n               Args... args);\n\n    /**\n     * Destructor: ~Set\n     * ----------------\n     * Frees any heap storage associated with this set.\n     */\n    virtual ~GenericSet() = default;\n\n    /**\n     * Method: add\n     * Usage: set.add(value);\n     * ----------------------\n     * Adds an element to this set, if it was not already there.\n     */\n    void add(const value_type& value);\n\n    /**\n     * Method: clear\n     * Usage: set.clear();\n     * -------------------\n     * Removes all elements from this set.\n     */\n    void clear();\n\n    /**\n     * Method: contains\n     * Usage: if (set.contains(value)) ...\n     * -----------------------------------\n     * Returns <code>true</code> if the specified value is in this set.\n     */\n    bool contains(const value_type& value) const;\n\n    /**\n     * Method: difference\n     * Usage: set.difference(set2);\n     * ----------------------------\n     * Removes all elements of the given other set from this set.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     * Returns a reference to this set.\n     *\n     * Note that this function modifies the current set in place rather than\n     * returning a new set. If you want a new set, consider using the - operator\n     * instead (not -=), which returns a newly created copy set.\n     *\n     * Identical in behavior to the -= operator.\n     */\n    GenericSet& difference(const GenericSet& set);\n\n    /**\n     * Method: equals\n     * Usage: if (set.equals(set2)) ...\n     * --------------------------------\n     * Returns <code>true</code> if this set contains exactly the same values\n     * as the given other set.\n     * Identical in behavior to the == operator.\n     */\n    bool equals(const GenericSet& set2) const;\n\n    /**\n     * Method: first\n     * Usage: ValueType value = set.first();\n     * -------------------------------------\n     * Returns the first value in the set in the order established by the\n     * <code>for-each</code> loop.  If the set is empty, <code>first</code>\n     * generates an error.\n     */\n    value_type first() const;\n\n    /**\n     * Method: intersect\n     * Usage: set.intersect(set2);\n     * ---------------------------\n     * Removes all elements from this set that are not contained in the given\n     * other set.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     * Returns a reference to this set.\n     *\n     * Note that this function modifies the current set in place rather than\n     * returning a new set. If you want a new set, consider using the * operator\n     * instead (not *=), which returns a newly created copy set.\n     *\n     * Identical in behavior to the *= operator.\n     */\n    GenericSet& intersect(const GenericSet& set);\n\n    /**\n     * Method: isEmpty\n     * Usage: if (set.isEmpty()) ...\n     * -----------------------------\n     * Returns <code>true</code> if this set contains no elements.\n     */\n    bool isEmpty() const;\n\n    /**\n     * Method: isSubsetOf\n     * Usage: if (set.isSubsetOf(set2)) ...\n     * ------------------------------------\n     * Implements the subset relation on sets.  It returns\n     * <code>true</code> if every element of this set is\n     * contained in <code>set2</code>.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     */\n    bool isSubsetOf(const GenericSet& set2) const;\n\n    /**\n     * Method: isSupersetOf\n     * Usage: if (set.isSupersetOf(set2)) ...\n     * --------------------------------------\n     * Implements the superset relation on sets.  It returns\n     * <code>true</code> if every element of this set is\n     * contained in <code>set2</code>.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     */\n    bool isSupersetOf(const GenericSet& set2) const;\n\n    /**\n     * Method: last\n     * Usage: ValueType value = set.last();\n     * ------------------------------------\n     * Returns the last value in the set in the order established by the\n     * <code>for-each</code> loop.  If the set is empty, generates an error.\n     */\n    value_type last() const;\n\n        /**\n     * Method: mapAll\n     * Usage: set.mapAll(fn);\n     * ----------------------\n     * Iterates through the elements of the set and calls <code>fn(value)</code>\n     * for each one.  The iteration order matches the underlying order in which\n     * the elements are stored.  For Set, this is sorted order according to the\n     * comparison function and for HashSet, this is whatever order the elements\n     * happen to be in.\n     */\n    void mapAll(std::function<void (const value_type&)> fn) const;\n\n    /**\n     * Method: remove\n     * Usage: set.remove(value);\n     * -------------------------\n     * Removes an element from this set.  If the value was not\n     * contained in the set, no error is generated and the set\n     * remains unchanged.\n     */\n    void remove(const value_type& value);\n\n    /**\n     * Method: size\n     * Usage: count = set.size();\n     * --------------------------\n     * Returns the number of elements in this set.\n     */\n    int size() const;\n\n    /**\n     * Method: toString\n     * Usage: string str = set.toString();\n     * -----------------------------------\n     * Converts the set to a printable string representation.\n     */\n    std::string toString() const;\n\n    /**\n     * Method: unionWith\n     * Usage: set.unionWith(set2);\n     * ---------------------------\n     * Adds all elements of the given other set to this set.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     * Returns a reference to this set.\n     * Identical in behavior to the += operator.\n     *\n     * Note that this function modifies the current set in place rather than\n     * returning a new set. If you want a new set, consider using the + operator\n     * instead (not +=), which returns a newly created copy set.\n     *\n     * (Implementation note: This function cannot be named 'union' because\n     * that is a C/C++ keyword.)\n     */\n    GenericSet& unionWith(const GenericSet& set);\n\n    /**\n     * Operator: ==\n     * Usage: set1 == set2\n     * -------------------\n     * Returns <code>true</code> if <code>set1</code> and <code>set2</code>\n     * contain the same elements.\n     */\n    bool operator ==(const GenericSet& set2) const;\n\n    /**\n     * Operator: !=\n     * Usage: set1 != set2\n     * -------------------\n     * Returns <code>true</code> if <code>set1</code> and <code>set2</code>\n     * are different.\n     */\n    bool operator !=(const GenericSet& set2) const;\n\n    /**\n     * Operators: <, >, <=, >=\n     * Usage: if (set1 <= set2) ...\n     * ...\n     * ----------------------------\n     * Relational operators to compare two sets.\n     * The <, >, <=, >= operators require that the value type has a < operator\n     * so that the elements can be compared pairwise.\n     *\n     * These are implemented as friend functions so that if we fully instantiate\n     * this type, we don't get errors when using relational operators.\n     */\n    template <typename Traits>\n    friend bool operator <(const GenericSet<Traits>& set1, const GenericSet<Traits>& set2);\n    template <typename Traits>\n    friend bool operator <=(const GenericSet<Traits>& set1, const GenericSet<Traits>& set2);\n    template <typename Traits>\n    friend bool operator >(const GenericSet<Traits>& set1, const GenericSet<Traits>& set2);\n    template <typename Traits>\n    friend bool operator >=(const GenericSet<Traits>& set1, const GenericSet<Traits>& set2);\n\n    /**\n     * Operator: +\n     * Usage: set1 + set2\n     *        set1 + element\n     * ---------------------\n     * Returns the union of sets <code>set1</code> and <code>set2</code>, which\n     * is the set of elements that appear in at least one of the two sets.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     * The right hand set can be replaced by an element of the value type, in\n     * which case the operator returns a new set formed by adding that element.\n     */\n    GenericSet operator +(const GenericSet& set2) const;\n    GenericSet operator +(const value_type& element) const;\n\n    /**\n     * Operator: *\n     * Usage: set1 * set2\n     * ------------------\n     * Returns the intersection of sets <code>set1</code> and <code>set2</code>,\n     * which is the set of all elements that appear in both.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     */\n    GenericSet operator *(const GenericSet& set2) const;\n\n    /**\n     * Operator: -\n     * Usage: set1 - set2\n     *        set1 - element\n     * ---------------------\n     * Returns the difference of sets <code>set1</code> and <code>set2</code>,\n     * which is all of the elements that appear in <code>set1</code> but\n     * not <code>set2</code>.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     * The right hand set can be replaced by an element of the value type, in\n     * which case the operator returns a new set formed by removing that element.\n     */\n    GenericSet operator -(const GenericSet& set2) const;\n    GenericSet operator -(const value_type& element) const;\n\n    /**\n     * Operator: +=\n     * Usage: set1 += set2;\n     *        set1 += value;\n     * ---------------------\n     * Adds all of the elements from <code>set2</code> (or the single\n     * specified value) to <code>set1</code>.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     * As a convenience, the <code>Set</code> package also overloads the comma\n     * operator so that it is possible to initialize a set like this:\n     *\n     *<pre>\n     *    Set&lt;int&gt; digits;\n     *    digits += 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;\n     *</pre>\n     */\n    GenericSet& operator +=(const GenericSet& set2);\n    GenericSet& operator +=(const value_type& value);\n\n    /**\n     * Operator: *=\n     * Usage: set1 *= set2;\n     * --------------------\n     * Removes any elements from <code>set1</code> that are not present in\n     * <code>set2</code>.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     */\n    GenericSet& operator *=(const GenericSet& set2);\n\n    /**\n     * Operator: -=\n     * Usage: set1 -= set2;\n     *        set1 -= value;\n     * ---------------------\n     * Removes the elements from <code>set2</code> (or the single\n     * specified value) from <code>set1</code>.\n     * You can also pass an initializer list such as {1, 2, 3}.\n     * As a convenience, the <code>Set</code> package also overloads the comma\n     * operator so that it is possible to remove multiple elements from a set\n     * like this:\n     *\n     *<pre>\n     *    digits -= 0, 2, 4, 6, 8;\n     *</pre>\n     *\n     * which removes the values 0, 2, 4, 6, and 8 from the set\n     * <code>digits</code>.\n     */\n    GenericSet& operator -=(const GenericSet& set2);\n    GenericSet& operator -=(const value_type& value);\n\n    /*\n     * Additional Set operations\n     * -------------------------\n     * In addition to the methods listed in this interface, the Set\n     * class supports the following operations:\n     *\n     *   - Stream I/O using the << and >> operators\n     *   - Deep copying for the copy constructor and assignment operator\n     *   - Iteration using the range-based for statement and STL iterators\n     *\n     * The iteration forms process the Set in ascending order.\n     */\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\nprivate:\n    typename SetTraits::MapType _map = SetTraits::construct();  /* Map used to store the elements    */\n    bool _removeFlag = false;                                   /* Flag to differentiate += and -=   */\n\npublic:\n    /*\n     * Hidden features\n     * ---------------\n     * The remainder of this file consists of the code required to\n     * support the comma operator, copying, and iteration.\n     *\n     * Including these methods in the public interface would make\n     * that interface more difficult to understand for the average client.\n     */\n    GenericSet& operator ,(const value_type& value) {\n        if (this->_removeFlag) {\n            this->remove(value);\n        } else {\n            this->add(value);\n        }\n        return *this;\n    }\n\n    using const_iterator = typename SetTraits::MapType::const_iterator;\n    using iterator = const_iterator;\n\n    iterator begin() const {\n        return _map.begin();\n    }\n\n    iterator end() const {\n        return _map.end();\n    }\n\n    friend int hashCode(const GenericSet& set) {\n        return hashCode(set._map);\n    }\n};\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits>::GenericSet(std::initializer_list<value_type> list)\n    : _map(SetTraits::construct()) {\n    /* Can't do addAll because that would recursively try constructing a GenericSet.\n     * Instead, directly add everything here. This becomes the focal point for\n     * all initializer_list conversions.\n     */\n    for (const auto& elem: list) {\n        add(elem);\n    }\n}\n\ntemplate <typename SetTraits>\ntemplate <typename... Args>\nGenericSet<SetTraits>::GenericSet(Args... args) : GenericSet({}, std::move(args)...) {\n    // Handled by other constructor\n}\n\ntemplate <typename SetTraits>\ntemplate <typename... Args>\nGenericSet<SetTraits>::GenericSet(std::initializer_list<value_type> list, Args... args)\n    : _map(SetTraits::construct(std::move(args)...)) {\n\n    /* Can't do addAll because that would recursively try constructing a GenericSet.\n     * Instead, directly add everything here. This becomes the focal point for\n     * all initializer_list conversions.\n     */\n    for (const auto& elem: list) {\n        add(elem);\n    }\n}\n\ntemplate <typename SetTraits>\nvoid GenericSet<SetTraits>::add(const value_type& value) {\n    _map.put(value, true);\n}\n\ntemplate <typename SetTraits>\ntypename GenericSet<SetTraits>::value_type\nGenericSet<SetTraits>::last() const {\n    if (isEmpty()) {\n        error(SetTraits::name() + \"::last: set is empty\");\n    }\n    return _map.lastKey();\n}\n\ntemplate <typename SetTraits>\nvoid GenericSet<SetTraits>::clear() {\n    _map.clear();\n}\n\ntemplate <typename SetTraits>\nbool GenericSet<SetTraits>::contains(const value_type& value) const {\n    return _map.containsKey(value);\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits>& GenericSet<SetTraits>::difference(const GenericSet<SetTraits>& set2) {\n    _map.removeAll(set2._map);\n    return *this;\n}\n\ntemplate <typename SetTraits>\nbool GenericSet<SetTraits>::equals(const GenericSet& set2) const {\n    // optimization: if literally same set, stop\n    if (this == &set2) {\n        return true;\n    }\n\n    /* We are equal if we have the same size and we're a subset of the other\n     * set.\n     */\n    if (size() != set2.size()) {\n        return false;\n    }\n    return isSubsetOf(set2);\n}\n\ntemplate <typename SetTraits>\ntypename GenericSet<SetTraits>::value_type\nGenericSet<SetTraits>::first() const {\n    if (isEmpty()) {\n        error(SetTraits::name() + \"::first: set is empty\");\n    }\n    return _map.firstKey();\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits>& GenericSet<SetTraits>::intersect(const GenericSet<SetTraits>& set2) {\n    _map.retainAll(set2._map);\n    return *this;\n}\n\ntemplate <typename SetTraits>\nbool GenericSet<SetTraits>::isEmpty() const {\n    return _map.isEmpty();\n}\n\ntemplate <typename SetTraits>\nbool GenericSet<SetTraits>::isSubsetOf(const GenericSet& set2) const {\n    for (const auto& elem: *this) {\n        if (!set2.contains(elem)) {\n            return false;\n        }\n    }\n    return true;\n}\n\ntemplate <typename SetTraits>\nbool GenericSet<SetTraits>::isSupersetOf(const GenericSet& set2) const {\n    for (const auto& value: set2) {\n        if (!contains(value)) {\n            return false;\n        }\n    }\n    return true;\n}\n\ntemplate <typename SetTraits>\nvoid GenericSet<SetTraits>::mapAll(std::function<void (const value_type &)> fn) const {\n    _map.mapAll([&](const value_type& elem, bool) {\n        fn(elem);\n    });\n}\n\ntemplate <typename SetTraits>\nvoid GenericSet<SetTraits>::remove(const value_type& value) {\n    _map.remove(value);\n}\n\ntemplate <typename SetTraits>\nint GenericSet<SetTraits>::size() const {\n    return _map.size();\n}\n\ntemplate <typename SetTraits>\nstd::string GenericSet<SetTraits>::toString() const {\n    std::ostringstream os;\n    os << *this;\n    return os.str();\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits>& GenericSet<SetTraits>::unionWith(const GenericSet<SetTraits>& set2) {\n    for (const auto& value : set2) {\n        add(value);\n    }\n    return *this;\n}\n\n\n/*\n * Implementation notes: set operators\n * -----------------------------------\n * The implementations for the set operators use iteration to walk\n * over the elements in one or both sets.\n */\ntemplate <typename SetTraits>\nbool GenericSet<SetTraits>::operator ==(const GenericSet& set2) const {\n    return equals(set2);\n}\n\ntemplate <typename SetTraits>\nbool GenericSet<SetTraits>::operator !=(const GenericSet& set2) const {\n    return !equals(set2);\n}\n\ntemplate <typename SetTraits>\nbool operator <(const GenericSet<SetTraits>& set1, const GenericSet<SetTraits>& set2) {\n    return set1._map < set2._map;\n}\n\ntemplate <typename SetTraits>\nbool operator <=(const GenericSet<SetTraits>& set1, const GenericSet<SetTraits>& set2) {\n    return set1._map <= set2._map;\n}\n\ntemplate <typename SetTraits>\nbool operator >(const GenericSet<SetTraits>& set1, const GenericSet<SetTraits>& set2) {\n    return set1._map > set2._map;\n}\n\ntemplate <typename SetTraits>\nbool operator >=(const GenericSet<SetTraits>& set1, const GenericSet<SetTraits>& set2) {\n    return set1._map >= set2._map;\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits> GenericSet<SetTraits>::operator +(const GenericSet& set2) const {\n    return GenericSet(*this).unionWith(set2);\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits> GenericSet<SetTraits>::operator +(const value_type& element) const {\n    GenericSet result = *this;\n    result.add(element);\n    return result;\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits> GenericSet<SetTraits>::operator *(const GenericSet& set2) const {\n    return GenericSet(*this).intersect(set2);\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits> GenericSet<SetTraits>::operator -(const GenericSet& set2) const {\n    return GenericSet(*this).difference(set2);\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits> GenericSet<SetTraits>::operator -(const value_type& element) const {\n    GenericSet result = *this;\n    result.remove(element);\n    return result;\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits>& GenericSet<SetTraits>::operator +=(const GenericSet& set2) {\n    _removeFlag = false;\n    return unionWith(set2);\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits>& GenericSet<SetTraits>::operator +=(const value_type& value) {\n    add(value);\n    _removeFlag = false;\n    return *this;\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits>& GenericSet<SetTraits>::operator *=(const GenericSet& set2) {\n    return intersect(set2);\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits>& GenericSet<SetTraits>::operator -=(const GenericSet& set2) {\n    _removeFlag = true;\n    return difference(set2);\n}\n\ntemplate <typename SetTraits>\nGenericSet<SetTraits>& GenericSet<SetTraits>::operator -=(const value_type& value) {\n    remove(value);\n    _removeFlag = true;\n    return *this;\n}\n\ntemplate <typename SetTraits>\nstd::ostream& operator <<(std::ostream& os, const GenericSet<SetTraits>& set) {\n    return stanfordcpplib::collections::writeCollection(os, set);\n}\n\ntemplate <typename SetTraits>\nstd::istream& operator >>(std::istream& is, GenericSet<SetTraits>& set) {\n    typename SetTraits::ValueType element;\n    return stanfordcpplib::collections::readCollection(is, set, element, /* descriptor */ SetTraits::name() + \"::operator >>\");\n}\n\n\n/*\n * Types used to automatically check whether a type is comparable using\n * the < operator and whether a type supports operator== and hashCode.\n *\n * This is used to provide better compiler diagnostics to students when\n * they try to instantiate our times incorrectly.\n *\n * Later on, when C++20 concepts are rolled out, we should consider\n * replacing this code with concepts.\n */\ntemplate <typename T>\nstruct IsLessThanComparable {\nprivate:\n    /* Use SFNIAE overloading to detect which of these two options to pick. */\n    struct Yes{};\n    struct No {};\n\n    template <typename U>\n    static Yes check(int,\n                     decltype(std::declval<U>() < std::declval<U>()) = 0);\n    template <typename U> static No  check(...);\n\npublic:\n    static constexpr bool value =\n            std::conditional<std::is_same<decltype(check<T>(0)), Yes>::value,\n                             std::true_type,\n                             std::false_type>::type::value;\n};\n\ntemplate <typename T>\nstruct IsHashable {\nprivate:\n    /* Use SFNIAE overloading to detect which of these two options to pick. */\n    struct Yes{};\n    struct No {};\n\n    template <typename U>\n    static Yes check(int,\n                     decltype(hashCode(std::declval<U>())) = 0,\n                     decltype(std::declval<U>() == std::declval<U>()) = 0);\n    template <typename U> static No  check(...);\n\npublic:\n    static constexpr bool value =\n            std::conditional<std::is_same<decltype(check<T>(0)), Yes>::value,\n                             std::true_type,\n                             std::false_type>::type::value;\n};\n\n/*\n * Returns std::less<T>, except with a nice static assertion wrapped around it to\n * make sure that in the event that T isn't comparable via <, the error message is\n * more readable.\n */\ntemplate <typename T>\nstd::function<bool (const T&, const T&)> checkedLess() {\n    static_assert(IsLessThanComparable<T>::value,\n                  \"Oops! You tried using a type as a key in our Map without making it comparable. Click this error for more details.\");\n    /*\n     * Hello CS106 students! If you got directed to this line of code in a compiler error,\n     * it probably means that you tried making a Map with a custom struct or class type\n     * as the key type or a Set with a custom struct as a value type.\n     *\n     * In order to have a type be a key type in a Map - or to have a type be a value type\n     * in a Set - it needs to have be comparable using the < operator. By default, types in C++\n     * can't be compared using the < operator, hence the error.\n     *\n     * There are two ways to fix this. The first option would simply be to not use your custom\n     * type as a key in the Map or value in a Set. This is probably the easiest option.\n     *\n     * The second way to fix this is to explicitly define an operator< function for your custom\n     * type. Here's the syntax for doing that:\n     *\n     *     bool operator< (const YourCustomType& lhs, const YourCustomType& rhs) {\n     *         using namespace stanfordcpplib::collections;\n     *         return compareTo(lhs.data1, rhs.data1,\n     *                          lhs.data2, rhs.data2,\n     *                          ...\n     *                          lhs.dataN, rhs.dataN) == -1; // -1 signals less than\n     *     }\n     *\n     * where data1, data2, ... dataN are the data members of your type. For example, if you had\n     * a custom type\n     *\n     *     struct MyType {\n     *         int myInt;\n     *         string myString;\n     *     };\n     *\n     * you would define the function\n     *\n     *     bool operator< (const MyType& lhs, const MyType& rhs) {\n     *         using namespace stanfordcpplib::collections;\n     *         return compareTo(lhs.myInt,    rhs.myInt,\n     *                          lhs.myString, rhs.myString) == -1;\n     *     }\n     *\n     * Hope this helps!\n     */\n    return std::less<T>();\n}\n\n/*\n * Utility traits type that always contains a value that's false.\n */\ntemplate <typename... Args> struct Fail {\n    static constexpr bool value = false;\n};\n\n} // namespace collections\n} // namespace stanfordcpplib\n\n#endif // _collections_h\n"
  },
  {
    "path": "Library/collections/dawglexicon.cpp",
    "content": "/*\n * File: dawglexicon.cpp\n * ---------------------\n * A lexicon is a word list. This lexicon implementation is\n * backed by a DAWG (directed acyclic word graph) and loads from a\n * binary file format that is super compact and nearly\n * instantaneous to read. Neat!\n *\n * The DAWG idea comes from an article by Appel & Jacobson, CACM May 1988.\n * This lexicon implementation only has the code to load/search the DAWG.\n * The DAWG builder code is quite a bit more intricate, ask me (Julie Z)\n * if you want to see it or are curious to know more!\n *\n * The DAWG internal structure is an array of edges. Each edge is represented by\n * one 32-bit valued, apportioned as a unsigned bit field:\n *  - letterOrd: 5 bits indicate the character on this transition\n *               (expressed as integer from 1 to 26)\n *  - isWord: 1 this bit indicates whether path to this edge forms word\n *  - lastChild: 1 this bit marks the last edge in a sequence of childeren\n *  - children: 24 remaining bits are index within edge array where children\n *                of this edge start\n *\n * Edge data is stored on disk in binary format. It uses byteswapto correct when\n * endianness of file does not match endianness of system.\n */\n\n#include \"dawglexicon.h\"\n#include <fstream>\n#include \"splversion.h\"\n#include \"filelib.h\"\n#include <cstring>\n\nDawgLexicon::DawgLexicon() :\n        _edges(nullptr),\n        _edgeCount(0),\n        _startIndex(0),\n        _wordCount(0) {\n    readBinaryFile(getLibraryPathForResource(\"EnglishWords.dat\"));\n}\n\nDawgLexicon::DawgLexicon(const std::string& filename) :\n        _edges(nullptr),\n        _edgeCount(0),\n        _startIndex(0),\n        _wordCount(0) {\n    if (!filename.empty()) readBinaryFile(filename);\n}\n\nDawgLexicon::DawgLexicon(const DawgLexicon& src) :\n        _edges(nullptr),\n        _edgeCount(0),\n        _startIndex(0),\n        _wordCount(0) {\n    deepCopy(src);\n}\n\nDawgLexicon::~DawgLexicon() {\n    if (_edges) {\n        delete[] _edges;\n    }\n}\n\nvoid DawgLexicon::deepCopy(const DawgLexicon& src) {\n    if (!src._edges) {\n        _edges = nullptr;\n    } else {\n        _edgeCount = src._edgeCount;\n        _edges = new Edge[src._edgeCount];\n        memcpy(_edges, src._edges, sizeof(Edge)*src._edgeCount);\n    }\n    _startIndex = src._startIndex;\n    _wordCount = src._wordCount;\n}\n\nDawgLexicon& DawgLexicon::operator =(const DawgLexicon& src) {\n    if (this != &src) {\n        if (_edges) {\n            delete[] _edges;\n        }\n        deepCopy(src);\n    }\n    return *this;\n}\n\nint DawgLexicon::size() const {\n    return _wordCount;\n}\n\nvoid DawgLexicon::tallyWordCount(Edge* cur) {\n    if (cur != nullptr) {\n        while (true) { // iterate over sequence, recursively explore children\n            if (cur->isWord) _wordCount++;\n            tallyWordCount(edgeForIndex(cur->children));\n            if (cur->lastChild) break;\n            cur++;\n        }\n    }\n}\n\nbool DawgLexicon::contains(const std::string& word) const {\n    Edge* end = traceToEnd(word);\n    return end != nullptr && end->isWord;\n}\n\nbool DawgLexicon::containsPrefix(const std::string& prefix) const {\n    return prefix.empty() || traceToEnd(prefix) != nullptr;\n}\n\nDawgLexicon::Edge* DawgLexicon::edgeForIndex(int index) const {\n    if (index == 0 || _edges == nullptr) {\n     return nullptr;\n    }\n    if (index < 0 || index >= _edgeCount) {\n        error(\"DawgLexicon attempt to access edge at index that is out of range!\");\n    }\n    return &_edges[index];\n}\n\n/*\n * Implementation notes: findEdgeForChar\n * -------------------------------------\n * Iterate over sequence of children to find one that\n * matches the given char.  Returns nullptr if we get to\n * last child without finding a match (thus no such\n * child edge exists).\n */\nDawgLexicon::Edge* DawgLexicon::findEdgeForChar(Edge* children, char ch) const {\n    char ordToMatch = tolower(charToOrd(ch));\n    Edge* curEdge = children;\n    while (true) {\n        if (!curEdge) {\n            return nullptr;\n        }\n        if (curEdge->letterOrd == ordToMatch) {\n            return curEdge;\n        }\n        if (curEdge->lastChild) {\n            return nullptr;\n        }\n        curEdge++;\n    }\n}\n\n\n/*\n * Implementation notes: traceToEnd\n * --------------------------------\n * Given a string, trace out path through the DAWG edge-by-edge.\n * If path exists, return last edge; otherwise return nullptr.\n */\nDawgLexicon::Edge* DawgLexicon::traceToEnd(const std::string& s) const {\n    Edge *children = edgeForIndex(_startIndex), *cur = nullptr;\n    for (char ch : s) {\n        cur = findEdgeForChar(children, ch);\n        if (!cur) return nullptr;\n        children = edgeForIndex(cur->children);\n    }\n    return cur;\n}\n\nenum Endian { LittleEndian = 0, BigEndian = 1 };\n\n/*\n * Detemrine endianness of this system. (don't rely on\n * compiler flags, just confirm for real!)\n */\nstatic Endian determineSystemEndian() {\n    uint32_t val = 0x12345678;\n    uint8_t low = *(char *)&val;\n    if (low == 0x78) return LittleEndian;\n    if (low == 0x12) return BigEndian;\n    error(\"cannot determine endianness\");\n}\n\n/*\n * Byte swap a 4-byte val from big to little endian (or vice versa)\n */\nstatic uint32_t byteswap(uint32_t arg) {\n    uint32_t result = ((arg & 0xff000000) >> 24) |\n                      ((arg & 0x00ff0000) >>  8) |\n                      ((arg & 0x0000ff00) <<  8) |\n                      ((arg & 0x000000ff) << 24);\n    return result;\n}\n\n/*\n * Implementation notes: readBinaryFile\n * ------------------------------------\n * The binary lexicon file format must follow this pattern:\n * DAWG:<startnode index>:<num bytes>:<num bytes block of edge data>\n */\nvoid DawgLexicon::readBinaryFile(const std::string& filename) {\n    std::string partial = std::string(__FUNCTION__) + \" error reading from \" + filename;\n\n    std::ifstream input(filename, std::ios::in | std::ios::binary);\n    if (input.fail()) {\n         error(std::string(__FUNCTION__) + \": unable to open file \" + filename);\n    }\n    int tagLen = 6;\n    char tag[tagLen];\n    input.read(tag, tagLen);\n    bool expected = strncmp(tag,  \"DAWGLE\", tagLen) == 0 || strncmp(tag, \"DAWGBE\", tagLen) == 0;\n    if (input.fail() || !expected) {\n        error(partial + \" (invalid tag)\");\n    }\n    int fileEndian = strncmp(\"LE\", &tag[4], 2) == 0 ? LittleEndian : BigEndian;\n    int systemEndian = determineSystemEndian();\n    bool needSwap = (systemEndian != fileEndian);\n\n    char bracket[2];\n    input >> bracket[0] >> _edgeCount >> bracket[1];\n    if (input.fail() ||  bracket[0] != '[' || bracket[1] != ']') {\n        error(partial + \" (invalid edge count format)\");\n    }\n    input >> bracket[0] >> _startIndex >> bracket[1];\n    if (input.fail() ||  bracket[0] != '[' || bracket[1] != ']') {\n        error(partial + \" (invalid start index format)\");\n    }\n\n    int totalFileSize = fileSize(filename);\n    int numBytesRemaining = totalFileSize - (int)input.tellg();\n    if (_edgeCount*sizeof(Edge) != numBytesRemaining) {\n        error(partial + \" (invalid file size)\");\n    }\n    if ( _startIndex >= _edgeCount) {\n        error(partial + \" (invalid start index)\");\n    }\n\n    _edges = new Edge[_edgeCount];\n    input.read((char*) _edges, _edgeCount*sizeof(Edge));\n    int numRead = input.gcount();\n    if ((input.fail() && !input.eof()) || (numRead != _edgeCount*sizeof(Edge))) {\n        error(partial + \" (invalid edges)\");\n    }\n\n    uint32_t* cur = reinterpret_cast<uint32_t*>(_edges);\n    for (int i = 0; i < _edgeCount; i++) {\n        if (needSwap) cur[i] = byteswap(cur[i]);\n        if (_edges[i].letterOrd > 26) error(partial + \" (invalid edge letter)\");\n        if (_edges[i].children >= _edgeCount) error(partial + \" (invalid edge children)\");\n    }\n    _wordCount = 0;\n    tallyWordCount(edgeForIndex(_startIndex));\n}\n\n\n/* * * Iterator support * * */\n\nvoid DawgLexicon::iterator::advanceToNextEdge() {\n    Edge *ep = _curEdge;\n    if (ep->children == 0) {\n        while (ep && ep->lastChild) {\n            if (_pathToCurEdge.isEmpty()) {\n                _curEdge = nullptr;\n                return;\n            } else {\n                ep = _pathToCurEdge.pop();\n                _curPrefix.resize(_curPrefix.length() - 1);\n            }\n        }\n        _curEdge = ep + 1;\n    } else {\n        _pathToCurEdge.push(ep);\n        _curPrefix.push_back(_lex->ordToChar(ep->letterOrd));\n        _curEdge = _lex->edgeForIndex(ep->children);\n    }\n}\n\nvoid DawgLexicon::iterator::advanceToNextWordInDawg() {\n    if (!_curEdge) {\n        _curEdge = _lex->edgeForIndex(_lex->_startIndex);\n    } else {\n        advanceToNextEdge();\n    }\n    while (_curEdge && !_curEdge->isWord) {\n        advanceToNextEdge();\n    }\n}\n"
  },
  {
    "path": "Library/collections/dawglexicon.h",
    "content": "/*\n * File: dawglexicon.h\n * -------------------\n * This file exports the <code>DawgLexicon</code> class, which is a\n * compact structure for storing a list of words.\n */\n\n#pragma once\n\n#include <string>\n#include \"stack.h\"\n\n/**\n * This class is used to represent a <b><i>lexicon,</i></b> or word list.\n * The main difference between a lexicon and a dictionary is that\n * a lexicon does not provide any mechanism for storing definitions;\n * the lexicon contains only words, with no associated information.\n * It is therefore similar to a set of strings, but with a more\n * space-efficient internal representation.  The <code>DawgLexicon</code>\n * class supports efficient lookup operations for words and prefixes.\n */\n\nclass DawgLexicon {\npublic:\n    /**\n     * Initializes a new lexicon, populated with word list from\n     * the EnglishWords data file included with the CS106 library.\n     */\n    DawgLexicon();\n\n    /**\n     * Initializes a new lexicon, reading in the contents of the lexicon from\n     * the named data file. The data file format is a space-efficient\n     * precompiled binary representation.\n     */\n    DawgLexicon(const std::string& filename);\n\n    /**\n     * The destructor deallocates any storage associated with the lexicon.\n     */\n    virtual ~DawgLexicon();\n\n    /**\n     * Returns <code>true</code> if <code>word</code> is contained in the\n     * lexicon.  In the <code>DawgLexicon</code> class, the case of letters is\n     * ignored, so \"Zoo\" is the same as \"ZOO\" or \"zoo\".\n     */\n    bool contains(const std::string& word) const;\n\n    /**\n     * Returns true if any words in the lexicon begin with <code>prefix</code>.\n     * Like <code>containsWord</code>, this method ignores the case of letters\n     * so that \"MO\" is a prefix of \"monkey\" or \"Monday\".\n     */\n    bool containsPrefix(const std::string& prefix) const;\n\n    /**\n     * Returns the number of words contained in the lexicon.\n     */\n    int size() const;\n\n    /*\n     * Additional DawgLexicon operations\n     * ---------------------------------\n     * In addition to the methods listed in this interface, the DawgLexicon\n     * class supports the following operations:\n     *\n     *   - Deep copying for the copy constructor and assignment operator\n     *   - Iteration using the range-based for statement and STL iterators\n     *\n     * All iteration is guaranteed to proceed in alphabetical order.  All\n     * words in the lexicon are stored in lowercase.\n     */\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\nprivate:\n    struct Edge {\n        uint32_t letterOrd:5;\n        uint32_t lastChild:1;\n        uint32_t isWord:1;\n        uint32_t unused:1;\n        uint32_t children:24;\n    };\n    Edge *_edges;\n    int _edgeCount, _startIndex, _wordCount;\n\npublic:\n    /*\n     * Deep copying support\n     * --------------------\n     * This copy constructor and operator= are defined to make a\n     * deep copy, making it possible to pass/return lexicons by value\n     * and assign from one lexicon to another.  The entire contents of\n     * the lexicon, including all words, are copied.  Making copies is\n     * generally avoided because of the expense and thus, lexicons are\n     * typically passed by reference.  When a copy is needed, these\n     * operations are supported.\n     */\n    DawgLexicon(const DawgLexicon& src);\n    DawgLexicon& operator =(const DawgLexicon& src);\n\n    /*\n     * Iterator support\n     * ----------------\n     * The classes in the StanfordCPPLib collection implement input\n     * iterators so that they work symmetrically with respect to the\n     * corresponding STL classes.\n     */\n    class iterator {\n    public:\n        using iterator_category = std::input_iterator_tag;\n        using value_type = std::string;\n        using difference_type = int;\n        using pointer = std::string*;\n        using reference = std::string&;\n\n    private:\n        const DawgLexicon* _lex;\n        int _curIndex;\n        std::string _curPrefix;\n        std::string _tmpWord;\n        Edge* _curEdge;\n        Stack<Edge*> _pathToCurEdge;\n\n        void advanceToNextWordInDawg();\n        void advanceToNextEdge();\n\n    public:\n        iterator() : _lex(nullptr), _curIndex(0), _curEdge(nullptr) {\n            /* empty */\n        }\n\n        iterator(const DawgLexicon* theLP, bool endFlag) {\n            this->_lex = theLP;\n            if (endFlag) {\n                _curIndex = _lex->size();\n            } else {\n                _curIndex = 0;\n                _curEdge = nullptr;\n                _curPrefix = \"\";\n                advanceToNextWordInDawg();\n            }\n        }\n\n        iterator(const iterator& it) {\n            _lex = it._lex;\n            _curIndex = it._curIndex;\n            _curPrefix = it._curPrefix;\n            _curEdge = it._curEdge;\n            _pathToCurEdge = it._pathToCurEdge;\n        }\n\n        iterator& operator ++() {\n            advanceToNextWordInDawg();\n            _curIndex++;\n            return *this;\n        }\n\n        iterator operator ++(int) {\n            iterator copy(*this);\n            operator++();\n            return copy;\n        }\n\n        bool operator ==(const iterator& rhs) {\n            return _lex == rhs._lex && _curIndex == rhs._curIndex;\n        }\n\n        bool operator !=(const iterator& rhs) {\n            return !(*this == rhs);\n        }\n\n        std::string operator *() {\n            return _curPrefix + _lex->ordToChar(_curEdge->letterOrd);\n        }\n\n        std::string* operator ->() {\n            _tmpWord = _curPrefix + _lex->ordToChar(_curEdge->letterOrd);\n            return &_tmpWord;\n        }\n    };\n\n    /**\n     * Returns an iterator positioned at the first word in the lexicon.\n     */\n    iterator begin() const {\n        return iterator(this, /* end */ false);\n    }\n\n    /**\n     * Returns an iterator positioned at the last word in the lexicon.\n     */\n    iterator end() const {\n        return iterator(this, /* end */ true);\n    }\n\nprivate:\n    Edge *edgeForIndex(int index) const;\n    Edge* findEdgeForChar(Edge*, char) const;\n    Edge* traceToEnd(const std::string&) const;\n    void readBinaryFile(const std::string&);\n    void deepCopy(const DawgLexicon&);\n    void tallyWordCount(Edge*);\n\n    unsigned int charToOrd(char ch) const {\n        return ((unsigned int)(tolower(ch) - 'a' + 1));\n    }\n\n    char ordToChar(unsigned int ord) const {\n        return ((char)(ord - 1 + 'a'));\n    }\n};\n\n\n"
  },
  {
    "path": "Library/collections/deque.h",
    "content": "/*\n * File: deque.h\n * -------------\n * This file exports the <code>Deque</code> class, a collection\n * in which values can be added and removed from the front or back.\n * It combines much of the functionality of a stack and a queue.\n */\n\n#ifndef _deque_h\n#define _deque_h\n\n#include <deque>\n#include <initializer_list>\n\n#include \"collections.h\"\n#include \"error.h\"\n#include \"hashcode.h\"\n\n/*\n * Class: Deque<ValueType>\n * -----------------------\n * This class models a linear structure called a <b><i>deque</i></b>\n * in which values can be added and removed at either end.\n * This discipline allows first-in/first-out (FIFO) and/or\n * last-in/first-out (LIFO) behavior. That is the defining\n * feature of deques.\n */\ntemplate <typename ValueType>\nclass Deque {\npublic:\n    /*\n     * Constructor: Deque\n     * Usage: Deque<ValueType> deque;\n     * ------------------------------\n     * Initializes a new empty deque.\n     */\n    Deque() = default;\n\n    /*\n     * Constructor: Deque\n     * Usage: Deque<ValueType> queue {1, 2, 3};\n     * ----------------------------------------\n     * Initializes a new deque that stores the given elements from front-back.\n     */\n    Deque(std::initializer_list<ValueType> list);\n\n    /*\n     * Destructor: ~Deque\n     * ------------------\n     * Frees any heap storage associated with this deque.\n     */\n    virtual ~Deque() = default;\n\n    /*\n     * Method: clear\n     * Usage: deque.clear();\n     * ---------------------\n     * Removes all elements from the deque.\n     */\n    void clear();\n\n    /*\n     * Method: dequeueBack, dequeueFront\n     * Usage: ValueType first = deque.dequeueFront();\n     * ----------------------------------------------\n     * Removes and returns the frontmost/backmost item in the deque.\n     */\n    ValueType dequeueBack();\n    ValueType dequeueFront();\n\n    /*\n     * Method: enqueueBack, enqueueFront\n     * Usage: deque.enqueueBack(value);\n     * --------------------------------\n     * Adds <code>value</code> to the front/back of the deque.\n     */\n    void enqueueBack(const ValueType& value);\n    void enqueueFront(const ValueType& value);\n\n    /*\n     * Method: equals\n     * Usage: if (deque.equals(deque2)) ...\n     * ------------------------------------\n     * Compares two deques for equality.\n     * Returns <code>true</code> if this deque contains exactly the same\n     * values as the given other deque.\n     * Identical in behavior to the == operator.\n     */\n    bool equals(const Deque<ValueType>& deque2) const;\n\n    /*\n     * Method: isEmpty\n     * Usage: if (deque.isEmpty()) ...\n     * -------------------------------\n     * Returns <code>true</code> if the deque contains no elements.\n     */\n    bool isEmpty() const;\n\n    /*\n     * Method: peekBack, peekFront\n     * Usage: ValueType first = deque.peekFront();\n     * -------------------------------------------\n     * Returns the frontmost/lastmost value in the deque, without removing it.\n     */\n    const ValueType& peekBack() const;\n    const ValueType& peekFront() const;\n\n    /*\n     * Method: size\n     * Usage: int n = deque.size();\n     * ----------------------------\n     * Returns the number of values in the deque.\n     */\n    int size() const;\n\n    /*\n     * Method: toString\n     * Usage: string str = deque.toString();\n     * -------------------------------------\n     * Converts the deque to a printable string representation.\n     */\n    std::string toString() const;\n\n    /*\n     * Operators: ==, !=, <, >, <=, >=\n     * Usage: if (deque1 == deque2) ...\n     * Usage: if (deque1 < deque2) ...\n     * ...\n     * --------------------------------\n     * Relational operators to compare two deques.\n     * The ==, != operators require that the ValueType has a == operator\n     * so that the elements can be tested for equality.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     */\n    bool operator ==(const Deque& deque2) const;\n    bool operator !=(const Deque& deque2) const;\n    bool operator <(const Deque& deque2) const;\n    bool operator <=(const Deque& deque2) const;\n    bool operator >(const Deque& deque2) const;\n    bool operator >=(const Deque& deque2) const;\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\n    template <typename T>\n    friend int hashCode(const Deque<T>& s);\n\n    template <typename T>\n    friend std::ostream& operator <<(std::ostream& os, const Deque<T>& deque);\n\nprivate:\n    // Instance variables\n    std::deque<ValueType> _elements;\n    stanfordcpplib::collections::VersionTracker _version;\n\npublic:\n\n    using iterator = stanfordcpplib::collections::CheckedIterator<typename std::deque<ValueType>::iterator>;\n    using const_iterator = stanfordcpplib::collections::CheckedIterator<typename std::deque<ValueType>::const_iterator>;\n\n    iterator begin();\n    iterator end();\n    const_iterator begin() const;\n    const_iterator end() const;\n};\n\ntemplate <typename ValueType>\nDeque<ValueType>::Deque(std::initializer_list<ValueType> list) : _elements(list) {\n\n}\ntemplate <typename ValueType>\nvoid Deque<ValueType>::clear() {\n    _elements.clear();\n    _version.update();\n}\n\n/*\n * Implementation notes: dequeue, peek\n * -----------------------------------\n * These methods must check for an empty deque and report an error\n * if there is no first element.\n */\n\ntemplate <typename ValueType>\nValueType Deque<ValueType>::dequeueBack() {\n    if (isEmpty()) {\n        error(\"Deque::dequeueBack: Attempting to dequeue from an empty deque\");\n    }\n    auto result = _elements.back();\n    _elements.pop_back();\n    _version.update();\n    return result;\n}\n\ntemplate <typename ValueType>\nValueType Deque<ValueType>::dequeueFront() {\n    if (isEmpty()) {\n        error(\"Deque::dequeueFront: Attempting to dequeue from an empty deque\");\n    }\n    auto result = _elements.front();\n    _elements.pop_front();\n    _version.update();\n    return result;\n}\n\ntemplate <typename ValueType>\nvoid Deque<ValueType>::enqueueBack(const ValueType& value) {\n    _elements.push_back(value);\n    _version.update();\n}\n\ntemplate <typename ValueType>\nvoid Deque<ValueType>::enqueueFront(const ValueType& value) {\n    _elements.push_front(value);\n    _version.update();\n}\n\ntemplate <typename ValueType>\nbool Deque<ValueType>::equals(const Deque<ValueType>& deque2) const {\n    return _elements == deque2._elements;\n}\n\ntemplate <typename ValueType>\nbool Deque<ValueType>::isEmpty() const {\n    return _elements.empty();\n}\n\ntemplate <typename ValueType>\nconst ValueType& Deque<ValueType>::peekBack() const {\n    if (isEmpty()) {\n        error(\"Deque::peekBack: Attempting to peek at an empty deque\");\n    }\n    return _elements.back();\n}\n\ntemplate <typename ValueType>\nconst ValueType& Deque<ValueType>::peekFront() const {\n    if (isEmpty()) {\n        error(\"Deque::peekFront: Attempting to peek at an empty deque\");\n    }\n    return _elements.front();\n}\n\ntemplate <typename ValueType>\nint Deque<ValueType>::size() const {\n    return _elements.size();\n}\n\ntemplate <typename ValueType>\nstd::string Deque<ValueType>::toString() const {\n    std::ostringstream os;\n    os << *this;\n    return os.str();\n}\n\ntemplate <typename ValueType>\nbool Deque<ValueType>::operator ==(const Deque& deque2) const {\n    return equals(deque2);\n}\n\ntemplate <typename ValueType>\nbool Deque<ValueType>::operator !=(const Deque& deque2) const {\n    return !equals(deque2);\n}\n\ntemplate <typename ValueType>\nbool Deque<ValueType>::operator <(const Deque& deque2) const {\n    return stanfordcpplib::collections::compare(_elements, deque2._elements) < 0;\n}\n\ntemplate <typename ValueType>\nbool Deque<ValueType>::operator <=(const Deque& deque2) const {\n    return stanfordcpplib::collections::compare(_elements, deque2._elements) <= 0;\n}\n\ntemplate <typename ValueType>\nbool Deque<ValueType>::operator >(const Deque& deque2) const {\n    return stanfordcpplib::collections::compare(_elements, deque2._elements) > 0;\n}\n\ntemplate <typename ValueType>\nbool Deque<ValueType>::operator >=(const Deque& deque2) const {\n    return stanfordcpplib::collections::compare(_elements, deque2._elements) >= 0;\n}\n\ntemplate <typename ValueType>\nstd::ostream& operator <<(std::ostream& os, const Deque<ValueType>& deque) {\n    return stanfordcpplib::collections::writeCollection(os, deque);\n}\n\ntemplate <typename ValueType>\n    void readOne(Deque<ValueType>& deque, const ValueType& value)\n        { deque.enqueueBack(value); }\n\ntemplate <typename ValueType>\nstd::istream& operator >>(std::istream& is, Deque<ValueType>& deque) {\n    ValueType element;\n    return stanfordcpplib::collections::readCollection(is, deque, element, /* descriptor */ \"Deque::operator >>\", readOne<ValueType>);\n}\n\ntemplate <typename ValueType>\ntypename Deque<ValueType>::iterator Deque<ValueType>::begin() {\n    return { &_version, _elements.begin(), _elements };\n}\ntemplate <typename ValueType>\ntypename Deque<ValueType>::const_iterator Deque<ValueType>::begin() const {\n    return { &_version, _elements.begin(), _elements };\n}\n\ntemplate <typename ValueType>\ntypename Deque<ValueType>::iterator Deque<ValueType>::end() {\n    return { &_version, _elements.end(), _elements };\n}\ntemplate <typename ValueType>\ntypename Deque<ValueType>::const_iterator Deque<ValueType>::end() const {\n    return { &_version, _elements.end(), _elements };\n}\n\n/*\n * Template hash function for deques.\n * Requires the element type in the deque to have a hashCode function.\n */\ntemplate <typename T>\nint hashCode(const Deque<T>& deq) {\n    return stanfordcpplib::collections::hashCodeCollection(deq);\n}\n\n#endif // _deque_h\n"
  },
  {
    "path": "Library/collections/graph.h",
    "content": "/*\n * File: graph.h\n * -------------\n * This file exports a parameterized Graph class used to represent graphs,\n * which consist of a set of nodes (vertices) and a set of arcs (edges).\n */\n\n#ifndef _graph_h\n#define _graph_h\n\n#include <string>\n\n#include \"collections.h\"\n#include \"error.h\"\n#include \"hashcode.h\"\n#include \"map.h\"\n#include \"set.h\"\n#include \"strlib.h\"\n#include \"tokenscanner.h\"\n\n/**\n * This class represents a graph with the specified node and arc types.\n * The <code>NodeType</code> and <code>ArcType</code> parameters indicate\n * the structure type or class used for nodes and arcs, respectively.\n * These types can contain any fields or methods required by the client,\n * but must contain the following fields required by the <code>Graph</code>\n * package itself:\n *\n * <p>The <code>NodeType</code> definition must include:\n * <ul>\n *   <li>A <code>string</code> field called <code>name</code>\n *   <li>A <code>Set&lt;ArcType *&gt;</code> field called <code>arcs</code>\n * </ul>\n *\n * <p>The <code>ArcType</code> definition must include:\n * <ul>\n *   <li>A <code>NodeType *</code> field called <code>start</code>\n *   <li>A <code>NodeType *</code> field called <code>finish</code>\n * </ul>\n */\ntemplate <typename NodeType, typename ArcType>\nclass Graph {\npublic:\n    /**\n     * Creates an empty graph.\n     * @bigoh O(1)\n     */\n    Graph();\n\n    /**\n     * Frees the internal storage allocated to represent the graph.\n     * @bigoh O(V + E)\n     */\n    virtual ~Graph();\n\n    /**\n     * Adds a directed arc to the graph from node n1 to n2.\n     * If either node is not found in the graph, said node will be added to the graph.\n     * Returns a pointer to the arc in case the client needs to capture this value.\n     * @bigoh O(log V + log E)\n     */\n    ArcType* addArc(const std::string& n1, const std::string& n2);\n\n    /**\n     * Adds a directed arc to the graph from node n1 to n2.\n     * If either node is not found in the graph, said node will be added to the graph.\n     * Returns a pointer to the arc in case the client needs to capture this value.\n     *\n     * @throw ErrorException if any pointer passed is null\n     * @bigoh O(log V + log E)\n     */\n    ArcType* addArc(NodeType* n1, NodeType* n2);\n\n    /**\n     * Adds the given arc to the graph.\n     * If the start/finish nodes passed are not already part of the graph,\n     * they are added to the graph.\n     * Returns a pointer to the arc in case the client needs to capture this value.\n     *\n     * Memory management: Once you hand me this ArcType* pointer, our code owns it.\n     * We will delete/free it when done with it.\n     * You do not need to (and should not) free it yourself.\n     *\n     * @throw ErrorException if any pointer passed is null\n     * @bigoh O(log V + log E)\n     */\n    ArcType* addArc(ArcType* arc);\n\n    /**\n     * Adds a node to the graph.  The first version of this method\n     * creates a new node of the appropriate type and initializes its\n     * fields; the second assumes that the client has already created\n     * the node and simply adds it to the graph.\n     * Returns a pointer to the node.\n     * If a node with the given name is already present, does nothing.\n     *\n     * Memory management: Once you hand me this NodeType* pointer, our code owns it.\n     * We will delete/free it when done with it.\n     * You do not need to (and should not) free it yourself.\n     *\n     * @throw ErrorException if any pointer passed is null\n     * @bigoh O(log V)\n     */\n    NodeType* addNode(const std::string& name);\n\n    /**\n     * Adds a node to the graph.\n     * This version assumes that the client has already created the node structure\n     * and simply adds it to the graph.\n     * Returns a pointer to the node.\n     * If a node with the given name is already present, does nothing.\n     *\n     * Memory management: Once you hand me this NodeType* pointer, our code owns it.\n     * We will delete/free it when done with it.\n     * You do not need to (and should not) free it yourself.\n     *\n     * @throw ErrorException if any pointer passed is null\n     * @bigoh O(log V)\n     */\n    NodeType* addNode(NodeType* node);\n\n    /**\n     * Returns the number of arcs in the graph.\n     * @bigoh O(1)\n     */\n    int arcCount() const;\n\n    /**\n     * Returns the last node in the graph in the order as would be returned by\n     * a for-each loop or iterator.\n     * @throw ErrorException if the graph is empty\n     * @bigoh O(1)\n     */\n    NodeType* back() const;\n\n    /**\n     * Reinitializes the graph to be empty, removing all nodes and arcs\n     * and freeing any heap storage used by their corresponding internal structures.\n     * @bigoh O(V + E)\n     */\n    void clear();\n\n    /**\n     * Removes all arcs from the graph, freeing the heap storage used by their\n     * corresponding internal structures. The graph's nodes remain intact.\n     * @bigoh O(E)\n     */\n    void clearArcs();\n\n    /**\n     * Removes all arcs from the graph that start from the given node,\n     * freeing the heap storage used by their corresponding internal structures.\n     * The graph's nodes remain intact.\n     * If the given node pointer is null or not found in the graph, has no effect.\n     * @bigoh O(log V + E)\n     */\n    void clearArcs(NodeType* node);\n\n    /**\n     * Removes all arcs from the graph that start from the given node,\n     * freeing the heap storage used by their corresponding internal structures.\n     * The graph's nodes remain intact.\n     * If the given node is not found in the graph, has no effect.\n     * @bigoh O(E log E)\n     */\n    void clearArcs(const std::string& name);\n\n    /**\n     * Returns true if there exists an arc directly between the given two nodes.\n     * If either node is null or is not contained in this graph, returns false.\n     * @bigoh O(log E)\n     */\n    bool containsArc(NodeType* node1, NodeType* node2) const;\n\n    /**\n     * Returns true if there exists an arc directly between the given two nodes.\n     * If either node is not contained in this graph, returns false.\n     * @bigoh O(log E)\n     */\n    bool containsArc(const std::string& node1, const std::string& node2) const;\n\n    /**\n     * Returns true if the given arc exists in this graph.\n     * If the given arc is null or either of its nodes are not contained in\n     * this graph, returns false.\n     * @bigoh O(log E)\n     */\n    bool containsArc(ArcType* arc) const;\n\n    /**\n     * Returns true if there exists a node in this graph with the given name.\n     * @bigoh O(log V)\n     */\n    bool containsNode(const std::string& name) const;\n\n    /**\n     * Returns true if the given node is part of this graph.\n     * If the pointer passed is null, returns false.\n     * @bigoh O(log V)\n     */\n    bool containsNode(NodeType* node) const;\n\n    /**\n     * Compares two graphs for equality.\n     * Returns <code>true</code> if this graph contains exactly the same\n     * nodes, arcs, and connections as the given other graph.\n     * Identical in behavior to the == operator.\n     * @bigoh O(V log V + E log E)\n     */\n    bool equals(const Graph<NodeType, ArcType>& graph2) const;\n\n    /**\n     * Returns the first node in the graph in the order as would be returned by\n     * a for-each loop or iterator.\n     * @throw ErrorException if the graph is empty\n     * @bigoh O(1)\n     */\n    NodeType* front() const;\n\n    /**\n     * Returns the arc, if any, from node1 to node2.\n     * If multiple arcs exist between the given two nodes, which is returned is unspecified.\n     * If either pointer passed is null or no such arc exists, returns a null pointer.\n     * @bigoh O(log V + log E)\n     */\n    ArcType* getArc(NodeType* node1, NodeType* node2) const;\n\n    /**\n     * Returns the arc, if any, from node1 to node2.\n     * If multiple arcs exist between the given two nodes, which is returned is unspecified.\n     * If no such arc exists, returns a null pointer.\n     * @bigoh O(log V + log E)\n     */\n    ArcType* getArc(const std::string& node1, const std::string& node2) const;\n\n    /**\n     * Returns the set of all arcs in the graph.\n     * @bigoh O(1)\n     */\n    const Set<ArcType*>& getArcSet() const;\n\n    /**\n     * Returns the set of all arcs that start at the specified node,\n     * indicated as a pointer to its node structure.\n     * If the pointer passed is null or the given node is not found in the graph,\n     * returns an empty set.\n     * @bigoh O(1)\n     */\n    const Set<ArcType*>& getArcSet(NodeType* node) const;\n\n    /**\n     * Returns the set of all arcs that start at the specified node.\n     * If the given node is not found in the graph, returns an empty set.\n     * @bigoh O(1)\n     */\n    const Set<ArcType*>& getArcSet(const std::string& name) const;\n\n    /**\n     * Returns the set of outbound arcs to the given node from other nodes.\n     * In other words, getInverseArcSet(n1) is the set of all nodes n2\n     * such that there exists an arc E starting from n2 and ending at n1.\n     *\n     * If any pointer passed is null, or if the given node is not found\n     * in this graph, returns an empty set.\n     * @bigoh O(E)\n     */\n    const Set<ArcType*> getInverseArcSet(NodeType* node) const;\n\n    /**\n     * Returns the set of outbound arcs to the given node from other nodes.\n     * In other words, getInverseArcSet(n1) is the set of all nodes n2\n     * such that there exists an arc E starting from n2 and ending at n1.\n     *\n     * If the given node is not found in this graph, returns an empty set.\n     * @bigoh O(E)\n     */\n    const Set<ArcType*> getInverseArcSet(const std::string& name) const;\n\n    /**\n     * Returns the set of strings of names of nodes that are neighbors of the\n     * given node.\n     * In other words, getInverseNeighborNames(n1) is the set of all strings n2\n     * such that there exists an arc E starting from n2 and ending at n1.\n     *\n     * If any pointer passed is null, or if the given node is not found\n     * in this graph, returns an empty set.\n     * @bigoh O(E)\n     */\n    Set<std::string> getInverseNeighborNames(NodeType* node) const;\n\n    /**\n     * Returns the set of strings of names of nodes that are neighbors of the\n     * given node.\n     * In other words, getInverseNeighborNames(n1) is the set of all strings n2\n     * such that there exists an arc E starting from n2 and ending at n1.\n     *\n     * If the given node is not found in this graph, returns an empty set.\n     * @bigoh O(E)\n     */\n    Set<std::string> getInverseNeighborNames(const std::string& node) const;\n\n    /**\n     * Returns the set of nodes that are neighbors of the specified node.\n     * In other words, getInverseNeighbors(n1) is the set of all nodes n2\n     * such that there exists an arc E starting from n2 and ending at n1.\n     *\n     * If any pointer passed is null, or if the given node is not found\n     * in this graph, returns an empty set.\n     * @bigoh O(E)\n     */\n    Set<NodeType*> getInverseNeighbors(NodeType* node) const;\n\n    /**\n     * Returns the set of nodes that are neighbors of the specified node.\n     * In other words, getInverseNeighbors(n1) is the set of all nodes n2\n     * such that there exists an arc E starting from n2 and ending at n1.\n     *\n     * If the given node is not found in this graph, returns an empty set.\n     * @bigoh O(E)\n     */\n    Set<NodeType*> getInverseNeighbors(const std::string& node) const;\n\n    /**\n     * Returns the set of node names that are neighbors of the specified node.\n     * In other words, getNeighbors(n1) is the set of all strings n2\n     * such that there exists an arc E starting from n1 and ending at n2.\n     *\n     * If any pointer passed is null, or if the given node is not found\n     * in this graph, returns an empty set.\n     * @bigoh O(log V)\n     */\n    Set<std::string> getNeighborNames(NodeType* node) const;\n\n    /**\n     * Returns the set of node names that are neighbors of the specified node.\n     * In other words, getNeighbors(n1) is the set of all strings n2\n     * such that there exists an arc E starting from n1 and ending at n2.\n     *\n     * If the given node is not found in this graph, returns an empty set.\n     * @bigoh O(log V)\n     */\n    Set<std::string> getNeighborNames(const std::string& node) const;\n\n    /**\n     * Returns the set of nodes that are neighbors of the specified node.\n     * In other words, getNeighbors(n1) is the set of all nodes n2\n     * such that there exists an arc E starting from n1 and ending at n2.\n     *\n     * If any pointer passed is null, or if the given node is not found\n     * in this graph, returns an empty set.\n     * @bigoh O(log V)\n     */\n    Set<NodeType*> getNeighbors(NodeType* node) const;\n\n    /**\n     * Returns the set of nodes that are neighbors of the specified node.\n     * In other words, getNeighbors(n1) is the set of all nodes n2\n     * such that there exists an arc E starting from n1 and ending at n2.\n     *\n     * If the given node is not found in this graph, returns an empty set.\n     * @bigoh O(log V)\n     */\n    Set<NodeType*> getNeighbors(const std::string& node) const;\n\n    /**\n     * Looks up a node in the name table attached to the graph and\n     * returns a pointer to that node.\n     * If no node with the specified name exists, returns <code>nullptr</code>.\n     * @bigoh O(log V)\n     */\n    NodeType* getNode(const std::string& name) const;\n\n    /**\n     * Returns the set of the names of all nodes in the graph.\n     * Similar to getNodeSet but returns a set of strings rather than a set\n     * of pointers to nodes.\n     * @bigoh O(V log V)\n     */\n    Set<std::string> getNodeNames() const;\n\n    /**\n     * Returns the set of all nodes in the graph.\n     * These are direct pointers to the internal NodeType* structures in the\n     * graph, so any modifications you make to them will be reflected in the graph.\n     * @bigoh O(1)\n     */\n    const Set<NodeType*>& getNodeSet() const;\n\n    /**\n     * Returns <code>true</code> if the graph contains an arc from\n     * <code>n1</code> to <code>n2</code>.\n     * If any pointer passed is null, or if either node is not contained\n     * in this graph, returns false.\n     * @bigoh O(log V)\n     */\n    bool isConnected(NodeType* n1, NodeType* n2) const;\n\n    /**\n     * Returns <code>true</code> if the graph contains an arc from\n     * <code>n1</code> to <code>n2</code>.\n     * If either node is not contained in this graph, returns false.\n     * @bigoh O(log V)\n     */\n    bool isConnected(const std::string& s1, const std::string& s2) const;\n\n    /**\n     * Returns true if the graph contains an edge from v1 to v2.\n     * If either of the vertexes supplied is not found in the graph, returns false.\n     * @bigoh O(log V)\n     */\n    bool isNeighbor(const std::string& node1, const std::string& node2) const;\n\n    /**\n     * Returns true if the graph contains an edge from v1 to v2.\n     * If either of the vertexes supplied is null or is not found in the graph, returns false.\n     * @bigoh O(log V)\n     */\n    bool isNeighbor(NodeType* node1, NodeType* node2) const;\n\n    /**\n     * Returns <code>true</code> if the graph contains no vertexes.\n     * @bigoh O(1)\n     */\n    bool isEmpty() const;\n\n    /**\n     * Returns the number of nodes in the graph.\n     * Equivalent to size().\n     * @bigoh O(1)\n     */\n    int nodeCount() const;\n\n    /**\n     * Removes an arc from v1 to v2 in the graph, specified by the names of its endpoints.\n     * If more than one arc connects the specified endpoints, all of them are removed.\n     * If no arc connects the given endpoints, or the given arc is not found,\n     * the call has no effect.\n     * @bigoh O(E + log V)\n     */\n    void removeArc(const std::string& s1, const std::string& s2);\n\n    /**\n     * Removes an arc from v1 to v2 in the graph, specified by the node pointers\n     * at its endpoints.\n     * If more than one arc connects the specified endpoints, all of them are removed.\n     * If no arc connects the given endpoints, or the given arc is not found,\n     * the call has no effect.\n     * @bigoh O(E + log V)\n     */\n    void removeArc(NodeType* n1, NodeType* n2);\n\n    /**\n     * Removes the given arc from the graph, specified as an arc pointer.\n     * If more than one arc connects the specified endpoints, all of them are removed.\n     * If no arc connects the given endpoints, or the given arc is not found,\n     * the call has no effect.\n     *\n     * Memory management: Our code will delete/free the ArcType* object when done with it.\n     * You do not need to (and should not) free it yourself.\n     * @bigoh O(log E + log V)\n     */\n    void removeArc(ArcType* arc);\n\n    /**\n     * Removes the node with the given name from the graph.\n     * Removing a node also removes all arcs that contain that node.\n     * If a node name is passed that is not part of the graph,\n     * the call has no effect.\n     * @bigoh O(E + log V)\n     */\n    void removeNode(const std::string& name);\n\n    /**\n     * Removes a node from the graph, specified as a pointer value.\n     * Removing a node also removes all arcs that contain that node.\n     * If a node or name is passed that is null or is not part of the graph,\n     * the call has no effect.\n     *\n     * Memory management: Our code will delete/free the NodeType* object when done with it.\n     * You do not need to (and should not) free it yourself.\n     * @bigoh O(E + log V)\n     */\n    void removeNode(NodeType* node);\n\n    /**\n     * Reads the data for an arc from the scanner.\n     * The <code>forward</code> argument points to the arc in the forward direction.\n     * If the arc is undirected, <code>backward</code> points to the reverse arc;\n     * for directed arcs, the <code>backward</code> pointer is <code>nullptr</code>.\n     *\n     * The default implementation of this method is empty.\n     * Clients that want to initialize other fields in the arc must override\n     * this method so that it initializes one or both arc, as appropriate.\n     */\n    virtual void scanArcData(TokenScanner &, ArcType* /*forward*/, ArcType* /*backward*/) {\n        // empty\n    }\n\n    /**\n     * This method reads one \"entry\" for the graph, which is either a node\n     * description or an arc description.  The <code>scanGraphEntry</code>\n     * method returns <code>true</code> if it reads an entry, and\n     * <code>false</code> at the end of file or at text that cannot be\n     * recognized as a graph entry.\n     *\n     * Node entries consist of the name of a node (which may be quoted\n     * if it contains special characters), optionally followed by data for\n     * the node.  Arc descriptions have one of the following forms:\n     *\n     * <pre>\n     * n1 -> n2\n     * n1 - n2\n     * </pre>\n     *\n     * either of which can be followed by data for the arc.\n     * The first form creates a single directed arc; the second creates two arcs,\n     * one in each direction.\n     *\n     * Clients who want to read node or arc data must override the empty\n     * versions of <code>scanNodeData</code> and <code>scanArcData</code>\n     * included in this interface.\n     */\n    virtual bool scanGraphEntry(TokenScanner& scanner);\n\n    /**\n     * Reads the data for the specified node from the scanner.\n     * The default implementation of this method is empty.\n     * Clients that want to initialize other fields in the node from the token\n     * stream must override this method.\n     */\n    virtual void scanNodeData(TokenScanner&, NodeType*) {\n        /* Empty */\n    }\n\n    /**\n     * Returns the number of nodes in the graph.\n     * Equivalent to nodeCount.\n     * @bigoh O(1)\n     */\n    int size() const;\n\n    /**\n     * Converts the graph to a printable string representation.\n     * @return a string such as <code>\"{A, B, C, D, A - B, B - D, C - D}\"</code>.\n     * @bigoh O(V + E)\n     */\n    std::string toString() const;\n\n    /**\n     * Writes the data for the arc to the output stream.\n     * The default implementation of this method is empty.\n     * Clients that want to store other fields from the arc must override this\n     * method so that it writes that data in a form that scanArcData can read.\n     */\n    virtual void writeArcData(std::ostream&, ArcType*) const {\n        // empty\n    }\n\n    /**\n     * Writes the data for the node to the output stream.\n     * The default implementation of this method is empty.\n     * Clients that want to store other fields from the node must override this\n     * method so that it writes that data in a form that scanNodeData can read.\n     */\n    virtual void writeNodeData(std::ostream&, NodeType*) const {\n        // empty\n    }\n\n    using graph_iterator = typename Set<NodeType *>::const_iterator;\n\n    /**\n     * Returns an STL iterator positioned at the first vertex in the graph.\n     * @bigoh O(1)\n     */\n    graph_iterator begin() const {\n        return _nodes.begin();\n    }\n\n    /**\n     * Returns an STL iterator positioned after the last vertex in the graph.\n     * @bigoh O(1)\n     */\n    graph_iterator end() const {\n        return _nodes.end();\n    }\n\n    /**\n     * Relational operators to compare two graphs.\n     * The ==, != operators require that the ValueType has a == operator\n     * so that the elements can be tested for equality.\n     * @bigoh O(V log V + E log E)\n     */\n    bool operator ==(const Graph& graph2) const;\n\n    /**\n     * Relational operators to compare two graphs.\n     * The ==, != operators require that the ValueType has a == operator\n     * so that the elements can be tested for equality.\n     * @bigoh O(V log V + E log E)\n     */\n    bool operator !=(const Graph& graph2) const;\n\n    /**\n     * Relational operators to compare two graphs.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     * @bigoh O(V log V + E log E)\n     */\n    bool operator <(const Graph& graph2) const;\n\n    /**\n     * Relational operators to compare two graphs.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     * @bigoh O(V log V + E log E)\n     */\n    bool operator <=(const Graph& graph2) const;\n\n    /**\n     * Relational operators to compare two graphs.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     * @bigoh O(V log V + E log E)\n     */\n    bool operator >(const Graph& graph2) const;\n\n    /**\n     * Relational operators to compare two graphs.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     * @bigoh O(V log V + E log E)\n     */\n    bool operator >=(const Graph& graph2) const;\n\nprivate:\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\n    /**\n     * This template class establishes the ordering for nodes and arcs.\n     * Nodes are processed in alphabetical order by node name; arcs are\n     * compared in much the same way, looking first at the start node and\n     * then continuing on to look at the finish node if the start nodes\n     * match.  These functions, however, indicate equality only if the\n     * arguments are identical, in the sense that they are at the same\n     * address.  If two distinct arcs, for example, connect the same pair\n     * of nodes (which is perfectly legal in the graph abstraction and can\n     * be used, for example, to represent multiple modes of travel between\n     * two nodes), those arcs are not the same.\n     *\n     * @private\n     */\n    class GraphComparator {\n    public:\n        bool operator ()(NodeType* n1, NodeType* n2) {\n            return compare(n1, n2) < 0;\n        }\n\n        bool operator ()(ArcType* a1, ArcType* a2) {\n            return compare(a1, a2) < 0;\n        }\n    };\n\n    Set<NodeType*> _nodes{GraphComparator()}; /* The set of nodes in the graph */\n    Set<ArcType*> _arcs{GraphComparator()};   /* The set of arcs in the graph  */\n    Map<std::string, NodeType*> _nodeMap;     /* A map from names to nodes     */\n\npublic:\n    /**\n     * These functions are part of the public interface of the class but are\n     * defined here to avoid adding confusion to the Graph class.\n     *\n     * @private\n     */\n    Graph& operator =(const Graph& src);\n\n    /**\n     * These functions are part of the public interface of the class but are\n     * defined here to avoid adding confusion to the Graph class.\n     *\n     * @private\n     */\n    Graph(const Graph& src);\n\n    /**\n     * Compares two nodes for ordering within a set.\n     *\n     * @private\n     */\n    static int compare(NodeType* n1, NodeType* n2) {\n        if (n1 == n2) {\n            return 0;\n        }\n        if (n1->name < n2->name) {\n            return -1;\n        }\n        if (n1->name > n2->name) {\n            return +1;\n        }\n        return (n1 < n2) ? -1 : +1;\n    }\n\n    /**\n     * Compares two arcs for ordering within a set.\n     *\n     * @private\n     */\n    static int compare(ArcType* a1, ArcType* a2) {\n        if (a1 == a2) {\n            return 0;\n        }\n        NodeType* n1 = a1->start;\n        NodeType* n2 = a2->start;\n        if (n1 != n2) {\n            return compare(n1, n2);\n        }\n        n1 = a1->finish;\n        n2 = a2->finish;\n        if (n1 != n2) {\n            return compare(n1, n2);\n        }\n        return (a1 < a2) ? -1 : +1;\n    }\n\nprivate:\n    void deepCopy(const Graph& src);\n    NodeType* getExistingNode(const std::string& name, const std::string& member = \"\") const;\n    int graphCompare(const Graph& graph2) const;\n    bool isExistingArc(ArcType* arc) const;\n    bool isExistingNode(NodeType* node) const;\n    void verifyExistingNode(NodeType* node, const std::string& member = \"\") const;\n    void verifyNotNull(void* p, const std::string& member = \"\") const;\n    NodeType* scanNode(TokenScanner& scanner);\n};\n\n/*\n * Implementation notes: Graph constructor\n * ---------------------------------------\n * Even though the body of the Graph constructor is empty, important\n * work is done by the initializers, which ensure that the nodes and\n * arcs set are given the correct comparison functions.\n */\n\ntemplate <typename NodeType, typename ArcType>\nGraph<NodeType, ArcType>::Graph() {\n    // empty\n}\n\ntemplate <typename NodeType, typename ArcType>\nGraph<NodeType, ArcType>::Graph(const Graph& src) {\n    deepCopy(src);\n}\n\n/*\n * Implementation notes: Graph destructor\n * --------------------------------------\n * The destructor must free all heap storage used by this graph to\n * represent the nodes and arcs.  The clear method must also reclaim\n * this memory, which means that the destructor can simply call\n * clear to do the work.\n */\ntemplate <typename NodeType, typename ArcType>\nGraph<NodeType, ArcType>::~Graph() {\n    clear();\n}\n\n/*\n * Implementation notes: addArc\n * ----------------------------\n * The addArc method appears in three forms, as described in the\n * interface.  The code for each form of the method, however, is\n * quite straightforward.\n */\ntemplate <typename NodeType, typename ArcType>\nArcType* Graph<NodeType, ArcType>::addArc(const std::string& s1, const std::string& s2) {\n    return addArc(getExistingNode(s1, \"addArc\"), getExistingNode(s2, \"addArc\"));\n}\n\ntemplate <typename NodeType, typename ArcType>\nArcType* Graph<NodeType, ArcType>::addArc(NodeType* n1, NodeType* n2) {\n    verifyExistingNode(n1, \"addArc\");\n    verifyExistingNode(n2, \"addArc\");\n    ArcType* arc = getArc(n1, n2);\n    if (arc) {\n        return arc;\n    } else {\n        arc = new ArcType();\n        arc->start = n1;\n        arc->finish = n2;\n        return addArc(arc);\n    }\n}\n\ntemplate <typename NodeType, typename ArcType>\nArcType* Graph<NodeType, ArcType>::addArc(ArcType* arc) {\n    verifyNotNull(arc, \"addArc\");\n    if (!isExistingNode(arc->start)) {\n        addNode(arc->start);\n    }\n    if (!isExistingNode(arc->finish)) {\n        addNode(arc->finish);\n    }\n    arc->start->arcs.add(arc);\n    _arcs.add(arc);\n    return arc;\n}\n\n/*\n * Implementation notes: addNode\n * -----------------------------\n * The addNode method appears in two forms: one that creates a node\n * from its name and one that assumes that the client has created\n * the new node.  In each case, the implementation must add the node\n * the set of nodes for the graph and add the name-to-node association\n * to the node map.\n */\ntemplate <typename NodeType, typename ArcType>\nNodeType* Graph<NodeType, ArcType>::addNode(const std::string& name) {\n    NodeType* node = getNode(name);\n    if (node) {\n        return node;   // vertex already exists\n    }\n    node = new NodeType();\n    node->arcs = Set<ArcType*>(GraphComparator());\n    node->name = name;\n    return addNode(node);\n}\n\ntemplate <typename NodeType, typename ArcType>\nNodeType* Graph<NodeType, ArcType>::addNode(NodeType* node) {\n    verifyNotNull(node, \"addNode\");\n    NodeType* existingNode = getNode(node->name);\n    if (existingNode) {\n        *existingNode = *node;   // copy state from parameter\n        return existingNode;\n    } else {\n        _nodes.add(node);\n        _nodeMap[node->name] = node;\n        return node;\n    }\n}\n\ntemplate <typename NodeType, typename ArcType>\nint Graph<NodeType, ArcType>::arcCount() const {\n    return getArcSet().size();\n}\n\ntemplate <typename NodeType, typename ArcType>\nNodeType* Graph<NodeType, ArcType>::back() const {\n    if (this->isEmpty()) {\n        error(\"Graph::back: graph is empty\");\n    }\n    return this->_nodes.back();\n}\n\n/*\n * Implementation notes: clear\n * ---------------------------\n * The implementation of clear first frees the nodes and arcs in\n * their respective sets and then uses the Set class clear method\n * to ensure that these sets are empty.\n */\ntemplate <typename NodeType, typename ArcType>\nvoid Graph<NodeType, ArcType>::clear() {\n    for (NodeType* node : _nodes) {\n        delete node;\n    }\n    for (ArcType* arc : _arcs) {\n        delete arc;\n    }\n    _arcs.clear();\n    _nodes.clear();\n    _nodeMap.clear();\n}\n\ntemplate <typename NodeType, typename ArcType>\nvoid Graph<NodeType, ArcType>::clearArcs() {\n    Set<ArcType*> arcsCopy = getArcSet();   // makes a copy\n    for (ArcType* arc : arcsCopy) {\n        removeArc(arc);\n    }\n}\n\ntemplate <typename NodeType, typename ArcType>\nvoid Graph<NodeType, ArcType>::clearArcs(NodeType* node) {\n    if (isExistingNode(node)) {\n        Set<ArcType*> arcsCopy = getArcSet(node);   // makes a copy\n        for (ArcType* arc : arcsCopy) {\n            removeArc(arc);\n        }\n    }\n}\n\ntemplate <typename NodeType, typename ArcType>\nvoid Graph<NodeType, ArcType>::clearArcs(const std::string& name) {\n    Set<ArcType*> arcsCopy = getArcSet(name);   // makes a copy\n    for (ArcType* arc : arcsCopy) {\n        removeArc(arc);\n    }\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::containsArc(NodeType* node1, NodeType* node2) const {\n    return getArc(node1, node2) != nullptr;\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::containsArc(const std::string& node1, const std::string& node2) const {\n    return getArc(node1, node2) != nullptr;\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::containsArc(ArcType* arc) const {\n    if (!arc) {\n        return false;\n    } else {\n        return this->getArcSet().contains(arc);\n    }\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::containsNode(const std::string& name) const {\n    return _nodeMap.containsKey(name);\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::containsNode(NodeType* node) const {\n    if (node) {\n        return _nodes.contains(node);\n    } else {\n        return false;\n    }\n}\n\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::equals(const Graph<NodeType, ArcType>& graph2) const {\n    return *this == graph2;\n}\n\ntemplate <typename NodeType, typename ArcType>\nNodeType* Graph<NodeType, ArcType>::front() const {\n    if (this->isEmpty()) {\n        error(\"Graph::front: graph is empty\");\n    }\n    return this->_nodes.front();\n}\n\ntemplate <typename NodeType, typename ArcType>\nArcType* Graph<NodeType, ArcType>::getArc(NodeType* node1, NodeType* node2) const {\n    if (!containsNode(node1) || !containsNode(node2)) {\n        return nullptr;\n    }\n    for (ArcType* arc : getArcSet(node1)) {\n        if (arc->finish == node2) {\n            return arc;\n        }\n    }\n    return nullptr;\n}\n\ntemplate <typename NodeType, typename ArcType>\nArcType* Graph<NodeType, ArcType>::getArc(const std::string& node1, const std::string& node2) const {\n    return getArc(getNode(node1), getNode(node2));\n}\n\ntemplate <typename NodeType, typename ArcType>\nconst Set<ArcType*>& Graph<NodeType, ArcType>::getArcSet() const {\n    return _arcs;\n}\n\ntemplate <typename NodeType, typename ArcType>\nconst Set<ArcType*>& Graph<NodeType, ArcType>::getArcSet(NodeType* node) const {\n    if (isExistingNode(node)) {\n        return node->arcs;\n    } else {\n        static Set<ArcType*> set;   // empty\n        return set;\n    }\n}\n\ntemplate <typename NodeType, typename ArcType>\nconst Set<ArcType*>& Graph<NodeType, ArcType>::getArcSet(const std::string& name) const {\n    return getArcSet(getNode(name));\n}\n\ntemplate <typename NodeType, typename ArcType>\nNodeType* Graph<NodeType, ArcType>::getExistingNode(const std::string& name, const std::string& member) const {\n    NodeType* node = _nodeMap.get(name);\n    if (!node) {\n        error(\"Graph::\" + member + \": no node named \" + name);\n    }\n    return node;\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::isExistingArc(ArcType* arc) const {\n    return arc && _arcs.contains(arc);\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::isExistingNode(NodeType* node) const {\n    return node && _nodeMap.containsKey(node->name) && _nodeMap.get(node->name) == node;\n}\n\ntemplate <typename NodeType, typename ArcType>\nvoid Graph<NodeType, ArcType>::verifyExistingNode(NodeType* node, const std::string& member) const {\n    verifyNotNull(node, member);\n    if (!isExistingNode(node)) {\n        error(\"Graph::\" + member + \": node not found in graph\");\n    }\n}\n\ntemplate <typename NodeType, typename ArcType>\nvoid Graph<NodeType, ArcType>::verifyNotNull(void* p, const std::string& member) const {\n    if (!p) {\n        error(\"Graph::\" + member + \": parameter cannot be null\");\n    }\n}\n\ntemplate <typename NodeType, typename ArcType>\nconst Set<ArcType*> Graph<NodeType, ArcType>::getInverseArcSet(NodeType* node) const {\n    Set<ArcType*> set;\n    if (isExistingNode(node)) {\n        for (ArcType* arc : getArcSet()) {\n            if (arc->finish == node) {\n                set.add(arc);\n            }\n        }\n    }\n    return set;\n}\n\ntemplate <typename NodeType, typename ArcType>\nconst Set<ArcType*> Graph<NodeType, ArcType>::getInverseArcSet(const std::string& nodeName) const {\n    return getInverseArcSet(getNode(nodeName));\n}\n\ntemplate <typename NodeType, typename ArcType>\nSet<std::string> Graph<NodeType, ArcType>::getInverseNeighborNames(NodeType* node) const {\n    Set<std::string> set;\n    if (isExistingNode(node)) {\n        for (ArcType* arc : getArcSet()) {\n            if (arc->finish == node) {\n                set.add(arc->start->name);\n            }\n        }\n    }\n    return set;\n}\n\ntemplate <typename NodeType, typename ArcType>\nSet<std::string> Graph<NodeType, ArcType>::getInverseNeighborNames(const std::string& name) const {\n    return getInverseNeighborNames(getNode(name));\n}\n\ntemplate <typename NodeType, typename ArcType>\nSet<NodeType*> Graph<NodeType, ArcType>::getInverseNeighbors(NodeType* node) const {\n    Set<NodeType*> set;\n    if (isExistingNode(node)) {\n        for (ArcType* arc : getArcSet()) {\n            if (arc->finish == node) {\n                set.add(arc->start);\n            }\n        }\n    }\n    return set;\n}\n\ntemplate <typename NodeType, typename ArcType>\nSet<NodeType*> Graph<NodeType, ArcType>::getInverseNeighbors(const std::string& nodeName) const {\n    return getInverseNeighbors(getNode(nodeName));\n}\n\ntemplate <typename NodeType, typename ArcType>\nSet<std::string> Graph<NodeType, ArcType>::getNeighborNames(NodeType* node) const {\n    Set<std::string> neighbors;\n    if (isExistingNode(node)) {\n        for (ArcType* arc : node->arcs) {\n            neighbors.add(arc->finish->name);\n        }\n    }\n    return neighbors;\n}\n\ntemplate <typename NodeType, typename ArcType>\nSet<std::string> Graph<NodeType, ArcType>::getNeighborNames(const std::string& name) const {\n    return getNeighborNames(getNode(name));\n}\n\n/*\n * Implementation notes: getNeighbors\n * ----------------------------------\n * This implementation recomputes the set each time, which is reasonably\n * efficient if the degree of the node is small.\n */\ntemplate <typename NodeType, typename ArcType>\nSet<NodeType*> Graph<NodeType, ArcType>::getNeighbors(NodeType* node) const {\n    Set<NodeType*> nodesResult{GraphComparator{}};\n    if (isExistingNode(node)) {\n        for (ArcType* arc : node->arcs) {\n            nodesResult.add(arc->finish);\n        }\n    }\n    return nodesResult;\n}\n\ntemplate <typename NodeType, typename ArcType>\nSet<NodeType*> Graph<NodeType, ArcType>::getNeighbors(const std::string& name) const {\n    return getNeighbors(getNode(name));\n}\n\n/*\n * Implementation notes: getNode, getExistingNode\n * ----------------------------------------------\n * The getNode method simply looks up the name in the map, which correctly\n * returns nullptr if the name is not found.  Other methods in the\n * implementation call the private method getExistingNode instead,\n * which checks for a null value and signals an error.\n */\ntemplate <typename NodeType, typename ArcType>\nNodeType* Graph<NodeType, ArcType>::getNode(const std::string& name) const {\n    return _nodeMap.get(name);\n}\n\ntemplate <typename NodeType, typename ArcType>\nSet<std::string> Graph<NodeType, ArcType>::getNodeNames() const {\n    Set<std::string> nodeNames;\n    for (NodeType* node : _nodes) {\n        nodeNames.add(node->name);\n    }\n    return nodeNames;\n}\n\n/*\n * Implementation notes: getNodeSet, getArcSet\n * -------------------------------------------\n * These methods simply return the set requested by the client.  The\n * sets are returned by reference for efficiency, because doing so\n * eliminates the need to copy the set.\n */\ntemplate <typename NodeType, typename ArcType>\nconst Set<NodeType*>& Graph<NodeType, ArcType>::getNodeSet() const {\n    return _nodes;\n}\n\n/*\n * Implementation notes: isConnected\n * ---------------------------------\n * Node n1 is connected to n2 if any of the arcs leaving n1 finish at n2.\n * The two versions of this method allow nodes to be specified either as\n * node pointers or by name.\n */\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::isConnected(NodeType* n1, NodeType* n2) const {\n    // don't call verifyExistingNode here because it will throw an error\n    // if n1 or n2 is not found; should just make the call return false\n    if (!isExistingNode(n1) || !isExistingNode(n2)) {\n        return false;\n    }\n    for (ArcType* arc : n1->arcs) {\n        if (arc->finish == n2) {\n            return true;\n        }\n    }\n    return false;\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::isConnected(const std::string& s1, const std::string& s2) const {\n    // don't call getExistingNode here because it will throw an error\n    // if s1 or s2 is not found; should just make the call return false\n    return isConnected(_nodeMap.get(s1), _nodeMap.get(s2));\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::isNeighbor(const std::string& node1, const std::string& node2) const {\n    return isConnected(node1, node2);\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::isNeighbor(NodeType* node1, NodeType* node2) const {\n    return isConnected(node1, node2);\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::isEmpty() const {\n    return _nodes.isEmpty();\n}\n\ntemplate <typename NodeType, typename ArcType>\nint Graph<NodeType, ArcType>::nodeCount() const {\n    return getNodeSet().size();\n}\n\n/*\n * Implementation notes: removeArc\n * -------------------------------\n * These methods remove arcs from the graph, which is ordinarily simply\n * a matter of removing the arc from two sets: the set of arcs in the\n * graph as a whole and the set of arcs in the starting node.  The\n * methods that remove an arc specified by its endpoints, however,\n * must take account of the fact that there might be more than one\n * such arc and delete all of them.\n */\ntemplate <typename NodeType, typename ArcType>\nvoid Graph<NodeType, ArcType>::removeArc(const std::string& s1, const std::string& s2) {\n    // don't call getExistingNode here because it will throw an error\n    // if s1 or s2 is not found; should just make the call have no effect\n    removeArc(_nodeMap.get(s1), _nodeMap.get(s2));\n}\n\ntemplate <typename NodeType, typename ArcType>\nvoid Graph<NodeType, ArcType>::removeArc(NodeType* n1, NodeType* n2) {\n    // don't call verifyExistingNode here because it will throw an error\n    // if n1 or n2 is not found; should just make the call have no effect\n    if (!isExistingNode(n1) || !isExistingNode(n2)) {\n        return;\n    }\n    Vector<ArcType*> toRemove;\n    for (ArcType* arc : _arcs) {\n        if (arc->start == n1 && arc->finish == n2) {\n            toRemove.add(arc);\n        }\n    }\n    for (ArcType* arc : toRemove) {\n        removeArc(arc);\n    }\n}\n\ntemplate <typename NodeType, typename ArcType>\nvoid Graph<NodeType, ArcType>::removeArc(ArcType* arc) {\n    if (!isExistingArc(arc)) {\n        return;\n    }\n    arc->start->arcs.remove(arc);\n    _arcs.remove(arc);\n    delete arc;\n}\n\n/*\n * Implementation notes: removeNode\n * --------------------------------\n * The removeNode method must remove the specified node but must\n * also remove any arcs in the graph containing the node.  To avoid\n * changing the node set during iteration, this implementation creates\n * a vector of arcs that require deletion.\n */\ntemplate <typename NodeType, typename ArcType>\nvoid Graph<NodeType, ArcType>::removeNode(const std::string& name) {\n    // don't call getExistingNode here because it will throw an error\n    // if name is not found; should just make the call have no effect\n    removeNode(_nodeMap.get(name));\n}\n\ntemplate <typename NodeType, typename ArcType>\nvoid Graph<NodeType, ArcType>::removeNode(NodeType* node) {\n    // don't call verifyExistingNode here because it will throw an error\n    // if node is not found; should just make the call have no effect\n    if (!isExistingNode(node)) {\n        return;\n    }\n    Vector<ArcType*> toRemove;\n    for (ArcType* arc : _arcs) {\n        if (arc->start == node || arc->finish == node) {\n            toRemove.add(arc);\n        }\n    }\n    for (ArcType* arc : toRemove) {\n        removeArc(arc);\n    }\n    _nodes.remove(node);\n    _nodeMap.remove(node->name);\n    delete node;\n}\n\n/*\n * Implementation notes: scanGraphEntry\n * ------------------------------------\n * The scanGraphEntry and its helper methods take a scanner that is\n * initialized to the input stream and has the options ignoreWhitespace,\n * scanStrings, and scanNumbers set.\n */\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::scanGraphEntry(TokenScanner& scanner) {\n    NodeType* n1 = scanNode(scanner);\n    if (!n1) {\n        return false;\n    }\n    std::string op = scanner.nextToken();\n    if (op != \"-\" && op != \"->\") {\n        scanner.saveToken(op);\n        return true;\n    }\n    NodeType* n2 = scanNode(scanner);\n    if (!n2) {\n        return false;\n    }\n    ArcType* forward = new ArcType();\n    forward->start = n1;\n    forward->finish = n2;\n    addArc(forward);\n    ArcType* backward = nullptr;\n    if (op == \"-\") {\n        backward = new ArcType();\n        backward->start = n2;\n        backward->finish = n1;\n        addArc(backward);\n    }\n    scanArcData(scanner, forward, backward);\n    return true;\n}\n\ntemplate <typename NodeType, typename ArcType>\nNodeType* Graph<NodeType, ArcType>::scanNode(TokenScanner& scanner) {\n    std::string token = scanner.nextToken();\n    switch (scanner.getTokenType(token)) {\n    case TokenScanner::WORD:\n        break;\n    case TokenScanner::STRING:\n        token = scanner.getStringValue(token);\n        break;\n    default:\n        scanner.saveToken(token);\n        return nullptr;\n    }\n    NodeType* node = getNode(token);\n    if (!node) {\n        node = new NodeType();\n        node->name = token;\n        scanNodeData(scanner, node);\n        addNode(node);\n    }\n    return node;\n}\n\n/*\n * Implementation notes: size, isEmpty\n * -----------------------------------\n * These methods are defined in terms of the node set, so the implementation\n * simply forwards the request there.  Note that it is impossible for a\n * graph to have arcs if it has no nodes.\n */\ntemplate <typename NodeType, typename ArcType>\nint Graph<NodeType, ArcType>::size() const {\n    return _nodes.size();\n}\n\ntemplate <typename NodeType, typename ArcType>\nstd::string Graph<NodeType, ArcType>::toString() const {\n    std::ostringstream os;\n    os << *this;\n    return os.str();\n}\n\n/*\n * Implementation notes: operator =, copy constructor\n * -------------------------------------------------\n * These methods ensure that copying a graph creates an entirely new\n * parallel structure of nodes and arcs.\n */\ntemplate <typename NodeType, typename ArcType>\nGraph<NodeType,ArcType>&\nGraph<NodeType, ArcType>::operator =(const Graph& src) {\n    if (this != &src) {\n        clear();\n        deepCopy(src);\n    }\n    return *this;\n}\n\n/*\n * Private method: deepCopy\n * ------------------------\n * Common code factored out of the copy constructor and operator= to\n * copy the contents from the other graph.\n */\ntemplate <typename NodeType, typename ArcType>\nvoid Graph<NodeType, ArcType>::deepCopy(const Graph& src) {\n    for (NodeType* oldNode : src._nodes) {\n        NodeType* newNode = new NodeType();\n        *newNode = *oldNode;\n        newNode->arcs.clear();\n        addNode(newNode);\n    }\n    for (ArcType* oldArc : src._arcs) {\n        ArcType* newArc = new ArcType();\n        *newArc = *oldArc;\n        newArc->start = getExistingNode(oldArc->start->name, \"deepCopy\");\n        newArc->finish = getExistingNode(oldArc->finish->name, \"deepCopy\");\n        addArc(newArc);\n    }\n}\n\n\n/**\n * Compares two graphs for <, <=, ==, !=, >, >= relational operators.\n * Vertices are compared, including their neighboring arcs.\n *\n * @private\n */\ntemplate <typename NodeType, typename ArcType>\nint Graph<NodeType, ArcType>::graphCompare(const Graph<NodeType, ArcType>& graph2) const {\n    // optimization: if literally the same graph, return true\n    if (this == &graph2) {\n        return 0;\n    }\n\n    auto itr1 = begin();\n    auto itr2 = graph2.begin();\n    auto g1end = end();\n    auto g2end = graph2.end();\n\n    while (itr1 != g1end && itr2 != g2end) {\n        // compare each pair of elements from iterators\n        NodeType* node1 = *itr1;\n        NodeType* node2 = *itr2;\n\n        // optimization: if literally same node, equal; don't compare\n        if (node1 != node2) {\n            // first check names\n            if (node1->name != node2->name) {\n                return node1->name.compare(node2->name);\n            }\n\n            // then check all arcs, pairwise\n            auto eitr1 = node1->arcs.begin();\n            auto eitr2 = node2->arcs.begin();\n            auto e1end = node1->arcs.end();\n            auto e2end = node2->arcs.end();\n            while (eitr1 != e1end && eitr2 != e2end) {\n                ArcType* arc1 = *eitr1;\n                ArcType* arc2 = *eitr2;\n\n                // optimization: if literally same arc, equal; don't compare\n                if (arc1 != arc2) {\n                    // first check start vertex names, then end vertex names\n                    if (arc1->start->name != arc2->start->name) {\n                        return arc1->start->name.compare(arc2->start->name);\n                    } else if (arc1->finish->name != arc2->finish->name) {\n                        return arc1->finish->name.compare(arc2->finish->name);\n                    }\n                }\n                eitr1++;\n                eitr2++;\n            }\n\n            // if we get here, everything from me matched graph2, so either arcs equal,\n            // or one is shorter than the other (fewer arcs) and is therefore less\n            if (eitr1 == e1end && eitr2 == e2end) {\n                // keep going\n            } else if (eitr1 == e1end) {\n                return -1;\n            } else {\n                return 1;\n            }\n        }\n\n        // if we get here, those two vertices and their outbound arcs\n        // were equal; so advance to next element\n        itr1++;\n        itr2++;\n    }\n\n    // if we get here, everything from me matched graph2, so either equal,\n    // or one is shorter than the other (fewer vertices) and is therefore less\n    if (itr1 == g1end && itr2 == g2end) {\n        return 0;\n    } else if (itr1 == g1end) {\n        return -1;\n    } else {\n        return 1;\n    }\n}\n\n/*\n * Operators\n */\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::operator ==(const Graph& graph2) const {\n    // optimization: if sizes not same, graphs not equal\n    if (_nodes.size() != graph2._nodes.size()\n            || _arcs.size() != graph2._arcs.size()\n            || _nodeMap.size() != graph2._nodeMap.size()) {\n        return false;\n    }\n    return graphCompare(graph2) == 0;\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::operator !=(const Graph& graph2) const {\n    return !(*this == graph2);\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::operator <(const Graph& graph2) const {\n    return graphCompare(graph2) < 0;\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::operator <=(const Graph& graph2) const {\n    return graphCompare(graph2) <= 0;\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::operator >(const Graph& graph2) const {\n    return graphCompare(graph2) > 0;\n}\n\ntemplate <typename NodeType, typename ArcType>\nbool Graph<NodeType, ArcType>::operator >=(const Graph& graph2) const {\n    return graphCompare(graph2) >= 0;\n}\n\n/**\n * Writes the given graph to the given output stream.\n * The insertion and extraction operators for graphs are more complicated\n * than for the standard collection types because the nodes and arcs can\n * contain client-specific data.  To ensure that this information is\n * correctly written and read by these operators, clients must override\n * the methods writeNodeData, writeArcData, scanNodeData, and scanArcData.\n */\ntemplate <typename NodeType, typename ArcType>\nstd::ostream& operator <<(std::ostream& os, const Graph<NodeType, ArcType>& g) {\n    os << \"{\";\n    bool started = false;\n    for (NodeType* node : g.getNodeSet()) {\n        if (started) {\n            os << \", \";\n        }\n        writeGenericValue(os, node->name, stringIsInteger(node->name) || stringIsReal(node->name));\n        g.writeNodeData(os, node);\n        started = true;\n    }\n    for (ArcType* arc : g.getArcSet()) {\n        os << \", \";\n        writeGenericValue(os, arc->start->name, stringIsInteger(arc->start->name) || stringIsReal(arc->start->name));\n        os << \" -> \";\n        writeGenericValue(os, arc->finish->name, stringIsInteger(arc->finish->name) || stringIsReal(arc->finish->name));\n        g.writeArcData(os, arc);\n    }\n    return os << \"}\";\n}\n\n/**\n * Reads the given graph from the given input stream.\n * The insertion and extraction operators for graphs are more complicated\n * than for the standard collection types because the nodes and arcs can\n * contain client-specific data.  To ensure that this information is\n * correctly written and read by these operators, clients must override\n * the methods writeNodeData, writeArcData, scanNodeData, and scanArcData.\n */\ntemplate <typename NodeType, typename ArcType>\nstd::istream& operator >>(std::istream& is, Graph<NodeType, ArcType>& g) {\n    TokenScanner scanner(is);\n    scanner.ignoreWhitespace();\n    scanner.scanNumbers();\n    scanner.scanStrings();\n    scanner.addOperator(\"->\");\n    std::string token = scanner.nextToken();\n    if (token != \"{\") {\n        is.setstate(std::ios_base::failbit);\n        return is;\n    }\n    g.clear();\n    while (g.scanGraphEntry(scanner)) {\n        token = scanner.nextToken();\n        if (token == \"}\") {\n            scanner.saveToken(token);\n        } else if (token != \",\") {\n            is.setstate(std::ios_base::failbit);\n            return is;\n        }\n    }\n    token = scanner.nextToken();\n    if (token != \"}\") {\n        is.setstate(std::ios_base::failbit);\n        return is;\n    }\n    return is;\n}\n\n/**\n * Template hash function for graphs.\n */\ntemplate <typename NodeType, typename ArcType>\nint hashCode(const Graph<NodeType, ArcType>& graph) {\n    int code = hashSeed();\n    for (NodeType* node : graph) {\n        code = hashMultiplier() * code + hashCode(node->name);\n    }\n    for (ArcType* arc : graph.getArcSet()) {\n        code = hashMultiplier() * code + hashCode(arc->start->name);\n        code = hashMultiplier() * code + hashCode(arc->finish->name);\n    }\n    return (code & hashMask());\n}\n\n#endif // _graph_h\n"
  },
  {
    "path": "Library/collections/grid.h",
    "content": "/*\n * File: grid.h\n * ------------\n * This file exports the <code>Grid</code> class, which offers a\n * convenient abstraction for representing a two-dimensional array.\n */\n\n#ifndef _grid_h\n#define _grid_h\n\n#include <initializer_list>\n#include <iostream>\n#include <string>\n#include <sstream>\n#include <functional>\n\n#include \"collections.h\"\n#include \"error.h\"\n#include \"gridlocation.h\"\n#include \"hashcode.h\"\n#include \"random.h\"\n#include \"strlib.h\"\n#include \"vector.h\"\n\n/*\n * Class: Grid<ValueType>\n * ----------------------\n * This class stores an indexed, two-dimensional array.  The following code,\n * for example, creates an identity matrix of size <code>n</code>, in which\n * the elements are 1.0 along the main diagonal and 0.0 everywhere else:\n *\n *<pre>\n *    Grid&lt;double&gt; createIdentityMatrix(int n) {\n *       Grid&lt;double&gt; matrix(n, n);\n *       for (int i = 0; i &lt; n; i++) {\n *          matrix[i][i] = 1.0;\n *       }\n *       return matrix;\n *    }\n *</pre>\n */\n\ntemplate <typename ValueType>\nclass Grid {\npublic:\n    /* Forward reference */\n    class GridRow;\n    class GridRowConst;\n\n    /*\n     * Constructor: Grid\n     * Usage: Grid<ValueType> grid;\n     *        Grid<ValueType> grid(nRows, nCols);\n     * ------------------------------------------\n     * Initializes a new grid.  The second form of the constructor is\n     * more common and creates a grid with the specified number of rows\n     * and columns.  Each element of the grid is initialized to the\n     * default value for the type.  The default constructor creates an\n     * empty grid for which the client must call <code>resize</code> to\n     * set the dimensions.\n     * The three-argument constructor also accepts an initial value and\n     * fills every cell of the grid with that value.\n     */\n    Grid() = default;\n    Grid(int _rowCount, int _columnCount);\n    Grid(int _rowCount, int _columnCount, const ValueType& value);\n\n    /*\n     * This constructor uses an initializer list to set up the grid.\n     * Usage: Grid<int> grid {{1, 2, 3}, {4, 5, 6}};\n     */\n    Grid(std::initializer_list<std::initializer_list<ValueType>> list);\n\n    /*\n     * Destructor: ~Grid\n     * -----------------\n     * Frees any heap storage associated with this grid.\n     */\n    virtual ~Grid() = default;\n\n    /*\n     * Method: clear\n     * Usage: grid.clear();\n     * --------------------\n     * Sets every value in the grid to its element type's default value.\n     */\n    void clear();\n\n    /*\n     * Method: equals\n     * Usage: if (grid.equals(grid2)) ...\n     * ----------------------------------\n     * Returns <code>true</code> if this grid contains exactly the same\n     * values as the given other grid.\n     * Identical in behavior to the == operator.\n     */\n    bool equals(const Grid<ValueType>& grid2) const;\n\n    /*\n     * Method: fill\n     * Usage: grid.fill(value);\n     * ------------------------\n     * Stores the given value in every cell of this grid.\n     */\n    void fill(const ValueType& value);\n\n    /*\n     * Method: get\n     * Usage: ValueType value = grid.get(row, col);\n     * --------------------------------------------\n     * Returns the element at the specified <code>row</code>/<code>col</code>\n     * position in this grid.  This method signals an error if the\n     * <code>row</code> and <code>col</code> arguments are outside\n     * the grid boundaries.\n     */\n    const ValueType& get(int row, int col) const;\n    const ValueType& get(const GridLocation& loc) const;\n\n    /*\n     * Method: inBounds\n     * Usage: if (grid.inBounds(row, col)) ...\n     * ---------------------------------------\n     * Returns <code>true</code> if the specified row and column position\n     * is inside the bounds of the grid.\n     */\n    bool inBounds(int row, int col) const;\n    bool inBounds(const GridLocation& loc) const;\n\n    /*\n     * Method: isEmpty\n     * Usage: if (grid.isEmpty()) ...\n     * ---------------------------------------\n     * Returns <code>true</code> if the grid has 0 rows and/or 0 columns.\n     */\n    bool isEmpty() const;\n\n    /*\n     * Method: locations\n     * Usage: for (GridLocation loc : grid.locations()) ...\n     * ----------------------------------------------------\n     * Returns a range of (row,col) locations found in this grid.\n     * This allows a nice abstraction for looping over the 2D grid range\n     * of indexes using a single for loop.\n     * By default the locations are arranged in row-major order,\n     * but if you pass the rowMajor parameter of false, the locations will be\n     * returned in column-major order instead.\n     */\n    GridLocationRange locations(bool rowMajor = true) const;\n\n    /*\n     * Method: mapAll\n     * Usage: grid.mapAll(fn);\n     * -----------------------\n     * Calls the specified function on each element of the grid.  The\n     * elements are processed in <b><i>row-major order,</i></b> in which\n     * all the elements of row 0 are processed, followed by the elements\n     * in row 1, and so on.\n     */\n    void mapAll(std::function<void (const ValueType &)>) const;\n\n    /*\n     * Method: numCols\n     * Usage: int nCols = grid.numCols();\n     * ----------------------------------\n     * Returns the number of columns in the grid.\n     */\n    int numCols() const;\n\n    /*\n     * Method: numRows\n     * Usage: int nRows = grid.numRows();\n     * ----------------------------------\n     * Returns the number of rows in the grid.\n     */\n    int numRows() const;\n\n    /*\n     * Method: resize\n     * Usage: grid.resize(nRows, nCols);\n     * ---------------------------------\n     * Reinitializes the grid to have the specified number of rows\n     * and columns.  If the 'retain' parameter is true,\n     * the previous grid contents are retained as much as possible.\n     * If 'retain' is not passed or is false, any previous grid contents\n     * are discarded.\n     */\n    void resize(int _rowCount, int _columnCount, bool retain = false);\n\n    /*\n     * Method: set\n     * Usage: grid.set(row, col, value);\n     * ---------------------------------\n     * Replaces the element at the specified <code>row</code>/<code>col</code>\n     * location in this grid with a new value.  This method signals an error\n     * if the <code>row</code> and <code>col</code> arguments are outside\n     * the grid boundaries.\n     */\n    void set(int row, int col, const ValueType& value);\n    void set(const GridLocation& loc, const ValueType& value);\n\n    /*\n     * Method: size\n     * Usage: int size = grid.size();\n     * ------------------------------\n     * Returns the total number of elements in the grid, which is equal to the\n     * number of rows times the number of columns.\n     */\n    int size() const;\n\n    /*\n     * Method: toString\n     * Usage: string str = grid.toString();\n     * ------------------------------------\n     * Converts the grid to a printable string representation.\n     * The string returned is a 1-dimensional representation such as:\n     * \"{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}\"\n     */\n    std::string toString() const;\n\n    /*\n     * Method: toString2D\n     * Usage: string str = grid.toString2D();\n     * --------------------------------------\n     * Converts the grid to a printable string representation.\n     * The string returned is a 2-dimensional representation such as:\n     * \"{{1, 2, 3},\\n\n     *   {4, 5, 6},\\n\n     *   {7, 8, 9}}\"\n     */\n    std::string toString2D(\n            std::string rowStart = \"{\",\n            std::string rowEnd = \"}\",\n            std::string colSeparator = \", \",\n            std::string rowSeparator = \",\\n \") const;\n\n\n    /*\n     * Operator: []\n     * Usage:  grid[row][col]\n     * ----------------------\n     * Overloads <code>[]</code> to select elements from this grid.\n     * This extension enables the use of traditional array notation to\n     * get or set individual elements.  This method signals an error if\n     * the <code>row</code> and <code>col</code> arguments are outside\n     * the grid boundaries.\n     */\n    GridRow operator [](int row);\n    const GridRowConst operator [](int row) const;\n    ValueType& operator [](const GridLocation& loc);\n    const ValueType& operator [](const GridLocation& loc) const;\n\n    /*\n     * Additional Grid operations\n     * --------------------------\n     * In addition to the methods listed in this interface, the Grid\n     * class supports the following operations:\n     *\n     *   - Stream I/O using the << and >> operators\n     *   - Deep copying for the copy constructor and assignment operator\n     *   - Iteration using the range-based for statement and STL iterators\n     *\n     * The iteration forms process the grid in row-major order.\n     */\n\n    /*\n     * Operator: ==\n     * Usage: if (grid1 == grid2) ...\n     * ------------------------------\n     * Compares two grids for equality.\n     */\n    bool operator ==(const Grid& grid2) const;\n\n    /*\n     * Operator: !=\n     * Usage: if (grid1 != grid2) ...\n     * ------------------------------\n     * Compares two grids for inequality.\n     */\n    bool operator !=(const Grid& grid2) const;\n\n    /*\n     * Operators: <, >, <=, >=\n     * Usage: if (grid1 < grid2) ...\n     * -----------------------------\n     * Relational operators to compare two grids.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     */\n    bool operator <(const Grid& grid2) const;\n    bool operator <=(const Grid& grid2) const;\n    bool operator >(const Grid& grid2) const;\n    bool operator >=(const Grid& grid2) const;\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\n    /*\n     * Implementation notes: Grid data structure\n     * -----------------------------------------\n     * The Grid is internally managed as a dynamic array of elements.\n     * The array itself is one-dimensional, the logical separation into\n     * rows and columns is done by arithmetic computation.  The layout\n     * is in row-major order, which is to say that the entire first row\n     * is laid out contiguously, followed by the entire second row,\n     * and so on.\n     */\n\nprivate:\n    /* Instance variables */\n    Vector<ValueType> _elements;   // The elements, in row-major order\n    int _rowCount = 0;             // The number of rows in the grid\n    int _columnCount = 0;          // The number of columns in the grid\n\n    /* Private method prototypes */\n\n    /*\n     * Throws an ErrorException if the given row/col are not within the range of\n     * (0,0) through (rowMax-1,colMax-1) inclusive.\n     * This is a consolidated error handler for all various Grid members that\n     * accept index parameters.\n     * The prefix parameter represents a text string to place at the start of\n     * the error message, generally to help indicate which member threw the error.\n     */\n    void checkIndexes(int row, int col,\n                      int rowMax, int colMax,\n                      std::string prefix) const;\n    int gridCompare(const Grid& grid2) const;\n\n    /*\n     * Hidden features\n     * ---------------\n     * The remainder of this file consists of the code required to\n     * support deep copying and iteration.  Including these methods\n     * in the public interface would make that interface more\n     * difficult to understand for the average client.\n     */\n\npublic:\n    using iterator       = typename Vector<ValueType>::iterator;\n    using const_iterator = typename Vector<ValueType>::const_iterator;\n\n    iterator begin() {\n        return _elements.begin();\n    }\n    iterator end() {\n        return _elements.end();\n    }\n\n    const_iterator begin() const {\n        return _elements.begin();\n    }\n    const_iterator end() const {\n        return _elements.end();\n    }\n\n    /*\n     * Private class: Grid<ValType>::GridRow\n     * -------------------------------------\n     * This section of the code defines a nested class within the Grid template\n     * that makes it possible to use traditional subscripting on Grid values.\n     */\n    class GridRow {\n    public:\n        GridRow() : _gp(nullptr), _row(0) {\n            /* Empty */\n        }\n\n        ValueType& operator [](int col) {\n            _gp->checkIndexes(_row, col, _gp->_rowCount-1, _gp->_columnCount-1, \"operator [][]\");\n            return _gp->_elements[(_row * _gp->_columnCount) + col];\n        }\n\n        ValueType operator [](int col) const {\n            _gp->checkIndexes(_row, col, _gp->_rowCount-1, _gp->_columnCount-1, \"operator [][]\");\n            return _gp->_elements[(_row * _gp->_columnCount) + col];\n        }\n\n        int size() const {\n            return _gp->numCols();\n        }\n\n    private:\n        GridRow(Grid* gridRef, int index) {\n            _gp = gridRef;\n            _row = index;\n        }\n\n        Grid* _gp;\n        int _row;\n        friend class Grid;\n    };\n    friend class GridRow;\n\n    class GridRowConst {\n    public:\n        GridRowConst() : _gp(nullptr), _row(0) {\n            /* Empty */\n        }\n\n        const ValueType operator [](int col) const {\n            _gp->checkIndexes(_row, col, _gp->_rowCount-1, _gp->_columnCount-1, \"operator [][]\");\n            return _gp->_elements[(_row * _gp->_columnCount) + col];\n        }\n\n        int size() const {\n            return _gp->numCols();\n        }\n\n    private:\n        GridRowConst(Grid* const gridRef, int index) : _gp(gridRef), _row(index) {}\n\n        const Grid* const _gp;\n        const int _row;\n        friend class Grid;\n    };\n    friend class GridRowConst;\n\n    template <typename T>\n    friend int hashCode(const Grid<T>& g);\n};\n\ntemplate <typename ValueType>\nGrid<ValueType>::Grid(int numRows, int numCols) {\n    resize(numRows, numCols);\n}\n\ntemplate <typename ValueType>\nGrid<ValueType>::Grid(int numRows, int numCols, const ValueType& value) {\n    resize(numRows, numCols);\n    fill(value);\n}\n\ntemplate <typename ValueType>\nGrid<ValueType>::Grid(std::initializer_list<std::initializer_list<ValueType>> list) {\n    // create the grid at the proper size\n    _rowCount = list.size();\n    if (list.begin() != list.end()) {\n        _columnCount = list.begin()->size();\n    }\n    resize(_rowCount, _columnCount);\n\n    // copy the data from the initializer list into the Grid\n    auto rowItr = list.begin();\n    for (int row = 0; row < _rowCount; row++) {\n        if (static_cast<int>(rowItr->size()) != _columnCount) {\n            error(\"Grid::constructor: initializer list is not rectangular (must have same # cols in each row)\");\n        }\n        auto colItr = rowItr->begin();\n        for (int col = 0; col < _columnCount; col++) {\n            set(row, col, *colItr);\n            colItr++;\n        }\n        rowItr++;\n    }\n}\n\ntemplate <typename ValueType>\nvoid Grid<ValueType>::clear() {\n    ValueType defaultValue = ValueType();\n    for (int r = 0; r < _rowCount; r++) {\n        for (int c = 0; c < _columnCount; c++) {\n            set(r, c, defaultValue);\n        }\n    }\n}\n\ntemplate <typename ValueType>\nbool Grid<ValueType>::equals(const Grid<ValueType>& grid2) const {\n    // optimization: if literally same grid, stop\n    if (this == &grid2) {\n        return true;\n    }\n\n    if (_rowCount != grid2._rowCount || _columnCount != grid2._columnCount) {\n        return false;\n    }\n    for (int row = 0; row < _rowCount; row++) {\n        for (int col = 0; col < _columnCount; col++) {\n            if (get(row, col) != grid2.get(row, col)) {\n                return false;\n            }\n        }\n    }\n    return true;\n}\n\ntemplate <typename ValueType>\nvoid Grid<ValueType>::fill(const ValueType& value) {\n    for (int row = 0; row < _rowCount; row++) {\n        for (int col = 0; col < _columnCount; col++) {\n            set(row, col, value);\n        }\n    }\n\n    /* This counts as a semantic update, so we must update the version. */\n    _elements.updateVersion();\n}\n\ntemplate <typename ValueType>\nconst ValueType& Grid<ValueType>::get(int row, int col) const {\n    checkIndexes(row, col, _rowCount-1, _columnCount-1, \"get\");\n    return _elements[(row * _columnCount) + col];\n}\n\ntemplate <typename ValueType>\nconst ValueType& Grid<ValueType>::get(const GridLocation& loc) const {\n    return get(loc.row, loc.col);\n}\n\ntemplate <typename ValueType>\nbool Grid<ValueType>::inBounds(int row, int col) const {\n    return row >= 0 && col >= 0 && row < _rowCount && col < _columnCount;\n}\n\ntemplate <typename ValueType>\nbool Grid<ValueType>::inBounds(const GridLocation& loc) const {\n    return inBounds(loc.row, loc.col);\n}\n\ntemplate <typename ValueType>\nbool Grid<ValueType>::isEmpty() const {\n    return _rowCount == 0 || _columnCount == 0;\n}\n\ntemplate <typename ValueType>\nGridLocationRange Grid<ValueType>::locations(bool rowMajor) const {\n    return GridLocationRange(0, 0, numRows() - 1, numCols() - 1, rowMajor);\n}\n\ntemplate <typename ValueType>\nvoid Grid<ValueType>::mapAll(std::function<void (const ValueType &)> fn) const {\n    for (int i = 0; i < _rowCount; i++) {\n        for (int j = 0; j < _columnCount; j++) {\n            fn(get(i, j));\n        }\n    }\n}\n\ntemplate <typename ValueType>\nint Grid<ValueType>::numCols() const {\n    return _columnCount;\n}\n\ntemplate <typename ValueType>\nint Grid<ValueType>::numRows() const {\n    return _rowCount;\n}\n\ntemplate <typename ValueType>\nvoid Grid<ValueType>::resize(int numRows, int numCols, bool retain) {\n    if (numRows < 0 || numCols < 0) {\n        std::ostringstream out;\n        out << \"Grid::resize: Attempt to resize grid to invalid size (\"\n               << numRows << \", \" << numCols << \")\";\n        error(out.str());\n    }\n\n    // optimization: don't do the resize if we are already that size\n    if (numRows == this->_rowCount && numCols == this->_columnCount && retain) {\n        /* We need to update the version because semantically we've changed the grid,\n         * but we haven't touched our vector.\n         */\n        _elements.updateVersion();\n        return;\n    }\n\n    // save backup of old array/size\n    Vector<ValueType> oldElements = std::move(_elements);\n    int oldnRows = this->_rowCount;\n    int oldnCols = this->_columnCount;\n\n    // create new empty array and set new size\n    this->_rowCount = numRows;\n    this->_columnCount = numCols;\n    this->_elements = Vector<ValueType>(numRows * numCols, ValueType());\n\n    // possibly retain old contents\n    if (retain) {\n        int minRows = oldnRows < numRows ? oldnRows : numRows;\n        int minCols = oldnCols < numCols ? oldnCols : numCols;\n        for (int row = 0; row < minRows; row++) {\n            for (int col = 0; col < minCols; col++) {\n                this->_elements[(row * numCols) + col] = oldElements[(row * oldnCols) + col];\n            }\n        }\n    }\n}\n\ntemplate <typename ValueType>\nvoid Grid<ValueType>::set(int row, int col, const ValueType& value) {\n    checkIndexes(row, col, _rowCount - 1, _columnCount - 1, \"set\");\n    _elements[(row * _columnCount) + col] = value;\n}\n\ntemplate <typename ValueType>\nvoid Grid<ValueType>::set(const GridLocation& loc, const ValueType& value) {\n    set(loc.row, loc.col, value);\n}\n\ntemplate <typename ValueType>\nint Grid<ValueType>::size() const {\n    return _rowCount * _columnCount;\n}\n\ntemplate <typename ValueType>\nstd::string Grid<ValueType>::toString() const {\n    std::ostringstream os;\n    os << *this;\n    return os.str();\n}\n\ntemplate <typename ValueType>\nstd::string Grid<ValueType>::toString2D(\n        std::string rowStart, std::string rowEnd,\n        std::string colSeparator, std::string rowSeparator) const {\n    std::ostringstream os;\n    os << rowStart;\n    int nr = numRows();\n    int nc = numCols();\n    for (int i = 0; i < nr ; i++) {\n        if (i > 0) {\n            os << rowSeparator;\n        }\n        os << rowStart;\n        for (int j = 0; j < nc; j++) {\n            if (j > 0) {\n                os << colSeparator;\n            }\n            writeGenericValue(os, get(i, j), /* forceQuotes */ true);\n        }\n        os << rowEnd;\n    }\n    os << rowEnd;\n    return os.str();\n}\n\ntemplate <typename ValueType>\ntypename Grid<ValueType>::GridRow Grid<ValueType>::operator [](int row) {\n    return GridRow(this, row);\n}\n\ntemplate <typename ValueType>\nValueType& Grid<ValueType>::operator [](const GridLocation& loc) {\n    checkIndexes(loc.row, loc.col, _rowCount-1, _columnCount-1, \"operator []\");\n    return _elements[(loc.row * _columnCount) + loc.col];\n}\n\ntemplate <typename ValueType>\nconst typename Grid<ValueType>::GridRowConst\nGrid<ValueType>::operator [](int row) const {\n    return GridRowConst(const_cast<Grid*>(this), row);\n}\n\ntemplate <typename ValueType>\nconst ValueType& Grid<ValueType>::operator [](const GridLocation& loc) const {\n    checkIndexes(loc.row, loc.col, _rowCount-1, _columnCount-1, \"operator []\");\n    return _elements[(loc.row * _columnCount) + loc.col];\n}\n\ntemplate <typename ValueType>\nbool Grid<ValueType>::operator ==(const Grid& grid2) const {\n    return equals(grid2);\n}\n\ntemplate <typename ValueType>\nbool Grid<ValueType>::operator !=(const Grid& grid2) const {\n    return !equals(grid2);\n}\n\ntemplate <typename ValueType>\nbool Grid<ValueType>::operator <(const Grid& grid2) const {\n    return gridCompare(grid2) < 0;\n}\n\ntemplate <typename ValueType>\nbool Grid<ValueType>::operator <=(const Grid& grid2) const {\n    return gridCompare(grid2) <= 0;\n}\n\ntemplate <typename ValueType>\nbool Grid<ValueType>::operator >(const Grid& grid2) const {\n    return gridCompare(grid2) > 0;\n}\n\ntemplate <typename ValueType>\nbool Grid<ValueType>::operator >=(const Grid& grid2) const {\n    return gridCompare(grid2) >= 0;\n}\n\ntemplate <typename ValueType>\nvoid Grid<ValueType>::checkIndexes(int row, int col,\n                                   int rowMax, int colMax,\n                                   std::string prefix) const {\n    const int rowMin = 0;\n    const int colMin = 0;\n    if (row < rowMin || row > rowMax || col < colMin || col > colMax) {\n        std::ostringstream out;\n        out << \"Grid::\" << prefix << \": (\" << row << \", \" << col << \")\"\n            << \" is outside of valid range [\";\n        if (rowMin < rowMax && colMin < colMax) {\n            out << \"(\" << rowMin << \", \" << colMin <<  \")..(\"\n                << rowMax << \", \" << colMax << \")\";\n        } else if (rowMin == rowMax && colMin == colMax) {\n            out << \"(\" << rowMin << \", \" << colMin <<  \")\";\n        } // else min > max, no range, empty grid\n        out << \"]\";\n        error(out.str());\n    }\n}\n\ntemplate <typename ValueType>\nint Grid<ValueType>::gridCompare(const Grid& grid2) const {\n    if (_rowCount != grid2._rowCount) return _rowCount - grid2._rowCount;\n    if (_columnCount != grid2._columnCount) return _columnCount - grid2._columnCount;\n    return stanfordcpplib::collections::compare(_elements, grid2._elements);\n}\n\ntemplate <typename ValueType>\nint hashCode(const Grid<ValueType>& g) {\n    return hashCode(g._rowCount, g._columnCount, g._elements);\n}\n\n/*\n * Implementation notes: << and >>\n * -------------------------------\n * The insertion and extraction operators use the template facilities in\n * strlib.h to read and write generic values in a way that treats strings\n * specially.\n */\ntemplate <typename ValueType>\nstd::ostream& operator <<(std::ostream& os, const Grid<ValueType>& grid) {\n    os << \"{\";\n    int nRows = grid.numRows();\n    int nCols = grid.numCols();\n    for (int i = 0; i < nRows; i++) {\n        if (i > 0) {\n            os << \", \";\n        }\n        os << \"{\";\n        for (int j = 0; j < nCols; j++) {\n            if (j > 0) {\n                os << \", \";\n            }\n            writeGenericValue(os, grid.get(i, j), /* forceQuotes */ true);\n        }\n        os << \"}\";\n    }\n    return os << \"}\";\n}\n\ntemplate <typename ValueType>\nstd::istream& operator >>(std::istream& is, Grid<ValueType>& grid) {\n    Vector<Vector<ValueType>> vec2d;\n    if (!(is >> vec2d)) {\n        is.setstate(std::ios_base::failbit);\n        return is;\n    }\n\n    int nRows = vec2d.size();\n    int nCols = (nRows == 0) ? 0 : vec2d[0].size();\n    for (int i = 0; i < nRows; i++) {\n        if (vec2d[i].size() != nCols)\n            error(\"Grid::operator >> list is not rectangular (must have same # cols in each row)\");\n    }\n    grid.resize(nRows, nCols);\n    for (int i = 0; i < nRows; i++) {\n        for (int j = 0; j < nCols; j++) {\n            grid[i][j] = vec2d[i][j];\n        }\n    }\n\n    return is;\n}\n\n/*\n * Function: randomElement\n * Usage: element = randomElement(grid);\n * -------------------------------------\n * Returns a randomly chosen element of the given grid.\n * Throws an error if the grid is empty.\n */\ntemplate <typename T>\nconst T& randomElement(const Grid<T>& grid) {\n    if (grid.isEmpty()) {\n        error(\"randomElement: empty grid was passed\");\n    }\n\n    int randomIndex = randomInteger(0, grid.size() - 1);\n    int row = randomIndex / grid.numCols();\n    int col = randomIndex % grid.numCols();\n    return grid.get(row, col);\n}\n\n\n#endif // _grid_h\n"
  },
  {
    "path": "Library/collections/gridlocation.cpp",
    "content": "/*\n * File: gridlocation.cpp\n * ----------------------\n * This file implements the members of the <code>GridLocation</code> structure\n * and the <code>GridLocationRange</code> class.\n * See gridlocation.h for the declarations of each member.\n *\n * @version 2018/03/12\n * - initial version\n */\n\n#include \"gridlocation.h\"\n#include <sstream>\n#include \"hashcode.h\"\n\nGridLocation::GridLocation(int row, int col) {\n    this->row = row;\n    this->col = col;\n}\n\nGridLocation::GridLocation() : GridLocation(0, 0) {}\n\nstd::string GridLocation::toString() const {\n    std::ostringstream out;\n    out << *this;\n    return out.str();\n}\n\nint hashCode(const GridLocation& loc) {\n    return hashCode(loc.row, loc.col);\n}\n\nbool operator <(const GridLocation& loc1, const GridLocation& loc2) {\n    return loc1.row < loc2.row ||\n            (loc1.row == loc2.row && loc1.col < loc2.col);\n}\n\nbool operator <=(const GridLocation& loc1, const GridLocation& loc2) {\n    return loc1 < loc2 || loc1 == loc2;\n}\n\nbool operator ==(const GridLocation& loc1, const GridLocation& loc2) {\n    return loc1.row == loc2.row && loc1.col == loc2.col;\n}\n\nbool operator !=(const GridLocation& loc1, const GridLocation& loc2) {\n    return !(loc1 == loc2);\n}\n\nbool operator >(const GridLocation& loc1, const GridLocation& loc2) {\n    return loc2 < loc1;\n}\n\nbool operator >=(const GridLocation& loc1, const GridLocation& loc2) {\n    return !(loc1 < loc2);\n}\n\nstd::ostream& operator <<(std::ostream& out, const GridLocation& loc) {\n    return out << \"r\" << loc.row << \"c\" << loc.col;\n}\n\nstd::istream& operator >>(std::istream& input, GridLocation& loc) {\n    // read 'r'\n    char ch = '\\0';\n    input >> ch;\n    if (!input || ch != 'r' ) {\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n\n    // read row\n    int row;\n    if (!(input >> row)) {\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n\n    // read 'c'\n    ch = input.get();\n    if (!input || ch != 'c') {\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n\n    // read col\n    int col;\n    if (!(input >> col)) {\n        input.setstate(std::ios_base::failbit);\n        return input;\n    }\n\n    // success!\n    loc.row = row;\n    loc.col = col;\n    return input;\n}\n\nGridLocationRange::GridLocationRange(int startRow, int startCol, int endRow, int endCol, bool isRowMajor)\n        : _start(startRow, startCol),\n          _end(endRow, endCol),\n          _isRowMajor(isRowMajor) {\n    // empty\n}\n\nGridLocationRange::GridLocationRange(const GridLocation& startLoc, const GridLocation& endLoc, bool isRowMajor)\n        : _start(startLoc),\n          _end(endLoc),\n          _isRowMajor(isRowMajor) {\n    // empty\n}\n\nGridLocationRange::GridLocationRange()\n        : _start(0, 0),\n          _end(0, 0),\n          _isRowMajor(true) {\n    // empty\n}\n\nGridLocationRange::GridLocationRangeIterator GridLocationRange::begin() const {\n    return GridLocationRangeIterator(this, /* end */ false);\n}\n\nbool GridLocationRange::contains(const GridLocation& loc) const {\n    /* The location is in range if it's between the relevant\n     * rows and columns.\n     */\n    return _start.row <= loc.row && _start.col <= loc.col &&\n           _end.row   >= loc.row && _end.col   >= loc.col;\n}\n\nGridLocationRange::GridLocationRangeIterator GridLocationRange::end() const {\n    return GridLocationRangeIterator(this, /* end */ true);\n}\n\nint GridLocationRange::endCol() const {\n    return _end.col;\n}\n\nconst GridLocation& GridLocationRange::endLocation() const {\n    return _end;\n}\n\nint GridLocationRange::endRow() const {\n    return _end.row;\n}\n\nbool GridLocationRange::isEmpty() const {\n    /* The range is empty if either the start row or the\n     * start column exceeds the end row or end column.\n     */\n    return _start.row > _end.row || _start.col > _end.col;\n}\n\nbool GridLocationRange::isRowMajor() const {\n    return _isRowMajor;\n}\n\nint GridLocationRange::numRows() const {\n    return isEmpty() ? 0 : _end.row - _start.row + 1;\n}\n\nint GridLocationRange::numCols() const {\n    return isEmpty() ? 0 : _end.col - _start.col + 1;\n}\n\nint GridLocationRange::size() const {\n    return numRows()*numCols();\n}\n\nint GridLocationRange::startCol() const {\n    return _start.col;\n}\n\nconst GridLocation& GridLocationRange::startLocation() const {\n    return _start;\n}\n\nint GridLocationRange::startRow() const {\n    return _start.row;\n}\n\nstd::string GridLocationRange::toString() const {\n    std::ostringstream out;\n    out << *this;\n    return out.str();\n}\n\nstd::ostream& operator <<(std::ostream& out, const GridLocationRange& range) {\n    return out << range.startLocation() << \" .. \" << range.endLocation();\n}\n\nbool operator ==(const GridLocationRange& r1, const GridLocationRange& r2) {\n    return r1.startLocation() == r2.startLocation() && r1.endLocation() == r2.endLocation();\n}\n\nbool operator !=(const GridLocationRange& r1, const GridLocationRange& r2) {\n    return !(r1 == r2);\n}\n"
  },
  {
    "path": "Library/collections/gridlocation.h",
    "content": "/*\n * File: gridlocation.h\n * --------------------\n * This file exports the <code>GridLocation</code> structure, which is a small\n * structure representing a row and column.\n * The row/column values are allowed to be negative or out of bounds; if an\n * out-of-bounds location is passed to a grid, the grid will throw an error.\n *\n * Several members of the <code>Grid</code> and <code>SparseGrid</code> classes\n * have been retrofitted to accept <code>GridLocation</code>s in place of integers\n * for row/column indexes.\n *\n * This file also declares the <code>GridLocationRange</code> class,\n * which represents a 2D range of grid locations that can be looped over.\n *\n * See gridlocation.cpp for the implementation of each member.\n */\n\n#ifndef _gridlocation_h\n#define _gridlocation_h\n\n#include <iostream>\n#include <iterator>\n#include <string>\n\n#include \"error.h\"\n\nclass GridLocationRange;   // forward declaration\n\nstruct GridLocation {\npublic:\n\n    /*\n     * Constructs a location representing the given row and column.\n     * Any indexes are allowed, including negatives and out-of-bounds indexes.\n     */\n    GridLocation(int row, int col);\n\n    /*\n     * Constructs a default location 0, 0.\n     */\n    GridLocation();\n\n    /*\n     * Returns a string representation of this location, such as \"r2c17\".\n     */\n    std::string toString() const;\n\n    /* row and column data - may be directly accessed or modified */\n    int row;\n    int col;\n};\n\n/*\n * Returns an integer hash code for this grid location.\n */\nint hashCode(const GridLocation& loc);\n\n/*\n * Relational operators for comparing grid locations.\n */\nbool operator <(const GridLocation& loc1, const GridLocation& loc2);\nbool operator <=(const GridLocation& loc1, const GridLocation& loc2);\nbool operator ==(const GridLocation& loc1, const GridLocation& loc2);\nbool operator !=(const GridLocation& loc1, const GridLocation& loc2);\nbool operator >(const GridLocation& loc1, const GridLocation& loc2);\nbool operator >=(const GridLocation& loc1, const GridLocation& loc2);\n\n/*\n * I/O stream operators for reading or writing locations in their toString format.\n */\nstd::ostream& operator <<(std::ostream& out, const GridLocation& loc);\nstd::istream& operator >>(std::istream& input, GridLocation& loc);\n\n\n/*\n * Represents a range of grid locations.\n * The actual individual grid locations are not all created and stored in\n * this object; that would require a lot of memory usage.\n * Instead, we primarily use this class for for-each looping over a given range\n * of locations using its internal iterator.\n *\n * Common usage pattern:\n * GridLocationRange range(0, 0, 10, 5);\n * for (GridLocation loc : range) { ... }\n *\n * or, if you have a Grid collection, its locations() method returns a GridLocationRange\n * object that you can loop over directly.\n *\n * for (GridLocation loc : grid.locations()) { ... }\n */\nclass GridLocationRange {\nprivate:\n    /*\n     * Internal iterator over range of indexes.\n     */\n    class GridLocationRangeIterator {\n    private:\n        const GridLocationRange* glr;\n        GridLocation loc;\n\n    public:\n        using iterator_category = std::input_iterator_tag;\n        using value_type = GridLocation;\n        using difference_type = int;\n        using pointer = const GridLocation*;\n        using reference = const GridLocation&;\n\n        GridLocationRangeIterator(const GridLocationRange* glr, bool end)\n                : glr(glr) {\n            /* Need to check that the range isn't empty. If the range\n             * is empty, we need to be an end iterator.\n             */\n            if (end || glr->isEmpty()) {\n                loc.row = glr->endRow() + 1;\n                loc.col = glr->endCol() + 1;\n            } else {\n                loc = glr->startLocation();\n            }\n        }\n\n        GridLocationRangeIterator(const GridLocationRangeIterator& itr)\n                : glr(itr.glr),\n                  loc(itr.loc) {\n            // empty\n        }\n\n        GridLocationRangeIterator& operator ++() {\n            if (glr->isRowMajor()) {\n                loc.col++;\n                if (loc.col > glr->endCol()) {\n                    loc.col = glr->startCol();\n                    loc.row++;\n                }\n            } else {\n                loc.row++;\n                if (loc.row > glr->endRow()) {\n                    loc.row = glr->startRow();\n                    loc.col++;\n                }\n            }\n            if (!glr->contains(loc)) {\n                loc.row = glr->endRow() + 1;\n                loc.col = glr->endCol() + 1;\n            }\n            return *this;\n        }\n\n        GridLocationRangeIterator operator ++(int) {\n            GridLocationRangeIterator copy(*this);\n            operator++();\n            return copy;\n        }\n\n        GridLocationRangeIterator& operator --() {\n            if (glr->isRowMajor()) {\n                loc.col--;\n                if (loc.col < glr->startCol()) {\n                    loc.col = glr->endCol();\n                    loc.row--;\n                }\n            } else {\n                loc.row--;\n                if (loc.row < glr->startRow()) {\n                    loc.row = glr->endRow();\n                    loc.col--;\n                }\n            }\n            return *this;\n        }\n\n        GridLocationRangeIterator operator --(int) {\n            GridLocationRangeIterator copy(*this);\n            operator--();\n            return copy;\n        }\n\n        bool operator ==(const GridLocationRangeIterator& rhs) const {\n            return loc == rhs.loc;\n        }\n\n        bool operator !=(const GridLocationRangeIterator& rhs) const {\n            return !(*this == rhs);\n        }\n\n        bool operator <(const GridLocationRangeIterator& rhs) const {\n            if (glr != rhs.glr) {\n                error(\"GridLocationRange Iterator::operator <: Iterators are in different ranges\");\n            }\n            return loc < rhs.loc;\n        }\n\n        bool operator <=(const GridLocationRangeIterator& rhs) const {\n            if (glr != rhs.glr) {\n                error(\"GridLocationRange Iterator::operator <=: Iterators are in different ranges\");\n            }\n            return loc <= rhs.loc;\n        }\n\n        bool operator >(const GridLocationRangeIterator& rhs) const {\n            if (glr != rhs.glr) {\n                error(\"GridLocationRange Iterator::operator >: Iterators are in different ranges\");\n            }\n            return loc > rhs.loc;\n        }\n\n        bool operator >=(const GridLocationRangeIterator& rhs) const {\n            if (glr != rhs.glr) {\n                error(\"GridLocationRange Iterator::operator >=: Iterators are in different ranges\");\n            }\n            return loc >= rhs.loc;\n        }\n\n        const GridLocation& operator *() const {\n            return loc;\n        }\n\n        const GridLocation* operator ->() const {\n            return &loc;\n        }\n    };\n\n    GridLocation _start;\n    GridLocation _end;\n    bool _isRowMajor;\n\npublic:\n    /*\n     * Constructs a range over the given start/end locations, inclusive.\n     * The isRowMajor flag indicates whether we will loop over the range in\n     * row-major order (true, default) or column-major order (false).\n     */\n    GridLocationRange(int startRow, int startCol, int endRow, int endCol, bool isRowMajor = true);\n\n    /*\n     * Constructs a range over the given start/end locations, inclusive.\n     * The isRowMajor flag indicates whether we will loop over the range in\n     * row-major order (true, default) or column-major order (false).\n     */\n    GridLocationRange(const GridLocation& startLoc, const GridLocation& endLoc, bool isRowMajor = true);\n\n    /*\n     * The default constructor creates a range containing the single location r0c0.\n     */\n    GridLocationRange();\n\n\n    /*\n     * Returns an iterator over the range.\n     */\n    GridLocationRangeIterator begin() const;\n\n    /*\n     * Returns true if this range contains the specified GridLocation.\n     */\n    bool contains(const GridLocation& loc) const;\n\n    /*\n     * Returns an iterator at the end of the range.\n     */\n    GridLocationRangeIterator end() const;\n\n    /*\n     * Returns the last column in this range, inclusive.\n     */\n    int endCol() const;\n\n    /*\n     * Returns the last row/column location in this range, inclusive.\n     */\n    const GridLocation& endLocation() const;\n\n    /*\n     * Returns the last row in this range, inclusive.\n     */\n    int endRow() const;\n\n    /*\n     * Returns true if this range contains no rows or columns.\n     */\n    bool isEmpty() const;\n\n    /*\n     * Returns true if this range should be traversed in row-major order,\n     * as specified at time of construction (default true).\n     */\n    bool isRowMajor() const;\n\n    /*\n     * Returns the number of columns in this range.\n     */\n    int numCols() const;\n\n    /*\n     * Returns the number of rows in this range.\n     */\n    int numRows() const;\n\n    /*\n     * Returns the number of locations in this range.\n     */\n    int size() const;\n\n    /*\n     * Returns the first column in this range.\n     */\n    int startCol() const;\n\n    /*\n     * Returns the first row/column location in this range.\n     */\n    const GridLocation& startLocation() const;\n\n    /*\n     * Returns the first row in this range.\n     */\n    int startRow() const;\n\n    /*\n     * Returns a string representation of this range,\n     * such as \"[r1c3 .. r4c7]\".\n     */\n    std::string toString() const;\n};\n\n/*\n * I/O stream operators for writing location ranges in their toString format.\n */\nstd::ostream& operator <<(std::ostream& out, const GridLocationRange& range);\n\n/*\n * Relational operators for comparing grid location ranges.\n */\nbool operator ==(const GridLocationRange& r1, const GridLocationRange& r2);\nbool operator !=(const GridLocationRange& r1, const GridLocationRange& r2);\n\n\n#endif // _gridlocation_h\n"
  },
  {
    "path": "Library/collections/hashcode.cpp",
    "content": "/*\n * File: hashcode.cpp\n * ------------------\n * This file implements the interface declared in hashcode.h.\n *\n * @version 2019/04/16\n * - bugfix for win64 involving hashCode for void* pointers\n * @version 2018/08/10\n * - bugfixes involving negative hash codes, unified string hashing\n * @version 2017/10/21\n * - added hash codes for short, unsigned integers\n * @version 2015/07/05\n * - using global hashing functions rather than global variables\n */\n\n#include \"hashcode.h\"\n#include <cstddef>       // For size_t\n#include <cstdint>       // For uintptr_t\n#include <cstring>       // For strlen\n\nstatic const int HASH_SEED = 5381;               // Starting point for first cycle\nstatic const int HASH_MULTIPLIER = 33;           // Multiplier for each cycle\nstatic const int HASH_MASK = unsigned(-1) >> 1;  // All 1 bits except the sign\n\nint hashSeed() {\n    return HASH_SEED;\n}\n\nint hashMultiplier() {\n    return HASH_MULTIPLIER;\n}\n\nint hashMask() {\n    return HASH_MASK;\n}\n\n/* \n * Implementation notes: hashCode(int)\n * -----------------------------------\n * Hash code for integers masks off the sign bit, guaranteeing a nonnegative value.\n */\nint hashCode(int key) {\n    return key & HASH_MASK;\n}\n\n/* \n * Implementation notes: hashCode(other primitive types)\n * -----------------------------------------------------\n * Hash codes for all other primitive types forward to the hash code for integers.\n * This ensures that all hash codes get the proper masking treatment.\n *\n * Thanks to Jeremy Barenholtz for identifying that the original versions of these\n * functions, which just cast their arguments to integers, could lead to negative\n * results.\n */\nint hashCode(bool key) {\n    return hashCode(static_cast<int>(key));\n}\n\nint hashCode(char key) {\n    return hashCode(static_cast<int>(key));\n}\n\nint hashCode(unsigned int key) {\n    return hashCode(static_cast<int>(key));\n}\n\nint hashCode(long key) {\n    return hashCode(static_cast<int>(key));\n}\n\nint hashCode(unsigned long key) {\n    return hashCode(static_cast<int>(key));\n}\n\nint hashCode(short key) {\n    return hashCode(static_cast<int>(key));\n}\n\nint hashCode(unsigned short key) {\n    return hashCode(static_cast<int>(key));\n}\n\n#ifdef _WIN64\nint hashCode(uintptr_t key) {\n    return hashCode(static_cast<unsigned long>(key));\n}\n#endif // _WIN64\n\n/* \n * Implementation notes: hashCode(void*)\n * -----------------------------------------------------\n * Catch-all handler for pointers not matched by other\n * overloads just treats the pointer value numerically.\n */\nint hashCode(void* key) {\n    return hashCode(reinterpret_cast<uintptr_t>(key));\n}\n\n/*\n * Implementation notes: hashCode(string), hashCode(double)\n * --------------------------------------------------------\n * This function takes a string key and uses it to derive a hash code,\n * which is a nonnegative integer related to the key by a deterministic\n * function that distributes keys well across the space of integers.\n * The general method is called linear congruence, which is also used\n * in random-number generators.  The specific algorithm used here is\n * called djb2 after the initials of its inventor, Daniel J. Bernstein,\n * Professor of Mathematics at the University of Illinois at Chicago.\n */\nint hashCode(const char* base, size_t numBytes) {\n    unsigned hash = HASH_SEED;\n    for (size_t i = 0; i < numBytes; i++) {\n        hash = HASH_MULTIPLIER * hash + base[i];\n    }\n    return hashCode(hash);\n} \n\nint hashCode(const char* str) {\n    return hashCode(str, strlen(str));\n}\n\nint hashCode(const std::string& str) {\n    return hashCode(str.data(), str.length());\n}\n\nint hashCode(double key) {\n    return hashCode(reinterpret_cast<const char *>(&key), sizeof(double));\n}\n\nint hashCode(float key) {\n    return hashCode(reinterpret_cast<const char *>(&key), sizeof(float));\n}\n\nint hashCode(long double key) {\n    return hashCode(reinterpret_cast<const char *>(&key), sizeof(long double));\n}\n"
  },
  {
    "path": "Library/collections/hashcode.h",
    "content": "/*\n * File: hashcode.h\n * ----------------\n * This file declares global hashing functions for various common data types.\n * These functions are used by the HashMap and HashSet collections, as well as\n * by other collections that wish to be used as elements within HashMaps/Sets.\n */\n\n#ifndef _hashcode_h\n#define _hashcode_h\n\n#include <string>\n#include <utility>\n\n/*\n * Function: hashCode\n * Usage: int hash = hashCode(key);\n * --------------------------------\n * Returns a hash code for the specified key, which is always a\n * nonnegative integer.  This function is overloaded to support\n * all of the primitive types and the C++ <code>string</code> type.\n */\nint hashCode(bool key);\nint hashCode(char key);\nint hashCode(double key);\nint hashCode(float key);\nint hashCode(long double key);\nint hashCode(int key);\nint hashCode(unsigned int key);\nint hashCode(long key);\nint hashCode(unsigned long key);\nint hashCode(short key);\nint hashCode(unsigned short key);\nint hashCode(const char* str);\nint hashCode(const std::string& str);\nint hashCode(void* key);\n\n/*\n * Constants that are used to help implement these functions\n * (see hashcode.h for example usage)\n */\nint hashSeed();         // Starting point for first cycle\nint hashMultiplier();   // Multiplier for each cycle\nint hashMask();         // All 1 bits except the sign\n\n/*\n * Computes a composite hash code from a list of multiple values.\n * The components are scaled up so as to spread out the range of values\n * and reduce collisions.\n * The type of each value passed must have a suitable hashCode() function.\n */\ntemplate <typename T1, typename T2, typename... Others>\nint hashCode(T1&& first, T2&& second, Others&&... remaining) {\n    int result = hashSeed();\n\n    /* Compute the hash code for the last n - 1 arguments. */\n    result += hashCode(std::forward<T2>(second), std::forward<Others>(remaining)...);\n\n    /* Update the hash to factor in the hash of the first element. */\n    result *= hashMultiplier();\n    result += hashCode(std::forward<T1>(first));\n\n    /* Hash the resulting integer to mask off any unneeded bits. */\n    return hashCode(result);\n}\n\n#endif // _hashcode_h\n"
  },
  {
    "path": "Library/collections/hashmap.h",
    "content": "/*\n * File: hashmap.h\n * ---------------\n * This file exports the <code>HashMap</code> class, which stores\n * a set of <i>key</i>-<i>value</i> pairs.\n */\n\n#ifndef _hashmap_h\n#define _hashmap_h\n\n#include <cstdlib>\n#include <initializer_list>\n#include <string>\n#include <utility>\n#include <unordered_map>\n#include <functional>\n\n#include \"collections.h\"\n#include \"error.h\"\n#include \"hashcode.h\"\n#include \"vector.h\"\n\n/*\n * Class: HashMap<KeyType,ValueType>\n * ---------------------------------\n * This class implements an efficient association between\n * <b><i>keys</i></b> and <b><i>values</i></b>.  This class is\n * identical to the <a href=\"Map-class.html\"><code>Map</code></a> class\n * except for the fact that it uses a hash table as its underlying\n * representation.  Although the <code>HashMap</code> class operates in\n * constant time, the iterator for <code>HashMap</code> returns the\n * values in a seemingly random order.\n */\ntemplate <typename KeyType, typename ValueType>\nclass HashMap {\npublic:\n    /*\n     * Constructor: HashMap\n     * Usage: HashMap<KeyType,ValueType> map;\n     * --------------------------------------\n     * Initializes a new empty map that associates keys and values of\n     * the specified types.  The type used for the key must define\n     * the <code>==</code> operator, and there must be a free function\n     * with the following signature:\n     *\n     *<pre>\n     *    int hashCode(KeyType key);\n     *</pre>\n     *\n     * that returns a positive integer determined by the key.  This interface\n     * exports <code>hashCode</code> functions for <code>string</code> and\n     * the C++ primitive types.\n     */\n    HashMap() = default;\n\n    /*\n     * Constructor: HashMap\n     * Usage: HashMap<ValueType> map {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}};\n     * -------------------------------------------------------------\n     * Initializes a new map that stores the given pairs.\n     * Note that the pairs are stored in unpredictable order internally and not\n     * necessarily the order in which they are written in the initializer list.\n     */\n    HashMap(std::initializer_list<std::pair<const KeyType, ValueType>> list);\n\n    /*\n     * Destructor: ~HashMap\n     * --------------------\n     * Frees any heap storage associated with this map.\n     */\n    virtual ~HashMap() = default;\n\n    /*\n     * Method: lastKey\n     * Usage: KeyType value = map.lastKey();\n     * ------------------------------------\n     * Returns the last key in the map in the order established by the\n     * <code>for-each</code> loop.\n     * Note that since the keys are stored in an unpredictable order,\n     * this is not necessarily equal to the \"largest\" key value in any particular\n     * sorting order; it is just the key that would happen to be emitted last\n     * from a for-each loop.\n     * If the map is empty, generates an error.\n     */\n    KeyType lastKey() const;\n\n    /*\n     * Method: clear\n     * Usage: map.clear();\n     * -------------------\n     * Removes all entries from this map.\n     */\n    void clear();\n\n    /*\n     * Method: containsKey\n     * Usage: if (map.containsKey(key)) ...\n     * ------------------------------------\n     * Returns <code>true</code> if there is an entry for <code>key</code>\n     * in this map.\n     */\n    bool containsKey(const KeyType& key) const;\n\n    /*\n     * Method: equals\n     * Usage: if (map.equals(map2)) ...\n     * --------------------------------\n     * Returns <code>true</code> if the two maps contain exactly the same\n     * key/value pairs, and <code>false</code> otherwise.\n     */\n    bool equals(const HashMap& map2) const;\n\n    /*\n     * Method: firstKey\n     * Usage: KeyType value = map.firstKey();\n     * -------------------------------------\n     * Returns the first key in the map in the order established by the\n     * <code>for-each</code> loop.\n     * Note that since the keys are stored in an unpredictable order,\n     * this is not necessarily equal to the \"smallest\" key value in any particular\n     * sorting order; it is just the key that would happen to be emitted first\n     * from a for-each loop.\n     * If the map is empty, generates an error.\n     */\n    KeyType firstKey() const;\n\n    /*\n     * Method: get\n     * Usage: ValueType value = map.get(key);\n     * --------------------------------------\n     * Returns the value associated with <code>key</code> in this map.\n     * If <code>key</code> is not found, <code>get</code> returns the\n     * default value for <code>ValueType</code>.\n     */\n    ValueType get(const KeyType& key) const;\n\n    /*\n     * Method: isEmpty\n     * Usage: if (map.isEmpty()) ...\n     * -----------------------------\n     * Returns <code>true</code> if this map contains no entries.\n     */\n    bool isEmpty() const;\n\n    /*\n     * Method: keys\n     * Usage: Vector<KeyType> keys = map.keys();\n     * -----------------------------------------\n     * Returns a collection containing all keys in this map.\n     * Note that this implementation makes a deep copy of the keys,\n     * so it is inefficient to call on large maps.\n     */\n    Vector<KeyType> keys() const;\n\n    /*\n     * Method: mapAll\n     * Usage: map.mapAll(fn);\n     * ----------------------\n     * Iterates through the map entries and calls <code>fn(key, value)</code>\n     * for each one.  The keys are processed in an undetermined order.\n     */\n    void mapAll(std::function<void(const KeyType&, const ValueType&)> fn) const;\n\n    /*\n     * Method: put\n     * Usage: map.put(key, value);\n     * ---------------------------\n     * Associates <code>key</code> with <code>value</code> in this map.\n     * Any previous value associated with <code>key</code> is replaced\n     * by the new value.\n     */\n    void put(const KeyType& key, const ValueType& value);\n\n    /*\n     * Method: putAll\n     * Usage: map.putAll(map2);\n     * ---------------------------\n     * Adds all key/value pairs from the given map to this map.\n     * If both maps contain a pair for the same key, the one from map2 will\n     * replace the one from this map.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     * Returns a reference to this map.\n     */\n    HashMap& putAll(const HashMap& map2);\n\n    /*\n     * Method: remove\n     * Usage: map.remove(key);\n     * -----------------------\n     * Removes any entry for <code>key</code> from this map.\n     * If the given key is not found, has no effect.\n     */\n    void remove(const KeyType& key);\n\n    /*\n     * Method: removeAll\n     * Usage: map.removeAll(map2);\n     * ---------------------------\n     * Removes all key/value pairs from this map that are contained in the given map.\n     * If both maps contain the same key but it maps to different values, that\n     * mapping will not be removed.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     * Returns a reference to this map.\n     */\n    HashMap& removeAll(const HashMap& map2);\n\n    /*\n     * Method: retainAll\n     * Usage: map.retainAll(map2);\n     * ---------------------------\n     * Removes all key/value pairs from this map that are not contained in the given map.\n     * If both maps contain the same key but it maps to different values, that\n     * mapping will be removed.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     * Returns a reference to this map.\n     */\n    HashMap& retainAll(const HashMap& map2);\n\n    /*\n     * Method: size\n     * Usage: int nEntries = map.size();\n     * ---------------------------------\n     * Returns the number of entries in this map.\n     */\n    int size() const;\n\n    /*\n     * Method: toString\n     * Usage: string str = map.toString();\n     * -----------------------------------\n     * Converts the map to a printable string representation.\n     */\n    std::string toString() const;\n\n    /*\n     * Method: values\n     * Usage: Vector<ValueType> values = map.values();\n     * -----------------------------------------------\n     * Returns a collection containing all values in this map.\n     * Note that this implementation makes a deep copy of the values,\n     * so it is inefficient to call on large maps.\n     */\n    Vector<ValueType> values() const;\n\n    /*\n     * Operator: []\n     * Usage: map[key]\n     * ---------------\n     * Selects the value associated with <code>key</code>.  This syntax\n     * makes it easy to think of a map as an \"associative array\"\n     * indexed by the key type.  If <code>key</code> is already present\n     * in the map, this function returns a reference to its associated\n     * value.  If key is not present in the map, a new entry is created\n     * whose value is set to the default for the value type.\n     */\n    ValueType& operator [](const KeyType& key);\n    const ValueType& operator [](const KeyType& key) const;\n\n    /*\n     * Operator: +\n     * Usage: map1 + map2\n     * ------------------\n     * Returns the union of the two maps, equivalent to a copy of the first map\n     * with putAll called on it passing the second map as a parameter.\n     * If the two maps both contain a mapping for the same key, the mapping\n     * from the second map is favored.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     */\n    HashMap operator +(const HashMap& map2) const;\n\n    /*\n     * Operator: +=\n     * Usage: map1 += map2;\n     * --------------------\n     * Adds all key/value pairs from the given map to this map.\n     * Equivalent to calling putAll(map2).\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     */\n    HashMap& operator +=(const HashMap& map2);\n\n    /*\n     * Operator: -\n     * Usage: map1 - map2\n     * ------------------\n     * Returns the difference of the two maps, equivalent to a copy of the first map\n     * with removeAll called on it passing the second map as a parameter.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     */\n    HashMap operator -(const HashMap& map2) const;\n\n    /*\n     * Operator: -=\n     * Usage: map1 -= map2;\n     * --------------------\n     * Removes all key/value pairs from the given map to this map.\n     * Equivalent to calling removeAll(map2).\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     */\n    HashMap& operator -=(const HashMap& map2);\n\n    /*\n     * Operator: *\n     * Usage: map1 * map2\n     * ------------------\n     * Returns the intersection of the two maps, equivalent to a copy of the first map\n     * with retainAll called on it passing the second map as a parameter.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     */\n    HashMap operator *(const HashMap& map2) const;\n\n    /*\n     * Operator: *=\n     * Usage: map1 *= map2;\n     * ---------------------\n     * Removes all key/value pairs that are not found in the given map from this map.\n     * Equivalent to calling retainAll(map2).\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     */\n    HashMap& operator *=(const HashMap& map2);\n\n    /*\n     * Additional HashMap operations\n     * -----------------------------\n     * In addition to the methods listed in this interface, the HashMap\n     * class supports the following operations:\n     *\n     *   - Stream I/O using the << and >> operators\n     *   - Deep copying for the copy constructor and assignment operator\n     *   - Iteration using the range-based for statement and STL iterators\n     *\n     * The HashMap class makes no guarantees about the order of iteration.\n     */\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\nprivate:\n    static_assert(stanfordcpplib::collections::IsHashable<KeyType>::value,\n                  \"Oops! You tried using a type as a key in our HashMap without making it hashable. Click this error for more details.\");\n    /*\n     * Hello CS106 students! If you got directed to this line of code in a compiler error,\n     * it probably means that you tried making a HashMap with a custom struct or class type\n     * as the key type or a HashSet with a custom struct as a value type.\n     *\n     * In order to have a type be a key type in a HashMap - or to have a type be a value type\n     * in a HashSet - it needs to have a hashCode function defined and be capable of being\n     * compared using the == operator. If you were directed here, one of those two conditions\n     * wasn't met.\n     *\n     * There are two ways to fix this. The first option would simply be to not use your custom\n     * type as a key in the HashMap or value in a HashSet. This is probably the easiest option.\n     *\n     * The second way to fix this is to explicitly define a hashCode() and operator== function\n     * for your type. To do so, first define hashCode as follows:\n     *\n     *     int hashCode(const YourCustomType& obj) {\n     *         return hashCode(obj.data1, obj.data2, ..., obj.dataN);\n     *     }\n     *\n     * where data1, data2, ... dataN are the data members of your type. For example, if you had\n     * a custom type\n     *\n     *     struct MyType {\n     *         int myInt;\n     *         string myString;\n     *     };\n     *\n     * you would define the function\n     *\n     *     int hashCode(const MyType& obj) {\n     *         return hashCode(obj.myInt, obj.myString);\n     *     }\n     *\n     * Second, define operator== as follows:\n     *\n     *     bool operator== (const YourCustomType& lhs, const YourCustomType& rhs) {\n     *         return lhs.data1 == rhs.data1 &&\n     *                lhs.data2 == rhs.data2 &&\n     *                         ...\n     *                lhs.dataN == rhs.dataN;\n     *     }\n     *\n     * Using the MyType example from above, we'd write\n     *\n     *     bool operator== (const MyType& lhs, const MyType& rhs) {\n     *         return lhs.myInt == rhs.myInt && lhs.myString == rhs.myString;\n     *     }\n     *\n     * Hope this helps!\n     */\n\n    struct Hasher {\n        std::size_t operator()(const KeyType& key) const {\n            return hashCode(key);\n        }\n    };\n\n    std::unordered_map<KeyType, ValueType, Hasher> _elements;\n    stanfordcpplib::collections::VersionTracker _version;\n\n    /* Private methods */\n\npublic:\n    /*\n     * Hidden features\n     * ---------------\n     * The remainder of this file consists of the code required to\n     * support deep copying and iteration.  Including these methods\n     * in the public interface would make that interface more\n     * difficult to understand for the average client.\n     */\n\n    /*\n     * Iterator support\n     */\n\n    using const_iterator = stanfordcpplib::collections::ProjectingIterator<stanfordcpplib::collections::CheckedIterator<typename std::unordered_map<KeyType, ValueType, Hasher>::const_iterator>>;\n    using iterator = const_iterator;\n\n    iterator begin() const;\n    iterator end() const;\n\n    /*\n     * Hashing support.\n     */\n    bool operator== (const HashMap& rhs) const;\n    bool operator!= (const HashMap& rhs) const;\n\n    template <typename K, typename V>\n    friend int hashCode(const HashMap<K, V>& map);\n};\n\ntemplate <typename KeyType, typename ValueType>\nHashMap<KeyType, ValueType>::HashMap(std::initializer_list<std::pair<const KeyType, ValueType>> list)\n        : _elements(list) {\n}\n\ntemplate <typename KeyType, typename ValueType>\nKeyType HashMap<KeyType, ValueType>::lastKey() const {\n    if (isEmpty()) {\n        error(\"HashMap::lastKey: map is empty\");\n    }\n\n    return std::next(_elements.begin(), _elements.size() - 1)->first;\n}\n\ntemplate <typename KeyType, typename ValueType>\nvoid HashMap<KeyType, ValueType>::clear() {\n    _elements.clear();\n    _version.update();\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool HashMap<KeyType, ValueType>::containsKey(const KeyType& key) const {\n    return !!_elements.count(key);\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool HashMap<KeyType, ValueType>::equals(const HashMap<KeyType, ValueType>& map2) const {\n    return stanfordcpplib::collections::equalsMap(*this, map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nKeyType HashMap<KeyType, ValueType>::firstKey() const {\n    if (isEmpty()) {\n        error(\"HashMap::firstKey: map is empty\");\n    }\n    return *begin();\n}\n\ntemplate <typename KeyType, typename ValueType>\nValueType HashMap<KeyType, ValueType>::get(const KeyType& key) const {\n    auto itr = _elements.find(key);\n    return itr == _elements.end()? ValueType() : itr->second;\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool HashMap<KeyType, ValueType>::isEmpty() const {\n    return _elements.empty();\n}\n\ntemplate <typename KeyType, typename ValueType>\nVector<KeyType> HashMap<KeyType, ValueType>::keys() const {\n    Vector<KeyType> keyset;\n    for (const auto& entry: _elements) {\n        keyset.add(entry.first);\n    }\n    return keyset;\n}\n\ntemplate <typename KeyType, typename ValueType>\nvoid HashMap<KeyType, ValueType>::mapAll(std::function<void (const KeyType&, const ValueType&)> fn) const {\n    for (const auto& entry: _elements) {\n        fn(entry.first, entry.second);\n    }\n}\n\ntemplate <typename KeyType, typename ValueType>\nvoid HashMap<KeyType, ValueType>::put(const KeyType& key, const ValueType& value) {\n    int presize = size();\n    _elements[key] = value;\n\n    if (presize != size()) _version.update();\n}\n\ntemplate <typename KeyType, typename ValueType>\nHashMap<KeyType, ValueType>& HashMap<KeyType, ValueType>::putAll(const HashMap& map2) {\n    for (const KeyType& key : map2) {\n        put(key, map2.get(key));\n    }\n    return *this;\n}\n\ntemplate <typename KeyType, typename ValueType>\nvoid HashMap<KeyType, ValueType>::remove(const KeyType& key) {\n    auto itr = _elements.find(key);\n    if (itr != _elements.end()) {\n        _elements.erase(itr);\n        _version.update();\n    }\n}\n\ntemplate <typename KeyType, typename ValueType>\nHashMap<KeyType, ValueType>& HashMap<KeyType, ValueType>::removeAll(const HashMap& map2) {\n    for (const KeyType& key : map2) {\n        if (containsKey(key) && get(key) == map2.get(key)) {\n            remove(key);\n        }\n    }\n    return *this;\n}\n\ntemplate <typename KeyType, typename ValueType>\nHashMap<KeyType, ValueType>& HashMap<KeyType, ValueType>::retainAll(const HashMap& map2) {\n    Vector<KeyType> toRemove;\n    for (const KeyType& key : *this) {\n        if (!map2.containsKey(key) || get(key) != map2.get(key)) {\n            toRemove.add(key);\n        }\n    }\n    for (const KeyType& key : toRemove) {\n        remove(key);\n    }\n    return *this;\n}\n\ntemplate <typename KeyType, typename ValueType>\nint HashMap<KeyType, ValueType>::size() const {\n    return _elements.size();\n}\n\ntemplate <typename KeyType, typename ValueType>\nstd::string HashMap<KeyType, ValueType>::toString() const {\n    std::ostringstream os;\n    os << *this;\n    return os.str();\n}\n\ntemplate <typename KeyType, typename ValueType>\nVector<ValueType> HashMap<KeyType, ValueType>::values() const {\n    Vector<ValueType> values;\n    for (const auto& entry: _elements) {\n        values.add(entry.second);\n    }\n    return values;\n}\n\ntemplate <typename KeyType, typename ValueType>\nValueType& HashMap<KeyType, ValueType>::operator [](const KeyType& key) {\n    int presize = size();\n    ValueType& result = _elements[key];\n\n    if (presize != size()) _version.update();\n    return result;\n}\n\ntemplate <typename KeyType, typename ValueType>\nconst ValueType& HashMap<KeyType, ValueType>::operator [](const KeyType& key) const {\n    auto itr = _elements.find(key);\n    if (itr != _elements.end()) {\n        return itr->second;\n    }\n    /* We need to return a reference to a default-constructed object of the\n     * specified type. We thus construct a unique default-initialized version\n     * of the object and return it.\n     */\n    else {\n        static const ValueType singleton{};\n        return singleton;\n    }\n}\n\ntemplate <typename KeyType, typename ValueType>\nHashMap<KeyType, ValueType> HashMap<KeyType, ValueType>::operator +(const HashMap& map2) const {\n    HashMap<KeyType, ValueType> result = *this;\n    return result.putAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nHashMap<KeyType, ValueType>& HashMap<KeyType, ValueType>::operator +=(const HashMap& map2) {\n    return putAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nHashMap<KeyType, ValueType> HashMap<KeyType, ValueType>::operator -(const HashMap& map2) const {\n    HashMap<KeyType, ValueType> result = *this;\n    return result.removeAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nHashMap<KeyType, ValueType>& HashMap<KeyType, ValueType>::operator -=(const HashMap& map2) {\n    return removeAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nHashMap<KeyType, ValueType> HashMap<KeyType, ValueType>::operator *(const HashMap& map2) const {\n    HashMap<KeyType, ValueType> result = *this;\n    return result.retainAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nHashMap<KeyType, ValueType>& HashMap<KeyType, ValueType>::operator *=(const HashMap& map2) {\n    return retainAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\ntypename HashMap<KeyType, ValueType>::iterator HashMap<KeyType, ValueType>::begin() const {\n    return iterator({ &_version, _elements.begin(), _elements });\n}\n\ntemplate <typename KeyType, typename ValueType>\ntypename HashMap<KeyType, ValueType>::iterator HashMap<KeyType, ValueType>::end() const {\n    return iterator({ &_version, _elements.end(), _elements });\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool HashMap<KeyType, ValueType>::operator == (const HashMap<KeyType, ValueType>& rhs) const {\n    return stanfordcpplib::collections::equalsMap(*this, rhs);\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool HashMap<KeyType, ValueType>::operator != (const HashMap<KeyType, ValueType>& rhs) const {\n    return !(*this == rhs);\n}\n\ntemplate <typename KeyType, typename ValueType>\nint hashCode(const HashMap<KeyType, ValueType>& map) {\n    return stanfordcpplib::collections::hashCodeMap(map, false);\n}\n\n/*\n * Implementation notes: << and >>\n * -------------------------------\n * The insertion and extraction operators use the template facilities in\n * strlib.h to read and write generic values in a way that treats strings\n * specially.\n */\ntemplate <typename KeyType, typename ValueType>\nstd::ostream& operator <<(std::ostream& os,\n                          const HashMap<KeyType, ValueType>& map) {\n    return stanfordcpplib::collections::writeMap(os, map);\n}\n\ntemplate <typename KeyType, typename ValueType>\nstd::istream& operator >>(std::istream& is,\n                          HashMap<KeyType, ValueType>& map) {\n    KeyType key;\n    ValueType value;\n    return stanfordcpplib::collections::readPairedCollection(is, map, key, value, /* descriptor */ std::string(\"HashMap::operator >>\"));\n}\n\n/*\n * Function: randomKey\n * Usage: element = randomKey(map);\n * --------------------------------\n * Returns a randomly chosen key of the given map.\n * Throws an error if the map is empty.\n */\ntemplate <typename K, typename V>\nconst K& randomKey(const HashMap<K, V>& map) {\n    return stanfordcpplib::collections::randomElement(map);\n}\n\n#endif // _hashmap_h\n"
  },
  {
    "path": "Library/collections/hashset.h",
    "content": "/*\n * File: hashset.h\n * ---------------\n * This file exports the <code>HashSet</code> class, which\n * implements an efficient abstraction for storing sets of values.\n */\n\n#ifndef _hashset_h\n#define _hashset_h\n\n#include <initializer_list>\n#include <iostream>\n\n#include \"collections.h\"\n#include \"hashmap.h\"\n\n/* Traits type for the HashSet, which wraps an underlying HashMap. */\nnamespace stanfordcpplib {\n    namespace collections {\n        template <typename T> struct HashSetTraits {\n            using ValueType = T;\n            using MapType   = HashMap<T, bool>;\n            static std::string name() {\n                return \"HashSet\";\n            }\n            /* You can default-construct a HashSet. */\n            static MapType construct() {\n                return {};\n            }\n\n            /* However, you can't pass in any other arguments. */\n            template <typename... Args>\n            static void construct(Args&&...) {\n                static_assert(Fail<Args...>::value, \"Oops! Seems like you tried to initialize a HashSet incorrectly. Click here for details.\");\n\n                /*\n                 * Hello student! If you are reading this message, it means that you tried to\n                 * initialize a HashSet improperly. For example, you might have tried to\n                 * write something like this:\n                 *\n                 *     HashSet<int> mySet = 137; // Oops!\n                 *\n                 * Here, for example, you're trying to assign an int to a HashSet<int>.\n                 *\n                 * or perhaps you had a function like this one:\n                 *\n                 *     void myFunction(HashSet<int>& mySet);\n                 *\n                 * and you called it by writing\n                 *\n                 *     myFunction(someSet + someOtherSet); // Oops!\n                 *     myFunction({ });                    // Oops!\n                 *\n                 * In these cases, you're trying to pass a value into a function that takes\n                 * its argument by (non-const) reference. C++ doesn't allow you to do this.\n                 *\n                 * To see where the actual error comes from, look in the list of error messages\n                 * in Qt Creator. You should see a line that says \"required from here\" that\n                 * points somewhere in your code. That's the actual line you wrote that caused\n                 * the problem, so double-click on that error message and see where it takes\n                 * you. Now you know where to look!\n                 *\n                 * Hope this helps!\n                 */\n                error(\"static_assert succeeded?\");\n            }\n        };\n    }\n}\n\n/*\n * A set of elements stored in no particular order. Elements can only be stored here\n * if they support a function\n *\n *     int hashCode(ValueType);\n *\n * that returns a nonnegative integer, along with equality comparison using ==.\n */\ntemplate <typename ValueType>\n    using HashSet = stanfordcpplib::collections::GenericSet<stanfordcpplib::collections::HashSetTraits<ValueType>>;\n\n#endif // _hashset_h\n"
  },
  {
    "path": "Library/collections/lexicon.h",
    "content": "/*\n * File: lexicon.h\n * ---------------\n * This file exports the <code>Lexicon</code> class, which\n * is a typedef you can set to either TrieLexicon or DawgLexicon.\n * As of Fall 2023, Lexicon defaults to TrieLexicon.\n */\n\n#pragma once\n\n#include \"trielexicon.h\"\n#include \"dawglexicon.h\"\n\ntypedef TrieLexicon Lexicon;\n"
  },
  {
    "path": "Library/collections/linkedlist.h",
    "content": "/*\n * File: linkedlist.h\n * ------------------\n * This file exports the <code>LinkedList</code> class, which provides an\n * implementation of a doubly-linked list of objects and provides a\n * public interface similar to that of the <code>Vector</code> class.\n */\n\n#ifndef _linkedlist_h\n#define _linkedlist_h\n\n#include <algorithm>\n#include <initializer_list>\n#include <iostream>\n#include <iterator>\n#include <list>\n#include <sstream>\n#include <string>\n#include <functional>\n\n#include \"collections.h\"\n#include \"error.h\"\n#include \"hashcode.h\"\n#include \"random.h\"\n#include \"strlib.h\"\n#include \"vector.h\"\n\n/*\n * Class: LinkedList<ValueType>\n * ----------------------------\n * This class stores an ordered list of values similar to an array.\n * It supports traditional array selection using square brackets, but\n * also supports inserting and deleting elements.  It is similar in\n * function to the STL <code>list</code> type.\n */\ntemplate <typename ValueType>\nclass LinkedList {\npublic:\n    /*\n     * Constructor: LinkedList\n     * Usage: LinkedList<ValueType> list;\n     * ----------------------------------\n     * Initializes a new LinkedList.  The default constructor creates an\n     * empty LinkedList.\n     */\n    LinkedList() = default;\n    /* implicit */ LinkedList(const std::list<ValueType>& v);\n\n    /*\n     * This constructor uses an initializer list to set up the linked list.\n     * Usage: LinkedList<int> list {1, 2, 3};\n     */\n    LinkedList(std::initializer_list<ValueType> list);\n\n    /*\n     * Destructor: ~LinkedList\n     * -------------------\n     * Frees any heap storage allocated by this LinkedList.\n     */\n    virtual ~LinkedList() = default;\n\n    /*\n     * Method: add\n     * Usage: list.add(value);\n     * ----------------------\n     * Adds a new value to the end of this LinkedList.\n     */\n    void add(ValueType value);\n\n    /*\n     * Method: addAll\n     * Usage: list.addAll(l2);\n     * -----------------------\n     * Adds all elements of the given other linked list to this list.\n     * Returns a reference to this list.\n     * Identical in behavior to the += operator.\n     */\n    LinkedList<ValueType>& addAll(const LinkedList<ValueType>& list);\n\n    /*\n     * Method: clear\n     * Usage: list.clear();\n     * --------------------\n     * Removes all elements from this LinkedList.\n     */\n    void clear();\n\n    /*\n     * Method: equals\n     * Usage: if (list.equals(l2)) ...\n     * -------------------------------\n     * Returns <code>true</code> if this linked list contains exactly the same\n     * values as the given other list.\n     * Identical in behavior to the == operator.\n     */\n    bool equals(const LinkedList<ValueType>& l2) const;\n\n    /*\n     * Method: get\n     * Usage: ValueType val = list.get(index);\n     * ---------------------------------------\n     * Returns the element at the specified index in this LinkedList.  This\n     * method signals an error if the index is not in the list range.\n     *\n     * The client should be mindful that unlike with a vector, this operation\n     * is O(N) for linked lists because it must traverse the list to reach\n     * the given index.\n     */\n    const ValueType& get(int index) const;\n\n    /*\n     * Method: insert\n     * Usage: list.insert(0, value);\n     * -----------------------------\n     * Inserts the element into this LinkedList before the specified index.\n     * This method signals an error if the index is outside the range from 0\n     * up to and including the length of the LinkedList.\n     */\n    void insert(int index, ValueType value);\n\n    /*\n     * Method: isEmpty\n     * Usage: if (list.isEmpty()) ...\n     * ------------------------------\n     * Returns <code>true</code> if this LinkedList contains no elements.\n     */\n    bool isEmpty() const;\n\n    /*\n     * Method: mapAll\n     * Usage: list.mapAll(fn);\n     * ----------------------\n     * Calls the specified function on each element of the LinkedList in\n     * ascending index order.\n     */\n    void mapAll(std::function<void (const ValueType &)> fn) const;\n\n    /*\n     * Method: remove\n     * Usage: list.remove(index);\n     * -------------------------\n     * Removes the element at the specified index from this LinkedList.\n     * This method signals an error if the index is outside the list range.\n     */\n    void remove(int index);\n\n    /*\n     * Method: set\n     * Usage: list.set(index, value);\n     * ------------------------------\n     * Replaces the element at the specified index in this LinkedList with\n     * a new value.  The previous value at that index is overwritten.\n     * This method signals an error if the index is not in the list range.\n     *\n     * The client should be mindful that unlike with a vector, this operation\n     * is O(N) for linked lists because it must traverse the list to reach\n     * the given index.\n     */\n    void set(int index, const ValueType& value);\n\n    /*\n     * Method: size\n     * Usage: int nElems = list.size();\n     * --------------------------------\n     * Returns the number of elements in this LinkedList.\n     */\n    int size() const;\n\n    /*\n     * Method: sort\n     * Usage: list.sort();\n     * -------------------\n     * Rearranges the order of the elements in this list into sorted order.\n     * For example, if the list stores {9, 1, 4, 3}, changes it to store {1, 3, 4, 9}.\n     * The ValueType must have an operator < to call this method.\n     */\n    void sort();\n\n    /*\n     * Method: subList\n     * Usage: LinkedList<ValueType> sub = list.subList(start, length);\n     * ---------------------------------------------------------------\n     * Returns a new list containing the given subset range of elements\n     * from this list. The new list is a deep copy, not linked to this one.\n     * Throws an error if the range (start .. start + length) is not contained\n     * within the bounds of this list, or if length is negative.\n     */\n    LinkedList<ValueType> subList(int start, int length) const;\n\n    /*\n     * Method: toString\n     * Usage: string str = list.toString();\n     * ------------------------------------\n     * Converts the LinkedList to a printable string representation.\n     */\n    std::string toString() const;\n\n    /*\n     * Operator: []\n     * Usage: list[index]\n     * -----------------\n     * Overloads <code>[]</code> to select elements from this LinkedList.\n     * This extension enables the use of traditional array notation to\n     * get or set individual elements.  This method signals an error if\n     * the index is outside the list range.  The file supports two\n     * versions of this operator, one for <code>const</code> LinkedLists and\n     * one for mutable LinkedLists.\n     *\n     * The client should be mindful that this operation is O(N) for linked\n     * lists because it must traverse the list to reach the given index.\n     */\n    ValueType& operator [](int index);\n    const ValueType& operator [](int index) const;\n\n    /*\n     * Operator: +\n     * Usage: v1 + l2\n     * --------------\n     * Concatenates two LinkedLists, or concatenates this linked list with an\n     * initializer list such as {1, 2, 3}.\n     */\n    LinkedList operator +(const LinkedList& l2) const;\n    LinkedList operator +(std::initializer_list<ValueType> list) const;\n\n    /*\n     * Operator: +=\n     * Usage: l1 += l2;\n     *        l1 += value;\n     * -------------------\n     * Adds all of the elements from <code>l2</code> (or the single\n     * specified value) to <code>l1</code>.  As a convenience, the\n     * <code>LinkedList</code> package also overloads the comma operator so\n     * that it is possible to initialize a LinkedList like this:\n     *\n     *<pre>\n     *    LinkedList&lt;int&gt; digits;\n     *    digits += 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;\n     *</pre>\n     */\n    LinkedList& operator +=(const LinkedList& l2);\n    LinkedList& operator +=(const ValueType& value);\n\n    /*\n     * Comparing LinkedLists for equality.\n     */\n    bool operator ==(const LinkedList& list2) const;\n    bool operator !=(const LinkedList& list2) const;\n\n\n    /*\n     * Operators: <, >, <=, >=\n     * Usage: if (list1 == list2) ...\n     * ...\n     * -------------------------------\n     * Relational operators to compare two lists.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     */\n    bool operator <(const LinkedList& list2) const;\n    bool operator <=(const LinkedList& list2) const;\n    bool operator >(const LinkedList& list2) const;\n    bool operator >=(const LinkedList& list2) const;\n\n    /*\n     * Additional LinkedList operations\n     * --------------------------------\n     * In addition to the methods listed in this interface, the LinkedList\n     * class supports the following operations:\n     *\n     *   - Stream I/O using the << and >> operators\n     *   - Deep copying for the copy constructor and assignment operator\n     *   - Iteration using the range-based for statement or STL iterators\n     *\n     * The iteration forms process the LinkedList in index order.\n     */\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\nprivate:\n    /*\n     * Implementation notes: LinkedList data structure\n     * -------------------------------------------\n     * The elements of the LinkedList are stored in a dynamic array of\n     * the specified element type.  If the space in the array is ever\n     * exhausted, the implementation doubles the array capacity.\n     */\n\n    /* Instance variables */\n    std::list<ValueType> _elements;   // STL linked list as backing storage\n    stanfordcpplib::collections::VersionTracker _version;\n\n    /* Private methods */\n\n    /*\n     * Throws an ErrorException if the given index is not within the range of\n     * [min..max] inclusive.\n     * This is a consolidated error handler for all various LinkedList members that\n     * accept index parameters.\n     * The prefix parameter represents a text string to place at the start of\n     * the error message, generally to help indicate which member threw the error.\n     *\n     * We make prefix a const char* rather than a std::string to avoid having to\n     * construct and then destroy the prefix with each call.\n     */\n    void checkIndex(int index, int min, int max, const char* prefix) const;\n\n    /*\n     * Hidden features\n     * ---------------\n     * The remainder of this file consists of the code required to\n     * support deep copying and iteration.  Including these methods\n     * in the public interface would make that interface more\n     * difficult to understand for the average client.\n     */\n\npublic:\n\n    /*\n     * Operator: ,\n     * -----------\n     * Adds an element to the LinkedList passed as the left-hand operatand.\n     * This form makes it easier to initialize LinkedLists in old versions of C++.\n     */\n    LinkedList& operator ,(const ValueType& value);\n\n    /*\n     * Iterator support.\n     */\n    using iterator = stanfordcpplib::collections::CheckedIterator<typename std::list<ValueType>::iterator>;\n    using const_iterator = stanfordcpplib::collections::CheckedIterator<typename std::list<ValueType>::const_iterator>;\n\n    iterator begin() {\n        return { &_version, _elements.begin(), _elements };\n    }\n    iterator end() {\n        return { &_version, _elements.end(), _elements };\n    }\n    const_iterator begin() const {\n        return { &_version, _elements.begin(), _elements };\n    }\n    const_iterator end() const {\n        return { &_version, _elements.end(), _elements };\n    }\n};\n\n/* Implementation section */\n\ntemplate <typename ValueType>\nLinkedList<ValueType>::LinkedList(const std::list<ValueType>& v)\n        : _elements(v) {\n    // empty\n}\n\ntemplate <typename ValueType>\nLinkedList<ValueType>::LinkedList(std::initializer_list<ValueType> list) : _elements(list) {\n    // empty\n}\n\ntemplate <typename ValueType>\nvoid LinkedList<ValueType>::add(ValueType value) {\n    _elements.push_back(value);\n    _version.update();\n}\n\ntemplate <typename ValueType>\nLinkedList<ValueType>&\nLinkedList<ValueType>::addAll(const LinkedList<ValueType>& list) {\n    for (const ValueType& value : list) {\n        add(value);\n    }\n    _version.update();\n    return *this;\n}\n\ntemplate <typename ValueType>\nvoid LinkedList<ValueType>::clear() {\n    _elements.clear();\n    _version.update();\n}\n\n\ntemplate <typename ValueType>\nbool LinkedList<ValueType>::equals(const LinkedList<ValueType>& list2) const {\n    return _elements == list2._elements;\n}\n\n\ntemplate <typename ValueType>\nconst ValueType & LinkedList<ValueType>::get(int index) const {\n    checkIndex(index, 0, size()-1, \"get\");\n    return *std::next(_elements.begin(), index);\n}\n\ntemplate <typename ValueType>\nvoid LinkedList<ValueType>::insert(int index, ValueType value) {\n    checkIndex(index, 0, size(), \"insert\");\n    auto itr = _elements.begin();\n    std::advance(itr, index);\n    _elements.insert(itr, value);\n    _version.update();\n}\n\ntemplate <typename ValueType>\nbool LinkedList<ValueType>::isEmpty() const {\n    return _elements.empty();\n}\n\n/*\n * Implementation notes: mapAll\n * ----------------------------\n * The various versions of the mapAll function apply the function or\n * function object to each element in ascending index order.\n */\ntemplate <typename ValueType>\nvoid LinkedList<ValueType>::mapAll(std::function<void (const ValueType &)> fn) const {\n    for (ValueType element : *this) {\n        fn(element);\n    }\n}\n\ntemplate <typename ValueType>\nvoid LinkedList<ValueType>::remove(int index) {\n    checkIndex(index, 0, size()-1, \"remove\");\n    auto itr = _elements.begin();\n    advance(itr, index);\n    _elements.erase(itr);\n    _version.update();\n}\n\ntemplate <typename ValueType>\nvoid LinkedList<ValueType>::set(int index, const ValueType & value) {\n    checkIndex(index, 0, size()-1, \"set\");\n    (*this)[index] = value;\n}\n\ntemplate <typename ValueType>\nint LinkedList<ValueType>::size() const {\n    return _elements.size();\n}\n\n\ntemplate <typename ValueType>\nvoid LinkedList<ValueType>::sort() {\n    // actually sort a vector to avoid O(N^2) runtime\n    // at the cost of O(N) extra memory usage\n    Vector<ValueType> vec;\n    for (ValueType element : *this) {\n        vec.add(element);\n    }\n    std::sort(vec.begin(), vec.end());\n\n    clear();\n    for (const ValueType& element : vec) {\n        add(element);\n    }\n}\n\ntemplate <typename ValueType>\nLinkedList<ValueType> LinkedList<ValueType>::subList(int start, int length) const {\n    checkIndex(start, 0, size(), \"subList\");\n    checkIndex(start + length, 0, size(), \"subList\");\n    if (length < 0) {\n        error(\"LinkedList::subList: length cannot be negative\");\n    }\n    LinkedList<ValueType> result;\n    auto itr = begin();\n    for (int i = 0; i < start; i++) {\n        ++itr;\n    }\n    for (int i = 0; i < length; i++) {\n        result.add(*itr);\n        ++itr;\n    }\n    return result;\n}\n\ntemplate <typename ValueType>\nstd::string LinkedList<ValueType>::toString() const {\n    std::ostringstream os;\n    os << *this;\n    return os.str();\n}\n\n/*\n * Implementation notes: LinkedList selection\n * ------------------------------------------\n * The following code implements traditional array selection using\n * square brackets for the index.\n */\ntemplate <typename ValueType>\nValueType& LinkedList<ValueType>::operator [](int index) {\n    checkIndex(index, 0, size()-1, \"operator []\");\n    auto itr = begin();\n    advance(itr, index);\n    return *itr;\n}\ntemplate <typename ValueType>\nconst ValueType& LinkedList<ValueType>::operator [](int index) const {\n    checkIndex(index, 0, size()-1, \"operator []\");\n    auto itr = begin();\n    advance(itr, index);\n    return *itr;\n}\n\ntemplate <typename ValueType>\nLinkedList<ValueType>\nLinkedList<ValueType>::operator +(const LinkedList& list2) const {\n    LinkedList<ValueType> list = *this;\n    return list.addAll(list2);\n}\n\ntemplate <typename ValueType>\nLinkedList<ValueType> LinkedList<ValueType>::operator +(std::initializer_list<ValueType> list) const {\n    LinkedList<ValueType> result = *this;\n    return result.addAll(list);\n}\n\ntemplate <typename ValueType>\nLinkedList<ValueType>&\nLinkedList<ValueType>::operator +=(const LinkedList& list2) {\n    return addAll(list2);\n}\n\ntemplate <typename ValueType>\nLinkedList<ValueType>&\nLinkedList<ValueType>::operator +=(const ValueType& value) {\n    add(value);\n    return *this;\n}\n\n/*\n * Implementation notes: relational operators\n * These operators just forward to the underlying STL list.\n */\ntemplate <typename ValueType>\nbool LinkedList<ValueType>::operator ==(const LinkedList& list2) const {\n    return _elements == list2._elements;\n}\n\ntemplate <typename ValueType>\nbool LinkedList<ValueType>::operator !=(const LinkedList& list2) const {\n    return _elements != list2._elements;\n}\n\ntemplate <typename ValueType>\nbool LinkedList<ValueType>::operator <(const LinkedList& list2) const {\n    return _elements < list2._elements;\n}\n\ntemplate <typename ValueType>\nbool LinkedList<ValueType>::operator <=(const LinkedList& list2) const {\n    return _elements <= list2._elements;\n}\n\ntemplate <typename ValueType>\nbool LinkedList<ValueType>::operator >(const LinkedList& list2) const {\n    return _elements > list2._elements;\n}\n\ntemplate <typename ValueType>\nbool LinkedList<ValueType>::operator >=(const LinkedList& list2) const {\n    return this->_elements >= list2._elements;\n}\n\ntemplate <typename ValueType>\nvoid LinkedList<ValueType>::checkIndex(int index, int min, int max, const char* prefix) const {\n    if (index < min || index > max) {\n        std::ostringstream out;\n        out << \"LinkedList::\" << prefix << \": index of \" << index\n            << \" is outside of valid range [\";\n        if (min < max) {\n            out << min << \"..\" << max;\n        } else if (min == max) {\n            out << min;\n        } // else min > max, no range, empty LinkedList\n        out << \"]\";\n        error(out.str());\n    }\n}\n\n/*\n * Implementation notes: The , operator\n * ------------------------------------\n * The comma operator works adding the right operand to the LinkedList and\n * then returning the LinkedList by reference so that it is set for the next\n * value in the chain.\n */\ntemplate <typename ValueType>\nLinkedList<ValueType>&\nLinkedList<ValueType>::operator ,(const ValueType& value) {\n    add(value);\n    return *this;\n}\n\n/*\n * Implementation notes: << and >>\n * -------------------------------\n * The insertion and extraction operators use the template facilities in\n * strlib.h to read and write generic values in a way that treats strings\n * specially.\n */\ntemplate <typename ValueType>\nstd::ostream& operator <<(std::ostream& os, const LinkedList<ValueType>& list) {\n    return stanfordcpplib::collections::writeCollection(os, list);\n}\n\ntemplate <typename ValueType>\nstd::istream& operator >>(std::istream& is, LinkedList<ValueType>& list) {\n    ValueType element;\n    return stanfordcpplib::collections::readCollection(is, list, element, /* descriptor */ \"LinkedList::operator >>\");\n}\n\n/*\n * Template hash function for linked lists.\n * Requires the element type in the LinkedList to have a hashCode function.\n */\ntemplate <typename T>\nint hashCode(const LinkedList<T>& list) {\n    return stanfordcpplib::collections::hashCodeCollection(list);\n}\n\n/*\n * Function: randomElement\n * Usage: element = randomElement(list);\n * -------------------------------------\n * Returns a randomly chosen element of the given list.\n * Throws an error if the list is empty.\n */\ntemplate <typename T>\nconst T& randomElement(const LinkedList<T>& list) {\n    return stanfordcpplib::collections::randomElementIndexed(list);\n}\n\n#endif // _linkedlist_h\n"
  },
  {
    "path": "Library/collections/map.h",
    "content": "/*\n * File: map.h\n * -----------\n * This file exports the template class <code>Map</code>, which\n * maintains a collection of <i>key</i>-<i>value</i> pairs.\n */\n\n#ifndef _map_h\n#define _map_h\n\n#include <cstdlib>\n#include <initializer_list>\n#include <utility>\n#include <type_traits>\n#include <map>\n#include <functional>\n\n#include \"collections.h\"\n#include \"error.h\"\n#include \"hashcode.h\"\n#include \"stack.h\"\n#include \"vector.h\"\n\n/*\n * Class: Map<KeyType,ValueType>\n * -----------------------------\n * This class maintains an association between <b><i>keys</i></b> and\n * <b><i>values</i></b>.  The types used for keys and values are\n * specified using templates, which makes it possible to use\n * this structure with any data type.\n */\ntemplate <typename KeyType, typename ValueType>\nclass Map {\npublic:\n    /*\n     * Constructor: Map\n     * Usage: Map<KeyType,ValueType> map;\n     * ----------------------------------\n     * Initializes a new empty map that associates keys and values of the\n     * specified types.\n     */\n    Map();\n\n    /*\n     * Constructor: Map\n     * Usage: Map<KeyType,ValueType> map(lessFunc);\n     * --------------------------------------------\n     * Initializes a new empty map that associates keys and values of the\n     * specified types, using the given \"less-than\" comparison function\n     * to order any keys that will be later added to it.\n     * The function can accept the two keys to compare either by value\n     * or by const reference.\n     */\n    Map(std::function<bool (const KeyType&, const KeyType&)> lessFunc);\n\n    /*\n     * Constructor: Map\n     * Usage: Map<ValueType> map {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}};\n     * ---------------------------------------------------------\n     * Initializes a new map that stores the given pairs.\n     * Note that the pairs are stored in key-sorted order internally and not\n     * necessarily the order in which they are written in the initializer list.\n     */\n    Map(std::initializer_list<std::pair<const KeyType, ValueType>> list);\n\n    /*\n     * Constructor: Map\n     * Usage: Map<ValueType> map({{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}, lessFunc);\n     * --------------------------------------------------------------------\n     * Initializes a new empty map that associates keys and values of the\n     * specified types, using the given \"less-than\" comparison function\n     * to order any keys that will be later added to it.\n     * The function can accept the two keys to compare either by value\n     * or by const reference.\n     */\n    Map(std::initializer_list<std::pair<const KeyType, ValueType>> list,\n        std::function<bool (const KeyType&, const KeyType&)> lessFunc);\n\n    /*\n     * Destructor: ~Map\n     * ----------------\n     * Frees any heap storage associated with this map.\n     */\n    virtual ~Map() = default;\n\n    /*\n     * Method: clear\n     * Usage: map.clear();\n     * -------------------\n     * Removes all entries from this map.\n     */\n    void clear();\n\n    /*\n     * Method: containsKey\n     * Usage: if (map.containsKey(key)) ...\n     * ------------------------------------\n     * Returns <code>true</code> if there is an entry for <code>key</code>\n     * in this map.\n     */\n    bool containsKey(const KeyType& key) const;\n\n    /*\n     * Method: equals\n     * Usage: if (map.equals(map2)) ...\n     * --------------------------------\n     * Returns <code>true</code> if the two maps contain exactly the same\n     * key/value pairs, and <code>false</code> otherwise.\n     */\n    bool equals(const Map& map2) const;\n\n    /*\n     * Method: firstKey\n     * Usage: KeyType value = map.firstKey();\n     * --------------------------------------\n     * Returns the first key in the map in the order established by the\n     * <code>for-each</code> loop.  If the map is empty, generates an error.\n     */\n    KeyType firstKey() const;\n\n    /*\n     * Method: get\n     * Usage: ValueType value = map.get(key);\n     * --------------------------------------\n     * Returns the value associated with <code>key</code> in this map.\n     * If <code>key</code> is not found, <code>get</code> returns the\n     * default value for <code>ValueType</code>.\n     */\n    ValueType get(const KeyType& key) const;\n\n    /*\n     * Method: isEmpty\n     * Usage: if (map.isEmpty()) ...\n     * -----------------------------\n     * Returns <code>true</code> if this map contains no entries.\n     */\n    bool isEmpty() const;\n\n    /*\n     * Method: keys\n     * Usage: Vector<KeyType> keys = map.keys();\n     * -----------------------------------------\n     * Returns a collection containing all keys in this map.\n     * Note that this implementation makes a deep copy of the keys,\n     * so it is inefficient to call on large maps.\n     */\n    Vector<KeyType> keys() const;\n\n    /*\n     * Method: lastKey\n     * Usage: KeyType value = map.lastKey();\n     * ------------------------------------\n     * Returns the last key in the map in the order established by the\n     * <code>for-each</code> loop.  If the map is empty, generates an error.\n     */\n    KeyType lastKey() const;\n\n    /*\n     * Method: mapAll\n     * Usage: map.mapAll(fn);\n     * ----------------------\n     * Iterates through the map entries and calls <code>fn(key, value)</code>\n     * for each one.  The keys are processed in ascending order, as defined\n     * by the comparison function.\n     */\n    void mapAll(std::function<void (const KeyType&, const ValueType&)> fn) const;\n\n    /*\n     * Method: put\n     * Usage: map.put(key, value);\n     * ---------------------------\n     * Associates <code>key</code> with <code>value</code> in this map.\n     * Any previous value associated with <code>key</code> is replaced\n     * by the new value.\n     */\n    void put(const KeyType& key, const ValueType& value);\n\n    /*\n     * Method: putAll\n     * Usage: map.putAll(map2);\n     * ------------------------\n     * Adds all key/value pairs from the given map to this map.\n     * If both maps contain a pair for the same key, the one from map2 will\n     * replace the one from this map.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     * Returns a reference to this map.\n     */\n    Map& putAll(const Map& map2);\n\n    /*\n     * Method: remove\n     * Usage: map.remove(key);\n     * -----------------------\n     * Removes any entry for <code>key</code> from this map.\n     */\n    void remove(const KeyType& key);\n\n    /*\n     * Method: removeAll\n     * Usage: map.removeAll(map2);\n     * ---------------------------\n     * Removes all key/value pairs from this map that are contained in the given map.\n     * If both maps contain the same key but it maps to different values, that\n     * mapping will not be removed.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     * Returns a reference to this map.\n     */\n    Map& removeAll(const Map& map2);\n\n    /*\n     * Method: retainAll\n     * Usage: map.retainAll(map2);\n     * ---------------------------\n     * Removes all key/value pairs from this map that are not contained in the given map.\n     * If both maps contain the same key but it maps to different values, that\n     * mapping will be removed.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     * Returns a reference to this map.\n     */\n    Map& retainAll(const Map& map2);\n\n    /*\n     * Method: size\n     * Usage: int nEntries = map.size();\n     * ---------------------------------\n     * Returns the number of entries in this map.\n     */\n    int size() const;\n\n    /*\n     * Method: toString\n     * Usage: string str = map.toString();\n     * -----------------------------------\n     * Converts the map to a printable string representation.\n     */\n    std::string toString() const;\n\n    /*\n     * Method: values\n     * Usage: Vector<ValueType> values = map.values();\n     * -----------------------------------------------\n     * Returns a collection containing all values in this map.\n     * Note that this implementation makes a deep copy of the values,\n     * so it is inefficient to call on large maps.\n     */\n    Vector<ValueType> values() const;\n\n    /*\n     * Operator: []\n     * Usage: map[key]\n     * ---------------\n     * Selects the value associated with <code>key</code>.  This syntax\n     * makes it easy to think of a map as an \"associative array\"\n     * indexed by the key type.  If <code>key</code> is already present\n     * in the map, this function returns a reference to its associated\n     * value.  If key is not present in the map, a new entry is created\n     * whose value is set to the default for the value type.\n     */\n    ValueType& operator [](const KeyType& key);\n    const ValueType& operator [](const KeyType& key) const;\n\n    /*\n     * Operator: ==\n     * Usage: if (map1 == map2) ...\n     * ----------------------------\n     * Compares two maps for equality.\n     */\n    bool operator ==(const Map& map2) const;\n\n    /*\n     * Operator: !=\n     * Usage: if (map1 != map2) ...\n     * ----------------------------\n     * Compares two maps for inequality.\n     */\n    bool operator !=(const Map& map2) const;\n\n    /*\n     * Operators: <, <=, >, >=\n     * Usage: if (map1 < map2) ...\n     * ---------------------------\n     * Relational operators to compare two maps.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     */\n    bool operator <(const Map& map2) const;\n    bool operator <=(const Map& map2) const;\n    bool operator >(const Map& map2) const;\n    bool operator >=(const Map& map2) const;\n\n    /*\n     * Operator: +\n     * Usage: map1 + map2\n     * ------------------\n     * Returns the union of the two maps, equivalent to a copy of the first map\n     * with putAll called on it passing the second map as a parameter.\n     * If the two maps both contain a mapping for the same key, the mapping\n     * from the second map is favored.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     */\n    Map operator +(const Map& map2) const;\n\n    /*\n     * Operator: +=\n     * Usage: map1 += map2;\n     * --------------------\n     * Adds all key/value pairs from the given map to this map.\n     * Equivalent to calling putAll(map2).\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     */\n    Map& operator +=(const Map& map2);\n\n    /*\n     * Operator: -\n     * Usage: map1 - map2\n     * ------------------\n     * Returns the difference of the two maps, equivalent to a copy of the first map\n     * with removeAll called on it passing the second map as a parameter.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     */\n    Map operator -(const Map& map2) const;\n\n    /*\n     * Operator: -=\n     * Usage: map1 -= map2;\n     * --------------------\n     * Removes all key/value pairs from the given map to this map.\n     * Equivalent to calling removeAll(map2).\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     */\n    Map& operator -=(const Map& map2);\n\n    /*\n     * Operator: *\n     * Usage: map1 * map2\n     * ------------------\n     * Returns the intersection of the two maps, equivalent to a copy of the first map\n     * with retainAll called on it passing the second map as a parameter.\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     */\n    Map operator *(const Map& map2) const;\n\n    /*\n     * Operator: *=\n     * Usage: map1 *= map2;\n     * ---------------------\n     * Removes all key/value pairs that are not found in the given map from this map.\n     * Equivalent to calling retainAll(map2).\n     * You can also pass an initializer list of pairs such as {{\"a\", 1}, {\"b\", 2}, {\"c\", 3}}.\n     */\n    Map& operator *=(const Map& map2);\n\n    /*\n     * Additional Map operations\n     * -------------------------\n     * In addition to the methods listed in this interface, the Map\n     * class supports the following operations:\n     *\n     *   - Stream I/O using the << and >> operators\n     *   - Deep copying for the copy constructor and assignment operator\n     *   - Iteration using the range-based for statement and STL iterators\n     *\n     * All iteration is guaranteed to proceed in the order established by\n     * the comparison function passed to the constructor, which ordinarily\n     * matches the order of the key type.\n     */\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\nprivate:\n    using MapType = std::map<KeyType, ValueType, std::function<bool(const KeyType&, const KeyType&)>>;\n    MapType _elements;\n    stanfordcpplib::collections::VersionTracker _version;\n\npublic:\n    /*\n     * Hidden features\n     * ---------------\n     * The remainder of this file consists of the code required to\n     * support deep copying and iteration.  Including these methods in\n     * the public portion of the interface would make that interface more\n     * difficult to understand for the average client.\n     */\n\n    using const_iterator = stanfordcpplib::collections::ProjectingIterator<stanfordcpplib::collections::CheckedIterator<typename MapType::const_iterator>>;\n    using iterator = const_iterator;\n\n    const_iterator begin() const;\n    const_iterator end() const;\n};\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType>::Map() : _elements(stanfordcpplib::collections::checkedLess<KeyType>()) {\n    // Handled in initializer\n}\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType>::Map(std::function<bool(const KeyType&, const KeyType&)> lessFunc)\n        : _elements(lessFunc) {\n}\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType>::Map(std::initializer_list<std::pair<const KeyType, ValueType>> list)\n        : _elements(list, stanfordcpplib::collections::checkedLess<KeyType>()) {\n    // Handled in initializer\n}\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType>::Map(std::initializer_list<std::pair<const KeyType, ValueType>> list,\n                             std::function<bool(const KeyType&, const KeyType&)> lessFunc)\n        : _elements(list, lessFunc) {\n}\n\ntemplate <typename KeyType, typename ValueType>\nKeyType Map<KeyType, ValueType>::lastKey() const {\n    if (isEmpty()) {\n        error(\"Map::lastKey: map is empty\");\n    }\n    return _elements.rbegin()->first;\n}\n\ntemplate <typename KeyType, typename ValueType>\nvoid Map<KeyType, ValueType>::clear() {\n    _elements.clear();\n    _version.update();\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool Map<KeyType, ValueType>::containsKey(const KeyType& key) const {\n    return !!_elements.count(key);\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool Map<KeyType, ValueType>::equals(const Map<KeyType, ValueType>& map2) const {\n    return stanfordcpplib::collections::equalsMap(*this, map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nKeyType Map<KeyType, ValueType>::firstKey() const {\n    if (isEmpty()) {\n        error(\"Map::firstKey: map is empty\");\n    }\n    return _elements.begin()->first;\n}\n\ntemplate <typename KeyType, typename ValueType>\nValueType Map<KeyType, ValueType>::get(const KeyType& key) const {\n    auto itr = _elements.find(key);\n    return itr == _elements.end()? ValueType() : itr->second;\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool Map<KeyType, ValueType>::isEmpty() const {\n    return _elements.empty();\n}\n\ntemplate <typename KeyType,typename ValueType>\nVector<KeyType> Map<KeyType, ValueType>::keys() const {\n    Vector<KeyType> keyset;\n    for (const auto& entry: _elements) {\n        keyset.add(entry.first);\n    }\n    return keyset;\n}\n\ntemplate <typename KeyType, typename ValueType>\nvoid Map<KeyType, ValueType>::mapAll(std::function<void (const KeyType&, const ValueType&)> fn) const {\n    for (const auto& entry: _elements) {\n        fn(entry.first, entry.second);\n    }\n}\n\ntemplate <typename KeyType, typename ValueType>\nvoid Map<KeyType, ValueType>::put(const KeyType& key,\n                                  const ValueType& value) {\n    int presize = size();\n    _elements[key] = value;\n    if (presize != size()) _version.update();\n}\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType>& Map<KeyType, ValueType>::putAll(const Map& map2) {\n    for (const KeyType& key : map2) {\n        put(key, map2.get(key));\n    }\n    return *this;\n}\n\ntemplate <typename KeyType, typename ValueType>\nvoid Map<KeyType, ValueType>::remove(const KeyType& key) {\n    _elements.erase(key);\n    _version.update();\n}\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType>& Map<KeyType, ValueType>::removeAll(const Map& map2) {\n    for (const KeyType& key : map2) {\n        if (containsKey(key) && get(key) == map2.get(key)) {\n            remove(key);\n        }\n    }\n    return *this;\n}\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType>& Map<KeyType, ValueType>::retainAll(const Map& map2) {\n    Vector<KeyType> toRemove;\n    for (const KeyType& key : *this) {\n        if (!map2.containsKey(key) || get(key) != map2.get(key)) {\n            toRemove.add(key);\n        }\n    }\n    for (const KeyType& key : toRemove) {\n        remove(key);\n    }\n    return *this;\n}\n\ntemplate <typename KeyType, typename ValueType>\nint Map<KeyType, ValueType>::size() const {\n    return _elements.size();\n}\n\ntemplate <typename KeyType, typename ValueType>\nstd::string Map<KeyType, ValueType>::toString() const {\n    std::ostringstream os;\n    os << *this;\n    return os.str();\n}\n\ntemplate <typename KeyType,typename ValueType>\nVector<ValueType> Map<KeyType, ValueType>::values() const {\n    Vector<ValueType> values;\n    for (const auto& entry: _elements) {\n        values.add(entry.second);\n    }\n    return values;\n}\n\ntemplate <typename KeyType, typename ValueType>\nValueType& Map<KeyType, ValueType>::operator [](const KeyType& key) {\n    auto presize = size();\n    auto& result = _elements[key];\n\n    /* If the size was updated, we must have inserted something. */\n    if (presize != size()) _version.update();\n    return result;\n}\n\ntemplate <typename KeyType, typename ValueType>\nconst ValueType& Map<KeyType, ValueType>::operator [](const KeyType& key) const {\n    auto itr = _elements.find(key);\n    if (itr != _elements.end()) {\n        return itr->second;\n    }\n    /* We need to return a reference to a default-constructed object of the\n     * specified type. We thus construct a unique default-initialized version\n     * of the object and return it.\n     */\n    else {\n        static const ValueType singleton{};\n        return singleton;\n    }\n}\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType> Map<KeyType, ValueType>::operator +(const Map& map2) const {\n    Map<KeyType, ValueType> result = *this;\n    return result.putAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType>& Map<KeyType, ValueType>::operator +=(const Map& map2) {\n    return putAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType> Map<KeyType, ValueType>::operator -(const Map& map2) const {\n    Map<KeyType, ValueType> result = *this;\n    return result.removeAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType>& Map<KeyType, ValueType>::operator -=(const Map& map2) {\n    return removeAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType> Map<KeyType, ValueType>::operator *(const Map& map2) const {\n    Map<KeyType, ValueType> result = *this;\n    return result.retainAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nMap<KeyType, ValueType>& Map<KeyType, ValueType>::operator *=(const Map& map2) {\n    return retainAll(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool Map<KeyType, ValueType>::operator ==(const Map& map2) const {\n    return equals(map2);\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool Map<KeyType, ValueType>::operator !=(const Map& map2) const {\n    return !equals(map2);   // BUGFIX 2016/01/27, thanks to O. Zeng\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool Map<KeyType, ValueType>::operator <(const Map& map2) const {\n    return stanfordcpplib::collections::compareMaps(*this, map2) < 0;\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool Map<KeyType, ValueType>::operator <=(const Map& map2) const {\n    return stanfordcpplib::collections::compareMaps(*this, map2) <= 0;\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool Map<KeyType, ValueType>::operator >(const Map& map2) const {\n    return stanfordcpplib::collections::compareMaps(*this, map2) > 0;\n}\n\ntemplate <typename KeyType, typename ValueType>\nbool Map<KeyType, ValueType>::operator >=(const Map& map2) const {\n    return stanfordcpplib::collections::compareMaps(*this, map2) >= 0;\n}\n\ntemplate <typename KeyType, typename ValueType>\ntypename Map<KeyType, ValueType>::iterator Map<KeyType, ValueType>::begin() const {\n    return iterator({ &_version, _elements.begin(), _elements });\n}\n\ntemplate <typename KeyType, typename ValueType>\ntypename Map<KeyType, ValueType>::iterator Map<KeyType, ValueType>::end() const {\n    return iterator({ &_version, _elements.end(), _elements });\n}\n\n/*\n * Implementation notes: << and >>\n * -------------------------------\n * The insertion and extraction operators use the template facilities in\n * strlib.h to read and write generic values in a way that treats strings\n * specially.\n */\ntemplate <typename KeyType, typename ValueType>\nstd::ostream& operator <<(std::ostream& os,\n                          const Map<KeyType, ValueType>& map) {\n    return stanfordcpplib::collections::writeMap(os, map);\n}\n\ntemplate <typename KeyType, typename ValueType>\nstd::istream& operator >>(std::istream& is, Map<KeyType,ValueType>& map) {\n    KeyType key;\n    ValueType value;\n    return stanfordcpplib::collections::readPairedCollection(is, map, key, value, /* descriptor */ std::string(\"Map::operator >>\"));\n}\n\n/*\n * Template hash function for maps.\n * Requires the key and value types in the Map to have a hashCode function.\n */\ntemplate <typename K, typename V>\nint hashCode(const Map<K, V>& map) {\n    return stanfordcpplib::collections::hashCodeMap(map);\n}\n\n/*\n * Function: randomKey\n * Usage: element = randomKey(map);\n * --------------------------------\n * Returns a randomly chosen key of the given map.\n * Throws an error if the map is empty.\n */\ntemplate <typename K, typename V>\nconst K& randomKey(const Map<K, V>& map) {\n    return stanfordcpplib::collections::randomElement(map);\n}\n\n#endif // _map_h\n"
  },
  {
    "path": "Library/collections/optional.cpp",
    "content": "#include \"optional.h\"\n\n/* The one Nothing object. */\nnothing_t Nothing;\n"
  },
  {
    "path": "Library/collections/optional.h",
    "content": "#pragma once\n\n#include <type_traits>\n#include <ostream>\n#include <algorithm>\n#include <memory>\n#include \"collections.h\"\n\n/* Allows for overloading on Nothing. */\nstruct nothing_t { };\nextern nothing_t Nothing;\n\n/* These template shenanigans are designed to detect whether a series of template args\n * accidentally would shadow the move or copy constructor, or would select an initializer\n * list constructor when it shouldn't.\n */\nnamespace OptionalInternals {\n    template <typename T> struct IsInitializerList {\n        static const bool result = false;\n    };\n\n    template <typename T> struct IsInitializerList<std::initializer_list<T>> {\n        static const bool result = true;\n    };\n\n    template <typename Target, typename... Args> struct AvoidOverride {\n        static const bool result = true;\n    };\n    template <typename Target, typename Singleton> struct AvoidOverride<Target, Singleton> {\n        static const bool result =\n                !std::is_same<typename std::remove_cv<typename std::remove_reference<Singleton>::type>::type, Target>::value &&\n                !IsInitializerList<typename std::remove_reference<Singleton>::type>::result;\n\n    };\n\n    template <typename T> struct IsString {\n        static const bool result = std::is_convertible<T, std::string>::value;\n    };\n}\n\ntemplate <typename T> class Optional {\npublic:\n    /* Construct from a list of parameters - as long as you aren't trying to\n     * override the copy/move constructor.\n     */\n    template <typename... Args, typename = typename std::enable_if<OptionalInternals::AvoidOverride<Optional, Args...>::result, int>::type>\n    Optional(Args&&... args) : data_(new T(std::forward<Args&&>(args)...)) {\n        // Handled in initializer\n    }\n\n    /* BUG: The Set type will incorrectly try ingesting an initializer_list<const char*> through the\n     * wrong constructor. Allow initializer lists only if they don't contain strings.\n     */\n    template <typename Arg, typename = typename std::enable_if<!OptionalInternals::IsString<Arg>::result, int>::type>\n    Optional(std::initializer_list<Arg> args) : data_(new T(args)) {\n        // Handled in initializer\n    }\n\n    /* And handle strings separately. */\n    Optional(std::initializer_list<std::string> args) : data_(new T(args)) {\n        // Handled in initializer\n    }\n\n    /* Build empty. */\n    Optional(nothing_t) {\n        // Default ctor for unique_ptr does what we need it to do.\n    }\n\n    /* Copy/move constructor. */\n    Optional(const Optional& rhs) {\n        /* Something there? Then copy it. */\n        if (rhs.data_) {\n            data_.reset(new T(*rhs.data_));\n        }\n    }\n    Optional(Optional&& rhs) : data_(std::move(rhs.data_)) {\n        // Use initialization list.\n    }\n\n    /* Assignment operator. */\n    Optional& operator= (Optional rhs) {\n        std::swap(data_, rhs.data_);\n        return *this;\n    }\n\n    /* Has a value? */\n    bool hasValue() const {\n        return (bool) data_;\n    }\n\n    /* Get value. */\n    T& value() {\n        return const_cast<T&>(static_cast<const Optional*>(this)->value());\n    }\n    const T& value() const {\n        if (!hasValue()) {\n            error(\"Optional: Tried getting the value of Nothing.\");\n        }\n        return *data_;\n    }\n\nprivate:\n    std::unique_ptr<T> data_;\n};\n\n/* == nothing is equivalent to asking whether we have a value. */\ntemplate <typename T> bool operator== (const Optional<T>& lhs, nothing_t) {\n    return !lhs.hasValue();\n}\n\ntemplate <typename T> bool operator== (nothing_t, const Optional<T>& rhs) {\n    return rhs == Nothing;\n}\n\ntemplate <typename T> bool operator!= (const Optional<T>& lhs, nothing_t) {\n    return !(lhs == Nothing);\n}\n\ntemplate <typename T> bool operator!= (nothing_t, const Optional<T>& rhs) {\n    return !(rhs == Nothing);\n}\n\n/* Relational operators */\ntemplate <typename T> bool operator== (const Optional<T>& lhs, const Optional<T>& rhs) {\n    /* If either of these has no value, see if they both do. */\n    if (!lhs.hasValue() || !rhs.hasValue()) {\n        return lhs.hasValue() == rhs.hasValue();\n    }\n\n    /* Otherwise compare the values. */\n    return lhs.value() == rhs.value();\n}\n\ntemplate <typename T> bool operator!= (const Optional<T>& lhs, const Optional<T>& rhs) {\n    return !(lhs == rhs);\n}\n\n/* Relational operators put Nothing first. */\ntemplate <typename T> bool operator< (const Optional<T>& lhs, const Optional<T>& rhs) {\n    static_assert(stanfordcpplib::collections::IsLessThanComparable<T>::value, \"Oops! You can't compare Optional<T>s if the underlying type T is not comparable.\");\n\n    /* Nothing comes first. */\n    if (!lhs.hasValue() || !rhs.hasValue()) {\n        return !!lhs.hasValue() < !!rhs.hasValue();\n    }\n\n    /* Otherwise compare the rest. */\n    return lhs.value() < rhs.value();\n}\n\ntemplate <typename T> bool operator>= (const Optional<T>& lhs, const Optional<T>& rhs) {\n    return !(lhs < rhs);\n}\n\ntemplate <typename T> bool operator> (const Optional<T>& lhs, const Optional<T>& rhs) {\n    return rhs < lhs;\n}\n\ntemplate <typename T> bool operator<= (const Optional<T>& lhs, const Optional<T>& rhs) {\n    return !(rhs > lhs);\n}\n\ninline std::ostream& operator<< (std::ostream& out, nothing_t) {\n    return out << \"Nothing\";\n}\n\ntemplate <typename T> std::ostream& operator<< (std::ostream& out, const Optional<T>& rhs) {\n    if (!rhs.hasValue()) return out << Nothing;\n    else return out << rhs.value();\n}\n"
  },
  {
    "path": "Library/collections/priorityqueue.h",
    "content": "/*\n * File: priorityqueue.h\n * ---------------------\n * This file exports the <code>PriorityQueue</code> class, a\n * collection in which values are processed in priority order.\n */\n\n#ifndef _priorityqueue_h\n#define _priorityqueue_h\n\n#include <cmath>\n#include <initializer_list>\n#include <utility>\n#include <queue>\n#include <algorithm>\n\n#include \"collections.h\"\n#include \"error.h\"\n#include \"gmath.h\"\n#include \"hashcode.h\"\n#include \"vector.h\"\n\n/*\n * Class: PriorityQueue<ValueType>\n * -------------------------------\n * This class models a structure called a <b><i>priority&nbsp;queue</i></b>\n * in which values are processed in order of priority.  As in conventional\n * English usage, lower priority numbers correspond to higher effective\n * priorities, so that a priority 1 item takes precedence over a\n * priority 2 item.\n */\n\ntemplate <typename ValueType>\nclass PriorityQueue {\npublic:\n    /*\n     * Constructor: PriorityQueue\n     * Usage: PriorityQueue<ValueType> pq;\n     * -----------------------------------\n     * Initializes a new priority queue, which is initially empty.\n     */\n    PriorityQueue() = default;\n\n    /*\n     * Constructor: PriorityQueue\n     * Usage: PriorityQueue<ValueType> pq {{1.0, \"a\"}, {2.0, \"b\"}, {3.0, \"c\"}};\n     * -------------------------------------------------------------------------\n     * Initializes a new priority that stores the given pairs.\n     * Note that the pairs are stored in priority order and not\n     * necessarily the order in which they are written in the initializer list.\n     */\n    PriorityQueue(std::initializer_list<std::pair<double, ValueType>> list);\n\n    /*\n     * Destructor: ~PriorityQueue\n     * --------------------------\n     * Frees any heap storage associated with this priority queue.\n     */\n    virtual ~PriorityQueue() = default;\n\n    /*\n     * Method: changePriority\n     * Usage: pq.changePriority(value, newPriority);\n     * ---------------------------------------------\n     * Adjusts <code>value</code> in the queue to now have the specified new priority,\n     * which must be at least as urgent (lower number) than that value's previous\n     * priority in the queue.\n     * Throws an error if the element value is not present in the queue, or if the\n     * new priority passed is not at least as urgent as its current priority.\n     */\n    void changePriority(ValueType value, double newPriority);\n\n    /*\n     * Method: clear\n     * Usage: pq.clear();\n     * ------------------\n     * Removes all elements from the priority queue.\n     */\n    void clear();\n\n    /*\n     * Method: dequeue\n     * Usage: ValueType first = pq.dequeue();\n     * --------------------------------------\n     * Removes and returns the highest priority value.  If multiple\n     * entries in the queue have the same priority, those values are\n     * dequeued in the same order in which they were enqueued.\n     */\n    ValueType dequeue();\n\n    /*\n     * Method: enqueue\n     * Usage: pq.enqueue(value, priority);\n     * -----------------------------------\n     * Adds <code>value</code> to the queue with the specified priority.\n     * Lower priority numbers correspond to higher priorities, which\n     * means that all priority 1 elements are dequeued before any\n     * priority 2 elements.\n     */\n    void enqueue(const ValueType& value, double priority);\n\n    /*\n     * Method: equals\n     * Usage: if (pq.equals(pq2)) ...\n     * ------------------------------\n     * Compares two priority queues for equality.\n     * Returns <code>true</code> if this queue contains exactly the same\n     * values and priorities as the given other queue.\n     * Identical in behavior to the == operator.\n     */\n    bool equals(const PriorityQueue<ValueType>& pq2) const;\n\n    /*\n     * Method: isEmpty\n     * Usage: if (pq.isEmpty()) ...\n     * ----------------------------\n     * Returns <code>true</code> if the priority queue contains no elements.\n     */\n    bool isEmpty() const;\n\n    /*\n     * Method: peek\n     * Usage: ValueType first = pq.peek();\n     * -----------------------------------\n     * Returns the value of highest priority in the queue, without\n     * removing it.\n     */\n    const ValueType& peek() const;\n\n    /*\n     * Method: peekPriority\n     * Usage: double priority = pq.peekPriority();\n     * -------------------------------------------\n     * Returns the priority of the first element in the queue, without\n     * removing it.\n     */\n    double peekPriority() const;\n\n    /*\n     * Method: size\n     * Usage: int n = pq.size();\n     * -------------------------\n     * Returns the number of values in the priority queue.\n     */\n    int size() const;\n\n    /*\n     * Method: toString\n     * Usage: string str = pq.toString();\n     * ----------------------------------\n     * Converts the queue to a printable string representation.\n     */\n    std::string toString() const;\n\n    /*\n     * Operator: <<\n     * Prints the priority queue to the given output stream.\n     */\n    template <typename T>\n    friend std::ostream& operator <<(std::ostream& os, const PriorityQueue<T>& pq);\n\n    /*\n     * Operators: ==, !=\n     * Usage: if (pq1 == pq2) ...\n     * --------------------------\n     * Relational operators to compare two queues to see if they have the same elements.\n     * The ==, != operators require that the ValueType has a == operator\n     * so that the elements can be tested for equality.\n     */\n    bool operator ==(const PriorityQueue& pq2) const;\n    bool operator !=(const PriorityQueue& pq2) const;\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\n    /*\n     * Implementation notes: PriorityQueue data structure\n     * --------------------------------------------------\n     * The PriorityQueue class is implemented using a data structure called\n     * a heap.\n     */\nprivate:\n    /* Type used for each heap entry */\n    struct HeapEntry {\n        ValueType value;\n        double priority;\n        long sequence;\n\n        bool operator < (const HeapEntry& rhs) const;\n    };\n\n    /* Instance variables */\n    Vector<HeapEntry> _heap;\n    long _enqueueCount = 0;\n\npublic:\n    /* private implentation section */\n\n    template <typename Collection>\n    friend int stanfordcpplib::collections::compare(const Collection& pq1, const Collection& pq2);\n\n};\n\ntemplate <typename ValueType>\nPriorityQueue<ValueType>::PriorityQueue(\n        std::initializer_list<std::pair<double, ValueType>> list) {\n    for (std::pair<double, ValueType> pair : list) {\n        enqueue(pair.second, pair.first);\n    }\n}\n\n/*\n * changePriority function added by Marty Stepp.\n * Parts of this implementation are adapted from TrailblazerPQueue.h,\n * which was written by Keith Schwarz.\n */\ntemplate <typename ValueType>\nvoid PriorityQueue<ValueType>::changePriority(ValueType value, double newPriority) {\n    if (std::isnan(newPriority)) {\n        error(\"PriorityQueue::changePriority: Attempted to use NaN as a priority.\");\n    }\n    if (floatingPointEqual(newPriority, -0.0)) {\n        newPriority = 0.0;\n    }\n\n    /* Find the element to change. */\n    auto itr = std::find_if(_heap.begin(), _heap.end(), [&](const HeapEntry& entry) {\n        return entry.value == value;\n    });\n    if (itr == _heap.end()) {\n        error(\"PriorityQueue::changePriority: Element not found in priority queue.\");\n    }\n\n    if (itr->priority < newPriority) {\n        error(\"PriorityQueue::changePriority: new priority cannot be less urgent than current priority.\");\n    }\n    itr->priority = newPriority;\n    std::push_heap(_heap.begin(), itr + 1);\n}\n\ntemplate <typename ValueType>\nvoid PriorityQueue<ValueType>::clear() {\n    _heap.clear();\n    _enqueueCount = 0;   // BUGFIX 2014/10/10: was previously using garbage unassigned value\n}\n\n/*\n * Implementation notes: dequeue, peek, peekPriority\n * -------------------------------------------------\n * These methods must check for an empty queue and report an error\n * if there is no first element.\n */\ntemplate <typename ValueType>\nValueType PriorityQueue<ValueType>::dequeue() {\n    if (isEmpty()) {\n        error(\"PriorityQueue::dequeue: Attempting to dequeue an empty queue\");\n    }\n\n    ValueType result = _heap[0].value;\n    std::pop_heap(_heap.begin(), _heap.end());\n    _heap.remove(_heap.size() - 1);\n    return result;\n}\n\ntemplate <typename ValueType>\nvoid PriorityQueue<ValueType>::enqueue(const ValueType& value, double priority) {\n    if (std::isnan(priority)) {\n        error(\"PriorityQueue::enqueue: Attempted to use NaN as a priority.\");\n    }\n    if (floatingPointEqual(priority, -0.0)) {\n        priority = 0.0;\n    }\n\n    _heap.add({ value, priority, _enqueueCount++ });\n    std::push_heap(_heap.begin(), _heap.end());\n}\n\ntemplate <typename ValueType>\nbool PriorityQueue<ValueType>::equals(const PriorityQueue<ValueType>& pq2) const {\n    // optimization: if literally same pq, stop\n    if (this == &pq2) {\n        return true;\n    }\n    if (size() != pq2.size()) {\n        return false;\n    }\n    PriorityQueue<ValueType> backup1 = *this;\n    PriorityQueue<ValueType> backup2 = pq2;\n    while (!backup1.isEmpty() && !backup2.isEmpty()) {\n        if (!floatingPointEqual(backup1.peekPriority(), backup2.peekPriority())) {\n            return false;\n        }\n        if (backup1.dequeue() != backup2.dequeue()) {\n            return false;\n        }\n    }\n    return backup1.isEmpty() == backup2.isEmpty();\n}\n\ntemplate <typename ValueType>\nbool PriorityQueue<ValueType>::isEmpty() const {\n    return _heap.size() == 0;\n}\n\ntemplate <typename ValueType>\nconst ValueType& PriorityQueue<ValueType>::peek() const {\n    if (isEmpty()) {\n        error(\"PriorityQueue::peek: Attempting to peek at an empty queue\");\n    }\n    return _heap[0].value;\n}\n\ntemplate <typename ValueType>\ndouble PriorityQueue<ValueType>::peekPriority() const {\n    if (isEmpty()) {\n        error(\"PriorityQueue::peekPriority: Attempting to peek at an empty queue\");\n    }\n    return _heap[0].priority;\n}\n\ntemplate <typename ValueType>\nint PriorityQueue<ValueType>::size() const {\n    return _heap.size();\n}\n\ntemplate <typename ValueType>\nstd::string PriorityQueue<ValueType>::toString() const {\n    std::ostringstream os;\n    os << *this;\n    return os.str();\n}\n\n\n/*\n * Comparison function for heap entries. The comparison is lexicographic, first by\n * priority, then by sequence number.\n *\n * Because std::push_heap and std::pop_heap try creating a max-heap whereas we want\n * a min-heap, the priority comparisons are reversed.\n */\ntemplate <typename ValueType>\nbool PriorityQueue<ValueType>::HeapEntry::operator < (const HeapEntry& rhs) const {\n    if (priority > rhs.priority) return true;\n    if (rhs.priority > priority) return false;\n\n    return sequence < rhs.sequence;\n}\n\ntemplate <typename ValueType>\nbool PriorityQueue<ValueType>::operator ==(const PriorityQueue& pq2) const {\n    return equals(pq2);\n}\n\ntemplate <typename ValueType>\nbool PriorityQueue<ValueType>::operator !=(const PriorityQueue& pq2) const {\n    return !equals(pq2);\n}\n\n/*\n * Template hash function for priority queues.\n * Requires the element type in the priority queue to have a hashCode function.\n */\ntemplate <typename T>\nint hashCode(const PriorityQueue<T>& pq) {\n    // (slow, memory-inefficient) implementation: copy pq, dequeue all, and hash together\n    PriorityQueue<T> backup = pq;\n    int code = hashSeed();\n    while (!backup.isEmpty()) {\n        code = hashMultiplier() * code + hashCode(backup.peek());\n        code = hashMultiplier() * code + hashCode(backup.peekPriority());\n        backup.dequeue();\n    }\n    return int(code & hashMask());\n}\n\ntemplate <typename ValueType>\nstd::ostream& operator <<(std::ostream& os,\n                          const PriorityQueue<ValueType>& pq) {\n    os << \"{\";\n\n    // faster implementation: print in heap order\n    // (only downside: doesn't print in 'sorted' priority order,\n    //  which might confuse student client)\n    for (int i = 0, len = pq.size(); i < len; i++) {\n        if (i > 0) {\n            os << \", \";\n        }\n        os << pq._heap[i].priority << \":\";\n        writeGenericValue(os, pq._heap[i].value, /* forceQuotes */ true);\n    }\n    return os << \"}\";\n}\n\ntemplate <typename ValueType>\n    void readOne(PriorityQueue<ValueType>& pq, const double& priority, const ValueType& value)\n        { pq.enqueue(value, priority); }\n\ntemplate <typename ValueType>\nstd::istream& operator >>(std::istream& is, PriorityQueue<ValueType>& pq) {\n    double priority;\n    ValueType element;\n    return stanfordcpplib::collections::readPairedCollection(is, pq, priority, element, /* descriptor */ \"PriorityQueue::operator >>\", readOne<ValueType>);\n}\n\n#endif // _priorityqueue_h\n"
  },
  {
    "path": "Library/collections/queue.h",
    "content": "/*\n * File: queue.h\n * -------------\n * This file exports the <code>Queue</code> class, a collection\n * in which values are ordinarily processed in a first-in/first-out\n * (FIFO) order.\n */\n\n#ifndef _queue_h\n#define _queue_h\n\n#include <initializer_list>\n\n#include \"collections.h\"\n#include \"deque.h\"\n#include \"error.h\"\n#include \"hashcode.h\"\n#include \"vector.h\"\n\n/*\n * Class: Queue<ValueType>\n * -----------------------\n * This class models a linear structure called a <b><i>queue</i></b>\n * in which values are added at one end and removed from the other.\n * This discipline gives rise to a first-in/first-out behavior (FIFO)\n * that is the defining feature of queues.\n */\ntemplate <typename ValueType>\nclass Queue {\npublic:\n    /*\n     * Constructor: Queue\n     * Usage: Queue<ValueType> queue;\n     * ------------------------------\n     * Initializes a new empty queue.\n     */\n    Queue() = default;\n\n    /*\n     * Constructor: Queue\n     * Usage: Queue<ValueType> queue {1, 2, 3};\n     * ----------------------------------------\n     * Initializes a new queue that stores the given elements from front-back.\n     */\n    Queue(std::initializer_list<ValueType> list);\n\n    /*\n     * Destructor: ~Queue\n     * ------------------\n     * Frees any heap storage associated with this queue.\n     */\n    virtual ~Queue() = default;\n\n    /*\n     * Method: clear\n     * Usage: queue.clear();\n     * ---------------------\n     * Removes all elements from the queue.\n     */\n    void clear();\n\n    /*\n     * Method: dequeue\n     * Usage: ValueType first = queue.dequeue();\n     * -----------------------------------------\n     * Removes and returns the first item in the queue.\n     */\n    ValueType dequeue();\n\n    /*\n     * Method: enqueue\n     * Usage: queue.enqueue(value);\n     * ----------------------------\n     * Adds <code>value</code> to the end of the queue.\n     */\n    void enqueue(const ValueType& value);\n\n    /*\n     * Method: equals\n     * Usage: if (queue.equals(queue2)) ...\n     * ------------------------------------\n     * Compares two queues for equality.\n     * Returns <code>true</code> if this queue contains exactly the same\n     * values as the given other queue.\n     * Identical in behavior to the == operator.\n     */\n    bool equals(const Queue<ValueType>& queue2) const;\n\n    /*\n     * Method: isEmpty\n     * Usage: if (queue.isEmpty()) ...\n     * -------------------------------\n     * Returns <code>true</code> if the queue contains no elements.\n     */\n    bool isEmpty() const;\n\n    /*\n     * Method: peek\n     * Usage: ValueType first = queue.peek();\n     * --------------------------------------\n     * Returns the first value in the queue, without removing it.\n     */\n    const ValueType& peek() const;\n\n    /*\n     * Method: size\n     * Usage: int n = queue.size();\n     * ----------------------------\n     * Returns the number of values in the queue.\n     */\n    int size() const;\n\n    /*\n     * Method: toString\n     * Usage: string str = queue.toString();\n     * -------------------------------------\n     * Converts the queue to a printable string representation.\n     */\n    std::string toString() const;\n\n    /*\n     * Operator: ==\n     * Usage: queue1 == queue2\n     * -------------------\n     * Returns <code>true</code> if <code>queue1</code> and <code>queue2</code>\n     * contain the same elements.\n     */\n    bool operator ==(const Queue& queue2) const;\n\n    /*\n     * Operator: !=\n     * Usage: queue1 != queue2\n     * -------------------\n     * Returns <code>true</code> if <code>queue1</code> and <code>queue2</code>\n     * do not contain the same elements.\n     */\n    bool operator !=(const Queue& queue2) const;\n\n    /*\n     * Operators: <, >, <=, >=\n     * Usage: queue1 < queue2 ...\n     * --------------------------\n     * Relational operators to compare two queues.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     */\n    bool operator <(const Queue& queue2) const;\n    bool operator <=(const Queue& queue2) const;\n    bool operator >(const Queue& queue2) const;\n    bool operator >=(const Queue& queue2) const;\n\n    template <typename T>\n    friend int hashCode(const Queue<T>& s);\n\n    template <typename T>\n    friend std::ostream& operator <<(std::ostream& os, const Queue<T>& queue);\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\nprivate:\n    /* Instance variables */\n    Deque<ValueType> _elements;\n};\n\ntemplate <typename ValueType>\nQueue<ValueType>::Queue(std::initializer_list<ValueType> list) : _elements(list) {\n    // empty\n}\n\ntemplate <typename ValueType>\nvoid Queue<ValueType>::clear() {\n    _elements.clear();\n}\n\n/*\n * Implementation notes: dequeue, peek\n * -----------------------------------\n * These methods must check for an empty queue and report an error\n * if there is no first element.\n */\ntemplate <typename ValueType>\nValueType Queue<ValueType>::dequeue() {\n    if (isEmpty()) {\n        error(\"Queue::dequeue: Attempting to dequeue an empty queue\");\n    }\n    return _elements.dequeueFront();\n}\n\ntemplate <typename ValueType>\nvoid Queue<ValueType>::enqueue(const ValueType& value) {\n    _elements.enqueueBack(value);\n}\n\ntemplate <typename ValueType>\nbool Queue<ValueType>::equals(const Queue<ValueType>& queue2) const {\n    return *this == queue2;\n}\n\ntemplate <typename ValueType>\nbool Queue<ValueType>::isEmpty() const {\n    return _elements.isEmpty();\n}\n\ntemplate <typename ValueType>\nconst ValueType& Queue<ValueType>::peek() const {\n    if (isEmpty()) {\n        error(\"Queue::peek: Attempting to peek at an empty queue\");\n    }\n    return _elements.peekFront();\n}\n\ntemplate <typename ValueType>\nint Queue<ValueType>::size() const {\n    return _elements.size();\n}\n\ntemplate <typename ValueType>\nstd::string Queue<ValueType>::toString() const {\n    std::ostringstream os;\n    os << *this;\n    return os.str();\n}\n\ntemplate <typename ValueType>\nbool Queue<ValueType>::operator ==(const Queue& queue2) const {\n    return _elements == queue2._elements;\n}\n\ntemplate <typename ValueType>\nbool Queue<ValueType>::operator !=(const Queue& queue2) const {\n    return _elements != queue2._elements;\n}\n\ntemplate <typename ValueType>\nbool Queue<ValueType>::operator <(const Queue& queue2) const {\n    return _elements < queue2._elements;\n}\n\ntemplate <typename ValueType>\nbool Queue<ValueType>::operator <=(const Queue& queue2) const {\n    return _elements <= queue2._elements;\n}\n\ntemplate <typename ValueType>\nbool Queue<ValueType>::operator >(const Queue& queue2) const {\n    return _elements > queue2._elements;\n}\n\ntemplate <typename ValueType>\nbool Queue<ValueType>::operator >=(const Queue& queue2) const {\n    return _elements >= queue2._elements;\n}\n\ntemplate <typename ValueType>\nstd::ostream& operator <<(std::ostream& os, const Queue<ValueType>& queue) {\n    return os << queue._elements;\n}\n\ntemplate <typename ValueType>\n    void readOne(Queue<ValueType>& queue, const ValueType& value)\n        { queue.enqueue(value); }\n\ntemplate <typename ValueType>\nstd::istream& operator >>(std::istream& is, Queue<ValueType>& queue) {\n    ValueType element;\n    return stanfordcpplib::collections::readCollection(is, queue, element, /* descriptor */ \"Queue::operator >>\", readOne<ValueType>);\n}\n\n\n/*\n * Template hash function for queues.\n * Requires the element type in the queue to have a hashCode function.\n */\ntemplate <typename T>\nint hashCode(const Queue<T>& q) {\n    return hashCode(q._elements);\n}\n\n#endif // _queue_h\n"
  },
  {
    "path": "Library/collections/set.h",
    "content": "/*\n * File: set.h\n * -----------\n * This file exports the <code>Set</code> class, which implements a\n * collection for storing a set of distinct elements.\n */\n\n#ifndef _set_h\n#define _set_h\n\n#include <initializer_list>\n#include <iostream>\n#include <set>\n#include <functional>\n#include <type_traits>\n\n#include \"collections.h\"\n#include \"map.h\"\n\n/* Traits type for the Set, which wraps an underlying Map. */\nnamespace stanfordcpplib {\n    namespace collections {\n        template <typename T> struct SetTraits {\n            using ValueType = T;\n            using MapType   = Map<T, bool>;\n            static std::string name() {\n                return \"Set\";\n            }\n\n            /* The Set type does allow you to construct the underlying Map by handing\n             * along a std::function.\n             */\n            template <typename Function>\n            static MapType construct(Function comparator) {\n                static_assert(std::is_assignable<std::function<bool(const ValueType&, const ValueType&)>, Function>::value,\n                              \"Oops! Seems like you tried to initialize a Set incorrectly. Click here for details.\");\n                /*\n                 * Hello student! If you are reading this message, it means that you tried to\n                 * initialize a Set improperly. For example, you might have tried to write\n                 * something like this:\n                 *\n                 *     Set<int> mySet = 137; // Oops!\n                 *\n                 * Here, for example, you're trying to assign an int to a Set<int>.\n                 *\n                 * or perhaps you had a function like this one:\n                 *\n                 *     void myFunction(Set<int>& mySet);\n                 *\n                 * and you called it by writing\n                 *\n                 *     myFunction(someSet + someOtherSet); // Oops!\n                 *     myFunction({ });                    // Oops!\n                 *\n                 * In these cases, you're trying to pass a value into a function that takes\n                 * its argument by (non-const) reference. C++ doesn't allow you to do this.\n                 *\n                 * To see where the actual error comes from, look in the list of error messages\n                 * in Qt Creator. You should see a line that says \"required from here\" that\n                 * points somewhere in your code. That's the actual line you wrote that caused\n                 * the problem, so double-click on that error message and see where it takes\n                 * you. Now you know where to look!\n                 *\n                 * Hope this helps!\n                 */\n                return MapType(comparator);\n            }\n\n            /* You can also default-construct it. */\n            static MapType construct() {\n                return {};\n            }\n\n            /* However, you can't pass in any other arguments. */\n            template <typename... Args>\n            static void construct(MapType &, Args&&...) {\n                static_assert(Fail<Args...>::value, \"Oops! Seems like you tried to initialize a Set incorrectly. Click here for details.\");\n\n                /*\n                 * Hello student! If you are reading this message, it means that you tried to\n                 * initialize a Set improperly. For example, you might have tried to write\n                 * something like this:\n                 *\n                 *     Set<int> mySet = 137; // Oops!\n                 *\n                 * Here, for example, you're trying to assign an int to a Set<int>.\n                 *\n                 * or perhaps you had a function like this one:\n                 *\n                 *     void myFunction(Set<int>& mySet);\n                 *\n                 * and you called it by writing\n                 *\n                 *     myFunction(someSet + someOtherSet); // Oops!\n                 *     myFunction({ });                    // Oops!\n                 *\n                 * In these cases, you're trying to pass a value into a function that takes\n                 * its argument by (non-const) reference. C++ doesn't allow you to do this.\n                 *\n                 * To see where the actual error comes from, look in the list of error messages\n                 * in Qt Creator. You should see a line that says \"required from here\" that\n                 * points somewhere in your code. That's the actual line you wrote that caused\n                 * the problem, so double-click on that error message and see where it takes\n                 * you. Now you know where to look!\n                 *\n                 * Hope this helps!\n                 */\n                error(\"static_assert failed?\");\n            }\n        };\n    }\n}\n\n/*\n * A set of elements stored in sorted order. The elements must be comparable\n * using the < operator in order to be stored here.\n */\ntemplate <typename ValueType>\n    using Set = stanfordcpplib::collections::GenericSet<stanfordcpplib::collections::SetTraits<ValueType>>;\n\n#endif // _set_h\n"
  },
  {
    "path": "Library/collections/stack.h",
    "content": "/*\n * File: stack.h\n * -------------\n * This file exports the <code>Stack</code> class, which implements\n * a collection that processes values in a last-in/first-out (LIFO) order.\n */\n\n#ifndef _stack_h\n#define _stack_h\n\n#include <initializer_list>\n\n#include \"error.h\"\n#include \"hashcode.h\"\n#include \"vector.h\"\n\n/*\n * Class: Stack<ValueType>\n * -----------------------\n * This class models a linear structure called a <b><i>stack</i></b>\n * in which values are added and removed only from one end.\n * This discipline gives rise to a last-in/first-out behavior (LIFO)\n * that is the defining feature of stacks.  The fundamental stack\n * operations are <code>push</code> (add to top) and <code>pop</code>\n * (remove from top).\n */\ntemplate <typename ValueType>\nclass Stack {\npublic:\n    /*\n     * Constructor: Stack\n     * Usage: Stack<ValueType> stack;\n     * ------------------------------\n     * Initializes a new empty stack.\n     */\n    Stack() = default;\n\n    /*\n     * Constructor: Stack\n     * Usage: Stack<ValueType> stack {1, 2, 3};\n     * ----------------------------------------\n     * Initializes a new stack that stores the given elements from bottom-top.\n     */\n    Stack(std::initializer_list<ValueType> list);\n\n    /*\n     * Destructor: ~Stack\n     * ------------------\n     * Frees any heap storage associated with this stack.\n     */\n    virtual ~Stack() = default;\n\n    /*\n     * Method: clear\n     * Usage: stack.clear();\n     * ---------------------\n     * Removes all elements from this stack.\n     */\n    void clear();\n\n    /*\n     * Method: equals\n     * Usage: if (stack.equals(stack2)) ...\n     * ------------------------------------\n     * Returns <code>true</code> if this stack contains exactly the same values\n     * as the given other stack.\n     * Identical in behavior to the == operator.\n     */\n    bool equals(const Stack<ValueType>& stack2) const;\n\n    /*\n     * Method: isEmpty\n     * Usage: if (stack.isEmpty()) ...\n     * -------------------------------\n     * Returns <code>true</code> if this stack contains no elements.\n     */\n    bool isEmpty() const;\n\n    /*\n     * Method: peek\n     * Usage: ValueType top = stack.peek();\n     * ------------------------------------\n     * Returns the value of top element from this stack, without removing\n     * it.  This method signals an error if called on an empty stack.\n     */\n    const ValueType& peek() const;\n\n    /*\n     * Method: pop\n     * Usage: ValueType top = stack.pop();\n     * -----------------------------------\n     * Removes the top element from this stack and returns it.  This\n     * method signals an error if called on an empty stack.\n     */\n    ValueType pop();\n\n    /*\n     * Method: push\n     * Usage: stack.push(value);\n     * -------------------------\n     * Pushes the specified value onto the top of this stack.\n     */\n    void push(const ValueType& value);\n\n    /*\n     * Method: size\n     * Usage: int n = stack.size();\n     * ----------------------------\n     * Returns the number of values in this stack.\n     */\n    int size() const;\n\n    /*\n     * Method: toString\n     * Usage: string str = stack.toString();\n     * -------------------------------------\n     * Converts the stack to a printable string representation.\n     */\n    std::string toString() const;\n\n    /*\n     * Operator: ==\n     * Usage: stack1 == stack2\n     * -----------------------\n     * Returns <code>true</code> if <code>stack1</code> and <code>stack2</code>\n     * contain the same elements.\n     */\n    bool operator ==(const Stack& stack2) const;\n\n    /*\n     * Operator: !=\n     * Usage: stack1 != stack2\n     * -----------------------\n     * Returns <code>true</code> if <code>stack1</code> and <code>stack2</code>\n     * do not contain the same elements.\n     */\n    bool operator !=(const Stack& stack2) const;\n\n    /*\n     * Operators: <, >, <=, >=\n     * Usage: if (stack1 < stack2) ...\n     * -------------------------------\n     * Relational operators to compare two stacks.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     */\n    bool operator <(const Stack& stack2) const;\n    bool operator <=(const Stack& stack2) const;\n    bool operator >(const Stack& stack2) const;\n    bool operator >=(const Stack& stack2) const;\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\n    /*\n     * Implementation notes: Stack data structure\n     * ------------------------------------------\n     * The easiest way to implement a stack is to store the elements in a\n     * Vector.  Doing so means that the problems of dynamic memory allocation\n     * and copy assignment are already solved by the implementation of the\n     * underlying Vector class.\n     */\n\n    template <typename T>\n    friend int hashCode(const Stack<T>& s);\n\n    template <typename T>\n    friend std::ostream& operator <<(std::ostream& os, const Stack<T>& stack);\n\nprivate:\n    Vector<ValueType> _elements;\n};\n\n/*\n * Stack class implementation\n * --------------------------\n * The Stack is internally managed using a Vector.  This layered design\n * makes the implementation extremely simple, to the point that most\n * methods can be implemented in as single line.\n */\n\ntemplate <typename ValueType>\nStack<ValueType>::Stack(std::initializer_list<ValueType> list) : _elements(list) {\n}\n\ntemplate <typename ValueType>\nvoid Stack<ValueType>::clear() {\n    _elements.clear();\n}\n\ntemplate <typename ValueType>\nbool Stack<ValueType>::equals(const Stack<ValueType>& stack2) const {\n    return stanfordcpplib::collections::equals(_elements, stack2._elements);\n}\n\ntemplate <typename ValueType>\nbool Stack<ValueType>::isEmpty() const {\n    return size() == 0;\n}\n\ntemplate <typename ValueType>\nconst ValueType& Stack<ValueType>::peek() const {\n    if (isEmpty()) {\n        error(\"Stack::peek: Attempting to peek at an empty stack\");\n    }\n    return _elements[_elements.size() -1];\n}\n\ntemplate <typename ValueType>\nValueType Stack<ValueType>::pop() {\n    if (isEmpty()) {\n        error(\"Stack::pop: Attempting to pop an empty stack\");\n    }\n    return _elements.remove(_elements.size() -1);\n}\n\ntemplate <typename ValueType>\nvoid Stack<ValueType>::push(const ValueType& value) {\n    _elements.add(value);\n}\n\ntemplate <typename ValueType>\nint Stack<ValueType>::size() const {\n    return _elements.size();\n}\n\ntemplate <typename ValueType>\nstd::string Stack<ValueType>::toString() const {\n    std::ostringstream os;\n    os << *this;\n    return os.str();\n}\n\ntemplate <typename ValueType>\nbool Stack<ValueType>::operator ==(const Stack& stack2) const {\n    return _elements == stack2._elements;\n}\n\ntemplate <typename ValueType>\nbool Stack<ValueType>::operator !=(const Stack & stack2) const {\n    return _elements != stack2._elements;\n}\n\ntemplate <typename ValueType>\nbool Stack<ValueType>::operator <(const Stack & stack2) const {\n    return _elements < stack2._elements;\n}\n\ntemplate <typename ValueType>\nbool Stack<ValueType>::operator <=(const Stack & stack2) const {\n    return _elements <= stack2._elements;\n}\n\ntemplate <typename ValueType>\nbool Stack<ValueType>::operator >(const Stack & stack2) const {\n    return _elements > stack2._elements;\n}\n\ntemplate <typename ValueType>\nbool Stack<ValueType>::operator >=(const Stack & stack2) const {\n    return _elements >= stack2._elements;\n}\n\ntemplate <typename ValueType>\nstd::ostream& operator <<(std::ostream& os, const Stack<ValueType>& stack) {\n    return os << stack._elements;\n}\n\ntemplate <typename ValueType>\n    void readOne(Stack<ValueType>& stack, const ValueType& value)\n        { stack.push(value); }\n\ntemplate <typename ValueType>\nstd::istream& operator >>(std::istream& is, Stack<ValueType>& stack) {\n    ValueType element;\n    return stanfordcpplib::collections::readCollection(is, stack, element, /* descriptor */ \"Stack::operator >>\", readOne<ValueType>);\n}\n\n/*\n * Template hash function for stacks.\n * Requires the element type in the Stack to have a hashCode function.\n */\ntemplate <typename T>\nint hashCode(const Stack<T>& s) {\n    return hashCode(s._elements);\n}\n\n#endif // _stack_h\n"
  },
  {
    "path": "Library/collections/trielexicon.cpp",
    "content": "/*\n * File: trielexicon.cpp\n * ---------------------\n * A TrieLexicon is a word list. This TrieLexicon is backed by a data\n * structure called a prefix tree or trie (\"try\").\n *\n * The DAWG implementation of Lexicon is available as dawglexicon.h/cpp.\n *\n * @version 2018/03/10\n * - added method front\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * @version 2016/08/11\n * - added operators +, +=, -, -=, *, *= to better match Set/HashSet\n * @version 2016/08/10\n * - added constructor support for std initializer_list usage, such as {\"a\", \"b\", \"c\"}\n * @version 2016/08/04\n * - fixed operator >> to not throw errors\n * @version 2015/07/05\n * - using global hashing functions rather than global variables\n * @version 2014/11/13\n * - added comparison operators <, >=, etc.\n * - added hashCode function\n * @version 2014/10/10\n * - added comparison operators ==, !=\n * - removed 'using namespace' statement\n */\n\n#include \"trielexicon.h\"\n#include <cctype>\n#include <cstdlib>\n#include <cstring>\n#include <fstream>\n#include <iostream>\n#include <sstream>\n#include <string>\n\n#include \"collections.h\"\n#include \"error.h\"\n#include \"strlib.h\"\n\nstatic bool scrub(std::string& str);\n\nTrieLexicon::TrieLexicon() :\n        _root(nullptr),\n        _size(0),\n        _removeFlag(false) {\n    // empty\n}\n\nTrieLexicon::TrieLexicon(std::istream& input) :\n        _root(nullptr),\n        _size(0),\n        _removeFlag(false) {\n    addWordsFromFile(input);\n}\n\nTrieLexicon::TrieLexicon(const std::string& filename) :\n        _root(nullptr),\n        _size(0),\n        _removeFlag(false) {\n    addWordsFromFile(filename);\n}\n\nTrieLexicon::TrieLexicon(std::initializer_list<std::string> list) :\n        _root(nullptr),\n        _size(0),\n        _removeFlag(false) {\n    addAll(list);\n}\n\nTrieLexicon::TrieLexicon(const TrieLexicon& src) :\n        _root(nullptr),\n        _size(0),\n        _removeFlag(false) {\n    deepCopy(src);\n}\n\nTrieLexicon::~TrieLexicon() {\n    clear();\n}\n\nbool TrieLexicon::add(const std::string& word) {\n    if (word.empty()) {\n        return false;\n    }\n    std::string scrubbed = word;\n    if (!scrub(scrubbed)) {\n        return false;\n    }\n    return addHelper(_root, scrubbed, /* originalWord */ scrubbed);\n}\n\nTrieLexicon& TrieLexicon::addAll(const TrieLexicon& lex) {\n    for (const std::string& word : lex) {\n        add(word);\n    }\n    return *this;\n}\n\nTrieLexicon& TrieLexicon::addAll(std::initializer_list<std::string> list) {\n    for (const std::string& word : list) {\n        add(word);\n    }\n    return *this;\n}\n\nvoid TrieLexicon::addWordsFromFile(std::istream& input) {\n    std::string line;\n    while (getline(input, line)) {\n        add(trim(line));\n    }\n}\n\nvoid TrieLexicon::addWordsFromFile(const std::string& filename) {\n    std::ifstream input(filename.c_str());\n    if (input.fail()) {\n        error(\"TrieLexicon::addWordsFromFile: Couldn't read from input file \" + filename);\n    }\n    addWordsFromFile(input);\n    input.close();\n}\n\nstd::string TrieLexicon::back() const {\n    if (isEmpty()) {\n        error(\"TrieLexicon::back: lexicon is empty\");\n    }\n    return _allWords.last();\n}\n\nvoid TrieLexicon::clear() {\n    _size = 0;\n    _allWords.clear();\n    deleteTree(_root);\n    _root = nullptr;\n}\n\nbool TrieLexicon::contains(const std::string& word) const {\n    if (word.empty()) {\n        return false;\n    }\n    std::string scrubbed = word;\n    if (!scrub(scrubbed)) {\n        return false;\n    }\n    return containsHelper(_root, scrubbed, /* isPrefix */ false);\n}\n\nbool TrieLexicon::containsAll(const TrieLexicon& lex2) const {\n    for (const std::string& word : lex2) {\n        if (!contains(word)) {\n            return false;\n        }\n    }\n    return true;\n}\n\nbool TrieLexicon::containsAll(std::initializer_list<std::string> list) const {\n    for (const std::string& word : list) {\n        if (!contains(word)) {\n            return false;\n        }\n    }\n    return true;\n}\n\nbool TrieLexicon::containsPrefix(const std::string& prefix) const {\n    if (prefix.empty()) {\n        return true;\n    }\n    std::string scrubbed = prefix;\n    if (!scrub(scrubbed)) {\n        return false;\n    }\n    return containsHelper(_root, scrubbed, /* isPrefix */ true);\n}\n\nbool TrieLexicon::equals(const TrieLexicon& lex2) const {\n    return stanfordcpplib::collections::equals(*this, lex2);\n}\n\nstd::string TrieLexicon::first() const {\n    if (isEmpty()) {\n        error(\"TrieLexicon::first: lexicon is empty\");\n    }\n    return _allWords.first();\n}\n\nstd::string TrieLexicon::front() const {\n    if (isEmpty()) {\n        error(\"TrieLexicon::front: lexicon is empty\");\n    }\n    return _allWords.first();\n}\n\nvoid TrieLexicon::insert(const std::string& word) {\n    add(word);\n}\n\nbool TrieLexicon::isEmpty() const {\n    return size() == 0;\n}\n\nbool TrieLexicon::isSubsetOf(const TrieLexicon& lex2) const {\n    auto it = begin();\n    auto end = this->end();\n    while (it != end) {\n        if (!lex2.contains(*it)) {\n            return false;\n        }\n        ++it;\n    }\n    return true;\n}\n\nbool TrieLexicon::isSubsetOf(std::initializer_list<std::string> list) const {\n    TrieLexicon lex2(list);\n    return isSubsetOf(lex2);\n}\n\nbool TrieLexicon::isSupersetOf(const TrieLexicon& lex2) const {\n    return containsAll(lex2);\n}\n\nbool TrieLexicon::isSupersetOf(std::initializer_list<std::string> list) const {\n    return containsAll(list);\n}\n\nvoid TrieLexicon::mapAll(void (*fn)(std::string)) const {\n    for (std::string word : _allWords) {\n        fn(word);\n    }\n}\n\nvoid TrieLexicon::mapAll(void (*fn)(const std::string&)) const {\n    for (std::string word : _allWords) {\n        fn(word);\n    }\n}\n\nbool TrieLexicon::remove(const std::string& word) {\n    if (word.empty()) {\n        return false;\n    }\n    std::string scrubbed = word;\n    if (!scrub(scrubbed)) {\n        return false;\n    }\n    return removeHelper(_root, scrubbed, /* originalWord */ scrubbed, /* isPrefix */ false);\n}\n\nTrieLexicon& TrieLexicon::removeAll(const TrieLexicon& lex2) {\n    Vector<std::string> toRemove;\n    for (const std::string& word : *this) {\n        if (lex2.contains(word)) {\n            toRemove.add(word);\n        }\n    }\n    for (const std::string& word : toRemove) {\n        remove(word);\n    }\n    return *this;\n}\n\nTrieLexicon& TrieLexicon::removeAll(std::initializer_list<std::string> list) {\n    for (const std::string& word : list) {\n        remove(word);\n    }\n    return *this;\n}\n\nbool TrieLexicon::removePrefix(const std::string& prefix) {\n    if (prefix.empty()) {\n        bool result = !isEmpty();\n        clear();\n        return result;\n    }\n    std::string scrubbed = prefix;\n    if (!scrub(scrubbed)) {\n        return false;\n    }\n\n    return removeHelper(_root, scrubbed, /* originalWord */ scrubbed, /* isPrefix */ true);\n}\n\nTrieLexicon& TrieLexicon::retainAll(const TrieLexicon& lex2) {\n    Vector<std::string> toRemove;\n    for (const std::string& word : *this) {\n        if (!lex2.contains(word)) {\n            toRemove.add(word);\n        }\n    }\n    for (const std::string& word : toRemove) {\n        remove(word);\n    }\n    return *this;\n}\n\nTrieLexicon& TrieLexicon::retainAll(std::initializer_list<std::string> list) {\n    TrieLexicon lex2(list);\n    return retainAll(lex2);\n}\n\nint TrieLexicon::size() const {\n    return _size;\n}\n\nstd::string TrieLexicon::toString() const {\n    std::ostringstream out;\n    out << *this;\n    return out.str();\n}\n\n/*\n * Operators\n */\nbool TrieLexicon::operator ==(const TrieLexicon& lex2) const {\n    return equals(lex2);\n}\n\nbool TrieLexicon::operator !=(const TrieLexicon& lex2) const {\n    return !equals(lex2);\n}\n\nbool TrieLexicon::operator <(const TrieLexicon& lex2) const {\n    return stanfordcpplib::collections::compare(*this, lex2) < 0;\n}\n\nbool TrieLexicon::operator <=(const TrieLexicon& lex2) const {\n    return stanfordcpplib::collections::compare(*this, lex2) <= 0;\n}\n\nbool TrieLexicon::operator >(const TrieLexicon& lex2) const {\n    return stanfordcpplib::collections::compare(*this, lex2) > 0;\n}\n\nbool TrieLexicon::operator >=(const TrieLexicon& lex2) const {\n    return stanfordcpplib::collections::compare(*this, lex2) >= 0;\n}\n\nTrieLexicon TrieLexicon::operator +(const TrieLexicon& lex2) const {\n    TrieLexicon lex = *this;\n    lex.addAll(lex2);\n    return lex;\n}\n\nTrieLexicon TrieLexicon::operator +(std::initializer_list<std::string> list) const {\n    TrieLexicon lex = *this;\n    lex.addAll(list);\n    return lex;\n}\n\nTrieLexicon TrieLexicon::operator +(const std::string& word) const {\n    TrieLexicon lex = *this;\n    lex.add(word);\n    return lex;\n}\n\nTrieLexicon TrieLexicon::operator *(const TrieLexicon& lex2) const {\n    TrieLexicon lex = *this;\n    return lex.retainAll(lex2);\n}\n\nTrieLexicon TrieLexicon::operator *(std::initializer_list<std::string> list) const {\n    TrieLexicon lex = *this;\n    return lex.retainAll(list);\n}\n\nTrieLexicon TrieLexicon::operator -(const TrieLexicon& lex2) const {\n    TrieLexicon lex = *this;\n    return lex.removeAll(lex2);\n}\n\nTrieLexicon TrieLexicon::operator -(std::initializer_list<std::string> list) const {\n    TrieLexicon lex = *this;\n    return lex.removeAll(list);\n}\n\nTrieLexicon TrieLexicon::operator -(const std::string& word) const {\n    TrieLexicon lex = *this;\n    lex.remove(word);\n    return lex;\n}\n\nTrieLexicon& TrieLexicon::operator +=(const TrieLexicon& lex2) {\n    return addAll(lex2);\n}\n\nTrieLexicon& TrieLexicon::operator +=(std::initializer_list<std::string> list) {\n    return addAll(list);\n}\n\nTrieLexicon& TrieLexicon::operator +=(const std::string& word) {\n    add(word);\n    _removeFlag = false;\n    return *this;\n}\n\nTrieLexicon& TrieLexicon::operator *=(const TrieLexicon& lex2) {\n    return retainAll(lex2);\n}\n\nTrieLexicon& TrieLexicon::operator *=(std::initializer_list<std::string> list) {\n    return retainAll(list);\n}\n\nTrieLexicon& TrieLexicon::operator -=(const TrieLexicon& lex2) {\n    return removeAll(lex2);\n}\n\nTrieLexicon& TrieLexicon::operator -=(std::initializer_list<std::string> list) {\n    return removeAll(list);\n}\n\nTrieLexicon& TrieLexicon::operator -=(const std::string& word) {\n    remove(word);\n    _removeFlag = true;\n    return *this;\n}\n\n/* private helpers implementation */\n\nTrieLexicon& TrieLexicon::operator ,(const std::string& word) {\n    if (_removeFlag) {\n        remove(word);\n    } else {\n        add(word);\n    }\n    return *this;\n}\n\n// pre: word is scrubbed to contain only lowercase a-z letters\nbool TrieLexicon::addHelper(TrieNode*& node, const std::string& word, const std::string& originalWord) {\n    if (!node) {\n        // create nodes all the way down, one for each letter of the word\n        node = new TrieNode();\n    }\n\n    if (word.empty()) {\n        // base case: we have added all of the letters of this word\n        if (node->isWord()) {\n            return false;   // duplicate word; already present\n        } else {\n            // new word; add it\n            node->setWord(true);\n            _size++;\n            _allWords.add(originalWord);\n            return true;\n        }\n    } else {\n        // recursive case: chop off first letter, traverse the rest\n        return addHelper(node->child(word[0]), word.substr(1), originalWord);\n    }\n}\n\n// pre: word is scrubbed to contain only lowercase a-z letters\nbool TrieLexicon::containsHelper(TrieNode* node, const std::string& word, bool isPrefix) const {\n    if (!node) {\n        // base case: no pointer down to here, so prefix must not exist\n        return false;\n    } else if (word.length() == 0) {\n        // base case: Found nodes all the way down.\n        // If we are looking for a prefix, this means this path IS a prefix,\n        // so we should return true.\n        // If we are looking for an exact word match rather than a prefix,\n        // we must check the isWord flag to see that this word was added\n        return (isPrefix ? true : node->isWord());\n    } else {\n        // recursive case: follow appropriate child pointer for one letter\n        return containsHelper(node->child(word[0]), word.substr(1), isPrefix);\n    }\n}\n\n// pre: word is scrubbed to contain only lowercase a-z letters\nbool TrieLexicon::removeHelper(TrieNode*& node, const std::string& word, const std::string& originalWord, bool isPrefix) {\n    if (!node) {\n        // base case: dead end; this word/prefix must not be contained\n        return false;\n    } else if (word.empty()) {\n        // base case: we have walked all of the letters of this word/prefix\n        // and now we must do the removal\n        if (isPrefix) {\n            // remove this node and all of its descendents\n            removeSubtreeHelper(node, originalWord);   // removes from m_allWords, sets m_size\n            node = nullptr;\n        } else {\n            // found this word in the lexicon;\n            if (node->isLeaf()) {\n                // remove this leaf node only\n                delete node;\n                node = nullptr;\n            } else {\n                // de-word-ify this node, but leave it because it may\n                // still have children that are valid words\n                if (node->isWord()) {\n                    node->setWord(false);\n                }\n            }\n            _allWords.remove(originalWord);\n            _size--;\n        }\n        return true;\n    } else {\n        // recursive case: chop off first letter, traverse the rest\n        bool wasLeaf = node->isLeaf();\n        bool result = removeHelper(node->child(word[0]), word.substr(1), originalWord, isPrefix);\n\n        // memory cleanup: if I wasn't a leaf but now am, and am not a word,\n        // then I am now unneeded, so remove me too\n        if (result && !wasLeaf && node\n                && node->isLeaf() && !node->isWord()) {\n            delete node;\n            node = nullptr;\n        }\n        return result;\n    }\n}\n\n// remove/free this node and all descendents\nvoid TrieLexicon::removeSubtreeHelper(TrieNode*& node, const std::string& originalWord) {\n    if (node) {\n        for (char letter = 'a'; letter <= 'z'; letter++) {\n            removeSubtreeHelper(node->child(letter), originalWord + letter);\n        }\n        if (node->isWord()) {\n            _allWords.remove(originalWord);\n            _size--;\n        }\n        delete node;\n        node = nullptr;\n    }\n}\n\nvoid TrieLexicon::deepCopy(const TrieLexicon& src) {\n    for (std::string word : src._allWords) {\n        add(word);\n    }\n}\n\nvoid TrieLexicon::deleteTree(TrieNode* node) {\n    if (node) {\n        for (char letter = 'a'; letter <= 'z'; letter++) {\n            deleteTree(node->child(letter));\n        }\n        delete node;\n    }\n}\n\nTrieLexicon& TrieLexicon::operator =(const TrieLexicon& src) {\n    if (this != &src) {\n        clear();\n        deepCopy(src);\n    }\n    return *this;\n}\n\nstd::ostream& operator <<(std::ostream& out, const TrieLexicon& lex) {\n    out << lex._allWords;\n    return out;\n}\n\nstd::istream& operator >>(std::istream& is, TrieLexicon& lex) {\n    std::string element;\n    return stanfordcpplib::collections::readCollection(is, lex, element, /* descriptor */ \"TrieLexicon::operator >>\");\n}\n\n/*\n * Hash function for lexicons.\n */\nint hashCode(const TrieLexicon& lex) {\n    return stanfordcpplib::collections::hashCodeCollection(lex);\n}\n\nstatic bool scrub(std::string& str) {\n    size_t nChars = str.length();\n    size_t outIndex = 0;\n    for (size_t i = 0; i < nChars; i++) {\n        std::string::value_type ch = tolower(str[i]);\n        if (ch < 'a' || ch > 'z') {\n            return false;   // illegal string\n        } else {\n            str[outIndex] = ch;\n            outIndex++;\n        }\n    }\n    if (outIndex != nChars) {\n        str.erase(outIndex, nChars - outIndex);\n    }\n    return true;\n}\n"
  },
  {
    "path": "Library/collections/trielexicon.h",
    "content": "/*\n * File: trielexicon.h\n * -------------------\n * This file exports the <code>TrieLexicon</code> class, which is a\n * compact structure for storing a list of words.\n */\n\n#ifndef _trielexicon_h\n#define _trielexicon_h\n\n#include <initializer_list>\n#include <iterator>\n#include <set>\n#include <string>\n\n#include \"hashcode.h\"\n#include \"set.h\"\n\n/**\n * This class is used to represent a <b><i>lexicon,</i></b> or word list.\n * The main difference between a lexicon and a dictionary is that\n * a lexicon does not provide any mechanism for storing definitions;\n * the lexicon contains only words, with no associated information.\n * It is therefore similar to a set of strings, but with a more\n * space-efficient internal representation.  The <code>Lexicon</code>\n * class supports efficient lookup operations for words and prefixes.\n *\n * <p>As an example of the use of the <code>TrieLexicon</code> class, the\n * following program lists all the two-letter words in the lexicon\n * stored in <code>EnglishWords.dat</code>:\n *\n *<pre>\n *    int main() {\n *       TrieLexicon english(\"EnglishWords.dat\");\n *       for (string word : english) {\n *          if (word.length() == 2) {\n *             cout << word << endl;\n *          }\n *       }\n *       return 0;\n *    }\n *</pre>\n */\n\nclass TrieLexicon {\npublic:\n    /*\n     * Constructor: TrieLexicon\n     * Usage: TrieLexicon lex;\n     *        TrieLexicon lex(filename);\n     * -----------------------------\n     * Initializes a new lexicon.  The default constructor creates an empty\n     * lexicon.  The second form reads in the contents of the lexicon from\n     * the named file or file stream. This contents should be a text file\n     * containing one word per line.\n     */\n    TrieLexicon();\n    TrieLexicon(std::istream& input);\n    TrieLexicon(const std::string& filename);\n\n    /*\n     * This constructor uses an initializer list to set up the lexicon.\n     * Usage: TrieLexicon lex {1, 2, 3};\n     */\n    TrieLexicon(std::initializer_list<std::string> list);\n\n    /*\n     * Destructor: ~Lexicon\n     * --------------------\n     * The destructor deallocates any storage associated with the lexicon.\n     */\n    virtual ~TrieLexicon();\n\n    /**\n     * Adds the specified word to the lexicon, if not already present.\n     * The word is converted to lowercase before adding it to the lexicon.\n     * If the word contains any non-alphabetic characters (including whitespace),\n     * it will not be added. The empty string cannot be added to a lexicon.\n     * Returns true if the word was added successfully to the lexicon.\n     */\n    bool add(const std::string& word);\n\n    /**\n     * Adds all elements of the given other lexicon to this lexicon.\n     * Returns a reference to this lexicon.\n     * Identical in behavior to the += operator.\n     */\n    TrieLexicon& addAll(const TrieLexicon& lex);\n\n    /**\n     * Adds all elements of the given initializer list to this lexicon.\n     * Returns a reference to this lexicon.\n     * Identical in behavior to the += operator.\n     */\n    TrieLexicon& addAll(std::initializer_list<std::string> list);\n\n    /**\n     * Reads the given input stream and adds all of its words to the lexicon.\n     * Each word from the stream is converted to lowercase before adding it.\n     */\n    void addWordsFromFile(std::istream& input);\n\n    /**\n     * Reads the file and adds all of its words to the lexicon.\n     * Each word from the file is converted to lowercase before adding it.\n     */\n    void addWordsFromFile(const std::string& filename);\n\n    /**\n     * Returns the last value in the lexicon in alphabetical order.\n     * If the set is empty, generates an error.\n     */\n    std::string back() const;\n\n    /**\n     * Removes all words from the lexicon.\n     */\n    void clear();\n\n    /**\n     * Returns <code>true</code> if <code>word</code> is contained in the\n     * lexicon.  In the <code>Lexicon</code> class, the case of letters is\n     * ignored, so \"Zoo\" is the same as \"ZOO\" or \"zoo\".\n     * The empty string cannot be contained in a lexicon, nor can any word\n     * containing any non-alphabetic characters such as punctuation or whitespace.\n     */\n    bool contains(const std::string& word) const;\n\n    /**\n     * Returns <code>true</code> if every value from the given other lexicon\n     * is also found in this lexicon.\n     * Equivalent in behavior to isSupersetOf.\n     */\n    bool containsAll(const TrieLexicon& set2) const;\n\n    /**\n     * Returns <code>true</code> if every value from the given initializer list\n     * is also found in this lexicon.\n     * Equivalent in behavior to isSupersetOf.\n     */\n    bool containsAll(std::initializer_list<std::string> list) const;\n\n    /**\n     * Returns true if any words in the lexicon begin with <code>prefix</code>.\n     * Like <code>containsWord</code>, this method ignores the case of letters\n     * so that \"MO\" is a prefix of \"monkey\" or \"Monday\".\n     * The empty string is a prefix of every string, so this method returns\n     * true when passed the empty string.\n     */\n    bool containsPrefix(const std::string& prefix) const;\n\n    /**\n     * Compares two lexicons for equality.\n     */\n    bool equals(const TrieLexicon& lex2) const;\n\n    /**\n     * Returns the first value in the lexicon in alphabetical order.\n     * If the set is empty, <code>first</code> generates an error.\n     * Equivalent to first.\n     */\n    std::string first() const;\n\n    /**\n     * Returns the first value in the lexicon in alphabetical order.\n     * If the set is empty, generates an error.\n     * Equivalent to first.\n     */\n    std::string front() const;\n\n    /**\n     * Adds an element to this lexicon, if it was not already there.  This\n     * method is exported for compatibility with the STL <code>set</code> class.\n     */\n    void insert(const std::string& word);\n\n    /**\n     * Returns <code>true</code> if the lexicon contains no words.\n     */\n    bool isEmpty() const;\n\n    /**\n     * Returns whether every word of this lexicon is contained in the given set.\n     */\n    bool isSubsetOf(const TrieLexicon& lex2) const;\n\n    /**\n     * Returns whether every word of this lexicon is contained in the given\n     * initializer list.\n     */\n    bool isSubsetOf(std::initializer_list<std::string> list) const;\n\n    /**\n     * Returns whether every word of the given lexicon is contained in this lexicon.\n     * Equivalent in behavior to containsAll.\n     */\n    bool isSupersetOf(const TrieLexicon& lex2) const;\n\n    /**\n     * Returns whether every word of the given list is contained in this lexicon.\n     * Equivalent in behavior to containsAll.\n     */\n    bool isSupersetOf(std::initializer_list<std::string> list) const;\n\n    /**\n     * Calls the specified function on each word in the lexicon.\n     */\n    void mapAll(void (*fn)(std::string)) const;\n\n    /**\n     * Calls the specified function on each word in the lexicon.\n     */\n    void mapAll(void (*fn)(const std::string&)) const;\n\n    /**\n     * Calls the specified function on each word in the lexicon.\n     */\n    template <typename FunctorType>\n    void mapAll(FunctorType fn) const;\n\n    /**\n     * Removes the specified word from the lexicon, if it was present.\n     * Returns true if the word was previously contained in the lexicon;\n     * in other words, if a word was removed.\n     * The empty string cannot be contained in a lexicon, so passing the\n     * empty string to this method returns false.\n     */\n    bool remove(const std::string& word);\n\n    /**\n     * Removes all elements of the given other lexicon from this lexicon.\n     * Returns a reference to this lexicon.\n     * Identical in behavior to the -= operator.\n     */\n    TrieLexicon& removeAll(const TrieLexicon& lex);\n\n    /**\n     * Removes all elements of the given other list from this lexicon.\n     * Returns a reference to this lexicon.\n     * Identical in behavior to the -= operator.\n     */\n    TrieLexicon& removeAll(std::initializer_list<std::string> list);\n\n    /**\n     * Removes all words from the lexicon that begin with the given prefix.\n     * Returns true if the prefix was previously contained in the lexicon;\n     * in other words, if any words were removed.\n     * If the empty string is passed, since all words begin with the empty\n     * string, all words will be removed and this method will\n     * return true if the lexicon was non-empty prior to the call.\n     */\n    bool removePrefix(const std::string& prefix);\n\n    /**\n     * Removes all elements from this lexicon that are not contained in the given\n     * other lexicon.\n     * Returns a reference to this lexicon.\n     * Identical in behavior to the *= operator.\n     */\n    TrieLexicon& retainAll(const TrieLexicon& lex);\n\n    /**\n     * Removes all elements from this lexicon that are not contained in the given\n     * initializer list.\n     * Returns a reference to this lexicon.\n     * Identical in behavior to the *= operator.\n     */\n    TrieLexicon& retainAll(std::initializer_list<std::string> list);\n\n    /**\n     * Returns the number of words contained in the lexicon.\n     */\n    int size() const;\n\n    /**\n     * Converts the lexicon to a printable string representation\n     * such as <code>{\"a\", \"b\", \"c\"}</code>.\n     * Note that this can be an expensive operation if the lexicon contains\n     * a large number of words.\n     */\n    std::string toString() const;\n\n    /**\n     * Returns true if two lexicons have the same elements.\n     */\n    bool operator ==(const TrieLexicon& lex2) const;\n\n    /**\n     * Returns true if two lexicons do not have the same elements.\n     */\n    bool operator !=(const TrieLexicon& lex2) const;\n\n    /**\n     * Relational operators to compare two lexicons.\n     */\n    bool operator <(const TrieLexicon& lex2) const;\n\n    /**\n     * Relational operators to compare two lexicons.\n     */\n    bool operator <=(const TrieLexicon& lex2) const;\n\n    /**\n     * Relational operators to compare two lexicons.\n     */\n    bool operator >(const TrieLexicon& lex2) const;\n\n    /**\n     * Relational operators to compare two lexicons.\n     */\n    bool operator >=(const TrieLexicon& lex2) const;\n\n    /**\n     * Returns the union of lexicons <code>lex1</code> and <code>lex2</code>,\n     * which is the set of words that appear in at least one of the two.\n     */\n    TrieLexicon operator +(const TrieLexicon& lex2) const;\n\n    /**\n     * Returns the union of this lexicon and the words in the given list,\n     * which is the set of words that appear in at least one of the two.\n     */\n    TrieLexicon operator +(std::initializer_list<std::string> list) const;\n\n    /**\n     * Returns the union of this lexicon and the given word.\n     */\n    TrieLexicon operator +(const std::string& word) const;\n\n    /**\n     * Returns the intersection of two lexicons,\n     * which is the set of all words that appear in both.\n     */\n    TrieLexicon operator *(const TrieLexicon& lex2) const;\n\n    /**\n     * Returns the intersection of this lexicons and the given list,\n     * which is the set of all words that appear in both.\n     */\n    TrieLexicon operator *(std::initializer_list<std::string> list) const;\n\n    /**\n     * Returns the difference of two lexicons,\n     * which is all of the words that appear in <code>lex1</code> but\n     * not <code>lex2</code>.\n     * You can also pass an initializer list such as {\"a\", \"b\", \"c\"}.\n     * The right hand set can be replaced by a single word, in\n     * which case the operator returns a new lexicon formed by removing that word.\n     */\n    TrieLexicon operator -(const TrieLexicon& lex2) const;\n\n    /**\n     * Returns the difference of two lexicons,\n     * which is all of the words that appear in this lexicon but not in\n     * the given initializer list.\n     */\n    TrieLexicon operator -(std::initializer_list<std::string> list) const;\n\n    /**\n     * Returns a new lexicon formed by removing the given word from this lexicon.\n     */\n    TrieLexicon operator -(const std::string& word) const;\n\n    /**\n     * Adds all of the words from the given lexicon to this lexicon.\n     */\n    TrieLexicon& operator +=(const TrieLexicon& lex2);\n\n    /**\n     * Adds all of the words from the given list to this lexicon.\n     */\n    TrieLexicon& operator +=(std::initializer_list<std::string> list);\n\n    /**\n     * Adds the specified word to this lexicon.\n     */\n    TrieLexicon& operator +=(const std::string& word);\n\n    /**\n     * Removes any elements from this lexicon that are not present in\n     * <code>lex2</code>.\n     */\n    TrieLexicon& operator *=(const TrieLexicon& lex2);\n\n    /**\n     * Removes any elements from this lexicon that are not present in\n     * the given initializer list.\n     */\n    TrieLexicon& operator *=(std::initializer_list<std::string> list);\n\n    /**\n     * Removes all elements in the given lexicon from this lexicon.\n     */\n    TrieLexicon& operator -=(const TrieLexicon& lex2);\n\n    /**\n     * Removes all elements in the given list from this lexicon.\n     */\n    TrieLexicon& operator -=(std::initializer_list<std::string> list);\n\n    /**\n     * Removes the given word from this lexicon.\n     */\n    TrieLexicon& operator -=(const std::string& value);\n\n    /**\n     * Allows you to add multiple elements to a lexicon.\n     *  @example  lex += \"she\", \"sells\", \"sea\", \"shells\";\n     */\n    TrieLexicon& operator ,(const std::string& word);\n\n    /*\n     * Additional Lexicon operations\n     * -----------------------------\n     * In addition to the methods listed in this interface, the Lexicon\n     * class supports the following operations:\n     *\n     *   - Deep copying for the copy constructor and assignment operator\n     *   - Iteration using the range-based for statement and STL iterators\n     *\n     * All iteration is guaranteed to proceed in alphabetical order.  All\n     * words in the lexicon are stored in lowercase.\n     */\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\nprivate:\n    struct TrieNode {\n    public:\n        TrieNode() {\n            _isWord = false;\n            for (int i = 0; i < 26; i++) {\n                _children[i] = nullptr;\n            }\n        }\n\n        // pre: letter is between 'a' and 'z' in lowercase\n        inline TrieNode*& child(char letter) {\n            return _children[letter - 'a'];\n        }\n\n        inline int childCount() const {\n            int count = 0;\n            for (int i = 0; i < 26; i++) {\n                if (_children[i] != nullptr) {\n                    count++;\n                }\n            }\n            return count;\n        }\n\n        inline bool isLeaf() const {\n            return childCount() == 0;\n        }\n\n        inline bool isWord() const {\n            return _isWord;\n        }\n\n        inline void setWord(bool value) {\n            _isWord = value;\n        }\n\n    private:\n        /* instance variables */\n        bool _isWord;\n        TrieNode* _children[26];   // 0=a, 1=b, 2=c, ..., 25=z\n    };\n\n    /*\n     * private helper functions, including\n     * recursive helpers to implement public add/contains/remove\n     */\n    bool addHelper(TrieNode*& node, const std::string& word, const std::string& originalWord);\n    bool containsHelper(TrieNode* node, const std::string& word, bool isPrefix) const;\n    void deepCopy(const TrieLexicon& src);\n    void deleteTree(TrieNode* node);\n    bool removeHelper(TrieNode*& node, const std::string& word, const std::string& originalWord, bool isPrefix);\n    void removeSubtreeHelper(TrieNode*& node, const std::string& originalWord);\n\n    friend std::ostream& operator <<(std::ostream& os, const TrieLexicon& lex);\n    friend std::istream& operator >>(std::istream& is, TrieLexicon& lex);\n\n    /* instance variables */\n    TrieNode* _root;\n    int _size;\n    bool _removeFlag;             // flag to differentiate += and -= when used with ,\n    Set<std::string> _allWords;   // secondary structure of all words for foreach;\n                                  // basically a cop-out so I can loop over words\n\npublic:\n    /*\n     * Deep copying support\n     * --------------------\n     * This copy constructor and operator= are defined to make a\n     * deep copy, making it possible to pass/return lexicons by value\n     * and assign from one lexicon to another.  The entire contents of\n     * the lexicon, including all words, are copied.  Making copies is\n     * generally avoided because of the expense and thus, lexicons are\n     * typically passed by reference.  When a copy is needed, these\n     * operations are supported.\n     */\n    TrieLexicon(const TrieLexicon& src);\n    TrieLexicon& operator =(const TrieLexicon& src);\n\n    /*\n     * Iterator support\n     * ----------------\n     * The classes in the StanfordCPPLib collection implement input\n     * iterators so that they work symmetrically with respect to the\n     * corresponding STL classes.\n     */\n    class iterator : public Set<std::string>::iterator {\n    public:\n        iterator() : Set<std::string>::iterator() {}\n        iterator(const iterator& it) : Set<std::string>::iterator(it) {}\n        iterator(const Set<std::string>::iterator& it) : Set<std::string>::iterator(it) {}\n    };\n\n    /**\n     * Returns an iterator positioned at the first word in the lexicon.\n     */\n    iterator begin() const {\n        return iterator(_allWords.begin());\n    }\n\n    /**\n     * Returns an iterator positioned at the last word in the lexicon.\n     */\n    iterator end() const {\n        return iterator(_allWords.end());\n    }\n};\n\ntemplate <typename FunctorType>\nvoid TrieLexicon::mapAll(FunctorType fn) const {\n    for (std::string word : *this) {\n        fn(word);\n    }\n}\n\n/**\n * Hashing function for lexicons.\n */\nint hashCode(const TrieLexicon& l);\n\n/**\n * Prints the lexicon to the given output stream.\n */\nstd::ostream& operator <<(std::ostream& os, const TrieLexicon& lex);\n\n/**\n * Reads the contents of a lexicon from the given input stream.\n */\nstd::istream& operator >>(std::istream& is, TrieLexicon& lex);\n\n#endif // _trielexicon_h\n"
  },
  {
    "path": "Library/collections/vector.h",
    "content": "/*\n * File: vector.h\n * --------------\n * This file exports the <code>Vector</code> class, which provides an\n * efficient, safe, convenient replacement for the array type in C++.\n */\n\n#ifndef _vector_h\n#define _vector_h\n\n#include <algorithm>\n#include <initializer_list>\n#include <iostream>\n#include <iterator>\n#include <sstream>\n#include <string>\n#include <vector>\n#include <deque>\n#include <type_traits>\n#include <functional>\n\n#include \"collections.h\"\n#include \"error.h\"\n#include \"hashcode.h\"\n#include \"random.h\"\n\n/**\n * This class stores an ordered list of values similar to an array.\n * It supports traditional array selection using square brackets, but\n * also supports inserting and deleting elements.  It is similar in\n * function to the STL <code>vector</code> type, but is simpler both\n * to use and to implement.\n */\ntemplate <typename ValueType>\nclass Vector {\npublic:\n    /**\n     * Initializes a new empty vector.\n     * @bigoh O(1)\n     */\n    Vector() = default;\n\n    /**\n     * Initializes a new vector, creating an array with <code>n</code>\n     * elements, each of which is initialized to <code>value</code>.\n     * If <code>value</code> is missing, the elements are initialized\n     * to the default value for the type.\n     * @bigoh O(N)\n     */\n    explicit Vector(int n, ValueType value = ValueType());\n\n    /**\n     * Uses an initializer list to set up the vector.\n     * @bigoh O(N)\n     */\n    Vector(std::initializer_list<ValueType> list);\n\n    /**\n     * Frees any heap storage allocated by this vector.\n     * @bigoh O(1)\n     */\n    virtual ~Vector() = default;\n\n    /**\n     * Adds a new value to the end of this vector.\n     * @bigoh O(1)\n     */\n    void add(const ValueType& value);\n\n    /**\n     * Adds all elements of the given other vector to this vector.\n     * Returns a reference to this vector.\n     * Identical in behavior to the += operator.\n     * @bigoh O(N)\n     */\n    Vector<ValueType>& addAll(const Vector<ValueType>& v);\n\n    /**\n     * Removes all elements from this vector.\n     * @bigoh O(1)\n     */\n    void clear();\n\n    /**\n     * Compares two vectors for equality.\n     * Returns <code>true</code> if this vector contains exactly the same\n     * values as the given other vector.\n     * Identical in behavior to the == operator.\n     * @bigoh O(N)\n     */\n    bool equals(const Vector<ValueType>& v) const;\n\n    /**\n     * Returns the element at the specified index in this vector.\n     * Similar in behavior to the [] operator.\n     * @throw ErrorException if the index is not in the array range\n     * @bigoh O(1)\n     */\n    const ValueType& get(int index) const;\n\n    /**\n     * Inserts the element into this vector before the specified index.\n     * All subsequent elements are shifted one position to the right.\n     * @throw ErrorException if the index is not in the array range from 0\n     * up to and including the length of the vector.\n     * @bigoh O(N)\n     */\n    void insert(int index, const ValueType& value);\n\n    /**\n     * Returns <code>true</code> if this vector contains no elements.\n     * @bigoh O(1)\n     */\n    bool isEmpty() const;\n\n    /**\n     * Calls the specified function on each element of the vector in\n     * ascending index order.\n     * @bigoh O(N)\n     */\n    void mapAll(std::function<void (const ValueType&)> fn) const;\n\n    /**\n     * Removes the element at the specified index from this vector\n     * and returns it. All subsequent elements are shifted one\n     * position to the left.\n     * @throw ErrorException if the index is not in the array range\n     * @bigoh O(N)\n     */\n    ValueType remove(int index);\n\n    /**\n     * Replaces the element at the specified index in this vector with\n     * a new value.  The previous value at that index is overwritten.\n     * Similar in behavior to the [] operator.\n     * @throw ErrorException if the index is not in the array range\n     * @bigoh O(1)\n     */\n    void set(int index, const ValueType& value);\n\n    /**\n     * Returns the number of elements in this vector.\n     * @bigoh O(1)\n     */\n    int size() const;\n\n    /**\n     * Rearranges the order of the elements in this vector into sorted order.\n     * For example, if vector stores {9, 1, 4, 3}, changes it to store {1, 3, 4, 9}.\n     * The ValueType must have an operator < to call this method.\n     * @bigoh O(N log N)\n     */\n    void sort();\n\n    /**\n     * Returns a new vector containing the given subset range of elements\n     * from this vector. The new vector is a deep copy, not linked to this one.\n     * @throw ErrorException if the range (start .. start + length) is not\n     *        within the bounds of this vector, or if length is negative\n     * @bigoh O(N)\n     */\n    Vector<ValueType> subList(int start, int length) const;\n\n    /**\n     * Returns a new vector containing the elements from the start position\n     * to the end of the vector.\n     *\n     * @throw ErrorException if start > size()\n     * @bigoh O(N)\n     */\n    Vector<ValueType> subList(int start) const;\n\n    /**\n     * Converts the vector to a printable string representation\n     * such as \"{10, 20, 30, 40}\".\n     * @bigoh O(N)\n     */\n    std::string toString() const;\n\n    /**\n     * Overloads <code>[]</code> to select elements from this vector.\n     * This extension enables the use of traditional array notation to\n     * get or set individual elements.\n     * @throw ErrorException if the index is not in the array range\n     * @bigoh O(1)\n     */\n    ValueType& operator [](int index);\n\n    /**\n     * Overloads <code>[]</code> to select elements from this vector.\n     * This extension enables the use of traditional array notation to\n     * get or set individual elements.\n     * @throw ErrorException if the index is not in the array range\n     * @bigoh O(1)\n     */\n    const ValueType& operator [](int index) const;\n\n    /**\n     * Concatenates two vectors and returns the result.\n     * @bigoh O(N)\n     */\n    Vector operator +(const Vector& v2) const;\n\n    /**\n     * Produces a vector formed by appending the given element to this vector.\n     * @bigoh O(N)\n     */\n    Vector operator +(const ValueType& elem) const;\n\n    /**\n     * Adds all of the elements from <code>v2</code> to the end of this vector.\n     * @bigoh O(N)\n     */\n    Vector& operator +=(const Vector& v2);\n\n    /**\n     * Adds the single specified value) to the end of the vector.\n     * @bigoh O(1)\n     */\n    Vector& operator +=(const ValueType& value);\n\n\n    /**\n     * Compares two vectors for equality.\n     * The ValueType must have an == operator.\n     * @bigoh O(N)\n     */\n    bool operator ==(const Vector& v2) const;\n\n    /**\n     * Compares two vectors for inequality.\n     * The ValueType must have a != operator.\n     * @bigoh O(N)\n     */\n    bool operator !=(const Vector& v2) const;\n\n    /**\n     * Relational operators to compare two vectors.\n     * Each element is compared pairwise to the corresponding element at the\n     * same index in the other vector; for example, we first check the values\n     * at index 0, then 1, and so on.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     * @bigoh O(N)\n     */\n    bool operator <(const Vector& v2) const;\n\n    /**\n     * Relational operators to compare two vectors.\n     * Each element is compared pairwise to the corresponding element at the\n     * same index in the other vector; for example, we first check the values\n     * at index 0, then 1, and so on.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     * @bigoh O(N)\n     */\n    bool operator <=(const Vector& v2) const;\n\n    /**\n     * Relational operators to compare two vectors.\n     * Each element is compared pairwise to the corresponding element at the\n     * same index in the other vector; for example, we first check the values\n     * at index 0, then 1, and so on.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     * @bigoh O(N)\n     */\n    bool operator >(const Vector& v2) const;\n\n    /**\n     * Relational operators to compare two vectors.\n     * Each element is compared pairwise to the corresponding element at the\n     * same index in the other vector; for example, we first check the values\n     * at index 0, then 1, and so on.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     * @bigoh O(N)\n     */\n    bool operator >=(const Vector& v2) const;\n\n    /*\n     * Additional Vector operations\n     * ----------------------------\n     * In addition to the methods listed in this interface, the Vector\n     * class supports the following operations:\n     *\n     *   - Stream I/O using the << and >> operators\n     *   - Deep copying for the copy constructor and assignment operator\n     *   - Iteration using the range-based for statement or STL iterators\n     *\n     * The iteration forms process the Vector in index order.\n     */\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\nprivate:\n    /*\n     * Implementation notes: Vector data structure\n     * -------------------------------------------\n     * The elements are stored in a std::vector, the regular C++ library\n     * type representing a sequence of elements. We wrap std::vector because\n     * it has no runtime safety checks, something that's tricky to get used\n     * to when you're first learning to use these types.\n     *\n     * There's an edge case in the C++ libraries where std::vector<bool> doesn't\n     * work as you might think it does. This is widely regarded as a mistake\n     * in the language design and there's been a proposal to fix it for many\n     * years now. In the interim, we get around this by falling back on the\n     * std::deque type in the event that the client wants to make a\n     * Vector<bool>\n     */\n    using ContainerType = typename std::conditional<std::is_same<ValueType, bool>::value,\n                                                    std::deque<bool>,\n                                                    std::vector<ValueType>>::type;\n\n    /* Instance variables */\n    ContainerType _elements;\n    stanfordcpplib::collections::VersionTracker _version;\n\n    /* Private methods */\n\n    /*\n     * Throws an ErrorException if the given index is not within the range of\n     * [min..max] inclusive.\n     * This is a consolidated error handler for all various Vector members that\n     * accept index parameters.\n     * The prefix parameter represents a text string to place at the start of\n     * the error message, generally to help indicate which member threw the error.\n     *\n     * We make prefix a const char* rather than a std::string to avoid having to\n     * construct and then destroy the prefix with each call.\n     */\n    void checkIndex(int index, int min, int max, const char* prefix) const;\n\n    /*\n     * Hidden features\n     * ---------------\n     * The remainder of this file consists of the code required to\n     * support deep copying and iteration.  Including these methods\n     * in the public interface would make that interface more\n     * difficult to understand for the average client.\n     */\n\npublic:\n    /**\n     * Adds an element to the vector passed as the left-hand operatand.\n     * This form makes it easier to initialize vectors in old versions of C++.\n     * @bigoh O(1)\n     */\n    Vector& operator ,(const ValueType& value);\n\n    using iterator = stanfordcpplib::collections::CheckedIterator<typename ContainerType::iterator>;\n    using const_iterator = stanfordcpplib::collections::CheckedIterator<typename ContainerType::const_iterator>;\n\n    iterator begin();\n    iterator end();\n    const_iterator begin() const;\n    const_iterator end() const;\n\n    /* Updates the internal version count. Only our libraries need this, and they only\n     * need it in rare cases where an operation that's semantically mutating but bitwise\n     * non-mutating occurs.\n     */\n    void updateVersion();\n};\n\n/* Implementation section */\n\ntemplate <typename ValueType>\nVector<ValueType>::Vector(int n, ValueType value) {\n    if (n < 0) error(\"Cannot create a Vector with a negative number of elements.\");\n    _elements.assign(n, value);\n}\n\ntemplate <typename ValueType>\nVector<ValueType>::Vector(std::initializer_list<ValueType> list)\n        : _elements(list) {\n}\n\n/*\n * Implementation notes: Vector methods\n * ------------------------------------\n * The basic Vector methods are straightforward and should require\n * no detailed documentation.\n */\ntemplate <typename ValueType>\nvoid Vector<ValueType>::add(const ValueType& value) {\n    insert(size(), value);\n}\n\ntemplate <typename ValueType>\nVector<ValueType>& Vector<ValueType>::addAll(const Vector<ValueType>& v) {\n    for (const ValueType& value : v) {\n        add(value);\n    }\n    return *this;   // BUGFIX 2014/04/27\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::clear() {\n    _elements.clear();\n    _version.update();\n}\n\ntemplate <typename ValueType>\nbool Vector<ValueType>::equals(const Vector<ValueType>& v) const {\n    return stanfordcpplib::collections::equals(*this, v);\n}\n\ntemplate <typename ValueType>\nconst ValueType& Vector<ValueType>::get(int index) const {\n    checkIndex(index, 0, size()-1, \"get\");\n    return _elements[index];\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::insert(int index, const ValueType& value) {\n    checkIndex(index, 0, size(), \"insert\");\n    _elements.insert(_elements.begin() + index, value);\n    _version.update();\n}\n\ntemplate <typename ValueType>\nbool Vector<ValueType>::isEmpty() const {\n    return _elements.empty();\n}\n\n/*\n * Implementation notes: mapAll\n * ----------------------------\n * The various versions of the mapAll function apply the function or\n * function object to each element in ascending index order.\n */\ntemplate <typename ValueType>\nvoid Vector<ValueType>::mapAll(std::function<void (const ValueType&)> fn) const {\n    for (const auto& elem: _elements) {\n        fn(elem);\n    }\n}\n\ntemplate <typename ValueType>\nValueType Vector<ValueType>::remove(int index) {\n    checkIndex(index, 0, size() - 1, \"remove\");\n    ValueType elem = _elements[index];\n    _elements.erase(_elements.begin() + index);\n    _version.update();\n    return elem;\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::set(int index, const ValueType& value) {\n    checkIndex(index, 0, size()-1, \"set\");\n    _elements[index] = value;\n}\n\ntemplate <typename ValueType>\nint Vector<ValueType>::size() const {\n    return _elements.size();\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::sort() {\n    std::sort(begin(), end());\n}\n\ntemplate <typename ValueType>\nVector<ValueType> Vector<ValueType>::subList(int start, int length) const {\n    checkIndex(start, 0, size(), \"subList\");\n    checkIndex(start + length, 0, size(), \"subList\");\n    if (length < 0) {\n        error(\"Vector::subList: length cannot be negative\");\n    }\n    Vector<ValueType> result;\n    for (int i = start; i < start + length; i++) {\n        result.add(get(i));\n    }\n    return result;\n}\n\ntemplate <typename ValueType>\nVector<ValueType> Vector<ValueType>::subList(int start) const {\n    return subList(start, size() - start);\n}\n\ntemplate <typename ValueType>\nstd::string Vector<ValueType>::toString() const {\n    std::ostringstream os;\n    os << *this;\n    return os.str();\n}\n\n/*\n * Implementation notes: Vector selection\n * --------------------------------------\n * The following code implements traditional array selection using\n * square brackets for the index.\n */\ntemplate <typename ValueType>\nValueType& Vector<ValueType>::operator [](int index) {\n    return const_cast<ValueType&>(static_cast<const Vector &>(*this)[index]);\n}\ntemplate <typename ValueType>\nconst ValueType& Vector<ValueType>::operator [](int index) const {\n    checkIndex(index, 0, size()-1, \"operator []\");\n    return _elements[index];\n}\n\ntemplate <typename ValueType>\nVector<ValueType> Vector<ValueType>::operator +(const Vector& v2) const {\n    Vector<ValueType> result = *this;\n    return result.addAll(v2);\n}\n\ntemplate <typename ValueType>\nVector<ValueType> Vector<ValueType>::operator +(const ValueType& elem) const {\n    Vector<ValueType> result = *this;\n    return result += elem;\n}\n\ntemplate <typename ValueType>\nVector<ValueType>& Vector<ValueType>::operator +=(const Vector& v2) {\n    return addAll(v2);\n}\n\ntemplate <typename ValueType>\nVector<ValueType>& Vector<ValueType>::operator +=(const ValueType& value) {\n    add(value);\n    return *this;\n}\n\ntemplate <typename ValueType>\nbool Vector<ValueType>::operator ==(const Vector& v2) const {\n    return equals(v2);\n}\n\ntemplate <typename ValueType>\nbool Vector<ValueType>::operator !=(const Vector& v2) const {\n    return !equals(v2);\n}\n\ntemplate <typename ValueType>\nbool Vector<ValueType>::operator <(const Vector& v2) const {\n    return stanfordcpplib::collections::compare(*this, v2) < 0;\n}\n\ntemplate <typename ValueType>\nbool Vector<ValueType>::operator <=(const Vector& v2) const {\n    return stanfordcpplib::collections::compare(*this, v2) <= 0;\n}\n\ntemplate <typename ValueType>\nbool Vector<ValueType>::operator >(const Vector& v2) const {\n    return stanfordcpplib::collections::compare(*this, v2) > 0;\n}\n\ntemplate <typename ValueType>\nbool Vector<ValueType>::operator >=(const Vector& v2) const {\n    return stanfordcpplib::collections::compare(*this, v2) >= 0;\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::checkIndex(int index, int min, int max, const char* prefix) const {\n    if (index < min || index > max) {\n        std::ostringstream out;\n        out << \"Vector::\" << prefix << \": index of \" << index\n            << \" is outside of valid range \";\n        if (isEmpty()) {\n            out << \" (empty vector)\";\n        } else {\n            out << \"[\";\n            if (min < max) {\n                out << min << \"..\" << max;\n            } else if (min == max) {\n                out << min;\n            } // else min > max, no range, empty vector\n            out << \"]\";\n        }\n        error(out.str());\n    }\n}\n\n/*\n * Implementation notes: The , operator\n * ------------------------------------\n * The comma operator works adding the right operand to the vector and\n * then returning the vector by reference so that it is set for the next\n * value in the chain.\n */\ntemplate <typename ValueType>\nVector<ValueType>& Vector<ValueType>::operator ,(const ValueType& value) {\n    add(value);\n    return *this;\n}\n\n/*\n * Implementation notes: << and >>\n * -------------------------------\n * The insertion and extraction operators use the template facilities in\n * strlib.h to read and write generic values in a way that treats strings\n * specially.\n */\ntemplate <typename ValueType>\nstd::ostream& operator <<(std::ostream& os, const Vector<ValueType>& vec) {\n    return stanfordcpplib::collections::writeCollection(os, vec);\n}\n\ntemplate <typename ValueType>\nstd::istream& operator >>(std::istream& is, Vector<ValueType>& vec) {\n    ValueType element;\n    return stanfordcpplib::collections::readCollection(is, vec, element, /* descriptor */ \"Vector::operator >>\");\n}\n\n\n/*\n * Implementation notes: Iterator support\n * --------------------------------------\n * We used the checked iterator type, which requires us to provide information\n * about the full range of values available.\n */\ntemplate <typename ValueType>\ntypename Vector<ValueType>::iterator Vector<ValueType>::begin() {\n    return { &_version, _elements.begin(), _elements };\n}\ntemplate <typename ValueType>\ntypename Vector<ValueType>::const_iterator Vector<ValueType>::begin() const {\n    return { &_version, _elements.begin(), _elements };\n}\ntemplate <typename ValueType>\ntypename Vector<ValueType>::iterator Vector<ValueType>::end() {\n    return { &_version, _elements.end(), _elements };\n}\ntemplate <typename ValueType>\ntypename Vector<ValueType>::const_iterator Vector<ValueType>::end() const {\n    return { &_version, _elements.end(), _elements };\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::updateVersion() {\n    _version.update();\n}\n\n/*\n * Template hash function for vectors.\n * Requires the element type in the Vector to have a hashCode function.\n */\ntemplate <typename ValueType>\nint hashCode(const Vector<ValueType>& vec) {\n    return stanfordcpplib::collections::hashCodeCollection(vec);\n}\n\n/*\n * Function: randomElement\n * Usage: element = randomElement(v);\n * ----------------------------------\n * Returns a randomly chosen element of the given vector.\n * Throws an error if the vector is empty.\n */\ntemplate <typename T>\nconst T& randomElement(const Vector<T>& vec) {\n    return stanfordcpplib::collections::randomElementIndexed(vec);\n}\n\n\n#endif // _vector_h\n"
  },
  {
    "path": "Library/console/console.cpp",
    "content": "/*\n * File: console.cpp\n * -----------------\n * This file implements the console .h interface.\n *\n * @author Marty Stepp\n * @version 2019/04/12\n * - added pause() implementation (empty) in headless mode\n * @version 2018/11/22\n * - added headless mode support\n * @version 2018/10/01\n * - bug fix for graphical console popping up even if not included\n * @version 2018/08/23\n * - renamed to console .cpp/h to replace Java version\n * - separated out gconsolewindow.h/cpp\n * @version 2018/07/15\n * - initial version, based on io/console .cpp\n */\n\n#include \"consoletext.h\"\n#include <cstdio>\n#include \"exceptions.h\"\n#include \"gconsolewindow.h\"\n\n// Default can be overridden with explicit call to setConsoleBlah\nstatic const int DEFAULT_X = -1, DEFAULT_Y = -1; // will center\nstatic const int DEFAULT_WIDTH = 900, DEFAULT_HEIGHT = 500;\nstatic const bool DEFAULT_ECHO = true, DEFAULT_EXIT_ON_CLOSE = true;\n\n#ifdef SPL_HEADLESS_MODE\n\nvoid clearConsole() {\n    // empty\n}\n\nbool getConsoleClearEnabled() {\n    return true;\n}\n\n/* GWindow::CloseOperation */ int getConsoleCloseOperation() {\n    return 0;\n}\n\nbool getConsoleEcho() {\n    return true;\n}\n\nbool getConsoleEnabled() {\n    return true;\n}\n\nbool getConsoleExitProgramOnClose() {\n    return true;\n}\n\nstd::string getConsoleFont() {\n    return \"\";\n}\n\ndouble getConsoleHeight() {\n    return 0;\n}\n\nbool getConsoleLocationSaved() {\n    return false;\n}\n\nbool getConsolePrintExceptions() {\n    return exceptions::getTopLevelExceptionHandlerEnabled();\n}\n\nbool getConsoleSettingsLocked() {\n    return false;\n}\n\ndouble getConsoleWidth() {\n    return 0;\n}\n\nstd::string getConsoleWindowTitle() {\n    return \"\";\n}\n\nvoid pause(double /*milliseconds*/) {\n    // empty\n}\n\nvoid setConsoleClearEnabled(bool /*value*/) {\n    // empty\n}\n\nvoid setConsoleCloseOperation(int /*op*/) {\n    // empty\n}\n\nvoid setConsoleEcho(bool /*echo*/) {\n    // empty\n}\n\nvoid setConsoleEnabled(bool /*enabled*/) {\n    // empty\n}\n\nvoid setConsoleErrorColor(const std::string& /*color*/) {\n    // empty\n}\n\nvoid setConsoleExitProgramOnClose(bool /*exitOnClose*/) {\n    // empty\n}\n\nvoid setConsoleFont(const std::string& /*font*/) {\n    // empty\n}\n\nvoid setConsoleLocation(double /*x*/, double /*y*/) {\n    // empty\n}\n\nvoid setConsoleLocationSaved(bool /*value*/) {\n    // empty\n}\n\nvoid setConsoleOutputColor(const std::string& /*color*/) {\n    // empty\n}\n\nvoid setConsoleSettingsLocked(bool /*value*/) {\n    // empty\n}\n\nvoid setConsoleSize(double /*width*/, double /*height*/) {\n    // empty\n}\n\nvoid setConsoleWindowTitle(const std::string& /*title*/) {\n    // empty\n}\n\nvoid shutdownConsole() {\n    // empty\n}\n\n#else // SPL_HEADLESS_MODE\n\nvoid clearConsole() {\n    GConsoleWindow::instance()->clearConsole();\n}\n\nbool getConsoleClearEnabled() {\n    return GConsoleWindow::instance()->isClearEnabled();\n}\n\n/* GWindow::CloseOperation */ int getConsoleCloseOperation() {\n    return GConsoleWindow::instance()->getCloseOperation();\n}\n\nbool getConsoleEcho() {\n    return GConsoleWindow::instance()->isEcho();\n}\n\nbool getConsoleEnabled() {\n#ifdef __DONT_ENABLE_QT_GRAPHICAL_CONSOLE\n    return false;\n#else\n    return GConsoleWindow::consoleEnabled();\n#endif\n}\n\nbool getConsoleExitProgramOnClose() {\n    return GConsoleWindow::instance()->getCloseOperation() == GWindow::CLOSE_EXIT;\n}\n\nstd::string getConsoleFont() {\n#ifdef __DONT_ENABLE_QT_GRAPHICAL_CONSOLE\n    return GConsoleWindow::getDefaultFont();\n#else\n    return GConsoleWindow::instance()->getFont();\n#endif\n}\n\ndouble getConsoleHeight() {\n    return GConsoleWindow::instance()->getHeight();\n}\n\nGPoint getConsoleLocation() {\n    return GConsoleWindow::instance()->getLocation();\n}\n\nbool getConsoleLocationSaved() {\n    return GConsoleWindow::instance()->isLocationSaved();\n}\n\nbool getConsolePrintExceptions() {\n    return exceptions::getTopLevelExceptionHandlerEnabled();\n}\n\nbool getConsoleSettingsLocked() {\n    return GConsoleWindow::isInitialized()\n            && GConsoleWindow::instance()->isLocked();\n}\n\nGDimension getConsoleSize() {\n    return GConsoleWindow::instance()->getSize();\n}\n\ndouble getConsoleWidth() {\n    return GConsoleWindow::instance()->getWidth();\n}\n\nGConsoleWindow* getConsoleWindow() {\n    return GConsoleWindow::instance();\n}\n\nstd::string getConsoleWindowTitle() {\n    return GConsoleWindow::instance()->getTitle();\n}\n\nvoid setConsoleClearEnabled(bool value) {\n    if (getConsoleSettingsLocked()) { return; }\n    GConsoleWindow::instance()->setClearEnabled(value);\n}\n\nvoid setConsoleCloseOperation(/*GWindow::CloseOperation*/ int op) {\n    GWindow::CloseOperation gwcop = static_cast<GWindow::CloseOperation>(op);\n    if (getConsoleSettingsLocked()) { return; }\n    GConsoleWindow::instance()->setCloseOperation(gwcop);\n}\n\nvoid setConsoleEcho(bool echo) {\n    if (getConsoleSettingsLocked()) { return; }\n    GConsoleWindow::instance()->setEcho(echo);\n}\n\nvoid setConsoleEnabled(bool enabled) {\n    GConsoleWindow::setConsoleEnabled(enabled);\n}\n\nvoid setConsoleErrorColor(const std::string& color) {\n    if (getConsoleSettingsLocked()) { return; }\n    GConsoleWindow::instance()->setErrorColor(color);\n}\n\nvoid setConsoleExitProgramOnClose(bool exitOnClose) {\n    if (getConsoleSettingsLocked()) { return; }\n    GConsoleWindow::instance()->setExitOnClose(exitOnClose);\n}\n\nvoid setConsoleFont(const std::string& font) {\n    if (getConsoleSettingsLocked()) { return; }\n    GConsoleWindow::instance()->setFont(font);\n}\n\nvoid setConsoleLocation(double x, double y) {\n    if (getConsoleSettingsLocked()) { return; }\n    if (floatingPointEqual(x, -1) && floatingPointEqual(y, -1)) {\n        GConsoleWindow::instance()->center();\n    } else {\n        GConsoleWindow::instance()->setLocation(x, y);\n    }\n}\n\nvoid setConsoleLocationSaved(bool value) {\n    GConsoleWindow::instance()->setLocationSaved(value);\n}\n\nvoid setConsoleOutputColor(const std::string& color) {\n    GConsoleWindow::instance()->setOutputColor(color);\n}\n\nvoid setConsoleSettingsLocked(bool value) {\n    GConsoleWindow::instance()->setLocked(value);\n}\n\nvoid setConsoleSize(double width, double height) {\n    if (getConsoleSettingsLocked()) { return; }\n    GConsoleWindow::instance()->setConsoleSize(width, height);\n}\n\nvoid setConsoleWindowTitle(const std::string& title) {\n    if (getConsoleSettingsLocked()) { return; }\n    GConsoleWindow::instance()->setTitle(title);\n}\n\nvoid shutdownConsole() {\n    if (getConsoleEnabled() && !GConsoleWindow::instance()->isLocked()) {\n        GConsoleWindow::instance()->shutdown(\"Shutdown\");\n    }\n}\n\n#endif // SPL_HEADLESS_MODE\n\n/*\n * Sets up console settings like window size, location, exit-on-close, etc.\n * to default values\n */\nvoid setConsolePropertiesQt() {\n\n    setConsoleSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);\n    setConsoleLocation(DEFAULT_X, DEFAULT_Y);\n    setConsoleEcho(DEFAULT_ECHO);\n    setConsoleExitProgramOnClose(DEFAULT_EXIT_ON_CLOSE);\n}\n\nvoid initializeQtGraphicalConsole() {\n#ifndef __DONT_ENABLE_QT_GRAPHICAL_CONSOLE\n    // ensure that console is initialized only once\n    static bool _initialized = false;\n    if (_initialized) {\n        return;\n    }\n    _initialized = true;\n\n    // declaring this object ensures that std::cin, cout, cerr are initialized\n    // properly before our lib tries to mess with them / redirect them\n    static std::ios_base::Init ios_base_init;\n\n#ifndef SPL_HEADLESS_MODE\n    if (GConsoleWindow::consoleEnabled()) {\n        GConsoleWindow::instance();   // ensure that console window is ready\n        setConsolePropertiesQt();\n    }\n#endif // SPL_HEADLESS_MODE\n\n#endif // __DONT_ENABLE_QT_GRAPHICAL_CONSOLE\n}\n"
  },
  {
    "path": "Library/console/console.h",
    "content": "/*\n * File: console.h\n * ---------------\n * This file contains functions related to the library's graphical console window,\n * implemented using the Qt graphics library in native C++ instead of Java.\n * In general if you #include this file, it will implicitly enable the graphical\n * console.  If you don't want to do that, you should #define a flag named\n * __DONT_ENABLE_QT_GRAPHICAL_CONSOLE right before #include'ing this header.\n * Once the graphical console has been enabled, it cannot easily be turned off\n * again for that program.\n *\n * @author Marty Stepp\n * @version 2018/11/22\n * - added headless mode support\n * @version 2018/10/18\n * - fixed includes to avoid accidentally enabling GUI unintentionally\n * @version 2018/09/08\n * - added doc comments for new documentation generation\n * @version 2018/08/27\n * - cleaned up comments\n * @version 2018/08/23\n * - renamed to console.h to replace Java version\n * - separated out gconsolewindow.h/cpp\n * @version 2018/07/29\n * - menu, icons, hotkeys\n * @version 2018/07/26\n * - refactored GConsoleWindow class\n * @version 2018/07/15\n * - initial version, based on io/console.h\n */\n\n\n#ifndef _console_h\n#define _console_h\n\n#include <string>\n\n#ifndef SPL_HEADLESS_MODE\nclass GConsoleWindow;\nstruct GDimension;\nstruct GPoint;\n#endif // SPL_HEADLESS_MODE\n\n/**\n * Erases the contents of the console window.\n */\nvoid clearConsole();\n\n/**\n * Returns whether the console's \"clear\" function should be enabled.\n * Default true.  If false, clear() will just print a message\n * rather than actually clearing the console.\n * @private\n */\nbool getConsoleClearEnabled();\n\n/**\n * Returns what the console will do when the user hits its \"close\" button.\n * By default, this is CONSOLE_HIDE_ON_CLOSE unless set otherwise.\n */\n/* GWindow::CloseOperation */ int getConsoleCloseOperation();\n\n/**\n * Returns whether or not the input/output from the Stanford graphical\n * console window is being echoed onto the standard operating system terminal\n * window. Initially this is false unless set to true by a previous call to\n * setConsoleEcho(true).\n */\nbool getConsoleEcho();\n\n/**\n * Returns whether the graphical console window is enabled.\n * This is true if you have included \"qconsole.h\" in your program.\n */\nbool getConsoleEnabled();\n\n/**\n * Returns whether the overall C++ program will terminate if the console\n * window is closed.  By default this is false initially.\n */\nbool getConsoleExitProgramOnClose();\n\n/**\n * Returns the font currently being used by the console.  The font\n * is typically a string in the form <code>family-style-size</code>.\n * In this string, <code>family</code> is the name of the font family;\n * <code>style</code> is either missing (indicating a plain font) or one\n * of the strings <code>Bold</code>, <code>Italic</code>, or\n * <code>BoldItalic</code>; and <code>size</code> is an integer\n * indicating the point size.\n * See gfont.h for more information about font strings.\n */\nstd::string getConsoleFont();\n\n/**\n * Returns the height of the console window in pixels.\n */\ndouble getConsoleHeight();\n\n/**\n * Returns the x/y position of the top-left corner of the console window.\n */\n#ifndef SPL_HEADLESS_MODE\nGPoint getConsoleLocation();\n#endif // SPL_HEADLESS_MODE\n\n/**\n * Returns whether the location of the console window should be remembered and\n * restored between runs of the program.  Initially false.\n */\nbool getConsoleLocationSaved();\n\n/**\n * Returns whether or not a feature is enabled that causes exceptions to be\n * echoed to the Stanford graphical console window when they are thrown.\n * Disabled (false) by default.\n */\nbool getConsolePrintExceptions();\n\n/**\n * Returns whether functions like setConsoleFont or setConsoleSize\n * are currently ignored.  See setConsoleSettingsLocked.\n * Clients should generally not call this method.\n * @private\n */\nbool getConsoleSettingsLocked();\n\n/**\n * Returns the size of the console window in pixels.\n */\n#ifndef SPL_HEADLESS_MODE\nGDimension getConsoleSize();\n#endif // SPL_HEADLESS_MODE\n\n/**\n * Returns the width of the console window in pixels.\n */\ndouble getConsoleWidth();\n\n/**\n * Returns a pointer to the graphical console window,\n * which is a subclass of GWindow, so you can manipulate it as you would\n * any other window.\n *\n * @private\n */\n#ifndef SPL_HEADLESS_MODE\nGConsoleWindow* getConsoleWindow();\n#endif // SPL_HEADLESS_MODE\n\n/**\n * Returns the title bar text of the console window.\n */\nstd::string getConsoleWindowTitle();\n\n/**\n * Initializes the state of the Qt graphical console, if it has not already\n * been initialized.\n * Clients should generally not call this method.\n * @private\n */\nvoid initializeQtGraphicalConsole();\n\n// defined in gwindow.h/cpp\nextern void pause(double milliseconds);\n\n/**\n * Returns whether the console's \"clear\" function should be enabled.\n * Default true.  If false, clear() will just print a message\n * rather than actually clearing the console.\n * This is sometimes used to facilitate creation of auto-grading scripts.\n * @private\n */\nvoid setConsoleClearEnabled(bool value);\n\n/**\n * Sets what the console should do when the user hits its \"close\" button.\n */\nvoid setConsoleCloseOperation(/*GWindow::CloseOperation*/ int op);\n\n/**\n * Enables or disables echoing the input/output from the Stanford graphical\n * console window onto the standard operating system terminal window.\n * Normally you don't need this echoing, but if you want to be able to copy\n * and paste your console interaction into another window, it is useful.\n */\nvoid setConsoleEcho(bool echo);\n\n/**\n * Sets the color used to display text in the console window.\n * The color string passed should be in a hex format such as \"#ffa32f\";\n * See gcolor.h for more detail about colors and color strings.\n */\nvoid setConsoleErrorColor(const std::string& color);\n\n/**\n * Sets whether the overall C++ program should terminate if the console\n * window is closed.  By default this is false initially.\n */\nvoid setConsoleExitProgramOnClose(bool exitOnClose);\n\n/**\n * Changes the font used for the console.  The <code>font</code> parameter\n * is typically a string in the form <code>family-style-size</code>.\n * In this string, <code>family</code> is the name of the font family;\n * <code>style</code> is either missing (indicating a plain font) or one\n * of the strings <code>Bold</code>, <code>Italic</code>, or\n * <code>BoldItalic</code>; and <code>size</code> is an integer\n * indicating the point size.  If any of these components is\n * specified as an asterisk, the existing value is retained.\n * The <code>font</code> parameter can also be a sequence of\n * such specifications separated by semicolons, in which case the\n * first available font on the system is used.\n * See gfont.h for more detail about font strings.\n */\nvoid setConsoleFont(const std::string& font);\n\n/**\n * Changes the (x, y) pixel position of the top-left corner of the console to\n * the specified coordinates, relative to the top/left of the screen.\n */\nvoid setConsoleLocation(double x, double y);\n\n/**\n * Sets whether the location of the console window should be remembered and\n * restored between runs of the program.  Default false.\n */\nvoid setConsoleLocationSaved(bool value);\n\n/**\n * Sets the color used to display text in the console window.\n * The color string passed should be in a hex format such as \"#ffa32f\";\n * See gcolor.h for more detail about color strings.\n */\nvoid setConsoleOutputColor(const std::string& color);\n\n/**\n * If set to true, disables functions like setConsoleFont or setConsoleSize,\n * to facilitate autograder construction by negating any such calls in the\n * student's main program.  Initially false.\n * Clients should generally not call this method.\n * @private\n */\nvoid setConsoleSettingsLocked(bool value);\n\n/**\n * Changes the size of the console to the specified dimensions in pixels.\n */\nvoid setConsoleSize(double width, double height);\n\n/**\n * Changes the title bar text of the console window to the specified text.\n */\nvoid setConsoleWindowTitle(const std::string& title);\n\n/**\n * Closes the graphical console window and turns it off.\n */\nvoid shutdownConsole();\n\n#endif // _console_h\n\n\n/*\n * console.h is weird in that a student's program must be able to #include it\n * and then magically receive the graphical console instead of the standard one;\n * but we want other lib files to be able to include console.h to get the\n * function prototypes without actually turning the graphical console on.\n * To achieve this, we have the __DONT_ENABLE_QT_GRAPHICAL_CONSOLE flag that lib\n * files can set right before #include'ing console.h.  If they do so, it will\n * declare the prototypes but not initialize the graphical console.\n */\n#ifndef __DONT_ENABLE_QT_GRAPHICAL_CONSOLE\n\nextern void setConsoleEnabled(bool);\n\nnamespace stanfordcpplib {\nnamespace qtgui {\n\n#ifndef QtConsoleInitializer_created\n#define QtConsoleInitializer_created\n/**\n * @private\n */\nclass QtConsoleInitializer_private {\npublic:\n    /*\n     * Code to initialize the library.\n     * Implemented as a class constructor so that it will run during\n     * static initialization phase, which happens before the student's\n     * main function.\n     */\n    QtConsoleInitializer_private() {\n        setConsoleEnabled(true);\n    }\n};\n\n/**\n * @private\n */\nstatic QtConsoleInitializer_private __qt_console_init;\n#endif // QtConsoleInitializer_created\n\n} // namespace qtgui\n} // namespace stanfordcpplib\n\n#endif // __DONT_ENABLE_QT_GRAPHICAL_CONSOLE\n\n"
  },
  {
    "path": "Library/console/consolestreambuf.h",
    "content": "/*\n * File: consolestreambuf.h\n * --------------------------\n * This file defines the <code>ConsoleStreambuf</code> class, which\n * represents a stream buffer that reads/writes to the Stanford graphical console\n * using a process pipe to a Java back-end process.\n *\n * @version 2016/10/04\n * - initial version\n */\n\n#ifndef _consolestreambuf_h\n#define _consolestreambuf_h\n\n#include <iostream>\n#include <streambuf>\n\nnamespace stanfordcpplib {\n\nclass ConsoleStreambuf : public std::streambuf {\nprotected:\n    /* Constants */\n    static const int BUFFER_SIZE = 4096;\n\n    /* Instance variables */\n    char inBuffer[BUFFER_SIZE];\n    char outBuffer[BUFFER_SIZE];\n    int blocked;\n\n    // to be overridden in subclasses\n    virtual void myEndLineConsole(bool isStderr) = 0;\n\n    virtual std::string myGetLineConsole() = 0;\n\n    virtual void myPutConsole(const std::string& str, bool isStderr) = 0;\n\npublic:\n    ConsoleStreambuf() {\n        setg(inBuffer, inBuffer, inBuffer);\n        setp(outBuffer, outBuffer + BUFFER_SIZE);\n        blocked = 0;\n    }\n\n    ~ConsoleStreambuf() {\n        /* Empty */\n    }\n\n    virtual bool isBlocked() {\n        return blocked > 0;\n    }\n\n    virtual int overflow(int ch = EOF) {\n        return overflow(ch, /* isStderr */ false);\n    }\n\n    virtual int overflow(int ch, bool isStderr) {\n        std::string line = \"\";\n        for (char *cp = pbase(); cp < pptr(); cp++) {\n            if (*cp == '\\n') {\n                myPutConsole(line, isStderr);\n                myEndLineConsole(isStderr);\n                line = \"\";\n            } else {\n                line += *cp;\n            }\n        }\n        if (line != \"\") {\n            myPutConsole(line, isStderr);\n        }\n        setp(outBuffer, outBuffer + BUFFER_SIZE);\n        if (ch != EOF) {\n            outBuffer[0] = ch;\n            pbump(1);\n        }\n        return ch != EOF;\n    }\n\n    virtual int sync() {\n        return overflow();\n    }\n\n    virtual int sync(bool isStderr) {\n        return overflow(EOF, isStderr);\n    }\n\n    virtual int underflow() {\n        // Allow long strings at some point\n        blocked++;\n        std::string line = myGetLineConsole();\n        blocked--;\n\n        bool eof = std::cin.eof();\n        fflush(stdout);\n\n        if (eof) {\n            return EOF;\n        }\n\n        int n = line.length();\n        if (n + 1 >= BUFFER_SIZE) {\n            error(\"ConsoleStreambuf::underflow: String too long\");\n        }\n        for (int i = 0; i < n; i++) {\n            inBuffer[i] = line[i];\n        }\n        inBuffer[n++] = '\\n';\n        inBuffer[n] = '\\0';\n        setg(inBuffer, inBuffer, inBuffer + n);\n        return inBuffer[0];\n    }\n};\n\nnamespace qtgui {\n\nextern void endLineConsoleQt(bool isStderr);\nextern std::string getLineConsoleQt();\nextern void putConsoleQt(const std::string& str, bool isStderr);\n\n/*\n * The following class is an exact copy of the ConsoleStreambuf class above,\n * except using different Qt-related functions for output.\n */\nclass ConsoleStreambufQt : public ::stanfordcpplib::ConsoleStreambuf {\npublic:\n    ConsoleStreambufQt(bool isStderr = false)\n            : ConsoleStreambuf(),\n              _isStderr(isStderr) {\n        // empty\n    }\n\n    ~ConsoleStreambufQt() {\n        /* Empty */\n    }\n\nprotected:\n    virtual void myEndLineConsole(bool /* isStderr */) {\n        endLineConsoleQt(_isStderr);\n    }\n\n    virtual std::string myGetLineConsole() {\n        return getLineConsoleQt();\n    }\n\n    virtual void myPutConsole(const std::string& str, bool /* isStderr */) {\n        return putConsoleQt(str, _isStderr);\n    }\n\nprivate:\n    bool _isStderr;\n};\n\n} // namespace qtgui\n\n} // namespace stanfordcpplib\n\n#endif // _consolestreambuf_h\n"
  },
  {
    "path": "Library/console/consoletext.h",
    "content": "/*\n * File: consoletext.h\n * -------------------\n * This file provides a way to use the functions from console.h\n * without mandating the use of the Stanford C++ library's\n * graphical console window.\n * \n * @author Marty Stepp\n * @version 2018/08/31\n * - initial version\n */\n\n#define __DONT_ENABLE_QT_GRAPHICAL_CONSOLE\n#include \"console.h\"\n#undef __DONT_ENABLE_QT_GRAPHICAL_CONSOLE\n"
  },
  {
    "path": "Library/console/echoinputstreambuf.h",
    "content": "/*\n * File: echoinputstreambuf.h\n * --------------------------\n * This file defines the <code>EchoInputStreambuf</code> class, which\n * represents a stream buffer that echoes to stdout any user input.\n * We mostly use this to display console input when redirecting in from a file.\n *\n * @version 2016/10/30\n * - added constructor that takes a string of input\n * @version 2016/10/04\n * - initial version\n */\n\n#ifndef _echoinputstreambuf_h\n#define _echoinputstreambuf_h\n\n#include <iostream>\n#include <sstream>\n#include <streambuf>\n\nnamespace stanfordcpplib {\n\n/*\n * An input stream buffer that echoes characters as they are read.\n * Used to echo cin console input for capturing for test case diffing\n * when fixed input has been fed to cin by autograders.\n *\n * inspired by: http://gabisoft.free.fr/articles/fltrsbf1.html\n */\nclass EchoInputStreambuf : public std::streambuf {\npublic:\n    EchoInputStreambuf(std::streambuf* source) : m_source(source), m_buffer('\\0') {\n        // empty\n    }\n\n    EchoInputStreambuf(const std::string& input) : m_buffer('\\0') {\n        std::istringstream* istream = new std::istringstream(input);\n        m_source = istream->rdbuf();\n    }\n\n    virtual ~EchoInputStreambuf() {\n        sync();\n    }\n\n    virtual int overflow(int) {\n        return EOF;\n    }\n\n    /*\n     * This is the crucial function; called to read a character from the\n     * underlying stream buffer (cin).  We capture it in a one-char m_buffer\n     * so we can return it later.\n     */\n    virtual int underflow() {\n        int result(EOF);\n        if (gptr() < egptr()) {\n            result = *gptr();\n        } else {\n            result = m_source->sbumpc();\n            if (result != EOF) {\n                m_buffer = result;\n                setg(&m_buffer, &m_buffer, &m_buffer + 1);\n\n                // echo the character to stdout\n                std::cout.put(result);\n                std::cout.flush();\n            }\n        }\n        return result;\n    }\n\n    virtual int sync() {\n        int result(0);\n        if (gptr() < egptr()) {\n            result = m_source->sputbackc(*gptr());\n            setg(nullptr, nullptr, nullptr);\n        }\n        if (m_source->pubsync() == EOF) {\n            result = EOF;\n        }\n        return result;\n    }\n\n    virtual std::streambuf* setbuf(char* p, std::streamsize len) {\n        return m_source->pubsetbuf(p, len);\n    }\n\nprivate:\n    std::streambuf* m_source;\n    char m_buffer;\n};\n\n} // namespace stanfordcpplib\n\n#endif // _echoinputstreambuf_h\n"
  },
  {
    "path": "Library/console/forwardingstreambuf.h",
    "content": "/*\n * File: forwardingstreambuf.h\n * ---------------------------\n * This file defines the <code>ForwardingStreambuf</code> class, which\n * represents a stream buffer that just wraps another stream buffer.\n * We mostly use this to merge cout and cerr into a single output target.\n *\n * @version 2016/10/04\n * - initial version\n */\n\n#ifndef _forwardingstreambuf_h\n#define _forwardingstreambuf_h\n\n#include <ios>\n#include <iostream>\n#include <locale>\n#include <streambuf>\n\n#include \"consolestreambuf.h\"\n\nnamespace stanfordcpplib {\n/*\n * A stream buffer that just \"wraps\" another stream buffer.\n * This is used here to distinguish cout (black text) from cerr (red text).\n */\nclass ForwardingStreambuf : public std::streambuf {\nprivate:\n    ConsoleStreambuf& delegate;\n    bool isStderr;\n\npublic:\n    ForwardingStreambuf(ConsoleStreambuf& del, bool err = false)\n            : delegate(del), isStderr(err) {\n        // empty\n    }\n\n    virtual bool isBlocked() {\n        return delegate.isBlocked();\n    }\n\n    virtual int overflow(int ch = EOF) {\n        return delegate.overflow(ch, isStderr);\n    }\n\n    virtual int overflow(int ch, bool isStderr) {\n        return delegate.overflow(ch, isStderr);\n    }\n\n    virtual int sync() {\n        return delegate.sync(isStderr);\n    }\n\n    virtual int sync(bool isStderr) {\n        return delegate.sync(isStderr);\n    }\n\n    virtual int underflow() {\n        return delegate.underflow();\n    }\n\n    // functions below are overridden for completeness,\n    // but all just delegate to underlying ConsoleStreambuf\n    virtual std::streamsize in_avail() {\n        return delegate.in_avail();\n    }\n\n    virtual int snextc() {\n        return delegate.snextc();\n    }\n\n    virtual int sbumpc() {\n        return delegate.sbumpc();\n    }\n\n    virtual int sgetc() {\n        return delegate.sgetc();\n    }\n\n    virtual std::streamsize sgetn(char* s, std::streamsize n) {\n        return delegate.sgetn(s, n);\n    }\n\n    virtual int sputbackc(char c) {\n        return delegate.sputbackc(c);\n    }\n\n    virtual int sungetc() {\n        return delegate.sungetc();\n    }\n\n    virtual int sputc(char c) {\n        return delegate.sputc(c);\n    }\n\n    virtual std::streamsize sputn(const char* s, std::streamsize n) {\n        return delegate.sputn(s, n);\n    }\n\n    virtual std::locale pubimbue(const std::locale& loc) {\n        return delegate.pubimbue(loc);\n    }\n\n    virtual std::locale getloc() const {\n        return delegate.getloc();\n    }\n\n    virtual std::streambuf* pubsetbuf(char* s, std::streamsize n) {\n        return delegate.pubsetbuf(s, n);\n    }\n\n    virtual std::streampos pubseekoff(std::streamoff off, std::ios_base::seekdir way,\n                          std::ios_base::openmode which = std::ios_base::in | std::ios_base::out) {\n        return delegate.pubseekoff(off, way, which);\n    }\n\n    virtual std::streampos pubseekpos(std::streampos pos, std::ios_base::openmode which = std::ios_base::in | std::ios_base::out) {\n        return delegate.pubseekpos(pos, which);\n    }\n\n    virtual int pubsync() {\n        return delegate.pubsync();\n    }\n};\n} // namespace stanfordcpplib\n\n#endif // _forwardingstreambuf_h\n"
  },
  {
    "path": "Library/console/gconsolewindow.cpp",
    "content": "/*\n * File: gconsolewindow.cpp\n * ------------------------\n * This file implements the gconsolewindow.h interface.\n *\n * @author Marty Stepp\n * @version 2019/04/25\n * - added hasInputScript\n * @version 2019/04/16\n * - bug fix for wrong text color on Mac dark mode\n * @version 2019/04/10\n * - toolbar support with icons from icon strip image\n * @version 2019/04/09\n * - bug fix for premature input script / compare output popup\n * - changed default Mac font to Courier New from Menlo\n * @version 2018/12/27\n * - bug fix for endless waitForEvent queued events caused by printing text\n *   to console (bug reported by Keith Schwarz)\n * @version 2018/10/11\n * - bug fixes for shutdown flag, input script hotkeys (e.g. Ctrl+1)\n * @version 2018/10/04\n * - changed default line wrap to true\n * @version 2018/09/27\n * - bug fix for printing strings with line breaks (remove \\r, favor \\n)\n * @version 2018/09/23\n * - added getFont\n * - bug fix for loading input scripts\n * - bug fix for default font on Mac\n * @version 2018/09/18\n * - window size/location fixes\n * @version 2018/09/17\n * - fixes for monospaced font on Mac OS X\n * @version 2018/08/23\n * - initial version, separated out from console.cpp\n */\n\n#include \"gconsolewindow.h\"\n#include <cstdio>\n#include <QAction>\n#include <QTextDocumentFragment>\n#include \"filelib.h\"\n#include \"gclipboard.h\"\n#include \"gcolor.h\"\n#include \"gcolorchooser.h\"\n#include \"gfilechooser.h\"\n#include \"gfont.h\"\n#include \"gfontchooser.h\"\n#include \"goptionpane.h\"\n#include \"gthread.h\"\n#include \"os.h\"\n#include \"qtgui.h\"\n#include \"splversion.h\"\n\nvoid setConsolePropertiesQt();\n\n/*static*/ const bool GConsoleWindow::ALLOW_RICH_INPUT_EDITING = true;\n/*static*/ const double GConsoleWindow::DEFAULT_WIDTH = 900;\n/*static*/ const double GConsoleWindow::DEFAULT_HEIGHT = 550;\n/*static*/ const double GConsoleWindow::DEFAULT_X = 12;\n/*static*/ const double GConsoleWindow::DEFAULT_Y = 40;\n/*static*/ const std::string GConsoleWindow::CONFIG_FILE_NAME = \"spl-jar-settings.txt\";\n/*static*/ const std::string GConsoleWindow::DEFAULT_FONT_FAMILY = \"Monospace\";\n/*static*/ const std::string GConsoleWindow::DEFAULT_FONT_WEIGHT = \"\";\n/*static*/ const int GConsoleWindow::DEFAULT_FONT_SIZE = 12;\n/*static*/ const int GConsoleWindow::MIN_FONT_SIZE = 4;\n/*static*/ const int GConsoleWindow::MAX_FONT_SIZE = 255;\n/*static*/ const std::string GConsoleWindow::DEFAULT_ERROR_COLOR = \"#cc0000\";\n/*static*/ const std::string GConsoleWindow::DEFAULT_ERROR_COLOR_DARK_MODE = \"#f47862\";\n/*static*/ const std::string GConsoleWindow::DEFAULT_USER_INPUT_COLOR = \"#0000cc\";\n/*static*/ const std::string GConsoleWindow::DEFAULT_USER_INPUT_COLOR_DARK_MODE = \"#2c90e5\";\n/*static*/ GConsoleWindow* GConsoleWindow::_instance = nullptr;\n/*static*/ bool GConsoleWindow::_consoleEnabled = false;\n\n/*static*/ bool GConsoleWindow::consoleEnabled() {\n    return _consoleEnabled;\n}\n\n/*static*/ std::string GConsoleWindow::getDefaultFont() {\n    if (OS::isMac()) {\n        // for some reason, using \"Monospace\" doesn't work for me on Mac testing\n        return \"Courier New-\"\n                + std::to_string(DEFAULT_FONT_SIZE + 1)\n                + (DEFAULT_FONT_WEIGHT.empty() ? \"\" : (\"-\" + DEFAULT_FONT_WEIGHT));\n    } else {\n        return DEFAULT_FONT_FAMILY\n                + \"-\" + std::to_string(DEFAULT_FONT_SIZE)\n                + (DEFAULT_FONT_WEIGHT.empty() ? \"\" : (\"-\" + DEFAULT_FONT_WEIGHT));\n    }\n}\n\n/*static*/ GConsoleWindow* GConsoleWindow::instance() {\n    if (!_instance) {\n        // initialize Qt system and Qt Console window\n        GThread::runOnQtGuiThread([]() {\n            if (!_instance) {\n                _instance = new GConsoleWindow();\n                setConsolePropertiesQt();\n            }\n        });\n    }\n    return _instance;\n}\n\n/*static*/ bool GConsoleWindow::isInitialized() {\n    return _instance != nullptr;\n}\n\n/*static*/ void GConsoleWindow::setConsoleEnabled(bool enabled) {\n    _consoleEnabled = enabled;\n}\n\nGConsoleWindow::GConsoleWindow()\n        : GWindow(/* visible */ false),\n          _textArea(nullptr),\n          _clearEnabled(true),\n          _echo(false),\n          _locationSaved(false),\n          _locked(false),\n          _promptActive(false),\n          _shutdown(false),\n          _commandHistoryIndex(-1),\n          _errorColor(\"\"),\n          _outputColor(\"\"),\n          _userInputColor(\"\"),\n          _inputBuffer(\"\"),\n          _lastSaveFileName(\"\"),\n          _cinout_new_buf(nullptr),\n          _cerr_new_buf(nullptr),\n          _cin_old_buf(nullptr),\n          _cout_old_buf(nullptr),\n          _cerr_old_buf(nullptr) {\n    _initMenuBar();\n    _initWidgets();\n    _initStreams();\n    loadConfiguration();\n}\n\nvoid GConsoleWindow::_initMenuBar() {\n    addToolbar();\n\n    // File menu\n    addMenu(\"&File\");\n    addMenuItem(\"File\", \"&Save\", QPixmap(\":/save\"),\n                [this]() { this->save(); })\n                ->setShortcut(QKeySequence::Save);\n\n    addMenuItem(\"File\", \"Save &As...\", QPixmap(\":/save_as\"),\n                [this]() { this->saveAs(); })\n                ->setShortcut(QKeySequence::SaveAs);\n    addMenuSeparator(\"File\");\n\n    addMenuItem(\"File\", \"&Print\", QPixmap(\":/print\"),\n                [this]() { this->showPrintDialog(); })\n                ->setShortcut(QKeySequence::Print);\n    setMenuItemEnabled(\"File\", \"Print\", false);\n    addMenuSeparator(\"File\");\n\n    addMenuItem(\"File\", \"&Quit\", QPixmap(\":/quit\"),\n                [this]() { this->close(); /* TODO: exit app */ })\n                ->setShortcut(QKeySequence::Quit);\n\n    // Edit menu\n    addMenu(\"&Edit\");\n    addMenuItem(\"Edit\", \"Cu&t\", QPixmap(\":/cut\"),\n                [this]() { this->clipboardCut(); })\n                ->setShortcut(QKeySequence::Cut);\n    //   no cut operation available for Console, do not add to toolbar\n\n    addMenuItem(\"Edit\", \"&Copy\", QPixmap(\":/copy\"),\n                [this]() { this->clipboardCopy(); })\n                ->setShortcut(QKeySequence::Copy);\n    addToolbarItem(\"Copy\", QPixmap(\":/copy\"),\n                       [this]() { this->clipboardCopy(); });\n\n    addMenuItem(\"Edit\", \"&Paste\", QPixmap(\":/paste\"),\n                [this]() { this->clipboardPaste(); })\n                ->setShortcut(QKeySequence::Paste);\n    addToolbarItem(\"Paste\", QPixmap(\":/paste\"),\n                       [this]() { this->clipboardPaste(); });\n\n    addMenuItem(\"Edit\", \"Select &All\", QPixmap(\":/select_all\"),\n                [this]() { this->selectAll(); })\n                ->setShortcut(QKeySequence::SelectAll);\n\n    addMenuItem(\"Edit\", \"C&lear Console\", QPixmap(\":/clear_console\"),\n                [this]() { this->clearConsole(); })\n                ->setShortcut(QKeySequence(QString::fromStdString(\"Ctrl+L\")));\n    addToolbarItem(\"Clear Console\", QPixmap(\":/clear_console\"),\n                       [this]() { this->clearConsole(); });\n    addToolbarSeparator();\n\n    // Options menu\n    addMenu(\"&Options\");\n    addMenuItem(\"Options\", \"&Font...\", QPixmap(\":/font\"),\n                [this]() { this->showFontDialog(); });\n    addToolbarItem(\"Font...\", QPixmap(\":/font\"),\n                       [this]() { this->showFontDialog(); });\n\n    addMenuItem(\"Options\", \"&Background Color...\", QPixmap(\":/background_color\"),\n                [this]() { this->showColorDialog(/* background */ true); });\n    addToolbarItem(\"Background Color...\", QPixmap(\":/background_color\"),\n                       [this]() { this->showColorDialog(/* background */ true); });\n\n    addMenuItem(\"Options\", \"&Text Color...\", QPixmap(\":/text_color\"),\n                [this]() { this->showColorDialog(/* background */ false); });\n    addToolbarItem(\"Text Color...\", QPixmap(\":/text_color\"),\n                       [this]() { this->showColorDialog(/* background */ false); });\n    addToolbarSeparator();\n\n    // Help menu\n    addMenu(\"&Help\");\n    addMenuItem(\"Help\", \"&About...\", QPixmap(\":/about\"),\n                [this]() { this->showAboutDialog(); })\n                ->setShortcut(QKeySequence::HelpContents);\n    addToolbarItem(\"About...\", QPixmap(\":/about\"),\n                       [this]() { this->showAboutDialog(); });\n\n}\n\nvoid GConsoleWindow::_initStreams() {\n    // buffer C-style stderr\n    static char stderrBuf[BUFSIZ + 10] = {'\\0'};\n    std::ios::sync_with_stdio(false);\n    setbuf(stderr, stderrBuf);\n\n    // redirect cin/cout/cerr\n    _cinout_new_buf = new stanfordcpplib::qtgui::ConsoleStreambufQt();\n    _cerr_new_buf = new stanfordcpplib::qtgui::ConsoleStreambufQt(/* isStderr */ true);\n    _cin_old_buf = std::cin.rdbuf(_cinout_new_buf);\n    _cout_old_buf = std::cout.rdbuf(_cinout_new_buf);\n    _cerr_old_buf = std::cerr.rdbuf(_cerr_new_buf);\n}\n\nvoid GConsoleWindow::_initWidgets() {\n    _textArea = new GTextArea();\n    _outputColor = _textArea->getColor();\n\n    // BUGFIX: use OS defaults for BG/FG colors (helps w/ Mac dark mode)\n    _textArea->setBackground(GWindow::getDefaultInteractorBackgroundColorInt());\n    _textArea->setColor(GWindow::getDefaultInteractorTextColorInt());\n    _textArea->setContextMenuEnabled(false);\n    _textArea->setLineWrap(true);\n    _textArea->setFont(getDefaultFont());\n    QTextEdit* rawTextEdit = static_cast<QTextEdit*>(_textArea->getWidget());\n    rawTextEdit->setTabChangesFocus(false);\n    _textArea->setKeyListener([this](GEvent event) {\n        if (event.getEventType() == KEY_PRESSED) {\n            this->processKeyPress(event);\n        } else if (event.getEventType() == KEY_RELEASED\n                   || event.getEventType() == KEY_TYPED) {\n            event.ignore();\n        }\n    });\n    _textArea->setMouseListener([](GEvent event) {\n        // snuff out mouse-based operations:\n        // - popping up context menu by right-clicking\n        // - Linux-style copy/paste operations using selection plus middle-click\n        if (event.getButton() > 1\n                || event.getEventType() == MOUSE_RELEASED) {\n            event.ignore();\n        }\n    });\n    addToRegion(_textArea, \"Center\");\n\n    // tell window to shut down when it is closed\n    setWindowListener([this](GEvent event) {\n        if (event.getEventType() == WINDOW_CLOSING) {\n            shutdown(\"Close\");\n        }\n    });\n\n    setTitle(QCoreApplication::applicationName().toStdString() + \" Console\");\n    setCloseOperation(GWindow::CLOSE_HIDE);\n    setLocation(DEFAULT_X, DEFAULT_Y);\n    setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);\n    setVisible(true);\n}\n\n\nGConsoleWindow::~GConsoleWindow() {\n    // TODO: delete?\n    _cinout_new_buf = nullptr;\n    _cerr_new_buf = nullptr;\n    _cin_old_buf = nullptr;\n    _cout_old_buf = nullptr;\n    _cerr_old_buf = nullptr;\n}\n\n\nvoid GConsoleWindow::clearConsole() {\n    std::string msg = \"==================== (console cleared) ====================\";\n    if (_clearEnabled) {\n        // print to standard console (not Stanford graphical console)\n        printf(\"%s\\n\", msg.c_str());\n\n        // clear the graphical console window\n        _coutMutex.lock();\n        _textArea->clearText();\n        _coutMutex.unlock();\n    } else {\n        // don't actually clear the window, just display 'cleared' message on it\n        println(msg);\n    }\n}\n\nvoid GConsoleWindow::clipboardCopy() {\n    std::string selectedText = _textArea->getSelectedText();\n    if (!selectedText.empty()) {\n        GClipboard::set(selectedText);\n    }\n}\n\nvoid GConsoleWindow::clipboardCut() {\n    if (_shutdown || !_promptActive || !ALLOW_RICH_INPUT_EDITING) {\n        return;\n    }\n\n    // if selection is entirely within the user input area, cut out of user input area\n    int userInputStart = getUserInputStart();\n    int userInputEnd   = getUserInputEnd();\n    int selectionStart = _textArea->getSelectionStart();\n    int selectionEnd = _textArea->getSelectionEnd();\n    if (selectionEnd > selectionStart\n            && selectionStart >= userInputStart\n            && selectionEnd <= userInputEnd) {\n        // selection is entirely user input! cut it!\n        QTextFragment frag = getUserInputFragment();\n        if (frag.isValid()) {\n            std::string selectedText = _textArea->getSelectedText();\n            QTextEdit* textArea = static_cast<QTextEdit*>(this->_textArea->getWidget());\n            QTextCursor cursor(textArea->textCursor());\n\n            int indexStart = selectionStart - userInputStart;\n            int selectionLength = _textArea->getSelectionLength();\n            _cinMutex.lockForWrite();\n            _inputBuffer.erase(indexStart, selectionLength);\n            cursor.beginEditBlock();\n            cursor.removeSelectedText();\n            cursor.endEditBlock();\n            textArea->setTextCursor(cursor);\n            _cinMutex.unlock();\n            GClipboard::set(selectedText);\n        }\n    }\n}\n\nvoid GConsoleWindow::clipboardPaste() {\n    if (_shutdown) {\n        return;\n    }\n\n    _textArea->clearSelection();\n    if (!isCursorInUserInputArea()) {\n        _textArea->moveCursorToEnd();\n    }\n\n    std::string clipboardText = GClipboard::get();\n    for (int i = 0; i < (int) clipboardText.length(); i++) {\n        if (clipboardText[i] == '\\r') {\n            continue;\n        } else if (clipboardText[i] == '\\n') {\n            processUserInputEnterKey();\n        } else {\n            processUserInputKey(clipboardText[i]);\n        }\n    }\n}\n\nvoid GConsoleWindow::close() {\n    shutdown(\"Close\");\n    GWindow::close();   // call super\n}\n\nstd::string GConsoleWindow::getBackground() const {\n    return _textArea->getBackground();\n}\n\nint GConsoleWindow::getBackgroundInt() const {\n    return _textArea->getBackgroundInt();\n}\n\nstd::string GConsoleWindow::getColor() const {\n    return getOutputColor();\n}\n\nint GConsoleWindow::getColorInt() const {\n    return GColor::convertColorToRGB(getOutputColor());\n}\n\nstd::string GConsoleWindow::getErrorColor() const {\n    if (!_errorColor.empty()) {\n        return _errorColor;\n    } else {\n        return GWindow::isDarkMode() ? DEFAULT_ERROR_COLOR_DARK_MODE : DEFAULT_ERROR_COLOR;\n    }\n}\n\nstd::string GConsoleWindow::getFont() const {\n    return _textArea->getFont();\n}\n\nstd::string GConsoleWindow::getForeground() const {\n    return getOutputColor();\n}\n\nint GConsoleWindow::getForegroundInt() const {\n    return GColor::convertColorToRGB(getOutputColor());\n}\n\nstd::string GConsoleWindow::getOutputColor() const {\n    return _outputColor.empty() ? GWindow::getDefaultInteractorTextColor() : _outputColor;\n}\n\nstd::string GConsoleWindow::getUserInputColor() const {\n    if (!_userInputColor.empty()) {\n        return _userInputColor;\n    } else {\n        return GWindow::isDarkMode() ? DEFAULT_USER_INPUT_COLOR_DARK_MODE : DEFAULT_USER_INPUT_COLOR;\n    }\n}\n\nQTextFragment GConsoleWindow::getUserInputFragment() const {\n    if (!_inputBuffer.empty()) {\n        QTextEdit* textArea = static_cast<QTextEdit*>(this->_textArea->getWidget());\n        QTextBlock block = textArea->document()->end().previous();\n        while (block.isValid()) {\n            QTextBlock::iterator it;\n            for (it = block.begin(); !(it.atEnd()); ++it) {\n                QTextFragment frag = it.fragment();\n                if (frag.isValid()) {\n                    std::string fragText = frag.text().toStdString();\n\n                    // see if it is the given user input\n                    if (fragText == _inputBuffer) {\n                        return frag;\n                    }\n                }\n            }\n            block = block.previous();\n        }\n    }\n\n    // didn't find the fragment; this will return an 'invalid' fragment\n    QTextFragment notFound;\n    return notFound;\n}\n\nint GConsoleWindow::getUserInputStart() const {\n    QTextFragment frag = getUserInputFragment();\n    if (frag.isValid()) {\n        return frag.position();\n    } else if (_promptActive) {\n        // at end of text\n        return (int) _textArea->getText().length();\n    } else {\n        return -1;\n    }\n}\n\nint GConsoleWindow::getUserInputEnd() const {\n    QTextFragment frag = getUserInputFragment();\n    if (frag.isValid()) {\n        return frag.position() + frag.length();\n    } else if (_promptActive) {\n        // at end of text\n        return (int) _textArea->getText().length();\n    } else {\n        return -1;\n    }\n}\n\nbool GConsoleWindow::isClearEnabled() const {\n    return _clearEnabled;\n}\n\nbool GConsoleWindow::isCursorInUserInputArea() const {\n    int cursorPosition = _textArea->getCursorPosition();\n    int userInputStart = getUserInputStart();\n    int userInputEnd   = getUserInputEnd();\n    return _promptActive\n            && userInputStart <= cursorPosition\n            && cursorPosition <= userInputEnd;\n}\n\nbool GConsoleWindow::isEcho() const {\n    return _echo;\n}\n\nbool GConsoleWindow::isLocationSaved() const {\n    return _locationSaved;\n}\n\nbool GConsoleWindow::isLocked() const {\n    return _locked;\n}\n\nbool GConsoleWindow::isSelectionInUserInputArea() const {\n    int userInputStart = getUserInputStart();\n    int userInputEnd   = getUserInputEnd();\n    int selectionStart = _textArea->getSelectionStart();\n    int selectionEnd = _textArea->getSelectionEnd();\n    return userInputStart >= 0 && userInputEnd >= 0\n            && selectionStart >= userInputStart\n            && selectionEnd <= userInputEnd;\n}\n\nvoid GConsoleWindow::loadConfiguration() {\n    std::string configFile = getTempDirectory() + \"/\" + CONFIG_FILE_NAME;\n    if (fileExists(configFile)) {\n        std::ifstream infile;\n        infile.open(configFile.c_str());\n        if (!infile) {\n                return;\n        }\n        std::string line;\n        while (getline(infile, line)) {\n            line = trim(line);\n            if (line.empty() || line[0] == '#') {\n                continue;\n            }\n            Vector<std::string> tokens = stringSplit(line, \"=\");\n            if (tokens.size() < 2) {\n                continue;\n            }\n            std::string key   = toLowerCase(tokens[0]);\n            std::string value = tokens[1];\n            if (key == \"font\") {\n                setFont(value);\n            } else if (key == \"background\") {\n                setBackground(value);\n            } else if (key == \"foreground\") {\n                setForeground(value);\n            }\n        }\n    }\n}\n\n\n\nvoid GConsoleWindow::print(const std::string& str, bool isStdErr) {\n    if (_echo) {\n        fflush(isStdErr ? stdout : stderr);\n        fflush(isStdErr ? stderr : stdout);\n        fprintf(isStdErr ? stderr : stdout, \"%s\", str.c_str());\n        if (str.find(\"\\n\") != std::string::npos) {\n            fflush(isStdErr ? stderr : stdout);\n            fflush(isStdErr ? stdout : stderr);\n        }\n    }\n\n    // clean up line breaks (remove \\r)\n    std::string strToPrint = str;\n    stringReplaceInPlace(strToPrint, \"\\r\\n\", \"\\n\");\n    stringReplaceInPlace(strToPrint, \"\\r\", \"\\n\");\n\n    GThread::runOnQtGuiThread([this, strToPrint, isStdErr]() {\n        _coutMutex.lock();\n        _allOutputBuffer << strToPrint;\n        if (this->_textArea) {\n            this->_textArea->setEventsEnabled(false);\n            this->_textArea->appendFormattedText(strToPrint, isStdErr ? getErrorColor() : getOutputColor());\n            this->_textArea->moveCursorToEnd();\n            this->_textArea->scrollToBottom();\n            this->_textArea->setEventsEnabled(true);\n        }\n        _coutMutex.unlock();\n    });\n}\n\nvoid GConsoleWindow::println(bool isStdErr) {\n    print(\"\\n\", isStdErr);\n}\n\nvoid GConsoleWindow::println(const std::string& str, bool isStdErr) {\n    print(str + \"\\n\", isStdErr);\n}\n\nvoid GConsoleWindow::processKeyPress(GEvent event) {\n    char key = event.getKeyChar();\n    int keyCode = event.getKeyCode();\n\n    if (event.isCtrlOrCommandKeyDown()) {\n        if (keyCode == Qt::Key_Plus || keyCode == Qt::Key_Equal) {\n            // increase font size\n            event.ignore();\n            QFont font = GFont::toQFont(_textArea->getFont());\n            if (font.pointSize() + 1 <= MAX_FONT_SIZE) {\n                font.setPointSize(font.pointSize() + 1);\n                setFont(GFont::toFontString(font));\n            }\n        } else if (keyCode == Qt::Key_Minus) {\n            // decrease font size\n            event.ignore();\n            QFont font = GFont::toQFont(_textArea->getFont());\n            if (font.pointSize() - 1 >= MIN_FONT_SIZE) {\n                font.setPointSize(font.pointSize() - 1);\n                setFont(GFont::toFontString(font));\n            }\n        } else if (keyCode == Qt::Key_Insert) {\n            // Ctrl+Ins => Copy\n            event.ignore();\n            clipboardCopy();\n        } else if (keyCode == Qt::Key_0) {\n            // normalize font size\n            event.ignore();\n            setFont(DEFAULT_FONT_FAMILY + \"-\" + std::to_string(DEFAULT_FONT_SIZE));\n        } else if (keyCode == Qt::Key_C) {\n            event.ignore();\n            clipboardCopy();\n        } else if (event.isCtrlKeyDown() && keyCode == Qt::Key_D) {\n            event.ignore();\n            processEof();\n        } else if (keyCode == Qt::Key_L) {\n            event.ignore();\n            clearConsole();\n        } else if (keyCode == Qt::Key_Q || keyCode == Qt::Key_W) {\n            event.ignore();\n            close();\n        } else if (keyCode == Qt::Key_S) {\n            event.ignore();\n            if (event.isShiftKeyDown()) {\n                saveAs();\n            } else {\n                save();\n            }\n        } else if (keyCode == Qt::Key_V) {\n            event.ignore();\n            clipboardPaste();\n        } else if (keyCode == Qt::Key_X) {\n            event.ignore();\n            clipboardCut();\n        }\n    }\n\n    if (_shutdown) {\n        return;\n    }\n\n    if (event.isCtrlOrCommandKeyDown() || event.isAltKeyDown()) {\n        // system hotkey; let the normal keyboard handler process this event\n        event.ignore();\n        return;\n    }\n\n    switch (keyCode) {\n        case GEvent::PAGE_UP_KEY:\n        case GEvent::PAGE_DOWN_KEY:\n            // don't ignore event\n            break;\n        case GEvent::BACKSPACE_KEY: {\n            event.ignore();\n            processBackspace(keyCode);\n            break;\n        }\n        case GEvent::DELETE_KEY: {\n            event.ignore();\n            if (event.isShiftKeyDown()) {\n                clipboardCut();   // Shift+Del => Cut\n            } else {\n                processBackspace(keyCode);\n            }\n            break;\n        }\n        case GEvent::INSERT_KEY: {\n            event.ignore();\n            if (event.isShiftKeyDown()) {\n                clipboardPaste();   // Shift+Ins => Paste\n            }\n            break;\n        }\n        case GEvent::HOME_KEY:\n            if (ALLOW_RICH_INPUT_EDITING) {\n                // move to start of input buffer\n                if (_promptActive) {\n                    event.ignore();\n                    int start = getUserInputStart();\n                    if (start >= 0) {\n                        _textArea->setCursorPosition(\n                                start,\n                                /* keepAnchor */ event.isShiftKeyDown() && isCursorInUserInputArea());\n                    } else {\n                        _textArea->moveCursorToEnd();\n                    }\n                }\n            } else {\n                event.ignore();\n            }\n            break;\n        case GEvent::END_KEY:\n            if (ALLOW_RICH_INPUT_EDITING) {\n                // move to end of input buffer\n                if (_promptActive) {\n                    event.ignore();\n                    int end = getUserInputEnd();\n                    if (end >= 0) {\n                        _textArea->setCursorPosition(\n                                end,\n                                /* keepAnchor */ event.isShiftKeyDown() && isCursorInUserInputArea());\n                    } else {\n                        _textArea->moveCursorToEnd();\n                    }\n                }\n            } else {\n                event.ignore();\n            }\n            break;\n        case GEvent::LEFT_ARROW_KEY: {\n            // bound within user input area if a prompt is active\n            if (ALLOW_RICH_INPUT_EDITING) {\n                if (isCursorInUserInputArea()) {\n                    int cursorPosition = _textArea->getCursorPosition();\n                    int userInputStart = getUserInputStart();\n                    if (cursorPosition <= userInputStart) {\n                        event.ignore();\n                        if (!event.isShiftKeyDown()) {\n                            _textArea->clearSelection();\n                        }\n                    }\n                }\n            } else {\n                event.ignore();\n            }\n            break;\n        }\n        case GEvent::RIGHT_ARROW_KEY:\n            // bound within user input area if a prompt is active\n            if (ALLOW_RICH_INPUT_EDITING) {\n                if (isCursorInUserInputArea()) {\n                    int cursorPosition = _textArea->getCursorPosition();\n                    int userInputEnd   = getUserInputEnd();\n                    if (cursorPosition >= userInputEnd) {\n                        event.ignore();\n                        if (!event.isShiftKeyDown()) {\n                            _textArea->clearSelection();\n                        }\n                    }\n                }\n            } else {\n                event.ignore();\n            }\n            break;\n        case GEvent::UP_ARROW_KEY:\n            if (isCursorInUserInputArea()) {\n                event.ignore();\n                processCommandHistory(/* delta */ -1);\n            }\n            break;\n        case GEvent::DOWN_ARROW_KEY:\n            if (isCursorInUserInputArea()) {\n                event.ignore();\n                processCommandHistory(/* delta */ 1);\n            }\n            break;\n        case GEvent::TAB_KEY:\n            // TODO: tab completion?\n        case GEvent::CLEAR_KEY:\n            break;\n        case GEvent::F1_KEY: {\n            event.ignore();\n            showAboutDialog();\n            break;\n        }\n        case GEvent::F2_KEY:\n        case GEvent::F3_KEY:\n        case GEvent::F4_KEY:\n        case GEvent::F5_KEY:\n        case GEvent::F6_KEY:\n        case GEvent::F7_KEY:\n        case GEvent::F8_KEY:\n        case GEvent::F9_KEY:\n        case GEvent::F10_KEY:\n        case GEvent::F11_KEY:\n        case GEvent::F12_KEY:\n        case GEvent::HELP_KEY: {\n            // various control/modifier keys: do nothing / consume event\n            event.ignore();\n            break;\n        }\n        case GEvent::SHIFT_KEY:\n        case GEvent::CTRL_KEY:\n        case GEvent::ALT_KEY:\n        case GEvent::PAUSE_KEY:\n        case GEvent::CAPS_LOCK_KEY:\n        case GEvent::ESCAPE_KEY:\n        case GEvent::NUM_LOCK_KEY:\n        case GEvent::SCROLL_LOCK_KEY:\n        case GEvent::PRINT_SCREEN_KEY:\n        case GEvent::META_KEY:\n        case GEvent::WINDOWS_KEY:\n        case GEvent::MENU_KEY: {\n            // various other control/modifier keys: let OS have the event (don't call ignore())\n            break;\n        }\n        case GEvent::RETURN_KEY:\n        case GEvent::ENTER_KEY: {\n            // \\n end line\n            event.ignore();\n            processUserInputEnterKey();\n            break;\n        }\n        default: {\n            event.ignore();\n            processUserInputKey(key);\n            break;\n        }\n    }\n}\n\nvoid GConsoleWindow::processBackspace(int key) {\n    if (_shutdown || !_promptActive) {\n        return;\n    }\n\n    // check whether it is a backspace or a delete\n    bool isBackspace = key == GEvent::BACKSPACE_KEY /* TODO: or computer is Mac */;\n\n    _cinMutex.lockForWrite();\n    if (!_inputBuffer.empty()) {\n        // remove last char from onscreen text editor:\n        // - find last blue area\n        QTextFragment frag = getUserInputFragment();\n        if (frag.isValid()) {\n            // remove last char from onscreen document fragment\n            QTextEdit* textArea = static_cast<QTextEdit*>(this->_textArea->getWidget());\n            QTextCursor cursor(textArea->textCursor());\n\n            int oldCursorPosition = cursor.position();\n            int indexToDelete = (int) _inputBuffer.length() - 1;\n            int userInputIndexMin = frag.position();\n            int userInputIndexMax = frag.position() + frag.length() - (isBackspace ? 0 : 1);\n\n            if (oldCursorPosition >= userInputIndexMin && oldCursorPosition < userInputIndexMax) {\n                // cursor is inside the user input fragment;\n                // figure out which character it's on so we can delete it\n                indexToDelete = oldCursorPosition - frag.position() - (isBackspace ? 1 : 0);\n            } else {\n                // cursor is outside of the user input fragment; move it there\n                cursor.setPosition(frag.position() + frag.length());\n            }\n\n            if (indexToDelete >= 0 && indexToDelete < (int) _inputBuffer.length()) {\n                if (isBackspace || indexToDelete == (int) _inputBuffer.length() - 1) {\n                    cursor.deletePreviousChar();\n                } else {\n                    cursor.deleteChar();   // Delete\n                }\n\n                // remove last char from internal input buffer\n                _inputBuffer.erase(indexToDelete, 1);\n            }\n        }\n    }\n    _cinMutex.unlock();\n}\n\nvoid GConsoleWindow::processCommandHistory(int delta) {\n    if (_shutdown) {\n        return;\n    }\n    _cinMutex.lockForRead();\n    std::string oldCommand = \"\";\n    _commandHistoryIndex += delta;\n    _commandHistoryIndex = std::max(-1, _commandHistoryIndex);\n    _commandHistoryIndex = std::min(_commandHistoryIndex, _inputCommandHistory.size());\n    if (0 <= _commandHistoryIndex && _commandHistoryIndex < _inputCommandHistory.size()) {\n        oldCommand = _inputCommandHistory[_commandHistoryIndex];\n    }\n    _cinMutex.unlock();\n    setUserInput(oldCommand);\n}\n\nvoid GConsoleWindow::processEof() {\n    if (_shutdown) {\n        return;\n    }\n    // only set EOF if input buffer is empty; this is the behavior on most *nix consoles\n    if (_inputBuffer.empty()) {\n        std::cin.setstate(std::ios_base::eofbit);\n    }\n}\n\nvoid GConsoleWindow::processUserInputEnterKey() {\n    if (_shutdown) {\n        return;\n    }\n    _cinMutex.lockForWrite();\n    _cinQueueMutex.lockForWrite();\n    _inputLines.enqueue(_inputBuffer);\n    _inputCommandHistory.add(_inputBuffer);\n    _commandHistoryIndex = _inputCommandHistory.size();\n    _cinQueueMutex.unlock();\n    _allOutputBuffer << _inputBuffer << std::endl;\n    _inputBuffer = \"\";   // clear input buffer\n    this->_textArea->appendFormattedText(\"\\n\", getUserInputColor());\n    _cinMutex.unlock();\n}\n\nvoid GConsoleWindow::processUserInputKey(int key) {\n    if (_shutdown) {\n        return;\n    }\n    if (key != '\\0' && isprint(key)) {\n        // normal key: append to user input buffer\n        _cinMutex.lockForWrite();\n\n        std::string keyStr = charToString((char) key);\n\n        bool inserted = false;\n        if (ALLOW_RICH_INPUT_EDITING && isCursorInUserInputArea()) {\n            QTextFragment frag = getUserInputFragment();\n            if (frag.isValid()) {\n                QTextEdit* textArea = static_cast<QTextEdit*>(this->_textArea->getWidget());\n                QTextCursor cursor(textArea->textCursor());\n\n                // BUGFIX: if there is any selected text, remove it first\n                int fragStart = frag.position();\n                int selectionStart = cursor.selectionStart() - fragStart;\n                int selectionEnd = cursor.selectionEnd() - fragStart;\n                if (selectionEnd > selectionStart\n                        && selectionStart >= 0\n                        && selectionEnd <= (int) _inputBuffer.length()) {\n                    cursor.removeSelectedText();\n                    _inputBuffer.erase(selectionStart, selectionEnd - selectionStart);\n                }\n\n                int cursorPosition = cursor.position();\n                int indexToInsert = cursorPosition - frag.position();\n                if (indexToInsert == 0) {\n                    // special case for inserting at start of fragment.\n                    // example: fragment is \"abcde\", cursor at start, user types \"x\".\n                    // if we just insert the \"x\" in the document, it won't be part of\n                    // the same fragment and won't have the blue bold format.\n                    // So what we do is temporarily insert it after the first character,\n                    // then delete the first character, so that everything is inside\n                    // the formatted span.\n                    // \"abcde\"\n                    //  ^\n                    //   ^          move right by 1\n                    // \"axabcde\"    insert \"xa\" at index 1\n                    //     ^\n                    //   ^          move left by 2\n                    // \"xabcde\"     delete previous character \"a\" from index 0\n                    //  ^\n                    //   ^          move right by 1\n                    cursor.beginEditBlock();\n\n                    cursor.movePosition(QTextCursor::Right, QTextCursor::MoveAnchor, 1);             // move to index 1\n                    cursor.insertText(QString::fromStdString(keyStr + _inputBuffer.substr(0, 1)));   // insert new char + old first char\n                    cursor.movePosition(QTextCursor::Left, QTextCursor::MoveAnchor, 2);              // delete old copy of first char\n                    cursor.deletePreviousChar();\n                    cursor.movePosition(QTextCursor::Right, QTextCursor::MoveAnchor, 1);             // move to index 1\n                    cursor.endEditBlock();\n                    textArea->setTextCursor(cursor);\n                } else {\n                    cursor.beginEditBlock();\n                    cursor.insertText(QString::fromStdString(keyStr));\n                    cursor.endEditBlock();\n                    textArea->setTextCursor(cursor);\n                }\n                _inputBuffer.insert(indexToInsert, keyStr);\n                inserted = true;\n            }\n        }\n\n        if (!inserted) {\n            // append to end of buffer/fragment\n            _inputBuffer += keyStr;\n            // display in blue highlighted text\n            this->_textArea->appendFormattedText(keyStr, getUserInputColor(), \"*-*-Bold\");\n        }\n\n        _cinMutex.unlock();\n    }\n}\n\nstd::string GConsoleWindow::readLine() {\n    // TODO: threads/locking\n    // wait for a line to be available in queue\n    std::string line;\n    if (_shutdown) {\n        return line;\n    }\n\n    this->_textArea->moveCursorToEnd();\n    this->_textArea->scrollToBottom();\n    this->toFront();   // move window to front on prompt for input\n    this->_textArea->requestFocus();\n\n    _cinMutex.lockForWrite();\n    _promptActive = true;\n    _cinMutex.unlock();\n\n    while (!_shutdown && !std::cin.eof()) {\n        bool lineRead = false;\n        if (!_inputScript.isEmpty()) {\n            _cinQueueMutex.lockForWrite();\n            line = _inputScript.dequeue();\n            lineRead = true;\n            _cinQueueMutex.unlock();\n\n            // echo user input, as if the user had just typed it\n            GThread::runOnQtGuiThreadAsync([this, line]() {\n                _coutMutex.lock();\n                _allOutputBuffer << line << std::endl;\n                _textArea->appendFormattedText(line + \"\\n\", getUserInputColor(), \"*-*-Bold\");\n                _coutMutex.unlock();\n            });\n        }\n\n        if (!_inputLines.isEmpty()) {\n            _cinQueueMutex.lockForWrite();\n            if (!_inputLines.isEmpty()) {\n                line = _inputLines.dequeue();\n                lineRead = true;\n            }\n\n            _cinQueueMutex.unlock();\n        }\n\n        if (lineRead) {\n            break;\n        } else {\n            pause(20);\n        }\n    }\n\n    _cinMutex.lockForWrite();\n    _promptActive = false;\n    _cinMutex.unlock();\n    this->_textArea->scrollToBottom();\n\n    if (_echo) {\n        fprintf(stdout, \"%s\\n\", line.c_str());\n    }\n    return line;\n}\n\nvoid GConsoleWindow::save() {\n    saveAs(_lastSaveFileName);\n}\n\nvoid GConsoleWindow::saveAs(const std::string& filename) {\n    std::string filenameToUse;\n    if (filename.empty()) {\n        filenameToUse = GFileChooser::showSaveDialog(\n                /* parent */ this->getWidget(),\n                /* title */ \"\",\n                getHead(_lastSaveFileName));\n    } else {\n        filenameToUse = filename;\n    }\n    if (filenameToUse.empty()) {\n        return;\n    }\n\n    std::string consoleText = _textArea->getText();\n    writeEntireFile(filenameToUse, consoleText);\n    _lastSaveFileName = filenameToUse;\n}\n\nvoid GConsoleWindow::saveConfiguration(bool prompt) {\n    if (prompt && !GOptionPane::showConfirmDialog(\n            /* parent  */  getWidget(),\n            /* message */  \"Make this the default for future console windows?\",\n            /* title   */  \"Save configuration?\")) {\n        return;\n    }\n    std::string configFile = getTempDirectory() + \"/\" + CONFIG_FILE_NAME;\n    std::string configText = \"# Stanford C++ library configuration file\\n\"\n            \"background=\" + _textArea->getBackground() + \"\\n\"\n            \"foreground=\" + getOutputColor() + \"\\n\"\n            \"font=\" + _textArea->getFont() + \"\\n\";\n    writeEntireFile(configFile, configText);\n}\n\nvoid GConsoleWindow::selectAll() {\n    _textArea->selectAll();\n}\n\nvoid GConsoleWindow::setBackground(int color) {\n    GWindow::setBackground(color);   // call super\n    _textArea->setBackground(color);\n}\n\nvoid GConsoleWindow::setBackground(const std::string& color) {\n    GWindow::setBackground(color);   // call super\n    _textArea->setBackground(color);\n}\n\nvoid GConsoleWindow::setClearEnabled(bool clearEnabled) {\n    if (_locked || _shutdown) {\n        return;\n    }\n    _clearEnabled = clearEnabled;\n}\n\nvoid GConsoleWindow::setConsoleSize(double width, double height) {\n    // TODO: base on text area's preferred size / packing window\n    // _textArea->setPreferredSize(width, height);\n    // pack();\n    setSize(width, height);\n}\n\nvoid GConsoleWindow::setColor(int color) {\n    setOutputColor(color);\n}\n\nvoid GConsoleWindow::setColor(const std::string& color) {\n    setOutputColor(color);\n}\n\nvoid GConsoleWindow::setEcho(bool echo) {\n    if (_locked || _shutdown) {\n        return;\n    }\n    _echo = echo;\n}\n\nvoid GConsoleWindow::setFont(const QFont& font) {\n    GWindow::setFont(font);   // call super\n    _textArea->setFont(font);\n}\n\nvoid GConsoleWindow::setFont(const std::string& font) {\n    GWindow::setFont(font);   // call super\n    _textArea->setFont(font);\n}\n\nvoid GConsoleWindow::setForeground(int color) {\n    setOutputColor(color);\n}\n\nvoid GConsoleWindow::setForeground(const std::string& color) {\n    setOutputColor(color);\n}\n\nvoid GConsoleWindow::setLocationSaved(bool locationSaved) {\n    _locationSaved = locationSaved;\n}\n\nvoid GConsoleWindow::setLocked(bool locked) {\n    _locked = locked;\n}\n\nvoid GConsoleWindow::setErrorColor(const std::string& errorColor) {\n    _errorColor = errorColor;\n}\n\nvoid GConsoleWindow::setOutputColor(int rgb) {\n    setOutputColor(GColor::convertRGBToColor(rgb));\n}\n\nvoid GConsoleWindow::setOutputColor(const std::string& outputColor) {\n    _outputColor = outputColor;\n    _textArea->setForeground(outputColor);\n    if (_shutdown) {\n        return;\n    }\n\n    // go through any past fragments and recolor them to this color\n\n    // select all previous text and change its color\n    // (BUG?: also changes user input text to be that color; desired?)\n    QTextEdit* textArea = static_cast<QTextEdit*>(this->_textArea->getWidget());\n    QTextCursor cursor = textArea->textCursor();\n    cursor.beginEditBlock();\n    cursor.setPosition(0);\n    QTextCharFormat format = cursor.charFormat();\n    cursor.movePosition(QTextCursor::End, QTextCursor::KeepAnchor);\n    format.setForeground(QBrush(GColor::toQColor(outputColor)));\n    textArea->setTextCursor(cursor);\n    cursor.setCharFormat(format);\n    cursor.endEditBlock();\n    _textArea->moveCursorToEnd();\n}\n\nvoid GConsoleWindow::setUserInput(const std::string& userInput) {\n    if (_shutdown) {\n        return;\n    }\n    _cinMutex.lockForWrite();\n    QTextEdit* textArea = static_cast<QTextEdit*>(_textArea->getWidget());\n\n    // delete any current user input\n    QTextFragment frag = getUserInputFragment();\n    if (frag.isValid()) {\n        QTextCursor cursor = textArea->textCursor();\n        cursor.beginEditBlock();\n        cursor.setPosition(frag.position(), QTextCursor::MoveAnchor);\n        cursor.movePosition(QTextCursor::Right, QTextCursor::KeepAnchor, frag.length());\n        cursor.removeSelectedText();\n        cursor.endEditBlock();\n        textArea->setTextCursor(cursor);\n    }\n    _inputBuffer.clear();\n    _cinMutex.unlock();\n\n    // insert the given user input\n    for (int i = 0; i < (int) userInput.length(); i++) {\n        processUserInputKey(userInput[i]);\n    }\n}\n\nvoid GConsoleWindow::setUserInputColor(const std::string& userInputColor) {\n    _userInputColor = userInputColor;\n}\n\nvoid GConsoleWindow::showAboutDialog() {\n    // this text roughly matches that from old spl.jar message\n    static const std::string ABOUT_MESSAGE = getLibraryInfoPanelMessage();\n    GOptionPane::showMessageDialog(\n                /* parent */   getWidget(),\n                /* message */  ABOUT_MESSAGE,\n                /* title */    \"About Stanford C++ Library\",\n                /* type */     GOptionPane::MESSAGE_ABOUT);\n}\n\nvoid GConsoleWindow::showColorDialog(bool background) {\n    std::string color = GColorChooser::showDialog(\n                /* parent */   getWidget(),\n                /* title */    \"\",\n                /* initial */  background ? _textArea->getBackground() : _textArea->getForeground());\n    if (!color.empty()) {\n        if (background) {\n            setBackground(color);\n        } else {\n            setOutputColor(color);\n        }\n        saveConfiguration();   // prompt to save configuration\n    }\n}\n\nvoid GConsoleWindow::showFontDialog() {\n    std::string font = GFontChooser::showDialog(\n                /* parent */ getWidget(),\n                /* title  */ \"\",\n                /* initialFont */ _textArea->getFont());\n    if (!font.empty()) {\n        _textArea->setFont(font);\n        saveConfiguration();   // prompt to save configuration\n    }\n}\n\nvoid GConsoleWindow::showPrintDialog() {\n    // TODO\n}\n\nvoid GConsoleWindow::shutdown(const std::string& reason) {\n    _shutdown = true;\n    std::cout.flush();\n    std::cerr.flush();\n\n    // restore old cin, cout, cerr\n    if (_cin_old_buf) {\n        _coutMutex.lock();\n        std::cin.rdbuf(_cin_old_buf);\n        std::cout.rdbuf(_cout_old_buf);\n        std::cerr.rdbuf(_cerr_old_buf);\n        _cin_old_buf = nullptr;\n        _cout_old_buf = nullptr;\n        _cerr_old_buf = nullptr;\n        std::cout.flush();\n        std::cerr.flush();\n        _coutMutex.unlock();\n    }\n\n    _textArea->setEditable(false);\n    std::string title = getTitle();\n    if (title.find(reason) == std::string::npos) {\n        setTitle(title + \" [\" + reason + \"]\");\n    }\n\n    // TODO: disable some menu items\n}\n\n// global functions used by ConsoleStreambufQt\n\nnamespace stanfordcpplib {\nnamespace qtgui {\n\nvoid endLineConsoleQt(bool isStderr) {\n    GConsoleWindow::instance()->println(isStderr);\n}\n\nstd::string getLineConsoleQt() {\n    return GConsoleWindow::instance()->readLine();\n}\n\nvoid putConsoleQt(const std::string& str, bool isStderr) {\n    GConsoleWindow::instance()->print(str, isStderr);\n}\n\n} // namespace qtgui\n} // namespace stanfordcpplib\n"
  },
  {
    "path": "Library/console/gconsolewindow.h",
    "content": "/*\n * File: gconsolewindow.h\n * ----------------------\n * This file describes the GConsoleWindow class, which is the class used to\n * represent the graphical console.\n * The class is implemented as a singleton which can be accessed using the\n * static method GConsoleWindow::instance().\n *\n * @author Marty Stepp\n * @version 2019/04/25\n * - added hasInputScript\n * @version 2019/04/10\n * - toolbar support with icons from icon strip image\n * @version 2018/09/23\n * - added getFont\n * @version 2018/09/07\n * - added doc comments for new documentation generation\n * @version 2018/08/23\n * - initial version, separated out from console .cpp/h\n */\n\n\n#ifndef _gconsolewindow_h\n#define _gconsolewindow_h\n\n#include <iostream>\n#include <sstream>\n#include <string>\n#include <Qt>\n#include <QMutex>\n#include <QReadWriteLock>\n#include <QTextFrame>\n\n#include \"gevent.h\"\n#include \"gtextarea.h\"\n#include \"gtypes.h\"\n#include \"gthread.h\"\n#include \"gwindow.h\"\n#include \"queue.h\"\n#include \"vector.h\"\n#include \"consolestreambuf.h\"\n\n/**\n * A GConsoleWindow represents the system console.\n * Most students/clients do not need to utilize this class directly.\n * Output is implicitly printed to the console when you use cout/cerr.\n * But if you want to access the console window directly and interact with it\n * as you would a normal GWindow, you can do so by calling the global function\n * getConsoleWindow.\n *\n * @private\n *\n * TODO: document\n */\nclass GConsoleWindow : public GWindow {\npublic:\n    static bool consoleEnabled();\n    static std::string getDefaultFont();\n    static GConsoleWindow* instance();\n    static bool isInitialized();\n    static void setConsoleEnabled(bool enabled);\n\n    virtual void clearConsole();\n    virtual void clipboardCopy();\n    virtual void clipboardCut();\n    virtual void clipboardPaste();\n    void close() override;\n    std::string getBackground() const override;\n    int getBackgroundInt() const override;\n    std::string getColor() const override;\n    int getColorInt() const override;\n    virtual std::string getErrorColor() const;\n    std::string getFont() const override;\n    std::string getForeground() const override;\n    int getForegroundInt() const override;\n    virtual std::string getOutputColor() const;\n    virtual std::string getUserInputColor() const;\n    virtual bool isClearEnabled() const;\n    virtual bool isEcho() const;\n    virtual bool isLocationSaved() const;\n    virtual bool isLocked() const;\n    virtual void loadConfiguration();\n    virtual void print(const std::string& str, bool isStdErr = false);\n    virtual void println(bool isStdErr = false);\n    virtual void println(const std::string& str, bool isStdErr = false);\n    virtual std::string readLine();\n    virtual void save();\n    virtual void saveAs(const std::string& filename = \"\");\n    virtual void saveConfiguration(bool prompt = true);\n    virtual void selectAll();\n    void setBackground(int color) override;\n    void setBackground(const std::string& color) override;\n    virtual void setClearEnabled(bool clearEnabled);\n    virtual void setConsoleSize(double width, double height);\n    void setColor(int color) override;\n    void setColor(const std::string& color) override;\n    virtual void setEcho(bool echo);\n    virtual void setErrorColor(const std::string& errorColor);\n    void setFont(const QFont& font) override;\n    void setFont(const std::string& font) override;\n    void setForeground(int color) override;\n    void setForeground(const std::string& color) override;\n    virtual void setLocationSaved(bool locationSaved);\n    virtual void setLocked(bool locked);\n    virtual void setOutputColor(int rgb);\n    virtual void setOutputColor(const std::string& outputColor);\n    virtual void setUserInputColor(const std::string& userInputColor);\n    virtual void showAboutDialog();\n    virtual void showColorDialog(bool background = false);\n    virtual void showFontDialog();\n    virtual void showPrintDialog();\n    virtual void shutdown(const std::string& reason);\n\nprivate:\n    static const bool ALLOW_RICH_INPUT_EDITING;\n    static const double DEFAULT_WIDTH;\n    static const double DEFAULT_HEIGHT;\n    static const double DEFAULT_X;\n    static const double DEFAULT_Y;\n    static const std::string CONFIG_FILE_NAME;\n    static const std::string DEFAULT_FONT_FAMILY;\n    static const std::string DEFAULT_FONT_WEIGHT;\n    static const int DEFAULT_FONT_SIZE;\n    static const int MIN_FONT_SIZE;\n    static const int MAX_FONT_SIZE;\n    static const std::string DEFAULT_ERROR_COLOR;\n    static const std::string DEFAULT_ERROR_COLOR_DARK_MODE;\n    static const std::string DEFAULT_USER_INPUT_COLOR;\n    static const std::string DEFAULT_USER_INPUT_COLOR_DARK_MODE;\n    static GConsoleWindow* _instance;\n    static bool _consoleEnabled;\n\n    Q_DISABLE_COPY(GConsoleWindow)\n\n    GConsoleWindow();\n    ~GConsoleWindow() override;\n    void _initMenuBar();\n    void _initWidgets();\n    void _initStreams();\n    QTextFragment getUserInputFragment() const;\n    int getUserInputStart() const;\n    int getUserInputEnd() const;\n    bool isCursorInUserInputArea() const;\n    bool isSelectionInUserInputArea() const;\n    void processBackspace(int key);\n    void processCommandHistory(int delta);\n    void processEof();\n    void processKeyPress(GEvent event);\n    void processUserInputEnterKey();\n    void processUserInputKey(int key);\n    void setUserInput(const std::string& userInput);\n\n    GTextArea* _textArea;\n    bool _clearEnabled;\n    bool _echo;\n    bool _locationSaved;\n    bool _locked;\n    bool _promptActive;\n    bool _shutdown;\n    int _commandHistoryIndex;\n    std::string _errorColor;\n    std::string _outputColor;\n    std::string _userInputColor;\n    std::string _inputBuffer;\n    std::string _lastSaveFileName;\n    Queue<std::string> _inputLines;\n    Queue<std::string> _inputScript;\n    Vector<std::string> _inputCommandHistory;\n    stanfordcpplib::qtgui::ConsoleStreambufQt* _cinout_new_buf;\n    stanfordcpplib::qtgui::ConsoleStreambufQt* _cerr_new_buf;\n    std::streambuf* _cin_old_buf;\n    std::streambuf* _cout_old_buf;\n    std::streambuf* _cerr_old_buf;\n    std::ostringstream _allOutputBuffer;\n    QReadWriteLock _cinMutex;\n    QReadWriteLock _cinQueueMutex;\n    QMutex _coutMutex;\n};\n\n#endif // _gconsolewindow_h\n"
  },
  {
    "path": "Library/console/ioutils.cpp",
    "content": "/*\n * File: ioutils.cpp\n * ---------------\n * This file contains implementations of functions to help capture, redirect,\n * and feed input to cin/cout/err.\n * See ioutils.h for documentation of each function.\n * \n * @author Marty Stepp\n * @version 2016/10/28\n * - bug fix for output limit static var\n * @version 2016/10/22\n * - removed all static variables (replaced with STATIC_VARIABLE macros)\n * @version 2014/10/14\n * @since 2014/03/01\n */\n\n#include \"ioutils.h\"\n#include <fstream>\n#include <iostream>\n#include <sstream>\n#include \"consoletext.h\"\n#include \"echoinputstreambuf.h\"\n#include \"limitoutputstreambuf.h\"\n#include \"private/static.h\"\n\nnamespace ioutils {\nSTATIC_VARIABLE_DECLARE_BLANK(std::stringstream, bufferOut)\nSTATIC_VARIABLE_DECLARE(std::streambuf*, oldOut, nullptr)\nSTATIC_VARIABLE_DECLARE_BLANK(std::stringstream, bufferErr)\nSTATIC_VARIABLE_DECLARE(std::streambuf*, oldErr, nullptr)\nSTATIC_VARIABLE_DECLARE_BLANK(std::stringstream, bufferIn)\nSTATIC_VARIABLE_DECLARE(std::streambuf*, oldIn, nullptr)\nSTATIC_VARIABLE_DECLARE(bool, consoleEchoUserInput, false)\nSTATIC_VARIABLE_DECLARE(int, consoleOutputLimit, 0)\n\n\n\nvoid captureStderrBegin() {\n    STATIC_VARIABLE(bufferErr).str(std::string());\n    std::streambuf* newBuf;\n    int limit = getConsoleOutputLimit();\n    if (limit > 0) {\n        newBuf = new stanfordcpplib::LimitOutputStreambuf(STATIC_VARIABLE(bufferErr).rdbuf(), limit);\n    } else {\n        newBuf = STATIC_VARIABLE(bufferErr).rdbuf();\n    }\n    STATIC_VARIABLE(oldErr) = std::cerr.rdbuf(newBuf);\n}\n\nstd::string captureStderrEnd() {\n    std::cerr.flush();\n    if (STATIC_VARIABLE(oldErr)) {\n        std::cerr.rdbuf(STATIC_VARIABLE(oldErr));\n        STATIC_VARIABLE(oldErr) = nullptr;\n    }\n    return STATIC_VARIABLE(bufferErr).str();\n}\n\nvoid captureStdoutBegin(bool alsoStderr) {\n    STATIC_VARIABLE(bufferOut).str(std::string());\n    std::streambuf* newBuf;\n    int limit = getConsoleOutputLimit();\n    if (limit > 0) {\n        newBuf = new stanfordcpplib::LimitOutputStreambuf(STATIC_VARIABLE(bufferOut).rdbuf(), limit);\n    } else {\n        newBuf = STATIC_VARIABLE(bufferOut).rdbuf();\n    }\n    \n    STATIC_VARIABLE(oldOut) = std::cout.rdbuf(newBuf);\n    if (alsoStderr) {\n        STATIC_VARIABLE(bufferErr).str(std::string());\n        STATIC_VARIABLE(oldErr) = std::cerr.rdbuf(newBuf);\n    }\n}\n\nstd::string captureStdoutEnd() {\n    std::cout.flush();\n    if (STATIC_VARIABLE(oldOut)) {\n        std::cout.rdbuf(STATIC_VARIABLE(oldOut));\n        STATIC_VARIABLE(oldOut) = nullptr;\n    }\n    std::cerr.flush();\n    if (STATIC_VARIABLE(oldErr)) {\n        std::cerr.rdbuf(STATIC_VARIABLE(oldErr));\n        STATIC_VARIABLE(oldErr) = nullptr;\n    }\n    return STATIC_VARIABLE(bufferOut).str();\n}\n\nbool getConsoleEchoUserInput() {\n    return STATIC_VARIABLE(consoleEchoUserInput);\n}\n\nint getConsoleOutputLimit() {\n    return STATIC_VARIABLE(consoleOutputLimit);\n}\n        \nvoid redirectStdinBegin(std::string userInput) {\n    STATIC_VARIABLE(bufferIn).str(std::string());\n    std::streambuf* newBuf;\n    if (getConsoleEchoUserInput()) {\n        newBuf = new stanfordcpplib::EchoInputStreambuf(STATIC_VARIABLE(bufferIn).rdbuf());\n    } else {\n        newBuf = STATIC_VARIABLE(bufferIn).rdbuf();\n    }\n    STATIC_VARIABLE(oldIn) = std::cin.rdbuf(newBuf);\n    redirectStdinFeedInput(userInput);\n}\n\nvoid redirectStdinFeedInput(std::string userInput) {\n    if (!userInput.empty()) {\n        STATIC_VARIABLE(bufferIn) << userInput << std::endl;\n    }\n}\n\nvoid redirectStdinEnd() {\n    if (STATIC_VARIABLE(oldIn)) {\n        std::cin.rdbuf(STATIC_VARIABLE(oldIn));\n        STATIC_VARIABLE(oldIn) = nullptr;\n    }\n}\n\nvoid setConsoleEchoUserInput(bool echo) {\n    STATIC_VARIABLE(consoleEchoUserInput) = echo;\n}\n\nvoid setConsoleOutputLimit(int limit) {\n    STATIC_VARIABLE(consoleOutputLimit) = limit;\n}\n} // namespace ioutils\n"
  },
  {
    "path": "Library/console/ioutils.h",
    "content": "/*\n * File: ioutils.h\n * ---------------\n * This file contains declarations of functions to help capture, redirect,\n * and feed input to cin/cout/err.\n * \n * @author Marty Stepp\n * @version 2014/10/14\n * @since 2014/03/01\n */\n\n#ifndef _ioutils_h\n#define _ioutils_h\n\n#include <string>\n\nnamespace ioutils {\nvoid captureStderrBegin();\nstd::string captureStderrEnd();\nvoid captureStdoutBegin(bool alsoStderr = false);\nstd::string captureStdoutEnd();\n\n/*\n * Function: getConsoleEchoUserInput\n * Usage: bool echo = getConsoleEchoUserInput();\n * ---------------------------------------------\n * Returns whether or not the input from the Stanford graphical\n * console window is being echoed onto the standard operating system terminal\n * window. Initially this is false unless set to true by a previous call to\n * setConsoleEchoUserInput(true).\n */\nbool getConsoleEchoUserInput();\nint getConsoleOutputLimit();\n\nvoid redirectStdinBegin(std::string userInput = \"\");\nvoid redirectStdinFeedInput(std::string userInput);\nvoid redirectStdinEnd();\n\n/*\n * Function: setConsoleEchoUserInput\n * Usage: setConsoleEchoUserInput(true);\n * -------------------------------------\n * Enables or disables echoing the input from the Stanford\n * console window onto the standard operating system terminal window.\n * Normally you don't need this echoing, but if you want to be able to copy\n * and paste your console interaction into another window, it is useful.\n */\nvoid setConsoleEchoUserInput(bool echo);\n\n/*\n * Sets console to throw an error if more than 'limit' total chars are printed.\n * Used to stop students who print infinite or semi-infinite output.\n * If limit <= 0, no limit.\n */\nvoid setConsoleOutputLimit(int limit = 0);\n} // namespace ioutils\n\n#endif // _ioutils_h\n"
  },
  {
    "path": "Library/console/limitoutputstreambuf.h",
    "content": "/*\n * File: limitoutputstreambuf.h\n * ----------------------------\n * This file defines the <code>LimitOutputStreambuf</code> class, which\n * represents a stream buffer that counts how much output has been produced\n * and throws an exception if a given maximum is exceeded.\n * We mostly use this in grading programs to halt runaway student code.\n *\n * @version 2016/10/04\n * - initial version\n */\n\n\n#ifndef _limitoutputstreambuf_h\n#define _limitoutputstreambuf_h\n\n#include <exception>\n#include <iostream>\n#include <streambuf>\n\nnamespace stanfordcpplib {\n\n/*\n * An output stream buffer that counts the number of characters written to it.\n * Used to limit cout console output by autograders for naughty students who\n * print too much output.\n *\n * inspired by: http://gabisoft.free.fr/articles/fltrsbf1.html\n */\nclass LimitOutputStreambuf : public std::streambuf {\npublic:\n    LimitOutputStreambuf(std::streambuf* source, int max) : m_source(source), m_count(0), m_max(max) {\n        // empty\n    }\n\n    virtual ~LimitOutputStreambuf() {\n        sync();\n    }\n\n    /*\n     * This is the crucial function; called to write a character to the\n     * underlying stream buffer (cout).  We count them so we can throw\n     * an error if too many are printed.\n     */\n    virtual int overflow(int ch) {\n        if (m_count >= 0) {\n            m_count++;\n            if (m_count > m_max) {\n                m_count = -1;   // disable checking on further calls so I can print again\n                std::ostringstream os;\n                os << std::endl;\n                os << \"*** ERROR: Excessive output produced! (over \" << m_max << \" chars)\" << std::endl;\n                os << \"***        Halting program.\" << std::endl;\n                std::string str = os.str();\n                m_source->sputn(str.c_str(), (int) str.length());\n                throw std::exception();\n            }\n        }\n\n        return m_source->sputc(ch);\n    }\n\n    virtual int underflow() {\n        return EOF;\n    }\n\n    virtual int sync() {\n        return m_source->pubsync();\n    }\n\n    virtual std::streambuf* setbuf(char* p, std::streamsize len) {\n        return m_source->pubsetbuf(p, len);\n    }\n\nprivate:\n    std::streambuf* m_source;\n    int m_count;\n    int m_max;\n};\n\n} // namespace stanfordcpplib\n\n#endif // _limitoutputstreambuf_h\n"
  },
  {
    "path": "Library/console/plainconsole.cpp",
    "content": "/*\n * File: plainconsole.cpp\n * ----------------------\n * This file defines the implementation of functions to add utility to the\n * C++ plain text console streams, cin/cout/cerr.\n * See plainconsole.h for documentation of each function.\n *\n * @author Marty Stepp\n * @version 2017/11/12\n * - changed limited stream to throw error rather than raise SIGABRT for better displaying\n * @version 2017/10/20\n * - fixed compiler warning about 0 vs nullptr\n * @version 2015/10/21\n * @since 2015/10/21\n */\n\n#include \"plainconsole.h\"\n#include <csignal>\n#include <iostream>\n#include <string>\n#include \"error.h\"\n\nnamespace plainconsole {\n/*\n * A stream buffer that just forwards everything to a delegate,\n * but echoes any user input read from it.\n * Used to (sometimes) echo console input when redirected in from a file.\n * http://www.cplusplus.com/reference/streambuf/streambuf/\n */\nclass EchoingStreambuf : public std::streambuf {\nprivate:\n    /* Constants */\n    static const int BUFFER_SIZE = 4096;\n\n    /* Instance variables */\n    char inBuffer[BUFFER_SIZE];\n    char outBuffer[BUFFER_SIZE];\n    std::istream instream;\n    std::ostream& outstream;\n    int outputLimit;\n    int outputPrinted;\n\npublic:\n    EchoingStreambuf(std::streambuf& buf, std::ostream& out)\n            : instream(&buf),\n              outstream(out),\n              outputLimit(0),\n              outputPrinted(0) {\n        // outstream.rdbuf(&buf);\n        setg(inBuffer, inBuffer, inBuffer);\n        setp(outBuffer, outBuffer + BUFFER_SIZE);\n    }\n\n    ~EchoingStreambuf() {\n        /* Empty */\n    }\n    \n    virtual void setOutputLimit(int limit) {\n        outputLimit = limit;\n    }\n\n    virtual int underflow() {\n        // 'return 0' handles end-of-input from stdin redirect\n        std::string line;\n        if (!getline(instream, line)) {\n            return 0;\n        }\n        \n        int n = line.length();\n        if (n + 1 >= BUFFER_SIZE) {\n            error(\"EchoingStreambuf::underflow: String too long\");\n        }\n        for (int i = 0; i < n; i++) {\n            inBuffer[i] = line[i];\n        }\n        inBuffer[n++] = '\\n';\n        inBuffer[n] = '\\0';\n        setg(inBuffer, inBuffer, inBuffer + n);\n        \n        // this is the place to echo the input\n        // fprintf(stdout, \"inBuffer: \\\"%s\\\"\\n\", inBuffer);\n        // fflush(stdout);\n        outstream << inBuffer;\n        outstream.flush();\n        \n        return inBuffer[0];\n    }\n\n    virtual int overflow(int ch = EOF) {\n        std::string line = \"\";\n        for (char *cp = pbase(); cp < pptr(); cp++) {\n            if (*cp == '\\n') {\n                // puts(line.c_str());\n                outputPrinted += line.length();\n                if (outputLimit > 0 && outputPrinted > outputLimit) {\n                    error(\"excessive output printed\");\n                }\n                line = \"\";\n            } else {\n                line += *cp;\n            }\n        }\n        if (line != \"\") {\n            // puts(line.c_str());\n            outputPrinted += line.length();\n            if (outputLimit > 0 && outputPrinted > outputLimit) {\n                error(\"excessive output printed\");\n            }\n        }\n        setp(outBuffer, outBuffer + BUFFER_SIZE);\n        if (ch != EOF) {\n            outBuffer[0] = ch;\n            pbump(1);\n        }\n        return ch != EOF;\n    }\n    \n    virtual int sync() {\n        return overflow();\n    }\n};\n\n/*\n * A stream buffer that limits how many characters you can print to it.\n * If you exceed that many, it throws an ErrorException.\n */\nclass LimitedStreambuf : public std::streambuf {\nprivate:\n    std::ostream outstream;\n    int outputLimit;\n    int outputPrinted;\n\npublic:\n    LimitedStreambuf(std::streambuf& buf, int limit)\n            : outstream(&buf),\n              outputLimit(limit),\n              outputPrinted(0) {\n        setp(nullptr, nullptr);   // // no buffering, overflow on every char\n    }\n\n    virtual void setOutputLimit(int limit) {\n        outputLimit = limit;\n    }\n\n    virtual int overflow(int ch = EOF) {\n        outputPrinted++;\n        if (outputLimit > 0 && outputPrinted > outputLimit) {\n            // error(\"excessive output printed\");\n            // outstream.setstate(std::ios::failbit | std::ios::badbit | std::ios::eofbit);\n            // kill the program\n            // (use a signal rather than error/exception\n            // so student won't try to catch it)\n            // error(\"Excessive output printed; you may have an infinite loop in your code.\");\n            raise(SIGUSR1);\n        } else {\n            outstream.put(ch);\n        }\n        return ch;\n    }\n};\n\nvoid setOutputLimit(int limit) {\n    if (limit <= 0) {\n        error(\"Platform::setConsoleOutputLimit: limit must be a positive integer\");\n    }\n    LimitedStreambuf* limitedbufOut = new LimitedStreambuf(*std::cout.rdbuf(), limit);\n    LimitedStreambuf* limitedbufErr = new LimitedStreambuf(*std::cerr.rdbuf(), limit);\n    std::cout.rdbuf(limitedbufOut);\n    std::cerr.rdbuf(limitedbufErr);\n}\n\nvoid setEcho(bool value) {\n    static EchoingStreambuf* echobufIn = nullptr;\n    static std::streambuf* oldBuf = nullptr;\n    \n    if (!echobufIn && value) {\n        // start to echo user input pulled from cin\n        oldBuf = std::cin.rdbuf();\n        echobufIn = new EchoingStreambuf(*std::cin.rdbuf(), std::cout);\n        std::cin.rdbuf(echobufIn);\n    } else if (echobufIn && !value) {\n        // stop echo\n        std::cin.rdbuf(oldBuf);\n        oldBuf = nullptr;\n        echobufIn = nullptr;\n    }\n}\n\n} // namespace plainconsole\n"
  },
  {
    "path": "Library/console/plainconsole.h",
    "content": "/*\n * File: plainconsole.h\n * --------------------\n * This file declares functions to add utility to the\n * C++ plain text console streams, cin/cout/cerr.\n * See plainconsole.cpp for implementation of each function.\n *\n * @author Marty Stepp\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2015/10/21\n * @since 2015/10/21\n */\n\n\n#ifndef _plainconsole_h\n#define _plainconsole_h\n\nnamespace plainconsole {\n/**\n * Sets the cout console to throw an error if more than the given number of\n * total characters are ever printed to it.\n * This can be used to stop student programs that try to print infinite output.\n */\nvoid setOutputLimit(int limit);\n\n/**\n * Sets whether user input values read from cin are echoed back to cout.\n * This is useful when capturing output dialogues for comparison/diffing.\n */\nvoid setEcho(bool value);\n} // namespace plainconsole\n\n#endif // _plainconsole_h\n"
  },
  {
    "path": "Library/graphics/gbrowserpane.cpp",
    "content": "/*\n * File: gbrowserpane.cpp\n * ----------------------\n * This file contains the implementation of the <code>GBrowserPane</code> class\n * as declared in gbrowserpane.h.\n *\n * @version 2019/04/23\n * - moved some event-handling code to GInteractor superclass\n * @version 2018/12/28\n * - added methods for text selection, scrolling, cursor position, key/mouse listeners\n * @version 2018/09/17\n * - fixed thread safety bugs\n * - added link listener events\n * @version 2018/08/23\n * - renamed to gbrowserpane.h to replace Java version\n * @version 2018/07/15\n * - initial version\n */\n\n#include \"gbrowserpane.h\"\n#include <QScrollBar>\n#include <QTextCursor>\n#include <fstream>\n#include <iostream>\n#include \"filelib.h\"\n#include \"gthread.h\"\n#include \"require.h\"\n\nGBrowserPane::GBrowserPane(const std::string& url, QWidget* parent) {\n    GThread::runOnQtGuiThread([this, url, parent]() {\n        _iqtextbrowser = new _Internal_QTextBrowser(this, getInternalParent(parent));\n    });\n    if (!url.empty()) {\n        readTextFromUrl(url);\n    }\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGBrowserPane::~GBrowserPane() {\n    // TODO: delete _iqtextbrowser;\n    _iqtextbrowser->detach();\n    _iqtextbrowser = nullptr;\n}\n\nvoid GBrowserPane::clearSelection() {\n    GThread::runOnQtGuiThread([this]() {\n        QTextCursor cursor = _iqtextbrowser->textCursor();\n        cursor.clearSelection();\n        _iqtextbrowser->setTextCursor(cursor);\n    });\n}\n\nvoid GBrowserPane::clearText() {\n    GThread::runOnQtGuiThread([this]() {\n        _iqtextbrowser->clear();\n    });\n}\n\nint GBrowserPane::getCursorPosition() const {\n    return _iqtextbrowser->textCursor().position();\n}\n\n_Internal_QWidget* GBrowserPane::getInternalWidget() const {\n    return _iqtextbrowser;\n}\n\nstd::string GBrowserPane::getPageUrl() const {\n    return _pageUrl;\n}\n\nstd::string GBrowserPane::getSelectedText() const {\n    QTextCursor cursor = _iqtextbrowser->textCursor();\n    int start = cursor.selectionStart();\n    int end = cursor.selectionEnd();\n    if (end > start) {\n        return getText().substr(start, end - start);\n    } else {\n        return \"\";\n    }\n}\n\nint GBrowserPane::getSelectionEnd() const {\n    QTextCursor cursor = _iqtextbrowser->textCursor();\n    int start = cursor.selectionStart();\n    int end = cursor.selectionEnd();\n    if (end > start) {\n        return end;\n    } else {\n        // no selection; cursor sets selection start/end to be equal\n        return -1;\n    }\n}\n\nint GBrowserPane::getSelectionLength() const {\n    QTextCursor cursor = _iqtextbrowser->textCursor();\n    int start = cursor.selectionStart();\n    int end = cursor.selectionEnd();\n    return end - start;\n}\n\nint GBrowserPane::getSelectionStart() const {\n    QTextCursor cursor = _iqtextbrowser->textCursor();\n    int start = cursor.selectionStart();\n    int end = cursor.selectionEnd();\n    if (end > start) {\n        return start;\n    } else {\n        return -1;\n    }\n}\n\nstd::string GBrowserPane::getText() const {\n    return _iqtextbrowser->toHtml().toStdString();\n}\n\nstd::string GBrowserPane::getType() const {\n    return \"GBrowserPane\";\n}\n\nQWidget* GBrowserPane::getWidget() const {\n    return static_cast<QWidget*>(_iqtextbrowser);\n}\n\nbool GBrowserPane::isEditable() const {\n    return !_iqtextbrowser->isReadOnly();\n}\n\nbool GBrowserPane::isLineWrap() const {\n    return _iqtextbrowser->lineWrapMode() != QTextEdit::NoWrap;\n}\n\nvoid GBrowserPane::moveCursorToEnd() {\n    GThread::runOnQtGuiThread([this]() {\n        QTextCursor cursor = _iqtextbrowser->textCursor();\n        cursor.movePosition(QTextCursor::End, QTextCursor::MoveAnchor, 1);\n        _iqtextbrowser->setTextCursor(cursor);\n        _iqtextbrowser->ensureCursorVisible();\n    });\n}\n\nvoid GBrowserPane::moveCursorToStart() {\n    GThread::runOnQtGuiThread([this]() {\n        QTextCursor cursor = _iqtextbrowser->textCursor();\n        cursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor, 1);\n        _iqtextbrowser->setTextCursor(cursor);\n        _iqtextbrowser->ensureCursorVisible();\n    });\n}\n\nvoid GBrowserPane::readTextFromFile(const std::string& filename) {\n    std::ifstream input;\n    input.open(filename.c_str());\n    if (!input.fail()) {\n        _pageUrl = filename;\n        std::string fileText = readEntire(input);\n        setText(fileText);\n    }\n}\n\nvoid GBrowserPane::readTextFromUrl(const std::string& url) {\n    this->_pageUrl = url;\n    GThread::runOnQtGuiThread([this, url]() {\n        QUrl qurl(QString::fromStdString(url));\n        _iqtextbrowser->setSource(qurl);\n    });\n}\n\nvoid GBrowserPane::removeLinkListener() {\n    removeEventListener(\"linkclick\");\n}\n\nvoid GBrowserPane::removeTextChangeListener() {\n    removeEventListener(\"textchange\");\n}\n\nvoid GBrowserPane::scrollToBottom() {\n    GThread::runOnQtGuiThread([this]() {\n        QScrollBar* scrollbar = _iqtextbrowser->verticalScrollBar();\n        scrollbar->setValue(scrollbar->maximum());\n        scrollbar->setSliderPosition(scrollbar->maximum());\n    });\n}\n\nvoid GBrowserPane::scrollToTop() {\n    GThread::runOnQtGuiThread([this]() {\n        QScrollBar* scrollbar = _iqtextbrowser->verticalScrollBar();\n        scrollbar->setValue(0);\n        scrollbar->setSliderPosition(0);\n    });\n}\n\nvoid GBrowserPane::select(int startIndex, int length) {\n    require::nonNegative(startIndex, \"GBrowserPane::select\", \"startIndex\");\n    require::nonNegative(length, \"GBrowserPane::select\", \"length\");\n    GThread::runOnQtGuiThread([this, startIndex, length]() {\n        QTextCursor cursor = _iqtextbrowser->textCursor();\n        cursor.setPosition(startIndex);\n        cursor.movePosition(QTextCursor::Right, QTextCursor::KeepAnchor, length);\n        _iqtextbrowser->setTextCursor(cursor);\n    });\n}\n\nvoid GBrowserPane::selectAll() {\n    GThread::runOnQtGuiThread([this]() {\n        _iqtextbrowser->selectAll();\n    });\n}\n\nvoid GBrowserPane::setCursorPosition(int index, bool keepAnchor) {\n    require::nonNegative(index, \"TextArea::setCursorPosition\", \"index\");\n    GThread::runOnQtGuiThread([this, index, keepAnchor]() {\n        QTextCursor cursor(_iqtextbrowser->textCursor());\n        cursor.setPosition(index, keepAnchor ? QTextCursor::KeepAnchor : QTextCursor::MoveAnchor);\n        _iqtextbrowser->setTextCursor(cursor);\n        _iqtextbrowser->ensureCursorVisible();\n    });\n}\n\nvoid GBrowserPane::setEditable(bool value) {\n    GThread::runOnQtGuiThread([this, value]() {\n        _iqtextbrowser->setReadOnly(!value);\n    });\n}\n\nvoid GBrowserPane::setMouseListener(GEventListener func) {\n    setEventListeners({\"mousepress\",\n                       \"mouserelease\"}, func);\n}\n\nvoid GBrowserPane::setMouseListener(GEventListenerVoid func) {\n    setEventListeners({\"mousepress\",\n                       \"mouserelease\"}, func);\n}\n\nvoid GBrowserPane::setLineWrap(bool wrap) {\n    GThread::runOnQtGuiThread([this, wrap]() {\n        _iqtextbrowser->setLineWrapMode(wrap ? QTextEdit::WidgetWidth : QTextEdit::NoWrap);\n    });\n}\n\nvoid GBrowserPane::setLinkListener(GEventListener func) {\n    setEventListener(\"linkclick\", func);\n}\n\nvoid GBrowserPane::setLinkListener(GEventListenerVoid func) {\n    setEventListener(\"linkclick\", func);\n}\n\nvoid GBrowserPane::setText(const std::string& text) {\n    GThread::runOnQtGuiThread([this, text]() {\n        _iqtextbrowser->setText(QString::fromStdString(text));\n    });\n}\n\n// JDZ: when replace text, browser pane scrolls to seemingly arbitrary location\n// Annoying! this version perserve scroll position (if true) or scrolls to end (if false)\nvoid GBrowserPane::setTextPreserveScroll(const std::string& text, bool preserve) {\n    GThread::runOnQtGuiThread([this, text, preserve]() {\n        QScrollBar* scrollbar = _iqtextbrowser->verticalScrollBar();\n        int oldPos = scrollbar->value();\n        _iqtextbrowser->setText(QString::fromStdString(text));\n        int newPos = preserve ? oldPos : scrollbar->maximum();\n        scrollbar->setValue(newPos);\n        scrollbar->setSliderPosition(newPos);\n    });\n}\n\nvoid GBrowserPane::setTextChangeListener(GEventListener func) {\n    setEventListener(\"textchange\", func);\n}\n\nvoid GBrowserPane::setTextChangeListener(GEventListenerVoid func) {\n    setEventListener(\"textchange\", func);\n}\n\n_Internal_QTextBrowser::_Internal_QTextBrowser(GBrowserPane* gbrowserpane, QWidget* parent)\n        : QTextBrowser(parent),\n          _gbrowserpane(gbrowserpane) {\n    require::nonNull(gbrowserpane, \"_Internal_QTextBrowser::constructor\");\n    setObjectName(QString::fromStdString(\"_Internal_QTextBrowser_\" + std::to_string(gbrowserpane->getID())));\n    setFocusPolicy(Qt::StrongFocus);\n}\n\nvoid _Internal_QTextBrowser::detach() {\n    _gbrowserpane = nullptr;\n}\n\nvoid _Internal_QTextBrowser::mousePressEvent(QMouseEvent* event) {\n    QTextBrowser::mousePressEvent(event);\n    if (!_gbrowserpane->isAcceptingEvent(\"linkclick\")) {\n        return;\n    }\n    if (!(event->button() & Qt::LeftButton)) {\n        return;\n    }\n    QString clickedAnchor = anchorAt(event->pos());\n    if (clickedAnchor.isEmpty()) {\n        return;\n    }\n    _clickedLink = clickedAnchor;\n}\n\nvoid _Internal_QTextBrowser::mouseReleaseEvent(QMouseEvent* event) {\n    if (!_gbrowserpane->isAcceptingEvent(\"linkclick\")) {\n        QTextBrowser::mouseReleaseEvent(event);   // call super\n        return;\n    }\n    if (!(event->button() & Qt::LeftButton)) {\n        QTextBrowser::mouseReleaseEvent(event);   // call super\n        return;\n    }\n    QString clickedAnchor = anchorAt(event->pos());\n    if (clickedAnchor.isEmpty() || _clickedLink.isEmpty()\n            || clickedAnchor != _clickedLink) {\n        QTextBrowser::mouseReleaseEvent(event);   // call super\n        return;\n    }\n\n    _clickedLink = QString::fromStdString(\"\");   // clear\n\n    GEvent linkEvent(\n                /* class  */ HYPERLINK_EVENT,\n                /* type   */ HYPERLINK_CLICKED,\n                /* name   */ \"linkclick\",\n                /* source */ _gbrowserpane);\n    linkEvent.setButton(static_cast<int>(event->button()));\n    linkEvent.setX(event->pos().x());\n    linkEvent.setY(event->pos().y());\n    linkEvent.setModifiers(event->modifiers());\n    linkEvent.setRequestURL(clickedAnchor.toStdString());\n    linkEvent.setActionCommand(_gbrowserpane->getActionCommand());\n    linkEvent.setInternalEvent(event);\n    _gbrowserpane->fireEvent(linkEvent);\n}\n\nQSize _Internal_QTextBrowser::sizeHint() const {\n    if (hasPreferredSize()) {\n        return getPreferredSize();\n    } else {\n        return QTextBrowser::sizeHint();\n    }\n}\n\n\n"
  },
  {
    "path": "Library/graphics/gbrowserpane.h",
    "content": "/*\n * File: gbrowserpane.h\n * --------------------\n * This file declares the <code>GBrowserPane</code> class, which is a\n * graphical interactor that displays a web page.\n *\n * @version 2019/04/23\n * - moved some event-handling code to GInteractor superclass\n * @version 2018/12/28\n * - added methods for text selection, scrolling, cursor position, key/mouse listeners\n * @version 2018/09/17\n * - fixed thread safety bugs\n * - added link listener events\n * @version 2018/09/08\n * - added doc comments for new documentation generation\n * @version 2018/08/23\n * - renamed to gbrowserpane.h to replace Java version\n * @version 2018/07/15\n * - initial version\n */\n\n#ifndef _gbrowserpane_h\n#define _gbrowserpane_h\n\n#include <string>\n#include <QTextBrowser>\n\n#include \"ginteractor.h\"\n\nclass _Internal_QTextBrowser;\n\n/**\n * A GBrowserPane is a graphical interactor that displays a web page.\n * This interactor is a wrapping around the Qt QTextBrowser widget, which is\n * able to display rich content such as HTML pages.\n *\n * You can use GBrowserPane to implement the core rendering engine of a basic\n * web browser, though it does not support all web browser features such as\n * JavaScript content, secure sessions, or cookies.\n */\nclass GBrowserPane : public GInteractor {\npublic:\n    /**\n     * Constructs a new browser pane.\n     * If a URL string is passed, loads the data from that URL.\n     * Otherwise, the pane is initially blank.\n     */\n    GBrowserPane(const std::string& url = \"\", QWidget* parent = nullptr);\n\n    /**\n     * Frees memory allocated internally by the browser pane.\n     */\n    ~GBrowserPane() override;\n\n    /**\n     * Deselects any text that is currently selected in the pane.\n     */\n    virtual void clearSelection();\n\n    /**\n     * Sets the text in the pane to be empty.\n     */\n    virtual void clearText();\n\n    /**\n     * Returns the keyboard cursor's current position in the text pane as a\n     * 0-based character index within the overall text string.\n     */\n    virtual int getCursorPosition() const;\n\n    /* @inherit */\n    _Internal_QWidget* getInternalWidget() const override;\n\n    /**\n     * Returns the URL of the web page or file name being currently viewed.\n     * If no page or file has been loaded, returns an empty string.\n     */\n    virtual std::string getPageUrl() const;\n\n    /**\n     * Returns the text that is currently selected in the text pane.\n     * If no text is currently selected, returns an empty string.\n     */\n    virtual std::string getSelectedText() const;\n\n    /**\n     * Returns the index just past the end of the current selection of text as a\n     * 0-based character index within the overall text string.\n     * If no text is currently selected, returns -1.\n     */\n    virtual int getSelectionEnd() const;\n\n    /**\n     * Returns the number of characters that are currently selected.\n     * If no text is currently selected, returns 0.\n     */\n    virtual int getSelectionLength() const;\n\n    /**\n     * Returns the index of the start of the current selection of text as a\n     * 0-based character index within the overall text string.\n     * If no text is currently selected, returns -1.\n     */\n    virtual int getSelectionStart() const;\n\n    /**\n     * Returns the full text of the current page or file being displayed in the pane.\n     * This could be a fairly long string, depending on the page.\n     * Initially an empty string if no page or file has yet been loaded.\n     */\n    virtual std::string getText() const;\n\n    /* @inherit */\n    std::string getType() const override;\n\n    /* @inherit */\n    QWidget* getWidget() const override;\n\n    /**\n     * Returns whether the text pane allows the user to modify its text.\n     * Default false.\n     */\n    virtual bool isEditable() const;\n\n    /**\n     * Returns whether the text pane wraps its text when a line becomes too long.\n     * Default true.\n     */\n    virtual bool isLineWrap() const;\n\n    /**\n     * Sets the text pane's keyboard cursor position to the end of the\n     * current text.\n     */\n    virtual void moveCursorToEnd();\n\n    /**\n     * Sets the text pane's keyboard cursor position to the start of the\n     * current text.\n     */\n    virtual void moveCursorToStart();\n\n    /**\n     * Reads text from the given file and displays the entire file's text as the\n     * contents of this formatted pane.\n     * The pane will try to display the content in the best appropriate format,\n     * such as rendering basic HTML content with formatting intact.\n     * If the file does not exist or cannot be read, sets the pane's text to be empty.\n     */\n    virtual void readTextFromFile(const std::string& filename);\n\n    /**\n     * Reads text from the given web page URL and displays the entire page's\n     * text as the contents of this formatted pane.\n     * If the page does not exist or cannot be read, sets the pane's text to be empty.\n     */\n    virtual void readTextFromUrl(const std::string& url);\n\n    /**\n     * Removes the link listener from the canvas so that it will no longer\n     * call it when hyperlink events occur.\n     */\n    virtual void removeLinkListener();\n\n    /**\n     * Removes the text change listener from this text pane so that it will no longer\n     * call it when the user modifies the text.\n     */\n    virtual void removeTextChangeListener();\n\n    /**\n     * Moves the visible scroll region of the text pane so that the bottom part\n     * of the text is visible.\n     */\n    virtual void scrollToBottom();\n\n    /**\n     * Moves the visible scroll region of the text pane so that the top part\n     * of the text is visible.\n     */\n    virtual void scrollToTop();\n\n    /**\n     * Sets the given range of text to be selected, beginning with the given start\n     * index as a 0-based character index within the overall text string, and\n     * extending for the given length of characters.\n     * @throw ErrorException if start index or length is negative\n     */\n    virtual void select(int startIndex, int length);\n\n    /**\n     * Selects the entire text of the text pane.\n     */\n    virtual void selectAll();\n\n    /**\n     * Moves the keyboard cursor to the given 0-based character index within\n     * the text.\n     * @throw ErrorException if index is negative\n     */\n    virtual void setCursorPosition(int index, bool keepAnchor = false);\n\n    /**\n     * Sets whether the text pane allows the user to modify its text.\n     * Default true.\n     */\n    virtual void setEditable(bool value);\n\n    /**\n     * Sets whether the text pane wraps its text when a line becomes too long.\n     * Default true.\n     */\n    virtual void setLineWrap(bool wrap);\n\n    /**\n     * Sets a link listener on this canvas so that it will be called\n     * when the user clicks on hyperlinks on the pane.\n     * Any existing mouse listener will be replaced.\n     */\n    virtual void setLinkListener(GEventListener func);\n\n    /**\n     * Sets a link listener on this canvas so that it will be called\n     * when the user clicks on hyperlinks on the pane.\n     * Any existing mouse listener will be replaced.\n     */\n    virtual void setLinkListener(GEventListenerVoid func);\n\n    /**\n     * Sets a mouse listener on this text pane so that it will be called\n     * when the user moves or clicks the mouse.\n     * Any existing mouse listener will be replaced.\n     */\n    void setMouseListener(GEventListener func) override;\n\n    /**\n     * Sets a mouse listener on this text pane so that it will be called\n     * when the user moves or clicks the mouse.\n     * Any existing mouse listener will be replaced.\n     */\n    void setMouseListener(GEventListenerVoid func) override;\n\n    /**\n     * Sets the pane to display to the given contents using its current content type.\n     * For example, if you build your own string of HTML or text content and want\n     * to display it in the pane without saving it to a file, this is the method to use.\n     */\n    virtual void setText(const std::string& text);\n\n    /**\n     * Variant of above that also controls the scroll position when\n     * changing text contents.\n     *\n     * If preserve is true, the current scroll position is preserved and\n     * restored, otherwise will scroll to new bottom\n     */\n     void setTextPreserveScroll(const std::string& text, bool preserve);\n\n    /**\n     * Sets a text change listener on this text pane so that it will be called\n     * when the user modifies the current text.\n     * Any existing text change listener will be replaced.\n     *\n     * A text change listener is similar to a key listener in that each will\n     * fire an event when the user types a character in the text pane.\n     * But a key listener will fire when any key is pressed, even one that does\n     * not modify the text itself, such as when the user presses an arrow key\n     * or the Ctrl key or Esc or any other special character.\n     *\n     * A text change listener will fire only when the actual text changes, such\n     * as when the user types a new character into the area.\n     */\n    virtual void setTextChangeListener(GEventListener func);\n\n    /**\n     * Sets a text change listener on this text pane so that it will be called\n     * when the user modifies the current text.\n     * Any existing text change listener will be replaced.\n     *\n     * A text change listener is similar to a key listener in that each will\n     * fire an event when the user types a character in the text pane.\n     * But a key listener will fire when any key is pressed, even one that does\n     * not modify the text itself, such as when the user presses an arrow key\n     * or the Ctrl key or Esc or any other special character.\n     *\n     * A text change listener will fire only when the actual text changes, such\n     * as when the user types a new character into the area.\n     */\n    virtual void setTextChangeListener(GEventListenerVoid func);\n\nprivate:\n    Q_DISABLE_COPY(GBrowserPane)\n\n    std::string _pageUrl;   // url/filename of the most recently loaded page\n    _Internal_QTextBrowser* _iqtextbrowser;\n\n    friend class _Internal_QTextBrowser;\n};\n\n/**\n * Internal class; not to be used by clients.\n * @private\n */\nclass _Internal_QTextBrowser : public QTextBrowser, public _Internal_QWidget {\n    Q_OBJECT\n\npublic:\n    _Internal_QTextBrowser(GBrowserPane* gbrowserpane, QWidget* parent = nullptr);\n    void detach() override;\n    void mousePressEvent(QMouseEvent* event) override;\n    void mouseReleaseEvent(QMouseEvent* event) override;\n    QSize sizeHint() const override;\n\nprivate:\n    GBrowserPane* _gbrowserpane;\n    QString _clickedLink;\n};\n\n#endif // _gbrowserpane_h\n"
  },
  {
    "path": "Library/graphics/gbutton.cpp",
    "content": "/*\n * File: gbutton.cpp\n * ------------------\n *\n * @author Marty Stepp\n * @version 2019/04/23\n * - moved some event-handling code to GInteractor superclass\n * @version 2019/04/22\n * - added setIcon with QIcon and QPixmap\n * @version 2019/02/02\n * - destructor now stops event processing\n * @version 2018/09/04\n * - added double-click event support\n * @version 2018/08/23\n * - renamed to gbutton.cpp to replace Java version\n * @version 2018/06/25\n * - initial version\n */\n\n#include \"gbutton.h\"\n#include <QKeySequence>\n#include <QIcon>\n#include \"filelib.h\"\n#include \"gthread.h\"\n#include \"require.h\"\n\nGButton::GButton(const std::string& text, const std::string& iconFileName, QWidget* parent) {\n    GThread::runOnQtGuiThread([this, parent]() {\n        _iqpushbutton = new _Internal_QPushButton(this, getInternalParent(parent));\n    });\n    setText(text);\n    if (!iconFileName.empty()) {\n        setIcon(iconFileName);\n    }\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGButton::GButton(const std::string& text, const QIcon& icon, QWidget* parent) {\n    GThread::runOnQtGuiThread([this, parent]() {\n        _iqpushbutton = new _Internal_QPushButton(this, getInternalParent(parent));\n    });\n    setText(text);\n    setIcon(icon);\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGButton::GButton(const std::string& text, const QPixmap& icon, QWidget* parent) {\n    GThread::runOnQtGuiThread([this, parent]() {\n        _iqpushbutton = new _Internal_QPushButton(this, getInternalParent(parent));\n    });\n    setText(text);\n    setIcon(icon);\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGButton::~GButton() {\n    // TODO: delete _iqpushbutton;\n    _iqpushbutton->detach();\n    _iqpushbutton = nullptr;\n}\n\nstd::string GButton::getAccelerator() const {\n    return _iqpushbutton->shortcut().toString().toStdString();\n}\n\nstd::string GButton::getActionCommand() const {\n    if (_actionCommand.empty()) {\n        return getText();\n    } else {\n        return _actionCommand;\n    }\n}\n\n_Internal_QWidget* GButton::getInternalWidget() const {\n    return _iqpushbutton;\n}\n\nstd::string GButton::getText() const {\n    return _iqpushbutton->text().toStdString();\n}\n\nGInteractor::TextPosition GButton::getTextPosition() const {\n    switch (_iqpushbutton->toolButtonStyle()) {\n    case Qt::ToolButtonTextBesideIcon:\n        return GInteractor::TEXT_BESIDE_ICON;\n    case Qt::ToolButtonTextUnderIcon:\n        return GInteractor::TEXT_UNDER_ICON;\n    case Qt::ToolButtonTextOnly:\n    default:\n        return GInteractor::TEXT_ONLY;\n    }\n}\n\nstd::string GButton::getType() const {\n    return \"GButton\";\n}\n\nQWidget* GButton::getWidget() const {\n    return static_cast<QWidget*>(_iqpushbutton);\n}\n\nvoid GButton::setAccelerator(const std::string& accelerator) {\n    GThread::runOnQtGuiThread([this, accelerator]() {\n        QKeySequence keySeq(QString::fromStdString(normalizeAccelerator(accelerator)));\n        _iqpushbutton->setShortcut(keySeq);\n    });\n}\n\nvoid GButton::setIcon(const QIcon& icon) {\n    GInteractor::setIcon(icon);\n    GThread::runOnQtGuiThread([this, &icon]() {\n        _iqpushbutton->setIcon(icon);\n        _iqpushbutton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);\n        if (!icon.availableSizes().empty()) {\n            _iqpushbutton->setIconSize(icon.availableSizes()[0]);\n        }\n        _iqpushbutton->updateGeometry();\n        _iqpushbutton->update();\n    });\n}\n\nvoid GButton::setIcon(const QPixmap& icon) {\n    GInteractor::setIcon(icon);\n    GThread::runOnQtGuiThread([this, &icon]() {\n        _iqpushbutton->setIcon(icon);\n        _iqpushbutton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);\n        _iqpushbutton->setIconSize(icon.size());\n        _iqpushbutton->updateGeometry();\n        _iqpushbutton->update();\n    });\n}\n\nvoid GButton::setIcon(const std::string& filename, bool retainIconSize) {\n    GInteractor::setIcon(filename, retainIconSize);\n    if (!filename.empty() && fileExists(filename)) {\n        GThread::runOnQtGuiThread([this, filename, retainIconSize]() {\n            if (filename.empty()) {\n                _iqpushbutton->setIcon(QIcon());\n            } else {\n                QPixmap pixmap(QString::fromStdString(filename));\n                QIcon icon(pixmap);\n                _iqpushbutton->setIcon(icon);\n                _iqpushbutton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);\n                if (retainIconSize) {\n                    _iqpushbutton->setIconSize(pixmap.size());\n                    _iqpushbutton->updateGeometry();\n                    _iqpushbutton->update();\n                }\n            }\n        });\n    }\n}\n\nvoid GButton::setText(const std::string& text) {\n    GThread::runOnQtGuiThread([this, text]() {\n        _iqpushbutton->setText(QString::fromStdString(text));\n    });\n    setActionCommand(text);\n}\n\nvoid GButton::setTextPosition(GInteractor::TextPosition position) {\n    GThread::runOnQtGuiThread([this, position]() {\n        if (position == GInteractor::TEXT_UNDER_ICON) {\n            _iqpushbutton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);\n        } else if (position == GInteractor::TEXT_BESIDE_ICON) {\n            _iqpushbutton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);\n        } else if (position == GInteractor::TEXT_ONLY) {\n            _iqpushbutton->setToolButtonStyle(Qt::ToolButtonTextOnly);\n        }\n    });\n}\n\n_Internal_QPushButton::_Internal_QPushButton(GButton* button, QWidget* parent)\n        : QToolButton(parent),\n          _gbutton(button) {\n    require::nonNull(button, \"_Internal_QPushButton::constructor\");\n    setObjectName(QString::fromStdString(\"_Internal_QPushButton_\" + std::to_string(button->getID())));\n    setToolButtonStyle(Qt::ToolButtonTextUnderIcon);\n    connect(this, SIGNAL(clicked()), this, SLOT(handleClick()));\n}\n\nvoid _Internal_QPushButton::detach() {\n    _gbutton = nullptr;\n}\n\nvoid _Internal_QPushButton::handleClick() {\n    if (!_gbutton || !_gbutton->isAcceptingEvent(\"click\")) {\n        return;\n    }\n    GEvent actionEvent(\n                /* class  */ ACTION_EVENT,\n                /* type   */ ACTION_PERFORMED,\n                /* name   */ \"click\",\n                /* source */ _gbutton);\n    actionEvent.setActionCommand(_gbutton->getActionCommand());\n    _gbutton->fireEvent(actionEvent);\n}\n\nvoid _Internal_QPushButton::mouseDoubleClickEvent(QMouseEvent* event) {\n    require::nonNull(event, \"_Internal_QPushButton::mouseDoubleClickEvent\", \"event\");\n    QWidget::mouseDoubleClickEvent(event);   // call super\n    if (!_gbutton || !_gbutton->isAcceptingEvent(\"doubleclick\")) {\n        return;\n    }\n    emit doubleClicked();\n    GEvent mouseEvent(\n                /* class  */ MOUSE_EVENT,\n                /* type   */ MOUSE_DOUBLE_CLICKED,\n                /* name   */ \"doubleclick\",\n                /* source */ _gbutton);\n    mouseEvent.setActionCommand(_gbutton->getActionCommand());\n    mouseEvent.setButton((int) event->button());\n    mouseEvent.setX(event->pos().x());\n    mouseEvent.setY(event->pos().y());\n    _gbutton->fireEvent(mouseEvent);\n}\n\nQSize _Internal_QPushButton::sizeHint() const {\n    if (hasPreferredSize()) {\n        return getPreferredSize();\n    } else {\n        return QToolButton::sizeHint();\n    }\n}\n"
  },
  {
    "path": "Library/graphics/gbutton.h",
    "content": "/*\n * File: gbutton.h\n * ---------------\n *\n * @author Marty Stepp\n * @version 2019/04/23\n * - moved some event-handling code to GInteractor superclass\n * @version 2019/04/22\n * - added setIcon with QIcon and QPixmap\n * @version 2018/09/07\n * - added doc comments for new documentation generation\n * @version 2018/09/04\n * - added double-click event support\n * @version 2018/08/23\n * - renamed to gbutton.h to replace Java version\n * @version 2018/06/25\n * - initial version\n */\n\n\n#ifndef _gbutton_h\n#define _gbutton_h\n\n#include <string>\n#include <QToolButton>\n\n#include \"ginteractor.h\"\n\nclass _Internal_QPushButton;\n\n/**\n * This interactor subclass represents an onscreen button.\n * You can listen for clicks on a button using the setActionListener method,\n * passing the function you want to call on each click.\n */\nclass GButton : public GInteractor {\npublic:\n    /**\n     * Creates a button with the specified text label and optional icon.\n     */\n    GButton(const std::string& text = \"\", const std::string& iconFileName = \"\", QWidget* parent = nullptr);\n\n    /**\n     * Creates a button with the specified text label and icon.\n     */\n    GButton(const std::string& text, const QIcon& icon, QWidget* parent = nullptr);\n\n    /**\n     * Creates a button with the specified text label and icon.\n     */\n    GButton(const std::string& text, const QPixmap& icon, QWidget* parent = nullptr);\n\n    /**\n     * Frees memory allocated internally by the button.\n     */\n    ~GButton() override;\n\n    /* @inherit */\n    std::string getAccelerator() const override;\n\n    /* @inherit */\n    std::string getActionCommand() const override;\n\n    /* @inherit */\n    _Internal_QWidget* getInternalWidget() const override;\n\n    /**\n     * Returns the button's text.\n     * @return the text\n     */\n    virtual std::string getText() const;\n\n    /**\n     * Returns the button's text position relative to its icon.\n     * The default is TEXT_BESIDE_ICON, but it can be changed to TEXT_UNDER_ICON\n     * by calling the setTextPosition method.\n     */\n    virtual GInteractor::TextPosition getTextPosition() const;\n\n    /* @inherit */\n    std::string getType() const override;\n\n    /* @inherit */\n    QWidget* getWidget() const override;\n\n    /* @inherit */\n    void setAccelerator(const std::string& accelerator) override;\n\n    /* @inherit */\n    void setIcon(const QIcon& icon) override;\n\n    /* @inherit */\n    void setIcon(const QPixmap& icon) override;\n\n    /* @inherit */\n    void setIcon(const std::string& filename, bool retainIconSize = true) override;\n\n    /**\n     * Sets the text on the button to be the given text.\n     */\n    virtual void setText(const std::string& text);\n\n    /**\n     * Sets the button's text position relative to its icon.\n     * The default is TEXT_BESIDE_ICON, but it can be changed to TEXT_UNDER_ICON.\n     */\n    virtual void setTextPosition(GInteractor::TextPosition position);\n\nprivate:\n    Q_DISABLE_COPY(GButton)\n    _Internal_QPushButton* _iqpushbutton;\n\n    friend class _Internal_QPushButton;\n};\n\n/**\n * Internal class; not to be used by clients.\n * @private\n */\nclass _Internal_QPushButton : public QToolButton, public _Internal_QWidget {\n    Q_OBJECT\n\npublic:\n    _Internal_QPushButton(GButton* button, QWidget* parent = nullptr);\n    void detach() override;\n    QSize sizeHint() const override;\n\nsignals:\n    void doubleClicked();\n\npublic slots:\n    void handleClick();\n\nprotected:\n    void mouseDoubleClickEvent(QMouseEvent* e) override;\n\nprivate:\n    GButton* _gbutton;\n\n    friend class GButton;\n};\n\n#endif // _gbutton_h\n"
  },
  {
    "path": "Library/graphics/gcanvas.cpp",
    "content": "/*\n * File: gcanvas.cpp\n * -----------------\n *\n * @author Marty Stepp\n * @version 2019/05/01\n * - added createArgbPixel\n * - bug fixes related to save / setPixels with alpha transparency\n * @version 2019/04/23\n * - bug fix for loading canvas from file on Windows related to istream change\n * - moved most event listener code to GInteractor superclass\n * @version 2019/03/07\n * - added support for loading canvas directly from istream (htiek)\n * @version 2019/02/06\n * - fixed mouse wheel listeners to work even if no actual scroll area exists\n * @version 2019/02/02\n * - destructor now stops event processing\n * @version 2018/09/20\n * - added read/write lock for canvas contents to avoid race conditions\n * @version 2018/09/04\n * - added double-click event support\n * @version 2018/08/23\n * - renamed to gcanvas.cpp to replace Java version\n * @version 2018/06/30\n * - initial version\n */\n\n#include \"gcanvas.h\"\n#include \"gcolor.h\"\n#include \"gthread.h\"\n#include \"error.h\"\n#include \"filelib.h\"\n#include \"require.h\"\n\nconst int GCanvas::WIDTH_HEIGHT_MAX = 65535;\n\nint GCanvas::createArgbPixel(int alpha, int red, int green, int blue) {\n    if (alpha < 0 || alpha > 255 || red < 0 || red > 255 || green < 0 || green > 255 || blue < 0 || blue > 255) {\n        error(\"ARGB values must be between 0-255\");\n    }\n    return (alpha << 24 & 0xff000000) | (red << 16 & 0xff0000) | (green << 8 & 0x00ff00) | (blue & 0x0000ff);\n}\n\nint GCanvas::createRgbPixel(int red, int green, int blue) {\n    if (red < 0 || red > 255 || green < 0 || green > 255 || blue < 0 || blue > 255) {\n        error(\"RGB values must be between 0-255\");\n    }\n    return ((red << 16 & 0xff0000) | (green << 8 & 0x00ff00) | (blue & 0x0000ff)) & 0xffffff;\n}\n\nint GCanvas::getAlpha(int argb) {\n    // have to & a second time because of sign-extension on >> shift\n    return ((static_cast<unsigned int>(argb) & 0xff000000) >> 24) & 0x000000ff;\n}\n\nint GCanvas::getBlue(int rgb) {\n    return rgb & 0x0000ff;\n}\n\nint GCanvas::getGreen(int rgb) {\n    return (rgb & 0x00ff00) >> 8;\n}\n\nint GCanvas::getRed(int rgb) {\n    return (rgb & 0xff0000) >> 16;\n}\n\nvoid GCanvas::getRedGreenBlue(int rgb, int& red, int& green, int& blue) {\n    red = getRed(rgb);\n    green = getGreen(rgb);\n    blue = getBlue(rgb);\n}\n\n\nGCanvas::GCanvas(QWidget* parent)\n        : _backgroundImage(nullptr),\n          _filename(\"\") {\n    init(/* width */ -1, /* height */ -1, /* background */ 0xffffff, parent);\n}\n\nGCanvas::GCanvas(const std::string& filename, QWidget* parent)\n        : _backgroundImage(nullptr),\n          _filename(filename) {\n    init(/* width */ -1, /* height */ -1, /* background */ 0xffffff, parent);\n    load(filename);\n}\n\nGCanvas::GCanvas(std::istream& source, QWidget* parent)\n        : _backgroundImage(nullptr),\n          _filename(\"std::istream data\") {\n    init(/* width */ -1, /* height */ -1, /* background */ 0xffffff, parent);\n    if (!loadFromStream(source)) {\n        error(\"GCanvas::constructor: could not load image from input stream\");\n    }\n}\n\nGCanvas::GCanvas(double width, double height, int rgbBackground, QWidget* parent)\n        : _backgroundImage(nullptr),\n          _filename(\"\") {\n    init(width, height, rgbBackground, parent);\n}\n\nGCanvas::GCanvas(double width, double height, const std::string& rgbBackground, QWidget* parent)\n        : _backgroundImage(nullptr),\n          _filename(\"\") {\n    _backgroundColor = rgbBackground;\n    init(width, height,\n         GColor::hasAlpha(rgbBackground)\n                ? GColor::convertColorToARGB(rgbBackground)\n                : GColor::convertColorToRGB(rgbBackground),\n         parent);\n}\n\nvoid GCanvas::init(double width, double height, int rgbBackground, QWidget* parent) {\n    checkSize(\"GCanvas::constructor\", width, height);\n    checkColor(\"GCanvas::constructor\", rgbBackground);\n\n    GThread::runOnQtGuiThread([this, rgbBackground, parent]() {\n        _iqcanvas = new _Internal_QCanvas(this, getInternalParent(parent));\n        _gcompound.setWidget(_iqcanvas);\n        int alpha = getAlpha(rgbBackground);\n        if (GColor::hasAlpha(_backgroundColor)) {\n            // empty\n        } else if (alpha > 0 && alpha < 255) {\n            _backgroundColor = GColor::convertARGBToColor(rgbBackground);\n        } else {\n            _backgroundColor = GColor::convertRGBToColor(rgbBackground);\n        }\n        _backgroundColorInt = rgbBackground;\n    });\n\n    if (width > 0 && height > 0) {\n        setSize(width, height);\n        if (rgbBackground != 0) {\n            fill(rgbBackground);\n        }\n    }\n\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGCanvas::~GCanvas() {\n    // TODO: delete _iqcanvas;\n    _iqcanvas->detach();\n    _iqcanvas = nullptr;\n}\n\nvoid GCanvas::add(GObject* gobj) {\n    GThread::runOnQtGuiThread([this, gobj]() {\n        lockForWrite();\n        _gcompound.add(gobj);   // calls conditionalRepaint\n        unlock();\n    });\n}\n\nvoid GCanvas::add(GObject* gobj, double x, double y) {\n    GThread::runOnQtGuiThread([this, gobj, x, y]() {\n        lockForWrite();\n        _gcompound.add(gobj, x, y);   // calls conditionalRepaint\n        unlock();\n    });\n}\n\nvoid GCanvas::add(GObject& gobj) {\n    GThread::runOnQtGuiThread([this, &gobj]() {\n        lockForWrite();\n        _gcompound.add(gobj);   // calls conditionalRepaint\n        unlock();\n    });\n}\n\nvoid GCanvas::add(GObject& gobj, double x, double y) {\n    GThread::runOnQtGuiThread([this, &gobj, x, y]() {\n        lockForWrite();\n        _gcompound.add(gobj, x, y);   // calls conditionalRepaint\n        unlock();\n    });\n}\n\nvoid GCanvas::clear() {\n    clearObjects();\n    clearPixels();   // calls conditionalRepaint\n}\n\nvoid GCanvas::clearObjects() {\n    GThread::runOnQtGuiThread([this]() {\n        lockForWrite();\n        _gcompound.clear();   // calls conditionalRepaint\n        unlock();\n    });\n}\n\nvoid GCanvas::clearPixels() {\n    GThread::runOnQtGuiThread([this]() {\n        lockForWrite();\n        if (_backgroundImage) {\n            // delete _backgroundImage;\n            // _backgroundImage = nullptr;\n            // keep background image buffer but fill with background color instead\n            GThread::runOnQtGuiThread([this]() {\n                if (GColor::hasAlpha(_backgroundColor)) {\n                    _backgroundImage->fill(static_cast<unsigned int>(_backgroundColorInt));\n                } else {\n                    _backgroundImage->fill(static_cast<unsigned int>(_backgroundColorInt) | 0xff000000);\n                }\n            });\n        }\n        unlock();\n    });\n    conditionalRepaint();\n}\n\nbool GCanvas::contains(double x, double y) const {\n    lockForReadConst();\n    bool result = _gcompound.contains(x, y);\n    unlockConst();\n    return result;\n}\n\nint GCanvas::countDiffPixels(const GCanvas& image) const {\n    lockForReadConst();\n    int w1 = static_cast<int>(getWidth());\n    int h1 = static_cast<int>(getHeight());\n    int w2 = static_cast<int>(image.getWidth());\n    int h2 = static_cast<int>(image.getHeight());\n\n    int wmin = std::min(w1, w2);\n    int hmin = std::min(h1, h2);\n\n    int overlap = std::min(w1, w2) * std::min(h1, h2);\n    int diffPxCount = (w1 * h1 - overlap) + (w2 * h2 - overlap);\n\n    for (int y = 0; y < hmin; y++) {\n        for (int x = 0; x < wmin; x++) {\n            int px1 = _backgroundImage->pixel(static_cast<int>(x), static_cast<int>(y)) & 0x00ffffff;\n            int px2 = image._backgroundImage->pixel(static_cast<int>(x), static_cast<int>(y)) & 0x00ffffff;\n            if (px1 != px2) {\n                diffPxCount++;\n            }\n        }\n    }\n\n    unlockConst();\n    return diffPxCount;\n}\n\nint GCanvas::countDiffPixels(const GCanvas& image, int xmin, int ymin, int xmax, int ymax) const {\n    lockForReadConst();\n    int w1 = static_cast<int>(getWidth());\n    int h1 = static_cast<int>(getHeight());\n    int w2 = static_cast<int>(image.getWidth());\n    int h2 = static_cast<int>(image.getHeight());\n    int diffPxCount = 0;\n\n    for (int y = ymin; y < ymax; y++) {\n        for (int x = xmin; x < xmax; x++) {\n            int px1 = x < w1 && y < h1 ? (_backgroundImage->pixel(static_cast<int>(x), static_cast<int>(y)) & 0x00ffffff) : -1;\n            int px2 = x < w2 && y < h2 ? (image._backgroundImage->pixel(static_cast<int>(x), static_cast<int>(y)) & 0x00ffffff) : -1;\n            if (px1 != px2) {\n                diffPxCount++;\n            }\n        }\n    }\n\n    unlockConst();\n    return diffPxCount;\n}\n\nint GCanvas::countDiffPixels(const GCanvas* image) const {\n    require::nonNull(image, \"GCanvas::countDiffPixels\");\n    return countDiffPixels(*image);\n}\n\nint GCanvas::countDiffPixels(const GCanvas* image, int xmin, int ymin, int xmax, int ymax) const {\n    require::nonNull(image, \"GCanvas::countDiffPixels\");\n    return countDiffPixels(*image, xmin, ymin, xmax, ymax);\n}\n\nGCanvas* GCanvas::diff(const GCanvas& image, int diffPixelColor) const {\n    lockForReadConst();\n    int w1 = static_cast<int>(getWidth());\n    int h1 = static_cast<int>(getHeight());\n    int w2 = static_cast<int>(image.getWidth());\n    int h2 = static_cast<int>(image.getHeight());\n    int wmin = std::min(w1, w2);\n    int hmin = std::min(h1, h2);\n    int wmax = std::max(w1, w2);\n    int hmax = std::max(h1, h2);\n\n    Grid<int> resultGrid;\n    resultGrid.resize(hmax, wmax);\n    resultGrid.fill(diffPixelColor);\n    for (int r = 0; r < h1; r++) {\n        for (int c = 0; c < w1; c++) {\n            resultGrid[r][c] = _backgroundColorInt;\n        }\n    }\n    for (int y = 0; y < hmin; y++) {\n        for (int x = 0; x < wmin; x++) {\n            int px1 = _backgroundImage->pixel(static_cast<int>(x), static_cast<int>(y)) & 0x00ffffff;\n            int px2 = image._backgroundImage->pixel(static_cast<int>(x), static_cast<int>(y)) & 0x00ffffff;\n            if (px1 != px2) {\n                resultGrid[y][x] = diffPixelColor;\n            }\n        }\n    }\n    GCanvas* result = new GCanvas(wmax, hmax);\n    result->fromGrid(resultGrid);\n    unlockConst();\n    return result;\n}\n\nGCanvas* GCanvas::diff(const GCanvas* image, int diffPixelColor) const {\n    require::nonNull(image, \"GCanvas::diff\");\n    return diff(*image, diffPixelColor);\n}\n\nvoid GCanvas::draw(QPainter* painter) {\n    if (!painter) {\n        return;\n    }\n    // lockForRead();\n    if (_backgroundImage) {\n        painter->drawImage(/* x */ 0, /* y */ 0, *_backgroundImage);\n    }\n    _gcompound.draw(painter);   // calls conditionalRepaint\n    // unlock();\n}\n\nvoid GCanvas::draw(GObject* gobj) {\n    require::nonNull(gobj, \"GCanvas::draw\");\n    ensureBackgroundImage();\n    if (_backgroundImage && _backgroundImage->paintEngine()) {\n        GThread::runOnQtGuiThread([this, gobj]() {\n            lockForWrite();\n            if (gobj->isVisible()) {\n                QPainter painter(_backgroundImage);\n                painter.setRenderHint(QPainter::Antialiasing, GObject::isAntiAliasing());\n                painter.setRenderHint(QPainter::TextAntialiasing, GObject::isAntiAliasing());\n                gobj->draw(&painter);\n                painter.end();\n            }\n            unlock();\n        });\n        conditionalRepaintRegion(gobj->getBounds().enlargedBy((gobj->getLineWidth() + 1) / 2));\n    }\n}\n\nvoid GCanvas::ensureBackgroundImage() {\n    if (!_backgroundImage) {\n        GThread::runOnQtGuiThread([this]() {\n            lockForWrite();\n            _backgroundImage = new QImage(\n                        static_cast<int>(getWidth()),\n                        static_cast<int>(getHeight()),\n                        QImage::Format_ARGB32);\n            if (!_backgroundColor.empty()) {\n                if (GColor::hasAlpha(_backgroundColor)) {\n                    _backgroundImage->fill(static_cast<unsigned int>(_backgroundColorInt));\n                } else {\n                    _backgroundImage->fill(static_cast<unsigned int>(_backgroundColorInt) | 0xff000000);\n                }\n            }\n            unlock();\n        });\n    }\n}\n\nvoid GCanvas::ensureBackgroundImageConstHack() const {\n    if (!_backgroundImage) {\n        // Your whole life has been a lie.\n        // Also, this code is bad and I should feel bad.\n        GCanvas* hack = const_cast<GCanvas*>(this);\n        hack->ensureBackgroundImage();\n    }\n}\n\nbool GCanvas::equals(const GCanvas& other) const {\n    if (getSize() != other.getSize()) {\n        return false;\n    }\n    // TODO: compare pixels\n    return true;\n}\n\nvoid GCanvas::fill(int rgb) {\n    checkColor(\"GCanvas::fill\", rgb);\n    fillRegion(/* x */ 0,\n               /* y */ 0,\n               /* width */ getWidth(),\n               /* height */ getHeight(),\n               rgb);\n}\n\nvoid GCanvas::fill(const std::string& rgb) {\n    fill(GColor::convertColorToRGB(rgb));\n}\n\nvoid GCanvas::fillRegion(double x, double y, double width, double height, int rgb) {\n    checkBounds(\"GCanvas::fillRegion\", x, y, getWidth(), getHeight());\n    checkBounds(\"GCanvas::fillRegion\", x + width - 1, y + height - 1, getWidth(), getHeight());\n    checkColor(\"GCanvas::fillRegion\", rgb);\n    bool wasAutoRepaint = isAutoRepaint();\n    setAutoRepaint(false);\n    GThread::runOnQtGuiThread([this, x, y, width, height, rgb]() {\n        ensureBackgroundImage();\n        lockForWrite();\n        int argb = rgb | 0xff000000;\n        for (int yy = static_cast<int>(y); yy < y + height; yy++) {\n            for (int xx = static_cast<int>(x); xx < x + width; xx++) {\n                _backgroundImage->setPixel(xx, yy, static_cast<unsigned int>(argb));\n            }\n        }\n        unlock();\n    });\n    setAutoRepaint(wasAutoRepaint);\n    conditionalRepaint();\n}\n\nvoid GCanvas::fillRegion(double x, double y, double width, double height, const std::string& rgb) {\n    fillRegion(x, y, width, height, GColor::convertColorToRGB(rgb));\n}\n\nvoid GCanvas::flatten() {\n    GThread::runOnQtGuiThread([this]() {\n        ensureBackgroundImage();\n        lockForWrite();\n        QPainter painter(_backgroundImage);\n        painter.setRenderHint(QPainter::Antialiasing, GObject::isAntiAliasing());\n        painter.setRenderHint(QPainter::TextAntialiasing, GObject::isAntiAliasing());\n        _gcompound.draw(&painter);\n        painter.end();\n        _gcompound.clear();   // calls conditionalRepaint\n        unlock();\n    });\n}\n\nvoid GCanvas::fromGrid(const Grid<int>& grid) {\n    checkSize(\"GCanvas::fromGrid\", grid.numCols(), grid.numRows());\n    setSize(grid.numCols(), grid.numRows());\n\n    bool wasAutoRepaint = isAutoRepaint();\n    setAutoRepaint(false);\n\n    GThread::runOnQtGuiThread([this, &grid]() {\n        ensureBackgroundImage();\n        lockForWrite();\n        for (int row = 0, width = grid.numCols(), height = grid.numRows(); row < height; row++) {\n            for (int col = 0; col < width; col++) {\n                int argb = GColor::fixAlpha(grid[row][col]);\n                _backgroundImage->setPixel(col, row, static_cast<unsigned int>(argb));\n            }\n        }\n        unlock();\n    });\n\n    if (wasAutoRepaint) {\n        setAutoRepaint(wasAutoRepaint);\n        conditionalRepaint();\n    }\n}\n\nstd::string GCanvas::getBackground() const {\n    return GDrawingSurface::getBackground();\n}\n\nint GCanvas::getBackgroundInt() const {\n    return GDrawingSurface::getBackgroundInt();\n}\n\nGObject* GCanvas::getElement(int index) const {\n    lockForReadConst();\n    GObject* result = _gcompound.getElement(index);\n    unlockConst();\n    return result;\n}\n\nGObject* GCanvas::getElementAt(double x, double y) const {\n    lockForReadConst();\n    GObject* result = _gcompound.getElementAt(x, y);\n    unlockConst();\n    return result;\n}\n\nint GCanvas::getElementCount() const {\n    lockForReadConst();\n    int result = _gcompound.getElementCount();\n    unlockConst();\n    return result;\n}\n\nstd::string GCanvas::getFilename() const {\n    return _filename;\n}\n\nstd::string GCanvas::getFont() const {\n    return GDrawingSurface::getFont();\n}\n\n_Internal_QWidget* GCanvas::getInternalWidget() const {\n    return _iqcanvas;\n}\n\nint GCanvas::getPixel(double x, double y) const {\n    checkBounds(\"GCanvas::getPixel\", x, y, getWidth(), getHeight());\n    ensureBackgroundImageConstHack();\n    lockForReadConst();\n    int pixel = _backgroundImage->pixel(static_cast<int>(x), static_cast<int>(y)) & 0x00ffffff;\n    unlockConst();\n    return pixel;\n}\n\nint GCanvas::getPixelARGB(double x, double y) const {\n    checkBounds(\"GCanvas::getPixelARGB\", x, y, getWidth(), getHeight());\n    ensureBackgroundImageConstHack();\n    lockForReadConst();\n    int pixel = static_cast<int>(_backgroundImage->pixel(static_cast<int>(x), static_cast<int>(y)));\n    unlockConst();\n    return pixel;\n}\n\nGrid<int> GCanvas::getPixels() const {\n    ensureBackgroundImageConstHack();\n    lockForReadConst();\n    int w = static_cast<int>(getWidth());\n    int h = static_cast<int>(getHeight());\n    Grid<int> grid(h, w);\n    for (int y = 0; y < h; y++) {\n        for (int x = 0; x < w; x++) {\n            grid[y][x] = _backgroundImage->pixel(x, y) & 0x00ffffff;\n        }\n    }\n    unlockConst();\n    return grid;\n}\n\nGrid<int> GCanvas::getPixelsARGB() const {\n    ensureBackgroundImageConstHack();\n    lockForReadConst();\n    Grid<int> grid(static_cast<int>(getHeight()), static_cast<int>(getWidth()));\n    for (int y = 0; y < static_cast<int>(getHeight()); y++) {\n        for (int x = 0; x < static_cast<int>(getWidth()); x++) {\n            grid[y][x] = static_cast<int>(_backgroundImage->pixel(x, y));\n        }\n    }\n    unlockConst();\n    return grid;\n}\n\nstd::string GCanvas::getType() const {\n    return \"GCanvas\";\n}\n\nQWidget* GCanvas::getWidget() const {\n    return static_cast<QWidget*>(_iqcanvas);\n}\n\nbool GCanvas::isAutoRepaint() const {\n    return _gcompound.isAutoRepaint();\n}\n\nvoid GCanvas::load(const std::string& filename) {\n    // for efficiency, let's at least check whether the file exists\n    // and throw error immediately rather than contacting the back-end\n    if (!fileExists(filename)) {\n        error(\"GCanvas::load: file not found: \" + filename);\n    }\n\n    bool hasError = false;\n    GThread::runOnQtGuiThread([this, filename, &hasError]() {\n        ensureBackgroundImage();\n        lockForWrite();\n        if (!_backgroundImage->load(QString::fromStdString(filename))) {\n            hasError = true;\n            unlock();\n            return;\n        }\n\n        _filename = filename;\n        GInteractor::setSize(_backgroundImage->width(), _backgroundImage->height());\n        // setSize(_qimage->width(), _qimage->height());\n        unlock();\n        conditionalRepaint();\n    });\n\n    if (hasError) {\n        error(\"GCanvas::load: failed to load from \" + filename);\n    }\n}\n\nbool GCanvas::loadFromStream(std::istream& input) {\n    // buffer bytes into a std::string\n    std::ostringstream byteStream;\n    byteStream << input.rdbuf();\n    std::string bytes = byteStream.str();\n\n    bool hasError = false;\n    GThread::runOnQtGuiThread([&, this]() {\n        ensureBackgroundImage();\n        lockForWrite();\n        if (!_backgroundImage->loadFromData(reinterpret_cast<const uchar *>(bytes.data()), bytes.length())) {\n            hasError = true;\n            unlock();\n            return;\n        }\n\n        GInteractor::setSize(_backgroundImage->width(), _backgroundImage->height());\n        // setSize(_qimage->width(), _qimage->height());\n        unlock();\n        conditionalRepaint();\n    });\n\n    return !hasError;\n}\n\nvoid GCanvas::notifyOfResize(double width, double height) {\n    if (_backgroundImage) {\n        GThread::runOnQtGuiThread([this, width, height]() {\n            // make new image buffer of the new size\n            lockForWrite();\n            QImage* newImage = new QImage(\n                        static_cast<int>(width),\n                        static_cast<int>(height), QImage::Format_ARGB32);\n            if (!_backgroundColor.empty()) {\n                if (GColor::hasAlpha(_backgroundColor)) {\n                    newImage->fill(static_cast<unsigned int>(_backgroundColorInt));\n                } else {\n                    newImage->fill(static_cast<unsigned int>(_backgroundColorInt) | 0xff000000);\n                }\n            }\n\n            // draw any previous contents onto it\n            if (newImage->paintEngine()) {\n                QPainter painter(newImage);\n                painter.drawImage(0, 0, *_backgroundImage);\n            }\n\n            // TODO: delete _backgroundImage;\n            _backgroundImage = newImage;\n            unlock();\n            conditionalRepaint();\n        });\n    }\n}\n\nvoid GCanvas::remove(GObject* gobj) {\n    GThread::runOnQtGuiThread([this, gobj]() {\n        lockForWrite();\n        _gcompound.remove(gobj);\n        unlock();\n    });\n}\n\nvoid GCanvas::remove(GObject& gobj) {\n    GThread::runOnQtGuiThread([this, &gobj]() {\n        lockForWrite();\n        _gcompound.remove(gobj);\n        unlock();\n    });\n}\n\nvoid GCanvas::removeAll() {\n    GThread::runOnQtGuiThread([this]() {\n        lockForWrite();\n        _gcompound.removeAll();\n        unlock();\n    });\n}\n\nvoid GCanvas::repaint() {\n    GThread::runOnQtGuiThreadAsync([this]() {\n        lockForRead();\n        getWidget()->repaint();\n        unlock();\n        // _gcompound.repaint();   // runs on Qt GUI thread\n    });\n}\n\nvoid GCanvas::repaintRegion(int x, int y, int width, int height) {\n    GThread::runOnQtGuiThreadAsync([this, x, y, width, height]() {\n        lockForRead();\n        getWidget()->repaint(x, y, width, height);\n        unlock();\n    });\n}\n\nvoid GCanvas::resize(double width, double height, bool /* retain */) {\n    checkSize(\"GCanvas::resize\", width, height);\n\n    // TODO\n    setSize(width, height);\n\n    conditionalRepaint();\n}\n\nvoid GCanvas::save(const std::string& filename) {\n    GThread::runOnQtGuiThread([this, filename]() {\n        ensureBackgroundImage();\n        lockForRead();\n        if (!_gcompound.isEmpty()) {\n            // flatten image in a copy object, then save\n            QImage imageCopy = this->_backgroundImage->copy(\n                        0, 0,\n                        static_cast<int>(getWidth()), static_cast<int>(getHeight()));\n            QPainter painter(&imageCopy);\n            painter.setRenderHint(QPainter::Antialiasing, GObject::isAntiAliasing());\n            painter.setRenderHint(QPainter::TextAntialiasing, GObject::isAntiAliasing());\n            _gcompound.draw(&painter);\n            painter.end();\n            bool result = imageCopy.save(QString::fromStdString(filename));\n            unlock();\n            if (!result) {\n                error(\"GCanvas::save: failed to save to \" + filename);\n            }\n        } else {\n            // save it myself\n            bool result = _backgroundImage->save(QString::fromStdString(filename));\n            unlock();\n            if (!result) {\n                error(\"GCanvas::save: failed to save to \" + filename);\n            }\n        }\n    });\n    _filename = filename;\n}\n\nvoid GCanvas::setAutoRepaint(bool autoRepaint) {\n    GThread::runOnQtGuiThread([this, autoRepaint]() {\n        lockForWrite();\n        _gcompound.setAutoRepaint(autoRepaint);\n        unlock();\n    });\n}\n\nvoid GCanvas::setBackground(int color) {\n    GDrawingSurface::setBackground(color);\n    GInteractor::setBackground(color);\n    if (_backgroundImage) {\n        // Slightly confusing semantics here;\n        // if you draw some shapes on a canvas (with draw() variants) and then set its background,\n        // the shapes will get wiped out.\n        // The lesson is, set the background first before drawing stuff.\n        // Or add your shapes using add() rather than draw() so they sit atop the background.\n        GThread::runOnQtGuiThread([this, color]() {\n            lockForWrite();\n            _backgroundImage->fill(static_cast<unsigned int>(color));\n            unlock();\n        });\n        conditionalRepaint();\n    }\n}\n\nvoid GCanvas::setBackground(const std::string& color) {\n    setBackground(GColor::convertColorToRGB(color));\n}\n\nvoid GCanvas::setColor(int color) {\n    GDrawingSurface::setColor(color);\n}\n\nvoid GCanvas::setColor(const std::string& color) {\n    setColor(GColor::convertColorToRGB(color));\n}\n\nvoid GCanvas::setFont(const QFont& font) {\n    GDrawingSurface::setFont(font);\n}\n\nvoid GCanvas::setFont(const std::string& font) {\n    GDrawingSurface::setFont(font);\n}\n\nvoid GCanvas::setForeground(int color) {\n    GDrawingSurface::setForeground(color);\n}\n\nvoid GCanvas::setForeground(const std::string& color) {\n    setForeground(GColor::convertColorToRGB(color));\n}\n\nvoid GCanvas::setKeyListener(GEventListener func) {\n    GThread::runOnQtGuiThread([this]() {\n        lockForWrite();\n        _iqcanvas->setFocusPolicy(Qt::StrongFocus);\n        unlock();\n    });\n    GInteractor::setKeyListener(func);   // call super\n}\n\nvoid GCanvas::setKeyListener(GEventListenerVoid func) {\n    GThread::runOnQtGuiThread([this]() {\n        lockForWrite();\n        _iqcanvas->setFocusPolicy(Qt::StrongFocus);\n        unlock();\n    });\n    GInteractor::setKeyListener(func);   // call super\n}\n\nvoid GCanvas::setPixel(double x, double y, int rgb) {\n    require::inRange2D(x, y, getWidth(), getHeight(), \"GCanvas::setPixel\", \"x\", \"y\");\n    checkColor(\"GCanvas::setPixel\", rgb);\n    GThread::runOnQtGuiThread([this, x, y, rgb]() {\n        ensureBackgroundImage();\n        lockForWrite();\n        int argb = GColor::fixAlpha(rgb);\n        _backgroundImage->setPixel(\n                static_cast<int>(x),\n                static_cast<int>(y),\n                static_cast<unsigned int>(argb));\n        unlock();\n        conditionalRepaintRegion(\n                static_cast<int>(x),\n                static_cast<int>(y),\n                /* width */ 1,\n                /* height */ 1);\n    });\n}\n\nvoid GCanvas::setPixel(double x, double y, int r, int g, int b) {\n    int rgb = GColor::convertRGBToRGB(r, g, b);\n    int argb = rgb | 0xff000000;\n    setPixel(x, y, argb);\n}\n\nvoid GCanvas::setPixelARGB(double x, double y, int argb) {\n    require::inRange2D(x, y, getWidth(), getHeight(), \"GCanvas::setPixelARGB\", \"x\", \"y\");\n    checkColor(\"GCanvas::setPixel\", argb);\n    GThread::runOnQtGuiThread([this, x, y, argb]() {\n        ensureBackgroundImage();\n        lockForWrite();\n        _backgroundImage->setPixel((int) x, (int) y, argb);\n        unlock();\n        conditionalRepaintRegion((int) x, (int) y, /* width */ 1, /* height */ 1);\n    });\n}\n\nvoid GCanvas::setPixelARGB(double x, double y, int a, int r, int g, int b) {\n    setPixelARGB(x, y, GColor::convertARGBToARGB(a, r, g, b));\n}\n\nvoid GCanvas::setPixels(const Grid<int>& pixels) {\n    // TODO: is this redundant with fromGrid?\n    ensureBackgroundImage();\n    if (pixels.numCols() != (int) getWidth() || pixels.numRows() != (int) getHeight()) {\n        // TODO\n        // resize(pixels.width(), pixels.height());\n        error(\"GCanvas::setPixels: wrong size\");\n    }\n    GThread::runOnQtGuiThread([this, &pixels]() {\n        lockForWrite();\n        for (int y = 0, w = pixels.numCols(), h = pixels.numRows(); y < h; y++) {\n            for (int x = 0; x < w; x++) {\n                int argb = pixels[y][x] | 0xff000000;\n                _backgroundImage->setPixel(x, y, static_cast<unsigned int>(argb));\n            }\n        }\n        unlock();\n        conditionalRepaint();\n    });\n}\n\nvoid GCanvas::setPixelsARGB(const Grid<int>& pixels) {\n    ensureBackgroundImage();\n    if (pixels.numCols() != (int) getWidth() || pixels.numRows() != (int) getHeight()) {\n        // TODO\n        // resize(pixels.width(), pixels.height());\n        error(\"GCanvas::setPixels: wrong size\");\n    }\n\n    GThread::runOnQtGuiThread([this, &pixels]() {\n        lockForWrite();\n        for (int y = 0; y < pixels.numRows(); y++) {\n            for (int x = 0; x < pixels.numCols(); x++) {\n                _backgroundImage->setPixel(x, y, pixels[y][x]);\n            }\n        }\n        unlock();\n        conditionalRepaint();\n    });\n}\n\nGImage* GCanvas::toGImage() const {\n    ensureBackgroundImageConstHack();\n    lockForReadConst();\n    GImage* image = new GImage(_backgroundImage);\n    unlockConst();\n    return image;\n\n//    GCanvas* that = const_cast<GCanvas*>(this);\n//    QImage* backgroundImage = _backgroundImage;\n//    GImage* gimage = nullptr;\n//    GThread::runOnQtGuiThread([that, backgroundImage, &gimage]() {\n//        QImage* copy = new QImage((int) that->getWidth(), (int) that->getHeight(), QImage::Format_ARGB32);\n//        *copy = backgroundImage->copy();\n//        QPainter painter(copy);\n//        painter.setRenderHint(QPainter::Antialiasing, GObject::isAntiAliasing());\n//        painter.setRenderHint(QPainter::TextAntialiasing, GObject::isAntiAliasing());\n//        that->_gcompound.draw(&painter);\n//        painter.end();\n\n//        gimage = new GImage(copy);\n//    });\n//    return gimage;\n}\n\nGrid<int> GCanvas::toGrid() const {\n    Grid<int> grid;\n    toGrid(grid);\n    return grid;\n}\n\nvoid GCanvas::toGrid(Grid<int>& grid) const {\n    grid.resize(getHeight(), getWidth());\n    lockForReadConst();\n    for (int row = 0, width = (int) getWidth(), height = (int) getHeight(); row < height; row++) {\n        for (int col = 0; col < width; col++) {\n            grid[row][col] = _backgroundImage->pixel(col, row);\n        }\n    }\n    unlockConst();\n}\n\n\n_Internal_QCanvas::_Internal_QCanvas(GCanvas* gcanvas, QWidget* parent)\n        : QWidget(parent),\n          _gcanvas(gcanvas) {\n    require::nonNull(gcanvas, \"_Internal_QCanvas::constructor\");\n    setObjectName(QString::fromStdString(\"_Internal_QCanvas_\" + std::to_string(gcanvas->getID())));\n\n    // set default white background color\n//    QPalette pal = palette();\n//    pal.setColor(QPalette::Background, Qt::white);\n//    setAutoFillBackground(true);\n//    setPalette(pal);\n    setMouseTracking(true);   // causes mouse move events to occur\n}\n\nvoid _Internal_QCanvas::detach() {\n    _gcanvas = nullptr;\n}\n\nvoid _Internal_QCanvas::enterEvent(ParameterToEnterEvent* event) {\n    QWidget::enterEvent(event);   // call super\n    if (!_gcanvas || !_gcanvas->isAcceptingEvent(\"mouseenter\")) {\n        return;\n    }\n    _gcanvas->fireGEvent(event, MOUSE_ENTERED, \"mouseenter\");\n}\n\nvoid _Internal_QCanvas::keyPressEvent(QKeyEvent* event) {\n    QWidget::keyPressEvent(event);   // call super\n    if (!_gcanvas || !_gcanvas->isAcceptingEvent(\"keypress\")) {\n        return;\n    }\n    _gcanvas->fireGEvent(event, KEY_PRESSED, \"keypress\");\n}\n\nvoid _Internal_QCanvas::keyReleaseEvent(QKeyEvent* event) {\n    QWidget::keyReleaseEvent(event);   // call super\n    if (!_gcanvas) {\n        return;\n    }\n\n    if (_gcanvas->isAcceptingEvent(\"keyrelease\")) {\n        _gcanvas->fireGEvent(event, KEY_RELEASED, \"keyrelease\");\n    }\n    if (_gcanvas->isAcceptingEvent(\"keytype\")) {\n        _gcanvas->fireGEvent(event, KEY_TYPED, \"keytype\");\n    }\n}\n\nvoid _Internal_QCanvas::leaveEvent(QEvent* event) {\n    QWidget::leaveEvent(event);   // call super\n    if (!_gcanvas || !_gcanvas->isAcceptingEvent(\"mouseexit\")) {\n        return;\n    }\n    _gcanvas->fireGEvent(event, MOUSE_EXITED, \"mouseexit\");\n}\n\nvoid _Internal_QCanvas::mouseDoubleClickEvent(QMouseEvent* event) {\n    QWidget::mouseDoubleClickEvent(event);   // call super\n    emit doubleClicked();\n    if (!_gcanvas || !_gcanvas->isAcceptingEvent(\"doubleclick\")) {\n        return;\n    }\n    GEvent mouseEvent(\n                /* class  */ MOUSE_EVENT,\n                /* type   */ MOUSE_DOUBLE_CLICKED,\n                /* name   */ \"doubleclick\",\n                /* source */ _gcanvas);\n    mouseEvent.setActionCommand(_gcanvas->getActionCommand());\n    mouseEvent.setButton((int) event->button());\n    mouseEvent.setX(event->pos().x());\n    mouseEvent.setY(event->pos().y());\n    _gcanvas->fireEvent(mouseEvent);\n}\n\nvoid _Internal_QCanvas::mouseMoveEvent(QMouseEvent* event) {\n    QWidget::mouseMoveEvent(event);   // call super\n    if (!_gcanvas) {\n        return;\n    }\n    if (!_gcanvas->isAcceptingEvent(\"mousemove\")\n            && !_gcanvas->isAcceptingEvent(\"mousedrag\")) {\n        return;\n    }\n    _gcanvas->fireGEvent(event, MOUSE_MOVED, \"mousemove\");\n    if (event->buttons() != 0) {\n        // mouse drag\n        _gcanvas->fireGEvent(event, MOUSE_DRAGGED, \"mousedrag\");\n    }\n}\n\nvoid _Internal_QCanvas::mousePressEvent(QMouseEvent* event) {\n    QWidget::mousePressEvent(event);   // call super\n    if (!_gcanvas || !_gcanvas->isAcceptingEvent(\"mousepress\")) {\n        return;\n    }\n    _gcanvas->fireGEvent(event, MOUSE_PRESSED, \"mousepress\");\n}\n\nvoid _Internal_QCanvas::mouseReleaseEvent(QMouseEvent* event) {\n    QWidget::mouseReleaseEvent(event);   // call super\n    if (!_gcanvas) {\n        return;\n    }\n    if (_gcanvas->isAcceptingEvent(\"mouserelease\")) {\n        _gcanvas->fireGEvent(event, MOUSE_RELEASED, \"mouserelease\");\n    }\n\n    if (_gcanvas->isAcceptingEvent(\"click\")) {\n        _gcanvas->fireGEvent(event, MOUSE_CLICKED, \"click\");\n    }\n}\n\nvoid _Internal_QCanvas::paintEvent(QPaintEvent* event) {\n    QWidget::paintEvent(event);   // call super\n    if (!_gcanvas) {\n        return;\n    }\n\n    QPainter painter(this);\n    // g.setCompositionMode(QPainter::CompositionMode_DestinationOver);\n    // g.setRenderHints(QPainter::HighQualityAntialiasing);\n    painter.setRenderHint(QPainter::Antialiasing, GObject::isAntiAliasing());\n    painter.setRenderHint(QPainter::TextAntialiasing, GObject::isAntiAliasing());\n    _gcanvas->draw(&painter);\n    painter.end();\n}\n\nvoid _Internal_QCanvas::resizeEvent(QResizeEvent* event) {\n    QWidget::resizeEvent(event);   // call super\n    if (!_gcanvas) {\n        return;\n    }\n    QSize size = event->size();\n    _gcanvas->notifyOfResize(size.width(), size.height());\n}\n\nvoid _Internal_QCanvas::setCanvasSize(double width, double height) {\n    QWidget::setMinimumSize(QSize((int) width, (int) height));\n}\n\nQSize _Internal_QCanvas::sizeHint() const {\n    if (hasPreferredSize()) {\n        return getPreferredSize();\n    } else {\n        return QWidget::sizeHint();\n    }\n}\n\nvoid _Internal_QCanvas::wheelEvent(QWheelEvent* event) {\n    QWidget::wheelEvent(event);   // call super\n    if (!_gcanvas) {\n        return;\n    }\n    QPoint delta = event->angleDelta();\n    if (delta.y() < 0) {\n        // scroll down\n        if (_gcanvas->isAcceptingEvent(\"mousewheeldown\")) {\n            _gcanvas->fireGEvent(event, MOUSE_WHEEL_DOWN, \"mousewheeldown\");\n        }\n    } else if (delta.y() > 0) {\n        // scroll up\n        if (_gcanvas->isAcceptingEvent(\"mousewheelup\")) {\n            _gcanvas->fireGEvent(event, MOUSE_WHEEL_UP, \"mousewheelup\");\n        }\n    }\n}\n\n\n"
  },
  {
    "path": "Library/graphics/gcanvas.h",
    "content": "/*\n * File: gcanvas.h\n * ---------------\n *\n * @author Marty Stepp\n * @version 2019/05/01\n * - added createArgbPixel\n * - bug fixes related to save / setPixels with alpha transparency\n * @version 2019/03/07\n * - added support for loading canvas directly from istream (htiek)\n * @version 2018/09/10\n * - added doc comments for new documentation generation\n * @version 2018/09/04\n * - added double-click event support\n * @version 2018/08/23\n * - renamed to gcanvas.h to replace Java version\n * @version 2018/06/30\n * - initial version\n */\n\n\n#ifndef _gcanvas_h\n#define _gcanvas_h\n\n#include <string>\n#include <QtEvents>\n#include <QPainter>\n\n#include \"gdrawingsurface.h\"\n#include \"gevent.h\"\n#include \"ginteractor.h\"\n#include \"gobjects.h\"\n\n// default color used to highlight pixels that do not match between two images\n#define GCANVAS_DEFAULT_DIFF_PIXEL_COLOR 0xdd00dd\n\nclass _Internal_QCanvas;\n\n/**\n * A GCanvas is a graphical drawing surface on which you can draw shapes, lines,\n * and colors, as well as setting the RGB color values of individual pixels.\n *\n * The graphical canvas consists of two layers:\n *\n * 1) The background layer provides a surface for drawing static pictures that\n * involve no animation, or for 2D pixel-based drawing algorithms.\n * The class includes several drawXxx and fillXxx methods that draw\n * lines, rectangles, and ovals on the background layer.\n *\n * The setPixel and setPixels methods manipulate the color of pixels in the\n * background layer.  You can get all of the pixels as a Grid using getPixels,\n * modify the grid, then pass it back in using setPixels, to perform 2D\n * pixel-based manipulations on the canvas.\n *\n * 2) The foreground layer provides an abstraction for adding stateful shapes and\n * graphical objects onto the canvas.  The add() methods that accept GObject\n * parameters place these objects onto the foreground layer.  The advantage of\n * the foreground layer is that you can manipulate the object over time, such as\n * moving it, changing its color, size, or other properties, and see these\n * changes immediately on the screen.  This makes the foreground layer most\n * appropriate for animations or moving sprites.\n *\n * A GCanvas is implicitly added to the center of every GWindow when the client\n * calls the window's add(), drawXxx/fillXxx, or other methods.  In most cases\n * the window just forwards these method calls to its internal GCanvas, which\n * performs the bulk of the work.\n *\n * See gobjects.h for more detail about drawing shapes and objects.\n */\nclass GCanvas : public virtual GInteractor, public virtual GDrawingSurface {\npublic:\n    /**\n     * Largest value that an image's width and/or height can have.\n     * Error will be thrown if you try to make/resize an image larger than this.\n     */\n    static const int WIDTH_HEIGHT_MAX;\n\n    /**\n     * Creates a single ARGB integer from the given A-R-G-B components from 0-255.\n     * @throw ErrorException if alpha, red, green, or blue is not between 0-255 inclusive\n     */\n    static int createArgbPixel(int alpha, int red, int green, int blue);\n\n    /**\n     * Creates a single RGB integer from the given R-G-B components from 0-255.\n     * @throw ErrorException if red, green, or blue is not between 0-255 inclusive\n     */\n    static int createRgbPixel(int red, int green, int blue);\n\n    /**\n     * Extracts the alpha component from 0-255 of the given ARGB integer.\n     * The alpha component comes from bits 24-31 (most significant) of the integer.\n     */\n    static int getAlpha(int argb);\n\n    /**\n     * Extracts the blue component from 0-255 of the given RGB integer.\n     * The blue component comes from bits 0-7 (least significant) of the integer.\n     */\n    static int getBlue(int rgb);\n\n    /**\n     * Extracts the green component from 0-255 of the given RGB integer.\n     * The green component comes from bits 8-15 of the integer.\n     */\n    static int getGreen(int rgb);\n\n    /**\n     * Extracts the red component from 0-255 of the given RGB integer.\n     * The red component comes from bits 16-23 of the integer.\n     */\n    static int getRed(int rgb);\n\n    /**\n     * Extracts the red, green, and blue components from 0-255\n     * of the given RGB integer, filling by reference.\n     */\n    static void getRedGreenBlue(int rgb, int& red, int& green, int& blue);\n\n    /**\n     * Creates an empty canvas with a default size of 0x0 pixels\n     * and a default background and foreground color of black.\n     */\n    GCanvas(QWidget* parent = nullptr);\n\n    /**\n     * Creates a canvas that loads its background layer pixel data from\n     * the given image file name.\n     * @throw ErrorException if the given file does not exist or cannot be read\n     *        as a valid image file\n     */\n    GCanvas(const std::string& filename, QWidget* parent = nullptr);\n\n    /**\n     * Creates a canvas that loads its background layer pixel data from\n     * the given input stream\n     * @throw ErrorException if the given stream cannot be read as a valid image file\n     */\n    GCanvas(std::istream& filename, QWidget* parent = nullptr);\n\n    /**\n     * Creates an empty canvas of the specified size and optional background color.\n     * If no background color is passed, a default transparent background is used.\n     * @throw ErrorException if the given width/height ranges are negative\n     * @throw ErrorException if the given rgb value is invalid or out of range\n     */\n    GCanvas(double width, double height, int rgbBackground, QWidget* parent = nullptr);\n\n    /**\n     * Creates an empty canvas of the specified size and background color.\n     * If no background color is passed, a default transparent background is used.\n     * @throw ErrorException if the given width/height ranges are negative\n     * @throw ErrorException if the given rgb value is invalid or out of range\n     */\n    GCanvas(double width, double height, const std::string& rgbBackground = \"#00000000\", QWidget* parent = nullptr);\n\n    /**\n     * Frees memory allocated internally by the canvas.\n     */\n    ~GCanvas() override;\n\n    /**\n     * Adds the given interactor to canvas.\n     * @throw ErrorException if the interactor is null\n     */\n    virtual void add(GObject* gobj);\n\n    /**\n     * Adds the given interactor to the canvas\n     * and moves it to the given x/y location.\n     * @throw ErrorException if the interactor is null\n     */\n    virtual void add(GObject* gobj, double x, double y);\n\n    /**\n     * Adds the given interactor to canvas.\n     */\n    virtual void add(GObject& gobj);\n\n    /**\n     * Adds the given interactor to the canvas\n     * and moves it to the given x/y location.\n     */\n    virtual void add(GObject& gobj, double x, double y);\n\n    /**\n     * Removes all graphical objects from the canvas foreground layer\n     * and wipes the background layer to show the current background color.\n     */\n    void clear() override;\n\n    /**\n     * Removes all graphical objects from the foreground layer of the canvas.\n     * This means that any shapes added using the add() methods, such as GRect,\n     * GOval, etc. will be removed, while any shapes drawn directly onto the\n     * canvas's background pixel layer by calling the drawXxx() methods will be\n     * retained.  To clear the background layer as well, call clearPixels\n     * or clear instead.\n     */\n    virtual void clearObjects();\n\n    /**\n     * Resets the background layer of pixels in the canvas to the current\n     * background color.\n     * This means that any shapes added using the add() methods, such as GRect,\n     * GOval, etc. will remain, while any shapes drawn directly onto the\n     * canvas's background pixel layer by calling the drawXxx() methods will be\n     * wiped out.  To clear the shapes added to the foreground layer as well,\n     * call clearObjects or clear instead.\n     */\n    virtual void clearPixels();\n\n    /**\n     * Returns true if any of the graphical objects in the foreground layer of\n     * the canvas touch the given x/y pixel.\n     */\n    virtual bool contains(double x, double y) const;\n\n    /**\n     * Returns the total number of pixels that are not the same color\n     * between this image and the given other image.\n     * If the images are not the same size, any pixels in the range of one image\n     * but out of the bounds of the other are considered to be differing.\n     * In this version of the method, the entire images are compared.\n     */\n    virtual int countDiffPixels(const GCanvas& image) const;\n\n    /**\n     * Returns the total number of pixels that are not the same color\n     * between this image and the given other image.\n     * If the images are not the same size, any pixels in the range of one image\n     * but out of the bounds of the other are considered to be differing.\n     * In this version of the method, you pass an (x,y) range of pixels to compare.\n     */\n    virtual int countDiffPixels(const GCanvas& image, int xmin, int ymin, int xmax, int ymax) const;\n\n    /**\n     * Returns the total number of pixels that are not the same color\n     * between this image and the given other image.\n     * If the images are not the same size, any pixels in the range of one image\n     * but out of the bounds of the other are considered to be differing.\n     * In this version of the method, the entire images are compared.\n     * @throw ErrorException if the image passed is null\n     */\n    virtual int countDiffPixels(const GCanvas* image) const;\n\n    /**\n     * Returns the total number of pixels that are not the same color\n     * between this image and the given other image.\n     * If the images are not the same size, any pixels in the range of one image\n     * but out of the bounds of the other are considered to be differing.\n     * In this version of the method, you pass an (x,y) range of pixels to compare.\n     * @throw ErrorException if the image passed is null\n     */\n    virtual int countDiffPixels(const GCanvas* image, int xmin, int ymin, int xmax, int ymax) const;\n\n    /**\n     * Generates a new canvas whose content is equal to that of this canvas but with\n     * any pixels that don't match those in parameter 'image' colored in the given\n     * color (default purple) to highlight differences between the two.\n     */\n    virtual GCanvas* diff(const GCanvas& image, int diffPixelColor = GCANVAS_DEFAULT_DIFF_PIXEL_COLOR) const;\n\n    /**\n     * Generates a new canvas whose content is equal to that of this canvas but with\n     * any pixels that don't match those in parameter 'image' colored in the given\n     * color (default purple) to highlight differences between the two.\n     * @throw ErrorException if the image passed is null\n     */\n    virtual GCanvas* diff(const GCanvas* image, int diffPixelColor = GCANVAS_DEFAULT_DIFF_PIXEL_COLOR) const;\n\n    /**\n     * Draws the given graphical object onto the background layer of the canvas.\n     * Note that since it is drawn on the background layer, future changes to\n     * the graphical object, such as setting its location, color, size, etc.,\n     * will not be reflected immediately on this canvas.\n     * If you do want such changes to be reflected, instead add the shape to\n     * the foreground layer using add().\n     * @throw ErrorException if the object passed is null\n     */\n    void draw(GObject* gobj) override;\n\n    /**\n     * @inherit\n     * @private\n     */\n    void draw(QPainter* painter) override;\n\n    /**\n     * Returns true if the two given canvases contain exactly the same pixel data.\n     */\n    virtual bool equals(const GCanvas& other) const;\n\n    /**\n     * Sets the color of every pixel in the canvas to the given color value.\n     * See gcolor.h for more detail about colors.\n     * @throw ErrorException if the given rgb value is not a valid color\n     */\n    virtual void fill(int rgb);\n\n    /**\n     * Sets the color of every pixel in the canvas to the given color value.\n     * See gcolor.h for more detail about colors.\n     */\n    virtual void fill(const std::string& rgb);\n\n    /**\n     * Sets the color of every pixel in the given rectangular range of the canvas\n     * pixel data to the given color value.\n     * Specifically, the pixels in the rectangular range (x, y) through\n     * (x + width - 1, y + height - 1) become filled with the given color.\n     * @throw ErrorException if the given x/y/width/height range goes outside\n     *        the bounds of the image,\n     *        or if the given rgb value is not a valid color\n     */\n    virtual void fillRegion(double x, double y, double width, double height, int rgb);\n\n    /**\n     * Sets the color of every pixel in the given rectangular range of the canvas\n     * pixel data to the given color value.\n     * Specifically, the pixels in the rectangular range (x, y) through\n     * (x + width - 1, y + height - 1) become filled with the given color.\n     * @throw ErrorException if the given x/y/width/height range goes outside\n     *        the bounds of the image\n     */\n    virtual void fillRegion(double x, double y, double width, double height,\n                            const std::string& rgb);\n\n    /**\n     * Moves all graphical objects from the foreground layer to the background\n     * layer.  This means that future changes to those objects will not be\n     * seen on the canvas.\n     */\n    virtual void flatten();\n\n    /**\n     * Replaces the entire contents of the background layer of the canvas with\n     * the contents of the given grid of RGB pixel values.\n     * If this image is not the same size as the grid, the image is resized.\n     * Any previous background layer contents are lost.\n     * Equivalent to getPixels.\n     */\n    virtual void fromGrid(const Grid<int>& grid);\n\n    /* @inherit */\n    std::string getBackground() const override;\n\n    /* @inherit */\n    int getBackgroundInt() const override;\n\n    /**\n     * Returns a pointer to the graphical object in the foreground layer of\n     * the canvas at the specified index, numbering from back to front in the\n     * <i>z</i> dimension.\n     * @throw ErrorException if the index is out of range\n     */\n    virtual GObject* getElement(int index) const;\n\n    /**\n     * Returns a pointer to the first graphical object in the foreground layer of\n     * the canvas that contains the given (x, y) point, or a null pointer if no\n     * object in this canvas touches it.\n     */\n    virtual GObject* getElementAt(double x, double y) const;\n\n    /**\n     * Returns the number of graphical objects stored in the foreground layer\n     * of the canvas.\n     */\n    virtual int getElementCount() const;\n\n    /**\n     * Returns the name of the image file from which this canvas was loaded or\n     * to which it was saved most recently.\n     * If this canvas was not associated with any file, returns \"\".\n     */\n    virtual std::string getFilename() const;\n\n    /* @inherit */\n    std::string getFont() const override;\n\n    /* @inherit */\n    _Internal_QWidget* getInternalWidget() const override;\n\n    /**\n     * Returns the color of the pixel at the given x/y coordinates of the\n     * background layer of the canvas as an integer such as 0xff00cc.\n     *\n     * Note that if you are planning to set many pixels in the background and\n     * want maximum performance, you should instead call getPixels to extract\n     * all pixels into a Grid, then manipulate all desired pixels in that Grid,\n     * then call setPixels to submit all of your changes.\n     *\n     * @throw ErrorException if the given x/y values are out of bounds.\n     */\n    int getPixel(double x, double y) const override;\n\n    /**\n     * Returns the color of the pixel at the given x/y coordinates of the\n     * background layer of the canvas as an integer such as 0xffff00cc.\n     * This differs from getPixel in that it explicitly retains and returns\n     * the alpha channel of the pixel in the top 8 bits, allowing for\n     * transparency effects.\n     *\n     * Note that if you are planning to set many pixels in the background and\n     * want maximum performance, you should instead call getPixels to extract\n     * all pixels into a Grid, then manipulate all desired pixels in that Grid,\n     * then call setPixels to submit all of your changes.\n     *\n     * @throw ErrorException if the given x/y values are out of bounds.\n     */\n    int getPixelARGB(double x, double y) const override;\n\n    /**\n     * Returns all pixels of the background layer of the canvas as a Grid,\n     * where rows represent y values and columns represent x values.\n     * So for example, grid[y][x] returns the RGB int value at that pixel.\n     * Equivalent to toGrid.\n     */\n    Grid<int> getPixels() const override;\n\n    /**\n     * Returns all pixels of the background layer of the canvas as a Grid,\n     * where rows represent y values and columns represent x values.\n     * This differs from getPixels in that it explicitly retains and returns\n     * the alpha channel of each pixel in the top 8 bits, allowing for\n     * transparency effects.\n     */\n    Grid<int> getPixelsARGB() const override;\n\n    /* @inherit */\n    std::string getType() const override;\n\n    /* @inherit */\n    QWidget* getWidget() const override;\n\n    /* @inherit */\n    bool isAutoRepaint() const override;\n\n    /**\n     * Reads the canvas's pixel contents from the given image file.\n     * @throw ErrorException if the given file does not exist or cannot be read\n     *        as a valid image file\n     */\n    virtual void load(const std::string& filename);\n\n    /**\n     * Reads the canvas's pixel contents from the given input stream.\n     * @throw ErrorException if the given file does not exist or cannot be read\n     *        as a valid image file\n     */\n\n    /**\n     * Removes the given graphical object from the foreground layer of the canvas,\n     * if it was present.\n     * @throw ErrorException if the graphical object is null\n     */\n    virtual void remove(GObject* gobj);\n\n    /**\n     * Removes the given graphical object from the foreground layer of the canvas,\n     * if it was present.\n     */\n    virtual void remove(GObject& gobj);\n\n    /**\n     * Removes all graphical objects from the foreground layer of the canvas.\n     */\n    virtual void removeAll();\n\n    /**\n     * Instructs the canvas to redraw its layers.\n     * By default the canvas will automatically repaint itself whenever you make\n     * a change to either the background or foreground layer.\n     * But if you call setAutoRepaint(false), you must manually repaint the canvas\n     * to see any changes. This can be desirable if you plan to make a large batch\n     * of changes and want to repaint only after all of them are done.\n     */\n    void repaint() override;\n\n    /**\n     * Instructs the canvas to redraw the given region of pixels within both\n     * of its layers.\n     */\n    void repaintRegion(int x, int y, int width, int height) override;\n\n    /**\n     * Changes this image's bounds to be the given size.\n     * This does not scale the image but rather just changes the max x/y that\n     * can be painted onto this image.\n     * If the 'retain' parameter is not passed or is set to true,\n     * any existing pixel values will be kept during the resize.\n     * If 'retain' is false, the contents will be wiped and set to the default.\n     * Any existing pixel contents are discarded and revert to defaults.\n     * @throw ErrorException if the given width/height ranges are negative\n     */\n    void resize(double width, double height, bool retain = true);\n\n    /**\n     * Saves the canvas's contents to the given image file.\n     * @throw ErrorException if the given file is not writeable.\n     */\n    virtual void save(const std::string& filename);\n\n    /**\n     * Sets whether the canvas will automatically repaint itself whenever you make\n     * a change to either the background or foreground layer.\n     * By default this is true.\n     * But if you call setAutoRepaint(false), you must manually repaint the canvas\n     * to see any changes. This can be desirable if you plan to make a large batch\n     * of changes and want to repaint only after all of them are done.\n     */\n    void setAutoRepaint(bool autoRepaint) override;\n\n    /* @inherit */\n    void setBackground(int color) override;\n\n    /* @inherit */\n    void setBackground(const std::string& color) override;\n\n    /* @inherit */\n    void setColor(int color) override;\n\n    /* @inherit */\n    void setColor(const std::string& color) override;\n\n    /* @inherit */\n    void setFont(const QFont& font) override;\n\n    /* @inherit */\n    void setFont(const std::string& font) override;\n\n    /* @inherit */\n    void setForeground(int rgb) override;\n\n    /* @inherit */\n    void setForeground(const std::string& color) override;\n\n    /**\n     * Sets a key listener on this canvas so that it will be called\n     * when any key is pressed or released on the canvas.\n     * Any existing key listener will be replaced.\n     */\n    void setKeyListener(GEventListener func) override;\n\n    /**\n     * Sets a key listener on this canvas so that it will be called\n     * when any key is pressed or released on the canvas.\n     * Any existing key listener will be replaced.\n     */\n    void setKeyListener(GEventListenerVoid func) override;\n\n    /**\n     * Sets the color of the given x/y pixel in the background layer of the\n     * canvas to the given RGB value.\n     *\n     * Note that if you are planning to set many pixels in the background and\n     * want maximum performance, you should instead call getPixels to extract\n     * all pixels into a Grid, then manipulate all desired pixels in that Grid,\n     * then call setPixels to submit all of your changes.\n     *\n     * @throw ErrorException if x/y is out of range or rgb is an invalid color\n     */\n    void setPixel(double x, double y, int rgb) override;\n\n    /**\n     * Sets the color of the given x/y pixel in the background layer of the\n     * canvas to the given RGB values.\n     *\n     * Note that if you are planning to set many pixels in the background and\n     * want maximum performance, you should instead call getPixels to extract\n     * all pixels into a Grid, then manipulate all desired pixels in that Grid,\n     * then call setPixels to submit all of your changes.\n     *\n     * @throw ErrorException if x/y is out of range or r,g,b are not between 0-255\n     */\n    void setPixel(double x, double y, int r, int g, int b) override;\n\n    /**\n     * Sets the color of the given x/y pixel in the background layer of the\n     * canvas to the given ARGB value.\n     *\n     * Note that if you are planning to set many pixels in the background and\n     * want maximum performance, you should instead call getPixelsARGB to extract\n     * all pixels into a Grid, then manipulate all desired pixels in that Grid,\n     * then call setPixelsARGB to submit all of your changes.\n     *\n     * @throw ErrorException if x/y is out of range or argb is an invalid color\n     */\n    void setPixelARGB(double x, double y, int argb) override;\n\n    /**\n     * Sets the color of the given x/y pixel in the background layer of the\n     * canvas to the given ARGB values.\n     *\n     * Note that if you are planning to set many pixels in the background and\n     * want maximum performance, you should instead call getPixelsARGB to extract\n     * all pixels into a Grid, then manipulate all desired pixels in that Grid,\n     * then call setPixelsARGB to submit all of your changes.\n     *\n     * @throw ErrorException if x/y is out of range or a,r,g,b are not between 0-255\n     */\n    void setPixelARGB(double x, double y, int a, int r, int g, int b) override;\n\n    /**\n     * Sets the color of the all pixels in the background layer of the\n     * canvas to the given RGB values, using rows as y-values and columns as\n     * x-values.  Any existing background layer pixels will be replaced.\n     * If the given grid is not the same size as this canvas, the canvas will\n     * be resized to match the grid.\n     * Equivalent to fromGrid.\n     */\n    void setPixels(const Grid<int>& pixels) override;\n\n    /**\n     * Sets the color of the all pixels in the background layer of the\n     * canvas to the given ARGB values, using rows as y-values and columns as\n     * x-values.  Any existing background layer pixels will be replaced.\n     * If the given grid is not the same size as this canvas, the canvas will\n     * be resized to match the grid.\n     */\n    void setPixelsARGB(const Grid<int>& pixelsARGB) override;\n\n    /**\n     * Converts the pixels of the canvas into a GImage object.\n     */\n    virtual GImage* toGImage() const;\n\n    /**\n     * Converts this canvas's pixel data into a grid of RGB pixels.\n     * The grid's first index is a row or y-index, and its second index\n     * is the column or x-index.\n     * So for example, grid[y][x] returns the RGB int value at that pixel.\n     * In this version of the method, the grid is returned.\n     * Equivalent to getPixels.\n     */\n    virtual Grid<int> toGrid() const;\n\n    /**\n     * Converts this canvas's pixel data into a grid of RGB pixels.\n     * The grid's first index is a row or y-index, and its second index\n     * is the column or x-index.\n     * So for example, grid[y][x] returns the RGB int value at that pixel.\n     * In this version of the method, the grid is filled by reference.\n     * Equivalent to getPixels.\n     */\n    virtual void toGrid(Grid<int>& grid) const;\n\nprivate:\n    Q_DISABLE_COPY(GCanvas)\n\n    _Internal_QCanvas* _iqcanvas;\n    GCompound _gcompound;\n    QImage* _backgroundImage;\n    std::string _filename;   // file canvas was loaded from; \"\" if not loaded from a file\n\n    friend class _Internal_QCanvas;\n\n    void ensureBackgroundImage();\n\n    void ensureBackgroundImageConstHack() const;\n\n    void init(double width, double height, int rgbBackground, QWidget* parent);\n\n    /**\n     * Reads the canvas's pixel contents from the given stream.\n     * @return true if loaded successfully and false if the load failed\n     */\n    virtual bool loadFromStream(std::istream& input);\n\n    void notifyOfResize(double width, double height);\n};\n\n// Parameter has new type >= Qt 6\n#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)\n    typedef QEvent ParameterToEnterEvent;\n#else\n    typedef QEnterEvent ParameterToEnterEvent;\n#endif\n\n/**\n * Internal class; not to be used by clients.\n * @private\n */\nclass _Internal_QCanvas : public QWidget, public _Internal_QWidget {\n    Q_OBJECT\n\npublic:\n    _Internal_QCanvas(GCanvas* gcanvas, QWidget* parent = nullptr);\n    void detach() override;\n    void enterEvent(ParameterToEnterEvent* event) override;\n    void keyPressEvent(QKeyEvent* event) override;\n    void keyReleaseEvent(QKeyEvent* event) override;\n    void leaveEvent(QEvent* event) override;\n    void mouseMoveEvent(QMouseEvent* event) override;\n    void mousePressEvent(QMouseEvent* event) override;\n    void mouseReleaseEvent(QMouseEvent* event) override;\n    void paintEvent(QPaintEvent *event) override;\n    void resizeEvent(QResizeEvent* event) override;\n    virtual void setCanvasSize(double width, double height);\n    QSize sizeHint() const override;\n    void wheelEvent(QWheelEvent* event) override;\n\nsignals:\n    void doubleClicked();\n\nprotected:\n    void mouseDoubleClickEvent(QMouseEvent* e) override;\n\nprivate:\n    GCanvas* _gcanvas;\n\n    friend class GCanvas;\n};\n\n#endif // _gcanvas_h\n"
  },
  {
    "path": "Library/graphics/gcheckbox.cpp",
    "content": "/*\n * File: gcheckbox.cpp\n * -------------------\n *\n * @author Marty Stepp\n * @version 2019/04/23\n * - added key event support\n * @version 2019/02/02\n * - destructor now stops event processing\n * @version 2018/10/06\n * - added toggle()\n * @version 2018/09/04\n * - added double-click event support\n * @version 2018/08/23\n * - renamed to gcheckbox.cpp to replace Java version\n * @version 2018/06/25\n * - initial version\n */\n\n#include \"gcheckbox.h\"\n#include \"gthread.h\"\n#include \"require.h\"\n\nGCheckBox::GCheckBox(const std::string& text, bool checked, QWidget* parent) {\n    GThread::runOnQtGuiThread([this, checked, parent]() {\n        _iqcheckBox = new _Internal_QCheckBox(this, checked, getInternalParent(parent));\n    });\n    setText(text);\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGCheckBox::~GCheckBox() {\n    // TODO: delete _iqcheckBox;\n    _iqcheckBox->detach();\n    _iqcheckBox = nullptr;\n}\n\nstd::string GCheckBox::getActionCommand() const {\n    if (_actionCommand.empty()) {\n        return getText();\n    } else {\n        return _actionCommand;\n    }\n}\n\nstd::string GCheckBox::getActionEventType() const {\n    return \"change\";\n}\n\n_Internal_QWidget* GCheckBox::getInternalWidget() const {\n    return _iqcheckBox;\n}\n\nstd::string GCheckBox::getText() const {\n    return _iqcheckBox->text().toStdString();\n}\n\nstd::string GCheckBox::getType() const {\n    return \"GCheckBox\";\n}\n\nQWidget* GCheckBox::getWidget() const {\n    return static_cast<QWidget*>(_iqcheckBox);\n}\n\nbool GCheckBox::isChecked() const {\n    return _iqcheckBox->isChecked();\n}\n\nbool GCheckBox::isSelected() const {\n    return _iqcheckBox->isChecked();\n}\n\nvoid GCheckBox::setChecked(bool checked) {\n    GThread::runOnQtGuiThread([this, checked]() {\n        _iqcheckBox->setChecked(checked);\n    });\n}\n\nvoid GCheckBox::setSelected(bool selected) {\n    setChecked(selected);\n}\n\nvoid GCheckBox::setText(const std::string& text) {\n    GThread::runOnQtGuiThread([this, text]() {\n        _iqcheckBox->setText(QString::fromStdString(text));\n    });\n}\n\nvoid GCheckBox::toggle() {\n    setChecked(!isChecked());\n}\n\n\n_Internal_QCheckBox::_Internal_QCheckBox(GCheckBox* gcheckBox, bool checked, QWidget* parent)\n        : QCheckBox(parent),\n          _gcheckBox(gcheckBox) {\n    require::nonNull(gcheckBox, \"_Internal_QCheckBox::constructor\");\n    setObjectName(QString::fromStdString(\"_Internal_QCheckBox_\" + std::to_string(gcheckBox->getID())));\n    setChecked(checked);\n    connect(this, SIGNAL(stateChanged(int)), this, SLOT(handleStateChange(int)));\n}\n\nvoid _Internal_QCheckBox::detach() {\n    _gcheckBox = nullptr;\n}\n\nvoid _Internal_QCheckBox::handleStateChange(int /* state */) {\n    if (!_gcheckBox) {\n        return;\n    }\n    GEvent changeEvent(\n                /* class  */ CHANGE_EVENT,\n                /* type   */ STATE_CHANGED,\n                /* name   */ \"change\",\n                /* source */ _gcheckBox);\n    changeEvent.setActionCommand(_gcheckBox->getActionCommand());\n    _gcheckBox->fireEvent(changeEvent);\n}\n\nvoid _Internal_QCheckBox::keyPressEvent(QKeyEvent* event) {\n    require::nonNull(event, \"_Internal_QCheckBox::keyPressEvent\", \"event\");\n    if (_gcheckBox && _gcheckBox->isAcceptingEvent(\"keypress\")) {\n        event->accept();\n        _gcheckBox->fireGEvent(event, KEY_PRESSED, \"keypress\");\n        if (event->isAccepted()) {\n            QCheckBox::keyPressEvent(event);   // call super\n        }\n    } else {\n        QCheckBox::keyPressEvent(event);   // call super\n    }\n}\n\nvoid _Internal_QCheckBox::keyReleaseEvent(QKeyEvent* event) {\n    require::nonNull(event, \"_Internal_QCheckBox::keyReleaseEvent\", \"event\");\n    if (_gcheckBox && _gcheckBox->isAcceptingEvent(\"keyrelease\")) {\n        event->accept();\n        _gcheckBox->fireGEvent(event, KEY_RELEASED, \"keyrelease\");\n        if (event->isAccepted()) {\n            QCheckBox::keyReleaseEvent(event);   // call super\n        }\n    } else {\n        QCheckBox::keyReleaseEvent(event);   // call super\n    }\n}\n\nvoid _Internal_QCheckBox::mouseDoubleClickEvent(QMouseEvent* event) {\n    require::nonNull(event, \"_Internal_QCheckBox::mouseDoubleClickEvent\");\n    QWidget::mouseDoubleClickEvent(event);   // call super\n    emit doubleClicked();\n\n    if (!_gcheckBox || !_gcheckBox->isAcceptingEvent(\"doubleclick\")) {\n        return;\n    }\n    GEvent mouseEvent(\n                /* class  */ MOUSE_EVENT,\n                /* type   */ MOUSE_DOUBLE_CLICKED,\n                /* name   */ \"doubleclick\",\n                /* source */ _gcheckBox);\n    mouseEvent.setActionCommand(_gcheckBox->getActionCommand());\n    mouseEvent.setButton((int) event->button());\n    mouseEvent.setX(event->pos().x());\n    mouseEvent.setY(event->pos().y());\n    _gcheckBox->fireEvent(mouseEvent);\n}\n\nQSize _Internal_QCheckBox::sizeHint() const {\n    if (hasPreferredSize()) {\n        return getPreferredSize();\n    } else {\n        return QCheckBox::sizeHint();\n    }\n}\n\n\n"
  },
  {
    "path": "Library/graphics/gcheckbox.h",
    "content": "/*\n * File: gcheckbox.h\n * -----------------\n *\n * @author Marty Stepp\n * @version 2019/04/23\n * - added key event support\n * @version 2018/10/06\n * - added toggle()\n * @version 2018/09/07\n * - added doc comments for new documentation generation\n * @version 2018/09/04\n * - added double-click event support\n * @version 2018/08/23\n * - renamed to gcheckbox.h to replace Java version\n * @version 2018/06/29\n * - added change event\n * @version 2018/06/25\n * - initial version\n */\n\n\n#ifndef _gcheckbox_h\n#define _gcheckbox_h\n\n#include <string>\n#include <QCheckBox>\n\n#include \"ginteractor.h\"\n\nclass _Internal_QCheckBox;\n\n/**\n * This interactor subclass represents an onscreen check box.\n * Clicking once on the check box selects it; clicking again removes the selection.\n * You can listen for clicks on a checkbox by setting an action listener,\n * passing the function you want to call on each click.\n */\nclass GCheckBox : public GInteractor {\npublic:\n    /**\n     * Creates a checkbox with the given text.\n     * You can pass an optional second parameter to initially check the box.\n     */\n    GCheckBox(const std::string& text = \"\", bool checked = false, QWidget* parent = nullptr);\n\n    /**\n     * Frees memory allocated internally by the checkbox.\n     */\n    ~GCheckBox() override;\n\n    /* @inherit */\n    std::string getActionCommand() const override;\n\n    /* @inherit */\n    _Internal_QWidget* getInternalWidget() const override;\n\n    /**\n     * Returns the text next to the checkbox.\n     */\n    virtual std::string getText() const;\n\n    /* @inherit */\n    std::string getType() const override;\n\n    /* @inherit */\n    QWidget* getWidget() const override;\n\n    /**\n     * Returns true if the checkbox is currently checked.\n     * Equivalent to isSelected.\n     */\n    virtual bool isChecked() const;\n\n    /**\n     * Returns true if the checkbox is currently checked.\n     * Equivalent to isChecked.\n     */\n    virtual bool isSelected() const;\n\n    /**\n     * Sets whether the checkbox should be checked.\n     * Equivalent to setSelected.\n     */\n    virtual void setChecked(bool checked);\n\n    /**\n     * Sets whether the checkbox should be checked.\n     * Equivalent to setChecked.\n     */\n    virtual void setSelected(bool selected);\n\n    /**\n     * Sets the text that will appear next to the checkbox.\n     */\n    virtual void setText(const std::string& text);\n\n    /**\n     * Reverses the checked state of the box, setting it to be checked if it was\n     * unchecked or to be unchecked if it was checked.\n     */\n    virtual void toggle();\n\nprotected:\n    /**\n     * @private\n     */\n    std::string getActionEventType() const override;\n\nprivate:\n    Q_DISABLE_COPY(GCheckBox)\n\n    _Internal_QCheckBox* _iqcheckBox;\n\n    friend class _Internal_QCheckBox;\n};\n\n/**\n * Internal class; not to be used by clients.\n * @private\n */\nclass _Internal_QCheckBox : public QCheckBox, public _Internal_QWidget {\n    Q_OBJECT\n\npublic:\n    _Internal_QCheckBox(GCheckBox* gcheckBox, bool checked = false, QWidget* parent = nullptr);\n    void detach() override;\n    void keyPressEvent(QKeyEvent* event) override;\n    void keyReleaseEvent(QKeyEvent* event) override;\n    QSize sizeHint() const override;\n\nsignals:\n    void doubleClicked();\n\npublic slots:\n    void handleStateChange(int);\n\nprotected:\n    void mouseDoubleClickEvent(QMouseEvent* e) override;\n\nprivate:\n    GCheckBox* _gcheckBox;\n\n    friend class GCheckBox;\n};\n\n#endif // _gcheckbox_h\n"
  },
  {
    "path": "Library/graphics/gchooser.cpp",
    "content": "/*\n * File: gchooser.cpp\n * ------------------\n *\n * @author Marty Stepp\n * @version 2019/04/23\n * - added key event support\n * @version 2019/02/02\n * - destructor now stops event processing\n * @version 2018/08/23\n * - renamed to gchooser.cpp to replace Java version\n * @version 2018/06/28\n * - initial version\n */\n\n#include \"gchooser.h\"\n#include \"gthread.h\"\n#include \"require.h\"\n\nGChooser::GChooser(QWidget* parent) {\n    GThread::runOnQtGuiThread([this, parent]() {\n        _iqcomboBox = new _Internal_QComboBox(this, getInternalParent(parent));\n    });\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGChooser::GChooser(const std::initializer_list<std::string>& items, QWidget* parent) {\n    GThread::runOnQtGuiThread([this, parent]() {\n        _iqcomboBox = new _Internal_QComboBox(this, getInternalParent(parent));\n    });\n    addItems(items);\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGChooser::GChooser(const Vector<std::string>& items, QWidget* parent) {\n    GThread::runOnQtGuiThread([this, parent]() {\n        _iqcomboBox = new _Internal_QComboBox(this, getInternalParent(parent));\n    });\n    addItems(items);\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGChooser::~GChooser() {\n    // TODO: delete _iqcomboBox;\n    _iqcomboBox->detach();\n    _iqcomboBox = nullptr;\n}\n\nvoid GChooser::addItem(const std::string& item) {\n    require::nonEmpty(item, \"GChooser::addItem\", \"item\");\n    GThread::runOnQtGuiThread([this, item]() {\n        _iqcomboBox->addItem(QString::fromStdString(item));\n    });\n}\n\nvoid GChooser::addItems(const std::initializer_list<std::string>& items) {\n    GThread::runOnQtGuiThread([this, &items]() {\n        for (const std::string& item : items) {\n            if (!item.empty()) {\n                _iqcomboBox->addItem(QString::fromStdString(item));\n            }\n        }\n    });\n}\n\nvoid GChooser::addItems(const Vector<std::string>& items) {\n    GThread::runOnQtGuiThread([this, &items]() {\n        for (const std::string& item : items) {\n            if (!item.empty()) {\n                _iqcomboBox->addItem(QString::fromStdString(item));\n            }\n        }\n    });\n}\n\nvoid GChooser::checkIndex(const std::string& member, int index, int min, int max) const {\n    if (max < 0) {\n        max = size() - 1;\n    }\n    require::inRange(index, min, max, member, \"index\");\n}\n\nvoid GChooser::clearItems() {\n    GThread::runOnQtGuiThread([this]() {\n        _iqcomboBox->clear();\n    });\n}\n\nstd::string GChooser::getActionCommand() const {\n    if (_actionCommand.empty()) {\n        return getSelectedItem();\n    } else {\n        return _actionCommand;\n    }\n}\n\nstd::string GChooser::getActionEventType() const {\n    return \"change\";\n}\n\n_Internal_QWidget* GChooser::getInternalWidget() const {\n    return _iqcomboBox;\n}\n\nstd::string GChooser::getItem(int index) const {\n    checkIndex(\"GChooser::getItem\", index);\n    return _iqcomboBox->itemText(index).toStdString();\n}\n\nint GChooser::getItemCount() const {\n    return _iqcomboBox->count();\n}\n\nint GChooser::getSelectedIndex() const {\n    return _iqcomboBox->currentIndex();\n}\n\nstd::string GChooser::getSelectedItem() const {\n    return _iqcomboBox->currentText().toStdString();\n}\n\nstd::string GChooser::getType() const {\n    return \"GChooser\";\n}\n\nQWidget* GChooser::getWidget() const {\n    return static_cast<QWidget*>(_iqcomboBox);\n}\n\nbool GChooser::isEditable() const {\n    return _iqcomboBox->isEditable();\n}\n\nbool GChooser::isEmpty() const {\n    return getItemCount() == 0;\n}\n\nvoid GChooser::setItem(int index, const std::string& item) {\n    checkIndex(\"GChooser::setItem\", index);\n    GThread::runOnQtGuiThread([this, index, item]() {\n        _iqcomboBox->setItemText(index, QString::fromStdString(item));\n    });\n}\n\nvoid GChooser::setSelectedIndex(int index) {\n    checkIndex(\"GChooser::setSelectedIndex\", index);\n    GThread::runOnQtGuiThread([this, index]() {\n        _iqcomboBox->setCurrentIndex(index);\n    });\n}\n\nvoid GChooser::setEditable(bool editable) {\n    GThread::runOnQtGuiThread([this, editable]() {\n        _iqcomboBox->setEditable(editable);\n    });\n}\n\nvoid GChooser::setSelectedItem(const std::string& item) {\n    for (int i = 0, len = getItemCount(); i < len; i++) {\n        std::string thisItem = _iqcomboBox->itemText(i).toStdString();\n        if (thisItem == item) {\n            setSelectedIndex(i);\n            break;\n        }\n    }\n}\n\nint GChooser::size() const {\n    return _iqcomboBox->count();\n}\n\n\n_Internal_QComboBox::_Internal_QComboBox(GChooser* gchooser, QWidget* parent)\n        : QComboBox(parent),\n          _gchooser(gchooser) {\n    require::nonNull(gchooser, \"_Internal_QComboBox::constructor\");\n    setObjectName(QString::fromStdString(\"_Internal_QComboBox_\" + std::to_string(gchooser->getID())));\n    connect(this, SIGNAL(currentIndexChanged(int)), this, SLOT(handleChange()));\n}\n\nvoid _Internal_QComboBox::detach() {\n    _gchooser = nullptr;\n}\n\nvoid _Internal_QComboBox::handleChange() {\n    if (!_gchooser) {\n        return;\n    }\n    GEvent changeEvent(\n                /* class  */ CHANGE_EVENT,\n                /* type   */ STATE_CHANGED,\n                /* name   */ \"change\",\n                /* source */ _gchooser);\n    changeEvent.setActionCommand(_gchooser->getActionCommand());\n    _gchooser->fireEvent(changeEvent);\n}\n\nvoid _Internal_QComboBox::keyPressEvent(QKeyEvent* event) {\n    require::nonNull(event, \"_Internal_QComboBox::keyPressEvent\", \"event\");\n    if (_gchooser && _gchooser->isAcceptingEvent(\"keypress\")) {\n        event->accept();\n        _gchooser->fireGEvent(event, KEY_PRESSED, \"keypress\");\n        if (event->isAccepted()) {\n            QComboBox::keyPressEvent(event);   // call super\n        }\n    } else {\n        QComboBox::keyPressEvent(event);   // call super\n    }\n}\n\nvoid _Internal_QComboBox::keyReleaseEvent(QKeyEvent* event) {\n    require::nonNull(event, \"_Internal_QComboBox::keyReleaseEvent\", \"event\");\n    if (_gchooser && _gchooser->isAcceptingEvent(\"keyrelease\")) {\n        event->accept();\n        _gchooser->fireGEvent(event, KEY_RELEASED, \"keyrelease\");\n        if (event->isAccepted()) {\n            QComboBox::keyReleaseEvent(event);   // call super\n        }\n    } else {\n        QComboBox::keyReleaseEvent(event);   // call super\n    }\n}\n\nQSize _Internal_QComboBox::sizeHint() const {\n    if (hasPreferredSize()) {\n        return getPreferredSize();\n    } else {\n        return QComboBox::sizeHint();\n    }\n}\n\n\n"
  },
  {
    "path": "Library/graphics/gchooser.h",
    "content": "/*\n * File: gchooser.h\n * ----------------\n *\n * @author Marty Stepp\n * @version 2019/04/23\n * - added key event support\n * @version 2018/09/07\n * - added doc comments for new documentation generation\n * @version 2018/09/04\n * - added GComboBox alias\n * @version 2018/08/23\n * - renamed to gchooser.h to replace Java version\n * @version 2018/06/28\n * - initial version\n */\n\n\n#ifndef _gchooser_h\n#define _gchooser_h\n\n#include <initializer_list>\n#include <string>\n#include <QComboBox>\n\n#include \"ginteractor.h\"\n#include \"vector.h\"\n\nclass _Internal_QComboBox;\n\n/**\n * This interactor subclass represents a selectable drop-down list.\n * The GChooser constructor creates an empty chooser.\n * Once the chooser has been created, clients can use addItem to add the options.\n */\nclass GChooser : public GInteractor {\npublic:\n    /**\n     * Creates a chooser that initially contains no items.\n     */\n    GChooser(QWidget* parent = nullptr);\n\n    /**\n     * Creates a chooser that initially contains the given items.\n     */\n    GChooser(const std::initializer_list<std::string>& items, QWidget* parent = nullptr);\n\n    /**\n     * Creates a chooser that initially contains the given items.\n     */\n    GChooser(const Vector<std::string>& items, QWidget* parent = nullptr);\n\n    /**\n     * Frees memory allocated internally by the chooser.\n     */\n    ~GChooser() override;\n\n    /**\n     * Adds a new item consisting of the specified string to the end of the list.\n     */\n    virtual void addItem(const std::string& item);\n\n    /**\n     * Adds each item from the given list to the end of the chooser's list.\n     */\n    virtual void addItems(const std::initializer_list<std::string>& items);\n\n    /**\n     * Adds each item from the given vector to the end of the chooser's list.\n     */\n    virtual void addItems(const Vector<std::string>& items);\n\n    /**\n     * Removes all items from the chooser.\n     */\n    virtual void clearItems();\n\n    /* @inherit */\n    std::string getActionCommand() const override;\n\n    /* @inherit */\n    _Internal_QWidget* getInternalWidget() const override;\n\n    /**\n     * Returns the item in the chooser at the given 0-based index.\n     * @throw ErrorException if the index is out of range\n     */\n    virtual std::string getItem(int index) const;\n\n    /**\n     * Returns the number of items in the chooser.\n     */\n    virtual int getItemCount() const;\n\n    /**\n     * Returns which index is selected in the chooser.\n     * If no item is selected, returns -1.\n     * @return selected index, or -1 if no item is selected\n     */\n    virtual int getSelectedIndex() const;\n\n    /**\n     * Returns the currently selected item in the chooser,\n     * or an empty string if no item is currently selected.\n     */\n    virtual std::string getSelectedItem() const;\n\n    /* @inherit */\n    std::string getType() const override;\n\n    /* @inherit */\n    QWidget* getWidget() const override;\n\n    /**\n     * Returns true if the chooser has an editable area for typing new items.\n     * By default this is false unless setEditable(true) is called.\n     */\n    virtual bool isEditable() const;\n\n    /**\n     * Returns true if the chooser has no items.\n     */\n    virtual bool isEmpty() const;\n\n    /**\n     * Sets whether the chooser has an editable area for typing new items.\n     * Initially false.\n     */\n    virtual void setEditable(bool editable);\n\n    /**\n     * Sets the item at the given index in the chooser to the given value.\n     * @throw ErrorException if the index is out of range\n     */\n    virtual void setItem(int index, const std::string& item);\n\n    /**\n     * Sets the item at the given index in the chooser to be selected.\n     * @throw ErrorException if the index is out of range\n     */\n    virtual void setSelectedIndex(int index);\n\n    /**\n     * Sets the given item in the chooser to be selected.\n     * @throw ErrorException if the index is out of range\n     */\n    virtual void setSelectedItem(const std::string& item);\n\n    /**\n     * Returns the number of items in the chooser.\n     */\n    virtual int size() const;\n\nprotected:\n    /**\n     * @private\n     */\n    std::string getActionEventType() const override;\n\nprivate:\n    Q_DISABLE_COPY(GChooser)\n\n    _Internal_QComboBox* _iqcomboBox;\n\n    void checkIndex(const std::string& member, int index, int min = 0, int max = -1) const;\n\n    friend class _Internal_QComboBox;\n};\n\n/**\n * Internal class; not to be used by clients.\n * @private\n */\nclass _Internal_QComboBox : public QComboBox, public _Internal_QWidget {\n    Q_OBJECT\n\npublic:\n    _Internal_QComboBox(GChooser* gchooser, QWidget* parent = nullptr);\n    void detach() override;\n    void keyPressEvent(QKeyEvent* event) override;\n    void keyReleaseEvent(QKeyEvent* event) override;\n    QSize sizeHint() const override;\n\npublic slots:\n    void handleChange();\n\nprivate:\n    GChooser* _gchooser;\n\n    friend class GChooser;\n};\n\n// alias GComboBox for GChooser for name compatibility with Java and Qt\ntypedef GChooser GComboBox;\n\n#endif // _gchooser_h\n"
  },
  {
    "path": "Library/graphics/gclipboard.cpp",
    "content": "/*\n * File: gclipboard.cpp\n * --------------------\n *\n * @author Marty Stepp\n * @version 2018/08/23\n * - renamed to gclipboard.cpp to replace Java version\n * @version 2018/07/19\n * - initial version\n */\n\n#include \"gclipboard.h\"\n#include <QApplication>\n#include <QClipboard>\n#include <QString>\n#include \"require.h\"\n\nGClipboard::GClipboard() {\n    // empty\n}\n\nvoid GClipboard::set(const std::string& text) {\n    QClipboard* clipboard = QApplication::clipboard();\n    require::nonNull(clipboard, \"GClipboard::set\", \"clipboard\");\n    clipboard->setText(QString::fromStdString(text));\n}\n\nstd::string GClipboard::get() {\n    QClipboard* clipboard = QApplication::clipboard();\n    require::nonNull(clipboard, \"GClipboard::get\", \"clipboard\");\n    return clipboard->text().toStdString();\n}\n\nbool GClipboard::isCopy(QKeyEvent* event) {\n    require::nonNull(event, \"GClipboard::isCopy\", \"event\");\n    bool ctrlOrMeta = (event->modifiers() & Qt::ControlModifier) != 0\n            || (event->modifiers() & Qt::MetaModifier) != 0;\n    return ctrlOrMeta && (event->key() == Qt::Key_C || event->key() == Qt::Key_Insert);\n}\n\nbool GClipboard::isCut(QKeyEvent* event) {\n    require::nonNull(event, \"GClipboard::isCopy\", \"event\");\n    bool shift = (event->modifiers() & Qt::ShiftModifier) != 0;\n    bool ctrlOrMeta = (event->modifiers() & Qt::ControlModifier) != 0\n            || (event->modifiers() & Qt::MetaModifier) != 0;\n    return (ctrlOrMeta && event->key() == Qt::Key_X)\n            || (shift && event->key() == Qt::Key_Delete);\n}\n\nbool GClipboard::isPaste(QKeyEvent* event) {\n    require::nonNull(event, \"GClipboard::isCopy\", \"event\");\n    bool shift = (event->modifiers() & Qt::ShiftModifier) != 0;\n    bool ctrlOrMeta = (event->modifiers() & Qt::ControlModifier) != 0\n            || (event->modifiers() & Qt::MetaModifier) != 0;\n    return (ctrlOrMeta && event->key() == Qt::Key_V)\n            || (shift && event->key() == Qt::Key_Insert);\n}\n"
  },
  {
    "path": "Library/graphics/gclipboard.h",
    "content": "/*\n * File: gclipboard.h\n * ------------------\n *\n * @author Marty Stepp\n * @version 2018/09/07\n * - added doc comments for new documentation generation\n * @version 2018/08/23\n * - renamed to gclipboard.h to replace Java version\n * @version 2018/07/19\n * - initial version\n */\n\n\n#ifndef _gclipboard_h\n#define _gclipboard_h\n\n#include <QKeyEvent>\n#include <string>\n\n/**\n * The GClipboard class contains static methods you can use to get and set\n * the contents of the system clipboard.\n */\nclass GClipboard {\npublic:\n    /**\n     * Returns the current contents of the system clipboard.\n     */\n    static std::string get();\n\n    /**\n     * Returns true if the given event represents a \"copy\" operation.\n     * @throw ErrorException if the event is null\n     */\n    static bool isCopy(QKeyEvent* event);\n\n    /**\n     * Returns true if the given event represents a \"cut\" operation.\n     * @throw ErrorException if the event is null\n     */\n    static bool isCut(QKeyEvent* event);\n\n    /**\n     * Returns true if the given event represents a \"paste\" operation.\n     * @throw ErrorException if the event is null\n     */\n    static bool isPaste(QKeyEvent* event);\n\n    /**\n     * Sets the system clipboard to store the given text.\n     * Equivalent to a \"copy\" operation.\n     */\n    static void set(const std::string& text);\n\nprivate:\n    GClipboard();   // prevent construction\n};\n\n#endif // _gclipboard_h\n"
  },
  {
    "path": "Library/graphics/gcolor.cpp",
    "content": "/*\n * File: gcolor.cpp\n * ----------------\n *\n * @author Marty Stepp\n * @version 2019/05/05\n * - added getLuminance\n * @version 2018/09/16\n * - added splitRGB/ARGB, hasAlpha; better ARGB support\n * @version 2018/08/23\n * - renamed to gcolor.cpp to replace Java version\n * @version 2018/06/30\n * - initial version\n */\n\n#include \"gcolor.h\"\n#include <iomanip>\n#include <iostream>\n#include \"error.h\"\n#include \"strlib.h\"\n\nMap<std::string, int> GColor::_colorTable;\nMap<std::string, std::string> GColor::_colorNameTable;\n\nGColor::GColor() {\n    // empty\n}\n\n/*static*/ std::string GColor::canonicalColorName(const std::string& str) {\n    std::string result = \"\";\n    int nChars = static_cast<int>(str.length());\n    for (int i = 0; i < nChars; i++) {\n        char ch = str[i];\n        if (!isspace(ch) && ch != '_') result += tolower(ch);\n    }\n    return result;\n}\n\n/*static*/ const Map<std::string, int>& GColor::colorTable() {\n    if (_colorTable.isEmpty()) {\n        _colorTable[\"black\"] = 0x000000;\n        _colorTable[\"blue\"] = 0x0000FF;\n        _colorTable[\"brown\"] = 0x926239;\n        _colorTable[\"cyan\"] = 0x00FFFF;\n        _colorTable[\"darkgray\"] = 0x595959;\n        _colorTable[\"gray\"] = 0x999999;\n        _colorTable[\"green\"] = 0x00FF00;\n        _colorTable[\"lightgray\"] = 0xBFBFBF;\n        _colorTable[\"magenta\"] = 0xFF00FF;\n        _colorTable[\"orange\"] = 0xFFC800;\n        _colorTable[\"pink\"] = 0xFFAFAF;\n        _colorTable[\"purple\"] = 0xFF00FF;\n        _colorTable[\"red\"] = 0xFF0000;\n        _colorTable[\"white\"] = 0xFFFFFF;\n        _colorTable[\"yellow\"] = 0xFFFF00;\n    }\n    return _colorTable;\n}\n\n/*static*/ const Map<std::string, std::string>& GColor::colorNameTable() {\n    if (_colorNameTable.isEmpty()) {\n        _colorNameTable[\"#000000\"] = \"black\";\n        _colorNameTable[\"#ff000000\"] = \"black\";\n        _colorNameTable[\"#0000ff\"] = \"blue\";\n        _colorNameTable[\"#ff0000ff\"] = \"blue\";\n        _colorNameTable[\"#926239\"] = \"brown\";\n        _colorNameTable[\"#ff926239\"] = \"brown\";\n        _colorNameTable[\"#00ffff\"] = \"cyan\";\n        _colorNameTable[\"#ff00ffff\"] = \"cyan\";\n        _colorNameTable[\"#595959\"] = \"darkgray\";\n        _colorNameTable[\"#ff595959\"] = \"darkgray\";\n        _colorNameTable[\"#999999\"] = \"gray\";\n        _colorNameTable[\"#ff999999\"] = \"gray\";\n        _colorNameTable[\"#00ff00\"] = \"green\";\n        _colorNameTable[\"#ff00ff00\"] = \"green\";\n        _colorNameTable[\"#bfbfbf\"] = \"lightgray\";\n        _colorNameTable[\"#ffbfbfbf\"] = \"lightgray\";\n        _colorNameTable[\"#ff00ff\"] = \"magenta\";\n        _colorNameTable[\"#ffff00ff\"] = \"magenta\";\n        _colorNameTable[\"#ffc800\"] = \"orange\";\n        _colorNameTable[\"#ffffc800\"] = \"orange\";\n        _colorNameTable[\"#ffafaf\"] = \"pink\";\n        _colorNameTable[\"#ffffafaf\"] = \"pink\";\n        _colorNameTable[\"#ff00ff\"] = \"purple\";\n        _colorNameTable[\"#ffff00ff\"] = \"purple\";\n        _colorNameTable[\"#ff0000\"] = \"red\";\n        _colorNameTable[\"#ffff0000\"] = \"red\";\n        _colorNameTable[\"#ffffff\"] = \"white\";\n        _colorNameTable[\"#ffffffff\"] = \"white\";\n        _colorNameTable[\"#ffff00\"] = \"yellow\";\n        _colorNameTable[\"#ffffff00\"] = \"yellow\";\n    }\n    return _colorNameTable;\n}\n\n/*static*/ int GColor::convertARGBToARGB(int a, int r, int g, int b) {\n    return (a << 24) | (r << 16) | (g << 8) | b;\n}\n\n/*static*/ std::string GColor::convertARGBToColor(int a, int r, int g, int b) {\n    if (a < 0 || a > 255 || r < 0 || r > 255 || g < 0 || g > 255 || b < 0 || b > 255) {\n        error(\"GColor::convertARGBToColor: invalid ARGB value (must be 0-255)\");\n    }\n    std::ostringstream os;\n    os << std::hex << std::setfill('0') << std::uppercase << \"#\";\n    os << std::setw(2) << (a & 0xFF);\n    os << std::setw(2) << (r & 0xFF);\n    os << std::setw(2) << (g & 0xFF);\n    os << std::setw(2) << (b & 0xFF);\n    return os.str();\n}\n\n/*static*/ std::string GColor::convertARGBToColor(int argb) {\n    int a, r, g, b;\n    splitARGB(argb, a, r, g, b);\n    return convertARGBToColor(a, r, g, b);\n}\n\n/*static*/ int GColor::convertColorToARGB(const std::string& colorName) {\n    return convertColorToRGB(colorName);\n}\n\n/*static*/ int GColor::convertColorToRGB(const std::string& colorName) {\n    if (colorName == \"\") return -1;\n    if (colorName[0] == '#') {\n        std::istringstream is(colorName.substr(1) + \"@\");\n        unsigned int rgb;\n        char terminator = '\\0';\n        is >> std::hex >> rgb >> terminator;\n        if (terminator != '@') {\n            error(\"GColor::convertColorToRGB: Illegal color - \\\"\" + colorName + \"\\\"\");\n        }\n        return static_cast<int>(rgb & 0xffffffff);\n    }\n    std::string name = canonicalColorName(colorName);\n    if (!colorTable().containsKey(name)) {\n        error(\"GColor::convertColorToRGB: Undefined color - \\\"\" + colorName + \"\\\"\");\n    }\n    return colorTable()[name];\n}\n\n/*static*/ std::string GColor::convertQColorToColor(const QColor& color) {\n    return convertRGBToColor(color.red(), color.green(), color.blue());\n}\n\n/*static*/ int GColor::convertQColorToRGB(const QColor& color) {\n    return convertRGBToRGB(color.red(), color.green(), color.blue());\n}\n\n/*static*/ std::string GColor::convertRGBToColor(int rgb) {\n    std::ostringstream os;\n    os << std::hex << std::setfill('0') << std::uppercase << \"#\";\n    os << std::setw(2) << (rgb >> 16 & 0xFF);\n    os << std::setw(2) << (rgb >> 8 & 0xFF);\n    os << std::setw(2) << (rgb & 0xFF);\n    std::string color = os.str();\n    if (colorNameTable().containsKey(toLowerCase(color))) {\n        return colorNameTable()[toLowerCase(color)];\n    } else {\n        return color;\n    }\n}\n\n/*static*/ std::string GColor::convertRGBToColor(int r, int g, int b) {\n    if (r < 0 || r > 255 || g < 0 || g > 255 || b < 0 || b > 255) {\n        error(\"GColor::convertRGBToColor: invalid RGB value (must be 0-255)\");\n    }\n    std::ostringstream os;\n    os << std::hex << std::setfill('0') << std::uppercase << \"#\";\n    os << std::setw(2) << (r & 0xFF);\n    os << std::setw(2) << (g & 0xFF);\n    os << std::setw(2) << (b & 0xFF);\n    std::string color = os.str();\n    if (colorNameTable().containsKey(toLowerCase(color))) {\n        return colorNameTable()[toLowerCase(color)];\n    } else {\n        return color;\n    }\n}\n\n/*static*/ int GColor::convertRGBToRGB(int r, int g, int b) {\n    return (r << 16) | (g << 8) | b;\n}\n\n/*static*/ int GColor::fixAlpha(int argb) {\n    int alpha = ((argb & 0xff000000) >> 24) & 0x000000ff;\n    if (alpha == 0) {\n        argb = argb | 0xff000000;   // set full 255 alpha\n    }\n    return argb;\n}\n\n/*static*/ double GColor::getLuminance(int rgb) {\n    // https://en.wikipedia.org/wiki/Relative_luminance\n    int r, g, b;\n    splitRGB(rgb, r, g, b);\n    return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n}\n\n/*static*/ double GColor::getLuminance(const std::string& color) {\n    return getLuminance(convertColorToRGB(color));\n}\n\n/*static*/ bool GColor::hasAlpha(const std::string& color) {\n    return static_cast<int>(color.length()) == 9\n            && color[0] == '#';\n}\n\n/*static*/ void GColor::splitARGB(int argb, int& a, int& r, int& g, int& b) {\n    a = ((static_cast<unsigned int>(argb) & 0xff000000) >> 24) & 0x000000ff;\n    r = (argb & 0x00ff0000) >> 16;\n    g = (argb & 0x0000ff00) >> 8;\n    b = (argb & 0x000000ff);\n}\n\n/*static*/ void GColor::splitRGB(int rgb, int& r, int& g, int& b) {\n    r = (rgb & 0x00ff0000) >> 16;\n    g = (rgb & 0x0000ff00) >> 8;\n    b = (rgb & 0x000000ff);\n}\n\n/*static*/ QColor GColor::toQColor(const std::string& color) {\n    if (hasAlpha(color)) {\n        int argb = convertColorToARGB(color);\n        int a, r, g, b;\n        splitARGB(argb, a, r, g, b);\n        return QColor(r, g, b, a);\n    } else {\n        int rgb = convertColorToRGB(color);\n        return QColor(rgb | 0xff000000);\n    }\n}\n\n/*static*/ QColor GColor::toQColorARGB(int argb) {\n    int a, r, g, b;\n    splitARGB(argb, a, r, g, b);\n    return QColor(r, g, b, a);\n}\n"
  },
  {
    "path": "Library/graphics/gcolor.h",
    "content": "/*\n * File: gcolor.h\n * --------------\n *\n * @author Marty Stepp\n * @version 2019/05/05\n * - added getLuminance\n * @version 2018/09/16\n * - added splitRGB/ARGB, hasAlpha; better ARGB support\n * @version 2018/09/07\n * - added doc comments for new documentation generation\n * @version 2018/08/23\n * - renamed to gcolor.h to replace Java version\n * @version 2018/06/30\n * - initial version\n */\n\n\n#ifndef _gcolor_h\n#define _gcolor_h\n\n#include <string>\n#include <QColor>\n\n#include \"map.h\"\n\n/**\n * This class provides static methods for dealing with colors.\n *\n * Many graphical interactors and objects accept colors specified as strings\n * or as RGB integers.  An RGB integer is an integer with red, green, and blue\n * values from 0-255 packed into its bits as follows:\n *\n * <pre>\n * 00000000 00000000 00000000 00000000\n *    ^        ^        ^        ^\n *    |        |        |        |\n *  alpha     red     green     blue\n * </pre>\n *\n * A color can also be specified as a string.\n * A color string can be one of the predefined color names:\n *\n *    <code>BLACK</code>,\n *    <code>BLUE</code>,\n *    <code>CYAN</code>,\n *    <code>DARK_GRAY</code>,\n *    <code>GRAY</code>,\n *    <code>GREEN</code>,\n *    <code>LIGHT_GRAY</code>,\n *    <code>MAGENTA</code>,\n *    <code>ORANGE</code>,\n *    <code>PINK</code>,\n *    <code>RED</code>,\n *    <code>WHITE</code>, and\n *    <code>YELLOW</code>.\n *\n * The case of the individual letters in the color name is ignored, as\n * are spaces and underscores, so that the color <code>DARK_GRAY</code>\n * can be written as <code>\"Dark Gray\"</code>.\n *\n * Lastly, the color can also be specified as a string in the form\n * <code>\"#rrggbb\"</code> where <code>rr</code>, <code>gg</code>, and\n * <code>bb</code> are pairs of hexadecimal digits indicating the\n * red, green, and blue components of the color, respectively.\n * You can also include an alpha (opacity) channel by writing the hex string\n * in ARGB form as <code>\"#aarrggbb\"</code>.\n */\nclass GColor {\npublic:\n    /**\n     * Constants representing common system color names.\n     */\n    enum {\n        BLACK = 0x000000,\n        BLUE = 0x0000FF,\n        BROWN = 0x926239,\n        CYAN = 0x00FFFF,\n        DARKGRAY = 0x595959,\n        GRAY = 0x999999,\n        GREEN = 0x00FF00,\n        LIGHTGRAY = 0xBFBFBF,\n        MAGENTA = 0xFF00FF,\n        ORANGE = 0xFFC800,\n        PINK = 0xFFAFAF,\n        PURPLE = 0xFF00FF,\n        RED = 0xFF0000,\n        WHITE = 0xFFFFFF,\n        YELLOW = 0xFFFF00\n    } Color;\n\n    /**\n     * Converts four integer RGB values from 0-255 into a color name in the\n     * form <code>\"#aarrggbb\"</code>.  Each of the <code>aa</code>, <code>rr</code>,\n     * <code>gg</code>, and <code>bb</code> values are two-digit\n     * hexadecimal numbers indicating the intensity of that component.\n     * If any of a, r, g, or b is outside the range of 0-255, throws an error.\n     */\n    static std::string convertARGBToColor(int a, int r, int g, int b);\n\n    /**\n     * Converts the given ARGB integer into a color name in the\n     * form <code>\"#aarrggbb\"</code>.\n     */\n    static std::string convertARGBToColor(int argb);\n\n    /**\n     * Converts four integer RGB values from 0-255 into an ARGB integer of the\n     * form <code>0xaarrggbb</code>.  Each of the <code>aa</code>, <code>rr</code>,\n     * <code>gg</code>, and <code>bb</code> values are two-digit\n     * hexadecimal numbers indicating the intensity of that component.\n     * If any of a, r, g, or b is outside the range of 0-255, throws an error.\n     */\n    static int convertARGBToARGB(int a, int r, int g, int b);\n\n    /**\n     * Converts a color name into an ARGB integer that encodes the\n     * alpha (opacity), red, green, and blue components of the color.\n     */\n    static int convertColorToARGB(const std::string& colorName);\n\n    /**\n     * Converts a color name into an integer that encodes the\n     * red, green, and blue components of the color.\n     * This function is also compatible with ARGB colors.\n     */\n    static int convertColorToRGB(const std::string& colorName);\n\n    /**\n     * Converts a Qt RGB color object into a color string.\n     * Does not preserve alpha transparency.\n     */\n    static std::string convertQColorToColor(const QColor& color);\n\n    /**\n     * Converts a Qt color object into an RGB integer.\n     * Does not preserve alpha transparency.\n     */\n    static int convertQColorToRGB(const QColor& color);\n\n    /**\n     * Converts an RGB integer value into a color name in the\n     * form <code>\"#rrggbb\"</code>.\n     * Does not preserve alpha transparency.\n     */\n    static std::string convertRGBToColor(int rgb);\n\n    /**\n     * Converts three integer RGB values from 0-255 into a color name in the\n     * form <code>\"#rrggbb\"</code>.  Each of the <code>rr</code>,\n     * <code>gg</code>, and <code>bb</code> values are two-digit\n     * hexadecimal numbers indicating the intensity of that component.\n     * If any of r, g, or b is outside the range of 0-255, throws an error.\n     */\n    static std::string convertRGBToColor(int r, int g, int b);\n\n    /**\n     * Converts three integer RGB values from 0-255 into a single RGB integer.\n     * Each of the <code>rr</code>, <code>gg</code>, and <code>bb</code> values\n     * are two-digit hexadecimal numbers indicating the intensity of that component.\n     * If any of r, g, or b is outside the range of 0-255, throws an error.\n     */\n    static int convertRGBToRGB(int r, int g, int b);\n\n    /**\n     * Sets the 'alpha' (high order bits) of the given integer to ff.\n     */\n    static int fixAlpha(int argb);\n\n    /**\n     * Returns the photometric luminance of the given RGB integer,\n     * which is a measure of how bright the color is.\n     * This is calculated using the following formula:\n     * https://en.wikipedia.org/wiki/Relative_luminance\n     */\n    static double getLuminance(int rgb);\n\n    /**\n     * Returns the photometric luminance of the given color,\n     * which is a measure of how bright the color is.\n     * This is calculated using the following formula:\n     * https://en.wikipedia.org/wiki/Relative_luminance\n     */\n    static double getLuminance(const std::string& color);\n\n    /**\n     * Returns true if the given color string is of the 8-hex-character form\n     * that contains an alpha channel in the highest order two characters,\n     * preceded by a hash sign, such as \"#aaff0033\".\n     */\n    static bool hasAlpha(const std::string& color);\n\n    /**\n     * Splits the given ARGB integer into four integer RGB values from 0-255.\n     * Each of the <code>aa</code>, <code>rr</code>,\n     * <code>gg</code>, and <code>bb</code> values are two-digit\n     * hexadecimal numbers indicating the intensity of that component.\n     */\n    static void splitARGB(int argb, int& a, int& r, int& g, int& b);\n\n    /**\n     * Splits the given RGB integer into three integer RGB values from 0-255.\n     * Each of the <code>rr</code>, <code>gg</code>, and <code>bb</code> values\n     * are two-digit hexadecimal numbers indicating the intensity of that component.\n     * Ignores alpha transparency.\n     */\n    static void splitRGB(int rgb, int& r, int& g, int& b);\n\n    /**\n     * Converts a color string into a Qt color object.\n     * Preserves alpha transparency if the color string contains an alpha component.\n     */\n    static QColor toQColor(const std::string& color);\n\n    /**\n     * Converts an ARGB integer into a Qt color object.\n     * Preserves alpha transparency in the QColor object.\n     */\n    static QColor toQColorARGB(int argb);\n\nprivate:\n    GColor();   // forbid construction\n\n    /**\n     * Strips casing and punctuation; e.g. \"Dark Gray\" => \"darkgray\"\n     */\n    static std::string canonicalColorName(const std::string& str);\n\n    /**\n     * Returns a reference to the table of common colors,\n     * mapping from names to RGB integers.\n     */\n    static const Map<std::string, int>& colorTable();\n\n    /**\n     * Returns a reference to the table of common colors,\n     * mapping from names to color strings.\n     */\n    static const Map<std::string, std::string>& colorNameTable();\n\n    // internal color tables\n    static Map<std::string, int> _colorTable;\n    static Map<std::string, std::string> _colorNameTable;\n};\n\n#endif // _gcolor_h\n"
  },
  {
    "path": "Library/graphics/gcolorchooser.cpp",
    "content": "/*\n * File: gcolorchooser.cpp\n * -----------------------\n * This file implements the operations declared in the gcolorchooser.h file.\n * See gcolorchooser.h for documentation of each member.\n * \n * @author Marty Stepp\n * @version 2018/09/07\n * - added overloads that accept GWindow* parent\n * @version 2018/08/23\n * - renamed to gcolorchooser.cpp to replace Java version\n * @version 2018/07/29\n * - initial version\n */\n\n#include \"gcolorchooser.h\"\n#include <QColorDialog>\n#include \"gcolor.h\"\n#include \"gthread.h\"\n\nGColorChooser::GColorChooser() {\n    // empty\n}\n\nstd::string GColorChooser::showDialog(const std::string& title, int initialColor) {\n    return showDialog(/* parent */ (QWidget*) nullptr, title, initialColor);\n}\n\nstd::string GColorChooser::showDialog(GWindow* parent, const std::string& title, int initialColor) {\n    return showDialog(parent ? parent->getWidget() : nullptr, title, GColor::convertRGBToColor(initialColor));\n}\n\nstd::string GColorChooser::showDialog(QWidget* parent, const std::string& title, int initialColor) {\n    return showDialog(parent, title, GColor::convertRGBToColor(initialColor));\n}\n\nstd::string GColorChooser::showDialog(const std::string& title, const std::string& initialColor) {\n    return showDialog(/* parent */ (QWidget*) nullptr, title, initialColor);\n}\n\nstd::string GColorChooser::showDialog(GWindow* parent, const std::string& title, const std::string& initialColor) {\n    return showDialog(parent ? parent->getWidget() : nullptr, title, initialColor);\n}\n\nstd::string GColorChooser::showDialog(QWidget* parent, const std::string& title, const std::string& initialColor) {\n    QColor initialQColor = initialColor.empty() ? Qt::white : GColor::toQColor(initialColor);\n    std::string result = \"\";\n    GThread::runOnQtGuiThread([parent, title, initialQColor, &result]() {\n        QColor selectedColor = QColorDialog::getColor(initialQColor, parent, QString::fromStdString(title));\n        if (selectedColor.isValid()) {\n            result = GColor::convertQColorToColor(selectedColor);\n        }\n    });\n    return result;\n}\n"
  },
  {
    "path": "Library/graphics/gcolorchooser.h",
    "content": "/*\n * File: gcolorchooser.h\n * ---------------------\n * This file defines the <code>GColorChooser</code> class which supports\n * popping up graphical dialog boxes to select colors.\n * \n * @author Marty Stepp\n * @version 2018/09/07\n * - added doc comments for new documentation generation\n * - added overloads that accept GWindow* parent\n * @version 2018/08/23\n * - renamed to gcolorchooser.h to replace Java version\n * @version 2018/07/29\n * - initial version\n */\n\n\n#ifndef _gcolorchooser_h\n#define _gcolorchooser_h\n\n#include <string>\n#include <QWidget>\n\n#include \"gwindow.h\"\n\n/**\n * The GColorChooser class contains static methods for popping up color-choosing\n * dialog boxes that allow the user to select a color.\n * Each method blocks until the color is chosen and the dialog is closed,\n * returning the color the user chose (or an empty string if the user canceled).\n */\nclass GColorChooser {\npublic:\n    /**\n     * Pops up a color chooser dialog with the given top title text,\n     * with the given initial color selected.\n     * Returns the color that was chosen as a color string such as \"#ff0077\" or \"blue\".\n     */\n    static std::string showDialog(const std::string& title, int initialColor);\n\n    /**\n     * Pops up a color chooser dialog with the given top title text,\n     * with the given initial color selected.\n     * Returns the color that was chosen as a color string such as \"#ff0077\" or \"blue\".\n     */\n    static std::string showDialog(GWindow* parent, const std::string& title, int initialColor);\n\n    /**\n     * Pops up a color chooser dialog with the given top title text,\n     * with the given initial color selected.\n     * Returns the color that was chosen as a color string such as \"#ff0077\" or \"blue\".\n     */\n    static std::string showDialog(QWidget* parent, const std::string& title, int initialColor);\n\n    /**\n     * Pops up a color chooser dialog with the given top title text,\n     * with the given initial color selected.\n     * Returns the color that was chosen as a color string such as \"#ff0077\" or \"blue\".\n     */\n    static std::string showDialog(const std::string& title = \"\", const std::string& initialColor = \"\");\n\n    /**\n     * Pops up a color chooser dialog with the given top title text,\n     * with the given initial color selected.\n     * Returns the color that was chosen as a color string such as \"#ff0077\" or \"blue\".\n     */\n    static std::string showDialog(GWindow* parent, const std::string& title = \"\", const std::string& initialColor = \"\");\n\n    /**\n     * Pops up a color chooser dialog with the given top title text,\n     * with the given initial color selected.\n     * Returns the color that was chosen as a color string such as \"#ff0077\" or \"blue\".\n     */\n    static std::string showDialog(QWidget* parent, const std::string& title = \"\", const std::string& initialColor = \"\");\n\nprivate:\n    GColorChooser();   // prevent construction\n};\n\n#endif // _gcolorchooser_h\n"
  },
  {
    "path": "Library/graphics/gcontainer.cpp",
    "content": "/*\n * File: gcontainer.cpp\n * --------------------\n *\n * @author Marty Stepp\n * @version 2019/02/02\n * - destructor now stops event processing\n * @version 2018/11/27\n * - added code to set a widget visible after adding/inserting it to flow container\n *   (needed to see widgets added to container after window is showing on screen)\n * @version 2018/09/19\n * - added contains, regionContains methods\n * - added argument checking with require.h\n * @version 2018/09/05\n * - thread safety improvements\n * - added setContainer logic to child interactors\n * @version 2018/08/29\n * - initial version\n */\n\n#include \"gcontainer.h\"\n#include \"error.h\"\n#include \"glayout.h\"\n#include \"gthread.h\"\n#include \"require.h\"\n#include \"strlib.h\"\n\n// margin  - around container, but outside of its background color area (like CSS)\n// padding - around container, but within its background color area (like CSS)\n// spacing - between neighboring widgets in container\n\nconst int GContainer::MARGIN_DEFAULT = 5;\nconst int GContainer::SPACING_DEFAULT = 8;\n\n// JDZ: list of interactors seems to be used more as set than indexed/vector\n// this is a custom for use within this module as stop gap\n\ntemplate <typename ValueType>\nvoid removeValue(Vector<ValueType> &v, const ValueType& value) {\n    for (int i = 0; i < v.size(); i++) {\n        if (v[i] == value) {\n            v.remove(i);\n            return;\n        }\n    }\n}\nGContainer::GContainer(Layout layout, QWidget* parent)\n        : _iqcontainer(nullptr),\n          _layout(layout) {\n    GThread::runOnQtGuiThread([this, layout, parent]() {\n        _iqcontainer = new _Internal_QContainer(this, layout, getInternalParent(parent));\n    });\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGContainer::GContainer(Layout /*layout*/, int rows, int cols, QWidget* parent)\n        : _iqcontainer(nullptr),\n          _layout(LAYOUT_GRID) {\n    GThread::runOnQtGuiThread([this, rows, cols, parent]() {\n        _iqcontainer = new _Internal_QContainer(this, rows, cols, getInternalParent(parent));\n    });\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGContainer::~GContainer() {\n    // TODO: delete _iqcontainer;\n    _iqcontainer->detach();\n    _iqcontainer = nullptr;\n}\n\nvoid GContainer::add(GInteractor* interactor) {\n    require::nonNull(interactor, \"GContainer::add\");\n    QWidget* widget = interactor->getWidget();\n    if (!widget) {\n        return;\n    }\n\n    interactor->setContainer(this);\n    _interactors.add(interactor);\n\n    GThread::runOnQtGuiThread([this, widget]() {\n        widget->setParent(_iqcontainer);\n        _iqcontainer->add(widget);\n    });\n}\n\nvoid GContainer::add(GInteractor& interactor) {\n    add(&interactor);\n}\n\nvoid GContainer::addToGrid(GInteractor* interactor, int row, int col, int rowspan, int colspan) {\n    require::nonNull(interactor, \"GContainer::addToGrid\");\n    QWidget* widget = interactor->getWidget();\n    if (!widget) {\n        return;\n    }\n\n    GThread::runOnQtGuiThread([this, widget, row, col, rowspan, colspan]() {\n        _iqcontainer->addToGrid(widget, row, col, rowspan, colspan);\n    });\n}\n\nvoid GContainer::addToGrid(GInteractor& interactor, int row, int col, int rowspan, int colspan) {\n    addToGrid(&interactor, row, col, rowspan, colspan);\n}\n\nvoid GContainer::addToRegion(GInteractor* interactor, Region region) {\n    require::nonNull(interactor, \"GContainer::addToRegion\");\n    QWidget* widget = interactor->getWidget();\n    if (!widget) {\n        return;\n    }\n\n    // special case: if center, remove all other widgets in that region first\n    if (region == REGION_CENTER) {\n        clearRegion(region);\n    }\n\n    interactor->setContainer(this);\n    _interactors.add(interactor);\n    _interactorsByRegion[region].add(interactor);\n\n    GThread::runOnQtGuiThread([this, widget, region]() {\n        _iqcontainer->addToRegion(widget, region);\n    });\n}\n\nvoid GContainer::addToRegion(GInteractor* interactor, const std::string& region) {\n    addToRegion(interactor, stringToRegion(region));\n}\n\nvoid GContainer::addToRegion(GInteractor& interactor, Region region) {\n    addToRegion(&interactor, region);\n}\n\nvoid GContainer::addToRegion(GInteractor& interactor, const std::string& region) {\n    addToRegion(&interactor, region);\n}\n\nvoid GContainer::clear() {\n    for (GInteractor* interactor : _interactors) {\n        interactor->setContainer(nullptr);\n    }\n    _interactors.clear();\n    _interactorsByRegion.clear();\n\n    GThread::runOnQtGuiThread([this]() {\n        _iqcontainer->clear();\n    });\n}\n\nvoid GContainer::clearRegion(Region region) {\n    for (GInteractor* interactor : _interactorsByRegion[region]) {\n        interactor->setContainer(nullptr);\n        interactor->setVisible(false);\n        removeValue(_interactors, interactor);\n    }\n    _interactorsByRegion.remove(region);\n\n    GThread::runOnQtGuiThread([this, region]() {\n        _iqcontainer->clearRegion(region);\n    });\n}\n\nvoid GContainer::clearRegion(const std::string& region) {\n    clearRegion(stringToRegion(region));\n}\n\nbool GContainer::contains(GInteractor* interactor) const {\n    if (!interactor) {\n        return false;\n    } else {\n        return _iqcontainer->contains(interactor->getWidget());\n    }\n}\n\nbool GContainer::contains(GInteractor& interactor) const {\n    return contains(&interactor);\n}\n\nVector<GInteractor*> GContainer::getDescendents(const std::string& type) const {\n    Vector<GInteractor*> result;\n    for (GInteractor* interactor : _interactors) {\n        // pre-order traversal; add parent and then visit children\n        if (type.empty() || type == \"*\" || equalsIgnoreCase(type, interactor->getType())) {\n            result.add(interactor);\n        }\n\n        if (equalsIgnoreCase(interactor->getType(), \"GContainer\")) {\n            // recursively get all descendents of this child\n            GContainer* subcontainer = static_cast<GContainer*>(interactor);\n            Vector<GInteractor*> descendents = subcontainer->getDescendents(type);\n            result.addAll(descendents);\n        }\n    }\n    return result;\n}\n\nGInteractor* GContainer::getInteractor(int i) const {\n    return _interactors[i];\n}\n\nconst Vector<GInteractor*>& GContainer::getInteractors() const {\n    return _interactors;\n}\n\nint GContainer::getInteractorCount() const {\n    return _interactors.size();\n}\n\nGInteractor* GContainer::getInteractorByRegion(int i, Region region) const {\n    return _interactorsByRegion[region][i];\n}\n\nGInteractor* GContainer::getInteractorByRegion(int i, const std::string& region) const {\n    return getInteractorByRegion(i, stringToRegion(region));\n}\n\nint GContainer::getInteractorCountByRegion(Region region) const {\n    return _interactorsByRegion[region].size();\n}\n\nint GContainer::getInteractorCountByRegion(const std::string& region) const {\n    return getInteractorCountByRegion(stringToRegion(region));\n}\n\n\n_Internal_QWidget* GContainer::getInternalWidget() const {\n    return _iqcontainer;\n}\n\nGContainer::Layout GContainer::getLayout() const {\n    return _layout;\n}\n\ndouble GContainer::getMargin() const {\n    return _iqcontainer->getMargin();\n}\n\ndouble GContainer::getPadding() const {\n    QMargins m = _iqcontainer->contentsMargins();\n    return (m.left() + m.top() + m.right() + m.bottom()) / 4.0;\n}\n\ndouble GContainer::getPaddingBottom() const {\n    return _iqcontainer->contentsMargins().bottom();\n}\n\ndouble GContainer::getPaddingLeft() const {\n    return _iqcontainer->contentsMargins().left();\n}\n\ndouble GContainer::getPaddingRight() const {\n    return _iqcontainer->contentsMargins().right();\n}\n\ndouble GContainer::getPaddingTop() const {\n    return _iqcontainer->contentsMargins().top();\n}\n\nGDimension GContainer::getPreferredSize() const {\n    QSize qsize = _iqcontainer->getPreferredSize();\n    return GDimension(qsize.width(), qsize.height());\n}\n\ndouble GContainer::getRegionHeight(Region region) const {\n    return getRegionSize(region).height;\n}\n\ndouble GContainer::getRegionHeight(const std::string& region) const {\n    return getRegionHeight(stringToRegion(region));\n}\n\nGDimension GContainer::getRegionSize(Region region) const {\n    QLayout* layout = _iqcontainer->layoutForRegion(region);\n    if (!layout) {\n        return GDimension();\n    } else {\n        QRect geom = layout->geometry();\n        return GDimension(geom.width(), geom.height());\n    }\n}\n\nGDimension GContainer::getRegionSize(const std::string& region) const {\n    return getRegionSize(stringToRegion(region));\n}\n\ndouble GContainer::getRegionWidth(Region region) const {\n    return getRegionSize(region).width;\n}\n\ndouble GContainer::getRegionWidth(const std::string& region) const {\n    return getRegionWidth(stringToRegion(region));\n}\n\ndouble GContainer::getSpacing() const {\n    return _iqcontainer->getSpacing();\n}\n\nstd::string GContainer::getType() const {\n    return \"GContainer\";\n}\n\nQWidget* GContainer::getWidget() const {\n    return static_cast<QWidget*>(_iqcontainer);\n}\n\nvoid GContainer::insert(int index, GInteractor* interactor) {\n    require::nonNull(interactor, \"GContainer::insert\");\n    QWidget* widget = interactor->getWidget();\n    if (!widget) {\n        return;\n    }\n\n    interactor->setContainer(this);\n    _interactors.insert(index, interactor);\n\n    GThread::runOnQtGuiThread([this, index, widget]() {\n        _iqcontainer->insert(index, widget);\n    });\n}\n\nvoid GContainer::insert(int index, GInteractor& interactor) {\n    insert(index, &interactor);\n}\n\nvoid GContainer::insertToRegion(int index, GInteractor* interactor, Region region) {\n    require::nonNull(interactor, \"GContainer::insertToRegion\");\n    QWidget* widget = interactor->getWidget();\n    if (!widget) {\n        return;\n    }\n\n    interactor->setContainer(this);\n    _interactors.add(interactor);\n    _interactorsByRegion[region].insert(index, interactor);\n\n    GThread::runOnQtGuiThread([this, index, widget, region]() {\n        _iqcontainer->insertToRegion(index, widget, region);\n    });\n}\n\nvoid GContainer::insertToRegion(int index, GInteractor* interactor, const std::string& region) {\n    insertToRegion(index, interactor, stringToRegion(region));\n}\n\nvoid GContainer::insertToRegion(int index, GInteractor& interactor, Region region) {\n    insertToRegion(index, &interactor, region);\n}\n\nvoid GContainer::insertToRegion(int index, GInteractor& interactor, const std::string& region) {\n    insertToRegion(index, &interactor, stringToRegion(region));\n}\n\nbool GContainer::isEmpty() const {\n    return getInteractorCount() == 0;\n}\n\nbool GContainer::regionContains(GInteractor* interactor, GContainer::Region region) const {\n    if (!interactor) {\n        return false;\n    } else {\n        return _iqcontainer->regionContains(interactor->getWidget(), region);\n    }\n}\n\nbool GContainer::regionContains(GInteractor* interactor, const std::string& region) const {\n    return regionContains(interactor, stringToRegion(region));\n}\n\nbool GContainer::regionContains(GInteractor& interactor, GContainer::Region region) const {\n    return regionContains(&interactor, region);\n}\n\nbool GContainer::regionContains(GInteractor& interactor, const std::string& region) const {\n    return regionContains(interactor, stringToRegion(region));\n}\n\n\nvoid GContainer::remove(GInteractor* interactor) {\n    require::nonNull(interactor, \"GContainer::remove\");\n    QWidget* widget = interactor->getWidget();\n    if (!widget) {\n        return;\n    }\n\n    interactor->setContainer(nullptr);\n    removeValue(_interactors, interactor);\n\n    GThread::runOnQtGuiThread([this, widget]() {\n        _iqcontainer->remove(widget);\n    });\n}\n\nvoid GContainer::remove(GInteractor& interactor) {\n    remove(&interactor);\n}\n\nvoid GContainer::remove(int index) {\n    GInteractor* interactor = _interactors[index];\n    interactor->setContainer(nullptr);\n    _interactors.remove(index);\n\n    GThread::runOnQtGuiThread([this, index]() {\n        _iqcontainer->remove(index);\n    });\n}\n\nvoid GContainer::removeFromRegion(GInteractor* interactor, Region region) {\n    require::nonNull(interactor, \"GContainer::removeFromRegion\");\n    QWidget* widget = interactor->getWidget();\n    if (!widget) {\n        return;\n    }\n\n    interactor->setContainer(nullptr);\n    removeValue(_interactors, interactor);\n    removeValue(_interactorsByRegion[region], interactor);\n\n    GThread::runOnQtGuiThread([this, widget, region]() {\n        _iqcontainer->removeFromRegion(widget, region);\n    });\n}\n\nvoid GContainer::removeFromRegion(GInteractor* interactor, const std::string& region) {\n    removeFromRegion(interactor, stringToRegion(region));\n}\n\nvoid GContainer::removeFromRegion(GInteractor& interactor, Region region) {\n    removeFromRegion(&interactor, region);\n}\n\nvoid GContainer::removeFromRegion(GInteractor& interactor, const std::string& region) {\n    removeFromRegion(&interactor, region);\n}\n\nvoid GContainer::removeFromRegion(int index, Region region) {\n    GInteractor* interactor = _interactorsByRegion[region][index];\n    interactor->setContainer(nullptr);\n    removeValue(_interactors, interactor);\n    _interactorsByRegion[region].remove(index);\n\n    GThread::runOnQtGuiThread([this, index, region]() {\n        _iqcontainer->removeFromRegion(index, region);\n    });\n}\n\nvoid GContainer::removeFromRegion(int index, const std::string& region) {\n    removeFromRegion(index, stringToRegion(region));\n}\n\nvoid GContainer::setAlignment(HorizontalAlignment halign, VerticalAlignment valign) {\n    setHorizontalAlignment(halign);\n    setVerticalAlignment(valign);\n}\n\nvoid GContainer::setHorizontalAlignment(HorizontalAlignment halign) {\n    GThread::runOnQtGuiThread([this, halign]() {\n        _iqcontainer->setHorizontalAlignment(halign);\n    });\n}\n\nvoid GContainer::setMargin(double px) {\n    GThread::runOnQtGuiThread([this, px]() {\n        _iqcontainer->setMargin((int) px);\n    });\n}\n\nvoid GContainer::setPadding(double px) {\n    setPadding(px, px, px, px);\n}\n\nvoid GContainer::setPadding(double topBottom, double leftRight) {\n    setPadding(topBottom, leftRight, topBottom, leftRight);\n}\n\nvoid GContainer::setPadding(double top, double right, double bottom, double left) {\n    GThread::runOnQtGuiThread([this, top, right, bottom, left]() {\n        _iqcontainer->setPadding((int) top, (int) right, (int) bottom, (int) left);\n    });\n}\n\nvoid GContainer::setRegionAlignment(Region region, HorizontalAlignment halign) {\n    setRegionHorizontalAlignment(region, halign);\n}\n\nvoid GContainer::setRegionAlignment(Region region, VerticalAlignment valign) {\n    setRegionVerticalAlignment(region, valign);\n}\n\nvoid GContainer::setRegionAlignment(Region region, HorizontalAlignment halign, VerticalAlignment valign) {\n    GThread::runOnQtGuiThread([this, region, halign, valign]() {\n        _iqcontainer->setRegionAlignment(region, halign, valign);\n    });\n}\n\nvoid GContainer::setRegionAlignment(const std::string& region, const std::string& align) {\n    HorizontalAlignment halignment = toHorizontalAlignment(align);\n    VerticalAlignment valignment = toVerticalAlignment(align);\n    setRegionAlignment(stringToRegion(region), halignment, valignment);\n}\n\nvoid GContainer::setRegionAlignment(const std::string& region, const std::string& halign, const std::string& valign) {\n    HorizontalAlignment halignment = toHorizontalAlignment(halign);\n    VerticalAlignment valignment = toVerticalAlignment(valign);\n    setRegionAlignment(stringToRegion(region), halignment, valignment);\n}\n\nvoid GContainer::setRegionHorizontalAlignment(Region region, HorizontalAlignment halign) {\n    GThread::runOnQtGuiThread([this, region, halign]() {\n        _iqcontainer->setRegionHorizontalAlignment(region, halign);\n    });\n}\n\nvoid GContainer::setRegionHorizontalAlignment(const std::string& region, const std::string& halign) {\n    setRegionHorizontalAlignment(stringToRegion(region), toHorizontalAlignment(halign));\n}\n\nvoid GContainer::setRegionVerticalAlignment(Region region, VerticalAlignment valign) {\n    GThread::runOnQtGuiThread([this, region, valign]() {\n        _iqcontainer->setRegionVerticalAlignment(region, valign);\n    });\n}\n\nvoid GContainer::setRegionVerticalAlignment(const std::string& region, const std::string& valign) {\n    setRegionVerticalAlignment(stringToRegion(region), toVerticalAlignment(valign));\n}\n\nvoid GContainer::setSpacing(double px) {\n    GThread::runOnQtGuiThread([this, px]() {\n        _iqcontainer->setSpacing((int) px);\n    });\n}\n\nvoid GContainer::setVerticalAlignment(VerticalAlignment valign) {\n    GThread::runOnQtGuiThread([this, valign]() {\n        _iqcontainer->setVerticalAlignment(valign);\n    });\n}\n\nGContainer::Region GContainer::stringToRegion(const std::string& regionStr) {\n    std::string regionLC = toLowerCase(trim(regionStr));\n    if (stringContains(regionLC, \"north\") || stringContains(regionLC, \"top\")) {\n        return REGION_NORTH;\n    } else if (stringContains(regionLC, \"south\") || stringContains(regionLC, \"bottom\")) {\n        return REGION_SOUTH;\n    } else if (stringContains(regionLC, \"west\") || stringContains(regionLC, \"left\")) {\n        return REGION_WEST;\n    } else if (stringContains(regionLC, \"east\") || stringContains(regionLC, \"right\")) {\n        return REGION_EAST;\n    } else {\n        return REGION_CENTER;\n    }\n}\n\n\n_Internal_QContainer::_Internal_QContainer(GContainer* gcontainer, GContainer::Layout layoutType, QWidget* parent)\n        : QWidget(parent),\n          _gcontainer(gcontainer),\n          _layoutType(GContainer::LAYOUT_NONE),\n          _halign(ALIGN_CENTER),\n          _valign(ALIGN_MIDDLE),\n          _margin(GContainer::MARGIN_DEFAULT),\n          _spacing(GContainer::SPACING_DEFAULT),\n          // _rows(0),\n          _cols(0),\n          _currentIndex(-1),\n          _overallLayout(nullptr),\n          _northLayout(nullptr),\n          _southLayout(nullptr),\n          _westLayout(nullptr),\n          _eastLayout(nullptr),\n          _centerLayout(nullptr),\n          _middleLayout(nullptr) {\n    require::nonNull(gcontainer, \"_Internal_QContainer::constructor\");\n    setLayoutType(layoutType);\n    if (layout()) {\n        setSpacing(GContainer::SPACING_DEFAULT);\n    }\n}\n\n_Internal_QContainer::_Internal_QContainer(GContainer* gcontainer, int /*rows*/, int cols, QWidget* parent)\n        : QWidget(parent),\n          _gcontainer(gcontainer),\n          _layoutType(GContainer::LAYOUT_NONE),\n          _halign(ALIGN_CENTER),\n          _valign(ALIGN_MIDDLE),\n          _margin(GContainer::MARGIN_DEFAULT),\n          _spacing(GContainer::SPACING_DEFAULT),\n          // _rows(rows),\n          _cols(cols),\n          _currentIndex(-1),\n          _overallLayout(nullptr),\n          _northLayout(nullptr),\n          _southLayout(nullptr),\n          _westLayout(nullptr),\n          _eastLayout(nullptr),\n          _centerLayout(nullptr),\n          _middleLayout(nullptr) {\n    setObjectName(QString::fromStdString(\"_Internal_QContainer_\" + std::to_string(gcontainer->getID())));\n    setLayoutType(GContainer::LAYOUT_GRID);\n    if (layout()) {\n        setMargin(GContainer::MARGIN_DEFAULT);\n        setSpacing(GContainer::SPACING_DEFAULT);\n    }\n}\n\nvoid _Internal_QContainer::add(QWidget* widget) {\n    switch (_layoutType) {\n        case GContainer::LAYOUT_BORDER: {\n            addToRegion(widget, GContainer::REGION_CENTER);\n            break;\n        }\n        case GContainer::LAYOUT_GRID: {\n            _currentIndex++;\n            int row = _cols <= 0 ? 0 : _currentIndex / _cols;\n            int col = _cols <= 0 ? 0 : _currentIndex % _cols;\n            QGridLayout* gridLayout = (QGridLayout*) getQLayout();\n            gridLayout->addWidget(widget, row, col);\n            widget->setVisible(true);\n            GLayout::forceUpdate(this);\n            break;\n        }\n        case GContainer::LAYOUT_FLOW_HORIZONTAL:\n        case GContainer::LAYOUT_FLOW_VERTICAL: {\n            // add to end of the list of widgets in this region\n            QBoxLayout* boxLayout = (QBoxLayout*) getQLayout();\n            boxLayout->insertWidget(/* index */ boxLayout->count() - 1, widget);\n            widget->setVisible(true);\n            GLayout::forceUpdate(this);\n            break;\n        }\n        default: {\n            error(\"GContainer::add: no layout has been set\");\n            break;\n        }\n    }\n}\n\nvoid _Internal_QContainer::addToGrid(QWidget* widget, int row, int col, int rowspan, int colspan) {\n    if (_layoutType == GContainer::LAYOUT_GRID) {\n        QGridLayout* gridLayout = (QGridLayout*) getQLayout();\n        gridLayout->addWidget(widget, row, col, rowspan, colspan);\n        _currentIndex = row * _cols + col;   // approximate\n        widget->setVisible(true);\n        GLayout::forceUpdate(this);\n    } else {\n        add(widget);\n    }\n}\n\nvoid _Internal_QContainer::addToRegion(QWidget* widget, GContainer::Region region) {\n    if (_layoutType == GContainer::LAYOUT_BORDER) {\n        QBoxLayout* layout = (QBoxLayout*) layoutForRegion(region);\n        if (region == GContainer::REGION_CENTER) {\n            // center holds at most one widget\n            GLayout::clearLayout(layout);\n\n            // http://doc.qt.io/qt-5/qsizepolicy.html\n            QSizePolicy sizePolicy;\n            sizePolicy.setHorizontalPolicy(QSizePolicy::Ignored);\n            sizePolicy.setVerticalPolicy(QSizePolicy::Ignored);\n            sizePolicy.setHorizontalStretch(999);\n            sizePolicy.setVerticalStretch(999);\n            widget->setSizePolicy(sizePolicy);\n\n            layout->addWidget(widget, /* stretch */ 999);\n        } else {\n            // add to end of the list of widgets in this region\n            widget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);\n            layout->insertWidget(/* index */ layout->count() - 1, widget, /* stretch */ 0);\n        }\n        widget->setVisible(true);\n\n        // set alignment of widget\n        fixAlignment(widget, region);\n        fixMargin(layout, /* hasStretch */ region != GContainer::REGION_CENTER);\n        GLayout::forceUpdate(this);\n    } else {\n        add(widget);\n    }\n}\n\nvoid _Internal_QContainer::clear() {\n    if (_layoutType == GContainer::LAYOUT_BORDER) {\n        clearRegion(GContainer::REGION_NORTH);\n        clearRegion(GContainer::REGION_SOUTH);\n        clearRegion(GContainer::REGION_WEST);\n        clearRegion(GContainer::REGION_EAST);\n        clearRegion(GContainer::REGION_CENTER);\n    } else {\n        GLayout::clearLayout(layout());\n        _currentIndex = -1;\n        setHorizontalAlignment(getHorizontalAlignment());\n        setVerticalAlignment(getVerticalAlignment());\n    }\n}\n\nvoid _Internal_QContainer::clearRegion(GContainer::Region region) {\n    if (_layoutType == GContainer::LAYOUT_BORDER) {\n        QLayout* layout = layoutForRegion(region);\n        GLayout::clearLayout(layout);\n        fixMargin(layout, /* hasStretch */ region != GContainer::REGION_CENTER);\n        GLayout::forceUpdate(this);\n    } else {\n        clear();\n    }\n}\n\nbool _Internal_QContainer::contains(QWidget* widget) const {\n    if (_layoutType == GContainer::LAYOUT_BORDER) {\n        return GLayout::contains(_northLayout, widget)\n                || GLayout::contains(_southLayout, widget)\n                || GLayout::contains(_westLayout, widget)\n                || GLayout::contains(_eastLayout, widget)\n                || GLayout::contains(_centerLayout, widget);\n    } else {\n        return GLayout::contains(getQLayout(), widget);\n    }\n}\n\nvoid _Internal_QContainer::detach() {\n    // TODO: nullify/delete regions\n    _gcontainer = nullptr;\n}\n\nvoid _Internal_QContainer::fixAlignment(QWidget* widget, GContainer::Region region) {\n    // needs to be run on GUI thread\n    if (_layoutType == GContainer::LAYOUT_BORDER) {\n        QLayout* layout = layoutForRegion(region);\n        if (_halignMap.containsKey(region) && _valignMap.containsKey(region)) {\n            layout->setAlignment(widget, toQtAlignment(_halignMap[region]) | toQtAlignment(_valignMap[region]));\n        } else if (_halignMap.containsKey(region)) {\n            layout->setAlignment(widget, toQtAlignment(_halignMap[region]));\n        } else if (_valignMap.containsKey(region)) {\n            layout->setAlignment(widget, toQtAlignment(_valignMap[region]));\n        }\n    } else {\n        layout()->setAlignment(widget, toQtAlignment(_halign) | toQtAlignment(_valign));\n    }\n}\n\nvoid _Internal_QContainer::fixMargin(QLayout* layout, bool hasStretch) {\n    if (!hasStretch) {\n        return;\n    }\n    int emptyCount = hasStretch ? 2 : 0;\n    if (layout->count() <= emptyCount) {\n        layout->setContentsMargins(0,0,0,0);\n    } else {\n        auto m = getMargin();\n        layout->setContentsMargins(m,m,m,m);\n    }\n    GLayout::invalidateLayout(layout);\n}\n\nHorizontalAlignment _Internal_QContainer::getHorizontalAlignment() const {\n    return _halign;\n}\n\nGContainer::Layout _Internal_QContainer::getLayoutType() const {\n    return _layoutType;\n}\n\nint _Internal_QContainer::getMargin() const {\n    return _margin;\n}\n\nQSize _Internal_QContainer::getPreferredSize() const {\n    // make sure the layout has calculated everybody's position/size\n    // GLayout::forceUpdate((QWidget*) this);\n\n    if (_layoutType == GContainer::LAYOUT_BORDER) {\n        QSize north = GLayout::getProperSize(_northLayout);\n        QSize south = GLayout::getProperSize(_southLayout);\n        QSize west = GLayout::getProperSize(_westLayout);\n        QSize east = GLayout::getProperSize(_eastLayout);\n\n        QSize center(0, 0);\n        if (!_centerLayout->isEmpty()) {\n            QWidget* centerWidget = _centerLayout->itemAt(0)->widget();\n            center = GLayout::getPreferredSize(centerWidget);\n        }\n\n        int preferredWidth = center.width() + west.width() + east.width();\n        int preferredHeight = center.height() + north.height() + south.height();\n        return QSize(preferredWidth, preferredHeight);\n    } else {\n        return layout()->sizeHint();\n    }\n}\n\nQLayout* _Internal_QContainer::getQLayout() const {\n    return layout();\n}\n\nint _Internal_QContainer::getSpacing() const {\n    return _spacing;\n}\n\nVerticalAlignment _Internal_QContainer::getVerticalAlignment() const {\n    return _valign;\n}\n\nvoid _Internal_QContainer::insert(int i, QWidget* widget) {\n    switch (_layoutType) {\n        case GContainer::LAYOUT_BORDER: {\n            insertToRegion(i, widget, GContainer::REGION_CENTER);\n            break;\n        }\n        case GContainer::LAYOUT_GRID: {\n            int row = _cols <= 0 ? 0 : i / _cols;\n            int col = _cols <= 0 ? 0 : i % _cols;\n            QGridLayout* gridLayout = (QGridLayout*) getQLayout();\n            gridLayout->addWidget(widget, row, col);\n            widget->setVisible(true);\n            GLayout::forceUpdate(this);\n            break;\n        }\n        case GContainer::LAYOUT_FLOW_HORIZONTAL:\n        case GContainer::LAYOUT_FLOW_VERTICAL:\n        default: {\n            // index is off by 1 because of 'stretch' widgets at start/end\n            QBoxLayout* boxLayout = (QBoxLayout*) getQLayout();\n            boxLayout->insertWidget(/* index */ i - 1, widget);\n            widget->setVisible(true);\n            GLayout::forceUpdate(this);\n            break;\n        }\n    }\n}\n\nvoid _Internal_QContainer::insertToRegion(int i, QWidget* widget, GContainer::Region region) {\n    if (_layoutType == GContainer::LAYOUT_BORDER) {\n        QLayout* layout = layoutForRegion(region);\n        if (region == GContainer::REGION_CENTER) {\n            // center holds at most one widget\n            GLayout::clearLayout(layout);\n            layout->addWidget(widget);\n            widget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);\n        } else {\n            // index is off by 1 because of 'stretch' widgets at start/end\n            ((QBoxLayout*) layout)->insertWidget(/* index */ i + 1, widget);\n            widget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);\n        }\n        widget->setVisible(true);\n\n        // set alignment of widget\n        fixAlignment(widget, region);\n        fixMargin(layout, /* hasStretch */ region != GContainer::REGION_CENTER);\n\n        GLayout::forceUpdate(this);\n    } else {\n        insert(i, widget);\n    }\n}\n\nbool _Internal_QContainer::isRegionStretch(GContainer::Region region) const {\n    return _regionStretchMap[region];\n}\n\nQLayout* _Internal_QContainer::layoutForRegion(GContainer::Region region) const {\n    if (region == GContainer::REGION_NORTH) {\n        return _northLayout;\n    } else if (region == GContainer::REGION_SOUTH) {\n        return _southLayout;\n    } else if (region == GContainer::REGION_WEST) {\n        return _westLayout;\n    } else if (region == GContainer::REGION_EAST) {\n        return _eastLayout;\n    } else {\n        return _centerLayout;\n    }\n}\n\nbool _Internal_QContainer::regionContains(QWidget* widget, GContainer::Region region) const {\n    if (_layoutType == GContainer::LAYOUT_BORDER) {\n        QLayout* layout = layoutForRegion(region);\n        return GLayout::contains(layout, widget);\n    } else {\n        return contains(widget);\n    }\n}\n\nvoid _Internal_QContainer::remove(QWidget* widget) {\n    if (_layoutType == GContainer::LAYOUT_BORDER) {\n        removeFromRegion(widget, GContainer::REGION_CENTER);\n        removeFromRegion(widget, GContainer::REGION_NORTH);\n        removeFromRegion(widget, GContainer::REGION_SOUTH);\n        removeFromRegion(widget, GContainer::REGION_WEST);\n        removeFromRegion(widget, GContainer::REGION_EAST);\n    } else if (layout()) {\n        layout()->removeWidget(widget);\n        GLayout::forceUpdate(this);\n    }\n}\n\nvoid _Internal_QContainer::removeFromRegion(QWidget* widget, GContainer::Region region) {\n    if (_layoutType == GContainer::LAYOUT_BORDER) {\n        QLayout* layout = layoutForRegion(region);\n        if (GLayout::contains(layout, widget)) {\n            widget->setVisible(false);\n            layout->removeWidget(widget);\n            layout->update();\n            fixMargin(layout, /* hasStretch */ region != GContainer::REGION_CENTER);\n            GLayout::forceUpdate(this);\n        }\n    } else {\n        remove(widget);\n    }\n}\n\nvoid _Internal_QContainer::remove(int i) {\n    if (_layoutType == GContainer::LAYOUT_BORDER) {\n        removeFromRegion(i, GContainer::REGION_CENTER);\n    } else {\n        QWidget* widget = layout()->itemAt(i)->widget();\n        if (widget) {\n            widget->setVisible(false);\n        }\n        // add +1 to the index to account for the 'stretch' at start\n        layout()->removeItem(layout()->itemAt(i + 1));\n        layout()->update();\n        GLayout::forceUpdate(this);\n    }\n}\n\nvoid _Internal_QContainer::removeFromRegion(int i, GContainer::Region region) {\n    if (_layoutType == GContainer::LAYOUT_BORDER) {\n        QLayout* layout = layoutForRegion(region);\n        QWidget* widget = layout->itemAt(i)->widget();\n        widget->setVisible(false);\n        if (layout == _centerLayout) {\n            layout->removeItem(layout->itemAt(i));\n        } else {\n            // add +1 to the index to account for the 'stretch' at start\n            layout->removeItem(layout->itemAt(i + 1));\n        }\n        layout->update();\n        fixMargin(layout, /* hasStretch */ region != GContainer::REGION_CENTER);\n        GLayout::forceUpdate(this);\n    } else {\n        remove(i);\n    }\n}\n\nvoid _Internal_QContainer::setPadding(int padding) {\n    setPadding(padding, padding, padding, padding);\n}\n\nvoid _Internal_QContainer::setPadding(int top, int right, int bottom, int left) {\n    QWidget::setContentsMargins(left, top, right, bottom);   // call super\n    if (_layoutType == GContainer::LAYOUT_BORDER) {\n        _northLayout->setContentsMargins(left, top, right, bottom);\n        _southLayout->setContentsMargins(left, top, right, bottom);\n        _westLayout->setContentsMargins(left, top, right, bottom);\n        _eastLayout->setContentsMargins(left, top, right, bottom);\n        // _centerLayout->setContentsMargins(left, top, right, bottom);\n        // _overallLayout->setContentsMargins(left, top, right, bottom);\n        // _middleLayout->setContentsMargins(left, top, right, bottom);\n    }\n    GLayout::forceUpdate(this);\n}\n\nvoid _Internal_QContainer::setHorizontalAlignment(HorizontalAlignment halign) {\n    switch (_layoutType) {\n        case GContainer::LAYOUT_FLOW_HORIZONTAL: {\n            // to align \"left\", limit first stretch;\n            // to align \"right\", limit last stretch\n            QHBoxLayout* layout = (QHBoxLayout*) getQLayout();\n            if (layout->count() >= 2) {\n                layout->removeItem(layout->itemAt(0));\n                layout->removeItem(layout->itemAt(layout->count() - 1));\n            }\n            if (halign == ALIGN_LEFT) {\n                layout->insertStretch(0, /* stretch */ 0);\n                layout->addStretch(/* stretch */ 99);\n            } else if (halign == ALIGN_RIGHT) {\n                layout->insertStretch(0, /* stretch */ 99);\n                layout->addStretch(/* stretch */ 0);\n            } else {   // halign == ALIGN_CENTER\n                layout->insertStretch(0, /* stretch */ 99);\n                layout->addStretch(/* stretch */ 99);\n            }\n            break;\n        }\n        case GContainer::LAYOUT_FLOW_VERTICAL: {\n            // set each widget's horizontal alignment individually\n            QVBoxLayout* layout = (QVBoxLayout*) getQLayout();\n            Qt::Alignment qtAlign = toQtAlignment(halign);\n            for (int i = 1; i < layout->count() - 1; i++) {\n                QWidget* widget = layout->itemAt(i)->widget();\n                if (widget) {\n                    layout->setAlignment(widget, qtAlign);\n                }\n            }\n            break;\n        }\n        case GContainer::LAYOUT_GRID: {\n            // set each widget's horizontal alignment individually\n            QGridLayout* layout = (QGridLayout*) getQLayout();\n            Qt::Alignment qtAlign = toQtAlignment(halign);\n            for (int i = 0; i < layout->count(); i++) {\n                QWidget* widget = layout->itemAt(i)->widget();\n                if (widget) {\n                    layout->setAlignment(widget, qtAlign);\n                }\n            }\n            break;\n        }\n        case GContainer::LAYOUT_BORDER: {\n            // - set align of ALL regions in align map\n            setRegionHorizontalAlignment(GContainer::REGION_CENTER, halign);\n            setRegionHorizontalAlignment(GContainer::REGION_NORTH, halign);\n            setRegionHorizontalAlignment(GContainer::REGION_SOUTH, halign);\n            setRegionHorizontalAlignment(GContainer::REGION_EAST, halign);\n            setRegionHorizontalAlignment(GContainer::REGION_WEST, halign);\n            break;\n        }\n        default: {\n            break;\n        }\n    }\n}\n\nvoid _Internal_QContainer::setLayoutType(GContainer::Layout layoutType) {\n    if (layoutType == _layoutType) {\n        return;   // don't do work if it's the same layout\n    }\n\n    if (_layoutType == GContainer::LAYOUT_BORDER\n            && layoutType != GContainer::LAYOUT_BORDER) {\n        // get rid of the now-unneeded inner layouts\n        _overallLayout = nullptr;\n        _northLayout   = nullptr;\n        _southLayout   = nullptr;\n        _westLayout    = nullptr;\n        _eastLayout    = nullptr;\n        _centerLayout  = nullptr;\n        _middleLayout  = nullptr;\n    }\n\n    _layoutType = layoutType;\n    switch (layoutType) {\n        case GContainer::LAYOUT_BORDER: {\n            // set up border regions\n            _overallLayout = new QVBoxLayout;\n            _overallLayout->setObjectName(QString::fromStdString(\"_overallLayout_\" + std::to_string(_gcontainer->getID())));\n            _northLayout   = new QHBoxLayout;\n            _northLayout->setObjectName(QString::fromStdString(\"_northLayout_\" + std::to_string(_gcontainer->getID())));\n            _southLayout   = new QHBoxLayout;\n            _southLayout->setObjectName(QString::fromStdString(\"_southLayout_\" + std::to_string(_gcontainer->getID())));\n            _westLayout    = new QVBoxLayout;\n            _westLayout->setObjectName(QString::fromStdString(\"_westLayout_\" + std::to_string(_gcontainer->getID())));\n            _eastLayout    = new QVBoxLayout;\n            _eastLayout->setObjectName(QString::fromStdString(\"_eastLayout_\" + std::to_string(_gcontainer->getID())));\n            _centerLayout  = new QHBoxLayout;\n            _centerLayout->setObjectName(QString::fromStdString(\"_centerLayout_\" + std::to_string(_gcontainer->getID())));\n            _middleLayout  = new QHBoxLayout;\n            _middleLayout->setObjectName(QString::fromStdString(\"_middleLayout_\" + std::to_string(_gcontainer->getID())));\n\n            // squish margins/padding\n            _overallLayout->setSpacing(0);\n            _northLayout->setSpacing(getSpacing());\n            _southLayout->setSpacing(getSpacing());\n            _westLayout->setSpacing(getSpacing());\n            _eastLayout->setSpacing(getSpacing());\n            _centerLayout->setSpacing(0);\n            _middleLayout->setSpacing(0);\n\n            _overallLayout->setContentsMargins(0, 0, 0, 0);\n            _northLayout->setContentsMargins(0, 0, 0, 0);\n            _southLayout->setContentsMargins(0, 0, 0, 0);\n            _westLayout->setContentsMargins(0, 0, 0, 0);\n            _eastLayout->setContentsMargins(0, 0, 0, 0);\n            _centerLayout->setContentsMargins(0, 0, 0, 0);\n            _middleLayout->setContentsMargins(0, 0, 0, 0);\n\n            // add \"stretches\" at start and end of N/S/W/E regions\n            // to center and un-space the actual widgets in each\n            _northLayout->addStretch(99);\n            _northLayout->addStretch(99);\n            _southLayout->addStretch(99);\n            _southLayout->addStretch(99);\n            _westLayout->addStretch(99);\n            _westLayout->addStretch(99);\n            _eastLayout->addStretch(99);\n            _eastLayout->addStretch(99);\n\n            // fake empty central widget as placeholder until center widget added\n            _centerLayout->addStretch(999);\n\n            _overallLayout->addLayout(_northLayout, /* stretch */ 0);\n            _middleLayout->addLayout(_westLayout, /* stretch */ 0);\n            _middleLayout->addLayout(_centerLayout, /* stretch */ 99);\n            _middleLayout->addLayout(_eastLayout, /* stretch */ 0);\n            _overallLayout->addLayout(_middleLayout, /* stretch */ 99);\n            _overallLayout->addLayout(_southLayout, /* stretch */ 0);\n            setLayout(_overallLayout);\n            if (layout()) {\n                layout()->setSpacing(0);\n                layout()->setContentsMargins(0,0,0,0);\n            }\n            setRegionAlignment(GContainer::REGION_NORTH, ALIGN_CENTER, ALIGN_MIDDLE);\n            setRegionAlignment(GContainer::REGION_SOUTH, ALIGN_CENTER, ALIGN_MIDDLE);\n            setRegionAlignment(GContainer::REGION_WEST, ALIGN_LEFT, ALIGN_MIDDLE);\n            setRegionAlignment(GContainer::REGION_EAST, ALIGN_LEFT, ALIGN_MIDDLE);\n            break;\n        }\n        case GContainer::LAYOUT_GRID: {\n            QGridLayout* qlayout = new QGridLayout;\n            if (layout()) {\n                // transfer over from previous layout\n                for (int i = 1; i < layout()->count() - 1; i++) {\n//                    QWidget* widget = layout()->itemAt(i)->widget();\n//                    qlayout->addWidget(widget);\n                }\n            }\n            setLayout(qlayout);\n            break;\n        }\n        case GContainer::LAYOUT_FLOW_VERTICAL: {\n            QVBoxLayout* qlayout = new QVBoxLayout;\n            qlayout->setSpacing(getSpacing());\n            auto m = getMargin();\n            qlayout->setContentsMargins(m,m,m,m);\n            qlayout->addStretch(99);   // top side stretch\n            if (layout()) {\n                // transfer over from previous layout\n                for (int i = 1; i < layout()->count() - 1; i++) {\n                    QWidget* widget = layout()->itemAt(i)->widget();\n                    if (widget) {\n                        qlayout->addWidget(widget);\n                    }\n                }\n            }\n            qlayout->addStretch(99);   // bottom side stretch\n            setLayout(qlayout);\n            setHorizontalAlignment(getHorizontalAlignment());\n            setVerticalAlignment(getVerticalAlignment());\n            break;\n        }\n        case GContainer::LAYOUT_FLOW_HORIZONTAL:\n        default: {\n            QHBoxLayout* qlayout = new QHBoxLayout;\n            qlayout->setSpacing(getSpacing());\n            auto m = getMargin();\n            qlayout->setContentsMargins(m,m,m,m);\n            qlayout->addStretch(99);   // left side stretch\n            if (layout()) {\n                // transfer over from previous layout\n                for (int i = 1; i < layout()->count() - 1; i++) {\n                    QWidget* widget = layout()->itemAt(i)->widget();\n                    qlayout->addWidget(widget);\n                }\n            }\n            qlayout->addStretch(99);   // right side stretch\n            setLayout(qlayout);\n            setHorizontalAlignment(getHorizontalAlignment());\n            setVerticalAlignment(getVerticalAlignment());\n            break;\n        }\n    }\n}\n\nvoid _Internal_QContainer::setMargin(int margin) {\n    _margin = margin;\n    if (layout()) {\n        if (_layoutType == GContainer::LAYOUT_BORDER) {\n            fixMargin(_northLayout, /* hasStretch */ true);\n            fixMargin(_southLayout, /* hasStretch */ true);\n            fixMargin(_westLayout, /* hasStretch */ true);\n            fixMargin(_eastLayout, /* hasStretch */ true);\n            // fixMargin(_centerLayout, /* hasStretch */ false);\n            // _centerLayout->setMargin(margin);\n        } else {\n            layout()->setContentsMargins(margin,margin,margin,margin);\n        }\n    }\n}\n\nvoid _Internal_QContainer::setRegionAlignment(GContainer::Region region,\n                                              HorizontalAlignment halign,\n                                              VerticalAlignment valign) {\n    setRegionHorizontalAlignment(region, halign);\n    setRegionVerticalAlignment(region, valign);\n}\n\nvoid _Internal_QContainer::setRegionHorizontalAlignment(GContainer::Region region,\n                                                        HorizontalAlignment halign) {\n    _halignMap[region] = halign;\n    if (_layoutType != GContainer::LAYOUT_BORDER) {\n        setHorizontalAlignment(halign);\n        return;\n    }\n\n    QLayout* layout = layoutForRegion(region);\n    if (!layout) {\n        return;\n    }\n\n    if (layout == _westLayout || layout == _eastLayout || layout == _centerLayout) {\n        // set each widget's horizontal alignment individually\n        Qt::Alignment qtAlign = toQtAlignment(halign);\n        QSizePolicy::Policy hSizePolicy = ((qtAlign & Qt::AlignJustify) != 0) ? QSizePolicy::Expanding : QSizePolicy::Preferred;\n        for (int i = 0; i < layout->count(); i++) {\n            QWidget* widget = layout->itemAt(i)->widget();\n            if (!widget) {\n                continue;\n            }\n            layout->setAlignment(widget, qtAlign);\n            widget->setSizePolicy(\n                    /* horizontal */ hSizePolicy,\n                    /* vertical */   widget->sizePolicy().verticalPolicy());\n        }\n    } else if (layout == _northLayout || layout == _southLayout) {\n        // to align \"left\", limit first stretch;\n        // to align \"right\", limit last stretch\n        QHBoxLayout* boxLayout = (QHBoxLayout*) layout;\n        boxLayout->removeItem(layout->itemAt(0));\n        boxLayout->removeItem(layout->itemAt(layout->count() - 1));\n        int beforeStretch = (halign == ALIGN_CENTER || halign == ALIGN_RIGHT)  ? 99 : 0;\n        int afterStretch  = (halign == ALIGN_LEFT   || halign == ALIGN_CENTER) ? 99 : 0;\n        boxLayout->insertStretch(0, beforeStretch);\n        boxLayout->addStretch(afterStretch);\n    }\n\n    layout->update();\n    GLayout::forceUpdate(this);\n}\n\nvoid _Internal_QContainer::setRegionStretch(GContainer::Region region, bool stretch) {\n    _regionStretchMap[region] = stretch;\n\n    // stretch / de-stretch any widgets in that region\n\n}\n\nvoid _Internal_QContainer::setRegionVerticalAlignment(GContainer::Region region,\n                                                      VerticalAlignment valign) {\n    _valignMap[region] = valign;\n    if (_layoutType != GContainer::LAYOUT_BORDER) {\n        setVerticalAlignment(valign);\n        return;\n    }\n\n    QLayout* layout = layoutForRegion(region);\n    if (!layout) {\n        return;\n    }\n\n    if (layout == _westLayout || layout == _eastLayout) {\n        // to align \"top\", limit first stretch;\n        // to align \"bottom\", limit last stretch\n        QVBoxLayout* boxLayout = (QVBoxLayout*) layout;\n        boxLayout->removeItem(layout->itemAt(0));\n        boxLayout->removeItem(layout->itemAt(layout->count() - 1));\n        int beforeStretch = (valign == ALIGN_MIDDLE || valign == ALIGN_BOTTOM) ? 99 : 0;\n        int afterStretch  = (valign == ALIGN_TOP    || valign == ALIGN_MIDDLE) ? 99 : 0;\n        boxLayout->insertStretch(0, beforeStretch);\n        boxLayout->addStretch(afterStretch);\n    } else if (layout == _northLayout || layout == _southLayout || layout == _centerLayout) {\n        // set each widget's vertical alignment individually\n        Qt::Alignment qtAlign = toQtAlignment(valign);\n        QSizePolicy::Policy vSizePolicy = ((qtAlign & Qt::AlignJustify) != 0) ? QSizePolicy::Expanding : QSizePolicy::Preferred;\n        for (int i = 0; i < layout->count(); i++) {\n            QWidget* widget = layout->itemAt(i)->widget();\n            if (!widget) {\n                continue;\n            }\n            layout->setAlignment(widget, qtAlign);\n            widget->setSizePolicy(\n                    /* horizontal */ widget->sizePolicy().horizontalPolicy(),\n                    /* vertical */   vSizePolicy);\n        }\n    }\n\n    layout->update();\n    GLayout::forceUpdate(this);\n}\n\nvoid _Internal_QContainer::setSpacing(int spacing) {\n    _spacing = spacing;\n    if (layout()) {\n        if (_layoutType == GContainer::LAYOUT_BORDER) {\n            _northLayout->setSpacing(spacing);\n            _southLayout->setSpacing(spacing);\n            _westLayout->setSpacing(spacing);\n            _eastLayout->setSpacing(spacing);\n            _centerLayout->setSpacing(spacing);\n        } else {\n            layout()->setSpacing(spacing);\n        }\n    }\n}\n\nvoid _Internal_QContainer::setVerticalAlignment(VerticalAlignment valign) {\n    switch (_layoutType) {\n        case GContainer::LAYOUT_FLOW_HORIZONTAL: {\n            // set each widget's vertical alignment individually\n            QVBoxLayout* layout = (QVBoxLayout*) getQLayout();\n            Qt::Alignment qtAlign = toQtAlignment(valign);\n            for (int i = 1; i < layout->count() - 1; i++) {\n                QWidget* widget = layout->itemAt(i)->widget();\n                if (!widget) {\n                    continue;\n                }\n                layout->setAlignment(widget, qtAlign);\n            }\n            break;\n        }\n        case GContainer::LAYOUT_FLOW_VERTICAL: {\n            // to align \"left\", limit first stretch;\n            // to align \"right\", limit last stretch\n            QVBoxLayout* layout = (QVBoxLayout*) getQLayout();\n            if (layout->count() >= 2) {\n                layout->removeItem(layout->itemAt(0));\n                layout->removeItem(layout->itemAt(layout->count() - 1));\n            }\n            if (valign == ALIGN_TOP) {\n                layout->insertStretch(0, /* stretch */ 0);\n                layout->addStretch(/* stretch */ 99);\n            } else if (valign == ALIGN_BOTTOM) {\n                layout->insertStretch(0, /* stretch */ 99);\n                layout->addStretch(/* stretch */ 0);\n            } else {   // halign == ALIGN_MIDDLE\n                layout->insertStretch(0, /* stretch */ 99);\n                layout->addStretch(/* stretch */ 99);\n            }\n            break;\n        }\n        case GContainer::LAYOUT_GRID: {\n            // set each widget's vertical alignment individually\n            QGridLayout* layout = (QGridLayout*) getQLayout();\n            Qt::Alignment qtAlign = toQtAlignment(valign);\n            for (int i = 0; i < layout->count(); i++) {\n                QWidget* widget = layout->itemAt(i)->widget();\n                if (!widget) {\n                    continue;\n                }\n                layout->setAlignment(widget, qtAlign);\n            }\n            break;\n        }\n        case GContainer::LAYOUT_BORDER: {\n            // - set align of ALL regions in align map\n            setRegionVerticalAlignment(GContainer::REGION_CENTER, valign);\n            setRegionVerticalAlignment(GContainer::REGION_NORTH, valign);\n            setRegionVerticalAlignment(GContainer::REGION_SOUTH, valign);\n            setRegionVerticalAlignment(GContainer::REGION_EAST, valign);\n            setRegionVerticalAlignment(GContainer::REGION_WEST, valign);\n            break;\n        }\n        default: {\n            break;\n        }\n    }\n}\n\nQSize _Internal_QContainer::sizeHint() const {\n    if (hasPreferredSize()) {\n        return getPreferredSize();\n    } else {\n        return QWidget::sizeHint();\n    }\n}\n\n\n"
  },
  {
    "path": "Library/graphics/gcontainer.h",
    "content": "/*\n * File: gcontainer.h\n * ------------------\n *\n * @author Marty Stepp\n * @version 2018/09/25\n * - added getLayout method\n * @version 2018/09/19\n * - added contains, regionContains methods\n * @version 2018/09/07\n * - added doc comments for new documentation generation\n * @version 2018/08/29\n * - initial version\n */\n\n\n#ifndef _gcontainer_h\n#define _gcontainer_h\n\n#include <QBoxLayout>\n#include <QLayout>\n\n#include \"ginteractor.h\"\n#include \"vector.h\"\n\nclass _Internal_QContainer;   // forward declaration\n\n/**\n * A GContainer is a logical grouping for interactors.\n * The container manages the position and size of the interactors inside it.\n * This class is very similar to the Java concept of a container, represented\n * in Swing by the JPanel class.\n *\n * A container has a layout that guides how it positions its interactors.\n * Supported layouts include border (put interactors in the N/S/W/E/Center),\n * grid (rows and columns of interactors), and flow (interactors go in a\n * single horizontal or vertical line).\n *\n * Containers also use a \"box model\" similar to the CSS box model with margins\n * and padding around each interactor, and spacing between neighboring widgets:\n *\n * <pre>\n    container\n * +-------------------+\n * |      margin       |\n * |  +---border----+  |\n * |  |   padding   |  |\n * |  |   content   |  |\n * |  |   padding   |  |\n * |  +-------------+  |\n * |      margin       |\n * |                   |\n * |      spacing      |\n * |                   |\n * |      margin       |\n * |  +---border----+  |\n * |  |   padding   |  |\n * |  |   content   |  |\n * |  |   padding   |  |\n * |  +-------------+  |\n * |      margin       |\n * |       ...         |\n * +-------------------+\n * </pre>\n */\nclass GContainer : public GInteractor {\npublic:\n    /**\n     * Default margin around each interactor.\n     */\n    static const int MARGIN_DEFAULT;\n\n    /**\n     * Default spacing between neighboring interactors.\n     */\n    static const int SPACING_DEFAULT;\n\n    /**\n     * The various layout management styles that containers can use.\n     */\n    enum Layout {\n        LAYOUT_NONE,\n        LAYOUT_FLOW_HORIZONTAL,\n        LAYOUT_FLOW_VERTICAL,\n        LAYOUT_BORDER,\n        LAYOUT_GRID\n    };\n\n    /**\n     * The five regions of border layouts.\n     * Not used by the other layout styles.\n     */\n    enum Region {\n        REGION_CENTER,\n        REGION_EAST,\n        REGION_NORTH,\n        REGION_SOUTH,\n        REGION_WEST\n    };\n\n    /**\n     * Creates a new container with the given layout.\n     */\n    GContainer(Layout layout = LAYOUT_FLOW_HORIZONTAL, QWidget* parent = nullptr);\n\n    /**\n     * Creates a new container with the given number of rows and columns.\n     * Meant to be used for grid layouts.\n     */\n    GContainer(Layout layout, int rows, int cols, QWidget* parent = nullptr);\n\n    /**\n     * Frees memory allocated internally by the container.\n     */\n    ~GContainer() override;\n\n    /**\n     * Adds the given interactor to the end of the list of interactors in this container.\n     * If the container uses a grid layout, adds the interactor to the next available\n     * row/column.  If it uses a border layout, adds to the center region.\n     * @throw ErrorException if the interactor is null\n     */\n    virtual void add(GInteractor* interactor);\n\n    /**\n     * Adds the given interactor to the end of the list of interactors in this container.\n     * If the container uses a grid layout, adds the interactor to the next available\n     * row/column.  If it uses a border layout, adds to the center region.\n     */\n    virtual void add(GInteractor& interactor);\n\n    /**\n     * Adds the given interactor to the given row and column in this container,\n     * which is assumed to use a grid layout.\n     * If the rowspan and/or colspan arguments are passed, the item will occupy\n     * multiple rows or columns' worth of space.\n     * If the container does not use a grid layout, equivalent to add().\n     * @throw ErrorException if the interactor is null\n     */\n    virtual void addToGrid(GInteractor* interactor, int row, int col, int rowspan = 1, int colspan = 1);\n\n    /**\n     * Adds the given interactor to the given row and column in this container,\n     * which is assumed to use a grid layout.\n     * If the rowspan and/or colspan arguments are passed, the item will occupy\n     * multiple rows or columns' worth of space.\n     * If the container does not use a grid layout, equivalent to add().\n     */\n    virtual void addToGrid(GInteractor& interactor, int row, int col, int rowspan = 1, int colspan = 1);\n\n    /**\n     * Adds the given interactor to the given region in this container,\n     * which is assumed to use a border layout.\n     * If the container does not use a border layout, equivalent to add().\n     * @throw ErrorException if the interactor is null\n     */\n    virtual void addToRegion(GInteractor* interactor, Region region);\n\n    /**\n     * Adds the given interactor to the given region in this container,\n     * which is assumed to use a border layout.\n     * If the container does not use a border layout, equivalent to add().\n     * @throw ErrorException if the interactor is null\n     */\n    virtual void addToRegion(GInteractor* interactor, const std::string& region = \"Center\");\n\n    /**\n     * Adds the given interactor to the given region in this container,\n     * which is assumed to use a border layout.\n     * If the container does not use a border layout, equivalent to add().\n     */\n    virtual void addToRegion(GInteractor& interactor, Region region);\n\n    /**\n     * Adds the given interactor to the given region in this container,\n     * which is assumed to use a border layout.\n     * If the container does not use a border layout, equivalent to add().\n     */\n    virtual void addToRegion(GInteractor& interactor, const std::string& region = \"Center\");\n\n    /**\n     * Removes all interactors from this container.\n     */\n    virtual void clear();\n\n    /**\n     * Removes all interactors from the given region of this container,\n     * which is assumed to use a border layout.\n     * If the container does not use a border layout, has no effect.\n     */\n    virtual void clearRegion(Region region);\n\n    /**\n     * Removes all interactors from the given region of this container,\n     * which is assumed to use a border layout.\n     * If the container does not use a border layout, has no effect.\n     */\n    virtual void clearRegion(const std::string& region);\n\n    /**\n     * Returns true if the given interactor is found in this container.\n     * Returns false if the interactor is null\n     */\n    virtual bool contains(GInteractor* interactor) const;\n\n    /**\n     * Returns true if the given interactor is found in this container.\n     */\n    virtual bool contains(GInteractor& interactor) const;\n\n    /**\n     * Returns all interactors that are children or descendents inside this\n     * container.  This differs from getInteractors in that it returns not only\n     * direct children but also grandchildren, etc. in any sub-containers.\n     * If the type argument is passed, will return only interactors of that type\n     * (e.g. \"GCheckBox\").  Otherwise all interactors will be returned.\n     */\n    virtual Vector<GInteractor*> getDescendents(const std::string& type = \"\") const;\n\n    /**\n     * Returns the child interactor at the given 0-based index in this container.\n     * @throw ErrorException if the index is out of bounds\n     */\n    virtual GInteractor* getInteractor(int i) const;\n\n    /**\n     * Returns a vector of all children interactors in this container.\n     */\n    virtual const Vector<GInteractor*>& getInteractors() const;\n\n    /**\n     * Returns the number of children interactors in this container.\n     */\n    virtual int getInteractorCount() const;\n\n    /**\n     * Returns the child interactor at the given 0-based index within the given\n     * region in this container, which is assumed to use a border layout.\n     * If the container does not use a border layout, returns nullptr.\n     * @throw ErrorException if the index is out of bounds\n     */\n    virtual GInteractor* getInteractorByRegion(int i, Region region) const;\n\n    /**\n     * Returns the child interactor at the given 0-based index within the given\n     * region in this container, which is assumed to use a border layout.\n     * If the container does not use a border layout, returns nullptr.\n     * @throw ErrorException if the index is out of bounds\n     */\n    virtual GInteractor* getInteractorByRegion(int i, const std::string& region = \"Center\") const;\n\n    /**\n     * Returns the number of children interactors within the given region in\n     * this container, which is assumed to use a border layout.\n     * If the container does not use a border layout, returns 0.\n     */\n    virtual int getInteractorCountByRegion(Region region) const;\n\n    /**\n     * Returns the number of children interactors within the given region in\n     * this container, which is assumed to use a border layout.\n     * If the container does not use a border layout, returns 0.\n     */\n    virtual int getInteractorCountByRegion(const std::string& region = \"Center\") const;\n\n    /* @inherit */\n    _Internal_QWidget* getInternalWidget() const override;\n\n    /**\n     * Returns the type of layout used by this container.\n     */\n    virtual Layout getLayout() const;\n\n    /**\n     * Returns the margin around each widget in this container in pixels.\n     */\n    virtual double getMargin() const;\n\n    /**\n     * Returns the padding inside this container in pixels.\n     */\n    virtual double getPadding() const;\n\n    /**\n     * Returns the padding on the bottom side of this container in pixels.\n     */\n    virtual double getPaddingBottom() const;\n\n    /**\n     * Returns the padding on the left side of this container in pixels.\n     */\n    virtual double getPaddingLeft() const;\n\n    /**\n     * Returns the padding on the right side of this container in pixels.\n     */\n    virtual double getPaddingRight() const;\n\n    /**\n     * Returns the padding on the top side of this container in pixels.\n     */\n    virtual double getPaddingTop() const;\n\n    /* @inherit */\n    GDimension getPreferredSize() const override;\n\n    /**\n     * Returns the height in pixels of the given region of this container,\n     * which is assumed to use a border layout.\n     * If the container does not use a border layout, returns 0.\n     */\n    virtual double getRegionHeight(Region region) const;\n\n    /**\n     * Returns the height in pixels of the given region of this container,\n     * which is assumed to use a border layout.\n     * If the container does not use a border layout, returns 0.\n     */\n    virtual double getRegionHeight(const std::string& region) const;\n\n    /**\n     * Returns the width and height in pixels of the given region of this container,\n     * which is assumed to use a border layout.\n     * If the container does not use a border layout, returns 0.\n     */\n    virtual GDimension getRegionSize(Region region) const;\n\n    /**\n     * Returns the width and height in pixels of the given region of this container,\n     * which is assumed to use a border layout.\n     * If the container does not use a border layout, returns 0.\n     */\n    virtual GDimension getRegionSize(const std::string& region) const;\n\n    /**\n     * Returns the width in pixels of the given region of this container,\n     * which is assumed to use a border layout.\n     * If the container does not use a border layout, returns 0.\n     */\n    virtual double getRegionWidth(Region region) const;\n\n    /**\n     * Returns the width in pixels of the given region of this container,\n     * which is assumed to use a border layout.\n     * If the container does not use a border layout, returns 0.\n     */\n    virtual double getRegionWidth(const std::string& region) const;\n\n    /**\n     * Returns the spacing between widgets in this container in pixels.\n     */\n    virtual double getSpacing() const;\n\n    /* @inherit */\n    std::string getType() const override;\n\n    /* @inherit */\n    QWidget* getWidget() const override;\n\n    /**\n     * Adds the given interactor to this container just before the given index.\n     * @throw ErrorException if the index is out of bounds or interactor is null\n     */\n    virtual void insert(int index, GInteractor* interactor);\n\n    /**\n     * Adds the given interactor to this container just before the given index.\n     * @throw ErrorException if the index is out of bounds\n     */\n    virtual void insert(int index, GInteractor& interactor);\n\n    /**\n     * Adds the given interactor to the given layout region within this container\n     * just before the given index.  The container is assumed to use a border\n     * layout; if it does not, equivalent to insert().\n     * @throw ErrorException if the index is out of bounds or interactor is null\n     */\n    virtual void insertToRegion(int index, GInteractor* interactor, Region region);\n\n    /**\n     * Adds the given interactor to the given layout region within this container\n     * just before the given index.  The container is assumed to use a border\n     * layout; if it does not, equivalent to insert().\n     * @throw ErrorException if the index is out of bounds or interactor is null\n     */\n    virtual void insertToRegion(int index, GInteractor* interactor, const std::string& region = \"Center\");\n\n    /**\n     * Adds the given interactor to the given layout region within this container\n     * just before the given index.  The container is assumed to use a border\n     * layout; if it does not, equivalent to insert().\n     * @throw ErrorException if the index is out of bounds\n     */\n    virtual void insertToRegion(int index, GInteractor& interactor, Region region);\n\n    /**\n     * Adds the given interactor to the given layout region within this container\n     * just before the given index.  The container is assumed to use a border\n     * layout; if it does not, equivalent to insert().\n     * @throw ErrorException if the index is out of bounds\n     */\n    virtual void insertToRegion(int index, GInteractor& interactor, const std::string& region = \"Center\");\n\n    /**\n     * Returns true if the container does not contain any interactors.\n     */\n    virtual bool isEmpty() const;\n\n    /**\n     * Returns true if the given interactor is found in the given region of\n     * this container, which is assumed to use a border layout.\n     * If the container does not use a border layout, equivalent to contains().\n     * @throw ErrorException if the interactor is null\n     */\n    virtual bool regionContains(GInteractor* interactor, Region region) const;\n\n    /**\n     * Returns true if the given interactor is found in the given region of\n     * this container, which is assumed to use a border layout.\n     * If the container does not use a border layout, equivalent to contains().\n     * @throw ErrorException if the interactor is null\n     */\n    virtual bool regionContains(GInteractor* interactor, const std::string& region) const;\n\n    /**\n     * Returns true if the given interactor is found in the given region of\n     * this container, which is assumed to use a border layout.\n     * If the container does not use a border layout, equivalent to contains().\n     */\n    virtual bool regionContains(GInteractor& interactor, Region region) const;\n\n    /**\n     * Returns true if the given interactor is found in the given region of\n     * this container, which is assumed to use a border layout.\n     * If the container does not use a border layout, equivalent to contains().\n     */\n    virtual bool regionContains(GInteractor& interactor, const std::string& region) const;\n\n    /**\n     * Removes the given interactor from this container.\n     * Works for any layout.\n     * If the given interactor is not found in this container, has no effect.\n     * @throw ErrorException if the interactor is null\n     */\n    virtual void remove(GInteractor* interactor);\n\n    /**\n     * Removes the given interactor from this container.\n     * Works for any layout.\n     * If the given interactor is not found in this container, has no effect.\n     */\n    virtual void remove(GInteractor& interactor);\n\n    /**\n     * Removes the child interactor at the given 0-based index from this container.\n     * Works for any layout.\n     * @throw ErrorException if the index is out of bounds\n     */\n    virtual void remove(int index);\n\n    /**\n     * Removes the given interactor from the given region within this container,\n     * which is assumed to use a border layout.\n     * If the container does not use a border layout, equivalent to remove().\n     * If the given interactor is not found in the given region, has no effect.\n     * @throw ErrorException if the interactor is null\n     */\n    virtual void removeFromRegion(GInteractor* interactor, Region region);\n\n    /**\n     * Removes the given interactor from the given region within this container,\n     * which is assumed to use a border layout.\n     * If the container does not use a border layout, equivalent to remove().\n     * If the given interactor is not found in the given region, has no effect.\n     * @throw ErrorException if the interactor is null\n     */\n    virtual void removeFromRegion(GInteractor* interactor, const std::string& region);\n\n    /**\n     * Removes the given interactor from the given region within this container,\n     * which is assumed to use a border layout.\n     * If the container does not use a border layout, equivalent to remove().\n     * If the given interactor is not found in the given region, has no effect.\n     */\n    virtual void removeFromRegion(GInteractor& interactor, Region region);\n\n    /**\n     * Removes the given interactor from the given region within this container,\n     * which is assumed to use a border layout.\n     * If the container does not use a border layout, equivalent to remove().\n     * If the given interactor is not found in the given region, has no effect.\n     */\n    virtual void removeFromRegion(GInteractor& interactor, const std::string& region);\n\n    /**\n     * Removes the child interactor at the given 0-based index from the given\n     * region of this container, which is assumed to use a border layout.\n     * If the container does not use a border layout, has no effect.\n     * If the given interactor is not found in the given region, has no effect.\n     * @throw ErrorException if the index is out of bounds\n     */\n    virtual void removeFromRegion(int index, Region region);\n\n    /**\n     * Removes the child interactor at the given 0-based index from the given\n     * region of this container, which is assumed to use a border layout.\n     * If the container does not use a border layout, has no effect.\n     * If the given interactor is not found in the given region, has no effect.\n     * @throw ErrorException if the index is out of bounds\n     */\n    virtual void removeFromRegion(int index, const std::string& region);\n\n    /**\n     * Sets the horizontal and vertical alignment of interactors in this container.\n     */\n    virtual void setAlignment(HorizontalAlignment halign, VerticalAlignment valign);\n\n    /**\n     * Sets the horizontal alignment of interactors in this container.\n     */\n    virtual void setHorizontalAlignment(HorizontalAlignment halign);\n\n    /**\n     * Sets the margin in pixels around interactors in this container.\n     */\n    virtual void setMargin(double px);\n\n    /**\n     * Sets the padding on all 4 sides around widgets in this container.\n     */\n    virtual void setPadding(double px);\n\n    /**\n     * Sets the padding on all 4 sides around widgets in this container,\n     * using different padding on the vertical vs horizontal sides.\n     */\n    virtual void setPadding(double topBottom, double leftRight);\n\n    /**\n     * Sets the padding on all 4 sides around widgets in this container,\n     * using different padding on each of the 4 sides.\n     */\n    virtual void setPadding(double top, double right, double bottom, double left);\n\n    /**\n     * Sets the vertical alignment of interactors in this container.\n     */\n    virtual void setVerticalAlignment(VerticalAlignment valign);\n\n    /**\n     * Sets the horizontal alignment of interactors in the given region of\n     * this container, which is assumed to use a border layout.\n     * If the container does not use a border layout, sets the alignment of\n     * the entire container instead.\n     */\n    virtual void setRegionAlignment(Region region, HorizontalAlignment halign);\n\n    /**\n     * Sets the vertical alignment of interactors in the given region of\n     * this container, which is assumed to use a border layout.\n     * If the container does not use a border layout, sets the alignment of\n     * the entire container instead.\n     */\n    virtual void setRegionAlignment(Region region, VerticalAlignment valign);\n\n    /**\n     * Sets the horizontal and vertical alignment of interactors in the given region of\n     * this container, which is assumed to use a border layout.\n     * If the container does not use a border layout, sets the alignment of\n     * the entire container instead.\n     */\n    virtual void setRegionAlignment(Region region, HorizontalAlignment halign, VerticalAlignment valign);\n\n    /**\n     * Sets the horizontal and/or vertical alignment of interactors in the given region of\n     * this container, which is assumed to use a border layout.\n     * If the container does not use a border layout, sets the alignment of\n     * the entire container instead.\n     */\n    virtual void setRegionAlignment(const std::string& region, const std::string& align);\n\n    /**\n     * Sets the horizontal and vertical alignment of interactors in the given region of\n     * this container, which is assumed to use a border layout.\n     * If the container does not use a border layout, sets the alignment of\n     * the entire container instead.\n     */\n    virtual void setRegionAlignment(const std::string& region, const std::string& halign, const std::string& valign);\n\n    /**\n     * Sets the horizontal alignment of interactors in the given region of\n     * this container, which is assumed to use a border layout.\n     * If the container does not use a border layout, sets the alignment of\n     * the entire container instead.\n     */\n    virtual void setRegionHorizontalAlignment(Region region, HorizontalAlignment halign);\n\n    /**\n     * Sets the horizontal alignment of interactors in the given region of\n     * this container, which is assumed to use a border layout.\n     * If the container does not use a border layout, sets the alignment of\n     * the entire container instead.\n     */\n    virtual void setRegionHorizontalAlignment(const std::string& region, const std::string& halign);\n\n    /**\n     * Sets the vertical alignment of interactors in the given region of\n     * this container, which is assumed to use a border layout.\n     * If the container does not use a border layout, sets the alignment of\n     * the entire container instead.\n     */\n    virtual void setRegionVerticalAlignment(const std::string& region, const std::string& valign);\n\n    /**\n     * Sets the vertical alignment of interactors in the given region of\n     * this container, which is assumed to use a border layout.\n     * If the container does not use a border layout, sets the alignment of\n     * the entire container instead.\n     */\n    virtual void setRegionVerticalAlignment(Region region, VerticalAlignment valign);\n\n    /**\n     * Sets the spacing between interactors in this container.\n     */\n    virtual void setSpacing(double px);\n\nprivate:\n    Q_DISABLE_COPY(GContainer)\n\n    _Internal_QContainer* _iqcontainer;\n    Vector<GInteractor*> _interactors;\n    Map<Region, Vector<GInteractor*>> _interactorsByRegion;\n    Layout _layout;\n\n    friend class _Internal_QContainer;\n    friend class GWindow;\n\n    static Region stringToRegion(const std::string& regionStr);\n};\n\n\n/**\n * Internal class; not to be used by clients.\n * @private\n */\nclass _Internal_QContainer : public QWidget, public _Internal_QWidget {\n    Q_OBJECT\n\npublic:\n    _Internal_QContainer(GContainer* gcontainer, GContainer::Layout layoutType, QWidget* parent = nullptr);\n    _Internal_QContainer(GContainer* gcontainer, int rows, int cols, QWidget* parent = nullptr);\n    QSize sizeHint() const override;\n\nprivate:\n    GContainer* _gcontainer;\n    GContainer::Layout _layoutType;\n    HorizontalAlignment _halign;\n    VerticalAlignment _valign;\n    int _margin;\n    int _spacing;\n    // int _rows;\n    int _cols;\n    int _currentIndex;\n\n    // border layout regions for N/S/W/E/C:\n    // +------------------------+\n    // |         north          |\n    // |------------------------|\n    // |         middle         |\n    // |+----------------------+|\n    // || west | center | east ||\n    // |+----------------------+|\n    // |------------------------|\n    // |         south          |\n    // +------------------------+\n    // sizing/stretching rules:\n    // - N/S expand horizontally\n    // - W/E expand vertically\n    // - C takes all remaining space\n    // - each widget other than Center widget appears at its preferred (\"hinted\") size\n    QVBoxLayout* _overallLayout;\n    QHBoxLayout* _northLayout;\n    QHBoxLayout* _southLayout;\n    QVBoxLayout* _westLayout;\n    QVBoxLayout* _eastLayout;\n    QHBoxLayout* _centerLayout;\n    QHBoxLayout* _middleLayout;\n    Map<GContainer::Region, HorizontalAlignment> _halignMap;\n    Map<GContainer::Region, VerticalAlignment> _valignMap;\n    Map<GContainer::Region, bool> _regionStretchMap;\n\n    virtual void add(QWidget* widget);\n    virtual void addToGrid(QWidget* widget, int row, int col, int rowspan = 1, int colspan = 1);\n    virtual void addToRegion(QWidget* widget, GContainer::Region region);\n    virtual void clear();\n    virtual void clearRegion(GContainer::Region region);\n    virtual bool contains(QWidget* widget) const;\n    void detach() override;\n    virtual void fixAlignment(QWidget* widget, GContainer::Region region = GContainer::REGION_CENTER);\n    virtual void fixMargin(QLayout* layout, bool hasStretch = false);\n    virtual HorizontalAlignment getHorizontalAlignment() const;\n    virtual VerticalAlignment getVerticalAlignment() const;\n    virtual GContainer::Layout getLayoutType() const;\n    virtual int getMargin() const;\n    QSize getPreferredSize() const override;\n    virtual QLayout* getQLayout() const;\n    virtual int getSpacing() const;\n    virtual void insert(int i, QWidget* widget);\n    virtual void insertToRegion(int i, QWidget* widget, GContainer::Region region);\n    virtual bool isRegionStretch(GContainer::Region region) const;\n    virtual QLayout* layoutForRegion(GContainer::Region region) const;\n    virtual bool regionContains(QWidget* widget, GContainer::Region region) const;\n    virtual void remove(QWidget* widget);\n    virtual void removeFromRegion(QWidget* widget, GContainer::Region region);\n    virtual void remove(int i);\n    virtual void removeFromRegion(int i, GContainer::Region region);\n    virtual void setHorizontalAlignment(HorizontalAlignment halign);\n    virtual void setLayoutType(GContainer::Layout layout);\n    virtual void setMargin(int margin);\n    virtual void setPadding(int padding);\n    virtual void setPadding(int left, int top, int right, int bottom);\n    virtual void setRegionAlignment(GContainer::Region region,\n                                    HorizontalAlignment halign,\n                                    VerticalAlignment valign);\n    virtual void setRegionHorizontalAlignment(GContainer::Region region,\n                                              HorizontalAlignment halign);\n    virtual void setRegionStretch(GContainer::Region region, bool stretch = true);\n    virtual void setRegionVerticalAlignment(GContainer::Region region,\n                                            VerticalAlignment valign);\n    virtual void setSpacing(int spacing);\n    virtual void setVerticalAlignment(VerticalAlignment valign);\n\n    friend class GContainer;\n};\n\n#endif // _gcontainer_h\n"
  },
  {
    "path": "Library/graphics/gdiffimage.cpp",
    "content": "/*\n * File: gdiffimage.cpp\n * --------------------\n * \n * @author Marty Stepp\n * @version 2019/04/23\n * - can press Escape key to close window\n * @version 2018/10/12\n * - added \"highlight diffs in color\" checkbox and functionality\n * @version 2018/09/15\n * - initial version, converted from Java back-end DiffImage class\n */\n\n// TODO: free memory\n\n#include \"gdiffimage.h\"\n#include <iostream>\n#include <string>\n#include \"gcolor.h\"\n#include \"gcolorchooser.h\"\n#include \"gfont.h\"\n#include \"gspacer.h\"\n#include \"gthread.h\"\n#include \"require.h\"\n\n/*static*/ const std::string GDiffImage::HIGHLIGHT_COLOR_DEFAULT = \"#e000e0\";   // 224, 0, 224\n\n/*static*/ void GDiffImage::showDialog(\n        const std::string& name1,\n        GCanvas* image1,\n        const std::string& name2,\n        GCanvas* image2) {\n    // TODO: free memory on close\n    new GDiffImage(name1, image1, name2, image2);\n}\n\n/*static*/ void GDiffImage::showDialog(\n        const std::string& name1,\n        const std::string& imageFile1,\n        const std::string& name2,\n        const std::string& imageFile2) {\n    GCanvas* image1 = new GCanvas(imageFile1);\n    GCanvas* image2 = new GCanvas(imageFile2);\n    showDialog(name1, image1, name2, image2);\n}\n\nGDiffImage::GDiffImage(\n        const std::string& name1,\n        GCanvas* image1,\n        const std::string& name2,\n        GCanvas* image2) {\n    require::nonNull(image1, \"GDiffImage::constructor\", \"image1\");\n    require::nonNull(image2, \"GDiffImage::constructor\", \"image2\");\n\n    _image1 = image1->toGImage();\n    _image2 = image2->toGImage();\n    _imageDiffs = nullptr;\n    int diffPixelsCount = image1->countDiffPixels(image2);\n    _image2->setOpacity(0.5);\n\n    // set up window and widgets\n    _window = new GWindow(800, 600);\n    _window->setTitle(\"Compare Graphical Output\");\n    // _window->setResizable(false);\n    _window->setAutoRepaint(false);\n\n    // function to close the window when Escape is pressed\n    // (similar to code in gdiffgui.cpp)\n    auto windowCloseLambda = [this](GEvent event) {\n        if (event.getType() == KEY_PRESSED && event.getKeyChar() == GEvent::ESCAPE_KEY) {\n            _window->close();\n        }\n    };\n    _window->setKeyListener(windowCloseLambda);\n\n    _slider = new GSlider();\n    _slider->setActionListener([this]() {\n        _image2->setOpacity(_slider->getValue() / 100.0);\n        drawImages();\n    });\n    _slider->setKeyListener(windowCloseLambda);\n\n    _highlightDiffsBox = new GCheckBox(\"&Highlight diffs in color: \");\n    _highlightDiffsBox->setActionListener([this]() {\n        _slider->setEnabled(!_highlightDiffsBox->isChecked());\n        drawImages();\n    });\n    _highlightDiffsBox->setKeyListener(windowCloseLambda);\n\n    _highlightColor = HIGHLIGHT_COLOR_DEFAULT;\n    _colorButton = new GButton(\"&X\");\n    _colorButton->setBackground(_highlightColor);\n    _colorButton->setForeground(_highlightColor);\n    _colorButton->setActionListener([this]() {\n        chooseHighlightColor();\n    });\n    _colorButton->setKeyListener(windowCloseLambda);\n\n    _diffPixelsLabel = new GLabel(\"(\" + std::to_string(diffPixelsCount) + \" pixels differ)\");\n    GFont::boldFont(_diffPixelsLabel);\n\n    _imageLabel1 = new GLabel(name1);\n    _imageLabel2 = new GLabel(name2);\n    _southPixelLabel = new GLabel(\"\");\n\n    // TODO?\n    // setupMenuBar();\n\n    // do layout\n    GContainer* south = new GContainer(GContainer::LAYOUT_FLOW_VERTICAL);\n    GContainer* south1 = new GContainer();\n    south1->add(_imageLabel1);\n    south1->add(_slider);\n    south1->add(_imageLabel2);\n    south->add(south1);\n    // 20px strut?\n\n    GContainer* south2 = new GContainer();\n    south2->add(_diffPixelsLabel);\n    south2->add(new GSpacer(20, 1));\n    south2->add(_highlightDiffsBox);\n    south2->add(_colorButton);\n    south->add(south2);\n\n    GContainer* south3 = new GContainer();\n    south3->add(_southPixelLabel);\n    south->add(south3);\n\n    _window->addToRegion(south, GWindow::REGION_SOUTH);\n\n    // poke the canvas\n    double canvasWidth  = std::max(_image1->getWidth(),  _image2->getWidth());\n    double canvasHeight = std::max(_image1->getHeight(), _image2->getHeight());\n    // _window->add(_image1);\n    // _window->add(_image2);\n\n    _window->getCanvas()->setMouseListener([this](GEvent event) {\n        if (event.getType() != MOUSE_MOVED) {\n            return;\n        }\n        int x = static_cast<int>(event.getX());\n        int y = static_cast<int>(event.getY());\n        _southPixelLabel->setText(\n                \"(x=\" + std::to_string(x)\n                + \", y=\" + std::to_string(y)\n                + \") expected: \" + getPixelString(_image1, x, y)\n                + \" actual: \" + getPixelString(_image2, x, y));\n    });\n\n    // set up events\n    _window->setCanvasSize(canvasWidth, canvasHeight);\n    _window->drawPixel(0, 0, 0xffffff);\n    drawImages();\n\n    _window->center();\n    _window->show();\n}\n\nGDiffImage::~GDiffImage() {\n    // TODO: delete\n    _window = nullptr;\n    _slider = nullptr;\n    _highlightDiffsBox = nullptr;\n    _colorButton = nullptr;\n}\n\nvoid GDiffImage::chooseHighlightColor() {\n    std::string color = GColorChooser::showDialog(\n            /* parent */ _window,\n            /* title */ \"Choose a highlight color\",\n            /* initial color */ _highlightColor);\n    if (color.empty()) {\n        return;\n    }\n    _highlightColor = color;\n    _colorButton->setBackground(color);\n    _colorButton->setForeground(color);\n    drawImages();\n}\n\nvoid GDiffImage::drawImages() {\n    _window->clearCanvas();\n    if (_highlightDiffsBox->isChecked()) {\n        GThread::runOnQtGuiThreadAsync([this]() {\n            // draw the highlighted diffs (if so desired)\n            int w1 = _image1->getWidth();\n            int h1 = _image1->getHeight();\n            int w2 = _image2->getWidth();\n            int h2 = _image2->getHeight();\n\n            int wmax = std::max(w1, w2);\n            int hmax = std::max(h1, h2);\n\n            if (!_imageDiffs) {\n                _imageDiffs = new GImage(wmax, hmax);\n            }\n            QImage* imgDiff = _imageDiffs->getQImage();\n\n            // check each pair of pixels\n            // (access raw QImages for speed)\n            int highlightColor = GColor::convertColorToRGB(_highlightColor) | 0xff000000;\n            QImage* img1 = _image1->getQImage();\n            QImage* img2 = _image2->getQImage();\n            for (int y = 0; y < hmax; y++) {\n                for (int x = 0; x < wmax; x++) {\n                    int pixel1 = (x < w1 && y < h1) ? (img1->pixel(x, y) & 0xffffffff) : 0;\n                    int pixel2 = (x < w2 && y < h2) ? (img2->pixel(x, y) & 0xffffffff) : 0;\n                    imgDiff->setPixel(x, y, (pixel1 == pixel2) ? pixel1 : highlightColor);\n                }\n            }\n            _window->draw(_imageDiffs);\n        });\n    } else {\n        _window->draw(_image1);\n        _window->draw(_image2);   // possibly at sub-1 opacity\n    }\n\n    _window->repaint();\n}\n\nstd::string GDiffImage::getPixelString(GImage* image, int x, int y) const {\n    if (x >= 0 && x < image->getWidth()\n            && y >= 0 && y < image->getHeight()) {\n        int rgb = image->getPixel(x, y);\n        return GColor::convertRGBToColor(rgb);\n    } else {\n        return \"(none)\";\n    }\n}\n"
  },
  {
    "path": "Library/graphics/gdiffimage.h",
    "content": "/*\n * File: gdiffimage.h\n * ------------------\n * \n * @author Marty Stepp\n * @version 2018/10/12\n * - added \"highlight diffs in color\" checkbox and functionality\n * @version 2018/09/15\n * - initial version, converted from Java back-end DiffImage class\n */\n\n\n#ifndef _gdiffimage_h\n#define _gdiffimage_h\n\n#include <string>\n#include <QWidget>\n#include <QSplitter>\n\n#include \"gbutton.h\"\n#include \"gcanvas.h\"\n#include \"gcheckbox.h\"\n#include \"ginteractor.h\"\n#include \"glabel.h\"\n#include \"gslider.h\"\n#include \"gwindow.h\"\n\n/**\n * A GDiffImage is a graphical window that displays differences between two\n * images.  This class is used to implement the \"Compare Graphical Output\"\n * feature of graphical programs, as well as various autograder comparisons.\n *\n * @private\n * TODO: document\n */\nclass GDiffImage {\npublic:\n    static const std::string HIGHLIGHT_COLOR_DEFAULT;\n\n    static void showDialog(const std::string& name1,\n                           GCanvas* image1,\n                           const std::string& name2,\n                           GCanvas* image2);\n\n    static void showDialog(const std::string& name1,\n                           const std::string& imageFile1,\n                           const std::string& name2,\n                           const std::string& imageFile2);\n\nprivate:\n    GDiffImage(const std::string& name1,\n               GCanvas* image1,\n               const std::string& name2,\n               GCanvas* image2);   // forbid construction\n    virtual ~GDiffImage();\n\n    Q_DISABLE_COPY(GDiffImage)\n\n    void chooseHighlightColor();\n    void drawImages();\n    std::string getPixelString(GImage* image, int x, int y) const;\n\n    GWindow* _window;\n    GSlider* _slider;\n    GCheckBox* _highlightDiffsBox;\n    GButton* _colorButton;\n    GLabel* _diffPixelsLabel;\n    GLabel* _imageLabel1;\n    GLabel* _imageLabel2;\n    GLabel* _southPixelLabel;\n    GImage* _image1;\n    GImage* _image2;\n    GImage* _imageDiffs;\n    std::string _highlightColor;\n\n    friend class GImage;\n};\n\n#endif // _gdiffimage_h\n"
  },
  {
    "path": "Library/graphics/gdownloader.cpp",
    "content": "/*\n * File: gdownloader.cpp\n * ---------------------\n * This file implements the GDownloader class as declared in gdownloader.h.\n * See the .h file for the declarations of each member and comments.\n *\n * @author Marty Stepp\n * @version 2018/09/23\n * - added macro checks to improve compatibility with old Qt versions\n * @version 2018/09/18\n * - working version; had to fix various threading / Qt signal issues\n * @version 2018/08/23\n * - renamed to gdownloader.cpp to replace Java version\n * @version 2018/08/03\n * - initial version\n */\n\n#include \"gdownloader.h\"\n#include <iomanip>\n#include <iostream>\n#include <QtGlobal>\n#include <QFile>\n#include <QIODevice>\n#include <QTimer>\n#include \"error.h\"\n#include \"gthread.h\"\n\nstatic int _sslSupported = -1;\n\nGDownloader::GDownloader()\n        : _manager(nullptr),\n          _reply(nullptr),\n          _httpStatusCode(0),\n          _downloadComplete(false) {\n            if (_sslSupported == -1) {\n                GThread::runOnQtGuiThreadAsync([]() {\n                    _sslSupported = QSslSocket::supportsSsl();\n                });\n            }\n}\n\nGDownloader::~GDownloader() {\n    // TODO: delete\n    _manager = nullptr;\n    _reply = nullptr;\n}\n\nstd::string GDownloader::downloadAsString(const std::string& url) {\n    _url = url;\n    _filename = \"\";\n    _httpStatusCode = 0;\n    _lastErrorMessage = \"\";\n\n    // download the file on gui thread and block/wait for it to finish\n    downloadInternal();\n\n    // save download to string\n    saveDownloadedData(\"downloadAsString\");\n\n    // return downloaded text as string (saved in member variable)\n    return _filedata;\n}\n\nvoid GDownloader::downloadToFile(const std::string& url, const std::string& file) {\n    _url = url;\n    _filename = file;\n    _httpStatusCode = 0;\n    _lastErrorMessage = \"\";\n\n    // download the file on gui thread and block/wait for it to finish\n    downloadInternal();\n\n    // write to file\n    saveDownloadedData(\"downloadToFile\", file);\n}\n\nvoid GDownloader::downloadInternal() {\n    // Cheezy check\n    // Access https: url if no SSL support present is a lose, so don't even try\n    if (!_sslSupported && _url.compare(0, 6, \"https:\") == 0) {\n        reportNoSSL();\n        return;\n    }\n\n    GThread::runOnQtGuiThreadAsync([this]() {\n\n        if (!_manager) {\n            _manager = new QNetworkAccessManager();\n        }\n        QNetworkRequest* request = new QNetworkRequest(QUrl(QString::fromStdString(_url)));\n\n        for (std::string headerKey : _headers) {\n            request->setRawHeader(QByteArray(headerKey.c_str()), QByteArray(_headers[headerKey].c_str()));\n        }\n\n        _reply = _manager->get(*request);\n\n        // these do not seem to be called and/or I do not have a test case to trigger them\n        // so rather than leave here untested, I am disabling\n        //connect(_reply, &QNetworkReply::errorOccurred, this, &GDownloader::fileDownloadError);\n        //connect(_reply, &QNetworkReply::sslErrors, this, &GDownloader::sslErrorsReply);\n  });\n\n    // wait for download to finish (in student thread)\n    waitForDownload();\n}\n\nvoid GDownloader::fileDownloadError(QNetworkReply::NetworkError nerror) {\n    error(\"file download error: \" + std::to_string(nerror));\n}\n\nstd::string GDownloader::getErrorMessage() const {\n    return _lastErrorMessage;\n}\n\nint GDownloader::getHttpStatusCode() const {\n    // all HTTP status codes are between 1xx and 5xx, inclusive\n    return _httpStatusCode >= 100 && _httpStatusCode <= 599 ? _httpStatusCode : 0;\n}\n\nstd::string GDownloader::getHeader(const std::string& name) const {\n    return _headers[name];\n}\n\nstd::string GDownloader::getUserAgent() const {\n    if (_headers.containsKey(\"User-Agent\")) {\n        return _headers[\"User-Agent\"];\n    } else {\n        return \"\";\n    }\n}\n\nbool GDownloader::hasError() const {\n    if (_httpStatusCode != 0) {\n        // values 2xx indicate success\n        return _httpStatusCode < 200 || _httpStatusCode > 299;\n    } else {\n        return !_lastErrorMessage.empty();\n    }\n}\n\nstd::string GDownloader::qtNetworkErrorToString(QNetworkReply::NetworkError nerror) {\n    // http://doc.qt.io/qt-5/qnetworkreply.html#NetworkError-enum\n    switch (nerror) {\n    case QNetworkReply::ConnectionRefusedError: return \"the remote server refused the connection (the server is not accepting requests)\";\n    case QNetworkReply::RemoteHostClosedError: return \"the remote server closed the connection prematurely, before the entire reply was received and processed\";\n    case QNetworkReply::HostNotFoundError: return \"the remote host name was not found (invalid hostname)\";\n    case QNetworkReply::TimeoutError: return \"the connection to the remote server timed out\";\n    case QNetworkReply::OperationCanceledError: return \"the operation was canceled via calls to abort() or close() before it was finished.\";\n    case QNetworkReply::SslHandshakeFailedError: return \"the SSL/TLS handshake failed and the encrypted channel could not be established. The sslErrors() signal should have been emitted.\";\n    case QNetworkReply::TemporaryNetworkFailureError: return \"the connection was broken due to disconnection from the network, however the system has initiated roaming to another access point. The request should be resubmitted and will be processed as soon as the connection is re-established.\";\n    case QNetworkReply::NetworkSessionFailedError: return \"the connection was broken due to disconnection from the network or failure to start the network.\";\n    case QNetworkReply::BackgroundRequestNotAllowedError: return \"the background request is not currently allowed due to platform policy.\";\n    case QNetworkReply::TooManyRedirectsError: return \"while following redirects, the maximum limit was reached. The limit is by default set to 50 or as set by QNetworkRequest::setMaxRedirectsAllowed(). (This value was introduced in 5.6.)\";\n    case QNetworkReply::InsecureRedirectError: return \"while following redirects, the network access API detected a redirect from a encrypted protocol (https) to an unencrypted one (http). (This value was introduced in 5.6.)\";\n    case QNetworkReply::ProxyConnectionRefusedError: return \"the connection to the proxy server was refused (the proxy server is not accepting requests)\";\n    case QNetworkReply::ProxyConnectionClosedError: return \"the proxy server closed the connection prematurely, before the entire reply was received and processed\";\n    case QNetworkReply::ProxyNotFoundError: return \"the proxy host name was not found (invalid proxy hostname)\";\n    case QNetworkReply::ProxyTimeoutError: return \"the connection to the proxy timed out or the proxy did not reply in time to the request sent\";\n    case QNetworkReply::ProxyAuthenticationRequiredError: return \"the proxy requires authentication in order to honour the request but did not accept any credentials offered (if any)\";\n    case QNetworkReply::ContentAccessDenied: return \"access denied\";\n    case QNetworkReply::ContentOperationNotPermittedError: return \"the operation requested on the remote content is not permitted\";\n    case QNetworkReply::ContentNotFoundError: return \"the remote content was not found at the server\";\n    case QNetworkReply::AuthenticationRequiredError: return \"the remote server requires authentication to serve the content but the credentials provided were not accepted (if any)\";\n    case QNetworkReply::ContentReSendError: return \"the request needed to be sent again, but this failed for example because the upload data could not be read a second time.\";\n    case QNetworkReply::ContentConflictError: return \"the request could not be completed due to a conflict with the current state of the resource.\";\n    case QNetworkReply::ContentGoneError: return \"the requested resource is no longer available at the server.\";\n    case QNetworkReply::InternalServerError: return \"the server encountered an unexpected condition which prevented it from fulfilling the request.\";\n    case QNetworkReply::OperationNotImplementedError: return \"the server does not support the functionality required to fulfill the request.\";\n    case QNetworkReply::ServiceUnavailableError: return \"the server is unable to handle the request at this time.\";\n    case QNetworkReply::ProtocolUnknownError: return \"the Network Access API cannot honor the request because the protocol is not known\";\n    case QNetworkReply::ProtocolInvalidOperationError: return \"the requested operation is invalid for this protocol\";\n    case QNetworkReply::UnknownNetworkError: return \"an unknown network-related error was detected\";\n    case QNetworkReply::UnknownProxyError: return \"an unknown proxy-related error was detected\";\n    case QNetworkReply::UnknownContentError: return \"an unknown error related to the remote content was detected\";\n    case QNetworkReply::ProtocolFailure: return \"a breakdown in protocol was detected (parsing error, invalid or unexpected responses, etc.)\";\n    case QNetworkReply::UnknownServerError: return \"unknown server error\";\n    case QNetworkReply::NoError:\n        break;\n    }\n    return \"\";\n}\n\nvoid GDownloader::saveDownloadedData(const std::string& member, const std::string& filename) {\n    if (_reply) {\n        QNetworkReply::NetworkError nerror = _reply->error();\n        if (nerror) {\n            // connection failed; log the error message\n            _lastErrorMessage = qtNetworkErrorToString(nerror);\n        } else if (filename.empty()) {\n            // save to a string\n            _filedata = _reply->readAll().toStdString();\n        } else {\n            // save to a file\n            QFile outfile(QString::fromStdString(filename));\n            if (!outfile.open(QIODevice::WriteOnly)) {\n                error(\"GDownloader::\" + member + \": cannot open file \" + filename + \" for writing\");\n            }\n            outfile.write(_reply->readAll());\n            outfile.close();\n        }\n\n        // clean up the connection\n        _reply->deleteLater();\n        _reply = nullptr;\n        _downloadComplete = true;\n    }\n}\n\nvoid GDownloader::setHeader(const std::string& name, const std::string& value) {\n    _headers[name] = value;\n}\n\nvoid GDownloader::setUserAgent(const std::string& userAgent) {\n    setHeader(\"User-Agent\", userAgent);\n}\n\nvoid GDownloader::sslErrorsReply(QList<QSslError>) {\n    std::cout << \"  DEBUG: sslErrors from NetworkReply\" << std::endl;\n}\n\nvoid GDownloader::sslErrorsNam(QNetworkReply *, QList<QSslError>) {\n    std::cout << \"  DEBUG: sslErrors from NetworkAccessManager\" << std::endl;\n}\n\nvoid GDownloader::reportNoSSL() {\n    _downloadComplete = true;\n    _lastErrorMessage = \"No ssl support, unable to fetch secure url \" + _url;\n}\n\nvoid GDownloader::waitForDownload() {\n    // wait for download to finish\n    while (!_downloadComplete) {\n        GThread::msleep(10);\n        if (_reply && _reply->isFinished()) {\n            _downloadComplete = true;\n            break;\n        }\n    }\n\n    // grab the HTTP status code\n    QVariant statusCode = _reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);\n    if (statusCode.isValid()) {\n        _httpStatusCode = statusCode.toInt();\n        _lastErrorMessage = _reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toString().toStdString();\n    } else {\n        _httpStatusCode = -1;\n        _lastErrorMessage = \"Unable to connect to URL\";\n    }\n}\n\n\n"
  },
  {
    "path": "Library/graphics/gdownloader.h",
    "content": "/*\n * File: gdownloader.h\n * -------------------\n * A GDownloader can download data from URLs and save them to files or return\n * the data as a string.\n *\n * Note that because the downloader uses a pure-C++ implementation, your project\n * must include the 'network' component of Qt to function properly.\n * If you get errors when trying to connect to HTTPS URLs, you may also need to\n * install various SSL packages on your system, such as openssl, libssl-dev,\n * libssl1.0, and so on.  This varies by operating system.\n *\n * Based somewhat on this source:\n * https://wiki.qt.io/Download_Data_from_URL\n *\n * @author Marty Stepp\n * @version 2018/09/18\n * - working version; had to fix various threading / Qt signal issues\n * @version 2018/09/07\n * - added doc comments for new documentation generation\n * @version 2018/08/23\n * - renamed to gdownloader.h to replace Java version\n * @version 2018/08/03\n * - initial version\n */\n\n\n#ifndef _gdownloader_h\n#define _gdownloader_h\n\n#include <string>\n#include <QNetworkAccessManager>\n#include <QNetworkReply>\n\n#include \"map.h\"\n\n/**\n * A GDownloader can download files and data over an internet connection.\n * It can save the data to a file or return the data as a string.\n */\nclass GDownloader : public QObject {\n    Q_OBJECT\n\npublic:\n    /**\n     * Creates a new downloader.\n     */\n    GDownloader();\n\n    /**\n     * Frees memory allocated internally by the downloader.\n     */\n    virtual ~GDownloader();\n\n    /**\n     * Downloads the text contents of the given URL, returning them as a string.\n     * This method blocks until the data is finished downloading.\n     */\n    std::string downloadAsString(const std::string& url);\n\n    /**\n     * Downloads the text contents of the given URL, saving it to the given output file.\n     * This method blocks until the data is finished downloading.\n     */\n    void downloadToFile(const std::string& url, const std::string& file);\n\n    /**\n     * Returns the last HTTP error message that occurred.\n     * If no HTTP errors have occurred, returns \"\".\n     */\n    std::string getErrorMessage() const;\n\n    /**\n     * Returns the value of the given HTTP header for this URL request.\n     * If the given header is not defined, returns an empty string.\n     */\n    std::string getHeader(const std::string& name) const;\n\n    /**\n     * Returns the most recent HTTP status code, which may be a successful\n     * code (e.g. 200) or an error (e.g 404). If there is no HTTP status\n     * code to return, returns 0.\n     */\n    int getHttpStatusCode() const;\n\n    /**\n     * Returns the value of the HTTP \"User-Agent\" header for this URL request,\n     * or an empty string if the user agent has not been set.\n     */\n    std::string getUserAgent() const;\n\n    /**\n     * Returns true if the HTTP connection failed and had an error.\n     * You can see what the error was by calling getErrorMessage.\n     */\n    bool hasError() const;\n\n    /**\n     * Performs an HTTP GET request to the given URL.\n     * along with any headers previously specified.\n     */\n    void httpGet(const std::string& url);\n\n    /**\n     * Performs an HTTP POST request to the given URL,\n     * submitting any headers and query parameters previously specified.\n     */\n    void httpPost(const std::string& url);\n\n    /**\n     * Sets the value of the given HTTP header for this URL request.\n     * Must be called before open(), and the stream must have been created\n     * with the parameterless constructor.\n     *\n     * @example stream.setHeader(\"Referer\", \"http://cs106b.stanford.edu/\");\n     */\n    void setHeader(const std::string& name, const std::string& value);\n\n    /**\n     * Sets the value of the HTTP \"User-Agent\" header for this URL request.\n     * Must be called before open(), and the stream must have been created\n     * with the parameterless constructor.\n     * Equivalent to calling setHeader with \"User-Agent\" as the header's name.\n     *\n     * @example stream.setUserAgent(\"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2\");\n     */\n    void setUserAgent(const std::string& userAgent);\n\nsignals:\n    /**\n     * This Qt signal fires when the data is done downloading.\n     */\n    void downloaded();\n\nprivate slots:\n    void downloadInternal();\n    void fileDownloadError(QNetworkReply::NetworkError);\n    void reportNoSSL();\n    void saveDownloadedData(const std::string& member, const std::string& filename = \"\");\n    void sslErrorsNam(QNetworkReply*, QList<QSslError>);\n    void sslErrorsReply(QList<QSslError>);\n    void waitForDownload();\nprivate:\n    Q_DISABLE_COPY(GDownloader)\n\n    static std::string qtNetworkErrorToString(QNetworkReply::NetworkError nerror);\n\n    QNetworkAccessManager* _manager;\n    QNetworkReply* _reply;\n    Map<std::string, std::string> _headers;   // HTTP headers to send (name => value)\n    int _httpStatusCode;\n    bool _downloadComplete;\n    std::string _url;\n    std::string _filename;\n    std::string _filedata;\n    std::string _lastErrorMessage;\n};\n\n#endif // _gdownloader_h\n"
  },
  {
    "path": "Library/graphics/gdrawingsurface.cpp",
    "content": "/*\n * File: gdrawingsurface.cpp\n * -------------------------\n *\n * @author Marty Stepp\n * @version 2018/08/23\n * - renamed to gdrawingsurface.cpp to replace Java version\n * @version 2018/07/11\n * - initial version\n */\n\n#include \"gdrawingsurface.h\"\n#include <QPainter>\n#include \"gcolor.h\"\n#include \"gfont.h\"\n#include \"require.h\"\n\nGDrawingSurface::GDrawingSurface()\n        : _forwardTarget(nullptr),\n          _backgroundColor(\"0xffffffff\"),\n          _color(\"\"),\n          _fillColor(\"\"),\n          _font(\"\"),\n          _backgroundColorInt(0xffffffff),\n          _colorInt(0),\n          _fillColorInt(0),\n          _lineStyle(GObject::LINE_SOLID),\n          _lineWidth(1),\n          _autoRepaint(true) {\n    // empty\n}\n\nGDrawingSurface::~GDrawingSurface() {\n    _forwardTarget = nullptr;\n}\n\nvoid GDrawingSurface::checkBounds(const std::string& member, double x, double y, double width, double height) const {\n    require::inRange2D(x, y, width - 1, height - 1, member);\n}\n\nvoid GDrawingSurface::checkColor(const std::string& /* member */, int /* rgb */) const {\n    // I think this code is wrong; it ignores the possibility of alpha values\n    // or of the top bits being set to 255 (all 1) by default by Qt libraries\n//    if (rgb < 0x0 || rgb > 0xffffff) {\n//        error(member + \": color is outside of range 0x000000 through 0xffffff\");\n//    }\n}\n\nvoid GDrawingSurface::checkSize(const std::string& /* member */, double /* width */, double /* height */) const {\n//    if (width < 0 || height < 0) {\n//        error(member + \": width/height cannot be negative\");\n//    }\n//    if (width > GCanvas::WIDTH_HEIGHT_MAX\n//            || height > GCanvas::WIDTH_HEIGHT_MAX) {\n//        error(getType() + \"::\" + member + \": width/height too large (cannot exceed \"\n//              + std::to_string(GCanvas::WIDTH_HEIGHT_MAX));\n//    }\n}\n\nvoid GDrawingSurface::conditionalRepaint() {\n    if (_forwardTarget) {\n        _forwardTarget->conditionalRepaint();\n    } else {\n        if (isAutoRepaint()) {\n            repaint();\n        }\n    }\n}\n\nvoid GDrawingSurface::conditionalRepaintRegion(int x, int y, int width, int height) {\n    if (isAutoRepaint()) {\n        repaintRegion(x, y, width, height);\n    }\n}\n\nvoid GDrawingSurface::conditionalRepaintRegion(const GRectangle& bounds) {\n    if (isAutoRepaint()) {\n        repaintRegion(bounds);\n    }\n}\n\nvoid GDrawingSurface::draw(GObject* gobj, double x, double y) {\n    require::nonNull(gobj, \"GDrawingSurface::draw\");\n    gobj->setLocation(x, y);\n    draw(gobj);\n}\n\nvoid GDrawingSurface::draw(GObject& gobj) {\n    draw(&gobj);\n}\n\nvoid GDrawingSurface::draw(GObject& gobj, double x, double y) {\n    gobj.setLocation(x, y);\n    draw(&gobj);\n}\n\nvoid GDrawingSurface::drawArc(double x, double y, double width, double height, double start, double sweep) {\n    GArc arc(x, y, width, height, start, sweep);\n    initializeGObject(arc);\n    draw(arc);\n}\n\nvoid GDrawingSurface::drawImage(const std::string& filename, double x, double y) {\n    GImage image(filename, x, y);\n    draw(image);\n}\n\nvoid GDrawingSurface::drawLine(const GPoint& p0, const GPoint& p1) {\n    drawLine(p0.x, p0.y, p1.x, p1.y);\n}\n\nvoid GDrawingSurface::drawLine(double x0, double y0, double x1, double y1) {\n    GLine line(x0, y0, x1, y1);\n    initializeGObject(line);\n    draw(line);\n}\n\nvoid GDrawingSurface::drawOval(const GRectangle& bounds) {\n    drawOval(bounds.x, bounds.y, bounds.width, bounds.height);\n}\n\nvoid GDrawingSurface::drawOval(double x, double y, double width, double height) {\n    GOval oval(x, y, width, height);\n    initializeGObject(oval);\n    draw(oval);\n}\n\nGPoint GDrawingSurface::drawPolarLine(const GPoint& p0, double r, double theta) {\n    return drawPolarLine(p0.x, p0.y, r, theta);\n}\n\nGPoint GDrawingSurface::drawPolarLine(double x0, double y0, double r, double theta) {\n    double x1 = x0 + r * cosDegrees(theta);\n    double y1 = y0 - r * sinDegrees(theta);\n    drawLine(x0, y0, x1, y1);\n    return GPoint(x1, y1);\n}\n\nvoid GDrawingSurface::drawPixel(double x, double y) {\n    setPixel(x, y, _colorInt);\n}\n\nvoid GDrawingSurface::drawPixel(double x, double y, int color) {\n    setPixel(x, y, color);\n}\n\nvoid GDrawingSurface::drawPixel(double x, double y, const std::string& color) {\n    setPixel(x, y, color);\n}\n\nvoid GDrawingSurface::drawPolygon(std::initializer_list<double> coords) {\n    GPolygon polygon(coords);\n    initializeGObject(polygon);\n    draw(polygon);\n}\n\nvoid GDrawingSurface::drawPolygon(std::initializer_list<GPoint> points) {\n    GPolygon polygon(points);\n    initializeGObject(polygon);\n    draw(polygon);\n}\n\nvoid GDrawingSurface::drawRect(const GRectangle& bounds) {\n    drawRect(bounds.x, bounds.y, bounds.width, bounds.height);\n}\n\nvoid GDrawingSurface::drawRect(double x, double y, double width, double height) {\n    GRect rect(x, y, width, height);\n    initializeGObject(rect);\n    draw(rect);\n}\n\nvoid GDrawingSurface::drawString(const std::string& text, double x, double y) {\n    GText str(text, x, y);\n    initializeGObject(str);\n    draw(str);\n}\n\nvoid GDrawingSurface::fillArc(double x, double y, double width, double height, double start, double sweep) {\n    GArc arc(x, y, width, height, start, sweep);\n    initializeGObject(arc, /* filled */ true);\n    draw(arc);\n}\n\nvoid GDrawingSurface::fillOval(const GRectangle& bounds) {\n    fillOval(bounds.x, bounds.y, bounds.width, bounds.height);\n}\n\nvoid GDrawingSurface::fillOval(double x, double y, double width, double height) {\n    GOval oval(x, y, width, height);\n    initializeGObject(oval, /* filled */ true);\n    draw(oval);\n}\n\nvoid GDrawingSurface::fillPolygon(std::initializer_list<double> coords) {\n    GPolygon polygon(coords);\n    initializeGObject(polygon, /* filled */ true);\n    draw(polygon);\n}\n\nvoid GDrawingSurface::fillPolygon(std::initializer_list<GPoint> points) {\n    GPolygon polygon(points);\n    initializeGObject(polygon, /* fllled */ true);\n    draw(polygon);\n}\n\nvoid GDrawingSurface::fillRect(const GRectangle& bounds) {\n    fillRect(bounds.x, bounds.y, bounds.width, bounds.height);\n}\n\nvoid GDrawingSurface::fillRect(double x, double y, double width, double height) {\n    GRect rect(x, y, width, height);\n    initializeGObject(rect, /* filled */ true);\n    draw(rect);\n}\n\nint GDrawingSurface::getARGB(double x, double y) const {\n    return getPixelARGB(x, y);\n}\n\nstd::string GDrawingSurface::getBackground() const {\n    if (_forwardTarget) {\n        return _forwardTarget->getBackground();\n    } else {\n        return _backgroundColor;\n    }\n}\n\nint GDrawingSurface::getBackgroundInt() const {\n    if (_forwardTarget) {\n        return _forwardTarget->getBackgroundInt();\n    } else {\n        return _backgroundColorInt;\n    }\n}\n\nstd::string GDrawingSurface::getColor() const {\n    if (_forwardTarget) {\n        return _forwardTarget->getColor();\n    } else {\n        return _color;\n    }\n}\n\nint GDrawingSurface::getColorInt() const {\n    if (_forwardTarget) {\n        return _forwardTarget->getColorInt();\n    } else {\n        return _colorInt;\n    }\n}\n\nstd::string GDrawingSurface::getFillColor() const {\n    if (_forwardTarget) {\n        return _forwardTarget->getFillColor();\n    } else {\n        return _fillColor;\n    }\n}\n\nint GDrawingSurface::getFillColorInt() const {\n    if (_forwardTarget) {\n        return _forwardTarget->getFillColorInt();\n    } else {\n        return _fillColorInt;\n    }\n}\n\nstd::string GDrawingSurface::getFont() const {\n    if (_forwardTarget) {\n        return _forwardTarget->getFont();\n    } else {\n        return _font;\n    }\n}\n\nstd::string GDrawingSurface::getForeground() const {\n    return getColor();\n}\n\nint GDrawingSurface::getForegroundInt() const {\n    return getColorInt();\n}\n\nGObject::LineStyle GDrawingSurface::getLineStyle() const {\n    if (_forwardTarget) {\n        return _forwardTarget->getLineStyle();\n    } else {\n        return _lineStyle;\n    }\n}\n\ndouble GDrawingSurface::getLineWidth() const {\n    if (_forwardTarget) {\n        return _forwardTarget->getLineWidth();\n    } else {\n        return _lineWidth;\n    }\n}\n\nstd::string GDrawingSurface::getPixelString(double x, double y) const {\n    return GColor::convertRGBToColor(getPixel(x, y));\n}\n\nint GDrawingSurface::getRGB(double x, double y) const {\n    return getPixel(x, y);\n}\n\nstd::string GDrawingSurface::getRGBString(double x, double y) const {\n    return GColor::convertRGBToColor(getPixel(x, y));\n}\n\nvoid GDrawingSurface::initializeGObject(GObject& obj, bool fill) {\n    initializeGObject(&obj, fill);\n}\n\nvoid GDrawingSurface::initializeGObject(GObject* obj, bool fill) {\n    if (!obj) {\n        return;\n    }\n    obj->setColor(getColor());\n    if (fill) {\n        obj->setFilled(true);\n        obj->setFillColor(getFillColor());\n    }\n    obj->setFont(getFont());\n    obj->setLineStyle(getLineStyle());\n    obj->setLineWidth(getLineWidth());\n}\n\nbool GDrawingSurface::isAutoRepaint() const {\n    if (_forwardTarget) {\n        return _forwardTarget->isAutoRepaint();\n    } else {\n        return _autoRepaint;\n    }\n}\n\nbool GDrawingSurface::isRepaintImmediately() const {\n    return isAutoRepaint();\n}\n\nvoid GDrawingSurface::repaintRegion(const GRectangle& bounds) {\n    repaintRegion((int) bounds.x, (int) bounds.y,\n                  (int) bounds.width, (int) bounds.height);\n}\n\nvoid GDrawingSurface::setAutoRepaint(bool autoRepaint) {\n    if (_forwardTarget) {\n        _forwardTarget->setAutoRepaint(autoRepaint);\n    } else {\n        _autoRepaint = autoRepaint;\n    }\n}\n\nvoid GDrawingSurface::setBackground(int color) {\n    if (_forwardTarget) {\n        _forwardTarget->setBackground(color);\n    } else {\n        _backgroundColorInt = color;\n        _backgroundColor = GColor::convertRGBToColor(color);\n    }\n}\n\nvoid GDrawingSurface::setBackground(const std::string& color) {\n    if (_forwardTarget) {\n        _forwardTarget->setBackground(color);\n    } else {\n        _backgroundColor = color;\n        _backgroundColorInt = GColor::convertColorToRGB(color);\n    }\n}\n\nvoid GDrawingSurface::setColor(int color) {\n    // sets both color and fillColor\n    if (_forwardTarget) {\n        _forwardTarget->setColor(color);\n        _forwardTarget->setFillColor(color);\n    } else {\n        _colorInt = color;\n        _color = GColor::convertRGBToColor(color);\n        _fillColorInt = color;\n        _fillColor = _color;\n    }\n}\n\nvoid GDrawingSurface::setColor(const std::string& color) {\n    // sets both color and fillColor\n    if (_forwardTarget) {\n        _forwardTarget->setColor(color);\n        _forwardTarget->setFillColor(color);\n    } else {\n        _color = color;\n        _colorInt = GColor::convertColorToRGB(color);\n        _fillColor = color;\n        _fillColorInt = _colorInt;\n    }\n}\n\nvoid GDrawingSurface::setDrawingForwardTarget(GDrawingSurface* forwardTarget) {\n    _forwardTarget = forwardTarget;\n}\n\nvoid GDrawingSurface::setFillColor(int color) {\n    if (_forwardTarget) {\n        _forwardTarget->setFillColor(color);\n    } else {\n        _fillColorInt = color;\n        _fillColor = GColor::convertRGBToColor(color);\n    }\n}\n\nvoid GDrawingSurface::setFillColor(const std::string& color) {\n    if (_forwardTarget) {\n        _forwardTarget->setFillColor(color);\n    } else {\n        _fillColor = color;\n        _fillColorInt = GColor::convertColorToRGB(color);\n    }\n}\n\nvoid GDrawingSurface::setFont(const QFont& font) {\n    if (_forwardTarget) {\n        _forwardTarget->setFont(font);\n    } else {\n        _font = GFont::toFontString(font);\n    }\n}\n\nvoid GDrawingSurface::setFont(const std::string& font) {\n    if (_forwardTarget) {\n        _forwardTarget->setFont(font);\n    } else {\n        _font = font;\n    }\n}\n\nvoid GDrawingSurface::setForeground(int color) {\n    setColor(color);\n}\n\nvoid GDrawingSurface::setForeground(const std::string& color) {\n    setColor(color);\n}\n\nvoid GDrawingSurface::setLineStyle(GObject::LineStyle lineStyle) {\n    if (_forwardTarget) {\n        _forwardTarget->setLineStyle(lineStyle);\n    } else {\n        _lineStyle = lineStyle;\n    }\n}\n\nvoid GDrawingSurface::setLineWidth(double lineWidth) {\n    if (_forwardTarget) {\n        _forwardTarget->setLineWidth(lineWidth);\n    } else {\n        _lineWidth = lineWidth;\n    }\n}\n\nvoid GDrawingSurface::setPixel(double x, double y, int r, int g, int b) {\n    setPixel(x, y, GColor::convertRGBToRGB(r, g, b));\n}\n\nvoid GDrawingSurface::setPixel(double x, double y, const std::string& color) {\n    setPixel(x, y, GColor::convertColorToRGB(color));\n}\n\nvoid GDrawingSurface::setPixelARGB(double x, double y, int a, int r, int g, int b) {\n    setPixelARGB(x, y, GColor::convertARGBToARGB(a, r, g, b));\n}\n\nvoid GDrawingSurface::setRepaintImmediately(bool autoRepaint) {\n    setAutoRepaint(autoRepaint);\n}\n\nvoid GDrawingSurface::setRGB(double x, double y, int rgb) {\n    setPixel(x, y, rgb);\n}\n\nvoid GDrawingSurface::setRGB(double x, double y, int r, int g, int b) {\n    this->setPixel(x, y, r, g, b);\n}\n\nvoid GDrawingSurface::setRGB(double x, double y, const std::string& color) {\n    setPixel(x, y, GColor::convertColorToRGB(color));\n}\n\n\nvoid GForwardDrawingSurface::clear() {\n    if (_forwardTarget) {\n        _forwardTarget->clear();\n    }\n}\n\nvoid GForwardDrawingSurface::draw(GObject* obj) {\n    ensureForwardTarget();\n    _forwardTarget->draw(obj);\n}\n\nvoid GForwardDrawingSurface::draw(GObject* obj, double x, double y) {\n    ensureForwardTarget();\n    _forwardTarget->draw(obj, x, y);\n}\n\nvoid GForwardDrawingSurface::draw(GObject& obj) {\n    ensureForwardTarget();\n    _forwardTarget->draw(obj);\n}\n\nvoid GForwardDrawingSurface::draw(GObject& obj, double x, double y) {\n    ensureForwardTarget();\n    _forwardTarget->draw(obj, x, y);\n}\n\nvoid GForwardDrawingSurface::draw(QPainter* painter) {\n    ensureForwardTarget();\n    _forwardTarget->draw(painter);\n}\n\nvoid GForwardDrawingSurface::ensureForwardTargetConstHack() const {\n    if (!_forwardTarget) {\n        // Your whole life has been a lie.\n        // Also, this code is bad and I should feel bad.\n        GForwardDrawingSurface* hack = (GForwardDrawingSurface*) this;\n        hack->ensureForwardTarget();\n    }\n}\n\nint GForwardDrawingSurface::getPixel(double x, double y) const {\n    ensureForwardTargetConstHack();\n    return _forwardTarget->getPixel(x, y);\n}\n\nint GForwardDrawingSurface::getPixelARGB(double x, double y) const {\n    ensureForwardTargetConstHack();\n    return _forwardTarget->getPixelARGB(x, y);\n}\n\nGrid<int> GForwardDrawingSurface::getPixels() const {\n    ensureForwardTargetConstHack();\n    return _forwardTarget->getPixels();\n}\n\nGrid<int> GForwardDrawingSurface::getPixelsARGB() const {\n    ensureForwardTargetConstHack();\n    return _forwardTarget->getPixelsARGB();\n}\n\nbool GForwardDrawingSurface::isAutoRepaint() const {\n    ensureForwardTargetConstHack();\n    return _forwardTarget->isAutoRepaint();\n}\n\nvoid GForwardDrawingSurface::repaint() {\n    if (_forwardTarget) {\n        _forwardTarget->repaint();\n    }\n}\n\nvoid GForwardDrawingSurface::repaintRegion(int x, int y, int width, int height) {\n    if (_forwardTarget) {\n        _forwardTarget->repaintRegion(x, y, width, height);\n    }\n}\n\nvoid GForwardDrawingSurface::setAutoRepaint(bool autoRepaint) {\n    ensureForwardTarget();\n    _forwardTarget->setAutoRepaint(autoRepaint);\n}\n\nvoid GForwardDrawingSurface::setBackground(int color) {\n    ensureForwardTarget();\n    _forwardTarget->setBackground(color);\n}\n\nvoid GForwardDrawingSurface::setBackground(const std::string& color) {\n    ensureForwardTarget();\n    _forwardTarget->setBackground(color);\n}\n\nvoid GForwardDrawingSurface::setColor(int color) {\n    ensureForwardTarget();\n    _forwardTarget->setColor(color);\n}\n\nvoid GForwardDrawingSurface::setColor(const std::string& color) {\n    ensureForwardTarget();\n    _forwardTarget->setColor(color);\n}\n\nvoid GForwardDrawingSurface::setFillColor(int color) {\n    ensureForwardTarget();\n    _forwardTarget->setFillColor(color);\n}\n\nvoid GForwardDrawingSurface::setFillColor(const std::string& color) {\n    ensureForwardTarget();\n    _forwardTarget->setFillColor(color);\n}\n\nvoid GForwardDrawingSurface::setFont(const QFont& font) {\n    ensureForwardTarget();\n    _forwardTarget->setFont(font);\n}\n\nvoid GForwardDrawingSurface::setFont(const std::string& font) {\n    ensureForwardTarget();\n    _forwardTarget->setFont(font);\n}\n\nvoid GForwardDrawingSurface::setLineWidth(double lineWidth) {\n    ensureForwardTarget();\n    _forwardTarget->setLineWidth(lineWidth);\n}\n\nvoid GForwardDrawingSurface::setPixel(double x, double y, int rgb) {\n    ensureForwardTarget();\n    _forwardTarget->setPixel(x, y, rgb);\n}\n\nvoid GForwardDrawingSurface::setPixel(double x, double y, int r, int g, int b) {\n    ensureForwardTarget();\n    _forwardTarget->setPixel(x, y, r, g, b);\n}\n\nvoid GForwardDrawingSurface::setPixelARGB(double x, double y, int argb) {\n    ensureForwardTarget();\n    _forwardTarget->setPixelARGB(x, y, argb);\n}\n\nvoid GForwardDrawingSurface::setPixelARGB(double x, double y, int a, int r, int g, int b) {\n    ensureForwardTarget();\n    _forwardTarget->setPixelARGB(x, y, a, r, g, b);\n}\n\nvoid GForwardDrawingSurface::setPixels(const Grid<int>& pixels) {\n    ensureForwardTarget();\n    _forwardTarget->setPixels(pixels);\n}\n\nvoid GForwardDrawingSurface::setPixelsARGB(const Grid<int>& pixelsARGB) {\n    ensureForwardTarget();\n    _forwardTarget->setPixelsARGB(pixelsARGB);\n}\n\nvoid GForwardDrawingSurface::setRepaintImmediately(bool repaintImmediately) {\n    ensureForwardTarget();\n    _forwardTarget->setAutoRepaint(repaintImmediately);\n}\n"
  },
  {
    "path": "Library/graphics/gdrawingsurface.h",
    "content": "/*\n * File: gdrawingsurface.h\n * -----------------------\n *\n * @author Marty Stepp\n * @version 2018/09/10\n * - added doc comments for new documentation generation\n * @version 2018/08/23\n * - renamed to gdrawingsurface.h to replace Java version\n * @version 2018/07/11\n * - initial version\n */\n\n\n#ifndef _gdrawingsurface_h\n#define _gdrawingsurface_h\n\n#include <string>\n#include <QFont>\n#include <QWidget>\n\n#include \"grid.h\"\n#include \"gobjects.h\"\n#include \"gtypes.h\"\n\n/**\n * GDrawingSurface is an abstract superclass for types that allow drawing shapes\n * and pixels onto themselves as a pixel background layer.\n * This includes graphical canvas objects (GCanvas) as well as windows (GWindow).\n */\nclass GDrawingSurface {\npublic:\n    /**\n     * Erases any pixel data from the drawing surface.\n     */\n    virtual void clear() = 0;\n\n    /**\n     * Repaints the interactor only if its contents have changed.\n     */\n    virtual void conditionalRepaint();\n\n    /**\n     * Repaints the given region of the interactor only if its contents have changed.\n     */\n    virtual void conditionalRepaintRegion(int x, int y, int width, int height);\n\n    /**\n     * Repaints the given region of the interactor only if its contents have changed.\n     */\n    virtual void conditionalRepaintRegion(const GRectangle& bounds);\n\n    /**\n     * Draws the given graphical object onto the background pixel layer of this\n     * interactor.\n     * @throw ErrorException if the object is null\n     */\n    virtual void draw(GObject* gobj) = 0;\n\n    /**\n     * Draws the given graphical object onto the background pixel layer of this\n     * interactor, moving it to the given x/y location first.\n     * @throw ErrorException if the object is null\n     */\n    virtual void draw(GObject* gobj, double x, double y);\n\n    /**\n     * Draws the given graphical object onto the background pixel layer of this\n     * interactor.\n     */\n    virtual void draw(GObject& gobj);\n\n    /**\n     * Draws the given graphical object onto the background pixel layer of this\n     * interactor, moving it to the given x/y location first.\n     */\n    virtual void draw(GObject& gobj, double x, double y);\n\n    /**\n     * Draws this interactor with the given Qt painter object.\n     * @private\n     */\n    virtual void draw(QPainter* painter) = 0;\n\n    /**\n     * Draws an unfilled arc with the given attributes onto the background pixel\n     * layer of this interactor in the current color.\n     * See gobjects.h for explanation of GArc parameters.\n     */\n    virtual void drawArc(double x, double y, double width, double height, double start, double sweep);\n\n    /**\n     * Draws an image loaded from the given file name onto the background pixel\n     * layer of this interactor at the given x/y location.\n     * See gobjects.h for explanation of GImage parameters.\n     * @throw ErrorException if the given file is not found or cannot be loaded\n     *        as a valid image file\n     */\n    virtual void drawImage(const std::string& filename, double x = 0, double y = 0);\n\n    /**\n     * Draws a line between the given two points onto the background pixel\n     * layer of this interactor at the given x/y location in the current color.\n     * See gobjects.h for explanation of GLine parameters.\n     */\n    virtual void drawLine(const GPoint& p0, const GPoint& p1);\n\n    /**\n     * Draws a line between the given two points onto the background pixel\n     * layer of this interactor at the given x/y location in the current color.\n     * See gobjects.h for explanation of GLine parameters.\n     */\n    virtual void drawLine(double x0, double y0, double x1, double y1);\n\n    /**\n     * Draws an unfilled oval with the given bounding box onto the background pixel\n     * layer of this interactor at the given x/y location in the current color.\n     * See gobjects.h for explanation of GOval parameters.\n     */\n    virtual void drawOval(const GRectangle& bounds);\n\n    /**\n     * Draws an unfilled oval with the given bounding box onto the background pixel\n     * layer of this interactor at the given x/y location in the current color.\n     * See gobjects.h for explanation of GOval parameters.\n     */\n    virtual void drawOval(double x, double y, double width, double height);\n\n    /**\n     * Draws a line using polar coordinates onto the background pixel\n     * layer of this interactor in the current color.\n     * The line begins at the given x/y point and extends from there by the\n     * given angle and radius.\n     * Returns the end point opposite p0 where the line ends.\n     * See gobjects.h for explanation of GLine parameters.\n     */\n    virtual GPoint drawPolarLine(const GPoint& p0, double r, double theta);\n\n    /**\n     * Draws a line using polar coordinates onto the background pixel\n     * layer of this interactor in the current color.\n     * The line begins at the given x/y point and extends from there by the\n     * given angle and radius.\n     * Returns the end point where the line ends.\n     * See gobjects.h for explanation of GLine parameters.\n     */\n    virtual GPoint drawPolarLine(double x0, double y0, double r, double theta);\n\n    /**\n     * Colors the given x/y pixel of the background layer of this interactor\n     * using the interactor's current color.\n     */\n    virtual void drawPixel(double x, double y);\n\n    /**\n     * Colors the given x/y pixel of the background layer of this interactor\n     * using the given color.\n     */\n    virtual void drawPixel(double x, double y, int color);\n\n    /**\n     * Colors the given x/y pixel of the background layer of this interactor\n     * using the given color.\n     */\n    virtual void drawPixel(double x, double y, const std::string& color);\n\n    /**\n     * Draws an unfilled polygon containing the given points onto the background\n     * pixel layer of this interactor in the current color.\n     * See gobjects.h for explanation of GPolygon parameters.\n     */\n    virtual void drawPolygon(std::initializer_list<double> coords);\n\n    /**\n     * Draws an unfilled polygon containing the given points onto the background\n     * pixel layer of this interactor in the current color.\n     * See gobjects.h for explanation of GPolygon parameters.\n     */\n    virtual void drawPolygon(std::initializer_list<GPoint> points);\n\n    /**\n     * Draws an unfilled rectangle of the given dimensions onto the background\n     * pixel layer of this interactor in the current color.\n     * See gobjects.h for explanation of GRect parameters.\n     */\n    virtual void drawRect(const GRectangle& bounds);\n\n    /**\n     * Draws an unfilled rectangle of the given dimensions onto the background\n     * pixel layer of this interactor in the current color.\n     * See gobjects.h for explanation of GRect parameters.\n     */\n    virtual void drawRect(double x, double y, double width, double height);\n\n    /**\n     * Draws a text string onto the background pixel layer of this interactor\n     * at the given x/y location in the current font and color.\n     * See gobjects.h for explanation of GText parameters.\n     */\n    virtual void drawString(const std::string& text, double x, double y);\n\n    /**\n     * Draws a filled arc with the given attributes onto the background pixel\n     * layer of this interactor in the current color and fill color.\n     * See gobjects.h for explanation of GArc parameters.\n     */\n    virtual void fillArc(double x, double y, double width, double height, double start, double sweep);\n\n    /**\n     * Draws a filled oval with the given bounding box onto the background pixel\n     * layer of this interactor at the given x/y location in the current color\n     * and fill color.\n     * See gobjects.h for explanation of GOval parameters.\n     */\n    virtual void fillOval(const GRectangle& bounds);\n\n    /**\n     * Draws a filled oval with the given bounding box onto the background pixel\n     * layer of this interactor at the given x/y location in the current color\n     * and fill color.\n     * See gobjects.h for explanation of GOval parameters.\n     */\n    virtual void fillOval(double x, double y, double width, double height);\n\n    /**\n     * Draws a filled polygon containing the given points onto the background\n     * pixel layer of this interactor in the current color and fill color.\n     * See gobjects.h for explanation of GPolygon parameters.\n     */\n    virtual void fillPolygon(std::initializer_list<double> coords);\n\n    /**\n     * Draws a filled polygon containing the given points onto the background\n     * pixel layer of this interactor in the current color and fill color.\n     * See gobjects.h for explanation of GPolygon parameters.\n     */\n    virtual void fillPolygon(std::initializer_list<GPoint> coords);\n\n    /**\n     * Draws a filled rectangle of the given dimensions onto the background\n     * pixel layer of this interactor in the current color and fill color.\n     * See gobjects.h for explanation of GRect parameters.\n     */\n    virtual void fillRect(const GRectangle& bounds);\n\n    /**\n     * Draws a filled rectangle of the given dimensions onto the background\n     * pixel layer of this interactor in the current color and fill color.\n     * See gobjects.h for explanation of GRect parameters.\n     */\n    virtual void fillRect(double x, double y, double width, double height);\n\n    /**\n     * Returns the pixel color data at the given x/y location,\n     * retaining alpha-channel transparency in the top 8 bits.\n     */\n    virtual int getARGB(double x, double y) const;\n\n    /**\n     * Returns the current background color of the interactor as a string.\n     * See gcolor.h for more detail about color strings.\n     */\n    virtual std::string getBackground() const;\n\n    /**\n     * Returns the current background color of the interactor as an RGB integer.\n     * See gcolor.h for more detail about colors.\n     */\n    virtual int getBackgroundInt() const;\n\n    /**\n     * Returns the current foreground outline color of the interactor as a string.\n     * This color will be used to draw the outlines of shapes drawn using the\n     * drawXxx and fillXxx methods, as well as being the default color used when\n     * calling setPixel or setRGB.\n     * See gcolor.h for more detail about color strings.\n     * Equivalent to getForeground.\n     */\n    virtual std::string getColor() const;\n\n    /**\n     * Returns the current foreground outline color of the interactor as an RGB integer.\n     * This color will be used to draw the outlines of shapes drawn using the\n     * drawXxx and fillXxx methods, as well as being the default color used when\n     * calling setPixel or setRGB.\n     * See gcolor.h for more detail about colors.\n     * Equivalent to getForegroundInt.\n     */\n    virtual int getColorInt() const;\n\n    /**\n     * Returns the current fill color of the interactor as a string.\n     * This color will appear in shapes drawn using the fillXxx methods.\n     * See gcolor.h for more detail about color strings.\n     */\n    virtual std::string getFillColor() const;\n\n    /**\n     * Returns the current fill color of the interactor as an RGB integer.\n     * This color will appear in shapes drawn using the fillXxx methods.\n     * See gcolor.h for more detail about color strings.\n     */\n    virtual int getFillColorInt() const;\n\n    /**\n     * Returns the current text font of the interactor as a font string.\n     * This font will be used when drawing text strings using drawString.\n     * See gfont.h for more detail about font strings.\n     */\n    virtual std::string getFont() const;\n\n    /**\n     * Returns the current foreground outline color of the interactor as a string.\n     * This color will be used to draw the outlines of shapes drawn using the\n     * drawXxx and fillXxx methods, as well as being the default color used when\n     * calling setPixel or setRGB.\n     * See gcolor.h for more detail about color strings.\n     * Equivalent to getColor.\n     */\n    virtual std::string getForeground() const;\n\n    /**\n     * Returns the current foreground outline color of the interactor as an RGB integer.\n     * This color will be used to draw the outlines of shapes drawn using the\n     * drawXxx and fillXxx methods, as well as being the default color used when\n     * calling setPixel or setRGB.\n     * See gcolor.h for more detail about colors.\n     * Equivalent to getColor.\n     */\n    virtual int getForegroundInt() const;\n\n    /**\n     * Returns the current line style which will be used to draw outlines of\n     * shapes and lines.\n     * The default line style is a solid line (GObject::LINE_SOLID).\n     */\n    virtual GObject::LineStyle getLineStyle() const;\n\n    /**\n     * Returns the thickness used when drawing outlines of shapes and lines.\n     * The default thickness is 1.\n     */\n    virtual double getLineWidth() const;\n\n    /**\n     * Returns the color of the pixel at the given x/y coordinates of the\n     * background layer of the interactor as an integer such as 0xff00cc.\n     *\n     * Note that if you are planning to set many pixels in the background and\n     * want maximum performance, you should instead call getPixels to extract\n     * all pixels into a Grid, then manipulate all desired pixels in that Grid,\n     * then call setPixels to submit all of your changes.\n     *\n     * Equivalent to getRGB.\n     *\n     * @throw ErrorException if the given x/y values are out of bounds.\n     */\n    virtual int getPixel(double x, double y) const = 0;\n\n    /**\n     * Returns the color of the pixel at the given x/y coordinates of the\n     * background layer of the interactor as an integer such as 0xffff00cc.\n     * This differs from getPixel in that it explicitly retains and returns\n     * the alpha channel of the pixel in the top 8 bits, allowing for\n     * transparency effects.\n     *\n     * Note that if you are planning to set many pixels in the background and\n     * want maximum performance, you should instead call getPixels to extract\n     * all pixels into a Grid, then manipulate all desired pixels in that Grid,\n     * then call setPixels to submit all of your changes.\n     *\n     * @throw ErrorException if the given x/y values are out of bounds.\n     */\n    virtual int getPixelARGB(double x, double y) const = 0;\n\n    /**\n     * Returns all pixels of the surface as a Grid,\n     * where rows represent y values and columns represent x values.\n     */\n    virtual Grid<int> getPixels() const = 0;\n\n    /**\n     * Returns all pixels of the background layer of the surface as a Grid,\n     * where rows represent y values and columns represent x values.\n     * This differs from getPixels in that it explicitly retains and returns\n     * the alpha channel of each pixel in the top 8 bits, allowing for\n     * transparency effects.\n     */\n    virtual Grid<int> getPixelsARGB() const = 0;\n\n    /**\n     * Returns the color of the pixel at the given x/y coordinates of the image\n     * as a string such as \"#ff00cc\".\n     * The string that is returned comes from the <code>GWindow</code> function\n     * <code>convertRGBToColor</code>; see documentation of that function.\n     * Throws an error if the given x/y values are out of bounds.\n     */\n    virtual std::string getPixelString(double x, double y) const;\n\n    /**\n     * Returns the color of the pixel at the given x/y coordinates of the\n     * background layer of the interactor as an integer such as 0xff00cc.\n     *\n     * Note that if you are planning to set many pixels in the background and\n     * want maximum performance, you should instead call getPixels to extract\n     * all pixels into a Grid, then manipulate all desired pixels in that Grid,\n     * then call setPixels to submit all of your changes.\n     *\n     * Equivalent to getPixel.\n     *\n     * @throw ErrorException if the given x/y values are out of bounds.\n     */\n    virtual int getRGB(double x, double y) const;\n\n    /**\n     * Returns the color of the pixel at the given x/y coordinates of the\n     * background layer of the interactor as a color string such as \"#ff00cc\".\n     *\n     * Note that if you are planning to set many pixels in the background and\n     * want maximum performance, you should instead call getPixels to extract\n     * all pixels into a Grid, then manipulate all desired pixels in that Grid,\n     * then call setPixels to submit all of your changes.\n     *\n     * @throw ErrorException if the given x/y values are out of bounds.\n     */\n    virtual std::string getRGBString(double x, double y) const;\n\n    /**\n     * Returns true if the interactor should repaint itself automatically whenever\n     * any change is made to its graphical data.\n     * But if you call setAutoRepaint(false), you must manually repaint the interactor\n     * to see any changes. This can be desirable if you plan to make a large batch\n     * of changes and want to repaint only after all of them are done.\n     * Equivalent to isRepaintImmediately.\n     */\n    virtual bool isAutoRepaint() const;\n\n    /**\n     * Returns true if the interactor should repaint itself automatically whenever\n     * any change is made to its graphical data.\n     * But if you call setAutoRepaint(false), you must manually repaint the interactor\n     * to see any changes. This can be desirable if you plan to make a large batch\n     * of changes and want to repaint only after all of them are done.\n     * Equivalent to isAutoRepaint.\n     */\n    virtual bool isRepaintImmediately() const;\n\n    /**\n     * Instructs the interactor to redraw itself on the screen.\n     * By default the interactor will automatically repaint itself whenever you\n     * make any change to its graphical data.\n     * But if you call setAutoRepaint(false), you must manually repaint the interactor\n     * to see any changes. This can be desirable if you plan to make a large batch\n     * of changes and want to repaint only after all of them are done.\n     */\n    virtual void repaint() = 0;\n\n    /**\n     * Instructs the interactor to repaint the given region of pixel data.\n     * This can be preferable to repaint() for performance purposes if you have\n     * made a small change that affects only the given rectangular region of\n     * the interactor.\n     */\n    virtual void repaintRegion(int x, int y, int width, int height) = 0;\n\n    /**\n     * Instructs the interactor to repaint the given region of pixel data.\n     * This can be preferable to repaint() for performance purposes if you have\n     * made a small change that affects only the given rectangular region of\n     * the interactor.\n     */\n    virtual void repaintRegion(const GRectangle& bounds);\n\n    /**\n     * Sets whether the interactor should repaint itself automatically whenever\n     * any change is made to its graphical data.\n     * By default this is true.\n     * But if you call setAutoRepaint(false), you must manually repaint the interactor\n     * to see any changes. This can be desirable if you plan to make a large batch\n     * of changes and want to repaint only after all of them are done.\n     * Equivalent to setRepaintImmediately.\n     */\n    virtual void setAutoRepaint(bool autoRepaint);\n\n    /**\n     * Sets the current background color of the interactor as an RGB integer.\n     * See gcolor.h for more detail about colors.\n     */\n    virtual void setBackground(int color);\n\n    /**\n     * Sets the current background color of the interactor as a string.\n     * See gcolor.h for more detail about color strings.\n     */\n    virtual void setBackground(const std::string& color);\n\n    /**\n     * Sets the current foreground outline color of the interactor as as RGB integer.\n     * This color will be used to draw the outlines of shapes drawn using the\n     * drawXxx and fillXxx methods, as well as being the default color used when\n     * calling setPixel or setRGB.\n     * See gcolor.h for more detail about color strings.\n     * Equivalent to setForeground.\n     */\n    virtual void setColor(int color);\n\n    /**\n     * Sets the current foreground outline color of the interactor as a string.\n     * This color will be used to draw the outlines of shapes drawn using the\n     * drawXxx and fillXxx methods, as well as being the default color used when\n     * calling setPixel or setRGB.\n     * See gcolor.h for more detail about color strings.\n     * Equivalent to setForeground.\n     */\n    virtual void setColor(const std::string& color);\n\n    /**\n     * Sets the current fill color of the interactor as an RGB integer.\n     * This color will appear in shapes drawn using the fillXxx methods.\n     * See gcolor.h for more detail about color strings.\n     */\n    virtual void setFillColor(int color);\n\n    /**\n     * Returns the current fill color of the interactor as a string.\n     * This color will appear in shapes drawn using the fillXxx methods.\n     * See gcolor.h for more detail about color strings.\n     */\n    virtual void setFillColor(const std::string& color);\n\n    /**\n     * Returns the current text font of the interactor using a Qt font object.\n     * This font will be used when drawing text strings using drawString.\n     * @private\n     */\n    virtual void setFont(const QFont& font);\n\n    /**\n     * Sets the current text font of the interactor as a font string.\n     * This font will be used when drawing text strings using drawString.\n     * See gfont.h for more detail about font strings.\n     */\n    virtual void setFont(const std::string& font);\n\n    /**\n     * Sets the current foreground outline color of the interactor as an RGB integer.\n     * This color will be used to draw the outlines of shapes drawn using the\n     * drawXxx and fillXxx methods, as well as being the default color used when\n     * calling setPixel or setRGB.\n     * See gcolor.h for more detail about color strings.\n     * Equivalent to setColor.\n     */\n    virtual void setForeground(int color);\n\n    /**\n     * Sets the current foreground outline color of the interactor as a string.\n     * This color will be used to draw the outlines of shapes drawn using the\n     * drawXxx and fillXxx methods, as well as being the default color used when\n     * calling setPixel or setRGB.\n     * See gcolor.h for more detail about color strings.\n     * Equivalent to setColor.\n     */\n    virtual void setForeground(const std::string& color);\n\n    /**\n     * Sets the thickness used when drawing outlines of shapes and lines.\n     * The default thickness is 1.\n     */\n    virtual void setLineWidth(double lineWidth);\n\n    /**\n     * Sets the current line style which will be used to draw outlines of\n     * shapes and lines.\n     * The default line style is a solid line (GObject::LINE_SOLID).\n     */\n    virtual void setLineStyle(GObject::LineStyle lineStyle);\n\n    /**\n     * Sets the color of the given x/y pixel in the background layer of the\n     * interactor to the given RGB values.\n     *\n     * Note that if you are planning to set many pixels in the background and\n     * want maximum performance, you should instead call getPixels to extract\n     * all pixels into a Grid, then manipulate all desired pixels in that Grid,\n     * then call setPixels to submit all of your changes.\n     * Equivalent to setRGB.\n     *\n     * @throw ErrorException if x/y is out of range or rgb is an invalid color\n     */\n    virtual void setPixel(double x, double y, int rgb) = 0;\n\n    /**\n     * Sets the color of the given x/y pixel in the background layer of the\n     * interactor to the given RGB values.\n     *\n     * Note that if you are planning to set many pixels in the background and\n     * want maximum performance, you should instead call getPixels to extract\n     * all pixels into a Grid, then manipulate all desired pixels in that Grid,\n     * then call setPixels to submit all of your changes.\n     * Equivalent to setRGB.\n     *\n     * @throw ErrorException if x/y is out of range or r,g,b are not between 0-255\n     */\n    virtual void setPixel(double x, double y, int r, int g, int b);\n\n    /**\n     * Sets the color of the given x/y pixel in the background layer of the\n     * interactor to the given color.\n     *\n     * Note that if you are planning to set many pixels in the background and\n     * want maximum performance, you should instead call getPixels to extract\n     * all pixels into a Grid, then manipulate all desired pixels in that Grid,\n     * then call setPixels to submit all of your changes.\n     * Equivalent to setRGB.\n     *\n     * @throw ErrorException if x/y is out of range\n     */\n    virtual void setPixel(double x, double y, const std::string& color);\n\n    /**\n     * Sets the color of the given x/y pixel in the background layer of the\n     * interactor to the given ARGB value.\n     *\n     * Note that if you are planning to set many pixels in the background and\n     * want maximum performance, you should instead call getPixelsARGB to extract\n     * all pixels into a Grid, then manipulate all desired pixels in that Grid,\n     * then call setPixelsARGB to submit all of your changes.\n     *\n     * @throw ErrorException if x/y is out of range or argb is an invalid color\n     */\n    virtual void setPixelARGB(double x, double y, int argb) = 0;\n\n    /**\n     * Sets the color of the given x/y pixel in the background layer of the\n     * interactor to the given ARGB value.\n     *\n     * Note that if you are planning to set many pixels in the background and\n     * want maximum performance, you should instead call getPixelsARGB to extract\n     * all pixels into a Grid, then manipulate all desired pixels in that Grid,\n     * then call setPixelsARGB to submit all of your changes.\n     *\n     * @throw ErrorException if x/y is out of range or a,r,g,b are not between 0-255\n     */\n    virtual void setPixelARGB(double x, double y, int a, int r, int g, int b);\n\n    /**\n     * Sets the color of the all pixels in the background layer of the\n     * interactor to the given RGB values, using rows as y-values and columns as\n     * x-values.  Any existing background layer pixels will be replaced.\n     * If the given grid is not the same size as this interactor, the interactor\n     * will be resized to match the grid.\n     */\n    virtual void setPixels(const Grid<int>& pixels) = 0;\n\n    /**\n     * Sets the color of the all pixels in the background layer of the\n     * interactor to the given ARGB values, using rows as y-values and columns as\n     * x-values.  Any existing background layer pixels will be replaced.\n     * If the given grid is not the same size as this interactor, the interactor\n     * will be resized to match the grid.\n     */\n    virtual void setPixelsARGB(const Grid<int>& pixelsARGB) = 0;\n\n    /**\n     * Sets whether the interactor should repaint itself automatically whenever\n     * any change is made to its graphical data.\n     * By default this is true.\n     * But if you call setAutoRepaint(false), you must manually repaint the interactor\n     * to see any changes. This can be desirable if you plan to make a large batch\n     * of changes and want to repaint only after all of them are done.\n     * Equivalent to setAutoRepaint.\n     */\n    virtual void setRepaintImmediately(bool autoRepaint);\n\n    /**\n     * Sets the color of the given x/y pixel in the background layer of the\n     * interactor to the given RGB values.\n     *\n     * Note that if you are planning to set many pixels in the background and\n     * want maximum performance, you should instead call getPixels to extract\n     * all pixels into a Grid, then manipulate all desired pixels in that Grid,\n     * then call setPixels to submit all of your changes.\n     * Equivalent to setPixel.\n     *\n     * @throw ErrorException if x/y is out of range or rgb is an invalid color\n     */\n    virtual void setRGB(double x, double y, int rgb);\n\n    /**\n     * Sets the color of the given x/y pixel in the background layer of the\n     * interactor to the given RGB values.\n     *\n     * Note that if you are planning to set many pixels in the background and\n     * want maximum performance, you should instead call getPixels to extract\n     * all pixels into a Grid, then manipulate all desired pixels in that Grid,\n     * then call setPixels to submit all of your changes.\n     * Equivalent to setPixel.\n     *\n     * @throw ErrorException if x/y is out of range or r,g,b are not between 0-255\n     */\n    virtual void setRGB(double x, double y, int r, int g, int b);\n\n    /**\n     * Sets the color of the given x/y pixel in the background layer of the\n     * interactor to the given color.\n     *\n     * Note that if you are planning to set many pixels in the background and\n     * want maximum performance, you should instead call getPixels to extract\n     * all pixels into a Grid, then manipulate all desired pixels in that Grid,\n     * then call setPixels to submit all of your changes.\n     * Equivalent to setPixel.\n     *\n     * @throw ErrorException if x/y is out of range\n     */\n    virtual void setRGB(double x, double y, const std::string& color);\n\nprotected:\n    GDrawingSurface();\n    virtual ~GDrawingSurface();\n\n    GDrawingSurface* _forwardTarget;\n    std::string _backgroundColor;\n    std::string _color;\n    std::string _fillColor;\n    std::string _font;\n    int _backgroundColorInt;\n    int _colorInt;\n    int _fillColorInt;\n    GObject::LineStyle _lineStyle;\n    double _lineWidth;\n    bool _autoRepaint;\n\n    /**\n     * Throws an error if the given x/y values are out of bounds.\n     */\n    void checkBounds(const std::string& member, double x, double y, double width, double height) const;\n\n    /**\n     * Throws an error if the given rgb value is not a valid color.\n     */\n    void checkColor(const std::string& member, int rgb) const;\n\n    /**\n     * Throws an error if the given width/height values are out of bounds.\n     */\n    void checkSize(const std::string& member, double width, double height) const;\n\n    /**\n     * Initializes a new graphical object to be drawn.\n     * Used as a convenience method to set the color, fill color, outline style,\n     * font, and other settings of graphical objects based on the settings of\n     * the drawing surface.\n     */\n    virtual void initializeGObject(GObject& obj, bool filled = false);\n\n    /**\n     * Initializes a new graphical object to be drawn.\n     * Used as a convenience method to set the color, fill color, outline style,\n     * font, and other settings of graphical objects based on the settings of\n     * the drawing surface.\n     */\n    virtual void initializeGObject(GObject* obj, bool filled = false);\n\n    /**\n     * Sets a forward target to which drawing calls should be sent.\n     * Used by GForwardDrawingSurface.\n     * @private\n     */\n    virtual void setDrawingForwardTarget(GDrawingSurface* forwardTarget);\n};\n\n/**\n * A drawing surface that just forwards any calls it receives to another\n * drawing surface.\n * In our library this class is primarily used so that a GWindow can pass on\n * drawing calls like drawRect and fillOval on to its internal GCanvas instance.\n * @private\n */\nclass GForwardDrawingSurface : public virtual GDrawingSurface {\npublic:\n    void clear() override;\n    void draw(GObject* gobj) override;\n    void draw(GObject* gobj, double x, double y) override;\n    void draw(GObject& gobj) override;\n    void draw(GObject& gobj, double x, double y) override;\n    void draw(QPainter* painter) override;\n    int getPixel(double x, double y) const override;\n    int getPixelARGB(double x, double y) const override;\n    Grid<int> getPixels() const override;\n    Grid<int> getPixelsARGB() const override;\n    bool isAutoRepaint() const override;\n    void repaint() override;\n    void repaintRegion(int x, int y, int width, int height) override;\n    void setAutoRepaint(bool autoRepaint) override;\n    void setBackground(int color) override;\n    void setBackground(const std::string& color) override;\n    void setColor(int color) override;\n    void setColor(const std::string& color) override;\n    void setFillColor(int color) override;\n    void setFillColor(const std::string& color) override;\n    void setFont(const QFont& font) override;\n    void setFont(const std::string& font) override;\n    void setLineWidth(double lineWidth) override;\n    void setPixel(double x, double y, int rgb) override;\n    void setPixel(double x, double y, int r, int g, int b) override;\n    void setPixelARGB(double x, double y, int argb) override;\n    void setPixelARGB(double x, double y, int a, int r, int g, int b) override;\n    void setPixels(const Grid<int>& pixels) override;\n    void setPixelsARGB(const Grid<int>& pixelsARGB) override;\n    void setRepaintImmediately(bool repaintImmediately) override;\n\nprotected:\n    virtual void ensureForwardTarget() = 0;\n    virtual void ensureForwardTargetConstHack() const;\n};\n\n#endif // _gcanvas_h\n"
  },
  {
    "path": "Library/graphics/gevent.cpp",
    "content": "/*\n * File: gevent.cpp\n * ----------------\n *\n * @author Marty Stepp\n * @version 2018/08/23\n * - renamed to gevent.cpp to replace Java version\n * @version 2018/07/06\n * - initial version\n */\n\n#include \"gevent.h\"\n#include <iostream>\n#include <sys/time.h>\n#include \"ginteractor.h\"\n#include \"strlib.h\"\n\nstatic void __emptyEventListener(GEvent) {\n    // empty\n}\n\nstatic void __logEventListener(GEvent event) {\n    std::cout << \"log event: \" << event << std::endl;\n}\n\nGEventListener GEvent::EMPTY_EVENT_LISTENER = __emptyEventListener;\nGEventListener GEvent::LOG_EVENT = __logEventListener;\n\n\nGEvent::GEvent(EventClass eventClass,\n                 EventType eventType,\n                 const std::string& eventName,\n                 GObservable* source)\n        :\n          _actionCommand(\"\"),\n          _class(eventClass),\n          _keyChar('\\0'),\n          _keyCode(0),\n          _modifiers(0),\n          _name(eventName),\n          _source(source),\n          _time(getCurrentTimeMS()),\n          _type(eventType),\n          _x(0),\n          _y(0),\n          _row(0),\n          _col(0),\n          _internalQtEvent(nullptr) {\n    // empty\n}\n\nGEvent::~GEvent() {\n    _source = nullptr;\n}\n\nstd::string GEvent::classToString(EventClass eventClass) {\n    switch (eventClass) {\n    case NULL_EVENT:      return \"NULL_EVENT\";\n    case ACTION_EVENT:    return \"ACTION_EVENT\";\n    case KEY_EVENT:       return \"KEY_EVENT\";\n    case TIMER_EVENT:     return \"TIMER_EVENT\";\n    case WINDOW_EVENT:    return \"WINDOW_EVENT\";\n    case MOUSE_EVENT:     return \"MOUSE_EVENT\";\n    case CLICK_EVENT:     return \"CLICK_EVENT\";\n    case TABLE_EVENT:     return \"TABLE_EVENT\";\n    case SERVER_EVENT:    return \"SERVER_EVENT\";\n    case CHANGE_EVENT:    return \"CHANGE_EVENT\";\n    case HYPERLINK_EVENT: return \"HYPERLINK_EVENT\";\n    case SCROLL_EVENT:    return \"SCROLL_EVENT\";\n    default:              return \"UNKNOWN\";\n    }\n}\n\nstd::string GEvent::typeToString(EventType eventType) {\n    switch (eventType) {\n    case NULL_TYPE:            return \"NULL_TYPE\";\n    case WINDOW_CLOSED:        return \"WINDOW_CLOSED\";\n    case WINDOW_RESIZED:       return \"WINDOW_RESIZED\";\n    case CONSOLE_CLOSED:       return \"CONSOLE_CLOSED\";\n    case WINDOW_CLOSING:       return \"WINDOW_CLOSING\";\n    case WINDOW_MINIMIZED:     return \"WINDOW_MINIMIZED\";\n    case WINDOW_RESTORED:      return \"WINDOW_RESTORED\";\n    case WINDOW_MAXIMIZED:     return \"WINDOW_MAXIMIZED\";\n    case ACTION_PERFORMED:     return \"ACTION_PERFORMED\";\n    case ACTION_MENU:          return \"ACTION_MENU\";\n    case MOUSE_CLICKED:        return \"MOUSE_CLICKED\";\n    case MOUSE_PRESSED:        return \"MOUSE_PRESSED\";\n    case MOUSE_RELEASED:       return \"MOUSE_RELEASED\";\n    case MOUSE_MOVED:          return \"MOUSE_MOVED\";\n    case MOUSE_DRAGGED:        return \"MOUSE_DRAGGED\";\n    case MOUSE_ENTERED:        return \"MOUSE_ENTERED\";\n    case MOUSE_EXITED:         return \"MOUSE_EXITED\";\n    case MOUSE_WHEEL_DOWN:     return \"MOUSE_WHEEL_DOWN\";\n    case MOUSE_WHEEL_UP:       return \"MOUSE_WHEEL_UP\";\n    case MOUSE_DOUBLE_CLICKED: return \"MOUSE_DOUBLE_CLICKED\";\n    case KEY_PRESSED:          return \"KEY_PRESSED\";\n    case KEY_RELEASED:         return \"KEY_RELEASED\";\n    case KEY_TYPED:            return \"KEY_TYPED\";\n    case TIMER_TICKED:         return \"TIMER_TICKED\";\n    case TABLE_UPDATED:        return \"TABLE_UPDATED\";\n    case TABLE_SELECTED:       return \"TABLE_SELECTED\";\n    case TABLE_EDIT_BEGIN:     return \"TABLE_EDIT_BEGIN\";\n    case TABLE_REPLACE_BEGIN:  return \"TABLE_REPLACE_BEGIN\";\n    case TABLE_EDIT_CANCEL:    return \"TABLE_EDIT_CANCEL\";\n    case TABLE_CUT:            return \"TABLE_CUT\";\n    case TABLE_COPY:           return \"TABLE_COPY\";\n    case TABLE_PASTE:          return \"TABLE_PASTE\";\n    case SERVER_REQUEST:       return \"SERVER_REQUEST\";\n    case STATE_CHANGED:        return \"STATE_CHANGED\";\n    case HYPERLINK_CLICKED:    return \"HYPERLINK_CLICKED\";\n    case SCROLL_SCROLLED:      return \"SCROLL_SCROLLED\";\n    default:                   return \"UNKNOWN\";\n    }\n}\n\n\nstd::string GEvent::getActionCommand() const {\n    return _actionCommand;\n}\n\nint GEvent::getButton() const {\n    return _button;\n}\n\nEventClass GEvent::getClass() const {\n    return _class;\n}\n\nint GEvent::getColumn() const {\n    return _col;\n}\n\nlong GEvent::getCurrentTimeMS() {\n    struct timeval tp;\n    gettimeofday(&tp, nullptr);\n    long int ms = tp.tv_sec * 1000 + tp.tv_usec / 1000;\n    return ms;\n}\n\nEventClass GEvent::getEventClass() const {\n    return _class;\n}\n\nEventType GEvent::getEventType() const {\n    return _type;\n}\n\nchar GEvent::getKeyChar() const {\n    return _keyChar;\n}\n\nint GEvent::getKeyCode() const {\n    return _keyCode;\n}\n\nint GEvent::getModifiers() const {\n    return _modifiers;\n}\n\nstd::string GEvent::getName() const {\n    return _name;\n}\n\nstd::string GEvent::getRequestURL() const {\n    return _requestUrl;\n}\n\nGInteractor* GEvent::getInteractor() const {\n    return static_cast<GInteractor*>(_source);\n}\n\nQEvent* GEvent::getInternalEvent() const {\n    return _internalQtEvent;\n}\n\nGPoint GEvent::getLocation() const {\n    return GPoint(getX(), getY());\n}\n\nint GEvent::getRow() const {\n    return _row;\n}\n\nGObservable* GEvent::getSource() const {\n    return _source;\n}\n\nlong GEvent::getTime() const {\n    return _time;\n}\n\nEventType GEvent::getType() const {\n    return _type;\n}\n\ndouble GEvent::getX() const {\n    return _x;\n}\n\ndouble GEvent::getY() const {\n    return _y;\n}\n\nvoid GEvent::ignore() {\n    if (_internalQtEvent) {\n        _internalQtEvent->ignore();\n    }\n}\n\nbool GEvent::isAltKeyDown() const {\n    return (_modifiers & ALT_DOWN) != 0;\n}\n\nbool GEvent::isCtrlKeyDown() const {\n    return (_modifiers & CTRL_DOWN) != 0;\n}\n\nbool GEvent::isCtrlOrCommandKeyDown() const {\n    return isCtrlKeyDown() || isMetaKeyDown();\n}\n\nbool GEvent::isDoubleClick() const {\n    return _type == MOUSE_DOUBLE_CLICKED || _name == \"doubleclick\";\n}\n\nbool GEvent::isLeftClick() const {\n    return !isMiddleClick() && !isRightClick();\n}\n\nbool GEvent::isMiddleClick() const {\n    return _button == 4 || ((_modifiers & BUTTON3_DOWN) != 0);\n}\n\nbool GEvent::isRightClick() const {\n    return _button == 2 || ((_modifiers & BUTTON2_DOWN) != 0);\n}\n\nbool GEvent::isMetaKeyDown() const {\n    return (_modifiers & META_DOWN) != 0;\n}\n\nbool GEvent::isShiftKeyDown() const {\n    return (_modifiers & SHIFT_DOWN) != 0;\n}\n\nstd::string GEvent::keyCodeToString(int keyCode) {\n    switch (keyCode) {\n    case ALT_KEY: return \"Alt\";\n    case BACKSPACE_KEY: return \"Bksp\";\n    case CAPS_LOCK_KEY: return \"CapsLock\";\n    case CLEAR_KEY: return \"Clear\";\n    case CTRL_KEY: return \"Ctrl\";\n    case DELETE_KEY: return \"Del\";\n    case DOWN_ARROW_KEY: return \"Down\";\n    case END_KEY: return \"End\";\n    case ENTER_KEY: return \"Enter\";\n    case ESCAPE_KEY: return \"Esc\";\n    case F10_KEY: return \"F10\";\n    case F11_KEY: return \"F11\";\n    case F12_KEY: return \"F12\";\n    case F1_KEY: return \"F1\";\n    case F2_KEY: return \"F2\";\n    case F3_KEY: return \"F3\";\n    case F4_KEY: return \"F4\";\n    case F5_KEY: return \"F5\";\n    case F6_KEY: return \"F6\";\n    case F7_KEY: return \"F7\";\n    case F8_KEY: return \"F8\";\n    case F9_KEY: return \"F9\";\n    case HELP_KEY: return \"Help\";\n    case HOME_KEY: return \"Home\";\n    case INSERT_KEY: return \"Ins\";\n    case LEFT_ARROW_KEY: return \"Left\";\n    case MENU_KEY: return \"Menu\";\n    case META_KEY: return \"Meta\";\n    case NUM_LOCK_KEY: return \"NumLock\";\n    case PAGE_DOWN_KEY: return \"PgDn\";\n    case PAGE_UP_KEY: return \"PgUp\";\n    case PAUSE_KEY: return \"Pause\";\n    case PRINT_SCREEN_KEY: return \"PrtSc\";\n    case RIGHT_ARROW_KEY: return \"Right\";\n    case SCROLL_LOCK_KEY: return \"ScrollLock\";\n    case SHIFT_KEY: return \"Shift\";\n    case TAB_KEY: return \"Tab\";\n    case UP_ARROW_KEY: return \"Up\";\n    case WINDOWS_KEY: return \"Win\";\n    case '\\r': return \"Enter\";\n    case '\\\\': return \"\\\\\";\n    default: return charToString((char) keyCode);\n    }\n}\n\nvoid GEvent::setActionCommand(const std::string& actionCommand) {\n    _actionCommand = actionCommand;\n}\n\nvoid GEvent::setButton(int button) {\n    _button = button;\n}\n\nvoid GEvent::setInternalEvent(QEvent* event) {\n    _internalQtEvent = event;\n}\n\nvoid GEvent::setKeyChar(char keyChar) {\n    if (keyChar == '\\r') {\n        keyChar = '\\n';\n    }\n    _keyChar = keyChar;\n}\n\nvoid GEvent::setKeyChar(const std::string& keyCharString) {\n    if (!keyCharString.empty()) {\n        setKeyChar(keyCharString[0]);\n    }\n}\n\nvoid GEvent::setKeyCode(int keyCode) {\n    if (keyCode == (int) '\\r') {\n        keyCode = (int) '\\n';\n    }\n    _keyCode = keyCode;\n    if (keyCode > 0 && keyCode < 255) {\n        _keyChar = (char) keyCode;\n    } else {\n        switch (keyCode) {\n        case Qt::Key_Alt:\n        case Qt::Key_AltGr:\n            _keyChar = _keyCode = ALT_KEY;\n            break;\n        case Qt::Key_Backspace:\n            _keyChar = _keyCode = BACKSPACE_KEY;\n            break;\n        case Qt::Key_CapsLock:\n            _keyChar = _keyCode = CAPS_LOCK_KEY;\n            break;\n        case Qt::Key_Control:\n            _keyChar = _keyCode = CTRL_KEY;\n            break;\n        case Qt::Key_Delete:\n            _keyChar = _keyCode = DELETE_KEY;\n            break;\n        case Qt::Key_Down:\n            _keyChar = _keyCode = DOWN_ARROW_KEY;\n            break;\n        case Qt::Key_End:\n            _keyChar = _keyCode = END_KEY;\n            break;\n        case Qt::Key_Enter:\n            _keyChar = _keyCode = ENTER_KEY;\n            break;\n        case Qt::Key_Escape:\n            _keyChar = _keyCode = ESCAPE_KEY;\n            break;\n        case Qt::Key_F1:\n            _keyChar = _keyCode = F1_KEY;\n            break;\n        case Qt::Key_F2:\n            _keyChar = _keyCode = F2_KEY;\n            break;\n        case Qt::Key_F3:\n            _keyChar = _keyCode = F3_KEY;\n            break;\n        case Qt::Key_F4:\n            _keyChar = _keyCode = F4_KEY;\n            break;\n        case Qt::Key_F5:\n            _keyChar = _keyCode = F5_KEY;\n            break;\n        case Qt::Key_F6:\n            _keyChar = _keyCode = F6_KEY;\n            break;\n        case Qt::Key_F7:\n            _keyChar = _keyCode = F7_KEY;\n            break;\n        case Qt::Key_F8:\n            _keyChar = _keyCode = F8_KEY;\n            break;\n        case Qt::Key_F9:\n            _keyChar = _keyCode = F9_KEY;\n            break;\n        case Qt::Key_F10:\n            _keyChar = _keyCode = F10_KEY;\n            break;\n        case Qt::Key_F11:\n            _keyChar = _keyCode = F11_KEY;\n            break;\n        case Qt::Key_F12:\n            _keyChar = _keyCode = F12_KEY;\n            break;\n        case Qt::Key_Home:\n            _keyChar = _keyCode = HOME_KEY;\n            break;\n        case Qt::Key_Insert:\n            _keyChar = _keyCode = INSERT_KEY;\n            break;\n        case Qt::Key_Left:\n            _keyChar = _keyCode = LEFT_ARROW_KEY;\n            break;\n        case Qt::Key_Menu:\n            _keyChar = _keyCode = MENU_KEY;\n            break;\n        case Qt::Key_Meta:\n            _keyChar = _keyCode = META_KEY;\n            break;\n        case Qt::Key_NumLock:\n            _keyChar = _keyCode = NUM_LOCK_KEY;\n            break;\n        case Qt::Key_PageDown:\n            _keyChar = _keyCode = PAGE_DOWN_KEY;\n            break;\n        case Qt::Key_PageUp:\n            _keyChar = _keyCode = PAGE_UP_KEY;\n            break;\n        case Qt::Key_Pause:\n            _keyChar = _keyCode = PAUSE_KEY;\n            break;\n        case Qt::Key_Print:\n            _keyChar = _keyCode = PRINT_SCREEN_KEY;\n            break;\n        case Qt::Key_Return:\n            _keyChar = _keyCode = ENTER_KEY;\n            break;\n        case Qt::Key_Right:\n            _keyChar = _keyCode = RIGHT_ARROW_KEY;\n            break;\n        case Qt::Key_ScrollLock:\n            _keyChar = _keyCode = SCROLL_LOCK_KEY;\n            break;\n        case Qt::Key_Shift:\n            _keyChar = _keyCode = SHIFT_KEY;\n            break;\n        case Qt::Key_Super_L:\n        case Qt::Key_Super_R:\n            _keyChar = _keyCode = WINDOWS_KEY;\n            break;\n        case Qt::Key_Tab:\n            _keyChar = _keyCode = TAB_KEY;\n            break;\n        case Qt::Key_Up:\n            _keyChar = _keyCode = UP_ARROW_KEY;\n            break;\n        }\n    }\n}\n\nvoid GEvent::setModifiers(Qt::KeyboardModifiers modifiers) {\n    _modifiers = 0;\n    if (modifiers & Qt::AltModifier) {\n        _modifiers |= ALT_DOWN;\n    }\n    if (modifiers & Qt::ControlModifier) {\n        _modifiers |= CTRL_DOWN;\n    }\n    if (modifiers & Qt::MetaModifier) {\n        _modifiers |= META_DOWN;\n    }\n    if (modifiers & Qt::ShiftModifier) {\n        _modifiers |= SHIFT_DOWN;\n    }\n}\n\nvoid GEvent::setRequestURL(const std::string& requestUrl) {\n    _requestUrl = requestUrl;\n}\n\nvoid GEvent::setRowAndColumn(int row, int col) {\n    _row = row;\n    _col = col;\n}\n\nvoid GEvent::setSource(GObservable* source) {\n    _source = source;\n}\n\nvoid GEvent::setX(double x) {\n    _x = x;\n}\n\nvoid GEvent::setY(double y) {\n    _y = y;\n}\n\nstd::string GEvent::toString() const {\n    std::ostringstream out;\n    out << *this;\n    return out.str();\n}\n\nstd::ostream& operator <<(std::ostream& out, const GEvent& event) {\n    out << \"GEvent(\";\n    out << \"class=\" << GEvent::classToString(event.getClass());\n    out << \",type=\" << GEvent::typeToString(event.getType());\n    out << \",name=\" << event.getName();\n    out << \",time=\" << event.getTime();\n    if (event.getSource()) {\n        out << \",source=\" << event.getSource()->toString();\n    }\n    if (!event.getActionCommand().empty()) {\n        out << \",actionCommand=\\\"\" << event.getActionCommand() << \"\\\"\";\n    }\n    if (event.getEventClass() == KEY_EVENT) {\n        out << \",key=\" << event.getKeyCode()\n            << \"(\" << GEvent::keyCodeToString(event.getKeyCode()) << \")\";\n    } else if (event.getEventClass() == MOUSE_EVENT) {\n        out << \",x=\" << event.getX() << \",y=\" << event.getY() << \",button=\" << event.getButton();\n    } else if (event.getEventClass() == TABLE_EVENT) {\n        out << \",row=\" << event.getRow() << \",col=\" << event.getColumn();\n    }\n    out << \")\";\n    return out;\n}\n"
  },
  {
    "path": "Library/graphics/gevent.h",
    "content": "/*\n * File: gevent.h\n * --------------\n *\n * @author Marty Stepp\n * @version 2018/09/20\n * - removed deprecation warning on waitForEvent/Click global functions (for now)\n * @version 2018/09/07\n * - added doc comments for new documentation generation\n * @version 2018/08/23\n * - renamed to gevent.h to replace Java version\n * @version 2018/07/06\n * - initial version\n */\n\n\n#ifndef _gevent_h\n#define _gevent_h\n\n#include <functional>\n#include <iostream>\n#include <string>\n\n#include \"gtypes.h\"\n\nclass QEvent;\nclass GEvent;\nclass GInteractor;\nclass GObservable;\nclass _Internal_QCanvas;\nclass _Internal_QCheckBox;\nclass _Internal_QPushButton;\nclass _Internal_QWidget;\n\n/** Types for the event listener functions to be passed to various interactors. */\ntypedef std::function<void(GEvent)> GEventListener;\n\n/** Types for the event listener functions to be passed to various interactors. */\ntypedef std::function<void()>       GEventListenerVoid;\n\n/**\n * Represents all major categories of events.\n */\nenum EventClass {\n    NULL_EVENT      = 0x0000,\n    ACTION_EVENT    = 0x0010,\n    KEY_EVENT       = 0x0020,\n    TIMER_EVENT     = 0x0040,\n    WINDOW_EVENT    = 0x0080,\n    MOUSE_EVENT     = 0x0100,\n    CLICK_EVENT     = 0x0200,\n    TABLE_EVENT     = 0x0400,\n    SERVER_EVENT    = 0x0800,\n    CHANGE_EVENT    = 0x1000,\n    HYPERLINK_EVENT = 0x2000,\n    SCROLL_EVENT    = 0x4000,\n    ANY_EVENT       = ACTION_EVENT | KEY_EVENT | TIMER_EVENT | WINDOW_EVENT\n                    | MOUSE_EVENT | CLICK_EVENT | TABLE_EVENT | SERVER_EVENT\n                    | CHANGE_EVENT | HYPERLINK_EVENT | SCROLL_EVENT\n};\n// Note: If you add any new classes of events, you must also add logic to the\n// GEvent::classToString function in gevent.cpp.\n\n\n/**\n * Defines the event subtypes for all events.\n * An event type is a subcategory within an event class.\n */\nenum EventType {\n    NULL_TYPE            = 0,\n\n    WINDOW_CLOSED        = WINDOW_EVENT + 1,\n    WINDOW_RESIZED       = WINDOW_EVENT + 2,\n    CONSOLE_CLOSED       = WINDOW_EVENT + 3,\n    WINDOW_CLOSING       = WINDOW_EVENT + 4,\n    WINDOW_MINIMIZED     = WINDOW_EVENT + 5,\n    WINDOW_RESTORED      = WINDOW_EVENT + 6,\n    WINDOW_MAXIMIZED     = WINDOW_EVENT + 7,\n\n    ACTION_PERFORMED     = ACTION_EVENT + 1,\n    ACTION_MENU          = ACTION_EVENT + 2,\n\n    MOUSE_CLICKED        = MOUSE_EVENT + 1,\n    MOUSE_PRESSED        = MOUSE_EVENT + 2,\n    MOUSE_RELEASED       = MOUSE_EVENT + 3,\n    MOUSE_MOVED          = MOUSE_EVENT + 4,\n    MOUSE_DRAGGED        = MOUSE_EVENT + 5,\n    MOUSE_ENTERED        = MOUSE_EVENT + 6,\n    MOUSE_EXITED         = MOUSE_EVENT + 7,\n    MOUSE_WHEEL_DOWN     = MOUSE_EVENT + 8,\n    MOUSE_WHEEL_UP       = MOUSE_EVENT + 9,\n    MOUSE_DOUBLE_CLICKED = MOUSE_EVENT + 10,\n\n    KEY_PRESSED          = KEY_EVENT + 1,\n    KEY_RELEASED         = KEY_EVENT + 2,\n    KEY_TYPED            = KEY_EVENT + 3,\n\n    TIMER_TICKED         = TIMER_EVENT + 1,\n\n    TABLE_UPDATED        = TABLE_EVENT + 1,   // when a cell's value gets set\n    TABLE_SELECTED       = TABLE_EVENT + 2,   // cursor moves onto a cell\n    TABLE_EDIT_BEGIN     = TABLE_EVENT + 3,   // user presses F2 or double clicks to start editing a cell\n    TABLE_REPLACE_BEGIN  = TABLE_EVENT + 4,   // user starts typing on a cell; like TABLE_EDIT_BEGIN but wipes out previous value\n    TABLE_EDIT_CANCEL    = TABLE_EVENT + 5,   // user presses Esc or otherwise stops editing a cell\n    TABLE_CUT            = TABLE_EVENT + 6,   // user cuts cell value to clipboard\n    TABLE_COPY           = TABLE_EVENT + 7,   // user copies cell value to clipboard\n    TABLE_PASTE          = TABLE_EVENT + 8,   // user pastes cell value from clipboard\n\n    SERVER_REQUEST       = SERVER_EVENT + 1,\n\n    STATE_CHANGED        = CHANGE_EVENT + 1,\n\n    HYPERLINK_CLICKED    = HYPERLINK_EVENT + 1,\n\n    SCROLL_SCROLLED      = SCROLL_EVENT + 1\n};\n// Note: If you add any new classes of events, you must also add logic to the\n// GEvent::typeToString function in gevent.cpp.\n\n/**\n * A set of constants used to check whether various event modifiers are in effect.\n * These constants can be combined in a single modifier int using bitwise operators.\n */\nenum Modifier {\n    SHIFT_DOWN     = 1 << 0,\n    CTRL_DOWN      = 1 << 1,\n    META_DOWN      = 1 << 2,\n    ALT_DOWN       = 1 << 3,\n    ALT_GRAPH_DOWN = 1 << 4,\n    BUTTON1_DOWN   = 1 << 5,\n    BUTTON2_DOWN   = 1 << 6,\n    BUTTON3_DOWN   = 1 << 7\n};\n\n/**\n * A GEvent represents a user action that has occurred on a graphical interactor.\n *\n * Older versions of this library used an event-polling model where the client\n * was encouraged to write a while (true) loop and call waitForEvent(...) to\n * get each event and process it.\n * The current design instead prefers that you attach event listener functions\n * to be called when events occur.\n * These listener functions can accept an optional GEvent as a parameter.\n * The GEvent object will contain information about the event that occurred.\n *\n * Older versions of this library had an inheritance hierarchy for various\n * event types, such as GMouseEvent, GKeyEvent, etc.\n * The current design has a single type GEvent that is a union of all data\n * needed by any kind of event.\n * The previous subclass names such as GMouseEvent are retained for backward\n * compatibility, but they are now just aliases for the type GEvent.\n */\nclass GEvent {\npublic:\n    /**\n     * An empty event handler that can be passed that does nothing.\n     */\n    static GEventListener EMPTY_EVENT_LISTENER;\n\n    /**\n     * An event listener that just prints the event that occurred.\n     * This listener is useful for debugging.\n     */\n    static GEventListener LOG_EVENT;\n\n    /*\n     * Type: KeyCode\n     * -------------\n     * This type defines the names of the key codes returned in a key event.\n     */\n    enum KeyCode {\n        BACKSPACE_KEY = 8,\n        TAB_KEY = 9,\n        ENTER_KEY = 10,\n        CLEAR_KEY = 12,\n        RETURN_KEY = 13,\n        SHIFT_KEY = Qt::Key_Shift,\n        CTRL_KEY = Qt::Key_Control,\n        ALT_KEY = Qt::Key_Alt,\n        PAUSE_KEY = 19,\n        CAPS_LOCK_KEY = 20,\n        ESCAPE_KEY = 27,\n        PAGE_UP_KEY = Qt::Key_PageUp,\n        PAGE_DOWN_KEY = Qt::Key_PageDown,\n        END_KEY = Qt::Key_End,\n        HOME_KEY = Qt::Key_Home,\n        LEFT_ARROW_KEY = Qt::Key_Left,\n        UP_ARROW_KEY = Qt::Key_Up,\n        RIGHT_ARROW_KEY = Qt::Key_Right,\n        DOWN_ARROW_KEY = Qt::Key_Down,\n        F1_KEY = Qt::Key_F1,\n        F2_KEY = Qt::Key_F2,\n        F3_KEY = Qt::Key_F3,\n        F4_KEY = Qt::Key_F4,\n        F5_KEY = Qt::Key_F5,\n        F6_KEY = Qt::Key_F6,\n        F7_KEY = Qt::Key_F7,\n        F8_KEY = Qt::Key_F8,\n        F9_KEY = Qt::Key_F9,\n        F10_KEY = Qt::Key_F10,\n        F11_KEY = Qt::Key_F11,\n        F12_KEY = Qt::Key_F12,\n        DELETE_KEY = 127,\n        NUM_LOCK_KEY = Qt::Key_NumLock,\n        SCROLL_LOCK_KEY = Qt::Key_ScrollLock,\n        PRINT_SCREEN_KEY = Qt::Key_Print,\n        INSERT_KEY = Qt::Key_Insert,\n        HELP_KEY = Qt::Key_Help,\n        META_KEY = Qt::Key_Meta,\n        WINDOWS_KEY = Qt::Key_Super_L,\n        MENU_KEY = Qt::Key_Menu\n    };\n\n    /**\n     * Creates a new event of the given type.\n     */\n    GEvent(EventClass eventClass = NULL_EVENT,\n            EventType eventType = NULL_TYPE,\n            const std::string& eventName = \"\",\n            GObservable* source = nullptr);\n\n    /**\n     * Frees memory allocated internally by the event.\n     */\n    virtual ~GEvent();\n\n    /**\n     * Converts an event class such as ACTION_PERFORMED\n     * to a string such as \"ACTION_PERFORMED\".\n     * @private\n     */\n    static std::string classToString(EventClass eventClass);\n\n    /**\n     * Returns the action command associated with the event.\n     * For some interactors such as buttons, this will be the text of the\n     * interactor.\n     */\n    virtual std::string getActionCommand() const;\n\n    /**\n     * Returns which mouse button was clicked, if this is a mouse event.\n     * If this is not a mouse event, returns 0.\n     */\n    virtual int getButton() const;\n\n    /**\n     * Returns this event's class (major type such as MOUSE_EVENT).\n     * Equivalent to getEventClass.\n     */\n    virtual EventClass getClass() const;\n\n    /**\n     * Returns the column that was interacted with, if this is a table event.\n     * If this is not a table event, returns 0.\n     */\n    virtual int getColumn() const;\n\n    /**\n     * Returns the current time as a number of milliseconds elapsed since the\n     * epoch of 1970/01/01 12:00am.\n     * Used to supply timestamps to individual events.\n     * @private\n     */\n    static long getCurrentTimeMS();\n\n    /**\n     * Returns this event's class (major type such as MOUSE_EVENT).\n     * Equivalent to getClass.\n     */\n    virtual EventClass getEventClass() const;\n\n    /**\n     * Returns the event's type (minor type such as MOUSE_PRESSED).\n     * Equivalent to getType.\n     */\n    virtual EventType getEventType() const;\n\n    /**\n     * Returns the source interactor that generated this event.\n     */\n    virtual GInteractor* getInteractor() const;\n\n    /**\n     * Returns the Qt event being wrapped by this event, if any.\n     * If this event does not wrap a Qt event, returns nullptr.\n     */\n    virtual QEvent* getInternalEvent() const;\n\n    /**\n     * Returns the key character that was typed, if this is a key event.\n     * If this is not a key event, returns '\\0'.\n     */\n    virtual char getKeyChar() const;\n\n    /**\n     * Returns the integer key code that was typed, if this is a key event.\n     * See the KeyCode enumeration for helpful constants for comparing key values.\n     * If this is not a key event, returns 0.\n     */\n    virtual int getKeyCode() const;\n\n    /**\n     * Returns an (x, y) point representing the mouse position within the interactor\n     * when this event occurred.\n     * If this is not a mouse event, returns (0, 0).\n     */\n    virtual GPoint getLocation() const;\n\n    /**\n     * Returns the modifiers active during this event.\n     * See the Modifiers enumeration for more information.\n     */\n    virtual int getModifiers() const;\n\n    /**\n     * Returns this event's name such as \"click\" or \"keydown\" or \"actionperformed\".\n     */\n    virtual std::string getName() const;\n\n    /**\n     * Returns this event's request URL, if this is a server URL event.\n     * If this is not a server URL event, returns an empty string.\n     */\n    virtual std::string getRequestURL() const;\n\n    /**\n     * Returns the row that was interacted with, if this is a table event.\n     * If this is not a table event, returns 0.\n     */\n    virtual int getRow() const;\n\n    /**\n     * Returns the source object that generated this event.\n     */\n    virtual GObservable* getSource() const;\n\n    /**\n     * Returns this event's timestamp, as a number of milliseconds elapsed\n     * since the epoch of 1970/01/01 12:00am.\n     */\n    virtual long getTime() const;\n\n    /**\n     * Returns the event's type (major type such as MOUSE_EVENT).\n     * Equivalent to getEventType.\n     */\n    virtual EventType getType() const;\n\n    /**\n     * Returns the x-coordinate of the mouse position within the interactor\n     * when this event occurred.\n     * If this is not a mouse event, returns 0.\n     */\n    virtual double getX() const;\n\n    /**\n     * Returns the y-coordinate of the mouse position within the interactor\n     * when this event occurred.\n     * If this is not a mouse event, returns 0.\n     */\n    virtual double getY() const;\n\n    /**\n     * Instructs the GUI system to ignore or cancel this event.\n     * For example, if you listen to window-closing events and ignore them,\n     * the window will stay open.\n     */\n    virtual void ignore();\n\n    /**\n     * Returns <code>true</code> if the Alt key was held down during this event.\n     * If this is not a mouse or key event, returns false.\n     */\n    virtual bool isAltKeyDown() const;\n\n    /**\n     * Returns <code>true</code> if the Ctrl key was held down during this event.\n     * If this is not a mouse or key event, returns false.\n     */\n    virtual bool isCtrlKeyDown() const;\n\n    /**\n     * Returns <code>true</code> if the Ctrl key, or the Command key (Mac),\n     * was held down during this event.\n     * If this is not a mouse or key event, returns false.\n     */\n    virtual bool isCtrlOrCommandKeyDown() const;\n\n    /**\n     * Returns true if the user pressed the mouse button multiple times.\n     * If this is not a mouse event, returns false.\n     */\n    virtual bool isDoubleClick() const;\n\n    /**\n     * Returns true if the user pressed the left mouse button.\n     * If this is not a mouse event, returns false.\n     */\n    virtual bool isLeftClick() const;\n\n    /**\n     * Returns true if the user pressed the middle mouse button.\n     * (Note that not every mouse has a simple delineation of \"left, right,\n     * and middle\" buttons; this was implemented on a standard 3-button mouse\n     * with scroll wheel.)\n     * If this is not a mouse event, returns false.\n     */\n    virtual bool isMiddleClick() const;\n\n    /**\n     * Returns true if the user pressed the right mouse button.\n     * If this is not a mouse event, returns false.\n     */\n    virtual bool isRightClick() const;\n\n    /**\n     * Returns <code>true</code> if the Meta/Command key was held down during this event.\n     * If this is not a mouse or key event, returns false.\n     */\n    virtual bool isMetaKeyDown() const;\n\n    /**\n     * Returns <code>true</code> if the Shift key was held down during this event.\n     * If this is not a mouse or key event, returns false.\n     */\n    virtual bool isShiftKeyDown() const;\n\n    /**\n     * Converts a key code such as 67 into a string such as \"A\".\n     * Works for special keys such as \"Enter\" and \"Tab\".\n     */\n    static std::string keyCodeToString(int keyCode);\n\n    /**\n     * @private\n     */\n    virtual void setActionCommand(const std::string& actionCommand);\n\n    /**\n     * @private\n     */\n    virtual void setButton(int button);\n\n    /**\n     * @private\n     */\n    virtual void setInternalEvent(QEvent* event);\n\n    /**\n     * @private\n     */\n    virtual void setKeyChar(char keyChar);\n\n    /**\n     * @private\n     */\n    virtual void setKeyChar(const std::string& keyCharString);\n\n    /**\n     * @private\n     */\n    virtual void setKeyCode(int keyCode);\n\n    /**\n     * @private\n     */\n    virtual void setModifiers(Qt::KeyboardModifiers modifiers);\n\n    /**\n     * @private\n     */\n    virtual void setRequestURL(const std::string& requestUrl);\n\n    /**\n     * @private\n     */\n    virtual void setRowAndColumn(int row, int col);\n\n    /**\n     * @private\n     */\n    virtual void setSource(GObservable* source);\n\n    /**\n     * @private\n     */\n    virtual void setX(double x);\n\n    /**\n     * @private\n     */\n    virtual void setY(double y);\n\n    /**\n     * Returns a text representation of the event for debugging.\n     */\n    virtual std::string toString() const;\n\n    /**\n     * Converts an event type such as MOUSE_EVENT to a string such as\n     * \"MOUSE_EVENT\".\n     */\n    static std::string typeToString(EventType eventType);\n\nprivate:\n    /*\n     * Represents the two types of event listeners.\n     */\n    enum EventListenerType {\n        HANDLER_EVENT,\n        HANDLER_VOID\n    };\n\n    /*\n     * A wrapper that can hold either of the two types of event listeners.\n     */\n    struct EventListenerWrapper {\n        GEventListener handler;\n        GEventListenerVoid handlerVoid;\n        EventListenerType type;\n\n        void fireEvent(const GEvent& event) {\n            if (type == HANDLER_EVENT) {\n                handler(event);\n            } else {\n                handlerVoid();\n            }\n        }\n    };\n\n    // member variables\n    std::string _actionCommand;\n    int _button;\n    EventClass _class;\n    char _keyChar;\n    int _keyCode;\n    int _modifiers;\n    std::string _name;\n    std::string _requestUrl;\n    GObservable* _source;\n    long _time;\n    EventType _type;\n    double _x;\n    double _y;\n    int _row;\n    int _col;\n    QEvent* _internalQtEvent;\n\n    friend class GInteractor;\n    friend class GObservable;\n    friend class _Internal_QWidget;\n};\n\n/**\n * Writes the given event to the given output stream.\n */\nstd::ostream& operator <<(std::ostream& out, const GEvent& event);\n\n// alias GEvent to all event types\ntypedef GEvent GActionEvent;\ntypedef GEvent GChangeEvent;\ntypedef GEvent GHyperlinkEvent;\ntypedef GEvent GKeyEvent;\ntypedef GEvent GMouseEvent;\ntypedef GEvent GScrollEvent;\ntypedef GEvent GServerEvent;\ntypedef GEvent GTableEvent;\ntypedef GEvent GTimerEvent;\ntypedef GEvent GWindowEvent;\n\n// global functions for backward compatibility\n// see geventqueue.cpp for implementation\n\n/**\n * Checks to see if there are any events of the desired type waiting on the\n * event queue.  If so, this function returns the event in exactly the same\n * fashion as <code>waitForEvent</code>; if not, <code>getNextEvent</code>\n * returns an invalid event.  The <code>mask</code> parameter is optional.\n * If it is missing, <code>getNextEvent</code> accepts any event.\n *\n * @deprecated\n * This function is deprecated and discouraged from use.\n * Instead of calling waitForClick in an event loop, you should attach an\n * event-listening function to the widget of choice using that object's methods\n * such as setActionListener or setMouseListener.\n */\nGEvent getNextEvent(int mask = ANY_EVENT) /*Q_DECL_DEPRECATED*/;\n\n/**\n * Waits for a mouse click to occur anywhere in any window,\n * returning the event that occurred.\n *\n * @deprecated\n * This function is deprecated and discouraged from use.\n * Instead of calling waitForClick in an event loop, you should attach an\n * event-listening function to the widget of choice using that object's methods\n * such as setActionListener or setMouseListener.\n */\nGMouseEvent waitForClick() /*Q_DECL_DEPRECATED*/;\n\n/**\n * Dismisses the process until an event occurs whose type is covered by\n * the event mask.  The mask parameter is a combination of the events of\n * interest.  For example, to wait for a mouse event or an action event,\n * clients can use the following call:\n *\n *<pre>\n *    e = waitForEvent(MOUSE_EVENT + ACTION_EVENT);\n *</pre>\n *\n * The <code>mask</code> parameter is optional.  If it is missing,\n * <code>waitForEvent</code> accepts any event.\n *\n * <p>As a more sophisticated example, the following code is the canonical\n * event loop for an animated application that needs to respond to mouse,\n * key, and timer events:\n *\n *<pre>\n *    GTimer timer(ANIMATION_DELAY_IN_MILLISECONDS);\n *    timer.start();\n *    while (true) {\n *       GEvent e = waitForEvent(TIMER_EVENT + MOUSE_EVENT + KEY_EVENT);\n *       switch (e.getEventClass()) {\n *        case TIMER_EVENT:\n *          takeAnimationStep();\n *          break;\n *        case MOUSE_EVENT:\n *          handleMouseEvent(GMouseEvent(e));\n *          break;\n *        case KEY_EVENT:\n *          handleKeyEvent(GKeyEvent(e));\n *          break;\n *       }\n *    }\n *</pre>\n *\n * @deprecated\n * This function is deprecated and discouraged from use.\n * Instead of calling waitForClick in an event loop, you should attach an\n * event-listening function to the widget of choice using that object's methods\n * such as setActionListener or setMouseListener.\n */\nGEvent waitForEvent(int mask = ANY_EVENT) /*Q_DECL_DEPRECATED*/;\n\n#endif // _gevent_h\n"
  },
  {
    "path": "Library/graphics/geventqueue.cpp",
    "content": "/*\n * File: geventqueue.cpp\n * ---------------------\n *\n * @author Marty Stepp\n * @version 2019/01/08\n * - bug fix in waitForClick function (was never returning!)\n * @version 2018/08/23\n * - renamed to geventqueue.cpp\n * @version 2018/07/03\n * - initial version\n */\n\n#include <QEvent>\n#include \"geventqueue.h\"\n#include \"gtypes.h\"\n#include \"gthread.h\"\n\nGEventQueue* GEventQueue::_instance = nullptr;\n\nGEventQueue::GEventQueue()\n        : _eventMask(0) {\n    // empty\n}\n\nGThunk GEventQueue::dequeue() {\n    _functionQueueMutex.lockForWrite();\n    GThunk thunk = _functionQueue.dequeue();\n    _functionQueueMutex.unlock();\n    return thunk;\n}\n\nvoid GEventQueue::enqueueEvent(const GEvent& event) {\n    if (isAcceptingEvent(event.getEventClass())) {\n        _eventQueueMutex.lockForWrite();\n        _eventQueue.enqueue(event);\n        _eventQueueMutex.unlock();\n    }\n}\n\nint GEventQueue::getEventMask() const {\n    return _eventMask;\n}\n\nGEvent GEventQueue::getNextEvent(int mask) {\n    setEventMask(mask);\n\n    // check if any events have arrived\n    _eventQueueMutex.lockForRead();\n    bool empty = _eventQueue.isEmpty();\n    _eventQueueMutex.unlock();\n\n    if (!empty) {\n        // grab the event and return it\n        _eventQueueMutex.lockForWrite();\n        while (!_eventQueue.isEmpty()) {\n            GEvent event = _eventQueue.dequeue();\n            if (isAcceptingEvent(event)) {\n                _eventQueueMutex.unlock();\n                return event;\n            }\n        }\n        _eventQueueMutex.unlock();\n    }\n\n    GEvent bogusEvent;\n    return bogusEvent;\n}\n\nGEventQueue* GEventQueue::instance() {\n    if (!_instance) {\n        _instance = new GEventQueue();\n    }\n    return _instance;\n}\n\nbool GEventQueue::isAcceptingEvent(const GEvent& event) const {\n    return isAcceptingEvent(event.getEventClass());\n}\n\nbool GEventQueue::isAcceptingEvent(int eventClass) const {\n    return (_eventMask & eventClass) != 0;\n}\n\nbool GEventQueue::isEmpty() const {\n    return _functionQueue.isEmpty();\n}\n\nGThunk GEventQueue::peek() {\n    _functionQueueMutex.lockForRead();\n    GThunk thunk = _functionQueue.peek();\n    _functionQueueMutex.unlock();\n    return thunk;\n}\n\nvoid GEventQueue::runOnQtGuiThreadAsync(GThunk thunk) {\n    _functionQueueMutex.lockForWrite();\n    _functionQueue.enqueue(thunk);\n    _functionQueueMutex.unlock();\n    emit eventReady();\n}\n\nvoid GEventQueue::runOnQtGuiThreadSync(GThunk thunk) {\n    _functionQueueMutex.lockForWrite();\n    _functionQueue.enqueue(thunk);\n    _functionQueueMutex.unlock();\n    emit eventReady();\n\n    // TODO: \"empty\" is not quite right condition\n    while (true) {\n        _functionQueueMutex.lockForRead();\n        bool empty = _functionQueue.isEmpty();\n        _functionQueueMutex.unlock();\n        if (empty) {\n            break;\n        } else {\n            GThread::msleep(1);\n        }\n    }\n}\n\nvoid GEventQueue::setEventMask(int mask) {\n    _eventMask = mask;\n}\n\nGEvent GEventQueue::waitForEvent(int mask) {\n    setEventMask(mask);\n    while (true) {\n        // check if any events have arrived\n        _eventQueueMutex.lockForRead();\n        bool empty = _eventQueue.isEmpty();\n        _eventQueueMutex.unlock();\n\n        if (!empty) {\n            // grab the event and return it\n            _eventQueueMutex.lockForWrite();\n            while (!_eventQueue.isEmpty()) {\n                GEvent event = _eventQueue.dequeue();\n                if (isAcceptingEvent(event)) {\n                    _eventQueueMutex.unlock();\n                    return event;\n                }\n            }\n            _eventQueueMutex.unlock();\n        }\n\n        GThread::msleep(1);\n    }\n}\n\nGEvent getNextEvent(int mask) {\n    return GEventQueue::instance()->getNextEvent(mask);\n}\n\nGMouseEvent waitForClick() {\n    while (true) {\n        GMouseEvent event = GEventQueue::instance()->waitForEvent(MOUSE_EVENT);\n        if (event.getEventType() == MOUSE_CLICKED) {\n            return event;\n        }\n    }\n}\n\nGEvent waitForEvent(int mask) {\n    return GEventQueue::instance()->waitForEvent(mask);\n}\n\n\n"
  },
  {
    "path": "Library/graphics/geventqueue.h",
    "content": "/*\n * File: geventqueue.h\n * -------------------\n *\n * @author Marty Stepp\n * @version 2018/09/07\n * - added doc comments for new documentation generation\n * @version 2018/08/23\n * - renamed to geventqueue.h\n * @version 2018/07/03\n * - initial version\n */\n\n\n#ifndef _geventqueue_h\n#define _geventqueue_h\n\n#include <string>\n#include <QObject>\n#include <QReadWriteLock>\n\n#include \"gevent.h\"\n#include \"gtypes.h\"\n#include \"queue.h\"\n\nclass GObservable;\nclass GThread;\nclass QtGui;\n\n/**\n * The GEventQueue is a first-in, first-out (FIFO) queue of events that occur\n * on graphical interactors.\n *\n * This queue is used by our interactor classes (GButton, GCheckBox, etc.)\n * internally.  When events occur on these widgets, we place them into a GEventQueue\n * so that they can be sent out to the various event listeners in client code.\n *\n * Most clients do not need to use GEventQueue directly.\n *\n * @private\n */\nclass GEventQueue : public QObject {\n    Q_OBJECT\n\npublic:\n    /**\n     * Returns the single instance of the event queue.\n     * If no instance yet exists, one is created.\n     * @return\n     */\n    static GEventQueue* instance();\n\n    /**\n     * Returns the current event mask used by the semi-deprecated global\n     * event-handling functions like waitForEvent.\n     */\n    int getEventMask() const;\n\n    /**\n     * Returns the next event that occurs that matches the given mask\n     * of event types.\n     */\n    GEvent getNextEvent(int mask = ANY_EVENT);\n\n    /**\n     * Returns true if the given event would be accepted by the current\n     * event mask, as per setEventMask.\n     */\n    bool isAcceptingEvent(const GEvent& event) const;\n    bool isAcceptingEvent(int type) const;\n\n    /**\n     * Sets a bit-flagged mask of event types to listen for\n     * in the semi-deprecated global event-handling functions like waitForEvent.\n     * If setEventMask has not been called, all events are accepted.\n     */\n    void setEventMask(int mask);\n\n    /**\n     * Pauses the current thread until an event occurs that matches the given\n     * bit-flagged mask.  The event is then returned.\n     * The current event mask is also set to the given mask, as if\n     * setEventMask had been called.\n     */\n    GEvent waitForEvent(int mask = ANY_EVENT);\n\nsignals:\n    /**\n     * Fires when an event is present in the queue and ready to be processed.\n     */\n    void eventReady();\n\nprivate:\n    Q_DISABLE_COPY(GEventQueue)\n\n    /*\n     * Prevents construction.  Use instance() instead.\n     */\n    GEventQueue();\n\n    GThunk dequeue();\n    void enqueueEvent(const GEvent& event);\n    bool isEmpty() const;\n    GThunk peek();\n    void runOnQtGuiThreadAsync(GThunk thunk);\n    void runOnQtGuiThreadSync(GThunk thunk);\n\n    static GEventQueue* _instance;\n    Queue<GThunk> _functionQueue;\n    Queue<GEvent> _eventQueue;\n    QReadWriteLock _eventQueueMutex;\n    QReadWriteLock _functionQueueMutex;\n    int _eventMask;\n\n    friend class GObservable;\n    friend class GThread;\n    friend class QtGui;\n};\n\n#endif // _geventqueue_h\n"
  },
  {
    "path": "Library/graphics/gfilechooser.cpp",
    "content": "/*\n * File: gfilechooser.cpp\n * ----------------------\n * This file implements the operations declared in the gfilechooser.h file.\n * See gfilechooser.h for documentation of each member.\n * \n * @author Marty Stepp\n * @version 2018/09/07\n * - added overloads that accept GWindow* parent\n * @version 2018/08/23\n * - renamed to gfilechooser.cpp to replace Java version\n * @version 2018/06/28\n * - initial version\n */\n\n#include \"gfilechooser.h\"\n#include <QFileDialog>\n#include \"gthread.h\"\n#include \"strlib.h\"\n#include \"vector.h\"\n\nGFileChooser::GFileChooser() {\n    // empty\n}\n\nstd::string GFileChooser::showOpenDialog(const std::string& title, const std::string& currentDir, const std::string& fileFilter) {\n    return showOpenDialog(/* parent */ (QWidget*) nullptr, title, currentDir, fileFilter);\n}\n\nstd::string GFileChooser::showOpenDialog(GWindow* parent, const std::string& title, const std::string& currentDir, const std::string& fileFilter) {\n    return showOpenDialog(parent ? parent->getWidget() : nullptr, title, currentDir, fileFilter);\n}\n\nstd::string GFileChooser::showOpenDialog(QWidget* parent, const std::string& title, const std::string& currentDir, const std::string& fileFilter) {\n    // Qt filter spec:\n    // If you want multiple filters, separate them with ';;', for example:\n    // \"Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)\"\n\n    std::string result = \"\";\n    GThread::runOnQtGuiThread([parent, title, currentDir, fileFilter, &result]() {\n        result = QFileDialog::getOpenFileName(parent,\n                QString::fromStdString(title),\n                QString::fromStdString(currentDir),\n                QString::fromStdString(normalizeFileFilter(fileFilter))).toStdString();\n    });\n    return result;\n}\n\nstd::string GFileChooser::showSaveDialog(const std::string& title, const std::string& currentDir, const std::string& fileFilter) {\n    return showSaveDialog(/* parent */ (QWidget*) nullptr, title, currentDir, fileFilter);\n}\n\nstd::string GFileChooser::showSaveDialog(GWindow* parent, const std::string& title, const std::string& currentDir, const std::string& fileFilter) {\n    return showSaveDialog(parent ? parent->getWidget() : nullptr, title, currentDir, fileFilter);\n}\n\nstd::string GFileChooser::showSaveDialog(QWidget* parent, const std::string& title, const std::string& currentDir, const std::string& fileFilter) {\n    std::string result = \"\";\n    GThread::runOnQtGuiThread([parent, title, currentDir, fileFilter, &result]() {\n        result = QFileDialog::getSaveFileName(parent,\n                QString::fromStdString(title),\n                QString::fromStdString(currentDir),\n                QString::fromStdString(normalizeFileFilter(fileFilter))).toStdString();\n    });\n    return result;\n}\n\nstd::string GFileChooser::normalizeFileFilter(const std::string& fileFilter) {\n    Vector<std::string> tokens = stringSplit(fileFilter, \",\");\n    for (int i = 0; i < tokens.size(); i++) {\n        std::string token = tokens[i];\n        token = trim(token);\n        // TODO: more processing\n        tokens[i] = token;\n    }\n    return stringJoin(tokens, \";;\");\n}\n"
  },
  {
    "path": "Library/graphics/gfilechooser.h",
    "content": "/*\n * File: gfilechooser.h\n * --------------------\n * This file defines the <code>GFileChooser</code> class which supports\n * popping up graphical dialog boxes to select file names.\n * \n * @author Marty Stepp\n * @version 2018/09/07\n * - added doc comments for new documentation generation\n * - added overloads that accept GWindow* parent\n * @version 2018/08/23\n * - renamed to gfilechooser.h to replace Java version\n * @version 2018/06/28\n * - initial version\n */\n\n\n#ifndef _gfilechooser_h\n#define _gfilechooser_h\n\n#include <string>\n#include <QWidget>\n\n#include \"gwindow.h\"\n\n/**\n * The GFileChooser class contains static methods for popping up file-choosing\n * dialog boxes that allow the user to select a file.\n * Each method blocks until the file is chosen and the dialog is closed,\n * returning the file the user chose (or an empty string if the user canceled).\n */\nclass GFileChooser {\npublic:\n    /**\n     * Pops up a file \"Open\" chooser dialog with the given top title text,\n     * current directory, and file filter.  All arguments are optional.\n     * @param fileFilter a file filter string such as \"*.gif,*.jpg,*.png\".\n     */\n    static std::string showOpenDialog(const std::string& title = \"Open file\", const std::string& currentDir = \"\", const std::string& fileFilter = \"\");\n\n    /**\n     * Pops up a file \"Open\" chooser dialog with the given top title text,\n     * current directory, and file filter.  All arguments are optional.\n     * @param fileFilter a file filter string such as \"*.gif,*.jpg,*.png\".\n     */\n    static std::string showOpenDialog(GWindow* parent, const std::string& title = \"Open file\", const std::string& currentDir = \"\", const std::string& fileFilter = \"\");\n\n    /**\n     * Pops up a file \"Open\" chooser dialog with the given top title text,\n     * current directory, and file filter.  All arguments are optional.\n     * @param fileFilter a file filter string such as \"*.gif,*.jpg,*.png\".\n     */\n    static std::string showOpenDialog(QWidget* parent, const std::string& title = \"Open file\", const std::string& currentDir = \"\", const std::string& fileFilter = \"\");\n\n    /**\n     * Pops up a file \"Save\" chooser dialog with the given top title text,\n     * current directory, and file filter.  All arguments are optional.\n     *\n     * The main difference between an \"Open\" dialog and a \"Save\" dialog,\n     * aside from the different title bar text, is that a \"Save\" dialog allows\n     * the user to type a name of a file that does not yet exist.\n     *\n     * If the user chooses the name of a file that already exists, they will\n     * be prompted to overwrite this file.  If they choose No, the dialog will\n     * remain up; if they choose Yes, it will close.\n     * @param fileFilter a file filter string such as \"*.gif,*.jpg,*.png\".\n     */\n    static std::string showSaveDialog(const std::string& title = \"Save file\", const std::string& currentDir = \"\", const std::string& fileFilter = \"\");\n\n    /**\n     * Pops up a file \"Save\" chooser dialog with the given top title text,\n     * current directory, and file filter.  All arguments are optional.\n     *\n     * The main difference between an \"Open\" dialog and a \"Save\" dialog,\n     * aside from the different title bar text, is that a \"Save\" dialog allows\n     * the user to type a name of a file that does not yet exist.\n     *\n     * If the user chooses the name of a file that already exists, they will\n     * be prompted to overwrite this file.  If they choose No, the dialog will\n     * remain up; if they choose Yes, it will close.\n     * @param fileFilter a file filter string such as \"*.gif,*.jpg,*.png\".\n     */\n    static std::string showSaveDialog(GWindow* parent, const std::string& title = \"Save file\", const std::string& currentDir = \"\", const std::string& fileFilter = \"\");\n\n    /**\n     * Pops up a file \"Save\" chooser dialog with the given top title text,\n     * current directory, and file filter.  All arguments are optional.\n     *\n     * The main difference between an \"Open\" dialog and a \"Save\" dialog,\n     * aside from the different title bar text, is that a \"Save\" dialog allows\n     * the user to type a name of a file that does not yet exist.\n     *\n     * If the user chooses the name of a file that already exists, they will\n     * be prompted to overwrite this file.  If they choose No, the dialog will\n     * remain up; if they choose Yes, it will close.\n     * @param fileFilter a file filter string such as \"*.gif,*.jpg,*.png\".\n     */\n    static std::string showSaveDialog(QWidget* parent, const std::string& title = \"Save file\", const std::string& currentDir = \"\", const std::string& fileFilter = \"\");\n\nprivate:\n    GFileChooser();   // prevent construction\n\n    /*\n     * Constants for dialog types, similar to those in Java's JFileChooser\n     */\n    enum DialogType {\n        OPEN_DIALOG = 0,\n        SAVE_DIALOG = 1\n    };\n\n    /*\n     * Converts between our comma-separated file filter format to the one\n     * used by Qt that uses ;; as its separator.\n     */\n    static std::string normalizeFileFilter(const std::string& fileFilter);\n};\n\n#endif // _gfilechooser_h\n"
  },
  {
    "path": "Library/graphics/gfont.cpp",
    "content": "/*\n * File: gfont.cpp\n * ---------------\n *\n * @author Marty Stepp\n * @version 2019/04/30\n * - added changeFontSize for a GText*\n * @version 2018/09/23\n * - added macro checks to improve compatibility with old Qt versions\n * @version 2018/09/14\n * - added boldFont, italicFont\n * @version 2018/08/23\n * - renamed to gfont.cpp to replace Java version\n * @version 2018/07/05\n * - initial version\n */\n\n#include \"gfont.h\"\n#include <algorithm>\n#include <iomanip>\n#include <iostream>\n#include <QtGlobal>\n#include \"require.h\"\n#include \"strlib.h\"\n#include \"vector.h\"\n\nGFont::GFont() {\n    // empty\n}\n\nvoid GFont::boldFont(GInteractor* interactor) {\n    require::nonNull(interactor, \"GFont::boldFont\", \"interactor\");\n    QFont newFont = deriveQFont(toQFont(interactor->getFont()), /* weight */ QFont::Bold);\n    interactor->setFont(newFont);\n}\n\nvoid GFont::changeFontSize(GInteractor* interactor, int dsize) {\n    require::nonNull(interactor, \"GFont::changeFontSize\", \"interactor\");\n    QFont newFont = changeFontSize(toQFont(interactor->getFont()), dsize);\n    interactor->setFont(newFont);\n}\n\nvoid GFont::changeFontSize(GText* label, int dsize) {\n    require::nonNull(label, \"GFont::changeFontSize\", \"label\");\n    QFont newFont = changeFontSize(toQFont(label->getFont()), dsize);\n    label->setFont(newFont);\n}\n\nQFont GFont::changeFontSize(const QFont& font, int dsize) {\n    int newSize = std::max(1, font.pointSize() + dsize);\n    return QFont(font.family(), newSize, font.weight(), font.italic());\n}\n\nQFont GFont::deriveQFont(const QFont& font, QFont::Weight weight, int size) {\n    return QFont(font.family(), size, weight, /* italic */ font.italic());\n}\n\nQFont GFont::deriveQFont(const QFont& font, const std::string& fontFamily, QFont::Weight weight, int size) {\n    return QFont(QString::fromStdString(fontFamily), size, weight, /* italic */ font.italic());\n}\n\nQFont GFont::deriveQFont(const std::string& font, QFont::Weight weight, int size) {\n    return deriveQFont(toQFont(font), weight, size);\n}\n\nQFont GFont::deriveQFont(const std::string& font, const std::string& fontFamily, QFont::Weight weight, int size) {\n    return deriveQFont(toQFont(font), fontFamily, weight, size);\n}\n\n// http://doc.qt.io/qt-5/qfont.html#StyleHint-enum\nQFont::StyleHint GFont::getStyleHint(const std::string& fontFamily) {\n    std::string fontFamilyStr = toLowerCase(trim(fontFamily));\n    if (fontFamilyStr == \"arial\"\n            || fontFamilyStr == \"helvetica\"\n            || fontFamilyStr == \"sansserif\"\n            || fontFamilyStr == \"sans-serif\") {\n        return QFont::Helvetica;\n    } else if (fontFamilyStr == \"serif\"\n            || fontFamilyStr == \"times\"\n            || fontFamilyStr == \"times roman\"\n            || fontFamilyStr == \"times new roman\") {\n        return QFont::Times;\n    } else if (fontFamilyStr == \"courier\"\n            || fontFamilyStr == \"courier new\"\n            || fontFamilyStr == \"consolas\"\n            || fontFamilyStr == \"monospace\"\n            || fontFamilyStr == \"monospaced\"\n            || endsWith(fontFamilyStr, \" mono\")) {\n        return QFont::Monospace;\n    } else if (fontFamilyStr == \"comic sans\"\n            || fontFamilyStr == \"comic sans ms\"\n            || fontFamilyStr == \"fantasy\") {\n        return QFont::Fantasy;\n    } else if (fontFamilyStr == \"cursive\") {\n        return QFont::Cursive;\n    } else if (fontFamilyStr == \"system\") {\n        return QFont::System;\n    } else {\n        return QFont::AnyStyle;\n    }\n}\n\nvoid GFont::italicFont(GInteractor* interactor) {\n    require::nonNull(interactor, \"GFont::boldFont\", \"interactor\");\n    QFont oldFont = toQFont(interactor->getFont());\n    QFont newFont(oldFont.family(), oldFont.pointSize(), oldFont.weight(), /* italic */ true);\n    interactor->setFont(newFont);\n}\n\n// example font string:\n// \"Courier New-Bold-12\"\nstd::string GFont::toFontString(const QFont& font) {\n    std::ostringstream out;\n    out << font.family().toStdString();\n\n    // http://doc.qt.io/qt-5/qfont.html#Weight-enum\n    bool dashPrinted = false;\n    switch (font.weight()) {\n        case QFont::DemiBold:\n        case QFont::Bold:\n        case QFont::ExtraBold:\n        case QFont::Black:\n            out << \"-bold\";\n            dashPrinted = true;\n            break;\n        case QFont::Thin:\n        case QFont::ExtraLight:\n        case QFont::Light:\n        case QFont::Normal:\n        case QFont::Medium:\n        default:\n            // not bold\n            break;\n    }\n    if (font.italic()) {\n        if (!dashPrinted) {\n            // dashPrinted = true;\n            out << \"-\";\n        }\n        out << \"italic\";\n    }\n\n    out << \"-\" << font.pointSize();\n    return out.str();\n}\n\n// example font string:\n// \"Courier New-Bold-12\"\nQFont GFont::toQFont(const std::string& fontString) {\n    Vector<std::string> tokens = stringSplit(trim(fontString), \"-\");\n    if (tokens.isEmpty()) {\n        return QFont();\n    }\n\n    std::string fontFamily = \"\";\n    bool fontBold = false;\n    bool fontItalic = false;\n    int fontSize = 12;   // 12pt standard font size\n\n    if (!tokens.isEmpty()) {\n        fontFamily = trim(tokens.remove(0));\n        if (fontFamily == \"*\") {\n            fontFamily = \"SansSerif\";\n        }\n    }\n    for (int i = 0; i < 2; i++) {\n        if (!tokens.isEmpty()) {\n            // tokens 2-3 can be size-style or style-size\n            std::string fontWeightStr = toLowerCase(trim(tokens.remove(0)));\n            if (stringIsInteger(fontWeightStr)) {\n                fontSize = stringToInteger(fontWeightStr);\n            }\n            if (stringContains(fontWeightStr, \"bold\")) {\n                fontBold = true;\n            }\n            if (stringContains(fontWeightStr, \"italic\")) {\n                fontItalic = true;\n            }\n        }\n    }\n\n    QFont font = QFont(QString::fromStdString(fontFamily),\n                       fontSize,\n                       fontBold ? QFont::Bold : QFont::Normal,\n                       fontItalic);\n    font.setStyleHint(getStyleHint(fontFamily));\n    return font;\n}\n\nQFont GFont::toQFont(const QFont& basisFont, const std::string& fontString) {\n    Vector<std::string> tokens = stringSplit(trim(fontString), \"-\");\n    if (tokens.isEmpty()) {\n        return QFont();\n    }\n\n    std::string fontFamily = \"\";\n    bool fontBold = basisFont.bold();\n    bool fontItalic = basisFont.italic();\n    int fontSize = basisFont.pointSize();   // 12pt standard font size\n\n    if (!tokens.isEmpty()) {\n        fontFamily = trim(tokens.remove(0));\n        if (fontFamily == \"*\") {\n            fontFamily = basisFont.family().toStdString();\n        }\n    }\n    for (int i = 0; i < 2; i++) {\n        if (!tokens.isEmpty()) {\n            // tokens 2-3 can be size-style or style-size\n            std::string fontWeightStr = toLowerCase(trim(tokens.remove(0)));\n            if (stringIsInteger(fontWeightStr)) {\n                fontSize = stringToInteger(fontWeightStr);\n            } else if (stringContains(fontWeightStr, \"bold\")) {\n                fontBold = true;\n            } else if (stringContains(fontWeightStr, \"italic\")) {\n                fontItalic = true;\n            }\n        }\n    }\n\n    QFont font = QFont(QString::fromStdString(fontFamily),\n                       fontSize,\n                       fontBold ? QFont::Bold : QFont::Normal,\n                       fontItalic);\n    font.setStyleHint(getStyleHint(fontFamily));\n    return font;\n}\n"
  },
  {
    "path": "Library/graphics/gfont.h",
    "content": "/*\n * File: gfont.h\n * -------------\n *\n * @author Marty Stepp\n * @version 2019/04/30\n * - added changeFontSize for a GText*\n * @version 2018/09/07\n * - added doc comments for new documentation generation\n * @version 2018/08/23\n * - renamed to gfont.h to replace Java version\n * @version 2018/07/05\n * - initial version\n */\n\n\n#ifndef _gfont_h\n#define _gfont_h\n\n#include <string>\n#include <QFont>\n\n#include \"ginteractor.h\"\n#include \"gobjects.h\"\n\n/**\n * This class contains static methods for dealing with fonts in our GUI system.\n * A font string has the following format:\n *\n * <pre>\n * \"family-style-size\"\n * </pre>\n *\n * where both <code>style</code> and <code>size</code> are optional.\n * If any of these elements are missing or specified as an asterisk,\n * the existing value is retained.\n */\nclass GFont {\npublic:\n    /**\n     * Makes the given interactor's font bold.\n     * The font name and size are unchanged.\n     * @throw ErrorException if the interactor is null\n     */\n    static void boldFont(GInteractor* interactor);\n\n    /**\n     * Modifies the font of the given interactor, changing its size by the given\n     * number of points.  The change in size can be positive or negative.\n     * @throw ErrorException if the interactor is null\n     */\n    static void changeFontSize(GInteractor* interactor, int dsize);\n\n    /**\n     * Modifies the font of the given label, changing its size by the given\n     * number of points.  The change in size can be positive or negative.\n     * @throw ErrorException if the interactor is null\n     */\n    static void changeFontSize(GText* label, int dsize);\n\n    /**\n     * Modifies the size of the given Qt font object, changing its size by the given\n     * number of points, and returning the new modified font.\n     * The change in size can be positive or negative.\n     */\n    static QFont changeFontSize(const QFont& font, int dsize);\n\n    /**\n     * Modifies the given font object, changing its weight and/or size to the\n     * given values, and returning the new modified font.\n     */\n    static QFont deriveQFont(const QFont& font, QFont::Weight weight = QFont::Normal, int size = -1);\n\n    /**\n     * Modifies the given font object, changing its font family, weight, and/or\n     * size to the given values, and returning the new modified font.\n     */\n    static QFont deriveQFont(const QFont& font, const std::string& fontFamily, QFont::Weight weight = QFont::Normal, int size = -1);\n\n    /**\n     * Modifies the given font object, changing its weight and/or size to the\n     * given values, and returning the new modified font.\n     * The font you pass should be a font string such as \"Helvetica-12-Bold\".\n     */\n    static QFont deriveQFont(const std::string& font, QFont::Weight weight = QFont::Normal, int size = -1);\n\n    /**\n     * Modifies the given font object, changing its font family, weight, and/or\n     * size to the given values, and returning the new modified font.\n     * The font you pass should be a font string such as \"Helvetica-12-Bold\".\n     */\n    static QFont deriveQFont(const std::string& font, const std::string& fontFamily, QFont::Weight weight = QFont::Normal, int size = -1);\n\n    /**\n     * Makes the given interactor's font italic.\n     * The font name and size are unchanged.\n     * @throw ErrorException if the interactor is null\n     */\n    static void italicFont(GInteractor* interactor);\n\n    /**\n     * Converts the given Qt font object into a font string such as\n     * \"Helvetica-12-Bold\".\n     */\n    static std::string toFontString(const QFont& font);\n\n    /**\n     * Converts a font string such as \"Helvetica-12-Bold\" into a Qt font object.\n     */\n    static QFont toQFont(const std::string& fontString);\n\n    /**\n     * Converts a font string such as \"Helvetica-*-12\" into a Qt font object,\n     * using the given 'basis' object for any defaults that are not present in\n     * the font string.\n     */\n    static QFont toQFont(const QFont& basisFont, const std::string& fontString);\n\nprivate:\n    GFont();   // prevent construction\n    static QFont::StyleHint getStyleHint(const std::string& fontFamily);\n};\n\n#endif // _gfont_h\n"
  },
  {
    "path": "Library/graphics/gfontchooser.cpp",
    "content": "/*\n * File: gcolorchooser.cpp\n * -----------------------\n * This file implements the operations declared in the gfilechooser.h file.\n * See gfilechooser.h for documentation of each member.\n * \n * @author Marty Stepp\n * @version 2018/09/07\n * - added overloads that accept GWindow* parent\n * @version 2018/08/23\n * - renamed to gfontchooser.cpp to replace Java version\n * @version 2018/07/29\n * - initial version\n */\n\n#include \"gfontchooser.h\"\n#include <QFontDialog>\n#include \"gfont.h\"\n#include \"gthread.h\"\n\nGFontChooser::GFontChooser() {\n    // empty\n}\n\nstd::string GFontChooser::showDialog(const std::string& title, const std::string& initialFont) {\n    return showDialog(/* parent */ (QWidget*) nullptr, title, initialFont);\n}\n\nstd::string GFontChooser::showDialog(GWindow* parent, const std::string& title, const std::string& initialFont) {\n    return showDialog(parent ? parent->getWidget() : nullptr, title, initialFont);\n}\n\nstd::string GFontChooser::showDialog(QWidget* parent, const std::string& title, const std::string& initialFont) {\n    QFont initialQFont = GFont::toQFont(initialFont);\n    std::string result = \"\";\n    GThread::runOnQtGuiThread([parent, title, initialQFont, &result]() {\n        bool ok = false;\n        QFont font = QFontDialog::getFont(&ok, initialQFont, parent, QString::fromStdString(title));\n        if (ok) {\n            result = GFont::toFontString(font);\n        }\n    });\n    return result;\n}\n"
  },
  {
    "path": "Library/graphics/gfontchooser.h",
    "content": "/*\n * File: gfontchooser.h\n * ----------------------\n * This file defines the <code>GFontChooser</code> class which supports\n * popping up graphical dialog boxes to select fonts.\n * \n * @author Marty Stepp\n * @version 2018/09/07\n * - added doc comments for new documentation generation\n * - added overloads that accept GWindow* parent\n * @version 2018/08/23\n * - renamed to gfontchooser.h to replace Java version\n * @version 2018/07/29\n * - initial version\n */\n\n\n#ifndef _gfontchooser_h\n#define _gfontchooser_h\n\n#include <string>\n#include <QWidget>\n\n#include \"gwindow.h\"\n\n/**\n * The GFontChooser class contains static methods for popping up font-choosing\n * dialog boxes that allow the user to select a font family, size, and style.\n * Each method blocks until the font is chosen and the dialog is closed,\n * returning the font the user chose (or an empty string if the user canceled).\n *\n * Fonts are represented as font strings such as \"Helvetica-12-Bold\" or\n * \"Times New Roman-14\".\n *\n * See the GFont class for more information about fonts and font strings.\n */\nclass GFontChooser {\npublic:\n    /**\n     * Pops up a font chooser dialog with the given top title text\n     * and the given initially selected font.  All arguments are optional.\n     * @param initialFont a font string such as \"Helvetica-12-Bold\".\n     */\n    static std::string showDialog(const std::string& title = \"\", const std::string& initialFont = \"\");\n\n    /**\n     * Pops up a font chooser dialog with the given top title text\n     * and the given initially selected font.  All arguments are optional.\n     * @param initialFont a font string such as \"Helvetica-12-Bold\".\n     */\n    static std::string showDialog(GWindow* parent, const std::string& title = \"\", const std::string& initialFont = \"\");\n\n    /**\n     * Pops up a font chooser dialog with the given top title text\n     * and the given initially selected font.  All arguments are optional.\n     * @param initialFont a font string such as \"Helvetica-12-Bold\".\n     */\n    static std::string showDialog(QWidget* parent, const std::string& title = \"\", const std::string& initialFont = \"\");\n\nprivate:\n    GFontChooser();   // prevent construction\n};\n\n#endif // _gfontchooser_h\n"
  },
  {
    "path": "Library/graphics/ginteractor.cpp",
    "content": "/*\n * File: ginteractor.cpp\n * ---------------------\n *\n * @author Marty Stepp\n * @version 2019/04/23\n * - added set/removeActionListener\n * - added set/removeClickListener\n * - added set/removeDoubleClickListener\n * - added set/removeKeyListener\n * - added set/removeMouseListener\n * @version 2019/04/22\n * - added setIcon with QIcon and QPixmap\n * @version 2019/04/10\n * - bug fix for setBackground on GTextArea and GBrowserPane\n * @version 2018/09/20\n * - bug fix for requestFocus threading\n * @version 2018/09/04\n * - added get/setName, getID\n * @version 2018/08/23\n * - renamed to ginteractor.cpp to replace Java version\n * @version 2018/06/29\n * - initial version\n */\n\n#include \"ginteractor.h\"\n#include <iostream>\n#include <sstream>\n#include \"gcolor.h\"\n#include \"gfont.h\"\n#include \"gthread.h\"\n#include \"gwindow.h\"\n#include \"qtgui.h\"\n#include \"require.h\"\n\nint GInteractor::_interactorCount = 0;\n\nGInteractor::GInteractor()\n        : _actionCommand(\"\"),\n          _actionEventType(\"click\"),\n          _icon(\"\"),\n          _name(\"\"),\n          _id(-1),\n          _container(nullptr),\n          _lock(QReadWriteLock::Recursive) {\n    _id = ++_interactorCount;            // set ID to number of interactors + 1\n}\n\nGInteractor::~GInteractor() {\n    // empty\n}\n\nbool GInteractor::eventsEnabled() const {\n    return GObservable::eventsEnabled() && getWidget() != nullptr && isVisible();\n}\n\nstd::string GInteractor::getAccelerator() const {\n    // override in subclasses\n    return \"\";\n}\n\nstd::string GInteractor::getActionCommand() const {\n    return _actionCommand;\n}\n\nstd::string GInteractor::getActionEventType() const {\n    return _actionEventType;\n}\n\nstd::string GInteractor::getBackground() const {\n    int rgb = getBackgroundInt();\n    return GColor::convertRGBToColor(rgb);\n}\n\nint GInteractor::getBackgroundInt() const {\n    QColor color = getWidget()->palette().color(getWidget()->backgroundRole());\n    return GColor::convertQColorToRGB(color);\n}\n\nGRectangle GInteractor::getBounds() const {\n    return GRectangle(getX(), getY(), getWidth(), getHeight());\n}\n\nstd::string GInteractor::getColor() const {\n    int rgb = getColorInt();\n    return GColor::convertRGBToColor(rgb);\n}\n\nint GInteractor::getColorInt() const {\n    QColor color = getWidget()->palette().color(getWidget()->foregroundRole());\n    return GColor::convertQColorToRGB(color);\n}\n\nGContainer* GInteractor::getContainer() const {\n    return _container;\n}\n\nstd::string GInteractor::getDefaultInteractorName() const {\n    return getType() + \"_\" + std::to_string(getID());\n}\n\nstd::string GInteractor::getFont() const {\n    return GFont::toFontString(getWidget()->font());\n}\n\nstd::string GInteractor::getForeground() const {\n    int rgb = getForegroundInt();\n    return GColor::convertRGBToColor(rgb);\n}\n\nint GInteractor::getForegroundInt() const {\n    QColor color = getWidget()->palette().color(getWidget()->foregroundRole());\n    return GColor::convertQColorToRGB(color);\n}\n\ndouble GInteractor::getHeight() const {\n    return getWidget()->height();\n}\n\nint GInteractor::getID() const {\n    return _id;\n}\n\nstd::string GInteractor::getIcon() const {\n    return _icon;\n}\n\nGPoint GInteractor::getLocation() const {\n    return GPoint(getX(), getY());\n}\n\n/* static */ QWidget* GInteractor::getInternalParent(QWidget* parent) {\n    return parent ? parent : (QWidget*) GWindow::getLastWindow();\n}\n\ndouble GInteractor::getMinimumHeight() const {\n    return getMinimumSize().height;\n}\n\nGDimension GInteractor::getMinimumSize() const {\n    QSize size = getInternalWidget()->getMinimumSize();\n    return GDimension(size.width(), size.height());\n}\n\ndouble GInteractor::getMinimumWidth() const {\n    return getMinimumSize().width;\n}\n\nstd::string GInteractor::getName() const {\n    if (_name.empty()) {\n        return getDefaultInteractorName();\n    } else {\n        return _name;\n    }\n}\n\ndouble GInteractor::getPreferredHeight() const {\n    return getPreferredSize().height;\n}\n\nGDimension GInteractor::getPreferredSize() const {\n    QSize size;\n    if (getInternalWidget()->hasPreferredSize()) {\n        size = getInternalWidget()->getPreferredSize();\n    } else {\n        size = getWidget()->sizeHint();\n    }\n    return GDimension(size.width(), size.height());\n}\n\ndouble GInteractor::getPreferredWidth() const {\n    return getPreferredSize().width;\n}\n\nGDimension GInteractor::getSize() const {\n    return GDimension(getWidth(), getHeight());\n}\n\ndouble GInteractor::getWidth() const {\n    return getWidget()->width();\n}\n\ndouble GInteractor::getX() const {\n    return getWidget()->x();\n}\n\ndouble GInteractor::getY() const {\n    return getWidget()->y();\n}\n\nbool GInteractor::inBounds(double x, double y) const {\n    return 0 <= x && x < getWidth() && 0 <= y && y < getHeight();\n}\n\nbool GInteractor::inBounds(int x, int y) const {\n    return 0 <= x && x < (int) getWidth() && 0 <= y && y < (int) getHeight();\n}\n\nbool GInteractor::isEnabled() const {\n    return getWidget()->isEnabled();\n}\n\nbool GInteractor::isVisible() const {\n    return getWidget()->isVisible();\n}\n\nvoid GInteractor::lockForRead() {\n    _lock.lockForRead();\n}\n\nvoid GInteractor::lockForReadConst() const {\n    GInteractor* that = const_cast<GInteractor*>(this);\n    that->lockForRead();\n}\n\nvoid GInteractor::lockForWrite() {\n    _lock.lockForWrite();\n}\n\nvoid GInteractor::lockForWriteConst() const {\n    GInteractor* that = const_cast<GInteractor*>(this);\n    that->lockForWrite();\n}\n\nstd::string GInteractor::normalizeAccelerator(const std::string& accelerator) {\n    std::string acceleratorStr = stringReplace(accelerator, \"Alt-\", \"Alt+\");\n    acceleratorStr = stringReplace(acceleratorStr, \"Command-\", \"Command+\");\n    acceleratorStr = stringReplace(acceleratorStr, \"Ctrl-\", \"Ctrl+\");\n    acceleratorStr = stringReplace(acceleratorStr, \"Meta-\", \"Meta+\");\n    acceleratorStr = stringReplace(acceleratorStr, \"Shift-\", \"Shift+\");\n    return acceleratorStr;\n}\n\nvoid GInteractor::removeActionListener() {\n    removeEventListener(getActionEventType());\n}\n\nvoid GInteractor::removeClickListener() {\n    removeEventListener(\"click\");\n}\n\nvoid GInteractor::removeDoubleClickListener() {\n    removeEventListener(\"doubleclick\");\n}\n\nvoid GInteractor::removeKeyListener() {\n    removeEventListeners({\"keypress\",\n                         \"keyrelease\",\n                         \"keytype\"});\n}\n\nvoid GInteractor::removeMouseListener() {\n    removeEventListeners({\"click\",\n                         \"mousedrag\",\n                         \"mouseenter\",\n                         \"mouseexit\",\n                         \"mousemove\",\n                         \"mousepress\",\n                         \"mouserelease\",\n                         \"mousewheeldown\",\n                         \"mousewheelup\"});\n}\n\nvoid GInteractor::requestFocus() {\n    GThread::runOnQtGuiThread([this]() {\n        getWidget()->setFocus();\n    });\n}\n\nvoid GInteractor::setActionCommand(const std::string& actionCommand) {\n    _actionCommand = actionCommand;\n}\n\nvoid GInteractor::setAccelerator(const std::string& /* accelerator */) {\n    // override in subclasses\n}\n\nvoid GInteractor::setActionListener(GEventListener func) {\n    setEventListener(getActionEventType(), func);\n}\n\nvoid GInteractor::setActionListener(GEventListenerVoid func) {\n    setEventListener(getActionEventType(), func);\n}\n\nvoid GInteractor::setBackground(int rgb) {\n    GThread::runOnQtGuiThread([this, rgb]() {\n        QPalette palette(getWidget()->palette());\n        palette.setColor(getWidget()->backgroundRole(), QColor(rgb));\n\n        // additional palette color settings for GChooser and other widgets\n        // TODO: does not totally work for some widgets, e.g. GChooser popup menu\n        if (getType() == \"GChooser\") {\n            palette.setColor(QPalette::Base, QColor(rgb));\n            palette.setColor(QPalette::Active, QPalette::Button, QColor(rgb));\n            palette.setColor(QPalette::Inactive, QPalette::Button, QColor(rgb));\n        } else if (getType() == \"GTextArea\"\n                   || getType() == \"GBrowserPane\") {\n            palette.setColor(QPalette::Base, QColor(rgb));\n        }\n\n        getWidget()->setAutoFillBackground(true);\n        getWidget()->setPalette(palette);\n    });\n}\n\nvoid GInteractor::setBackground(const std::string& color) {\n    if (GColor::hasAlpha(color)) {\n        int argb = GColor::convertColorToARGB(color);\n        GThread::runOnQtGuiThread([this, argb]() {\n            QColor qcolor = GColor::toQColorARGB(argb);\n            QPalette palette(getWidget()->palette());\n            palette.setColor(getWidget()->backgroundRole(), qcolor);\n\n            // additional palette color settings for GChooser and other widgets\n            // TODO: does not totally work for some widgets, e.g. GChooser popup menu\n            if (getType() == \"GChooser\") {\n                palette.setColor(QPalette::Base, qcolor);\n                palette.setColor(QPalette::Active, QPalette::Button, qcolor);\n                palette.setColor(QPalette::Inactive, QPalette::Button, qcolor);\n            } else if (getType() == \"GTextArea\"\n                       || getType() == \"GBrowserPane\") {\n                palette.setColor(QPalette::Base, qcolor);\n            }\n\n            getWidget()->setAutoFillBackground(true);\n            getWidget()->setPalette(palette);\n        });\n    } else {\n        int rgb = GColor::convertColorToRGB(color);\n        setBackground(rgb);\n    }\n}\n\nvoid GInteractor::setBounds(double x, double y, double width, double height) {\n    GThread::runOnQtGuiThread([this, x, y, width, height]() {\n        getWidget()->setGeometry((int) x, (int) y, (int) width, (int) height);\n        getWidget()->setFixedSize((int) width, (int) height);\n    });\n}\n\nvoid GInteractor::setBounds(const GRectangle& size) {\n    setBounds(size.x, size.y, size.width, size.height);\n}\n\nvoid GInteractor::setClickListener(GEventListener func) {\n    setEventListener(\"click\", func);\n}\n\nvoid GInteractor::setClickListener(GEventListenerVoid func) {\n    setEventListener(\"click\", func);\n}\n\nvoid GInteractor::setColor(int rgb) {\n    setForeground(rgb);\n}\n\nvoid GInteractor::setColor(const std::string& color) {\n    setForeground(color);\n}\n\nvoid GInteractor::setContainer(GContainer* container) {\n    _container = container;\n    if (!container) {\n        // widgets that are not in any container should not be shown on screen\n        // (they will awkwardly hover at (0, 0) if they are shown)\n        QWidget* widget = getWidget();\n        GThread::runOnQtGuiThread([widget]() {\n            widget->setParent(nullptr);\n        });\n        setVisible(false);\n    }\n}\n\nvoid GInteractor::setDoubleClickListener(GEventListener func) {\n    setEventListener(\"doubleclick\", func);\n}\n\nvoid GInteractor::setDoubleClickListener(GEventListenerVoid func) {\n    setEventListener(\"doubleclick\", func);\n}\n\nvoid GInteractor::setEnabled(bool value) {\n    GThread::runOnQtGuiThread([this, value]() {\n        getWidget()->setEnabled(value);\n    });\n}\n\nvoid GInteractor::setForeground(int rgb) {\n    GThread::runOnQtGuiThread([this, rgb]() {\n        QPalette palette(getWidget()->palette());\n        palette.setColor(getWidget()->foregroundRole(), QColor(rgb));\n        // TODO: does not totally work for some widgets, e.g. GChooser popup menu\n        getWidget()->setPalette(palette);\n    });\n}\n\nvoid GInteractor::setForeground(const std::string& color) {\n    if (GColor::hasAlpha(color)) {\n        int argb = GColor::convertColorToARGB(color);\n        GThread::runOnQtGuiThread([this, argb]() {\n            QPalette palette(getWidget()->palette());\n            palette.setColor(getWidget()->foregroundRole(), GColor::toQColorARGB(argb));\n            // TODO: does not totally work for some widgets, e.g. GChooser popup menu\n            getWidget()->setPalette(palette);\n        });\n    } else {\n        int rgb = GColor::convertColorToRGB(color);\n        setForeground(rgb);\n    }\n}\n\nvoid GInteractor::setFont(const QFont& font) {\n    GThread::runOnQtGuiThread([this, font]() {\n        getWidget()->setFont(font);\n    });\n}\n\nvoid GInteractor::setFont(const std::string& font) {\n    setFont(GFont::toQFont(font));\n}\n\nvoid GInteractor::setHeight(double height) {\n    require::nonNegative(height, \"GInteractor::setHeight\", \"height\");\n    GThread::runOnQtGuiThread([this, height]() {\n        getWidget()->setFixedHeight((int) height);\n    });\n}\n\nvoid GInteractor::setIcon(const QIcon& /*icon*/) {\n    // override in subclasses as appropriate\n}\n\nvoid GInteractor::setIcon(const QPixmap& /*icon*/) {\n    // override in subclasses as appropriate\n}\n\nvoid GInteractor::setIcon(const std::string& filename, bool /* retainIconSize */) {\n    _icon = filename;\n\n    // override in subclasses as appropriate; make sure to call super\n}\n\nvoid GInteractor::setKeyListener(GEventListener func) {\n    setEventListeners({\"keypress\",\n                       \"keyrelease\",\n                       \"keytype\"}, func);\n}\n\nvoid GInteractor::setKeyListener(GEventListenerVoid func) {\n    setEventListeners({\"keypress\",\n                       \"keyrelease\",\n                       \"keytype\"}, func);\n}\n\nvoid GInteractor::setLocation(double x, double y) {\n    GThread::runOnQtGuiThread([this, x, y]() {\n        getWidget()->setGeometry(x, y, getWidth(), getHeight());\n    });\n}\n\nvoid GInteractor::setMinimumSize(double width, double height) {\n    require::nonNegative(width, \"GInteractor::setMinimumSize\", \"width\");\n    require::nonNegative(height, \"GInteractor::setMinimumSize\", \"height\");\n    GThread::runOnQtGuiThread([this, width, height]() {\n        getInternalWidget()->setMinimumSize(width, height);\n    });\n}\n\nvoid GInteractor::setMinimumSize(const GDimension& size) {\n    setMinimumSize(size.width, size.height);\n}\n\nvoid GInteractor::setMouseListener(GEventListener func) {\n    setEventListeners({\"click\",\n                       \"mousedrag\",\n                       \"mouseenter\",\n                       \"mouseexit\",\n                       \"mousemove\",\n                       \"mousepress\",\n                       \"mouserelease\",\n                       \"mousewheeldown\",\n                       \"mousewheelup\"}, func);\n}\n\nvoid GInteractor::setMouseListener(GEventListenerVoid func) {\n    setEventListeners({\"click\",\n                       \"mousedrag\",\n                       \"mouseenter\",\n                       \"mouseexit\",\n                       \"mousemove\",\n                       \"mousepress\",\n                       \"mouserelease\",\n                       \"mousewheeldown\",\n                       \"mousewheelup\"}, func);\n}\n\nvoid GInteractor::setName(const std::string& name) {\n    _name = name;\n    // TODO: getWidget()->setObjectName() ?\n}\n\nvoid GInteractor::setPreferredHeight(double height) {\n    setPreferredSize(getPreferredWidth(), height);\n}\n\nvoid GInteractor::setPreferredSize(double width, double height) {\n    require::nonNegative(width, \"GInteractor::setPreferredSize\", \"width\");\n    require::nonNegative(height, \"GInteractor::setPreferredSize\", \"height\");\n    GThread::runOnQtGuiThread([this, width, height]() {\n        getInternalWidget()->setPreferredSize(width, height);\n    });\n}\n\nvoid GInteractor::setPreferredSize(const GDimension& size) {\n    GThread::runOnQtGuiThread([this, size]() {\n        getInternalWidget()->setPreferredSize(size.width, size.height);\n    });\n}\n\nvoid GInteractor::setPreferredWidth(double width) {\n    setPreferredSize(width, getPreferredHeight());\n}\n\nvoid GInteractor::setSize(double width, double height) {\n    require::nonNegative(width, \"GInteractor::setSize\", \"width\");\n    require::nonNegative(height, \"GInteractor::setSize\", \"height\");\n    GThread::runOnQtGuiThread([this, width, height]() {\n        // setBounds(GRectangle(getX(), getY(), width, height));\n        getWidget()->setGeometry((int) getX(), (int) getY(), (int) width, (int) height);\n        getWidget()->setFixedSize((int) width, (int) height);\n        getWidget()->setMinimumSize((int) width, (int) height);\n    });\n}\n\nvoid GInteractor::setSize(const GDimension& size) {\n    setSize(size.width, size.height);\n}\n\nvoid GInteractor::setTooltip(const std::string& tooltipText) {\n    GThread::runOnQtGuiThread([this, tooltipText]() {\n        getWidget()->setToolTip(QString::fromStdString(tooltipText));\n    });\n}\n\nvoid GInteractor::setVisible(bool visible) {\n    // don't allow setting visible to true unless widget is in a container\n    if (!visible || _container) {\n        GThread::runOnQtGuiThread([this, visible]() {\n            getWidget()->setVisible(visible);\n        });\n    }\n}\n\nvoid GInteractor::setWidth(double width) {\n    GThread::runOnQtGuiThread([this, width]() {\n        getWidget()->setFixedWidth((int) width);\n    });\n}\n\nvoid GInteractor::setX(double x) {\n    setLocation(x, getY());\n}\n\nvoid GInteractor::setY(double y) {\n    setLocation(getX(), y);\n}\n\nvoid GInteractor::unlock() {\n    _lock.unlock();\n}\n\nvoid GInteractor::unlockConst() const {\n    GInteractor* that = const_cast<GInteractor*>(this);\n    that->unlock();\n}\n\n\n_Internal_QWidget::_Internal_QWidget()\n        : _minimumSize(-1, -1),\n          _preferredSize(-1, -1) {\n    // empty\n}\n\n_Internal_QWidget::~_Internal_QWidget() {\n    detach();\n}\n\nvoid _Internal_QWidget::detach() {\n    // empty\n}\n\nQSize _Internal_QWidget::getMinimumSize() const {\n    return QSize((int) _minimumSize.width, (int) _minimumSize.height);\n}\n\nbool _Internal_QWidget::hasMinimumSize() const {\n    return _minimumSize.width >= 0 && _minimumSize.height >= 0;\n}\n\nQSize _Internal_QWidget::getPreferredSize() const {\n    return QSize((int) _preferredSize.width, (int) _preferredSize.height);\n}\n\nbool _Internal_QWidget::hasPreferredSize() const {\n    return _preferredSize.width >= 0 && _preferredSize.height >= 0;\n}\n\nvoid _Internal_QWidget::setMinimumSize(double width, double height) {\n    _minimumSize = GDimension(width, height);\n}\n\nvoid _Internal_QWidget::setMinimumSize(const QSize& size) {\n    setMinimumSize(size.width(), size.height());\n}\n\nvoid _Internal_QWidget::setPreferredSize(double width, double height) {\n    _preferredSize = GDimension(width, height);\n}\n\nvoid _Internal_QWidget::setPreferredSize(const QSize& size) {\n    setPreferredSize(size.width(), size.height());\n}\n"
  },
  {
    "path": "Library/graphics/ginteractor.h",
    "content": "/*\n * File: ginteractor.h\n * -------------------\n *\n * @author Marty Stepp\n * @version 2019/04/23\n * - added set/removeActionListener\n * - added set/removeClickListener\n * - added set/removeDoubleClickListener\n * - added set/removeKeyListener\n * - added set/removeMouseListener\n * @version 2019/04/22\n * - added setIcon with QIcon and QPixmap\n * @version 2018/09/20\n * - added read/write lock to avoid race conditions\n * @version 2018/09/05\n * - added getContainer and is/setVisible logic\n * @version 2018/08/23\n * - renamed to ginteractor.h to replace Java version\n * @version 2018/06/25\n * - initial version\n */\n\n\n#ifndef _ginteractor_h\n#define _ginteractor_h\n\n#include <string>\n#include <QReadWriteLock>\n#include <QWidget>\n\n#include \"gevent.h\"\n#include \"gobservable.h\"\n\nclass QPixmap;\nclass QIcon;\n\nclass GContainer;\nclass GDiffGui;\nclass GWindow;\nclass _Internal_QWidget;\n\n/**\n * This abstract class is the superclass for all graphical interactors.\n * In most applications, interactors will be added to a control strip along\n * one of the regions of a GWindow.\n */\nclass GInteractor : public GObservable {\npublic:\n    /**\n     * The places where an interactor can place its text relative to its icon.\n     */\n    enum TextPosition {\n        TEXT_BESIDE_ICON,\n        TEXT_UNDER_ICON,\n        TEXT_ONLY\n    };\n\n    /**\n     * Initializes a newly created interactor.\n     * If the Qt graphical subsystem has not yet been initialized, constructing\n     * an interactor will initialize it.\n     */\n    GInteractor();\n\n    /**\n     * Frees memory allocated internally by the interactor.\n     */\n    virtual ~GInteractor();\n\n    /**\n     * Returns true if this interactor is currently accepting events.\n     * Initially true.\n     * An interactor must be visible and added to an onscreen window to receive events.\n     */\n    bool eventsEnabled() const override;\n\n    /**\n     * Returns a string representing a hotkey for this interactor,\n     * or an empty string if no accelerator has been set.\n     * @return an accelerator such as \"Ctrl-S\"\n     */\n    virtual std::string getAccelerator() const;\n\n    /**\n     * Returns an action command for this interactor,\n     * which is a semi-unique string you can use to identify it when events occur.\n     * For example, for buttons, the default action command is the button's text.\n     */\n    virtual std::string getActionCommand() const;\n\n    /**\n     * Returns the background color of the interactor as a string.\n     * @return a string such as \"blue\" or \"#7700ff\"\n     */\n    virtual std::string getBackground() const;\n\n    /**\n     * Returns the background color of the interactor as an RGB integer.\n     * @return an integer such as 0x7700ff\n     */\n    virtual int getBackgroundInt() const;\n\n    /**\n     * Returns a rectangle representing the x/y position and size of this interactor.\n     */\n    virtual GRectangle getBounds() const;\n\n    /**\n     * Returns the foreground/text color of the interactor as a string.\n     * Equivalent to getForeground.\n     * @return a string such as \"blue\" or \"#7700ff\"\n     */\n    virtual std::string getColor() const;\n\n    /**\n     * Returns the foreground/text color of the interactor as an RGB integer.\n     * Equivalent to getForegroundInt.\n     * @return an integer such as 0x7700ff\n     */\n    virtual int getColorInt() const;\n\n    /**\n     * Returns a pointer to the onscreen container holding this interactor.\n     * When an interactor is created, its container is initially null.\n     * This will become non-null automatically if you add the interactor to\n     * a window or other layout container.\n     * Interactors must be added to a container or window to receive events\n     * or to become visible on the screen.\n     * @return the container, or nullptr if interactor has not yet been\n     *         added to any container\n     */\n    virtual GContainer* getContainer() const;\n\n    /**\n     * Returns the font of this interactor's text as a font string such as\n     * \"Helvetica-12-Bold\".\n     * @return a font string such as \"Helvetica-12-Bold\"\n     */\n    virtual std::string getFont() const;\n\n    /**\n     * Returns the foreground/text color of the interactor as a string.\n     * Equivalent to getColor.\n     * @return a string such as \"blue\" or \"#7700ff\"\n     */\n    virtual std::string getForeground() const;\n\n    /**\n     * Returns the foreground/text color of the interactor as an RGB integer.\n     * Equivalent to getColorInt.\n     * @return an integer such as 0x7700ff\n     */\n    virtual int getForegroundInt() const;\n\n    /**\n     * Returns the current onscreen height of this interactor in pixels.\n     */\n    virtual double getHeight() const;\n\n    /**\n     * Returns a globally unique identifier for this interactor,\n     * which is set when the interactor is constructed.\n     * These IDs can be useful for debugging to help identify interactors uniquely.\n     */\n    virtual int getID() const;\n\n    /**\n     * Returns the file name of the icon associated with this interactor,\n     * or an empty string if no icon has been set.\n     * Not all types of interactors support icons.\n     */\n    virtual std::string getIcon() const;\n\n    /**\n     * Returns a direct pointer to the internal Qt widget being wrapped by this\n     * interactor.  This must be overridden by all interactor subclasses.\n     * Students/clients generally should not need to call this.\n     * @private\n     */\n    virtual _Internal_QWidget* getInternalWidget() const = 0;\n\n    /**\n     * Returns an (x, y) point representing the onscreen location of the top-left\n     * corner of this interactor within its containing window.\n     */\n    virtual GPoint getLocation() const;\n\n    /**\n     * Returns the minimum height in pixels that this interactor will permit\n     * itself to be resized to.\n     */\n    virtual double getMinimumHeight() const;\n\n    /**\n     * Returns a GDimension structure representing the minimum size in pixels\n     * that this interactor will permit itself to be resized to.\n     */\n    virtual GDimension getMinimumSize() const;\n\n    /**\n     * Returns the minimum width in pixels that this interactor will permit\n     * itself to be resized to.\n     */\n    virtual double getMinimumWidth() const;\n\n    /**\n     * Returns a string representing a unique name for this interactor.\n     * The default name string uses the interactor's type and its ID to make\n     * a string like \"GButton_14\", but you can override this by calling setName.\n     * @return a string such as \"GButton_14\"\n     */\n    virtual std::string getName() const;\n\n    /**\n     * Returns the height in pixels that this interactor would prefer to be,\n     * which would exactly fit its contents with no stretching or scrollbars.\n     */\n    virtual double getPreferredHeight() const;\n\n    /**\n     * Returns a GDimension structure storing the width and height in pixels\n     * that this interactor would prefer to be,\n     * which would exactly fit its contents with no stretching or scrollbars.\n     */\n    virtual GDimension getPreferredSize() const;\n\n    /**\n     * Returns the height in pixels that this interactor would prefer to be,\n     * which would exactly fit its contents with no stretching or scrollbars.\n     */\n    virtual double getPreferredWidth() const;\n\n    /**\n     * Returns a GDimension structure storing the current onscreen width and height\n     * of this interactor in pixels.\n     */\n    virtual GDimension getSize() const;\n\n    /**\n     * Returns a string representing the class name of this interactor,\n     * such as \"GButton\" or \"GCheckBox\".\n     * All subclasses of GInteractor must implement this method.\n     * @return a string such as \"GCheckBox\"\n     */\n    std::string getType() const override = 0;\n\n    /**\n     * Returns a direct pointer to the internal Qt widget being wrapped by this\n     * interactor.  This must be overridden by all interactor subclasses.\n     * Students/clients generally should not need to call this.\n     * @private\n     */\n    virtual QWidget* getWidget() const = 0;\n\n    /**\n     * Returns the current onscreen width of this interactor in pixels.\n     */\n    virtual double getWidth() const;\n\n    /**\n     * Returns the x-coordinate of the top-left pixel of this interactor\n     * within its onscreen window.\n     */\n    virtual double getX() const;\n\n    /**\n     * Returns the y-coordinate of the top-left pixel of this interactor\n     * within its onscreen window.\n     */\n    virtual double getY() const;\n\n    /**\n     * Returns true if the given x/y pixel is within the bounds of this interactor.\n     */\n    virtual bool inBounds(double x, double y) const;\n\n    /**\n     * Returns true if the given x/y pixel is within the bounds of this interactor.\n     */\n    virtual bool inBounds(int x, int y) const;\n\n    /**\n     * Returns true if this interactor is currently enabled.\n     * Most interactors begin as enabled but can be disabled to stop them from\n     * being able to be clicked on or otherwise emit events.\n     */\n    virtual bool isEnabled() const;\n\n    /**\n     * Returns true if the interactor is visible on the screen.\n     * Interactors will not be visible until they are added to an onscreen\n     * window or container.\n     */\n    virtual bool isVisible() const;\n\n    /**\n     * Removes the action listener from this interactor so that it will no longer\n     * call it when events occur.\n     */\n    virtual void removeActionListener();\n\n    /**\n     * Removes the click listener from this interactor so that it will no longer\n     * call it when events occur.\n     */\n    virtual void removeClickListener();\n\n    /**\n     * Removes the double-click listener from this interactor so that it will no longer\n     * call it when events occur.\n     */\n    virtual void removeDoubleClickListener();\n\n    /**\n     * Removes the key listener from this interactor so that it will no longer\n     * call it when key events occur.\n     */\n    virtual void removeKeyListener();\n\n    /**\n     * Removes the mouse listener from this interactor so that it will no longer\n     * call it when events occur.\n     */\n    virtual void removeMouseListener();\n\n    /**\n     * Transfers keyboard focus to this interactor.\n     */\n    virtual void requestFocus();\n\n    /**\n     * Sets an accelerator hotkey for this interactor, such as \"Ctrl-S\".\n     * Not all interactor types support accelerators.\n     * @param accelerator a hotkey such as \"Ctrl-S\"\n     */\n    virtual void setAccelerator(const std::string& accelerator);\n\n    /**\n     * Sets the action command for this interactor.\n     * The action command is meant to be a semi-unique string you can use to\n     * identify the interactor when events occur.\n     * For example, for buttons, the default action command is the button's text,\n     * but you can change it to a different string if you prefer.\n     * The main usage of this feature is if you want to use the same function as\n     * an event listener for many interactors, you can use the action command\n     * to help distinguish which interactor generates each event.\n     */\n    virtual void setActionCommand(const std::string& actionCommand);\n\n    /**\n     * Sets an action listener on this interactor so that it will be called\n     * when it is interacted with in its primary way.\n     * For example, if this interactor is a button, this will fire when it is clicked.\n     * Any existing action listener will be replaced.\n     */\n    virtual void setActionListener(GEventListener func);\n\n    /**\n     * Sets an action listener on this interactor so that it will be called\n     * when it is interacted with in its primary way.\n     * For example, if this interactor is a button, this will fire when it is clicked.\n     * Any existing action listener will be replaced.\n     */\n    virtual void setActionListener(GEventListenerVoid func);\n\n    /**\n     * Sets the background color of the interactor to the color represented by\n     * the given RGB integer.\n     * @param rgb an RGB integer such as 0x7700ff\n     */\n    virtual void setBackground(int rgb);\n\n    /**\n     * Sets the background color of the interactor to the color represented by\n     * the given string.\n     * @param color a string such as \"blue\" or \"#7700ff\"\n     */\n    virtual void setBackground(const std::string& color);\n\n    /**\n     * Sets the size and location of the widget.\n     * In general you should avoid explicitly sizing and positioning widgets\n     * in this way; instead, use containers and regions to help you lay out\n     * widgets at the proper sizes.\n     */\n    virtual void setBounds(double x, double y, double width, double height);\n\n    /**\n     * Sets the size and location of the widget.\n     * In general you should avoid explicitly sizing and positioning widgets\n     * in this way; instead, use containers and regions to help you lay out\n     * widgets at the proper sizes.\n     */\n    virtual void setBounds(const GRectangle& size);\n\n    /**\n     * Sets a mouse listener on this interactor so that it will be called\n     * when the mouse is clicked on it.\n     * Any existing click listener will be replaced.\n     */\n    virtual void setClickListener(GEventListener func);\n\n    /**\n     * Sets a mouse listener on this interactor so that it will be called\n     * when the mouse is clicked on it.\n     * Any existing click listener will be replaced.\n     */\n    virtual void setClickListener(GEventListenerVoid func);\n\n    /**\n     * Sets the foreground/text color of the interactor to the color represented by\n     * the given RGB integer.\n     * Equivalent to setForeground.\n     * @param rgb an RGB integer such as 0x7700ff\n     */\n    virtual void setColor(int rgb);\n\n    /**\n     * Sets the foreground/text color of the interactor to the color represented by\n     * the given string.\n     * Equivalent to setForeground.\n     * @param color a string such as \"blue\" or \"#7700ff\"\n     */\n    virtual void setColor(const std::string& color);\n\n    /**\n     * Sets a mouse listener on this interactor so that it will be called\n     * when the mouse is double-clicked on it.\n     * Any existing double-click listener will be replaced.\n     */\n    virtual void setDoubleClickListener(GEventListener func);\n\n    /**\n     * Sets a mouse listener on this interactor so that it will be called\n     * when the mouse is double-clicked on it.\n     * Any existing double-click listener will be replaced.\n     */\n    virtual void setDoubleClickListener(GEventListenerVoid func);\n\n    /**\n     * Sets whether this interactor is currently enabled.\n     * Most interactors begin as enabled but can be disabled to stop them from\n     * being able to be clicked on or otherwise emit events.\n     */\n    virtual void setEnabled(bool value);\n\n    /**\n     * Sets the font used by this widget to the given Qt font.\n     * Clients should generally use the string version of this method.\n     */\n    virtual void setFont(const QFont& font);\n\n    /**\n     * Sets the font used by this widget to the font represented by the\n     * given font string, such as \"Helvetica-16-Bold\".\n     * @param font a font string such as \"Helvetica-16-Bold\"\n     */\n    virtual void setFont(const std::string& font);\n\n    /**\n     * Sets the foreground/text color of the interactor to the color represented by\n     * the given RGB integer.\n     * Equivalent to setColor.\n     * @param rgb an RGB integer such as 0x7700ff\n     */\n    virtual void setForeground(int rgb);\n\n    /**\n     * Sets the foreground/text color of the interactor to the color represented by\n     * the given string.\n     * Equivalent to setColor.\n     * @param color a string such as \"blue\" or \"#7700ff\"\n     */\n    virtual void setForeground(const std::string& color);\n\n    /**\n     * Sets the onscreen height of the interactor in pixels.\n     * @throw ErrorException if height is negative\n     */\n    virtual void setHeight(double height);\n\n    /**\n     * Sets the icon associated with this interactor.\n     * Not all types of interactors support icons.\n     * @param icon the icon to use\n     */\n    virtual void setIcon(const QIcon& icon);\n\n    /**\n     * Sets the icon associated with this interactor.\n     * Not all types of interactors support icons.\n     * @param icon the icon to use\n     */\n    virtual void setIcon(const QPixmap& icon);\n\n    /**\n     * Sets the file name of the icon associated with this interactor,\n     * or an empty string if no icon has been set.\n     * Not all types of interactors support icons.\n     * @param filename icon file path to use\n     * @param retainIconSize true if icon should stay at its existing pixel size (default),\n     *                       or false if it should be resized to fit the interactor\n     */\n    virtual void setIcon(const std::string& filename, bool retainIconSize = true);\n\n    /**\n     * Sets a key listener on this interactor so that it will be called\n     * when the user presses any key.\n     * Any existing key listener will be replaced.\n     */\n    virtual void setKeyListener(GEventListener func);\n\n    /**\n     * Sets a key listener on this interactor so that it will be called\n     * when the user presses any key.\n     * Any existing key listener will be replaced.\n     */\n    virtual void setKeyListener(GEventListenerVoid func);\n\n    /**\n     * Sets the onscreen x/y-coordinate of the top-left corner of the interactor\n     * relative to its window.\n     * Generally clients should not call this and should instead use containers\n     * and layout regions to position interactors.\n     */\n    virtual void setLocation(double x, double y);\n\n    /**\n     * Sets the minimum size in pixels that this interactor will permit itself\n     * to be resized to.\n     * @throw ErrorException if width or height is negative\n     */\n    virtual void setMinimumSize(double width, double height);\n\n    /**\n     * Sets the minimum size in pixels that this interactor will permit itself\n     * to be resized to.\n     * @throw ErrorException if width or height is negative\n     */\n    virtual void setMinimumSize(const GDimension& size);\n\n    /**\n     * Sets a mouse listener on this interactor so that it will be called\n     * when the mouse is moved or clicked on it.\n     * Any existing mouse listener will be replaced.\n     */\n    virtual void setMouseListener(GEventListener func);\n\n    /**\n     * Sets a mouse listener on this interactor so that it will be called\n     * when the mouse is moved or clicked on it.\n     * Any existing mouse listener will be replaced.\n     */\n    virtual void setMouseListener(GEventListenerVoid func);\n\n    /**\n     * Sets a string representing a unique name for this interactor.\n     * The default name string uses the interactor's type and its ID to make\n     * a string like \"GButton_14\", but you can override this by calling setName.\n     * @param name a string such as \"GButton_14\"\n     */\n    virtual void setName(const std::string& name);\n\n    /**\n     * Sets the height in pixels that this interactor would prefer to be.\n     * Normally clients do not need to call this method; the interactor can\n     * figure out its own preferred size.\n     * But calling it can help you to hint to the container/layout system if\n     * you want a given interactor to \"prefer\" to make itself larger or smaller\n     * for the purposes of your particular program.\n     */\n    virtual void setPreferredHeight(double height);\n\n    /**\n     * Sets the width and height in pixels that this interactor would prefer to be.\n     * Normally clients do not need to call this method; the interactor can\n     * figure out its own preferred size.\n     * But calling it can help you to hint to the container/layout system if\n     * you want a given interactor to \"prefer\" to make itself larger or smaller\n     * for the purposes of your particular program.\n     */\n    virtual void setPreferredSize(double width, double height);\n\n\n    /**\n     * Sets the size in pixels that this interactor would prefer to be.\n     * Normally clients do not need to call this method; the interactor can\n     * figure out its own preferred size.\n     */\n    virtual void setPreferredSize(const GDimension& size);\n\n\n    /**\n     * Sets the width in pixels that this interactor would prefer to be.\n     * Normally clients do not need to call this method; the interactor can\n     * figure out its own preferred size.\n     */\n    virtual void setPreferredWidth(double width);\n\n    /**\n     * Sets the onscreen width and height of the interactor in pixels.\n     * @throw ErrorException if width or height is negative\n     */\n    virtual void setSize(double width, double height);\n\n    /**\n     * Sets the onscreen width and height of the interactor in pixels.\n     * @throw ErrorException if width or height is negative\n     */\n    virtual void setSize(const GDimension& size);\n\n    /**\n     * Sets a \"tooltip\" that will appear if the user hovers their mouse\n     * over the interactor.\n     * Set an empty string to clear the tooltip.\n     */\n    virtual void setTooltip(const std::string& tooltipText);\n\n    /**\n     * Returns true if the interactor is visible on the screen.\n     * Interactors will not be visible until they are added to an onscreen\n     * window or container.\n     * If you call setVisible on an interactor that is not in any onscreen\n     * container, it will have no effect.\n     */\n    virtual void setVisible(bool visible);\n\n    /**\n     * Sets the onscreen width of the interactor in pixels.\n     * @throw ErrorException if width is negative\n     */\n    virtual void setWidth(double width);\n\n    /**\n     * Sets the onscreen x-coordinate of the top-left corner of the interactor\n     * relative to its window.\n     * Generally clients should not call this and should instead use containers\n     * and layout regions to position interactors.\n     */\n    virtual void setX(double x);\n\n    /**\n     * Sets the onscreen y-coordinate of the top-left corner of the interactor\n     * relative to its window.\n     * Generally clients should not call this and should instead use containers\n     * and layout regions to position interactors.\n     */\n    virtual void setY(double y);\n\nprotected:\n    /**\n     * @private\n     */\n    std::string _actionCommand;\n\n    /**\n     * @private\n     */\n    std::string _actionEventType;\n\n    /**\n     * @private\n     */\n    std::string _icon;\n\n    /**\n     * @private\n     */\n    std::string _name;\n\n    /**\n     * @private\n     */\n    int _id;\n\n    /**\n     * @private\n     */\n    GContainer* _container;\n\n    /**\n     * @private\n     */\n    QReadWriteLock _lock;    // avoid thread race conditions\n\n    /**\n     * @private\n     */\n    static QWidget* getInternalParent(QWidget* parent);\n\n    /**\n     * @private\n     */\n    virtual std::string getActionEventType() const;\n\n    /**\n     * @private\n     */\n    virtual std::string getDefaultInteractorName() const;\n\n    /**\n     * @private\n     */\n    virtual void lockForRead();\n\n    /**\n     * @private\n     */\n    virtual void lockForReadConst() const;\n\n    /**\n     * @private\n     */\n    virtual void lockForWrite();\n\n    /**\n     * @private\n     */\n    virtual void lockForWriteConst() const;\n\n    /**\n     * @private\n     */\n    static std::string normalizeAccelerator(const std::string& accelerator);\n\n    /**\n     * @private\n     */\n    virtual void setContainer(GContainer* container);\n\n    /**\n     * @private\n     */\n    virtual void unlock();\n\n    /**\n     * @private\n     */\n    virtual void unlockConst() const;\n\n    friend class GContainer;\n    friend class GDiffGui;\n    friend class GWindow;\n    friend class _Internal_QWidget;\n\nprivate:\n    static int _interactorCount;\n};\n\n\n/**\n * A class representing internal Qt widgets that are wrapped inside of\n * GInteractor objects.\n * Every GInteractor subclass must define a class that is a subclass of\n * _Internal_QWidget to be wrapped by that interactor.\n * @private\n */\nclass _Internal_QWidget {\npublic:\n    _Internal_QWidget();\n    virtual ~_Internal_QWidget();\n    virtual void detach();\n    virtual QSize getMinimumSize() const;\n    virtual bool hasMinimumSize() const;\n    virtual QSize getPreferredSize() const;\n    virtual bool hasPreferredSize() const;\n    virtual void setMinimumSize(double width, double height);\n    virtual void setMinimumSize(const QSize& size);\n    virtual void setPreferredSize(double width, double height);\n    virtual void setPreferredSize(const QSize& size);\n\nprivate:\n    GDimension _minimumSize;\n    GDimension _preferredSize;\n\n    friend class GInteractor;\n};\n\n/**\n * A generic simple GInteractor that wraps any Qt QWidget you pass it.\n * This is meant to make the library extensible and allow you to wrap other\n * Qt widgets that were not built into the original library.\n * @private\n */\ntemplate <typename T>\nclass GGenericInteractor : public GInteractor {\npublic:\n    GGenericInteractor(T* widget)\n            : _widget(widget) {\n        _iqwidget = new _Internal_QWidget();   // dummy\n    }\n\n    _Internal_QWidget* getInternalWidget() const override {\n        return _iqwidget;\n    }\n\n    std::string getType() const override {\n        std::string typeName = typeid(T).name();\n        return std::string(\"GGenericInteractor<\") + typeName + \">\";\n    }\n\n    QWidget* getWidget() const override {\n        return _widget;\n    }\n\nprivate:\n    _Internal_QWidget* _iqwidget;\n    T* _widget;\n};\n\n#endif // _ginteractor_h\n"
  },
  {
    "path": "Library/graphics/ginteractors.h",
    "content": "/*\n * File: ginteractors.h\n * ---------------------\n *\n * This file serves as a convenient way to include all Qt-based graphical\n * interactors in your project with a single include statement.\n *\n * @author Marty Stepp\n * @version 2018/08/23\n * - renamed to ginteractors.h to replace Java version\n * @version 2018/07/04\n * - initial version\n */\n\n\n#ifndef _ginteractors_h\n#define _ginteractors_h\n\n#include \"gbrowserpane.h\"\n#include \"gbutton.h\"\n#include \"gcanvas.h\"\n#include \"gcheckbox.h\"\n#include \"gchooser.h\"\n#include \"gcolor.h\"\n#include \"gcontainer.h\"\n#include \"gfilechooser.h\"\n#include \"gfont.h\"\n#include \"ginteractor.h\"\n#include \"glabel.h\"\n#include \"goptionpane.h\"\n#include \"gradiobutton.h\"\n#include \"gscrollbar.h\"\n#include \"gscrollpane.h\"\n#include \"gslider.h\"\n#include \"gspacer.h\"\n#include \"gtable.h\"\n#include \"gtextarea.h\"\n#include \"gtextfield.h\"\n#include \"gwindow.h\"\n\n\n#endif // _ginteractors_h\n"
  },
  {
    "path": "Library/graphics/glabel.cpp",
    "content": "/*\n * File: glabel.cpp\n * ----------------\n *\n * @author Marty Stepp\n * @version 2019/04/23\n * - moved some event-handling code to GInteractor superclass\n * @version 2019/04/22\n * - added setIcon with QIcon and QPixmap\n * @version 2019/02/02\n * - destructor now stops event processing\n * @version 2018/10/04\n * - added get/setWordWrap\n * @version 2018/09/04\n * - added double-click event support\n * @version 2018/09/03\n * - added addActionListener methods for clickable labels\n * @version 2018/08/23\n * - renamed to glabel.cpp to replace Java version\n * @version 2018/06/25\n * - initial version\n */\n\n#include \"glabel.h\"\n#include <QIcon>\n#include <iostream>\n#include \"filelib.h\"\n#include \"glayout.h\"\n#include \"gthread.h\"\n#include \"require.h\"\n\nGLabel::GLabel(const std::string& text, const std::string& iconFileName, QWidget* parent)\n        : _gtext(nullptr) {\n    GThread::runOnQtGuiThread([this, parent]() {\n        _iqlabel = new _Internal_QLabel(this, getInternalParent(parent));\n    });\n    setText(text);\n    if (!iconFileName.empty()) {\n        setIcon(iconFileName);\n    }\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGLabel::GLabel(const std::string& text, const QIcon& icon, QWidget* parent)\n        : _gtext(nullptr) {\n    GThread::runOnQtGuiThread([this, parent]() {\n        _iqlabel = new _Internal_QLabel(this, getInternalParent(parent));\n    });\n    setText(text);\n    setIcon(icon);\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGLabel::GLabel(const std::string& text, const QPixmap& icon, QWidget* parent)\n        : _gtext(nullptr) {\n    GThread::runOnQtGuiThread([this, parent]() {\n        _iqlabel = new _Internal_QLabel(this, getInternalParent(parent));\n    });\n    setText(text);\n    setIcon(icon);\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGLabel::~GLabel() {\n    // TODO: if (_gtext) { delete _gtext; }\n    // TODO: delete _iqlabel;\n    _iqlabel->detach();\n    _iqlabel = nullptr;\n}\n\nvoid GLabel::ensureGText() {\n    _gtext = new GText(getText());\n    _gtext->setColor(getColor());\n    _gtext->setFont(getFont());\n}\n\nGText* GLabel::getGText() const {\n    return _gtext;\n}\n\n_Internal_QWidget* GLabel::getInternalWidget() const {\n    return _iqlabel;\n}\n\nstd::string GLabel::getLabel() const {\n    return getText();\n}\n\nstd::string GLabel::getText() const {\n    return _iqlabel->text().toStdString();\n}\n\nGInteractor::TextPosition GLabel::getTextPosition() const {\n    // TODO\n//    switch (_iqlabel->toolButtonStyle()) {\n//    case Qt::ToolButtonTextBesideIcon:\n//        return GInteractor::TEXT_BESIDE_ICON;\n//    case Qt::ToolButtonTextUnderIcon:\n//        return GInteractor::TEXT_UNDER_ICON;\n//    case Qt::ToolButtonTextOnly:\n//    default:\n//        return GInteractor::TEXT_ONLY;\n//    }\n\n    return GInteractor::TEXT_BESIDE_ICON;\n}\n\nstd::string GLabel::getType() const {\n    return \"GLabel\";\n}\n\nQWidget* GLabel::getWidget() const {\n    return static_cast<QWidget*>(_iqlabel);\n}\n\nbool GLabel::hasGText() const {\n    return _gtext != nullptr;\n}\n\nbool GLabel::isWordWrap() const {\n    return _iqlabel->wordWrap();\n}\n\nvoid GLabel::setBounds(double x, double y, double width, double height) {\n    if (_gtext) {\n        _gtext->setBounds(x, y, width, height);\n    }\n    GInteractor::setBounds(x, y, width, height);\n}\n\nvoid GLabel::setBounds(const GRectangle& size) {\n    if (_gtext) {\n        _gtext->setBounds(size);\n    }\n    GInteractor::setBounds(size);\n}\n\nvoid GLabel::setColor(int rgb) {\n    if (_gtext) {\n        _gtext->setColor(rgb);\n    }\n    GInteractor::setColor(rgb);   // call super\n}\n\nvoid GLabel::setColor(const std::string& color) {\n    if (_gtext) {\n        _gtext->setColor(color);\n    }\n    GInteractor::setColor(color);   // call super\n}\n\nvoid GLabel::setFont(const QFont& font) {\n    if (_gtext) {\n        _gtext->setFont(font);\n    }\n    GInteractor::setFont(font);   // call super\n}\n\nvoid GLabel::setFont(const std::string& font) {\n    if (_gtext) {\n        _gtext->setFont(font);\n    }\n    GInteractor::setFont(font);   // call super\n}\n\nvoid GLabel::setForeground(int rgb) {\n    if (_gtext) {\n        _gtext->setForeground(rgb);\n    }\n    GInteractor::setForeground(rgb);   // call super\n}\n\nvoid GLabel::setForeground(const std::string& color) {\n    if (_gtext) {\n        _gtext->setForeground(color);\n    }\n    GInteractor::setForeground(color);   // call super\n}\n\nvoid GLabel::setHeight(double height) {\n    ensureGText();   // setting size triggers GText mode\n    _gtext->setHeight(height);\n    GInteractor::setHeight(height);\n}\n\nvoid GLabel::setIcon(const QIcon& icon) {\n    GInteractor::setIcon(icon);\n    GThread::runOnQtGuiThread([this, &icon]() {\n        QSize size(16, 16);   // default size\n        if (!icon.availableSizes().empty()) {\n            size = icon.availableSizes()[0];\n        }\n        QPixmap pixmap = icon.pixmap(size);\n        _iqlabel->setPixmap(pixmap);\n        _iqlabel->updateGeometry();\n        _iqlabel->update();\n\n        // TODO: loses text; how to have both icon and text in same label?\n        if (!getText().empty()) {\n            std::cerr << \"Warning: a GLabel cannot currently have both text and icon.\" << std::endl;\n        }\n    });\n}\n\nvoid GLabel::setIcon(const QPixmap& icon) {\n    GInteractor::setIcon(icon);\n    GThread::runOnQtGuiThread([this, &icon]() {\n        _iqlabel->setPixmap(icon);\n        _iqlabel->updateGeometry();\n        _iqlabel->update();\n\n        // TODO: loses text; how to have both icon and text in same label?\n        if (!getText().empty()) {\n            std::cerr << \"Warning: a GLabel cannot currently have both text and icon.\" << std::endl;\n        }\n    });\n}\n\nvoid GLabel::setIcon(const std::string& filename, bool retainIconSize) {\n    GInteractor::setIcon(filename, retainIconSize);\n    if (!filename.empty() && fileExists(filename)) {\n        GThread::runOnQtGuiThread([this, filename, retainIconSize]() {\n            if (filename.empty()) {\n                _iqlabel->setPixmap(QPixmap());\n            } else {\n                QPixmap pixmap(QString::fromStdString(filename));\n                _iqlabel->setPixmap(pixmap);\n                if (retainIconSize) {\n                    // TODO\n                    // _iqlabel->setIconSize(pixmap.size());\n                    _iqlabel->updateGeometry();\n                    _iqlabel->update();\n                }\n\n                // TODO: loses text; how to have both icon and text in same label?\n                if (!getText().empty()) {\n                    std::cerr << \"Warning: a GLabel cannot currently have both text and icon.\" << std::endl;\n                }\n            }\n        });\n    }\n}\n\nvoid GLabel::setLabel(const std::string& text) {\n    setText(text);\n}\n\nvoid GLabel::setLocation(double x, double y) {\n    ensureGText();   // setting location triggers GText mode\n    _gtext->setLocation(x, y);\n    GInteractor::setLocation(x, y);\n}\n\nvoid GLabel::setSize(double width, double height) {\n    ensureGText();   // setting size triggers GText mode\n    _gtext->setSize(width, height);\n    GInteractor::setSize(width, height);\n}\n\nvoid GLabel::setSize(const GDimension& size) {\n    ensureGText();   // setting size triggers GText mode\n    _gtext->setSize(size);\n    GInteractor::setSize(size);\n}\n\nvoid GLabel::setText(const std::string& text) {\n    if (_gtext) {\n        _gtext->setText(text);\n    }\n    GThread::runOnQtGuiThread([this, text]() {\n        _iqlabel->setText(QString::fromStdString(text));\n        GLayout::forceUpdate(_iqlabel);\n    });\n}\n\nvoid GLabel::setTextPosition(GInteractor::TextPosition position) {\n    // TODO: doesn't really work because a label can't have both text and icon in Qt\n    if (position == GInteractor::TEXT_UNDER_ICON) {\n        // _iqpushbutton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);\n    } else if (position == GInteractor::TEXT_BESIDE_ICON) {\n        // _iqpushbutton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);\n    } else if (position == GInteractor::TEXT_ONLY) {\n        // _iqpushbutton->setToolButtonStyle(Qt::ToolButtonTextOnly);\n    }\n}\n\nvoid GLabel::setVisible(bool visible) {\n    if (_gtext) {\n        _gtext->setVisible(visible);\n    }\n    GInteractor::setVisible(visible);   // call super\n}\n\nvoid GLabel::setWidth(double width) {\n    ensureGText();   // setting size triggers GText mode\n    _gtext->setWidth(width);\n    GInteractor::setWidth(width);\n}\n\nvoid GLabel::setWordWrap(bool wrap) {\n    GThread::runOnQtGuiThread([this, wrap]() {\n        _iqlabel->setWordWrap(wrap);\n    });\n}\n\nvoid GLabel::setX(double x) {\n    ensureGText();   // setting location triggers GText mode\n    _gtext->setX(x);\n    GInteractor::setX(x);\n}\n\nvoid GLabel::setY(double y) {\n    ensureGText();   // setting location triggers GText mode\n    _gtext->setY(y);\n    GInteractor::setY(y);\n}\n\n\n_Internal_QLabel::_Internal_QLabel(GLabel* glabel, QWidget* parent)\n        : QLabel(parent),\n          _glabel(glabel) {\n    require::nonNull(glabel, \"_Internal_QLabel::constructor\");\n    setObjectName(QString::fromStdString(\"_Internal_QLabel_\" + std::to_string(glabel->getID())));\n}\n\nvoid _Internal_QLabel::detach() {\n    _glabel = nullptr;\n}\n\nvoid _Internal_QLabel::mouseDoubleClickEvent(QMouseEvent* event) {\n    require::nonNull(event, \"_Internal_QLabel::mouseDoubleClickEvent\", \"event\");\n    QWidget::mouseDoubleClickEvent(event);   // call super\n    if (!_glabel) {\n        return;\n    }\n    emit doubleClicked();\n    if (!_glabel->isAcceptingEvent(\"doubleclick\")) {\n        return;\n    }\n    GEvent mouseEvent(\n                /* class  */ MOUSE_EVENT,\n                /* type   */ MOUSE_DOUBLE_CLICKED,\n                /* name   */ \"doubleclick\",\n                /* source */ _glabel);\n    mouseEvent.setActionCommand(_glabel->getActionCommand());\n    mouseEvent.setButton((int) event->button());\n    mouseEvent.setX(event->pos().x());\n    mouseEvent.setY(event->pos().y());\n    _glabel->fireEvent(mouseEvent);\n}\n\nvoid _Internal_QLabel::mousePressEvent(QMouseEvent* event) {\n    require::nonNull(event, \"_Internal_QLabel::mousePressEvent\", \"event\");\n    QWidget::mousePressEvent(event);   // call super\n    if (!_glabel) {\n        return;\n    }\n\n    // fire the signal/event only for left-clicks\n    if (!(event->button() & Qt::LeftButton)) {\n        return;\n    }\n\n    emit clicked();\n\n    if (!_glabel->isAcceptingEvent(\"click\")) {\n        return;\n    }\n\n    GEvent actionEvent(\n                /* class  */ ACTION_EVENT,\n                /* type   */ ACTION_PERFORMED,\n                /* name   */ \"click\",\n                /* source */ _glabel);\n    actionEvent.setActionCommand(_glabel->getActionCommand());\n    actionEvent.setButton((int) event->button());\n    actionEvent.setX(event->pos().x());\n    actionEvent.setY(event->pos().y());\n    _glabel->fireEvent(actionEvent);\n}\n\nQSize _Internal_QLabel::sizeHint() const {\n    if (hasPreferredSize()) {\n        return getPreferredSize();\n    } else {\n        return QLabel::sizeHint();\n    }\n}\n\n\n"
  },
  {
    "path": "Library/graphics/glabel.h",
    "content": "/*\n * File: glabel.h\n * --------------\n *\n * @author Marty Stepp\n * @version 2019/04/23\n * - moved some event-handling code to GInteractor superclass\n * @version 2019/04/22\n * - added setIcon with QIcon and QPixmap\n * @version 2018/10/04\n * - added get/setWordWrap\n * @version 2018/09/07\n * - added doc comments for new documentation generation\n * @version 2018/09/04\n * - added double-click event support\n * @version 2018/09/03\n * - added addActionListener methods for clickable labels\n * @version 2018/08/23\n * - renamed to glabel.h to replace Java version\n * @version 2018/06/25\n * - initial version\n */\n\n\n#ifndef _glabel_h\n#define _glabel_h\n\n#include <string>\n#include <QLabel>\n\n#include \"ginteractor.h\"\n#include \"gobjects.h\"\n\n// forward declaration\nclass _Internal_QLabel;\nclass GWindow;\n\n/**\n * A GLabel represents a text string.\n * A label can contain text and/or an image icon.\n *\n * GLabels can be made clickable by setting an action, click, or double-click\n * listener, but generally if you want a clickable interactor with text on it,\n * you may prefer a GButton.\n */\nclass GLabel : public GInteractor {\npublic:\n    /**\n     * Creates a label with the specified text label and optional icon.\n     */\n    GLabel(const std::string& text = \"\", const std::string& iconFileName = \"\", QWidget* parent = nullptr);\n\n    /**\n     * Creates a label with the specified text label and icon.\n     */\n    GLabel(const std::string& text, const QIcon& icon, QWidget* parent = nullptr);\n\n    /**\n     * Creates a label with the specified text label and icon.\n     */\n    GLabel(const std::string& text, const QPixmap& icon, QWidget* parent = nullptr);\n\n    /**\n     * Frees memory allocated internally by the label.\n     */\n    ~GLabel() override;\n\n    /* @inherit */\n    _Internal_QWidget* getInternalWidget() const override;\n\n    /**\n     * Returns the string displayed by the label.\n     * Equivalent to getText.\n     */\n    virtual std::string getLabel() const;\n\n    /**\n     * Returns the string displayed by the label.\n     * Equivalent to getLabel.\n     */\n    virtual std::string getText() const;\n\n    /**\n     * Returns the label's text position relative to its icon.\n     * The default is TEXT_BESIDE_ICON, but it can be changed to TEXT_UNDER_ICON\n     * by calling the setTextPosition method.\n     */\n    virtual GInteractor::TextPosition getTextPosition() const;\n\n    /* @inherit */\n    std::string getType() const override;\n\n    /* @inherit */\n    QWidget* getWidget() const override;\n\n    /**\n     * Returns whether the label should wrap if its text is too long.\n     * Default false.\n     */\n    virtual bool isWordWrap() const;\n\n    /* @inherit */\n    void setBounds(double x, double y, double width, double height) override;\n\n    /* @inherit */\n    void setBounds(const GRectangle& size) override;\n\n    /* @inherit */\n    void setColor(int rgb) override;\n\n    /* @inherit */\n    void setColor(const std::string& color) override;\n\n    /* @inherit */\n    void setFont(const QFont& font) override;\n\n    /* @inherit */\n    void setFont(const std::string& font) override;\n\n    /* @inherit */\n    void setForeground(int rgb) override;\n\n    /* @inherit */\n    void setForeground(const std::string& color) override;\n\n    /* @inherit */\n    void setHeight(double height) override;\n\n    /* @inherit */\n    void setIcon(const QIcon& icon) override;\n\n    /* @inherit */\n    void setIcon(const QPixmap& icon) override;\n\n    /* @inherit */\n    void setIcon(const std::string& filename, bool retainIconSize = true) override;\n\n    /**\n     * Sets the text on the label to be the given text.\n     * Equivalent to setText.\n     */\n    virtual void setLabel(const std::string& text);\n\n    /* @inherit */\n    void setLocation(double x, double y) override;\n\n    /* @inherit */\n    void setSize(double width, double height) override;\n\n    /* @inherit */\n    void setSize(const GDimension& size) override;\n\n    /**\n     * Sets the text on the label to be the given text.\n     * Equivalent to setLabel.\n     */\n    virtual void setText(const std::string& text);\n\n    /**\n     * Sets the label's text position relative to its icon.\n     * The default is TEXT_BESIDE_ICON, but it can be changed to TEXT_UNDER_ICON.\n     */\n    virtual void setTextPosition(GInteractor::TextPosition position);\n\n    /* @inherit */\n    void setVisible(bool visible) override;\n\n    /* @inherit */\n    void setWidth(double width) override;\n\n    /**\n     * Sets whether the label should wrap if its text is too long.\n     * Default false.\n     */\n    virtual void setWordWrap(bool wrap);\n\n    /* @inherit */\n    void setX(double x) override;\n\n    /* @inherit */\n    void setY(double y) override;\n\nprivate:\n    Q_DISABLE_COPY(GLabel)\n    _Internal_QLabel* _iqlabel;\n    GText* _gtext;\n\n    void ensureGText();\n    GText* getGText() const;\n    bool hasGText() const;\n\n    friend class _Internal_QLabel;\n    friend class GWindow;\n};\n\n// alias GTextLabel for GLabel for backward compatibility\ntypedef GLabel GTextLabel;\n\n\n/**\n * Internal class; not to be used by clients.\n * @private\n */\nclass _Internal_QLabel : public QLabel, public _Internal_QWidget {\n    Q_OBJECT\n\npublic:\n    _Internal_QLabel(GLabel* glabel, QWidget* parent = nullptr);\n    void detach() override;\n    QSize sizeHint() const override;\n\nsignals:\n    void clicked();\n    void doubleClicked();\n\nprotected:\n    void mouseDoubleClickEvent(QMouseEvent* e) override;\n    void mousePressEvent(QMouseEvent* event) override;\n\nprivate:\n    GLabel* _glabel;\n\n    friend class GLabel;\n};\n\n#endif // _glabel_h\n"
  },
  {
    "path": "Library/graphics/glayout.cpp",
    "content": "/*\n * File: glayout.cpp\n * -----------------\n *\n * @author Marty Stepp\n * @version 2018/08/23\n * - renamed to glayout.cpp to replace Java version\n * @version 2018/06/25\n * - initial version\n */\n\n#include \"glayout.h\"\n#include \"require.h\"\n#include \"strlib.h\"\n\nGLayout::GLayout() {\n    // empty\n}\n\nvoid GLayout::clearLayout(QLayout* layout) {\n    if (!layout) {\n        return;\n    }\n\n    // http://doc.qt.io/qt-5/qlayout.html#takeAt\n    QLayoutItem* child;\n    while ((child = layout->takeAt(0))) {\n        // TODO: delete child;\n    }\n    layout->update();\n}\n\nbool GLayout::contains(QLayout* layout, QWidget* widget) {\n    if (!layout || !widget) {\n        return false;\n    }\n\n    for (int i = 0; i < layout->count(); i++) {\n        QLayoutItem* child = layout->itemAt(i);\n        QWidget* childWidget = child->widget();\n        if (childWidget == widget) {\n            return true;\n        }\n    }\n\n    return false;\n}\n\nvoid GLayout::forceUpdate(GInteractor* interactor) {\n    if (interactor) {\n        forceUpdate(interactor->getWidget());\n    }\n}\n\n/**\n * Forces the given widget to update, even if it's hidden.\n * from https://stackoverflow.com/questions/2427103/qt-how-to-force-a-hidden-widget-to-calculate-its-layout\n */\nvoid GLayout::forceUpdate(QWidget* widget) {\n    if (!widget) {\n        return;\n    }\n\n    // Update all child widgets.\n    for (int i = 0; i < widget->children().size(); i++) {\n        QObject* child = widget->children()[i];\n        if (child->isWidgetType()) {\n            forceUpdate((QWidget*) child);\n        }\n    }\n\n    widget->updateGeometry();\n    widget->update();\n\n    // Invalidate the layout of the widget.\n    if (widget->layout()) {\n        invalidateLayout(widget->layout());\n    }\n\n    widget->setAttribute(Qt::WA_DontShowOnScreen, true);   // TODO: remove?\n    widget->setAttribute(Qt::WA_DontShowOnScreen, false);\n    widget->show();\n}\n\nQSize GLayout::getPreferredSize(QWidget* widget) {\n    require::nonNull(widget, \"GLayout::getPreferredSize\", \"widget\");\n    QRect geom = widget->geometry();\n    QSize hint = widget->sizeHint();\n    int height = hint.height() > 0 ? hint.height() : geom.height();\n    int width = hint.width() > 0 ? hint.width() : geom.width();\n    return QSize(width, height);\n}\n\nQSize GLayout::getProperSize(QLayout* layout) {\n    require::nonNull(layout, \"GLayout::getProperSize\", \"layout\");\n    QRect geom = layout->geometry();\n    QSize hint = layout->sizeHint();\n    int height = geom.height() > 0 ? geom.height() : hint.height();\n    int width = geom.width() > 0 ? geom.width() : hint.width();\n    return QSize(width, height);\n}\n\nQSize GLayout::getProperSize(QWidget* widget) {\n    require::nonNull(widget, \"GLayout::getProperSize\", \"widget\");\n    QRect geom = widget->geometry();\n    QSize hint = widget->sizeHint();\n    int height = geom.height() > 0 ? geom.height() : hint.height();\n    int width = geom.width() > 0 ? geom.width() : hint.width();\n    return QSize(width, height);\n}\n\n/**\n * Helper function for forceUpdate(). Not self-sufficient!\n * from https://stackoverflow.com/questions/2427103/qt-how-to-force-a-hidden-widget-to-calculate-its-layout\n */\nvoid GLayout::invalidateLayout(QLayout* layout) {\n    if (!layout) {\n        return;\n    }\n\n    // Recompute the given layout and all its child layouts.\n    for (int i = 0; i < layout->count(); i++) {\n        QLayoutItem* item = layout->itemAt(i);\n        if (item->layout()) {\n            invalidateLayout(item->layout());\n        } else {\n            item->invalidate();\n        }\n    }\n    layout->invalidate();\n    layout->activate();\n}\n\nGLayout::Position GLayout::toPosition(const std::string& positionName) {\n    std::string regionU = toUpperCase(positionName);\n    if (regionU == \"NORTH\" || regionU == \"TOP\") {\n        return GLayout::North;\n    } else if (regionU == \"SOUTH\" || regionU == \"BOTTOM\") {\n        return GLayout::South;\n    } else if (regionU == \"EAST\" || regionU == \"RIGHT\") {\n        return GLayout::East;\n    } else if (regionU == \"WEST\" || regionU == \"LEFT\") {\n        return GLayout::West;\n    } else {\n        // \"CENTER\" or \"MIDDLE\" or \"NONE\"\n        return GLayout::Center;\n    }\n}\n\nGBorderLayout::GBorderLayout(QWidget* parent, int margin, int spacing)\n        : QLayout(parent) {\n    setContentsMargins(margin,margin,margin,margin);\n    setSpacing(spacing);\n}\n\nGBorderLayout::GBorderLayout(int spacing) {\n    setSpacing(spacing);\n}\n\nGBorderLayout::~GBorderLayout() {\n    QLayoutItem* l;\n    while ((l = takeAt(0))) {\n        delete l;\n    }\n}\n\nvoid GBorderLayout::addItem(QLayoutItem* item) {\n    require::nonNull(item, \"GBorderLayout::addItem\");\n    add(item, GLayout::North);\n}\n\nvoid GBorderLayout::addWidget(QWidget* widget) {\n    addWidget(widget, GLayout::Center);\n}\n\nvoid GBorderLayout::addWidget(QWidget* widget, GLayout::Position position) {\n    require::nonNull(widget, \"GBorderLayout::addWidget\", \"widget\");\n    add(new QWidgetItem(widget), position);\n}\n\nQt::Orientations GBorderLayout::expandingDirections() const {\n    return Qt::Horizontal | Qt::Vertical;\n}\n\nbool GBorderLayout::hasHeightForWidth() const {\n    return false;\n}\n\nint GBorderLayout::count() const {\n    return list.size();\n}\n\nQLayoutItem* GBorderLayout::itemAt(int index) const {\n    ItemWrapper* wrapper = list.value(index);\n    if (wrapper) {\n        return wrapper->item;\n    } else {\n        return nullptr;\n    }\n}\n\nQSize GBorderLayout::minimumSize() const {\n    return calculateSize(MinimumSize);\n}\n\nvoid GBorderLayout::setGeometry(const QRect& rect) {\n    ItemWrapper* center = nullptr;\n    int eastWidth = 0;\n    int westWidth = 0;\n    int northHeight = 0;\n    int southHeight = 0;\n    int centerHeight = 0;\n\n    QLayout::setGeometry(rect);\n\n    // size/place north/south widgets first\n    for (int i = 0; i < list.size(); ++i) {\n        ItemWrapper* wrapper = list.at(i);\n        QLayoutItem* item = wrapper->item;\n        GLayout::Position position = wrapper->position;\n\n        if (position == GLayout::North) {\n            QRect geom(rect.x(),\n                       northHeight,\n                       rect.width(),\n                       item->sizeHint().height());\n            item->setGeometry(geom);\n            northHeight += item->geometry().height() + spacing();\n        } else if (position == GLayout::South) {\n            QRect geom(item->geometry().x(),\n                       item->geometry().y(),\n                       rect.width(),\n                       item->sizeHint().height());\n            item->setGeometry(geom);\n\n            southHeight += item->geometry().height() + spacing();\n            geom = QRect(rect.x(),\n                         rect.y() + rect.height() - southHeight + spacing(),\n                         item->geometry().width(),\n                         item->geometry().height());\n            item->setGeometry(geom);\n        } else if (position == GLayout::Center) {\n            center = wrapper;\n        }\n    }\n\n    centerHeight = rect.height() - northHeight - southHeight;\n\n    // size/place west/east widgets second\n    for (int i = 0; i < list.size(); ++i) {\n        ItemWrapper* wrapper = list.at(i);\n        QLayoutItem* item = wrapper->item;\n        GLayout::Position position = wrapper->position;\n\n        if (position == GLayout::West) {\n            QRect geom(rect.x() + westWidth,\n                       northHeight,\n                       item->sizeHint().width(),\n                       centerHeight);\n            item->setGeometry(geom);\n            westWidth += item->geometry().width() + spacing();\n        } else if (position == GLayout::East) {\n            QRect geom(item->geometry().x(),\n                       item->geometry().y(),\n                       item->sizeHint().width(),\n                       centerHeight);\n            item->setGeometry(geom);\n\n            eastWidth += item->geometry().width() + spacing();\n            geom = QRect(rect.x() + rect.width() - eastWidth + spacing(),\n                       northHeight,\n                       item->geometry().width(),\n                       item->geometry().height());\n            item->setGeometry(geom);\n        }\n    }\n\n    // size/place central widget last\n    if (center) {\n        QRect geom(westWidth,\n                   northHeight,\n                   rect.width() - eastWidth - westWidth,\n                   centerHeight);\n        center->item->setGeometry(geom);\n    }\n}\n\nQSize GBorderLayout::sizeHint() const {\n    return calculateSize(SizeHint);\n}\n\nQLayoutItem* GBorderLayout::takeAt(int index) {\n    if (index >= 0 && index < list.size()) {\n        ItemWrapper* layoutStruct = list.takeAt(index);\n        return layoutStruct->item;\n    } else {\n        return nullptr;\n    }\n}\n\nvoid GBorderLayout::add(QLayoutItem* item, GLayout::Position position) {\n    require::nonNull(item, \"GBorderLayout::add\");\n    list.append(new ItemWrapper(item, position));\n}\n\nQSize GBorderLayout::calculateSize(SizeType sizeType) const {\n    QSize totalSize;\n    for (int i = 0; i < list.size(); ++i) {\n        ItemWrapper* wrapper = list.at(i);\n        GLayout::Position position = wrapper->position;\n        QSize itemSize;\n\n        if (sizeType == MinimumSize) {\n            itemSize = wrapper->item->minimumSize();\n        } else { // (sizeType == SizeHint)\n            itemSize = wrapper->item->sizeHint();\n        }\n\n        if (position == GLayout::North || position == GLayout::South || position == GLayout::Center) {\n            totalSize.rheight() += itemSize.height();\n        }\n\n        if (position == GLayout::West || position == GLayout::East || position == GLayout::Center) {\n            totalSize.rwidth() += itemSize.width();\n        }\n    }\n    return totalSize;\n}\n"
  },
  {
    "path": "Library/graphics/glayout.h",
    "content": "/*\n * File: glayout.h\n * ---------------\n *\n * @author Marty Stepp\n * @version 2018/09/07\n * - added doc comments for new documentation generation\n * @version 2018/08/23\n * - renamed to glayout.h to replace Java version\n * @version 2018/06/25\n * - initial version\n */\n\n\n#ifndef _glayout_h\n#define _glayout_h\n\n#include <QLayout>\n#include <QRect>\n#include <QWidget>\n\n#include \"ginteractor.h\"\n\n/**\n * A helper class with functionality related to container layout management.\n * Clients generally do not need to use this class directly.\n * @private\n */\nclass GLayout {\npublic:\n\n    enum Position { West, North, South, East, Center };\n\n    static void clearLayout(QLayout* layout);\n    static bool contains(QLayout* layout, QWidget* widget);\n    static void forceUpdate(GInteractor* interactor);\n    static void forceUpdate(QWidget* widget);\n    static QSize getPreferredSize(QWidget* widget);\n    static QSize getProperSize(QLayout* layout);\n    static QSize getProperSize(QWidget* widget);\n    static void invalidateLayout(QLayout* layout);\n    static Position toPosition(const std::string& positionName);\n\nprivate:\n    GLayout();   // forbid construction\n};\n\n/**\n * A Qt layout manager that performs a \"border\" layout a la Java AWT's.\n * This class currently does not work properly.\n *\n * based on: http://doc.qt.io/qt-5.6/qtwidgets-layouts-borderlayout-example.html\n *\n * TODO: finish/debug or remove\n *\n * @private\n */\nclass GBorderLayout : public QLayout {\npublic:\n    GBorderLayout(QWidget* parent, int margin = 0, int spacing = -1);\n    GBorderLayout(int spacing = -1);\n    ~GBorderLayout() override;\n\n    void addItem(QLayoutItem* item) override;\n    void addWidget(QWidget* widget);\n    void addWidget(QWidget* widget, GLayout::Position position);\n    Qt::Orientations expandingDirections() const override;\n    bool hasHeightForWidth() const override;\n    int count() const override;\n    QLayoutItem* itemAt(int index) const override;\n    QSize minimumSize() const override;\n    void setGeometry(const QRect& rect) override;\n    QSize sizeHint() const override;\n    QLayoutItem* takeAt(int index) override;\n\n    void add(QLayoutItem* item, GLayout::Position position);\n\nprivate:\n    Q_DISABLE_COPY(GBorderLayout)\n\n    struct ItemWrapper {\n        ItemWrapper(QLayoutItem* i, GLayout::Position p) {\n            item = i;\n            position = p;\n        }\n\n        QLayoutItem* item;\n        GLayout::Position position;\n    };\n\n    enum SizeType { MinimumSize, SizeHint };\n\n    QSize calculateSize(SizeType sizeType) const;\n\n    QList<ItemWrapper*> list;\n};\n\n#endif // _glayout_h\n"
  },
  {
    "path": "Library/graphics/gobjects.cpp",
    "content": "/*\n * File: gobjects.cpp\n * ------------------\n * This file implements the gobjects.h interface.\n *\n * @author Marty Stepp\n * @version 2019/08/13\n * - bug fix for loading GImage (hasError -> !hasError) - thanks to Tyler Conklin\n * @version 2019/05/05\n * - added predictable GLine point ordering * @version 2019/04/23\n * - bug fix for loading GImage from file on Windows related to istream change\n * @version 2019/03/07\n * - added support for loading a GImage directly from istream (htiek)\n * @version 2018/09/14\n * - added opacity support\n * - added GCanvas-to-GImage conversion support\n * @version 2018/08/23\n * - renamed to gobjects.cpp to replace Java version\n * @version 2018/06/30\n * - initial version\n */\n\n#include \"gobjects.h\"\n#include <algorithm>\n#include <cmath>\n#include <iomanip>\n#include <iostream>\n#include <QApplication>\n#include <QBrush>\n#include <QFont>\n#include <QPointF>\n#include <QPolygon>\n#include <QVector>\n#include <sstream>\n#include <string>\n#include \"filelib.h\"\n#include \"gmath.h\"\n#include \"gcolor.h\"\n#include \"gfont.h\"\n#include \"gthread.h\"\n#include \"require.h\"\n#include \"strlib.h\"\n#include \"private/static.h\"\n\nconst double GRoundRect::DEFAULT_CORNER = 10.0;\n\n// static constants\nSTATIC_CONST_VARIABLE_DECLARE(double, LINE_TOLERANCE, 1.5)\nSTATIC_CONST_VARIABLE_DECLARE(double, ARC_TOLERANCE, 2.5)\nSTATIC_VARIABLE_DECLARE_BLANK(QBrush, DEFAULT_BRUSH)\nSTATIC_VARIABLE_DECLARE_BLANK(QFont, DEFAULT_QFONT)\nSTATIC_VARIABLE_DECLARE(bool, DEFAULT_QFONT_SET, false)\n\n/**\n * Returns the square of the distance between two points.\n * Used when checking to see if a line touches a given point.\n * @private\n */\nstatic double dsq(double x0, double y0, double x1, double y1);\n\n\n/* GObject class */\n\nbool GObject::_sAntiAliasing = true;\n\nGObject::GObject(double x, double y, double width, double height)\n        : _x(x),\n          _y(y),\n          _width(width),\n          _height(height),\n          _lineWidth(1),\n          _opacity(1.0),\n          _lineStyle(GObject::LINE_SOLID),\n          _color(\"\"),\n          _colorInt(0),\n          _fillColor(\"\"),\n          _fillColorInt(0),\n          _font(\"\"),\n          _fillFlag(false),\n          _visible(true),\n          _transformed(false),\n          _parent(nullptr) {\n    // http://doc.qt.io/qt-5/qpen.html#cap-style\n    _pen.setJoinStyle(Qt::MiterJoin);   // don't round corners of line edges\n    _pen.setMiterLimit(99.0);\n    _pen.setCapStyle(Qt::FlatCap);      // don't overextend line endpoint\n    _brush.setStyle(Qt::SolidPattern);\n}\n\nGObject::~GObject() {\n    // empty\n}\n\nbool GObject::contains(double x, double y) const {\n    if (isTransformed()) {\n        // TODO\n        return getBounds().contains(x, y);\n    } else {\n        return getBounds().contains(x, y);\n    }\n}\n\nbool GObject::contains(const GPoint& pt) const {\n    return contains(pt.x, pt.y);\n}\n\nGPoint GObject::getBottomRightLocation() const {\n    return GPoint(getRightX(), getBottomY());\n}\n\ndouble GObject::getBottomY() const {\n    return getY() + getHeight();\n}\n\nGRectangle GObject::getBounds() const {\n    if (isTransformed()) {\n        // TODO\n        return GRectangle(getX(), getY(), getWidth(), getHeight());\n    } else {\n        return GRectangle(getX(), getY(), getWidth(), getHeight());\n    }\n}\n\nGPoint GObject::getCenterLocation() const {\n    return GPoint(getCenterX(), getCenterY());\n}\n\ndouble GObject::getCenterX() const {\n    return getX() + getWidth() / 2;\n}\n\ndouble GObject::getCenterY() const {\n    return getY() + getHeight() / 2;\n}\n\nstd::string GObject::getColor() const {\n    return _color;\n}\n\nstd::string GObject::getFillColor() const {\n    return _fillColor;\n}\n\ndouble GObject::getHeight() const {\n    return _height;\n}\n\nGObject::LineStyle GObject::getLineStyle() const {\n    return _lineStyle;\n}\n\ndouble GObject::getLineWidth() const {\n    return _lineWidth;\n}\n\nGPoint GObject::getLocation() const {\n    return GPoint(getX(), getY());\n}\n\ndouble GObject::getOpacity() const {\n    return _opacity;\n}\n\nGCompound* GObject::getParent() const {\n    return _parent;\n}\n\ndouble GObject::getRightX() const {\n    return getX() + getWidth();\n}\n\nGDimension GObject::getSize() const {\n    GRectangle bounds = getBounds();\n    return GDimension(bounds.width, bounds.height);\n}\n\ndouble GObject::getWidth() const {\n    return _width;\n}\n\ndouble GObject::getX() const {\n    return _x;\n}\n\ndouble GObject::getY() const {\n    return _y;\n}\n\nvoid GObject::initializeBrushAndPen(QPainter* painter) {\n    if (!painter) {\n        return;\n    }\n    if (GColor::hasAlpha(_color)) {\n        _pen.setColor(GColor::toQColorARGB(_colorInt));   // allow alpha\n    } else {\n        _pen.setColor(QColor(_colorInt));\n    }\n    _pen.setWidth((int) _lineWidth);\n    _pen.setStyle(toQtPenStyle(_lineStyle));\n\n    // http://doc.qt.io/qt-5/qpen.html#join-style\n    painter->setPen(_pen);\n\n    // font\n    if (!STATIC_VARIABLE(DEFAULT_QFONT_SET)) {\n        STATIC_VARIABLE(DEFAULT_QFONT) = painter->font();\n        STATIC_VARIABLE(DEFAULT_BRUSH).setColor(QColor(0x00ffffff));\n    }\n    if (_font.empty()) {\n        painter->setFont(STATIC_VARIABLE(DEFAULT_QFONT));\n    } else {\n        painter->setFont(GFont::toQFont(_font));\n    }\n\n\n    // fill color\n    if (_fillFlag) {\n        if (GColor::hasAlpha(_fillColor)) {\n            _brush.setColor(GColor::toQColorARGB(_fillColorInt));   // allow alpha\n        } else {\n            _brush.setColor(QColor(_fillColorInt));\n        }\n        painter->setBrush(_brush);\n    } else {\n        painter->setBrush(STATIC_VARIABLE(DEFAULT_BRUSH));\n    }\n\n    // anti-aliasing\n    painter->setRenderHint(QPainter::Antialiasing, GObject::isAntiAliasing());\n    painter->setRenderHint(QPainter::TextAntialiasing, GObject::isAntiAliasing());\n\n    // opacity\n    painter->setOpacity(_opacity);\n\n    // transform\n    painter->setTransform(_transform, /* combine */ false);\n}\n\nbool GObject::isAntiAliasing() {\n    return _sAntiAliasing;\n}\n\nbool GObject::isFilled() const {\n    return _fillFlag;\n}\n\nbool GObject::isTransformed() const {\n    return _transformed;\n}\n\nbool GObject::isVisible() const {\n    return _visible;\n}\n\nvoid GObject::move(double dx, double dy) {\n    setLocation(getX() + dx, getY() + dy);   // calls repaint\n}\n\nvoid GObject::repaint() {\n    // really instructs the GCompound parent to redraw itself\n    GCompound* parent = getParent();\n    while (parent && parent->getParent()) {\n        parent = parent->getParent();\n    }\n    if (parent) {\n        parent->conditionalRepaint();\n    }\n}\n\nvoid GObject::resetTransform() {\n    _transform = QTransform();\n    _transformed = false;\n    repaint();\n}\n\nvoid GObject::rotate(double theta) {\n    _transformed = true;\n    _transform = _transform.rotate(theta);\n    repaint();\n}\n\nvoid GObject::scale(double sf) {\n    scale(sf, sf);   // calls repaint\n}\n\nvoid GObject::scale(double sx, double sy) {\n    _transformed = true;\n    _transform = _transform.scale(sx, sy);\n    repaint();\n}\n\nvoid GObject::sendBackward() {\n    GCompound* parent = getParent();\n    if (parent) {\n        parent->sendBackward(this);\n    }\n}\n\nvoid GObject::sendForward() {\n    GCompound* parent = getParent();\n    if (parent) {\n        parent->sendForward(this);\n    }\n}\n\nvoid GObject::sendToBack() {\n    GCompound* parent = getParent();\n    if (parent) {\n        parent->sendToBack(this);\n    }\n}\n\nvoid GObject::sendToFront() {\n    GCompound* parent = getParent();\n    if (parent) {\n        parent->sendToFront(this);\n    }\n}\n\nvoid GObject::setAntiAliasing(bool value) {\n    _sAntiAliasing = value;\n}\n\nvoid GObject::setBottomY(double y) {\n    setBottomRightLocation(getRightX(), y);   // calls repaint\n}\n\nvoid GObject::setRightX(double x) {\n    setBottomRightLocation(x, getBottomY());   // calls repaint\n}\n\nvoid GObject::setBottomRightLocation(double x, double y) {\n    setLocation(x - getWidth(), y - getHeight());   // calls repaint\n}\n\nvoid GObject::setBottomRightLocation(const GPoint& pt) {\n    setBottomRightLocation(pt.x, pt.y);   // calls repaint\n}\n\nvoid GObject::setBounds(double x, double y, double width, double height) {\n    _x = x;\n    _y = y;\n    _width = width;\n    _height = height;\n    repaint();\n}\n\nvoid GObject::setBounds(const GRectangle& bounds) {\n    setBounds(bounds.x, bounds.y, bounds.width, bounds.height);\n}\n\nvoid GObject::setCenterX(double x) {\n    setCenterLocation(x, getCenterY());   // calls repaint\n}\n\nvoid GObject::setCenterY(double y) {\n    setCenterLocation(getCenterX(), y);   // calls repaint\n}\n\nvoid GObject::setCenterLocation(double x, double y) {\n    setLocation(x - getWidth() / 2, y - getHeight() / 2);   // calls repaint\n}\n\nvoid GObject::setCenterLocation(const GPoint& pt) {\n    setCenterLocation(pt.x, pt.y);   // calls repaint\n}\n\nvoid GObject::setColor(int r, int g, int b) {\n    _color = GColor::convertRGBToColor(r, g, b);\n    _colorInt = GColor::convertRGBToRGB(r, g, b);\n    repaint();\n}\n\nvoid GObject::setColor(int rgb) {\n    _color = GColor::convertRGBToColor(rgb);\n    _colorInt = rgb;\n    repaint();\n}\n\nvoid GObject::setColor(const std::string& color) {\n    if (GColor::hasAlpha(color)) {\n        _color = color;\n        _colorInt = GColor::convertColorToRGB(color);\n        repaint();\n    } else {\n        setColor(GColor::convertColorToRGB(color));\n    }\n}\n\nvoid GObject::setFillColor(int r, int g, int b) {\n    _fillColor = GColor::convertRGBToColor(r, g, b);\n    _fillColorInt = GColor::convertRGBToRGB(r, g, b);\n    repaint();\n}\n\nvoid GObject::setFillColor(int rgb) {\n    _fillColor = GColor::convertRGBToColor(rgb);\n    _fillColorInt = rgb;\n    repaint();\n}\n\nvoid GObject::setFillColor(const std::string& color) {\n    _fillColor = color;\n    _fillColorInt = GColor::convertColorToRGB(color);\n    if (_fillColor == \"\") {\n        _fillFlag = false;\n    } else {\n        if (!GColor::hasAlpha(color)) {\n            _fillColor = GColor::convertRGBToColor(_fillColorInt);\n        }\n        _fillFlag = true;\n    }\n    repaint();\n}\n\nvoid GObject::setFilled(bool flag) {\n    _fillFlag = flag;\n    repaint();\n}\n\nvoid GObject::setFont(const QFont& font) {\n    setFont(GFont::toFontString(font));\n}\n\nvoid GObject::setFont(const std::string& font) {\n    _font = font;\n    repaint();\n}\n\nvoid GObject::setForeground(int r, int g, int b) {\n    setColor(r, g, b);\n}\n\nvoid GObject::setForeground(int rgb) {\n    setColor(rgb);\n}\n\nvoid GObject::setForeground(const std::string& color) {\n    setColor(color);\n}\n\nvoid GObject::setHeight(double height) {\n    setSize(getWidth(), height);\n}\n\nvoid GObject::setLineStyle(GObject::LineStyle lineStyle) {\n    _lineStyle = lineStyle;\n    repaint();\n}\n\nvoid GObject::setLineWidth(double lineWidth) {\n    _lineWidth = lineWidth;\n    repaint();\n}\n\nvoid GObject::setLocation(double x, double y) {\n    _x = x;\n    _y = y;\n    repaint();\n}\n\nvoid GObject::setLocation(const GPoint& pt) {\n    setLocation(pt.x, pt.y);   // calls repaint\n}\n\nvoid GObject::setOpacity(double opacity) {\n    require::inRange(opacity, 0.0, 1.0, \"GObject::setOpacity\");\n    _opacity = opacity;\n    repaint();\n}\n\nvoid GObject::setSize(double width, double height) {\n    if (isTransformed()) {\n        error(\"GObject::setSize: Object has been transformed\");\n    }\n    _width = width;\n    _height = height;\n    repaint();\n}\n\nvoid GObject::setSize(const GDimension& size) {\n    setSize(size.width, size.height);   // calls repaint\n}\n\nvoid GObject::setVisible(bool flag) {\n    _visible = flag;\n    repaint();\n}\n\nvoid GObject::setWidth(double width) {\n    setSize(width, getHeight());\n}\n\nvoid GObject::setX(double x) {\n    setLocation(x, getY());   // calls repaint\n}\n\nvoid GObject::setY(double y) {\n    setLocation(getX(), y);   // calls repaint\n}\n\nstd::string GObject::toString() const {\n    std::string extra = toStringExtra();\n    return getType()\n            + \"(\"\n            + \"x=\" + std::to_string(_x)\n            + \",y=\" + std::to_string(_y)\n            + \",w=\" + std::to_string(_width)\n            + \",h=\" + std::to_string(_height)\n            + (_lineWidth <= 1 ? \"\" : (\",lineWidth=\" + std::to_string(_lineWidth)))\n            + (_color.empty() ? \"\" : (\",color=\" + _color))\n            + (_fillColor.empty() ? \"\" : (\",fillColor=\" + _fillColor))\n            + (_font.empty() ? \"\" : (\",font=\" + _font))\n            + (_visible ? \"\" : (\",visible=\" + boolToString(_visible)))\n            + (extra.empty() ? \"\" : (\",\" + extra))\n            + \")\";\n}\n\nQt::PenStyle GObject::toQtPenStyle(GObject::LineStyle lineStyle) {\n    switch (lineStyle) {\n    case GObject::LINE_DASH:\n        return Qt::DashLine;\n    case GObject::LINE_DASH_DOT:\n        return Qt::DashDotLine;\n    case GObject::LINE_DASH_DOT_DOT:\n        return Qt::DashDotDotLine;\n    case GObject::LINE_DOT:\n        return Qt::DotLine;\n    case GObject::LINE_NONE:\n        return Qt::NoPen;\n    case GObject::LINE_SOLID:\n    default:\n        return Qt::SolidLine;\n    }\n}\n\nstd::string GObject::toStringExtra() const {\n    return \"\";\n}\n\n\nGArc::GArc(double width, double height, double start, double sweep)\n        : GObject(/* x */ 0, /* y */ 0, width, height),\n          _start(start),\n          _sweep(sweep) {\n    // empty\n}\n\nGArc::GArc(double x, double y, double width, double height, double start, double sweep)\n        : GObject(x, y, width, height),\n          _start(start),\n          _sweep(sweep) {\n    // empty\n}\n\nbool GArc::contains(double x, double y) const {\n    if (isTransformed()) {\n        // TODO\n        // return stanfordcpplib::getPlatform()->gobject_contains(this, x, y);\n    }\n    double rx = getWidth() / 2;\n    double ry = getHeight() / 2;\n    if (floatingPointEqual(rx, 0) || floatingPointEqual(ry, 0)) {\n        return false;\n    }\n    double dx = x - (getX() + rx);\n    double dy = y - (getY() + ry);\n    double r = (dx * dx) / (rx * rx) + (dy * dy) / (ry * ry);\n    if (isFilled()) {\n        if (r > 1.0) {\n            return false;\n        }\n    } else {\n        double t = STATIC_VARIABLE(ARC_TOLERANCE) / ((rx + ry) / 2);\n        if (std::fabs(1.0 - r) > t) {\n            return false;\n        }\n    }\n\n    // JL BUGFIX: must scale by ry, rx.\n    return containsAngle(atan2(-dy/ry, dx/rx) * 180 / PI);\n}\n\nbool GArc::containsAngle(double theta) const {\n    double start = std::min(_start, _start + _sweep);\n    double sweep = std::abs(_sweep);\n    if (sweep >= 360) {\n        return true;\n    }\n    theta = (theta < 0) ? 360 - fmod(-theta, 360) : fmod(theta, 360);\n    start = (start < 0) ? 360 - fmod(-start, 360) : fmod(start, 360);\n    if (start + sweep > 360) {\n        return theta >= start || theta <= start + sweep - 360;\n    } else {\n        return theta >= start && theta <= start + sweep;\n    }\n}\n\nvoid GArc::draw(QPainter* painter) {\n    // for some reason, Qt's arc-drawing functionality asks for angles in\n    // 1/16ths of a degree. okay sure whatever\n    static const int QT_ANGLE_SCALE_FACTOR = 16;\n    initializeBrushAndPen(painter);\n    painter->drawChord((int) getX(), (int) getY(),\n                       (int) getWidth(), (int) getHeight(),\n                       (int) (_start * QT_ANGLE_SCALE_FACTOR),\n                       (int) (_sweep * QT_ANGLE_SCALE_FACTOR));\n}\n\nGPoint GArc::getArcPoint(double theta) const {\n    double rx = getWidth() / 2;\n    double ry = getHeight() / 2;\n    double cx = getX() + rx;\n    double cy = getY() + ry;\n    double radians = theta * PI / 180;\n    return GPoint(cx + rx * cos(radians), cy - ry * sin(radians));\n}\n\nGRectangle GArc::getBounds() const {\n    if (isTransformed()) {\n        // TODO\n        // return stanfordcpplib::getPlatform()->gobject_getBounds(this);\n    }\n    double rx = getWidth() / 2;\n    double ry = getHeight() / 2;\n    double cx = getX() + rx;\n    double cy = getY() + ry;\n    double startRadians = _start * PI / 180;\n    double sweepRadians = _sweep * PI / 180;\n    double p1x = cx + cos(startRadians) * rx;\n    double p1y = cy - sin(startRadians) * ry;\n    double p2x = cx + cos(startRadians + sweepRadians) * rx;\n    double p2y = cy - sin(startRadians + sweepRadians) * ry;\n    double xMin = std::min(p1x, p2x);\n    double xMax = std::max(p1x, p2x);\n    double yMin = std::min(p1y, p2y);\n    double yMax = std::max(p1y, p2y);\n    if (containsAngle(0)) xMax = cx + rx;\n    if (containsAngle(90)) yMin = cy - ry;\n    if (containsAngle(180)) xMin = cx - rx;\n    if (containsAngle(270)) yMax = cy + ry;\n    if (isFilled()) {\n        xMin = std::min(xMin, cx);\n        yMin = std::min(yMin, cy);\n        xMax = std::max(xMax, cx);\n        yMax = std::max(yMax, cy);\n    }\n    return GRectangle(xMin, yMin, xMax - xMin, yMax - yMin);\n}\n\nGPoint GArc::getEndPoint() const {\n    return getArcPoint(_start + _sweep);\n}\n\nGRectangle GArc::getFrameRectangle() const {\n    return getBounds();\n}\n\ndouble GArc::getStartAngle() const {\n    return _start;\n}\n\nGPoint GArc::getStartPoint() const {\n    return getArcPoint(_start);\n}\n\ndouble GArc::getSweepAngle() const {\n    return _sweep;\n}\n\nstd::string GArc::getType() const {\n    return \"GArc\";\n}\n\nvoid GArc::setFrameRectangle(double x, double y, double width, double height) {\n    setBounds(x, y, width, height);   // calls repaint\n}\n\nvoid GArc::setFrameRectangle(const GRectangle& rect) {\n    setFrameRectangle(rect.x, rect.y, rect.width, rect.height);   // calls repaint\n}\n\nvoid GArc::setStartAngle(double start) {\n    _start = start;\n    repaint();\n}\n\nvoid GArc::setSweepAngle(double sweep) {\n    _sweep = sweep;\n    repaint();\n}\n\nstd::string GArc::toStringExtra() const {\n    std::ostringstream oss;\n    oss << \" start=\" << _start << \" sweep=\" << _sweep;\n    return oss.str();\n}\n\n\nGCompound::GCompound()\n        : _autoRepaint(true) {\n    // empty\n}\n\nvoid GCompound::add(GObject* gobj) {\n    require::nonNull(gobj, \"GCompound::add\");\n    for (int i = _contents.size() - 1; i >= 0; i--) {   // avoid duplicates\n        if (_contents[i] == gobj) {\n            return;\n        }\n    }\n    _contents.add(gobj);\n    gobj->_parent = this;\n    if (gobj->isTransformed()) {\n        conditionalRepaint();\n    } else {\n        conditionalRepaintRegion(gobj->getBounds().enlargedBy((gobj->getLineWidth() + 1) / 2));\n    }\n}\n\nvoid GCompound::add(GObject* gobj, double x, double y) {\n    require::nonNull(gobj, \"GCompound::add\");\n    gobj->setLocation(x, y);\n    add(gobj);   // calls conditionalRepaint\n}\n\nvoid GCompound::add(GObject& gobj) {\n    add(&gobj);\n}\n\nvoid GCompound::add(GObject& gobj, double x, double y) {\n    add(&gobj, x, y);\n}\n\nvoid GCompound::clear() {\n    removeAll();   // calls conditionalRepaint\n}\n\nvoid GCompound::conditionalRepaint() {\n    if (_autoRepaint) {\n        repaint();\n    }\n}\n\nvoid GCompound::conditionalRepaintRegion(int x, int y, int width, int height) {\n    if (_autoRepaint) {\n        repaintRegion(x, y, width, height);\n    }\n}\n\nvoid GCompound::conditionalRepaintRegion(const GRectangle& bounds) {\n    if (_autoRepaint) {\n        repaintRegion(bounds);\n    }\n}\n\nbool GCompound::contains(double x, double y) const {\n    if (isTransformed()) {\n        // TODO\n        // return stanfordcpplib::getPlatform()->gobject_contains(this, x, y);\n    }\n    for (int i = 0, sz = _contents.size(); i < sz; i++) {\n        if (_contents[i]->contains(x, y)) {\n            return true;\n        }\n    }\n    return false;\n}\n\nvoid GCompound::draw(QPainter* painter) {\n    if (!painter) {\n        return;\n    }\n    // TODO: uncomment this? need settings to apply to every shape\n    // initializeBrushAndPen(painter);   //\n    for (GObject* obj : _contents) {\n        if (obj->isVisible()) {\n            obj->draw(painter);\n        }\n    }\n}\n\nint GCompound::findGObject(GObject* gobj) const {\n    int n = _contents.size();\n    for (int i = 0; i < n; i++) {\n        if (_contents.get(i) == gobj) {\n            return i;\n        }\n    }\n    return -1;\n}\n\nGRectangle GCompound::getBounds() const {\n    if (isTransformed()) {\n        // TODO\n        // return stanfordcpplib::getPlatform()->gobject_getBounds(this);\n    }\n    double xMin = +1E20;\n    double yMin = +1E20;\n    double xMax = -1E20;\n    double yMax = -1E20;\n    for (int i = 0; i < _contents.size(); i++) {\n        GRectangle bounds = _contents.get(i)->getBounds();\n        xMin = std::min(xMin, bounds.x);\n        yMin = std::min(yMin, bounds.y);\n        xMax = std::max(xMax, bounds.x);\n        yMax = std::max(yMax, bounds.y);   // JL BUGFIX 2016/10/11\n    }\n    // JL BUGFIX: shifted anchor point\n    return GRectangle(xMin + getX(), yMin + getY(), xMax - xMin, yMax - yMin);\n}\n\nGObject* GCompound::getElement(int index) const {\n    return _contents.get(index);\n}\n\nGObject* GCompound::getElementAt(double x, double y) const {\n    for (GObject* gobj : _contents) {\n        if (gobj && gobj->contains(x, y)) {\n            return gobj;\n        }\n    }\n    return nullptr;\n}\n\nint GCompound::getElementCount() const {\n    return _contents.size();\n}\n\nstd::string GCompound::getType() const {\n    return \"GCompound\";\n}\n\nQWidget* GCompound::getWidget() const {\n    return _widget;\n}\n\nbool GCompound::isAutoRepaint() const {\n    return _autoRepaint;\n}\n\nbool GCompound::isEmpty() const {\n    return _contents.size() == 0;\n}\n\nvoid GCompound::remove(GObject* gobj) {\n    require::nonNull(gobj, \"GCompound::remove\");\n    int index = findGObject(gobj);\n    if (index != -1) {\n        removeAt(index);   // calls conditionalRepaint\n    }\n}\n\nvoid GCompound::remove(GObject& gobj) {\n    remove(&gobj);\n}\n\nvoid GCompound::removeAll() {\n    bool wasEmpty = _contents.isEmpty();\n    Vector<GObject*> contentsCopy = _contents;\n    _contents.clear();\n    for (GObject* obj : contentsCopy) {\n        obj->_parent = nullptr;\n        // TODO: delete obj;\n    }\n    if (!wasEmpty) {\n        conditionalRepaint();\n    }\n}\n\nvoid GCompound::removeAt(int index) {\n    GObject* gobj = _contents[index];\n    _contents.remove(index);\n    gobj->_parent = nullptr;\n    if (gobj->isTransformed()) {\n        conditionalRepaint();\n    } else {\n        conditionalRepaintRegion(gobj->getBounds().enlargedBy((gobj->getLineWidth() + 1) / 2));\n    }\n}\n\nvoid GCompound::repaint() {\n    if (!_widget) {\n        return;\n    }\n\n    // actual repainting must be done in the Qt GUI thread\n    if (GThread::iAmRunningOnTheQtGuiThread()) {\n        _widget->repaint();   // TODO: change to update()?\n    } else {\n        GThread::runOnQtGuiThread([this]() {\n            _widget->repaint();   // TODO: change to update()?\n        });\n    }\n}\n\nvoid GCompound::repaintRegion(int x, int y, int width, int height) {\n    if (!_widget) {\n        return;\n    }\n\n    // actual repainting must be done in the Qt GUI thread\n    if (GThread::iAmRunningOnTheQtGuiThread()) {\n        _widget->repaint(x, y, width, height);\n    } else {\n        GThread::runOnQtGuiThread([this, x, y, width, height]() {\n            _widget->repaint(x, y, width, height);\n        });\n    }\n}\n\nvoid GCompound::repaintRegion(const GRectangle& bounds) {\n    repaintRegion((int) bounds.x, (int) bounds.y,\n                  (int) bounds.width, (int) bounds.height);\n}\n\nvoid GCompound::sendBackward(GObject* gobj) {\n    require::nonNull(gobj, \"GCompound::sendBackward\");\n    int index = findGObject(gobj);\n    if (index == -1) {\n        return;\n    }\n    if (index != 0) {\n        _contents.remove(index);\n        _contents.insert(index - 1, gobj);\n        // stanfordcpplib::getPlatform()->gobject_sendBackward(gobj);\n        conditionalRepaint();\n    }\n}\n\nvoid GCompound::sendForward(GObject* gobj) {\n    require::nonNull(gobj, \"GCompound::sendForward\");\n    int index = findGObject(gobj);\n    if (index == -1) {\n        return;\n    }\n    if (index != _contents.size() - 1) {\n        _contents.remove(index);\n        _contents.insert(index + 1, gobj);\n        // stanfordcpplib::getPlatform()->gobject_sendForward(gobj);\n        conditionalRepaint();\n    }\n}\n\nvoid GCompound::sendToBack(GObject* gobj) {\n    require::nonNull(gobj, \"GCompound::sendToBack\");\n    int index = findGObject(gobj);\n    if (index == -1) {\n        return;\n    }\n    if (index != 0) {\n        _contents.remove(index);\n        _contents.insert(0, gobj);\n        // stanfordcpplib::getPlatform()->gobject_sendToBack(gobj);\n        conditionalRepaint();\n    }\n}\n\nvoid GCompound::sendToFront(GObject* gobj) {\n    require::nonNull(gobj, \"GCompound::sendToFront\");\n    int index = findGObject(gobj);\n    if (index == -1) {\n        return;\n    }\n    if (index != _contents.size() - 1) {\n        _contents.remove(index);\n        _contents.add(gobj);\n        conditionalRepaint();\n    }\n}\n\nvoid GCompound::setAutoRepaint(bool autoRepaint) {\n    _autoRepaint = autoRepaint;\n}\n\nvoid GCompound::setWidget(QWidget* widget) {\n    _widget = widget;\n}\n\nstd::string GCompound::toString() const {\n    return \"GCompound(...)\";\n}\n\n\nGImage::GImage(const std::string& filename, double x, double y)\n        : GObject(x, y),\n          _filename(filename),\n          _qimage(nullptr) {\n    if (!load(filename)) {\n        error(\"GImage::constructor: unable to load image from: \\\"\" + filename + \"\\\"\");\n    }\n}\n\nGImage::GImage(std::istream& source, double x, double y)\n        : GObject(x, y),\n          _filename(\"std::istream source\"),\n          _qimage(nullptr) {\n    if (!loadFromStream(source)) {\n        error(\"GImage::constructor: unable to load image from stream input\");\n    }\n}\n\nGImage::GImage(double width, double height) {\n    require::nonNegative2D(width, height, \"GImage::constructor\", \"width\", \"height\");\n    _width = width;\n    _height = height;\n    GThread::runOnQtGuiThread([this]() {\n        _qimage = new QImage(static_cast<int>(_width), static_cast<int>(_height), QImage::Format_ARGB32);\n    });\n}\n\nGImage::GImage(QImage* qimage) {\n    require::nonNull(qimage, \"GImage::constructor\");\n    _qimage = qimage;\n    _width = _qimage->width();\n    _height = _qimage->height();\n}\n\nGImage::~GImage() {\n    // TODO: delete _image;\n    _qimage = nullptr;\n}\n\nbool GImage::load(const std::string& filename) {\n    if (filename.empty() || !fileExists(filename)) {\n        return false;\n    }\n    bool hasError = false;\n    GThread::runOnQtGuiThread([this, filename, &hasError]() {\n        _qimage = new QImage;\n        if (_qimage->load(QString::fromStdString(_filename))) {\n            _width = _qimage->width();\n            _height = _qimage->height();\n        } else {\n            hasError = true;\n        }\n    });\n    return !hasError;   // *** BUGFIX thanks to Tyler Conklin\n}\n\nbool GImage::loadFromStream(std::istream& input) {\n    // transfer bytes to a string through std::stringstream\n    std::ostringstream byteStream;\n    byteStream << input.rdbuf();\n    std::string bytes = byteStream.str();\n\n    // load image\n    bool hasError = false;\n    GThread::runOnQtGuiThread([&, this]() {\n        _qimage = new QImage;\n        if (_qimage->loadFromData(reinterpret_cast<const uchar *>(bytes.data()), bytes.size())) {\n            _width = _qimage->width();\n            _height = _qimage->height();\n        } else {\n            hasError = true;\n        }\n    });\n\n    return !hasError;\n}\n\nvoid GImage::draw(QPainter* painter) {\n    if (!painter) {\n        return;\n    }\n    double myX = getX();\n    double myY = getY();\n    double myWidth = getWidth();\n    double myHeight = getHeight();\n    double imgWidth = _qimage->width();\n    double imgHeight = _qimage->height();\n    painter->setOpacity(_opacity);\n    painter->setTransform(_transform, /* combine */ false);\n    if (floatingPointEqual(myWidth, imgWidth) && floatingPointEqual(myHeight, imgHeight)) {\n        // draw unscaled\n        painter->drawImage((int) myX, (int) myY, *_qimage);\n    } else {\n        // draw scaled\n        QRectF rect(myX, myY, myWidth, myHeight);\n        painter->drawImage(rect, *_qimage);\n    }\n}\n\nstd::string GImage::getFileName() const {\n    return _filename;\n}\n\nint GImage::getPixel(int x, int y) const {\n    require::inRange2D(x, y, (int) getWidth() - 1, (int) getHeight() - 1, \"GImage::getPixel\", \"x\", \"y\");\n    return (int) _qimage->pixel(x, y);\n}\n\nQImage* GImage::getQImage() const {\n    return _qimage;\n}\n\nstd::string GImage::getType() const {\n    return \"GImage\";\n}\n\nvoid GImage::setPixel(int x, int y, int rgb) {\n    _qimage->setPixel(x, y, rgb);\n}\n\nstd::string GImage::toStringExtra() const {\n    return \"filename=\\\"\" + _filename + \"\\\"\";\n}\n\n\nGLine::GLine(double x0, double y0, double x1, double y1, GObject::LineStyle lineStyle)\n        : GObject(x0, y0),\n          _dx(x1 - x0),\n          _dy(y1 - y0) {\n    setPoints(x0, y0, x1, y1);   // checks if point swap is needed\n    setLineStyle(lineStyle);\n}\n\nGLine::GLine(const GPoint& p0, const GPoint& p1)\n        : GObject(p0.x, p0.y),\n          _dx(p1.x - p0.x),\n          _dy(p1.y - p0.y) {\n    // empty\n}\n\nbool GLine::contains(double x, double y) const {\n    if (isTransformed()) {\n        // TODO\n        // return stanfordcpplib::getPlatform()->gobject_contains(this, x, y);\n    }\n    double x0 = getStartX();\n    double y0 = getStartY();\n    double x1 = getEndX();\n    double y1 = getEndY();\n    double tSquared = STATIC_VARIABLE(LINE_TOLERANCE) * STATIC_VARIABLE(LINE_TOLERANCE);\n    if (dsq(x, y, x0, y0) < tSquared) {\n        return true;\n    }\n    if (dsq(x, y, x1, y1) < tSquared) {\n        return true;\n    }\n    if (x < std::min(x0, x1) - STATIC_VARIABLE(LINE_TOLERANCE)) {\n        return false;\n    }\n    if (x > std::max(x0, x1) + STATIC_VARIABLE(LINE_TOLERANCE)) {\n        return false;\n    }\n    if (y < std::min(y0, y1) - STATIC_VARIABLE(LINE_TOLERANCE)) {\n        return false;\n    }\n    if (y > std::max(y0, y1) + STATIC_VARIABLE(LINE_TOLERANCE)) {\n        return false;\n    }\n    if (floatingPointEqual(x0 - x1, 0) && floatingPointEqual(y0 - y1, 0)) {\n        return false;\n    }\n    double u = ((x - x0) * (x1 - x0) + (y - y0) * (y1 - y0))\n            / dsq(x0, y0, x1, y1);\n    return dsq(x, y, x0 + u * (x1 - x0), y0 + u * (y1 - y0)) < tSquared;\n}\n\nvoid GLine::draw(QPainter* painter) {\n    if (!painter) {\n        return;\n    }\n    initializeBrushAndPen(painter);\n    painter->drawLine(static_cast<int>(getStartX()),\n                      static_cast<int>(getStartY()),\n                      static_cast<int>(getEndX()),\n                      static_cast<int>(getEndY()));\n}\n\nGRectangle GLine::getBounds() const {\n    if (isTransformed()) {\n        // TODO\n        // return stanfordcpplib::getPlatform()->gobject_getBounds(this);\n    }\n    double minX = std::min(getStartX(), getEndX());\n    double minY = std::min(getStartY(), getEndY());\n    return GRectangle(minX, minY, getWidth(), getHeight());\n}\n\nGPoint GLine::getEndPoint() const {\n    return GPoint(getX() + _dx, getY() + _dy);\n}\n\ndouble GLine::getEndX() const {\n    return getX() + _dx;\n}\n\ndouble GLine::getEndY() const {\n    return getY() + _dy;\n}\n\ndouble GLine::getHeight() const {\n    return std::fabs(_dy);\n}\n\nGPoint GLine::getStartPoint() const {\n    return getLocation();\n}\n\ndouble GLine::getStartX() const {\n    return getX();\n}\n\ndouble GLine::getStartY() const {\n    return getY();\n}\n\nstd::string GLine::getType() const {\n    return \"GLine\";\n}\n\ndouble GLine::getWidth() const {\n    return std::fabs(_dx);\n}\n\nvoid GLine::setEndPoint(double x1, double y1) {\n    setPoints(getStartX(), getStartY(), x1, y1);\n}\n\nvoid GLine::setEndPoint(const GPoint& p) {\n    setEndPoint(p.x, p.y);\n}\n\nvoid GLine::setPoints(double x0, double y0, double x1, double y1) {\n    _x = x0;\n    _y = y0;\n    _dx = x1 - x0;\n    _dy = y1 - y0;\n    repaint();\n}\n\nvoid GLine::setPoints(const GPoint& p0, const GPoint& p1) {\n    setPoints(p0.x, p0.y, p1.x, p1.y);\n}\n\nvoid GLine::setStartPoint(double x0, double y0) {\n    setPoints(x0, y0, getEndX(), getEndY());\n}\n\nvoid GLine::setStartPoint(const GPoint& p) {\n    setStartPoint(p.x, p.y);\n}\n\nstd::string GLine::toStringExtra() const {\n    std::ostringstream oss;\n    oss << \"x2=\" << getEndX() << \" y2=\" << getEndY();\n    return oss.str();\n}\n\n\nGOval::GOval(double x, double y, double width, double height)\n        : GObject(x, y, width, height) {\n    // empty\n}\n\nbool GOval::contains(double x, double y) const {\n    if (isTransformed()) {\n        // TODO\n        // return stanfordcpplib::getPlatform()->gobject_contains(this, x, y);\n    }\n    double rx = getWidth() / 2;\n    double ry = getHeight() / 2;\n    if (floatingPointEqual(rx, 0) || floatingPointEqual(ry, 0)) {\n        return false;\n    }\n    double dx = x - (getX() + rx);\n    double dy = y - (getY() + ry);\n    return (dx * dx) / (rx * rx) + (dy * dy) / (ry * ry) <= 1.0;\n}\n\nvoid GOval::draw(QPainter* painter) {\n    if (!painter) {\n        return;\n    }\n    initializeBrushAndPen(painter);\n    painter->drawEllipse((int) getX(), (int) getY(), (int) getWidth(), (int) getHeight());\n}\n\nstd::string GOval::getType() const {\n    return \"GOval\";\n}\n\n\nGPolygon::GPolygon() {\n    // empty\n}\n\nGPolygon::GPolygon(std::initializer_list<double> coords) {\n    addVertexes(coords);\n}\n\nGPolygon::GPolygon(std::initializer_list<GPoint> points) {\n    addVertexes(points);\n}\n\nvoid GPolygon::addEdge(double dx, double dy) {\n    addVertex(_cx + dx, _cy + dy);\n}\n\nvoid GPolygon::addEdge(const GPoint& pt) {\n    addEdge(pt.x, pt.y);\n}\n\nvoid GPolygon::addEdges(std::initializer_list<double> coords) {\n    int i = 0;\n    double dx = 0;\n    double dy = 0;\n    for (double d : coords) {\n        if (i % 2 == 0) {\n            dx = d;\n        } else {\n            dy = d;\n            addEdge(dx, dy);\n        }\n        i++;\n    }\n}\n\nvoid GPolygon::addEdges(std::initializer_list<GPoint> points) {\n    for (GPoint pt : points) {\n        addEdge(pt);\n    }\n}\n\nvoid GPolygon::addPolarEdge(double r, double theta) {\n    addEdge(r * cos(theta * PI / 180), -r * sin(theta * PI / 180));\n}\n\nvoid GPolygon::addVertex(double x, double y) {\n    _cx = x;\n    _cy = y;\n    _vertices.append(QPointF(_cx, _cy));\n    repaint();\n}\n\nvoid GPolygon::addVertex(const GPoint& pt) {\n    addVertex(pt.x, pt.y);\n}\n\nvoid GPolygon::addVertexes(std::initializer_list<double> coords) {\n    int i = 0;\n    double x = 0;\n    double y = 0;\n    for (double d : coords) {\n        if (i % 2 == 0) {\n            x = d;\n        } else {\n            y = d;\n            addVertex(x, y);\n        }\n        i++;\n    }\n}\n\nvoid GPolygon::addVertexes(std::initializer_list<GPoint> points) {\n    for (GPoint pt : points) {\n        addVertex(pt);\n    }\n}\n\nvoid GPolygon::clear() {\n    _vertices.clear();\n    repaint();\n}\n\nbool GPolygon::contains(double x, double y) const {\n    if (isTransformed()) {\n        // TODO\n        // return stanfordcpplib::getPlatform()->gobject_contains(this, x, y);\n    }\n    int crossings = 0;\n    int n = _vertices.size();\n    if (n < 2) {\n        return false;\n    }\n    if (_vertices[0] == _vertices[n - 1]) {\n        n--;\n    }\n    double x0 = _vertices[0].x();\n    double y0 = _vertices[0].y();\n    for (int i = 1; i <= n; i++) {\n        double x1 = _vertices[i % n].x();\n        double y1 = _vertices[i % n].y();\n        if ((y0 > y) != (y1 > y) && x - x0 < (x1 - x0) * (y - y0) / (y1 - y0)) {\n            crossings++;\n        }\n        x0 = x1;\n        y0 = y1;\n    }\n    return (crossings % 2 == 1);\n}\n\nvoid GPolygon::draw(QPainter* painter) {\n    if (!painter) {\n        return;\n    }\n    initializeBrushAndPen(painter);\n    painter->drawPolygon(QPolygonF(_vertices));\n}\n\nGRectangle GPolygon::getBounds() const {\n    if (isTransformed()) {\n        // TODO\n        // return stanfordcpplib::getPlatform()->gobject_getBounds(this);\n    }\n    double xMin = 0;\n    double yMin = 0;\n    double xMax = 0;\n    double yMax = 0;\n    for (int i = 0; i < _vertices.size(); i++) {\n        double x = _vertices[i].x();\n        double y = _vertices[i].y();\n        if (i == 0 || x < xMin) xMin = x;\n        if (i == 0 || y < yMin) yMin = y;\n        if (i == 0 || x > xMax) xMax = x;\n        if (i == 0 || y > yMax) yMax = y;\n    }\n    // JL BUGFIX: add getX, getY\n    return GRectangle(xMin + getX(), yMin + getY(), xMax - xMin, yMax - yMin);\n}\n\ndouble GPolygon::getHeight() const {\n    return getBounds().height;\n}\n\nstd::string GPolygon::getType() const {\n    return \"GPolygon\";\n}\n\nGPoint GPolygon::getVertex(int i) const {\n    return GPoint(_vertices[i].x(), _vertices[i].y());\n}\n\nint GPolygon::getVertexCount() const {\n    return _vertices.size();\n}\n\nVector<GPoint> GPolygon::getVertices() const {\n    Vector<GPoint> vec;\n    for (const QPointF& point : _vertices) {\n        vec.add(GPoint(point.x(), point.y()));\n    }\n    return vec;\n}\n\ndouble GPolygon::getWidth() const {\n    return getBounds().width; // BUGFIX JDZ\n}\n\nvoid GPolygon::setVertex(int i, GPoint point) {\n    _vertices[i].setX(point.x);\n    _vertices[i].setY(point.y);\n    repaint();\n}\n\nstd::string GPolygon::toStringExtra() const {\n    std::ostringstream oss;\n    oss << \"vertices=\" << _vertices.size();\n    return oss.str();\n}\n\n\nGRect::GRect(double x, double y, double width, double height)\n        : GObject(x, y, width, height) {\n    // empty\n}\n\nvoid GRect::draw(QPainter* painter) {\n    if (!painter) {\n        return;\n    }\n    initializeBrushAndPen(painter);\n    painter->setRenderHint(QPainter::Antialiasing, false);\n    painter->drawRect((int) getX(), (int) getY(), (int) getWidth(), (int) getHeight());\n    painter->setRenderHint(QPainter::Antialiasing, GObject::isAntiAliasing());\n}\n\nstd::string GRect::getType() const {\n    return \"GRect\";\n}\n\n\n/*\n * Implementation notes: GRoundRect class\n * ---------------------------------------\n * Most of the GRoundRect class is inherited from the GRect class.\n */\n\nGRoundRect::GRoundRect(double width, double height, double corner)\n        : GRect(/* x */ 0, /* y */ 0, width, height),\n          _corner(corner) {\n    require::nonNegative(corner, \"GRoundRect::constructor\", \"corner\");\n}\n\nGRoundRect::GRoundRect(double x, double y, double width, double height, double corner)\n        : GRect(x, y, width, height),\n          _corner(corner) {\n    require::nonNegative(corner, \"GRoundRect::constructor\", \"corner\");\n}\n\nbool GRoundRect::contains(double x, double y) const {\n    if (isTransformed()) {\n        // TODO\n        // return stanfordcpplib::getPlatform()->gobject_contains(this, x, y);\n    }\n\n    // JL BUGFIX: The rest of this is code to return correct result in non-transformed case\n    // (accounting for corners)\n    if (!getBounds().contains(x, y)) {\n        return false;\n    }\n\n    // If corner diameter is too big, the largest sensible value is used by Java back end.\n    double a = std::min(_corner, getWidth()) / 2;\n    double b = std::min(_corner, getHeight()) / 2;\n\n    // Get distances from nearest edges of bounding rectangle\n    double dx = std::min(std::abs(x - getX()), std::abs(x - getRightX()));\n    double dy = std::min(std::abs(y - getY()), std::abs(y - getBottomY()));\n\n    if (dx > a || dy > b) {\n        return true;   // in \"central cross\" of rounded rect\n    }\n\n    return (dx - a) * (dx - a) / (a * a) + (dy - b) * (dy - b) / (b * b) <= 1;\n}\n\nvoid GRoundRect::draw(QPainter* painter) {\n    if (!painter) {\n        return;\n    }\n    initializeBrushAndPen(painter);\n    // QPainter takes corner as radius, GRoundRect stores as diameter, thus convert\n    painter->drawRoundedRect((int) getX(), (int) getY(),\n                           (int) getWidth(), (int) getHeight(),\n                           (int) (_corner/2), (int) (_corner/2));\n}\n\ndouble GRoundRect::getCorner() const {\n    return _corner;\n}\n\nstd::string GRoundRect::getType() const {\n    return \"GRoundRect\";\n}\n\nvoid GRoundRect::setCorner(double corner) {\n    require::nonNegative(corner, \"GRoundRect::setCorner\", \"corner\");\n    _corner = corner;\n    repaint();\n}\n\nstd::string GRoundRect::toStringExtra() const {\n    return \"corner=\" + std::to_string(_corner);\n}\n\n\nGText::GText(const std::string& str, double x, double y)\n        : GObject(x, y),\n          _text(str) {\n    _font = GFont::toFontString(QApplication::font()); // default to standard family+size\n    updateSize();\n}\n\nvoid GText::draw(QPainter* painter) {\n    if (!painter) {\n        return;\n    }\n    initializeBrushAndPen(painter);\n    painter->drawText((int) getX(), (int) getY(), QString::fromStdString(_text));\n}\n\nGRectangle GText::getBounds() const {\n    if (isTransformed()) {\n        // TODO\n        // return stanfordcpplib::getPlatform()->gobject_getBounds(this);\n    }\n    return GRectangle(getX(), getY() - getFontAscent(), getWidth(), getHeight());\n}\n\nstd::string GText::getFont() const {\n    return _font;\n}\n\ndouble GText::getFontAscent() const {\n    QFontMetrics metrics(GFont::toQFont(_font));\n    return metrics.ascent();\n}\n\ndouble GText::getFontDescent() const {\n    QFontMetrics metrics(GFont::toQFont(_font));\n    return metrics.descent();\n}\n\nstd::string GText::getLabel() const {\n    return _text;\n}\n\nstd::string GText::getText() const {\n    return _text;\n}\n\nstd::string GText::getType() const {\n    return \"GText\";\n}\n\nvoid GText::setFont(const QFont& font) {\n    setFont(GFont::toFontString(font));\n}\n\nvoid GText::setFont(const std::string& font) {\n    _font = font;\n    updateSize();\n    repaint();\n}\n\nvoid GText::setLabel(const std::string& str) {\n    _text = str;\n    updateSize();\n    repaint();\n}\n\nvoid GText::setText(const std::string& str) {\n    setLabel(str);\n}\n\nstd::string GText::toStringExtra() const {\n    return \"text=\\\"\" + _text + \"\\\"\";\n}\n\nvoid GText::updateSize() {\n    QFontMetrics metrics(GFont::toQFont(_font));\n    _width = metrics.horizontalAdvance(QString::fromStdString(_text));\n    _height = metrics.height();\n}\n\nstd::ostream& operator <<(std::ostream& out, const GObject& obj) {\n    return out << obj.toString();\n}\n\nstatic double dsq(double x0, double y0, double x1, double y1) {\n    return (x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0);\n}\n"
  },
  {
    "path": "Library/graphics/gobjects.h",
    "content": "/*\n * File: gobjects.h\n * ----------------\n * This file exports a hierarchy of graphical shapes based on\n * the model developed for the ACM Java Graphics.\n * <include src=\"pictures/ClassHierarchies/GObjectHierarchy-h.html\">\n *\n * @author Marty Stepp\n * @version 2019/05/05\n * - added predictable GLine point ordering\n * @version 2019/04/23\n * - bug fix for loading GImage from file on Windows related to istream change\n * @version 2019/03/07\n * - added support for loading a GImage directly from istream (htiek)\n * @version 2018/09/14\n * - added opacity support\n * - added GCanvas-to-GImage conversion support\n * @version 2018/09/08\n * - added doc comments for new documentation generation\n * @version 2018/08/23\n * - renamed to gobjects.h to replace Java version\n * @version 2018/06/30\n * - initial version\n */\n\n\n#ifndef _gobjects_h\n#define _gobjects_h\n\n#include <initializer_list>\n#include <iostream>\n#include <QFont>\n#include <QImage>\n#include <QPainter>\n#include <QPen>\n#include <QWidget>\n\n#include \"gtypes.h\"\n#include \"vector.h\"\n\nclass GCanvas;\nclass GCompound;\nclass GDiffImage;\n\n/**\n * This class is the common superclass of all graphical objects that can\n * be displayed on a graphical window.  The class <code>GObject</code>\n * itself is an <b><i>abstract class</i></b>, which means that you are not\n * allowed to construct a <code>GObject</code> directly but must instead\n * construct one of the concrete subclasses.\n * <include src=\"pictures/ClassHierarchies/GObjectHierarchy.html\">\n *\n * Most methods used for graphics take a pointer to a <code>GObject</code>\n * rather than the <code>GObject</code> itself.  Applications that use\n * <code>GObject</code> pointers therefore use the arrow operator\n * (<code>-&gt;</code>) to apply methods to the object pointer.\n * For examples illustrating the use of the <code>GObject</code> class, see\n * the descriptions of the individual subclasses.\n */\nclass GObject {\npublic:\n    /**\n     * Styles that can be used for the outline around various shapes.\n     * Call setLineStyle on a GObject and pass one of these values.\n     */\n    enum LineStyle {\n        LINE_NONE,\n        LINE_SOLID,\n        LINE_DASH,\n        LINE_DOT,\n        LINE_DASH_DOT,\n        LINE_DASH_DOT_DOT\n    };\n\n    /**\n     * Frees the storage for the object.\n     */\n    virtual ~GObject();\n\n    /**\n     * Returns <code>true</code> if the specified point is inside the object.\n     */\n    virtual bool contains(double x, double y) const;\n\n    /**\n     * Returns <code>true</code> if the specified point is inside the object.\n     */\n    virtual bool contains(const GPoint& pt) const;\n\n    /**\n     * Draws this object onto the given surface.\n     * Each GObject subclass must override this method.\n     * @private\n     */\n    virtual void draw(QPainter* painter) = 0;\n\n    /**\n     * Returns the x/y coordinates of the bottom/right corner of the object.\n     */\n    virtual GPoint getBottomRightLocation() const;\n\n    /**\n     * Returns the <i>y</i>-coordinate of the bottom of the object.\n     * Equivalent to the top y-coordinate plus the object's height.\n     */\n    virtual double getBottomY() const;\n\n    /**\n     * Returns the bounding box of this object, which is defined to be the\n     * smallest rectangle that covers everything drawn by the figure.  The\n     * coordinates of this rectangle do not necessarily match the location\n     * returned by <code>getLocation</code>.  Given a <code>GText</code>\n     * object, for example, <code>getLocation</code> returns the coordinates\n     * of the point on the baseline at which the string begins; the\n     * <code>getBounds</code> method, by contrast, returns a rectangle that\n     * covers the entire window area occupied by the string.\n     */\n    virtual GRectangle getBounds() const;\n\n    /**\n     * Returns the x/y-coordinates of the center of the object.\n     * Equivalent to the top/left plus half the object's size.\n     */\n    virtual GPoint getCenterLocation() const;\n\n    /**\n     * Returns the <i>x</i>-coordinate of the center of the object.\n     * Equivalent to the top/left plus half the object's width.\n     */\n    virtual double getCenterX() const;\n\n    /**\n     * Returns the <i>y</i>-coordinate of the center of the object.\n     * Equivalent to the top/left plus half the object's height.\n     */\n    virtual double getCenterY() const;\n\n    /**\n     * Returns the color used to display this object.  This color is\n     * always returned as a string in the form <code>\"#rrggbb\"</code>,\n     * where <code>rr</code>, <code>gg</code>, and <code>bb</code> are\n     * the red, green, and blue components of the color, expressed as\n     * two-digit hexadecimal values.\n     */\n    virtual std::string getColor() const;\n\n    /**\n     * Returns the color used to display the filled region of this object.\n     * If none has been set, returns the empty string.\n     */\n    virtual std::string getFillColor() const;\n\n    /**\n     * Returns the height of this object, which is the same as the height\n     * of its bounding box.\n     */\n    virtual double getHeight() const;\n\n    /**\n     * Returns the object's style such as solid or dashed.\n     */\n    virtual LineStyle getLineStyle() const;\n\n    /**\n     * Returns the width of the line used to draw this object.\n     * @return default 1\n     */\n    virtual double getLineWidth() const;\n\n    /**\n     * Returns the location of the top-left corner of object.\n     */\n    virtual GPoint getLocation() const;\n\n    /**\n     * Returns how opaque (non-transparent) this object will appear from 0.0\n     * (completely transparent) to 1.0 (completely opaque, default).\n     */\n    virtual double getOpacity() const;\n\n    /**\n     * Returns a pointer to the <code>GCompound</code> that contains this\n     * object.  Every <code>GWindow</code> is initialized to contain a single\n     * <code>GCompound</code> that is aligned with the window.  Adding\n     * objects to the window adds them to that <code>GCompound</code>,\n     * which means that every object you add to the window has a parent.\n     * Calling <code>getParent</code> on the top-level <code>GCompound</code>\n     * returns <code>nullptr</code>.\n     */\n    virtual GCompound* getParent() const;\n\n    /**\n     * Returns the <i>x</i>-coordinate of the right side of the object.\n     * Equivalent to the left x-coordinate plus the object's width.\n     */\n    virtual double getRightX() const;\n\n    /**\n     * Returns the size of the object as a <code>GDimension</code>.\n     */\n    virtual GDimension getSize() const;\n\n    /**\n     * Returns the type of the object as a string, such as\n     * <code>\"GOval\"</code> or <code>\"GRect\"</code>.\n     * Each GObject subtype must override this method.\n     */\n    virtual std::string getType() const = 0;\n\n    /**\n     * Returns the width of this object, which is equal to the width of\n     * the bounding box.\n     */\n    virtual double getWidth() const;\n\n    /**\n     * Returns the leftmost <i>x</i>-coordinate of the object.\n     */\n    virtual double getX() const;\n\n    /**\n     * Returns the topmost <i>y</i>-coordinate of the object.\n     */\n    virtual double getY() const;\n\n    /**\n     * Returns whether we should globally anti-alias graphical objects.\n     * On by default.\n     */\n    static bool isAntiAliasing();\n\n    /**\n     * Returns <code>true</code> if the object is filled with color.\n     */\n    virtual bool isFilled() const;\n\n    /**\n     * Returns <code>true</code> if this object has been transformed\n     * by calling methods such as rotate() or scale() on it.\n     * Certain operations (such as setSize) cannot be performed after\n     * a graphical object has been transformed.\n     */\n    virtual bool isTransformed() const;\n\n    /**\n     * Returns <code>true</code> if this object is visible on screen.\n     */\n    virtual bool isVisible() const;\n\n    /**\n     * Moves the object on the screen using the displacements\n     * <code>dx</code> and <code>dy</code>.\n     */\n    virtual void move(double dx, double dy);\n\n    /**\n     * Instructs the object to redraw itself on screen.\n     */\n    virtual void repaint();\n\n    /**\n     * Undoes any previous scale/rotate transformations on this object.\n     */\n    virtual void resetTransform();\n\n    /**\n     * Transforms the object by rotating it <code>theta</code> degrees\n     * counterclockwise around its origin.\n     * After calling this method on a graphical object, <code>isTransformed</code>\n     * will return <code>true</code> for that object unless you subsequently\n     * call <code>resetTransform</code> on it.\n     */\n    virtual void rotate(double theta);\n\n    /**\n     * Scales the object by the specified scale factor.  This form\n     * scales the object by <code>sf</code> in both dimensions, so that\n     * invoking <code>gobj->scale(2);</code> doubles the size of the object.\n     * After calling this method on a graphical object, <code>isTransformed</code>\n     * will return <code>true</code> for that object unless you subsequently\n     * call <code>resetTransform</code> on it.\n     */\n    virtual void scale(double sf);\n\n    /**\n     * Scales the object by the specified scale factors.  For example,\n     * <code>gobj->scale(2, 2);</code> doubles the size of the object.\n     * This form applies independent scale factors to the <i>x</i> and <i>y</i>\n     * dimensions.\n     * After calling this method on a graphical object, <code>isTransformed</code>\n     * will return <code>true</code> for that object unless you subsequently\n     * call <code>resetTransform</code> on it.\n     */\n    virtual void scale(double sx, double sy);\n\n    /**\n     * Moves this object one step toward the back in the <i>z</i> dimension.\n     * If it was already at the back of the stack, nothing happens.\n     */\n    void sendBackward();\n\n    /**\n     * Moves this object one step toward the front in the <i>z</i> dimension.\n     * If it was already at the front of the stack, nothing happens.\n     */\n    void sendForward();\n\n    /**\n     * Moves this object to the back of the display in the <i>z</i> dimension.\n     * By moving it to the back, this object will appear to be behind the other\n     * graphical objects on the display and may be obscured by other objects\n     * in front.\n     */\n    void sendToBack();\n\n    /**\n     * Moves this object to the front of the display in the <i>z</i> dimension.\n     * By moving it to the front, this object will appear to be on top of the\n     * other graphical objects on the display and may hide any objects that\n     * are further back.\n     */\n    void sendToFront();\n\n    /**\n     * Globally turns on/off the anti-aliasing feature that smooths out the\n     * edges of onscreen shapes.  On by default.\n     * Does not repaint any onscreen objects when called; you must do this yourself.\n     */\n    static void setAntiAliasing(bool value);\n\n    /**\n     * Changes the bounds of this object to the specified values.\n     */\n    virtual void setBounds(double x, double y, double width, double height);\n\n    /**\n     * Changes the bounds of this object to the specified rectangle.\n     */\n    virtual void setBounds(const GRectangle& size);\n\n    /**\n     * Sets the location of the bottom y-coordinate of this object.\n     */\n    virtual void setBottomY(double y);\n\n    /**\n     * Sets the location of the rightmost x-coordinate of this object.\n     */\n    virtual void setRightX(double x);\n\n    /**\n     * Sets the location of the bottom/right of this object.\n     */\n    virtual void setBottomRightLocation(double x, double y);\n\n    /**\n     * Sets the location of the bottom/right of this object.\n     */\n    virtual void setBottomRightLocation(const GPoint& pt);\n\n    /**\n     * Sets the x-coordinate of the center of this object.\n     */\n    virtual void setCenterX(double x);\n\n    /**\n     * Sets the y-coordinate of the center of this object.\n     */\n    virtual void setCenterY(double y);\n\n    /**\n     * Sets the location of the center of this object.\n     */\n    virtual void setCenterLocation(double x, double y);\n\n    /**\n     * Sets the location of the center of this object.\n     */\n    virtual void setCenterLocation(const GPoint& pt);\n\n    /**\n     * Sets the color used to display this object.\n     * See gcolor.h for more detail about how to specify colors.\n     *\n     * Equivalent to setForeground.\n     *\n     * @param r redness from 0-255\n     * @param g greenness from 0-255\n     * @param b blueness from 0-255\n     */\n    virtual void setColor(int r, int g, int b);\n\n    /**\n     * Sets the color used to display this object.\n     * See gcolor.h for more detail about how to specify colors.\n     *\n     * Equivalent to setForeground.\n     *\n     * @param rgb an RGB integer value such as 0x7700ff\n     */\n    virtual void setColor(int rgb);\n\n    /**\n     * Sets the color used to display this object.\n     * See gcolor.h for more detail about how to specify colors.\n     *\n     * Equivalent to setForeground.\n     *\n     * @param color color string such as \"#7700ff\" or \"purple\"\n     */\n    virtual void setColor(const std::string& color);\n\n    /**\n     * Sets the color used to display the filled region of this object, if any.\n     * As a side effect, sets this object to be filled (setFilled(true)).\n     * See gcolor.h for more detail about how to specify colors.\n     * If an empty string is passed, sets filled to false.\n     *\n     * @param r redness from 0-255\n     * @param g greenness from 0-255\n     * @param b blueness from 0-255\n     */\n    virtual void setFillColor(int r, int g, int b);\n\n    /**\n     * Sets the color used to display the filled region of this object, if any.\n     * As a side effect, sets this object to be filled (setFilled(true)).\n     * See gcolor.h for more detail about how to specify colors.\n     *\n     * @param rgb an RGB integer value such as 0x7700ff\n     */\n    virtual void setFillColor(int rgb);\n\n    /**\n     * Sets the color used to display the filled region of this object, if any.\n     * As a side effect, sets this object to be filled (setFilled(true)).\n     * See gcolor.h for more detail about how to specify colors.\n     * If an empty string is passed, sets filled to false.\n     *\n     * @param color color string such as \"#7700ff\" or \"purple\"\n     */\n    virtual void setFillColor(const std::string& color);\n\n    /**\n     * Sets the fill status for the object, where <code>false</code> is\n     * outlined and <code>true</code> is filled.\n     */\n    virtual void setFilled(bool flag);\n\n    /**\n     * Changes the font used to display the object as specified by\n     * the given Qt font.\n     * See gfont.h for more detail about how to specify fonts.\n     */\n    virtual void setFont(const QFont& font);\n\n    /**\n     * Changes the font used to display the object as specified by\n     * the string <code>font</code>, which has the following format:\n     *\n     * <pre>\n     * \"family-style-size\"\n     * </pre>\n     *\n     * where both <code>style</code> and <code>size</code> are optional.\n     * If any of these elements are missing or specified as an asterisk,\n     * the existing value is retained.\n     * See gfont.h for more detail about how to specify fonts.\n     */\n    virtual void setFont(const std::string& font);\n\n    /**\n     * Sets the color used to display this object.\n     * See gcolor.h for more detail about how to specify colors.\n     *\n     * Equivalent to setColor.\n     *\n     * @param r redness from 0-255\n     * @param g greenness from 0-255\n     * @param b blueness from 0-255\n     */\n    virtual void setForeground(int r, int g, int b);\n\n    /**\n     * Sets the color used to display this object.\n     * See gcolor.h for more detail about how to specify colors.\n     *\n     * Equivalent to setColor.\n     *\n     * @param rgb an RGB integer value such as 0x7700ff\n     */\n    virtual void setForeground(int rgb);\n\n    /**\n     * Sets the color used to display this object.\n     * See gcolor.h for more detail about how to specify colors.\n     *\n     * Equivalent to setColor.\n     *\n     * @param color color string such as \"#7700ff\" or \"purple\"\n     */\n    virtual void setForeground(const std::string& color);\n\n    /**\n     * Changes the height of this object to the specified height\n     * without changing its width.\n     */\n    virtual void setHeight(double height);\n\n    /**\n     * Sets the object's style such as solid (GObject::LINE_SOLID) or dashed\n     * (GObject::LINE_DASH).\n     */\n    virtual void setLineStyle(LineStyle lineStyle);\n\n    /**\n     * Sets the width of the line used to draw this object.\n     * The default line width is 1.\n     */\n    virtual void setLineWidth(double lineWidth);\n\n    /**\n     * Sets the location of the top-left corner of this object to the\n     * specified coordinates.\n     */\n    virtual void setLocation(double x, double y);\n\n    /**\n     * Sets the location of the top-left corner of this object to the\n     * specified point.\n     */\n    virtual void setLocation(const GPoint& pt);\n\n    /**\n     * Sets how opaque (non-transparent) this object will appear from 0.0\n     * (completely transparent) to 1.0 (completely opaque, default).\n     * @throw ErrorException if opacity is out of range [0.0, 1.0]\n     */\n    virtual void setOpacity(double opacity);\n\n    /**\n     * Changes the size of this object to the specified width and height.\n     */\n    virtual void setSize(double width, double height);\n\n    /**\n     * Changes the size of this object to the specified width and height.\n     */\n    virtual void setSize(const GDimension& size);\n\n    /**\n     * Sets whether this object is visible.\n     * Graphical objects are initially visible when created.\n     */\n    virtual void setVisible(bool flag);\n\n    /**\n     * Changes the width of this object to the specified width\n     * without changing its height.\n     */\n    virtual void setWidth(double width);\n\n    /**\n     * Sets the x location of the left side of this object.\n     */\n    virtual void setX(double x);\n\n    /**\n     * Sets the y location of the top of this object.\n     */\n    virtual void setY(double y);\n\n    /**\n     * Returns a printable representation of the object.\n     */\n    virtual std::string toString() const;\n\n// Private section\nprivate:\n    // forbid assignment between objects\n    const GObject& operator =(const GObject&) {\n        return *this;\n    }\n\n    // forbid copy construction\n    GObject(const GObject&) {\n        // empty\n    }\n\n    // whether to anti-alias graphical objects; default true\n    static bool _sAntiAliasing;\n\n    /* Instance variables */\nprotected:\n    double _x;                       // the x coordinate of the origin\n    double _y;                       // the y coordinate of the origin\n    double _width;                   // the width of the bounding rectangle\n    double _height;                  // the height of the bounding rectangle\n    double _lineWidth;               // the width of the line in pixels\n    double _opacity;                 // 0.0 (transparent) - 1.0 (opaque, default)\n    LineStyle _lineStyle;            // line style such as solid or dashed\n    std::string _color;              // the color of the object\n    int _colorInt;\n    std::string _fillColor;          // color used to fill the object\n    int _fillColorInt;\n    std::string _font;               // the font string of the label\n    bool _fillFlag;                  // indicates whether the object is filled\n    bool _visible;                   // indicates if object is visible\n    bool _transformed;               // indicates if object is transformed\n    GCompound* _parent;             // pointer to the parent\n    QPen _pen;                       // for outlines\n    QBrush _brush;                   // for filling\n    QTransform _transform;           // for transformations (rotate, scale)\n\nprotected:\n    /**\n     * Constructs a graphical object at the given location.\n     * @private\n     */\n    GObject(double x = 0, double y = 0, double width = 0, double height = 0);\n\n    /**\n     * Initializes the Qt brush and pen to draw this object with\n     * the given painter.\n     * @private\n     */\n    virtual void initializeBrushAndPen(QPainter* painter = nullptr);\n\n    /**\n     * Converts our line style enums into Qt pen styles for drawing.\n     * @private\n     */\n    static Qt::PenStyle toQtPenStyle(LineStyle lineStyle);\n\n    /**\n     * Returns a string containing any extra unique information about this\n     * type of graphical object.\n     */\n    virtual std::string toStringExtra() const;\n\n    friend class GArc;\n    friend class GCompound;\n    friend class GImage;\n    friend class GInteractor;\n    friend class GLine;\n    friend class GOval;\n    friend class GPolygon;\n    friend class GRect;\n    friend class GRoundRect;\n    friend class GText;\n};\n\n/**\n * This graphical object subclass represents an elliptical arc.  The\n * arc is specified by the following parameters:\n *\n * <p><ul>\n *   <li>The coordinates of the bounding rectangle (<code>x</code>,\n *       <code>y</code>, <code>width</code>, <code>height</code>)\n *   <li>The angle at which the arc starts (<code>start</code>)\n *   <li>The number of degrees that the arc covers (<code>sweep</code>)\n * </ul>\n *\n * <p>All angles in a <code>GArc</code> description are measured in\n * degrees moving counterclockwise from the +<i>x</i> axis.  Negative\n * values for either <code>start</code> or <code>sweep</code> indicate\n * motion in a clockwise direction.\n * <include src=\"pictures/GObjectDiagrams/GArcGeometry.html\">\n */\nclass GArc : public GObject {\npublic:\n    /**\n     * Creates a new <code>GArc</code> object consisting of an elliptical arc.\n     * This form creates a <code>GArc</code> whose origin is the point (0, 0).\n     */\n    GArc(double width = 0, double height = 0, double start = 0, double sweep = 0);\n\n    /**\n     * Creates a new <code>GArc</code> object consisting of an elliptical arc.\n     * This form creates a <code>GArc</code> whose origin is the point\n     * (<code>x</code>, <code>y</code>).\n     */\n    GArc(double x, double y, double width, double height, double start, double sweep);\n\n    /* @inherit */\n    bool contains(double x, double y) const override;\n\n    /**\n     * Draws this arc on screen using the given Qt painter.\n     * @private\n     */\n    void draw(QPainter* painter) override;\n\n    /* @inherit */\n    GRectangle getBounds() const override;\n\n    /**\n     * Returns the point at which the arc ends.\n     */\n    virtual GPoint getEndPoint() const;\n\n    /**\n     * Returns the boundaries of the rectangle used to frame the arc.\n     */\n    virtual GRectangle getFrameRectangle() const;\n\n    /**\n     * Returns the starting angle for this arc in degrees.\n     */\n    virtual double getStartAngle() const;\n\n    /**\n     * Returns the point at which the arc starts.\n     */\n    virtual GPoint getStartPoint() const;\n\n    /**\n     * Returns the sweep angle for this arc in degrees.\n     */\n    virtual double getSweepAngle() const;\n\n    /* @inherit */\n    std::string getType() const override;\n\n    /**\n     * Changes the boundaries of the rectangle used to frame the arc.\n     */\n    virtual void setFrameRectangle(const GRectangle& rect);\n\n    /**\n     * Changes the boundaries of the rectangle used to frame the arc.\n     */\n    virtual void setFrameRectangle(double x, double y, double width, double height);\n\n    /**\n     * Sets the starting angle for this arc in degrees.\n     */\n    virtual void setStartAngle(double start);\n\n    /**\n     * Sets the sweep angle for this arc in degrees.\n     */\n    virtual void setSweepAngle(double start);\n\n    /* @inherit */\n    std::string toStringExtra() const override;\n\nprivate:\n    virtual bool containsAngle(double theta) const;\n    virtual GPoint getArcPoint(double theta) const;\n\n    /* Instance variables */\n    double _start;                   /* Starting angle of the arc       */\n    double _sweep;                   /* How many degrees the arc runs   */\n};\n\n/**\n * This graphical object subclass consists of a collection of other\n * graphical objects.  Once assembled, the internal objects can be manipulated\n * as a unit.  The compound keeps track of its own position, and all items\n * within it are drawn relative to that location.\n */\nclass GCompound : public GObject {\npublic:\n    /**\n     * Creates a compound with no internal components.\n     */\n    GCompound();\n\n    /**\n     * Adds a new graphical object to the compound, if that object was not\n     * already present in the compound.\n     * If the object is already stored in this compound, has no effect.\n     * @throw ErrorException if the object is null\n     */\n    virtual void add(GObject* gobj);\n\n    /**\n     * Adds a new graphical object to the compound, if that object was not\n     * already present in the compound.\n     * This form moves the object to the point (<code>x</code>, <code>y</code>) first.\n     * If the object is already stored in this compound, has no effect.\n     * @throw ErrorException if the object is null\n     */\n    virtual void add(GObject* gobj, double x, double y);\n\n    /**\n     * Adds a new graphical object to the compound.\n     */\n    virtual void add(GObject& gobj);\n\n    /**\n     * Adds a new graphical object to the compound, if that object was not\n     * already present in the compound.\n     * This form moves the object to the point (<code>x</code>, <code>y</code>) first.\n     * If the object is already stored in this compound, has no effect.\n     */\n    virtual void add(GObject& gobj, double x, double y);\n\n    /**\n     * Removes all graphical objects from the compound.\n     * Equivalent to removeAll.\n     */\n    virtual void clear();\n\n    /**\n     * Repaints the compound only if it needs to be repainted\n     * (if any of its contents have changed).\n     */\n    virtual void conditionalRepaint();\n\n    /**\n     * Repaints the given rectangular region of the compound only if it needs\n     * to be repainted (if any of its contents have changed).\n     */\n    virtual void conditionalRepaintRegion(int x, int y, int width, int height);\n\n    /**\n     * Repaints the given rectangular region of the compound only if it needs\n     * to be repainted (if any of its contents have changed).\n     */\n    virtual void conditionalRepaintRegion(const GRectangle& bounds);\n\n    /* @inherit */\n   bool contains(double x, double y) const override;\n\n    /**\n     * Draws all objects stored in this compound using the given painter pen.\n     * @private\n     */\n    void draw(QPainter* painter) override;\n\n    /* @inherit */\n    GRectangle getBounds() const override;\n\n    /**\n     * Returns a pointer to the graphical object at the specified index,\n     * numbering from back to front in the <i>z</i> dimension.\n     * @throw ErrorException if the index is out of range\n     */\n    virtual GObject* getElement(int index) const;\n\n    /**\n     * Returns a pointer to the first graphical object that contains the given\n     * (x, y) point, or a null pointer if no object in this compound touches it.\n     */\n    virtual GObject* getElementAt(double x, double y) const;\n\n    /**\n     * Returns the number of graphical objects stored in the compound.\n     */\n    virtual int getElementCount() const;\n\n    /* @inherit */\n    std::string getType() const override;\n\n    /**\n     * Returns the Qt widget associated with this compound, or a null pointer\n     * if this compound is not associated with any widget.\n     * Initially a compound is not associated with any widget until the\n     * setWidget method is called.\n     * Clients generally do not need to use this method.\n     * @private\n     */\n    virtual QWidget* getWidget() const;\n\n    /**\n     * Returns whether the compound automatically repaints itself when its\n     * contents change.\n     */\n    virtual bool isAutoRepaint() const;\n\n    /**\n     * Returns true if the compound does not contain any graphical objects.\n     */\n    virtual bool isEmpty() const;\n\n    /**\n     * Removes the specified object from the compound.\n     * @throw ErrorException if the object is null\n     */\n    virtual void remove(GObject* gobj);\n\n    /**\n     * Removes the specified object from the compound.\n     */\n    virtual void remove(GObject& gobj);\n\n    /**\n     * Removes all graphical objects from the compound.\n     * Equivalent to clear.\n     */\n    virtual void removeAll();\n\n    /**\n     * Instructs the compound to redraw all of its graphical objects.\n     */\n    void repaint() override;\n\n    /**\n     * Instructs the compound to redraw the given rectangular region within itself,\n     * including any graphical objects that touch that region.\n     */\n    virtual void repaintRegion(int x, int y, int width, int height);\n\n    /**\n     * Instructs the compound to redraw the given rectangular region within itself,\n     * including any graphical objects that touch that region.\n     */\n    virtual void repaintRegion(const GRectangle& bounds);\n\n    /**\n     * Sets whether the compound automatically repaints itself when its\n     * contents change.\n     */\n    virtual void setAutoRepaint(bool autoRepaint);\n\n    /**\n     * Sets the Qt widget associated with this compound, or a null pointer\n     * if this compound is not associated with any widget.\n     * Initially a compound is not associated with any widget until this\n     * Widget method is called.\n     * Clients generally do not need to use this method.\n     * @private\n     */\n    virtual void setWidget(QWidget* widget);\n\n    /* @inherit */\n    std::string toString() const override;\n\nprivate:\n    // methods to move an object in the z-ordering\n    void sendBackward(GObject* gobj);\n    void sendForward(GObject* gobj);\n    void sendToBack(GObject* gobj);\n    void sendToFront(GObject* gobj);\n    virtual int findGObject(GObject* gobj) const;\n    virtual void removeAt(int index);\n\n    // instance variables\n    Vector<GObject*> _contents;\n    QWidget* _widget = nullptr;    // widget containing this compound\n    bool _autoRepaint;   // automatically repaint on any change; default true\n\n    friend class GObject;\n};\n\n/**\n * This graphical object subclass represents an image from a file.\n */\nclass GImage : public GObject {\npublic:\n    /**\n     * Constructs a new image by loading the image from the specified file.\n     * By default, the upper left corner of the image appears at the origin,\n     * but you can pass coordinates to move it to the point\n     * (<code>x</code>, <code>y</code>).\n     * @throw ErrorException if the given file is not found or cannot be loaded\n     *        as a valid image file\n     */\n    GImage(const std::string& filename = \"\", double x = 0, double y = 0);\n\n    /**\n     * Constructs a new image by loading the image from the specified input stream.\n     * By default, the upper left corner of the image appears at the origin,\n     * but you can pass coordinates to move it to the point\n     * (<code>x</code>, <code>y</code>).\n     * @throw ErrorException if the given file is not found or cannot be loaded\n     *        as a valid image file\n     */\n    GImage(std::istream& source, double x = 0, double y = 0);\n\n    /**\n     * Creates a blank GImage of the given width and height.\n     * Called by GCanvas when converting to an image.\n     */\n    GImage(double width, double height);\n\n    /**\n     * Frees memory allocated internally by the image.\n     */\n    virtual ~GImage();\n\n\n\n    /**\n     * Draws this image on screen using the given Qt painter.\n     * @private\n     */\n    void draw(QPainter* painter) override;\n\n    /**\n     * Returns the file name used to load the image,\n     * as was passed to the constructor.\n     */\n    virtual std::string getFileName() const;\n\n    /**\n     * Returns the color of the pixel at the given x/y location as an RGB integer.\n     * @throw ErrorException if x/y is out of range\n     */\n    virtual int getPixel(int x, int y) const;\n\n    /* @inherit */\n    std::string getType() const override;\n\n    /**\n     * Sets the pixel at the given x/y location to the given color,\n     * represented as an RGB integer.\n     * @throw ErrorException if x/y is out of range\n     */\n    virtual void setPixel(int x, int y, int rgb);\n\n    /* @inherit */\n    std::string toStringExtra() const override;\n\nprotected:\n    /**\n     * Creates a GImage wrapping the given Qt image.\n     * Called by GCanvas when converting canvas to an image.\n     */\n    GImage(QImage* qimage);\n\n    /**\n     * Returns the inner Qt QImage object being wrapped.\n     */\n    QImage* getQImage() const;\n\nprivate:\n    /**\n     * Reads the image's pixel contents from the given file.\n     * @return true if loaded successfully and false if the load failed\n     */\n    bool load(const std::string& filename);\n\n    /**\n     * Reads the image's pixel contents from the given stream.\n     * @return true if loaded successfully and false if the load failed\n     */\n    bool loadFromStream(std::istream& input);\n\n    std::string _filename;\n    QImage* _qimage;\n\n    friend class GCanvas;\n    friend class GDiffImage;\n};\n\n/**\n * This graphical object subclass represents a line segment.\n */\nclass GLine : public GObject {\npublic:\n    /**\n     * Constructs a line segment from its endpoints.\n     * The point (<code>x0</code>,&nbsp;<code>y0</code>) defines the start of\n     * the line and the point (<code>x1</code>,&nbsp;<code>y1</code>) defines\n     * the end.\n     */\n    GLine(double x0 = 0, double y0 = 0, double x1 = 0, double y1 = 0, LineStyle lineStyle = LINE_SOLID);\n\n    /**\n     * Constructs a line segment from its endpoints.\n     * The point <code>p0</code> defines the start of the line and\n     * the point <code>p1</code> defines the end.\n     */\n    GLine(const GPoint& p0, const GPoint& p1);\n\n    /* @inherit */\n    bool contains(double x, double y) const override;\n\n    /**\n     * Draws this line on screen using the given Qt painter.\n     * @private\n     */\n    void draw(QPainter* painter) override;\n\n    /* @inherit */\n    GRectangle getBounds() const override;\n\n    /**\n     * Returns the point at which the line ends.\n     */\n    virtual GPoint getEndPoint() const;\n\n    /**\n     * Returns the x-coordinate of the point at which the line ends.\n     */\n    virtual double getEndX() const;\n\n    /**\n     * Returns the y-coordinate of the point at which the line ends.\n     */\n    virtual double getEndY() const;\n\n    /* @inherit */\n    double getHeight() const override;\n\n    /**\n     * Returns the point at which the line starts.\n     * Equivalent to getLocation.\n     */\n    virtual GPoint getStartPoint() const;\n\n    /**\n     * Returns the x-coordinate of the point at which the line starts.\n     * Equivalent to getX.\n     */\n    virtual double getStartX() const;\n\n    /**\n     * Returns the y-coordinate of the point at which the line starts.\n     * Equivalent to getY.\n     */\n    virtual double getStartY() const;\n\n    /* @inherit */\n    std::string getType() const override;\n\n    /* @inherit */\n    double getWidth() const override;\n\n    /**\n     * Sets the end point in the line to (<code>x1</code>,&nbsp;<code>y1</code>),\n     * leaving the start point unchanged.  This method is therefore different from\n     * <code>setLocation</code>, which moves both components of the line segment.\n     */\n    virtual void setEndPoint(double x1, double y1);\n\n    /**\n     * Sets the end point in the line to p,\n     * leaving the start point unchanged.  This method is therefore different from\n     * <code>setLocation</code>, which moves both components of the line segment.\n     */\n    virtual void setEndPoint(const GPoint& p);\n\n    /**\n     * Sets this line's two end points to (x0, y0) and (x1, y1).\n     * The points are rearranged into x-major, y-minor order; that is, if\n     * x1 < x0 or (x1 == x0 and y1 < y0), the points are swapped.\n     * This is done to improve consistency when drawing lines.\n     */\n    virtual void setPoints(double x0, double y0, double x1, double y1);\n\n    /**\n     * Sets this line's two end points to p0 and p1.\n     * The points are rearranged into x-major, y-minor order; that is, if\n     * x1 < x0 or (x1 == x0 and y1 < y0), the points are swapped.\n     * This is done to improve consistency when drawing lines.\n     */\n    virtual void setPoints(const GPoint& p0, const GPoint& p1);\n\n    /**\n     * Sets the initial point in the line to (<code>x0</code>,&nbsp;<code>y0</code>),\n     * leaving the end point unchanged.  This method is therefore different from\n     * <code>setLocation</code>, which moves both components of the line segment.\n     */\n    virtual void setStartPoint(double x0, double y0);\n\n    /**\n     * Sets the initial point in the line to p,\n     * leaving the end point unchanged.  This method is therefore different from\n     * <code>setLocation</code>, which moves both components of the line segment.\n     */\n    virtual void setStartPoint(const GPoint& p);\n\n    /* @inherit */\n    std::string toStringExtra() const override;\n\nprotected:\n    /* Instance variables */\n    double _dx;   // the x displacement of the line\n    double _dy;   // the y displacement of the line\n};\n\n/**\n * This graphical object subclass represents an oval inscribed in\n * a rectangular box.\n */\nclass GOval : public GObject {\npublic:\n    /**\n     * Constructs a new oval inscribed in the specified rectangle.\n     * By default, the oval is positioned at the origin, but you can pass\n     * coordinates <code>x</code> and <code>y</code>.\n     */\n    GOval(double x = 0, double y = 0, double width = 0, double height = 0);\n\n    /* @inherit */\n   bool contains(double x, double y) const override;\n\n    /**\n     * Draws this oval on screen using the given Qt painter.\n     * @private\n     */\n    void draw(QPainter* painter) override;\n\n    /* @inherit */\n    std::string getType() const override;\n};\n\n/**\n * This graphical object subclass represents a polygon bounded by\n * line segments.  The <code>GPolygon</code> constructor creates an\n * empty polygon.  To complete the figure, you need to add vertices\n * to the polygon using the methods <code>addVertex</code>,\n * <code>addEdge</code>, and <code>addPolarEdge</code>.\n */\nclass GPolygon : public GObject {\npublic:\n    /**\n     * Constructs a new empty polygon at the origin.\n     */\n    GPolygon();\n\n    /**\n     * Constructs a new polygon with the given vertex coordinates.\n     */\n    GPolygon(std::initializer_list<double> coords);\n    GPolygon(std::initializer_list<GPoint> points);\n\n    /**\n     * Adds an edge to the polygon whose components are given by the displacements\n     * <code>dx</code> and <code>dy</code> from the last vertex.\n     */\n    virtual void addEdge(double dx, double dy);\n\n    /**\n     * Adds an edge to the polygon where the displacements from the last vertex\n     * are specified as the x/y values of the given point.\n     */\n    virtual void addEdge(const GPoint& pt);\n\n    /**\n     * Adds multiple edges to the polygon whose components are given by the\n     * displacements <code>dx</code> and <code>dy</code> from the last vertex.\n     */\n    virtual void addEdges(std::initializer_list<double> coords);\n\n    /**\n     * Adds multiple edges to the polygon whose components are given by the\n     * displacements <code>dx</code> and <code>dy</code> from the last vertex.\n     */\n    virtual void addEdges(std::initializer_list<GPoint> points);\n\n    /**\n     * Adds an edge to the polygon specified in polar coordinates.\n     * The length of the edge is given by <code>r</code>, and the edge extends\n     * in direction <code>theta</code>, measured in degrees counterclockwise\n     * from the +x axis.\n     */\n    virtual void addPolarEdge(double r, double theta);\n\n    /**\n     * Adds a vertex at (<code>x</code>, <code>y</code>) relative to the polygon\n     * origin.\n     */\n    virtual void addVertex(double x, double y);\n\n    /**\n     * Adds a vertex at the given (<code>x</code>, <code>y</code>) point\n     * relative to the polygon origin.\n     */\n    virtual void addVertex(const GPoint& pt);\n\n    /**\n     * Adds multiple edges to the polygon whose components are given by the\n     * coordinates <code>dx</code> and <code>dy</code> relative to the polygon\n     * origin.\n     */\n    virtual void addVertexes(std::initializer_list<double> coords);\n\n    /**\n     * Adds multiple edges to the polygon whose components are given by the\n     * coordinates <code>dx</code> and <code>dy</code> relative to the polygon\n     * origin.\n     */\n    virtual void addVertexes(std::initializer_list<GPoint> points);\n\n    /**\n     * Removes all vertexes from the polygon.\n     */\n    virtual void clear();\n\n    /* @inherit */\n    bool contains(double x, double y) const override;\n\n    /**\n     * Draws this polygon on screen using the given Qt painter.\n     * @private\n     */\n    void draw(QPainter* painter) override;\n\n    /* @inherit */\n    GRectangle getBounds() const override;\n\n    /* @inherit */\n    double getHeight() const override;\n\n    /* @inherit */\n    std::string getType() const override;\n\n    /**\n     * Returns the vertex at the given 0-based index in this polygon.\n     * @throw ErrorException if the index is out of bounds.\n     */\n    virtual GPoint getVertex(int i) const;\n\n    /**\n     * Returns the number of vertexes in this polygon.\n     */\n    virtual int getVertexCount() const;\n\n    /**\n     * Returns a vector of the points in the polygon.\n     */\n    virtual Vector<GPoint> getVertices() const;\n\n    /* @inherit */\n    double getWidth() const override;\n\n    /**\n     * Sets the vertex at the given 0-based index in this polygon to the\n     * given coordinates.\n     * @throw ErrorException if the index is out of bounds.\n     */\n    virtual void setVertex(int i, GPoint point);\n\n    /* @inherit */\n    std::string toStringExtra() const override;\n\nprivate:\n    /* Instance variables */\n    QVector<QPointF> _vertices;   // the vertices of the polygon\n    double _cx;                   // the most recent x coordinate\n    double _cy;                   // the most recent y coordinate\n};\n\n/**\n * A GRect is a graphical object whose appearance consists of\n * a rectangular box.\n */\nclass GRect : public GObject {\npublic:\n    /**\n     * Constructs a rectangle with the specified width and height.  The first\n     * form is positioned at the origin; the second at the coordinates\n     * given by <code>x</code> and <code>y</code>.\n     */\n    GRect(double x = 0, double y = 0, double width = 0, double height = 0);\n\n    /**\n     * Draws this rectangle on screen using the given Qt painter.\n     * @private\n     */\n    void draw(QPainter* painter) override;\n\n    /* @inherit */\n    std::string getType() const override;\n};\n\n/**\n * A GRoundRect represents a graphical object whose appearance consists\n * of a rectangular box with rounded corners.\n */\nclass GRoundRect : public GRect {\npublic:\n    /**\n     * The default diameter of corners on rounded rectangles if none is\n     * supplied to the constructor.\n     */\n    static const double DEFAULT_CORNER;\n\n    /**\n     * Constructs a new rectangle with the specified width and height,\n     * located at (0, 0). The <code>corner</code> parameter specifies the\n     * diameter of the arc forming the corner.\n     */\n    GRoundRect(double width = 0, double height = 0, double corner = DEFAULT_CORNER);\n\n    /**\n     * Constructs a new rectangle with the specified width and height,\n     * with its top/left corner at (x, y).  The <code>corner</code> parameter\n     * specifies the diameter of the arc forming the corner.\n     */\n    GRoundRect(double x, double y, double width, double height, double corner = DEFAULT_CORNER);\n\n    /**\n     * Returns <code>true</code> if the specified point is inside the object.\n     */\n    bool contains(double x, double y) const override;\n\n    /**\n     * Draws this rectangle on screen using the given Qt painter.\n     * @private\n     */\n    void draw(QPainter* painter) override;\n\n    /**\n     * Returns the diameter of the arc forming the corner of this rounded\n     * rectangle.\n     */\n    virtual double getCorner() const;\n\n    /* @inherit */\n    std::string getType() const override;\n\n    /**\n     * Sets the diameter of the arc forming the corner of this rounded\n     * rectangle.\n     */\n    virtual void setCorner(double corner);\n\n    /* @inherit */\n    std::string toStringExtra() const override;\n\nprotected:\n    double _corner;\n};\n\n/**\n * This graphical object subclass represents a text string.\n *\n * Controlling the appearance and positioning of a <code>GText</code>\n * depends on understanding the following terms:\n *\n * <ul>\n *   <li>The <b><i>baseline</i></b> is the horizontal line on which the\n *       characters rest.\n *   <li>The <b><i>origin</i></b> is the point on the baseline at which\n *       the label begins.\n *   <li>The <b><i>height</i></b> is the distance that separate two\n *       successive lines.\n *   <li>The <b><i>ascent</i></b> is the maximum distance a character\n *       in this font extends above the baseline.\n *   <li>The <b><i>descent</i></b> is the maximum distance a character\n *       in this font extends below the baseline.\n * </ul>\n */\nclass GText : public GObject {\npublic:\n\n    /**\n     * Creates a <code>GText</code> object containing the specified string.\n     * By default, the baseline of the first character appears at the origin;\n     * the second form automatically resets the location of the\n     * <code>GText</code> to the point (<code>x</code>, <code>y</code>).\n     */\n    GText(const std::string& str = \"\", double x = 0, double y = 0);\n\n    /**\n     * Draws this text label on screen using the given Qt painter.\n     * @private\n     */\n    void draw(QPainter* painter) override;\n\n    /* @inherit */\n    GRectangle getBounds() const override;\n\n    /**\n     * Returns the current font for the label.\n     */\n    virtual std::string getFont() const;\n\n    /**\n     * Returns the maximum distance strings in this font extend above\n     * the baseline.\n     */\n    virtual double getFontAscent() const;\n\n    /**\n     * Returns the maximum distance strings in this font descend below\n     * the baseline.\n     */\n    virtual double getFontDescent() const;\n\n    /**\n     * Returns the string displayed by this object.\n     * Equivalent to getLabel.\n     */\n    virtual std::string getLabel() const;\n\n    /**\n     * Returns the string displayed by this object.\n     * Equivalent to getLabel.\n     */\n    virtual std::string getText() const;\n\n    /* @inherit */\n    std::string getType() const override;\n\n    /* @inherit */\n    void setFont(const QFont& font) override;\n\n    /* @inherit */\n    void setFont(const std::string& font) override;\n\n    /**\n     * Changes the string stored within the text label, so that\n     * a new text string appears on the display.\n     * Equivalent to setText.\n     */\n    virtual void setLabel(const std::string& str);\n\n    /**\n     * Changes the string stored within the text label, so that\n     * a new text string appears on the display.\n     * Equivalent to setText.\n     */\n    virtual void setText(const std::string& str);\n\n    /* @inherit */\n    std::string toStringExtra() const override;\n\nprivate:\n    /* Instance variables */\n    std::string _text;   // the string displayed by the label\n    QFont _qfont;\n\n    // update width and height when font or text changes\n    void updateSize();\n};\n\n/**\n * Prints the given graphical object to an output stream.\n */\nstd::ostream& operator <<(std::ostream& out, const GObject& obj);\n\n#endif // _gobjects_h\n"
  },
  {
    "path": "Library/graphics/gobservable.cpp",
    "content": "/*\n * File: gobservable.cpp\n * ---------------------\n *\n * @author Marty Stepp\n * @version 2018/08/23\n * - renamed to gobservable.cpp to replace Java version\n * @version 2018/07/11\n * - initial version\n */\n\n#include \"gobservable.h\"\n#include <iostream>\n#include <sstream>\n#include \"geventqueue.h\"\n#include \"gthread.h\"\n#include \"require.h\"\n#include \"strlib.h\"\n\nGObservable::GObservable()\n        : _eventsEnabled(true) {\n    // empty\n}\n\nGObservable::~GObservable() {\n    // empty\n}\n\nvoid GObservable::clearEventListeners() {\n    _eventMap.clear();\n}\n\nvoid GObservable::ensureThreadSafety(const std::string& memberName) {\n    GThread::ensureThatThisIsTheQtGuiThread(memberName);\n}\n\nbool GObservable::eventsEnabled() const {\n    return _eventsEnabled;\n}\n\nvoid GObservable::fireEvent(GEvent& event) {\n    if (eventsEnabled()) {\n        event.setSource(this);\n        if (hasEventListener(event.getName())) {\n            _eventMap[event.getName()].fireEvent(event);\n        } else {\n            // put into global queue for waitForEvent calls\n            GEventQueue::instance()->enqueueEvent(event);\n        }\n    }\n}\n\nvoid GObservable::fireGEvent(QEvent* event,\n                             EventType eventType,\n                             const std::string& eventName) {\n    require::nonNull(event, \"GObservable::fireGEvent\", \"event\");\n    GEvent generalEvent(\n                /* class  */ MOUSE_EVENT,\n                /* type   */ eventType,\n                /* name   */ eventName,\n                /* source */ this);\n    generalEvent.setInternalEvent(event);\n    fireEvent(generalEvent);\n}\n\nvoid GObservable::fireGEvent(QCloseEvent* event,\n                             EventType eventType,\n                             const std::string& eventName) {\n    require::nonNull(event, \"GObservable::fireGEvent\", \"event\");\n    GEvent windowEvent(\n                /* class  */ WINDOW_EVENT,\n                /* type   */ eventType,\n                /* name   */ eventName,\n                /* source */ this);\n    windowEvent.setInternalEvent(event);\n    fireEvent(windowEvent);\n}\n\nvoid GObservable::fireGEvent(QKeyEvent* event,\n                             EventType eventType,\n                             const std::string& eventName) {\n    require::nonNull(event, \"GObservable::fireGEvent\", \"event\");\n    GEvent keyEvent(\n                /* class  */ KEY_EVENT,\n                /* type   */ eventType,\n                /* name   */ eventName,\n                /* source */ this);\n    keyEvent.setKeyCode(event->key());\n    std::string text = event->text().toStdString();\n    if (!text.empty()) {\n        keyEvent.setKeyChar(text);\n    } else {\n        // int keyChar = event->key() & 0x0000ffff & ~Qt::KeyboardModifierMask;\n        // keyEvent.setKeyChar((char) keyChar);\n    }\n    keyEvent.setModifiers(event->modifiers());\n    keyEvent.setInternalEvent(event);\n    fireEvent(keyEvent);\n}\n\nvoid GObservable::fireGEvent(QMouseEvent* event,\n                             EventType eventType,\n                             const std::string& eventName,\n                             const std::string& actionCommand) {\n    require::nonNull(event, \"GObservable::fireGEvent\", \"event\");\n    GEvent mouseEvent(\n                /* class  */ MOUSE_EVENT,\n                /* type   */ eventType,\n                /* name   */ eventName,\n                /* source */ this);\n    mouseEvent.setButton((int) event->button());\n    mouseEvent.setX(event->pos().x());\n    mouseEvent.setY(event->pos().y());\n    mouseEvent.setModifiers(event->modifiers());\n    mouseEvent.setActionCommand(actionCommand);\n    mouseEvent.setInternalEvent(event);\n    fireEvent(mouseEvent);\n}\n\nvoid GObservable::fireGEvent(QResizeEvent* event,\n                             EventType /* eventType */,\n                             const std::string& eventName) {\n    require::nonNull(event, \"GObservable::fireGEvent\", \"event\");\n    GEvent windowEvent(\n                /* class  */ WINDOW_EVENT,\n                /* type   */ WINDOW_RESIZED,\n                /* name   */ eventName,\n                /* source */ this);\n    windowEvent.setInternalEvent(event);\n    fireEvent(windowEvent);\n}\n\nvoid GObservable::fireGEvent(QTimerEvent* event,\n                             EventType /* eventType */,\n                             const std::string& /* eventName */) {\n    require::nonNull(event, \"GObservable::fireGEvent\", \"event\");\n    GEvent timerEvent(\n                /* class  */ TIMER_EVENT,\n                /* type   */ TIMER_TICKED,\n                /* name   */ \"timer\",\n                /* source */ this);\n    timerEvent.setInternalEvent(event);\n    fireEvent(timerEvent);\n}\n\nvoid GObservable::fireGEvent(QWheelEvent* event,\n                             EventType eventType,\n                             const std::string& eventName) {\n    require::nonNull(event, \"GObservable::fireGEvent\", \"event\");\n    GEvent wheelEvent(\n                /* class  */ MOUSE_EVENT,\n                /* type   */ eventType,\n                /* name   */ eventName,\n                /* source */ this);\n    wheelEvent.setButton((int) event->buttons());\n    wheelEvent.setX(event->position().x());\n    wheelEvent.setY(event->position().y());\n    wheelEvent.setModifiers(event->modifiers());\n    wheelEvent.setInternalEvent(event);\n    fireEvent(wheelEvent);\n}\n\nvoid GObservable::fireGEvent(QWindowStateChangeEvent* event,\n                             EventType eventType,\n                             const std::string& eventName) {\n    require::nonNull(event, \"GObservable::fireGEvent\", \"event\");\n    GEvent windowEvent(\n                /* class  */ WINDOW_EVENT,\n                /* type   */ eventType,\n                /* name   */ eventName,\n                /* source */ this);\n    windowEvent.setInternalEvent(event);\n    fireEvent(windowEvent);\n}\n\nbool GObservable::isAcceptingEvent(const std::string& eventType) const {\n    if (hasEventListener(eventType)) {\n        return true;\n    }\n    int eventMask = ANY_EVENT;\n    if (startsWith(eventType, \"action\")) {\n        eventMask = ACTION_EVENT;\n    } else if (startsWith(eventType, \"change\")) {\n        eventMask = CHANGE_EVENT;\n    } else if (startsWith(eventType, \"key\")) {\n        eventMask = KEY_EVENT;\n    } else if (startsWith(eventType, \"mouse\")) {\n        eventMask = MOUSE_EVENT;\n    } else if (startsWith(eventType, \"server\")) {\n        eventMask = SERVER_EVENT;\n    } else if (startsWith(eventType, \"table\")) {\n        eventMask = TABLE_EVENT;\n    } else if (startsWith(eventType, \"timer\")) {\n        eventMask = TIMER_EVENT;\n    } else if (startsWith(eventType, \"window\")) {\n        eventMask = WINDOW_EVENT;\n    }\n    return isAcceptingEvent(eventMask);\n}\n\nbool GObservable::isAcceptingEvent(const GEvent& event) const {\n    return isAcceptingEvent(event.getName());\n}\n\nbool GObservable::hasEventListener(const std::string& eventName) const {\n    return _eventMap.containsKey(eventName);\n}\n\nbool GObservable::isAcceptingEvent(int eventMask) const {\n    return GEventQueue::instance()->isAcceptingEvent(eventMask);\n}\n\nvoid GObservable::removeEventListener(const std::string& eventName) {\n    _eventMap.remove(eventName);\n}\n\nvoid GObservable::removeEventListeners(std::initializer_list<std::string> eventNames) {\n    for (std::string eventName : eventNames) {\n        removeEventListener(eventName);\n    }\n}\n\nvoid GObservable::setEventListener(const std::string& eventName, GEventListener func) {\n    GEvent::EventListenerWrapper wrapper;\n    wrapper.type = GEvent::HANDLER_EVENT;\n    wrapper.handler = func;\n    _eventMap[eventName] = wrapper;\n}\n\nvoid GObservable::setEventListener(const std::string& eventName, GEventListenerVoid func) {\n    GEvent::EventListenerWrapper wrapper;\n    wrapper.type = GEvent::HANDLER_VOID;\n    wrapper.handlerVoid = func;\n    _eventMap[eventName] = wrapper;\n}\n\nvoid GObservable::setEventListeners(std::initializer_list<std::string> eventNames, GEventListener func) {\n    for (std::string eventName : eventNames) {\n        setEventListener(eventName, func);\n    }\n}\n\nvoid GObservable::setEventListeners(std::initializer_list<std::string> eventNames, GEventListenerVoid func) {\n    for (std::string eventName : eventNames) {\n        setEventListener(eventName, func);\n    }\n}\n\nvoid GObservable::setEventsEnabled(bool eventsEnabled) {\n    _eventsEnabled = eventsEnabled;\n}\n\nstd::string GObservable::toString() const {\n    std::ostringstream out;\n    out << getType() << \"@\" << this;\n    return out.str();\n}\n"
  },
  {
    "path": "Library/graphics/gobservable.h",
    "content": "/*\n * File: gobservable.h\n * --------------------\n *\n * @author Marty Stepp\n * @version 2018/09/08\n * - added doc comments for new documentation generation\n * @version 2018/08/23\n * - renamed to gobservable.h to replace Java version\n * @version 2018/07/11\n * - initial version\n */\n\n\n#ifndef _gobservable_h\n#define _gobservable_h\n\n#include <functional>\n#include <string>\n#include <QtEvents>\n\n#include \"gevent.h\"\n#include \"map.h\"\n\nclass GInteractor;\nclass _Internal_QWidget;\n\n/**\n * A GObservable object is one that is able to send out events.\n * Listeners can register themselves to be notified when events occur.\n * This serves as a base class for the various GInteractor subclasses, as well\n * as for the GWindow class, so that clients can attach listeners to them.\n */\nclass GObservable {\npublic:\n    /**\n     * Initializes a newly created observable object.\n     */\n    GObservable();\n\n    /**\n     * Frees any memory used internally by the observable object.\n     */\n    virtual ~GObservable();\n\n    /**\n     * Returns true if the object is currently allowing itself to fire events.\n     * Initially this is true unless the client has called\n     * <code>setEventsEnabled(false)</code> or the object is not visible.\n     */\n    virtual bool eventsEnabled() const;\n\n    /**\n     * Returns the concrete type of the object as a string, such as\n     * <code>\"GButton\"</code> or <code>\"GWindow\"</code>.\n     * Each GObservable subtype must override this method.\n     */\n    virtual std::string getType() const = 0;\n\n    /**\n     * Sets whether the object is currently allowing itself to fire events.\n     * Initially this is true.\n     */\n    virtual void setEventsEnabled(bool eventsEnabled);\n\n    /**\n     * Returns a string representation of this observable object's state.\n     * Primarily used for debugging purposes.\n     */\n    virtual std::string toString() const;\n\nprotected:\n    /**\n     * Removes all event listeners from this object.\n     */\n    virtual void clearEventListeners();\n\n    /**\n     * Ensures that we are currently in the Qt GUI thread.\n     */\n    virtual void ensureThreadSafety(const std::string& memberName = \"\");\n\n    /**\n     * Sends out the given event to any attached listeners.\n     */\n    virtual void fireEvent(GEvent& event);\n\n    /**\n     * Creates an event of the given type, then sends it out to any\n     * attached listeners.\n     */\n    virtual void fireGEvent(QEvent* event, EventType eventType, const std::string& eventName);\n\n    /**\n     * Creates an event of the given type, then sends it out to any\n     * attached listeners.\n     */\n    virtual void fireGEvent(QCloseEvent* event, EventType eventType, const std::string& eventName);\n\n    /**\n     * Creates an event of the given type, then sends it out to any\n     * attached listeners.\n     */\n    virtual void fireGEvent(QKeyEvent* event, EventType eventType, const std::string& eventName);\n\n    /**\n     * Creates an event of the given type, then sends it out to any\n     * attached listeners.\n     */\n    virtual void fireGEvent(QMouseEvent* event, EventType eventType, const std::string& eventName, const std::string& actionCommand = \"\");\n\n    /**\n     * Creates an event of the given type, then sends it out to any\n     * attached listeners.\n     */\n    virtual void fireGEvent(QResizeEvent* event, EventType eventType, const std::string& eventName);\n\n    /**\n     * Creates an event of the given type, then sends it out to any\n     * attached listeners.\n     */\n    virtual void fireGEvent(QTimerEvent* event, EventType eventType, const std::string& eventName);\n\n    /**\n     * Creates an event of the given type, then sends it out to any\n     * attached listeners.\n     */\n    virtual void fireGEvent(QWheelEvent* event, EventType eventType, const std::string& eventName);\n\n    /**\n     * Creates an event of the given type, then sends it out to any\n     * attached listeners.\n     */\n    virtual void fireGEvent(QWindowStateChangeEvent* event, EventType eventType, const std::string& eventName);\n\n    /**\n     * Returns true if the observable object has a listener for the given type\n     * of event.\n     */\n    virtual bool hasEventListener(const std::string& eventName) const;\n\n    /**\n     * Returns true if the observable object has a listener for the given type\n     * of event.\n     * See gevent.h for event types and masks.\n     */\n    virtual bool isAcceptingEvent(int eventMask) const;\n\n    /**\n     * Returns true if the observable object has a listener for the given type\n     * of event.\n     */\n    virtual bool isAcceptingEvent(const GEvent& event) const;\n\n    /**\n     * Returns true if the observable object has a listener for the given type\n     * of event.\n     */\n    virtual bool isAcceptingEvent(const std::string& eventType) const;\n\n    /**\n     * Removes any event listener from this observable object that would respond\n     * to the given type of event, such as \"click\" or \"keydown\".\n     */\n    virtual void removeEventListener(const std::string& eventName);\n\n    /**\n     * Removes any event listener from this observable object that would respond\n     * to the given types of events, such as \"click\" or \"keydown\".\n     */\n    virtual void removeEventListeners(std::initializer_list<std::string> eventNames);\n\n    /**\n     * Adds an event listener from this observable object to respond\n     * to the given type of event, such as \"click\" or \"keydown\".\n     * Any prior listener for that type of event is replaced.\n     */\n    virtual void setEventListener(const std::string& eventName, GEventListener func);\n\n    /**\n     * Adds an event listener from this observable object to respond\n     * to the given type of event, such as \"click\" or \"keydown\".\n     * Any prior listener for that type of event is replaced.\n     */\n    virtual void setEventListener(const std::string& eventName, GEventListenerVoid func);\n\n    /**\n     * Adds an event listener from this observable object to respond\n     * to the given types of events, such as \"click\" or \"keydown\".\n     * Any prior listener for those types of event are replaced.\n     */\n    virtual void setEventListeners(std::initializer_list<std::string> eventNames, GEventListener func);\n\n    /**\n     * Adds an event listener from this observable object to respond\n     * to the given types of events, such as \"click\" or \"keydown\".\n     * Any prior listener for those types of event are replaced.\n     */\n    virtual void setEventListeners(std::initializer_list<std::string> eventNames, GEventListenerVoid func);\n\nprivate:\n    Map<std::string, GEvent::EventListenerWrapper> _eventMap;\n    bool _eventsEnabled;\n\n    // allow all interactors and their inner QWidgets to call observable methods\n    friend class GInteractor;\n    friend class _Internal_QWidget;\n};\n\n#endif // _gobservable_h\n"
  },
  {
    "path": "Library/graphics/goptionpane.cpp",
    "content": "/*\n * File: goptionpane.cpp\n * ---------------------\n *\n * This code is largely copied from goptionpane.cpp and modified to use\n * Qt's QMessageBox and QInputDialog classes.\n *\n * @author Marty Stepp\n * @version 2019/04/23\n * - can press Esc to close a TextFileDialog\n * @version 2018/12/28\n * - bug fix for auto mnemonics/hotkeys in showOptionDialog\n * @version 2018/11/14\n * - added mnemonics/hotkey to showOptionDialog window option buttons\n * - added Cancel logic to Escape out of showOptionDialog window\n * @version 2018/10/18\n * - bug fix for showOptionDialog to run on Qt GUI thread\n * @version 2018/08/23\n * - renamed to goptionpane.cpp to replace Java version\n * @version 2018/06/28\n * - initial version\n */\n\n#include \"goptionpane.h\"\n#include <QInputDialog>\n#include <QMessageBox>\n#include <QWidget>\n#include \"error.h\"\n#include \"gbutton.h\"\n#include \"gtextarea.h\"\n#include \"gthread.h\"\n#include \"gwindow.h\"\n#include \"set.h\"\n\nGOptionPane::GOptionPane() {\n    // empty\n}\n\nGOptionPane::ConfirmResult GOptionPane::showConfirmDialog(const std::string& message,\n                                                          const std::string& title,\n                                                          ConfirmType type) {\n    return showConfirmDialog(/* parent */ static_cast<QWidget*>(nullptr), message, title, type);\n}\n\nGOptionPane::ConfirmResult GOptionPane::showConfirmDialog(GWindow* parent,\n                                                          const std::string& message,\n                                                          const std::string& title,\n                                                          ConfirmType type) {\n    return showConfirmDialog(parent ? parent->getWidget() : nullptr, message, title, type);\n}\n\nGOptionPane::ConfirmResult GOptionPane::showConfirmDialog(QWidget* parent,\n                                                          const std::string& message,\n                                                          const std::string& title,\n                                                          ConfirmType type) {\n    if (type != GOptionPane::ConfirmType::CONFIRM_YES_NO\n            && type != GOptionPane::ConfirmType::CONFIRM_YES_NO_CANCEL\n            && type != GOptionPane::ConfirmType::CONFIRM_OK_CANCEL) {\n        error(\"GOptionPane::showConfirmDialog: Illegal dialog type\");\n    }\n    std::string titleToUse = title.empty() ? std::string(\"Select an option\") : title;\n\n    // convert our enum types to Qt's button enum type\n    QMessageBox::StandardButtons buttons;\n    QMessageBox::StandardButton defaultButton = QMessageBox::Cancel;\n    if (type == GOptionPane::ConfirmType::CONFIRM_YES_NO) {\n        buttons = QMessageBox::Yes | QMessageBox::No;\n        defaultButton = QMessageBox::No;\n    } else if (type == GOptionPane::ConfirmType::CONFIRM_YES_NO_CANCEL) {\n        buttons = QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel;\n    } else if (type == GOptionPane::ConfirmType::CONFIRM_OK_CANCEL) {\n        buttons = QMessageBox::Ok | QMessageBox::Cancel;\n    }\n\n    GOptionPane::ConfirmResult confirmResult = GOptionPane::CONFIRM_CANCEL;\n    GThread::runOnQtGuiThread([parent, titleToUse, message, buttons, defaultButton, &confirmResult]() {\n        int dialogResult = QMessageBox::question(parent,\n                QString::fromStdString(titleToUse),\n                QString::fromStdString(message),\n                buttons,\n                defaultButton);\n        switch (dialogResult) {\n            case QMessageBox::Ok:\n                confirmResult = GOptionPane::ConfirmResult::CONFIRM_OK;\n                break;\n            case QMessageBox::Yes:\n                confirmResult = GOptionPane::ConfirmResult::CONFIRM_YES;\n                break;\n            case QMessageBox::No:\n                confirmResult = GOptionPane::ConfirmResult::CONFIRM_NO;\n                break;\n            case QMessageBox::Cancel:\n            default:\n                confirmResult = GOptionPane::ConfirmResult::CONFIRM_CANCEL;\n                break;\n        }\n    });\n    return confirmResult;\n}\n\nstd::string GOptionPane::showInputDialog(const std::string& message,\n                                         const std::string& title,\n                                         const std::string& initialValue) {\n    return showInputDialog(/* parent */ static_cast<QWidget*>(nullptr), message, title, initialValue);\n}\n\nstd::string GOptionPane::showInputDialog(GWindow* parent,\n                                         const std::string& message,\n                                         const std::string& title,\n                                         const std::string& initialValue) {\n    return showInputDialog(parent ? parent->getWidget() : nullptr, message, title, initialValue);\n}\n\nstd::string GOptionPane::showInputDialog(QWidget* parent,\n                                         const std::string& message,\n                                         const std::string& title,\n                                         const std::string& initialValue) {\n    std::string titleToUse = title.empty() ? std::string(\"Type a value\") : title;\n    std::string result = \"\";\n    GThread::runOnQtGuiThread([parent, titleToUse, message, initialValue, &result]() {\n        result = QInputDialog::getText(parent,\n                QString::fromStdString(titleToUse),\n                QString::fromStdString(message),\n                QLineEdit::Normal,\n                QString::fromStdString(initialValue)).toStdString();\n    });\n    return result;\n}\n\nvoid GOptionPane::showMessageDialog(const std::string& message,\n                                    const std::string& title,\n                                    MessageType type) {\n    showMessageDialog(/* parent */ static_cast<QWidget*>(nullptr), message, title, type);\n}\n\nvoid GOptionPane::showMessageDialog(GWindow* parent,\n                                    const std::string& message,\n                                    const std::string& title,\n                                    MessageType type) {\n    showMessageDialog(parent ? parent->getWidget() : nullptr, message, title, type);\n}\n\nvoid GOptionPane::showMessageDialog(QWidget* parent,\n                                    const std::string& message,\n                                    const std::string& title,\n                                    MessageType type) {\n    if (type != GOptionPane::MessageType::MESSAGE_PLAIN\n            && type != GOptionPane::MessageType::MESSAGE_INFORMATION\n            && type != GOptionPane::MessageType::MESSAGE_ERROR\n            && type != GOptionPane::MessageType::MESSAGE_WARNING\n            && type != GOptionPane::MessageType::MESSAGE_QUESTION\n            && type != GOptionPane::MessageType::MESSAGE_ABOUT) {\n        error(\"GOptionPane::showMessageDialog: Illegal dialog type\");\n    }\n    std::string titleToUse = title.empty() ? std::string(\"Message\") : title;\n\n    GThread::runOnQtGuiThread([parent, message, titleToUse, type]() {\n        if (type == GOptionPane::MessageType::MESSAGE_PLAIN\n                || type == GOptionPane::MessageType::MESSAGE_INFORMATION\n                || type == GOptionPane::MessageType::MESSAGE_QUESTION) {\n            QMessageBox::information(parent, QString::fromStdString(titleToUse), QString::fromStdString(message));\n        } else if (type == GOptionPane::MessageType::MESSAGE_WARNING) {\n            QMessageBox::warning(parent, QString::fromStdString(titleToUse), QString::fromStdString(message));\n        } else if (type == GOptionPane::MessageType::MESSAGE_ERROR) {\n            QMessageBox::critical(parent, QString::fromStdString(titleToUse), QString::fromStdString(message));\n        } else if (type == GOptionPane::MessageType::MESSAGE_ABOUT) {\n            QMessageBox::about(parent, QString::fromStdString(titleToUse), QString::fromStdString(message));\n        }\n    });\n}\n\nstd::string GOptionPane::showOptionDialog(const std::string& message,\n                                          const Vector<std::string>& options,\n                                          const std::string& title,\n                                          const std::string& initiallySelected) {\n    return showOptionDialog(/* parent */ static_cast<QWidget*>(nullptr), message, options, title, initiallySelected);\n}\n\nstd::string GOptionPane::showOptionDialog(GWindow* parent,\n                                          const std::string& message,\n                                          const Vector<std::string>& options,\n                                          const std::string& title,\n                                          const std::string& initiallySelected) {\n    return showOptionDialog(parent ? parent->getWidget() : nullptr, message, options, title, initiallySelected);\n}\n\nstd::string GOptionPane::showOptionDialog(QWidget* parent,\n                                          const std::string& message,\n                                          const Vector<std::string>& options,\n                                          const std::string& title,\n                                          const std::string& initiallySelected) {\n    std::string titleToUse = title.empty() ? std::string(\"Select an option\") : title;\n    std::string result = \"\";\n    GThread::runOnQtGuiThread([parent, message, &options, titleToUse, initiallySelected, &result]() {\n        QMessageBox box;\n        if (parent) {\n            box.setParent(parent);\n        }\n        box.setText(QString::fromStdString(message));\n        box.setWindowTitle(QString::fromStdString(titleToUse)); // FYI: title for alert ignored on MacOS (per docs)\n        box.setAttribute(Qt::WA_QuitOnClose, false);\n\n        for (std::string option : options) {\n            box.addButton(QString::fromStdString(option), QMessageBox::ActionRole);\n        }\n\n        if (!initiallySelected.empty()) {\n            // TODO: dunno how to set initially selected button properly\n            // box.setDefaultButton(QString::fromStdString(initiallySelected));\n        }\n\n        // give each button a unique hotkey; listen to key presses on buttons\n        // (try to set char at index 0, 1, 2 as the mnemonic)\n        Set<QAbstractButton*> buttonsUsed;\n        Set<std::string> charsUsed;\n        QAbstractButton* escapeButton = nullptr;\n        int escapeButtonIndex = -1;\n\n        for (int i = 0; i <= 2; i++) {\n            int buttonIndex = 0;\n            for (QAbstractButton* button : box.buttons()) {\n                if (buttonsUsed.contains(button)) {\n                    buttonIndex++;\n                    continue;\n                }\n\n                std::string text = button->text().toStdString();\n                if (!escapeButton && text == \"Cancel\") {\n                    escapeButton = button;\n                    escapeButtonIndex = buttonIndex;\n                }\n                if (static_cast<int>(text.length()) <= i) {\n                    buttonIndex++;\n                    continue;\n                }\n                std::string letter = text.substr(i, 1);\n                if (charsUsed.contains(letter)) {\n                    buttonIndex++;\n                    continue;\n                }\n\n                buttonsUsed.add(button);\n                charsUsed.add(letter);\n                button->setText(QString::fromStdString(text.substr(0, i) + \"&\" + text.substr(i)));\n                button->setShortcut(QKeySequence::fromString(QString::fromStdString(letter)));\n                buttonIndex++;\n            }\n        }\n\n        // set listener to close window when Esc is pressed\n        if (escapeButton) {\n            box.setEscapeButton(escapeButton);\n        }\n\n        int index = box.exec();\n        int i = 0, clicked = -1;\n        // on macOS exec doesn't return index of selected option, need to find manually\n        for (QAbstractButton* button : box.buttons()) {\n            if (box.clickedButton() == button) {\n                clicked = i;\n                break;\n            }\n            i++;\n        }\n        if (clicked >= 0 && clicked < options.size()) {\n            index = clicked;\n        }\n        if (index == GOptionPane::InternalResult::INTERNAL_CLOSED_OPTION\n                || index < 0 || index >= options.size()\n                || (escapeButtonIndex >= 0 && index == escapeButtonIndex)) {\n            result = \"\";\n        } else {\n            result = options[index];\n        }\n    });\n    return result;\n}\n\nvoid GOptionPane::showTextFileDialog(const std::string& fileText,\n                                     const std::string& title,\n                                     int rows,\n                                     int cols) {\n    showTextFileDialog(static_cast<QWidget*>(nullptr), fileText, title, rows, cols);\n}\n\nvoid GOptionPane::showTextFileDialog(GWindow* parent,\n                                     const std::string& fileText,\n                                     const std::string& title,\n                                     int rows,\n                                     int cols) {\n    showTextFileDialog(parent ? parent->getWidget() : nullptr, fileText, title, rows, cols);\n}\n\nvoid GOptionPane::showTextFileDialog(QWidget* /*parent*/,\n                                     const std::string& fileText,\n                                     const std::string& title,\n                                     int rows,\n                                     int cols) {\n    static const std::string DEFAULT_FONT = \"Monospaced-*-*\";\n    static const int DEFAULT_ROWS    = 20;\n    static const int DEFAULT_COLUMNS = 80;\n    if (rows <= 0) {\n        rows = DEFAULT_ROWS;\n    }\n    if (cols <= 0) {\n        cols = DEFAULT_COLUMNS;\n    }\n\n    std::string titleToUse = title.empty() ? std::string(\"Text file contents\") : title;\n    GWindow* window = new GWindow;\n    window->setTitle(title);\n\n    GTextArea* textArea = new GTextArea(fileText);\n    textArea->setFont(DEFAULT_FONT);\n    textArea->setRowsColumns(DEFAULT_ROWS, DEFAULT_COLUMNS);\n    window->addToRegion(textArea, GWindow::REGION_CENTER);\n\n    GButton* button = new GButton(\"&OK\");\n    button->setActionListener([window]() {\n        window->close();\n    });\n    window->addToRegion(button, GWindow::REGION_SOUTH);\n\n    // function to close the window when Escape is pressed\n    // (similar to code in gdiffgui.cpp and gdiffimage.cpp)\n    auto windowCloseLambda = [window](GEvent event) {\n        if (event.getType() == KEY_PRESSED && event.getKeyChar() == GEvent::ESCAPE_KEY) {\n            window->close();\n        }\n    };\n    window->setKeyListener(windowCloseLambda);\n    textArea->setKeyListener(windowCloseLambda);\n    button->setKeyListener(windowCloseLambda);\n\n    window->pack();\n    window->center();\n    window->show();\n}\n"
  },
  {
    "path": "Library/graphics/goptionpane.h",
    "content": "/*\n * File: goptionpane.h\n * -------------------\n *\n * @author Marty Stepp\n * @version 2018/09/23\n * - renamed enum constants to avoid name collisions (may break some client code)\n * @version 2018/09/08\n * - added doc comments for new documentation generation\n * @version 2018/08/23\n * - renamed to goptionpane.h to replace Java version\n * @version 2018/06/28\n * - initial version\n */\n\n\n#ifndef _goptionpane_h\n#define _goptionpane_h\n\n#include <string>\n\n#include \"ginteractor.h\"\n#include \"vector.h\"\n\n// forward declaration\nclass GWindow;\n\n/**\n * This class provides static methods that pop up graphical input/output dialog\n * boxes on the screen.\n */\nclass GOptionPane {\npublic:\n    /**\n     * Types used by showConfirmDialog, representing the three kinds of\n     * confirmation dialogs: Yes/No, Yes/No/Cancel, or OK/Cancel.\n     */\n    enum ConfirmType {\n        CONFIRM_YES_NO = 0,\n        CONFIRM_YES_NO_CANCEL = 1,\n        CONFIRM_OK_CANCEL = 2\n    };\n\n    /**\n     * The various results that can be returned from some option dialogs.\n     * Note that NO has the value 0 and YES/OK have nonzero values, so you\n     * can use a ConfirmResult in a boolean context.\n     */\n    enum ConfirmResult {\n        CONFIRM_CANCEL = -1,   // for yes/no/cancel dialogs\n        CONFIRM_NO = 0,        // 0 so that 'no' is 'falsey'\n        CONFIRM_YES = 1,       // 1 so that 'yes' is 'truthy'\n        CONFIRM_OK = 2         // for ok/cancel dialogs\n    };\n\n    /**\n     * Types used by showMessageDialog, representing the various kinds of\n     * message dialogs.  The type often slightly varies the dialog's appearance,\n     * such as changing its icons or font.\n     */\n    enum MessageType {\n        MESSAGE_ERROR = 0,\n        MESSAGE_INFORMATION = 1,\n        MESSAGE_PLAIN = -1,\n        MESSAGE_WARNING = 2,\n        MESSAGE_QUESTION = 3,\n        MESSAGE_ABOUT = 4\n    };\n\n    /**\n     * Pops up a yes/no confirmation box.\n     * Once the user clicks a button to close the box, one of the\n     * GOptionPaneResult enumeration constants is returned.\n     * The caller can supply an optional window title; if none is passed, a default is used.\n     */\n    static ConfirmResult showConfirmDialog(const std::string& message,\n                                           const std::string& title = \"\",\n                                           ConfirmType type = CONFIRM_YES_NO);\n\n    /**\n     * Pops up a yes/no confirmation box.\n     * Once the user clicks a button to close the box, one of the\n     * GOptionPaneResult enumeration constants is returned.\n     * The caller can supply an optional window title; if none is passed, a default is used.\n     */\n    static ConfirmResult showConfirmDialog(GWindow* parent,\n                                           const std::string& message,\n                                           const std::string& title = \"\",\n                                           ConfirmType type = CONFIRM_YES_NO);\n\n    /**\n     * Pops up a yes/no confirmation box.\n     * Once the user clicks a button to close the box, one of the\n     * GOptionPaneResult enumeration constants is returned.\n     * The caller can supply an optional window title; if none is passed, a default is used.\n     */\n    static ConfirmResult showConfirmDialog(QWidget* parent,\n                                           const std::string& message,\n                                           const std::string& title = \"\",\n                                           ConfirmType type = CONFIRM_YES_NO);\n\n    /**\n     * Pops up an input box with a text field where the user can type a\n     * response, which is returned.\n     * The caller can supply an optional window title; if none is passed, a default is used.\n     * If the user cancels the box, an empty string is returned.\n     */\n    static std::string showInputDialog(const std::string& message,\n                                       const std::string& title = \"\",\n                                       const std::string& initialValue = \"\");\n\n    /**\n     * Pops up an input box with a text field where the user can type a\n     * response, which is returned.\n     * The caller can supply an optional window title; if none is passed, a default is used.\n     * If the user cancels the box, an empty string is returned.\n     */\n    static std::string showInputDialog(GWindow* parent,\n                                       const std::string& message,\n                                       const std::string& title = \"\",\n                                       const std::string& initialValue = \"\");\n\n    /**\n     * Pops up an input box with a text field where the user can type a\n     * response, which is returned.\n     * The caller can supply an optional window title; if none is passed, a default is used.\n     * If the user cancels the box, an empty string is returned.\n     */\n    static std::string showInputDialog(QWidget* parent,\n                                       const std::string& message,\n                                       const std::string& title = \"\",\n                                       const std::string& initialValue = \"\");\n\n    /**\n     * Displays an output message dialog to the user.\n     * The user must click the 'OK' button to close the dialog.\n     * The caller can supply an optional window title; if none is passed, a default is used.\n     * The optional 'type' parameter must be one of PLAIN_MESSAGE, INFORMATION_MESSAGE,\n     * WARNING_MESSAGE, or QUESTION_MESSAGE; this slightly affects the dialog's\n     * appearance.  The default is PLAIN_MESSAGE.\n     */\n    static void showMessageDialog(const std::string& message,\n                                  const std::string& title = \"\",\n                                  MessageType type = MESSAGE_PLAIN);\n\n    /**\n     * Displays an output message dialog to the user.\n     * The user must click the 'OK' button to close the dialog.\n     * The caller can supply an optional window title; if none is passed, a default is used.\n     * The optional 'type' parameter must be one of PLAIN_MESSAGE, INFORMATION_MESSAGE,\n     * WARNING_MESSAGE, or QUESTION_MESSAGE; this slightly affects the dialog's\n     * appearance.  The default is PLAIN_MESSAGE.\n     */\n    static void showMessageDialog(GWindow* parent,\n                                  const std::string& message,\n                                  const std::string& title = \"\",\n                                  MessageType type = MESSAGE_PLAIN);\n\n    /**\n     * Displays an output message dialog to the user.\n     * The user must click the 'OK' button to close the dialog.\n     * The caller can supply an optional window title; if none is passed, a default is used.\n     * The optional 'type' parameter must be one of PLAIN_MESSAGE, INFORMATION_MESSAGE,\n     * WARNING_MESSAGE, or QUESTION_MESSAGE; this slightly affects the dialog's\n     * appearance.  The default is PLAIN_MESSAGE.\n     */\n    static void showMessageDialog(QWidget* parent,\n                                  const std::string& message,\n                                  const std::string& title = \"\",\n                                  MessageType type = MESSAGE_PLAIN);\n\n    /**\n     * Shows a general input box with a set of buttons from which the user may\n     * choose one option.  The button the user clicks is returned as a string.\n     * If the user cancels the box, an empty string is returned.\n     * The caller can supply an optional window title; if none is passed, a default is used.\n     * The caller can supply an optional initially selected value from the list.\n     */\n    static std::string showOptionDialog(const std::string& message,\n                                        const Vector<std::string>& options,\n                                        const std::string& title = \"\",\n                                        const std::string& initiallySelected = \"\");\n\n    /**\n     * Shows a general input box with a set of buttons from which the user may\n     * choose one option.  The button the user clicks is returned as a string.\n     * If the user cancels the box, an empty string is returned.\n     * The caller can supply an optional window title; if none is passed, a default is used.\n     * The caller can supply an optional initially selected value from the list.\n     */\n    static std::string showOptionDialog(GWindow* parent,\n                                        const std::string& message,\n                                        const Vector<std::string>& options,\n                                        const std::string& title = \"\",\n                                        const std::string& initiallySelected = \"\");\n\n    /**\n     * Shows a general input box with a set of buttons from which the user may\n     * choose one option.  The button the user clicks is returned as a string.\n     * If the user cancels the box, an empty string is returned.\n     * The caller can supply an optional window title; if none is passed, a default is used.\n     * The caller can supply an optional initially selected value from the list.\n     */\n    static std::string showOptionDialog(QWidget* parent,\n                                        const std::string& message,\n                                        const Vector<std::string>& options,\n                                        const std::string& title = \"\",\n                                        const std::string& initiallySelected = \"\");\n\n    /**\n     * Displays the given text in a scrolling monospaced text area.\n     * rows/cols parameters control size to show; set to <= 0 for a default limit.\n     */\n    static void showTextFileDialog(const std::string& fileText,\n                                   const std::string& title = \"\",\n                                   int rows = -1, int cols = -1);\n\n    /**\n     * Displays the given text in a scrolling monospaced text area.\n     * rows/cols parameters control size to show; set to <= 0 for a default limit.\n     */\n    static void showTextFileDialog(GWindow* parent,\n                                   const std::string& fileText,\n                                   const std::string& title = \"\",\n                                   int rows = -1, int cols = -1);\n\n    /**\n     * Displays the given text in a scrolling monospaced text area.\n     * rows/cols parameters control size to show; set to <= 0 for a default limit.\n     */\n    static void showTextFileDialog(QWidget* parent,\n                                   const std::string& fileText,\n                                   const std::string& title = \"\",\n                                   int rows = -1, int cols = -1);\n\nprivate:\n    /**\n     * Private constructor so that clients don't try to construct\n     * GOptionPane objects.  The class is meant to be used via its\n     * static methods, not by instantiation.\n     */\n    GOptionPane();\n\n    /**\n     * The results that can come back from showConfirmDialog.\n     * These are converted into Result enum values.\n     */\n    enum InternalResult {\n        INTERNAL_CANCEL_OPTION = 2,\n        INTERNAL_CLOSED_OPTION = -1,\n        INTERNAL_NO_OPTION = 1,\n        INTERNAL_OK_OPTION = 0,\n        INTERNAL_YES_OPTION = 0\n    };\n};\n\n#endif // _goptionpane_h\n"
  },
  {
    "path": "Library/graphics/gradiobutton.cpp",
    "content": "/*\n * File: gradiobutton.cpp\n * ----------------------\n *\n * @author Marty Stepp\n * @version 2019/04/23\n * - added key event support\n * @version 2019/02/02\n * - destructor now stops event processing\n * @version 2018/10/06\n * - added toggle()\n * @version 2018/09/04\n * - added double-click event support\n * @version 2018/08/23\n * - renamed to gradiobutton.cpp to replace Java version\n * @version 2018/06/25\n * - initial version\n */\n\n#include \"gradiobutton.h\"\n#include \"gthread.h\"\n#include \"require.h\"\n\nMap<std::string, QButtonGroup*> GRadioButton::_buttonGroups;\n\nGRadioButton::GRadioButton(const std::string& text, const std::string& group, bool checked, QWidget* parent) {\n    GThread::runOnQtGuiThread([this, text, group, checked, parent]() {\n        _iqradioButton = new _Internal_QRadioButton(this, checked, getInternalParent(parent));\n        QButtonGroup* buttonGroup = getButtonGroup(group);\n        buttonGroup->addButton(_iqradioButton);\n    });\n    setText(text);\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGRadioButton::~GRadioButton() {\n    // TODO: delete _iqradioButton;\n    _iqradioButton->detach();\n    _iqradioButton = nullptr;\n}\n\nstd::string GRadioButton::getActionCommand() const {\n    if (_actionCommand.empty()) {\n        return getText();\n    } else {\n        return _actionCommand;\n    }\n}\n\nstd::string GRadioButton::getActionEventType() const {\n    return \"change\";\n}\n\n_Internal_QWidget* GRadioButton::getInternalWidget() const {\n    return _iqradioButton;\n}\n\nstd::string GRadioButton::getText() const {\n    return _iqradioButton->text().toStdString();\n}\n\nstd::string GRadioButton::getType() const {\n    return \"GRadioButton\";\n}\n\nQWidget* GRadioButton::getWidget() const {\n    return static_cast<QWidget*>(_iqradioButton);\n}\n\nbool GRadioButton::isChecked() const {\n    return _iqradioButton->isChecked();\n}\n\nbool GRadioButton::isSelected() const {\n    return _iqradioButton->isChecked();\n}\n\nvoid GRadioButton::setChecked(bool checked) {\n    GThread::runOnQtGuiThread([this, checked]() {\n        _iqradioButton->setChecked(checked);\n    });\n}\n\nvoid GRadioButton::setSelected(bool selected) {\n    setChecked(selected);\n}\n\nvoid GRadioButton::setText(const std::string& text) {\n    GThread::runOnQtGuiThread([this, text]() {\n        _iqradioButton->setText(QString::fromStdString(text));\n    });\n}\n\nvoid GRadioButton::toggle() {\n    setChecked(!isChecked());\n}\n\n/* static */ QButtonGroup* GRadioButton::getButtonGroup(const std::string& group) {\n    if (!_buttonGroups.containsKey(group)) {\n        GThread::runOnQtGuiThread([group]() {\n            _buttonGroups.put(group, new QButtonGroup());\n        });\n    }\n    return _buttonGroups[group];\n}\n\n\n_Internal_QRadioButton::_Internal_QRadioButton(GRadioButton* gradioButton, bool checked, QWidget* parent)\n        : QRadioButton(parent),\n          _gradioButton(gradioButton) {\n    require::nonNull(gradioButton, \"_Internal_QRadioButton::constructor\");\n    setObjectName(QString::fromStdString(\"_Internal_QRadioButton_\" + std::to_string(gradioButton->getID())));\n    setChecked(checked);\n    // We handle the clicked signal rather than toggled because, in a radio button group,\n    // the toggled signal will fire twice: once for the radio button clicked, and once\n    // for the other button that was unchecked.\n    connect(this, SIGNAL(clicked()), this, SLOT(handleClick()));\n}\n\nvoid _Internal_QRadioButton::detach() {\n    _gradioButton = nullptr;\n}\n\nvoid _Internal_QRadioButton::handleClick() {\n    GEvent changeEvent(\n                /* class  */ CHANGE_EVENT,\n                /* type   */ STATE_CHANGED,\n                /* name   */ \"change\",\n                /* source */ _gradioButton);\n    changeEvent.setActionCommand(_gradioButton->getActionCommand());\n    _gradioButton->fireEvent(changeEvent);\n}\n\nvoid _Internal_QRadioButton::keyPressEvent(QKeyEvent* event) {\n    require::nonNull(event, \"_Internal_QRadioButton::keyPressEvent\", \"event\");\n    if (_gradioButton && _gradioButton->isAcceptingEvent(\"keypress\")) {\n        event->accept();\n        _gradioButton->fireGEvent(event, KEY_PRESSED, \"keypress\");\n        if (event->isAccepted()) {\n            QRadioButton::keyPressEvent(event);   // call super\n        }\n    } else {\n        QRadioButton::keyPressEvent(event);   // call super\n    }\n}\n\nvoid _Internal_QRadioButton::keyReleaseEvent(QKeyEvent* event) {\n    require::nonNull(event, \"_Internal_QRadioButton::keyReleaseEvent\", \"event\");\n    if (_gradioButton && _gradioButton->isAcceptingEvent(\"keyrelease\")) {\n        event->accept();\n        _gradioButton->fireGEvent(event, KEY_RELEASED, \"keyrelease\");\n        if (event->isAccepted()) {\n            QRadioButton::keyReleaseEvent(event);   // call super\n        }\n    } else {\n        QRadioButton::keyReleaseEvent(event);   // call super\n    }\n}\n\nvoid _Internal_QRadioButton::mouseDoubleClickEvent(QMouseEvent* event) {\n    require::nonNull(event, \"_Internal_QRadioButton::mouseDoubleClickEvent\");\n    QWidget::mouseDoubleClickEvent(event);   // call super\n    if (!_gradioButton) {\n        return;\n    }\n\n    emit doubleClicked();\n    if (!_gradioButton->isAcceptingEvent(\"doubleclick\")) {\n        return;\n    }\n    GEvent mouseEvent(\n                /* class  */ MOUSE_EVENT,\n                /* type   */ MOUSE_DOUBLE_CLICKED,\n                /* name   */ \"doubleclick\",\n                /* source */ _gradioButton);\n    mouseEvent.setActionCommand(_gradioButton->getActionCommand());\n    mouseEvent.setButton((int) event->button());\n    mouseEvent.setX(event->pos().x());\n    mouseEvent.setY(event->pos().y());\n    _gradioButton->fireEvent(mouseEvent);\n}\n\nQSize _Internal_QRadioButton::sizeHint() const {\n    if (hasPreferredSize()) {\n        return getPreferredSize();\n    } else {\n        return QRadioButton::sizeHint();\n    }\n}\n\n\n"
  },
  {
    "path": "Library/graphics/gradiobutton.h",
    "content": "/*\n * File: gradiobutton.h\n * --------------------\n *\n * @author Marty Stepp\n * @version 2019/04/23\n * - added key event support\n * @version 2018/10/06\n * - added toggle()\n * @version 2018/09/08\n * - added doc comments for new documentation generation\n * @version 2018/09/04\n * - added double-click event support\n * @version 2018/08/23\n * - renamed to gradiobutton.h to replace Java version\n * @version 2018/06/29\n * - added change event\n * @version 2018/06/25\n * - initial version\n */\n\n\n#ifndef _gradiobutton_h\n#define _gradiobutton_h\n\n#include <string>\n#include <QButtonGroup>\n#include <QRadioButton>\n\n#include \"ginteractor.h\"\n#include \"map.h\"\n\nclass _Internal_QRadioButton;\n\n/**\n * This interactor subclass represents an onscreen radio button.\n * Radio buttons are round buttons that can be \"checked\" by clicking them.\n * A radio button differs from a checkbox in that it is often part of a mutually\n * exclusive group of options, where at most one of the buttons can be checked\n * at a time.  Clicking one radio button from a group checks it and also unchecks\n * any other checked radio button from that same group.\n *\n * You can listen for clicks on a radio button by setting an action listener,\n * passing the function you want to call on each click.\n */\nclass GRadioButton : public GInteractor {\npublic:\n    /**\n     * Creates a new radio button with the given text.\n     * You can pass a string representing a logical group of radio buttons;\n     * if you do, this radio button will be internally managed so that at most\n     * one radio button from that group will be checked at any given time.\n     * If no group is supplied, the radio button is put into a default group.\n     */\n    GRadioButton(const std::string& text = \"\", const std::string& group = \"default\", bool checked = false, QWidget* parent = nullptr);\n\n    /**\n     * Frees memory allocated internally by the radio button.\n     */\n    ~GRadioButton() override;\n\n    /* @inherit */\n    std::string getActionCommand() const override;\n\n    /* @inherit */\n    _Internal_QWidget* getInternalWidget() const override;\n\n    /**\n     * Returns the text next to the radio button.\n     */\n    virtual std::string getText() const;\n\n    /* @inherit */\n    std::string getType() const override;\n\n    /* @inherit */\n    QWidget* getWidget() const override;\n\n    /**\n     * Returns true if the radio button is currently checked.\n     * Equivalent to isSelected.\n     */\n    virtual bool isChecked() const;\n\n    /**\n     * Returns true if the radio button is currently checked.\n     * Equivalent to isChecked.\n     */\n    virtual bool isSelected() const;\n\n    /**\n     * Sets whether the radio button should be checked.\n     * Equivalent to setSelected.\n     */\n    virtual void setChecked(bool checked);\n\n    /**\n     * Sets whether the radio button should be checked.\n     * Equivalent to setChecked.\n     */\n    virtual void setSelected(bool selected);\n\n    /**\n     * Sets the text that will appear next to the radio button.\n     */\n    virtual void setText(const std::string& text);\n\n    /**\n     * Reverses the checked state of the button, setting it to be checked if it\n     * was unchecked or to be unchecked if it was checked.\n     */\n    virtual void toggle();\n\nprotected:\n    /**\n     * @private\n     */\n    std::string getActionEventType() const override;\n\nprivate:\n    Q_DISABLE_COPY(GRadioButton)\n\n    static Map<std::string, QButtonGroup*> _buttonGroups;\n    static QButtonGroup* getButtonGroup(const std::string& group);\n\n    _Internal_QRadioButton* _iqradioButton;\n\n    friend class _Internal_QRadioButton;\n};\n\n\n/**\n * Internal class; not to be used by clients.\n * @private\n */\nclass _Internal_QRadioButton : public QRadioButton, public _Internal_QWidget {\n    Q_OBJECT\n\npublic:\n    _Internal_QRadioButton(GRadioButton* gradioButton, bool checked = false, QWidget* parent = nullptr);\n    void detach() override;\n    void keyPressEvent(QKeyEvent* event) override;\n    void keyReleaseEvent(QKeyEvent* event) override;\n    QSize sizeHint() const override;\n\nsignals:\n    void doubleClicked();\n\npublic slots:\n    void handleClick();\n\nprotected:\n    void mouseDoubleClickEvent(QMouseEvent* e) override;\n\nprivate:\n    GRadioButton* _gradioButton;\n\n    friend class GRadioButton;\n};\n\n#endif // _gradiobutton_h\n"
  },
  {
    "path": "Library/graphics/gscrollbar.cpp",
    "content": "/*\n * File: gscrollbar.cpp\n * --------------------\n *\n * @author Marty Stepp\n * @version 2019/02/02\n * - destructor now stops event processing\n * @version 2018/08/23\n * - renamed to gscrollbar.cpp to replace Java version\n * @version 2018/07/16\n * - initial version\n */\n\n#include \"gscrollbar.h\"\n#include \"gthread.h\"\n#include \"require.h\"\n\nGScrollBar::GScrollBar(GScrollBar::Orientation orientation,\n                         int value,\n                         int extent,\n                         int min,\n                         int max,\n                         QWidget* parent) {\n    GThread::runOnQtGuiThread([this, orientation, parent]() {\n        _iqscrollbar = new _Internal_QScrollBar(this, orientation == VERTICAL ? Qt::Vertical : Qt::Horizontal, getInternalParent(parent));\n    });\n    setState(value, extent, min, max);\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGScrollBar::~GScrollBar() {\n    // TODO: delete _iqscrollbar;\n    _iqscrollbar->detach();\n    _iqscrollbar = nullptr;\n}\n\nstd::string GScrollBar::getActionEventType() const {\n    return \"change\";\n}\n\nint GScrollBar::getExtent() const {\n    return _iqscrollbar->pageStep();\n}\n\n_Internal_QWidget* GScrollBar::getInternalWidget() const {\n    return _iqscrollbar;\n}\n\nint GScrollBar::getMax() const {\n    return _iqscrollbar->maximum();\n}\n\nint GScrollBar::getMin() const {\n    return _iqscrollbar->minimum();\n}\n\nGScrollBar::Orientation GScrollBar::getOrientation() const {\n    return _iqscrollbar->orientation() == Qt::Vertical ? VERTICAL : HORIZONTAL;\n}\n\nstd::string GScrollBar::getType() const {\n    return \"QGScrollBar\";\n}\n\nint GScrollBar::getValue() const {\n    return _iqscrollbar->value();\n}\n\nQWidget* GScrollBar::getWidget() const {\n    return static_cast<QWidget*>(_iqscrollbar);\n}\n\nvoid GScrollBar::setExtent(int extent) {\n    GThread::runOnQtGuiThread([this, extent]() {\n        _iqscrollbar->setPageStep(extent);\n    });\n}\n\nvoid GScrollBar::setMax(int max) {\n    int min = getMin();\n    require::require(min <= max, \"GScrollBar::setMax\", \"max (\" + std::to_string(max) + \") cannot be less than min (\" + std::to_string(min) + \")\");\n    GThread::runOnQtGuiThread([this, max]() {\n        _iqscrollbar->setMaximum(max);\n    });\n    updateSize();\n}\n\nvoid GScrollBar::setMin(int min) {\n    int max = getMax();\n    require::require(min <= max, \"GScrollBar::setMin\", \"min (\" + std::to_string(min) + \") cannot be greater than max (\" + std::to_string(max) + \")\");\n    GThread::runOnQtGuiThread([this, min]() {\n        _iqscrollbar->setMinimum(min);\n    });\n    updateSize();\n}\n\nvoid GScrollBar::setState(int value, int extent, int min, int max) {\n    require::require(min <= max, \"GScrollBar::setState\", \"min (\" + std::to_string(min) + \") cannot be greater than max (\" + std::to_string(max) + \")\");\n    require::inRange(value, min, max, \"GScrollBar::setState\", \"value\");\n    GThread::runOnQtGuiThread([this, value, extent, min, max]() {\n        _iqscrollbar->setRange(min, max);\n        _iqscrollbar->setValue(value);\n        _iqscrollbar->setPageStep(extent);\n    });\n    updateSize();\n}\n\nvoid GScrollBar::setValue(int value) {\n    require::inRange(value, getMin(), getMax(), \"GScrollBar::setValue\", \"value\");\n    GThread::runOnQtGuiThread([this, value]() {\n        _iqscrollbar->setValue(value);\n    });\n}\n\nvoid GScrollBar::updateSize() {\n    GThread::runOnQtGuiThread([this]() {\n        _iqscrollbar->update();\n        _iqscrollbar->updateGeometry();\n        if (getOrientation() == VERTICAL) {\n            _iqscrollbar->setPreferredSize(_iqscrollbar->sizeHint().width(), getMax() - getMin() + 1);\n        } else {\n            _iqscrollbar->setPreferredSize(getMax() - getMin() + 1, _iqscrollbar->sizeHint().height());\n        }\n    });\n}\n\n\n_Internal_QScrollBar::_Internal_QScrollBar(GScrollBar* gscrollbar, Qt::Orientation orientation, QWidget* parent)\n        : QScrollBar(orientation, parent),\n          _gscrollbar(gscrollbar) {\n    require::nonNull(gscrollbar, \"_Internal_QScrollBar::constructor\");\n    setObjectName(QString::fromStdString(\"_Internal_QScrollBar_\" + std::to_string(gscrollbar->getID())));\n    connect(this, SIGNAL(valueChanged(int)), this, SLOT(handleValueChange(int)));\n}\n\nvoid _Internal_QScrollBar::detach() {\n    _gscrollbar = nullptr;\n}\n\nvoid _Internal_QScrollBar::handleValueChange(int /* value */) {\n    if (!_gscrollbar) {\n        return;\n    }\n    GEvent changeEvent(\n                /* class  */ CHANGE_EVENT,\n                /* type   */ STATE_CHANGED,\n                /* name   */ \"change\",\n                /* source */ _gscrollbar);\n    changeEvent.setActionCommand(_gscrollbar->getActionCommand());\n    _gscrollbar->fireEvent(changeEvent);\n}\n\nQSize _Internal_QScrollBar::sizeHint() const {\n    if (hasPreferredSize()) {\n        return getPreferredSize();\n    } else {\n        return QScrollBar::sizeHint();\n    }\n}\n\n\n"
  },
  {
    "path": "Library/graphics/gscrollbar.h",
    "content": "/*\n * File: qgscrollbar.h\n * -------------------\n *\n * @author Marty Stepp\n * @version 2018/09/08\n * - added doc comments for new documentation generation\n * @version 2018/08/23\n * - renamed to gscrollbar.h to replace Java version\n * @version 2018/07/16\n * - initial version\n */\n\n\n#ifndef _gscrollbar_h\n#define _gscrollbar_h\n\n#include <string>\n#include <QScrollBar>\n\n#include \"ginteractor.h\"\n\nclass _Internal_QScrollBar;\n\n/**\n * A GScrollBar represents a horizontal or vertical scroll bar that can be\n * dragged by the user.  The bar does not inherently cause any other interactor\n * to scroll itself.  If you want the bar to cause any effect, you must wait\n * for scroll events and respond to them.\n *\n * A given scroll bar has a range of values it can represent, with a min and max,\n * along with a current value.\n * The \"extent\" of a scrollbar represents the amount of the scrollbar in view.\n */\nclass GScrollBar : public GInteractor {\npublic:\n    /**\n     * The two valid orientations of scrollbars.\n     */\n    enum Orientation {\n        HORIZONTAL = 0,\n        VERTICAL   = 1\n    };\n\n    /**\n     * Creates a new scroll bar with the given orientation and value range.\n     * @throw ErrorException if min > max or value is not between min and max\n     */\n    GScrollBar(Orientation orientation = VERTICAL, int value = 0, int extent = 10, int min = 0, int max = 100, QWidget* parent = nullptr);\n\n    /**\n     * Frees memory allocated internally by the scroll bar.\n     */\n    ~GScrollBar() override;\n\n    /**\n     * Returns the scroll bar's extent, meaning the amount of its range that is\n     * currently in view.\n     */\n    virtual int getExtent() const;\n\n    /* @inherit */\n    _Internal_QWidget* getInternalWidget() const override;\n\n    /**\n     * Returns the maximum allowed value of the scroll bar.\n     */\n    virtual int getMax() const;\n\n    /**\n     * Returns the minimum allowed value of the scroll bar.\n     */\n    virtual int getMin() const;\n\n    /**\n     * Returns the orientation of the scroll bar, either HORIZONTAL or VERTICAL.\n     */\n    virtual Orientation getOrientation() const;\n\n    /* @inherit */\n    std::string getType() const override;\n\n    /**\n     * Returns the current value of the scroll bar.\n     */\n    virtual int getValue() const;\n\n    /* @inherit */\n    QWidget* getWidget() const override;\n\n    /**\n     * Sets the scroll bar's extent, meaning the amount of its range that is\n     * currently in view.\n     */\n    virtual void setExtent(int extent);\n\n    /**\n     * Sets the maximum allowed value of the scroll bar.\n     * @throw ErrorException if min > max\n     */\n    virtual void setMax(int max);\n\n    /**\n     * Sets the minimum allowed value of the scroll bar.\n     * @throw ErrorException if min > max\n     */\n    virtual void setMin(int min);\n\n    /**\n     * Sets all of the relevant state of the scroll bar.\n     * @throw ErrorException if min > max or value is not between min and max\n     */\n    virtual void setState(int value, int extent, int min, int max);\n\n    /**\n     * Sets the current value of the scroll bar.\n     * @throw ErrorException if value is not between min and max\n     */\n    virtual void setValue(int value);\n\nprotected:\n    /**\n     * @private\n     */\n    std::string getActionEventType() const override;\n\nprivate:\n    Q_DISABLE_COPY(GScrollBar)\n\n    _Internal_QScrollBar* _iqscrollbar;\n\n    friend class _Internal_QScrollBar;\n\n    void updateSize();\n};\n\n/**\n * Internal class; not to be used by clients.\n * @private\n */\nclass _Internal_QScrollBar : public QScrollBar, public _Internal_QWidget {\n    Q_OBJECT\n\npublic:\n    _Internal_QScrollBar(GScrollBar* qgscrollbar, Qt::Orientation orientation, QWidget* parent = nullptr);\n    void detach() override;\n    QSize sizeHint() const override;\n\npublic slots:\n    void handleValueChange(int value);\n\nprivate:\n    GScrollBar* _gscrollbar;\n\n    friend class GScrollBar;\n};\n\n#endif // _gscrollbar_h\n"
  },
  {
    "path": "Library/graphics/gscrollpane.cpp",
    "content": "/*\n * File: gscrollpane.cpp\n * ---------------------\n *\n * @author Marty Stepp\n * @version 2018/09/01\n * - initial version\n */\n\n#include \"gscrollpane.h\"\n#include \"glayout.h\"\n#include \"gthread.h\"\n#include \"require.h\"\n\nGScrollPane::GScrollPane(GInteractor* interactor, QWidget* parent)\n        : _iqscrollarea(nullptr),\n          _interactor(interactor),\n          _horizontalScrollBarPolicy(GScrollPane::SCROLLBAR_AS_NEEDED),\n          _verticalScrollBarPolicy(GScrollPane::SCROLLBAR_AS_NEEDED) {\n    require::nonNull(interactor, \"GScrollPane::constructor\", \"interactor\");\n    GThread::runOnQtGuiThread([this, interactor, parent]() {\n        _iqscrollarea = new _Internal_QScrollArea(this, getInternalParent(parent));\n        _iqscrollarea->setWidget(interactor->getWidget());\n    });\n    setInteractorStretch(true);\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGScrollPane::~GScrollPane() {\n    // TODO: delete _iqscrollarea;\n    _iqscrollarea->detach();\n    _iqscrollarea = nullptr;\n}\n\nGScrollPane::ScrollBarPolicy GScrollPane::getHorizontalScrollBarPolicy() const {\n    return _horizontalScrollBarPolicy;\n}\n\nGInteractor* GScrollPane::getInteractor() const {\n    return _interactor;\n}\n\n_Internal_QWidget* GScrollPane::getInternalWidget() const {\n    return _iqscrollarea;\n}\n\nstd::string GScrollPane::getType() const {\n    return \"GScrollPane\";\n}\n\nGScrollPane::ScrollBarPolicy GScrollPane::getVerticalScrollBarPolicy() const {\n    return _verticalScrollBarPolicy;\n}\n\nQWidget* GScrollPane::getWidget() const {\n    return static_cast<QWidget*>(_iqscrollarea);\n}\n\nbool GScrollPane::isInteractorStretch() const {\n    return _iqscrollarea->widgetResizable();\n}\n\nvoid GScrollPane::setHorizontalScrollBarPolicy(ScrollBarPolicy policy) {\n    GThread::runOnQtGuiThread([this, policy]() {\n        Qt::ScrollBarPolicy qtScrollBarPolicy = toQtScrollBarPolicy(policy);\n        _iqscrollarea->setHorizontalScrollBarPolicy(qtScrollBarPolicy);\n    });\n}\n\nvoid GScrollPane::setInteractorStretch(bool stretch) {\n    GThread::runOnQtGuiThread([this, stretch]() {\n        _iqscrollarea->setWidgetResizable(stretch);\n        GLayout::forceUpdate(_iqscrollarea);\n    });\n}\n\nvoid GScrollPane::setScrollBarPolicy(ScrollBarPolicy policy) {\n    setHorizontalScrollBarPolicy(policy);\n    setVerticalScrollBarPolicy(policy);\n}\n\nvoid GScrollPane::setVerticalScrollBarPolicy(ScrollBarPolicy policy) {\n    GThread::runOnQtGuiThread([this, policy]() {\n        Qt::ScrollBarPolicy qtScrollBarPolicy = toQtScrollBarPolicy(policy);\n        _iqscrollarea->setVerticalScrollBarPolicy(qtScrollBarPolicy);\n    });\n}\n\nQt::ScrollBarPolicy GScrollPane::toQtScrollBarPolicy(ScrollBarPolicy policy) {\n    switch (policy) {\n        case GScrollPane::SCROLLBAR_ALWAYS:\n            return Qt::ScrollBarAlwaysOn;\n        case GScrollPane::SCROLLBAR_NEVER:\n            return Qt::ScrollBarAlwaysOff;\n        case GScrollPane::SCROLLBAR_AS_NEEDED:\n        default:\n            return Qt::ScrollBarAsNeeded;\n    }\n}\n\n\n_Internal_QScrollArea::_Internal_QScrollArea(GScrollPane* gscrollpane, QWidget* parent)\n        : QScrollArea(parent)\n          /*_gscrollpane(gscrollpane)*/ {\n    require::nonNull(gscrollpane, \"_Internal_QScrollArea::constructor\");\n    setObjectName(QString::fromStdString(\"_Internal_QScrollArea_\" + std::to_string(gscrollpane->getID())));\n}\n\nQSize _Internal_QScrollArea::sizeHint() const {\n    if (hasPreferredSize()) {\n        return getPreferredSize();\n    } else {\n        return QScrollArea::sizeHint();\n    }\n}\n\n\n"
  },
  {
    "path": "Library/graphics/gscrollpane.h",
    "content": "/*\n * File: gscrollpane.h\n * -------------------\n *\n * @author Marty Stepp\n * @version 2018/09/08\n * - added doc comments for new documentation generation\n * @version 2018/09/01\n * - initial version\n */\n\n\n#ifndef _gscrollpane_h\n#define _gscrollpane_h\n\n#include <string>\n#include <QScrollArea>\n\n#include \"ginteractor.h\"\n\nclass _Internal_QScrollArea;\n\n/**\n * A GScrollPane is a container that wraps another interactor with scroll bars.\n * It can be used to allow another interactor to be at its preferred size\n * (or some arbitrarily large size) while only occupying a smaller number of\n * onscreen pixels with vertical and/or horizontal scroll bars.\n */\nclass GScrollPane : public GInteractor {\npublic:\n    /**\n     * Constants to indicate whether scroll bars in each dimension should be\n     * always shown, never shown, or shown only if the inner interactor's size\n     * is large enough to require the scroll bar (default).\n     */\n    enum ScrollBarPolicy {\n        SCROLLBAR_AS_NEEDED,\n        SCROLLBAR_ALWAYS,\n        SCROLLBAR_NEVER\n    };\n\n    /**\n     * Creates a new scroll pane to scroll the given interactor.\n     * @throw ErrorException if the interactor is null\n     */\n    GScrollPane(GInteractor* interactor, QWidget* parent = nullptr);\n\n    /**\n     * Frees memory allocated internally by the scroll pane.\n     */\n    ~GScrollPane() override;\n\n    /**\n     * Returns a constant indicating whether the horizontal scroll bar will be shown.\n     */\n    virtual ScrollBarPolicy getHorizontalScrollBarPolicy() const;\n\n    /**\n     * Returns a constant indicating whether the vertical scroll bar will be shown.\n     */\n    virtual ScrollBarPolicy getVerticalScrollBarPolicy() const;\n\n    /**\n     * Returns the inner interactor being wrapped by this scroll pane.\n     */\n    virtual GInteractor* getInteractor() const;\n\n    /* @inherit */\n    _Internal_QWidget* getInternalWidget() const override;\n\n    /* @inherit */\n    std::string getType() const override;\n\n    /* @inherit */\n    QWidget* getWidget() const override;\n\n    /**\n     * Returns true if the inner interactor should stretch itself to its\n     * preferred size.  Default true.\n     */\n    virtual bool isInteractorStretch() const;\n\n    /**\n     * Sets whether the horizontal scroll bar will be shown.\n     */\n    virtual void setHorizontalScrollBarPolicy(ScrollBarPolicy policy);\n\n    /**\n     * Sets whether the horizontal and vertical scroll bars will be shown.\n     */\n    virtual void setScrollBarPolicy(ScrollBarPolicy policy);\n\n    /**\n     * Sets whether the vertical scroll bar will be shown.\n     */\n    virtual void setVerticalScrollBarPolicy(ScrollBarPolicy policy);\n\n    /**\n     * Sets whether the inner interactor should stretch itself to its\n     * preferred size.  Default true.\n     */\n    virtual void setInteractorStretch(bool stretch);\n\nprivate:\n    Q_DISABLE_COPY(GScrollPane)\n\n    _Internal_QScrollArea* _iqscrollarea;\n    GInteractor* _interactor;\n    ScrollBarPolicy _horizontalScrollBarPolicy;\n    ScrollBarPolicy _verticalScrollBarPolicy;\n\n    friend class _Internal_QScrollArea;\n\n    static Qt::ScrollBarPolicy toQtScrollBarPolicy(ScrollBarPolicy policy);\n};\n\n/**\n * Internal class; not to be used by clients.\n * @private\n */\nclass _Internal_QScrollArea : public QScrollArea, public _Internal_QWidget {\n    Q_OBJECT\n\npublic:\n    _Internal_QScrollArea(GScrollPane* gscrollpane, QWidget* parent = nullptr);\n    QSize sizeHint() const override;\n\n// private:\n    // GScrollPane* _gscrollpane;\n};\n\n#endif // _gscrollpane_h\n"
  },
  {
    "path": "Library/graphics/gslider.cpp",
    "content": "/*\n * File: GSlider.cpp\n * ------------------\n *\n * @author Marty Stepp\n * @version 2019/04/23\n * - added key events\n * @version 2019/02/02\n * - destructor now stops event processing\n * @version 2018/08/23\n * - renamed to gslider.cpp to replace Java version\n * @version 2018/06/25\n * - initial version\n */\n\n#include \"gslider.h\"\n#include \"gthread.h\"\n#include \"require.h\"\n\nconst int GSlider::DEFAULT_MIN_VALUE = 0;\nconst int GSlider::DEFAULT_MAX_VALUE = 100;\nconst int GSlider::DEFAULT_INITIAL_VALUE = 50;\n\nGSlider::GSlider(int min, int max, int value, QWidget* parent) {\n    require::require(min <= max, \"GSlider::constructor\", \"min (\" + std::to_string(min) + \") cannot be greater than max (\" + std::to_string(max) + \")\");\n    require::inRange(value, min, max, \"GSlider::constructor\", \"value\");\n    GThread::runOnQtGuiThread([this, min, max, value, parent]() {\n        _iqslider = new _Internal_QSlider(this,\n                                          Qt::Horizontal,\n                                          getInternalParent(parent));\n        _iqslider->setRange(min, max);\n        _iqslider->setValue(value);\n    });\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGSlider::GSlider(Orientation orientation, int min, int max, int value, QWidget* parent) {\n    require::require(min <= max, \"GSlider::constructor\", \"min (\" + std::to_string(min) + \") cannot be greater than max (\" + std::to_string(max) + \")\");\n    require::inRange(value, min, max, \"GSlider::constructor\", \"value\");\n    GThread::runOnQtGuiThread([this, orientation, min, max, value, parent]() {\n        _iqslider = new _Internal_QSlider(this,\n                                          orientation == HORIZONTAL ? Qt::Horizontal : Qt::Vertical,\n                                          getInternalParent(parent));\n        _iqslider->setRange(min, max);\n        _iqslider->setValue(value);\n    });\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGSlider::~GSlider() {\n    // TODO: delete _iqslider;\n    _iqslider->detach();\n    _iqslider = nullptr;\n}\n\nstd::string GSlider::getActionEventType() const {\n    return \"change\";\n}\n\n_Internal_QWidget* GSlider::getInternalWidget() const {\n    return _iqslider;\n}\n\nint GSlider::getMajorTickSpacing() const {\n    return _iqslider->tickInterval();\n}\n\nint GSlider::getMax() const {\n    return _iqslider->maximum();\n}\n\nint GSlider::getMin() const {\n    return _iqslider->minimum();\n}\n\nint GSlider::getMinorTickSpacing() const {\n    return _iqslider->tickInterval();\n}\n\nGSlider::Orientation GSlider::getOrientation() const {\n    return _iqslider->orientation() == Qt::Horizontal ? HORIZONTAL : VERTICAL;\n}\n\nbool GSlider::getPaintLabels() const {\n    // TODO\n    return false;\n}\n\nbool GSlider::getPaintTicks() const {\n    // TODO\n    return true;\n}\n\nbool GSlider::getSnapToTicks() const {\n    // TODO\n    return true;\n}\n\nstd::string GSlider::getType() const {\n    return \"GSlider\";\n}\n\nint GSlider::getValue() const {\n    return _iqslider->value();\n}\n\nQWidget* GSlider::getWidget() const {\n    return static_cast<QWidget*>(_iqslider);\n}\n\nvoid GSlider::setMajorTickSpacing(int value) {\n    GThread::runOnQtGuiThread([this, value]() {\n        _iqslider->setTickInterval(value);\n    });\n}\n\nvoid GSlider::setMax(int max) {\n    int min = getMin();\n    require::require(min <= max, \"GSlider::setMax\", \"max (\" + std::to_string(max) + \") cannot be less than min (\" + std::to_string(min) + \")\");\n    GThread::runOnQtGuiThread([this, max]() {\n        _iqslider->setMaximum(max);\n    });\n}\n\nvoid GSlider::setMin(int min) {\n    int max = getMax();\n    require::require(min <= max, \"GSlider::setMin\", \"min (\" + std::to_string(min) + \") cannot be greater than max (\" + std::to_string(max) + \")\");\n    GThread::runOnQtGuiThread([this, min]() {\n        _iqslider->setMinimum(min);\n    });\n}\n\nvoid GSlider::setMinorTickSpacing(int value) {\n    GThread::runOnQtGuiThread([this, value]() {\n        _iqslider->setTickInterval(value);\n    });\n}\n\nvoid GSlider::setPaintLabels(bool /* value */) {\n    // not supported\n}\n\nvoid GSlider::setPaintTicks(bool value) {\n    GThread::runOnQtGuiThread([this, value]() {\n        _iqslider->setTickPosition(value ? QSlider::TicksBothSides : QSlider::NoTicks);\n    });\n}\n\nvoid GSlider::setRange(int min, int max) {\n    require::require(min <= max, \"GSlider::setRange\", \"min (\" + std::to_string(min) + \") cannot be greater than max (\" + std::to_string(max) + \")\");\n    GThread::runOnQtGuiThread([this, min, max]() {\n        _iqslider->setRange(min, max);\n    });\n}\n\nvoid GSlider::setSnapToTicks(bool /* value */) {\n    // TODO\n}\n\nvoid GSlider::setState(int min, int max, int value) {\n    require::require(min <= max, \"GSlider::setState\", \"min (\" + std::to_string(min) + \") cannot be greater than max (\" + std::to_string(max) + \")\");\n    require::inRange(value, min, max, \"GSlider::setState\", \"value\");\n    GThread::runOnQtGuiThread([this, min, max, value]() {\n        _iqslider->setRange(min, max);\n        _iqslider->setValue(value);\n    });\n}\n\nvoid GSlider::setValue(int value) {\n    require::inRange(value, getMin(), getMax(), \"GSlider::setValue\", \"value\");\n    GThread::runOnQtGuiThread([this, value]() {\n        _iqslider->setValue(value);\n    });\n}\n\n\n_Internal_QSlider::_Internal_QSlider(GSlider* gslider, Qt::Orientation orientation, QWidget* parent)\n        : QSlider(orientation, parent),\n          _gslider(gslider) {\n    require::nonNull(gslider, \"_Internal_QSlider::constructor\");\n    setObjectName(QString::fromStdString(\"_Internal_QSlider_\" + std::to_string(gslider->getID())));\n    connect(this, SIGNAL(valueChanged(int)), this, SLOT(handleChange(int)));\n}\n\nvoid _Internal_QSlider::detach() {\n    _gslider = nullptr;\n}\n\nvoid _Internal_QSlider::handleChange(int /* value */) {\n    if (!_gslider) {\n        return;\n    }\n    GEvent changeEvent(\n                /* class  */ CHANGE_EVENT,\n                /* type   */ STATE_CHANGED,\n                /* name   */ \"change\",\n                /* source */ _gslider);\n    changeEvent.setActionCommand(_gslider->getActionCommand());\n    _gslider->fireEvent(changeEvent);\n}\n\nvoid _Internal_QSlider::keyPressEvent(QKeyEvent* event) {\n    require::nonNull(event, \"_Internal_QSlider::keyPressEvent\", \"event\");\n    if (_gslider && _gslider->isAcceptingEvent(\"keypress\")) {\n        event->accept();\n        _gslider->fireGEvent(event, KEY_PRESSED, \"keypress\");\n        if (event->isAccepted()) {\n            QSlider::keyPressEvent(event);   // call super\n        }\n    } else {\n        QSlider::keyPressEvent(event);   // call super\n    }\n}\n\nvoid _Internal_QSlider::keyReleaseEvent(QKeyEvent* event) {\n    require::nonNull(event, \"_Internal_QSlider::keyPressEvent\", \"event\");\n    if (_gslider && _gslider->isAcceptingEvent(\"keyrelease\")) {\n        event->accept();\n        _gslider->fireGEvent(event, KEY_RELEASED, \"keyrelease\");\n        if (event->isAccepted()) {\n            QSlider::keyReleaseEvent(event);   // call super\n        }\n    } else {\n        QSlider::keyReleaseEvent(event);   // call super\n    }\n}\n\nQSize _Internal_QSlider::sizeHint() const {\n    if (hasPreferredSize()) {\n        return getPreferredSize();\n    } else {\n        return QSlider::sizeHint();\n    }\n}\n\n\n"
  },
  {
    "path": "Library/graphics/gslider.h",
    "content": "/*\n * File: gslider.h\n * ---------------\n *\n * @author Marty Stepp\n * @version 2019/04/23\n * - added key events\n * @version 2018/09/08\n * - added doc comments for new documentation generation\n * @version 2018/08/23\n * - renamed to gslider.h to replace Java version\n * @version 2018/06/29\n * - initial version\n */\n\n\n#ifndef _gslider_h\n#define _gslider_h\n\n#include <string>\n#include <QSlider>\n\n#include \"ginteractor.h\"\n\nclass _Internal_QSlider;\n\n/**\n * This interactor subclass represents an onscreen slider.\n * Dragging the slider control generates action events.\n */\nclass GSlider : public GInteractor {\npublic:\n    /**\n     * The two valid orientations of sliders.\n     */\n    enum Orientation {\n        HORIZONTAL = 0,\n        VERTICAL   = 1\n    };\n\n    /**\n     * Default minimum value for a slider (0).\n     */\n    static const int DEFAULT_MIN_VALUE;\n\n    /**\n     * Default maximum value for a slider (100).\n     */\n    static const int DEFAULT_MAX_VALUE;\n\n    /**\n     * Default initial value for a slider (50).\n     */\n    static const int DEFAULT_INITIAL_VALUE;\n\n    /**\n     * Creates a new horizontal slider with the given value range.\n     * @throw ErrorException if min > max or value is not between min and max\n     */\n    GSlider(int min = 0, int max = 100, int value = 50, QWidget* parent = nullptr);\n\n    /**\n     * Creates a new horizontal or vertical slider with the given value range.\n     * @throw ErrorException if min > max or value is not between min and max\n     */\n    GSlider(Orientation orientation, int min = 0, int max = 100, int value = 50, QWidget* parent = nullptr);\n\n    /**\n     * Frees memory allocated internally by the slider.\n     */\n    ~GSlider() override;\n\n    /* @inherit */\n    _Internal_QWidget* getInternalWidget() const override;\n\n    /**\n     * Returns the number of pixels of spacing between ticks on the slider.\n     * @private\n     */\n    virtual int getMajorTickSpacing() const;\n\n    /**\n     * Returns the maximum allowed value of the slider.\n     */\n    virtual int getMax() const;\n\n    /**\n     * Returns the minimum allowed value of the slider.\n     */\n    virtual int getMin() const;\n\n    /**\n     * Returns the number of pixels of spacing between small ticks on the slider.\n     * @private\n     */\n    virtual int getMinorTickSpacing() const;\n\n    /**\n     * Returns the orientation of the slider, either HORIZONTAL or VERTICAL.\n     */\n    virtual Orientation getOrientation() const;\n\n    /**\n     * Returns whether the slider paints text labels at regular increments.\n     * Default false.\n     * @private\n     */\n    virtual bool getPaintLabels() const;\n\n    /**\n     * Returns whether the slider paints tick marks at regular increments.\n     * @private\n     */\n    virtual bool getPaintTicks() const;\n\n    /**\n     * Returns whether the slider's cursor will be constrained to stop only at\n     * its tick marks.\n     * @private\n     */\n    virtual bool getSnapToTicks() const;\n\n    /* @inherit */\n    std::string getType() const override;\n\n    /**\n     * Returns the slider's current value.\n     */\n    virtual int getValue() const;\n\n    /* @inherit */\n    QWidget* getWidget() const override;\n\n    /**\n     * Sets the number of pixels of spacing between ticks on the slider.\n     * @private\n     */\n    virtual void setMajorTickSpacing(int value);\n\n    /**\n     * Sets the maximum allowed value of the slider.\n     * @throw ErrorException if min > max\n     */\n    virtual void setMax(int max);\n\n    /**\n     * Sets the minimum allowed value of the slider.\n     * @throw ErrorException if min > max\n     */\n    virtual void setMin(int min);\n\n    /**\n     * Sets the number of pixels of spacing between small ticks on the slider.\n     * @private\n     */\n    virtual void setMinorTickSpacing(int value);\n\n    /**\n     * Sets whether the slider paints text labels at regular increments.\n     * Default false.\n     * @private\n     */\n    virtual void setPaintLabels(bool value);\n\n    /**\n     * Sets whether the slider paints tick marks at regular increments.\n     * @private\n     */\n    virtual void setPaintTicks(bool value);\n\n    /**\n     * Sets the min-max range of the slider.\n     * @throw ErrorException if min > max or value is not between min and max\n     */\n    virtual void setRange(int min, int max);\n\n    /**\n     * Sets whether the slider's cursor will be constrained to stop only at\n     * its tick marks.\n     * @private\n     */\n    virtual void setSnapToTicks(bool value);\n\n    /**\n     * Sets all of the relevant state of the slider.\n     * @throw ErrorException if min > max or value is not between min and max\n     */\n    virtual void setState(int min, int max, int value);\n\n    /**\n     * Sets the current value of the slider.\n     * @throw ErrorException if value is not between min and max\n     */\n    virtual void setValue(int value);\n\nprotected:\n    /**\n     * @private\n     */\n    std::string getActionEventType() const override;\n\nprivate:\n    Q_DISABLE_COPY(GSlider)\n\n    _Internal_QSlider* _iqslider;\n\n    friend class _Internal_QSlider;\n};\n\n/**\n * Internal class; not to be used by clients.\n * @private\n */\nclass _Internal_QSlider : public QSlider, public _Internal_QWidget {\n    Q_OBJECT\n\npublic:\n    _Internal_QSlider(GSlider* qgslider, Qt::Orientation orientation = Qt::Horizontal, QWidget* parent = nullptr);\n    void detach() override;\n    void keyPressEvent(QKeyEvent* event) override;\n    void keyReleaseEvent(QKeyEvent* event) override;\n    QSize sizeHint() const override;\n\npublic slots:\n    void handleChange(int value);\n\nprivate:\n    GSlider* _gslider;\n\n    friend class GSlider;\n};\n\n#endif // _gslider_h\n"
  },
  {
    "path": "Library/graphics/gspacer.cpp",
    "content": "/*\n * File: gspacer.cpp\n * -----------------\n *\n * @author Marty Stepp\n * @version 2018/10/06\n * - initial version\n */\n\n#include \"gspacer.h\"\n#include \"gthread.h\"\n#include \"require.h\"\n\nGSpacer::GSpacer(double width, double height, QWidget* parent)\n        : _iqspacer(nullptr) {\n    require::nonNegative2D(width, height, \"GSpacer::constructor\", \"width\", \"height\");\n    GThread::runOnQtGuiThread([this, width, height, parent]() {\n        _iqspacer = new _Internal_QSpacer(this, width, height, getInternalParent(parent));\n    });\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGSpacer::~GSpacer() {\n    // TODO: delete _iqspacer;\n    _iqspacer->detach();\n    _iqspacer = nullptr;\n}\n\n_Internal_QWidget* GSpacer::getInternalWidget() const {\n    return _iqspacer;\n}\n\nstd::string GSpacer::getType() const {\n    return \"GSpacer\";\n}\n\nQWidget* GSpacer::getWidget() const {\n    return static_cast<QWidget*>(_iqspacer);\n}\n\n\n_Internal_QSpacer::_Internal_QSpacer(GSpacer* gspacer, double width, double height, QWidget* parent)\n        : QWidget(parent) {\n    require::nonNull(gspacer, \"_Internal_QSpacer::constructor\");\n    setObjectName(QString::fromStdString(\"_Internal_QSpacer_\" + std::to_string(gspacer->getID())));\n    setFixedSize(static_cast<int>(width), static_cast<int>(height));\n}\n\nQSize _Internal_QSpacer::sizeHint() const {\n    if (hasPreferredSize()) {\n        return getPreferredSize();\n    } else {\n        return QWidget::sizeHint();\n    }\n}\n\n\n"
  },
  {
    "path": "Library/graphics/gspacer.h",
    "content": "/*\n * File: gspacer.h\n * ---------------\n *\n * A GSpacer is just an empty blob of space that helps you pad layouts.\n *\n * @author Marty Stepp\n * @version 2018/10/06\n * - initial version\n */\n\n\n#ifndef _gspacer_h\n#define _gspacer_h\n\n#include <string>\n\n#include \"ginteractor.h\"\n\nclass _Internal_QSpacer;\n/**\n * A GSpacer is just an empty blob of space that helps you pad layouts.\n */\nclass GSpacer : public GInteractor {\npublic:\n    GSpacer(double width, double height, QWidget* parent = nullptr);\n\n    /**\n     * Frees memory allocated internally by the scroll pane.\n     */\n    ~GSpacer() override;\n\n    /* @inherit */\n    _Internal_QWidget* getInternalWidget() const override;\n\n    /* @inherit */\n    std::string getType() const override;\n\n    /* @inherit */\n    QWidget* getWidget() const override;\n\nprivate:\n    Q_DISABLE_COPY(GSpacer)\n\n    _Internal_QSpacer* _iqspacer;\n\n    friend class _Internal_QSpacer;\n};\n\n\n/**\n * Internal class; not to be used by clients.\n * @private\n */\nclass _Internal_QSpacer : public QWidget, public _Internal_QWidget {\n    Q_OBJECT\n\npublic:\n    _Internal_QSpacer(GSpacer* gspacer, double width, double height, QWidget* parent = nullptr);\n    QSize sizeHint() const override;\n\n// private:\n    // GSpacer* _gspacer;\n};\n\n#endif // _gspacer_h\n"
  },
  {
    "path": "Library/graphics/gtable.cpp",
    "content": "/*\n * File: gtable.cpp\n * ----------------\n * This file implements the GTable.h interface.\n * See that file for documentation of each member.\n *\n * @author Marty Stepp\n * @version 2019/02/02\n * - destructor now stops event processing\n * @version 2018/09/06\n * - added bounds-checking and require() calls\n * @version 2018/08/23\n * - renamed to gtable.cpp to replace Java version\n * @version 2018/07/21\n * - rich formatting on cell, row, column, table\n * - improved event handling\n * @version 2018/07/17\n * - initial version, based on gtable.h\n * @since 2018/07/17\n */\n\n#include \"gtable.h\"\n#include <cstring>\n#include <iostream>\n#include <iomanip>\n#include <QBrush>\n#include <QColor>\n#include <QHeaderView>\n#include <QLineEdit>\n#include <sstream>\n#include \"gclipboard.h\"\n#include \"gcolor.h\"\n#include \"gevent.h\"\n#include \"gfont.h\"\n#include \"gthread.h\"\n#include \"require.h\"\n\nGTable::TableStyle GTable::_defaultCellStyle = GTable::TableStyle::unset();\n\nGTable::GTable(int rows, int columns, double width, double height, QWidget* parent)\n        : _iqtableview(nullptr),\n          _columnHeaderStyle(GTable::COLUMN_HEADER_NONE) {\n    GThread::runOnQtGuiThread([this, rows, columns, parent]() {\n        _iqtableview = new _Internal_QTableWidget(this, rows, columns, getInternalParent(parent));\n        _iqtableview->setSelectionMode(QAbstractItemView::SingleSelection);\n        _globalCellStyle = TableStyle::unset();\n    });\n    require::nonNegative2D(rows, columns, \"GTable::constructor\", \"rows\", \"columns\");\n    require::nonNegative2D(width, height, \"GTable::constructor\", \"width\", \"height\");\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGTable::~GTable() {\n    // TODO: delete _iqtableview;\n    _iqtableview->detach();\n    _iqtableview = nullptr;\n}\n\nvoid GTable::applyStyleToCell(int row, int column, const TableStyle& style) {\n    setCellAlignmentInternal(row, column, style.alignment);\n    setCellBackgroundInternal(row, column, style.background);\n    setCellFontInternal(row, column, style.font);\n    setCellForegroundInternal(row, column, style.foreground);\n}\n\nvoid GTable::autofitColumnWidths() {\n    GThread::runOnQtGuiThread([this]() {\n        _iqtableview->resizeColumnsToContents();\n    });\n}\n\nvoid GTable::checkColumn(const std::string& member, int column) const {\n    require::inRange(column, 0, numCols(), \"GTable::\" + member, \"column\");\n}\n\nvoid GTable::checkIndex(const std::string& member, int row, int column) const {\n    require::inRange2D(row, column, 0, 0, numRows(), numCols(), \"GTable::\" + member, \"row\", \"column\");\n}\n\nvoid GTable::checkRow(const std::string& member, int row) const {\n    require::inRange(row, 0, numRows(), \"GTable::\" + member, \"row\");\n}\n\nvoid GTable::clear() {\n    GThread::runOnQtGuiThread([this]() {\n        _iqtableview->clear();\n        // for some reason, clearing a table also wipes the Excel-style column headers\n        updateColumnHeaders();\n    });\n}\n\nvoid GTable::clearCell(int row, int column) {\n    checkIndex(\"clearCell\", row, column);\n    set(row, column, /* text */ \"\");\n}\n\nvoid GTable::clearFormatting() {\n    GThread::runOnQtGuiThread([this]() {\n        // clear out all records of row, column, and global table styles\n        _columnStyles.clear();\n        _rowStyles.clear();\n        _globalCellStyle = TableStyle::unset();\n\n        // set the formatting on each cell\n        for (int row = 0, nr = numRows(), nc = numCols(); row < nr; row++) {\n            for (int col = 0; col < nc; col++) {\n                clearCellFormatting(row, col);\n            }\n        }\n    });\n}\n\nvoid GTable::clearCellFormatting(int row, int column) {\n    checkIndex(\"clearCellFormatting\", row, column);\n    GThread::runOnQtGuiThread([this, row, column]() {\n        ensureDefaultFormatting();\n        TableStyle style = _defaultCellStyle;\n        if (style.background >= 0) {\n            setCellBackgroundInternal(row, column, style.background);\n        }\n        if (!style.font.empty()) {\n            setCellFontInternal(row, column, style.font);\n        }\n        if (style.foreground >= 0) {\n            setCellForegroundInternal(row, column, style.foreground);\n        }\n        if (style.alignment >= 0) {\n            setCellAlignmentInternal(row, column, style.alignment);\n        }\n    });\n}\n\nvoid GTable::clearSelection() {\n    GThread::runOnQtGuiThread([this]() {\n        _iqtableview->clearSelection();\n    });\n}\n\nvoid GTable::ensureColumnStyle(int column) {\n    ensureDefaultFormatting();\n    if (!_columnStyles.containsKey(column)) {\n        _columnStyles[column] = TableStyle::unset();\n    }\n}\n\nvoid GTable::ensureDefaultFormatting() const {\n    GTable* thisHack = (GTable*) this;\n    if (!_defaultCellStyle.isSet()) {\n        QPalette palette = thisHack->_iqtableview->palette();\n        _defaultCellStyle.background = palette.base().color().rgb() & 0x00ffffff;\n        _defaultCellStyle.foreground = palette.text().color().rgb() & 0x00ffffff;\n        _defaultCellStyle.font       = GFont::toFontString(thisHack->_iqtableview->font());\n        _defaultCellStyle.alignment  = ALIGN_LEFT;   // TODO: ask cell for its alignment\n    }\n}\n\nvoid GTable::ensureRowStyle(int row) {\n    ensureDefaultFormatting();\n    if (!_rowStyles.containsKey(row)) {\n        _rowStyles[row] = TableStyle::unset();\n    }\n}\n\nvoid GTable::fill(const std::string& text) {\n    GThread::runOnQtGuiThread([this, text]() {\n        int nr = numRows();\n        int nc = numCols();\n        for (int r = 0; r < nr; r++) {\n            for (int c = 0; c < nc; c++) {\n                set(r, c, text);\n            }\n        }\n    });\n}\n\nstd::string GTable::get(int row, int column) const {\n    checkIndex(\"get\", row, column);\n    return _iqtableview->model()->data(_iqtableview->model()->index(row, column)).toString().toStdString();\n}\n\nGTable::ColumnHeaderStyle GTable::getColumnHeaderStyle() const {\n    return _columnHeaderStyle;\n}\n\ndouble GTable::getColumnWidth(int column) const {\n    checkColumn(\"getColumnWidth\", column);\n    return _iqtableview->columnWidth(column);\n}\n\n_Internal_QWidget* GTable::getInternalWidget() const {\n    return _iqtableview;\n}\n\nGTable::TableStyle GTable::getMergedStyleForCell(int row, int column) {\n    // style precedence: cell > column > row > global\n    ensureDefaultFormatting();\n    TableStyle style = _defaultCellStyle;\n    style.mergeWith(_globalCellStyle);\n    if (_rowStyles.containsKey(row)) {\n        style.mergeWith(_rowStyles[row]);\n    }\n    if (_columnStyles.containsKey(column)) {\n        style.mergeWith(_columnStyles[column]);\n    }\n    return style;\n}\n\ndouble GTable::getRowHeight(int row) const {\n    checkRow(\"getRowHeight\", row);\n    return _iqtableview->rowHeight(row);\n}\n\nGridLocation GTable::getSelectedCell() const {\n    QModelIndexList list = _iqtableview->selectionModel()->selectedIndexes();\n    if (list.empty()) {\n        return GridLocation(-1, -1);\n    } else {\n        QModelIndex index = list.at(0);\n        return GridLocation(index.row(), index.column());\n    }\n}\n\nvoid GTable::getSelectedCell(int& row, int& column) const {\n    GridLocation loc = getSelectedCell();\n    row = loc.row;\n    column = loc.col;\n}\n\nstd::string GTable::getSelectedCellValue() const {\n    if (hasSelectedCell()) {\n        GridLocation loc = getSelectedCell();\n        return get(loc.row, loc.col);\n    } else {\n        return \"\";\n    }\n}\n\nint GTable::getSelectedColumn() const {\n    return getSelectedCell().col;\n}\n\nint GTable::getSelectedRow() const {\n    return getSelectedCell().row;\n}\n\nstd::string GTable::getType() const {\n    return \"GTable\";\n}\n\nQWidget* GTable::getWidget() const {\n    return static_cast<QWidget*>(_iqtableview);\n}\n\nbool GTable::hasSelectedCell() const {\n    GridLocation loc = getSelectedCell();\n    return loc.row >= 0 && loc.col >= 0;\n}\n\nint GTable::height() const {\n    return numRows();\n}\n\nbool GTable::inTableBounds(int row, int column) const {\n    return 0 <= row && row < height() && 0 <= column && column < width();\n}\n\nbool GTable::isEditable() const {\n    return (_iqtableview->editTriggers() & QAbstractItemView::NoEditTriggers) != 0;\n}\n\nint GTable::numCols() const {\n    return _iqtableview->model()->columnCount();\n}\n\nint GTable::numRows() const {\n    return _iqtableview->model()->rowCount();\n}\n\nvoid GTable::removeTableListener() {\n    removeEventListeners({\"table\",\n                          \"tableupdate\",\n                          \"tableselect\",\n                          \"tableeditbegin\",\n                          \"tablereplacebegin\",\n                          \"tablecut\",\n                          \"tablecopy\",\n                          \"tablepaste\"});\n}\n\nvoid GTable::requestFocus() {\n    bool wasEditing = _iqtableview->isEditing();\n    GInteractor::requestFocus();\n    if (!wasEditing && hasSelectedCell()) {\n        GThread::runOnQtGuiThread([this]() {\n            GridLocation loc = getSelectedCell();\n            _iqtableview->closePersistentEditor(_iqtableview->item(loc.row, loc.col));\n        });\n    }\n}\n\nvoid GTable::resize(int newNumRows, int newNumCols) {\n    require::nonNegative2D(newNumRows, newNumCols, \"GTable::resize\", \"rows\", \"columns\");\n    GThread::runOnQtGuiThread([this, newNumRows, newNumCols]() {\n        int oldNumRows = numRows();\n        int oldNumCols = numCols();\n        _iqtableview->setRowCount(newNumRows);\n        _iqtableview->setColumnCount(newNumCols);\n\n        // make sure proper headers showing on each column\n        if (newNumCols > oldNumCols) {\n            updateColumnHeaders();\n        }\n\n        // apply appropriate styles to newly added cells\n        if (newNumRows > oldNumRows || newNumCols > oldNumCols) {\n            for (int row = 0; row < newNumRows; row++) {\n                for (int col = 0; col < newNumCols; col++) {\n                    if (row >= oldNumRows || col >= oldNumCols) {\n                        // figure out appropriate style (row, col, global, etc.) and apply it\n                        TableStyle style = getMergedStyleForCell(row, col);\n                        applyStyleToCell(row, col, style);\n                    }\n                }\n            }\n        }\n    });\n}\n\nbool GTable::rowColumnHeadersVisible() const {\n    return _iqtableview->horizontalHeader()->isVisible()\n            && _iqtableview->verticalHeader()->isVisible();\n}\n\nvoid GTable::select(int row, int column) {\n    checkIndex(\"select\", row, column);\n    GThread::runOnQtGuiThread([this, row, column]() {\n        QModelIndex index = _iqtableview->model()->index(row, column);\n        _iqtableview->selectionModel()->select(index, QItemSelectionModel::ClearAndSelect);\n    });\n}\n\nvoid GTable::set(int row, int column, const std::string& text) {\n    checkIndex(\"set\", row, column);\n    GThread::runOnQtGuiThread([this, row, column, text]() {\n        QModelIndex index = _iqtableview->model()->index(row, column);\n        _iqtableview->model()->setData(index, QVariant(text.c_str()));\n    });\n}\n\nvoid GTable::setBackground(int rgb) {\n    // GInteractor::setBackground(rgb);\n    // (don't call super; that will set the BG of the headers and everything)\n\n    GThread::runOnQtGuiThread([this, rgb]() {\n        // save this background color in the global cell style (for later cells on resize() etc)\n        ensureDefaultFormatting();\n        _globalCellStyle.background = rgb;\n\n        // remove background colors from any row/column styles because they are\n        // now overridden by this global background color style\n        TableStyle unset = TableStyle::unset();\n        for (int row : _rowStyles) {\n            _rowStyles[row].background = unset.background;\n        }\n        for (int col : _columnStyles) {\n            _columnStyles[col].background = unset.background;\n        }\n\n        // set each cell's background color\n        for (int row = 0, nr = numRows(); row < nr; row++) {\n            for (int col = 0, nc = numCols(); col < nc; col++) {\n                setCellBackgroundInternal(row, col, rgb);\n            }\n        }\n    });\n}\n\nvoid GTable::setBackground(const std::string& color) {\n    setBackground(GColor::convertColorToRGB(color));\n}\n\nvoid GTable::setCellAlignment(int row, int column, HorizontalAlignment alignment) {\n    checkIndex(\"setCellAlignment\", row, column);\n    GThread::runOnQtGuiThread([this, row, column, alignment]() {\n        setCellAlignmentInternal(row, column, alignment);   // do the actual work\n    });\n}\n\nvoid GTable::setCellAlignmentInternal(int row, int column, HorizontalAlignment alignment) {\n    Qt::Alignment align = Qt::AlignVCenter | toQtAlignment(alignment);\n    _iqtableview->model()->setData(_iqtableview->model()->index(row, column),\n                                   QVariant(align), Qt::TextAlignmentRole);\n}\n\nvoid GTable::setCellBackground(int row, int column, int rgb) {\n    checkIndex(\"setCellBackground\", row, column);\n    GThread::runOnQtGuiThread([this, row, column, rgb]() {\n        setCellBackgroundInternal(row, column, rgb);   // do the actual work\n    });\n}\n\nvoid GTable::setCellBackground(int row, int column, const std::string& color) {\n    setCellBackground(row, column, GColor::convertColorToRGB(color));\n}\n\nvoid GTable::setCellBackgroundInternal(int row, int column, int rgb) {\n    _iqtableview->item(row, column)->setBackground(QBrush(QColor(rgb)));\n}\n\nvoid GTable::setCellFont(int row, int column, const std::string& font) {\n    checkIndex(\"setCellFont\", row, column);\n    GThread::runOnQtGuiThread([this, row, column, font]() {\n        setCellFontInternal(row, column, font);   // do the actual work\n    });\n}\n\nvoid GTable::setCellFontInternal(int row, int column, const std::string& font) {\n    _iqtableview->item(row, column)->setFont(GFont::toQFont(_iqtableview->font(), font));\n}\n\nvoid GTable::setCellForeground(int row, int column, int rgb) {\n    checkIndex(\"setCellForeground\", row, column);\n    GThread::runOnQtGuiThread([this, row, column, rgb]() {\n        setCellForegroundInternal(row, column, rgb);   // do the actual work\n    });\n}\n\nvoid GTable::setCellForegroundInternal(int row, int column, int rgb) {\n    ensureDefaultFormatting();\n    _iqtableview->item(row, column)->setForeground(QBrush(QColor(rgb)));\n}\n\nvoid GTable::setCellForeground(int row, int column, const std::string& color) {\n    checkIndex(\"setCellForeground\", row, column);\n    setCellForeground(row, column, GColor::convertColorToRGB(color));\n}\n\nvoid GTable::setColor(int rgb) {\n    setForeground(rgb);\n}\n\nvoid GTable::setColor(const std::string& color) {\n    setForeground(color);\n}\n\nvoid GTable::setColumnAlignment(int column, HorizontalAlignment alignment) {\n    checkColumn(\"setColumnAlignment\", column);\n\n    GThread::runOnQtGuiThread([this, column, alignment]() {\n        // save this alignment in the column style (for later cells on resize() etc)\n        ensureColumnStyle(column);\n        _columnStyles[column].alignment = alignment;\n\n        // set each cell's alignment in that column\n        for (int row = 0, nr = numRows(); row < nr; row++) {\n            setCellAlignmentInternal(row, column, alignment);\n        }\n    });\n}\n\nvoid GTable::setColumnBackground(int column, int rgb) {\n    checkColumn(\"setColumnBackground\", column);\n\n    GThread::runOnQtGuiThread([this, column, rgb]() {\n        // save this background color in the column style (for later cells on resize() etc)\n        ensureColumnStyle(column);\n        _columnStyles[column].background = rgb;\n\n        // set each cell's background color in that column\n        for (int row = 0, nr = numRows(); row < nr; row++) {\n            setCellBackgroundInternal(row, column, rgb);\n        }\n    });\n}\n\nvoid GTable::setColumnBackground(int column, const std::string& color) {\n    setColumnBackground(column, GColor::convertColorToRGB(color));\n}\n\nvoid GTable::setColumnFont(int column, const std::string& font) {\n    checkColumn(\"setColumnFont\", column);\n\n    GThread::runOnQtGuiThread([this, column, font]() {\n        // save this font in the column style (for later cells on resize() etc)\n        ensureColumnStyle(column);\n        _columnStyles[column].font = font;\n\n        // set each cell's font in that column\n        for (int row = 0, nr = numRows(); row < nr; row++) {\n            setCellFontInternal(row, column, font);\n        }\n    });\n}\n\nvoid GTable::setColumnForeground(int column, int rgb) {\n    checkColumn(\"setColumnForeground\", column);\n\n    GThread::runOnQtGuiThread([this, column, rgb]() {\n        // save this foreground color in the column style (for later cells on resize() etc)\n        ensureColumnStyle(column);\n        _columnStyles[column].foreground = rgb;\n\n        // set each cell's foreground color in that column\n        for (int row = 0, nr = numRows(); row < nr; row++) {\n            setCellForegroundInternal(row, column, rgb);\n        }\n    });\n}\n\nvoid GTable::setColumnForeground(int column, const std::string& color) {\n    setColumnForeground(column, GColor::convertColorToRGB(color));\n}\n\nvoid GTable::setColumnHeaderStyle(GTable::ColumnHeaderStyle style) {\n    GThread::runOnQtGuiThread([this, style]() {\n        _columnHeaderStyle = style;\n        if (style == GTable::COLUMN_HEADER_NONE) {\n            // no headers\n            setRowColumnHeadersVisible(false);\n            return;\n        } else {\n            // build list of column names to display\n            updateColumnHeaders();\n            _iqtableview->horizontalHeader()->setVisible(true);\n            _iqtableview->verticalHeader()->setVisible(true);\n        }\n    });\n}\n\nvoid GTable::setColumnWidth(int column, double width) {\n    checkColumn(\"setColumnWidth\", column);\n    if (width < 0) {\n        error(\"GTable::setColumnWidth: width cannot be negative\");\n    }\n    GThread::runOnQtGuiThread([this, column, width]() {\n        _iqtableview->setColumnWidth(column, (int) width);\n    });\n}\n\nvoid GTable::setEditable(bool editable) {\n    GThread::runOnQtGuiThread([this, editable]() {\n        if (editable) {\n            _iqtableview->setEditTriggers(\n                        QAbstractItemView::CurrentChanged\n                        | QAbstractItemView::DoubleClicked\n                        | QAbstractItemView::EditKeyPressed\n                        | QAbstractItemView::AnyKeyPressed);\n        } else {\n            _iqtableview->setEditTriggers(QAbstractItemView::NoEditTriggers);\n        }\n    });\n}\n\nvoid GTable::setEditorValue(int row, int column, const std::string& text) {\n    checkIndex(\"setEditorValue\", row, column);\n    GThread::runOnQtGuiThread([this, text]() {\n        _Internal_QItemDelegate* delegate = _iqtableview->getItemDelegate();\n        if (delegate != nullptr) {\n            QWidget* editor = delegate->getEditor();\n            if (QLineEdit* lineEdit = qobject_cast<QLineEdit*>(editor)) {\n                lineEdit->setText(QString::fromStdString(text));\n            }\n        }\n    });\n}\n\nvoid GTable::setFont(const QFont& font) {\n    setFont(GFont::toFontString(font));\n}\n\nvoid GTable::setFont(const std::string& font) {\n    GInteractor::setFont(font);   // call super\n\n    GThread::runOnQtGuiThread([this, font]() {\n        // save this font in the global cell style (for later cells on resize() etc)\n        ensureDefaultFormatting();\n        _globalCellStyle.font = font;\n\n        // remove fonts from any row/column styles because they are\n        // now overridden by this global font style\n        TableStyle unset = TableStyle::unset();\n        for (int row : _rowStyles) {\n            _rowStyles[row].font = unset.font;\n        }\n        for (int col : _columnStyles) {\n            _columnStyles[col].font = unset.font;\n        }\n\n        // set each cell's foreground color\n        for (int row = 0, nr = numRows(); row < nr; row++) {\n            for (int col = 0, nc = numCols(); col < nc; col++) {\n                setCellFontInternal(row, col, font);\n            }\n        }\n    });\n}\n\nvoid GTable::setForeground(int rgb) {\n    GThread::runOnQtGuiThread([this, rgb]() {\n        // GInteractor::setForeground(rgb);\n        // (don't call super; that will set the FG of the scrollbars and everything)\n\n        // save this foreground color in the global cell style (for later cells on resize() etc)\n        ensureDefaultFormatting();\n        _globalCellStyle.foreground = rgb;\n\n        // remove foreground colors from any row/column styles because they are\n        // now overridden by this global foreground color style\n        TableStyle unset = TableStyle::unset();\n        for (int row : _rowStyles) {\n            _rowStyles[row].foreground = unset.foreground;\n        }\n        for (int col : _columnStyles) {\n            _columnStyles[col].foreground = unset.foreground;\n        }\n\n        // set each cell's foreground color\n        for (int row = 0, nr = numRows(); row < nr; row++) {\n            for (int col = 0, nc = numCols(); col < nc; col++) {\n                setCellForegroundInternal(row, col, rgb);\n            }\n        }\n    });\n}\n\nvoid GTable::setForeground(const std::string& color) {\n    setForeground(GColor::convertColorToRGB(color));\n}\n\nvoid GTable::setHorizontalAlignment(HorizontalAlignment alignment) {\n    GThread::runOnQtGuiThread([this, alignment]() {\n        // save this alignment in the global cell style (for later cells on resize() etc)\n        ensureDefaultFormatting();\n\n        _globalCellStyle.alignment = alignment;\n\n        // remove alignment from any row/column styles because they are\n        // now overridden by this global alignment style\n        TableStyle unset = TableStyle::unset();\n        for (int row : _rowStyles) {\n            _rowStyles[row].alignment = unset.alignment;\n        }\n        for (int col : _columnStyles) {\n            _columnStyles[col].alignment = unset.alignment;\n        }\n\n        // set each cell's horizontal alignment\n        for (int row = 0, nr = numRows(), nc = numCols(); row < nr; row++) {\n            for (int col = 0; col < nc; col++) {\n                setCellAlignmentInternal(row, col, alignment);\n            }\n        }\n    });\n}\n\nvoid GTable::setRowAlignment(int row, HorizontalAlignment alignment) {\n    checkRow(\"setRowAlignment\", row);\n\n    // save this alignment in the row style (for later cells on resize() etc)\n    GThread::runOnQtGuiThread([this, row, alignment]() {\n        ensureRowStyle(row);\n        _rowStyles[row].alignment = alignment;\n\n        // set each cell's alignment in that row\n        for (int col = 0, nc = numCols(); col < nc; col++) {\n            setCellAlignmentInternal(row, col, alignment);\n        }\n    });\n}\n\nvoid GTable::setRowBackground(int row, int rgb) {\n    checkRow(\"setRowBackground\", row);\n\n    // save this background color in the row style (for later cells on resize() etc)\n    GThread::runOnQtGuiThread([this, row, rgb]() {\n        ensureRowStyle(row);\n        _rowStyles[row].background = rgb;\n\n        // set each cell's background color in that row\n        for (int col = 0, nc = numCols(); col < nc; col++) {\n            setCellBackgroundInternal(row, col, rgb);\n        }\n    });\n}\n\nvoid GTable::setRowBackground(int row, const std::string& color) {\n    setRowBackground(row, GColor::convertColorToRGB(color));\n}\n\nvoid GTable::setRowFont(int row, const std::string& font) {\n    checkRow(\"setRowFont\", row);\n\n    // save this font in the row style (for later cells on resize() etc)\n    GThread::runOnQtGuiThread([this, row, font]() {\n        ensureRowStyle(row);\n        _rowStyles[row].font = font;\n\n        // set each cell's font in that row\n        for (int col = 0, nc = numCols(); col < nc; col++) {\n            setCellFontInternal(row, col, font);\n        }\n    });\n}\n\nvoid GTable::setRowForeground(int row, int rgb) {\n    checkRow(\"setRowForeground\", row);\n\n    // save this foreground color in the row style (for later cells on resize() etc)\n    GThread::runOnQtGuiThread([this, row, rgb]() {\n        ensureRowStyle(row);\n        _rowStyles[row].foreground = rgb;\n\n        // set each cell's foreground color in that row\n        for (int col = 0, nc = numCols(); col < nc; col++) {\n            setCellForegroundInternal(row, col, rgb);\n        }\n    });\n}\n\nvoid GTable::setRowForeground(int row, const std::string& color) {\n    checkRow(\"setRowForeground\", row);\n    setRowForeground(row, GColor::convertColorToRGB(color));\n}\n\nvoid GTable::setRowColumnHeadersVisible(bool visible) {\n    GThread::runOnQtGuiThread([this, visible]() {\n        _iqtableview->horizontalHeader()->setVisible(visible);\n        _iqtableview->verticalHeader()->setVisible(visible);\n    });\n}\n\nvoid GTable::setRowHeight(int row, double height) {\n    checkRow(\"setRowHeight\", row);\n    if (height < 0) {\n        error(\"GTable::setRowHeight: height cannot be negative\");\n    }\n    GThread::runOnQtGuiThread([this, row, height]() {\n        _iqtableview->setRowHeight(row, (int) height);\n    });\n}\n\nvoid GTable::setSelectedCellValue(const std::string& text) {\n    if (hasSelectedCell()) {\n        GridLocation loc = getSelectedCell();\n        set(loc.row, loc.col, text);\n    }\n}\n\nvoid GTable::setTableListener(GEventListener func) {\n    setEventListeners({\"table\",\n                       \"tableupdate\",\n                       \"tableselect\",\n                       \"tableeditbegin\",\n                       \"tablereplacebegin\",\n                       \"tablecut\",\n                       \"tablecopy\",\n                       \"tablepaste\"}, func);\n}\n\nvoid GTable::setTableListener(GEventListenerVoid func) {\n    setEventListeners({\"table\",\n                       \"tableupdate\",\n                       \"tableselect\",\n                       \"tableeditbegin\",\n                       \"tablereplacebegin\",\n                       \"tablecut\",\n                       \"tablecopy\",\n                       \"tablepaste\"}, func);\n}\n\nstd::string GTable::toExcelColumnName(int col) {\n    // convert column into a roughly base-26 Excel column name,\n    // e.g. 0 -> \"A\", 1 -> \"B\", 26 -> \"AA\", ...\n    std::string colStr;\n    col = col + 1;   // 1-based\n    while (col-- > 0) {\n        colStr = charToString((char) ('A' + (col % 26))) + colStr;\n        col /= 26;\n    }\n    return colStr;\n}\n\nvoid GTable::updateColumnHeaders() {\n    GThread::runOnQtGuiThread([this]() {\n        if (_columnHeaderStyle == GTable::COLUMN_HEADER_NONE) {\n            return;\n        }\n\n        // Qt wants me to put the headers into a string list, and apparently\n        // you add things to the list using << like it was a ostream (bleh)\n        QStringList columnHeaders;\n        for (int col = 0, nc = numCols(); col < nc; col++) {\n            if (_columnHeaderStyle == GTable::COLUMN_HEADER_EXCEL) {\n                columnHeaders << QString::fromStdString(toExcelColumnName(col));\n            } else {\n                // style == GTable::COLUMN_HEADER_NUMERIC\n                columnHeaders << QString::fromStdString(std::to_string(col));\n            }\n        }\n        _iqtableview->setHorizontalHeaderLabels(columnHeaders);\n    });\n}\n\nint GTable::width() const {\n    return numCols();\n}\n\n\n_Internal_QItemDelegate::_Internal_QItemDelegate(QObject* parent)\n        : QStyledItemDelegate(parent),\n          _editor(nullptr) {\n    // empty\n}\n\nQWidget* _Internal_QItemDelegate::createEditor(QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const {\n    QWidget* editor = QStyledItemDelegate::createEditor(parent, option, index);\n    _Internal_QItemDelegate* hack = (_Internal_QItemDelegate*) this;\n    hack->_editor = editor;\n    return editor;\n}\n\nvoid _Internal_QItemDelegate::destroyEditor(QWidget* editor, const QModelIndex& index) const {\n    _Internal_QItemDelegate* hack = (_Internal_QItemDelegate*) this;\n    hack->_editor = nullptr;\n    QStyledItemDelegate::destroyEditor(editor, index);\n}\n\nQWidget* _Internal_QItemDelegate::getEditor() const {\n    return _editor;\n}\n\n\n_Internal_QTableWidget::_Internal_QTableWidget(GTable* gtable, int rows, int columns, QWidget* parent)\n        : QTableWidget(rows, columns, parent),\n          _gtable(gtable),\n          _delegate(nullptr) {\n    require::nonNull(gtable, \"_Internal_QTableWidget::constructor\");\n    setObjectName(QString::fromStdString(\"_Internal_QTableWidget_\" + std::to_string(gtable->getID())));\n    _delegate = new _Internal_QItemDelegate();\n    setItemDelegate(_delegate);\n    horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);\n    connect(this, SIGNAL(cellChanged(int, int)), this, SLOT(handleCellChange(int, int)));\n    connect(this, SIGNAL(cellDoubleClicked(int, int)), this, SLOT(handleCellDoubleClick(int, int)));\n    connect(this->selectionModel(), SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)), this, SLOT(handleSelectionChange(const QItemSelection&, const QItemSelection&)));\n}\n\nvoid _Internal_QTableWidget::detach() {\n    _gtable = nullptr;\n}\n\nbool _Internal_QTableWidget::edit(const QModelIndex& index, QAbstractItemView::EditTrigger trigger, QEvent* event) {\n    bool result = QAbstractItemView::edit(index, trigger, event);   // call super\n    if (!_gtable) {\n        return result;\n    }\n    if (result) {\n        bool isEdit = _lastKeyPressed == 0 || _lastKeyPressed == Qt::Key_F2 || _lastKeyPressed == Qt::Key_Tab;\n        _lastKeyPressed = 0;\n        if (isEdit) {\n            fireTableEvent(TABLE_EDIT_BEGIN, \"tableeditbegin\", index.row(), index.column());\n        } else {\n            fireTableEvent(TABLE_REPLACE_BEGIN, \"tablereplacebegin\", index.row(), index.column());\n        }\n    }\n    return result;\n}\n\nvoid _Internal_QTableWidget::fireTableEvent(EventType eventType, const std::string& eventName, int row, int col) {\n    if (!_gtable) {\n        return;\n    }\n    GEvent tableEvent(\n                /* class  */ TABLE_EVENT,\n                /* type   */ eventType,\n                /* name   */ eventName,\n                /* source */ _gtable);\n    if (row < 0 && col < 0) {\n        tableEvent.setRowAndColumn(_gtable->getSelectedRow(), _gtable->getSelectedColumn());\n    } else {\n        tableEvent.setRowAndColumn(row, col);\n    }\n    tableEvent.setActionCommand(_gtable->getActionCommand());\n    _gtable->fireEvent(tableEvent);\n}\n\nQWidget* _Internal_QTableWidget::getEditor() const {\n    return _delegate->getEditor();\n}\n\n_Internal_QItemDelegate* _Internal_QTableWidget::getItemDelegate() const {\n    return _delegate;\n}\n\nbool _Internal_QTableWidget::isEditing() const {\n    return getEditor() != nullptr;\n}\n\nvoid _Internal_QTableWidget::closeEditor(QWidget* editor, QAbstractItemDelegate::EndEditHint hint) {\n    QTableWidget::closeEditor(editor, hint);\n    if (!_gtable) {\n        return;\n    }\n    // TODO: doesn't this fire even if the edit is committed?\n    fireTableEvent(TABLE_EDIT_CANCEL, \"tableeditcancel\");\n}\n\nvoid _Internal_QTableWidget::handleCellChange(int row, int column) {\n    if (!_gtable) {\n        return;\n    }\n    fireTableEvent(TABLE_UPDATED, \"tableupdate\", row, column);\n}\n\nvoid _Internal_QTableWidget::handleCellDoubleClick(int /*row*/, int /*column*/) {\n    if (!_gtable) {\n        return;\n    }\n    _lastKeyPressed = Qt::Key_F2;   // pretend we pressed F2\n    // edit/replace begin event will be fired by edit()\n    // fireTableEvent(GEvent::TABLE_EDIT_BEGIN, \"tableeditbegin\", row, column);\n}\n\nvoid _Internal_QTableWidget::handleSelectionChange(const QItemSelection& selected, const QItemSelection& /*deselected*/) {\n    if (!_gtable) {\n        return;\n    }\n    QItemSelectionRange range;\n    if (!selected.empty()) {\n        range = selected.at(0);\n        QPersistentModelIndex index = range.topLeft();\n        fireTableEvent(TABLE_SELECTED, \"tableselect\", index.row(), index.column());\n    }\n}\n\nvoid _Internal_QTableWidget::keyPressEvent(QKeyEvent* event) {\n    require::nonNull(event, \"_Internal_QTableWidget::keyPressEvent\", \"event\");\n    if (!_gtable) {\n        QTableWidget::keyPressEvent(event);   // call super\n        return;\n    }\n    _lastKeyPressed = event->key();\n    bool wasEditing = isEditing();\n    if (!wasEditing && event->key() == Qt::Key_Delete) {\n        // clear data from selected cell\n        if (_gtable->hasSelectedCell()) {\n            GridLocation loc = _gtable->getSelectedCell();\n            _gtable->clearCell(loc.row, loc.col);\n            return;\n        }\n    }\n\n    // any other key\n    if (wasEditing || !_gtable->hasSelectedCell()) {\n        QTableWidget::keyPressEvent(event);   // call super\n        return;\n    }\n\n    bool nowEditing = isEditing();\n\n    if (GClipboard::isCut(event)) {\n        // keyboard \"cut\" command; remove data from cell into clipboard\n        GridLocation loc = _gtable->getSelectedCell();\n        std::string cellValue = _gtable->get(loc.row, loc.col);\n        GClipboard::set(cellValue);\n        _gtable->clearCell(loc.row, loc.col);\n        QTableWidget::keyPressEvent(event);   // call super\n        fireTableEvent(TABLE_CUT, \"tablecut\");\n        return;\n    }\n\n    if (GClipboard::isCopy(event)) {\n        // keyboard \"copy\" command; copy data from cell into clipboard\n        std::string cellValue = _gtable->getSelectedCellValue();\n        GClipboard::set(cellValue);\n        QTableWidget::keyPressEvent(event);   // call super\n        fireTableEvent(TABLE_COPY, \"tablecopy\");\n        return;\n    }\n\n    if (GClipboard::isPaste(event)) {\n        // keyboard \"paste\" command; copy data from clipboard into cell\n        std::string cellValue = GClipboard::get();\n        _gtable->setSelectedCellValue(cellValue);\n        QTableWidget::keyPressEvent(event);   // call super\n        fireTableEvent(TABLE_PASTE, \"tablepaste\");\n        return;\n    }\n\n    // if cell went from non-editing state to editing state, edit has begun\n    if (nowEditing) {\n        if (event->key() == Qt::Key_F2) {\n            // F2 key begins editing existing value for a cell\n            // edit_begin will be fired by edit() method\n            // fireTableEvent(GEvent::TABLE_EDIT_BEGIN, \"tableeditbegin\");\n        } else if (event->key() == Qt::Key_Tab) {\n            // Tab key jumps to edit the neighboring cell\n        } else {\n            // any other text starts replacing the value with a new value\n            // replace_begin will be fired by edit() method\n            // fireTableEvent(GEvent::TABLE_REPLACE_BEGIN, \"tablereplacebegin\");\n        }\n    }\n    QTableWidget::keyPressEvent(event);   // call super\n}\n\nQSize _Internal_QTableWidget::sizeHint() const {\n    if (hasPreferredSize()) {\n        return getPreferredSize();\n    } else {\n        return QTableWidget::sizeHint();\n    }\n}\n\n\n"
  },
  {
    "path": "Library/graphics/gtable.h",
    "content": "/*\n * File: gtable.h\n * --------------\n * This file exports the GTable class for a graphical editable 2D table.\n *\n * @author Marty Stepp\n * @version 2018/08/23\n * - renamed to gtable.h to replace Java version\n * @version 2018/07/17\n * - initial version, based on gtable.h\n * @since 2018/07/17\n */\n\n\n#ifndef _gtable_h\n#define _gtable_h\n\n#include <string>\n#include <QAbstractItemModel>\n#include <QBrush>\n#include <QFont>\n#include <QItemSelection>\n#include <QStyledItemDelegate>\n#include <QTableWidget>\n\n#include \"grid.h\"\n#include \"map.h\"\n#include \"ginteractor.h\"\n#include \"gobjects.h\"\n#include \"gtypes.h\"\n\nclass _Internal_QTableWidget;\n\n/**\n * A GTable represents a graphical editable 2D table, like a mediocre facsimile\n * of an Excel spreadsheet.\n *\n * After creating a GTable, you can listen for table events to be notified\n * when the user types a new value into a table cell by calling setTableListener.\n *\n * An editable table has a semi-complex editing model where the user can begin\n * modifying a cell by highlighting it and typing, which replaces the existing\n * value, or by double-clicking it, which edits the existing value.\n * You can also press F2 on a cell to edit it, equivalent to a double-click.\n * During editing, you can press Esc to cancel editing, or Tab or Enter to\n * complete editing and move to the next cell.\n *\n * All row/column indexes in this class are 0-based.\n */\nclass GTable : public GInteractor {\npublic:\n    /**\n     * Styles of column header labels that can be shown.\n     * The \"Excel\" style is to use column names A-Z, then AA-AZ, BA-BZ, ...,\n     * ZA-ZZ, then AAA, AAB, and so on.\n     * The \"numeric\" style is to use simple numbers like 1, 2, 3, ...\n     * The \"none\" style means not to use any column headers at all.\n     */\n    enum ColumnHeaderStyle {\n        COLUMN_HEADER_NONE,     // headers will not show\n        COLUMN_HEADER_EXCEL,    // A, B, ..., Z, AA, AB, ...\n        COLUMN_HEADER_NUMERIC   // 1, 2, 3, ...\n    };\n\n    /**\n     * Constructs a new table with the given dimensions and (optional) size.\n     * If x, y, width, or height are omitted, they are set automatically by\n     * the layout manager of the GWindow into which the table is placed.\n     * This is often what you want.\n     * @throw ErrorException if the number of rows, columns, width, or height is negative.\n     */\n    GTable(int rows = 0, int columns = 0, double width = 0, double height = 0,\n            QWidget* parent = nullptr);\n\n    ~GTable() override;\n\n    /**\n     * Changes widths of all columns to be perfectly large enough\n     * to fit their contents.\n     */\n    virtual void autofitColumnWidths();\n\n    /**\n     * Sets all cells in the table to store an empty string value.\n     */\n    virtual void clear();\n\n    /**\n     * Sets the given cell to store an empty string value.\n     * @throw ErrorException if the given row/column index is out of bounds\n     */\n    virtual void clearCell(int row, int column);\n\n    /**\n     * Removes any per-cell/column/row formatting that has been applied to the table.\n     */\n    virtual void clearFormatting();\n\n    /**\n     * Removes any formatting that has been applied to the given cell.\n     */\n    virtual void clearCellFormatting(int row, int column);\n\n    /**\n     * Deselects any currently selected cell.\n     * If no cell is selected, calling this has no effect.\n     */\n    virtual void clearSelection();\n\n    /**\n     * Sets every cell in the table to have the given value.\n     */\n    virtual void fill(const std::string& text);\n\n    /**\n     * Returns the text stored in the given cell.\n     * @throw ErrorException if the given row or column are out of bounds\n     */\n    virtual std::string get(int row, int column) const;\n\n    /**\n     * Returns the column headers to use the given style.\n     * Default is none, but can be set to Excel style or numeric instead.\n     */\n    virtual ColumnHeaderStyle getColumnHeaderStyle() const;\n\n    /**\n     * Returns the width of the given column index in pixels.\n     * When a table is constructed, all columns initially have equal width.\n     * @throw ErrorException if the given column index is out of bounds\n     */\n    virtual double getColumnWidth(int column) const;\n\n    /* @inherit */\n    _Internal_QWidget* getInternalWidget() const override;\n\n    /**\n     * Returns the height of the given row index in pixels.\n     * When a table is constructed, all rows initially have equal height.\n     * @throw ErrorException if the given row index is out of bounds\n     */\n    virtual double getRowHeight(int row) const;\n\n    /**\n     * Returns the row and column of the cell that is currently selected.\n     * Sets both row and column to -1 if no cell is currently selected.\n     */\n    virtual GridLocation getSelectedCell() const;\n\n    /**\n     * Returns the row and column of the cell that is currently selected\n     * by filling the given reference parameters.\n     * Sets both row and column to -1 if no cell is currently selected.\n     */\n    virtual void getSelectedCell(int& row, int& column) const;\n\n    /**\n     * Returns the text in the cell that is currently selected.\n     * If no cell is currently selected, returns an empty string.\n     */\n    virtual std::string getSelectedCellValue() const;\n\n    /**\n     * Returns the column of the cell that is currently selected, or -1 if no cell\n     * is currently selected.\n     */\n    virtual int getSelectedColumn() const;\n\n    /**\n     * Returns the row of the cell that is currently selected, or -1 if no cell\n     * is currently selected.\n     */\n    virtual int getSelectedRow() const;\n\n    /* @inherit */\n    std::string getType() const override;\n\n    /* @inherit */\n    QWidget* getWidget() const override;\n\n    /**\n     * Returns true if a cell is currently selected.\n     */\n    virtual bool hasSelectedCell() const;\n\n    /**\n     * Returns the number of rows in the table.\n     * Equivalent to numRows().\n     */\n    virtual int height() const;\n\n    /**\n     * Returns true if the given 0-based row/column index is within the bounds\n     * of the table.  In other words, whether the index is between (0, 0)\n     * and (numRows-1, numCols-1) inclusive.\n     */\n    virtual bool inTableBounds(int row, int column) const;\n\n    /**\n     * Returns whether cells of the table can be edited.\n     * Defaults to true when a table is initially created.\n     */\n    virtual bool isEditable() const;\n\n    /**\n     * Returns the number of columns in the table.\n     * Equivalent to width().\n     */\n    virtual int numCols() const;\n\n    /**\n     * Returns the number of rows in the table.\n     * Equivalent to height().\n     */\n    virtual int numRows() const;\n\n    /**\n     * Removes the table listener from this button so that it will no longer\n     * call it when events occur.\n     */\n    virtual void removeTableListener();\n\n    /* @inherit */\n    void requestFocus() override;\n\n    /**\n     * Modifies the table to have the given number of rows and columns.\n     * Any existing data is retained, and any new cells are empty.\n     * @throw ErrorException if numRows or numCols is negative\n     */\n    virtual void resize(int numRows, int numCols);\n\n    /**\n     * Returns whether row and column headers are shown in the table.\n     * Initially false.\n     */\n    virtual bool rowColumnHeadersVisible() const;\n\n    /**\n     * Sets the given cell to become currently selected,\n     * replacing any previous selection.\n     * Note that the user can click a different cell to select it afterward.\n     * To indicate that you do not want to select any cell, call clearSelection.\n     * @throw ErrorException if the given row or column are out of bounds\n     */\n    virtual void select(int row, int column);\n\n    /**\n     * Modifies the value in the given cell to store the given text.\n     * @throw ErrorException if the given row or column are out of bounds\n     */\n    virtual void set(int row, int column, const std::string& text);\n\n    /**\n     * Sets the background color that appears behind each cell.\n     * See gcolor.h for more detail about colors.\n     */\n    void setBackground(int rgb) override;\n\n    /**\n     * Sets the background color that appears behind each cell.\n     * See gcolor.h for more detail about colors.\n     */\n    void setBackground(const std::string& color) override;\n\n    /**\n     * Sets the horizontal alignment of the given cell.\n     * The row/column is specified by a 0-based row/column index from the top/left of the table.\n     * @throw ErrorException if the given row/column index is out of bounds\n     */\n    virtual void setCellAlignment(int row, int column, HorizontalAlignment alignment);\n\n    /**\n     * Sets the background color of the given cell to the given color.\n     * The row/column is specified by a 0-based row/column index from the top/left of the table.\n     * See gcolor.h for more detail about colors.\n     * @throw ErrorException if the given row/column index is out of bounds\n     */\n    virtual void setCellBackground(int row, int column, int color);\n\n    /**\n     * Sets the background color of the given cell to the given color.\n     * The row/column is specified by a 0-based row/column index from the top/left of the table.\n     * See gcolor.h for more detail about colors.\n     * @throw ErrorException if the given row/column index is out of bounds\n     */\n    virtual void setCellBackground(int row, int column, const std::string& color);\n\n    /**\n     * Sets the text font of the given cell to the given RGB color.\n     * The row/column is specified by a 0-based row/column index from the top/left of the table.\n     * See gcolor.h for more detail about colors.\n     * @throw ErrorException if the given row/column index is out of bounds\n     */\n    virtual void setCellFont(int row, int column, const std::string& font);\n\n    /**\n     * Sets the foreground/text color of the given cell to the given color.\n     * The row/column is specified by a 0-based row/column index from the top/left of the table.\n     * See gcolor.h for more detail about colors.\n     * @throw ErrorException if the given row/column index is out of bounds\n     */\n    virtual void setCellForeground(int row, int column, int color);\n\n    /**\n     * Sets the foreground/text color of the given cell to the given color.\n     * The row/column is specified by a 0-based row/column index from the top/left of the table.\n     * See gcolor.h for more detail about colors.\n     * @throw ErrorException if the given row/column index is out of bounds\n     */\n    virtual void setCellForeground(int row, int column, const std::string& color);\n\n    /**\n     * Sets the color used for the text of each cell.\n     * Equivalent to setForeground.\n     * See gcolor.h for more detail about colors.\n     */\n    void setColor(int rgb) override;\n\n    /**\n     * Sets the color used for the text of each cell.\n     * Equivalent to setForeground.\n     * See gcolor.h for more detail about colors.\n     */\n    void setColor(const std::string& color) override;\n\n    /**\n     * Sets the horizontal alignment of the given column.\n     * The column is specified by a 0-based column index from the left of the table.\n     * @throw ErrorException if the given column index is out of bounds\n     */\n    virtual void setColumnAlignment(int column, HorizontalAlignment alignment);\n\n    /**\n     * Sets the background color of the given column to the given color.\n     * The column is specified by a 0-based column index from the left of the table.\n     * See gcolor.h for more detail about colors.\n     * @throw ErrorException if the given column index is out of bounds\n     */\n    virtual void setColumnBackground(int column, int color);\n\n    /**\n     * Sets the background color of the given column to the given color.\n     * The column is specified by a 0-based column index from the left of the table.\n     * See gcolor.h for more detail about colors.\n     * @throw ErrorException if the given column index is out of bounds\n     */\n    virtual void setColumnBackground(int column, const std::string& color);\n\n    /**\n     * Sets the text font of the given column to the given RGB color.\n     * The column is specified by a 0-based column index from the left of the table.\n     * See gcolor.h for more detail about colors.\n     * @throw ErrorException if the given column index is out of bounds\n     */\n    virtual void setColumnFont(int column, const std::string& font);\n\n    /**\n     * Sets the foreground/text color of the given column to the given color.\n     * The column is specified by a 0-based column index from the left of the table.\n     * See gcolor.h for more detail about colors.\n     * @throw ErrorException if the given column index is out of bounds\n     */\n    virtual void setColumnForeground(int column, int color);\n\n    /**\n     * Sets the foreground/text color of the given column to the given color.\n     * The column is specified by a 0-based column index from the left of the table.\n     * See gcolor.h for more detail about colors.\n     * @throw ErrorException if the given column index is out of bounds\n     */\n    virtual void setColumnForeground(int column, const std::string& color);\n\n    /**\n     * Sets the given column index to have the given width in pixels.\n     * @throw ErrorException if the given column index is out of bounds\n     *        or if the width is negative\n     */\n    virtual void setColumnWidth(int column, double width);\n\n    /**\n     * Sets the column headers to use the given style.\n     * Default is none, but can be set to Excel style or numeric instead.\n     */\n    virtual void setColumnHeaderStyle(ColumnHeaderStyle style);\n\n    /**\n     * Sets whether cells of the table can be edited.\n     * Initially true.\n     */\n    virtual void setEditable(bool editable);\n\n    /**\n     * Modifies the value in the cell that is currently being edited to store\n     * the given text. This does not modify the value in the table cell but\n     * merely the value in the editor widget.\n     * @throw ErrorException if the given row or column are out of bounds\n     */\n    virtual void setEditorValue(int row, int column, const std::string& text);\n\n    /**\n     * Sets the font used to display each cell's text.\n     */\n    void setFont(const QFont& font) override;\n\n    /**\n     * Sets the font used to display each cell's text.\n     * See gfont.h for more detail about fonts.\n     */\n    void setFont(const std::string& font) override;\n\n    /**\n     * Sets the color used for the text of each cell.\n     * Equivalent to setColor.\n     * See gcolor.h for more detail about colors.\n     */\n    void setForeground(int rgb) override;\n\n    /**\n     * Sets the color used for the text of each cell.\n     * Equivalent to setColor.\n     * See gcolor.h for more detail about colors.\n     */\n    void setForeground(const std::string& color) override;\n\n    /**\n     * Sets the horizontal alignment of the text in all cells in the table.\n     * The alignment can be LEFT, CENTER, or RIGHT and is initially LEFT.\n     */\n    virtual void setHorizontalAlignment(HorizontalAlignment alignment);\n\n    /**\n     * Sets the horizontal alignment of the given row.\n     * The row is specified by a 0-based row index from the top of the table.\n     * @throw ErrorException if the given row index is out of bounds\n     */\n    virtual void setRowAlignment(int row, HorizontalAlignment alignment);\n\n    /**\n     * Sets the background color of the given row to the given RGB color.\n     * The row is specified by a 0-based row index from the top of the table.\n     * See gcolor.h for more detail about colors.\n     * @throw ErrorException if the given row index is out of bounds\n     */\n    virtual void setRowBackground(int row, int rgb);\n\n    /**\n     * Sets the background color of the given row to the given color.\n     * The row is specified by a 0-based row index from the top of the table.\n     * See gcolor.h for more detail about colors.\n     * @throw ErrorException if the given row index is out of bounds\n     */\n    virtual void setRowBackground(int row, const std::string& color);\n\n    /**\n     * Sets the text font of the given row to the given font.\n     * The row is specified by a 0-based row index from the top of the table.\n     * See gfont.h for more detail about fonts.\n     * @throw ErrorException if the given row index is out of bounds\n     */\n    virtual void setRowFont(int row, const std::string& font);\n\n    /**\n     * Sets the foreground/text color of the given row to the given color.\n     * The row is specified by a 0-based row index from the top of the table.\n     * See gcolor.h for more detail about colors.\n     * @throw ErrorException if the given row index is out of bounds\n     */\n    virtual void setRowForeground(int row, int rgb);\n\n    /**\n     * Sets the foreground/text color of the given row to the given color.\n     * The row is specified by a 0-based row index from the top of the table.\n     * See gcolor.h for more detail about colors.\n     * @throw ErrorException if the given row index is out of bounds\n     */\n    virtual void setRowForeground(int row, const std::string& color);\n\n    /**\n     * Sets whether row and column headers should be shown in the table.\n     * Initially false.\n     */\n    virtual void setRowColumnHeadersVisible(bool visible);\n\n    /**\n     * Sets the given row index to have the given height in pixels.\n     * @throw ErrorException if the given row index is out of bounds\n     *        or if the height is negative\n     */\n    virtual void setRowHeight(int row, double width);\n\n    /**\n     * Sets the text in the cell that is currently selected.\n     * If no cell is currently selected, does nothing.\n     */\n    virtual void setSelectedCellValue(const std::string& text);\n\n    /**\n     * Sets the given function to be called when events occur in this table.\n     * Any existing table listener will be replaced.\n     */\n    virtual void setTableListener(GEventListener func);\n\n    /**\n     * Sets the given function to be called when events occur in this table.\n     * Any existing table listener will be replaced.\n     */\n    virtual void setTableListener(GEventListenerVoid func);\n\n    /**\n     * Returns the number of columns in the table.\n     * Equivalent to numCols().\n     */\n    virtual int width() const;\n\nprivate:\n    Q_DISABLE_COPY(GTable)\n\n    // Represents cascading styles on a cell, row, column, or table.\n    struct TableStyle {\n        int background;\n        int foreground;\n        std::string font;\n        HorizontalAlignment alignment;\n        // TODO: borders?\n\n        TableStyle() {\n            background = 0;\n            foreground = 0;\n            font = \"\";\n            alignment = ALIGN_LEFT;\n        }\n\n        bool isSet() const {\n            return background >= 0\n                    && foreground >= 0\n                    && !font.empty()\n                    && alignment >= 0;\n        }\n\n        void mergeWith(const TableStyle& other) {\n            if (other.background >= 0) {\n                background = other.background;\n            }\n            if (other.foreground >= 0) {\n                foreground = other.foreground;\n            }\n            if (!other.font.empty()) {\n                font = other.font;\n            }\n            if (other.alignment >= 0) {\n                alignment = other.alignment;\n            }\n        }\n\n        TableStyle mergedWith(const TableStyle& other) {\n            TableStyle copy = *this;\n            copy.mergeWith(other);\n            return copy;\n        }\n\n        static TableStyle unset() {\n            TableStyle style;\n            style.background = -1;\n            style.foreground = -1;\n            style.font = \"\";\n            style.alignment = (HorizontalAlignment) -1;\n            return style;\n        }\n    };\n\n    // static variables for default formatting:\n    // background/foreground colors\n    // font\n    // alignment\n    static TableStyle _defaultCellStyle;\n\n    // member variables\n    _Internal_QTableWidget* _iqtableview;\n    ColumnHeaderStyle _columnHeaderStyle;\n\n    // styles on table, rows, columns, cells\n    Map<int, TableStyle> _rowStyles;\n    Map<int, TableStyle> _columnStyles;\n    TableStyle _globalCellStyle;\n\n    void applyStyleToCell(int row, int column, const TableStyle& style);\n\n    /*\n     * @throw ErrorException if the given row/column values are out of bounds.\n     */\n    void checkColumn(const std::string& member, int column) const;\n    void checkIndex(const std::string& member, int row, int column) const;\n    void checkRow(const std::string& member, int row) const;\n\n    void ensureColumnStyle(int column);\n    void ensureDefaultFormatting() const;   // const hack\n    void ensureGlobalCellStyle();\n    void ensureRowStyle(int row);\n    TableStyle getMergedStyleForCell(int row, int column);\n\n    // Internal setters for cell formatting.\n    virtual void setCellAlignmentInternal(int row, int column, HorizontalAlignment alignment);\n    virtual void setCellBackgroundInternal(int row, int column, int color);\n    virtual void setCellFontInternal(int row, int column, const std::string& font);\n    virtual void setCellForegroundInternal(int row, int column, int color);\n\n    static std::string toExcelColumnName(int col);\n    // static GridLocation toRowColumn(const std::string& excelColumnName);\n\n    void updateColumnHeaders();\n\n    friend class _Internal_QTableWidget;\n};\n\n/**\n * Internal class; not to be used by clients.\n * @private\n */\nclass _Internal_QItemDelegate : public QStyledItemDelegate {\n    Q_OBJECT\n\npublic:\n    _Internal_QItemDelegate(QObject* parent = nullptr);\n    virtual QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const;\n    virtual void destroyEditor(QWidget* editor, const QModelIndex& index) const;\n    virtual QWidget* getEditor() const;\n\nprivate:\n    QWidget* _editor;\n};\n\n\n/**\n * Internal class; not to be used by clients.\n * @private\n */\nclass _Internal_QTableWidget : public QTableWidget, public _Internal_QWidget {\n    Q_OBJECT\n\npublic:\n    _Internal_QTableWidget(GTable* gtable, int rows, int columns, QWidget* parent = nullptr);\n    void detach() override;\n    bool edit(const QModelIndex& index, QAbstractItemView::EditTrigger trigger, QEvent* event) override;\n    virtual QWidget* getEditor() const;\n    virtual _Internal_QItemDelegate* getItemDelegate() const;\n    virtual bool isEditing() const;\n    void closeEditor(QWidget* editor, QAbstractItemDelegate::EndEditHint hint) override;\n    void keyPressEvent(QKeyEvent* event) override;\n    QSize sizeHint() const override;\n\npublic slots:\n    void handleCellChange(int row, int column);\n    void handleCellDoubleClick(int row, int column);\n    void handleSelectionChange(const QItemSelection& selected, const QItemSelection& deselected);\n\nprivate:\n    GTable* _gtable;\n    _Internal_QItemDelegate* _delegate;\n    int _lastKeyPressed;\n\n    void fireTableEvent(EventType eventType, const std::string& eventName, int row = -1, int col = -1);\n\n    friend class GTable;\n};\n\n#endif // _gtable_h\n"
  },
  {
    "path": "Library/graphics/gtextarea.cpp",
    "content": "/*\n * File: gtextarea.cpp\n * -------------------\n *\n * @author Marty Stepp\n * @version 2019/04/23\n * - moved some event listener code to GInteractor superclass\n * @version 2019/02/02\n * - destructor now stops event processing\n * @version 2018/08/23\n * - renamed to gtextarea.cpp to replace Java version\n * @version 2018/06/25\n * - initial version\n */\n\n#include \"gtextarea.h\"\n#include <QScrollBar>\n#include <QTextCursor>\n#include \"gcolor.h\"\n#include \"gfont.h\"\n#include \"gthread.h\"\n#include \"require.h\"\n\nGTextArea::GTextArea(int rows, int columns, QWidget* parent)\n        : _contextMenuEnabled(true) {\n    GThread::runOnQtGuiThread([this, parent]() {\n        _iqtextedit = new _Internal_QTextEdit(this, getInternalParent(parent));\n    });\n    setRowsColumns(rows, columns);\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGTextArea::GTextArea(const std::string& text, QWidget* parent)\n        : _contextMenuEnabled(true) {\n    GThread::runOnQtGuiThread([this, parent]() {\n        _iqtextedit = new _Internal_QTextEdit(this, getInternalParent(parent));\n    });\n    setText(text);\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGTextArea::~GTextArea() {\n    // TODO: delete _iqtextedit;\n    _iqtextedit->detach();\n    _iqtextedit = nullptr;\n}\n\nvoid GTextArea::appendFormattedText(const std::string& text, const std::string& color, const std::string& font) {\n    moveCursorToEnd();\n\n    // create a formatted block with the font and color\n    QTextCharFormat format;\n    if (!color.empty()) {\n        format.setForeground(QBrush(GColor::convertColorToRGB(color)));\n    }\n    if (!font.empty()) {\n        // carry over only the font's weight, not size/face\n        QFont qfont = GFont::toQFont(_iqtextedit->font(), font);\n        format.setFontWeight(qfont.weight());\n    }\n\n    QTextCursor cursor = _iqtextedit->textCursor();\n    cursor.beginEditBlock();\n    cursor.movePosition(QTextCursor::End, QTextCursor::MoveAnchor, 1);\n    cursor.insertText(QString::fromStdString(text), format);\n    cursor.endEditBlock();\n    GThread::runOnQtGuiThread([this, cursor]() {\n        _iqtextedit->setTextCursor(cursor);\n        _iqtextedit->ensureCursorVisible();\n    });\n\n    moveCursorToEnd();\n}\n\nvoid GTextArea::appendHtml(const std::string& html) {\n    // TODO: use insertHtml for speed?\n    setHtml(getHtml() + html);\n}\n\nvoid GTextArea::appendText(const std::string& text) {\n    QTextCursor cursor = _iqtextedit->textCursor();\n    cursor.movePosition(QTextCursor::End, QTextCursor::MoveAnchor, 1);\n    cursor.insertText(QString::fromStdString(text));\n    moveCursorToEnd();\n}\n\nvoid GTextArea::clearSelection() {\n    GThread::runOnQtGuiThread([this]() {\n        QTextCursor cursor = _iqtextedit->textCursor();\n        cursor.clearSelection();\n        _iqtextedit->setTextCursor(cursor);\n    });\n}\n\nvoid GTextArea::clearText() {\n    GThread::runOnQtGuiThread([this]() {\n        _iqtextedit->clear();\n    });\n}\n\nint GTextArea::getColumns() const {\n    return (int) (getHeight() / getRowColumnSize().width);\n}\n\nint GTextArea::getCursorPosition() const {\n    return _iqtextedit->textCursor().position();\n}\n\nstd::string GTextArea::getHtml() const {\n    return _iqtextedit->toHtml().toStdString();\n}\n\n_Internal_QWidget* GTextArea::getInternalWidget() const {\n    return _iqtextedit;\n}\n\nstd::string GTextArea::getPlaceholder() const {\n    return _iqtextedit->placeholderText().toStdString();\n}\n\nGDimension GTextArea::getRowColumnSize() const {\n    QFontMetrics metrics(_iqtextedit->font());\n    return GDimension(metrics.horizontalAdvance(QString::fromStdString(\"mmmmmmmmmm\")) / 10.0, metrics.lineSpacing() + 2);\n}\n\nint GTextArea::getRows() const {\n    return (int) (getHeight() / getRowColumnSize().height);\n}\n\nstd::string GTextArea::getSelectedText() const {\n    QTextCursor cursor = _iqtextedit->textCursor();\n    int start = cursor.selectionStart();\n    int end = cursor.selectionEnd();\n    if (end > start) {\n        return getText().substr(start, end - start);\n    } else {\n        return \"\";\n    }\n}\n\nint GTextArea::getSelectionEnd() const {\n    QTextCursor cursor = _iqtextedit->textCursor();\n    int start = cursor.selectionStart();\n    int end = cursor.selectionEnd();\n    if (end > start) {\n        return end;\n    } else {\n        // no selection; cursor sets selection start/end to be equal\n        return -1;\n    }\n}\n\nint GTextArea::getSelectionLength() const {\n    QTextCursor cursor = _iqtextedit->textCursor();\n    int start = cursor.selectionStart();\n    int end = cursor.selectionEnd();\n    return end - start;\n}\n\nint GTextArea::getSelectionStart() const {\n    QTextCursor cursor = _iqtextedit->textCursor();\n    int start = cursor.selectionStart();\n    int end = cursor.selectionEnd();\n    if (end > start) {\n        return start;\n    } else {\n        return -1;\n    }\n}\n\nstd::string GTextArea::getText() const {\n    return _iqtextedit->toPlainText().toStdString();\n}\n\nstd::string GTextArea::getType() const {\n    return \"GTextArea\";\n}\n\nQWidget* GTextArea::getWidget() const {\n    return static_cast<QWidget*>(_iqtextedit);\n}\n\nbool GTextArea::isContextMenuEnabled() const {\n    return _contextMenuEnabled;\n}\n\nbool GTextArea::isEditable() const {\n    return !_iqtextedit->isReadOnly();\n}\n\nbool GTextArea::isLineWrap() const {\n    return _iqtextedit->lineWrapMode() != QTextEdit::NoWrap;\n}\n\nvoid GTextArea::moveCursorToEnd() {\n    GThread::runOnQtGuiThread([this]() {\n        QTextCursor cursor = _iqtextedit->textCursor();\n        cursor.movePosition(QTextCursor::End, QTextCursor::MoveAnchor, 1);\n        _iqtextedit->setTextCursor(cursor);\n        _iqtextedit->ensureCursorVisible();\n    });\n}\n\nvoid GTextArea::moveCursorToStart() {\n    GThread::runOnQtGuiThread([this]() {\n        QTextCursor cursor = _iqtextedit->textCursor();\n        cursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor, 1);\n        _iqtextedit->setTextCursor(cursor);\n        _iqtextedit->ensureCursorVisible();\n    });\n}\n\nvoid GTextArea::removeTextChangeListener() {\n    removeEventListener(\"textchange\");\n}\n\nvoid GTextArea::scrollToBottom() {\n    GThread::runOnQtGuiThread([this]() {\n        QScrollBar* scrollbar = _iqtextedit->verticalScrollBar();\n        scrollbar->setValue(scrollbar->maximum());\n        scrollbar->setSliderPosition(scrollbar->maximum());\n    });\n}\n\nvoid GTextArea::scrollToTop() {\n    GThread::runOnQtGuiThread([this]() {\n        QScrollBar* scrollbar = _iqtextedit->verticalScrollBar();\n        scrollbar->setValue(0);\n        scrollbar->setSliderPosition(0);\n    });\n}\n\nvoid GTextArea::select(int startIndex, int length) {\n    require::nonNegative(startIndex, 0, \"GTextArea::select\", \"startIndex\");\n    require::nonNegative(length, 0, \"GTextArea::select\", \"length\");\n    GThread::runOnQtGuiThread([this, startIndex, length]() {\n        QTextCursor cursor = _iqtextedit->textCursor();\n        cursor.setPosition(startIndex);\n        cursor.movePosition(QTextCursor::Right, QTextCursor::KeepAnchor, length);\n        _iqtextedit->setTextCursor(cursor);\n    });\n}\n\nvoid GTextArea::selectAll() {\n    GThread::runOnQtGuiThread([this]() {\n        _iqtextedit->selectAll();\n    });\n}\n\nvoid GTextArea::setColumns(int columns) {\n    require::nonNegative(columns, \"GTextArea::setColumns\");\n    double desiredWidth = getRowColumnSize().width * columns;\n    setPreferredSize(desiredWidth, getHeight());\n    setSize(desiredWidth, getHeight());\n}\n\nvoid GTextArea::setContextMenuEnabled(bool enabled) {\n    _contextMenuEnabled = enabled;\n}\n\nvoid GTextArea::setCursorPosition(int index, bool keepAnchor) {\n    require::nonNegative(index, \"TextArea::setCursorPosition\", \"index\");\n    GThread::runOnQtGuiThread([this, index, keepAnchor]() {\n        QTextCursor cursor(_iqtextedit->textCursor());\n        cursor.setPosition(index, keepAnchor ? QTextCursor::KeepAnchor : QTextCursor::MoveAnchor);\n        _iqtextedit->setTextCursor(cursor);\n        _iqtextedit->ensureCursorVisible();\n    });\n}\n\nvoid GTextArea::setEditable(bool value) {\n    GThread::runOnQtGuiThread([this, value]() {\n        _iqtextedit->setReadOnly(!value);\n    });\n}\n\nvoid GTextArea::setHtml(const std::string& html) {\n    GThread::runOnQtGuiThread([this, html]() {\n        _iqtextedit->setHtml(QString::fromStdString(html));\n    });\n}\n\nvoid GTextArea::setLineWrap(bool wrap) {\n    GThread::runOnQtGuiThread([this, wrap]() {\n        _iqtextedit->setLineWrapMode(wrap ? QTextEdit::WidgetWidth : QTextEdit::NoWrap);\n    });\n}\n\nvoid GTextArea::setMouseListener(GEventListener func) {\n    setEventListeners({\"mousepress\",\n                       \"mouserelease\"}, func);\n}\n\nvoid GTextArea::setMouseListener(GEventListenerVoid func) {\n    setEventListeners({\"mousepress\",\n                       \"mouserelease\"}, func);\n}\n\nvoid GTextArea::setPlaceholder(const std::string& text) {\n    GThread::runOnQtGuiThread([this, text]() {\n        _iqtextedit->setPlaceholderText(QString::fromStdString(text));\n    });\n}\n\nvoid GTextArea::setRows(int rows) {\n    require::nonNegative(rows, \"GTextArea::setRows\");\n    double desiredHeight = getRowColumnSize().height * rows;\n    setPreferredSize(getWidth(), desiredHeight);\n    setSize(getWidth(), desiredHeight);\n}\n\nvoid GTextArea::setRowsColumns(int rows, int columns) {\n    require::nonNegative2D(rows, columns, \"GTextArea::setRowsColumns\", \"rows\", \"columns\");\n    double desiredWidth = getRowColumnSize().width * columns;\n    double desiredHeight = getRowColumnSize().height * rows;\n    setPreferredSize(desiredWidth, desiredHeight);\n    setSize(desiredWidth, desiredHeight);\n}\n\nvoid GTextArea::setText(const std::string& text) {\n    GThread::runOnQtGuiThread([this, text]() {\n        _iqtextedit->setText(QString::fromStdString(text));\n    });\n}\n\nvoid GTextArea::setTextChangeListener(GEventListener func) {\n    setEventListener(\"textchange\", func);\n}\n\nvoid GTextArea::setTextChangeListener(GEventListenerVoid func) {\n    setEventListener(\"textchange\", func);\n}\n\n\n_Internal_QTextEdit::_Internal_QTextEdit(GTextArea* gtextArea, QWidget* parent)\n        : QTextEdit(parent),\n          _gtextarea(gtextArea) {\n    require::nonNull(gtextArea, \"_Internal_QTextEdit::constructor\");\n    setObjectName(QString::fromStdString(\"_Internal_QTextEdit_\" + std::to_string(gtextArea->getID())));\n    ensureCursorVisible();\n    setFocusPolicy(Qt::StrongFocus);\n    setTabChangesFocus(false);\n    document()->setUndoRedoEnabled(false);\n    connect(this, SIGNAL(textChanged()), this, SLOT(handleTextChange()));\n    connect(this->verticalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(handleScroll(int)));\n}\n\nvoid _Internal_QTextEdit::contextMenuEvent(QContextMenuEvent* event) {\n    if (!_gtextarea) {\n        QTextEdit::contextMenuEvent(event);   // call super\n        return;\n    }\n    if (_gtextarea->isContextMenuEnabled()) {\n        event->accept();\n    } else {\n        event->ignore();\n    }\n}\n\nvoid _Internal_QTextEdit::detach() {\n    _gtextarea = nullptr;\n}\n\nvoid _Internal_QTextEdit::handleScroll(int value) {\n    if (_gtextarea && _gtextarea->isAcceptingEvent(\"scroll\")) {\n        GEvent scrollEvent(\n                    /* class  */ SCROLL_EVENT,\n                    /* type   */ SCROLL_SCROLLED,\n                    /* name   */ \"scroll\",\n                    /* source */ _gtextarea);\n        scrollEvent.setActionCommand(_gtextarea->getActionCommand());\n        scrollEvent.setY(value);   // approximate\n        _gtextarea->fireEvent(scrollEvent);\n    }\n}\n\nvoid _Internal_QTextEdit::handleTextChange() {\n    if (_gtextarea && _gtextarea->isAcceptingEvent(\"textchange\")) {\n        GEvent textChangeEvent(\n                    /* class  */ KEY_EVENT,\n                    /* type   */ KEY_TYPED,\n                    /* name   */ \"textchange\",\n                    /* source */ _gtextarea);\n        textChangeEvent.setActionCommand(_gtextarea->getActionCommand());\n        _gtextarea->fireEvent(textChangeEvent);\n\n        // BUGFIX: for backward compatibility, also fire a CHANGE_EVENT\n        // (emits only to the old-style waitForEvent function)\n        GEvent changeEvent(\n                    /* class  */ CHANGE_EVENT,\n                    /* type   */ STATE_CHANGED,\n                    /* name   */ \"statechange\",\n                    /* source */ _gtextarea);\n        changeEvent.setActionCommand(_gtextarea->getActionCommand());\n        _gtextarea->fireEvent(changeEvent);\n    }\n}\n\nvoid _Internal_QTextEdit::keyPressEvent(QKeyEvent* event) {\n    require::nonNull(event, \"_Internal_QTextEdit::keyPressEvent\", \"event\");\n    if (_gtextarea && _gtextarea->isAcceptingEvent(\"keypress\")) {\n        event->accept();\n        _gtextarea->fireGEvent(event, KEY_PRESSED, \"keypress\");\n        if (event->isAccepted()) {\n            QTextEdit::keyPressEvent(event);   // call super\n        }\n    } else {\n        QTextEdit::keyPressEvent(event);   // call super\n    }\n}\n\nvoid _Internal_QTextEdit::keyReleaseEvent(QKeyEvent* event) {\n    require::nonNull(event, \"_Internal_QTextEdit::keyReleaseEvent\", \"event\");\n    if (_gtextarea && _gtextarea->isAcceptingEvent(\"keyrelease\")) {\n        event->accept();\n        _gtextarea->fireGEvent(event, KEY_RELEASED, \"keyrelease\");\n        if (event->isAccepted()) {\n            QTextEdit::keyReleaseEvent(event);   // call super\n        }\n    } else {\n        QTextEdit::keyReleaseEvent(event);   // call super\n    }\n}\n\nvoid _Internal_QTextEdit::mousePressEvent(QMouseEvent* event) {\n    require::nonNull(event, \"_Internal_QTextEdit::mousePressEvent\", \"event\");\n    if (_gtextarea && _gtextarea->isAcceptingEvent(\"mousepress\")) {\n        event->accept();\n        _gtextarea->fireGEvent(event, MOUSE_PRESSED, \"mousepress\");\n        if (event->isAccepted()) {\n            QTextEdit::mousePressEvent(event);   // call super\n        }\n    } else {\n        QTextEdit::mousePressEvent(event);   // call super\n    }\n}\n\nvoid _Internal_QTextEdit::mouseReleaseEvent(QMouseEvent* event) {\n    require::nonNull(event, \"_Internal_QTextEdit::mouseReleaseEvent\", \"event\");\n    if (_gtextarea && _gtextarea->isAcceptingEvent(\"mouserelease\")) {\n        event->accept();\n        _gtextarea->fireGEvent(event, MOUSE_RELEASED, \"mouserelease\");\n        if (event->isAccepted()) {\n            QTextEdit::mouseReleaseEvent(event);   // call super\n        }\n    } else {\n        QTextEdit::mouseReleaseEvent(event);   // call super\n    }\n}\n\nQSize _Internal_QTextEdit::sizeHint() const {\n    if (hasPreferredSize()) {\n        return getPreferredSize();\n    } else {\n        return QTextEdit::sizeHint();\n    }\n}\n\n\n"
  },
  {
    "path": "Library/graphics/gtextarea.h",
    "content": "/*\n * File: gtextarea.h\n * -----------------\n *\n * @author Marty Stepp\n * @version 2019/04/23\n * - moved some event listener code to GInteractor superclass\n * @version 2018/09/10\n * - added doc comments for new documentation generation\n * @version 2018/08/23\n * - renamed to gtextarea.h to replace Java version\n * @version 2018/06/25\n * - initial version\n */\n\n\n#ifndef _gtextarea_h\n#define _gtextarea_h\n\n#include <string>\n#include <QTextEdit>\n\n#include \"ginteractor.h\"\n\nclass _Internal_QTextEdit;\n\n/**\n * A GTextArea is a multi-line editable text box.\n * The box allows the user to type arbitrarily long documents.\n * Scroll bars will appear if the text becomes too long to fit in the visible\n * area of the box.\n */\nclass GTextArea : public GInteractor {\npublic:\n    /**\n     * Creates a new text area large enough to display the given number of rows\n     * and columns of text.\n     * @throw ErrorException if rows or columns value is negative\n     */\n    GTextArea(int rows, int columns, QWidget* parent = nullptr);\n\n    /**\n     * Creates a new text area with the given initial text.\n     */\n    GTextArea(const std::string& text = \"\", QWidget* parent = nullptr);\n\n    /**\n     * Frees memory allocated internally by the text area.\n     */\n    ~GTextArea() override;\n\n    /**\n     * Adds formatted text to the end of the text area.\n     * The text will be formatted with the given color and font.\n     */\n    virtual void appendFormattedText(const std::string& text, const std::string& color = \"\", const std::string& font = \"\");\n\n    /**\n     * Adds HTML-formatted text to the end of the text area.\n     */\n    virtual void appendHtml(const std::string& html);\n\n    /**\n     * Adds the given plain text to the end of the text area.\n     */\n    virtual void appendText(const std::string& text);\n\n    /**\n     * Deselects any text that is currently selected in the text area.\n     */\n    virtual void clearSelection();\n\n    /**\n     * Sets the text in the text area to be empty.\n     */\n    virtual void clearText();\n\n    /**\n     * Returns the number of visible columns (characters wide) in the text area.\n     */\n    virtual int getColumns() const;\n\n    /**\n     * Returns the keyboard cursor's current position in the text area as a\n     * 0-based character index within the overall text string.\n     */\n    virtual int getCursorPosition() const;\n\n    /**\n     * Returns the text area's current text as HTML.\n     * This differs from getText in that tags and formatting are not stripped.\n     */\n    virtual std::string getHtml() const;\n\n    /* @inherit */\n    _Internal_QWidget* getInternalWidget() const override;\n\n    /**\n     * Returns the text area's placeholder text, which is usually displayed\n     * as a light gray text in the text area when the area is empty.\n     * This usually indicates a hint to the user about what value to type.\n     * The default initial placeholder is empty.\n     */\n    virtual std::string getPlaceholder() const;\n\n    /**\n     * Returns the number of visible rows (lines tall) in the text area.\n     * This is approximate and will be rounded down to the nearest integer if\n     * the text area's size is not exactly a multiple of the row/line size.\n     */\n    virtual int getRows() const;\n\n    /**\n     * Returns the text that is currently selected in the text area.\n     * If no text is currently selected, returns an empty string.\n     */\n    virtual std::string getSelectedText() const;\n\n    /**\n     * Returns the index just past the end of the current selection of text as a\n     * 0-based character index within the overall text string.\n     * If no text is currently selected, returns -1.\n     */\n    virtual int getSelectionEnd() const;\n\n    /**\n     * Returns the number of characters that are currently selected.\n     * If no text is currently selected, returns 0.\n     */\n    virtual int getSelectionLength() const;\n\n    /**\n     * Returns the index of the start of the current selection of text as a\n     * 0-based character index within the overall text string.\n     * If no text is currently selected, returns -1.\n     */\n    virtual int getSelectionStart() const;\n\n    /**\n     * Returns the text area's current text.\n     */\n    virtual std::string getText() const;\n\n    /* @inherit */\n    std::string getType() const override;\n\n    /* @inherit */\n    QWidget* getWidget() const override;\n\n    /**\n     * Returns true if a context menu will pop up when the user right-clicks the\n     * text area.\n     * By default this is true, but it can be turned off by calling\n     * setContextMenuEnabled(false).\n     */\n    virtual bool isContextMenuEnabled() const;\n\n    /**\n     * Returns whether the text area allows the user to modify its text.\n     * Default true.\n     */\n    virtual bool isEditable() const;\n\n    /**\n     * Returns whether the text area wraps its text when a line becomes too long.\n     * Default true.\n     */\n    virtual bool isLineWrap() const;\n\n    /**\n     * Sets the text area's keyboard cursor position to the end of the\n     * current text.\n     */\n    virtual void moveCursorToEnd();\n\n    /**\n     * Sets the text area's keyboard cursor position to the start of the\n     * current text.\n     */\n    virtual void moveCursorToStart();\n\n    /**\n     * Removes the text change listener from this text area so that it will no longer\n     * call it when the user modifies the text.\n     */\n    virtual void removeTextChangeListener();\n\n    /**\n     * Moves the visible scroll region of the text area so that the bottom part\n     * of the text is visible.\n     */\n    virtual void scrollToBottom();\n\n    /**\n     * Moves the visible scroll region of the text area so that the top part\n     * of the text is visible.\n     */\n    virtual void scrollToTop();\n\n    /**\n     * Sets the given range of text to be selected, beginning with the given start\n     * index as a 0-based character index within the overall text string, and\n     * extending for the given length of characters.\n     * @throw ErrorException if start index or length is negative\n     */\n    virtual void select(int startIndex, int length);\n\n    /**\n     * Selects the entire text of the text area.\n     */\n    virtual void selectAll();\n\n    /**\n     * Sets the width of the text area to be wide enough to fit the given number\n     * of characters (columns) of text.\n     * @throw ErrorException if columns value is negative\n     */\n    virtual void setColumns(int columns);\n\n    /**\n     * Sets whether a context menu will pop up when the user right-clicks the\n     * text area.\n     * Initially true.\n     */\n    virtual void setContextMenuEnabled(bool enabled);\n\n    /**\n     * Moves the keyboard cursor to the given 0-based character index within\n     * the text.\n     * @throw ErrorException if index is negative\n     */\n    virtual void setCursorPosition(int index, bool keepAnchor = false);\n\n    /**\n     * Sets whether the text area allows the user to modify its text.\n     * Default true.\n     */\n    virtual void setEditable(bool value);\n\n    /**\n     * Sets the text area's current text to the given HTML string.\n     * This differs from setText in that HTML tags and formatting are applied\n     * to the text rather than considered to be regular characters.\n     */\n    virtual void setHtml(const std::string& html);\n\n    /**\n     * Sets whether the text area wraps its text when a line becomes too long.\n     * Default true.\n     */\n    virtual void setLineWrap(bool wrap);\n\n    /**\n     * Sets a mouse listener on this text area so that it will be called\n     * when the user moves or clicks the mouse.\n     * Any existing mouse listener will be replaced.\n     */\n    void setMouseListener(GEventListener func) override;\n\n    /**\n     * Sets a mouse listener on this text area so that it will be called\n     * when the user moves or clicks the mouse.\n     * Any existing mouse listener will be replaced.\n     */\n    void setMouseListener(GEventListenerVoid func) override;\n\n    /**\n     * Sets the text area's placeholder text, which is usually displayed\n     * as a light gray text in the text area when the area is empty.\n     * This usually indicates a hint to the user about what value to type.\n     * The default initial placeholder is empty.\n     */\n    virtual void setPlaceholder(const std::string& text);\n\n    /**\n     * Sets the height of the text area to be wide enough to fit the given number\n     * of lines (rows) of text.\n     * @throw ErrorException if rows value is negative\n     */\n    virtual void setRows(int rows);\n\n    /**\n     * Sets the size of the text area to be wide enough to fit the given number\n     * of lines (rows) and characters (columns) of text.\n     * @throw ErrorException if rows or columns value is negative\n     */\n    virtual void setRowsColumns(int rows, int columns);\n\n    /**\n     * Sets the text area's current text to the given string,\n     * replacing any existing text.\n     */\n    virtual void setText(const std::string& text);\n\n    /**\n     * Sets a text change listener on this text area so that it will be called\n     * when the user modifies the current text.\n     * Any existing text change listener will be replaced.\n     *\n     * A text change listener is similar to a key listener in that each will\n     * fire an event when the user types a character in the text area.\n     * But a key listener will fire when any key is pressed, even one that does\n     * not modify the text itself, such as when the user presses an arrow key\n     * or the Ctrl key or Esc or any other special character.\n     *\n     * A text change listener will fire only when the actual text changes, such\n     * as when the user types a new character into the area.\n     */\n    virtual void setTextChangeListener(GEventListener func);\n\n    /**\n     * Sets a text change listener on this text area so that it will be called\n     * when the user modifies the current text.\n     * Any existing text change listener will be replaced.\n     *\n     * A text change listener is similar to a key listener in that each will\n     * fire an event when the user types a character in the text area.\n     * But a key listener will fire when any key is pressed, even one that does\n     * not modify the text itself, such as when the user presses an arrow key\n     * or the Ctrl key or Esc or any other special character.\n     *\n     * A text change listener will fire only when the actual text changes, such\n     * as when the user types a new character into the area.\n     */\n    virtual void setTextChangeListener(GEventListenerVoid func);\n\nprivate:\n    Q_DISABLE_COPY(GTextArea)\n\n    _Internal_QTextEdit* _iqtextedit;\n    bool _contextMenuEnabled;\n\n    // helper used by getRows, getColumns, etc.\n    GDimension getRowColumnSize() const;\n\n    friend class _Internal_QTextEdit;\n};\n\n/**\n * Internal class; not to be used by clients.\n * @private\n */\nclass _Internal_QTextEdit : public QTextEdit, public _Internal_QWidget {\n    Q_OBJECT\n\npublic:\n    _Internal_QTextEdit(GTextArea* gtextArea, QWidget* parent = nullptr);\n    void contextMenuEvent(QContextMenuEvent* event) override;\n    void detach() override;\n    void keyPressEvent(QKeyEvent* event) override;\n    void keyReleaseEvent(QKeyEvent* event) override;\n    void mousePressEvent(QMouseEvent* event) override;\n    void mouseReleaseEvent(QMouseEvent* event) override;\n    QSize sizeHint() const override;\n\npublic slots:\n    void handleScroll(int value);\n    void handleTextChange();\n\nprivate:\n    GTextArea* _gtextarea;\n\n    friend class GTextArea;\n};\n\n#endif // _gtextarea_h\n"
  },
  {
    "path": "Library/graphics/gtextfield.cpp",
    "content": "/*\n * File: gtextfield.cpp\n * --------------------\n *\n * @author Marty Stepp\n * @version 2019/04/23\n * - added key events\n * @version 2019/02/02\n * - destructor now stops event processing\n * @version 2019/02/01\n * - emit CHANGE_EVENT on key presses when text changes\n * @version 2018/08/23\n * - renamed to gtextfield.cpp to replace Java version\n * @version 2018/06/29\n * - added textChange event\n * - added autocompletion\n * @version 2018/06/25\n * - initial version\n */\n\n#include \"gtextfield.h\"\n#include <QCompleter>\n#include <QFontMetrics>\n#include <QString>\n#include <QStringList>\n#include <QStringListModel>\n#include \"gthread.h\"\n#include \"require.h\"\n#include \"strlib.h\"\n\nGTextField::GTextField(const std::string& text, int charsWide, QWidget* parent)\n        : _iqlineedit(nullptr),\n          _iqspinbox(nullptr),\n          _iqdoublespinbox(nullptr) {\n    GThread::runOnQtGuiThread([this, parent]() {\n        _iqlineedit = new _Internal_QLineEdit(this, getInternalParent(parent));\n        _inputType = GTextField::INPUT_TYPE_TEXT;\n    });\n    if (!text.empty()) {\n        setText(text);\n    }\n    if (charsWide > 0) {\n        setCharsWide(charsWide);\n    }\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGTextField::GTextField(int charsWide, QWidget* parent)\n        : _iqlineedit(nullptr),\n          _iqspinbox(nullptr),\n          _iqdoublespinbox(nullptr) {\n    GThread::runOnQtGuiThread([this, parent]() {\n        _iqlineedit = new _Internal_QLineEdit(this, getInternalParent(parent));\n        _inputType = GTextField::INPUT_TYPE_TEXT;\n    });\n    if (charsWide > 0) {\n        setCharsWide(charsWide);\n    }\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGTextField::GTextField(int value, int min, int max, int step, QWidget* parent) {\n    require::require(min <= max, \"GTextField::constructor\", \"min (\" + std::to_string(min) + \") cannot be greater than max (\" + std::to_string(max) + \")\");\n    require::inRange(value, min, max, \"GTextField::constructor\", \"value\");\n    GThread::runOnQtGuiThread([this, value, min, max, step, parent]() {\n        _iqspinbox = new _Internal_QSpinBox(this, min, max, step, getInternalParent(parent));\n        _iqspinbox->setValue(value);\n        _inputType = GTextField::INPUT_TYPE_INTEGER;\n    });\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGTextField::GTextField(double value, double min, double max, double step, QWidget* parent) {\n    require::require(min <= max, \"GTextField::constructor\", \"min (\" + std::to_string(min) + \") cannot be greater than max (\" + std::to_string(max) + \")\");\n    require::inRange(value, min, max, \"GTextField::constructor\", \"value\");\n    GThread::runOnQtGuiThread([this, value, min, max, step, parent]() {\n        _iqdoublespinbox = new _Internal_QDoubleSpinBox(this, min, max, step, getInternalParent(parent));\n        _iqdoublespinbox->setValue(value);\n        _inputType = GTextField::INPUT_TYPE_REAL;\n    });\n    setVisible(false);   // all widgets are not shown until added to a window\n}\n\nGTextField::~GTextField() {\n    // TODO: delete _iqlineedit;\n    if (_iqlineedit) {\n        _iqlineedit->detach();\n        _iqlineedit = nullptr;\n    }\n    if (_iqspinbox) {\n        _iqspinbox->detach();\n        _iqspinbox = nullptr;\n    }\n    if (_iqdoublespinbox) {\n        _iqdoublespinbox->detach();\n        _iqdoublespinbox = nullptr;\n    }\n}\n\nstd::string GTextField::getActionEventType() const {\n    return \"change\";\n}\n\nint GTextField::getCharsWide() const {\n    QFontMetrics fm(getWidget()->font());\n    int mWidth = fm.horizontalAdvance(QString::fromStdString(\"m\"));\n    return (int) (getWidth() / mWidth);\n}\n\nGTextField::InputType GTextField::getInputType() const {\n    return _inputType;\n}\n\n_Internal_QWidget* GTextField::getInternalWidget() const {\n    if (_inputType == GTextField::INPUT_TYPE_TEXT) {\n        return _iqlineedit;\n    } else if (_inputType == GTextField::INPUT_TYPE_INTEGER) {\n        return _iqspinbox;\n    } else {\n        return _iqdoublespinbox;\n    }\n}\n\nint GTextField::getMaxLength() const {\n    int maxLength = _iqlineedit->maxLength();\n\n    // Qt has default max text length of 32767\n    maxLength = maxLength == 32767 ? 0 : maxLength;\n\n    if (_inputType == GTextField::INPUT_TYPE_TEXT) {\n        // empty\n    } else if (_inputType == GTextField::INPUT_TYPE_INTEGER) {\n        std::string maxStr = std::to_string(_iqspinbox->maximum());\n        maxLength = std::max(maxLength, (int) maxStr.length());\n    } else {\n        std::string maxStr = std::to_string(_iqdoublespinbox->maximum());\n        maxLength = std::max(maxLength, (int) maxStr.length());   // TODO: may be incorrect w/ decimal value\n    }\n\n    return maxLength;\n}\n\nstd::string GTextField::getPlaceholder() const {\n    if (_inputType == GTextField::INPUT_TYPE_TEXT) {\n        return _iqlineedit->placeholderText().toStdString();\n    } else if (_inputType == GTextField::INPUT_TYPE_INTEGER) {\n        return _iqspinbox->lineEdit()->placeholderText().toStdString();\n    } else {\n        return _iqdoublespinbox->lineEdit()->placeholderText().toStdString();\n    }\n}\n\nstd::string GTextField::getText() const {\n    if (_inputType == GTextField::INPUT_TYPE_TEXT) {\n        return _iqlineedit->text().toStdString();\n    } else if (_inputType == GTextField::INPUT_TYPE_INTEGER) {\n        return _iqspinbox->lineEdit()->text().toStdString();\n    } else {\n        return _iqdoublespinbox->lineEdit()->text().toStdString();\n    }\n}\n\nstd::string GTextField::getType() const {\n    return \"GTextField\";\n}\n\nstd::string GTextField::getValue() const {\n    return getText();\n}\n\nbool GTextField::getValueAsBool() const {\n    std::string text = trim(getText());\n    return stringToBool(text);\n}\n\nchar GTextField::getValueAsChar() const {\n    std::string text = getText();\n    if (text.empty()) {\n        return '\\0';\n    } else {\n        return text[0];\n    }\n}\n\ndouble GTextField::getValueAsDouble() const {\n    std::string text = trim(getText());\n    return stringToDouble(text);\n}\n\nint GTextField::getValueAsInt() const {\n    return getValueAsInteger();\n}\n\nint GTextField::getValueAsInteger() const {\n    std::string text = trim(getText());\n    return stringToInteger(text);\n}\n\nQWidget* GTextField::getWidget() const {\n    if (_inputType == GTextField::INPUT_TYPE_TEXT) {\n        return static_cast<QWidget*>(_iqlineedit);\n    } else if (_inputType == GTextField::INPUT_TYPE_INTEGER) {\n        return static_cast<QWidget*>(_iqspinbox);\n    } else {\n        return static_cast<QWidget*>(_iqdoublespinbox);\n    }\n}\n\nbool GTextField::isAutocompleteEnabled() const {\n    if (_inputType == GTextField::INPUT_TYPE_TEXT) {\n        return _iqlineedit->completer() != nullptr;\n    } else if (_inputType == GTextField::INPUT_TYPE_INTEGER) {\n        return _iqspinbox->lineEdit()->completer() != nullptr;\n    } else {\n        return _iqdoublespinbox->lineEdit()->completer() != nullptr;\n    }\n}\n\nbool GTextField::isEditable() const {\n    if (_inputType == GTextField::INPUT_TYPE_TEXT) {\n        return !_iqlineedit->isReadOnly();\n    } else if (_inputType == GTextField::INPUT_TYPE_INTEGER) {\n        return !_iqspinbox->lineEdit()->isReadOnly();\n    } else {\n        return !_iqdoublespinbox->lineEdit()->isReadOnly();\n    }\n}\n\nvoid GTextField::removeTextChangeListener() {\n    removeEventListener(\"textchange\");\n}\n\nvoid GTextField::setAutocompleteList(std::initializer_list<std::string> strings) {\n    Vector<std::string> v(strings);\n    setAutocompleteList(v);\n}\n\nvoid GTextField::setAutocompleteList(const Vector<std::string>& strings) {\n    GThread::runOnQtGuiThread([this, &strings]() {\n        QStringList stringList;\n        for (std::string s : strings) {\n            if (!s.empty()) {\n                stringList.push_back(QString::fromStdString(s));\n            }\n        }\n        QStringListModel* model = new QStringListModel(stringList, _iqlineedit);   // TODO: MEMORY LEAK\n        QCompleter* completer = new QCompleter(model, _iqlineedit);                // TODO: MEMORY LEAK\n        completer->setModelSorting(QCompleter::CaseInsensitivelySortedModel);\n        completer->setCaseSensitivity(Qt::CaseInsensitive);\n        completer->setCompletionMode(QCompleter::PopupCompletion);\n\n        if (_inputType == GTextField::INPUT_TYPE_TEXT) {\n            _iqlineedit->setCompleter(completer);\n        } else if (_inputType == GTextField::INPUT_TYPE_INTEGER) {\n            _iqspinbox->lineEdit()->setCompleter(completer);\n        } else {\n            _iqdoublespinbox->lineEdit()->setCompleter(completer);\n        }\n    });\n}\n\nvoid GTextField::setAutocompleteEnabled(bool enabled) {\n    GThread::runOnQtGuiThread([this, enabled]() {\n        if (!enabled) {\n            if (_inputType == GTextField::INPUT_TYPE_TEXT) {\n                _iqlineedit->setCompleter(nullptr);\n            } else if (_inputType == GTextField::INPUT_TYPE_INTEGER) {\n                _iqspinbox->lineEdit()->setCompleter(nullptr);\n            } else {\n                _iqdoublespinbox->lineEdit()->setCompleter(nullptr);\n            }\n        }\n    });\n    // TODO: ability to set back to false\n}\n\nvoid GTextField::setCharsWide(int charsWide) {\n    require::nonNegative(charsWide, \"GTextField::setCharsWide\");\n    GThread::runOnQtGuiThread([this, charsWide]() {\n        QFontMetrics fm(getWidget()->font());\n        int mWidth = fm.horizontalAdvance(QString::fromStdString(\"m\"));\n        getWidget()->setFixedWidth(mWidth * charsWide);\n        getWidget()->updateGeometry();\n    });\n}\n\nvoid GTextField::setEditable(bool value) {\n    GThread::runOnQtGuiThread([this, value]() {\n        if (_inputType == GTextField::INPUT_TYPE_TEXT) {\n            _iqlineedit->setReadOnly(!value);\n        } else if (_inputType == GTextField::INPUT_TYPE_INTEGER) {\n            _iqspinbox->setReadOnly(!value);\n        } else {\n            _iqdoublespinbox->setReadOnly(!value);\n        }\n    });\n}\n\nvoid GTextField::setMaxLength(int maxLength) {\n    GThread::runOnQtGuiThread([this, maxLength]() {\n        if (_inputType == GTextField::INPUT_TYPE_TEXT) {\n            _iqlineedit->setMaxLength(maxLength);\n        } else if (_inputType == GTextField::INPUT_TYPE_INTEGER) {\n            _iqspinbox->lineEdit()->setMaxLength(maxLength);\n        } else {\n            _iqdoublespinbox->lineEdit()->setMaxLength(maxLength);\n        }\n    });\n}\n\nvoid GTextField::setPlaceholder(const std::string& text) {\n    GThread::runOnQtGuiThread([this, text]() {\n        if (_inputType == GTextField::INPUT_TYPE_TEXT) {\n            _iqlineedit->setPlaceholderText(QString::fromStdString(text));\n        } else if (_inputType == GTextField::INPUT_TYPE_INTEGER) {\n            _iqspinbox->lineEdit()->setPlaceholderText(QString::fromStdString(text));\n        } else {\n            _iqdoublespinbox->lineEdit()->setPlaceholderText(QString::fromStdString(text));\n        }\n    });\n}\n\nvoid GTextField::setText(const std::string& text) {\n    GThread::runOnQtGuiThread([this, text]() {\n        if (_inputType == GTextField::INPUT_TYPE_TEXT) {\n            _iqlineedit->setText(QString::fromStdString(text));\n        } else if (_inputType == GTextField::INPUT_TYPE_INTEGER) {\n            _iqspinbox->lineEdit()->setText(QString::fromStdString(text));\n        } else {\n            _iqdoublespinbox->lineEdit()->setText(QString::fromStdString(text));\n        }\n    });\n}\n\nvoid GTextField::setTextChangeListener(GEventListener func) {\n    setEventListener(\"textchange\", func);\n}\n\nvoid GTextField::setTextChangeListener(GEventListenerVoid func) {\n    setEventListener(\"textchange\", func);\n}\n\nvoid GTextField::setValue(bool value) {\n    setText(boolToString(value));\n}\n\nvoid GTextField::setValue(char value) {\n    setText(charToString(value));\n}\n\nvoid GTextField::setValue(double value) {\n    setText(realToString(value));\n}\n\nvoid GTextField::setValue(int value) {\n    setText(std::to_string(value));\n}\n\nvoid GTextField::setValue(const std::string& value) {\n    setText(value);\n}\n\nbool GTextField::valueIsBool() const {\n    return stringIsBool(trim(getText()));\n}\n\nbool GTextField::valueIsChar() const {\n    return (int) getText().length() == 1;\n}\n\nbool GTextField::valueIsDouble() const {\n    return stringIsDouble(trim(getText()));\n}\n\nbool GTextField::valueIsInt() const {\n    return stringIsInteger(trim(getText()));\n}\n\nbool GTextField::valueIsInteger() const {\n    return stringIsInteger(trim(getText()));\n}\n\nbool GTextField::valueIsReal() const {\n    return stringIsReal(trim(getText()));\n}\n\n\n_Internal_QLineEdit::_Internal_QLineEdit(GTextField* gtextField, QWidget* parent)\n        : QLineEdit(parent),\n          _gtextfield(gtextField) {\n    require::nonNull(gtextField, \"_Internal_QLineEdit::constructor\");\n    setObjectName(QString::fromStdString(\"_Internal_QLineEdit_\" + std::to_string(gtextField->getID())));\n    connect(this, SIGNAL(textChanged(QString)), this, SLOT(handleTextChange(const QString&)));\n}\n\nvoid _Internal_QLineEdit::detach() {\n    _gtextfield = nullptr;\n}\n\nvoid _Internal_QLineEdit::handleTextChange(const QString&) {\n    if (!_gtextfield) {\n        return;\n    }\n    GEvent textChangeEvent(\n                /* class  */ KEY_EVENT,\n                /* type   */ KEY_TYPED,\n                /* name   */ \"textchange\",\n                /* source */ _gtextfield);\n    textChangeEvent.setActionCommand(_gtextfield->getActionCommand());\n    _gtextfield->fireEvent(textChangeEvent);\n\n    // BUGFIX: for backward compatibility, also fire a CHANGE_EVENT\n    // (emits only to the old-style waitForEvent function)\n    GEvent changeEvent(\n                /* class  */ CHANGE_EVENT,\n                /* type   */ STATE_CHANGED,\n                /* name   */ \"statechange\",\n                /* source */ _gtextfield);\n    changeEvent.setActionCommand(_gtextfield->getActionCommand());\n    _gtextfield->fireEvent(changeEvent);\n}\n\nvoid _Internal_QLineEdit::keyPressEvent(QKeyEvent* event) {\n    require::nonNull(event, \"_Internal_QLineEdit::keyPressEvent\", \"event\");\n    if (_gtextfield && _gtextfield->isAcceptingEvent(\"action\")) {\n        QLineEdit::keyPressEvent(event);   // call super\n        if (event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return) {\n            GEvent actionEvent(\n                        /* class  */ ACTION_EVENT,\n                        /* type   */ ACTION_PERFORMED,\n                        /* name   */ \"action\",\n                        /* source */ _gtextfield);\n            actionEvent.setActionCommand(_gtextfield->getActionCommand());\n            _gtextfield->fireEvent(actionEvent);\n        }\n    } else if (_gtextfield && _gtextfield->isAcceptingEvent(\"keypress\")) {\n        event->accept();\n        _gtextfield->fireGEvent(event, KEY_PRESSED, \"keypress\");\n        if (event->isAccepted()) {\n            QLineEdit::keyPressEvent(event);   // call super\n        }\n    } else {\n        QLineEdit::keyPressEvent(event);   // call super\n    }\n}\n\nvoid _Internal_QLineEdit::keyReleaseEvent(QKeyEvent* event) {\n    require::nonNull(event, \"_Internal_QLineEdit::keyReleaseEvent\", \"event\");\n    if (_gtextfield && _gtextfield->isAcceptingEvent(\"keyrelease\")) {\n        event->accept();\n        _gtextfield->fireGEvent(event, KEY_RELEASED, \"keyrelease\");\n        if (event->isAccepted()) {\n            QLineEdit::keyReleaseEvent(event);   // call super\n        }\n    } else {\n        QLineEdit::keyReleaseEvent(event);   // call super\n    }\n}\n\nQSize _Internal_QLineEdit::sizeHint() const {\n    if (hasPreferredSize()) {\n        return getPreferredSize();\n    } else {\n        return QLineEdit::sizeHint();\n    }\n}\n\n_Internal_QSpinBox::_Internal_QSpinBox(GTextField* gtextField, int min, int max, int step, QWidget* parent)\n        : QSpinBox(parent),\n          _gtextfield(gtextField) {\n    require::nonNull(gtextField, \"_Internal_QSpinBox::constructor\");\n    setObjectName(QString::fromStdString(\"_Internal_QSpinBox_\" + std::to_string(gtextField->getID())));\n    setRange(min, max);\n    setSingleStep(step);\n}\n\nvoid _Internal_QSpinBox::detach() {\n    _gtextfield = nullptr;\n}\n\nvoid _Internal_QSpinBox::handleTextChange(const QString&) {\n    if (!_gtextfield) {\n        return;\n    }\n    GEvent textChangeEvent(\n                /* class  */ KEY_EVENT,\n                /* type   */ KEY_TYPED,\n                /* name   */ \"textchange\",\n                /* source */ _gtextfield);\n    textChangeEvent.setActionCommand(_gtextfield->getActionCommand());\n    _gtextfield->fireEvent(textChangeEvent);\n}\n\nvoid _Internal_QSpinBox::keyPressEvent(QKeyEvent* event) {\n    require::nonNull(event, \"_Internal_QSpinBox::keyPressEvent\", \"event\");\n    if (_gtextfield && _gtextfield->isAcceptingEvent(\"action\")) {\n        QSpinBox::keyPressEvent(event);   // call super\n        if (event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return) {\n            GEvent actionEvent(\n                        /* class  */ ACTION_EVENT,\n                        /* type   */ ACTION_PERFORMED,\n                        /* name   */ \"action\",\n                        /* source */ _gtextfield);\n            actionEvent.setActionCommand(_gtextfield->getActionCommand());\n            _gtextfield->fireEvent(actionEvent);\n        }\n    } else if (_gtextfield && _gtextfield->isAcceptingEvent(\"keypress\")) {\n        event->accept();\n        _gtextfield->fireGEvent(event, KEY_PRESSED, \"keypress\");\n        if (event->isAccepted()) {\n            QSpinBox::keyPressEvent(event);   // call super\n        }\n    } else {\n        QSpinBox::keyPressEvent(event);   // call super\n    }\n}\n\nvoid _Internal_QSpinBox::keyReleaseEvent(QKeyEvent* event) {\n    require::nonNull(event, \"_Internal_QSpinBox::keyReleaseEvent\", \"event\");\n    if (_gtextfield && _gtextfield->isAcceptingEvent(\"keyrelease\")) {\n        event->accept();\n        _gtextfield->fireGEvent(event, KEY_RELEASED, \"keyrelease\");\n        if (event->isAccepted()) {\n            QSpinBox::keyReleaseEvent(event);   // call super\n        }\n    } else {\n        QSpinBox::keyReleaseEvent(event);   // call super\n    }\n}\n\nQLineEdit* _Internal_QSpinBox::lineEdit() const {\n    return QSpinBox::lineEdit();\n}\n\nQSize _Internal_QSpinBox::sizeHint() const {\n    if (hasPreferredSize()) {\n        return getPreferredSize();\n    } else {\n        return QSpinBox::sizeHint();\n    }\n}\n\n_Internal_QDoubleSpinBox::_Internal_QDoubleSpinBox(GTextField* gtextField, double min, double max, double step, QWidget* parent)\n        : QDoubleSpinBox(parent),\n          _gtextfield(gtextField) {\n    require::nonNull(gtextField, \"_Internal_QDoubleSpinBox::constructor\");\n    setObjectName(QString::fromStdString(\"_Internal_QDoubleSpinBox_\" + std::to_string(gtextField->getID())));\n    setRange(min, max);\n    setSingleStep(step);\n}\n\nvoid _Internal_QDoubleSpinBox::detach() {\n    _gtextfield = nullptr;\n}\n\nvoid _Internal_QDoubleSpinBox::handleTextChange(const QString&) {\n    if (!_gtextfield) {\n        return;\n    }\n    GEvent textChangeEvent(\n                /* class  */ KEY_EVENT,\n                /* type   */ KEY_TYPED,\n                /* name   */ \"textchange\",\n                /* source */ _gtextfield);\n    textChangeEvent.setActionCommand(_gtextfield->getActionCommand());\n    _gtextfield->fireEvent(textChangeEvent);\n}\n\nvoid _Internal_QDoubleSpinBox::keyPressEvent(QKeyEvent* event) {\n    require::nonNull(event, \"_Internal_QDoubleSpinBox::keyPressEvent\", \"event\");\n    if (_gtextfield && _gtextfield->isAcceptingEvent(\"action\")) {\n        QDoubleSpinBox::keyPressEvent(event);   // call super\n        if (event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return) {\n            GEvent actionEvent(\n                        /* class  */ ACTION_EVENT,\n                        /* type   */ ACTION_PERFORMED,\n                        /* name   */ \"action\",\n                        /* source */ _gtextfield);\n            actionEvent.setActionCommand(_gtextfield->getActionCommand());\n            _gtextfield->fireEvent(actionEvent);\n        }\n    } else if (_gtextfield && _gtextfield->isAcceptingEvent(\"keypress\")) {\n        event->accept();\n        _gtextfield->fireGEvent(event, KEY_PRESSED, \"keypress\");\n        if (event->isAccepted()) {\n            QDoubleSpinBox::keyPressEvent(event);   // call super\n        }\n    } else {\n        QDoubleSpinBox::keyPressEvent(event);   // call super\n    }\n}\n\nvoid _Internal_QDoubleSpinBox::keyReleaseEvent(QKeyEvent* event) {\n    require::nonNull(event, \"_Internal_QDoubleSpinBox::keyReleaseEvent\", \"event\");\n    if (_gtextfield && _gtextfield->isAcceptingEvent(\"keyrelease\")) {\n        event->accept();\n        _gtextfield->fireGEvent(event, KEY_RELEASED, \"keyrelease\");\n        if (event->isAccepted()) {\n            QDoubleSpinBox::keyReleaseEvent(event);   // call super\n        }\n    } else {\n        QDoubleSpinBox::keyReleaseEvent(event);   // call super\n    }\n}\n\nQLineEdit* _Internal_QDoubleSpinBox::lineEdit() const {\n    return QDoubleSpinBox::lineEdit();\n}\n\nQSize _Internal_QDoubleSpinBox::sizeHint() const {\n    if (hasPreferredSize()) {\n        return getPreferredSize();\n    } else {\n        return QDoubleSpinBox::sizeHint();\n    }\n}\n\n\n"
  },
  {
    "path": "Library/graphics/gtextfield.h",
    "content": "/*\n * File: gtextfield.h\n * ------------------\n *\n * @author Marty Stepp\n * @version 2019/04/23\n * - added key events\n * @version 2018/09/08\n * - added doc comments for new documentation generation\n * @version 2018/08/23\n * - renamed to gtextfield.h to replace Java version\n * @version 2018/06/29\n * - added textChange event\n * @version 2018/06/25\n * - initial version\n */\n\n\n#ifndef _gtextfield_h\n#define _gtextfield_h\n\n#include <initializer_list>\n#include <string>\n#include <QLineEdit>\n#include <QSpinBox>\n#include <QDoubleSpinBox>\n#include <QString>\n\n#include \"ginteractor.h\"\n#include \"vector.h\"\n\nclass _Internal_QLineEdit;\nclass _Internal_QSpinBox;\nclass _Internal_QDoubleSpinBox;\n\n/**\n * This interactor subclass represents a text field for entering short text strings.\n * Pressing Enter in a text field generates an action event.\n */\nclass GTextField : public GInteractor {\npublic:\n    /**\n     * Constants for the valid types of text field input.\n     */\n    enum InputType {\n        INPUT_TYPE_TEXT,\n        INPUT_TYPE_INTEGER,\n        INPUT_TYPE_REAL\n    };\n\n    /**\n     * Creates a text field with the given initial text.\n     * If the optional charsWide parameter is passed, sizes the text field\n     * wide enough to display the given number of characters.\n     */\n    GTextField(const std::string& text = \"\", int charsWide = 0, QWidget* parent = nullptr);\n\n    /**\n     * Creates a text field wide enough to display the given number of characters.\n     */\n    GTextField(int charsWide, QWidget* parent = nullptr);\n\n    /**\n     * Creates a text field for entering integer values, with the given initial value.\n     * The value is constrained to the given minimum and maximum, incrementing by\n     * the given step amount.\n     * @throw ErrorException if min > max or value is not between min and max\n     */\n    GTextField(int value, int min, int max, int step = 1, QWidget* parent = nullptr);\n\n    /**\n     * Creates a text field for entering real number values, with the given initial value.\n     * The value is constrained to the given minimum and maximum, incrementing by\n     * the given step amount.\n     * @throw ErrorException if min > max or value is not between min and max\n     */\n    GTextField(double value, double min, double max, double step, QWidget* parent = nullptr);\n\n    /**\n     * Frees memory allocated internally by the text field.\n     */\n    ~GTextField() override;\n\n    /**\n     * Returns the number of characters that can fit in the visible area of\n     * this text field.\n     */\n    virtual int getCharsWide() const;\n\n    /**\n     * Returns the type of input accepted by this text field.\n     * The default is text input (GTextField::INPUT_TYPE_TEXT), but you can create\n     * a field that accepts integers (INPUT_TYPE_INTEGER) or real numbers\n     * (INPUT_TYPE_REAL).\n     */\n    virtual InputType getInputType() const;\n\n    /* @inherit */\n    _Internal_QWidget* getInternalWidget() const override;\n\n    /**\n     * Returns the maximum length of string allowed in the text field.\n     * By default no max is set, in which case this method returns 0.\n     */\n    virtual int getMaxLength() const;\n\n    /**\n     * Returns the text field's placeholder text, which is usually displayed\n     * as a light gray text in the field when the field is empty.\n     * This usually indicates a hint to the user about what value to type.\n     */\n    virtual std::string getPlaceholder() const;\n\n    /**\n     * Returns the text field's current text.\n     * Equivalent to getValue.\n     */\n    virtual std::string getText() const;\n\n    /* @inherit */\n    std::string getType() const override;\n\n    /**\n     * Returns the text field's current text.\n     * Equivalent to getText.\n     */\n    virtual std::string getValue() const;\n\n    /**\n     * Returns the currently typed value in the text field,\n     * interpreted as a bool value of true or false.\n     * See the stringToBool function in strlib.h for more information about\n     * how the string is converted to a bool value.\n     * @throw ErrorException if the string cannot be converted to bool type\n     */\n    virtual bool getValueAsBool() const;\n\n    /**\n     * Returns the currently typed value in the text field as a char value.\n     * This returns the first character of the string, or '\\0' if the text\n     * field is empty.\n     */\n    virtual char getValueAsChar() const;\n\n    /**\n     * Returns the currently typed value in the text field,\n     * interpreted as a real number value.\n     * See the stringToDouble function in strlib.h for more information about\n     * how the string is converted to a numeric value.\n     * @throw ErrorException if the string cannot be converted to double type\n     */\n    virtual double getValueAsDouble() const;\n\n    /**\n     * Returns the currently typed value in the text field,\n     * interpreted as an integer value.\n     * See the stringToInteger function in strlib.h for more information about\n     * how the string is converted to a numeric value.\n     * Equivalent to getValueAsInteger.\n     * @throw ErrorException if the string cannot be converted to integer type\n     */\n    virtual int getValueAsInt() const;\n\n    /**\n     * Returns the currently typed value in the text field,\n     * interpreted as an integer value.\n     * See the stringToInteger function in strlib.h for more information about\n     * how the string is converted to a numeric value.\n     * Equivalent to getValueAsInteger.\n     * @throw ErrorException if the string cannot be converted to integer type\n     */\n    virtual int getValueAsInteger() const;\n\n    /* @inherit */\n    QWidget* getWidget() const override;\n\n    /**\n     * Returns true if this text field has an autocompletion list of options\n     * that will pop up as the user begins typing.\n     * Text fields do not initially have such a list, but you can supply one\n     * by calling setAutocompleteList.\n     */\n    virtual bool isAutocompleteEnabled() const;\n\n    /**\n     * Returns true if the text field's value can be edited.\n     * Initially this is true but can be changed by calling\n     * setEditable(false).\n     */\n    virtual bool isEditable() const;\n\n    /**\n     * Removes the text change listener from this text field so that it will no longer\n     * call it when the user types characters.\n     */\n    virtual void removeTextChangeListener();\n\n    /**\n     * Sets the given list of strings to be used as an autocompletion list for\n     * this text field.  After calling this, if the user types characters in\n     * the text field that form a prefix of any string in the list, those strings\n     * will be shown as a drop-down autocompletion list that the user can choose\n     * completed values from.\n     * To turn this feature back off, call setAutocompleteEnabled(false).\n     */\n    virtual void setAutocompleteList(std::initializer_list<std::string> strings);\n\n    /**\n     * Sets the given list of strings to be used as an autocompletion list for\n     * this text field.  After calling this, if the user types characters in\n     * the text field that form a prefix of any string in the list, those strings\n     * will be shown as a drop-down autocompletion list that the user can choose\n     * completed values from.\n     * To turn this feature back off, call setAutocompleteEnabled(false).\n     */\n    virtual void setAutocompleteList(const Vector<std::string>& strings);\n\n    /**\n     * Sets whether the autocompletion feature is enabled for this text field.\n     * If you call setAutocompleteList, the autocompletion feature is automatically\n     * enabled; so the main purpose of this method is to turn it back off later.\n     */\n    virtual void setAutocompleteEnabled(bool enabled);\n\n    /**\n     * Sets the width of this text field to be exactly wide enough to display\n     * the given number of characters.\n     */\n    virtual void setCharsWide(int charsWide);\n\n    /**\n     * Sets whether the value in the text box can be edited.\n     * Initially true.\n     */\n    virtual void setEditable(bool value);\n\n    /**\n     * Sets the maximum number of characters that can be typed into the field.\n     */\n    virtual void setMaxLength(int maxLength);\n\n    /**\n     * Sets a gray message that is displayed in the background of the text field\n     * before the user has typed any value.\n     * This is often used as a hint to the user about what kind of value to type.\n     */\n    virtual void setPlaceholder(const std::string& text);\n\n    /**\n     * Sets the current text value in the text field.\n     */\n    virtual void setText(const std::string& text);\n\n    /**\n     * Sets a text-change listener on this text field so that it will be called\n     * when the value in the field changes, which will occur on every key press.\n     * Any existing text-change listener will be replaced.\n     */\n    virtual void setTextChangeListener(GEventListener func);\n\n    /**\n     * Sets a text-change listener on this text field so that it will be called\n     * when the value in the field changes, which will occur on every key press.\n     * Any existing text-change listener will be replaced.\n     */\n    virtual void setTextChangeListener(GEventListenerVoid func);\n\n    /**\n     * Sets the current text value in the text field to the string representation\n     * of the given value.\n     */\n    virtual void setValue(bool value);\n\n    /**\n     * Sets the current text value in the text field to the string representation\n     * of the given value.\n     */\n    virtual void setValue(char value);\n\n    /**\n     * Sets the current text value in the text field to the string representation\n     * of the given value.\n     */\n    virtual void setValue(double value);\n\n    /**\n     * Sets the current text value in the text field to the string representation\n     * of the given value.\n     */\n    virtual void setValue(int value);\n\n    /**\n     * Sets the current text value in the text field to the string representation\n     * of the given value.\n     * Equivalent to setText.\n     */\n    virtual void setValue(const std::string& value);\n\n    /**\n     * Returns true if the currently typed value in the text field can be\n     * interpreted as a bool value of true or false.\n     * If this is true, a call to getValueAsBool will succeed.\n     */\n    virtual bool valueIsBool() const;\n\n    /**\n     * Returns true if the currently typed value in the text field can be\n     * interpreted as a char value.\n     * This will be true if its length is exactly 1.\n     * If this is true, a call to getValueAsChar will succeed.\n     */\n    virtual bool valueIsChar() const;\n\n    /**\n     * Returns true if the currently typed value in the text field can be\n     * interpreted as a real number.\n     * If this is true, a call to getValueAsDouble will succeed.\n     * Equivalent to valueIsReal.\n     */\n    virtual bool valueIsDouble() const;\n\n    /**\n     * Returns true if the currently typed value in the text field can be\n     * interpreted as an integer.\n     * If this is true, a call to getValueAsInt / getValueAsInteger will succeed.\n     * Equivalent to valueIsInteger.\n     */\n    virtual bool valueIsInt() const;\n\n    /**\n     * Returns true if the currently typed value in the text field can be\n     * interpreted as an integer.\n     * If this is true, a call to getValueAsInt / getValueAsInteger will succeed.\n     * Equivalent to valueIsInt.\n     */\n    virtual bool valueIsInteger() const;\n\n    /**\n     * Returns true if the currently typed value in the text field can be\n     * interpreted as a real number.\n     * If this is true, a call to getValueAsDouble will succeed.\n     * Equivalent to valueIsDouble.\n     */\n    virtual bool valueIsReal() const;\n\nprotected:\n    /**\n     * @private\n     */\n    std::string getActionEventType() const override;\n\nprivate:\n    Q_DISABLE_COPY(GTextField)\n\n    // pointers to the internal Qt text field;\n    // at most one of these will be non-null for a given instance\n    _Internal_QLineEdit* _iqlineedit;\n    _Internal_QSpinBox* _iqspinbox;\n    _Internal_QDoubleSpinBox* _iqdoublespinbox;\n\n    // type of text field; helps tell us which of the above internal Qt widgets\n    // will be non-null\n    InputType _inputType;\n\n    friend class _Internal_QLineEdit;\n    friend class _Internal_QSpinBox;\n    friend class _Internal_QDoubleSpinBox;\n};\n\n/**\n * Internal class; not to be used by clients.\n * @private\n */\nclass _Internal_QLineEdit : public QLineEdit, public _Internal_QWidget {\n    Q_OBJECT\n\npublic:\n    _Internal_QLineEdit(GTextField* gtextField, QWidget* parent = nullptr);\n    void detach() override;\n    void keyPressEvent(QKeyEvent* event) override;\n    void keyReleaseEvent(QKeyEvent* event) override;\n    QSize sizeHint() const override;\n\npublic slots:\n    void handleTextChange(const QString&);\n\nprivate:\n    GTextField* _gtextfield;\n\n    friend class GTextField;\n};\n\n/**\n * Internal class; not to be used by clients.\n * @private\n */\nclass _Internal_QSpinBox : public QSpinBox, public _Internal_QWidget {\n    Q_OBJECT\n\npublic:\n    _Internal_QSpinBox(GTextField* qgtextField, int min, int max, int step = 1, QWidget* parent = nullptr);\n    void detach() override;\n    void keyPressEvent(QKeyEvent* event) override;\n    void keyReleaseEvent(QKeyEvent* event) override;\n    virtual QLineEdit* lineEdit() const;\n    QSize sizeHint() const override;\n\npublic slots:\n    void handleTextChange(const QString&);\n\nprivate:\n    GTextField* _gtextfield;\n\n    friend class GTextField;\n};\n\n/**\n * Internal class; not to be used by clients.\n * @private\n */\nclass _Internal_QDoubleSpinBox : public QDoubleSpinBox, public _Internal_QWidget {\n    Q_OBJECT\n\npublic:\n    _Internal_QDoubleSpinBox(GTextField* qgtextField, double min, double max, double step = 0.1, QWidget* parent = nullptr);\n    void detach() override;\n    void keyPressEvent(QKeyEvent* event) override;\n    void keyReleaseEvent(QKeyEvent* event) override;\n    virtual QLineEdit* lineEdit() const;\n    QSize sizeHint() const override;\n\npublic slots:\n    void handleTextChange(const QString&);\n\nprivate:\n    GTextField* _gtextfield;\n\n    friend class GTextField;\n};\n\n#endif // _gtextfield_h\n"
  },
  {
    "path": "Library/graphics/gthread.cpp",
    "content": "/*\n * File: gthread.cpp\n * -----------------\n *\n * This file implements the members declared in gthread.h.\n *\n * @version 2019/04/13\n * - reimplement GThread to wrap either QThread or std::thread\n * - add GThread abstract base class for thread abstractions\n * - add GThreadQt and GThreadStd subclasses\n * - rename GFunctionThread to QFunctionThread to reduce name confusion\n * - remove GStudentThread subclass and combine functionality into GThread\n * @version 2018/10/18\n * - improved thread names\n * @version 2018/10/01\n * - bug fix where output wasn't showing up on the console if main ended too soon\n * @version 2018/09/23\n * - bug fix to shut down console at end of program\n * @version 2018/08/23\n * - renamed to gthread.h to replace Java version\n * @version 2018/07/28\n * - initial version\n */\n\n#include \"gthread.h\"\n#include \"gevent.h\"\n#include \"geventqueue.h\"\n#include \"require.h\"\n#include <pthread.h>\n\n// the native thread name seems to be what is shown in debugger\nvoid native_set_thread_name(const char *name) {\n#ifdef __APPLE__\n    pthread_setname_np(name);\n#elif defined _WIN32\n    pthread_setname_np(pthread_self(), name);\n#else\n    pthread_setname_np(pthread_self(), name);\n    // JDZ: believe same on linux as windows\n#endif\n}\n\nvoid native_thread_exit() {\n    pthread_exit(nullptr);\n    // JDZ:  Mac+Windows, but also linux? Need test\n}\n\n\nQFunctionThread::QFunctionThread(GThunk func, const std::string & threadName)\n        : _func(func),\n          _hasReturn(false),\n          _returnValue(0),\n          _name(threadName) {\n    // empty\n}\n\nQFunctionThread::QFunctionThread(GThunkInt func, const std::string & threadName)\n        : _funcInt(func),\n          _hasReturn(true),\n          _returnValue(0),\n          _name(threadName) {\n    // empty\n}\n\nint QFunctionThread::returnValue() const {\n    return _returnValue;\n}\n\nvoid QFunctionThread::run() {\n    native_set_thread_name(_name.c_str()); // can only do this when running in the thread\n    if (_hasReturn) {\n        _returnValue = _funcInt();\n    } else {\n        _func();\n    }\n}\n\nvoid QFunctionThread::start() {\n    if (!_name.empty()) {\n        setObjectName(QString::fromStdString(_name)); // have to do before start thread\n    }\n    QThread::start();\n}\n\n\n/*static*/ GThread* GThread::_qtGuiThread = nullptr;\n/*static*/ GThread* GThread::_studentThread = nullptr;\n\nGThread::GThread() {\n    // empty\n}\n\n/*static*/ void GThread::ensureThatThisIsTheQtGuiThread(const std::string& message) {\n    if (!iAmRunningOnTheQtGuiThread()) {\n        error((message.empty() ? \"\" : (message + \": \"))\n              + \"Qt GUI system must be initialized from the application's main thread.\");\n    }\n}\n\n/*static*/ bool GThread::iAmRunningOnTheQtGuiThread() {\n    return QThread::isMainThread();\n}\n\n/*static*/ void GThread::msleep(double ms) {\n    require::nonNegative(ms, \"GThread::msleep\", \"delay (ms)\");\n    QThread::msleep(static_cast<unsigned long>(ms));\n}\n\n/*static*/ bool GThread::qtGuiThreadExists() {\n    return _qtGuiThread != nullptr;\n}\n\n/*static*/ void GThread::runInNewThread(GThunk func, const std::string& threadName) {\n    GThreadQt* thread = new GThreadQt(func, threadName);\n    thread->start();\n    while (thread->isRunning()) {\n        GThread::msleep(10);\n    }\n    delete thread;\n}\n\n/*static*/ GThread* GThread::runInNewThreadAsync(GThunk func, const std::string& threadName) {\n    GThreadQt* thread = new GThreadQt(func, threadName);\n    thread->start();\n    return thread;\n}\n\n/*static*/ void GThread::runOnQtGuiThread(GThunk func) {\n    if (iAmRunningOnTheQtGuiThread()) {\n        // already on Qt GUI thread; just run the function!\n        func();\n    } else if (qtGuiThreadExists()) {\n        GEventQueue::instance()->runOnQtGuiThreadSync(func);\n    } else {\n        error(\"GThread::runOnQtGuiThread: Qt GUI thread has not been initialized properly. \\n\"\n              \"Make sure that the file containing your main() function #includes at least \\n\"\n              \"one .h header from the Stanford C++ library.\");\n    }\n}\n\n/*static*/ void GThread::runOnQtGuiThreadAsync(GThunk func) {\n    if (iAmRunningOnTheQtGuiThread()) {\n        // already on Qt GUI thread; just run the function!\n        func();\n    } else if (qtGuiThreadExists()) {\n        GEventQueue::instance()->runOnQtGuiThreadAsync(func);\n    } else {\n        error(\"GThread::runOnQtGuiThreadAsync: Qt GUI thread has not been initialized properly. \\n\"\n              \"Make sure that the file containing your main() function #includes at least \\n\"\n              \"one .h header from the Stanford C++ library.\");\n    }\n}\n\n/*static*/ void GThread::setCurrentThreadAsGuiThread() {\n    if (!_qtGuiThread) {\n        _qtGuiThread = new GThreadQt(QThread::currentThread(), \"Qt GUI Thread\"); // add GThreadQt wrapper\n    }\n}\n\n/*static*/ void GThread::startStudentThread(GThunkInt mainFunc) {\n    if (!_studentThread) {\n        _studentThread = new GThreadQt(mainFunc, \"Student main()\");\n        _studentThread->start();\n    }\n}\n\n/*static*/ bool GThread::studentThreadExists() {\n    return _studentThread != nullptr;\n}\n\n/*static*/ bool GThread::wait(GThread* thread, long ms) {\n    long startTime = GEvent::getCurrentTimeMS();\n    unsigned long msToSleep = static_cast<unsigned long>(ms > 10 ? 10 : ms);\n    while (thread && thread->isRunning()) {\n        GThread::msleep(msToSleep);\n\n        // stop if we have waited at least the given amount of time\n        if (ms > 0 && GEvent::getCurrentTimeMS() - startTime >= ms) {\n            break;\n        }\n    }\n    return thread->isRunning();\n}\n\n/*static*/ void GThread::yield() {\n    QThread::yieldCurrentThread();\n}\n\n\nGThreadQt::GThreadQt(GThunk func, const std::string& threadName)\n        : _qThread(nullptr) {\n    _qThread = new QFunctionThread(func, threadName);\n}\n\nGThreadQt::GThreadQt(GThunkInt func, const std::string& threadName)\n        : _qThread(nullptr) {\n    _qThread = new QFunctionThread(func, threadName);\n}\n\nGThreadQt::GThreadQt(QThread* qthread, const std::string& threadName)\n        : _qThread(qthread) {\n    qthread->setObjectName(QString::fromStdString(threadName));\n}\n\nGThreadQt::~GThreadQt() {\n    // TODO: delete _qThread;\n    _qThread = nullptr;\n}\n\nbool GThreadQt::isRunning() const {\n    return _qThread->isRunning();\n}\n\nvoid GThreadQt::join() {\n    if (_qThread->isRunning()) {\n        _qThread->wait();\n    }\n}\n\n// Implementation note: This may be the wrong behavior.\n// I think the current behavior tells this thread to pause itself,\n// while the desired behavior is to have the calling thread wait for this thread.\nbool GThreadQt::join(long ms) {\n    require::nonNegative(ms, \"GThread::join\", \"ms\");\n    return _qThread->wait(ms);\n}\n\nvoid GThreadQt::start() {\n    _qThread->start();\n}\n"
  },
  {
    "path": "Library/graphics/gthread.h",
    "content": "/*\n * File: gthread.h\n * ---------------\n *\n * This file contains code related to multithreading.\n * Qt requires at least two threads to run: a main Qt GUI thread,\n * and a separate student code thread.\n * The student's main() function runs in this latter student thread.\n * You can also run code in a new thread using the static method\n * GThread::runInNewThread or GThread::runInNewThreadAsync.\n *\n * @version 2019/04/13\n * - reimplement GThread to wrap either QThread or std::thread\n * - add GThread abstract base class for thread abstractions\n * - add GThreadQt and GThreadStd subclasses\n * - rename GFunctionThread to QFunctionThread to reduce name confusion\n * - remove GStudentThread subclass and combine functionality into GThread\n * @version 2018/10/18\n * - improved thread names\n * @version 2018/09/08\n * - added doc comments for new documentation generation\n * @version 2018/08/23\n * - renamed to gthread.h to replace Java version\n * @version 2018/07/28\n * - initial version\n */\n\n#ifndef _gthread_h\n#define _gthread_h\n\n#include <QThread>\n#include <atomic>\n#include <thread>\n\n#include \"gtypes.h\"\n#include \"map.h\"\n\nclass QtGui;\n\n/**\n * A QFunctionThread is an object that runs a function in its own\n * thread of execution.\n *\n * You construct it, passing a void function to run as a parameter,\n * and then call its <code>run()</code> method to run that function in its\n * own thread.\n *\n * Clients generally do not need to access this class directly.\n * To use threads with our library, use the static methods\n * <code>GThread::runInNewThread</code> and\n * <code>GThread::runInNewThreadAsync</code>.\n * @private\n */\nclass QFunctionThread : public QThread {\npublic:\n    /**\n     * Constructs a new thread to execute with optional threadName.\n     */\n    QFunctionThread(GThunk func, const std::string& threadName = \"\");\n\n    /**\n     * Constructs a new thread to execute function returning int.\n     */\n    QFunctionThread(GThunkInt func, const std::string& threadName = \"\");\n\n    /**\n     * Returns the value returned by the function, if any, else 0.\n     */\n    int returnValue() const;\n\n    /* @inherit */\n    void start();\n\n\nprotected:\n    /**\n     * Executes the function passed to the constructor in its own thread.\n     */\n    void run();\n\nprivate:\n    Q_DISABLE_COPY(QFunctionThread)\n\n    GThunk _func;\n    GThunkInt _funcInt;\n    bool _hasReturn;\n    int _returnValue;\n    std::string _name;\n};\n\n/**\n * The GThread class is a utility class containing static methods that allow\n * you to run code on various system threads.\n * The library has the following two standard threads running at all times:\n *\n * <ol>\n *     <li> The Qt GUI thread, which runs Qt's master exec() loop,\n *          handles all GUI object creation and events\n *          (this is technically the program's main thread)\n *\n *     <li> The student thread, which runs the student's main() function and\n *          any sub-functions called by main\n * </ol>\n *\n * Students and clients normally do not need to worry about threading issues.\n * These methods are called internally by many of the graphical interactors\n * to make sure that all internal Qt GUI widgets are initialized on the Qt GUI\n * thread.  This is required for them to function properly.\n *\n * If you want to run a piece of code in its own thread, use static methods\n * <code>GThread::runInNewThread</code> and\n * <code>GThread::runInNewThreadAsync</code>.\n */\nclass GThread {\npublic:\n\n    /**\n     * Returns true if the given thread is currently actively running.\n     */\n    virtual bool isRunning() const = 0;\n\n    /**\n     * Waits for this thread to finish.\n     * Will wait indefinitely as needed.\n     */\n    virtual void join() = 0;\n\n    /**\n     * Waits for this thread to finish.\n     * Will wait up to the given number of milliseconds.\n     * Returns true if the thread has finished or false if it is still running.\n     */\n    virtual bool join(long ms) = 0;\n\n    /**\n     * Tells the thread to start running.\n     */\n    virtual void start() = 0;\n\n    // TODO: methods to set a top-level exception handler\n\n\n    /**\n     * Generates an error if the caller is not running on the Qt GUI thread.\n     * An optional error detail message can be passed.\n     */\n    static void ensureThatThisIsTheQtGuiThread(const std::string& message = \"\");\n\n    /**\n     * Returns true if the caller is running on the Qt GUI thread.\n     */\n    static bool iAmRunningOnTheQtGuiThread();\n\n    /**\n     * Returns true if the Qt GUI thread has been created.\n     * This will happen right before the student's main() function runs.\n     */\n    static bool qtGuiThreadExists();\n\n    /**\n     * Causes current thread to pause itself for the given number of milliseconds.\n     * @throw ErrorException if ms is negative\n     */\n    static void msleep(double ms);\n\n    /**\n     * Runs the given void function in its own new thread,\n     * blocking the current thread to wait until it is done.\n     * You can pass an optional name for the thread which can help when looking\n     * through the list of threads in a debugger.\n     *\n     * Any uncaught exceptions or errors in the new thread will crash the\n     * program and cannot be caught by the calling thread.\n     *\n     * If you want the new thread to run in the background,\n     * use the <code>runInNewThreadAsync</code> function instead.\n     */\n    static void runInNewThread(GThunk func, const std::string& threadName = \"\");\n\n    /**\n     * Runs the given void function in its own new thread in the background;\n     * the current thread does not block and keeps going.\n     * You can pass an optional name for the thread which can help when looking\n     * through the list of threads in a debugger.\n     * Returns a pointer to the given thread in case you want to wait a given\n     * amount of time for the thread to do its work.\n     *\n     * Any uncaught exceptions or errors in the new thread will crash the\n     * program and cannot be caught by the calling thread.\n     *\n     * If you want the caller to wait for the new thread to finish running,\n     * use the <code>runInNewThread</code> function instead.\n     */\n    static GThread* runInNewThreadAsync(GThunk func, const std::string& threadName = \"\");\n\n    /**\n     * Runs the given void function on the Qt GUI thread,\n     * blocking the current thread to wait until it is done.\n     * This function is called heavily by the internal GUI widgets and\n     * interactors of the library, because all Qt GUI operations are required\n     * to be done on the application's main thread.\n     *\n     * Any uncaught exceptions or errors in the Qt GUI thread will crash the\n     * program and cannot be caught by the calling thread.\n     *\n     * If you want the new thread to run in the background,\n     * use the <code>runOnQtGuiThreadAsync</code> function instead.\n     */\n    static void runOnQtGuiThread(GThunk func);\n\n    /**\n     * Runs the given void function on the Qt GUI thread in the background;\n     * the current thread does not block and keeps going.\n     *\n     * Any uncaught exceptions or errors in the Qt GUI thread will crash the\n     * program and cannot be caught by the calling thread.\n     *\n     * If you want the caller to wait for the Qt GUI thread code to finish running,\n     * use the <code>runOnQtGuiThread</code> function instead.\n     */\n    static void runOnQtGuiThreadAsync(GThunk func);\n\n    /**\n     * Starts the student's thread, telling it to run the given function,\n     * which accepts no arguments and returns an int.\n     */\n    static void startStudentThread(GThunkInt mainFunc);\n\n    /**\n     * Returns true if the student's thread has already been created.\n     */\n    static bool studentThreadExists();\n\n    /**\n     * Waits the given number of milliseconds for the given thread to finish.\n     * @return true if the entire amount of ms was elapsed without the thread finishing\n     */\n    static bool wait(GThread* thread, long ms);\n\n    /**\n     * Indicates that the current thread is willing to yield execution to any\n     * other threads that want to run.\n     * This differs slightly from msleep() in that msleep() mandates to pause the\n     * current thread for a given amount of time, while yield() is more of an\n     * offer to other threads that they may run now if they so choose.\n     */\n    static void yield();\n\n    /**\n     * Sets the current thread to be the \"Gui\" thread for the application.\n     * This is called by our library initialization code to inform the GThread\n     * class what thread is the Gui thread.\n     * Clients do not need to call this method directly.\n     * @private\n     */\n    static void setCurrentThreadAsGuiThread();\n\nprotected:\n    // forbid construction\n    GThread();\n    virtual ~GThread() = default;\n\n    // pointers to the two core library threads\n    static GThread* _qtGuiThread;\n    static GThread* _studentThread;\n\nprivate:\n    friend class QtGui;\n};\n\n\n/**\n * A GThreadQt is an object that runs a function in its own\n * Qt thread of execution.\n * You construct it, passing a void function to run as a parameter,\n * and then call its <code>run()</code> method to run that function in its\n * own thread.\n *\n * This is provided so that you don't need to subclass QThread yourself\n * just to run a given piece of code.\n *\n * Clients generally do not need to access this class directly.\n * To use threads with our library, use the static methods\n * <code>GThread::runInNewThread</code> and\n * <code>GThread::runInNewThreadAsync</code>.\n * @private\n */\nclass GThreadQt : public GThread {\npublic:\n    /**\n     * Constructs a new thread to execute, with an optional thread name.\n     */\n    GThreadQt(GThunk func, const std::string& threadName = \"\");\n\n    /**\n     * Constructs a new thread to execute, with an optional thread name.\n     */\n    GThreadQt(GThunkInt func, const std::string& threadName = \"\");\n\n    /**\n     * Constructs a new thread to wrap the given existing Qt thread.\n     */\n    GThreadQt(QThread* qthread, const std::string& threadName = \"\");\n\n    virtual ~GThreadQt();\n\n    /* @inherit */\n    bool isRunning() const override;\n\n    /* @inherit */\n    void join() override;\n\n    /* @inherit */\n    bool join(long ms) override;\n\n    /* @inherit */\n    void start() override;\n\nprivate:\n    Q_DISABLE_COPY(GThreadQt)\n\n    QThread* _qThread;   // underlying real Qt thread\n};\n\n// Platform-specific way to set the name of current thread for display in debugger\nvoid native_set_thread_name(const char *name);\n\n// Platform-specific way to exit current thread\n[[noreturn]] void native_thread_exit();\n\n#endif // _gthread_h\n"
  },
  {
    "path": "Library/graphics/gtimer.cpp",
    "content": "/*\n * File: gtimer.cpp\n * ----------------\n * This file implements the gtimer.h interface.\n * \n * @version 2019/01/23\n * - added destructor\n * @version 2015/07/05\n * - removed static global Platform variable, replaced by getPlatform as needed\n * @version 2014/10/08\n * - removed 'using namespace' statement\n * - removed unneeded include statements\n */\n\n#include \"gtimer.h\"\n#include \"error.h\"\n#include \"gthread.h\"\n#include \"gwindow.h\"\n#include \"require.h\"\n\n/* Implementation of the GTimer class */\n\nGTimer::GTimer(double milliseconds)\n        : _ms(0),\n          _id(-1) {\n    setDelay(milliseconds);\n}\n\nGTimer::~GTimer() {\n    stop();\n}\n\ndouble GTimer::getDelay() const {\n    return _ms;\n}\n\nbool GTimer::isStarted() const {\n    return _id >= 0;\n}\n\nvoid GTimer::restart() {\n    stop();\n    start();\n}\n\nvoid GTimer::setDelay(double ms) {\n    require::positive(ms, \"GTimer::setDelay\", \"delay (ms)\");\n    _ms = ms;\n    if (isStarted()) {\n        restart();\n    }\n}\n\nvoid GTimer::start() {\n    _Internal_QMainWindow* lastWindow = static_cast<_Internal_QMainWindow*>(GWindow::getLastWindow());\n    if (!lastWindow) {\n        error(\"GTimer::start: You must create at least one GWindow before starting a GTimer.\");\n        return;\n    }\n    GThread::runOnQtGuiThreadAsync([this, lastWindow]() {\n        _id = lastWindow->timerStart(_ms);\n    });\n}\n\nvoid GTimer::stop() {\n    _Internal_QMainWindow* lastWindow = static_cast<_Internal_QMainWindow*>(GWindow::getLastWindow());\n    if (!lastWindow) {\n        error(\"GTimer::constructor: You must create at least one GWindow before stopping a GTimer.\");\n        return;\n    }\n    GThread::runOnQtGuiThreadAsync([this, lastWindow]() {\n        lastWindow->timerStop(_id);\n        _id = -1;\n    });\n}\n"
  },
  {
    "path": "Library/graphics/gtimer.h",
    "content": "/*\n * File: gtimer.h\n * --------------\n * This file defines the <code>GTimer</code> class, which implements a\n * general interval timer.\n *\n * @version 2019/01/23\n * - added destructor\n * @version 2018/09/09\n * - updated to use new Qt GUI timer interface\n * - added doc comments for new documentation generation\n */\n\n\n#ifndef _gtimer_h\n#define _gtimer_h\n\n#include <string>\n\n/**\n * This class implements a simple interval timer that generates a\n * <code>GTimerEvent</code> with a specified frequency.\n */\nclass GTimer {\npublic:\n    /**\n     * Creates a timer object that generates a <code>GTimerEvent</code>\n     * each time the specified number of milliseconds has elapsed.  No\n     * events are generated until the client calls <code>start</code>\n     * on the timer.\n     *\n     * Due to implementation details, you must create at least one GWindow\n     * before you can start() a GTimer object.\n     *\n     * @throw ErrorException if milliseconds is negative\n     */\n    GTimer(double milliseconds);\n\n    /**\n     * Destroys the timer, stopping it if it's currently running.\n     */\n    ~GTimer();\n\n    /**\n     * Returns the delay in milliseconds between each tick of this timer.\n     */\n    double getDelay() const;\n\n    /**\n     * Method: isStarted\n     * Usage: if (timer.isStarted()) { ... }\n     * -------------------------------------\n     * Returns true if the given timer has been started (via start()).\n     * If you stop the timer or have not started it yet,\n     * this method will return false.\n     */\n    bool isStarted() const;\n\n    /**\n     * Stops the timer (if it was started) and then starts it again.\n     */\n    void restart();\n\n    /**\n     * Changes the delay in milliseconds between each tick of this timer.\n     * If the timer is currently running, calling this method will stop\n     * and restart the timer with the new delay.\n     *\n     * @throw ErrorException if milliseconds is negative\n     */\n    void setDelay(double ms);\n\n    /**\n     * Starts the timer.  A timer continues to generate timer events until it\n     * is stopped; to achieve the effect of a one-shot timer, the simplest\n     * approach is to call the <code>stop</code> method inside the event\n     * handler.\n     */\n    void start();\n\n    /**\n     * Stops the timer so that it stops generating events until it is restarted.\n     */\n    void stop();\n\nprivate:\n    double _ms;\n    int _id;\n};\n\n#endif // _gtimer_h\n"
  },
  {
    "path": "Library/graphics/gtypes.cpp",
    "content": "/*\n * File: gtypes.cpp\n * ----------------\n * This file implements the classes in the gtypes.h interface.\n *\n * @version 2019/05/16\n * - added GRectangle contains(GRectangle), intersects\n * @version 2018/07/14\n * - initial version, based on gtypes.cpp\n */\n\n#include \"gtypes.h\"\n#include <cmath>\n#include <sstream>\n#include <string>\n#include \"collections.h\"\n#include \"gmath.h\"\n#include \"hashcode.h\"\n#include \"strlib.h\"\n\n/*\n * Implementation notes: GDimension class\n * --------------------------------------\n * The GDimension class itself is entirely straightforward.  The\n * relational operators compare the width first, followed by the height.\n * The hashCode function computes the exclusive-or of the individual words.\n */\n\nGDimension::GDimension(double w, double h)\n        : width(w),\n          height(h) {\n    // empty\n}\n\nGDimension::GDimension() : GDimension(0, 0) {}\n\nstd::string GDimension::toString() const {\n    std::ostringstream out;\n    out << *this;\n    return out.str();\n}\n\nstd::ostream& operator <<(std::ostream& os, const GDimension& dim) {\n    return os << \"(\" << dim.width << \", \" << dim.height << \")\";\n}\n\nbool operator ==(const GDimension& d1, const GDimension& d2) {\n    return floatingPointEqual(d1.width, d2.width)\n            && floatingPointEqual(d1.height, d2.height);\n}\n\nbool operator !=(const GDimension& d1, const GDimension& d2) {\n    return !(d1 == d2);\n}\n\nbool operator <(const GDimension& d1, const GDimension& d2) {\n    return d1.width < d2.width\n            || (floatingPointEqual(d1.width, d2.width) && d1.height < d2.height);\n}\n\nbool operator <=(const GDimension& d1, const GDimension& d2) {\n    return d1 < d2 || d1 == d2;\n}\n\nbool operator >(const GDimension& d1, const GDimension& d2) {\n    return d2 < d1;\n}\n\nbool operator >=(const GDimension& d1, const GDimension& d2) {\n    return d1 > d2 || d1 == d2;\n}\n\nGDimension operator *(const GDimension& d, double scale) {\n    return GDimension(d.width * scale, d.height * scale);\n}\n\nint hashCode(const GDimension& dim) {\n    return hashCode(dim.width, dim.height);\n}\n\nstd::string toString(HorizontalAlignment alignment) {\n    if (alignment == ALIGN_CENTER) {\n        return \"Center\";\n    } else if (alignment == ALIGN_LEFT) {\n        return \"Left\";\n    } else {   // if (alignment == ALIGN_RIGHT)\n        return \"Right\";\n    }\n}\n\nstd::string toString(VerticalAlignment alignment) {\n    if (alignment == ALIGN_MIDDLE) {\n        return \"Middle\";\n    } else if (alignment == ALIGN_TOP) {\n        return \"Top\";\n    } else {   // if (alignment == ALIGN_BOTTOM)\n        return \"Bottom\";\n    }\n}\n\nHorizontalAlignment toHorizontalAlignment(const std::string& alignmentStr) {\n    std::string alignLC = toLowerCase(trim(alignmentStr));\n    if (stringContains(alignLC, \"left\") || stringContains(alignLC, \"west\")) {\n        return ALIGN_LEFT;\n    } else if (stringContains(alignLC, \"right\") || stringContains(alignLC, \"east\")) {\n        return ALIGN_RIGHT;\n    } else if (stringContains(alignLC, \"stretch\") || stringContains(alignLC, \"justify\")) {\n        return ALIGN_HORIZONTAL_STRETCH;\n    } else {\n        return ALIGN_CENTER;\n    }\n}\n\nQt::Alignment toQtAlignment(HorizontalAlignment alignment) {\n    return alignment == ALIGN_LEFT ? Qt::AlignLeft\n            : alignment == ALIGN_CENTER ? Qt::AlignHCenter\n            : alignment == ALIGN_HORIZONTAL_STRETCH ? Qt::AlignJustify\n            : Qt::AlignRight;\n}\n\nQt::Alignment toQtAlignment(VerticalAlignment alignment) {\n    return alignment == ALIGN_TOP ? Qt::AlignTop\n            : alignment == ALIGN_MIDDLE ? Qt::AlignVCenter\n            : alignment == ALIGN_VERTICAL_STRETCH ? Qt::AlignTop\n            : Qt::AlignBottom;\n}\n\nVerticalAlignment toVerticalAlignment(const std::string& alignmentStr) {\n    std::string alignLC = toLowerCase(trim(alignmentStr));\n    if (stringContains(alignLC, \"top\") || stringContains(alignLC, \"north\")) {\n        return ALIGN_TOP;\n    } else if (stringContains(alignLC, \"bottom\") || stringContains(alignLC, \"south\")) {\n        return ALIGN_BOTTOM;\n    } else if (stringContains(alignLC, \"stretch\") || stringContains(alignLC, \"justify\")) {\n        return ALIGN_VERTICAL_STRETCH;\n    } else {\n        return ALIGN_MIDDLE;\n    }\n}\n\n/*\n * Implementation notes: GPoint class\n * ----------------------------------\n * The GPoint class itself is entirely straightforward.  The relational\n * operators compare the x components first, followed by the y component.\n * The hashCode function computes the exclusive-or of the individual words.\n */\n\nGPoint::GPoint(double xVal, double yVal)\n        : x(xVal),\n          y(yVal) {\n    // empty\n}\n\nGPoint::GPoint() : GPoint(0, 0) {}\n\nstd::string GPoint::toString() const {\n    std::ostringstream out;\n    out << *this;\n    return out.str();\n}\n\nstd::ostream& operator <<(std::ostream& os, const GPoint& pt) {\n    return os << \"(\" << pt.x << \", \" << pt.y << \")\";\n}\n\nbool operator ==(const GPoint& p1, const GPoint& p2) {\n    return floatingPointEqual(p1.x, p2.x)\n            && floatingPointEqual(p1.y, p2.y);\n}\n\nbool operator !=(const GPoint& p1, const GPoint& p2) {\n    return !(p1 == p2);\n}\n\nbool operator <(const GPoint& p1, const GPoint& p2) {\n    return p1.x < p2.x || (floatingPointEqual(p1.x, p2.x) && p1.y < p2.y);\n}\n\nbool operator <=(const GPoint& p1, const GPoint& p2) {\n    return p1 < p2 || p1 == p2;\n}\n\nbool operator >(const GPoint& p1, const GPoint& p2) {\n    return p2 < p1;\n}\n\nbool operator >=(const GPoint& p1, const GPoint& p2) {\n    return p1 > p2 || p1 == p2;\n}\n\nGPoint operator *(const GPoint& p, double scale) {\n    return GPoint(p.x * scale, p.y * scale);\n}\n\nint hashCode(const GPoint& pt) {\n    return hashCode(pt.x, pt.y);\n}\n\n/*\n * Implementation notes: GRectangle class\n * --------------------------------------\n * The GRectangle class itself is entirely straightforward.  The\n * relational operators compare the components in the following order:\n * x, y, width, height.  The hashCode function computes the exclusive-or\n * of the individual words.\n */\n\nGRectangle::GRectangle()\n        : GRectangle(0, 0, 0, 0) {\n    // empty\n}\n\nGRectangle::GRectangle(double xVal, double yVal, double w, double h)\n        : x(xVal),\n          y(yVal),\n          width(w),\n          height(h) {\n    // empty\n}\n\nGRectangle::GRectangle(double xVal, double yVal, const GDimension& size)\n        : x(xVal),\n          y(yVal),\n          width(size.width),\n          height(size.height) {\n    // empty\n}\n\nGRectangle::GRectangle(const GPoint& p, double w, double h)\n        : x(p.x),\n          y(p.y),\n          width(w),\n          height(h) {\n    // empty\n}\n\nGRectangle::GRectangle(const GPoint& p, const GDimension& size)\n        : x(p.x),\n          y(p.y),\n          width(size.width),\n          height(size.height) {\n    // empty\n}\n\nbool GRectangle::contains(double x, double y) const {\n    return x >= this->x && y >= this->y\n            && x < this->x + width\n            && y < this->y + height;\n}\n\nbool GRectangle::contains(const GPoint& pt) const {\n    return contains(pt.x, pt.y);\n}\n\nbool GRectangle::contains(const GRectangle& rect) const {\n    return contains(rect.x, rect.y)\n            && contains(rect.x + rect.width - 1, rect.y + rect.height - 1);\n}\n\nGRectangle GRectangle::enlargedBy(double amount) {\n    return GRectangle(x - amount, y - amount, width + 2 * amount, height + 2 * amount);\n}\n\nbool GRectangle::intersects(const GRectangle& other) const {\n    // check for non-intersecting x coordinates\n    return !(x + width < other.x            // this is entirely left of other\n          || x > other.x + other.width      // this is entirely right of other\n          || y + height < other.y           // this is entirely above other\n          || y > other.y + other.height);   // this is entirely below other\n}\n\nbool GRectangle::isEmpty() const {\n    return width <= 0 || height <= 0;\n}\n\nstd::string GRectangle::toString() const {\n    std::ostringstream out;\n    out << *this;\n    return out.str();\n}\n\nstd::ostream& operator <<(std::ostream& os, const GRectangle& rect) {\n    return os << \"(\" << rect.x << \", \" << rect.y << \", \"\n              << rect.width << \", \" << rect.height << \")\";\n}\n\nbool operator ==(const GRectangle& r1, const GRectangle& r2) {\n    return floatingPointEqual(r1.x, r2.x)\n            && floatingPointEqual(r1.y, r2.y)\n            && floatingPointEqual(r1.width, r2.width)\n            && floatingPointEqual(r1.height, r2.height);\n}\n\nbool operator !=(const GRectangle& r1, const GRectangle& r2) {\n    return !(r1 == r2);\n}\n\nbool operator <(const GRectangle& r1, const GRectangle& r2) {\n    return stanfordcpplib::collections::compareTo(\n            r1.x, r2.x, r1.y, r2.y, r1.width, r2.width, r1.height, r2.height) < 0;\n}\n\nbool operator <=(const GRectangle& r1, const GRectangle& r2) {\n    return r1 < r2 || r1 == r2;\n}\n\nbool operator >(const GRectangle& r1, const GRectangle& r2) {\n    return r2 < r1;\n}\n\nbool operator >=(const GRectangle& r1, const GRectangle& r2) {\n    return r1 > r2 || r1 == r2;\n}\n\nint hashCode(const GRectangle& r) {\n    return hashCode(r.x, r.y, r.width, r.height);\n}\n"
  },
  {
    "path": "Library/graphics/gtypes.h",
    "content": "/*\n * File: gtypes.h\n * --------------\n * This file defines classes for representing points, dimensions, and\n * rectangles.\n *\n * @version 2018/09/09\n * - added doc comments for new documentation generation\n * @version 2018/07/14\n * - initial version, based on gtypes.h\n */\n\n\n#ifndef _gtypes_h\n#define _gtypes_h\n\n#include <functional>\n#include <iostream>\n#include <Qt>\n#include <string>\n\n/**\n * An alias for a function wrapper around a void function with no parameters\n * and no return.\n */\ntypedef std::function<void()> GThunk;\n\n/**\n * An alias for a function wrapper around a function with no parameters\n * and an int return (such as main()).\n */\ntypedef std::function<int()> GThunkInt;\n\n\n/**\n * This struct contains real-valued width and height fields.\n * It is used to indicate the size of a graphical object.\n */\nstruct GDimension {\npublic:\n    /**\n     * Creates a <code>GDimension</code> object with the specified\n     * <code>width</code> and <code>height</code> coordinates.\n     */\n    GDimension(double width, double height);\n\n    /*\n     * Constructs a default dimension 0, 0.\n     */\n    GDimension();\n\n\n    /**\n     * Converts the <code>GDimension</code> to a string in the form\n     * <code>\"(</code><i>width</i><code>,</code>&nbsp;<i>height</i><code>)\"</code>.\n     */\n    std::string toString() const;\n\n    /* width and height - may be directly accessed or modified */\n    double width;\n    double height;\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in this class is logically part  */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\nprivate:\n    /* Instance variables */\n\n    /* Friend declarations */\n    friend std::ostream& operator <<(std::ostream& os, const GDimension& dim);\n    friend bool operator ==(const GDimension& d1, const GDimension& d2);\n    friend bool operator !=(const GDimension& d1, const GDimension& d2);\n    friend bool operator <(const GDimension& d1, const GDimension& d2);\n    friend bool operator <=(const GDimension& d1, const GDimension& d2);\n    friend bool operator >(const GDimension& d1, const GDimension& d2);\n    friend bool operator >=(const GDimension& d1, const GDimension& d2);\n    friend GDimension operator *(const GDimension& d, double scale);\n    friend int hashCode(const GDimension& dim);\n};\n\n/**\n * Writes the GDimension to the given output stream.\n */\nstd::ostream& operator <<(std::ostream& os, const GDimension& dim);\n\n/**\n * Compares two GDimension objects for equality.\n */\nbool operator ==(const GDimension& d1, const GDimension& d2);\n\n/**\n * Compares two GDimension objects for inequality.\n */\nbool operator !=(const GDimension& d1, const GDimension& d2);\n\n/**\n * Relational operators that compare two GDimension objects by width and\n * then by height.\n */\nbool operator <(const GDimension& d1, const GDimension& d2);\n\n/**\n * Relational operators that compare two GDimension objects by width and\n * then by height.\n */\nbool operator <=(const GDimension& d1, const GDimension& d2);\n\n/**\n * Relational operators that compare two GDimension objects by width and\n * then by height.\n */\nbool operator >(const GDimension& d1, const GDimension& d2);\n\n/**\n * Relational operators that compare two GDimension objects by width and\n * then by height.\n */\nbool operator >=(const GDimension& d1, const GDimension& d2);\n\n/**\n * Multiplies the width and height of the given GDimension object by the given\n * scale factor and returns the scaled dimension object.\n */\nGDimension operator *(const GDimension& d, double scale);\n\n/**\n * Hashing function for GDimension objects.\n */\nint hashCode(const GDimension& dim);\n\n/**\n * The supported kinds of horizontal alignment of a widget or\n * onscreen object.\n */\nenum HorizontalAlignment {\n    ALIGN_CENTER,\n    ALIGN_LEFT,\n    ALIGN_RIGHT,\n    ALIGN_HORIZONTAL_STRETCH\n};\n\n/**\n * The supported kinds of vertical alignment of a widget or\n * onscreen object.\n */\nenum VerticalAlignment {\n    ALIGN_MIDDLE,\n    ALIGN_TOP,\n    ALIGN_BOTTOM,\n    ALIGN_VERTICAL_STRETCH\n};\n\n/**\n * Constants for alignments and icon positions.\n * Retained for backward compatibility; new code should not use this enum.\n *\n */\nenum SwingConstants {\n    SWING_CENTER,\n    SWING_TOP,\n    SWING_LEFT,\n    SWING_BOTTOM,\n    SWING_RIGHT\n};\n// Note: Must keep in sync with GInteractor::TextPosition.\n\n/**\n * Converts an alignment value into a string such as \"Center\" or \"Left\".\n */\nstd::string toString(HorizontalAlignment alignment);\n\n/**\n * Converts an alignment value into a string such as \"Middle\" or \"Top\".\n */\nstd::string toString(VerticalAlignment alignment);\n\n/**\n * Converts a string such as \"Center\" or \"Left\" into an alignment value.\n */\nHorizontalAlignment toHorizontalAlignment(const std::string& alignmentStr);\n\n/**\n * Converts our alignment values into Qt alignment constants.\n */\nQt::Alignment toQtAlignment(HorizontalAlignment alignment);\n\n/**\n * Converts our alignment values into Qt alignment constants.\n */\nQt::Alignment toQtAlignment(VerticalAlignment alignment);\n\n/**\n * Converts a string such as \"Middle\" or \"Top\" into an alignment value.\n */\nVerticalAlignment toVerticalAlignment(const std::string& alignmentStr);\n\n/**\n * This struct contains real-valued x and y fields.\n * It is used to represent a location on the graphics plane.\n */\nstruct GPoint {\npublic:\n    /**\n     * Creates a <code>GPoint</code> object with the specified <code>x</code>\n     * and <code>y</code> coordinates.\n     */\n    GPoint(double x, double y);\n\n    /*\n     * Constructs a default GPoint 0, 0.\n     */\n    GPoint();\n\n    /**\n     * Converts the <code>GPoint</code> to a string in the form\n     * <code>\"(</code><i>x</i><code>,</code>&nbsp;<i>y</i><code>)\"</code>.\n     */\n    std::string toString() const;\n\n    /* x and y coordinates - may be directly accessed or modified */\n    double x;\n    double y;\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in this class is logically part  */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\nprivate:\n\n    /* Friend declarations */\n    friend std::ostream& operator <<(std::ostream& out, const GPoint& p);\n    friend bool operator ==(const GPoint& p1, const GPoint& p2);\n    friend bool operator !=(const GPoint& p1, const GPoint& p2);\n    friend bool operator <(const GPoint& p1, const GPoint& p2);\n    friend bool operator <=(const GPoint& p1, const GPoint& p2);\n    friend bool operator >(const GPoint& p1, const GPoint& p2);\n    friend bool operator >=(const GPoint& p1, const GPoint& p2);\n    friend GPoint operator *(const GPoint& p, double scale);\n    friend int hashCode(const GPoint& pt);\n};\n\n/**\n * Writes the given point to the given output stream.\n */\nstd::ostream& operator <<(std::ostream& os, const GPoint& pt);\n\n/**\n * Compares two GPoint objects for equality.\n */\nbool operator ==(const GPoint& p1, const GPoint& p2);\n\n/**\n * Compares two GPoint objects for inequality.\n */\nbool operator !=(const GPoint& p1, const GPoint& p2);\n\n/**\n * Relational operators that compare points by x-coordinate and then\n * by y-coordinate.\n */\nbool operator <(const GPoint& p1, const GPoint& p2);\n\n/**\n * Relational operators that compare points by x-coordinate and then\n * by y-coordinate.\n */\nbool operator <=(const GPoint& p1, const GPoint& p2);\n\n/**\n * Relational operators that compare points by x-coordinate and then\n * by y-coordinate.\n */\nbool operator >(const GPoint& p1, const GPoint& p2);\n\n/**\n * Relational operators that compare points by x-coordinate and then\n * by y-coordinate.\n */\nbool operator >=(const GPoint& p1, const GPoint& p2);\n\n/**\n * Multiplies the x and y coordinates of the given point by the given scale\n * factor and returns the scaled point.\n */\nGPoint operator *(const GPoint& p, double scale);\n\n/**\n * Hashing function for GPoint objects.\n */\nint hashCode(const GPoint& pt);\n\n/**\n * This struct contains real-valued x, y, width, and height fields.\n * It is used to represent the bounding box of a graphical object.\n */\nstruct GRectangle {\npublic:\n    /**\n     * Creates a <code>GRectangle</code> object with the specified position\n     * and size.\n     */\n    GRectangle(double x, double y, double width, double height);\n\n    /**\n     * Creates a <code>GRectangle</code> object with the specified position\n     * and size.\n     */\n    GRectangle(double x, double y, const GDimension& size);\n\n    /**\n     * Creates a <code>GRectangle</code> object with the specified position\n     * and size.\n     */\n    GRectangle(const GPoint& p, double width, double height);\n\n    /**\n     * Creates a <code>GRectangle</code> object with the specified position\n     * and size.\n     */\n    GRectangle(const GPoint& p, const GDimension& size);\n\n    /**\n     * Creates a <code>GRectangle</code> object with zero position and size.\n     */\n    GRectangle();\n\n    /**\n     * Returns <code>true</code> if the rectangle contains the given point.\n     */\n    bool contains(double x, double y) const;\n\n    /**\n     * Returns <code>true</code> if the rectangle contains the given point.\n     */\n    bool contains(const GPoint& pt) const;\n\n    /**\n     * Returns <code>true</code> if this rectangle contains the given rectangle\n     * entirely.\n     */\n    bool contains(const GRectangle& rect) const;\n\n    /**\n     * Returns a new rectangle with its boundaries shifted outward by the given\n     * amount on all 4 sides.\n     * e.g. a 10x10 rectangle at position (55, 42) enlarged by 1 will become\n     *      a 12x12 rectangle at position (54, 41).\n     */\n    GRectangle enlargedBy(double amount);\n\n    /**\n     * Returns true if this rectangle and the given other rectangle overlap.\n     */\n    bool intersects(const GRectangle& other) const;\n\n    /**\n     * Returns <code>true</code> if the rectangle is empty, meaning that it\n     * has a width and height that are both 0 or negative.\n     */\n    bool isEmpty() const;\n\n    /**\n     * Converts the <code>GRectangle</code> to a string in the form\n     * <code>\"(</code><i>x</i><code>,</code>&nbsp;<i>y</i><code>,</code>\n     * <i>width</i><code>,</code>&nbsp;<i>height</i><code>)\"</code>.\n     */\n    std::string toString() const;\n\n    /* coordinates and dimension - may be directly accessed or modified */\n    double x;        /* The x-coordinate of the rectangle */\n    double y;        /* The y-coordinate of the rectangle */\n    double width;    /* The width of the rectangle        */\n    double height;   /* The height of the rectangle       */\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in this class is logically part  */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\nprivate:\n    /* Instance variables */\n\n\n    /* Friend declarations */\n    friend std::ostream& operator <<(std::ostream& os, const GRectangle& rect);\n    friend bool operator ==(const GRectangle& r1, const GRectangle& r2);\n    friend bool operator !=(const GRectangle& r1, const GRectangle& r2);\n    friend bool operator <(const GRectangle& r1, const GRectangle& r2);\n    friend bool operator <=(const GRectangle& r1, const GRectangle& r2);\n    friend bool operator >(const GRectangle& r1, const GRectangle& r2);\n    friend bool operator >=(const GRectangle& r1, const GRectangle& r2);\n    friend int hashCode(const GRectangle& r);\n};\n\n/**\n * Writes the given rectangle to the given output stream.\n */\nstd::ostream& operator <<(std::ostream& os, const GRectangle& rect);\n\n/**\n * Compares two rectangles for equality.\n */\nbool operator ==(const GRectangle& r1, const GRectangle& r2);\n\n/**\n * Compares two rectangles for inequality.\n */\nbool operator !=(const GRectangle& r1, const GRectangle& r2);\n\n/**\n * Relational operators that compare rectangles by x, y, then width, then height.\n */\nbool operator <(const GRectangle& r1, const GRectangle& r2);\n\n/**\n * Relational operators that compare rectangles by x, y, then width, then height.\n */\nbool operator <=(const GRectangle& r1, const GRectangle& r2);\n\n/**\n * Relational operators that compare rectangles by x, y, then width, then height.\n */\nbool operator >(const GRectangle& r1, const GRectangle& r2);\n\n/**\n * Relational operators that compare rectangles by x, y, then width, then height.\n */\nbool operator >=(const GRectangle& r1, const GRectangle& r2);\n\n/**\n * Hashing function for GRectangle objects.\n */\nint hashCode(const GRectangle& r);\n\n#endif // _gtypes_h\n"
  },
  {
    "path": "Library/graphics/gwindow.cpp",
    "content": "/*\n * File: gwindow.cpp\n * -----------------\n *\n * @author Marty Stepp\n * @version 2019/05/05\n * - added static method for isDarkMode checking support\n * - added static methods to ask for system default widget bg/fg color\n * @version 2019/04/27\n * - fixed more bugs with getting/setting window size and location\n * @version 2019/04/25\n * - fixed bugs with getting window geometry and requesting focus\n * @version 2019/04/12\n * - moved pause() headless mode implementation (empty) to console.cpp\n * @version 2019/04/09\n * - added toolbar support\n * @version 2019/02/02\n * - destructor now stops event processing\n * @version 2018/10/20\n * - added high-density screen features\n * @version 2018/10/11\n * - bug fix for compareToImage function\n * @version 2018/09/23\n * - bug fixes for Windows/MinGW compatibility\n * @version 2018/09/19\n * - bug fix for clear() method\n * @version 2018/09/13\n * - updated cast syntax to remove warnings in new compiler versions\n * - updated window parent semantics\n * @version 2018/09/05\n * - refactored to use a border layout GContainer \"content pane\" for storing all interactors\n * @version 2018/08/23\n * - renamed to gwindow.h to replace Java version\n * @version 2018/07/03\n * - thread safety code\n * @version 2018/07/01\n * - 2D graphics/painting functions\n * @version 2018/06/25\n * - initial version\n */\n\n#include \"gwindow.h\"\n#include <QIcon>\n#include <QMenu>\n#include <QMenuBar>\n#include <QScreen>\n#include <QSizePolicy>\n#include <QStatusBar>\n#include <QTimer>\n#include <QToolBar>\n#include \"filelib.h\"\n#include \"gcolor.h\"\n#include \"gdiffimage.h\"\n#include \"glabel.h\"\n#include \"gtextfield.h\"\n#include \"gthread.h\"\n#include \"qtgui.h\"\n#include \"require.h\"\n#include \"strlib.h\"\n\n_Internal_QMainWindow* GWindow::_lastWindow = nullptr;\n/*static*/ const int GWindow::DEFAULT_WIDTH = 500;\n/*static*/ const int GWindow::DEFAULT_HEIGHT = 300;\n/*static*/ const int GWindow::HIGH_DPI_SCREEN_THRESHOLD = 200;\n/*static*/ const int GWindow::STANDARD_SCREEN_DPI = 96;\n/*static*/ const std::string GWindow::DEFAULT_ICON_FILENAME = \"splicon-large.png\";\n\nGWindow::GWindow(bool visible)\n        : _iqmainwindow(nullptr),\n          _contentPane(nullptr),\n          _canvas(nullptr),\n          _resizable(true),\n          _closeOperation(GWindow::CLOSE_DISPOSE),\n          _toolbar(nullptr) {\n    _init(DEFAULT_WIDTH, DEFAULT_HEIGHT, visible);\n}\n\nGWindow::GWindow(double width, double height, bool visible)\n        : _iqmainwindow(nullptr),\n          _contentPane(nullptr),\n          _canvas(nullptr),\n          _resizable(true),\n          _closeOperation(GWindow::CLOSE_DISPOSE),\n          _toolbar(nullptr) {\n    _init(width, height, visible);\n}\n\nGWindow::GWindow(double x, double y, double width, double height, bool visible)\n        : _iqmainwindow(nullptr),\n          _contentPane(nullptr),\n          _canvas(nullptr),\n          _resizable(true),\n          _closeOperation(GWindow::CLOSE_DISPOSE),\n          _toolbar(nullptr) {\n    _init(width, height, visible);\n    setLocation(x, y);\n}\n\nvoid GWindow::_init(double width, double height, bool visible) {\n    require::nonNegative2D(width, height, \"GWindow::constructor\", \"width\", \"height\");\n    if (static_cast<int>(width) == 0) {\n        width = DEFAULT_WIDTH;\n    }\n    if (static_cast<int>(height) == 0) {\n        height = DEFAULT_HEIGHT;\n    }\n\n    GThread::runOnQtGuiThread([this]() {\n        _iqmainwindow = new _Internal_QMainWindow(this);\n        _iqmainwindow->setAttribute(Qt::WA_QuitOnClose, false);\n        _lastWindow = _iqmainwindow;\n        _contentPane = new GContainer(GContainer::LAYOUT_BORDER);\n        _iqmainwindow->setCentralWidget(_contentPane->getWidget());\n    });\n\n    ensureForwardTarget();\n    setCanvasSize(width, height);\n    setWindowIcon(DEFAULT_ICON_FILENAME);\n    setVisible(visible);\n}\n\nGWindow::~GWindow() {\n    if (_lastWindow == _iqmainwindow) {\n        _lastWindow = nullptr;\n    }\n    // TODO: delete _iqmainwindow;\n    if (_iqmainwindow) {\n        _iqmainwindow->_gwindow = nullptr;\n        _iqmainwindow = nullptr;\n    }\n}\n\nvoid GWindow::add(GInteractor* interactor) {\n    require::nonNull(interactor, \"GWindow::add\");\n    addToRegion(interactor, REGION_CENTER);\n}\n\nvoid GWindow::add(GInteractor* interactor, double x, double y) {\n    require::nonNull(interactor, \"GWindow::add\");\n    interactor->setLocation(x, y);\n    addToRegion(interactor, REGION_CENTER);\n}\n\nvoid GWindow::add(GInteractor& interactor) {\n    addToRegion(&interactor, REGION_CENTER);\n}\n\nvoid GWindow::add(GInteractor& interactor, double x, double y) {\n    interactor.setLocation(x, y);\n    addToRegion(&interactor, REGION_CENTER);\n}\n\nvoid GWindow::add(GObject* obj) {\n    require::nonNull(obj, \"GWindow::add\");\n    ensureForwardTarget();\n    _canvas->add(obj);\n}\n\nvoid GWindow::add(GObject* obj, double x, double y) {\n    require::nonNull(obj, \"GWindow::add\");\n    ensureForwardTarget();\n    _canvas->add(obj, x, y);\n}\n\nvoid GWindow::add(GObject& obj) {\n    ensureForwardTarget();\n    _canvas->add(obj);\n}\n\nvoid GWindow::add(GObject& obj, double x, double y) {\n    ensureForwardTarget();\n    _canvas->add(obj, x, y);\n}\n\nQMenu* GWindow::addMenu(const std::string& menu) {\n    std::string menuKey = toLowerCase(stringReplace(menu, \"&\", \"\"));\n    if (_menuMap.containsKey(menuKey)) {\n        // duplicate; do not create again\n        return _menuMap[menuKey];\n    }\n\n    QMenu* qmenu = nullptr;\n    GThread::runOnQtGuiThread([this, menu, &qmenu]() {\n        qmenu = _iqmainwindow->menuBar()->addMenu(QString::fromStdString(menu));\n        std::string menuKey = toLowerCase(stringReplace(stringReplace(menu, \"/\", \"\"), \"&\", \"\"));\n        _menuMap[menuKey] = qmenu;\n    });\n    return qmenu;\n}\n\nQAction* GWindow::addMenuItem(const std::string& menu, const std::string& item, const std::string& icon) {\n    GEventListenerVoid func = [this, menu, item]() {\n        this->_iqmainwindow->handleMenuAction(menu, item);\n    };\n    return addMenuItem(menu, item, icon, func);\n}\n\nQAction* GWindow::addMenuItem(const std::string& menu, const std::string& item, const std::string& icon, GEventListenerVoid func) {\n    std::string menuKey = toLowerCase(stringReplace(menu, \"&\", \"\"));\n    if (!_menuMap.containsKey(menuKey)) {\n        error(\"GWindow::addMenuItem: menu \\\"\" + menu + \"\\\" does not exist\");\n        return nullptr;\n    }\n\n    std::string itemKey = toLowerCase(stringReplace(item, \"&\", \"\"));\n    std::string menuItemKey = menuKey + \"/\" + itemKey;\n    if (_menuActionMap.containsKey(menuItemKey)) {\n        // duplicate; do not create again\n        return _menuActionMap[menuItemKey];\n    }\n\n    QAction* action = nullptr;\n    GThread::runOnQtGuiThread([this, menu, item, icon, func, menuKey, menuItemKey, &action]() {\n        QMenu* qmenu = _menuMap[menuKey];\n        action = qmenu->addAction(QString::fromStdString(item));\n        if (!icon.empty() && fileExists(icon)) {\n            QIcon qicon(QString::fromStdString(icon));\n            action->setIcon(qicon);\n        }\n\n        // when menu item is clicked, call the function the user gave us\n        _iqmainwindow->connect(action, &QAction::triggered, _iqmainwindow, [func]() {\n            func();\n        });\n        _menuActionMap[menuItemKey] = action;\n    });\n    return action;\n}\n\nQAction* GWindow::addMenuItem(const std::string& menu, const std::string& item, const QIcon& icon, GEventListenerVoid func) {\n    std::string menuKey = toLowerCase(stringReplace(menu, \"&\", \"\"));\n    if (!_menuMap.containsKey(menuKey)) {\n        error(\"GWindow::addMenuItem: menu \\\"\" + menu + \"\\\" does not exist\");\n        return nullptr;\n    }\n\n    std::string itemKey = toLowerCase(stringReplace(item, \"&\", \"\"));\n    std::string menuItemKey = menuKey + \"/\" + itemKey;\n    if (_menuActionMap.containsKey(menuItemKey)) {\n        // duplicate; do not create again\n        return _menuActionMap[menuItemKey];\n    }\n\n    QAction* action = nullptr;\n    GThread::runOnQtGuiThread([this, menu, item, &icon, func, menuKey, menuItemKey, &action]() {\n        QMenu* qmenu = _menuMap[menuKey];\n        action = qmenu->addAction(QString::fromStdString(item));\n        action->setIcon(icon);\n\n        // when menu item is clicked, call the function the user gave us\n        _iqmainwindow->connect(action, &QAction::triggered, _iqmainwindow, [func]() {\n            func();\n        });\n        _menuActionMap[menuItemKey] = action;\n    });\n    return action;\n}\n\nQAction* GWindow::addMenuItem(const std::string& menu, const std::string& item, const QPixmap& icon, GEventListenerVoid func) {\n    std::string menuKey = toLowerCase(stringReplace(menu, \"&\", \"\"));\n    if (!_menuMap.containsKey(menuKey)) {\n        error(\"GWindow::addMenuItem: menu \\\"\" + menu + \"\\\" does not exist\");\n        return nullptr;\n    }\n\n    std::string itemKey = toLowerCase(stringReplace(item, \"&\", \"\"));\n    std::string menuItemKey = menuKey + \"/\" + itemKey;\n    if (_menuActionMap.containsKey(menuItemKey)) {\n        // duplicate; do not create again\n        return _menuActionMap[menuItemKey];\n    }\n\n    QAction* action = nullptr;\n    GThread::runOnQtGuiThread([this, menu, item, &icon, func, menuKey, menuItemKey, &action]() {\n        QMenu* qmenu = _menuMap[menuKey];\n        action = qmenu->addAction(QString::fromStdString(item));\n        action->setIcon(icon);\n\n        // when menu item is clicked, call the function the user gave us\n        _iqmainwindow->connect(action, &QAction::triggered, _iqmainwindow, [func]() {\n            func();\n        });\n        _menuActionMap[menuItemKey] = action;\n    });\n    return action;\n}\n\nQAction* GWindow::addMenuItemCheckBox(const std::string& menu,\n                                      const std::string& item,\n                                      bool checked,\n                                      const std::string& icon) {\n    GEventListenerVoid func = [this, menu, item]() {\n        this->_iqmainwindow->handleMenuAction(menu, item);\n    };\n    return addMenuItemCheckBox(menu, item, checked, icon, func);\n}\n\nQAction* GWindow::addMenuItemCheckBox(const std::string& menu,\n                                      const std::string& item,\n                                      bool checked,\n                                      const std::string& icon,\n                                      GEventListenerVoid func) {\n    QAction* action = nullptr;\n    std::string menuKey = toLowerCase(stringReplace(menu, \"&\", \"\"));\n    if (!_menuMap.containsKey(menuKey)) {\n        error(\"GWindow::addMenuItem: menu \\\"\" + menu + \"\\\" does not exist\");\n        return nullptr;\n    }\n\n    GThread::runOnQtGuiThread([this, menu, item, icon, checked, func, menuKey, &action]() {\n        QMenu* qmenu = _menuMap[menuKey];\n        action = qmenu->addAction(QString::fromStdString(item));\n        action->setCheckable(true);\n        action->setChecked(checked);\n        if (!icon.empty() && fileExists(icon)) {\n            QIcon qicon(QString::fromStdString(icon));\n            action->setIcon(qicon);\n        }\n\n        // when menu item is clicked, call the function the user gave us\n        _iqmainwindow->connect(action, &QAction::triggered, _iqmainwindow, [func]() {\n            func();\n        });\n\n        std::string itemKey = toLowerCase(stringReplace(item, \"&\", \"\"));\n        _menuActionMap[menuKey + \"/\" + itemKey] = action;\n    });\n    return action;\n}\n\n\nQAction* GWindow::addMenuSeparator(const std::string& menu) {\n    std::string menuKey = toLowerCase(stringReplace(menu, \"&\", \"\"));\n    if (!_menuMap.containsKey(menuKey)) {\n        error(\"GWindow::addMenuItem: menu \\\"\" + menu + \"\\\" does not exist\");\n        return nullptr;\n    }\n\n    QAction* separator = nullptr;\n    GThread::runOnQtGuiThread([this, menuKey, &separator]() {\n        QMenu* qmenu = _menuMap[menuKey];\n        separator = qmenu->addSeparator();\n    });\n    return separator;\n}\n\nQMenu* GWindow::addSubMenu(const std::string& menu, const std::string& submenu) {\n    std::string menuKey = toLowerCase(stringReplace(menu, \"&\", \"\"));\n    if (!_menuMap.containsKey(menuKey)) {\n        error(\"GWindow::addMenuItem: menu \\\"\" + menu + \"\\\" does not exist\");\n        return nullptr;\n    }\n\n    QMenu* qsubmenu = nullptr;\n    GThread::runOnQtGuiThread([this, menu, menuKey, submenu, &qsubmenu]() {\n        QMenu* qmenu = _menuMap[menuKey];\n        qsubmenu = qmenu->addMenu(QString::fromStdString(submenu));\n        std::string subMenuKey = menuKey + \"/\"\n                + toLowerCase(stringReplace(submenu, \"&\", \"\"));\n        _menuMap[subMenuKey] = qsubmenu;\n    });\n    return qsubmenu;\n}\n\nvoid GWindow::addToRegion(GInteractor* interactor, Region region) {\n    require::nonNull(interactor, \"GWindow::addToRegion\");\n    if (region == REGION_CENTER) {\n        // labels in \"GText mode\" are added as GText objects to canvas\n        if (interactor->getType() == \"GLabel\") {\n            GLabel* label = static_cast<GLabel*>(interactor);\n            if (label->hasGText()) {\n                add(label->getGText());\n                return;\n            }\n        }\n    }\n    _contentPane->addToRegion(interactor, static_cast<GContainer::Region>(region));\n}\n\nvoid GWindow::addToRegion(GInteractor* interactor, const std::string& region) {\n    addToRegion(interactor, stringToRegion(region));\n}\n\nvoid GWindow::addToRegion(GInteractor& interactor, Region region) {\n    addToRegion(&interactor, region);\n}\n\nvoid GWindow::addToRegion(GInteractor& interactor, const std::string& region) {\n    addToRegion(&interactor, region);\n}\n\nvoid GWindow::addToolbar(const std::string& title) {\n    if (_toolbar) {\n        return;\n    }\n    GThread::runOnQtGuiThread([this, title]() {\n        _toolbar = _iqmainwindow->addToolBar(QString::fromStdString(title));\n        _toolbar->setFloatable(false);\n        _toolbar->setMovable(false);\n        _toolbar->setBaseSize(0, 0);\n    });\n}\n\nQAction* GWindow::addToolbarItem(const std::string& item,\n                                 const std::string& icon) {\n    GEventListenerVoid func = [this, item]() {\n        this->_iqmainwindow->handleMenuAction(/* menu */ \"toolbar\", item);\n    };\n    return addToolbarItem(item, icon, func);\n}\n\nQAction* GWindow::addToolbarItem(const std::string& item,\n                                 const std::string& icon,\n                                 GEventListenerVoid func) {\n    if (!_toolbar) {\n        addToolbar();\n    }\n\n    std::string itemKey = toLowerCase(stringReplace(item, \"&\", \"\"));\n    std::string menuItemKey = \"toolbar/\" + itemKey;\n    if (_menuActionMap.containsKey(menuItemKey)) {\n        // duplicate; do not create again\n        return _menuActionMap[menuItemKey];\n    }\n\n    QAction* action = nullptr;\n    GThread::runOnQtGuiThread([this, item, icon, func, menuItemKey, &action]() {\n        if (icon.empty()) {\n            action = _toolbar->addAction(QString::fromStdString(item));\n        } else {\n            // toolbar item with icon doesn't show text\n            QIcon qicon(QString::fromStdString(icon));\n            action = _toolbar->addAction(qicon, QString::fromStdString(\"\"));\n            action->setToolTip(QString::fromStdString(item));\n        }\n\n        // when menu item is clicked, call the function the user gave us\n        _iqmainwindow->connect(action, &QAction::triggered, _iqmainwindow, [func]() {\n            func();\n        });\n        _menuActionMap[menuItemKey] = action;\n\n    });\n    return action;\n}\n\nQAction* GWindow::addToolbarItem(const std::string& item,\n                                 const QIcon& icon,\n                                 GEventListenerVoid func) {\n    if (!_toolbar) {\n        addToolbar();\n    }\n\n    std::string itemKey = toLowerCase(stringReplace(item, \"&\", \"\"));\n    std::string menuItemKey = \"toolbar/\" + itemKey;\n    if (_menuActionMap.containsKey(menuItemKey)) {\n        // duplicate; do not create again\n        return _menuActionMap[menuItemKey];\n    }\n\n    QAction* action = nullptr;\n    GThread::runOnQtGuiThread([this, item, &icon, func, menuItemKey, &action]() {\n        // toolbar item with icon doesn't show text\n        action = _toolbar->addAction(icon, QString::fromStdString(\"\"));\n        action->setToolTip(QString::fromStdString(item));\n\n        // when menu item is clicked, call the function the user gave us\n        _iqmainwindow->connect(action, &QAction::triggered, _iqmainwindow, [func]() {\n            func();\n        });\n        _menuActionMap[menuItemKey] = action;\n\n    });\n    return action;\n}\n\nQAction* GWindow::addToolbarItem(const std::string& item,\n                                 const QPixmap& icon,\n                                 GEventListenerVoid func) {\n    if (!_toolbar) {\n        addToolbar();\n    }\n\n    std::string itemKey = toLowerCase(stringReplace(item, \"&\", \"\"));\n    std::string menuItemKey = \"toolbar/\" + itemKey;\n    if (_menuActionMap.containsKey(menuItemKey)) {\n        // duplicate; do not create again\n        return _menuActionMap[menuItemKey];\n    }\n\n    QAction* action = nullptr;\n    GThread::runOnQtGuiThread([this, item, &icon, func, menuItemKey, &action]() {\n        // toolbar item with icon doesn't show text\n        action = _toolbar->addAction(icon, QString::fromStdString(\"\"));\n        action->setToolTip(QString::fromStdString(item));\n\n        // when menu item is clicked, call the function the user gave us\n        _iqmainwindow->connect(action, &QAction::triggered, _iqmainwindow, [func]() {\n            func();\n        });\n        _menuActionMap[menuItemKey] = action;\n\n    });\n    return action;\n}\n\nQAction* GWindow::addToolbarSeparator() {\n    if (!_toolbar) {\n        addToolbar();\n    }\n\n    QAction* action = nullptr;\n    GThread::runOnQtGuiThread([this, &action]() {\n        action = _toolbar->addSeparator();\n    });\n    return action;\n}\n\nvoid GWindow::clear() {\n    // TODO: reimplement to clear out widgets rather than just canvas\n    clearCanvas();\n\n//    bool hasCanvas = _canvas && _contentPane->regionContains(_canvas, GContainer::REGION_CENTER);\n//    _contentPane->clearRegion(GContainer::REGION_NORTH);\n//    _contentPane->clearRegion(GContainer::REGION_SOUTH);\n//    _contentPane->clearRegion(GContainer::REGION_WEST);\n//    _contentPane->clearRegion(GContainer::REGION_EAST);\n//    if (hasCanvas) {\n//        clearCanvas();\n//    } else {\n//        // don't remove canvas, but do remove any other widgets in center\n//        _contentPane->clearRegion(GContainer::REGION_CENTER);\n//        ensureForwardTarget();\n//    }\n}\n\nvoid GWindow::clearCanvas() {\n    if (_canvas) {\n        _canvas->clear();\n    }\n}\n\nvoid GWindow::clearCanvasObjects() {\n    if (_canvas) {\n        _canvas->clearObjects();   // runs on Qt GUI thread\n    }\n}\n\nvoid GWindow::clearCanvasPixels() {\n    if (_canvas) {\n        _canvas->clearPixels();   // runs on Qt GUI thread\n    }\n}\n\nvoid GWindow::clearRegion(Region region) {\n    _contentPane->clearRegion(static_cast<GContainer::Region>(region));\n}\n\nvoid GWindow::clearRegion(const std::string& region) {\n    clearRegion(stringToRegion(region));\n}\n\nvoid GWindow::clearToolbarItems() {\n    if (!_toolbar) {\n        return;\n    }\n    GThread::runOnQtGuiThread([this]() {\n        _toolbar->clear();\n    });\n}\n\nvoid GWindow::center() {\n    GDimension screenSize = getScreenSize();\n    GDimension windowSize = getSize();\n    setLocation(screenSize.width  / 2 - windowSize.width  / 2,\n                screenSize.height / 2 - windowSize.height / 2);\n}\n\n/*static*/ std::string GWindow::chooseLightDarkModeColor(\n        const std::string& lightColor, const std::string& darkColor) {\n    return isDarkMode() ? darkColor : lightColor;\n}\n\n/*static*/ int GWindow::chooseLightDarkModeColorInt(int lightColor, int darkColor) {\n    return isDarkMode() ? darkColor : lightColor;\n}\n\nvoid GWindow::close() {\n    GThread::runOnQtGuiThread([this]() {\n        _iqmainwindow->close();\n    });\n}\n\nvoid GWindow::compareToImage(const std::string& filename, bool /*ignoreWindowSize*/) const {\n    ensureForwardTargetConstHack();\n    GCanvas* fileCanvas = new GCanvas(filename);\n    GDiffImage::showDialog(\"expected output\", fileCanvas,\n                           \"your output\", _canvas);\n\n    // TODO\n    // delete fileCanvas;\n}\n\nvoid GWindow::ensureForwardTarget() {\n    if (!_canvas) {\n        // tell canvas to take any unclaimed space in the window\n        GThread::runOnQtGuiThread([this]() {\n            _canvas = new GCanvas(_iqmainwindow);\n            _canvas->setBackground(GColor::WHITE);\n            setDrawingForwardTarget(_canvas);\n            addToRegion(_canvas, REGION_CENTER);\n        });\n    }\n//    else if (!_canvas->isVisible()) {\n//        // put canvas back in center region\n//        GThread::runOnQtGuiThread([this]() {\n//            QLayout* centerLayout = layoutForRegion(REGION_CENTER);\n//            if (!GLayout::contains(centerLayout, _canvas->getWidget())) {\n//                GLayout::clearLayout(centerLayout);\n//                addToRegion(_canvas, \"Center\");\n//                _canvas->setVisible(true);\n//            }\n//        });\n//    }\n}\n\nbool GWindow::eventsEnabled() const {\n    return getWidget() != nullptr && isVisible();\n}\n\nGCanvas* GWindow::getCanvas() const {\n    ensureForwardTargetConstHack();\n    return _canvas;\n}\n\ndouble GWindow::getCanvasHeight() const {\n    ensureForwardTargetConstHack();\n    return _canvas->getHeight();\n}\n\nGDimension GWindow::getCanvasSize() const {\n    ensureForwardTargetConstHack();\n    return GDimension(_canvas->getWidth(), _canvas->getHeight());\n}\n\ndouble GWindow::getCanvasWidth() const {\n    ensureForwardTargetConstHack();\n    return _canvas->getWidth();\n}\n\nGWindow::CloseOperation GWindow::getCloseOperation() const {\n    return _closeOperation;\n}\n\n/*static*/ std::string GWindow::getDefaultInteractorBackgroundColor() {\n    return GColor::convertRGBToColor(getDefaultInteractorBackgroundColorInt());\n}\n\n/*static*/ int GWindow::getDefaultInteractorBackgroundColorInt() {\n    static bool everCheckedBefore = false;\n    static int previousBg = 0;\n    if (!everCheckedBefore) {\n        GTextField* tempTextField = new GTextField();\n        previousBg = tempTextField->getBackgroundInt();\n        everCheckedBefore = true;\n    }\n    return previousBg;\n}\n\n/*static*/ std::string GWindow::getDefaultInteractorTextColor() {\n    return GColor::convertRGBToColor(getDefaultInteractorTextColorInt());\n}\n\n/*static*/ int GWindow::getDefaultInteractorTextColorInt() {\n    static bool everCheckedBefore = false;\n    static int previousFg = 0;\n    if (!everCheckedBefore) {\n        GTextField* tempTextField = new GTextField();\n        previousFg = tempTextField->getForegroundInt();\n        everCheckedBefore = true;\n    }\n    return previousFg;\n}\n\nGObject* GWindow::getGObject(int index) const {\n    if (_canvas) {\n        return _canvas->getElement(index);\n    } else {\n        return nullptr;\n    }\n}\n\nGObject* GWindow::getGObjectAt(double x, double y) const {\n    if (_canvas) {\n        return _canvas->getElementAt(x, y);\n    } else {\n        return nullptr;\n    }\n}\n\nint GWindow::getGObjectCount() const {\n    if (_canvas) {\n        return _canvas->getElementCount();\n    } else {\n        return 0;\n    }\n}\n\n/* static */ QMainWindow* GWindow::getLastWindow() {\n    return _lastWindow;\n}\n\ndouble GWindow::getHeight() const {\n    return _iqmainwindow->height();\n}\n\nGPoint GWindow::getLocation() const {\n    return GPoint(_iqmainwindow->x(), _iqmainwindow->y());\n}\n\nGDimension GWindow::getPreferredSize() const {\n    return _contentPane->getPreferredSize();\n}\n\ndouble GWindow::getRegionHeight(Region region) const {\n    return _contentPane->getRegionHeight(static_cast<GContainer::Region>(region));\n}\n\ndouble GWindow::getRegionHeight(const std::string& region) const {\n    return _contentPane->getRegionHeight(region);\n}\n\nGDimension GWindow::getRegionSize(Region region) const {\n    return _contentPane->getRegionSize(static_cast<GContainer::Region>(region));\n}\n\nGDimension GWindow::getRegionSize(const std::string& region) const {\n    return _contentPane->getRegionSize(region);\n}\n\ndouble GWindow::getRegionWidth(Region region) const {\n    return _contentPane->getRegionWidth(static_cast<GContainer::Region>(region));\n}\n\ndouble GWindow::getRegionWidth(const std::string& region) const {\n    return _contentPane->getRegionWidth(region);\n}\n\n/*static*/ int GWindow::getScreenDpi() {\n    return QGuiApplication::primaryScreen()->logicalDotsPerInchX();\n}\n\n/*static*/ double GWindow::getScreenDpiScaleRatio() {\n    double ratio = (double) getScreenDpi() / STANDARD_SCREEN_DPI;\n    return (ratio >= 1.0) ? ratio : 1.0;\n}\n\n/*static*/ double GWindow::getScreenHeight() {\n    return getScreenSize().height;\n}\n\n/*static*/ GDimension GWindow::getScreenSize() {\n    QRect rec;\n    GThread::runOnQtGuiThread([&rec]() {\n        rec = QGuiApplication::primaryScreen()->availableGeometry();\n    });\n    return GDimension(rec.width(), rec.height());\n}\n\n/*static*/ double GWindow::getScreenWidth() {\n    return getScreenSize().width;\n}\n\nGDimension GWindow::getSize() const {\n    return GDimension(_iqmainwindow->width(), _iqmainwindow->height());\n}\n\nstd::string GWindow::getTitle() const {\n    return _iqmainwindow->windowTitle().toStdString();\n}\n\nstd::string GWindow::getType() const {\n    return \"GWindow\";\n}\n\nQWidget* GWindow::getWidget() const {\n    return static_cast<QWidget*>(_iqmainwindow);\n}\n\ndouble GWindow::getWidth() const {\n    return _iqmainwindow->width();\n}\n\ndouble GWindow::getX() const {\n    return _iqmainwindow->x();\n}\n\ndouble GWindow::getY() const {\n    return _iqmainwindow->y();\n}\n\nbool GWindow::hasToolbar() const {\n    return _toolbar != nullptr;\n}\n\nvoid GWindow::hide() {\n    setVisible(false);\n}\n\nbool GWindow::inBounds(double x, double y) const {\n    return 0 <= x && x < getWidth() && 0 <= y && y < getHeight();\n}\n\nbool GWindow::inCanvasBounds(double x, double y) const {\n    return 0 <= x && x < getCanvasWidth() && 0 <= y && y < getCanvasHeight();\n}\n\n/*static*/ bool GWindow::isDarkMode() {\n    if (!getLastWindow()) {\n        // cannot check yet\n        return false;\n    }\n    int bg = getDefaultInteractorBackgroundColorInt();\n    int fg = getDefaultInteractorTextColorInt();\n\n    // our heuristic: if the text is brighter than the background,\n    // we'll assume they are in dark mode\n    double bgLum = GColor::getLuminance(bg);\n    double fgLum = GColor::getLuminance(fg);\n    return fgLum > bgLum;\n}\n\nbool GWindow::isMaximized() const {\n    return (_iqmainwindow->windowState() & Qt::WindowMaximized) != 0\n            || (_iqmainwindow->windowState() & Qt::WindowFullScreen) != 0;\n}\n\nbool GWindow::isMinimized() const {\n    return (_iqmainwindow->windowState() & Qt::WindowMinimized) != 0;\n}\n\nbool GWindow::isOpen() const {\n    return isVisible();\n}\n\nbool GWindow::isRepaintImmediately() const {\n    return _canvas && _canvas->isRepaintImmediately();\n}\n\nbool GWindow::isResizable() const {\n    return _resizable;\n}\n\nbool GWindow::isVisible() const {\n    return _iqmainwindow->isVisible();\n}\n\nvoid GWindow::loadCanvasPixels(const std::string& filename) {\n    ensureForwardTarget();\n    _canvas->load(filename);   // runs on Qt GUI thread\n}\n\nvoid GWindow::maximize() {\n    GThread::runOnQtGuiThread([this]() {\n        _iqmainwindow->setWindowState(Qt::WindowMaximized);\n    });\n}\n\nvoid GWindow::minimize() {\n    GThread::runOnQtGuiThread([this]() {\n        _iqmainwindow->setWindowState(Qt::WindowMinimized);\n    });\n}\n\nvoid GWindow::pack() {\n    setSize(getPreferredSize());\n}\n\nvoid GWindow::pause(double ms) {\n    require::nonNegative(ms, \"GWindow::pause\", \"milliseconds\");\n    GThread::msleep(ms);\n}\n\nvoid GWindow::processKeyPressEventInternal(QKeyEvent* /* event */) {\n    // empty; override me\n}\n\nvoid GWindow::rememberPosition() {\n    // TODO\n}\n\nvoid GWindow::remove(GObject* obj) {\n    require::nonNull(obj, \"GWindow::remove\");\n    if (_canvas) {\n        _canvas->remove(obj);\n    }\n}\n\nvoid GWindow::remove(GObject& obj) {\n    if (_canvas) {\n        _canvas->remove(&obj);   // runs on Qt GUI thread\n    }\n}\n\nvoid GWindow::remove(GInteractor* interactor) {\n    require::nonNull(interactor, \"GWindow::remove\");\n    _contentPane->remove(interactor);\n}\n\nvoid GWindow::remove(GInteractor& interactor) {\n    remove(&interactor);\n}\n\nvoid GWindow::removeClickListener() {\n    if (_canvas) {\n        _canvas->removeClickListener();   // runs on Qt GUI thread\n    }\n}\n\nvoid GWindow::removeFromRegion(GInteractor* interactor, Region region) {\n    require::nonNull(interactor, \"GWindow::removeFromRegion\");\n\n    // special case: labels in \"GText mode\" are added to canvas\n    if (region == REGION_CENTER && interactor->getType() == \"GLabel\") {\n        GLabel* label = static_cast<GLabel*>(interactor);\n        if (label->hasGText()) {\n            remove(label->getGText());\n            return;\n        }\n    }\n\n    _contentPane->removeFromRegion(interactor, static_cast<GContainer::Region>(region));\n}\n\nvoid GWindow::removeFromRegion(GInteractor* interactor, const std::string& region) {\n    removeFromRegion(interactor, stringToRegion(region));\n}\n\nvoid GWindow::removeFromRegion(GInteractor& interactor, Region region) {\n    removeFromRegion(&interactor, region);\n}\n\nvoid GWindow::removeFromRegion(GInteractor& interactor, const std::string& region) {\n    removeFromRegion(&interactor, region);\n}\n\nvoid GWindow::removeKeyListener() {\n    if (_canvas) {\n        _canvas->removeKeyListener();   // runs on Qt GUI thread\n    }\n}\n\nvoid GWindow::removeMenuListener() {\n    removeEventListener(\"actionMenu\");\n}\n\nvoid GWindow::removeMouseListener() {\n    if (_canvas) {\n        _canvas->removeMouseListener();   // runs on Qt GUI thread\n    }\n}\n\nvoid GWindow::removeTimerListener() {\n    removeEventListener(\"timer\");\n}\n\nvoid GWindow::removeToolbar() {\n    if (!_toolbar) {\n        return;\n    }\n    GThread::runOnQtGuiThread([this]() {\n        _iqmainwindow->removeToolBar(_toolbar);\n        _toolbar = nullptr;\n    });\n}\n\nvoid GWindow::removeWindowListener() {\n    removeEventListeners({\"close\",\n                         \"closing\",\n                         \"maximize\",\n                         \"minimize\",\n                         \"open\",\n                         \"resize\",\n                         \"restore\"});\n}\n\nvoid GWindow::requestFocus() {\n    GThread::runOnQtGuiThread([this]() {\n        _iqmainwindow->setFocus();\n        _iqmainwindow->activateWindow();\n    });\n}\n\nvoid GWindow::restore() {\n    GThread::runOnQtGuiThread([this]() {\n        _iqmainwindow->setWindowState(Qt::WindowActive);\n    });\n}\n\nvoid GWindow::saveCanvasPixels(const std::string& filename) {\n    ensureForwardTarget();\n    _canvas->save(filename);   // runs on Qt GUI thread\n}\n\nvoid GWindow::setBackground(int color) {\n    _contentPane->setBackground(color);\n    GThread::runOnQtGuiThread([this, color]() {\n        GForwardDrawingSurface::setBackground(color);\n    });\n}\n\nvoid GWindow::setBackground(const std::string& color) {\n    _contentPane->setBackground(color);\n    GThread::runOnQtGuiThread([this, color]() {\n        GForwardDrawingSurface::setBackground(color);\n        // TODO: set background of N/S/E/W regions and central region?\n    });\n}\n\nvoid GWindow::setCanvasHeight(double height) {\n    ensureForwardTarget();\n    setCanvasSize(getCanvasWidth(), height);\n}\n\nvoid GWindow::setCanvasSize(double width, double height) {\n    require::nonNegative2D(width, height, \"GWindow::setCanvasSize\", \"width\", \"height\");\n    ensureForwardTarget();\n    _canvas->setMinimumSize(width, height);    // runs on Qt GUI thread\n    _canvas->setPreferredSize(width, height);\n    pack();\n}\n\nvoid GWindow::setCanvasSize(const GDimension& size) {\n    setCanvasSize(size.width, size.height);\n}\n\nvoid GWindow::setCanvasWidth(double width) {\n    ensureForwardTarget();\n    setCanvasSize(width, getCanvasHeight());\n}\n\nvoid GWindow::setCloseOperation(CloseOperation op) {\n    GThread::runOnQtGuiThread([this, op]() {\n        _closeOperation = op;\n        _iqmainwindow->setAttribute(Qt::WA_QuitOnClose, op == GWindow::CLOSE_EXIT);\n    });\n}\n\nvoid GWindow::setExitOnClose(bool exitOnClose) {\n    if (exitOnClose) {\n        setCloseOperation(GWindow::CLOSE_EXIT);\n    } else {\n        setCloseOperation(_closeOperation == GWindow::CLOSE_EXIT ? GWindow::CLOSE_HIDE : _closeOperation);\n    }\n}\n\nvoid GWindow::setHeight(double height) {\n    setSize(getWidth(), height);\n}\n\nvoid GWindow::setLocation(double x, double y) {\n    GThread::runOnQtGuiThread([this, x, y]() {\n        _iqmainwindow->move(static_cast<int>(x), static_cast<int>(y));\n    });\n}\n\nvoid GWindow::setLocation(const GPoint& p) {\n    setLocation(p.x, p.y);\n}\n\nvoid GWindow::setMenuItemEnabled(const std::string& menu, const std::string& item, bool enabled) {\n    std::string menuKey = toLowerCase(stringReplace(menu, \"&\", \"\"));\n    std::string itemKey = toLowerCase(stringReplace(item, \"&\", \"\"));\n    std::string menuItemKey = menuKey + \"/\" + itemKey;\n    if (!_menuMap.containsKey(menuKey)) {\n        error(\"GWindow::setMenuItemEnabled: menu \\\"\" + menu + \"\\\" does not exist\");\n    } else if (!_menuActionMap.containsKey(menuItemKey)) {\n        error(\"GWindow::setMenuItemEnabled: menu item \\\"\" + item + \"\\\" does not exist\");\n    }\n\n    QAction* action = _menuActionMap[menuItemKey];\n    GThread::runOnQtGuiThread([action, enabled]() {\n        action->setEnabled(enabled);\n    });\n}\n\nvoid GWindow::setClickListener(GEventListener func) {\n    _canvas->setClickListener(func);   // runs on Qt GUI thread\n}\n\nvoid GWindow::setClickListener(GEventListenerVoid func) {\n    _canvas->setClickListener(func);   // runs on Qt GUI thread\n}\n\nvoid GWindow::setKeyListener(GEventListener func) {\n    _canvas->setKeyListener(func);   // runs on Qt GUI thread\n}\n\nvoid GWindow::setKeyListener(GEventListenerVoid func) {\n    _canvas->setKeyListener(func);   // runs on Qt GUI thread\n}\n\nvoid GWindow::setMenuListener(GEventListener func) {\n    setEventListener(\"actionMenu\", func);   // runs on Qt GUI thread\n}\n\nvoid GWindow::setMenuListener(GEventListenerVoid func) {\n    setEventListener(\"actionMenu\", func);   // runs on Qt GUI thread\n}\n\nvoid GWindow::setMouseListener(GEventListener func) {\n    _canvas->setMouseListener(func);   // runs on Qt GUI thread\n}\n\nvoid GWindow::setMouseListener(GEventListenerVoid func) {\n    _canvas->setMouseListener(func);   // runs on Qt GUI thread\n}\n\nvoid GWindow::setRegionAlignment(Region region, HorizontalAlignment halign) {\n    _contentPane->setRegionAlignment(static_cast<GContainer::Region>(region), halign);\n}\n\nvoid GWindow::setRegionAlignment(Region region, VerticalAlignment valign) {\n    _contentPane->setRegionAlignment(static_cast<GContainer::Region>(region), valign);\n}\n\nvoid GWindow::setRegionAlignment(Region region, HorizontalAlignment halign, VerticalAlignment valign) {\n    _contentPane->setRegionAlignment(static_cast<GContainer::Region>(region), halign, valign);\n}\n\nvoid GWindow::setRegionAlignment(const std::string& region, const std::string& align) {\n    _contentPane->setRegionAlignment(region, align);\n}\n\nvoid GWindow::setRegionAlignment(const std::string& region, const std::string& halign, const std::string& valign) {\n    _contentPane->setRegionAlignment(region, halign, valign);\n}\n\nvoid GWindow::setRegionHorizontalAlignment(Region region, HorizontalAlignment halign) {\n    _contentPane->setRegionHorizontalAlignment(static_cast<GContainer::Region>(region), halign);\n}\n\nvoid GWindow::setRegionHorizontalAlignment(const std::string& region, const std::string& halign) {\n    _contentPane->setRegionHorizontalAlignment(region, halign);\n}\n\nvoid GWindow::setRegionVerticalAlignment(Region region, VerticalAlignment valign) {\n    _contentPane->setRegionVerticalAlignment(static_cast<GContainer::Region>(region), valign);\n}\n\nvoid GWindow::setRegionVerticalAlignment(const std::string& region, const std::string& valign) {\n    _contentPane->setRegionVerticalAlignment(region, valign);\n}\n\nvoid GWindow::setResizable(bool resizable) {\n    GThread::runOnQtGuiThread([this, resizable]() {\n        if (resizable) {\n            if (!_resizable) {\n                _iqmainwindow->resize(static_cast<int>(getWidth()),\n                                      static_cast<int>(getHeight()));\n                _iqmainwindow->setMinimumSize(_iqmainwindow->minimumSizeHint());\n                GDimension screenSize = getScreenSize();\n                _iqmainwindow->setMaximumSize(static_cast<int>(screenSize.width),\n                                              static_cast<int>(screenSize.height));\n                _iqmainwindow->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);\n            }\n        } else {\n            if (_resizable) {\n                _iqmainwindow->setFixedSize(_iqmainwindow->size());\n                _iqmainwindow->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);\n            }\n        }\n        _resizable = resizable;\n    });\n}\n\nvoid GWindow::setSize(double width, double height) {\n    require::nonNegative2D(width, height, \"GWindow::setSize\", \"width\", \"height\");\n    GThread::runOnQtGuiThread([this, width, height]() {\n        if (isResizable()) {\n            _iqmainwindow->resize(static_cast<int>(width),\n                                  static_cast<int>(height));\n        } else {\n            _iqmainwindow->setFixedSize(static_cast<int>(width),\n                                        static_cast<int>(height));\n        }\n    });\n}\n\nvoid GWindow::setSize(const GDimension& size) {\n    setSize(size.width, size.height);\n}\n\nvoid GWindow::setTimerListener(double ms, GEventListener func) {\n    require::nonNegative(ms, \"GWindow::setTimerListener\", \"delay (ms)\");\n    setEventListener(\"timer\", func);\n    GThread::runOnQtGuiThread([this, ms]() {\n        _iqmainwindow->timerStart(ms);\n    });\n}\n\nvoid GWindow::setTimerListener(double ms, GEventListenerVoid func) {\n    require::nonNegative(ms, \"GWindow::setTimerListener\", \"delay (ms)\");\n    setEventListener(\"timer\", func);\n    GThread::runOnQtGuiThread([this, ms]() {\n        _iqmainwindow->timerStart(ms);\n    });\n}\n\nvoid GWindow::setTitle(const std::string& title) {\n    GThread::runOnQtGuiThread([this, title]() {\n        _iqmainwindow->setWindowTitle(QString::fromStdString(title));\n    });\n}\n\nvoid GWindow::setVisible(bool visible) {\n    GThread::runOnQtGuiThread([this, visible]() {\n        _iqmainwindow->setVisible(visible);\n    });\n}\n\nvoid GWindow::setWidth(double width) {\n    setSize(width, getHeight());\n}\n\nvoid GWindow::setWindowIcon(const std::string& iconFile) {\n    if (fileExists(iconFile)) {\n        GThread::runOnQtGuiThread([this, iconFile]() {\n            QIcon qicon(QString::fromStdString(iconFile));\n            _iqmainwindow->setWindowIcon(qicon);\n        });\n    }\n}\n\nvoid GWindow::setWindowListener(GEventListener func) {\n    setEventListeners({\"close\",\n                      \"closing\",\n                      \"maximize\",\n                      \"minimize\",\n                      \"open\",\n                      \"resize\",\n                      \"restore\"}, func);\n}\n\nvoid GWindow::setWindowListener(GEventListenerVoid func) {\n    setEventListeners({\"close\",\n                      \"closing\",\n                      \"maximize\",\n                      \"minimize\",\n                      \"open\",\n                      \"resize\",\n                      \"restore\"}, func);\n}\n\nvoid GWindow::setWindowTitle(const std::string& title) {\n    setTitle(title);\n}\n\nvoid GWindow::setX(double x) {\n    setLocation(x, getY());\n}\n\nvoid GWindow::setY(double y) {\n    setLocation(getX(), y);\n}\n\nvoid GWindow::show() {\n    setVisible(true);\n}\n\nGWindow::Region GWindow::stringToRegion(const std::string& regionStr) {\n    std::string regionLC = toLowerCase(trim(regionStr));\n    if (stringContains(regionLC, \"north\") || stringContains(regionLC, \"top\")) {\n        return GWindow::REGION_NORTH;\n    } else if (stringContains(regionLC, \"south\") || stringContains(regionLC, \"bottom\")) {\n        return GWindow::REGION_SOUTH;\n    } else if (stringContains(regionLC, \"west\") || stringContains(regionLC, \"left\")) {\n        return GWindow::REGION_WEST;\n    } else if (stringContains(regionLC, \"east\") || stringContains(regionLC, \"right\")) {\n        return GWindow::REGION_EAST;\n    } else {\n        return GWindow::REGION_CENTER;\n    }\n}\n\nvoid GWindow::toBack() {\n    GThread::runOnQtGuiThread([this]() {\n        _iqmainwindow->lower();\n    });\n}\n\nvoid GWindow::toFront() {\n    GThread::runOnQtGuiThread([this]() {\n        _iqmainwindow->raise();\n        _iqmainwindow->setFocus();\n    });\n}\n\n\n// global functions for compatibility\n\nint convertColorToRGB(const std::string& colorName) {\n    return GColor::convertColorToRGB(colorName);\n}\n\nstd::string convertRGBToColor(int rgb) {\n    return GColor::convertRGBToColor(rgb);\n}\n\nvoid exitGraphics() {\n    QtGui::instance()->exitGraphics();\n}\n\ndouble getScreenHeight() {\n    return GWindow::getScreenHeight();\n}\n\nGDimension getScreenSize() {\n    return GWindow::getScreenSize();\n}\n\ndouble getScreenWidth() {\n    return GWindow::getScreenWidth();\n}\n\n#ifndef SPL_HEADLESS_MODE\nvoid pause(double milliseconds) {\n    GThread::msleep(milliseconds);\n}\n#endif // SPL_HEADLESS_MODE\n\nvoid repaint() {\n    QMainWindow* lastWindow = GWindow::getLastWindow();\n    if (lastWindow) {\n        lastWindow->repaint();\n    }\n    // TODO: other windows?\n}\n\n\n_Internal_QMainWindow::_Internal_QMainWindow(GWindow* gwindow, QWidget* parent)\n        : QMainWindow(parent),\n          _gwindow(gwindow) {\n    require::nonNull(gwindow, \"_Internal_QMainWindow::constructor\");\n    GThread::ensureThatThisIsTheQtGuiThread(\"GWindow internal initialization\");\n    setObjectName(QString::fromStdString(\"_Internal_QMainWindow\"));\n}\n\nvoid _Internal_QMainWindow::changeEvent(QEvent* event) {\n    require::nonNull(event, \"_Internal_QMainWindow::changeEvent\", \"event\");\n    QMainWindow::changeEvent(event);   // call super\n    if (!_gwindow || event->type() != QEvent::WindowStateChange) {\n        return;\n    }\n\n    // https://doc.qt.io/Qt-5/qt.html#WindowState-enum\n    QWindowStateChangeEvent* stateChangeEvent = static_cast<QWindowStateChangeEvent*>(event);\n    Qt::WindowStates state = windowState();\n    bool wasMaximized = (stateChangeEvent->oldState() & Qt::WindowMaximized) != 0;\n    bool wasMinimized = (stateChangeEvent->oldState() & Qt::WindowMinimized) != 0;\n    bool isMaximized = (state & Qt::WindowMaximized) != 0;\n    bool isMinimized = (state & Qt::WindowMinimized) != 0;\n    if (!wasMaximized && isMaximized) {\n        _gwindow->fireGEvent(stateChangeEvent, WINDOW_MAXIMIZED, \"maximize\");\n    } else if (!wasMinimized && isMinimized) {\n        _gwindow->fireGEvent(stateChangeEvent, WINDOW_MINIMIZED, \"minimize\");\n    } else if ((wasMinimized || wasMaximized) && !isMinimized && !isMaximized) {\n        _gwindow->fireGEvent(stateChangeEvent, WINDOW_RESTORED, \"restore\");\n    }\n}\n\nvoid _Internal_QMainWindow::closeEvent(QCloseEvent* event) {\n    require::nonNull(event, \"_Internal_QMainWindow::closeEvent\", \"event\");\n    if (!_gwindow) {\n        QMainWindow::closeEvent(event);   // call super\n        return;\n    }\n\n    // send \"closing\" event before window closes\n    _gwindow->fireGEvent(event, WINDOW_CLOSING, \"closing\");\n\n    GWindow::CloseOperation closeOp = _gwindow->getCloseOperation();\n    if (closeOp == GWindow::CLOSE_DO_NOTHING) {\n        event->ignore();\n        return;\n    }\n\n    // send \"close\" event after window closes\n    event->accept();\n    QMainWindow::closeEvent(event);   // call super\n    _gwindow->fireGEvent(event, WINDOW_CLOSED, \"close\");\n\n    if (closeOp == GWindow::CLOSE_EXIT) {\n        // exit app\n        QtGui::instance()->exitGraphics(EXITING_DUE_TO_WINDOW_CLOSE);\n    }\n}\n\nvoid _Internal_QMainWindow::handleMenuAction(const std::string& menu, const std::string& item) {\n    GEvent actionEvent(\n                /* class  */ ACTION_EVENT,\n                /* type   */ ACTION_MENU,\n                /* name   */ \"actionMenu\",\n                /* source */ _gwindow);\n    actionEvent.setActionCommand(menu + \"/\" + item);\n    _gwindow->fireEvent(actionEvent);\n}\n\nvoid _Internal_QMainWindow::keyPressEvent(QKeyEvent* event) {\n    require::nonNull(event, \"_Internal_QMainWindow::keyPressEvent\", \"event\");\n    QMainWindow::keyPressEvent(event);   // call super\n    if (!_gwindow) {\n        return;\n    }\n    _gwindow->processKeyPressEventInternal(event);\n}\n\nvoid _Internal_QMainWindow::resizeEvent(QResizeEvent* event) {\n    require::nonNull(event, \"_Internal_QMainWindow::resizeEvent\", \"event\");\n    QMainWindow::resizeEvent(event);   // call super\n    if (!_gwindow) {\n        return;\n    }\n    _gwindow->fireGEvent(event, WINDOW_RESIZED, \"resize\");\n}\n\nvoid _Internal_QMainWindow::timerEvent(QTimerEvent* event) {\n    require::nonNull(event, \"_Internal_QMainWindow::timerEvent\", \"event\");\n    QMainWindow::timerEvent(event);   // call super\n    if (!_gwindow) {\n        return;\n    }\n    _gwindow->fireGEvent(event, TIMER_TICKED, \"timer\");\n}\n\nbool _Internal_QMainWindow::timerExists(int id) {\n    if (id >= 0) {\n        return _timerIDs.contains(id);\n    } else {\n        return !_timerIDs.isEmpty();\n    }\n}\n\nint _Internal_QMainWindow::timerStart(double ms) {\n    require::nonNegative(ms, \"_Internal_QMainWindow::timerStart\", \"delay (ms)\");\n    int timerID = startTimer(static_cast<int>(ms));\n    _timerIDs.add(timerID);\n    return timerID;\n}\n\nvoid _Internal_QMainWindow::timerStop(int id) {\n    if (id < 0 && timerExists()) {\n        id = _timerIDs.first();\n    }\n\n    if (timerExists(id)) {\n        killTimer(id);\n        _timerIDs.remove(id);\n    }\n}\n\n\n"
  },
  {
    "path": "Library/graphics/gwindow.h",
    "content": "/*\n * File: gwindow.h\n * ---------------\n *\n * @author Marty Stepp\n * @version 2019/05/05\n * - added static method for isDarkMode checking support\n * - added static methods to ask for system default widget bg/fg color\n * @version 2019/04/09\n * - added toolbar support\n * @version 2018/10/20\n * - added high-density screen features\n * @version 2018/09/09\n * - added doc comments for new documentation generation\n * @version 2018/09/05\n * - refactored to use a border layout GContainer \"content pane\" for storing all interactors\n * @version 2018/08/23\n * - renamed to gwindow.h to replace Java version\n * @version 2018/07/29\n * - menu bars\n * @version 2018/06/25\n * - initial version\n */\n\n\n#ifndef _gwindow_h\n#define _gwindow_h\n\n#include <string>\n#include <QCloseEvent>\n#include <QEvent>\n#include <QLayout>\n#include <QMainWindow>\n#include <QRect>\n\n#include \"gcanvas.h\"\n#include \"gcontainer.h\"\n#include \"gdrawingsurface.h\"\n#include \"geventqueue.h\"\n#include \"ginteractor.h\"\n#include \"grid.h\"\n#include \"gtypes.h\"\n#include \"map.h\"\n#include \"set.h\"\n\nclass _Internal_QMainWindow;\n\n/**\n * This class represents a graphics window that supports simple graphics.\n * A GWindow is a first-class citizen in our GUI subsystem; all graphical\n * programs will create at least one GWindow to hold other interactors and\n * graphical objects for display on the screen.\n *\n * A GWindow simultaneously serves two major graphical purposes:\n *\n * 1) A top-level container for interactors.\n * You can call the addToRegion and add methods to add interactors to the north,\n * south, west, east, and center regions of the window.\n * The center region holds at most one interactor that expands in both dimensions\n * to fill pixels not occupied by the other four regions.\n * This is analogous to Java AWT/Swing's BorderLayout system.\n * The window uses an internal GContainer that we call its \"content pane\" to\n * layout the positions and sizes of these interactors.\n * See gcontainer.h for more detail about layout and containers.\n *\n * 2) A graphical canvas for drawing shapes, lines, and colors.\n * A GWindow contains a central graphical canvas that is implemented as an\n * object of type GCanvas.  The canvas will appear on the window the moment you\n * call any drawing method on the window.\n *\n * The graphical canvas consists of two layers.\n * The background layer provides a surface for drawing static pictures that\n * involve no animation, or for 2D pixel-based drawing algorithms.\n * See gcanvas.h and gobjects.h for more detail about drawing shapes, objects,\n * and pixels.\n *\n * The GWindow class includes several drawXxx and fillXxx methods that draw\n * lines, rectangles, and ovals on the background layer without the client\n * needing to directly create objects from the gobjects.h hierarchy.\n *\n * The foreground layer provides an abstraction for adding stateful shapes and\n * graphical objects onto the canvas.  The add() methods that accept GObject\n * parameters place these objects onto the foreground layer.  The advantage of\n * the foreground layer is that you can manipulate the object over time, such as\n * moving it, changing its color, size, or other properties, and see these\n * changes immediately on the screen.  This makes the foreground layer most\n * appropriate for animations or moving sprites.\n *\n * You can use the two GWindow paradigms together in the same window.\n * For example, you can place a row of buttons in the north or south while\n * drawing shapes onto the canvas in the center of the window.\n *\n * If you add() a GInteractor to the center region of the window, we will assume\n * that you do not want the graphical canvas and will replace it with the added\n * interactor.\n */\nclass GWindow : public GObservable, public virtual GForwardDrawingSurface {\npublic:\n    /**\n     * The five regions of window border layouts.\n     */\n    enum Region {\n        REGION_CENTER = GContainer::REGION_CENTER,\n        REGION_EAST = GContainer::REGION_EAST,\n        REGION_NORTH = GContainer::REGION_NORTH,\n        REGION_SOUTH = GContainer::REGION_SOUTH,\n        REGION_WEST = GContainer::REGION_WEST\n    };\n\n    /**\n     * The various actions that can occur when a window closes.\n     */\n    enum CloseOperation {\n        CLOSE_DO_NOTHING,\n        CLOSE_HIDE,\n        CLOSE_DISPOSE,\n        CLOSE_EXIT\n    };\n\n    /**\n     * The default width of a newly created window in pixels if\n     * its width is not explicitly specified.\n     */\n    static const int DEFAULT_WIDTH;\n\n    /**\n     * The default height of a newly created window in pixels if\n     * its height is not explicitly specified.\n     */\n    static const int DEFAULT_HEIGHT;\n\n    /**\n     * The minimum number of dots per inch before a screen is considered\n     * to be high-density or high-DPI.\n     */\n    static const int HIGH_DPI_SCREEN_THRESHOLD;\n\n    /**\n     * The minimum number of dots per inch on a \"normal\" low-DPI screen.\n     * Used to figure out how much to scale up on high-DPI screens.\n     */\n    static const int STANDARD_SCREEN_DPI;\n\n    /**\n     * The default file name used to load a GWindow's initial\n     * title bar icon.\n     */\n    static const std::string DEFAULT_ICON_FILENAME;\n\n    /**\n     * Creates a new window of a default width and height.\n     */\n    GWindow(bool visible = true);\n\n    /**\n     * Creates a new window of the given width and height.\n     */\n    GWindow(double width, double height, bool visible = true);\n\n    /**\n     * Creates a new window of the given location and size.\n     */\n    GWindow(double x, double y, double width, double height, bool visible = true);\n\n    /**\n     * Frees memory allocated internally by the window.\n     */\n    ~GWindow() override;\n\n    /**\n     * Adds the given interactor to the center region of the window.\n     * This replaces the graphical canvas and causes the canvas to be hidden.\n     * @throw ErrorException if the interactor is null\n     */\n    virtual void add(GInteractor* interactor);\n\n    /**\n     * Adds the given interactor to the center region of the window\n     * and moves it to the given x/y location.\n     * This replaces the graphical canvas and causes the canvas to be hidden.\n     * @throw ErrorException if the interactor is null\n     */\n    virtual void add(GInteractor* interactor, double x, double y);\n\n    /**\n     * Adds the given interactor to the center region of the window.\n     * This replaces the graphical canvas and causes the canvas to be hidden.\n     */\n    virtual void add(GInteractor& interactor);\n\n    /**\n     * Adds the given interactor to the center region of the window\n     * and moves it to the given x/y location.\n     * This replaces the graphical canvas and causes the canvas to be hidden.\n     */\n    virtual void add(GInteractor& interactor, double x, double y);\n\n    /**\n     * Adds the given graphical object to the window's canvas.\n     * This causes the graphical canvas to appear if it was not already showing.\n     * @throw ErrorException if the interactor is null\n     */\n    virtual void add(GObject* obj);\n\n    /**\n     * Adds the given graphical object to the window's canvas\n     * and moves it to the given x/y location.\n     * This causes the graphical canvas to appear if it was not already showing.\n     * @throw ErrorException if the interactor is null\n     */\n    virtual void add(GObject* obj, double x, double y);\n\n    /**\n     * Adds the given graphical object to the window's canvas.\n     * This causes the graphical canvas to appear if it was not already showing.\n     */\n    virtual void add(GObject& obj);\n\n    /**\n     * Adds the given graphical object to the window's canvas\n     * and moves it to the given x/y location.\n     * This causes the graphical canvas to appear if it was not already showing.\n     */\n    virtual void add(GObject& obj, double x, double y);\n\n    /**\n     * Adds a menu with the given text to the window's top menu bar.\n     * If the given menu already exists, returns it without adding it again.\n     */\n    virtual QMenu* addMenu(const std::string& text);\n\n    /**\n     * Adds a new menu item to the given menu.\n     * If the given menu item already exists in this menu, returns it without\n     * adding it again.\n     * You can supply an optional icon to show next to the menu item.\n     * When the menu item is clicked, an ACTION_MENU action event will occur.\n     * @throw ErrorException if the given menu does not exist\n     */\n    virtual QAction* addMenuItem(const std::string& menu, const std::string& item,\n                                 const std::string& icon = \"\");\n\n    /**\n     * Adds a new menu item to the given menu.\n     * If the given menu item already exists in this menu, returns it without\n     * adding it again.\n     * You can supply an optional icon to show next to the menu item.\n     * When the menu item is clicked, the given listener function will be called.\n     * @throw ErrorException if the given menu does not exist\n     */\n    virtual QAction* addMenuItem(const std::string& menu, const std::string& item,\n                                 const std::string& icon, GEventListenerVoid func);\n\n    /**\n     * Adds a new menu item to the given menu.\n     * If the given menu item already exists in this menu, returns it without\n     * adding it again.\n     * You can supply an optional icon to show next to the menu item.\n     * When the menu item is clicked, the given listener function will be called.\n     * @throw ErrorException if the given menu does not exist\n     */\n    virtual QAction* addMenuItem(const std::string& menu, const std::string& item,\n                                 const QIcon& icon, GEventListenerVoid func);\n\n    /**\n     * Adds a new menu item to the given menu.\n     * If the given menu item already exists in this menu, returns it without\n     * adding it again.\n     * You can supply an optional icon to show next to the menu item.\n     * When the menu item is clicked, the given listener function will be called.\n     * @throw ErrorException if the given menu does not exist\n     */\n    virtual QAction* addMenuItem(const std::string& menu, const std::string& item,\n                                 const QPixmap& icon, GEventListenerVoid func);\n\n    /**\n     * Adds a new checkbox menu item to the given menu.\n     * If the given menu item already exists in this menu, returns it without\n     * adding it again.\n     * You can supply an optional icon to show next to the menu item.\n     * When the menu item is clicked, an ACTION_MENU action event will occur.\n     * @throw ErrorException if the given menu does not exist\n     */\n    virtual QAction* addMenuItemCheckBox(const std::string& menu, const std::string& item,\n                                         bool checked = false,\n                                         const std::string& icon = \"\");\n\n    /**\n     * Adds a new checkbox menu item to the given menu.\n     * If the given menu item already exists in this menu, returns it without\n     * adding it again.\n     * You can supply an optional icon to show next to the menu item.\n     * When the menu item is clicked, the given listener function will be called.\n     * @throw ErrorException if the given menu does not exist\n     */\n    virtual QAction* addMenuItemCheckBox(const std::string& menu, const std::string& item,\n                                         bool checked,\n                                         const std::string& icon, GEventListenerVoid func);\n\n    /**\n     * Adds a horizontal line separator to the end of the given menu.\n     * @throw ErrorException if the given menu does not exist\n     */\n    virtual QAction* addMenuSeparator(const std::string& menu);\n\n    /**\n     * Adds a sub-menu within an existing menu.\n     * You can later add items to this sub-menu using:\n     *\n     * myWindow->addMenuItem(menu + \"/\" + submenu, item);\n     * @throw ErrorException if the given menu does not exist\n     */\n    virtual QMenu* addSubMenu(const std::string& menu, const std::string& submenu);\n\n    /**\n     * Adds the given interactor to the given region in this window.\n     * @throw ErrorException if the interactor is null\n     */\n    virtual void addToRegion(GInteractor* interactor, Region region);\n\n    /**\n     * Adds the given interactor to the given region in this window.\n     * @throw ErrorException if the interactor is null\n     */\n    virtual void addToRegion(GInteractor* interactor, const std::string& region = \"Center\");\n\n    /**\n     * Adds the given interactor to the given region in this window.\n     */\n    virtual void addToRegion(GInteractor& interactor, Region region);\n\n    /**\n     * Adds the given interactor to the given region in this window.\n     */\n    virtual void addToRegion(GInteractor& interactor, const std::string& region = \"Center\");\n\n    /**\n     * Adds a toolbar to this window where action buttons can be placed.\n     */\n    virtual void addToolbar(const std::string& title = \"\");\n\n    /**\n     * Adds a new item to the window's toolbar.\n     * If the window does not have a toolbar, one is added.\n     * You can supply an optional icon to show next to the menu item.\n     * When the menu item is clicked, an ACTION_MENU action event will occur.\n     */\n    virtual QAction* addToolbarItem(const std::string& item,\n                                    const std::string& icon = \"\");\n\n    /**\n     * Adds a new item to the window's toolbar.\n     * If the window does not have a toolbar, one is added.\n     * You can supply an optional icon to show next to the menu item.\n     * When the menu item is clicked, the given listener function will be called.\n     */\n    virtual QAction* addToolbarItem(const std::string& item,\n                                    const std::string& icon,\n                                    GEventListenerVoid func);\n\n    /**\n     * Adds a new item to the window's toolbar.\n     * If the window does not have a toolbar, one is added.\n     * You can supply an optional icon to show next to the menu item.\n     * When the menu item is clicked, the given listener function will be called.\n     */\n    virtual QAction* addToolbarItem(const std::string& item,\n                                    const QIcon& icon,\n                                    GEventListenerVoid func);\n\n    /**\n     * Adds a new item to the window's toolbar.\n     * If the window does not have a toolbar, one is added.\n     * You can supply an optional icon to show next to the menu item.\n     * When the menu item is clicked, the given listener function will be called.\n     */\n    virtual QAction* addToolbarItem(const std::string& item,\n                                    const QPixmap& icon,\n                                    GEventListenerVoid func);\n\n    /**\n     * Adds a separator to the window's toolbar.\n     * If the window does not have a toolbar, one is added.\n     */\n    virtual QAction* addToolbarSeparator();\n\n    /**\n     * Removes all interactors from all regionss of the window.\n     */\n    void clear() override;\n\n    /**\n     * Removes all graphical objects from the graphical canvas in this window\n     * and resets the background layer to the window's background color.\n     */\n    virtual void clearCanvas();\n\n    /**\n     * Removes all graphical objects from the graphical canvas in this window.\n     * This means that any shapes added using the add() methods, such as GRect,\n     * GOval, etc. will be removed, while any shapes drawn directly onto the\n     * window's background pixel layer by calling the drawXxx() methods will be\n     * retained.  To clear the background layer as well, call clearCanvasPixels\n     * or clearCanvas instead.\n     */\n    virtual void clearCanvasObjects();\n\n    /**\n     * Resets the background layer of pixels in the window's canvas to the\n     * window's background color.\n     * This means that any shapes added using the add() methods, such as GRect,\n     * GOval, etc. will remain, while any shapes drawn directly onto the\n     * window's background pixel layer by calling the drawXxx() methods will be\n     * wiped out.  To clear the shapes added to the foreground layer as well,\n     * call clearCanvasObjects or clearCanvas instead.\n     */\n    virtual void clearCanvasPixels();\n\n    /**\n     * Removes all interactors from the given region of this window.\n     */\n    virtual void clearRegion(Region region);\n\n    /**\n     * Removes all interactors from the given region of this window.\n     */\n    virtual void clearRegion(const std::string& region);\n\n    /**\n     * Removes all items from the window's toolbar, if present.\n     */\n    virtual void clearToolbarItems();\n\n    /**\n     * Relocates the window to the exact center of the current screen.\n     */\n    virtual void center();\n\n    /**\n     * Returns which color to use depending on whether the user's computer is\n     * in light or dark mode.\n     * If in light mode, returns lightColor; else returns darkColor.\n     */\n    static std::string chooseLightDarkModeColor(const std::string& lightColor,\n                                                const std::string& darkColor);\n\n    /**\n     * Returns which color to use depending on whether the user's computer is\n     * in light or dark mode.\n     * If in light mode, returns lightColor; else returns darkColor.\n     */\n    static int chooseLightDarkModeColorInt(int lightColor, int darkColor);\n\n    /**\n     * Closes the window.\n     * If a window listener has been set, a WINDOW_CLOSING and then\n     * WINDOW_CLOSED event is sent to it.\n     */\n    virtual void close();\n\n    /**\n     * Compares the pixels of this window to the contents of the image in the\n     * given file.\n     * The differences are displayed in a \"diff image\" window that highlights\n     * any differing pixels.\n     *\n     * TODO: implement\n     * @private\n     */\n    virtual void compareToImage(const std::string& filename, bool ignoreWindowSize = true) const;\n\n    /**\n     * Returns true if events can occur on the window.\n     * This will be true if the window has been initialized and is visible.\n     * @private\n     */\n    bool eventsEnabled() const override;\n\n    /**\n     * Returns a direct pointer to the window's internal graphical canvas\n     * on which shapes and objects are drawn.\n     * Use with care!\n     */\n    virtual GCanvas* getCanvas() const;\n\n    /**\n     * Returns the height of the window's central canvas area in pixels.\n     */\n    virtual double getCanvasHeight() const;\n\n    /**\n     * Returns the width and height of the window's central canvas area in pixels.\n     */\n    virtual GDimension getCanvasSize() const;\n\n    /**\n     * Returns the width of the window's central canvas area in pixels.\n     */\n    virtual double getCanvasWidth() const;\n\n    /**\n     * Returns a constant representing the action that will be taken when the\n     * user closes the window.\n     */\n    virtual CloseOperation getCloseOperation() const;\n\n    /**\n     * Returns the default color for backgrounds of interactors as a string.\n     * This is normally a light-grayish color, depending on the user's\n     * system settings.\n     * On some systems that are in \"dark mode\" this may be a color closer to black.\n     */\n    static std::string getDefaultInteractorBackgroundColor();\n\n    /**\n     * Returns the default color for text on interactors as an RGB integer.\n     * This is normally a light-grayish color, depending on the user's\n     * system settings.\n     * On some systems that are in \"dark mode\" this may be a color closer to black.\n     */\n    static int getDefaultInteractorBackgroundColorInt();\n\n    /**\n     * Returns the default color for text on interactors as a string.\n     * This is normally black or a nearly-black color, depending on the user's\n     * system settings.\n     * On some systems that are in \"dark mode\" this may be a color closer to white.\n     */\n    static std::string getDefaultInteractorTextColor();\n\n    /**\n     * Returns the default color for text on interactors as an RGB integer.\n     * This is normally black or a nearly-black color, depending on the user's\n     * system settings.\n     * On some systems that are in \"dark mode\" this may be a color closer to white.\n     */\n    static int getDefaultInteractorTextColorInt();\n\n    /**\n     * Returns the graphical object at the given 0-based index in the window's\n     * graphical canvas.\n     * @throw ErrorException if the index is out of bounds\n     */\n    virtual GObject* getGObject(int index) const;\n\n    /**\n     * Returns the top-most graphical object in the z-ordering in the window's\n     * graphical canvas that touches the given x/y pixel location.\n     * If no object touches the given location, returns nullptr.\n     */\n    virtual GObject* getGObjectAt(double x, double y) const;\n\n    /**\n     * Returns the total number of graphical objects in the window's canvas.\n     */\n    virtual int getGObjectCount() const;\n\n    /**\n     * Returns a pointer to the most recently created Qt window object.\n     * Not to be called by students.\n     * @private\n     */\n    static QMainWindow* getLastWindow();\n\n    /**\n     * Returns the x/y location of the top-left corner of the interior of the window on screen,\n     * excluding any onscreen window title bar and frame.\n     */\n    virtual GPoint getLocation() const;\n\n    /**\n     * Returns the total height of the window in pixels, excluding its title\n     * bar and borders.\n     */\n    virtual double getHeight() const;\n\n    /**\n     * Returns the size that the window would prefer to be.\n     * The window prefers to be exactly the right size to fit the interactors\n     * placed inside it at their own preferred sizes without stretching.\n     * This is the size that the window will be set to if you call pack().\n     */\n    virtual GDimension getPreferredSize() const;\n\n    /**\n     * Returns the height of the given region of the window in pixels.\n     */\n    virtual double getRegionHeight(Region region) const;\n\n    /**\n     * Returns the height of the given region of the window in pixels.\n     */\n    virtual double getRegionHeight(const std::string& region) const;\n\n    /**\n     * Returns the width and height of the given region of the window in pixels.\n     */\n    virtual GDimension getRegionSize(Region region) const;\n\n    /**\n     * Returns the width and height of the given region of the window in pixels.\n     */\n    virtual GDimension getRegionSize(const std::string& region) const;\n\n    /**\n     * Returns the width of the given region of the window in pixels.\n     */\n    virtual double getRegionWidth(Region region) const;\n\n    /**\n     * Returns the width of the given region of the window in pixels.\n     */\n    virtual double getRegionWidth(const std::string& region) const;\n\n    /**\n     * Returns the dots-per-inch of the screen.\n     * This is used when accounting for high-density screens.\n     */\n    static int getScreenDpi();\n\n    /**\n     * Returns the ratio of this screen's DPI compared to a normal low-DPI screen.\n     * This can be used to scale up graphics on high-density screens.\n     */\n    static double getScreenDpiScaleRatio();\n\n    /**\n     * Returns the height of the entire screen in pixels.\n     */\n    static double getScreenHeight();\n\n    /**\n     * Returns the width and height of the entire screen in pixels.\n     */\n    static GDimension getScreenSize();\n\n    /**\n     * Returns the width of the entire screen in pixels.\n     */\n    static double getScreenWidth();\n\n    /**\n     * Returns the total width and height of the window in pixels, excluding\n     * its title bar and borders.\n     */\n    virtual GDimension getSize() const;\n\n    /**\n     * Returns the title bar text for the window.\n     */\n    virtual std::string getTitle() const;\n\n    /* @inherit */\n    std::string getType() const override;\n\n    /**\n     * Returns an internal Qt widget representing the window.\n     * Clients do not need to use this method directly.\n     * @private\n     */\n    virtual QWidget* getWidget() const;\n\n    /**\n     * Returns the total width of the window in pixels, excluding its title\n     * bar and borders.\n     */\n    virtual double getWidth() const;\n\n    /**\n     * Returns the x location of the left edge of the interior of the window on screen,\n     * excluding any onscreen window title bar and frame.\n     */\n    virtual double getX() const;\n\n    /**\n     * Returns the y location of the top edge of the interior of the window on screen,\n     * excluding any onscreen window title bar and frame.\n     */\n    virtual double getY() const;\n\n    /**\n     * Returns true if this window has a toolbar.\n     */\n    virtual bool hasToolbar() const;\n\n    /**\n     * Makes the window be not visible on the screen.\n     * Equivalent to setVisible(false).\n     */\n    virtual void hide();\n\n    /**\n     * Returns true if the given x/y location is within the bounds of the entire\n     * window.\n     * Note that this is based on the entire window size including its title\n     * bar, menus, borders, etc.\n     * If you are trying to test for bounds for shapes in the window canvas area,\n     * use the inCanvasBounds method instead.\n     */\n    virtual bool inBounds(double x, double y) const;\n\n    /**\n     * Returns true if the given x/y location is within the bounds of the central\n     * canvas area of the window.\n     */\n    virtual bool inCanvasBounds(double x, double y) const;\n\n    /**\n     * Returns true if the user's computer is in \"dark mode.\"\n     * This is a popular dark color scheme mostly used on recent Macs.\n     * Our checking is imperfect and basically just creates a dummy widget\n     * and checks whether it has bright text and a dark background.\n     */\n    static bool isDarkMode();\n\n    /**\n     * Returns true if the window is in a maximized state, occupying the entire\n     * screen.\n     */\n    virtual bool isMaximized() const;\n\n    /**\n     * Returns true if the window is in a minimized (iconified) state, which\n     * often displays as the window being hidden except for a task bar icon.\n     */\n    virtual bool isMinimized() const;\n\n    /**\n     * Returns true if the window is currently open and visible on the screen.\n     */\n    virtual bool isOpen() const;\n\n    /* @inherit */\n    bool isRepaintImmediately() const override;\n\n    /**\n     * Returns true if the window allows itself to be resized.\n     * This is initially true but can be changed by calling setResizable(false).\n     */\n    virtual bool isResizable() const;\n\n    /**\n     * Returns true if the window is visible on the screen.\n     */\n    virtual bool isVisible() const;\n\n    /**\n     * Reads pixel data from the file with the given name and loads it into the\n     * window's canvas area.\n     * @throw ErrorException if the file is not found or cannot be loaded as an image\n     */\n    virtual void loadCanvasPixels(const std::string& filename);\n\n    /**\n     * Puts the window in a maximized state, occupying the entire screen.\n     */\n    virtual void maximize();\n\n    /**\n     * Puts the window in a minimized (iconified) state, which\n     * often displays as the window being hidden except for a task bar icon.\n     */\n    virtual void minimize();\n\n    /**\n     * Resizes the window to its preferred size.\n     * The window prefers to be exactly the right size to fit the interactors\n     * placed inside it at their own preferred sizes without stretching.\n     * This is the size that the window would return from a call to getPreferredSize.\n     */\n    virtual void pack();\n\n    /**\n     * Causes the current thread to pause itself for the given number of milliseconds.\n     * @throw ErrorException if ms is negative\n     */\n    virtual void pause(double ms);\n\n    /**\n     * Instructs the library to remember the window's x/y position so that if\n     * another window with the same title is opened in the future, it will\n     * automatically go back to that location.\n     * @private\n     */\n    virtual void rememberPosition();\n\n    /**\n     * Removes the given interactor from the window.\n     * This will work regardless of which region you added the interactor to.\n     * If the given interactor is not found in this container, has no effect.\n     * @throw ErrorException if the interactor is null\n     */\n    virtual void remove(GInteractor* interactor);\n\n    /**\n     * Removes the given interactor from the window.\n     * This will work regardless of which region you added the interactor to.\n     * If the given interactor is not found in this container, has no effect.\n     */\n    virtual void remove(GInteractor& interactor);\n\n    /**\n     * Removes the given graphical object from the canvas of this window,\n     * if it was present.\n     * @throw ErrorException if the graphical object is null\n     */\n    virtual void remove(GObject* obj);\n\n    /**\n     * Removes the given graphical object from the canvas of this window,\n     * if it was present.\n     */\n    virtual void remove(GObject& obj);\n\n    /**\n     * Removes the click listener from this window so that it will no longer\n     * call it when events occur.\n     */\n    virtual void removeClickListener();\n\n    /**\n     * Removes the given interactor from the given region within this window.\n     * If the given interactor is not found in the given region, has no effect.\n     * @throw ErrorException if the interactor is null\n     */\n    virtual void removeFromRegion(GInteractor* interactor, Region region);\n\n    /**\n     * Removes the given interactor from the given region within this window.\n     * If the given interactor is not found in the given region, has no effect.\n     * @throw ErrorException if the interactor is null\n     */\n    virtual void removeFromRegion(GInteractor* interactor, const std::string& region);\n\n    /**\n     * Removes the given interactor from the given region within this window.\n     * If the given interactor is not found in the given region, has no effect.\n     */\n    virtual void removeFromRegion(GInteractor& interactor, Region region);\n\n    /**\n     * Removes the given interactor from the given region within this window.\n     * If the given interactor is not found in the given region, has no effect.\n     */\n    virtual void removeFromRegion(GInteractor& interactor, const std::string& region);\n\n    /**\n     * Removes the key listener from this window so that it will no longer\n     * call it when events occur.\n     */\n    virtual void removeKeyListener();\n\n    /**\n     * Removes the menu listener from this window so that it will no longer\n     * call it when events occur.\n     */\n    virtual void removeMenuListener();\n\n    /**\n     * Removes the mouse listener from this window so that it will no longer\n     * call it when events occur.\n     */\n    virtual void removeMouseListener();\n\n    /**\n     * Removes the timer listener from this window so that it will no longer\n     * call it when events occur.\n     */\n    virtual void removeTimerListener();\n\n    /**\n     * Removes the toolbar from this window, if one was present.\n     */\n    virtual void removeToolbar();\n\n    /**\n     * Removes the window listener from this window so that it will no longer\n     * call it when events occur.\n     */\n    virtual void removeWindowListener();\n\n    /**\n     * Asks the system to assign the keyboard focus to the window, which brings\n     * it to the top and ensures that key events are delivered to the window.\n     * Clicking in the window automatically requests the focus.\n     */\n    virtual void requestFocus();\n\n    /**\n     * Puts the window in a normal state, neither minimized or maximized.\n     */\n    virtual void restore();\n\n    /**\n     * Writes the contents of the window's graphical canvas to the given output\n     * filename.  This will write all shapes from the foreground layer as well\n     * as all pixels from the background layer.\n     * @throw ErrorException if the file cannot be saved\n     */\n    virtual void saveCanvasPixels(const std::string& filename);\n\n    /* @inherit */\n    void setBackground(int color) override;\n\n    /* @inherit */\n    void setBackground(const std::string& color) override;\n\n    /**\n     * Resizes the window so that its central canvas region will occupy exactly\n     * the given height in pixels, without changing its width.\n     */\n    virtual void setCanvasHeight(double height);\n\n    /**\n     * Resizes the window so that its central canvas region will occupy exactly\n     * the given width and height in pixels.\n     */\n    virtual void setCanvasSize(double width, double height);\n\n    /**\n     * Resizes the window so that its central canvas region will occupy exactly\n     * the given width and height in pixels.\n     */\n    virtual void setCanvasSize(const GDimension& size);\n\n    /**\n     * Resizes the window so that its central canvas region will occupy exactly\n     * the given width in pixels, without changing its height.\n     */\n    virtual void setCanvasWidth(double width);\n\n    /**\n     * Sets a mouse listener on this window so that it will be called\n     * when the mouse is clicked on the window's canvas.\n     * Any existing click listener will be replaced.\n     * Note that this method is not how you listen to clicks on individual\n     * buttons and other interactors inside the window; to do that, call\n     * setActionListener and other such methods on those interactors individually.\n     */\n    virtual void setClickListener(GEventListener func);\n\n    /**\n     * Sets a mouse listener on this window so that it will be called\n     * when the mouse is clicked on the window's canvas.\n     * Any existing click listener will be replaced.\n     * Note that this method is not how you listen to clicks on individual\n     * buttons and other interactors inside the window; to do that, call\n     * setActionListener and other such methods on those interactors individually.\n     */\n    virtual void setClickListener(GEventListenerVoid func);\n\n    /**\n     * Sets what should happen when the window is closed.\n     */\n    virtual void setCloseOperation(CloseOperation op);\n\n    /**\n     * Sets whether the library's GUI system should shut down when the\n     * window is closed.\n     */\n    virtual void setExitOnClose(bool exitOnClose);\n\n    /**\n     * Sets the window's total height in pixels.\n     */\n    virtual void setHeight(double width);\n\n    /**\n     * Sets a key listener on this window so that it will be called\n     * when the user presses any key.\n     * Any existing key listener will be replaced.\n     */\n    virtual void setKeyListener(GEventListener func);\n\n    /**\n     * Sets a key listener on this window so that it will be called\n     * when the user presses any key.\n     * Any existing key listener will be replaced.\n     */\n    virtual void setKeyListener(GEventListenerVoid func);\n\n    /**\n     * Sets the window's top-left x/y location on the screen to the given coordinates.\n     */\n    virtual void setLocation(double x, double y);\n\n    /**\n     * Sets the window's top-left x/y location on the screen to the given point.\n     */\n    virtual void setLocation(const GPoint& p);\n\n    /**\n     * Sets whether the given item in the given menu is enabled or disabled.\n     * @throw ErrorException if the menu and/or item does not exist\n     */\n    virtual void setMenuItemEnabled(const std::string& menu, const std::string& item, bool enabled);\n\n    /**\n     * Sets a menu listener on this window so that it will be called\n     * when menu items are clicked, sending an ACTION_MENU action event.\n     * Any existing menu listener will be replaced.\n     */\n    virtual void setMenuListener(GEventListener func);\n\n    /**\n     * Sets a menu listener on this window so that it will be called\n     * when menu items are clicked.\n     * Any existing menu listener will be replaced.\n     */\n    virtual void setMenuListener(GEventListenerVoid func);\n\n    /**\n     * Sets a mouse listener on the window's canvas so that it will be called\n     * when the user moves or clicks the mouse on the canvas.\n     * Any existing mouse listener will be replaced.\n     */\n    virtual void setMouseListener(GEventListener func);\n\n    /**\n     * Sets a mouse listener on the window's canvas so that it will be called\n     * when the user moves or clicks the mouse on the canvas.\n     * Any existing mouse listener will be replaced.\n     */\n    virtual void setMouseListener(GEventListenerVoid func);\n\n    /**\n     * Sets the horizontal alignment of interactors in the given region of\n     * the window.\n     */\n    virtual void setRegionAlignment(Region region, HorizontalAlignment halign);\n\n    /**\n     * Sets the vertical alignment of interactors in the given region of\n     * the window.\n     */\n    virtual void setRegionAlignment(Region region, VerticalAlignment valign);\n\n    /**\n     * Sets the horizontal and vertical alignment of interactors in the given\n     * region of the window.\n     */\n    virtual void setRegionAlignment(Region region, HorizontalAlignment halign, VerticalAlignment valign);\n\n    /**\n     * Sets the horizontal and/or vertical alignment of interactors in the given\n     * region of the window.\n     */\n    virtual void setRegionAlignment(const std::string& region, const std::string& align);\n\n    /**\n     * Sets the horizontal and vertical alignment of interactors in the given\n     * region of the window.\n     */\n    virtual void setRegionAlignment(const std::string& region, const std::string& halign, const std::string& valign);\n\n    /**\n     * Sets the horizontal alignment of interactors in the given region of\n     * the window.\n     */\n    virtual void setRegionHorizontalAlignment(Region region, HorizontalAlignment halign);\n\n    /**\n     * Sets the horizontal alignment of interactors in the given region of\n     * the window.\n     */\n    virtual void setRegionHorizontalAlignment(const std::string& region, const std::string& halign);\n\n    /**\n     * Sets the vertical alignment of interactors in the given region of\n     * the window.\n     */\n    virtual void setRegionVerticalAlignment(const std::string& region, const std::string& valign);\n\n    /**\n     * Sets the vertical alignment of interactors in the given region of\n     * the window.\n     */\n    virtual void setRegionVerticalAlignment(Region region, VerticalAlignment valign);\n\n    /**\n     * Sets whether the window allows itself to be resized.\n     * Initially true.\n     */\n    virtual void setResizable(bool resizable);\n\n    /**\n     * Sets the window's total width and height in pixels.\n     * Note that this size includes the window's title bar, border, etc. as added\n     * by your operating system.\n     * If you actually want to draw shapes over a given width and height of pixels,\n     * you should instead use the setCanvasSize method.\n     */\n    virtual void setSize(double width, double height);\n\n    /**\n     * Sets the window's width and height in pixels.\n     * Note that this size includes the window's title bar, border, etc. as added\n     * by your operating system.\n     * If you actually want to draw shapes over a given width and height of pixels,\n     * you should instead use the setCanvasSize method.\n     */\n    virtual void setSize(const GDimension& size);\n\n    /**\n     * Sets a menu listener on this window so that it will be called\n     * when timer delays elapse, sending a timer event.\n     * Any existing timer listener will be replaced.\n     */\n    virtual void setTimerListener(double ms, GEventListener func);\n\n    /**\n     * Sets a menu listener on this window so that it will be called\n     * when timer delays elapse, sending a timer event.\n     * Any existing timer listener will be replaced.\n     */\n    virtual void setTimerListener(double ms, GEventListenerVoid func);\n\n    // TODO: setTimerListenerOnce?\n\n    /**\n     * Sets the window's title bar text to the given string.\n     * Equivalent to setWindowTitle.\n     */\n    virtual void setTitle(const std::string& title);\n\n    /**\n     * Sets whether the window can be seen on the screen.\n     * Initially true unless a visible value of false was passed to the window's\n     * constructor.\n     */\n    virtual void setVisible(bool visible);\n\n    /**\n     * Sets the window's total width in pixels.\n     */\n    virtual void setWidth(double width);\n\n    /**\n     * Sets the window to use the\n     */\n    virtual void setWindowIcon(const std::string& iconFile);\n\n    /**\n     * Sets a window listener on this window so that it will be called\n     * when window events occur, such as resizing or closing the window.\n     * Any existing action listener will be replaced.\n     */\n    virtual void setWindowListener(GEventListener func);\n\n    /**\n     * Sets a window listener on this window so that it will be called\n     * when window events occur, such as resizing or closing the window.\n     * Any existing action listener will be replaced.\n     */\n    virtual void setWindowListener(GEventListenerVoid func);\n\n    /**\n     * Sets the window's title bar text to the given string.\n     * Equivalent to setWindowTitle.\n     */\n    virtual void setWindowTitle(const std::string& title);\n\n    /**\n     * Sets the window's left x location on the screen to the given coordinate.\n     */\n    virtual void setX(double x);\n\n    /**\n     * Sets the window's top y location on the screen to the given coordinate.\n     */\n    virtual void setY(double y);\n\n    /**\n     * Sets the window to be visible on the screen.\n     * Equivalent to setVisible(true).\n     */\n    virtual void show();\n\n    /**\n     * Moves the window to the back of the z-ordering in the operating system,\n     * underneath any other windows that occupy the same pixels.\n     */\n    virtual void toBack();\n\n    /**\n     * Moves the window to the front of the z-ordering in the operating system,\n     * in front of any other windows that occupy the same pixels.\n     */\n    virtual void toFront();\n\nprotected:\n    /**\n     * @private\n     */\n    virtual void processKeyPressEventInternal(QKeyEvent* event);\n\nprivate:\n    Q_DISABLE_COPY(GWindow)\n\n    static _Internal_QMainWindow* _lastWindow;\n\n    void ensureForwardTarget() override;\n    void _init(double width, double height, bool visible);\n    static Region stringToRegion(const std::string& regionStr);\n\n    _Internal_QMainWindow* _iqmainwindow;\n    GContainer* _contentPane;\n    GCanvas* _canvas;\n    bool _resizable;\n    CloseOperation _closeOperation;\n    Map<std::string, QMenu*> _menuMap;\n    Map<std::string, QAction*> _menuActionMap;\n    QToolBar* _toolbar;\n\n    friend class GInteractor;\n    friend class _Internal_QMainWindow;\n};\n\n\n// global functions for compatibility\n\n/**\n * Converts a color name into an integer that encodes the\n * red, green, and blue components of the color.\n * See gcolor.h for more details about colors.\n */\nint convertColorToRGB(const std::string& colorName);\n\n/**\n * Converts an <code>rgb</code> value into a color name in the\n * form <code>\"#rrggbb\"</code>.  Each of the <code>rr</code>,\n * <code>gg</code>, and <code>bb</code> values are two-digit\n * hexadecimal numbers indicating the intensity of that component.\n * See gcolor.h for more details about colors.\n */\nstd::string convertRGBToColor(int rgb);\n\n/**\n * Closes all graphics windows and exits from the application without\n * waiting for any additional user interaction.\n */\nvoid exitGraphics();\n\n/**\n * Returns the height of the entire display screen.\n */\ndouble getScreenHeight();\n\n/**\n * Returns the width/height of the entire display screen.\n */\nGDimension getScreenSize();\n\n/**\n * Returns the width of the entire display screen.\n */\ndouble getScreenWidth();\n\n/**\n * Pauses for the indicated number of milliseconds.  This function is\n * useful for animation where the motion would otherwise be too fast.\n */\nvoid pause(double milliseconds);\n\n/**\n * Issues a request to update the most recently created graphics window.\n * You can also call the repaint() method on a window directly to repaint that window.\n */\nvoid repaint();\n\n\n/**\n * Internal class; not to be used by clients.\n * @private\n */\nclass _Internal_QMainWindow : public QMainWindow {\n    Q_OBJECT\n\npublic:\n    _Internal_QMainWindow(GWindow* gwindow, QWidget* parent = nullptr);\n\n    void changeEvent(QEvent* event) override;\n    void closeEvent(QCloseEvent* event) override;\n    void keyPressEvent(QKeyEvent* event) override;\n    void resizeEvent(QResizeEvent* event) override;\n    void timerEvent(QTimerEvent* event) override;\n    virtual bool timerExists(int id = -1);\n    virtual int timerStart(double ms);\n    virtual void timerStop(int id = -1);\n\npublic slots:\n    void handleMenuAction(const std::string& menu, const std::string& item);\n\nprivate:\n    GWindow* _gwindow;\n    Set<int> _timerIDs;\n\n    void processTimerEvent();\n\n    friend class GWindow;\n};\n\n#endif // _gwindow_h\n"
  },
  {
    "path": "Library/graphics/moc_unity.cpp",
    "content": "// Combine these into one unity file to improve moc compilation speed\n#include \"moc_gbrowserpane.cpp\"\n#include \"moc_gbutton.cpp\"\n#include \"moc_gcanvas.cpp\"\n#include \"moc_gcheckbox.cpp\"\n#include \"moc_gchooser.cpp\"\n#include \"moc_gcontainer.cpp\"\n#include \"moc_geventqueue.cpp\"\n#include \"moc_glabel.cpp\"\n#include \"moc_gradiobutton.cpp\"\n#include \"moc_gscrollbar.cpp\"\n#include \"moc_gscrollpane.cpp\"\n#include \"moc_gslider.cpp\"\n#include \"moc_gspacer.cpp\"\n#include \"moc_gtable.cpp\"\n#include \"moc_gtextarea.cpp\"\n#include \"moc_gtextfield.cpp\"\n#include \"moc_gwindow.cpp\"\n#include \"moc_qtgui.cpp\"\n"
  },
  {
    "path": "Library/graphics/qtgui.cpp",
    "content": "/*\n * File: qtgui.cpp\n * ---------------\n *\n * @author Marty Stepp\n * @version 2018/08/23\n * - renamed to qtgui.cpp\n * @version 2018/07/03\n * - initial version\n */\n\n#include \"qtgui.h\"\n#include <QEvent>\n#include <QThread>\n#include \"consoletext.h\"\n#include \"error.h\"\n#include \"exceptions.h\"\n#include \"gconsolewindow.h\"\n#include \"gthread.h\"\n#include \"private/init.h\"\n\n// QSPLApplication members\nQSPLApplication::QSPLApplication(int& argc, char *argv[])\n        : QApplication(argc, argv) {\n    // empty\n}\n\nbool QSPLApplication::notify(QObject* receiver, QEvent* e) {\n    // could use try/catch here to handle exceptions on gui thread\n    // but this disguises where came from (loses backtrace)\n    return QApplication::notify(receiver, e);   // call super\n}\n\n\n// QtGui members\nQSPLApplication* QtGui::_app = nullptr;\nQtGui* QtGui::_instance = nullptr;\n\nQtGui::QtGui(int argc, char **argv) {\n    connect(GEventQueue::instance(), SIGNAL(eventReady()), this, SLOT(processEventFromQueue()));\n    Q_INIT_RESOURCE(images);\n    _argc = argc;\n    _argv = argv;\n}\n\nvoid QtGui::createInstance(int argc, char **argv) {\n    if (_instance) {\n        error(\"Attempt to re-create already running Qt GUI.\");\n    }\n    GThread::ensureThatThisIsTheQtGuiThread(\"Qt GUI must be created on the main thread.\");\n    _instance = new QtGui(argc, argv);\n    _app = new QSPLApplication(_instance->_argc, _instance->_argv);\n    _app->setQuitOnLastWindowClosed(false);\n}\n\nvoid QtGui::exitGraphics(int exitCode) {\n    static bool already_exited = false;\n    if (already_exited) return;\n    already_exited = true;\n\n    if (exitCode == EXITING_DUE_TO_WINDOW_CLOSE) {\n        std::cout << std::endl << std::endl << \"[Program exiting due to window close event]\" << std::endl;\n        exitCode = 0;\n    }\n    if (_app) {\n        auto saved = _app;\n        _app = nullptr;\n        saved->quit();\n        delete saved;\n        _Exit(exitCode);  // exit w/o calling destructors (avoid order problems between static/tls)\n        // sad news: _Exit on mingw *does* call some dtors (in violation of C++ standard)\n        // https://github.com/qt/qtbase/blob/fd1e3fe0d77e1faf6572790d4c8cef4fabc6e54c/src/corelib/global/qassert.cpp#L29C58-L34C34\n        // from what I can tell, not currently causing problem but if it becomes one, switch to abort/terminate\n    } else {\n        std::exit(exitCode);\n    }\n}\n\nint QtGui::getArgc() const {\n    return _argc;\n}\n\nchar** QtGui::getArgv() const {\n    return _argv;\n}\n\nQtGui* QtGui::instance() {\n    if (!_instance) {\n        error(\"No Qt GUI instance!\");\n    }\n    return _instance;\n}\n\nvoid QtGui::processEventFromQueue() {\n    if (!GEventQueue::instance()->isEmpty()) {\n        GThunk thunk = GEventQueue::instance()->peek();\n        thunk();\n        GEventQueue::instance()->dequeue();\n    }\n}\n\n// this should be called by the Qt main thread\nvoid QtGui::startBackgroundEventLoop(GThunkInt mainFunc, bool exitAfter) {\n    GThread::ensureThatThisIsTheQtGuiThread(\"QtGui::startBackgroundEventLoop\");\n    native_set_thread_name(\"Qt GUI Event Loop\");\n    // start student's main function in its own second thread\n\n    if (!GThread::studentThreadExists()) {\n        GThread::startStudentThread([&]() -> int {\n            exceptions::setTopLevelExceptionHandlerEnabled(true);\n            int result = mainFunc();\n            stanfordcpplib::studentThreadHasExited(\"Completed\");\n            return result;\n        });\n\n        startEventLoop(exitAfter);   // begin Qt event loop on main thread\n    }\n}\n\n// this should be called by the Qt main thread\nvoid QtGui::startEventLoop(bool exitAfter) {\n    GThread::ensureThatThisIsTheQtGuiThread(\"QtGui::startEventLoop\");\n    if (!_app) {\n        error(\"QtGui::startEventLoop: need to initialize Qt first\");\n    }\n\n    // start Qt event loop on main thread;\n    // Qt GUI main thread blocks here until student main() finishes (in its own thread)\n    int exitCode = _app->exec();\n\n    // if I get here, it means an \"exit on close\" window was just closed;\n    // it's time to shut down the Qt system and exit the C++ program\n    if (exitAfter) {\n        exitGraphics(exitCode);\n    }\n}\n\n\n\nnamespace stanfordcpplib {\nvoid studentThreadHasExited(const std::string& reason) {\n    // briefly wait for the console to finish printing any/all output\n    GThread::msleep(10);\n\n    // if I get here, student's main() has finished running;\n    // indicate this by showing a completed title on the graphical console\n    if (getConsoleEnabled()) {\n#ifndef SPL_HEADLESS_MODE\n        GConsoleWindow* console = getConsoleWindow();\n        if (console) {\n            console->shutdown(reason);\n        }\n#endif // SPL_HEADLESS_MODE\n    } else {\n        // need to exit here else program will not terminate\n        // BUGFIX: no, this is not needed and is bad; it exits the window too soon; disable\n        // QtGui::instance()->exitGraphics(result);\n    }\n}\n} // namespace stanfordcpplib\n\n\n"
  },
  {
    "path": "Library/graphics/qtgui.h",
    "content": "/*\n * File: qtgui.h\n * -------------\n *\n * @author Marty Stepp\n * @version 2018/09/09\n * - added doc comments for new documentation generation\n * @version 2018/08/23\n * - renamed to qtgui.h\n * @version 2018/07/03\n * - initial version\n */\n\n\n#ifndef _qtgui_h\n#define _qtgui_h\n\n#include <string>\n#include <QApplication>\n#include <QObject>\n\n#include \"gthread.h\"\n#include \"gtypes.h\"\n\n#define EXITING_DUE_TO_WINDOW_CLOSE 106\n\nclass GWindow;\n\nclass QSPLApplication : public QApplication {\npublic:\n    QSPLApplication(int& argc, char *argv[]);\n    bool notify(QObject* receiver, QEvent* e) override;\n};\n\n\n/**\n * This class contains functionality for initializing and managing the overall\n * Qt-based GUI system of the library.\n * Students and clients generally do not need to interact with this class\n * directly.\n * @private\n */\nclass QtGui : public QObject {\n    Q_OBJECT\n\npublic:\n    /**\n     * Creates and initializes the Qt graphics subsystem.\n     * Clients do not need to call this directly because it is called\n     * automatically by the library before main() runs.\n     */\n    static void createInstance(int argc, char **argv);\n\n    /**\n     * Shuts down the Qt graphics system.\n     */\n    void exitGraphics(int exitCode = 0);\n\n    /**\n     * Returns the count of arguments passed to the main() function.\n     * The string arguments themselves can be examined using getArgv.\n     */\n    int getArgc() const;\n\n    /**\n     * Returns the string arguments passed to the main() function.\n     * The number of arguments is found using getArgc.\n     */\n    char** getArgv() const;\n\n    /**\n     * Returns a pointer to the QtGui object for the graphical library.\n     */\n    static QtGui* instance();\n\n    /**\n     * Runs an event loop that calls the given function that returns an int.\n     * The event loop will block until the graphical program is done running.\n     * If the exitAfter argument is true, calls exitGraphics after the event\n     * loop is finished.\n     */\n    void startBackgroundEventLoop(GThunkInt mainFunc, bool exitAfter = true);\n\n    void startEventLoop(bool exitAfter = true);\n\n\npublic slots:\n    /**\n     * A slot used by the Qt event queue.\n     */\n    void processEventFromQueue();\n\nprivate:\n    Q_DISABLE_COPY(QtGui)\n\n    QtGui(int argc, char **argv);   // forbid construction\n\n    int _argc;\n    char** _argv;\n\n    static QSPLApplication* _app;\n    static QThread* _qtGuiThread;\n    static GThread* _studentThread;\n    static QtGui* _instance;\n\n    friend class GEventQueue;\n    friend class GThread;\n    friend class GWindow;\n};\n\nnamespace stanfordcpplib {\n/*\n * Code that runs when student thread shuts down.\n * @private\n */\nvoid studentThreadHasExited(const std::string& reason);\n} // namespace stanfordcpplib\n\n#endif // _qtgui_h\n"
  },
  {
    "path": "Library/images.qrc",
    "content": "<!DOCTYPE RCC><RCC version=\"1.0\">\n<qresource prefix=\"/\">\n    <file alias=\"stanford\">resources/splicon-large.png</file>\n\n    <file alias=\"about\">resources/about.gif</file>\n    <file alias=\"background_color\">resources/background_color.gif</file>\n    <file alias=\"clear_console\">resources/clear_console.gif</file>\n    <file alias=\"compare_output\">resources/compare_output.gif</file>\n    <file alias=\"copy\">resources/copy.gif</file>\n    <file alias=\"cut\">resources/cut.gif</file>\n    <file alias=\"font\">resources/font.gif</file>\n    <file alias=\"load_input_script\">resources/load_input_script.gif</file>\n    <file alias=\"paste\">resources/paste.gif</file>\n    <file alias=\"print\">resources/print.gif</file>\n    <file alias=\"quit\">resources/quit.gif</file>\n    <file alias=\"save\">resources/save.gif</file>\n    <file alias=\"save_as\">resources/save_as.gif</file>\n    <file alias=\"select_all\">resources/select_all.gif</file>\n    <file alias=\"text_color\">resources/text_color.gif</file>\n</qresource>\n\n</RCC>"
  },
  {
    "path": "Library/io/filelib.cpp",
    "content": "/*\n * File: filelib.cpp\n * -----------------\n * This file implements the filelib.h interface.\n * Platform-dependent functions are handled through filelib_* functions\n * defined in filelibunix.cpp and filelibwindows.cpp.\n * \n * @version 2016/11/20\n * - small bug fix in readEntireStream method (failed for non-text files)\n * @version 2016/11/12\n * - added fileSize, readEntireStream\n * @version 2016/08/12\n * - added second overload of openFileDialog that accepts path parameter\n * @version 2015/07/05\n * - removed static global Platform variable, replaced by getPlatform as needed\n * - moved appendSpace function to simpio\n * @version 2015/04/12\n * - added promptUserForFile overload without stream parameter\n * @version 2014/10/19\n * - alphabetized function declarations\n * - converted many funcs to take const string& rather than string for efficiency\n * - added listDirectory overload that returns a Vector\n * @version 2014/10/08\n * - removed 'using namespace' statement\n */\n\n#include \"filelib.h\"\n#include <algorithm>\n#include <cctype>\n#include <cstdio>\n#include \"private/filelibunix.cpp\"\n#include \"private/filelibwindows.cpp\"\n#include \"gfilechooser.h\"\n\n/* Prototypes */\n\nstatic void splitPath(const std::string& path, Vector<std::string> list);\nstatic bool recursiveMatch(const std::string& str, int sx, const std::string& pattern, int px);\n\n/* Implementations */\n\nvoid createDirectory(const std::string& path) {\n    return platform::filelib_createDirectory(expandPathname(path));\n}\n\nvoid createDirectoryPath(const std::string& path) {\n    size_t cp = 0;\n    if (path == \"\") return;\n    std::string expandedPath = expandPathname(path);\n    char sep = getDirectoryPathSeparator()[0];\n    if (expandedPath.substr(1, 2) == \":\\\\\") { // Windows drive letter followed by ':\\'\n        cp = 2;\n    }\n    while ((cp = expandedPath.find(sep, cp + 1)) != std::string::npos) {\n       createDirectory(expandedPath.substr(0, cp));\n    }\n    createDirectory(expandedPath);\n}\n\nstd::string defaultExtension(const std::string& filename, const std::string& ext) {\n    std::string extCopy = ext;\n    bool force = (extCopy[0] == '*');\n    if (force) extCopy = extCopy.substr(1);\n    int dot = -1;\n    int len = filename.length();\n    for (int i = 0; i < len; i++) {\n        char ch = filename[i];\n        if (ch == '.') dot = i;\n        if (ch == '/' || ch == '\\\\') dot = -1;\n    }\n    if (dot == -1) {\n        force = true;\n        dot = len;\n    }\n    if (force) {\n        return filename.substr(0, dot) + extCopy;\n    } else {\n        return filename;\n    }\n}\n\nvoid deleteFile(const std::string& filename) {\n    platform::filelib_deleteFile(expandPathname(filename));\n}\n\nstd::string expandPathname(const std::string& filename) {\n    return platform::filelib_expandPathname(filename);\n}\n\nbool fileExists(const std::string& filename) {\n    return platform::filelib_fileExists(filename);\n}\n\nint fileSize(const std::string& filename) {\n    std::ifstream input;\n    input.open(filename.c_str(), std::ifstream::binary);\n    if (input.fail()) {\n        return -1;\n    } else {\n        input.seekg(0, std::ifstream::end);\n        return (int) input.tellg();\n    }\n}\n\nstd::string getAbsolutePath(const std::string& path) {\n    return platform::filelib_getAbsolutePath(path);\n}\n\nstd::string getCurrentDirectory() {\n    return platform::filelib_getCurrentDirectory();\n}\n\nstd::string getDirectoryPathSeparator() {\n    return platform::filelib_getDirectoryPathSeparator();\n}\n\nstd::string getExtension(const std::string& filename) {\n    int dot = -1;\n    int len = filename.length();\n    for (int i = 0; i < len; i++) {\n        char ch = filename[i];\n        if (ch == '.') dot = i;\n        if (ch == '/' || ch == '\\\\') dot = -1;\n    }\n    if (dot == -1) {\n        return \"\";\n    } else {\n        return filename.substr(dot);\n    }\n}\n\nstd::string getHead(const std::string& filename) {\n    size_t slash = std::string::npos;\n    size_t len = filename.length();\n    for (size_t i = 0; i < len; i++) {\n        char ch = filename[i];\n        if (ch == '/' || ch == '\\\\') slash = i;\n    }\n    if (slash == std::string::npos) {\n        return \"\";\n    } else if (slash == 0) {\n        return \"/\";\n    } else {\n        return filename.substr(0, slash);\n    }\n}\n\nstd::string getRoot(const std::string& filename) {\n    int dot = -1;\n    int len = filename.length();\n    for (int i = 0; i < len; i++) {\n        char ch = filename[i];\n        if (ch == '.') dot = i;\n        if (ch == '/' || ch == '\\\\') dot = -1;\n    }\n    if (dot == -1) {\n        return filename;\n    } else {\n        return filename.substr(0, dot);\n    }\n}\n\nstd::string getSearchPathSeparator() {\n    return platform::filelib_getSearchPathSeparator();\n}\n\nstd::string getTail(const std::string& filename) {\n    size_t slash = std::string::npos;\n    size_t len = filename.length();\n    for (size_t i = 0; i < len; i++) {\n        char ch = filename[i];\n        if (ch == '/' || ch == '\\\\') slash = i;\n    }\n    if (slash == std::string::npos) {\n        return filename;\n    } else {\n        return filename.substr(slash + 1);\n    }\n}\n\nstd::string getTempDirectory() {\n    return platform::filelib_getTempDirectory();\n}\n\nbool isDirectory(const std::string& filename) {\n    return platform::filelib_isDirectory(expandPathname(filename));\n}\n\nbool isFile(const std::string& filename) {\n    return platform::filelib_isFile(expandPathname(filename));\n}\n\nVector<std::string> listDirectory(const std::string& path) {\n    Vector<std::string> vec;\n    platform::filelib_listDirectory(expandPathname(path), vec);\n    return vec;\n}\n\nbool matchFilenamePattern(const std::string& filename, const std::string& pattern) {\n    return recursiveMatch(filename, 0, pattern, 0);\n}\n\nbool openFile(std::ifstream& stream, const std::string& filename) {\n    stream.clear();\n    stream.open(expandPathname(filename));\n    return !stream.fail();\n}\n\nbool openFile(std::ofstream& stream, const std::string& filename) {\n    stream.clear();\n    stream.open(expandPathname(filename));\n    return !stream.fail();\n}\n\nstd::string chooseFilenameDialog(const std::string& title,\n                           const std::string& path,\n                           const std::string& fileFilter) {\n    return GFileChooser::showOpenDialog(title, path, fileFilter);\n}\n\nstd::string findOnPath(const std::string& path,\n                       const std::string& filename) {\n    Vector<std::string> paths;\n    splitPath(path, paths);\n    for (std::string dir : paths) {\n        std::string pathname = dir + \"/\" + filename;\n        if (fileExists(pathname)) return pathname;\n    }\n    return \"\";\n}\n\nstd::string readEntire(std::istream& input) {\n    std::ostringstream output;\n    while (true) {\n        int ch = input.get();\n        if (input.fail()) {\n            break;\n        }\n        output.put(ch);\n    }\n    return output.str();\n}\n\nVector<std::string> readLines(std::istream& input) {\n    Vector<std::string> lines;\n    while (true) {\n        std::string line;\n        getline(input, line);\n        if (input.fail()) break;\n        lines.add(line);\n    }\n    return lines;\n}\n\nvoid renameFile(const std::string& oldname, const std::string& newname) {\n    std::string oldExpand = expandPathname(oldname);\n    std::string newExpand = expandPathname(newname);\n    rename(oldExpand.c_str(), newExpand.c_str());\n}\n\nvoid rewindStream(std::istream& input) {\n    input.clear();                  // removes any current eof/failure flags\n    input.seekg(0, std::ios::beg);  // tells the stream to seek back to the beginning\n}\n\nvoid setCurrentDirectory(const std::string& path) {\n    return platform::filelib_setCurrentDirectory(path);\n}\n\nbool writeEntireFile(const std::string& filename,\n                     const std::string& text,\n                     bool append) {\n    std::ofstream output;\n    if (append) {\n        output.open(filename.c_str(), std::ios_base::out | std::ios_base::app);\n    } else {\n        output.open(filename.c_str());\n    }\n    if (output.fail()) {\n        return false;\n    }\n    output << text;\n    output.close();\n    return !output.fail();\n}\n\n/* Private functions */\n\nstatic void splitPath(const std::string& path, Vector<std::string> list) {\n    char sep = (path.find(';') == std::string::npos) ? ':' : ';';\n    std::string pathCopy = path + sep;\n    size_t start = 0;\n    while (true) {\n        size_t finish = pathCopy.find(sep, start);\n        if (finish == std::string::npos) break;\n        if (finish > start + 1) {\n            list.add(pathCopy.substr(start, finish - start - 1));\n        }\n        start = finish + 1;\n    }\n}\n\nstatic bool recursiveMatch(const std::string& str, int sx, const std::string& pattern, int px) {\n    int slen = str.length();\n    int plen = pattern.length();\n    if (px == plen) return (sx == slen);\n    char pch = pattern[px];\n    if (pch == '*') {\n        for (int i = sx; i <= slen; i++) {\n            if (recursiveMatch(str, i, pattern, px + 1)) return true;\n        }\n        return false;\n    }\n    if (sx == slen) return false;\n    char sch = str[sx];\n    if (pch == '[') {\n        bool match = false;\n        bool invert = false;\n        px++;\n        if (px == plen) {\n            error(\"matchFilenamePattern: missing ]\");\n        }\n        if (pattern[px] == '^') {\n            px++;\n            invert = true;\n        }\n        while (px < plen && pattern[px] != ']') {\n            if (px + 2 < plen && pattern[px + 1] == '-') {\n                match |= (sch >= pattern[px] && sch <= pattern[px + 2]);\n                px += 3;\n            } else {\n                match |= (sch == pattern[px]);\n                px++;\n            }\n        }\n        if (px == plen) {\n            error(\"matchFilenamePattern: missing ]\");\n        }\n        if (match == invert) return false;\n    } else if (pch != '?') {\n        if (pch != sch) return false;\n    }\n    return recursiveMatch(str, sx + 1, pattern, px + 1);\n}\n"
  },
  {
    "path": "Library/io/filelib.h",
    "content": "/*\n * File: filelib.h\n * ---------------\n * This file exports a standardized set of tools for working with\n * files.  The library offers at least some portability across the\n * file systems used in the three supported platforms: Mac OSX,\n * Windows, and Linux.  Directory and search paths are allowed to\n * contain separators in any of the supported styles, which usually\n * makes it possible to use the same code on different platforms.\n */\n\n\n#ifndef _filelib_h\n#define _filelib_h\n\n#include <iostream>\n#include <fstream>\n#include <string>\n\n#include \"vector.h\"\n\n/**\n * Opens a dialog that allows the user to choose a file name.\n * The <code>title</code> parameter is displayed in the dialog title.\n * The <code>path</code> parameter is used to set the working directory.\n * If the <code>path</code> is omitted, the dialog begins in the current directory.\n * The optional <code>fileFilter</code> string limits the user\n * selection to those files matching the filter string, e.g.  \"*.gif,*.jpg,*.png\".\n */\nstd::string chooseFilenameDialog(const std::string& title = \"Open File ...\",\n                                 const std::string& path = \"\",\n                                 const std::string& fileFilter = \"\");\n\n/**\n * Creates a new directory for the specified path.  The\n * <code>createDirectory</code> function does not report an error if\n * the directory already exists.  Unlike <code>createDirectoryPath</code>,\n * <code>createDirectory</code> does not create missing directories\n * along the path.\n * @throw ErrorException if some component of <code>path</code> does not exist\n */\nvoid createDirectory(const std::string& path);\n\n/**\n * Creates a new directory for the specified path.   If intermediate\n * components of <code>path</code> do not exist, this function creates\n * them as needed.\n */\nvoid createDirectoryPath(const std::string& path);\n\n/**\n * Adds an extension to a file name if none already exists.  If the\n * <code>extension</code> argument begins with a leading <code>*</code>,\n * any existing extension in <code>filename</code> is replaced by\n * <code>ext</code>.\n */\nstd::string defaultExtension(const std::string& filename, const std::string& ext);\n\n/**\n * Deletes the specified file.\n * @throw ErrorException if the file does not exist or cannot be deleted\n */\nvoid deleteFile(const std::string& filename);\n\n/**\n * Expands a filename into a canonical name for the platform.\n */\nstd::string expandPathname(const std::string& filename);\n\n/**\n * Returns <code>true</code> if the specified file exists.\n */\nbool fileExists(const std::string& filename);\n\n/**\n * Returns the size of the given file in bytes.\n * Returns -1 if the file does not exist or cannot be read.\n */\nint fileSize(const std::string& filename);\n\n/**\n * Returns the canonical name of a file found using a search path.\n * If <code>findOnPath</code> is successful, it returns the first path\n * name on the search path for which filename exists.\n * The <code>path</code> argument consists of a list of directories\n * that are prepended to the filename, unless <code>filename</code>\n * begins with an absolute directory marker, such as <code>/</code>\n * or <code>~</code>. The directories in the search path may be\n * separated either by colons (Unix or Mac OS) or semicolons (Windows).\n *  If no matching file is found, <code>findOnPath</code> returns the empty string.\n */\nstd::string findOnPath(const std::string& path, const std::string& filename);\n\n/**\n * Returns an absolute filename for the given file or directory.\n * This converts from, for example, \"temp/foo.txt\" to \"/Users/jsmith12/Documents/temp/foo.txt\".\n */\nstd::string getAbsolutePath(const std::string& path);\n\n/**\n * Returns an absolute filename for the current directory.\n */\nstd::string getCurrentDirectory();\n\n/**\n * Returns the standard directory path separator used on this platform.\n */\nstd::string getDirectoryPathSeparator();\n\n/**\n * Returns the extension of <code>filename</code>.  The extension\n * consists of the separating dot and all subsequent characters.\n * If no dot exists in the final component, <code>getExtension</code>\n * returns the empty string.  These semantics ensure that concatenating\n * the root and the extension always returns the original filename.\n */\nstd::string getExtension(const std::string& filename);\n\n/**\n * Returns all but the last component of a path name.  The components\n * of the path name can be separated by any of the directory path\n * separators (forward or reverse slashes).  The special cases are\n * illustrated by the following examples:\n *\n *<pre>\n *    getHead(\"a/b\")  = \"a\"     getTail(\"a/b\")   = \"b\"\n *    getHead(\"a\")    = \"\"      getTail(\"a\")     = \"a\"\n *    getHead(\"/a\")   = \"/\"     getTail(\"/a\")    = \"a\"\n *    getHead(\"/\")    = \"/\"     getTail(\"/\")     = \"\"\n *</pre>\n */\nstd::string getHead(const std::string& filename);\n\n/**\n * Returns the root of <code>filename</code>.  The root consists\n * of everything in <code>filename</code> up to the last dot and\n * the subsequent extension.  If no dot appears in the final component\n * of the filename, <code>getRoot</code> returns the entire name.\n */\nstd::string getRoot(const std::string& filename);\n\n/**\n * Returns the standard search path separator used on this platform.\n */\nstd::string getSearchPathSeparator();\n\n/**\n * Returns the last component of a path name.  The components of the\n * path name can be separated by any of the directory path separators\n * (forward or reverse slashes).  For details on the interpretation of\n * special cases, see the comments for the <code>getHead</code> function.\n */\nstd::string getTail(const std::string& filename);\n\n/**\n * Returns the operating system's \"temp\" folder.\n * Can be useful if your program needs to store temporary files.\n */\nstd::string getTempDirectory();\n\n/**\n * Returns <code>true</code> if the specified file is a directory.\n */\nbool isDirectory(const std::string& filename);\n\n/**\n * Returns <code>true</code> if the specified file is a regular file,\n * not a symbolic link or directory.\n */\nbool isFile(const std::string& filename);\n\n/**\n * Adds an alphabetized list of the files in the specified directory\n * to a vector that is returned.  This list excludes the\n * names <code>.</code> and <code>..</code> entries.\n */\nVector<std::string> listDirectory(const std::string& path);\n\n/**\n * Determines whether the filename matches the specified pattern.  The\n * pattern string is interpreted in much the same way that a Unix shell\n * expands filenames and supports the following wildcard options:\n *\n *<pre>\n *    ?      Matches any single character\n *    *      Matches any sequence of characters\n *    [...]  Matches any of the specified characters\n *    [^...] Matches any character <i>except</i> the specified ones\n *</pre>\n *\n * The last two options allow a range of characters to be specified in the\n * form <code>a-z</code>.\n */\nbool matchFilenamePattern(const std::string& filename, const std::string& pattern);\n\n/**\n * Opens the file input stream <code>stream</code> using the specified\n * filename.  If the operation succeeds, <code>openFile</code>\n * returns <code>true</code>; if it fails, <code>openFile</code> sets\n * the failure flag in the stream and returns <code>false</code>.\n */\nbool openFile(std::ifstream& stream, const std::string& filename);\n\n/**\n * Opens the file output stream <code>stream</code> using the specified\n * filename.  If the operation succeeds, <code>openFile</code>\n * returns <code>true</code>; if it fails, <code>openFile</code> sets\n * the failure flag in the stream and returns <code>false</code>.\n */\nbool openFile(std::ofstream& stream, const std::string& filename);\n\n/**\n * Reads the contents of the given stream until its end and returns them as\n * a string.  The client is responsible for opening and closing the stream.\n */\nstd::string readEntire(std::istream& input);\n\n/**\n * Reads the entire contents of the specified input stream into the\n * string Vector <code>lines</code>.  The client is responsible for\n * opening and closing the stream.\n */\nVector<std::string> readLines(std::istream& input);\n\n/**\n * Renames a file.\n * @throw ErrorException if the old file does not exist, cannot be read,\n *        the new file name already exists,\n *        or the old file cannot otherwise be renamed to the new file name\n */\nvoid renameFile(const std::string& oldname, const std::string& newname);\n\n/**\n * Moves the given input stream back to its beginning, so that it can\n * be read again from start to finish.\n */\nvoid rewindStream(std::istream& input);\n\n/**\n * Changes the current directory to the specified path.\n */\nvoid setCurrentDirectory(const std::string& path);\n\n/**\n * Opens the given file and writes the given text into it.\n * Normally this function replaces any previous contents of the file, but\n * if the optional 'append' parameter is passed, the given text is added\n * at the end of the file, retaining any previous contents.\n * Returns true if the write was successful and false if the file was unable\n * to be opened for writing.\n */\nbool writeEntireFile(const std::string& filename,\n                     const std::string& text,\n                     bool append = false);\n\n/**\n * Platform-dependent functions that differ by operating system.\n * @private\n */\nnamespace platform {\n    void filelib_createDirectory(const std::string& path);\n    void filelib_deleteFile(const std::string& path);\n    std::string filelib_expandPathname(const std::string& filename);\n    bool filelib_fileExists(const std::string& filename);\n    std::string filelib_getAbsolutePath(const std::string& path);\n    std::string filelib_getCurrentDirectory();\n    std::string filelib_getDirectoryPathSeparator();\n    std::string filelib_getSearchPathSeparator();\n    std::string filelib_getTempDirectory();\n    bool filelib_isDirectory(const std::string& filename);\n    bool filelib_isFile(const std::string& filename);\n    void filelib_listDirectory(const std::string& path, Vector<std::string>& list);\n    void filelib_setCurrentDirectory(const std::string& path);\n}\n\n#endif // _filelib_h\n"
  },
  {
    "path": "Library/io/simpio.cpp",
    "content": "/*\n * File: simpio.cpp\n * ----------------\n * This file implements the simpio.h interface.\n * \n * @version 2016/09/29\n * - added getDouble method\n * @version 2015/07/05\n * - increased visibility of appendSpace function used by various IO\n *   prompting functions (no longer static)\n * @version 2014/10/19\n * - alphabetized functions\n * - converted many funcs to take const string& rather than string for efficiency\n * @version 2014/10/08\n * - removed 'using namespace' statement\n */\n\n#include \"simpio.h\"\n#include <cctype>\n#include <fstream>\n#include <iostream>\n#include <sstream>\n#include <string>\n#include \"error.h\"\n#include \"strlib.h\"\n#include \"filelib.h\"\n#include \"private/static.h\"\n\nSTATIC_CONST_VARIABLE_DECLARE(std::string, GETCHAR_DEFAULT_PROMPT, \"Enter a character: \")\nSTATIC_CONST_VARIABLE_DECLARE(std::string, GETCHAR_DEFAULT_REPROMPT, \"You must type a single character. Try again.\")\nSTATIC_CONST_VARIABLE_DECLARE(std::string, GETINTEGER_DEFAULT_PROMPT, \"Enter an integer: \")\nSTATIC_CONST_VARIABLE_DECLARE(std::string, GETINTEGER_DEFAULT_REPROMPT, \"Illegal integer format. Try again.\")\nSTATIC_CONST_VARIABLE_DECLARE(std::string, GETREAL_DEFAULT_PROMPT, \"Enter a number: \")\nSTATIC_CONST_VARIABLE_DECLARE(std::string, GETREAL_DEFAULT_REPROMPT, \"Illegal numeric format. Try again.\")\nSTATIC_CONST_VARIABLE_DECLARE(std::string, GETYESORNO_DEFAULT_PROMPT, \"Try again: \")\nSTATIC_CONST_VARIABLE_DECLARE(std::string, GETYESORNO_DEFAULT_REPROMPT, \"Please type a word that starts with 'Y' or 'N'.\")\n\n/**\n * Adds a space at the end of the given string by reference if none is present.\n * @private\n */\nstatic void appendSpace(std::string& prompt);\n\n/*\n * Implementation notes: getChar, getDouble, getInteger, getReal\n * -------------------------------------------------------------\n * Each of these functions reads a complete input line and then uses the\n * <sstream> library to parse that line into a value of the desired type.\n * If that fails, the implementation asks the user for a new value.\n */\n\nchar getChar(const std::string& prompt,\n             const std::string& reprompt) {\n    std::string promptCopy = prompt;\n    appendSpace(promptCopy);\n    char value = '\\0';\n    while (true) {\n        std::cout << promptCopy;\n        std::string line;\n        if (!getline(std::cin, line)) {\n            error(\"getChar: End of input reached while waiting for character value.\");\n        }\n        if (line.length() == 1) {\n            value = line[0];\n            break;\n        }\n\n        std::cout.flush();\n        std::cerr << (reprompt.empty() ? STATIC_VARIABLE(GETCHAR_DEFAULT_REPROMPT) : reprompt) << std::endl;\n        std::cerr.flush();\n        if (promptCopy.empty()) {\n            promptCopy = STATIC_VARIABLE(GETCHAR_DEFAULT_PROMPT);\n        }\n    }\n    return value;\n}\n\ndouble getDouble(const std::string& prompt,\n                 const std::string& reprompt) {\n    return getReal(prompt, reprompt);\n}\n\ndouble getDoubleBetween(const std::string& prompt, double min, double max) {\n    return getRealBetween(prompt, min, max);\n}\n\nint getInteger(const std::string& prompt,\n               const std::string& reprompt) {\n    std::string promptCopy = prompt;\n    appendSpace(promptCopy);\n    int value = 0;\n    while (true) {\n        std::cout << promptCopy;\n        std::string line;\n        if (!getline(std::cin, line)) {\n            error(\"getInteger: End of input reached while waiting for integer value.\");\n        }\n        trimInPlace(line);\n        std::istringstream stream(line);\n        stream >> value;\n        if (!stream.fail() && stream.eof()) {\n            break;\n        }\n        std::cout.flush();\n        std::cerr << (reprompt.empty() ? STATIC_VARIABLE(GETINTEGER_DEFAULT_REPROMPT) : reprompt) << std::endl;\n        std::cerr.flush();\n        if (promptCopy.empty()) {\n            promptCopy = STATIC_VARIABLE(GETINTEGER_DEFAULT_PROMPT);\n        }\n    }\n    return value;\n}\n\nint getIntegerBetween(const std::string& prompt, int min, int max) {\n    int value = 0;\n    while (true) {\n        value = getInteger(prompt);\n        if (value < min || value > max) {\n            std::cout.flush();\n            std::cerr << \"Please type a value between \" << min\n                      << \" and \" << max << \".\" << std::endl;\n            std::cerr.flush();\n        } else {\n            break;\n        }\n    }\n    return value;\n}\n\n/*\n * Implementation notes: getLine\n * -----------------------------\n * The getLine function simply combines the process of displaying a\n * prompt and reading an input line into a single call.  The primary\n * reason for including this function in the library is to ensure\n * that the process of reading integers, floating-point numbers, and\n * strings remains as consistent as possible.\n */\nstd::string getLine(const std::string& prompt) {\n    std::string line;\n    getLine(prompt, line);\n    return line;\n}\n\nvoid getLine(const std::string& prompt,\n             std::string& out) {\n    std::string promptCopy = prompt;\n    appendSpace(promptCopy);\n    std::cout << promptCopy;\n    if (!getline(std::cin, out)) {\n        error(\"getLine: End of input reached while waiting for line.\");\n    }\n}\n\nvoid getLine(std::istream& input,\n             std::string& out) {\n    if (!getline(input, out)) {\n        error(\"getLine: End of input reached while waiting for line.\");\n    }\n}\n\ndouble getReal(const std::string& prompt,\n               const std::string& reprompt) {\n    std::string promptCopy = prompt;\n    appendSpace(promptCopy);\n    double value = 0.0;\n    while (true) {\n        std::cout << promptCopy;\n        std::string line;\n        if (!getline(std::cin, line)) {\n            error(\"getReal: End of input reached while waiting for real value.\");\n        }\n        trimInPlace(line);\n        std::istringstream stream(line);\n        stream >> value;\n        if (!stream.fail() && stream.eof()) {\n            break;\n        }\n        std::cout.flush();\n        std::cerr << (reprompt.empty() ? STATIC_VARIABLE(GETREAL_DEFAULT_REPROMPT) : reprompt) << std::endl;\n        std::cerr.flush();\n        if (promptCopy.empty()) {\n            promptCopy = STATIC_VARIABLE(GETREAL_DEFAULT_PROMPT);\n        }\n    }\n    return value;\n}\n\ndouble getRealBetween(const std::string& prompt, double min, double max) {\n    double value = 0;\n    while (true) {\n        value = getReal(prompt);\n        if (value < min || value > max) {\n            std::cout.flush();\n            std::cerr << \"Please type a value between \" << min\n                      << \" and \" << max << \".\" << std::endl;\n            std::cerr.flush();\n        } else {\n            break;\n        }\n    }\n    return value;\n}\n\nbool getYesOrNo(const std::string& prompt,\n                const std::string& reprompt,\n                const std::string& defaultValue) {\n    std::string promptCopy = prompt;\n    appendSpace(promptCopy);\n    bool value = false;\n    while (true) {\n        std::cout << promptCopy;\n        std::string line;\n        if (!getline(std::cin, line)) {\n            error(\"getYesOrNo: End of input reached while waiting for yes/no value.\");\n        }\n        if (line.empty()) {\n            line = defaultValue;\n        }\n        if ((int) line.length() > 0) {\n            char first = tolower(line[0]);\n            if (first == 'y') {\n                value = true;\n                break;\n            } else if (first == 'n') {\n                value = false;\n                break;\n            }\n        }\n        std::cout.flush();\n        std::cerr << (reprompt.empty() ? STATIC_VARIABLE(GETYESORNO_DEFAULT_REPROMPT) : reprompt) << std::endl;\n        std::cerr.flush();\n        if (promptCopy.empty()) {\n            promptCopy = STATIC_VARIABLE(GETYESORNO_DEFAULT_PROMPT);\n        }\n    }\n    return value;\n}\n\nstatic void appendSpace(std::string& prompt) {\n    if (!prompt.empty() && !isspace(prompt[prompt.length() - 1])) {\n        prompt += ' ';\n    }\n}\n\nstd::string promptUserForFilename(const std::string& prompt,\n                                  const std::string& reprompt) {\n    std::string promptCopy = prompt;\n    std::string repromptCopy = reprompt;\n    if (reprompt == \"\") {\n        repromptCopy = \"Unable to open that file.  Try again.\";\n    }\n    appendSpace(promptCopy);\n    while (true) {\n        std::cout << promptCopy;\n        std::string filename;\n        getline(std::cin, filename);\n        if (isFile(filename)) {\n            return filename;\n        }\n        std::cout << repromptCopy << std::endl;\n        if (promptCopy == \"\") promptCopy = \"Input file: \";\n    }\n}\n"
  },
  {
    "path": "Library/io/simpio.h",
    "content": "/*\n * File: simpio.h\n * --------------\n * This file exports a set of functions that simplify input/output\n * operations in C++ and provide some error-checking on console input.\n */\n\n#ifndef _simpio_h\n#define _simpio_h\n\n#include <iostream>\n#include <string>\n\n/**\n * Reads a complete line from <code>cin</code>, expecting the user to type a\n * single character. If this is the case, that character value is returned.\n * If the user types anything other than a one-character line of input,\n * the user is given a chance to reenter the value.\n *\n * If supplied, the optional <code>prompt</code> string is printed before\n * reading the value.\n * If no prompt is passed, defaults to, \"You must type a single character. Try again.\".\n *\n * The also optional <code>reprompt</code> argument provides an output message\n * displayed when the user enters an invalid input. If no reprompt\n * is passed, defaults to prompt.\n */\nchar getChar(const std::string& prompt = \"\",\n             const std::string& reprompt = \"\");\n\n/**\n * Reads a complete line from <code>cin</code> and scans it as a\n * floating-point number. If the scan succeeds, the floating-point\n * value is returned.  If the input is not a legal number or if\n * extraneous characters (other than whitespace) appear in the string,\n * the user is given a chance to reenter the value.\n *\n * If supplied, the optional <code>prompt</code> string is printed before\n * reading the value.\n *\n * The also optional <code>reprompt</code> argument provides an output message\n * displayed when the user enters an invalid input.\n * If no prompt is passed, defaults to, \"Illegal numeric format. Try again.\".\n *\n * Equivalent to getReal.\n */\ndouble getDouble(const std::string& prompt = \"\",\n                 const std::string& reprompt = \"\");\n\n/**\n * Reads a complete line from <code>cin</code> and scans it as a\n * floating-point number. If the scan succeeds, the floating-point\n * value is returned.  If the input is not a legal number or if\n * it is not between min and max, or if extraneous characters\n * (other than whitespace) appear in the string,\n * the user is given a chance to reenter the value.\n *\n * The required <code>prompt</code> string is printed before reading the value.\n *\n * Equivalent to getRealBetween.\n */\ndouble getDoubleBetween(const std::string& prompt, double min, double max);\n\n/**\n * Reads a complete line from <code>cin</code> and scans it as an\n * integer. If the scan succeeds, the integer value is returned. If\n * the argument is not a legal integer or if extraneous characters\n * (other than whitespace) appear in the string, the user is given\n * a chance to reenter the value.\n *\n * If supplied, the optional <code>prompt</code> string is printed before\n * reading the value.\n *\n * The also optional <code>reprompt</code> argument provides an output message\n * displayed when the user enters an invalid input.\n * If no value is passed, defaults to, \"Illegal integer format. Try again.\".\n */\nint getInteger(const std::string& prompt = \"\",\n               const std::string& reprompt = \"\");\n\n/**\n * Reads a complete line from <code>cin</code> and scans it as an\n * integer. If the scan succeeds, the integer value is returned. If\n * the argument is not a legal integer, if it is not between min and max,\n * or if extraneous characters (other than whitespace) appear in the string,\n * the user is given a chance to reenter the value.\n *\n * The required <code>prompt</code> string is printed before reading the value.\n */\nint getIntegerBetween(const std::string& prompt, int min, int max);\n\n/**\n * Reads a line of text from <code>cin</code> and returns that line\n * as a string.  The newline character that terminates the input is\n * not stored as part of the return value.  If supplied, the optional\n * <code>prompt</code> string is printed before reading the value.\n */\nstd::string getLine(const std::string& prompt = \"\");\n\n/**\n * Alternate version of getLine that accepts a prompt and fills a given output\n * variable with its result.\n */\nvoid getLine(const std::string& prompt,\n             std::string& out);\n\n/**\n * Alternate version of getLine that accepts an input stream to read from.\n * Meant as a drop-in replacement for the standard C++ getline (lowercase L)\n * function.\n */\nvoid getLine(std::istream& input,\n             std::string& out);\n\n/**\n * Reads a complete line from <code>cin</code> and scans it as a\n * floating-point number. If the scan succeeds, the floating-point\n * value is returned.  If the input is not a legal number or if\n * extraneous characters (other than whitespace) appear in the string,\n * the user is given a chance to reenter the value.\n *\n * If supplied, the optional <code>prompt</code> string is printed before\n * reading the value.\n *\n * The also optional <code>reprompt</code> argument provides an output message\n * displayed when the user enters an invalid input.\n * If no value is passed, defaults to, \"Illegal numeric format. Try again.\".\n *\n * Equivalent to getDouble.\n */\ndouble getReal(const std::string& prompt = \"\",\n               const std::string& reprompt = \"\");\n\n/**\n * Reads a complete line from <code>cin</code> and scans it as a\n * floating-point number. If the scan succeeds, the floating-point\n * value is returned.  If the input is not a legal number or if\n * it is not between min and max, or if extraneous characters\n * (other than whitespace) appear in the string,\n * the user is given a chance to reenter the value.\n *\n * The required <code>prompt</code> string is printed before reading the value.\n *\n * Equivalent to getDoubleBetween.\n */\ndouble getRealBetween(const std::string& prompt, double min, double max);\n\n/**\n * Reads a complete line from <code>cin</code> and treats it as a\n * yes-or-no answer to a question.  Returns <code>true</code> if the line\n * typed begins with a 'y' or 'Y', and returns <code>false</code> if it begins\n * with a 'n' or 'N'.  Otherwise the user is given a chance to reenter the\n * value.\n *\n * If supplied, the optional <code>prompt</code> string is printed before\n * reading the value.\n *\n * The also optional <code>reprompt</code> argument provides an output message\n * displayed when the user enters an invalid input.\n * If no value is passed, defaults to,\n * \"Please type a word that starts with 'Y' or 'N'.\".\n *\n * The also also optional <code>defaultValue</code> argument indicates what\n * should happen if the user just presses Enter rather than typing Y or N.\n * By default, the user is re-prompted, but if a defaultValue is passed here,\n * pressing Enter will be equivalent to having typed that value.\n * This is useful where the default Y/N answer is Yes or No and you want to\n * let the user avoid typing.\n */\nbool getYesOrNo(const std::string& prompt = \"\",\n                const std::string& reprompt = \"\",\n                const std::string& defaultValue = \"\");\n\n/**\n * Asks the user for the name of a file to read.\n * The function returns the name of the file.\n * If the requested file cannot be opened, the user is given additional chances\n * to type a valid file name.\n *\n * The optional <code>prompt</code> argument provides an input prompt\n * for the user.\n *\n * The also optional <code>reprompt</code> argument provides an output message\n * displayed each time if the user types a file that is not found.\n * If no value is passed, defaults to, \"Unable to open that file.  Try again.\".\n */\nstd::string promptUserForFilename(const std::string& prompt = \"\",\n                                  const std::string& reprompt = \"\");\n\n#endif // _simpio_h\n"
  },
  {
    "path": "Library/io/tokenscanner.cpp",
    "content": "/*\n * File: tokenscanner.cpp\n * ----------------------\n * Implementation for the TokenScanner class.\n * \n * @version 2016/11/26\n * - added getInput method\n * - replaced occurrences of string with const string& for efficiency\n * - alphabetized method ordering\n * - added operator << for printing a scanner\n * @version 2014/10/08\n * - removed 'using namespace' statement\n */\n\n#include \"tokenscanner.h\"\n#include <cctype>\n#include <iostream>\n#include \"error.h\"\n#include \"strlib.h\"\n\nTokenScanner::TokenScanner() {\n    initScanner();\n    setInput(\"\");\n}\n\nTokenScanner::TokenScanner(std::istream& infile) {\n    initScanner();\n    setInput(infile);\n}\n\nTokenScanner::TokenScanner(const std::string& str) {\n    initScanner();\n    setInput(str);\n}\n\nTokenScanner::~TokenScanner() {\n    if (stringInputFlag) {\n        delete isp;\n    }\n}\n\nvoid TokenScanner::addOperator(const std::string& op) {\n    StringCell* cp = new StringCell;\n    cp->str = op;\n    cp->link = operators;\n    operators = cp;\n}\n\nvoid TokenScanner::addWordCharacters(const std::string& str) {\n    wordChars += str;\n}\n\nint TokenScanner::getChar() {\n    return isp->get();\n}\n\nstd::string TokenScanner::getInput() const {\n    return buffer;\n}\n\nint TokenScanner::getPosition() const {\n    if (!savedTokens) {\n        return int(isp->tellg());\n    } else {\n        return int(isp->tellg()) - savedTokens->str.length();\n    }\n}\n\nstd::string TokenScanner::getStringValue(const std::string& token) const {\n    std::string str = \"\";\n    int start = 0;\n    int finish = token.length();\n    if (finish > 1 && (token[0] == '\"' || token[0] == '\\'')) {\n        start = 1;\n        finish--;\n    }\n    for (int i = start; i < finish; i++) {\n        char ch = token[i];\n        if (ch == '\\\\') {\n            ch = token[++i];\n            if (isdigit(ch) || ch == 'x') {\n                int base = 8;\n                if (ch == 'x') {\n                    base = 16;\n                    i++;\n                }\n                int result = 0;\n                int digit = 0;\n                while (i < finish) {\n                    ch = token[i];\n                    if (isdigit(ch)) {\n                        digit = ch - '0';\n                    } else if (isalpha(ch)) {\n                        digit = toupper(ch) - 'A' + 10;\n                    } else {\n                        digit = base;\n                    }\n                    if (digit >= base) {\n                        break;\n                    }\n                    result = base * result + digit;\n                    i++;\n                }\n                ch = char(result);\n                i--;\n            } else {\n                switch (ch) {\n                case 'a': ch = '\\a'; break;\n                case 'b': ch = '\\b'; break;\n                case 'f': ch = '\\f'; break;\n                case 'n': ch = '\\n'; break;\n                case 'r': ch = '\\r'; break;\n                case 't': ch = '\\t'; break;\n                case 'v': ch = '\\v'; break;\n                case '\"': ch = '\"'; break;\n                case '\\'': ch = '\\''; break;\n                case '\\\\': ch = '\\\\'; break;\n                }\n            }\n        }\n        str += ch;\n    }\n    return str;\n}\n\nTokenScanner::TokenType TokenScanner::getTokenType(const std::string& token) const {\n    if (token.empty()) {\n        return TokenType(EOF);\n    }\n\n    char ch = token[0];\n    if (isspace(ch)) {\n        return SEPARATOR;\n    } else if (ch == '\"' || (ch == '\\'' && token.length() > 1)) {\n        return STRING;\n    } else if (isdigit(ch)) {\n        return NUMBER;\n    } else if (isWordCharacter(ch)) {\n        return WORD;\n    } else {\n        return OPERATOR;\n    }\n}\n\nbool TokenScanner::hasMoreTokens() {\n    std::string token = nextToken();\n    saveToken(token);\n    return !token.empty();\n}\n\nvoid TokenScanner::ignoreComments() {\n    ignoreCommentsFlag = true;\n}\n\nvoid TokenScanner::ignoreWhitespace() {\n    ignoreWhitespaceFlag = true;\n}\n\nbool TokenScanner::isWordCharacter(char ch) const {\n    return isalnum(ch) || wordChars.find(ch) != std::string::npos;\n}\n\nstd::string TokenScanner::nextToken() {\n    if (savedTokens) {\n        StringCell* cp = savedTokens;\n        std::string token = cp->str;\n        savedTokens = cp->link;\n        delete cp;\n        return token;\n    }\n\n    while (true) {\n        if (ignoreWhitespaceFlag) {\n            skipSpaces();\n        }\n        int ch = isp->get();\n        if (ch == '/' && ignoreCommentsFlag) {\n            ch = isp->get();\n            if (ch == '/') {\n                while (true) {\n                    ch = isp->get();\n                    if (ch == '\\n' || ch == '\\r' || ch == EOF) {\n                        break;\n                    }\n                }\n                continue;\n            } else if (ch == '*') {\n                int prev = EOF;\n                while (true) {\n                    ch = isp->get();\n                    if (ch == EOF || (prev == '*' && ch == '/')) {\n                        break;\n                    }\n                    prev = ch;\n                }\n                continue;\n            }\n            if (ch != EOF) {\n                isp->unget();\n            }\n            ch = '/';\n        }\n        if (ch == EOF) {\n            return \"\";\n        }\n        if ((ch == '\"' || ch == '\\'') && scanStringsFlag) {\n            isp->unget();\n            return scanString();\n        }\n        if (isdigit(ch) && scanNumbersFlag) {\n            isp->unget();\n            return scanNumber();\n        }\n        if (isWordCharacter(ch)) {\n            isp->unget();\n            return scanWord();\n        }\n        std::string op = std::string(1, ch);\n        while (isOperatorPrefix(op)) {\n            ch = isp->get();\n            if (ch == EOF) {\n                break;\n            }\n            op += ch;\n        }\n        while (op.length() > 1 && !isOperator(op)) {\n            isp->unget();\n            op.erase(op.length() - 1, 1);\n        }\n        return op;\n    }\n}\n\nvoid TokenScanner::saveToken(const std::string& token) {\n    StringCell* cp = new StringCell;\n    cp->str = token;\n    cp->link = savedTokens;\n    savedTokens = cp;\n}\n\nvoid TokenScanner::scanNumbers() {\n    scanNumbersFlag = true;\n}\n\nvoid TokenScanner::scanStrings() {\n    scanStringsFlag = true;\n}\n\nvoid TokenScanner::setInput(std::istream& infile) {\n    stringInputFlag = false;\n    isp = &infile;\n    savedTokens = nullptr;\n}\n\nvoid TokenScanner::setInput(const std::string& str) {\n    stringInputFlag = true;\n    buffer = str;\n    isp = new std::istringstream(buffer);\n    savedTokens = nullptr;\n}\n\nvoid TokenScanner::ungetChar(int) {\n    isp->unget();\n}\n\nvoid TokenScanner::verifyToken(const std::string& expected) {\n    std::string token = nextToken();\n    if (token != expected) {\n        std::string msg = \"TokenScanner::verifyToken: Found \\\"\" + token + \"\\\"\"\n                + \" when expecting \\\"\" + expected + \"\\\"\";\n        if (!buffer.empty()) {\n            msg += \"\\ninput = \\\"\" + buffer + \"\\\"\";\n        }\n        error(msg);\n    }\n}\n\n/* Private methods */\n\nvoid TokenScanner::initScanner() {\n    ignoreWhitespaceFlag = false;\n    ignoreCommentsFlag = false;\n    scanNumbersFlag = false;\n    scanStringsFlag = false;\n    operators = nullptr;\n}\n\n/*\n * Implementation notes: isOperator, isOperatorPrefix\n * --------------------------------------------------\n * These methods search the list of operators and return true if the\n * specified operator is either in the list or a prefix of an operator\n * in the list, respectively.  This code could be made considerably more\n * efficient by implementing operators as a trie.\n */\nbool TokenScanner::isOperator(const std::string& op) {\n    for (StringCell *cp = operators; cp != nullptr; cp = cp->link) {\n        if (op == cp->str) {\n            return true;\n        }\n    }\n    return false;\n}\n\nbool TokenScanner::isOperatorPrefix(const std::string& op) {\n    for (StringCell* cp = operators; cp != nullptr; cp = cp->link) {\n        if (startsWith(cp->str, op)) {\n            return true;\n        }\n    }\n    return false;\n}\n\n/*\n * Implementation notes: scanNumber\n * --------------------------------\n * Reads characters until the scanner reaches the end of a legal number.\n * The function operates by simulating what computer scientists\n * call a finite-state machine.  The program uses the variable\n * <code>state</code> to record the history of the process and\n * determine what characters would be legal at this point in time.\n */\nstd::string TokenScanner::scanNumber() {\n    std::string token = \"\";\n    NumberScannerState state = INITIAL_STATE;\n    while (state != FINAL_STATE) {\n        int ch = isp->get();\n        switch (state) {\n        case INITIAL_STATE:\n            if (!isdigit(ch)) {\n                error(\"TokenScanner::scanNumber: internal error: illegal call\");\n            }\n            state = BEFORE_DECIMAL_POINT;\n            break;\n        case BEFORE_DECIMAL_POINT:\n            if (ch == '.') {\n                state = AFTER_DECIMAL_POINT;\n            } else if (ch == 'E' || ch == 'e') {\n                state = STARTING_EXPONENT;\n            } else if (!isdigit(ch)) {\n                if (ch != EOF) {\n                    isp->unget();\n                }\n                state = FINAL_STATE;\n            }\n            break;\n        case AFTER_DECIMAL_POINT:\n            if (ch == 'E' || ch == 'e') {\n                state = STARTING_EXPONENT;\n            } else if (!isdigit(ch)) {\n                if (ch != EOF) {\n                    isp->unget();\n                }\n                state = FINAL_STATE;\n            }\n            break;\n        case STARTING_EXPONENT:\n            if (ch == '+' || ch == '-') {\n                state = FOUND_EXPONENT_SIGN;\n            } else if (isdigit(ch)) {\n                state = SCANNING_EXPONENT;\n            } else {\n                if (ch != EOF) {\n                    isp->unget();\n                }\n                isp->unget();\n                state = FINAL_STATE;\n            }\n            break;\n        case FOUND_EXPONENT_SIGN:\n            if (isdigit(ch)) {\n                state = SCANNING_EXPONENT;\n            } else {\n                if (ch != EOF) {\n                    isp->unget();\n                }\n                isp->unget();\n                isp->unget();\n                state = FINAL_STATE;\n            }\n            break;\n        case SCANNING_EXPONENT:\n            if (!isdigit(ch)) {\n                if (ch != EOF) {\n                    isp->unget();\n                }\n                state = FINAL_STATE;\n            }\n            break;\n        default:\n            state = FINAL_STATE;\n            break;\n        }\n        if (state != FINAL_STATE) {\n            token += char(ch);\n        }\n    }\n    return token;\n}\n\n/*\n * Implementation notes: scanString\n * --------------------------------\n * Reads and returns a quoted string from the scanner, continuing until\n * it scans the matching delimiter.  The scanner generates an error if\n * there is no closing quotation mark before the end of the input.\n */\nstd::string TokenScanner::scanString() {\n    std::string token = \"\";\n    char delim = isp->get();\n    token += delim;\n    bool escape = false;\n    while (true) {\n        int ch = isp->get();\n        if (ch == EOF) {\n            error(\"TokenScanner::scanString: found unterminated string\");\n        }\n        if (ch == delim && !escape) {\n            break;\n        }\n        escape = (ch == '\\\\') && !escape;\n        token += ch;\n    }\n    return token + delim;\n}\n\n/*\n * Implementation notes: scanWord\n * ------------------------------\n * Reads characters until the scanner reaches the end of a sequence\n * of word characters.\n */\nstd::string TokenScanner::scanWord() {\n    std::string token = \"\";\n    while (true) {\n        int ch = isp->get();\n        if (ch == EOF) {\n            break;\n        }\n        if (!isWordCharacter(ch)) {\n            isp->unget();\n            break;\n        }\n        token += char(ch);\n    }\n    return token;\n}\n\n/*\n * Implementation notes: skipSpaces\n * --------------------------------\n * Advances the position of the scanner until the current character is\n * not a whitespace character.\n */\nvoid TokenScanner::skipSpaces() {\n    while (true) {\n        int ch = isp->get();\n        if (ch == EOF) {\n            return;\n        }\n        if (!isspace(ch)) {\n            isp->unget();\n            return;\n        }\n    }\n}\n\nstd::ostream& operator <<(std::ostream& out, const TokenScanner& scanner) {\n    out << \"TokenScanner{\";\n    bool first = true;\n    if (!scanner.buffer.empty()) {\n        out << \"input=\\\"\" << scanner.buffer << \"\\\"\";\n        first = false;\n    }\n    out << (first ? \"\" : \",\") << \"position=\" << scanner.getPosition();\n    first = false;\n\n    if (scanner.scanNumbersFlag) {\n        out << (first ? \"\" : \",\") << \"scanNumbers\";\n        first = false;\n    }\n    if (scanner.scanStringsFlag) {\n        out << (first ? \"\" : \",\") << \"scanStrings\";\n        first = false;\n    }\n    if (!scanner.wordChars.empty()) {\n        out << (first ? \"\" : \",\") << \"wordChars=[\" << scanner.wordChars << \"]\";\n        first = false;\n    }\n    if (scanner.ignoreWhitespaceFlag) {\n        out << (first ? \"\" : \",\") << \"ignoreWhitespace\";\n        first = false;\n    }\n    if (scanner.ignoreCommentsFlag) {\n        out << (first ? \"\" : \",\") << \"ignoreComments\";\n        // first = false;\n    }\n    out << \"}\";\n    return out;\n}\n"
  },
  {
    "path": "Library/io/tokenscanner.h",
    "content": "/*\n * File: tokenscanner.h\n * --------------------\n * This file exports a <code>TokenScanner</code> class that divides\n * a string into individual logical units called <b><i>tokens</i></b>.\n *\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2018/09/23\n * - moved TokenType enum to inside TokenScanner class to avoid namespace conflicts\n *   (may break some client code)\n * - remove private/tokenpatch.h\n * @version 2016/11/26\n * - added getInput method\n * - replaced occurrences of string with const string& for efficiency\n * - alphabetized method ordering\n * - added operator << for printing a scanner\n */\n\n\n#ifndef _tokenscanner_h\n#define _tokenscanner_h\n\n#include <iostream>\n#include <string>\n\n/**\n * This class divides a string into individual tokens.  The typical\n * use of the <code>TokenScanner</code> class is illustrated by the\n * following pattern, which reads the tokens in the string variable\n * <code>input</code>:\n *\n *<pre>\n *    TokenScanner scanner(input);\n *    while (scanner.hasMoreTokens()) {\n *       string token = scanner.nextToken();\n *       ... process the token ...\n *    }\n *</pre>\n *\n * The <code>TokenScanner</code> class exports several additional methods\n * that give clients more control over its behavior.  Those methods are\n * described individually in the documentation.\n */\nclass TokenScanner {\npublic:\n    /**\n     * This enumerated type defines the values of the\n     * <code>getTokenType</code> method.\n     */\n    enum TokenType {SEPARATOR, WORD, NUMBER, STRING, OPERATOR};\n\n    /**\n     * Initializes a scanner object with an empty token stream.\n     */\n    TokenScanner();\n\n    /**\n     * Initializes a scanner object.  The initial token stream comes from\n     * the specified input stream.\n     */\n    TokenScanner(std::istream& infile);\n\n    /**\n     * Initializes a scanner object.  The initial token stream comes from\n     * the specified string.\n     */\n    TokenScanner(const std::string& str);\n\n    /**\n     * Deallocates the storage associated with this scanner.\n     */\n    virtual ~TokenScanner();\n\n    /**\n     * Defines a new multicharacter operator.  Whenever you call\n     * <code>nextToken</code> when the input stream contains operator\n     * characters, the scanner returns the longest possible operator\n     * string that can be read at that point.\n     */\n    void addOperator(const std::string& op);\n\n    /**\n     * Adds the characters in <code>str</code> to the set of characters\n     * legal in a <code>WORD</code> token.  For example, calling\n     * <code>addWordCharacters(\"_\")</code> adds the underscore to the\n     * set of characters that are accepted as part of a word.\n     */\n    void addWordCharacters(const std::string& str);\n\n    /**\n     * Reads the next character from the scanner input stream.\n     */\n    int getChar();\n\n    /**\n     * Returns the string that is used as the input buffer for this scanner,\n     * if any. If this scanner was created using an istream instead of a\n     * string, returns an empty string.\n     */\n    std::string getInput() const;\n\n    /**\n     * Returns the current position of the scanner in the input stream.\n     * If <code>saveToken</code> has been called, this position corresponds\n     * to the beginning of the saved token.  If <code>saveToken</code> is\n     * called more than once, <code>getPosition</code> returns -1.\n     */\n    int getPosition() const;\n\n    /**\n     * Returns the string value of a token.  This value is formed by removing\n     * any surrounding quotation marks and replacing escape sequences by the\n     * appropriate characters.\n     */\n    std::string getStringValue(const std::string& token) const;\n\n    /**\n     * Returns the type of this token.  This type will match one of the\n     * following enumerated type constants: <code>EOF</code>,\n     * <code>SEPARATOR</code>, <code>WORD</code>, <code>NUMBER</code>,\n     * <code>STRING</code>, or <code>OPERATOR</code>.\n     */\n    TokenType getTokenType(const std::string& token) const;\n\n    /**\n     * Returns <code>true</code> if there are additional tokens for this\n     * scanner to read.\n     */\n    bool hasMoreTokens();\n\n    /**\n     * Tells the scanner to ignore comments.  The scanner package recognizes\n     * both the slash-star and slash-slash comment format from the C-based\n     * family of languages.  Calling:\n     *\n     *<pre>\n     *    scanner.ignoreComments();\n     *</pre>\n     *\n     * sets the parser to ignore comments.\n     */\n    void ignoreComments();\n\n    /**\n     * Tells the scanner to ignore whitespace characters.  By default,\n     * the <code>nextToken</code> method treats whitespace characters\n     * (typically spaces and tabs) just like any other punctuation mark\n     * and returns them as single-character tokens.\n     * Calling:\n     *\n     *<pre>\n     *    scanner.ignoreWhitespace();\n     *</pre>\n     *\n     * changes this behavior so that the scanner ignore whitespace characters.\n     */\n    void ignoreWhitespace();\n\n    /**\n     * Returns <code>true</code> if the character is valid in a word.\n     */\n    bool isWordCharacter(char ch) const;\n\n    /**\n     * Returns the next token from this scanner.  If <code>nextToken</code>\n     * is called when no tokens are available, it returns the empty string.\n     */\n    std::string nextToken();\n\n    /**\n     * Pushes the specified token back into this scanner's input stream.\n     * On the next call to <code>nextToken</code>, the scanner will return\n     * the saved token without reading any additional characters from the\n     * token stream.\n     */\n    void saveToken(const std::string& token);\n\n    /**\n     * Controls how the scanner treats tokens that begin with a digit.  By\n     * default, the <code>nextToken</code> method treats numbers and letters\n     * identically and therefore does not provide any special processing for\n     * numbers.  Calling:\n     *\n     *<pre>\n     *    scanner.scanNumbers();\n     *</pre>\n     *\n     * changes this behavior so that <code>nextToken</code> returns the\n     * longest substring that can be interpreted as a real number.\n     */\n    void scanNumbers();\n\n    /**\n     * Controls how the scanner treats tokens enclosed in quotation marks.  By\n     * default, quotation marks (either single or double) are treated just like\n     * any other punctuation character.  Calling:\n     *\n     *<pre>\n     *    scanner.scanStrings();\n     *</pre>\n     *\n     * changes this assumption so that <code>nextToken</code> returns a single\n     * token consisting of all characters through the matching quotation mark.\n     * The quotation marks are returned as part of the scanned token so that\n     * clients can differentiate strings from other token types.\n     */\n    void scanStrings();\n\n    /**\n     * Sets the token stream for this scanner to the specified input stream.\n     * Any previous token stream is discarded.\n     */\n    void setInput(std::istream& infile);\n\n    /**\n     * Sets the token stream for this scanner to the specified string.\n     * Any previous token stream is discarded.\n     */\n    void setInput(const std::string& str);\n\n    /**\n     * Pushes the character <code>ch</code> back into the scanner stream.\n     * The character must match the one that was read.\n     */\n    void ungetChar(int ch);\n\n    /**\n     * Reads the next token and makes sure it matches the string\n     * <code>expected</code>.  If it does not, <code>verifyToken</code>\n     * throws an error.\n     * @throw ErrorException if the next token does not match the given string\n     */\n    void verifyToken(const std::string& expected);\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\nprivate:\n    /*\n     * Private type: StringCell\n     * ------------------------\n     * This type is used to construct linked lists of cells, which are used\n     * to represent both the stack of saved tokens and the set of defined\n     * operators.  These types cannot use the Stack and Lexicon classes\n     * directly because tokenscanner.h is an extremely low-level interface,\n     * and doing so would create circular dependencies in the .h files.\n     */\n    struct StringCell {\n        std::string str;\n        StringCell *link;\n    };\n\n    enum NumberScannerState {\n        INITIAL_STATE,\n        BEFORE_DECIMAL_POINT,\n        AFTER_DECIMAL_POINT,\n        STARTING_EXPONENT,\n        FOUND_EXPONENT_SIGN,\n        SCANNING_EXPONENT,\n        FINAL_STATE\n    };\n\n    std::string buffer;              /* The original argument string */\n    std::istream* isp;               /* The input stream for tokens  */\n    bool stringInputFlag;            /* Flag indicating string input */\n    bool ignoreWhitespaceFlag;       /* Scanner ignores whitespace   */\n    bool ignoreCommentsFlag;         /* Scanner ignores comments     */\n    bool scanNumbersFlag;            /* Scanner parses numbers       */\n    bool scanStringsFlag;            /* Scanner parses strings       */\n    std::string wordChars;           /* Additional word characters   */\n    StringCell* savedTokens;         /* Stack of saved tokens        */\n    StringCell* operators;           /* List of multichar operators  */\n\n    /* Private method prototypes */\n    void initScanner();\n    bool isOperator(const std::string& op);\n    bool isOperatorPrefix(const std::string& op);\n    std::string scanNumber();\n    std::string scanString();\n    std::string scanWord();\n    void skipSpaces();\n\n    friend std::ostream& operator <<(std::ostream& out, const TokenScanner& scanner);\n};\n\n/**\n * Prints the token scanner to the given output stream.\n */\nstd::ostream& operator <<(std::ostream& out, const TokenScanner& scanner);\n\n#endif // _tokenscanner_h\n"
  },
  {
    "path": "Library/io/urlstream.cpp",
    "content": "/*\n * File: urlstream.cpp\n * -------------------\n * This file contains the implementation of the iurlstream class.\n * Please see urlstream.h for information about how to use these classes.\n *\n * @author Marty Stepp\n * @version 2018/10/02\n * - added close() method for backward compatibility (does nothing)\n * @version 2018/09/18\n * - refactored to integrate with pure-C++ GDownloader implementation\n * - added getErrorMessage method\n * @version 2018/06/20\n * - support for setting headers such as user agent\n * - https URL support\n * - changed string to const string&\n * @version 2015/07/05\n * - removed static global Platform variable, replaced by getPlatform as needed\n * @version 2014/10/14\n * - fixed .c_str() Mac bug on ifstream::open() call\n * @since 2014/10/08\n */\n\n#include \"urlstream.h\"\n#include <sstream>\n#include <string>\n#include \"gdownloader.h\"\n\nnamespace {\n    /*\n     * Given a status code, determines whether it's successful.\n     * All successful HTTP status codes are of the form 2xx.\n     */\n    bool isHttpSuccess(int code) {\n        return code >= 200 && code <= 299;\n    }\n}\n\niurlstream::iurlstream()\n        : _url(\"\"),\n          _httpStatusCode(0) {\n    // empty\n}\n\niurlstream::iurlstream(const std::string& url)\n        : _url(url),\n          _httpStatusCode(0) {\n    open(url);\n}\n\nvoid iurlstream::close() {\n    // empty\n}\n\nint iurlstream::getErrorCode() const {\n    return isHttpSuccess(_httpStatusCode)? 0 : _httpStatusCode;\n}\n\nstd::string iurlstream::getErrorMessage() const {\n    return _errorMessage;\n}\n\nint iurlstream::getHttpStatusCode() const {\n    /* All HTTP status codes are between 1xx and 5xx, inclusive. */\n    return _httpStatusCode >= 100 && _httpStatusCode <= 599? _httpStatusCode : 0;\n}\n\nstd::string iurlstream::getHeader(const std::string& name) const {\n    return _headers[name];\n}\n\nstd::string iurlstream::getUrl() const {\n    return _url;\n}\n\nstd::string iurlstream::getUserAgent() const {\n    if (_headers.containsKey(\"User-Agent\")) {\n        return _headers[\"User-Agent\"];\n    } else {\n        return \"\";\n    }\n}\n\nvoid iurlstream::open(const std::string& url) {\n    if (!url.empty()) {\n        _url = url;\n    }\n    _errorMessage = \"\";\n    \n    // GDownloader does the heavy lifting of downloading the file for us\n    GDownloader downloader;\n\n    // insert/send headers if needed\n    if (!_headers.isEmpty()) {\n        for (std::string headerName : _headers) {\n            downloader.setHeader(headerName, _headers[headerName]);\n        }\n    }\n    std::string urlData = downloader.downloadAsString(_url);\n    _httpStatusCode = downloader.getHttpStatusCode();\n\n    if (downloader.hasError()) {\n        setstate(std::ios::failbit);\n        _errorMessage = downloader.getErrorMessage();\n    } else {\n        clear();\n        this->write(urlData.c_str(), static_cast<std::streamsize>(urlData.length()));\n        this->seekg(0);\n    }\n}\n\nvoid iurlstream::setHeader(const std::string& name, const std::string& value) {\n    _headers[name] = value;\n}\n\nvoid iurlstream::setUserAgent(const std::string& userAgent) {\n    setHeader(\"User-Agent\", userAgent);\n}\n"
  },
  {
    "path": "Library/io/urlstream.h",
    "content": "/*\n * File: urlstream.h\n * -----------------\n * This file exports the <code>iurlstream</code> class, which\n * implements an input stream for reading data from URLs.\n * It is implemented as a thin wrapper around a standard C++ stringstream.\n * The implementation downloads the URL's data into a memory buffer, then\n * exposes that memory buffer for reading.\n * \n * @author Marty Stepp\n * @version 2018/10/02\n * - added close() method for backward compatibility (does nothing)\n * @version 2018/09/18\n * - refactored to integrate with pure-C++ GDownloader implementation\n * - added getErrorMessage method\n * @version 2018/06/20\n * - support for setting headers such as user agent\n * - https URL support\n * - changed string to const string&\n * @version 2014/10/08\n * - initial version\n * @since 2014/10/08\n */\n\n\n#ifndef _urlstream_h\n#define _urlstream_h\n\n#include <sstream>\n#include <string>\n\n#include \"map.h\"\n\n/**\n * An <code>iurlstream</code> is an input stream for reading data from URLs.\n * It is implemented as a thin wrapper around a standard C++ stringstream.\n * The data from the given URL is downloaded into a memory buffer, from which\n * you can read it as you would any other input stream.\n */\nclass iurlstream : public std::stringstream {\npublic:\n    /**\n     * Initializes a new iurlstream that is not attached to any source.\n     * Use this constructor if you want to set various properties of the URL\n     * connection (such as user agent or other headers) before downloading.\n     */\n    iurlstream();\n\n    /**\n     * Initializes a new iurlstream that is attached to the given source URL.\n     * The data from that URL is downloaded immediately.\n     */\n    iurlstream(const std::string& url);\n\n    /**\n     * Closes the stream.\n     * This function actually does nothing and is left in only for legacy\n     * compatibility purposes.  You do not need to call it.\n     */\n    void close();\n\n    /**\n     * Returns the most recent error code received, if any.\n     * Returns 0 if no error codes have been issued.\n     */\n    int getErrorCode() const;\n\n    /**\n     * Returns a message about the most recent error, if any.\n     * Returns \"\" if no errors have occurred.\n     */\n    std::string getErrorMessage() const;\n\n    /**\n     * Returns the most recent HTTP status code, which may be a successful\n     * code (e.g. 200) or an error (e.g 404). If there is no HTTP status\n     * code to return, returns 0.\n     */\n    int getHttpStatusCode() const;\n\n    /**\n     * Returns the value of the given HTTP header for this URL request.\n     * If the given header is not defined, returns an empty string.\n     */\n    std::string getHeader(const std::string& name) const;\n\n    /**\n     * Returns the URL sent to the stream's constructor or to the last call\n     * to open(...).\n     */\n    std::string getUrl() const;\n\n    /**\n     * Returns the value of the HTTP \"User-Agent\" header for this URL request,\n     * or an empty string if the user agent has not been set.\n     */\n    std::string getUserAgent() const;\n\n    /**\n     * Opens the given URL for reading.\n     * If no URL is passed, uses the URL passed to the constructor.\n     */\n    void open(const std::string& url = \"\");\n\n    /**\n     * Sets the value of the given HTTP header for this URL request.\n     * Must be called before open(), and the stream must have been created\n     * with the parameterless constructor.\n     *\n     * @example stream.setHeader(\"Referer\", \"http://cs106b.stanford.edu/\");\n     */\n    void setHeader(const std::string& name, const std::string& value);\n\n    /**\n     * Sets the value of the HTTP \"User-Agent\" header for this URL request.\n     * Must be called before open(), and the stream must have been created\n     * with the parameterless constructor.\n     * Equivalent to calling setHeader with \"User-Agent\" as the header's name.\n     *\n     * @example stream.setUserAgent(\"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2\");\n     */\n    void setUserAgent(const std::string& userAgent);\n\nprivate:\n    std::string _url;                         // URL to be opened\n    int _httpStatusCode;                      // most recent HTTP error seen, if any (initially 0)\n    Map<std::string, std::string> _headers;   // HTTP headers to send (name => value)\n    std::string _errorMessage;                // error message of what went wrong, if anything\n};\n\n/**\n * Constants for HTTP return codes.\n * @private\n */\ntypedef enum {\n    // client side errors\n    ERRHOST = -1,    // no such host\n    ERRSOCK = -2,    // can't create socket\n    ERRCONN = -3,    // can't connect to host\n    ERRWRHD = -4,    // write error on socket while writing header\n    ERRWRDT = -5,    // write error on socket while writing data\n    ERRRDHD = -6,    // read error on socket while reading result\n    ERRPAHD = -7,    // invalid answer from data server\n    ERRNULL = -8,    // null data pointer\n    ERRNOLG = -9,    // no/bad length in header\n    ERRMEM  = -10,   // can't allocate memory\n    ERRRDDT = -11,   // read error while reading data\n    ERRURLH = -12,   // invalid url - must start with 'http://'\n    ERRURLP = -13,   // invalid port in url\n    \n    ERR_MALFORMED_URL = -42,\n    ERR_IO_EXCEPTION = -43,\n\n\n    // return code by the server\n    ERR400 = 400,   // invalid query\n    ERR403 = 403,   // forbidden\n    ERR408 = 408,   // request timeout\n    ERR500 = 500,   // server error\n    ERR501 = 501,   // not implemented\n    ERR503 = 503,   // service overloaded\n\n    // successful results\n    OK0 = 0,     // successful parse\n    OK201 = 201, // resource succesfully created\n    OK200 = 200  // resource succesfully read\n\n} http_retcode;\n\n#endif // _urlstream_h\n"
  },
  {
    "path": "Library/private/README.md",
    "content": "JDZ: here is where I am adding notes about library structure/design, \nThis is while reorganizing code, fall quarter 2019\n\n__Startup sequence, threads, main()__\nStudent writes a main() function that appears to them to be the entry point for program, but this is sleight-of-hand. Student code is compiled with a #define to rename main to studentMain and linking with our library supplies a main() that call studentMain() wrapped in necessary startup/teardown code.\n- What happens in main wrapper?\n    1. establishes the original thread as the \"qtgui thread\"\n    2. initializes QT application\n    3. initialize graphical console window (if #include console.h)\n    4. create second thread to run studentMain, concurrently run QT application event loop on qtgui thread\n    5. shutdown at end of studentMain and/or close console window\n- Threads\n    A lot of the QT application/graphics interaction has to run on the qtgui thread, see GThread::runOnQtGuiThread for that dispatch\n\n\n__Static variables (initialization, constructors)__\n- No guarantees about order of execution code is run for static initializers. See private/static.h for macros that provide declaration/access to static variable to ensure initializer run exactly once on first use of variable.\n\n"
  },
  {
    "path": "Library/private/build.h.in",
    "content": "#ifndef SPL_BUILD_H\n#define SPL_BUILD_H\n\n#define SPL_VERSION \\\"$$SPL_VERSION\\\"\n#define SPL_BUILD_DATE \\\"$$_DATE_\\\"\n#define SPL_BUILD_USER \\\"$$(USER)\\\"\n\n#endif"
  },
  {
    "path": "Library/private/filelibunix.cpp",
    "content": "/*\n * File: filelibunix.cpp\n * ---------------------\n * This file contains Unix implementations of filelib.h primitives.\n * This code used to live in platform.cpp before the Java back-end was retired.\n *\n * @version 2018/10/23\n * - added getAbsolutePath\n */\n\n#include \"filelib.h\"\n\n// define all of the following only on non-Windows OS\n// (see filelibwindows.cpp for Windows versions)\n#ifndef _WIN32\n#include <sys/types.h>\n#include <sys/stat.h>\n#include <sys/resource.h>\n#include <dirent.h>\n#include <errno.h>\n#include <pwd.h>\n#include <stdint.h>\n#include <unistd.h>\n#include <cstdio>\n#include <cstdlib>\n#include <cstring>\n#include <fstream>\n#include <iomanip>\n#include <iostream>\n#include <ios>\n#include <string>\n#include \"error.h\"\n#include \"strlib.h\"\n\nnamespace platform {\n\nvoid filelib_createDirectory(const std::string& path) {\n    std::string pathStr = path;\n    if (endsWith(path, \"/\")) {\n        pathStr = path.substr(0, path.length() - 1);\n    }\n    if (mkdir(pathStr.c_str(), 0777) != 0) {\n        if (errno == EEXIST && filelib_isDirectory(pathStr)) {\n            return;\n        }\n        std::string msg = \"createDirectory: \";\n        std::string err = std::string(strerror(errno));\n        error(msg + err);\n    }\n}\n\nvoid filelib_deleteFile(const std::string& path) {\n    remove(path.c_str());\n}\n\nstd::string filelib_expandPathname(const std::string& filename) {\n    if (filename == \"\") {\n        return \"\";\n    }\n    int len = filename.length();\n    std::string expanded = filename;\n    if (expanded[0] == '~') {\n        int spos = 1;\n        while (spos < len && expanded[spos] != '\\\\' && expanded[spos] != '/') {\n            spos++;\n        }\n        char *homedir = nullptr;\n        if (spos == 1) {\n            homedir = getenv(\"HOME\");\n            if (!homedir) {\n                homedir = getpwuid(getuid())->pw_dir;\n            }\n        } else {\n            struct passwd *pw = getpwnam(expanded.substr(1, spos - 1).c_str());\n            if (!pw) {\n                error(\"expandPathname: No such user\");\n            } else {\n                homedir = pw->pw_dir;\n            }\n        }\n        expanded = std::string(homedir) + expanded.substr(spos);\n        len = expanded.length();\n    }\n    for (int i = 0; i < len; i++) {\n        if (expanded[i] == '\\\\') {\n            expanded[i] = '/';\n        }\n    }\n    return expanded;\n}\n\nbool filelib_fileExists(const std::string& filename) {\n    struct stat fileInfo;\n    return stat(filename.c_str(), &fileInfo) == 0;\n}\n\nstd::string filelib_getAbsolutePath(const std::string& path) {\n    char realpathOut[4096];\n    realpath(path.c_str(), realpathOut);\n    std::string absPath(realpathOut);\n    return absPath;\n}\n\nstd::string filelib_getCurrentDirectory() {\n    char currentDirBuf[4096] = {'\\0'};\n    char* cwd = getcwd(currentDirBuf, 4096 - 1);\n    std::string result;\n    if (cwd) {\n        result = std::string(cwd);\n    } else {\n        error(\"getCurrentDirectory: \" + std::string(strerror(errno)));\n    }\n    return result;\n}\n\nstd::string filelib_getDirectoryPathSeparator() {\n    return \"/\";\n}\n\nstd::string filelib_getSearchPathSeparator() {\n    return \":\";\n}\n\n// http://stackoverflow.com/questions/8087805/\n// how-to-get-system-or-user-temp-folder-in-unix-and-windows\nstd::string filelib_getTempDirectory() {\n    char* dir = getenv(\"TMPDIR\");\n    if (!dir) dir = getenv(\"TMP\");\n    if (!dir) dir = getenv(\"TEMP\");\n    if (!dir) dir = getenv(\"TEMPDIR\");\n    if (!dir) return \"/tmp\";\n    return dir;\n}\n\nbool filelib_isDirectory(const std::string& filename) {\n    struct stat fileInfo;\n    if (stat(filename.c_str(), &fileInfo) != 0) {\n        return false;\n    }\n    return S_ISDIR(fileInfo.st_mode) != 0;\n}\n\nbool filelib_isFile(const std::string& filename) {\n    struct stat fileInfo;\n    if (stat(filename.c_str(), &fileInfo) != 0) {\n        return false;\n    }\n    return S_ISREG(fileInfo.st_mode) != 0;\n}\n\nvoid filelib_listDirectory(const std::string& path, Vector<std::string>& list) {\n    DIR* dir = opendir(path.empty() ? \".\" : path.c_str());\n    if (!dir) {\n        error(std::string(\"listDirectory: Can't open \\\"\") + path + \"\\\"\");\n    }\n    list.clear();\n    while (true) {\n        struct dirent* ep = readdir(dir);\n        if (!ep) {\n            break;\n        }\n        std::string name = std::string(ep->d_name);\n        if (name != \".\" && name != \"..\") {\n            list.add(name);\n        }\n    }\n    closedir(dir);\n    sort(list.begin(), list.end());\n}\n\nvoid filelib_setCurrentDirectory(const std::string& path) {\n    if (chdir(path.c_str()) != 0) {\n        std::string msg = \"setCurrentDirectory: \";\n        std::string err = std::string(strerror(errno));\n        error(msg + err);\n    }\n}\n\n} // namespace platform\n\n#endif // _WIN32\n"
  },
  {
    "path": "Library/private/filelibwindows.cpp",
    "content": "/*\n * File: filelibwindows.cpp\n * ------------------------\n * This file contains Windows implementations of filelib.h primitives.\n * This code used to live in platform.cpp before the Java back-end was retired.\n *\n * @version 2018/10/23\n * - added getAbsolutePath\n */\n\n\n// define all of the following only on Windows OS\n// (see filelibunix.cpp for non-Windows versions)\n#ifdef _WIN32\n#include <direct.h>\n#include <windows.h>\n#include <tchar.h>\n#undef MOUSE_EVENT\n#undef KEY_EVENT\n#undef MOUSE_MOVED\n#undef HELP_KEY\n#include <cctype>\n#include <cstdio>\n#include <cstdlib>\n#include <cstring>\n#include <fstream>\n#include <iomanip>\n#include <iostream>\n#include <ios>\n#include <string>\n#include \"error.h\"\n#include \"strlib.h\"\n\nnamespace platform {\n\nvoid filelib_createDirectory(const std::string& path) {\n    std::string pathStr = path;\n    if (endsWith(path, \"\\\\\")) {\n        pathStr = path.substr(0, path.length() - 1);\n    }\n    if (CreateDirectoryA(path.c_str(), nullptr) == 0) {\n        if (GetLastError() == ERROR_ALREADY_EXISTS && filelib_isDirectory(pathStr)) {\n            return;\n        }\n        error(\"createDirectory: Can't create \" + path);\n    }\n}\n\nvoid filelib_deleteFile(const std::string& path) {\n    if(filelib_isDirectory(path)) {\n        RemoveDirectoryA(path.c_str());\n    } else {\n        DeleteFileA(path.c_str());\n    }\n}\n\nstd::string filelib_expandPathname(const std::string& filename) {\n    if (filename.empty()) {\n        return \"\";\n    }\n    std::string filenameStr = filename;\n    for (int i = 0, len = filename.length(); i < len; i++) {\n        if (filenameStr[i] == '/') {\n            filenameStr[i] = '\\\\';\n        }\n    }\n    return filenameStr;\n}\n\nbool filelib_fileExists(const std::string& filename) {\n    return GetFileAttributesA(filename.c_str()) != INVALID_FILE_ATTRIBUTES;\n}\n\nstd::string filelib_getAbsolutePath(const std::string& path) {\n    char realpathOut[4096];\n    if (_fullpath(realpathOut, path.c_str(), 4095)) {\n        std::string absPath(realpathOut);\n        return absPath;\n    } else {\n        return path;\n    }\n}\n\nstd::string filelib_getCurrentDirectory() {\n    char path[MAX_PATH + 1];\n    int n = GetCurrentDirectoryA(MAX_PATH + 1, path);\n    return std::string(path, n);\n}\n\nstd::string filelib_getDirectoryPathSeparator() {\n    return \"\\\\\";\n}\n\nstd::string filelib_getSearchPathSeparator() {\n    return \";\";\n}\n\nstd::string filelib_getTempDirectory() {\n    char path[MAX_PATH + 1];\n    int n = GetTempPathA(MAX_PATH + 1, path);\n    return std::string(path, n);\n}\n\nbool filelib_isDirectory(const std::string& filename) {\n    DWORD attr = GetFileAttributesA(filename.c_str());\n    return attr != INVALID_FILE_ATTRIBUTES && (attr & FILE_ATTRIBUTE_DIRECTORY);\n}\n\n// https://msdn.microsoft.com/en-us/library/windows/desktop/gg258117(v=vs.85).aspx\nbool filelib_isFile(const std::string& filename) {\n    DWORD attr = GetFileAttributesA(filename.c_str());\n    return attr != INVALID_FILE_ATTRIBUTES && !(attr & FILE_ATTRIBUTE_DIRECTORY);\n}\n\nvoid filelib_listDirectory(const std::string& path, Vector<std::string> & list) {\n    std::string pathStr = path;\n    if (pathStr == \"\") {\n        pathStr = \".\";\n    }\n    std::string pattern = pathStr + \"\\\\*.*\";\n    WIN32_FIND_DATAA fd;\n    HANDLE h = FindFirstFileA(pattern.c_str(), &fd);\n    if (h == INVALID_HANDLE_VALUE) {\n        error(\"listDirectory: Can't list directory \\\"\" + pathStr + \"\\\"\");\n    }\n    list.clear();\n    while (true) {\n        std::string name = std::string(fd.cFileName);\n        if (name != \".\" && name != \"..\") {\n            list.add(name);\n        }\n        if (!FindNextFileA(h, &fd)) {\n            break;\n        }\n    }\n    FindClose(h);\n    sort(list.begin(), list.end());\n}\n\nvoid filelib_setCurrentDirectory(const std::string& path) {\n    if (!filelib_isDirectory(path) || !SetCurrentDirectoryA(path.c_str())) {\n        error(\"setCurrentDirectory: Can't change to \" + path);\n    }\n}\n\n} // namespace platform\n\n#endif // _WIN32\n"
  },
  {
    "path": "Library/private/headless.h",
    "content": "/*\n * File: headless.h\n * ----------------\n * This file contains some code for running in \"headless\" mode with no GUI.\n *\n * @version 2018/11/22\n * - initial version\n */\n\n\n#ifndef _headless_h\n#define _headless_h\n\n#ifdef SPL_HEADLESS_MODE\n\n// make up a Qt version\n#define QT_VERSION 5110\n\n// make Qt version macro produce a version less than this\n#define QT_VERSION_CHECK(a, b, c) 5090\n\n#endif // SPL_HEADLESS_MODE\n\n#endif // _headless_h\n"
  },
  {
    "path": "Library/private/init.cpp",
    "content": "/*\n * File: init.cpp\n * --------------\n *\n * TODO\n *\n * @author Marty Stepp\n * @version 2018/11/22\n * - added headless mode support\n * @version 2018/08/28\n * - refactor to use stanfordcpplib namespace\n * @version 2018/08/27\n * - initial version\n */\n\n#include \"private/init.h\"\n#include \"consoletext.h\"\n#include \"qtgui.h\"\n#include <QLoggingCategory>\n\n\n#ifdef __APPLE__\n#include <unistd.h>   // for chdir\n#endif // __APPLE__\n\n\nnamespace stanfordcpplib {\n\nnamespace qtgui {\nextern void initializeQtGraphicalConsole();\nextern void shutdownConsole();\n}\n\nstatic void chdirAppdir(std::string arg0) {\n#ifdef __APPLE__\n    // on Mac only, may need to change wd because of app's nested dir structure\n    size_t pos = arg0.find(\".app/Contents/\");\n    if (pos != std::string::npos) {\n        pos = arg0.rfind('/', pos); // find end of parent dir\n        if (pos != std::string::npos) {\n            std::string cwd = arg0.substr(0, pos);\n            chdir(cwd.c_str()); // set wd to folder containing .app\n        }\n    }\n#endif // __APPLE__\n}\n\n// called automatically by real main() function;\n// to be run in Qt GUI main thread\nvoid initializeLibrary(int argc, char** argv) {\n    // ensure that library is initialized only once\n    static bool _initialized = false;\n    if (_initialized) {\n        return;\n    }\n    _initialized = true;\n\n    if (argc > 0) chdirAppdir(argv[0]);\n\n#ifndef SPL_HEADLESS_MODE\n    GThread::setCurrentThreadAsGuiThread();\n\n    qSetMessagePattern(\"[Qt internal] %{category}.%{type}: %{message})\\n\");\n    // suppress harmless warnings (font substitutions, ffmpeg license)\n    QLoggingCategory::setFilterRules(\"qt.qpa.fonts.warning=false\\n\"\n                                     \"qt.multimedia.ffmpeg.info=false\"\n    );\n\n    QtGui::createInstance(argc, argv);      // initialize Qt graphics subsystem\n\n    // initialize Qt graphical console (if student #included it)\n    initializeQtGraphicalConsole();\n#endif // SPL_HEADLESS_MODE\n}\n\n// shut down the Qt graphical console window;\n// to be run in Qt main thread\nvoid shutdownLibrary() {\n#ifdef SPL_HEADLESS_MODE\n    // empty\n#else\n    shutdownConsole();\n#endif // SPL_HEADLESS_MODE\n}\n\n} // namespace stanfordcpplib\n\n"
  },
  {
    "path": "Library/private/init.h",
    "content": "/*\n * File: init.h\n * ------------\n * These functions setup/teardown the Stanford C++ library.\n *\n * Originally, necessary setup was initiated via a static initializer. This required\n * careful arrangement include+guard, this is no longer used as pre/post work is\n * is inserted into the wrapper \"main\" function which surrounds student main.\n *\n * @version 2018/08/28\n * - refactor to use stanfordcpplib namespace and init.cpp\n * @version 2018/07/03\n * - add code to handle Qt GUI library initialization\n * @version 2017/04/25\n * - wrap library initializer in an #ifndef to avoid multiple declaration\n *\n */\n\n#ifndef _init_h\n#define _init_h\n\n#include <string>\n\nnamespace stanfordcpplib {\n\n/**\n * Initializes the Stanford C++ library.\n * A call to this function is inserted before the student's main() runs.\n * This should be run from the Qt GUI (main) thread.\n */\nvoid initializeLibrary(int argc, char** argv);\n\n/**\n * Shuts down the Stanford C++ library.\n * A call to this function is inserted after the student's main().\n */\nvoid shutdownLibrary();\n\n\n} // namespace stanfordcpplib\n\n\n#ifdef SPL_HEADLESS_MODE\n#include \"headless.h\"\n#endif // SPL_HEADLESS_MODE\n\n#endif // _init_h\n"
  },
  {
    "path": "Library/private/librarymain.cpp",
    "content": "/*\n * File: librarymain.cpp\n * ---------------------\n * This file contains a 'libraryMain' function definition that initializes the\n * Stanford C++ library, then runs the student's main function\n * in its own thread.  This is necessary for the Qt version of the library to\n * function properly.\n */\n\n#include \"private/init.h\"\n#include \"qtgui.h\"\n\n// student implements what looks like ordinary main() function, but\n// will be renamed to studentMain() during build\nint studentMain();\n\n// initializes the Qt GUI library subsystems and Qt graphical console as needed\n// before calling studentMain\n\nint libraryMain(int argc, char** argv)\n{\n    stanfordcpplib::initializeLibrary(argc, argv);\n#if (SPL_HEADLESS_MODE || __DONT_ENABLE_QT_GRAPHICAL_CONSOLE)\n    studentMain();\n#else\n    QtGui::instance()->startBackgroundEventLoop(studentMain);\n#endif\n    stanfordcpplib::shutdownLibrary();\n    return 0;\n}\n"
  },
  {
    "path": "Library/private/mainwrapper.cpp",
    "content": "/*\n * File: mainwrapper.cpp\n * ---------------------\n * This file contains a 'main' function definition that initializes the\n * Stanford C++ library, then runs the student's main function\n * in its own thread.  This is necessary for the Qt version of the library to\n * function properly.\n *\n * @version 2018/10/18\n * - multi-main initial implementation\n * @version 2018/10/07\n * - bug fixes for autograder mode\n * @version 2018/09/23\n * - bug fixes for windows Qt main wrapper\n * @version 2018/09/17\n * - initial version\n */\n\n// Moved the main wrapper function into module by itself so that\n// linking will pull in this module if and only if final link of\n// executable is missing definition of main/qMain. This will generally\n// happen via some preprocessor sleight-of-hand where what was originally\n// called main() by student will be renamed to studentMain(), thus causing\n// main to be undefined and this version to be linked that will call to\n// libraryMain() which does setup and then calls studentMain.\n\nint libraryMain(int, char **);\n\nint main(int argc, char **argv)\n{\n    return libraryMain(argc, argv);\n}\n\n// In Windows startup, entry point is called qMain()\n// supply both, the other is fine unused\nint qMain(int argc, char **argv)\n{\n    return libraryMain(argc, argv);\n}\n"
  },
  {
    "path": "Library/private/static.h",
    "content": "/*\n * File: static.h\n * --------------\n * This file provides several macros for declaring static variables and functions\n * in ways that are safe for usage during the C++ static initiialization phase.\n * These macros should be used to declare all not-inside-function static data\n * used by the library, since a lot of library code runs during the\n * static initialization phase.\n *\n * @version 2017/10/05\n * - added STATIC_VARIABLE_NAMESPACE\n */\n\n#ifndef _static_h\n#define _static_h\n\n// macros for concatenating two macros\n#ifndef CONCAT_IMPL\n#define MACRO_CONCAT(a, ...) PRIMITIVE_CONCAT(a, __VA_ARGS__)\n#define PRIMITIVE_CONCAT(a, ...) a ## __VA_ARGS__\n#define MACRO_IDENT(x) x\n#endif // CONCAT_IMPL\n\n// declare static var/func and assign it the given value\n#define STATIC_VARIABLE_DECLARE(type, name, value) \\\n    static type & s_##name() { \\\n        static type __##name = (value); \\\n        return __##name; \\\n    }\n\n// declare but don't assign a value (use type's default value)\n#define STATIC_VARIABLE_DECLARE_BLANK(type, name) \\\n    static type & s_##name() { \\\n        static type __##name; \\\n        return __##name; \\\n    }\n\n// declare static const var/func and assign it the given value\n#define STATIC_CONST_VARIABLE_DECLARE(type, name, value) \\\n    static const type & s_##name() { \\\n        static const type __##name = (value); \\\n        return __##name; \\\n    }\n\n// declare static var/func collection and assign it the given elements\n// (these seem to not work for multi-template collections like Map<K, V>  :-/\n//  but they work for single-template collections like Vector<E>)\n#define STATIC_VARIABLE_DECLARE_COLLECTION(type, name, ...) \\\n    static type & s_##name() { \\\n        static type __##name = { __VA_ARGS__ }; \\\n        return __##name; \\\n    }\n\n// declare static var/func collection and leave it empty\n#define STATIC_VARIABLE_DECLARE_COLLECTION_EMPTY(type, name) \\\n    static type & s_##name() { \\\n        static type __##name; \\\n        return __##name; \\\n    }\n\n#define STATIC_VARIABLE_DECLARE_MAP_EMPTY(maptype, keytype, valuetype, name) \\\n    static maptype < keytype , valuetype > & s_##name() { \\\n        static maptype < keytype , valuetype > __##name; \\\n        return __##name; \\\n    }\n\n// declare static const var/func collection and assign it the given elements\n#define STATIC_CONST_VARIABLE_DECLARE_COLLECTION(type, name, ...) \\\n    static const type & s_##name() { \\\n        static const type __##name { __VA_ARGS__ }; \\\n        return __##name; \\\n    }\n\n// look up the value of the given static variable (by calling its static s_ function)\n#define STATIC_VARIABLE(name) \\\n    (s_##name())\n\n// look up the value of the given static variable in another namespace\n#define STATIC_VARIABLE_NAMESPACE(namespacename, name) \\\n    (namespacename::s_##name())\n\n#endif // _static_h\n"
  },
  {
    "path": "Library/resources/EnglishWords.txt",
    "content": "a\naa\naah\naahed\naahing\naahs\naal\naalii\naaliis\naals\naardvark\naardvarks\naardwolf\naardwolves\naargh\naas\naasvogel\naasvogels\naba\nabaca\nabacas\nabaci\naback\nabacus\nabacuses\nabaft\nabaka\nabakas\nabalone\nabalones\nabamp\nabampere\nabamperes\nabamps\nabandon\nabandoned\nabandoning\nabandonment\nabandonments\nabandons\nabas\nabase\nabased\nabasedly\nabasement\nabasements\nabaser\nabasers\nabases\nabash\nabashed\nabashes\nabashing\nabashment\nabashments\nabasing\nabatable\nabate\nabated\nabatement\nabatements\nabater\nabaters\nabates\nabating\nabatis\nabatises\nabator\nabators\nabattis\nabattises\nabattoir\nabattoirs\nabaxial\nabaxile\nabba\nabbacies\nabbacy\nabbas\nabbatial\nabbe\nabbes\nabbess\nabbesses\nabbey\nabbeys\nabbot\nabbotcies\nabbotcy\nabbots\nabbreviate\nabbreviated\nabbreviates\nabbreviating\nabbreviation\nabbreviations\nabbreviator\nabbreviators\nabdicate\nabdicated\nabdicates\nabdicating\nabdication\nabdications\nabdicator\nabdicators\nabdomen\nabdomens\nabdomina\nabdominal\nabdominally\nabduce\nabduced\nabducens\nabducent\nabducentes\nabduces\nabducing\nabduct\nabducted\nabducting\nabduction\nabductions\nabductor\nabductores\nabductors\nabducts\nabeam\nabed\nabele\nabeles\nabelmosk\nabelmosks\naberrance\naberrances\naberrancies\naberrancy\naberrant\naberrants\naberration\naberrational\naberrations\nabet\nabetment\nabetments\nabets\nabettal\nabettals\nabetted\nabetter\nabetters\nabetting\nabettor\nabettors\nabeyance\nabeyances\nabeyancies\nabeyancy\nabeyant\nabfarad\nabfarads\nabhenries\nabhenry\nabhenrys\nabhor\nabhorred\nabhorrence\nabhorrent\nabhorrently\nabhorrer\nabhorrers\nabhorring\nabhors\nabidance\nabidances\nabide\nabided\nabider\nabiders\nabides\nabiding\nabigail\nabigails\nabilities\nability\nabioses\nabiosis\nabiotic\nabject\nabjectly\nabjectness\nabjuration\nabjurations\nabjure\nabjured\nabjurer\nabjurers\nabjures\nabjuring\nablate\nablated\nablates\nablating\nablation\nablations\nablative\nablatives\nablaut\nablauts\nablaze\nable\nablegate\nablegates\nabler\nables\nablest\nablings\nablins\nabloom\nabluent\nabluents\nablush\nabluted\nablution\nablutions\nably\nabmho\nabmhos\nabnegate\nabnegated\nabnegates\nabnegating\nabnegation\nabnegations\nabnegator\nabnegators\nabnormal\nabnormalities\nabnormality\nabnormally\nabnormals\nabo\naboard\nabode\naboded\nabodes\naboding\nabohm\nabohms\naboideau\naboideaus\naboideaux\naboil\naboiteau\naboiteaus\naboiteaux\nabolish\nabolished\nabolishes\nabolishing\nabolishment\nabolishments\nabolition\nabolitionary\nabolitionism\nabolitionist\nabolitionists\nabolitions\nabolla\nabollae\naboma\nabomas\nabomasa\nabomasal\nabomasi\nabomasum\nabomasus\nabominable\nabominably\nabominate\nabominated\nabominates\nabominating\nabomination\nabominations\nabominator\nabominators\naboon\naboral\naborally\naboriginal\naboriginally\naborigine\naborigines\naborning\nabort\naborted\naborter\naborters\naborting\nabortion\nabortionist\nabortionists\nabortions\nabortive\nabortively\naborts\nabos\nabought\naboulia\naboulias\naboulic\nabound\nabounded\nabounding\nabounds\nabout\nabove\naboveboard\naboves\nabracadabra\nabradant\nabradants\nabrade\nabraded\nabrader\nabraders\nabrades\nabrading\nabrasion\nabrasions\nabrasive\nabrasives\nabreact\nabreacted\nabreacting\nabreacts\nabreast\nabri\nabridge\nabridged\nabridgement\nabridgements\nabridger\nabridgers\nabridges\nabridging\nabridgment\nabridgments\nabris\nabroach\nabroad\nabrogate\nabrogated\nabrogates\nabrogating\nabrogation\nabrogations\nabrupt\nabrupter\nabruptest\nabruptly\nabruptness\nabscess\nabscessed\nabscesses\nabscessing\nabscise\nabscised\nabscises\nabscisin\nabscising\nabscisins\nabscissa\nabscissae\nabscissas\nabscission\nabscissions\nabscond\nabsconded\nabsconding\nabsconds\nabsence\nabsences\nabsent\nabsented\nabsentee\nabsenteeism\nabsentees\nabsenter\nabsenters\nabsenting\nabsently\nabsentminded\nabsentmindedly\nabsentmindedness\nabsents\nabsinth\nabsinthe\nabsinthes\nabsinths\nabsolute\nabsolutely\nabsoluteness\nabsoluter\nabsolutes\nabsolutest\nabsolution\nabsolutions\nabsolutism\nabsolutist\nabsolutistic\nabsolutists\nabsolve\nabsolved\nabsolver\nabsolvers\nabsolves\nabsolving\nabsonant\nabsorb\nabsorbabilities\nabsorbability\nabsorbable\nabsorbed\nabsorbencies\nabsorbency\nabsorbent\nabsorber\nabsorbers\nabsorbing\nabsorbingly\nabsorbs\nabsorption\nabsorptions\nabsorptive\nabstain\nabstained\nabstainer\nabstainers\nabstaining\nabstains\nabstemious\nabstemiously\nabstention\nabstentions\nabstentious\nabsterge\nabsterged\nabsterges\nabsterging\nabstinence\nabstinent\nabstract\nabstracted\nabstractedly\nabstracter\nabstracters\nabstractest\nabstracting\nabstraction\nabstractions\nabstractive\nabstractly\nabstractness\nabstractor\nabstractors\nabstracts\nabstrict\nabstricted\nabstricting\nabstricts\nabstruse\nabstrusely\nabstruseness\nabstruser\nabstrusest\nabsurd\nabsurder\nabsurdest\nabsurdities\nabsurdity\nabsurdly\nabsurdness\nabsurds\nabubble\nabulia\nabulias\nabulic\nabundance\nabundances\nabundant\nabundantly\nabusable\nabuse\nabused\nabuser\nabusers\nabuses\nabusing\nabusive\nabusively\nabusiveness\nabut\nabutilon\nabutilons\nabutment\nabutments\nabuts\nabuttal\nabuttals\nabutted\nabutter\nabutters\nabutting\nabuzz\nabvolt\nabvolts\nabwatt\nabwatts\naby\nabye\nabyes\nabying\nabys\nabysm\nabysmal\nabysmally\nabysms\nabyss\nabyssal\nabysses\nacacia\nacacias\nacademe\nacademes\nacademia\nacademias\nacademic\nacademically\nacademician\nacademicians\nacademicism\nacademics\nacademies\nacademy\nacajou\nacajous\nacaleph\nacalephae\nacalephe\nacalephes\nacalephs\nacanthi\nacanthus\nacanthuses\nacari\nacarid\nacaridan\nacaridans\nacarids\nacarine\nacarines\nacaroid\nacarpous\nacarus\nacaudal\nacaudate\nacauline\nacaulose\nacaulous\naccede\nacceded\nacceder\nacceders\naccedes\nacceding\naccelerando\naccelerate\naccelerated\naccelerates\naccelerating\nacceleration\naccelerations\naccelerative\naccelerator\naccelerators\naccelerometer\naccelerometers\naccent\naccented\naccenting\naccentor\naccentors\naccents\naccentual\naccentuate\naccentuated\naccentuates\naccentuating\naccentuation\naccentuations\naccept\nacceptabilities\nacceptability\nacceptable\nacceptably\nacceptance\nacceptances\nacceptant\nacceptation\nacceptations\naccepted\nacceptee\nacceptees\naccepter\naccepters\naccepting\nacceptor\nacceptors\naccepts\naccess\naccessaries\naccessary\naccessed\naccesses\naccessibilities\naccessibility\naccessible\naccessibleness\naccessibly\naccessing\naccession\naccessional\naccessions\naccessories\naccessory\naccident\naccidental\naccidentally\naccidentalness\naccidently\naccidents\naccidie\naccidies\nacclaim\nacclaimed\nacclaiming\nacclaims\nacclamation\nacclamations\nacclimate\nacclimated\nacclimates\nacclimating\nacclimation\nacclimations\nacclimatization\nacclimatizations\nacclimatize\nacclimatized\nacclimatizes\nacclimatizing\nacclivities\nacclivity\naccolade\naccolades\naccommodate\naccommodated\naccommodates\naccommodating\naccommodatingly\naccommodation\naccommodations\naccommodative\naccompanied\naccompanies\naccompaniment\naccompaniments\naccompanist\naccompanists\naccompany\naccompanying\naccomplice\naccomplices\naccomplish\naccomplished\naccomplisher\naccomplishers\naccomplishes\naccomplishing\naccomplishment\naccomplishments\naccord\naccordance\naccordances\naccordant\naccordantly\naccorded\naccorder\naccorders\naccording\naccordingly\naccordion\naccordionist\naccordionists\naccordions\naccords\naccost\naccosted\naccosting\naccosts\naccount\naccountabilities\naccountability\naccountable\naccountably\naccountancy\naccountant\naccountants\naccounted\naccounting\naccountings\naccounts\naccouter\naccoutered\naccoutering\naccouterment\naccouterments\naccouters\naccoutre\naccoutred\naccoutrement\naccoutrements\naccoutres\naccoutring\naccredit\naccreditation\naccreditations\naccredited\naccrediting\naccredits\naccrete\naccreted\naccretes\naccreting\naccretion\naccretionary\naccretions\naccrual\naccruals\naccrue\naccrued\naccruement\naccruements\naccrues\naccruing\nacculturate\nacculturated\nacculturates\nacculturating\nacculturation\nacculturations\naccumulate\naccumulated\naccumulates\naccumulating\naccumulation\naccumulations\naccumulative\naccumulator\naccumulators\naccuracies\naccuracy\naccurate\naccurately\naccurateness\naccursed\naccurst\naccusal\naccusals\naccusant\naccusants\naccusation\naccusations\naccusative\naccusatory\naccuse\naccused\naccuser\naccusers\naccuses\naccusing\naccusingly\naccustom\naccustomed\naccustoming\naccustoms\nace\naced\nacedia\nacedias\naceldama\naceldamas\nacentric\nacequia\nacequias\nacerate\nacerated\nacerb\nacerbate\nacerbated\nacerbates\nacerbating\nacerber\nacerbest\nacerbic\nacerbities\nacerbity\nacerola\nacerolas\nacerose\nacerous\nacervate\nacervuli\naces\nacescent\nacescents\naceta\nacetal\nacetals\nacetamid\nacetamids\nacetate\nacetated\nacetates\nacetic\nacetified\nacetifies\nacetify\nacetifying\nacetone\nacetones\nacetonic\nacetose\nacetous\nacetoxyl\nacetoxyls\nacetum\nacetyl\nacetylcholine\nacetylene\nacetylenes\nacetylic\nacetyls\nacetylsalicylic\nache\nached\nachene\nachenes\nachenial\naches\nachier\nachiest\nachievable\nachieve\nachieved\nachievement\nachievements\nachiever\nachievers\nachieves\nachieving\nachiness\nachinesses\naching\nachingly\nachiote\nachiotes\nachoo\nachromat\nachromatic\nachromaticities\nachromaticity\nachromats\nachromic\nachy\nacicula\naciculae\nacicular\naciculas\nacid\nacidhead\nacidheads\nacidic\nacidification\nacidifications\nacidified\nacidifies\nacidify\nacidifying\nacidities\nacidity\nacidly\nacidness\nacidnesses\nacidoses\nacidosis\nacidotic\nacids\nacidulate\nacidulated\nacidulates\nacidulating\nacidulation\nacidulations\nacidulous\nacidy\nacierate\nacierated\nacierates\nacierating\naciform\nacinar\nacing\nacini\nacinic\nacinose\nacinous\nacinus\nackee\nacknowledge\nacknowledged\nacknowledges\nacknowledging\nacknowledgment\nacknowledgments\naclinic\nacmatic\nacme\nacmes\nacmic\nacne\nacned\nacnes\nacnode\nacnodes\nacock\nacold\nacolyte\nacolytes\naconite\naconites\naconitic\naconitum\naconitums\nacorn\nacorns\nacoustic\nacoustical\nacoustically\nacoustician\nacousticians\nacoustics\nacquaint\nacquaintance\nacquaintances\nacquaintanceship\nacquainted\nacquainting\nacquaints\nacquest\nacquests\nacquiesce\nacquiesced\nacquiescence\nacquiescences\nacquiescent\nacquiescently\nacquiesces\nacquiescing\nacquirable\nacquire\nacquired\nacquirement\nacquirements\nacquirer\nacquirers\nacquires\nacquiring\nacquisition\nacquisitional\nacquisitions\nacquisitive\nacquisitively\nacquisitiveness\nacquisitor\nacquisitors\nacquit\nacquits\nacquittal\nacquittals\nacquittance\nacquittances\nacquitted\nacquitting\nacrasin\nacrasins\nacre\nacreage\nacreages\nacred\nacres\nacrid\nacrider\nacridest\nacridine\nacridines\nacridities\nacridity\nacridly\nacridness\nacrimonies\nacrimonious\nacrimony\nacrobat\nacrobatic\nacrobatically\nacrobatics\nacrobats\nacrodont\nacrodonts\nacrogen\nacrogens\nacrolein\nacroleins\nacrolith\nacroliths\nacromia\nacromial\nacromion\nacronic\nacronym\nacronyms\nacrophobia\nacrophobias\nacropolis\nacross\nacrostic\nacrostics\nacrotic\nacrotism\nacrotisms\nacrylate\nacrylates\nacrylic\nacrylics\nact\nacta\nactability\nactable\nacted\nacties\nactin\nactinal\nacting\nactings\nactinia\nactiniae\nactinian\nactinians\nactinias\nactinic\nactinide\nactinides\nactinism\nactinisms\nactinium\nactiniums\nactinoid\nactinoids\nactinon\nactinons\nactins\naction\nactionable\nactionably\nactions\nactivate\nactivated\nactivates\nactivating\nactivation\nactivations\nactivator\nactivators\nactive\nactively\nactiveness\nactives\nactivism\nactivisms\nactivist\nactivists\nactivities\nactivity\nactor\nactorish\nactors\nactress\nactresses\nacts\nactual\nactualities\nactuality\nactualization\nactualizations\nactualize\nactualized\nactualizes\nactualizing\nactually\nactuarial\nactuaries\nactuary\nactuate\nactuated\nactuates\nactuating\nactuation\nactuations\nactuator\nactuators\nacuate\nacuities\nacuity\naculeate\nacumen\nacumens\nacupuncture\nacupunctures\nacupuncturist\nacupuncturists\nacutance\nacutances\nacute\nacutely\nacuteness\nacuter\nacutes\nacutest\nacyclic\nacyl\nacylate\nacylated\nacylates\nacylating\nacyls\nad\nadage\nadages\nadagial\nadagio\nadagios\nadamance\nadamances\nadamancies\nadamancy\nadamant\nadamantine\nadamantly\nadamants\nadamsite\nadamsites\nadapt\nadaptability\nadaptable\nadaptation\nadaptations\nadapted\nadapter\nadapters\nadapting\nadaption\nadaptions\nadaptive\nadaptor\nadaptors\nadapts\nadaxial\nadd\naddable\naddax\naddaxes\nadded\naddedly\naddend\naddenda\naddends\naddendum\nadder\nadders\naddible\naddict\naddicted\naddicting\naddiction\naddictions\naddictive\naddicts\nadding\naddition\nadditional\nadditionally\nadditions\nadditive\nadditives\naddle\naddled\naddles\naddling\naddress\naddressed\naddressee\naddressees\naddresser\naddressers\naddresses\naddressing\naddrest\nadds\nadduce\nadduced\nadducent\nadducer\nadducers\nadduces\nadducing\nadduct\nadducted\nadducting\nadductor\nadductors\nadducts\nadeem\nadeemed\nadeeming\nadeems\nadenine\nadenines\nadenitis\nadenitises\nadenoid\nadenoidal\nadenoids\nadenoma\nadenomas\nadenomata\nadenyl\nadenyls\nadept\nadepter\nadeptest\nadeptly\nadeptness\nadepts\nadequacies\nadequacy\nadequate\nadequately\nadhere\nadhered\nadherence\nadherences\nadherend\nadherends\nadherent\nadherents\nadherer\nadherers\nadheres\nadhering\nadhesion\nadhesional\nadhesions\nadhesive\nadhesively\nadhesiveness\nadhesives\nadhibit\nadhibited\nadhibiting\nadhibits\nadiabatic\nadiabatically\nadieu\nadieus\nadieux\nadios\nadipic\nadipose\nadiposes\nadiposis\nadiposity\nadipous\nadit\nadits\nadjacencies\nadjacency\nadjacent\nadjacently\nadjectival\nadjectivally\nadjective\nadjectives\nadjoin\nadjoined\nadjoining\nadjoins\nadjoint\nadjoints\nadjourn\nadjourned\nadjourning\nadjournment\nadjournments\nadjourns\nadjudge\nadjudged\nadjudges\nadjudging\nadjudicate\nadjudicated\nadjudicates\nadjudicating\nadjudication\nadjudications\nadjudicative\nadjudicator\nadjudicators\nadjunct\nadjunctive\nadjuncts\nadjuration\nadjurations\nadjuratory\nadjure\nadjured\nadjurer\nadjurers\nadjures\nadjuring\nadjuror\nadjurors\nadjust\nadjustable\nadjusted\nadjuster\nadjusters\nadjusting\nadjustment\nadjustments\nadjustor\nadjustors\nadjusts\nadjutancy\nadjutant\nadjutants\nadjuvant\nadjuvants\nadman\nadmass\nadmen\nadminister\nadministered\nadministering\nadministers\nadministrable\nadministrant\nadministrants\nadministrate\nadministrated\nadministrates\nadministrating\nadministration\nadministrations\nadministrative\nadministratively\nadministrator\nadministrators\nadmirable\nadmirableness\nadmirably\nadmiral\nadmirals\nadmiralties\nadmiralty\nadmiration\nadmirations\nadmire\nadmired\nadmirer\nadmirers\nadmires\nadmiring\nadmissibility\nadmissible\nadmission\nadmissions\nadmit\nadmits\nadmittance\nadmittances\nadmitted\nadmittedly\nadmitter\nadmitters\nadmitting\nadmix\nadmixed\nadmixes\nadmixing\nadmixt\nadmixture\nadmixtures\nadmonish\nadmonished\nadmonishes\nadmonishing\nadmonishingly\nadmonishment\nadmonishments\nadmonition\nadmonitions\nadmonitory\nadnate\nadnation\nadnations\nadnexa\nadnexal\nadnoun\nadnouns\nado\nadobe\nadobes\nadobo\nadolescence\nadolescent\nadolescents\nadopt\nadoptabilities\nadoptability\nadoptable\nadopted\nadoptee\nadoptees\nadopter\nadopters\nadopting\nadoption\nadoptions\nadoptive\nadoptively\nadopts\nadorable\nadorably\nadoration\nadorations\nadore\nadored\nadorer\nadorers\nadores\nadoring\nadorn\nadorned\nadorner\nadorners\nadorning\nadornment\nadornments\nadorns\nados\nadown\nadoze\nadrenal\nadrenaline\nadrenalines\nadrenals\nadrift\nadroit\nadroiter\nadroitest\nadroitly\nadroitness\nads\nadscript\nadscripts\nadsorb\nadsorbate\nadsorbates\nadsorbed\nadsorbent\nadsorbing\nadsorbs\nadsorption\nadsorptions\nadularia\nadularias\nadulate\nadulated\nadulates\nadulating\nadulation\nadulations\nadulator\nadulators\nadulatory\nadult\nadulterant\nadulterants\nadulterate\nadulterated\nadulterates\nadulterating\nadulteration\nadulterations\nadulterer\nadulterers\nadulteress\nadulteresses\nadulteries\nadulterous\nadulterously\nadultery\nadulthood\nadultly\nadultness\nadults\nadumbral\nadumbrate\nadumbrated\nadumbrates\nadumbrating\nadumbration\nadumbrations\nadumbrative\nadumbratively\nadunc\naduncate\naduncous\nadust\nadvance\nadvanced\nadvancement\nadvancements\nadvancer\nadvancers\nadvances\nadvancing\nadvantage\nadvantageous\nadvantageously\nadvantages\nadvent\nadventitious\nadventitiously\nadventitiousness\nadvents\nadventure\nadventured\nadventurer\nadventurers\nadventures\nadventuresome\nadventuress\nadventuresses\nadventuring\nadventurous\nadverb\nadverbial\nadverbially\nadverbs\nadversaries\nadversary\nadversative\nadversatively\nadverse\nadversely\nadverseness\nadversities\nadversity\nadvert\nadverted\nadvertence\nadvertences\nadvertencies\nadvertency\nadvertent\nadvertently\nadverting\nadvertise\nadvertised\nadvertisement\nadvertisements\nadvertiser\nadvertisers\nadvertises\nadvertising\nadverts\nadvice\nadvices\nadvisabilities\nadvisability\nadvisable\nadvisableness\nadvisably\nadvise\nadvised\nadvisedly\nadvisee\nadvisees\nadvisement\nadvisements\nadviser\nadvisers\nadvises\nadvising\nadvisor\nadvisories\nadvisors\nadvisory\nadvocacies\nadvocacy\nadvocate\nadvocated\nadvocates\nadvocating\nadvowson\nadvowsons\nadynamia\nadynamias\nadynamic\nadyta\nadytum\nadz\nadze\nadzes\nae\naecia\naecial\naecidia\naecidium\naecium\naedes\naedile\naediles\naedine\naegis\naegises\naeneous\naeneus\naeolian\naeon\naeonian\naeonic\naeons\naerate\naerated\naerates\naerating\naeration\naerations\naerator\naerators\naerial\naerialist\naerialists\naerially\naerials\naerie\naeried\naerier\naeries\naeriest\naerified\naerifies\naeriform\naerify\naerifying\naerily\naero\naerobatics\naerobe\naerobes\naerobia\naerobic\naerobically\naerobium\naeroduct\naeroducts\naerodynamic\naerodynamically\naerodynamics\naerodyne\naerodynes\naerofoil\naerofoils\naerogel\naerogels\naerogram\naerograms\naerolite\naerolites\naerolith\naeroliths\naerologies\naerology\naeronaut\naeronautic\naeronautical\naeronautically\naeronautics\naeronauts\naeronomer\naeronomers\naeronomic\naeronomical\naeronomics\naeronomies\naeronomist\naeronomists\naeronomy\naerosol\naerosols\naerospace\naerostat\naerostatics\naerostats\naerugo\naerugos\naery\naesthete\naesthetes\naesthetic\naesthetically\naestheticism\naestheticisms\naesthetics\naestival\naether\naetheric\naethers\nafar\nafars\nafeard\nafeared\naff\naffability\naffable\naffably\naffair\naffaire\naffaires\naffairs\naffect\naffectabilities\naffectability\naffectable\naffectation\naffectations\naffected\naffectedly\naffectedness\naffecter\naffecters\naffecting\naffectingly\naffection\naffectionate\naffectionately\naffections\naffective\naffects\nafferent\naffiance\naffianced\naffiances\naffiancing\naffiant\naffiants\naffiche\naffiches\naffidavit\naffidavits\naffiliate\naffiliated\naffiliates\naffiliating\naffiliation\naffiliations\naffine\naffined\naffinely\naffines\naffinities\naffinity\naffirm\naffirmable\naffirmance\naffirmative\naffirmatively\naffirmed\naffirmer\naffirmers\naffirming\naffirms\naffix\naffixal\naffixed\naffixer\naffixers\naffixes\naffixial\naffixing\nafflatus\nafflatuses\nafflict\nafflicted\nafflicting\naffliction\nafflictions\nafflictive\nafflictively\nafflicts\naffluence\naffluent\naffluently\naffluents\nafflux\naffluxes\nafford\naffordable\nafforded\naffording\naffords\nafforest\nafforested\nafforesting\nafforests\naffray\naffrayed\naffrayer\naffrayers\naffraying\naffrays\naffright\naffrighted\naffrighting\naffrights\naffront\naffronted\naffronting\naffronts\naffusion\naffusions\nafghan\nafghani\nafghanis\nafghans\naficionado\naficionados\nafield\nafire\naflame\nafloat\naflutter\nafoot\nafore\naforementioned\naforesaid\naforethought\nafoul\nafraid\nafreet\nafreets\nafresh\nafrit\nafrits\naft\nafter\nafterbirth\nafterbirths\nafterburner\nafterburners\naftercare\naftereffect\naftereffects\nafterglow\nafterglows\nafterimage\nafterimages\nafterlife\naftermath\naftermaths\nafternoon\nafternoons\nafters\naftershock\naftershocks\naftertaste\naftertastes\naftertax\nafterthought\nafterthoughts\nafterward\nafterwards\naftmost\naftosa\naftosas\nag\naga\nagain\nagainst\nagalloch\nagallochs\nagalwood\nagalwoods\nagama\nagamas\nagamete\nagametes\nagamic\nagamous\nagapae\nagapai\nagape\nagapeic\nagar\nagaric\nagarics\nagars\nagas\nagate\nagates\nagatize\nagatized\nagatizes\nagatizing\nagatoid\nagave\nagaves\nagaze\nage\naged\nagedly\nagedness\nagednesses\nagee\nageing\nageings\nageless\nagelong\nagencies\nagency\nagenda\nagendas\nagendum\nagendums\nagene\nagenes\nageneses\nagenesia\nagenesias\nagenesis\nagenetic\nagenize\nagenized\nagenizes\nagenizing\nagent\nagential\nagentries\nagentry\nagents\nager\nageratum\nageratums\nagers\nages\nagger\naggers\naggie\naggies\nagglomerate\nagglomerated\nagglomerates\nagglomerating\nagglomeration\nagglomerations\nagglutinate\nagglutinated\nagglutinates\nagglutinating\nagglutination\nagglutinations\nagglutinative\nagglutinin\nagglutinins\naggrade\naggraded\naggrades\naggrading\naggrandize\naggrandized\naggrandizement\naggrandizements\naggrandizes\naggrandizing\naggravate\naggravated\naggravates\naggravating\naggravation\naggravations\naggregate\naggregated\naggregates\naggregating\naggregation\naggregations\naggress\naggressed\naggresses\naggressing\naggression\naggressions\naggressive\naggressively\naggressiveness\naggressor\naggressors\naggrieve\naggrieved\naggrieves\naggrieving\naggro\nagha\naghas\naghast\nagile\nagilely\nagilities\nagility\nagin\naging\nagings\naginner\naginners\nagio\nagios\nagiotage\nagiotages\nagism\nagist\nagisted\nagisting\nagists\nagitable\nagitate\nagitated\nagitatedly\nagitates\nagitating\nagitation\nagitations\nagitato\nagitator\nagitators\nagitprop\nagitprops\naglare\nagleam\naglee\naglet\naglets\nagley\naglimmer\naglitter\naglow\nagly\naglycon\naglycone\naglycones\naglycons\nagma\nagmas\nagminate\nagnail\nagnails\nagnate\nagnates\nagnatic\nagnation\nagnations\nagnize\nagnized\nagnizes\nagnizing\nagnomen\nagnomens\nagnomina\nagnostic\nagnosticism\nagnostics\nago\nagog\nagon\nagonal\nagone\nagones\nagonic\nagonies\nagonise\nagonised\nagonises\nagonising\nagonist\nagonists\nagonize\nagonized\nagonizes\nagonizing\nagonizingly\nagons\nagony\nagora\nagorae\nagoraphobia\nagoraphobic\nagoras\nagorot\nagoroth\nagouti\nagouties\nagoutis\nagouty\nagrafe\nagrafes\nagraffe\nagraffes\nagrapha\nagraphia\nagraphias\nagraphic\nagrarian\nagrarianism\nagrarians\nagree\nagreeability\nagreeable\nagreeableness\nagreeably\nagreed\nagreeing\nagreement\nagreements\nagrees\nagrestal\nagrestic\nagria\nagricultural\nagriculturalist\nagriculturalists\nagriculture\nagricultures\nagriculturist\nagriculturists\nagrimonies\nagrimony\nagrologies\nagrology\nagronomic\nagronomically\nagronomies\nagronomist\nagronomists\nagronomy\naground\nague\naguelike\nagues\nagueweed\nagueweeds\naguish\naguishly\nah\naha\nahchoo\nahead\nahem\nahimsa\nahimsas\nahold\naholds\nahorse\nahoy\nahull\nai\naiblins\naid\naide\naided\naider\naiders\naides\naidful\naiding\naidless\naidman\naidmen\naids\naiglet\naiglets\naigret\naigrets\naigrette\naigrettes\naiguille\naiguilles\naikido\naikidos\nail\nailed\naileron\nailerons\nailing\nailment\nailments\nails\naim\naimed\naimer\naimers\naimful\naimfully\naiming\naimless\naimlessly\naimlessness\naims\nain\nains\nainsell\nainsells\naioli\nair\nairboat\nairboats\nairborne\nairbound\nairbrush\nairbrushed\nairbrushes\nairbrushing\nairburst\nairbursts\nairbus\nairbuses\nairbusses\naircoach\naircoaches\naircraft\naircrew\naircrews\nairdrome\nairdromes\nairdrop\nairdropped\nairdropping\nairdrops\naired\nairer\nairest\nairfield\nairfields\nairflow\nairflows\nairfoil\nairfoils\nairframe\nairframes\nairglow\nairglows\nairhead\nairheads\nairier\nairiest\nairily\nairiness\nairinesses\nairing\nairings\nairless\nairlift\nairlifted\nairlifting\nairlifts\nairlike\nairline\nairliner\nairliners\nairlines\nairmail\nairmailed\nairmailing\nairmails\nairman\nairmen\nairn\nairns\nairpark\nairparks\nairplane\nairplanes\nairport\nairports\nairpost\nairposts\nairproof\nairproofed\nairproofing\nairproofs\nairs\nairscrew\nairscrews\nairship\nairships\nairsick\nairsickness\nairspace\nairspaces\nairspeed\nairspeeds\nairstream\nairstreams\nairstrip\nairstrips\nairt\nairted\nairth\nairthed\nairthing\nairths\nairtight\nairtightness\nairting\nairts\nairward\nairwave\nairwaves\nairway\nairways\nairwise\nairwoman\nairwomen\nairworthiness\nairworthy\nairy\nais\naisle\naisled\naisles\nait\naitch\naitches\naits\naiver\naivers\najar\najee\najiva\najivas\najowan\najowans\najuga\nakee\nakees\nakela\nakelas\nakene\nakenes\nakimbo\nakin\nakvavit\nakvavits\nal\nala\nalabaster\nalabasters\nalack\nalacrities\nalacritous\nalacrity\nalae\nalameda\nalamedas\nalamo\nalamode\nalamodes\nalamos\nalan\naland\nalands\nalane\nalang\nalanin\nalanine\nalanines\nalanins\nalans\nalant\nalants\nalanyl\nalanyls\nalar\nalarm\nalarmed\nalarming\nalarmingly\nalarmism\nalarmisms\nalarmist\nalarmists\nalarms\nalarum\nalarumed\nalaruming\nalarums\nalary\nalas\nalaska\nalaskas\nalastor\nalastors\nalate\nalated\nalation\nalations\nalb\nalba\nalbacore\nalbacores\nalbas\nalbata\nalbatas\nalbatross\nalbatrosses\nalbedo\nalbedos\nalbeit\nalbicore\nalbicores\nalbinal\nalbinic\nalbinism\nalbinisms\nalbinistic\nalbino\nalbinos\nalbite\nalbites\nalbitic\nalbs\nalbum\nalbumen\nalbumens\nalbumin\nalbuminous\nalbumins\nalbumose\nalbumoses\nalbums\nalburnum\nalburnums\nalcade\nalcades\nalcahest\nalcahests\nalcaic\nalcaics\nalcaide\nalcaides\nalcalde\nalcaldes\nalcayde\nalcaydes\nalcazar\nalcazars\nalchemic\nalchemical\nalchemies\nalchemist\nalchemists\nalchemy\nalchymies\nalchymy\nalcid\nalcidine\nalcohol\nalcoholic\nalcoholically\nalcoholics\nalcoholism\nalcohols\nalcove\nalcoved\nalcoves\naldehyde\naldehydes\nalder\nalderman\naldermen\nalders\nalderwoman\nalderwomen\naldol\naldolase\naldolases\naldols\naldose\naldoses\naldrin\naldrins\nale\naleatoric\naleatory\nalec\nalecs\nalee\nalef\nalefs\nalegar\nalegars\nalehouse\nalehouses\nalembic\nalembics\naleph\nalephs\nalert\nalerted\nalerter\nalertest\nalerting\nalertly\nalertness\nalerts\nales\naleuron\naleurone\naleurones\naleurons\nalevin\nalevins\nalewife\nalewives\nalexandrine\nalexia\nalexias\nalexin\nalexine\nalexines\nalexins\nalfa\nalfaki\nalfakis\nalfalfa\nalfalfas\nalfaqui\nalfaquin\nalfaquins\nalfaquis\nalfas\nalforja\nalforjas\nalfresco\nalga\nalgae\nalgal\nalgaroba\nalgarobas\nalgas\nalgebra\nalgebraic\nalgebraically\nalgebras\nalgerine\nalgerines\nalgicide\nalgicides\nalgid\nalgidities\nalgidity\nalgin\nalginate\nalginates\nalgins\nalgoid\nalgologies\nalgology\nalgor\nalgorism\nalgorisms\nalgorithm\nalgorithmic\nalgorithms\nalgors\nalgum\nalgums\nalias\naliases\nalibi\nalibied\nalibies\nalibiing\nalibis\nalible\nalidad\nalidade\nalidades\nalidads\nalien\nalienabilities\nalienability\nalienable\nalienage\nalienages\nalienate\nalienated\nalienates\nalienating\nalienation\nalienations\naliened\nalienee\nalienees\naliener\nalieners\naliening\nalienism\nalienisms\nalienist\nalienists\nalienly\nalienor\nalienors\naliens\nalif\naliform\nalifs\nalight\nalighted\nalighting\nalights\nalign\naligned\naligner\naligners\naligning\nalignment\nalignments\naligns\nalike\nalikeness\naliment\nalimentary\nalimented\nalimenting\naliments\nalimonies\nalimony\naline\nalined\nalinement\nalinements\naliner\naliners\nalines\nalining\naliped\nalipeds\naliphatic\naliquant\naliquot\naliquots\nalist\nalit\naliunde\nalive\naliveness\naliya\naliyah\naliyahs\nalizarin\nalizarins\nalkahest\nalkahests\nalkali\nalkalic\nalkalies\nalkalified\nalkalifies\nalkalify\nalkalifying\nalkalin\nalkaline\nalkalinities\nalkalinity\nalkalis\nalkalise\nalkalised\nalkalises\nalkalising\nalkalize\nalkalized\nalkalizes\nalkalizing\nalkaloid\nalkaloidal\nalkaloids\nalkane\nalkanes\nalkanet\nalkanets\nalkene\nalkenes\nalkine\nalkines\nalkoxy\nalky\nalkyd\nalkyds\nalkyl\nalkylate\nalkylated\nalkylates\nalkylating\nalkylic\nalkyls\nalkyne\nalkynes\nall\nallanite\nallanites\nallay\nallayed\nallayer\nallayers\nallaying\nallays\nallegation\nallegations\nallege\nalleged\nallegedly\nalleger\nallegers\nalleges\nallegiance\nallegiances\nalleging\nallegorical\nallegorically\nallegories\nallegorize\nallegorized\nallegorizes\nallegorizing\nallegory\nallegretto\nallegro\nallegros\nallele\nalleles\nallelic\nallelism\nallelisms\nalleluia\nalleluias\nallemande\nallemandes\nallergen\nallergenic\nallergens\nallergic\nallergies\nallergin\nallergins\nallergist\nallergists\nallergy\nalleviate\nalleviated\nalleviates\nalleviating\nalleviation\nalleviations\nalley\nalleys\nalleyway\nalleyways\nallheal\nallheals\nalliable\nalliance\nalliances\nallied\nallies\nalligator\nalligators\nalliterate\nalliterated\nalliterates\nalliterating\nalliteration\nalliterations\nalliterative\nalliteratively\nallium\nalliums\nallobar\nallobars\nallocatable\nallocate\nallocated\nallocates\nallocating\nallocation\nallocations\nallocution\nallocutions\nallod\nallodia\nallodial\nallodium\nallods\nallogamies\nallogamy\nallonge\nallonges\nallonym\nallonyms\nallopath\nallopaths\nallot\nallotment\nallotments\nallotropies\nallotropy\nallots\nallotted\nallottee\nallottees\nallotter\nallotters\nallotting\nallotype\nallotypes\nallotypies\nallotypy\nallover\nallovers\nallow\nallowable\nallowably\nallowance\nallowances\nallowed\nallowing\nallows\nalloxan\nalloxans\nalloy\nalloyed\nalloying\nalloys\nalls\nallseed\nallseeds\nallspice\nallspices\nallude\nalluded\nalludes\nalluding\nallure\nallured\nallurement\nallurements\nallurer\nallurers\nallures\nalluring\nalluringly\nallusion\nallusions\nallusive\nallusively\nallusiveness\nalluvia\nalluvial\nalluvials\nalluvion\nalluvions\nalluvium\nalluviums\nally\nallying\nallyl\nallylic\nallyls\nalma\nalmagest\nalmagests\nalmah\nalmahs\nalmanac\nalmanacs\nalmas\nalme\nalmeh\nalmehs\nalmemar\nalmemars\nalmes\nalmightiness\nalmighty\nalmner\nalmners\nalmond\nalmonds\nalmoner\nalmoners\nalmonries\nalmonry\nalmost\nalms\nalmsman\nalmsmen\nalmuce\nalmuces\nalmud\nalmude\nalmudes\nalmuds\nalmug\nalmugs\nalnico\nalnicoes\nalodia\nalodial\nalodium\naloe\naloes\naloetic\naloft\nalogical\naloha\nalohas\naloin\naloins\nalone\nalong\nalongshore\nalongside\naloof\naloofly\naloofness\nalopecia\nalopecias\nalopecic\naloud\nalow\nalp\nalpaca\nalpacas\nalpenstock\nalpenstocks\nalpha\nalphabet\nalphabeted\nalphabetic\nalphabetical\nalphabetically\nalphabeting\nalphabetization\nalphabetizations\nalphabetize\nalphabetized\nalphabetizer\nalphabetizers\nalphabetizes\nalphabetizing\nalphabets\nalphameric\nalphanumeric\nalphas\nalphorn\nalphorns\nalphosis\nalphosises\nalphyl\nalphyls\nalpine\nalpinely\nalpines\nalpinism\nalpinisms\nalpinist\nalpinists\nalps\nalready\nalright\nals\nalsike\nalsikes\nalso\nalt\naltar\naltarpiece\naltarpieces\naltars\nalter\nalterabilities\nalterability\nalterable\nalterably\nalterant\nalterants\nalteration\nalterations\nalterative\nalteratives\naltercation\naltercations\naltered\nalterer\nalterers\naltering\nalternate\nalternated\nalternately\nalternates\nalternating\nalternation\nalternations\nalternative\nalternatively\nalternatives\nalternator\nalternators\nalters\nalthaea\nalthaeas\nalthea\naltheas\naltho\nalthorn\nalthorns\nalthough\naltimeter\naltimeters\naltitude\naltitudes\nalto\naltogether\naltos\naltruism\naltruisms\naltruist\naltruistic\naltruistically\naltruists\nalts\naludel\naludels\nalula\nalulae\nalular\nalum\nalumin\nalumina\naluminas\nalumine\nalumines\naluminic\naluminize\naluminized\naluminizes\naluminizing\nalumins\naluminum\naluminums\nalumna\nalumnae\nalumni\nalumnus\nalumroot\nalumroots\nalums\nalunite\nalunites\nalveolar\nalveolars\nalveoli\nalveolus\nalvine\nalway\nalways\nalyssum\nalyssums\nam\nama\namadavat\namadavats\namadou\namadous\namah\namahs\namain\namalgam\namalgamate\namalgamated\namalgamates\namalgamating\namalgamation\namalgamations\namalgamator\namalgamators\namalgams\namandine\namanita\namanitas\namanuenses\namanuensis\namaranth\namaranthine\namaranths\namarelle\namarelles\namarna\namaryllis\namaryllises\namas\namass\namassed\namasser\namassers\namasses\namassing\namateur\namateurish\namateurishly\namateurishness\namateurism\namateurisms\namateurs\namative\namatol\namatols\namatory\namaze\namazed\namazedly\namazement\namazements\namazes\namazing\namazingly\namazon\namazonian\namazons\nambage\nambages\nambari\nambaries\nambaris\nambary\nambassador\nambassadorial\nambassadors\nambassadorship\nambassadorships\nambeer\nambeers\namber\nambergris\nambergrises\namberies\namberoid\namberoids\nambers\nambery\nambiance\nambiances\nambidexterity\nambidextrous\nambidextrously\nambience\nambiences\nambient\nambients\nambiguities\nambiguity\nambiguous\nambiguously\nambiguousness\nambit\nambition\nambitioned\nambitioning\nambitions\nambitious\nambitiously\nambitiousness\nambits\nambivalence\nambivalences\nambivalent\nambivert\nambiverts\namble\nambled\nambler\namblers\nambles\nambling\nambo\namboina\namboinas\nambones\nambos\namboyna\namboynas\nambries\nambroid\nambroids\nambrosia\nambrosias\nambry\nambsace\nambsaces\nambulance\nambulances\nambulant\nambulate\nambulated\nambulates\nambulating\nambulatory\nambuscade\nambuscaded\nambuscades\nambuscading\nambush\nambushed\nambusher\nambushers\nambushes\nambushing\nameba\namebae\nameban\namebas\namebean\namebic\nameboid\nameer\nameerate\nameerates\nameers\namelcorn\namelcorns\nameliorate\nameliorated\nameliorates\nameliorating\namelioration\nameliorations\nameliorative\namen\namenability\namenable\namenably\namend\namendable\namendatory\namended\namender\namenders\namending\namendment\namendments\namends\namenities\namenity\namens\nament\namentia\namentias\naments\namerce\namerced\namercer\namercers\namerces\namercing\namericium\namesace\namesaces\namethyst\namethysts\nami\namia\namiability\namiable\namiably\namiantus\namiantuses\namias\namicability\namicable\namicably\namice\namices\namid\namidase\namidases\namide\namides\namidic\namidin\namidins\namido\namidogen\namidogens\namidol\namidols\namids\namidship\namidships\namidst\namie\namies\namiga\namigas\namigo\namigos\namin\namine\namines\naminic\naminities\naminity\namino\namins\namir\namirate\namirates\namirs\namis\namiss\namities\namitoses\namitosis\namitotic\namitrole\namitroles\namity\nammeter\nammeters\nammine\nammines\nammino\nammo\nammocete\nammocetes\nammonal\nammonals\nammonia\nammoniac\nammoniacs\nammonias\nammonic\nammonified\nammonifies\nammonify\nammonifying\nammonite\nammonites\nammonium\nammoniums\nammonoid\nammonoids\nammos\nammunition\nammunitions\namnesia\namnesiac\namnesiacs\namnesias\namnesic\namnesics\namnestic\namnestied\namnesties\namnesty\namnestying\namnic\namniocenteses\namniocentesis\namnion\namnionia\namnionic\namnionions\namniote\namniotes\namniotic\namoeba\namoebae\namoeban\namoebas\namoebean\namoebic\namoeboid\namok\namoks\namole\namoles\namong\namongst\namontillado\namontillados\namoral\namorality\namorally\namoretti\namoretto\namorettos\namorini\namorino\namorist\namorists\namoroso\namorous\namorously\namorousness\namorphous\namorphously\namorphousness\namort\namortise\namortised\namortises\namortising\namortizable\namortization\namortizations\namortize\namortized\namortizes\namortizing\namotion\namotions\namount\namounted\namounting\namounts\namour\namours\namp\namperage\namperages\nampere\namperes\nampersand\nampersands\namphetamine\namphetamines\namphibia\namphibian\namphibians\namphibious\namphioxi\namphipod\namphipods\namphitheater\namphitheaters\namphora\namphorae\namphoral\namphoras\nample\nampler\namplest\namplification\namplifications\namplified\namplifier\namplifiers\namplifies\namplify\namplifying\namplitude\namplitudes\namply\nampoule\nampoules\namps\nampul\nampule\nampules\nampulla\nampullae\nampullar\nampuls\namputate\namputated\namputates\namputating\namputation\namputations\namputee\namputees\namreeta\namreetas\namrita\namritas\namtrac\namtrack\namtracks\namtracs\namu\namuck\namucks\namulet\namulets\namus\namusable\namuse\namused\namusedly\namusement\namusements\namuser\namusers\namuses\namusing\namusingly\namusive\namygdala\namygdalae\namygdale\namygdales\namygdule\namygdules\namyl\namylase\namylases\namylene\namylenes\namylic\namyloid\namyloids\namylose\namyloses\namyls\namylum\namylums\nan\nana\nanabaena\nanabaenas\nanabas\nanabases\nanabasis\nanabatic\nanableps\nanablepses\nanabolic\nanabolism\nanabolisms\nanachronism\nanachronisms\nanachronistic\nanaconda\nanacondas\nanadem\nanadems\nanaemia\nanaemias\nanaemic\nanaerobe\nanaerobes\nanaglyph\nanaglyphs\nanagoge\nanagoges\nanagogic\nanagogies\nanagogy\nanagram\nanagrammed\nanagramming\nanagrams\nanal\nanalcime\nanalcimes\nanalcite\nanalcites\nanalecta\nanalects\nanalemma\nanalemmas\nanalemmata\nanalgesia\nanalgesic\nanalgesics\nanalgia\nanalgias\nanalities\nanality\nanally\nanalog\nanalogic\nanalogical\nanalogically\nanalogies\nanalogize\nanalogized\nanalogizes\nanalogizing\nanalogous\nanalogously\nanalogs\nanalogue\nanalogues\nanalogy\nanalyse\nanalysed\nanalyser\nanalysers\nanalyses\nanalysing\nanalysis\nanalyst\nanalysts\nanalytic\nanalytical\nanalytically\nanalyze\nanalyzed\nanalyzer\nanalyzers\nanalyzes\nanalyzing\nananke\nanankes\nanapaest\nanapaests\nanapest\nanapests\nanaphase\nanaphases\nanaphora\nanaphoras\nanarch\nanarchic\nanarchies\nanarchism\nanarchisms\nanarchist\nanarchistic\nanarchists\nanarchs\nanarchy\nanas\nanasarca\nanasarcas\nanatase\nanatases\nanathema\nanathemas\nanathemata\nanathematize\nanathematized\nanathematizes\nanathematizing\nanatomic\nanatomical\nanatomically\nanatomies\nanatomist\nanatomists\nanatomize\nanatomized\nanatomizes\nanatomizing\nanatomy\nanatoxin\nanatoxins\nanatto\nanattos\nancestor\nancestors\nancestral\nancestress\nancestresses\nancestries\nancestry\nanchor\nanchorage\nanchorages\nanchored\nanchoret\nanchorets\nanchoring\nanchorite\nanchorites\nanchorman\nanchormen\nanchors\nanchovies\nanchovy\nanchusa\nanchusas\nanchusin\nanchusins\nancient\nancienter\nancientest\nanciently\nancientness\nancients\nancilla\nancillae\nancillary\nancillas\nancon\nanconal\nancone\nanconeal\nancones\nanconoid\nancress\nancresses\nand\nandante\nandantes\nandesite\nandesites\nandesyte\nandesytes\nandiron\nandirons\nandrogen\nandrogenic\nandrogens\nandrogynous\nandroid\nandroids\nands\nane\nanear\naneared\nanearing\nanears\nanecdota\nanecdotal\nanecdotally\nanecdote\nanecdotes\nanecdotist\nanecdotists\nanechoic\nanele\naneled\naneles\naneling\nanemia\nanemias\nanemic\nanemograph\nanemographs\nanemometer\nanemometers\nanemone\nanemones\nanenst\nanent\nanergia\nanergias\nanergic\nanergies\nanergy\naneroid\naneroids\nanes\nanesthesia\nanesthesias\nanesthesiologist\nanesthesiologists\nanesthesiology\nanesthetic\nanesthetics\nanesthetist\nanesthetists\nanesthetize\nanesthetized\nanesthetizes\nanesthetizing\nanestri\nanestrus\nanethol\nanethole\nanetholes\nanethols\naneurism\naneurisms\naneurysm\naneurysmal\naneurysms\nanew\nanga\nangaria\nangarias\nangaries\nangary\nangas\nangel\nangelfish\nangelic\nangelica\nangelical\nangelically\nangelicas\nangels\nangelus\nangeluses\nanger\nangered\nangering\nangerly\nangers\nangina\nanginal\nanginas\nanginose\nanginous\nangioma\nangiomas\nangiomata\nangle\nangled\nanglepod\nanglepods\nangler\nanglers\nangles\nangleworm\nangleworms\nanglice\nanglicism\nanglicisms\nanglicize\nanglicized\nanglicizes\nanglicizing\nangling\nanglings\nangora\nangoras\nangrier\nangriest\nangrily\nangry\nangst\nangstrom\nangstroms\nangsts\nanguine\nanguish\nanguished\nanguishes\nanguishing\nangular\nangularities\nangularity\nangularly\nangulate\nangulated\nangulates\nangulating\nangulose\nangulous\nanhinga\nanhingas\nanhydride\nanhydrides\nanhydrous\nani\nanil\nanile\nanilin\naniline\nanilines\nanilins\nanilities\nanility\nanils\nanima\nanimadversion\nanimadversions\nanimal\nanimalcule\nanimalcules\nanimalism\nanimalisms\nanimalistic\nanimally\nanimals\nanimas\nanimate\nanimated\nanimatedly\nanimater\nanimaters\nanimates\nanimating\nanimation\nanimations\nanimato\nanimator\nanimators\nanime\nanimes\nanimi\nanimis\nanimism\nanimisms\nanimist\nanimistic\nanimists\nanimosities\nanimosity\nanimus\nanimuses\nanion\nanionic\nanions\nanis\nanise\naniseed\naniseeds\nanises\nanisette\nanisettes\nanisic\nanisole\nanisoles\nankerite\nankerites\nankh\nankhs\nankle\nanklebone\nanklebones\nankles\nanklet\nanklets\nankus\nankuses\nankush\nankushes\nankylose\nankylosed\nankyloses\nankylosing\nanlace\nanlaces\nanlage\nanlagen\nanlages\nanlas\nanlases\nanna\nannal\nannalist\nannalistic\nannalists\nannals\nannas\nannates\nannatto\nannattos\nanneal\nannealed\nannealer\nannealers\nannealing\nanneals\nannelid\nannelids\nannex\nannexation\nannexational\nannexationist\nannexationists\nannexations\nannexe\nannexed\nannexes\nannexing\nannihilate\nannihilated\nannihilates\nannihilating\nannihilation\nannihilations\nannihilator\nannihilators\nanniversaries\nanniversary\nannotate\nannotated\nannotates\nannotating\nannotation\nannotations\nannotator\nannotators\nannounce\nannounced\nannouncement\nannouncements\nannouncer\nannouncers\nannounces\nannouncing\nannoy\nannoyance\nannoyances\nannoyed\nannoyer\nannoyers\nannoying\nannoyingly\nannoys\nannual\nannualize\nannualized\nannualizes\nannualizing\nannually\nannuals\nannuitant\nannuitants\nannuities\nannuity\nannul\nannular\nannulate\nannulet\nannulets\nannuli\nannulled\nannulling\nannulment\nannulments\nannulose\nannuls\nannulus\nannuluses\nannunciate\nannunciated\nannunciates\nannunciating\nannunciation\nannunciations\nannunciator\nannunciators\nanoa\nanoas\nanodal\nanodally\nanode\nanodes\nanodic\nanodically\nanodize\nanodized\nanodizes\nanodizing\nanodyne\nanodynes\nanodynic\nanoint\nanointed\nanointer\nanointers\nanointing\nanointment\nanointments\nanoints\nanole\nanoles\nanolyte\nanolytes\nanomalies\nanomalous\nanomalously\nanomaly\nanomic\nanomie\nanomies\nanomy\nanon\nanonym\nanonymities\nanonymity\nanonymous\nanonymously\nanonymousness\nanonyms\nanoopsia\nanoopsias\nanopheles\nanopia\nanopias\nanopsia\nanopsias\nanorak\nanoraks\nanoretic\nanorexia\nanorexias\nanorexies\nanorexy\nanorthic\nanosmia\nanosmias\nanosmic\nanother\nanoxemia\nanoxemias\nanoxemic\nanoxia\nanoxias\nanoxic\nansa\nansae\nansate\nansated\nanserine\nanserines\nanserous\nanswer\nanswerable\nanswered\nanswerer\nanswerers\nanswering\nanswers\nant\nanta\nantacid\nantacids\nantae\nantagonism\nantagonisms\nantagonist\nantagonistic\nantagonistically\nantagonists\nantagonize\nantagonized\nantagonizes\nantagonizing\nantalgic\nantalgics\nantarctic\nantas\nante\nanteater\nanteaters\nantebellum\nantecede\nanteceded\nantecedent\nantecedently\nantecedents\nantecedes\nanteceding\nantechamber\nantechambers\nanted\nantedate\nantedated\nantedates\nantedating\nantediluvian\nanteed\nantefix\nantefixa\nantefixes\nanteing\nantelope\nantelopes\nantenna\nantennae\nantennal\nantennas\nantepast\nantepasts\nantepenult\nantepenultimate\nantepenultimates\nantepenults\nanterior\nanteriorly\nanteroom\nanterooms\nantes\nantetype\nantetypes\nantevert\nanteverted\nanteverting\nanteverts\nanthelia\nanthelices\nanthelix\nanthem\nanthemed\nanthemia\nantheming\nanthems\nanther\nantheral\nantherid\nantherids\nanthers\nantheses\nanthesis\nanthill\nanthills\nanthodia\nanthoid\nanthologies\nanthologist\nanthologists\nanthologize\nanthologized\nanthologizes\nanthologizing\nanthology\nanthraces\nanthracite\nanthracites\nanthracitic\nanthrax\nanthropocentric\nanthropoid\nanthropoids\nanthropological\nanthropologically\nanthropologist\nanthropologists\nanthropology\nanthropomorphic\nanthropomorphically\nanthropomorphism\nanthropomorphisms\nanthropomorphize\nanthropomorphized\nanthropomorphizes\nanthropomorphizing\nanti\nantiaircraft\nantiar\nantiarin\nantiarins\nantiars\nantiauthoritarian\nantiauthoritarianism\nantibacterial\nantibacterials\nantibiotic\nantibiotics\nantibodies\nantibody\nantic\nanticipate\nanticipated\nanticipates\nanticipating\nanticipation\nanticipations\nanticipator\nanticipators\nanticipatory\nantick\nanticked\nanticking\nanticks\nanticlimactic\nanticlimactically\nanticlimax\nanticlimaxes\nanticly\nantics\nantidepressant\nantidepressants\nantidisestablishmentarianism\nantidotal\nantidotally\nantidote\nantidotes\nantiestablishment\nantifat\nantifreeze\nantifreezes\nantigen\nantigene\nantigenes\nantigens\nantihero\nantiheroes\nantiheroic\nantiheroine\nantiheroines\nantihistamine\nantihistamines\nantiking\nantikings\nantiknock\nantilog\nantilogarithm\nantilogarithms\nantilogies\nantilogs\nantilogy\nantimacassar\nantimacassars\nantimask\nantimasks\nantimatter\nantimere\nantimeres\nantimicrobial\nantimicrobials\nantimonies\nantimony\nanting\nantings\nantinode\nantinodes\nantinomies\nantinomy\nantinuclear\nantiparticle\nantiparticles\nantipasti\nantipasto\nantipathetic\nantipathies\nantipathy\nantipersonnel\nantiperspirant\nantiperspirants\nantiphon\nantiphonal\nantiphonies\nantiphons\nantiphony\nantipodal\nantipode\nantipodes\nantipole\nantipoles\nantipollution\nantipope\nantipopes\nantipyic\nantipyics\nantiquarian\nantiquarianism\nantiquarians\nantiquaries\nantiquary\nantiquate\nantiquated\nantiquates\nantiquating\nantique\nantiqued\nantiquer\nantiquers\nantiques\nantiquing\nantiquities\nantiquity\nantirust\nantirusts\nantis\nantisepsis\nantiseptic\nantiseptically\nantiseptics\nantisera\nantiskid\nantismog\nantisocial\nantitank\nantitax\nantitheses\nantithesis\nantithetic\nantithetical\nantithetically\nantitoxic\nantitoxin\nantitoxins\nantitrust\nantitype\nantitypes\nantiviral\nantiwar\nantler\nantlered\nantlers\nantlike\nantlion\nantlions\nantonym\nantonymies\nantonyms\nantonymy\nantra\nantral\nantre\nantres\nantrorse\nantrum\nants\nantsy\nanuran\nanurans\nanureses\nanuresis\nanuretic\nanuria\nanurias\nanuric\nanurous\nanus\nanuses\nanvil\nanviled\nanviling\nanvilled\nanvilling\nanvils\nanviltop\nanviltops\nanxieties\nanxiety\nanxious\nanxiously\nanxiousness\nany\nanybodies\nanybody\nanyhow\nanymore\nanyone\nanyplace\nanything\nanythings\nanytime\nanyway\nanyways\nanywhere\nanywheres\nanywise\naorist\naoristic\naorists\naorta\naortae\naortal\naortas\naortic\naoudad\naoudads\napace\napache\napaches\napagoge\napagoges\napagogic\napanage\napanages\naparejo\naparejos\napart\napartheid\napartment\napartments\napatetic\napathetic\napathetically\napathies\napathy\napatite\napatites\nape\napeak\naped\napeek\napelike\naper\napercu\napercus\naperient\naperients\naperies\naperitif\naperitifs\napers\naperture\napertures\napery\napes\napetalies\napetaly\napex\napexes\naphagia\naphagias\naphanite\naphanites\naphasia\naphasiac\naphasiacs\naphasias\naphasic\naphasics\naphelia\naphelian\naphelion\napheses\naphesis\naphetic\naphid\naphides\naphidian\naphidians\naphids\naphis\napholate\napholates\naphonia\naphonias\naphonic\naphonics\naphorise\naphorised\naphorises\naphorising\naphorism\naphorisms\naphorist\naphoristic\naphoristically\naphorists\naphorize\naphorized\naphorizes\naphorizing\naphotic\naphrodisiac\naphrodisiacal\naphrodisiacs\naphtha\naphthae\naphthous\naphyllies\naphylly\napian\napiarian\napiarians\napiaries\napiarist\napiarists\napiary\napical\napically\napices\napiculi\napiculus\napiece\napimania\napimanias\naping\napiologies\napiology\napish\napishly\naplasia\naplasias\naplastic\naplenty\naplite\naplites\naplitic\naplomb\naplombs\napnea\napneal\napneas\napneic\napnoea\napnoeal\napnoeas\napnoeic\napocalypse\napocalyptic\napocalyptically\napocarp\napocarpies\napocarps\napocarpy\napocope\napocopes\napocopic\napocrine\napocrypha\napocryphal\napocryphally\napod\napodal\napodoses\napodosis\napodous\napods\napogamic\napogamies\napogamy\napogeal\napogean\napogee\napogees\napogeic\napolitical\napollo\napollos\napolog\napologal\napologetic\napologetically\napologia\napologiae\napologias\napologies\napologist\napologists\napologize\napologized\napologizes\napologizing\napologs\napologue\napologues\napology\napolune\napolunes\napomict\napomicts\napomixes\napomixis\napophyge\napophyges\napoplectic\napoplexies\napoplexy\naport\napostacies\napostacy\napostasies\napostasy\napostate\napostates\napostatize\napostatized\napostatizes\napostatizing\napostil\napostils\napostle\napostles\napostolic\napostolicity\napostrophe\napostrophes\napostrophize\napostrophized\napostrophizes\napostrophizing\napothecaries\napothecary\napothece\napotheces\napothegm\napothegms\napothem\napothems\napotheoses\napotheosis\nappal\nappall\nappalled\nappalling\nappalls\nappals\nappanage\nappanages\napparat\napparats\napparatus\napparatuses\napparel\nappareled\nappareling\napparelled\napparelling\napparels\napparent\napparently\napparentness\napparition\napparitional\napparitions\nappeal\nappealability\nappealable\nappealed\nappealer\nappealers\nappealing\nappealingly\nappeals\nappear\nappearance\nappearances\nappeared\nappearing\nappears\nappeasable\nappease\nappeased\nappeasement\nappeasements\nappeaser\nappeasers\nappeases\nappeasing\nappel\nappellant\nappellants\nappellate\nappellation\nappellations\nappellee\nappellees\nappellor\nappellors\nappels\nappend\nappendage\nappendages\nappendectomies\nappendectomy\nappended\nappendices\nappendicitis\nappending\nappendix\nappendixes\nappends\napperceive\napperceived\napperceives\napperceiving\napperception\napperceptions\napperceptive\nappertain\nappertained\nappertaining\nappertains\nappestat\nappestats\nappetent\nappetite\nappetites\nappetizer\nappetizers\nappetizing\nappetizingly\napplaud\napplaudable\napplaudably\napplauded\napplauder\napplauders\napplauding\napplauds\napplause\napplauses\napple\napplejack\napples\nappliance\nappliances\napplicability\napplicable\napplicant\napplicants\napplication\napplications\napplicator\napplicators\napplied\napplier\nappliers\napplies\napplique\nappliqued\nappliqueing\nappliques\napply\napplying\nappoggiatura\nappoggiaturas\nappoint\nappointed\nappointee\nappointees\nappointing\nappointive\nappointment\nappointments\nappoints\napportion\napportioned\napportioning\napportionment\napportionments\napportions\nappose\napposed\napposer\napposers\napposes\napposing\napposite\nappositely\nappositeness\napposition\nappositional\nappositions\nappositive\nappositively\nappositives\nappraisal\nappraisals\nappraise\nappraised\nappraiser\nappraisers\nappraises\nappraising\nappreciable\nappreciably\nappreciate\nappreciated\nappreciates\nappreciating\nappreciation\nappreciations\nappreciative\nappreciatively\nappreciativeness\nappreciator\nappreciators\napprehend\napprehended\napprehending\napprehends\napprehensible\napprehensibly\napprehension\napprehensions\napprehensive\napprehensively\napprehensiveness\napprentice\napprenticed\napprentices\napprenticeship\napprenticeships\napprenticing\napprise\napprised\nappriser\napprisers\napprises\napprising\napprize\napprized\napprizer\napprizers\napprizes\napprizing\napproach\napproachability\napproachable\napproached\napproaches\napproaching\napprobate\napprobation\napprobations\nappropriate\nappropriated\nappropriately\nappropriateness\nappropriates\nappropriating\nappropriation\nappropriations\nappropriator\nappropriators\napproval\napprovals\napprove\napproved\napprover\napprovers\napproves\napproving\napprovingly\napproximate\napproximated\napproximately\napproximates\napproximating\napproximation\napproximations\nappulse\nappulses\nappurtenance\nappurtenances\nappurtenant\napractic\napraxia\napraxias\napraxic\napres\napricot\napricots\napron\naproned\naproning\naprons\napropos\napse\napses\napsidal\napsides\napsis\napt\napter\napteral\napterous\napteryx\napteryxes\naptest\naptitude\naptitudes\naptly\naptness\naptnesses\napyrase\napyrases\napyretic\naqua\naquacade\naquacades\naquaducts\naquae\naquamarine\naquamarines\naquanaut\naquanauts\naquaplane\naquaplaned\naquaplaner\naquaplaners\naquaplanes\naquaplaning\naquaria\naquarial\naquarian\naquarians\naquarist\naquarists\naquarium\naquariums\naquas\naquatic\naquatically\naquatics\naquatint\naquatinted\naquatinting\naquatints\naquatone\naquatones\naquavit\naquavits\naqueduct\naqueducts\naqueous\naquifer\naquiferous\naquifers\naquiline\naquiver\nar\narabesk\narabesks\narabesque\narabesques\narability\narabize\narabized\narabizes\narabizing\narable\narables\naraceous\narachnid\narachnids\naragonite\naragonites\narak\naraks\naraneid\naraneids\narapaima\narapaimas\nararoba\nararobas\narb\narbalest\narbalests\narbalist\narbalists\narbiter\narbiters\narbitrable\narbitral\narbitrament\narbitraments\narbitrarily\narbitrariness\narbitrary\narbitrate\narbitrated\narbitrates\narbitrating\narbitration\narbitrations\narbitrative\narbitrator\narbitrators\narbor\narboreal\narboreally\narbored\narbores\narboreta\narboretum\narboretums\narborist\narborists\narborize\narborized\narborizes\narborizing\narborous\narbors\narborvitae\narborvitaes\narbour\narboured\narbours\narbs\narbuscle\narbuscles\narbute\narbutean\narbutes\narbutus\narbutuses\narc\narcade\narcaded\narcades\narcadia\narcadian\narcadians\narcadias\narcading\narcadings\narcana\narcane\narcanum\narcature\narcatures\narced\narch\narchaeological\narchaeologist\narchaeologists\narchaeology\narchaic\narchaically\narchaise\narchaised\narchaises\narchaising\narchaism\narchaisms\narchaist\narchaists\narchaize\narchaized\narchaizes\narchaizing\narchangel\narchangels\narchbishop\narchbishops\narchdeacon\narchdeacons\narchdiocese\narchdioceses\narchduchess\narchduchesses\narchduchies\narchduchy\narchduke\narchdukes\narched\narchenemies\narchenemy\narcheological\narcheologist\narcheologists\narcheology\narcher\narcheries\narchers\narchery\narches\narchetypal\narchetype\narchetypes\narchfiend\narchfiends\narchiepiscopal\narchil\narchils\narchine\narchines\narching\narchings\narchipelago\narchipelagoes\narchipelagos\narchitect\narchitectonic\narchitectonics\narchitects\narchitectural\narchitecturally\narchitecture\narchitectures\narchitrave\narchitraves\narchival\narchive\narchived\narchives\narchiving\narchivist\narchivists\narchly\narchness\narchnesses\narchon\narchons\narchway\narchways\narciform\narcing\narcked\narcking\narco\narcs\narctic\narctics\narcuate\narcuated\narcus\narcuses\nardeb\nardebs\nardencies\nardency\nardent\nardently\nardor\nardors\nardour\nardours\narduous\narduously\narduousness\nare\narea\nareae\nareal\nareally\nareas\nareaway\nareaways\nareca\narecas\nareic\narena\narenas\narenose\narenous\nareola\nareolae\nareolar\nareolas\nareolate\nareole\nareoles\nareologies\nareology\nares\narete\naretes\narethusa\narethusas\narf\narfs\nargal\nargali\nargalis\nargals\nargent\nargental\nargentic\nargentine\nargentines\nargents\nargentum\nargentums\nargil\nargils\narginase\narginases\narginine\narginines\nargle\nargled\nargles\nargling\nargol\nargols\nargon\nargonaut\nargonauts\nargons\nargosies\nargosy\nargot\nargotic\nargots\narguable\narguably\nargue\nargued\narguer\narguers\nargues\nargufied\nargufier\nargufiers\nargufies\nargufy\nargufying\narguing\nargument\nargumentation\nargumentations\nargumentative\narguments\nargus\narguses\nargyle\nargyles\nargyll\nargylls\narhat\narhats\naria\narias\narid\narider\naridest\naridities\naridity\naridly\naridness\naridnesses\nariel\nariels\narietta\nariettas\nariette\nariettes\naright\naril\nariled\narillate\narillode\narillodes\narilloid\narils\nariose\nariosi\narioso\nariosos\narise\narisen\narises\narising\narista\naristae\naristas\naristate\naristocracies\naristocracy\naristocrat\naristocratic\naristocrats\narithmetic\narithmetical\narithmetically\narithmetician\narithmeticians\nark\narks\narles\narm\narmada\narmadas\narmadillo\narmadillos\narmament\narmaments\narmature\narmatured\narmatures\narmaturing\narmband\narmbands\narmchair\narmchairs\narmed\narmer\narmers\narmet\narmets\narmful\narmfuls\narmhole\narmholes\narmies\narmiger\narmigero\narmigeros\narmigers\narmilla\narmillae\narmillas\narming\narmings\narmistice\narmistices\narmless\narmlet\narmlets\narmlike\narmload\narmloads\narmoire\narmoires\narmonica\narmonicas\narmor\narmored\narmorer\narmorers\narmorial\narmorials\narmories\narmoring\narmors\narmory\narmour\narmoured\narmourer\narmourers\narmouries\narmouring\narmours\narmoury\narmpit\narmpits\narmrest\narmrests\narms\narmsful\narmure\narmures\narmy\narmyworm\narmyworms\narnatto\narnattos\narnica\narnicas\narnotto\narnottos\naroid\naroids\naroint\narointed\narointing\naroints\naroma\naromas\naromatic\naromatics\narose\naround\narousal\narousals\narouse\naroused\narouser\narousers\narouses\narousing\naroynt\naroynted\naroynting\naroynts\narpeggio\narpeggios\narpen\narpens\narpent\narpents\narquebus\narquebuses\narrack\narracks\narraign\narraigned\narraigning\narraignment\narraignments\narraigns\narrange\narranged\narrangement\narrangements\narranger\narrangers\narranges\narranging\narrant\narrantly\narras\narrased\narray\narrayal\narrayals\narrayed\narrayer\narrayers\narraying\narrays\narrear\narrears\narrest\narrested\narrestee\narrestees\narrester\narresters\narresting\narrestor\narrestors\narrests\narrhizal\narris\narrises\narrival\narrivals\narrive\narrived\narriver\narrivers\narrives\narriving\narroba\narrobas\narrogance\narrogant\narrogantly\narrogate\narrogated\narrogates\narrogating\narrogation\narrogations\narrow\narrowed\narrowhead\narrowheads\narrowing\narrowroot\narrows\narrowy\narroyo\narroyos\nars\narse\narsenal\narsenals\narsenate\narsenates\narsenic\narsenics\narsenide\narsenides\narsenite\narsenites\narseno\narsenous\narses\narshin\narshins\narsine\narsines\narsino\narsis\narson\narsonist\narsonists\narsonous\narsons\nart\nartal\nartefact\nartefacts\nartel\nartels\narterial\narterials\narteries\narteriosclerosis\narteriosclerotic\nartery\nartful\nartfully\nartfulness\narthritic\narthritides\narthritis\narthropod\nartichoke\nartichokes\narticle\narticled\narticles\narticling\narticular\narticulate\narticulated\narticulately\narticulateness\narticulates\narticulating\narticulation\narticulations\nartier\nartiest\nartifact\nartifacts\nartifice\nartificer\nartificers\nartifices\nartificial\nartificialities\nartificiality\nartificially\nartilleries\nartillery\nartily\nartiness\nartinesses\nartisan\nartisans\nartist\nartiste\nartistes\nartistic\nartistically\nartistries\nartistry\nartists\nartless\nartlessly\nartlessness\narts\nartsy\nartwork\nartworks\narty\narum\narums\naruspex\naruspices\narval\narvo\narvos\naryl\naryls\narythmia\narythmias\narythmic\nas\nasafetida\nasafoetida\nasarum\nasarums\nasbestic\nasbestos\nasbestoses\nasbestus\nasbestuses\nascarid\nascarides\nascarids\nascaris\nascend\nascendable\nascendancies\nascendancy\nascendant\nascendants\nascended\nascender\nascenders\nascendible\nascending\nascends\nascension\nascensions\nascent\nascents\nascertain\nascertained\nascertaining\nascertains\nasceses\nascesis\nascetic\nasceticism\nascetics\nasci\nascidia\nascidian\nascidians\nascidium\nascites\nascitic\nascocarp\nascocarps\nascorbic\nascot\nascots\nascribable\nascribe\nascribed\nascribes\nascribing\nascription\nascriptions\nascus\nasdic\nasdics\nasea\nasepses\nasepsis\naseptic\naseptically\nasexual\nasexuality\nasexually\nash\nashamed\nashamedly\nashcan\nashcans\nashed\nashen\nashes\nashier\nashiest\nashing\nashlar\nashlared\nashlaring\nashlars\nashler\nashlered\nashlering\nashlers\nashless\nashman\nashmen\nashore\nashplant\nashplants\nashram\nashrams\nashtray\nashtrays\nashy\naside\nasides\nasinine\nasininities\nasininity\nask\naskance\naskant\nasked\nasker\naskers\naskeses\naskesis\naskew\nasking\naskings\naskoi\naskos\nasks\naslant\nasleep\naslope\nasocial\nasp\nasparagus\naspect\naspects\naspen\naspens\nasper\nasperate\nasperated\nasperates\nasperating\nasperges\nasperities\nasperity\naspers\nasperse\naspersed\nasperser\naspersers\nasperses\naspersing\naspersion\naspersions\naspersor\naspersors\nasphalt\nasphalted\nasphaltic\nasphalting\nasphalts\naspheric\nasphodel\nasphodels\nasphyxia\nasphyxias\nasphyxiate\nasphyxiated\nasphyxiates\nasphyxiating\nasphyxiation\nasphyxiations\nasphyxiator\nasphyxiators\nasphyxies\nasphyxy\naspic\naspics\naspirant\naspirants\naspirata\naspiratae\naspirate\naspirated\naspirates\naspirating\naspiration\naspirations\naspirator\naspirators\naspire\naspired\naspirer\naspirers\naspires\naspirin\naspiring\naspirins\naspis\naspises\naspish\nasps\nasquint\nasrama\nasramas\nass\nassagai\nassagaied\nassagaiing\nassagais\nassai\nassail\nassailable\nassailant\nassailants\nassailed\nassailer\nassailers\nassailing\nassails\nassais\nassassin\nassassinate\nassassinated\nassassinates\nassassinating\nassassination\nassassinations\nassassinator\nassassinators\nassassins\nassault\nassaulted\nassaulting\nassaults\nassay\nassayed\nassayer\nassayers\nassaying\nassays\nassegai\nassegaied\nassegaiing\nassegais\nassemblage\nassemblages\nassemble\nassembled\nassembler\nassemblers\nassembles\nassemblies\nassembling\nassembly\nassemblyman\nassemblymen\nassemblywoman\nassemblywomen\nassent\nassented\nassenter\nassenters\nassenting\nassentor\nassentors\nassents\nassert\nasserted\nasserter\nasserters\nasserting\nassertion\nassertions\nassertive\nassertively\nassertor\nassertors\nasserts\nasses\nassess\nassessable\nassessed\nassesses\nassessing\nassessment\nassessments\nassessor\nassessors\nasset\nassets\nasseverate\nasseverated\nasseverates\nasseverating\nasseveration\nasseverations\nassiduities\nassiduity\nassiduous\nassiduously\nassiduousness\nassign\nassignable\nassignat\nassignation\nassignations\nassignats\nassigned\nassignee\nassignees\nassigner\nassigners\nassigning\nassignment\nassignments\nassignor\nassignors\nassigns\nassimilable\nassimilate\nassimilated\nassimilates\nassimilating\nassimilation\nassimilations\nassimilative\nassimilator\nassimilators\nassist\nassistance\nassistant\nassistants\nassistantship\nassistantships\nassisted\nassister\nassisters\nassisting\nassistor\nassistors\nassists\nassize\nassizes\nasslike\nassociate\nassociated\nassociates\nassociating\nassociation\nassociations\nassociative\nassociatively\nassociativities\nassociativity\nassoil\nassoiled\nassoiling\nassoils\nassonance\nassonances\nassonant\nassonants\nassort\nassorted\nassorter\nassorters\nassorting\nassortment\nassortments\nassorts\nassuage\nassuaged\nassuagement\nassuagements\nassuages\nassuaging\nassumable\nassume\nassumed\nassumer\nassumers\nassumes\nassuming\nassumption\nassumptions\nassurance\nassurances\nassure\nassured\nassuredly\nassureds\nassurer\nassurers\nassures\nassuring\nassuror\nassurors\nasswage\nasswaged\nasswages\nasswaging\nastasia\nastasias\nastatic\nastatine\nastatines\naster\nasteria\nasterias\nasterisk\nasterisked\nasterisking\nasterisks\nasterism\nasterisms\nastern\nasternal\nasteroid\nasteroids\nasters\nasthenia\nasthenias\nasthenic\nasthenics\nasthenies\nastheny\nasthma\nasthmas\nasthmatic\nasthmatics\nastigmatic\nastigmatically\nastigmatism\nastigmatisms\nastir\nastomous\nastonied\nastonies\nastonish\nastonished\nastonishes\nastonishing\nastonishingly\nastonishment\nastonishments\nastony\nastonying\nastound\nastounded\nastounding\nastoundingly\nastounds\nastrachan\nastrachans\nastraddle\nastragal\nastragals\nastrakhan\nastrakhans\nastral\nastrally\nastrals\nastray\nastrict\nastricted\nastricting\nastricts\nastride\nastringe\nastringed\nastringencies\nastringency\nastringent\nastringents\nastringes\nastringing\nastrodome\nastrodomes\nastrolabe\nastrolabes\nastrologer\nastrologers\nastrological\nastrology\nastronaut\nastronautic\nastronautical\nastronautically\nastronautics\nastronauts\nastronomer\nastronomers\nastronomic\nastronomical\nastronomically\nastronomy\nastrophysical\nastrophysicist\nastrophysicists\nastrophysics\nastute\nastutely\nastuteness\nastylar\nasunder\naswarm\naswirl\naswoon\nasyla\nasylum\nasylums\nasymmetric\nasymmetrical\nasymmetries\nasymmetry\nasymptote\nasymptotes\nasymptotic\nasymptotically\nasynchronous\nasynchronously\nasyndeta\nat\natabal\natabals\nataghan\nataghans\natalaya\natalayas\nataman\natamans\natamasco\natamascos\natap\nataps\nataraxia\nataraxias\nataraxic\nataraxics\nataraxies\nataraxy\natavic\natavism\natavisms\natavist\natavistic\natavistically\natavists\nataxia\nataxias\nataxic\nataxics\nataxies\nataxy\nate\natechnic\natelic\natelier\nateliers\nates\nathanasies\nathanasy\natheism\natheisms\natheist\natheistic\natheistical\natheistically\natheists\natheling\nathelings\nathenaeum\nathenaeums\natheneum\natheneums\natheroma\natheromas\natheromata\natherosclerosis\natherosclerotic\nathirst\nathlete\nathletes\nathletic\nathletically\nathletics\nathodyd\nathodyds\nathwart\natilt\natingle\natlantes\natlas\natlases\natlatl\natlatls\natma\natman\natmans\natmas\natmosphere\natmospheres\natmospheric\natmospherically\natmospherics\natoll\natolls\natom\natomic\natomical\natomically\natomics\natomies\natomise\natomised\natomises\natomising\natomism\natomisms\natomist\natomists\natomize\natomized\natomizer\natomizers\natomizes\natomizing\natoms\natomy\natonable\natonal\natonality\natonally\natone\natoned\natonement\natonements\natoner\natoners\natones\natonic\natonics\natonies\natoning\natony\natop\natopic\natopies\natopy\natrazine\natrazines\natremble\natresia\natresias\natria\natrial\natrip\natrium\natriums\natrocious\natrociously\natrocities\natrocity\natrophia\natrophias\natrophic\natrophied\natrophies\natrophy\natrophying\natropin\natropine\natropines\natropins\natropism\natropisms\nattach\nattachable\nattache\nattached\nattacher\nattachers\nattaches\nattaching\nattachment\nattachments\nattack\nattacked\nattacker\nattackers\nattacking\nattacks\nattain\nattainability\nattainable\nattainder\nattainders\nattained\nattainer\nattainers\nattaining\nattainment\nattainments\nattains\nattaint\nattainted\nattainting\nattaints\nattar\nattars\nattemper\nattempered\nattempering\nattempers\nattempt\nattempted\nattempting\nattempts\nattend\nattendance\nattendances\nattendant\nattendants\nattended\nattendee\nattendees\nattender\nattenders\nattending\nattends\nattent\nattention\nattentions\nattentive\nattentively\nattentiveness\nattenuate\nattenuated\nattenuates\nattenuating\nattenuation\nattenuations\nattest\nattestation\nattestations\nattested\nattester\nattesters\nattesting\nattestor\nattestors\nattests\nattic\natticism\natticisms\natticist\natticists\nattics\nattire\nattired\nattires\nattiring\nattitude\nattitudes\nattitudinize\nattitudinized\nattitudinizes\nattitudinizing\nattorn\nattorned\nattorney\nattorneys\nattorning\nattorns\nattract\nattracted\nattracting\nattraction\nattractions\nattractive\nattractively\nattractiveness\nattracts\nattributable\nattribute\nattributed\nattributes\nattributing\nattribution\nattributions\nattributive\nattrite\nattrited\nattrition\nattritions\nattune\nattuned\nattunes\nattuning\natwain\natween\natwitter\natypic\natypical\natypically\naubade\naubades\nauberge\nauberges\nauburn\nauburns\nauction\nauctioned\nauctioneer\nauctioneers\nauctioning\nauctions\naudacious\naudaciously\naudaciousness\naudacities\naudacity\naudad\naudads\naudibility\naudible\naudibles\naudibly\naudience\naudiences\naudient\naudients\naudile\naudiles\nauding\naudings\naudio\naudiologist\naudiologists\naudiology\naudiometer\naudiometers\naudiophile\naudiophiles\naudios\naudiovisual\naudiovisuals\naudit\naudited\nauditing\naudition\nauditioned\nauditioning\nauditions\nauditive\nauditives\nauditor\nauditories\nauditorium\nauditoriums\nauditors\nauditory\naudits\naugend\naugends\nauger\naugers\naught\naughts\naugite\naugites\naugitic\naugment\naugmentation\naugmentations\naugmentative\naugmented\naugmenting\naugments\naugur\naugural\naugured\naugurer\naugurers\nauguries\nauguring\naugurs\naugury\naugust\nauguster\naugustest\naugustly\nauk\nauklet\nauklets\nauks\nauld\naulder\nauldest\naulic\naunt\naunthood\naunthoods\nauntie\naunties\nauntlier\nauntliest\nauntlike\nauntly\naunts\naunty\naura\naurae\naural\naurally\naurar\nauras\naurate\naurated\naureate\naurei\naureola\naureolae\naureolas\naureole\naureoled\naureoles\naureoling\naures\naureus\nauric\nauricle\nauricled\nauricles\nauricula\nauriculae\nauricular\nauriculas\nauriferous\nauriform\nauris\naurist\naurists\naurochs\naurochses\naurora\naurorae\nauroral\nauroras\naurorean\naurous\naurum\naurums\nauscultation\nauscultations\nauspex\nauspice\nauspices\nauspicious\nauspiciously\nauspiciousness\naustere\nausterely\nausterer\nausterest\nausterities\nausterity\naustral\nautacoid\nautacoids\nautarchic\nautarchies\nautarchy\nautarkic\nautarkies\nautarky\nautecism\nautecisms\nauthentic\nauthentically\nauthenticate\nauthenticated\nauthenticates\nauthenticating\nauthentication\nauthentications\nauthenticator\nauthenticators\nauthenticity\nauthor\nauthored\nauthoress\nauthoresses\nauthorial\nauthoring\nauthoritarian\nauthoritative\nauthoritatively\nauthoritativeness\nauthorities\nauthority\nauthorization\nauthorizations\nauthorize\nauthorized\nauthorizer\nauthorizers\nauthorizes\nauthorizing\nauthors\nauthorship\nautism\nautisms\nautistic\nauto\nautobahn\nautobahnen\nautobahns\nautobiographer\nautobiographers\nautobiographic\nautobiographical\nautobiographically\nautobiographies\nautobiography\nautobus\nautobuses\nautobusses\nautocade\nautocades\nautocoid\nautocoids\nautocracies\nautocracy\nautocrat\nautocratic\nautocratical\nautocratically\nautocrats\nautodyne\nautodynes\nautoed\nautogamies\nautogamy\nautogenies\nautogeny\nautogiro\nautogiros\nautograph\nautographic\nautographically\nautographs\nautography\nautogyro\nautogyros\nautoing\nautoloading\nautolyze\nautolyzed\nautolyzes\nautolyzing\nautomata\nautomate\nautomated\nautomates\nautomatic\nautomatically\nautomaticity\nautomatics\nautomating\nautomation\nautomations\nautomatism\nautomatist\nautomatists\nautomatization\nautomatizations\nautomatize\nautomatized\nautomatizes\nautomatizing\nautomaton\nautomatons\nautomobile\nautomobiled\nautomobiles\nautomobiling\nautomobilist\nautomobilists\nautomotive\nautonomic\nautonomically\nautonomies\nautonomist\nautonomists\nautonomous\nautonomously\nautonomy\nautopsic\nautopsied\nautopsies\nautopsy\nautopsying\nautos\nautosome\nautosomes\nautosuggestion\nautosuggestions\nautotomies\nautotomy\nautotype\nautotypes\nautotypies\nautotypy\nautumn\nautumnal\nautumns\nautunite\nautunites\nauxeses\nauxesis\nauxetic\nauxetics\nauxiliaries\nauxiliary\nauxin\nauxinic\nauxins\nava\navail\navailability\navailable\navailableness\navailably\navailed\navailing\navails\navalanche\navalanched\navalanches\navalanching\navarice\navarices\navaricious\navariciously\navariciousness\navast\navatar\navatars\navaunt\nave\navellan\navellane\navenge\navenged\navenger\navengers\navenges\navenging\navens\navenses\naventail\naventails\navenue\navenues\naver\naverage\naveraged\naveragely\naverageness\naverages\naveraging\naverment\naverments\naverred\naverring\navers\naverse\naversely\naversion\naversions\naversive\navert\naverted\naverting\naverts\naves\navgas\navgases\navgasses\navian\navianize\navianized\navianizes\navianizing\navians\naviaries\naviarist\naviarists\naviary\naviate\naviated\naviates\naviating\naviation\naviations\naviator\naviators\naviatrices\naviatrix\naviatrixes\navicular\navid\navidin\navidins\navidities\navidity\navidly\navidness\navidnesses\navifauna\navifaunae\navifaunas\navigator\navigators\navion\navionic\navionics\navions\naviso\navisos\navo\navocado\navocadoes\navocados\navocation\navocations\navocet\navocets\navodire\navodires\navoid\navoidable\navoidably\navoidance\navoidances\navoided\navoider\navoiders\navoiding\navoids\navoirdupois\navos\navoset\navosets\navouch\navouched\navoucher\navouchers\navouches\navouching\navouchment\navouchments\navow\navowable\navowably\navowal\navowals\navowed\navowedly\navower\navowers\navowing\navows\navulse\navulsed\navulses\navulsing\navulsion\navulsions\navuncular\naw\nawa\nawait\nawaited\nawaiter\nawaiters\nawaiting\nawaits\nawake\nawaked\nawaken\nawakened\nawakener\nawakeners\nawakening\nawakenings\nawakens\nawakes\nawaking\naward\nawardable\nawarded\nawardee\nawardees\nawarder\nawarders\nawarding\nawards\naware\nawareness\nawash\naway\nawayness\nawaynesses\nawe\naweary\naweather\nawed\nawee\naweigh\naweing\naweless\nawes\nawesome\nawesomely\nawesomeness\nawestricken\nawestruck\nawful\nawfuller\nawfullest\nawfully\nawfulness\nawhile\nawhirl\nawing\nawkward\nawkwarder\nawkwardest\nawkwardly\nawkwardness\nawl\nawless\nawls\nawlwort\nawlworts\nawmous\nawn\nawned\nawning\nawninged\nawnings\nawnless\nawns\nawny\nawoke\nawoken\nawol\nawols\nawry\nax\naxal\naxe\naxed\naxel\naxels\naxeman\naxemen\naxenic\naxes\naxial\naxialities\naxiality\naxially\naxil\naxile\naxilla\naxillae\naxillar\naxillaries\naxillars\naxillary\naxillas\naxils\naxing\naxiologies\naxiology\naxiom\naxiomatic\naxiomatically\naxioms\naxis\naxised\naxises\naxite\naxites\naxle\naxled\naxles\naxletree\naxletrees\naxlike\naxman\naxmen\naxolotl\naxolotls\naxon\naxonal\naxone\naxones\naxonic\naxons\naxoplasm\naxoplasms\naxseed\naxseeds\nay\nayah\nayahs\nayatollah\nayatollahs\naye\nayes\nayin\nayins\nays\nazalea\nazaleas\nazan\nazans\nazide\nazides\nazido\nazimuth\nazimuthal\nazimuthally\nazimuths\nazine\nazines\nazlon\nazo\nazoic\nazole\nazoles\nazon\nazonal\nazonic\nazons\nazote\nazoted\nazotemia\nazotemias\nazotemic\nazotes\nazoth\nazoths\nazotic\nazotise\nazotised\nazotises\nazotising\nazotize\nazotized\nazotizes\nazotizing\nazoturia\nazoturias\nazure\nazures\nazurite\nazurites\nazygos\nazygoses\nazygous\nba\nbaa\nbaaed\nbaaing\nbaal\nbaalim\nbaalism\nbaalisms\nbaals\nbaas\nbaba\nbabas\nbabassu\nbabassus\nbabbitt\nbabbitted\nbabbitting\nbabbitts\nbabble\nbabbled\nbabbler\nbabblers\nbabbles\nbabbling\nbabblings\nbabe\nbabel\nbabels\nbabes\nbabesia\nbabesias\nbabiche\nbabiches\nbabied\nbabies\nbabirusa\nbabirusas\nbabka\nbabkas\nbaboo\nbabool\nbabools\nbaboon\nbaboons\nbaboos\nbabu\nbabul\nbabuls\nbabus\nbabushka\nbabushkas\nbaby\nbabyhood\nbabyhoods\nbabying\nbabyish\nbacca\nbaccae\nbaccalaureate\nbaccalaureates\nbaccara\nbaccaras\nbaccarat\nbaccarats\nbaccate\nbaccated\nbacchanal\nbacchanalia\nbacchanalian\nbacchanalians\nbacchanals\nbacchant\nbacchante\nbacchantes\nbacchantic\nbacchants\nbacchic\nbacchii\nbacchius\nbach\nbached\nbachelor\nbachelorhood\nbachelors\nbaches\nbaching\nbacillar\nbacillary\nbacilli\nbacillus\nback\nbackache\nbackaches\nbackbend\nbackbends\nbackbit\nbackbite\nbackbiter\nbackbiters\nbackbites\nbackbiting\nbackbitten\nbackbone\nbackbones\nbackbreaker\nbackbreakers\nbackbreaking\nbackdoor\nbackdrop\nbackdrops\nbacked\nbacker\nbackers\nbackfill\nbackfilled\nbackfilling\nbackfills\nbackfire\nbackfired\nbackfires\nbackfiring\nbackgammon\nbackground\nbackgrounds\nbackhand\nbackhanded\nbackhanding\nbackhands\nbackhoe\nbackhoes\nbacking\nbackings\nbacklash\nbacklashed\nbacklashes\nbacklashing\nbackless\nbacklist\nbacklists\nbacklit\nbacklog\nbacklogged\nbacklogging\nbacklogs\nbackmost\nbackout\nbackouts\nbackpack\nbackpacked\nbackpacker\nbackpackers\nbackpacking\nbackpacks\nbackrest\nbackrests\nbacks\nbacksaw\nbacksaws\nbackseat\nbackseats\nbackset\nbacksets\nbackside\nbacksides\nbackslap\nbackslapped\nbackslapper\nbackslappers\nbackslapping\nbackslaps\nbackslid\nbackslidden\nbackslide\nbackslider\nbacksliders\nbackslides\nbacksliding\nbackspace\nbackspaced\nbackspacer\nbackspacers\nbackspaces\nbackspacing\nbackspin\nbackspins\nbackstage\nbackstay\nbackstays\nbackstop\nbackstopped\nbackstopping\nbackstops\nbackstretch\nbackstretches\nbackstroke\nbackstroked\nbackstrokes\nbacktrack\nbacktracked\nbacktracking\nbacktracks\nbackup\nbackups\nbackward\nbackwardly\nbackwardness\nbackwards\nbackwash\nbackwashed\nbackwashes\nbackwashing\nbackwater\nbackwaters\nbackwood\nbackwoods\nbackyard\nbackyards\nbacon\nbacons\nbacteria\nbacterial\nbactericidal\nbactericide\nbactericides\nbacterin\nbacterins\nbacteriologic\nbacteriological\nbacteriologically\nbacteriologist\nbacteriologists\nbacteriology\nbacterium\nbaculine\nbad\nbaddie\nbaddies\nbaddy\nbade\nbadge\nbadged\nbadger\nbadgered\nbadgering\nbadgerly\nbadgers\nbadges\nbadging\nbadinage\nbadinaged\nbadinages\nbadinaging\nbadland\nbadlands\nbadly\nbadman\nbadmen\nbadminton\nbadmouth\nbadmouthed\nbadmouthing\nbadmouths\nbadness\nbadnesses\nbads\nbaff\nbaffed\nbaffies\nbaffing\nbaffle\nbaffled\nbafflement\nbafflements\nbaffler\nbafflers\nbaffles\nbaffling\nbaffs\nbaffy\nbag\nbagass\nbagasse\nbagasses\nbagatelle\nbagatelles\nbagel\nbagels\nbagful\nbagfuls\nbaggage\nbaggages\nbagged\nbaggie\nbaggier\nbaggies\nbaggiest\nbaggily\nbagging\nbaggings\nbaggy\nbagman\nbagmen\nbagnio\nbagnios\nbagpipe\nbagpiper\nbagpipers\nbagpipes\nbags\nbagsful\nbaguet\nbaguets\nbaguette\nbaguettes\nbagwig\nbagwigs\nbagworm\nbagworms\nbah\nbahadur\nbahadurs\nbaht\nbahts\nbaidarka\nbaidarkas\nbail\nbailable\nbailed\nbailee\nbailees\nbailer\nbailers\nbailey\nbaileys\nbailie\nbailies\nbailiff\nbailiffs\nbailing\nbailiwick\nbailiwicks\nbailment\nbailments\nbailor\nbailors\nbailout\nbailouts\nbails\nbailsman\nbailsmen\nbairn\nbairnish\nbairnlier\nbairnliest\nbairnly\nbairns\nbait\nbaited\nbaiter\nbaiters\nbaith\nbaiting\nbaits\nbaiza\nbaizas\nbaize\nbaizes\nbake\nbaked\nbakemeat\nbakemeats\nbaker\nbakeries\nbakers\nbakery\nbakes\nbakeshop\nbakeshops\nbaking\nbakings\nbaklava\nbaklavas\nbaklawa\nbaklawas\nbakshish\nbakshished\nbakshishes\nbakshishing\nbal\nbalance\nbalanced\nbalancer\nbalancers\nbalances\nbalancing\nbalas\nbalases\nbalata\nbalatas\nbalboa\nbalboas\nbalconies\nbalcony\nbald\nbalded\nbalder\nbalderdash\nbaldest\nbaldhead\nbaldheads\nbalding\nbaldish\nbaldly\nbaldness\nbaldnesses\nbaldpate\nbaldpates\nbaldric\nbaldrick\nbaldricks\nbaldrics\nbalds\nbaldy\nbale\nbaled\nbaleen\nbaleens\nbalefire\nbalefires\nbaleful\nbalefully\nbalefulness\nbaler\nbalers\nbales\nbaling\nbalisaur\nbalisaurs\nbalk\nbalked\nbalker\nbalkers\nbalkier\nbalkiest\nbalkily\nbalkiness\nbalking\nbalkline\nbalklines\nbalks\nbalky\nball\nballad\nballade\nballadeer\nballadeers\nballades\nballadic\nballadries\nballadry\nballads\nballast\nballasted\nballasting\nballasts\nballed\nballer\nballerina\nballerinas\nballers\nballet\nballetic\nballets\nballing\nballista\nballistae\nballistic\nballistics\nballon\nballonet\nballonets\nballonne\nballonnes\nballons\nballoon\nballooned\nballooning\nballoonist\nballoonists\nballoons\nballot\nballoted\nballoter\nballoters\nballoting\nballots\nballroom\nballrooms\nballs\nbally\nballyhoo\nballyhooed\nballyhooing\nballyhoos\nballyrag\nballyragged\nballyragging\nballyrags\nbalm\nbalmier\nbalmiest\nbalmily\nbalminess\nbalmlike\nbalmoral\nbalmorals\nbalms\nbalmy\nbalneal\nbaloney\nbaloneys\nbals\nbalsa\nbalsam\nbalsamed\nbalsamic\nbalsaming\nbalsams\nbalsas\nbaluster\nbalusters\nbalustrade\nbalustrades\nbam\nbambini\nbambino\nbambinos\nbamboo\nbamboos\nbamboozle\nbamboozled\nbamboozlement\nbamboozlements\nbamboozles\nbamboozling\nbams\nban\nbanal\nbanalities\nbanality\nbanally\nbanana\nbananas\nbanausic\nbanco\nbancos\nband\nbandage\nbandaged\nbandager\nbandagers\nbandages\nbandaging\nbandana\nbandanas\nbandanna\nbandannas\nbandbox\nbandboxes\nbandeau\nbandeaus\nbandeaux\nbanded\nbander\nbanderol\nbanderole\nbanderoles\nbanderols\nbanders\nbandied\nbandies\nbanding\nbandit\nbanditries\nbanditry\nbandits\nbanditti\nbandmaster\nbandmasters\nbandog\nbandogs\nbandoleer\nbandoleers\nbandolier\nbandoliers\nbandora\nbandoras\nbandore\nbandores\nbands\nbandsman\nbandsmen\nbandstand\nbandstands\nbandwagon\nbandwagons\nbandwidth\nbandwidths\nbandy\nbandying\nbane\nbaned\nbaneful\nbanefully\nbanes\nbang\nbanged\nbanger\nbangers\nbanging\nbangkok\nbangkoks\nbangle\nbangles\nbangs\nbangtail\nbangtails\nbani\nbanian\nbanians\nbaning\nbanish\nbanished\nbanisher\nbanishers\nbanishes\nbanishing\nbanishment\nbanishments\nbanister\nbanisters\nbanjo\nbanjoes\nbanjoist\nbanjoists\nbanjos\nbank\nbankable\nbankbook\nbankbooks\nbanked\nbanker\nbankers\nbanking\nbankings\nbanknote\nbanknotes\nbankroll\nbankrolled\nbankrolling\nbankrolls\nbankrupt\nbankruptcies\nbankruptcy\nbankrupted\nbankrupting\nbankrupts\nbanks\nbanksia\nbanksias\nbankside\nbanksides\nbanned\nbanner\nbanneret\nbannerets\nbannerol\nbannerols\nbanners\nbannet\nbannets\nbanning\nbannister\nbannisters\nbannock\nbannocks\nbanns\nbanquet\nbanqueted\nbanqueter\nbanqueters\nbanqueting\nbanquets\nbanquette\nbanquettes\nbans\nbanshee\nbanshees\nbanshie\nbanshies\nbantam\nbantams\nbantamweight\nbantamweights\nbanter\nbantered\nbanterer\nbanterers\nbantering\nbanteringly\nbanters\nbantling\nbantlings\nbanty\nbanyan\nbanyans\nbanzai\nbanzais\nbaobab\nbaobabs\nbaptise\nbaptised\nbaptises\nbaptisia\nbaptisias\nbaptising\nbaptism\nbaptismal\nbaptismally\nbaptisms\nbaptist\nbaptisteries\nbaptistery\nbaptistries\nbaptistry\nbaptists\nbaptize\nbaptized\nbaptizer\nbaptizers\nbaptizes\nbaptizing\nbar\nbarathea\nbaratheas\nbarb\nbarbal\nbarbarian\nbarbarianism\nbarbarians\nbarbaric\nbarbarism\nbarbarisms\nbarbarities\nbarbarity\nbarbarize\nbarbarized\nbarbarizes\nbarbarizing\nbarbarous\nbarbarously\nbarbarousness\nbarbasco\nbarbascos\nbarbate\nbarbe\nbarbecue\nbarbecued\nbarbecues\nbarbecuing\nbarbed\nbarbel\nbarbell\nbarbells\nbarbels\nbarber\nbarbered\nbarbering\nbarberries\nbarberry\nbarbers\nbarbershop\nbarbershops\nbarbes\nbarbet\nbarbets\nbarbette\nbarbettes\nbarbican\nbarbicans\nbarbicel\nbarbicels\nbarbing\nbarbital\nbarbitals\nbarbiturate\nbarbiturates\nbarbless\nbarbs\nbarbule\nbarbules\nbarbut\nbarbuts\nbarbwire\nbarbwires\nbarcarole\nbarcaroles\nbarcarolle\nbarcarolles\nbard\nbarde\nbarded\nbardes\nbardic\nbarding\nbards\nbare\nbareback\nbarebacked\nbared\nbarefaced\nbarefit\nbarefoot\nbarefooted\nbarege\nbareges\nbarehead\nbareheaded\nbarely\nbareness\nbarenesses\nbarer\nbares\nbaresark\nbaresarks\nbarest\nbarf\nbarfed\nbarfing\nbarflies\nbarfly\nbarfs\nbargain\nbargained\nbargainer\nbargainers\nbargaining\nbargains\nbarge\nbarged\nbargee\nbargees\nbargeman\nbargemen\nbarges\nbarghest\nbarghests\nbarging\nbarguest\nbarguests\nbarhop\nbarhopped\nbarhopping\nbarhops\nbaric\nbarilla\nbarillas\nbaring\nbarite\nbarites\nbaritone\nbaritones\nbarium\nbariums\nbark\nbarked\nbarkeep\nbarkeeper\nbarkeepers\nbarkeeps\nbarker\nbarkers\nbarkier\nbarkiest\nbarking\nbarkless\nbarks\nbarky\nbarleduc\nbarleducs\nbarless\nbarley\nbarleys\nbarlow\nbarlows\nbarm\nbarmaid\nbarmaids\nbarman\nbarmen\nbarmie\nbarmier\nbarmiest\nbarms\nbarmy\nbarn\nbarnacle\nbarnacled\nbarnacles\nbarnier\nbarniest\nbarns\nbarnstorm\nbarnstormed\nbarnstormer\nbarnstormers\nbarnstorming\nbarnstorms\nbarny\nbarnyard\nbarnyards\nbarogram\nbarograms\nbarometer\nbarometers\nbarometric\nbarometry\nbaron\nbaronage\nbaronages\nbaroness\nbaronesses\nbaronet\nbaronets\nbarong\nbarongs\nbaronial\nbaronies\nbaronne\nbaronnes\nbarons\nbarony\nbaroque\nbaroques\nbarouche\nbarouches\nbarque\nbarques\nbarrable\nbarrack\nbarracked\nbarracking\nbarracks\nbarracuda\nbarracudas\nbarrage\nbarraged\nbarrages\nbarraging\nbarranca\nbarrancas\nbarranco\nbarrancos\nbarrater\nbarraters\nbarrator\nbarrators\nbarratries\nbarratry\nbarre\nbarred\nbarrel\nbarreled\nbarrelful\nbarrelfuls\nbarreling\nbarrelled\nbarrelling\nbarrels\nbarrelsful\nbarren\nbarrener\nbarrenest\nbarrenly\nbarrenness\nbarrens\nbarres\nbarret\nbarretor\nbarretors\nbarretries\nbarretry\nbarrets\nbarrette\nbarrettes\nbarricade\nbarricaded\nbarricades\nbarricading\nbarrier\nbarriers\nbarring\nbarrio\nbarrios\nbarrister\nbarristers\nbarroom\nbarrooms\nbarrow\nbarrows\nbars\nbarstool\nbarstools\nbartend\nbartended\nbartender\nbartenders\nbartending\nbartends\nbarter\nbartered\nbarterer\nbarterers\nbartering\nbarters\nbartisan\nbartisans\nbartizan\nbartizans\nbarware\nbarwares\nbarye\nbaryes\nbaryon\nbaryonic\nbaryons\nbaryta\nbarytas\nbaryte\nbarytes\nbarytic\nbarytone\nbarytones\nbas\nbasal\nbasally\nbasalt\nbasaltes\nbasaltic\nbasalts\nbascule\nbascules\nbase\nbaseball\nbaseballs\nbaseboard\nbaseborn\nbased\nbaseless\nbaseline\nbaselines\nbasely\nbaseman\nbasemen\nbasement\nbasements\nbaseness\nbasenesses\nbasenji\nbasenjis\nbaser\nbases\nbasest\nbash\nbashaw\nbashaws\nbashed\nbasher\nbashers\nbashes\nbashful\nbashfully\nbashfulness\nbashing\nbashlyk\nbashlyks\nbasic\nbasically\nbasicities\nbasicity\nbasics\nbasidia\nbasidial\nbasidium\nbasified\nbasifier\nbasifiers\nbasifies\nbasify\nbasifying\nbasil\nbasilar\nbasilary\nbasilic\nbasilica\nbasilicae\nbasilicas\nbasilisk\nbasilisks\nbasils\nbasin\nbasinal\nbasined\nbasinet\nbasinets\nbasing\nbasins\nbasion\nbasions\nbasis\nbask\nbasked\nbasket\nbasketball\nbasketballs\nbasketful\nbasketfuls\nbasketries\nbasketry\nbaskets\nbasketwork\nbasking\nbasks\nbasophil\nbasophils\nbasque\nbasques\nbass\nbasses\nbasset\nbasseted\nbasseting\nbassets\nbassetted\nbassetting\nbassi\nbassinet\nbassinets\nbassist\nbassists\nbassly\nbassness\nbassnesses\nbasso\nbassoon\nbassoonist\nbassoonists\nbassoons\nbassos\nbasswood\nbasswoods\nbassy\nbast\nbastard\nbastardies\nbastardize\nbastardized\nbastardizes\nbastardizing\nbastardly\nbastards\nbastardy\nbaste\nbasted\nbaster\nbasters\nbastes\nbastile\nbastiles\nbastille\nbastilles\nbasting\nbastings\nbastion\nbastions\nbasts\nbat\nbatboy\nbatboys\nbatch\nbatched\nbatcher\nbatchers\nbatches\nbatching\nbate\nbateau\nbateaux\nbated\nbates\nbatfish\nbatfishes\nbatfowl\nbatfowled\nbatfowling\nbatfowls\nbath\nbathe\nbathed\nbather\nbathers\nbathes\nbathetic\nbathhouse\nbathhouses\nbathing\nbathless\nbathos\nbathoses\nbathrobe\nbathrobes\nbathroom\nbathrooms\nbaths\nbathtub\nbathtubs\nbathyal\nbathyscaph\nbathyscaphe\nbathyscaphes\nbathysphere\nbathyspheres\nbatik\nbatiks\nbating\nbatiste\nbatistes\nbatlike\nbatman\nbatmen\nbaton\nbatons\nbats\nbatsman\nbatsmen\nbatt\nbattalia\nbattalias\nbattalion\nbattalions\nbatteau\nbatteaux\nbatted\nbatten\nbattened\nbattener\nbatteners\nbattening\nbattens\nbatter\nbattered\nbatterie\nbatteries\nbattering\nbatters\nbattery\nbattier\nbattiest\nbattik\nbattiks\nbatting\nbattings\nbattle\nbattled\nbattlefield\nbattlefields\nbattlefront\nbattlefronts\nbattleground\nbattlegrounds\nbattlement\nbattlements\nbattler\nbattlers\nbattles\nbattleship\nbattleships\nbattling\nbatts\nbattu\nbattue\nbattues\nbatty\nbatwing\nbaubee\nbaubees\nbauble\nbaubles\nbaud\nbaudekin\nbaudekins\nbaudrons\nbaudronses\nbauds\nbaulk\nbaulked\nbaulkier\nbaulkiest\nbaulking\nbaulks\nbaulky\nbausond\nbauxite\nbauxites\nbauxitic\nbawbee\nbawbees\nbawcock\nbawcocks\nbawd\nbawdier\nbawdies\nbawdiest\nbawdily\nbawdiness\nbawdric\nbawdrics\nbawdries\nbawdry\nbawds\nbawdy\nbawl\nbawled\nbawler\nbawlers\nbawling\nbawls\nbawsunt\nbawtie\nbawties\nbawty\nbay\nbayadeer\nbayadeers\nbayadere\nbayaderes\nbayamo\nbayamos\nbayard\nbayards\nbayberries\nbayberry\nbayed\nbaying\nbayonet\nbayoneted\nbayoneting\nbayonets\nbayonetted\nbayonetting\nbayou\nbayous\nbays\nbaywood\nbaywoods\nbazaar\nbazaars\nbazar\nbazars\nbazoo\nbazooka\nbazookas\nbdellium\nbdelliums\nbe\nbeach\nbeachboy\nbeachboys\nbeachcomber\nbeachcombers\nbeachcombing\nbeached\nbeaches\nbeachhead\nbeachheads\nbeachier\nbeachiest\nbeaching\nbeachy\nbeacon\nbeaconed\nbeaconing\nbeacons\nbead\nbeaded\nbeadier\nbeadiest\nbeadily\nbeading\nbeadings\nbeadle\nbeadles\nbeadlike\nbeadman\nbeadmen\nbeadroll\nbeadrolls\nbeads\nbeadsman\nbeadsmen\nbeadwork\nbeadworks\nbeady\nbeagle\nbeagles\nbeak\nbeaked\nbeaker\nbeakers\nbeakier\nbeakiest\nbeakless\nbeaklike\nbeaks\nbeaky\nbeam\nbeamed\nbeamier\nbeamiest\nbeamily\nbeaming\nbeamish\nbeamless\nbeamlike\nbeams\nbeamy\nbean\nbeanbag\nbeanbags\nbeanball\nbeanballs\nbeaned\nbeaneries\nbeanery\nbeanie\nbeanies\nbeaning\nbeanlike\nbeano\nbeanos\nbeanpole\nbeanpoles\nbeans\nbear\nbearable\nbearably\nbearcat\nbearcats\nbeard\nbearded\nbearding\nbeardless\nbeards\nbearer\nbearers\nbearing\nbearings\nbearish\nbearishly\nbearishness\nbearlike\nbears\nbearskin\nbearskins\nbeast\nbeastie\nbeasties\nbeastlier\nbeastliest\nbeastliness\nbeastly\nbeasts\nbeat\nbeatable\nbeaten\nbeater\nbeaters\nbeatific\nbeatifically\nbeatification\nbeatifications\nbeatified\nbeatifies\nbeatify\nbeatifying\nbeating\nbeatings\nbeatitude\nbeatitudes\nbeatless\nbeatnik\nbeatniks\nbeats\nbeau\nbeauish\nbeaus\nbeaut\nbeauteous\nbeauteously\nbeauteousness\nbeautician\nbeauticians\nbeauties\nbeautification\nbeautifications\nbeautified\nbeautifier\nbeautifiers\nbeautifies\nbeautiful\nbeautifully\nbeautifulness\nbeautify\nbeautifying\nbeauts\nbeauty\nbeaux\nbeaver\nbeaverboard\nbeavered\nbeavering\nbeavers\nbebeeru\nbebeerus\nbeblood\nbeblooded\nbeblooding\nbebloods\nbebop\nbebopper\nbeboppers\nbebops\nbecalm\nbecalmed\nbecalming\nbecalms\nbecame\nbecap\nbecapped\nbecapping\nbecaps\nbecarpet\nbecarpeted\nbecarpeting\nbecarpets\nbecause\nbechalk\nbechalked\nbechalking\nbechalks\nbechamel\nbechamels\nbechance\nbechanced\nbechances\nbechancing\nbecharm\nbecharmed\nbecharming\nbecharms\nbeck\nbecked\nbecket\nbeckets\nbecking\nbeckon\nbeckoned\nbeckoner\nbeckoners\nbeckoning\nbeckons\nbecks\nbeclamor\nbeclamored\nbeclamoring\nbeclamors\nbeclasp\nbeclasped\nbeclasping\nbeclasps\nbecloak\nbecloaked\nbecloaking\nbecloaks\nbeclog\nbeclogged\nbeclogging\nbeclogs\nbeclothe\nbeclothed\nbeclothes\nbeclothing\nbecloud\nbeclouded\nbeclouding\nbeclouds\nbeclown\nbeclowned\nbeclowning\nbeclowns\nbecome\nbecomes\nbecoming\nbecomingly\nbecomings\nbecoward\nbecowarded\nbecowarding\nbecowards\nbecrawl\nbecrawled\nbecrawling\nbecrawls\nbecrime\nbecrimed\nbecrimes\nbecriming\nbecrowd\nbecrowded\nbecrowding\nbecrowds\nbecrust\nbecrusted\nbecrusting\nbecrusts\nbecudgel\nbecudgeled\nbecudgeling\nbecudgelled\nbecudgelling\nbecudgels\nbecurse\nbecursed\nbecurses\nbecursing\nbecurst\nbed\nbedabble\nbedabbled\nbedabbles\nbedabbling\nbedamn\nbedamned\nbedamning\nbedamns\nbedarken\nbedarkened\nbedarkening\nbedarkens\nbedaub\nbedaubed\nbedaubing\nbedaubs\nbedazzle\nbedazzled\nbedazzlement\nbedazzlements\nbedazzles\nbedazzling\nbedbug\nbedbugs\nbedchair\nbedchairs\nbedclothes\nbedcover\nbedcovers\nbedded\nbedder\nbedders\nbedding\nbeddings\nbedeafen\nbedeafened\nbedeafening\nbedeafens\nbedeck\nbedecked\nbedecking\nbedecks\nbedel\nbedell\nbedells\nbedels\nbedeman\nbedemen\nbedesman\nbedesmen\nbedevil\nbedeviled\nbedeviling\nbedevilled\nbedevilling\nbedevilment\nbedevilments\nbedevils\nbedew\nbedewed\nbedewing\nbedews\nbedfast\nbedfellow\nbedfellows\nbedframe\nbedframes\nbedgown\nbedgowns\nbediaper\nbediapered\nbediapering\nbediapers\nbedight\nbedighted\nbedighting\nbedights\nbedim\nbedimmed\nbedimming\nbedimple\nbedimpled\nbedimples\nbedimpling\nbedims\nbedirtied\nbedirties\nbedirty\nbedirtying\nbedizen\nbedizened\nbedizening\nbedizenment\nbedizenments\nbedizens\nbedlam\nbedlamp\nbedlamps\nbedlams\nbedless\nbedlike\nbedmaker\nbedmakers\nbedmate\nbedmates\nbedotted\nbedouin\nbedouins\nbedpan\nbedpans\nbedplate\nbedplates\nbedpost\nbedposts\nbedquilt\nbedquilts\nbedraggled\nbedrail\nbedrails\nbedrape\nbedraped\nbedrapes\nbedraping\nbedrench\nbedrenched\nbedrenches\nbedrenching\nbedrid\nbedridden\nbedrivel\nbedriveled\nbedriveling\nbedrivelled\nbedrivelling\nbedrivels\nbedrock\nbedrocks\nbedroll\nbedrolls\nbedroom\nbedrooms\nbedrug\nbedrugged\nbedrugging\nbedrugs\nbeds\nbedside\nbedsides\nbedsonia\nbedsonias\nbedsore\nbedsores\nbedspread\nbedspreads\nbedspring\nbedsprings\nbedstand\nbedstands\nbedstead\nbedsteads\nbedstraw\nbedstraws\nbedtick\nbedticks\nbedtime\nbedtimes\nbeduin\nbeduins\nbedumb\nbedumbed\nbedumbing\nbedumbs\nbedunce\nbedunced\nbedunces\nbeduncing\nbedward\nbedwards\nbedwarf\nbedwarfed\nbedwarfing\nbedwarfs\nbee\nbeebee\nbeebees\nbeebread\nbeebreads\nbeech\nbeechen\nbeeches\nbeechier\nbeechiest\nbeechnut\nbeechnuts\nbeechy\nbeef\nbeefcake\nbeefcakes\nbeefeater\nbeefeaters\nbeefed\nbeefier\nbeefiest\nbeefily\nbeefing\nbeefless\nbeefs\nbeefsteak\nbeefsteaks\nbeefwood\nbeefwoods\nbeefy\nbeehive\nbeehives\nbeekeeper\nbeekeepers\nbeekeeping\nbeelike\nbeeline\nbeelines\nbeen\nbeep\nbeeped\nbeeper\nbeepers\nbeeping\nbeeps\nbeer\nbeerier\nbeeriest\nbeers\nbeery\nbees\nbeeswax\nbeeswaxes\nbeeswing\nbeeswings\nbeet\nbeetle\nbeetled\nbeetles\nbeetling\nbeetroot\nbeetroots\nbeets\nbeeves\nbefall\nbefallen\nbefalling\nbefalls\nbefell\nbefinger\nbefingered\nbefingering\nbefingers\nbefit\nbefits\nbefitted\nbefitting\nbefittingly\nbeflag\nbeflagged\nbeflagging\nbeflags\nbeflea\nbefleaed\nbefleaing\nbefleas\nbefleck\nbeflecked\nbeflecking\nbeflecks\nbeflower\nbeflowered\nbeflowering\nbeflowers\nbefog\nbefogged\nbefogging\nbefogs\nbefool\nbefooled\nbefooling\nbefools\nbefore\nbeforehand\nbefoul\nbefouled\nbefouler\nbefoulers\nbefouling\nbefouls\nbefret\nbefrets\nbefretted\nbefretting\nbefriend\nbefriended\nbefriending\nbefriends\nbefringe\nbefringed\nbefringes\nbefringing\nbefuddle\nbefuddled\nbefuddlement\nbefuddlements\nbefuddles\nbefuddling\nbeg\nbegall\nbegalled\nbegalling\nbegalls\nbegan\nbegat\nbegaze\nbegazed\nbegazes\nbegazing\nbeget\nbegets\nbegetter\nbegetters\nbegetting\nbeggar\nbeggared\nbeggaries\nbeggaring\nbeggarliness\nbeggarly\nbeggars\nbeggary\nbegged\nbegging\nbegin\nbeginner\nbeginners\nbeginning\nbeginnings\nbegins\nbegird\nbegirded\nbegirding\nbegirdle\nbegirdled\nbegirdles\nbegirdling\nbegirds\nbegirt\nbeglad\nbegladded\nbegladding\nbeglads\nbegloom\nbegloomed\nbeglooming\nbeglooms\nbegone\nbegonia\nbegonias\nbegorah\nbegorra\nbegorrah\nbegot\nbegotten\nbegrim\nbegrime\nbegrimed\nbegrimes\nbegriming\nbegrimmed\nbegrimming\nbegrims\nbegroan\nbegroaned\nbegroaning\nbegroans\nbegrudge\nbegrudged\nbegrudges\nbegrudging\nbegrudgingly\nbegs\nbeguile\nbeguiled\nbeguilement\nbeguilements\nbeguiler\nbeguilers\nbeguiles\nbeguiling\nbeguilingly\nbeguine\nbeguines\nbegulf\nbegulfed\nbegulfing\nbegulfs\nbegum\nbegums\nbegun\nbehalf\nbehalves\nbehave\nbehaved\nbehaver\nbehavers\nbehaves\nbehaving\nbehavior\nbehavioral\nbehaviorally\nbehaviorism\nbehaviorisms\nbehaviorist\nbehavioristic\nbehaviorists\nbehaviors\nbehead\nbeheaded\nbeheading\nbeheads\nbeheld\nbehemoth\nbehemoths\nbehest\nbehests\nbehind\nbehinds\nbehold\nbeholden\nbeholder\nbeholders\nbeholding\nbeholds\nbehoof\nbehoove\nbehooved\nbehooves\nbehooving\nbehove\nbehoved\nbehoves\nbehoving\nbehowl\nbehowled\nbehowling\nbehowls\nbeige\nbeiges\nbeigy\nbeing\nbeings\nbejewel\nbejeweled\nbejeweling\nbejewelled\nbejewelling\nbejewels\nbejumble\nbejumbled\nbejumbles\nbejumbling\nbekiss\nbekissed\nbekisses\nbekissing\nbeknight\nbeknighted\nbeknighting\nbeknights\nbeknot\nbeknots\nbeknotted\nbeknotting\nbel\nbelabor\nbelabored\nbelaboring\nbelabors\nbelabour\nbelaboured\nbelabouring\nbelabours\nbelaced\nbeladied\nbeladies\nbelady\nbeladying\nbelated\nbelatedly\nbelatedness\nbelaud\nbelauded\nbelauding\nbelauds\nbelay\nbelayed\nbelaying\nbelays\nbelch\nbelched\nbelcher\nbelchers\nbelches\nbelching\nbeldam\nbeldame\nbeldames\nbeldams\nbeleaguer\nbeleaguered\nbeleaguering\nbeleaguers\nbeleap\nbeleaped\nbeleaping\nbeleaps\nbeleapt\nbelfried\nbelfries\nbelfry\nbelga\nbelgas\nbelie\nbelied\nbelief\nbeliefs\nbelier\nbeliers\nbelies\nbelievability\nbelievable\nbelievably\nbelieve\nbelieved\nbeliever\nbelievers\nbelieves\nbelieving\nbelike\nbeliquor\nbeliquored\nbeliquoring\nbeliquors\nbelittle\nbelittled\nbelittlement\nbelittlements\nbelittler\nbelittlers\nbelittles\nbelittling\nbelive\nbell\nbelladonna\nbelladonnas\nbellbird\nbellbirds\nbellboy\nbellboys\nbelle\nbelled\nbelleek\nbelleeks\nbelles\nbellhop\nbellhops\nbellicose\nbellicosity\nbellied\nbellies\nbelligerence\nbelligerences\nbelligerencies\nbelligerency\nbelligerent\nbelligerently\nbelling\nbellman\nbellmen\nbellow\nbellowed\nbellower\nbellowers\nbellowing\nbellows\nbellpull\nbellpulls\nbells\nbellwether\nbellwethers\nbellwort\nbellworts\nbelly\nbellyache\nbellyached\nbellyaches\nbellyaching\nbellyband\nbellybands\nbellyful\nbellyfuls\nbellying\nbelong\nbelonged\nbelonging\nbelongings\nbelongs\nbeloved\nbeloveds\nbelow\nbelows\nbels\nbelt\nbelted\nbelting\nbeltings\nbeltless\nbeltline\nbeltlines\nbelts\nbeltway\nbeltways\nbeluga\nbelugas\nbelying\nbema\nbemadam\nbemadamed\nbemadaming\nbemadams\nbemadden\nbemaddened\nbemaddening\nbemaddens\nbemas\nbemata\nbemean\nbemeaned\nbemeaning\nbemeans\nbemingle\nbemingled\nbemingles\nbemingling\nbemire\nbemired\nbemires\nbemiring\nbemist\nbemisted\nbemisting\nbemists\nbemix\nbemixed\nbemixes\nbemixing\nbemixt\nbemoan\nbemoaned\nbemoaning\nbemoans\nbemock\nbemocked\nbemocking\nbemocks\nbemuddle\nbemuddled\nbemuddles\nbemuddling\nbemurmur\nbemurmured\nbemurmuring\nbemurmurs\nbemuse\nbemused\nbemusedly\nbemuses\nbemusing\nbemuzzle\nbemuzzled\nbemuzzles\nbemuzzling\nben\nbename\nbenamed\nbenames\nbenaming\nbench\nbenched\nbencher\nbenchers\nbenches\nbenching\nbenchmark\nbenchmarks\nbend\nbendable\nbenday\nbendayed\nbendaying\nbendays\nbended\nbendee\nbendees\nbender\nbenders\nbending\nbends\nbendways\nbendwise\nbendy\nbendys\nbene\nbeneath\nbenedick\nbenedicks\nbenedict\nbenediction\nbenedictions\nbenedicts\nbenefaction\nbenefactions\nbenefactor\nbenefactors\nbenefactress\nbenefactresses\nbenefic\nbenefice\nbeneficed\nbeneficence\nbeneficences\nbeneficent\nbeneficently\nbenefices\nbeneficial\nbeneficially\nbeneficialness\nbeneficiaries\nbeneficiary\nbeneficing\nbenefit\nbenefited\nbenefiting\nbenefits\nbenefitted\nbenefitting\nbenempt\nbenempted\nbenes\nbenevolence\nbenevolences\nbenevolent\nbenevolently\nbengaline\nbengalines\nbenighted\nbenightedness\nbenign\nbenignancy\nbenignant\nbenignantly\nbenignities\nbenignity\nbenignly\nbenison\nbenisons\nbenjamin\nbenjamins\nbenne\nbennes\nbennet\nbennets\nbenni\nbennies\nbennis\nbenny\nbens\nbent\nbenthal\nbenthic\nbenthos\nbenthoses\nbents\nbentwood\nbentwoods\nbenumb\nbenumbed\nbenumbing\nbenumbs\nbenzal\nbenzene\nbenzenes\nbenzidin\nbenzidins\nbenzin\nbenzine\nbenzines\nbenzins\nbenzoate\nbenzoates\nbenzoic\nbenzoin\nbenzoins\nbenzol\nbenzole\nbenzoles\nbenzols\nbenzoyl\nbenzoyls\nbenzyl\nbenzylic\nbenzyls\nbepaint\nbepainted\nbepainting\nbepaints\nbepimple\nbepimpled\nbepimples\nbepimpling\nbequeath\nbequeathal\nbequeathals\nbequeathed\nbequeathing\nbequeaths\nbequest\nbequests\nberake\nberaked\nberakes\nberaking\nberascal\nberascaled\nberascaling\nberascals\nberate\nberated\nberates\nberating\nberberin\nberberins\nberceuse\nberceuses\nbereave\nbereaved\nbereavement\nbereavements\nbereaver\nbereavers\nbereaves\nbereaving\nbereft\nberet\nberets\nberetta\nberettas\nberg\nbergamot\nbergamots\nbergs\nberhyme\nberhymed\nberhymes\nberhyming\nberiberi\nberiberis\nberime\nberimed\nberimes\nberiming\nberinged\nberlin\nberline\nberlines\nberlins\nberm\nberme\nbermes\nberms\nbernicle\nbernicles\nberobed\nberouged\nberreaved\nberreaves\nberreaving\nberretta\nberrettas\nberried\nberries\nberry\nberrying\nberrylike\nberseem\nberseems\nberserk\nberserker\nberserkers\nberserkly\nberserks\nberth\nbertha\nberthas\nberthed\nberthing\nberths\nberyl\nberyline\nberyllium\nberyls\nbescorch\nbescorched\nbescorches\nbescorching\nbescour\nbescoured\nbescouring\nbescours\nbescreen\nbescreened\nbescreening\nbescreens\nbeseech\nbeseeched\nbeseeches\nbeseeching\nbeseechingly\nbeseem\nbeseemed\nbeseeming\nbeseems\nbeset\nbesets\nbesetter\nbesetters\nbesetting\nbeshadow\nbeshadowed\nbeshadowing\nbeshadows\nbeshame\nbeshamed\nbeshames\nbeshaming\nbeshiver\nbeshivered\nbeshivering\nbeshivers\nbeshout\nbeshouted\nbeshouting\nbeshouts\nbeshrew\nbeshrewed\nbeshrewing\nbeshrews\nbeshroud\nbeshrouded\nbeshrouding\nbeshrouds\nbeside\nbesides\nbesiege\nbesieged\nbesieger\nbesiegers\nbesieges\nbesieging\nbeslaved\nbeslime\nbeslimed\nbeslimes\nbesliming\nbesmear\nbesmeared\nbesmearing\nbesmears\nbesmile\nbesmiled\nbesmiles\nbesmiling\nbesmirch\nbesmirched\nbesmirches\nbesmirching\nbesmoke\nbesmoked\nbesmokes\nbesmoking\nbesmooth\nbesmoothed\nbesmoothing\nbesmooths\nbesmudge\nbesmudged\nbesmudges\nbesmudging\nbesmut\nbesmuts\nbesmutted\nbesmutting\nbesnow\nbesnowed\nbesnowing\nbesnows\nbesom\nbesoms\nbesoothe\nbesoothed\nbesoothes\nbesoothing\nbesot\nbesots\nbesotted\nbesotting\nbesought\nbespake\nbespatter\nbespattered\nbespattering\nbespatters\nbespeak\nbespeaking\nbespeaks\nbespectacled\nbespoke\nbespoken\nbespouse\nbespoused\nbespouses\nbespousing\nbespread\nbespreading\nbespreads\nbesprent\nbest\nbestead\nbesteaded\nbesteading\nbesteads\nbested\nbestial\nbestialities\nbestiality\nbestially\nbestiaries\nbestiary\nbesting\nbestir\nbestirred\nbestirring\nbestirs\nbestow\nbestowal\nbestowals\nbestowed\nbestowing\nbestowment\nbestowments\nbestows\nbestrew\nbestrewed\nbestrewing\nbestrewn\nbestrews\nbestrid\nbestridden\nbestride\nbestrides\nbestriding\nbestrode\nbestrow\nbestrowed\nbestrowing\nbestrown\nbestrows\nbests\nbestselling\nbestud\nbestudded\nbestudding\nbestuds\nbeswarm\nbeswarmed\nbeswarming\nbeswarms\nbet\nbeta\nbetaine\nbetaines\nbetake\nbetaken\nbetakes\nbetaking\nbetas\nbetatron\nbetatrons\nbetatter\nbetattered\nbetattering\nbetatters\nbetaxed\nbetel\nbetelnut\nbetelnuts\nbetels\nbeth\nbethank\nbethanked\nbethanking\nbethanks\nbethel\nbethels\nbethink\nbethinking\nbethinks\nbethorn\nbethorned\nbethorning\nbethorns\nbethought\nbeths\nbethump\nbethumped\nbethumping\nbethumps\nbetide\nbetided\nbetides\nbetiding\nbetime\nbetimes\nbetise\nbetises\nbetoken\nbetokened\nbetokening\nbetokens\nbeton\nbetonies\nbetons\nbetony\nbetook\nbetray\nbetrayal\nbetrayals\nbetrayed\nbetrayer\nbetrayers\nbetraying\nbetrays\nbetroth\nbetrothal\nbetrothals\nbetrothed\nbetrothing\nbetroths\nbets\nbetta\nbettas\nbetted\nbetter\nbettered\nbettering\nbetterment\nbetterments\nbetters\nbetting\nbettor\nbettors\nbetween\nbetweenness\nbetwixt\nbeuncled\nbevatron\nbevatrons\nbevel\nbeveled\nbeveler\nbevelers\nbeveling\nbevelled\nbeveller\nbevellers\nbevelling\nbevels\nbeverage\nbeverages\nbevies\nbevomit\nbevomited\nbevomiting\nbevomits\nbevor\nbevors\nbevy\nbewail\nbewailed\nbewailer\nbewailers\nbewailing\nbewails\nbeware\nbewared\nbewares\nbewaring\nbewearied\nbewearies\nbeweary\nbewearying\nbeweep\nbeweeping\nbeweeps\nbewept\nbewig\nbewigged\nbewigging\nbewigs\nbewilder\nbewildered\nbewildering\nbewilderingly\nbewilderment\nbewilderments\nbewilders\nbewinged\nbewitch\nbewitched\nbewitchery\nbewitches\nbewitching\nbewitchingly\nbewitchingness\nbewitchment\nbewitchments\nbeworm\nbewormed\nbeworming\nbeworms\nbeworried\nbeworries\nbeworry\nbeworrying\nbewrap\nbewrapped\nbewrapping\nbewraps\nbewrapt\nbewray\nbewrayed\nbewrayer\nbewrayers\nbewraying\nbewrays\nbey\nbeylic\nbeylics\nbeylik\nbeyliks\nbeyond\nbeyonds\nbeys\nbezant\nbezants\nbezel\nbezels\nbezil\nbezils\nbezique\nbeziques\nbezoar\nbezoars\nbezzant\nbezzants\nbhakta\nbhaktas\nbhakti\nbhaktis\nbhang\nbhangs\nbheestie\nbheesties\nbheesty\nbhistie\nbhisties\nbhoot\nbhoots\nbhut\nbhuts\nbi\nbiacetyl\nbiacetyls\nbiali\nbialy\nbialys\nbiannual\nbiannually\nbias\nbiased\nbiasedly\nbiases\nbiasing\nbiasness\nbiasnesses\nbiassed\nbiasses\nbiassing\nbiathlon\nbiathlons\nbiaxal\nbiaxial\nbib\nbibasic\nbibb\nbibbed\nbibber\nbibberies\nbibbers\nbibbery\nbibbing\nbibbs\nbibcock\nbibcocks\nbibelot\nbibelots\nbible\nbibles\nbibless\nbiblical\nbiblically\nbiblike\nbibliographer\nbibliographers\nbibliographic\nbibliographical\nbibliographically\nbibliographies\nbibliography\nbibliophile\nbibliophiles\nbibs\nbibulous\nbibulously\nbibulousness\nbicameral\nbicameralism\nbicarb\nbicarbonate\nbicarbonates\nbicarbs\nbice\nbicentennial\nbicentennials\nbiceps\nbicepses\nbices\nbichrome\nbicker\nbickered\nbickerer\nbickerers\nbickering\nbickers\nbicolor\nbicolored\nbicolors\nbicolour\nbicolours\nbiconcave\nbiconvex\nbicorn\nbicorne\nbicornes\nbicron\nbicrons\nbicultural\nbicuspid\nbicuspids\nbicycle\nbicycled\nbicycler\nbicyclers\nbicycles\nbicyclic\nbicycling\nbicyclist\nbicyclists\nbid\nbidarka\nbidarkas\nbidarkee\nbidarkees\nbiddable\nbiddably\nbidden\nbidder\nbidders\nbiddies\nbidding\nbiddings\nbiddy\nbide\nbided\nbidental\nbider\nbiders\nbides\nbidet\nbidets\nbiding\nbidirectional\nbids\nbield\nbielded\nbielding\nbields\nbiennia\nbiennial\nbiennially\nbiennials\nbiennium\nbienniums\nbier\nbiers\nbifacial\nbiff\nbiffed\nbiffies\nbiffin\nbiffing\nbiffins\nbiffs\nbiffy\nbifid\nbifidities\nbifidity\nbifidly\nbifilar\nbiflex\nbifocal\nbifocals\nbifold\nbiforate\nbiforked\nbiform\nbiformed\nbifunctional\nbifurcate\nbifurcated\nbifurcates\nbifurcating\nbifurcation\nbifurcations\nbig\nbigamies\nbigamist\nbigamists\nbigamous\nbigamously\nbigamy\nbigaroon\nbigaroons\nbigeminies\nbigeminy\nbigeye\nbigeyes\nbigger\nbiggest\nbiggety\nbiggie\nbiggies\nbiggin\nbigging\nbiggings\nbiggins\nbiggish\nbiggity\nbighead\nbigheads\nbighearted\nbigheartedly\nbigheartedness\nbighorn\nbighorns\nbight\nbighted\nbighting\nbights\nbigly\nbigmouth\nbigmouths\nbigness\nbignesses\nbignonia\nbignonias\nbigot\nbigoted\nbigotedly\nbigotries\nbigotry\nbigots\nbigwig\nbigwigs\nbihourly\nbijou\nbijous\nbijoux\nbijugate\nbijugous\nbike\nbiked\nbiker\nbikers\nbikes\nbikeway\nbikeways\nbikie\nbiking\nbikini\nbikinied\nbikinis\nbilabial\nbilabials\nbilander\nbilanders\nbilateral\nbilaterally\nbilberries\nbilberry\nbilbo\nbilboa\nbilboas\nbilboes\nbilbos\nbile\nbiles\nbilge\nbilged\nbilges\nbilgier\nbilgiest\nbilging\nbilgy\nbiliary\nbilinear\nbilingual\nbilingualism\nbilingually\nbilious\nbiliously\nbiliousness\nbilk\nbilked\nbilker\nbilkers\nbilking\nbilks\nbill\nbillable\nbillboard\nbillboards\nbillbug\nbillbugs\nbilled\nbiller\nbillers\nbillet\nbilleted\nbilleter\nbilleters\nbilleting\nbillets\nbillfish\nbillfishes\nbillfold\nbillfolds\nbillhead\nbillheads\nbillhook\nbillhooks\nbilliard\nbilliards\nbillie\nbillies\nbilling\nbillings\nbillion\nbillionaire\nbillionaires\nbillions\nbillionth\nbillionths\nbillon\nbillons\nbillow\nbillowed\nbillowier\nbillowiest\nbillowing\nbillows\nbillowy\nbills\nbilly\nbillycan\nbillycans\nbilobate\nbilobed\nbilsted\nbilsteds\nbiltong\nbiltongs\nbima\nbimah\nbimahs\nbimanous\nbimanual\nbimas\nbimbo\nbimensal\nbimester\nbimesters\nbimetal\nbimetallic\nbimetallism\nbimetallist\nbimetallistic\nbimetallists\nbimetals\nbimethyl\nbimethyls\nbimodal\nbimodality\nbimonthlies\nbimonthly\nbin\nbinal\nbinaries\nbinary\nbinate\nbinately\nbinational\nbinaural\nbind\nbindable\nbinder\nbinderies\nbinders\nbindery\nbindi\nbinding\nbindingness\nbindings\nbindle\nbindles\nbinds\nbindweed\nbindweeds\nbine\nbines\nbinge\nbinges\nbingo\nbingos\nbinit\nbinits\nbinnacle\nbinnacles\nbinned\nbinning\nbinocle\nbinocles\nbinocular\nbinocularity\nbinocularly\nbinoculars\nbinomial\nbinomially\nbinomials\nbins\nbint\nbints\nbio\nbioassay\nbioassayed\nbioassaying\nbioassays\nbiochemical\nbiochemically\nbiochemist\nbiochemistries\nbiochemistry\nbiochemists\nbiocidal\nbiocide\nbiocides\nbioclean\nbiocycle\nbiocycles\nbiodegradability\nbiodegradable\nbiodegradation\nbiodegradations\nbiodegrade\nbiodegraded\nbiodegrades\nbiodegrading\nbiogen\nbiogenic\nbiogenies\nbiogens\nbiogeny\nbiogeographic\nbiogeographical\nbiogeographies\nbiogeography\nbiographer\nbiographers\nbiographic\nbiographical\nbiographically\nbiographies\nbiography\nbioherm\nbioherms\nbiologic\nbiological\nbiologically\nbiologics\nbiologies\nbiologist\nbiologists\nbiology\nbiolyses\nbiolysis\nbiolytic\nbiomass\nbiomasses\nbiome\nbiomedical\nbiomedicine\nbiomes\nbiometries\nbiometry\nbionic\nbionics\nbionomic\nbionomies\nbionomy\nbiont\nbiontic\nbionts\nbiophysical\nbiophysically\nbiophysicist\nbiophysicists\nbiophysics\nbioplasm\nbioplasms\nbiopsic\nbiopsies\nbiopsy\nbioptic\nbiorhythm\nbiorhythmic\nbiorhythms\nbios\nbioscope\nbioscopes\nbioscopies\nbioscopy\nbiota\nbiotas\nbiotic\nbiotical\nbiotics\nbiotin\nbiotins\nbiotite\nbiotites\nbiotitic\nbiotope\nbiotopes\nbiotron\nbiotrons\nbiotype\nbiotypes\nbiotypic\nbiovular\nbipack\nbipacks\nbiparental\nbiparous\nbiparted\nbipartisan\nbipartisanism\nbipartisanisms\nbipartisanship\nbipartisanships\nbipartite\nbipartitely\nbipartition\nbipartitions\nbiparty\nbiped\nbipedal\nbipeds\nbiphenyl\nbiphenyls\nbiplane\nbiplanes\nbipod\nbipods\nbipolar\nbipolarity\nbiracial\nbiradial\nbiramose\nbiramous\nbirch\nbirched\nbirchen\nbirches\nbirching\nbird\nbirdbath\nbirdbaths\nbirdcage\nbirdcages\nbirdcall\nbirdcalls\nbirded\nbirder\nbirders\nbirdfarm\nbirdfarms\nbirdhouse\nbirdhouses\nbirdie\nbirdied\nbirdieing\nbirdies\nbirding\nbirdlike\nbirdlime\nbirdlimed\nbirdlimes\nbirdliming\nbirdman\nbirdmen\nbirds\nbirdseed\nbirdseeds\nbirdseye\nbirdseyes\nbireme\nbiremes\nbiretta\nbirettas\nbirk\nbirkie\nbirkies\nbirks\nbirl\nbirle\nbirled\nbirler\nbirlers\nbirles\nbirling\nbirlings\nbirls\nbirr\nbirred\nbirretta\nbirrettas\nbirring\nbirrs\nbirse\nbirses\nbirth\nbirthday\nbirthdays\nbirthed\nbirthing\nbirthmark\nbirthmarks\nbirthplace\nbirthplaces\nbirthrate\nbirthrates\nbirthright\nbirthrights\nbirths\nbirthstone\nbirthstones\nbis\nbiscuit\nbiscuits\nbise\nbisect\nbisected\nbisecting\nbisection\nbisections\nbisector\nbisectors\nbisects\nbises\nbisexual\nbisexuality\nbisexually\nbisexuals\nbishop\nbishoped\nbishoping\nbishopric\nbishoprics\nbishops\nbisk\nbisks\nbismuth\nbismuths\nbisnaga\nbisnagas\nbison\nbisons\nbisque\nbisques\nbistate\nbister\nbistered\nbisters\nbistort\nbistorts\nbistouries\nbistoury\nbistre\nbistred\nbistres\nbistro\nbistroic\nbistros\nbit\nbitable\nbitch\nbitched\nbitcheries\nbitchery\nbitches\nbitchier\nbitchiest\nbitchily\nbitching\nbitchy\nbite\nbiteable\nbiter\nbiters\nbites\nbitewing\nbitewings\nbiting\nbitingly\nbits\nbitstock\nbitstocks\nbitsy\nbitt\nbitted\nbitten\nbitter\nbittered\nbitterer\nbitterest\nbittering\nbitterish\nbitterly\nbittern\nbitterness\nbitterns\nbitters\nbittersweet\nbittersweets\nbittier\nbittiest\nbitting\nbittings\nbittock\nbittocks\nbitts\nbitty\nbitumen\nbitumens\nbituminous\nbivalent\nbivalents\nbivalve\nbivalved\nbivalves\nbivinyl\nbivinyls\nbivouac\nbivouacked\nbivouacking\nbivouacks\nbivouacs\nbiweeklies\nbiweekly\nbiyearly\nbiz\nbizarre\nbizarrely\nbizarreness\nbizarres\nbize\nbizes\nbiznaga\nbiznagas\nbizonal\nbizone\nbizones\nblab\nblabbed\nblabber\nblabbered\nblabbering\nblabbers\nblabbing\nblabby\nblabs\nblack\nblackball\nblackballed\nblackballing\nblackballs\nblackberries\nblackberry\nblackbird\nblackbirds\nblackboard\nblackboards\nblackboy\nblackboys\nblackcap\nblackcaps\nblacked\nblacken\nblackened\nblackener\nblackeners\nblackening\nblackens\nblacker\nblackest\nblackfin\nblackfins\nblackflies\nblackfly\nblackguard\nblackguardly\nblackguards\nblackgum\nblackgums\nblackhead\nblackheads\nblacking\nblackings\nblackish\nblackjack\nblackjacked\nblackjacking\nblackjacks\nblackleg\nblacklegs\nblacklist\nblacklisted\nblacklisting\nblacklists\nblackly\nblackmail\nblackmailed\nblackmailer\nblackmailers\nblackmailing\nblackmails\nblackness\nblackout\nblackouts\nblacks\nblacksmith\nblacksmiths\nblacktop\nblacktopped\nblacktopping\nblacktops\nbladder\nbladderlike\nbladders\nbladdery\nblade\nbladed\nblades\nblae\nblah\nblahs\nblain\nblains\nblam\nblamable\nblamably\nblame\nblamed\nblameful\nblameless\nblamelessly\nblamelessness\nblamer\nblamers\nblames\nblameworthiness\nblameworthy\nblaming\nblams\nblanch\nblanched\nblancher\nblanchers\nblanches\nblanching\nbland\nblander\nblandest\nblandish\nblandished\nblandisher\nblandishers\nblandishes\nblandishing\nblandishment\nblandishments\nblandly\nblandness\nblank\nblanked\nblanker\nblankest\nblanket\nblanketed\nblanketing\nblankets\nblanking\nblankly\nblankness\nblanks\nblare\nblared\nblares\nblaring\nblarney\nblarneyed\nblarneying\nblarneys\nblase\nblaspheme\nblasphemed\nblasphemer\nblasphemers\nblasphemes\nblasphemies\nblaspheming\nblasphemous\nblasphemously\nblasphemousness\nblasphemy\nblast\nblasted\nblastema\nblastemas\nblastemata\nblaster\nblasters\nblastie\nblastier\nblasties\nblastiest\nblasting\nblastings\nblastoff\nblastoffs\nblastoma\nblastomas\nblastomata\nblasts\nblastula\nblastulae\nblastulas\nblasty\nblat\nblatancies\nblatancy\nblatant\nblatantly\nblate\nblather\nblathered\nblathering\nblathers\nblats\nblatted\nblatter\nblattered\nblattering\nblatters\nblatting\nblaubok\nblauboks\nblaw\nblawed\nblawing\nblawn\nblaws\nblaze\nblazed\nblazer\nblazers\nblazes\nblazing\nblazon\nblazoned\nblazoner\nblazoners\nblazoning\nblazonments\nblazonries\nblazonry\nblazons\nbleach\nbleachable\nbleached\nbleacher\nbleachers\nbleaches\nbleaching\nbleak\nbleaker\nbleakest\nbleakish\nbleakly\nbleakness\nbleaks\nblear\nbleared\nblearier\nbleariest\nblearily\nbleariness\nblearing\nblears\nbleary\nbleat\nbleated\nbleater\nbleaters\nbleating\nbleats\nbleb\nblebby\nblebs\nbled\nbleed\nbleeder\nbleeders\nbleeding\nbleedings\nbleeds\nbleep\nblellum\nblellums\nblemish\nblemished\nblemishes\nblemishing\nblench\nblenched\nblencher\nblenchers\nblenches\nblenching\nblend\nblende\nblended\nblender\nblenders\nblendes\nblending\nblends\nblennies\nblenny\nblent\nblesbok\nblesboks\nblesbuck\nblesbucks\nbless\nblessed\nblesseder\nblessedest\nblessedly\nblessedness\nblesser\nblessers\nblesses\nblessing\nblessings\nblest\nblet\nblether\nblethered\nblethering\nblethers\nblets\nblew\nblight\nblighted\nblighter\nblighters\nblighties\nblighting\nblights\nblighty\nblimey\nblimp\nblimpish\nblimps\nblimy\nblin\nblind\nblindage\nblindages\nblinded\nblinder\nblinders\nblindest\nblindfold\nblindfolded\nblindfolding\nblindfolds\nblinding\nblindly\nblindness\nblinds\nblini\nblinis\nblink\nblinkard\nblinkards\nblinked\nblinker\nblinkered\nblinkering\nblinkers\nblinking\nblinks\nblintz\nblintze\nblintzes\nblip\nblipped\nblipping\nblips\nbliss\nblisses\nblissful\nblissfully\nblissfulness\nblister\nblistered\nblistering\nblisters\nblistery\nblite\nblites\nblithe\nblithely\nblither\nblithered\nblithering\nblithers\nblithesome\nblithesomely\nblithest\nblitz\nblitzed\nblitzes\nblitzing\nblitzkrieg\nblitzkriegs\nblizzard\nblizzards\nbloat\nbloated\nbloater\nbloaters\nbloating\nbloats\nblob\nblobbed\nblobbing\nblobs\nbloc\nblock\nblockade\nblockaded\nblockader\nblockaders\nblockades\nblockading\nblockage\nblockages\nblockbuster\nblockbusters\nblockbusting\nblocked\nblocker\nblockers\nblockhead\nblockheads\nblockhouse\nblockhouses\nblockier\nblockiest\nblocking\nblockish\nblocks\nblocky\nblocs\nbloke\nblokes\nblond\nblonde\nblondeness\nblonder\nblondes\nblondest\nblondish\nblonds\nblood\nbloodbath\nbloodbaths\nbloodcurdling\nblooded\nbloodfin\nbloodfins\nbloodhound\nbloodhounds\nbloodied\nbloodier\nbloodies\nbloodiest\nbloodily\nbloodiness\nblooding\nbloodings\nbloodless\nbloodlessly\nbloodlessness\nbloodletting\nbloodlettings\nbloodline\nbloodlines\nbloodmobile\nbloodmobiles\nbloodred\nbloods\nbloodshed\nbloodshot\nbloodstain\nbloodstained\nbloodstream\nbloodstreams\nbloodsucker\nbloodsuckers\nbloodsucking\nbloodthirstily\nbloodthirstiness\nbloodthirsty\nbloody\nbloodying\nbloom\nbloomed\nbloomer\nbloomeries\nbloomers\nbloomery\nbloomier\nbloomiest\nblooming\nblooms\nbloomy\nbloop\nblooped\nblooper\nbloopers\nblooping\nbloops\nblossom\nblossomed\nblossoming\nblossoms\nblossomy\nblot\nblotch\nblotched\nblotches\nblotchier\nblotchiest\nblotchily\nblotching\nblotchy\nblotless\nblots\nblotted\nblotter\nblotters\nblottier\nblottiest\nblotting\nblotto\nblotty\nblouse\nbloused\nblouses\nblousier\nblousiest\nblousily\nblousing\nblouson\nblousons\nblousy\nblow\nblowback\nblowbacks\nblowby\nblowbys\nblower\nblowers\nblowfish\nblowfishes\nblowflies\nblowfly\nblowgun\nblowguns\nblowhard\nblowhards\nblowhole\nblowholes\nblowier\nblowiest\nblowing\nblown\nblowoff\nblowoffs\nblowout\nblowouts\nblowpipe\nblowpipes\nblows\nblowsed\nblowsier\nblowsiest\nblowsily\nblowsy\nblowtorch\nblowtorches\nblowtube\nblowtubes\nblowup\nblowups\nblowy\nblowzed\nblowzier\nblowziest\nblowzily\nblowzy\nblubber\nblubbered\nblubbering\nblubbers\nblubbery\nblucher\nbluchers\nbludgeon\nbludgeoned\nbludgeoning\nbludgeons\nblue\nblueball\nblueballs\nbluebell\nbluebells\nblueberries\nblueberry\nbluebill\nbluebills\nbluebird\nbluebirds\nbluebook\nbluebooks\nbluebottle\nbluebottles\nbluecap\nbluecaps\nbluecoat\nbluecoats\nblued\nbluefin\nbluefins\nbluefish\nbluefishes\nbluegill\nbluegills\nbluegrass\nbluegrasses\nbluegum\nbluegums\nbluehead\nblueheads\nblueing\nblueings\nblueish\nbluejack\nbluejacks\nbluejay\nbluejays\nblueline\nbluelines\nbluely\nblueness\nbluenesses\nbluenose\nbluenoses\nblueprint\nblueprints\nbluer\nblues\nbluesman\nbluesmen\nbluest\nbluestem\nbluestems\nbluestocking\nbluestockings\nbluesy\nbluet\nbluets\nblueweed\nblueweeds\nbluewood\nbluewoods\nbluey\nblueys\nbluff\nbluffed\nbluffer\nbluffers\nbluffest\nbluffing\nbluffly\nbluffness\nbluffs\nbluing\nbluings\nbluish\nbluishness\nblume\nblumed\nblumes\nbluming\nblunder\nblunderbuss\nblunderbusses\nblundered\nblunderer\nblunderers\nblundering\nblunderingly\nblunders\nblunge\nblunged\nblunger\nblungers\nblunges\nblunging\nblunt\nblunted\nblunter\nbluntest\nblunting\nbluntly\nbluntness\nblunts\nblur\nblurb\nblurbs\nblurred\nblurrier\nblurriest\nblurrily\nblurring\nblurry\nblurs\nblurt\nblurted\nblurter\nblurters\nblurting\nblurts\nblush\nblushed\nblusher\nblushers\nblushes\nblushful\nblushing\nblushingly\nbluster\nblustered\nblusterer\nblusterers\nblustering\nblusteringly\nblusterous\nblusters\nblustery\nblype\nblypes\nbo\nboa\nboar\nboard\nboarded\nboarder\nboarders\nboarding\nboardinghouse\nboardinghouses\nboardings\nboardman\nboardmen\nboardroom\nboardrooms\nboards\nboardwalk\nboardwalks\nboarfish\nboarfishes\nboarish\nboars\nboart\nboarts\nboas\nboast\nboasted\nboaster\nboasters\nboastful\nboastfully\nboastfulness\nboasting\nboasts\nboat\nboatable\nboatbill\nboatbills\nboated\nboatel\nboatels\nboater\nboaters\nboathouse\nboathouses\nboating\nboatings\nboatload\nboatloads\nboatman\nboatmen\nboats\nboatsman\nboatsmen\nboatswain\nboatswains\nboatyard\nboatyards\nbob\nbobbed\nbobber\nbobberies\nbobbers\nbobbery\nbobbies\nbobbin\nbobbinet\nbobbinets\nbobbing\nbobbins\nbobble\nbobbled\nbobbles\nbobbling\nbobby\nbobcat\nbobcats\nbobeche\nbobeches\nbobolink\nbobolinks\nbobs\nbobsled\nbobsledded\nbobsledder\nbobsledders\nbobsledding\nbobsleded\nbobsleding\nbobsleds\nbobstay\nbobstays\nbobtail\nbobtailed\nbobtailing\nbobtails\nbobwhite\nbobwhites\nbocaccio\nbocaccios\nbocce\nbocces\nbocci\nboccia\nboccias\nboccie\nboccies\nboccis\nboche\nboches\nbock\nbocks\nbod\nbode\nboded\nbodega\nbodegas\nbodement\nbodements\nbodes\nbodice\nbodices\nbodied\nbodies\nbodiless\nbodily\nboding\nbodingly\nbodings\nbodkin\nbodkins\nbods\nbody\nbodybuilder\nbodybuilders\nbodybuilding\nbodyguard\nbodyguards\nbodying\nbodysurf\nbodysurfed\nbodysurfing\nbodysurfs\nbodywork\nbodyworks\nboehmite\nboehmites\nboff\nboffin\nboffins\nboffo\nboffola\nboffolas\nboffos\nboffs\nbog\nbogan\nbogans\nbogbean\nbogbeans\nbogey\nbogeyed\nbogeying\nbogeyman\nbogeymen\nbogeys\nbogged\nboggier\nboggiest\nbogging\nboggish\nboggle\nboggled\nboggler\nbogglers\nboggles\nboggling\nboggy\nbogie\nbogies\nbogle\nbogles\nbogs\nbogus\nbogwood\nbogwoods\nbogy\nbogyism\nbogyisms\nbogyman\nbogymen\nbohea\nboheas\nbohemia\nbohemian\nbohemians\nbohemias\nbohunk\nbohunks\nboil\nboilable\nboiled\nboiler\nboilermaker\nboilermakers\nboilers\nboiling\nboils\nboing\nboisterous\nboisterously\nboisterousness\nboite\nboites\nbola\nbolar\nbolas\nbolases\nbold\nbolder\nboldest\nboldface\nboldfaced\nboldfaces\nboldfacing\nboldly\nboldness\nboldnesses\nbole\nbolero\nboleros\nboles\nbolete\nboletes\nboleti\nboletus\nboletuses\nbolide\nbolides\nbolivar\nbolivares\nbolivars\nbolivia\nbolivias\nboll\nbollard\nbollards\nbolled\nbolling\nbollix\nbollixed\nbollixes\nbollixing\nbollox\nbolloxed\nbolloxes\nbolloxing\nbolls\nbollworm\nbollworms\nbolo\nbologna\nbolognas\nboloney\nboloneys\nbolos\nbolshevism\nbolson\nbolsons\nbolster\nbolstered\nbolsterer\nbolsterers\nbolstering\nbolsters\nbolt\nbolted\nbolter\nbolters\nbolthead\nboltheads\nbolting\nboltonia\nboltonias\nboltrope\nboltropes\nbolts\nbolus\nboluses\nbomb\nbombard\nbombarded\nbombardier\nbombardiers\nbombarding\nbombardment\nbombardments\nbombards\nbombast\nbombastic\nbombastically\nbombasts\nbombe\nbombed\nbomber\nbombers\nbombes\nbombing\nbombload\nbombloads\nbombproof\nbombs\nbombshell\nbombshells\nbombsight\nbombsights\nbombycid\nbombycids\nbombyx\nbombyxes\nbonaci\nbonacis\nbonanza\nbonanzas\nbonbon\nbonbons\nbond\nbondable\nbondage\nbondages\nbonded\nbonder\nbonders\nbondholder\nbondholders\nbonding\nbondmaid\nbondmaids\nbondman\nbondmen\nbonds\nbondsman\nbondsmen\nbonduc\nbonducs\nbondwoman\nbondwomen\nbone\nboned\nbonefish\nbonefishes\nbonehead\nboneheads\nboneless\nboner\nboners\nbones\nboneset\nbonesets\nboney\nboneyard\nboneyards\nbonfire\nbonfires\nbong\nbonged\nbonging\nbongo\nbongoes\nbongoist\nbongoists\nbongos\nbongs\nbonhomie\nbonhomies\nbonier\nboniest\nboniface\nbonifaces\nboniness\nboninesses\nboning\nbonita\nbonitas\nbonito\nbonitoes\nbonitos\nbonk\nbonkers\nbonks\nbonne\nbonnes\nbonnet\nbonneted\nbonneting\nbonnets\nbonnie\nbonnier\nbonniest\nbonnily\nbonnock\nbonnocks\nbonny\nbonsai\nbonspell\nbonspells\nbonspiel\nbonspiels\nbontebok\nbonteboks\nbonus\nbonuses\nbony\nbonze\nbonzer\nbonzes\nboo\nboob\nboobies\nbooboo\nbooboos\nboobs\nbooby\nboodle\nboodled\nboodler\nboodlers\nboodles\nboodling\nbooed\nbooger\nboogers\nboogie\nboogies\nboogy\nboogyman\nboogymen\nboohoo\nboohooed\nboohooing\nboohoos\nbooing\nbook\nbookbinder\nbookbinderies\nbookbinders\nbookbindery\nbookbinding\nbookbindings\nbookcase\nbookcases\nbooked\nbookend\nbookends\nbooker\nbookers\nbookie\nbookies\nbooking\nbookings\nbookish\nbookishly\nbookishness\nbookkeeper\nbookkeepers\nbookkeeping\nbooklet\nbooklets\nbooklore\nbooklores\nbookmaker\nbookmakers\nbookmaking\nbookman\nbookmark\nbookmarks\nbookmen\nbookmobile\nbookmobiles\nbookplate\nbookplates\nbookrack\nbookracks\nbookrest\nbookrests\nbooks\nbookseller\nbooksellers\nbookshelf\nbookshelves\nbookshop\nbookshops\nbookstall\nbookstalls\nbookstore\nbookstores\nbookworm\nbookworms\nboom\nboomed\nboomer\nboomerang\nboomeranged\nboomeranging\nboomerangs\nboomers\nboomier\nboomiest\nbooming\nboomkin\nboomkins\nboomlet\nboomlets\nbooms\nboomtown\nboomtowns\nboomy\nboon\nboondocks\nboondoggle\nboondoggled\nboondoggler\nboondogglers\nboondoggles\nboondoggling\nboonies\nboons\nboor\nboorish\nboorishly\nboorishness\nboors\nboos\nboost\nboosted\nbooster\nboosters\nboosting\nboosts\nboot\nbootblack\nbootblacks\nbooted\nbootee\nbootees\nbooteries\nbootery\nbooth\nbooths\nbootie\nbooties\nbooting\nbootjack\nbootjacks\nbootlace\nbootlaces\nbootleg\nbootlegged\nbootlegger\nbootleggers\nbootlegging\nbootlegs\nbootless\nbootlessly\nbootlessness\nbootlick\nbootlicked\nbootlicking\nbootlicks\nboots\nbootstrap\nbootstraps\nbooty\nbooze\nboozed\nboozer\nboozers\nboozes\nboozier\nbooziest\nboozily\nboozing\nboozy\nbop\nbopped\nbopper\nboppers\nbopping\nbops\nbora\nboraces\nboracic\nboracite\nboracites\nborage\nborages\nboral\nborane\nboranes\nboras\nborate\nborated\nborates\nborax\nboraxes\nbordel\nbordello\nbordellos\nbordels\nborder\nbordered\nborderer\nborderers\nbordering\nborderland\nborderlands\nborderline\nborderlines\nborders\nbordure\nbordures\nbore\nboreal\nborecole\nborecoles\nbored\nboredom\nboredoms\nborer\nborers\nbores\nboric\nboride\nborides\nboring\nboringly\nborings\nborn\nborne\nborneol\nborneols\nbornite\nbornites\nboron\nboronic\nborons\nborough\nboroughs\nborrow\nborrowed\nborrower\nborrowers\nborrowing\nborrowings\nborrows\nborsch\nborsches\nborscht\nborschts\nborsht\nborshts\nborstal\nborstals\nbort\nborts\nborty\nbortz\nbortzes\nborzoi\nborzois\nbos\nboscage\nboscages\nboschbok\nboschboks\nbosh\nboshbok\nboshboks\nboshes\nboshvark\nboshvarks\nbosk\nboskage\nboskages\nbosker\nbosket\nboskets\nboskier\nboskiest\nbosks\nbosky\nbosom\nbosomed\nbosoming\nbosoms\nbosomy\nboson\nbosons\nbosque\nbosques\nbosquet\nbosquets\nboss\nbossdom\nbossdoms\nbossed\nbosses\nbossier\nbossies\nbossiest\nbossily\nbossiness\nbossing\nbossism\nbossisms\nbossy\nboston\nbostons\nbosun\nbosuns\nbot\nbota\nbotanic\nbotanical\nbotanically\nbotanies\nbotanise\nbotanised\nbotanises\nbotanising\nbotanist\nbotanists\nbotanize\nbotanized\nbotanizes\nbotanizing\nbotany\nbotas\nbotch\nbotched\nbotcher\nbotcheries\nbotchers\nbotchery\nbotches\nbotchier\nbotchiest\nbotchily\nbotching\nbotchy\nbotel\nbotels\nbotflies\nbotfly\nboth\nbother\nbotheration\nbotherations\nbothered\nbothering\nbothers\nbothersome\nbothy\nbotonee\nbotonnee\nbotryoid\nbotryose\nbots\nbott\nbottle\nbottled\nbottleful\nbottlefuls\nbottleneck\nbottlenecks\nbottlenose\nbottler\nbottlers\nbottles\nbottling\nbottom\nbottomed\nbottomer\nbottomers\nbottoming\nbottomless\nbottomlessly\nbottomlessness\nbottommost\nbottomries\nbottomry\nbottoms\nbotts\nbotulin\nbotulins\nbotulism\nbotulisms\nboucle\nboucles\nboudoir\nboudoirs\nbouffant\nbouffants\nbouffe\nbouffes\nbough\nboughed\nboughpot\nboughpots\nboughs\nbought\nboughten\nbougie\nbougies\nbouillabaisse\nbouillon\nbouillons\nboulder\nbouldered\nboulders\nbouldery\nboule\nboules\nboulevard\nboulevardier\nboulevardiers\nboulevards\nboulle\nboulles\nbounce\nbounced\nbouncer\nbouncers\nbounces\nbouncier\nbounciest\nbouncily\nbouncing\nbouncy\nbound\nboundable\nboundaries\nboundary\nbounded\nbounden\nbounder\nbounders\nbounding\nboundless\nboundlessly\nboundlessness\nbounds\nbounteous\nbounteously\nbounteousness\nbountied\nbounties\nbountiful\nbountifully\nbountifulness\nbounty\nbouquet\nbouquets\nbourbon\nbourbons\nbourdon\nbourdons\nbourg\nbourgeois\nbourgeoise\nbourgeoises\nbourgeoisie\nbourgeoisies\nbourgeon\nbourgeoned\nbourgeoning\nbourgeons\nbourgs\nbourn\nbourne\nbournes\nbourns\nbourree\nbourrees\nbourse\nbourses\nbourtree\nbourtrees\nbouse\nboused\nbouses\nbousing\nbousouki\nbousoukia\nbousoukis\nbousy\nbout\nboutique\nboutiques\nboutonniere\nboutonnieres\nbouts\nbouzouki\nbouzoukia\nbouzoukis\nbovid\nbovids\nbovine\nbovinely\nbovines\nbovinities\nbovinity\nbow\nbowdlerization\nbowdlerizations\nbowdlerize\nbowdlerized\nbowdlerizes\nbowdlerizing\nbowed\nbowel\nboweled\nboweling\nbowelled\nbowelling\nbowels\nbower\nbowered\nboweries\nbowering\nbowers\nbowery\nbowfin\nbowfins\nbowfront\nbowhead\nbowheads\nbowing\nbowingly\nbowings\nbowknot\nbowknots\nbowl\nbowlder\nbowlders\nbowled\nbowleg\nbowlegged\nbowlegs\nbowler\nbowlers\nbowless\nbowlful\nbowlfuls\nbowlike\nbowline\nbowlines\nbowling\nbowlings\nbowllike\nbowls\nbowman\nbowmen\nbowpot\nbowpots\nbows\nbowse\nbowsed\nbowses\nbowshot\nbowshots\nbowsing\nbowsprit\nbowsprits\nbowstring\nbowstrings\nbowwow\nbowwows\nbowyer\nbowyers\nbox\nboxberries\nboxberry\nboxcar\nboxcars\nboxed\nboxer\nboxers\nboxes\nboxfish\nboxfishes\nboxful\nboxfuls\nboxhaul\nboxhauled\nboxhauling\nboxhauls\nboxier\nboxiest\nboxiness\nboxinesses\nboxing\nboxings\nboxlike\nboxthorn\nboxthorns\nboxwood\nboxwoods\nboxy\nboy\nboyar\nboyard\nboyards\nboyarism\nboyarisms\nboyars\nboycott\nboycotted\nboycotter\nboycotters\nboycotting\nboycotts\nboyfriend\nboyfriends\nboyhood\nboyhoods\nboyish\nboyishly\nboyishness\nboyla\nboylas\nboyo\nboyos\nboys\nboysenberries\nboysenberry\nbozo\nbozos\nbra\nbrabble\nbrabbled\nbrabbler\nbrabblers\nbrabbles\nbrabbling\nbrace\nbraced\nbracelet\nbracelets\nbracer\nbracero\nbraceros\nbracers\nbraces\nbrach\nbraches\nbrachet\nbrachets\nbrachia\nbrachial\nbrachials\nbrachium\nbracing\nbracings\nbracken\nbrackens\nbracket\nbracketed\nbracketing\nbrackets\nbrackish\nbrackishness\nbract\nbracteal\nbracted\nbractlet\nbractlets\nbracts\nbrad\nbradawl\nbradawls\nbradded\nbradding\nbradoon\nbradoons\nbrads\nbrae\nbraes\nbrag\nbraggadocio\nbraggadocios\nbraggart\nbraggarts\nbragged\nbragger\nbraggers\nbraggest\nbraggier\nbraggiest\nbragging\nbraggingly\nbraggy\nbrags\nbrahma\nbrahmas\nbraid\nbraided\nbraider\nbraiders\nbraiding\nbraidings\nbraids\nbrail\nbrailed\nbrailing\nbraille\nbrailled\nbrailles\nbrailling\nbrails\nbrain\nbrainchild\nbrainchildren\nbrained\nbrainier\nbrainiest\nbrainily\nbraininess\nbraining\nbrainish\nbrainless\nbrainlessly\nbrainlessness\nbrainpan\nbrainpans\nbrains\nbrainstorm\nbrainstorming\nbrainstormings\nbrainstorms\nbrainwash\nbrainwashed\nbrainwasher\nbrainwashers\nbrainwashes\nbrainwashing\nbrainwashings\nbrainy\nbraise\nbraised\nbraises\nbraising\nbraize\nbraizes\nbrake\nbrakeage\nbrakeages\nbraked\nbrakeless\nbrakeman\nbrakemen\nbrakes\nbrakier\nbrakiest\nbraking\nbraky\nbramble\nbrambled\nbrambles\nbramblier\nbrambliest\nbrambling\nbrambly\nbran\nbranch\nbranched\nbranches\nbranchia\nbranchiae\nbranchier\nbranchiest\nbranching\nbranchless\nbranchy\nbrand\nbranded\nbrander\nbranders\nbrandied\nbrandies\nbranding\nbrandish\nbrandished\nbrandishes\nbrandishing\nbrands\nbrandy\nbrandying\nbrank\nbranks\nbranned\nbranner\nbranners\nbrannier\nbranniest\nbranning\nbranny\nbrans\nbrant\nbrantail\nbrantails\nbrants\nbras\nbrash\nbrasher\nbrashes\nbrashest\nbrashier\nbrashiest\nbrashly\nbrashness\nbrashy\nbrasier\nbrasiers\nbrasil\nbrasilin\nbrasilins\nbrasils\nbrass\nbrassage\nbrassages\nbrassard\nbrassards\nbrassart\nbrassarts\nbrasserie\nbrasseries\nbrasses\nbrassica\nbrassicas\nbrassie\nbrassier\nbrassiere\nbrassieres\nbrassies\nbrassiest\nbrassily\nbrassiness\nbrassish\nbrassy\nbrat\nbrats\nbrattice\nbratticed\nbrattices\nbratticing\nbrattier\nbrattiest\nbrattish\nbrattle\nbrattled\nbrattles\nbrattling\nbratty\nbraunite\nbraunites\nbrava\nbravado\nbravadoes\nbravados\nbravas\nbrave\nbraved\nbravely\nbraveness\nbraver\nbraveries\nbravers\nbravery\nbraves\nbravest\nbravi\nbraving\nbravo\nbravoed\nbravoes\nbravoing\nbravos\nbravura\nbravuras\nbravure\nbraw\nbrawer\nbrawest\nbrawl\nbrawled\nbrawler\nbrawlers\nbrawlie\nbrawlier\nbrawliest\nbrawling\nbrawls\nbrawly\nbrawn\nbrawnier\nbrawniest\nbrawnily\nbrawniness\nbrawns\nbrawny\nbraws\nbraxies\nbraxy\nbray\nbrayed\nbrayer\nbrayers\nbraying\nbrays\nbraza\nbrazas\nbraze\nbrazed\nbrazen\nbrazened\nbrazening\nbrazenly\nbrazenness\nbrazens\nbrazer\nbrazers\nbrazes\nbrazier\nbraziers\nbrazil\nbrazilin\nbrazilins\nbrazils\nbrazing\nbreach\nbreached\nbreacher\nbreachers\nbreaches\nbreaching\nbread\nbreadbasket\nbreadbaskets\nbreadboard\nbreadboards\nbreaded\nbreadfruit\nbreadfruits\nbreading\nbreadnut\nbreadnuts\nbreads\nbreadstuff\nbreadstuffs\nbreadth\nbreadths\nbreadwinner\nbreadwinners\nbreak\nbreakable\nbreakage\nbreakages\nbreakdown\nbreakdowns\nbreaker\nbreakers\nbreakfast\nbreakfasted\nbreakfasting\nbreakfasts\nbreaking\nbreakings\nbreakneck\nbreakout\nbreakouts\nbreaks\nbreakthrough\nbreakthroughs\nbreakup\nbreakups\nbreakwater\nbreakwaters\nbream\nbreamed\nbreaming\nbreams\nbreast\nbreastbone\nbreastbones\nbreasted\nbreasting\nbreastplate\nbreastplates\nbreasts\nbreaststroke\nbreaststrokes\nbreastwork\nbreastworks\nbreath\nbreathable\nbreathe\nbreathed\nbreather\nbreathers\nbreathes\nbreathier\nbreathiest\nbreathing\nbreathless\nbreathlessly\nbreathlessness\nbreaths\nbreathtaking\nbreathtakingly\nbreathy\nbreccia\nbreccial\nbreccias\nbrecham\nbrechams\nbrechan\nbrechans\nbred\nbrede\nbredes\nbree\nbreech\nbreechcloth\nbreechcloths\nbreeched\nbreeches\nbreeching\nbreed\nbreeder\nbreeders\nbreeding\nbreedings\nbreeds\nbreeks\nbrees\nbreeze\nbreezed\nbreezes\nbreezeway\nbreezeways\nbreezier\nbreeziest\nbreezily\nbreeziness\nbreezing\nbreezy\nbregma\nbregmata\nbregmate\nbren\nbrens\nbrent\nbrents\nbrethren\nbreve\nbreves\nbrevet\nbrevetcies\nbrevetcy\nbreveted\nbreveting\nbrevets\nbrevetted\nbrevetting\nbreviaries\nbreviary\nbrevier\nbreviers\nbrevities\nbrevity\nbrew\nbrewage\nbrewages\nbrewed\nbrewer\nbreweries\nbrewers\nbrewery\nbrewing\nbrewings\nbrewis\nbrewises\nbrews\nbriar\nbriard\nbriards\nbriars\nbriary\nbribable\nbribe\nbribed\nbriber\nbriberies\nbribers\nbribery\nbribes\nbribing\nbrick\nbrickbat\nbrickbats\nbricked\nbrickier\nbrickiest\nbricking\nbricklayer\nbricklayers\nbricklaying\nbricklayings\nbrickle\nbricks\nbrickwork\nbrickworks\nbricky\nbrickyard\nbrickyards\nbricole\nbricoles\nbridal\nbridally\nbridals\nbride\nbridegroom\nbridegrooms\nbrides\nbridesmaid\nbridesmaids\nbridge\nbridgeable\nbridged\nbridgehead\nbridgeheads\nbridges\nbridgework\nbridgeworks\nbridging\nbridgings\nbridle\nbridled\nbridler\nbridlers\nbridles\nbridling\nbridoon\nbridoons\nbrie\nbrief\nbriefcase\nbriefcases\nbriefed\nbriefer\nbriefers\nbriefest\nbriefing\nbriefings\nbriefly\nbriefness\nbriefs\nbrier\nbriers\nbriery\nbries\nbrig\nbrigade\nbrigaded\nbrigades\nbrigadier\nbrigadiers\nbrigading\nbrigand\nbrigandage\nbrigands\nbrigantine\nbrigantines\nbright\nbrighten\nbrightened\nbrightener\nbrighteners\nbrightening\nbrightens\nbrighter\nbrightest\nbrightly\nbrightness\nbrights\nbrigs\nbrill\nbrilliance\nbrilliancies\nbrilliancy\nbrilliant\nbrilliantine\nbrilliantines\nbrilliantly\nbrilliants\nbrills\nbrim\nbrimful\nbrimfull\nbrimless\nbrimmed\nbrimmer\nbrimmers\nbrimming\nbrims\nbrimstone\nbrimstones\nbrin\nbrinded\nbrindle\nbrindled\nbrindles\nbrine\nbrined\nbriner\nbriners\nbrines\nbring\nbringer\nbringers\nbringing\nbrings\nbrinier\nbrinies\nbriniest\nbrininess\nbrining\nbrinish\nbrink\nbrinks\nbrins\nbriny\nbrio\nbrioche\nbrioches\nbrionies\nbriony\nbrios\nbriquet\nbriquets\nbriquette\nbriquetted\nbriquettes\nbriquetting\nbris\nbrisance\nbrisances\nbrisant\nbrisk\nbrisked\nbrisker\nbriskest\nbrisket\nbriskets\nbrisking\nbriskly\nbriskness\nbrisks\nbrisling\nbrislings\nbristle\nbristled\nbristles\nbristlier\nbristliest\nbristling\nbristlings\nbristly\nbristol\nbristols\nbrit\nbritches\nbrits\nbritska\nbritskas\nbritt\nbrittle\nbrittled\nbrittleness\nbrittler\nbrittles\nbrittlest\nbrittling\nbritts\nbritzka\nbritzkas\nbritzska\nbritzskas\nbroach\nbroached\nbroacher\nbroachers\nbroaches\nbroaching\nbroad\nbroadax\nbroadaxe\nbroadaxes\nbroadband\nbroadcast\nbroadcasted\nbroadcaster\nbroadcasters\nbroadcasting\nbroadcasts\nbroadcloth\nbroadcloths\nbroaden\nbroadened\nbroadening\nbroadens\nbroader\nbroadest\nbroadish\nbroadloom\nbroadlooms\nbroadly\nbroads\nbroadside\nbroadsides\nbroadsword\nbroadswords\nbrocade\nbrocaded\nbrocades\nbrocading\nbrocatel\nbrocatels\nbroccoli\nbroccolis\nbroche\nbrochette\nbrochettes\nbrochure\nbrochures\nbrock\nbrockage\nbrockages\nbrocket\nbrockets\nbrocks\nbrocoli\nbrocolis\nbrogan\nbrogans\nbrogue\nbrogueries\nbroguery\nbrogues\nbroguish\nbroider\nbroidered\nbroideries\nbroidering\nbroiders\nbroidery\nbroil\nbroiled\nbroiler\nbroilers\nbroiling\nbroils\nbrokage\nbrokages\nbroke\nbroken\nbrokenhearted\nbrokenly\nbrokenness\nbroker\nbrokerage\nbrokerages\nbrokers\nbrollies\nbrolly\nbromal\nbromals\nbromate\nbromated\nbromates\nbromating\nbrome\nbromelin\nbromelins\nbromes\nbromic\nbromid\nbromide\nbromides\nbromidic\nbromids\nbromin\nbromine\nbromines\nbromins\nbromism\nbromisms\nbromo\nbromos\nbronc\nbronchi\nbronchia\nbronchial\nbronchitis\nbroncho\nbronchos\nbronchus\nbronco\nbroncobuster\nbroncobusters\nbroncos\nbroncs\nbronze\nbronzed\nbronzer\nbronzers\nbronzes\nbronzier\nbronziest\nbronzing\nbronzings\nbronzy\nbroo\nbrooch\nbrooches\nbrood\nbrooded\nbrooder\nbrooders\nbroodier\nbroodiest\nbroodiness\nbrooding\nbroodingly\nbroods\nbroody\nbrook\nbrooked\nbrooking\nbrookite\nbrookites\nbrooklet\nbrooklets\nbrooks\nbroom\nbroomed\nbroomier\nbroomiest\nbrooming\nbrooms\nbroomstick\nbroomsticks\nbroomy\nbroos\nbrose\nbroses\nbrosy\nbroth\nbrothel\nbrothels\nbrother\nbrothered\nbrotherhood\nbrotherhoods\nbrothering\nbrotherliness\nbrotherly\nbrothers\nbroths\nbrothy\nbrougham\nbroughams\nbrought\nbrouhaha\nbrouhahas\nbrow\nbrowbeat\nbrowbeaten\nbrowbeating\nbrowbeats\nbrowless\nbrown\nbrowned\nbrowner\nbrownest\nbrownie\nbrownier\nbrownies\nbrowniest\nbrowning\nbrownish\nbrownout\nbrownouts\nbrowns\nbrownstone\nbrownstones\nbrowny\nbrows\nbrowse\nbrowsed\nbrowser\nbrowsers\nbrowses\nbrowsing\nbrr\nbrrr\nbrucella\nbrucellae\nbrucellas\nbrucin\nbrucine\nbrucines\nbrucins\nbrugh\nbrughs\nbruin\nbruins\nbruise\nbruised\nbruiser\nbruisers\nbruises\nbruising\nbruit\nbruited\nbruiter\nbruiters\nbruiting\nbruits\nbrulot\nbrulots\nbrulyie\nbrulyies\nbrulzie\nbrulzies\nbrumal\nbrumbies\nbrumby\nbrume\nbrumes\nbrumous\nbrunch\nbrunched\nbrunches\nbrunching\nbrunet\nbrunets\nbrunette\nbrunettes\nbrunizem\nbrunizems\nbrunt\nbrunts\nbrush\nbrushed\nbrusher\nbrushers\nbrushes\nbrushier\nbrushiest\nbrushing\nbrushoff\nbrushoffs\nbrushup\nbrushups\nbrushwork\nbrushworks\nbrushy\nbrusk\nbrusker\nbruskest\nbrusque\nbrusquely\nbrusqueness\nbrusquer\nbrusquest\nbrut\nbrutal\nbrutalities\nbrutality\nbrutalization\nbrutalizations\nbrutalize\nbrutalized\nbrutalizes\nbrutalizing\nbrutally\nbrute\nbruted\nbrutely\nbrutes\nbrutified\nbrutifies\nbrutify\nbrutifying\nbruting\nbrutish\nbrutishly\nbrutishness\nbrutism\nbrutisms\nbruxism\nbruxisms\nbryologies\nbryology\nbryonies\nbryony\nbryozoan\nbryozoans\nbub\nbubal\nbubale\nbubales\nbubaline\nbubalis\nbubalises\nbubals\nbubbies\nbubble\nbubbled\nbubbler\nbubblers\nbubbles\nbubblier\nbubblies\nbubbliest\nbubbling\nbubbly\nbubby\nbubinga\nbubingas\nbubo\nbuboed\nbuboes\nbubonic\nbubs\nbuccal\nbuccally\nbuccaneer\nbuccaneerish\nbuccaneers\nbuck\nbuckaroo\nbuckaroos\nbuckayro\nbuckayros\nbuckbean\nbuckbeans\nbuckboard\nbuckboards\nbucked\nbuckeen\nbuckeens\nbucker\nbuckeroo\nbuckeroos\nbuckers\nbucket\nbucketed\nbucketful\nbucketfuls\nbucketing\nbuckets\nbucketsful\nbuckeye\nbuckeyes\nbucking\nbuckish\nbuckle\nbuckled\nbuckler\nbucklered\nbucklering\nbucklers\nbuckles\nbuckling\nbucko\nbuckoes\nbuckra\nbuckram\nbuckramed\nbuckraming\nbuckrams\nbuckras\nbucks\nbucksaw\nbucksaws\nbuckshee\nbuckshees\nbuckshot\nbuckshots\nbuckskin\nbuckskins\nbucktail\nbucktails\nbuckteeth\nbuckthorn\nbuckthorns\nbucktooth\nbucktoothed\nbuckwheat\nbucolic\nbucolically\nbucolics\nbud\nbudded\nbudder\nbudders\nbuddies\nbudding\nbuddle\nbuddleia\nbuddleias\nbuddles\nbuddy\nbudge\nbudged\nbudger\nbudgerigar\nbudgerigars\nbudgers\nbudges\nbudget\nbudgetary\nbudgeted\nbudgeter\nbudgeters\nbudgeting\nbudgets\nbudgie\nbudgies\nbudging\nbudless\nbudlike\nbuds\nbuff\nbuffable\nbuffalo\nbuffaloed\nbuffaloes\nbuffaloing\nbuffalos\nbuffed\nbuffer\nbuffered\nbuffering\nbuffers\nbuffet\nbuffeted\nbuffeter\nbuffeters\nbuffeting\nbuffets\nbuffi\nbuffier\nbuffiest\nbuffing\nbuffo\nbuffoon\nbuffooneries\nbuffoonery\nbuffoonish\nbuffoons\nbuffos\nbuffs\nbuffy\nbug\nbugaboo\nbugaboos\nbugbane\nbugbanes\nbugbear\nbugbears\nbugeye\nbugeyes\nbugged\nbugger\nbuggered\nbuggeries\nbuggering\nbuggers\nbuggery\nbuggier\nbuggies\nbuggiest\nbugging\nbuggy\nbughouse\nbughouses\nbugle\nbugled\nbugler\nbuglers\nbugles\nbugling\nbugloss\nbuglosses\nbugs\nbugseed\nbugseeds\nbugsha\nbugshas\nbuhl\nbuhls\nbuhlwork\nbuhlworks\nbuhr\nbuhrs\nbuild\nbuildable\nbuilded\nbuilder\nbuilders\nbuilding\nbuildings\nbuilds\nbuildup\nbuildups\nbuilt\nbuirdly\nbulb\nbulbar\nbulbed\nbulbel\nbulbels\nbulbil\nbulbils\nbulbous\nbulbously\nbulbs\nbulbul\nbulbuls\nbulge\nbulged\nbulger\nbulgers\nbulges\nbulgier\nbulgiest\nbulging\nbulgur\nbulgurs\nbulgy\nbulimia\nbulimiac\nbulimias\nbulimic\nbulk\nbulkage\nbulkages\nbulked\nbulkhead\nbulkheads\nbulkier\nbulkiest\nbulkily\nbulkiness\nbulking\nbulks\nbulky\nbull\nbulla\nbullace\nbullaces\nbullae\nbullate\nbullbat\nbullbats\nbulldog\nbulldogged\nbulldogging\nbulldogs\nbulldoze\nbulldozed\nbulldozer\nbulldozers\nbulldozes\nbulldozing\nbulled\nbullet\nbulleted\nbulletin\nbulletined\nbulleting\nbulletining\nbulletins\nbulletproof\nbullets\nbullfight\nbullfighter\nbullfighters\nbullfighting\nbullfights\nbullfrog\nbullfrogs\nbullhead\nbullheaded\nbullheadedly\nbullheadedness\nbullheads\nbullhorn\nbullhorns\nbullied\nbullier\nbullies\nbulliest\nbulling\nbullion\nbullions\nbullish\nbullishly\nbullneck\nbullnecks\nbullnose\nbullnoses\nbullock\nbullocks\nbullocky\nbullous\nbullpen\nbullpens\nbullpout\nbullpouts\nbullring\nbullrings\nbullrush\nbullrushes\nbulls\nbullshit\nbullshits\nbullshitted\nbullshitting\nbullweed\nbullweeds\nbullwhip\nbullwhipped\nbullwhipping\nbullwhips\nbully\nbullyboy\nbullyboys\nbullying\nbullyrag\nbullyragged\nbullyragging\nbullyrags\nbulrush\nbulrushes\nbulwark\nbulwarked\nbulwarking\nbulwarks\nbum\nbumble\nbumblebee\nbumblebees\nbumbled\nbumbler\nbumblers\nbumbles\nbumbling\nbumblings\nbumboat\nbumboats\nbumf\nbumfs\nbumkin\nbumkins\nbummed\nbummer\nbummers\nbumming\nbump\nbumped\nbumper\nbumpered\nbumpering\nbumpers\nbumph\nbumpier\nbumpiest\nbumpily\nbumpiness\nbumping\nbumpkin\nbumpkins\nbumps\nbumptious\nbumptiously\nbumptiousness\nbumpy\nbums\nbun\nbunch\nbunched\nbunches\nbunchier\nbunchiest\nbunchily\nbunching\nbunchy\nbunco\nbuncoed\nbuncoing\nbuncombe\nbuncombes\nbuncos\nbund\nbundist\nbundists\nbundle\nbundled\nbundler\nbundlers\nbundles\nbundling\nbundlings\nbunds\nbundt\nbung\nbungalow\nbungalows\nbunged\nbunghole\nbungholes\nbunging\nbungle\nbungled\nbungler\nbunglers\nbungles\nbungling\nbunglingly\nbunglings\nbungs\nbunion\nbunions\nbunk\nbunked\nbunker\nbunkered\nbunkering\nbunkers\nbunkhouse\nbunkhouses\nbunking\nbunkmate\nbunkmates\nbunko\nbunkoed\nbunkoing\nbunkos\nbunks\nbunkum\nbunkums\nbunn\nbunnies\nbunns\nbunny\nbuns\nbunt\nbunted\nbunter\nbunters\nbunting\nbuntings\nbuntline\nbuntlines\nbunts\nbunya\nbunyas\nbuoy\nbuoyage\nbuoyages\nbuoyance\nbuoyances\nbuoyancies\nbuoyancy\nbuoyant\nbuoyantly\nbuoyed\nbuoying\nbuoys\nbuqsha\nbuqshas\nbur\nbura\nburan\nburans\nburas\nburble\nburbled\nburbler\nburblers\nburbles\nburblier\nburbliest\nburbling\nburbly\nburbot\nburbots\nburbs\nburd\nburden\nburdened\nburdener\nburdeners\nburdening\nburdens\nburdensome\nburdie\nburdies\nburdock\nburdocks\nburds\nbureau\nbureaucracies\nbureaucracy\nbureaucrat\nbureaucratic\nbureaucratically\nbureaucratization\nbureaucratizations\nbureaucratize\nbureaucratized\nbureaucratizes\nbureaucratizing\nbureaucrats\nbureaus\nbureaux\nburet\nburets\nburette\nburettes\nburg\nburgage\nburgages\nburgee\nburgees\nburgeon\nburgeoned\nburgeoning\nburgeons\nburger\nburgers\nburgess\nburgesses\nburgh\nburghal\nburgher\nburghers\nburghs\nburglar\nburglaries\nburglarious\nburglarize\nburglarized\nburglarizes\nburglarizing\nburglars\nburglary\nburgle\nburgled\nburgles\nburgling\nburgomaster\nburgomasters\nburgonet\nburgonets\nburgoo\nburgoos\nburgout\nburgouts\nburgrave\nburgraves\nburgs\nburgundies\nburgundy\nburial\nburials\nburied\nburier\nburiers\nburies\nburin\nburins\nburke\nburked\nburker\nburkers\nburkes\nburking\nburkite\nburkites\nburl\nburlap\nburlaps\nburled\nburler\nburlers\nburlesk\nburlesks\nburlesque\nburlesqued\nburlesquer\nburlesquers\nburlesques\nburlesquing\nburley\nburleys\nburlier\nburliest\nburlily\nburliness\nburling\nburls\nburly\nburn\nburnable\nburned\nburner\nburners\nburnet\nburnets\nburnie\nburnies\nburning\nburningly\nburnings\nburnish\nburnished\nburnisher\nburnishers\nburnishes\nburnishing\nburnoose\nburnooses\nburnous\nburnouses\nburnout\nburnouts\nburns\nburnt\nburp\nburped\nburping\nburps\nburr\nburred\nburrer\nburrers\nburrier\nburriest\nburring\nburro\nburros\nburrow\nburrowed\nburrower\nburrowers\nburrowing\nburrows\nburrs\nburry\nburs\nbursa\nbursae\nbursal\nbursar\nbursaries\nbursars\nbursary\nbursas\nbursate\nburse\nburseed\nburseeds\nburses\nbursitis\nbursitises\nburst\nbursted\nburster\nbursters\nbursting\nburstone\nburstones\nbursts\nburthen\nburthened\nburthening\nburthens\nburton\nburtons\nburweed\nburweeds\nbury\nburying\nbus\nbusbies\nbusboy\nbusboys\nbusby\nbused\nbuses\nbush\nbushbodies\nbushbuck\nbushbucks\nbushed\nbushel\nbusheled\nbusheler\nbushelers\nbusheling\nbushelled\nbushelling\nbushels\nbusher\nbushers\nbushes\nbushfire\nbushfires\nbushgoat\nbushgoats\nbushido\nbushidos\nbushier\nbushiest\nbushily\nbushiness\nbushing\nbushings\nbushland\nbushlands\nbushless\nbushlike\nbushman\nbushmen\nbushtit\nbushtits\nbushwhack\nbushwhacked\nbushwhacker\nbushwhackers\nbushwhacking\nbushwhacks\nbushy\nbusied\nbusier\nbusies\nbusiest\nbusily\nbusiness\nbusinesses\nbusinesslike\nbusinessman\nbusinessmen\nbusinesswoman\nbusinesswomen\nbusing\nbusings\nbusk\nbusked\nbusker\nbuskers\nbuskin\nbuskined\nbusking\nbuskins\nbusks\nbusman\nbusmen\nbuss\nbussed\nbusses\nbussing\nbussings\nbust\nbustard\nbustards\nbusted\nbuster\nbusters\nbustic\nbustics\nbustier\nbustiest\nbusting\nbustle\nbustled\nbustles\nbustling\nbusts\nbusty\nbusulfan\nbusulfans\nbusy\nbusybodies\nbusybody\nbusying\nbusyness\nbusynesses\nbusywork\nbusyworks\nbut\nbutane\nbutanes\nbutanol\nbutanols\nbutanone\nbutanones\nbutch\nbutcher\nbutchered\nbutcheries\nbutchering\nbutchers\nbutchery\nbutches\nbutene\nbutenes\nbuteo\nbuteos\nbutle\nbutler\nbutleries\nbutlers\nbutlery\nbuts\nbutt\nbuttals\nbutte\nbutted\nbutter\nbuttercup\nbuttercups\nbuttered\nbutterfat\nbutterfingered\nbutterfingers\nbutterflies\nbutterfly\nbutterier\nbutteries\nbutteriest\nbuttering\nbuttermilk\nbutternut\nbutternuts\nbutters\nbutterscotch\nbuttery\nbuttes\nbutties\nbutting\nbuttock\nbuttocks\nbutton\nbuttoned\nbuttoner\nbuttoners\nbuttonhole\nbuttonholed\nbuttonholer\nbuttonholers\nbuttonholes\nbuttonholing\nbuttoning\nbuttons\nbuttony\nbuttress\nbuttressed\nbuttresses\nbuttressing\nbutts\nbutty\nbutut\nbututs\nbutyl\nbutylate\nbutylated\nbutylates\nbutylating\nbutylene\nbutylenes\nbutyls\nbutyral\nbutyrals\nbutyrate\nbutyrates\nbutyric\nbutyrin\nbutyrins\nbutyrous\nbutyryl\nbutyryls\nbuxom\nbuxomer\nbuxomest\nbuxomly\nbuxomness\nbuy\nbuyable\nbuyer\nbuyers\nbuying\nbuys\nbuzz\nbuzzard\nbuzzards\nbuzzed\nbuzzer\nbuzzers\nbuzzes\nbuzzing\nbuzzwig\nbuzzwigs\nbuzzword\nbuzzwords\nbwana\nbwanas\nby\nbye\nbyelaw\nbyelaws\nbyes\nbygone\nbygones\nbylaw\nbylaws\nbyline\nbylined\nbyliner\nbyliners\nbylines\nbylining\nbyname\nbynames\nbypass\nbypassed\nbypasses\nbypassing\nbypast\nbypath\nbypaths\nbyplay\nbyplays\nbyre\nbyres\nbyrl\nbyrled\nbyrling\nbyrls\nbyrnie\nbyrnies\nbyroad\nbyroads\nbys\nbyssi\nbyssus\nbyssuses\nbystander\nbystanders\nbystreet\nbystreets\nbytalk\nbytalks\nbyte\nbytes\nbyway\nbyways\nbyword\nbywords\nbywork\nbyworks\nbyzant\nbyzants\ncab\ncabal\ncabala\ncabalas\ncabalism\ncabalisms\ncabalist\ncabalistic\ncabalists\ncaballed\ncaballero\ncaballeros\ncaballing\ncabals\ncabana\ncabanas\ncabaret\ncabarets\ncabbage\ncabbaged\ncabbages\ncabbaging\ncabbala\ncabbalah\ncabbalahs\ncabbalas\ncabbie\ncabbies\ncabby\ncabdriver\ncabdrivers\ncaber\ncabers\ncabestro\ncabestros\ncabezon\ncabezone\ncabezones\ncabezons\ncabildo\ncabildos\ncabin\ncabined\ncabinet\ncabinetmaker\ncabinetmakers\ncabinets\ncabinetwork\ncabinetworks\ncabining\ncabins\ncable\ncabled\ncablegram\ncablegrams\ncables\ncablet\ncablets\ncableway\ncableways\ncabling\ncabman\ncabmen\ncabob\ncabobs\ncaboched\ncabochon\ncabochons\ncaboodle\ncaboodles\ncaboose\ncabooses\ncaboshed\ncabotage\ncabotages\ncabresta\ncabrestas\ncabresto\ncabrestos\ncabretta\ncabrettas\ncabrilla\ncabrillas\ncabriole\ncabrioles\ncabs\ncabstand\ncabstands\ncaca\ncacao\ncacaos\ncacas\ncachalot\ncachalots\ncache\ncached\ncachepot\ncachepots\ncaches\ncachet\ncachets\ncachexia\ncachexias\ncachexic\ncachexies\ncachexy\ncaching\ncachou\ncachous\ncachucha\ncachuchas\ncacique\ncaciques\ncackle\ncackled\ncackler\ncacklers\ncackles\ncackling\ncacodyl\ncacodyls\ncacomixl\ncacomixls\ncacophonies\ncacophonous\ncacophony\ncacti\ncactoid\ncactus\ncactuses\ncad\ncadaster\ncadasters\ncadastre\ncadastres\ncadaver\ncadaverous\ncadaverously\ncadavers\ncaddice\ncaddices\ncaddie\ncaddied\ncaddies\ncaddis\ncaddises\ncaddish\ncaddishly\ncaddishness\ncaddy\ncaddying\ncade\ncadelle\ncadelles\ncadence\ncadenced\ncadences\ncadencies\ncadencing\ncadency\ncadent\ncadenza\ncadenzas\ncades\ncadet\ncadets\ncadge\ncadged\ncadger\ncadgers\ncadges\ncadging\ncadgy\ncadi\ncadis\ncadmic\ncadmium\ncadmiums\ncadre\ncadres\ncads\ncaducean\ncaducei\ncaduceus\ncaducities\ncaducity\ncaducous\ncaecaeca\ncaecal\ncaecally\ncaecum\ncaeoma\ncaeomas\ncaesium\ncaesiums\ncaestus\ncaestuses\ncaesura\ncaesurae\ncaesural\ncaesuras\ncaesuric\ncafe\ncafes\ncafeteria\ncafeterias\ncaffein\ncaffeine\ncaffeines\ncaffeins\ncaftan\ncaftans\ncage\ncaged\ncageling\ncagelings\ncager\ncages\ncagey\ncagier\ncagiest\ncagily\ncaginess\ncaginesses\ncaging\ncagy\ncahier\ncahiers\ncahoot\ncahoots\ncahow\ncahows\ncaid\ncaids\ncaiman\ncaimans\ncain\ncains\ncaique\ncaiques\ncaird\ncairds\ncairn\ncairned\ncairns\ncairny\ncaisson\ncaissons\ncaitiff\ncaitiffs\ncajaput\ncajaputs\ncajeput\ncajeputs\ncajole\ncajoled\ncajoler\ncajoleries\ncajolers\ncajolery\ncajoles\ncajoling\ncajon\ncajones\ncajuput\ncajuputs\ncake\ncaked\ncakes\ncakewalk\ncakewalked\ncakewalking\ncakewalks\ncakey\ncaking\ncaky\ncalabash\ncalabashes\ncalaboose\ncalabooses\ncaladium\ncaladiums\ncalamar\ncalamaries\ncalamars\ncalamary\ncalami\ncalamine\ncalamined\ncalamines\ncalamining\ncalamint\ncalamints\ncalamite\ncalamites\ncalamities\ncalamitous\ncalamitously\ncalamitousness\ncalamity\ncalamus\ncalando\ncalash\ncalashes\ncalathi\ncalathos\ncalathus\ncalcanea\ncalcanei\ncalcar\ncalcareous\ncalcareously\ncalcareousness\ncalcaria\ncalcars\ncalceate\ncalces\ncalcic\ncalcific\ncalcification\ncalcifications\ncalcified\ncalcifies\ncalcify\ncalcifying\ncalcimine\ncalcimined\ncalcimines\ncalcimining\ncalcination\ncalcinations\ncalcine\ncalcined\ncalcines\ncalcining\ncalcite\ncalcites\ncalcitic\ncalcium\ncalciums\ncalcspar\ncalcspars\ncalctufa\ncalctufas\ncalctuff\ncalctuffs\ncalculable\ncalculably\ncalculate\ncalculated\ncalculatedly\ncalculates\ncalculating\ncalculatingly\ncalculation\ncalculations\ncalculative\ncalculator\ncalculators\ncalculi\ncalculus\ncalculuses\ncaldera\ncalderas\ncaldron\ncaldrons\ncaleche\ncaleches\ncalendal\ncalendar\ncalendared\ncalendaring\ncalendars\ncalender\ncalendered\ncalendering\ncalenders\ncalends\ncalesa\ncalesas\ncalf\ncalflike\ncalfs\ncalfskin\ncalfskins\ncaliber\ncalibered\ncalibers\ncalibrate\ncalibrated\ncalibrates\ncalibrating\ncalibration\ncalibrations\ncalibrator\ncalibrators\ncalibre\ncalibred\ncalibres\ncalices\ncaliche\ncaliches\ncalicle\ncalicles\ncalico\ncalicoes\ncalicos\ncalif\ncalifate\ncalifates\ncalifs\ncalipash\ncalipashes\ncalipee\ncalipees\ncaliper\ncalipered\ncalipering\ncalipers\ncaliph\ncaliphal\ncaliphate\ncaliphates\ncaliphs\ncalisaya\ncalisayas\ncalisthenic\ncalisthenics\ncalix\ncalk\ncalked\ncalker\ncalkers\ncalkin\ncalking\ncalkins\ncalks\ncall\ncalla\ncallable\ncallan\ncallans\ncallant\ncallants\ncallas\ncallback\ncallbacks\ncallboy\ncallboys\ncalled\ncaller\ncallers\ncallet\ncallets\ncalligrapher\ncalligraphers\ncalligraphic\ncalligraphically\ncalligraphy\ncalling\ncallings\ncalliope\ncalliopes\ncallipee\ncallipees\ncalliper\ncallipered\ncallipering\ncallipers\ncallose\ncalloses\ncallosities\ncallosity\ncallous\ncalloused\ncallouses\ncallousing\ncallously\ncallousness\ncallow\ncallower\ncallowest\ncallowness\ncalls\ncallus\ncallused\ncalluses\ncallusing\ncalm\ncalmed\ncalmer\ncalmest\ncalming\ncalmly\ncalmness\ncalmnesses\ncalms\ncalomel\ncalomels\ncaloric\ncalorically\ncalorics\ncalorie\ncalories\ncalorific\ncalorimeter\ncalorimeters\ncalorimetric\ncalorimetrically\ncalory\ncalotte\ncalottes\ncaloyer\ncaloyers\ncalpac\ncalpack\ncalpacks\ncalpacs\ncalque\ncalqued\ncalques\ncalquing\ncalthrop\ncalthrops\ncaltrap\ncaltraps\ncaltrop\ncaltrops\ncalumet\ncalumets\ncalumniate\ncalumniated\ncalumniates\ncalumniating\ncalumniation\ncalumniations\ncalumniator\ncalumniators\ncalumnies\ncalumnious\ncalumniously\ncalumny\ncalutron\ncalutrons\ncalvados\ncalvadoses\ncalvaria\ncalvarias\ncalvaries\ncalvary\ncalve\ncalved\ncalves\ncalving\ncalx\ncalxes\ncalycate\ncalyceal\ncalyces\ncalycine\ncalycle\ncalycles\ncalyculi\ncalypso\ncalypsoes\ncalypsos\ncalypter\ncalypters\ncalyptra\ncalyptras\ncalyx\ncalyxes\ncam\ncamail\ncamailed\ncamails\ncamaraderie\ncamaraderies\ncamas\ncamases\ncamass\ncamasses\ncamber\ncambered\ncambering\ncambers\ncambia\ncambial\ncambism\ncambisms\ncambist\ncambists\ncambium\ncambiums\ncambogia\ncambogias\ncambric\ncambrics\ncame\ncamel\ncameleer\ncameleers\ncamelia\ncamelias\ncamellia\ncamellias\ncamels\ncameo\ncameoed\ncameoing\ncameos\ncamera\ncamerae\ncameral\ncameraman\ncameramen\ncameras\ncamerawoman\ncamerawomen\ncames\ncamion\ncamions\ncamisa\ncamisade\ncamisades\ncamisado\ncamisadoes\ncamisados\ncamisas\ncamise\ncamises\ncamisia\ncamisias\ncamisole\ncamisoles\ncamlet\ncamlets\ncamomile\ncamomiles\ncamorra\ncamorras\ncamouflage\ncamouflaged\ncamouflages\ncamouflaging\ncamp\ncampagna\ncampagne\ncampaign\ncampaigned\ncampaigner\ncampaigners\ncampaigning\ncampaigns\ncampanile\ncampaniles\ncampanili\ncamped\ncamper\ncampers\ncampfire\ncampfires\ncampground\ncampgrounds\ncamphene\ncamphenes\ncamphine\ncamphines\ncamphol\ncamphols\ncamphor\ncamphorate\ncamphorated\ncamphorates\ncamphorating\ncamphors\ncampi\ncampier\ncampiest\ncampily\ncamping\ncampings\ncampion\ncampions\ncampo\ncampong\ncampongs\ncamporee\ncamporees\ncampos\ncamps\ncampsite\ncampsites\ncampus\ncampuses\ncampy\ncams\ncamshaft\ncamshafts\ncan\ncanaille\ncanailles\ncanakin\ncanakins\ncanal\ncanaled\ncanaling\ncanalise\ncanalised\ncanalises\ncanalising\ncanalization\ncanalizations\ncanalize\ncanalized\ncanalizes\ncanalizing\ncanalled\ncanaller\ncanallers\ncanalling\ncanals\ncanape\ncanapes\ncanard\ncanards\ncanaries\ncanary\ncanasta\ncanastas\ncancan\ncancans\ncancel\ncancelable\ncanceled\ncanceler\ncancelers\ncanceling\ncancellable\ncancellation\ncancellations\ncancelled\ncanceller\ncancellers\ncancelling\ncancels\ncancer\ncancerous\ncancerously\ncancers\ncancha\ncanchas\ncancroid\ncancroids\ncandela\ncandelabra\ncandelabras\ncandelabrum\ncandelabrums\ncandelas\ncandent\ncandescent\ncandid\ncandida\ncandidacies\ncandidacy\ncandidas\ncandidate\ncandidates\ncandider\ncandidest\ncandidly\ncandidness\ncandids\ncandied\ncandies\ncandle\ncandled\ncandlelight\ncandlelights\ncandler\ncandlers\ncandles\ncandlestick\ncandlesticks\ncandling\ncandor\ncandors\ncandour\ncandours\ncandy\ncandying\ncane\ncaned\ncanella\ncanellas\ncaner\ncaners\ncanes\ncaneware\ncanewares\ncanfield\ncanfields\ncanful\ncanfuls\ncangue\ncangues\ncanid\ncanikin\ncanikins\ncanine\ncanines\ncaning\ncaninities\ncaninity\ncanister\ncanisters\ncanities\ncanker\ncankered\ncankering\ncankerous\ncankers\ncanna\ncannabic\ncannabin\ncannabins\ncannabis\ncannabises\ncannas\ncanned\ncannel\ncannelon\ncannelons\ncannels\ncanner\ncanneries\ncanners\ncannery\ncannibal\ncannibalism\ncannibalistic\ncannibalize\ncannibalized\ncannibalizes\ncannibalizing\ncannibals\ncannie\ncannier\ncanniest\ncannikin\ncannikins\ncannily\ncanniness\ncanning\ncannings\ncannon\ncannonade\ncannonaded\ncannonades\ncannonading\ncannonball\ncannonballs\ncannoned\ncannoneer\ncannoneering\ncannoneers\ncannoning\ncannonries\ncannonry\ncannons\ncannot\ncannula\ncannulae\ncannular\ncannulas\ncanny\ncanoe\ncanoed\ncanoeing\ncanoeist\ncanoeists\ncanoes\ncanon\ncanoness\ncanonesses\ncanonic\ncanonical\ncanonically\ncanonicals\ncanonicity\ncanonise\ncanonised\ncanonises\ncanonising\ncanonist\ncanonists\ncanonization\ncanonizations\ncanonize\ncanonized\ncanonizes\ncanonizing\ncanonries\ncanonry\ncanons\ncanopied\ncanopies\ncanopy\ncanopying\ncanorous\ncans\ncansful\ncanso\ncansos\ncanst\ncant\ncantala\ncantalas\ncantaloupe\ncantaloupes\ncantankerous\ncantankerously\ncantankerousness\ncantata\ncantatas\ncantdog\ncantdogs\ncanted\ncanteen\ncanteens\ncanter\ncantered\ncantering\ncanters\ncanthal\ncanthi\ncanthus\ncantic\ncanticle\ncanticles\ncantilever\ncantilevers\ncantina\ncantinas\ncanting\ncantle\ncantles\ncanto\ncanton\ncantonal\ncantoned\ncantoning\ncantonment\ncantonments\ncantons\ncantor\ncantors\ncantos\ncantraip\ncantraips\ncantrap\ncantraps\ncantrip\ncantrips\ncants\ncantus\ncanty\ncanula\ncanulae\ncanulas\ncanulate\ncanulated\ncanulates\ncanulating\ncanvas\ncanvased\ncanvaser\ncanvasers\ncanvases\ncanvasing\ncanvass\ncanvassed\ncanvasser\ncanvassers\ncanvasses\ncanvassing\ncanyon\ncanyons\ncanzona\ncanzonas\ncanzone\ncanzones\ncanzonet\ncanzonets\ncanzoni\ncap\ncapabilities\ncapability\ncapable\ncapabler\ncapablest\ncapably\ncapacious\ncapaciously\ncapaciousness\ncapacitance\ncapacitances\ncapacities\ncapacitive\ncapacitor\ncapacitors\ncapacity\ncaparison\ncaparisons\ncape\ncaped\ncapelan\ncapelans\ncapelet\ncapelets\ncapelin\ncapelins\ncaper\ncapered\ncaperer\ncaperers\ncapering\ncapers\ncapes\ncapeskin\ncapeskins\ncapework\ncapeworks\ncapful\ncapfuls\ncaph\ncaphs\ncapias\ncapiases\ncapillaries\ncapillary\ncapita\ncapital\ncapitalism\ncapitalist\ncapitalistic\ncapitalistically\ncapitalists\ncapitalization\ncapitalizations\ncapitalize\ncapitalized\ncapitalizes\ncapitalizing\ncapitally\ncapitals\ncapitate\ncapitation\ncapitations\ncapitol\ncapitols\ncapitula\ncapitulate\ncapitulated\ncapitulates\ncapitulating\ncapitulation\ncapitulations\ncapless\ncaplin\ncaplins\ncapmaker\ncapmakers\ncapo\ncapon\ncaponier\ncaponiers\ncaponize\ncaponized\ncaponizes\ncaponizing\ncapons\ncaporal\ncaporals\ncapos\ncapote\ncapotes\ncapouch\ncapouches\ncapped\ncapper\ncappers\ncapping\ncappings\ncapric\ncapricci\ncapriccio\ncapriccios\ncaprice\ncaprices\ncapricious\ncapriciously\ncapriciousness\ncaprifig\ncaprifigs\ncaprine\ncapriole\ncaprioled\ncaprioles\ncaprioling\ncaps\ncapsicin\ncapsicins\ncapsicum\ncapsicums\ncapsid\ncapsidal\ncapsids\ncapsize\ncapsized\ncapsizes\ncapsizing\ncapstan\ncapstans\ncapstone\ncapstones\ncapsular\ncapsulate\ncapsulated\ncapsule\ncapsuled\ncapsules\ncapsuling\ncaptain\ncaptaincies\ncaptaincy\ncaptained\ncaptaining\ncaptains\ncaptainship\ncaptan\ncaptans\ncaption\ncaptioned\ncaptioning\ncaptions\ncaptious\ncaptiously\ncaptiousness\ncaptivate\ncaptivated\ncaptivates\ncaptivating\ncaptivation\ncaptivations\ncaptivator\ncaptivators\ncaptive\ncaptives\ncaptivities\ncaptivity\ncaptor\ncaptors\ncapture\ncaptured\ncapturer\ncapturers\ncaptures\ncapturing\ncapuche\ncapuched\ncapuches\ncapuchin\ncapuchins\ncaput\ncapybara\ncapybaras\ncar\ncarabao\ncarabaos\ncarabid\ncarabids\ncarabin\ncarabine\ncarabines\ncarabins\ncaracal\ncaracals\ncaracara\ncaracaras\ncarack\ncaracks\ncaracol\ncaracole\ncaracoled\ncaracoles\ncaracoling\ncaracolled\ncaracolling\ncaracols\ncaracul\ncaraculs\ncarafe\ncarafes\ncaragana\ncaraganas\ncarageen\ncarageens\ncaramel\ncaramelize\ncaramelized\ncaramelizes\ncaramelizing\ncaramels\ncarangid\ncarangids\ncarapace\ncarapaces\ncarapax\ncarapaxes\ncarassow\ncarassows\ncarat\ncarate\ncarates\ncarats\ncaravan\ncaravaned\ncaravaning\ncaravanned\ncaravanning\ncaravans\ncaravansaries\ncaravansary\ncaravanserai\ncaravanserais\ncaravel\ncaravels\ncaraway\ncaraways\ncarb\ncarbamic\ncarbamyl\ncarbamyls\ncarbarn\ncarbarns\ncarbaryl\ncarbaryls\ncarbide\ncarbides\ncarbine\ncarbines\ncarbinol\ncarbinols\ncarbohydrate\ncarbohydrates\ncarbon\ncarbonate\ncarbonated\ncarbonates\ncarbonating\ncarbonation\ncarbonations\ncarbonic\ncarbonization\ncarbonize\ncarbonized\ncarbonizes\ncarbonizing\ncarbons\ncarbonyl\ncarbonyls\ncarbora\ncarboras\ncarboxyl\ncarboxyls\ncarboy\ncarboyed\ncarboys\ncarbs\ncarbuncle\ncarbuncled\ncarbuncles\ncarburet\ncarbureted\ncarbureter\ncarburetest\ncarbureting\ncarburetor\ncarburetors\ncarburets\ncarburetted\ncarburetting\ncarcajou\ncarcajous\ncarcanet\ncarcanets\ncarcase\ncarcases\ncarcass\ncarcasses\ncarcel\ncarcels\ncarcinogen\ncarcinogenic\ncarcinogenicity\ncarcinogens\ncarcinoma\ncarcinomas\ncarcinomata\ncard\ncardamom\ncardamoms\ncardamon\ncardamons\ncardamum\ncardamums\ncardboard\ncardboards\ncardcase\ncardcases\ncarded\ncarder\ncarders\ncardia\ncardiac\ncardiacs\ncardiae\ncardias\ncardigan\ncardigans\ncardinal\ncardinally\ncardinals\ncarding\ncardings\ncardiogram\ncardiograms\ncardiograph\ncardiographic\ncardiographs\ncardiography\ncardioid\ncardioids\ncardiologist\ncardiologists\ncardiology\ncardiovascular\ncarditic\ncarditis\ncarditises\ncardoon\ncardoons\ncards\ncardsharp\ncardsharper\ncardsharpers\ncardsharps\ncare\ncared\ncareen\ncareened\ncareener\ncareeners\ncareening\ncareens\ncareer\ncareered\ncareerer\ncareerers\ncareering\ncareers\ncarefree\ncareful\ncarefuller\ncarefullest\ncarefully\ncarefulness\ncareless\ncarelessly\ncarelessness\ncarer\ncarers\ncares\ncaress\ncaressed\ncaresser\ncaressers\ncaresses\ncaressing\ncaressingly\ncaressive\ncaressively\ncaret\ncaretaker\ncaretakers\ncarets\ncareworn\ncarex\ncarfare\ncarfares\ncarful\ncarfuls\ncargo\ncargoes\ncargos\ncarhop\ncarhops\ncaribe\ncaribes\ncaribou\ncaribous\ncaricature\ncaricatured\ncaricatures\ncaricaturing\ncaricaturist\ncaricaturists\ncarices\ncaried\ncaries\ncarillon\ncarillonned\ncarillonneur\ncarillonneurs\ncarillonning\ncarillons\ncarina\ncarinae\ncarinal\ncarinas\ncarinate\ncaring\ncarioca\ncariocas\ncariole\ncarioles\ncarious\ncark\ncarked\ncarking\ncarks\ncarl\ncarle\ncarles\ncarless\ncarlin\ncarline\ncarlines\ncarling\ncarlings\ncarlins\ncarlish\ncarload\ncarloads\ncarls\ncarmaker\ncarmakers\ncarman\ncarmen\ncarminative\ncarminatives\ncarmine\ncarmines\ncarn\ncarnage\ncarnages\ncarnal\ncarnality\ncarnally\ncarnation\ncarnations\ncarnauba\ncarnaubas\ncarney\ncarneys\ncarnie\ncarnies\ncarnified\ncarnifies\ncarnify\ncarnifying\ncarnival\ncarnivals\ncarnivore\ncarnivores\ncarnivorous\ncarnivorously\ncarnivorousness\ncarnotite\ncarnotites\ncarns\ncarny\ncaroach\ncaroaches\ncarob\ncarobs\ncaroch\ncaroche\ncaroches\ncarol\ncaroled\ncaroler\ncarolers\ncaroli\ncaroling\ncarolled\ncaroller\ncarollers\ncarolling\ncarols\ncarolus\ncaroluses\ncarom\ncaromed\ncaroming\ncaroms\ncarotene\ncarotenes\ncarotid\ncarotids\ncarotin\ncarotins\ncarousal\ncarousals\ncarouse\ncaroused\ncarousel\ncarousels\ncarouser\ncarousers\ncarouses\ncarousing\ncarp\ncarpal\ncarpale\ncarpalia\ncarpals\ncarped\ncarpel\ncarpels\ncarpenter\ncarpentered\ncarpentering\ncarpenters\ncarpentry\ncarper\ncarpers\ncarpet\ncarpetbag\ncarpetbagged\ncarpetbagger\ncarpetbaggers\ncarpetbagging\ncarpetbags\ncarpeted\ncarpeting\ncarpets\ncarpi\ncarping\ncarpingly\ncarpings\ncarport\ncarports\ncarps\ncarpus\ncarrack\ncarracks\ncarrel\ncarrell\ncarrells\ncarrels\ncarriage\ncarriages\ncarried\ncarrier\ncarriers\ncarries\ncarriole\ncarrioles\ncarrion\ncarrions\ncarritch\ncarritches\ncarroch\ncarroches\ncarrom\ncarromed\ncarroming\ncarroms\ncarrot\ncarrotier\ncarrotiest\ncarrotin\ncarrotins\ncarrots\ncarroty\ncarrousel\ncarrousels\ncarry\ncarryall\ncarryalls\ncarrying\ncarryon\ncarryons\ncarryout\ncarryouts\ncars\ncarse\ncarses\ncarsick\ncart\ncartable\ncartage\ncartages\ncarte\ncarted\ncartel\ncartels\ncarter\ncarters\ncartes\ncartilage\ncartilaginous\ncarting\ncartload\ncartloads\ncartographer\ncartographers\ncartographic\ncartography\ncarton\ncartoned\ncartoning\ncartons\ncartoon\ncartooned\ncartooning\ncartoonist\ncartoonists\ncartoons\ncartop\ncartouch\ncartouches\ncartridge\ncartridges\ncarts\ncartwheel\ncartwheels\ncaruncle\ncaruncles\ncarve\ncarved\ncarvel\ncarvels\ncarven\ncarver\ncarvers\ncarves\ncarving\ncarvings\ncaryatid\ncaryatides\ncaryatids\ncaryotin\ncaryotins\ncasa\ncasaba\ncasabas\ncasas\ncasava\ncasavas\ncascabel\ncascabels\ncascable\ncascables\ncascade\ncascaded\ncascades\ncascading\ncascara\ncascaras\ncase\ncasease\ncaseases\ncaseate\ncaseated\ncaseates\ncaseating\ncasebook\ncasebooks\ncased\ncasefied\ncasefies\ncasefy\ncasefying\ncaseic\ncasein\ncaseins\ncasemate\ncasemates\ncasement\ncasements\ncaseose\ncaseoses\ncaseous\ncasern\ncaserne\ncasernes\ncaserns\ncases\ncasette\ncasettes\ncasework\ncaseworker\ncaseworkers\ncaseworks\ncaseworm\ncaseworms\ncash\ncashable\ncashaw\ncashaws\ncashbook\ncashbooks\ncashbox\ncashboxes\ncashed\ncashes\ncashew\ncashews\ncashier\ncashiered\ncashiering\ncashiers\ncashing\ncashless\ncashmere\ncashmeres\ncashoo\ncashoos\ncasimere\ncasimeres\ncasimire\ncasimires\ncasing\ncasings\ncasino\ncasinos\ncask\ncasked\ncasket\ncasketed\ncasketing\ncaskets\ncasking\ncasks\ncasky\ncasque\ncasqued\ncasques\ncassaba\ncassabas\ncassava\ncassavas\ncasserole\ncasseroles\ncassette\ncassettes\ncassia\ncassias\ncassino\ncassinos\ncassis\ncassises\ncassock\ncassocks\ncast\ncastanet\ncastanets\ncastaway\ncastaways\ncaste\ncasteism\ncasteisms\ncastellated\ncaster\ncasters\ncastes\ncastigate\ncastigated\ncastigates\ncastigating\ncastigation\ncastigations\ncastigator\ncastigators\ncasting\ncastings\ncastle\ncastled\ncastles\ncastling\ncastoff\ncastoffs\ncastor\ncastors\ncastrate\ncastrated\ncastrates\ncastrati\ncastrating\ncastration\ncastrations\ncastrato\ncasts\ncasual\ncasually\ncasualness\ncasuals\ncasualties\ncasualty\ncasuist\ncasuistic\ncasuistries\ncasuistry\ncasuists\ncasus\ncat\ncatabolic\ncatabolism\ncataclysm\ncataclysmal\ncataclysmic\ncataclysms\ncatacomb\ncatacombs\ncatafalque\ncatafalques\ncatalase\ncatalases\ncataleptic\ncataleptics\ncatalo\ncataloes\ncatalog\ncataloged\ncataloger\ncatalogers\ncataloging\ncatalogs\ncatalogue\ncatalogued\ncataloguer\ncataloguers\ncatalogues\ncataloguing\ncatalos\ncatalpa\ncatalpas\ncatalyses\ncatalysis\ncatalyst\ncatalysts\ncatalytic\ncatalytically\ncatalyze\ncatalyzed\ncatalyzes\ncatalyzing\ncatamaran\ncatamarans\ncatamite\ncatamites\ncatamount\ncatamounts\ncatapult\ncatapulted\ncatapulting\ncatapults\ncataract\ncataracts\ncatarrh\ncatarrhal\ncatarrhs\ncatastrophe\ncatastrophes\ncatastrophic\ncatastrophically\ncatbird\ncatbirds\ncatboat\ncatboats\ncatbrier\ncatbriers\ncatcall\ncatcalled\ncatcalling\ncatcalls\ncatch\ncatchable\ncatchall\ncatchalls\ncatcher\ncatchers\ncatches\ncatchflies\ncatchfly\ncatchier\ncatchiest\ncatching\ncatchpennies\ncatchpenny\ncatchup\ncatchups\ncatchword\ncatchwords\ncatchy\ncate\ncatechin\ncatechins\ncatechism\ncatechismal\ncatechisms\ncatechist\ncatechistic\ncatechists\ncatechize\ncatechized\ncatechizer\ncatechizers\ncatechizes\ncatechizing\ncatechol\ncatechols\ncatechu\ncatechumen\ncatechumens\ncatechus\ncategorical\ncategorically\ncategories\ncategorization\ncategorizations\ncategorize\ncategorized\ncategorizes\ncategorizing\ncategory\ncatena\ncatenae\ncatenaries\ncatenary\ncatenas\ncatenate\ncatenated\ncatenates\ncatenating\ncatenation\ncatenations\ncatenoid\ncatenoids\ncater\ncateran\ncaterans\ncatered\ncaterer\ncaterers\ncateress\ncateresses\ncatering\ncaterpillar\ncaterpillars\ncaters\ncaterwaul\ncaterwauled\ncaterwauling\ncaterwauls\ncates\ncatface\ncatfaces\ncatfall\ncatfalls\ncatfish\ncatfishes\ncatgut\ncatguts\ncathartic\ncathead\ncatheads\ncathect\ncathected\ncathecting\ncathects\ncathedra\ncathedrae\ncathedral\ncathedrals\ncathedras\ncatheter\ncatheters\ncathexes\ncathexis\ncathode\ncathodes\ncathodic\ncatholic\ncatholically\ncatholicity\ncatholicize\ncatholicized\ncatholicizes\ncatholicizing\ncathouse\ncathouses\ncation\ncationic\ncations\ncatkin\ncatkins\ncatlike\ncatlin\ncatling\ncatlings\ncatlins\ncatmint\ncatmints\ncatnap\ncatnaper\ncatnapers\ncatnapped\ncatnapping\ncatnaps\ncatnip\ncatnips\ncats\ncatspaw\ncatspaws\ncatsup\ncatsups\ncattail\ncattails\ncattalo\ncattaloes\ncattalos\ncatted\ncattie\ncattier\ncatties\ncattiest\ncattily\ncatting\ncattish\ncattle\ncattleman\ncattlemen\ncattleya\ncattleyas\ncatty\ncatwalk\ncatwalks\ncaucus\ncaucused\ncaucuses\ncaucusing\ncaucussed\ncaucusses\ncaucussing\ncaudad\ncaudal\ncaudally\ncaudate\ncaudated\ncaudex\ncaudexes\ncaudices\ncaudillo\ncaudillos\ncaudle\ncaudles\ncaught\ncaul\ncauld\ncauldron\ncauldrons\ncaulds\ncaules\ncaulicle\ncaulicles\ncauliflower\ncauliflowers\ncauline\ncaulis\ncaulk\ncaulked\ncaulker\ncaulkers\ncaulking\ncaulkings\ncaulks\ncauls\ncausable\ncausal\ncausalities\ncausality\ncausally\ncausals\ncausation\ncausations\ncausative\ncausatively\ncause\ncaused\ncauseless\ncauser\ncauserie\ncauseries\ncausers\ncauses\ncauseway\ncausewayed\ncausewaying\ncauseways\ncausey\ncauseys\ncausing\ncaustic\ncaustically\ncaustics\ncauteries\ncauterization\ncauterizations\ncauterize\ncauterized\ncauterizes\ncauterizing\ncautery\ncaution\ncautionary\ncautioned\ncautioning\ncautions\ncautious\ncautiously\ncautiousness\ncavalcade\ncavalcades\ncavalero\ncavaleros\ncavalier\ncavaliered\ncavaliering\ncavalierly\ncavalierness\ncavaliers\ncavalla\ncavallas\ncavallies\ncavally\ncavalries\ncavalry\ncavalryman\ncavalrymen\ncavatina\ncavatinas\ncavatine\ncave\ncaveat\ncaveator\ncaveators\ncaveats\ncaved\ncavefish\ncavefishes\ncavelike\ncaveman\ncavemen\ncaver\ncavern\ncaverned\ncaverning\ncavernous\ncavernously\ncaverns\ncavers\ncaves\ncavetti\ncavetto\ncavettos\ncaviar\ncaviare\ncaviares\ncaviars\ncavicorn\ncavie\ncavies\ncavil\ncaviled\ncaviler\ncavilers\ncaviling\ncavilingly\ncavilled\ncaviller\ncavillers\ncavilling\ncavils\ncaving\ncavitary\ncavitate\ncavitated\ncavitates\ncavitating\ncavitation\ncavitations\ncavitied\ncavities\ncavity\ncavort\ncavorted\ncavorter\ncavorters\ncavorting\ncavorts\ncavy\ncaw\ncawed\ncawing\ncaws\ncay\ncayenne\ncayenned\ncayennes\ncayman\ncaymans\ncays\ncayuse\ncayuses\ncazique\ncaziques\ncease\nceased\nceaseless\nceaselessly\nceaselessness\nceases\nceasing\ncebid\ncebids\nceboid\nceboids\nceca\ncecal\ncecally\ncecum\ncedar\ncedarn\ncedars\ncede\nceded\nceder\nceders\ncedes\ncedi\ncedilla\ncedillas\nceding\ncedis\ncedula\ncedulas\ncee\ncees\nceiba\nceibas\nceil\nceiled\nceiler\nceilers\nceiling\nceilings\nceils\nceinture\nceintures\nceladon\nceladons\nceleb\ncelebrant\ncelebrants\ncelebrate\ncelebrated\ncelebratedness\ncelebrates\ncelebrating\ncelebration\ncelebrations\ncelebrator\ncelebrators\ncelebrities\ncelebrity\ncelebs\nceleriac\nceleriacs\nceleries\ncelerities\ncelerity\ncelery\ncelesta\ncelestas\nceleste\ncelestes\ncelestial\ncelestially\ncelestites\nceliac\ncelibacies\ncelibacy\ncelibate\ncelibates\ncell\ncella\ncellae\ncellar\ncellared\ncellarer\ncellarers\ncellaret\ncellarets\ncellaring\ncellars\ncelled\ncelli\ncelling\ncellist\ncellists\ncello\ncellophane\ncellophaned\ncellos\ncells\ncellular\ncellule\ncellules\ncelluloid\ncellulose\ncellulosic\ncelom\ncelomata\nceloms\ncelt\ncelts\ncembali\ncembalo\ncembalos\ncement\ncementa\ncementation\ncementations\ncemented\ncementer\ncementers\ncementing\ncementite\ncementites\ncements\ncementum\ncemeteries\ncemetery\ncenacle\ncenacles\ncenobite\ncenobites\ncenobitic\ncenobitical\ncenotaph\ncenotaphs\ncenote\ncenotes\ncense\ncensed\ncenser\ncensers\ncenses\ncensing\ncensor\ncensored\ncensorial\ncensoring\ncensorious\ncensoriously\ncensoriousness\ncensors\ncensorship\ncensorships\ncensual\ncensurable\ncensure\ncensured\ncensurer\ncensurers\ncensures\ncensuring\ncensus\ncensused\ncensuses\ncensusing\ncent\ncental\ncentals\ncentare\ncentares\ncentaur\ncentauries\ncentaurs\ncentaury\ncentavo\ncentavos\ncentenarian\ncentenarians\ncentenaries\ncentenary\ncentennial\ncentennially\ncentennials\ncenter\ncenterboard\ncenterboards\ncentered\ncentering\ncenterpiece\ncenterpieces\ncenters\ncenteses\ncentesis\ncentiare\ncentiares\ncentigrade\ncentigram\ncentigrams\ncentile\ncentiles\ncentiliter\ncentiliters\ncentime\ncentimes\ncentimeter\ncentimeters\ncentimo\ncentimos\ncentipede\ncentipedes\ncentner\ncentners\ncento\ncentones\ncentos\ncentra\ncentral\ncentraler\ncentralest\ncentralism\ncentralist\ncentralistic\ncentralists\ncentralities\ncentrality\ncentralization\ncentralize\ncentralized\ncentralizer\ncentralizers\ncentralizes\ncentralizing\ncentrally\ncentrals\ncentre\ncentred\ncentres\ncentric\ncentrically\ncentricities\ncentricity\ncentrifugal\ncentrifugally\ncentrifugation\ncentrifugations\ncentrifuge\ncentrifuged\ncentrifuges\ncentrifuging\ncentring\ncentrings\ncentripetal\ncentripetally\ncentrism\ncentrisms\ncentrist\ncentrists\ncentroid\ncentroids\ncentrum\ncentrums\ncents\ncentum\ncentums\ncentuple\ncentupled\ncentuples\ncentupling\ncenturies\ncenturion\ncenturions\ncentury\nceorl\nceorlish\nceorls\ncep\ncepe\ncepes\ncephalad\ncephalic\ncephalin\ncephalins\nceps\nceramal\nceramals\nceramic\nceramicist\nceramicists\nceramics\nceramist\nceramists\ncerastes\ncerate\ncerated\ncerates\nceratin\nceratins\nceratoid\ncercaria\ncercariae\ncercarias\ncerci\ncercis\ncercises\ncercus\ncere\ncereal\ncereals\ncerebella\ncerebellar\ncerebellum\ncerebellums\ncerebra\ncerebral\ncerebrally\ncerebrals\ncerebrate\ncerebrated\ncerebrates\ncerebrating\ncerebration\ncerebrations\ncerebric\ncerebrum\ncerebrums\ncerecloth\ncerecloths\ncered\ncerement\ncerements\nceremonial\nceremonialism\nceremonialist\nceremonialists\nceremonially\nceremonies\nceremonious\nceremoniously\nceremoniousness\nceremony\nceres\ncereus\ncereuses\nceria\ncerias\nceric\ncering\nceriph\nceriphs\ncerise\ncerises\ncerite\ncerites\ncerium\nceriums\ncermet\ncermets\ncernuous\ncero\nceros\ncerotic\ncerotype\ncerotypes\ncerous\ncertain\ncertainer\ncertainest\ncertainly\ncertainties\ncertainty\ncertes\ncertifiable\ncertifiably\ncertificate\ncertificated\ncertificates\ncertificating\ncertification\ncertifications\ncertified\ncertifier\ncertifiers\ncertifies\ncertify\ncertifying\ncertiorari\ncertitude\ncertitudes\ncerulean\nceruleans\ncerumen\ncerumens\nceruse\nceruses\ncerusite\ncerusites\ncervelat\ncervelats\ncervical\ncervices\ncervine\ncervix\ncervixes\ncesarean\ncesareans\ncesarian\ncesarians\ncesium\ncesiums\ncess\ncessation\ncessations\ncessed\ncesses\ncessing\ncession\ncessions\ncesspit\ncesspits\ncesspool\ncesspools\ncesta\ncestas\ncesti\ncestode\ncestodes\ncestoi\ncestoid\ncestoids\ncestos\ncestus\ncestuses\ncesura\ncesurae\ncesuras\ncetacean\ncetaceans\ncetane\ncetanes\ncete\ncetes\ncetologies\ncetology\nchabouk\nchabouks\nchabuk\nchabuks\nchacma\nchacmas\nchaconne\nchaconnes\nchad\nchadarim\nchadless\nchads\nchaeta\nchaetae\nchaetal\nchafe\nchafed\nchafer\nchafers\nchafes\nchaff\nchaffed\nchaffer\nchaffered\nchafferer\nchafferers\nchaffering\nchaffers\nchaffier\nchaffiest\nchaffing\nchaffs\nchaffy\nchafing\nchagrin\nchagrined\nchagrining\nchagrinned\nchagrinning\nchagrins\nchain\nchaine\nchained\nchaines\nchaining\nchainman\nchainmen\nchains\nchair\nchaired\nchairing\nchairman\nchairmaned\nchairmaning\nchairmanned\nchairmanning\nchairmans\nchairmanship\nchairmanships\nchairmen\nchairperson\nchairpersons\nchairs\nchairwoman\nchairwomen\nchaise\nchaises\nchalah\nchalahs\nchalaza\nchalazae\nchalazal\nchalazas\nchalcedonies\nchalcedony\nchalcid\nchalcids\nchaldron\nchaldrons\nchaleh\nchalehs\nchalet\nchalets\nchalice\nchaliced\nchalices\nchalk\nchalkboard\nchalkboards\nchalked\nchalkier\nchalkiest\nchalking\nchalks\nchalky\nchallah\nchallahs\nchallenge\nchallenged\nchallenger\nchallengers\nchallenges\nchallenging\nchallie\nchallies\nchallis\nchallises\nchallot\nchalloth\nchally\nchalone\nchalones\nchalot\nchaloth\nchalutz\nchalutzim\ncham\nchamade\nchamades\nchamber\nchambered\nchambering\nchamberlain\nchamberlains\nchambermaid\nchambermaids\nchambers\nchambray\nchambrays\nchameleon\nchameleonic\nchameleons\nchamfer\nchamfered\nchamfering\nchamfers\nchamfron\nchamfrons\nchamise\nchamises\nchamiso\nchamisos\nchammied\nchammies\nchammy\nchammying\nchamois\nchamoised\nchamoises\nchamoising\nchamoix\nchamp\nchampac\nchampacs\nchampagne\nchampagnes\nchampak\nchampaks\nchamped\nchamper\nchampers\nchamping\nchampion\nchampioned\nchampioning\nchampions\nchampionship\nchampionships\nchamps\nchampy\nchams\nchance\nchanced\nchancel\nchancelleries\nchancellery\nchancellor\nchancellories\nchancellors\nchancellorship\nchancellorships\nchancellory\nchancels\nchanceries\nchancery\nchances\nchancier\nchanciest\nchancily\nchancing\nchancre\nchancres\nchancrous\nchancy\nchandelier\nchandeliers\nchandler\nchandleries\nchandlers\nchandlery\nchanfron\nchanfrons\nchang\nchange\nchangeability\nchangeable\nchangeableness\nchangeably\nchanged\nchangeful\nchangefully\nchangefulness\nchangeless\nchangelessly\nchangelessness\nchangeling\nchangelings\nchanger\nchangers\nchanges\nchanging\nchangs\nchannel\nchanneled\nchanneling\nchannelled\nchannelling\nchannels\nchanson\nchansons\nchant\nchantage\nchantages\nchanted\nchanter\nchanters\nchanteuse\nchanteuses\nchantey\nchanteys\nchanticleer\nchanticleers\nchanties\nchanting\nchantor\nchantors\nchantries\nchantry\nchants\nchanty\nchao\nchaos\nchaoses\nchaotic\nchaotically\nchap\nchaparral\nchaparrals\nchapbook\nchapbooks\nchape\nchapeau\nchapeaus\nchapeaux\nchapel\nchapels\nchaperon\nchaperonage\nchaperone\nchaperoned\nchaperones\nchaperoning\nchaperons\nchapes\nchapiter\nchapiters\nchaplain\nchaplaincies\nchaplaincy\nchaplains\nchaplainship\nchaplainships\nchaplet\nchaplets\nchapman\nchapmen\nchapped\nchapping\nchaps\nchapt\nchapter\nchaptered\nchaptering\nchapters\nchaqueta\nchaquetas\nchar\ncharacid\ncharacids\ncharacin\ncharacins\ncharacter\ncharacteristic\ncharacteristically\ncharacteristics\ncharacterizable\ncharacterization\ncharacterizations\ncharacterize\ncharacterized\ncharacterizes\ncharacterizing\ncharacterless\ncharacters\ncharade\ncharades\ncharas\ncharases\ncharbroil\ncharbroiled\ncharbroiling\ncharbroils\ncharcoal\ncharcoaled\ncharcoaling\ncharcoals\nchard\nchards\nchare\nchared\nchares\ncharge\nchargeable\ncharged\ncharger\nchargers\ncharges\ncharging\ncharier\nchariest\ncharily\nchariness\ncharing\nchariot\ncharioted\ncharioteer\ncharioteers\ncharioting\nchariots\ncharism\ncharisma\ncharismata\ncharismatic\ncharisms\ncharitable\ncharitableness\ncharitably\ncharities\ncharity\nchark\ncharka\ncharkas\ncharked\ncharkha\ncharkhas\ncharking\ncharks\ncharladies\ncharlady\ncharlatan\ncharlatanism\ncharlatanisms\ncharlatanries\ncharlatanry\ncharlatans\ncharlock\ncharlocks\ncharlotte\ncharlottes\ncharm\ncharmed\ncharmer\ncharmers\ncharming\ncharminger\ncharmingest\ncharmingly\ncharms\ncharnel\ncharnels\ncharpai\ncharpais\ncharpoy\ncharpoys\ncharqui\ncharquid\ncharquis\ncharr\ncharred\ncharrier\ncharriest\ncharring\ncharro\ncharros\ncharrs\ncharry\nchars\nchart\ncharted\ncharter\nchartered\ncharterer\ncharterers\nchartering\ncharters\ncharting\nchartist\nchartists\nchartreuse\ncharts\ncharwoman\ncharwomen\nchary\nchase\nchased\nchaser\nchasers\nchases\nchasing\nchasings\nchasm\nchasmal\nchasmed\nchasmic\nchasms\nchasmy\nchasse\nchassed\nchasseing\nchasses\nchasseur\nchasseurs\nchassis\nchaste\nchastely\nchasten\nchastened\nchastener\nchasteners\nchasteness\nchastening\nchastenment\nchastenments\nchastens\nchaster\nchastest\nchasties\nchastise\nchastised\nchastisement\nchastisements\nchastiser\nchastisers\nchastises\nchastising\nchastities\nchastity\nchasuble\nchasubles\nchat\nchateau\nchateaus\nchateaux\nchatelaine\nchatelaines\nchats\nchatted\nchattel\nchattels\nchatter\nchattered\nchatterer\nchatterers\nchattering\nchatters\nchattery\nchattier\nchattiest\nchattily\nchattiness\nchatting\nchatty\nchaufer\nchaufers\nchauffer\nchauffers\nchauffeur\nchauffeured\nchauffeuring\nchauffeurs\nchaunt\nchaunted\nchaunter\nchaunters\nchaunting\nchaunts\nchausses\nchauvinism\nchauvinisms\nchauvinist\nchauvinistic\nchauvinistically\nchauvinists\nchaw\nchawed\nchawer\nchawers\nchawing\nchaws\nchay\nchayote\nchayotes\nchays\nchazan\nchazanim\nchazans\nchazzen\nchazzenim\nchazzens\ncheap\ncheapen\ncheapened\ncheapening\ncheapens\ncheaper\ncheapest\ncheapie\ncheapies\ncheapish\ncheaply\ncheapness\ncheaps\ncheapskate\ncheapskates\ncheat\ncheated\ncheater\ncheaters\ncheating\ncheats\nchebec\nchebecs\nchechako\nchechakos\ncheck\ncheckable\ncheckbook\ncheckbooks\nchecked\nchecker\ncheckerboard\ncheckerboards\ncheckered\ncheckering\ncheckers\nchecking\ncheckless\nchecklist\nchecklists\ncheckmate\ncheckmated\ncheckmates\ncheckmating\ncheckoff\ncheckoffs\ncheckout\ncheckouts\ncheckpoint\ncheckpoints\ncheckrein\ncheckreins\ncheckroom\ncheckrooms\ncheckrow\ncheckrowed\ncheckrowing\ncheckrows\nchecks\ncheckup\ncheckups\ncheddar\ncheddars\ncheddite\ncheddites\ncheder\ncheders\nchedite\nchedites\ncheefuller\ncheefullest\ncheek\ncheekbone\ncheekbones\ncheeked\ncheekful\ncheekfuls\ncheekier\ncheekiest\ncheekily\ncheekiness\ncheeking\ncheeks\ncheeky\ncheep\ncheeped\ncheeper\ncheepers\ncheeping\ncheeps\ncheer\ncheered\ncheerer\ncheerers\ncheerful\ncheerfuller\ncheerfullest\ncheerfully\ncheerfulness\ncheerier\ncheeriest\ncheerily\ncheeriness\ncheering\ncheerio\ncheerios\ncheerleader\ncheerleaders\ncheerless\ncheerlessly\ncheerlessness\ncheero\ncheeros\ncheers\ncheery\ncheese\ncheeseburger\ncheeseburgers\ncheesecake\ncheesecakes\ncheesecloth\ncheesecloths\ncheesed\ncheeses\ncheesier\ncheesiest\ncheesily\ncheesing\ncheesy\ncheetah\ncheetahs\nchef\nchefdom\nchefdoms\nchefs\nchegoe\nchegoes\nchela\nchelae\nchelas\nchelate\nchelated\nchelates\nchelating\nchelator\nchelators\ncheloid\ncheloids\nchemic\nchemical\nchemically\nchemicals\nchemics\nchemise\nchemises\nchemism\nchemisms\nchemist\nchemistries\nchemistry\nchemists\nchemotherapeutic\nchemotherapies\nchemotherapist\nchemotherapists\nchemotherapy\nchemurgic\nchemurgically\nchemurgies\nchemurgy\nchenille\nchenilles\nchenopod\nchenopods\ncheque\nchequer\nchequered\nchequering\nchequers\ncheques\ncherish\ncherished\ncherishes\ncherishing\ncheroot\ncheroots\ncherries\ncherry\ncherrylike\nchert\nchertier\nchertiest\ncherts\ncherty\ncherub\ncherubic\ncherubically\ncherubim\ncherubs\nchervil\nchervils\nchess\nchessboard\nchessboards\nchesses\nchessman\nchessmen\nchest\nchested\nchesterfield\nchesterfields\nchestful\nchestfuls\nchestier\nchestiest\nchestnut\nchestnuts\nchests\nchesty\nchetah\nchetahs\ncheth\ncheths\nchevalet\nchevalets\nchevalier\nchevaliers\ncheveron\ncheverons\nchevied\nchevies\ncheviot\ncheviots\nchevron\nchevrons\nchevy\nchevying\nchew\nchewable\nchewed\nchewer\nchewers\nchewier\nchewiest\nchewing\nchewink\nchewinks\nchews\nchewy\nchez\nchi\nchia\nchiao\nchiaroscurist\nchiaroscurists\nchiaroscuro\nchiaroscuros\nchias\nchiasm\nchiasma\nchiasmal\nchiasmas\nchiasmata\nchiasmi\nchiasmic\nchiasms\nchiasmus\nchiastic\nchiaus\nchiauses\nchibouk\nchibouks\nchic\nchicane\nchicaned\nchicaner\nchicaneries\nchicaners\nchicanery\nchicanes\nchicaning\nchiccories\nchiccory\nchichi\nchichis\nchick\nchickadee\nchickadees\nchicken\nchickened\nchickenhearted\nchickening\nchickens\nchickpea\nchickpeas\nchicks\nchickweed\nchickweeds\nchicle\nchicles\nchicly\nchicness\nchicnesses\nchico\nchicories\nchicory\nchicos\nchics\nchid\nchidden\nchide\nchided\nchider\nchiders\nchides\nchiding\nchief\nchiefdom\nchiefdoms\nchiefer\nchiefest\nchiefly\nchiefs\nchieftain\nchieftaincy\nchieftains\nchieftainship\nchieftainships\nchiel\nchield\nchields\nchiels\nchiffon\nchiffonier\nchiffoniers\nchiffons\nchigetai\nchigetais\nchigger\nchiggers\nchignon\nchignons\nchigoe\nchigoes\nchilblain\nchilblains\nchild\nchildbed\nchildbeds\nchildbirth\nchildbirths\nchilde\nchildes\nchildhood\nchildhoods\nchilding\nchildish\nchildishly\nchildishness\nchildless\nchildlessness\nchildlier\nchildliest\nchildlike\nchildlikeness\nchildly\nchildren\nchile\nchiles\nchili\nchiliad\nchiliads\nchiliasm\nchiliasms\nchiliast\nchiliasts\nchilies\nchill\nchilled\nchiller\nchillers\nchillest\nchilli\nchillier\nchillies\nchilliest\nchillily\nchilliness\nchilling\nchillingly\nchillness\nchills\nchillum\nchillums\nchilly\nchilopod\nchilopods\nchimaera\nchimaeras\nchimar\nchimars\nchimb\nchimbley\nchimbleys\nchimblies\nchimbly\nchimbs\nchime\nchimed\nchimer\nchimera\nchimeras\nchimere\nchimeres\nchimeric\nchimerical\nchimerically\nchimers\nchimes\nchiming\nchimla\nchimlas\nchimley\nchimleys\nchimney\nchimneys\nchimp\nchimpanzee\nchimpanzees\nchimps\nchin\nchina\nchinas\nchinbone\nchinbones\nchinch\nchinches\nchinchier\nchinchiest\nchinchilla\nchinchillas\nchinchy\nchine\nchined\nchines\nchining\nchink\nchinked\nchinkier\nchinkiest\nchinking\nchinks\nchinky\nchinless\nchinned\nchinning\nchino\nchinone\nchinones\nchinook\nchinooks\nchinos\nchinquapin\nchinquapins\nchins\nchints\nchintses\nchintz\nchintzes\nchintzier\nchintziest\nchintzy\nchip\nchipboard\nchipboards\nchipmuck\nchipmucks\nchipmunk\nchipmunks\nchipped\nchipper\nchippered\nchippering\nchippers\nchippie\nchippies\nchipping\nchippy\nchips\nchirk\nchirked\nchirker\nchirkest\nchirking\nchirks\nchirm\nchirmed\nchirming\nchirms\nchiro\nchirographer\nchirographers\nchirography\nchiropodist\nchiropodists\nchiropody\nchiropractor\nchiropractors\nchiros\nchirp\nchirped\nchirper\nchirpers\nchirpier\nchirpiest\nchirpily\nchirpiness\nchirping\nchirps\nchirpy\nchirr\nchirre\nchirred\nchirres\nchirring\nchirrs\nchirrup\nchirruped\nchirruping\nchirrups\nchirrupy\nchis\nchisel\nchiseled\nchiseler\nchiselers\nchiseling\nchiselled\nchiselling\nchisels\nchit\nchital\nchitchat\nchitchats\nchitchatted\nchitchatting\nchitin\nchitins\nchitlin\nchitling\nchitlings\nchitlins\nchiton\nchitons\nchits\nchitter\nchittered\nchittering\nchitterling\nchitterlings\nchitters\nchitties\nchitty\nchivalries\nchivalrous\nchivalrously\nchivalrousness\nchivalry\nchivaree\nchivareed\nchivareeing\nchivarees\nchivari\nchivaried\nchivaries\nchivariing\nchivaring\nchive\nchives\nchivied\nchivies\nchivvied\nchivvies\nchivvy\nchivvying\nchivy\nchivying\nchlamydes\nchlamys\nchlamyses\nchloral\nchlorals\nchlorate\nchlorates\nchlordan\nchlordans\nchloric\nchlorid\nchloride\nchlorides\nchlorids\nchlorin\nchlorinate\nchlorinated\nchlorinates\nchlorinating\nchlorination\nchlorinations\nchlorine\nchlorines\nchlorins\nchlorite\nchlorites\nchloroform\nchlorophyll\nchlorophyllous\nchlorous\nchock\nchocked\nchocking\nchocks\nchocolate\nchocolates\nchocolaty\nchoice\nchoicely\nchoiceness\nchoicer\nchoices\nchoicest\nchoir\nchoirboy\nchoirboys\nchoired\nchoirgirl\nchoirgirls\nchoiring\nchoirmaster\nchoirmasters\nchoirs\nchoke\nchoked\nchoker\nchokers\nchokes\nchokey\nchokier\nchokiest\nchoking\nchoky\ncholate\ncholates\ncholer\ncholera\ncholeraic\ncholeras\ncholeric\ncholerically\ncholers\ncholesterol\ncholine\ncholines\ncholla\nchollas\ncholo\nchomp\nchomped\nchomping\nchomps\nchon\nchoose\nchooser\nchoosers\nchooses\nchoosey\nchoosier\nchoosiest\nchoosing\nchoosy\nchop\nchophouse\nchophouses\nchopin\nchopine\nchopines\nchopins\nchopped\nchopper\nchoppers\nchoppier\nchoppiest\nchoppily\nchopping\nchoppy\nchops\nchopstick\nchopsticks\nchoragi\nchoragic\nchoragus\nchoraguses\nchoral\nchorale\nchorales\nchorally\nchorals\nchord\nchordal\nchordate\nchordates\nchorded\nchording\nchords\nchore\nchorea\nchoreal\nchoreas\nchored\nchoregi\nchoregus\nchoreguses\nchoreic\nchoreman\nchoremen\nchoreograph\nchoreographed\nchoreographer\nchoreographers\nchoreographic\nchoreographically\nchoreographies\nchoreographing\nchoreographs\nchoreography\nchoreoid\nchores\nchorial\nchoriamb\nchoriambs\nchoric\nchorine\nchorines\nchoring\nchorioid\nchorioids\nchorion\nchorions\nchorister\nchoristers\nchorizo\nchorizos\nchoroid\nchoroids\nchortle\nchortled\nchortler\nchortlers\nchortles\nchortling\nchorus\nchorused\nchoruses\nchorusing\nchorussed\nchorusses\nchorussing\nchose\nchosen\nchoses\nchott\nchotts\nchough\nchoughs\nchouse\nchoused\nchouser\nchousers\nchouses\nchoush\nchoushes\nchousing\nchow\nchowchow\nchowchows\nchowder\nchowdered\nchowdering\nchowders\nchowed\nchowing\nchows\nchowse\nchowsed\nchowses\nchowsing\nchowtime\nchowtimes\nchresard\nchresards\nchrism\nchrisma\nchrismal\nchrismon\nchrismons\nchrisms\nchrisom\nchrisoms\nchristen\nchristened\nchristening\nchristenings\nchristens\nchristie\nchristies\nchristy\nchroma\nchromas\nchromate\nchromates\nchromatic\nchromatically\nchromaticism\nchromaticity\nchromatid\nchromatids\nchromatin\nchromatinic\nchromatographic\nchromatographically\nchromatography\nchrome\nchromed\nchromes\nchromic\nchromide\nchromides\nchroming\nchromite\nchromites\nchromium\nchromiums\nchromize\nchromized\nchromizes\nchromizing\nchromo\nchromos\nchromosomal\nchromosome\nchromosomes\nchromosphere\nchromous\nchromyl\nchronaxies\nchronaxy\nchronic\nchronically\nchronicities\nchronicity\nchronicle\nchronicled\nchronicler\nchroniclers\nchronicles\nchronicling\nchronics\nchronograph\nchronographic\nchronographs\nchronological\nchronologically\nchronologies\nchronologist\nchronologists\nchronology\nchronometer\nchronometers\nchronometric\nchronometry\nchronon\nchronons\nchrysalides\nchrysalis\nchrysalises\nchrysanthemum\nchrysanthemums\nchthonic\nchub\nchubasco\nchubascos\nchubbier\nchubbiest\nchubbily\nchubbiness\nchubby\nchubs\nchuck\nchucked\nchuckhole\nchuckholes\nchuckies\nchucking\nchuckle\nchuckled\nchuckler\nchucklers\nchuckles\nchuckling\nchucks\nchucky\nchuddah\nchuddahs\nchuddar\nchuddars\nchudder\nchudders\nchufa\nchufas\nchuff\nchuffed\nchuffer\nchuffest\nchuffier\nchuffiest\nchuffing\nchuffs\nchuffy\nchug\nchugged\nchugger\nchuggers\nchugging\nchugs\nchukar\nchukars\nchukka\nchukkar\nchukkars\nchukkas\nchukker\nchukkers\nchum\nchummed\nchummier\nchummiest\nchummily\nchumming\nchummy\nchump\nchumped\nchumping\nchumps\nchums\nchumship\nchumships\nchunk\nchunked\nchunkier\nchunkiest\nchunkily\nchunkiness\nchunking\nchunks\nchunky\nchunter\nchuntered\nchuntering\nchunters\nchurch\nchurched\nchurches\nchurchgoer\nchurchgoers\nchurchgoing\nchurchier\nchurchiest\nchurching\nchurchless\nchurchlier\nchurchliest\nchurchly\nchurchman\nchurchmen\nchurchwoman\nchurchwomen\nchurchy\nchurchyard\nchurchyards\nchurl\nchurlish\nchurlishly\nchurlishness\nchurls\nchurn\nchurned\nchurner\nchurners\nchurning\nchurnings\nchurns\nchurr\nchurred\nchurring\nchurrs\nchute\nchuted\nchutes\nchuting\nchutist\nchutists\nchutnee\nchutnees\nchutney\nchutneys\nchutzpa\nchutzpah\nchutzpahs\nchutzpas\nchyle\nchyles\nchylous\nchyme\nchymes\nchymic\nchymics\nchymist\nchymists\nchymosin\nchymosins\nchymous\nciao\ncibol\ncibols\nciboria\nciborium\nciboule\nciboules\ncicada\ncicadae\ncicadas\ncicala\ncicalas\ncicale\ncicatrices\ncicatrix\ncicelies\ncicely\ncicero\ncicerone\ncicerones\nciceroni\nciceros\ncichlid\ncichlidae\ncichlids\ncicisbei\ncicisbeo\ncicoree\ncicorees\ncider\nciders\ncigar\ncigaret\ncigarets\ncigarette\ncigarettes\ncigars\ncilantro\ncilantros\ncilia\nciliary\nciliate\nciliated\nciliates\ncilice\ncilices\ncilium\ncimex\ncimices\ncinch\ncinched\ncinches\ncinching\ncinchona\ncinchonas\ncincture\ncinctured\ncinctures\ncincturing\ncinder\ncindered\ncindering\ncinders\ncindery\ncine\ncineast\ncineaste\ncineastes\ncineasts\ncinema\ncinemas\ncinematic\ncinematically\ncinematographer\ncinematographers\ncinematographic\ncinematographically\ncinematographies\ncinematography\ncineol\ncineole\ncineoles\ncineols\ncinerary\ncinerin\ncinerins\ncines\ncingula\ncingulum\ncinnabar\ncinnabarine\ncinnabars\ncinnamic\ncinnamon\ncinnamons\ncinnamyl\ncinnamyls\ncinquain\ncinquains\ncinque\ncinquefoil\ncinquefoils\ncinques\ncion\ncions\ncipher\nciphered\nciphering\nciphers\nciphonies\nciphony\ncipolin\ncipolins\ncirca\ncircle\ncircled\ncircler\ncirclers\ncircles\ncirclet\ncirclets\ncircling\ncircuit\ncircuital\ncircuited\ncircuities\ncircuiting\ncircuitous\ncircuitously\ncircuitousness\ncircuitries\ncircuitry\ncircuits\ncircuity\ncircular\ncircularities\ncircularity\ncircularization\ncircularizations\ncircularize\ncircularized\ncircularizes\ncircularizing\ncircularly\ncircularness\ncirculars\ncirculate\ncirculated\ncirculates\ncirculating\ncirculation\ncirculations\ncirculative\ncirculator\ncirculators\ncirculatory\ncircumcise\ncircumcised\ncircumcises\ncircumcising\ncircumcision\ncircumcisions\ncircumference\ncircumferences\ncircumferential\ncircumflex\ncircumflexes\ncircumlocution\ncircumlocutions\ncircumnavigate\ncircumnavigated\ncircumnavigates\ncircumnavigating\ncircumnavigation\ncircumnavigations\ncircumnavigator\ncircumnavigators\ncircumscribe\ncircumscribed\ncircumscribes\ncircumscribing\ncircumscription\ncircumscriptions\ncircumspect\ncircumspection\ncircumspections\ncircumspectly\ncircumstance\ncircumstanced\ncircumstances\ncircumstantial\ncircumstantialities\ncircumstantiality\ncircumstantially\ncircumstantiate\ncircumstantiated\ncircumstantiates\ncircumstantiating\ncircumvent\ncircumvented\ncircumventing\ncircumvention\ncircumventions\ncircumvents\ncircus\ncircuses\ncircusy\ncircuting\ncire\ncires\ncirque\ncirques\ncirrate\ncirrhoses\ncirrhosis\ncirrhotic\ncirri\ncirriped\ncirripeds\ncirrose\ncirrous\ncirrus\ncirsoid\ncis\ncisco\nciscoes\nciscos\ncislunar\ncissoid\ncissoids\ncissy\ncist\ncistern\ncisterna\ncisternae\ncisterns\ncistron\ncistrons\ncists\ncitable\ncitadel\ncitadels\ncitation\ncitations\ncitatory\ncite\nciteable\ncited\nciter\nciters\ncites\ncithara\ncitharas\ncither\ncithern\ncitherns\ncithers\ncithren\ncithrens\ncitied\ncities\ncitified\ncitifies\ncitify\ncitifying\nciting\ncitizen\ncitizenly\ncitizenries\ncitizenry\ncitizens\ncitizenship\ncitola\ncitolas\ncitole\ncitoles\ncitral\ncitrals\ncitrate\ncitrated\ncitrates\ncitreous\ncitric\ncitrin\ncitrine\ncitrines\ncitrins\ncitron\ncitrons\ncitrous\ncitrus\ncitruses\ncittern\ncitterns\ncity\ncityfied\ncityward\ncivet\ncivets\ncivic\ncivically\ncivicism\ncivicisms\ncivics\ncivie\ncivies\ncivil\ncivilian\ncivilians\ncivilise\ncivilised\ncivilises\ncivilising\ncivilities\ncivility\ncivilization\ncivilizations\ncivilize\ncivilized\ncivilizer\ncivilizers\ncivilizes\ncivilizing\ncivilly\ncivism\ncivisms\ncivvies\ncivvy\nclabber\nclabbered\nclabbering\nclabbers\nclach\nclachan\nclachans\nclachs\nclack\nclacked\nclacker\nclackers\nclacking\nclacks\nclad\ncladding\ncladdings\ncladode\ncladodes\nclads\nclag\nclagged\nclagging\nclags\nclaim\nclaimable\nclaimant\nclaimants\nclaimed\nclaimer\nclaimers\nclaiming\nclaims\nclairvoyance\nclairvoyant\nclairvoyantly\nclairvoyants\nclam\nclamant\nclamantly\nclambake\nclambakes\nclamber\nclambered\nclamberer\nclamberers\nclambering\nclambers\nclammed\nclammier\nclammiest\nclammily\nclamming\nclammy\nclamor\nclamored\nclamorer\nclamorers\nclamoring\nclamorous\nclamorously\nclamorousness\nclamors\nclamour\nclamoured\nclamouring\nclamours\nclamp\nclamped\nclamper\nclampers\nclamping\nclamps\nclams\nclamworm\nclamworms\nclan\nclandestine\nclandestinely\nclandestineness\nclang\nclanged\nclanging\nclangor\nclangored\nclangoring\nclangorous\nclangorously\nclangors\nclangour\nclangoured\nclangouring\nclangours\nclangs\nclank\nclanked\nclanking\nclankingly\nclanks\nclannish\nclannishly\nclannishness\nclans\nclansman\nclansmen\nclap\nclapboard\nclapboards\nclapped\nclapper\nclappers\nclapping\nclaps\nclapt\nclaptrap\nclaptraps\nclaque\nclaquer\nclaquers\nclaques\nclaqueur\nclaqueurs\nclarence\nclarences\nclaret\nclarets\nclaries\nclarification\nclarifications\nclarified\nclarifier\nclarifiers\nclarifies\nclarify\nclarifying\nclarinet\nclarinetist\nclarinetists\nclarinets\nclarinettist\nclarinettists\nclarion\nclarioned\nclarioning\nclarions\nclarities\nclarity\nclarkia\nclarkias\nclaro\nclaroes\nclaros\nclary\nclash\nclashed\nclasher\nclashers\nclashes\nclashing\nclasp\nclasped\nclasper\nclaspers\nclasping\nclasps\nclaspt\nclass\nclassed\nclasser\nclassers\nclasses\nclassic\nclassical\nclassicality\nclassically\nclassicism\nclassicist\nclassicistic\nclassicists\nclassicize\nclassicized\nclassicizes\nclassicizing\nclassics\nclassier\nclassiest\nclassifiable\nclassification\nclassifications\nclassified\nclassifier\nclassifiers\nclassifies\nclassify\nclassifying\nclassily\nclassiness\nclassing\nclassis\nclassless\nclassmate\nclassmates\nclassroom\nclassrooms\nclassy\nclast\nclastic\nclastics\nclasts\nclatter\nclattered\nclatterer\nclatterers\nclattering\nclatteringly\nclatters\nclattery\nclaucht\nclaught\nclaughted\nclaughting\nclaughts\nclausal\nclause\nclauses\nclaustrophobe\nclaustrophobes\nclaustrophobia\nclaustrophobic\nclavate\nclave\nclaver\nclavered\nclavering\nclavers\nclavi\nclavichord\nclavichordist\nclavichordists\nclavichords\nclavicle\nclavicles\nclavier\nclavierist\nclavierists\nclaviers\nclaw\nclawed\nclawer\nclawers\nclawing\nclawless\nclaws\nclaxon\nclaxons\nclay\nclaybank\nclaybanks\nclayed\nclayey\nclayier\nclayiest\nclaying\nclayish\nclaylike\nclaymore\nclaymores\nclaypan\nclaypans\nclays\nclayware\nclaywares\nclean\ncleanable\ncleaned\ncleaner\ncleaners\ncleanest\ncleaning\ncleanlier\ncleanliest\ncleanliness\ncleanly\ncleanness\ncleans\ncleanse\ncleansed\ncleanser\ncleansers\ncleanses\ncleansing\ncleanup\ncleanups\nclear\nclearable\nclearance\nclearances\ncleared\nclearer\nclearers\nclearest\nclearheaded\nclearheadedly\nclearheadedness\nclearing\nclearinghouse\nclearinghouses\nclearings\nclearly\nclearness\nclears\nclearstories\nclearstory\ncleat\ncleated\ncleating\ncleats\ncleavable\ncleavage\ncleavages\ncleave\ncleaved\ncleaver\ncleavers\ncleaves\ncleaving\ncleek\ncleeked\ncleeking\ncleeks\nclef\nclefs\ncleft\nclefts\nclematis\nclematises\nclemencies\nclemency\nclement\nclemently\nclench\nclenched\nclenches\nclenching\ncleome\ncleomes\nclepe\ncleped\nclepes\ncleping\nclept\nclerestories\nclerestory\nclergies\nclergy\nclergyman\nclergymen\ncleric\nclerical\nclericalism\nclerically\nclericals\nclerics\nclerid\nclerids\nclerihew\nclerihews\nclerisies\nclerisy\nclerk\nclerkdom\nclerkdoms\nclerked\nclerking\nclerkish\nclerklier\nclerkliest\nclerkly\nclerks\nclerkship\ncleveite\ncleveites\nclever\ncleverer\ncleverest\ncleverish\ncleverly\ncleverness\nclevis\nclevises\nclew\nclewed\nclewing\nclews\ncliche\ncliched\ncliches\nclick\nclicked\nclicker\nclickers\nclicking\nclicks\nclient\ncliental\nclientele\nclienteles\nclientless\nclients\ncliff\ncliffier\ncliffiest\ncliffs\ncliffy\nclift\nclifts\nclimacteric\nclimactic\nclimactically\nclimatal\nclimate\nclimates\nclimatic\nclimatically\nclimatological\nclimatologist\nclimatologists\nclimatology\nclimax\nclimaxed\nclimaxes\nclimaxing\nclimb\nclimbable\nclimbed\nclimber\nclimbers\nclimbing\nclimbs\nclime\nclimes\nclinal\nclinally\nclinch\nclinched\nclincher\nclinchers\nclinches\nclinching\ncline\nclines\ncling\nclinged\nclinger\nclingers\nclingier\nclingiest\nclinging\nclings\nclingstone\nclingstones\nclingy\nclinic\nclinical\nclinically\nclinician\nclinicians\nclinics\nclink\nclinked\nclinker\nclinkered\nclinkering\nclinkers\nclinking\nclinks\nclinometer\nclinometers\nclinometry\nclip\nclipboard\nclipboards\nclipped\nclipper\nclippers\nclipping\nclippings\nclips\nclipt\nclique\ncliqued\ncliqueier\ncliqueiest\ncliques\ncliquey\ncliquier\ncliquiest\ncliquing\ncliquish\ncliquishly\ncliquishness\ncliquy\nclitella\nclitoral\nclitoric\nclitorides\nclitoris\nclitorises\nclivers\ncloaca\ncloacae\ncloacal\ncloak\ncloaked\ncloaking\ncloakroom\ncloakrooms\ncloaks\nclobber\nclobbered\nclobbering\nclobbers\ncloche\ncloches\nclock\nclocked\nclocker\nclockers\nclocking\nclocks\nclockwise\nclockwork\nclockworks\nclod\ncloddier\ncloddiest\ncloddish\ncloddishness\ncloddy\nclodhopper\nclodhoppers\nclodpate\nclodpates\nclodpole\nclodpoles\nclodpoll\nclodpolls\nclods\nclog\nclogged\ncloggier\ncloggiest\nclogging\ncloggy\nclogs\ncloister\ncloistered\ncloistering\ncloisters\nclomb\nclomp\nclomped\nclomping\nclomps\nclon\nclonal\nclonally\nclone\ncloned\nclones\nclonic\ncloning\nclonism\nclonisms\nclonk\nclonked\nclonking\nclonks\nclons\nclonus\nclonuses\ncloot\ncloots\nclop\nclopped\nclopping\nclops\nclosable\nclose\nclosed\nclosefisted\nclosely\nclosemouthed\ncloseness\ncloseout\ncloseouts\ncloser\nclosers\ncloses\nclosest\ncloset\ncloseted\ncloseting\nclosets\nclosing\nclosings\nclosure\nclosured\nclosures\nclosuring\nclot\ncloth\nclothe\nclothed\nclothes\nclotheshorse\nclotheshorses\nclothesline\nclotheslines\nclothespin\nclothespins\nclothier\nclothiers\nclothing\nclothings\ncloths\nclots\nclotted\nclotting\nclotty\ncloture\nclotured\nclotures\ncloturing\ncloud\ncloudburst\ncloudbursts\nclouded\ncloudier\ncloudiest\ncloudily\ncloudiness\nclouding\ncloudless\ncloudlessly\ncloudlessness\ncloudlet\ncloudlets\nclouds\ncloudy\nclough\ncloughs\nclour\ncloured\nclouring\nclours\nclout\nclouted\nclouter\nclouters\nclouting\nclouts\nclove\ncloven\nclover\ncloverleaf\ncloverleafs\ncloverleaves\nclovers\ncloves\nclowder\nclowders\nclown\nclowned\nclowneries\nclownery\nclowning\nclownish\nclownishly\nclownishness\nclowns\ncloy\ncloyed\ncloying\ncloyingly\ncloys\ncloze\nclub\nclubable\nclubbable\nclubbed\nclubber\nclubbers\nclubbier\nclubbiest\nclubbiness\nclubbing\nclubby\nclubfeet\nclubfoot\nclubfooted\nclubhand\nclubhands\nclubhaul\nclubhauled\nclubhauling\nclubhauls\nclubhouse\nclubhouses\nclubman\nclubmen\nclubroot\nclubroots\nclubs\ncluck\nclucked\nclucking\nclucks\nclue\nclued\nclueing\nclues\ncluing\nclumber\nclumbers\nclump\nclumped\nclumpier\nclumpiest\nclumping\nclumpish\nclumps\nclumpy\nclumsier\nclumsiest\nclumsily\nclumsiness\nclumsy\nclung\nclunk\nclunked\nclunker\nclunkers\nclunking\nclunks\nclupeid\nclupeids\nclupeoid\nclupeoids\ncluster\nclustered\nclustering\nclusters\nclustery\nclutch\nclutched\nclutches\nclutching\nclutchy\nclutter\ncluttered\ncluttering\nclutters\nclypeal\nclypeate\nclypei\nclypeus\nclyster\nclysters\ncoach\ncoached\ncoacher\ncoachers\ncoaches\ncoaching\ncoachman\ncoachmen\ncoact\ncoacted\ncoacting\ncoaction\ncoactions\ncoactive\ncoacts\ncoadjutor\ncoadjutors\ncoadmire\ncoadmired\ncoadmires\ncoadmiring\ncoadmit\ncoadmits\ncoadmitted\ncoadmitting\ncoaeval\ncoaevals\ncoagencies\ncoagency\ncoagent\ncoagents\ncoagula\ncoagulability\ncoagulable\ncoagulant\ncoagulants\ncoagulate\ncoagulated\ncoagulates\ncoagulating\ncoagulation\ncoagulations\ncoagulum\ncoagulums\ncoal\ncoala\ncoalas\ncoalbin\ncoalbins\ncoalbox\ncoalboxes\ncoaled\ncoaler\ncoalers\ncoalesce\ncoalesced\ncoalescence\ncoalescent\ncoalesces\ncoalescing\ncoalfish\ncoalfishes\ncoalhole\ncoalholes\ncoalified\ncoalifies\ncoalify\ncoalifying\ncoaling\ncoalition\ncoalitionist\ncoalitionists\ncoalitions\ncoalless\ncoalpit\ncoalpits\ncoals\ncoalsack\ncoalsacks\ncoalshed\ncoalsheds\ncoaly\ncoalyard\ncoalyards\ncoaming\ncoamings\ncoannex\ncoannexed\ncoannexes\ncoannexing\ncoappear\ncoappeared\ncoappearing\ncoappears\ncoapt\ncoapted\ncoapting\ncoapts\ncoarse\ncoarsely\ncoarsen\ncoarsened\ncoarseness\ncoarsening\ncoarsens\ncoarser\ncoarsest\ncoassist\ncoassisted\ncoassisting\ncoassists\ncoassume\ncoassumed\ncoassumes\ncoassuming\ncoast\ncoastal\ncoasted\ncoaster\ncoasters\ncoasting\ncoastings\ncoastline\ncoastlines\ncoasts\ncoat\ncoated\ncoatee\ncoatees\ncoater\ncoaters\ncoati\ncoating\ncoatings\ncoatis\ncoatless\ncoatrack\ncoatracks\ncoatroom\ncoatrooms\ncoats\ncoattail\ncoattails\ncoattend\ncoattended\ncoattending\ncoattends\ncoattest\ncoattested\ncoattesting\ncoattests\ncoauthor\ncoauthored\ncoauthoring\ncoauthors\ncoax\ncoaxal\ncoaxed\ncoaxer\ncoaxers\ncoaxes\ncoaxial\ncoaxing\ncob\ncobalt\ncobaltic\ncobalts\ncobb\ncobber\ncobbers\ncobbier\ncobbiest\ncobble\ncobbled\ncobbler\ncobblers\ncobbles\ncobblestone\ncobblestones\ncobbling\ncobbs\ncobby\ncobia\ncobias\ncoble\ncobles\ncobnut\ncobnuts\ncobra\ncobras\ncobs\ncobweb\ncobwebbed\ncobwebbier\ncobwebbiest\ncobwebbing\ncobwebby\ncobwebs\ncoca\ncocain\ncocaine\ncocaines\ncocains\ncocas\ncoccal\ncocci\ncoccic\ncoccid\ncoccidia\ncoccids\ncoccoid\ncoccoids\ncoccous\ncoccus\ncoccyges\ncoccyx\ncoccyxes\ncochair\ncochaired\ncochairing\ncochairman\ncochairmen\ncochairs\ncochin\ncochins\ncochlea\ncochleae\ncochlear\ncochleas\ncocinera\ncocineras\ncock\ncockade\ncockaded\ncockades\ncockatoo\ncockatoos\ncockatrice\ncockatrices\ncockbill\ncockbilled\ncockbilling\ncockbills\ncockboat\ncockboats\ncockcrow\ncockcrows\ncocked\ncocker\ncockered\ncockerel\ncockerels\ncockering\ncockers\ncockeye\ncockeyed\ncockeyes\ncockfight\ncockfighting\ncockfights\ncockier\ncockiest\ncockily\ncockiness\ncocking\ncockish\ncockle\ncocklebur\ncockleburs\ncockled\ncockles\ncockleshell\ncockleshells\ncocklike\ncockling\ncockloft\ncocklofts\ncockney\ncockneyish\ncockneys\ncockpit\ncockpits\ncockroach\ncockroaches\ncocks\ncockshies\ncockshut\ncockshuts\ncockshy\ncockspur\ncockspurs\ncocksure\ncocksurely\ncocksureness\ncocktail\ncocktailed\ncocktailing\ncocktails\ncockup\ncockups\ncocky\ncoco\ncocoa\ncocoanut\ncocoanuts\ncocoas\ncocobola\ncocobolas\ncocobolo\ncocobolos\ncocomat\ncocomats\ncoconspirator\ncoconspirators\ncoconut\ncoconuts\ncocoon\ncocooned\ncocooning\ncocoons\ncocos\ncocotte\ncocottes\ncocreate\ncocreated\ncocreates\ncocreating\ncod\ncoda\ncodable\ncodas\ncodder\ncodders\ncoddle\ncoddled\ncoddler\ncoddlers\ncoddles\ncoddling\ncode\ncodebtor\ncodebtors\ncodec\ncoded\ncodefendant\ncodefendants\ncodeia\ncodeias\ncodein\ncodeina\ncodeinas\ncodeine\ncodeines\ncodeins\ncodeless\ncoden\ncodens\ncoder\ncoderive\ncoderived\ncoderives\ncoderiving\ncoders\ncodes\ncodex\ncodfish\ncodfishes\ncodger\ncodgers\ncodices\ncodicil\ncodicils\ncodification\ncodifications\ncodified\ncodifier\ncodifiers\ncodifies\ncodify\ncodifying\ncoding\ncodiscoverer\ncodiscoverers\ncodlin\ncodling\ncodlings\ncodlins\ncodon\ncodons\ncodpiece\ncodpieces\ncods\ncoed\ncoeditor\ncoeditors\ncoeds\ncoeducation\ncoeducational\ncoeducationally\ncoeffect\ncoeffects\ncoefficient\ncoefficients\ncoeliac\ncoelom\ncoelomata\ncoelome\ncoelomes\ncoelomic\ncoeloms\ncoembodied\ncoembodies\ncoembody\ncoembodying\ncoemploy\ncoemployed\ncoemploying\ncoemploys\ncoempt\ncoempted\ncoempting\ncoempts\ncoenact\ncoenacted\ncoenacting\ncoenacts\ncoenamor\ncoenamored\ncoenamoring\ncoenamors\ncoendure\ncoendured\ncoendures\ncoenduring\ncoenure\ncoenures\ncoenuri\ncoenurus\ncoenzymatic\ncoenzymatically\ncoenzyme\ncoenzymes\ncoequal\ncoequality\ncoequally\ncoequals\ncoequate\ncoequated\ncoequates\ncoequating\ncoerce\ncoerced\ncoercer\ncoercers\ncoerces\ncoercible\ncoercing\ncoercion\ncoercions\ncoercive\ncoercively\ncoerciveness\ncoerect\ncoerected\ncoerecting\ncoerects\ncoeval\ncoevally\ncoevals\ncoexecutor\ncoexecutors\ncoexert\ncoexerted\ncoexerting\ncoexerts\ncoexist\ncoexisted\ncoexistence\ncoexistent\ncoexisting\ncoexists\ncoextend\ncoextended\ncoextending\ncoextends\ncoextensive\ncoextensively\ncofactor\ncofactors\ncoff\ncoffee\ncoffeehouse\ncoffeehouses\ncoffeepot\ncoffeepots\ncoffees\ncoffer\ncofferdam\ncofferdams\ncoffered\ncoffering\ncoffers\ncoffin\ncoffined\ncoffing\ncoffining\ncoffins\ncoffle\ncoffled\ncoffles\ncoffling\ncoffret\ncoffrets\ncoffs\ncofounder\ncofounders\ncoft\ncog\ncogencies\ncogency\ncogent\ncogently\ncogged\ncogging\ncogitate\ncogitated\ncogitates\ncogitating\ncogitation\ncogitations\ncogitative\ncogito\ncogitos\ncognac\ncognacs\ncognate\ncognates\ncognise\ncognised\ncognises\ncognising\ncognition\ncognitional\ncognitions\ncognitive\ncognizable\ncognizably\ncognizance\ncognizant\ncognize\ncognized\ncognizer\ncognizers\ncognizes\ncognizing\ncognomen\ncognomens\ncognomina\ncognovit\ncognovits\ncogon\ncogons\ncogs\ncogway\ncogways\ncogwheel\ncogwheels\ncohabit\ncohabitant\ncohabitants\ncohabitation\ncohabitations\ncohabited\ncohabiting\ncohabits\ncoheir\ncoheiress\ncoheiresses\ncoheirs\ncohere\ncohered\ncoherence\ncoherency\ncoherent\ncoherently\ncoherer\ncoherers\ncoheres\ncohering\ncohesion\ncohesions\ncohesive\ncohesively\ncohesiveness\ncoho\ncohobate\ncohobated\ncohobates\ncohobating\ncohog\ncohogs\ncohort\ncohorts\ncohos\ncohosh\ncohoshes\ncohune\ncohunes\ncoif\ncoifed\ncoiffe\ncoiffed\ncoiffes\ncoiffeur\ncoiffeurs\ncoiffing\ncoiffure\ncoiffured\ncoiffures\ncoiffuring\ncoifing\ncoifs\ncoign\ncoigne\ncoigned\ncoignes\ncoigning\ncoigns\ncoil\ncoiled\ncoiler\ncoilers\ncoiling\ncoils\ncoin\ncoinable\ncoinage\ncoinages\ncoincide\ncoincided\ncoincidence\ncoincidences\ncoincident\ncoincidental\ncoincidentally\ncoincidently\ncoincides\ncoinciding\ncoined\ncoiner\ncoiners\ncoinfer\ncoinferred\ncoinferring\ncoinfers\ncoinhere\ncoinhered\ncoinheres\ncoinhering\ncoining\ncoinmate\ncoinmates\ncoins\ncoinsurance\ncoinsurances\ncoinsure\ncoinsured\ncoinsurer\ncoinsurers\ncoinsures\ncoinsuring\ncointer\ncointerred\ncointerring\ncointers\ncoir\ncoirs\ncoistrel\ncoistrels\ncoistril\ncoistrils\ncoital\ncoitally\ncoition\ncoitions\ncoitus\ncoituses\ncoke\ncoked\ncokes\ncoking\ncol\ncola\ncolander\ncolanders\ncolas\ncold\ncolder\ncoldest\ncoldhearted\ncoldheartedly\ncoldheartedness\ncoldish\ncoldly\ncoldness\ncoldnesses\ncolds\ncole\ncoles\ncoleseed\ncoleseeds\ncoleslaw\ncoleslaws\ncolessee\ncolessees\ncolessor\ncolessors\ncoleus\ncoleuses\ncolewort\ncoleworts\ncolic\ncolicin\ncolicine\ncolicines\ncolicins\ncolicky\ncolics\ncolies\ncoliform\ncoliforms\ncolin\ncolinear\ncolins\ncoliseum\ncoliseums\ncolistin\ncolistins\ncolitic\ncolitis\ncolitises\ncollaborate\ncollaborated\ncollaborates\ncollaborating\ncollaboration\ncollaborationist\ncollaborationists\ncollaborations\ncollaborative\ncollaborator\ncollaborators\ncollage\ncollagen\ncollagens\ncollages\ncollagist\ncollagists\ncollapse\ncollapsed\ncollapses\ncollapsible\ncollapsing\ncollar\ncollarbone\ncollarbones\ncollard\ncollards\ncollared\ncollaret\ncollarets\ncollaring\ncollars\ncollate\ncollated\ncollateral\ncollaterally\ncollates\ncollating\ncollation\ncollations\ncollator\ncollators\ncolleague\ncolleagues\ncollect\ncollectable\ncollected\ncollectible\ncollectibles\ncollecting\ncollection\ncollections\ncollective\ncollectively\ncollectives\ncollectivism\ncollectivist\ncollectivistic\ncollectivists\ncollectivities\ncollectivity\ncollectivization\ncollectivizations\ncollectivize\ncollectivized\ncollectivizes\ncollectivizing\ncollector\ncollectors\ncollectorship\ncollectorships\ncollects\ncolleen\ncolleens\ncollege\ncolleger\ncollegers\ncolleges\ncollegia\ncollegial\ncollegiality\ncollegian\ncollegians\ncollegiate\ncollet\ncolleted\ncolleting\ncollets\ncollide\ncollided\ncollides\ncolliding\ncollie\ncollied\ncollier\ncollieries\ncolliers\ncolliery\ncollies\ncollimate\ncollimated\ncollimates\ncollimating\ncollimator\ncollimators\ncollins\ncollinses\ncollision\ncollisions\ncollocate\ncollocated\ncollocates\ncollocating\ncollocation\ncollocations\ncollodion\ncollogue\ncollogued\ncollogues\ncolloguing\ncolloid\ncolloidal\ncolloids\ncollop\ncollops\ncolloquial\ncolloquialism\ncolloquialisms\ncolloquially\ncolloquies\ncolloquy\ncollude\ncolluded\ncolluder\ncolluders\ncolludes\ncolluding\ncollusion\ncollusions\ncollusive\ncollusively\ncolluvia\ncolly\ncollying\ncollyria\ncolocate\ncolocated\ncolocates\ncolocating\ncolog\ncologne\ncologned\ncolognes\ncologs\ncolon\ncolonel\ncolonels\ncolones\ncoloni\ncolonial\ncolonialism\ncolonially\ncolonials\ncolonic\ncolonies\ncolonise\ncolonised\ncolonises\ncolonising\ncolonist\ncolonists\ncolonization\ncolonizations\ncolonize\ncolonized\ncolonizer\ncolonizers\ncolonizes\ncolonizing\ncolonnade\ncolonnaded\ncolonnades\ncolons\ncolonus\ncolony\ncolophon\ncolophons\ncolor\ncolorado\ncolorant\ncolorants\ncolorations\ncoloratura\ncoloraturas\ncolored\ncoloreds\ncolorer\ncolorers\ncolorfast\ncolorfastness\ncolorful\ncolorfully\ncolorfulness\ncoloring\ncolorings\ncolorism\ncolorisms\ncolorist\ncoloristic\ncolorists\ncolorless\ncolorlessly\ncolorlessness\ncolors\ncolossal\ncolossally\ncolosseum\ncolosseums\ncolossi\ncolossus\ncolossuses\ncolostomies\ncolostomy\ncolotomies\ncolotomy\ncolour\ncoloured\ncolourer\ncolourers\ncolouring\ncolours\ncolpitis\ncolpitises\ncols\ncolt\ncolter\ncolters\ncoltish\ncoltishly\ncolts\ncolubrid\ncolubrids\ncolugo\ncolugos\ncolumbic\ncolumbine\ncolumbines\ncolumel\ncolumels\ncolumn\ncolumnal\ncolumnar\ncolumned\ncolumnist\ncolumnists\ncolumns\ncolure\ncolures\ncoly\ncolza\ncolzas\ncoma\ncomae\ncomaker\ncomakers\ncomal\ncomas\ncomate\ncomates\ncomatic\ncomatik\ncomatiks\ncomatose\ncomatula\ncomatulae\ncomb\ncombat\ncombatant\ncombatants\ncombated\ncombater\ncombaters\ncombating\ncombative\ncombatively\ncombativeness\ncombats\ncombatted\ncombatting\ncombe\ncombed\ncomber\ncombers\ncombes\ncombinable\ncombination\ncombinational\ncombinations\ncombine\ncombined\ncombiner\ncombiners\ncombines\ncombing\ncombings\ncombining\ncomblike\ncombo\ncombos\ncombs\ncombust\ncombusted\ncombustibility\ncombustible\ncombustibles\ncombustibly\ncombusting\ncombustion\ncombustions\ncombustor\ncombustors\ncombusts\ncome\ncomeback\ncomebacks\ncomedian\ncomedians\ncomedic\ncomedienne\ncomediennes\ncomedies\ncomedo\ncomedones\ncomedos\ncomedown\ncomedowns\ncomedy\ncomelier\ncomeliest\ncomelily\ncomeliness\ncomely\ncomer\ncomers\ncomes\ncomestible\ncomestibles\ncomet\ncometary\ncometh\ncomether\ncomethers\ncometic\ncomets\ncomeuppance\ncomfier\ncomfiest\ncomfit\ncomfits\ncomfort\ncomfortable\ncomfortably\ncomforted\ncomforter\ncomforters\ncomforting\ncomfortingly\ncomforts\ncomfrey\ncomfreys\ncomfy\ncomic\ncomical\ncomicality\ncomically\ncomics\ncoming\ncomings\ncomitia\ncomitial\ncomities\ncomity\ncomix\ncomma\ncommand\ncommandant\ncommandants\ncommanded\ncommandeer\ncommandeered\ncommandeering\ncommandeers\ncommander\ncommanders\ncommandership\ncommanding\ncommandingly\ncommandment\ncommandments\ncommando\ncommandoes\ncommandos\ncommands\ncommas\ncommata\ncommemorate\ncommemorated\ncommemorates\ncommemorating\ncommemoration\ncommemorations\ncommemorative\ncommemoratively\ncommemorator\ncommemorators\ncommence\ncommenced\ncommencement\ncommencements\ncommencer\ncommencers\ncommences\ncommencing\ncommend\ncommendable\ncommendably\ncommendation\ncommendations\ncommendatory\ncommended\ncommending\ncommends\ncommensal\ncommensalism\ncommensally\ncommensals\ncommensurability\ncommensurable\ncommensurably\ncommensurate\ncommensurately\ncommensuration\ncommensurations\ncomment\ncommentaries\ncommentary\ncommentator\ncommentators\ncommented\ncommenting\ncomments\ncommerce\ncommerced\ncommerces\ncommercial\ncommercialism\ncommercialistic\ncommercialization\ncommercializations\ncommercialize\ncommercialized\ncommercializes\ncommercializing\ncommercially\ncommercials\ncommercing\ncommie\ncommies\ncommingle\ncommingled\ncommingles\ncommingling\ncomminute\ncomminuted\ncomminutes\ncomminuting\ncomminution\ncomminutions\ncommiserate\ncommiserated\ncommiserates\ncommiserating\ncommiseration\ncommiserations\ncommiserative\ncommissar\ncommissariat\ncommissariats\ncommissaries\ncommissars\ncommissary\ncommission\ncommissioned\ncommissioner\ncommissioners\ncommissioning\ncommissions\ncommit\ncommitment\ncommitments\ncommits\ncommittable\ncommittal\ncommittals\ncommitted\ncommittee\ncommitteeman\ncommitteemen\ncommittees\ncommitteewoman\ncommitteewomen\ncommitting\ncommix\ncommixed\ncommixes\ncommixing\ncommixt\ncommode\ncommodes\ncommodious\ncommodiously\ncommodiousness\ncommodities\ncommodity\ncommodore\ncommodores\ncommon\ncommonalities\ncommonality\ncommonalties\ncommonalty\ncommoner\ncommoners\ncommonest\ncommonly\ncommonness\ncommonplace\ncommons\ncommonwealth\ncommonwealths\ncommotion\ncommotions\ncommove\ncommoved\ncommoves\ncommoving\ncommunal\ncommunalism\ncommunalist\ncommunalists\ncommunalize\ncommunalized\ncommunalizes\ncommunalizing\ncommunally\ncommune\ncommuned\ncommunes\ncommunicability\ncommunicable\ncommunicableness\ncommunicably\ncommunicant\ncommunicants\ncommunicate\ncommunicated\ncommunicates\ncommunicating\ncommunication\ncommunications\ncommunicative\ncommunicatively\ncommunicativeness\ncommunicator\ncommunicators\ncommuning\ncommunion\ncommunions\ncommunique\ncommuniques\ncommunism\ncommunist\ncommunistic\ncommunistically\ncommunists\ncommunities\ncommunity\ncommunization\ncommunizations\ncommunize\ncommunized\ncommunizes\ncommunizing\ncommutable\ncommutation\ncommutations\ncommutative\ncommutator\ncommutators\ncommute\ncommuted\ncommuter\ncommuters\ncommutes\ncommuting\ncommy\ncomose\ncomous\ncomp\ncompact\ncompacted\ncompacter\ncompactest\ncompactible\ncompacting\ncompaction\ncompactions\ncompactly\ncompactness\ncompactor\ncompactors\ncompacts\ncompadre\ncompadres\ncompanied\ncompanies\ncompanion\ncompanionable\ncompanionableness\ncompanionably\ncompanions\ncompanionship\ncompanionships\ncompanionway\ncompanionways\ncompany\ncompanying\ncomparability\ncomparable\ncomparableness\ncomparably\ncomparative\ncomparatively\ncomparativeness\ncomparator\ncomparators\ncompare\ncompared\ncomparer\ncomparers\ncompares\ncomparing\ncomparison\ncomparisons\ncompart\ncomparted\ncomparting\ncompartment\ncompartmental\ncompartmentalization\ncompartmentalizations\ncompartmentalize\ncompartmentalized\ncompartmentalizes\ncompartmentalizing\ncompartmented\ncompartments\ncomparts\ncompass\ncompassable\ncompassed\ncompasses\ncompassing\ncompassion\ncompassionate\ncompassionately\ncompassionateness\ncompassions\ncompatibilities\ncompatibility\ncompatible\ncompatibleness\ncompatibles\ncompatibly\ncompatriot\ncompatriotic\ncompatriots\ncomped\ncompeer\ncompeered\ncompeering\ncompeers\ncompel\ncompellable\ncompelled\ncompeller\ncompellers\ncompelling\ncompellingly\ncompels\ncompend\ncompendia\ncompendious\ncompendiously\ncompendiousness\ncompendium\ncompendiums\ncompends\ncompensate\ncompensated\ncompensates\ncompensating\ncompensation\ncompensational\ncompensations\ncompensator\ncompensators\ncompensatory\ncompere\ncompered\ncomperes\ncompering\ncompete\ncompeted\ncompetence\ncompetencies\ncompetency\ncompetent\ncompetently\ncompetes\ncompeting\ncompetition\ncompetitions\ncompetitive\ncompetitively\ncompetitiveness\ncompetitor\ncompetitors\ncompetitory\ncompilation\ncompilations\ncompile\ncompiled\ncompiler\ncompilers\ncompiles\ncompiling\ncomping\ncomplacence\ncomplacency\ncomplacent\ncomplacently\ncomplain\ncomplainant\ncomplainants\ncomplained\ncomplainer\ncomplainers\ncomplaining\ncomplainingly\ncomplains\ncomplaint\ncomplaints\ncomplaisance\ncomplaisant\ncomplaisantly\ncompleat\ncomplect\ncomplected\ncomplecting\ncomplects\ncomplement\ncomplemental\ncomplementaries\ncomplementary\ncomplemented\ncomplementing\ncomplements\ncomplete\ncompleted\ncompletely\ncompleteness\ncompleter\ncompletes\ncompletest\ncompleting\ncompletion\ncompletions\ncompletive\ncomplex\ncomplexed\ncomplexer\ncomplexes\ncomplexest\ncomplexing\ncomplexion\ncomplexional\ncomplexioned\ncomplexions\ncomplexities\ncomplexity\ncomplexly\ncomplexness\ncompliance\ncompliances\ncompliancies\ncompliancy\ncompliant\ncompliantly\ncomplicacies\ncomplicacy\ncomplicate\ncomplicated\ncomplicatedly\ncomplicatedness\ncomplicates\ncomplicating\ncomplication\ncomplications\ncomplice\ncomplices\ncomplicities\ncomplicity\ncomplied\ncomplier\ncompliers\ncomplies\ncompliment\ncomplimentarily\ncomplimentary\ncompliments\ncomplin\ncompline\ncomplines\ncomplins\ncomplot\ncomplots\ncomplotted\ncomplotting\ncomply\ncomplying\ncompo\ncompone\ncomponent\ncomponential\ncomponents\ncompony\ncomport\ncomported\ncomporting\ncomportment\ncomportments\ncomports\ncompos\ncompose\ncomposed\ncomposedly\ncomposedness\ncomposer\ncomposers\ncomposes\ncomposing\ncomposite\ncompositely\ncomposites\ncomposition\ncompositional\ncompositions\ncompositor\ncompositors\ncompost\ncomposted\ncomposting\ncomposts\ncomposure\ncomposures\ncompote\ncompotes\ncompound\ncompoundable\ncompounded\ncompounder\ncompounders\ncompounding\ncompounds\ncomprehend\ncomprehended\ncomprehendible\ncomprehending\ncomprehends\ncomprehensibility\ncomprehensible\ncomprehensibleness\ncomprehensibly\ncomprehension\ncomprehensions\ncomprehensive\ncomprehensively\ncomprehensiveness\ncompress\ncompressed\ncompressedly\ncompresses\ncompressibility\ncompressible\ncompressing\ncompression\ncompressional\ncompressions\ncompressive\ncompressively\ncompressor\ncompressors\ncomprise\ncomprised\ncomprises\ncomprising\ncomprize\ncomprized\ncomprizes\ncomprizing\ncompromise\ncompromised\ncompromiser\ncompromisers\ncompromises\ncompromising\ncomps\ncompt\ncompted\ncompting\ncomptroller\ncomptrollers\ncomptrollership\ncomptrollerships\ncompts\ncompulsion\ncompulsions\ncompulsive\ncompulsively\ncompulsiveness\ncompulsorily\ncompulsory\ncompunction\ncompunctions\ncompunctious\ncomputability\ncomputable\ncomputation\ncomputational\ncomputations\ncompute\ncomputed\ncomputer\ncomputerese\ncomputerizable\ncomputerization\ncomputerizations\ncomputerize\ncomputerized\ncomputerizes\ncomputerizing\ncomputers\ncomputes\ncomputing\ncomrade\ncomradely\ncomrades\ncomradeship\ncomradeships\ncomte\ncomtes\ncon\nconation\nconations\nconative\nconatus\nconcatenate\nconcatenated\nconcatenates\nconcatenating\nconcatenation\nconcatenations\nconcave\nconcaved\nconcavely\nconcaveness\nconcaves\nconcaving\nconcavities\nconcavity\nconceal\nconcealable\nconcealed\nconcealer\nconcealers\nconcealing\nconcealment\nconcealments\nconceals\nconcede\nconceded\nconcededly\nconceder\nconceders\nconcedes\nconceding\nconceit\nconceited\nconceitedly\nconceitedness\nconceiting\nconceits\nconceivability\nconceivable\nconceivableness\nconceivably\nconceive\nconceived\nconceiver\nconceivers\nconceives\nconceiving\nconcent\nconcentrate\nconcentrated\nconcentrates\nconcentrating\nconcentration\nconcentrations\nconcentrative\nconcentrator\nconcentrators\nconcentric\nconcentrically\nconcentricities\nconcentricity\nconcents\nconcept\nconception\nconceptional\nconceptions\nconceptive\nconcepts\nconceptual\nconceptualism\nconceptualist\nconceptualistic\nconceptualists\nconceptualize\nconceptualized\nconceptualizes\nconceptualizing\nconceptually\nconcern\nconcerned\nconcerning\nconcernment\nconcernments\nconcerns\nconcert\nconcerted\nconcertedly\nconcerti\nconcerting\nconcertize\nconcertized\nconcertizes\nconcertizing\nconcertmaster\nconcertmasters\nconcertmeister\nconcertmeisters\nconcerto\nconcertos\nconcerts\nconcession\nconcessionaire\nconcessionaires\nconcessionary\nconcessions\nconcessive\nconcessively\nconch\nconcha\nconchae\nconchal\nconches\nconchies\nconchoid\nconchoids\nconchs\nconchy\nconcierge\nconcierges\nconciliar\nconciliarly\nconciliate\nconciliated\nconciliates\nconciliating\nconciliation\nconciliations\nconciliative\nconciliator\nconciliators\nconciliatory\nconcise\nconcisely\nconciseness\nconciser\nconcisest\nconcision\nconclave\nconclaves\nconclavist\nconclavists\nconclude\nconcluded\nconcluder\nconcluders\nconcludes\nconcluding\nconclusion\nconclusions\nconclusive\nconclusively\nconclusiveness\nconcoct\nconcocted\nconcocting\nconcoction\nconcoctions\nconcoctive\nconcocts\nconcomitance\nconcomitant\nconcomitantly\nconcomitants\nconcord\nconcordance\nconcordances\nconcordant\nconcordantly\nconcordat\nconcordats\nconcords\nconcourse\nconcourses\nconcrete\nconcreted\nconcretely\nconcreteness\nconcretes\nconcreting\nconcretion\nconcretionary\nconcretions\nconcretization\nconcretizations\nconcretize\nconcretized\nconcretizes\nconcretizing\nconcubine\nconcubines\nconcur\nconcurred\nconcurrence\nconcurrences\nconcurrent\nconcurrently\nconcurrents\nconcurring\nconcurs\nconcuss\nconcussed\nconcusses\nconcussing\nconcussion\nconcussions\nconcussive\ncondemn\ncondemnable\ncondemnation\ncondemnations\ncondemnatory\ncondemned\ncondemner\ncondemners\ncondemning\ncondemnor\ncondemnors\ncondemns\ncondensable\ncondensate\ncondensates\ncondensation\ncondensational\ncondensations\ncondense\ncondensed\ncondenser\ncondensers\ncondenses\ncondensing\ncondescend\ncondescended\ncondescendence\ncondescending\ncondescendingly\ncondescends\ncondescension\ncondescensions\ncondign\ncondignly\ncondiment\ncondiments\ncondition\nconditional\nconditionally\nconditionals\nconditioned\nconditioner\nconditioners\nconditioning\nconditions\ncondo\ncondole\ncondoled\ncondolence\ncondolences\ncondoler\ncondolers\ncondoles\ncondoling\ncondom\ncondominium\ncondominiums\ncondoms\ncondonable\ncondonation\ncondonations\ncondone\ncondoned\ncondoner\ncondoners\ncondones\ncondoning\ncondor\ncondores\ncondors\nconduce\nconduced\nconducer\nconducers\nconduces\nconducing\nconducive\nconduciveness\nconduct\nconductance\nconductances\nconducted\nconductibilities\nconductibility\nconductible\nconducting\nconduction\nconductions\nconductive\nconductivities\nconductivity\nconductor\nconductorial\nconductors\nconductress\nconductresses\nconducts\nconduit\nconduits\ncondylar\ncondyle\ncondyles\ncone\nconed\nconelrad\nconelrads\nconenose\nconenoses\nconepate\nconepates\nconepatl\nconepatls\ncones\nconey\nconeys\nconfab\nconfabbed\nconfabbing\nconfabs\nconfabulate\nconfabulated\nconfabulates\nconfabulating\nconfabulation\nconfabulations\nconfabulator\nconfabulators\nconfect\nconfected\nconfecting\nconfection\nconfectioner\nconfectioneries\nconfectioners\nconfectionery\nconfections\nconfects\nconfederacies\nconfederacy\nconfederalist\nconfederalists\nconfederate\nconfederated\nconfederates\nconfederating\nconfederation\nconfederations\nconfer\nconferee\nconferees\nconference\nconferences\nconferment\nconferments\nconferrable\nconferral\nconferrals\nconferred\nconferrer\nconferrers\nconferring\nconfers\nconferva\nconfervae\nconfervas\nconfess\nconfessable\nconfessed\nconfessedly\nconfesses\nconfessing\nconfession\nconfessional\nconfessionals\nconfessions\nconfessor\nconfessors\nconfetti\nconfetto\nconfidant\nconfidante\nconfidantes\nconfidants\nconfide\nconfided\nconfidence\nconfidences\nconfident\nconfidential\nconfidentiality\nconfidentially\nconfidentialness\nconfidently\nconfider\nconfiders\nconfides\nconfiding\nconfidingly\nconfiguration\nconfigurational\nconfigurationally\nconfigurations\nconfigurative\nconfigure\nconfigured\nconfigures\nconfiguring\nconfine\nconfined\nconfinement\nconfinements\nconfiner\nconfiners\nconfines\nconfining\nconfirm\nconfirmable\nconfirmation\nconfirmations\nconfirmatory\nconfirmed\nconfirmedly\nconfirming\nconfirms\nconfiscable\nconfiscate\nconfiscated\nconfiscates\nconfiscating\nconfiscation\nconfiscations\nconfiscator\nconfiscators\nconfiscatory\nconflagration\nconflagrations\nconflate\nconflated\nconflates\nconflating\nconflict\nconflicted\nconflicting\nconflictingly\nconfliction\nconflictions\nconflictive\nconflicts\nconflux\nconfluxes\nconfocal\nconform\nconformable\nconformably\nconformal\nconformance\nconformances\nconformation\nconformations\nconformed\nconformer\nconformers\nconforming\nconformism\nconformisms\nconformist\nconformists\nconformities\nconformity\nconforms\nconfound\nconfounded\nconfoundedly\nconfounder\nconfounders\nconfounding\nconfounds\nconfraternities\nconfraternity\nconfrere\nconfreres\nconfront\nconfrontation\nconfrontational\nconfrontationist\nconfrontationists\nconfrontations\nconfronted\nconfronter\nconfronters\nconfronting\nconfronts\nconfuse\nconfused\nconfusedly\nconfusedness\nconfuses\nconfusing\nconfusingly\nconfusion\nconfusional\nconfusions\nconfutation\nconfutations\nconfutative\nconfute\nconfuted\nconfuter\nconfuters\nconfutes\nconfuting\nconga\ncongaed\ncongaing\ncongas\nconge\ncongeal\ncongealed\ncongealing\ncongealment\ncongealments\ncongeals\ncongee\ncongeed\ncongeeing\ncongees\ncongener\ncongeneric\ncongeners\ncongenial\ncongeniality\ncongenially\ncongenital\ncongenitally\nconger\ncongeries\ncongers\nconges\ncongest\ncongested\ncongesting\ncongestion\ncongestions\ncongestive\ncongests\ncongii\ncongius\nconglobe\nconglobed\nconglobes\nconglobing\nconglomerate\nconglomerated\nconglomerates\nconglomeratic\nconglomerating\nconglomeration\nconglomerations\nconglomerator\nconglomerators\ncongo\ncongoes\ncongos\ncongou\ncongous\ncongratulate\ncongratulated\ncongratulates\ncongratulating\ncongratulation\ncongratulations\ncongratulator\ncongratulators\ncongratulatory\ncongregate\ncongregated\ncongregates\ncongregating\ncongregation\ncongregational\ncongregationalism\ncongregationalist\ncongregationalists\ncongregations\ncongregator\ncongregators\ncongress\ncongressed\ncongresses\ncongressing\ncongressional\ncongressionally\ncongressman\ncongressmen\ncongresswoman\ncongresswomen\ncongruence\ncongruencies\ncongruency\ncongruent\ncongruently\ncongruities\ncongruity\ncongruous\ncongruously\ncongruousness\nconi\nconic\nconical\nconically\nconicities\nconicity\nconics\nconidia\nconidial\nconidian\nconidium\nconies\nconifer\nconiferous\nconifers\nconiine\nconiines\nconin\nconine\nconines\nconing\nconins\nconium\nconiums\nconjectural\nconjecturally\nconjecture\nconjectured\nconjecturer\nconjecturers\nconjectures\nconjecturing\nconjoin\nconjoined\nconjoining\nconjoins\nconjoint\nconjointly\nconjugal\nconjugality\nconjugally\nconjugate\nconjugated\nconjugately\nconjugateness\nconjugates\nconjugating\nconjugation\nconjugational\nconjugationally\nconjugations\nconjugative\nconjunct\nconjunction\nconjunctional\nconjunctionally\nconjunctions\nconjunctiva\nconjunctivae\nconjunctival\nconjunctivas\nconjunctive\nconjunctively\nconjunctives\nconjuncts\nconjuncture\nconjunctures\nconjuration\nconjurations\nconjure\nconjured\nconjurer\nconjurers\nconjures\nconjuring\nconjuror\nconjurors\nconk\nconked\nconker\nconkers\nconking\nconks\nconky\nconn\nconnate\nconnect\nconnectable\nconnected\nconnectedly\nconnectedness\nconnecting\nconnection\nconnectional\nconnections\nconnective\nconnectively\nconnectivity\nconnector\nconnectors\nconnects\nconned\nconner\nconners\nconning\nconniption\nconniptions\nconnivance\nconnivances\nconnive\nconnived\nconniver\nconnivers\nconnives\nconniving\nconnoisseur\nconnoisseurs\nconnoisseurship\nconnoisseurships\nconnotation\nconnotational\nconnotations\nconnotative\nconnotatively\nconnote\nconnoted\nconnotes\nconnoting\nconns\nconnubial\nconnubiality\nconnubially\nconodont\nconodonts\nconoid\nconoidal\nconoids\nconquer\nconquered\nconquering\nconqueror\nconquerors\nconquers\nconquest\nconquests\nconquian\nconquians\nconquistador\nconquistadores\nconquistadors\ncons\nconsanguineous\nconsanguineously\nconsanguinities\nconsanguinity\nconscience\nconscienceless\nconsciences\nconscientious\nconscientiously\nconscientiousness\nconscionable\nconscious\nconsciously\nconsciousness\nconscript\nconscripted\nconscripting\nconscription\nconscriptions\nconscripts\nconsecrate\nconsecrated\nconsecrates\nconsecrating\nconsecration\nconsecrations\nconsecrative\nconsecrator\nconsecrators\nconsecratory\nconsecutive\nconsecutively\nconsecutiveness\nconsensual\nconsensually\nconsensus\nconsensuses\nconsent\nconsented\nconsenting\nconsents\nconsequence\nconsequences\nconsequent\nconsequential\nconsequentiality\nconsequentially\nconsequentialness\nconsequently\nconsequents\nconservancies\nconservancy\nconservation\nconservational\nconservationist\nconservationists\nconservations\nconservatism\nconservative\nconservatively\nconservativeness\nconservatives\nconservator\nconservatories\nconservators\nconservatory\nconserve\nconserved\nconserver\nconservers\nconserves\nconserving\nconsider\nconsiderable\nconsiderably\nconsiderate\nconsiderately\nconsiderateness\nconsideration\nconsiderations\nconsidered\nconsidering\nconsiders\nconsign\nconsignable\nconsignation\nconsignations\nconsigned\nconsignee\nconsignees\nconsigning\nconsignment\nconsignments\nconsignor\nconsignors\nconsigns\nconsist\nconsisted\nconsistence\nconsistencies\nconsistency\nconsistent\nconsistently\nconsisting\nconsists\nconsol\nconsolable\nconsolation\nconsolations\nconsolatory\nconsole\nconsoled\nconsoler\nconsolers\nconsoles\nconsolidate\nconsolidated\nconsolidates\nconsolidating\nconsolidation\nconsolidations\nconsolidator\nconsolidators\nconsoling\nconsols\nconsomme\nconsommes\nconsonance\nconsonances\nconsonancies\nconsonancy\nconsonant\nconsonantal\nconsonantly\nconsonants\nconsort\nconsorted\nconsortia\nconsorting\nconsortium\nconsorts\nconspectus\nconspectuses\nconspicuous\nconspicuously\nconspicuousness\nconspiracies\nconspiracy\nconspirator\nconspiratorial\nconspiratorially\nconspirators\nconspire\nconspired\nconspires\nconspiring\nconstable\nconstables\nconstabularies\nconstabulary\nconstancy\nconstant\nconstantly\nconstants\nconstellation\nconstellations\nconsternate\nconsternated\nconsternates\nconsternating\nconsternation\nconsternations\nconstipate\nconstipated\nconstipates\nconstipating\nconstipation\nconstipations\nconstituencies\nconstituency\nconstituent\nconstituently\nconstituents\nconstitute\nconstituted\nconstitutes\nconstituting\nconstitution\nconstitutional\nconstitutionalism\nconstitutionalisms\nconstitutionalist\nconstitutionalists\nconstitutionalities\nconstitutionality\nconstitutionally\nconstitutionals\nconstitutions\nconstitutive\nconstitutively\nconstrain\nconstrained\nconstrainedly\nconstraining\nconstrains\nconstraint\nconstraints\nconstrict\nconstricted\nconstricting\nconstriction\nconstrictions\nconstrictive\nconstrictor\nconstrictors\nconstricts\nconstruable\nconstruct\nconstructed\nconstructible\nconstructing\nconstruction\nconstructional\nconstructionally\nconstructionist\nconstructionists\nconstructions\nconstructive\nconstructively\nconstructiveness\nconstructor\nconstructors\nconstructs\nconstrue\nconstrued\nconstrues\nconstruing\nconsubstantial\nconsubstantiation\nconsul\nconsular\nconsulate\nconsulates\nconsuls\nconsulship\nconsulships\nconsult\nconsultant\nconsultants\nconsultation\nconsultations\nconsultative\nconsulted\nconsulter\nconsulters\nconsulting\nconsultive\nconsultor\nconsultors\nconsults\nconsumable\nconsume\nconsumed\nconsumedly\nconsumer\nconsumerism\nconsumerist\nconsumerists\nconsumers\nconsumes\nconsuming\nconsummate\nconsummated\nconsummately\nconsummates\nconsummating\nconsummation\nconsummations\nconsummative\nconsummator\nconsummators\nconsummatory\nconsumption\nconsumptions\nconsumptive\nconsumptively\nconsumptiveness\nconsumptives\ncontact\ncontacted\ncontacting\ncontacts\ncontagia\ncontagion\ncontagions\ncontagious\ncontagiously\ncontagiousness\ncontain\ncontainable\ncontained\ncontainer\ncontainers\ncontaining\ncontainment\ncontainments\ncontains\ncontaminant\ncontaminants\ncontaminate\ncontaminated\ncontaminates\ncontaminating\ncontamination\ncontaminations\ncontaminative\ncontaminator\ncontaminators\nconte\ncontemn\ncontemned\ncontemner\ncontemners\ncontemning\ncontemns\ncontemplate\ncontemplated\ncontemplates\ncontemplating\ncontemplation\ncontemplations\ncontemplative\ncontemplatively\ncontemplativeness\ncontemplator\ncontemplators\ncontemporaneous\ncontemporaneously\ncontemporaneousness\ncontemporaries\ncontemporarily\ncontemporary\ncontempt\ncontemptibility\ncontemptible\ncontemptibleness\ncontemptibly\ncontempts\ncontemptuous\ncontemptuously\ncontemptuousness\ncontend\ncontended\ncontender\ncontenders\ncontending\ncontends\ncontent\ncontented\ncontentedly\ncontentedness\ncontenting\ncontention\ncontentions\ncontentious\ncontentiously\ncontentiousness\ncontentment\ncontentments\ncontents\nconterminous\ncontes\ncontest\ncontestable\ncontestably\ncontestant\ncontestants\ncontestation\ncontestations\ncontested\ncontester\ncontesters\ncontesting\ncontests\ncontext\ncontexts\ncontextual\ncontextually\ncontexture\ncontextures\ncontiguities\ncontiguity\ncontiguous\ncontiguously\ncontiguousness\ncontinence\ncontinent\ncontinental\ncontinentally\ncontinentals\ncontinently\ncontinents\ncontingencies\ncontingency\ncontingent\ncontingently\ncontingents\ncontinua\ncontinual\ncontinually\ncontinuance\ncontinuances\ncontinuant\ncontinuants\ncontinuation\ncontinuations\ncontinuative\ncontinuator\ncontinuators\ncontinue\ncontinued\ncontinuer\ncontinuers\ncontinues\ncontinuing\ncontinuingly\ncontinuities\ncontinuity\ncontinuo\ncontinuos\ncontinuous\ncontinuously\ncontinuousness\ncontinuum\nconto\ncontort\ncontorted\ncontorting\ncontortion\ncontortionist\ncontortionists\ncontortions\ncontortive\ncontorts\ncontos\ncontour\ncontoured\ncontouring\ncontours\ncontra\ncontraband\ncontrabandist\ncontrabandists\ncontrabass\ncontrabassoon\ncontrabassoons\ncontraception\ncontraceptions\ncontraceptive\ncontraceptives\ncontract\ncontracted\ncontractibility\ncontractible\ncontractile\ncontractility\ncontracting\ncontraction\ncontractional\ncontractions\ncontractive\ncontractor\ncontractors\ncontracts\ncontractual\ncontractually\ncontradict\ncontradictable\ncontradicted\ncontradicting\ncontradiction\ncontradictions\ncontradictor\ncontradictorily\ncontradictoriness\ncontradictors\ncontradictory\ncontradicts\ncontradistinction\ncontradistinctions\ncontradistinctive\ncontradistinctively\ncontrail\ncontrails\ncontralto\ncontraltos\ncontraption\ncontraptions\ncontrapuntal\ncontrapuntally\ncontraries\ncontrarieties\ncontrariety\ncontrarily\ncontrariness\ncontrariwise\ncontrary\ncontrast\ncontrastable\ncontrasted\ncontrasting\ncontrastive\ncontrastively\ncontrasts\ncontravene\ncontravened\ncontravener\ncontraveners\ncontravenes\ncontravening\ncontravention\ncontraventions\ncontretemps\ncontribute\ncontributed\ncontributes\ncontributing\ncontribution\ncontributions\ncontributive\ncontributively\ncontributor\ncontributors\ncontributory\ncontrite\ncontritely\ncontriteness\ncontrition\ncontritions\ncontrivance\ncontrivances\ncontrive\ncontrived\ncontriver\ncontrivers\ncontrives\ncontriving\ncontrol\ncontrollability\ncontrollable\ncontrollably\ncontrolled\ncontroller\ncontrollers\ncontrollership\ncontrollerships\ncontrolling\ncontrols\ncontroversial\ncontroversialist\ncontroversialists\ncontroversially\ncontroversies\ncontroversy\ncontrovert\ncontroverted\ncontroverter\ncontroverters\ncontrovertible\ncontroverting\ncontroverts\ncontumacies\ncontumacious\ncontumaciously\ncontumacy\ncontumelies\ncontumelious\ncontumeliously\ncontumely\ncontuse\ncontused\ncontuses\ncontusing\ncontusion\ncontusions\nconundrum\nconundrums\nconus\nconvalesce\nconvalesced\nconvalescence\nconvalescences\nconvalescent\nconvalescents\nconvalesces\nconvalescing\nconvect\nconvected\nconvecting\nconvection\nconvectional\nconvections\nconvective\nconvector\nconvectors\nconvects\nconvene\nconvened\nconvener\nconveners\nconvenes\nconvenience\nconveniences\nconvenient\nconveniently\nconvening\nconvent\nconvented\nconventicle\nconventicler\nconventiclers\nconventicles\nconventing\nconvention\nconventional\nconventionalism\nconventionalist\nconventionalists\nconventionalities\nconventionality\nconventionalization\nconventionalizations\nconventionalize\nconventionalized\nconventionalizes\nconventionalizing\nconventionally\nconventioneer\nconventioneers\nconventions\nconvents\nconventual\nconverge\nconverged\nconvergence\nconvergencies\nconvergency\nconvergent\nconverges\nconverging\nconversable\nconversant\nconversantly\nconversation\nconversational\nconversationalist\nconversationalists\nconversationally\nconversations\nconverse\nconversed\nconversely\nconverser\nconversers\nconverses\nconversing\nconversion\nconversional\nconversions\nconvert\nconverted\nconverter\nconverters\nconvertibilities\nconvertibility\nconvertible\nconvertibleness\nconvertibles\nconvertibly\nconverting\nconvertor\nconvertors\nconverts\nconvex\nconvexes\nconvexities\nconvexity\nconvexly\nconvexness\nconvey\nconveyance\nconveyancer\nconveyancers\nconveyances\nconveyancing\nconveyed\nconveyer\nconveyers\nconveying\nconveyor\nconveyors\nconveys\nconvict\nconvicted\nconvicting\nconviction\nconvictions\nconvicts\nconvince\nconvinced\nconvincer\nconvincers\nconvinces\nconvincing\nconvincingly\nconvincingness\nconvivial\nconvivialities\nconviviality\nconvivially\nconvocation\nconvocational\nconvocations\nconvoke\nconvoked\nconvoker\nconvokers\nconvokes\nconvoking\nconvolute\nconvoluted\nconvolutes\nconvoluting\nconvolution\nconvolutional\nconvolutions\nconvolve\nconvolved\nconvolves\nconvolving\nconvoy\nconvoyed\nconvoying\nconvoys\nconvulse\nconvulsed\nconvulses\nconvulsing\nconvulsion\nconvulsionary\nconvulsions\nconvulsive\nconvulsively\nconvulsiveness\ncony\ncoo\ncooch\ncooches\ncooed\ncooee\ncooeed\ncooeeing\ncooees\ncooer\ncooers\ncooey\ncooeyed\ncooeying\ncooeys\ncoof\ncoofs\ncooing\ncooingly\ncook\ncookable\ncookbook\ncookbooks\ncooked\ncooker\ncookeries\ncookers\ncookery\ncookey\ncookeys\ncookie\ncookies\ncooking\ncookings\ncookless\ncookout\ncookouts\ncooks\ncookshop\ncookshops\ncookware\ncookwares\ncooky\ncool\ncoolant\ncoolants\ncooled\ncooler\ncoolers\ncoolest\ncoolie\ncoolies\ncooling\ncoolish\ncoolly\ncoolness\ncoolnesses\ncools\ncooly\ncoomb\ncoombe\ncoombes\ncoombs\ncoon\ncooncan\ncooncans\ncoons\ncoonskin\ncoonskins\ncoontie\ncoonties\ncoop\ncooped\ncooper\ncooperage\ncooperages\ncooperate\ncooperated\ncooperates\ncooperating\ncooperation\ncooperations\ncooperative\ncooperatively\ncooperativeness\ncooperatives\ncooperator\ncooperators\ncoopered\ncooperies\ncoopering\ncoopers\ncoopery\ncooping\ncoops\ncoopt\ncoopted\ncoopting\ncooption\ncooptions\ncoopts\ncoordinate\ncoordinated\ncoordinately\ncoordinates\ncoordinating\ncoordination\ncoordinations\ncoordinator\ncoordinators\ncoos\ncoot\ncootie\ncooties\ncoots\ncop\ncopaiba\ncopaibas\ncopal\ncopalm\ncopalms\ncopals\ncoparent\ncoparents\ncopartner\ncopartners\ncopartnership\ncopartnerships\ncopastor\ncopastors\ncopatron\ncopatrons\ncope\ncopeck\ncopecks\ncoped\ncopemate\ncopemates\ncopen\ncopens\ncopepod\ncopepods\ncoper\ncopers\ncopes\ncopied\ncopier\ncopiers\ncopies\ncopihue\ncopihues\ncopilot\ncopilots\ncoping\ncopings\ncopious\ncopiously\ncopiousness\ncoplanar\ncoplot\ncoplots\ncoplotted\ncoplotting\ncopolymer\ncopolymerization\ncopolymerizations\ncopolymerize\ncopolymerized\ncopolymerizes\ncopolymerizing\ncopolymers\ncopped\ncopper\ncopperah\ncopperahs\ncopperas\ncopperases\ncoppered\ncopperhead\ncopperheads\ncoppering\ncopperplate\ncopperplates\ncoppers\ncoppersmith\ncoppersmiths\ncoppery\ncoppice\ncoppiced\ncoppices\ncopping\ncoppra\ncoppras\ncopra\ncoprah\ncoprahs\ncopras\ncopremia\ncopremias\ncopremic\ncops\ncopse\ncopses\ncopter\ncopters\ncopula\ncopulae\ncopular\ncopulas\ncopulate\ncopulated\ncopulates\ncopulating\ncopulation\ncopulations\ncopulative\ncopulatively\ncopy\ncopybook\ncopybooks\ncopyboy\ncopyboys\ncopycat\ncopycats\ncopycatted\ncopycatting\ncopydesk\ncopydesks\ncopyhold\ncopyholds\ncopying\ncopyist\ncopyists\ncopyreader\ncopyreaders\ncopyright\ncopyrighted\ncopyrighter\ncopyrighters\ncopyrighting\ncopyrights\ncopywriter\ncopywriters\ncoquet\ncoquetries\ncoquetry\ncoquets\ncoquette\ncoquetted\ncoquettes\ncoquetting\ncoquettish\ncoquettishly\ncoquettishness\ncoquille\ncoquilles\ncoquina\ncoquinas\ncoquito\ncoquitos\ncor\ncoracle\ncoracles\ncoracoid\ncoracoids\ncoral\ncorals\ncoranto\ncorantoes\ncorantos\ncorban\ncorbans\ncorbeil\ncorbeils\ncorbel\ncorbeled\ncorbeling\ncorbelled\ncorbelling\ncorbels\ncorbie\ncorbies\ncorbina\ncorbinas\ncorby\ncord\ncordage\ncordages\ncordate\ncorded\ncorder\ncorders\ncordial\ncordiality\ncordially\ncordialness\ncordials\ncordillera\ncordilleras\ncording\ncordite\ncordites\ncordless\ncordlike\ncordoba\ncordobas\ncordon\ncordoned\ncordoning\ncordons\ncordovan\ncordovans\ncords\ncorduroy\ncorduroyed\ncorduroying\ncorduroys\ncordwain\ncordwains\ncordwood\ncordwoods\ncore\ncored\ncoredeem\ncoredeemed\ncoredeeming\ncoredeems\ncoreign\ncoreigns\ncorelate\ncorelated\ncorelates\ncorelating\ncoreless\ncoremia\ncoremium\ncorer\ncorers\ncores\ncorespondent\ncorespondents\ncorf\ncorgi\ncorgis\ncoria\ncoriander\ncorianders\ncoring\ncorium\ncork\ncorkage\ncorkages\ncorkboard\ncorked\ncorker\ncorkers\ncorkier\ncorkiest\ncorking\ncorklike\ncorks\ncorkscrew\ncorkscrews\ncorkwood\ncorkwoods\ncorky\ncorm\ncormel\ncormels\ncormlike\ncormoid\ncormorant\ncormorants\ncormous\ncorms\ncorn\ncornball\ncornballs\ncorncake\ncorncakes\ncorncob\ncorncobs\ncorncrib\ncorncribs\ncornea\ncorneal\ncorneas\ncorned\ncornel\ncornels\ncorneous\ncorner\ncornered\ncornering\ncorners\ncornerstone\ncornerstones\ncornet\ncornetcies\ncornetcy\ncornetist\ncornetists\ncornets\ncornettist\ncornettists\ncornfed\ncornfield\ncornfields\ncornflower\ncornflowers\ncornhusk\ncornhusking\ncornhusks\ncornice\ncorniced\ncornices\ncorniche\ncorniches\ncornicing\ncornicle\ncornicles\ncornier\ncorniest\ncornily\ncorning\ncornmeal\ncornmeals\ncorns\ncornstalk\ncornstalks\ncornstarch\ncornu\ncornua\ncornual\ncornucopia\ncornucopias\ncornus\ncornuses\ncornute\ncornuted\ncornuto\ncornutos\ncorny\ncorodies\ncorody\ncorolla\ncorollaries\ncorollary\ncorollas\ncorollate\ncorona\ncoronach\ncoronachs\ncoronae\ncoronal\ncoronals\ncoronaries\ncoronary\ncoronas\ncoronation\ncoronations\ncoronel\ncoronels\ncoroner\ncoroners\ncoronet\ncoronets\ncorotate\ncorotated\ncorotates\ncorotating\ncorpora\ncorporal\ncorporally\ncorporals\ncorporate\ncorporately\ncorporation\ncorporations\ncorporatist\ncorporatists\ncorporative\ncorporativism\ncorporator\ncorporators\ncorporeal\ncorporeality\ncorporeally\ncorporealness\ncorps\ncorpse\ncorpses\ncorpsman\ncorpsmen\ncorpulence\ncorpulency\ncorpulent\ncorpulently\ncorpus\ncorpuscle\ncorpuscles\ncorrade\ncorraded\ncorrades\ncorrading\ncorral\ncorralled\ncorralling\ncorrals\ncorrect\ncorrectable\ncorrected\ncorrecter\ncorrectest\ncorrecting\ncorrection\ncorrectional\ncorrections\ncorrective\ncorrectively\ncorrectly\ncorrectness\ncorrector\ncorrectors\ncorrects\ncorrelate\ncorrelated\ncorrelates\ncorrelating\ncorrelation\ncorrelational\ncorrelations\ncorrelative\ncorrelatively\ncorrelatives\ncorrespond\ncorresponded\ncorrespondence\ncorrespondences\ncorrespondent\ncorrespondents\ncorresponding\ncorrespondingly\ncorresponds\ncorrida\ncorridas\ncorridor\ncorridors\ncorrie\ncorries\ncorrigibility\ncorrigible\ncorrigibly\ncorrival\ncorrivals\ncorroborate\ncorroborated\ncorroborates\ncorroborating\ncorroboration\ncorroborations\ncorroborative\ncorroboratively\ncorroborator\ncorroborators\ncorroboratory\ncorrode\ncorroded\ncorrodes\ncorrodible\ncorrodies\ncorroding\ncorrody\ncorrosion\ncorrosions\ncorrosive\ncorrosively\ncorrosiveness\ncorrosives\ncorrugate\ncorrugated\ncorrugates\ncorrugating\ncorrugation\ncorrugations\ncorrupt\ncorrupted\ncorrupter\ncorrupters\ncorruptest\ncorruptibility\ncorruptible\ncorrupting\ncorruption\ncorruptions\ncorruptive\ncorruptly\ncorruptness\ncorruptor\ncorruptors\ncorrupts\ncorsac\ncorsacs\ncorsage\ncorsages\ncorsair\ncorsairs\ncorse\ncorselet\ncorselets\ncorses\ncorset\ncorseted\ncorseting\ncorsets\ncorslet\ncorslets\ncortege\ncorteges\ncortex\ncortexes\ncortical\ncortically\ncortices\ncortin\ncortins\ncortisol\ncortisols\ncortisone\ncorundum\ncorundums\ncoruscate\ncoruscated\ncoruscates\ncoruscating\ncoruscation\ncoruscations\ncorvee\ncorvees\ncorves\ncorvet\ncorvets\ncorvette\ncorvettes\ncorvina\ncorvinas\ncorvine\ncory\ncorymb\ncorymbed\ncorymbs\ncoryphee\ncoryphees\ncoryza\ncoryzal\ncoryzas\ncos\ncosec\ncosecant\ncosecants\ncosecs\ncoses\ncoset\ncosets\ncosey\ncoseys\ncosh\ncoshed\ncosher\ncoshered\ncoshering\ncoshers\ncoshes\ncoshing\ncosie\ncosier\ncosies\ncosiest\ncosign\ncosignatories\ncosignatory\ncosigned\ncosigner\ncosigners\ncosigning\ncosigns\ncosily\ncosine\ncosines\ncosiness\ncosinesses\ncosmetic\ncosmetically\ncosmetician\ncosmeticians\ncosmetics\ncosmetologist\ncosmetologists\ncosmetology\ncosmic\ncosmical\ncosmically\ncosmism\ncosmisms\ncosmist\ncosmists\ncosmogonies\ncosmogonist\ncosmogonists\ncosmogony\ncosmographer\ncosmographers\ncosmographic\ncosmographies\ncosmography\ncosmological\ncosmologically\ncosmologist\ncosmologists\ncosmology\ncosmonaut\ncosmonauts\ncosmopolitan\ncosmopolitanism\ncosmopolitans\ncosmopolite\ncosmopolites\ncosmos\ncosmoses\ncosponsor\ncosponsored\ncosponsoring\ncosponsors\ncosponsorship\ncosponsorships\ncoss\ncossack\ncossacks\ncosset\ncosseted\ncosseting\ncossets\ncost\ncosta\ncostae\ncostal\ncostar\ncostard\ncostards\ncostarred\ncostarring\ncostars\ncostate\ncosted\ncoster\ncosters\ncosting\ncostive\ncostively\ncostiveness\ncostless\ncostlier\ncostliest\ncostliness\ncostly\ncostmaries\ncostmary\ncostrel\ncostrels\ncosts\ncostume\ncostumed\ncostumer\ncostumers\ncostumes\ncostumey\ncostumier\ncostumiers\ncostuming\ncosy\ncot\ncotan\ncotangent\ncotangents\ncotans\ncote\ncoteau\ncoteaux\ncoted\ncotenant\ncotenants\ncoterie\ncoteries\ncotes\ncothurn\ncothurni\ncothurns\ncotidal\ncotillion\ncotillions\ncotillon\ncotillons\ncoting\ncotquean\ncotqueans\ncots\ncotta\ncottae\ncottage\ncottager\ncottagers\ncottages\ncottagey\ncottar\ncottars\ncottas\ncotter\ncotters\ncottier\ncottiers\ncotton\ncottoned\ncottoning\ncottonmouth\ncottonmouths\ncottons\ncottonseed\ncottonseeds\ncottontail\ncottontails\ncottonwood\ncottonwoods\ncottony\ncotyledon\ncotyledonary\ncotyledons\ncotyloid\ncotype\ncotypes\ncouch\ncouchant\ncouched\ncoucher\ncouchers\ncouches\ncouching\ncouchings\ncoude\ncougar\ncougars\ncough\ncoughed\ncougher\ncoughers\ncoughing\ncoughs\ncould\ncouldest\ncouldst\ncoulee\ncoulees\ncoulisse\ncoulisses\ncouloir\ncouloirs\ncoulomb\ncoulombs\ncoulter\ncoulters\ncoumaric\ncoumarin\ncoumarins\ncoumarou\ncoumarous\ncouncil\ncouncillor\ncouncillors\ncouncilman\ncouncilmen\ncouncilor\ncouncilors\ncouncils\ncouncilwoman\ncouncilwomen\ncounsel\ncounseled\ncounseling\ncounselled\ncounselling\ncounsellor\ncounsellors\ncounselor\ncounselors\ncounselorship\ncounselorships\ncounsels\ncount\ncountable\ncountdown\ncountdowns\ncounted\ncountenance\ncountenanced\ncountenances\ncountenancing\ncounter\ncounteract\ncounteracted\ncounteracting\ncounteraction\ncounteractions\ncounteractive\ncounteracts\ncounterattack\ncounterattacked\ncounterattacking\ncounterattacks\ncounterbalance\ncounterbalanced\ncounterbalances\ncounterbalancing\ncounterblow\ncounterblows\ncountercharge\ncountercharges\ncounterclaim\ncounterclaimed\ncounterclaiming\ncounterclaims\ncounterclockwise\ncounterculture\ncountered\ncounterfeit\ncounterfeited\ncounterfeiter\ncounterfeiters\ncounterfeiting\ncounterfeits\ncountering\ncounterintelligence\ncounterirritant\ncounterirritants\ncounterman\ncountermand\ncountermanded\ncountermanding\ncountermands\ncountermarch\ncountermarched\ncountermarches\ncountermarching\ncountermeasure\ncountermeasures\ncountermen\ncountermove\ncountermoved\ncountermovement\ncountermovements\ncountermoves\ncountermoving\ncounteroffensive\ncounteroffensives\ncounteroffer\ncounteroffers\ncounterpane\ncounterpanes\ncounterpart\ncounterparts\ncounterplot\ncounterplots\ncounterplotted\ncounterplotting\ncounterpoint\ncounterpoints\ncounterpoise\ncounterpoised\ncounterpoises\ncounterpoising\ncounterproductive\ncounterproposal\ncounterproposals\ncounterrevolution\ncounterrevolutionaries\ncounterrevolutionary\ncounterrevolutionist\ncounterrevolutionists\ncounterrevolutions\ncounters\ncountersign\ncountersignature\ncountersignatures\ncountersigned\ncountersigning\ncountersigns\ncountersink\ncountersinking\ncountersinks\ncounterspies\ncounterspy\ncountersunk\ncountertenor\ncountertenors\ncounterweight\ncounterweighted\ncounterweighting\ncounterweights\ncountess\ncountesses\ncountian\ncountians\ncounties\ncounting\ncountinghouse\ncountinghouses\ncountless\ncountries\ncountrified\ncountry\ncountryman\ncountrymen\ncountryside\ncountrysides\ncountrywide\ncounts\ncounty\ncoup\ncoupe\ncouped\ncoupes\ncouping\ncouple\ncoupled\ncoupler\ncouplers\ncouples\ncouplet\ncouplets\ncoupling\ncouplings\ncoupon\ncoupons\ncoups\ncourage\ncourageous\ncourageously\ncourageousness\ncourages\ncourant\ncourante\ncourantes\ncouranto\ncourantoes\ncourantos\ncourants\ncourier\ncouriers\ncourlan\ncourlans\ncourse\ncoursed\ncourser\ncoursers\ncourses\ncoursing\ncoursings\ncourt\ncourted\ncourteous\ncourteously\ncourteousness\ncourtesan\ncourtesans\ncourtesied\ncourtesies\ncourtesy\ncourtesying\ncourthouse\ncourthouses\ncourtier\ncourtiers\ncourting\ncourtlier\ncourtliest\ncourtliness\ncourtly\ncourtroom\ncourtrooms\ncourts\ncourtship\ncourtships\ncourtyard\ncourtyards\ncouscous\ncouscouses\ncousin\ncousinly\ncousinries\ncousinry\ncousins\ncouteau\ncouteaux\ncouter\ncouters\ncouth\ncouther\ncouthest\ncouthie\ncouthier\ncouthiest\ncouths\ncouture\ncoutures\ncouturier\ncouturiers\ncouvade\ncouvades\ncovalent\ncove\ncoved\ncoven\ncovenant\ncovenantal\ncovenanted\ncovenanter\ncovenanters\ncovenanting\ncovenants\ncovens\ncover\ncoverage\ncoverages\ncoverall\ncoveralls\ncovered\ncoverer\ncoverers\ncovering\ncoverings\ncoverless\ncoverlet\ncoverlets\ncoverlid\ncoverlids\ncovers\ncovert\ncovertly\ncovertness\ncoverts\ncoves\ncovet\ncovetable\ncoveted\ncoveter\ncoveters\ncoveting\ncovetous\ncovetously\ncovetousness\ncovets\ncovey\ncoveys\ncovin\ncoving\ncovings\ncow\ncowage\ncowages\ncoward\ncowardice\ncowardliness\ncowardly\ncowards\ncowbane\ncowbanes\ncowbell\ncowbells\ncowberries\ncowberry\ncowbind\ncowbinds\ncowbird\ncowbirds\ncowboy\ncowboys\ncowcatcher\ncowcatchers\ncowed\ncowedly\ncower\ncowered\ncowering\ncowers\ncowfish\ncowfishes\ncowgirl\ncowgirls\ncowhage\ncowhages\ncowhand\ncowhands\ncowherb\ncowherbs\ncowherd\ncowherds\ncowhide\ncowhided\ncowhides\ncowhiding\ncowier\ncowiest\ncowing\ncowinner\ncowinners\ncowkine\ncowl\ncowled\ncowlick\ncowlicks\ncowling\ncowlings\ncowls\ncowman\ncowmen\ncoworker\ncoworkers\ncowpat\ncowpats\ncowpea\ncowpeas\ncowpoke\ncowpokes\ncowpox\ncowpoxes\ncowpuncher\ncowpunchers\ncowrie\ncowries\ncowry\ncows\ncowshed\ncowsheds\ncowskin\ncowskins\ncowslip\ncowslips\ncowy\ncox\ncoxa\ncoxae\ncoxal\ncoxalgia\ncoxalgias\ncoxalgic\ncoxalgies\ncoxalgy\ncoxcomb\ncoxcombical\ncoxcombry\ncoxcombs\ncoxed\ncoxes\ncoxing\ncoxswain\ncoxswained\ncoxswaining\ncoxswains\ncoy\ncoyed\ncoyer\ncoyest\ncoying\ncoyish\ncoyly\ncoyness\ncoynesses\ncoyote\ncoyotes\ncoypou\ncoypous\ncoypu\ncoypus\ncoys\ncoz\ncozen\ncozenage\ncozenages\ncozened\ncozener\ncozeners\ncozening\ncozens\ncozes\ncozey\ncozeys\ncozie\ncozier\ncozies\ncoziest\ncozily\ncoziness\ncozinesses\ncozy\ncozzes\ncraal\ncraaled\ncraaling\ncraals\ncrab\ncrabbed\ncrabbedly\ncrabbedness\ncrabber\ncrabbers\ncrabbier\ncrabbiest\ncrabbing\ncrabby\ncrabgrass\ncrabgrasses\ncrabs\ncrabwise\ncrack\ncrackdown\ncrackdowns\ncracked\ncracker\ncrackerjack\ncrackerjacks\ncrackers\ncracking\ncrackings\ncrackle\ncrackled\ncracklees\ncracklier\ncrackliest\ncrackling\ncracklings\ncrackly\ncracknel\ncracknels\ncrackpot\ncrackpots\ncracks\ncrackup\ncrackups\ncracky\ncradle\ncradled\ncradler\ncradlers\ncradles\ncradlesong\ncradlesongs\ncradling\ncraft\ncrafted\ncraftier\ncraftiest\ncraftily\ncraftiness\ncrafting\ncrafts\ncraftsman\ncraftsmanship\ncraftsmen\ncrafty\ncrag\ncragged\ncraggier\ncraggiest\ncraggily\ncraggy\ncrags\ncragsman\ncragsmen\ncrake\ncrakes\ncram\ncrambe\ncrambes\ncrambo\ncramboes\ncrambos\ncrammed\ncrammer\ncrammers\ncramming\ncramoisies\ncramoisy\ncramp\ncramped\ncramping\ncrampit\ncrampits\ncrampon\ncrampons\ncrampoon\ncrampoons\ncramps\ncrams\ncranberries\ncranberry\ncranch\ncranched\ncranches\ncranching\ncrane\ncraned\ncranes\ncrania\ncranial\ncranially\ncraniate\ncraniates\ncraning\ncranium\ncraniums\ncrank\ncrankcase\ncrankcases\ncranked\ncranker\ncrankest\ncrankier\ncrankiest\ncrankily\ncrankiness\ncranking\ncrankle\ncrankled\ncrankles\ncrankling\ncrankly\ncrankous\ncrankpin\ncrankpins\ncranks\ncrankshaft\ncrankshafts\ncranky\ncrannied\ncrannies\ncrannog\ncrannoge\ncrannoges\ncrannogs\ncranny\ncrap\ncrape\ncraped\ncraping\ncrapped\ncrapper\ncrappers\ncrappie\ncrappier\ncrappies\ncrappiest\ncrapping\ncrappy\ncraps\ncrapshooter\ncrapshooters\ncrases\ncrash\ncrashed\ncrasher\ncrashers\ncrashes\ncrashing\ncrasis\ncrass\ncrasser\ncrassest\ncrassly\ncrassness\ncratch\ncratches\ncrate\ncrated\ncrater\ncratered\ncratering\ncraters\ncrates\ncrating\ncraton\ncratonic\ncratons\ncraunch\ncraunched\ncraunches\ncraunching\ncravat\ncravats\ncrave\ncraved\ncraven\ncravened\ncravening\ncravenly\ncravenness\ncravens\ncraver\ncravers\ncraves\ncraving\ncravings\ncraw\ncrawdad\ncrawdads\ncrawfish\ncrawfished\ncrawfishes\ncrawfishing\ncrawl\ncrawled\ncrawler\ncrawlers\ncrawlier\ncrawliest\ncrawling\ncrawls\ncrawlway\ncrawlways\ncrawly\ncraws\ncrayfish\ncrayfishes\ncrayon\ncrayoned\ncrayoning\ncrayonist\ncrayonists\ncrayons\ncraze\ncrazed\ncrazes\ncrazier\ncraziest\ncrazily\ncraziness\ncrazing\ncrazy\ncreak\ncreaked\ncreakier\ncreakiest\ncreakily\ncreaking\ncreaks\ncreaky\ncream\ncreamed\ncreamer\ncreameries\ncreamers\ncreamery\ncreamier\ncreamiest\ncreamily\ncreaminess\ncreaming\ncreams\ncreamy\ncrease\ncreased\ncreaser\ncreasers\ncreases\ncreasier\ncreasiest\ncreasing\ncreasy\ncreate\ncreated\ncreates\ncreatin\ncreatine\ncreatines\ncreating\ncreatins\ncreation\ncreations\ncreative\ncreatively\ncreativeness\ncreativity\ncreator\ncreators\ncreatural\ncreature\ncreatures\ncreche\ncreches\ncredal\ncredence\ncredences\ncredenda\ncredent\ncredential\ncredentials\ncredenza\ncredenzas\ncredibility\ncredible\ncredibly\ncredit\ncreditability\ncreditable\ncreditably\ncredited\ncrediting\ncreditor\ncreditors\ncredits\ncreditworthiness\ncreditworthy\ncredo\ncredos\ncredulity\ncredulous\ncredulously\ncredulousness\ncreed\ncreedal\ncreeds\ncreek\ncreeks\ncreel\ncreels\ncreep\ncreepage\ncreepages\ncreeper\ncreepers\ncreepie\ncreepier\ncreepies\ncreepiest\ncreepily\ncreepiness\ncreeping\ncreeps\ncreepy\ncreese\ncreeses\ncreesh\ncreeshed\ncreeshes\ncreeshing\ncremains\ncremate\ncremated\ncremates\ncremating\ncremation\ncremations\ncremator\ncrematoria\ncrematories\ncrematorium\ncrematoriums\ncremators\ncrematory\ncreme\ncremes\ncrenate\ncrenated\ncrenel\ncreneled\ncreneling\ncrenelle\ncrenelled\ncrenelles\ncrenelling\ncrenels\ncreodont\ncreodonts\ncreole\ncreoles\ncreosol\ncreosols\ncreosote\ncreosoted\ncreosotes\ncreosoting\ncrepe\ncreped\ncrepeiest\ncrepes\ncrepey\ncrepier\ncrepiest\ncreping\ncrept\ncrepy\ncrescendo\ncrescendoes\ncrescendos\ncrescent\ncrescentic\ncrescents\ncrescive\ncresol\ncresols\ncress\ncresses\ncresset\ncressets\ncrest\ncrestal\ncrested\ncrestfallen\ncrestfallenness\ncresting\ncrestings\ncrestless\ncrests\ncresyl\ncresylic\ncresyls\ncretaceous\ncretic\ncretics\ncretin\ncretinism\ncretinous\ncretins\ncretonne\ncretonnes\ncrevalle\ncrevalles\ncrevasse\ncrevassed\ncrevasses\ncrevassing\ncrevice\ncreviced\ncrevices\ncrew\ncrewed\ncrewel\ncrewels\ncrewelwork\ncrewing\ncrewless\ncrewman\ncrewmen\ncrews\ncrib\ncribbage\ncribbages\ncribbed\ncribber\ncribbers\ncribbing\ncribbings\ncribbled\ncribrous\ncribs\ncribwork\ncribworks\ncricetid\ncricetids\ncrick\ncricked\ncricket\ncricketed\ncricketer\ncricketers\ncricketing\ncrickets\ncricking\ncricks\ncricoid\ncricoids\ncried\ncrier\ncriers\ncries\ncrime\ncrimes\ncriminal\ncriminalities\ncriminality\ncriminally\ncriminals\ncriminate\ncriminated\ncriminates\ncriminating\ncriminological\ncriminologically\ncriminologist\ncriminologists\ncriminology\ncrimmer\ncrimmers\ncrimp\ncrimped\ncrimper\ncrimpers\ncrimpier\ncrimpiest\ncrimping\ncrimple\ncrimpled\ncrimples\ncrimpling\ncrimps\ncrimpy\ncrimson\ncrimsoned\ncrimsoning\ncrimsons\ncringe\ncringed\ncringer\ncringers\ncringes\ncringing\ncringle\ncringles\ncrinite\ncrinites\ncrinkle\ncrinkled\ncrinkles\ncrinklier\ncrinkliest\ncrinkling\ncrinkly\ncrinoid\ncrinoids\ncrinoline\ncrinolines\ncrinum\ncrinums\ncriollo\ncriollos\ncripe\ncripple\ncrippled\ncrippler\ncripplers\ncripples\ncrippling\ncris\ncrises\ncrisic\ncrisis\ncrisp\ncrispate\ncrisped\ncrispen\ncrispened\ncrispening\ncrispens\ncrisper\ncrispers\ncrispest\ncrispier\ncrispiest\ncrispily\ncrispiness\ncrisping\ncrisply\ncrispness\ncrisps\ncrispy\ncrissa\ncrissal\ncrisscross\ncrisscrossed\ncrisscrosses\ncrisscrossing\ncrissum\ncrista\ncristae\ncristate\ncriteria\ncriterion\ncriterions\ncritic\ncritical\ncritically\ncriticalness\ncriticism\ncriticisms\ncriticize\ncriticized\ncriticizer\ncriticizers\ncriticizes\ncriticizing\ncritics\ncritique\ncritiqued\ncritiques\ncritiquing\ncritter\ncritters\ncrittur\ncritturs\ncroak\ncroaked\ncroaker\ncroakers\ncroakier\ncroakiest\ncroakily\ncroaking\ncroaks\ncroaky\ncroc\ncrocein\ncroceine\ncroceines\ncroceins\ncrochet\ncrocheted\ncrocheter\ncrocheters\ncrocheting\ncrochets\ncroci\ncrocine\ncrock\ncrocked\ncrockeries\ncrockery\ncrocket\ncrockets\ncrocking\ncrocks\ncrocodile\ncrocodiles\ncrocoite\ncrocoites\ncrocs\ncrocuci\ncrocus\ncrocuses\ncroft\ncrofter\ncrofters\ncrofts\ncroissant\ncroissants\ncrojik\ncrojiks\ncromlech\ncromlechs\ncrone\ncrones\ncronies\ncrony\ncronyism\ncronyisms\ncrook\ncrooked\ncrookeder\ncrookedest\ncrookedly\ncrookedness\ncrooking\ncrooks\ncroon\ncrooned\ncrooner\ncrooners\ncrooning\ncroons\ncrop\ncropland\ncroplands\ncropless\ncropped\ncropper\ncroppers\ncropping\ncrops\ncroquet\ncroqueted\ncroqueting\ncroquets\ncroquette\ncroquettes\ncroquis\ncrore\ncrores\ncrosier\ncrosiers\ncross\ncrossarm\ncrossarms\ncrossbar\ncrossbarred\ncrossbarring\ncrossbars\ncrossbow\ncrossbows\ncrossbred\ncrossbreed\ncrossbreeding\ncrossbreeds\ncrosscut\ncrosscuts\ncrosscutting\ncrosse\ncrossed\ncrosser\ncrossers\ncrosses\ncrossest\ncrosshatch\ncrosshatched\ncrosshatches\ncrosshatching\ncrosshatchings\ncrossing\ncrossings\ncrosslet\ncrosslets\ncrossly\ncrossover\ncrossovers\ncrosspiece\ncrosspieces\ncrossroad\ncrossroads\ncrosstie\ncrossties\ncrosstown\ncrosswalk\ncrosswalks\ncrossway\ncrossways\ncrosswise\ncrossword\ncrosswords\ncrotch\ncrotched\ncrotches\ncrotchet\ncrotchetiness\ncrotchets\ncrotchety\ncroton\ncrotons\ncrouch\ncrouched\ncrouches\ncrouching\ncroup\ncroupe\ncroupes\ncroupier\ncroupiers\ncroupiest\ncroupily\ncroupous\ncroups\ncroupy\ncrouse\ncrousely\ncrouton\ncroutons\ncrow\ncrowbar\ncrowbars\ncrowd\ncrowded\ncrowder\ncrowders\ncrowdie\ncrowdies\ncrowding\ncrowds\ncrowdy\ncrowed\ncrower\ncrowers\ncrowfeet\ncrowfoot\ncrowfoots\ncrowing\ncrown\ncrowned\ncrowner\ncrowners\ncrownet\ncrownets\ncrowning\ncrowns\ncrows\ncrowstep\ncrowsteps\ncroze\ncrozer\ncrozers\ncrozes\ncrozier\ncroziers\ncruces\ncrucial\ncrucially\ncrucian\ncrucians\ncruciate\ncrucible\ncrucibles\ncrucifer\ncrucifers\ncrucified\ncrucifies\ncrucifix\ncrucifixes\ncrucifixion\ncrucifixions\ncrucify\ncrucifying\ncruck\ncrud\ncrudded\ncrudding\ncruddy\ncrude\ncrudely\ncrudeness\ncruder\ncrudes\ncrudest\ncrudities\ncrudity\ncruds\ncruel\ncrueler\ncruelest\ncrueller\ncruellest\ncruelly\ncruelness\ncruelties\ncruelty\ncruet\ncruets\ncruise\ncruised\ncruiser\ncruisers\ncruises\ncruising\ncruller\ncrullers\ncrumb\ncrumbed\ncrumber\ncrumbers\ncrumbier\ncrumbiest\ncrumbing\ncrumble\ncrumbled\ncrumbles\ncrumblier\ncrumbliest\ncrumbliness\ncrumbling\ncrumbly\ncrumbs\ncrumby\ncrummie\ncrummier\ncrummies\ncrummiest\ncrummy\ncrump\ncrumped\ncrumpet\ncrumpets\ncrumping\ncrumple\ncrumpled\ncrumples\ncrumpling\ncrumply\ncrumps\ncrunch\ncrunched\ncruncher\ncrunchers\ncrunches\ncrunchier\ncrunchiest\ncrunchily\ncrunchiness\ncrunching\ncrunchy\ncrunodal\ncrunode\ncrunodes\ncruor\ncruors\ncrupper\ncruppers\ncrura\ncrural\ncrus\ncrusade\ncrusaded\ncrusader\ncrusaders\ncrusades\ncrusading\ncrusado\ncrusadoes\ncrusados\ncruse\ncruses\ncruset\ncrusets\ncrush\ncrushed\ncrusher\ncrushers\ncrushes\ncrushing\ncrusily\ncrust\ncrustacean\ncrustaceans\ncrustal\ncrusted\ncrustier\ncrustiest\ncrustily\ncrustiness\ncrusting\ncrustose\ncrusts\ncrusty\ncrutch\ncrutched\ncrutches\ncrutching\ncrux\ncruxes\ncruzado\ncruzadoes\ncruzados\ncruzeiro\ncruzeiros\ncruzieros\ncrwth\ncrwths\ncry\ncrybabies\ncrybaby\ncrying\ncryingly\ncryogen\ncryogenic\ncryogenically\ncryogenics\ncryogenies\ncryogens\ncryogeny\ncryolite\ncryolites\ncryonic\ncryonics\ncryostat\ncryostats\ncryotron\ncryotrons\ncrypt\ncryptal\ncryptic\ncryptically\ncrypto\ncryptogram\ncryptograms\ncryptograph\ncryptographer\ncryptographers\ncryptographic\ncryptographically\ncryptographies\ncryptographs\ncryptography\ncryptos\ncrypts\ncrystal\ncrystalline\ncrystallinity\ncrystallization\ncrystallizations\ncrystallize\ncrystallized\ncrystallizes\ncrystallizing\ncrystallographer\ncrystallographers\ncrystallographic\ncrystallography\ncrystalloid\ncrystalloids\ncrystals\nctenidia\nctenoid\nctenophore\nctenophores\ncub\ncubage\ncubages\ncubature\ncubatures\ncubbies\ncubbish\ncubby\ncubbyhole\ncubbyholes\ncube\ncubeb\ncubebs\ncubed\ncuber\ncubers\ncubes\ncubic\ncubical\ncubicities\ncubicity\ncubicle\ncubicles\ncubicly\ncubics\ncubicula\ncubiform\ncubing\ncubism\ncubisms\ncubist\ncubistic\ncubists\ncubit\ncubital\ncubits\ncuboid\ncuboidal\ncuboids\ncubs\ncuckold\ncuckolded\ncuckolding\ncuckolds\ncuckoo\ncuckooed\ncuckooing\ncuckoos\ncucumber\ncucumbers\ncucurbit\ncucurbits\ncud\ncudbear\ncudbears\ncuddie\ncuddies\ncuddle\ncuddled\ncuddles\ncuddlier\ncuddliest\ncuddling\ncuddly\ncuddy\ncudgel\ncudgeled\ncudgeler\ncudgelers\ncudgeling\ncudgelled\ncudgelling\ncudgels\ncuds\ncudweed\ncudweeds\ncue\ncued\ncueing\ncues\ncuesta\ncuestas\ncuff\ncuffed\ncuffing\ncuffless\ncuffs\ncuif\ncuifs\ncuing\ncuirass\ncuirassed\ncuirasses\ncuirassier\ncuirassiers\ncuirassing\ncuish\ncuishes\ncuisine\ncuisines\ncuisse\ncuisses\ncuittle\ncuittled\ncuittles\ncuittling\ncuke\ncukes\nculch\nculches\nculet\nculets\nculex\nculices\nculicid\nculicids\nculicine\nculicines\nculinary\ncull\ncullay\ncullays\nculled\nculler\ncullers\ncullet\ncullets\ncullied\ncullies\nculling\ncullion\ncullions\ncullis\ncullises\nculls\ncully\ncullying\nculm\nculmed\nculminate\nculminated\nculminates\nculminating\nculmination\nculminations\nculming\nculms\nculotte\nculottes\nculpa\nculpability\nculpable\nculpableness\nculpably\nculpae\nculprit\nculprits\ncult\ncultch\ncultches\nculti\ncultic\ncultigen\ncultigens\ncultism\ncultisms\ncultist\ncultists\ncultivable\ncultivar\ncultivars\ncultivatable\ncultivate\ncultivated\ncultivates\ncultivating\ncultivation\ncultivations\ncultivator\ncultivators\ncultrate\ncults\ncultural\nculturally\nculture\ncultured\ncultures\nculturing\ncultus\ncultuses\nculver\nculverin\nculverins\nculvers\nculvert\nculverts\ncum\ncumarin\ncumarins\ncumber\ncumbered\ncumberer\ncumberers\ncumbering\ncumbers\ncumbersome\ncumbersomely\ncumbersomeness\ncumbrous\ncumbrously\ncumbrousness\ncumin\ncumins\ncummer\ncummerbund\ncummerbunds\ncummers\ncummin\ncummins\ncumquat\ncumquats\ncumshaw\ncumshaws\ncumulate\ncumulated\ncumulates\ncumulating\ncumulation\ncumulations\ncumulative\ncumulatively\ncumulativeness\ncumuli\ncumulous\ncumulus\ncundum\ncundums\ncuneal\ncuneate\ncuneated\ncuneatic\ncuneiform\ncuniform\ncuniforms\ncunner\ncunners\ncunning\ncunninger\ncunningest\ncunningly\ncunnings\ncunt\ncunts\ncup\ncupboard\ncupboards\ncupcake\ncupcakes\ncupel\ncupeled\ncupeler\ncupelers\ncupeling\ncupelled\ncupeller\ncupellers\ncupelling\ncupels\ncupful\ncupfuls\ncupid\ncupidities\ncupidity\ncupids\ncuplike\ncupola\ncupolaed\ncupolaing\ncupolas\ncuppa\ncuppas\ncupped\ncupper\ncuppers\ncuppier\ncuppiest\ncupping\ncuppings\ncuppy\ncupreous\ncupric\ncuprite\ncuprites\ncuprous\ncuprum\ncuprums\ncups\ncupsful\ncupula\ncupulae\ncupular\ncupulate\ncupule\ncupules\ncur\ncurability\ncurable\ncurableness\ncurably\ncuracao\ncuracaos\ncuracies\ncuracoa\ncuracoas\ncuracy\ncuragh\ncuraghs\ncurara\ncuraras\ncurare\ncurares\ncurari\ncurarine\ncurarines\ncuraris\ncurarize\ncurarized\ncurarizes\ncurarizing\ncurassow\ncurassows\ncurate\ncurates\ncurative\ncuratives\ncurator\ncuratorial\ncurators\ncuratorship\ncurb\ncurbable\ncurbed\ncurber\ncurbers\ncurbing\ncurbings\ncurbs\ncurbstone\ncurbstones\ncurch\ncurches\ncurculio\ncurculios\ncurcuma\ncurcumas\ncurd\ncurded\ncurdier\ncurdiest\ncurding\ncurdle\ncurdled\ncurdler\ncurdlers\ncurdles\ncurdling\ncurds\ncurdy\ncure\ncured\ncureless\ncurer\ncurers\ncures\ncuret\ncurets\ncurette\ncuretted\ncurettes\ncuretting\ncurf\ncurfew\ncurfews\ncurfs\ncuria\ncuriae\ncurial\ncurie\ncuries\ncuring\ncurio\ncurios\ncuriosa\ncuriosities\ncuriosity\ncurious\ncuriouser\ncuriousest\ncuriously\ncuriousness\ncurite\ncurites\ncurium\ncuriums\ncurl\ncurled\ncurler\ncurlers\ncurlew\ncurlews\ncurlicue\ncurlicued\ncurlicues\ncurlicuing\ncurlier\ncurliest\ncurlily\ncurliness\ncurling\ncurlings\ncurls\ncurly\ncurlycue\ncurlycues\ncurmudgeon\ncurmudgeonly\ncurmudgeons\ncurn\ncurns\ncurr\ncurrach\ncurrachs\ncurragh\ncurraghs\ncurran\ncurrans\ncurrant\ncurrants\ncurred\ncurrencies\ncurrency\ncurrent\ncurrently\ncurrentness\ncurrents\ncurricle\ncurricles\ncurricula\ncurricular\ncurriculum\ncurriculums\ncurrie\ncurried\ncurrier\ncurrieries\ncurriers\ncurriery\ncurries\ncurring\ncurrish\ncurrs\ncurry\ncurrycomb\ncurrycombs\ncurrying\ncurs\ncurse\ncursed\ncurseder\ncursedest\ncursedly\ncursedness\ncurser\ncursers\ncurses\ncursing\ncursive\ncursively\ncursives\ncursorily\ncursoriness\ncursory\ncurst\ncurt\ncurtail\ncurtailed\ncurtailer\ncurtailers\ncurtailing\ncurtailment\ncurtailments\ncurtails\ncurtain\ncurtained\ncurtaining\ncurtains\ncurtal\ncurtalax\ncurtalaxes\ncurtals\ncurtate\ncurter\ncurtesies\ncurtest\ncurtesy\ncurtly\ncurtness\ncurtnesses\ncurtsey\ncurtseyed\ncurtseying\ncurtseys\ncurtsied\ncurtsies\ncurtsy\ncurtsying\ncurule\ncurvaceous\ncurvature\ncurvatures\ncurve\ncurved\ncurves\ncurvet\ncurveted\ncurveting\ncurvets\ncurvetted\ncurvetting\ncurvey\ncurvier\ncurviest\ncurvilinear\ncurving\ncurvy\ncuscus\ncuscuses\ncusec\ncusecs\ncushat\ncushats\ncushaw\ncushaws\ncushier\ncushiest\ncushily\ncushion\ncushioned\ncushioning\ncushions\ncushiony\ncushy\ncusk\ncusks\ncusp\ncuspate\ncuspated\ncusped\ncuspid\ncuspidal\ncuspides\ncuspidor\ncuspidors\ncuspids\ncuspis\ncusps\ncuss\ncussed\ncussedly\ncussedness\ncusser\ncussers\ncusses\ncussing\ncusso\ncussos\ncussword\ncusswords\ncustard\ncustards\ncustodes\ncustodial\ncustodian\ncustodians\ncustodianship\ncustodies\ncustody\ncustom\ncustomarily\ncustomary\ncustomer\ncustomers\ncustomhouse\ncustomhouses\ncustomize\ncustomized\ncustomizes\ncustomizing\ncustoms\ncustos\ncustumal\ncustumals\ncut\ncutaneous\ncutaneously\ncutaway\ncutaways\ncutback\ncutbacks\ncutch\ncutcheries\ncutchery\ncutches\ncutdown\ncutdowns\ncute\ncutely\ncuteness\ncutenesses\ncuter\ncutes\ncutesier\ncutesiest\ncutest\ncutesy\ncutey\ncuteys\ncutgrass\ncutgrasses\ncuticle\ncuticles\ncuticula\ncuticulae\ncuticular\ncutie\ncuties\ncutin\ncutinise\ncutinised\ncutinises\ncutinising\ncutinize\ncutinized\ncutinizes\ncutinizing\ncutins\ncutis\ncutises\ncutlas\ncutlases\ncutlass\ncutlasses\ncutler\ncutleries\ncutlers\ncutlery\ncutlet\ncutlets\ncutline\ncutlines\ncutoff\ncutoffs\ncutout\ncutouts\ncutover\ncutpurse\ncutpurses\ncuts\ncuttable\ncuttage\ncuttages\ncutter\ncutters\ncutthroat\ncutthroats\ncutties\ncutting\ncuttings\ncuttle\ncuttled\ncuttlefish\ncuttlefishes\ncuttles\ncuttling\ncutty\ncutup\ncutups\ncutwater\ncutwaters\ncutwork\ncutworks\ncutworm\ncutworms\ncuvette\ncuvettes\ncwm\ncwms\ncyan\ncyanamid\ncyanamide\ncyanamides\ncyanamids\ncyanate\ncyanates\ncyanic\ncyanid\ncyanide\ncyanided\ncyanides\ncyaniding\ncyanids\ncyanin\ncyanine\ncyanines\ncyanins\ncyanite\ncyanites\ncyanitic\ncyano\ncyanogen\ncyanogens\ncyanosed\ncyanoses\ncyanosis\ncyanotic\ncyans\ncybernetic\ncybernetics\ncyborg\ncyborgs\ncycad\ncycads\ncycas\ncycases\ncycasin\ncycasins\ncyclamate\ncyclamates\ncyclamen\ncyclamens\ncyclase\ncyclases\ncycle\ncyclecar\ncyclecars\ncycled\ncycler\ncyclers\ncycles\ncyclic\ncyclical\ncyclically\ncyclicly\ncycling\ncyclings\ncyclist\ncyclists\ncyclitol\ncyclitols\ncyclize\ncyclized\ncyclizes\ncyclizing\ncyclo\ncycloid\ncycloids\ncyclometer\ncyclometers\ncyclonal\ncyclone\ncyclones\ncyclonic\ncyclonically\ncyclopedia\ncyclopedias\ncyclopedic\ncyclops\ncyclorama\ncycloramas\ncyclos\ncycloses\ncyclosis\ncyclotron\ncyclotrons\ncyder\ncyders\ncyeses\ncyesis\ncygnet\ncygnets\ncylices\ncylinder\ncylindered\ncylindering\ncylinders\ncylindric\ncylindrical\ncylindrically\ncylix\ncyma\ncymae\ncymar\ncymars\ncymas\ncymatia\ncymatium\ncymbal\ncymbaler\ncymbalers\ncymbals\ncymbling\ncymblings\ncyme\ncymene\ncymenes\ncymes\ncymlin\ncymling\ncymlings\ncymlins\ncymogene\ncymogenes\ncymoid\ncymol\ncymols\ncymose\ncymosely\ncymous\ncynic\ncynical\ncynically\ncynicism\ncynicisms\ncynics\ncynosure\ncynosures\ncypher\ncyphered\ncyphering\ncyphers\ncypres\ncypreses\ncypress\ncypresses\ncyprian\ncyprians\ncyprinid\ncyprinids\ncyprus\ncypruses\ncypsela\ncypselae\ncyst\ncystein\ncysteine\ncysteines\ncysteins\ncystic\ncystine\ncystines\ncystitides\ncystitis\ncystititides\ncystoid\ncystoids\ncysts\ncytaster\ncytasters\ncytidine\ncytidines\ncytogenies\ncytogeny\ncytologic\ncytological\ncytologically\ncytologies\ncytologist\ncytologists\ncytology\ncyton\ncytons\ncytoplasm\ncytoplasmic\ncytoplasms\ncytosine\ncytosines\nczar\nczardas\nczardom\nczardoms\nczarevna\nczarevnas\nczarina\nczarinas\nczarism\nczarisms\nczarist\nczarists\nczaritza\nczaritzas\nczars\nda\ndab\ndabbed\ndabber\ndabbers\ndabbing\ndabble\ndabbled\ndabbler\ndabblers\ndabbles\ndabbling\ndabblings\ndabchick\ndabchicks\ndabs\ndabster\ndabsters\ndace\ndaces\ndacha\ndachas\ndachshund\ndachshunds\ndacker\ndackered\ndackering\ndackers\ndacoit\ndacoities\ndacoits\ndacoity\ndactyl\ndactyli\ndactylic\ndactylics\ndactyls\ndactylus\ndad\ndada\ndadaism\ndadaisms\ndadaist\ndadaists\ndadas\ndaddies\ndaddle\ndaddled\ndaddles\ndaddling\ndaddy\ndado\ndadoed\ndadoes\ndadoing\ndados\ndads\ndaedal\ndaemon\ndaemonic\ndaemons\ndaff\ndaffed\ndaffier\ndaffiest\ndaffing\ndaffodil\ndaffodils\ndaffs\ndaffy\ndaft\ndafter\ndaftest\ndaftly\ndaftness\ndaftnesses\ndag\ndagga\ndagger\ndaggered\ndaggering\ndaggers\ndaggle\ndaggled\ndaggles\ndaggling\ndaglock\ndaglocks\ndago\ndagoba\ndagobas\ndagoes\ndagos\ndags\ndaguerreotype\ndaguerreotypes\ndah\ndahabeah\ndahabeahs\ndahabiah\ndahabiahs\ndahabieh\ndahabiehs\ndahabiya\ndahabiyas\ndahl\ndahlia\ndahlias\ndahls\ndahoon\ndahoons\ndahs\ndaiker\ndaikered\ndaikering\ndaikers\ndailies\ndaily\ndaimen\ndaimio\ndaimios\ndaimon\ndaimones\ndaimonic\ndaimons\ndaimyo\ndaimyos\ndaintier\ndainties\ndaintiest\ndaintily\ndaintiness\ndainty\ndaiquiri\ndaiquiris\ndairies\ndairy\ndairying\ndairyings\ndairymaid\ndairymaids\ndairyman\ndairymen\ndais\ndaises\ndaishiki\ndaishikis\ndaisied\ndaisies\ndaisy\ndaisywheel\ndaisywheels\ndak\ndakerhen\ndakerhens\ndakoit\ndakoities\ndakoits\ndakoity\ndaks\ndal\ndalapon\ndalapons\ndalasi\ndale\ndales\ndalesman\ndalesmen\ndaleth\ndaleths\ndalles\ndalliance\ndalliances\ndallied\ndallier\ndalliers\ndallies\ndally\ndallying\ndalmatian\ndalmatians\ndalmatic\ndalmatics\ndals\ndaltonic\ndam\ndamage\ndamageable\ndamaged\ndamager\ndamagers\ndamages\ndamaging\ndaman\ndamans\ndamar\ndamars\ndamascene\ndamascened\ndamascenes\ndamascening\ndamask\ndamasked\ndamasking\ndamasks\ndame\ndames\ndamewort\ndameworts\ndammar\ndammars\ndammed\ndammer\ndammers\ndamming\ndamn\ndamnable\ndamnableness\ndamnably\ndamnation\ndamnations\ndamndest\ndamndests\ndamned\ndamneder\ndamnedest\ndamner\ndamners\ndamnified\ndamnifies\ndamnify\ndamnifying\ndamning\ndamningly\ndamns\ndamosel\ndamosels\ndamozel\ndamozels\ndamp\ndamped\ndampen\ndampened\ndampener\ndampeners\ndampening\ndampens\ndamper\ndampers\ndampest\ndamping\ndampish\ndamply\ndampness\ndampnesses\ndamps\ndams\ndamsel\ndamsels\ndamson\ndamsons\ndance\ndanced\ndancer\ndancers\ndances\ndancing\ndandelion\ndandelions\ndander\ndandered\ndandering\ndanders\ndandiacal\ndandier\ndandies\ndandiest\ndandified\ndandifies\ndandify\ndandifying\ndandily\ndandle\ndandled\ndandler\ndandlers\ndandles\ndandling\ndandriff\ndandriffs\ndandruff\ndandruffs\ndandruffy\ndandy\ndandyish\ndandyism\ndandyisms\ndanegeld\ndanegelds\ndaneweed\ndaneweeds\ndanewort\ndaneworts\ndang\ndanged\ndanger\ndangered\ndangering\ndangerous\ndangerously\ndangerousness\ndangers\ndanging\ndangle\ndangled\ndangler\ndanglers\ndangles\ndangling\ndangs\ndanio\ndanios\ndank\ndanker\ndankest\ndankly\ndankness\ndanknesses\ndanseur\ndanseurs\ndanseuse\ndanseuses\ndap\ndaphne\ndaphnes\ndaphnia\ndaphnias\ndapped\ndapper\ndapperer\ndapperest\ndapperly\ndapperness\ndapping\ndapple\ndappled\ndapples\ndappling\ndaps\ndarb\ndarbies\ndarbs\ndare\ndared\ndaredevil\ndaredevilry\ndaredevils\ndaredeviltry\ndareful\ndarer\ndarers\ndares\ndaresay\ndaric\ndarics\ndaring\ndaringly\ndaringness\ndarings\ndariole\ndarioles\ndark\ndarked\ndarken\ndarkened\ndarkener\ndarkeners\ndarkening\ndarkens\ndarker\ndarkest\ndarkey\ndarkeys\ndarkie\ndarkies\ndarking\ndarkish\ndarkle\ndarkled\ndarkles\ndarklier\ndarkliest\ndarkling\ndarkly\ndarkness\ndarknesses\ndarkroom\ndarkrooms\ndarks\ndarksome\ndarky\ndarling\ndarlingly\ndarlingness\ndarlings\ndarn\ndarndest\ndarndests\ndarned\ndarneder\ndarnedest\ndarnel\ndarnels\ndarner\ndarners\ndarning\ndarnings\ndarns\ndart\ndarted\ndarter\ndarters\ndarting\ndartle\ndartled\ndartles\ndartling\ndarts\ndash\ndashboard\ndashboards\ndashed\ndasheen\ndasheens\ndasher\ndashers\ndashes\ndashi\ndashier\ndashiest\ndashiki\ndashikis\ndashing\ndashingly\ndashpot\ndashpots\ndashy\ndassie\ndassies\ndastard\ndastardliness\ndastardly\ndastards\ndasyure\ndasyures\ndata\ndatable\ndataries\ndatary\ndatcha\ndatchas\ndate\ndateable\ndated\ndatedly\ndateless\ndateline\ndatelined\ndatelines\ndatelining\ndater\ndaters\ndates\ndating\ndatival\ndative\ndatively\ndatives\ndato\ndatos\ndatto\ndattos\ndatum\ndatums\ndatura\ndaturas\ndaturic\ndaub\ndaube\ndaubed\ndauber\ndauberies\ndaubers\ndaubery\ndaubes\ndaubier\ndaubiest\ndaubing\ndaubries\ndaubry\ndaubs\ndauby\ndaughter\ndaughterless\ndaughterly\ndaughters\ndaunder\ndaundered\ndaundering\ndaunders\ndaunt\ndaunted\ndaunter\ndaunters\ndaunting\ndauntingly\ndauntless\ndauntlessly\ndauntlessness\ndaunts\ndauphin\ndauphine\ndauphines\ndauphins\ndaut\ndauted\ndautie\ndauties\ndauting\ndauts\ndaven\ndavened\ndavening\ndavenport\ndavenports\ndavens\ndavies\ndavit\ndavits\ndavy\ndaw\ndawdle\ndawdled\ndawdler\ndawdlers\ndawdles\ndawdling\ndawed\ndawen\ndawing\ndawk\ndawks\ndawn\ndawned\ndawning\ndawnlike\ndawns\ndaws\ndawt\ndawted\ndawtie\ndawties\ndawting\ndawts\nday\ndaybed\ndaybeds\ndaybook\ndaybooks\ndaybreak\ndaybreaks\ndaydream\ndaydreamed\ndaydreamer\ndaydreamers\ndaydreaming\ndaydreams\ndaydreamt\ndayflies\ndayfly\ndayglow\ndayglows\ndaylight\ndaylighted\ndaylighting\ndaylights\ndaylilies\ndaylily\ndaylit\ndaylong\ndaymare\ndaymares\ndayroom\ndayrooms\ndays\ndayside\ndaysides\ndaysman\ndaysmen\ndaystar\ndaystars\ndaytime\ndaytimes\ndaze\ndazed\ndazedly\ndazedness\ndazes\ndazing\ndazzle\ndazzled\ndazzler\ndazzlers\ndazzles\ndazzling\ndazzlingly\nde\ndeacon\ndeaconed\ndeaconess\ndeaconesses\ndeaconing\ndeaconries\ndeaconry\ndeacons\ndeactivate\ndeactivated\ndeactivates\ndeactivating\ndeactivation\ndeactivations\ndeactivator\ndeactivators\ndead\ndeadbeat\ndeadbeats\ndeaden\ndeadened\ndeadener\ndeadeners\ndeadening\ndeadens\ndeader\ndeadest\ndeadeye\ndeadeyes\ndeadfall\ndeadfalls\ndeadhead\ndeadheaded\ndeadheading\ndeadheads\ndeadlier\ndeadliest\ndeadline\ndeadlines\ndeadliness\ndeadlock\ndeadlocked\ndeadlocking\ndeadlocks\ndeadly\ndeadness\ndeadnesses\ndeadpan\ndeadpanned\ndeadpanning\ndeadpans\ndeads\ndeadweight\ndeadweights\ndeadwood\ndeadwoods\ndeaerate\ndeaerated\ndeaerates\ndeaerating\ndeaf\ndeafen\ndeafened\ndeafening\ndeafeningly\ndeafens\ndeafer\ndeafest\ndeafish\ndeafly\ndeafness\ndeafnesses\ndeair\ndeaired\ndeairing\ndeairs\ndeal\ndealate\ndealated\ndealates\ndealer\ndealers\ndealfish\ndealfishes\ndealing\ndealings\ndeals\ndealt\ndean\ndeaned\ndeaneries\ndeanery\ndeaning\ndeans\ndeanship\ndeanships\ndear\ndearer\ndearest\ndearie\ndearies\ndearly\ndearness\ndearnesses\ndears\ndearth\ndearths\ndeary\ndeash\ndeashed\ndeashes\ndeashing\ndeasil\ndeath\ndeathbed\ndeathbeds\ndeathblow\ndeathblows\ndeathcup\ndeathcups\ndeathful\ndeathless\ndeathlessly\ndeathlessness\ndeathlike\ndeathly\ndeaths\ndeathtrap\ndeathtraps\ndeathwatch\ndeathwatches\ndeathy\ndeave\ndeaved\ndeaves\ndeaving\ndeb\ndebacle\ndebacles\ndebar\ndebark\ndebarkation\ndebarkations\ndebarked\ndebarking\ndebarks\ndebarment\ndebarments\ndebarred\ndebarring\ndebars\ndebase\ndebased\ndebasement\ndebasements\ndebaser\ndebasers\ndebases\ndebasing\ndebatable\ndebate\ndebated\ndebater\ndebaters\ndebates\ndebating\ndebauch\ndebauched\ndebaucher\ndebaucheries\ndebauchers\ndebauchery\ndebauches\ndebauching\ndebenture\ndebentures\ndebilitate\ndebilitated\ndebilitates\ndebilitating\ndebilitation\ndebilitations\ndebilities\ndebility\ndebit\ndebited\ndebiting\ndebits\ndebonair\ndebonairly\ndebonairness\ndebone\ndeboned\ndeboner\ndeboners\ndebones\ndeboning\ndebouch\ndebouche\ndebouched\ndebouches\ndebouching\ndebrief\ndebriefed\ndebriefing\ndebriefs\ndebris\ndebruise\ndebruised\ndebruises\ndebruising\ndebs\ndebt\ndebtless\ndebtor\ndebtors\ndebts\ndebug\ndebugged\ndebugging\ndebugs\ndebunk\ndebunked\ndebunker\ndebunkers\ndebunking\ndebunks\ndebut\ndebutant\ndebutante\ndebutantes\ndebutants\ndebuted\ndebuting\ndebuts\ndebye\ndebyes\ndecadal\ndecade\ndecadence\ndecadences\ndecadency\ndecadent\ndecadently\ndecadents\ndecades\ndecaf\ndecagon\ndecagonal\ndecagons\ndecagram\ndecagrams\ndecahedron\ndecahedrons\ndecal\ndecalcification\ndecalcifications\ndecalcified\ndecalcifies\ndecalcify\ndecalcifying\ndecalcomania\ndecalcomanias\ndecaliter\ndecaliters\ndecals\ndecameter\ndecameters\ndecamp\ndecamped\ndecamping\ndecampment\ndecampments\ndecamps\ndecanal\ndecane\ndecanes\ndecant\ndecantation\ndecantations\ndecanted\ndecanter\ndecanters\ndecanting\ndecants\ndecapitate\ndecapitated\ndecapitates\ndecapitating\ndecapitation\ndecapitations\ndecapitator\ndecapitators\ndecapod\ndecapods\ndecare\ndecares\ndecathlon\ndecathlons\ndecay\ndecayed\ndecayer\ndecayers\ndecaying\ndecays\ndecciares\ndecease\ndeceased\ndeceases\ndeceasing\ndecedent\ndecedents\ndeceit\ndeceitful\ndeceitfully\ndeceitfulness\ndeceits\ndeceive\ndeceived\ndeceiver\ndeceivers\ndeceives\ndeceiving\ndeceivingly\ndecelerate\ndecelerated\ndecelerates\ndecelerating\ndeceleration\ndecelerations\ndecelerator\ndecelerators\ndecemvir\ndecemviri\ndecemvirs\ndecenaries\ndecenary\ndecencies\ndecency\ndecennia\ndecennial\ndecennially\ndecent\ndecenter\ndecentered\ndecentering\ndecenters\ndecentest\ndecently\ndecentness\ndecentralization\ndecentralizations\ndecentralize\ndecentralized\ndecentralizes\ndecentralizing\ndecentre\ndecentred\ndecentres\ndecentring\ndeception\ndeceptions\ndeceptive\ndeceptively\ndeceptiveness\ndecern\ndecerned\ndecerning\ndecerns\ndecertified\ndecertifies\ndecertify\ndecertifying\ndeciare\ndeciares\ndecibel\ndecibels\ndecidable\ndecide\ndecided\ndecidedly\ndecidedness\ndecider\ndeciders\ndecides\ndeciding\ndecidua\ndeciduae\ndecidual\ndeciduas\ndeciduous\ndeciduously\ndeciduousness\ndecigram\ndecigrams\ndecile\ndeciles\ndecimal\ndecimalization\ndecimalizations\ndecimalize\ndecimalized\ndecimalizes\ndecimalizing\ndecimally\ndecimals\ndecimate\ndecimated\ndecimates\ndecimating\ndecimation\ndecimations\ndecimeter\ndecimeters\ndecipher\ndecipherable\ndeciphered\ndecipherer\ndecipherers\ndeciphering\ndecipherment\ndecipherments\ndeciphers\ndecision\ndecisional\ndecisions\ndecisive\ndecisively\ndecisiveness\ndeck\ndecked\ndeckel\ndeckels\ndecker\ndeckers\ndeckhand\ndeckhands\ndecking\ndeckings\ndeckle\ndeckles\ndecks\ndeclaim\ndeclaimed\ndeclaimer\ndeclaimers\ndeclaiming\ndeclaims\ndeclamation\ndeclamations\ndeclarable\ndeclaration\ndeclarations\ndeclarative\ndeclaratively\ndeclaratory\ndeclare\ndeclared\ndeclarer\ndeclarers\ndeclares\ndeclaring\ndeclass\ndeclasse\ndeclassed\ndeclasses\ndeclassified\ndeclassifies\ndeclassify\ndeclassifying\ndeclassing\ndeclension\ndeclensional\ndeclensions\ndeclinable\ndeclination\ndeclinational\ndeclinations\ndecline\ndeclined\ndecliner\ndecliners\ndeclines\ndeclining\ndeclivities\ndeclivity\ndeco\ndecoct\ndecocted\ndecocting\ndecoction\ndecoctions\ndecocts\ndecode\ndecoded\ndecoder\ndecoders\ndecodes\ndecoding\ndecollate\ndecollated\ndecollates\ndecollating\ndecollation\ndecollations\ndecolor\ndecolored\ndecoloring\ndecolors\ndecolour\ndecoloured\ndecolouring\ndecolours\ndecommission\ndecommissioned\ndecommissioning\ndecommissions\ndecomposability\ndecomposable\ndecompose\ndecomposed\ndecomposer\ndecomposers\ndecomposes\ndecomposing\ndecomposition\ndecompositions\ndecompress\ndecompressed\ndecompresses\ndecompressing\ndecompression\ndecompressions\ndecongest\ndecongestant\ndecongestants\ndecongested\ndecongesting\ndecongestion\ndecongestive\ndecongests\ndecontaminate\ndecontaminated\ndecontaminates\ndecontaminating\ndecontamination\ndecontaminations\ndecontrol\ndecontrolled\ndecontrolling\ndecontrols\ndecor\ndecorate\ndecorated\ndecorates\ndecorating\ndecoration\ndecorations\ndecorative\ndecoratively\ndecorativeness\ndecorator\ndecorators\ndecorous\ndecorously\ndecorousness\ndecors\ndecorum\ndecorums\ndecos\ndecoy\ndecoyed\ndecoyer\ndecoyers\ndecoying\ndecoys\ndecrease\ndecreased\ndecreases\ndecreasing\ndecreasingly\ndecree\ndecreed\ndecreeing\ndecreer\ndecreers\ndecrees\ndecrement\ndecrements\ndecrepit\ndecrepitate\ndecrepitated\ndecrepitates\ndecrepitating\ndecrepitation\ndecrepitations\ndecrepitly\ndecrepitness\ndecrepitude\ndecrepitudes\ndecrescendo\ndecrescendos\ndecretal\ndecretals\ndecrial\ndecrials\ndecried\ndecrier\ndecriers\ndecries\ndecriminalization\ndecriminalizations\ndecriminalize\ndecriminalized\ndecriminalizes\ndecriminalizing\ndecrown\ndecrowned\ndecrowning\ndecrowns\ndecry\ndecrying\ndecrypt\ndecrypted\ndecrypting\ndecrypts\ndecuman\ndecumbencies\ndecumbency\ndecumbent\ndecuple\ndecupled\ndecuples\ndecupling\ndecuries\ndecurion\ndecurions\ndecurve\ndecurved\ndecurves\ndecurving\ndecury\ndedal\ndedans\ndedicate\ndedicated\ndedicatee\ndedicatees\ndedicates\ndedicating\ndedication\ndedications\ndedicative\ndedicator\ndedicators\ndedicatory\ndeduce\ndeduced\ndeduces\ndeducible\ndeducing\ndeduct\ndeducted\ndeductibility\ndeductible\ndeducting\ndeduction\ndeductions\ndeductive\ndeductively\ndeducts\ndee\ndeed\ndeeded\ndeedier\ndeediest\ndeeding\ndeedless\ndeeds\ndeedy\ndeejay\ndeejays\ndeem\ndeemed\ndeeming\ndeems\ndeemster\ndeemsters\ndeep\ndeepen\ndeepened\ndeepener\ndeepeners\ndeepening\ndeepens\ndeeper\ndeepest\ndeeply\ndeepness\ndeepnesses\ndeeps\ndeer\ndeerflies\ndeerfly\ndeers\ndeerskin\ndeerskins\ndeerweed\ndeerweeds\ndeeryard\ndeeryards\ndees\ndeet\ndeets\ndeewan\ndeewans\ndeface\ndefaced\ndefacement\ndefacements\ndefacer\ndefacers\ndefaces\ndefacing\ndefalcate\ndefalcated\ndefalcates\ndefalcating\ndefalcation\ndefalcations\ndefalcator\ndefalcators\ndefamation\ndefamations\ndefame\ndefamed\ndefamer\ndefamers\ndefames\ndefaming\ndefat\ndefats\ndefatted\ndefatting\ndefault\ndefaulted\ndefaulter\ndefaulters\ndefaulting\ndefaults\ndefeat\ndefeated\ndefeater\ndefeaters\ndefeating\ndefeatism\ndefeatist\ndefeatists\ndefeats\ndefecate\ndefecated\ndefecates\ndefecating\ndefecation\ndefecations\ndefect\ndefected\ndefecting\ndefection\ndefections\ndefective\ndefectively\ndefectiveness\ndefector\ndefectors\ndefects\ndefence\ndefences\ndefend\ndefendable\ndefendant\ndefendants\ndefended\ndefender\ndefenders\ndefending\ndefends\ndefense\ndefensed\ndefenseless\ndefenselessly\ndefenselessness\ndefenses\ndefensibility\ndefensible\ndefensibly\ndefensing\ndefensive\ndefensively\ndefensiveness\ndefensives\ndefer\ndeference\ndeferences\ndeferent\ndeferential\ndeferentially\ndeferents\ndeferment\ndeferments\ndeferrable\ndeferral\ndeferrals\ndeferred\ndeferrer\ndeferrers\ndeferring\ndefers\ndefi\ndefiance\ndefiances\ndefiant\ndefiantly\ndeficiencies\ndeficiency\ndeficient\ndeficiently\ndeficients\ndeficit\ndeficits\ndefied\ndefier\ndefiers\ndefies\ndefilade\ndefiladed\ndefilades\ndefilading\ndefile\ndefiled\ndefilement\ndefilements\ndefiler\ndefilers\ndefiles\ndefiling\ndefinable\ndefinably\ndefine\ndefined\ndefiner\ndefiners\ndefines\ndefining\ndefinite\ndefinitely\ndefiniteness\ndefinition\ndefinitional\ndefinitions\ndefinitive\ndefinitively\ndefinitiveness\ndefis\ndeflate\ndeflated\ndeflates\ndeflating\ndeflation\ndeflationary\ndeflations\ndeflator\ndeflators\ndeflea\ndefleaed\ndefleaing\ndefleas\ndeflect\ndeflectable\ndeflected\ndeflecting\ndeflection\ndeflections\ndeflective\ndeflector\ndeflectors\ndeflects\ndeflexed\ndeflower\ndeflowered\ndeflowering\ndeflowers\ndefoam\ndefoamed\ndefoamer\ndefoamers\ndefoaming\ndefoams\ndefog\ndefogged\ndefogger\ndefoggers\ndefogging\ndefogs\ndefoliant\ndefoliants\ndefoliate\ndefoliated\ndefoliates\ndefoliating\ndefoliation\ndefoliations\ndefoliator\ndefoliators\ndeforce\ndeforced\ndeforces\ndeforcing\ndeforest\ndeforestation\ndeforestations\ndeforested\ndeforesting\ndeforests\ndeform\ndeformation\ndeformations\ndeformed\ndeformer\ndeformers\ndeforming\ndeformities\ndeformity\ndeforms\ndefraud\ndefraudation\ndefraudations\ndefrauded\ndefrauder\ndefrauders\ndefrauding\ndefrauds\ndefray\ndefrayable\ndefrayal\ndefrayals\ndefrayed\ndefrayer\ndefrayers\ndefraying\ndefrays\ndefrock\ndefrocked\ndefrocking\ndefrocks\ndefrost\ndefrosted\ndefroster\ndefrosters\ndefrosting\ndefrosts\ndeft\ndefter\ndeftest\ndeftly\ndeftness\ndeftnesses\ndefunct\ndefuse\ndefused\ndefuses\ndefusing\ndefuze\ndefuzed\ndefuzes\ndefuzing\ndefy\ndefying\ndegage\ndegame\ndegames\ndegami\ndegamis\ndegas\ndegases\ndegassed\ndegasser\ndegassers\ndegasses\ndegassing\ndegauss\ndegaussed\ndegausser\ndegaussers\ndegausses\ndegaussing\ndegeneracies\ndegeneracy\ndegenerate\ndegenerated\ndegenerately\ndegenerateness\ndegenerates\ndegenerating\ndegeneration\ndegenerations\ndegenerative\ndegerm\ndegermed\ndegerming\ndegerms\ndeglaze\ndeglazed\ndeglazes\ndeglazing\ndegradation\ndegradations\ndegrade\ndegraded\ndegradedly\ndegrader\ndegraders\ndegrades\ndegrading\ndegradingly\ndegrease\ndegreased\ndegreases\ndegreasing\ndegree\ndegreed\ndegrees\ndegum\ndegummed\ndegumming\ndegums\ndegust\ndegusted\ndegusting\ndegusts\ndehisce\ndehisced\ndehisces\ndehiscing\ndehorn\ndehorned\ndehorner\ndehorners\ndehorning\ndehorns\ndehort\ndehorted\ndehorting\ndehorts\ndehumanization\ndehumanizations\ndehumanize\ndehumanized\ndehumanizes\ndehumanizing\ndehumidification\ndehumidified\ndehumidifier\ndehumidifiers\ndehumidifies\ndehumidify\ndehumidifying\ndehydrate\ndehydrated\ndehydrates\ndehydrating\ndehydration\ndehydrations\ndehydrator\ndehydrators\ndei\ndeice\ndeiced\ndeicer\ndeicers\ndeices\ndeicidal\ndeicide\ndeicides\ndeicing\ndeictic\ndeific\ndeifical\ndeification\ndeifications\ndeified\ndeifier\ndeifiers\ndeifies\ndeiform\ndeify\ndeifying\ndeign\ndeigned\ndeigning\ndeigns\ndeil\ndeils\ndeionize\ndeionized\ndeionizes\ndeionizing\ndeism\ndeisms\ndeist\ndeistic\ndeistical\ndeistically\ndeists\ndeities\ndeity\ndeject\ndejecta\ndejected\ndejectedly\ndejectedness\ndejecting\ndejection\ndejections\ndejects\ndejeuner\ndejeuners\ndekagram\ndekagrams\ndekare\ndekares\ndeke\ndeked\ndekes\ndeking\ndekko\ndel\ndelaine\ndelaines\ndelate\ndelated\ndelates\ndelating\ndelation\ndelations\ndelator\ndelators\ndelay\ndelayed\ndelayer\ndelayers\ndelaying\ndelays\ndele\ndelead\ndeleaded\ndeleading\ndeleads\ndelectability\ndelectable\ndelectably\ndelectation\ndelectations\ndeled\ndelegable\ndelegacies\ndelegacy\ndelegate\ndelegated\ndelegates\ndelegating\ndelegation\ndelegations\ndeleing\ndeles\ndelete\ndeleted\ndeleterious\ndeleteriously\ndeleteriousness\ndeletes\ndeleting\ndeletion\ndeletions\ndelf\ndelfs\ndelft\ndelfts\ndelftware\ndelftwares\ndeli\ndeliberate\ndeliberated\ndeliberately\ndeliberateness\ndeliberates\ndeliberating\ndeliberation\ndeliberations\ndeliberative\ndeliberatively\ndeliberativeness\ndelicacies\ndelicacy\ndelicate\ndelicately\ndelicateness\ndelicates\ndelicatessen\ndelicatessens\ndelicious\ndeliciously\ndeliciousness\ndelict\ndelicts\ndelight\ndelighted\ndelightedly\ndelightful\ndelightfully\ndelightfulness\ndelighting\ndelights\ndelightsome\ndelime\ndelimed\ndelimes\ndeliming\ndelimit\ndelimitation\ndelimitations\ndelimitative\ndelimited\ndelimiting\ndelimits\ndelineate\ndelineated\ndelineates\ndelineating\ndelineation\ndelineations\ndelineative\ndelineator\ndelineators\ndelinquencies\ndelinquency\ndelinquent\ndelinquently\ndelinquents\ndeliquesce\ndeliquesced\ndeliquescence\ndeliquescences\ndeliquesces\ndeliquescing\ndeliria\ndelirious\ndeliriously\ndeliriousness\ndelirium\ndeliriums\ndelis\ndelist\ndelisted\ndelisting\ndelists\ndeliver\ndeliverable\ndeliverance\ndeliverances\ndelivered\ndeliverer\ndeliverers\ndeliveries\ndelivering\ndelivers\ndelivery\ndell\ndellies\ndells\ndelly\ndelouse\ndeloused\ndelouses\ndelousing\ndelphinium\ndelphiniums\ndels\ndelta\ndeltaic\ndeltas\ndeltic\ndeltoid\ndeltoids\ndelude\ndeluded\ndeluder\ndeluders\ndeludes\ndeluding\ndeludingly\ndeluge\ndeluged\ndeluges\ndeluging\ndelusion\ndelusional\ndelusions\ndelusive\ndelusively\ndelusiveness\ndelusory\ndeluster\ndelustered\ndelustering\ndelusters\ndeluxe\ndelve\ndelved\ndelver\ndelvers\ndelves\ndelving\ndemagnetization\ndemagnetizations\ndemagnetize\ndemagnetized\ndemagnetizer\ndemagnetizers\ndemagnetizes\ndemagnetizing\ndemagog\ndemagogic\ndemagogical\ndemagogically\ndemagogies\ndemagogs\ndemagogue\ndemagoguery\ndemagogues\ndemagogy\ndemand\ndemandable\ndemanded\ndemander\ndemanders\ndemanding\ndemandingly\ndemands\ndemarcate\ndemarcated\ndemarcates\ndemarcating\ndemarcation\ndemarcations\ndemarche\ndemarches\ndemark\ndemarked\ndemarking\ndemarks\ndemast\ndemasted\ndemasting\ndemasts\ndematerialization\ndematerializations\ndematerialize\ndematerialized\ndematerializes\ndematerializing\ndeme\ndemean\ndemeaned\ndemeaning\ndemeanor\ndemeanors\ndemeans\ndement\ndemented\ndementedly\ndementedness\ndementia\ndementias\ndementing\ndements\ndemerit\ndemerited\ndemeriting\ndemerits\ndemes\ndemesne\ndemesnes\ndemies\ndemigod\ndemigoddess\ndemigoddesses\ndemigods\ndemijohn\ndemijohns\ndemilitarization\ndemilitarizations\ndemilitarize\ndemilitarized\ndemilitarizes\ndemilitarizing\ndemilune\ndemilunes\ndemimonde\ndemimondes\ndemirep\ndemireps\ndemise\ndemised\ndemises\ndemising\ndemit\ndemitasse\ndemitasses\ndemits\ndemitted\ndemitting\ndemiurge\ndemiurges\ndemivolt\ndemivolts\ndemo\ndemob\ndemobbed\ndemobbing\ndemobilization\ndemobilizations\ndemobilize\ndemobilized\ndemobilizes\ndemobilizing\ndemobs\ndemocracies\ndemocracy\ndemocrat\ndemocratic\ndemocratically\ndemocratization\ndemocratizations\ndemocratize\ndemocratized\ndemocratizes\ndemocratizing\ndemocrats\ndemode\ndemoded\ndemodulate\ndemodulated\ndemodulates\ndemodulating\ndemodulation\ndemodulations\ndemodulator\ndemodulators\ndemographer\ndemographers\ndemographic\ndemographically\ndemographics\ndemolish\ndemolished\ndemolisher\ndemolishers\ndemolishes\ndemolishing\ndemolishment\ndemolishments\ndemolition\ndemolitionist\ndemolitionists\ndemolitions\ndemon\ndemoness\ndemonesses\ndemonetization\ndemonetizations\ndemonetize\ndemonetized\ndemonetizes\ndemonetizing\ndemoniac\ndemoniacal\ndemoniacally\ndemoniacs\ndemonian\ndemonic\ndemonically\ndemonise\ndemonised\ndemonises\ndemonising\ndemonism\ndemonisms\ndemonist\ndemonists\ndemonize\ndemonized\ndemonizes\ndemonizing\ndemonology\ndemons\ndemonstrability\ndemonstrable\ndemonstrableness\ndemonstrably\ndemonstrate\ndemonstrated\ndemonstrates\ndemonstrating\ndemonstration\ndemonstrational\ndemonstrations\ndemonstrative\ndemonstratively\ndemonstrativeness\ndemonstrator\ndemonstrators\ndemoralization\ndemoralizations\ndemoralize\ndemoralized\ndemoralizer\ndemoralizers\ndemoralizes\ndemoralizing\ndemos\ndemoses\ndemote\ndemoted\ndemotes\ndemotic\ndemotics\ndemoting\ndemotion\ndemotions\ndemotist\ndemotists\ndemount\ndemountable\ndemounted\ndemounting\ndemounts\ndempster\ndempsters\ndemur\ndemure\ndemurely\ndemureness\ndemurer\ndemurest\ndemurrage\ndemurrages\ndemurral\ndemurrals\ndemurred\ndemurrer\ndemurrers\ndemurring\ndemurs\ndemy\ndemythologization\ndemythologizations\ndemythologize\ndemythologized\ndemythologizes\ndemythologizing\nden\ndenarii\ndenarius\ndenary\ndenationalization\ndenationalizations\ndenationalize\ndenationalized\ndenationalizes\ndenationalizing\ndenaturalization\ndenaturalizations\ndenaturalize\ndenaturalized\ndenaturalizes\ndenaturalizing\ndenaturant\ndenaturants\ndenaturation\ndenaturations\ndenature\ndenatured\ndenatures\ndenaturing\ndenazified\ndenazifies\ndenazify\ndenazifying\ndendrite\ndendrites\ndendroid\ndendron\ndendrons\ndene\ndenes\ndengue\ndengues\ndeniable\ndeniably\ndenial\ndenials\ndenied\ndenier\ndeniers\ndenies\ndenigrate\ndenigrated\ndenigrates\ndenigrating\ndenigration\ndenigrations\ndenigrator\ndenigrators\ndenim\ndenims\ndenizen\ndenizened\ndenizening\ndenizens\ndenned\ndenning\ndenominate\ndenominated\ndenominates\ndenominating\ndenomination\ndenominational\ndenominationalism\ndenominationally\ndenominations\ndenominative\ndenominator\ndenominators\ndenotation\ndenotations\ndenotative\ndenote\ndenoted\ndenotement\ndenotements\ndenotes\ndenoting\ndenotive\ndenouement\ndenouements\ndenounce\ndenounced\ndenouncement\ndenouncements\ndenouncer\ndenouncers\ndenounces\ndenouncing\ndens\ndense\ndensely\ndenseness\ndenser\ndensest\ndensified\ndensifies\ndensify\ndensifying\ndensities\ndensity\ndent\ndental\ndentalia\ndentally\ndentals\ndentate\ndentated\ndented\ndenticle\ndenticles\ndentifrice\ndentifrices\ndentil\ndentils\ndentin\ndentinal\ndentine\ndentines\ndenting\ndentins\ndentist\ndentistry\ndentists\ndentition\ndentitions\ndentoid\ndents\ndentural\ndenture\ndentures\ndenudate\ndenudated\ndenudates\ndenudating\ndenudation\ndenudations\ndenude\ndenuded\ndenuder\ndenuders\ndenudes\ndenuding\ndenunciation\ndenunciations\ndenunciative\ndenunciatory\ndeny\ndenying\ndeodand\ndeodands\ndeodar\ndeodara\ndeodaras\ndeodars\ndeodorant\ndeodorants\ndeodorization\ndeodorizations\ndeodorize\ndeodorized\ndeodorizer\ndeodorizers\ndeodorizes\ndeodorizing\ndepaint\ndepainted\ndepainting\ndepaints\ndepart\ndeparted\ndeparting\ndepartment\ndepartmental\ndepartmentalization\ndepartmentalizations\ndepartmentalize\ndepartmentalized\ndepartmentalizes\ndepartmentalizing\ndepartmentally\ndepartments\ndeparts\ndeparture\ndepartures\ndepend\ndependability\ndependable\ndependableness\ndependably\ndepended\ndependence\ndependences\ndependencies\ndependency\ndependent\ndependently\ndependents\ndepending\ndepends\ndeperm\ndepermed\ndeperming\ndeperms\ndepict\ndepicted\ndepicter\ndepicters\ndepicting\ndepiction\ndepictions\ndepictor\ndepictors\ndepicts\ndepilate\ndepilated\ndepilates\ndepilating\ndepilatories\ndepilatory\ndeplane\ndeplaned\ndeplanes\ndeplaning\ndeplete\ndepleted\ndepletes\ndepleting\ndepletion\ndepletions\ndepletive\ndeplorable\ndeplorableness\ndeplorably\ndeplore\ndeplored\ndeplorer\ndeplorers\ndeplores\ndeploring\ndeploy\ndeployed\ndeploying\ndeployment\ndeployments\ndeploys\ndeplume\ndeplumed\ndeplumes\ndepluming\ndepolish\ndepolished\ndepolishes\ndepolishing\ndepone\ndeponed\ndeponent\ndeponents\ndepones\ndeponing\ndepopulate\ndepopulated\ndepopulates\ndepopulating\ndepopulation\ndepopulations\ndeport\ndeportable\ndeportation\ndeportations\ndeported\ndeportee\ndeportees\ndeporting\ndeportment\ndeportments\ndeports\ndeposal\ndeposals\ndepose\ndeposed\ndeposer\ndeposers\ndeposes\ndeposing\ndeposit\ndepositaries\ndepositary\ndeposited\ndepositing\ndeposition\ndepositional\ndepositions\ndepositor\ndepositories\ndepositors\ndepository\ndeposits\ndepot\ndepots\ndepravation\ndepravations\ndeprave\ndepraved\ndepravedly\ndepravedness\ndepraver\ndepravers\ndepraves\ndepraving\ndepravities\ndepravity\ndeprecate\ndeprecated\ndeprecates\ndeprecating\ndeprecatingly\ndeprecation\ndeprecations\ndeprecatorily\ndeprecatory\ndepreciable\ndepreciate\ndepreciated\ndepreciates\ndepreciating\ndepreciatingly\ndepreciation\ndepreciations\ndepreciative\ndepreciator\ndepreciators\ndepreciatory\ndepredate\ndepredated\ndepredates\ndepredating\ndepredation\ndepredations\ndepredator\ndepredators\ndepredatory\ndepress\ndepressant\ndepressants\ndepressed\ndepresses\ndepressible\ndepressing\ndepressingly\ndepression\ndepressions\ndepressive\ndepressively\ndepressor\ndepressors\ndepressurization\ndepressurizations\ndepressurize\ndepressurized\ndepressurizes\ndepressurizing\ndeprival\ndeprivals\ndeprivation\ndeprivations\ndeprive\ndeprived\ndepriver\ndeprivers\ndeprives\ndepriving\ndepside\ndepsides\ndepth\ndepths\ndepurate\ndepurated\ndepurates\ndepurating\ndeputation\ndeputations\ndepute\ndeputed\ndeputes\ndeputies\ndeputing\ndeputize\ndeputized\ndeputizes\ndeputizing\ndeputy\nderaign\nderaigned\nderaigning\nderaigns\nderail\nderailed\nderailing\nderailment\nderailments\nderails\nderange\nderanged\nderangement\nderangements\nderanges\nderanging\nderat\nderats\nderatted\nderatting\nderay\nderays\nderbies\nderby\ndere\nderegulate\nderegulated\nderegulates\nderegulation\nderegulations\nderelict\ndereliction\nderelictions\nderelicts\nderide\nderided\nderider\nderiders\nderides\nderiding\nderidingly\nderinger\nderingers\nderision\nderisions\nderisive\nderisively\nderisiveness\nderisory\nderivable\nderivate\nderivates\nderivation\nderivational\nderivations\nderivative\nderivatively\nderivativeness\nderivatives\nderive\nderived\nderiver\nderivers\nderives\nderiving\nderm\nderma\ndermal\ndermas\ndermatological\ndermatologist\ndermatologists\ndermatology\ndermic\ndermis\ndermises\ndermoid\nderms\ndernier\nderogate\nderogated\nderogates\nderogating\nderogation\nderogations\nderogative\nderogatorily\nderogatory\nderrick\nderricks\nderriere\nderrieres\nderries\nderringer\nderringers\nderris\nderrises\nderry\ndervish\ndervishes\ndes\ndesalt\ndesalted\ndesalter\ndesalters\ndesalting\ndesalts\ndesand\ndesanded\ndesanding\ndesands\ndescant\ndescanted\ndescanting\ndescants\ndescend\ndescendant\ndescendants\ndescended\ndescendent\ndescendents\ndescending\ndescends\ndescent\ndescents\ndescribable\ndescribe\ndescribed\ndescriber\ndescribers\ndescribes\ndescribing\ndescried\ndescrier\ndescriers\ndescries\ndescription\ndescriptions\ndescriptive\ndescriptively\ndescriptiveness\ndescriptor\ndescriptors\ndescry\ndescrying\ndesecrate\ndesecrated\ndesecrater\ndesecraters\ndesecrates\ndesecrating\ndesecration\ndesecrations\ndesecrator\ndesecrators\ndesegregate\ndesegregated\ndesegregates\ndesegregating\ndesegregation\ndesegregations\ndeselect\ndeselected\ndeselecting\ndeselects\ndesensitization\ndesensitizations\ndesensitize\ndesensitized\ndesensitizer\ndesensitizers\ndesensitizes\ndesensitizing\ndesert\ndeserted\ndeserter\ndeserters\ndesertic\ndeserting\ndesertion\ndesertions\ndeserts\ndeserve\ndeserved\ndeservedly\ndeservedness\ndeserver\ndeservers\ndeserves\ndeserving\ndesex\ndesexed\ndesexes\ndesexing\ndesiccant\ndesiccants\ndesiccate\ndesiccated\ndesiccates\ndesiccating\ndesiccation\ndesiccations\ndesiccative\ndesiccator\ndesiccators\ndesign\ndesignate\ndesignated\ndesignates\ndesignating\ndesignation\ndesignations\ndesignative\ndesignator\ndesignators\ndesignatory\ndesigned\ndesignedly\ndesignee\ndesignees\ndesigner\ndesigners\ndesigning\ndesigns\ndesilver\ndesilvered\ndesilvering\ndesilvers\ndesinent\ndesirability\ndesirable\ndesirableness\ndesirables\ndesirably\ndesire\ndesired\ndesirer\ndesirers\ndesires\ndesiring\ndesirous\ndesirously\ndesirousness\ndesist\ndesistance\ndesisted\ndesisting\ndesists\ndesk\ndeskman\ndeskmen\ndesks\ndesman\ndesmans\ndesmid\ndesmids\ndesmoid\ndesmoids\ndesolate\ndesolated\ndesolately\ndesolater\ndesolaters\ndesolates\ndesolating\ndesolation\ndesolations\ndesolator\ndesolators\ndesorb\ndesorbed\ndesorbing\ndesorbs\ndespair\ndespaired\ndespairing\ndespairingly\ndespairs\ndespatch\ndespatched\ndespatcher\ndespatchers\ndespatches\ndespatching\ndesperado\ndesperadoes\ndesperados\ndesperate\ndesperately\ndesperateness\ndesperation\ndespicable\ndespicableness\ndespicably\ndespise\ndespised\ndespiser\ndespisers\ndespises\ndespising\ndespite\ndespited\ndespiteful\ndespitefully\ndespitefulness\ndespites\ndespiting\ndespoil\ndespoiled\ndespoiler\ndespoilers\ndespoiling\ndespoilment\ndespoilments\ndespoils\ndespoliation\ndespoliations\ndespond\ndesponded\ndespondence\ndespondencies\ndespondency\ndespondent\ndespondently\ndesponding\ndesponds\ndespot\ndespotic\ndespotically\ndespotism\ndespotisms\ndespots\ndessert\ndesserts\ndestabilization\ndestabilizations\ndestabilize\ndestabilized\ndestabilizes\ndestabilizing\ndestain\ndestained\ndestaining\ndestains\ndestination\ndestinations\ndestine\ndestined\ndestines\ndestinies\ndestining\ndestiny\ndestitute\ndestitution\ndestitutions\ndestrier\ndestriers\ndestroy\ndestroyed\ndestroyer\ndestroyers\ndestroying\ndestroys\ndestruct\ndestructed\ndestructible\ndestructing\ndestruction\ndestructions\ndestructive\ndestructively\ndestructiveness\ndestructor\ndestructors\ndestructs\ndesuetude\ndesugar\ndesugared\ndesugaring\ndesugars\ndesulfur\ndesulfured\ndesulfuring\ndesulfurs\ndesultorily\ndesultoriness\ndesultory\ndetach\ndetachability\ndetachable\ndetachably\ndetached\ndetachedly\ndetachedness\ndetacher\ndetachers\ndetaches\ndetaching\ndetachment\ndetachments\ndetail\ndetailed\ndetailer\ndetailers\ndetailing\ndetails\ndetain\ndetained\ndetainee\ndetainees\ndetainer\ndetainers\ndetaining\ndetainment\ndetainments\ndetains\ndetect\ndetectable\ndetected\ndetecter\ndetecters\ndetecting\ndetection\ndetections\ndetective\ndetectives\ndetector\ndetectors\ndetects\ndetent\ndetente\ndetentes\ndetention\ndetentions\ndetents\ndeter\ndeterge\ndeterged\ndetergency\ndetergent\ndetergents\ndeterger\ndetergers\ndeterges\ndeterging\ndeteriorate\ndeteriorated\ndeteriorates\ndeteriorating\ndeterioration\ndeteriorations\ndeteriorative\ndeterminable\ndeterminableness\ndeterminably\ndeterminant\ndeterminants\ndeterminate\ndeterminates\ndetermination\ndeterminations\ndeterminative\ndetermine\ndetermined\ndeterminedly\ndeterminedness\ndeterminer\ndeterminers\ndetermines\ndetermining\ndeterminism\ndeterminist\ndeterministic\ndeterministically\ndeterminists\ndeterred\ndeterrence\ndeterrences\ndeterrent\ndeterrently\ndeterrents\ndeterrer\ndeterrers\ndeterring\ndeters\ndetersive\ndetersives\ndetest\ndetestable\ndetestableness\ndetestably\ndetestation\ndetestations\ndetested\ndetester\ndetesters\ndetesting\ndetests\ndethrone\ndethroned\ndethronement\ndethronements\ndethrones\ndethroning\ndetick\ndeticked\ndeticker\ndetickers\ndeticking\ndeticks\ndetinue\ndetinues\ndetonate\ndetonated\ndetonates\ndetonating\ndetonation\ndetonations\ndetonative\ndetonator\ndetonators\ndetour\ndetoured\ndetouring\ndetours\ndetox\ndetoxified\ndetoxifies\ndetoxify\ndetoxifying\ndetract\ndetracted\ndetracting\ndetractingly\ndetraction\ndetractions\ndetractive\ndetractively\ndetractor\ndetractors\ndetracts\ndetrain\ndetrained\ndetraining\ndetrainment\ndetrainments\ndetrains\ndetriment\ndetrimental\ndetrimentally\ndetriments\ndetrital\ndetritus\ndetrude\ndetruded\ndetrudes\ndetruding\ndeuce\ndeuced\ndeucedly\ndeuces\ndeucing\ndeuteric\ndeuterium\ndeuteron\ndeuterons\ndeutschemark\ndeutschemarks\ndeutzia\ndeutzias\ndev\ndeva\ndevaluate\ndevaluated\ndevaluates\ndevaluating\ndevaluation\ndevaluations\ndevalue\ndevalued\ndevalues\ndevaluing\ndevas\ndevastate\ndevastated\ndevastates\ndevastating\ndevastation\ndevastations\ndevastative\ndevastator\ndevastators\ndevein\ndeveined\ndeveining\ndeveins\ndevel\ndeveled\ndeveling\ndevelop\ndevelopable\ndevelope\ndeveloped\ndeveloper\ndevelopers\ndevelopes\ndeveloping\ndevelopment\ndevelopmental\ndevelopmentally\ndevelopments\ndevelops\ndevels\ndevest\ndevested\ndevesting\ndevests\ndeviance\ndeviances\ndeviancies\ndeviancy\ndeviant\ndeviants\ndeviate\ndeviated\ndeviates\ndeviating\ndeviation\ndeviations\ndeviator\ndeviators\ndeviatory\ndevice\ndevices\ndevil\ndeviled\ndeviling\ndevilish\ndevilishly\ndevilishness\ndevilkin\ndevilkins\ndevilled\ndevilling\ndevilment\ndevilments\ndevilries\ndevilry\ndevils\ndeviltries\ndeviltry\ndevious\ndeviously\ndeviousness\ndevisal\ndevisals\ndevise\ndevised\ndevisee\ndevisees\ndeviser\ndevisers\ndevises\ndevising\ndevisor\ndevisors\ndevitalize\ndevitalized\ndevitalizes\ndevitalizing\ndevoice\ndevoiced\ndevoices\ndevoicing\ndevoid\ndevoir\ndevoirs\ndevolution\ndevolutionary\ndevolutionist\ndevolutions\ndevolve\ndevolved\ndevolves\ndevolving\ndevon\ndevons\ndevote\ndevoted\ndevotedly\ndevotedness\ndevotee\ndevotees\ndevotes\ndevoting\ndevotion\ndevotional\ndevotionally\ndevotionals\ndevotions\ndevour\ndevoured\ndevourer\ndevourers\ndevouring\ndevours\ndevout\ndevoutly\ndevoutness\ndevs\ndew\ndewan\ndewans\ndewar\ndewater\ndewatered\ndewatering\ndewaters\ndewax\ndewaxed\ndewaxes\ndewaxing\ndewberries\ndewberry\ndewclaw\ndewclaws\ndewdrop\ndewdrops\ndewed\ndewfall\ndewfalls\ndewier\ndewiest\ndewily\ndewiness\ndewinesses\ndewing\ndewlap\ndewlaps\ndewless\ndewool\ndewooled\ndewooling\ndewools\ndeworm\ndewormed\ndeworming\ndeworms\ndews\ndewy\ndex\ndexes\ndexie\ndexies\ndexter\ndexterities\ndexterity\ndexterous\ndexterously\ndexterousness\ndextral\ndextran\ndextrans\ndextrin\ndextrine\ndextrines\ndextrins\ndextro\ndextrose\ndextroses\ndextrous\ndexy\ndey\ndeys\ndezinc\ndezinced\ndezincing\ndezincked\ndezincking\ndezincs\ndhak\ndhaks\ndhal\ndhals\ndharma\ndharmas\ndharmic\ndharna\ndharnas\ndhobi\ndhole\ndholes\ndhoolies\ndhooly\ndhoora\ndhooras\ndhooti\ndhootie\ndhooties\ndhootis\ndhoti\ndhotis\ndhourra\ndhourras\ndhow\ndhows\ndhurna\ndhurnas\ndhuti\ndhutis\ndiabase\ndiabases\ndiabasic\ndiabetes\ndiabetic\ndiabetics\ndiableries\ndiablery\ndiabolic\ndiabolical\ndiabolically\ndiabolicalness\ndiabolism\ndiabolist\ndiabolists\ndiabolo\ndiabolos\ndiacetyl\ndiacetyls\ndiacid\ndiacidic\ndiacids\ndiaconal\ndiacritic\ndiacritical\ndiacritics\ndiadem\ndiademed\ndiademing\ndiadems\ndiagnosable\ndiagnose\ndiagnosed\ndiagnoses\ndiagnosing\ndiagnosis\ndiagnostic\ndiagnostically\ndiagnostician\ndiagnosticians\ndiagnostics\ndiagonal\ndiagonally\ndiagonals\ndiagram\ndiagramed\ndiagraming\ndiagrammatic\ndiagrammatically\ndiagrammed\ndiagramming\ndiagrams\ndiagraph\ndiagraphs\ndial\ndialect\ndialectal\ndialectally\ndialectic\ndialectical\ndialectically\ndialectician\ndialecticians\ndialectics\ndialectologist\ndialectologists\ndialectology\ndialects\ndialed\ndialer\ndialers\ndialing\ndialings\ndialist\ndialists\ndiallage\ndiallages\ndialled\ndiallel\ndialler\ndiallers\ndialling\ndiallings\ndiallist\ndiallists\ndialog\ndialoged\ndialoger\ndialogers\ndialogged\ndialogging\ndialogic\ndialogical\ndialogically\ndialoging\ndialogist\ndialogistic\ndialogists\ndialogs\ndialogue\ndialogued\ndialogues\ndialoguing\ndials\ndialyse\ndialysed\ndialyser\ndialysers\ndialyses\ndialysing\ndialysis\ndialytic\ndialyzable\ndialyze\ndialyzed\ndialyzer\ndialyzers\ndialyzes\ndialyzing\ndiamagnet\ndiamagnetic\ndiamagnetism\ndiameter\ndiameters\ndiametric\ndiametrical\ndiametrically\ndiamide\ndiamides\ndiamin\ndiamine\ndiamines\ndiamins\ndiamond\ndiamondback\ndiamondbacks\ndiamonded\ndiamonding\ndiamonds\ndianthus\ndianthuses\ndiapason\ndiapasons\ndiapause\ndiapaused\ndiapauses\ndiapausing\ndiaper\ndiapered\ndiapering\ndiapers\ndiaphanous\ndiaphanously\ndiaphanousness\ndiaphone\ndiaphones\ndiaphonies\ndiaphony\ndiaphragm\ndiaphragmatic\ndiaphragmatically\ndiaphragms\ndiapir\ndiapiric\ndiapirs\ndiapsid\ndiarchic\ndiarchies\ndiarchy\ndiaries\ndiarist\ndiarists\ndiarrhea\ndiarrheas\ndiarrhoea\ndiarrhoeas\ndiary\ndiaspora\ndiasporas\ndiaspore\ndiaspores\ndiastase\ndiastases\ndiastema\ndiastemata\ndiaster\ndiasters\ndiastole\ndiastoles\ndiastolic\ndiastral\ndiastrophism\ndiastrophisms\ndiatom\ndiatomic\ndiatomite\ndiatoms\ndiatonic\ndiatonically\ndiatribe\ndiatribes\ndiazepam\ndiazepams\ndiazin\ndiazine\ndiazines\ndiazins\ndiazo\ndiazole\ndiazoles\ndib\ndibasic\ndibbed\ndibber\ndibbers\ndibbing\ndibble\ndibbled\ndibbler\ndibblers\ndibbles\ndibbling\ndibbuk\ndibbukim\ndibbuks\ndibs\ndicast\ndicastic\ndicasts\ndice\ndiced\ndicentra\ndicentras\ndicer\ndicers\ndices\ndicey\ndichasia\ndichotic\ndichotomies\ndichotomist\ndichotomists\ndichotomization\ndichotomizations\ndichotomize\ndichotomized\ndichotomizes\ndichotomizing\ndichotomous\ndichotomously\ndichotomy\ndichroic\ndicier\ndiciest\ndicing\ndick\ndickens\ndickenses\ndicker\ndickered\ndickering\ndickers\ndickey\ndickeys\ndickie\ndickies\ndicks\ndicky\ndiclinies\ndicliny\ndicot\ndicots\ndicotyl\ndicotyledon\ndicotyledonous\ndicotyledons\ndicotyls\ndicrotal\ndicrotic\ndicta\ndictate\ndictated\ndictates\ndictating\ndictation\ndictations\ndictator\ndictatorial\ndictatorially\ndictatorialness\ndictators\ndictatorship\ndictatorships\ndiction\ndictionaries\ndictionary\ndictions\ndictum\ndictums\ndicty\ndicyclic\ndicyclies\ndicycly\ndid\ndidact\ndidactic\ndidactical\ndidactically\ndidacticism\ndidactics\ndidacts\ndidactyl\ndidapper\ndidappers\ndiddle\ndiddled\ndiddler\ndiddlers\ndiddles\ndiddling\ndidie\ndidies\ndido\ndidoes\ndidos\ndidst\ndidy\ndidymium\ndidymiums\ndidymous\ndidynamies\ndidynamy\ndie\ndieback\ndiebacks\ndiecious\ndied\ndiehard\ndiehards\ndieing\ndiel\ndieldrin\ndieldrins\ndielectric\ndielectrics\ndiemaker\ndiemakers\ndiene\ndienes\ndiereses\ndieresis\ndieretic\ndies\ndiesel\ndiesels\ndieses\ndiesis\ndiester\ndiesters\ndiestock\ndiestocks\ndiestrum\ndiestrums\ndiestrus\ndiestruses\ndiet\ndietaries\ndietary\ndieted\ndieter\ndieters\ndietetic\ndietetics\ndietician\ndieticians\ndieting\ndietitian\ndietitians\ndiets\ndiffer\ndiffered\ndifference\ndifferences\ndifferent\ndifferentia\ndifferentiability\ndifferentiable\ndifferentiae\ndifferential\ndifferentials\ndifferentiate\ndifferentiated\ndifferentiates\ndifferentiating\ndifferentiation\ndifferentiations\ndifferently\ndiffering\ndiffers\ndifficult\ndifficulties\ndifficultly\ndifficulty\ndiffidence\ndiffidences\ndiffident\ndiffidently\ndiffract\ndiffracted\ndiffracting\ndiffraction\ndiffractions\ndiffracts\ndiffuse\ndiffused\ndiffusely\ndiffuseness\ndiffuser\ndiffusers\ndiffuses\ndiffusibilities\ndiffusibility\ndiffusible\ndiffusing\ndiffusion\ndiffusions\ndiffusive\ndiffusively\ndiffusiveness\ndiffusor\ndiffusors\ndig\ndigamies\ndigamist\ndigamists\ndigamma\ndigammas\ndigamous\ndigamy\ndigest\ndigested\ndigester\ndigesters\ndigestibility\ndigestible\ndigesting\ndigestion\ndigestions\ndigestive\ndigestively\ndigestor\ndigestors\ndigests\ndigged\ndigger\ndiggers\ndigging\ndiggings\ndight\ndighted\ndighting\ndights\ndigit\ndigital\ndigitalis\ndigitalization\ndigitalizations\ndigitalize\ndigitalized\ndigitalizes\ndigitalizing\ndigitally\ndigitals\ndigitate\ndigitize\ndigitized\ndigitizes\ndigitizing\ndigits\ndiglot\ndiglots\ndignified\ndignifies\ndignify\ndignifying\ndignitaries\ndignitary\ndignities\ndignity\ndigoxin\ndigoxins\ndigraph\ndigraphs\ndigress\ndigressed\ndigresses\ndigressing\ndigression\ndigressional\ndigressions\ndigressive\ndigressively\ndigressiveness\ndigs\ndihedral\ndihedrals\ndihedron\ndihedrons\ndihybrid\ndihybrids\ndihydric\ndikdik\ndikdiks\ndike\ndiked\ndiker\ndikers\ndikes\ndikey\ndiking\ndiktat\ndiktats\ndilapidate\ndilapidated\ndilapidates\ndilapidating\ndilapidation\ndilapidations\ndilatable\ndilatant\ndilatants\ndilatate\ndilatation\ndilatational\ndilatations\ndilate\ndilated\ndilater\ndilaters\ndilates\ndilating\ndilation\ndilations\ndilative\ndilator\ndilatorily\ndilatoriness\ndilators\ndilatory\ndildo\ndildoe\ndildoes\ndildos\ndilemma\ndilemmas\ndilemmatic\ndilemmic\ndilettante\ndilettantes\ndilettantish\ndilettantism\ndilettantisms\ndiligence\ndiligences\ndiligent\ndiligently\ndill\ndillies\ndills\ndilly\ndillydallied\ndillydallies\ndillydally\ndillydallying\ndiluent\ndiluents\ndilute\ndiluted\ndiluteness\ndiluter\ndiluters\ndilutes\ndiluting\ndilution\ndilutions\ndilutive\ndilutor\ndilutors\ndiluvia\ndiluvial\ndiluvian\ndiluvion\ndiluvions\ndiluvium\ndiluviums\ndim\ndime\ndimension\ndimensional\ndimensionality\ndimensionally\ndimensioned\ndimensioning\ndimensionless\ndimensions\ndimer\ndimeric\ndimerism\ndimerisms\ndimerize\ndimerized\ndimerizes\ndimerizing\ndimerous\ndimers\ndimes\ndimeter\ndimeters\ndimethyl\ndimethyls\ndimetric\ndiminish\ndiminishable\ndiminished\ndiminishes\ndiminishing\ndiminishment\ndiminishments\ndiminuendo\ndiminuendos\ndiminution\ndiminutions\ndiminutive\ndiminutively\ndiminutiveness\ndiminutives\ndimities\ndimity\ndimly\ndimmable\ndimmed\ndimmer\ndimmers\ndimmest\ndimming\ndimness\ndimnesses\ndimorph\ndimorphism\ndimorphisms\ndimorphs\ndimout\ndimouts\ndimple\ndimpled\ndimples\ndimplier\ndimpliest\ndimpling\ndimply\ndims\ndimwit\ndimwits\ndin\ndinar\ndinars\ndindle\ndindled\ndindles\ndindling\ndine\ndined\ndiner\ndineric\ndinero\ndineros\ndiners\ndines\ndinette\ndinettes\nding\ndingbat\ndingbats\ndingdong\ndingdonged\ndingdonging\ndingdongs\ndinge\ndinged\ndingey\ndingeys\ndinghies\ndinghy\ndingier\ndingies\ndingiest\ndingily\ndinginess\ndinging\ndingle\ndingles\ndingo\ndingoes\ndings\ndingus\ndinguses\ndingy\ndining\ndink\ndinked\ndinkey\ndinkeys\ndinkier\ndinkies\ndinkiest\ndinking\ndinkly\ndinks\ndinkum\ndinky\ndinned\ndinner\ndinners\ndinnerware\ndinning\ndinosaur\ndinosaurs\ndins\ndint\ndinted\ndinting\ndints\ndiobol\ndiobolon\ndiobolons\ndiobols\ndiocesan\ndiocesans\ndiocese\ndioceses\ndiode\ndiodes\ndioecism\ndioecisms\ndioicous\ndiol\ndiolefin\ndiolefins\ndiols\ndiopside\ndiopsides\ndioptase\ndioptases\ndiopter\ndiopters\ndioptral\ndioptre\ndioptres\ndioptric\ndiorama\ndioramas\ndioramic\ndiorite\ndiorites\ndioritic\ndioxane\ndioxanes\ndioxid\ndioxide\ndioxides\ndioxids\ndip\ndiphase\ndiphasic\ndiphenyl\ndiphenyls\ndiphtheria\ndiphtherial\ndiphtheritic\ndiphtheroid\ndiphtheroids\ndiphthong\ndiphthongal\ndiphthongs\ndiplegia\ndiplegias\ndiplex\ndiploe\ndiploes\ndiploic\ndiploid\ndiploidies\ndiploids\ndiploidy\ndiploma\ndiplomacies\ndiplomacy\ndiplomaed\ndiplomaing\ndiplomas\ndiplomat\ndiplomata\ndiplomate\ndiplomates\ndiplomatic\ndiplomatically\ndiplomats\ndiplont\ndiplonts\ndiplopia\ndiplopias\ndiplopic\ndiplopod\ndiplopods\ndiploses\ndiplosis\ndipnoan\ndipnoans\ndipodic\ndipodies\ndipody\ndipolar\ndipole\ndipoles\ndippable\ndipped\ndipper\ndippers\ndippier\ndippiest\ndipping\ndippy\ndips\ndipsades\ndipsas\ndipso\ndipsomania\ndipsomaniac\ndipsomaniacal\ndipsomaniacs\ndipsomanias\ndipstick\ndipsticks\ndipt\ndiptera\ndipteral\ndipteran\ndipterans\ndipteron\ndiptyca\ndiptycas\ndiptych\ndiptychs\ndiquat\ndiquats\ndirdum\ndirdums\ndire\ndirect\ndirected\ndirecter\ndirectest\ndirecting\ndirection\ndirectional\ndirections\ndirective\ndirectives\ndirectivity\ndirectly\ndirectness\ndirector\ndirectorate\ndirectorates\ndirectorial\ndirectories\ndirectors\ndirectorship\ndirectorships\ndirectory\ndirects\ndireful\ndirefully\ndirely\ndireness\ndirenesses\ndirer\ndirest\ndirge\ndirgeful\ndirges\ndirham\ndirhams\ndirigible\ndirigibles\ndiriment\ndirk\ndirked\ndirking\ndirks\ndirl\ndirled\ndirling\ndirls\ndirndl\ndirndls\ndirt\ndirtied\ndirtier\ndirties\ndirtiest\ndirtily\ndirtiness\ndirts\ndirty\ndirtying\ndisabilities\ndisability\ndisable\ndisabled\ndisablement\ndisablements\ndisables\ndisabling\ndisabuse\ndisabused\ndisabuses\ndisabusing\ndisadvantage\ndisadvantaged\ndisadvantageous\ndisadvantageously\ndisadvantageousness\ndisadvantages\ndisadvantaging\ndisaffect\ndisaffected\ndisaffecting\ndisaffection\ndisaffections\ndisaffects\ndisagree\ndisagreeable\ndisagreeableness\ndisagreeably\ndisagreed\ndisagreeing\ndisagreement\ndisagreements\ndisagrees\ndisallow\ndisallowance\ndisallowances\ndisallowed\ndisallowing\ndisallows\ndisambiguate\ndisambiguated\ndisambiguates\ndisambiguating\ndisambiguation\ndisambiguations\ndisannul\ndisannulled\ndisannulling\ndisannuls\ndisappear\ndisappearance\ndisappearances\ndisappeared\ndisappearing\ndisappears\ndisappoint\ndisappointed\ndisappointedly\ndisappointing\ndisappointingly\ndisappointment\ndisappointments\ndisappoints\ndisapprobation\ndisapprobations\ndisapproval\ndisapprovals\ndisapprove\ndisapproved\ndisapprover\ndisapprovers\ndisapproves\ndisapproving\ndisapprovingly\ndisarm\ndisarmament\ndisarmaments\ndisarmed\ndisarmer\ndisarmers\ndisarming\ndisarmingly\ndisarms\ndisarrange\ndisarranged\ndisarrangement\ndisarrangements\ndisarranges\ndisarranging\ndisarray\ndisarrayed\ndisarraying\ndisarrays\ndisassemble\ndisassembled\ndisassembles\ndisassembling\ndisassembly\ndisassociate\ndisassociated\ndisassociates\ndisassociating\ndisassociation\ndisassociations\ndisaster\ndisasters\ndisastrous\ndisastrously\ndisastrousness\ndisavow\ndisavowal\ndisavowals\ndisavowed\ndisavowing\ndisavows\ndisband\ndisbanded\ndisbanding\ndisbandment\ndisbandments\ndisbands\ndisbar\ndisbarment\ndisbarments\ndisbarred\ndisbarring\ndisbars\ndisbelief\ndisbeliefs\ndisbelieve\ndisbelieved\ndisbeliever\ndisbelievers\ndisbelieves\ndisbelieving\ndisbelievingly\ndisbosom\ndisbosomed\ndisbosoming\ndisbosoms\ndisbound\ndisbowel\ndisboweled\ndisboweling\ndisbowelled\ndisbowelling\ndisbowels\ndisbud\ndisbudded\ndisbudding\ndisbuds\ndisburse\ndisbursed\ndisbursement\ndisbursements\ndisburser\ndisbursers\ndisburses\ndisbursing\ndisc\ndiscant\ndiscanted\ndiscanting\ndiscants\ndiscard\ndiscarded\ndiscarding\ndiscards\ndiscase\ndiscased\ndiscases\ndiscasing\ndisced\ndiscept\ndiscepted\ndiscepting\ndiscepts\ndiscern\ndiscerned\ndiscerner\ndiscerners\ndiscernible\ndiscernibly\ndiscerning\ndiscerningly\ndiscernment\ndiscernments\ndiscerns\ndischarge\ndischargeable\ndischarged\ndischarger\ndischargers\ndischarges\ndischarging\ndisci\ndiscing\ndisciple\ndiscipled\ndisciples\ndiscipleship\ndiscipleships\ndisciplinarian\ndisciplinarians\ndisciplinary\ndiscipline\ndisciplined\ndiscipliner\ndiscipliners\ndisciplines\ndiscipling\ndisciplining\ndisclaim\ndisclaimed\ndisclaimer\ndisclaimers\ndisclaiming\ndisclaims\ndisclike\ndisclose\ndisclosed\ndiscloser\ndisclosers\ndiscloses\ndisclosing\ndisclosure\ndisclosures\ndisco\ndiscographer\ndiscographers\ndiscographies\ndiscography\ndiscoid\ndiscoidal\ndiscoids\ndiscolor\ndiscoloration\ndiscolorations\ndiscolored\ndiscoloring\ndiscolors\ndiscomfit\ndiscomfited\ndiscomfiting\ndiscomfits\ndiscomfiture\ndiscomfitures\ndiscomfort\ndiscomfortable\ndiscomforted\ndiscomforting\ndiscomforts\ndiscompose\ndiscomposed\ndiscomposes\ndiscomposing\ndiscomposure\ndiscomposures\ndisconcert\ndisconcerted\ndisconcerting\ndisconcertingly\ndisconcerts\ndisconnect\ndisconnected\ndisconnectedly\ndisconnectedness\ndisconnecting\ndisconnection\ndisconnections\ndisconnects\ndisconsolate\ndisconsolately\ndisconsolateness\ndisconsolation\ndiscontent\ndiscontented\ndiscontentedly\ndiscontentedness\ndiscontentment\ndiscontentments\ndiscontents\ndiscontinuance\ndiscontinuances\ndiscontinue\ndiscontinued\ndiscontinues\ndiscontinuing\ndiscontinuity\ndiscontinuous\ndiscontinuously\ndiscord\ndiscordance\ndiscordances\ndiscordancies\ndiscordancy\ndiscordant\ndiscordantly\ndiscorded\ndiscording\ndiscords\ndiscos\ndiscotheque\ndiscotheques\ndiscount\ndiscountable\ndiscounted\ndiscountenance\ndiscountenanced\ndiscountenances\ndiscountenancing\ndiscounter\ndiscounters\ndiscounting\ndiscounts\ndiscourage\ndiscouraged\ndiscouragement\ndiscouragements\ndiscourager\ndiscouragers\ndiscourages\ndiscouraging\ndiscouragingly\ndiscourse\ndiscoursed\ndiscourser\ndiscoursers\ndiscourses\ndiscoursing\ndiscourteous\ndiscourteously\ndiscourteousness\ndiscourtesies\ndiscourtesy\ndiscover\ndiscoverable\ndiscovered\ndiscoverer\ndiscoverers\ndiscoveries\ndiscovering\ndiscovers\ndiscovery\ndiscredit\ndiscreditable\ndiscreditably\ndiscredited\ndiscrediting\ndiscredits\ndiscreet\ndiscreeter\ndiscreetest\ndiscreetly\ndiscreetness\ndiscrepancies\ndiscrepancy\ndiscrepant\ndiscrepantly\ndiscrete\ndiscretely\ndiscreteness\ndiscretion\ndiscretional\ndiscretionary\ndiscretions\ndiscriminate\ndiscriminated\ndiscriminates\ndiscriminating\ndiscriminatingly\ndiscrimination\ndiscriminational\ndiscriminations\ndiscriminative\ndiscriminatively\ndiscriminator\ndiscriminators\ndiscriminatory\ndiscrown\ndiscrowned\ndiscrowning\ndiscrowns\ndiscs\ndiscursive\ndiscursively\ndiscursiveness\ndiscus\ndiscuses\ndiscuss\ndiscussable\ndiscussant\ndiscussants\ndiscussed\ndiscusser\ndiscussers\ndiscusses\ndiscussible\ndiscussing\ndiscussion\ndiscussions\ndisdain\ndisdained\ndisdainful\ndisdainfully\ndisdainfulness\ndisdaining\ndisdains\ndisease\ndiseased\ndiseases\ndiseasing\ndisembark\ndisembarkation\ndisembarkations\ndisembarked\ndisembarking\ndisembarks\ndisembarrass\ndisembarrassed\ndisembarrasses\ndisembarrassing\ndisembodied\ndisembodies\ndisembody\ndisembodying\ndisembowel\ndisemboweled\ndisemboweling\ndisembowelment\ndisembowelments\ndisembowels\ndisenchant\ndisenchanted\ndisenchanter\ndisenchanters\ndisenchanting\ndisenchantingly\ndisenchantment\ndisenchantments\ndisenchants\ndisencumber\ndisencumbered\ndisencumbering\ndisencumbers\ndisendow\ndisendowed\ndisendowing\ndisendows\ndisenfranchise\ndisenfranchised\ndisenfranchisement\ndisenfranchisements\ndisenfranchises\ndisenfranchising\ndisengage\ndisengaged\ndisengagement\ndisengagements\ndisengages\ndisengaging\ndisentangle\ndisentangled\ndisentanglement\ndisentanglements\ndisentangles\ndisentangling\ndiseuse\ndiseuses\ndisfavor\ndisfavored\ndisfavoring\ndisfavors\ndisfigure\ndisfigured\ndisfigurement\ndisfigurements\ndisfigures\ndisfiguring\ndisfranchise\ndisfranchised\ndisfranchisement\ndisfranchisements\ndisfranchises\ndisfranchising\ndisfrock\ndisfrocked\ndisfrocking\ndisfrocks\ndisgorge\ndisgorged\ndisgorges\ndisgorging\ndisgrace\ndisgraced\ndisgraceful\ndisgracefully\ndisgracefulness\ndisgracer\ndisgracers\ndisgraces\ndisgracing\ndisgruntle\ndisgruntled\ndisgruntlement\ndisgruntlements\ndisgruntles\ndisgruntling\ndisguise\ndisguised\ndisguisedly\ndisguiser\ndisguisers\ndisguises\ndisguising\ndisgust\ndisgusted\ndisgustedly\ndisgustful\ndisgustfully\ndisgusting\ndisgustingly\ndisgusts\ndish\ndishabille\ndisharmonies\ndisharmonious\ndisharmonize\ndisharmonized\ndisharmonizes\ndisharmonizing\ndisharmony\ndishcloth\ndishcloths\ndishearten\ndisheartened\ndisheartening\ndishearteningly\ndisheartenment\ndisheartenments\ndisheartens\ndished\ndishelm\ndishelmed\ndishelming\ndishelms\ndisherit\ndisherited\ndisheriting\ndisherits\ndishes\ndishevel\ndisheveled\ndisheveling\ndishevelled\ndishevelling\ndishevelment\ndishevelments\ndishevels\ndishful\ndishfuls\ndishier\ndishiest\ndishing\ndishlike\ndishonest\ndishonesties\ndishonestly\ndishonesty\ndishonor\ndishonorable\ndishonorableness\ndishonorably\ndishonored\ndishonorer\ndishonorers\ndishonoring\ndishonors\ndishpan\ndishpans\ndishrag\ndishrags\ndishware\ndishwares\ndishwasher\ndishwashers\ndishwater\ndishwaters\ndishy\ndisillusion\ndisillusioned\ndisillusioning\ndisillusionment\ndisillusionments\ndisillusions\ndisincentive\ndisincentives\ndisinclination\ndisinclinations\ndisincline\ndisinclined\ndisinclines\ndisinclining\ndisinfect\ndisinfectant\ndisinfectants\ndisinfected\ndisinfecting\ndisinfection\ndisinfections\ndisinfects\ndisingenuous\ndisingenuously\ndisingenuousness\ndisinherit\ndisinheritance\ndisinherited\ndisinheriting\ndisinherits\ndisintegrate\ndisintegrated\ndisintegrates\ndisintegrating\ndisintegration\ndisintegrations\ndisintegrative\ndisintegrator\ndisintegrators\ndisinter\ndisinterest\ndisinterested\ndisinterestedly\ndisinterestedness\ndisinteresting\ndisinterests\ndisinterment\ndisinterments\ndisinterred\ndisinterring\ndisinters\ndisject\ndisjected\ndisjecting\ndisjects\ndisjoin\ndisjoined\ndisjoining\ndisjoins\ndisjoint\ndisjointed\ndisjointedly\ndisjointedness\ndisjointing\ndisjoints\ndisjunct\ndisjunction\ndisjunctions\ndisjunctive\ndisjunctively\ndisjuncts\ndisjuncture\ndisjunctures\ndisk\ndisked\ndisking\ndisklike\ndisks\ndislikable\ndislike\ndisliked\ndisliker\ndislikers\ndislikes\ndisliking\ndislimn\ndislimned\ndislimning\ndislimns\ndislocate\ndislocated\ndislocates\ndislocating\ndislocation\ndislocations\ndislodge\ndislodged\ndislodges\ndislodging\ndislodgment\ndislodgments\ndisloyal\ndisloyally\ndisloyalties\ndisloyalty\ndismal\ndismaler\ndismalest\ndismally\ndismalness\ndismals\ndismantle\ndismantled\ndismantlement\ndismantlements\ndismantles\ndismantling\ndismast\ndismasted\ndismasting\ndismasts\ndismay\ndismayed\ndismaying\ndismays\ndisme\ndismember\ndismembered\ndismembering\ndismemberment\ndismemberments\ndismembers\ndismes\ndismiss\ndismissal\ndismissals\ndismissed\ndismisses\ndismissing\ndismission\ndismissive\ndismount\ndismounted\ndismounting\ndismounts\ndisobedience\ndisobediences\ndisobedient\ndisobediently\ndisobey\ndisobeyed\ndisobeyer\ndisobeyers\ndisobeying\ndisobeys\ndisomic\ndisorder\ndisordered\ndisorderedly\ndisorderedness\ndisordering\ndisorderliness\ndisorderly\ndisorders\ndisorganization\ndisorganizations\ndisorganize\ndisorganized\ndisorganizes\ndisorganizing\ndisorient\ndisorientate\ndisorientated\ndisorientates\ndisorientating\ndisorientation\ndisorientations\ndisoriented\ndisorienting\ndisorients\ndisown\ndisowned\ndisowning\ndisownment\ndisowns\ndisparage\ndisparaged\ndisparagement\ndisparagements\ndisparager\ndisparagers\ndisparages\ndisparaging\ndisparagingly\ndisparate\ndisparately\ndisparateness\ndisparities\ndisparity\ndispart\ndisparted\ndisparting\ndisparts\ndispassionate\ndispassionately\ndispassionateness\ndispatch\ndispatched\ndispatcher\ndispatchers\ndispatches\ndispatching\ndispel\ndispelled\ndispelling\ndispels\ndispend\ndispended\ndispending\ndispends\ndispensability\ndispensable\ndispensaries\ndispensary\ndispensation\ndispensational\ndispensations\ndispense\ndispensed\ndispenser\ndispensers\ndispenses\ndispensing\ndispersal\ndispersals\ndisperse\ndispersed\ndispersedly\ndisperser\ndispersers\ndisperses\ndispersible\ndispersing\ndispersion\ndispersions\ndispersive\ndispersively\ndispersiveness\ndispirit\ndispirited\ndispiritedly\ndispiritedness\ndispiriting\ndispirits\ndisplace\ndisplaced\ndisplacement\ndisplacements\ndisplaces\ndisplacing\ndisplant\ndisplanted\ndisplanting\ndisplants\ndisplay\ndisplayed\ndisplaying\ndisplays\ndisplease\ndispleased\ndispleases\ndispleasing\ndispleasure\ndispleasures\ndisplode\ndisploded\ndisplodes\ndisploding\ndisplume\ndisplumed\ndisplumes\ndispluming\ndisport\ndisported\ndisporting\ndisports\ndisposable\ndisposal\ndisposals\ndispose\ndisposed\ndisposer\ndisposers\ndisposes\ndisposing\ndisposition\ndispositional\ndispositions\ndispossess\ndispossessed\ndispossesses\ndispossessing\ndispossession\ndispossessions\ndispossessor\ndispossessors\ndispread\ndispreading\ndispreads\ndisprize\ndisprized\ndisprizes\ndisprizing\ndisproof\ndisproofs\ndisproportion\ndisproportional\ndisproportionate\ndisproportionately\ndisproportions\ndisprovable\ndisprove\ndisproved\ndisproven\ndisproves\ndisproving\ndisputable\ndisputably\ndisputant\ndisputants\ndisputation\ndisputations\ndisputatious\ndisputatiously\ndisputatiousness\ndispute\ndisputed\ndisputer\ndisputers\ndisputes\ndisputing\ndisqualification\ndisqualifications\ndisqualified\ndisqualifies\ndisqualify\ndisqualifying\ndisquiet\ndisquieted\ndisquieting\ndisquietingly\ndisquietly\ndisquiets\ndisquietude\ndisquietudes\ndisquisition\ndisquisitions\ndisrate\ndisrated\ndisrates\ndisrating\ndisregard\ndisregarded\ndisregardful\ndisregarding\ndisregards\ndisrepair\ndisrepairs\ndisreputability\ndisreputable\ndisreputableness\ndisreputably\ndisrepute\ndisreputes\ndisrespect\ndisrespectability\ndisrespectable\ndisrespected\ndisrespectful\ndisrespectfully\ndisrespectfulness\ndisrespecting\ndisrespects\ndisrobe\ndisrobed\ndisrober\ndisrobers\ndisrobes\ndisrobing\ndisroot\ndisrooted\ndisrooting\ndisroots\ndisrupt\ndisrupted\ndisrupter\ndisrupters\ndisrupting\ndisruption\ndisruptions\ndisruptive\ndisruptively\ndisruptiveness\ndisrupts\ndissatisfaction\ndissatisfactions\ndissatisfactory\ndissatisfied\ndissatisfies\ndissatisfy\ndissatisfying\ndissave\ndissaved\ndissaves\ndissaving\ndisseat\ndisseated\ndisseating\ndisseats\ndissect\ndissected\ndissecting\ndissection\ndissections\ndissector\ndissectors\ndissects\ndisseise\ndisseised\ndisseiseised\ndisseiseises\ndisseiseising\ndisseises\ndisseising\ndisseize\ndisseized\ndisseizes\ndisseizing\ndissemble\ndissembled\ndissembler\ndissemblers\ndissembles\ndissembling\ndisseminate\ndisseminated\ndisseminates\ndisseminating\ndissemination\ndisseminations\ndisseminator\ndisseminators\ndissension\ndissensions\ndissent\ndissented\ndissenter\ndissenters\ndissentient\ndissentients\ndissenting\ndissents\ndissert\ndissertate\ndissertates\ndissertation\ndissertational\ndissertations\ndissertator\ndissertators\ndisserted\ndisserting\ndisserts\ndisserve\ndisserved\ndisserves\ndisservice\ndisservices\ndisserving\ndissever\ndisseverance\ndissevered\ndissevering\ndisseverment\ndissevers\ndissidence\ndissidences\ndissident\ndissidents\ndissimilar\ndissimilarities\ndissimilarity\ndissimilarly\ndissimilate\ndissimilated\ndissimilates\ndissimilating\ndissimilation\ndissimilations\ndissimilative\ndissimilatory\ndissimilitude\ndissimilitudes\ndissimulate\ndissimulated\ndissimulates\ndissimulating\ndissimulation\ndissimulations\ndissimulator\ndissimulators\ndissipate\ndissipated\ndissipatedly\ndissipatedness\ndissipater\ndissipaters\ndissipates\ndissipating\ndissipation\ndissipations\ndissipative\ndissociate\ndissociated\ndissociates\ndissociating\ndissociation\ndissociations\ndissociative\ndissolubilities\ndissolubility\ndissoluble\ndissolute\ndissolutely\ndissoluteness\ndissolution\ndissolutions\ndissolvable\ndissolve\ndissolved\ndissolver\ndissolvers\ndissolves\ndissolving\ndissonance\ndissonances\ndissonant\ndissonantly\ndissuade\ndissuaded\ndissuader\ndissuaders\ndissuades\ndissuading\ndissuasion\ndissuasions\ndissuasive\ndissuasively\ndissuasiveness\ndissymmetric\ndissymmetries\ndissymmetry\ndistaff\ndistaffs\ndistain\ndistained\ndistaining\ndistains\ndistal\ndistally\ndistance\ndistanced\ndistances\ndistancing\ndistant\ndistantly\ndistantness\ndistaste\ndistasted\ndistasteful\ndistastefully\ndistastefulness\ndistastes\ndistasting\ndistaves\ndistemper\ndistempered\ndistempering\ndistempers\ndistend\ndistended\ndistending\ndistends\ndistension\ndistensions\ndistent\ndistention\ndistentions\ndistich\ndistichs\ndistil\ndistill\ndistillate\ndistillates\ndistillation\ndistillations\ndistilled\ndistiller\ndistilleries\ndistillers\ndistillery\ndistilling\ndistills\ndistils\ndistinct\ndistincter\ndistinctest\ndistinction\ndistinctions\ndistinctive\ndistinctively\ndistinctiveness\ndistinctly\ndistinctness\ndistinguish\ndistinguishability\ndistinguishable\ndistinguishably\ndistinguished\ndistinguishes\ndistinguishing\ndistome\ndistomes\ndistort\ndistorted\ndistorter\ndistorters\ndistorting\ndistortion\ndistortional\ndistortions\ndistorts\ndistract\ndistracted\ndistractedly\ndistractibility\ndistractible\ndistracting\ndistraction\ndistractions\ndistractive\ndistracts\ndistrain\ndistrained\ndistraining\ndistrains\ndistrait\ndistraught\ndistraughtly\ndistress\ndistressed\ndistresses\ndistressful\ndistressfully\ndistressfulness\ndistressing\ndistressingly\ndistributable\ndistributaries\ndistributary\ndistribute\ndistributed\ndistributes\ndistributing\ndistribution\ndistributional\ndistributions\ndistributive\ndistributively\ndistributiveness\ndistributor\ndistributors\ndistributorship\ndistributorships\ndistrict\ndistricted\ndistricting\ndistricts\ndistrust\ndistrusted\ndistrustful\ndistrustfully\ndistrustfulness\ndistrusting\ndistrusts\ndisturb\ndisturbance\ndisturbances\ndisturbed\ndisturber\ndisturbers\ndisturbing\ndisturbingly\ndisturbs\ndisulfid\ndisulfids\ndisunion\ndisunionist\ndisunionists\ndisunions\ndisunite\ndisunited\ndisunites\ndisunities\ndisuniting\ndisunity\ndisuse\ndisused\ndisuses\ndisusing\ndisvalue\ndisvalued\ndisvalues\ndisvaluing\ndisyllabic\ndisyllable\ndisyllables\ndisyoke\ndisyoked\ndisyokes\ndisyoking\ndit\ndita\nditas\nditch\nditched\nditcher\nditchers\nditches\nditching\ndite\ndites\nditheism\nditheisms\nditheist\nditheists\ndither\ndithered\ndithering\ndithers\ndithery\ndithiol\ndits\nditsy\ndittanies\ndittany\nditties\nditto\ndittoed\ndittoing\ndittos\nditty\nditzy\ndiureses\ndiuresis\ndiuretic\ndiuretically\ndiuretics\ndiurnal\ndiurnally\ndiurnals\ndiuron\ndiurons\ndiva\ndivagate\ndivagated\ndivagates\ndivagating\ndivagation\ndivagations\ndivalent\ndivan\ndivans\ndivas\ndive\ndived\ndiver\ndiverge\ndiverged\ndivergence\ndivergences\ndivergencies\ndivergency\ndivergent\ndivergently\ndiverges\ndiverging\ndivers\ndiverse\ndiversely\ndiverseness\ndiversification\ndiversifications\ndiversified\ndiversifier\ndiversifiers\ndiversifies\ndiversify\ndiversifying\ndiversion\ndiversionary\ndiversions\ndiversities\ndiversity\ndivert\ndiverted\ndiverter\ndiverters\ndiverting\ndivertissement\ndivertissements\ndiverts\ndives\ndivest\ndivested\ndivesting\ndivestiture\ndivestitures\ndivestment\ndivestments\ndivests\ndividable\ndivide\ndivided\ndividend\ndividends\ndivider\ndividers\ndivides\ndividing\ndividual\ndivination\ndivinations\ndivine\ndivined\ndivinely\ndiviner\ndiviners\ndivines\ndivinest\ndiving\ndivining\ndivinise\ndivinised\ndivinises\ndivinising\ndivinities\ndivinity\ndivinize\ndivinized\ndivinizes\ndivinizing\ndivisibility\ndivisible\ndivision\ndivisional\ndivisions\ndivisive\ndivisively\ndivisiveness\ndivisor\ndivisors\ndivorce\ndivorced\ndivorcee\ndivorcees\ndivorcement\ndivorcements\ndivorcer\ndivorcers\ndivorces\ndivorcing\ndivot\ndivots\ndivulge\ndivulged\ndivulgence\ndivulgences\ndivulger\ndivulgers\ndivulges\ndivulging\ndivvied\ndivvies\ndivvy\ndivvying\ndiwan\ndiwans\ndixit\ndixits\ndizen\ndizened\ndizening\ndizens\ndizygous\ndizzied\ndizzier\ndizzies\ndizziest\ndizzily\ndizziness\ndizzy\ndizzying\ndizzyingly\ndjebel\ndjebels\ndjellaba\ndjellabas\ndjin\ndjinn\ndjinni\ndjinns\ndjinny\ndjins\ndo\ndoable\ndoat\ndoated\ndoating\ndoats\ndobber\ndobbers\ndobbies\ndobbin\ndobbins\ndobby\ndobie\ndobies\ndobla\ndoblas\ndoblon\ndoblones\ndoblons\ndobra\ndobras\ndobson\ndobsons\ndoby\ndoc\ndocent\ndocents\ndocetic\ndocile\ndocilely\ndocilities\ndocility\ndock\ndockage\ndockages\ndocked\ndocker\ndockers\ndocket\ndocketed\ndocketing\ndockets\ndockhand\ndockhands\ndocking\ndockland\ndocklands\ndocks\ndockside\ndocksides\ndockyard\ndockyards\ndocs\ndoctor\ndoctoral\ndoctorate\ndoctorates\ndoctored\ndoctoring\ndoctors\ndoctorship\ndoctrinaire\ndoctrinaires\ndoctrinairism\ndoctrinal\ndoctrinally\ndoctrine\ndoctrines\ndocument\ndocumentable\ndocumental\ndocumentarian\ndocumentarians\ndocumentaries\ndocumentary\ndocumentation\ndocumentations\ndocumented\ndocumenting\ndocuments\ndodder\ndoddered\ndodderer\ndodderers\ndoddering\ndodders\ndoddery\ndodge\ndodged\ndodger\ndodgeries\ndodgers\ndodgery\ndodges\ndodgier\ndodgiest\ndodging\ndodgy\ndodo\ndodoes\ndodoism\ndodoisms\ndodos\ndoe\ndoer\ndoers\ndoes\ndoeskin\ndoeskins\ndoest\ndoeth\ndoff\ndoffed\ndoffer\ndoffers\ndoffing\ndoffs\ndog\ndogbane\ndogbanes\ndogberries\ndogberry\ndogcart\ndogcarts\ndogcatcher\ndogcatchers\ndogdom\ndogdoms\ndoge\ndogedom\ndogedoms\ndoges\ndogeship\ndogeships\ndogey\ndogeys\ndogface\ndogfaces\ndogfight\ndogfighting\ndogfights\ndogfish\ndogfishes\ndogfought\ndogged\ndoggedly\ndoggedness\ndogger\ndoggerel\ndoggerels\ndoggeries\ndoggers\ndoggery\ndoggie\ndoggier\ndoggies\ndoggiest\ndogging\ndoggish\ndoggishly\ndoggishness\ndoggo\ndoggone\ndoggoned\ndoggoneder\ndoggonedest\ndoggoner\ndoggones\ndoggonest\ndoggoning\ndoggrel\ndoggrels\ndoggy\ndoghouse\ndoghouses\ndogie\ndogies\ndogleg\ndoglegged\ndoglegging\ndoglegs\ndoglike\ndogma\ndogmas\ndogmata\ndogmatic\ndogmatical\ndogmatically\ndogmatics\ndogmatism\ndogmatisms\ndogmatist\ndogmatists\ndogmatization\ndogmatizations\ndogmatize\ndogmatized\ndogmatizer\ndogmatizers\ndogmatizes\ndogmatizing\ndognap\ndognaped\ndognaper\ndognapers\ndognaping\ndognapped\ndognapping\ndognaps\ndogs\ndogsbodies\ndogsbody\ndogsled\ndogsleds\ndogtooteeth\ndogtooth\ndogtrot\ndogtrots\ndogtrotted\ndogtrotting\ndogvane\ndogvanes\ndogwatch\ndogwatches\ndogwood\ndogwoods\ndogy\ndoiled\ndoilies\ndoily\ndoing\ndoings\ndoit\ndoited\ndoits\ndojo\ndojos\ndol\ndolce\ndolci\ndoldrums\ndole\ndoled\ndoleful\ndolefuller\ndolefullest\ndolefully\ndolefulness\ndolerite\ndolerites\ndoles\ndolesome\ndoling\ndoll\ndollar\ndollars\ndolled\ndollied\ndollies\ndolling\ndollish\ndollishly\ndollop\ndollops\ndolls\ndolly\ndollying\ndolma\ndolman\ndolmans\ndolmen\ndolmens\ndolomite\ndolomites\ndolomitic\ndolor\ndoloroso\ndolorous\ndolorously\ndolorousness\ndolors\ndolour\ndolours\ndolphin\ndolphins\ndols\ndolt\ndoltish\ndoltishly\ndoltishness\ndolts\ndom\ndomain\ndomains\ndomal\ndome\ndomed\ndomelike\ndomes\ndomesday\ndomesdays\ndomestic\ndomestically\ndomesticate\ndomesticated\ndomesticates\ndomesticating\ndomestication\ndomestications\ndomesticities\ndomesticity\ndomestics\ndomic\ndomical\ndomicil\ndomicile\ndomiciled\ndomiciles\ndomiciling\ndomicils\ndominance\ndominances\ndominant\ndominantly\ndominants\ndominate\ndominated\ndominates\ndominating\ndomination\ndominations\ndominative\ndominator\ndominators\ndomine\ndomineer\ndomineered\ndomineering\ndomineeringly\ndomineeringness\ndomineers\ndomines\ndoming\ndominick\ndominicks\ndominie\ndominies\ndominion\ndominions\ndominium\ndominiums\ndomino\ndominoes\ndominos\ndoms\ndon\ndona\ndonas\ndonate\ndonated\ndonates\ndonating\ndonation\ndonations\ndonative\ndonatives\ndonator\ndonators\ndone\ndonee\ndonees\ndoneness\ndonenesses\ndong\ndonga\ndongola\ndongolas\ndongs\ndonjon\ndonjons\ndonkey\ndonkeys\ndonna\ndonnas\ndonne\ndonned\ndonnee\ndonnees\ndonnerd\ndonnered\ndonnert\ndonning\ndonnish\ndonnishly\ndonnishness\ndonnybrook\ndonnybrooks\ndonor\ndonors\ndonorship\ndonorships\ndons\ndonsie\ndonsy\ndonut\ndonuts\ndonzel\ndonzels\ndoodad\ndoodads\ndoodle\ndoodled\ndoodler\ndoodlers\ndoodles\ndoodling\ndoolee\ndoolees\ndoolie\ndoolies\ndooly\ndoom\ndoomed\ndoomful\ndooming\ndooms\ndoomsday\ndoomsdays\ndoomster\ndoomsters\ndoor\ndoorbell\ndoorbells\ndoorjamb\ndoorjambs\ndoorkeeper\ndoorkeepers\ndoorknob\ndoorknobs\ndoorless\ndoorman\ndoormat\ndoormats\ndoormen\ndoornail\ndoornails\ndoorplate\ndoorplates\ndoorpost\ndoorposts\ndoors\ndoorsill\ndoorsills\ndoorstep\ndoorsteps\ndoorstop\ndoorstops\ndoorway\ndoorways\ndooryard\ndooryards\ndoozer\ndoozers\ndoozies\ndoozy\ndopa\ndopamine\ndopamines\ndopant\ndopants\ndopas\ndope\ndoped\ndoper\ndopers\ndopes\ndopester\ndopesters\ndopey\ndopier\ndopiest\ndopiness\ndopinesses\ndoping\ndopy\ndor\ndorado\ndorados\ndorbug\ndorbugs\ndore\ndorhawk\ndorhawks\ndories\ndork\ndorks\ndorky\ndorm\ndormancies\ndormancy\ndormant\ndormer\ndormers\ndormice\ndormie\ndormient\ndormin\ndormins\ndormitories\ndormitory\ndormouse\ndorms\ndormy\ndorneck\ndornecks\ndornick\ndornicks\ndornock\ndornocks\ndorp\ndorper\ndorpers\ndorps\ndorr\ndorrs\ndors\ndorsa\ndorsad\ndorsal\ndorsally\ndorsals\ndorser\ndorsers\ndorsum\ndorty\ndory\ndos\ndosage\ndosages\ndose\ndosed\ndoser\ndosers\ndoses\ndosimeter\ndosimeters\ndosing\ndoss\ndossal\ndossals\ndossed\ndossel\ndossels\ndosser\ndosseret\ndosserets\ndossers\ndosses\ndossier\ndossiers\ndossil\ndossils\ndossing\ndost\ndot\ndotage\ndotages\ndotal\ndotard\ndotardly\ndotards\ndotation\ndotations\ndote\ndoted\ndoter\ndoters\ndotes\ndoth\ndotier\ndotiest\ndoting\ndotingly\ndots\ndotted\ndottel\ndottels\ndotter\ndotterel\ndotterels\ndotters\ndottier\ndottiest\ndottily\ndotting\ndottle\ndottles\ndottrel\ndottrels\ndotty\ndoty\ndouble\ndoubled\ndoubleheader\ndoubleheaders\ndoubleness\ndoubler\ndoublers\ndoubles\ndoublet\ndoublets\ndoubling\ndoubloon\ndoubloons\ndoublure\ndoublures\ndoubly\ndoubt\ndoubtable\ndoubted\ndoubter\ndoubters\ndoubtful\ndoubtfully\ndoubtfulness\ndoubting\ndoubtingly\ndoubtless\ndoubtlessly\ndoubtlessness\ndoubts\ndouce\ndoucely\ndouceur\ndouceurs\ndouche\ndouched\ndouches\ndouching\ndough\ndoughboy\ndoughboys\ndoughier\ndoughiest\ndoughnut\ndoughnuts\ndoughs\ndought\ndoughtier\ndoughtiest\ndoughtily\ndoughtiness\ndoughty\ndoughy\ndoum\ndouma\ndoumas\ndoums\ndour\ndoura\ndourah\ndourahs\ndouras\ndourer\ndourest\ndourine\ndourines\ndourly\ndourness\ndournesses\ndouse\ndoused\ndouser\ndousers\ndouses\ndousing\ndoux\ndouzeper\ndouzepers\ndove\ndovecot\ndovecote\ndovecotes\ndovecots\ndovekey\ndovekeys\ndovekie\ndovekies\ndovelike\ndoven\ndovened\ndovening\ndovens\ndoves\ndovetail\ndovetailed\ndovetailing\ndovetails\ndovish\ndow\ndowable\ndowager\ndowagers\ndowdier\ndowdies\ndowdiest\ndowdily\ndowdiness\ndowdy\ndowdyish\ndowed\ndowel\ndoweled\ndoweling\ndowelled\ndowelling\ndowels\ndower\ndowered\ndoweries\ndowering\ndowers\ndowery\ndowie\ndowing\ndown\ndownbeat\ndownbeats\ndowncast\ndowncasts\ndowncome\ndowncomes\ndowned\ndowner\ndowners\ndownfall\ndownfallen\ndownfalls\ndowngrade\ndowngraded\ndowngrades\ndowngrading\ndownhaul\ndownhauls\ndownhearted\ndownheartedly\ndownheartedness\ndownhill\ndownhills\ndownier\ndowniest\ndowning\ndownplay\ndownplayed\ndownplaying\ndownplays\ndownpour\ndownpours\ndownrange\ndownright\ndownrightly\ndownrightness\ndowns\ndownspout\ndownspouts\ndownstage\ndownstages\ndownstairs\ndownstate\ndownstater\ndownstaters\ndownstream\ndownswing\ndownswings\ndowntime\ndowntimes\ndowntown\ndowntowns\ndowntrod\ndowntrodden\ndownturn\ndownturns\ndownward\ndownwardly\ndownwardness\ndownwards\ndownwind\ndowny\ndowries\ndowry\ndows\ndowsabel\ndowsabels\ndowse\ndowsed\ndowser\ndowsers\ndowses\ndowsing\ndoxie\ndoxies\ndoxologies\ndoxology\ndoxy\ndoyen\ndoyenne\ndoyennes\ndoyens\ndoyley\ndoyleys\ndoylies\ndoyly\ndoze\ndozed\ndozen\ndozened\ndozening\ndozens\ndozenth\ndozenths\ndozer\ndozers\ndozes\ndozier\ndoziest\ndozily\ndoziness\ndozinesses\ndozing\ndozy\ndrab\ndrabbed\ndrabber\ndrabbest\ndrabbet\ndrabbets\ndrabbing\ndrabble\ndrabbled\ndrabbles\ndrabbling\ndrably\ndrabness\ndrabnesses\ndrabs\ndracaena\ndracaenas\ndrachm\ndrachma\ndrachmae\ndrachmai\ndrachmas\ndrachms\ndraconic\ndraff\ndraffier\ndraffiest\ndraffish\ndraffs\ndraffy\ndraft\ndraftable\ndrafted\ndraftee\ndraftees\ndrafter\ndrafters\ndraftier\ndraftiest\ndraftily\ndraftiness\ndrafting\ndraftings\ndrafts\ndraftsman\ndraftsmanship\ndraftsmen\ndrafty\ndrag\ndragee\ndragees\ndragged\ndragger\ndraggers\ndraggier\ndraggiest\ndragging\ndraggingly\ndraggle\ndraggled\ndraggles\ndraggling\ndraggy\ndragline\ndraglines\ndragnet\ndragnets\ndragoman\ndragomans\ndragomen\ndragon\ndragonet\ndragonets\ndragonflies\ndragonfly\ndragonish\ndragons\ndragoon\ndragooned\ndragooning\ndragoons\ndragrope\ndragropes\ndrags\ndragster\ndragsters\ndrail\ndrails\ndrain\ndrainage\ndrainages\ndrained\ndrainer\ndrainers\ndraining\ndrainpipe\ndrainpipes\ndrains\ndrake\ndrakes\ndram\ndrama\ndramas\ndramatic\ndramatically\ndramatics\ndramatist\ndramatists\ndramatizable\ndramatization\ndramatizations\ndramatize\ndramatized\ndramatizes\ndramatizing\ndramaturgic\ndramaturgical\ndramaturgically\ndramaturgy\ndrammed\ndramming\ndrammock\ndrammocks\ndrams\ndramshop\ndramshops\ndrank\ndrapable\ndrape\ndraped\ndraper\ndraperies\ndrapers\ndrapery\ndrapes\ndraping\ndrastic\ndrastically\ndrat\ndrats\ndratted\ndratting\ndraught\ndraughted\ndraughtier\ndraughtiest\ndraughting\ndraughts\ndraughty\ndrave\ndraw\ndrawable\ndrawback\ndrawbacks\ndrawbar\ndrawbars\ndrawbore\ndrawbores\ndrawbridge\ndrawbridges\ndrawdown\ndrawdowns\ndrawee\ndrawees\ndrawer\ndrawers\ndrawing\ndrawings\ndrawl\ndrawled\ndrawler\ndrawlers\ndrawlier\ndrawliest\ndrawling\ndrawlingly\ndrawls\ndrawly\ndrawn\ndraws\ndrawstring\ndrawstrings\ndrawtube\ndrawtubes\ndray\ndrayage\ndrayages\ndrayed\ndraying\ndrayman\ndraymen\ndrays\ndread\ndreaded\ndreadful\ndreadfully\ndreadfulness\ndreadfuls\ndreading\ndreads\ndream\ndreamed\ndreamer\ndreamers\ndreamful\ndreamier\ndreamiest\ndreamily\ndreaminess\ndreaming\ndreamless\ndreamlessly\ndreamlike\ndreams\ndreamt\ndreamy\ndrear\ndrearier\ndrearies\ndreariest\ndrearily\ndreariness\ndreary\ndreck\ndrecks\ndredge\ndredged\ndredger\ndredgers\ndredges\ndredging\ndredgings\ndree\ndreed\ndreeing\ndrees\ndreg\ndreggier\ndreggiest\ndreggish\ndreggy\ndregs\ndreich\ndreidel\ndreidels\ndreidl\ndreidls\ndreigh\ndrek\ndreks\ndrench\ndrenched\ndrencher\ndrenchers\ndrenches\ndrenching\ndress\ndressage\ndressages\ndressed\ndresser\ndressers\ndresses\ndressier\ndressiest\ndressily\ndressiness\ndressing\ndressings\ndressmaker\ndressmakers\ndressmaking\ndressy\ndrest\ndrew\ndrib\ndribbed\ndribbing\ndribble\ndribbled\ndribbler\ndribblers\ndribbles\ndribblet\ndribblets\ndribbling\ndriblet\ndriblets\ndribs\ndried\ndrier\ndriers\ndries\ndriest\ndrift\ndriftage\ndriftages\ndrifted\ndrifter\ndrifters\ndriftier\ndriftiest\ndrifting\ndriftingly\ndriftpin\ndriftpins\ndrifts\ndriftwood\ndrifty\ndrill\ndrillable\ndrilled\ndriller\ndrillers\ndrilling\ndrillings\ndrillmaster\ndrillmasters\ndrills\ndrily\ndrink\ndrinkable\ndrinkables\ndrinker\ndrinkers\ndrinking\ndrinks\ndrip\ndripless\ndripped\ndripper\ndrippers\ndrippier\ndrippiest\ndripping\ndrippings\ndrippy\ndrips\ndript\ndrivable\ndrive\ndrivel\ndriveled\ndriveler\ndrivelers\ndriveling\ndrivelled\ndriveller\ndrivellers\ndrivelling\ndrivels\ndriven\ndriver\ndriverless\ndrivers\ndrives\ndriveway\ndriveways\ndriving\ndrizzle\ndrizzled\ndrizzles\ndrizzlier\ndrizzliest\ndrizzling\ndrizzlingly\ndrizzly\ndrogue\ndrogues\ndroit\ndroits\ndroll\ndrolled\ndroller\ndrolleries\ndrollery\ndrollest\ndrolling\ndrollness\ndrolls\ndrolly\ndromedaries\ndromedary\ndromon\ndromond\ndromonds\ndromons\ndrone\ndroned\ndroner\ndroners\ndrones\ndrongo\ndrongos\ndroning\ndroningly\ndronish\ndrool\ndrooled\ndrooling\ndrools\ndroop\ndrooped\ndroopier\ndroopiest\ndroopily\ndrooping\ndroopingly\ndroops\ndroopy\ndrop\ndrophead\ndropheads\ndropkick\ndropkicks\ndroplet\ndroplets\ndropout\ndropouts\ndropped\ndropper\ndroppers\ndropping\ndroppings\ndrops\ndropshot\ndropshots\ndropsical\ndropsied\ndropsies\ndropsy\ndropt\ndropwort\ndropworts\ndrosera\ndroseras\ndroshkies\ndroshky\ndroskies\ndrosky\ndross\ndrosses\ndrossier\ndrossiest\ndrossy\ndrought\ndroughtier\ndroughtiest\ndroughtiness\ndroughts\ndroughty\ndrouk\ndrouked\ndrouking\ndrouks\ndrouth\ndrouthier\ndrouthiest\ndrouths\ndrouthy\ndrove\ndroved\ndrover\ndrovers\ndroves\ndroving\ndrown\ndrownd\ndrownded\ndrownding\ndrownds\ndrowned\ndrowner\ndrowners\ndrowning\ndrowns\ndrowse\ndrowsed\ndrowses\ndrowsier\ndrowsiest\ndrowsily\ndrowsiness\ndrowsing\ndrowsy\ndrub\ndrubbed\ndrubber\ndrubbers\ndrubbing\ndrubbings\ndrubs\ndrudge\ndrudged\ndrudger\ndrudgeries\ndrudgers\ndrudgery\ndrudges\ndrudging\ndrudgingly\ndrug\ndrugged\ndrugget\ndruggets\ndrugging\ndruggist\ndruggists\ndrugs\ndrugstore\ndrugstores\ndruid\ndruidess\ndruidesses\ndruidic\ndruidical\ndruidism\ndruidisms\ndruids\ndrum\ndrumbeat\ndrumbeater\ndrumbeaters\ndrumbeating\ndrumbeats\ndrumble\ndrumbled\ndrumbles\ndrumbling\ndrumfire\ndrumfires\ndrumfish\ndrumfishes\ndrumhead\ndrumheads\ndrumlier\ndrumliest\ndrumlike\ndrumlin\ndrumlins\ndrumly\ndrummed\ndrummer\ndrummers\ndrumming\ndrumroll\ndrumrolls\ndrums\ndrumstick\ndrumsticks\ndrunk\ndrunkard\ndrunkards\ndrunken\ndrunkenly\ndrunkenness\ndrunker\ndrunkest\ndrunkometer\ndrunkometers\ndrunks\ndrupe\ndrupelet\ndrupelets\ndrupes\ndruse\ndruses\ndruthers\ndry\ndryable\ndryad\ndryades\ndryadic\ndryads\ndryer\ndryers\ndryest\ndrying\ndrylot\ndrylots\ndryly\ndryness\ndrynesses\ndrypoint\ndrypoints\ndrys\nduad\nduads\ndual\ndualism\ndualisms\ndualist\ndualistic\ndualistically\ndualists\ndualities\nduality\ndualize\ndualized\ndualizes\ndualizing\ndually\nduals\ndub\ndubbed\ndubber\ndubbers\ndubbin\ndubbing\ndubbings\ndubbins\ndubieties\ndubiety\ndubious\ndubiously\ndubiousness\ndubitable\ndubonnet\ndubonnets\ndubs\nducal\nducally\nducat\nducats\nduce\nduces\nduchess\nduchesses\nduchies\nduchy\nduci\nduck\nduckbill\nduckbills\nducked\nducker\nduckers\nduckie\nduckier\nduckies\nduckiest\nducking\nduckling\nducklings\nduckpin\nduckpins\nducks\nducktail\nducktails\nduckweed\nduckweeds\nducky\nduct\nducted\nductile\nductility\nducting\nductings\nductless\nducts\nductule\nductules\ndud\nduddie\nduddy\ndude\nduded\ndudeen\ndudeens\ndudes\ndudgeon\ndudgeons\ndudish\ndudishly\nduds\ndue\nduecento\nduecentos\nduel\ndueled\ndueler\nduelers\ndueling\nduelist\nduelists\nduelled\ndueller\nduellers\nduelli\nduelling\nduellist\nduellists\nduello\nduellos\nduels\nduende\nduendes\ndueness\nduenesses\nduenna\nduennas\ndues\nduet\nduetted\nduetting\nduettist\nduettists\nduff\nduffel\nduffels\nduffer\nduffers\nduffle\nduffles\nduffs\ndug\ndugong\ndugongs\ndugout\ndugouts\ndugs\ndui\nduiker\nduikers\nduit\nduits\nduke\ndukedom\ndukedoms\ndukes\ndulcet\ndulcetly\ndulcets\ndulciana\ndulcianas\ndulcified\ndulcifies\ndulcify\ndulcifying\ndulcimer\ndulcimers\ndulcinea\ndulcineas\ndulia\ndulias\ndull\ndullard\ndullards\ndulled\nduller\ndullest\ndulling\ndullish\ndullness\ndullnesses\ndulls\ndully\ndulness\ndulnesses\ndulse\ndulses\nduly\nduma\ndumas\ndumb\ndumbbell\ndumbbells\ndumbed\ndumber\ndumbest\ndumbfound\ndumbfounded\ndumbfounding\ndumbfounds\ndumbing\ndumbly\ndumbness\ndumbnesses\ndumbs\ndumbwaiter\ndumbwaiters\ndumdum\ndumdums\ndumfound\ndumfounded\ndumfounding\ndumfounds\ndumka\ndumky\ndummied\ndummies\ndummkopf\ndummkopfs\ndummy\ndummying\ndump\ndumpcart\ndumpcarts\ndumped\ndumper\ndumpers\ndumpier\ndumpiest\ndumpily\ndumpiness\ndumping\ndumpings\ndumpish\ndumpling\ndumplings\ndumps\ndumpy\ndun\ndunam\ndunce\ndunces\ndunch\ndunches\nduncical\nduncish\ndune\nduneland\ndunelands\ndunelike\ndunes\ndung\ndungaree\ndungarees\ndunged\ndungeon\ndungeons\ndunghill\ndunghills\ndungier\ndungiest\ndunging\ndungs\ndungy\ndunite\ndunites\ndunitic\ndunk\ndunked\ndunker\ndunkers\ndunking\ndunks\ndunlin\ndunlins\ndunnage\ndunnages\ndunned\ndunner\ndunness\ndunnesses\ndunnest\ndunning\ndunnite\ndunnites\nduns\ndunt\ndunted\ndunting\ndunts\nduo\nduodecimal\nduodecimals\nduodena\nduodenal\nduodenum\nduodenums\nduolog\nduologs\nduologue\nduologues\nduomi\nduomo\nduomos\nduopolies\nduopoly\nduopsonies\nduopsony\nduos\nduotone\nduotones\ndup\ndupable\ndupe\nduped\nduper\nduperies\ndupers\ndupery\ndupes\nduping\nduple\nduplex\nduplexed\nduplexer\nduplexers\nduplexes\nduplexing\nduplicate\nduplicated\nduplicates\nduplicating\nduplication\nduplications\nduplicative\nduplicator\nduplicators\nduplicities\nduplicity\ndupped\ndupping\ndups\ndura\ndurability\ndurable\ndurableness\ndurables\ndurably\ndural\nduramen\nduramens\ndurance\ndurances\nduras\nduration\ndurations\ndurative\nduratives\ndurbar\ndurbars\ndure\ndured\ndures\nduress\nduresses\ndurian\ndurians\nduring\ndurion\ndurions\ndurmast\ndurmasts\ndurn\ndurndest\ndurned\ndurneder\ndurnedest\ndurning\ndurns\nduro\nduroc\ndurocs\nduros\ndurr\ndurra\ndurras\ndurrs\ndurst\ndurum\ndurums\ndusk\ndusked\nduskier\nduskiest\nduskily\nduskiness\ndusking\nduskish\ndusks\ndusky\ndust\ndustbin\ndustbins\ndusted\nduster\ndusters\ndustheap\ndustheaps\ndustier\ndustiest\ndustily\ndustiness\ndusting\ndustless\ndustlike\ndustman\ndustmen\ndustpan\ndustpans\ndustrag\ndustrags\ndusts\ndustup\ndustups\ndusty\ndutch\ndutchman\ndutchmen\nduteous\nduteously\nduteousness\ndutiable\nduties\ndutiful\ndutifully\ndutifulness\nduty\nduumvir\nduumviri\nduumvirs\nduvet\nduvetine\nduvetines\nduvetyn\nduvetyne\nduvetynes\nduvetyns\ndwarf\ndwarfed\ndwarfer\ndwarfest\ndwarfing\ndwarfish\ndwarfishly\ndwarfishness\ndwarfism\ndwarfisms\ndwarflike\ndwarfness\ndwarfs\ndwarves\ndwell\ndwelled\ndweller\ndwellers\ndwelling\ndwellings\ndwells\ndwelt\ndwindle\ndwindled\ndwindles\ndwindling\ndwine\ndwined\ndwines\ndwining\ndyable\ndyad\ndyadic\ndyadics\ndyads\ndyarchic\ndyarchies\ndyarchy\ndybbuk\ndybbukim\ndybbuks\ndye\ndyeable\ndyed\ndyeing\ndyeings\ndyer\ndyers\ndyes\ndyestuff\ndyestuffs\ndyeweed\ndyeweeds\ndyewood\ndyewoods\ndying\ndyings\ndyke\ndyked\ndykes\ndykey\ndyking\ndynamic\ndynamical\ndynamically\ndynamics\ndynamism\ndynamisms\ndynamist\ndynamistic\ndynamists\ndynamite\ndynamited\ndynamiter\ndynamiters\ndynamites\ndynamitic\ndynamiting\ndynamo\ndynamometer\ndynamometers\ndynamos\ndynamotor\ndynamotors\ndynast\ndynastic\ndynastically\ndynasties\ndynasts\ndynasty\ndynatron\ndynatrons\ndyne\ndynel\ndynes\ndynode\ndynodes\ndysenteric\ndysenteries\ndysentery\ndysfunction\ndysfunctional\ndysfunctions\ndysgenic\ndyslexia\ndyslexias\ndyslexic\ndyslexics\ndyspepsies\ndyspepsy\ndyspeptic\ndyspeptically\ndyspeptics\ndyspnea\ndyspneal\ndyspneas\ndyspneic\ndyspnoea\ndyspnoeas\ndyspnoic\ndysprosium\ndysprosiums\ndystaxia\ndystaxias\ndystocia\ndystocias\ndystonia\ndystonias\ndystopia\ndystopias\ndystrophic\ndystrophies\ndystrophy\ndysuria\ndysurias\ndysuric\ndyvour\ndyvours\neach\neager\neagerer\neagerest\neagerly\neagerness\neagers\neagle\neagles\neaglet\neaglets\neagre\neagres\neanling\neanlings\near\nearache\nearaches\neardrop\neardrops\neardrum\neardrums\neared\nearflap\nearflaps\nearful\nearfuls\nearing\nearings\nearl\nearlap\nearlaps\nearldom\nearldoms\nearless\nearlier\nearliest\nearliness\nearlobe\nearlobes\nearlock\nearlocks\nearls\nearlship\nearlships\nearly\nearmark\nearmarked\nearmarking\nearmarks\nearmuff\nearmuffs\nearn\nearned\nearner\nearners\nearnest\nearnestly\nearnestness\nearnests\nearning\nearnings\nearns\nearphone\nearphones\nearpiece\nearpieces\nearplug\nearplugs\nearring\nearrings\nears\nearshot\nearshots\nearstone\nearstones\nearth\nearthed\nearthen\nearthenware\nearthenwares\nearthier\nearthiest\nearthily\nearthiness\nearthing\nearthlier\nearthliest\nearthliness\nearthling\nearthlings\nearthly\nearthman\nearthmen\nearthnut\nearthnuts\nearthpea\nearthpeas\nearthquake\nearthquakes\nearths\nearthset\nearthsets\nearthward\nearthwards\nearthworm\nearthworms\nearthy\nearwax\nearwaxes\nearwig\nearwigged\nearwigging\nearwigs\nearworm\nearworms\nease\neased\neaseful\neasefully\neasel\neasels\neasement\neasements\neases\neasier\neasies\neasiest\neasily\neasiness\neasinesses\neasing\neast\neaster\neasterlies\neasterly\neastern\neasternmost\neasters\neasting\neastings\neasts\neastward\neastwards\neasy\neasygoing\neat\neatable\neatables\neaten\neater\neateries\neaters\neatery\neath\neating\neatings\neats\neau\neaux\neave\neaved\neaves\neavesdrop\neavesdropped\neavesdropper\neavesdroppers\neavesdropping\neavesdrops\nebb\nebbed\nebbet\nebbets\nebbing\nebbs\nebon\nebonies\nebonise\nebonised\nebonises\nebonising\nebonite\nebonites\nebonize\nebonized\nebonizes\nebonizing\nebons\nebony\nebullience\nebulliency\nebullient\nebulliently\nebullition\nebullitions\necarte\necartes\necaudate\necbolic\necbolics\neccentric\neccentrically\neccentricities\neccentricity\neccentrics\necclesia\necclesiae\necclesiastic\necclesiastical\necclesiastically\necclesiasticism\necclesiastics\neccrine\necdyses\necdysial\necdysis\necdyson\necdysone\necdysones\necdysons\necesis\necesises\nechard\nechards\neche\neched\nechelon\necheloned\necheloning\nechelons\neches\nechidna\nechidnae\nechidnas\nechinate\neching\nechini\nechinoid\nechinoids\nechinus\necho\nechoed\nechoer\nechoers\nechoes\nechoey\nechoic\nechoing\nechoism\nechoisms\necholess\neclair\neclairs\neclat\neclats\neclectic\neclectically\neclecticism\neclectics\neclipse\neclipsed\neclipses\neclipsing\neclipsis\neclipsises\necliptic\necliptics\neclogite\neclogites\neclogue\neclogues\neclosion\neclosions\necologic\necological\necologically\necologies\necologist\necologists\necology\neconometric\neconometrics\neconomic\neconomical\neconomically\neconomics\neconomies\neconomist\neconomists\neconomize\neconomized\neconomizer\neconomizers\neconomizes\neconomizing\neconomy\necosystem\necosystems\necotonal\necotone\necotones\necotype\necotypes\necotypic\necraseur\necraseurs\necru\necrus\necstasies\necstasy\necstatic\necstatically\necstatics\nectases\nectasis\nectatic\necthyma\necthymata\nectoderm\nectoderms\nectomere\nectomeres\nectopia\nectopias\nectopic\nectoplasm\nectoplasmic\nectoplasms\nectosarc\nectosarcs\nectozoa\nectozoan\nectozoans\nectozoon\nectypal\nectype\nectypes\necu\necumenic\necumenical\necumenically\necus\neczema\neczemas\neczematous\nedacious\nedacities\nedacity\nedaphic\neddied\neddies\neddo\neddoes\neddy\neddying\nedema\nedemas\nedemata\nedematous\nedentate\nedentates\nedge\nedged\nedgeless\nedger\nedgers\nedges\nedgeways\nedgewise\nedgier\nedgiest\nedgily\nedginess\nedginesses\nedging\nedgings\nedgy\nedh\nedhs\nedibility\nedible\nedibleness\nedibles\nedict\nedictal\nedicts\nedification\nedifications\nedifice\nedifices\nedified\nedifier\nedifiers\nedifies\nedify\nedifying\nedile\nediles\nedit\neditable\nedited\nediting\nedition\neditions\neditor\neditorial\neditorialist\neditorialists\neditorialization\neditorializations\neditorialize\neditorialized\neditorializer\neditorializers\neditorializes\neditorializing\neditorially\neditorials\neditors\neditress\neditresses\nedits\neducability\neducable\neducables\neducatability\neducate\neducated\neducates\neducating\neducation\neducational\neducationalist\neducationalists\neducationally\neducationist\neducationists\neducations\neducative\neducator\neducators\neduce\neduced\neduces\neducible\neducing\neduct\neduction\neductions\neductive\neductor\neductors\neducts\neel\neelgrass\neelgrasses\neelier\neeliest\neellike\neelpout\neelpouts\neels\neelworm\neelworms\neely\neerie\neerier\neeriest\neerily\neeriness\neerinesses\neery\nef\neff\neffable\nefface\neffaceable\neffaced\neffacement\neffacements\neffacer\neffacers\neffaces\neffacing\neffect\neffected\neffecter\neffecters\neffecting\neffective\neffectively\neffectiveness\neffectivity\neffector\neffectors\neffects\neffectual\neffectuality\neffectually\neffectualness\neffectuate\neffectuated\neffectuates\neffectuating\neffectuation\neffectuations\neffeminacy\neffeminate\neffeminately\neffeminateness\neffeminates\neffendi\neffendis\nefferent\nefferently\nefferents\neffervesce\neffervesced\neffervescence\neffervescent\neffervescently\neffervesces\neffervescing\neffete\neffetely\neffeteness\nefficacies\nefficacious\nefficaciously\nefficaciousness\nefficacy\nefficiencies\nefficiency\nefficient\nefficiently\neffigies\neffigy\neffloresce\neffloresced\nefflorescence\nefflorescent\neffloresces\nefflorescing\neffluence\neffluences\neffluent\neffluents\neffluvia\neffluvium\neffluviums\nefflux\neffluxes\neffort\neffortless\neffortlessly\neffortlessness\nefforts\neffronteries\neffrontery\neffs\neffulge\neffulged\neffulges\neffulging\neffuse\neffused\neffuses\neffusing\neffusion\neffusions\neffusive\neffusively\neffusiveness\nefs\neft\nefts\neftsoon\neftsoons\negad\negads\negal\negalitarian\negalitarianism\negalite\negalites\neger\negers\negest\negesta\negested\negesting\negestion\negestions\negestive\negests\negg\neggar\neggars\neggcup\neggcups\negged\negger\neggers\negghead\neggheads\negging\neggnog\neggnogs\neggplant\neggplants\neggs\neggshell\neggshells\neggy\negis\negises\neglantine\neglantines\neglatere\neglateres\nego\negocentric\negocentrically\negocentricity\negocentrics\negocentrism\negoism\negoisms\negoist\negoistic\negoistically\negoists\negomania\negomaniac\negomaniacal\negomaniacs\negomanias\negos\negotism\negotisms\negotist\negotistic\negotistical\negotistically\negotists\negregious\negregiously\negregiousness\negress\negressed\negresses\negressing\negression\negressions\negret\negrets\neh\neide\neider\neiderdown\neiderdowns\neiders\neidetic\neidetically\neidola\neidolon\neidolons\neidos\neight\neighteen\neighteens\neighteenth\neighteenths\neightfold\neighth\neighthly\neighths\neighties\neightieth\neightieths\neights\neightvo\neightvos\neighty\neikon\neikones\neikons\neinkorn\neinkorns\neirenic\neither\nejaculate\nejaculated\nejaculates\nejaculating\nejaculation\nejaculations\nejaculator\nejaculators\nejaculatory\neject\nejecta\nejected\nejecting\nejection\nejections\nejective\nejectives\nejectment\nejectments\nejector\nejectors\nejects\neke\neked\nekes\neking\nekistic\nekistics\nektexine\nektexines\nel\nelaborate\nelaborated\nelaborately\nelaborateness\nelaborates\nelaborating\nelaboration\nelaborations\nelaborative\nelain\nelains\nelan\neland\nelands\nelans\nelaphine\nelapid\nelapids\nelapine\nelapse\nelapsed\nelapses\nelapsing\nelastase\nelastases\nelastic\nelastically\nelasticities\nelasticity\nelasticized\nelastics\nelastin\nelastins\nelate\nelated\nelatedly\nelatedness\nelater\nelaterid\nelaterids\nelaterin\nelaterins\nelaters\nelates\nelating\nelation\nelations\nelative\nelatives\nelbow\nelbowed\nelbowing\nelbows\neld\nelder\nelderberries\nelderberry\nelderly\nelders\neldership\neldest\neldrich\neldritch\nelds\nelect\nelectable\nelected\nelecting\nelection\nelectioneer\nelectioneered\nelectioneering\nelectioneers\nelections\nelective\nelectively\nelectiveness\nelectives\nelector\nelectoral\nelectorate\nelectorates\nelectors\nelectret\nelectrets\nelectric\nelectrical\nelectrically\nelectrician\nelectricians\nelectricities\nelectricity\nelectrics\nelectrification\nelectrifications\nelectrified\nelectrifies\nelectrify\nelectrifying\nelectro\nelectrocardiogram\nelectrocardiograms\nelectrocardiograph\nelectrocardiographic\nelectrocardiographically\nelectrocardiographs\nelectrocardiography\nelectrochemical\nelectrochemically\nelectrochemistry\nelectrocute\nelectrocuted\nelectrocutes\nelectrocuting\nelectrocution\nelectrocutions\nelectrode\nelectrodes\nelectroed\nelectroing\nelectrolysis\nelectrolyte\nelectrolytes\nelectrolytic\nelectrolytically\nelectrolyze\nelectrolyzed\nelectrolyzes\nelectrolyzing\nelectromagnet\nelectromagnetic\nelectromagnetically\nelectromagnetism\nelectromagnets\nelectromechanical\nelectromechanically\nelectrometer\nelectrometers\nelectromotive\nelectron\nelectronic\nelectronically\nelectronics\nelectrons\nelectroplate\nelectroplated\nelectroplates\nelectroplating\nelectros\nelectroscope\nelectroscopes\nelectrostatic\nelectrostatically\nelectrostatics\nelectrotherapy\nelectrotype\nelectrotyped\nelectrotyper\nelectrotypers\nelectrotypes\nelectrotyping\nelectrum\nelectrums\nelects\neleemosynary\nelegance\nelegances\nelegancies\nelegancy\nelegant\nelegantly\nelegiac\nelegiacs\nelegies\nelegise\nelegised\nelegises\nelegising\nelegist\nelegists\nelegit\nelegits\nelegize\nelegized\nelegizes\nelegizing\nelegy\nelement\nelemental\nelementally\nelementarily\nelementariness\nelementary\nelements\nelemi\nelemis\nelenchi\nelenchic\nelenchus\nelenctic\nelephant\nelephants\nelevate\nelevated\nelevates\nelevating\nelevation\nelevations\nelevator\nelevators\neleven\nelevens\neleventh\nelevenths\nelevon\nelevons\nelf\nelfin\nelfins\nelfish\nelfishly\nelflock\nelflocks\nelhi\nelicit\nelicitation\nelicitations\nelicited\neliciting\nelicitor\nelicitors\nelicits\nelide\nelided\nelides\nelidible\neliding\neligibilities\neligibility\neligible\neligibles\neligibly\neliminate\neliminated\neliminates\neliminating\nelimination\neliminations\neliminative\neliminator\neliminators\nelint\nelision\nelisions\nelite\nelites\nelitism\nelitisms\nelitist\nelitists\nelixir\nelixirs\nelk\nelkhound\nelkhounds\nelks\nell\nellipse\nellipses\nellipsis\nellipsoid\nellipsoidal\nellipsoids\nelliptic\nelliptical\nelliptically\nellipticity\nells\nelm\nelmier\nelmiest\nelms\nelmy\nelocution\nelocutionary\nelocutionist\nelocutionists\nelocutions\nelodea\nelodeas\neloign\neloigned\neloigner\neloigners\neloigning\neloigns\neloin\neloined\neloiner\neloiners\neloining\neloins\nelongate\nelongated\nelongates\nelongating\nelongation\nelongations\nelope\neloped\nelopement\nelopements\neloper\nelopers\nelopes\neloping\neloquence\neloquences\neloquent\neloquently\nels\nelse\nelsewhere\neluant\neluants\neluate\neluates\nelucidate\nelucidated\nelucidates\nelucidating\nelucidation\nelucidations\nelucidative\nelucidator\nelucidators\nelude\neluded\neluder\neluders\neludes\neluding\neluent\neluents\nelusion\nelusions\nelusive\nelusively\nelusiveness\nelusory\nelute\neluted\nelutes\neluting\nelution\nelutions\neluvia\neluvial\neluviate\neluviated\neluviates\neluviating\neluvium\neluviums\nelver\nelvers\nelves\nelvish\nelvishly\nelysian\nelytra\nelytroid\nelytron\nelytrous\nelytrum\nem\nemaciate\nemaciated\nemaciates\nemaciating\nemaciation\nemanate\nemanated\nemanates\nemanating\nemanation\nemanational\nemanations\nemanative\nemanator\nemanators\nemancipate\nemancipated\nemancipates\nemancipating\nemancipation\nemancipationist\nemancipationists\nemancipations\nemancipator\nemancipators\nemasculate\nemasculated\nemasculates\nemasculating\nemasculation\nemasculations\nemasculator\nemasculators\nembalm\nembalmed\nembalmer\nembalmers\nembalming\nembalmment\nembalmments\nembalms\nembank\nembanked\nembanking\nembankment\nembankments\nembanks\nembar\nembargo\nembargoed\nembargoes\nembargoing\nembark\nembarkation\nembarkations\nembarked\nembarking\nembarkment\nembarkments\nembarks\nembarrass\nembarrassed\nembarrassedly\nembarrasses\nembarrassing\nembarrassingly\nembarrassment\nembarrassments\nembarred\nembarring\nembars\nembassies\nembassy\nembattle\nembattled\nembattles\nembattling\nembay\nembayed\nembaying\nembays\nembed\nembedded\nembedding\nembedment\nembedments\nembeds\nembellish\nembellished\nembellisher\nembellishers\nembellishes\nembellishing\nembellishment\nembellishments\nember\nembers\nembezzle\nembezzled\nembezzlement\nembezzlements\nembezzler\nembezzlers\nembezzles\nembezzling\nembitter\nembittered\nembittering\nembitterment\nembitterments\nembitters\nemblaze\nemblazed\nemblazer\nemblazers\nemblazes\nemblazing\nemblazon\nemblazoned\nemblazoner\nemblazoners\nemblazoning\nemblazonment\nemblazonments\nemblazonry\nemblazons\nemblem\nemblematic\nemblematical\nemblematically\nemblematize\nemblematized\nemblematizes\nemblematizing\nemblemed\nembleming\nemblems\nembodied\nembodier\nembodiers\nembodies\nembodiment\nembodiments\nembody\nembodying\nembolden\nemboldened\nemboldening\nemboldens\nemboli\nembolic\nembolies\nembolism\nembolismic\nembolisms\nembolus\nemboly\nemborder\nembordered\nembordering\nemborders\nembosk\nembosked\nembosking\nembosks\nembosom\nembosomed\nembosoming\nembosoms\nemboss\nembossed\nembosser\nembossers\nembosses\nembossing\nembossment\nembossments\nembouchure\nembouchures\nembow\nembowed\nembowel\nemboweled\nemboweling\nembowelled\nembowelling\nembowels\nembower\nembowered\nembowering\nembowers\nembowing\nembows\nembrace\nembraceable\nembraced\nembracement\nembracements\nembracer\nembraceries\nembracers\nembracery\nembraces\nembracing\nembrasure\nembrasures\nembroider\nembroidered\nembroiderer\nembroiderers\nembroideries\nembroidering\nembroiders\nembroidery\nembroil\nembroiled\nembroiling\nembroilment\nembroilments\nembroils\nembrown\nembrowned\nembrowning\nembrowns\nembrue\nembrued\nembrues\nembruing\nembrute\nembruted\nembrutes\nembruting\nembryo\nembryoid\nembryologic\nembryological\nembryologically\nembryologies\nembryologist\nembryologists\nembryology\nembryon\nembryonal\nembryonic\nembryonically\nembryons\nembryos\nemcee\nemceed\nemceeing\nemcees\neme\nemeer\nemeerate\nemeerates\nemeers\nemend\nemendable\nemendate\nemendated\nemendates\nemendating\nemendation\nemendations\nemended\nemender\nemenders\nemending\nemends\nemerald\nemeralds\nemerge\nemerged\nemergence\nemergencies\nemergency\nemergent\nemergents\nemerges\nemerging\nemeries\nemerita\nemeriti\nemeritus\nemerod\nemerods\nemeroid\nemeroids\nemersed\nemersion\nemersions\nemery\nemes\nemeses\nemesis\nemetic\nemetically\nemetics\nemetin\nemetine\nemetines\nemetins\nemeu\nemeus\nemeute\nemeutes\nemic\nemigrant\nemigrants\nemigrate\nemigrated\nemigrates\nemigrating\nemigration\nemigrations\nemigre\nemigres\neminence\neminences\neminencies\neminency\neminent\neminently\nemir\nemirate\nemirates\nemirs\nemissaries\nemissary\nemission\nemissions\nemissive\nemit\nemits\nemitted\nemitter\nemitters\nemitting\nemmer\nemmers\nemmet\nemmets\nemodin\nemodins\nemollient\nemollients\nemolument\nemoluments\nemote\nemoted\nemoter\nemoters\nemotes\nemoting\nemotion\nemotional\nemotionalism\nemotionalist\nemotionalistic\nemotionalists\nemotionalities\nemotionality\nemotionalize\nemotionalized\nemotionalizes\nemotionalizing\nemotionally\nemotionless\nemotions\nemotive\nemotively\nempale\nempaled\nempaler\nempalers\nempales\nempaling\nempanel\nempaneled\nempaneling\nempanelled\nempanelling\nempanels\nempathic\nempathies\nempathize\nempathized\nempathizes\nempathizing\nempathy\nempennage\nempennages\nemperies\nemperor\nemperors\nemperorship\nempery\nemphases\nemphasis\nemphasize\nemphasized\nemphasizes\nemphasizing\nemphatic\nemphatically\nemphysema\nemphysematous\nempire\nempires\nempiric\nempirical\nempirically\nempiricism\nempiricist\nempiricists\nempirics\nemplace\nemplaced\nemplacement\nemplacements\nemplaces\nemplacing\nemplane\nemplaned\nemplanes\nemplaning\nemploy\nemployability\nemployable\nemploye\nemployed\nemployee\nemployees\nemployer\nemployers\nemployes\nemploying\nemployment\nemployments\nemploys\nempoison\nempoisoned\nempoisoning\nempoisons\nemporia\nemporium\nemporiums\nempower\nempowered\nempowering\nempowerment\nempowers\nempress\nempresses\nemprise\nemprises\nemprize\nemprizes\nemptied\nemptier\nemptiers\nempties\nemptiest\nemptily\nemptiness\nemptings\nemptins\nempty\nemptying\nempurple\nempurpled\nempurples\nempurpling\nempyema\nempyemas\nempyemata\nempyemic\nempyreal\nempyrean\nempyreans\nems\nemu\nemulate\nemulated\nemulates\nemulating\nemulation\nemulations\nemulative\nemulatively\nemulator\nemulators\nemulous\nemulsible\nemulsifiable\nemulsification\nemulsifications\nemulsified\nemulsifier\nemulsifiers\nemulsifies\nemulsify\nemulsifying\nemulsion\nemulsions\nemulsive\nemulsoid\nemulsoids\nemus\nemyd\nemyde\nemydes\nemyds\nen\nenable\nenabled\nenabler\nenablers\nenables\nenabling\nenact\nenacted\nenacting\nenactive\nenactment\nenactments\nenactor\nenactors\nenactory\nenacts\nenamel\nenameled\nenameler\nenamelers\nenameling\nenamelist\nenamelists\nenamelled\nenamelling\nenamels\nenamelware\nenamine\nenamines\nenamor\nenamored\nenamoring\nenamors\nenamour\nenamoured\nenamouring\nenamours\nenate\nenates\nenatic\nenation\nenations\nencaenia\nencage\nencaged\nencages\nencaging\nencamp\nencamped\nencamping\nencampment\nencampments\nencamps\nencapsulate\nencapsulated\nencapsulates\nencapsulating\nencapsulation\nencapsulations\nencase\nencased\nencasement\nencasements\nencases\nencash\nencashed\nencashes\nencashing\nencasing\nencaustic\nencaustics\nenceinte\nenceintes\nencephalitis\nencephalogram\nencephalograms\nencephalograph\nencephalographs\nencephalography\nenchain\nenchained\nenchaining\nenchains\nenchant\nenchanted\nenchanter\nenchanters\nenchanting\nenchantment\nenchantments\nenchantress\nenchantresses\nenchants\nenchase\nenchased\nenchaser\nenchasers\nenchases\nenchasing\nenchilada\nenchiladas\nenchoric\nencina\nencinal\nencinas\nencipher\nenciphered\nenciphering\nenciphers\nencircle\nencircled\nencirclement\nencirclements\nencircles\nencircling\nenclasp\nenclasped\nenclasping\nenclasps\nenclave\nenclaves\nenclitic\nenclitics\nenclose\nenclosed\nencloser\nenclosers\nencloses\nenclosing\nenclosure\nenclosures\nencode\nencoded\nencoder\nencoders\nencodes\nencoding\nencomia\nencomiastic\nencomiastically\nencomium\nencomiums\nencompass\nencompassed\nencompasses\nencompassing\nencompassment\nencompassments\nencore\nencored\nencores\nencoring\nencounter\nencountered\nencountering\nencounters\nencourage\nencouraged\nencouragement\nencouragements\nencourager\nencouragers\nencourages\nencouraging\nencouragingly\nencroach\nencroached\nencroacher\nencroachers\nencroaches\nencroaching\nencroachment\nencroachments\nencrust\nencrustation\nencrustations\nencrusted\nencrusting\nencrusts\nencrypt\nencrypted\nencrypting\nencryption\nencryptions\nencrypts\nencumber\nencumbered\nencumbering\nencumbers\nencumbrance\nencumbrancer\nencumbrancers\nencumbrances\nencyclic\nencyclical\nencyclicals\nencyclics\nencyclopedia\nencyclopedias\nencyclopedic\nencyclopedically\nencyclopedism\nencyclopedist\nencyclopedists\nencyst\nencysted\nencysting\nencysts\nend\nendamage\nendamaged\nendamages\nendamaging\nendameba\nendamebae\nendamebas\nendanger\nendangered\nendangering\nendangerment\nendangers\nendarch\nendarchies\nendarchy\nendbrain\nendbrains\nendear\nendeared\nendearing\nendearingly\nendearment\nendearments\nendears\nendeavor\nendeavored\nendeavoring\nendeavors\nended\nendemial\nendemic\nendemically\nendemicity\nendemics\nendemism\nendemisms\nender\nendermic\nenders\nendexine\nendexines\nending\nendings\nendite\nendited\nendites\nenditing\nendive\nendives\nendleaf\nendleaves\nendless\nendlessly\nendlessness\nendlong\nendmost\nendocarp\nendocarps\nendocrine\nendocrinological\nendocrinologist\nendocrinologists\nendocrinology\nendoderm\nendoderms\nendogamies\nendogamous\nendogamy\nendogen\nendogenies\nendogens\nendogeny\nendopod\nendopods\nendorsable\nendorse\nendorsed\nendorsee\nendorsees\nendorsement\nendorsements\nendorser\nendorsers\nendorses\nendorsing\nendorsingly\nendorsor\nendorsors\nendosarc\nendosarcs\nendosmos\nendosmoses\nendosome\nendosomes\nendostea\nendow\nendowed\nendower\nendowers\nendowing\nendowment\nendowments\nendows\nendozoic\nendpaper\nendpapers\nendplate\nendplates\nendrin\nendrins\nends\nendue\nendued\nendues\nenduing\nendurable\nendurably\nendurance\nendurances\nendure\nendured\nendures\nenduring\nenduringly\nenduringness\nenduro\nenduros\nendways\nendwise\nenema\nenemas\nenemata\nenemies\nenemy\nenergetic\nenergetically\nenergeticist\nenergeticists\nenergetics\nenergid\nenergids\nenergies\nenergise\nenergised\nenergises\nenergising\nenergize\nenergized\nenergizer\nenergizers\nenergizes\nenergizing\nenergy\nenervate\nenervated\nenervates\nenervating\nenervation\nenervations\nenface\nenfaced\nenfaces\nenfacing\nenfeeble\nenfeebled\nenfeeblement\nenfeeblements\nenfeebles\nenfeebling\nenfeoff\nenfeoffed\nenfeoffing\nenfeoffs\nenfetter\nenfettered\nenfettering\nenfetters\nenfever\nenfevered\nenfevering\nenfevers\nenfilade\nenfiladed\nenfilades\nenfilading\nenflame\nenflamed\nenflames\nenflaming\nenfold\nenfolded\nenfolder\nenfolders\nenfolding\nenfolds\nenforce\nenforceability\nenforceable\nenforced\nenforcement\nenforcements\nenforcer\nenforcers\nenforces\nenforcing\nenframe\nenframed\nenframes\nenframing\nenfranchise\nenfranchised\nenfranchisement\nenfranchisements\nenfranchising\neng\nengage\nengaged\nengagement\nengagements\nengager\nengagers\nengages\nengaging\nengagingly\nengender\nengendered\nengendering\nengenders\nengild\nengilded\nengilding\nengilds\nengine\nengined\nengineer\nengineered\nengineering\nengineers\nengineries\nenginery\nengines\nengining\nenginous\nengird\nengirded\nengirding\nengirdle\nengirdled\nengirdles\nengirdling\nengirds\nengirt\nenglish\nenglished\nenglishes\nenglishing\nenglishness\nenglut\nengluts\nenglutted\nenglutting\nengorge\nengorged\nengorgement\nengorgements\nengorges\nengorging\nengraft\nengrafted\nengrafting\nengrafts\nengrail\nengrailed\nengrailing\nengrails\nengrain\nengrained\nengraining\nengrains\nengram\nengramme\nengrammes\nengrams\nengrave\nengraved\nengraver\nengravers\nengraves\nengraving\nengravings\nengross\nengrossed\nengrosser\nengrossers\nengrosses\nengrossing\nengrossingly\nengrossment\nengrossments\nengs\nengulf\nengulfed\nengulfing\nengulfment\nengulfments\nengulfs\nenhalo\nenhaloed\nenhaloes\nenhaloing\nenhalos\nenhance\nenhanced\nenhancement\nenhancements\nenhancer\nenhancers\nenhances\nenhancing\nenigma\nenigmas\nenigmata\nenigmatic\nenigmatical\nenigmatically\nenisle\nenisled\nenisles\nenisling\nenjambed\nenjoin\nenjoined\nenjoiner\nenjoiners\nenjoining\nenjoins\nenjoy\nenjoyable\nenjoyableness\nenjoyably\nenjoyed\nenjoyer\nenjoyers\nenjoying\nenjoyment\nenjoyments\nenjoys\nenkindle\nenkindled\nenkindles\nenkindling\nenlace\nenlaced\nenlacement\nenlaces\nenlacing\nenlarge\nenlarged\nenlargement\nenlargements\nenlarger\nenlargers\nenlarges\nenlarging\nenlighten\nenlightened\nenlightening\nenlightenment\nenlightenments\nenlightens\nenlist\nenlisted\nenlistee\nenlistees\nenlister\nenlisters\nenlisting\nenlistment\nenlistments\nenlists\nenliven\nenlivened\nenlivening\nenlivens\nenmesh\nenmeshed\nenmeshes\nenmeshing\nenmeshment\nenmities\nenmity\nennead\nenneadic\nenneads\nenneagon\nenneagons\nennoble\nennobled\nennoblement\nennoblements\nennobler\nennoblers\nennobles\nennobling\nennui\nennuis\nennuye\nennuyee\nenol\nenolase\nenolases\nenolic\nenologies\nenology\nenols\nenorm\nenormities\nenormity\nenormous\nenormously\nenormousness\nenosis\nenosises\nenough\nenoughs\nenounce\nenounced\nenounces\nenouncing\nenow\nenows\nenplane\nenplaned\nenplanes\nenplaning\nenquire\nenquired\nenquires\nenquiries\nenquiring\nenquiry\nenrage\nenraged\nenrages\nenraging\nenrapt\nenrapting\nenrapture\nenraptured\nenraptures\nenrapturing\nenravish\nenravished\nenravishes\nenravishing\nenrich\nenriched\nenricher\nenrichers\nenriches\nenriching\nenrichment\nenrichments\nenrobe\nenrobed\nenrober\nenrobers\nenrobes\nenrobing\nenrol\nenroll\nenrolled\nenrollee\nenrollees\nenroller\nenrollers\nenrolling\nenrollment\nenrollments\nenrolls\nenrolment\nenrolments\nenrols\nenroot\nenrooted\nenrooting\nenroots\nens\nensample\nensamples\nensconce\nensconced\nensconces\nensconcing\nenscroll\nenscrolled\nenscrolling\nenscrolls\nensemble\nensembles\nenserf\nenserfed\nenserfing\nenserfs\nensheath\nensheathed\nensheathing\nensheaths\nenshrine\nenshrined\nenshrinement\nenshrinements\nenshrines\nenshrining\nenshroud\nenshrouded\nenshrouding\nenshrouds\nensiform\nensign\nensigncies\nensigncy\nensigns\nensilage\nensilaged\nensilages\nensilaging\nensile\nensiled\nensiles\nensiling\nenskied\nenskies\nensky\nenskyed\nenskying\nenslave\nenslaved\nenslavement\nenslavements\nenslaver\nenslavers\nenslaves\nenslaving\nensnare\nensnared\nensnarer\nensnarers\nensnares\nensnaring\nensnarl\nensnarled\nensnarling\nensnarls\nensorcel\nensorceled\nensorceling\nensorcels\nensoul\nensouled\nensouling\nensouls\nensphere\nensphered\nenspheres\nensphering\nensue\nensued\nensues\nensuing\nensure\nensured\nensurer\nensurers\nensures\nensuring\nenswathe\nenswathed\nenswathes\nenswathing\nentail\nentailed\nentailer\nentailers\nentailing\nentailment\nentailments\nentails\nentameba\nentamebae\nentamebas\nentangle\nentangled\nentanglement\nentanglements\nentangler\nentanglers\nentangles\nentangling\nentases\nentasia\nentasias\nentasis\nentastic\nentellus\nentelluses\nentente\nententes\nenter\nentera\nenterable\nenteral\nentered\nenterer\nenterers\nenteric\nentering\nenteron\nenterons\nenterprise\nenterpriser\nenterprisers\nenterprises\nenterprising\nenters\nentertain\nentertained\nentertainer\nentertainers\nentertaining\nentertainingly\nentertainment\nentertainments\nentertains\nenthalpies\nenthalpy\nenthetic\nenthral\nenthrall\nenthralled\nenthralling\nenthrallment\nenthrallments\nenthralls\nenthralment\nenthralments\nenthrals\nenthrone\nenthroned\nenthronement\nenthronements\nenthrones\nenthroning\nenthuse\nenthused\nenthuses\nenthusiasm\nenthusiasms\nenthusiast\nenthusiastic\nenthusiastically\nenthusiasts\nenthusing\nentia\nentice\nenticed\nenticement\nenticements\nenticer\nenticers\nentices\nenticing\nenticingly\nenties\nentire\nentirely\nentireness\nentires\nentireties\nentirety\nentitle\nentitled\nentitlement\nentitlements\nentitles\nentitling\nentity\nentoderm\nentoderms\nentoil\nentoiled\nentoiling\nentoils\nentomb\nentombed\nentombing\nentombment\nentombments\nentombs\nentomological\nentomologically\nentomologies\nentomologist\nentomologists\nentomology\nentopic\nentourage\nentourages\nentozoa\nentozoal\nentozoan\nentozoans\nentozoic\nentozoon\nentrails\nentrain\nentrained\nentraining\nentrains\nentrance\nentranced\nentrancement\nentrancements\nentrances\nentrancing\nentrant\nentrants\nentrap\nentrapment\nentrapments\nentrapped\nentrapping\nentraps\nentreat\nentreated\nentreaties\nentreating\nentreatingly\nentreatment\nentreatments\nentreats\nentreaty\nentree\nentrees\nentrench\nentrenched\nentrencher\nentrenchers\nentrenches\nentrenching\nentrenchment\nentrenchments\nentrepot\nentrepots\nentrepreneur\nentrepreneurial\nentrepreneurs\nentrepreneurship\nentresol\nentresols\nentries\nentropies\nentropy\nentrust\nentrusted\nentrusting\nentrustment\nentrustments\nentrusts\nentry\nentryway\nentryways\nentwine\nentwined\nentwines\nentwining\nentwist\nentwisted\nentwisting\nentwists\nenumerate\nenumerated\nenumerates\nenumerating\nenumeration\nenumerations\nenumerative\nenumerator\nenumerators\nenunciate\nenunciated\nenunciates\nenunciating\nenunciation\nenunciations\nenunciator\nenunciators\nenure\nenured\nenures\nenuresis\nenuresises\nenuretic\nenuring\nenvelop\nenvelope\nenveloped\nenvelopes\nenveloping\nenvelopment\nenvelopments\nenvelops\nenvenom\nenvenomed\nenvenoming\nenvenoms\nenviable\nenviably\nenvied\nenvier\nenviers\nenvies\nenvious\nenviously\nenviousness\nenviron\nenvironed\nenvironing\nenvironment\nenvironmental\nenvironmentalism\nenvironmentalist\nenvironmentalists\nenvironmentally\nenvironments\nenvirons\nenvisage\nenvisaged\nenvisages\nenvisaging\nenvision\nenvisioned\nenvisioning\nenvisions\nenvoi\nenvois\nenvoy\nenvoys\nenvy\nenvying\nenvyingly\nenwheel\nenwheeled\nenwheeling\nenwheels\nenwind\nenwinding\nenwinds\nenwomb\nenwombed\nenwombing\nenwombs\nenwound\nenwrap\nenwrapped\nenwrapping\nenwraps\nenzootic\nenzootics\nenzym\nenzymatic\nenzymatically\nenzyme\nenzymes\nenzymic\nenzymologist\nenzymologists\nenzymology\nenzyms\neobiont\neobionts\neohippus\neohippuses\neolian\neolipile\neolipiles\neolith\neolithic\neoliths\neolopile\neolopiles\neon\neonian\neonism\neonisms\neons\neosin\neosine\neosines\neosinic\neosins\nepact\nepacts\neparch\neparchies\neparchs\neparchy\nepaulet\nepaulets\nepaulette\nepaulettes\nepee\nepeeist\nepeeists\nepees\nepeiric\nepergne\nepergnes\nepha\nephah\nephahs\nephas\nephebe\nephebes\nephebi\nephebic\nepheboi\nephebos\nephebus\nephedra\nephedras\nephedrin\nephedrins\nephemera\nephemerae\nephemeral\nephemeralities\nephemerality\nephemerally\nephemeras\nephemerides\nephemeris\nephod\nephods\nephor\nephoral\nephorate\nephorates\nephori\nephors\nepiblast\nepiblasts\nepibolic\nepibolies\nepiboly\nepic\nepical\nepically\nepicalyces\nepicalyx\nepicalyxes\nepicarp\nepicarps\nepicedia\nepicene\nepicenes\nepicenter\nepicenters\nepiclike\nepicotyl\nepicotyls\nepics\nepicure\nepicurean\nepicureanism\nepicureans\nepicures\nepicycle\nepicycles\nepidemic\nepidemical\nepidemically\nepidemics\nepidemiological\nepidemiologically\nepidemiologist\nepidemiologists\nepidemiology\nepiderm\nepidermal\nepidermis\nepiderms\nepidote\nepidotes\nepidotic\nepidural\nepifauna\nepifaunae\nepifaunas\nepifocal\nepigeal\nepigean\nepigene\nepigenic\nepigeous\nepigon\nepigone\nepigones\nepigoni\nepigonic\nepigons\nepigonus\nepigram\nepigrammatic\nepigrammatically\nepigrammatist\nepigrammatists\nepigrammatize\nepigrammatized\nepigrammatizes\nepigrammatizing\nepigrams\nepigraph\nepigraphic\nepigraphically\nepigraphist\nepigraphists\nepigraphs\nepigraphy\nepigynies\nepigyny\nepilepsies\nepilepsy\nepileptic\nepileptically\nepileptics\nepilog\nepilogs\nepilogue\nepilogued\nepilogues\nepiloguing\nepimer\nepimere\nepimeres\nepimeric\nepimers\nepimysia\nepinaoi\nepinaos\nepinasties\nepinasty\nepinephrin\nepinephrine\nepinephrines\nepiphanies\nepiphany\nepiphyte\nepiphytes\nepiphytic\nepiphytically\nepiscia\nepiscias\nepiscopacies\nepiscopacy\nepiscopal\nepiscopally\nepiscopate\nepiscopates\nepiscope\nepiscopes\nepisode\nepisodes\nepisodic\nepisodical\nepisodically\nepisomal\nepisome\nepisomes\nepistasies\nepistasy\nepistemological\nepistemologically\nepistemologies\nepistemologist\nepistemologists\nepistemology\nepistle\nepistler\nepistlers\nepistles\nepistolaries\nepistolary\nepistyle\nepistyles\nepitaph\nepitaphial\nepitaphic\nepitaphs\nepitases\nepitasis\nepitaxies\nepitaxy\nepithelia\nepithelium\nepithet\nepithetic\nepithetical\nepithets\nepitome\nepitomes\nepitomic\nepitomize\nepitomized\nepitomizes\nepitomizing\nepizoa\nepizoic\nepizoism\nepizoisms\nepizoite\nepizoites\nepizoon\nepizooties\nepizooty\nepoch\nepochal\nepochally\nepochs\nepode\nepodes\neponym\neponymic\neponymies\neponymous\neponyms\neponymy\nepopee\nepopees\nepopoeia\nepopoeias\nepos\neposes\nepoxide\nepoxides\nepoxied\nepoxies\nepoxy\nepoxyed\nepoxying\nepsilon\nepsilons\nequability\nequable\nequableness\nequably\nequal\nequaled\nequaling\nequalise\nequalised\nequalises\nequalising\nequalitarian\nequalitarianism\nequalitarians\nequalities\nequality\nequalization\nequalizations\nequalize\nequalized\nequalizer\nequalizers\nequalizes\nequalizing\nequalled\nequalling\nequally\nequals\nequanimities\nequanimity\nequate\nequated\nequates\nequating\nequation\nequational\nequationally\nequations\nequator\nequatorial\nequators\nequerries\nequerry\nequestrian\nequestrians\nequestrienne\nequestriennes\nequiangular\nequidistant\nequidistantly\nequilateral\nequilibrate\nequilibrated\nequilibrates\nequilibrating\nequilibration\nequilibrations\nequilibrator\nequilibrators\nequilibratory\nequilibria\nequilibrium\nequilibriums\nequine\nequinely\nequines\nequinities\nequinity\nequinoctial\nequinox\nequinoxes\nequip\nequipage\nequipages\nequipment\nequipments\nequipoise\nequipoised\nequipoises\nequipoising\nequipollence\nequipollences\nequipollent\nequipollently\nequipped\nequipper\nequippers\nequipping\nequips\nequiseta\nequitable\nequitableness\nequitably\nequitant\nequitation\nequitations\nequites\nequities\nequity\nequivalence\nequivalences\nequivalencies\nequivalency\nequivalent\nequivalently\nequivalents\nequivocal\nequivocality\nequivocally\nequivocalness\nequivocate\nequivocated\nequivocates\nequivocating\nequivocation\nequivocations\nequivocator\nequivocators\nequivoke\nequivokes\ner\nera\neradiate\neradiated\neradiates\neradiating\neradicable\neradicate\neradicated\neradicates\neradicating\neradication\neradications\neradicator\neradicators\neras\nerasable\nerase\nerased\neraser\nerasers\nerases\nerasing\nerasion\nerasions\nerasure\nerasures\nerbium\nerbiums\nere\nerect\nerectable\nerected\nerecter\nerecters\nerectile\nerectility\nerecting\nerection\nerections\nerective\nerectly\nerectness\nerector\nerectors\nerects\nerelong\neremite\neremites\neremitic\neremitical\neremitism\neremitisms\neremuri\neremurus\nerenow\nerepsin\nerepsins\nerethic\nerethism\nerethisms\nerewhile\nerg\nergastic\nergate\nergates\nergo\nergodic\nergonomic\nergonomically\nergonomics\nergonomist\nergonomists\nergosterol\nergosterols\nergot\nergotic\nergotism\nergotisms\nergots\nergs\nerica\nericas\nericoid\nerigeron\nerigerons\neringo\neringoes\neringos\neristic\neristics\nerlking\nerlkings\nermine\nermined\nermines\nern\nerne\nernes\nerns\nerode\neroded\nerodent\nerodes\nerodible\neroding\nerogenic\nerogenous\neros\nerose\nerosely\neroses\nerosible\nerosion\nerosional\nerosions\nerosive\nerosiveness\nerosivity\nerotic\nerotica\nerotical\nerotically\neroticism\neroticisms\nerotics\nerotism\nerotisms\nerr\nerrancies\nerrancy\nerrand\nerrands\nerrant\nerrantly\nerrantries\nerrantry\nerrants\nerrata\nerratas\nerratic\nerratical\nerratically\nerraticism\nerraticisms\nerratics\nerratum\nerred\nerrhine\nerrhines\nerring\nerringly\nerroneous\nerroneously\nerroneousness\nerror\nerrors\nerrs\ners\nersatz\nersatzes\nerses\nerst\nerstwhile\neruct\neructate\neructated\neructates\neructating\neructation\neructations\neructed\neructing\neructs\nerudite\neruditely\nerudition\neruditions\nerugo\nerugos\nerumpent\nerupt\nerupted\neruptible\nerupting\neruption\neruptions\neruptive\neruptively\neruptives\nerupts\nervil\nervils\neryngo\neryngoes\neryngos\nerythema\nerythemas\nerythrocyte\nerythrocytes\nerythrocytic\nerythromycin\nerythromycins\nerythron\nerythrons\nes\nescadrille\nescadrilles\nescalade\nescaladed\nescalades\nescalading\nescalate\nescalated\nescalates\nescalating\nescalation\nescalations\nescalator\nescalators\nescalatory\nescallop\nescalloped\nescalloping\nescallops\nescalop\nescaloped\nescaloping\nescalops\nescapable\nescapade\nescapades\nescape\nescaped\nescapee\nescapees\nescapement\nescapements\nescaper\nescapers\nescapes\nescaping\nescapism\nescapisms\nescapist\nescapists\nescar\nescargot\nescargots\nescarole\nescaroles\nescarp\nescarped\nescarping\nescarpment\nescarpments\nescarps\nescars\neschalot\neschalots\neschar\neschars\nescheat\nescheatable\nescheated\nescheating\nescheats\neschew\neschewal\neschewals\neschewed\neschewing\neschews\nescolar\nescolars\nescort\nescorted\nescorting\nescorts\nescot\nescoted\nescoting\nescots\nescrow\nescrowed\nescrowing\nescrows\nescuage\nescuages\nescudo\nescudos\nesculent\nesculents\nescutcheon\nescutcheons\neserine\neserines\neses\neskar\neskars\nesker\neskers\nesophagi\nesoteric\nesoterically\nespadrille\nespadrilles\nespalier\nespaliered\nespaliering\nespaliers\nespanol\nespanoles\nesparto\nespartos\nespecial\nespecially\nesperantos\nespial\nespials\nespied\nespiegle\nespies\nespionage\nespionages\nesplanade\nesplanades\nespousal\nespousals\nespouse\nespoused\nespouser\nespousers\nespouses\nespousing\nespresso\nespressos\nesprit\nesprits\nespy\nespying\nesquire\nesquired\nesquires\nesquiring\ness\nessancias\nessay\nessayed\nessayer\nessayers\nessaying\nessayist\nessayistic\nessayists\nessays\nessence\nessences\nessential\nessentialism\nessentialist\nessentialists\nessentialities\nessentiality\nessentially\nessentialness\nessentials\nesses\nessoin\nessoins\nessonite\nessonites\nestablish\nestablished\nestablisher\nestablishers\nestablishes\nestablishing\nestablishment\nestablishmentarian\nestablishmentarianism\nestablishmentarianisms\nestablishmentarians\nestablishments\nestancia\nestancias\nestate\nestated\nestates\nestating\nesteem\nesteemed\nesteeming\nesteems\nester\nesterase\nesterases\nesterified\nesterifies\nesterify\nesterifying\nesters\nestheses\nesthesia\nesthesias\nesthesis\nesthesises\nesthete\nesthetes\nesthetic\nesthetical\nesthetically\nestheticism\nesthetics\nestimable\nestimableness\nestimate\nestimated\nestimates\nestimating\nestimation\nestimations\nestimative\nestimator\nestimators\nestival\nestivate\nestivated\nestivates\nestivating\nestivation\nestivations\nestop\nestopped\nestoppel\nestoppels\nestopping\nestops\nestovers\nestragon\nestragons\nestral\nestrange\nestranged\nestrangement\nestrangements\nestranger\nestrangers\nestranges\nestranging\nestray\nestrayed\nestraying\nestrays\nestreat\nestreated\nestreating\nestreats\nestrin\nestrins\nestriol\nestriols\nestrogen\nestrogenic\nestrogenically\nestrogens\nestrone\nestrones\nestrous\nestrual\nestrum\nestrums\nestrus\nestruses\nestuarial\nestuaries\nestuarine\nestuary\nesurient\net\neta\netagere\netageres\netamin\netamine\netamines\netamins\netape\netapes\netas\netatism\netatisms\netatist\netcetera\netceteras\netch\netched\netcher\netchers\netches\netching\netchings\neternal\neternally\neternalness\neternals\neterne\neternise\neternised\neternises\neternising\neternities\neternity\neternization\neternizations\neternize\neternized\neternizes\neternizing\netesian\netesians\neth\nethane\nethanes\nethanol\nethanols\nethene\nethenes\nether\nethereal\netherealities\nethereality\netherealization\netherealizations\netherealize\netherealized\netherealizes\netherealizing\nethereally\netherealness\netheric\netherified\netherifies\netherify\netherifying\netherish\netherization\netherizations\netherize\netherized\netherizer\netherizers\netherizes\netherizing\nethers\nethic\nethical\nethicality\nethically\nethicalness\nethicals\nethician\nethicians\nethicist\nethicists\nethicize\nethicized\nethicizes\nethicizing\nethics\nethinyl\nethinyls\nethion\nethions\nethmoid\nethmoids\nethnarch\nethnarchs\nethnic\nethnical\nethnically\nethnics\nethnocentric\nethnocentricity\nethnocentrism\nethnographer\nethnographers\nethnographic\nethnographical\nethnographically\nethnographies\nethnography\nethnologic\nethnological\nethnologically\nethnologies\nethnologist\nethnologists\nethnology\nethnos\nethnoses\nethologies\nethology\nethos\nethoses\nethoxy\nethoxyl\nethoxyls\neths\nethyl\nethylate\nethylated\nethylates\nethylating\nethylene\nethylenes\nethylic\nethyls\nethyne\nethynes\nethynyl\nethynyls\netic\netiolate\netiolated\netiolates\netiolating\netiologic\netiological\netiologically\netiologies\netiology\netiquette\netiquettes\netna\netnas\netoile\netoiles\netude\netudes\netui\netuis\netwee\netwees\netyma\netymological\netymologically\netymologies\netymologist\netymologists\netymologize\netymologized\netymologizes\netymologizing\netymology\netymon\netymons\neucaine\neucaines\neucalypt\neucalypti\neucalypts\neucalyptus\neucalyptuses\neucharis\neucharises\neucharistic\neuchre\neuchred\neuchres\neuchring\neuclase\neuclases\neucrite\neucrites\neucritic\neudaemon\neudaemons\neudemon\neudemons\neugenic\neugenically\neugenicist\neugenicists\neugenics\neugenist\neugenists\neugenol\neugenols\neuglena\neuglenas\neulachan\neulachans\neulachon\neulachons\neulogia\neulogiae\neulogias\neulogies\neulogise\neulogised\neulogises\neulogising\neulogist\neulogistic\neulogistically\neulogists\neulogium\neulogiums\neulogize\neulogized\neulogizer\neulogizers\neulogizes\neulogizing\neulogy\neunuch\neunuchs\neuonymus\neuonymuses\neupatrid\neupatridae\neupatrids\neupepsia\neupepsias\neupepsies\neupepsy\neupeptic\neuphemism\neuphemisms\neuphemistic\neuphemistically\neuphenic\neuphonic\neuphonically\neuphonies\neuphonious\neuphoniously\neuphoniousness\neuphonium\neuphoniums\neuphony\neuphoria\neuphorias\neuphoric\neuphotic\neuphrasies\neuphrasy\neuphroe\neuphroes\neuphuism\neuphuisms\neuphuist\neuphuists\neuploid\neuploidies\neuploids\neuploidy\neupnea\neupneas\neupneic\neupnoea\neupnoeas\neupnoeic\neureka\neurhythmic\neurhythmics\neuripi\neuripus\neuro\neuropium\neuropiums\neuros\neurythmic\neurythmics\neurythmies\neurythmy\neustacies\neustacy\neustatic\neustele\neusteles\neutaxies\neutaxy\neutectic\neutectics\neuthanasia\neuthanasias\neuthanasic\neutrophies\neutrophy\neuxenite\neuxenites\nevacuant\nevacuants\nevacuate\nevacuated\nevacuates\nevacuating\nevacuation\nevacuations\nevacuative\nevacuator\nevacuators\nevacuee\nevacuees\nevadable\nevade\nevaded\nevader\nevaders\nevades\nevadible\nevading\nevaluate\nevaluated\nevaluates\nevaluating\nevaluation\nevaluations\nevaluative\nevaluator\nevaluators\nevanesce\nevanesced\nevanescence\nevanescences\nevanescent\nevanesces\nevanescing\nevangel\nevangelical\nevangelically\nevangelism\nevangelisms\nevangelist\nevangelistic\nevangelistically\nevangelists\nevangelization\nevangelizations\nevangelize\nevangelized\nevangelizer\nevangelizers\nevangelizes\nevangelizing\nevangels\nevanish\nevanished\nevanishes\nevanishing\nevaporate\nevaporated\nevaporates\nevaporating\nevaporation\nevaporations\nevaporative\nevaporator\nevaporators\nevapotranspiration\nevapotranspirations\nevasion\nevasions\nevasive\nevasively\nevasiveness\neve\nevection\nevections\neven\nevened\nevener\neveners\nevenest\nevenfall\nevenfalls\nevenhanded\nevenhandedly\nevenhandedness\nevening\nevenings\nevenly\nevenness\nevennesses\nevens\nevensong\nevensongs\nevent\neventful\neventfully\neventfulness\neventide\neventides\nevents\neventual\neventualities\neventuality\neventually\neventuate\neventuated\neventuates\neventuating\never\neverglade\nevergreen\nevergreens\neverlasting\neverlastingly\neverlastingness\nevermore\neversible\neversion\neversions\nevert\neverted\neverting\nevertor\nevertors\neverts\nevery\neverybody\neveryday\neverydayness\neveryman\neverymen\neveryone\neverything\neveryway\neverywhere\neves\nevict\nevicted\nevictee\nevictees\nevicting\neviction\nevictions\nevictor\nevictors\nevicts\nevidence\nevidenced\nevidences\nevidencing\nevident\nevidential\nevidentially\nevidently\nevil\nevildoer\nevildoers\nevildoing\neviler\nevilest\neviller\nevillest\nevilly\nevilness\nevilnesses\nevils\nevince\nevinced\nevinces\nevincible\nevincing\nevincive\neviscerate\neviscerated\neviscerates\neviscerating\nevisceration\neviscerations\nevitable\nevite\nevited\nevites\neviting\nevocable\nevocation\nevocations\nevocative\nevocatively\nevocativeness\nevocator\nevocators\nevoke\nevoked\nevoker\nevokers\nevokes\nevoking\nevolute\nevolutes\nevolution\nevolutionarily\nevolutionary\nevolutionism\nevolutionisms\nevolutionist\nevolutionists\nevolutions\nevolvable\nevolve\nevolved\nevolvement\nevolvements\nevolver\nevolvers\nevolves\nevolving\nevonymus\nevonymuses\nevulsion\nevulsions\nevzone\nevzones\newe\newer\newers\newes\nex\nexacerbate\nexacerbated\nexacerbates\nexacerbating\nexacerbation\nexacerbations\nexact\nexacta\nexactable\nexactas\nexacted\nexacter\nexacters\nexactest\nexacting\nexactingly\nexactingness\nexaction\nexactions\nexactitude\nexactitudes\nexactly\nexactness\nexactor\nexactors\nexacts\nexaggerate\nexaggerated\nexaggeratedly\nexaggerates\nexaggerating\nexaggeration\nexaggerations\nexaggerative\nexaggerator\nexaggerators\nexaggeratory\nexalt\nexaltation\nexaltations\nexalted\nexaltedly\nexalter\nexalters\nexalting\nexalts\nexam\nexamen\nexamens\nexaminable\nexaminant\nexaminants\nexamination\nexaminational\nexaminations\nexamine\nexamined\nexaminee\nexaminees\nexaminer\nexaminers\nexamines\nexamining\nexample\nexampled\nexamples\nexampling\nexams\nexanthem\nexanthems\nexarch\nexarchal\nexarchies\nexarchs\nexarchy\nexasperate\nexasperated\nexasperatedly\nexasperates\nexasperating\nexasperatingly\nexasperation\nexasperations\nexcavate\nexcavated\nexcavates\nexcavating\nexcavation\nexcavations\nexcavator\nexcavators\nexceed\nexceeded\nexceeder\nexceeders\nexceeding\nexceedingly\nexceeds\nexcel\nexcelled\nexcellence\nexcellencies\nexcellency\nexcellent\nexcellently\nexcelling\nexcels\nexcelsior\nexcept\nexcepted\nexcepting\nexception\nexceptionable\nexceptionably\nexceptional\nexceptionality\nexceptionally\nexceptionalness\nexceptions\nexceptive\nexcepts\nexcerpt\nexcerpted\nexcerpter\nexcerpters\nexcerpting\nexcerption\nexcerptions\nexcerptor\nexcerptors\nexcerpts\nexcess\nexcesses\nexcessive\nexcessively\nexcessiveness\nexchange\nexchangeabilities\nexchangeability\nexchangeable\nexchanged\nexchanger\nexchangers\nexchanges\nexchanging\nexchequer\nexchequers\nexcide\nexcided\nexcides\nexciding\nexciple\nexciples\nexcisable\nexcise\nexcised\nexcises\nexcising\nexcision\nexcisions\nexcitabilities\nexcitability\nexcitable\nexcitableness\nexcitant\nexcitants\nexcitation\nexcitations\nexcite\nexcited\nexcitedly\nexcitement\nexcitements\nexciter\nexciters\nexcites\nexciting\nexcitingly\nexciton\nexcitons\nexcitor\nexcitors\nexclaim\nexclaimed\nexclaimer\nexclaimers\nexclaiming\nexclaims\nexclamation\nexclamations\nexclamatory\nexclave\nexclaves\nexcludabilities\nexcludability\nexcludable\nexclude\nexcluded\nexcluder\nexcluders\nexcludes\nexcludible\nexcluding\nexclusion\nexclusionary\nexclusionist\nexclusionists\nexclusions\nexclusive\nexclusively\nexclusiveness\nexclusivity\nexcommunicate\nexcommunicated\nexcommunicates\nexcommunicating\nexcommunication\nexcommunications\nexcommunicative\nexcommunicator\nexcommunicators\nexcoriate\nexcoriated\nexcoriates\nexcoriating\nexcoriation\nexcoriations\nexcrement\nexcremental\nexcrementitious\nexcrements\nexcrescence\nexcrescences\nexcrescencies\nexcrescency\nexcrescent\nexcrescently\nexcreta\nexcretal\nexcrete\nexcreted\nexcreter\nexcreters\nexcretes\nexcreting\nexcretion\nexcretions\nexcretory\nexcruciate\nexcruciated\nexcruciates\nexcruciating\nexcruciatingly\nexcruciation\nexcruciations\nexculpate\nexculpated\nexculpates\nexculpating\nexculpation\nexculpations\nexculpatory\nexcursion\nexcursionist\nexcursionists\nexcursions\nexcursive\nexcursively\nexcursiveness\nexcusable\nexcusableness\nexcusably\nexcuse\nexcused\nexcuser\nexcusers\nexcuses\nexcusing\nexec\nexecrable\nexecrableness\nexecrably\nexecrate\nexecrated\nexecrates\nexecrating\nexecration\nexecrations\nexecrative\nexecrator\nexecrators\nexecs\nexecutable\nexecute\nexecuted\nexecuter\nexecuters\nexecutes\nexecuting\nexecution\nexecutioner\nexecutioners\nexecutions\nexecutive\nexecutives\nexecutor\nexecutorial\nexecutors\nexecutrices\nexecutrix\nexecutrixes\nexedra\nexedrae\nexegeses\nexegesis\nexegete\nexegetes\nexegetic\nexegetical\nexegetically\nexempla\nexemplar\nexemplarily\nexemplariness\nexemplarities\nexemplarity\nexemplars\nexemplary\nexemplification\nexemplifications\nexemplified\nexemplifies\nexemplify\nexemplifying\nexemplum\nexempt\nexempted\nexempting\nexemption\nexemptions\nexempts\nexequial\nexequies\nexequy\nexercisable\nexercise\nexercised\nexerciser\nexercisers\nexercises\nexercising\nexergual\nexergue\nexergues\nexert\nexerted\nexerting\nexertion\nexertions\nexertive\nexerts\nexes\nexhalant\nexhalants\nexhalation\nexhalations\nexhale\nexhaled\nexhalent\nexhalents\nexhales\nexhaling\nexhaust\nexhausted\nexhauster\nexhausters\nexhaustibilities\nexhaustibility\nexhaustible\nexhausting\nexhaustion\nexhaustions\nexhaustive\nexhaustively\nexhaustiveness\nexhaustless\nexhaustlessly\nexhaustlessness\nexhausts\nexhibit\nexhibited\nexhibiting\nexhibition\nexhibitioner\nexhibitioners\nexhibitionism\nexhibitionist\nexhibitionistic\nexhibitionists\nexhibitions\nexhibitor\nexhibitors\nexhibitory\nexhibits\nexhilarate\nexhilarated\nexhilarates\nexhilarating\nexhilaratingly\nexhilaration\nexhilarations\nexhilarative\nexhort\nexhortation\nexhortations\nexhortative\nexhortatory\nexhorted\nexhorter\nexhorters\nexhorting\nexhorts\nexhumation\nexhumations\nexhume\nexhumed\nexhumer\nexhumers\nexhumes\nexhuming\nexigence\nexigences\nexigencies\nexigency\nexigent\nexigently\nexigible\nexiguities\nexiguity\nexiguous\nexiguously\nexiguousness\nexile\nexiled\nexiles\nexilian\nexilic\nexiling\neximious\nexine\nexines\nexist\nexisted\nexistence\nexistences\nexistent\nexistential\nexistentialism\nexistentialisms\nexistentialist\nexistentialistic\nexistentialistically\nexistentialists\nexistentially\nexistents\nexisting\nexists\nexit\nexited\nexiting\nexits\nexocarp\nexocarps\nexocrine\nexocrines\nexoderm\nexoderms\nexodoi\nexodos\nexodus\nexoduses\nexoergic\nexogamic\nexogamies\nexogamous\nexogamy\nexogen\nexogens\nexon\nexonerate\nexonerated\nexonerates\nexonerating\nexoneration\nexonerations\nexonerative\nexons\nexorable\nexorbitance\nexorbitances\nexorbitant\nexorbitantly\nexorcise\nexorcised\nexorciser\nexorcisers\nexorcises\nexorcising\nexorcism\nexorcisms\nexorcist\nexorcists\nexorcize\nexorcized\nexorcizes\nexorcizing\nexordia\nexordial\nexordium\nexordiums\nexosmic\nexosmose\nexosmoses\nexospore\nexospores\nexoteric\nexoterically\nexothermal\nexothermally\nexothermic\nexothermically\nexotic\nexotica\nexotically\nexoticism\nexoticisms\nexoticness\nexotics\nexotism\nexotisms\nexotoxic\nexotoxin\nexotoxins\nexpand\nexpandable\nexpanded\nexpander\nexpanders\nexpanding\nexpands\nexpanse\nexpanses\nexpansible\nexpansion\nexpansionary\nexpansionism\nexpansionist\nexpansionistic\nexpansionists\nexpansions\nexpansive\nexpansively\nexpansiveness\nexpatiate\nexpatiated\nexpatiates\nexpatiating\nexpatiation\nexpatiations\nexpatriate\nexpatriated\nexpatriates\nexpatriating\nexpatriation\nexpatriations\nexpect\nexpectable\nexpectably\nexpectance\nexpectances\nexpectancies\nexpectancy\nexpectant\nexpectantly\nexpectants\nexpectation\nexpectations\nexpected\nexpecting\nexpectorant\nexpectorants\nexpectorate\nexpectorated\nexpectorates\nexpectorating\nexpectoration\nexpectorations\nexpects\nexpedience\nexpediences\nexpediencies\nexpediency\nexpedient\nexpediential\nexpediently\nexpedients\nexpedite\nexpedited\nexpediter\nexpediters\nexpedites\nexpediting\nexpedition\nexpeditionary\nexpeditions\nexpeditious\nexpeditiously\nexpeditiousness\nexpeditor\nexpeditors\nexpel\nexpellable\nexpelled\nexpellee\nexpellees\nexpeller\nexpellers\nexpelling\nexpels\nexpend\nexpendability\nexpendable\nexpendables\nexpendably\nexpended\nexpender\nexpenders\nexpending\nexpenditure\nexpenditures\nexpends\nexpense\nexpensed\nexpenses\nexpensing\nexpensive\nexpensively\nexpensiveness\nexperience\nexperienced\nexperiences\nexperiencing\nexperiential\nexperientially\nexperiment\nexperimental\nexperimentalism\nexperimentalisms\nexperimentalist\nexperimentalists\nexperimentally\nexperimentation\nexperimentations\nexperimented\nexperimenter\nexperimenters\nexperimenting\nexperiments\nexpert\nexperted\nexperting\nexpertise\nexpertly\nexpertness\nexperts\nexpiable\nexpiate\nexpiated\nexpiates\nexpiating\nexpiation\nexpiations\nexpiator\nexpiators\nexpiatory\nexpiration\nexpirations\nexpiratory\nexpire\nexpired\nexpirer\nexpirers\nexpires\nexpiries\nexpiring\nexpiry\nexplain\nexplainable\nexplained\nexplainer\nexplainers\nexplaining\nexplains\nexplanation\nexplanations\nexplanative\nexplanatively\nexplanatorily\nexplanatory\nexplant\nexplanted\nexplanting\nexplants\nexpletive\nexpletives\nexpletory\nexplicable\nexplicate\nexplicated\nexplicates\nexplicating\nexplication\nexplications\nexplicative\nexplicatively\nexplicator\nexplicators\nexplicatory\nexplicit\nexplicitly\nexplicitness\nexplicits\nexplode\nexploded\nexploder\nexploders\nexplodes\nexploding\nexploit\nexploitable\nexploitation\nexploitations\nexploitative\nexploited\nexploiter\nexploiters\nexploiting\nexploits\nexploration\nexplorations\nexplorative\nexploratory\nexplore\nexplored\nexplorer\nexplorers\nexplores\nexploring\nexplosion\nexplosions\nexplosive\nexplosively\nexplosiveness\nexplosives\nexpo\nexponent\nexponential\nexponentially\nexponentiation\nexponentiations\nexponents\nexport\nexportable\nexportation\nexportations\nexported\nexporter\nexporters\nexporting\nexports\nexpos\nexposable\nexposal\nexposals\nexpose\nexposed\nexposer\nexposers\nexposes\nexposing\nexposit\nexposited\nexpositing\nexposition\nexpositional\nexpositions\nexpositor\nexpositors\nexpository\nexposits\nexpostulate\nexpostulated\nexpostulates\nexpostulating\nexpostulation\nexpostulations\nexpostulatory\nexposure\nexposures\nexpound\nexpounded\nexpounder\nexpounders\nexpounding\nexpounds\nexpress\nexpressage\nexpressages\nexpressed\nexpresser\nexpressers\nexpresses\nexpressible\nexpressing\nexpression\nexpressional\nexpressionism\nexpressionist\nexpressionistic\nexpressionistically\nexpressionists\nexpressionless\nexpressionlessly\nexpressions\nexpressive\nexpressively\nexpressiveness\nexpressly\nexpressman\nexpressmen\nexpressway\nexpressways\nexpropriate\nexpropriated\nexpropriates\nexpropriating\nexpropriation\nexpropriations\nexpropriator\nexpropriators\nexpulse\nexpulsed\nexpulses\nexpulsing\nexpulsion\nexpulsions\nexpulsive\nexpunction\nexpunctions\nexpunge\nexpunged\nexpunger\nexpungers\nexpunges\nexpunging\nexpurgate\nexpurgated\nexpurgates\nexpurgating\nexpurgation\nexpurgations\nexpurgator\nexpurgatorial\nexpurgators\nexpurgatory\nexquisite\nexquisitely\nexquisiteness\nexquisites\nexscind\nexscinded\nexscinding\nexscinds\nexsecant\nexsecants\nexsect\nexsected\nexsecting\nexsects\nexsert\nexserted\nexserting\nexserts\nextant\nextemporaneity\nextemporaneous\nextemporaneously\nextemporaneousness\nextemporarily\nextemporary\nextempore\nextemporization\nextemporizations\nextemporize\nextemporized\nextemporizer\nextemporizers\nextemporizes\nextemporizing\nextend\nextendable\nextended\nextendedly\nextendedness\nextender\nextenders\nextendible\nextending\nextends\nextensibility\nextensible\nextension\nextensional\nextensionalities\nextensionality\nextensionally\nextensions\nextensities\nextensity\nextensive\nextensively\nextensiveness\nextensor\nextensors\nextent\nextents\nextenuate\nextenuated\nextenuates\nextenuating\nextenuation\nextenuations\nextenuator\nextenuators\nextenuatory\nexterior\nexteriorization\nexteriorizations\nexteriorize\nexteriorized\nexteriorizes\nexteriorizing\nexteriorly\nexteriors\nexterminate\nexterminated\nexterminates\nexterminating\nextermination\nexterminations\nexterminator\nexterminators\nexterminatory\nextern\nexternal\nexternalism\nexternalisms\nexternalities\nexternality\nexternalize\nexternalized\nexternalizes\nexternalizing\nexternally\nexternals\nexterne\nexternes\nexterns\nextinct\nextincted\nextincting\nextinction\nextinctions\nextinctive\nextincts\nextinguish\nextinguishable\nextinguished\nextinguisher\nextinguishers\nextinguishes\nextinguishing\nextinguishment\nextinguishments\nextirpate\nextirpated\nextirpates\nextirpating\nextirpation\nextirpations\nextirpator\nextirpators\nextol\nextoll\nextolled\nextoller\nextollers\nextolling\nextolls\nextols\nextort\nextorted\nextorter\nextorters\nextorting\nextortion\nextortionate\nextortionately\nextortioner\nextortioners\nextortionist\nextortionists\nextortions\nextortive\nextorts\nextra\nextract\nextractability\nextractable\nextracted\nextracting\nextraction\nextractions\nextractive\nextractives\nextractor\nextractors\nextracts\nextracurricular\nextraditable\nextradite\nextradited\nextradites\nextraditing\nextradition\nextraditions\nextrados\nextradoses\nextralegal\nextramarital\nextramural\nextramurally\nextraneous\nextraneously\nextraneousness\nextraordinarily\nextraordinariness\nextraordinary\nextrapolate\nextrapolated\nextrapolates\nextrapolating\nextrapolation\nextrapolations\nextrapolative\nextrapolator\nextrapolators\nextras\nextrasensory\nextraterritorial\nextraterritoriality\nextraterritorially\nextravagance\nextravagances\nextravagancies\nextravagancy\nextravagant\nextravagantly\nextravaganza\nextravaganzas\nextraversion\nextraversions\nextravert\nextraverted\nextraverts\nextrema\nextreme\nextremely\nextremeness\nextremer\nextremes\nextremest\nextremism\nextremisms\nextremist\nextremists\nextremities\nextremity\nextremum\nextremuma\nextricable\nextricate\nextricated\nextricates\nextricating\nextrication\nextrications\nextrinsic\nextrinsically\nextrorse\nextroversion\nextroversions\nextroversive\nextrovert\nextroverted\nextroverts\nextrude\nextruded\nextruder\nextruders\nextrudes\nextruding\nextrusion\nextrusions\nexuberance\nexuberances\nexuberant\nexuberantly\nexuberate\nexuberated\nexuberates\nexuberating\nexudate\nexudates\nexudation\nexudations\nexudative\nexude\nexuded\nexudes\nexuding\nexult\nexultance\nexultancy\nexultant\nexultantly\nexultation\nexultations\nexulted\nexulting\nexultingly\nexults\nexurb\nexurban\nexurbanite\nexurbanites\nexurbia\nexurbias\nexurbs\nexuvia\nexuviae\nexuvial\nexuviate\nexuviated\nexuviates\nexuviating\nexuvium\neyas\neyases\neye\neyeable\neyeball\neyeballed\neyeballing\neyeballs\neyebeam\neyebeams\neyebolt\neyebolts\neyebrow\neyebrows\neyecup\neyecups\neyed\neyedness\neyednesses\neyeful\neyefuls\neyeglass\neyeglasses\neyehole\neyeholes\neyehook\neyehooks\neyeing\neyelash\neyelashes\neyeless\neyelet\neyelets\neyeletted\neyeletting\neyelid\neyelids\neyelike\neyeliner\neyeliners\neyen\neyepiece\neyepieces\neyepoint\neyepoints\neyer\neyers\neyes\neyeshade\neyeshades\neyeshot\neyeshots\neyesight\neyesights\neyesome\neyesore\neyesores\neyespot\neyespots\neyestalk\neyestalks\neyestone\neyestones\neyestrain\neyestrains\neyetooteeth\neyetooth\neyewash\neyewashes\neyewater\neyewaters\neyewink\neyewinks\neyewitness\neyewitnesses\neying\neyne\neyra\neyras\neyre\neyres\neyrie\neyries\neyrir\neyry\nfa\nfable\nfabled\nfabler\nfablers\nfables\nfabliau\nfabliaux\nfabling\nfabric\nfabricate\nfabricated\nfabricates\nfabricating\nfabrication\nfabrications\nfabricator\nfabricators\nfabrics\nfabular\nfabulist\nfabulists\nfabulous\nfabulously\nfabulousness\nfacade\nfacades\nface\nfaceable\nfaced\nfacedown\nfaceless\nfacelessness\nfaceplate\nfaceplates\nfacer\nfacers\nfaces\nfacet\nfacete\nfaceted\nfacetely\nfacetiae\nfaceting\nfacetious\nfacetiously\nfacetiousness\nfacets\nfacetted\nfacetting\nfaceup\nfacia\nfacial\nfacially\nfacials\nfacias\nfaciend\nfaciends\nfacies\nfacile\nfacilely\nfacileness\nfacilitate\nfacilitated\nfacilitates\nfacilitating\nfacilitation\nfacilitations\nfacilitative\nfacilitator\nfacilitators\nfacilities\nfacility\nfacing\nfacings\nfacsimile\nfacsimiles\nfact\nfactful\nfaction\nfactional\nfactionalism\nfactionalist\nfactionalists\nfactions\nfactious\nfactiously\nfactiousness\nfactitious\nfactitiously\nfactitiousness\nfactitive\nfactitively\nfactor\nfactorable\nfactored\nfactorial\nfactorials\nfactories\nfactoring\nfactorization\nfactorizations\nfactorize\nfactorized\nfactorizes\nfactorizing\nfactors\nfactory\nfactotum\nfactotums\nfacts\nfactual\nfactualism\nfactualist\nfactualists\nfactuality\nfactually\nfactualness\nfacture\nfactures\nfacula\nfaculae\nfacular\nfacultative\nfacultatively\nfaculties\nfaculty\nfad\nfadable\nfaddier\nfaddiest\nfaddish\nfaddishness\nfaddism\nfaddisms\nfaddist\nfaddists\nfaddy\nfade\nfadeaway\nfadeaways\nfaded\nfadedly\nfadeless\nfader\nfaders\nfades\nfadge\nfadged\nfadges\nfadging\nfading\nfadings\nfado\nfados\nfads\nfaecal\nfaeces\nfaena\nfaenas\nfaerie\nfaeries\nfaery\nfag\nfagged\nfagging\nfaggot\nfaggoted\nfaggoting\nfaggots\nfaggy\nfagin\nfagins\nfagot\nfagoted\nfagoter\nfagoters\nfagoting\nfagotings\nfagots\nfags\nfahlband\nfahlbands\nfaience\nfaiences\nfail\nfailed\nfailing\nfailings\nfaille\nfailles\nfails\nfailure\nfailures\nfain\nfaineant\nfaineants\nfainer\nfainest\nfaint\nfainted\nfainter\nfainters\nfaintest\nfainthearted\nfaintheartedly\nfaintheartedness\nfainting\nfaintish\nfaintly\nfaintness\nfaints\nfair\nfaired\nfairer\nfairest\nfairground\nfairgrounds\nfairies\nfairing\nfairings\nfairish\nfairlead\nfairleads\nfairly\nfairness\nfairnesses\nfairs\nfairway\nfairways\nfairy\nfairyism\nfairyisms\nfairyland\nfairylands\nfairylike\nfaith\nfaithed\nfaithful\nfaithfully\nfaithfulness\nfaithfuls\nfaithing\nfaithless\nfaithlessly\nfaithlessness\nfaiths\nfaitour\nfaitours\nfake\nfaked\nfakeer\nfakeers\nfaker\nfakeries\nfakers\nfakery\nfakes\nfakey\nfaking\nfakir\nfakirs\nfalbala\nfalbalas\nfalcate\nfalcated\nfalchion\nfalchions\nfalcon\nfalconer\nfalconers\nfalconet\nfalconets\nfalconries\nfalconry\nfalcons\nfalderal\nfalderals\nfalderol\nfalderols\nfall\nfallacies\nfallacious\nfallaciously\nfallaciousness\nfallacy\nfallal\nfallals\nfallback\nfallbacks\nfallen\nfaller\nfallers\nfallfish\nfallfishes\nfallibility\nfallible\nfallibly\nfalling\nfalloff\nfalloffs\nfallout\nfallouts\nfallow\nfallowed\nfallowing\nfallowness\nfallows\nfalls\nfalse\nfalsehood\nfalsehoods\nfalsely\nfalseness\nfalser\nfalsest\nfalsetto\nfalsettos\nfalsie\nfalsies\nfalsification\nfalsifications\nfalsified\nfalsifier\nfalsifiers\nfalsifies\nfalsify\nfalsifying\nfalsities\nfalsity\nfaltboat\nfaltboats\nfalter\nfaltered\nfalterer\nfalterers\nfaltering\nfalteringly\nfalters\nfalx\nfame\nfamed\nfameless\nfames\nfamilial\nfamiliar\nfamiliarities\nfamiliarity\nfamiliarization\nfamiliarizations\nfamiliarize\nfamiliarized\nfamiliarizes\nfamiliarizing\nfamiliarly\nfamiliars\nfamilies\nfamily\nfamine\nfamines\nfaming\nfamish\nfamished\nfamishes\nfamishing\nfamishment\nfamous\nfamously\nfamousness\nfamuli\nfamulus\nfan\nfanatic\nfanatical\nfanatically\nfanaticism\nfanaticize\nfanaticized\nfanaticizes\nfanaticizing\nfanatics\nfancied\nfancier\nfanciers\nfancies\nfanciest\nfanciful\nfancifully\nfancifulness\nfancily\nfancy\nfancying\nfancywork\nfancyworks\nfandango\nfandangos\nfandom\nfandoms\nfane\nfanega\nfanegada\nfanegadas\nfanegas\nfanes\nfanfare\nfanfares\nfanfaron\nfanfarons\nfanfold\nfanfolds\nfang\nfanga\nfangas\nfanged\nfangless\nfanglike\nfangs\nfanion\nfanions\nfanjet\nfanjets\nfanlight\nfanlights\nfanlike\nfanned\nfanner\nfanners\nfannies\nfanning\nfanny\nfano\nfanon\nfanons\nfanos\nfans\nfantail\nfantails\nfantaseid\nfantasia\nfantasias\nfantasie\nfantasied\nfantasies\nfantasize\nfantasized\nfantasizes\nfantasizing\nfantasm\nfantasms\nfantast\nfantastic\nfantastically\nfantasts\nfantasy\nfantasying\nfantod\nfantods\nfantom\nfantoms\nfanum\nfanums\nfanwise\nfanwort\nfanworts\nfaqir\nfaqirs\nfaquir\nfaquirs\nfar\nfarad\nfaradaic\nfaraday\nfaradays\nfaradic\nfaradise\nfaradised\nfaradises\nfaradising\nfaradism\nfaradisms\nfaradize\nfaradized\nfaradizes\nfaradizing\nfarads\nfaraway\nfarce\nfarced\nfarcer\nfarcers\nfarces\nfarceur\nfarceurs\nfarci\nfarcical\nfarcically\nfarcie\nfarcies\nfarcing\nfarcy\nfard\nfarded\nfardel\nfardels\nfarding\nfards\nfare\nfared\nfarer\nfarers\nfares\nfarewell\nfarewelled\nfarewelling\nfarewells\nfarfal\nfarfals\nfarfel\nfarfels\nfarfetched\nfarfetchedness\nfarina\nfarinaceous\nfarinas\nfaring\nfarinha\nfarinhas\nfarinose\nfarl\nfarle\nfarles\nfarls\nfarm\nfarmable\nfarmed\nfarmer\nfarmers\nfarmhand\nfarmhands\nfarmhouse\nfarmhouses\nfarming\nfarmings\nfarmland\nfarmlands\nfarms\nfarmstead\nfarmsteads\nfarmyard\nfarmyards\nfarnesol\nfarnesols\nfarness\nfarnesses\nfaro\nfaros\nfarouche\nfarrago\nfarragoes\nfarrier\nfarrieries\nfarriers\nfarriery\nfarrow\nfarrowed\nfarrowing\nfarrows\nfarseeing\nfarsighted\nfarsightedly\nfarsightedness\nfart\nfarted\nfarther\nfarthermost\nfarthest\nfarthing\nfarthings\nfarting\nfarts\nfas\nfasces\nfascia\nfasciae\nfascial\nfascias\nfasciate\nfascicle\nfascicled\nfascicles\nfascicular\nfascinate\nfascinated\nfascinates\nfascinating\nfascinatingly\nfascination\nfascinations\nfascine\nfascines\nfascism\nfascisms\nfascist\nfascistic\nfascistically\nfascists\nfash\nfashed\nfashes\nfashing\nfashion\nfashionable\nfashionableness\nfashionably\nfashioned\nfashioner\nfashioners\nfashioning\nfashions\nfashious\nfast\nfastback\nfastbacks\nfastball\nfastballs\nfasted\nfasten\nfastened\nfastener\nfasteners\nfastening\nfastenings\nfastens\nfaster\nfastest\nfastidious\nfastidiously\nfastidiousness\nfastigiate\nfasting\nfastings\nfastness\nfastnesses\nfasts\nfastuous\nfat\nfatal\nfatalism\nfatalisms\nfatalist\nfatalistic\nfatalistically\nfatalists\nfatalities\nfatality\nfatally\nfatback\nfatbacks\nfatbird\nfatbirds\nfate\nfated\nfateful\nfatefully\nfatefulness\nfates\nfathead\nfatheads\nfather\nfathered\nfatherhood\nfathering\nfatherland\nfatherlands\nfatherless\nfatherly\nfathers\nfathom\nfathomable\nfathomed\nfathoming\nfathomless\nfathoms\nfatidic\nfatigability\nfatigable\nfatigue\nfatigued\nfatigues\nfatiguing\nfating\nfatless\nfatlike\nfatling\nfatlings\nfatly\nfatness\nfatnesses\nfats\nfatso\nfatsoes\nfatsos\nfatstock\nfatstocks\nfatted\nfatten\nfattened\nfattener\nfatteners\nfattening\nfattens\nfatter\nfattest\nfattier\nfatties\nfattiest\nfattily\nfattiness\nfatting\nfattish\nfatty\nfatuities\nfatuity\nfatuous\nfatuously\nfatuousness\nfaubourg\nfaubourgs\nfaucal\nfaucals\nfauces\nfaucet\nfaucets\nfaucial\nfaugh\nfauld\nfaulds\nfault\nfaulted\nfaultfinder\nfaultfinders\nfaultfinding\nfaultfindings\nfaultier\nfaultiest\nfaultily\nfaultiness\nfaulting\nfaultless\nfaultlessly\nfaultlessness\nfaults\nfaulty\nfaun\nfauna\nfaunae\nfaunal\nfaunally\nfaunas\nfaunlike\nfauns\nfauteuil\nfauteuils\nfauve\nfauves\nfauvism\nfauvisms\nfauvist\nfauvists\nfaux\nfavela\nfavelas\nfavonian\nfavor\nfavorable\nfavorableness\nfavorably\nfavored\nfavorer\nfavorers\nfavoring\nfavorite\nfavorites\nfavoritism\nfavoritisms\nfavors\nfavour\nfavoured\nfavourer\nfavourers\nfavouring\nfavours\nfavus\nfavuses\nfawn\nfawned\nfawner\nfawners\nfawnier\nfawniest\nfawning\nfawningly\nfawnlike\nfawns\nfawny\nfax\nfaxed\nfaxes\nfaxing\nfay\nfayalite\nfayalites\nfayed\nfaying\nfays\nfaze\nfazed\nfazenda\nfazendas\nfazes\nfazing\nfeal\nfealties\nfealty\nfear\nfeared\nfearer\nfearers\nfearful\nfearfuller\nfearfullest\nfearfully\nfearfulness\nfearing\nfearless\nfearlessly\nfearlessness\nfears\nfearsome\nfearsomely\nfearsomeness\nfeasance\nfeasances\nfease\nfeased\nfeases\nfeasibility\nfeasible\nfeasibleness\nfeasibly\nfeasing\nfeast\nfeasted\nfeaster\nfeasters\nfeastful\nfeasting\nfeasts\nfeat\nfeater\nfeatest\nfeather\nfeatherbed\nfeatherbedded\nfeatherbedding\nfeatherbeddings\nfeatherbeds\nfeatherbrain\nfeatherbrained\nfeatherbrains\nfeathered\nfeatheredge\nfeatheredged\nfeatheredges\nfeatheredging\nfeatherier\nfeatheriest\nfeathering\nfeatherless\nfeathers\nfeatherweight\nfeatherweights\nfeathery\nfeatlier\nfeatliest\nfeatly\nfeats\nfeature\nfeatured\nfeatureless\nfeatures\nfeaturing\nfeaze\nfeazed\nfeazes\nfeazing\nfebrific\nfebrifuge\nfebrifuges\nfebrile\nfecal\nfeces\nfecial\nfecials\nfeck\nfeckless\nfecklessly\nfecklessness\nfeckly\nfecks\nfecula\nfeculae\nfeculent\nfecund\nfecundate\nfecundated\nfecundates\nfecundating\nfecundation\nfecundations\nfecundity\nfed\nfedayee\nfedayeen\nfederacies\nfederacy\nfederal\nfederalism\nfederalist\nfederalists\nfederalization\nfederalize\nfederalized\nfederalizes\nfederalizing\nfederally\nfederals\nfederate\nfederated\nfederates\nfederating\nfederation\nfederations\nfederative\nfederatively\nfedora\nfedoras\nfeds\nfee\nfeeble\nfeebleminded\nfeeblemindedly\nfeeblemindedness\nfeebleness\nfeebler\nfeeblest\nfeeblish\nfeebly\nfeed\nfeedable\nfeedback\nfeedbacks\nfeedbag\nfeedbags\nfeedbox\nfeedboxes\nfeeder\nfeeders\nfeeding\nfeedlot\nfeedlots\nfeeds\nfeedstock\nfeedstocks\nfeeing\nfeel\nfeeler\nfeelers\nfeeless\nfeeling\nfeelingly\nfeelings\nfeels\nfees\nfeet\nfeetless\nfeeze\nfeezed\nfeezes\nfeezing\nfeh\nfehs\nfeign\nfeigned\nfeigner\nfeigners\nfeigning\nfeigns\nfeint\nfeinted\nfeinting\nfeints\nfeirie\nfeist\nfeistier\nfeistiest\nfeists\nfeisty\nfeldspar\nfeldspars\nfelicitate\nfelicitated\nfelicitates\nfelicitating\nfelicitation\nfelicitations\nfelicitator\nfelicitators\nfelicities\nfelicitous\nfelicitously\nfelicitousness\nfelicity\nfelid\nfelids\nfeline\nfelinely\nfelines\nfelinities\nfelinity\nfell\nfella\nfellable\nfellah\nfellaheen\nfellahin\nfellahs\nfellas\nfellatio\nfellatios\nfelled\nfeller\nfellers\nfellest\nfellies\nfelling\nfellness\nfellnesses\nfelloe\nfelloes\nfellow\nfellowed\nfellowing\nfellowly\nfellowman\nfellowmen\nfellows\nfellowship\nfellowships\nfells\nfelly\nfelon\nfelonies\nfelonious\nfeloniously\nfeloniousness\nfelonries\nfelonry\nfelons\nfelony\nfelsite\nfelsites\nfelsitic\nfelspar\nfelspars\nfelstone\nfelstones\nfelt\nfelted\nfelting\nfeltings\nfelts\nfelucca\nfeluccas\nfelwort\nfelworts\nfem\nfemale\nfemaleness\nfemales\nfeme\nfemes\nfeminacies\nfeminacy\nfeminie\nfeminine\nfemininely\nfeminineness\nfeminines\nfemininities\nfemininity\nfeminise\nfeminised\nfeminises\nfeminising\nfeminism\nfeminisms\nfeminist\nfeministic\nfeminists\nfeminities\nfeminity\nfeminization\nfeminizations\nfeminize\nfeminized\nfeminizes\nfeminizing\nfemme\nfemmes\nfemora\nfemoral\nfems\nfemur\nfemurs\nfen\nfenagle\nfenagled\nfenagles\nfenagling\nfence\nfenced\nfenceless\nfencelessness\nfencer\nfencers\nfences\nfencible\nfencibles\nfencing\nfencings\nfend\nfended\nfender\nfendered\nfenders\nfending\nfends\nfenestra\nfenestrae\nfenestrate\nfenestrated\nfenestration\nfenestrations\nfennec\nfennecs\nfennel\nfennels\nfenny\nfens\nfeod\nfeodaries\nfeodary\nfeods\nfeoff\nfeoffed\nfeoffee\nfeoffees\nfeoffer\nfeoffers\nfeoffing\nfeoffor\nfeoffors\nfeoffs\nfer\nferacities\nferacity\nferal\nferbam\nferbams\nfere\nferes\nferetories\nferetory\nferia\nferiae\nferial\nferias\nferine\nferities\nferity\nferlie\nferlies\nferly\nfermata\nfermatas\nfermate\nferment\nfermentable\nfermentation\nfermentations\nfermentative\nfermented\nfermenting\nferments\nfermi\nfermion\nfermions\nfermis\nfermium\nfermiums\nfern\nferneries\nfernery\nfernier\nferniest\nfernless\nfernlike\nferns\nferny\nferocious\nferociously\nferociousness\nferocities\nferocity\nferrate\nferrates\nferrel\nferreled\nferreling\nferrelled\nferrelling\nferrels\nferreous\nferret\nferreted\nferreter\nferreters\nferreting\nferrets\nferrety\nferriage\nferriages\nferric\nferried\nferries\nferrite\nferrites\nferritic\nferritin\nferritins\nferrous\nferrule\nferruled\nferrules\nferruling\nferrum\nferrums\nferry\nferryboat\nferryboats\nferrying\nferryman\nferrymen\nfertile\nfertilely\nfertileness\nfertilities\nfertility\nfertilizable\nfertilization\nfertilizations\nfertilize\nfertilized\nfertilizer\nfertilizers\nfertilizes\nfertilizing\nferula\nferulae\nferulas\nferule\nferuled\nferules\nferuling\nfervencies\nfervency\nfervent\nfervently\nfervid\nfervidly\nfervidness\nfervor\nfervors\nfervour\nfervours\nfescue\nfescues\nfess\nfesse\nfessed\nfesses\nfessing\nfesswise\nfestal\nfestally\nfester\nfestered\nfestering\nfesters\nfestival\nfestivals\nfestive\nfestively\nfestiveness\nfestivities\nfestivity\nfestoon\nfestooned\nfestooning\nfestoons\nfet\nfeta\nfetal\nfetas\nfetation\nfetations\nfetch\nfetched\nfetcher\nfetchers\nfetches\nfetching\nfetchingly\nfete\nfeted\nfeterita\nfeteritas\nfetes\nfetial\nfetiales\nfetialis\nfetials\nfetich\nfetiches\nfeticide\nfeticides\nfetid\nfetidly\nfetidness\nfeting\nfetish\nfetishes\nfetishism\nfetishisms\nfetishist\nfetishistic\nfetishists\nfetlock\nfetlocks\nfetologies\nfetology\nfetor\nfetors\nfets\nfetted\nfetter\nfettered\nfetterer\nfetterers\nfettering\nfetters\nfetting\nfettle\nfettled\nfettles\nfettling\nfettlings\nfetus\nfetuses\nfeu\nfeuar\nfeuars\nfeud\nfeudal\nfeudalism\nfeudalistic\nfeudalize\nfeudalized\nfeudalizes\nfeudalizing\nfeudally\nfeudaries\nfeudary\nfeuded\nfeuding\nfeudist\nfeudists\nfeuds\nfeued\nfeuing\nfeus\nfever\nfevered\nfeverfew\nfeverfews\nfevering\nfeverish\nfeverishly\nfeverishness\nfeverous\nfevers\nfew\nfewer\nfewest\nfewness\nfewnesses\nfewtrils\nfey\nfeyer\nfeyest\nfeyly\nfeyness\nfeynesses\nfez\nfezes\nfezzed\nfezzes\nfiacre\nfiacres\nfiance\nfiancee\nfiancees\nfiances\nfiar\nfiars\nfiaschi\nfiasco\nfiascoes\nfiascos\nfiat\nfiats\nfib\nfibbed\nfibber\nfibbers\nfibbing\nfiber\nfiberboard\nfiberboards\nfibered\nfiberfill\nfiberglass\nfiberize\nfiberized\nfiberizes\nfiberizing\nfibers\nfibre\nfibres\nfibril\nfibrilla\nfibrillae\nfibrillate\nfibrillated\nfibrillates\nfibrillating\nfibrillation\nfibrillations\nfibrillose\nfibrils\nfibrin\nfibrinogen\nfibrinogens\nfibrinous\nfibrins\nfibroblast\nfibroblastic\nfibroblasts\nfibroid\nfibroids\nfibroin\nfibroins\nfibroma\nfibromas\nfibromata\nfibroses\nfibrosis\nfibrotic\nfibrous\nfibs\nfibula\nfibulae\nfibular\nfibulas\nfice\nfices\nfiche\nfiches\nfichu\nfichus\nficin\nficins\nfickle\nfickleness\nfickler\nficklest\nfico\nficoes\nfictile\nfiction\nfictional\nfictionalization\nfictionalizations\nfictionalize\nfictionalized\nfictionalizes\nfictionalizing\nfictionally\nfictionist\nfictionists\nfictions\nfictitious\nfictitiously\nfictitiousness\nfictive\nfictively\nfictiveness\nficus\nfid\nfiddle\nfiddled\nfiddler\nfiddlers\nfiddles\nfiddlesticks\nfiddling\nfideism\nfideisms\nfideist\nfideists\nfidelities\nfidelity\nfidge\nfidged\nfidges\nfidget\nfidgeted\nfidgeter\nfidgeters\nfidgetiness\nfidgeting\nfidgets\nfidgety\nfidging\nfido\nfidos\nfids\nfiducial\nfiduciaries\nfiduciary\nfie\nfief\nfiefdom\nfiefdoms\nfiefs\nfield\nfielded\nfielder\nfielders\nfielding\nfieldpiece\nfieldpieces\nfields\nfieldstone\nfieldstones\nfieldwork\nfiend\nfiendish\nfiendishly\nfiendishness\nfiends\nfierce\nfiercely\nfierceness\nfiercer\nfiercest\nfierier\nfieriest\nfierily\nfieriness\nfiery\nfiesta\nfiestas\nfife\nfifed\nfifer\nfifers\nfifes\nfifing\nfifteen\nfifteens\nfifteenth\nfifteenths\nfifth\nfifthly\nfifths\nfifties\nfiftieth\nfiftieths\nfifty\nfig\nfigeater\nfigeaters\nfigged\nfigging\nfight\nfighter\nfighters\nfighting\nfightings\nfights\nfigment\nfigments\nfigs\nfiguline\nfigulines\nfigural\nfigurant\nfigurants\nfigurate\nfiguration\nfigurations\nfigurative\nfiguratively\nfigurativeness\nfigure\nfigured\nfigurehead\nfigureheads\nfigurer\nfigurers\nfigures\nfigurine\nfigurines\nfiguring\nfigwort\nfigworts\nfil\nfila\nfilagree\nfilagreed\nfilagreeing\nfilagrees\nfilament\nfilamentary\nfilamentous\nfilaments\nfilar\nfilaree\nfilarees\nfilaria\nfilariae\nfilarial\nfilarian\nfilariid\nfilariids\nfilature\nfilatures\nfilbert\nfilberts\nfilch\nfilched\nfilcher\nfilchers\nfilches\nfilching\nfile\nfiled\nfilefish\nfilefishes\nfilemot\nfiler\nfilers\nfiles\nfilet\nfileted\nfileting\nfilets\nfilial\nfilially\nfiliate\nfiliated\nfiliates\nfiliating\nfiliation\nfiliations\nfilibeg\nfilibegs\nfilibuster\nfilibustered\nfilibusterer\nfilibusterers\nfilibustering\nfilibusters\nfilicide\nfilicides\nfiliform\nfiligree\nfiligreed\nfiligreeing\nfiligrees\nfiling\nfilings\nfilister\nfilisters\nfill\nfille\nfilled\nfiller\nfillers\nfilles\nfillet\nfilleted\nfilleting\nfillets\nfillies\nfilling\nfillings\nfillip\nfilliped\nfilliping\nfillips\nfillo\nfills\nfilly\nfilm\nfilmcard\nfilmcards\nfilmdom\nfilmdoms\nfilmed\nfilmgoer\nfilmgoers\nfilmic\nfilmier\nfilmiest\nfilmily\nfilminess\nfilming\nfilmland\nfilmlands\nfilmmaker\nfilmmakers\nfilmmaking\nfilms\nfilmset\nfilmsets\nfilmsetting\nfilmstrip\nfilmstrips\nfilmy\nfilo\nfilos\nfilose\nfils\nfilter\nfilterability\nfilterable\nfiltered\nfilterer\nfilterers\nfiltering\nfilters\nfilth\nfilthier\nfilthiest\nfilthily\nfilthiness\nfilths\nfilthy\nfiltrate\nfiltrated\nfiltrates\nfiltrating\nfiltration\nfiltrations\nfilum\nfimble\nfimbles\nfimbria\nfimbriae\nfimbrial\nfin\nfinable\nfinagle\nfinagled\nfinagler\nfinaglers\nfinagles\nfinagling\nfinal\nfinale\nfinales\nfinalis\nfinalism\nfinalisms\nfinalist\nfinalists\nfinalities\nfinality\nfinalization\nfinalizations\nfinalize\nfinalized\nfinalizes\nfinalizing\nfinally\nfinals\nfinance\nfinanced\nfinances\nfinancial\nfinancially\nfinancier\nfinanciers\nfinancing\nfinback\nfinbacks\nfinch\nfinches\nfind\nfinder\nfinders\nfinding\nfindings\nfinds\nfine\nfineable\nfined\nfinely\nfineness\nfinenesses\nfiner\nfineries\nfinery\nfines\nfinespun\nfinesse\nfinessed\nfinesses\nfinessing\nfinest\nfinfish\nfinfishes\nfinfoot\nfinfoots\nfinger\nfingerboard\nfingerboards\nfingered\nfingerer\nfingerers\nfingering\nfingerings\nfingerling\nfingerlings\nfingernail\nfingernails\nfingerprint\nfingerprinted\nfingerprinting\nfingerprints\nfingers\nfingertip\nfingertips\nfinial\nfinialed\nfinials\nfinical\nfinickier\nfinickiest\nfinickin\nfinicking\nfinicky\nfinikin\nfiniking\nfining\nfinings\nfinis\nfinises\nfinish\nfinished\nfinisher\nfinishers\nfinishes\nfinishing\nfinite\nfinitely\nfiniteness\nfinites\nfinitude\nfinitudes\nfink\nfinked\nfinking\nfinks\nfinless\nfinlike\nfinmark\nfinmarks\nfinned\nfinnickier\nfinnickiest\nfinnicky\nfinnier\nfinniest\nfinning\nfinnmark\nfinnmarks\nfinny\nfino\nfinochio\nfinochios\nfinos\nfins\nfiord\nfiords\nfipple\nfipples\nfique\nfiques\nfir\nfire\nfirearm\nfirearms\nfireball\nfireballs\nfirebird\nfirebirds\nfireboat\nfireboats\nfirebomb\nfirebombed\nfirebombing\nfirebombs\nfirebox\nfireboxes\nfirebrand\nfirebrands\nfirebrat\nfirebrats\nfirebreak\nfirebreaks\nfirebrick\nfirebricks\nfirebug\nfirebugs\nfireclay\nfireclays\nfirecracker\nfirecrackers\nfired\nfiredamp\nfiredamps\nfiredog\nfiredogs\nfirefang\nfirefanged\nfirefanging\nfirefangs\nfireflies\nfirefly\nfirehall\nfirehalls\nfireless\nfirelight\nfirelights\nfirelock\nfirelocks\nfireman\nfiremen\nfirepan\nfirepans\nfirepink\nfirepinks\nfireplace\nfireplaces\nfireplug\nfireplugs\nfirepower\nfireproof\nfireproofed\nfireproofing\nfireproofs\nfirer\nfireroom\nfirerooms\nfirers\nfires\nfireside\nfiresides\nfiretrap\nfiretraps\nfirewater\nfireweed\nfireweeds\nfirewood\nfirewoods\nfirework\nfireworks\nfireworm\nfireworms\nfiring\nfirings\nfirkin\nfirkins\nfirm\nfirmament\nfirmamental\nfirman\nfirmans\nfirmed\nfirmer\nfirmers\nfirmest\nfirming\nfirmly\nfirmness\nfirmnesses\nfirms\nfirn\nfirns\nfirry\nfirs\nfirst\nfirstborn\nfirstborns\nfirsthand\nfirstling\nfirstlings\nfirstly\nfirsts\nfirth\nfirths\nfisc\nfiscal\nfiscally\nfiscals\nfiscs\nfish\nfishable\nfishboats\nfishbolt\nfishbolts\nfishbone\nfishbones\nfishbowl\nfishbowls\nfished\nfisher\nfisheries\nfisherman\nfishermen\nfishers\nfishery\nfishes\nfisheye\nfisheyes\nfishgig\nfishgigs\nfishhook\nfishhooks\nfishier\nfishiest\nfishily\nfishing\nfishings\nfishless\nfishlike\nfishline\nfishlines\nfishmeal\nfishmeals\nfishmonger\nfishmongers\nfishnet\nfishnets\nfishpole\nfishpoles\nfishpond\nfishponds\nfishtail\nfishtailed\nfishtailing\nfishtails\nfishway\nfishways\nfishwife\nfishwives\nfishy\nfissate\nfissile\nfission\nfissionability\nfissionable\nfissional\nfissioned\nfissioning\nfissions\nfissiparous\nfissiped\nfissipeds\nfissure\nfissured\nfissures\nfissuring\nfist\nfisted\nfistful\nfistfuls\nfistic\nfisticuffs\nfisting\nfistnote\nfistnotes\nfists\nfistula\nfistulae\nfistular\nfistulas\nfit\nfitch\nfitchee\nfitches\nfitchet\nfitchets\nfitchew\nfitchews\nfitchy\nfitful\nfitfully\nfitfulness\nfitly\nfitment\nfitments\nfitness\nfitnesses\nfits\nfittable\nfitted\nfitter\nfitters\nfittest\nfitting\nfittingly\nfittingness\nfittings\nfive\nfivefold\nfivepins\nfiver\nfivers\nfives\nfix\nfixable\nfixate\nfixated\nfixates\nfixatif\nfixatifs\nfixating\nfixation\nfixations\nfixative\nfixatives\nfixed\nfixedly\nfixedness\nfixer\nfixers\nfixes\nfixing\nfixings\nfixit\nfixities\nfixity\nfixt\nfixture\nfixtures\nfixure\nfixures\nfiz\nfizgig\nfizgigs\nfizz\nfizzed\nfizzer\nfizzers\nfizzes\nfizzier\nfizziest\nfizzing\nfizzle\nfizzled\nfizzles\nfizzling\nfizzy\nfjeld\nfjelds\nfjord\nfjords\nflab\nflabbergast\nflabbergasted\nflabbergasting\nflabbergasts\nflabbier\nflabbiest\nflabbily\nflabbiness\nflabby\nflabella\nflabs\nflaccid\nflaccidity\nflaccidly\nflack\nflacks\nflacon\nflacons\nflag\nflagella\nflagellant\nflagellants\nflagellate\nflagellated\nflagellates\nflagellating\nflagellation\nflagellations\nflagellum\nflagellums\nflageolet\nflageolets\nflagged\nflagger\nflaggers\nflaggier\nflaggiest\nflagging\nflaggings\nflaggy\nflagitious\nflagitiously\nflagitiousness\nflagless\nflagman\nflagmen\nflagon\nflagons\nflagpole\nflagpoles\nflagrancy\nflagrant\nflagrantly\nflags\nflagship\nflagships\nflagstaff\nflagstaffs\nflagstone\nflagstones\nflail\nflailed\nflailing\nflails\nflair\nflairs\nflak\nflake\nflaked\nflaker\nflakers\nflakes\nflakier\nflakiest\nflakily\nflakiness\nflaking\nflaky\nflam\nflambe\nflambeau\nflambeaus\nflambeaux\nflambee\nflambeed\nflambeing\nflambes\nflamboyance\nflamboyancy\nflamboyant\nflamboyantly\nflame\nflamed\nflamen\nflamenco\nflamencos\nflamens\nflameout\nflameouts\nflameproof\nflamer\nflamers\nflames\nflamier\nflamiest\nflamines\nflaming\nflamingo\nflamingoes\nflamingos\nflammability\nflammable\nflammables\nflammed\nflamming\nflams\nflamy\nflan\nflancard\nflancards\nflanerie\nflaneries\nflanes\nflaneur\nflaneurs\nflange\nflanged\nflanger\nflangers\nflanges\nflanging\nflank\nflanked\nflanker\nflankers\nflanking\nflanks\nflannel\nflanneled\nflannelette\nflannelettes\nflanneling\nflannelled\nflannelling\nflannels\nflans\nflap\nflapjack\nflapjacks\nflapless\nflappable\nflapped\nflapper\nflappers\nflappier\nflappiest\nflapping\nflappy\nflaps\nflare\nflared\nflares\nflarfishes\nflaring\nflaringly\nflash\nflashback\nflashbacks\nflashbulb\nflashbulbs\nflashcard\nflashcards\nflashcube\nflashcubes\nflashed\nflasher\nflashers\nflashes\nflashgun\nflashguns\nflashier\nflashiest\nflashily\nflashiness\nflashing\nflashings\nflashlight\nflashlights\nflashover\nflashovers\nflashy\nflask\nflasket\nflaskets\nflasks\nflat\nflatbed\nflatbeds\nflatboat\nflatboats\nflatcap\nflatcaps\nflatcar\nflatcars\nflatfeet\nflatfish\nflatfishes\nflatfoot\nflatfooted\nflatfooting\nflatfoots\nflathead\nflatheads\nflatiron\nflatirons\nflatland\nflatlands\nflatlet\nflatlets\nflatling\nflatly\nflatness\nflatnesses\nflats\nflatted\nflatten\nflattened\nflattener\nflatteners\nflattening\nflattens\nflatter\nflattered\nflatterer\nflatterers\nflatteries\nflattering\nflatteringly\nflatters\nflattery\nflattest\nflatting\nflattish\nflattop\nflattops\nflatulence\nflatulency\nflatulent\nflatulently\nflatus\nflatuses\nflatware\nflatwares\nflatwash\nflatwashes\nflatways\nflatwise\nflatwork\nflatworks\nflatworm\nflatworms\nflaunt\nflaunted\nflaunter\nflaunters\nflauntier\nflauntiest\nflaunting\nflauntingly\nflaunts\nflaunty\nflautist\nflautists\nflavin\nflavine\nflavines\nflavins\nflavone\nflavones\nflavonol\nflavonols\nflavor\nflavored\nflavorer\nflavorers\nflavorful\nflavorfully\nflavoring\nflavorings\nflavorless\nflavors\nflavorsome\nflavory\nflavour\nflavoured\nflavouring\nflavours\nflavoury\nflaw\nflawed\nflawier\nflawiest\nflawing\nflawless\nflawlessly\nflawlessness\nflaws\nflawy\nflax\nflaxen\nflaxes\nflaxier\nflaxiest\nflaxseed\nflaxseeds\nflaxy\nflay\nflayed\nflayer\nflayers\nflaying\nflays\nflea\nfleabag\nfleabags\nfleabane\nfleabanes\nfleabite\nfleabites\nfleam\nfleams\nfleas\nfleawort\nfleaworts\nfleche\nfleches\nfleck\nflecked\nflecking\nflecks\nflecky\nflection\nflections\nfled\nfledge\nfledged\nfledges\nfledgier\nfledgiest\nfledging\nfledgling\nfledglings\nfledgy\nflee\nfleece\nfleeced\nfleecer\nfleecers\nfleeces\nfleech\nfleeched\nfleeches\nfleeching\nfleecier\nfleeciest\nfleecily\nfleecing\nfleecy\nfleeing\nfleer\nfleered\nfleering\nfleers\nflees\nfleet\nfleeted\nfleeter\nfleetest\nfleeting\nfleetingly\nfleetingness\nfleetly\nfleetness\nfleets\nfleishig\nflemish\nflemished\nflemishes\nflemishing\nflench\nflenched\nflenches\nflenching\nflense\nflensed\nflenser\nflensers\nflenses\nflensing\nflesh\nfleshed\nflesher\nfleshers\nfleshes\nfleshier\nfleshiest\nfleshiness\nfleshing\nfleshings\nfleshlier\nfleshliest\nfleshly\nfleshpot\nfleshpots\nfleshy\nfletch\nfletched\nfletcher\nfletchers\nfletches\nfletching\nfleury\nflew\nflews\nflex\nflexed\nflexes\nflexibility\nflexible\nflexibly\nflexile\nflexing\nflexion\nflexions\nflexor\nflexors\nflexuose\nflexuous\nflexural\nflexure\nflexures\nfley\nfleyed\nfleying\nfleys\nflibbertigibbet\nflibbertigibbets\nflic\nflichter\nflichtered\nflichtering\nflichters\nflick\nflicked\nflicker\nflickered\nflickering\nflickeringly\nflickers\nflickery\nflicking\nflicks\nflics\nflied\nflier\nfliers\nflies\nfliest\nflight\nflighted\nflightier\nflightiest\nflightily\nflightiness\nflighting\nflightless\nflights\nflighty\nflimflam\nflimflammed\nflimflammer\nflimflammers\nflimflamming\nflimflams\nflimsier\nflimsies\nflimsiest\nflimsily\nflimsiness\nflimsy\nflinch\nflinched\nflincher\nflinchers\nflinches\nflinching\nflinder\nflinders\nfling\nflinger\nflingers\nflinging\nflings\nflint\nflinted\nflintier\nflintiest\nflintily\nflintiness\nflinting\nflintlock\nflintlocks\nflints\nflinty\nflip\nflippancies\nflippancy\nflippant\nflippantly\nflipped\nflipper\nflippers\nflippest\nflipping\nflips\nflirt\nflirtation\nflirtations\nflirtatious\nflirtatiously\nflirtatiousness\nflirted\nflirter\nflirters\nflirtier\nflirtiest\nflirting\nflirts\nflirty\nflit\nflitch\nflitched\nflitches\nflitching\nflite\nflited\nflites\nfliting\nflits\nflitted\nflitter\nflittered\nflittering\nflitters\nflitting\nflivver\nflivvers\nfloat\nfloatage\nfloatages\nfloated\nfloater\nfloaters\nfloatier\nfloatiest\nfloating\nfloats\nfloaty\nfloc\nflocced\nflocci\nfloccinaucinihilipilification\nfloccing\nfloccose\nflocculate\nflocculated\nflocculates\nflocculating\nflocculation\nflocculations\nfloccule\nflocculent\nfloccules\nflocculi\nfloccus\nflock\nflocked\nflockier\nflockiest\nflocking\nflockings\nflocks\nflocky\nflocs\nfloe\nfloes\nflog\nflogged\nflogger\nfloggers\nflogging\nfloggings\nflogs\nflong\nflongs\nflood\nflooded\nflooder\nflooders\nfloodgate\nfloodgates\nflooding\nfloodlight\nfloodlighted\nfloodlighting\nfloodlights\nfloodlit\nfloods\nfloodwater\nfloodwaters\nfloodway\nfloodways\nflooey\nfloor\nfloorage\nfloorages\nfloorboard\nfloorboards\nfloored\nfloorer\nfloorers\nflooring\nfloorings\nfloors\nfloorwalker\nfloorwalkers\nfloosies\nfloosy\nfloozie\nfloozies\nfloozy\nflop\nflophouse\nflophouses\nflopover\nflopovers\nflopped\nflopper\nfloppers\nfloppier\nfloppiest\nfloppily\nflopping\nfloppy\nflops\nflora\nflorae\nfloral\nflorally\nfloras\nflorence\nflorences\nflorescence\nflorescent\nfloret\nflorets\nfloricultural\nfloriculture\nfloriculturist\nfloriculturists\nflorid\nfloridity\nfloridly\nfloriferous\nflorigen\nflorigens\nflorin\nflorins\nflorist\nfloristic\nfloristically\nflorists\nfloruit\nfloruits\nfloss\nflosses\nflossie\nflossier\nflossies\nflossiest\nflossy\nflota\nflotage\nflotages\nflotas\nflotation\nflotations\nflotilla\nflotillas\nflotsam\nflotsams\nflounce\nflounced\nflounces\nflouncier\nflounciest\nflouncing\nflouncy\nflounder\nfloundered\nfloundering\nflounders\nflour\nfloured\nflouring\nflourish\nflourished\nflourishes\nflourishing\nflours\nfloury\nflout\nflouted\nflouter\nflouters\nflouting\nflouts\nflow\nflowage\nflowages\nflowchart\nflowcharting\nflowchartings\nflowcharts\nflowed\nflower\nflowered\nflowerer\nflowerers\nfloweret\nflowerets\nflowerier\nfloweriest\nfloweriness\nflowering\nflowerless\nflowerlike\nflowerpot\nflowerpots\nflowers\nflowery\nflowing\nflowingly\nflown\nflows\nflu\nflub\nflubbed\nflubbing\nflubdub\nflubdubs\nflubs\nfluctuate\nfluctuated\nfluctuates\nfluctuating\nfluctuation\nfluctuations\nflue\nflued\nfluencies\nfluency\nfluent\nfluently\nflueric\nfluerics\nflues\nfluff\nfluffed\nfluffier\nfluffiest\nfluffily\nfluffiness\nfluffing\nfluffs\nfluffy\nfluid\nfluidal\nfluidally\nfluidic\nfluidics\nfluidise\nfluidised\nfluidises\nfluidising\nfluidities\nfluidity\nfluidization\nfluidizations\nfluidize\nfluidized\nfluidizer\nfluidizers\nfluidizes\nfluidizing\nfluidly\nfluidness\nfluidounce\nfluidounces\nfluidram\nfluidrams\nfluids\nfluke\nfluked\nflukes\nflukey\nflukier\nflukiest\nfluking\nfluky\nflume\nflumed\nflumes\nfluming\nflummeries\nflummery\nflummox\nflummoxed\nflummoxes\nflummoxing\nflump\nflumped\nflumping\nflumps\nflung\nflunk\nflunked\nflunker\nflunkers\nflunkey\nflunkeys\nflunkies\nflunking\nflunks\nflunky\nfluor\nfluorene\nfluorenes\nfluoresce\nfluoresced\nfluorescein\nfluoresceins\nfluorescence\nfluorescent\nfluoresces\nfluorescing\nfluoric\nfluorid\nfluoridate\nfluoridated\nfluoridates\nfluoridating\nfluoridation\nfluoridations\nfluoride\nfluorides\nfluorids\nfluorin\nfluorinate\nfluorinated\nfluorinates\nfluorinating\nfluorination\nfluorinations\nfluorine\nfluorines\nfluorins\nfluorite\nfluorites\nfluorocarbon\nfluorocarbons\nfluoroscope\nfluoroscopes\nfluoroscopic\nfluoroscopist\nfluoroscopists\nfluoroscopy\nfluors\nflurried\nflurries\nflurry\nflurrying\nflus\nflush\nflushed\nflusher\nflushers\nflushes\nflushest\nflushing\nflushness\nfluster\nflustered\nflustering\nflusters\nflute\nfluted\nflutelike\nfluter\nfluters\nflutes\nflutier\nflutiest\nfluting\nflutings\nflutist\nflutists\nflutter\nfluttered\nfluttering\nflutters\nfluttery\nfluty\nfluvial\nflux\nfluxed\nfluxes\nfluxing\nfluxion\nfluxional\nfluxions\nfluyt\nfluyts\nfly\nflyable\nflyaway\nflyaways\nflybelt\nflybelts\nflyblew\nflyblow\nflyblowing\nflyblown\nflyblows\nflyboat\nflyboats\nflyby\nflybys\nflycatcher\nflycatchers\nflyer\nflyers\nflying\nflyings\nflyleaf\nflyleaves\nflyman\nflymen\nflyover\nflyovers\nflypaper\nflypapers\nflypast\nflypasts\nflysch\nflysches\nflyspeck\nflyspecked\nflyspecking\nflyspecks\nflyte\nflyted\nflytes\nflytier\nflytiers\nflyting\nflytings\nflytrap\nflytraps\nflyway\nflyways\nflyweight\nflyweights\nflywheel\nflywheels\nfoal\nfoaled\nfoaling\nfoals\nfoam\nfoamed\nfoamer\nfoamers\nfoamier\nfoamiest\nfoamily\nfoaminess\nfoaming\nfoamless\nfoamlike\nfoams\nfoamy\nfob\nfobbed\nfobbing\nfobs\nfocal\nfocalise\nfocalised\nfocalises\nfocalising\nfocalization\nfocalizations\nfocalize\nfocalized\nfocalizes\nfocalizing\nfocally\nfoci\nfocus\nfocused\nfocuser\nfocusers\nfocuses\nfocusing\nfocussed\nfocusses\nfocussing\nfodder\nfoddered\nfoddering\nfodders\nfodgel\nfoe\nfoehn\nfoehns\nfoeman\nfoemen\nfoes\nfoetal\nfoetid\nfoetor\nfoetors\nfoetus\nfoetuses\nfog\nfogbound\nfogbow\nfogbows\nfogdog\nfogdogs\nfogey\nfogeys\nfogfruit\nfogfruits\nfoggage\nfoggages\nfogged\nfogger\nfoggers\nfoggier\nfoggiest\nfoggily\nfogginess\nfogging\nfoggy\nfoghorn\nfoghorns\nfogie\nfogies\nfogless\nfogs\nfogy\nfogyish\nfogyism\nfogyisms\nfoh\nfohn\nfohns\nfoible\nfoibles\nfoil\nfoilable\nfoiled\nfoiling\nfoils\nfoilsman\nfoilsmen\nfoin\nfoined\nfoining\nfoins\nfoison\nfoisons\nfoist\nfoisted\nfoisting\nfoists\nfolacin\nfolacins\nfolate\nfolates\nfold\nfoldable\nfoldaway\nfoldboat\nfoldboats\nfolded\nfolder\nfolderol\nfolderols\nfolders\nfolding\nfoldout\nfoldouts\nfolds\nfolia\nfoliage\nfoliaged\nfoliages\nfoliar\nfoliate\nfoliated\nfoliates\nfoliating\nfoliation\nfoliations\nfolio\nfolioed\nfolioing\nfolios\nfoliose\nfolious\nfolium\nfoliums\nfolk\nfolkish\nfolklike\nfolklore\nfolklores\nfolkloric\nfolklorist\nfolkloristic\nfolklorists\nfolkmoot\nfolkmoots\nfolkmot\nfolkmote\nfolkmotes\nfolkmots\nfolks\nfolksier\nfolksiest\nfolksily\nfolksy\nfolktale\nfolktales\nfolkway\nfolkways\nfolky\nfolles\nfollicle\nfollicles\nfollies\nfollis\nfollow\nfollowed\nfollower\nfollowers\nfollowing\nfollowings\nfollows\nfolly\nfoment\nfomentation\nfomentations\nfomented\nfomenter\nfomenters\nfomenting\nfoments\nfon\nfond\nfondant\nfondants\nfonded\nfonder\nfondest\nfonding\nfondle\nfondled\nfondler\nfondlers\nfondles\nfondling\nfondlings\nfondly\nfondness\nfondnesses\nfonds\nfondu\nfondue\nfondues\nfondus\nfons\nfont\nfontal\nfontanel\nfontanels\nfontina\nfontinas\nfonts\nfood\nfoodless\nfoodlessness\nfoods\nfoodstuff\nfoodstuffs\nfoofaraw\nfoofaraws\nfool\nfooled\nfooleries\nfoolery\nfoolfish\nfoolfishes\nfoolhardily\nfoolhardiness\nfoolhardy\nfooling\nfoolish\nfoolisher\nfoolishest\nfoolishly\nfoolishness\nfoolproof\nfools\nfoolscap\nfoolscaps\nfoot\nfootage\nfootages\nfootball\nfootballs\nfootbath\nfootbaths\nfootboy\nfootboys\nfootbridge\nfootbridges\nfooted\nfooter\nfooters\nfootfall\nfootfalls\nfootgear\nfootgears\nfoothill\nfoothills\nfoothold\nfootholds\nfootier\nfootiest\nfooting\nfootings\nfootle\nfootled\nfootler\nfootlers\nfootles\nfootless\nfootlessly\nfootlessness\nfootlights\nfootlike\nfootling\nfootlocker\nfootlockers\nfootloose\nfootman\nfootmark\nfootmarks\nfootmen\nfootnote\nfootnoted\nfootnotes\nfootnoting\nfootpace\nfootpaces\nfootpad\nfootpads\nfootpath\nfootpaths\nfootprint\nfootprints\nfootrace\nfootraces\nfootrest\nfootrests\nfootrope\nfootropes\nfoots\nfootsie\nfootsies\nfootslog\nfootslogged\nfootslogging\nfootslogs\nfootsore\nfootsoreness\nfootstep\nfootsteps\nfootstool\nfootstools\nfootwall\nfootwalls\nfootway\nfootways\nfootwear\nfootwears\nfootwork\nfootworks\nfootworn\nfooty\nfoozle\nfoozled\nfoozler\nfoozlers\nfoozles\nfoozling\nfop\nfopped\nfopperies\nfoppery\nfopping\nfoppish\nfoppishly\nfoppishness\nfops\nfor\nfora\nforage\nforaged\nforager\nforagers\nforages\nforaging\nforam\nforamen\nforamens\nforamina\nforaminifer\nforaminifers\nforams\nforasmuch\nforay\nforayed\nforayer\nforayers\nforaying\nforays\nforb\nforbad\nforbade\nforbear\nforbearance\nforbearances\nforbearer\nforbearers\nforbearing\nforbears\nforbid\nforbidal\nforbidals\nforbiddance\nforbidden\nforbidder\nforbidders\nforbidding\nforbiddingly\nforbiddingness\nforbids\nforbode\nforboded\nforbodes\nforboding\nforbore\nforborne\nforbs\nforby\nforbye\nforce\nforced\nforcedly\nforceful\nforcefully\nforcefulness\nforceless\nforcemeat\nforcemeats\nforceps\nforcer\nforcers\nforces\nforcible\nforcibleness\nforcibly\nforcing\nforcipes\nford\nfordable\nforded\nfordid\nfording\nfordless\nfordo\nfordoes\nfordoing\nfordone\nfords\nfore\nforearm\nforearmed\nforearming\nforearms\nforebay\nforebays\nforebear\nforebears\nforebode\nforeboded\nforebodes\nforebodies\nforeboding\nforebodingly\nforebodingness\nforebodings\nforebody\nforeboom\nforebooms\nforeby\nforebye\nforecast\nforecasted\nforecaster\nforecasters\nforecasting\nforecastle\nforecastles\nforecasts\nforeclose\nforeclosed\nforecloses\nforeclosing\nforeclosure\nforeclosures\nforedate\nforedated\nforedates\nforedating\nforedeck\nforedecks\nforedid\nforedo\nforedoes\nforedoing\nforedone\nforedoom\nforedoomed\nforedooming\nforedooms\nforeface\nforefaces\nforefather\nforefathers\nforefeel\nforefeeling\nforefeels\nforefeet\nforefelt\nforefend\nforefended\nforefending\nforefends\nforefinger\nforefingers\nforefoot\nforefront\nforefronts\nforegather\nforego\nforegoer\nforegoers\nforegoes\nforegoing\nforegone\nforeground\nforegrounds\nforegut\nforeguts\nforehand\nforehanded\nforehandedly\nforehands\nforehead\nforeheads\nforehoof\nforehoofs\nforehooves\nforeign\nforeigner\nforeigners\nforeignism\nforeignness\nforeknew\nforeknow\nforeknowing\nforeknowledge\nforeknown\nforeknows\nforeladies\nforelady\nforeland\nforelands\nforeleg\nforelegs\nforelimb\nforelimbs\nforelock\nforelocks\nforeman\nforemanship\nforemast\nforemasts\nforemen\nforemilk\nforemilks\nforemost\nforename\nforenamed\nforenames\nforenoon\nforenoons\nforensic\nforensically\nforensics\nforeordain\nforeordained\nforeordaining\nforeordains\nforeordination\nforeordinations\nforepart\nforeparts\nforepast\nforepaw\nforepaws\nforepeak\nforepeaks\nforeplay\nforeplays\nforequarter\nforequarters\nforeran\nforerank\nforeranks\nforerun\nforerunner\nforerunners\nforerunning\nforeruns\nfores\nforesaid\nforesail\nforesails\nforesaw\nforesee\nforeseeable\nforeseeing\nforeseen\nforeseer\nforeseers\nforesees\nforeshadow\nforeshadowed\nforeshadower\nforeshadowers\nforeshadowing\nforeshadows\nforeshorten\nforeshortened\nforeshortening\nforeshortens\nforeshow\nforeshowed\nforeshowing\nforeshown\nforeshows\nforeside\nforesides\nforesight\nforesighted\nforesightedly\nforesightedness\nforesights\nforeskin\nforeskins\nforest\nforestal\nforestall\nforestalled\nforestaller\nforestallers\nforestalling\nforestallment\nforestallments\nforestalls\nforestation\nforestations\nforestay\nforestays\nforested\nforester\nforesters\nforestial\nforesting\nforestland\nforestlands\nforestries\nforestry\nforests\nforeswear\nforeswearing\nforeswore\nforesworn\nforetaste\nforetasted\nforetastes\nforetasting\nforetell\nforeteller\nforetellers\nforetelling\nforetells\nforethought\nforetime\nforetimes\nforetold\nforetop\nforetops\nforever\nforevermore\nforevers\nforewarn\nforewarned\nforewarning\nforewarns\nforewent\nforewing\nforewings\nforeword\nforewords\nforeworn\nforeyard\nforeyards\nforfeit\nforfeitable\nforfeited\nforfeiter\nforfeiters\nforfeiting\nforfeits\nforfeiture\nforfeitures\nforfend\nforfended\nforfending\nforfends\nforgat\nforgather\nforgathered\nforgathering\nforgathers\nforgave\nforge\nforgeable\nforged\nforger\nforgeries\nforgers\nforgery\nforges\nforget\nforgetful\nforgetfully\nforgetfulness\nforgets\nforgettable\nforgetter\nforgetters\nforgetting\nforging\nforgings\nforgivable\nforgive\nforgiven\nforgiveness\nforgiver\nforgivers\nforgives\nforgiving\nforgivingly\nforgivingness\nforgo\nforgoer\nforgoers\nforgoes\nforgoing\nforgone\nforgot\nforgotten\nforint\nforints\nforjudge\nforjudged\nforjudges\nforjudging\nfork\nforked\nforkedly\nforker\nforkers\nforkful\nforkfuls\nforkier\nforkiest\nforking\nforkless\nforklift\nforklifts\nforklike\nforks\nforksful\nforky\nforlorn\nforlorner\nforlornest\nforlornly\nforlornness\nform\nformabilities\nformability\nformable\nformal\nformaldehyde\nformaldehydes\nformalin\nformalins\nformalism\nformalisms\nformalist\nformalistic\nformalistically\nformalists\nformalities\nformality\nformalization\nformalizations\nformalize\nformalized\nformalizer\nformalizers\nformalizes\nformalizing\nformally\nformalness\nformals\nformant\nformants\nformat\nformate\nformates\nformation\nformational\nformations\nformative\nformatively\nformativeness\nformats\nformatted\nformatting\nforme\nformed\nformee\nformer\nformerly\nformers\nformes\nformful\nformic\nformicaries\nformicary\nformidable\nformidableness\nformidably\nforming\nformless\nformlessly\nformlessness\nformol\nformols\nforms\nformula\nformulae\nformulaic\nformulaically\nformularies\nformularization\nformularizations\nformularize\nformularized\nformularizer\nformularizers\nformularizes\nformularizing\nformulary\nformulas\nformulate\nformulated\nformulates\nformulating\nformulation\nformulations\nformulator\nformulators\nformulization\nformulizations\nformulize\nformulized\nformulizes\nformulizing\nformyl\nformyls\nfornical\nfornicate\nfornicated\nfornicates\nfornicating\nfornication\nfornications\nfornicator\nfornicators\nfornices\nfornix\nforrader\nforrit\nforsake\nforsaken\nforsaker\nforsakers\nforsakes\nforsaking\nforsook\nforsooth\nforspent\nforswear\nforswearing\nforswears\nforswore\nforsworn\nforsythia\nforsythias\nfort\nforte\nfortes\nforth\nforthcoming\nforthright\nforthrightly\nforthrightness\nforthwith\nforties\nfortieth\nfortieths\nfortification\nfortifications\nfortified\nfortifier\nfortifiers\nfortifies\nfortify\nfortifying\nfortis\nfortitude\nfortitudes\nfortnight\nfortnightly\nfortnights\nfortress\nfortressed\nfortresses\nfortressing\nforts\nfortuities\nfortuitous\nfortuitously\nfortuitousness\nfortuity\nfortunate\nfortunately\nfortunateness\nfortune\nfortuned\nfortunes\nfortuning\nforty\nforum\nforums\nforward\nforwarded\nforwarder\nforwarders\nforwardest\nforwarding\nforwardly\nforwardness\nforwards\nforwent\nforwhy\nforworn\nforzando\nforzandos\nfoss\nfossa\nfossae\nfossate\nfosse\nfosses\nfossette\nfossettes\nfossick\nfossicked\nfossicking\nfossicks\nfossil\nfossilization\nfossilizations\nfossilize\nfossilized\nfossilizes\nfossilizing\nfossils\nfoster\nfosterage\nfosterages\nfostered\nfosterer\nfosterers\nfostering\nfosterling\nfosterlings\nfosters\nfou\nfought\nfoughten\nfoul\nfoulard\nfoulards\nfouled\nfouler\nfoulest\nfouling\nfoulings\nfoully\nfoulmouthed\nfoulness\nfoulnesses\nfouls\nfound\nfoundation\nfoundational\nfoundationally\nfoundations\nfounded\nfounder\nfoundered\nfoundering\nfounders\nfounding\nfoundling\nfoundlings\nfoundries\nfoundry\nfounds\nfount\nfountain\nfountained\nfountainhead\nfountainheads\nfountaining\nfountains\nfounts\nfour\nfourchee\nfourfold\nfourgon\nfourgons\nfours\nfourscore\nfoursome\nfoursomes\nfoursquare\nfourteen\nfourteens\nfourteenth\nfourteenths\nfourth\nfourthly\nfourths\nfovea\nfoveae\nfoveal\nfoveate\nfoveated\nfoveola\nfoveolae\nfoveolar\nfoveolas\nfoveole\nfoveoles\nfoveolet\nfoveolets\nfowl\nfowled\nfowler\nfowlers\nfowling\nfowlings\nfowlpox\nfowlpoxes\nfowls\nfox\nfoxed\nfoxes\nfoxfire\nfoxfires\nfoxfish\nfoxfishes\nfoxglove\nfoxgloves\nfoxhole\nfoxholes\nfoxhound\nfoxhounds\nfoxier\nfoxiest\nfoxily\nfoxiness\nfoxinesses\nfoxing\nfoxings\nfoxlike\nfoxskin\nfoxskins\nfoxtail\nfoxtails\nfoxy\nfoy\nfoyer\nfoyers\nfoys\nfozier\nfoziest\nfoziness\nfozinesses\nfozy\nfracas\nfracases\nfracted\nfraction\nfractional\nfractionalization\nfractionalizations\nfractionalize\nfractionalized\nfractionalizes\nfractionalizing\nfractionally\nfractionate\nfractionated\nfractionates\nfractionating\nfractionation\nfractionations\nfractioned\nfractioning\nfractions\nfractious\nfractiously\nfractiousness\nfractur\nfracture\nfractured\nfractures\nfracturing\nfracturs\nfrae\nfraena\nfraenum\nfraenums\nfrag\nfragged\nfragging\nfraggings\nfragile\nfragility\nfragment\nfragmental\nfragmentally\nfragmentary\nfragmentation\nfragmentations\nfragmented\nfragmenting\nfragmentize\nfragmentized\nfragmentizes\nfragmentizing\nfragments\nfragrance\nfragrances\nfragrant\nfragrantly\nfrags\nfrail\nfrailer\nfrailest\nfrailly\nfrailness\nfrails\nfrailties\nfrailty\nfraise\nfraises\nfraktur\nfrakturs\nframable\nframe\nframed\nframer\nframers\nframes\nframework\nframeworks\nframing\nfranc\nfranchise\nfranchised\nfranchisee\nfranchisees\nfranchises\nfranchising\nfrancium\nfranciums\nfrancs\nfrangibility\nfrangible\nfrangipani\nfrangipanis\nfrank\nfranked\nfranker\nfrankers\nfrankest\nfrankfort\nfrankforter\nfrankforters\nfrankforts\nfrankfurt\nfrankfurter\nfrankfurters\nfrankfurts\nfrankincense\nfrankincenses\nfranking\nfranklin\nfranklins\nfrankly\nfrankness\nfranks\nfrantic\nfrantically\nfranticly\nfranticness\nfrap\nfrappe\nfrapped\nfrappes\nfrapping\nfraps\nfrat\nfrater\nfraternal\nfraternalism\nfraternalisms\nfraternally\nfraternities\nfraternity\nfraternization\nfraternizations\nfraternize\nfraternized\nfraternizer\nfraternizers\nfraternizes\nfraternizing\nfraters\nfratricidal\nfratricide\nfratricides\nfrats\nfraud\nfrauds\nfraudulent\nfraudulently\nfraught\nfraughted\nfraughting\nfraughts\nfraulein\nfrauleins\nfray\nfrayed\nfraying\nfrayings\nfrays\nfrazzle\nfrazzled\nfrazzles\nfrazzling\nfreak\nfreaked\nfreakier\nfreakiest\nfreakily\nfreakiness\nfreaking\nfreakish\nfreakishly\nfreakishness\nfreakout\nfreakouts\nfreaks\nfreaky\nfreckle\nfreckled\nfreckles\nfrecklier\nfreckliest\nfreckling\nfreckly\nfree\nfreebee\nfreebees\nfreebie\nfreebies\nfreeboot\nfreebooted\nfreebooter\nfreebooters\nfreebooting\nfreeboots\nfreeborn\nfreed\nfreedman\nfreedmen\nfreedom\nfreedoms\nfreedwoman\nfreedwomen\nfreeform\nfreehand\nfreehanded\nfreehandedly\nfreehandedness\nfreehold\nfreeholder\nfreeholders\nfreeholds\nfreeing\nfreeload\nfreeloaded\nfreeloader\nfreeloaders\nfreeloading\nfreeloads\nfreely\nfreeman\nfreemasonry\nfreemen\nfreeness\nfreenesses\nfreer\nfreers\nfrees\nfreesia\nfreesias\nfreest\nfreestanding\nfreestone\nfreestones\nfreethinker\nfreethinkers\nfreethinking\nfreeway\nfreeways\nfreewheel\nfreewheeled\nfreewheeling\nfreewheels\nfreewill\nfreeze\nfreezer\nfreezers\nfreezes\nfreezing\nfreight\nfreighted\nfreighter\nfreighters\nfreighting\nfreights\nfremd\nfremitus\nfremituses\nfrena\nfrench\nfrenched\nfrenches\nfrenching\nfrenetic\nfrenetically\nfrenetics\nfrenula\nfrenulum\nfrenum\nfrenums\nfrenzied\nfrenziedly\nfrenzies\nfrenzily\nfrenzy\nfrenzying\nfrequencies\nfrequency\nfrequent\nfrequentation\nfrequentations\nfrequented\nfrequenter\nfrequenters\nfrequentest\nfrequenting\nfrequently\nfrequentness\nfrequents\nfrere\nfreres\nfresco\nfrescoed\nfrescoer\nfrescoers\nfrescoes\nfrescoing\nfrescos\nfresh\nfreshed\nfreshen\nfreshened\nfreshener\nfresheners\nfreshening\nfreshens\nfresher\nfreshes\nfreshest\nfreshet\nfreshets\nfreshing\nfreshly\nfreshman\nfreshmen\nfreshness\nfreshwater\nfreshwaters\nfresnel\nfresnels\nfret\nfretful\nfretfully\nfretfulness\nfretless\nfrets\nfretsaw\nfretsaws\nfretsome\nfretted\nfrettier\nfrettiest\nfretting\nfretty\nfretwork\nfretworks\nfriability\nfriable\nfriableness\nfriar\nfriaries\nfriarly\nfriars\nfriary\nfribble\nfribbled\nfribbler\nfribblers\nfribbles\nfribbling\nfricando\nfricandoes\nfricassee\nfricasseed\nfricasseeing\nfricassees\nfriction\nfrictional\nfrictionally\nfrictionless\nfrictions\nfridge\nfridges\nfried\nfriend\nfriended\nfriending\nfriendless\nfriendlier\nfriendlies\nfriendliest\nfriendliness\nfriendly\nfriends\nfriendship\nfriendships\nfrier\nfriers\nfries\nfrieze\nfriezes\nfrig\nfrigate\nfrigates\nfrigged\nfrigging\nfright\nfrighted\nfrighten\nfrightened\nfrightening\nfrighteningly\nfrightens\nfrightful\nfrightfully\nfrightfulness\nfrighting\nfrights\nfrigid\nfrigidity\nfrigidly\nfrigidness\nfrijol\nfrijole\nfrijoles\nfrill\nfrilled\nfriller\nfrillers\nfrillier\nfrilliest\nfrilling\nfrillings\nfrills\nfrilly\nfringe\nfringed\nfringes\nfringier\nfringiest\nfringing\nfringy\nfripperies\nfrippery\nfrise\nfrises\nfrisette\nfrisettes\nfriseur\nfriseurs\nfrisk\nfrisked\nfrisker\nfriskers\nfrisket\nfriskets\nfriskier\nfriskiest\nfriskily\nfriskiness\nfrisking\nfrisks\nfrisky\nfrisson\nfrissons\nfrit\nfrith\nfriths\nfrits\nfritt\nfritted\nfritter\nfrittered\nfritterer\nfritterers\nfrittering\nfritters\nfritting\nfritts\nfritz\nfrivol\nfrivoled\nfrivoler\nfrivolers\nfrivoling\nfrivolities\nfrivolity\nfrivolled\nfrivoller\nfrivollers\nfrivolling\nfrivolous\nfrivolously\nfrivolousness\nfrivols\nfriz\nfrized\nfrizer\nfrizers\nfrizes\nfrizette\nfrizettes\nfrizing\nfrizz\nfrizzed\nfrizzer\nfrizzers\nfrizzes\nfrizzier\nfrizziest\nfrizzily\nfrizzing\nfrizzle\nfrizzled\nfrizzler\nfrizzlers\nfrizzles\nfrizzlier\nfrizzliest\nfrizzling\nfrizzly\nfrizzy\nfro\nfrock\nfrocked\nfrocking\nfrocks\nfroe\nfroes\nfrog\nfrogeye\nfrogeyed\nfrogeyes\nfrogfish\nfrogfishes\nfrogged\nfroggier\nfroggiest\nfrogging\nfroggy\nfroglike\nfrogman\nfrogmen\nfrogs\nfrolic\nfrolicked\nfrolicking\nfrolicky\nfrolics\nfrolicsome\nfrom\nfromage\nfromages\nfromenties\nfromenty\nfrond\nfronded\nfrondeur\nfrondeurs\nfrondose\nfronds\nfrons\nfront\nfrontage\nfrontages\nfrontal\nfrontally\nfrontals\nfronted\nfronter\nfrontes\nfrontier\nfrontiers\nfrontiersman\nfrontiersmen\nfronting\nfrontispiece\nfrontispieces\nfrontlet\nfrontlets\nfrontline\nfronton\nfrontons\nfronts\nfrore\nfrosh\nfrost\nfrostbit\nfrostbite\nfrostbites\nfrostbiting\nfrostbitten\nfrosted\nfrosteds\nfrostier\nfrostiest\nfrostily\nfrostiness\nfrosting\nfrostings\nfrosts\nfrosty\nfroth\nfrothed\nfrothier\nfrothiest\nfrothily\nfrothiness\nfrothing\nfroths\nfrothy\nfrottage\nfrottages\nfrotteur\nfrotteurs\nfroufrou\nfroufrous\nfrounce\nfrounced\nfrounces\nfrouncing\nfrouzier\nfrouziest\nfrouzy\nfrow\nfroward\nfrowardly\nfrowardness\nfrown\nfrowned\nfrowner\nfrowners\nfrowning\nfrowningly\nfrowns\nfrows\nfrowsier\nfrowsiest\nfrowstier\nfrowstiest\nfrowsty\nfrowsy\nfrowzier\nfrowziest\nfrowzily\nfrowzy\nfroze\nfrozen\nfrozenly\nfrozenness\nfructification\nfructifications\nfructified\nfructifies\nfructify\nfructifying\nfructose\nfructoses\nfrug\nfrugal\nfrugality\nfrugally\nfrugged\nfrugging\nfrugs\nfruit\nfruitage\nfruitages\nfruitcake\nfruitcakes\nfruited\nfruiter\nfruiters\nfruitful\nfruitfuller\nfruitfullest\nfruitfully\nfruitfulness\nfruitier\nfruitiest\nfruitiness\nfruiting\nfruition\nfruitions\nfruitless\nfruitlessly\nfruitlessness\nfruitlet\nfruitlets\nfruits\nfruity\nfrumenties\nfrumenty\nfrump\nfrumpier\nfrumpiest\nfrumpily\nfrumpish\nfrumps\nfrumpy\nfrusta\nfrustrate\nfrustrated\nfrustrates\nfrustrating\nfrustratingly\nfrustration\nfrustrations\nfrustule\nfrustules\nfrustum\nfrustums\nfry\nfryer\nfryers\nfrying\nfrypan\nfrypans\nfub\nfubbed\nfubbing\nfubs\nfubsier\nfubsiest\nfubsy\nfuchsia\nfuchsias\nfuchsin\nfuchsine\nfuchsines\nfuchsins\nfuci\nfuck\nfucked\nfucking\nfucks\nfucoid\nfucoidal\nfucoids\nfucose\nfucoses\nfucous\nfucus\nfucuses\nfud\nfuddle\nfuddled\nfuddles\nfuddling\nfudge\nfudged\nfudges\nfudging\nfuds\nfuehrer\nfuehrers\nfuel\nfueled\nfueler\nfuelers\nfueling\nfuelled\nfueller\nfuellers\nfuelling\nfuels\nfug\nfugacities\nfugacity\nfugal\nfugally\nfugato\nfugatos\nfugged\nfuggier\nfuggiest\nfugging\nfuggy\nfugio\nfugios\nfugitive\nfugitively\nfugitiveness\nfugitives\nfugle\nfugled\nfugleman\nfuglemen\nfugles\nfugling\nfugs\nfugu\nfugue\nfugued\nfugues\nfuguing\nfuguist\nfuguists\nfugus\nfuhrer\nfuhrers\nfuji\nfujis\nfulcra\nfulcrum\nfulcrums\nfulfil\nfulfill\nfulfilled\nfulfiller\nfulfillers\nfulfilling\nfulfillment\nfulfillments\nfulfills\nfulfils\nfulgent\nfulgid\nfulham\nfulhams\nfull\nfullam\nfullams\nfullback\nfullbacks\nfulled\nfuller\nfullered\nfulleries\nfullering\nfullers\nfullery\nfullest\nfullface\nfullfaces\nfulling\nfullness\nfullnesses\nfulls\nfully\nfulmar\nfulmars\nfulminate\nfulminated\nfulminates\nfulminating\nfulmination\nfulminations\nfulminator\nfulminators\nfulmine\nfulmined\nfulmines\nfulminic\nfulmining\nfulness\nfulnesses\nfulsome\nfulsomely\nfulsomeness\nfulvous\nfumarase\nfumarases\nfumarate\nfumarates\nfumaric\nfumarole\nfumaroles\nfumatories\nfumatory\nfumble\nfumbled\nfumbler\nfumblers\nfumbles\nfumbling\nfumblingly\nfume\nfumed\nfumeless\nfumelike\nfumer\nfumers\nfumes\nfumet\nfumets\nfumette\nfumettes\nfumier\nfumiest\nfumigant\nfumigants\nfumigate\nfumigated\nfumigates\nfumigating\nfumigation\nfumigations\nfumigator\nfumigators\nfuming\nfumitories\nfumitory\nfumuli\nfumulus\nfumy\nfun\nfunction\nfunctional\nfunctionalism\nfunctionalist\nfunctionalistic\nfunctionalists\nfunctionality\nfunctionally\nfunctionaries\nfunctionary\nfunctioned\nfunctioning\nfunctionless\nfunctions\nfunctor\nfunctors\nfund\nfundament\nfundamental\nfundamentalism\nfundamentalisms\nfundamentalist\nfundamentalists\nfundamentally\nfundamentals\nfundaments\nfunded\nfundi\nfundic\nfunding\nfunds\nfundus\nfuneral\nfunerals\nfunerary\nfunereal\nfunereally\nfunest\nfunfair\nfunfairs\nfungal\nfungals\nfungi\nfungible\nfungibles\nfungic\nfungicidal\nfungicidally\nfungicide\nfungicides\nfungo\nfungoes\nfungoid\nfungoids\nfungous\nfungus\nfunguses\nfunicle\nfunicles\nfuniculi\nfunk\nfunked\nfunker\nfunkers\nfunkia\nfunkias\nfunkier\nfunkiest\nfunkiness\nfunking\nfunks\nfunky\nfunned\nfunnel\nfunneled\nfunneling\nfunnelled\nfunnelling\nfunnels\nfunnier\nfunnies\nfunniest\nfunnily\nfunniness\nfunning\nfunny\nfunnyman\nfunnymen\nfuns\nfur\nfuran\nfurane\nfuranes\nfuranose\nfuranoses\nfurans\nfurbelow\nfurbelowed\nfurbelowing\nfurbelows\nfurbish\nfurbished\nfurbisher\nfurbishers\nfurbishes\nfurbishing\nfurcate\nfurcated\nfurcates\nfurcating\nfurcraea\nfurcraeas\nfurcula\nfurculae\nfurcular\nfurculum\nfurfur\nfurfural\nfurfurals\nfurfuran\nfurfurans\nfurfures\nfuribund\nfuries\nfurioso\nfurious\nfuriously\nfurl\nfurlable\nfurled\nfurler\nfurlers\nfurless\nfurling\nfurlong\nfurlongs\nfurlough\nfurloughed\nfurloughing\nfurloughs\nfurls\nfurmenties\nfurmenty\nfurmeties\nfurmety\nfurmities\nfurmity\nfurnace\nfurnaced\nfurnaces\nfurnacing\nfurnish\nfurnished\nfurnisher\nfurnishers\nfurnishes\nfurnishing\nfurnishings\nfurniture\nfuror\nfurore\nfurores\nfurors\nfurred\nfurrier\nfurrieries\nfurriers\nfurriery\nfurriest\nfurrily\nfurriner\nfurriners\nfurring\nfurrings\nfurrow\nfurrowed\nfurrower\nfurrowers\nfurrowing\nfurrows\nfurrowy\nfurry\nfurs\nfurther\nfurtherance\nfurtherances\nfurthered\nfurtherer\nfurtherers\nfurthering\nfurthermore\nfurthermost\nfurthers\nfurthest\nfurtive\nfurtively\nfurtiveness\nfuruncle\nfuruncles\nfury\nfurze\nfurzes\nfurzier\nfurziest\nfurzy\nfusain\nfusains\nfuscous\nfuse\nfused\nfusee\nfusees\nfusel\nfuselage\nfuselages\nfuseless\nfusels\nfuses\nfusibility\nfusible\nfusibly\nfusiform\nfusil\nfusile\nfusileer\nfusileers\nfusilier\nfusiliers\nfusillade\nfusillades\nfusils\nfusing\nfusion\nfusions\nfuss\nfussbudget\nfussbudgets\nfussed\nfusser\nfussers\nfusses\nfussier\nfussiest\nfussily\nfussiness\nfussing\nfusspot\nfusspots\nfussy\nfustian\nfustians\nfustic\nfustics\nfustier\nfustiest\nfustily\nfusty\nfutharc\nfutharcs\nfuthark\nfutharks\nfuthorc\nfuthorcs\nfuthork\nfuthorks\nfuties\nfutile\nfutilely\nfutileness\nfutilitarian\nfutilitarianism\nfutilitarians\nfutilities\nfutility\nfuton\nfuttock\nfuttocks\nfutural\nfuture\nfutureless\nfutures\nfuturism\nfuturisms\nfuturist\nfuturistic\nfuturistically\nfuturists\nfuturities\nfuturity\nfuturological\nfuturologist\nfuturologists\nfuturology\nfutz\nfuze\nfuzed\nfuzee\nfuzees\nfuzes\nfuzil\nfuzils\nfuzing\nfuzz\nfuzzed\nfuzzes\nfuzzier\nfuzziest\nfuzzily\nfuzzing\nfuzzy\nfyce\nfyces\nfyke\nfykes\nfylfot\nfylfots\nfytte\nfyttes\ngab\ngabardine\ngabardines\ngabbard\ngabbards\ngabbart\ngabbarts\ngabbed\ngabber\ngabbers\ngabbier\ngabbiest\ngabbing\ngabble\ngabbled\ngabbler\ngabblers\ngabbles\ngabbling\ngabbro\ngabbroic\ngabbroid\ngabbros\ngabby\ngabelle\ngabelled\ngabelles\ngabfest\ngabfests\ngabies\ngabion\ngabions\ngable\ngabled\ngables\ngabling\ngaboon\ngaboons\ngabs\ngaby\ngad\ngadabout\ngadabouts\ngadarene\ngadded\ngadder\ngadders\ngaddi\ngadding\ngaddis\ngadflies\ngadfly\ngadget\ngadgeteer\ngadgeteers\ngadgetries\ngadgetry\ngadgets\ngadgety\ngadi\ngadid\ngadids\ngadis\ngadoid\ngadoids\ngadroon\ngadroons\ngads\ngadwall\ngadwalls\ngadzooks\ngae\ngaed\ngaen\ngaes\ngaff\ngaffe\ngaffed\ngaffer\ngaffers\ngaffes\ngaffing\ngaffs\ngag\ngaga\ngage\ngaged\ngager\ngagers\ngages\ngagged\ngagger\ngaggers\ngagging\ngaggle\ngaggled\ngaggles\ngaggling\ngaging\ngagman\ngagmen\ngags\ngagster\ngagsters\ngahnite\ngahnites\ngaieties\ngaiety\ngaily\ngain\ngainable\ngained\ngainer\ngainers\ngainful\ngainfully\ngainfulness\ngaining\ngainless\ngainlier\ngainliest\ngainly\ngains\ngainsaid\ngainsay\ngainsayer\ngainsayers\ngainsaying\ngainsays\ngainst\ngait\ngaited\ngaiter\ngaiters\ngaiting\ngaits\ngal\ngala\ngalactic\ngalactose\ngalago\ngalagos\ngalah\ngalahs\ngalangal\ngalangals\ngalas\ngalatea\ngalateas\ngalavant\ngalavanted\ngalavanting\ngalavants\ngalax\ngalaxes\ngalaxies\ngalaxy\ngalbanum\ngalbanums\ngale\ngalea\ngaleae\ngaleas\ngaleate\ngaleated\ngalena\ngalenas\ngalenic\ngalenical\ngalenicals\ngalenite\ngalenites\ngalere\ngaleres\ngales\ngalilee\ngalilees\ngaliot\ngaliots\ngalipot\ngalipots\ngalivant\ngalivanted\ngalivanting\ngalivants\ngall\ngallant\ngallanted\ngallanting\ngallantly\ngallantries\ngallantry\ngallants\ngallate\ngallates\ngalleass\ngalleasses\ngalled\ngallein\ngalleins\ngalleon\ngalleons\ngalleried\ngalleries\ngallery\ngallerying\ngalleta\ngalletas\ngalley\ngalleys\ngallflies\ngallfly\ngalliard\ngalliards\ngalliass\ngalliasses\ngallic\ngallican\ngallied\ngallies\ngalling\ngalliot\ngalliots\ngallipot\ngallipots\ngallium\ngalliums\ngallivant\ngallivanted\ngallivanting\ngallivants\ngallnut\ngallnuts\ngallon\ngallonage\ngallons\ngalloon\ngalloons\ngalloot\ngalloots\ngallop\ngallopade\ngallopades\ngalloped\ngalloper\ngallopers\ngalloping\ngallops\ngallous\ngallows\ngallowses\ngalls\ngallstone\ngallstones\ngallus\ngallused\ngalluses\ngally\ngallying\ngaloot\ngaloots\ngalop\ngalopade\ngalopades\ngalops\ngalore\ngalores\ngalosh\ngaloshe\ngaloshed\ngaloshes\ngals\ngalumph\ngalumphed\ngalumphing\ngalumphs\ngalvanic\ngalvanically\ngalvanism\ngalvanization\ngalvanize\ngalvanized\ngalvanizer\ngalvanizers\ngalvanizes\ngalvanizing\ngalvanometer\ngalvanometers\ngalvanometric\ngalvanometry\ngalyac\ngalyacs\ngalyak\ngalyaks\ngam\ngama\ngamas\ngamashes\ngamay\ngamb\ngamba\ngambade\ngambades\ngambado\ngambadoes\ngambados\ngambas\ngambe\ngambes\ngambeson\ngambesons\ngambia\ngambias\ngambier\ngambiers\ngambir\ngambirs\ngambit\ngambits\ngamble\ngambled\ngambler\ngamblers\ngambles\ngambling\ngamboge\ngamboges\ngambol\ngamboled\ngamboling\ngambolled\ngambolling\ngambols\ngambrel\ngambrels\ngambs\ngambusia\ngambusias\ngame\ngamecock\ngamecocks\ngamed\ngamekeeper\ngamekeepers\ngamelan\ngamelans\ngamelike\ngamely\ngameness\ngamenesses\ngamer\ngames\ngamesmanship\ngamesome\ngamesomely\ngamesomeness\ngamest\ngamester\ngamesters\ngamete\ngametes\ngametic\ngamey\ngamic\ngamier\ngamiest\ngamily\ngamin\ngamine\ngamines\ngaminess\ngaminesses\ngaming\ngamings\ngamins\ngamma\ngammadia\ngammas\ngammed\ngammer\ngammers\ngamming\ngammon\ngammoned\ngammoner\ngammoners\ngammoning\ngammons\ngammy\ngamodeme\ngamodemes\ngamp\ngamps\ngams\ngamut\ngamuts\ngamy\ngan\ngander\ngandered\ngandering\nganders\ngane\nganef\nganefs\nganev\nganevs\ngang\nganged\nganger\ngangers\nganging\ngangland\nganglands\nganglia\nganglial\ngangliar\nganglier\ngangliest\ngangling\nganglion\nganglions\ngangly\ngangplank\ngangplanks\ngangplow\ngangplows\ngangrel\ngangrels\ngangrene\ngangrened\ngangrenes\ngangrening\ngangrenous\ngangs\ngangster\ngangsters\ngangue\ngangues\ngangway\ngangways\nganister\nganisters\nganja\nganjas\ngannet\ngannets\nganof\nganofs\nganoid\nganoids\ngantlet\ngantleted\ngantleting\ngantlets\ngantline\ngantlines\ngantlope\ngantlopes\ngantries\ngantry\nganymede\nganymedes\ngaol\ngaoled\ngaoler\ngaolers\ngaoling\ngaols\ngap\ngape\ngaped\ngaper\ngapers\ngapes\ngapeseed\ngapeseeds\ngapeworm\ngapeworms\ngaping\ngapingly\ngaposis\ngaposises\ngapped\ngappier\ngappiest\ngapping\ngappy\ngaps\ngapy\ngar\ngarage\ngaraged\ngarages\ngaraging\ngarb\ngarbage\ngarbages\ngarbanzo\ngarbanzos\ngarbed\ngarbing\ngarble\ngarbled\ngarbler\ngarblers\ngarbles\ngarbless\ngarbling\ngarboard\ngarboards\ngarboil\ngarboils\ngarbs\ngarcon\ngarcons\ngardant\ngarden\ngardened\ngardener\ngardeners\ngardenia\ngardenias\ngardening\ngardens\ngardyloo\ngarfish\ngarfishes\ngarganey\ngarganeys\ngargantuan\ngarget\ngargets\ngargety\ngargle\ngargled\ngargler\ngarglers\ngargles\ngargling\ngargoyle\ngargoyled\ngargoyles\ngarish\ngarishly\ngarishness\ngarland\ngarlanded\ngarlanding\ngarlands\ngarlic\ngarlicky\ngarlics\ngarment\ngarmented\ngarmenting\ngarments\ngarner\ngarnered\ngarnering\ngarners\ngarnet\ngarnets\ngarni\ngarnish\ngarnished\ngarnishee\ngarnisheed\ngarnisheeing\ngarnishees\ngarnishes\ngarnishing\ngarnishment\ngarnishments\ngarniture\ngarnitures\ngarote\ngaroted\ngarotes\ngaroting\ngarotte\ngarotted\ngarotter\ngarotters\ngarottes\ngarotting\ngarpike\ngarpikes\ngarred\ngarret\ngarrets\ngarring\ngarrison\ngarrisoned\ngarrisoning\ngarrisons\ngarron\ngarrons\ngarrote\ngarroted\ngarroter\ngarroters\ngarrotes\ngarroting\ngarrotte\ngarrotted\ngarrottes\ngarrotting\ngarrulity\ngarrulous\ngarrulously\ngarrulousness\ngars\ngarter\ngartered\ngartering\ngarters\ngarth\ngarths\ngarvey\ngarveys\ngas\ngasalier\ngasaliers\ngasbag\ngasbags\ngascon\ngasconade\ngasconaded\ngasconader\ngasconaders\ngasconades\ngasconading\ngascons\ngaselier\ngaseliers\ngaseous\ngases\ngash\ngashed\ngasher\ngashes\ngashest\ngashing\ngashouse\ngashouses\ngasification\ngasifications\ngasified\ngasifier\ngasifiers\ngasifies\ngasiform\ngasify\ngasifying\ngasket\ngaskets\ngaskin\ngasking\ngaskings\ngaskins\ngasless\ngaslight\ngaslights\ngaslit\ngasman\ngasmen\ngasogene\ngasogenes\ngasolene\ngasolenes\ngasolier\ngasoliers\ngasoline\ngasolines\ngasolinic\ngasometer\ngasometers\ngasp\ngasped\ngasper\ngaspers\ngasping\ngaspingly\ngasps\ngassed\ngasser\ngassers\ngasses\ngassier\ngassiest\ngassing\ngassings\ngassy\ngast\ngasted\ngastight\ngasting\ngastness\ngastnesses\ngastraea\ngastraeas\ngastral\ngastrea\ngastreas\ngastric\ngastrin\ngastrins\ngastroenterologist\ngastroenterologists\ngastroenterology\ngastronome\ngastronomes\ngastronomic\ngastronomical\ngastronomically\ngastronomist\ngastronomists\ngastronomy\ngastropod\ngastropods\ngastrula\ngastrulae\ngastrulas\ngastrulation\ngastrulations\ngasts\ngasworks\ngat\ngate\ngatecrasher\ngatecrashers\ngated\ngatefold\ngatefolds\ngateless\ngatelike\ngateman\ngatemen\ngatepost\ngateposts\ngates\ngateway\ngateways\ngather\ngathered\ngatherer\ngatherers\ngathering\ngatherings\ngathers\ngating\ngator\ngats\ngauche\ngauchely\ngaucheness\ngaucher\ngaucherie\ngaucheries\ngauchest\ngaucho\ngauchos\ngaud\ngauderies\ngaudery\ngaudier\ngaudies\ngaudiest\ngaudily\ngaudiness\ngauds\ngaudy\ngauffer\ngauffered\ngauffering\ngauffers\ngauge\ngaugeable\ngaugeably\ngauged\ngauger\ngaugers\ngauges\ngauging\ngault\ngaults\ngaum\ngaumed\ngauming\ngaums\ngaun\ngaunt\ngaunter\ngauntest\ngauntlet\ngauntleted\ngauntleting\ngauntlets\ngauntly\ngauntness\ngauntries\ngauntry\ngaur\ngaurs\ngauss\ngausses\ngauze\ngauzelike\ngauzes\ngauzier\ngauziest\ngauzily\ngauzy\ngavage\ngavages\ngave\ngavel\ngaveled\ngaveling\ngavelled\ngavelling\ngavelock\ngavelocks\ngavels\ngavial\ngavials\ngavot\ngavots\ngavotte\ngavotted\ngavottes\ngavotting\ngawk\ngawked\ngawker\ngawkers\ngawkier\ngawkies\ngawkiest\ngawkily\ngawking\ngawkish\ngawkishly\ngawkishness\ngawks\ngawky\ngawp\ngawps\ngawsie\ngawsy\ngay\ngayal\ngayals\ngayer\ngayest\ngayeties\ngayety\ngayly\ngayness\ngaynesses\ngays\ngaywings\ngazabo\ngazaboes\ngazabos\ngaze\ngazebo\ngazeboes\ngazebos\ngazed\ngazelle\ngazelles\ngazer\ngazers\ngazes\ngazette\ngazetted\ngazetteer\ngazetteers\ngazettes\ngazetting\ngazing\ngazogene\ngazogenes\ngazpacho\ngazpachos\ngear\ngearbox\ngearboxes\ngearcase\ngearcases\ngeared\ngearing\ngearings\ngearless\ngears\ngearshift\ngearshifts\ngearwheel\ngearwheels\ngeck\ngecked\ngecking\ngecko\ngeckoes\ngeckos\ngecks\nged\ngeds\ngee\ngeed\ngeegaw\ngeegaws\ngeeing\ngeek\ngeeks\ngeeky\ngeepound\ngeepounds\ngees\ngeese\ngeest\ngeests\ngeezer\ngeezers\ngeisha\ngeishas\ngel\ngelable\ngelada\ngeladas\ngelant\ngelants\ngelate\ngelated\ngelates\ngelatin\ngelatine\ngelatines\ngelating\ngelatinization\ngelatinizations\ngelatinize\ngelatinized\ngelatinizes\ngelatinizing\ngelatinous\ngelatinously\ngelatinousness\ngelatins\ngelation\ngelations\ngeld\ngelded\ngelder\ngelders\ngelding\ngeldings\ngelds\ngelee\ngelees\ngelid\ngelidities\ngelidity\ngelidly\ngellant\ngellants\ngelled\ngelling\ngels\ngelsemia\ngelt\ngelts\ngem\ngeminal\ngeminate\ngeminated\ngeminates\ngeminating\ngemination\ngeminations\ngemlike\ngemma\ngemmae\ngemmate\ngemmated\ngemmates\ngemmating\ngemmed\ngemmier\ngemmiest\ngemmily\ngemming\ngemmule\ngemmules\ngemmy\ngemologies\ngemology\ngemot\ngemote\ngemotes\ngemots\ngems\ngemsbok\ngemsboks\ngemsbuck\ngemsbucks\ngemstone\ngemstones\ngendarme\ngendarmes\ngender\ngendered\ngendering\ngenders\ngene\ngenealogical\ngenealogically\ngenealogies\ngenealogist\ngenealogists\ngenealogy\ngenera\ngeneral\ngeneralissimo\ngeneralissimos\ngeneralist\ngeneralists\ngeneralities\ngenerality\ngeneralizable\ngeneralization\ngeneralizations\ngeneralize\ngeneralized\ngeneralizer\ngeneralizers\ngeneralizes\ngeneralizing\ngenerally\ngenerals\ngenerate\ngenerated\ngenerates\ngenerating\ngeneration\ngenerational\ngenerations\ngenerative\ngenerator\ngenerators\ngeneric\ngenerically\ngenerics\ngenerosities\ngenerosity\ngenerous\ngenerously\ngenerousness\ngenes\ngeneses\ngenesis\ngenet\ngenetic\ngenetical\ngenetically\ngeneticist\ngeneticists\ngenetics\ngenets\ngenette\ngenettes\ngeneva\ngenevas\ngenial\ngenialities\ngeniality\ngenially\ngenic\ngenie\ngenies\ngenii\ngenip\ngenipap\ngenipaps\ngenips\ngenital\ngenitalia\ngenitals\ngenitival\ngenitivally\ngenitive\ngenitives\ngenitor\ngenitors\ngeniture\ngenitures\ngenius\ngeniuses\ngenoa\ngenoas\ngenocidal\ngenocide\ngenocides\ngenom\ngenome\ngenomes\ngenomic\ngenoms\ngenotype\ngenotypes\ngenotypic\ngenotypical\ngenotypically\ngenre\ngenres\ngenro\ngenros\ngens\ngenseng\ngensengs\ngent\ngenteel\ngenteeler\ngenteelest\ngenteelism\ngenteelisms\ngenteelly\ngenteelness\ngentes\ngentian\ngentians\ngentil\ngentile\ngentiles\ngentilities\ngentility\ngentle\ngentled\ngentleman\ngentlemanly\ngentlemen\ngentleness\ngentler\ngentles\ngentlest\ngentlewoman\ngentlewomen\ngentling\ngently\ngentrice\ngentrices\ngentries\ngentry\ngents\ngenu\ngenua\ngenuflect\ngenuflected\ngenuflecting\ngenuflection\ngenuflections\ngenuflects\ngenuine\ngenuinely\ngenuineness\ngenus\ngenuses\ngeocentric\ngeocentrically\ngeode\ngeodes\ngeodesic\ngeodesics\ngeodesies\ngeodesist\ngeodesists\ngeodesy\ngeodetic\ngeodetical\ngeodic\ngeoduck\ngeoducks\ngeognosies\ngeognosy\ngeographer\ngeographers\ngeographic\ngeographical\ngeographically\ngeographies\ngeography\ngeoid\ngeoidal\ngeoids\ngeologer\ngeologers\ngeologic\ngeological\ngeologically\ngeologies\ngeologist\ngeologists\ngeologize\ngeologized\ngeologizes\ngeologizing\ngeology\ngeomancies\ngeomancy\ngeometer\ngeometers\ngeometric\ngeometrical\ngeometrically\ngeometrician\ngeometricians\ngeometries\ngeometrize\ngeometrized\ngeometrizes\ngeometrizing\ngeometry\ngeophagies\ngeophagy\ngeophone\ngeophones\ngeophysicist\ngeophysicists\ngeophyte\ngeophytes\ngeopolitical\ngeopolitically\ngeopolitician\ngeopoliticians\ngeopolitics\ngeoponic\ngeorgic\ngeorgics\ngeotaxes\ngeotaxis\ngeotropic\ngeotropically\ngeotropism\ngeotropisms\ngerah\ngerahs\ngeranial\ngeranials\ngeraniol\ngeraniols\ngeranium\ngeraniums\ngerardia\ngerardias\ngerbera\ngerberas\ngerbil\ngerbille\ngerbilles\ngerbils\ngerent\ngerents\ngerenuk\ngerenuks\ngeriatric\ngeriatrician\ngeriatricians\ngeriatrics\ngeriatrist\ngeriatrists\ngerm\ngerman\ngermander\ngermanders\ngermane\ngermanely\ngermanic\ngermanium\ngermanization\ngermanizations\ngermanize\ngermanized\ngermanizes\ngermanizing\ngermanophobe\ngermanophobes\ngermanous\ngermans\ngermen\ngermens\ngermfree\ngermicidal\ngermicide\ngermicides\ngermier\ngermiest\ngermina\ngerminal\ngerminally\ngerminate\ngerminated\ngerminates\ngerminating\ngermination\ngerminations\ngerms\ngermy\ngerontic\ngerontologist\ngerontologists\ngerontology\ngerrymander\ngerrymandered\ngerrymandering\ngerrymanders\ngerund\ngerundive\ngerundives\ngerunds\ngesso\ngessoes\ngest\ngestalt\ngestalten\ngestalts\ngestapo\ngestapos\ngestate\ngestated\ngestates\ngestating\ngestation\ngestational\ngestations\ngeste\ngestes\ngestic\ngestical\ngesticulate\ngesticulated\ngesticulates\ngesticulating\ngesticulation\ngesticulations\ngesticulative\ngesticulator\ngesticulators\ngesticulatory\ngests\ngestural\ngesture\ngestured\ngesturer\ngesturers\ngestures\ngesturing\ngesundheit\nget\ngeta\ngetable\ngetas\ngetaway\ngetaways\ngets\ngettable\ngetter\ngettered\ngettering\ngetters\ngetting\ngetup\ngetups\ngeum\ngeums\ngewgaw\ngewgaws\ngey\ngeyser\ngeyserite\ngeyserites\ngeysers\ngharri\ngharries\ngharris\ngharry\nghast\nghastful\nghastlier\nghastliest\nghastliness\nghastly\nghat\nghats\nghaut\nghauts\nghazi\nghazies\nghazis\nghee\nghees\ngherao\ngheraoed\ngheraoes\ngheraoing\ngherkin\ngherkins\nghetto\nghettoed\nghettoes\nghettoing\nghettos\nghi\nghibli\nghiblis\nghillie\nghillies\nghis\nghost\nghosted\nghostier\nghostiest\nghosting\nghostlier\nghostliest\nghostlike\nghostly\nghosts\nghostwrite\nghostwriter\nghostwriters\nghostwrites\nghostwriting\nghostwritten\nghostwrote\nghosty\nghoul\nghoulish\nghoulishly\nghoulishness\nghouls\nghyll\nghylls\ngiant\ngiantess\ngiantesses\ngiantism\ngiantisms\ngiantlike\ngiants\ngiaour\ngiaours\ngib\ngibbed\ngibber\ngibbered\ngibbering\ngibberish\ngibbers\ngibbet\ngibbeted\ngibbeting\ngibbets\ngibbetted\ngibbetting\ngibbing\ngibbon\ngibbons\ngibbose\ngibbous\ngibbously\ngibbousness\ngibbsite\ngibbsites\ngibe\ngibed\ngiber\ngibers\ngibes\ngibing\ngibingly\ngiblet\ngiblets\ngibs\ngid\ngiddap\ngiddied\ngiddier\ngiddies\ngiddiest\ngiddily\ngiddiness\ngiddy\ngiddying\ngids\ngie\ngied\ngieing\ngien\ngies\ngift\ngifted\ngiftedly\ngiftedness\ngifting\ngiftless\ngifts\ngig\ngiga\ngigabit\ngigabits\ngigantic\ngigantically\ngigantism\ngigas\ngigaton\ngigatons\ngigawatt\ngigawatts\ngigged\ngigging\ngiggle\ngiggled\ngiggler\ngigglers\ngiggles\ngigglier\ngiggliest\ngiggling\ngiggly\ngighe\ngiglet\ngiglets\ngiglot\ngiglots\ngigolo\ngigolos\ngigot\ngigots\ngigs\ngigue\ngigues\ngilbert\ngilberts\ngild\ngilded\ngilder\ngilders\ngildhall\ngildhalls\ngilding\ngildings\ngilds\ngill\ngilled\ngiller\ngillers\ngillie\ngillied\ngillies\ngilling\ngillnet\ngillnets\ngillnetted\ngillnetting\ngills\ngilly\ngillying\ngilt\ngilthead\ngiltheads\ngilts\ngimbal\ngimbaled\ngimbaling\ngimballed\ngimballing\ngimbals\ngimcrack\ngimcrackeries\ngimcrackery\ngimcracks\ngimel\ngimels\ngimlet\ngimleted\ngimleting\ngimlets\ngimmal\ngimmals\ngimme\ngimmick\ngimmicked\ngimmicking\ngimmickries\ngimmickry\ngimmicks\ngimmicky\ngimp\ngimped\ngimpier\ngimpiest\ngimping\ngimps\ngimpy\ngin\ngingal\ngingall\ngingalls\ngingals\ngingeley\ngingeleys\ngingeli\ngingelies\ngingelis\ngingellies\ngingelly\ngingely\nginger\ngingerbread\ngingerbreads\ngingered\ngingering\ngingerly\ngingers\ngingery\ngingham\nginghams\ngingili\ngingilis\ngingiva\ngingivae\ngingival\ngingivitis\ngingko\ngingkoes\ngink\nginkgo\nginkgoes\nginks\nginned\nginner\nginners\nginnier\nginniest\nginning\nginnings\nginny\ngins\nginseng\nginsengs\ngip\ngipon\ngipons\ngipped\ngipper\ngippers\ngipping\ngips\ngipsied\ngipsies\ngipsy\ngipsying\ngiraffe\ngiraffes\ngirasol\ngirasole\ngirasoles\ngirasols\ngird\ngirded\ngirder\ngirders\ngirding\ngirdle\ngirdled\ngirdler\ngirdlers\ngirdles\ngirdling\ngirds\ngirl\ngirlfriend\ngirlfriends\ngirlhood\ngirlhoods\ngirlie\ngirlies\ngirlish\ngirlishly\ngirlishness\ngirls\ngirly\ngirn\ngirned\ngirning\ngirns\ngiro\ngiron\ngirons\ngiros\ngirosol\ngirosols\ngirsh\ngirshes\ngirt\ngirted\ngirth\ngirthed\ngirthing\ngirths\ngirting\ngirts\ngisarme\ngisarmes\ngismo\ngismos\ngist\ngists\ngit\ngitano\ngitanos\ngittern\ngitterns\ngive\ngiveable\ngiveaway\ngiveaways\ngiven\ngivens\ngiver\ngivers\ngives\ngiving\ngizmo\ngizmos\ngizzard\ngizzards\ngjetost\ngjetosts\nglabella\nglabellae\nglabrate\nglabrous\nglace\nglaceed\nglaceing\nglaces\nglacial\nglacially\nglaciate\nglaciated\nglaciates\nglaciating\nglaciation\nglaciations\nglacier\nglaciered\nglaciers\nglaciological\nglaciologist\nglaciologists\nglaciology\nglacis\nglacises\nglad\ngladded\ngladden\ngladdened\ngladdening\ngladdens\ngladder\ngladdest\ngladding\nglade\nglades\ngladiate\ngladiator\ngladiatorial\ngladiators\ngladier\ngladiest\ngladiola\ngladiolas\ngladioli\ngladiolus\ngladioluses\ngladlier\ngladliest\ngladly\ngladness\ngladnesses\nglads\ngladsome\ngladsomely\ngladsomeness\ngladsomer\ngladsomest\nglady\nglaiket\nglaikit\nglair\nglaire\nglaired\nglaires\nglairier\nglairiest\nglairing\nglairs\nglairy\nglaive\nglaived\nglaives\nglamor\nglamorization\nglamorizations\nglamorize\nglamorized\nglamorizes\nglamorizing\nglamorless\nglamorous\nglamorously\nglamorousness\nglamors\nglamour\nglamoured\nglamouring\nglamourization\nglamourizations\nglamourize\nglamourized\nglamourizes\nglamourizing\nglamourless\nglamourous\nglamourously\nglamourousness\nglamours\nglance\nglanced\nglances\nglancing\nglancingly\ngland\nglanders\nglandes\nglandless\nglands\nglandular\nglandularly\nglandule\nglandules\nglans\nglare\nglared\nglares\nglarier\nglariest\nglaring\nglaringly\nglaringness\nglary\nglass\nglassblower\nglassblowers\nglassblowing\nglassed\nglasses\nglassful\nglassfuls\nglasshouse\nglasshouses\nglassie\nglassier\nglassies\nglassiest\nglassily\nglassine\nglassines\nglassiness\nglassing\nglassless\nglassman\nglassmen\nglassware\nglasswares\nglassy\nglaucoma\nglaucomas\nglaucous\nglaze\nglazed\nglazer\nglazers\nglazes\nglazier\nglazieries\nglaziers\nglaziery\nglaziest\nglazing\nglazings\nglazy\ngleam\ngleamed\ngleamier\ngleamiest\ngleaming\ngleams\ngleamy\nglean\ngleanable\ngleaned\ngleaner\ngleaners\ngleaning\ngleanings\ngleans\ngleba\nglebae\nglebe\nglebes\ngled\nglede\ngledes\ngleds\nglee\ngleed\ngleeds\ngleeful\ngleefully\ngleefulness\ngleek\ngleeked\ngleeking\ngleeks\ngleeman\ngleemen\nglees\ngleesome\ngleet\ngleeted\ngleetier\ngleetiest\ngleeting\ngleets\ngleety\ngleg\nglegly\nglegness\nglegnesses\nglen\nglenlike\nglenoid\nglens\ngley\ngleys\nglia\ngliadin\ngliadine\ngliadines\ngliadins\nglial\nglias\nglib\nglibber\nglibbest\nglibly\nglibness\nglibnesses\nglide\nglided\nglider\ngliders\nglides\ngliding\ngliff\ngliffs\nglim\nglime\nglimed\nglimes\ngliming\nglimmer\nglimmered\nglimmering\nglimmers\nglimpse\nglimpsed\nglimpser\nglimpsers\nglimpses\nglimpsing\nglims\nglint\nglinted\nglinting\nglints\nglioma\ngliomas\ngliomata\nglissade\nglissaded\nglissader\nglissaders\nglissades\nglissading\nglisten\nglistened\nglistening\nglistens\nglister\nglistered\nglistering\nglisters\nglitch\nglitches\nglitter\nglittered\nglittering\nglitteringly\nglitters\nglittery\nglitz\ngloam\ngloaming\ngloamings\ngloams\ngloat\ngloated\ngloater\ngloaters\ngloating\ngloatingly\ngloats\nglob\nglobal\nglobally\nglobate\nglobated\nglobe\nglobed\nglobes\nglobin\nglobing\nglobins\ngloboid\ngloboids\nglobose\nglobous\nglobs\nglobular\nglobule\nglobules\nglobulin\nglobulins\nglochid\nglochids\nglockenspiel\nglockenspiels\nglogg\ngloggs\nglom\nglomera\nglommed\nglomming\ngloms\nglomus\ngloom\ngloomed\ngloomful\ngloomier\ngloomiest\ngloomily\ngloominess\nglooming\ngloomings\nglooms\ngloomy\nglop\nglops\ngloria\nglorias\ngloried\nglories\nglorification\nglorifications\nglorified\nglorifier\nglorifiers\nglorifies\nglorify\nglorifying\ngloriole\nglorioles\nglorious\ngloriously\ngloriousness\nglory\nglorying\ngloss\nglossa\nglossae\nglossal\nglossaries\nglossarist\nglossarists\nglossary\nglossas\nglossed\nglosseme\nglossemes\nglosser\nglossers\nglosses\nglossier\nglossies\nglossiest\nglossily\nglossina\nglossinas\nglossiness\nglossing\nglossy\nglost\nglosts\nglottal\nglottic\nglottides\nglottis\nglottises\nglout\nglouted\nglouting\nglouts\nglove\ngloved\nglover\nglovers\ngloves\ngloving\nglow\nglowed\nglower\nglowered\nglowering\nglowers\nglowflies\nglowfly\nglowing\nglowingly\nglows\nglowworm\nglowworms\ngloxinia\ngloxinias\ngloze\nglozed\nglozes\nglozing\nglucagon\nglucagons\nglucinic\nglucinum\nglucinums\nglucose\nglucoses\nglucosic\nglue\nglued\nglueing\ngluelike\ngluer\ngluers\nglues\ngluey\nglug\nglugs\ngluier\ngluiest\ngluily\ngluing\nglum\nglume\nglumes\nglumly\nglummer\nglummest\nglumness\nglumnesses\nglumpier\nglumpiest\nglumpily\nglumpy\nglunch\nglunched\nglunches\nglunching\ngluon\nglut\ngluteal\nglutei\nglutelin\nglutelins\ngluten\nglutenous\nglutens\ngluteus\nglutinous\nglutinously\ngluts\nglutted\nglutting\nglutton\ngluttonies\ngluttonous\ngluttonously\ngluttonousness\ngluttons\ngluttony\nglycan\nglycans\nglyceric\nglyceride\nglycerides\nglycerin\nglycerinate\nglycerinated\nglycerinates\nglycerinating\nglycerine\nglycerines\nglycerins\nglycerol\nglycerols\nglyceryl\nglyceryls\nglycin\nglycine\nglycines\nglycins\nglycogen\nglycogens\nglycol\nglycolic\nglycols\nglyconic\nglyconics\nglycosyl\nglycosyls\nglycyl\nglycyls\nglyph\nglyphic\nglyphs\nglyptic\nglyptics\ngnar\ngnarl\ngnarled\ngnarlier\ngnarliest\ngnarling\ngnarls\ngnarly\ngnarr\ngnarred\ngnarring\ngnarrs\ngnars\ngnash\ngnashed\ngnashes\ngnashing\ngnat\ngnathal\ngnathic\ngnathion\ngnathions\ngnathite\ngnathites\ngnatlike\ngnats\ngnattier\ngnattiest\ngnatty\ngnaw\ngnawable\ngnawed\ngnawer\ngnawers\ngnawing\ngnawings\ngnawn\ngnaws\ngneiss\ngneisses\ngneissic\ngnocchi\ngnome\ngnomes\ngnomic\ngnomical\ngnomish\ngnomist\ngnomists\ngnomon\ngnomonic\ngnomons\ngnoses\ngnosis\ngnostic\ngnosticism\ngnu\ngnus\ngo\ngoa\ngoad\ngoaded\ngoading\ngoadlike\ngoads\ngoal\ngoaled\ngoalie\ngoalies\ngoaling\ngoalkeeper\ngoalkeepers\ngoalless\ngoalpost\ngoalposts\ngoals\ngoas\ngoat\ngoatee\ngoateed\ngoatees\ngoatfish\ngoatfishes\ngoatherd\ngoatherds\ngoatish\ngoatlike\ngoats\ngoatskin\ngoatskins\ngob\ngoban\ngobang\ngobangs\ngobans\ngobbed\ngobbet\ngobbets\ngobbing\ngobble\ngobbled\ngobbledegook\ngobbledygook\ngobbler\ngobblers\ngobbles\ngobbling\ngobies\ngobioid\ngobioids\ngoblet\ngoblets\ngoblin\ngoblins\ngobo\ngoboes\ngobonee\ngobony\ngobos\ngobs\ngoby\ngod\ngodchild\ngodchildren\ngoddam\ngoddammed\ngoddamming\ngoddamn\ngoddamned\ngoddamning\ngoddamns\ngoddams\ngoddaughter\ngoddaughters\ngodded\ngoddess\ngoddesses\ngodding\ngodfather\ngodfathered\ngodfathering\ngodfathers\ngodhead\ngodheads\ngodhood\ngodhoods\ngodless\ngodlessness\ngodlier\ngodliest\ngodlike\ngodlikeness\ngodlily\ngodliness\ngodling\ngodlings\ngodly\ngodmother\ngodmothers\ngodown\ngodowns\ngodparent\ngodparents\ngodroon\ngodroons\ngods\ngodsend\ngodsends\ngodship\ngodships\ngodson\ngodsons\ngodwit\ngodwits\ngoer\ngoers\ngoes\ngoethite\ngoethites\ngofer\ngoffer\ngoffered\ngoffering\ngoffers\ngoggle\ngoggled\ngoggler\ngogglers\ngoggles\ngogglier\ngoggliest\ngoggling\ngoggly\ngoglet\ngoglets\ngogo\ngogos\ngoing\ngoings\ngoiter\ngoiters\ngoitre\ngoitres\ngoitrous\ngolconda\ngolcondas\ngold\ngoldarn\ngoldarns\ngoldbug\ngoldbugs\ngolden\ngoldener\ngoldenest\ngoldenly\ngoldenness\ngolder\ngoldest\ngoldeye\ngoldeyes\ngoldfield\ngoldfields\ngoldfinch\ngoldfinches\ngoldfish\ngoldfishes\ngolds\ngoldsmith\ngoldsmiths\ngoldurn\ngoldurns\ngolem\ngolems\ngolf\ngolfed\ngolfer\ngolfers\ngolfing\ngolfings\ngolfs\ngolgotha\ngolgothas\ngoliard\ngoliards\ngolliwog\ngolliwogs\ngolly\ngolosh\ngoloshes\ngombo\ngombos\ngombroon\ngombroons\ngomeral\ngomerals\ngomerel\ngomerels\ngomeril\ngomerils\ngomuti\ngomutis\ngonad\ngonadal\ngonadial\ngonadic\ngonads\ngondola\ngondolas\ngondolier\ngondoliers\ngone\ngonef\ngoneness\ngonenesses\ngoner\ngoners\ngonfalon\ngonfalons\ngonfanon\ngonfanons\ngong\ngonged\ngonging\ngonglike\ngongs\ngonia\ngonidia\ngonidial\ngonidic\ngonidium\ngonif\ngonifs\ngonion\ngonium\ngonocyte\ngonocytes\ngonof\ngonofs\ngonoph\ngonophs\ngonopore\ngonopores\ngonorrhea\ngonorrheal\ngonzo\ngoo\ngoober\ngoobers\ngood\ngoodby\ngoodbye\ngoodbyes\ngoodbys\ngoodies\ngoodish\ngoodlier\ngoodliest\ngoodly\ngoodman\ngoodmen\ngoodness\ngoodnesses\ngoods\ngoodwife\ngoodwill\ngoodwills\ngoodwives\ngoody\ngooey\ngoof\ngoofball\ngoofballs\ngoofed\ngoofier\ngoofiest\ngoofily\ngoofiness\ngoofing\ngoofs\ngoofy\ngooglies\ngoogly\ngoogol\ngoogols\ngooier\ngooiest\ngook\ngooks\ngooky\ngoon\ngooney\ngooneys\ngoonie\ngoonies\ngoons\ngoony\ngoop\ngoops\ngoopy\ngooral\ngoorals\ngoos\ngoose\ngooseberries\ngooseberry\ngoosed\ngooseflesh\ngooseneck\ngoosenecked\ngoosenecks\ngooses\ngoosey\ngoosier\ngoosiest\ngoosing\ngoosy\ngopher\ngophers\ngor\ngoral\ngorals\ngorbellies\ngorbelly\ngorblimy\ngorcock\ngorcocks\ngore\ngored\ngores\ngorge\ngorged\ngorgedly\ngorgeous\ngorgeously\ngorgeousness\ngorger\ngorgerin\ngorgerins\ngorgers\ngorges\ngorget\ngorgeted\ngorgets\ngorging\ngorgon\ngorgons\ngorhen\ngorhens\ngorier\ngoriest\ngorilla\ngorillas\ngorily\ngoriness\ngorinesses\ngoring\ngormand\ngormandize\ngormandized\ngormandizer\ngormandizers\ngormandizes\ngormandizing\ngormands\ngorp\ngorps\ngorse\ngorses\ngorsier\ngorsiest\ngorsy\ngory\ngosh\ngoshawk\ngoshawks\ngosling\ngoslings\ngospel\ngospeler\ngospelers\ngospeller\ngospellers\ngospels\ngosport\ngosports\ngossamer\ngossamers\ngossamery\ngossan\ngossans\ngossip\ngossiped\ngossiper\ngossipers\ngossiping\ngossipped\ngossipping\ngossipries\ngossipry\ngossips\ngossipy\ngossoon\ngossoons\ngossypol\ngossypols\ngot\ngothic\ngothically\ngothicize\ngothicized\ngothicizes\ngothicizing\ngothics\ngothite\ngothites\ngotten\ngouache\ngouaches\ngouge\ngouged\ngouger\ngougers\ngouges\ngouging\ngoulash\ngoulashes\ngourami\ngouramis\ngourd\ngourde\ngourdes\ngourds\ngourmand\ngourmandism\ngourmands\ngourmet\ngourmets\ngout\ngoutier\ngoutiest\ngoutily\ngouts\ngouty\ngovern\ngovernable\ngovernance\ngovernances\ngoverned\ngoverness\ngovernesses\ngoverning\ngovernment\ngovernmental\ngovernmentally\ngovernments\ngovernor\ngovernorate\ngovernorates\ngovernors\ngovernorship\ngovernorships\ngoverns\ngowan\ngowaned\ngowans\ngowany\ngowd\ngowds\ngowk\ngowks\ngown\ngowned\ngowning\ngowns\ngownsman\ngownsmen\ngox\ngoxes\ngoy\ngoyim\ngoyish\ngoys\ngraal\ngraals\ngrab\ngrabbed\ngrabber\ngrabbers\ngrabbier\ngrabbiest\ngrabbing\ngrabble\ngrabbled\ngrabbler\ngrabblers\ngrabbles\ngrabbling\ngrabby\ngraben\ngrabens\ngrabs\ngrace\ngraced\ngraceful\ngracefuller\ngracefullest\ngracefully\ngracefulness\ngraceless\ngracelessly\ngracelessness\ngraces\ngracile\ngracileness\ngraciles\ngracilis\ngracility\ngracing\ngracioso\ngraciosos\ngracious\ngraciously\ngraciousness\ngrackle\ngrackles\ngrad\ngradable\ngradate\ngradated\ngradates\ngradating\ngradation\ngradational\ngradationally\ngradations\ngrade\ngraded\ngrader\ngraders\ngrades\ngradient\ngradients\ngradin\ngradine\ngradines\ngrading\ngradins\ngrads\ngradual\ngradualism\ngradualist\ngradualists\ngradually\ngradualness\ngraduals\ngraduand\ngraduands\ngraduate\ngraduated\ngraduates\ngraduating\ngraduation\ngraduations\ngradus\ngraduses\ngraecize\ngraecized\ngraecizes\ngraecizing\ngraffiti\ngraffito\ngraft\ngraftage\ngraftages\ngrafted\ngrafter\ngrafters\ngrafting\ngrafts\ngraham\ngrail\ngrails\ngrain\ngrained\ngrainer\ngrainers\ngrainier\ngrainiest\ngraininess\ngraining\ngrains\ngrainy\ngram\ngrama\ngramaries\ngramary\ngramarye\ngramaryes\ngramas\ngramercies\ngramercy\ngrammar\ngrammarian\ngrammarians\ngrammars\ngrammatical\ngrammatically\ngrammaticalness\ngramme\ngrammes\ngramp\ngramps\ngrampus\ngrampuses\ngrams\ngran\ngrana\ngranaries\ngranary\ngrand\ngrandad\ngrandads\ngrandam\ngrandame\ngrandames\ngrandams\ngrandaunt\ngrandaunts\ngrandchild\ngrandchildren\ngranddad\ngranddads\ngranddaughter\ngranddaughters\ngrandee\ngrandees\ngrander\ngrandest\ngrandeur\ngrandeurs\ngrandfather\ngrandfatherly\ngrandfathers\ngrandiloquence\ngrandiloquent\ngrandiloquently\ngrandiose\ngrandiosely\ngrandiosities\ngrandiosity\ngrandly\ngrandma\ngrandmas\ngrandmaster\ngrandmasters\ngrandmother\ngrandmotherly\ngrandmothers\ngrandnephew\ngrandnephews\ngrandness\ngrandniece\ngrandnieces\ngrandpa\ngrandparent\ngrandparents\ngrandpas\ngrands\ngrandsir\ngrandsirs\ngrandson\ngrandsons\ngrandstand\ngrandstanded\ngrandstander\ngrandstanders\ngrandstanding\ngrandstands\ngranduncle\ngranduncles\ngrange\ngranger\ngrangerism\ngrangers\ngranges\ngranite\ngranitelike\ngranites\ngranitic\ngrannie\ngrannies\ngranny\ngrans\ngrant\ngrantable\ngranted\ngrantee\ngrantees\ngranter\ngranters\ngranting\ngrantor\ngrantors\ngrants\ngrantsman\ngrantsmanship\ngrantsmen\ngranular\ngranularity\ngranulate\ngranulated\ngranulates\ngranulating\ngranulation\ngranulations\ngranulative\ngranulator\ngranulators\ngranule\ngranules\ngranulite\ngranulites\ngranulitic\ngranulocyte\ngranulocytes\ngranulocytic\ngranuloma\ngranulomas\ngranum\ngrape\ngrapefruit\ngrapefruits\ngraperies\ngrapery\ngrapes\ngrapevine\ngrapevines\ngraph\ngraphed\ngrapheme\ngraphemes\ngraphemic\ngraphemically\ngraphemics\ngraphic\ngraphical\ngraphically\ngraphicness\ngraphics\ngraphing\ngraphite\ngraphites\ngraphitic\ngraphitization\ngraphitizations\ngraphitize\ngraphitized\ngraphitizes\ngraphitizing\ngraphological\ngraphologist\ngraphologists\ngraphology\ngraphs\ngrapier\ngrapiest\ngraplin\ngrapline\ngraplines\ngraplins\ngrapnel\ngrapnels\ngrappa\ngrappas\ngrapple\ngrappled\ngrappler\ngrapplers\ngrapples\ngrappling\ngrapy\ngrasp\ngraspable\ngrasped\ngrasper\ngraspers\ngrasping\ngraspingly\ngraspingness\ngrasps\ngrass\ngrassed\ngrasses\ngrasshopper\ngrasshoppers\ngrassier\ngrassiest\ngrassily\ngrassing\ngrassland\ngrasslands\ngrasslike\ngrassy\ngrat\ngrate\ngrated\ngrateful\ngratefuller\ngratefullest\ngratefully\ngratefulness\ngrater\ngraters\ngrates\ngratification\ngratifications\ngratified\ngratifies\ngratify\ngratifying\ngratifyingly\ngratin\ngrating\ngratings\ngratins\ngratis\ngratitude\ngratuities\ngratuitous\ngratuitously\ngratuitousness\ngratuity\ngratulating\ngratulation\ngratulations\ngraupel\ngraupels\ngravamen\ngravamens\ngravamina\ngrave\ngraved\ngravel\ngraveled\ngraveling\ngravelled\ngravelling\ngravelly\ngravels\ngravely\ngraven\ngraveness\ngraver\ngravers\ngraves\ngravest\ngravestone\ngravestones\ngraveyard\ngraveyards\ngravid\ngravida\ngravidae\ngravidas\ngravidities\ngravidity\ngravidly\ngravies\ngraving\ngravitate\ngravitated\ngravitates\ngravitating\ngravitation\ngravitational\ngravitationally\ngravitations\ngravities\ngraviton\ngravitons\ngravity\ngravure\ngravures\ngravy\ngray\ngrayback\ngraybacks\ngrayed\ngrayer\ngrayest\ngrayfish\ngrayfishes\ngraying\ngrayish\ngraylag\ngraylags\ngrayling\ngraylings\ngrayly\ngrayness\ngraynesses\ngrayout\ngrayouts\ngrays\ngrazable\ngraze\ngrazed\ngrazer\ngrazers\ngrazes\ngrazier\ngraziers\ngrazing\ngrazingly\ngrazings\ngrazioso\ngrease\ngreased\ngreaseless\ngreasepaint\ngreaser\ngreasers\ngreases\ngreasier\ngreasiest\ngreasily\ngreasiness\ngreasing\ngreasy\ngreat\ngreatcoat\ngreatcoats\ngreaten\ngreatened\ngreatening\ngreatens\ngreater\ngreatest\ngreatly\ngreatness\ngreats\ngreave\ngreaved\ngreaves\ngrebe\ngrebes\ngrecize\ngrecized\ngrecizes\ngrecizing\ngree\ngreed\ngreedier\ngreediest\ngreedily\ngreediness\ngreeds\ngreedy\ngreegree\ngreegrees\ngreeing\ngreek\ngreen\ngreenback\ngreenbacks\ngreenbug\ngreenbugs\ngreened\ngreener\ngreeneries\ngreenery\ngreenest\ngreenflies\ngreenfly\ngreengage\ngreengages\ngreenhorn\ngreenhorns\ngreenhouse\ngreenhouses\ngreenier\ngreeniest\ngreening\ngreenings\ngreenish\ngreenishness\ngreenlet\ngreenlets\ngreenling\ngreenlings\ngreenly\ngreenness\ngreenroom\ngreenrooms\ngreens\ngreensick\ngreensickness\ngreensward\ngreenswards\ngreenth\ngreenths\ngreenwood\ngreenwoods\ngreeny\ngrees\ngreet\ngreeted\ngreeter\ngreeters\ngreeting\ngreetings\ngreets\ngregarious\ngregariously\ngregariousness\ngrego\ngregos\ngreige\ngreiges\ngreisen\ngreisens\ngremial\ngremials\ngremlin\ngremlins\ngremmie\ngremmies\ngremmy\ngrenade\ngrenades\ngrenadier\ngrenadiers\ngrenadine\ngrenadines\ngrew\ngrewsome\ngrewsomer\ngrewsomest\ngrey\ngreyed\ngreyer\ngreyest\ngreyhen\ngreyhens\ngreyhound\ngreyhounds\ngreying\ngreyish\ngreylag\ngreylags\ngreyly\ngreyness\ngreynesses\ngreys\ngribble\ngribbles\ngrid\ngriddle\ngriddled\ngriddles\ngriddling\ngride\ngrided\ngrides\ngriding\ngridiron\ngridirons\ngrids\ngrief\ngriefs\ngrievance\ngrievances\ngrievant\ngrievants\ngrieve\ngrieved\ngriever\ngrievers\ngrieves\ngrieving\ngrievous\ngrievously\ngrievousness\ngriff\ngriffe\ngriffes\ngriffin\ngriffins\ngriffon\ngriffons\ngriffs\ngrift\ngrifted\ngrifter\ngrifters\ngrifting\ngrifts\ngrig\ngrigri\ngrigris\ngrigs\ngrill\ngrillade\ngrillades\ngrillage\ngrillages\ngrille\ngrilled\ngriller\ngrillers\ngrilles\ngrilling\ngrillroom\ngrillrooms\ngrills\ngrilse\ngrilses\ngrim\ngrimace\ngrimaced\ngrimacer\ngrimacers\ngrimaces\ngrimacing\ngrime\ngrimed\ngrimes\ngrimier\ngrimiest\ngrimily\ngriminess\ngriming\ngrimly\ngrimmer\ngrimmest\ngrimness\ngrimnesses\ngrimy\ngrin\ngrind\ngrinded\ngrinder\ngrinderies\ngrinders\ngrindery\ngrinding\ngrindingly\ngrinds\ngrindstone\ngrindstones\ngringo\ngringos\ngrinned\ngrinner\ngrinners\ngrinning\ngrinningly\ngrins\ngriot\ngrip\ngripe\ngriped\ngriper\ngripers\ngripes\ngripey\ngripier\ngripiest\ngriping\ngrippe\ngripped\ngripper\ngrippers\ngrippes\ngrippier\ngrippiest\ngripping\ngrippingly\ngripple\ngrippy\ngrips\ngripsack\ngripsacks\ngript\ngripy\ngriseous\ngrisette\ngrisettes\ngriskin\ngriskins\ngrislier\ngrisliest\ngrisly\ngrison\ngrisons\ngrist\ngristle\ngristles\ngristlier\ngristliest\ngristly\ngristmill\ngristmills\ngrists\ngrit\ngrith\ngriths\ngrits\ngritted\ngrittier\ngrittiest\ngrittily\ngrittiness\ngritting\ngritty\ngrivet\ngrivets\ngrizzle\ngrizzled\ngrizzler\ngrizzlers\ngrizzles\ngrizzlier\ngrizzlies\ngrizzliest\ngrizzling\ngrizzly\ngroan\ngroaned\ngroaner\ngroaners\ngroaning\ngroans\ngroat\ngroats\ngrocer\ngroceries\ngrocers\ngrocery\ngrog\ngroggeries\ngroggery\ngroggier\ngroggiest\ngroggily\ngrogginess\ngroggy\ngrogram\ngrograms\ngrogs\ngrogshop\ngrogshops\ngroin\ngroined\ngroining\ngroins\ngrommet\ngrommets\ngromwell\ngromwells\ngroom\ngroomed\ngroomer\ngroomers\ngrooming\ngrooms\ngroomsman\ngroomsmen\ngroove\ngrooved\ngroover\ngroovers\ngrooves\ngroovier\ngrooviest\ngrooving\ngroovy\ngrope\ngroped\ngroper\ngropers\ngropes\ngroping\ngrosbeak\ngrosbeaks\ngroschen\ngrosgrain\ngrosgrains\ngross\ngrossed\ngrosser\ngrossers\ngrosses\ngrossest\ngrossing\ngrossly\ngrossness\ngrosz\ngroszy\ngrot\ngrotesque\ngrotesquely\ngrotesqueness\ngrotesquerie\ngrotesqueries\ngrotesquery\ngrotesques\ngrots\ngrotto\ngrottoes\ngrottos\ngrouch\ngrouched\ngrouches\ngrouchier\ngrouchiest\ngrouchily\ngrouchiness\ngrouching\ngrouchy\nground\ngrounded\ngrounder\ngrounders\ngroundhog\ngroundhogs\ngrounding\ngroundings\ngroundless\ngroundlessly\ngroundlessness\ngrounds\ngroundspeed\ngroundspeeds\ngroundwater\ngroundwork\ngroundworks\ngroup\ngrouped\ngrouper\ngroupers\ngroupie\ngroupies\ngrouping\ngroupings\ngroupoid\ngroupoids\ngroups\ngrouse\ngroused\ngrouser\ngrousers\ngrouses\ngrousing\ngrout\ngrouted\ngrouter\ngrouters\ngroutier\ngroutiest\ngrouting\ngrouts\ngrouty\ngrove\ngroved\ngrovel\ngroveled\ngroveler\ngrovelers\ngroveling\ngrovelingly\ngrovelled\ngrovelling\ngrovels\ngroves\ngrow\ngrowable\ngrower\ngrowers\ngrowing\ngrowl\ngrowled\ngrowler\ngrowlers\ngrowlier\ngrowliest\ngrowling\ngrowlingly\ngrowls\ngrowly\ngrown\ngrownup\ngrownups\ngrows\ngrowth\ngrowths\ngroyne\ngroynes\ngrub\ngrubbed\ngrubber\ngrubbers\ngrubbier\ngrubbiest\ngrubbily\ngrubbiness\ngrubbing\ngrubby\ngrubs\ngrubstake\ngrubstaked\ngrubstaker\ngrubstakers\ngrubstakes\ngrubstaking\ngrubworm\ngrubworms\ngrudge\ngrudged\ngrudger\ngrudgers\ngrudges\ngrudging\ngrudgingly\ngrue\ngruel\ngrueled\ngrueler\ngruelers\ngrueling\ngruelings\ngruelled\ngrueller\ngruellers\ngruelling\ngruellings\ngruels\ngrues\ngruesome\ngruesomely\ngruesomeness\ngruesomer\ngruesomest\ngruff\ngruffed\ngruffer\ngruffest\ngruffier\ngruffiest\ngruffily\ngruffing\ngruffish\ngruffly\ngruffness\ngruffs\ngruffy\ngrugru\ngrugrus\ngrum\ngrumble\ngrumbled\ngrumbler\ngrumblers\ngrumbles\ngrumbling\ngrumblingly\ngrumbly\ngrume\ngrumes\ngrummer\ngrummest\ngrummet\ngrummets\ngrumose\ngrumous\ngrump\ngrumped\ngrumphie\ngrumphies\ngrumphy\ngrumpier\ngrumpiest\ngrumpily\ngrumpiness\ngrumping\ngrumpish\ngrumps\ngrumpy\ngrunion\ngrunions\ngrunt\ngrunted\ngrunter\ngrunters\ngrunting\ngruntle\ngruntled\ngruntles\ngruntling\ngrunts\ngrushie\ngrutch\ngrutched\ngrutches\ngrutching\ngrutten\ngryphon\ngryphons\nguacharo\nguacharoes\nguacharos\nguaco\nguacos\nguaiac\nguaiacol\nguaiacols\nguaiacs\nguaiacum\nguaiacums\nguaiocum\nguaiocums\nguan\nguanaco\nguanacos\nguanase\nguanases\nguanidin\nguanidins\nguanin\nguanine\nguanines\nguanins\nguano\nguanos\nguans\nguar\nguarani\nguaranies\nguaranis\nguarantee\nguaranteed\nguaranteeing\nguarantees\nguarantied\nguaranties\nguarantor\nguarantors\nguaranty\nguarantying\nguard\nguardant\nguardants\nguarded\nguardedly\nguardedness\nguarder\nguarders\nguardhouse\nguardhouses\nguardian\nguardians\nguardianship\nguarding\nguardrail\nguardrails\nguardroom\nguardrooms\nguards\nguardsman\nguardsmen\nguars\nguava\nguavas\nguayule\nguayules\ngubernatorial\nguck\ngucks\ngude\ngudes\ngudgeon\ngudgeoned\ngudgeoning\ngudgeons\nguenon\nguenons\nguerdon\nguerdoned\nguerdoning\nguerdons\nguerilla\nguerillas\nguernsey\nguernseys\nguerrilla\nguerrillas\nguess\nguessed\nguesser\nguessers\nguesses\nguessing\nguesstimate\nguesstimated\nguesstimates\nguesstimating\nguesswork\nguest\nguested\nguesting\nguests\nguff\nguffaw\nguffawed\nguffawing\nguffaws\nguffs\nguggle\nguggled\nguggles\nguggling\nguglet\nguglets\nguid\nguidable\nguidance\nguidances\nguide\nguidebook\nguidebooks\nguided\nguideline\nguidelines\nguidepost\nguideposts\nguider\nguiders\nguides\nguiding\nguidon\nguidons\nguids\nguild\nguilder\nguilders\nguilds\nguildship\nguildsman\nguildsmen\nguile\nguiled\nguileful\nguilefully\nguilefulness\nguileless\nguilelessly\nguilelessness\nguiles\nguiling\nguillotine\nguillotined\nguillotines\nguillotining\nguilt\nguiltier\nguiltiest\nguiltily\nguiltiness\nguiltless\nguiltlessly\nguiltlessness\nguilts\nguilty\nguimpe\nguimpes\nguinea\nguineas\nguipure\nguipures\nguiro\nguiros\nguisard\nguisards\nguise\nguised\nguises\nguising\nguitar\nguitarist\nguitarists\nguitars\ngul\ngulag\ngular\ngulch\ngulches\ngulden\nguldens\ngules\ngulf\ngulfed\ngulfier\ngulfiest\ngulfing\ngulflike\ngulfs\ngulfweed\ngulfweeds\ngulfy\ngull\ngullable\ngullably\ngulled\ngullet\ngullets\ngulley\ngulleys\ngullibilities\ngullibility\ngullible\ngullibly\ngullied\ngullies\ngulling\ngulls\ngully\ngullying\ngulosities\ngulosity\ngulp\ngulped\ngulper\ngulpers\ngulpier\ngulpiest\ngulping\ngulpingly\ngulps\ngulpy\nguls\ngum\ngumbo\ngumboil\ngumboils\ngumbos\ngumbotil\ngumbotils\ngumdrop\ngumdrops\ngumless\ngumlike\ngumma\ngummas\ngummata\ngummed\ngummer\ngummers\ngummier\ngummiest\ngumming\ngummite\ngummites\ngummose\ngummoses\ngummosis\ngummous\ngummy\ngumption\ngumptions\ngums\ngumshoe\ngumshoed\ngumshoeing\ngumshoes\ngumtree\ngumtrees\ngumweed\ngumweeds\ngumwood\ngumwoods\ngun\ngunboat\ngunboats\nguncotton\ngundog\ngundogs\ngunfight\ngunfighter\ngunfighters\ngunfighting\ngunfights\ngunfire\ngunfires\ngunflint\ngunflints\ngunfought\ngunk\ngunks\ngunky\ngunless\ngunlock\ngunlocks\ngunman\ngunmen\ngunmetal\ngunmetals\ngunned\ngunnel\ngunnels\ngunnen\ngunner\ngunneries\ngunners\ngunnery\ngunnies\ngunning\ngunnings\ngunny\ngunnysack\ngunnysacks\ngunpaper\ngunpapers\ngunplay\ngunplays\ngunpoint\ngunpoints\ngunpowder\ngunpowders\ngunroom\ngunrooms\ngunrunner\ngunrunners\ngunrunning\nguns\ngunsel\ngunsels\ngunship\ngunships\ngunshot\ngunshots\ngunslinger\ngunslingers\ngunsmith\ngunsmithing\ngunsmiths\ngunstock\ngunstocks\ngunwale\ngunwales\nguppies\nguppy\ngurge\ngurged\ngurges\ngurging\ngurgle\ngurgled\ngurgles\ngurglet\ngurglets\ngurgling\ngurnard\ngurnards\ngurnet\ngurnets\ngurney\ngurneys\ngurries\ngurry\ngursh\ngurshes\nguru\ngurus\nguruship\nguruships\ngush\ngushed\ngusher\ngushers\ngushes\ngushier\ngushiest\ngushily\ngushiness\ngushing\ngushy\ngusset\ngusseted\ngusseting\ngussets\ngussy\ngust\ngustable\ngustables\ngustation\ngustations\ngustatory\ngusted\ngustier\ngustiest\ngustily\ngustiness\ngusting\ngustless\ngusto\ngustoes\ngusts\ngusty\ngut\ngutless\ngutlessness\ngutlike\nguts\ngutsier\ngutsiest\ngutsiness\ngutsy\ngutta\nguttae\nguttate\nguttated\ngutted\ngutter\nguttered\nguttering\ngutters\nguttersnipe\nguttersnipes\nguttersnipish\nguttery\nguttier\nguttiest\ngutting\nguttle\nguttled\nguttler\nguttlers\nguttles\nguttling\nguttural\ngutturalism\ngutturalisms\ngutturals\ngutty\nguv\nguvs\nguy\nguyed\nguying\nguyot\nguyots\nguys\nguzzle\nguzzled\nguzzler\nguzzlers\nguzzles\nguzzling\ngweduc\ngweduck\ngweducks\ngweducs\ngybe\ngybed\ngybes\ngybing\ngym\ngymkhana\ngymkhanas\ngymnasia\ngymnasium\ngymnasiums\ngymnast\ngymnastic\ngymnastically\ngymnastics\ngymnasts\ngymnosperm\ngymnospermous\ngymnosperms\ngyms\ngynaecea\ngynaecia\ngynandries\ngynandry\ngynarchies\ngynarchy\ngynecia\ngynecic\ngynecium\ngynecoid\ngynecologic\ngynecological\ngynecologist\ngynecologists\ngynecology\ngyniatries\ngyniatry\ngynoecia\ngyp\ngypped\ngypper\ngyppers\ngypping\ngyps\ngypseian\ngypseous\ngypsied\ngypsies\ngypsum\ngypsums\ngypsy\ngypsydom\ngypsydoms\ngypsying\ngypsyish\ngypsyism\ngypsyisms\ngyral\ngyrally\ngyrate\ngyrated\ngyrates\ngyrating\ngyration\ngyrational\ngyrations\ngyrator\ngyrators\ngyratory\ngyre\ngyred\ngyrene\ngyrenes\ngyres\ngyri\ngyring\ngyro\ngyrocompass\ngyrocompasses\ngyroidal\ngyron\ngyrons\ngyros\ngyroscope\ngyroscopes\ngyroscopic\ngyroscopically\ngyrose\ngyrostabilizer\ngyrostabilizers\ngyrostat\ngyrostats\ngyrus\ngyve\ngyved\ngyves\ngyving\nha\nhaaf\nhaafs\nhaar\nhaars\nhabanera\nhabaneras\nhabdalah\nhabdalahs\nhaberdasher\nhaberdasheries\nhaberdashers\nhaberdashery\nhabile\nhabilitate\nhabilitated\nhabilitates\nhabilitating\nhabilitation\nhabilitations\nhabit\nhabitability\nhabitable\nhabitableness\nhabitably\nhabitan\nhabitans\nhabitant\nhabitants\nhabitat\nhabitation\nhabitations\nhabitats\nhabited\nhabiting\nhabits\nhabitual\nhabitually\nhabitualness\nhabituate\nhabituated\nhabituates\nhabituating\nhabituation\nhabituations\nhabitude\nhabitudes\nhabitue\nhabitues\nhabitus\nhabu\nhabus\nhacek\nhaceks\nhachure\nhachured\nhachures\nhachuring\nhacienda\nhaciendas\nhack\nhackbut\nhackbuts\nhacked\nhackee\nhackees\nhacker\nhackers\nhackie\nhackies\nhacking\nhackle\nhackled\nhackler\nhacklers\nhackles\nhacklier\nhackliest\nhackling\nhackly\nhackman\nhackmen\nhackney\nhackneyed\nhackneying\nhackneys\nhacks\nhacksaw\nhacksaws\nhackwork\nhackworks\nhad\nhadal\nhadarim\nhaddest\nhaddock\nhaddocks\nhade\nhaded\nhades\nhading\nhadj\nhadjee\nhadjees\nhadjes\nhadji\nhadjis\nhadron\nhadronic\nhadrons\nhadst\nhae\nhaed\nhaeing\nhaem\nhaemal\nhaematal\nhaematic\nhaematics\nhaematin\nhaematins\nhaemic\nhaemin\nhaemins\nhaemoid\nhaems\nhaen\nhaeredes\nhaeres\nhaes\nhaet\nhaets\nhaffet\nhaffets\nhaffit\nhaffits\nhafis\nhafiz\nhafnium\nhafniums\nhaft\nhaftarah\nhaftarahs\nhaftarot\nhaftaroth\nhafted\nhafter\nhafters\nhafting\nhaftorah\nhaftorahs\nhaftorot\nhaftoroth\nhafts\nhag\nhagadic\nhagadist\nhagadists\nhagberries\nhagberry\nhagborn\nhagbush\nhagbushes\nhagbut\nhagbuts\nhagdon\nhagdons\nhagfish\nhagfishes\nhaggadic\nhaggard\nhaggardly\nhaggardness\nhaggards\nhagged\nhagging\nhaggis\nhaggises\nhaggish\nhaggle\nhaggled\nhaggler\nhagglers\nhaggles\nhaggling\nhagridden\nhagride\nhagrides\nhagriding\nhagrode\nhags\nhah\nhaha\nhahas\nhahs\nhaik\nhaika\nhaiks\nhaiku\nhail\nhailed\nhailer\nhailers\nhailing\nhails\nhailstone\nhailstones\nhailstorm\nhailstorms\nhair\nhairball\nhairballs\nhairband\nhairbands\nhairbreadth\nhairbrush\nhairbrushes\nhaircap\nhaircaps\nhaircut\nhaircuts\nhaircutter\nhaircutters\nhaircutting\nhairdo\nhairdos\nhairdresser\nhairdressers\nhairdressing\nhairdressings\nhaired\nhairier\nhairiest\nhairiness\nhairless\nhairlessness\nhairlike\nhairline\nhairlines\nhairlock\nhairlocks\nhairpiece\nhairpieces\nhairpin\nhairpins\nhairs\nhairsbreadth\nhairsplitter\nhairsplitters\nhairsplitting\nhairspring\nhairsprings\nhairstyle\nhairstyles\nhairstyling\nhairstylist\nhairstylists\nhairwork\nhairworks\nhairworm\nhairworms\nhairy\nhaj\nhajes\nhaji\nhajis\nhajj\nhajjes\nhajji\nhajjis\nhake\nhakeem\nhakeems\nhakes\nhakim\nhakims\nhalakah\nhalakahs\nhalakic\nhalakist\nhalakists\nhalakoth\nhalala\nhalalah\nhalalahs\nhalalas\nhalation\nhalations\nhalavah\nhalavahs\nhalberd\nhalberds\nhalbert\nhalberts\nhalcyon\nhalcyons\nhale\nhaled\nhaleness\nhalenesses\nhaler\nhalers\nhaleru\nhales\nhalest\nhalf\nhalfback\nhalfbacks\nhalfbeak\nhalfbeaks\nhalfhearted\nhalfheartedly\nhalfheartedness\nhalflife\nhalflives\nhalfness\nhalfnesses\nhalftime\nhalftimes\nhalftone\nhalftones\nhalfway\nhalibut\nhalibuts\nhalid\nhalide\nhalides\nhalidom\nhalidome\nhalidomes\nhalidoms\nhalids\nhaling\nhalite\nhalites\nhalitus\nhalituses\nhall\nhallah\nhallahs\nhallel\nhallels\nhallelujah\nhallelujahs\nhalliard\nhalliards\nhallmark\nhallmarked\nhallmarking\nhallmarks\nhallo\nhalloa\nhalloaed\nhalloaing\nhalloas\nhalloed\nhalloes\nhalloing\nhalloo\nhallooed\nhallooing\nhalloos\nhallos\nhallot\nhalloth\nhallow\nhallowed\nhallower\nhallowers\nhallowing\nhallows\nhalls\nhalluces\nhallucinate\nhallucinated\nhallucinates\nhallucinating\nhallucination\nhallucinations\nhallucinator\nhallucinators\nhallucinatory\nhallucinogen\nhallucinogenic\nhallucinogens\nhallux\nhallway\nhallways\nhalm\nhalms\nhalo\nhaloed\nhaloes\nhalogen\nhalogenate\nhalogenated\nhalogenates\nhalogenating\nhalogenation\nhalogenations\nhalogens\nhaloid\nhaloids\nhaloing\nhalolike\nhalophyte\nhalophytes\nhalophytic\nhalos\nhalt\nhalted\nhalter\nhaltere\nhaltered\nhalteres\nhaltering\nhalters\nhalting\nhaltingly\nhaltless\nhalts\nhalutz\nhalutzim\nhalva\nhalvah\nhalvahs\nhalvas\nhalve\nhalved\nhalvers\nhalves\nhalving\nhalyard\nhalyards\nham\nhamal\nhamals\nhamartia\nhamartias\nhamate\nhamates\nhamaul\nhamauls\nhamburg\nhamburger\nhamburgers\nhamburgs\nhame\nhames\nhamlet\nhamlets\nhammal\nhammals\nhammed\nhammer\nhammered\nhammerer\nhammerers\nhammerhead\nhammerheads\nhammering\nhammerless\nhammers\nhammertoe\nhammertoes\nhammier\nhammiest\nhammily\nhamming\nhammock\nhammocks\nhammy\nhamper\nhampered\nhamperer\nhamperers\nhampering\nhampers\nhams\nhamster\nhamsters\nhamstring\nhamstringing\nhamstrings\nhamstrung\nhamular\nhamulate\nhamuli\nhamulose\nhamulous\nhamulus\nhamza\nhamzah\nhamzahs\nhamzas\nhanaper\nhanapers\nhance\nhances\nhand\nhandbag\nhandbags\nhandball\nhandballs\nhandbarrow\nhandbarrows\nhandbill\nhandbills\nhandbook\nhandbooks\nhandbreadth\nhandbreadths\nhandcar\nhandcars\nhandcart\nhandcarts\nhandclasp\nhandclasps\nhandcuff\nhandcuffed\nhandcuffing\nhandcuffs\nhanded\nhandedness\nhandfast\nhandfasted\nhandfasting\nhandfasts\nhandful\nhandfuls\nhandgrip\nhandgrips\nhandgun\nhandguns\nhandhold\nhandholds\nhandicap\nhandicapped\nhandicapper\nhandicappers\nhandicapping\nhandicaps\nhandicraft\nhandicrafter\nhandicrafters\nhandicrafts\nhandicraftsman\nhandicraftsmen\nhandier\nhandiest\nhandily\nhandiness\nhanding\nhandiwork\nhandiworks\nhandkerchief\nhandkerchiefs\nhandle\nhandleable\nhandlebar\nhandlebars\nhandled\nhandleless\nhandler\nhandlers\nhandles\nhandless\nhandlike\nhandling\nhandlings\nhandlist\nhandlists\nhandloom\nhandlooms\nhandmade\nhandmaid\nhandmaids\nhandoff\nhandoffs\nhandout\nhandouts\nhandpick\nhandpicked\nhandpicking\nhandpicks\nhandprint\nhandprints\nhandrail\nhandrails\nhands\nhandsaw\nhandsaws\nhandsbreadth\nhandsbreadths\nhandsel\nhandseled\nhandseling\nhandselled\nhandselling\nhandsels\nhandset\nhandsets\nhandsewn\nhandsful\nhandshake\nhandshaker\nhandshakers\nhandshakes\nhandshaking\nhandsome\nhandsomely\nhandsomeness\nhandsomer\nhandsomest\nhandspring\nhandsprings\nhandstand\nhandstands\nhandwork\nhandworks\nhandwrit\nhandwrite\nhandwrites\nhandwriting\nhandwritings\nhandwritten\nhandwrote\nhandy\nhandyman\nhandymen\nhang\nhangable\nhangar\nhangared\nhangaring\nhangars\nhangbird\nhangbirds\nhangdog\nhangdogs\nhanged\nhanger\nhangers\nhangfire\nhangfires\nhanging\nhangings\nhangman\nhangmen\nhangnail\nhangnails\nhangnest\nhangnests\nhangout\nhangouts\nhangover\nhangovers\nhangs\nhangtag\nhangtags\nhangup\nhangups\nhank\nhanked\nhanker\nhankered\nhankerer\nhankerers\nhankering\nhankerings\nhankers\nhankie\nhankies\nhanking\nhanks\nhanky\nhansa\nhanse\nhansel\nhanseled\nhanseling\nhanselled\nhanselling\nhansels\nhanses\nhansom\nhansoms\nhant\nhanted\nhanting\nhantle\nhantles\nhants\nhanuman\nhanumans\nhao\nhaole\nhaoles\nhap\nhapax\nhapaxes\nhaphazard\nhaphazardly\nhaphazardness\nhapless\nhaplessly\nhaplessness\nhaplite\nhaplites\nhaploid\nhaploidies\nhaploids\nhaploidy\nhaplont\nhaplonts\nhaplopia\nhaplopias\nhaploses\nhaplosis\nhaply\nhapped\nhappen\nhappened\nhappening\nhappenings\nhappens\nhappenstance\nhappier\nhappiest\nhappily\nhappiness\nhapping\nhappy\nhaps\nhapten\nhaptene\nhaptenes\nhaptenic\nhaptens\nhaptic\nhaptical\nharangue\nharangued\nharanguer\nharanguers\nharangues\nharanguing\nharass\nharassed\nharasser\nharassers\nharasses\nharassing\nharassment\nharassments\nharbinger\nharbingers\nharbor\nharborage\nharborages\nharbored\nharborer\nharborers\nharboring\nharborless\nharbors\nharbour\nharboured\nharbouring\nharbours\nhard\nhardback\nhardbacks\nhardball\nhardballs\nhardboot\nhardboots\nhardcase\nhardcore\nhardcover\nhardcovers\nharden\nhardened\nhardener\nhardeners\nhardening\nhardens\nharder\nhardest\nhardfisted\nhardhack\nhardhacks\nhardhat\nhardhats\nhardhead\nhardheaded\nhardheadedly\nhardheadedness\nhardheads\nhardier\nhardies\nhardiest\nhardihood\nhardihoods\nhardily\nhardiness\nhardly\nhardness\nhardnesses\nhardpan\nhardpans\nhards\nhardset\nhardship\nhardships\nhardtack\nhardtacks\nhardtop\nhardtops\nhardware\nhardwares\nhardwood\nhardwoods\nhardy\nhare\nharebell\nharebells\nharebrained\nhared\nhareem\nhareems\nharelike\nharelip\nharelipped\nharelips\nharem\nharems\nhares\nhariana\nharianas\nharicot\nharicots\nharijan\nharijans\nharing\nhark\nharked\nharken\nharkened\nharkener\nharkeners\nharkening\nharkens\nharking\nharks\nharl\nharlequin\nharlequins\nharlot\nharlotries\nharlotry\nharlots\nharls\nharm\nharmed\nharmer\nharmers\nharmful\nharmfully\nharmfulness\nharmin\nharmine\nharmines\nharming\nharmins\nharmless\nharmlessly\nharmlessness\nharmonic\nharmonica\nharmonically\nharmonicas\nharmonics\nharmonies\nharmonious\nharmoniously\nharmoniousness\nharmonization\nharmonizations\nharmonize\nharmonized\nharmonizer\nharmonizers\nharmonizes\nharmonizing\nharmony\nharms\nharness\nharnessed\nharnesses\nharnessing\nharp\nharped\nharper\nharpers\nharpies\nharpin\nharping\nharpings\nharpins\nharpist\nharpists\nharpoon\nharpooned\nharpooner\nharpooners\nharpooning\nharpoons\nharps\nharpsichord\nharpsichordist\nharpsichordists\nharpsichords\nharpy\nharridan\nharridans\nharried\nharrier\nharriers\nharries\nharrow\nharrowed\nharrower\nharrowers\nharrowing\nharrows\nharrumph\nharrumphed\nharrumphing\nharrumphs\nharry\nharrying\nharsh\nharshen\nharshened\nharshening\nharshens\nharsher\nharshest\nharshlets\nharshly\nharshness\nharslet\nharslets\nhart\nhartal\nhartals\nhartebeest\nhartebeests\nharts\nharuspex\nharuspices\nharvest\nharvested\nharvester\nharvesters\nharvesting\nharvestman\nharvestmen\nharvests\nhas\nhasenpfeffer\nhasenpfeffers\nhash\nhashed\nhasheesh\nhasheeshes\nhashes\nhashing\nhashish\nhashishes\nhaslet\nhaslets\nhasp\nhasped\nhasping\nhasps\nhassel\nhassels\nhassle\nhassled\nhassles\nhassling\nhassock\nhassocks\nhast\nhastate\nhaste\nhasted\nhasteful\nhasten\nhastened\nhastener\nhasteners\nhastening\nhastens\nhastes\nhastier\nhastiest\nhastily\nhastiness\nhasting\nhasty\nhat\nhatable\nhatband\nhatbands\nhatbox\nhatboxes\nhatch\nhatchabilities\nhatchability\nhatchable\nhatchback\nhatchbacks\nhatcheck\nhatched\nhatchel\nhatcheled\nhatcheling\nhatchelled\nhatchelling\nhatchels\nhatcher\nhatcheries\nhatchers\nhatchery\nhatches\nhatchet\nhatchets\nhatching\nhatchings\nhatchway\nhatchways\nhate\nhateable\nhated\nhateful\nhatefully\nhatefulness\nhater\nhaters\nhates\nhatful\nhatfuls\nhath\nhating\nhatless\nhatlike\nhatmaker\nhatmakers\nhatpin\nhatpins\nhatrack\nhatracks\nhatred\nhatreds\nhats\nhatsful\nhatted\nhatter\nhatteria\nhatterias\nhatters\nhatting\nhauberk\nhauberks\nhaugh\nhaughs\nhaughtier\nhaughtiest\nhaughtily\nhaughtiness\nhaughty\nhaul\nhaulage\nhaulages\nhauled\nhauler\nhaulers\nhaulier\nhauliers\nhauling\nhaulm\nhaulmier\nhaulmiest\nhaulms\nhaulmy\nhauls\nhaulyard\nhaulyards\nhaunch\nhaunched\nhaunches\nhaunt\nhaunted\nhaunter\nhaunters\nhaunting\nhauntingly\nhaunts\nhausen\nhausens\nhausfrau\nhausfrauen\nhausfraus\nhaut\nhautbois\nhautboy\nhautboys\nhaute\nhauteur\nhauteurs\nhavdalah\nhavdalahs\nhave\nhavelock\nhavelocks\nhaven\nhavened\nhavening\nhavens\nhaver\nhavered\nhaverel\nhaverels\nhavering\nhavers\nhaversack\nhaversacks\nhaves\nhaving\nhavior\nhaviors\nhaviour\nhaviours\nhavoc\nhavocked\nhavocker\nhavockers\nhavocking\nhavocs\nhaw\nhawed\nhawfinch\nhawfinches\nhawing\nhawk\nhawkbill\nhawkbills\nhawked\nhawker\nhawkers\nhawkey\nhawkeys\nhawkie\nhawkies\nhawking\nhawkings\nhawkish\nhawklike\nhawkmoth\nhawkmoths\nhawknose\nhawknoses\nhawks\nhawkshaw\nhawkshaws\nhawkweed\nhawkweeds\nhaws\nhawse\nhawser\nhawsers\nhawses\nhawthorn\nhawthorns\nhay\nhaycock\nhaycocks\nhayed\nhayer\nhayers\nhayfork\nhayforks\nhaying\nhayings\nhaylage\nhaylages\nhayloft\nhaylofts\nhaymaker\nhaymakers\nhaymow\nhaymows\nhayrack\nhayracks\nhayrick\nhayricks\nhayride\nhayrides\nhays\nhayseed\nhayseeds\nhaystack\nhaystacks\nhayward\nhaywards\nhaywire\nhaywires\nhazan\nhazanim\nhazans\nhazard\nhazarded\nhazarding\nhazardous\nhazardously\nhazardousness\nhazards\nhaze\nhazed\nhazel\nhazelly\nhazelnut\nhazelnuts\nhazels\nhazer\nhazers\nhazes\nhazier\nhaziest\nhazily\nhaziness\nhazinesses\nhazing\nhazings\nhazy\nhazzan\nhazzanim\nhazzans\nhe\nhead\nheadache\nheadaches\nheadachier\nheadachiest\nheadachy\nheadband\nheadbands\nheadboard\nheadboards\nheadcheese\nheadcheeses\nheaddress\nheaddresses\nheaded\nheader\nheaders\nheadgate\nheadgates\nheadgear\nheadgears\nheadhunt\nheadhunted\nheadhunter\nheadhunters\nheadhunting\nheadhunts\nheadier\nheadiest\nheadily\nheading\nheadings\nheadlamp\nheadlamps\nheadland\nheadlands\nheadless\nheadlessness\nheadlight\nheadlights\nheadline\nheadlined\nheadliner\nheadliners\nheadlines\nheadlining\nheadlock\nheadlocks\nheadlong\nheadman\nheadmaster\nheadmasters\nheadmen\nheadmistress\nheadmistresses\nheadmost\nheadnote\nheadnotes\nheadphone\nheadphones\nheadpiece\nheadpieces\nheadpin\nheadpins\nheadquarter\nheadquartered\nheadquartering\nheadquarters\nheadrace\nheadraces\nheadrest\nheadrests\nheadroom\nheadrooms\nheads\nheadsail\nheadsails\nheadset\nheadsets\nheadship\nheadships\nheadshrinker\nheadshrinkers\nheadsman\nheadsmen\nheadstand\nheadstands\nheadstay\nheadstays\nheadstock\nheadstocks\nheadstone\nheadstones\nheadstrong\nheadwaiter\nheadwaiters\nheadwater\nheadwaters\nheadway\nheadways\nheadwind\nheadwinds\nheadword\nheadwords\nheadwork\nheadworks\nheady\nheal\nhealable\nhealed\nhealer\nhealers\nhealing\nheals\nhealth\nhealthful\nhealthfulness\nhealthier\nhealthiest\nhealthily\nhealthiness\nhealths\nhealthy\nheap\nheaped\nheaping\nheaps\nhear\nhearable\nheard\nhearer\nhearers\nhearing\nhearings\nhearken\nhearkened\nhearkening\nhearkens\nhears\nhearsay\nhearsays\nhearse\nhearsed\nhearses\nhearsing\nheart\nheartache\nheartaches\nheartbeat\nheartbeats\nheartbreak\nheartbreaker\nheartbreakers\nheartbreaking\nheartbreakingly\nheartbreaks\nheartbroken\nheartburn\nheartburns\nhearted\nhearten\nheartened\nheartening\nhearteningly\nheartens\nheartfelt\nhearth\nhearths\nhearthstone\nhearthstones\nheartier\nhearties\nheartiest\nheartily\nheartiness\nhearting\nheartland\nheartlands\nheartless\nheartlessly\nheartlessness\nhearts\nheartsick\nheartsickness\nheartwarming\nhearty\nheat\nheatable\nheated\nheatedly\nheater\nheaters\nheath\nheathen\nheathenish\nheathenishly\nheathenism\nheathenisms\nheathenize\nheathenized\nheathenizes\nheathenizing\nheathens\nheather\nheathers\nheathery\nheathier\nheathiest\nheathlike\nheaths\nheathy\nheating\nheatless\nheats\nheatstroke\nheaume\nheaumes\nheave\nheaved\nheaven\nheavenlier\nheavenliest\nheavenliness\nheavenly\nheavens\nheavenward\nheavenwards\nheaver\nheavers\nheaves\nheavier\nheavies\nheaviest\nheavily\nheaviness\nheaving\nheavy\nheavyhearted\nheavyheartedly\nheavyheartedness\nheavyset\nheavyweight\nheavyweights\nhebdomad\nhebdomads\nhebe\nhebephrenia\nhebephrenias\nhebephrenic\nhebes\nhebetate\nhebetated\nhebetates\nhebetating\nhebetic\nhebetude\nhebetudes\nhebraize\nhebraized\nhebraizes\nhebraizing\nhecatomb\nhecatombs\nheck\nheckle\nheckled\nheckler\nhecklers\nheckles\nheckling\nhecks\nhectare\nhectares\nhectic\nhectical\nhectically\nhecticly\nhectograph\nhectographic\nhectometer\nhectometers\nhector\nhectored\nhectoring\nhectors\nheddle\nheddles\nheder\nheders\nhedge\nhedged\nhedgehog\nhedgehogs\nhedgehop\nhedgehopped\nhedgehopper\nhedgehoppers\nhedgehopping\nhedgehops\nhedgepig\nhedgepigs\nhedger\nhedgerow\nhedgerows\nhedgers\nhedges\nhedgier\nhedgiest\nhedging\nhedgingly\nhedgy\nhedonic\nhedonics\nhedonism\nhedonisms\nhedonist\nhedonistic\nhedonistically\nhedonists\nheed\nheeded\nheeder\nheeders\nheedful\nheedfully\nheedfulness\nheeding\nheedless\nheedlessly\nheedlessness\nheeds\nheehaw\nheehawed\nheehawing\nheehaws\nheel\nheelball\nheelballs\nheeled\nheeler\nheelers\nheeling\nheelings\nheelless\nheelpost\nheelposts\nheels\nheeltap\nheeltaps\nheeze\nheezed\nheezes\nheezing\nheft\nhefted\nhefter\nhefters\nheftier\nheftiest\nheftily\nheftiness\nhefting\nhefts\nhefty\nhegari\nhegaris\nhegemonies\nhegemony\nhegira\nhegiras\nhegumen\nhegumene\nhegumenes\nhegumenies\nhegumens\nhegumeny\nheh\nhehs\nheifer\nheifers\nheigh\nheight\nheighten\nheightened\nheightening\nheightens\nheighth\nheighths\nheights\nheil\nheiled\nheiling\nheils\nheinie\nheinies\nheinous\nheinously\nheinousness\nheir\nheirdom\nheirdoms\nheired\nheiress\nheiresses\nheiring\nheirless\nheirloom\nheirlooms\nheirs\nheirship\nheirships\nheist\nheisted\nheister\nheisters\nheisting\nheists\nhejira\nhejiras\nhektare\nhektares\nheld\nheliac\nheliacal\nheliast\nheliasts\nhelical\nhelically\nhelices\nhelicities\nhelicity\nhelicoid\nhelicoids\nhelicon\nhelicons\nhelicopt\nhelicopted\nhelicopter\nhelicoptered\nhelicoptering\nhelicopters\nhelicopting\nhelicopts\nhelio\nheliograph\nheliographer\nheliographers\nheliographic\nheliographies\nheliographs\nheliography\nheliolatrous\nheliolatry\nheliometer\nheliometers\nheliometric\nheliometrically\nhelios\nheliotrope\nheliotropes\nheliotropic\nheliotropism\nheliotropisms\nheliozoan\nheliozoans\nhelipad\nhelipads\nheliport\nheliports\nhelistop\nhelistops\nhelium\nheliums\nhelix\nhelixes\nhell\nhellbent\nhellbox\nhellboxes\nhellcat\nhellcats\nhelled\nhellenization\nhellenizations\nhellenize\nhellenized\nhellenizer\nhellenizers\nhellenizes\nhellenizing\nheller\nhelleri\nhelleries\nhellers\nhellery\nhellfire\nhellfires\nhellhole\nhellholes\nhelling\nhellion\nhellions\nhellish\nhellishly\nhellishness\nhellkite\nhellkites\nhello\nhelloed\nhelloes\nhelloing\nhellos\nhells\nhelluva\nhelm\nhelmed\nhelmet\nhelmeted\nhelmeting\nhelmetlike\nhelmets\nhelming\nhelminth\nhelminths\nhelmless\nhelms\nhelmsman\nhelmsmen\nhelot\nhelotage\nhelotages\nhelotism\nhelotisms\nhelotries\nhelotry\nhelots\nhelp\nhelpable\nhelped\nhelper\nhelpers\nhelpful\nhelpfully\nhelpfulness\nhelping\nhelpings\nhelpless\nhelplessly\nhelplessness\nhelpmate\nhelpmates\nhelpmeet\nhelpmeets\nhelps\nhelve\nhelved\nhelves\nhelving\nhem\nhemagog\nhemagogs\nhemal\nhematal\nhematein\nhemateins\nhematic\nhematics\nhematin\nhematine\nhematines\nhematins\nhematite\nhematites\nhematitic\nhematoid\nhematologic\nhematologist\nhematologists\nhematology\nhematoma\nhematomas\nhematomata\nheme\nhemes\nhemic\nhemin\nhemins\nhemiola\nhemiolas\nhemipter\nhemipters\nhemisphere\nhemispheres\nhemispheric\nhemispherical\nhemline\nhemlines\nhemlock\nhemlocks\nhemmed\nhemmer\nhemmers\nhemming\nhemocoel\nhemocoels\nhemocyte\nhemocytes\nhemoglobin\nhemoglobinic\nhemoglobinous\nhemoglobins\nhemoid\nhemolyze\nhemolyzed\nhemolyzes\nhemolyzing\nhemophilia\nhemophiliac\nhemophiliacs\nhemorrhage\nhemorrhaged\nhemorrhages\nhemorrhagic\nhemorrhaging\nhemorrhoid\nhemorrhoidal\nhemorrhoids\nhemostat\nhemostatic\nhemostatics\nhemostats\nhemp\nhempen\nhempie\nhempier\nhempiest\nhemplike\nhemps\nhempseed\nhempseeds\nhempweed\nhempweeds\nhempy\nhems\nhemstitch\nhemstitched\nhemstitcher\nhemstitchers\nhemstitches\nhemstitching\nhen\nhenbane\nhenbanes\nhenbit\nhenbits\nhence\nhenceforth\nhenchman\nhenchmen\nhencoop\nhencoops\nhenequen\nhenequens\nhenequin\nhenequins\nhenhouse\nhenhouses\nheniquen\nheniquens\nhenlike\nhenna\nhennaed\nhennaing\nhennas\nhenneries\nhennery\nhenpeck\nhenpecked\nhenpecking\nhenpecks\nhenries\nhenry\nhenrys\nhens\nhent\nhented\nhenting\nhents\nhep\nheparin\nheparins\nhepatic\nhepatica\nhepaticae\nhepaticas\nhepatics\nhepatitides\nhepatitis\nhepatize\nhepatized\nhepatizes\nhepatizing\nhepatoma\nhepatomas\nhepatomata\nhepcat\nhepcats\nheptad\nheptads\nheptagon\nheptagonal\nheptagons\nheptane\nheptanes\nheptarch\nheptarchs\nheptose\nheptoses\nher\nherald\nheralded\nheraldic\nheraldically\nheralding\nheraldries\nheraldry\nheralds\nherb\nherbaceous\nherbage\nherbages\nherbal\nherbalist\nherbalists\nherbals\nherbaria\nherbarium\nherbicidal\nherbicide\nherbicides\nherbier\nherbiest\nherbivore\nherbivores\nherbivorous\nherbless\nherblike\nherbs\nherby\nhercules\nherculeses\nherd\nherded\nherder\nherders\nherdic\nherdics\nherding\nherdlike\nherdman\nherdmen\nherds\nherdsman\nherdsmen\nhere\nhereabout\nhereabouts\nhereafter\nhereafters\nhereat\nhereaway\nhereby\nheredes\nhereditament\nhereditaments\nhereditarily\nhereditary\nheredities\nheredity\nherein\nhereinafter\nhereinto\nhereof\nhereon\nheres\nheresies\nheresy\nheretic\nheretical\nheretically\nheretics\nhereto\nheretofore\nheretrices\nheretrix\nheretrixes\nhereunder\nhereunto\nhereupon\nherewith\nheriot\nheriots\nheritabilities\nheritability\nheritable\nheritage\nheritages\nheritor\nheritors\nheritrices\nheritrix\nheritrixes\nherl\nherls\nherm\nherma\nhermae\nhermaean\nhermai\nhermaphrodite\nhermaphrodites\nhermaphroditic\nhermaphroditism\nhermaphroditisms\nhermetic\nhermetically\nhermeticism\nhermetist\nhermetists\nhermit\nhermitage\nhermitages\nhermitic\nhermitism\nhermitisms\nhermitries\nhermitry\nhermits\nherms\nhern\nhernia\nherniae\nhernial\nhernias\nherniate\nherniated\nherniates\nherniating\nherns\nhero\nheroes\nheroic\nheroical\nheroically\nheroics\nheroin\nheroine\nheroines\nheroins\nheroism\nheroisms\nheroize\nheroized\nheroizes\nheroizing\nheron\nheronries\nheronry\nherons\nheros\nherpes\nherpeses\nherpetic\nherpetological\nherpetologist\nherpetologists\nherpetology\nherried\nherries\nherring\nherringbone\nherringbones\nherrings\nherry\nherrying\nhers\nherself\nhertz\nhertzes\nhes\nhesitance\nhesitancies\nhesitancy\nhesitant\nhesitantly\nhesitate\nhesitated\nhesitater\nhesitaters\nhesitates\nhesitating\nhesitatingly\nhesitation\nhesitations\nhessian\nhessians\nhessite\nhessites\nhest\nhests\nhet\nhetaera\nhetaerae\nhetaeras\nhetaeric\nhetaira\nhetairai\nhetairas\nhetero\nheterocycle\nheterocycles\nheterocyclic\nheterocyclics\nheterodox\nheterodoxies\nheterodoxy\nheterodyne\nheterodyned\nheterodynes\nheterodyning\nheterogeneities\nheterogeneity\nheterogeneous\nheterogeneously\nheterogeneousness\nheteronomous\nheteros\nheterosexual\nheterosexualities\nheterosexuality\nheterosexuals\nheth\nheths\nhetman\nhetmans\nhets\nheuch\nheuchs\nheugh\nheughs\nheuristic\nheuristically\nheuristics\nhew\nhewable\nhewed\nhewer\nhewers\nhewing\nhewn\nhews\nhex\nhexad\nhexade\nhexadecimal\nhexades\nhexadic\nhexads\nhexagon\nhexagonal\nhexagonally\nhexagons\nhexagram\nhexagrams\nhexahedron\nhexahedrons\nhexameter\nhexameters\nhexamine\nhexamines\nhexane\nhexanes\nhexapla\nhexaplar\nhexaplas\nhexapod\nhexapodies\nhexapods\nhexapody\nhexarchies\nhexarchy\nhexed\nhexer\nhexerei\nhexereis\nhexers\nhexes\nhexing\nhexone\nhexones\nhexosan\nhexosans\nhexose\nhexoses\nhexyl\nhexyls\nhey\nheyday\nheydays\nheydey\nheydeys\nhi\nhiatal\nhiatus\nhiatuses\nhibachi\nhibachis\nhibernal\nhibernate\nhibernated\nhibernates\nhibernating\nhibernation\nhibernations\nhibernator\nhibernators\nhibiscus\nhibiscuses\nhic\nhiccough\nhiccoughed\nhiccoughing\nhiccoughs\nhiccup\nhiccuped\nhiccuping\nhiccupped\nhiccupping\nhiccups\nhick\nhickey\nhickeys\nhickories\nhickory\nhicks\nhid\nhidable\nhidalgo\nhidalgos\nhidden\nhiddenly\nhide\nhideaway\nhideaways\nhidebound\nhided\nhideless\nhideous\nhideously\nhideousness\nhideout\nhideouts\nhider\nhiders\nhides\nhiding\nhidings\nhidroses\nhidrosis\nhidrotic\nhie\nhied\nhieing\nhiemal\nhierarch\nhierarchal\nhierarchic\nhierarchical\nhierarchically\nhierarchies\nhierarchs\nhierarchy\nhieratic\nhieroglyphic\nhieroglyphically\nhieroglyphics\nhies\nhiggle\nhiggled\nhiggler\nhigglers\nhiggles\nhiggling\nhigh\nhighball\nhighballed\nhighballing\nhighballs\nhighborn\nhighboy\nhighboys\nhighbred\nhighbrow\nhighbrowed\nhighbrowism\nhighbrows\nhighbush\nhigher\nhighest\nhighjack\nhighjacked\nhighjacking\nhighjacks\nhighland\nhighlander\nhighlanders\nhighlands\nhighlight\nhighlighted\nhighlighting\nhighlights\nhighly\nhighness\nhighnesses\nhighroad\nhighroads\nhighs\nhight\nhightail\nhightailed\nhightailing\nhightails\nhighted\nhighth\nhighths\nhighting\nhights\nhighway\nhighwayman\nhighwaymen\nhighways\nhijack\nhijacked\nhijacker\nhijackers\nhijacking\nhijacks\nhijinks\nhike\nhiked\nhiker\nhikers\nhikes\nhiking\nhila\nhilar\nhilarious\nhilariously\nhilariousness\nhilarities\nhilarity\nhilding\nhildings\nhili\nhill\nhillbillies\nhillbilly\nhilled\nhiller\nhillers\nhillier\nhilliest\nhilling\nhillo\nhilloa\nhilloaed\nhilloaing\nhilloas\nhillock\nhillocks\nhillocky\nhilloed\nhilloes\nhilloing\nhillos\nhills\nhillside\nhillsides\nhilltop\nhilltops\nhilly\nhilt\nhilted\nhilting\nhiltless\nhilts\nhilum\nhilus\nhim\nhimatia\nhimation\nhimations\nhimself\nhin\nhind\nhinder\nhindered\nhinderer\nhinderers\nhindering\nhinders\nhindgut\nhindguts\nhindmost\nhindquarter\nhindquarters\nhindrance\nhindrances\nhinds\nhindsight\nhinge\nhinged\nhinger\nhingers\nhinges\nhinging\nhinnied\nhinnies\nhinny\nhinnying\nhins\nhint\nhinted\nhinter\nhinterland\nhinterlands\nhinters\nhinting\nhints\nhip\nhipbone\nhipbones\nhipless\nhiplike\nhipness\nhipnesses\nhipparch\nhipparchs\nhipped\nhipper\nhippest\nhippie\nhippier\nhippies\nhippiest\nhipping\nhippish\nhippo\nhippodrome\nhippodromes\nhippopotami\nhippopotamus\nhippopotamuses\nhippos\nhippy\nhips\nhipshot\nhipster\nhipsters\nhirable\nhiragana\nhiraganas\nhircine\nhire\nhireable\nhired\nhireling\nhirelings\nhirer\nhirers\nhires\nhiring\nhirple\nhirpled\nhirples\nhirpling\nhirsel\nhirseled\nhirseling\nhirselled\nhirselling\nhirsels\nhirsle\nhirsled\nhirsles\nhirsling\nhirsute\nhirsuteness\nhirudin\nhirudins\nhis\nhisn\nhispid\nhiss\nhissed\nhisself\nhisser\nhissers\nhisses\nhissing\nhissings\nhist\nhistamin\nhistamine\nhistamines\nhistaminic\nhistamins\nhisted\nhistidin\nhistidins\nhisting\nhistogen\nhistogens\nhistogram\nhistograms\nhistoid\nhistologic\nhistological\nhistologically\nhistologies\nhistologist\nhistologists\nhistology\nhistone\nhistones\nhistorian\nhistorians\nhistoric\nhistorical\nhistorically\nhistoricalness\nhistoricism\nhistoricisms\nhistoricist\nhistoricists\nhistoricities\nhistoricity\nhistories\nhistoriographer\nhistoriographers\nhistoriographic\nhistoriographical\nhistoriographically\nhistoriographies\nhistoriography\nhistory\nhistrionic\nhistrionically\nhistrionics\nhists\nhit\nhitch\nhitched\nhitcher\nhitchers\nhitches\nhitchhike\nhitchhiked\nhitchhiker\nhitchhikers\nhitchhikes\nhitchhiking\nhitching\nhither\nhitherto\nhitless\nhits\nhitter\nhitters\nhitting\nhive\nhived\nhiveless\nhives\nhiving\nhm\nhmm\nho\nhoactzin\nhoactzines\nhoactzins\nhoagie\nhoagies\nhoagy\nhoar\nhoard\nhoarded\nhoarder\nhoarders\nhoarding\nhoardings\nhoards\nhoarfrost\nhoarfrosts\nhoarier\nhoariest\nhoarily\nhoariness\nhoars\nhoarse\nhoarsely\nhoarsen\nhoarsened\nhoarseness\nhoarsening\nhoarsens\nhoarser\nhoarsest\nhoary\nhoatzin\nhoatzines\nhoatzins\nhoax\nhoaxed\nhoaxer\nhoaxers\nhoaxes\nhoaxing\nhob\nhobbed\nhobbies\nhobbing\nhobble\nhobbled\nhobbler\nhobblers\nhobbles\nhobbling\nhobby\nhobbyhorse\nhobbyhorses\nhobbyist\nhobbyists\nhobgoblin\nhobgoblins\nhoblike\nhobnail\nhobnailed\nhobnails\nhobnob\nhobnobbed\nhobnobbing\nhobnobs\nhobo\nhoboed\nhoboes\nhoboing\nhoboism\nhoboisms\nhobos\nhobs\nhock\nhocked\nhocker\nhockers\nhockey\nhockeys\nhocking\nhocks\nhockshop\nhockshops\nhocus\nhocused\nhocuses\nhocusing\nhocussed\nhocusses\nhocussing\nhod\nhodad\nhodaddies\nhodaddy\nhodads\nhodden\nhoddens\nhoddin\nhoddins\nhodgepodge\nhods\nhoe\nhoecake\nhoecakes\nhoed\nhoedown\nhoedowns\nhoeing\nhoelike\nhoer\nhoers\nhoes\nhog\nhogan\nhogans\nhogback\nhogbacks\nhogfish\nhogfishes\nhogg\nhogged\nhogger\nhoggers\nhogging\nhoggish\nhoggishly\nhoggishness\nhoggs\nhoglike\nhogmanay\nhogmanays\nhogmane\nhogmanes\nhogmenay\nhogmenays\nhognose\nhognoses\nhognut\nhognuts\nhogs\nhogshead\nhogsheads\nhogtie\nhogtied\nhogtieing\nhogties\nhogtying\nhogwash\nhogwashes\nhogweed\nhogweeds\nhoick\nhoicked\nhoicking\nhoicks\nhoiden\nhoidened\nhoidening\nhoidens\nhoise\nhoised\nhoises\nhoising\nhoist\nhoisted\nhoister\nhoisters\nhoisting\nhoists\nhoke\nhoked\nhokes\nhokey\nhoking\nhokku\nhokum\nhokums\nhokypokies\nhokypoky\nholard\nholards\nhold\nholdable\nholdall\nholdalls\nholdback\nholdbacks\nholden\nholder\nholders\nholdfast\nholdfasts\nholding\nholdings\nholdout\nholdouts\nholdover\nholdovers\nholds\nholdup\nholdups\nhole\nholed\nholeless\nholes\nholey\nholibut\nholibuts\nholiday\nholidayed\nholidaying\nholidays\nholier\nholies\nholiest\nholily\nholiness\nholinesses\nholing\nholism\nholisms\nholist\nholistic\nholistically\nholists\nholk\nholked\nholking\nholks\nholla\nhollaed\nhollaing\nholland\nhollands\nhollas\nholler\nhollered\nhollering\nhollers\nhollies\nhollo\nholloa\nholloaed\nholloaing\nholloas\nholloed\nholloes\nholloing\nholloo\nhollooed\nhollooing\nholloos\nhollos\nhollow\nholloware\nhollowed\nhollower\nhollowest\nhollowing\nhollowly\nhollowness\nhollows\nhollowware\nholly\nhollyhock\nhollyhocks\nholm\nholmic\nholmium\nholmiums\nholms\nholocaust\nholocausts\nhologram\nholograms\nholograph\nholographic\nholographies\nholographs\nholography\nhologynies\nhologyny\nholotype\nholotypes\nholozoic\nholp\nholpen\nhols\nholstein\nholsteins\nholster\nholsters\nholt\nholts\nholy\nholyday\nholydays\nholytide\nholytides\nhom\nhomage\nhomaged\nhomager\nhomagers\nhomages\nhomaging\nhombre\nhombres\nhomburg\nhomburgs\nhome\nhomebodies\nhomebody\nhomebred\nhomebreds\nhomecoming\nhomecomings\nhomed\nhomegrown\nhomeland\nhomelands\nhomeless\nhomelier\nhomeliest\nhomelike\nhomeliness\nhomely\nhomemade\nhomemaker\nhomemakers\nhomemaking\nhomeopath\nhomeopathic\nhomeopathically\nhomeopathies\nhomeopaths\nhomeopathy\nhomeostatic\nhomer\nhomered\nhomering\nhomeroom\nhomerooms\nhomers\nhomes\nhomesick\nhomesickness\nhomesite\nhomesites\nhomespun\nhomespuns\nhomestead\nhomesteaded\nhomesteader\nhomesteaders\nhomesteading\nhomesteads\nhomestretch\nhomestretches\nhometown\nhometowns\nhomeward\nhomewards\nhomework\nhomeworks\nhomey\nhomeyness\nhomicidal\nhomicidally\nhomicide\nhomicides\nhomier\nhomiest\nhomiletic\nhomiletical\nhomiletics\nhomilies\nhomilist\nhomilists\nhomily\nhominess\nhominesses\nhoming\nhominian\nhominians\nhominid\nhominids\nhominies\nhominine\nhominoid\nhominoids\nhominy\nhommock\nhommocks\nhomo\nhomogamies\nhomogamy\nhomogeneities\nhomogeneity\nhomogeneous\nhomogeneously\nhomogeneousness\nhomogenies\nhomogenization\nhomogenizations\nhomogenize\nhomogenized\nhomogenizer\nhomogenizers\nhomogenizes\nhomogenizing\nhomogenous\nhomogeny\nhomogonies\nhomogony\nhomograph\nhomographic\nhomographs\nhomolog\nhomological\nhomologically\nhomologies\nhomologize\nhomologized\nhomologizer\nhomologizers\nhomologizes\nhomologizing\nhomologous\nhomologs\nhomology\nhomonym\nhomonymic\nhomonymies\nhomonymous\nhomonymously\nhomonyms\nhomonymy\nhomophone\nhomophones\nhomophonic\nhomophonies\nhomophonous\nhomophony\nhomos\nhomosexual\nhomosexualities\nhomosexuality\nhomosexuals\nhomy\nhonan\nhonans\nhoncho\nhonchos\nhonda\nhondas\nhone\nhoned\nhoner\nhoners\nhones\nhonest\nhonester\nhonestest\nhonesties\nhonestly\nhonesty\nhonewort\nhoneworts\nhoney\nhoneybee\nhoneybees\nhoneybun\nhoneybuns\nhoneycomb\nhoneycombed\nhoneycombing\nhoneycombs\nhoneydew\nhoneydews\nhoneyed\nhoneyful\nhoneying\nhoneymoon\nhoneymooned\nhoneymooner\nhoneymooners\nhoneymooning\nhoneymoons\nhoneys\nhoneysuckle\nhoneysuckles\nhong\nhongs\nhonied\nhoning\nhonk\nhonked\nhonker\nhonkers\nhonkey\nhonkeys\nhonkie\nhonkies\nhonking\nhonks\nhonky\nhonor\nhonorable\nhonorableness\nhonorably\nhonorand\nhonorands\nhonoraria\nhonoraries\nhonorarium\nhonorary\nhonored\nhonoree\nhonorees\nhonorer\nhonorers\nhonorific\nhonorifically\nhonorifics\nhonoring\nhonors\nhonour\nhonoured\nhonourer\nhonourers\nhonouring\nhonours\nhons\nhooch\nhooches\nhood\nhooded\nhoodie\nhoodies\nhooding\nhoodless\nhoodlike\nhoodlum\nhoodlums\nhoodoo\nhoodooed\nhoodooing\nhoodoos\nhoods\nhoodwink\nhoodwinked\nhoodwinker\nhoodwinkers\nhoodwinking\nhoodwinks\nhooey\nhooeys\nhoof\nhoofbeat\nhoofbeats\nhoofed\nhoofer\nhoofers\nhoofing\nhoofless\nhooflike\nhoofs\nhook\nhooka\nhookah\nhookahs\nhookas\nhooked\nhooker\nhookers\nhookey\nhookeys\nhookier\nhookies\nhookiest\nhooking\nhookless\nhooklet\nhooklets\nhooklike\nhooknose\nhooknoses\nhooks\nhookup\nhookups\nhookworm\nhookworms\nhooky\nhoolie\nhooligan\nhooliganism\nhooliganisms\nhooligans\nhooly\nhoop\nhooped\nhooper\nhoopers\nhooping\nhoopla\nhooplas\nhoopless\nhooplike\nhoopoe\nhoopoes\nhoopoo\nhoopoos\nhoops\nhoopster\nhoopsters\nhoorah\nhoorahed\nhoorahing\nhoorahs\nhooray\nhoorayed\nhooraying\nhoorays\nhoosegow\nhoosegows\nhoosgow\nhoosgows\nhoot\nhootch\nhootches\nhooted\nhootenannies\nhootenanny\nhooter\nhooters\nhooting\nhoots\nhooves\nhop\nhope\nhoped\nhopeful\nhopefully\nhopefulness\nhopefuls\nhopeless\nhopelessly\nhopelessness\nhoper\nhopers\nhopes\nhophead\nhopheads\nhoping\nhoplite\nhoplites\nhoplitic\nhopped\nhopper\nhoppers\nhopping\nhopple\nhoppled\nhopples\nhoppling\nhops\nhopsack\nhopsacks\nhopscotch\nhoptoad\nhoptoads\nhora\nhorah\nhorahs\nhoral\nhorary\nhoras\nhorde\nhorded\nhordein\nhordeins\nhordes\nhording\nhorehound\nhorehounds\nhorizon\nhorizons\nhorizontal\nhorizontally\nhorizontals\nhormonal\nhormone\nhormones\nhormonic\nhorn\nhornbeam\nhornbeams\nhornbill\nhornbills\nhornbook\nhornbooks\nhorned\nhornedness\nhornet\nhornets\nhornfels\nhornier\nhorniest\nhornily\nhorniness\nhorning\nhornito\nhornitos\nhornless\nhornlessness\nhornlike\nhornpipe\nhornpipes\nhornpout\nhornpouts\nhorns\nhorntail\nhorntails\nhornworm\nhornworms\nhornwort\nhornworts\nhorny\nhorologe\nhorologes\nhorologic\nhorologies\nhorologist\nhorologists\nhorology\nhoroscope\nhoroscopes\nhorrendous\nhorrendously\nhorrent\nhorrible\nhorribleness\nhorribles\nhorribly\nhorrid\nhorridly\nhorridness\nhorrific\nhorrifically\nhorrified\nhorrifies\nhorrify\nhorrifying\nhorrifyingly\nhorror\nhorrors\nhorse\nhorseback\nhorsebacks\nhorsecar\nhorsecars\nhorsed\nhorseflies\nhorsefly\nhorsehair\nhorsehairs\nhorsehide\nhorsehides\nhorseiest\nhorselaugh\nhorselaughs\nhorselike\nhorseman\nhorsemanship\nhorsemen\nhorseplay\nhorseplayer\nhorseplayers\nhorsepower\nhorseradish\nhorseradishes\nhorses\nhorseshoe\nhorseshoed\nhorseshoer\nhorseshoers\nhorseshoes\nhorseshoing\nhorsetail\nhorsetails\nhorsewhip\nhorsewhipped\nhorsewhipper\nhorsewhippers\nhorsewhipping\nhorsewhips\nhorsewoman\nhorsewomen\nhorsey\nhorsier\nhorsiest\nhorsily\nhorsing\nhorst\nhorste\nhorstes\nhorsts\nhorsy\nhortative\nhortatively\nhorticultural\nhorticulturally\nhorticulture\nhorticultures\nhorticulturist\nhorticulturists\nhosanna\nhosannaed\nhosannaing\nhosannas\nhose\nhosed\nhosel\nhosels\nhosen\nhoses\nhosier\nhosieries\nhosiers\nhosiery\nhosing\nhospice\nhospices\nhospitable\nhospitably\nhospital\nhospitalities\nhospitality\nhospitalization\nhospitalizations\nhospitalize\nhospitalized\nhospitalizes\nhospitalizing\nhospitals\nhospitia\nhospodar\nhospodars\nhost\nhosta\nhostage\nhostages\nhosted\nhostel\nhosteled\nhosteler\nhostelers\nhosteling\nhostelries\nhostelry\nhostels\nhostess\nhostessed\nhostesses\nhostessing\nhostile\nhostilely\nhostiles\nhostilities\nhostility\nhosting\nhostler\nhostlers\nhostly\nhosts\nhot\nhotbed\nhotbeds\nhotblood\nhotbloods\nhotbox\nhotboxes\nhotcake\nhotcakes\nhotch\nhotched\nhotches\nhotching\nhotchpot\nhotchpots\nhotdog\nhotdogged\nhotdogging\nhotdogs\nhotel\nhotelier\nhoteliers\nhotelman\nhotelmen\nhotels\nhotfoot\nhotfooted\nhotfooting\nhotfoots\nhothead\nhotheaded\nhotheadedly\nhotheadedness\nhotheads\nhothouse\nhothouses\nhotly\nhotness\nhotnesses\nhotpress\nhotpressed\nhotpresses\nhotpressing\nhotrod\nhotrods\nhots\nhotshot\nhotshots\nhotspur\nhotspurs\nhotted\nhotter\nhottest\nhotting\nhottish\nhoudah\nhoudahs\nhound\nhounded\nhounder\nhounders\nhounding\nhounds\nhour\nhourglass\nhourglasses\nhouri\nhouris\nhourly\nhours\nhouse\nhouseboat\nhouseboats\nhouseboy\nhouseboys\nhousebreak\nhousebreaker\nhousebreakers\nhousebreaking\nhousebreaks\nhousebroke\nhousebroken\nhouseclean\nhousecleaned\nhousecleaning\nhousecleans\nhousecoat\nhousecoats\nhoused\nhousedress\nhousedresses\nhouseflies\nhousefly\nhouseful\nhousefuls\nhousehold\nhouseholder\nhouseholders\nhouseholds\nhousekeeper\nhousekeepers\nhousekeeping\nhousel\nhouseled\nhouselights\nhouseling\nhouselled\nhouselling\nhousels\nhousemaid\nhousemaids\nhouseman\nhousemen\nhousemother\nhousemothers\nhouser\nhousers\nhouses\nhousetop\nhousetops\nhousewarming\nhousewarmings\nhousewife\nhousewifely\nhousewifery\nhousewives\nhousework\nhousing\nhousings\nhove\nhovel\nhoveled\nhoveling\nhovelled\nhovelling\nhovels\nhover\nhovered\nhoverer\nhoverers\nhovering\nhoveringly\nhovers\nhow\nhowbeit\nhowdah\nhowdahs\nhowdie\nhowdies\nhowdy\nhowe\nhowes\nhowever\nhowf\nhowff\nhowffs\nhowfs\nhowitzer\nhowitzers\nhowk\nhowked\nhowking\nhowks\nhowl\nhowled\nhowler\nhowlers\nhowlet\nhowlets\nhowling\nhowlingly\nhowls\nhows\nhowsoever\nhoy\nhoya\nhoyas\nhoyden\nhoydened\nhoydening\nhoydenish\nhoydens\nhoyle\nhoyles\nhoys\nhuarache\nhuaraches\nhuaracho\nhuarachos\nhub\nhubbies\nhubbub\nhubbubs\nhubby\nhubcap\nhubcaps\nhubris\nhubrises\nhubristic\nhubs\nhuck\nhuckle\nhuckleberries\nhuckleberry\nhuckles\nhucks\nhuckster\nhuckstered\nhuckstering\nhucksterism\nhucksterisms\nhucksters\nhuddle\nhuddled\nhuddler\nhuddlers\nhuddles\nhuddling\nhue\nhued\nhueless\nhues\nhuff\nhuffed\nhuffier\nhuffiest\nhuffily\nhuffiness\nhuffing\nhuffish\nhuffs\nhuffy\nhug\nhuge\nhugely\nhugeness\nhugenesses\nhugeous\nhuger\nhugest\nhuggable\nhugged\nhugger\nhuggers\nhugging\nhugs\nhuh\nhuic\nhula\nhulas\nhulk\nhulked\nhulkier\nhulkiest\nhulking\nhulks\nhulky\nhull\nhullabaloo\nhullabaloos\nhulled\nhuller\nhullers\nhulling\nhullo\nhulloa\nhulloaed\nhulloaing\nhulloas\nhulloed\nhulloes\nhulloing\nhullos\nhulls\nhum\nhuman\nhumane\nhumanely\nhumaneness\nhumaner\nhumanest\nhumanise\nhumanised\nhumanises\nhumanising\nhumanism\nhumanisms\nhumanist\nhumanistic\nhumanistically\nhumanists\nhumanitarian\nhumanitarianism\nhumanitarianisms\nhumanitarians\nhumanities\nhumanity\nhumanization\nhumanizations\nhumanize\nhumanized\nhumanizer\nhumanizers\nhumanizes\nhumanizing\nhumankind\nhumanlike\nhumanly\nhumanness\nhumanoid\nhumanoids\nhumans\nhumate\nhumates\nhumble\nhumbled\nhumbleness\nhumbler\nhumblers\nhumbles\nhumblest\nhumbling\nhumbly\nhumbug\nhumbugged\nhumbugging\nhumbugs\nhumdrum\nhumdrums\nhumectant\nhumectants\nhumeral\nhumerals\nhumeri\nhumerus\nhumic\nhumid\nhumidified\nhumidifier\nhumidifiers\nhumidifies\nhumidify\nhumidifying\nhumidities\nhumidity\nhumidly\nhumidor\nhumidors\nhumified\nhumiliate\nhumiliated\nhumiliates\nhumiliating\nhumiliatingly\nhumiliation\nhumiliations\nhumilities\nhumility\nhummable\nhummed\nhummer\nhummers\nhumming\nhummingbird\nhummingbirds\nhummock\nhummocks\nhummocky\nhumor\nhumoral\nhumored\nhumoresque\nhumorful\nhumoring\nhumorist\nhumoristic\nhumorists\nhumorless\nhumorlessness\nhumorous\nhumorously\nhumorousness\nhumors\nhumour\nhumoured\nhumouring\nhumours\nhump\nhumpback\nhumpbacked\nhumpbacks\nhumped\nhumph\nhumphed\nhumphing\nhumphs\nhumpier\nhumpiest\nhumping\nhumpless\nhumps\nhumpy\nhums\nhumus\nhumuses\nhun\nhunch\nhunchback\nhunchbacked\nhunchbacks\nhunched\nhunches\nhunching\nhundred\nhundredfold\nhundreds\nhundredth\nhundredths\nhundredweight\nhundredweights\nhung\nhunger\nhungered\nhungering\nhungers\nhungrier\nhungriest\nhungrily\nhungriness\nhungry\nhunh\nhunk\nhunker\nhunkered\nhunkering\nhunkers\nhunkies\nhunks\nhunky\nhunnish\nhuns\nhunt\nhuntable\nhunted\nhuntedly\nhunter\nhunters\nhunting\nhuntings\nhuntress\nhuntresses\nhunts\nhuntsman\nhuntsmen\nhup\nhurdies\nhurdle\nhurdled\nhurdler\nhurdlers\nhurdles\nhurdling\nhurds\nhurl\nhurled\nhurler\nhurlers\nhurley\nhurleys\nhurlies\nhurling\nhurlings\nhurls\nhurly\nhurrah\nhurrahed\nhurrahing\nhurrahs\nhurray\nhurrayed\nhurraying\nhurrays\nhurricane\nhurricanes\nhurried\nhurriedly\nhurriedness\nhurrier\nhurriers\nhurries\nhurry\nhurrying\nhurryingly\nhurst\nhurt\nhurter\nhurters\nhurtful\nhurtfully\nhurtfulness\nhurting\nhurtle\nhurtled\nhurtles\nhurtless\nhurtling\nhurts\nhusband\nhusbanded\nhusbander\nhusbanders\nhusbanding\nhusbandman\nhusbandmen\nhusbandries\nhusbandry\nhusbands\nhush\nhushaby\nhushed\nhushedly\nhushes\nhushful\nhushing\nhusk\nhusked\nhusker\nhuskers\nhuskier\nhuskies\nhuskiest\nhuskily\nhuskiness\nhusking\nhuskings\nhusklike\nhusks\nhusky\nhussar\nhussars\nhussies\nhussy\nhustings\nhustle\nhustled\nhustler\nhustlers\nhustles\nhustling\nhuswife\nhuswifes\nhuswives\nhut\nhutch\nhutched\nhutches\nhutching\nhutlike\nhutment\nhutments\nhuts\nhutted\nhutting\nhutzpa\nhutzpah\nhutzpahs\nhutzpas\nhuzza\nhuzzaed\nhuzzah\nhuzzahed\nhuzzahing\nhuzzahs\nhuzzaing\nhuzzas\nhwan\nhyacinth\nhyacinths\nhyaena\nhyaenas\nhyaenic\nhyalin\nhyaline\nhyalines\nhyalins\nhyalite\nhyalites\nhyalogen\nhyalogens\nhyaloid\nhyaloids\nhybrid\nhybridization\nhybridizations\nhybridize\nhybridized\nhybridizer\nhybridizers\nhybridizes\nhybridizing\nhybrids\nhybris\nhybrises\nhydatid\nhydatids\nhydra\nhydracid\nhydracids\nhydrae\nhydragog\nhydragogs\nhydrangea\nhydrangeas\nhydrant\nhydranth\nhydranths\nhydrants\nhydras\nhydrase\nhydrases\nhydrate\nhydrated\nhydrates\nhydrating\nhydration\nhydrations\nhydrator\nhydrators\nhydraulic\nhydraulically\nhydraulics\nhydria\nhydriae\nhydric\nhydrid\nhydride\nhydrides\nhydrids\nhydro\nhydrocarbon\nhydrocarbons\nhydrochloric\nhydrochloride\nhydrochlorides\nhydrodynamic\nhydrodynamically\nhydrodynamics\nhydroelectric\nhydroelectricities\nhydroelectricity\nhydrofoil\nhydrofoils\nhydrogel\nhydrogels\nhydrogen\nhydrogenate\nhydrogenated\nhydrogenates\nhydrogenating\nhydrogenation\nhydrogenations\nhydrogenous\nhydrogens\nhydroid\nhydroids\nhydrokinetic\nhydrokinetics\nhydrologic\nhydrological\nhydrologically\nhydrologies\nhydrologist\nhydrologists\nhydrology\nhydrolytic\nhydrolyzable\nhydrolyze\nhydrolyzed\nhydrolyzes\nhydrolyzing\nhydromel\nhydromels\nhydrometer\nhydrometers\nhydrometric\nhydrometrical\nhydrometries\nhydrometry\nhydronic\nhydrophobia\nhydrophobias\nhydrophobic\nhydrophobicities\nhydrophobicity\nhydropic\nhydroplane\nhydroplaned\nhydroplanes\nhydroplaning\nhydroponic\nhydroponically\nhydroponics\nhydrops\nhydropses\nhydropsies\nhydropsy\nhydros\nhydrosol\nhydrosols\nhydrostatic\nhydrostatically\nhydrostatics\nhydrotherapy\nhydrous\nhydroxide\nhydroxides\nhydroxy\nhydroxyl\nhydroxyls\nhyena\nhyenas\nhyenic\nhyenine\nhyenoid\nhyetal\nhygeist\nhygeists\nhygieist\nhygieists\nhygiene\nhygienes\nhygienic\nhygienically\nhygienics\nhygienist\nhygienists\nhygrometer\nhygrometers\nhygrometric\nhygroscope\nhygroscopes\nhygroscopic\nhygroscopically\nhygroscopicities\nhygroscopicity\nhying\nhyla\nhylas\nhylozoic\nhymen\nhymenal\nhymeneal\nhymeneals\nhymenia\nhymenial\nhymenium\nhymeniums\nhymens\nhymn\nhymnal\nhymnals\nhymnaries\nhymnary\nhymnbook\nhymnbooks\nhymned\nhymning\nhymnist\nhymnists\nhymnless\nhymnlike\nhymnodies\nhymnody\nhymnologies\nhymnology\nhymns\nhyoid\nhyoidal\nhyoidean\nhyoids\nhyoscine\nhyoscines\nhyp\nhype\nhyped\nhyper\nhyperactive\nhyperactivities\nhyperactivity\nhyperbola\nhyperbolae\nhyperbolas\nhyperbole\nhyperboles\nhyperbolic\nhyperbolically\nhypercritic\nhypercritical\nhypercritically\nhypercriticism\nhypercriticisms\nhypergol\nhypergols\nhyperon\nhyperons\nhyperope\nhyperopes\nhypersensitive\nhypersensitivities\nhypersensitivity\nhypertension\nhypertensions\nhyperventilation\nhyperventilations\nhypes\nhypha\nhyphae\nhyphal\nhyphemia\nhyphemias\nhyphen\nhyphenate\nhyphenated\nhyphenates\nhyphenating\nhyphenation\nhyphenations\nhyphened\nhyphening\nhyphenless\nhyphens\nhypnic\nhypnoid\nhypnoses\nhypnosis\nhypnotic\nhypnotically\nhypnotics\nhypnotism\nhypnotisms\nhypnotist\nhypnotists\nhypnotizability\nhypnotizable\nhypnotize\nhypnotized\nhypnotizes\nhypnotizing\nhypo\nhypoacid\nhypochondria\nhypochondriac\nhypochondriacal\nhypochondriacally\nhypochondriacs\nhypochondrias\nhypocrisies\nhypocrisy\nhypocrite\nhypocrites\nhypocritical\nhypocritically\nhypoderm\nhypodermal\nhypodermic\nhypodermically\nhypodermics\nhypoderms\nhypoed\nhypogea\nhypogeal\nhypogean\nhypogene\nhypogeum\nhypogynies\nhypogyny\nhypoing\nhyponea\nhyponeas\nhyponoia\nhyponoias\nhypopnea\nhypopneas\nhypopyon\nhypopyons\nhypos\nhypotenuse\nhypotenuses\nhypothalamic\nhypothalamus\nhypothec\nhypothecate\nhypothecated\nhypothecates\nhypothecating\nhypothecation\nhypothecations\nhypothecator\nhypothecators\nhypothecs\nhypotheses\nhypothesis\nhypothesize\nhypothesized\nhypothesizes\nhypothesizing\nhypothetical\nhypothetically\nhypoxia\nhypoxias\nhypoxic\nhyps\nhyraces\nhyracoid\nhyracoids\nhyrax\nhyraxes\nhyson\nhysons\nhyssop\nhyssops\nhysterectomies\nhysterectomy\nhystereses\nhysteresis\nhysteretic\nhysteria\nhysterias\nhysteric\nhysterical\nhysterically\nhysterics\nhyte\ni\niamb\niambi\niambic\niambics\niambs\niambus\niambuses\niatric\niatrical\nibex\nibexes\nibices\nibidem\nibis\nibises\nice\niceberg\nicebergs\niceblink\niceblinks\niceboat\niceboats\nicebound\nicebox\niceboxes\nicebreaker\nicebreakers\nicecap\nicecaps\niced\nicefall\nicefalls\nicehouse\nicehouses\nicekhana\nicekhanas\niceless\nicelike\niceman\nicemen\nices\nich\nichneumon\nichneumons\nichnite\nichnites\nichor\nichorous\nichors\nichs\nichthyic\nichthyological\nichthyologically\nichthyologist\nichthyologists\nichthyology\nicicle\nicicled\nicicles\nicier\niciest\nicily\niciness\nicinesses\nicing\nicings\nick\nicker\nickers\nickier\nickiest\nicky\nicon\nicones\niconic\niconical\niconically\niconoclasm\niconoclasms\niconoclast\niconoclastic\niconoclastically\niconoclasts\niconographer\niconographers\niconographic\niconographical\niconographically\niconographies\niconography\nicons\nicteric\nicterics\nicterus\nicteruses\nictic\nictus\nictuses\nicy\nid\nidea\nideal\nidealess\nidealise\nidealised\nidealises\nidealising\nidealism\nidealisms\nidealist\nidealistic\nidealistically\nidealists\nidealities\nideality\nidealization\nidealizations\nidealize\nidealized\nidealizer\nidealizers\nidealizes\nidealizing\nideally\nidealogies\nidealogy\nideals\nideas\nideate\nideated\nideates\nideating\nideation\nideational\nideations\nideative\nidem\nidentic\nidentical\nidentically\nidenticalness\nidenties\nidentifiable\nidentifiably\nidentification\nidentifications\nidentified\nidentifier\nidentifiers\nidentifies\nidentify\nidentifying\nidentities\nidentity\nideogram\nideogramic\nideogrammatic\nideogrammic\nideograms\nideograph\nideographic\nideographically\nideographs\nideologic\nideological\nideologically\nideologies\nideologist\nideologists\nideologue\nideologues\nideology\nides\nidiocies\nidiocy\nidiographic\nidiolect\nidiolects\nidiom\nidiomatic\nidiomatically\nidiomaticness\nidioms\nidiopathic\nidiosyncrasies\nidiosyncrasy\nidiosyncratic\nidiosyncratically\nidiot\nidiotic\nidiotically\nidioticalness\nidiotism\nidiotisms\nidiots\nidle\nidled\nidleness\nidlenesses\nidler\nidlers\nidles\nidlesse\nidlesses\nidlest\nidling\nidly\nidocrase\nidocrases\nidol\nidolater\nidolaters\nidolatries\nidolatrous\nidolatrously\nidolatrousness\nidolatry\nidolise\nidolised\nidoliser\nidolisers\nidolises\nidolising\nidolism\nidolisms\nidolization\nidolizations\nidolize\nidolized\nidolizer\nidolizers\nidolizes\nidolizing\nidols\nidoneities\nidoneity\nidoneous\nids\nidyl\nidylist\nidylists\nidyll\nidyllic\nidyllically\nidyllist\nidyllists\nidylls\nidyls\nif\niffier\niffiest\niffiness\niffinesses\niffy\nifs\nigloo\nigloos\niglu\niglus\nignatia\nignatias\nigneous\nignescent\nignified\nignifies\nignify\nignifying\nignitable\nignite\nignited\nigniter\nigniters\nignites\nigniting\nignition\nignitions\nignitor\nignitors\nignitron\nignitrons\nignobility\nignoble\nignobleness\nignobly\nignominies\nignominious\nignominiously\nignominiousness\nignominy\nignorable\nignoramus\nignoramuses\nignorance\nignorances\nignorant\nignorantly\nignore\nignored\nignorer\nignorers\nignores\nignoring\niguana\niguanas\niguanian\niguanians\nihram\nihrams\nikebana\nikebanas\nikon\nikons\nilea\nileac\nileal\nileitides\nileitis\nileum\nileus\nileuses\nilex\nilexes\nilia\niliac\niliad\niliads\nilial\nilium\nilk\nilka\nilks\nill\nillation\nillations\nillative\nillatives\nillegal\nillegalities\nillegality\nillegalization\nillegalizations\nillegalize\nillegalized\nillegalizes\nillegalizing\nillegally\nillegibility\nillegible\nillegibly\nillegitimacies\nillegitimacy\nillegitimate\nillegitimately\nilliberal\nilliberalism\nilliberality\nilliberally\nilliberalness\nillicit\nillicitly\nillimitability\nillimitable\nillimitableness\nillimitably\nillinium\nilliniums\nilliquid\nilliquidity\nillite\nilliteracies\nilliteracy\nilliterate\nilliterately\nilliterateness\nilliterates\nillites\nillitic\nillness\nillnesses\nillogic\nillogical\nillogicalities\nillogicality\nillogically\nillogicalness\nillogics\nills\nillume\nillumed\nillumes\nilluminable\nilluminance\nilluminances\nilluminate\nilluminated\nilluminates\nilluminati\nilluminating\nilluminatingly\nillumination\nilluminations\nilluminative\nilluminator\nilluminators\nillumine\nillumined\nillumines\nilluming\nillumining\nilluminism\nilluminisms\nilluminist\nilluminists\nillusion\nillusional\nillusionary\nillusionism\nillusionist\nillusionistic\nillusionistically\nillusionists\nillusions\nillusive\nillusively\nillusiveness\nillusorily\nillusoriness\nillusory\nillustrate\nillustrated\nillustrates\nillustrating\nillustration\nillustrational\nillustrations\nillustrative\nillustratively\nillustrator\nillustrators\nillustrious\nillustriously\nillustriousness\nilluvia\nilluvial\nilluvium\nilluviums\nilly\nilmenite\nilmenites\nimage\nimaged\nimageries\nimagery\nimages\nimaginable\nimaginableness\nimaginably\nimaginal\nimaginaries\nimaginarily\nimaginariness\nimaginary\nimagination\nimaginations\nimaginative\nimaginatively\nimaginativeness\nimagine\nimagined\nimaginer\nimaginers\nimagines\nimaging\nimagining\nimagism\nimagisms\nimagist\nimagistic\nimagistically\nimagists\nimago\nimagoes\nimam\nimamate\nimamates\nimams\nimaret\nimarets\nimaum\nimaums\nimbalance\nimbalances\nimbalm\nimbalmed\nimbalmer\nimbalmers\nimbalming\nimbalms\nimbark\nimbarked\nimbarking\nimbarks\nimbecile\nimbeciles\nimbecilic\nimbecilities\nimbecility\nimbed\nimbedded\nimbedding\nimbeds\nimbibe\nimbibed\nimbiber\nimbibers\nimbibibes\nimbibing\nimbibition\nimbibitions\nimbitter\nimbittered\nimbittering\nimbitters\nimblaze\nimblazed\nimblazes\nimblazing\nimbodied\nimbodies\nimbody\nimbodying\nimbolden\nimboldened\nimboldening\nimboldens\nimbosom\nimbosomed\nimbosoming\nimbosoms\nimbower\nimbowered\nimbowering\nimbowers\nimbricate\nimbricated\nimbricates\nimbricating\nimbrication\nimbrications\nimbroglio\nimbroglios\nimbrown\nimbrowned\nimbrowning\nimbrowns\nimbrue\nimbrued\nimbrues\nimbruing\nimbrute\nimbruted\nimbrutes\nimbruting\nimbue\nimbued\nimbues\nimbuing\nimid\nimide\nimides\nimidic\nimido\nimids\nimine\nimines\nimino\nimitable\nimitableness\nimitate\nimitated\nimitates\nimitating\nimitation\nimitations\nimitative\nimitatively\nimitativeness\nimitator\nimitators\nimmaculacy\nimmaculate\nimmaculately\nimmane\nimmanence\nimmanences\nimmanencies\nimmanency\nimmanent\nimmanently\nimmaterial\nimmaterialism\nimmaterialist\nimmaterialists\nimmaterialities\nimmateriality\nimmaterialize\nimmaterialized\nimmaterializes\nimmaterializing\nimmature\nimmaturely\nimmatures\nimmaturity\nimmeasurable\nimmeasurableness\nimmeasurably\nimmediacies\nimmediacy\nimmediate\nimmediately\nimmediateness\nimmemorial\nimmemorially\nimmense\nimmensely\nimmenseness\nimmenser\nimmensest\nimmensities\nimmensity\nimmensurable\nimmerge\nimmerged\nimmergence\nimmergences\nimmerges\nimmerging\nimmerse\nimmersed\nimmerses\nimmersible\nimmersing\nimmersion\nimmersions\nimmesh\nimmeshed\nimmeshes\nimmeshing\nimmethodical\nimmethodically\nimmies\nimmigrant\nimmigrants\nimmigrate\nimmigrated\nimmigrates\nimmigrating\nimmigration\nimmigrational\nimmigrations\nimminence\nimminences\nimminencies\nimminency\nimminent\nimminently\nimmingle\nimmingled\nimmingles\nimmingling\nimmiscibility\nimmiscible\nimmiscibly\nimmitigable\nimmitigableness\nimmitigably\nimmix\nimmixed\nimmixes\nimmixing\nimmixture\nimmobile\nimmobility\nimmobilization\nimmobilizations\nimmobilize\nimmobilized\nimmobilizer\nimmobilizers\nimmobilizes\nimmobilizing\nimmoderacies\nimmoderacy\nimmoderate\nimmoderately\nimmoderateness\nimmoderation\nimmoderations\nimmodest\nimmodesties\nimmodestly\nimmodesty\nimmolate\nimmolated\nimmolates\nimmolating\nimmolation\nimmolations\nimmolator\nimmolators\nimmoral\nimmoralist\nimmoralists\nimmoralities\nimmorality\nimmorally\nimmortal\nimmortalities\nimmortality\nimmortalization\nimmortalizations\nimmortalize\nimmortalized\nimmortalizer\nimmortalizers\nimmortalizes\nimmortalizing\nimmortally\nimmortals\nimmotile\nimmovabilities\nimmovability\nimmovable\nimmovableness\nimmovables\nimmovably\nimmune\nimmunes\nimmunise\nimmunised\nimmunises\nimmunising\nimmunities\nimmunity\nimmunization\nimmunizations\nimmunize\nimmunized\nimmunizes\nimmunizing\nimmunogenic\nimmunologic\nimmunological\nimmunologically\nimmunologist\nimmunologists\nimmunology\nimmure\nimmured\nimmurement\nimmurements\nimmures\nimmuring\nimmutability\nimmutable\nimmutableness\nimmutably\nimmy\nimp\nimpact\nimpacted\nimpacter\nimpacters\nimpacting\nimpaction\nimpactions\nimpactive\nimpactor\nimpactors\nimpacts\nimpaint\nimpainted\nimpainting\nimpaints\nimpair\nimpaired\nimpairer\nimpairers\nimpairing\nimpairment\nimpairments\nimpairs\nimpala\nimpalas\nimpale\nimpaled\nimpalement\nimpalements\nimpaler\nimpalers\nimpales\nimpaling\nimpalpability\nimpalpable\nimpalpably\nimpanel\nimpaneled\nimpaneling\nimpanelled\nimpanelling\nimpanels\nimparities\nimparity\nimpark\nimparked\nimparking\nimparks\nimpart\nimpartation\nimpartations\nimparted\nimparter\nimparters\nimpartial\nimpartialities\nimpartiality\nimpartially\nimpartible\nimpartibly\nimparting\nimpartment\nimpartments\nimparts\nimpassability\nimpassable\nimpassableness\nimpassably\nimpasse\nimpasses\nimpassibility\nimpassible\nimpassibly\nimpassion\nimpassioned\nimpassioning\nimpassions\nimpassive\nimpassively\nimpassiveness\nimpassivities\nimpassivity\nimpaste\nimpasted\nimpastes\nimpasting\nimpasto\nimpastos\nimpatience\nimpatiens\nimpatient\nimpatiently\nimpavid\nimpawn\nimpawned\nimpawning\nimpawns\nimpeach\nimpeachable\nimpeached\nimpeacher\nimpeachers\nimpeaches\nimpeaching\nimpeachment\nimpeachments\nimpearl\nimpearled\nimpearling\nimpearls\nimpeccability\nimpeccable\nimpeccably\nimpecuniosity\nimpecunious\nimpecuniously\nimpecuniousness\nimped\nimpedance\nimpedances\nimpede\nimpeded\nimpeder\nimpeders\nimpedes\nimpediment\nimpedimenta\nimpediments\nimpeding\nimpel\nimpelled\nimpeller\nimpellers\nimpelling\nimpellor\nimpellors\nimpels\nimpend\nimpended\nimpending\nimpends\nimpenetrability\nimpenetrable\nimpenetrably\nimpenitence\nimpenitences\nimpenitent\nimpenitently\nimperative\nimperatively\nimperativeness\nimperatives\nimperceptible\nimperceptibly\nimperceptive\nimperceptiveness\nimperfect\nimperfection\nimperfections\nimperfective\nimperfectly\nimperfectness\nimperforate\nimperia\nimperial\nimperialism\nimperialisms\nimperialist\nimperialistic\nimperialistically\nimperialists\nimperially\nimperials\nimperil\nimperiled\nimperiling\nimperilled\nimperilling\nimperilment\nimperilments\nimperils\nimperious\nimperiously\nimperiousness\nimperishabilities\nimperishability\nimperishable\nimperishableness\nimperishably\nimperium\nimperiums\nimpermanence\nimpermanences\nimpermanency\nimpermanent\nimpermanently\nimpermeabilities\nimpermeability\nimpermeable\nimpermissibility\nimpermissible\nimpermissibly\nimpersonal\nimpersonalities\nimpersonality\nimpersonalization\nimpersonalizations\nimpersonalize\nimpersonalized\nimpersonalizes\nimpersonalizing\nimpersonally\nimpersonate\nimpersonated\nimpersonates\nimpersonating\nimpersonation\nimpersonations\nimpersonator\nimpersonators\nimpertinence\nimpertinences\nimpertinencies\nimpertinency\nimpertinent\nimpertinently\nimperturbabilities\nimperturbability\nimperturbable\nimperturbably\nimpervious\nimperviously\nimperviousness\nimpetigo\nimpetigos\nimpetrate\nimpetrated\nimpetrates\nimpetrating\nimpetration\nimpetrations\nimpetuosities\nimpetuosity\nimpetuous\nimpetuously\nimpetuousness\nimpetus\nimpetuses\nimphee\nimphees\nimpi\nimpieties\nimpiety\nimping\nimpinge\nimpinged\nimpingement\nimpingements\nimpinger\nimpingers\nimpinges\nimpinging\nimpings\nimpious\nimpiously\nimpis\nimpish\nimpishly\nimpishness\nimplacabilities\nimplacability\nimplacable\nimplacably\nimplant\nimplantable\nimplantation\nimplantations\nimplanted\nimplanter\nimplanters\nimplanting\nimplants\nimplausibilities\nimplausibility\nimplausible\nimplausibly\nimplead\nimpleaded\nimpleading\nimpleads\nimpledge\nimpledged\nimpledges\nimpledging\nimplement\nimplementation\nimplementations\nimplemented\nimplementing\nimplements\nimplicate\nimplicated\nimplicates\nimplicating\nimplication\nimplications\nimplicative\nimplicatively\nimplicativeness\nimplicit\nimplicitly\nimplicitness\nimplied\nimplies\nimplode\nimploded\nimplodes\nimploding\nimplore\nimplored\nimplorer\nimplorers\nimplores\nimploring\nimploringly\nimplosion\nimplosions\nimplosive\nimply\nimplying\nimpolicies\nimpolicy\nimpolite\nimpolitely\nimpoliteness\nimpolitic\nimpolitical\nimpolitically\nimpoliticly\nimponderabilities\nimponderability\nimponderable\nimponderables\nimponderably\nimpone\nimponed\nimpones\nimponing\nimporous\nimport\nimportable\nimportance\nimportances\nimportant\nimportantly\nimportation\nimportations\nimported\nimporter\nimporters\nimporting\nimports\nimportunate\nimportunately\nimportunateness\nimportune\nimportuned\nimportunely\nimportuner\nimportuners\nimportunes\nimportuning\nimportunities\nimportunity\nimpose\nimposed\nimposer\nimposers\nimposes\nimposing\nimposingly\nimposition\nimpositions\nimpossibilities\nimpossibility\nimpossible\nimpossibleness\nimpossibly\nimpost\nimposted\nimposter\nimposters\nimposting\nimpostor\nimpostors\nimposts\nimposture\nimpostures\nimpotence\nimpotences\nimpotencies\nimpotency\nimpotent\nimpotently\nimpotents\nimpound\nimpounded\nimpounding\nimpoundment\nimpoundments\nimpounds\nimpoverish\nimpoverished\nimpoverisher\nimpoverishers\nimpoverishes\nimpoverishing\nimpoverishment\nimpoverishments\nimpower\nimpowered\nimpowering\nimpowers\nimpracticabilities\nimpracticability\nimpracticable\nimpracticably\nimpractical\nimpracticalities\nimpracticality\nimprecate\nimprecated\nimprecates\nimprecating\nimprecation\nimprecations\nimprecatory\nimprecise\nimprecisely\nimpreciseness\nimprecision\nimprecisions\nimpregn\nimpregnability\nimpregnable\nimpregnableness\nimpregnably\nimpregnate\nimpregnated\nimpregnates\nimpregnating\nimpregnation\nimpregnations\nimpregnator\nimpregnators\nimpregned\nimpregning\nimpregns\nimpresa\nimpresario\nimpresarios\nimpresas\nimprese\nimpreses\nimpress\nimpressed\nimpresses\nimpressibility\nimpressible\nimpressibly\nimpressing\nimpression\nimpressionability\nimpressionable\nimpressionably\nimpressionism\nimpressionisms\nimpressionist\nimpressionistic\nimpressionists\nimpressions\nimpressive\nimpressively\nimpressiveness\nimpressment\nimpressments\nimprest\nimprests\nimprimatur\nimprimaturs\nimprimis\nimprint\nimprinted\nimprinter\nimprinters\nimprinting\nimprints\nimprison\nimprisonable\nimprisoned\nimprisoning\nimprisonment\nimprisonments\nimprisons\nimprobabilities\nimprobability\nimprobable\nimprobably\nimpromptu\nimproper\nimproperly\nimproperness\nimproprieties\nimpropriety\nimprovability\nimprovable\nimprovably\nimprove\nimproved\nimprovement\nimprovements\nimprover\nimprovers\nimproves\nimprovidence\nimprovidences\nimprovident\nimprovidently\nimproving\nimprovisation\nimprovisational\nimprovisationally\nimprovisations\nimprovisator\nimprovisatorial\nimprovisators\nimprovisatory\nimprovise\nimprovised\nimproviser\nimprovisers\nimprovises\nimprovising\nimprovisor\nimprovisors\nimprudence\nimprudences\nimprudent\nimprudently\nimps\nimpudence\nimpudences\nimpudent\nimpudently\nimpugn\nimpugnable\nimpugned\nimpugner\nimpugners\nimpugning\nimpugns\nimpuissance\nimpuissant\nimpulse\nimpulsed\nimpulses\nimpulsing\nimpulsion\nimpulsions\nimpulsive\nimpulsively\nimpulsiveness\nimpulsivity\nimpunities\nimpunity\nimpure\nimpurely\nimpureness\nimpurities\nimpurity\nimputabilities\nimputability\nimputable\nimputation\nimputations\nimputative\nimputatively\nimpute\nimputed\nimputer\nimputers\nimputes\nimputing\nin\ninabilities\ninability\ninaccessibility\ninaccessible\ninaccessibly\ninaccuracies\ninaccuracy\ninaccurate\ninaccurately\ninaction\ninactions\ninactivate\ninactivated\ninactivates\ninactivating\ninactivation\ninactivations\ninactive\ninactively\ninactiveness\ninactivity\ninadequacies\ninadequacy\ninadequate\ninadequately\ninadequateness\ninadmissibility\ninadmissible\ninadmissibly\ninadvertence\ninadvertences\ninadvertencies\ninadvertency\ninadvertent\ninadvertently\ninadvisability\ninadvisable\ninalienabilities\ninalienability\ninalienable\ninalienably\ninalterability\ninalterable\ninalterableness\ninalterably\ninamorata\ninane\ninanely\ninaner\ninanes\ninanest\ninanimate\ninanimately\ninanimateness\ninanities\ninanition\ninanity\ninapparent\ninapplicability\ninapplicable\ninapplicably\ninapposite\ninappositely\ninappositeness\ninappreciable\ninappreciably\ninappreciative\ninappreciatively\ninappreciativeness\ninapproachable\ninappropriate\ninappropriately\ninappropriateness\ninapt\ninaptitude\ninaptly\ninaptness\ninarable\ninarch\ninarched\ninarches\ninarching\ninarguable\ninarguably\ninarm\ninarmed\ninarming\ninarms\ninarticulacy\ninarticulate\ninarticulately\ninarticulateness\ninartistic\ninartistically\ninattention\ninattentions\ninattentive\ninattentively\ninattentiveness\ninaudibility\ninaudible\ninaudibly\ninaugural\ninaugurals\ninaugurate\ninaugurated\ninaugurates\ninaugurating\ninauguration\ninaugurations\ninaugurator\ninaugurators\ninauspicious\ninauspiciously\ninauspiciousness\ninbeing\ninbeings\ninboard\ninboards\ninborn\ninbound\ninbounds\ninbred\ninbreed\ninbreeding\ninbreeds\ninbuilt\ninburst\ninbursts\ninby\ninbye\nincage\nincaged\nincages\nincaging\nincalculability\nincalculable\nincalculably\nincandesce\nincandesced\nincandescence\nincandescent\nincandescently\nincandesces\nincandescing\nincantation\nincantational\nincantations\nincantatory\nincapabilities\nincapability\nincapable\nincapableness\nincapably\nincapacitate\nincapacitated\nincapacitates\nincapacitating\nincapacitation\nincapacitations\nincapacitator\nincapacitators\nincapacities\nincapacity\nincarcerate\nincarcerated\nincarcerates\nincarcerating\nincarceration\nincarcerations\nincarcerator\nincarcerators\nincarnate\nincarnated\nincarnates\nincarnating\nincarnation\nincarnations\nincase\nincased\nincases\nincasing\nincaution\nincautions\nincautious\nincautiously\nincautiousness\nincendiaries\nincendiary\nincense\nincensed\nincenses\nincensing\nincentive\nincentives\nincept\nincepted\nincepting\ninception\ninceptions\ninceptive\ninceptively\ninceptor\ninceptors\nincepts\nincertitude\nincertitudes\nincessant\nincessantly\nincest\nincests\nincestuous\nincestuously\nincestuousness\ninch\ninched\ninches\ninching\ninchmeal\ninchoate\ninchoately\ninchoateness\ninchworm\ninchworms\nincidence\nincidences\nincident\nincidental\nincidentally\nincidentals\nincidents\nincinerate\nincinerated\nincinerates\nincinerating\nincineration\nincinerations\nincinerator\nincinerators\nincipience\nincipiences\nincipiencies\nincipiency\nincipient\nincipiently\nincipit\nincipits\nincise\nincised\nincises\nincising\nincision\nincisions\nincisive\nincisively\nincisiveness\nincisor\nincisors\nincisory\nincisure\nincisures\nincitant\nincitants\nincitation\nincitations\nincite\nincited\nincitement\nincitements\ninciter\ninciters\nincites\ninciting\nincivil\nincivilities\nincivility\ninclasp\ninclasped\ninclasping\ninclasps\ninclemencies\ninclemency\ninclement\ninclemently\ninclinable\ninclination\ninclinational\ninclinations\nincline\ninclined\nincliner\nincliners\ninclines\ninclining\ninclinometer\ninclinometers\ninclip\ninclipped\ninclipping\ninclips\ninclose\ninclosed\nincloser\ninclosers\nincloses\ninclosing\nincludable\ninclude\nincluded\nincludes\nincludible\nincluding\ninclusion\ninclusions\ninclusive\ninclusively\ninclusiveness\nincog\nincognita\nincognitas\nincognito\nincognitos\nincognizance\nincognizant\nincogs\nincoherence\nincoherences\nincoherent\nincoherently\nincombustibility\nincombustible\nincome\nincomer\nincomers\nincomes\nincoming\nincomings\nincommensurabilities\nincommensurability\nincommensurable\nincommensurably\nincommensurate\nincommode\nincommoded\nincommodes\nincommoding\nincommodious\nincommodiously\nincommodiousness\nincommodity\nincommunicability\nincommunicable\nincommunicably\nincommunicado\nincommunicative\nincomparability\nincomparable\nincomparably\nincompatibilities\nincompatibility\nincompatible\nincompatibles\nincompatibly\nincompetence\nincompetences\nincompetencies\nincompetency\nincompetent\nincompetently\nincompetents\nincomplete\nincompletely\nincompleteness\nincompliant\nincomprehensibilities\nincomprehensibility\nincomprehensible\nincomprehensibleness\nincomprehensibly\nincompressibilities\nincompressibility\nincompressible\nincompressibly\nincomputable\nincomputably\ninconceivabilities\ninconceivability\ninconceivable\ninconceivableness\ninconceivably\ninconclusive\ninconclusively\ninconclusiveness\ninconformities\ninconformity\nincongruence\nincongruences\nincongruent\nincongruently\nincongruities\nincongruity\nincongruous\nincongruously\nincongruousness\ninconnu\ninconnus\ninconsecutive\ninconsequence\ninconsequences\ninconsequent\ninconsequential\ninconsequentiality\ninconsequentially\ninconsequently\ninconsiderable\ninconsiderableness\ninconsiderably\ninconsiderate\ninconsiderately\ninconsiderateness\ninconsideration\ninconsiderations\ninconsistence\ninconsistencies\ninconsistency\ninconsistent\ninconsistently\ninconsolable\ninconsolableness\ninconsolably\ninconsonance\ninconsonant\ninconspicuous\ninconspicuously\ninconspicuousness\ninconstancies\ninconstancy\ninconstant\ninconstantly\ninconsumable\ninconsumably\nincontestability\nincontestable\nincontestably\nincontinence\nincontinences\nincontinencies\nincontinency\nincontinent\nincontinently\nincontrollable\nincontrovertible\nincontrovertibly\ninconvenience\ninconvenienced\ninconveniences\ninconveniencies\ninconveniencing\ninconveniency\ninconvenient\ninconveniently\ninconvertibility\ninconvertible\ninconvertibly\nincony\nincoordination\nincoordinations\nincorporable\nincorporate\nincorporated\nincorporates\nincorporating\nincorporation\nincorporations\nincorporative\nincorporator\nincorporators\nincorporeal\nincorporeally\nincorpse\nincorpsed\nincorpses\nincorpsing\nincorrect\nincorrectly\nincorrectness\nincorrigibility\nincorrigible\nincorrigibleness\nincorrigibly\nincorruptibility\nincorruptible\nincorruptibly\nincreasable\nincrease\nincreased\nincreaser\nincreasers\nincreases\nincreasing\nincreasingly\nincreate\nincredibilities\nincredibility\nincredible\nincredibleness\nincredibly\nincredulities\nincredulity\nincredulous\nincredulously\nincrement\nincremental\nincrementalism\nincrementalist\nincrementalists\nincrementally\nincrements\nincriminate\nincriminated\nincriminates\nincriminating\nincrimination\nincriminations\nincriminatory\nincross\nincrosses\nincrust\nincrustation\nincrustations\nincrusted\nincrusting\nincrusts\nincubate\nincubated\nincubates\nincubating\nincubation\nincubational\nincubations\nincubative\nincubator\nincubators\nincubatory\nincubi\nincubus\nincubuses\nincudal\nincudate\nincudes\ninculcate\ninculcated\ninculcates\ninculcating\ninculcation\ninculcations\ninculcator\ninculcators\ninculpable\ninculpate\ninculpated\ninculpates\ninculpating\ninculpation\ninculpations\ninculpatory\nincult\nincumbencies\nincumbency\nincumbent\nincumbents\nincumber\nincumbered\nincumbering\nincumbers\nincur\nincurable\nincurably\nincuriosity\nincurious\nincuriously\nincuriousness\nincurred\nincurrence\nincurring\nincurs\nincursion\nincursions\nincurve\nincurved\nincurves\nincurving\nincus\nincuse\nincused\nincuses\nincusing\nindaba\nindabas\nindagate\nindagated\nindagates\nindagating\nindamin\nindamine\nindamines\nindamins\nindebted\nindebtedness\nindecencies\nindecency\nindecent\nindecenter\nindecentest\nindecently\nindecipherable\nindecision\nindecisions\nindecisive\nindecisively\nindecisiveness\nindeclinable\nindecorous\nindecorously\nindecorousness\nindecorum\nindecorums\nindeed\nindefatigability\nindefatigable\nindefatigableness\nindefatigably\nindefeasibility\nindefeasible\nindefeasibly\nindefectibility\nindefectible\nindefectibly\nindefensibility\nindefensible\nindefensibly\nindefinability\nindefinable\nindefinableness\nindefinably\nindefinite\nindefinitely\nindefiniteness\nindefinites\nindelibility\nindelible\nindelibly\nindelicacies\nindelicacy\nindelicate\nindelicately\nindelicateness\nindemnification\nindemnifications\nindemnified\nindemnifier\nindemnifiers\nindemnifies\nindemnify\nindemnifying\nindemnities\nindemnity\nindemonstrable\nindemonstrably\nindene\nindenes\nindent\nindentation\nindentations\nindented\nindenter\nindenters\nindenting\nindention\nindentions\nindentor\nindentors\nindents\nindenture\nindentured\nindentures\nindenturing\nindependence\nindependencies\nindependency\nindependent\nindependently\nindependents\nindescribable\nindescribableness\nindescribably\nindestructibilities\nindestructibility\nindestructible\nindestructibleness\nindestructibly\nindeterminable\nindeterminably\nindeterminacies\nindeterminacy\nindeterminate\nindeterminately\nindeterminateness\nindetermination\nindeterminations\nindeterminism\nindeterminist\nindeterministic\nindeterminists\nindevout\nindex\nindexation\nindexed\nindexer\nindexers\nindexes\nindexing\nindican\nindicans\nindicant\nindicants\nindicate\nindicated\nindicates\nindicating\nindication\nindicational\nindications\nindicative\nindicatively\nindicator\nindicators\nindicatory\nindices\nindicia\nindicias\nindicium\nindiciums\nindict\nindictable\nindicted\nindictee\nindictees\nindicter\nindicters\nindicting\nindiction\nindictions\nindictment\nindictments\nindictor\nindictors\nindicts\nindie\nindifference\nindifferences\nindifferent\nindifferentism\nindifferentist\nindifferentists\nindifferently\nindigen\nindigence\nindigences\nindigene\nindigenes\nindigenous\nindigenously\nindigenousness\nindigens\nindigent\nindigents\nindigestibility\nindigestible\nindigestion\nindigestions\nindign\nindignant\nindignantly\nindignation\nindignations\nindignities\nindignity\nindignly\nindigo\nindigoes\nindigoid\nindigoids\nindigos\nindirect\nindirection\nindirections\nindirectly\nindirectness\nindiscernible\nindisciplinable\nindiscipline\nindisciplined\nindiscoverable\nindiscreet\nindiscreetly\nindiscreetness\nindiscrete\nindiscretion\nindiscretions\nindiscriminate\nindiscriminately\nindiscriminateness\nindiscriminating\nindiscriminatingly\nindiscrimination\nindiscriminations\nindiscussible\nindispensability\nindispensable\nindispensableness\nindispensables\nindispensably\nindispose\nindisposed\nindisposes\nindisposing\nindisposition\nindispositions\nindisputable\nindisputableness\nindisputably\nindissolubility\nindissoluble\nindissolubleness\nindissolubly\nindistinct\nindistinctive\nindistinctly\nindistinctness\nindistinguishability\nindistinguishable\nindistinguishableness\nindistinguishably\nindite\nindited\ninditer\ninditers\nindites\ninditing\nindium\nindiums\nindividual\nindividualism\nindividualisms\nindividualist\nindividualistic\nindividualistically\nindividualists\nindividualities\nindividuality\nindividualization\nindividualizations\nindividualize\nindividualized\nindividualizes\nindividualizing\nindividually\nindividuals\nindividuate\nindividuated\nindividuates\nindividuating\nindividuation\nindividuations\nindivisibility\nindivisible\nindivisibly\nindocile\nindoctrinate\nindoctrinated\nindoctrinates\nindoctrinating\nindoctrination\nindoctrinations\nindoctrinator\nindoctrinators\nindol\nindole\nindolence\nindolences\nindolent\nindolently\nindoles\nindols\nindomitabilities\nindomitability\nindomitable\nindomitableness\nindomitably\nindoor\nindoors\nindorse\nindorsed\nindorsee\nindorsees\nindorser\nindorsers\nindorses\nindorsing\nindorsor\nindorsors\nindow\nindowed\nindowing\nindows\nindoxyl\nindoxyls\nindraft\nindrafts\nindrawn\nindri\nindris\nindubitability\nindubitable\nindubitableness\nindubitably\ninduce\ninduced\ninducement\ninducements\ninducer\ninducers\ninduces\ninducibility\ninducible\ninducing\ninduct\ninductance\ninductances\ninducted\ninductee\ninductees\ninducting\ninduction\ninductions\ninductive\ninductively\ninductor\ninductors\ninducts\nindue\nindued\nindues\ninduing\nindulge\nindulged\nindulgence\nindulgenced\nindulgences\nindulgencing\nindulgent\nindulgently\nindulger\nindulgers\nindulges\nindulging\nindulin\ninduline\nindulines\nindulins\nindult\nindults\nindurate\nindurated\nindurates\nindurating\ninduration\nindurations\nindurative\nindusia\nindusial\nindusium\nindustrial\nindustrialism\nindustrialist\nindustrialists\nindustrialization\nindustrializations\nindustrialize\nindustrialized\nindustrializes\nindustrializing\nindustrially\nindustrials\nindustries\nindustrious\nindustriously\nindustriousness\nindustry\nindwell\nindwelling\nindwells\nindwelt\ninearth\ninearthed\ninearthing\ninearths\ninebriate\ninebriated\ninebriates\ninebriating\ninebriation\ninebriations\ninebriety\ninedible\ninedita\ninedited\nineducability\nineducable\nineffabilities\nineffability\nineffable\nineffableness\nineffably\nineffaceabilities\nineffaceability\nineffaceable\nineffaceably\nineffective\nineffectively\nineffectiveness\nineffectual\nineffectuality\nineffectually\nineffectualness\ninefficacies\ninefficacious\ninefficaciously\ninefficaciousness\ninefficacy\ninefficiencies\ninefficiency\ninefficient\ninefficiently\ninegalitarian\ninelastic\ninelasticity\ninelegance\ninelegant\ninelegantly\nineligibility\nineligible\nineluctability\nineluctable\nineluctably\nineludible\ninept\nineptitude\nineptitudes\nineptly\nineptness\ninequalities\ninequality\ninequitable\ninequitably\ninequities\ninequity\nineradicability\nineradicable\nineradicably\ninerrancy\ninerrant\ninert\ninertia\ninertiae\ninertial\ninertias\ninertly\ninertness\ninerts\ninescapable\ninescapably\ninessential\ninessentials\ninestimable\ninestimably\ninevitabilities\ninevitability\ninevitable\ninevitableness\ninevitably\ninexact\ninexactitude\ninexactitudes\ninexactly\ninexactness\ninexcusabilities\ninexcusability\ninexcusable\ninexcusableness\ninexcusably\ninexhaustibility\ninexhaustible\ninexhaustibleness\ninexhaustibly\ninexistence\ninexistent\ninexorabilities\ninexorability\ninexorable\ninexorableness\ninexorably\ninexpedience\ninexpediences\ninexpediencies\ninexpediency\ninexpedient\ninexpediently\ninexpensive\ninexpensively\ninexpensiveness\ninexperience\ninexperienced\ninexperiences\ninexpert\ninexpertly\ninexpertness\ninexperts\ninexpiable\ninexpiably\ninexplicabilities\ninexplicability\ninexplicable\ninexplicableness\ninexplicably\ninexplicit\ninexpressibility\ninexpressible\ninexpressibleness\ninexpressibly\ninexpressive\ninexpressively\ninexpressiveness\ninexpugnable\ninexpugnably\ninextinguishable\ninextinguishably\ninextricability\ninextricable\ninextricably\ninfallibility\ninfallible\ninfallibleness\ninfallibly\ninfamies\ninfamous\ninfamously\ninfamy\ninfancies\ninfancy\ninfant\ninfanta\ninfantas\ninfante\ninfantes\ninfanticidal\ninfanticide\ninfanticides\ninfantile\ninfantilism\ninfantility\ninfantries\ninfantry\ninfantryman\ninfantrymen\ninfants\ninfarct\ninfarcts\ninfare\ninfares\ninfatuate\ninfatuated\ninfatuates\ninfatuating\ninfatuation\ninfatuations\ninfauna\ninfaunae\ninfaunal\ninfaunas\ninfeasibility\ninfeasible\ninfect\ninfected\ninfecter\ninfecters\ninfecting\ninfection\ninfections\ninfectious\ninfectiously\ninfectiousness\ninfective\ninfectivity\ninfector\ninfectors\ninfects\ninfecund\ninfelicities\ninfelicitous\ninfelicitously\ninfelicity\ninfeoff\ninfeoffed\ninfeoffing\ninfeoffs\ninfer\ninferable\ninference\ninferences\ninferential\ninferentially\ninferior\ninferiorities\ninferiority\ninferiorly\ninferiors\ninfernal\ninfernally\ninferno\ninfernos\ninferred\ninferrer\ninferrers\ninferring\ninfers\ninfertile\ninfertility\ninfest\ninfestation\ninfestations\ninfested\ninfester\ninfesters\ninfesting\ninfests\ninfidel\ninfidelities\ninfidelity\ninfidels\ninfield\ninfielder\ninfielders\ninfields\ninfighter\ninfighters\ninfighting\ninfiltrate\ninfiltrated\ninfiltrates\ninfiltrating\ninfiltration\ninfiltrations\ninfiltrative\ninfiltrator\ninfiltrators\ninfinite\ninfinitely\ninfiniteness\ninfinites\ninfinitesimal\ninfinitesimally\ninfinities\ninfinitival\ninfinitive\ninfinitively\ninfinitives\ninfinitude\ninfinitudes\ninfinity\ninfirm\ninfirmaries\ninfirmary\ninfirmed\ninfirming\ninfirmities\ninfirmity\ninfirmly\ninfirms\ninfix\ninfixation\ninfixations\ninfixed\ninfixes\ninfixing\ninfixion\ninfixions\ninflame\ninflamed\ninflamer\ninflamers\ninflames\ninflaming\ninflammabilities\ninflammability\ninflammable\ninflammableness\ninflammably\ninflammation\ninflammations\ninflammatorily\ninflammatory\ninflatable\ninflate\ninflated\ninflater\ninflaters\ninflates\ninflating\ninflation\ninflationary\ninflationism\ninflationist\ninflationists\ninflations\ninflator\ninflators\ninflect\ninflectable\ninflected\ninflecting\ninflection\ninflectional\ninflectionally\ninflections\ninflective\ninflects\ninflexed\ninflexibilities\ninflexibility\ninflexible\ninflexibleness\ninflexibly\ninflict\ninflicted\ninflicter\ninflicters\ninflicting\ninfliction\ninflictions\ninflictive\ninflictor\ninflictors\ninflicts\ninflight\ninflow\ninflows\ninfluence\ninfluenceable\ninfluenced\ninfluences\ninfluencing\ninfluent\ninfluential\ninfluentially\ninfluents\ninfluenza\ninflux\ninfluxes\ninfo\ninfold\ninfolded\ninfolder\ninfolders\ninfolding\ninfolds\ninform\ninformal\ninformalities\ninformality\ninformally\ninformant\ninformants\ninformation\ninformational\ninformationless\ninformations\ninformative\ninformatively\ninformativeness\ninformatory\ninformed\ninformedly\ninformer\ninformers\ninforming\ninforms\ninfos\ninfra\ninfract\ninfracted\ninfracting\ninfraction\ninfractions\ninfractor\ninfractors\ninfracts\ninfrangibility\ninfrangible\ninfrangibleness\ninfrangibly\ninfrared\ninfrareds\ninfrasonic\ninfrastructure\ninfrastructures\ninfrequence\ninfrequencies\ninfrequency\ninfrequent\ninfrequently\ninfringe\ninfringed\ninfringement\ninfringements\ninfringer\ninfringers\ninfringes\ninfringing\ninfrugal\ninfuriate\ninfuriated\ninfuriates\ninfuriating\ninfuriatingly\ninfuriation\ninfuriations\ninfuse\ninfused\ninfuser\ninfusers\ninfuses\ninfusibility\ninfusible\ninfusibleness\ninfusing\ninfusion\ninfusions\ninfusive\ningate\ningates\ningather\ningathered\ningathering\ningathers\ningenious\ningeniously\ningeniousness\ningenue\ningenues\ningenuities\ningenuity\ningenuous\ningenuously\ningenuousness\ningest\ningesta\ningested\ningestible\ningesting\ningestion\ningestive\ningests\ningle\ninglenook\ninglenooks\ningles\ninglorious\ningloriously\ningloriousness\ningoing\ningot\ningoted\ningoting\ningots\ningraft\ningrafted\ningrafting\ningrafts\ningrain\ningrained\ningrainedly\ningraining\ningrains\ningrate\ningrates\ningratiate\ningratiated\ningratiates\ningratiating\ningratiation\ningratiatory\ningratitude\ningredient\ningredients\ningress\ningresses\ningression\ningressions\ningressive\ningressiveness\ningroup\ningroups\ningrown\ningrowth\ningrowths\ninguinal\ningulf\ningulfed\ningulfing\ningulfs\ninhabit\ninhabitable\ninhabitancy\ninhabitant\ninhabitants\ninhabitation\ninhabitations\ninhabited\ninhabiter\ninhabiters\ninhabiting\ninhabits\ninhalant\ninhalants\ninhalation\ninhalations\ninhalator\ninhalators\ninhale\ninhaled\ninhaler\ninhalers\ninhales\ninhaling\ninharmonious\ninharmoniously\ninharmoniousness\ninhaul\ninhauler\ninhaulers\ninhauls\ninhere\ninhered\ninherence\ninherent\ninherently\ninheres\ninhering\ninherit\ninheritability\ninheritable\ninheritableness\ninheritably\ninheritance\ninheritances\ninherited\ninheriting\ninheritor\ninheritors\ninheritress\ninheritresses\ninheritrix\ninheritrixes\ninherits\ninhesion\ninhesions\ninhibit\ninhibited\ninhibiting\ninhibition\ninhibitions\ninhibitive\ninhibitor\ninhibitors\ninhibitory\ninhibits\ninhospitable\ninhospitableness\ninhospitably\ninhospitality\ninhuman\ninhumane\ninhumanely\ninhumanities\ninhumanity\ninhumanly\ninhumanness\ninhume\ninhumed\ninhumer\ninhumers\ninhumes\ninhuming\ninia\ninimical\ninimically\ninimitable\ninimitableness\ninimitably\ninion\niniquities\niniquitous\niniquitously\niniquitousness\niniquity\ninitial\ninitialed\ninitialing\ninitialization\ninitialize\ninitialized\ninitializes\ninitializing\ninitialled\ninitialling\ninitially\ninitials\ninitiate\ninitiated\ninitiates\ninitiating\ninitiation\ninitiations\ninitiative\ninitiatives\ninitiator\ninitiators\ninitiatory\ninject\ninjectable\ninjected\ninjecting\ninjection\ninjections\ninjector\ninjectors\ninjects\ninjudicious\ninjudiciously\ninjudiciousness\ninjunction\ninjunctions\ninjunctive\ninjure\ninjured\ninjurer\ninjurers\ninjures\ninjuries\ninjuring\ninjurious\ninjuriously\ninjuriousness\ninjury\ninjustice\ninjustices\nink\ninkberries\ninkberry\ninkblot\ninkblots\ninked\ninker\ninkers\ninkhorn\ninkhorns\ninkier\ninkiest\ninkiness\ninkinesses\ninking\ninkle\ninkles\ninkless\ninklike\ninkling\ninklings\ninkpot\ninkpots\ninks\ninkstand\ninkstands\ninkwell\ninkwells\ninkwood\ninkwoods\ninky\ninlace\ninlaced\ninlaces\ninlacing\ninlaid\ninland\ninlander\ninlanders\ninlands\ninlay\ninlayer\ninlayers\ninlaying\ninlays\ninlet\ninlets\ninletting\ninlier\ninliers\ninly\ninmate\ninmates\ninmesh\ninmeshed\ninmeshes\ninmeshing\ninmost\ninn\ninnards\ninnate\ninnately\ninnateness\ninned\ninner\ninnerly\ninnermost\ninners\ninnersole\ninnersoles\ninnervate\ninnervated\ninnervates\ninnervating\ninnervation\ninnervational\ninnervations\ninnerve\ninnerved\ninnerves\ninnerving\ninning\ninnings\ninnkeeper\ninnkeepers\ninnless\ninnocence\ninnocencies\ninnocency\ninnocent\ninnocenter\ninnocentest\ninnocently\ninnocents\ninnocuous\ninnocuously\ninnocuousness\ninnovate\ninnovated\ninnovates\ninnovating\ninnovation\ninnovational\ninnovations\ninnovative\ninnovator\ninnovators\ninnovatory\ninns\ninnuendo\ninnuendoed\ninnuendoes\ninnuendoing\ninnuendos\ninnumerable\ninnumerableness\ninnumerably\ninnumerous\ninocula\ninoculate\ninoculated\ninoculates\ninoculating\ninoculation\ninoculations\ninoculative\ninoculator\ninoculators\ninoculum\ninoculums\ninoffensive\ninoffensively\ninoffensiveness\ninoperable\ninoperative\ninoperativeness\ninopportune\ninopportunely\ninopportuneness\ninordinate\ninordinately\ninordinateness\ninorganic\ninorganically\ninosite\ninosites\ninositol\ninositols\ninpatient\ninpatients\ninphase\ninpour\ninpoured\ninpouring\ninpours\ninput\ninputs\ninputted\ninputting\ninquest\ninquests\ninquiet\ninquieted\ninquieting\ninquiets\ninquietude\ninquietudes\ninquire\ninquired\ninquirer\ninquirers\ninquires\ninquiries\ninquiring\ninquiringly\ninquiry\ninquisition\ninquisitional\ninquisitions\ninquisitive\ninquisitively\ninquisitiveness\ninquisitor\ninquisitorial\ninquisitorially\ninquisitors\ninro\ninroad\ninroads\ninrush\ninrushes\nins\ninsalubrious\ninsalubrities\ninsalubrity\ninsane\ninsanely\ninsaneness\ninsaner\ninsanest\ninsanitation\ninsanities\ninsanity\ninsatiability\ninsatiable\ninsatiableness\ninsatiably\ninsatiate\ninscribe\ninscribed\ninscriber\ninscribers\ninscribes\ninscribing\ninscription\ninscriptional\ninscriptions\ninscriptive\ninscriptively\ninscroll\ninscrolled\ninscrolling\ninscrolls\ninscrutability\ninscrutable\ninscrutableness\ninscrutably\ninsculp\ninsculped\ninsculping\ninsculps\ninseam\ninseams\ninsect\ninsectan\ninsectary\ninsecticidal\ninsecticide\ninsecticides\ninsectivore\ninsectivores\ninsectivorous\ninsects\ninsecure\ninsecurely\ninsecureness\ninsecurities\ninsecurity\ninseminate\ninseminated\ninseminates\ninseminating\ninsemination\ninseminations\ninsensate\ninsensately\ninsensateness\ninsensibilities\ninsensibility\ninsensible\ninsensibly\ninsensitive\ninsensitively\ninsensitiveness\ninsensitivities\ninsensitivity\ninsentience\ninsentient\ninseparabilities\ninseparability\ninseparable\ninseparableness\ninseparables\ninseparably\ninsert\ninserted\ninserter\ninserters\ninserting\ninsertion\ninsertional\ninsertions\ninserts\ninset\ninsets\ninsetted\ninsetter\ninsetters\ninsetting\ninsheath\ninsheathed\ninsheathing\ninsheaths\ninshore\ninshrine\ninshrined\ninshrines\ninshrining\ninside\ninsider\ninsiders\ninsides\ninsidious\ninsidiously\ninsidiousness\ninsight\ninsightful\ninsights\ninsigne\ninsignia\ninsignias\ninsignificance\ninsignificancies\ninsignificancy\ninsignificant\ninsignificantly\ninsincere\ninsincerely\ninsincerities\ninsincerity\ninsinuate\ninsinuated\ninsinuates\ninsinuating\ninsinuatingly\ninsinuation\ninsinuations\ninsinuative\ninsinuator\ninsinuators\ninsipid\ninsipidity\ninsipidly\ninsist\ninsisted\ninsistence\ninsistencies\ninsistency\ninsistent\ninsistently\ninsister\ninsisters\ninsisting\ninsists\ninsnare\ninsnared\ninsnarer\ninsnarers\ninsnares\ninsnaring\ninsobriety\ninsofar\ninsolate\ninsolated\ninsolates\ninsolating\ninsole\ninsolence\ninsolences\ninsolent\ninsolently\ninsolents\ninsoles\ninsolubilities\ninsolubility\ninsoluble\ninsolubleness\ninsolubly\ninsolvency\ninsolvent\ninsolvents\ninsomnia\ninsomniac\ninsomniacs\ninsomnias\ninsomuch\ninsouciance\ninsouciant\ninsouciantly\ninsoul\ninsouled\ninsouling\ninsouls\ninspan\ninspanned\ninspanning\ninspans\ninspect\ninspected\ninspecting\ninspection\ninspections\ninspector\ninspectors\ninspectorship\ninspectorships\ninspects\ninsphere\ninsphered\ninspheres\ninsphering\ninspiration\ninspirational\ninspirationally\ninspirations\ninspire\ninspired\ninspirer\ninspirers\ninspires\ninspiring\ninspirit\ninspirited\ninspiriting\ninspiritingly\ninspirits\ninstabilities\ninstability\ninstable\ninstal\ninstall\ninstallation\ninstallations\ninstalled\ninstaller\ninstallers\ninstalling\ninstallment\ninstallments\ninstalls\ninstalment\ninstals\ninstance\ninstanced\ninstances\ninstancies\ninstancing\ninstancy\ninstant\ninstantaneity\ninstantaneous\ninstantaneously\ninstantaneousness\ninstanter\ninstantiate\ninstantiated\ninstantiates\ninstantiating\ninstantly\ninstants\ninstar\ninstarred\ninstarring\ninstars\ninstate\ninstated\ninstates\ninstating\ninstead\ninstep\ninsteps\ninstigate\ninstigated\ninstigates\ninstigating\ninstigation\ninstigations\ninstigative\ninstigator\ninstigators\ninstil\ninstill\ninstillation\ninstillations\ninstilled\ninstiller\ninstillers\ninstilling\ninstillment\ninstillments\ninstills\ninstils\ninstinct\ninstinctive\ninstinctively\ninstincts\ninstinctual\ninstitute\ninstituted\ninstituter\ninstituters\ninstitutes\ninstituting\ninstitution\ninstitutional\ninstitutionalism\ninstitutionalist\ninstitutionalists\ninstitutionalization\ninstitutionalize\ninstitutionalized\ninstitutionalizes\ninstitutionalizing\ninstitutionally\ninstitutions\ninstitutor\ninstitutors\ninstroke\ninstrokes\ninstruct\ninstructed\ninstructing\ninstruction\ninstructional\ninstructions\ninstructive\ninstructively\ninstructiveness\ninstructor\ninstructors\ninstructorship\ninstructorships\ninstructress\ninstructresses\ninstructs\ninstrument\ninstrumental\ninstrumentalism\ninstrumentalist\ninstrumentalists\ninstrumentalities\ninstrumentality\ninstrumentally\ninstrumentation\ninstrumentations\ninstrumented\ninstrumenting\ninstruments\ninsubordinate\ninsubordinately\ninsubordinates\ninsubordination\ninsubordinations\ninsubstantial\ninsubstantiality\ninsufferable\ninsufferableness\ninsufferably\ninsufficience\ninsufficiencies\ninsufficiency\ninsufficient\ninsufficiently\ninsulant\ninsulants\ninsular\ninsularism\ninsularities\ninsularity\ninsularly\ninsulars\ninsulate\ninsulated\ninsulates\ninsulating\ninsulation\ninsulations\ninsulator\ninsulators\ninsulin\ninsulins\ninsult\ninsulted\ninsulter\ninsulters\ninsulting\ninsultingly\ninsults\ninsuperable\ninsuperably\ninsupportable\ninsupportableness\ninsupportably\ninsuppressible\ninsuppressibly\ninsurability\ninsurable\ninsurance\ninsurances\ninsurant\ninsurants\ninsure\ninsured\ninsureds\ninsurer\ninsurers\ninsures\ninsurgence\ninsurgences\ninsurgencies\ninsurgency\ninsurgent\ninsurgents\ninsuring\ninsurmountable\ninsurmountably\ninsurrection\ninsurrectional\ninsurrectionary\ninsurrectionist\ninsurrectionists\ninsurrections\ninsusceptibility\ninsusceptible\ninsusceptibly\ninswathe\ninswathed\ninswathes\ninswathing\ninswept\nintact\nintactness\nintagli\nintaglio\nintaglios\nintake\nintakes\nintangibilities\nintangibility\nintangible\nintangibleness\nintangibles\nintangibly\nintarsia\nintarsias\ninteger\nintegers\nintegrability\nintegrable\nintegral\nintegrality\nintegrally\nintegrals\nintegrate\nintegrated\nintegrates\nintegrating\nintegration\nintegrationist\nintegrationists\nintegrations\nintegrative\nintegrator\nintegrators\nintegrities\nintegrity\nintegument\nintegumentary\ninteguments\nintellect\nintellection\nintellections\nintellective\nintellects\nintellectual\nintellectualism\nintellectualisms\nintellectualist\nintellectualistic\nintellectualists\nintellectualities\nintellectuality\nintellectualization\nintellectualizations\nintellectualize\nintellectualized\nintellectualizer\nintellectualizers\nintellectualizes\nintellectualizing\nintellectually\nintellectualness\nintellectuals\nintelligence\nintelligences\nintelligent\nintelligential\nintelligently\nintelligentsia\nintelligibilities\nintelligibility\nintelligible\nintelligibleness\nintelligibly\nintemperance\nintemperances\nintemperate\nintemperately\nintemperateness\nintend\nintendant\nintendants\nintended\nintendedly\nintendedness\nintendeds\nintender\nintenders\nintending\nintendment\nintendments\nintends\nintense\nintensely\nintenseness\nintenser\nintensest\nintensification\nintensified\nintensifier\nintensifiers\nintensifies\nintensify\nintensifying\nintension\nintensional\nintensionally\nintensions\nintensities\nintensity\nintensive\nintensively\nintensiveness\nintent\nintention\nintentional\nintentionality\nintentionally\nintentions\nintently\nintentness\nintents\ninter\ninteract\ninteracted\ninteracting\ninteraction\ninteractional\ninteractions\ninteractive\ninteractively\ninteracts\ninterbred\ninterbreed\ninterbreeding\ninterbreeds\nintercalate\nintercalated\nintercalates\nintercalating\nintercalation\nintercalations\nintercede\ninterceded\ninterceder\ninterceders\nintercedes\ninterceding\nintercept\nintercepted\nintercepter\nintercepters\nintercepting\ninterception\ninterceptions\ninterceptor\ninterceptors\nintercepts\nintercession\nintercessional\nintercessions\nintercessor\nintercessors\nintercessory\ninterchange\ninterchangeability\ninterchangeable\ninterchangeableness\ninterchangeably\ninterchanged\ninterchanges\ninterchanging\nintercoastal\nintercom\nintercommunicate\nintercommunicated\nintercommunicates\nintercommunicating\nintercommunication\nintercommunications\nintercoms\ninterconnect\ninterconnected\ninterconnecting\ninterconnection\ninterconnections\ninterconnects\nintercontinental\nintercostal\nintercourse\nintercut\nintercuts\nintercutting\ninterdenominational\ninterdenominationalism\ninterdepartmental\ninterdepartmentally\ninterdependence\ninterdependencies\ninterdependency\ninterdependent\ninterdependently\ninterdict\ninterdicted\ninterdicting\ninterdiction\ninterdictions\ninterdictor\ninterdictors\ninterdicts\ninterdisciplinary\ninterest\ninterested\ninterestedly\ninteresting\ninterestingly\ninterestingness\ninterests\ninterface\ninterfaced\ninterfaces\ninterfacial\ninterfacing\ninterfaith\ninterfere\ninterfered\ninterference\ninterferences\ninterferer\ninterferers\ninterferes\ninterfering\ninterferon\ninterim\ninterims\ninterior\ninteriority\ninteriorly\ninteriors\ninterject\ninterjected\ninterjecting\ninterjection\ninterjectional\ninterjectionally\ninterjections\ninterjector\ninterjectors\ninterjectory\ninterjects\ninterlace\ninterlaced\ninterlacement\ninterlacements\ninterlaces\ninterlacing\ninterlaid\ninterlap\ninterlapped\ninterlapping\ninterlaps\ninterlard\ninterlarded\ninterlarding\ninterlards\ninterlay\ninterlaying\ninterlays\ninterleave\ninterleaved\ninterleaves\ninterleaving\ninterlinear\ninterlinearly\ninterlining\ninterlinings\ninterlock\ninterlocked\ninterlocking\ninterlocks\ninterlocutor\ninterlocutors\ninterlocutory\ninterlocutress\ninterlope\ninterloped\ninterloper\ninterlopers\ninterlopes\ninterloping\ninterlude\ninterludes\nintermarriage\nintermarriages\nintermarried\nintermarries\nintermarry\nintermarrying\nintermediacies\nintermediacy\nintermediaries\nintermediary\nintermediate\nintermediated\nintermediately\nintermediateness\nintermediates\nintermediating\nintermediation\nintermediations\ninterment\ninterments\nintermezzi\nintermezzo\nintermezzos\ninterminable\ninterminableness\ninterminably\nintermingle\nintermingled\nintermingles\nintermingling\nintermission\nintermissions\nintermit\nintermits\nintermitted\nintermittence\nintermittences\nintermittent\nintermittently\nintermitter\nintermitting\nintermix\nintermixed\nintermixes\nintermixing\nintermixture\nintermixtures\nintern\ninternal\ninternalities\ninternality\ninternalization\ninternalizations\ninternalize\ninternalized\ninternalizes\ninternalizing\ninternally\ninternals\ninternational\ninternationalism\ninternationalist\ninternationalists\ninternationalities\ninternationality\ninternationalization\ninternationalize\ninternationalized\ninternationalizes\ninternationalizing\ninternationally\ninterne\ninterned\ninternee\ninternees\ninternes\ninterning\ninternist\ninternists\ninternment\ninternments\ninterns\ninternship\ninternships\ninteroffice\ninterpenetrate\ninterpenetrated\ninterpenetrates\ninterpenetrating\ninterpenetration\ninterpenetrations\ninterpersonal\ninterpersonally\ninterplanetary\ninterplay\ninterplayed\ninterplaying\ninterplays\ninterpolate\ninterpolated\ninterpolates\ninterpolating\ninterpolation\ninterpolations\ninterpolative\ninterpolator\ninterpolators\ninterpose\ninterposed\ninterposer\ninterposers\ninterposes\ninterposing\ninterposition\ninterpositions\ninterpret\ninterpretability\ninterpretable\ninterpretation\ninterpretational\ninterpretations\ninterpretative\ninterpretatively\ninterpreted\ninterpreter\ninterpreters\ninterpreting\ninterpretive\ninterpretively\ninterprets\ninterracial\ninterred\ninterreges\ninterrelate\ninterrelated\ninterrelatedly\ninterrelatedness\ninterrelates\ninterrelating\ninterrelation\ninterrelations\ninterrelationship\ninterrelationships\ninterrex\ninterring\ninterrogate\ninterrogated\ninterrogates\ninterrogating\ninterrogation\ninterrogational\ninterrogations\ninterrogative\ninterrogatively\ninterrogatives\ninterrogator\ninterrogatories\ninterrogators\ninterrogatory\ninterrupt\ninterrupted\ninterrupter\ninterrupters\ninterruptible\ninterrupting\ninterruption\ninterruptions\ninterruptive\ninterrupts\ninters\ninterscholastic\nintersect\nintersected\nintersecting\nintersection\nintersections\nintersects\nintersex\nintersexes\nintersperse\ninterspersed\nintersperses\ninterspersing\ninterspersion\ninterspersions\ninterstate\ninterstice\ninterstices\ninterstitial\ninterstitially\nintertie\ninterties\nintertwine\nintertwined\nintertwinement\nintertwines\nintertwining\ninterurban\ninterval\nintervals\nintervene\nintervened\nintervener\ninterveners\nintervenes\nintervening\nintervenor\nintervenors\nintervention\ninterventionism\ninterventionist\ninterventionists\ninterventions\ninterview\ninterviewed\ninterviewer\ninterviewers\ninterviewing\ninterviews\ninterwar\ninterweave\ninterweaves\ninterweaving\ninterwove\ninterwoven\nintestacy\nintestate\nintestates\nintestinal\nintestinally\nintestine\nintestines\ninthral\ninthrall\ninthralled\ninthralling\ninthralls\ninthrals\ninthrone\ninthroned\ninthrones\ninthroning\ninti\nintima\nintimacies\nintimacy\nintimae\nintimal\nintimas\nintimate\nintimated\nintimately\nintimateness\nintimater\nintimaters\nintimates\nintimating\nintimation\nintimations\nintime\nintimidate\nintimidated\nintimidates\nintimidating\nintimidation\nintimidations\nintimidator\nintimidators\nintine\nintines\nintis\nintitle\nintitled\nintitles\nintitling\nintitule\nintituled\nintitules\nintituling\ninto\nintolerability\nintolerable\nintolerableness\nintolerably\nintolerance\nintolerances\nintolerant\nintolerantly\nintomb\nintombed\nintombing\nintombs\nintonate\nintonated\nintonates\nintonating\nintonation\nintonational\nintonations\nintone\nintoned\nintoner\nintoners\nintones\nintoning\nintort\nintorted\nintorting\nintorts\nintown\nintoxicant\nintoxicants\nintoxicate\nintoxicated\nintoxicatedly\nintoxicates\nintoxicating\nintoxication\nintoxications\nintractabilities\nintractability\nintractable\nintractableness\nintractably\nintrados\nintradoses\nintramural\nintramuscular\nintramuscularly\nintransigence\nintransigent\nintransigently\nintransigents\nintransitive\nintransitively\nintransitiveness\nintrant\nintrants\nintravenous\nintravenously\nintreat\nintreated\nintreating\nintreats\nintrench\nintrenched\nintrenches\nintrenching\nintrepid\nintrepidity\nintrepidly\nintrepidness\nintricacies\nintricacy\nintricate\nintricately\nintricateness\nintrigue\nintrigued\nintriguer\nintriguers\nintrigues\nintriguing\nintriguingly\nintrinsic\nintrinsical\nintrinsically\nintro\nintroduce\nintroduced\nintroducer\nintroducers\nintroduces\nintroducing\nintroduction\nintroductions\nintroductorily\nintroductory\nintrofied\nintrofies\nintrofy\nintrofying\nintroit\nintroits\nintromit\nintromits\nintromitted\nintromitting\nintrorse\nintros\nintrospect\nintrospected\nintrospecting\nintrospection\nintrospectional\nintrospectionist\nintrospectionists\nintrospections\nintrospective\nintrospectively\nintrospectiveness\nintrospects\nintroversion\nintroversive\nintrovert\nintroverted\nintroverting\nintroverts\nintrude\nintruded\nintruder\nintruders\nintrudes\nintruding\nintrusion\nintrusions\nintrusive\nintrusively\nintrusiveness\nintrust\nintrusted\nintrusting\nintrusts\nintubate\nintubated\nintubates\nintubating\nintuit\nintuitable\nintuited\nintuiting\nintuition\nintuitional\nintuitionism\nintuitionist\nintuitionists\nintuitions\nintuitive\nintuitively\nintuitiveness\nintuits\ninturn\ninturned\ninturns\nintwine\nintwined\nintwines\nintwining\nintwist\nintwisted\nintwisting\nintwists\ninulase\ninulases\ninulin\ninulins\ninundant\ninundate\ninundated\ninundates\ninundating\ninundation\ninundations\ninundator\ninundators\ninundatory\ninurbane\ninure\ninured\ninurement\ninures\ninuring\ninurn\ninurned\ninurning\ninurns\ninutile\ninutilities\ninutility\ninvade\ninvaded\ninvader\ninvaders\ninvades\ninvading\ninvalid\ninvalidate\ninvalidated\ninvalidates\ninvalidating\ninvalidation\ninvalidations\ninvalidator\ninvalidators\ninvalided\ninvaliding\ninvalidism\ninvalidity\ninvalidly\ninvalids\ninvaluable\ninvaluableness\ninvaluably\ninvariability\ninvariable\ninvariably\ninvariant\ninvariants\ninvasion\ninvasions\ninvasive\ninvected\ninvective\ninvectively\ninvectiveness\ninvectives\ninveigh\ninveighed\ninveigher\ninveighers\ninveighing\ninveighs\ninveigle\ninveigled\ninveiglement\ninveiglements\ninveigler\ninveiglers\ninveigles\ninveigling\ninvent\ninvented\ninventer\ninventers\ninventing\ninvention\ninventions\ninventive\ninventively\ninventiveness\ninventor\ninventorial\ninventorially\ninventoried\ninventories\ninventors\ninventory\ninventorying\ninvents\ninverities\ninverity\ninverse\ninversely\ninverses\ninversion\ninversions\ninversive\ninvert\ninvertebrate\ninvertebrates\ninverted\ninverter\ninverters\ninvertible\ninverting\ninvertor\ninvertors\ninverts\ninvest\ninvestable\ninvested\ninvestigate\ninvestigated\ninvestigates\ninvestigating\ninvestigation\ninvestigational\ninvestigations\ninvestigative\ninvestigator\ninvestigators\ninvestigatory\ninvesting\ninvestiture\ninvestitures\ninvestment\ninvestments\ninvestor\ninvestors\ninvests\ninveteracy\ninveterate\ninveterately\ninviable\ninviably\ninvidious\ninvidiously\ninvidiousness\ninvigorate\ninvigorated\ninvigorates\ninvigorating\ninvigoratingly\ninvigoration\ninvigorations\ninvigorator\ninvigorators\ninvincibility\ninvincible\ninvincibleness\ninvincibly\ninviolabilities\ninviolability\ninviolable\ninviolableness\ninviolably\ninviolate\ninviolately\ninviolateness\ninvirile\ninviscid\ninvisibilities\ninvisibility\ninvisible\ninvisibleness\ninvisibly\ninvital\ninvitation\ninvitational\ninvitations\ninvite\ninvited\ninvitee\ninvitees\ninviter\ninviters\ninvites\ninviting\ninvitingly\ninvocate\ninvocated\ninvocates\ninvocating\ninvocation\ninvocational\ninvocations\ninvoice\ninvoiced\ninvoices\ninvoicing\ninvoke\ninvoked\ninvoker\ninvokers\ninvokes\ninvoking\ninvoluntarily\ninvoluntariness\ninvoluntary\ninvolute\ninvoluted\ninvolutes\ninvoluting\ninvolution\ninvolutions\ninvolve\ninvolved\ninvolvedly\ninvolvement\ninvolvements\ninvolver\ninvolvers\ninvolves\ninvolving\ninvulnerabilities\ninvulnerability\ninvulnerable\ninvulnerableness\ninvulnerably\ninwall\ninwalled\ninwalling\ninwalls\ninward\ninwardly\ninwardness\ninwards\ninweave\ninweaved\ninweaves\ninweaving\ninwind\ninwinding\ninwinds\ninwound\ninwove\ninwoven\ninwrap\ninwrapped\ninwrapping\ninwraps\niodate\niodated\niodates\niodating\niodation\niodations\niodic\niodid\niodide\niodides\niodids\niodin\niodinate\niodinated\niodinates\niodinating\niodine\niodines\niodins\niodism\niodisms\niodize\niodized\niodizer\niodizers\niodizes\niodizing\niodoform\niodoforms\niodophor\niodophors\niodopsin\niodopsins\niodous\niolite\niolites\nion\nionic\nionicities\nionicity\nionics\nionise\nionised\nionises\nionising\nionium\nioniums\nionizable\nionization\nionizations\nionize\nionized\nionizer\nionizers\nionizes\nionizing\nionomer\nionomers\nionone\nionones\nionosphere\nionospheres\nionospheric\nions\niota\niotacism\niotacisms\niotas\nipecac\nipecacs\nipomoea\nipomoeas\niracund\nirade\nirades\nirascibility\nirascible\nirascibleness\nirascibly\nirate\nirately\nirater\niratest\nire\nired\nireful\nirefully\nireless\nirenic\nirenical\nirenics\nires\nirid\nirides\niridescence\niridescences\niridescent\niridescently\niridic\niridium\niridiums\nirids\niring\niris\nirised\nirises\nirising\niritic\niritis\niritises\nirk\nirked\nirking\nirks\nirksome\nirksomely\nirksomeness\niron\nironbark\nironbarks\nironclad\nironclads\nirone\nironed\nironer\nironers\nirones\nironic\nironical\nironically\nironicalness\nironies\nironing\nironings\nironist\nironists\nironlike\nironness\nironnesses\nirons\nironside\nironsides\nironstone\nironstones\nironware\nironwares\nironweed\nironweeds\nironwood\nironwoods\nironwork\nironworker\nironworkers\nironworks\nirony\nirradiate\nirradiated\nirradiates\nirradiating\nirradiation\nirradiations\nirradiative\nirradiator\nirradiators\nirrational\nirrationalism\nirrationalist\nirrationalistic\nirrationalists\nirrationalities\nirrationality\nirrationally\nirreal\nirreclaimable\nirreclaimably\nirreconcilabilities\nirreconcilability\nirreconcilable\nirreconcilableness\nirreconcilably\nirrecoverable\nirrecoverableness\nirrecoverably\nirredeemable\nirredeemably\nirreducibility\nirreducible\nirreducibly\nirrefutability\nirrefutable\nirrefutably\nirregular\nirregularities\nirregularity\nirregularly\nirregulars\nirrelevance\nirrelevances\nirrelevancies\nirrelevancy\nirrelevant\nirrelevantly\nirreligious\nirreligiously\nirremediable\nirremediableness\nirremediably\nirremovability\nirremovable\nirremovableness\nirremovably\nirreparable\nirreparableness\nirreparably\nirreplaceability\nirreplaceable\nirreplaceableness\nirreplaceably\nirrepressibility\nirrepressible\nirrepressibly\nirreproachability\nirreproachable\nirreproachableness\nirreproachably\nirresistibility\nirresistible\nirresistibleness\nirresistibly\nirresolute\nirresolutely\nirresoluteness\nirresolution\nirrespective\nirresponsibilities\nirresponsibility\nirresponsible\nirresponsibleness\nirresponsibly\nirretrievability\nirretrievable\nirretrievably\nirreverence\nirreverences\nirreverent\nirreverently\nirreversibility\nirreversible\nirreversibly\nirrevocability\nirrevocable\nirrevocableness\nirrevocably\nirrigate\nirrigated\nirrigates\nirrigating\nirrigation\nirrigations\nirrigator\nirrigators\nirritability\nirritable\nirritableness\nirritably\nirritant\nirritants\nirritate\nirritated\nirritates\nirritating\nirritatingly\nirritation\nirritations\nirritative\nirrupt\nirrupted\nirrupting\nirruption\nirruptions\nirruptive\nirruptively\nirrupts\nis\nisagoge\nisagoges\nisagogic\nisagogics\nisarithm\nisarithms\nisatin\nisatine\nisatines\nisatinic\nisatins\nisba\nisbas\nischemia\nischemias\nischemic\nischia\nischial\nischium\nisinglass\nislamizations\nisland\nislanded\nislander\nislanders\nislanding\nislands\nisle\nisled\nisleless\nisles\nislet\nislets\nisling\nism\nisms\nisobar\nisobare\nisobares\nisobaric\nisobars\nisobath\nisobaths\nisocheim\nisocheims\nisochime\nisochimes\nisochor\nisochore\nisochores\nisochors\nisochron\nisochrons\nisoclinal\nisocline\nisoclines\nisoclinic\nisocracies\nisocracy\nisodose\nisogamies\nisogamy\nisogenic\nisogenies\nisogeny\nisogloss\nisoglosses\nisogon\nisogonal\nisogonals\nisogone\nisogones\nisogonic\nisogonics\nisogonies\nisogons\nisogony\nisogram\nisograms\nisograph\nisographs\nisogriv\nisogrivs\nisohel\nisohels\nisohyet\nisohyets\nisolable\nisolate\nisolated\nisolates\nisolating\nisolation\nisolationism\nisolationist\nisolationists\nisolations\nisolator\nisolators\nisolead\nisoleads\nisoline\nisolines\nisolog\nisologs\nisologue\nisologues\nisomer\nisomeric\nisomerism\nisomerisms\nisomers\nisometric\nisometrically\nisometrics\nisometries\nisometry\nisomorph\nisomorphs\nisonomic\nisonomies\nisonomy\nisophote\nisophotes\nisopleth\nisopleths\nisopod\nisopodan\nisopodans\nisopods\nisoprene\nisoprenes\nisosceles\nisospin\nisospins\nisospories\nisospory\nisostasies\nisostasy\nisotach\nisotachs\nisothere\nisotheres\nisotherm\nisothermal\nisothermally\nisotherms\nisotone\nisotones\nisotonic\nisotope\nisotopes\nisotopic\nisotopies\nisotopy\nisotropic\nisotropies\nisotropy\nisotype\nisotypes\nisotypic\nisozyme\nisozymes\nisozymic\nissei\nisseis\nissuable\nissuably\nissuance\nissuances\nissuant\nissue\nissued\nissueless\nissuer\nissuers\nissues\nissuing\nisthmi\nisthmian\nisthmians\nisthmic\nisthmoid\nisthmus\nisthmuses\nistle\nistles\nit\nitalic\nitalicization\nitalicizations\nitalicize\nitalicized\nitalicizes\nitalicizing\nitalics\nitch\nitched\nitches\nitchier\nitchiest\nitchiness\nitching\nitchings\nitchy\nitem\nitemed\niteming\nitemization\nitemizations\nitemize\nitemized\nitemizer\nitemizers\nitemizes\nitemizing\nitems\niterance\niterances\niterant\niterate\niterated\niterates\niterating\niteration\niterations\niterative\niteratively\niterum\nither\nitinerant\nitinerantly\nitinerants\nitineraries\nitinerary\nitinerate\nitinerated\nitinerates\nitinerating\nitineration\nitinerations\nits\nitself\nivied\nivies\nivories\nivory\nivy\nivylike\niwis\nixia\nixias\nixodid\nixodids\nixora\nixtle\nixtles\nizar\nizars\nizzard\nizzards\njab\njabbed\njabber\njabbered\njabberer\njabberers\njabbering\njabbers\njabbing\njabiru\njabirus\njabot\njabots\njabs\njacal\njacales\njacals\njacamar\njacamars\njacana\njacanas\njacinth\njacinthe\njacinthes\njacinths\njack\njackal\njackals\njackaroo\njackaroos\njackass\njackasses\njackboot\njackboots\njackdaw\njackdaws\njacked\njacker\njackeroo\njackeroos\njackers\njacket\njacketed\njacketing\njackets\njackfish\njackfishes\njackhammer\njackhammers\njackies\njacking\njackknife\njackknifed\njackknifes\njackknifing\njackknives\njackleg\njacklegs\njackpot\njackpots\njackrabbit\njackrabbits\njacks\njackscrew\njackscrews\njackstay\njackstays\njackstraw\njackstraws\njacky\njacobin\njacobins\njacobus\njacobuses\njaconet\njaconets\njacquard\njacquards\njaculate\njaculated\njaculates\njaculating\njade\njaded\njadedly\njadedness\njadeite\njadeites\njades\njading\njadish\njadishly\njaditic\njaeger\njaegers\njag\njager\njagers\njagg\njaggaries\njaggary\njagged\njaggeder\njaggedest\njaggedly\njaggedness\njagger\njaggeries\njaggers\njaggery\njaggheries\njagghery\njaggier\njaggiest\njagging\njaggs\njaggy\njagless\njagra\njagras\njags\njaguar\njaguars\njail\njailbait\njailbird\njailbirds\njailbreak\njailbreaks\njailed\njailer\njailers\njailing\njailor\njailors\njails\njake\njakes\njalap\njalapic\njalapin\njalapins\njalaps\njalop\njalopies\njaloppies\njaloppy\njalops\njalopy\njalousie\njalousies\njam\njamb\njambe\njambeau\njambeaux\njambed\njambes\njambing\njamboree\njamborees\njambs\njammed\njammer\njammers\njamming\njams\njane\njanes\njangle\njangled\njangler\njanglers\njangles\njangling\njaniform\njanisaries\njanisary\njanitor\njanitorial\njanitors\njanizaries\njanizary\njanty\njapan\njapanize\njapanized\njapanizes\njapanizing\njapanned\njapanner\njapanners\njapanning\njapans\njape\njaped\njaper\njaperies\njapers\njapery\njapes\njaping\njapingly\njaponica\njaponicas\njar\njardiniere\njardinieres\njarful\njarfuls\njargon\njargoned\njargonel\njargonels\njargoning\njargonize\njargonized\njargonizes\njargonizing\njargons\njargoon\njargoons\njarina\njarinas\njarl\njarldom\njarldoms\njarls\njarosite\njarosites\njarovize\njarovized\njarovizes\njarovizing\njarrah\njarrahs\njarred\njarring\njarringly\njars\njarsful\njarvey\njarveys\njasmine\njasmines\njasper\njaspers\njaspery\njassid\njassids\njato\njatos\njauk\njauked\njauking\njauks\njaunce\njaunced\njaunces\njauncing\njaundice\njaundiced\njaundices\njaundicing\njaunt\njaunted\njauntier\njauntiest\njauntily\njauntiness\njaunting\njaunts\njaunty\njaup\njauped\njauping\njaups\njava\njavas\njavelin\njavelina\njavelinas\njavelined\njavelining\njavelins\njaw\njawan\njawans\njawbone\njawboned\njawbones\njawboning\njawbreaker\njawbreakers\njawed\njawing\njawlike\njawline\njawlines\njaws\njay\njaybird\njaybirds\njaygee\njaygees\njays\njayvee\njayvees\njaywalk\njaywalked\njaywalker\njaywalkers\njaywalking\njaywalks\njazz\njazzed\njazzer\njazzers\njazzes\njazzier\njazziest\njazzily\njazziness\njazzing\njazzman\njazzmen\njazzy\njealous\njealousies\njealously\njealousness\njealousy\njean\njeans\njebel\njebels\njee\njeed\njeeing\njeep\njeepers\njeeps\njeer\njeered\njeerer\njeerers\njeering\njeeringly\njeers\njees\njeez\njefe\njefes\njehad\njehads\njehu\njehus\njejuna\njejunal\njejune\njejunely\njejunities\njejunity\njejunum\njell\njelled\njellied\njellies\njellified\njellifies\njellify\njellifying\njelling\njells\njelly\njellyfish\njellyfishes\njellying\njellylike\njelutong\njelutongs\njemadar\njemadars\njemidar\njemidars\njemmied\njemmies\njemmy\njemmying\njennet\njennets\njennies\njenny\njeon\njeopard\njeoparded\njeopardies\njeoparding\njeopardize\njeopardized\njeopardizes\njeopardizing\njeopards\njeopardy\njerboa\njerboas\njereed\njereeds\njeremiad\njeremiads\njerid\njerids\njerk\njerked\njerker\njerkers\njerkier\njerkies\njerkiest\njerkily\njerkin\njerkiness\njerking\njerkins\njerks\njerky\njeroboam\njeroboams\njerreed\njerreeds\njerrican\njerricans\njerrid\njerrids\njerries\njerry\njerrycan\njerrycans\njersey\njerseyed\njerseys\njess\njessamine\njessant\njesse\njessed\njesses\njessing\njest\njested\njester\njesters\njestful\njesting\njestingly\njestings\njests\njesuit\njesuitic\njesuitical\njesuitically\njesuitism\njesuitries\njesuitry\njesuits\njet\njetbead\njetbeads\njete\njetes\njetliner\njetliners\njeton\njetons\njetport\njetports\njets\njetsam\njetsams\njetsom\njetsoms\njetted\njettied\njetties\njetting\njettison\njettisoned\njettisoning\njettisons\njetton\njettons\njetty\njettying\njeu\njeux\njew\njewed\njewel\njeweled\njeweler\njewelers\njeweling\njewelled\njeweller\njewellers\njewellike\njewelling\njewelries\njewelry\njewels\njewfish\njewfishes\njewing\njews\njezail\njezails\njezebel\njezebels\njib\njibb\njibbed\njibber\njibbers\njibbing\njibboom\njibbooms\njibbs\njibe\njibed\njiber\njibers\njibes\njibing\njibingly\njibs\njiff\njiffies\njiffs\njiffy\njig\njigaboo\njigaboos\njigged\njigger\njiggered\njiggering\njiggers\njigging\njiggle\njiggled\njiggles\njigglier\njiggliest\njiggling\njiggly\njigs\njigsaw\njigsawed\njigsawing\njigsawn\njigsaws\njihad\njihads\njill\njillion\njillions\njills\njilt\njilted\njilter\njilters\njilting\njilts\njiminy\njimjams\njimmied\njimmies\njimminy\njimmy\njimmying\njimp\njimper\njimpest\njimply\njimpy\njimsonweed\njimsonweeds\njin\njingal\njingall\njingalls\njingals\njingko\njingkoes\njingle\njingled\njingler\njinglers\njingles\njinglier\njingliest\njingling\njingly\njingo\njingoes\njingoish\njingoism\njingoisms\njingoist\njingoistic\njingoistically\njingoists\njink\njinked\njinker\njinkers\njinking\njinks\njinn\njinnee\njinni\njinns\njins\njinx\njinxed\njinxes\njinxing\njipijapa\njipijapas\njism\njisms\njitney\njitneys\njitter\njitterbug\njitterbugged\njitterbugging\njitterbugs\njittered\njittering\njitters\njittery\njiujitsu\njiujitsus\njiujutsu\njiujutsus\njive\njived\njiver\njives\njiving\njlao\njnana\njnanas\njo\njoannes\njob\njobbed\njobber\njobberies\njobbers\njobbery\njobbing\njobholder\njobholders\njobless\njoblessness\njobs\njock\njockey\njockeyed\njockeying\njockeys\njocko\njockos\njocks\njockstrap\njockstraps\njocose\njocosely\njocosities\njocosity\njocular\njocularities\njocularity\njocularly\njocund\njocundity\njocundly\njodhpur\njodhpurs\njoe\njoes\njoey\njoeys\njog\njogged\njogger\njoggers\njogging\njoggle\njoggled\njoggler\njogglers\njoggles\njoggling\njogs\njohannes\njohn\njohnboat\njohnboats\njohnnies\njohnny\njohns\njoin\njoinable\njoinder\njoinders\njoined\njoiner\njoineries\njoiners\njoinery\njoining\njoinings\njoins\njoint\njointed\njointer\njointers\njointing\njointly\njoints\njointure\njointured\njointures\njointuring\njoist\njoisted\njoisting\njoists\njojoba\njojobas\njoke\njoked\njoker\njokers\njokes\njokester\njokesters\njokey\njoking\njokingly\njoky\njole\njoles\njollied\njollier\njollies\njolliest\njollified\njollifies\njollify\njollifying\njollily\njollities\njollity\njolly\njollying\njolt\njolted\njolter\njolters\njoltier\njoltiest\njoltily\njolting\njolts\njolty\njones\njongleur\njongleurs\njonquil\njonquils\njoram\njorams\njordan\njordans\njorum\njorums\njoseph\njosephs\njosh\njoshed\njosher\njoshers\njoshes\njoshing\njoss\njosses\njostle\njostled\njostler\njostlers\njostles\njostling\njot\njota\njotas\njots\njotted\njotting\njottings\njotty\njoual\njouk\njouked\njouking\njouks\njoule\njoules\njounce\njounced\njounces\njouncier\njounciest\njouncing\njouncy\njournal\njournalese\njournalism\njournalist\njournalistic\njournalistically\njournalists\njournalize\njournalized\njournalizes\njournalizing\njournals\njourney\njourneyed\njourneyer\njourneyers\njourneying\njourneyman\njourneymen\njourneys\njoust\njousted\njouster\njousters\njousting\njousts\njovial\njoviality\njovially\njovialties\njovialty\njow\njowar\njowed\njowing\njowl\njowled\njowlier\njowliest\njowls\njowly\njows\njoy\njoyance\njoyances\njoyed\njoyful\njoyfuller\njoyfullest\njoyfully\njoyfulness\njoying\njoyless\njoylessly\njoylessness\njoyous\njoyously\njoyousness\njoypop\njoypopped\njoypopping\njoypops\njoyride\njoyrider\njoyriders\njoyrides\njoyriding\njoys\njoystick\njoysticks\njuba\njubas\njubbah\njubbahs\njube\njubes\njubhah\njubhahs\njubilance\njubilant\njubilantly\njubilate\njubilated\njubilates\njubilating\njubilation\njubilations\njubile\njubilee\njubilees\njubiles\njudas\njudases\njudder\njuddered\njuddering\njudders\njudge\njudged\njudgement\njudgemental\njudgements\njudger\njudgers\njudges\njudgeship\njudgeships\njudging\njudgment\njudgmental\njudgments\njudicatories\njudicatory\njudicature\njudicatures\njudicial\njudicially\njudiciaries\njudiciary\njudicious\njudiciously\njudiciousness\njudo\njudoist\njudoists\njudoka\njudokas\njudos\njug\njuga\njugal\njugate\njugful\njugfuls\njugged\njuggernaut\njuggernauts\njugging\njuggle\njuggled\njuggler\njuggleries\njugglers\njugglery\njuggles\njuggling\njugglings\njughead\njugheads\njugs\njugsful\njugula\njugular\njugulars\njugulate\njugulated\njugulates\njugulating\njugulum\njugum\njugums\njuice\njuiced\njuicer\njuicers\njuices\njuicier\njuiciest\njuicily\njuiciness\njuicing\njuicy\njujitsu\njujitsus\njuju\njujube\njujubes\njujuism\njujuisms\njujuist\njujuists\njujus\njujutsu\njujutsus\njuke\njukebox\njukeboxes\njuked\njukes\njuking\njulep\njuleps\njulienne\njuliennes\njumble\njumbled\njumbler\njumblers\njumbles\njumbling\njumbo\njumbos\njumbuck\njumbucks\njump\njumped\njumper\njumpers\njumpier\njumpiest\njumpily\njumpiness\njumping\njumpoff\njumpoffs\njumps\njumpy\njun\njunco\njuncoes\njuncos\njunction\njunctional\njunctions\njuncture\njunctures\njungle\njungles\njunglier\njungliest\njungly\njunior\njuniors\njuniper\njunipers\njunk\njunked\njunker\njunkers\njunket\njunketed\njunketeer\njunketeers\njunketer\njunketers\njunketing\njunkets\njunkie\njunkier\njunkies\njunkiest\njunking\njunkman\njunkmen\njunks\njunky\njunkyard\njunkyards\njunta\njuntas\njunto\njuntos\njupe\njupes\njupon\njupons\njura\njural\njurally\njurant\njurants\njurat\njuratory\njurats\njurel\njurels\njuridic\njuridical\njuridically\njuries\njurisdiction\njurisdictional\njurisdictions\njurisprudence\njurisprudent\njurisprudential\njurisprudentially\njurisprudents\njurist\njuristic\njuristically\njurists\njuror\njurors\njury\njuryman\njurymen\njus\njussive\njussives\njust\njusted\njuster\njusters\njustest\njustice\njustices\njusticiability\njusticiable\njustifiability\njustifiable\njustifiably\njustification\njustifications\njustificative\njustified\njustifies\njustify\njustifying\njusting\njustle\njustled\njustles\njustling\njustly\njustness\njustnesses\njusts\njut\njute\njutes\njuts\njutted\njuttied\njutties\njutting\njutty\njuttying\njuvenal\njuvenals\njuvenile\njuveniles\njuvenilities\njuvenility\njuxtapose\njuxtaposed\njuxtaposes\njuxtaposing\njuxtaposition\njuxtapositions\nka\nkaas\nkab\nkabab\nkababs\nkabaka\nkabakas\nkabala\nkabalas\nkabar\nkabars\nkabaya\nkabayas\nkabbala\nkabbalah\nkabbalahs\nkabbalas\nkabeljou\nkabeljous\nkabiki\nkabikis\nkabob\nkabobs\nkabs\nkabuki\nkabukis\nkachina\nkachinas\nkaddish\nkaddishim\nkadi\nkadis\nkae\nkaes\nkaf\nkaffir\nkaffirs\nkaffiyeh\nkaffiyehs\nkafir\nkafirs\nkafs\nkaftan\nkaftans\nkagu\nkagus\nkahuna\nkahunas\nkaiak\nkaiaks\nkaif\nkaifs\nkail\nkails\nkailyard\nkailyards\nkain\nkainit\nkainite\nkainites\nkainits\nkains\nkaiser\nkaiserin\nkaiserins\nkaisers\nkajeput\nkajeputs\nkaka\nkakapo\nkakapos\nkakas\nkakemono\nkakemonos\nkaki\nkakis\nkalam\nkalams\nkale\nkaleidoscope\nkaleidoscopes\nkaleidoscopic\nkaleidoscopically\nkalends\nkales\nkalewife\nkalewives\nkaleyard\nkaleyards\nkalian\nkalians\nkalif\nkalifate\nkalifates\nkalifs\nkalimba\nkalimbas\nkaliph\nkaliphs\nkalium\nkaliums\nkallidin\nkallidins\nkalmia\nkalmias\nkalong\nkalongs\nkalpa\nkalpak\nkalpaks\nkalpas\nkalyptra\nkalyptras\nkamaaina\nkamaainas\nkamacite\nkamacites\nkamala\nkamalas\nkame\nkames\nkami\nkamik\nkamikaze\nkamikazes\nkamiks\nkampong\nkampongs\nkamseen\nkamseens\nkamsin\nkamsins\nkana\nkanas\nkane\nkanes\nkangaroo\nkangaroos\nkanji\nkanjis\nkantar\nkantars\nkantele\nkanteles\nkaoliang\nkaoliangs\nkaolin\nkaoline\nkaolines\nkaolinic\nkaolins\nkaon\nkaons\nkapa\nkapas\nkaph\nkaphs\nkapok\nkapoks\nkappa\nkappas\nkaput\nkaputt\nkarakul\nkarakuls\nkarat\nkarate\nkarates\nkarats\nkarma\nkarmas\nkarmic\nkarn\nkarns\nkaroo\nkaroos\nkaross\nkarosses\nkarroo\nkarroos\nkarst\nkarstic\nkarsts\nkart\nkarting\nkartings\nkarts\nkaryotin\nkaryotins\nkas\nkasha\nkashas\nkasher\nkashered\nkashering\nkashers\nkashmir\nkashmirs\nkashrut\nkashruth\nkashruths\nkashruts\nkat\nkatakana\nkatakanas\nkathodal\nkathode\nkathodes\nkathodic\nkation\nkations\nkats\nkatydid\nkatydids\nkauri\nkauries\nkauris\nkaury\nkava\nkavas\nkavass\nkavasses\nkay\nkayak\nkayaker\nkayakers\nkayaks\nkayles\nkayo\nkayoed\nkayoes\nkayoing\nkayos\nkays\nkazoo\nkazoos\nkbar\nkbars\nkea\nkeas\nkebab\nkebabs\nkebar\nkebars\nkebbie\nkebbies\nkebbock\nkebbocks\nkebbuck\nkebbucks\nkeblah\nkeblahs\nkebob\nkebobs\nkeck\nkecked\nkecking\nkeckle\nkeckled\nkeckles\nkeckling\nkecks\nkeddah\nkeddahs\nkedge\nkedged\nkedgeree\nkedgerees\nkedges\nkedging\nkeef\nkeefs\nkeek\nkeeked\nkeeking\nkeeks\nkeel\nkeelage\nkeelages\nkeelboat\nkeelboats\nkeeled\nkeelhale\nkeelhaled\nkeelhales\nkeelhaling\nkeelhaul\nkeelhauled\nkeelhauling\nkeelhauls\nkeeling\nkeelless\nkeels\nkeelson\nkeelsons\nkeen\nkeened\nkeener\nkeeners\nkeenest\nkeening\nkeenly\nkeenness\nkeennesses\nkeens\nkeep\nkeepable\nkeeper\nkeepers\nkeeping\nkeepings\nkeeps\nkeepsake\nkeepsakes\nkeeshond\nkeeshonden\nkeeshonds\nkeester\nkeesters\nkeet\nkeets\nkeeve\nkeeves\nkef\nkefir\nkefirs\nkefs\nkeg\nkegeler\nkegelers\nkegler\nkeglers\nkegling\nkeglings\nkegs\nkeir\nkeirs\nkeister\nkeisters\nkeitloa\nkeitloas\nkelep\nkelly\nkeloid\nkeloidal\nkeloids\nkelp\nkelped\nkelpie\nkelpies\nkelping\nkelps\nkelpy\nkelson\nkelsons\nkelter\nkelters\nkelvin\nkelvins\nkemp\nkemps\nkempt\nken\nkenaf\nkenafs\nkench\nkenches\nkendo\nkendos\nkenned\nkennel\nkenneled\nkenneling\nkennelled\nkennelling\nkennels\nkenning\nkennings\nkeno\nkenos\nkenosis\nkenosises\nkenotic\nkenotron\nkenotrons\nkens\nkent\nkep\nkephalin\nkephalins\nkepi\nkepis\nkepped\nkeppen\nkepping\nkeps\nkept\nkeramic\nkeramics\nkeratin\nkeratinous\nkeratins\nkeratoid\nkeratoma\nkeratomas\nkeratomata\nkeratose\nkerb\nkerbed\nkerbing\nkerbs\nkerchief\nkerchiefed\nkerchiefs\nkerchieves\nkerchoo\nkerf\nkerfed\nkerfing\nkerfs\nkermes\nkermess\nkermesses\nkermis\nkermises\nkern\nkerne\nkerned\nkernel\nkerneled\nkerneling\nkernelled\nkernelling\nkernels\nkernes\nkerning\nkernite\nkernites\nkerns\nkerogen\nkerogens\nkerosene\nkerosenes\nkerosine\nkerosines\nkerplunk\nkerria\nkerrias\nkerries\nkerry\nkersey\nkerseys\nkerygma\nkerygmata\nkestrel\nkestrels\nketch\nketches\nketchup\nketchups\nketene\nketenes\nketo\nketol\nketone\nketones\nketonic\nketose\nketoses\nketosis\nketotic\nkettle\nkettledrum\nkettledrums\nkettles\nkev\nkevel\nkevels\nkevil\nkevils\nkex\nkexes\nkey\nkeyboard\nkeyboarded\nkeyboarder\nkeyboarders\nkeyboarding\nkeyboards\nkeyed\nkeyhole\nkeyholes\nkeying\nkeyless\nkeynote\nkeynoted\nkeynoter\nkeynoters\nkeynotes\nkeynoting\nkeypunch\nkeypunched\nkeypuncher\nkeypunchers\nkeypunches\nkeypunching\nkeys\nkeyset\nkeysets\nkeyster\nkeysters\nkeystone\nkeystones\nkeystroke\nkeystroked\nkeystrokes\nkeystroking\nkeyway\nkeyways\nkeyword\nkeywords\nkhaddar\nkhaddars\nkhadi\nkhadis\nkhaf\nkhafs\nkhaki\nkhakis\nkhalif\nkhalifa\nkhalifas\nkhalifs\nkhamseen\nkhamseens\nkhamsin\nkhamsins\nkhan\nkhanate\nkhanates\nkhans\nkhaph\nkhat\nkhats\nkhazen\nkhazenim\nkhazens\nkheda\nkhedah\nkhedahs\nkhedas\nkhedival\nkhedive\nkhedives\nkhet\nkheth\nkhets\nkhi\nkhirkah\nkhirkahs\nkhis\nkhoum\nkiang\nkiangs\nkiaugh\nkiaughs\nkibbe\nkibble\nkibbled\nkibbles\nkibbling\nkibbutz\nkibbutzim\nkibe\nkibei\nkibes\nkibitz\nkibitzed\nkibitzer\nkibitzers\nkibitzes\nkibitzing\nkibla\nkiblah\nkiblahs\nkiblas\nkibosh\nkiboshed\nkiboshes\nkiboshing\nkick\nkickback\nkickbacks\nkicked\nkicker\nkickers\nkicking\nkickoff\nkickoffs\nkicks\nkickshaw\nkickshaws\nkickup\nkickups\nkicky\nkid\nkidded\nkidder\nkidders\nkiddie\nkiddies\nkidding\nkiddingly\nkiddish\nkiddo\nkiddoes\nkiddos\nkiddush\nkiddushes\nkiddy\nkidlike\nkidnap\nkidnaped\nkidnaper\nkidnapers\nkidnaping\nkidnapped\nkidnapper\nkidnappers\nkidnapping\nkidnaps\nkidney\nkidneys\nkids\nkidskin\nkidskins\nkief\nkiefs\nkielbasa\nkielbasas\nkielbasy\nkier\nkiers\nkiester\nkiesters\nkif\nkifs\nkike\nkikes\nkilim\nkilims\nkill\nkilldee\nkilldeer\nkilldeers\nkilldees\nkilled\nkiller\nkillers\nkillick\nkillicks\nkilling\nkillings\nkilljoy\nkilljoys\nkillock\nkillocks\nkills\nkiln\nkilned\nkilning\nkilns\nkilo\nkilobar\nkilobars\nkilobit\nkilobits\nkilocycle\nkilocycles\nkilogram\nkilograms\nkilohertz\nkiloliter\nkiloliters\nkilometer\nkilometers\nkilomole\nkilomoles\nkilorad\nkilorads\nkilos\nkiloton\nkilotons\nkilovolt\nkilovolts\nkilowatt\nkilowatts\nkilt\nkilted\nkilter\nkilters\nkiltie\nkilties\nkilting\nkiltings\nkilts\nkilty\nkimono\nkimonoed\nkimonos\nkin\nkina\nkinas\nkinase\nkinases\nkind\nkinder\nkindergarten\nkindergartens\nkindergartner\nkindergartners\nkindest\nkindhearted\nkindheartedly\nkindheartedness\nkindle\nkindled\nkindler\nkindlers\nkindles\nkindless\nkindlier\nkindliest\nkindliness\nkindling\nkindlings\nkindly\nkindness\nkindnesses\nkindred\nkindreds\nkinds\nkine\nkinema\nkinemas\nkinematic\nkinematical\nkinematically\nkinematics\nkines\nkinescope\nkinescoped\nkinescopes\nkinescoping\nkineses\nkinesics\nkinesis\nkinetic\nkinetically\nkinetics\nkinetin\nkinetins\nkinfolk\nkinfolks\nking\nkingbird\nkingbirds\nkingbolt\nkingbolts\nkingcup\nkingcups\nkingdom\nkingdoms\nkinged\nkingfish\nkingfishes\nkinghood\nkinghoods\nkinging\nkingless\nkinglet\nkinglets\nkinglier\nkingliest\nkinglike\nkingly\nkingpin\nkingpins\nkingpost\nkingposts\nkings\nkingship\nkingships\nkingside\nkingsides\nkingwood\nkingwoods\nkinin\nkinins\nkink\nkinkajou\nkinkajous\nkinked\nkinkier\nkinkiest\nkinkily\nkinkiness\nkinking\nkinks\nkinky\nkino\nkinos\nkins\nkinsfolk\nkinship\nkinships\nkinsman\nkinsmen\nkinswoman\nkinswomen\nkiosk\nkiosks\nkip\nkipped\nkippen\nkipper\nkippered\nkippering\nkippers\nkipping\nkips\nkipskin\nkipskins\nkir\nkirigami\nkirigamis\nkirk\nkirkman\nkirkmen\nkirks\nkirmess\nkirmesses\nkirn\nkirned\nkirning\nkirns\nkirs\nkirsch\nkirsches\nkirtle\nkirtled\nkirtles\nkishka\nkishkas\nkishke\nkishkes\nkismat\nkismats\nkismet\nkismetic\nkismets\nkiss\nkissable\nkissably\nkissed\nkisser\nkissers\nkisses\nkissing\nkissy\nkist\nkistful\nkistfuls\nkists\nkit\nkitchen\nkitchenette\nkitchenettes\nkitchens\nkite\nkited\nkiter\nkiters\nkites\nkith\nkithara\nkitharas\nkithe\nkithed\nkithes\nkithing\nkiths\nkiting\nkitling\nkitlings\nkits\nkitsch\nkitsches\nkitschy\nkitted\nkittel\nkitten\nkittened\nkittening\nkittens\nkitties\nkitting\nkittle\nkittled\nkittler\nkittles\nkittlest\nkittling\nkitty\nkiva\nkivas\nkiwi\nkiwis\nklatch\nklatches\nklatsch\nklatsches\nklavern\nklaverns\nklaxon\nklaxons\nkleagle\nkleagles\nklepht\nklephtic\nklephts\nkleptomania\nkleptomaniac\nkleptomaniacs\nklong\nklongs\nkloof\nkloofs\nkludge\nkludges\nkluge\nklutz\nklutzes\nklutzier\nklutziest\nklutzy\nklystron\nklystrons\nknack\nknacked\nknacker\nknackeries\nknackers\nknackery\nknacking\nknacks\nknap\nknapped\nknapper\nknappers\nknapping\nknaps\nknapsack\nknapsacks\nknapweed\nknapweeds\nknar\nknarred\nknarry\nknars\nknaur\nknave\nknaveries\nknavery\nknaves\nknavish\nknavishly\nknawel\nknawels\nknead\nkneaded\nkneader\nkneaders\nkneading\nkneads\nknee\nkneecap\nkneecaps\nkneed\nkneehole\nkneeholes\nkneeing\nkneel\nkneeled\nkneeler\nkneelers\nkneeling\nkneels\nkneepad\nkneepads\nkneepan\nkneepans\nknees\nknell\nknelled\nknelling\nknells\nknelt\nknew\nknickers\nknickknack\nknickknacks\nknife\nknifed\nknifer\nknifers\nknifes\nknifing\nknight\nknighted\nknighthood\nknighting\nknightly\nknights\nknish\nknishes\nknit\nknits\nknitted\nknitter\nknitters\nknitting\nknittings\nknitwear\nknitwears\nknives\nknob\nknobbed\nknobbier\nknobbiest\nknobby\nknoblike\nknobs\nknock\nknockdown\nknocked\nknocker\nknockers\nknocking\nknockoff\nknockoffs\nknockout\nknockouts\nknocks\nknoll\nknolled\nknoller\nknollers\nknolling\nknolls\nknolly\nknop\nknopped\nknops\nknosp\nknosps\nknot\nknothole\nknotholes\nknotless\nknotlike\nknots\nknotted\nknotter\nknotters\nknottier\nknottiest\nknottily\nknotting\nknotty\nknotweed\nknotweeds\nknout\nknouted\nknouting\nknouts\nknow\nknowable\nknower\nknowers\nknowing\nknowinger\nknowingest\nknowingly\nknowings\nknowledge\nknowledgeable\nknowledgeableness\nknowledgeably\nknown\nknowns\nknows\nknuckle\nknuckled\nknuckler\nknucklers\nknuckles\nknucklier\nknuckliest\nknuckling\nknuckly\nknur\nknurl\nknurled\nknurlier\nknurliest\nknurling\nknurls\nknurly\nknurs\nkoa\nkoala\nkoalas\nkoan\nkoans\nkoas\nkob\nkobo\nkobold\nkobolds\nkobs\nkoel\nkoels\nkohl\nkohlrabi\nkohlrabies\nkohls\nkoine\nkoines\nkokanee\nkokanees\nkola\nkolacky\nkolas\nkolhoz\nkolhozes\nkolhozy\nkolinski\nkolinskies\nkolinsky\nkolkhos\nkolkhoses\nkolkhosy\nkolkhoz\nkolkhozes\nkolkhozy\nkolkoz\nkolkozes\nkolkozy\nkolo\nkolos\nkomatik\nkomatiks\nkomondor\nkomondorock\nkomondorok\nkomondors\nkonk\nkonks\nkoodoo\nkoodoos\nkook\nkookie\nkookier\nkookiest\nkooks\nkooky\nkop\nkopeck\nkopecks\nkopek\nkopeks\nkoph\nkophs\nkopje\nkopjes\nkoppa\nkoppas\nkoppie\nkoppies\nkops\nkor\nkorat\nkors\nkorun\nkoruna\nkorunas\nkoruny\nkos\nkosher\nkoshered\nkoshering\nkoshers\nkoss\nkoto\nkotos\nkotow\nkotowed\nkotower\nkotowers\nkotowing\nkotows\nkoumis\nkoumises\nkoumiss\nkoumisses\nkoumys\nkoumyses\nkoumyss\nkoumysses\nkousso\nkoussos\nkowtow\nkowtowed\nkowtower\nkowtowers\nkowtowing\nkowtows\nkraal\nkraaled\nkraaling\nkraals\nkraft\nkrafts\nkrait\nkraits\nkraken\nkrakens\nkrater\nkraters\nkraut\nkrauts\nkreep\nkremlin\nkremlins\nkreutzer\nkreutzers\nkreuzer\nkreuzers\nkrill\nkrills\nkrimmer\nkrimmers\nkris\nkrises\nkrona\nkrone\nkronen\nkroner\nkronor\nkronur\nkroon\nkrooni\nkroons\nkrubi\nkrubis\nkrubut\nkrubuts\nkruller\nkrullers\nkryolite\nkryolites\nkryolith\nkryoliths\nkrypton\nkryptons\nkuchen\nkudo\nkudos\nkudu\nkudus\nkudzu\nkudzus\nkue\nkues\nkugel\nkukri\nkulak\nkulaki\nkulaks\nkultur\nkulturs\nkumiss\nkumisses\nkummel\nkummels\nkumquat\nkumquats\nkumys\nkumyses\nkunzite\nkunzites\nkurbash\nkurbashed\nkurbashes\nkurbashing\nkurgan\nkurgans\nkurta\nkurtas\nkurtosis\nkurtosises\nkuru\nkurus\nkusso\nkussos\nkvas\nkvases\nkvass\nkvasses\nkvetch\nkvetched\nkvetches\nkvetching\nkwacha\nkyack\nkyacks\nkyak\nkyaks\nkyanise\nkyanised\nkyanises\nkyanising\nkyanite\nkyanites\nkyanize\nkyanized\nkyanizes\nkyanizing\nkyar\nkyars\nkyat\nkyats\nkylikes\nkylix\nkymogram\nkymograms\nkyphoses\nkyphosis\nkyphotic\nkyrie\nkyries\nkyte\nkytes\nkythe\nkythed\nkythes\nkything\nla\nlaager\nlaagered\nlaagering\nlaagers\nlab\nlabara\nlabarum\nlabarums\nlabdanum\nlabdanums\nlabel\nlabeled\nlabeler\nlabelers\nlabeling\nlabella\nlabelled\nlabeller\nlabellers\nlabelling\nlabellum\nlabels\nlabia\nlabial\nlabialization\nlabializations\nlabialize\nlabialized\nlabializes\nlabializing\nlabially\nlabials\nlabiate\nlabiated\nlabiates\nlabile\nlabilities\nlability\nlabium\nlabor\nlaboratories\nlaboratory\nlabored\nlaborer\nlaborers\nlaboring\nlaborious\nlaboriously\nlaboriousness\nlaborite\nlaborites\nlabors\nlabour\nlaboured\nlabourer\nlabourers\nlabouring\nlabours\nlabra\nlabret\nlabrets\nlabroid\nlabroids\nlabrum\nlabrums\nlabs\nlaburnum\nlaburnums\nlabyrinth\nlabyrinthine\nlabyrinths\nlac\nlace\nlaced\nlaceless\nlacelike\nlacer\nlacerate\nlacerated\nlacerates\nlacerating\nlaceration\nlacerations\nlacers\nlacertid\nlacertids\nlaces\nlacewing\nlacewings\nlacewood\nlacewoods\nlacework\nlaceworks\nlacey\nlaches\nlachrymal\nlachrymator\nlachrymators\nlachrymose\nlachrymosely\nlacier\nlaciest\nlacily\nlaciness\nlacinesses\nlacing\nlacings\nlack\nlackadaisical\nlackadaisically\nlackaday\nlacked\nlacker\nlackered\nlackering\nlackers\nlackey\nlackeyed\nlackeying\nlackeys\nlacking\nlackluster\nlacks\nlaconic\nlaconically\nlaconism\nlaconisms\nlacquer\nlacquered\nlacquering\nlacquers\nlacquey\nlacqueyed\nlacqueying\nlacqueys\nlacrimal\nlacrimals\nlacrosse\nlacrosses\nlacs\nlactam\nlactams\nlactary\nlactase\nlactases\nlactate\nlactated\nlactates\nlactating\nlactation\nlactations\nlacteal\nlacteals\nlactean\nlacteous\nlactic\nlactone\nlactones\nlactonic\nlactose\nlactoses\nlacuna\nlacunae\nlacunal\nlacunar\nlacunaria\nlacunars\nlacunary\nlacunas\nlacunate\nlacune\nlacunes\nlacunose\nlacy\nlad\nladanum\nladanums\nladder\nladdered\nladdering\nladders\nladdie\nladdies\nlade\nladed\nladen\nladened\nladening\nladens\nlader\nladers\nlades\nladies\nlading\nladings\nladino\nladinos\nladle\nladled\nladleful\nladlefuls\nladler\nladlers\nladles\nladling\nladron\nladrone\nladrones\nladrons\nlads\nlady\nladybird\nladybirds\nladybug\nladybugs\nladyfinger\nladyfingers\nladyfish\nladyfishes\nladyhood\nladyhoods\nladyish\nladykin\nladykins\nladylike\nladylove\nladyloves\nladypalm\nladypalms\nladyship\nladyships\nlaevo\nlag\nlagan\nlagans\nlagend\nlagends\nlager\nlagered\nlagering\nlagers\nlaggard\nlaggards\nlagged\nlagger\nlaggers\nlagging\nlaggings\nlagnappe\nlagnappes\nlagniappe\nlagniappes\nlagoon\nlagoonal\nlagoons\nlags\nlaguna\nlagunas\nlagune\nlagunes\nlahar\nlaic\nlaical\nlaically\nlaich\nlaichs\nlaicise\nlaicised\nlaicises\nlaicising\nlaicism\nlaicisms\nlaicize\nlaicized\nlaicizes\nlaicizing\nlaics\nlaid\nlaigh\nlaighs\nlain\nlair\nlaird\nlairdly\nlairds\nlaired\nlairing\nlairs\nlaitance\nlaitances\nlaith\nlaithly\nlaities\nlaity\nlake\nlaked\nlakeport\nlakeports\nlaker\nlakers\nlakes\nlakeside\nlakesides\nlakh\nlakhs\nlakier\nlakiest\nlaking\nlakings\nlaky\nlall\nlallan\nlalland\nlallands\nlallans\nlalled\nlalling\nlalls\nlallygag\nlallygagged\nlallygagging\nlallygags\nlam\nlama\nlamas\nlamaseries\nlamasery\nlamb\nlambast\nlambaste\nlambasted\nlambastes\nlambasting\nlambasts\nlambda\nlambdas\nlambdoid\nlambed\nlambencies\nlambency\nlambent\nlamber\nlambers\nlambert\nlamberts\nlambie\nlambies\nlambing\nlambkill\nlambkills\nlambkin\nlambkins\nlamblike\nlambrequin\nlambrequins\nlambs\nlambskin\nlambskins\nlame\nlamebrain\nlamebrained\nlamebrains\nlamed\nlamedh\nlamedhs\nlameds\nlamella\nlamellae\nlamellar\nlamellas\nlamely\nlameness\nlamenesses\nlament\nlamentable\nlamentably\nlamentation\nlamentations\nlamented\nlamenter\nlamenters\nlamenting\nlaments\nlamer\nlames\nlamest\nlamia\nlamiae\nlamias\nlamina\nlaminae\nlaminal\nlaminar\nlaminary\nlaminas\nlaminate\nlaminated\nlaminates\nlaminating\nlamination\nlaminations\nlaminator\nlaminators\nlaming\nlaminose\nlaminous\nlamister\nlamisters\nlammed\nlamming\nlamp\nlampad\nlampads\nlampas\nlampases\nlamped\nlampers\nlamperses\nlamping\nlampion\nlampions\nlampoon\nlampooned\nlampooning\nlampoons\nlamppost\nlampposts\nlamprey\nlampreys\nlamps\nlampyrid\nlampyrids\nlams\nlamster\nlamsters\nlanai\nlanais\nlanate\nlanated\nlance\nlanced\nlancelet\nlancelets\nlancer\nlancers\nlances\nlancet\nlanceted\nlancets\nlanciers\nlancing\nland\nlandau\nlandaus\nlanded\nlander\nlanders\nlandfall\nlandfalls\nlandfill\nlandfills\nlandform\nlandforms\nlandholder\nlandholders\nlandholding\nlandholdings\nlanding\nlandings\nlandladies\nlandlady\nlandler\nlandlers\nlandless\nlandlocked\nlandlord\nlandlords\nlandlubber\nlandlubbers\nlandman\nlandmark\nlandmarks\nlandmass\nlandmasses\nlandmen\nlandowner\nlandowners\nlands\nlandscape\nlandscaped\nlandscaper\nlandscapers\nlandscapes\nlandscaping\nlandscapist\nlandscapists\nlandside\nlandsides\nlandskip\nlandskips\nlandsleit\nlandslid\nlandslide\nlandslides\nlandslip\nlandslips\nlandsman\nlandsmen\nlandward\nlane\nlanely\nlanes\nlang\nlanglauf\nlanglaufs\nlangley\nlangleys\nlangrage\nlangrages\nlangrel\nlangrels\nlangshan\nlangshans\nlangsyne\nlangsynes\nlanguage\nlanguages\nlangue\nlangues\nlanguet\nlanguets\nlanguid\nlanguidly\nlanguidness\nlanguish\nlanguished\nlanguishes\nlanguishing\nlanguor\nlanguorous\nlanguorously\nlanguors\nlangur\nlangurs\nlaniard\nlaniards\nlaniaries\nlaniary\nlanital\nlanitals\nlank\nlanker\nlankest\nlankier\nlankiest\nlankily\nlankiness\nlankly\nlankness\nlanknesses\nlanky\nlanner\nlanneret\nlannerets\nlanners\nlanolin\nlanoline\nlanolines\nlanolins\nlanose\nlanosities\nlanosity\nlantana\nlantanas\nlantern\nlanterns\nlanthorn\nlanthorns\nlanugo\nlanugos\nlanyard\nlanyards\nlap\nlapboard\nlapboards\nlapdog\nlapdogs\nlapel\nlapelled\nlapels\nlapful\nlapfuls\nlapidaries\nlapidary\nlapidate\nlapidated\nlapidates\nlapidating\nlapides\nlapidified\nlapidifies\nlapidify\nlapidifying\nlapidist\nlapidists\nlapilli\nlapillus\nlapin\nlapins\nlapis\nlapises\nlapped\nlapper\nlappered\nlappering\nlappers\nlappet\nlappeted\nlappets\nlapping\nlaps\nlapsable\nlapse\nlapsed\nlapser\nlapsers\nlapses\nlapsible\nlapsing\nlapsus\nlapwing\nlapwings\nlar\nlarboard\nlarboards\nlarcener\nlarceners\nlarcenies\nlarcenist\nlarcenists\nlarcenous\nlarcenously\nlarceny\nlarch\nlarches\nlard\nlarded\nlarder\nlarders\nlardier\nlardiest\nlarding\nlardlike\nlardon\nlardons\nlardoon\nlardoons\nlards\nlardy\nlaree\nlares\nlarge\nlargely\nlargeness\nlarger\nlarges\nlargess\nlargesse\nlargesses\nlargest\nlargish\nlargo\nlargos\nlari\nlariat\nlariated\nlariating\nlariats\nlarine\nlaris\nlark\nlarked\nlarker\nlarkers\nlarkier\nlarkiest\nlarking\nlarks\nlarksome\nlarkspur\nlarkspurs\nlarky\nlarrigan\nlarrigans\nlarrikin\nlarrikins\nlarrup\nlarruped\nlarruper\nlarrupers\nlarruping\nlarrups\nlars\nlarum\nlarums\nlarva\nlarvae\nlarval\nlarvas\nlarvicidal\nlarvicide\nlarvicides\nlaryngal\nlaryngeal\nlarynges\nlaryngitic\nlaryngitis\nlarynx\nlarynxes\nlas\nlasagna\nlasagnas\nlasagne\nlasagnes\nlascar\nlascars\nlascivious\nlasciviously\nlasciviousness\nlase\nlased\nlaser\nlasers\nlases\nlash\nlashed\nlasher\nlashers\nlashes\nlashing\nlashings\nlashins\nlashkar\nlashkars\nlasing\nlass\nlasses\nlassie\nlassies\nlassitude\nlassitudes\nlasso\nlassoed\nlassoer\nlassoers\nlassoes\nlassoing\nlassos\nlast\nlasted\nlaster\nlasters\nlasting\nlastingly\nlastings\nlastly\nlasts\nlat\nlatakia\nlatakias\nlatch\nlatched\nlatches\nlatchet\nlatchets\nlatching\nlatchkey\nlatchkeys\nlate\nlatecomer\nlatecomers\nlated\nlateen\nlateener\nlateeners\nlateens\nlately\nlaten\nlatencies\nlatency\nlatened\nlateness\nlatenesses\nlatening\nlatens\nlatent\nlatently\nlatents\nlater\nlaterad\nlateral\nlateraled\nlateraling\nlaterally\nlaterals\nlaterite\nlaterites\nlatest\nlatests\nlatewood\nlatewoods\nlatex\nlatexes\nlath\nlathe\nlathed\nlather\nlathered\nlatherer\nlatherers\nlathering\nlathers\nlathery\nlathes\nlathi\nlathier\nlathiest\nlathing\nlathings\nlaths\nlathwork\nlathworks\nlathy\nlati\nlatices\nlaties\nlatigo\nlatigoes\nlatigos\nlatinities\nlatinity\nlatinize\nlatinized\nlatinizes\nlatinizing\nlatish\nlatitude\nlatitudes\nlatitudinal\nlatitudinally\nlatitudinarian\nlatitudinarians\nlatke\nlatosol\nlatosols\nlatria\nlatrias\nlatrine\nlatrines\nlats\nlatten\nlattens\nlatter\nlatterly\nlattice\nlatticed\nlattices\nlatticework\nlatticeworks\nlatticing\nlattin\nlattins\nlauan\nlauans\nlaud\nlaudability\nlaudable\nlaudableness\nlaudably\nlaudanum\nlaudanums\nlaudation\nlaudations\nlaudator\nlaudators\nlaudatory\nlauded\nlauder\nlauders\nlauding\nlauds\nlaugh\nlaughable\nlaughableness\nlaughably\nlaughed\nlaugher\nlaughers\nlaughing\nlaughingly\nlaughings\nlaughingstock\nlaughingstocks\nlaughs\nlaughter\nlaughters\nlaunce\nlaunces\nlaunch\nlaunched\nlauncher\nlaunchers\nlaunches\nlaunching\nlaunchpad\nlaunchpads\nlaunder\nlaundered\nlaunderer\nlaunderers\nlaundering\nlaunders\nlaundress\nlaundresses\nlaundries\nlaundry\nlaundryman\nlaundrymen\nlaundrywoman\nlaundrywomen\nlaura\nlaurae\nlauras\nlaureate\nlaureated\nlaureates\nlaureateship\nlaureateships\nlaureating\nlaureation\nlaureations\nlaurel\nlaureled\nlaureling\nlaurelled\nlaurelling\nlaurels\nlauwine\nlauwines\nlav\nlava\nlavabo\nlavaboes\nlavabos\nlavage\nlavages\nlavalava\nlavalavas\nlavalier\nlavaliere\nlavalieres\nlavaliers\nlavalike\nlavalliere\nlavallieres\nlavas\nlavation\nlavations\nlavatories\nlavatory\nlave\nlaved\nlaveer\nlaveered\nlaveering\nlaveers\nlavender\nlavendered\nlavendering\nlavenders\nlaver\nlaverock\nlaverocks\nlavers\nlaves\nlaving\nlavish\nlavished\nlavisher\nlavishers\nlavishes\nlavishest\nlavishing\nlavishly\nlavishness\nlavrock\nlavrocks\nlavs\nlaw\nlawbreaker\nlawbreakers\nlawbreaking\nlawed\nlawful\nlawfully\nlawfulness\nlawgiver\nlawgivers\nlawine\nlawines\nlawing\nlawings\nlawless\nlawlessly\nlawlessness\nlawlike\nlawmaker\nlawmakers\nlawmaking\nlawman\nlawmen\nlawn\nlawns\nlawny\nlaws\nlawsuit\nlawsuits\nlawyer\nlawyerly\nlawyers\nlax\nlaxation\nlaxations\nlaxative\nlaxatives\nlaxer\nlaxest\nlaxities\nlaxity\nlaxly\nlaxness\nlaxnesses\nlay\nlayabout\nlayabouts\nlayaway\nlayaways\nlayed\nlayer\nlayerage\nlayerages\nlayered\nlayering\nlayerings\nlayers\nlayette\nlayettes\nlaying\nlayman\nlaymen\nlayoff\nlayoffs\nlayout\nlayouts\nlayover\nlayovers\nlayperson\nlaypersons\nlays\nlayup\nlaywoman\nlaywomen\nlazar\nlazaret\nlazarets\nlazars\nlaze\nlazed\nlazes\nlazied\nlazier\nlazies\nlaziest\nlazily\nlaziness\nlazinesses\nlazing\nlazuli\nlazulis\nlazulite\nlazulites\nlazurite\nlazurites\nlazy\nlazying\nlazyish\nlea\nleach\nleachability\nleachable\nleachate\nleachates\nleached\nleacher\nleachers\nleaches\nleachier\nleachiest\nleaching\nleachy\nlead\nleaded\nleaden\nleadenly\nleader\nleaderless\nleaders\nleadership\nleadier\nleadiest\nleading\nleadings\nleadless\nleadoff\nleadoffs\nleads\nleadsman\nleadsmen\nleadwork\nleadworks\nleadwort\nleadworts\nleady\nleaf\nleafage\nleafages\nleafed\nleafier\nleafiest\nleafing\nleafless\nleaflet\nleaflets\nleaflike\nleafs\nleafworm\nleafworms\nleafy\nleague\nleagued\nleaguer\nleaguered\nleaguering\nleaguers\nleagues\nleaguing\nleak\nleakage\nleakages\nleaked\nleaker\nleakers\nleakier\nleakiest\nleakily\nleakiness\nleaking\nleakless\nleakproof\nleaks\nleaky\nleal\nleally\nlealties\nlealty\nlean\nleaned\nleaner\nleanest\nleaning\nleanings\nleanly\nleanness\nleannesses\nleans\nleant\nleap\nleaped\nleaper\nleapers\nleapfrog\nleapfrogged\nleapfrogging\nleapfrogs\nleaping\nleaps\nleapt\nlear\nlearier\nleariest\nlearn\nlearnable\nlearned\nlearnedly\nlearnedness\nlearner\nlearners\nlearning\nlearnings\nlearns\nlearnt\nlears\nleary\nleas\nleasable\nlease\nleased\nleaseholder\nleaseholders\nleaser\nleasers\nleases\nleash\nleashed\nleashes\nleashing\nleasing\nleasings\nleast\nleasts\nleather\nleathered\nleathering\nleathern\nleathers\nleathery\nleave\nleaved\nleaven\nleavened\nleavening\nleavenings\nleavens\nleaver\nleavers\nleaves\nleavier\nleaviest\nleaving\nleavings\nleavy\nleben\nlebens\nlech\nlechayim\nlechayims\nlecher\nlechered\nlecheries\nlechering\nlecherous\nlecherously\nlecherousness\nlechers\nlechery\nleches\nlecithin\nlecithins\nlectern\nlecterns\nlection\nlections\nlector\nlectors\nlecture\nlectured\nlecturer\nlecturers\nlectures\nlectureship\nlectureships\nlecturing\nlecythi\nlecythus\nled\nledge\nledger\nledgers\nledges\nledgier\nledgiest\nledgy\nlee\nleeboard\nleeboards\nleech\nleeched\nleeches\nleeching\nleek\nleeks\nleer\nleered\nleerier\nleeriest\nleerily\nleering\nleeringly\nleers\nleery\nlees\nleet\nleets\nleeward\nleewards\nleeway\nleeways\nleft\nlefter\nleftest\nlefties\nleftism\nleftisms\nleftist\nleftists\nleftover\nleftovers\nlefts\nleftward\nleftwing\nlefty\nleg\nlegacies\nlegacy\nlegal\nlegalese\nlegaleses\nlegalise\nlegalised\nlegalises\nlegalising\nlegalism\nlegalisms\nlegalist\nlegalistic\nlegalistically\nlegalists\nlegalities\nlegality\nlegalization\nlegalizations\nlegalize\nlegalized\nlegalizes\nlegalizing\nlegally\nlegals\nlegate\nlegated\nlegatee\nlegatees\nlegates\nlegatine\nlegating\nlegation\nlegations\nlegato\nlegator\nlegators\nlegatos\nlegend\nlegendary\nlegendries\nlegendry\nlegends\nleger\nlegerdemain\nlegerities\nlegerity\nlegers\nleges\nlegged\nleggier\nleggiest\nleggin\nlegging\nleggings\nleggins\nleggy\nleghorn\nleghorns\nlegibility\nlegible\nlegibly\nlegion\nlegionaries\nlegionary\nlegionnaire\nlegionnaires\nlegions\nlegislate\nlegislated\nlegislates\nlegislating\nlegislation\nlegislations\nlegislative\nlegislatively\nlegislator\nlegislatorial\nlegislators\nlegislature\nlegislatures\nlegist\nlegists\nlegit\nlegitimacy\nlegitimate\nlegitimated\nlegitimately\nlegitimates\nlegitimating\nlegitimation\nlegitimations\nlegitimist\nlegitimists\nlegitimize\nlegitimized\nlegitimizes\nlegitimizing\nlegits\nlegless\nleglike\nlegman\nlegmen\nlegroom\nlegrooms\nlegs\nlegume\nlegumes\nlegumin\nleguminous\nlegumins\nlegwork\nlegworks\nlehayim\nlehayims\nlehr\nlehrs\nlehua\nlehuas\nlei\nleis\nleister\nleistered\nleistering\nleisters\nleisure\nleisured\nleisureliness\nleisurely\nleisures\nlek\nleke\nleks\nleku\nlekythi\nlekythoi\nlekythos\nlekythus\nleman\nlemans\nlemma\nlemmas\nlemmata\nlemming\nlemmings\nlemnisci\nlemon\nlemonade\nlemonades\nlemonish\nlemons\nlemony\nlempira\nlempiras\nlemur\nlemures\nlemuroid\nlemuroids\nlemurs\nlend\nlender\nlenders\nlending\nlends\nlenes\nlength\nlengthen\nlengthened\nlengthener\nlengtheners\nlengthening\nlengthens\nlengthier\nlengthiest\nlengthily\nlengthiness\nlengths\nlengthways\nlengthwise\nlengthy\nlenience\nleniences\nleniencies\nleniency\nlenient\nleniently\nlenis\nlenities\nlenitive\nlenitives\nlenity\nleno\nlenos\nlens\nlense\nlensed\nlenses\nlensless\nlent\nlentando\nlenten\nlentic\nlenticel\nlenticels\nlentigines\nlentigo\nlentil\nlentils\nlentisk\nlentisks\nlento\nlentoid\nlentos\nleone\nleones\nleonine\nleopard\nleopards\nleotard\nleotards\nleper\nlepers\nlepidote\nleporid\nleporids\nleporine\nleprechaun\nleprechauns\nleprose\nleprosies\nleprosy\nleprotic\nleprous\nleprousness\nlept\nlepta\nlepton\nleptonic\nleptons\nlesbian\nlesbianism\nlesbians\nlesion\nlesions\nless\nlessee\nlessees\nlessen\nlessened\nlessening\nlessens\nlesser\nlesson\nlessoned\nlessoning\nlessons\nlessor\nlessors\nlest\nlet\nletch\nletches\nletdown\nletdowns\nlethal\nlethality\nlethally\nlethals\nlethargic\nlethargically\nlethargies\nlethargy\nlethe\nlethean\nlethes\nlets\nletted\nletter\nlettered\nletterer\nletterers\nletterhead\nletterheads\nlettering\nletterpress\nletters\nletting\nlettuce\nlettuces\nletup\nletups\nleu\nleucemia\nleucemias\nleucemic\nleucin\nleucine\nleucines\nleucins\nleucite\nleucites\nleucitic\nleucoma\nleucomas\nleud\nleudes\nleuds\nleukemia\nleukemias\nleukemic\nleukemics\nleukoma\nleukomas\nleukon\nleukons\nleukoses\nleukosis\nleukotic\nlev\nleva\nlevant\nlevanted\nlevanter\nlevanters\nlevanting\nlevants\nlevator\nlevatores\nlevators\nlevee\nleveed\nleveeing\nlevees\nlevel\nleveled\nleveler\nlevelers\nlevelheaded\nlevelheadedness\nleveling\nlevelled\nleveller\nlevellers\nlevelling\nlevelly\nlevelness\nlevels\nlever\nleverage\nleveraged\nleverages\nleveraging\nlevered\nleveret\nleverets\nlevering\nlevers\nleviable\nleviathan\nleviathans\nlevied\nlevier\nleviers\nlevies\nlevigate\nlevigated\nlevigates\nlevigating\nlevin\nlevins\nlevirate\nlevirates\nlevitate\nlevitated\nlevitates\nlevitating\nlevitation\nlevitations\nlevities\nlevity\nlevo\nlevogyre\nlevulin\nlevulins\nlevulose\nlevuloses\nlevy\nlevying\nlewd\nlewder\nlewdest\nlewdly\nlewdness\nlewdnesses\nlewis\nlewises\nlewisite\nlewisites\nlewisson\nlewissons\nlex\nlexes\nlexica\nlexical\nlexicality\nlexically\nlexicographer\nlexicographers\nlexicographic\nlexicographical\nlexicographically\nlexicography\nlexicon\nlexicons\nlexis\nley\nleys\nlez\nlezes\nlezzy\nli\nliabilities\nliability\nliable\nliaise\nliaised\nliaises\nliaising\nliaison\nliaisons\nliana\nlianas\nliane\nlianes\nliang\nliangs\nlianoid\nliar\nliard\nliards\nliars\nlib\nlibation\nlibationary\nlibations\nlibber\nlibbers\nlibeccio\nlibeccios\nlibel\nlibelant\nlibelants\nlibeled\nlibelee\nlibelees\nlibeler\nlibelers\nlibeling\nlibelist\nlibelists\nlibellant\nlibellants\nlibelled\nlibellee\nlibellees\nlibeller\nlibellers\nlibelling\nlibellous\nlibelous\nlibels\nliber\nliberal\nliberalism\nliberalist\nliberalistic\nliberalists\nliberalities\nliberality\nliberalization\nliberalizations\nliberalize\nliberalized\nliberalizes\nliberalizing\nliberally\nliberalness\nliberals\nliberate\nliberated\nliberates\nliberating\nliberation\nliberations\nliberator\nliberators\nlibers\nlibertarian\nlibertarianism\nlibertarians\nliberties\nlibertine\nlibertines\nliberty\nlibidinal\nlibidinous\nlibido\nlibidos\nlibra\nlibrae\nlibrarian\nlibrarians\nlibraries\nlibrary\nlibras\nlibrate\nlibrated\nlibrates\nlibrating\nlibretti\nlibrettist\nlibrettists\nlibretto\nlibrettos\nlibri\nlibs\nlice\nlicence\nlicencee\nlicencees\nlicencenced\nlicencences\nlicencencing\nlicencer\nlicencers\nlicencing\nlicensable\nlicense\nlicensed\nlicensee\nlicensees\nlicenser\nlicensers\nlicenses\nlicensing\nlicensor\nlicensors\nlicentiate\nlicentiates\nlicentious\nlicentiously\nlicentiousness\nlich\nlichee\nlichees\nlichen\nlichened\nlichenin\nlichening\nlichenins\nlichenous\nlichens\nlichi\nlichis\nlicht\nlichted\nlichting\nlichtly\nlichts\nlicit\nlicitly\nlick\nlicked\nlicker\nlickers\nlicking\nlickings\nlicks\nlickspit\nlickspits\nlicorice\nlicorices\nlictor\nlictors\nlid\nlidar\nlidars\nlidded\nlidding\nlidless\nlido\nlidos\nlids\nlie\nlied\nlieder\nlief\nliefer\nliefest\nliefly\nliege\nliegeman\nliegemen\nlieges\nlien\nlienable\nlienal\nliens\nlienteries\nlientery\nlier\nlierne\nliernes\nliers\nlies\nliest\nlieu\nlieus\nlieutenancies\nlieutenancy\nlieutenant\nlieutenants\nlieve\nliever\nlievest\nlife\nlifeblood\nlifeboat\nlifeboats\nlifeful\nlifeguard\nlifeguards\nlifeless\nlifelessly\nlifelessness\nlifelike\nlifeline\nlifelines\nlifelong\nlifer\nlifers\nlifesaver\nlifesavers\nlifesaving\nlifetime\nlifetimes\nlifeway\nlifeways\nlifework\nlifeworks\nlift\nliftable\nlifted\nlifter\nlifters\nlifting\nliftman\nliftmen\nliftoff\nliftoffs\nlifts\nligament\nligamentous\nligaments\nligan\nligand\nligands\nligans\nligase\nligases\nligate\nligated\nligates\nligating\nligation\nligations\nligative\nligature\nligatured\nligatures\nligaturing\nliger\nlight\nlighted\nlighten\nlightened\nlightener\nlighteners\nlightening\nlightens\nlighter\nlighterage\nlightered\nlightering\nlighters\nlightest\nlightful\nlighthearted\nlightheartedly\nlightheartedness\nlighthouse\nlighthouses\nlighting\nlightings\nlightish\nlightly\nlightness\nlightning\nlightninged\nlightnings\nlightproof\nlights\nlightweight\nlightweights\nligneous\nlignified\nlignifies\nlignify\nlignifying\nlignin\nlignins\nlignite\nlignites\nlignitic\nligroin\nligroine\nligroines\nligroins\nligula\nligulae\nligular\nligulas\nligulate\nligule\nligules\nliguloid\nligure\nligures\nlikability\nlikable\nlikableness\nlike\nlikeable\nliked\nlikeliest\nlikelihood\nlikelihoods\nlikely\nliken\nlikened\nlikeness\nlikenesses\nlikening\nlikens\nliker\nlikers\nlikes\nlikest\nlikewise\nliking\nlikings\nlikuta\nlilac\nlilacs\nlilied\nlilies\nlilliput\nlilliputs\nlilt\nlilted\nlilting\nlilts\nlily\nlilylike\nlima\nlimacine\nlimacon\nlimacons\nliman\nlimans\nlimas\nlimb\nlimba\nlimbas\nlimbate\nlimbeck\nlimbecks\nlimbed\nlimber\nlimbered\nlimberer\nlimberest\nlimbering\nlimberly\nlimberness\nlimbers\nlimbi\nlimbic\nlimbier\nlimbiest\nlimbing\nlimbless\nlimbo\nlimbos\nlimbs\nlimbus\nlimbuses\nlimby\nlime\nlimeade\nlimeades\nlimed\nlimekiln\nlimekilns\nlimeless\nlimelight\nlimelights\nlimen\nlimens\nlimerick\nlimericks\nlimes\nlimestone\nlimestones\nlimey\nlimeys\nlimier\nlimiest\nlimina\nliminal\nliminess\nliminesses\nliming\nlimit\nlimitable\nlimitary\nlimitation\nlimitations\nlimited\nlimitedly\nlimitedness\nlimiteds\nlimiter\nlimiters\nlimites\nlimiting\nlimitless\nlimitlessly\nlimitlessness\nlimits\nlimmer\nlimmers\nlimn\nlimned\nlimner\nlimners\nlimnetic\nlimnic\nlimning\nlimns\nlimo\nlimonene\nlimonenes\nlimonite\nlimonites\nlimos\nlimousine\nlimousines\nlimp\nlimpa\nlimped\nlimper\nlimpers\nlimpest\nlimpet\nlimpets\nlimpid\nlimpidity\nlimpidly\nlimpidness\nlimping\nlimpingly\nlimpkin\nlimpkins\nlimply\nlimpness\nlimpnesses\nlimps\nlimpsy\nlimuli\nlimuloid\nlimuloids\nlimulus\nlimy\nlin\nlinable\nlinac\nlinacs\nlinage\nlinages\nlinalol\nlinalols\nlinalool\nlinalools\nlinchpin\nlinchpins\nlindane\nlindanes\nlinden\nlindens\nlindies\nlindy\nline\nlineable\nlineage\nlineages\nlineal\nlineally\nlineament\nlineamental\nlineaments\nlinear\nlinearity\nlinearization\nlinearizations\nlinearize\nlinearized\nlinearizes\nlinearizing\nlinearly\nlineate\nlineated\nlineation\nlineations\nlinebacker\nlinebackers\nlinebred\nlinecut\nlinecuts\nlined\nlineless\nlinelike\nlineman\nlinemen\nlinen\nlinens\nlineny\nliner\nliners\nlines\nlinesman\nlinesmen\nlineup\nlineups\nliney\nling\nlinga\nlingam\nlingams\nlingas\nlingcod\nlingcods\nlinger\nlingered\nlingerer\nlingerers\nlingerie\nlingeries\nlingering\nlingeringly\nlingers\nlingier\nlingiest\nlingo\nlingoes\nlings\nlingua\nlinguae\nlingual\nlinguals\nlinguine\nlinguines\nlinguini\nlinguinis\nlinguist\nlinguistic\nlinguistically\nlinguistics\nlinguists\nlingy\nlinier\nliniest\nliniment\nliniments\nlinin\nlining\nlinings\nlinins\nlink\nlinkable\nlinkage\nlinkages\nlinkboy\nlinkboys\nlinked\nlinker\nlinkers\nlinking\nlinkman\nlinkmen\nlinks\nlinksman\nlinksmen\nlinkup\nlinkups\nlinkwork\nlinkworks\nlinky\nlinn\nlinnet\nlinnets\nlinns\nlino\nlinocut\nlinocuts\nlinoleum\nlinoleums\nlinos\nlins\nlinsang\nlinsangs\nlinseed\nlinseeds\nlinsey\nlinseys\nlinstock\nlinstocks\nlint\nlintel\nlintels\nlinter\nlinters\nlintier\nlintiest\nlintless\nlintol\nlintols\nlints\nlinty\nlinum\nlinums\nliny\nlion\nlioness\nlionesses\nlionfish\nlionfishes\nlionhearted\nlionise\nlionised\nlioniser\nlionisers\nlionises\nlionising\nlionization\nlionizations\nlionize\nlionized\nlionizer\nlionizers\nlionizes\nlionizing\nlionlike\nlions\nlip\nlipase\nlipases\nlipid\nlipide\nlipides\nlipidic\nlipids\nlipin\nlipins\nlipless\nliplike\nlipocyte\nlipocytes\nlipoid\nlipoidal\nlipoids\nlipoma\nlipomas\nlipomata\nlipped\nlippen\nlippened\nlippening\nlippens\nlipper\nlippered\nlippering\nlippers\nlippier\nlippiest\nlipping\nlippings\nlippy\nlipreading\nlips\nlipstick\nlipsticks\nliquate\nliquated\nliquates\nliquating\nliquefaction\nliquefactions\nliquefiable\nliquefied\nliquefier\nliquefiers\nliquefies\nliquefy\nliquefying\nliqueur\nliqueurs\nliquid\nliquidate\nliquidated\nliquidates\nliquidating\nliquidation\nliquidations\nliquidator\nliquidators\nliquidity\nliquidize\nliquidized\nliquidizes\nliquidizing\nliquidly\nliquids\nliquified\nliquifies\nliquify\nliquifying\nliquor\nliquored\nliquoring\nliquors\nlira\nliras\nlire\nliripipe\nliripipes\nlirot\nliroth\nlis\nlisle\nlisles\nlisp\nlisped\nlisper\nlispers\nlisping\nlisps\nlissom\nlissome\nlissomly\nlist\nlistable\nlisted\nlistel\nlistels\nlisten\nlistenable\nlistened\nlistener\nlisteners\nlistening\nlistens\nlister\nlisters\nlisting\nlistings\nlistless\nlistlessly\nlistlessness\nlists\nlit\nlitai\nlitanies\nlitany\nlitas\nlitchi\nlitchis\nliter\nliteracies\nliteracy\nliteral\nliteralism\nliteralist\nliteralistic\nliteralists\nliterality\nliteralization\nliteralizations\nliteralize\nliteralized\nliteralizes\nliteralizing\nliterally\nliteralness\nliterals\nliterary\nliterate\nliterately\nliterates\nliterati\nliterature\nliteratures\nliters\nlitharge\nlitharges\nlithe\nlithely\nlithemia\nlithemias\nlithemic\nlitheness\nlither\nlithesome\nlithest\nlithia\nlithias\nlithic\nlithium\nlithiums\nlitho\nlithograph\nlithographed\nlithographer\nlithographers\nlithographic\nlithographically\nlithographing\nlithographs\nlithography\nlithoid\nlithos\nlithosol\nlithosols\nlitigant\nlitigants\nlitigate\nlitigated\nlitigates\nlitigating\nlitigation\nlitigations\nlitigious\nlitigiously\nlitigiousness\nlitmus\nlitmuses\nlitoral\nlitotes\nlitre\nlitres\nlits\nlitten\nlitter\nlitterbug\nlitterbugs\nlittered\nlitterer\nlitterers\nlittering\nlitters\nlittery\nlittle\nlittleness\nlittler\nlittles\nlittlest\nlittlish\nlittoral\nlittorals\nlitu\nliturgic\nliturgical\nliturgics\nliturgies\nliturgist\nliturgists\nliturgy\nlivability\nlivable\nlivableness\nlive\nliveable\nlived\nlivelier\nliveliest\nlivelihood\nlivelihoods\nlivelily\nliveliness\nlivelong\nlively\nliven\nlivened\nlivener\nliveners\nliveness\nlivenesses\nlivening\nlivens\nliver\nliveried\nliveries\nliverish\nlivers\nlivery\nliveryman\nliverymen\nlives\nlivest\nlivestock\nlivetrap\nlivetrapped\nlivetrapping\nlivetraps\nlivid\nlividities\nlividity\nlividly\nlividness\nlivier\nliviers\nliving\nlivingly\nlivings\nlivre\nlivres\nlivyer\nlivyers\nlixivia\nlixivial\nlixivium\nlixiviums\nlizard\nlizards\nllama\nllamas\nllano\nllanos\nlo\nloach\nloaches\nload\nloaded\nloader\nloaders\nloading\nloadings\nloads\nloadstar\nloadstars\nloaf\nloafed\nloafer\nloafers\nloafing\nloafs\nloam\nloamed\nloamier\nloamiest\nloaming\nloamless\nloams\nloamy\nloan\nloanable\nloaned\nloaner\nloaners\nloaning\nloanings\nloans\nloanword\nloanwords\nloath\nloathe\nloathed\nloather\nloathers\nloathes\nloathful\nloathing\nloathings\nloathly\nloathsome\nloathsomeness\nloaves\nlob\nlobar\nlobate\nlobated\nlobately\nlobation\nlobations\nlobbed\nlobbied\nlobbies\nlobbing\nlobby\nlobbyer\nlobbyers\nlobbygow\nlobbygows\nlobbying\nlobbyism\nlobbyisms\nlobbyist\nlobbyists\nlobe\nlobed\nlobefin\nlobefins\nlobelia\nlobelias\nlobeline\nlobelines\nlobes\nloblollies\nloblolly\nlobo\nlobos\nlobotomies\nlobotomize\nlobotomized\nlobotomizes\nlobotomizing\nlobotomy\nlobs\nlobster\nlobsters\nlobstick\nlobsticks\nlobular\nlobulate\nlobule\nlobules\nlobulose\nlobworm\nlobworms\nloca\nlocal\nlocale\nlocales\nlocalise\nlocalised\nlocalises\nlocalising\nlocalism\nlocalisms\nlocalist\nlocalists\nlocalite\nlocalites\nlocalities\nlocality\nlocalizable\nlocalization\nlocalizations\nlocalize\nlocalized\nlocalizes\nlocalizing\nlocally\nlocals\nlocatable\nlocate\nlocated\nlocater\nlocaters\nlocates\nlocating\nlocation\nlocations\nlocative\nlocatives\nlocator\nlocators\nloch\nlochia\nlochial\nlochs\nloci\nlock\nlockable\nlockage\nlockages\nlockbox\nlockboxes\nlocked\nlocker\nlockers\nlocket\nlockets\nlocking\nlockjaw\nlockjaws\nlocknut\nlocknuts\nlockout\nlockouts\nlockram\nlockrams\nlocks\nlocksmith\nlocksmiths\nlockstep\nlocksteps\nlockup\nlockups\nloco\nlocoed\nlocoes\nlocofoco\nlocofocos\nlocoing\nlocoism\nlocoisms\nlocomote\nlocomoted\nlocomotes\nlocomoting\nlocomotion\nlocomotions\nlocomotive\nlocomotives\nlocos\nlocoweed\nlocoweeds\nlocular\nloculate\nlocule\nloculed\nlocules\nloculi\nloculus\nlocum\nlocums\nlocus\nlocust\nlocusta\nlocustae\nlocustal\nlocusts\nlocution\nlocutions\nlocutories\nlocutory\nlode\nloden\nlodens\nlodes\nlodestar\nlodestars\nlodestone\nlodestones\nlodge\nlodged\nlodgement\nlodgements\nlodger\nlodgers\nlodges\nlodging\nlodgings\nlodgment\nlodgments\nlodicule\nlodicules\nloess\nloessal\nloesses\nloessial\nloft\nlofted\nlofter\nlofters\nloftier\nloftiest\nloftily\nloftiness\nlofting\nloftless\nlofts\nlofty\nlog\nlogan\nlogans\nlogarithm\nlogarithmic\nlogarithmically\nlogarithms\nlogbook\nlogbooks\nloge\nloges\nloggats\nlogged\nlogger\nloggerhead\nloggerheads\nloggers\nloggets\nloggia\nloggias\nloggie\nloggier\nloggiest\nlogging\nloggings\nloggy\nlogia\nlogic\nlogical\nlogicality\nlogically\nlogician\nlogicians\nlogicise\nlogicised\nlogicises\nlogicising\nlogicize\nlogicized\nlogicizes\nlogicizing\nlogics\nlogier\nlogiest\nlogily\nloginess\nloginesses\nlogion\nlogions\nlogistic\nlogistical\nlogistically\nlogistician\nlogisticians\nlogistics\nlogjam\nlogjams\nlognormal\nlogo\nlogogram\nlogogrammatic\nlogograms\nlogogriph\nlogoi\nlogomach\nlogomachs\nlogos\nlogotype\nlogotypes\nlogotypies\nlogotypy\nlogroll\nlogrolled\nlogrolling\nlogrolls\nlogs\nlogway\nlogways\nlogwood\nlogwoods\nlogy\nloin\nloincloth\nloincloths\nloins\nloiter\nloitered\nloiterer\nloiterers\nloitering\nloiters\nloll\nlolled\nloller\nlollers\nlollies\nlolling\nlollipop\nlollipops\nlollop\nlolloped\nlolloping\nlollops\nlolls\nlolly\nlollygag\nlollygagged\nlollygagging\nlollygags\nlollypop\nlollypops\nloment\nlomenta\nloments\nlomentum\nlomentums\nlone\nlonelier\nloneliest\nlonelily\nloneliness\nlonely\nloneness\nlonenesses\nloner\nloners\nlonesome\nlonesomely\nlonesomeness\nlonesomes\nlong\nlongan\nlongans\nlongboat\nlongboats\nlongbow\nlongbows\nlonge\nlonged\nlongeing\nlonger\nlongeron\nlongerons\nlongers\nlonges\nlongest\nlongevity\nlonghair\nlonghairs\nlonghand\nlonghands\nlonghead\nlongheads\nlonghorn\nlonghorns\nlonging\nlongingly\nlongings\nlongish\nlongitude\nlongitudes\nlongitudinal\nlongitudinally\nlongleaf\nlongleaves\nlongline\nlonglines\nlongly\nlongness\nlongnesses\nlongs\nlongship\nlongships\nlongshoreman\nlongshoremen\nlongsome\nlongspur\nlongspurs\nlongtime\nlongueur\nlongueurs\nlongways\nlongwise\nloo\nloobies\nlooby\nlooed\nlooey\nlooeys\nloof\nloofa\nloofah\nloofahs\nloofas\nloofs\nlooie\nlooies\nlooing\nlook\nlookdown\nlookdowns\nlooked\nlooker\nlookers\nlooking\nlookout\nlookouts\nlooks\nlookup\nlookups\nloom\nloomed\nlooming\nlooms\nloon\nlooney\nloonier\nloonies\nlooniest\nlooniness\nloons\nloony\nloop\nlooped\nlooper\nloopers\nloophole\nloopholed\nloopholes\nloopholing\nloopier\nloopiest\nlooping\nloops\nloopy\nloos\nloose\nloosed\nloosely\nloosen\nloosened\nloosener\nlooseners\nlooseness\nloosening\nloosens\nlooser\nlooses\nloosest\nloosing\nloot\nlooted\nlooter\nlooters\nlooting\nloots\nlop\nlope\nloped\nloper\nlopers\nlopes\nloping\nlopped\nlopper\nloppered\nloppering\nloppers\nloppier\nloppiest\nlopping\nloppy\nlops\nlopsided\nlopsidedly\nlopsidedness\nlopstick\nlopsticks\nloquacious\nloquaciously\nloquaciousness\nloquacities\nloquacity\nloquat\nloquats\nloral\nloran\nlorans\nlord\nlorded\nlording\nlordings\nlordless\nlordlier\nlordliest\nlordlike\nlordling\nlordlings\nlordly\nlordoma\nlordomas\nlordoses\nlordosis\nlordotic\nlords\nlordship\nlordships\nlore\nloreal\nlores\nlorgnette\nlorgnettes\nlorgnon\nlorgnons\nlorica\nloricae\nloricate\nloricates\nlories\nlorikeet\nlorikeets\nlorimer\nlorimers\nloriner\nloriners\nloris\nlorises\nlorn\nlornness\nlornnesses\nlorries\nlorry\nlory\nlosable\nlosableness\nlose\nlosel\nlosels\nloser\nlosers\nloses\nlosing\nlosingly\nlosings\nloss\nlosses\nlossy\nlost\nlostness\nlostnesses\nlot\nlota\nlotah\nlotahs\nlotas\nloth\nlothario\nlotharios\nlothsome\nloti\nlotic\nlotion\nlotions\nlotos\nlotoses\nlots\nlotted\nlotteries\nlottery\nlotting\nlotto\nlottos\nlotus\nlotuses\nloud\nlouden\nloudened\nloudening\nloudens\nlouder\nloudest\nloudish\nloudlier\nloudliest\nloudly\nloudmouth\nloudmouthed\nloudmouths\nloudness\nloudnesses\nloudspeaker\nloudspeakers\nlough\nloughs\nlouie\nlouies\nlouis\nlounge\nlounged\nlounger\nloungers\nlounges\nlounging\nloungy\nloup\nloupe\nlouped\nloupen\nloupes\nlouping\nloups\nlour\nloured\nlouring\nlours\nloury\nlouse\nloused\nlouses\nlousier\nlousiest\nlousily\nlousiness\nlousing\nlousy\nlout\nlouted\nlouting\nloutish\nlouts\nlouver\nlouvered\nlouvers\nlouvre\nlouvres\nlovable\nlovableness\nlovably\nlovage\nlovages\nlovat\nlove\nloveable\nloveably\nlovebird\nlovebirds\nloved\nloveless\nlovelessly\nlovelessness\nlovelier\nlovelies\nloveliest\nlovelily\nloveliness\nlovelock\nlovelocks\nlovelorn\nlovely\nlover\nloverly\nlovers\nloves\nlovesick\nlovesome\nlovevine\nlovevines\nloving\nlovingly\nlovingness\nlow\nlowborn\nlowboy\nlowboys\nlowbred\nlowbrow\nlowbrows\nlowdown\nlowdowns\nlowe\nlowed\nlower\nlowercase\nlowered\nlowering\nlowermost\nlowers\nlowery\nlowes\nlowest\nlowing\nlowings\nlowish\nlowland\nlowlands\nlowlier\nlowliest\nlowlife\nlowlifes\nlowliness\nlowly\nlown\nlowness\nlownesses\nlows\nlowse\nlox\nloxed\nloxes\nloxing\nloyal\nloyaler\nloyalest\nloyalism\nloyalisms\nloyalist\nloyalists\nloyally\nloyalties\nloyalty\nlozenge\nlozenges\nluau\nluaus\nlubber\nlubberly\nlubbers\nlube\nlubes\nlubric\nlubricant\nlubricants\nlubricate\nlubricated\nlubricates\nlubricating\nlubrication\nlubrications\nlubricative\nlubricator\nlubricators\nlubricious\nlubricities\nlubricity\nlubricous\nlucarne\nlucarnes\nluce\nlucence\nlucences\nlucencies\nlucency\nlucent\nlucently\nlucern\nlucerne\nlucernes\nlucerns\nluces\nlucid\nlucidities\nlucidity\nlucidly\nlucidness\nlucifer\nluciferous\nlucifers\nluck\nlucked\nluckie\nluckier\nluckies\nluckiest\nluckily\nluckiness\nlucking\nluckless\nlucks\nlucky\nlucrative\nlucratively\nlucrativeness\nlucre\nlucres\nlucubration\nlucubrations\nluculent\nlude\nludes\nludic\nludicrous\nludicrously\nludicrousness\nlues\nluetic\nluetics\nluff\nluffa\nluffas\nluffed\nluffing\nluffs\nlug\nluge\nluged\nluges\nluggage\nluggages\nlugged\nlugger\nluggers\nluggie\nluggies\nlugging\nlugs\nlugsail\nlugsails\nlugubrious\nlugworm\nlugworms\nlukewarm\nlull\nlullabied\nlullabies\nlullaby\nlullabying\nlulled\nlulling\nlulls\nlulu\nlulus\nlum\nlumbago\nlumbagos\nlumbar\nlumbars\nlumber\nlumbered\nlumberer\nlumberers\nlumbering\nlumberjack\nlumberjacks\nlumberman\nlumbermen\nlumbers\nlumberyard\nlumberyards\nlumen\nlumenal\nlumens\nlumina\nluminaires\nluminal\nluminance\nluminances\nluminaries\nluminary\nluminesce\nluminesced\nluminescence\nluminescent\nluminesces\nluminescing\nluminist\nluminists\nluminosities\nluminosity\nluminous\nluminously\nluminousness\nlummox\nlummoxes\nlump\nlumped\nlumpen\nlumpens\nlumper\nlumpers\nlumpfish\nlumpfishes\nlumpier\nlumpiest\nlumpily\nlumpiness\nlumping\nlumpingly\nlumpish\nlumps\nlumpy\nlums\nluna\nlunacies\nlunacy\nlunar\nlunarian\nlunarians\nlunars\nlunas\nlunate\nlunated\nlunately\nlunatic\nlunatics\nlunation\nlunations\nlunch\nlunched\nluncheon\nluncheonette\nluncheonettes\nluncheons\nluncher\nlunchers\nlunches\nlunching\nlunchroom\nlunchrooms\nlunchtime\nlunchtimes\nlune\nlunes\nlunet\nlunets\nlunette\nlunettes\nlung\nlungan\nlungans\nlunge\nlunged\nlungee\nlungees\nlunger\nlungers\nlunges\nlungfish\nlungfishes\nlungi\nlunging\nlungis\nlungs\nlungworm\nlungworms\nlungwort\nlungworts\nlungyi\nlungyis\nlunier\nlunies\nluniest\nlunk\nlunker\nlunkers\nlunkhead\nlunkheads\nlunks\nlunt\nlunted\nlunting\nlunts\nlunula\nlunulae\nlunular\nlunulate\nlunule\nlunules\nluny\nlupanar\nlupanars\nlupin\nlupine\nlupines\nlupins\nlupous\nlupulin\nlupulins\nlupus\nlupuses\nlurch\nlurched\nlurcher\nlurchers\nlurches\nlurching\nlurdan\nlurdane\nlurdanes\nlurdans\nlure\nlured\nlurer\nlurers\nlures\nlurid\nluridly\nluridness\nluring\nlurk\nlurked\nlurker\nlurkers\nlurking\nlurks\nluscious\nlusciousness\nlush\nlushed\nlusher\nlushes\nlushest\nlushing\nlushly\nlushness\nlushnesses\nlust\nlusted\nluster\nlustered\nlustering\nlusterless\nlusters\nlustful\nlustfully\nlustfulness\nlustier\nlustiest\nlustily\nlustiness\nlusting\nlustra\nlustral\nlustrate\nlustrated\nlustrates\nlustrating\nlustre\nlustred\nlustres\nlustring\nlustrings\nlustrous\nlustrously\nlustrousness\nlustrum\nlustrums\nlusts\nlusty\nlusus\nlususes\nlutanist\nlutanists\nlute\nlutea\nluteal\nlutecium\nluteciums\nluted\nlutein\nluteins\nlutenist\nlutenists\nluteolin\nluteolins\nluteous\nlutes\nlutetium\nlutetiums\nluteum\nluthern\nlutherns\nluting\nlutings\nlutist\nlutists\nluv\nluvs\nlux\nluxate\nluxated\nluxates\nluxating\nluxation\nluxations\nluxe\nluxes\nluxuriance\nluxuriances\nluxuriant\nluxuriantly\nluxuriate\nluxuriated\nluxuriates\nluxuriating\nluxuries\nluxurious\nluxuriously\nluxuriousness\nluxury\nlwei\nlweis\nlyard\nlyart\nlyase\nlyases\nlycea\nlycee\nlycees\nlyceum\nlyceums\nlychee\nlychees\nlychnis\nlychnises\nlycopene\nlycopenes\nlycopod\nlycopods\nlyddite\nlyddites\nlye\nlyes\nlying\nlyingly\nlyings\nlymph\nlymphatic\nlymphatics\nlymphocyte\nlymphocytes\nlymphoid\nlymphoma\nlymphomas\nlymphomata\nlymphs\nlyncean\nlynch\nlynched\nlyncher\nlynchers\nlynches\nlynching\nlynchings\nlynx\nlynxes\nlyophile\nlyrate\nlyrated\nlyrately\nlyre\nlyrebird\nlyrebirds\nlyres\nlyric\nlyrical\nlyrically\nlyricise\nlyricised\nlyricises\nlyricising\nlyricism\nlyricisms\nlyricist\nlyricists\nlyricize\nlyricized\nlyricizes\nlyricizing\nlyrics\nlyriform\nlyrism\nlyrisms\nlyrist\nlyrists\nlysate\nlysates\nlyse\nlysed\nlyses\nlysin\nlysine\nlysines\nlysing\nlysins\nlysis\nlysogen\nlysogenies\nlysogens\nlysogeny\nlysosome\nlysosomes\nlysozyme\nlysozymes\nlyssa\nlyssas\nlytic\nlytta\nlyttae\nlyttas\nma\nmaar\nmaars\nmabe\nmabes\nmac\nmacaber\nmacabre\nmacaco\nmacacos\nmacadam\nmacadamize\nmacadamized\nmacadamizes\nmacadamizing\nmacadams\nmacaque\nmacaques\nmacaroni\nmacaronies\nmacaronis\nmacaroon\nmacaroons\nmacaw\nmacaws\nmaccabaw\nmaccabaws\nmaccaboy\nmaccaboys\nmacchia\nmacchie\nmaccoboy\nmaccoboys\nmace\nmaced\nmacer\nmacerate\nmacerated\nmacerates\nmacerating\nmaceration\nmacerations\nmacerator\nmacerators\nmacers\nmaces\nmach\nmache\nmachete\nmachetes\nmachinable\nmachinate\nmachinated\nmachinates\nmachinating\nmachination\nmachinations\nmachinator\nmachinators\nmachine\nmachined\nmachinelike\nmachineries\nmachinery\nmachines\nmachining\nmachinist\nmachinists\nmachismo\nmachismos\nmacho\nmachos\nmachree\nmachrees\nmachs\nmachzor\nmachzorim\nmachzors\nmacing\nmack\nmackerel\nmackerels\nmackinaw\nmackinaws\nmackintosh\nmackintoshes\nmackle\nmackled\nmackles\nmackling\nmacks\nmacle\nmacled\nmacles\nmacon\nmacrame\nmacrames\nmacro\nmacrocosm\nmacrocosms\nmacroinstruction\nmacroinstructions\nmacromolecule\nmacromolecules\nmacron\nmacrons\nmacros\nmacroscopic\nmacroscopically\nmacrural\nmacruran\nmacrurans\nmacs\nmacula\nmaculae\nmacular\nmaculas\nmaculate\nmaculated\nmaculates\nmaculating\nmacule\nmaculed\nmacules\nmaculing\nmad\nmadam\nmadame\nmadames\nmadams\nmadcap\nmadcaps\nmadded\nmadden\nmaddened\nmaddening\nmaddeningly\nmaddens\nmadder\nmadders\nmaddest\nmadding\nmaddish\nmade\nmadeira\nmadeiras\nmademoiselle\nmademoiselles\nmadhouse\nmadhouses\nmadly\nmadman\nmadmen\nmadness\nmadnesses\nmadonna\nmadonnas\nmadras\nmadrases\nmadre\nmadres\nmadrigal\nmadrigalist\nmadrigalists\nmadrigals\nmadrona\nmadronas\nmadrone\nmadrones\nmadrono\nmadronos\nmads\nmaduro\nmaduros\nmadwoman\nmadwomen\nmadwort\nmadworts\nmadzoon\nmadzoons\nmae\nmaelstrom\nmaelstroms\nmaenad\nmaenades\nmaenadic\nmaenads\nmaes\nmaestoso\nmaestosos\nmaestri\nmaestro\nmaestros\nmaffia\nmaffias\nmaffick\nmafficked\nmafficking\nmafficks\nmafia\nmafias\nmafic\nmafiosi\nmafioso\nmaftir\nmaftirs\nmag\nmagazine\nmagazines\nmagdalen\nmagdalens\nmage\nmagenta\nmagentas\nmages\nmaggot\nmaggots\nmaggoty\nmagi\nmagic\nmagical\nmagically\nmagician\nmagicians\nmagicked\nmagicking\nmagics\nmagilp\nmagilps\nmagister\nmagisterial\nmagisterially\nmagisters\nmagistracies\nmagistracy\nmagistrate\nmagistrates\nmagistrature\nmagistratures\nmagma\nmagmas\nmagmata\nmagmatic\nmagnanimities\nmagnanimity\nmagnanimous\nmagnanimously\nmagnate\nmagnates\nmagnesia\nmagnesias\nmagnesic\nmagnesium\nmagnet\nmagnetic\nmagnetically\nmagnetics\nmagnetism\nmagnetite\nmagnetites\nmagnetizable\nmagnetization\nmagnetizations\nmagnetize\nmagnetized\nmagnetizer\nmagnetizers\nmagnetizes\nmagnetizing\nmagneto\nmagneton\nmagnetons\nmagnetos\nmagnets\nmagnific\nmagnification\nmagnifications\nmagnificence\nmagnificent\nmagnificently\nmagnified\nmagnifier\nmagnifiers\nmagnifies\nmagnify\nmagnifying\nmagniloquence\nmagniloquent\nmagniloquently\nmagnitude\nmagnitudes\nmagnolia\nmagnolias\nmagnum\nmagnums\nmagot\nmagots\nmagpie\nmagpies\nmags\nmaguey\nmagueys\nmagus\nmaharaja\nmaharajah\nmaharajahs\nmaharajas\nmaharanee\nmaharanees\nmaharani\nmaharanis\nmahatma\nmahatmas\nmahjong\nmahjongg\nmahjonggs\nmahjongs\nmahoe\nmahoes\nmahoganies\nmahogany\nmahonia\nmahonias\nmahout\nmahouts\nmahuang\nmahuangs\nmahzor\nmahzorim\nmahzors\nmaid\nmaiden\nmaidenhair\nmaidenhairs\nmaidenhood\nmaidenhoods\nmaidenly\nmaidens\nmaidhood\nmaidhoods\nmaidish\nmaids\nmaidservant\nmaidservants\nmaieutic\nmaigre\nmaihem\nmaihems\nmail\nmailability\nmailable\nmailbag\nmailbags\nmailbox\nmailboxes\nmaile\nmailed\nmailer\nmailers\nmailes\nmailing\nmailings\nmaill\nmailless\nmaillot\nmaillots\nmaills\nmailman\nmailmen\nmails\nmaim\nmaimed\nmaimer\nmaimers\nmaiming\nmaims\nmain\nmainframe\nmainframes\nmainland\nmainlander\nmainlanders\nmainlands\nmainline\nmainlined\nmainlines\nmainlining\nmainly\nmainmast\nmainmasts\nmains\nmainsail\nmainsails\nmainspring\nmainsprings\nmainstay\nmainstays\nmainstream\nmainstreams\nmaintain\nmaintainability\nmaintainable\nmaintained\nmaintaining\nmaintains\nmaintenance\nmaintenances\nmaintop\nmaintops\nmaiolica\nmaiolicas\nmair\nmairs\nmaist\nmaists\nmaize\nmaizes\nmajagua\nmajaguas\nmajestic\nmajestically\nmajesties\nmajesty\nmajolica\nmajolicas\nmajor\nmajordomo\nmajordomos\nmajored\nmajorette\nmajorettes\nmajoring\nmajorities\nmajority\nmajors\nmajuscule\nmajuscules\nmakable\nmakar\nmakars\nmake\nmakeable\nmakebate\nmakebates\nmakefast\nmakefasts\nmaker\nmakers\nmakes\nmakeshift\nmakeshifts\nmakeup\nmakeups\nmakimono\nmakimonos\nmaking\nmakings\nmako\nmakos\nmakuta\nmalachite\nmalachites\nmaladapted\nmaladies\nmaladjusted\nmaladjustment\nmaladjustments\nmaladminister\nmaladministered\nmaladministering\nmaladministers\nmaladministration\nmaladministrations\nmaladroit\nmaladroitly\nmaladroitness\nmalady\nmalaise\nmalaises\nmalamute\nmalamutes\nmalapert\nmalaperts\nmalaprop\nmalapropism\nmalapropisms\nmalaprops\nmalar\nmalaria\nmalarial\nmalarian\nmalarias\nmalarkey\nmalarkeys\nmalarkies\nmalarky\nmalaroma\nmalaromas\nmalars\nmalate\nmalates\nmalcontent\nmalcontents\nmale\nmaleate\nmaleates\nmaledict\nmaledicted\nmaledicting\nmalediction\nmaledictions\nmaledicts\nmalefaction\nmalefactions\nmalefactor\nmalefactors\nmalefic\nmaleficence\nmaleficences\nmalemiut\nmalemiuts\nmalemuits\nmalemute\nmalemutes\nmaleness\nmalenesses\nmales\nmalevolence\nmalevolent\nmalevolently\nmalfeasance\nmalfeasances\nmalfed\nmalformation\nmalformations\nmalformed\nmalfunction\nmalfunctioned\nmalfunctioning\nmalfunctions\nmalgre\nmalic\nmalice\nmalices\nmalicious\nmaliciously\nmaliciousness\nmalign\nmalignance\nmalignances\nmalignancies\nmalignancy\nmalignant\nmalignantly\nmaligned\nmaligner\nmaligners\nmaligning\nmalignities\nmalignity\nmalignly\nmaligns\nmalihini\nmalihinis\nmaline\nmalines\nmalinger\nmalingered\nmalingerer\nmalingerers\nmalingering\nmalingers\nmalison\nmalisons\nmalkin\nmalkins\nmall\nmallard\nmallards\nmalleability\nmalleable\nmalled\nmallee\nmallees\nmallei\nmalleoli\nmallet\nmallets\nmalleus\nmalling\nmallow\nmallows\nmalls\nmalm\nmalmier\nmalmiest\nmalms\nmalmsey\nmalmseys\nmalmy\nmalnourished\nmalnutrition\nmalocclusion\nmalocclusions\nmalodor\nmalodorous\nmalodorously\nmalodorousness\nmalodors\nmalposed\nmalpractice\nmalpractices\nmalt\nmaltase\nmaltases\nmalted\nmalteds\nmaltha\nmalthas\nmaltier\nmaltiest\nmalting\nmaltol\nmaltols\nmaltose\nmaltoses\nmaltreat\nmaltreated\nmaltreating\nmaltreatment\nmaltreatments\nmaltreats\nmalts\nmaltster\nmaltsters\nmalty\nmalvasia\nmalvasias\nmama\nmamas\nmamba\nmambas\nmambo\nmamboed\nmamboes\nmamboing\nmambos\nmameluke\nmamelukes\nmamey\nmameyes\nmameys\nmamie\nmamies\nmamluk\nmamluks\nmamma\nmammae\nmammal\nmammalian\nmammalians\nmammals\nmammary\nmammas\nmammate\nmammati\nmammatus\nmammee\nmammees\nmammer\nmammered\nmammering\nmammers\nmammet\nmammets\nmammey\nmammeys\nmammie\nmammies\nmammilla\nmammillae\nmammitides\nmammitis\nmammock\nmammocked\nmammocking\nmammocks\nmammon\nmammonism\nmammonist\nmammonists\nmammons\nmammoth\nmammoths\nmammy\nman\nmana\nmanacle\nmanacled\nmanacles\nmanacling\nmanage\nmanageability\nmanageable\nmanageableness\nmanageably\nmanaged\nmanagement\nmanagements\nmanager\nmanagerial\nmanagerially\nmanagers\nmanagership\nmanages\nmanaging\nmanakin\nmanakins\nmanana\nmananas\nmanas\nmanatee\nmanatees\nmanatoid\nmanche\nmanches\nmanchet\nmanchets\nmanciple\nmanciples\nmandala\nmandalas\nmandalic\nmandamus\nmandamused\nmandamuses\nmandamusing\nmandarin\nmandarins\nmandataries\nmandatary\nmandate\nmandated\nmandates\nmandating\nmandator\nmandatories\nmandators\nmandatory\nmandible\nmandibles\nmandibular\nmandioca\nmandiocas\nmandola\nmandolas\nmandolin\nmandolinist\nmandolinists\nmandolins\nmandrake\nmandrakes\nmandrel\nmandrels\nmandril\nmandrill\nmandrills\nmandrils\nmane\nmaned\nmanege\nmaneges\nmaneless\nmanes\nmaneuver\nmaneuverability\nmaneuverable\nmaneuvered\nmaneuverer\nmaneuverers\nmaneuvering\nmaneuvers\nmanful\nmanfully\nmangabey\nmangabeys\nmangabies\nmangaby\nmanganese\nmanganic\nmange\nmangel\nmangels\nmanger\nmangers\nmanges\nmangey\nmangier\nmangiest\nmangily\nmangle\nmangled\nmangler\nmanglers\nmangles\nmangling\nmango\nmangoes\nmangold\nmangolds\nmangonel\nmangonels\nmangos\nmangrove\nmangroves\nmangy\nmanhandle\nmanhandled\nmanhandles\nmanhandling\nmanhattans\nmanhole\nmanholes\nmanhood\nmanhoods\nmanhunt\nmanhunts\nmania\nmaniac\nmaniacal\nmaniacally\nmaniacs\nmanias\nmanic\nmanicotti\nmanics\nmanicure\nmanicured\nmanicures\nmanicuring\nmanicurist\nmanicurists\nmanifest\nmanifestant\nmanifestants\nmanifestation\nmanifestations\nmanifested\nmanifesting\nmanifestly\nmanifesto\nmanifestoes\nmanifestos\nmanifests\nmanifold\nmanifolded\nmanifolding\nmanifolds\nmanihot\nmanihots\nmanikin\nmanikins\nmanila\nmanilas\nmanilla\nmanillas\nmanille\nmanilles\nmanioc\nmanioca\nmaniocas\nmaniocs\nmaniple\nmaniples\nmanipulability\nmanipulable\nmanipulatable\nmanipulate\nmanipulated\nmanipulates\nmanipulating\nmanipulation\nmanipulations\nmanipulative\nmanipulatively\nmanipulativeness\nmanipulator\nmanipulators\nmanipulatory\nmanito\nmanitos\nmanitou\nmanitous\nmanitu\nmanitus\nmankind\nmanless\nmanlier\nmanliest\nmanlike\nmanlily\nmanliness\nmanly\nmanmade\nmanna\nmannan\nmannans\nmannas\nmanned\nmannequin\nmannequins\nmanner\nmannered\nmannerism\nmannerisms\nmannerist\nmanneristic\nmannerists\nmannerless\nmannerliness\nmannerly\nmanners\nmannikin\nmannikins\nmanning\nmannish\nmannishly\nmannishness\nmannite\nmannites\nmannitic\nmannitol\nmannitols\nmannose\nmannoses\nmano\nmanometer\nmanometers\nmanometric\nmanometry\nmanor\nmanorial\nmanors\nmanos\nmanpack\nmanpower\nmanpowers\nmanque\nmanrope\nmanropes\nmans\nmansard\nmansards\nmanse\nmanservant\nmanses\nmansion\nmansions\nmanslaughter\nmanslaughters\nmanta\nmantas\nmanteau\nmanteaus\nmanteaux\nmantel\nmantelet\nmantelets\nmantelpiece\nmantelpieces\nmantels\nmantes\nmantic\nmantid\nmantids\nmantilla\nmantillas\nmantis\nmantises\nmantissa\nmantissas\nmantle\nmantled\nmantles\nmantlet\nmantlets\nmantling\nmantlings\nmantra\nmantrap\nmantraps\nmantras\nmantua\nmantuas\nmanual\nmanually\nmanuals\nmanuary\nmanubria\nmanufacture\nmanufactured\nmanufacturer\nmanufacturers\nmanufactures\nmanufacturing\nmanumit\nmanumits\nmanumitted\nmanumitting\nmanure\nmanured\nmanurer\nmanurers\nmanures\nmanurial\nmanuring\nmanus\nmanuscript\nmanuscripts\nmanward\nmanwards\nmanwise\nmany\nmanyfold\nmap\nmaple\nmaples\nmapmaker\nmapmakers\nmappable\nmapped\nmapper\nmappers\nmapping\nmappings\nmaps\nmaquette\nmaquettes\nmaqui\nmaquis\nmar\nmarabou\nmarabous\nmarabout\nmarabouts\nmaraca\nmaracas\nmaranta\nmarantas\nmarasca\nmarascas\nmaraschino\nmaraschinos\nmarasmic\nmarasmus\nmarasmuses\nmarathon\nmarathons\nmaraud\nmarauded\nmarauder\nmarauders\nmarauding\nmarauds\nmaravedi\nmaravedis\nmarble\nmarbled\nmarbleize\nmarbleized\nmarbleizes\nmarbleizing\nmarbler\nmarblers\nmarbles\nmarblier\nmarbliest\nmarbling\nmarblings\nmarbly\nmarc\nmarcel\nmarcelled\nmarcelling\nmarcels\nmarch\nmarched\nmarchen\nmarcher\nmarchers\nmarches\nmarchesa\nmarchese\nmarchesi\nmarching\nmarchioness\nmarchionesses\nmarcs\nmare\nmaremma\nmaremme\nmares\nmargaric\nmargarin\nmargarine\nmargarines\nmargarins\nmargay\nmargays\nmarge\nmargent\nmargented\nmargenting\nmargents\nmarges\nmargin\nmarginal\nmarginalities\nmarginality\nmarginally\nmarginate\nmarginated\nmarginates\nmarginating\nmargination\nmarginations\nmargined\nmargining\nmargins\nmargrave\nmargraves\nmaria\nmariachi\nmariachis\nmarigold\nmarigolds\nmarijuana\nmarijuanas\nmarimba\nmarimbas\nmarina\nmarinade\nmarinaded\nmarinades\nmarinading\nmarinara\nmarinaras\nmarinas\nmarinate\nmarinated\nmarinates\nmarinating\nmarine\nmariner\nmariners\nmarines\nmarionette\nmarionettes\nmariposa\nmariposas\nmarish\nmarishes\nmarital\nmaritally\nmaritime\nmarjoram\nmarjorams\nmark\nmarkdown\nmarkdowns\nmarked\nmarkedly\nmarker\nmarkers\nmarket\nmarketability\nmarketable\nmarketed\nmarketer\nmarketers\nmarketing\nmarketplace\nmarketplaces\nmarkets\nmarkhoor\nmarkhoors\nmarkhor\nmarkhors\nmarking\nmarkings\nmarkka\nmarkkaa\nmarkkas\nmarks\nmarksman\nmarksmanship\nmarksmen\nmarkup\nmarkups\nmarl\nmarled\nmarlier\nmarliest\nmarlin\nmarline\nmarlines\nmarling\nmarlings\nmarlins\nmarlite\nmarlites\nmarlitic\nmarls\nmarly\nmarmalade\nmarmalades\nmarmite\nmarmites\nmarmoset\nmarmosets\nmarmot\nmarmots\nmaroon\nmarooned\nmarooning\nmaroons\nmarplot\nmarplots\nmarque\nmarquee\nmarquees\nmarques\nmarquess\nmarquesses\nmarquetries\nmarquetry\nmarquis\nmarquise\nmarquises\nmarquisette\nmarquisettes\nmarram\nmarrams\nmarred\nmarrer\nmarrers\nmarriage\nmarriageable\nmarriages\nmarried\nmarrieds\nmarrier\nmarriers\nmarries\nmarring\nmarron\nmarrons\nmarrow\nmarrowed\nmarrowing\nmarrows\nmarrowy\nmarry\nmarrying\nmars\nmarse\nmarses\nmarsh\nmarshal\nmarshalcy\nmarshaled\nmarshaling\nmarshall\nmarshalled\nmarshalling\nmarshalls\nmarshals\nmarshes\nmarshier\nmarshiest\nmarshiness\nmarshlike\nmarshmallow\nmarshmallows\nmarshmallowy\nmarshy\nmarsupia\nmarsupial\nmarsupials\nmart\nmartagon\nmartagons\nmarted\nmartello\nmartellos\nmarten\nmartens\nmartial\nmartially\nmartian\nmartians\nmartin\nmartinet\nmartinets\nmarting\nmartingale\nmartingales\nmartini\nmartinis\nmartins\nmartlet\nmartlets\nmarts\nmartyr\nmartyrdom\nmartyrdoms\nmartyred\nmartyries\nmartyring\nmartyrization\nmartyrizations\nmartyrize\nmartyrized\nmartyrizes\nmartyrizing\nmartyrly\nmartyrs\nmartyry\nmarvel\nmarveled\nmarveling\nmarvelled\nmarvelling\nmarvellous\nmarvelous\nmarvelously\nmarvelousness\nmarvels\nmarvy\nmarzipan\nmarzipans\nmas\nmascara\nmascaras\nmascon\nmascons\nmascot\nmascots\nmasculine\nmasculinely\nmasculinity\nmasculinization\nmasculinize\nmasculinized\nmasculinizes\nmasculinizing\nmaser\nmasers\nmash\nmashed\nmasher\nmashers\nmashes\nmashie\nmashies\nmashing\nmashy\nmasjid\nmasjids\nmask\nmaskable\nmasked\nmaskeg\nmaskegs\nmasker\nmaskers\nmasking\nmaskings\nmasklike\nmasks\nmasochism\nmasochist\nmasochistic\nmasochistically\nmasochists\nmason\nmasoned\nmasonic\nmasoning\nmasonries\nmasonry\nmasons\nmasque\nmasquer\nmasquerade\nmasqueraded\nmasquerader\nmasqueraders\nmasquerades\nmasquerading\nmasquers\nmasques\nmass\nmassa\nmassacre\nmassacred\nmassacres\nmassacring\nmassage\nmassaged\nmassager\nmassagers\nmassages\nmassaging\nmassas\nmasse\nmassed\nmassedly\nmasses\nmasseter\nmasseters\nmasseur\nmasseurs\nmasseuse\nmasseuses\nmassicot\nmassicots\nmassier\nmassiest\nmassif\nmassifs\nmassing\nmassive\nmassively\nmassiveness\nmassless\nmassy\nmast\nmastaba\nmastabah\nmastabahs\nmastabas\nmasted\nmaster\nmastered\nmasterful\nmasterfully\nmasteries\nmastering\nmasterly\nmastermind\nmasterminded\nmasterminding\nmasterminds\nmasterpiece\nmasterpieces\nmasters\nmastership\nmasterwork\nmasterworks\nmastery\nmasthead\nmastheaded\nmastheading\nmastheads\nmastic\nmasticate\nmasticated\nmasticates\nmasticating\nmastication\nmastications\nmasticator\nmasticatories\nmasticators\nmasticatory\nmastiche\nmastiches\nmastics\nmastiff\nmastiffs\nmasting\nmastitic\nmastitides\nmastitis\nmastititides\nmastix\nmastixes\nmastless\nmastlike\nmastodon\nmastodons\nmastoid\nmastoids\nmasts\nmasturbate\nmasturbated\nmasturbates\nmasturbating\nmasturbation\nmasturbations\nmasturbator\nmasturbators\nmasturbatory\nmasurium\nmasuriums\nmat\nmatador\nmatadors\nmatch\nmatchable\nmatchbox\nmatchboxes\nmatched\nmatcher\nmatchers\nmatches\nmatching\nmatchless\nmatchlessly\nmatchlessness\nmatchmaker\nmatchmakers\nmate\nmated\nmateless\nmatelote\nmatelotes\nmater\nmaterial\nmaterialism\nmaterialist\nmaterialistic\nmaterialistically\nmaterialists\nmaterialities\nmateriality\nmaterialization\nmaterializations\nmaterialize\nmaterialized\nmaterializes\nmaterializing\nmaterially\nmaterialness\nmaterials\nmateriel\nmateriels\nmaternal\nmaternally\nmaternities\nmaternity\nmaters\nmates\nmateship\nmateships\nmatey\nmateys\nmath\nmathematical\nmathematically\nmathematician\nmathematicians\nmathematics\nmaths\nmatilda\nmatildas\nmatin\nmatinal\nmatinee\nmatinees\nmatiness\nmatinesses\nmating\nmatings\nmatins\nmatless\nmatrass\nmatrasses\nmatres\nmatriarch\nmatriarchal\nmatriarchate\nmatriarchates\nmatriarchies\nmatriarchs\nmatriarchy\nmatrices\nmatricidal\nmatricide\nmatricides\nmatriculant\nmatriculants\nmatriculate\nmatriculated\nmatriculates\nmatriculating\nmatriculation\nmatriculations\nmatrimonial\nmatrimonially\nmatrimony\nmatrix\nmatrixes\nmatron\nmatronal\nmatronly\nmatrons\nmats\nmatt\nmatte\nmatted\nmattedly\nmatter\nmattered\nmattering\nmatters\nmattery\nmattes\nmattin\nmatting\nmattings\nmattins\nmattock\nmattocks\nmattoid\nmattoids\nmattrass\nmattrasses\nmattress\nmattresses\nmatts\nmaturate\nmaturated\nmaturates\nmaturating\nmaturation\nmaturational\nmaturations\nmature\nmatured\nmaturely\nmaturer\nmatures\nmaturest\nmaturing\nmaturities\nmaturity\nmatza\nmatzah\nmatzahs\nmatzas\nmatzo\nmatzoh\nmatzohs\nmatzoon\nmatzoons\nmatzos\nmatzot\nmatzoth\nmaud\nmaudlin\nmauds\nmauger\nmaugre\nmaul\nmauled\nmauler\nmaulers\nmauling\nmauls\nmaumet\nmaumetries\nmaumetry\nmaumets\nmaun\nmaund\nmaunder\nmaundered\nmaundering\nmaunders\nmaundies\nmaunds\nmaundy\nmausolea\nmausoleum\nmausoleums\nmaut\nmauts\nmauve\nmauves\nmaven\nmavens\nmaverick\nmavericks\nmavie\nmavies\nmavin\nmavins\nmavis\nmavises\nmaw\nmawed\nmawing\nmawkish\nmawkishly\nmawkishness\nmawn\nmaws\nmaxi\nmaxicoat\nmaxicoats\nmaxilla\nmaxillae\nmaxillas\nmaxim\nmaxima\nmaximal\nmaximally\nmaximals\nmaximin\nmaximins\nmaximise\nmaximised\nmaximises\nmaximising\nmaximite\nmaximites\nmaximization\nmaximizations\nmaximize\nmaximized\nmaximizer\nmaximizers\nmaximizes\nmaximizing\nmaxims\nmaximum\nmaximums\nmaxis\nmaxixe\nmaxixes\nmaxwell\nmaxwells\nmay\nmaya\nmayan\nmayapple\nmayapples\nmayas\nmaybe\nmaybush\nmaybushes\nmayday\nmaydays\nmayed\nmayest\nmayflies\nmayflower\nmayflowers\nmayfly\nmayhap\nmayhem\nmayhems\nmaying\nmayings\nmayo\nmayonnaise\nmayonnaises\nmayor\nmayoral\nmayoralties\nmayoralty\nmayoress\nmayoresses\nmayors\nmayos\nmaypole\nmaypoles\nmaypop\nmaypops\nmays\nmayst\nmayvin\nmayvins\nmayweed\nmayweeds\nmazaedia\nmazard\nmazards\nmaze\nmazed\nmazedly\nmazelike\nmazer\nmazers\nmazes\nmazier\nmaziest\nmazily\nmaziness\nmazinesses\nmazing\nmazourka\nmazourkas\nmazuma\nmazumas\nmazurka\nmazurkas\nmazy\nmazzard\nmazzards\nmbira\nmbiras\nme\nmead\nmeadow\nmeadowlark\nmeadowlarks\nmeadows\nmeadowy\nmeads\nmeager\nmeagerly\nmeagerness\nmeagre\nmeagrely\nmeal\nmealie\nmealier\nmealies\nmealiest\nmealless\nmeals\nmealtime\nmealtimes\nmealworm\nmealworms\nmealy\nmealybug\nmealybugs\nmealymouthed\nmean\nmeander\nmeandered\nmeandering\nmeanders\nmeaner\nmeaners\nmeanest\nmeanie\nmeanies\nmeaning\nmeaningful\nmeaningfully\nmeaningfulness\nmeaningless\nmeaninglessly\nmeaninglessness\nmeanings\nmeanly\nmeanness\nmeannesses\nmeans\nmeant\nmeantime\nmeantimes\nmeanwhile\nmeany\nmeasle\nmeasled\nmeasles\nmeaslier\nmeasliest\nmeasly\nmeasurability\nmeasurable\nmeasurably\nmeasure\nmeasured\nmeasuredly\nmeasureless\nmeasurement\nmeasurements\nmeasurer\nmeasurers\nmeasures\nmeasuring\nmeat\nmeatal\nmeatball\nmeatballs\nmeathead\nmeatheads\nmeatier\nmeatiest\nmeatily\nmeatiness\nmeatless\nmeatman\nmeatmen\nmeats\nmeatus\nmeatuses\nmeaty\nmecca\nmeccas\nmechanic\nmechanical\nmechanically\nmechanician\nmechanicians\nmechanics\nmechanism\nmechanisms\nmechanist\nmechanistic\nmechanistically\nmechanists\nmechanization\nmechanizations\nmechanize\nmechanized\nmechanizer\nmechanizers\nmechanizes\nmechanizing\nmeconium\nmeconiums\nmed\nmedaka\nmedakas\nmedal\nmedaled\nmedaling\nmedalist\nmedalists\nmedalled\nmedallic\nmedalling\nmedallion\nmedallions\nmedallist\nmedallists\nmedals\nmeddle\nmeddled\nmeddler\nmeddlers\nmeddles\nmeddlesome\nmeddling\nmedia\nmediacies\nmediacy\nmediad\nmediae\nmediaeval\nmedial\nmedially\nmedials\nmedian\nmedianly\nmedians\nmediant\nmediants\nmedias\nmediate\nmediated\nmediates\nmediating\nmediation\nmediations\nmediator\nmediators\nmediatory\nmedic\nmedicable\nmedicaid\nmedicaids\nmedical\nmedically\nmedicals\nmedicament\nmedicamentous\nmedicaments\nmedicare\nmedicares\nmedicate\nmedicated\nmedicates\nmedicating\nmedication\nmedications\nmedicinal\nmedicinally\nmedicine\nmedicined\nmedicines\nmedicining\nmedick\nmedicks\nmedico\nmedicos\nmedics\nmedieval\nmedievalism\nmedievalist\nmedievalists\nmedievally\nmedievals\nmedii\nmediocre\nmediocrities\nmediocrity\nmeditate\nmeditated\nmeditates\nmeditating\nmeditatingly\nmeditation\nmeditations\nmeditative\nmeditatively\nmeditativeness\nmeditator\nmeditators\nmedium\nmediums\nmedius\nmedlar\nmedlars\nmedley\nmedleys\nmedulla\nmedullae\nmedullar\nmedullary\nmedullas\nmedusa\nmedusae\nmedusan\nmedusans\nmedusas\nmedusoid\nmedusoids\nmeed\nmeeds\nmeek\nmeeker\nmeekest\nmeekly\nmeekness\nmeeknesses\nmeerschaum\nmeerschaums\nmeet\nmeeter\nmeeters\nmeeting\nmeetinghouse\nmeetinghouses\nmeetings\nmeetly\nmeetness\nmeetnesses\nmeets\nmegabar\nmegabars\nmegabit\nmegabits\nmegabuck\nmegabucks\nmegacycle\nmegacycles\nmegadyne\nmegadynes\nmegahertz\nmegalith\nmegalithic\nmegaliths\nmegalomania\nmegalomaniac\nmegalomaniacal\nmegalomaniacally\nmegalomaniacs\nmegalomanias\nmegalomanic\nmegalopolis\nmegalopolises\nmegalopolitan\nmegalopolitanism\nmegalopolitans\nmegaphone\nmegaphones\nmegaphonic\nmegapod\nmegapode\nmegapodes\nmegass\nmegasse\nmegasses\nmegaton\nmegatons\nmegavolt\nmegavolts\nmegawatt\nmegawatts\nmegillah\nmegillahs\nmegilp\nmegilph\nmegilphs\nmegilps\nmegohm\nmegohms\nmegrim\nmegrims\nmeikle\nmeinie\nmeinies\nmeiny\nmeioses\nmeiosis\nmeiotic\nmel\nmelamine\nmelamines\nmelancholia\nmelancholiac\nmelancholiacs\nmelancholic\nmelancholies\nmelancholy\nmelange\nmelanges\nmelanian\nmelanic\nmelanics\nmelanin\nmelanins\nmelanism\nmelanisms\nmelanist\nmelanists\nmelanite\nmelanites\nmelanize\nmelanized\nmelanizes\nmelanizing\nmelanoid\nmelanoids\nmelanoma\nmelanomas\nmelanomata\nmelanous\nmeld\nmelded\nmelder\nmelders\nmelding\nmelds\nmelee\nmelees\nmelic\nmelilite\nmelilites\nmelilot\nmelilots\nmelinite\nmelinites\nmeliorate\nmeliorated\nmeliorates\nmeliorating\nmelioration\nmeliorations\nmeliorative\nmeliorator\nmeliorators\nmelisma\nmelismas\nmelismata\nmell\nmelled\nmellific\nmellifluous\nmellifluously\nmellifluousness\nmelling\nmellow\nmellowed\nmellower\nmellowest\nmellowing\nmellowly\nmellowness\nmellows\nmells\nmelodeon\nmelodeons\nmelodia\nmelodias\nmelodic\nmelodically\nmelodies\nmelodious\nmelodiously\nmelodiousness\nmelodise\nmelodised\nmelodises\nmelodising\nmelodist\nmelodists\nmelodize\nmelodized\nmelodizes\nmelodizing\nmelodrama\nmelodramas\nmelodramatic\nmelodramatically\nmelodramatics\nmelodramatist\nmelodramatists\nmelody\nmeloid\nmeloids\nmelon\nmelons\nmels\nmelt\nmeltability\nmeltable\nmeltage\nmeltages\nmelted\nmelter\nmelters\nmelting\nmeltingly\nmelton\nmeltons\nmelts\nmem\nmember\nmembered\nmembers\nmembership\nmemberships\nmembrane\nmembranes\nmembranous\nmemento\nmementoes\nmementos\nmemo\nmemoir\nmemoirist\nmemoirists\nmemoirs\nmemorabilia\nmemorability\nmemorable\nmemorableness\nmemorably\nmemoranda\nmemorandum\nmemorandums\nmemorial\nmemorialist\nmemorialists\nmemorialize\nmemorialized\nmemorializes\nmemorializing\nmemorially\nmemorials\nmemories\nmemorizable\nmemorization\nmemorizations\nmemorize\nmemorized\nmemorizer\nmemorizers\nmemorizes\nmemorizing\nmemory\nmemos\nmems\nmemsahib\nmemsahibs\nmen\nmenace\nmenaced\nmenacer\nmenacers\nmenaces\nmenacing\nmenacingly\nmenad\nmenads\nmenage\nmenagerie\nmenageries\nmenages\nmenarche\nmenarches\nmend\nmendable\nmendacious\nmendaciously\nmendaciousness\nmendacities\nmendacity\nmended\nmender\nmenders\nmendicancy\nmendicant\nmendicants\nmendigo\nmendigos\nmending\nmendings\nmends\nmenfolk\nmenfolks\nmenhaden\nmenhadens\nmenhir\nmenhirs\nmenial\nmenially\nmenials\nmeninges\nmeningitides\nmeningitis\nmeninx\nmeniscal\nmenisci\nmeniscus\nmeniscuses\nmeno\nmenologies\nmenology\nmenopausal\nmenopause\nmenorah\nmenorahs\nmensa\nmensae\nmensal\nmensas\nmensch\nmenschen\nmensches\nmense\nmensed\nmenseful\nmenservants\nmenses\nmensing\nmenstrua\nmenstrual\nmenstruate\nmenstruated\nmenstruates\nmenstruating\nmenstruation\nmenstruations\nmensural\nmensuration\nmensurations\nmenswear\nmenswears\nmenta\nmental\nmentalism\nmentalist\nmentalistic\nmentalists\nmentalities\nmentality\nmentally\nmenthene\nmenthenes\nmenthol\nmentholated\nmenthols\nmention\nmentionable\nmentioned\nmentioning\nmentions\nmentor\nmentors\nmentum\nmenu\nmenus\nmeou\nmeous\nmeow\nmeowed\nmeowing\nmeows\nmephitic\nmephitis\nmephitises\nmercantile\nmercantilism\nmercantilist\nmercantilists\nmercapto\nmercenaries\nmercenarily\nmercenariness\nmercenary\nmercer\nmerceries\nmercerize\nmercerized\nmercerizes\nmercerizing\nmercers\nmercery\nmerchandise\nmerchandised\nmerchandiser\nmerchandisers\nmerchandises\nmerchandising\nmerchant\nmerchantability\nmerchantable\nmerchanted\nmerchanting\nmerchants\nmercies\nmerciful\nmercifully\nmercifulness\nmerciless\nmercilessly\nmercilessness\nmercurial\nmercurially\nmercuric\nmercuries\nmercurous\nmercury\nmercy\nmerde\nmere\nmerely\nmerengue\nmerengues\nmerer\nmeres\nmerest\nmeretricious\nmeretriciously\nmeretriciousness\nmerganser\nmergansers\nmerge\nmerged\nmergence\nmergences\nmerger\nmergers\nmerges\nmerging\nmeridian\nmeridians\nmeringue\nmeringues\nmerino\nmerinos\nmerises\nmerisis\nmeristem\nmeristems\nmeristic\nmerit\nmerited\nmeriting\nmeritorious\nmeritoriously\nmeritoriousness\nmerits\nmerk\nmerks\nmerl\nmerle\nmerles\nmerlin\nmerlins\nmerlon\nmerlons\nmerls\nmermaid\nmermaids\nmerman\nmermen\nmeropia\nmeropias\nmeropic\nmerrier\nmerriest\nmerrily\nmerriment\nmerriments\nmerriness\nmerry\nmerrymaking\nmesa\nmesally\nmesarch\nmesas\nmescal\nmescaline\nmescals\nmesdames\nmesdemoiselles\nmeseemed\nmeseems\nmesh\nmeshed\nmeshes\nmeshier\nmeshiest\nmeshing\nmeshwork\nmeshworks\nmeshy\nmesial\nmesially\nmesian\nmesic\nmesmeric\nmesmerism\nmesmerist\nmesmerists\nmesmerize\nmesmerized\nmesmerizer\nmesmerizers\nmesmerizes\nmesmerizing\nmesnalties\nmesnalty\nmesne\nmesocarp\nmesocarps\nmesoderm\nmesodermal\nmesoderms\nmesoglea\nmesogleas\nmesomere\nmesomeres\nmeson\nmesonic\nmesons\nmesophyl\nmesophyls\nmesosome\nmesosomes\nmesotron\nmesotrons\nmesquit\nmesquite\nmesquites\nmesquits\nmess\nmessage\nmessages\nmessan\nmessans\nmessed\nmessenger\nmessengers\nmesses\nmessiah\nmessiahs\nmessianic\nmessier\nmessiest\nmessieurs\nmessily\nmessiness\nmessing\nmessman\nmessmate\nmessmates\nmessmen\nmessuage\nmessuages\nmessy\nmestee\nmestees\nmesteso\nmestesoes\nmestesos\nmestino\nmestinoes\nmestinos\nmestiza\nmestizas\nmestizo\nmestizoes\nmestizos\nmet\nmeta\nmetabolic\nmetabolically\nmetabolism\nmetabolisms\nmetabolite\nmetabolites\nmetabolizable\nmetabolize\nmetabolized\nmetabolizes\nmetabolizing\nmetage\nmetages\nmetal\nmetaled\nmetaling\nmetalise\nmetalised\nmetalises\nmetalising\nmetalist\nmetalists\nmetalize\nmetalized\nmetalizes\nmetalizing\nmetalled\nmetallic\nmetallically\nmetalling\nmetallization\nmetallizations\nmetallize\nmetallized\nmetallizes\nmetallizing\nmetallurgical\nmetallurgically\nmetallurgist\nmetallurgists\nmetallurgy\nmetals\nmetalwork\nmetalworker\nmetalworkers\nmetalworking\nmetamer\nmetamere\nmetameres\nmetamers\nmetamorphism\nmetamorphisms\nmetamorphose\nmetamorphosed\nmetamorphoses\nmetamorphosing\nmetamorphosis\nmetaphor\nmetaphoric\nmetaphorical\nmetaphorically\nmetaphors\nmetaphysical\nmetaphysically\nmetaphysician\nmetaphysicians\nmetaphysics\nmetastability\nmetastable\nmetastasize\nmetastasized\nmetastasizes\nmetastasizing\nmetastatic\nmetastatically\nmetatarsal\nmetatarsals\nmetate\nmetates\nmetathetic\nmetathetical\nmetazoa\nmetazoal\nmetazoan\nmetazoans\nmetazoic\nmetazoon\nmete\nmeted\nmeteor\nmeteoric\nmeteorically\nmeteorite\nmeteorites\nmeteoritic\nmeteoritical\nmeteoritics\nmeteoroid\nmeteoroids\nmeteorologic\nmeteorological\nmeteorologically\nmeteorologist\nmeteorologists\nmeteorology\nmeteors\nmetepa\nmetepas\nmeter\nmeterage\nmeterages\nmetered\nmetering\nmeters\nmetes\nmeth\nmethadon\nmethadone\nmethadons\nmethane\nmethanes\nmethanol\nmethanols\nmethinks\nmethod\nmethodic\nmethodical\nmethodically\nmethodicalness\nmethodist\nmethodistic\nmethodists\nmethodize\nmethodized\nmethodizes\nmethodizing\nmethodological\nmethodologically\nmethodologies\nmethodologist\nmethodologists\nmethodology\nmethods\nmethought\nmethoxy\nmethoxyl\nmeths\nmethyl\nmethylal\nmethylals\nmethylic\nmethyls\nmeticulosity\nmeticulous\nmeticulously\nmeticulousness\nmetier\nmetiers\nmeting\nmetis\nmetisse\nmetisses\nmetonym\nmetonymic\nmetonymical\nmetonymies\nmetonyms\nmetonymy\nmetopae\nmetope\nmetopes\nmetopic\nmetopon\nmetopons\nmetre\nmetred\nmetres\nmetric\nmetrical\nmetrically\nmetrication\nmetrics\nmetrified\nmetrifies\nmetrify\nmetrifying\nmetring\nmetrist\nmetrists\nmetritis\nmetritises\nmetro\nmetrological\nmetrologically\nmetrologies\nmetrologist\nmetrologists\nmetrology\nmetronome\nmetronomes\nmetronomic\nmetropolis\nmetropolises\nmetropolitan\nmetropolitans\nmetros\nmettle\nmettled\nmettles\nmettlesome\nmetump\nmetumps\nmeuniere\nmew\nmewed\nmewing\nmewl\nmewled\nmewler\nmewlers\nmewling\nmewls\nmews\nmezcal\nmezcals\nmezereon\nmezereons\nmezereum\nmezereums\nmezquit\nmezquite\nmezquites\nmezquits\nmezuza\nmezuzah\nmezuzahs\nmezuzas\nmezuzot\nmezuzoth\nmezzanine\nmezzanines\nmezzo\nmezzos\nmho\nmhos\nmi\nmiaou\nmiaoued\nmiaouing\nmiaous\nmiaow\nmiaowed\nmiaowing\nmiaows\nmiasm\nmiasma\nmiasmal\nmiasmas\nmiasmata\nmiasmatic\nmiasmic\nmiasms\nmiaul\nmiauled\nmiauling\nmiauls\nmib\nmibs\nmica\nmicas\nmicawber\nmicawbers\nmice\nmicell\nmicella\nmicellae\nmicellar\nmicelle\nmicelles\nmicells\nmiche\nmick\nmickey\nmickeys\nmickle\nmickler\nmickles\nmicklest\nmicks\nmicra\nmicrified\nmicrifies\nmicrify\nmicrifying\nmicro\nmicroampere\nmicroamperes\nmicrobar\nmicrobars\nmicrobe\nmicrobes\nmicrobial\nmicrobic\nmicrobiological\nmicrobiologist\nmicrobiologists\nmicrobus\nmicrobuses\nmicrobusses\nmicrochip\nmicrochips\nmicrocircuit\nmicrocircuitries\nmicrocircuitry\nmicrocircuits\nmicrocode\nmicrocoded\nmicrocodes\nmicrocomputer\nmicrocomputers\nmicrocopies\nmicrocopy\nmicrocosm\nmicrocosmic\nmicrocosmically\nmicrocosmos\nmicrocosms\nmicroelectronic\nmicroelectronics\nmicrofarad\nmicrofarads\nmicrofiche\nmicrofiches\nmicrofilm\nmicrofilmed\nmicrofilming\nmicrofilms\nmicroform\nmicroforms\nmicrogram\nmicrograms\nmicrograph\nmicrographed\nmicrographic\nmicrographically\nmicrographics\nmicrographing\nmicrographs\nmicrogroove\nmicrogrooves\nmicrohm\nmicrohms\nmicroimage\nmicroimages\nmicroinstruction\nmicroinstructions\nmicroliter\nmicroliters\nmicroluces\nmicrolux\nmicroluxes\nmicrometer\nmicrometers\nmicrometries\nmicrometry\nmicromho\nmicromhos\nmicrominiature\nmicrominiaturization\nmicrominiaturized\nmicron\nmicronize\nmicronized\nmicronizes\nmicronizing\nmicrons\nmicroorganism\nmicroorganisms\nmicrophone\nmicrophones\nmicroprocessor\nmicroprocessors\nmicroprogram\nmicroprogramming\nmicroprograms\nmicropublisher\nmicropublishers\nmicropublishing\nmicroreader\nmicroreaders\nmicroscope\nmicroscopes\nmicroscopic\nmicroscopical\nmicroscopically\nmicroscopist\nmicroscopists\nmicroscopy\nmicrosecond\nmicroseconds\nmicrovolt\nmicrovolts\nmicrowave\nmicrowaves\nmicrurgies\nmicrurgy\nmid\nmidair\nmidairs\nmidbrain\nmidbrains\nmidday\nmiddays\nmidden\nmiddens\nmiddies\nmiddle\nmiddlebrow\nmiddlebrows\nmiddled\nmiddleman\nmiddlemen\nmiddler\nmiddlers\nmiddles\nmiddleweight\nmiddleweights\nmiddling\nmiddlingly\nmiddlings\nmiddy\nmidfield\nmidfields\nmidge\nmidges\nmidget\nmidgets\nmidgut\nmidguts\nmidi\nmidiron\nmidirons\nmidis\nmidland\nmidlands\nmidleg\nmidlegs\nmidline\nmidlines\nmidmonth\nmidmonths\nmidmost\nmidmosts\nmidnight\nmidnights\nmidnoon\nmidnoons\nmidpoint\nmidpoints\nmidrange\nmidranges\nmidrash\nmidrashim\nmidrib\nmidribs\nmidriff\nmidriffs\nmids\nmidship\nmidshipman\nmidshipmen\nmidships\nmidspace\nmidspaces\nmidst\nmidstories\nmidstory\nmidstream\nmidstreams\nmidsts\nmidsummer\nmidsummers\nmidterm\nmidterms\nmidtown\nmidtowns\nmidwatch\nmidwatches\nmidway\nmidways\nmidweek\nmidweeks\nmidwife\nmidwifed\nmidwifery\nmidwifes\nmidwifing\nmidwinter\nmidwinters\nmidwived\nmidwives\nmidwiving\nmidyear\nmidyears\nmien\nmiens\nmies\nmiff\nmiffed\nmiffier\nmiffiest\nmiffing\nmiffs\nmiffy\nmig\nmigg\nmiggle\nmiggles\nmiggs\nmight\nmightier\nmightiest\nmightily\nmightiness\nmights\nmighty\nmignon\nmignonette\nmignonettes\nmignonne\nmignons\nmigraine\nmigraines\nmigrant\nmigrants\nmigrate\nmigrated\nmigrates\nmigrating\nmigration\nmigrations\nmigrator\nmigrators\nmigratory\nmigs\nmijnheer\nmijnheers\nmikado\nmikados\nmike\nmiked\nmikes\nmikra\nmikron\nmikrons\nmikvah\nmikvahs\nmikveh\nmikvehs\nmikvoth\nmil\nmiladi\nmiladies\nmiladis\nmilady\nmilage\nmilages\nmilch\nmilchig\nmild\nmilden\nmildened\nmildening\nmildens\nmilder\nmildest\nmildew\nmildewed\nmildewing\nmildews\nmildewy\nmildly\nmildness\nmildnesses\nmile\nmileage\nmileages\nmilepost\nmileposts\nmiler\nmilers\nmiles\nmilesimo\nmilesimos\nmilestone\nmilestones\nmilfoil\nmilfoils\nmilia\nmiliaria\nmiliarias\nmiliary\nmilieu\nmilieus\nmilieux\nmilitancy\nmilitant\nmilitantly\nmilitantness\nmilitants\nmilitaries\nmilitarily\nmilitarism\nmilitarist\nmilitaristic\nmilitaristically\nmilitarists\nmilitarization\nmilitarize\nmilitarized\nmilitarizes\nmilitarizing\nmilitary\nmilitate\nmilitated\nmilitates\nmilitating\nmilitia\nmilitiaman\nmilitiamen\nmilitias\nmilium\nmilk\nmilked\nmilker\nmilkers\nmilkfish\nmilkfishes\nmilkier\nmilkiest\nmilkily\nmilkiness\nmilking\nmilkmaid\nmilkmaids\nmilkman\nmilkmen\nmilks\nmilksop\nmilksops\nmilkweed\nmilkweeds\nmilkwood\nmilkwoods\nmilkwort\nmilkworts\nmilky\nmill\nmillable\nmillage\nmillages\nmilldam\nmilldams\nmille\nmilled\nmillenaries\nmillenary\nmillennia\nmillennium\nmillenniums\nmilleped\nmillepeds\nmiller\nmillers\nmilles\nmillet\nmillets\nmilliampere\nmilliamperes\nmilliard\nmilliards\nmilliare\nmilliares\nmilliary\nmillibar\nmillibars\nmillieme\nmilliemes\nmillier\nmilliers\nmilligal\nmilligals\nmilligram\nmilligrams\nmillihenries\nmillihenry\nmillihenrys\nmilliliter\nmilliliters\nmilliluces\nmillilux\nmilliluxes\nmillime\nmillimes\nmillimeter\nmillimeters\nmillimho\nmillimhos\nmilline\nmilliner\nmillineries\nmilliners\nmillinery\nmillines\nmilling\nmillings\nmilliohm\nmilliohms\nmillion\nmillionaire\nmillionaires\nmillions\nmillionth\nmillionths\nmilliped\nmillipede\nmillipedes\nmillipeds\nmillirem\nmillirems\nmillisecond\nmilliseconds\nmillivolt\nmillivolts\nmillpond\nmillponds\nmillrace\nmillraces\nmillrun\nmillruns\nmills\nmillstone\nmillstones\nmillstream\nmillstreams\nmillwork\nmillworks\nmillwright\nmillwrights\nmilo\nmilord\nmilords\nmilos\nmilpa\nmilpas\nmilreis\nmils\nmilt\nmilted\nmilter\nmilters\nmiltier\nmiltiest\nmilting\nmilts\nmilty\nmim\nmimbar\nmimbars\nmime\nmimed\nmimeo\nmimeograph\nmimeographed\nmimeographing\nmimeographs\nmimer\nmimers\nmimes\nmimesis\nmimesises\nmimetic\nmimetically\nmimetite\nmimetites\nmimic\nmimical\nmimicked\nmimicker\nmimickers\nmimicking\nmimicries\nmimicry\nmimics\nmiming\nmimosa\nmimosas\nmina\nminable\nminacities\nminacity\nminae\nminaret\nminarets\nminas\nminatory\nmince\nminced\nmincemeat\nmincemeats\nmincer\nmincers\nminces\nmincier\nminciest\nmincing\nmincingly\nmincy\nmind\nminded\nminder\nminders\nmindful\nmindfully\nmindfulness\nminding\nmindless\nmindlessly\nmindlessness\nminds\nmine\nmineable\nmined\nminelayer\nminelayers\nminer\nmineral\nmineralization\nmineralizations\nmineralize\nmineralized\nmineralizes\nmineralizing\nmineralogical\nmineralogist\nmineralogists\nmineralogy\nminerals\nminers\nmines\nminestrone\nminesweeper\nminesweepers\nmingier\nmingiest\nmingle\nmingled\nmingler\nminglers\nmingles\nmingling\nmingy\nmini\nminiature\nminiatures\nminiaturist\nminiaturists\nminiaturization\nminiaturizations\nminiaturize\nminiaturized\nminiaturizes\nminiaturizing\nminibike\nminibikes\nminibus\nminibuses\nminibusses\nminicab\nminicabs\nminicar\nminicars\nminicomputer\nminicomputers\nminified\nminifies\nminify\nminifying\nminikin\nminikins\nminim\nminima\nminimal\nminimally\nminimals\nminimax\nminimaxes\nminimise\nminimised\nminimises\nminimising\nminimization\nminimizations\nminimize\nminimized\nminimizer\nminimizers\nminimizes\nminimizing\nminims\nminimum\nminimums\nmining\nminings\nminion\nminions\nminis\nminish\nminished\nminishes\nminishing\nminiskirt\nminiskirted\nminiskirts\nminister\nministered\nministerial\nministerially\nministering\nministers\nministrant\nministrants\nministration\nministrations\nministries\nministry\nminitrack\nminitracks\nminium\nminiums\nminiver\nminivers\nmink\nminke\nminks\nminnesinger\nminnesingers\nminnies\nminnow\nminnows\nminny\nminor\nminorca\nminorcas\nminored\nminoring\nminorities\nminority\nminors\nminster\nminsters\nminstrel\nminstrels\nminstrelsies\nminstrelsy\nmint\nmintage\nmintages\nminted\nminter\nminters\nmintier\nmintiest\nminting\nmints\nminty\nminuend\nminuends\nminuet\nminuets\nminus\nminuscule\nminuscules\nminuses\nminute\nminuted\nminutely\nminuteman\nminutemen\nminuteness\nminuter\nminutes\nminutest\nminutia\nminutiae\nminutial\nminuting\nminx\nminxes\nminxish\nminyan\nminyanim\nminyans\nmioses\nmiosis\nmiotic\nmiotics\nmiquelet\nmiquelets\nmir\nmiracle\nmiracles\nmiraculous\nmiraculously\nmiraculousness\nmirador\nmiradors\nmirage\nmirages\nmire\nmired\nmires\nmirex\nmirexes\nmiri\nmirier\nmiriest\nmiriness\nmirinesses\nmiring\nmirk\nmirker\nmirkest\nmirkier\nmirkiest\nmirkily\nmirks\nmirky\nmirror\nmirrored\nmirroring\nmirrorlike\nmirrors\nmirs\nmirth\nmirthful\nmirthfully\nmirthfulness\nmirthless\nmirthlessly\nmirths\nmiry\nmirza\nmirzas\nmis\nmisact\nmisacted\nmisacting\nmisacts\nmisadapt\nmisadapted\nmisadapting\nmisadapts\nmisadd\nmisadded\nmisadding\nmisadds\nmisadventure\nmisadventures\nmisadvise\nmisadvised\nmisadvises\nmisadvising\nmisagent\nmisagents\nmisaim\nmisaimed\nmisaiming\nmisaims\nmisaligned\nmisalignment\nmisalliance\nmisalliances\nmisallied\nmisallies\nmisallocation\nmisally\nmisallying\nmisalter\nmisaltered\nmisaltering\nmisalters\nmisanthrope\nmisanthropes\nmisanthropic\nmisanthropies\nmisanthropy\nmisapplication\nmisapplications\nmisapplied\nmisapplies\nmisapply\nmisapplying\nmisapprehend\nmisapprehended\nmisapprehending\nmisapprehends\nmisapprehension\nmisapprehensions\nmisappropriate\nmisappropriated\nmisappropriates\nmisappropriating\nmisappropriation\nmisappropriations\nmisassay\nmisassayed\nmisassaying\nmisassays\nmisate\nmisatone\nmisatoned\nmisatones\nmisatoning\nmisaver\nmisaverred\nmisaverring\nmisavers\nmisaward\nmisawarded\nmisawarding\nmisawards\nmisbegan\nmisbegin\nmisbeginning\nmisbegins\nmisbegot\nmisbegotten\nmisbegun\nmisbehave\nmisbehaved\nmisbehaver\nmisbehavers\nmisbehaves\nmisbehaving\nmisbehavior\nmisbehaviors\nmisbelief\nmisbeliefs\nmisbeliever\nmisbelievers\nmisbias\nmisbiased\nmisbiases\nmisbiasing\nmisbiassed\nmisbiasses\nmisbiassing\nmisbill\nmisbilled\nmisbilling\nmisbills\nmisbind\nmisbinding\nmisbinds\nmisbound\nmisbrand\nmisbranded\nmisbranding\nmisbrands\nmisbuild\nmisbuilding\nmisbuilds\nmisbuilt\nmiscalculate\nmiscalculated\nmiscalculates\nmiscalculating\nmiscalculation\nmiscalculations\nmiscall\nmiscalled\nmiscalling\nmiscalls\nmiscarriage\nmiscarriages\nmiscarried\nmiscarries\nmiscarry\nmiscarrying\nmiscast\nmiscasted\nmiscasting\nmiscasts\nmiscegenation\nmiscegenations\nmiscellanea\nmiscellaneous\nmiscellaneously\nmiscellanies\nmiscellany\nmischance\nmischances\nmischief\nmischiefs\nmischievous\nmischievously\nmischievousness\nmiscibilities\nmiscibility\nmiscible\nmiscite\nmiscited\nmiscites\nmisciting\nmisclaim\nmisclaimed\nmisclaiming\nmisclaims\nmisclass\nmisclassed\nmisclasses\nmisclassing\nmiscoin\nmiscoined\nmiscoining\nmiscoins\nmiscolor\nmiscolored\nmiscoloring\nmiscolors\nmiscommunication\nmiscommunications\nmisconceive\nmisconceived\nmisconceives\nmisconceiving\nmisconception\nmisconceptions\nmisconduct\nmisconducted\nmisconducting\nmisconducts\nmisconstruction\nmisconstructions\nmisconstrue\nmisconstrued\nmisconstrues\nmisconstruing\nmiscook\nmiscooked\nmiscooking\nmiscooks\nmiscopied\nmiscopies\nmiscopy\nmiscopying\nmiscount\nmiscounted\nmiscounting\nmiscounts\nmiscreant\nmiscreants\nmiscue\nmiscued\nmiscues\nmiscuing\nmiscut\nmiscuts\nmiscutting\nmisdate\nmisdated\nmisdates\nmisdating\nmisdeal\nmisdealing\nmisdeals\nmisdealt\nmisdeed\nmisdeeds\nmisdeem\nmisdeemed\nmisdeeming\nmisdeems\nmisdemeanor\nmisdemeanors\nmisdiagnose\nmisdiagnosed\nmisdiagnoses\nmisdiagnosing\nmisdiagnosis\nmisdid\nmisdirect\nmisdirected\nmisdirecting\nmisdirects\nmisdo\nmisdoer\nmisdoers\nmisdoes\nmisdoing\nmisdoings\nmisdone\nmisdoubt\nmisdoubted\nmisdoubting\nmisdoubts\nmisdraw\nmisdrawing\nmisdrawn\nmisdraws\nmisdrew\nmisdrive\nmisdriven\nmisdrives\nmisdriving\nmisdrove\nmise\nmisease\nmiseases\nmiseat\nmiseate\nmiseaten\nmiseating\nmiseats\nmisedit\nmisedited\nmisediting\nmisedits\nmisenrol\nmisenroll\nmisenrolled\nmisenrolling\nmisenrolls\nmisenrols\nmisenter\nmisentered\nmisentering\nmisenters\nmisentries\nmisentry\nmiser\nmiserable\nmiserably\nmiserere\nmisereres\nmiseries\nmiserliness\nmiserly\nmisers\nmisery\nmises\nmisestimate\nmisestimated\nmisestimates\nmisestimating\nmisestimation\nmisestimations\nmisevent\nmisevents\nmisfaith\nmisfaiths\nmisfeasance\nmisfeasances\nmisfeasor\nmisfeasors\nmisfield\nmisfielded\nmisfielding\nmisfields\nmisfile\nmisfiled\nmisfiles\nmisfiling\nmisfire\nmisfired\nmisfires\nmisfiring\nmisfit\nmisfits\nmisfitted\nmisfitting\nmisform\nmisformed\nmisforming\nmisforms\nmisfortune\nmisfortunes\nmisframe\nmisframed\nmisframes\nmisframing\nmisgauge\nmisgauged\nmisgauges\nmisgauging\nmisgave\nmisgive\nmisgiven\nmisgives\nmisgiving\nmisgivings\nmisgovern\nmisgoverned\nmisgoverning\nmisgovernment\nmisgovernments\nmisgoverns\nmisgraft\nmisgrafted\nmisgrafting\nmisgrafts\nmisgrew\nmisgrow\nmisgrowing\nmisgrown\nmisgrows\nmisguess\nmisguessed\nmisguesses\nmisguessing\nmisguidance\nmisguide\nmisguided\nmisguidedly\nmisguidedness\nmisguides\nmisguiding\nmishandle\nmishandled\nmishandles\nmishandling\nmishap\nmishaps\nmishear\nmisheard\nmishearing\nmishears\nmishit\nmishits\nmishitting\nmishmash\nmishmashes\nmishmosh\nmishmoshes\nmisinfer\nmisinferred\nmisinferring\nmisinfers\nmisinform\nmisinformation\nmisinformed\nmisinforming\nmisinforms\nmisinter\nmisinterpret\nmisinterpretation\nmisinterpretations\nmisinterpreted\nmisinterpreting\nmisinterprets\nmisinterred\nmisinterring\nmisinters\nmisjoin\nmisjoined\nmisjoining\nmisjoins\nmisjudge\nmisjudged\nmisjudges\nmisjudging\nmisjudgment\nmisjudgments\nmiskal\nmiskals\nmiskeep\nmiskeeping\nmiskeeps\nmiskept\nmisknew\nmisknow\nmisknowing\nmisknown\nmisknows\nmislabel\nmislabeled\nmislabeling\nmislabelled\nmislabelling\nmislabels\nmislabor\nmislabored\nmislaboring\nmislabors\nmislaid\nmislain\nmislay\nmislayer\nmislayers\nmislaying\nmislays\nmislead\nmisleading\nmisleadingly\nmisleads\nmislearn\nmislearned\nmislearning\nmislearns\nmislearnt\nmisled\nmislie\nmislies\nmislight\nmislighted\nmislighting\nmislights\nmislike\nmisliked\nmisliker\nmislikers\nmislikes\nmisliking\nmislit\nmislive\nmislived\nmislives\nmisliving\nmislodge\nmislodged\nmislodges\nmislodging\nmislying\nmismanage\nmismanaged\nmismanagement\nmismanagements\nmismanages\nmismanaging\nmismark\nmismarked\nmismarking\nmismarks\nmismatch\nmismatched\nmismatches\nmismatching\nmismate\nmismated\nmismates\nmismating\nmismeet\nmismeeting\nmismeets\nmismet\nmismoshes\nmismove\nmismoved\nmismoves\nmismoving\nmisname\nmisnamed\nmisnames\nmisnaming\nmisnomer\nmisnomers\nmiso\nmisogamies\nmisogamy\nmisogynies\nmisogynist\nmisogynistic\nmisogynists\nmisogyny\nmisologies\nmisology\nmisos\nmispage\nmispaged\nmispages\nmispaging\nmispaint\nmispainted\nmispainting\nmispaints\nmisparse\nmisparsed\nmisparses\nmisparsing\nmispart\nmisparted\nmisparting\nmisparts\nmispatch\nmispatched\nmispatches\nmispatching\nmispen\nmispenned\nmispenning\nmispens\nmisplace\nmisplaced\nmisplacement\nmisplacements\nmisplaces\nmisplacing\nmisplant\nmisplanted\nmisplanting\nmisplants\nmisplay\nmisplayed\nmisplaying\nmisplays\nmisplead\nmispleaded\nmispleading\nmispleads\nmispled\nmispoint\nmispointed\nmispointing\nmispoints\nmispoise\nmispoised\nmispoises\nmispoising\nmisprint\nmisprinted\nmisprinting\nmisprints\nmisprision\nmisprisions\nmisprize\nmisprized\nmisprizes\nmisprizing\nmispronounce\nmispronounced\nmispronounces\nmispronouncing\nmispronunciation\nmispronunciations\nmisquotation\nmisquotations\nmisquote\nmisquoted\nmisquotes\nmisquoting\nmisraise\nmisraised\nmisraises\nmisraising\nmisrate\nmisrated\nmisrates\nmisrating\nmisread\nmisreaded\nmisreading\nmisreads\nmisrefer\nmisreferred\nmisreferring\nmisrefers\nmisrelied\nmisrelies\nmisrely\nmisrelying\nmisrepresent\nmisrepresentation\nmisrepresentations\nmisrepresentative\nmisrepresented\nmisrepresenting\nmisrepresents\nmisrule\nmisruled\nmisrules\nmisruling\nmiss\nmissaid\nmissal\nmissals\nmissay\nmissaying\nmissays\nmisseat\nmisseated\nmisseating\nmisseats\nmissed\nmissel\nmissels\nmissend\nmissending\nmissends\nmissense\nmissenses\nmissent\nmisses\nmisshape\nmisshaped\nmisshapen\nmisshapenly\nmisshapes\nmisshaping\nmisshod\nmissies\nmissile\nmissileries\nmissilery\nmissiles\nmissilries\nmissilry\nmissing\nmission\nmissionaries\nmissionary\nmissioned\nmissioning\nmissions\nmissis\nmissises\nmissismissis\nmissive\nmissives\nmissort\nmissorted\nmissorting\nmissorts\nmissound\nmissounded\nmissounding\nmissounds\nmissout\nmissouts\nmisspace\nmisspaced\nmisspaces\nmisspacing\nmisspeak\nmisspeaking\nmisspeaks\nmisspell\nmisspelled\nmisspelling\nmisspellings\nmisspells\nmisspelt\nmisspend\nmisspending\nmisspends\nmisspent\nmisspoke\nmisspoken\nmisstart\nmisstarted\nmisstarting\nmisstarts\nmisstate\nmisstated\nmisstatement\nmisstatements\nmisstates\nmisstating\nmissteer\nmissteered\nmissteering\nmissteers\nmisstep\nmissteps\nmisstop\nmisstopped\nmisstopping\nmisstops\nmisstyle\nmisstyled\nmisstyles\nmisstyling\nmissuit\nmissuited\nmissuiting\nmissuits\nmissus\nmissuses\nmissy\nmist\nmistakable\nmistake\nmistaken\nmistakenly\nmistaker\nmistakers\nmistakes\nmistaking\nmistaught\nmistbow\nmistbows\nmisteach\nmisteaches\nmisteaching\nmisted\nmistend\nmistended\nmistending\nmistends\nmister\nmisterm\nmistermed\nmisterming\nmisterms\nmisters\nmisteuk\nmisthink\nmisthinking\nmisthinks\nmisthought\nmisthrew\nmisthrow\nmisthrowing\nmisthrown\nmisthrows\nmistier\nmistiest\nmistily\nmistime\nmistimed\nmistimes\nmistiming\nmistiness\nmisting\nmistitle\nmistitled\nmistitles\nmistitling\nmistletoe\nmistletoes\nmistook\nmistouch\nmistouched\nmistouches\nmistouching\nmistrace\nmistraced\nmistraces\nmistracing\nmistral\nmistrals\nmistreat\nmistreated\nmistreating\nmistreatment\nmistreats\nmistress\nmistresses\nmistrial\nmistrials\nmistrust\nmistrusted\nmistrustful\nmistrustfully\nmistrustfulness\nmistrusting\nmistrusts\nmistryst\nmistrysted\nmistrysting\nmistrysts\nmists\nmistune\nmistuned\nmistunes\nmistuning\nmistutor\nmistutored\nmistutoring\nmistutors\nmisty\nmistype\nmistyped\nmistypes\nmistyping\nmisunderstand\nmisunderstanding\nmisunderstandings\nmisunderstands\nmisunderstood\nmisunion\nmisunions\nmisusage\nmisusages\nmisuse\nmisused\nmisuser\nmisusers\nmisuses\nmisusing\nmisvalue\nmisvalued\nmisvalues\nmisvaluing\nmisword\nmisworded\nmiswording\nmiswords\nmiswrit\nmiswrite\nmiswrites\nmiswriting\nmiswritten\nmiswrote\nmisyoke\nmisyoked\nmisyokes\nmisyoking\nmite\nmiter\nmitered\nmiterer\nmiterers\nmitering\nmiters\nmites\nmither\nmithers\nmiticide\nmiticides\nmitier\nmitiest\nmitigate\nmitigated\nmitigates\nmitigating\nmitigation\nmitigations\nmitigative\nmitigatory\nmitis\nmitises\nmitogen\nmitogens\nmitoses\nmitosis\nmitotic\nmitral\nmitre\nmitred\nmitres\nmitring\nmitsvah\nmitsvahs\nmitsvoth\nmitt\nmitten\nmittens\nmittimus\nmittimuses\nmitts\nmity\nmitzvah\nmitzvahs\nmitzvoth\nmix\nmixable\nmixed\nmixer\nmixers\nmixes\nmixible\nmixing\nmixologies\nmixology\nmixt\nmixture\nmixtures\nmixup\nmixups\nmizen\nmizens\nmizzen\nmizzenmast\nmizzenmasts\nmizzens\nmizzle\nmizzled\nmizzles\nmizzling\nmizzly\nmm\nmnemonic\nmnemonically\nmnemonics\nmo\nmoa\nmoan\nmoaned\nmoanful\nmoaning\nmoaningly\nmoans\nmoas\nmoat\nmoated\nmoating\nmoatlike\nmoats\nmob\nmobbed\nmobber\nmobbers\nmobbing\nmobbish\nmobcap\nmobcaps\nmobile\nmobiles\nmobilise\nmobilised\nmobilises\nmobilising\nmobilities\nmobility\nmobilization\nmobilizations\nmobilize\nmobilized\nmobilizes\nmobilizing\nmobocracies\nmobocracy\nmobocrat\nmobocratic\nmobocrats\nmobs\nmobster\nmobsters\nmoccasin\nmoccasins\nmocha\nmochas\nmochila\nmochilas\nmock\nmockable\nmocked\nmocker\nmockeries\nmockers\nmockery\nmocking\nmockingbird\nmockingbirds\nmockingly\nmocks\nmockup\nmockups\nmod\nmodal\nmodalities\nmodality\nmodally\nmode\nmodel\nmodeled\nmodeler\nmodelers\nmodeling\nmodelings\nmodelled\nmodeller\nmodellers\nmodelling\nmodels\nmodem\nmoderate\nmoderated\nmoderately\nmoderateness\nmoderates\nmoderating\nmoderation\nmoderations\nmoderato\nmoderator\nmoderators\nmoderatos\nmodern\nmoderner\nmodernest\nmodernism\nmodernisms\nmodernist\nmodernistic\nmodernists\nmodernities\nmodernity\nmodernization\nmodernizations\nmodernize\nmodernized\nmodernizer\nmodernizers\nmodernizes\nmodernizing\nmodernly\nmodernness\nmoderns\nmodes\nmodest\nmodester\nmodestest\nmodesties\nmodestly\nmodesty\nmodi\nmodica\nmodicum\nmodicums\nmodifiability\nmodifiable\nmodification\nmodifications\nmodified\nmodifier\nmodifiers\nmodifies\nmodify\nmodifying\nmodioli\nmodiolus\nmodish\nmodishly\nmodishness\nmodiste\nmodistes\nmods\nmodulability\nmodular\nmodularities\nmodularity\nmodularized\nmodularly\nmodulate\nmodulated\nmodulates\nmodulating\nmodulation\nmodulations\nmodulator\nmodulators\nmodulatory\nmodule\nmodules\nmoduli\nmodulo\nmodulus\nmodus\nmofette\nmofettes\nmoffette\nmoffettes\nmog\nmogged\nmogging\nmogs\nmogul\nmoguls\nmohair\nmohairs\nmohalim\nmohel\nmohels\nmohur\nmohurs\nmoidore\nmoidores\nmoieties\nmoiety\nmoil\nmoiled\nmoiler\nmoilers\nmoiling\nmoils\nmoira\nmoirai\nmoire\nmoires\nmoist\nmoisten\nmoistened\nmoistener\nmoisteners\nmoistening\nmoistens\nmoister\nmoistest\nmoistful\nmoistly\nmoistness\nmoisture\nmoistures\nmoisturize\nmoisturized\nmoisturizer\nmoisturizers\nmoisturizes\nmoisturizing\nmojarra\nmojarras\nmojo\nmojos\nmoke\nmokes\nmol\nmola\nmolal\nmolalities\nmolality\nmolar\nmolarities\nmolarity\nmolars\nmolas\nmolasses\nmolasseses\nmold\nmoldable\nmoldboard\nmolded\nmolder\nmoldered\nmoldering\nmolders\nmoldier\nmoldiest\nmoldiness\nmolding\nmoldings\nmolds\nmoldwarp\nmoldwarps\nmoldy\nmole\nmolecular\nmolecularly\nmolecule\nmolecules\nmolehill\nmolehills\nmoles\nmoleskin\nmoleskins\nmolest\nmolestation\nmolestations\nmolested\nmolester\nmolesters\nmolesting\nmolests\nmolies\nmoline\nmoll\nmollah\nmollahs\nmollie\nmollies\nmollification\nmollifications\nmollified\nmollifies\nmollify\nmollifying\nmolls\nmollusc\nmolluscan\nmolluscans\nmolluscs\nmollusk\nmollusks\nmolly\nmollycoddle\nmollycoddled\nmollycoddles\nmollycoddling\nmoloch\nmolochs\nmols\nmolt\nmolted\nmolten\nmoltenly\nmolter\nmolters\nmolting\nmolto\nmolts\nmoly\nmolybdenum\nmolybdenums\nmolybdic\nmom\nmome\nmoment\nmomenta\nmomentarily\nmomentariness\nmomentary\nmomently\nmomento\nmomentoes\nmomentos\nmomentous\nmomentousness\nmoments\nmomentum\nmomentums\nmomes\nmomi\nmomism\nmomisms\nmomma\nmommas\nmommies\nmommy\nmoms\nmomus\nmomuses\nmon\nmonachal\nmonacid\nmonacids\nmonad\nmonadal\nmonades\nmonadic\nmonadism\nmonadisms\nmonads\nmonandries\nmonandry\nmonarch\nmonarchal\nmonarchial\nmonarchical\nmonarchically\nmonarchies\nmonarchism\nmonarchisms\nmonarchist\nmonarchists\nmonarchs\nmonarchy\nmonarda\nmonardas\nmonas\nmonasteries\nmonastery\nmonastic\nmonastically\nmonasticism\nmonasticisms\nmonastics\nmonaural\nmonaurally\nmonaxial\nmonazite\nmonazites\nmonde\nmondes\nmondo\nmondos\nmonecian\nmonetarily\nmonetarist\nmonetarists\nmonetary\nmonetise\nmonetised\nmonetises\nmonetising\nmonetization\nmonetizations\nmonetize\nmonetized\nmonetizes\nmonetizing\nmoney\nmoneybag\nmoneybags\nmoneyed\nmoneyer\nmoneyers\nmoneylender\nmoneylenders\nmoneys\nmongeese\nmonger\nmongered\nmongering\nmongers\nmongo\nmongoe\nmongoes\nmongol\nmongolianism\nmongolism\nmongols\nmongoose\nmongooses\nmongos\nmongrel\nmongrelize\nmongrelized\nmongrelizes\nmongrelizing\nmongrels\nmongst\nmonicker\nmonickers\nmonie\nmonied\nmonies\nmoniker\nmonikers\nmonish\nmonished\nmonishes\nmonishing\nmonism\nmonisms\nmonist\nmonistic\nmonistical\nmonists\nmonition\nmonitions\nmonitive\nmonitor\nmonitored\nmonitorial\nmonitories\nmonitoring\nmonitors\nmonitory\nmonk\nmonkeries\nmonkery\nmonkey\nmonkeyed\nmonkeying\nmonkeys\nmonkeyshines\nmonkfish\nmonkfishes\nmonkhood\nmonkhoods\nmonkish\nmonks\nmono\nmonoacid\nmonoacids\nmonocarp\nmonocarps\nmonochromatic\nmonochromatically\nmonochromaticities\nmonochromaticity\nmonochrome\nmonochromes\nmonochromic\nmonochromist\nmonochromists\nmonocle\nmonocled\nmonocles\nmonocot\nmonocots\nmonocrat\nmonocrats\nmonocular\nmonocularly\nmonocyte\nmonocytes\nmonodic\nmonodies\nmonodist\nmonodists\nmonodrama\nmonodramas\nmonody\nmonoecies\nmonoecy\nmonofil\nmonofils\nmonofuel\nmonofuels\nmonogamic\nmonogamies\nmonogamist\nmonogamists\nmonogamous\nmonogamously\nmonogamy\nmonogenies\nmonogeny\nmonogerm\nmonogram\nmonogramed\nmonograming\nmonogrammatic\nmonogrammed\nmonogramming\nmonograms\nmonograph\nmonographic\nmonographs\nmonogynies\nmonogynous\nmonogyny\nmonolingual\nmonolith\nmonolithic\nmonoliths\nmonolog\nmonologies\nmonologist\nmonologists\nmonologs\nmonologue\nmonologues\nmonologuist\nmonologuists\nmonology\nmonomania\nmonomaniac\nmonomaniacal\nmonomaniacs\nmonomanias\nmonomer\nmonomeric\nmonomers\nmonometallist\nmonometallists\nmonomial\nmonomials\nmononucleosis\nmonophonic\nmonophonically\nmonoplane\nmonoplanes\nmonopode\nmonopodes\nmonopodies\nmonopody\nmonopole\nmonopoles\nmonopolies\nmonopolist\nmonopolistic\nmonopolists\nmonopolization\nmonopolizations\nmonopolize\nmonopolized\nmonopolizer\nmonopolizers\nmonopolizes\nmonopolizing\nmonopoly\nmonorail\nmonorails\nmonos\nmonosome\nmonosomes\nmonosyllabic\nmonosyllabically\nmonosyllable\nmonosyllables\nmonotheism\nmonotheisms\nmonotheist\nmonotheistic\nmonotheistical\nmonotheistically\nmonotheists\nmonotint\nmonotints\nmonotone\nmonotones\nmonotonic\nmonotonically\nmonotonies\nmonotonous\nmonotonously\nmonotonousness\nmonotony\nmonotype\nmonotypes\nmonoxide\nmonoxides\nmons\nmonsieur\nmonsignor\nmonsignori\nmonsignors\nmonsoon\nmonsoonal\nmonsoons\nmonster\nmonsters\nmonstrosities\nmonstrosity\nmonstrous\nmonstrously\nmonstrousness\nmontage\nmontaged\nmontages\nmontaging\nmontane\nmontanes\nmonte\nmonteith\nmonteiths\nmontero\nmonteros\nmontes\nmonth\nmonthlies\nmonthly\nmonths\nmonument\nmonumental\nmonumentalities\nmonumentality\nmonumentalize\nmonumentalized\nmonumentalizes\nmonumentalizing\nmonumentally\nmonuments\nmonuron\nmonurons\nmony\nmoo\nmooch\nmooched\nmoocher\nmoochers\nmooches\nmooching\nmood\nmoodier\nmoodiest\nmoodily\nmoodiness\nmoods\nmoody\nmooed\nmooing\nmool\nmoola\nmoolah\nmoolahs\nmoolas\nmooley\nmooleys\nmools\nmoon\nmoonbeam\nmoonbeams\nmoonbow\nmoonbows\nmooncalf\nmooncalves\nmooned\nmooneye\nmooneyes\nmoonfish\nmoonfishes\nmoonier\nmooniest\nmoonily\nmooning\nmoonish\nmoonless\nmoonlet\nmoonlets\nmoonlight\nmoonlighted\nmoonlighter\nmoonlighters\nmoonlighting\nmoonlights\nmoonlike\nmoonlit\nmoonrise\nmoonrises\nmoons\nmoonsail\nmoonsails\nmoonscape\nmoonseed\nmoonseeds\nmoonset\nmoonsets\nmoonshine\nmoonshot\nmoonshots\nmoonstone\nmoonstones\nmoonstruck\nmoonward\nmoonwort\nmoonworts\nmoony\nmoor\nmoorage\nmoorages\nmoored\nmoorfowl\nmoorfowls\nmoorhen\nmoorhens\nmoorier\nmooriest\nmooring\nmoorings\nmoorish\nmoorland\nmoorlands\nmoors\nmoorwort\nmoorworts\nmoory\nmoos\nmoose\nmoot\nmooted\nmooter\nmooters\nmooting\nmoots\nmop\nmopboard\nmopboards\nmope\nmoped\nmopeds\nmoper\nmopers\nmopes\nmopey\nmoping\nmopingly\nmopish\nmopishly\nmopoke\nmopokes\nmopped\nmopper\nmoppers\nmoppet\nmoppets\nmopping\nmops\nmopy\nmoquette\nmoquettes\nmor\nmora\nmorae\nmorainal\nmoraine\nmoraines\nmorainic\nmoral\nmorale\nmorales\nmoralise\nmoralised\nmoralises\nmoralising\nmoralism\nmoralisms\nmoralist\nmoralistic\nmoralistically\nmoralists\nmoralities\nmorality\nmoralization\nmoralizations\nmoralize\nmoralized\nmoralizer\nmoralizers\nmoralizes\nmoralizing\nmorally\nmorals\nmoras\nmorass\nmorasses\nmorassy\nmoratoria\nmoratorium\nmoratoriums\nmoratory\nmoray\nmorays\nmorbid\nmorbidities\nmorbidity\nmorbidly\nmorbidness\nmorbific\nmorbilli\nmorceau\nmorceaux\nmordancies\nmordancy\nmordant\nmordanted\nmordanting\nmordantly\nmordants\nmordent\nmordents\nmore\nmoreen\nmoreens\nmorel\nmorelle\nmorelles\nmorello\nmorellos\nmorels\nmoreover\nmores\nmoresque\nmoresques\nmorganatic\nmorgen\nmorgens\nmorgue\nmorgues\nmoribund\nmoribundities\nmoribundity\nmorion\nmorions\nmorn\nmorning\nmornings\nmorns\nmorocco\nmoroccos\nmoron\nmoronic\nmoronically\nmoronism\nmoronisms\nmoronities\nmoronity\nmorons\nmorose\nmorosely\nmoroseness\nmorosities\nmorosity\nmorph\nmorpheme\nmorphemes\nmorphemics\nmorphia\nmorphias\nmorphic\nmorphin\nmorphine\nmorphines\nmorphins\nmorpho\nmorphological\nmorphologically\nmorphologies\nmorphologist\nmorphologists\nmorphology\nmorphos\nmorphs\nmorrion\nmorrions\nmorris\nmorrises\nmorro\nmorros\nmorrow\nmorrows\nmors\nmorse\nmorsel\nmorseled\nmorseling\nmorselled\nmorselling\nmorsels\nmort\nmortal\nmortalities\nmortality\nmortally\nmortals\nmortar\nmortarboard\nmortarboards\nmortared\nmortaring\nmortarless\nmortars\nmortary\nmortgage\nmortgaged\nmortgagee\nmortgagees\nmortgages\nmortgaging\nmortgagor\nmortgagors\nmortice\nmorticed\nmortices\nmortician\nmorticians\nmorticing\nmortification\nmortifications\nmortified\nmortifies\nmortify\nmortifying\nmortifyingly\nmortise\nmortised\nmortiser\nmortisers\nmortises\nmortising\nmortmain\nmortmains\nmorts\nmortuaries\nmortuary\nmorula\nmorulae\nmorular\nmorulas\nmos\nmosaic\nmosaicked\nmosaicking\nmosaics\nmoschate\nmosey\nmoseyed\nmoseying\nmoseys\nmoshav\nmoshavim\nmosk\nmosks\nmosque\nmosques\nmosquito\nmosquitoes\nmosquitos\nmoss\nmossback\nmossbacks\nmossed\nmosser\nmossers\nmosses\nmossier\nmossiest\nmossing\nmosslike\nmosso\nmossy\nmost\nmoste\nmostly\nmosts\nmot\nmote\nmotel\nmotels\nmotes\nmotet\nmotets\nmotey\nmoth\nmothball\nmothballed\nmothballing\nmothballs\nmother\nmothered\nmotherhood\nmothering\nmotherland\nmotherlands\nmotherless\nmotherly\nmothers\nmothery\nmothier\nmothiest\nmothproof\nmothproofed\nmothproofing\nmothproofs\nmoths\nmothy\nmoties\nmotif\nmotifs\nmotile\nmotiles\nmotilities\nmotility\nmotion\nmotional\nmotioned\nmotioner\nmotioners\nmotioning\nmotionless\nmotionlessly\nmotionlessness\nmotions\nmotivate\nmotivated\nmotivates\nmotivating\nmotivation\nmotivational\nmotivations\nmotivative\nmotivator\nmotivators\nmotive\nmotived\nmotiveless\nmotivelessly\nmotives\nmotivic\nmotiving\nmotivities\nmotivity\nmotley\nmotleyer\nmotleyest\nmotleys\nmotlier\nmotliest\nmotmot\nmotmots\nmotor\nmotorbike\nmotorbikes\nmotorboat\nmotorboats\nmotorbus\nmotorbuses\nmotorbusses\nmotorcade\nmotorcades\nmotorcar\nmotorcars\nmotorcycle\nmotorcycled\nmotorcycles\nmotorcycling\nmotorcyclist\nmotorcyclists\nmotordrome\nmotordromes\nmotored\nmotoric\nmotoring\nmotorings\nmotorise\nmotorised\nmotorises\nmotorising\nmotorist\nmotorists\nmotorization\nmotorizations\nmotorize\nmotorized\nmotorizes\nmotorizing\nmotorman\nmotormen\nmotors\nmotortruck\nmotortrucks\nmotorway\nmotorways\nmots\nmott\nmotte\nmottes\nmottle\nmottled\nmottler\nmottlers\nmottles\nmottling\nmotto\nmottoes\nmottos\nmotts\nmouch\nmouched\nmouches\nmouching\nmouchoir\nmouchoirs\nmoue\nmoues\nmoufflon\nmoufflons\nmouflon\nmouflons\nmouille\nmoujik\nmoujiks\nmoulage\nmoulages\nmould\nmoulded\nmoulder\nmouldered\nmouldering\nmoulders\nmouldier\nmouldiest\nmoulding\nmouldings\nmoulds\nmouldy\nmoulin\nmoulins\nmoult\nmoulted\nmoulter\nmoulters\nmoulting\nmoults\nmound\nmounded\nmounding\nmounds\nmount\nmountable\nmountain\nmountaineer\nmountaineering\nmountaineers\nmountainous\nmountainousness\nmountains\nmountebank\nmountebanks\nmounted\nmounter\nmounters\nmounting\nmountings\nmounts\nmourn\nmourned\nmourner\nmourners\nmournful\nmournfuller\nmournfullest\nmournfully\nmournfulness\nmourning\nmournings\nmourns\nmouse\nmoused\nmouser\nmousers\nmouses\nmousetrap\nmousetraps\nmousey\nmousier\nmousiest\nmousily\nmousing\nmousings\nmoussaka\nmoussakas\nmousse\nmousseline\nmousselines\nmousses\nmoustache\nmoustached\nmoustaches\nmousy\nmouth\nmouthed\nmouther\nmouthers\nmouthful\nmouthfuls\nmouthier\nmouthiest\nmouthily\nmouthing\nmouthpiece\nmouthpieces\nmouths\nmouthwash\nmouthwashes\nmouthy\nmouton\nmoutons\nmovabilities\nmovability\nmovable\nmovableness\nmovables\nmovably\nmove\nmoveabilities\nmoveability\nmoveable\nmoveableness\nmoveables\nmoveably\nmoved\nmoveless\nmovelessly\nmovelessness\nmovement\nmovements\nmover\nmovers\nmoves\nmovie\nmoviedom\nmoviedoms\nmoviegoer\nmoviegoers\nmovies\nmoving\nmovingly\nmow\nmowed\nmower\nmowers\nmowing\nmown\nmows\nmoxa\nmoxas\nmoxie\nmoxies\nmozetta\nmozettas\nmozette\nmozo\nmozos\nmozzarella\nmozzarellas\nmozzetta\nmozzettas\nmozzette\nmridanga\nmridangas\nmu\nmuch\nmuches\nmuchness\nmuchnesses\nmucid\nmucidities\nmucidity\nmucilage\nmucilages\nmucilaginous\nmucin\nmucinoid\nmucinous\nmucins\nmuck\nmucked\nmucker\nmuckers\nmuckier\nmuckiest\nmuckily\nmucking\nmuckle\nmuckles\nmuckluck\nmucklucks\nmuckrake\nmuckraked\nmuckraker\nmuckrakers\nmuckrakes\nmuckraking\nmucks\nmuckworm\nmuckworms\nmucky\nmucluc\nmuclucs\nmucoid\nmucoidal\nmucoids\nmucor\nmucors\nmucosa\nmucosae\nmucosal\nmucosas\nmucose\nmucosities\nmucosity\nmucous\nmucro\nmucrones\nmucus\nmucuses\nmud\nmudcap\nmudcapped\nmudcapping\nmudcaps\nmudded\nmudder\nmudders\nmuddied\nmuddier\nmuddies\nmuddiest\nmuddily\nmuddiness\nmudding\nmuddle\nmuddled\nmuddleheaded\nmuddler\nmuddlers\nmuddles\nmuddling\nmuddy\nmuddying\nmudfish\nmudfishes\nmudguard\nmudguards\nmudlark\nmudlarks\nmudpuppies\nmudpuppy\nmudra\nmudras\nmudrock\nmudrocks\nmudroom\nmudrooms\nmuds\nmudsill\nmudsills\nmudslinger\nmudslingers\nmudslinging\nmudslingings\nmudstone\nmudstones\nmueddin\nmueddins\nmuenster\nmuensters\nmuezzin\nmuezzins\nmuff\nmuffed\nmuffin\nmuffing\nmuffins\nmuffle\nmuffled\nmuffler\nmufflers\nmuffles\nmuffling\nmuffs\nmufti\nmuftis\nmug\nmugg\nmuggar\nmuggars\nmugged\nmugger\nmuggers\nmuggier\nmuggiest\nmuggily\nmugginess\nmugging\nmuggings\nmuggins\nmuggs\nmuggur\nmuggurs\nmuggy\nmugs\nmugwort\nmugworts\nmugwump\nmugwumps\nmuhlies\nmuhly\nmujik\nmujiks\nmukluk\nmukluks\nmulatto\nmulattoes\nmulattos\nmulberries\nmulberry\nmulch\nmulched\nmulches\nmulching\nmulct\nmulcted\nmulcting\nmulcts\nmule\nmuled\nmules\nmuleta\nmuletas\nmuleteer\nmuleteers\nmuley\nmuleys\nmuling\nmulish\nmulishly\nmulishness\nmull\nmulla\nmullah\nmullahs\nmullas\nmulled\nmullein\nmulleins\nmullen\nmullens\nmuller\nmullers\nmullet\nmullets\nmulley\nmulleys\nmulligan\nmulligans\nmulling\nmullion\nmullioned\nmullioning\nmullions\nmullite\nmullites\nmullock\nmullocks\nmullocky\nmulls\nmulticolored\nmultidimensional\nmultidimensionality\nmultifaceted\nmultifamily\nmultifarious\nmultifariousness\nmultifid\nmultiform\nmultiformities\nmultiformity\nmultijet\nmultilateral\nmultilaterally\nmultilevel\nmultilingual\nmultilingualism\nmultimedia\nmultimillionaire\nmultinational\nmultinationals\nmultiped\nmultipeds\nmultiple\nmultiples\nmultiplex\nmultiplexed\nmultiplexer\nmultiplexers\nmultiplexes\nmultiplexing\nmultiplexor\nmultiplexors\nmultiplicand\nmultiplicands\nmultiplication\nmultiplications\nmultiplicative\nmultiplicatively\nmultiplicities\nmultiplicity\nmultiplied\nmultiplier\nmultipliers\nmultiplies\nmultiply\nmultiplying\nmultiprocessing\nmultiprocessor\nmultiprocessors\nmultiprogramming\nmultipurpose\nmultiracial\nmultisense\nmultistage\nmultistory\nmultitude\nmultitudes\nmultitudinous\nmultitudinously\nmultitudinousness\nmultiversities\nmultiversity\nmultivitamin\nmultivitamins\nmulture\nmultures\nmum\nmumble\nmumbled\nmumbler\nmumblers\nmumbles\nmumbling\nmumm\nmummed\nmummer\nmummeries\nmummers\nmummery\nmummied\nmummies\nmummification\nmummifications\nmummified\nmummifies\nmummify\nmummifying\nmumming\nmumms\nmummy\nmummying\nmump\nmumped\nmumper\nmumpers\nmumping\nmumps\nmums\nmumu\nmumus\nmun\nmunch\nmunched\nmuncher\nmunchers\nmunches\nmunching\nmundane\nmundanely\nmundungo\nmundungos\nmungo\nmungoose\nmungooses\nmungos\nmunicipal\nmunicipalities\nmunicipality\nmunicipalization\nmunicipalizations\nmunicipalize\nmunicipalized\nmunicipalizes\nmunicipalizing\nmunicipally\nmunicipals\nmunificence\nmunificent\nmunificently\nmuniment\nmuniments\nmunition\nmunitioned\nmunitioning\nmunitions\nmunnion\nmunnions\nmuns\nmunster\nmunsters\nmuntin\nmunting\nmuntings\nmuntins\nmuntjac\nmuntjacs\nmuntjak\nmuntjaks\nmuon\nmuonic\nmuons\nmura\nmuraenid\nmuraenids\nmural\nmuralist\nmuralists\nmurals\nmuras\nmurder\nmurdered\nmurderee\nmurderees\nmurderer\nmurderers\nmurderess\nmurderesses\nmurdering\nmurderous\nmurderously\nmurderousness\nmurders\nmure\nmured\nmurein\nmureins\nmures\nmurex\nmurexes\nmuriate\nmuriated\nmuriates\nmuricate\nmurices\nmurid\nmurids\nmurine\nmurines\nmuring\nmurk\nmurker\nmurkest\nmurkier\nmurkiest\nmurkily\nmurkiness\nmurkly\nmurks\nmurky\nmurmur\nmurmured\nmurmurer\nmurmurers\nmurmuring\nmurmurous\nmurmurously\nmurmurs\nmurphies\nmurphy\nmurr\nmurra\nmurrain\nmurrains\nmurras\nmurre\nmurrelet\nmurrelets\nmurres\nmurrey\nmurreys\nmurrha\nmurrhas\nmurrhine\nmurries\nmurrine\nmurrs\nmurry\nmurther\nmurthered\nmurthering\nmurthers\nmus\nmusca\nmuscadel\nmuscadels\nmuscadine\nmuscadines\nmuscae\nmuscat\nmuscatel\nmuscatels\nmuscats\nmuscid\nmuscids\nmuscle\nmuscled\nmuscles\nmuscling\nmuscly\nmuscovite\nmuscular\nmuscularity\nmuscularly\nmusculature\nmusculatures\nmuse\nmused\nmuseful\nmuser\nmusers\nmuses\nmusette\nmusettes\nmuseum\nmuseums\nmush\nmushed\nmusher\nmushers\nmushes\nmushier\nmushiest\nmushily\nmushiness\nmushing\nmushroom\nmushroomed\nmushrooming\nmushrooms\nmushy\nmusic\nmusical\nmusicale\nmusicales\nmusicality\nmusically\nmusicals\nmusician\nmusicians\nmusicianship\nmusicological\nmusicologist\nmusicologists\nmusicology\nmusics\nmusing\nmusingly\nmusings\nmusjid\nmusjids\nmusk\nmuskeg\nmuskegs\nmusket\nmusketeer\nmusketeers\nmusketries\nmusketry\nmuskets\nmuskie\nmuskier\nmuskies\nmuskiest\nmuskily\nmuskiness\nmuskit\nmuskits\nmuskmelon\nmuskmelons\nmuskrat\nmuskrats\nmusks\nmusky\nmuslin\nmuslins\nmuspike\nmuspikes\nmusquash\nmusquashes\nmuss\nmussed\nmussel\nmussels\nmusses\nmussier\nmussiest\nmussily\nmussiness\nmussing\nmussy\nmust\nmustache\nmustached\nmustaches\nmustang\nmustangs\nmustard\nmustards\nmusted\nmustee\nmustees\nmuster\nmustered\nmustering\nmusters\nmusth\nmusths\nmustier\nmustiest\nmustily\nmustiness\nmusting\nmusts\nmusty\nmut\nmutabilities\nmutability\nmutable\nmutably\nmutagen\nmutagens\nmutant\nmutants\nmutase\nmutases\nmutate\nmutated\nmutates\nmutating\nmutation\nmutational\nmutations\nmutative\nmutch\nmutches\nmutchkin\nmutchkins\nmute\nmuted\nmutedly\nmutely\nmuteness\nmutenesses\nmuter\nmutes\nmutest\nmuticous\nmutilate\nmutilated\nmutilates\nmutilating\nmutilation\nmutilations\nmutilator\nmutilators\nmutine\nmutined\nmutineer\nmutineered\nmutineering\nmutineers\nmutines\nmuting\nmutinied\nmutinies\nmutining\nmutinous\nmutinously\nmutiny\nmutinying\nmutism\nmutisms\nmuton\nmuts\nmutt\nmutter\nmuttered\nmutterer\nmutterers\nmuttering\nmutters\nmutton\nmuttonchops\nmuttons\nmuttony\nmutts\nmutual\nmutualities\nmutuality\nmutually\nmutuel\nmutuels\nmutular\nmutule\nmutules\nmuumuu\nmuumuus\nmuzhik\nmuzhiks\nmuzjik\nmuzjiks\nmuzzier\nmuzziest\nmuzzily\nmuzzle\nmuzzled\nmuzzler\nmuzzlers\nmuzzles\nmuzzling\nmuzzy\nmy\nmyalgia\nmyalgias\nmyalgic\nmyases\nmyasis\nmycele\nmyceles\nmycelia\nmycelial\nmycelian\nmycelium\nmyceloid\nmycetoma\nmycetomas\nmycetomata\nmycological\nmycologies\nmycologist\nmycologists\nmycology\nmycoses\nmycosis\nmycotic\nmyelin\nmyeline\nmyelines\nmyelinic\nmyelins\nmyelitides\nmyelitis\nmyeloid\nmyeloma\nmyelomas\nmyelomata\nmyiases\nmyiasis\nmylonite\nmylonites\nmyna\nmynah\nmynahs\nmynas\nmynheer\nmynheers\nmyoblast\nmyoblasts\nmyogenic\nmyograph\nmyographs\nmyoid\nmyologic\nmyologies\nmyology\nmyoma\nmyomas\nmyomata\nmyopathies\nmyopathy\nmyope\nmyopes\nmyopia\nmyopias\nmyopic\nmyopically\nmyopies\nmyopy\nmyoscope\nmyoscopes\nmyoses\nmyosin\nmyosins\nmyosis\nmyosote\nmyosotes\nmyosotis\nmyosotises\nmyotic\nmyotics\nmyotome\nmyotomes\nmyotonia\nmyotonias\nmyotonic\nmyriad\nmyriads\nmyriapod\nmyriapods\nmyrica\nmyricas\nmyriopod\nmyriopods\nmyrmidon\nmyrmidons\nmyrrh\nmyrrhic\nmyrrhs\nmyrtle\nmyrtles\nmyself\nmysid\nmysost\nmysosts\nmystagog\nmystagogs\nmysteries\nmysterious\nmysteriously\nmysteriousness\nmystery\nmystic\nmystical\nmystically\nmysticism\nmysticisms\nmysticly\nmystics\nmystification\nmystifications\nmystified\nmystifies\nmystify\nmystifying\nmystifyingly\nmystique\nmystiques\nmyth\nmythic\nmythical\nmythically\nmythicize\nmythicized\nmythicizes\nmythicizing\nmythoi\nmythological\nmythologically\nmythologies\nmythologist\nmythologists\nmythologize\nmythologized\nmythologizes\nmythologizing\nmythology\nmythos\nmyths\nmyxedema\nmyxedemas\nmyxocyte\nmyxocytes\nmyxoid\nmyxoma\nmyxomas\nmyxomata\nna\nnab\nnabbed\nnabbing\nnabe\nnabes\nnabis\nnabob\nnaboberies\nnabobery\nnabobess\nnabobesses\nnabobism\nnabobisms\nnabobs\nnabs\nnacelle\nnacelles\nnacho\nnacre\nnacred\nnacreous\nnacres\nnadir\nnadiral\nnadirs\nnae\nnaething\nnaethings\nnaevi\nnaevoid\nnaevus\nnag\nnagana\nnaganas\nnagged\nnagger\nnaggers\nnagging\nnaggy\nnags\nnah\nnaiad\nnaiades\nnaiads\nnaif\nnaifs\nnail\nnailed\nnailer\nnailers\nnailfold\nnailfolds\nnailhead\nnailheads\nnailing\nnails\nnailset\nnailsets\nnainsook\nnainsooks\nnaira\nnaive\nnaively\nnaiveness\nnaiver\nnaives\nnaivest\nnaivete\nnaivetes\nnaiveties\nnaivety\nnaked\nnakeder\nnakedest\nnakedly\nnakedness\nnaled\nnaleds\nnaloxone\nnaloxones\nnam\nnamable\nname\nnameable\nnamed\nnameless\nnamelessly\nnamelessness\nnamely\nnameplate\nnameplates\nnamer\nnamers\nnames\nnamesake\nnamesakes\nnaming\nnana\nnanas\nnance\nnances\nnancy\nnandin\nnandins\nnanism\nnanisms\nnankeen\nnankeens\nnankin\nnankins\nnannie\nnannies\nnanny\nnanogram\nnanograms\nnanosecond\nnanoseconds\nnanowatt\nnanowatts\nnaoi\nnaos\nnap\nnapalm\nnapalmed\nnapalming\nnapalms\nnape\nnaperies\nnapery\nnapes\nnaphtha\nnaphthalene\nnaphthalenes\nnaphthalenic\nnaphthas\nnaphthol\nnaphthols\nnaphthyl\nnaphtol\nnaphtols\nnapiform\nnapkin\nnapkins\nnapless\nnapoleon\nnapoleons\nnappe\nnapped\nnapper\nnappers\nnappes\nnappie\nnappier\nnappies\nnappiest\nnapping\nnappy\nnaps\nnarc\nnarcein\nnarceine\nnarceines\nnarceins\nnarcism\nnarcisms\nnarcissi\nnarcissism\nnarcissist\nnarcissistic\nnarcissists\nnarcissus\nnarcissuses\nnarcist\nnarcists\nnarco\nnarcos\nnarcose\nnarcoses\nnarcosis\nnarcotic\nnarcotically\nnarcotics\nnarcotize\nnarcotized\nnarcotizes\nnarcotizing\nnarcs\nnard\nnardine\nnards\nnares\nnarghile\nnarghiles\nnargile\nnargileh\nnargilehs\nnargiles\nnarial\nnaric\nnarine\nnaris\nnark\nnarked\nnarking\nnarks\nnarky\nnarrate\nnarrated\nnarrater\nnarraters\nnarrates\nnarrating\nnarration\nnarrational\nnarrations\nnarrative\nnarratively\nnarratives\nnarrator\nnarrators\nnarrow\nnarrowed\nnarrower\nnarrowest\nnarrowing\nnarrowly\nnarrowness\nnarrows\nnarthex\nnarthexes\nnarwal\nnarwals\nnarwhal\nnarwhale\nnarwhales\nnarwhals\nnary\nnasal\nnasalise\nnasalised\nnasalises\nnasalising\nnasalities\nnasality\nnasalization\nnasalizations\nnasalize\nnasalized\nnasalizes\nnasalizing\nnasally\nnasals\nnascence\nnascences\nnascencies\nnascency\nnascent\nnasial\nnasion\nnasions\nnastic\nnastier\nnastiest\nnastily\nnastiness\nnasturtium\nnasturtiums\nnasty\nnatal\nnatalities\nnatality\nnatant\nnatantly\nnatation\nnatations\nnatatorial\nnatatorium\nnatatoriums\nnatatory\nnatch\nnates\nnathless\nnaties\nnation\nnational\nnationalism\nnationalisms\nnationalist\nnationalistic\nnationalistically\nnationalists\nnationalities\nnationality\nnationalization\nnationalizations\nnationalize\nnationalized\nnationalizes\nnationalizing\nnationally\nnationals\nnationhood\nnations\nnationwide\nnative\nnatively\nnativeness\nnatives\nnativism\nnativisms\nnativist\nnativistic\nnativists\nnativities\nnativity\nnatrium\nnatriums\nnatron\nnatrons\nnatter\nnattered\nnattering\nnatters\nnattier\nnattiest\nnattily\nnatty\nnatural\nnaturalism\nnaturalist\nnaturalistic\nnaturalistically\nnaturalists\nnaturalization\nnaturalizations\nnaturalize\nnaturalized\nnaturalizes\nnaturalizing\nnaturally\nnaturalness\nnaturals\nnature\nnatured\nnatures\nnaught\nnaughtier\nnaughtiest\nnaughtily\nnaughtiness\nnaughts\nnaughty\nnaumachies\nnaumachy\nnauplial\nnauplii\nnauplius\nnausea\nnauseant\nnauseants\nnauseas\nnauseate\nnauseated\nnauseates\nnauseating\nnauseatingly\nnauseous\nnauseously\nnauseousness\nnautch\nnautches\nnautical\nnautically\nnautili\nnautilus\nnautiluses\nnavaid\nnavaids\nnaval\nnavally\nnavar\nnavars\nnave\nnavel\nnavels\nnaves\nnavette\nnavettes\nnavicert\nnavicerts\nnavies\nnavigability\nnavigable\nnavigably\nnavigate\nnavigated\nnavigates\nnavigating\nnavigation\nnavigational\nnavigations\nnavigator\nnavigators\nnavvies\nnavvy\nnavy\nnaw\nnawab\nnawabs\nnay\nnays\nnazi\nnazified\nnazifies\nnazify\nnazifying\nnazis\nne\nneap\nneaps\nnear\nnearby\nneared\nnearer\nnearest\nnearing\nnearlier\nnearliest\nnearly\nnearness\nnearnesses\nnears\nnearsighted\nnearsightedly\nnearsightedness\nneat\nneaten\nneatened\nneatening\nneatens\nneater\nneatest\nneath\nneatherd\nneatherds\nneatly\nneatness\nneatnesses\nneats\nneb\nnebbish\nnebbishes\nnebs\nnebula\nnebulae\nnebular\nnebulas\nnebule\nnebulise\nnebulised\nnebulises\nnebulising\nnebulization\nnebulizations\nnebulize\nnebulized\nnebulizes\nnebulizing\nnebulose\nnebulosities\nnebulosity\nnebulous\nnebulously\nnebulousness\nnebuly\nnecessaries\nnecessarily\nnecessary\nnecessitarian\nnecessitarianism\nnecessitate\nnecessitated\nnecessitates\nnecessitating\nnecessitation\nnecessitations\nnecessities\nnecessitous\nnecessitously\nnecessitousness\nnecessity\nneck\nneckband\nneckbands\nnecked\nneckerchief\nneckerchiefs\nnecking\nneckings\nnecklace\nnecklaces\nneckless\nnecklike\nneckline\nnecklines\nnecks\nnecktie\nneckties\nneckwear\nneckwears\nnecrological\nnecrologies\nnecrologist\nnecrologists\nnecrology\nnecromancer\nnecromancers\nnecromancy\nnecromantic\nnecropsied\nnecropsies\nnecropsy\nnecropsying\nnecrose\nnecrosed\nnecroses\nnecrosing\nnecrosis\nnecrotic\nnectar\nnectaries\nnectarine\nnectarines\nnectars\nnectary\nnee\nneed\nneeded\nneeder\nneeders\nneedful\nneedfully\nneedfulness\nneedfuls\nneedier\nneediest\nneedily\nneediness\nneeding\nneedle\nneedled\nneedlepoint\nneedler\nneedlers\nneedles\nneedless\nneedlessly\nneedlessness\nneedlework\nneedling\nneedlings\nneeds\nneedy\nneem\nneems\nneep\nneeps\nnefarious\nnefariously\nnegate\nnegated\nnegater\nnegaters\nnegates\nnegating\nnegation\nnegational\nnegations\nnegative\nnegatived\nnegatively\nnegatives\nnegativing\nnegativism\nnegativist\nnegativistic\nnegativists\nnegativity\nnegaton\nnegatons\nnegator\nnegators\nnegatron\nnegatrons\nneglect\nneglected\nneglectful\nneglectfully\nneglectfulness\nneglecting\nneglects\nneglige\nnegligee\nnegligees\nnegligence\nnegligent\nnegligently\nnegliges\nnegligibility\nnegligible\nnegligibly\nnegotiability\nnegotiable\nnegotiant\nnegotiants\nnegotiate\nnegotiated\nnegotiates\nnegotiating\nnegotiation\nnegotiations\nnegotiator\nnegotiators\nnegroid\nnegroids\nnegus\nneguses\nneif\nneifs\nneigh\nneighbor\nneighbored\nneighborhood\nneighborhoods\nneighboring\nneighborliness\nneighborly\nneighbors\nneighed\nneighing\nneighs\nneist\nneither\nnekton\nnektonic\nnektons\nnelly\nnelson\nnelsons\nnelumbo\nnelumbos\nnema\nnemas\nnematic\nnematode\nnematodes\nnemeses\nnemesis\nnene\nneoclassic\nneoclassical\nneoclassicism\nneoclassicist\nneoclassicists\nneocolonial\nneocolonialism\nneocolonialist\nneolith\nneoliths\nneologic\nneologies\nneologism\nneologisms\nneologistic\nneology\nneomorph\nneomorphs\nneomycin\nneomycins\nneon\nneonatal\nneonatally\nneonate\nneonates\nneonatologist\nneonatologists\nneonatology\nneoned\nneons\nneophyte\nneophytes\nneoplasm\nneoplasms\nneoprene\nneoprenes\nneotenic\nneotenies\nneoteny\nneoteric\nneoterics\nneotype\nneotypes\nnepenthe\nnepenthes\nnephew\nnephews\nnephric\nnephrism\nnephrisms\nnephrite\nnephrites\nnephritic\nnephron\nnephrons\nnepotic\nnepotism\nnepotisms\nnepotist\nnepotistic\nnepotists\nnerd\nnerds\nnerdy\nnereid\nnereides\nnereids\nnereis\nneritic\nnerol\nneroli\nnerolis\nnerols\nnerts\nnertz\nnervate\nnerve\nnerved\nnerveless\nnervelessly\nnervelessness\nnerves\nnervier\nnerviest\nnervily\nnervine\nnervines\nnerviness\nnerving\nnervings\nnervous\nnervously\nnervousness\nnervule\nnervules\nnervure\nnervures\nnervy\nnescient\nnescients\nness\nnesses\nnest\nnested\nnester\nnesters\nnesting\nnestle\nnestled\nnestler\nnestlers\nnestles\nnestlike\nnestling\nnestlings\nnestor\nnestors\nnests\nnet\nnether\nnethermost\nnetless\nnetlike\nnetop\nnetops\nnets\nnetsuke\nnetsukes\nnett\nnettable\nnetted\nnetter\nnetters\nnettier\nnettiest\nnetting\nnettings\nnettle\nnettled\nnettler\nnettlers\nnettles\nnettlier\nnettliest\nnettling\nnettly\nnetts\nnetty\nnetwork\nnetworked\nnetworking\nnetworks\nneuk\nneuks\nneum\nneumatic\nneume\nneumes\nneumic\nneums\nneural\nneuralgia\nneuralgias\nneuralgic\nneurally\nneurasthenia\nneurasthenic\nneurasthenically\nneuraxon\nneuraxons\nneuritic\nneuritics\nneuritides\nneuritis\nneuritises\nneuroid\nneurological\nneurologically\nneurologist\nneurologists\nneurology\nneuroma\nneuromas\nneuromata\nneuron\nneuronal\nneurone\nneurones\nneuronic\nneurons\nneurosal\nneuroses\nneurosis\nneurotic\nneurotically\nneurotics\nneuston\nneustons\nneuter\nneutered\nneutering\nneuters\nneutral\nneutralism\nneutralist\nneutralists\nneutrality\nneutralization\nneutralizations\nneutralize\nneutralized\nneutralizer\nneutralizers\nneutralizes\nneutralizing\nneutrally\nneutrals\nneutrino\nneutrinos\nneutron\nneutrons\nneve\nnever\nnevermore\nnevertheless\nneves\nnevi\nnevoid\nnevus\nnew\nnewborn\nnewborns\nnewcomer\nnewcomers\nnewel\nnewels\nnewer\nnewest\nnewfangled\nnewfangledness\nnewfound\nnewie\nnewish\nnewly\nnewlywed\nnewlyweds\nnewmown\nnewness\nnewnesses\nnews\nnewsboy\nnewsboys\nnewscast\nnewscaster\nnewscasters\nnewscasts\nnewsdealer\nnewsdealers\nnewsier\nnewsies\nnewsiest\nnewsiness\nnewsless\nnewsletter\nnewsletters\nnewsman\nnewsmen\nnewspaper\nnewspaperman\nnewspapermen\nnewspapers\nnewspaperwoman\nnewspaperwomen\nnewspeak\nnewspeaks\nnewsprint\nnewsreel\nnewsreels\nnewsroom\nnewsrooms\nnewsstand\nnewsstands\nnewsworthy\nnewsy\nnewt\nnewton\nnewtons\nnewts\nnext\nnextdoor\nnexus\nnexuses\nngwee\nniacin\nniacins\nnib\nnibbed\nnibbing\nnibble\nnibbled\nnibbler\nnibblers\nnibbles\nnibbling\nniblick\nniblicks\nniblike\nnibs\nnicad\nnice\nnicely\nniceness\nnicenesses\nnicer\nnicest\nniceties\nnicety\nniche\nniched\nniches\nniching\nnick\nnicked\nnickel\nnickeled\nnickelic\nnickeling\nnickelled\nnickelling\nnickelodeon\nnickelodeons\nnickels\nnicker\nnickered\nnickering\nnickers\nnicking\nnickle\nnickles\nnicknack\nnicknacks\nnickname\nnicknamed\nnicknames\nnicknaming\nnicks\nnicol\nnicols\nnicotin\nnicotine\nnicotines\nnicotinic\nnicotins\nnictate\nnictated\nnictates\nnictating\nnictitate\nnictitated\nnictitates\nnictitating\nnidal\nnide\nnided\nnidering\nniderings\nnides\nnidget\nnidgets\nnidi\nnidified\nnidifies\nnidify\nnidifying\nniding\nnidus\nniduses\nniece\nnieces\nnielli\nniellist\nniellists\nniello\nnielloed\nnielloing\nniellos\nnies\nnieve\nnieves\nniffer\nniffered\nniffering\nniffers\nniftier\nnifties\nniftiest\nnifty\nniggard\nniggarded\nniggarding\nniggardly\nniggards\nnigger\nniggers\nniggle\nniggled\nniggler\nnigglers\nniggles\nniggling\nnigglings\nnigh\nnighed\nnigher\nnighest\nnighing\nnighness\nnighnesses\nnighs\nnight\nnightcap\nnightcaps\nnightclothes\nnightclub\nnightclubs\nnightdress\nnightdresses\nnightfall\nnightfalls\nnightgown\nnightgowns\nnighthawk\nnighthawks\nnightie\nnighties\nnightingale\nnightingales\nnightjar\nnightjars\nnightly\nnightmare\nnightmares\nnightmarish\nnights\nnightshade\nnightshades\nnightshirt\nnightshirts\nnightstick\nnightsticks\nnighttime\nnighttimes\nnighty\nnigrified\nnigrifies\nnigrify\nnigrifying\nnigrosin\nnigrosins\nnihil\nnihilism\nnihilisms\nnihilist\nnihilistic\nnihilists\nnihilities\nnihility\nnihils\nnil\nnilgai\nnilgais\nnilgau\nnilgaus\nnilghai\nnilghais\nnilghau\nnilghaus\nnill\nnilled\nnilling\nnills\nnils\nnim\nnimbi\nnimble\nnimbleness\nnimbler\nnimblest\nnimbly\nnimbus\nnimbused\nnimbuses\nnimieties\nnimiety\nnimious\nnimmed\nnimming\nnimrod\nnimrods\nnims\nnincompoop\nnincompoops\nnine\nninebark\nninebarks\nninefold\nninepin\nninepins\nnines\nnineteen\nnineteens\nnineteenth\nnineteenths\nnineties\nninetieth\nninetieths\nninety\nninja\nninny\nninnyish\nninon\nninons\nninth\nninthly\nninths\nniobic\nniobium\nniobiums\nniobous\nnip\nnipa\nnipas\nnipped\nnipper\nnippers\nnippier\nnippiest\nnippily\nnipping\nnippingly\nnipple\nnipples\nnippy\nnips\nnirvana\nnirvanas\nnirvanic\nnisei\nniseis\nnisi\nnisus\nnit\nnitchie\nnitchies\nniter\nniters\nnitid\nniton\nnitons\nnitpick\nnitpicked\nnitpicker\nnitpickers\nnitpicking\nnitpicks\nnitrate\nnitrated\nnitrates\nnitrating\nnitration\nnitrations\nnitrator\nnitrators\nnitre\nnitres\nnitric\nnitrid\nnitride\nnitrides\nnitrids\nnitrification\nnitrifications\nnitrified\nnitrifies\nnitrify\nnitrifying\nnitril\nnitrile\nnitriles\nnitrils\nnitrite\nnitrites\nnitro\nnitrocellulose\nnitrocellulosic\nnitrogen\nnitrogenous\nnitrogens\nnitroglycerin\nnitroglycerine\nnitrolic\nnitros\nnitroso\nnitrosyl\nnitrosyls\nnitrous\nnits\nnittier\nnittiest\nnitty\nnitwit\nnitwits\nnival\nniveous\nnix\nnixe\nnixed\nnixes\nnixie\nnixies\nnixing\nnixy\nnizam\nnizamate\nnizamates\nnizams\nnmitering\nno\nnob\nnobbier\nnobbiest\nnobbily\nnobble\nnobbled\nnobbler\nnobblers\nnobbles\nnobbling\nnobby\nnobelium\nnobeliums\nnobilities\nnobility\nnoble\nnobleman\nnoblemen\nnobleness\nnobler\nnobles\nnoblesse\nnoblesses\nnoblest\nnoblewoman\nnoblewomen\nnobly\nnobodies\nnobody\nnobs\nnocent\nnock\nnocked\nnocking\nnocks\nnoctuid\nnoctuids\nnoctule\nnoctules\nnoctuoid\nnocturn\nnocturnal\nnocturnally\nnocturne\nnocturnes\nnocturns\nnocuous\nnocuously\nnod\nnodal\nnodalities\nnodality\nnodally\nnodded\nnodder\nnodders\nnoddies\nnodding\nnoddle\nnoddled\nnoddles\nnoddling\nnoddy\nnode\nnodes\nnodi\nnodical\nnodose\nnodosities\nnodosity\nnodous\nnods\nnodular\nnodule\nnodules\nnodulose\nnodulous\nnodus\nnoel\nnoels\nnoes\nnoesis\nnoesises\nnoetic\nnog\nnogg\nnoggin\nnogging\nnoggings\nnoggins\nnoggs\nnogs\nnoh\nnohow\nnoil\nnoils\nnoily\nnoise\nnoised\nnoiseless\nnoiselessly\nnoisemaker\nnoisemakers\nnoisemaking\nnoises\nnoisier\nnoisiest\nnoisily\nnoisiness\nnoising\nnoisome\nnoisomely\nnoisomeness\nnoisy\nnolo\nnolos\nnom\nnoma\nnomad\nnomadic\nnomadism\nnomadisms\nnomads\nnomarch\nnomarchies\nnomarchs\nnomarchy\nnomas\nnombles\nnombril\nnombrils\nnome\nnomen\nnomenclatural\nnomenclature\nnomenclatures\nnomes\nnomina\nnominal\nnominalism\nnominalist\nnominalistic\nnominalists\nnominally\nnominals\nnominate\nnominated\nnominates\nnominating\nnomination\nnominations\nnominative\nnominator\nnominators\nnominee\nnominees\nnomism\nnomisms\nnomistic\nnomogram\nnomograms\nnomograph\nnomographic\nnomography\nnomoi\nnomologies\nnomology\nnomos\nnoms\nnona\nnonaccredited\nnonacid\nnonacids\nnonadjustable\nnonadult\nnonadults\nnonage\nnonagenarian\nnonagenarians\nnonages\nnonaggression\nnonagon\nnonagons\nnonalcoholic\nnonaligned\nnonalignment\nnonalignments\nnonalphabetic\nnonappearance\nnonas\nnonbank\nnonbasic\nnonbeing\nnonbeings\nnonbeliever\nnonbelievers\nnonbinding\nnonbook\nnonbooks\nnonbreakable\nnoncancerous\nnoncandidate\nnoncandidates\nnoncareer\nnoncash\nnonce\nnonces\nnonchalance\nnonchalant\nnonclassified\nnoncom\nnoncombatant\nnoncombatants\nnoncombustible\nnoncommercial\nnoncommissioned\nnoncommittal\nnoncommittally\nnoncompetitive\nnoncompetitor\nnoncompetitors\nnoncompliance\nnoncoms\nnonconductor\nnonconductors\nnonconformance\nnonconforming\nnonconformist\nnonconformists\nnonconformity\nnoncontributing\nnoncooperation\nnoncooperationist\nnoncooperationists\nnoncooperative\nnoncooperator\nnoncooperators\nnoncredit\nnondairy\nnondelivery\nnondescript\nnondescripts\nnondisclosure\nnondisclosures\nnondiscrimination\nnondiscriminatory\nnondistinctive\nnondurable\nnone\nnoneffective\nnoneffectives\nnonego\nnonegos\nnonelect\nnonelectronic\nnonempty\nnonentities\nnonentity\nnonentries\nnonentry\nnonequal\nnonequals\nnones\nnonessential\nnonessentials\nnonesuch\nnonesuches\nnonet\nnonetheless\nnoneuclidean\nnonevent\nnonevents\nnonexistence\nnonexistent\nnonexisting\nnonfarm\nnonfat\nnonfatal\nnonfeasance\nnonfeasances\nnonfiction\nnonfictional\nnonfictions\nnonfluid\nnonfluids\nnonfocal\nnonfood\nnongame\nnongovernmental\nnongreen\nnonguilt\nnonguilts\nnonhardy\nnonhero\nnonheroes\nnonhuman\nnonideal\nnoninflationary\nnonintervention\nnoninterventionalist\nnoninterventionist\nnoninterventionists\nnoninterventions\nnoninvolvement\nnonionic\nnonjuror\nnonjurors\nnonlegal\nnonlife\nnonlives\nnonlocal\nnonlocals\nnonman\nnonmanagement\nnonmanagerial\nnonmen\nnonmetal\nnonmetallic\nnonmetals\nnonmilitary\nnonmodal\nnonmoney\nnonmoral\nnonnaval\nnonnegotiable\nnonobese\nnonobjective\nnonobjectivism\nnonobjectivist\nnonobjectivity\nnonowner\nnonowners\nnonpagan\nnonpagans\nnonpapal\nnonpar\nnonpareil\nnonpareils\nnonparty\nnonpaying\nnonpayment\nnonperformance\nnonplus\nnonplused\nnonpluses\nnonplusing\nnonplussed\nnonplusses\nnonplussing\nnonpolar\nnonproductive\nnonproductiveness\nnonprofessional\nnonprofessionals\nnonprofit\nnonpros\nnonprossed\nnonprosses\nnonprossing\nnonquota\nnonradioactive\nnonrated\nnonrecurrent\nnonrecurring\nnonrenewable\nnonresidence\nnonresidency\nnonresident\nnonresidential\nnonresidents\nnonresistant\nnonresistants\nnonrigid\nnonrival\nnonrivals\nnonroyal\nnonrural\nnonseasonal\nnonsense\nnonsenses\nnonsensical\nnonsensically\nnonsexist\nnonsexists\nnonsignificant\nnonsignificants\nnonsked\nnonskeds\nnonskid\nnonskier\nnonskiers\nnonslip\nnonsmoker\nnonsmokers\nnonsmoking\nnonsolar\nnonsolid\nnonsolids\nnonspecific\nnonstandard\nnonstick\nnonstop\nnonsuch\nnonsuches\nnonsugar\nnonsugars\nnonsuit\nnonsuited\nnonsuiting\nnonsuits\nnontax\nnontaxable\nnontaxes\nnontidal\nnontitle\nnontoxic\nnontransferable\nnontrump\nnontruth\nnontruths\nnonunion\nnonunions\nnonuple\nnonuples\nnonurban\nnonuse\nnonuser\nnonusers\nnonuses\nnonusing\nnonviolent\nnonviolently\nnonviral\nnonvocal\nnonvolatile\nnonvoter\nnonvoters\nnonvoting\nnonwhite\nnonwhites\nnonwoody\nnonwoven\nnonyl\nnonzero\nnoo\nnoodle\nnoodled\nnoodles\nnoodling\nnook\nnookies\nnooklike\nnooks\nnooky\nnoon\nnoonday\nnoondays\nnooning\nnoonings\nnoons\nnoontide\nnoontides\nnoontime\nnoontimes\nnoose\nnoosed\nnooser\nnoosers\nnooses\nnoosing\nnopal\nnopals\nnope\nnor\nnoria\nnorias\nnorite\nnorites\nnoritic\nnorland\nnorlands\nnorm\nnormal\nnormalcies\nnormalcy\nnormality\nnormalization\nnormalizations\nnormalize\nnormalized\nnormalizes\nnormalizing\nnormally\nnormals\nnormative\nnormatively\nnormed\nnormless\nnorms\nnorth\nnorthbound\nnortheast\nnortheaster\nnortheasterly\nnortheastern\nnortheasters\nnorther\nnortherlies\nnortherly\nnorthern\nnorthernmost\nnortherns\nnorthers\nnorthing\nnorthings\nnorths\nnorthward\nnorthwards\nnorthwest\nnorthwesterly\nnorthwestern\nnos\nnose\nnosebag\nnosebags\nnoseband\nnosebands\nnosebleed\nnosebleeds\nnosed\nnosegay\nnosegays\nnoseless\nnoselike\nnosepiece\nnosepieces\nnoses\nnosey\nnosh\nnoshed\nnosher\nnoshers\nnoshes\nnoshing\nnosier\nnosiest\nnosily\nnosiness\nnosinesses\nnosing\nnosings\nnosologies\nnosology\nnostalgia\nnostalgic\nnostalgically\nnostoc\nnostocs\nnostril\nnostrils\nnostrum\nnostrums\nnosy\nnot\nnota\nnotabilities\nnotability\nnotable\nnotableness\nnotables\nnotably\nnotal\nnotarial\nnotarially\nnotaries\nnotarization\nnotarizations\nnotarize\nnotarized\nnotarizes\nnotarizing\nnotary\nnotate\nnotated\nnotates\nnotating\nnotation\nnotational\nnotations\nnotch\nnotchback\nnotchbacks\nnotched\nnotcher\nnotchers\nnotches\nnotching\nnote\nnotebook\nnotebooks\nnotecase\nnotecases\nnoted\nnotedly\nnoteless\nnoter\nnoters\nnotes\nnoteworthiness\nnoteworthy\nnothing\nnothingness\nnothings\nnotice\nnoticeable\nnoticeably\nnoticed\nnotices\nnoticing\nnotifiable\nnotification\nnotifications\nnotified\nnotifier\nnotifiers\nnotifies\nnotify\nnotifying\nnoting\nnotion\nnotional\nnotionally\nnotions\nnotoriety\nnotorious\nnotoriously\nnotoriousness\nnotornis\nnotturni\nnotturno\nnotum\nnotwithstanding\nnougat\nnougats\nnought\nnoughts\nnoumena\nnoumenal\nnoumenon\nnoun\nnounal\nnounally\nnounless\nnouns\nnourish\nnourished\nnourishes\nnourishing\nnourishment\nnourishments\nnous\nnouses\nnova\nnovae\nnovalike\nnovas\nnovation\nnovations\nnovel\nnovelette\nnovelettes\nnovelise\nnovelised\nnovelises\nnovelising\nnovelist\nnovelistic\nnovelists\nnovelization\nnovelizations\nnovelize\nnovelized\nnovelizes\nnovelizing\nnovella\nnovellas\nnovelle\nnovelly\nnovels\nnovelties\nnovelty\nnovena\nnovenae\nnovenas\nnovercal\nnovice\nnovices\nnovitiate\nnovitiates\nnow\nnowadays\nnoway\nnoways\nnowhere\nnowheres\nnowise\nnows\nnowt\nnowts\nnoxious\nnoxiously\nnoxiousness\nnoyade\nnoyades\nnozzle\nnozzles\nnth\nnu\nnuance\nnuanced\nnuances\nnub\nnubbier\nnubbiest\nnubbin\nnubbins\nnubble\nnubbles\nnubblier\nnubbliest\nnubbly\nnubby\nnubia\nnubias\nnubile\nnubilities\nnubility\nnubilose\nnubilous\nnubs\nnucellar\nnucelli\nnucellus\nnucha\nnuchae\nnuchal\nnuchals\nnucleal\nnuclear\nnuclease\nnucleases\nnucleate\nnucleated\nnucleates\nnucleating\nnucleation\nnucleations\nnucleator\nnucleators\nnuclei\nnuclein\nnucleins\nnucleole\nnucleoles\nnucleoli\nnucleon\nnucleonic\nnucleonics\nnucleons\nnucleus\nnucleuses\nnuclide\nnuclides\nnuclidic\nnude\nnudely\nnudeness\nnudenesses\nnuder\nnudes\nnudest\nnudge\nnudged\nnudger\nnudgers\nnudges\nnudging\nnudicaul\nnudie\nnudies\nnudism\nnudisms\nnudist\nnudists\nnudities\nnudity\nnudnick\nnudnicks\nnudnik\nnudniks\nnudzh\nnugatory\nnugget\nnuggets\nnuggety\nnuisance\nnuisances\nnuke\nnuked\nnukes\nnull\nnullah\nnullahs\nnulled\nnullification\nnullifications\nnullified\nnullifier\nnullifiers\nnullifies\nnullify\nnullifying\nnulling\nnullities\nnullity\nnulls\nnumb\nnumbed\nnumber\nnumbered\nnumberer\nnumberers\nnumbering\nnumberless\nnumbers\nnumbest\nnumbfish\nnumbfishes\nnumbing\nnumbingly\nnumbles\nnumbly\nnumbness\nnumbnesses\nnumbs\nnumbskull\nnumbskulls\nnumen\nnumerable\nnumeral\nnumerals\nnumerary\nnumerate\nnumerated\nnumerates\nnumerating\nnumeration\nnumerations\nnumerator\nnumerators\nnumeric\nnumerical\nnumerically\nnumerics\nnumerological\nnumerologist\nnumerologists\nnumerology\nnumerous\nnumerously\nnumerousness\nnumina\nnuminous\nnuminouses\nnumismatic\nnumismatics\nnumismatist\nnumismatists\nnummary\nnummular\nnumskull\nnumskulls\nnun\nnuncio\nnuncios\nnuncle\nnuncles\nnunlike\nnunneries\nnunnery\nnunnish\nnuns\nnuptial\nnuptials\nnurd\nnurds\nnurl\nnurled\nnurling\nnurls\nnurse\nnursed\nnursemaid\nnursemaids\nnurser\nnurseries\nnursers\nnursery\nnurseryman\nnurserymen\nnurses\nnursing\nnursings\nnursling\nnurslings\nnurture\nnurtured\nnurturer\nnurturers\nnurtures\nnurturing\nnus\nnut\nnutant\nnutate\nnutated\nnutates\nnutating\nnutation\nnutations\nnutbrown\nnutcracker\nnutcrackers\nnutgall\nnutgalls\nnutgrass\nnutgrasses\nnuthatch\nnuthatches\nnuthouse\nnuthouses\nnutlet\nnutlets\nnutlike\nnutmeat\nnutmeats\nnutmeg\nnutmegs\nnutpick\nnutpicks\nnutria\nnutrias\nnutrient\nnutrients\nnutriment\nnutriments\nnutrition\nnutritional\nnutritionally\nnutritionist\nnutritionists\nnutritions\nnutritious\nnutritiously\nnutritiousness\nnutritive\nnutritively\nnuts\nnutsedge\nnutsedges\nnutshell\nnutshells\nnutsy\nnutted\nnutter\nnutters\nnuttier\nnuttiest\nnuttily\nnuttiness\nnutting\nnutty\nnutwood\nnutwoods\nnuzzle\nnuzzled\nnuzzles\nnuzzling\nnyala\nnyalas\nnylghai\nnylghais\nnylghau\nnylghaus\nnylon\nnylons\nnymph\nnympha\nnymphae\nnymphal\nnymphean\nnymphet\nnymphets\nnympho\nnymphomania\nnymphomaniac\nnymphomaniacal\nnymphomaniacs\nnymphos\nnymphs\no\noaf\noafish\noafishly\noafishness\noafs\noak\noaken\noaklike\noakmoss\noakmosses\noaks\noakum\noakums\noar\noared\noarfish\noarfishes\noaring\noarless\noarlike\noarlock\noarlocks\noars\noarsman\noarsmen\noases\noasis\noast\noasts\noat\noatcake\noatcakes\noaten\noater\noaters\noath\noaths\noatlike\noatmeal\noatmeals\noats\noaves\nobbligato\nobbligatos\nobduracies\nobduracy\nobdurate\nobdurately\nobdurateness\nobe\nobeah\nobeahism\nobeahisms\nobeahs\nobedience\nobediences\nobedient\nobediently\nobeisance\nobeisances\nobeisant\nobeisantly\nobeli\nobelia\nobelias\nobelise\nobelised\nobelises\nobelising\nobelisk\nobelisks\nobelism\nobelisms\nobelize\nobelized\nobelizes\nobelizing\nobelus\nobes\nobese\nobesely\nobesities\nobesity\nobey\nobeyable\nobeyed\nobeyer\nobeyers\nobeying\nobeys\nobfuscate\nobfuscated\nobfuscates\nobfuscating\nobfuscation\nobfuscations\nobfuscatory\nobi\nobia\nobias\nobiism\nobiisms\nobis\nobit\nobits\nobituaries\nobituary\nobject\nobjected\nobjectification\nobjectifications\nobjectified\nobjectifies\nobjectify\nobjectifying\nobjecting\nobjection\nobjectionable\nobjectionableness\nobjectionably\nobjections\nobjective\nobjectively\nobjectiveness\nobjectives\nobjectivism\nobjectivist\nobjectivistic\nobjectivists\nobjectivities\nobjectivity\nobjectless\nobjector\nobjectors\nobjects\nobjurgate\nobjurgated\nobjurgates\nobjurgating\nobjurgation\nobjurgations\nobjurgatory\noblast\noblasti\noblasts\noblate\noblately\noblates\noblation\noblations\noblatory\nobligate\nobligated\nobligates\nobligati\nobligating\nobligation\nobligations\nobligato\nobligatorily\nobligatory\nobligatos\noblige\nobliged\nobligee\nobligees\nobliger\nobligers\nobliges\nobliging\nobligingly\nobligingness\nobligor\nobligors\noblique\nobliqued\nobliquely\nobliqueness\nobliques\nobliquing\nobliquities\nobliquity\nobliterate\nobliterated\nobliterates\nobliterating\nobliteration\nobliterations\nobliterative\nobliterator\nobliterators\noblivion\noblivions\noblivious\nobliviously\nobliviousness\noblong\noblongly\noblongs\nobloquies\nobloquy\nobnoxious\nobnoxiously\nobnoxiousness\noboe\noboes\noboist\noboists\nobol\nobole\noboles\noboli\nobols\nobolus\nobovate\nobovoid\nobscene\nobscenely\nobscener\nobscenest\nobscenities\nobscenity\nobscurantist\nobscurantists\nobscure\nobscured\nobscurely\nobscureness\nobscurer\nobscures\nobscurest\nobscuring\nobscurities\nobscurity\nobsequies\nobsequious\nobsequiously\nobsequiousness\nobsequy\nobservable\nobservably\nobservance\nobservances\nobservant\nobservantly\nobservation\nobservational\nobservations\nobservatories\nobservatory\nobserve\nobserved\nobserver\nobservers\nobserves\nobserving\nobservingly\nobsess\nobsessed\nobsesses\nobsessing\nobsession\nobsessional\nobsessions\nobsessive\nobsessively\nobsessiveness\nobsessor\nobsessors\nobsidian\nobsidians\nobsolesce\nobsolesced\nobsolescence\nobsolescences\nobsolescent\nobsolescently\nobsolesces\nobsolescing\nobsolete\nobsoleted\nobsoletely\nobsoleteness\nobsoletes\nobsoleting\nobstacle\nobstacles\nobstetric\nobstetrical\nobstetrically\nobstetrician\nobstetricians\nobstetrics\nobstinacies\nobstinacy\nobstinate\nobstinately\nobstinateness\nobstreperous\nobstreperously\nobstreperousness\nobstruct\nobstructed\nobstructing\nobstruction\nobstructionism\nobstructionist\nobstructionistic\nobstructionists\nobstructions\nobstructive\nobstructiveness\nobstructor\nobstructors\nobstructs\nobtain\nobtainable\nobtained\nobtainer\nobtainers\nobtaining\nobtainment\nobtainments\nobtains\nobtect\nobtected\nobtest\nobtested\nobtesting\nobtests\nobtrude\nobtruded\nobtruder\nobtruders\nobtrudes\nobtruding\nobtrusion\nobtrusions\nobtrusive\nobtrusively\nobtrusiveness\nobtund\nobtunded\nobtunding\nobtunds\nobturate\nobturated\nobturates\nobturating\nobtuse\nobtusely\nobtuseness\nobtuser\nobtusest\nobverse\nobversely\nobverses\nobvert\nobverted\nobverting\nobverts\nobviable\nobviate\nobviated\nobviates\nobviating\nobviation\nobviations\nobviator\nobviators\nobvious\nobviously\nobviousness\nobvolute\noca\nocarina\nocarinas\nocas\noccasion\noccasional\noccasionally\noccasioned\noccasioning\noccasions\noccident\noccidents\noccipita\noccipital\nocciput\nocciputs\nocclude\noccluded\noccludes\noccluding\nocclusal\nocclusion\nocclusions\nocclusive\noccult\noccultation\noccultations\nocculted\nocculter\nocculters\nocculting\noccultism\noccultisms\noccultist\noccultists\noccultly\noccults\noccupancies\noccupancy\noccupant\noccupants\noccupation\noccupational\noccupationally\noccupations\noccupied\noccupier\noccupiers\noccupies\noccupy\noccupying\noccur\noccurred\noccurrence\noccurrences\noccurrent\noccurring\noccurs\nocean\noceanfront\noceanfronts\noceangoing\noceanic\noceanographer\noceanographers\noceanographic\noceanographical\noceanography\noceanology\noceans\nocellar\nocellate\nocelli\nocellus\noceloid\nocelot\nocelots\nocher\nochered\nochering\nocherous\nochers\nochery\nochone\nochre\nochrea\nochreae\nochred\nochreous\nochres\nochring\nochroid\nochrous\nochry\nocker\nocotillo\nocotillos\nocrea\nocreae\nocreate\noctad\noctadic\noctads\noctagon\noctagonal\noctagonally\noctagons\noctahedra\noctahedral\noctahedron\noctahedrons\noctal\noctan\noctane\noctanes\noctangle\noctangles\noctant\noctantal\noctants\noctarchies\noctarchy\noctaval\noctave\noctaves\noctavo\noctavos\noctet\noctets\noctette\noctettes\noctogenarian\noctogenarians\noctonaries\noctonary\noctopi\noctopod\noctopodes\noctopods\noctopus\noctopuses\noctoroon\noctoroons\noctroi\noctrois\noctuple\noctupled\noctuples\noctuplet\noctuplets\noctuplex\noctupling\noctuply\noctyl\noctyls\nocular\nocularly\noculars\noculist\noculists\nod\nodalisk\nodalisks\nodd\noddball\noddballs\nodder\noddest\noddish\noddities\noddity\noddly\noddment\noddments\noddness\noddnesses\nodds\node\nodea\nodeon\nodeons\nodes\nodeum\nodic\nodious\nodiously\nodiousness\nodist\nodium\nodiums\nodograph\nodographs\nodometer\nodometers\nodometries\nodometry\nodonate\nodonates\nodontoid\nodontoids\nodor\nodorant\nodorants\nodored\nodorful\nodoriferous\nodoriferously\nodoriferousness\nodorize\nodorized\nodorizes\nodorizing\nodorless\nodorous\nodorously\nodorousness\nodors\nodour\nodourful\nodours\nods\nodyl\nodyle\nodyles\nodyls\nodyssey\nodysseys\noe\noecologies\noecology\noedema\noedemas\noedemata\noedipal\noedipean\noeillade\noeillades\noenologies\noenology\noenomel\noenomels\noerloaded\noersted\noersteds\noes\noestrin\noestrins\noestriol\noestriols\noestrone\noestrones\noestrous\noestrum\noestrums\noestrus\noestruses\noeuvre\noeuvres\nof\nofay\nofays\noff\noffal\noffals\noffbeat\noffbeats\noffcast\noffcasts\noffed\noffence\noffences\noffend\noffended\noffender\noffenders\noffending\noffends\noffense\noffenseless\noffenses\noffensive\noffensively\noffensiveness\noffer\noffered\nofferer\nofferers\noffering\nofferings\nofferor\nofferors\noffers\noffertories\noffertory\noffhand\noffhanded\noffhandedly\noffhandedness\noffice\nofficeholder\nofficeholders\nofficer\nofficered\nofficering\nofficers\noffices\nofficial\nofficialism\nofficially\nofficials\nofficiary\nofficiate\nofficiated\nofficiates\nofficiating\nofficiation\nofficiations\nofficinal\nofficinally\nofficious\nofficiously\nofficiousness\noffing\noffings\noffish\noffishly\noffishness\noffload\noffloaded\noffloading\noffloads\noffprint\noffprinted\noffprinting\noffprints\noffs\noffset\noffsets\noffsetting\noffshoot\noffshoots\noffshore\noffside\noffspring\noffsprings\noffstage\noft\noften\noftener\noftenest\nofter\noftest\nofttimes\nogam\nogams\nogdoad\nogdoads\nogee\nogees\nogham\noghamic\noghamist\noghamists\noghams\nogival\nogive\nogives\nogle\nogled\nogler\noglers\nogles\nogling\nogre\nogreish\nogreism\nogreisms\nogres\nogress\nogresses\nogrish\nogrishly\nogrism\nogrisms\noh\nohed\nohia\nohias\nohing\nohm\nohmage\nohmages\nohmic\nohmmeter\nohmmeters\nohms\noho\nohs\noidia\noidium\noil\noilbird\noilbirds\noilcamp\noilcamps\noilcan\noilcans\noilcloth\noilcloths\noilcup\noilcups\noiled\noiler\noilers\noilhole\noilholes\noilier\noiliest\noilily\noiliness\noilinesses\noiling\noilman\noilmen\noilpaper\noilpapers\noilproof\noils\noilseed\noilseeds\noilskin\noilskins\noilstone\noilstones\noiltight\noilway\noilways\noily\noink\noinked\noinking\noinks\noinologies\noinology\noinomel\noinomels\nointment\nointments\noiticica\noiticicas\noka\nokapi\nokapis\nokas\nokay\nokayed\nokaying\nokays\noke\nokeh\nokehs\nokes\nokeydoke\nokra\nokras\nold\nolden\nolder\noldest\noldie\noldies\noldish\noldness\noldnesses\nolds\noldster\noldsters\noldstyle\noldstyles\noldwife\noldwives\noldy\nole\nolea\noleaginous\noleander\noleanders\noleaster\noleasters\noleate\noleates\nolefin\nolefine\nolefines\nolefinic\nolefins\noleic\nolein\noleine\noleines\noleins\noleo\noleomargarine\noleomargarines\noleos\noles\noleum\noleums\nolfaction\nolfactory\nolibanum\nolibanums\noligarch\noligarchic\noligarchical\noligarchies\noligarchs\noligarchy\noligomer\noligomers\noligopolies\noligopoly\noligopsonies\noligopsony\nolio\nolios\nolivary\nolive\nolives\nolivine\nolivines\nolivinic\nolla\nollas\nollygagged\nologies\nologist\nologists\nology\nolympiad\nolympiads\nom\nomasa\nomasum\nomber\nombers\nombre\nombres\nombudsman\nombudsmen\nomega\nomegas\nomelet\nomelets\nomelette\nomelettes\nomen\nomened\nomening\nomens\nomenta\nomental\nomentum\nomentums\nomer\nomers\nomicron\nomicrons\nomikron\nomikrons\nominous\nominously\nominousness\nomissible\nomission\nomissions\nomissive\nomit\nomits\nomitted\nomitting\nomniarch\nomniarchs\nomnibus\nomnibuses\nomnifarious\nomnific\nomniform\nomnimode\nomnipotence\nomnipotences\nomnipotent\nomnipotently\nomnipresence\nomnipresent\nomniscience\nomniscient\nomnisciently\nomnivora\nomnivore\nomnivores\nomnivorous\nomnivorously\nomophagies\nomophagy\nomphali\nomphalos\noms\non\nonager\nonagers\nonagri\nonanism\nonanisms\nonanist\nonanists\nonce\noncidium\noncidiums\noncologies\noncology\noncoming\noncomings\nondogram\nondograms\none\nonefold\noneiric\noneness\nonenesses\nonerier\noneriest\nonerous\nonerously\nonerousness\nonery\nones\noneself\nonetime\nongoing\nonion\nonions\nonionskin\nonionskins\nonium\nonlooker\nonlookers\nonlooking\nonly\nonomatopoeia\nonomatopoeic\nonomatopoeically\nonomatopoetically\nonrush\nonrushes\nonrushing\nons\nonset\nonsets\nonshore\nonside\nonslaught\nonslaughts\nonstage\nontic\nonto\nontogenies\nontogeny\nontological\nontologies\nontologist\nontologists\nontology\nonus\nonuses\nonward\nonwards\nonyx\nonyxes\noocyst\noocysts\noocyte\noocytes\noodles\noodlins\noogamete\noogametes\noogamies\noogamous\noogamy\noogenies\noogeny\noogonia\noogonial\noogonium\noogoniums\nooh\noohed\noohing\noohs\noolachan\noolachans\noolite\noolites\noolith\nooliths\noolitic\noologic\noologies\noologist\noologists\noology\noolong\noolongs\noomiac\noomiack\noomiacks\noomiacs\noomiak\noomiaks\noomph\noomphs\noophyte\noophytes\noophytic\noops\noorali\nooralis\noorie\noosperm\noosperms\noosphere\noospheres\noospore\noospores\noosporic\noot\nootheca\noothecae\noothecal\nootid\nootids\noots\nooze\noozed\noozes\noozier\nooziest\noozily\nooziness\noozinesses\noozing\noozy\nop\nopacified\nopacifies\nopacify\nopacifying\nopacities\nopacity\nopah\nopahs\nopal\nopalesce\nopalesced\nopalescence\nopalescences\nopalescent\nopalesces\nopalescing\nopaline\nopalines\nopals\nopaque\nopaqued\nopaquely\nopaqueness\nopaquer\nopaques\nopaquest\nopaquing\nope\noped\nopen\nopenable\nopened\nopener\nopeners\nopenest\nopenhanded\nopenhandedly\nopenhandedness\nopenhearted\nopenheartedly\nopening\nopenings\nopenly\nopenness\nopennesses\nopens\nopenwork\nopenworks\nopera\noperabilities\noperability\noperable\noperably\noperand\noperands\noperant\noperants\noperas\noperate\noperated\noperates\noperatic\noperatically\noperatics\noperating\noperation\noperational\noperationalism\noperationally\noperations\noperative\noperatively\noperativeness\noperatives\noperator\noperators\nopercele\noperceles\nopercula\nopercule\nopercules\noperetta\noperettas\noperon\noperons\noperose\nopes\nophidian\nophidians\nophite\nophites\nophitic\nophthalmological\nophthalmologist\nophthalmologists\nophthalmology\nophthalmoscope\nophthalmoscopes\nophthalmoscopic\nopiate\nopiated\nopiates\nopiating\nopine\nopined\nopines\noping\nopining\nopinion\nopinionated\nopinionatedly\nopinionative\nopinionatively\nopinionativeness\nopinioned\nopinions\nopium\nopiumism\nopiumisms\nopiums\nopossum\nopossums\noppidan\noppidans\noppilant\noppilate\noppilated\noppilates\noppilating\nopponent\nopponents\nopportune\nopportunely\nopportuneness\nopportunism\nopportunist\nopportunistic\nopportunistically\nopportunists\nopportunities\nopportunity\nopposabilities\nopposability\nopposable\noppose\nopposed\nopposer\nopposers\nopposes\nopposing\nopposite\noppositely\noppositeness\nopposites\nopposition\noppositional\noppositionist\noppositionists\noppositions\noppress\noppressed\noppresses\noppressing\noppression\noppressions\noppressive\noppressively\noppressiveness\noppressor\noppressors\nopprobrious\nopprobriously\nopprobriousness\nopprobrium\nopprobriums\noppugn\noppugned\noppugner\noppugners\noppugning\noppugns\nops\nopsin\nopsins\nopsonic\nopsonified\nopsonifies\nopsonify\nopsonifying\nopsonin\nopsonins\nopsonize\nopsonized\nopsonizes\nopsonizing\nopt\noptative\noptatives\nopted\noptic\noptical\noptically\noptician\nopticians\nopticist\nopticists\noptics\noptima\noptimal\noptimally\noptime\noptimes\noptimise\noptimised\noptimises\noptimising\noptimism\noptimisms\noptimist\noptimistic\noptimistically\noptimists\noptimization\noptimizations\noptimize\noptimized\noptimizes\noptimizing\noptimum\noptimuma\noptimums\nopting\noption\noptional\noptionally\noptionals\noptioned\noptionee\noptionees\noptioning\noptions\noptometrist\noptometrists\noptometry\nopts\nopulence\nopulences\nopulencies\nopulency\nopulent\nopulently\nopuntia\nopuntias\nopus\nopuscula\nopuscule\nopuscules\nopuses\noquassa\noquassas\nor\nora\norach\norache\noraches\noracle\noracles\noracular\noracularly\norad\noral\noralities\norality\norally\norals\norang\norange\norangeade\norangeries\norangery\noranges\norangewood\norangewoods\norangey\norangier\norangiest\norangish\norangs\norangy\norate\norated\norates\norating\noration\norations\norator\noratorical\noratorically\noratories\noratorio\noratorios\norators\noratory\noratress\noratresses\noratrices\noratrix\norb\norbed\norbicular\norbiculate\norbing\norbit\norbital\norbitals\norbited\norbiter\norbiters\norbiting\norbits\norbs\norby\norc\norca\norcas\norcein\norceins\norchard\norchardist\norchardists\norchards\norchestra\norchestral\norchestrally\norchestras\norchestrate\norchestrated\norchestrates\norchestrating\norchestration\norchestrations\norchestrator\norchestrators\norchid\norchids\norchil\norchils\norchis\norchises\norchitic\norchitis\norchitises\norcin\norcinol\norcinols\norcins\norcs\nordain\nordained\nordainer\nordainers\nordaining\nordainment\nordainments\nordains\nordeal\nordeals\norder\nordered\norderer\norderers\nordering\norderless\norderlies\norderliness\norderly\norders\nordinal\nordinals\nordinance\nordinances\nordinand\nordinands\nordinarier\nordinaries\nordinariest\nordinarily\nordinariness\nordinary\nordinate\nordinates\nordination\nordinations\nordines\nordnance\nordnances\nordo\nordos\nordure\nordures\nore\noread\noreads\norectic\norective\noregano\noreganos\noreide\noreides\nores\norfray\norfrays\norgan\norgana\norgandie\norgandies\norgandy\norganic\norganically\norganicities\norganicity\norganics\norganise\norganised\norganises\norganising\norganism\norganismic\norganisms\norganist\norganists\norganizable\norganization\norganizational\norganizationally\norganizations\norganize\norganized\norganizer\norganizers\norganizes\norganizing\norganon\norganons\norgans\norganum\norganums\norganza\norganzas\norgasm\norgasmic\norgasms\norgastic\norgeat\norgeats\norgiac\norgic\norgies\norgulous\norgy\noribatid\noribatids\noribi\noribis\noriel\noriels\norient\noriental\norientally\norientals\norientate\norientated\norientates\norientating\norientation\norientations\noriented\norienting\norients\norifice\norifices\norigami\norigamis\norigan\norigans\noriganum\noriganums\norigin\noriginal\noriginalities\noriginality\noriginally\noriginals\noriginate\noriginated\noriginates\noriginating\norigination\noriginations\noriginative\noriginator\noriginators\norigins\norinasal\norinasals\noriole\norioles\norison\norisons\norle\norles\norlop\norlops\normer\normers\normolu\normolus\nornament\nornamental\nornamentally\nornamentals\nornamentation\nornamentations\nornamented\nornamenting\nornaments\nornate\nornately\nornateness\nornerier\norneriest\norneriness\nornery\nornis\nornithes\nornithic\nornithological\nornithologist\nornithologists\nornithology\norogenic\norogenies\norogeny\noroide\noroides\norologies\norology\norometer\norometers\norotund\norotundities\norotundity\norphan\norphanage\norphanages\norphaned\norphanhood\norphaning\norphans\norphic\norphical\norphrey\norphreys\norpiment\norpiments\norpin\norpine\norpines\norpins\norra\norreries\norrery\norrice\norrices\norris\norrises\nors\nort\northicon\northicons\northo\northoclase\northodontia\northodontic\northodontics\northodontist\northodontists\northodox\northodoxes\northodoxies\northodoxy\northoepies\northoepy\northogonal\northogonalities\northogonality\northogonally\northographic\northographically\northographies\northography\northopedic\northopedically\northopedics\northopedist\northopedists\northotic\nortolan\nortolans\norts\noryx\noryxes\norzo\norzos\nos\nosar\noscillate\noscillated\noscillates\noscillating\noscillation\noscillations\noscillator\noscillators\noscillatory\noscilloscope\noscilloscopes\noscine\noscines\noscinine\noscitant\noscula\nosculant\noscular\nosculate\nosculated\nosculates\nosculating\nosculation\nosculations\noscule\noscules\nosculum\nose\noses\nosier\nosiers\nosmatic\nosmic\nosmious\nosmium\nosmiums\nosmol\nosmolal\nosmolar\nosmols\nosmose\nosmosed\nosmoses\nosmosing\nosmosis\nosmotic\nosmotically\nosmous\nosmund\nosmunda\nosmundas\nosmunds\nosnaburg\nosnaburgs\nosprey\nospreys\nossa\nossein\nosseins\nosseous\nossia\nossicle\nossicles\nossific\nossification\nossifications\nossified\nossifier\nossifiers\nossifies\nossify\nossifying\nossuaries\nossuary\nosteal\nosteitic\nosteitides\nosteitis\nostensible\nostensibly\nostensive\nostensively\nostentation\nostentations\nostentatious\nostentatiously\nostentatiousness\nosteoid\nosteoids\nosteoma\nosteomas\nosteomata\nosteopath\nosteopathic\nosteopathically\nosteopaths\nosteopathy\nostia\nostiaries\nostiary\nostinato\nostinatos\nostiolar\nostiole\nostioles\nostium\nostler\nostlers\nostmark\nostmarks\nostomies\nostomy\nostoses\nostosis\nostosises\nostracism\nostracisms\nostracize\nostracized\nostracizes\nostracizing\nostracod\nostracods\nostrich\nostriches\notalgia\notalgias\notalgic\notalgies\notalgy\nother\notherness\nothers\notherwise\notic\noties\notiose\notiosely\notiosities\notiosity\notitic\notitides\notitis\notocyst\notocysts\notolith\notoliths\notologies\notology\notoscope\notoscopes\notoscopies\notoscopy\nottar\nottars\nottava\nottavas\notter\notters\notto\nottoman\nottomans\nottos\nouabain\nouabains\noubliette\noubliettes\nouch\nouches\noud\nouds\nought\noughted\noughting\noughts\nouistiti\nouistitis\nounce\nounces\nouph\nouphe\nouphes\nouphs\nour\nourang\nourangs\nourari\nouraris\nourebi\nourebis\nourie\nours\nourself\nourselves\nousel\nousels\noust\nousted\nouster\nousters\nousting\nousts\nout\noutact\noutacted\noutacting\noutacts\noutadd\noutadded\noutadding\noutadds\noutage\noutages\noutargue\noutargued\noutargues\noutarguing\noutask\noutasked\noutasking\noutasks\noutate\noutback\noutbacks\noutbake\noutbaked\noutbakes\noutbaking\noutbark\noutbarked\noutbarking\noutbarks\noutbawl\noutbawled\noutbawling\noutbawls\noutbeam\noutbeamed\noutbeaming\noutbeams\noutbeg\noutbegged\noutbegging\noutbegs\noutbid\noutbidden\noutbidding\noutbids\noutblaze\noutblazed\noutblazes\noutblazing\noutbleat\noutbleated\noutbleating\noutbleats\noutbless\noutblessed\noutblesses\noutblessing\noutbloom\noutbloomed\noutblooming\noutblooms\noutbluff\noutbluffed\noutbluffing\noutbluffs\noutblush\noutblushed\noutblushes\noutblushing\noutboard\noutboards\noutboast\noutboasted\noutboasting\noutboasts\noutbound\noutbox\noutboxed\noutboxes\noutboxing\noutbrag\noutbragged\noutbragging\noutbrags\noutbrave\noutbraved\noutbraves\noutbraving\noutbreak\noutbreaks\noutbred\noutbreed\noutbreeding\noutbreeds\noutbribe\noutbribed\noutbribes\noutbribing\noutbuild\noutbuilding\noutbuildings\noutbuilds\noutbuilt\noutbullied\noutbullies\noutbully\noutbullying\noutburn\noutburned\noutburning\noutburns\noutburnt\noutburst\noutbursts\noutby\noutbye\noutcaper\noutcapered\noutcapering\noutcapers\noutcast\noutcaste\noutcastes\noutcasts\noutcatch\noutcatches\noutcatching\noutcaught\noutcavil\noutcaviled\noutcaviling\noutcavilled\noutcavilling\noutcavils\noutcharm\noutcharmed\noutcharming\noutcharms\noutcheat\noutcheated\noutcheating\noutcheats\noutchid\noutchidden\noutchide\noutchided\noutchides\noutchiding\noutclass\noutclassed\noutclasses\noutclassing\noutclimb\noutclimbed\noutclimbing\noutclimbs\noutclomb\noutcome\noutcomes\noutcook\noutcooked\noutcooking\noutcooks\noutcrawl\noutcrawled\noutcrawling\noutcrawls\noutcried\noutcries\noutcrop\noutcropped\noutcropping\noutcrops\noutcross\noutcrossed\noutcrosses\noutcrossing\noutcrow\noutcrowed\noutcrowing\noutcrows\noutcry\noutcrying\noutcurse\noutcursed\noutcurses\noutcursing\noutcurve\noutcurves\noutdance\noutdanced\noutdances\noutdancing\noutdare\noutdared\noutdares\noutdaring\noutdate\noutdated\noutdatedness\noutdates\noutdating\noutdid\noutdistance\noutdistanced\noutdistances\noutdistancing\noutdo\noutdodge\noutdodged\noutdodges\noutdodging\noutdoer\noutdoers\noutdoes\noutdoing\noutdone\noutdoor\noutdoors\noutdrank\noutdraw\noutdrawing\noutdrawn\noutdraws\noutdream\noutdreamed\noutdreaming\noutdreams\noutdreamt\noutdress\noutdressed\noutdresses\noutdressing\noutdrew\noutdrink\noutdrinking\noutdrinks\noutdrive\noutdriven\noutdrives\noutdriving\noutdrop\noutdropped\noutdropping\noutdrops\noutdrove\noutdrunk\nouteat\nouteate\nouteaten\nouteating\nouteats\noutecho\noutechoed\noutechoes\noutechoing\nouted\nouter\noutermost\nouters\nouterwear\noutfable\noutfabled\noutfables\noutfabling\noutface\noutfaced\noutfaces\noutfacing\noutfall\noutfalls\noutfast\noutfasted\noutfasting\noutfasts\noutfawn\noutfawned\noutfawning\noutfawns\noutfeast\noutfeasted\noutfeasting\noutfeasts\noutfeel\noutfeeling\noutfeels\noutfelt\noutfield\noutfielder\noutfielders\noutfields\noutfight\noutfighting\noutfights\noutfind\noutfinding\noutfinds\noutfire\noutfired\noutfires\noutfiring\noutfit\noutfits\noutfitted\noutfitter\noutfitters\noutfitting\noutflank\noutflanked\noutflanking\noutflanks\noutflew\noutflies\noutflow\noutflowed\noutflowing\noutflown\noutflows\noutfly\noutflying\noutfool\noutfooled\noutfooling\noutfools\noutfoot\noutfooted\noutfooting\noutfoots\noutfought\noutfound\noutfox\noutfoxed\noutfoxes\noutfoxing\noutfrown\noutfrowned\noutfrowning\noutfrowns\noutgain\noutgained\noutgaining\noutgains\noutgas\noutgassed\noutgasses\noutgassing\noutgave\noutgive\noutgiven\noutgives\noutgiving\noutglare\noutglared\noutglares\noutglaring\noutglow\noutglowed\noutglowing\noutglows\noutgnaw\noutgnawed\noutgnawing\noutgnawn\noutgnaws\noutgo\noutgoes\noutgoing\noutgoings\noutgone\noutgrew\noutgrin\noutgrinned\noutgrinning\noutgrins\noutgroup\noutgroups\noutgrow\noutgrowing\noutgrown\noutgrows\noutgrowth\noutgrowths\noutguess\noutguessed\noutguesses\noutguessing\noutguide\noutguided\noutguides\noutguiding\noutgun\noutgunned\noutgunning\noutguns\noutgush\noutgushes\nouthaul\nouthauls\nouthear\noutheard\nouthearing\nouthears\nouthit\nouthits\nouthitting\nouthouse\nouthouses\nouthowl\nouthowled\nouthowling\nouthowls\nouthumor\nouthumored\nouthumoring\nouthumors\nouting\noutings\noutjinx\noutjinxed\noutjinxes\noutjinxing\noutjump\noutjumped\noutjumping\noutjumps\noutjut\noutjuts\noutjutted\noutjutting\noutkeep\noutkeeping\noutkeeps\noutkept\noutkick\noutkicked\noutkicking\noutkicks\noutkiss\noutkissed\noutkisses\noutkissing\noutlaid\noutlain\noutland\noutlander\noutlanders\noutlandish\noutlandishly\noutlandishness\noutlands\noutlast\noutlasted\noutlasting\noutlasts\noutlaugh\noutlaughed\noutlaughing\noutlaughs\noutlaw\noutlawed\noutlawing\noutlawries\noutlawry\noutlaws\noutlay\noutlaying\noutlays\noutleap\noutleaped\noutleaping\noutleaps\noutleapt\noutlearn\noutlearned\noutlearning\noutlearns\noutlearnt\noutlet\noutlets\noutlie\noutlier\noutliers\noutlies\noutline\noutlined\noutlines\noutlining\noutlive\noutlived\noutliver\noutlivers\noutlives\noutliving\noutlook\noutlooks\noutlove\noutloved\noutloves\noutloving\noutlying\noutman\noutmaneuver\noutmaneuvered\noutmaneuvering\noutmaneuvers\noutmanned\noutmanning\noutmans\noutmarch\noutmarched\noutmarches\noutmarching\noutmatch\noutmatched\noutmatches\noutmatching\noutmode\noutmoded\noutmodes\noutmoding\noutmost\noutmove\noutmoved\noutmoves\noutmoving\noutnumber\noutnumbered\noutnumbering\noutnumbers\noutpace\noutpaced\noutpaces\noutpacing\noutpaint\noutpainted\noutpainting\noutpaints\noutpass\noutpassed\noutpasses\noutpassing\noutpatient\noutpatients\noutperform\noutperformed\noutperforming\noutperforms\noutpitied\noutpities\noutpity\noutpitying\noutplan\noutplanned\noutplanning\noutplans\noutplay\noutplayed\noutplaying\noutplays\noutplod\noutplodded\noutplodding\noutplods\noutpoint\noutpointed\noutpointing\noutpoints\noutpoll\noutpolled\noutpolling\noutpolls\noutport\noutports\noutpost\noutposts\noutpour\noutpoured\noutpouring\noutpourings\noutpours\noutpray\noutprayed\noutpraying\noutprays\noutpreen\noutpreened\noutpreening\noutpreens\noutpress\noutpressed\noutpresses\noutpressing\noutprice\noutpriced\noutprices\noutpricing\noutpull\noutpulled\noutpulling\noutpulls\noutpush\noutpushed\noutpushes\noutpushing\noutput\noutputs\noutputted\noutputting\noutquote\noutquoted\noutquotes\noutquoting\noutrace\noutraced\noutraces\noutracing\noutrage\noutraged\noutrageous\noutrageously\noutrageousness\noutrages\noutraging\noutraise\noutraised\noutraises\noutraising\noutran\noutrance\noutrances\noutrang\noutrange\noutranged\noutranges\noutranging\noutrank\noutranked\noutranking\noutranks\noutrave\noutraved\noutraves\noutraving\noutre\noutreach\noutreached\noutreaches\noutreaching\noutread\noutreading\noutreads\noutridden\noutride\noutrider\noutriders\noutrides\noutriding\noutright\noutrightly\noutring\noutringing\noutrings\noutrival\noutrivaled\noutrivaling\noutrivalled\noutrivalling\noutrivals\noutroar\noutroared\noutroaring\noutroars\noutrock\noutrocked\noutrocking\noutrocks\noutrode\noutroll\noutrolled\noutrolling\noutrolls\noutroot\noutrooted\noutrooting\noutroots\noutrun\noutrung\noutrunning\noutruns\noutrush\noutrushes\nouts\noutsail\noutsailed\noutsailing\noutsails\noutsang\noutsat\noutsavor\noutsavored\noutsavoring\noutsavors\noutsaw\noutscold\noutscolded\noutscolding\noutscolds\noutscore\noutscored\noutscores\noutscoring\noutscorn\noutscorned\noutscorning\noutscorns\noutsee\noutseeing\noutseen\noutsees\noutsell\noutselling\noutsells\noutsert\noutserts\noutserve\noutserved\noutserves\noutserving\noutset\noutsets\noutshame\noutshamed\noutshames\noutshaming\noutshine\noutshined\noutshines\noutshining\noutshone\noutshoot\noutshooting\noutshoots\noutshot\noutshout\noutshouted\noutshouting\noutshouts\noutside\noutsider\noutsiders\noutsides\noutsight\noutsights\noutsin\noutsing\noutsinging\noutsings\noutsinned\noutsinning\noutsins\noutsit\noutsits\noutsitting\noutsize\noutsized\noutsizes\noutskirt\noutskirts\noutsleep\noutsleeping\noutsleeps\noutslept\noutsmart\noutsmarted\noutsmarting\noutsmarts\noutsmile\noutsmiled\noutsmiles\noutsmiling\noutsmoke\noutsmoked\noutsmokes\noutsmoking\noutsnore\noutsnored\noutsnores\noutsnoring\noutsoar\noutsoared\noutsoaring\noutsoars\noutsold\noutsole\noutsoles\noutspan\noutspanned\noutspanning\noutspans\noutspeak\noutspeaking\noutspeaks\noutspell\noutspelled\noutspelling\noutspells\noutspelt\noutspend\noutspending\noutspends\noutspent\noutspoke\noutspoken\noutspokenly\noutspokenness\noutspread\noutspreading\noutspreads\noutstand\noutstanding\noutstandingly\noutstands\noutstare\noutstared\noutstares\noutstaring\noutstart\noutstarted\noutstarting\noutstarts\noutstate\noutstated\noutstates\noutstating\noutstation\noutstations\noutstay\noutstayed\noutstaying\noutstays\noutsteer\noutsteered\noutsteering\noutsteers\noutstood\noutstretch\noutstretched\noutstretches\noutstretching\noutstrip\noutstripped\noutstripping\noutstrips\noutstudied\noutstudies\noutstudy\noutstudying\noutstunt\noutstunted\noutstunting\noutstunts\noutsulk\noutsulked\noutsulking\noutsulks\noutsung\noutswam\noutsware\noutswear\noutswearing\noutswears\noutswim\noutswimming\noutswims\noutswore\noutsworn\noutswum\nouttake\nouttakes\nouttalk\nouttalked\nouttalking\nouttalks\nouttask\nouttasked\nouttasking\nouttasks\nouttell\nouttelling\nouttells\noutthank\noutthanked\noutthanking\noutthanks\noutthink\noutthinking\noutthinks\noutthought\noutthrew\noutthrob\noutthrobbed\noutthrobbing\noutthrobs\noutthrow\noutthrowing\noutthrown\noutthrows\nouttold\nouttower\nouttowered\nouttowering\nouttowers\nouttrade\nouttraded\nouttrades\nouttrading\nouttrick\nouttricked\nouttricking\nouttricks\nouttrot\nouttrots\nouttrotted\nouttrotting\nouttrump\nouttrumped\nouttrumping\nouttrumps\noutturn\noutturns\noutvalue\noutvalued\noutvalues\noutvaluing\noutvaunt\noutvaunted\noutvaunting\noutvaunts\noutvoice\noutvoiced\noutvoices\noutvoicing\noutvote\noutvoted\noutvotes\noutvoting\noutwait\noutwaited\noutwaiting\noutwaits\noutwalk\noutwalked\noutwalking\noutwalks\noutwar\noutward\noutwardly\noutwardness\noutwards\noutwarred\noutwarring\noutwars\noutwash\noutwashes\noutwaste\noutwasted\noutwastes\noutwasting\noutwatch\noutwatched\noutwatches\noutwatching\noutwear\noutwearied\noutwearies\noutwearing\noutwears\noutweary\noutwearying\noutweep\noutweeping\noutweeps\noutweigh\noutweighed\noutweighing\noutweighs\noutwent\noutwept\noutwhirl\noutwhirled\noutwhirling\noutwhirls\noutwile\noutwiled\noutwiles\noutwiling\noutwill\noutwilled\noutwilling\noutwills\noutwind\noutwinded\noutwinding\noutwinds\noutwish\noutwished\noutwishes\noutwishing\noutwit\noutwits\noutwitted\noutwitting\noutwore\noutwork\noutworked\noutworking\noutworks\noutworn\noutwrit\noutwrite\noutwrites\noutwriting\noutwritten\noutwrote\noutwrought\noutyell\noutyelled\noutyelling\noutyells\noutyelp\noutyelped\noutyelping\noutyelps\noutyield\noutyielded\noutyielding\noutyields\nouzel\nouzels\nouzo\nouzos\nova\noval\novalities\novality\novally\novalness\novalnesses\novals\novarial\novarian\novaries\novariole\novarioles\novaritides\novaritis\novary\novate\novately\novation\novations\noven\novenbird\novenbirds\novenlike\novenproof\novens\novenware\novenwares\nover\noverable\noverabundance\noverabundant\noverachiever\noverachievers\noveract\noveracted\noveracting\noveractive\noveracts\noverage\noverages\noverall\noveralls\noveranxious\noverapt\noverarch\noverarched\noverarches\noverarching\noverarm\noverate\noverawe\noverawed\noverawes\noverawing\noverbake\noverbaked\noverbakes\noverbaking\noverbalance\noverbalanced\noverbalances\noverbalancing\noverbear\noverbearing\noverbearingly\noverbears\noverbet\noverbets\noverbetted\noverbetting\noverbid\noverbidden\noverbidding\noverbids\noverbig\noverbite\noverbites\noverblew\noverblow\noverblowing\noverblown\noverblows\noverboard\noverbold\noverbook\noverbooked\noverbooking\noverbooks\noverbore\noverborn\noverborne\noverbought\noverbred\noverbusy\noverbuy\noverbuying\noverbuys\novercall\novercalled\novercalling\novercalls\novercame\novercapitalization\novercapitalizations\novercapitalize\novercapitalized\novercapitalizes\novercapitalizing\novercast\novercasting\novercasts\novercharge\novercharged\novercharges\novercharging\novercoat\novercoats\novercold\novercome\novercomer\novercomers\novercomes\novercoming\novercompensate\novercompensated\novercompensates\novercompensating\novercompensation\novercompensations\novercompensatory\noverconfidence\noverconfident\noverconfidently\novercook\novercooked\novercooking\novercooks\novercool\novercooled\novercooling\novercools\novercoy\novercram\novercrammed\novercramming\novercrams\novercrop\novercropped\novercropping\novercrops\novercrowd\novercrowded\novercrowding\novercrowds\noverdare\noverdared\noverdares\noverdaring\noverdear\noverdeck\noverdecked\noverdecking\noverdecks\noverdid\noverdo\noverdoer\noverdoers\noverdoes\noverdoing\noverdone\noverdose\noverdosed\noverdoses\noverdosing\noverdraft\noverdrafts\noverdraw\noverdrawing\noverdrawn\noverdraws\noverdress\noverdressed\noverdresses\noverdressing\noverdrew\noverdrive\noverdry\noverdue\noverdye\noverdyed\noverdyeing\noverdyes\novereasy\novereat\novereate\novereaten\novereating\novereats\novered\noveremphasis\noveremphasize\noveremphasized\noveremphasizes\noveremphasizing\noverestimate\noverestimated\noverestimates\noverestimating\noverestimation\noverestimations\noverexpose\noverexposed\noverexposes\noverexposing\noverexposure\noverexposures\noverextend\noverextended\noverextending\noverextends\noverfar\noverfast\noverfat\noverfear\noverfeared\noverfearing\noverfears\noverfed\noverfeed\noverfeeding\noverfeeds\noverfill\noverfilled\noverfilling\noverfills\noverfish\noverfished\noverfishes\noverfishing\noverflew\noverflies\noverflight\noverflights\noverflow\noverflowed\noverflowing\noverflown\noverflows\noverfly\noverflying\noverfond\noverfoul\noverfree\noverfull\novergarment\novergarments\novergild\novergilded\novergilding\novergilds\novergilt\novergird\novergirded\novergirding\novergirds\novergirt\noverglad\noverglaze\noverglazes\novergoad\novergoaded\novergoading\novergoads\novergrew\novergrow\novergrowing\novergrown\novergrows\novergrowth\noverhand\noverhanded\noverhanding\noverhands\noverhang\noverhanging\noverhangs\noverhard\noverhate\noverhated\noverhates\noverhating\noverhaul\noverhauled\noverhauling\noverhauls\noverhead\noverheads\noverheap\noverheaped\noverheaping\noverheaps\noverhear\noverheard\noverhearing\noverhears\noverheat\noverheated\noverheating\noverheats\noverheld\noverhigh\noverhold\noverholding\noverholds\noverholy\noverhope\noverhoped\noverhopes\noverhoping\noverhot\noverhung\noverhunt\noverhunted\noverhunting\noverhunts\noveridle\noverindulgence\noverindulgences\noverindulgent\noverinflate\noverinflated\noverinflates\noverinflating\novering\noverissue\noverissued\noverissues\noverissuing\noverjoy\noverjoyed\noverjoying\noverjoys\noverjust\noverkeen\noverkill\noverkilled\noverkilling\noverkills\noverkind\noverlade\noverladed\noverladen\noverlades\noverlading\noverlaid\noverlain\noverland\noverlands\noverlap\noverlapped\noverlapping\noverlaps\noverlate\noverlax\noverlay\noverlaying\noverlays\noverleaf\noverleap\noverleaped\noverleaping\noverleaps\noverleapt\noverlet\noverlets\noverletting\noverlewd\noverlie\noverlies\noverlive\noverlived\noverlives\noverliving\noverload\noverloaded\noverloading\noverloads\noverlong\noverlook\noverlooked\noverlooking\noverlooks\noverlord\noverlorded\noverlording\noverlords\noverloud\noverlove\noverloved\noverloves\noverloving\noverly\noverlying\noverman\novermanned\novermanning\novermans\novermany\novermeek\novermelt\novermelted\novermelting\novermelts\novermen\novermild\novermix\novermixed\novermixes\novermixing\novermuch\novermuches\novernear\noverneat\novernew\novernice\novernight\novernights\noverpaid\noverpass\noverpassed\noverpasses\noverpassing\noverpast\noverpay\noverpaying\noverpayment\noverpayments\noverpays\noverpert\noverplay\noverplayed\noverplaying\noverplays\noverplied\noverplies\noverplus\noverpluses\noverply\noverplying\noverpopulated\noverpopulation\noverpower\noverpowered\noverpowering\noverpoweringly\noverpowers\noverprice\noverpriced\noverprices\noverpricing\noverprint\noverprinted\noverprinting\noverprints\noverproduce\noverproduced\noverproduces\noverproducing\noverproduction\noverproductions\noverprotect\noverprotected\noverprotecting\noverprotection\noverprotective\noverprotects\noverran\noverrank\noverrash\noverrate\noverrated\noverrates\noverrating\noverreach\noverreached\noverreaches\noverreaching\noverreact\noverreacted\noverreacting\noverreaction\noverreactions\noverreacts\noverregulate\noverregulated\noverregulates\noverregulating\noverrich\noverridden\noverride\noverrides\noverriding\noverrife\noverripe\noverrode\noverrude\noverruff\noverruffed\noverruffing\noverruffs\noverrule\noverruled\noverrules\noverruling\noverrun\noverrunning\noverruns\novers\noversad\noversale\noversales\noversalt\noversalted\noversalting\noversalts\noversave\noversaved\noversaves\noversaving\noversaw\noversea\noverseas\noversee\noverseed\noverseeded\noverseeding\noverseeds\noverseeing\noverseen\noverseer\noverseers\noversees\noversell\noverselling\noversells\noverset\noversets\noversetting\noversew\noversewed\noversewing\noversewn\noversews\noversexed\novershadow\novershadowed\novershadowing\novershadows\novershoe\novershoes\novershoot\novershooting\novershoots\novershot\novershots\noversick\noverside\noversides\noversight\noversights\noversimplification\noversimplifications\noversimplified\noversimplifies\noversimplify\noversimplifying\noversize\noversized\noversizes\noverslaugh\noverslaughed\noverslaughing\noverslaughs\noversleep\noversleeping\noversleeps\noverslept\noverslip\noverslipped\noverslipping\noverslips\noverslipt\noverslow\noversoak\noversoaked\noversoaking\noversoaks\noversoft\noversold\noversoon\noversoul\noversouls\noverspend\noverspending\noverspends\noverspent\noverspin\noverspins\noverspread\noverspreading\noverspreads\noverstaff\noverstaffed\noverstaffing\noverstaffs\noverstate\noverstated\noverstatement\noverstatements\noverstates\noverstating\noverstay\noverstayed\noverstaying\noverstays\noverstep\noverstepped\noverstepping\noversteps\noverstir\noverstirred\noverstirring\noverstirs\noverstock\noverstocked\noverstocking\noverstocks\noversubscribe\noversubscribed\noversubscribes\noversubscribing\noversubscription\noversubscriptions\noversup\noversupped\noversupping\noversupplied\noversupplies\noversupply\noversupplying\noversups\noversure\novert\novertake\novertaken\novertakes\novertaking\novertame\novertart\novertask\novertasked\novertasking\novertasks\novertax\novertaxed\novertaxes\novertaxing\noverthin\noverthrew\noverthrow\noverthrowing\noverthrown\noverthrows\novertime\novertimed\novertimes\novertiming\novertire\novertired\novertires\novertiring\novertly\novertness\novertoil\novertoiled\novertoiling\novertoils\novertone\novertones\novertook\novertop\novertopped\novertopping\novertops\novertrim\novertrimmed\novertrimming\novertrims\noverture\novertured\novertures\noverturing\noverturn\noverturned\noverturning\noverturns\noverurge\noverurged\noverurges\noverurging\noveruse\noverused\noveruses\noverusing\noverview\noverviews\novervote\novervoted\novervotes\novervoting\noverwarm\noverwarmed\noverwarming\noverwarms\noverwary\noverweak\noverwear\noverwearing\noverwears\noverween\noverweened\noverweening\noverweens\noverweight\noverwet\noverwets\noverwetted\noverwetting\noverwhelm\noverwhelmed\noverwhelming\noverwhelmingly\noverwhelms\noverwide\noverwily\noverwind\noverwinding\noverwinds\noverwise\noverword\noverwords\noverwore\noverwork\noverworked\noverworking\noverworks\noverworn\noverwound\noverwrite\noverwrites\noverwriting\noverwritten\noverwrote\noverwrought\noverzeal\noverzeals\novibos\novicidal\novicide\novicides\noviducal\noviduct\noviductal\noviducts\noviform\novine\novines\novipara\noviparous\noviposit\noviposited\novipositing\novipositor\novipositors\noviposits\novisac\novisacs\novoid\novoidal\novoids\novoli\novolo\novolos\novonic\novular\novulary\novulate\novulated\novulates\novulating\novulation\novulations\novule\novules\novum\now\nowe\nowed\nowes\nowing\nowl\nowlet\nowlets\nowlish\nowlishly\nowlishness\nowllike\nowls\nown\nownable\nowned\nowner\nowners\nownership\nownerships\nowning\nowns\nowse\nowsen\nox\noxalate\noxalated\noxalates\noxalating\noxalic\noxalis\noxalises\noxazine\noxazines\noxblood\noxbloods\noxbow\noxbows\noxcart\noxcarts\noxen\noxes\noxeye\noxeyes\noxford\noxfords\noxheart\noxhearts\noxid\noxidable\noxidant\noxidants\noxidase\noxidases\noxidasic\noxidate\noxidated\noxidates\noxidating\noxidation\noxidations\noxidative\noxide\noxides\noxidic\noxidise\noxidised\noxidiser\noxidisers\noxidises\noxidising\noxidizable\noxidize\noxidized\noxidizer\noxidizers\noxidizes\noxidizing\noxids\noxim\noxime\noximes\noxims\noxlip\noxlips\noxo\noxpecker\noxpeckers\noxtail\noxtails\noxter\noxters\noxtongue\noxtongues\noxy\noxyacetylene\noxyacid\noxyacids\noxygen\noxygenate\noxygenated\noxygenates\noxygenating\noxygenation\noxygenations\noxygenator\noxygenators\noxygenic\noxygenizable\noxygenless\noxygens\noxymora\noxymoron\noxyphil\noxyphile\noxyphiles\noxyphils\noxysalt\noxysalts\noxysome\noxysomes\noxytocic\noxytocics\noxytocin\noxytocins\noxytone\noxytones\noy\noyer\noyers\noyes\noyesses\noyez\noyster\noystered\noysterer\noysterers\noystering\noysters\nozone\nozones\nozonic\nozonide\nozonides\nozonise\nozonised\nozonises\nozonising\nozonize\nozonized\nozonizer\nozonizers\nozonizes\nozonizing\nozonosphere\nozonous\npa\npabular\npabulum\npabulums\npac\npaca\npacas\npace\npaced\npacemaker\npacemakers\npacemaking\npacer\npacers\npaces\npacha\npachadom\npachadoms\npachalic\npachalics\npachas\npachisi\npachisis\npachouli\npachoulis\npachuco\npachucos\npachyderm\npachyderms\npachysandra\npachysandras\npacifiable\npacific\npacifically\npacification\npacifications\npacificator\npacificators\npacified\npacifier\npacifiers\npacifies\npacifism\npacifisms\npacifist\npacifistic\npacifists\npacify\npacifying\npacing\npack\npackable\npackage\npackaged\npackager\npackagers\npackages\npackaging\npacked\npacker\npackers\npacket\npacketed\npacketing\npackets\npacking\npackinghouse\npackinghouses\npackings\npackly\npackman\npackmen\npackness\npacknesses\npacks\npacksack\npacksacks\npacksaddle\npacksaddles\npackthread\npackwax\npackwaxes\npacs\npact\npaction\npactions\npacts\npad\npadauk\npadauks\npadded\npaddies\npadding\npaddings\npaddle\npaddled\npaddler\npaddlers\npaddles\npaddling\npaddlings\npaddock\npaddocked\npaddocking\npaddocks\npaddy\npadi\npadis\npadishah\npadishahs\npadle\npadles\npadlock\npadlocked\npadlocking\npadlocks\npadnag\npadnags\npadouk\npadouks\npadre\npadres\npadri\npadrone\npadrones\npadroni\npads\npadshah\npadshahs\npaduasoy\npaduasoys\npaean\npaeanism\npaeanisms\npaeans\npaella\npaellas\npaeon\npaeons\npagan\npagandom\npagandoms\npaganise\npaganised\npaganises\npaganish\npaganising\npaganism\npaganisms\npaganist\npaganists\npaganize\npaganized\npaganizes\npaganizing\npagans\npage\npageant\npageantries\npageantry\npageants\npageboy\npageboys\npaged\npager\npages\npaginal\npaginate\npaginated\npaginates\npaginating\npagination\npaginations\npaging\npagod\npagoda\npagodas\npagods\npagurian\npagurians\npagurid\npagurids\npah\npahlavi\npahlavis\npaid\npaik\npaiked\npaiking\npaiks\npail\npailful\npailfuls\npails\npailsful\npain\npainch\npainches\npained\npainful\npainfuller\npainfullest\npainfully\npainfulness\npaining\npainkiller\npainkillers\npainkilling\npainless\npainlessly\npainlessness\npains\npainstaking\npainstakingly\npaint\npaintbrush\npaintbrushes\npainted\npainter\npainterliness\npainterly\npainters\npaintier\npaintiest\npainting\npaintings\npaints\npainty\npair\npaired\npairing\npairs\npaisa\npaisan\npaisano\npaisanos\npaisans\npaisas\npaise\npaisley\npaisleys\npajama\npajamas\npal\npalabra\npalabras\npalace\npalaced\npalaces\npaladin\npaladins\npalais\npalatability\npalatable\npalatableness\npalatably\npalatal\npalatalization\npalatalizations\npalatalize\npalatalized\npalatalizes\npalatalizing\npalatally\npalatals\npalate\npalates\npalatial\npalatially\npalatialness\npalatine\npalatines\npalaver\npalavered\npalavering\npalavers\npalazzi\npalazzo\npale\npalea\npaleae\npaleal\npaled\npaleface\npalefaces\npalely\npaleness\npalenesses\npaleographer\npaleographers\npaleographic\npaleographical\npaleographically\npaleography\npaleontologic\npaleontological\npaleontologies\npaleontologist\npaleontologists\npaleontology\npaler\npales\npalest\npalestra\npalestrae\npalestras\npalet\npaletot\npaletots\npalets\npalette\npalettes\npaleways\npalewise\npalfrey\npalfreys\npalier\npaliest\npalikar\npalikars\npalimpsest\npalimpsests\npalindrome\npalindromes\npaling\npalings\npalinode\npalinodes\npalisade\npalisaded\npalisades\npalisading\npalish\npall\npalladia\npalladic\npalladium\npallbearer\npallbearers\npalled\npallet\npallets\npallette\npallettes\npallia\npallial\npalliate\npalliated\npalliates\npalliating\npalliation\npalliations\npalliative\npalliatively\npalliator\npalliators\npallid\npallidly\npallidness\npallier\npalliest\npalling\npallium\npalliums\npallor\npallors\npalls\npally\npalm\npalmar\npalmary\npalmate\npalmated\npalmately\npalmation\npalmations\npalmed\npalmer\npalmers\npalmette\npalmettes\npalmetto\npalmettoes\npalmettos\npalmier\npalmiest\npalming\npalmist\npalmistry\npalmists\npalmitin\npalmitins\npalmlike\npalms\npalmy\npalmyra\npalmyras\npalomino\npalominos\npalooka\npalookas\npalp\npalpabilities\npalpability\npalpable\npalpably\npalpal\npalpate\npalpated\npalpates\npalpating\npalpation\npalpations\npalpator\npalpators\npalpebra\npalpebrae\npalpi\npalpitate\npalpitated\npalpitates\npalpitating\npalpitation\npalpitations\npalps\npalpus\npals\npalsied\npalsies\npalsy\npalsying\npalter\npaltered\npalterer\npalterers\npaltering\npalters\npaltrier\npaltriest\npaltrily\npaltry\npaludal\npaludism\npaludisms\npaly\npam\npampa\npampas\npampean\npampeans\npamper\npampered\npamperer\npamperers\npampering\npampero\npamperos\npampers\npamphlet\npamphleteer\npamphleteered\npamphleteering\npamphleteers\npamphlets\npams\npan\npanacea\npanacean\npanaceas\npanache\npanaches\npanada\npanadas\npanama\npanamas\npanatela\npanatelas\npancake\npancaked\npancakes\npancaking\npanchax\npanchaxes\npanchromatic\npancreas\npancreases\npancreatic\npanda\npandani\npandanus\npandanuses\npandas\npandect\npandects\npandemic\npandemics\npandemonium\npandemoniums\npander\npandered\npanderer\npanderers\npandering\npanders\npandied\npandies\npandit\npandits\npandoor\npandoors\npandora\npandoras\npandore\npandores\npandour\npandours\npandowdies\npandowdy\npandura\npanduras\npandy\npandying\npane\npaned\npanegyric\npanegyrical\npanegyrically\npanegyrics\npanegyrist\npanegyrists\npanel\npaneled\npaneling\npanelings\npanelist\npanelists\npanelled\npanelling\npanels\npanes\npanetela\npanetelas\npanfish\npanfishes\npanful\npanfuls\npang\npanga\npangas\npanged\npangen\npangens\npanging\npangolin\npangolins\npangs\npanhandle\npanhandled\npanhandler\npanhandlers\npanhandles\npanhandling\npanhuman\npanic\npanicked\npanickier\npanickiest\npanicking\npanicky\npanicle\npanicled\npanicles\npanics\npanicum\npanicums\npanier\npaniers\npanjandrum\npanjandrums\npanmixia\npanmixias\npanne\npanned\npannes\npannier\npanniers\npannikin\npannikins\npanning\npanocha\npanochas\npanoche\npanoches\npanoplies\npanoply\npanoptic\npanorama\npanoramas\npanoramic\npanoramical\npanoramically\npanpipe\npanpipes\npans\npansies\npansophies\npansophy\npansy\npant\npantaloon\npantaloons\npanted\npantheism\npantheisms\npantheist\npantheistic\npantheistical\npantheistically\npantheists\npantheon\npantheons\npanther\npanthers\npantie\npanties\npantile\npantiled\npantiles\npanting\npanto\npantofle\npantofles\npantograph\npantographic\npantographs\npantomime\npantomimed\npantomimes\npantomimic\npantomiming\npantomimist\npantomimists\npantoum\npantoums\npantries\npantry\npants\npantsuit\npantsuits\npanty\npanzer\npanzers\npap\npapa\npapacies\npapacy\npapain\npapains\npapal\npapally\npapas\npapaw\npapaws\npapaya\npapayan\npapayas\npaper\npaperback\npaperbacks\npaperboard\npaperbound\npaperboy\npaperboys\npapered\npaperer\npaperers\npaperhanger\npaperhangers\npaperhanging\npapering\npapers\npaperweight\npaperweights\npaperwork\npapery\npaphian\npaphians\npapilla\npapillae\npapillar\npapillary\npapillon\npapillons\npapillose\npapist\npapistic\npapistries\npapistry\npapists\npapoose\npapooses\npappi\npappier\npappies\npappiest\npappoose\npappooses\npappose\npappous\npappus\npappy\npaprica\npapricas\npaprika\npaprikas\npaps\npapula\npapulae\npapular\npapule\npapules\npapulose\npapyral\npapyri\npapyrian\npapyrine\npapyrus\npapyruses\npar\npara\nparable\nparables\nparabola\nparabolas\nparabolic\nparabolically\nparaboloid\nparaboloidal\nparaboloids\nparachor\nparachors\nparachute\nparachuted\nparachutes\nparachuting\nparachutist\nparachutists\nparade\nparaded\nparader\nparaders\nparades\nparadigm\nparadigmatic\nparadigms\nparading\nparadise\nparadises\nparadisiac\nparadisiacal\nparados\nparadoses\nparadox\nparadoxes\nparadoxical\nparadoxically\nparadoxicalness\nparadrop\nparadropped\nparadropping\nparadrops\nparaffin\nparaffined\nparaffinic\nparaffining\nparaffins\nparaform\nparaforms\nparagoge\nparagoges\nparagon\nparagoned\nparagoning\nparagons\nparagraph\nparagrapher\nparagraphers\nparagraphic\nparagraphs\nparajournalism\nparakeet\nparakeets\nparalegal\nparalegals\nparallactic\nparallax\nparallaxes\nparallel\nparalleled\nparalleleling\nparallelelled\nparallelelling\nparallelels\nparallelepiped\nparallelepipeds\nparalleling\nparallelism\nparallelisms\nparallelled\nparallelling\nparallelogram\nparallelograms\nparallels\nparalyse\nparalysed\nparalyses\nparalysing\nparalysis\nparalytic\nparalytically\nparalytics\nparalyze\nparalyzed\nparalyzer\nparalyzers\nparalyzes\nparalyzing\nparalyzingly\nparamagnet\nparamagnetic\nparamagnetism\nparamagnetisms\nparamagnets\nparamecia\nparamecium\nparamedic\nparamedical\nparamedics\nparament\nparamenta\nparaments\nparameter\nparameterization\nparameterize\nparameterized\nparameterizes\nparameterizing\nparameters\nparametric\nparametrically\nparametrization\nparametrize\nparametrized\nparametrizes\nparametrizing\nparamilitary\nparamo\nparamos\nparamount\nparamountcy\nparamour\nparamours\nparang\nparangs\nparanoea\nparanoeas\nparanoia\nparanoiac\nparanoias\nparanoid\nparanoids\nparapet\nparapeted\nparapets\nparaph\nparaphernalia\nparaphrasable\nparaphrase\nparaphrased\nparaphraser\nparaphrasers\nparaphrases\nparaphrasing\nparaphrastic\nparaphrastically\nparaphs\nparaplegia\nparaplegic\nparaplegics\nparaprofessional\nparaprofessionals\nparapsychological\nparapsychologist\nparapsychologists\nparapsychology\nparaquat\nparaquats\nparaquet\nparaquets\nparas\nparasang\nparasangs\nparashah\nparashioth\nparashoth\nparasite\nparasites\nparasitic\nparasitically\nparasitism\nparasitize\nparasitized\nparasitizes\nparasitizing\nparasitological\nparasitologist\nparasitologists\nparasitology\nparasol\nparasols\nparasympathetic\nparasympathetics\nparatroop\nparatrooper\nparatroopers\nparatroops\nparavane\nparavanes\nparboil\nparboiled\nparboiling\nparboils\nparbuckle\nparbuckled\nparbuckles\nparbuckling\nparcel\nparceled\nparceling\nparcelled\nparcelling\nparcels\nparcener\nparceners\nparch\nparched\nparches\nparching\nparchment\nparchments\npard\npardah\npardahs\npardee\npardi\npardie\npardine\npardner\npardners\npardon\npardonable\npardonableness\npardonably\npardoned\npardoner\npardoners\npardoning\npardons\npards\npardy\npare\nparecism\nparecisms\npared\nparegoric\npareira\npareiras\nparenchyma\nparenchymal\nparenchymatous\nparent\nparentage\nparentages\nparental\nparentally\nparented\nparentheses\nparenthesis\nparenthesize\nparenthesized\nparenthesizes\nparenthesizing\nparenthetic\nparenthetical\nparenthetically\nparenthood\nparenthoods\nparenting\nparents\nparer\nparers\npares\npareses\nparesis\nparetic\nparetics\npareu\npareus\npareve\nparfait\nparfaits\nparflesh\nparfleshes\nparfocal\nparge\nparged\nparges\nparget\npargeted\npargeting\npargets\npargetted\npargetting\nparging\npargo\npargos\nparhelia\nparhelic\npariah\npariahs\nparian\nparians\nparies\nparietal\nparietals\nparietes\nparing\nparings\nparis\nparises\nparish\nparishes\nparishioner\nparishioners\nparities\nparity\npark\nparka\nparkas\nparked\nparker\nparkers\nparking\nparkings\nparkland\nparklands\nparklike\nparks\nparkway\nparkways\nparlance\nparlances\nparlando\nparlante\nparlay\nparlayed\nparlaying\nparlays\nparle\nparled\nparles\nparley\nparleyed\nparleyer\nparleyers\nparleying\nparleys\nparliament\nparliamentarian\nparliamentarians\nparliamentary\nparliaments\nparling\nparlor\nparlors\nparlour\nparlours\nparlous\nparochial\nparochialism\nparochialisms\nparochially\nparodic\nparodied\nparodies\nparodist\nparodistic\nparodists\nparodoi\nparodos\nparody\nparodying\nparol\nparole\nparoled\nparolee\nparolees\nparoles\nparoling\nparols\nparonym\nparonyms\nparoquet\nparoquets\nparotic\nparotid\nparotids\nparotoid\nparotoids\nparous\nparoxysm\nparoxysmal\nparoxysms\nparquet\nparqueted\nparqueting\nparquetries\nparquetry\nparquets\nparr\nparral\nparrals\nparred\nparrel\nparrels\nparricidal\nparricide\nparricides\nparridge\nparridges\nparried\nparries\nparring\nparritch\nparritches\nparroket\nparrokets\nparrot\nparroted\nparroter\nparroters\nparroting\nparrots\nparroty\nparrs\nparry\nparrying\npars\nparsable\nparse\nparsec\nparsecs\nparsed\nparser\nparsers\nparses\nparsimonious\nparsimoniously\nparsimony\nparsing\nparsley\nparsleys\nparsnip\nparsnips\nparson\nparsonage\nparsonages\nparsonic\nparsons\npart\npartake\npartaken\npartaker\npartakers\npartakes\npartaking\npartan\npartans\nparted\nparterre\nparterres\nparthenogenetic\nparthenogenetically\npartial\npartialities\npartiality\npartially\npartials\npartible\nparticipant\nparticipants\nparticipate\nparticipated\nparticipates\nparticipating\nparticipation\nparticipations\nparticipative\nparticipator\nparticipators\nparticipatory\nparticipial\nparticipially\nparticiple\nparticiples\nparticle\nparticleboard\nparticles\nparticular\nparticularism\nparticularist\nparticularistic\nparticularists\nparticularities\nparticularity\nparticularization\nparticularizations\nparticularize\nparticularized\nparticularizes\nparticularizing\nparticularly\nparticulars\nparticulate\nparticulates\npartied\nparties\nparting\npartings\npartisan\npartisans\npartisanship\npartita\npartitas\npartite\npartition\npartitioned\npartitioning\npartitionist\npartitionists\npartitions\npartitive\npartitively\npartizan\npartizans\npartlet\npartlets\npartly\npartner\npartnered\npartnering\npartners\npartnership\npartnerships\nparton\npartons\npartook\npartridge\npartridges\nparts\nparturition\nparturitions\npartway\nparty\npartying\nparura\nparuras\nparure\nparures\nparve\nparvenu\nparvenue\nparvenus\nparvis\nparvise\nparvises\nparvolin\nparvolins\npas\npaschal\npaschals\npase\npaseo\npaseos\npases\npash\npasha\npashadom\npashadoms\npashalic\npashalics\npashalik\npashaliks\npashas\npashed\npashes\npashing\npasquil\npasquils\npasquinade\npasquinades\npass\npassable\npassably\npassade\npassades\npassado\npassadoes\npassados\npassage\npassaged\npassages\npassageway\npassageways\npassaging\npassant\npassband\npassbands\npassbook\npassbooks\npasse\npassed\npassee\npassel\npassels\npassenger\npassengers\npasser\npasserby\npassers\npassersby\npasses\npassible\npassim\npassing\npassings\npassion\npassional\npassionate\npassionately\npassionateness\npassionless\npassions\npassive\npassively\npassiveness\npassives\npassivism\npassivist\npassivists\npassivities\npassivity\npasskey\npasskeys\npassless\npassover\npassovers\npassport\npassports\npassus\npassuses\npassword\npasswords\npast\npasta\npastas\npaste\npasteboard\npasteboards\npasted\npastel\npastelist\npastelists\npastellist\npastellists\npastels\npaster\npastern\npasterns\npasters\npastes\npasteurization\npasteurizations\npasteurize\npasteurized\npasteurizer\npasteurizers\npasteurizes\npasteurizing\npasticci\npastiche\npastiches\npastier\npasties\npastiest\npastil\npastille\npastilles\npastils\npastime\npastimes\npastina\npastinas\npastiness\npasting\npastness\npastnesses\npastor\npastoral\npastoralism\npastorally\npastorals\npastorate\npastorates\npastored\npastoring\npastors\npastrami\npastramis\npastries\npastromi\npastromis\npastry\npasts\npasturage\npasturages\npastural\npasture\npastured\npasturer\npasturers\npastures\npasturing\npasty\npat\npataca\npatacas\npatagia\npatagium\npatamar\npatamars\npatch\npatched\npatcher\npatchers\npatches\npatchier\npatchiest\npatchily\npatchiness\npatching\npatchwork\npatchworks\npatchy\npate\npated\npatella\npatellae\npatellar\npatellas\npaten\npatencies\npatency\npatens\npatent\npatentability\npatentable\npatented\npatentee\npatentees\npatenting\npatently\npatentor\npatentors\npatents\npater\npaternal\npaternalism\npaternalist\npaternalistic\npaternalistically\npaternalists\npaternally\npaternities\npaternity\npaternoster\npaternosters\npaters\npates\npath\npathetic\npathetical\npathetically\npathfinder\npathfinders\npathfinding\npathless\npathogen\npathogenesis\npathogenetic\npathogenic\npathogenicity\npathogens\npathological\npathologically\npathologies\npathologist\npathologists\npathology\npathos\npathoses\npaths\npathway\npathways\npatience\npatiences\npatient\npatienter\npatientest\npatiently\npatients\npatin\npatina\npatinae\npatinas\npatine\npatined\npatines\npatining\npatins\npatio\npatios\npatly\npatness\npatnesses\npatois\npatriarch\npatriarchal\npatriarchate\npatriarchates\npatriarchies\npatriarchs\npatriarchy\npatrician\npatricians\npatriciate\npatriciates\npatricidal\npatricide\npatricides\npatrimonial\npatrimonies\npatrimony\npatriot\npatriotic\npatriotically\npatriotism\npatriots\npatrol\npatrolled\npatroller\npatrollers\npatrolling\npatrolman\npatrolmen\npatrols\npatron\npatronage\npatronages\npatronal\npatroness\npatronesses\npatronize\npatronized\npatronizes\npatronizing\npatronizingly\npatronly\npatrons\npatronymic\npatronymics\npatroon\npatroons\npats\npatsies\npatsy\npattamar\npattamars\npatted\npattee\npatten\npattens\npatter\npattered\npatterer\npatterers\npattering\npattern\npatterned\npatterning\npatternings\npatternless\npatterns\npatters\npattie\npatties\npatting\npatty\npattypan\npattypans\npatulent\npatulous\npaty\npaucities\npaucity\npaughty\npauldron\npauldrons\npaulin\npaulins\npaunch\npaunched\npaunches\npaunchier\npaunchiest\npaunchiness\npaunchy\npauper\npaupered\npaupering\npauperism\npauperize\npauperized\npauperizes\npauperizing\npaupers\npausal\npause\npaused\npauser\npausers\npauses\npausing\npavan\npavane\npavanes\npavans\npave\npaved\npavement\npavements\npaver\npavers\npaves\npavid\npavilion\npavilioned\npavilioning\npavilions\npavin\npaving\npavings\npavins\npavior\npaviors\npaviour\npaviours\npavis\npavise\npaviser\npavisers\npavises\npavonine\npaw\npawed\npawer\npawers\npawing\npawkier\npawkiest\npawkily\npawky\npawl\npawls\npawn\npawnable\npawnage\npawnages\npawnbroker\npawnbrokers\npawned\npawnee\npawnees\npawner\npawners\npawning\npawnor\npawnors\npawns\npawnshop\npawnshops\npawpaw\npawpaws\npaws\npax\npaxes\npaxwax\npaxwaxes\npay\npayable\npayably\npaycheck\npaychecks\npayday\npaydays\npayed\npayee\npayees\npayer\npayers\npaying\npayload\npayloads\npaymaster\npaymasters\npayment\npayments\npaynim\npaynims\npayoff\npayoffs\npayola\npayolas\npayor\npayors\npayroll\npayrolls\npays\npe\npea\npeace\npeaceable\npeaceableness\npeaceably\npeaced\npeaceful\npeacefuller\npeacefullest\npeacefully\npeacefulness\npeacekeeper\npeacekeepers\npeacekeeping\npeacemaker\npeacemakers\npeacemaking\npeaces\npeacetime\npeacetimes\npeach\npeached\npeacher\npeachers\npeaches\npeachier\npeachiest\npeaching\npeachy\npeacing\npeacoat\npeacoats\npeacock\npeacocked\npeacockier\npeacockiest\npeacocking\npeacockish\npeacocks\npeacocky\npeafowl\npeafowls\npeag\npeage\npeages\npeags\npeahen\npeahens\npeak\npeaked\npeakedness\npeakier\npeakiest\npeaking\npeakish\npeakless\npeaklike\npeaks\npeaky\npeal\npealed\npealike\npealing\npeals\npean\npeans\npeanut\npeanuts\npear\npearl\npearlash\npearlashes\npearled\npearler\npearlers\npearlier\npearliest\npearling\npearlite\npearlites\npearlized\npearls\npearly\npearmain\npearmains\npears\npeart\npearter\npeartest\npeartly\npeas\npeasant\npeasantry\npeasants\npeascod\npeascods\npease\npeasecod\npeasecods\npeasen\npeases\npeat\npeatier\npeatiest\npeats\npeaty\npeavey\npeaveys\npeavies\npeavy\npebble\npebbled\npebbles\npebblier\npebbliest\npebbling\npebbly\npecan\npecans\npeccable\npeccadillo\npeccadilloes\npeccadillos\npeccancies\npeccancy\npeccant\npeccaries\npeccary\npeccavi\npeccavis\npech\npechan\npechans\npeched\npeching\npechs\npeck\npecked\npecker\npeckers\npeckier\npeckiest\npecking\npecks\npecky\npecs\npectase\npectases\npectate\npectates\npecten\npectens\npectic\npectin\npectinate\npectination\npectinations\npectines\npectins\npectize\npectized\npectizes\npectizing\npectoral\npectorals\npeculate\npeculated\npeculates\npeculating\npeculation\npeculations\npeculator\npeculators\npeculia\npeculiar\npeculiarities\npeculiarity\npeculiarly\npeculiars\npeculium\npecuniarily\npecuniary\nped\npedagog\npedagogical\npedagogically\npedagogics\npedagogies\npedagogs\npedagogue\npedagogues\npedagogy\npedal\npedaled\npedalfer\npedalfers\npedalier\npedaliers\npedaling\npedalled\npedalling\npedals\npedant\npedantic\npedantically\npedantries\npedantry\npedants\npedate\npedately\npeddle\npeddled\npeddler\npeddleries\npeddlers\npeddlery\npeddles\npeddling\npederast\npederasts\npedes\npedestal\npedestaled\npedestaling\npedestalled\npedestalling\npedestals\npedestrian\npedestrianism\npedestrianisms\npedestrians\npediatric\npediatrician\npediatricians\npediatrics\npediatrist\npediatrists\npedicab\npedicabs\npedicel\npedicels\npedicle\npedicled\npedicles\npedicure\npedicured\npedicures\npedicuring\npedicurist\npedicurists\npediform\npedigree\npedigreed\npedigrees\npediment\npedimental\npediments\npedipalp\npedipalps\npedlar\npedlaries\npedlars\npedlary\npedler\npedlers\npedocal\npedocals\npedologies\npedology\npedometer\npedometers\npedro\npedros\npeds\npeduncle\npeduncles\npee\npeebeen\npeebeens\npeed\npeeing\npeek\npeekaboo\npeekaboos\npeeked\npeeking\npeeks\npeel\npeelable\npeeled\npeeler\npeelers\npeeling\npeelings\npeels\npeen\npeened\npeening\npeens\npeep\npeeped\npeeper\npeepers\npeephole\npeepholes\npeeping\npeeps\npeepshow\npeepshows\npeepul\npeepuls\npeer\npeerage\npeerages\npeered\npeeress\npeeresses\npeerie\npeeries\npeering\npeerless\npeers\npeery\npees\npeesweep\npeesweeps\npeetweet\npeetweets\npeeve\npeeved\npeeves\npeeving\npeevish\npeevishly\npeevishness\npeewee\npeewees\npeewit\npeewits\npeg\npegboard\npegboards\npegbox\npegboxes\npegged\npegging\npegless\npeglike\npegmatite\npegs\npeh\npehs\npeignoir\npeignoirs\npein\npeined\npeining\npeins\npeise\npeised\npeises\npeising\npejorative\npejoratively\npekan\npekans\npeke\npekes\npekin\npekins\npekoe\npekoes\npelage\npelages\npelagial\npelagic\npele\npelerine\npelerines\npeles\npelf\npelfs\npelican\npelicans\npelisse\npelisses\npelite\npelites\npelitic\npellagra\npellagras\npellet\npelletal\npelleted\npelleting\npelletize\npelletized\npelletizes\npelletizing\npellets\npellicle\npellicles\npellmell\npellmells\npellucid\npellucidly\npelon\npeloria\npelorian\npelorias\npeloric\npelorus\npeloruses\npelota\npelotas\npelt\npeltast\npeltasts\npeltate\npelted\npelter\npelters\npelting\npeltries\npeltry\npelts\npelves\npelvic\npelvics\npelvis\npelvises\npembina\npembinas\npemican\npemicans\npemmican\npemmicans\npemoline\npemolines\npemphix\npemphixes\npen\npenal\npenalise\npenalised\npenalises\npenalising\npenalities\npenality\npenalization\npenalizations\npenalize\npenalized\npenalizes\npenalizing\npenally\npenalties\npenalty\npenance\npenanced\npenances\npenancing\npenang\npenangs\npenates\npence\npencel\npencels\npenchant\npenchants\npencil\npenciled\npenciler\npencilers\npenciling\npencilled\npenciller\npencillers\npencilling\npencils\npend\npendant\npendants\npended\npendencies\npendency\npendent\npendentive\npendently\npendents\npending\npends\npendular\npendulous\npendulousness\npendulum\npendulums\npenes\npenetrability\npenetrable\npenetrant\npenetrants\npenetrate\npenetrated\npenetrates\npenetrating\npenetratingly\npenetration\npenetrations\npenetrative\npenetrometer\npenetrometers\npengo\npengos\npenguin\npenguins\npenholder\npenholders\npenial\npenicil\npenicillin\npenicillins\npenicils\npenile\npeninsula\npeninsular\npeninsulas\npenis\npenises\npenitence\npenitences\npenitent\npenitential\npenitentially\npenitentiaries\npenitentiary\npenitently\npenitents\npenknife\npenknives\npenlight\npenlights\npenlite\npenlites\npenman\npenmanship\npenmanships\npenmen\npenna\npennae\npenname\npennames\npennant\npennants\npennate\npennated\npenned\npenner\npenners\npenni\npennia\npennies\npenniless\npennine\npennines\npenning\npennis\npennon\npennoned\npennons\npenny\npennyweight\npennyweights\npenoche\npenoches\npenological\npenologies\npenologist\npenologists\npenology\npenoncel\npenoncels\npenpoint\npenpoints\npens\npensee\npensees\npensil\npensile\npensils\npension\npensionable\npensionaries\npensionary\npensione\npensioned\npensioner\npensioners\npensiones\npensioning\npensionless\npensions\npensive\npensively\npensiveness\npenster\npensters\npenstock\npenstocks\npent\npentacle\npentacles\npentad\npentads\npentagon\npentagonal\npentagons\npentagram\npentagrams\npentahedral\npentahedron\npentahedrons\npentameter\npentameters\npentane\npentanes\npentarch\npentarchs\npentathlon\npentathlons\npenthouse\npenthouses\npentomic\npentosan\npentosans\npentose\npentoses\npentyl\npentyls\npenuche\npenuches\npenuchi\npenuchis\npenuchle\npenuchles\npenuckle\npenuckles\npenult\npenults\npenumbra\npenumbrae\npenumbral\npenumbras\npenuries\npenurious\npenuriously\npenuriousness\npenury\npeon\npeonage\npeonages\npeones\npeonies\npeonism\npeonisms\npeons\npeony\npeople\npeopled\npeopler\npeoplers\npeoples\npeopling\npep\npeperoni\npeperonis\npepla\npeplos\npeploses\npeplum\npeplumed\npeplums\npeplus\npepluses\npepo\npeponida\npeponidas\npeponium\npeponiums\npepos\npepped\npepper\npeppercorn\npeppercorns\npeppered\npepperer\npepperers\npeppering\npeppermint\npeppermints\npepperoni\npepperonis\npeppers\npeppery\npeppier\npeppiest\npeppily\npepping\npeppy\npeps\npepsin\npepsine\npepsines\npepsins\npeptic\npeptics\npeptid\npeptide\npeptides\npeptidic\npeptids\npeptize\npeptized\npeptizer\npeptizers\npeptizes\npeptizing\npeptone\npeptones\npeptonic\nper\nperacid\nperacids\nperambulate\nperambulated\nperambulates\nperambulating\nperambulation\nperambulations\nperambulatory\npercale\npercales\nperceivable\nperceivably\nperceive\nperceived\nperceiver\nperceivers\nperceives\nperceiving\npercent\npercentage\npercentages\npercentile\npercentiles\npercents\npercept\nperceptibility\nperceptible\nperceptibly\nperception\nperceptional\nperceptions\nperceptive\nperceptively\nperceptiveness\nperceptivity\npercepts\nperceptual\nperceptually\nperch\nperchance\nperched\npercher\nperchers\nperches\nperching\npercipience\npercipiences\npercipient\npercipients\npercoid\npercoids\npercolate\npercolated\npercolates\npercolating\npercolation\npercolations\npercolator\npercolators\npercuss\npercussed\npercusses\npercussing\npercussion\npercussionist\npercussionists\npercussions\npercussive\npercussively\npercussiveness\nperdie\nperdition\nperdu\nperdue\nperdues\nperdurability\nperdurable\nperdurably\nperdus\nperdy\nperea\nperegrin\nperegrinate\nperegrinated\nperegrinates\nperegrinating\nperegrination\nperegrinations\nperegrins\nperemptorily\nperemptoriness\nperemptory\nperennial\nperennially\nperennials\nperfect\nperfecta\nperfectas\nperfected\nperfecter\nperfecters\nperfectest\nperfectibility\nperfectible\nperfecting\nperfection\nperfectionism\nperfectionist\nperfectionists\nperfections\nperfective\nperfectively\nperfectiveness\nperfectives\nperfectivity\nperfectly\nperfectness\nperfecto\nperfectos\nperfects\nperfidies\nperfidious\nperfidiously\nperfidiousness\nperfidy\nperforate\nperforated\nperforates\nperforating\nperforation\nperforations\nperforator\nperforators\nperforce\nperform\nperformable\nperformance\nperformances\nperformed\nperformer\nperformers\nperforming\nperforms\nperfume\nperfumed\nperfumer\nperfumeries\nperfumers\nperfumery\nperfumes\nperfuming\nperfunctorily\nperfunctoriness\nperfunctory\nperfuse\nperfused\nperfuses\nperfusing\npergola\npergolas\nperhaps\nperhapses\nperi\nperianth\nperianths\nperiapt\nperiapts\nperiblem\nperiblems\npericarp\npericarps\npericopae\npericope\npericopes\nperiderm\nperiderms\nperidia\nperidial\nperidium\nperidot\nperidots\nperigeal\nperigean\nperigee\nperigees\nperigon\nperigons\nperigynies\nperigyny\nperihelion\nperihelions\nperil\nperiled\nperiling\nperilla\nperillas\nperilled\nperilling\nperilous\nperilously\nperilousness\nperils\nperilune\nperilunes\nperimeter\nperimeters\nperinea\nperineal\nperineum\nperiod\nperiodic\nperiodical\nperiodically\nperiodicals\nperiodicity\nperiodid\nperiodids\nperiods\nperiotic\nperipatetic\nperipatetics\nperipeties\nperipety\nperipheral\nperipherally\nperipherals\nperipheries\nperiphery\nperiphrases\nperiphrasis\nperiphrastic\nperiphrastically\nperipter\nperipters\nperique\nperiques\nperis\nperisarc\nperisarcs\nperiscope\nperiscopes\nperiscopic\nperish\nperishability\nperishable\nperishables\nperished\nperishes\nperishing\nperistalses\nperistalsis\nperistaltic\nperistaltically\nperistyle\nperistyles\nperitonea\nperitoneum\nperitoneums\nperitonitis\nperiwig\nperiwigs\nperiwinkle\nperiwinkles\nperjure\nperjured\nperjurer\nperjurers\nperjures\nperjuries\nperjuring\nperjurious\nperjury\nperk\nperked\nperkier\nperkiest\nperkily\nperkiness\nperking\nperkish\nperks\nperky\nperlite\nperlites\nperlitic\nperm\npermafrost\npermafrosts\npermanence\npermanencies\npermanency\npermanent\npermanently\npermanentness\npermanents\npermeability\npermeable\npermease\npermeases\npermeate\npermeated\npermeates\npermeating\npermeation\npermeations\npermeative\npermissibility\npermissible\npermissibleness\npermissibly\npermission\npermissions\npermissive\npermissively\npermissiveness\npermit\npermits\npermitted\npermittee\npermittees\npermitter\npermitters\npermitting\npermittivity\nperms\npermutable\npermutation\npermutational\npermutations\npermute\npermuted\npermutes\npermuting\npernicious\nperniciously\nperniciousness\nperoneal\nperoral\nperorate\nperorated\nperorates\nperorating\nperoration\nperorational\nperorations\nperoxid\nperoxide\nperoxided\nperoxides\nperoxiding\nperoxids\nperpend\nperpended\nperpendicular\nperpendicularity\nperpendicularly\nperpendiculars\nperpending\nperpends\nperpent\nperpents\nperpetrate\nperpetrated\nperpetrates\nperpetrating\nperpetration\nperpetrations\nperpetrator\nperpetrators\nperpetual\nperpetually\nperpetuate\nperpetuated\nperpetuates\nperpetuating\nperpetuation\nperpetuations\nperpetuities\nperpetuity\nperplex\nperplexed\nperplexedly\nperplexes\nperplexing\nperplexities\nperplexity\nperquisite\nperquisites\nperries\nperron\nperrons\nperry\npersalt\npersalts\nperse\npersecute\npersecuted\npersecutes\npersecuting\npersecution\npersecutions\npersecutive\npersecutor\npersecutors\npersecutory\nperses\nperseverance\nperseverances\npersevere\npersevered\nperseveres\npersevering\npersiflage\npersimmon\npersimmons\npersist\npersisted\npersistence\npersistency\npersistent\npersistently\npersisting\npersists\npersnickety\nperson\npersona\npersonable\npersonableness\npersonae\npersonage\npersonages\npersonal\npersonalism\npersonalisms\npersonalist\npersonalistic\npersonalists\npersonalities\npersonality\npersonalization\npersonalizations\npersonalize\npersonalized\npersonalizes\npersonalizing\npersonally\npersonals\npersonalties\npersonalty\npersonas\npersonate\npersonated\npersonates\npersonating\npersonation\npersonations\npersonative\npersonator\npersonators\npersonification\npersonifications\npersonified\npersonifier\npersonifiers\npersonifies\npersonify\npersonifying\npersonnel\npersonnels\npersons\nperspectival\nperspective\nperspectively\nperspectives\nperspicacious\nperspicaciously\nperspicaciousness\nperspicacity\nperspicuities\nperspicuity\nperspicuous\nperspicuously\nperspicuousness\nperspiration\nperspirations\nperspire\nperspired\nperspires\nperspiring\nperspiry\npersuadable\npersuade\npersuaded\npersuades\npersuading\npersuasible\npersuasion\npersuasions\npersuasive\npersuasively\npersuasiveness\npert\npertain\npertained\npertaining\npertains\nperter\npertest\npertinacious\npertinaciously\npertinaciousness\npertinacities\npertinacity\npertinence\npertinencies\npertinency\npertinent\npertinently\npertly\npertness\npertnesses\nperturb\nperturbable\nperturbation\nperturbational\nperturbations\nperturbed\nperturbing\nperturbs\nperuke\nperukes\nperusal\nperusals\nperuse\nperused\nperuser\nperusers\nperuses\nperusing\npervade\npervaded\npervader\npervaders\npervades\npervading\npervasion\npervasions\npervasive\npervasively\npervasiveness\nperverse\nperversely\nperverseness\nperversion\nperversions\nperversities\nperversity\nperversive\npervert\nperverted\npervertedly\npervertedness\nperverting\nperverts\npervious\nperviousness\npes\npesade\npesades\npeseta\npesetas\npesewa\npesewas\npeskier\npeskiest\npeskily\npesky\npeso\npesos\npessaries\npessary\npessimism\npessimisms\npessimist\npessimistic\npessimistically\npessimists\npest\npester\npestered\npesterer\npesterers\npestering\npesters\npesthole\npestholes\npesticide\npesticides\npestiferous\npestiferously\npestiferousness\npestilence\npestilences\npestilent\npestilential\npestilentially\npestilently\npestle\npestled\npestles\npestling\npesto\npests\npet\npetal\npetaled\npetaline\npetalled\npetallike\npetalodies\npetalody\npetaloid\npetalous\npetals\npetard\npetards\npetasos\npetasoses\npetasus\npetasuses\npetcock\npetcocks\npetechia\npetechiae\npeter\npetered\npetering\npeters\npetiolar\npetiole\npetioled\npetioles\npetit\npetite\npetiteness\npetites\npetition\npetitionary\npetitioned\npetitioner\npetitioners\npetitioning\npetitions\npetrel\npetrels\npetrifaction\npetrifactions\npetrification\npetrifications\npetrified\npetrifies\npetrify\npetrifying\npetrochemical\npetrochemicals\npetrodollars\npetrographer\npetrographers\npetrographic\npetrographical\npetrographically\npetrography\npetrol\npetrolatum\npetroleum\npetroleums\npetrolic\npetrologic\npetrological\npetrologically\npetrologist\npetrologists\npetrology\npetrols\npetronel\npetronels\npetrosal\npetrous\npets\npetted\npettedly\npetter\npetters\npetti\npetticoat\npetticoats\npettier\npettiest\npettifog\npettifogged\npettifogger\npettifoggeries\npettifoggers\npettifoggery\npettifogging\npettifogs\npettily\npettiness\npetting\npettish\npettishly\npettishness\npettle\npettled\npettles\npettling\npetto\npetty\npetulance\npetulancies\npetulancy\npetulant\npetulantly\npetunia\npetunias\npetuntse\npetuntses\npetuntze\npetuntzes\npew\npewee\npewees\npewit\npewits\npews\npewter\npewterer\npewterers\npewters\npeyote\npeyotes\npeyotl\npeyotls\npeytral\npeytrals\npeytrel\npeytrels\npfennig\npfennige\npfennigs\npfft\npfui\nphaeton\nphaetons\nphage\nphages\nphalange\nphalanges\nphalanx\nphalanxes\nphalli\nphallic\nphallicism\nphallicisms\nphallism\nphallisms\nphallist\nphallists\nphallus\nphalluses\nphantasied\nphantasies\nphantasm\nphantasmagoria\nphantasmagoric\nphantasmal\nphantasmic\nphantasms\nphantast\nphantasts\nphantasy\nphantasying\nphantom\nphantomlike\nphantoms\npharaoh\npharaohs\npharaonic\npharisaic\npharisaical\npharisaically\npharisee\npharisees\npharmaceutical\npharmaceutically\npharmaceuticals\npharmacies\npharmacist\npharmacists\npharmacological\npharmacologically\npharmacologist\npharmacologists\npharmacology\npharmacy\npharos\npharoses\npharyngeal\npharynges\npharynx\npharynxes\nphase\nphaseal\nphased\nphaseout\nphaseouts\nphases\nphasic\nphasing\nphasis\nphasmid\nphasmids\nphat\nphatic\npheasant\npheasants\nphellem\nphellems\nphelonia\nphenazin\nphenazins\nphenetic\nphenetol\nphenetols\nphenix\nphenixes\nphenol\nphenolate\nphenolated\nphenolates\nphenolic\nphenolics\nphenols\nphenom\nphenomena\nphenomenal\nphenomenalism\nphenomenalist\nphenomenalistic\nphenomenalistically\nphenomenalists\nphenomenally\nphenomenological\nphenomenologically\nphenomenology\nphenomenon\nphenomenons\nphenoms\nphenotype\nphenotypes\nphenotypic\nphenotypically\nphenyl\nphenylic\nphenyls\npheromone\npheromones\nphew\nphi\nphial\nphials\nphilabeg\nphilabegs\nphilander\nphilandered\nphilanderer\nphilanderers\nphilandering\nphilanders\nphilanthropic\nphilanthropically\nphilanthropies\nphilanthropist\nphilanthropists\nphilanthropy\nphilatelic\nphilatelically\nphilatelist\nphilatelists\nphilately\nphilibeg\nphilibegs\nphilistine\nphilistines\nphilodendra\nphilodendron\nphilodendrons\nphilological\nphilologically\nphilologies\nphilologist\nphilologists\nphilology\nphilomel\nphilomels\nphilosopher\nphilosophers\nphilosophic\nphilosophical\nphilosophically\nphilosophies\nphilosophize\nphilosophized\nphilosophizer\nphilosophizers\nphilosophizes\nphilosophizing\nphilosophy\nphilter\nphiltered\nphiltering\nphilters\nphiltre\nphiltred\nphiltres\nphiltring\nphimoses\nphimosis\nphimotic\nphis\nphiz\nphizes\nphlebitis\nphlebotomies\nphlebotomist\nphlebotomists\nphlebotomy\nphlegm\nphlegmatic\nphlegmatically\nphlegmier\nphlegmiest\nphlegms\nphlegmy\nphloem\nphloems\nphlox\nphloxes\nphobia\nphobias\nphobic\nphocine\nphoebe\nphoebes\nphoenix\nphoenixes\nphon\nphonal\nphonate\nphonated\nphonates\nphonating\nphonation\nphonations\nphone\nphoned\nphoneiest\nphoneme\nphonemes\nphonemic\nphonemicist\nphonemicists\nphonemics\nphones\nphonetic\nphonetical\nphonetically\nphonetician\nphoneticians\nphonetics\nphoney\nphoneys\nphonic\nphonics\nphonier\nphonies\nphoniest\nphonily\nphoniness\nphoning\nphono\nphonograph\nphonographer\nphonographers\nphonographic\nphonographically\nphonographs\nphonography\nphonological\nphonologist\nphonologists\nphonology\nphonon\nphonons\nphonos\nphons\nphony\nphooey\nphorate\nphorates\nphosgene\nphosgenes\nphosphate\nphosphates\nphosphatic\nphosphid\nphosphids\nphosphin\nphosphins\nphosphor\nphosphoresce\nphosphoresced\nphosphorescence\nphosphorescences\nphosphorescent\nphosphorescently\nphosphoresces\nphosphorescing\nphosphoric\nphosphorite\nphosphorites\nphosphorous\nphosphors\nphosphorus\nphot\nphotic\nphotics\nphoto\nphotocathode\nphotocathodes\nphotocell\nphotocells\nphotochemical\nphotochemistries\nphotochemistry\nphotocompose\nphotocomposed\nphotocomposer\nphotocomposers\nphotocomposes\nphotocomposing\nphotocomposition\nphotocompositions\nphotoconductive\nphotoconductivities\nphotoconductivity\nphotocopied\nphotocopier\nphotocopiers\nphotocopies\nphotocopy\nphotocopying\nphotoed\nphotoelectric\nphotoelectrically\nphotoengrave\nphotoengraved\nphotoengraver\nphotoengravers\nphotoengraves\nphotoengraving\nphotoengravings\nphotog\nphotogenic\nphotogenically\nphotograph\nphotographed\nphotographer\nphotographers\nphotographic\nphotographically\nphotographing\nphotographs\nphotography\nphotogravure\nphotogravures\nphotogs\nphotoing\nphotojournalism\nphotojournalist\nphotojournalists\nphotolithograph\nphotolithographed\nphotolithographer\nphotolithographers\nphotolithographic\nphotolithographies\nphotolithographing\nphotolithographs\nphotolithography\nphotomap\nphotomapped\nphotomapping\nphotomaps\nphotometer\nphotometers\nphotometric\nphotometrically\nphotometry\nphotomontage\nphotomontages\nphotomural\nphotomurals\nphoton\nphotonic\nphotons\nphotopia\nphotopias\nphotopic\nphotos\nphotosensitive\nphotosensitivities\nphotosensitivity\nphotoset\nphotosets\nphotosetting\nphotostat\nphotostated\nphotostatic\nphotostating\nphotostats\nphotosynthesis\nphotosynthesize\nphotosynthesized\nphotosynthesizes\nphotosynthesizing\nphotosynthetic\nphotosynthetically\nphototropism\nphototropisms\nphototypesetter\nphototypesetters\nphototypesetting\nphots\nphpht\nphrasal\nphrase\nphrased\nphraseological\nphraseologies\nphraseologist\nphraseologists\nphraseology\nphrases\nphrasing\nphrasings\nphratral\nphratric\nphratries\nphratry\nphreatic\nphrenetic\nphrenic\nphrenological\nphrenologist\nphrenologists\nphrenology\nphrensied\nphrensies\nphrensy\nphrensying\npht\nphthalic\nphthalin\nphthalins\nphthises\nphthisic\nphthisics\nphthisis\nphut\nphuts\nphyla\nphylacteries\nphylactery\nphylae\nphylar\nphylaxis\nphylaxises\nphyle\nphyleses\nphylesis\nphylesises\nphyletic\nphylic\nphyllaries\nphyllary\nphyllite\nphyllites\nphyllode\nphyllodes\nphylloid\nphylloids\nphyllome\nphyllomes\nphylon\nphylum\nphyses\nphysic\nphysical\nphysicalism\nphysicalist\nphysicalistic\nphysicalists\nphysicalities\nphysicality\nphysically\nphysicalness\nphysicals\nphysician\nphysicians\nphysicist\nphysicists\nphysicked\nphysicking\nphysics\nphysiognomies\nphysiognomy\nphysiographer\nphysiographers\nphysiography\nphysiologic\nphysiological\nphysiologically\nphysiologist\nphysiologists\nphysiology\nphysiotherapist\nphysiotherapists\nphysiotherapy\nphysique\nphysiques\nphysis\nphytane\nphytanes\nphytoid\nphyton\nphytonic\nphytons\npi\npia\npiacular\npiaffe\npiaffed\npiaffer\npiaffers\npiaffes\npiaffing\npial\npian\npianic\npianism\npianisms\npianissimi\npianissimo\npianissimos\npianist\npianists\npiano\npianoforte\npianofortes\npianos\npians\npias\npiasaba\npiasabas\npiasava\npiasavas\npiassaba\npiassabas\npiassava\npiassavas\npiaster\npiasters\npiastre\npiastres\npiazza\npiazzas\npiazze\npibal\npibroch\npibroches\npibrochs\npic\npica\npicacho\npicachos\npicador\npicadores\npicadors\npical\npicara\npicaras\npicaro\npicaroon\npicarooned\npicarooning\npicaroons\npicaros\npicas\npicayune\npicayunes\npiccalilli\npiccalillis\npiccolo\npiccoloist\npiccoloists\npiccolos\npice\npiceous\npick\npickadil\npickadils\npickax\npickaxe\npickaxed\npickaxes\npickaxing\npicked\npickeer\npickeered\npickeering\npickeers\npicker\npickerel\npickerels\npickers\npicket\npicketed\npicketer\npicketers\npicketing\npickets\npickier\npickiest\npicking\npickings\npickle\npickled\npickles\npickling\npicklock\npicklocks\npickoff\npickoffs\npickpocket\npickpockets\npicks\npickup\npickups\npickwick\npickwicks\npicky\npicloram\npiclorams\npicnic\npicnicked\npicnicker\npicnickers\npicnicking\npicnicky\npicnics\npicofarad\npicofarads\npicogram\npicograms\npicolin\npicoline\npicolines\npicolins\npicosecond\npicoseconds\npicot\npicoted\npicotee\npicotees\npicoting\npicots\npicquet\npicquets\npicrate\npicrated\npicrates\npicric\npicrite\npicrites\npics\npictograph\npictographic\npictographs\npictography\npictorial\npictorially\npictorialness\npictorials\npicture\npictured\npictures\npicturesque\npicturesquely\npicturesqueness\npicturing\npicul\npiculs\npiddle\npiddled\npiddler\npiddlers\npiddles\npiddling\npiddock\npiddocks\npidgin\npidgins\npie\npiebald\npiebalds\npiece\npieced\npiecemeal\npiecer\npiecers\npieces\npiecework\npieceworker\npieceworkers\npiecing\npiecings\npiecrust\npiecrusts\npied\npiedfort\npiedforts\npiedmont\npiedmonts\npiefort\npieforts\npieing\npieplant\npieplants\npier\npierce\npierced\npiercer\npiercers\npierces\npiercing\npiercingly\npierrot\npierrots\npiers\npies\npieta\npietas\npieties\npietism\npietisms\npietist\npietistic\npietistical\npietistically\npietists\npiety\npiezoelectric\npiezoelectrically\npiezoelectricity\npiffle\npiffled\npiffles\npiffling\npig\npigboat\npigboats\npigeon\npigeonhole\npigeonholed\npigeonholes\npigeonholing\npigeons\npigfish\npigfishes\npigged\npiggeries\npiggery\npiggie\npiggies\npiggin\npigging\npiggins\npiggish\npiggishly\npiggishness\npiggy\npiggyback\npiggybacked\npiggybacking\npiggybacks\npigheaded\npigheadedly\npigheadedness\npiglet\npiglets\npigment\npigmentary\npigmentation\npigmentations\npigmented\npigmenting\npigments\npigmies\npigmy\npignora\npignus\npignut\npignuts\npigpen\npigpens\npigs\npigskin\npigskins\npigsney\npigsneys\npigstick\npigsticked\npigsticking\npigsticks\npigsties\npigsty\npigtail\npigtailed\npigtails\npigweed\npigweeds\npiing\npika\npikake\npikakes\npikas\npike\npiked\npikeman\npikemen\npiker\npikers\npikes\npikestaff\npikestaffs\npiking\npilaf\npilaff\npilaffs\npilafs\npilar\npilaster\npilasters\npilau\npilaus\npilaw\npilaws\npilchard\npilchards\npile\npilea\npileate\npileated\npiled\npilei\npileous\npiles\npileum\npileup\npileups\npileus\npilewort\npileworts\npilfer\npilferage\npilfered\npilferer\npilferers\npilfering\npilfers\npilgrim\npilgrimage\npilgrimages\npilgrims\npili\npiliform\npiling\npilings\npilis\npill\npillage\npillaged\npillager\npillagers\npillages\npillaging\npillar\npillared\npillaring\npillars\npillbox\npillboxes\npilled\npilling\npillion\npillions\npilloried\npillories\npillory\npillorying\npillow\npillowcase\npillowcases\npillowed\npillowing\npillows\npillowy\npills\npilose\npilosities\npilosity\npilot\npilotage\npilotages\npiloted\npilothouse\npilothouses\npiloting\npilotings\npilotless\npilots\npilous\npilsener\npilseners\npilsner\npilsners\npilular\npilule\npilules\npilus\npily\npima\npimas\npimento\npimentos\npimiento\npimientos\npimp\npimped\npimpernel\npimpernels\npimping\npimple\npimpled\npimples\npimplier\npimpliest\npimply\npimps\npin\npina\npinafore\npinafores\npinang\npinangs\npinas\npinaster\npinasters\npinata\npinatas\npinball\npinballs\npinbone\npinbones\npincer\npincers\npinch\npinchbeck\npinchbug\npinchbugs\npincheck\npinchecks\npinched\npincher\npinchers\npinches\npinching\npincushion\npincushions\npinder\npinders\npindling\npine\npineal\npineapple\npineapples\npinecone\npinecones\npined\npinelike\npinene\npinenes\npineries\npinery\npines\npinesap\npinesaps\npineta\npinetum\npinewood\npinewoods\npiney\npinfeather\npinfeathers\npinfish\npinfishes\npinfold\npinfolded\npinfolding\npinfolds\nping\npinged\npinger\npingers\npinging\npingo\npingos\npingrass\npingrasses\npings\npinguid\npinhead\npinheaded\npinheadedness\npinheads\npinhole\npinholes\npinier\npiniest\npining\npinion\npinioned\npinioning\npinions\npinite\npinites\npink\npinked\npinker\npinkest\npinkeye\npinkeyes\npinkie\npinkies\npinking\npinkings\npinkish\npinkly\npinkness\npinknesses\npinko\npinkoes\npinkos\npinkroot\npinkroots\npinks\npinky\npinna\npinnace\npinnaces\npinnacle\npinnacled\npinnacles\npinnacling\npinnae\npinnal\npinnas\npinnate\npinnated\npinned\npinner\npinners\npinning\npinniped\npinnipeds\npinnula\npinnulae\npinnular\npinnule\npinnules\npinny\npinochle\npinochles\npinocle\npinocles\npinole\npinoles\npinon\npinones\npinons\npinot\npinpoint\npinpointed\npinpointing\npinpoints\npinprick\npinpricked\npinpricking\npinpricks\npins\npinscher\npinschers\npinstripe\npinstripes\npint\npinta\npintada\npintadas\npintado\npintadoes\npintados\npintail\npintails\npintano\npintanos\npintas\npintle\npintles\npinto\npintoes\npintos\npints\npintsize\npinup\npinups\npinwale\npinwales\npinweed\npinweeds\npinwheel\npinwheels\npinwork\npinworks\npinworm\npinworms\npiny\npinyon\npinyons\npiolet\npiolets\npion\npioneer\npioneered\npioneering\npioneers\npionic\npions\npiosities\npiosity\npious\npiously\npiousness\npip\npipage\npipages\npipal\npipals\npipe\npipeage\npipeages\npiped\npipefish\npipefishes\npipeful\npipefuls\npipeless\npipelike\npipeline\npipelined\npipelines\npipelining\npiper\npiperine\npiperines\npipers\npipes\npipestem\npipestems\npipet\npipets\npipette\npipetted\npipettes\npipetting\npipier\npipiest\npiping\npipingly\npipings\npipit\npipits\npipkin\npipkins\npipped\npippin\npipping\npippins\npips\npipy\npiquancies\npiquancy\npiquant\npiquantly\npiquantness\npique\npiqued\npiques\npiquet\npiquets\npiquing\npiracies\npiracy\npiragua\npiraguas\npirana\npiranas\npiranha\npiranhas\npirarucu\npirarucus\npirate\npirated\npirates\npiratic\npiratical\npiratically\npirating\npiraya\npirayas\npirn\npirns\npirog\npirogen\npiroghi\npirogi\npirogue\npirogues\npirojki\npiroque\npiroques\npiroshki\npirouette\npirouetted\npirouettes\npirouetting\npirozhki\npirozhok\npis\npiscaries\npiscary\npiscator\npiscators\npisciculture\npiscina\npiscinae\npiscinal\npiscinas\npiscine\npisco\npish\npished\npishes\npishing\npisiform\npisiforms\npismire\npismires\npisolite\npisolites\npiss\npissant\npissants\npissed\npisses\npissing\npissoir\npissoirs\npistache\npistaches\npistachio\npistachios\npiste\npistil\npistils\npistol\npistole\npistoled\npistoles\npistoling\npistolled\npistolling\npistols\npiston\npistons\npit\npita\npitapat\npitapats\npitapatted\npitapatting\npitas\npitch\npitchblende\npitched\npitcher\npitchers\npitches\npitchfork\npitchforks\npitchier\npitchiest\npitchily\npitching\npitchman\npitchmen\npitchout\npitchouts\npitchy\npiteous\npiteously\npiteousness\npitfall\npitfalls\npith\npithead\npitheads\npithed\npithier\npithiest\npithily\npithiness\npithing\npithless\npiths\npithy\npitiable\npitiableness\npitiably\npitied\npitier\npitiers\npities\npitiful\npitifuller\npitifullest\npitifully\npitifulness\npitiless\npitilessly\npitilessness\npitman\npitmans\npitmen\npiton\npitons\npits\npitsaw\npitsaws\npittance\npittances\npitted\npitting\npittings\npituitaries\npituitary\npity\npitying\npityingly\npiu\npivot\npivotal\npivotally\npivoted\npivoting\npivots\npix\npixel\npixes\npixie\npixieish\npixies\npixilation\npixilations\npixiness\npixinesses\npixy\npixyish\npizazz\npizazzes\npizza\npizzas\npizzeria\npizzerias\npizzle\npizzles\nplacabilities\nplacability\nplacable\nplacably\nplacard\nplacarded\nplacarding\nplacards\nplacate\nplacated\nplacater\nplacaters\nplacates\nplacating\nplacation\nplacations\nplace\nplacebo\nplaceboes\nplacebos\nplaced\nplaceless\nplacelessly\nplaceman\nplacemen\nplacement\nplacements\nplacenta\nplacentae\nplacental\nplacentas\nplacentation\nplacentations\nplacer\nplacers\nplaces\nplacet\nplacets\nplacid\nplacidity\nplacidly\nplacidness\nplacing\nplack\nplacket\nplackets\nplacks\nplacoid\nplacoids\nplafond\nplafonds\nplagal\nplage\nplages\nplagiaries\nplagiarism\nplagiarisms\nplagiarist\nplagiaristic\nplagiarists\nplagiarize\nplagiarized\nplagiarizer\nplagiarizers\nplagiarizes\nplagiarizing\nplagiary\nplague\nplagued\nplaguer\nplaguers\nplagues\nplaguey\nplaguily\nplaguing\nplaguy\nplaice\nplaices\nplaid\nplaided\nplaids\nplain\nplained\nplainer\nplainest\nplaining\nplainly\nplainness\nplains\nplainsman\nplainsmen\nplainsong\nplainsongs\nplaint\nplaintiff\nplaintiffs\nplaintive\nplaintively\nplaintiveness\nplaints\nplaister\nplaistered\nplaistering\nplaisters\nplait\nplaited\nplaiter\nplaiters\nplaiting\nplaitings\nplaits\nplan\nplanar\nplanaria\nplanarias\nplanarity\nplanate\nplanation\nplanations\nplanch\nplanche\nplanches\nplanchet\nplanchets\nplane\nplaned\nplaner\nplaners\nplanes\nplanet\nplanetaria\nplanetarium\nplanetariums\nplanetary\nplanetesimal\nplanetesimals\nplanetoid\nplanetoidal\nplanetoids\nplanets\nplanform\nplanforms\nplangent\nplaning\nplanish\nplanished\nplanishes\nplanishing\nplank\nplanked\nplanking\nplankings\nplanks\nplankter\nplankters\nplankton\nplanktonic\nplanktons\nplanless\nplanned\nplanner\nplanners\nplanning\nplannings\nplanosol\nplanosols\nplans\nplant\nplantain\nplantains\nplantar\nplantation\nplantations\nplanted\nplanter\nplanters\nplantigrade\nplantigrades\nplanting\nplantings\nplantlike\nplants\nplanula\nplanulae\nplanular\nplaque\nplaques\nplash\nplashed\nplasher\nplashers\nplashes\nplashier\nplashiest\nplashing\nplashy\nplasm\nplasma\nplasmas\nplasmatic\nplasmic\nplasmid\nplasmids\nplasmin\nplasmins\nplasmoid\nplasmoids\nplasmon\nplasmons\nplasms\nplaster\nplasterboard\nplasterboards\nplastered\nplastering\nplasters\nplastery\nplastic\nplastically\nplasticity\nplasticization\nplasticizations\nplasticize\nplasticized\nplasticizer\nplasticizers\nplasticizes\nplasticizing\nplastics\nplastid\nplastids\nplastral\nplastron\nplastrons\nplastrum\nplastrums\nplat\nplatan\nplatane\nplatanes\nplatans\nplate\nplateau\nplateaued\nplateauing\nplateaus\nplateaux\nplated\nplateful\nplatefuls\nplatelet\nplatelets\nplatelike\nplaten\nplatens\nplater\nplaters\nplates\nplatesful\nplatform\nplatforms\nplatier\nplaties\nplatiest\nplatina\nplatinas\nplating\nplatings\nplatinic\nplatinum\nplatinums\nplatitude\nplatitudes\nplatitudinize\nplatitudinized\nplatitudinizing\nplatitudinous\nplatitudinously\nplatonic\nplatonically\nplatoon\nplatooned\nplatooning\nplatoons\nplats\nplatted\nplatter\nplatters\nplatting\nplaty\nplatypi\nplatypus\nplatypuses\nplatys\nplaudit\nplaudits\nplausibilities\nplausibility\nplausible\nplausibleness\nplausibly\nplausive\nplay\nplaya\nplayability\nplayable\nplayact\nplayacted\nplayacting\nplayacts\nplayas\nplayback\nplaybacks\nplaybill\nplaybills\nplaybook\nplaybooks\nplayboy\nplayboys\nplayday\nplaydays\nplaydown\nplaydowns\nplayed\nplayer\nplayers\nplayful\nplayfully\nplayfulness\nplaygirl\nplaygirls\nplaygoer\nplaygoers\nplayground\nplaygrounds\nplayhouse\nplayhouses\nplaying\nplayland\nplaylands\nplayless\nplaylet\nplaylets\nplaylike\nplaymate\nplaymates\nplayoff\nplayoffs\nplaypen\nplaypens\nplayroom\nplayrooms\nplays\nplaysuit\nplaysuits\nplaything\nplaythings\nplaytime\nplaytimes\nplaywear\nplaywears\nplaywright\nplaywrights\nplaza\nplazas\nplea\npleach\npleached\npleaches\npleaching\nplead\npleadable\npleaded\npleader\npleaders\npleading\npleadingly\npleadings\npleads\npleas\npleasance\npleasant\npleasanter\npleasantest\npleasantly\npleasantness\npleasantries\npleasantry\nplease\npleased\npleaser\npleasers\npleases\npleasing\npleasingly\npleasingness\npleasurable\npleasurableness\npleasurably\npleasure\npleasured\npleasureless\npleasures\npleasuring\npleat\npleated\npleater\npleaters\npleating\npleats\npleb\nplebe\nplebeian\nplebeianism\nplebeianly\nplebeians\nplebes\nplebiscite\nplebiscites\nplebs\nplectra\nplectron\nplectrons\nplectrum\nplectrums\npled\npledge\npledged\npledgee\npledgees\npledgeor\npledgeors\npledger\npledgers\npledges\npledget\npledgets\npledging\npledgor\npledgors\npleiad\npleiades\npleiads\nplena\nplenary\nplenipotentiaries\nplenipotentiary\nplenish\nplenished\nplenishes\nplenishing\nplenism\nplenisms\nplenist\nplenists\nplenitude\nplenitudes\nplenteous\nplenteously\nplenteousness\nplenties\nplentiful\nplentifully\nplentifulness\nplenty\nplenum\nplenums\npleonasm\npleonasms\npleonastic\npleonastically\npleopod\npleopods\nplessor\nplessors\nplethora\nplethoras\nplethoric\npleura\npleurae\npleural\npleuras\npleurisies\npleurisy\npleuritic\npleuron\npleuston\npleustons\nplew\nplews\nplexor\nplexors\nplexus\nplexuses\npliabilities\npliability\npliable\npliableness\npliably\npliancies\npliancy\npliant\npliantly\npliantness\nplica\nplicae\nplical\nplicate\nplicated\nplie\nplied\nplier\npliers\nplies\nplight\nplighted\nplighter\nplighters\nplighting\nplights\nplimsol\nplimsole\nplimsoles\nplimsoll\nplimsolls\nplimsols\nplink\nplinked\nplinker\nplinkers\nplinking\nplinks\nplinth\nplinths\npliskie\npliskies\nplisky\nplisse\nplisses\nplod\nplodded\nplodder\nplodders\nplodding\nploddingly\nplods\nploidies\nploidy\nplonk\nplonked\nplonking\nplonks\nplop\nplopped\nplopping\nplops\nplosion\nplosions\nplosive\nplosives\nplot\nplotless\nplotlessness\nplots\nplottage\nplottages\nplotted\nplotter\nplotters\nplottier\nplotties\nplottiest\nplotting\nplotty\nplotz\nplough\nploughed\nplougher\nploughers\nploughing\nploughs\nplover\nplovers\nplow\nplowable\nplowback\nplowbacks\nplowboy\nplowboys\nplowed\nplower\nplowers\nplowhead\nplowheads\nplowing\nplowland\nplowlands\nplowman\nplowmen\nplows\nplowshare\nplowshares\nploy\nployed\nploying\nploys\npluck\nplucked\nplucker\npluckers\npluckier\npluckiest\npluckily\npluckiness\nplucking\nplucks\nplucky\nplug\nplugged\nplugger\npluggers\nplugging\nplugless\nplugs\npluguglies\nplugugly\nplum\nplumage\nplumaged\nplumages\nplumate\nplumb\nplumbago\nplumbagos\nplumbed\nplumber\nplumberies\nplumbers\nplumbery\nplumbic\nplumbing\nplumbings\nplumbism\nplumbisms\nplumbous\nplumbs\nplumbum\nplumbums\nplume\nplumed\nplumelet\nplumelets\nplumes\nplumier\nplumiest\npluming\nplumiped\nplumipeds\nplumlike\nplummet\nplummeted\nplummeting\nplummets\nplummier\nplummiest\nplummy\nplumose\nplump\nplumped\nplumpen\nplumpened\nplumpening\nplumpens\nplumper\nplumpers\nplumpest\nplumping\nplumpish\nplumply\nplumpness\nplumps\nplums\nplumular\nplumule\nplumules\nplumy\nplunder\nplunderage\nplunderages\nplundered\nplunderer\nplunderers\nplundering\nplunderous\nplunders\nplunge\nplunged\nplunger\nplungers\nplunges\nplunging\nplunk\nplunked\nplunker\nplunkers\nplunking\nplunks\npluperfect\nplural\npluralism\npluralist\npluralistic\npluralistically\npluralists\npluralities\nplurality\npluralization\npluralizations\npluralize\npluralized\npluralizes\npluralizing\nplurally\nplurals\nplus\npluses\nplush\nplusher\nplushes\nplushest\nplushier\nplushiest\nplushily\nplushiness\nplushly\nplushness\nplushy\nplussage\nplussages\nplusses\nplutocracies\nplutocracy\nplutocrat\nplutocratic\nplutocratically\nplutocrats\npluton\nplutonic\nplutonium\nplutons\npluvial\npluvials\npluviose\npluvious\nply\nplyer\nplyers\nplying\nplyingly\nplywood\nplywoods\npneuma\npneumas\npneumatic\npneumatically\npneumatics\npneumonia\npoaceous\npoach\npoachards\npoached\npoacher\npoachers\npoaches\npoachier\npoachiest\npoaching\npoachy\npochard\npochards\npock\npocked\npocket\npocketable\npocketbook\npocketbooks\npocketed\npocketer\npocketers\npocketful\npocketfuls\npocketing\npocketknife\npocketknives\npockets\npockier\npockiest\npockily\npocking\npockmark\npockmarked\npockmarking\npockmarks\npocks\npocky\npoco\npocosin\npocosins\npod\npodagra\npodagral\npodagras\npodagric\npodded\npodding\npodesta\npodestas\npodgier\npodgiest\npodgily\npodgy\npodia\npodiatries\npodiatrist\npodiatrists\npodiatry\npodite\npodites\npoditic\npodium\npodiums\npodomere\npodomeres\npods\npodsol\npodsolic\npodsols\npodzol\npodzolic\npodzols\npoechore\npoechores\npoem\npoems\npoesies\npoesy\npoet\npoetess\npoetesses\npoetic\npoetical\npoetically\npoeticize\npoeticized\npoeticizes\npoeticizing\npoetics\npoetise\npoetised\npoetiser\npoetisers\npoetises\npoetising\npoetize\npoetized\npoetizer\npoetizers\npoetizes\npoetizing\npoetless\npoetlike\npoetries\npoetry\npoets\npogey\npogeys\npogies\npogonia\npogonias\npogonip\npogonips\npogrom\npogromed\npogroming\npogroms\npogy\npoh\npoi\npoignancy\npoignant\npoilu\npoilus\npoind\npoinded\npoinding\npoinds\npoinsettia\npoinsettias\npoint\npointe\npointed\npointedly\npointedness\npointer\npointers\npointes\npointier\npointiest\npointing\npointless\npointlessly\npointlessness\npointman\npointmen\npoints\npointy\npois\npoise\npoised\npoiser\npoisers\npoises\npoising\npoison\npoisoned\npoisoner\npoisoners\npoisoning\npoisonings\npoisonous\npoisonously\npoisons\npoitrel\npoitrels\npoke\npoked\npoker\npokeroot\npokeroots\npokers\npokes\npokeweed\npokeweeds\npokey\npokeys\npokier\npokies\npokiest\npokily\npokiness\npokinesses\npoking\npoky\npol\npolar\npolarise\npolarised\npolarises\npolarising\npolarities\npolarity\npolarizable\npolarization\npolarizations\npolarize\npolarized\npolarizes\npolarizing\npolaron\npolarons\npolars\npolder\npolders\npole\npoleax\npoleaxe\npoleaxed\npoleaxes\npoleaxing\npolecat\npolecats\npoled\npoleis\npoleless\npolemic\npolemical\npolemically\npolemicist\npolemicists\npolemics\npolemist\npolemists\npolemize\npolemized\npolemizes\npolemizing\npolenta\npolentas\npoler\npolers\npoles\npolestar\npolestars\npoleward\npoleyn\npoleyns\npolice\npoliced\npoliceman\npolicemen\npolices\npolicewoman\npolicewomen\npolicies\npolicing\npolicy\npolicyholder\npolicyholders\npoling\npolio\npoliomyelitis\npolios\npolis\npolish\npolished\npolisher\npolishers\npolishes\npolishing\npolitburo\npolitburos\npolite\npolitely\npoliteness\npoliter\npolitest\npolitic\npolitical\npolitically\npolitician\npoliticians\npoliticize\npoliticized\npoliticizes\npoliticizing\npolitick\npoliticked\npoliticking\npoliticks\npolitico\npoliticoes\npoliticos\npolitics\npolities\npolity\npolka\npolkaed\npolkaing\npolkas\npoll\npollack\npollacks\npollard\npollarded\npollarding\npollards\npolled\npollee\npollees\npollen\npollened\npollening\npollens\npoller\npollers\npollex\npollical\npollices\npollinate\npollinated\npollinates\npollinating\npollination\npollinations\npollinator\npollinators\npolling\npollinia\npollinic\npollist\npollists\npolliwog\npolliwogs\npollock\npollocks\npolls\npollster\npollsters\npollutant\npollutants\npollute\npolluted\npolluter\npolluters\npollutes\npolluting\npollution\npollutions\npollywog\npollywogs\npolo\npoloist\npoloists\npolonium\npoloniums\npolos\npols\npoltergeist\npoltergeists\npoltroon\npoltroonery\npoltroons\npoly\npolyandrous\npolyandry\npolybrid\npolybrids\npolyclinic\npolyclinics\npolycot\npolycots\npolyene\npolyenes\npolyenic\npolyester\npolyesters\npolyethylene\npolyethylenes\npolygala\npolygalas\npolygamies\npolygamist\npolygamists\npolygamous\npolygamy\npolygene\npolygenes\npolyglot\npolyglots\npolygon\npolygonal\npolygonally\npolygonies\npolygons\npolygony\npolygraph\npolygrapher\npolygraphers\npolygraphic\npolygraphist\npolygraphists\npolygraphs\npolygynies\npolygyny\npolyhedra\npolyhedral\npolyhedron\npolyhedrons\npolymath\npolymaths\npolymer\npolymeric\npolymerization\npolymerizations\npolymerize\npolymerized\npolymerizes\npolymerizing\npolymers\npolynomial\npolynomials\npolynya\npolynyas\npolyp\npolyparies\npolypary\npolyphone\npolyphones\npolyphonic\npolyphonically\npolyphonous\npolyphonously\npolyphony\npolypi\npolypide\npolypides\npolypnea\npolypneas\npolypod\npolypodies\npolypods\npolypody\npolypoid\npolypore\npolypores\npolypous\npolyps\npolypus\npolypuses\npolys\npolysemies\npolysemy\npolysome\npolysomes\npolystyrene\npolystyrenes\npolysyllabic\npolysyllabically\npolysyllable\npolysyllables\npolytechnic\npolytechnics\npolytene\npolytenies\npolyteny\npolytheism\npolytheist\npolytheistic\npolytheistical\npolytheistically\npolytheists\npolytype\npolytypes\npolyunsaturated\npolyuria\npolyurias\npolyuric\npolyvinyl\npolyzoan\npolyzoans\npolyzoic\npom\npomace\npomaceous\npomaces\npomade\npomaded\npomades\npomading\npomander\npomanders\npomatum\npomatums\npome\npomegranate\npomegranates\npomelo\npomelos\npomes\npommee\npommel\npommeled\npommeling\npommelled\npommelling\npommels\npommy\npomologies\npomology\npomp\npompadour\npompadours\npompano\npompanos\npompom\npompoms\npompon\npompons\npomposities\npomposity\npompous\npompously\npomps\npoms\nponce\nponces\nponcho\nponchos\npond\nponder\nponderable\npondered\nponderer\nponderers\npondering\nponderous\nponderously\nponderousness\nponders\nponds\npondweed\npondweeds\npone\nponent\npones\npong\npongee\npongees\npongid\npongids\npongs\nponiard\nponiarded\nponiarding\nponiards\nponied\nponies\npons\npontes\npontifex\npontiff\npontiffs\npontific\npontifical\npontifically\npontificals\npontificate\npontificated\npontificates\npontificating\npontifices\npontil\npontils\npontine\nponton\npontons\npontoon\npontoons\npony\nponying\nponytail\nponytails\npooch\npooches\npood\npoodle\npoodles\npoods\npoof\npoofs\npoofy\npooh\npoohed\npoohing\npoohs\npool\npooled\npoolhall\npoolhalls\npooling\npoolroom\npoolrooms\npools\npoon\npoons\npoop\npooped\npooping\npoops\npoor\npoorer\npoorest\npoorhouse\npoorhouses\npoori\npooris\npoorish\npoorly\npoorness\npoornesses\npoortith\npoortiths\npoove\npop\npopcorn\npopcorns\npope\npopedom\npopedoms\npopeless\npopelike\npoperies\npopery\npopes\npopeyed\npopgun\npopguns\npopinjay\npopinjays\npopish\npopishly\npoplar\npoplars\npoplin\npoplins\npoplitic\npopover\npopovers\npoppa\npoppas\npopped\npopper\npoppers\npoppet\npoppets\npoppied\npoppies\npopping\npopple\npoppled\npopples\npoppling\npoppy\npoppycock\npops\npopsy\npopulace\npopulaces\npopular\npopularity\npopularization\npopularizations\npopularize\npopularized\npopularizer\npopularizers\npopularizes\npopularizing\npopularly\npopulate\npopulated\npopulates\npopulating\npopulation\npopulational\npopulations\npopulism\npopulisms\npopulist\npopulists\npopulous\npopulously\npopulousness\nporcelain\nporcelainize\nporcelainized\nporcelainizes\nporcelainizing\nporcelains\nporch\nporches\nporcine\nporcupine\nporcupines\npore\npored\npores\nporgies\nporgy\nporing\nporism\nporisms\npork\nporker\nporkers\nporkier\nporkies\nporkiest\nporkpie\nporkpies\nporks\nporkwood\nporkwoods\nporky\nporn\nporno\npornographer\npornographers\npornographic\npornographically\npornography\npornos\nporns\nporny\nporose\nporosities\nporosity\nporous\nporously\nporphyries\nporphyry\nporpoise\nporpoises\nporrect\nporridge\nporridges\nporringer\nporringers\nport\nportability\nportable\nportables\nportably\nportage\nportaged\nportages\nportaging\nportal\nportaled\nportals\nportance\nportances\nportcullis\nportcullises\nported\nportend\nportended\nportending\nportends\nportent\nportentous\nportentously\nportentousness\nportents\nporter\nporterhouse\nporterhouses\nporters\nportfolio\nportfolios\nporthole\nportholes\nportico\nporticoes\nporticos\nportiere\nportieres\nporting\nportion\nportioned\nportioning\nportionless\nportions\nportless\nportlier\nportliest\nportly\nportmanteau\nportmanteaus\nportmanteaux\nportrait\nportraitist\nportraitists\nportraits\nportraiture\nportraitures\nportray\nportrayal\nportrayals\nportrayed\nportrayer\nportrayers\nportraying\nportrays\nportress\nportresses\nports\nposada\nposadas\npose\nposed\nposer\nposers\nposes\nposeur\nposeurs\nposh\nposher\nposhest\nposies\nposing\nposingly\nposit\nposited\npositing\nposition\npositional\npositionally\npositioned\npositioning\npositions\npositive\npositively\npositiveness\npositiver\npositives\npositivest\npositivism\npositivist\npositivistic\npositivists\npositivity\npositron\npositrons\nposits\nposologies\nposology\nposse\nposses\npossess\npossessed\npossessedly\npossesses\npossessing\npossession\npossessions\npossessive\npossessively\npossessiveness\npossessives\npossessor\npossessors\npossessory\nposset\npossets\npossibilities\npossibility\npossible\npossibler\npossiblest\npossibly\npossum\npossums\npost\npostage\npostages\npostal\npostally\npostals\npostanal\npostbag\npostbags\npostbox\npostboxes\npostboy\npostboys\npostcard\npostcards\npostcava\npostcavae\npostdate\npostdated\npostdates\npostdating\nposted\nposteen\nposteens\nposter\nposterior\nposteriori\nposteriority\nposteriorly\nposteriors\nposterity\npostern\nposterns\nposters\npostface\npostfaces\npostfix\npostfixed\npostfixes\npostfixing\npostflight\npostform\npostformed\npostforming\npostforms\npostgraduate\npostgraduates\nposthaste\nposthole\npostholes\nposthumous\nposthumously\nposthumousness\nposthypnotic\npostiche\npostiches\npostin\nposting\npostings\npostins\npostique\npostiques\npostlude\npostludes\npostman\npostmark\npostmarked\npostmarking\npostmarks\npostmaster\npostmasters\npostmen\npostmistress\npostmistresses\npostmortem\npostmortems\npostnatal\npostnatally\npostoperative\npostoperatively\npostoral\npostpaid\npostpartum\npostponable\npostpone\npostponed\npostponement\npostponements\npostponer\npostponers\npostpones\npostponing\nposts\npostscript\npostscripts\npostsurgical\npostulant\npostulants\npostulate\npostulated\npostulates\npostulating\npostulation\npostulational\npostulations\npostulator\npostulators\npostural\nposture\npostured\nposturer\nposturers\npostures\nposturing\npostwar\nposy\npot\npotability\npotable\npotableness\npotables\npotage\npotages\npotamic\npotash\npotashes\npotassic\npotassium\npotation\npotations\npotato\npotatoes\npotatory\npotbellied\npotbellies\npotbelly\npotboil\npotboiled\npotboiler\npotboilers\npotboiling\npotboils\npotboy\npotboys\npoteen\npoteens\npotence\npotences\npotencies\npotency\npotent\npotentate\npotentates\npotential\npotentialities\npotentiality\npotentially\npotentials\npotentiate\npotentiated\npotentiates\npotentiating\npotentiation\npotentiations\npotentiator\npotentiators\npotentiometer\npotentiometers\npotently\npotful\npotfuls\npothead\npotheads\npotheen\npotheens\npother\npotherb\npotherbs\npothered\npothering\npothers\npothole\npotholed\npotholes\npothook\npothooks\npothouse\npothouses\npotiche\npotiches\npotion\npotions\npotlach\npotlache\npotlaches\npotlatch\npotlatched\npotlatches\npotlatching\npotlike\npotluck\npotlucks\npotman\npotmen\npotpie\npotpies\npotpourri\npotpourris\npots\npotshard\npotshards\npotsherd\npotsherds\npotshot\npotshots\npotshotting\npotsie\npotsies\npotstone\npotstones\npotsy\npottage\npottages\npotted\npotteen\npotteens\npotter\npottered\npotterer\npotterers\npotteries\npottering\npotters\npottery\npottier\npotties\npottiest\npotting\npottle\npottles\npotto\npottos\npotty\npouch\npouched\npouches\npouchier\npouchiest\npouching\npouchy\npouf\npoufed\npouff\npouffe\npouffed\npouffes\npouffs\npoufs\npoulard\npoularde\npoulardes\npoulards\npoult\npoultice\npoulticed\npoultices\npoulticing\npoultries\npoultry\npoults\npounce\npounced\npouncer\npouncers\npounces\npouncing\npound\npoundage\npoundages\npoundal\npoundals\npounded\npounder\npounders\npounding\npounds\npour\npourable\npoured\npourer\npourers\npouring\npouringly\npours\npoussie\npoussies\npout\npouted\npouter\npouters\npoutful\npoutier\npoutiest\npouting\npouts\npouty\npoverties\npoverty\npow\npowder\npowdered\npowderer\npowderers\npowdering\npowders\npowdery\npower\npowered\npowerful\npowerfully\npowerhouse\npowerhouses\npowering\npowerless\npowerlessly\npowerlessness\npowers\npows\npowter\npowters\npowwow\npowwowed\npowwowing\npowwows\npox\npoxed\npoxes\npoxing\npoxvirus\npoxviruses\npoyou\npoyous\npozzolan\npozzolans\npraam\npraams\npractic\npracticability\npracticable\npracticableness\npracticably\npractical\npracticality\npractically\npracticalness\npractice\npracticed\npracticer\npracticers\npractices\npracticing\npractise\npractised\npractises\npractising\npractitioner\npractitioners\npraecipe\npraecipes\npraedial\npraefect\npraefects\npraelect\npraelected\npraelecting\npraelects\npraetor\npraetors\npragmatic\npragmatically\npragmaticism\npragmatics\npragmatism\npragmatist\npragmatistic\npragmatists\nprahu\nprahus\nprairie\nprairies\npraise\npraised\npraiser\npraisers\npraises\npraiseworthiness\npraiseworthy\npraising\npraline\npralines\npram\nprams\nprance\npranced\nprancer\nprancers\nprances\nprancing\nprandial\nprang\npranged\npranging\nprangs\nprank\npranked\npranking\nprankish\nprankishly\nprankishness\npranks\nprankster\npranksters\nprao\npraos\nprase\nprases\nprat\nprate\nprated\nprater\npraters\nprates\npratfall\npratfalls\nprating\npratingly\npratique\npratiques\nprats\nprattle\nprattled\nprattler\nprattlers\nprattles\nprattling\nprattlingly\nprau\npraus\nprawn\nprawned\nprawner\nprawners\nprawning\nprawns\npraxes\npraxis\npraxises\npray\nprayed\nprayer\nprayerful\nprayerfully\nprayerfulness\nprayers\npraying\nprays\npreach\npreached\npreacher\npreachers\npreaches\npreachier\npreachiest\npreachified\npreachifies\npreachify\npreachifying\npreaching\npreachingly\npreachment\npreachments\npreachy\npreact\npreacted\npreacting\npreacts\npreadapt\npreadapted\npreadapting\npreadapts\npreadmit\npreadmits\npreadmitted\npreadmitting\npreadolescence\npreadolescent\npreadolescents\npreadopt\npreadopted\npreadopting\npreadopts\npreadult\npreadults\npreaged\npreallot\npreallots\npreallotted\npreallotting\npreamble\npreambled\npreambles\npreamp\npreamps\npreanal\nprearm\nprearmed\nprearming\nprearms\nprearrange\nprearranged\nprearrangement\nprearrangements\nprearranger\nprearrangers\nprearranges\nprearranging\npreassign\npreassigned\npreassigning\npreassigns\npreaver\npreaverred\npreaverring\npreavers\npreaxial\nprebasal\nprebend\nprebendal\nprebendaries\nprebendary\nprebends\nprebill\nprebilled\nprebilling\nprebills\nprebind\nprebinding\nprebinds\nprebless\npreblessed\npreblesses\npreblessing\npreboil\npreboiled\npreboiling\npreboils\nprebound\nprecancel\nprecanceled\nprecanceling\nprecancellation\nprecancellations\nprecancels\nprecarious\nprecariously\nprecariousness\nprecast\nprecasting\nprecasts\nprecaution\nprecautionary\nprecautions\nprecava\nprecavae\nprecaval\nprecede\npreceded\nprecedence\nprecedences\nprecedency\nprecedent\nprecedents\nprecedes\npreceding\nprecent\nprecented\nprecenting\nprecents\nprecept\npreceptive\npreceptor\npreceptorial\npreceptors\nprecepts\nprecess\nprecessed\nprecesses\nprecessing\nprecession\nprecessional\nprecessions\nprecheck\nprechecked\nprechecking\nprechecks\nprechill\nprechilled\nprechilling\nprechills\nprecieux\nprecinct\nprecincts\npreciosities\npreciosity\nprecious\npreciouses\npreciously\npreciousness\nprecipe\nprecipes\nprecipice\nprecipiced\nprecipices\nprecipitance\nprecipitancy\nprecipitant\nprecipitantly\nprecipitants\nprecipitate\nprecipitated\nprecipitately\nprecipitateness\nprecipitates\nprecipitating\nprecipitation\nprecipitations\nprecipitative\nprecipitator\nprecipitators\nprecipitous\nprecipitously\nprecipitousness\nprecis\nprecise\nprecised\nprecisely\npreciseness\npreciser\nprecises\nprecisest\nprecising\nprecision\nprecisionist\nprecisionists\nprecisions\nprecited\npreclean\nprecleaned\nprecleaning\nprecleans\npreclude\nprecluded\nprecludes\nprecluding\npreclusion\npreclusions\npreclusive\npreclusively\nprecocious\nprecociously\nprecociousness\nprecocity\nprecognition\nprecognitions\nprecognitive\npreconceive\npreconceived\npreconceives\npreconceiving\npreconception\npreconceptions\nprecondition\npreconditioned\npreconditioning\npreconditions\npreconscious\npreconsciouses\npreconsciously\nprecook\nprecooked\nprecooking\nprecooks\nprecool\nprecooled\nprecooling\nprecools\nprecure\nprecured\nprecures\nprecuring\nprecursor\nprecursors\nprecursory\npredaceous\npredaceousness\npredacious\npredaciousness\npredacity\npredate\npredated\npredates\npredating\npredation\npredations\npredator\npredators\npredatory\npredawn\npredawns\npredecease\npredeceased\npredeceases\npredeceasing\npredecessor\npredecessors\npredefined\npredestinarian\npredestinarianism\npredestinarians\npredestinate\npredestinated\npredestinates\npredestinating\npredestination\npredestinations\npredestine\npredestined\npredestines\npredestining\npredetermination\npredeterminations\npredetermine\npredetermined\npredetermines\npredetermining\npredial\npredicable\npredicament\npredicaments\npredicate\npredicated\npredicates\npredicating\npredication\npredications\npredicator\npredicators\npredicatory\npredict\npredictability\npredictable\npredictably\npredicted\npredicting\nprediction\npredictions\npredictive\npredictively\npredictor\npredictors\npredicts\npredigest\npredigested\npredigesting\npredigestion\npredigestions\npredigests\npredilection\npredilections\npredispose\npredisposed\npredisposes\npredisposing\npredisposition\npredispositions\npredominance\npredominances\npredominancy\npredominant\npredominantly\npredominate\npredominated\npredominately\npredominates\npredominating\npredomination\npredominations\npredusk\npredusks\npree\npreed\npreeing\npreelect\npreelected\npreelecting\npreelects\npreemie\npreemies\npreeminence\npreeminent\npreeminently\npreempt\npreempted\npreempting\npreemption\npreemptions\npreemptive\npreemptively\npreempts\npreen\npreenact\npreenacted\npreenactg\npreenacting\npreenacts\npreened\npreener\npreeners\npreening\npreens\nprees\npreestablish\npreestablished\npreestablishes\npreestablishing\npreexist\npreexisted\npreexistence\npreexistences\npreexistent\npreexisting\npreexists\nprefab\nprefabbed\nprefabbing\nprefabricate\nprefabricated\nprefabricates\nprefabricating\nprefabrication\nprefabrications\nprefabs\npreface\nprefaced\nprefacer\nprefacers\nprefaces\nprefacing\nprefatory\nprefect\nprefects\nprefectural\nprefecture\nprefectures\nprefer\npreferability\npreferable\npreferably\npreference\npreferences\npreferential\npreferentially\npreferment\npreferments\npreferred\npreferring\nprefers\nprefiguration\nprefigurations\nprefigurative\nprefiguratively\nprefigurativeness\nprefigure\nprefigured\nprefigurement\nprefigurements\nprefigures\nprefiguring\nprefix\nprefixal\nprefixed\nprefixes\nprefixing\npreflight\nprefocus\nprefocused\nprefocuses\nprefocusing\nprefocussed\nprefocusses\nprefocussing\npreform\npreformation\npreformations\npreformed\npreforming\npreforms\nprefrank\nprefranked\nprefranking\nprefranks\npregame\npregnability\npregnable\npregnancies\npregnancy\npregnant\npregnantly\npreheat\npreheated\npreheating\npreheats\nprehensile\nprehensility\nprehension\nprehensions\nprehistorian\nprehistorians\nprehistoric\nprehistorically\nprehistories\nprehistory\nprehuman\nprehumans\nprejudge\nprejudged\nprejudges\nprejudging\nprejudgment\nprejudgments\nprejudice\nprejudiced\nprejudices\nprejudicial\nprejudicially\nprejudicialness\nprejudicing\nprelacies\nprelacy\nprelate\nprelates\nprelatic\nprelaunch\nprelect\nprelected\nprelecting\nprelects\nprelegal\nprelim\npreliminaries\npreliminarily\npreliminary\nprelimit\nprelimited\nprelimiting\nprelimits\nprelims\nprelude\npreluded\npreluder\npreluders\npreludes\npreluding\nprelusion\nprelusions\nprelusive\nprelusively\npreman\npremarital\npremature\nprematurely\nprematureness\nprematurity\npremed\npremedic\npremedical\npremedics\npremeditate\npremeditated\npremeditatedly\npremeditates\npremeditating\npremeditation\npremeditations\npremeditative\npremeds\npremen\npremenstrual\npremie\npremier\npremiere\npremiered\npremieres\npremiering\npremiers\npremies\npremise\npremised\npremises\npremising\npremiss\npremisses\npremium\npremiums\npremix\npremixed\npremixes\npremixing\npremolar\npremolars\npremonition\npremonitions\npremonitory\npremorse\npremune\nprename\nprenames\nprenatal\nprenatally\nprenomen\nprenomens\nprenomina\nprentice\nprenticed\nprentices\nprenticing\npreoccupancy\npreoccupation\npreoccupations\npreoccupied\npreoccupies\npreoccupy\npreoccupying\npreordain\npreordained\npreordaining\npreordains\npreordination\npreordinations\nprep\nprepack\nprepackage\nprepackaged\nprepackages\nprepackaging\nprepacked\nprepacking\nprepacks\nprepaid\npreparation\npreparations\npreparative\npreparatively\npreparatorily\npreparatory\nprepare\nprepared\npreparedly\npreparedness\npreparer\npreparers\nprepares\npreparing\nprepay\nprepaying\nprepayment\nprepayments\nprepays\nprepense\npreplace\npreplaced\npreplaces\npreplacing\npreplan\npreplanned\npreplanning\npreplans\npreplant\npreponderance\npreponderances\npreponderancy\npreponderant\npreponderantly\npreponderate\npreponderated\npreponderates\npreponderating\npreponderation\npreponderations\npreposition\nprepositional\nprepositionally\nprepositions\nprepossess\nprepossessed\nprepossesses\nprepossessing\nprepossession\nprepossessions\npreposterous\npreposterously\npreposterousness\nprepped\npreppie\npreppies\nprepping\npreprint\npreprinted\npreprinting\npreprints\npreprocess\npreprocessed\npreprocesses\npreprocessing\npreprocessor\npreprocessors\npreprogram\npreprogramming\npreps\nprepuce\nprepuces\nprepunch\nprepunched\nprepunches\nprepunching\nprerecord\nprerecorded\nprerecording\nprerecords\npreregister\npreregistered\npreregistering\npreregisters\npreregistration\npreregistrations\nprerenal\nprerequisite\nprerequisites\nprerogative\nprerogatives\npresa\npresage\npresaged\npresager\npresagers\npresages\npresaging\npresbyter\npresbyterial\npresbyters\npreschool\npreschools\nprescience\nprescient\npresciently\nprescind\nprescinded\nprescinding\nprescinds\nprescore\nprescored\nprescores\nprescoring\nprescribe\nprescribed\nprescriber\nprescribers\nprescribes\nprescribing\nprescript\nprescription\nprescriptions\nprescriptive\nprescriptively\nprescripts\nprese\npreseason\npresell\npreselling\npresells\npresence\npresences\npresent\npresentability\npresentable\npresentableness\npresentably\npresentation\npresentational\npresentations\npresentative\npresented\npresentee\npresentees\npresenter\npresenters\npresentiment\npresentimental\npresentiments\npresenting\npresently\npresentment\npresentments\npresentness\npresents\npreservability\npreservable\npreservation\npreservationist\npreservationists\npreservations\npreservative\npreservatives\npreserve\npreserved\npreserver\npreservers\npreserves\npreserving\npreset\npresets\npresetting\npreshape\npreshaped\npreshapes\npreshaping\npreshow\npreshowed\npreshowing\npreshown\npreshows\npreshrunk\npreside\npresided\npresidencies\npresidency\npresident\npresidential\npresidentially\npresidents\npresider\npresiders\npresides\npresidia\npresiding\npresidio\npresidios\npresidium\npresidiums\npresift\npresifted\npresifting\npresifts\npresignified\npresignifies\npresignify\npresignifying\npresoak\npresoaked\npresoaking\npresoaks\npresold\npress\npressed\npresser\npressers\npresses\npressing\npressingly\npressman\npressmen\npressor\npressrun\npressruns\npressure\npressured\npressureless\npressures\npressuring\npressurization\npressurizations\npressurize\npressurized\npressurizer\npressurizers\npressurizes\npressurizing\npresswork\npressworks\nprest\nprestamp\nprestamped\nprestamping\nprestamps\nprester\npresters\nprestidigitation\nprestidigitations\nprestidigitator\nprestidigitators\nprestige\nprestiges\nprestigious\nprestigiously\nprestigiousness\npresto\nprestos\nprestress\nprestressed\nprestresses\nprestressing\nprests\npresumable\npresumably\npresume\npresumed\npresumedly\npresumer\npresumers\npresumes\npresuming\npresumingly\npresumption\npresumptions\npresumptive\npresumptively\npresumptuous\npresumptuously\npresumptuousness\npresuppose\npresupposed\npresupposes\npresupposing\npresupposition\npresuppositions\npretaste\npretasted\npretastes\npretasting\npretax\npreteen\npreteens\npretence\npretences\npretend\npretended\npretendedly\npretender\npretenders\npretending\npretends\npretense\npretenses\npretension\npretensions\npretentious\npretentiously\npretentiousness\npreterit\npreterite\npreterites\npreterits\npreternatural\npreternaturally\npreternaturalness\npretest\npretested\npretesting\npretests\npretext\npretexted\npretexting\npretexts\npretor\npretors\npretreat\npretreated\npretreating\npretreats\nprettied\nprettier\npretties\nprettiest\nprettified\nprettifies\nprettify\nprettifying\nprettily\nprettiness\npretty\nprettying\nprettyish\npretzel\npretzels\npreunion\npreunions\npreunite\npreunited\npreunites\npreuniting\nprevail\nprevailed\nprevailing\nprevailingly\nprevails\nprevalence\nprevalent\nprevalently\nprevaricate\nprevaricated\nprevaricates\nprevaricating\nprevarication\nprevarications\nprevaricator\nprevaricators\nprevenient\npreveniently\nprevent\npreventability\npreventable\npreventative\nprevented\npreventing\nprevention\npreventions\npreventive\npreventively\npreventiveness\nprevents\npreview\npreviewed\npreviewing\npreviews\nprevious\npreviously\nprevise\nprevised\nprevises\nprevising\nprevision\nprevisional\nprevisions\nprevisor\nprevisors\nprevue\nprevued\nprevues\nprevuing\nprewar\nprewarm\nprewarmed\nprewarming\nprewarms\nprewarn\nprewarned\nprewarning\nprewarns\nprewash\nprewashed\nprewashes\nprewashing\nprewrap\nprewrapped\nprewrapping\nprewraps\nprex\nprexes\nprexies\nprexy\nprey\npreyed\npreyer\npreyers\npreying\npreys\nprez\npriapean\npriapi\npriapic\npriapism\npriapisms\npriapus\npriapuses\nprice\npriced\npriceless\npricer\npricers\nprices\npricey\npricier\npriciest\npricing\nprick\npricked\npricker\nprickers\npricket\nprickets\nprickier\nprickiest\npricking\nprickle\nprickled\nprickles\npricklier\nprickliest\nprickling\nprickly\npricks\npricky\npricy\npride\nprided\nprideful\npridefully\npridefulness\nprides\npriding\npried\npriedieu\npriedieus\npriedieux\nprier\npriers\npries\npriest\npriested\npriestess\npriestesses\npriesthood\npriesthoods\npriesting\npriestlier\npriestliest\npriestliness\npriestly\npriests\nprig\nprigged\npriggeries\npriggery\nprigging\npriggish\npriggishly\npriggishness\npriggism\npriggisms\nprigs\nprill\nprilled\nprilling\nprills\nprim\nprima\nprimacies\nprimacy\nprimage\nprimages\nprimal\nprimaries\nprimarily\nprimary\nprimas\nprimatal\nprimate\nprimates\nprime\nprimed\nprimely\nprimeness\nprimer\nprimero\nprimeros\nprimers\nprimes\nprimeval\nprimevally\nprimi\nprimine\nprimines\npriming\nprimings\nprimitive\nprimitively\nprimitiveness\nprimitives\nprimitivism\nprimitivist\nprimitivistic\nprimitivists\nprimly\nprimmed\nprimmer\nprimmest\nprimming\nprimness\nprimnesses\nprimo\nprimogenitor\nprimogenitors\nprimogeniture\nprimogenitures\nprimordial\nprimordially\nprimos\nprimp\nprimped\nprimping\nprimps\nprimrose\nprimroses\nprims\nprimsie\nprimula\nprimulas\nprimus\nprimuses\nprince\nprincedom\nprincedoms\nprincelier\nprinceliest\nprinceling\nprincelings\nprincely\nprinces\nprincess\nprincesses\nprincipal\nprincipalities\nprincipality\nprincipally\nprincipals\nprincipe\nprincipi\nprinciple\nprincipled\nprinciples\nprincock\nprincocks\nprincox\nprincoxes\nprink\nprinked\nprinker\nprinkers\nprinking\nprinks\nprint\nprintability\nprintable\nprinted\nprinter\nprinteries\nprinters\nprintery\nprinting\nprintings\nprintout\nprintouts\nprints\nprior\npriorate\npriorates\nprioress\nprioresses\npriories\npriorities\nprioritize\nprioritized\nprioritizes\nprioritizing\npriority\npriorly\npriors\npriory\nprise\nprised\nprisere\npriseres\nprises\nprising\nprism\nprismatic\nprismatically\nprismoid\nprismoids\nprisms\nprison\nprisoned\nprisoner\nprisoners\nprisoning\nprisons\npriss\nprisses\nprissier\nprissies\nprissiest\nprissily\nprissiness\nprissy\npristane\npristanes\npristine\nprithee\nprivacies\nprivacy\nprivate\nprivateer\nprivateers\nprivately\nprivateness\nprivater\nprivates\nprivatest\nprivation\nprivations\nprivatism\nprivative\nprivatively\nprivet\nprivets\nprivier\nprivies\npriviest\nprivilege\nprivileged\nprivileges\nprivileging\nprivily\nprivities\nprivity\nprivy\nprize\nprized\nprizefight\nprizefighter\nprizefighters\nprizefighting\nprizefights\nprizer\nprizers\nprizes\nprizewinner\nprizewinners\nprizing\npro\nproa\nproas\nprobabilist\nprobabilistic\nprobabilists\nprobabilities\nprobability\nprobable\nprobably\nproband\nprobands\nprobang\nprobangs\nprobate\nprobated\nprobates\nprobating\nprobation\nprobational\nprobationary\nprobationer\nprobationers\nprobations\nprobative\nprobe\nprobed\nprober\nprobers\nprobes\nprobing\nprobit\nprobities\nprobits\nprobity\nproblem\nproblematic\nproblematical\nproblematically\nproblems\nproboscis\nproboscises\nprocaine\nprocaines\nprocarp\nprocarps\nprocedural\nprocedure\nprocedures\nproceed\nproceeded\nproceeding\nproceedings\nproceeds\nprocess\nprocessed\nprocesses\nprocessing\nprocession\nprocessional\nprocessionally\nprocessions\nprocessor\nprocessors\nprochain\nprochein\nproclaim\nproclaimed\nproclaiming\nproclaims\nproclamation\nproclamations\nproclivities\nproclivity\nproconsul\nproconsular\nproconsulate\nproconsulates\nproconsuls\nprocrastinate\nprocrastinated\nprocrastinates\nprocrastinating\nprocrastination\nprocrastinations\nprocrastinator\nprocrastinators\nprocreate\nprocreated\nprocreates\nprocreating\nprocreation\nprocreations\nprocreative\nprocreator\nprocreators\nproctologic\nproctological\nproctologist\nproctologists\nproctology\nproctor\nproctored\nproctorial\nproctoring\nproctors\nprocurable\nprocural\nprocurals\nprocurance\nprocurances\nprocuration\nprocurations\nprocurator\nprocurators\nprocure\nprocured\nprocurement\nprocurements\nprocurer\nprocurers\nprocures\nprocuring\nprod\nprodded\nprodder\nprodders\nprodding\nprodigal\nprodigality\nprodigally\nprodigals\nprodigies\nprodigious\nprodigiously\nprodigiousness\nprodigy\nprodromata\nprodrome\nprodromes\nprods\nproduce\nproduced\nproducer\nproducers\nproduces\nproducible\nproducing\nproduct\nproduction\nproductional\nproductions\nproductive\nproductively\nproductiveness\nproductivity\nproducts\nproem\nproemial\nproems\nproette\nproettes\nprof\nprofanation\nprofanations\nprofane\nprofaned\nprofanely\nprofaneness\nprofaner\nprofaners\nprofanes\nprofaning\nprofanities\nprofanity\nprofess\nprofessed\nprofessedly\nprofesses\nprofessing\nprofession\nprofessional\nprofessionalism\nprofessionalize\nprofessionally\nprofessionals\nprofessions\nprofessor\nprofessorate\nprofessorates\nprofessorial\nprofessorially\nprofessoriat\nprofessoriate\nprofessoriates\nprofessoriats\nprofessors\nprofessorship\nprofessorships\nproffer\nproffered\nproffering\nproffers\nproficiency\nproficient\nproficiently\nprofile\nprofiled\nprofiler\nprofilers\nprofiles\nprofiling\nprofit\nprofitability\nprofitable\nprofitableness\nprofitably\nprofited\nprofiteer\nprofiteered\nprofiteering\nprofiteers\nprofiter\nprofiters\nprofiting\nprofitless\nprofits\nprofligacy\nprofligate\nprofligately\nprofligates\nprofound\nprofounder\nprofoundest\nprofoundly\nprofoundness\nprofounds\nprofs\nprofundities\nprofundity\nprofuse\nprofusely\nprofuseness\nprofusion\nprofusions\nprog\nprogenies\nprogenitor\nprogenitors\nprogeny\nprogged\nprogger\nproggers\nprogging\nprognathous\nprognose\nprognosed\nprognoses\nprognosing\nprognosis\nprognostic\nprognosticate\nprognosticated\nprognosticates\nprognosticating\nprognostication\nprognostications\nprognosticative\nprognosticator\nprognosticators\nprograde\nprogram\nprogramed\nprogramer\nprogramers\nprograming\nprogrammability\nprogrammable\nprogrammatic\nprogrammatically\nprogrammed\nprogrammer\nprogrammers\nprogramming\nprograms\nprogress\nprogressed\nprogresses\nprogressing\nprogression\nprogressional\nprogressions\nprogressive\nprogressively\nprogressiveness\nprogressivism\nprogressivist\nprogressivists\nprogs\nprohibit\nprohibited\nprohibiting\nprohibition\nprohibitionist\nprohibitionists\nprohibitions\nprohibitive\nprohibitively\nprohibitiveness\nprohibitory\nprohibits\nproject\nprojected\nprojectile\nprojectiles\nprojecting\nprojection\nprojectional\nprojectionist\nprojectionists\nprojections\nprojective\nprojectively\nprojector\nprojectors\nprojects\nprojet\nprojets\nprolabor\nprolamin\nprolamine\nprolamines\nprolamins\nprolan\nprolans\nprolapse\nprolapsed\nprolapses\nprolapsing\nprolate\nprole\nproleg\nprolegs\nproleptic\nproles\nproletarian\nproletarianization\nproletarianize\nproletarianized\nproletarianizes\nproletarianizing\nproletarians\nproletariat\nproletariats\nproliferate\nproliferated\nproliferates\nproliferating\nproliferation\nproliferations\nproliferative\nprolific\nprolifically\nprolificness\nproline\nprolines\nprolix\nprolixity\nprolixly\nprolocutor\nprolocutors\nprolog\nprologed\nprologing\nprologize\nprologized\nprologizes\nprologizing\nprologs\nprologue\nprologued\nprologues\nprologuing\nprologuize\nprologuized\nprologuizes\nprologuizing\nprolong\nprolongation\nprolongations\nprolonge\nprolonged\nprolonges\nprolonging\nprolongs\nprom\npromenade\npromenaded\npromenades\npromenading\nprominence\nprominences\nprominent\nprominently\npromiscuities\npromiscuity\npromiscuous\npromiscuously\npromiscuousness\npromise\npromised\npromisee\npromisees\npromiser\npromisers\npromises\npromising\npromisingly\npromisor\npromisors\npromissory\npromo\npromontories\npromontory\npromotable\npromote\npromoted\npromoter\npromoters\npromotes\npromoting\npromotion\npromotional\npromotions\npromotive\nprompt\nprompted\nprompter\nprompters\npromptest\nprompting\npromptitude\npromptly\npromptness\nprompts\nproms\npromulgate\npromulgated\npromulgates\npromulgating\npromulgation\npromulgations\npromulgator\npromulgators\npromulge\npromulged\npromulges\npromulging\npronate\npronated\npronates\npronating\npronator\npronatores\npronators\nprone\npronely\nproneness\nprong\npronged\npronging\nprongs\npronominal\npronominally\npronota\npronotum\npronoun\npronounce\npronounceable\npronounced\npronouncement\npronouncements\npronounces\npronouncing\npronouns\npronto\npronunciation\npronunciational\npronunciations\nproof\nproofed\nproofer\nproofers\nproofing\nproofread\nproofreader\nproofreaders\nproofreading\nproofreads\nproofs\nprop\npropagable\npropaganda\npropagandist\npropagandistic\npropagandists\npropagandize\npropagandized\npropagandizes\npropagandizing\npropagate\npropagated\npropagates\npropagating\npropagation\npropagations\npropagative\npropagator\npropagators\npropane\npropanes\npropel\npropellant\npropellants\npropelled\npropellent\npropeller\npropellers\npropelling\npropels\npropend\npropended\npropending\npropends\npropene\npropenes\npropenol\npropenols\npropense\npropensities\npropensity\npropenyl\nproper\nproperer\nproperest\nproperly\nproperness\npropers\npropertied\nproperties\nproperty\npropertyless\nprophage\nprophages\nprophase\nprophases\nprophecies\nprophecy\nprophesied\nprophesier\nprophesiers\nprophesies\nprophesy\nprophesying\nprophet\nprophetess\nprophetesses\nprophetic\nprophetical\nprophetically\nprophets\nprophylactic\nprophylactically\nprophylactics\nprophylaxes\nprophylaxis\npropine\npropined\npropines\npropining\npropinquities\npropinquity\npropitiate\npropitiated\npropitiates\npropitiating\npropitiation\npropitiations\npropitiator\npropitiators\npropitiatory\npropitious\npropitiously\npropitiousness\npropjet\npropjets\npropman\npropmen\npropolis\npropolises\npropone\nproponed\nproponent\nproponents\npropones\nproponing\nproportion\nproportionable\nproportionably\nproportional\nproportionality\nproportionally\nproportionate\nproportionated\nproportionately\nproportionates\nproportionating\nproportioned\nproportioning\nproportions\nproposal\nproposals\npropose\nproposed\nproposer\nproposers\nproposes\nproposing\nproposition\npropositional\npropositioned\npropositioning\npropositions\npropound\npropounded\npropounder\npropounders\npropounding\npropounds\npropped\npropping\nproprietaries\nproprietary\nproprieties\nproprietor\nproprietors\nproprietorship\nproprietress\nproprietresses\npropriety\nprops\npropulsion\npropulsions\npropulsive\npropyl\npropyla\npropylic\npropylon\npropyls\nprorate\nprorated\nprorates\nprorating\nproration\nprorations\nprorogation\nprorogations\nprorogue\nprorogued\nprorogues\nproroguing\npros\nprosaic\nprosaically\nprosaism\nprosaisms\nprosaist\nprosaists\nprosciutti\nprosciutto\nprosciuttos\nproscribe\nproscribed\nproscriber\nproscribers\nproscribes\nproscribing\nproscription\nproscriptions\nproscriptive\nproscriptively\nprose\nprosect\nprosected\nprosecting\nprosects\nprosecutable\nprosecute\nprosecuted\nprosecutes\nprosecuting\nprosecution\nprosecutions\nprosecutor\nprosecutors\nprosed\nproselyte\nproselyted\nproselytes\nproselyting\nproselytize\nproselytized\nproselytizer\nproselytizers\nproselytizes\nproselytizing\nproser\nprosers\nproses\nprosier\nprosiest\nprosily\nprosiness\nprosing\nprosit\nproso\nprosodic\nprosodical\nprosodies\nprosody\nprosoma\nprosomal\nprosomas\nprosos\nprospect\nprospected\nprospecting\nprospective\nprospectively\nprospector\nprospectors\nprospects\nprospectus\nprospectuses\nprosper\nprospered\nprospering\nprosperity\nprosperous\nprosperously\nprosperousness\nprospers\npross\nprost\nprostate\nprostates\nprostheses\nprosthesis\nprosthetic\nprosthetically\nprosthetics\nprostitute\nprostituted\nprostitutes\nprostituting\nprostitution\nprostitutions\nprostrate\nprostrated\nprostrates\nprostrating\nprostration\nprostrations\nprostyle\nprostyles\nprosy\nprotagonist\nprotagonists\nprotamin\nprotamins\nprotases\nprotasis\nprotatic\nprotea\nprotean\nproteas\nprotease\nproteases\nprotect\nprotected\nprotecting\nprotection\nprotectionism\nprotectionist\nprotectionists\nprotections\nprotective\nprotectively\nprotectiveness\nprotector\nprotectoral\nprotectorate\nprotectorates\nprotectories\nprotectors\nprotectorship\nprotectory\nprotectress\nprotectresses\nprotects\nprotege\nprotegee\nprotegees\nproteges\nprotei\nproteid\nproteide\nproteides\nproteids\nprotein\nproteins\nprotend\nprotended\nprotending\nprotends\nproteose\nproteoses\nprotest\nprotestant\nprotestation\nprotestations\nprotested\nprotester\nprotesters\nprotesting\nprotestor\nprotestors\nprotests\nproteus\nprothonotaries\nprothonotary\nprotist\nprotists\nprotium\nprotiums\nprotocol\nprotocoled\nprotocoling\nprotocolled\nprotocolling\nprotocols\nproton\nprotonic\nprotons\nprotoplasm\nprotoplasmic\nprotoplasms\nprotopod\nprotopods\nprototypal\nprototype\nprototypes\nprototypical\nprototypically\nprotoxid\nprotoxids\nprotozoa\nprotozoal\nprotozoan\nprotozoans\nprotozoologist\nprotozoologists\nprotozoology\nprotozoon\nprotract\nprotracted\nprotractile\nprotracting\nprotraction\nprotractions\nprotractive\nprotractor\nprotractors\nprotracts\nprotrude\nprotruded\nprotrudes\nprotruding\nprotrusion\nprotrusions\nprotrusive\nprotrusively\nprotrusiveness\nprotuberance\nprotuberances\nprotuberant\nprotuberantly\nprotyl\nprotyle\nprotyles\nprotyls\nproud\nprouder\nproudest\nproudful\nproudly\nprounion\nprovable\nprovableness\nprovably\nprove\nproved\nproven\nprovenance\nprovenances\nprovender\nprovenience\nproveniences\nprovenly\nprover\nproverb\nproverbed\nproverbial\nproverbially\nproverbing\nproverbs\nprovers\nproves\nprovide\nprovided\nprovidence\nprovident\nprovidential\nprovidentially\nprovidently\nprovider\nproviders\nprovides\nproviding\nprovince\nprovinces\nprovincial\nprovincialism\nprovincialisms\nprovincialities\nprovinciality\nprovincially\nproving\nproviral\nprovirus\nproviruses\nprovision\nprovisional\nprovisionally\nprovisionary\nprovisioned\nprovisioner\nprovisioners\nprovisioning\nprovisions\nproviso\nprovisoes\nprovisory\nprovisos\nprovocateur\nprovocateurs\nprovocation\nprovocations\nprovocative\nprovocatively\nprovocativeness\nprovoke\nprovoked\nprovoker\nprovokers\nprovokes\nprovoking\nprovokingly\nprovolone\nprovost\nprovosts\nprow\nprowar\nprower\nprowess\nprowesses\nprowest\nprowl\nprowled\nprowler\nprowlers\nprowling\nprowls\nprows\nproxemic\nproxies\nproximal\nproximally\nproximate\nproximately\nproximateness\nproximity\nproximo\nproxy\nprude\nprudence\nprudences\nprudent\nprudential\nprudentially\nprudently\npruderies\nprudery\nprudes\nprudish\nprudishly\nprudishness\npruinose\nprunable\nprune\npruned\nprunella\nprunellas\nprunelle\nprunelles\nprunello\nprunellos\npruner\npruners\nprunes\npruning\nprurience\npruriency\nprurient\npruriently\nprurigo\nprurigos\npruritic\npruritus\nprurituses\nprussic\npruta\nprutah\nprutot\nprutoth\npry\npryer\npryers\nprying\npryingly\nprythee\npsalm\npsalmbook\npsalmbooks\npsalmed\npsalmic\npsalming\npsalmist\npsalmists\npsalmodies\npsalmody\npsalms\npsalter\npsalteries\npsalters\npsaltery\npsaltries\npsaltry\npsammite\npsammites\npschent\npschents\npsephite\npsephites\npseud\npseudo\npseudonym\npseudonymity\npseudonymous\npseudonymously\npseudonyms\npseudorandom\npshaw\npshawed\npshawing\npshaws\npsi\npsiloses\npsilosis\npsilotic\npsis\npsoae\npsoai\npsoas\npsocid\npsocids\npsoralea\npsoraleas\npsoriasis\npsst\npsych\npsyche\npsyched\npsychedelic\npsychedelically\npsyches\npsychiatric\npsychiatrically\npsychiatrist\npsychiatrists\npsychiatry\npsychic\npsychically\npsychics\npsyching\npsycho\npsychoanalysis\npsychoanalyst\npsychoanalysts\npsychoanalytic\npsychoanalytically\npsychoanalyze\npsychoanalyzed\npsychoanalyzes\npsychoanalyzing\npsychobiological\npsychobiologies\npsychobiologist\npsychobiologists\npsychobiology\npsychodrama\npsychodramas\npsychogenetic\npsychological\npsychologically\npsychologies\npsychologist\npsychologists\npsychologize\npsychologized\npsychologizes\npsychologizing\npsychology\npsychometric\npsychometrically\npsychometrician\npsychometricians\npsychometrics\npsychometry\npsychopath\npsychopathic\npsychopathologic\npsychopathological\npsychopathologist\npsychopathologists\npsychopathology\npsychopaths\npsychos\npsychoses\npsychosexual\npsychosexuality\npsychosexually\npsychosis\npsychosomatic\npsychosomatically\npsychosomatics\npsychotherapies\npsychotherapist\npsychotherapists\npsychotherapy\npsychotic\npsychrometer\npsychrometers\npsychrometric\npsychs\npsylla\npsyllas\npsyllid\npsyllids\nptarmigan\nptarmigans\npterin\npterins\npterodactyl\npterodactyls\npteropod\npteropods\npteryla\npterylae\nptisan\nptisans\nptomain\nptomaine\nptomaines\nptomains\nptoses\nptosis\nptotic\nptyalin\nptyalins\nptyalism\nptyalisms\npub\npuberal\npubertal\npuberties\npuberty\npubes\npubescence\npubescent\npubic\npubis\npublic\npublican\npublicans\npublication\npublications\npublicist\npublicists\npublicities\npublicity\npublicize\npublicized\npublicizes\npublicizing\npublicly\npublicness\npublics\npublish\npublishable\npublished\npublisher\npublishers\npublishes\npublishing\npubs\npuccoon\npuccoons\npuce\npuces\npuck\npucka\npucker\npuckered\npuckerer\npuckerers\npuckerier\npuckeriest\npuckering\npuckers\npuckery\npuckish\npucks\npud\npudding\npuddings\npuddle\npuddled\npuddler\npuddlers\npuddles\npuddlier\npuddliest\npuddling\npuddlings\npuddly\npudencies\npudency\npudenda\npudendal\npudendum\npudgier\npudgiest\npudgily\npudgy\npudic\npuds\npueblo\npueblos\npuerile\npuerilely\npuerilities\npuerility\npuff\npuffball\npuffballs\npuffed\npuffer\npufferies\npuffers\npuffery\npuffier\npuffiest\npuffily\npuffin\npuffiness\npuffing\npuffins\npuffs\npuffy\npug\npugaree\npugarees\npuggaree\npuggarees\npugged\npuggier\npuggiest\npugging\npuggish\npuggree\npuggrees\npuggries\npuggry\npuggy\npugh\npugilism\npugilisms\npugilist\npugilistic\npugilists\npugmark\npugmarks\npugnacious\npugnaciously\npugnaciousness\npugnacity\npugree\npugrees\npugs\npuisne\npuisnes\npuissance\npuissances\npuissant\npuissantly\npuja\npujah\npujas\npuke\npuked\npukes\npuking\npukka\npul\npula\npulchritude\npulchritudes\npulchritudinous\npule\npuled\npuler\npulers\npules\npuli\npulicene\npulicide\npulicides\npulik\npuling\npulingly\npulings\npulis\npull\npullback\npullbacks\npulled\npuller\npullers\npullet\npullets\npulley\npulleys\npulling\npullman\npullmans\npullout\npullouts\npullover\npullovers\npulls\npulmonary\npulmonic\npulmotor\npulmotors\npulp\npulpal\npulpally\npulped\npulper\npulpers\npulpier\npulpiest\npulpily\npulping\npulpit\npulpital\npulpits\npulpless\npulpous\npulps\npulpwood\npulpwoods\npulpy\npulque\npulques\npuls\npulsant\npulsar\npulsars\npulsate\npulsated\npulsates\npulsatile\npulsating\npulsation\npulsations\npulsator\npulsators\npulse\npulsed\npulsejet\npulsejets\npulser\npulsers\npulses\npulsing\npulsion\npulsions\npulsojet\npulsojets\npulverizable\npulverization\npulverizations\npulverize\npulverized\npulverizer\npulverizers\npulverizes\npulverizing\npulvilli\npulvinar\npulvini\npulvinus\npuma\npumas\npumelo\npumelos\npumice\npumiced\npumiceous\npumicer\npumicers\npumices\npumicing\npumicite\npumicites\npummel\npummeled\npummeling\npummelled\npummelling\npummels\npump\npumped\npumper\npumpernickel\npumpernickels\npumpers\npumping\npumpkin\npumpkins\npumpkinseed\npumpkinseeds\npumpless\npumplike\npumps\npun\npuna\npunas\npunch\npunched\npuncheon\npuncheons\npuncher\npunchers\npunches\npunchier\npunchiest\npunching\npunchy\npunctate\npunctilio\npunctilios\npunctilious\npunctiliously\npunctiliousness\npunctual\npunctuality\npunctually\npunctualness\npunctuate\npunctuated\npunctuates\npunctuating\npunctuation\npunctuations\npunctuator\npunctuators\npuncture\npunctured\npuncturer\npuncturers\npunctures\npuncturing\npundit\npunditic\npunditries\npunditry\npundits\npung\npungencies\npungency\npungent\npungently\npungs\npunier\npuniest\npunily\npuniness\npuninesses\npunish\npunishability\npunishable\npunished\npunisher\npunishers\npunishes\npunishing\npunishment\npunishments\npunition\npunitions\npunitive\npunitively\npunitiveness\npunitory\npunk\npunka\npunkah\npunkahs\npunkas\npunker\npunkest\npunkey\npunkeys\npunkie\npunkier\npunkies\npunkiest\npunkin\npunkins\npunks\npunky\npunned\npunner\npunners\npunnier\npunniest\npunning\npunny\npuns\npunster\npunsters\npunt\npunted\npunter\npunters\npunties\npunting\npunto\npuntos\npunts\npunty\npuny\npup\npupa\npupae\npupal\npuparia\npuparial\npuparium\npupas\npupate\npupated\npupates\npupating\npupation\npupations\npupfish\npupfishes\npupil\npupilage\npupilages\npupilar\npupilary\npupillage\npupillages\npupils\npupped\npuppet\npuppeteer\npuppeteers\npuppetries\npuppetry\npuppets\npuppies\npupping\npuppy\npuppydom\npuppydoms\npuppyhood\npuppyish\npuppylike\npups\npur\npurana\npuranas\npuranic\npurblind\npurchasable\npurchase\npurchased\npurchaser\npurchasers\npurchases\npurchasing\npurda\npurdah\npurdahs\npurdas\npure\npurebred\npurebreds\npuree\npureed\npureeing\npurees\npurely\npureness\npurenesses\npurer\npurest\npurfle\npurfled\npurfles\npurfling\npurflings\npurgation\npurgations\npurgative\npurgatively\npurgatorial\npurgatories\npurgatory\npurge\npurged\npurger\npurgers\npurges\npurging\npurgings\npuri\npurification\npurifications\npurified\npurifier\npurifiers\npurifies\npurify\npurifying\npurin\npurine\npurines\npurins\npuris\npurism\npurisms\npurist\npuristic\npurists\npuritan\npuritanical\npuritanically\npuritanism\npuritans\npurities\npurity\npurl\npurled\npurlieu\npurlieus\npurlin\npurline\npurlines\npurling\npurlins\npurloin\npurloined\npurloiner\npurloiners\npurloining\npurloins\npurls\npurple\npurpled\npurpler\npurples\npurplest\npurpling\npurplish\npurply\npurport\npurported\npurportedly\npurporting\npurports\npurpose\npurposed\npurposeful\npurposefully\npurposefulness\npurposeless\npurposelessly\npurposelessness\npurposely\npurposes\npurposing\npurposive\npurposively\npurposiveness\npurpura\npurpuras\npurpure\npurpures\npurpuric\npurpurin\npurpurins\npurr\npurred\npurring\npurringly\npurrs\npurs\npurse\npursed\npurselike\npurser\npursers\npurses\npursier\npursiest\npursily\npursing\npurslane\npurslanes\npursuant\npursue\npursued\npursuer\npursuers\npursues\npursuing\npursuit\npursuits\npursy\npurulence\npurulent\npurvey\npurveyance\npurveyances\npurveyed\npurveying\npurveyor\npurveyors\npurveys\npurview\npurviews\npus\npuses\npush\npushball\npushballs\npushcart\npushcarts\npushdown\npushdowns\npushed\npusher\npushers\npushes\npushful\npushier\npushiest\npushily\npushiness\npushing\npushover\npushovers\npushpin\npushpins\npushup\npushups\npushy\npusillanimity\npusillanimous\npusillanimously\npusley\npusleys\npuslike\npuss\npusses\npussier\npussies\npussiest\npussley\npussleys\npusslies\npusslike\npussly\npussy\npussycat\npussycats\npussyfoot\npussyfooted\npussyfooter\npussyfooters\npussyfooting\npussyfoots\npustular\npustulate\npustulated\npustulates\npustulating\npustulation\npustulations\npustule\npustuled\npustules\nput\nputamen\nputamina\nputative\nputatively\nputlog\nputlogs\nputoff\nputoffs\nputon\nputons\nputout\nputouts\nputrefaction\nputrefactions\nputrefactive\nputrefied\nputrefies\nputrefy\nputrefying\nputrid\nputridity\nputridly\nputs\nputsch\nputsches\nputt\nputted\nputtee\nputtees\nputter\nputtered\nputterer\nputterers\nputtering\nputters\nputti\nputtied\nputtier\nputtiers\nputties\nputting\nputto\nputts\nputty\nputtying\nputz\npuzzle\npuzzled\npuzzlement\npuzzlements\npuzzler\npuzzlers\npuzzles\npuzzling\npuzzlingly\npya\npyaemia\npyaemias\npyaemic\npyas\npycnidia\npye\npyelitic\npyelitis\npyelitises\npyemia\npyemias\npyemic\npyes\npygidia\npygidial\npygidium\npygmaean\npygmean\npygmies\npygmoid\npygmy\npygmyish\npygmyism\npygmyisms\npyic\npyin\npyins\npyjamas\npyknic\npyknics\npylon\npylons\npylori\npyloric\npylorus\npyloruses\npyoderma\npyodermas\npyogenic\npyoid\npyorrhea\npyorrheas\npyoses\npyosis\npyralid\npyralids\npyramid\npyramidal\npyramidally\npyramided\npyramidical\npyramiding\npyramids\npyran\npyranoid\npyranose\npyranoses\npyrans\npyre\npyrene\npyrenes\npyrenoid\npyrenoids\npyres\npyretic\npyrexia\npyrexial\npyrexias\npyrexic\npyric\npyridic\npyridine\npyridines\npyriform\npyrite\npyrites\npyritic\npyritous\npyrogen\npyrogens\npyrola\npyrolas\npyrologies\npyrology\npyrolyze\npyrolyzed\npyrolyzes\npyrolyzing\npyromania\npyromaniac\npyromaniacal\npyromaniacs\npyrone\npyrones\npyronine\npyronines\npyrope\npyropes\npyrosis\npyrosises\npyrostat\npyrostats\npyrotechnic\npyrotechnically\npyrotechnics\npyrotechnist\npyrotechnists\npyroxene\npyroxenes\npyroxylin\npyroxylins\npyrrhic\npyrrhics\npyrrol\npyrrole\npyrroles\npyrrolic\npyrrols\npyruvate\npyruvates\npython\npythoness\npythonesses\npythonic\npythons\npyuria\npyurias\npyx\npyxes\npyxides\npyxidia\npyxidium\npyxie\npyxies\npyxis\nqaid\nqaids\nqanat\nqanats\nqat\nqats\nqindar\nqindars\nqintar\nqintars\nqiviut\nqiviuts\nqoph\nqophs\nqua\nquack\nquacked\nquackeries\nquackery\nquacking\nquackish\nquackism\nquackisms\nquacks\nquad\nquadded\nquadding\nquadrangle\nquadrangles\nquadrangular\nquadrans\nquadrant\nquadrantal\nquadrantes\nquadrants\nquadraphonic\nquadrat\nquadrate\nquadrated\nquadrates\nquadratic\nquadratics\nquadrating\nquadrats\nquadrennial\nquadrennially\nquadric\nquadrics\nquadriga\nquadrigae\nquadrilateral\nquadrilaterals\nquadrille\nquadrilles\nquadrillion\nquadrillions\nquadrillionth\nquadriplegia\nquadriplegic\nquadriplegics\nquadroon\nquadroons\nquadruped\nquadrupedal\nquadrupeds\nquadruple\nquadrupled\nquadruples\nquadruplet\nquadruplets\nquadruplicate\nquadruplicated\nquadruplicates\nquadruplicating\nquadruplication\nquadruplications\nquadrupling\nquadruply\nquads\nquaere\nquaeres\nquaestor\nquaestors\nquaff\nquaffed\nquaffer\nquaffers\nquaffing\nquaffs\nquag\nquagga\nquaggas\nquaggier\nquaggiest\nquaggy\nquagmire\nquagmires\nquagmirier\nquagmiriest\nquagmiry\nquags\nquahaug\nquahaugs\nquahog\nquahogs\nquai\nquaich\nquaiches\nquaichs\nquaigh\nquaighs\nquail\nquailed\nquailing\nquails\nquaint\nquainter\nquaintest\nquaintly\nquaintness\nquais\nquake\nquaked\nquaker\nquakers\nquakes\nquakier\nquakiest\nquakily\nquaking\nquaky\nquale\nqualia\nqualifiable\nqualification\nqualifications\nqualified\nqualifiedly\nqualifier\nqualifiers\nqualifies\nqualify\nqualifying\nqualitative\nqualitatively\nqualities\nquality\nqualm\nqualmier\nqualmiest\nqualmish\nqualms\nqualmy\nquamash\nquamashes\nquandang\nquandangs\nquandaries\nquandary\nquandong\nquandongs\nquant\nquanta\nquantal\nquanted\nquantic\nquantics\nquanties\nquantifiable\nquantification\nquantifications\nquantified\nquantifier\nquantifiers\nquantifies\nquantify\nquantifying\nquanting\nquantitate\nquantitated\nquantitates\nquantitating\nquantitative\nquantitatively\nquantitativeness\nquantities\nquantity\nquantization\nquantizations\nquantize\nquantized\nquantizes\nquantizing\nquantong\nquantongs\nquants\nquantum\nquarantine\nquarantined\nquarantines\nquarantining\nquare\nquark\nquarks\nquarrel\nquarreled\nquarreler\nquarrelers\nquarreling\nquarrelled\nquarreller\nquarrellers\nquarrelling\nquarrels\nquarrelsome\nquarrelsomely\nquarrelsomeness\nquarried\nquarrier\nquarriers\nquarries\nquarry\nquarrying\nquart\nquartan\nquartans\nquarte\nquarter\nquarterage\nquarterages\nquarterback\nquarterbacks\nquarterdeck\nquarterdecks\nquartered\nquartering\nquarterlies\nquarterly\nquartermaster\nquartermasters\nquartern\nquarterns\nquarters\nquartersawed\nquartes\nquartet\nquartets\nquartic\nquartics\nquartile\nquartiles\nquarto\nquartos\nquarts\nquartz\nquartzes\nquartzite\nquartzites\nquasar\nquasars\nquash\nquashed\nquashes\nquashing\nquasi\nquass\nquasses\nquassia\nquassias\nquassin\nquassins\nquate\nquaternaries\nquaternary\nquatorze\nquatorzes\nquatrain\nquatrains\nquatre\nquatrefoil\nquatrefoils\nquatres\nquaver\nquavered\nquaverer\nquaverers\nquavering\nquavers\nquavery\nquay\nquayage\nquayages\nquaylike\nquays\nquayside\nquaysides\nquean\nqueans\nqueasier\nqueasiest\nqueasily\nqueasiness\nqueasy\nqueazier\nqueaziest\nqueazy\nqueen\nqueened\nqueening\nqueenlier\nqueenliest\nqueenly\nqueens\nqueer\nqueered\nqueerer\nqueerest\nqueering\nqueerish\nqueerly\nqueerness\nqueers\nquell\nquelled\nqueller\nquellers\nquelling\nquells\nquench\nquenchable\nquenched\nquencher\nquenchers\nquenches\nquenching\nquenchless\nquenelle\nquenelles\nquercine\nquerida\nqueridas\nqueried\nquerier\nqueriers\nqueries\nquerist\nquerists\nquern\nquerns\nquerulous\nquerulously\nquerulousness\nquery\nquerying\nquest\nquested\nquester\nquesters\nquesting\nquestion\nquestionable\nquestionableness\nquestionably\nquestioned\nquestioner\nquestioners\nquestioning\nquestioningly\nquestionless\nquestionnaire\nquestionnaires\nquestions\nquestor\nquestors\nquests\nquetzal\nquetzales\nquetzals\nqueue\nqueued\nqueueing\nqueuer\nqueuers\nqueues\nqueuing\nquey\nqueys\nquezal\nquezales\nquezals\nquibble\nquibbled\nquibbler\nquibblers\nquibbles\nquibbling\nquiche\nquiches\nquick\nquicken\nquickened\nquickening\nquickens\nquicker\nquickest\nquickie\nquickies\nquicklime\nquickly\nquickness\nquicks\nquicksand\nquicksands\nquickset\nquicksets\nquicksilver\nquickstep\nquicksteps\nquid\nquiddities\nquiddity\nquidnunc\nquidnuncs\nquids\nquiescence\nquiescent\nquiescently\nquiet\nquieted\nquieten\nquietened\nquietening\nquietens\nquieter\nquieters\nquietest\nquieting\nquietism\nquietisms\nquietist\nquietistic\nquietists\nquietly\nquietness\nquiets\nquietude\nquietudes\nquietus\nquietuses\nquiff\nquiffs\nquill\nquillai\nquillais\nquilled\nquillet\nquillets\nquilling\nquills\nquilt\nquilted\nquilter\nquilters\nquilting\nquiltings\nquilts\nquin\nquinaries\nquinary\nquinate\nquince\nquinces\nquincunx\nquincunxes\nquinella\nquinellas\nquinic\nquiniela\nquinielas\nquinin\nquinina\nquininas\nquinine\nquinines\nquinins\nquinnat\nquinnats\nquinoa\nquinoas\nquinoid\nquinoids\nquinol\nquinolin\nquinolins\nquinols\nquinone\nquinones\nquinquennial\nquinquennially\nquinquennials\nquins\nquinsies\nquinsy\nquint\nquintain\nquintains\nquintal\nquintals\nquintan\nquintans\nquintar\nquintars\nquintessence\nquintessences\nquintessential\nquintet\nquintets\nquintic\nquintics\nquintile\nquintiles\nquintillion\nquintillions\nquintillionth\nquintillionths\nquintin\nquintins\nquints\nquintuple\nquintupled\nquintuples\nquintuplet\nquintuplets\nquintupling\nquip\nquipped\nquipping\nquippish\nquippu\nquippus\nquips\nquipster\nquipsters\nquipu\nquipus\nquire\nquired\nquires\nquiring\nquirk\nquirked\nquirkier\nquirkiest\nquirkily\nquirkiness\nquirking\nquirks\nquirky\nquirt\nquirted\nquirting\nquirts\nquisling\nquislings\nquit\nquitch\nquitches\nquitclaim\nquitclaimed\nquitclaiming\nquitclaims\nquite\nquitrent\nquitrents\nquits\nquittance\nquittances\nquitted\nquitter\nquitters\nquitting\nquittor\nquittors\nquiver\nquivered\nquiverer\nquiverers\nquivering\nquivers\nquivery\nquixote\nquixotes\nquixotic\nquixotically\nquixotism\nquixotisms\nquixotries\nquixotry\nquiz\nquizzed\nquizzer\nquizzers\nquizzes\nquizzical\nquizzically\nquizzing\nquod\nquods\nquoin\nquoined\nquoining\nquoins\nquoit\nquoited\nquoiting\nquoits\nquomodo\nquomodos\nquondam\nquorum\nquorums\nquota\nquotable\nquotably\nquotas\nquotation\nquotations\nquote\nquoted\nquoter\nquoters\nquotes\nquoth\nquotha\nquotidian\nquotidians\nquotient\nquotients\nquoting\nqursh\nqurshes\nqurush\nqurushes\nrabat\nrabato\nrabatos\nrabbet\nrabbeted\nrabbeting\nrabbets\nrabbi\nrabbies\nrabbin\nrabbinate\nrabbinates\nrabbinic\nrabbinical\nrabbins\nrabbis\nrabbit\nrabbited\nrabbiter\nrabbiters\nrabbiting\nrabbitries\nrabbitry\nrabbits\nrabble\nrabbled\nrabblement\nrabblements\nrabbler\nrabblers\nrabbles\nrabbling\nrabboni\nrabbonis\nrabic\nrabid\nrabidities\nrabidity\nrabidly\nrabidness\nrabies\nrabietic\nraccoon\nraccoons\nrace\nracecourse\nracecourses\nraced\nracehorse\nracehorses\nracemate\nracemates\nraceme\nracemed\nracemes\nracemic\nracemism\nracemisms\nracemize\nracemized\nracemizes\nracemizing\nracemoid\nracemose\nracemous\nracer\nracers\nraces\nracetrack\nracetracker\nracetrackers\nracetracks\nraceway\nraceways\nrachet\nrachets\nrachial\nrachides\nrachis\nrachises\nrachitic\nrachitides\nrachitis\nracial\nracialism\nracialist\nracialistic\nracialists\nracially\nracier\nraciest\nracily\nraciness\nracinesses\nracing\nracings\nracism\nracisms\nracist\nracists\nrack\nracked\nracker\nrackers\nracket\nracketed\nracketeer\nracketeered\nracketeering\nracketeers\nracketier\nracketiest\nracketing\nrackets\nrackety\nracking\nrackle\nracks\nrackwork\nrackworks\nraclette\nraclettes\nracon\nracons\nraconteur\nraconteurs\nracoon\nracoons\nracquet\nracquetball\nracquets\nracy\nrad\nradar\nradars\nradded\nradding\nraddle\nraddled\nraddles\nraddling\nradiable\nradial\nradiale\nradialia\nradially\nradials\nradian\nradiance\nradiances\nradiancies\nradiancy\nradians\nradiant\nradiantly\nradiants\nradiate\nradiated\nradiates\nradiating\nradiation\nradiational\nradiations\nradiative\nradiator\nradiators\nradical\nradicalism\nradically\nradicals\nradicand\nradicands\nradicate\nradicated\nradicates\nradicating\nradicel\nradicels\nradices\nradicle\nradicles\nradii\nradio\nradioactive\nradioactively\nradioactivity\nradiocarbon\nradiocarbons\nradioed\nradiogram\nradiograms\nradiograph\nradiographed\nradiographic\nradiographically\nradiographing\nradiographs\nradiography\nradioing\nradioisotope\nradioisotopes\nradioisotopic\nradiological\nradiologies\nradiologist\nradiologists\nradiology\nradioman\nradiomen\nradiometer\nradiometers\nradiophone\nradiophones\nradiophoto\nradiophotos\nradios\nradiosonde\nradiosondes\nradiotelephone\nradiotelephones\nradiotherapies\nradiotherapist\nradiotherapists\nradiotherapy\nradish\nradishes\nradium\nradiums\nradius\nradiuses\nradix\nradixes\nradome\nradomes\nradon\nradons\nrads\nradula\nradulae\nradular\nradulas\nraff\nraffia\nraffias\nraffish\nraffishly\nraffishness\nraffle\nraffled\nraffler\nrafflers\nraffles\nraffling\nraffs\nraft\nrafted\nrafter\nrafters\nrafting\nrafts\nraftsman\nraftsmen\nrag\nraga\nragamuffin\nragamuffins\nragas\nragbag\nragbags\nrage\nraged\nragee\nragees\nrages\nragged\nraggeder\nraggedest\nraggedly\nraggedness\nraggedy\nraggies\nragging\nraggle\nraggles\nraggy\nragi\nraging\nragingly\nragis\nraglan\nraglans\nragman\nragmen\nragout\nragouted\nragouting\nragouts\nrags\nragtag\nragtags\nragtime\nragtimes\nragweed\nragweeds\nragwort\nragworts\nrah\nraia\nraias\nraid\nraided\nraider\nraiders\nraiding\nraids\nrail\nrailbird\nrailbirds\nrailed\nrailer\nrailers\nrailhead\nrailheads\nrailing\nrailings\nrailleries\nraillery\nrailroad\nrailroaded\nrailroader\nrailroaders\nrailroading\nrailroads\nrails\nrailway\nrailways\nraiment\nraiments\nrain\nrainband\nrainbands\nrainbird\nrainbirds\nrainbow\nrainbows\nraincoat\nraincoats\nraindrop\nraindrops\nrained\nrainfall\nrainfalls\nrainier\nrainiest\nrainily\nraining\nrainless\nrainmaker\nrainmakers\nrainmaking\nrainout\nrainouts\nrainproof\nrains\nrainstorm\nrainstorms\nrainwash\nrainwashes\nrainwater\nrainwaters\nrainwear\nrainwears\nrainy\nraisable\nraise\nraised\nraiser\nraisers\nraises\nraisin\nraising\nraisings\nraisins\nraisiny\nraisonne\nraj\nraja\nrajah\nrajahs\nrajas\nrajes\nrake\nraked\nrakee\nrakees\nrakehell\nrakehells\nrakeoff\nrakeoffs\nraker\nrakers\nrakes\nraki\nraking\nrakis\nrakish\nrakishly\nrakishness\nrale\nrales\nrallied\nrallier\nralliers\nrallies\nralline\nrally\nrallye\nrallyes\nrallying\nrallyings\nrallyist\nrallyists\nralph\nram\nramate\nramble\nrambled\nrambler\nramblers\nrambles\nrambling\nrambunctious\nrambutan\nrambutans\nramee\nramees\nramekin\nramekins\nramenta\nramentum\nramequin\nramequins\nramet\nramets\nrami\nramie\nramies\nramification\nramifications\nramified\nramifies\nramiform\nramify\nramifying\nramilie\nramilies\nramillie\nramillies\nramjet\nramjets\nrammed\nrammer\nrammers\nrammier\nrammiest\nramming\nrammish\nrammy\nramose\nramosely\nramosities\nramosity\nramous\nramp\nrampage\nrampaged\nrampageous\nrampager\nrampagers\nrampages\nrampaging\nrampancies\nrampancy\nrampant\nrampantly\nrampart\nramparted\nramparting\nramparts\nramped\nrampike\nrampikes\nramping\nrampion\nrampions\nrampole\nrampoles\nramps\nramrod\nramrods\nrams\nramshackle\nramshorn\nramshorns\nramson\nramsons\nramtil\nramtils\nramulose\nramulous\nramus\nran\nrance\nrances\nranch\nranched\nrancher\nranchero\nrancheros\nranchers\nranches\nranching\nranchland\nranchlands\nranchman\nranchmen\nrancho\nranchos\nrancid\nrancidity\nrancidness\nrancor\nrancored\nrancorous\nrancorously\nrancors\nrancour\nrancours\nrand\nrandan\nrandans\nrandies\nrandom\nrandomization\nrandomizations\nrandomize\nrandomized\nrandomizes\nrandomizing\nrandomly\nrandomness\nrandoms\nrands\nrandy\nranee\nranees\nrang\nrange\nranged\nrangeland\nrangelands\nranger\nrangers\nranges\nrangier\nrangiest\nranginess\nranging\nrangy\nrani\nranid\nranids\nranis\nrank\nranked\nranker\nrankers\nrankest\nranking\nrankish\nrankle\nrankled\nrankles\nrankling\nrankly\nrankness\nranknesses\nranks\nranpike\nranpikes\nransack\nransacked\nransacking\nransacks\nransom\nransomed\nransomer\nransomers\nransoming\nransoms\nrant\nranted\nranter\nranters\nranting\nrantingly\nrants\nranula\nranulas\nrap\nrapacious\nrapaciously\nrapaciousness\nrapacities\nrapacity\nrape\nraped\nraper\nrapers\nrapes\nrapeseed\nrapeseeds\nraphae\nraphe\nraphes\nraphia\nraphias\nraphide\nraphides\nraphis\nrapid\nrapider\nrapidest\nrapidities\nrapidity\nrapidly\nrapidness\nrapids\nrapier\nrapiered\nrapiers\nrapine\nrapines\nraping\nrapist\nrapists\nrapparee\nrapparees\nrapped\nrappee\nrappees\nrappel\nrappelled\nrappelling\nrappels\nrappen\nrapper\nrappers\nrapping\nrappini\nrapport\nrapports\nrapprochement\nrapprochements\nraps\nrapscallion\nrapscallions\nrapt\nraptly\nraptness\nraptnesses\nraptor\nraptors\nrapture\nraptured\nraptures\nrapturing\nrapturous\nrapturously\nrapturousness\nrare\nrarebit\nrarebits\nrared\nrarefaction\nrarefactional\nrarefactions\nrarefied\nrarefier\nrarefiers\nrarefies\nrarefy\nrarefying\nrarely\nrareness\nrarenesses\nrarer\nrareripe\nrareripes\nrares\nrarest\nrarified\nrarifies\nrarify\nrarifying\nraring\nrarities\nrarity\nras\nrasbora\nrasboras\nrascal\nrascalities\nrascality\nrascally\nrascals\nrase\nrased\nraser\nrasers\nrases\nrash\nrasher\nrashers\nrashes\nrashest\nrashlike\nrashly\nrashness\nrashnesses\nrasing\nrasorial\nrasp\nraspberries\nraspberry\nrasped\nrasper\nraspers\nraspier\nraspiest\nrasping\nraspingly\nraspish\nrasps\nraspy\nrassle\nrassled\nrassles\nrassling\nraster\nrasters\nrasure\nrasures\nrat\nratable\nratably\nratafee\nratafees\nratafia\nratafias\nratal\nratals\nratan\nratanies\nratans\nratany\nrataplan\nrataplanned\nrataplanning\nrataplans\nratatat\nratatats\nratch\nratches\nratchet\nratchets\nrate\nrateable\nrateably\nrated\nratel\nratels\nrater\nraters\nrates\nratfink\nratfinks\nratfish\nratfishes\nrath\nrathe\nrather\nrathole\nratholes\nrathskeller\nrathskellers\nraticide\nraticides\nratification\nratifications\nratified\nratifier\nratifiers\nratifies\nratify\nratifying\nratine\nratines\nrating\nratings\nratio\nratiocinate\nratiocinated\nratiocinates\nratiocinating\nratiocination\nratiocinations\nratiocinative\nratiocinator\nratiocinators\nration\nrational\nrationale\nrationales\nrationalism\nrationalist\nrationalistic\nrationalistically\nrationalists\nrationalities\nrationality\nrationalization\nrationalizations\nrationalize\nrationalized\nrationalizer\nrationalizers\nrationalizes\nrationalizing\nrationally\nrationalness\nrationals\nrationed\nrationing\nrations\nratios\nratite\nratites\nratlike\nratlin\nratline\nratlines\nratlins\nrato\nratoon\nratooned\nratooner\nratooners\nratooning\nratoons\nratos\nrats\nratsbane\nratsbanes\nrattail\nrattails\nrattan\nrattans\nratted\nratteen\nratteens\nratten\nrattened\nrattener\nratteners\nrattening\nrattens\nratter\nratters\nrattier\nrattiest\nratting\nrattish\nrattle\nrattled\nrattler\nrattlers\nrattles\nrattlesnake\nrattlesnakes\nrattletrap\nrattletraps\nrattling\nrattlings\nrattly\nratton\nrattons\nrattoon\nrattooned\nrattooning\nrattoons\nrattrap\nrattraps\nratty\nraucities\nraucity\nraucous\nraucously\nraucousness\nraunchier\nraunchiest\nraunchy\nravage\nravaged\nravagement\nravagements\nravager\nravagers\nravages\nravaging\nrave\nraved\nravel\nraveled\nraveler\nravelers\nravelin\nraveling\nravelings\nravelins\nravelled\nraveller\nravellers\nravelling\nravellings\nravelly\nravels\nraven\nravened\nravener\nraveners\nravening\nravenings\nravenous\nravenously\nravenousness\nravens\nraver\nravers\nraves\nravigote\nravigotes\nravin\nravine\nravined\nravines\nraving\nravingly\nravings\nravining\nravins\nravioli\nraviolis\nravish\nravished\nravisher\nravishers\nravishes\nravishing\nravishment\nravishments\nraw\nrawboned\nrawer\nrawest\nrawhide\nrawhided\nrawhides\nrawhiding\nrawin\nrawish\nrawly\nrawness\nrawnesses\nraws\nrax\nraxed\nraxes\nraxing\nray\nraya\nrayah\nrayahs\nrayas\nrayed\nraygrass\nraygrasses\nraying\nrayless\nrayon\nrayons\nrays\nraze\nrazed\nrazee\nrazeed\nrazeeing\nrazees\nrazer\nrazers\nrazes\nrazing\nrazor\nrazored\nrazoring\nrazors\nrazz\nrazzed\nrazzes\nrazzing\nre\nreabsorb\nreabsorbed\nreabsorbing\nreabsorbs\nreaccede\nreacceded\nreaccedes\nreacceding\nreaccent\nreaccented\nreaccenting\nreaccents\nreaccept\nreaccepted\nreaccepting\nreaccepts\nreaccuse\nreaccused\nreaccuses\nreaccusing\nreach\nreachable\nreached\nreacher\nreachers\nreaches\nreaching\nreacquaint\nreacquainted\nreacquainting\nreacquaints\nreact\nreactance\nreactances\nreactant\nreactants\nreacted\nreacting\nreaction\nreactionaries\nreactionary\nreactions\nreactivate\nreactivated\nreactivates\nreactivating\nreactivation\nreactivations\nreactive\nreactively\nreactiveness\nreactivity\nreactor\nreactors\nreacts\nread\nreadability\nreadable\nreadableness\nreadably\nreadapt\nreadapted\nreadapting\nreadapts\nreadd\nreadded\nreaddict\nreaddicted\nreaddicting\nreaddicts\nreadding\nreadds\nreader\nreaders\nreadership\nreaderships\nreadied\nreadier\nreadies\nreadiest\nreadily\nreadiness\nreading\nreadings\nreadjust\nreadjustable\nreadjusted\nreadjusting\nreadjustment\nreadjustments\nreadjusts\nreadmit\nreadmits\nreadmitted\nreadmitting\nreadopt\nreadopted\nreadopting\nreadopts\nreadorn\nreadorned\nreadorning\nreadorns\nreadout\nreadouts\nreads\nready\nreadying\nreaffirm\nreaffirmation\nreaffirmations\nreaffirmed\nreaffirming\nreaffirms\nreaffix\nreaffixed\nreaffixes\nreaffixing\nreagent\nreagents\nreagin\nreaginic\nreagins\nreal\nrealer\nreales\nrealest\nrealgar\nrealgars\nrealia\nrealign\nrealigned\nrealigning\nrealignment\nrealignments\nrealigns\nrealise\nrealised\nrealiser\nrealisers\nrealises\nrealising\nrealism\nrealisms\nrealist\nrealistic\nrealistically\nrealists\nrealities\nreality\nrealizable\nrealization\nrealizations\nrealize\nrealized\nrealizer\nrealizers\nrealizes\nrealizing\nreallocate\nreallocated\nreallocates\nreallocating\nreallocation\nreallocations\nreallot\nreallots\nreallotted\nreallotting\nreally\nrealm\nrealms\nrealness\nrealnesses\nreals\nrealter\nrealtered\nrealtering\nrealters\nrealties\nrealty\nream\nreamed\nreamer\nreamers\nreaming\nreams\nreanimate\nreanimated\nreanimates\nreanimating\nreanimation\nreanimations\nreannex\nreannexed\nreannexes\nreannexing\nreanoint\nreanointed\nreanointing\nreanoints\nreap\nreapable\nreaped\nreaper\nreapers\nreaphook\nreaphooks\nreaping\nreappear\nreappearance\nreappearances\nreappeared\nreappearing\nreappears\nreapplied\nreapplies\nreapply\nreapplying\nreappoint\nreappointed\nreappointing\nreappointment\nreappointments\nreappoints\nreapportion\nreapportioned\nreapportioning\nreapportionment\nreapportionments\nreapportions\nreappraisal\nreappraisals\nreappraise\nreappraised\nreappraises\nreappraising\nreapprove\nreapproved\nreapproves\nreapproving\nreaps\nrear\nreared\nrearer\nrearers\nreargue\nreargued\nreargues\nrearguing\nrearing\nrearm\nrearmament\nrearmaments\nrearmed\nrearmice\nrearming\nrearmost\nrearms\nrearouse\nrearoused\nrearouses\nrearousing\nrearrange\nrearranged\nrearrangement\nrearrangements\nrearranges\nrearranging\nrearrest\nrearrested\nrearresting\nrearrests\nrears\nrearward\nrearwards\nreascend\nreascended\nreascending\nreascends\nreascent\nreascents\nreason\nreasonability\nreasonable\nreasonableness\nreasonably\nreasoned\nreasoner\nreasoners\nreasoning\nreasonings\nreasonless\nreasonlessly\nreasons\nreassail\nreassailed\nreassailing\nreassails\nreassert\nreasserted\nreasserting\nreasserts\nreassess\nreassessed\nreassesses\nreassessing\nreassessment\nreassessments\nreassign\nreassigned\nreassigning\nreassignment\nreassignments\nreassigns\nreassort\nreassorted\nreassorting\nreassorts\nreassume\nreassumed\nreassumes\nreassuming\nreassurance\nreassurances\nreassure\nreassured\nreassures\nreassuring\nreassuringly\nreata\nreatas\nreattach\nreattached\nreattaches\nreattaching\nreattack\nreattacked\nreattacking\nreattacks\nreattain\nreattained\nreattaining\nreattains\nreave\nreaved\nreaver\nreavers\nreaves\nreaving\nreavow\nreavowed\nreavowing\nreavows\nreawake\nreawaked\nreawaken\nreawakened\nreawakening\nreawakens\nreawakes\nreawaking\nreawoke\nreawoken\nreb\nrebait\nrebaited\nrebaiting\nrebaits\nrebate\nrebated\nrebater\nrebaters\nrebates\nrebating\nrebato\nrebatos\nrebbe\nrebbes\nrebec\nrebeck\nrebecks\nrebecs\nrebel\nrebeldom\nrebeldoms\nrebelled\nrebelling\nrebellion\nrebellions\nrebellious\nrebelliously\nrebelliousness\nrebels\nrebid\nrebidden\nrebidding\nrebids\nrebill\nrebilled\nrebilling\nrebills\nrebind\nrebinding\nrebinds\nrebirth\nrebirths\nrebloom\nrebloomed\nreblooming\nreblooms\nreboant\nreboard\nreboarded\nreboarding\nreboards\nreboil\nreboiled\nreboiling\nreboils\nrebop\nrebops\nreborn\nrebound\nrebounded\nrebounding\nrebounds\nrebozo\nrebozos\nrebranch\nrebranched\nrebranches\nrebranching\nrebroadcast\nrebroadcasted\nrebroadcasting\nrebroadcasts\nrebs\nrebuff\nrebuffed\nrebuffing\nrebuffs\nrebuild\nrebuilded\nrebuilding\nrebuilds\nrebuilt\nrebuke\nrebuked\nrebuker\nrebukers\nrebukes\nrebuking\nreburial\nreburials\nreburied\nreburies\nrebury\nreburying\nrebus\nrebuses\nrebut\nrebuts\nrebuttable\nrebuttal\nrebuttals\nrebutted\nrebutter\nrebutters\nrebutting\nrebutton\nrebuttoned\nrebuttoning\nrebuttons\nrebuy\nrec\nrecalcitrance\nrecalcitrancy\nrecalcitrant\nrecalcitrants\nrecalculate\nrecalculated\nrecalculates\nrecalculating\nrecall\nrecallable\nrecalled\nrecaller\nrecallers\nrecalling\nrecalls\nrecane\nrecaned\nrecanes\nrecaning\nrecant\nrecantation\nrecantations\nrecanted\nrecanter\nrecanters\nrecanting\nrecants\nrecap\nrecapitalization\nrecapitalizations\nrecapitalize\nrecapitalized\nrecapitalizes\nrecapitalizing\nrecapitulate\nrecapitulated\nrecapitulates\nrecapitulating\nrecapitulation\nrecapitulations\nrecappable\nrecapped\nrecapping\nrecaps\nrecapture\nrecaptured\nrecaptures\nrecapturing\nrecarried\nrecarries\nrecarry\nrecarrying\nrecast\nrecasting\nrecasts\nrecede\nreceded\nrecedes\nreceding\nreceipt\nreceipted\nreceipting\nreceipts\nreceivable\nreceivables\nreceive\nreceived\nreceiver\nreceivers\nreceivership\nreceiverships\nreceives\nreceiving\nrecencies\nrecency\nrecension\nrecensions\nrecent\nrecenter\nrecentest\nrecently\nrecentness\nrecept\nreceptacle\nreceptacles\nreception\nreceptionist\nreceptionists\nreceptions\nreceptive\nreceptively\nreceptiveness\nreceptivity\nreceptor\nreceptors\nrecepts\nrecertification\nrecertifications\nrecertified\nrecertifies\nrecertify\nrecertifying\nrecess\nrecessed\nrecesses\nrecessing\nrecession\nrecessional\nrecessionals\nrecessions\nrecessive\nrecessively\nrecessiveness\nrecessives\nrechange\nrechanged\nrechanges\nrechanging\nrecharge\nrechargeable\nrecharged\nrecharges\nrecharging\nrechart\nrecharted\nrecharting\nrecharts\nrecheat\nrecheats\nrecheck\nrechecked\nrechecking\nrechecks\nrecherche\nrechoose\nrechooses\nrechoosing\nrechose\nrechosen\nrecidivism\nrecidivisms\nrecidivist\nrecidivistic\nrecidivists\nrecipe\nrecipes\nrecipient\nrecipients\nreciprocal\nreciprocally\nreciprocals\nreciprocate\nreciprocated\nreciprocates\nreciprocating\nreciprocation\nreciprocations\nreciprocative\nreciprocator\nreciprocators\nreciprocities\nreciprocity\nrecircle\nrecircled\nrecircles\nrecircling\nrecision\nrecisions\nrecital\nrecitalist\nrecitalists\nrecitals\nrecitation\nrecitations\nrecite\nrecited\nreciter\nreciters\nrecites\nreciting\nreck\nrecked\nrecking\nreckless\nrecklessly\nrecklessness\nreckon\nreckoned\nreckoner\nreckoners\nreckoning\nreckonings\nreckons\nrecks\nreclad\nreclaim\nreclaimable\nreclaimed\nreclaiming\nreclaims\nreclamation\nreclamations\nreclame\nreclames\nreclasp\nreclasped\nreclasping\nreclasps\nreclassification\nreclassifications\nreclassified\nreclassifies\nreclassify\nreclassifying\nreclean\nrecleaned\nrecleaning\nrecleans\nrecline\nreclined\nrecliner\nrecliners\nreclines\nreclining\nreclothe\nreclothed\nreclothes\nreclothing\nrecluse\nrecluses\nreclusion\nreclusive\nrecoal\nrecoaled\nrecoaling\nrecoals\nrecock\nrecocked\nrecocking\nrecocks\nrecodified\nrecodifies\nrecodify\nrecodifying\nrecognition\nrecognitions\nrecognizability\nrecognizable\nrecognizably\nrecognizance\nrecognizances\nrecognize\nrecognized\nrecognizes\nrecognizing\nrecoil\nrecoiled\nrecoiler\nrecoilers\nrecoiling\nrecoilless\nrecoils\nrecoin\nrecoined\nrecoining\nrecoins\nrecollect\nrecollected\nrecollecting\nrecollection\nrecollections\nrecollects\nrecolor\nrecolored\nrecoloring\nrecolors\nrecomb\nrecombed\nrecombinant\nrecombinants\nrecombination\nrecombinations\nrecombine\nrecombined\nrecombines\nrecombing\nrecombining\nrecombs\nrecommence\nrecommenced\nrecommences\nrecommencing\nrecommend\nrecommendable\nrecommendation\nrecommendations\nrecommendatory\nrecommended\nrecommending\nrecommends\nrecommit\nrecommitment\nrecommitments\nrecommits\nrecommittal\nrecommittals\nrecommitted\nrecommitting\nrecompense\nrecompensed\nrecompenses\nrecompensing\nrecompute\nrecomputed\nrecomputes\nrecomputing\nrecon\nreconceive\nreconceived\nreconceives\nreconceiving\nreconcilability\nreconcilable\nreconcile\nreconciled\nreconcilement\nreconcilements\nreconciles\nreconciliation\nreconciliations\nreconciling\nrecondite\nreconditely\nreconditeness\nrecondition\nreconditioned\nreconditioning\nreconditions\nreconnaissance\nreconnaissances\nreconnoiter\nreconnoitered\nreconnoitering\nreconnoiters\nreconnoitre\nreconnoitred\nreconnoitres\nreconnoitring\nrecons\nreconsider\nreconsideration\nreconsiderations\nreconsidered\nreconsidering\nreconsiders\nreconstitute\nreconstituted\nreconstitutes\nreconstituting\nreconstitution\nreconstitutions\nreconstruct\nreconstructed\nreconstructible\nreconstructing\nreconstruction\nreconstructionism\nreconstructions\nreconstructive\nreconstructor\nreconstructors\nreconstructs\nreconvene\nreconvened\nreconvenes\nreconvening\nreconversion\nreconversions\nreconvert\nreconverted\nreconverting\nreconverts\nreconvey\nreconveyed\nreconveying\nreconveys\nrecook\nrecooked\nrecooking\nrecooks\nrecopied\nrecopies\nrecopy\nrecopying\nrecord\nrecordable\nrecordation\nrecordations\nrecorded\nrecorder\nrecorders\nrecording\nrecordings\nrecordist\nrecordists\nrecords\nrecount\nrecounted\nrecounting\nrecounts\nrecoup\nrecoupable\nrecoupe\nrecouped\nrecouping\nrecouple\nrecoupled\nrecouples\nrecoupling\nrecoups\nrecourse\nrecourses\nrecover\nrecoverable\nrecovered\nrecoveries\nrecovering\nrecovers\nrecovery\nrecrate\nrecrated\nrecrates\nrecrating\nrecreant\nrecreants\nrecreate\nrecreated\nrecreates\nrecreating\nrecreation\nrecreational\nrecreations\nrecreative\nrecriminate\nrecriminated\nrecriminates\nrecriminating\nrecrimination\nrecriminations\nrecriminative\nrecriminatory\nrecross\nrecrossed\nrecrosses\nrecrossing\nrecrown\nrecrowned\nrecrowning\nrecrowns\nrecrudescence\nrecrudescences\nrecruit\nrecruited\nrecruiter\nrecruiters\nrecruiting\nrecruitment\nrecruitments\nrecruits\nrecs\nrecta\nrectal\nrectally\nrectangle\nrectangles\nrectangular\nrectangularities\nrectangularity\nrectangularly\nrecti\nrectifiable\nrectification\nrectifications\nrectified\nrectifier\nrectifiers\nrectifies\nrectify\nrectifying\nrectilinear\nrectilinearly\nrectitude\nrectitudes\nrecto\nrector\nrectorate\nrectorates\nrectories\nrectors\nrectory\nrectos\nrectrices\nrectrix\nrectum\nrectums\nrectus\nrecumbency\nrecumbent\nrecuperate\nrecuperated\nrecuperates\nrecuperating\nrecuperation\nrecuperations\nrecuperative\nrecur\nrecurred\nrecurrence\nrecurrences\nrecurrent\nrecurrently\nrecurring\nrecurs\nrecursion\nrecursions\nrecursive\nrecursively\nrecursiveness\nrecurve\nrecurved\nrecurves\nrecurving\nrecusant\nrecusants\nrecuse\nrecused\nrecuses\nrecusing\nrecut\nrecuts\nrecutting\nrecyclable\nrecycle\nrecycled\nrecycles\nrecycling\nred\nredact\nredacted\nredacting\nredaction\nredactional\nredactions\nredactor\nredactors\nredacts\nredan\nredans\nredargue\nredargued\nredargues\nredarguing\nredate\nredated\nredates\nredating\nredbait\nredbaited\nredbaiting\nredbaits\nredbay\nredbays\nredbird\nredbirds\nredbone\nredbones\nredbreast\nredbreasts\nredbrick\nredbud\nredbuds\nredbug\nredbugs\nredcap\nredcaps\nredcoat\nredcoats\nredd\nredded\nredden\nreddened\nreddening\nreddens\nredder\nredders\nreddest\nredding\nreddish\nreddishness\nreddle\nreddled\nreddles\nreddling\nredds\nrede\nredear\nredears\nredecorate\nredecorated\nredecorates\nredecorating\nredecoration\nredecorations\nreded\nrededicate\nrededicated\nrededicates\nrededicating\nrededication\nredeem\nredeemable\nredeemed\nredeemer\nredeemers\nredeeming\nredeems\nredefeat\nredefeated\nredefeating\nredefeats\nredefied\nredefies\nredefine\nredefined\nredefines\nredefining\nredefinition\nredefinitions\nredefy\nredefying\nredemand\nredemanded\nredemanding\nredemands\nredemption\nredemptional\nredemptions\nredemptive\nredemptory\nredenied\nredenies\nredeny\nredenying\nredeploy\nredeployed\nredeploying\nredeployment\nredeployments\nredeploys\nredes\nredesign\nredesigned\nredesigning\nredesigns\nredevelop\nredeveloped\nredeveloper\nredevelopers\nredeveloping\nredevelopment\nredevelopments\nredevelops\nredeye\nredeyes\nredfin\nredfins\nredfish\nredfishes\nredhead\nredheaded\nredheads\nredhorse\nredhorses\nredia\nrediae\nredial\nredias\nredid\nredigest\nredigested\nredigesting\nredigests\nreding\nredip\nredipped\nredipping\nredips\nredipt\nredirect\nredirected\nredirecting\nredirection\nredirections\nredirects\nrediscover\nrediscovered\nrediscovering\nrediscovers\nrediscovery\nredistribute\nredistributed\nredistributes\nredistributing\nredistribution\nredistributions\nredistributive\nredistrict\nredistricted\nredistricting\nredistricts\nredivide\nredivided\nredivides\nredividing\nredleg\nredlegs\nredly\nredneck\nrednecks\nredness\nrednesses\nredo\nredock\nredocked\nredocking\nredocks\nredoes\nredoing\nredolence\nredolent\nredolently\nredon\nredone\nredos\nredouble\nredoubled\nredoubles\nredoubling\nredoubt\nredoubtable\nredoubtably\nredoubts\nredound\nredounded\nredounding\nredounds\nredout\nredouts\nredowa\nredowas\nredox\nredoxes\nredpoll\nredpolls\nredraft\nredrafted\nredrafting\nredrafts\nredraw\nredrawer\nredrawers\nredrawing\nredrawn\nredraws\nredress\nredressed\nredresses\nredressing\nredrew\nredried\nredries\nredrill\nredrilled\nredrilling\nredrills\nredrive\nredriven\nredrives\nredriving\nredroot\nredroots\nredrove\nredry\nredrying\nreds\nredshank\nredshanks\nredshirt\nredshirted\nredshirting\nredshirts\nredskin\nredskins\nredstart\nredstarts\nredtop\nredtops\nredub\nreduce\nreduced\nreducer\nreducers\nreduces\nreducibility\nreducible\nreducibly\nreducing\nreduction\nreductional\nreductions\nreductive\nredundancies\nredundancy\nredundant\nredundantly\nreduplicate\nreduplicated\nreduplicates\nreduplicating\nreduplication\nreduplications\nreduplicative\nreduviid\nreduviids\nredux\nredware\nredwares\nredwing\nredwings\nredwood\nredwoods\nredye\nredyed\nredyeing\nredyes\nree\nreearn\nreearned\nreearning\nreearns\nreecho\nreechoed\nreechoes\nreechoing\nreed\nreedbird\nreedbirds\nreedbuck\nreedbucks\nreeded\nreedier\nreediest\nreedified\nreedifies\nreedify\nreedifying\nreeding\nreedings\nreedit\nreedited\nreediting\nreedits\nreedling\nreedlings\nreeds\nreeducate\nreeducated\nreeducates\nreeducating\nreeducation\nreeducations\nreedy\nreef\nreefed\nreefer\nreefers\nreefier\nreefiest\nreefing\nreefs\nreefy\nreeject\nreejected\nreejecting\nreejects\nreek\nreeked\nreeker\nreekers\nreekier\nreekiest\nreeking\nreeks\nreeky\nreel\nreelable\nreelect\nreelected\nreelecting\nreelection\nreelections\nreelects\nreeled\nreeler\nreelers\nreeling\nreels\nreembark\nreembarked\nreembarking\nreembarks\nreembodied\nreembodies\nreembody\nreembodying\nreemerge\nreemerged\nreemergence\nreemergences\nreemerges\nreemerging\nreemit\nreemits\nreemitted\nreemitting\nreemphasize\nreemphasized\nreemphasizes\nreemphasizing\nreemploy\nreemployed\nreemploying\nreemploys\nreenact\nreenacted\nreenacting\nreenactment\nreenactments\nreenacts\nreendow\nreendowed\nreendowing\nreendows\nreengage\nreengaged\nreengages\nreengaging\nreenjoy\nreenjoyed\nreenjoying\nreenjoys\nreenlist\nreenlisted\nreenlisting\nreenlistment\nreenlistments\nreenlists\nreenter\nreentered\nreentering\nreenters\nreentrance\nreentrances\nreentrant\nreentrants\nreentries\nreentry\nreequip\nreequipped\nreequipping\nreequips\nreerect\nreerected\nreerecting\nreerects\nrees\nreest\nreestablish\nreestablished\nreestablishes\nreestablishing\nreestablishment\nreestablishments\nreested\nreesting\nreests\nreevaluate\nreevaluated\nreevaluates\nreevaluating\nreevaluation\nreevaluations\nreeve\nreeved\nreeves\nreeving\nreevoke\nreevoked\nreevokes\nreevoking\nreexamination\nreexaminations\nreexamine\nreexamined\nreexamines\nreexamining\nreexpel\nreexpelled\nreexpelling\nreexpels\nreexperience\nreexperienced\nreexperiences\nreexperiencing\nreexport\nreexportation\nreexportations\nreexported\nreexporting\nreexports\nref\nreface\nrefaced\nrefaces\nrefacing\nrefall\nrefallen\nrefalling\nrefalls\nrefasten\nrefastened\nrefastening\nrefastens\nrefect\nrefected\nrefecting\nrefection\nrefections\nrefectories\nrefectory\nrefects\nrefed\nrefeed\nrefeeding\nrefeeds\nrefel\nrefell\nrefelled\nrefelling\nrefels\nrefer\nreferable\nreferee\nrefereed\nrefereeing\nreferees\nreference\nreferenced\nreferences\nreferencing\nreferenda\nreferendum\nreferendums\nreferent\nreferential\nreferentially\nreferents\nreferral\nreferrals\nreferred\nreferrer\nreferrers\nreferring\nrefers\nreffed\nreffing\nrefight\nrefighting\nrefights\nrefigure\nrefigured\nrefigures\nrefiguring\nrefile\nrefiled\nrefiles\nrefiling\nrefill\nrefillable\nrefilled\nrefilling\nrefills\nrefilm\nrefilmed\nrefilming\nrefilms\nrefilter\nrefiltered\nrefiltering\nrefilters\nrefinance\nrefinanced\nrefinances\nrefinancing\nrefind\nrefinding\nrefinds\nrefine\nrefined\nrefinement\nrefinements\nrefiner\nrefineries\nrefiners\nrefinery\nrefines\nrefining\nrefinish\nrefinished\nrefinishes\nrefinishing\nrefire\nrefired\nrefires\nrefiring\nrefit\nrefits\nrefitted\nrefitting\nrefix\nrefixed\nrefixes\nrefixing\nreflate\nreflated\nreflates\nreflating\nreflation\nreflations\nreflect\nreflectance\nreflected\nreflecting\nreflection\nreflectional\nreflections\nreflective\nreflectively\nreflectiveness\nreflector\nreflectors\nreflects\nreflet\nreflets\nreflew\nreflex\nreflexed\nreflexes\nreflexing\nreflexive\nreflexively\nreflexiveness\nreflexives\nreflexivity\nreflexly\nreflies\nrefloat\nrefloated\nrefloating\nrefloats\nreflood\nreflooded\nreflooding\nrefloods\nreflow\nreflowed\nreflower\nreflowered\nreflowering\nreflowers\nreflowing\nreflown\nreflows\nrefluent\nreflux\nrefluxed\nrefluxes\nrefluxing\nrefly\nreflying\nrefocus\nrefocused\nrefocuses\nrefocusing\nrefocussed\nrefocusses\nrefocussing\nrefold\nrefolded\nrefolding\nrefolds\nreforest\nreforestation\nreforestations\nreforested\nreforesting\nreforests\nreforge\nreforged\nreforges\nreforging\nreform\nreformable\nreformat\nreformation\nreformational\nreformations\nreformative\nreformatories\nreformatory\nreformats\nreformatted\nreformatting\nreformed\nreformer\nreformers\nreforming\nreformism\nreformisms\nreformist\nreformists\nreforms\nreformulate\nreformulated\nreformulates\nreformulating\nreformulation\nreformulations\nrefought\nrefound\nrefounded\nrefounding\nrefounds\nrefract\nrefracted\nrefracting\nrefraction\nrefractions\nrefractive\nrefractively\nrefractivity\nrefractor\nrefractories\nrefractorily\nrefractors\nrefractory\nrefracts\nrefrain\nrefrained\nrefraining\nrefrains\nreframe\nreframed\nreframes\nreframing\nrefrangibility\nrefrangible\nrefrangibleness\nrefreeze\nrefreezes\nrefreezing\nrefresh\nrefreshed\nrefreshen\nrefreshened\nrefreshening\nrefreshens\nrefresher\nrefreshers\nrefreshes\nrefreshing\nrefreshingly\nrefreshment\nrefreshments\nrefried\nrefries\nrefrigerant\nrefrigerants\nrefrigerate\nrefrigerated\nrefrigerates\nrefrigerating\nrefrigeration\nrefrigerations\nrefrigerator\nrefrigerators\nrefront\nrefronted\nrefronting\nrefronts\nrefroze\nrefrozen\nrefry\nrefrying\nrefs\nreft\nrefuel\nrefueled\nrefueling\nrefuelled\nrefuelling\nrefuels\nrefuge\nrefuged\nrefugee\nrefugeeism\nrefugees\nrefuges\nrefugia\nrefuging\nrefugium\nrefulgence\nrefulgent\nrefund\nrefundable\nrefunded\nrefunder\nrefunders\nrefunding\nrefunds\nrefurbish\nrefurbished\nrefurbishes\nrefurbishing\nrefurbishment\nrefurbishments\nrefusal\nrefusals\nrefuse\nrefused\nrefuser\nrefusers\nrefuses\nrefusing\nrefutable\nrefutably\nrefutal\nrefutals\nrefutation\nrefutations\nrefute\nrefuted\nrefuter\nrefuters\nrefutes\nrefuting\nreg\nregain\nregained\nregainer\nregainers\nregaining\nregains\nregal\nregale\nregaled\nregales\nregalia\nregaling\nregalities\nregality\nregally\nregard\nregarded\nregardful\nregarding\nregardless\nregardlessly\nregards\nregather\nregathered\nregathering\nregathers\nregatta\nregattas\nregauge\nregauged\nregauges\nregauging\nregave\nregear\nregeared\nregearing\nregears\nregelate\nregelated\nregelates\nregelating\nregencies\nregency\nregenerate\nregenerated\nregenerates\nregenerating\nregeneration\nregenerations\nregenerative\nregenerator\nregenerators\nregent\nregental\nregents\nreges\nregicide\nregicides\nregild\nregilded\nregilding\nregilds\nregilt\nregime\nregimen\nregimens\nregiment\nregimental\nregimentals\nregimentation\nregimentations\nregimented\nregimenting\nregiments\nregimes\nregina\nreginae\nreginal\nreginas\nregion\nregional\nregionalism\nregionalisms\nregionalist\nregionalistic\nregionalists\nregionalize\nregionalized\nregionalizes\nregionalizing\nregionally\nregionals\nregions\nregister\nregistered\nregistering\nregisters\nregistrable\nregistrant\nregistrants\nregistrar\nregistrars\nregistration\nregistrations\nregistries\nregistry\nregius\nregive\nregiven\nregives\nregiving\nreglaze\nreglazed\nreglazes\nreglazing\nreglet\nreglets\nregloss\nreglossed\nreglosses\nreglossing\nreglow\nreglowed\nreglowing\nreglows\nreglue\nreglued\nreglues\nregluing\nregma\nregmata\nregna\nregnal\nregnancies\nregnancy\nregnant\nregnum\nregolith\nregoliths\nregorge\nregorged\nregorges\nregorging\nregosol\nregosols\nregrade\nregraded\nregrades\nregrading\nregraft\nregrafted\nregrafting\nregrafts\nregrant\nregranted\nregranting\nregrants\nregrate\nregrated\nregrates\nregrating\nregreet\nregreeted\nregreeting\nregreets\nregress\nregressed\nregresses\nregressing\nregression\nregressions\nregressive\nregressively\nregressor\nregressors\nregret\nregretful\nregretfully\nregretfulness\nregrets\nregrettable\nregrettably\nregretted\nregretting\nregrew\nregrind\nregrinding\nregrinds\nregroove\nregrooved\nregrooves\nregrooving\nreground\nregroup\nregrouped\nregrouping\nregroups\nregrow\nregrowing\nregrown\nregrows\nregrowth\nregrowths\nregs\nregular\nregularities\nregularity\nregularization\nregularizations\nregularize\nregularized\nregularizes\nregularizing\nregularly\nregulars\nregulate\nregulated\nregulates\nregulating\nregulation\nregulations\nregulative\nregulator\nregulators\nregulatory\nreguli\nreguline\nregulus\nreguluses\nregurgitate\nregurgitated\nregurgitates\nregurgitating\nregurgitation\nregurgitations\nrehab\nrehabilitate\nrehabilitated\nrehabilitates\nrehabilitating\nrehabilitation\nrehabilitations\nrehabilitative\nrehammer\nrehammered\nrehammering\nrehammers\nrehandle\nrehandled\nrehandles\nrehandling\nrehang\nrehanged\nrehanging\nrehangs\nreharden\nrehardened\nrehardening\nrehardens\nrehash\nrehashed\nrehashes\nrehashing\nrehear\nreheard\nrehearing\nrehearings\nrehears\nrehearsal\nrehearsals\nrehearse\nrehearsed\nrehearses\nrehearsing\nreheat\nreheated\nreheater\nreheaters\nreheating\nreheats\nreheel\nreheeled\nreheeling\nreheels\nrehem\nrehemmed\nrehemming\nrehems\nrehinge\nrehinged\nrehinges\nrehinging\nrehire\nrehired\nrehires\nrehiring\nrehouse\nrehoused\nrehouses\nrehousing\nrehung\nrei\nreif\nreified\nreifier\nreifiers\nreifies\nreifs\nreify\nreifying\nreign\nreigned\nreigning\nreignite\nreignited\nreignites\nreigniting\nreigns\nreimage\nreimaged\nreimages\nreimaging\nreimbursable\nreimburse\nreimbursed\nreimbursement\nreimbursements\nreimburses\nreimbursing\nreimport\nreimported\nreimporting\nreimports\nreimpose\nreimposed\nreimposes\nreimposing\nrein\nreincarnate\nreincarnated\nreincarnates\nreincarnating\nreincarnation\nreincarnations\nreincite\nreincited\nreincites\nreinciting\nreincorporate\nreincorporated\nreincorporates\nreincorporating\nreincur\nreincurred\nreincurring\nreincurs\nreindeer\nreindeers\nreindex\nreindexed\nreindexes\nreindexing\nreinduce\nreinduced\nreinduces\nreinducing\nreinduct\nreinducted\nreinducting\nreinducts\nreined\nreinfect\nreinfected\nreinfecting\nreinfects\nreinforce\nreinforced\nreinforcement\nreinforcements\nreinforcer\nreinforcers\nreinforces\nreinforcing\nreinform\nreinformed\nreinforming\nreinforms\nreinfuse\nreinfused\nreinfuses\nreinfusing\nreining\nreinjure\nreinjured\nreinjures\nreinjuring\nreink\nreinless\nreins\nreinsert\nreinserted\nreinserting\nreinsertion\nreinsertions\nreinserts\nreinsman\nreinsmen\nreinstall\nreinstallation\nreinstallations\nreinstalled\nreinstalling\nreinstalls\nreinstate\nreinstated\nreinstatement\nreinstatements\nreinstates\nreinstating\nreinstitute\nreinstituted\nreinstitutes\nreinstituting\nreinsure\nreinsured\nreinsures\nreinsuring\nreinter\nreinterred\nreinterring\nreinters\nreintroduce\nreintroduced\nreintroduces\nreintroducing\nreinvent\nreinvented\nreinventing\nreinvents\nreinvest\nreinvested\nreinvesting\nreinvestment\nreinvestments\nreinvests\nreinvite\nreinvited\nreinvites\nreinviting\nreinvoke\nreinvoked\nreinvokes\nreinvoking\nreis\nreissue\nreissued\nreissuer\nreissuers\nreissues\nreissuing\nreitbok\nreitboks\nreiterate\nreiterated\nreiterates\nreiterating\nreiteration\nreiterations\nreiterative\nreive\nreived\nreiver\nreivers\nreives\nreiving\nreject\nrejected\nrejectee\nrejectees\nrejecter\nrejecters\nrejecting\nrejection\nrejections\nrejective\nrejector\nrejectors\nrejects\nrejigger\nrejiggered\nrejiggering\nrejiggers\nrejoice\nrejoiced\nrejoicer\nrejoicers\nrejoices\nrejoicing\nrejoicingly\nrejoicings\nrejoin\nrejoinder\nrejoinders\nrejoined\nrejoining\nrejoins\nrejudge\nrejudged\nrejudges\nrejudging\nrejuvenate\nrejuvenated\nrejuvenates\nrejuvenating\nrejuvenation\nrejuvenations\nrekey\nrekeyed\nrekeying\nrekeys\nrekindle\nrekindled\nrekindles\nrekindling\nreknit\nreknits\nreknitted\nreknitting\nrelabel\nrelabeled\nrelabeling\nrelabelled\nrelabelling\nrelabels\nrelace\nrelaced\nrelaces\nrelacing\nrelaid\nrelapse\nrelapsed\nrelapser\nrelapsers\nrelapses\nrelapsing\nrelatable\nrelate\nrelated\nrelatedness\nrelater\nrelaters\nrelates\nrelating\nrelation\nrelational\nrelations\nrelationship\nrelationships\nrelative\nrelatively\nrelativeness\nrelatives\nrelativism\nrelativist\nrelativistic\nrelativists\nrelativities\nrelativity\nrelator\nrelators\nrelaunch\nrelaunched\nrelaunches\nrelaunching\nrelax\nrelaxant\nrelaxants\nrelaxation\nrelaxations\nrelaxed\nrelaxedly\nrelaxedness\nrelaxer\nrelaxers\nrelaxes\nrelaxin\nrelaxing\nrelaxins\nrelay\nrelayed\nrelaying\nrelays\nrelearn\nrelearned\nrelearning\nrelearns\nrelearnt\nrelease\nreleased\nreleaser\nreleasers\nreleases\nreleasing\nrelegate\nrelegated\nrelegates\nrelegating\nrelegation\nrelegations\nrelend\nrelending\nrelends\nrelent\nrelented\nrelenting\nrelentless\nrelentlessly\nrelentlessness\nrelents\nrelet\nrelets\nreletter\nrelettered\nrelettering\nreletters\nreletting\nrelevance\nrelevances\nrelevancies\nrelevancy\nrelevant\nrelevantly\nreliability\nreliable\nreliableness\nreliably\nreliance\nreliances\nreliant\nreliantly\nrelic\nrelics\nrelict\nrelicts\nrelied\nrelief\nreliefs\nrelier\nreliers\nrelies\nrelievable\nrelieve\nrelieved\nrelievedly\nreliever\nrelievers\nrelieves\nrelieving\nrelievo\nrelievos\nrelight\nrelighted\nrelighting\nrelights\nreligion\nreligionist\nreligionists\nreligions\nreligiose\nreligiosity\nreligious\nreligiously\nreligiousness\nreline\nrelined\nrelines\nrelining\nrelinquish\nrelinquished\nrelinquishes\nrelinquishing\nrelinquishment\nrelinquishments\nreliquaries\nreliquary\nrelique\nreliques\nrelish\nrelishable\nrelished\nrelishes\nrelishing\nrelist\nrelisted\nrelisting\nrelists\nrelit\nrelive\nrelived\nrelives\nreliving\nreload\nreloaded\nreloader\nreloaders\nreloading\nreloads\nreloan\nreloaned\nreloaning\nreloans\nrelocate\nrelocated\nrelocates\nrelocating\nrelocation\nrelocations\nrelucent\nreluct\nreluctance\nreluctances\nreluctancies\nreluctancy\nreluctant\nreluctantly\nrelucted\nrelucting\nrelucts\nrelume\nrelumed\nrelumes\nrelumine\nrelumined\nrelumines\nreluming\nrelumining\nrely\nrelying\nrem\nremade\nremail\nremailed\nremailing\nremails\nremain\nremainder\nremainders\nremained\nremaining\nremains\nremake\nremakes\nremaking\nreman\nremand\nremanded\nremanding\nremands\nremanent\nremanned\nremanning\nremans\nremap\nremapped\nremapping\nremaps\nremark\nremarkable\nremarkableness\nremarkably\nremarked\nremarker\nremarkers\nremarking\nremarks\nremarque\nremarques\nremarriage\nremarriages\nremarried\nremarries\nremarry\nremarrying\nrematch\nrematched\nrematches\nrematching\nremediable\nremedial\nremedially\nremedied\nremedies\nremedy\nremedying\nremeet\nremeeting\nremeets\nremelt\nremelted\nremelting\nremelts\nremember\nremembered\nremembering\nremembers\nremembrance\nremembrances\nremend\nremended\nremending\nremends\nremerge\nremerged\nremerges\nremerging\nremet\nremex\nremiges\nremigial\nremind\nreminded\nreminder\nreminders\nremindful\nreminding\nreminds\nreminisce\nreminisced\nreminiscence\nreminiscences\nreminiscent\nreminiscently\nreminisces\nreminiscing\nremint\nreminted\nreminting\nremints\nremise\nremised\nremises\nremising\nremiss\nremissible\nremission\nremissions\nremissly\nremissness\nremit\nremits\nremittable\nremittal\nremittals\nremittance\nremittances\nremitted\nremittence\nremittent\nremitter\nremitters\nremitting\nremittor\nremittors\nremix\nremixed\nremixes\nremixing\nremixt\nremnant\nremnants\nremodel\nremodeled\nremodeling\nremodelled\nremodelling\nremodels\nremodified\nremodifies\nremodify\nremodifying\nremolade\nremolades\nremold\nremolded\nremolding\nremolds\nremonstrance\nremonstrances\nremonstrant\nremonstrantly\nremonstrants\nremonstrate\nremonstrated\nremonstrates\nremonstrating\nremonstration\nremonstrations\nremonstrative\nremonstratively\nremonstrator\nremonstrators\nremora\nremoras\nremorid\nremorse\nremorseful\nremorsefully\nremorsefulness\nremorseless\nremorselessly\nremorselessness\nremorses\nremote\nremotely\nremoteness\nremoter\nremotest\nremotion\nremotions\nremount\nremounted\nremounting\nremounts\nremovability\nremovable\nremovableness\nremovably\nremoval\nremovals\nremove\nremoved\nremover\nremovers\nremoves\nremoving\nrems\nremuda\nremudas\nremunerate\nremunerated\nremunerates\nremunerating\nremuneration\nremunerations\nremunerative\nremuneratively\nremunerativeness\nremuneratory\nrenaissance\nrenaissances\nrenal\nrename\nrenamed\nrenames\nrenaming\nrenascence\nrenascences\nrenascent\nrenature\nrenatured\nrenatures\nrenaturing\nrend\nrended\nrender\nrenderable\nrendered\nrenderer\nrenderers\nrendering\nrenderings\nrenders\nrendezvous\nrendezvoused\nrendezvousing\nrendible\nrending\nrendition\nrenditions\nrends\nrendzina\nrendzinas\nrenegade\nrenegaded\nrenegades\nrenegading\nrenegado\nrenegadoes\nrenegados\nrenege\nreneged\nreneger\nrenegers\nreneges\nreneging\nrenegotiable\nrenegotiate\nrenegotiated\nrenegotiates\nrenegotiating\nrenegotiation\nrenegotiations\nrenew\nrenewability\nrenewable\nrenewably\nrenewal\nrenewals\nrenewed\nrenewer\nrenewers\nrenewing\nrenews\nreniform\nrenig\nrenigged\nrenigging\nrenigs\nrenin\nrenins\nrenitent\nrennase\nrennases\nrennet\nrennets\nrennin\nrennins\nrenogram\nrenograms\nrenotified\nrenotifies\nrenotify\nrenotifying\nrenounce\nrenounced\nrenouncement\nrenouncements\nrenounces\nrenouncing\nrenovate\nrenovated\nrenovates\nrenovating\nrenovation\nrenovations\nrenovative\nrenovator\nrenovators\nrenown\nrenowned\nrenowning\nrenowns\nrent\nrentability\nrentable\nrental\nrentals\nrente\nrented\nrenter\nrenters\nrentes\nrentier\nrentiers\nrenting\nrents\nrenumber\nrenumbered\nrenumbering\nrenumbers\nrenunciation\nrenunciations\nrenunciative\nrenunciatory\nrenvoi\nrenvois\nreobject\nreobjected\nreobjecting\nreobjects\nreobtain\nreobtained\nreobtaining\nreobtains\nreoccupied\nreoccupies\nreoccupy\nreoccupying\nreoccur\nreoccurred\nreoccurrence\nreoccurrences\nreoccurring\nreoccurs\nreoffer\nreoffered\nreoffering\nreoffers\nreoil\nreoiled\nreoiling\nreoils\nreopen\nreopened\nreopening\nreopens\nreoppose\nreopposed\nreopposes\nreopposing\nreordain\nreordained\nreordaining\nreordains\nreorder\nreordered\nreordering\nreorders\nreorganization\nreorganizations\nreorganize\nreorganized\nreorganizer\nreorganizers\nreorganizes\nreorganizing\nreorient\nreoriented\nreorienting\nreorients\nreovirus\nreoviruses\nrep\nrepacified\nrepacifies\nrepacify\nrepacifying\nrepack\nrepacked\nrepacking\nrepacks\nrepaid\nrepaint\nrepainted\nrepainting\nrepaints\nrepair\nrepairability\nrepairable\nrepaired\nrepairer\nrepairers\nrepairing\nrepairman\nrepairmen\nrepairs\nrepand\nrepandly\nrepaper\nrepapered\nrepapering\nrepapers\nreparable\nreparation\nreparations\nreparative\nrepartee\nrepartees\nrepass\nrepassed\nrepasses\nrepassing\nrepast\nrepasted\nrepasting\nrepasts\nrepatriate\nrepatriated\nrepatriates\nrepatriating\nrepatriation\nrepatriations\nrepave\nrepaved\nrepaves\nrepaving\nrepay\nrepayable\nrepaying\nrepayment\nrepayments\nrepays\nrepeal\nrepealable\nrepealed\nrepealer\nrepealers\nrepealing\nrepeals\nrepeat\nrepeatability\nrepeatable\nrepeated\nrepeatedly\nrepeater\nrepeaters\nrepeating\nrepeats\nrepeg\nrepel\nrepellant\nrepellants\nrepelled\nrepellency\nrepellent\nrepellently\nrepellents\nrepeller\nrepellers\nrepelling\nrepels\nrepent\nrepentance\nrepentances\nrepentant\nrepentantly\nrepented\nrepenter\nrepenters\nrepenting\nrepents\nrepeople\nrepeopled\nrepeoples\nrepeopling\nrepercussion\nrepercussions\nrepercussive\nreperk\nreperked\nreperking\nreperks\nrepertoire\nrepertoires\nrepertories\nrepertory\nrepetend\nrepetends\nrepetition\nrepetitions\nrepetitious\nrepetitiously\nrepetitiousness\nrepetitive\nrepetitively\nrepetitiveness\nrephrase\nrephrased\nrephrases\nrephrasing\nrepin\nrepine\nrepined\nrepiner\nrepiners\nrepines\nrepining\nrepinned\nrepinning\nrepins\nreplace\nreplaceable\nreplaced\nreplacement\nreplacements\nreplacer\nreplacers\nreplaces\nreplacing\nreplan\nreplanned\nreplanning\nreplans\nreplant\nreplanted\nreplanting\nreplants\nreplate\nreplated\nreplates\nreplating\nreplay\nreplayed\nreplaying\nreplays\nrepledge\nrepledged\nrepledges\nrepledging\nreplenish\nreplenished\nreplenishes\nreplenishing\nreplenishment\nreplenishments\nreplete\nrepleteness\nrepletion\nrepletions\nreplevied\nreplevies\nreplevin\nreplevined\nreplevining\nreplevins\nreplevy\nreplevying\nreplica\nreplicas\nreplicate\nreplicated\nreplicates\nreplicating\nreplication\nreplications\nreplied\nreplier\nrepliers\nreplies\nreplunge\nreplunged\nreplunges\nreplunging\nreply\nreplying\nrepo\nrepolish\nrepolished\nrepolishes\nrepolishing\nreport\nreportable\nreportage\nreportages\nreported\nreportedly\nreporter\nreporters\nreporting\nreportorial\nreportorially\nreports\nrepos\nreposal\nreposals\nrepose\nreposed\nreposeful\nreposefully\nreposer\nreposers\nreposes\nreposing\nreposit\nreposited\nrepositing\nreposition\nrepositioned\nrepositioning\nrepositions\nrepositories\nrepository\nreposits\nrepossess\nrepossessed\nrepossesses\nrepossessing\nrepossession\nrepossessions\nrepossessor\nrepossessors\nrepot\nrepour\nrepoured\nrepouring\nrepours\nrepousse\nrepousses\nrepower\nrepowered\nrepowering\nrepowers\nrepp\nrepped\nrepps\nreprehend\nreprehended\nreprehending\nreprehends\nreprehensibility\nreprehensible\nreprehensibleness\nreprehensibly\nreprehension\nreprehensions\nreprehensive\nrepresent\nrepresentable\nrepresentation\nrepresentational\nrepresentationalism\nrepresentationalisms\nrepresentationalist\nrepresentationalists\nrepresentations\nrepresentative\nrepresentatively\nrepresentativeness\nrepresentatives\nrepresented\nrepresenting\nrepresents\nrepress\nrepressed\nrepresses\nrepressible\nrepressing\nrepression\nrepressions\nrepressive\nrepressively\nrepressiveness\nrepressor\nrepressors\nreprice\nrepriced\nreprices\nrepricing\nreprieve\nreprieved\nreprieves\nreprieving\nreprimand\nreprimanded\nreprimanding\nreprimands\nreprint\nreprinted\nreprinter\nreprinters\nreprinting\nreprints\nreprisal\nreprisals\nreprise\nreprised\nreprises\nreprising\nrepro\nreproach\nreproachable\nreproached\nreproaches\nreproachful\nreproachfully\nreproachfulness\nreproaching\nreproachingly\nreprobate\nreprobated\nreprobates\nreprobating\nreprobation\nreprobations\nreprobative\nreprobe\nreprobed\nreprobes\nreprobing\nreprocess\nreprocessed\nreprocesses\nreprocessing\nreproduce\nreproduced\nreproducer\nreproducers\nreproduces\nreproducibilities\nreproducibility\nreproducible\nreproducing\nreproduction\nreproductions\nreproductive\nreproductively\nreprogram\nreprogrammed\nreprogramming\nreprograms\nreprographics\nreproof\nreproofs\nrepros\nreproval\nreprovals\nreprove\nreproved\nreprover\nreprovers\nreproves\nreproving\nreprovingly\nreps\nreptant\nreptile\nreptiles\nreptilian\nreptilians\nrepublic\nrepublican\nrepublicanism\nrepublicanize\nrepublicanized\nrepublicanizes\nrepublicanizing\nrepublicans\nrepublics\nrepublish\nrepublished\nrepublishes\nrepublishing\nrepudiate\nrepudiated\nrepudiates\nrepudiating\nrepudiation\nrepudiations\nrepudiator\nrepudiators\nrepugn\nrepugnance\nrepugnances\nrepugnancies\nrepugnancy\nrepugnant\nrepugnantly\nrepugned\nrepugning\nrepugns\nrepulse\nrepulsed\nrepulser\nrepulsers\nrepulses\nrepulsing\nrepulsion\nrepulsions\nrepulsive\nrepulsively\nrepulsiveness\nrepurchase\nrepurchased\nrepurchases\nrepurchasing\nrepurified\nrepurifies\nrepurify\nrepurifying\nrepursue\nrepursued\nrepursues\nrepursuing\nreputability\nreputable\nreputably\nreputation\nreputations\nrepute\nreputed\nreputedly\nreputes\nreputing\nrequest\nrequested\nrequester\nrequesters\nrequesting\nrequestor\nrequestors\nrequests\nrequiem\nrequiems\nrequin\nrequins\nrequire\nrequired\nrequirement\nrequirements\nrequirer\nrequirers\nrequires\nrequiring\nrequisite\nrequisiteness\nrequisites\nrequisition\nrequisitioned\nrequisitioning\nrequisitions\nrequital\nrequitals\nrequite\nrequited\nrequiter\nrequiters\nrequites\nrequiting\nreran\nreread\nrereading\nrereads\nrerecord\nrerecorded\nrerecording\nrerecords\nreredos\nreredoses\nreremice\nrereward\nrerewards\nrerise\nrerisen\nrerises\nrerising\nreroll\nrerolled\nreroller\nrerollers\nrerolling\nrerolls\nrerose\nreroute\nrerouted\nreroutes\nrerouting\nrerun\nrerunning\nreruns\nres\nresaddle\nresaddled\nresaddles\nresaddling\nresaid\nresail\nresailed\nresailing\nresails\nresalable\nresale\nresales\nresalute\nresaluted\nresalutes\nresaluting\nresample\nresampled\nresamples\nresampling\nresaw\nresawed\nresawing\nresawn\nresaws\nresay\nresaying\nresays\nrescale\nrescaled\nrescales\nrescaling\nreschedule\nrescheduled\nreschedules\nrescheduling\nrescind\nrescinded\nrescinding\nrescindment\nrescindments\nrescinds\nrescission\nrescissions\nrescore\nrescored\nrescores\nrescoring\nrescreen\nrescreened\nrescreening\nrescreens\nrescript\nrescripts\nrescuable\nrescue\nrescued\nrescuer\nrescuers\nrescues\nrescuing\nreseal\nresealed\nresealing\nreseals\nresearch\nresearchable\nresearched\nresearcher\nresearchers\nresearches\nresearching\nresearchist\nresearchists\nreseat\nreseated\nreseating\nreseats\nreseau\nreseaus\nreseaux\nresect\nresected\nresecting\nresection\nresections\nresects\nreseda\nresedas\nresee\nreseed\nreseeded\nreseeding\nreseeds\nreseeing\nreseek\nreseeking\nreseeks\nreseen\nresees\nreseize\nreseized\nreseizes\nreseizing\nresell\nreseller\nresellers\nreselling\nresells\nresemblance\nresemblances\nresemble\nresembled\nresembles\nresembling\nresend\nresending\nresends\nresent\nresented\nresentful\nresentfully\nresentfulness\nresenting\nresentment\nresentments\nresents\nreservation\nreservations\nreserve\nreserved\nreservedly\nreservedness\nreserver\nreservers\nreserves\nreserving\nreservist\nreservists\nreservoir\nreservoirs\nreset\nresets\nresetter\nresetters\nresetting\nresettle\nresettled\nresettlement\nresettlements\nresettles\nresettling\nresew\nresewed\nresewing\nresewn\nresews\nresh\nreshape\nreshaped\nreshaper\nreshapers\nreshapes\nreshaping\nreshes\nreship\nreshipment\nreshipments\nreshipped\nreshipping\nreships\nreshod\nreshoe\nreshoeing\nreshoes\nreshoot\nreshooting\nreshoots\nreshot\nreshow\nreshowed\nreshowing\nreshown\nreshows\nreshuffle\nreshuffled\nreshuffles\nreshuffling\nresid\nreside\nresided\nresidence\nresidences\nresidencies\nresidency\nresident\nresidential\nresidentially\nresidents\nresider\nresiders\nresides\nresiding\nresids\nresidua\nresidual\nresidually\nresiduals\nresiduary\nresidue\nresidues\nresiduum\nresiduums\nresift\nresifted\nresifting\nresifts\nresign\nresignation\nresignations\nresigned\nresignedly\nresignedness\nresigner\nresigners\nresigning\nresigns\nresile\nresiled\nresiles\nresilience\nresiliences\nresiliencies\nresiliency\nresilient\nresiliently\nresiling\nresilver\nresilvered\nresilvering\nresilvers\nresin\nresinate\nresinated\nresinates\nresinating\nresined\nresinified\nresinifies\nresinify\nresinifying\nresining\nresinoid\nresinoids\nresinous\nresins\nresiny\nresist\nresistance\nresistances\nresistant\nresistants\nresisted\nresister\nresisters\nresistibilities\nresistibility\nresistible\nresisting\nresistive\nresistively\nresistiveness\nresistivity\nresistless\nresistlessly\nresistlessness\nresistor\nresistors\nresists\nresize\nresized\nresizes\nresizing\nresmelt\nresmelted\nresmelting\nresmelts\nresmooth\nresmoothed\nresmoothing\nresmooths\nresod\nresojet\nresojets\nresold\nresolder\nresoldered\nresoldering\nresolders\nresole\nresoled\nresoles\nresoling\nresolute\nresolutely\nresoluteness\nresoluter\nresolutes\nresolutest\nresolution\nresolutions\nresolvable\nresolve\nresolved\nresolvent\nresolver\nresolvers\nresolves\nresolving\nresonance\nresonances\nresonant\nresonantly\nresonants\nresonate\nresonated\nresonates\nresonating\nresonator\nresonators\nresorb\nresorbed\nresorbing\nresorbs\nresorcin\nresorcins\nresorption\nresort\nresorted\nresorter\nresorters\nresorting\nresorts\nresought\nresound\nresounded\nresounding\nresoundingly\nresounds\nresource\nresourceful\nresourcefully\nresourcefulness\nresources\nresow\nresowed\nresowing\nresown\nresows\nrespect\nrespectabilities\nrespectability\nrespectable\nrespectableness\nrespectably\nrespected\nrespecter\nrespecters\nrespectful\nrespectfully\nrespectfulness\nrespecting\nrespective\nrespectively\nrespectiveness\nrespects\nrespell\nrespelled\nrespelling\nrespells\nrespelt\nrespirable\nrespiration\nrespirations\nrespirator\nrespirators\nrespiratory\nrespire\nrespired\nrespires\nrespiring\nrespite\nrespited\nrespites\nrespiting\nresplendence\nresplendences\nresplendencies\nresplendency\nresplendent\nresplendently\nrespond\nresponded\nrespondent\nrespondents\nresponder\nresponders\nresponding\nresponds\nresponsa\nresponse\nresponses\nresponsibilities\nresponsibility\nresponsible\nresponsibleness\nresponsibly\nresponsions\nresponsive\nresponsively\nresponsiveness\nresponsories\nresponsory\nresprang\nrespread\nrespreading\nrespreads\nrespring\nrespringing\nresprings\nresprung\nrest\nrestack\nrestacked\nrestacking\nrestacks\nrestaff\nrestaffed\nrestaffing\nrestaffs\nrestage\nrestaged\nrestages\nrestaging\nrestamp\nrestamped\nrestamping\nrestamps\nrestart\nrestarted\nrestarting\nrestarts\nrestate\nrestated\nrestatement\nrestatements\nrestates\nrestating\nrestaurant\nrestaurants\nrestaurateur\nrestaurateurs\nrested\nrester\nresters\nrestful\nrestfuller\nrestfullest\nrestfully\nrestfulness\nresting\nrestitution\nrestitutions\nrestive\nrestively\nrestiveness\nrestless\nrestlessly\nrestlessness\nrestock\nrestocked\nrestocking\nrestocks\nrestorable\nrestoral\nrestorals\nrestoration\nrestorations\nrestorative\nrestoratives\nrestore\nrestored\nrestorer\nrestorers\nrestores\nrestoring\nrestrain\nrestrainable\nrestrained\nrestrainedly\nrestrainer\nrestrainers\nrestraining\nrestrains\nrestraint\nrestraints\nrestricken\nrestrict\nrestricted\nrestrictedly\nrestricting\nrestriction\nrestrictionist\nrestrictionists\nrestrictions\nrestrictive\nrestrictively\nrestrictiveness\nrestricts\nrestrike\nrestrikes\nrestriking\nrestring\nrestringing\nrestrings\nrestrive\nrestriven\nrestrives\nrestriving\nrestrove\nrestruck\nrestructure\nrestructured\nrestructures\nrestructuring\nrestrung\nrests\nrestudied\nrestudies\nrestudy\nrestudying\nrestuff\nrestuffed\nrestuffing\nrestuffs\nrestyle\nrestyled\nrestyles\nrestyling\nresubmit\nresubmits\nresubmitted\nresubmitting\nresult\nresultant\nresultants\nresulted\nresulting\nresults\nresume\nresumed\nresumer\nresumers\nresumes\nresuming\nresummon\nresummoned\nresummoning\nresummons\nresumption\nresumptions\nresupine\nresupplied\nresupplies\nresupply\nresupplying\nresurface\nresurfaced\nresurfaces\nresurfacing\nresurge\nresurged\nresurgence\nresurgences\nresurgent\nresurges\nresurging\nresurrect\nresurrected\nresurrecting\nresurrection\nresurrectional\nresurrectionist\nresurrectionists\nresurrections\nresurrects\nresurvey\nresurveyed\nresurveying\nresurveys\nresuscitate\nresuscitated\nresuscitates\nresuscitating\nresuscitation\nresuscitations\nresuscitative\nresuscitator\nresuscitators\nret\nretable\nretables\nretag\nretail\nretailed\nretailer\nretailers\nretailing\nretailor\nretailored\nretailoring\nretailors\nretails\nretain\nretained\nretainer\nretainers\nretaining\nretains\nretake\nretaken\nretaker\nretakers\nretakes\nretaking\nretaliate\nretaliated\nretaliates\nretaliating\nretaliation\nretaliations\nretaliative\nretaliatory\nretard\nretardant\nretardants\nretardate\nretardates\nretardation\nretardations\nretarded\nretarder\nretarders\nretarding\nretards\nretaste\nretasted\nretastes\nretasting\nretaught\nretax\nretch\nretched\nretches\nretching\nrete\nreteach\nreteaches\nreteaching\nretell\nretelling\nretells\nretem\nretems\nretene\nretenes\nretention\nretentions\nretentive\nretentively\nretentiveness\nretentivities\nretentivity\nretest\nretested\nretesting\nretests\nrethink\nrethinking\nrethinks\nrethought\nrethread\nrethreaded\nrethreading\nrethreads\nretia\nretial\nretiarii\nretiary\nreticence\nreticences\nreticencies\nreticency\nreticent\nreticently\nreticle\nreticles\nreticula\nreticular\nreticulate\nreticulated\nreticulately\nreticulates\nreticulating\nreticulation\nreticulations\nreticule\nreticules\nretie\nretied\nreties\nretiform\nretime\nretimed\nretimes\nretiming\nretina\nretinae\nretinal\nretinals\nretinas\nretinene\nretinenes\nretinite\nretinites\nretinol\nretinols\nretint\nretinted\nretinting\nretints\nretinue\nretinued\nretinues\nretinula\nretinulae\nretinulas\nretirant\nretirants\nretire\nretired\nretiredly\nretiredness\nretiree\nretirees\nretirement\nretirements\nretirer\nretirers\nretires\nretiring\nretiringly\nretitle\nretitled\nretitles\nretitling\nretold\nretook\nretool\nretooled\nretooling\nretools\nretort\nretorted\nretorter\nretorters\nretorting\nretortion\nretortions\nretorts\nretouch\nretouched\nretoucher\nretouchers\nretouches\nretouching\nretrace\nretraced\nretraces\nretracing\nretrack\nretracked\nretracking\nretracks\nretract\nretractable\nretracted\nretractile\nretractility\nretracting\nretraction\nretractions\nretractor\nretractors\nretracts\nretrain\nretrainable\nretrained\nretrainee\nretrainees\nretraining\nretrains\nretral\nretrally\nretread\nretreaded\nretreading\nretreads\nretreat\nretreated\nretreating\nretreats\nretrench\nretrenched\nretrenches\nretrenching\nretrenchment\nretrenchments\nretrial\nretrials\nretribution\nretributions\nretributive\nretributively\nretributory\nretried\nretries\nretrievable\nretrieval\nretrievals\nretrieve\nretrieved\nretriever\nretrievers\nretrieves\nretrieving\nretrim\nretrimmed\nretrimming\nretrims\nretro\nretroact\nretroacted\nretroacting\nretroaction\nretroactions\nretroactive\nretroactively\nretroacts\nretrocede\nretroceded\nretrocedes\nretroceding\nretrocession\nretrocessions\nretrofire\nretrofired\nretrofires\nretrofiring\nretrofit\nretrofits\nretrofitted\nretrofitting\nretrogradation\nretrogradations\nretrograde\nretrograded\nretrogradely\nretrogrades\nretrograding\nretrogress\nretrogressed\nretrogresses\nretrogressing\nretrogression\nretrogressions\nretrogressive\nretrogressively\nretrorse\nretrospect\nretrospected\nretrospecting\nretrospection\nretrospections\nretrospective\nretrospectively\nretrospects\nretrousse\nretry\nretrying\nrets\nretsina\nretsinas\nretted\nretting\nretune\nretuned\nretunes\nretuning\nreturn\nreturnable\nreturned\nreturnee\nreturnees\nreturner\nreturners\nreturning\nreturns\nretuse\nretwist\nretwisted\nretwisting\nretwists\nretying\nretype\nretyped\nretypes\nretyping\nreunified\nreunifies\nreunify\nreunifying\nreunion\nreunionist\nreunionistic\nreunionists\nreunions\nreunite\nreunited\nreuniter\nreuniters\nreunites\nreuniting\nreusability\nreusable\nreuse\nreused\nreuses\nreusing\nreutter\nreuttered\nreuttering\nreutters\nrev\nrevaluate\nrevaluated\nrevaluates\nrevaluating\nrevalue\nrevalued\nrevalues\nrevaluing\nrevamp\nrevamped\nrevamper\nrevampers\nrevamping\nrevamps\nrevanche\nrevanches\nreveal\nrevealable\nrevealed\nrevealer\nrevealers\nrevealing\nrevealingly\nrevealment\nrevealments\nreveals\nrevehent\nreveille\nreveilles\nrevel\nrevelation\nrevelations\nrevelator\nrevelators\nrevelatory\nreveled\nreveler\nrevelers\nreveling\nrevelled\nreveller\nrevellers\nrevelling\nrevelries\nrevelry\nrevels\nrevenant\nrevenants\nrevenge\nrevenged\nrevengeful\nrevengefully\nrevengefulness\nrevenger\nrevengers\nrevenges\nrevenging\nrevenual\nrevenue\nrevenued\nrevenuer\nrevenuers\nrevenues\nreverb\nreverberant\nreverberantly\nreverberate\nreverberated\nreverberates\nreverberating\nreverberation\nreverberations\nreverberative\nreverberatories\nreverberatory\nreverbs\nrevere\nrevered\nreverence\nreverenced\nreverencer\nreverencers\nreverences\nreverencing\nreverend\nreverends\nreverent\nreverential\nreverentially\nreverently\nreverer\nreverers\nreveres\nreverie\nreveries\nreverified\nreverifies\nreverify\nreverifying\nrevering\nrevers\nreversal\nreversals\nreverse\nreversed\nreversely\nreverser\nreversers\nreverses\nreversible\nreversibly\nreversing\nreversion\nreversional\nreversionary\nreversioner\nreversioners\nreversions\nreverso\nreversos\nrevert\nrevertant\nrevertants\nreverted\nreverter\nreverters\nrevertible\nreverting\nreverts\nrevery\nrevest\nrevested\nrevesting\nrevests\nrevet\nrevets\nrevetted\nrevetting\nreview\nreviewal\nreviewals\nreviewed\nreviewer\nreviewers\nreviewing\nreviews\nrevile\nreviled\nrevilement\nrevilements\nreviler\nrevilers\nreviles\nreviling\nrevisable\nrevisal\nrevisals\nrevise\nrevised\nreviser\nrevisers\nrevises\nrevising\nrevision\nrevisionary\nrevisionism\nrevisionisms\nrevisionist\nrevisionists\nrevisions\nrevisit\nrevisited\nrevisiting\nrevisits\nrevisor\nrevisors\nrevisory\nrevitalization\nrevitalizations\nrevitalize\nrevitalized\nrevitalizes\nrevitalizing\nrevivable\nrevival\nrevivalism\nrevivalisms\nrevivalist\nrevivalistic\nrevivalists\nrevivals\nrevive\nrevived\nreviver\nrevivers\nrevivification\nrevivifications\nrevivified\nrevivifies\nrevivify\nrevivifying\nreviving\nrevivives\nrevocable\nrevocation\nrevocations\nrevoice\nrevoiced\nrevoices\nrevoicing\nrevokable\nrevoke\nrevoked\nrevoker\nrevokers\nrevokes\nrevoking\nrevolt\nrevolted\nrevolter\nrevolters\nrevolting\nrevoltingly\nrevolts\nrevolute\nrevolution\nrevolutionaries\nrevolutionary\nrevolutionist\nrevolutionists\nrevolutionize\nrevolutionized\nrevolutionizer\nrevolutionizers\nrevolutionizes\nrevolutionizing\nrevolutions\nrevolvable\nrevolve\nrevolved\nrevolver\nrevolvers\nrevolves\nrevolving\nrevs\nrevue\nrevues\nrevuist\nrevuists\nrevulsed\nrevulsion\nrevulsions\nrevulsive\nrevved\nrevving\nrewake\nrewaked\nrewaken\nrewakened\nrewakening\nrewakens\nrewakes\nrewaking\nrewan\nrewany\nreward\nrewardable\nrewarded\nrewarder\nrewarders\nrewarding\nrewards\nrewarm\nrewarmed\nrewarming\nrewarms\nrewash\nrewashed\nrewashes\nrewashing\nrewax\nrewaxed\nrewaxes\nrewaxing\nreweave\nreweaved\nreweaves\nreweaving\nrewed\nreweigh\nreweighed\nreweighing\nreweighs\nreweld\nrewelded\nrewelding\nrewelds\nrewet\nrewiden\nrewidened\nrewidening\nrewidens\nrewin\nrewind\nrewinded\nrewinder\nrewinders\nrewinding\nrewinds\nrewinning\nrewins\nrewire\nrewired\nrewires\nrewiring\nrewoke\nrewoken\nrewon\nreword\nreworded\nrewording\nrewords\nrework\nreworked\nreworking\nreworks\nrewound\nrewove\nrewoven\nrewrap\nrewrapped\nrewrapping\nrewraps\nrewrapt\nrewrite\nrewriter\nrewriters\nrewrites\nrewriting\nrewritten\nrewrote\nrewrought\nrex\nrexes\nreynard\nreynards\nrezone\nrezoned\nrezones\nrezoning\nrhabdom\nrhabdome\nrhabdomes\nrhabdoms\nrhachides\nrhachis\nrhachises\nrhamnose\nrhamnoses\nrhamnus\nrhamnuses\nrhaphae\nrhaphe\nrhaphes\nrhapsode\nrhapsodes\nrhapsodic\nrhapsodical\nrhapsodically\nrhapsodies\nrhapsodist\nrhapsodists\nrhapsodize\nrhapsodized\nrhapsodizes\nrhapsodizing\nrhapsody\nrhatanies\nrhatany\nrhea\nrheas\nrhebok\nrheboks\nrhematic\nrhenium\nrheniums\nrheobase\nrheobases\nrheologies\nrheology\nrheophil\nrheostat\nrheostatic\nrheostats\nrhesus\nrhesuses\nrhetor\nrhetoric\nrhetorical\nrhetorically\nrhetorician\nrhetoricians\nrhetorics\nrhetors\nrheum\nrheumatic\nrheumatically\nrheumatics\nrheumatism\nrheumatisms\nrheumatoid\nrheumic\nrheumier\nrheumiest\nrheums\nrheumy\nrhinal\nrhinestone\nrhinestones\nrhinitides\nrhinitis\nrhino\nrhinoceri\nrhinoceros\nrhinoceroses\nrhinos\nrhizobia\nrhizoid\nrhizoids\nrhizoma\nrhizomata\nrhizome\nrhizomes\nrhizomic\nrhizopi\nrhizopod\nrhizopods\nrhizopus\nrhizopuses\nrho\nrhodamin\nrhodamins\nrhodic\nrhodium\nrhodiums\nrhodora\nrhodoras\nrhomb\nrhombi\nrhombic\nrhomboid\nrhomboidal\nrhomboids\nrhombs\nrhombus\nrhombuses\nrhonchal\nrhonchi\nrhonchus\nrhos\nrhubarb\nrhubarbs\nrhumb\nrhumba\nrhumbaed\nrhumbaing\nrhumbas\nrhumbs\nrhus\nrhuses\nrhyme\nrhymed\nrhymer\nrhymers\nrhymes\nrhymester\nrhymesters\nrhyming\nrhyolite\nrhyolites\nrhyta\nrhythm\nrhythmic\nrhythmical\nrhythmically\nrhythmicities\nrhythmicity\nrhythmics\nrhythmist\nrhythmists\nrhythms\nrhyton\nria\nrial\nrials\nrialto\nrialtos\nriant\nriantly\nrias\nriata\nriatas\nrib\nribald\nribaldly\nribaldries\nribaldry\nribalds\nriband\nribands\nribband\nribbands\nribbed\nribber\nribbers\nribbier\nribbiest\nribbing\nribbings\nribbon\nribboned\nribboning\nribbonlike\nribbons\nribbony\nribby\nribes\nribgrass\nribgrasses\nribless\nriblet\nriblets\nriblike\nriboflavin\nribose\nriboses\nribosome\nribosomes\nribs\nribwort\nribworts\nrice\nricebird\nricebirds\nriced\nricer\nricercar\nricercars\nricers\nrices\nrich\nrichen\nrichened\nrichening\nrichens\nricher\nriches\nrichest\nrichly\nrichness\nrichnesses\nrichweed\nrichweeds\nricin\nricing\nricins\nricinus\nricinuses\nrick\nricked\nricketier\nricketiest\nrickets\nrickettsia\nrickettsiae\nrickettsias\nrickety\nrickey\nrickeys\nricking\nrickrack\nrickracks\nricks\nricksha\nrickshas\nrickshaw\nrickshaws\nricochet\nricocheted\nricocheting\nricochets\nricochetted\nricochetting\nricotta\nricottas\nricrac\nricracs\nrictal\nrictus\nrictuses\nrid\nridable\nriddance\nriddances\nridded\nridden\nridder\nridders\nridding\nriddle\nriddled\nriddler\nriddlers\nriddles\nriddling\nride\nrideable\nrident\nrider\nriderless\nriders\nridership\nrides\nridge\nridged\nridgel\nridgels\nridgepole\nridgepoles\nridges\nridgier\nridgiest\nridgil\nridgils\nridging\nridgling\nridglings\nridgy\nridicule\nridiculed\nridiculer\nridiculers\nridicules\nridiculing\nridiculous\nridiculously\nridiculousness\nriding\nridings\nridley\nridleys\nridotto\nridottos\nrids\nriel\nriels\nries\nriever\nrievers\nrif\nrife\nrifely\nrifeness\nrifenesses\nrifer\nrifest\nriff\nriffed\nriffing\nriffle\nriffled\nriffler\nrifflers\nriffles\nriffling\nriffraff\nriffraffs\nriffs\nrifle\nrifled\nrifleman\nriflemen\nrifler\nrifleries\nriflers\nriflery\nrifles\nrifling\nriflings\nrifs\nrift\nrifted\nrifting\nriftless\nrifts\nrig\nrigadoon\nrigadoons\nrigatoni\nrigatonis\nrigaudon\nrigaudons\nrigged\nrigger\nriggers\nrigging\nriggings\nright\nrightangle\nrightangles\nrighted\nrighteous\nrighteously\nrighteousness\nrighter\nrighters\nrightest\nrightful\nrightfully\nrightfulness\nrighties\nrighting\nrightism\nrightisms\nrightist\nrightists\nrightly\nrightness\nrighto\nrights\nrightward\nrighty\nrigid\nrigidified\nrigidifies\nrigidify\nrigidifying\nrigidities\nrigidity\nrigidly\nrigidness\nrigmarole\nrigmaroles\nrigor\nrigorism\nrigorisms\nrigorist\nrigorists\nrigorous\nrigorously\nrigorousness\nrigors\nrigour\nrigours\nrigs\nrikisha\nrikishas\nrikshaw\nrikshaws\nrile\nriled\nriles\nriley\nrilievi\nrilievo\nriling\nrill\nrille\nrilled\nrilles\nrillet\nrillets\nrilling\nrills\nrim\nrime\nrimed\nrimer\nrimers\nrimes\nrimester\nrimesters\nrimfire\nrimier\nrimiest\nriming\nrimland\nrimlands\nrimless\nrimmed\nrimmer\nrimmers\nrimming\nrimose\nrimosely\nrimosities\nrimosity\nrimous\nrimple\nrimpled\nrimples\nrimpling\nrimrock\nrimrocks\nrims\nrimy\nrin\nrind\nrinded\nrinds\nring\nringbark\nringbarked\nringbarking\nringbarks\nringbolt\nringbolts\nringbone\nringbones\nringdove\nringdoves\nringed\nringent\nringer\nringers\nringhals\nringhalses\nringing\nringleader\nringleaders\nringlet\nringlets\nringlike\nringmaster\nringmasters\nringneck\nringnecks\nrings\nringside\nringsides\nringtail\nringtails\nringtaw\nringtaws\nringtoss\nringtosses\nringworm\nringworms\nrink\nrinks\nrinning\nrins\nrinsable\nrinse\nrinsed\nrinser\nrinsers\nrinses\nrinsible\nrinsing\nrinsings\nrioja\nriot\nrioted\nrioter\nrioters\nrioting\nriotous\nriotously\nriotousness\nriots\nrip\nriparian\nripcord\nripcords\nripe\nriped\nripely\nripen\nripened\nripener\nripeners\nripeness\nripenesses\nripening\nripens\nriper\nripes\nripest\nripieni\nripieno\nripienos\nriping\nripost\nriposte\nriposted\nripostes\nriposting\nriposts\nrippable\nripped\nripper\nrippers\nripping\nripple\nrippled\nrippler\nripplers\nripples\nripplet\nripplets\nripplier\nrippliest\nrippling\nripply\nriprap\nriprapped\nriprapping\nripraps\nrips\nripsaw\nripsaws\nriptide\nriptides\nrise\nrisen\nriser\nrisers\nrises\nrishi\nrishis\nrisibilities\nrisibility\nrisible\nrisibles\nrisibly\nrising\nrisings\nrisk\nrisked\nrisker\nriskers\nriskier\nriskiest\nriskily\nriskiness\nrisking\nrisks\nrisky\nrisotto\nrisottos\nrisque\nrissole\nrissoles\nrisus\nrisuses\nritard\nritards\nrite\nrites\nritter\nritters\nritual\nritualism\nritualist\nritualistic\nritualistically\nritualists\nritualize\nritualized\nritualizes\nritualizing\nritually\nrituals\nritz\nritzes\nritzier\nritziest\nritzily\nritzy\nrivage\nrivages\nrival\nrivaled\nrivaling\nrivalled\nrivalling\nrivalries\nrivalrous\nrivalry\nrivals\nrive\nrived\nriven\nriver\nriverbed\nriverbeds\nriverine\nrivers\nriverside\nriversides\nrives\nrivet\nriveted\nriveter\nriveters\nriveting\nrivets\nrivetted\nrivetting\nriviera\nrivieras\nriviere\nrivieres\nriving\nrivulet\nrivulets\nriyal\nriyals\nroach\nroached\nroaches\nroaching\nroad\nroadability\nroadbed\nroadbeds\nroadblock\nroadblocked\nroadblocking\nroadblocks\nroadhouse\nroadhouses\nroadless\nroads\nroadside\nroadsides\nroadstead\nroadsteads\nroadster\nroadsters\nroadway\nroadways\nroadwork\nroadworks\nroam\nroamed\nroamer\nroamers\nroaming\nroams\nroan\nroans\nroar\nroared\nroarer\nroarers\nroaring\nroaringly\nroarings\nroars\nroast\nroasted\nroaster\nroasters\nroasting\nroasts\nrob\nrobalo\nrobalos\nroband\nrobands\nrobbed\nrobber\nrobberies\nrobbers\nrobbery\nrobbin\nrobbing\nrobbins\nrobe\nrobed\nrobes\nrobin\nrobing\nrobins\nroble\nrobles\nroborant\nroborants\nrobot\nrobotics\nrobotism\nrobotisms\nrobotize\nrobotized\nrobotizes\nrobotizing\nrobotries\nrobotry\nrobots\nrobs\nrobust\nrobuster\nrobustest\nrobustly\nrobustness\nroc\nrochet\nrochets\nrock\nrockabies\nrockaby\nrockabye\nrockabyes\nrockaway\nrockaways\nrocked\nrocker\nrockeries\nrockers\nrockery\nrocket\nrocketed\nrocketeer\nrocketeers\nrocketer\nrocketers\nrocketing\nrocketlike\nrocketries\nrocketry\nrockets\nrockfall\nrockfalls\nrockfish\nrockfishes\nrockier\nrockiest\nrockiness\nrocking\nrockless\nrocklike\nrockling\nrocklings\nrockoon\nrockoons\nrockrose\nrockroses\nrocks\nrockweed\nrockweeds\nrockwork\nrockworks\nrocky\nrococo\nrococos\nrocs\nrod\nrodded\nrodding\nrode\nrodent\nrodents\nrodeo\nrodeos\nrodless\nrodlike\nrodman\nrodmen\nrods\nrodsman\nrodsmen\nroe\nroebuck\nroebucks\nroentgen\nroentgenogram\nroentgenograms\nroentgenographic\nroentgenographically\nroentgenography\nroentgenologic\nroentgenological\nroentgenologically\nroentgenologist\nroentgenologists\nroentgenology\nroentgens\nroes\nrogation\nrogations\nrogatory\nroger\nrogers\nrogue\nrogued\nrogueing\nrogueries\nroguery\nrogues\nroguing\nroguish\nroguishly\nroguishness\nroil\nroiled\nroilier\nroiliest\nroiling\nroils\nroily\nroister\nroistered\nroistering\nroisterous\nroisterously\nroisters\nrolamite\nrolamites\nrole\nroles\nroll\nrollaway\nrollback\nrollbacks\nrolled\nroller\nrollers\nrollick\nrollicked\nrollicking\nrollicks\nrollicky\nrolling\nrollings\nrollmop\nrollmops\nrollout\nrollouts\nrollover\nrollovers\nrolls\nrolltop\nrollway\nrollways\nrom\nromaine\nromaines\nroman\nromance\nromanced\nromancer\nromancers\nromances\nromancing\nromanize\nromanized\nromanizes\nromanizing\nromano\nromanos\nromans\nromantic\nromantically\nromanticism\nromanticist\nromanticists\nromanticization\nromanticizations\nromanticize\nromanticized\nromanticizes\nromanticizing\nromantics\nromaunt\nromaunts\nromeo\nromp\nromped\nromper\nrompers\nromping\nrompish\nromps\nroms\nrondeau\nrondeaux\nrondel\nrondelet\nrondelets\nrondelle\nrondelles\nrondels\nrondo\nrondos\nrondure\nrondures\nronion\nronions\nronnel\nronnels\nrontgen\nrontgens\nronyon\nronyons\nrood\nroods\nroof\nroofed\nroofer\nroofers\nroofing\nroofings\nroofless\nrooflike\nroofline\nrooflines\nroofs\nrooftop\nrooftops\nrooftree\nrooftrees\nrook\nrooked\nrookeries\nrookery\nrookie\nrookier\nrookies\nrookiest\nrooking\nrooks\nrooky\nroom\nroomed\nroomer\nroomers\nroomette\nroomettes\nroomful\nroomfuls\nroomier\nroomiest\nroomily\nroominess\nrooming\nroommate\nroommates\nrooms\nroomy\nroorback\nroorbacks\nroose\nroosed\nrooser\nroosers\nrooses\nroosing\nroost\nroosted\nrooster\nroosters\nroosting\nroosts\nroot\nrootage\nrootages\nrooted\nrooter\nrooters\nroothold\nrootholds\nrootier\nrootiest\nrooting\nrootless\nrootlessness\nrootlet\nrootlets\nrootlike\nroots\nrootstock\nrooty\nropable\nrope\nroped\nroper\nroperies\nropers\nropery\nropes\nropewalk\nropewalks\nropeway\nropeways\nropey\nropier\nropiest\nropily\nropiness\nropinesses\nroping\nropy\nroque\nroques\nroquet\nroqueted\nroqueting\nroquets\nrorqual\nrorquals\nrosaria\nrosarian\nrosarians\nrosaries\nrosarium\nrosariums\nrosary\nroscoe\nroscoes\nrose\nroseate\nrosebay\nrosebays\nrosebud\nrosebuds\nrosebush\nrosebushes\nrosed\nrosefish\nrosefishes\nroselike\nroselle\nroselles\nrosemaries\nrosemary\nroseola\nroseolar\nroseolas\nroseries\nroseroot\nroseroots\nrosery\nroses\nroset\nrosets\nrosette\nrosettes\nrosewood\nrosewoods\nrosier\nrosiest\nrosily\nrosin\nrosined\nrosiness\nrosinesses\nrosing\nrosining\nrosinous\nrosins\nrosiny\nrosolio\nrosolios\nrostella\nroster\nrosters\nrostra\nrostral\nrostrate\nrostrum\nrostrums\nrosulate\nrosy\nrot\nrota\nrotaries\nrotary\nrotas\nrotatable\nrotate\nrotated\nrotates\nrotating\nrotation\nrotational\nrotations\nrotative\nrotatively\nrotator\nrotatores\nrotators\nrotatory\nrotch\nrotche\nrotches\nrote\nrotenone\nrotenones\nrotes\nrotgut\nrotguts\nrotifer\nrotifers\nrotiform\nrotisserie\nrotisseries\nrotl\nrotls\nroto\nrotogravure\nrotogravures\nrotor\nrotors\nrotos\nrototill\nrototilled\nrototilling\nrototills\nrots\nrotte\nrotted\nrotten\nrottener\nrottenest\nrottenly\nrottenness\nrotter\nrotters\nrotting\nrotund\nrotunda\nrotundas\nrotundities\nrotundity\nrotundly\nrotundness\nroturier\nroturiers\nrouble\nroubles\nrouche\nrouches\nroue\nrouen\nrouens\nroues\nrouge\nrouged\nrouges\nrough\nroughage\nroughages\nroughcast\nroughcasting\nroughcasts\nroughdried\nroughdries\nroughdry\nroughdrying\nroughed\nroughen\nroughened\nroughening\nroughens\nrougher\nroughers\nroughest\nroughhew\nroughhewed\nroughhewing\nroughhewn\nroughhews\nroughhouse\nroughhoused\nroughhouses\nroughhousing\nroughing\nroughish\nroughleg\nroughlegs\nroughly\nroughness\nroughs\nrouging\nroulade\nroulades\nrouleau\nrouleaus\nrouleaux\nroulette\nrouletted\nroulettes\nrouletting\nround\nroundabout\nrounded\nroundedness\nroundel\nroundelay\nroundelays\nroundels\nrounder\nrounders\nroundest\nroundhouse\nroundhouses\nrounding\nroundish\nroundlet\nroundlets\nroundly\nroundness\nrounds\nroundup\nroundups\nroundworm\nroundworms\nroup\nrouped\nroupet\nroupier\nroupiest\nroupily\nrouping\nroups\nroupy\nrouse\nroused\nrouser\nrousers\nrouses\nrousing\nrousingly\nrousseau\nrousseaus\nroust\nroustabout\nroustabouts\nrousted\nrouster\nrousters\nrousting\nrousts\nrout\nroute\nrouted\nrouteman\nroutemen\nrouter\nrouters\nroutes\nrouteway\nrouteways\nrouth\nrouths\nroutine\nroutinely\nroutines\nrouting\nroutinize\nroutinized\nroutinizes\nroutinizing\nrouts\nroux\nrove\nroved\nroven\nrover\nrovers\nroves\nroving\nrovingly\nrovings\nrow\nrowable\nrowan\nrowans\nrowboat\nrowboats\nrowdier\nrowdies\nrowdiest\nrowdily\nrowdy\nrowdyish\nrowdyism\nrowdyisms\nrowed\nrowel\nroweled\nroweling\nrowelled\nrowelling\nrowels\nrowen\nrowens\nrower\nrowers\nrowing\nrowings\nrowlock\nrowlocks\nrows\nrowth\nrowths\nroyal\nroyalism\nroyalisms\nroyalist\nroyalists\nroyally\nroyals\nroyalties\nroyalty\nroyster\nroystered\nroystering\nroysters\nrozzer\nrozzers\nruana\nrub\nrubaboo\nrubaboos\nrubace\nrubaces\nrubaiyat\nrubasse\nrubasses\nrubato\nrubatos\nrubbaboo\nrubbaboos\nrubbed\nrubber\nrubberize\nrubberized\nrubberizes\nrubberizing\nrubberlike\nrubberneck\nrubbernecked\nrubbernecking\nrubbernecks\nrubbers\nrubbery\nrubbing\nrubbings\nrubbish\nrubbishes\nrubbishy\nrubble\nrubbled\nrubbles\nrubblier\nrubbliest\nrubbling\nrubbly\nrubdown\nrubdowns\nrube\nrubella\nrubellas\nrubeola\nrubeolar\nrubeolas\nrubes\nrubicund\nrubicundity\nrubidic\nrubidium\nrubidiums\nrubied\nrubier\nrubies\nrubiest\nrubigo\nrubigos\nrubious\nruble\nrubles\nrubric\nrubrical\nrubrically\nrubricate\nrubricated\nrubricates\nrubricating\nrubrication\nrubrications\nrubricator\nrubricators\nrubrics\nrubs\nrubus\nruby\nrubying\nrubylike\nruche\nruches\nruching\nruchings\nruck\nrucked\nrucking\nrucks\nrucksack\nrucksacks\nruckus\nruckuses\nruction\nructions\nructious\nrudd\nrudder\nrudderless\nrudders\nruddier\nruddiest\nruddily\nruddiness\nruddle\nruddled\nruddles\nruddling\nruddock\nruddocks\nrudds\nruddy\nrude\nrudely\nrudeness\nrudenesses\nruder\nruderal\nruderals\nrudesbies\nrudesby\nrudest\nrudiment\nrudimental\nrudimentary\nrudiments\nrue\nrued\nrueful\nruefully\nruefulness\nruer\nruers\nrues\nruff\nruffe\nruffed\nruffes\nruffian\nruffianism\nruffianisms\nruffianly\nruffians\nruffing\nruffle\nruffled\nruffler\nrufflers\nruffles\nrufflike\nruffling\nruffly\nruffs\nrufous\nrug\nruga\nrugae\nrugal\nrugate\nrugbies\nrugby\nrugged\nruggeder\nruggedest\nruggedly\nruggedness\nrugger\nruggers\nrugging\nruglike\nrugose\nrugosely\nrugosities\nrugosity\nrugous\nrugs\nrugulose\nruin\nruinable\nruinate\nruinated\nruinates\nruinating\nruination\nruinations\nruined\nruiner\nruiners\nruing\nruining\nruinous\nruinously\nruinousness\nruins\nrulable\nrule\nruled\nruleless\nruler\nrulers\nrules\nruling\nrulings\nrum\nrumba\nrumbaed\nrumbaing\nrumbas\nrumble\nrumbled\nrumbler\nrumblers\nrumbles\nrumbling\nrumblings\nrumbly\nrumen\nrumens\nrumina\nruminal\nruminant\nruminantly\nruminants\nruminate\nruminated\nruminates\nruminating\nrumination\nruminations\nruminative\nruminatively\nruminator\nruminators\nrummage\nrummaged\nrummager\nrummagers\nrummages\nrummaging\nrummer\nrummers\nrummest\nrummier\nrummies\nrummiest\nrummy\nrumor\nrumored\nrumoring\nrumors\nrumour\nrumoured\nrumouring\nrumours\nrump\nrumple\nrumpled\nrumples\nrumpless\nrumplier\nrumpliest\nrumpling\nrumply\nrumps\nrumpus\nrumpuses\nrums\nrun\nrunabout\nrunabouts\nrunagate\nrunagates\nrunaround\nrunarounds\nrunaway\nrunaways\nrunback\nrunbacks\nrundle\nrundles\nrundlet\nrundlets\nrundown\nrundowns\nrune\nrunelike\nrunes\nrung\nrungless\nrungs\nrunic\nrunkle\nrunkled\nrunkles\nrunkling\nrunless\nrunlet\nrunlets\nrunnel\nrunnels\nrunner\nrunners\nrunnier\nrunniest\nrunning\nrunnings\nrunny\nrunoff\nrunoffs\nrunout\nrunouts\nrunover\nrunovers\nrunround\nrunrounds\nruns\nrunt\nruntier\nruntiest\nruntiness\nruntish\nrunts\nrunty\nrunway\nrunways\nrupee\nrupees\nrupiah\nrupiahs\nrupture\nruptured\nruptures\nrupturing\nrural\nruralise\nruralised\nruralises\nruralising\nruralism\nruralisms\nruralist\nruralists\nruralite\nruralites\nruralities\nrurality\nruralize\nruralized\nruralizes\nruralizing\nrurally\nrurban\nruse\nruses\nrush\nrushed\nrushee\nrushees\nrusher\nrushers\nrushes\nrushier\nrushiest\nrushing\nrushings\nrushlike\nrushy\nrusine\nrusk\nrusks\nrusset\nrussets\nrussety\nrussified\nrussifies\nrussify\nrussifying\nrust\nrustable\nrusted\nrustic\nrustical\nrustically\nrusticate\nrusticated\nrusticates\nrusticating\nrustication\nrustications\nrusticator\nrusticators\nrusticities\nrusticity\nrusticly\nrustics\nrustier\nrustiest\nrustily\nrustiness\nrusting\nrustle\nrustled\nrustler\nrustlers\nrustles\nrustless\nrustling\nrustproof\nrusts\nrusty\nrut\nrutabaga\nrutabagas\nruth\nruthenic\nruthenium\nruthful\nruthless\nruthlessly\nruthlessness\nruths\nrutilant\nrutile\nrutiles\nrutin\nruts\nrutted\nruttier\nruttiest\nruttily\nrutting\nruttish\nruttishly\nruttishness\nrutty\nrya\nryas\nrye\nryegrass\nryegrasses\nryes\nryke\nryked\nrykes\nryking\nrynd\nrynds\nryot\nryots\nsab\nsabaton\nsabatons\nsabbat\nsabbath\nsabbaths\nsabbatic\nsabbatical\nsabbaticals\nsabbats\nsabbed\nsabbing\nsabe\nsabed\nsabeing\nsaber\nsabered\nsabering\nsabers\nsabes\nsabin\nsabine\nsabines\nsabins\nsabir\nsabirs\nsable\nsables\nsabot\nsabotage\nsabotaged\nsabotages\nsabotaging\nsaboteur\nsaboteurs\nsabots\nsabra\nsabras\nsabre\nsabred\nsabres\nsabring\nsabs\nsabulose\nsabulous\nsac\nsacaton\nsacatons\nsacbut\nsacbuts\nsaccade\nsaccades\nsaccadic\nsaccate\nsaccharin\nsaccharine\nsaccharines\nsaccharinity\nsaccharins\nsaccular\nsaccule\nsaccules\nsacculi\nsacculus\nsacerdotal\nsachem\nsachemic\nsachems\nsachet\nsacheted\nsachets\nsack\nsackbut\nsackbuts\nsackcloth\nsacked\nsacker\nsackers\nsackful\nsackfuls\nsacking\nsackings\nsacklike\nsacks\nsacksful\nsaclike\nsacque\nsacques\nsacra\nsacral\nsacrals\nsacrament\nsacramental\nsacramentalist\nsacramentalists\nsacramentally\nsacraments\nsacraria\nsacred\nsacredly\nsacredness\nsacrifice\nsacrificed\nsacrifices\nsacrificial\nsacrificially\nsacrificing\nsacrilege\nsacrileges\nsacrilegious\nsacrilegiously\nsacrist\nsacristan\nsacristans\nsacristies\nsacrists\nsacristy\nsacroiliac\nsacroiliacs\nsacrosanct\nsacrosanctities\nsacrosanctity\nsacrum\nsacs\nsad\nsadden\nsaddened\nsaddening\nsaddens\nsadder\nsaddest\nsaddhu\nsaddhus\nsaddle\nsaddlebag\nsaddlebags\nsaddled\nsaddler\nsaddleries\nsaddlers\nsaddlery\nsaddles\nsaddling\nsade\nsades\nsadhe\nsadhes\nsadhu\nsadhus\nsadi\nsadiron\nsadirons\nsadis\nsadism\nsadisms\nsadist\nsadistic\nsadistically\nsadists\nsadly\nsadness\nsadnesses\nsadomasochism\nsae\nsafari\nsafaried\nsafariing\nsafaris\nsafe\nsafeguard\nsafeguarded\nsafeguarding\nsafeguards\nsafekeeping\nsafely\nsafeness\nsafenesses\nsafer\nsafes\nsafest\nsafetied\nsafeties\nsafety\nsafetying\nsafflower\nsafflowers\nsaffron\nsaffrons\nsafranin\nsafranins\nsafrol\nsafrole\nsafroles\nsafrols\nsag\nsaga\nsagacious\nsagaciously\nsagaciousness\nsagacities\nsagacity\nsagaman\nsagamen\nsagamore\nsagamores\nsaganash\nsaganashes\nsagas\nsagbut\nsagbuts\nsage\nsagely\nsageness\nsagenesses\nsager\nsages\nsagest\nsaggar\nsaggard\nsaggards\nsaggared\nsaggaring\nsaggars\nsagged\nsagger\nsaggered\nsaggering\nsaggers\nsagging\nsaggy\nsagier\nsagiest\nsagittal\nsago\nsagos\nsags\nsaguaro\nsaguaros\nsagum\nsagy\nsahib\nsahibs\nsahiwal\nsahiwals\nsahuaro\nsahuaros\nsaice\nsaices\nsaid\nsaids\nsaiga\nsaigas\nsail\nsailable\nsailboat\nsailboats\nsailcloth\nsailcloths\nsailed\nsailer\nsailers\nsailfish\nsailfishes\nsailing\nsailings\nsailor\nsailorly\nsailors\nsails\nsain\nsained\nsainfoin\nsainfoins\nsaining\nsains\nsaint\nsaintdom\nsaintdoms\nsainted\nsainthood\nsainting\nsaintlier\nsaintliest\nsaintliness\nsaintly\nsaints\nsaith\nsaithe\nsaiyid\nsaiyids\nsajou\nsajous\nsake\nsaker\nsakers\nsakes\nsaki\nsakis\nsal\nsalaam\nsalaamed\nsalaaming\nsalaams\nsalabilities\nsalability\nsalable\nsalably\nsalacious\nsalaciously\nsalaciousness\nsalacities\nsalacity\nsalad\nsaladang\nsaladangs\nsalads\nsalal\nsalami\nsalamis\nsalariat\nsalariats\nsalaried\nsalaries\nsalary\nsalarying\nsale\nsaleabilities\nsaleability\nsaleable\nsaleably\nsalep\nsaleps\nsaleroom\nsalerooms\nsales\nsalesclerk\nsalesclerks\nsalesgirl\nsalesgirls\nsalesman\nsalesmanship\nsalesmen\nsalespeople\nsalesperson\nsalespersons\nsaleswoman\nsaleswomen\nsalic\nsalicin\nsalicine\nsalicines\nsalicins\nsalience\nsaliences\nsaliencies\nsaliency\nsalient\nsaliently\nsalients\nsalified\nsalifies\nsalify\nsalifying\nsalina\nsalinas\nsaline\nsalines\nsalinities\nsalinity\nsalinize\nsalinized\nsalinizes\nsalinizing\nsaliva\nsalivary\nsalivas\nsalivate\nsalivated\nsalivates\nsalivating\nsalivation\nsalivations\nsall\nsallet\nsallets\nsallied\nsallier\nsalliers\nsallies\nsallow\nsallowed\nsallower\nsallowest\nsallowing\nsallowish\nsallowly\nsallowness\nsallows\nsallowy\nsally\nsallying\nsalmagundi\nsalmagundis\nsalmi\nsalmis\nsalmon\nsalmonella\nsalmonid\nsalmonids\nsalmons\nsalol\nsalols\nsalon\nsalons\nsaloon\nsaloons\nsaloop\nsaloops\nsalp\nsalpa\nsalpae\nsalpas\nsalpian\nsalpians\nsalpid\nsalpids\nsalpinges\nsalpinx\nsalps\nsals\nsalsa\nsalsifies\nsalsify\nsalsilla\nsalsillas\nsalt\nsaltant\nsaltation\nsaltations\nsaltbox\nsaltboxes\nsaltbush\nsaltbushes\nsaltcellar\nsaltcellars\nsalted\nsalter\nsaltern\nsalterns\nsalters\nsaltest\nsaltie\nsaltier\nsaltiers\nsalties\nsaltiest\nsaltily\nsaltine\nsaltines\nsaltiness\nsalting\nsaltire\nsaltires\nsaltish\nsaltless\nsaltlike\nsaltness\nsaltnesses\nsaltpan\nsaltpans\nsaltpeter\nsaltpeters\nsalts\nsaltshaker\nsaltshakers\nsaltwater\nsaltwork\nsaltworks\nsaltwort\nsaltworts\nsalty\nsalubrious\nsalubriously\nsalubriousness\nsalubrities\nsalubrity\nsaluki\nsalukis\nsalutary\nsalutation\nsalutations\nsalutatorian\nsalutatorians\nsalutatories\nsalutatory\nsalute\nsaluted\nsaluter\nsaluters\nsalutes\nsaluting\nsalvable\nsalvably\nsalvadoran\nsalvadorans\nsalvage\nsalvageable\nsalvaged\nsalvagee\nsalvagees\nsalvager\nsalvagers\nsalvages\nsalvaging\nsalvation\nsalvational\nsalvationism\nsalvationist\nsalvationists\nsalvations\nsalve\nsalved\nsalver\nsalvers\nsalves\nsalvia\nsalvias\nsalvific\nsalving\nsalvo\nsalvoed\nsalvoes\nsalvoing\nsalvor\nsalvors\nsalvos\nsamara\nsamaras\nsamaritan\nsamaritans\nsamarium\nsamariums\nsamba\nsambaed\nsambaing\nsambar\nsambars\nsambas\nsambhar\nsambhars\nsambhur\nsambhurs\nsambo\nsambos\nsambuca\nsambucas\nsambuke\nsambukes\nsambur\nsamburs\nsame\nsamech\nsamechs\nsamek\nsamekh\nsamekhs\nsameks\nsameness\nsamenesses\nsamiel\nsamiels\nsamisen\nsamisens\nsamite\nsamites\nsamlet\nsamlets\nsamovar\nsamovars\nsamp\nsampan\nsampans\nsamphire\nsamphires\nsample\nsampled\nsampler\nsamplers\nsamples\nsampling\nsamplings\nsamps\nsamsara\nsamsaras\nsamshu\nsamshus\nsamurai\nsamurais\nsanative\nsanatoria\nsanatorium\nsanatoriums\nsancta\nsancties\nsanctification\nsanctifications\nsanctified\nsanctifier\nsanctifiers\nsanctifies\nsanctify\nsanctifying\nsanctimonies\nsanctimonious\nsanctimoniously\nsanctimoniousness\nsanctimony\nsanction\nsanctioned\nsanctioning\nsanctions\nsanctities\nsanctity\nsanctuaries\nsanctuary\nsanctum\nsanctums\nsand\nsandal\nsandaled\nsandaling\nsandalled\nsandalling\nsandals\nsandalwood\nsandalwoods\nsandarac\nsandaracs\nsandbag\nsandbagged\nsandbagger\nsandbaggers\nsandbagging\nsandbags\nsandbank\nsandbanks\nsandbar\nsandbars\nsandblast\nsandblasted\nsandblasting\nsandblasts\nsandbox\nsandboxes\nsandbur\nsandburr\nsandburrs\nsandburs\nsanded\nsander\nsanders\nsandfish\nsandfishes\nsandflies\nsandfly\nsandhi\nsandhis\nsandhog\nsandhogs\nsandier\nsandiest\nsandiness\nsanding\nsandlike\nsandling\nsandlings\nsandlot\nsandlots\nsandman\nsandmen\nsandpaper\nsandpapered\nsandpapering\nsandpapers\nsandpeep\nsandpeeps\nsandpile\nsandpiles\nsandpiper\nsandpipers\nsandpit\nsandpits\nsands\nsandsoap\nsandsoaps\nsandstone\nsandstones\nsandstorm\nsandstorms\nsandwich\nsandwiched\nsandwiches\nsandwiching\nsandworm\nsandworms\nsandwort\nsandworts\nsandy\nsane\nsaned\nsanely\nsaneness\nsanenesses\nsaner\nsanes\nsanest\nsang\nsanga\nsangar\nsangaree\nsangarees\nsangars\nsangas\nsanger\nsangers\nsangh\nsanghs\nsangria\nsangrias\nsanguinary\nsanguine\nsanguinely\nsanguineness\nsanguines\nsanicle\nsanicles\nsanies\nsaning\nsanious\nsanitaria\nsanitarian\nsanitarians\nsanitaries\nsanitarily\nsanitarium\nsanitariums\nsanitary\nsanitate\nsanitated\nsanitates\nsanitating\nsanitation\nsanitations\nsanities\nsanitise\nsanitised\nsanitises\nsanitising\nsanitization\nsanitizations\nsanitize\nsanitized\nsanitizes\nsanitizing\nsanity\nsanjak\nsanjaks\nsank\nsannop\nsannops\nsannup\nsannups\nsannyasi\nsannyasis\nsans\nsansar\nsansars\nsansei\nsanseis\nsanserif\nsanserifs\nsantalic\nsantimi\nsantims\nsantir\nsantirs\nsantol\nsantols\nsantonin\nsantonins\nsantour\nsantours\nsap\nsapajou\nsapajous\nsaphead\nsapheads\nsaphena\nsaphenae\nsapid\nsapidities\nsapidity\nsapience\nsapiences\nsapiencies\nsapiency\nsapiens\nsapient\nsapiently\nsapless\nsapling\nsaplings\nsaponification\nsaponifications\nsaponified\nsaponifier\nsaponifiers\nsaponifies\nsaponify\nsaponifying\nsaponin\nsaponine\nsaponines\nsaponins\nsaponite\nsaponites\nsapor\nsaporous\nsapors\nsapota\nsapotas\nsapour\nsapours\nsapped\nsapper\nsappers\nsapphic\nsapphics\nsapphire\nsapphires\nsapphism\nsapphisms\nsapphist\nsapphists\nsappier\nsappiest\nsappily\nsapping\nsappy\nsapremia\nsapremias\nsapremic\nsaprobe\nsaprobes\nsaprobic\nsapropel\nsapropels\nsaps\nsapsago\nsapsagos\nsapwood\nsapwoods\nsaraband\nsarabands\nsaran\nsarape\nsarapes\nsarcasm\nsarcasms\nsarcastic\nsarcastically\nsarcenet\nsarcenets\nsarcoid\nsarcoids\nsarcoma\nsarcomas\nsarcomata\nsarcophagi\nsarcophagus\nsarcophaguses\nsarcous\nsard\nsardar\nsardars\nsardine\nsardines\nsardius\nsardiuses\nsardonic\nsardonically\nsardonicism\nsardonicisms\nsardonyx\nsardonyxes\nsards\nsaree\nsarees\nsargasso\nsargassos\nsarge\nsarges\nsari\nsarin\nsarins\nsaris\nsark\nsarks\nsarky\nsarment\nsarmenta\nsarments\nsarod\nsarode\nsarodes\nsarodist\nsarodists\nsarods\nsarong\nsarongs\nsaros\nsarsaparilla\nsarsaparillas\nsarsar\nsarsars\nsarsen\nsarsenet\nsarsenets\nsarsens\nsartor\nsartorial\nsartorially\nsartorii\nsartors\nsash\nsashay\nsashayed\nsashaying\nsashays\nsashed\nsashes\nsashimi\nsashimis\nsashing\nsasin\nsasins\nsass\nsassabies\nsassaby\nsassafras\nsassed\nsasses\nsassier\nsassies\nsassiest\nsassily\nsassing\nsasswood\nsasswoods\nsassy\nsastruga\nsastrugi\nsat\nsatang\nsatangs\nsatanic\nsatanically\nsatanism\nsatanisms\nsatanist\nsatanists\nsatara\nsataras\nsatay\nsatchel\nsatchels\nsate\nsated\nsateen\nsateens\nsatellite\nsatellites\nsatem\nsates\nsati\nsatiable\nsatiably\nsatiate\nsatiated\nsatiates\nsatiating\nsatiation\nsatiations\nsatieties\nsatiety\nsatin\nsatinet\nsatinets\nsating\nsatinpod\nsatinpods\nsatins\nsatinwood\nsatinwoods\nsatiny\nsatire\nsatires\nsatiric\nsatirical\nsatirically\nsatirise\nsatirised\nsatirises\nsatirising\nsatirist\nsatirists\nsatirize\nsatirized\nsatirizes\nsatirizing\nsatis\nsatisfaction\nsatisfactions\nsatisfactorily\nsatisfactory\nsatisfiable\nsatisfied\nsatisfies\nsatisfy\nsatisfying\nsatisfyingly\nsatori\nsatoris\nsatrap\nsatrapies\nsatraps\nsatrapy\nsaturable\nsaturant\nsaturants\nsaturate\nsaturated\nsaturates\nsaturating\nsaturation\nsaturations\nsaturator\nsaturators\nsaturnine\nsatyr\nsatyric\nsatyrid\nsatyrids\nsatyrs\nsau\nsauce\nsaucebox\nsauceboxes\nsauced\nsaucepan\nsaucepans\nsaucer\nsaucers\nsauces\nsauch\nsauchs\nsaucier\nsauciest\nsaucily\nsaucing\nsaucy\nsauger\nsaugers\nsaugh\nsaughs\nsaughy\nsaul\nsauls\nsault\nsaults\nsauna\nsaunas\nsaunter\nsauntered\nsauntering\nsaunters\nsaurel\nsaurels\nsaurian\nsaurians\nsauries\nsauropod\nsauropods\nsaury\nsausage\nsausages\nsaute\nsauted\nsauteed\nsauteing\nsauterne\nsauternes\nsautes\nsautoir\nsautoire\nsautoires\nsautoirs\nsavable\nsavage\nsavaged\nsavagely\nsavageness\nsavager\nsavageries\nsavagery\nsavages\nsavagest\nsavaging\nsavagism\nsavagisms\nsavanna\nsavannah\nsavannahs\nsavannas\nsavant\nsavants\nsavate\nsavates\nsave\nsaveable\nsaved\nsaveloy\nsaveloys\nsaver\nsavers\nsaves\nsavin\nsavine\nsavines\nsaving\nsavingly\nsavings\nsavins\nsavior\nsaviors\nsaviour\nsaviours\nsavor\nsavored\nsavorer\nsavorers\nsavorier\nsavories\nsavoriest\nsavorily\nsavoriness\nsavoring\nsavorless\nsavorous\nsavors\nsavory\nsavour\nsavoured\nsavourer\nsavourers\nsavourier\nsavouries\nsavouriest\nsavouring\nsavours\nsavoury\nsavoy\nsavoys\nsavvied\nsavvies\nsavvy\nsavvying\nsaw\nsawbill\nsawbills\nsawbones\nsawboneses\nsawbuck\nsawbucks\nsawdust\nsawdusts\nsawed\nsawer\nsawers\nsawfish\nsawfishes\nsawflies\nsawfly\nsawhorse\nsawhorses\nsawing\nsawlike\nsawlog\nsawlogs\nsawmill\nsawmills\nsawn\nsawney\nsawneys\nsaws\nsawtooteeth\nsawtooth\nsawyer\nsawyers\nsax\nsaxatile\nsaxes\nsaxhorn\nsaxhorns\nsaxonies\nsaxony\nsaxophone\nsaxophones\nsaxophonist\nsaxophonists\nsaxtuba\nsaxtubas\nsay\nsayable\nsayer\nsayers\nsayest\nsayid\nsayids\nsaying\nsayings\nsayonara\nsayonaras\nsays\nsayst\nsayyid\nsayyids\nscab\nscabbard\nscabbarded\nscabbarding\nscabbards\nscabbed\nscabbier\nscabbiest\nscabbily\nscabbing\nscabble\nscabbled\nscabbles\nscabbling\nscabby\nscabies\nscabiosa\nscabiosas\nscabious\nscabiouses\nscablike\nscabrous\nscabrously\nscabrousness\nscabs\nscad\nscads\nscaffold\nscaffolded\nscaffolding\nscaffoldings\nscaffolds\nscag\nscags\nscalable\nscalably\nscalade\nscalades\nscalado\nscalados\nscalage\nscalages\nscalar\nscalare\nscalares\nscalars\nscalawag\nscalawags\nscald\nscalded\nscaldic\nscalding\nscalds\nscale\nscaled\nscaleless\nscalene\nscaleni\nscalenus\nscalepan\nscalepans\nscaler\nscalers\nscales\nscalier\nscaliest\nscaling\nscall\nscallion\nscallions\nscallop\nscalloped\nscalloping\nscallopini\nscallops\nscalls\nscaloppine\nscalp\nscalped\nscalpel\nscalpels\nscalper\nscalpers\nscalping\nscalps\nscaly\nscam\nscammonies\nscammony\nscamp\nscamped\nscamper\nscampered\nscampering\nscampers\nscampi\nscamping\nscampish\nscamps\nscams\nscan\nscandal\nscandaled\nscandaling\nscandalize\nscandalized\nscandalizes\nscandalizing\nscandalled\nscandalling\nscandalmonger\nscandalmongers\nscandalous\nscandalously\nscandalousness\nscandals\nscandent\nscandia\nscandias\nscandic\nscandium\nscandiums\nscannable\nscanned\nscanner\nscanners\nscanning\nscannings\nscans\nscansion\nscansions\nscant\nscanted\nscanter\nscantest\nscantier\nscanties\nscantiest\nscantily\nscantiness\nscanting\nscantling\nscantlings\nscantly\nscantness\nscants\nscanty\nscape\nscaped\nscapegoat\nscapegoats\nscapegrace\nscapegraces\nscapes\nscaphoid\nscaphoids\nscaping\nscapose\nscapula\nscapulae\nscapular\nscapulars\nscapulas\nscar\nscarab\nscarabs\nscarce\nscarcely\nscarceness\nscarcer\nscarcest\nscarcities\nscarcity\nscare\nscarecrow\nscarecrows\nscared\nscarer\nscarers\nscares\nscarey\nscarf\nscarfed\nscarfing\nscarfpin\nscarfpins\nscarfs\nscarier\nscariest\nscarification\nscarifications\nscarified\nscarifier\nscarifiers\nscarifies\nscarify\nscarifying\nscariness\nscaring\nscariose\nscarious\nscarless\nscarlet\nscarlets\nscarp\nscarped\nscarper\nscarpered\nscarpering\nscarpers\nscarph\nscarphed\nscarphing\nscarphs\nscarping\nscarps\nscarred\nscarrier\nscarriest\nscarring\nscarry\nscars\nscart\nscarted\nscarting\nscarts\nscarves\nscary\nscat\nscatback\nscatbacks\nscathe\nscathed\nscatheless\nscathes\nscathing\nscathingly\nscatological\nscatology\nscats\nscatt\nscatted\nscatter\nscatterbrain\nscatterbrained\nscatterbrains\nscattered\nscattering\nscatterings\nscatters\nscattier\nscattiest\nscatting\nscatts\nscatty\nscaup\nscauper\nscaupers\nscaups\nscaur\nscaurs\nscavenge\nscavenged\nscavengenges\nscavenger\nscavengers\nscavenges\nscavenging\nscena\nscenario\nscenarios\nscenarist\nscenarists\nscenas\nscend\nscended\nscending\nscends\nscene\nsceneries\nscenery\nscenes\nscenic\nscenical\nscenically\nscenographic\nscenography\nscent\nscented\nscenting\nscents\nscepter\nsceptered\nsceptering\nscepters\nsceptic\nsceptical\nscepticism\nscepticisms\nsceptics\nsceptral\nsceptre\nsceptred\nsceptres\nsceptring\nschappe\nschappes\nschav\nschavs\nschedule\nscheduled\nschedules\nscheduling\nschema\nschemata\nschematic\nschematically\nschematics\nscheme\nschemed\nschemer\nschemers\nschemes\nscheming\nscherzi\nscherzo\nscherzos\nschiller\nschillers\nschism\nschismatic\nschismatics\nschisms\nschist\nschists\nschizo\nschizoid\nschizoids\nschizont\nschizonts\nschizophrene\nschizophrenes\nschizophrenia\nschizophrenias\nschizophrenic\nschizos\nschlep\nschlepp\nschlepped\nschlepping\nschlepps\nschleps\nschlock\nschlocks\nschmaltz\nschmaltzes\nschmalz\nschmalzes\nschmalzier\nschmalziest\nschmalzy\nschmeer\nschmeered\nschmeering\nschmeers\nschmelze\nschmelzes\nschmo\nschmoe\nschmoes\nschmoos\nschmoose\nschmoosed\nschmooses\nschmoosing\nschmooze\nschmoozed\nschmoozes\nschmoozing\nschmuck\nschmucks\nschnapps\nschnaps\nschnauzer\nschnauzers\nschnecke\nschnecken\nschnook\nschnooks\nscholar\nscholarly\nscholars\nscholarship\nscholarships\nscholastic\nscholastically\nscholasticism\nscholastics\nscholia\nscholium\nscholiums\nschool\nschoolbook\nschoolbooks\nschoolboy\nschoolboys\nschoolchild\nschoolchildren\nschooled\nschoolgirl\nschoolgirls\nschoolhouse\nschoolhouses\nschooling\nschoolmaster\nschoolmasters\nschoolmate\nschoolmates\nschoolroom\nschoolrooms\nschools\nschoolteacher\nschoolteachers\nschoolwork\nschooner\nschooners\nschorl\nschorls\nschrik\nschriks\nschtick\nschticks\nschuit\nschuits\nschul\nschuln\nschuss\nschussed\nschusses\nschussing\nschwa\nschwas\nsciaenid\nsciaenids\nsciatic\nsciatica\nsciaticas\nsciatics\nscience\nsciences\nscientific\nscientifically\nscientist\nscientists\nscilicet\nscilla\nscillas\nscimetar\nscimetars\nscimitar\nscimitars\nscimiter\nscimiters\nscincoid\nscincoids\nscintilla\nscintillas\nscintillate\nscintillated\nscintillates\nscintillating\nscintillation\nscintillations\nsciolism\nsciolisms\nsciolist\nsciolists\nscion\nscions\nscirocco\nsciroccos\nscirrhi\nscirrhus\nscirrhuses\nscissile\nscission\nscissions\nscissor\nscissored\nscissoring\nscissors\nscissure\nscissures\nsciurine\nsciurines\nsciuroid\nsclaff\nsclaffed\nsclaffer\nsclaffers\nsclaffing\nsclaffs\nsclera\nsclerae\nscleral\nscleras\nsclereid\nsclereids\nsclerite\nsclerites\nscleroid\nscleroma\nscleromata\nsclerose\nsclerosed\nscleroses\nsclerosing\nsclerosis\nsclerotic\nsclerotics\nsclerous\nscoff\nscoffed\nscoffer\nscoffers\nscoffing\nscofflaw\nscofflaws\nscoffs\nscold\nscolded\nscolder\nscolders\nscolding\nscoldings\nscolds\nscoleces\nscolex\nscolices\nscolioma\nscoliomas\nscollop\nscolloped\nscolloping\nscollops\nsconce\nsconced\nsconces\nsconcing\nscone\nscones\nscoop\nscooped\nscooper\nscoopers\nscoopful\nscoopfuls\nscooping\nscoops\nscoopsful\nscoot\nscooted\nscooter\nscooters\nscooting\nscoots\nscop\nscope\nscopes\nscops\nscopula\nscopulae\nscopulas\nscorbutic\nscorch\nscorched\nscorcher\nscorchers\nscorches\nscorching\nscorchingly\nscore\nscored\nscorekeeper\nscorekeepers\nscoreless\nscorepad\nscorepads\nscorer\nscorers\nscores\nscoria\nscoriae\nscorified\nscorifies\nscorify\nscorifying\nscoring\nscorn\nscorned\nscorner\nscorners\nscornful\nscornfully\nscornfulness\nscorning\nscorns\nscorpion\nscorpions\nscot\nscotch\nscotched\nscotches\nscotching\nscoter\nscoters\nscotia\nscotias\nscotoma\nscotomas\nscotomata\nscotopia\nscotopias\nscotopic\nscots\nscottie\nscotties\nscoundrel\nscoundrelly\nscoundrels\nscour\nscoured\nscourer\nscourers\nscourge\nscourged\nscourger\nscourgers\nscourges\nscourging\nscouring\nscourings\nscours\nscouse\nscouses\nscout\nscouted\nscouter\nscouters\nscouth\nscouther\nscouthered\nscouthering\nscouthers\nscouths\nscouting\nscoutings\nscoutmaster\nscoutmasters\nscouts\nscow\nscowder\nscowdered\nscowdering\nscowders\nscowed\nscowing\nscowl\nscowled\nscowler\nscowlers\nscowling\nscowls\nscows\nscrabble\nscrabbled\nscrabbles\nscrabbling\nscrabbly\nscrag\nscragged\nscraggier\nscraggiest\nscragging\nscragglier\nscraggliest\nscraggly\nscraggy\nscrags\nscraich\nscraiched\nscraiching\nscraichs\nscraigh\nscraighed\nscraighing\nscraighs\nscram\nscramble\nscrambled\nscrambler\nscramblers\nscrambles\nscrambling\nscrammed\nscramming\nscrams\nscrannel\nscrannels\nscrap\nscrapbook\nscrapbooks\nscrape\nscraped\nscraper\nscrapers\nscrapes\nscrapie\nscrapies\nscraping\nscrapings\nscrapped\nscrapper\nscrappers\nscrappier\nscrappiest\nscrappily\nscrappiness\nscrapping\nscrapple\nscrapples\nscrappy\nscraps\nscratch\nscratched\nscratcher\nscratchers\nscratches\nscratchier\nscratchiest\nscratchiness\nscratching\nscratchy\nscrawl\nscrawled\nscrawler\nscrawlers\nscrawlier\nscrawliest\nscrawling\nscrawls\nscrawly\nscrawnier\nscrawniest\nscrawny\nscreak\nscreaked\nscreaking\nscreaks\nscreaky\nscream\nscreamed\nscreamer\nscreamers\nscreaming\nscreamingly\nscreams\nscree\nscreech\nscreeched\nscreeches\nscreechier\nscreechiest\nscreeching\nscreechy\nscreed\nscreeded\nscreeding\nscreeds\nscreen\nscreened\nscreener\nscreeners\nscreening\nscreenings\nscreenplay\nscreenplays\nscreens\nscreenwriter\nscreenwriters\nscrees\nscrew\nscrewball\nscrewballs\nscrewdriver\nscrewdrivers\nscrewed\nscrewer\nscrewers\nscrewier\nscrewiest\nscrewing\nscrews\nscrewy\nscribal\nscribble\nscribbled\nscribbler\nscribblers\nscribbles\nscribbling\nscribe\nscribed\nscriber\nscribers\nscribes\nscribing\nscrieve\nscrieved\nscrieves\nscrieving\nscrim\nscrimmage\nscrimmaged\nscrimmager\nscrimmagers\nscrimmages\nscrimmaging\nscrimp\nscrimped\nscrimpier\nscrimpiest\nscrimping\nscrimpit\nscrimps\nscrimpy\nscrims\nscrip\nscrips\nscript\nscripted\nscripting\nscripts\nscriptural\nscripturally\nscripture\nscriptures\nscrive\nscrived\nscrivener\nscriveners\nscrives\nscriving\nscrod\nscrods\nscrofula\nscrofulas\nscrofulous\nscroggier\nscroggiest\nscroggy\nscroll\nscrolls\nscrollwork\nscrooge\nscrooges\nscroop\nscrooped\nscrooping\nscroops\nscrota\nscrotal\nscrotum\nscrotums\nscrouge\nscrouged\nscrouges\nscrouging\nscrounge\nscrounged\nscrounges\nscroungier\nscroungiest\nscrounging\nscroungy\nscrub\nscrubbed\nscrubber\nscrubbers\nscrubbier\nscrubbiest\nscrubbing\nscrubby\nscrubs\nscruff\nscruffier\nscruffiest\nscruffs\nscruffy\nscrum\nscrumptious\nscrumptiously\nscrums\nscrunch\nscrunched\nscrunches\nscrunching\nscruple\nscrupled\nscruples\nscrupling\nscrupulosities\nscrupulosity\nscrupulous\nscrupulously\nscrupulousness\nscrutinies\nscrutinize\nscrutinized\nscrutinizes\nscrutinizing\nscrutiny\nscry\nscuba\nscubas\nscud\nscudded\nscudding\nscudi\nscudo\nscuds\nscuff\nscuffed\nscuffing\nscuffle\nscuffled\nscuffler\nscufflers\nscuffles\nscuffling\nscuffs\nsculk\nsculked\nsculker\nsculkers\nsculking\nsculks\nscull\nsculled\nsculler\nsculleries\nscullers\nscullery\nsculling\nscullion\nscullions\nsculls\nsculp\nsculped\nsculpin\nsculping\nsculpins\nsculps\nsculpt\nsculpted\nsculpting\nsculptor\nsculptors\nsculptress\nsculptresses\nsculpts\nsculptural\nsculpturally\nsculpture\nsculptured\nsculptures\nsculpturesque\nsculpturing\nscum\nscumble\nscumbled\nscumbles\nscumbling\nscumlike\nscummed\nscummer\nscummers\nscummier\nscummiest\nscumming\nscummy\nscums\nscunner\nscunnered\nscunnering\nscunners\nscup\nscuppaug\nscuppaugs\nscupper\nscuppered\nscuppering\nscuppers\nscups\nscurf\nscurfier\nscurfiest\nscurfs\nscurfy\nscurried\nscurries\nscurril\nscurrile\nscurrilities\nscurrility\nscurrilous\nscurrilously\nscurrilousness\nscurry\nscurrying\nscurvier\nscurvies\nscurviest\nscurvily\nscurvy\nscut\nscuta\nscutage\nscutages\nscutate\nscutch\nscutched\nscutcher\nscutchers\nscutches\nscutching\nscute\nscutella\nscutes\nscuts\nscutter\nscuttered\nscuttering\nscutters\nscuttle\nscuttlebutt\nscuttlebutts\nscuttled\nscuttles\nscuttling\nscutum\nscyphate\nscythe\nscythed\nscythes\nscything\nsea\nseabag\nseabags\nseabeach\nseabeaches\nseabed\nseabeds\nseabird\nseabirds\nseaboard\nseaboards\nseaboot\nseaboots\nseaborne\nseacoast\nseacoasts\nseacock\nseacocks\nseacraft\nseacrafts\nseadog\nseadogs\nseadrome\nseadromes\nseafarer\nseafarers\nseafaring\nseafloor\nseafloors\nseafood\nseafoods\nseafowl\nseafowls\nseafront\nseafronts\nseagirt\nseagoing\nseal\nsealable\nsealant\nsealants\nsealed\nsealer\nsealeries\nsealers\nsealery\nsealing\nseallike\nseals\nsealskin\nsealskins\nseam\nseaman\nseamanlike\nseamanly\nseamanship\nseamark\nseamarks\nseamed\nseamen\nseamer\nseamers\nseamier\nseamiest\nseaminess\nseaming\nseamless\nseamlike\nseamount\nseamounts\nseams\nseamster\nseamsters\nseamstress\nseamstresses\nseamy\nseance\nseances\nseapiece\nseapieces\nseaplane\nseaplanes\nseaport\nseaports\nseaquake\nseaquakes\nsear\nsearch\nsearchable\nsearched\nsearcher\nsearchers\nsearches\nsearching\nsearchingly\nsearchlight\nsearchlights\nseared\nsearer\nsearest\nsearing\nsears\nseas\nseascape\nseascapes\nseascout\nseascouts\nseashell\nseashells\nseashore\nseashores\nseasick\nseasickness\nseasicknesses\nseaside\nseasides\nseason\nseasonable\nseasonableness\nseasonably\nseasonal\nseasonalities\nseasonality\nseasonally\nseasoned\nseasoner\nseasoners\nseasoning\nseasonings\nseasonless\nseasons\nseat\nseated\nseater\nseaters\nseating\nseatings\nseatless\nseatmate\nseatmates\nseatrain\nseatrains\nseats\nseatwork\nseatworks\nseawall\nseawalls\nseawan\nseawans\nseawant\nseawants\nseaward\nseawards\nseaware\nseawares\nseawater\nseawaters\nseaway\nseaways\nseaweed\nseaweeds\nseaworthiness\nseaworthy\nsebacic\nsebasic\nsebum\nsebums\nsec\nsecant\nsecantly\nsecants\nsecateur\nsecateurs\nsecco\nseccos\nsecede\nseceded\nseceder\nseceders\nsecedes\nseceding\nsecern\nsecerned\nsecerning\nsecerns\nsecession\nsecessionism\nsecessionisms\nsecessionist\nsecessionists\nsecessions\nseclude\nsecluded\nsecludedly\nsecludedness\nsecludes\nsecluding\nseclusion\nseclusions\nseclusive\nseclusiveness\nsecond\nsecondaries\nsecondarily\nsecondary\nseconde\nseconded\nseconder\nseconders\nsecondes\nsecondhand\nsecondi\nseconding\nsecondly\nsecondo\nseconds\nsecpar\nsecpars\nsecrecies\nsecrecy\nsecret\nsecretarial\nsecretariat\nsecretariats\nsecretaries\nsecretary\nsecretaryship\nsecretaryships\nsecrete\nsecreted\nsecreter\nsecretes\nsecretest\nsecretin\nsecreting\nsecretins\nsecretion\nsecretionary\nsecretions\nsecretive\nsecretively\nsecretiveness\nsecretly\nsecretor\nsecretors\nsecrets\nsecs\nsect\nsectarian\nsectarianism\nsectarianisms\nsectarianize\nsectarianized\nsectarianizes\nsectarianizing\nsectarians\nsectaries\nsectary\nsectile\nsection\nsectional\nsectionalism\nsectionally\nsectioned\nsectioning\nsections\nsector\nsectoral\nsectored\nsectorial\nsectoring\nsectors\nsects\nsecular\nsecularism\nsecularist\nsecularistic\nsecularists\nsecularities\nsecularity\nsecularization\nsecularizations\nsecularize\nsecularized\nsecularizes\nsecularizing\nsecularly\nseculars\nsecund\nsecundly\nsecundum\nsecure\nsecured\nsecurely\nsecureness\nsecurer\nsecurers\nsecures\nsecurest\nsecuring\nsecurities\nsecurity\nsedan\nsedans\nsedarim\nsedate\nsedated\nsedately\nsedateness\nsedater\nsedates\nsedatest\nsedating\nsedation\nsedations\nsedative\nsedatives\nsedentary\nseder\nseders\nsederunt\nsederunts\nsedge\nsedges\nsedgier\nsedgiest\nsedgy\nsedile\nsedilia\nsedilium\nsediment\nsedimentary\nsedimentation\nsedimentations\nsedimented\nsedimenting\nsediments\nsedition\nseditions\nseditious\nseditiously\nseditiousness\nseduce\nseduced\nseducer\nseducers\nseduces\nseducing\nseducive\nseduction\nseductions\nseductive\nseductively\nseductiveness\nseductress\nseductresses\nsedulities\nsedulity\nsedulous\nsedulously\nsedulousness\nsedum\nsedums\nsee\nseeable\nseecatch\nseecatchie\nseed\nseedbed\nseedbeds\nseedcake\nseedcakes\nseedcase\nseedcases\nseeded\nseeder\nseeders\nseedier\nseediest\nseedily\nseediness\nseeding\nseedless\nseedlike\nseedling\nseedlings\nseedman\nseedmen\nseedpod\nseedpods\nseeds\nseedsman\nseedsmen\nseedtime\nseedtimes\nseedy\nseeing\nseeings\nseek\nseeker\nseekers\nseeking\nseeks\nseel\nseeled\nseeling\nseels\nseely\nseem\nseemed\nseemer\nseemers\nseeming\nseemingly\nseemings\nseemlier\nseemliest\nseemly\nseems\nseen\nseep\nseepage\nseepages\nseeped\nseepier\nseepiest\nseeping\nseeps\nseepy\nseer\nseeress\nseeresses\nseers\nseersucker\nseersuckers\nsees\nseesaw\nseesawed\nseesawing\nseesaws\nseethe\nseethed\nseethes\nseething\nseg\nsegetal\nseggar\nseggars\nsegment\nsegmental\nsegmentally\nsegmentary\nsegmentation\nsegmentations\nsegmented\nsegmenting\nsegments\nsegni\nsegno\nsegnos\nsego\nsegos\nsegregate\nsegregated\nsegregates\nsegregating\nsegregation\nsegregationist\nsegregationists\nsegregations\nsegregative\nsegs\nsegue\nsegued\nsegueing\nsegues\nsei\nseicento\nseicentos\nseiche\nseiches\nseidel\nseidels\nseif\nseifs\nseigneur\nseigneurs\nseignior\nseigniors\nseignories\nseignory\nseine\nseined\nseiner\nseiners\nseines\nseining\nseis\nseisable\nseise\nseised\nseiser\nseisers\nseises\nseisin\nseising\nseisings\nseisins\nseism\nseismal\nseismic\nseismicity\nseismism\nseismisms\nseismograph\nseismographer\nseismographers\nseismographic\nseismographs\nseismography\nseismological\nseismologist\nseismologists\nseismology\nseisms\nseisor\nseisors\nseisure\nseisures\nseizable\nseize\nseized\nseizer\nseizers\nseizes\nseizin\nseizing\nseizings\nseizins\nseizor\nseizors\nseizure\nseizures\nsejant\nsejeant\nsel\nseladang\nseladangs\nselah\nselahs\nselamlik\nselamliks\nselcouth\nseldom\nseldomly\nselect\nselectable\nselected\nselectee\nselectees\nselecting\nselection\nselections\nselective\nselectively\nselectiveness\nselectivities\nselectivity\nselectly\nselectman\nselectmen\nselectness\nselector\nselectors\nselects\nselenate\nselenates\nselenic\nselenide\nselenides\nselenite\nselenites\nselenium\nseleniums\nselenous\nself\nselfdom\nselfdoms\nselfed\nselfheal\nselfheals\nselfhood\nselfhoods\nselfing\nselfish\nselfishly\nselfishness\nselfless\nselflessly\nselflessness\nselfness\nselfnesses\nselfs\nselfsame\nselfsameness\nselfward\nsell\nsellable\nselle\nseller\nsellers\nselles\nselling\nsellout\nsellouts\nsells\nsels\nselsyn\nselsyns\nseltzer\nseltzers\nselva\nselvage\nselvaged\nselvages\nselvedge\nselvedged\nselvedges\nselves\nsemantic\nsemantically\nsemanticist\nsemanticists\nsemantics\nsemaphore\nsemaphored\nsemaphores\nsemaphoring\nsematic\nsemblance\nsemblances\nseme\nsememe\nsememes\nsemen\nsemens\nsemes\nsemester\nsemesters\nsemi\nsemiannual\nsemiannually\nsemiarid\nsemiautomatic\nsemiautomatically\nsemiautomatics\nsemibald\nsemicircle\nsemicircles\nsemicircular\nsemicolon\nsemicolons\nsemicoma\nsemicomas\nsemiconductor\nsemiconductors\nsemiconscious\nsemiconsciousness\nsemideaf\nsemidome\nsemidomes\nsemidry\nsemifinal\nsemifinalist\nsemifinalists\nsemifinals\nsemifit\nsemifluid\nsemiformal\nsemigala\nsemihard\nsemihigh\nsemihobo\nsemihoboes\nsemihobos\nsemilog\nsemimat\nsemimatt\nsemimonthlies\nsemimonthly\nsemimute\nsemina\nseminal\nseminally\nseminar\nseminarian\nseminarians\nseminaries\nseminars\nseminary\nseminude\nsemiofficial\nsemiofficially\nsemioses\nsemiosis\nsemiotic\nsemiotics\nsemipermanent\nsemiprecious\nsemiprivate\nsemipro\nsemiprofessional\nsemiprofessionally\nsemiprofessionals\nsemipros\nsemiraw\nsemirigid\nsemis\nsemises\nsemiskilled\nsemisoft\nsemisolid\nsemisolids\nsemitist\nsemitists\nsemitone\nsemitones\nsemitropical\nsemitropics\nsemiweeklies\nsemiweekly\nsemiwild\nsemolina\nsemolinas\nsemple\nsemplice\nsempre\nsen\nsenarii\nsenarius\nsenary\nsenate\nsenates\nsenator\nsenatorial\nsenators\nsenatorship\nsenatorships\nsend\nsendable\nsendal\nsendals\nsender\nsenders\nsending\nsendoff\nsendoffs\nsends\nsene\nseneca\nsenecas\nsenecio\nsenecios\nsenega\nsenegas\nsenescence\nsenescent\nseneschal\nseneschals\nsengi\nsenhor\nsenhora\nsenhoras\nsenhores\nsenhors\nsenile\nsenilely\nseniles\nsenilities\nsenility\nsenior\nseniorities\nseniority\nseniors\nseniti\nsenna\nsennas\nsennet\nsennets\nsennight\nsennights\nsennit\nsennits\nsenopia\nsenopias\nsenor\nsenora\nsenoras\nsenores\nsenorita\nsenoritas\nsenors\nsensa\nsensate\nsensated\nsensately\nsensates\nsensating\nsensation\nsensational\nsensationalism\nsensationalisms\nsensationalist\nsensationalistic\nsensationalists\nsensationalize\nsensationalized\nsensationalizes\nsensationalizing\nsensationally\nsensations\nsense\nsensed\nsenseful\nsenseless\nsenselessly\nsenselessness\nsenses\nsensibilities\nsensibility\nsensible\nsensibleness\nsensibler\nsensibles\nsensiblest\nsensibly\nsensilla\nsensing\nsensitive\nsensitively\nsensitiveness\nsensitivities\nsensitivity\nsensitization\nsensitizations\nsensitize\nsensitized\nsensitizer\nsensitizers\nsensitizes\nsensitizing\nsensor\nsensoria\nsensorial\nsensors\nsensory\nsensual\nsensualism\nsensualist\nsensualistic\nsensualists\nsensualities\nsensuality\nsensualization\nsensualizations\nsensualize\nsensualized\nsensualizes\nsensualizing\nsensually\nsensum\nsensuous\nsensuously\nsensuousness\nsent\nsentence\nsentenced\nsentences\nsentencing\nsententious\nsententiously\nsententiousness\nsenti\nsentience\nsentient\nsentiently\nsentients\nsentiment\nsentimental\nsentimentalism\nsentimentalist\nsentimentalists\nsentimentalities\nsentimentality\nsentimentalization\nsentimentalizations\nsentimentalize\nsentimentalized\nsentimentalizes\nsentimentalizing\nsentimentally\nsentiments\nsentinel\nsentineled\nsentineling\nsentinelled\nsentinelling\nsentinels\nsentries\nsentry\nsepal\nsepaled\nsepaline\nsepalled\nsepaloid\nsepalous\nsepals\nseparability\nseparable\nseparableness\nseparably\nseparate\nseparated\nseparately\nseparateness\nseparates\nseparating\nseparation\nseparations\nseparatism\nseparatist\nseparatists\nseparative\nseparator\nseparators\nsepia\nsepias\nsepic\nsepoy\nsepoys\nseppuku\nseppukus\nsepses\nsepsis\nsept\nsepta\nseptal\nseptaria\nseptate\nseptet\nseptets\nseptette\nseptettes\nseptic\nseptical\nsepticemia\nseptics\nseptime\nseptimes\nsepts\nseptuagenarian\nseptuagenarians\nseptum\nseptuple\nseptupled\nseptuples\nseptupling\nsepulcher\nsepulchered\nsepulchering\nsepulchers\nsepulchral\nsepulchrally\nsepulchre\nsepulchred\nsepulchres\nsepulchring\nsequel\nsequela\nsequelae\nsequels\nsequence\nsequenced\nsequencer\nsequencers\nsequences\nsequencies\nsequencing\nsequency\nsequent\nsequential\nsequentially\nsequents\nsequester\nsequestered\nsequestering\nsequesters\nsequestrate\nsequestrated\nsequestrates\nsequestrating\nsequestration\nsequestrations\nsequin\nsequined\nsequinned\nsequins\nsequitur\nsequiturs\nsequoia\nsequoias\nser\nsera\nserac\nseracs\nseraglio\nseraglios\nserai\nserail\nserails\nserais\nseral\nserape\nserapes\nseraph\nseraphic\nseraphically\nseraphim\nseraphims\nseraphin\nseraphs\nserdab\nserdabs\nsere\nsered\nserein\nsereins\nserenade\nserenaded\nserenades\nserenading\nserenata\nserenatas\nserenate\nserendipitous\nserendipity\nserene\nserenely\nsereneness\nserener\nserenes\nserenest\nserenities\nserenity\nserer\nseres\nserest\nserf\nserfage\nserfages\nserfdom\nserfdoms\nserfhood\nserfhoods\nserfish\nserflike\nserfs\nserge\nsergeant\nsergeants\nserges\nserging\nsergings\nserial\nserialist\nserialists\nserialization\nserializations\nserialize\nserialized\nserializes\nserializing\nserially\nserials\nseriate\nseriated\nseriates\nseriatim\nseriating\nsericin\nsericins\nseriema\nseriemas\nseries\nserif\nserifs\nserigraph\nserigraphs\nserin\nserine\nserines\nsering\nseringa\nseringas\nserins\nseriocomic\nseriocomically\nserious\nseriously\nseriousness\nserjeant\nserjeants\nsermon\nsermonic\nsermonize\nsermonized\nsermonizer\nsermonizers\nsermonizes\nsermonizing\nsermons\nserologies\nserology\nserosa\nserosae\nserosal\nserosas\nserosities\nserosity\nserotine\nserotines\nserotype\nserotypes\nserous\nserow\nserows\nserpent\nserpentine\nserpents\nserpigines\nserpigo\nserpigoes\nserranid\nserranids\nserrate\nserrated\nserrates\nserrating\nserration\nserrations\nserried\nserries\nserry\nserrying\nsers\nserum\nserumal\nserums\nservable\nserval\nservals\nservant\nservantless\nservants\nserve\nserved\nserver\nservers\nserves\nservice\nserviceability\nserviceable\nserviceableness\nserviceably\nserviced\nserviceman\nservicemen\nservicer\nservicers\nservices\nservicing\nservile\nservilely\nservileness\nservility\nserving\nservings\nservitor\nservitors\nservitude\nservitudes\nservo\nservomechanism\nservomotor\nservomotors\nservos\nsesame\nsesames\nsesamoid\nsesamoids\nsesquicentennial\nsesquicentennials\nsessile\nsession\nsessional\nsessions\nsesspool\nsesspools\nsesterce\nsesterces\nsestet\nsestets\nsestina\nsestinas\nsestine\nsestines\nset\nseta\nsetae\nsetal\nsetback\nsetbacks\nsetiform\nsetline\nsetlines\nsetoff\nsetoffs\nseton\nsetons\nsetose\nsetous\nsetout\nsetouts\nsets\nsetscrew\nsetscrews\nsett\nsettee\nsettees\nsetter\nsetters\nsetting\nsettings\nsettle\nsettleable\nsettled\nsettlement\nsettlements\nsettler\nsettlers\nsettles\nsettling\nsettlings\nsettlor\nsettlors\nsetts\nsetulose\nsetulous\nsetup\nsetups\nseven\nsevenfold\nsevens\nseventeen\nseventeens\nseventeenth\nseventh\nsevenths\nseventies\nseventieth\nseventy\nsever\nseverable\nseveral\nseverally\nseverals\nseveralties\nseveralty\nseverance\nseverances\nsevere\nsevered\nseverely\nsevereness\nseverer\nseverest\nsevering\nseverities\nseverity\nsevers\nsew\nsewage\nsewages\nsewan\nsewans\nsewar\nsewars\nsewed\nsewer\nsewerage\nsewerages\nsewers\nsewing\nsewings\nsewn\nsews\nsex\nsexagenarian\nsexagenarians\nsexed\nsexes\nsexier\nsexiest\nsexily\nsexiness\nsexinesses\nsexing\nsexism\nsexisms\nsexist\nsexists\nsexless\nsexologies\nsexologist\nsexologists\nsexology\nsexpot\nsexpots\nsext\nsextain\nsextains\nsextan\nsextans\nsextant\nsextants\nsextarii\nsextet\nsextets\nsextette\nsextettes\nsextile\nsextiles\nsexto\nsexton\nsextons\nsextos\nsexts\nsextuple\nsextupled\nsextuples\nsextuplet\nsextuplets\nsextupling\nsextuply\nsexual\nsexuality\nsexualize\nsexualized\nsexualizes\nsexualizing\nsexually\nsexy\nsferics\nsforzato\nsforzatos\nsfumato\nsfumatos\nsh\nsha\nshabbier\nshabbiest\nshabbily\nshabbiness\nshabby\nshack\nshackle\nshackled\nshackler\nshacklers\nshackles\nshackling\nshacko\nshackoes\nshackos\nshacks\nshad\nshadblow\nshadblows\nshadbush\nshadbushes\nshadchan\nshadchanim\nshadchans\nshaddock\nshaddocks\nshade\nshaded\nshader\nshaders\nshades\nshadflies\nshadfly\nshadier\nshadiest\nshadily\nshadiness\nshading\nshadings\nshadoof\nshadoofs\nshadow\nshadowbox\nshadowboxed\nshadowboxes\nshadowboxing\nshadowed\nshadower\nshadowers\nshadowier\nshadowiest\nshadowiness\nshadowing\nshadows\nshadowy\nshadrach\nshadrachs\nshads\nshaduf\nshadufs\nshady\nshaft\nshafted\nshafting\nshaftings\nshafts\nshag\nshagbark\nshagbarks\nshagged\nshaggier\nshaggiest\nshaggily\nshagginess\nshagging\nshaggy\nshagreen\nshagreens\nshags\nshah\nshahdom\nshahdoms\nshahs\nshaird\nshairds\nshairn\nshairns\nshaitan\nshaitans\nshakable\nshake\nshakeable\nshakedown\nshakedowns\nshaken\nshakeout\nshakeouts\nshaker\nshakers\nshakes\nshakeup\nshakeups\nshakier\nshakiest\nshakily\nshakiness\nshaking\nshako\nshakoes\nshakos\nshaky\nshale\nshaled\nshales\nshalier\nshaliest\nshall\nshalloon\nshalloons\nshallop\nshallops\nshallot\nshallots\nshallow\nshallowed\nshallower\nshallowest\nshallowing\nshallowly\nshallowness\nshallows\nshalom\nshalt\nshaly\nsham\nshamable\nshaman\nshamanic\nshamanism\nshamanist\nshamanistic\nshamanists\nshamans\nshamble\nshambled\nshambles\nshambling\nshame\nshamed\nshamefaced\nshamefacedly\nshamefacedness\nshameful\nshamefully\nshamefulness\nshameless\nshamelessly\nshamelessness\nshames\nshaming\nshammas\nshammash\nshammashim\nshammasim\nshammed\nshammer\nshammers\nshammes\nshammied\nshammies\nshamming\nshammos\nshammosim\nshammy\nshammying\nshamois\nshamosim\nshamoy\nshamoyed\nshamoying\nshamoys\nshampoo\nshampooed\nshampooing\nshampoos\nshamrock\nshamrocks\nshams\nshamus\nshamuses\nshandies\nshandy\nshanghai\nshanghaied\nshanghaiing\nshanghais\nshank\nshanked\nshanking\nshanks\nshantey\nshanteys\nshanti\nshanties\nshantih\nshantihs\nshantis\nshantung\nshantungs\nshanty\nshapable\nshape\nshapeable\nshaped\nshapeless\nshapelessly\nshapelessness\nshapelier\nshapeliest\nshapely\nshapen\nshaper\nshapers\nshapes\nshapeup\nshapeups\nshaping\nsharable\nshard\nshards\nshare\nshareable\nsharecrop\nsharecropped\nsharecropper\nsharecroppers\nsharecropping\nsharecrops\nshared\nshareholder\nshareholders\nsharer\nsharers\nshares\nsharif\nsharifs\nsharing\nshark\nsharked\nsharker\nsharkers\nsharking\nsharks\nsharn\nsharns\nsharny\nsharp\nsharped\nsharpen\nsharpened\nsharpener\nsharpeners\nsharpening\nsharpens\nsharper\nsharpers\nsharpest\nsharpie\nsharpies\nsharping\nsharply\nsharpness\nsharps\nsharpshooter\nsharpshooters\nsharpshooting\nsharpy\nshashlik\nshashliks\nshaslik\nshasliks\nshat\nshatter\nshattered\nshattering\nshatteringly\nshatterproof\nshatters\nshaugh\nshaughs\nshaul\nshauled\nshauling\nshauls\nshavable\nshave\nshaved\nshaveling\nshavelings\nshaven\nshaver\nshavers\nshaves\nshavie\nshavies\nshaving\nshavings\nshaw\nshawed\nshawing\nshawl\nshawled\nshawling\nshawls\nshawm\nshawms\nshawn\nshaws\nshay\nshays\nshe\nshea\nsheaf\nsheafed\nsheafing\nsheafs\nsheal\nshealing\nshealings\nsheals\nshear\nsheared\nshearer\nshearers\nshearing\nshears\nsheas\nsheath\nsheathe\nsheathed\nsheather\nsheathers\nsheathes\nsheathing\nsheaths\nsheave\nsheaved\nsheaves\nsheaving\nshebang\nshebangs\nshebean\nshebeans\nshebeen\nshebeens\nshed\nshedable\nshedded\nshedder\nshedders\nshedding\nsheds\nsheen\nsheened\nsheeney\nsheeneys\nsheenful\nsheenie\nsheenier\nsheenies\nsheeniest\nsheening\nsheens\nsheeny\nsheep\nsheepdog\nsheepdogs\nsheepherder\nsheepherders\nsheepish\nsheepishly\nsheepishness\nsheepman\nsheepmen\nsheepskin\nsheepskins\nsheer\nsheered\nsheerer\nsheerest\nsheering\nsheerly\nsheerness\nsheers\nsheet\nsheeted\nsheeter\nsheeters\nsheetfed\nsheeting\nsheetings\nsheets\nsheeve\nsheeves\nshegetz\nsheik\nsheikdom\nsheikdoms\nsheikh\nsheikhdom\nsheikhdoms\nsheikhs\nsheiks\nsheitan\nsheitans\nshekel\nshekels\nshelduck\nshelducks\nshelf\nshelfful\nshelffuls\nshell\nshellac\nshellack\nshellacked\nshellacking\nshellackings\nshellacks\nshellacs\nshelled\nsheller\nshellers\nshellfish\nshellfisheries\nshellfishery\nshellier\nshelliest\nshelling\nshells\nshelly\nshelter\nsheltered\nsheltering\nshelterless\nshelters\nsheltie\nshelties\nshelty\nshelve\nshelved\nshelver\nshelvers\nshelves\nshelvier\nshelviest\nshelving\nshelvings\nshelvy\nshenanigan\nshenanigans\nshend\nshending\nshends\nshent\nsheol\nsheols\nshepherd\nshepherded\nshepherdess\nshepherdesses\nshepherding\nshepherds\nsherbert\nsherberts\nsherbet\nsherbets\nsherd\nsherds\nshereef\nshereefs\nsherif\nsheriff\nsheriffs\nsherifs\nsherlock\nsherlocks\nsheroot\nsheroots\nsherries\nsherris\nsherrises\nsherry\nshes\nshetland\nshetlands\nsheuch\nsheuchs\nsheugh\nsheughs\nshew\nshewed\nshewer\nshewers\nshewing\nshewn\nshews\nshh\nshibah\nshibahs\nshibboleth\nshibboleths\nshicksa\nshicksas\nshied\nshiel\nshield\nshielded\nshielder\nshielders\nshielding\nshields\nshieling\nshielings\nshiels\nshier\nshiers\nshies\nshiest\nshift\nshifted\nshifter\nshifters\nshiftier\nshiftiest\nshiftily\nshiftiness\nshifting\nshiftless\nshiftlessly\nshiftlessness\nshifts\nshifty\nshigella\nshigellae\nshigellas\nshikar\nshikaree\nshikarees\nshikari\nshikaris\nshikarred\nshikarring\nshikars\nshiksa\nshiksas\nshikse\nshikses\nshilingi\nshill\nshillala\nshillalas\nshilled\nshillelagh\nshillelaghs\nshilling\nshillings\nshills\nshilpit\nshily\nshim\nshimmed\nshimmer\nshimmered\nshimmering\nshimmers\nshimmery\nshimmied\nshimmies\nshimming\nshimmy\nshimmying\nshims\nshin\nshinbone\nshinbones\nshindies\nshindig\nshindigs\nshindy\nshindys\nshine\nshined\nshiner\nshiners\nshines\nshingle\nshingled\nshingler\nshinglers\nshingles\nshingling\nshingly\nshinier\nshiniest\nshinily\nshininess\nshining\nshinleaf\nshinleafs\nshinleaves\nshinned\nshinneries\nshinnery\nshinney\nshinneys\nshinnied\nshinnies\nshinning\nshinny\nshinnying\nshins\nshiny\nship\nshipboard\nshipboards\nshipbuilder\nshipbuilders\nshipbuilding\nshiplap\nshiplaps\nshipload\nshiploads\nshipman\nshipmate\nshipmates\nshipmen\nshipment\nshipments\nshipowner\nshipowners\nshippable\nshipped\nshippen\nshippens\nshipper\nshippers\nshipping\nshippings\nshippon\nshippons\nships\nshipshape\nshipside\nshipsides\nshipway\nshipways\nshipworm\nshipworms\nshipwreck\nshipwrecked\nshipwrecking\nshipwrecks\nshipwright\nshipwrights\nshipyard\nshipyards\nshire\nshires\nshirk\nshirked\nshirker\nshirkers\nshirking\nshirks\nshirr\nshirred\nshirring\nshirrings\nshirrs\nshirt\nshirtier\nshirtiest\nshirting\nshirtings\nshirts\nshirttail\nshirttails\nshirtwaist\nshirtwaists\nshirty\nshist\nshists\nshit\nshits\nshittah\nshittahs\nshitted\nshittim\nshittims\nshitting\nshiv\nshiva\nshivah\nshivahs\nshivaree\nshivareed\nshivareeing\nshivarees\nshivas\nshive\nshiver\nshivered\nshiverer\nshiverers\nshivering\nshivers\nshivery\nshives\nshivs\nshkotzim\nshlemiel\nshlemiels\nshlep\nshlock\nshlocks\nshmo\nshmoes\nshnaps\nshoal\nshoaled\nshoaler\nshoalest\nshoalier\nshoaliest\nshoaling\nshoals\nshoaly\nshoat\nshoats\nshock\nshockable\nshocked\nshocker\nshockers\nshocking\nshockingly\nshockproof\nshocks\nshod\nshodden\nshoddier\nshoddies\nshoddiest\nshoddily\nshoddiness\nshoddy\nshoe\nshoebill\nshoebills\nshoed\nshoehorn\nshoehorned\nshoehorning\nshoehorns\nshoeing\nshoelace\nshoelaces\nshoemaker\nshoemakers\nshoepac\nshoepack\nshoepacks\nshoepacs\nshoer\nshoers\nshoes\nshoestring\nshoestrings\nshoetree\nshoetrees\nshofar\nshofars\nshofroth\nshog\nshogged\nshogging\nshogs\nshogun\nshogunal\nshoguns\nshoji\nshojis\nsholom\nshone\nshoo\nshooed\nshooflies\nshoofly\nshooing\nshook\nshooks\nshool\nshooled\nshooling\nshools\nshoon\nshoos\nshoot\nshooter\nshooters\nshooting\nshootings\nshoots\nshop\nshopboy\nshopboys\nshopgirl\nshopgirls\nshophar\nshophars\nshophroth\nshopkeeper\nshopkeepers\nshoplift\nshoplifted\nshoplifter\nshoplifters\nshoplifting\nshoplifts\nshopman\nshopmen\nshoppe\nshopped\nshopper\nshoppers\nshoppes\nshopping\nshoppings\nshops\nshoptalk\nshoptalks\nshopworn\nshoran\nshorans\nshore\nshored\nshoreline\nshorelines\nshores\nshoreward\nshorewards\nshoring\nshorings\nshorl\nshorls\nshorn\nshort\nshortage\nshortages\nshortchange\nshortchanged\nshortchanger\nshortchangers\nshortchanges\nshortchanging\nshortcoming\nshortcomings\nshortcut\nshortcuts\nshorted\nshorten\nshortened\nshortener\nshorteners\nshortening\nshortens\nshorter\nshortest\nshortfall\nshortfalls\nshorthand\nshorthanded\nshorthands\nshorthorn\nshorthorns\nshortia\nshortias\nshortie\nshorties\nshorting\nshortish\nshortly\nshortness\nshorts\nshortsighted\nshortsightedly\nshortsightedness\nshortstop\nshortstops\nshortwave\nshortwaves\nshorty\nshot\nshote\nshotes\nshotgun\nshotgunned\nshotgunning\nshotguns\nshots\nshott\nshotted\nshotten\nshotting\nshotts\nshould\nshoulder\nshouldered\nshouldering\nshoulders\nshouldest\nshouldst\nshout\nshouted\nshouter\nshouters\nshouting\nshouts\nshove\nshoved\nshovel\nshoveled\nshoveler\nshovelers\nshovelful\nshovelfuls\nshoveling\nshovelled\nshoveller\nshovellers\nshovelling\nshovels\nshover\nshovers\nshoves\nshoving\nshow\nshowboat\nshowboated\nshowboating\nshowboats\nshowcase\nshowcased\nshowcases\nshowcasing\nshowdown\nshowdowns\nshowed\nshower\nshowered\nshowering\nshowers\nshowery\nshowgirl\nshowgirls\nshowier\nshowiest\nshowily\nshowiness\nshowing\nshowings\nshowman\nshowmanship\nshowmen\nshown\nshowoff\nshowoffs\nshowpiece\nshowpieces\nshowplace\nshowplaces\nshowroom\nshowrooms\nshows\nshowy\nshoyu\nshrank\nshrapnel\nshred\nshredded\nshredder\nshredders\nshredding\nshreds\nshrew\nshrewd\nshrewder\nshrewdest\nshrewdly\nshrewdness\nshrewed\nshrewing\nshrewish\nshrewishly\nshrewishness\nshrews\nshri\nshriek\nshrieked\nshrieker\nshriekers\nshriekier\nshriekiest\nshrieking\nshrieks\nshrieky\nshrieval\nshrieve\nshrieved\nshrieves\nshrieving\nshrift\nshrifts\nshrike\nshrikes\nshrill\nshrilled\nshriller\nshrillest\nshrilling\nshrillness\nshrills\nshrilly\nshrimp\nshrimped\nshrimper\nshrimpers\nshrimpier\nshrimpiest\nshrimping\nshrimps\nshrimpy\nshrine\nshrined\nshrines\nshrining\nshrink\nshrinkable\nshrinkage\nshrinkages\nshrinker\nshrinkers\nshrinking\nshrinks\nshris\nshrive\nshrived\nshrivel\nshriveled\nshriveling\nshrivelled\nshrivelling\nshrivels\nshriven\nshriver\nshrivers\nshrives\nshriving\nshroff\nshroffed\nshroffing\nshroffs\nshroud\nshrouded\nshrouding\nshrouds\nshrove\nshrub\nshrubberies\nshrubbery\nshrubbier\nshrubbiest\nshrubby\nshrubs\nshrug\nshrugged\nshrugging\nshrugs\nshrunk\nshrunken\nshtetel\nshtetl\nshtetlach\nshtick\nshticks\nshtik\nshuck\nshucked\nshucker\nshuckers\nshucking\nshuckings\nshucks\nshudder\nshuddered\nshuddering\nshudders\nshuddery\nshuffle\nshuffleboard\nshuffleboards\nshuffled\nshuffler\nshufflers\nshuffles\nshuffling\nshul\nshuln\nshuls\nshun\nshunned\nshunner\nshunners\nshunning\nshunpike\nshunpikes\nshuns\nshunt\nshunted\nshunter\nshunters\nshunting\nshunts\nshush\nshushed\nshushes\nshushing\nshut\nshutdown\nshutdowns\nshute\nshuted\nshutes\nshuteye\nshuteyes\nshuting\nshutoff\nshutoffs\nshutout\nshutouts\nshuts\nshutter\nshuttered\nshuttering\nshutterless\nshutters\nshutting\nshuttle\nshuttlecock\nshuttlecocked\nshuttlecocking\nshuttlecocks\nshuttled\nshuttles\nshuttling\nshwanpan\nshwanpans\nshy\nshyer\nshyers\nshyest\nshying\nshylock\nshylocked\nshylocking\nshylocks\nshyly\nshyness\nshynesses\nshyster\nshysters\nsi\nsial\nsialic\nsialoid\nsials\nsiamang\nsiamangs\nsiamese\nsiameses\nsib\nsibb\nsibbs\nsibilance\nsibilant\nsibilantly\nsibilants\nsibilate\nsibilated\nsibilates\nsibilating\nsibling\nsiblings\nsibs\nsibyl\nsibylic\nsibyllic\nsibyls\nsic\nsiccan\nsicced\nsiccing\nsice\nsices\nsick\nsickbay\nsickbays\nsickbed\nsickbeds\nsicked\nsicken\nsickened\nsickener\nsickeners\nsickening\nsickeningly\nsickens\nsicker\nsickerly\nsickest\nsicking\nsickish\nsickishly\nsickishness\nsickle\nsickled\nsickles\nsicklied\nsicklier\nsicklies\nsickliest\nsicklily\nsickliness\nsickling\nsickly\nsicklying\nsickness\nsicknesses\nsicko\nsickroom\nsickrooms\nsicks\nsics\nsiddur\nsiddurim\nsiddurs\nside\nsidearm\nsideband\nsidebands\nsideboard\nsideboards\nsideburns\nsidecar\nsidecars\nsided\nsidehill\nsidehills\nsidekick\nsidekicks\nsidelight\nsidelights\nsideline\nsidelined\nsideliner\nsideliners\nsidelines\nsideling\nsidelining\nsidelong\nsideman\nsidemen\nsidereal\nsiderite\nsiderites\nsides\nsidesaddle\nsidesaddles\nsideshow\nsideshows\nsideslip\nsideslipped\nsideslipping\nsideslips\nsidespin\nsidespins\nsidesplitting\nsidesplittingly\nsidestep\nsidestepped\nsidestepping\nsidesteps\nsidestroke\nsidestrokes\nsideswipe\nsideswiped\nsideswipes\nsideswiping\nsidetrack\nsidetracked\nsidetracking\nsidetracks\nsidewalk\nsidewalks\nsidewall\nsidewalls\nsideward\nsideway\nsideways\nsidewise\nsiding\nsidings\nsidle\nsidled\nsidler\nsidlers\nsidles\nsidling\nsiege\nsieged\nsieges\nsieging\nsiemens\nsienite\nsienites\nsienna\nsiennas\nsierozem\nsierozems\nsierra\nsierran\nsierras\nsies\nsiesta\nsiestas\nsieur\nsieurs\nsieve\nsieved\nsieves\nsieving\nsiffleur\nsiffleurs\nsift\nsifted\nsifter\nsifters\nsifting\nsiftings\nsifts\nsiganid\nsiganids\nsigh\nsighed\nsigher\nsighers\nsighing\nsighless\nsighlike\nsighs\nsight\nsighted\nsighter\nsighters\nsighting\nsightless\nsightlessly\nsightlessness\nsightlier\nsightliest\nsightliness\nsightly\nsights\nsightsaw\nsightsee\nsightseeing\nsightseen\nsightseer\nsightseers\nsightsees\nsigil\nsigils\nsigloi\nsiglos\nsigma\nsigmas\nsigmate\nsigmoid\nsigmoids\nsign\nsignal\nsignaled\nsignaler\nsignalers\nsignaling\nsignalize\nsignalized\nsignalizes\nsignalizing\nsignalled\nsignaller\nsignallers\nsignalling\nsignally\nsignalman\nsignalmen\nsignals\nsignatories\nsignatory\nsignature\nsignatures\nsignboard\nsignboards\nsigned\nsigner\nsigners\nsignet\nsigneted\nsigneting\nsignets\nsignificance\nsignificancy\nsignificant\nsignificantly\nsignification\nsignifications\nsignificative\nsignified\nsignifies\nsignify\nsignifying\nsigning\nsignior\nsigniori\nsigniories\nsigniors\nsigniory\nsignor\nsignora\nsignoras\nsignore\nsignori\nsignories\nsignorina\nsignorinas\nsignorine\nsignors\nsignory\nsignpost\nsignposted\nsignposting\nsignposts\nsigns\nsike\nsiker\nsikes\nsilage\nsilages\nsilane\nsilanes\nsild\nsilds\nsilence\nsilenced\nsilencer\nsilencers\nsilences\nsilencing\nsileni\nsilent\nsilenter\nsilentest\nsilently\nsilentness\nsilents\nsilenus\nsilesia\nsilesias\nsilex\nsilexes\nsilhouette\nsilhouetted\nsilhouettes\nsilhouetting\nsilica\nsilicas\nsilicate\nsilicates\nsilicic\nsilicide\nsilicides\nsilicification\nsilicified\nsilicifies\nsilicify\nsilicifying\nsilicium\nsiliciums\nsilicle\nsilicles\nsilicon\nsilicone\nsilicones\nsilicons\nsiliqua\nsiliquae\nsilique\nsiliques\nsilk\nsilked\nsilken\nsilkier\nsilkiest\nsilkily\nsilkiness\nsilking\nsilklike\nsilks\nsilkweed\nsilkweeds\nsilkworm\nsilkworms\nsilky\nsill\nsillabub\nsillabubs\nsiller\nsillers\nsillibibs\nsillibub\nsillibubs\nsillier\nsillies\nsilliest\nsillily\nsilliness\nsills\nsilly\nsilo\nsiloed\nsiloing\nsilos\nsiloxane\nsiloxanes\nsilt\nsiltation\nsilted\nsiltier\nsiltiest\nsilting\nsilts\nsilty\nsilurid\nsilurids\nsiluroid\nsiluroids\nsilva\nsilvae\nsilvan\nsilvans\nsilvas\nsilver\nsilvered\nsilverer\nsilverers\nsilverfish\nsilvering\nsilverly\nsilvern\nsilvers\nsilversmith\nsilversmiths\nsilverware\nsilverwares\nsilvery\nsilvical\nsilvics\nsilviculture\nsim\nsima\nsimar\nsimars\nsimaruba\nsimarubas\nsimas\nsimazine\nsimazines\nsimian\nsimians\nsimilar\nsimilarities\nsimilarity\nsimilarly\nsimile\nsimiles\nsimilitude\nsimilitudes\nsimioid\nsimious\nsimitar\nsimitars\nsimlin\nsimlins\nsimmer\nsimmered\nsimmering\nsimmers\nsimnel\nsimnels\nsimoleon\nsimoleons\nsimoniac\nsimoniacs\nsimonies\nsimonist\nsimonists\nsimonize\nsimonized\nsimonizes\nsimonizing\nsimony\nsimoom\nsimooms\nsimoon\nsimoons\nsimp\nsimper\nsimpered\nsimperer\nsimperers\nsimpering\nsimpers\nsimple\nsimpleness\nsimpler\nsimples\nsimplest\nsimpleton\nsimpletons\nsimplex\nsimplexes\nsimplices\nsimplicia\nsimplicities\nsimplicity\nsimplification\nsimplifications\nsimplified\nsimplifier\nsimplifiers\nsimplifies\nsimplify\nsimplifying\nsimplism\nsimplisms\nsimplistic\nsimplistically\nsimply\nsimps\nsims\nsimulant\nsimulants\nsimular\nsimulars\nsimulate\nsimulated\nsimulates\nsimulating\nsimulation\nsimulations\nsimulative\nsimulator\nsimulators\nsimulcast\nsimulcasting\nsimulcasts\nsimultaneities\nsimultaneity\nsimultaneous\nsimultaneously\nsimultaneousness\nsin\nsinapism\nsinapisms\nsince\nsincere\nsincerely\nsincerer\nsincerest\nsincerities\nsincerity\nsincipita\nsinciput\nsinciputs\nsine\nsinecure\nsinecures\nsines\nsinew\nsinewed\nsinewing\nsinews\nsinewy\nsinfonia\nsinfonie\nsinful\nsinfully\nsinfulness\nsing\nsingable\nsinge\nsinged\nsingeing\nsinger\nsingers\nsinges\nsinging\nsingle\nsingled\nsinglehood\nsingleness\nsingles\nsinglet\nsingleton\nsingletons\nsinglets\nsingling\nsingly\nsings\nsingsong\nsingsongs\nsingular\nsingularity\nsingularize\nsingularized\nsingularizes\nsingularizing\nsingularly\nsingulars\nsinh\nsinhs\nsinicize\nsinicized\nsinicizes\nsinicizing\nsinister\nsinisterly\nsink\nsinkable\nsinkage\nsinkages\nsinker\nsinkers\nsinkhole\nsinkholes\nsinking\nsinks\nsinless\nsinned\nsinner\nsinners\nsinning\nsinologies\nsinology\nsinopia\nsinopias\nsinopie\nsins\nsinsyne\nsinter\nsintered\nsintering\nsinters\nsinuate\nsinuated\nsinuates\nsinuating\nsinuosities\nsinuosity\nsinuous\nsinuously\nsinuousness\nsinus\nsinuses\nsinusoid\nsinusoids\nsip\nsipe\nsiped\nsipes\nsiphon\nsiphonal\nsiphoned\nsiphonic\nsiphoning\nsiphons\nsiping\nsipped\nsipper\nsippers\nsippet\nsippets\nsipping\nsips\nsir\nsirdar\nsirdars\nsire\nsired\nsiree\nsirees\nsiren\nsirenian\nsirenians\nsirens\nsires\nsiring\nsirloin\nsirloins\nsirocco\nsiroccos\nsirra\nsirrah\nsirrahs\nsirras\nsirree\nsirrees\nsirs\nsirup\nsirups\nsirupy\nsirvente\nsirventes\nsis\nsisal\nsisals\nsises\nsiskin\nsiskins\nsissier\nsissiest\nsissified\nsissy\nsissyish\nsister\nsistered\nsisterhood\nsisterhoods\nsistering\nsisterly\nsisters\nsistra\nsistroid\nsistrum\nsistrums\nsit\nsitar\nsitarist\nsitarists\nsitars\nsite\nsited\nsites\nsith\nsithence\nsithens\nsiting\nsitologies\nsitology\nsits\nsitten\nsitter\nsitters\nsitting\nsittings\nsituate\nsituated\nsituates\nsituating\nsituation\nsituational\nsituations\nsitup\nsitus\nsituses\nsitzmark\nsitzmarks\nsiver\nsivers\nsix\nsixes\nsixfold\nsixmo\nsixmos\nsixpence\nsixpences\nsixpenny\nsixte\nsixteen\nsixteens\nsixteenth\nsixteenths\nsixtes\nsixth\nsixthly\nsixths\nsixties\nsixtieth\nsixtieths\nsixty\nsizable\nsizableness\nsizably\nsizar\nsizars\nsize\nsizeable\nsizeably\nsized\nsizer\nsizers\nsizes\nsizier\nsiziest\nsiziness\nsizinesses\nsizing\nsizings\nsizy\nsizzle\nsizzled\nsizzler\nsizzlers\nsizzles\nsizzling\nska\nskag\nskags\nskald\nskaldic\nskalds\nskas\nskat\nskate\nskateboard\nskateboarder\nskateboarders\nskateboarding\nskateboards\nskated\nskater\nskaters\nskates\nskating\nskatings\nskatol\nskatole\nskatoles\nskatols\nskats\nskean\nskeane\nskeanes\nskeans\nskee\nskeed\nskeeing\nskeen\nskeens\nskees\nskeet\nskeeter\nskeeters\nskeets\nskeg\nskegs\nskeigh\nskein\nskeined\nskeining\nskeins\nskeletal\nskeletally\nskeleton\nskeletonize\nskeletonized\nskeletonizes\nskeletonizing\nskeletons\nskellum\nskellums\nskelm\nskelp\nskelped\nskelping\nskelpit\nskelps\nskelter\nskeltered\nskeltering\nskelters\nskene\nskenes\nskep\nskeps\nskepsis\nskepsises\nskeptic\nskeptical\nskeptically\nskepticism\nskepticisms\nskeptics\nskerries\nskerry\nsketch\nsketchbook\nsketchbooks\nsketched\nsketcher\nsketchers\nsketches\nsketchier\nsketchiest\nsketchily\nsketchiness\nsketching\nsketchy\nskew\nskewback\nskewbacks\nskewbald\nskewbalds\nskewed\nskewer\nskewered\nskewering\nskewers\nskewing\nskewness\nskewnesses\nskews\nski\nskiable\nskiagram\nskiagrams\nskibob\nskibobs\nskid\nskidded\nskidder\nskidders\nskiddier\nskiddiest\nskidding\nskiddoo\nskiddooed\nskiddooing\nskiddoos\nskiddy\nskidoo\nskidooed\nskidooing\nskidoos\nskids\nskidway\nskidways\nskied\nskier\nskiers\nskies\nskiey\nskiff\nskiffle\nskiffled\nskiffles\nskiffling\nskiffs\nskiing\nskiings\nskijorer\nskijorers\nskilful\nskilfully\nskilfulness\nskill\nskilled\nskilless\nskillessness\nskillet\nskillets\nskillful\nskillfully\nskillfulness\nskilling\nskillings\nskills\nskim\nskimmed\nskimmer\nskimmers\nskimming\nskimmings\nskimo\nskimos\nskimp\nskimped\nskimpier\nskimpiest\nskimpily\nskimpiness\nskimping\nskimps\nskimpy\nskims\nskin\nskinflint\nskinflints\nskinful\nskinfuls\nskinhead\nskinheads\nskink\nskinked\nskinker\nskinkers\nskinking\nskinks\nskinless\nskinlike\nskinned\nskinner\nskinners\nskinnier\nskinniest\nskinning\nskinny\nskins\nskint\nskintight\nskioring\nskiorings\nskip\nskipjack\nskipjacks\nskiplane\nskiplanes\nskipped\nskipper\nskippered\nskippering\nskippers\nskippet\nskippets\nskipping\nskips\nskirl\nskirled\nskirling\nskirls\nskirmish\nskirmished\nskirmisher\nskirmishers\nskirmishes\nskirmishing\nskirr\nskirred\nskirret\nskirrets\nskirring\nskirrs\nskirt\nskirted\nskirter\nskirters\nskirting\nskirtings\nskirts\nskis\nskit\nskite\nskited\nskites\nskiting\nskits\nskitter\nskittered\nskitterier\nskitteriest\nskittering\nskitters\nskittery\nskittish\nskittishly\nskittishness\nskittle\nskittles\nskive\nskived\nskiver\nskivers\nskives\nskiving\nskivvies\nskivvy\nskiwear\nskiwears\nsklent\nsklented\nsklenting\nsklents\nskoal\nskoaled\nskoaling\nskoals\nskookum\nskreegh\nskreeghed\nskreeghing\nskreeghs\nskreigh\nskreighed\nskreighing\nskreighs\nskua\nskuas\nskulduggeries\nskulduggery\nskulk\nskulked\nskulker\nskulkers\nskulking\nskulks\nskull\nskullcap\nskullcaps\nskullduggeries\nskullduggery\nskulled\nskulls\nskunk\nskunked\nskunking\nskunks\nsky\nskyborne\nskycap\nskycaps\nskydive\nskydived\nskydiver\nskydivers\nskydives\nskydiving\nskydove\nskyed\nskyey\nskyhook\nskyhooks\nskying\nskyjack\nskyjacked\nskyjacker\nskyjackers\nskyjacking\nskyjacks\nskylark\nskylarked\nskylarking\nskylarks\nskylight\nskylights\nskyline\nskylines\nskyman\nskymen\nskyphoi\nskyphos\nskyrocket\nskyrocketed\nskyrocketing\nskyrockets\nskysail\nskysails\nskyscraper\nskyscrapers\nskyward\nskywards\nskyway\nskyways\nskywrite\nskywrites\nskywriting\nskywritings\nskywritten\nskywrote\nslab\nslabbed\nslabber\nslabbered\nslabbering\nslabbers\nslabbery\nslabbing\nslabs\nslack\nslacked\nslacken\nslackened\nslackening\nslackens\nslacker\nslackers\nslackest\nslacking\nslackly\nslackness\nslacks\nslag\nslagged\nslaggier\nslaggiest\nslagging\nslaggy\nslags\nslain\nslakable\nslake\nslaked\nslaker\nslakers\nslakes\nslaking\nslalom\nslalomed\nslaloming\nslaloms\nslam\nslammed\nslamming\nslams\nslander\nslandered\nslanderer\nslanderers\nslandering\nslanderous\nslanderously\nslanders\nslang\nslanged\nslangier\nslangiest\nslangily\nslanginess\nslanging\nslangs\nslangy\nslank\nslant\nslanted\nslanting\nslants\nslantways\nslantwise\nslap\nslapdash\nslapdashes\nslapjack\nslapjacks\nslapped\nslapper\nslappers\nslapping\nslaps\nslapstick\nslapsticks\nslash\nslashed\nslasher\nslashers\nslashes\nslashing\nslashingly\nslashings\nslat\nslatch\nslatches\nslate\nslated\nslater\nslaters\nslates\nslather\nslathered\nslathering\nslathers\nslatier\nslatiest\nslating\nslatings\nslats\nslatted\nslattern\nslatternly\nslatterns\nslatting\nslaty\nslaughter\nslaughtered\nslaughterhouse\nslaughterhouses\nslaughtering\nslaughterous\nslaughterously\nslaughters\nslave\nslaved\nslaver\nslavered\nslaverer\nslaverers\nslaveries\nslavering\nslavers\nslavery\nslaves\nslavey\nslaveys\nslaving\nslavish\nslavishly\nslavishness\nslaw\nslaws\nslay\nslayer\nslayers\nslaying\nslays\nsleave\nsleaved\nsleaves\nsleaving\nsleazier\nsleaziest\nsleazily\nsleaziness\nsleazy\nsled\nsledded\nsledder\nsledders\nsledding\nsleddings\nsledge\nsledged\nsledgehammer\nsledgehammered\nsledgehammering\nsledgehammers\nsledges\nsledging\nsleds\nsleek\nsleeked\nsleeken\nsleekened\nsleekening\nsleekens\nsleeker\nsleekest\nsleekier\nsleekiest\nsleeking\nsleekit\nsleekly\nsleekness\nsleeks\nsleeky\nsleep\nsleeper\nsleepers\nsleepier\nsleepiest\nsleepily\nsleepiness\nsleeping\nsleepings\nsleepless\nsleeplessly\nsleeplessness\nsleeps\nsleepwalk\nsleepwalked\nsleepwalker\nsleepwalkers\nsleepwalking\nsleepwalks\nsleepy\nsleet\nsleeted\nsleetier\nsleetiest\nsleeting\nsleets\nsleety\nsleeve\nsleeved\nsleeveless\nsleevelet\nsleevelets\nsleeves\nsleeving\nsleigh\nsleighed\nsleigher\nsleighers\nsleighing\nsleighs\nsleight\nsleights\nslender\nslenderer\nslenderest\nslenderize\nslenderized\nslenderizes\nslenderizing\nslenderly\nslenderness\nslept\nsleuth\nsleuthed\nsleuthing\nsleuths\nslew\nslewed\nslewing\nslews\nslice\nsliced\nslicer\nslicers\nslices\nslicing\nslick\nslicked\nslicker\nslickers\nslickest\nslicking\nslickly\nslickness\nslicks\nslid\nslidable\nslidden\nslide\nslider\nsliders\nslides\nslideway\nslideways\nsliding\nslier\nsliest\nslight\nslighted\nslighter\nslightest\nslighting\nslightingly\nslightly\nslightness\nslights\nslily\nslim\nslime\nslimed\nslimes\nslimier\nslimiest\nslimily\nsliminess\nsliming\nslimly\nslimmed\nslimmer\nslimmest\nslimming\nslimness\nslimnesses\nslimpsier\nslimpsiest\nslimpsy\nslims\nslimsier\nslimsiest\nslimsy\nslimy\nsling\nslinger\nslingers\nslinging\nslings\nslingshot\nslingshots\nslink\nslinkier\nslinkiest\nslinkily\nslinkiness\nslinking\nslinks\nslinky\nslip\nslipcase\nslipcases\nslipcover\nslipcovers\nslipe\nsliped\nslipes\nslipform\nslipformed\nslipforming\nslipforms\nsliping\nslipknot\nslipknots\nslipless\nslipout\nslipouts\nslipover\nslipovers\nslippage\nslippages\nslipped\nslipper\nslipperier\nslipperiest\nslipperiness\nslippers\nslippery\nslippier\nslippiest\nslipping\nslippy\nslips\nslipshod\nslipslop\nslipslops\nslipsole\nslipsoles\nslipstream\nslipstreams\nslipt\nslipup\nslipups\nslipware\nslipwares\nslipway\nslipways\nslit\nslither\nslithered\nslithering\nslithers\nslithery\nslitless\nslits\nslitted\nslitter\nslitters\nslitting\nsliver\nslivered\nsliverer\nsliverers\nslivering\nslivers\nslivovic\nslivovices\nslivovics\nslob\nslobber\nslobbered\nslobbering\nslobbers\nslobbery\nslobbish\nslobs\nsloe\nsloes\nslog\nslogan\nsloganeer\nsloganeers\nslogans\nslogged\nslogger\nsloggers\nslogging\nslogs\nsloid\nsloids\nslojd\nslojds\nsloop\nsloops\nslop\nslope\nsloped\nsloper\nslopers\nslopes\nsloping\nslopped\nsloppier\nsloppiest\nsloppily\nsloppiness\nslopping\nsloppy\nslops\nslopwork\nslopworks\nslosh\nsloshed\nsloshes\nsloshier\nsloshiest\nsloshing\nsloshy\nslot\nslotback\nslotbacks\nsloth\nslothful\nslothfully\nslothfulness\nsloths\nslots\nslotted\nslotting\nslouch\nslouched\nsloucher\nslouchers\nslouches\nslouchier\nslouchiest\nslouchily\nslouchiness\nslouching\nslouchy\nslough\nsloughed\nsloughier\nsloughiest\nsloughing\nsloughs\nsloughy\nsloven\nslovenlier\nslovenliest\nslovenly\nslovens\nslow\nslowdown\nslowdowns\nslowed\nslower\nslowest\nslowing\nslowish\nslowly\nslowness\nslownesses\nslowpoke\nslowpokes\nslows\nslowworm\nslowworms\nsloyd\nsloyds\nslub\nslubbed\nslubber\nslubbered\nslubbering\nslubbers\nslubbing\nslubbings\nslubs\nsludge\nsludges\nsludgier\nsludgiest\nsludgy\nslue\nslued\nslues\nsluff\nsluffed\nsluffing\nsluffs\nslug\nslugabed\nslugabeds\nslugfest\nslugfests\nsluggard\nsluggardly\nsluggards\nslugged\nslugger\nsluggers\nslugging\nsluggish\nsluggishly\nsluggishness\nslugs\nsluice\nsluiced\nsluices\nsluicing\nsluicy\nsluing\nslum\nslumber\nslumbered\nslumbering\nslumberous\nslumbers\nslumbery\nslumbrous\nslumgum\nslumgums\nslumlord\nslumlords\nslummed\nslummer\nslummers\nslummier\nslummiest\nslumming\nslummy\nslump\nslumped\nslumping\nslumps\nslums\nslung\nslunk\nslur\nslurb\nslurban\nslurbs\nslurp\nslurped\nslurping\nslurps\nslurred\nslurried\nslurries\nslurring\nslurry\nslurrying\nslurs\nslush\nslushed\nslushes\nslushier\nslushiest\nslushily\nslushiness\nslushing\nslushy\nslut\nsluts\nsluttish\nsly\nslyboots\nslyer\nslyest\nslyly\nslyness\nslynesses\nslype\nslypes\nsmack\nsmacked\nsmacker\nsmackers\nsmacking\nsmacks\nsmall\nsmallage\nsmallages\nsmaller\nsmallest\nsmallish\nsmallness\nsmallpox\nsmallpoxes\nsmalls\nsmalt\nsmalti\nsmaltine\nsmaltines\nsmaltite\nsmaltites\nsmalto\nsmaltos\nsmalts\nsmaragd\nsmaragde\nsmaragdes\nsmaragds\nsmarm\nsmarmier\nsmarmiest\nsmarms\nsmarmy\nsmart\nsmarted\nsmarten\nsmartened\nsmartening\nsmartens\nsmarter\nsmartest\nsmartie\nsmarties\nsmarting\nsmartly\nsmartness\nsmarts\nsmarty\nsmash\nsmashed\nsmasher\nsmashers\nsmashes\nsmashing\nsmashup\nsmashups\nsmatter\nsmattered\nsmatterer\nsmatterers\nsmattering\nsmatterings\nsmatters\nsmaze\nsmazes\nsmear\nsmeared\nsmearer\nsmearers\nsmearier\nsmeariest\nsmearing\nsmears\nsmeary\nsmectic\nsmeddum\nsmeddums\nsmeek\nsmeeked\nsmeeking\nsmeeks\nsmegma\nsmegmas\nsmell\nsmelled\nsmeller\nsmellers\nsmellier\nsmelliest\nsmelling\nsmells\nsmelly\nsmelt\nsmelted\nsmelter\nsmelteries\nsmelters\nsmeltery\nsmelting\nsmelts\nsmerk\nsmerked\nsmerking\nsmerks\nsmew\nsmews\nsmidgen\nsmidgens\nsmidgeon\nsmidgeons\nsmidgin\nsmidgins\nsmilax\nsmilaxes\nsmile\nsmiled\nsmileless\nsmiler\nsmilers\nsmiles\nsmiling\nsmilingly\nsmirch\nsmirched\nsmirches\nsmirching\nsmirk\nsmirked\nsmirker\nsmirkers\nsmirkier\nsmirkiest\nsmirking\nsmirks\nsmirky\nsmit\nsmite\nsmiter\nsmiters\nsmites\nsmith\nsmitheries\nsmithery\nsmithies\nsmiths\nsmithy\nsmiting\nsmitten\nsmock\nsmocked\nsmocking\nsmockings\nsmocks\nsmog\nsmoggier\nsmoggiest\nsmoggy\nsmogless\nsmogs\nsmokable\nsmoke\nsmokeable\nsmoked\nsmokeless\nsmokepot\nsmokepots\nsmoker\nsmokers\nsmokes\nsmokestack\nsmokestacks\nsmokey\nsmokier\nsmokiest\nsmokily\nsmoking\nsmoky\nsmolder\nsmoldered\nsmoldering\nsmolders\nsmolt\nsmolts\nsmooch\nsmooched\nsmooches\nsmooching\nsmoochy\nsmooth\nsmoothbore\nsmoothbores\nsmoothed\nsmoothen\nsmoothened\nsmoothening\nsmoothens\nsmoother\nsmoothers\nsmoothest\nsmoothie\nsmoothies\nsmoothing\nsmoothly\nsmoothness\nsmooths\nsmoothy\nsmorgasbord\nsmorgasbords\nsmote\nsmother\nsmothered\nsmothering\nsmothers\nsmothery\nsmoulder\nsmouldered\nsmouldering\nsmoulders\nsmudge\nsmudged\nsmudges\nsmudgier\nsmudgiest\nsmudgily\nsmudging\nsmudgy\nsmug\nsmugger\nsmuggest\nsmuggle\nsmuggled\nsmuggler\nsmugglers\nsmuggles\nsmuggling\nsmugly\nsmugness\nsmugnesses\nsmut\nsmutch\nsmutched\nsmutches\nsmutchier\nsmutchiest\nsmutching\nsmutchy\nsmuts\nsmutted\nsmuttier\nsmuttiest\nsmuttily\nsmutting\nsmutty\nsnack\nsnacked\nsnacking\nsnacks\nsnaffle\nsnaffled\nsnaffles\nsnaffling\nsnafu\nsnafued\nsnafuing\nsnafus\nsnag\nsnagged\nsnaggier\nsnaggiest\nsnagging\nsnaggy\nsnaglike\nsnags\nsnail\nsnailed\nsnailing\nsnaillike\nsnails\nsnake\nsnakebite\nsnakebites\nsnaked\nsnakelike\nsnakes\nsnakeskin\nsnakeskins\nsnakier\nsnakiest\nsnakily\nsnaking\nsnaky\nsnap\nsnapback\nsnapbacks\nsnapless\nsnapped\nsnapper\nsnappers\nsnappier\nsnappiest\nsnappily\nsnapping\nsnappish\nsnappishly\nsnappishness\nsnappy\nsnaps\nsnapshot\nsnapshots\nsnapshotted\nsnapshotting\nsnapweed\nsnapweeds\nsnare\nsnared\nsnarer\nsnarers\nsnares\nsnaring\nsnark\nsnarks\nsnarl\nsnarled\nsnarler\nsnarlers\nsnarlier\nsnarliest\nsnarling\nsnarls\nsnarly\nsnash\nsnashes\nsnatch\nsnatched\nsnatcher\nsnatchers\nsnatches\nsnatchier\nsnatchiest\nsnatching\nsnatchy\nsnath\nsnathe\nsnathes\nsnaths\nsnaw\nsnawed\nsnawing\nsnaws\nsnazzier\nsnazziest\nsnazzy\nsneak\nsneaked\nsneaker\nsneakers\nsneakier\nsneakiest\nsneakily\nsneakiness\nsneaking\nsneakingly\nsneaks\nsneaky\nsneap\nsneaped\nsneaping\nsneaps\nsneck\nsnecks\nsned\nsnedded\nsnedding\nsneds\nsneer\nsneered\nsneerer\nsneerers\nsneerful\nsneering\nsneers\nsneesh\nsneeshes\nsneeze\nsneezed\nsneezer\nsneezers\nsneezes\nsneezier\nsneeziest\nsneezing\nsneezy\nsnell\nsneller\nsnellest\nsnells\nsnib\nsnibbed\nsnibbing\nsnibs\nsnick\nsnicked\nsnicker\nsnickered\nsnickerer\nsnickerers\nsnickering\nsnickers\nsnickery\nsnicking\nsnicks\nsnide\nsnidely\nsnideness\nsnider\nsnidest\nsniff\nsniffed\nsniffer\nsniffers\nsniffier\nsniffiest\nsniffily\nsniffing\nsniffish\nsniffle\nsniffled\nsniffler\nsnifflers\nsniffles\nsniffling\nsniffs\nsniffy\nsnifter\nsnifters\nsnigger\nsniggered\nsniggering\nsniggers\nsniggle\nsniggled\nsniggler\nsnigglers\nsniggles\nsniggling\nsnip\nsnipe\nsniped\nsniper\nsnipers\nsnipes\nsniping\nsnipped\nsnipper\nsnippers\nsnippet\nsnippetier\nsnippetiest\nsnippets\nsnippety\nsnippier\nsnippiest\nsnippily\nsnipping\nsnippy\nsnips\nsnit\nsnitch\nsnitched\nsnitcher\nsnitchers\nsnitches\nsnitching\nsnits\nsnivel\nsniveled\nsniveler\nsnivelers\nsniveling\nsnivelled\nsnivelling\nsnivels\nsnob\nsnobberies\nsnobbery\nsnobbier\nsnobbiest\nsnobbily\nsnobbish\nsnobbishly\nsnobbishness\nsnobbism\nsnobbisms\nsnobby\nsnobs\nsnog\nsnogs\nsnood\nsnooded\nsnooding\nsnoods\nsnook\nsnooked\nsnooker\nsnookers\nsnooking\nsnooks\nsnool\nsnooled\nsnooling\nsnools\nsnoop\nsnooped\nsnooper\nsnoopers\nsnoopier\nsnoopiest\nsnoopily\nsnooping\nsnoops\nsnoopy\nsnoot\nsnooted\nsnootier\nsnootiest\nsnootily\nsnooting\nsnoots\nsnooty\nsnooze\nsnoozed\nsnoozer\nsnoozers\nsnoozes\nsnoozier\nsnooziest\nsnoozing\nsnoozle\nsnoozled\nsnoozles\nsnoozling\nsnoozy\nsnore\nsnored\nsnorer\nsnorers\nsnores\nsnoring\nsnorkel\nsnorkeled\nsnorkeling\nsnorkels\nsnort\nsnorted\nsnorter\nsnorters\nsnorting\nsnorts\nsnot\nsnots\nsnottier\nsnottiest\nsnottily\nsnotty\nsnout\nsnouted\nsnoutier\nsnoutiest\nsnouting\nsnoutish\nsnouts\nsnouty\nsnow\nsnowball\nsnowballed\nsnowballing\nsnowballs\nsnowbank\nsnowbanks\nsnowbell\nsnowbells\nsnowbird\nsnowbirds\nsnowblower\nsnowblowers\nsnowbound\nsnowbush\nsnowbushes\nsnowcap\nsnowcaps\nsnowdrift\nsnowdrifts\nsnowdrop\nsnowdrops\nsnowed\nsnowfall\nsnowfalls\nsnowflake\nsnowflakes\nsnowier\nsnowiest\nsnowily\nsnowiness\nsnowing\nsnowland\nsnowlands\nsnowless\nsnowlike\nsnowman\nsnowmelt\nsnowmelts\nsnowmen\nsnowmobile\nsnowmobiles\nsnowpack\nsnowpacks\nsnowplow\nsnowplowed\nsnowplowing\nsnowplows\nsnows\nsnowshed\nsnowsheds\nsnowshoe\nsnowshoed\nsnowshoeing\nsnowshoes\nsnowstorm\nsnowstorms\nsnowsuit\nsnowsuits\nsnowy\nsnub\nsnubbed\nsnubber\nsnubbers\nsnubbier\nsnubbiest\nsnubbing\nsnubby\nsnubness\nsnubnesses\nsnubs\nsnuck\nsnuff\nsnuffbox\nsnuffboxes\nsnuffed\nsnuffer\nsnuffers\nsnuffier\nsnuffiest\nsnuffily\nsnuffing\nsnuffle\nsnuffled\nsnuffler\nsnufflers\nsnuffles\nsnufflier\nsnuffliest\nsnuffling\nsnuffly\nsnuffs\nsnuffy\nsnug\nsnugged\nsnugger\nsnuggeries\nsnuggery\nsnuggest\nsnugging\nsnuggle\nsnuggled\nsnuggles\nsnuggling\nsnugly\nsnugness\nsnugnesses\nsnugs\nsnye\nsnyes\nso\nsoak\nsoakage\nsoakages\nsoaked\nsoaker\nsoakers\nsoaking\nsoaks\nsoap\nsoapbark\nsoapbarks\nsoapbox\nsoapboxes\nsoaped\nsoapier\nsoapiest\nsoapily\nsoapiness\nsoaping\nsoapless\nsoaplike\nsoaps\nsoapstone\nsoapstones\nsoapsuds\nsoapwort\nsoapworts\nsoapy\nsoar\nsoared\nsoarer\nsoarers\nsoaring\nsoarings\nsoars\nsoave\nsoaves\nsob\nsobbed\nsobber\nsobbers\nsobbing\nsobeit\nsober\nsobered\nsoberer\nsoberest\nsobering\nsoberize\nsoberized\nsoberizes\nsoberizing\nsoberly\nsoberness\nsobers\nsobful\nsobrieties\nsobriety\nsobriquet\nsobriquets\nsobs\nsocage\nsocager\nsocagers\nsocages\nsoccage\nsoccages\nsoccer\nsoccers\nsociability\nsociable\nsociableness\nsociables\nsociably\nsocial\nsocialism\nsocialist\nsocialistic\nsocialistically\nsocialists\nsocialite\nsocialites\nsocialities\nsociality\nsocialization\nsocializations\nsocialize\nsocialized\nsocializer\nsocializers\nsocializes\nsocializing\nsocially\nsocials\nsocietal\nsocietally\nsocieties\nsociety\nsociocultural\nsocioeconomic\nsocioeconomically\nsociological\nsociologically\nsociologist\nsociologists\nsociology\nsociopath\nsociopathic\nsociopaths\nsock\nsocked\nsocket\nsocketed\nsocketing\nsockets\nsockeye\nsockeyes\nsocking\nsockman\nsockmen\nsocko\nsocks\nsocle\nsocles\nsocman\nsocmen\nsod\nsoda\nsodaless\nsodalist\nsodalists\nsodalite\nsodalites\nsodalities\nsodality\nsodamide\nsodamides\nsodas\nsodded\nsodden\nsoddened\nsoddening\nsoddenly\nsoddenness\nsoddens\nsoddies\nsodding\nsoddy\nsodic\nsodium\nsodiums\nsodom\nsodomies\nsodomite\nsodomites\nsodomitic\nsodomitical\nsodomy\nsods\nsoever\nsofa\nsofar\nsofars\nsofas\nsoffit\nsoffits\nsoft\nsofta\nsoftas\nsoftback\nsoftbacks\nsoftball\nsoftballs\nsoften\nsoftened\nsoftener\nsofteners\nsoftening\nsoftens\nsofter\nsoftest\nsofthead\nsoftheads\nsofthearted\nsoftheartedly\nsoftheartedness\nsoftie\nsofties\nsoftly\nsoftness\nsoftnesses\nsofts\nsoftware\nsoftwares\nsoftwood\nsoftwoods\nsofty\nsogged\nsoggier\nsoggiest\nsoggily\nsogginess\nsoggy\nsoigne\nsoignee\nsoil\nsoilage\nsoilages\nsoiled\nsoiling\nsoilless\nsoils\nsoilure\nsoilures\nsoiree\nsoirees\nsoja\nsojas\nsojourn\nsojourned\nsojourner\nsojourners\nsojourning\nsojourns\nsoke\nsokeman\nsokemen\nsokes\nsokol\nsol\nsola\nsolace\nsolaced\nsolacement\nsolacements\nsolacer\nsolacers\nsolaces\nsolacing\nsolan\nsoland\nsolander\nsolanders\nsolands\nsolanin\nsolanine\nsolanines\nsolanins\nsolano\nsolanos\nsolans\nsolanum\nsolanums\nsolar\nsolaria\nsolarise\nsolarised\nsolarises\nsolarising\nsolarism\nsolarisms\nsolarium\nsolariums\nsolarization\nsolarizations\nsolarize\nsolarized\nsolarizes\nsolarizing\nsolate\nsolated\nsolates\nsolatia\nsolating\nsolation\nsolations\nsolatium\nsold\nsoldan\nsoldans\nsolder\nsoldered\nsolderer\nsolderers\nsoldering\nsolders\nsoldi\nsoldier\nsoldiered\nsoldieries\nsoldiering\nsoldierly\nsoldiers\nsoldiery\nsoldo\nsole\nsolecise\nsolecised\nsolecises\nsolecising\nsolecism\nsolecisms\nsolecist\nsolecistic\nsolecists\nsolecize\nsolecized\nsolecizes\nsolecizing\nsoled\nsolei\nsoleless\nsolely\nsolemn\nsolemner\nsolemnest\nsolemnified\nsolemnifies\nsolemnify\nsolemnifying\nsolemnities\nsolemnity\nsolemnization\nsolemnizations\nsolemnize\nsolemnized\nsolemnizes\nsolemnizing\nsolemnly\nsolemnness\nsoleness\nsolenesses\nsolenoid\nsolenoidal\nsolenoids\nsoleret\nsolerets\nsoles\nsolfege\nsolfeges\nsolfeggi\nsolgel\nsoli\nsolicit\nsolicitation\nsolicitations\nsolicited\nsoliciting\nsolicitor\nsolicitors\nsolicitorship\nsolicitous\nsolicitously\nsolicitousness\nsolicits\nsolicitude\nsolicitudes\nsolid\nsolidago\nsolidagos\nsolidarities\nsolidarity\nsolidary\nsolider\nsolidest\nsolidi\nsolidification\nsolidifications\nsolidified\nsolidifies\nsolidify\nsolidifying\nsolidities\nsolidity\nsolidly\nsolidness\nsolids\nsolidus\nsoliloquies\nsoliloquist\nsoliloquists\nsoliloquize\nsoliloquized\nsoliloquizer\nsoliloquizers\nsoliloquizes\nsoliloquizing\nsoliloquy\nsoling\nsolion\nsolions\nsolipsism\nsolipsisms\nsolipsist\nsolipsistic\nsolipsists\nsoliquid\nsoliquids\nsolitaire\nsolitaires\nsolitaries\nsolitarily\nsolitariness\nsolitary\nsolitude\nsolitudes\nsolleret\nsollerets\nsolo\nsoloed\nsoloing\nsoloist\nsoloists\nsolon\nsolonets\nsolonetses\nsolonetz\nsolonetzes\nsolons\nsolos\nsols\nsolstice\nsolstices\nsolubilities\nsolubility\nsoluble\nsolubles\nsolubly\nsolum\nsolums\nsolus\nsolute\nsolutes\nsolution\nsolutions\nsolvability\nsolvable\nsolvate\nsolvated\nsolvates\nsolvating\nsolve\nsolved\nsolvencies\nsolvency\nsolvent\nsolvently\nsolvents\nsolver\nsolvers\nsolves\nsolving\nsoma\nsomas\nsomata\nsomatic\nsomatically\nsomber\nsomberly\nsomberness\nsombre\nsombrely\nsombrero\nsombreros\nsombrous\nsome\nsomebodies\nsomebody\nsomeday\nsomedeal\nsomehow\nsomeone\nsomeones\nsomeplace\nsomersault\nsomersaulted\nsomersaulting\nsomersaults\nsomerset\nsomerseted\nsomerseting\nsomersets\nsomersetted\nsomersetting\nsomething\nsomethings\nsometime\nsometimes\nsomeway\nsomeways\nsomewhat\nsomewhats\nsomewhen\nsomewhere\nsomewise\nsomital\nsomite\nsomites\nsomitic\nsomnambulate\nsomnambulated\nsomnambulates\nsomnambulating\nsomnambulation\nsomnambulations\nsomnambulist\nsomnambulistic\nsomnambulists\nsomnolence\nsomnolency\nsomnolent\nsomnolently\nson\nsonance\nsonances\nsonant\nsonantal\nsonantic\nsonants\nsonar\nsonarman\nsonarmen\nsonars\nsonata\nsonatas\nsonatina\nsonatinas\nsonatine\nsonde\nsonder\nsonders\nsondes\nsone\nsones\nsong\nsongbird\nsongbirds\nsongbook\nsongbooks\nsongfest\nsongfests\nsongful\nsongfully\nsongfulness\nsongless\nsonglessly\nsonglike\nsongs\nsongster\nsongsters\nsongstress\nsongstresses\nsonic\nsonicate\nsonicated\nsonicates\nsonicating\nsonics\nsonless\nsonlike\nsonly\nsonnet\nsonneted\nsonneteer\nsonneteers\nsonneting\nsonnetize\nsonnetized\nsonnetizes\nsonnetizing\nsonnets\nsonnetted\nsonnetting\nsonnies\nsonny\nsonorant\nsonorants\nsonorities\nsonority\nsonorous\nsonorously\nsonorousness\nsonovox\nsonovoxes\nsons\nsonship\nsonships\nsonsie\nsonsier\nsonsiest\nsonsy\nsoochong\nsoochongs\nsooey\nsook\nsooks\nsoon\nsooner\nsooners\nsoonest\nsoot\nsooted\nsooth\nsoothe\nsoothed\nsoother\nsoothers\nsoothes\nsoothest\nsoothing\nsoothingly\nsoothingness\nsoothly\nsooths\nsoothsaid\nsoothsay\nsoothsayer\nsoothsayers\nsoothsaying\nsoothsays\nsootier\nsootiest\nsootily\nsootiness\nsooting\nsoots\nsooty\nsop\nsoph\nsophies\nsophism\nsophisms\nsophist\nsophistic\nsophistical\nsophistically\nsophisticate\nsophisticated\nsophisticatedly\nsophisticates\nsophisticating\nsophistication\nsophistries\nsophistry\nsophists\nsophomore\nsophomores\nsophomoric\nsophs\nsophy\nsopite\nsopited\nsopites\nsopiting\nsopor\nsoporiferous\nsoporiferousness\nsoporific\nsoporifics\nsopors\nsopped\nsoppier\nsoppiest\nsopping\nsoppy\nsoprani\nsoprano\nsopranos\nsops\nsora\nsoras\nsorb\nsorbable\nsorbate\nsorbates\nsorbed\nsorbent\nsorbents\nsorbet\nsorbets\nsorbic\nsorbing\nsorbitol\nsorbitols\nsorbose\nsorboses\nsorbs\nsorcerer\nsorcerers\nsorceress\nsorceresses\nsorceries\nsorcerous\nsorcery\nsord\nsordid\nsordidly\nsordidness\nsordine\nsordines\nsordini\nsordino\nsords\nsore\nsorehead\nsoreheaded\nsoreheads\nsorel\nsorels\nsorely\nsoreness\nsorenesses\nsorer\nsores\nsorest\nsorgho\nsorghos\nsorghum\nsorghums\nsorgo\nsorgos\nsori\nsoricine\nsorites\nsoritic\nsorn\nsorned\nsorner\nsorners\nsorning\nsorns\nsoroche\nsoroches\nsororal\nsororate\nsororates\nsororities\nsorority\nsoroses\nsorosis\nsorosises\nsorption\nsorptions\nsorptive\nsorrel\nsorrels\nsorrier\nsorriest\nsorrily\nsorriness\nsorrow\nsorrowed\nsorrower\nsorrowers\nsorrowful\nsorrowfully\nsorrowfulness\nsorrowing\nsorrows\nsorry\nsort\nsortable\nsortably\nsorted\nsorter\nsorters\nsortie\nsortied\nsortieing\nsorties\nsorting\nsorts\nsorus\nsos\nsot\nsoth\nsoths\nsotol\nsotols\nsots\nsottish\nsou\nsouari\nsouaris\nsoubise\nsoubises\nsoubrette\nsoubrettes\nsoucar\nsoucars\nsouchong\nsouchongs\nsoudan\nsoudans\nsouffle\nsouffleed\nsouffles\nsough\nsoughed\nsoughing\nsoughs\nsought\nsouk\nsouks\nsoul\nsouled\nsoulful\nsoulfully\nsoulfulness\nsoulless\nsoullessly\nsoullessness\nsoullike\nsouls\nsound\nsoundable\nsoundbox\nsoundboxes\nsounded\nsounder\nsounders\nsoundest\nsounding\nsoundingly\nsoundings\nsoundless\nsoundlessly\nsoundly\nsoundness\nsoundproof\nsoundproofed\nsoundproofing\nsoundproofs\nsounds\nsoup\nsoupcon\nsoupcons\nsouped\nsoupier\nsoupiest\nsouping\nsoups\nsoupy\nsour\nsourball\nsourballs\nsource\nsourceless\nsources\nsourdine\nsourdines\nsourdough\nsourdoughs\nsoured\nsourer\nsourest\nsouring\nsourish\nsourly\nsourness\nsournesses\nsourpuss\nsourpusses\nsours\nsoursop\nsoursops\nsourwood\nsourwoods\nsous\nsousaphone\nsousaphones\nsouse\nsoused\nsouses\nsousing\nsoutache\nsoutaches\nsoutane\nsoutanes\nsouter\nsouters\nsouth\nsoutheast\nsoutheaster\nsoutheasterly\nsoutheastern\nsoutheasters\nsoutheastward\nsoutheastwards\nsouthed\nsouther\nsoutherlies\nsoutherly\nsouthern\nsouthernmost\nsoutherns\nsouthers\nsouthing\nsouthings\nsouthpaw\nsouthpaws\nsouthron\nsouthrons\nsouths\nsouthward\nsouthwards\nsouthwest\nsouthwester\nsouthwesterly\nsouthwestern\nsouthwesters\nsouthwestward\nsouthwestwards\nsouvenir\nsouvenirs\nsovereign\nsovereignly\nsovereigns\nsovereignties\nsovereignty\nsoviet\nsovietism\nsovietisms\nsovietization\nsovietizations\nsovietize\nsovietized\nsovietizes\nsovietizing\nsoviets\nsovkhoz\nsovkhozes\nsovkhozy\nsovran\nsovranly\nsovrans\nsovranties\nsovranty\nsow\nsowable\nsowans\nsowar\nsowars\nsowbellies\nsowbelly\nsowbread\nsowbreads\nsowcar\nsowcars\nsowed\nsowens\nsower\nsowers\nsowing\nsown\nsows\nsox\nsoy\nsoya\nsoyas\nsoybean\nsoybeans\nsoys\nsoyuz\nsozin\nsozine\nsozines\nsozins\nspa\nspace\nspacecraft\nspacecrafts\nspaced\nspaceflight\nspaceflights\nspaceman\nspacemen\nspaceport\nspaceports\nspacer\nspacers\nspaces\nspaceship\nspaceships\nspacial\nspacing\nspacings\nspacious\nspaciously\nspaciousness\nspackling\nspacy\nspade\nspaded\nspadeful\nspadefuls\nspadelike\nspader\nspaders\nspades\nspadework\nspadices\nspadille\nspadilles\nspading\nspadix\nspado\nspadones\nspae\nspaed\nspaeing\nspaeings\nspaes\nspaghetti\nspaghettis\nspagyric\nspagyrics\nspahee\nspahees\nspahi\nspahis\nspail\nspails\nspait\nspaits\nspake\nspale\nspales\nspall\nspalled\nspaller\nspallers\nspalling\nspalls\nspalpeen\nspalpeens\nspan\nspancel\nspanceled\nspanceling\nspancelled\nspancelling\nspancels\nspandrel\nspandrels\nspandril\nspandrils\nspang\nspangle\nspangled\nspangles\nspanglier\nspangliest\nspangling\nspangly\nspaniel\nspaniels\nspank\nspanked\nspanker\nspankers\nspanking\nspankings\nspanks\nspanless\nspanned\nspanner\nspanners\nspanning\nspans\nspanworm\nspanworms\nspar\nsparable\nsparables\nspare\nspareable\nspared\nsparely\nspareness\nsparer\nsparerib\nspareribs\nsparers\nspares\nsparest\nsparge\nsparged\nsparger\nspargers\nsparges\nsparging\nsparid\nsparids\nsparing\nsparingly\nspark\nsparked\nsparker\nsparkers\nsparkier\nsparkiest\nsparkily\nsparking\nsparkish\nsparkle\nsparkled\nsparkler\nsparklers\nsparkles\nsparkling\nsparks\nsparky\nsparlike\nsparling\nsparlings\nsparoid\nsparoids\nsparred\nsparrier\nsparriest\nsparring\nsparrow\nsparrowlike\nsparrows\nsparry\nspars\nsparse\nsparsely\nsparseness\nsparser\nsparsest\nsparsities\nsparsity\nspas\nspasm\nspasmodic\nspasmodically\nspasms\nspastic\nspastically\nspastics\nspat\nspate\nspates\nspathal\nspathe\nspathed\nspathes\nspathic\nspathose\nspatial\nspatiality\nspatially\nspats\nspatted\nspatter\nspattered\nspattering\nspatters\nspatting\nspatula\nspatular\nspatulas\nspavie\nspavies\nspaviet\nspavin\nspavined\nspavins\nspawn\nspawned\nspawner\nspawners\nspawning\nspawns\nspay\nspayed\nspaying\nspays\nspaz\nspeak\nspeakable\nspeakeasies\nspeakeasy\nspeaker\nspeakers\nspeaking\nspeakings\nspeaks\nspean\nspeaned\nspeaning\nspeans\nspear\nspeared\nspearer\nspearers\nspearhead\nspearheaded\nspearheading\nspearheads\nspearing\nspearman\nspearmen\nspearmint\nspearmints\nspears\nspec\nspecial\nspecialer\nspecialest\nspecialism\nspecialist\nspecialists\nspecialities\nspeciality\nspecialization\nspecializations\nspecialize\nspecialized\nspecializes\nspecializing\nspecially\nspecials\nspecialties\nspecialty\nspeciate\nspeciated\nspeciates\nspeciating\nspecie\nspecies\nspecifiable\nspecific\nspecifically\nspecification\nspecifications\nspecificities\nspecificity\nspecifics\nspecified\nspecifier\nspecifiers\nspecifies\nspecify\nspecifying\nspecimen\nspecimens\nspeciosities\nspeciosity\nspecious\nspeciously\nspeciousness\nspeck\nspecked\nspecking\nspeckle\nspeckled\nspeckles\nspeckling\nspecks\nspecs\nspectacle\nspectacled\nspectacles\nspectacular\nspectacularly\nspectaculars\nspectate\nspectated\nspectates\nspectating\nspectator\nspectators\nspecter\nspecters\nspectra\nspectral\nspectrally\nspectre\nspectres\nspectrometer\nspectrometers\nspectrometric\nspectrometry\nspectroscope\nspectroscopes\nspectroscopic\nspectroscopically\nspectroscopist\nspectroscopists\nspectroscopy\nspectrum\nspectrums\nspecula\nspecular\nspeculate\nspeculated\nspeculates\nspeculating\nspeculation\nspeculations\nspeculative\nspeculatively\nspeculator\nspeculators\nspeculum\nspeculums\nsped\nspeech\nspeeches\nspeechified\nspeechifies\nspeechify\nspeechifying\nspeechless\nspeechlessly\nspeechlessness\nspeed\nspeedboat\nspeedboats\nspeeded\nspeeder\nspeeders\nspeedier\nspeediest\nspeedily\nspeediness\nspeeding\nspeedings\nspeedometer\nspeedometers\nspeeds\nspeedster\nspeedsters\nspeedup\nspeedups\nspeedway\nspeedways\nspeedy\nspeel\nspeeled\nspeeling\nspeels\nspeer\nspeered\nspeering\nspeerings\nspeers\nspeil\nspeiled\nspeiling\nspeils\nspeir\nspeired\nspeiring\nspeirs\nspeise\nspeises\nspeiss\nspeisses\nspelaean\nspelean\nspell\nspellbind\nspellbinder\nspellbinders\nspellbinding\nspellbinds\nspellbound\nspelled\nspeller\nspellers\nspelling\nspellings\nspells\nspelt\nspelter\nspelters\nspelts\nspeltz\nspeltzes\nspelunk\nspelunked\nspelunker\nspelunkers\nspelunking\nspelunks\nspence\nspencer\nspencers\nspences\nspend\nspendable\nspender\nspenders\nspending\nspends\nspendthrift\nspendthrifts\nspent\nsperm\nspermaries\nspermary\nspermatic\nspermic\nspermine\nspermines\nspermous\nsperms\nspew\nspewed\nspewer\nspewers\nspewing\nspews\nsphagnum\nsphagnums\nsphene\nsphenes\nsphenic\nsphenoid\nsphenoidal\nsphenoids\nspheral\nsphere\nsphered\nspheres\nspheric\nspherical\nspherically\nsphericity\nspherics\nspherier\nspheriest\nsphering\nspheroid\nspheroidal\nspheroidally\nspheroids\nspherule\nspherules\nsphery\nsphincter\nsphincteral\nsphincters\nsphinges\nsphingid\nsphingids\nsphinx\nsphinxes\nsphygmic\nsphygmograph\nsphygmographic\nsphygmographs\nsphygmography\nsphygmomanometer\nsphygmomanometers\nsphygmus\nsphygmuses\nspic\nspica\nspicae\nspicas\nspicate\nspicated\nspiccato\nspiccatos\nspice\nspiced\nspicer\nspiceries\nspicers\nspicery\nspices\nspicey\nspicier\nspiciest\nspicily\nspicing\nspick\nspicks\nspics\nspicula\nspiculae\nspicular\nspicule\nspicules\nspiculum\nspicy\nspider\nspiderier\nspideriest\nspiders\nspidery\nspied\nspiegel\nspiegels\nspiel\nspieled\nspieler\nspielers\nspieling\nspiels\nspier\nspiered\nspiering\nspiers\nspies\nspiff\nspiffier\nspiffiest\nspiffily\nspiffing\nspiffy\nspigot\nspigots\nspik\nspike\nspiked\nspikelet\nspikelets\nspiker\nspikers\nspikes\nspikier\nspikiest\nspikily\nspiking\nspiks\nspiky\nspile\nspiled\nspiles\nspilikin\nspilikins\nspiling\nspilings\nspill\nspillage\nspillages\nspilled\nspiller\nspillers\nspilling\nspills\nspillway\nspillways\nspilt\nspilth\nspilths\nspin\nspinach\nspinaches\nspinage\nspinages\nspinal\nspinally\nspinals\nspinate\nspindle\nspindled\nspindler\nspindlers\nspindles\nspindlier\nspindliest\nspindling\nspindly\nspindrift\nspindrifts\nspine\nspined\nspinel\nspineless\nspinelle\nspinelles\nspinels\nspines\nspinet\nspinets\nspinier\nspiniest\nspinifex\nspinifexes\nspininess\nspinless\nspinnaker\nspinnakers\nspinner\nspinneries\nspinners\nspinnery\nspinney\nspinneys\nspinnies\nspinning\nspinnings\nspinny\nspinoff\nspinoffs\nspinor\nspinors\nspinose\nspinous\nspinout\nspinouts\nspins\nspinster\nspinsterhood\nspinsterish\nspinsters\nspinula\nspinulae\nspinule\nspinules\nspiny\nspiracle\nspiracles\nspiraea\nspiraeas\nspiral\nspiraled\nspiraling\nspiralled\nspiralling\nspirally\nspirals\nspirant\nspirants\nspire\nspirea\nspireas\nspired\nspirem\nspireme\nspiremes\nspirems\nspires\nspirilla\nspiring\nspirit\nspirited\nspiritedly\nspiriting\nspiritism\nspiritist\nspiritists\nspiritless\nspiritlessly\nspirits\nspiritual\nspiritualism\nspiritualist\nspiritualistic\nspiritualists\nspiritualities\nspirituality\nspiritualization\nspiritualizations\nspiritualize\nspiritualized\nspiritualizes\nspiritualizing\nspiritually\nspiritualness\nspirituals\nspirituel\nspirituelle\nspirituous\nspirochetal\nspirochete\nspirochetes\nspiroid\nspirt\nspirted\nspirting\nspirts\nspirula\nspirulae\nspirulas\nspiry\nspit\nspital\nspitals\nspitball\nspitballs\nspite\nspited\nspiteful\nspitefuller\nspitefullest\nspitefully\nspitefulness\nspites\nspitfire\nspitfires\nspiting\nspits\nspitted\nspitter\nspitters\nspitting\nspittle\nspittles\nspittoon\nspittoons\nspitz\nspitzes\nspiv\nspivs\nsplake\nsplakes\nsplash\nsplashdown\nsplashdowns\nsplashed\nsplasher\nsplashers\nsplashes\nsplashier\nsplashiest\nsplashiness\nsplashing\nsplashy\nsplat\nsplats\nsplatter\nsplattered\nsplattering\nsplatters\nsplay\nsplayed\nsplayfoot\nsplayfooted\nsplaying\nsplays\nspleen\nspleenful\nspleenier\nspleeniest\nspleens\nspleeny\nsplendid\nsplendider\nsplendidest\nsplendidly\nsplendidness\nsplendiferous\nsplendiferously\nsplendiferousness\nsplendor\nsplendorous\nsplendors\nsplenetic\nsplenetically\nsplenia\nsplenial\nsplenic\nsplenii\nsplenium\nsplenius\nsplent\nsplents\nsplice\nspliced\nsplicer\nsplicers\nsplices\nsplicing\nspline\nsplined\nsplines\nsplining\nsplint\nsplinted\nsplinter\nsplintered\nsplintering\nsplinters\nsplintery\nsplinting\nsplints\nsplit\nsplits\nsplitter\nsplitters\nsplitting\nsplore\nsplores\nsplosh\nsploshed\nsploshes\nsploshing\nsplotch\nsplotched\nsplotches\nsplotchier\nsplotchiest\nsplotching\nsplotchy\nsplurge\nsplurged\nsplurges\nsplurgier\nsplurgiest\nsplurging\nsplurgy\nsplutter\nspluttered\nspluttering\nsplutters\nspode\nspodes\nspoil\nspoilage\nspoilages\nspoiled\nspoiler\nspoilers\nspoiling\nspoils\nspoilsport\nspoilsports\nspoilt\nspoke\nspoked\nspoken\nspokes\nspokeshave\nspokeshaves\nspokesman\nspokesmen\nspokesperson\nspokespersons\nspokeswoman\nspokeswomen\nspoking\nspoliate\nspoliated\nspoliates\nspoliating\nspoliation\nspoliations\nspoliator\nspoliators\nspondaic\nspondaics\nspondee\nspondees\nsponge\nsponged\nsponger\nspongers\nsponges\nspongier\nspongiest\nspongily\nspongin\nsponging\nspongins\nspongy\nsponsal\nsponsion\nsponsions\nsponson\nsponsons\nsponsor\nsponsored\nsponsorial\nsponsoring\nsponsors\nsponsorship\nsponsorships\nspontaneity\nspontaneous\nspontaneously\nspontaneousness\nspontoon\nspontoons\nspoof\nspoofed\nspoofing\nspoofs\nspook\nspooked\nspookier\nspookiest\nspookily\nspooking\nspookish\nspooks\nspooky\nspool\nspooled\nspooling\nspools\nspoon\nspooned\nspoonerism\nspoonerisms\nspooney\nspooneys\nspoonful\nspoonfuls\nspoonier\nspoonies\nspooniest\nspoonily\nspooning\nspoons\nspoonsful\nspoony\nspoor\nspoored\nspooring\nspoors\nsporadic\nsporadically\nsporal\nspore\nspored\nspores\nsporing\nsporoid\nsporran\nsporrans\nsport\nsported\nsporter\nsporters\nsportful\nsportier\nsportiest\nsportily\nsportiness\nsporting\nsportive\nsportively\nsports\nsportscast\nsportscaster\nsportscasters\nsportscasts\nsportsman\nsportsmanlike\nsportsmanly\nsportsmanship\nsportsmen\nsportswear\nsportswoman\nsportswomen\nsportswriter\nsportswriters\nsporty\nsporular\nsporule\nsporules\nspot\nspotless\nspotlessly\nspotlessness\nspotlight\nspotlighted\nspotlighting\nspotlights\nspots\nspotted\nspotter\nspotters\nspottier\nspottiest\nspottily\nspotting\nspotty\nspousal\nspousals\nspouse\nspoused\nspouses\nspousing\nspout\nspouted\nspouter\nspouters\nspouting\nspouts\nspraddle\nspraddled\nspraddles\nspraddling\nsprag\nsprags\nsprain\nsprained\nspraining\nsprains\nsprang\nsprat\nsprats\nsprattle\nsprattled\nsprattles\nsprattling\nsprawl\nsprawled\nsprawler\nsprawlers\nsprawlier\nsprawliest\nsprawling\nsprawls\nsprawly\nspray\nsprayed\nsprayer\nsprayers\nspraying\nsprays\nspread\nspreadable\nspreader\nspreaders\nspreading\nspreads\nspreadsheet\nspreadsheets\nspree\nsprees\nsprent\nsprier\nspriest\nsprig\nsprigged\nsprigger\nspriggers\nspriggier\nspriggiest\nsprigging\nspriggy\nspright\nsprightlier\nsprightliest\nsprightliness\nsprightly\nsprights\nsprigs\nspring\nspringal\nspringals\nspringboard\nspringboards\nspringe\nspringed\nspringeing\nspringer\nspringers\nspringes\nspringier\nspringiest\nspringiness\nspringing\nspringings\nsprings\nspringtime\nspringtimes\nspringy\nsprinkle\nsprinkled\nsprinkler\nsprinklers\nsprinkles\nsprinkling\nsprinklings\nsprint\nsprinted\nsprinter\nsprinters\nsprinting\nsprints\nsprit\nsprite\nsprites\nsprits\nsprocket\nsprockets\nsprout\nsprouted\nsprouting\nsprouts\nspruce\nspruced\nsprucely\nsprucer\nspruces\nsprucest\nsprucier\nspruciest\nsprucing\nsprucy\nsprue\nsprues\nsprug\nsprugs\nsprung\nspry\nspryer\nspryest\nspryly\nspryness\nsprynesses\nspud\nspudded\nspudder\nspudders\nspudding\nspuds\nspue\nspued\nspues\nspuing\nspume\nspumed\nspumes\nspumier\nspumiest\nspuming\nspumone\nspumones\nspumoni\nspumonis\nspumous\nspumy\nspun\nspunk\nspunked\nspunkie\nspunkier\nspunkies\nspunkiest\nspunkily\nspunking\nspunks\nspunky\nspur\nspurgall\nspurgalled\nspurgalling\nspurgalls\nspurge\nspurges\nspurious\nspuriously\nspurn\nspurned\nspurner\nspurners\nspurning\nspurns\nspurred\nspurrer\nspurrers\nspurrey\nspurreys\nspurrier\nspurriers\nspurries\nspurring\nspurry\nspurs\nspurt\nspurted\nspurting\nspurtle\nspurtles\nspurts\nsputa\nsputnik\nsputniks\nsputter\nsputtered\nsputtering\nsputters\nsputum\nspy\nspyglass\nspyglasses\nspying\nsquab\nsquabbier\nsquabbiest\nsquabble\nsquabbled\nsquabbles\nsquabbling\nsquabby\nsquabs\nsquad\nsquadded\nsquadding\nsquadron\nsquadroned\nsquadroning\nsquadrons\nsquads\nsqualene\nsqualenes\nsqualid\nsqualider\nsqualidest\nsqualidly\nsquall\nsqualled\nsqualler\nsquallers\nsquallier\nsqualliest\nsqualling\nsqualls\nsqually\nsqualor\nsqualors\nsquama\nsquamae\nsquamate\nsquamose\nsquamous\nsquander\nsquandered\nsquandering\nsquanders\nsquare\nsquared\nsquarely\nsquarer\nsquarers\nsquares\nsquarest\nsquaring\nsquarish\nsquarishly\nsquash\nsquashed\nsquasher\nsquashers\nsquashes\nsquashier\nsquashiest\nsquashily\nsquashiness\nsquashing\nsquashy\nsquat\nsquatly\nsquats\nsquatted\nsquatter\nsquattered\nsquattering\nsquatters\nsquattest\nsquattier\nsquattiest\nsquatting\nsquatty\nsquaw\nsquawk\nsquawked\nsquawker\nsquawkers\nsquawking\nsquawks\nsquaws\nsqueak\nsqueaked\nsqueaker\nsqueakers\nsqueakier\nsqueakiest\nsqueaking\nsqueaks\nsqueaky\nsqueal\nsquealed\nsquealer\nsquealers\nsquealing\nsqueals\nsqueamish\nsqueamishly\nsqueegee\nsqueegeed\nsqueegeeing\nsqueegees\nsqueezability\nsqueezable\nsqueeze\nsqueezed\nsqueezer\nsqueezers\nsqueezes\nsqueezing\nsqueg\nsquegged\nsquegging\nsquegs\nsquelch\nsquelched\nsquelches\nsquelchier\nsquelchiest\nsquelching\nsquelchy\nsquib\nsquibbed\nsquibbing\nsquibs\nsquid\nsquidded\nsquidding\nsquids\nsquiffed\nsquiffy\nsquiggle\nsquiggled\nsquiggles\nsquigglier\nsquiggliest\nsquiggling\nsquiggly\nsquilgee\nsquilgeed\nsquilgeeing\nsquilgees\nsquill\nsquilla\nsquillae\nsquillas\nsquills\nsquinch\nsquinched\nsquinches\nsquinching\nsquinnied\nsquinnier\nsquinnies\nsquinniest\nsquinny\nsquinnying\nsquint\nsquinted\nsquinter\nsquinters\nsquintest\nsquintier\nsquintiest\nsquinting\nsquintingly\nsquints\nsquinty\nsquire\nsquired\nsquireen\nsquireens\nsquires\nsquiring\nsquirish\nsquirm\nsquirmed\nsquirmer\nsquirmers\nsquirmier\nsquirmiest\nsquirming\nsquirms\nsquirmy\nsquirrel\nsquirreled\nsquirreling\nsquirrelled\nsquirrelling\nsquirrels\nsquirt\nsquirted\nsquirter\nsquirters\nsquirting\nsquirts\nsquish\nsquished\nsquishes\nsquishier\nsquishiest\nsquishing\nsquishy\nsquoosh\nsquooshed\nsquooshes\nsquooshing\nsqureling\nsquush\nsquushed\nsquushes\nsquushing\nsraddha\nsraddhas\nsradha\nsradhas\nsri\nsris\nstab\nstabbed\nstabber\nstabbers\nstabbing\nstabbings\nstabile\nstabiles\nstabilities\nstability\nstabilization\nstabilize\nstabilized\nstabilizer\nstabilizers\nstabilizes\nstabilizing\nstable\nstabled\nstabler\nstablers\nstables\nstablest\nstabling\nstablings\nstablish\nstablished\nstablishes\nstablishing\nstably\nstabs\nstaccati\nstaccato\nstaccatos\nstack\nstacked\nstacker\nstackers\nstacking\nstacks\nstacte\nstactes\nstaddle\nstaddles\nstade\nstades\nstadia\nstadias\nstadium\nstadiums\nstaff\nstaffed\nstaffer\nstaffers\nstaffing\nstaffs\nstag\nstage\nstagecoach\nstagecoaches\nstagecraft\nstaged\nstagehand\nstagehands\nstager\nstagers\nstages\nstagey\nstaggard\nstaggards\nstaggart\nstaggarts\nstagged\nstagger\nstaggered\nstaggering\nstaggeringly\nstaggers\nstaggery\nstaggie\nstaggier\nstaggies\nstaggiest\nstagging\nstaggy\nstagier\nstagiest\nstagily\nstaginess\nstaging\nstagings\nstagnancy\nstagnant\nstagnate\nstagnated\nstagnates\nstagnating\nstagnation\nstagnations\nstags\nstagy\nstaid\nstaider\nstaidest\nstaidly\nstaig\nstaigs\nstain\nstainability\nstainable\nstained\nstainer\nstainers\nstaining\nstainless\nstains\nstair\nstaircase\nstaircases\nstairs\nstairway\nstairways\nstairwell\nstairwells\nstake\nstaked\nstakeholder\nstakeholders\nstakeout\nstakeouts\nstakes\nstaking\nstalactite\nstalactites\nstalag\nstalagmite\nstalagmites\nstalags\nstale\nstaled\nstalely\nstalemate\nstalemated\nstalemates\nstalemating\nstaler\nstales\nstalest\nstaling\nstalk\nstalked\nstalker\nstalkers\nstalkier\nstalkiest\nstalkily\nstalking\nstalkless\nstalks\nstalky\nstall\nstalled\nstalling\nstallion\nstallions\nstalls\nstalwart\nstalwarts\nstamen\nstamens\nstamina\nstaminal\nstaminas\nstammel\nstammels\nstammer\nstammered\nstammerer\nstammerers\nstammering\nstammers\nstamp\nstamped\nstampede\nstampeded\nstampedes\nstampeding\nstamper\nstampers\nstamping\nstamps\nstance\nstances\nstanch\nstanched\nstancher\nstanchers\nstanches\nstanchest\nstanching\nstanchion\nstanchions\nstanchly\nstand\nstandard\nstandardization\nstandardizations\nstandardize\nstandardized\nstandardizes\nstandardizing\nstandards\nstandby\nstandbys\nstandee\nstandees\nstander\nstanders\nstanding\nstandings\nstandish\nstandishes\nstandoff\nstandoffish\nstandoffs\nstandout\nstandouts\nstandpat\nstandpoint\nstandpoints\nstands\nstandstill\nstandstills\nstandup\nstane\nstaned\nstanes\nstang\nstanged\nstanging\nstangs\nstanhope\nstanhopes\nstaning\nstank\nstanks\nstannaries\nstannary\nstannic\nstannite\nstannites\nstannous\nstannum\nstannums\nstanza\nstanzaed\nstanzaic\nstanzas\nstapedes\nstapelia\nstapelias\nstapes\nstaph\nstaphs\nstaple\nstapled\nstapler\nstaplers\nstaples\nstapling\nstar\nstarboard\nstarch\nstarched\nstarches\nstarchier\nstarchiest\nstarchily\nstarchiness\nstarching\nstarchy\nstardom\nstardoms\nstardust\nstardusts\nstare\nstared\nstarer\nstarers\nstares\nstarets\nstarfish\nstarfishes\nstargaze\nstargazed\nstargazer\nstargazers\nstargazes\nstargazing\nstaring\nstark\nstarker\nstarkest\nstarkly\nstarkness\nstarless\nstarlet\nstarlets\nstarlight\nstarlike\nstarling\nstarlings\nstarlit\nstarnose\nstarnoses\nstarred\nstarrier\nstarriest\nstarring\nstarry\nstars\nstart\nstarted\nstarter\nstarters\nstarting\nstartle\nstartled\nstartler\nstartlers\nstartles\nstartling\nstartlingly\nstarts\nstartsy\nstarvation\nstarve\nstarved\nstarver\nstarvers\nstarves\nstarving\nstarwort\nstarworts\nstases\nstash\nstashed\nstashes\nstashing\nstasima\nstasimon\nstasis\nstat\nstatable\nstatal\nstatant\nstate\nstatecraft\nstated\nstatedly\nstatehood\nstatehoods\nstatehouse\nstatehouses\nstateless\nstatelier\nstateliest\nstateliness\nstately\nstatement\nstatements\nstater\nstateroom\nstaterooms\nstaters\nstates\nstateside\nstatesman\nstatesmanlike\nstatesmanly\nstatesmanship\nstatesmen\nstatewide\nstatic\nstatical\nstatically\nstatice\nstatices\nstatics\nstating\nstation\nstational\nstationary\nstationed\nstationer\nstationers\nstationery\nstationing\nstations\nstatism\nstatisms\nstatist\nstatistic\nstatistical\nstatistically\nstatistician\nstatisticians\nstatistics\nstatists\nstative\nstatives\nstator\nstators\nstats\nstatuaries\nstatuary\nstatue\nstatued\nstatues\nstatuesque\nstatuesquely\nstatuesqueness\nstatuette\nstatuettes\nstature\nstatures\nstatus\nstatuses\nstatute\nstatutes\nstatutorily\nstatutory\nstaumrel\nstaumrels\nstaunch\nstaunched\nstauncher\nstaunches\nstaunchest\nstaunching\nstaunchly\nstaunchness\nstave\nstaved\nstaves\nstaving\nstaw\nstay\nstayed\nstayer\nstayers\nstaying\nstays\nstaysail\nstaysails\nstead\nsteaded\nsteadfast\nsteadfastly\nsteadfastness\nsteadied\nsteadier\nsteadiers\nsteadies\nsteadiest\nsteadily\nsteadiness\nsteading\nsteadings\nsteads\nsteady\nsteadying\nsteak\nsteaks\nsteal\nstealage\nstealages\nstealer\nstealers\nstealing\nstealings\nsteals\nstealth\nstealthier\nstealthiest\nstealthily\nstealthiness\nstealths\nstealthy\nsteam\nsteamboat\nsteamboats\nsteamed\nsteamer\nsteamered\nsteamering\nsteamers\nsteamier\nsteamiest\nsteamily\nsteaming\nsteamroller\nsteamrollers\nsteams\nsteamship\nsteamships\nsteamy\nsteapsin\nsteapsins\nstearate\nstearates\nstearic\nstearin\nstearine\nstearines\nstearins\nsteatite\nsteatites\nsteatitic\nstedfast\nsteed\nsteeds\nsteek\nsteeked\nsteeking\nsteeks\nsteel\nsteeled\nsteelie\nsteelier\nsteelies\nsteeliest\nsteeliness\nsteeling\nsteelmaking\nsteels\nsteelwork\nsteelworker\nsteelworkers\nsteelworks\nsteely\nsteelyard\nsteelyards\nsteenbok\nsteenboks\nsteep\nsteeped\nsteepen\nsteepened\nsteepening\nsteepens\nsteeper\nsteepers\nsteepest\nsteeping\nsteeple\nsteeplechase\nsteeplechased\nsteeplechaser\nsteeplechasers\nsteeplechases\nsteeplechasing\nsteepled\nsteeplejack\nsteeplejacks\nsteeples\nsteeply\nsteepness\nsteeps\nsteer\nsteerage\nsteerages\nsteerageway\nsteered\nsteerer\nsteerers\nsteering\nsteers\nsteersman\nsteersmen\nsteeve\nsteeved\nsteeves\nsteeving\nsteevings\nstegodon\nstegodons\nstein\nsteinbok\nsteinboks\nsteins\nstela\nstelae\nstelai\nstelar\nstele\nstelene\nsteles\nstelic\nstella\nstellar\nstellas\nstellate\nstellified\nstellifies\nstellify\nstellifying\nstem\nstemless\nstemlike\nstemma\nstemmas\nstemmata\nstemmed\nstemmer\nstemmeries\nstemmers\nstemmery\nstemmier\nstemmiest\nstemming\nstemmy\nstems\nstemson\nstemsons\nstemware\nstemwares\nstench\nstenches\nstenchier\nstenchiest\nstenchy\nstencil\nstenciled\nstenciler\nstencilers\nstenciling\nstencilled\nstenciller\nstencillers\nstencilling\nstencils\nstengah\nstengahs\nsteno\nstenographer\nstenographers\nstenographic\nstenographically\nstenography\nstenos\nstenosed\nstenoses\nstenosis\nstenotic\nstenotype\nstenotyped\nstenotypes\nstenotyping\nstenotypist\nstenotypists\nstenotypy\nstentor\nstentorian\nstentors\nstep\nstepbrother\nstepbrothers\nstepchild\nstepchildren\nstepdame\nstepdames\nstepdaughter\nstepdaughters\nstepfather\nstepfathers\nstepladder\nstepladders\nsteplike\nstepmother\nstepmothers\nstepparent\nstepparents\nsteppe\nstepped\nstepper\nsteppers\nsteppes\nstepping\nsteps\nstepsister\nstepsisters\nstepson\nstepsons\nstepwise\nstere\nstereo\nstereoed\nstereoing\nstereophonic\nstereophonically\nstereopticon\nstereopticons\nstereos\nstereoscope\nstereoscopes\nstereoscopic\nstereoscopically\nstereotype\nstereotyped\nstereotyper\nstereotypers\nstereotypes\nstereotypical\nstereotyping\nstereotypy\nsteres\nsteric\nsterical\nsterigma\nsterigmas\nsterigmata\nsterile\nsterility\nsterilization\nsterilizations\nsterilize\nsterilized\nsterilizer\nsterilizers\nsterilizes\nsterilizing\nsterlet\nsterlets\nsterling\nsterlings\nstern\nsterna\nsternal\nsterner\nsternest\nsternite\nsternites\nsternly\nsternness\nsterns\nsternson\nsternsons\nsternum\nsternums\nsternutation\nsternutations\nsternutator\nsternutators\nsternway\nsternways\nsteroid\nsteroidal\nsteroids\nsterol\nsterols\nstertor\nstertors\nstet\nstethoscope\nstethoscopes\nstethoscopic\nstets\nstetted\nstetting\nstevedore\nstevedored\nstevedores\nstevedoring\nstew\nsteward\nstewarded\nstewardess\nstewardesses\nstewarding\nstewards\nstewardship\nstewardships\nstewbum\nstewbums\nstewed\nstewing\nstewpan\nstewpans\nstews\nstey\nsthenia\nsthenias\nsthenic\nstibial\nstibine\nstibines\nstibium\nstibiums\nstibnite\nstibnites\nstich\nstichic\nstichs\nstick\nsticked\nsticker\nstickers\nstickful\nstickfuls\nstickier\nstickiest\nstickily\nstickiness\nsticking\nstickit\nstickle\nstickled\nstickler\nsticklers\nstickles\nstickling\nstickman\nstickmen\nstickout\nstickouts\nstickpin\nstickpins\nsticks\nstickum\nstickums\nstickup\nstickups\nsticky\nstied\nsties\nstiff\nstiffen\nstiffened\nstiffener\nstiffeners\nstiffening\nstiffens\nstiffer\nstiffest\nstiffish\nstiffly\nstiffness\nstiffs\nstifle\nstifled\nstifler\nstiflers\nstifles\nstifling\nstiflingly\nstigma\nstigmal\nstigmas\nstigmata\nstigmatic\nstigmatically\nstigmatization\nstigmatizations\nstigmatize\nstigmatized\nstigmatizes\nstigmatizing\nstilbene\nstilbenes\nstilbite\nstilbites\nstile\nstiles\nstiletto\nstilettoed\nstilettoes\nstilettoing\nstilettos\nstill\nstillbirth\nstillbirths\nstillborn\nstillborns\nstilled\nstiller\nstillest\nstillier\nstilliest\nstilling\nstillman\nstillmen\nstillness\nstills\nstilly\nstilt\nstilted\nstilting\nstilts\nstime\nstimes\nstimied\nstimies\nstimulant\nstimulants\nstimulate\nstimulated\nstimulates\nstimulating\nstimulation\nstimulations\nstimulative\nstimulator\nstimulators\nstimuli\nstimulus\nstimy\nstimying\nsting\nstinger\nstingers\nstingier\nstingiest\nstingily\nstinginess\nstinging\nstingingly\nstingless\nstingo\nstingos\nstingray\nstingrays\nstings\nstingy\nstink\nstinkard\nstinkards\nstinkbug\nstinkbugs\nstinker\nstinkers\nstinkier\nstinkiest\nstinking\nstinkingly\nstinko\nstinkpot\nstinkpots\nstinks\nstinky\nstint\nstinted\nstinter\nstinters\nstinting\nstints\nstipe\nstiped\nstipel\nstipels\nstipend\nstipendiaries\nstipendiary\nstipends\nstipes\nstipites\nstipple\nstippled\nstippler\nstipplers\nstipples\nstippling\nstipular\nstipulate\nstipulated\nstipulates\nstipulating\nstipulation\nstipulations\nstipulator\nstipulators\nstipulatory\nstipule\nstipuled\nstipules\nstir\nstirk\nstirks\nstirp\nstirpes\nstirps\nstirred\nstirrer\nstirrers\nstirring\nstirrup\nstirrups\nstirs\nstitch\nstitched\nstitcher\nstitcheries\nstitchers\nstitchery\nstitches\nstitching\nstithied\nstithies\nstithy\nstithying\nstiver\nstivers\nstoa\nstoae\nstoai\nstoas\nstoat\nstoats\nstob\nstobbed\nstobbing\nstobs\nstoccado\nstoccados\nstoccata\nstoccatas\nstochastic\nstochastically\nstock\nstockade\nstockaded\nstockades\nstockading\nstockbroker\nstockbrokers\nstockcar\nstockcars\nstocked\nstocker\nstockers\nstockholder\nstockholders\nstockier\nstockiest\nstockily\nstockiness\nstockinet\nstockinets\nstockinette\nstockinettes\nstocking\nstockinged\nstockings\nstockish\nstockist\nstockists\nstockman\nstockmen\nstockpile\nstockpiled\nstockpiler\nstockpilers\nstockpiles\nstockpiling\nstockpot\nstockpots\nstockroom\nstockrooms\nstocks\nstocky\nstockyard\nstockyards\nstodge\nstodged\nstodges\nstodgier\nstodgiest\nstodgily\nstodging\nstodgy\nstogey\nstogeys\nstogie\nstogies\nstogy\nstoic\nstoical\nstoically\nstoicism\nstoicisms\nstoics\nstoke\nstoked\nstokehole\nstokeholes\nstoker\nstokers\nstokes\nstokesia\nstokesias\nstoking\nstole\nstoled\nstolen\nstoles\nstolid\nstolider\nstolidest\nstolidity\nstolidly\nstollen\nstollens\nstolon\nstolonic\nstolons\nstoma\nstomach\nstomachache\nstomachaches\nstomached\nstomachic\nstomaching\nstomachs\nstomachy\nstomal\nstomas\nstomata\nstomatal\nstomate\nstomates\nstomatic\nstomodea\nstomp\nstomped\nstomper\nstompers\nstomping\nstomps\nstonable\nstone\nstoneable\nstonecutter\nstonecutters\nstoned\nstoneflies\nstonefly\nstonemason\nstonemasonry\nstonemasons\nstoner\nstoners\nstones\nstonewall\nstonewalled\nstonewalling\nstonewalls\nstoneware\nstonework\nstoneworks\nstoney\nstonier\nstoniest\nstonily\nstoning\nstonish\nstonished\nstonishes\nstonishing\nstony\nstood\nstooge\nstooged\nstooges\nstooging\nstook\nstooked\nstooker\nstookers\nstooking\nstooks\nstool\nstooled\nstoolie\nstoolies\nstooling\nstools\nstoop\nstooped\nstooper\nstoopers\nstooping\nstoops\nstop\nstopcock\nstopcocks\nstope\nstoped\nstoper\nstopers\nstopes\nstopgap\nstopgaps\nstoping\nstoplight\nstoplights\nstopover\nstopovers\nstoppable\nstoppage\nstoppages\nstopped\nstopper\nstoppered\nstoppering\nstoppers\nstopping\nstopple\nstoppled\nstopples\nstoppling\nstops\nstopt\nstopwatch\nstopwatches\nstorable\nstorables\nstorage\nstorages\nstorax\nstoraxes\nstore\nstored\nstorefront\nstorefronts\nstorehouse\nstorehouses\nstorekeeper\nstorekeepers\nstoreroom\nstorerooms\nstores\nstorey\nstoreyed\nstoreys\nstoried\nstories\nstoring\nstork\nstorks\nstorm\nstormbound\nstormed\nstormier\nstormiest\nstormily\nstorminess\nstorming\nstorms\nstormy\nstory\nstorying\nstoryteller\nstorytellers\nstoss\nstotinka\nstotinki\nstound\nstounded\nstounding\nstounds\nstoup\nstoups\nstour\nstoure\nstoures\nstourie\nstours\nstoury\nstout\nstouten\nstoutened\nstoutening\nstoutens\nstouter\nstoutest\nstouthearted\nstoutheartedly\nstoutheartedness\nstoutish\nstoutly\nstoutness\nstouts\nstove\nstovepipe\nstovepipes\nstover\nstovers\nstoves\nstow\nstowable\nstowage\nstowages\nstowaway\nstowaways\nstowed\nstowing\nstowp\nstowps\nstows\nstrabismic\nstrabismus\nstraddle\nstraddled\nstraddler\nstraddlers\nstraddles\nstraddling\nstrafe\nstrafed\nstrafer\nstrafers\nstrafes\nstrafing\nstraggle\nstraggled\nstraggler\nstragglers\nstraggles\nstragglier\nstraggliest\nstraggling\nstraggly\nstraight\nstraightaway\nstraightaways\nstraighted\nstraightedge\nstraightedges\nstraighten\nstraightened\nstraightener\nstraighteners\nstraightening\nstraightens\nstraighter\nstraightest\nstraightforward\nstraightforwardly\nstraightforwardness\nstraighting\nstraightjacket\nstraightjackets\nstraightlaced\nstraightly\nstraights\nstraightway\nstrain\nstrained\nstrainer\nstrainers\nstraining\nstrains\nstrait\nstraiten\nstraitened\nstraitening\nstraitens\nstraiter\nstraitest\nstraitjacket\nstraitjackets\nstraitlaced\nstraitly\nstraitness\nstraits\nstrake\nstraked\nstrakes\nstramash\nstramashes\nstramonies\nstramony\nstrand\nstranded\nstrander\nstranders\nstranding\nstrands\nstrang\nstrange\nstrangely\nstrangeness\nstranger\nstrangered\nstrangering\nstrangers\nstrangest\nstrangle\nstrangled\nstranglehold\nstrangleholds\nstrangler\nstranglers\nstrangles\nstrangling\nstrangulate\nstrangulated\nstrangulates\nstrangulating\nstrangulation\nstrangulations\nstrap\nstrapless\nstrapped\nstrapper\nstrappers\nstrapping\nstrappings\nstraps\nstrass\nstrasses\nstrata\nstratagem\nstratagems\nstratal\nstratas\nstrategic\nstrategical\nstrategically\nstrategies\nstrategist\nstrategists\nstrategy\nstrath\nstraths\nstrati\nstratification\nstratifications\nstratified\nstratifies\nstratify\nstratifying\nstratosphere\nstratospheres\nstratospheric\nstratous\nstratum\nstratums\nstratus\nstravage\nstravaged\nstravages\nstravaging\nstravaig\nstravaiged\nstravaiging\nstravaigs\nstraw\nstrawberries\nstrawberry\nstrawed\nstrawhat\nstrawier\nstrawiest\nstrawing\nstraws\nstrawy\nstray\nstrayed\nstrayer\nstrayers\nstraying\nstrays\nstreak\nstreaked\nstreaker\nstreakers\nstreakier\nstreakiest\nstreakiness\nstreaking\nstreakings\nstreaks\nstreaky\nstream\nstreamed\nstreamer\nstreamers\nstreamier\nstreamiest\nstreaming\nstreamline\nstreamlined\nstreamliner\nstreamliners\nstreamlines\nstreamlining\nstreams\nstreamy\nstreek\nstreeked\nstreeker\nstreekers\nstreeking\nstreeks\nstreet\nstreetcar\nstreetcars\nstreets\nstrength\nstrengthen\nstrengthened\nstrengthening\nstrengthens\nstrengths\nstrenuous\nstrenuously\nstrenuousness\nstrep\nstreps\nstress\nstressed\nstresses\nstressful\nstressfully\nstressing\nstressless\nstressor\nstressors\nstretch\nstretchability\nstretchable\nstretched\nstretcher\nstretchers\nstretches\nstretchier\nstretchiest\nstretching\nstretchy\nstretta\nstrettas\nstrette\nstretti\nstretto\nstrettos\nstreusel\nstreusels\nstrew\nstrewed\nstrewer\nstrewers\nstrewing\nstrewn\nstrews\nstria\nstriae\nstriate\nstriated\nstriates\nstriating\nstriation\nstriations\nstrick\nstricken\nstrickle\nstrickled\nstrickles\nstrickling\nstricks\nstrict\nstricter\nstrictest\nstrictly\nstrictness\nstricture\nstrictures\nstrid\nstridden\nstride\nstridence\nstridency\nstrident\nstridently\nstrider\nstriders\nstrides\nstriding\nstridor\nstridors\nstridulate\nstridulated\nstridulates\nstridulating\nstridulation\nstridulations\nstridulous\nstridulously\nstrife\nstrifeless\nstrifes\nstrigil\nstrigils\nstrigose\nstrike\nstrikebound\nstrikebreaker\nstrikebreakers\nstriker\nstrikers\nstrikes\nstriking\nstrikingly\nstring\nstringed\nstringencies\nstringency\nstringent\nstringently\nstringer\nstringers\nstringier\nstringiest\nstringiness\nstringing\nstringless\nstrings\nstringy\nstrip\nstripe\nstriped\nstripeless\nstriper\nstripers\nstripes\nstripier\nstripiest\nstriping\nstripings\nstripling\nstriplings\nstripped\nstripper\nstrippers\nstripping\nstrips\nstript\nstriptease\nstripteaser\nstripteasers\nstripteases\nstripy\nstrive\nstrived\nstriven\nstriver\nstrivers\nstrives\nstriving\nstrobe\nstrobes\nstrobic\nstrobil\nstrobila\nstrobilae\nstrobile\nstrobiles\nstrobili\nstrobils\nstroboscope\nstroboscopes\nstroboscopic\nstroboscopically\nstrode\nstroke\nstroked\nstroker\nstrokers\nstrokes\nstroking\nstroll\nstrolled\nstroller\nstrollers\nstrolling\nstrolls\nstroma\nstromal\nstromata\nstrong\nstrongbox\nstrongboxes\nstronger\nstrongest\nstronghold\nstrongholds\nstrongish\nstrongly\nstrongyl\nstrongyls\nstrontia\nstrontias\nstrontic\nstrontium\nstrook\nstrop\nstrophe\nstrophes\nstrophic\nstropped\nstropping\nstrops\nstroud\nstrouds\nstrove\nstrow\nstrowed\nstrowing\nstrown\nstrows\nstroy\nstroyed\nstroyer\nstroyers\nstroying\nstroys\nstruck\nstrucken\nstructural\nstructuralism\nstructuralist\nstructuralists\nstructurally\nstructure\nstructured\nstructures\nstructuring\nstrudel\nstrudels\nstruggle\nstruggled\nstruggles\nstruggling\nstrum\nstruma\nstrumae\nstrumas\nstrummed\nstrummer\nstrummers\nstrumming\nstrumose\nstrumous\nstrumpet\nstrumpets\nstrums\nstrung\nstrunt\nstrunted\nstrunting\nstrunts\nstrut\nstruts\nstrutted\nstrutter\nstrutters\nstrutting\nstrychnine\nstub\nstubbed\nstubbier\nstubbiest\nstubbily\nstubbing\nstubble\nstubbled\nstubbles\nstubblier\nstubbliest\nstubbly\nstubborn\nstubbornly\nstubbornness\nstubby\nstubs\nstucco\nstuccoed\nstuccoer\nstuccoers\nstuccoes\nstuccoing\nstuccos\nstuck\nstud\nstudbook\nstudbooks\nstudded\nstuddie\nstuddies\nstudding\nstuddings\nstudent\nstudents\nstudfish\nstudfishes\nstudhorse\nstudhorses\nstudied\nstudiedly\nstudiedness\nstudier\nstudiers\nstudies\nstudio\nstudios\nstudious\nstudiously\nstudiousness\nstuds\nstudwork\nstudworks\nstudy\nstudying\nstuff\nstuffed\nstuffer\nstuffers\nstuffier\nstuffiest\nstuffily\nstuffiness\nstuffing\nstuffings\nstuffs\nstuffy\nstuiver\nstuivers\nstull\nstulls\nstultification\nstultifications\nstultified\nstultifies\nstultify\nstultifying\nstum\nstumble\nstumbled\nstumbler\nstumblers\nstumbles\nstumbling\nstumblingly\nstummed\nstumming\nstump\nstumpage\nstumpages\nstumped\nstumper\nstumpers\nstumpier\nstumpiest\nstumping\nstumps\nstumpy\nstums\nstun\nstung\nstunk\nstunned\nstunner\nstunners\nstunning\nstunningly\nstuns\nstunsail\nstunsails\nstunt\nstunted\nstunting\nstunts\nstupa\nstupas\nstupe\nstupefaction\nstupefactions\nstupefied\nstupefies\nstupefy\nstupefying\nstupendous\nstupendously\nstupes\nstupid\nstupider\nstupidest\nstupidities\nstupidity\nstupidly\nstupidness\nstupids\nstupor\nstuporous\nstupors\nsturdied\nsturdier\nsturdies\nsturdiest\nsturdily\nsturdiness\nsturdy\nsturgeon\nsturgeons\nsturt\nsturts\nstutter\nstuttered\nstutterer\nstutterers\nstuttering\nstutters\nsty\nstye\nstyed\nstyes\nstygian\nstying\nstylar\nstylate\nstyle\nstylebook\nstylebooks\nstyled\nstyler\nstylers\nstyles\nstylet\nstylets\nstyli\nstyling\nstylings\nstylise\nstylised\nstyliser\nstylisers\nstylises\nstylish\nstylishly\nstylishness\nstylising\nstylist\nstylistic\nstylistically\nstylists\nstylite\nstylites\nstylitic\nstylization\nstylizations\nstylize\nstylized\nstylizer\nstylizers\nstylizes\nstylizing\nstyloid\nstylus\nstyluses\nstymie\nstymied\nstymieing\nstymies\nstymy\nstymying\nstypsis\nstypsises\nstyptic\nstyptics\nstyrax\nstyraxes\nstyrene\nstyrenes\nsuability\nsuable\nsuably\nsuasion\nsuasions\nsuasive\nsuasively\nsuasiveness\nsuasory\nsuave\nsuavely\nsuaveness\nsuaver\nsuavest\nsuavities\nsuavity\nsub\nsuba\nsubabbot\nsubabbots\nsubacid\nsubacrid\nsubacute\nsubadar\nsubadars\nsubadult\nsubadults\nsubagent\nsubagents\nsubah\nsubahdar\nsubahdars\nsubahs\nsubalar\nsubaltern\nsubalternate\nsubalternates\nsubalterns\nsubarea\nsubareas\nsubarid\nsubas\nsubassemblies\nsubassembly\nsubatom\nsubatoms\nsubaverage\nsubaxial\nsubbase\nsubbases\nsubbass\nsubbasses\nsubbed\nsubbing\nsubbings\nsubbreed\nsubbreeds\nsubcategories\nsubcategory\nsubcause\nsubcauses\nsubcell\nsubcells\nsubchief\nsubchiefs\nsubclan\nsubclans\nsubclass\nsubclassed\nsubclasses\nsubclassification\nsubclassifications\nsubclassing\nsubclerk\nsubclerks\nsubcommission\nsubcommissions\nsubcommittee\nsubcommittees\nsubcompact\nsubcompacts\nsubconscious\nsubconsciously\nsubconsciousness\nsubcontinent\nsubcontinents\nsubcontract\nsubcontracted\nsubcontracting\nsubcontractor\nsubcontractors\nsubcontracts\nsubcool\nsubcooled\nsubcooling\nsubcools\nsubcultural\nsubculture\nsubcultured\nsubcultures\nsubculturing\nsubcutaneous\nsubcutaneously\nsubcutes\nsubcutis\nsubcutises\nsubdean\nsubdeans\nsubdeb\nsubdebs\nsubdepartment\nsubdepartments\nsubdepot\nsubdepots\nsubdivide\nsubdivided\nsubdivider\nsubdividers\nsubdivides\nsubdividing\nsubdivision\nsubdivisions\nsubdual\nsubduals\nsubduce\nsubduced\nsubduces\nsubducing\nsubduct\nsubducted\nsubducting\nsubducts\nsubdue\nsubdued\nsubduer\nsubduers\nsubdues\nsubduing\nsubecho\nsubechoes\nsubedit\nsubedited\nsubediting\nsubedits\nsubentries\nsubentry\nsubepoch\nsubepochs\nsuber\nsuberect\nsuberic\nsuberin\nsuberins\nsuberise\nsuberised\nsuberises\nsuberising\nsuberize\nsuberized\nsuberizes\nsuberizing\nsuberose\nsuberous\nsubers\nsubfield\nsubfields\nsubfix\nsubfixes\nsubfloor\nsubfloors\nsubfluid\nsubfreezing\nsubfusc\nsubgenera\nsubgenus\nsubgenuses\nsubgrade\nsubgrades\nsubgroup\nsubgroups\nsubgum\nsubhead\nsubheading\nsubheadings\nsubheads\nsubhuman\nsubhumans\nsubhumid\nsubidea\nsubideas\nsubindex\nsubindexes\nsubindices\nsubitem\nsubitems\nsubito\nsubject\nsubjected\nsubjecting\nsubjection\nsubjections\nsubjective\nsubjectively\nsubjectiveness\nsubjectivism\nsubjectivisms\nsubjectivist\nsubjectivistic\nsubjectivists\nsubjectivity\nsubjects\nsubjoin\nsubjoined\nsubjoining\nsubjoins\nsubjugate\nsubjugated\nsubjugates\nsubjugating\nsubjugation\nsubjugations\nsubjugator\nsubjugators\nsubjunctive\nsubjunctives\nsublate\nsublated\nsublates\nsublating\nsublease\nsubleased\nsubleases\nsubleasing\nsublet\nsublets\nsubletting\nsublevel\nsublevels\nsublicense\nsublicenses\nsublimable\nsublimate\nsublimated\nsublimates\nsublimating\nsublimation\nsublimations\nsublime\nsublimed\nsublimely\nsublimer\nsublimers\nsublimes\nsublimest\nsubliminal\nsubliminally\nsubliming\nsublimities\nsublimity\nsubliterate\nsubmarginal\nsubmarginally\nsubmarine\nsubmariner\nsubmariners\nsubmarines\nsubmerge\nsubmerged\nsubmergence\nsubmerges\nsubmergible\nsubmerging\nsubmerse\nsubmersed\nsubmerses\nsubmersible\nsubmersing\nsubmersion\nsubmersions\nsubmiss\nsubmission\nsubmissions\nsubmissive\nsubmissively\nsubmissiveness\nsubmit\nsubmits\nsubmittal\nsubmittals\nsubmitted\nsubmitting\nsubnasal\nsubnodal\nsubnormal\nsubnormalities\nsubnormality\nsuboptic\nsuboral\nsuborder\nsuborders\nsubordinate\nsubordinated\nsubordinately\nsubordinates\nsubordinating\nsubordination\nsubordinations\nsubordinative\nsuborn\nsubornation\nsubornations\nsuborned\nsuborner\nsuborners\nsuborning\nsuborns\nsuboval\nsubovate\nsuboxide\nsuboxides\nsubpar\nsubpart\nsubparts\nsubpena\nsubpenaed\nsubpenaing\nsubpenas\nsubphyla\nsubplot\nsubplots\nsubpoena\nsubpoenaed\nsubpoenaing\nsubpoenas\nsubpolar\nsubprogram\nsubprograms\nsubpubic\nsubrace\nsubraces\nsubrent\nsubrents\nsubring\nsubrings\nsubroutine\nsubroutines\nsubrule\nsubrules\nsubs\nsubsale\nsubsales\nsubscribe\nsubscribed\nsubscriber\nsubscribers\nsubscribes\nsubscribing\nsubscript\nsubscription\nsubscriptions\nsubscripts\nsubsect\nsubsection\nsubsections\nsubsects\nsubsequence\nsubsequences\nsubsequent\nsubsequently\nsubsere\nsubseres\nsubserve\nsubserved\nsubserves\nsubservience\nsubserviency\nsubservient\nsubserviently\nsubserving\nsubset\nsubsets\nsubshaft\nsubshafts\nsubshrub\nsubshrubs\nsubside\nsubsided\nsubsidence\nsubsidences\nsubsider\nsubsiders\nsubsides\nsubsidiaries\nsubsidiary\nsubsidies\nsubsiding\nsubsidization\nsubsidizations\nsubsidize\nsubsidized\nsubsidizer\nsubsidizers\nsubsidizes\nsubsidizing\nsubsidy\nsubsist\nsubsisted\nsubsistence\nsubsistences\nsubsistent\nsubsisting\nsubsists\nsubsoil\nsubsoiled\nsubsoiling\nsubsoils\nsubsolar\nsubsonic\nsubspace\nsubspaces\nsubstage\nsubstages\nsubstance\nsubstances\nsubstandard\nsubstantial\nsubstantialities\nsubstantiality\nsubstantially\nsubstantialness\nsubstantials\nsubstantiate\nsubstantiated\nsubstantiates\nsubstantiating\nsubstantiation\nsubstantiations\nsubstantiative\nsubstantival\nsubstantivally\nsubstantive\nsubstantively\nsubstantiveness\nsubstantives\nsubstantivize\nsubstantivized\nsubstantivizes\nsubstantivizing\nsubstation\nsubstations\nsubstitutability\nsubstitutable\nsubstitute\nsubstituted\nsubstitutes\nsubstituting\nsubstitution\nsubstitutional\nsubstitutionally\nsubstitutionary\nsubstitutions\nsubstitutive\nsubstitutively\nsubstrata\nsubstrate\nsubstrates\nsubstratum\nsubstructural\nsubstructure\nsubstructures\nsubsumable\nsubsume\nsubsumed\nsubsumes\nsubsuming\nsubsurface\nsubsurfaces\nsubsystem\nsubsystems\nsubteen\nsubteens\nsubtend\nsubtended\nsubtending\nsubtends\nsubterfuge\nsubterfuges\nsubterranean\nsubterraneanly\nsubtext\nsubtexts\nsubties\nsubtile\nsubtiler\nsubtilest\nsubtilties\nsubtilty\nsubtitle\nsubtitled\nsubtitles\nsubtitling\nsubtle\nsubtleness\nsubtler\nsubtlest\nsubtleties\nsubtlety\nsubtly\nsubtone\nsubtones\nsubtonic\nsubtonics\nsubtopic\nsubtopics\nsubtotal\nsubtotaled\nsubtotaling\nsubtotalled\nsubtotalling\nsubtotals\nsubtract\nsubtracted\nsubtracting\nsubtraction\nsubtractions\nsubtractive\nsubtracts\nsubtrahend\nsubtrahends\nsubtribe\nsubtribes\nsubtunic\nsubtunics\nsubtype\nsubtypes\nsubulate\nsubunit\nsubunits\nsuburb\nsuburban\nsuburbanite\nsuburbanites\nsuburbans\nsuburbed\nsuburbia\nsuburbias\nsuburbs\nsubvene\nsubvened\nsubvenes\nsubvening\nsubversion\nsubversions\nsubversive\nsubversively\nsubversiveness\nsubvert\nsubverted\nsubverting\nsubverts\nsubvicar\nsubvicars\nsubviral\nsubvocal\nsubway\nsubways\nsubzone\nsubzones\nsuccah\nsuccahs\nsucceed\nsucceeded\nsucceeder\nsucceeders\nsucceeding\nsucceeds\nsuccess\nsuccesses\nsuccessful\nsuccessfully\nsuccessfulness\nsuccession\nsuccessional\nsuccessionally\nsuccessions\nsuccessive\nsuccessively\nsuccessiveness\nsuccessor\nsuccessors\nsuccinct\nsuccincter\nsuccinctest\nsuccinctly\nsuccinctness\nsuccinic\nsuccinyl\nsuccinyls\nsuccor\nsuccored\nsuccorer\nsuccorers\nsuccories\nsuccoring\nsuccors\nsuccory\nsuccoth\nsuccour\nsuccoured\nsuccouring\nsuccours\nsuccuba\nsuccubae\nsuccubi\nsuccubus\nsuccubuses\nsucculence\nsucculent\nsucculently\nsucculents\nsuccumb\nsuccumbed\nsuccumbing\nsuccumbs\nsuccuss\nsuccussed\nsuccusses\nsuccussing\nsuch\nsuchlike\nsuchness\nsuchnesses\nsuck\nsucked\nsucker\nsuckered\nsuckering\nsuckers\nsuckfish\nsuckfishes\nsucking\nsuckle\nsuckled\nsuckler\nsucklers\nsuckles\nsuckless\nsuckling\nsucklings\nsucks\nsucrase\nsucrases\nsucre\nsucres\nsucrose\nsucroses\nsuction\nsuctional\nsuctions\nsudaria\nsudaries\nsudarium\nsudary\nsudation\nsudations\nsudatories\nsudatory\nsudd\nsudden\nsuddenly\nsuddenness\nsuddens\nsudds\nsudor\nsudoral\nsudoriferous\nsudorific\nsudorifics\nsudors\nsuds\nsudsed\nsudser\nsudsers\nsudses\nsudsier\nsudsiest\nsudsing\nsudsless\nsudsy\nsue\nsued\nsuede\nsueded\nsuedes\nsueding\nsuer\nsuers\nsues\nsuet\nsuets\nsuety\nsuffari\nsuffaris\nsuffer\nsufferable\nsufferableness\nsufferably\nsufferance\nsufferances\nsuffered\nsufferer\nsufferers\nsuffering\nsufferings\nsuffers\nsuffice\nsufficed\nsufficer\nsufficers\nsuffices\nsufficiency\nsufficient\nsufficiently\nsufficing\nsuffix\nsuffixal\nsuffixation\nsuffixations\nsuffixed\nsuffixes\nsuffixing\nsufflate\nsufflated\nsufflates\nsufflating\nsuffocate\nsuffocated\nsuffocates\nsuffocating\nsuffocatingly\nsuffocation\nsuffocations\nsuffocative\nsuffrage\nsuffrages\nsuffragette\nsuffragettes\nsuffragist\nsuffragists\nsuffuse\nsuffused\nsuffuses\nsuffusing\nsuffusion\nsuffusions\nsuffusive\nsugar\nsugarcane\nsugarcanes\nsugarcoat\nsugarcoated\nsugarcoating\nsugarcoats\nsugared\nsugarier\nsugariest\nsugaring\nsugarless\nsugarplum\nsugarplums\nsugars\nsugary\nsuggest\nsuggested\nsuggestibility\nsuggestible\nsuggesting\nsuggestion\nsuggestions\nsuggestive\nsuggestively\nsuggestiveness\nsuggests\nsugh\nsughed\nsughing\nsughs\nsuicidal\nsuicidally\nsuicide\nsuicided\nsuicides\nsuiciding\nsuing\nsuint\nsuints\nsuit\nsuitabilities\nsuitability\nsuitable\nsuitableness\nsuitably\nsuitcase\nsuitcases\nsuite\nsuited\nsuites\nsuiting\nsuitings\nsuitlike\nsuitor\nsuitors\nsuits\nsukiyaki\nsukiyakis\nsukkah\nsukkahs\nsukkoth\nsulcate\nsulcated\nsulci\nsulcus\nsuldan\nsuldans\nsulfa\nsulfanilamide\nsulfas\nsulfate\nsulfated\nsulfates\nsulfating\nsulfid\nsulfide\nsulfides\nsulfids\nsulfinyl\nsulfinyls\nsulfite\nsulfites\nsulfitic\nsulfo\nsulfonals\nsulfone\nsulfones\nsulfonic\nsulfonyl\nsulfonyls\nsulfur\nsulfured\nsulfuret\nsulfureted\nsulfureting\nsulfurets\nsulfuretted\nsulfuretting\nsulfuric\nsulfuring\nsulfurous\nsulfurs\nsulfury\nsulfuryl\nsulfuryls\nsulk\nsulked\nsulker\nsulkers\nsulkier\nsulkies\nsulkiest\nsulkily\nsulkiness\nsulking\nsulks\nsulky\nsullage\nsullages\nsullen\nsullener\nsullenest\nsullenly\nsullenness\nsullied\nsullies\nsully\nsullying\nsulpha\nsulphas\nsulphate\nsulphated\nsulphates\nsulphating\nsulphid\nsulphide\nsulphides\nsulphids\nsulphite\nsulphites\nsulphone\nsulphones\nsulphur\nsulphured\nsulphuring\nsulphurous\nsulphurs\nsulphury\nsultan\nsultana\nsultanas\nsultanate\nsultanates\nsultanic\nsultans\nsultrier\nsultriest\nsultrily\nsultry\nsulu\nsulus\nsum\nsumac\nsumach\nsumachs\nsumacs\nsumless\nsumma\nsummable\nsummae\nsummand\nsummands\nsummaries\nsummarily\nsummarization\nsummarizations\nsummarize\nsummarized\nsummarizer\nsummarizers\nsummarizes\nsummarizing\nsummary\nsummas\nsummate\nsummated\nsummates\nsummating\nsummation\nsummational\nsummations\nsummed\nsummer\nsummered\nsummerhouse\nsummerhouses\nsummerier\nsummeriest\nsummering\nsummerly\nsummers\nsummertime\nsummertimes\nsummery\nsumming\nsummit\nsummital\nsummitries\nsummitry\nsummits\nsummon\nsummoned\nsummoner\nsummoners\nsummoning\nsummons\nsummonsed\nsummonses\nsummonsing\nsumo\nsumos\nsump\nsumps\nsumpter\nsumpters\nsumptuous\nsumptuously\nsumptuousness\nsumpweed\nsumpweeds\nsums\nsun\nsunback\nsunbaked\nsunbath\nsunbathe\nsunbathed\nsunbather\nsunbathers\nsunbathes\nsunbathing\nsunbaths\nsunbeam\nsunbeams\nsunbird\nsunbirds\nsunbow\nsunbows\nsunburn\nsunburned\nsunburning\nsunburns\nsunburnt\nsunburst\nsunbursts\nsundae\nsundaes\nsunder\nsundered\nsunderer\nsunderers\nsundering\nsunders\nsundew\nsundews\nsundial\nsundials\nsundog\nsundogs\nsundown\nsundowns\nsundries\nsundrops\nsundry\nsunfast\nsunfish\nsunfishes\nsunflower\nsunflowers\nsung\nsunglass\nsunglasses\nsunglow\nsunglows\nsunk\nsunken\nsunket\nsunkets\nsunlamp\nsunlamps\nsunland\nsunlands\nsunless\nsunlight\nsunlights\nsunlike\nsunlit\nsunn\nsunna\nsunnas\nsunned\nsunnier\nsunniest\nsunnily\nsunniness\nsunning\nsunns\nsunny\nsunrise\nsunrises\nsunroof\nsunroofs\nsunroom\nsunrooms\nsuns\nsunscald\nsunscalds\nsunscreen\nsunscreening\nsunscreens\nsunset\nsunsets\nsunshade\nsunshades\nsunshine\nsunshines\nsunshiny\nsunspot\nsunspots\nsunstone\nsunstones\nsunstroke\nsunstrokes\nsunsuit\nsunsuits\nsuntan\nsuntanned\nsuntans\nsunup\nsunups\nsunward\nsunwards\nsunwise\nsup\nsupe\nsuper\nsuperable\nsuperableness\nsuperably\nsuperabundance\nsuperabundances\nsuperabundant\nsuperadd\nsuperadded\nsuperadding\nsuperadds\nsuperannuate\nsuperannuated\nsuperannuates\nsuperannuating\nsuperannuation\nsuperannuations\nsuperb\nsuperber\nsuperbest\nsuperbly\nsuperbness\nsupercargo\nsupercargoes\nsupercargos\nsupercharge\nsupercharged\nsupercharger\nsuperchargers\nsupercharges\nsupercharging\nsupercilious\nsuperciliously\nsuperciliousness\nsupercool\nsupercooled\nsupercooling\nsupercools\nsupered\nsuperego\nsuperegos\nsupererogation\nsupererogations\nsupererogatory\nsuperficial\nsuperficialities\nsuperficiality\nsuperficially\nsuperfine\nsuperfix\nsuperfixes\nsuperfluities\nsuperfluity\nsuperfluous\nsuperfluously\nsuperfluousness\nsuperhero\nsuperheroes\nsuperheroine\nsuperheroines\nsuperheterodyne\nsuperheterodynes\nsuperhighway\nsuperhighways\nsuperhuman\nsuperhumanly\nsuperhumanness\nsuperimpose\nsuperimposed\nsuperimposes\nsuperimposing\nsuperimposition\nsuperimpositions\nsuperinduce\nsuperinduced\nsuperinduces\nsuperinducing\nsuperinduction\nsuperinductions\nsupering\nsuperintend\nsuperintended\nsuperintendencies\nsuperintendency\nsuperintendent\nsuperintendents\nsuperintending\nsuperintends\nsuperior\nsuperiority\nsuperiorly\nsuperiors\nsuperjet\nsuperjets\nsuperlain\nsuperlative\nsuperlatively\nsuperlativeness\nsuperlatives\nsuperlay\nsuperlie\nsuperlies\nsuperlying\nsuperman\nsupermarket\nsupermarkets\nsupermen\nsupernal\nsupernally\nsupernatant\nsupernatants\nsupernatural\nsupernaturalism\nsupernaturalist\nsupernaturalistic\nsupernaturalists\nsupernaturally\nsupernaturalness\nsupernumeraries\nsupernumerary\nsuperpower\nsuperpowers\nsupers\nsuperscribe\nsuperscribed\nsuperscribes\nsuperscribing\nsuperscript\nsuperscription\nsuperscriptions\nsuperscripts\nsupersede\nsuperseded\nsuperseder\nsuperseders\nsupersedes\nsuperseding\nsupersedure\nsupersedures\nsupersensitive\nsupersession\nsupersessions\nsupersex\nsupersexes\nsupersonic\nsupersonically\nsupersonics\nsuperstar\nsuperstars\nsuperstition\nsuperstitions\nsuperstitious\nsuperstitiously\nsuperstrong\nsuperstructural\nsuperstructure\nsuperstructures\nsupertanker\nsupertankers\nsupertax\nsupertaxes\nsupervene\nsupervened\nsupervenes\nsupervenient\nsupervening\nsupervention\nsuperventions\nsupervise\nsupervised\nsupervises\nsupervising\nsupervision\nsupervisions\nsupervisor\nsupervisors\nsupervisory\nsuperweapon\nsuperweapons\nsuperwoman\nsuperwomen\nsupes\nsupinate\nsupinated\nsupinates\nsupinating\nsupine\nsupinely\nsupineness\nsupines\nsupped\nsupper\nsuppers\nsupping\nsupplant\nsupplantation\nsupplantations\nsupplanted\nsupplanter\nsupplanters\nsupplanting\nsupplants\nsupple\nsuppled\nsupplely\nsupplement\nsupplemental\nsupplementary\nsupplementation\nsupplementations\nsupplemented\nsupplementing\nsupplements\nsuppleness\nsuppler\nsupples\nsupplest\nsuppliance\nsuppliant\nsuppliantly\nsuppliants\nsupplicant\nsupplicants\nsupplicate\nsupplicated\nsupplicates\nsupplicating\nsupplication\nsupplications\nsupplicatory\nsupplied\nsupplier\nsuppliers\nsupplies\nsuppling\nsupply\nsupplying\nsupport\nsupportability\nsupportable\nsupported\nsupporter\nsupporters\nsupporting\nsupportive\nsupports\nsupposable\nsupposably\nsupposal\nsupposals\nsuppose\nsupposed\nsupposedly\nsupposer\nsupposers\nsupposes\nsupposing\nsupposition\nsuppositional\nsuppositions\nsuppositories\nsuppository\nsuppress\nsuppressed\nsuppresses\nsuppressible\nsuppressing\nsuppression\nsuppressions\nsuppressive\nsuppressor\nsuppressors\nsuppurate\nsuppurated\nsuppurates\nsuppurating\nsuppuration\nsuppurations\nsuppurative\nsupra\nsupremacies\nsupremacist\nsupremacists\nsupremacy\nsupreme\nsupremely\nsupremeness\nsupremer\nsupremest\nsups\nsura\nsurah\nsurahs\nsural\nsuras\nsurbase\nsurbased\nsurbases\nsurcease\nsurceased\nsurceases\nsurceasing\nsurcharge\nsurcharged\nsurcharges\nsurcharging\nsurcoat\nsurcoats\nsurd\nsurds\nsure\nsurefire\nsurely\nsureness\nsurenesses\nsurer\nsurest\nsureties\nsurety\nsuretyship\nsuretyships\nsurf\nsurfable\nsurface\nsurfaced\nsurfacer\nsurfacers\nsurfaces\nsurfacing\nsurfbird\nsurfbirds\nsurfboard\nsurfboarder\nsurfboarders\nsurfboarding\nsurfboards\nsurfboat\nsurfboats\nsurfed\nsurfeit\nsurfeited\nsurfeiting\nsurfeits\nsurfer\nsurfers\nsurffish\nsurffishes\nsurfier\nsurfiest\nsurfing\nsurfings\nsurflike\nsurfs\nsurfy\nsurge\nsurged\nsurgeon\nsurgeons\nsurger\nsurgeries\nsurgers\nsurgery\nsurges\nsurgical\nsurgically\nsurging\nsurgy\nsuricate\nsuricates\nsurlier\nsurliest\nsurlily\nsurliness\nsurly\nsurmise\nsurmised\nsurmiser\nsurmisers\nsurmises\nsurmising\nsurmount\nsurmountable\nsurmounted\nsurmounting\nsurmounts\nsurname\nsurnamed\nsurnamer\nsurnamers\nsurnames\nsurnaming\nsurpass\nsurpassable\nsurpassed\nsurpasses\nsurpassing\nsurpassingly\nsurplice\nsurplices\nsurplus\nsurplusage\nsurplusages\nsurpluses\nsurprint\nsurprinted\nsurprinting\nsurprints\nsurprise\nsurprised\nsurprises\nsurprising\nsurprisingly\nsurprize\nsurprized\nsurprizes\nsurprizing\nsurra\nsurras\nsurreal\nsurrealism\nsurrealist\nsurrealistic\nsurrealistically\nsurrealists\nsurrender\nsurrendered\nsurrendering\nsurrenders\nsurreptitious\nsurreptitiously\nsurrey\nsurreys\nsurrogate\nsurrogated\nsurrogates\nsurrogating\nsurround\nsurrounded\nsurrounding\nsurroundings\nsurrounds\nsurroyal\nsurroyals\nsurtax\nsurtaxed\nsurtaxes\nsurtaxing\nsurtout\nsurtouts\nsurveil\nsurveiled\nsurveiling\nsurveillance\nsurveillances\nsurveillant\nsurveillants\nsurveilled\nsurveilling\nsurveils\nsurvey\nsurveyed\nsurveying\nsurveyor\nsurveyors\nsurveys\nsurvivability\nsurvivable\nsurvival\nsurvivals\nsurvive\nsurvived\nsurviver\nsurvivers\nsurviving\nsurvivives\nsurvivor\nsurvivors\nsusceptibilities\nsusceptibility\nsusceptible\nsusceptibleness\nsusceptibly\nsushi\nsuslik\nsusliks\nsuspect\nsuspected\nsuspecting\nsuspects\nsuspend\nsuspended\nsuspender\nsuspenders\nsuspending\nsuspends\nsuspense\nsuspenseful\nsuspenses\nsuspension\nsuspensions\nsuspensive\nsuspensively\nsuspensories\nsuspensory\nsuspicion\nsuspicions\nsuspicious\nsuspiciously\nsuspiciousness\nsuspire\nsuspired\nsuspires\nsuspiring\nsuss\nsustain\nsustainable\nsustained\nsustaining\nsustains\nsustenance\nsustenances\nsusurrus\nsusurruses\nsutler\nsutlers\nsutra\nsutras\nsutta\nsuttas\nsuttee\nsuttees\nsutural\nsuturally\nsuture\nsutured\nsutures\nsuturing\nsuzerain\nsuzerains\nsvaraj\nsvarajes\nsvedberg\nsvedbergs\nsvelte\nsveltely\nsvelter\nsveltest\nswab\nswabbed\nswabber\nswabbers\nswabbie\nswabbies\nswabbing\nswabby\nswabs\nswaddle\nswaddled\nswaddles\nswaddling\nswag\nswage\nswaged\nswager\nswagers\nswages\nswagged\nswagger\nswaggered\nswaggerer\nswaggerers\nswaggering\nswaggers\nswagging\nswaging\nswagman\nswagmen\nswags\nswail\nswails\nswain\nswainish\nswainishness\nswains\nswale\nswales\nswallow\nswallowable\nswallowed\nswallower\nswallowers\nswallowing\nswallows\nswam\nswami\nswamies\nswamis\nswamp\nswamped\nswamper\nswampers\nswampier\nswampiest\nswamping\nswampish\nswampland\nswamplands\nswamps\nswampy\nswamy\nswan\nswang\nswanherd\nswanherds\nswank\nswanked\nswanker\nswankest\nswankier\nswankiest\nswankily\nswankiness\nswanking\nswanks\nswanky\nswanlike\nswanned\nswanneries\nswannery\nswanning\nswanpan\nswanpans\nswans\nswanskin\nswanskins\nswap\nswapped\nswapper\nswappers\nswapping\nswaps\nswaraj\nswarajes\nsward\nswarded\nswarding\nswards\nsware\nswarf\nswarfs\nswarm\nswarmed\nswarmer\nswarmers\nswarming\nswarms\nswart\nswarth\nswarthier\nswarthiest\nswarths\nswarthy\nswarty\nswash\nswashbuckler\nswashbucklers\nswashbuckling\nswashed\nswasher\nswashers\nswashes\nswashing\nswastica\nswasticas\nswastika\nswastikas\nswat\nswatch\nswatches\nswath\nswathe\nswathed\nswather\nswathers\nswathes\nswathing\nswaths\nswats\nswatted\nswatter\nswatters\nswatting\nsway\nswayable\nswayback\nswaybacked\nswaybacks\nswayed\nswayer\nswayers\nswayful\nswaying\nsways\nswear\nswearer\nswearers\nswearing\nswears\nswearword\nswearwords\nsweat\nsweatband\nsweatbands\nsweatbox\nsweatboxes\nsweated\nsweater\nsweaters\nsweatier\nsweatiest\nsweatily\nsweatiness\nsweating\nsweats\nsweatshop\nsweatshops\nsweaty\nswede\nswedes\nsweenies\nsweeny\nsweep\nsweeper\nsweepers\nsweepier\nsweepiest\nsweeping\nsweepingly\nsweepingness\nsweepings\nsweeps\nsweepstakes\nsweepy\nsweer\nsweet\nsweetbread\nsweetbreads\nsweeten\nsweetened\nsweetener\nsweeteners\nsweetening\nsweetenings\nsweetens\nsweeter\nsweetest\nsweetheart\nsweethearts\nsweetie\nsweeties\nsweeting\nsweetings\nsweetish\nsweetly\nsweetmeat\nsweetmeats\nsweetness\nsweets\nsweetsop\nsweetsops\nswell\nswelled\nsweller\nswellest\nswelling\nswellings\nswells\nswelter\nsweltered\nsweltering\nswelteringly\nswelters\nsweltrier\nsweltriest\nsweltry\nswept\nswerve\nswerved\nswerver\nswervers\nswerves\nswerving\nsweven\nswevens\nswift\nswifter\nswifters\nswiftest\nswiftly\nswiftness\nswifts\nswig\nswigged\nswigger\nswiggers\nswigging\nswigs\nswill\nswilled\nswiller\nswillers\nswilling\nswills\nswim\nswimmable\nswimmer\nswimmers\nswimmier\nswimmiest\nswimmily\nswimming\nswimmingly\nswimmings\nswimmy\nswims\nswimsuit\nswimsuits\nswindle\nswindled\nswindler\nswindlers\nswindles\nswindling\nswine\nswineherd\nswineherds\nswinepox\nswinepoxes\nswing\nswingable\nswinge\nswinged\nswingeing\nswinger\nswingers\nswinges\nswingier\nswingiest\nswinging\nswingingly\nswingle\nswingled\nswingles\nswingling\nswings\nswingy\nswinish\nswinishly\nswink\nswinked\nswinking\nswinks\nswinney\nswinneys\nswipe\nswiped\nswipes\nswiping\nswiple\nswiples\nswipple\nswipples\nswirl\nswirled\nswirlier\nswirliest\nswirling\nswirlingly\nswirls\nswirly\nswish\nswished\nswisher\nswishers\nswishes\nswishier\nswishiest\nswishing\nswishingly\nswishy\nswiss\nswisses\nswitch\nswitchboard\nswitchboards\nswitched\nswitcher\nswitchers\nswitches\nswitching\nswitchman\nswitchmen\nswith\nswithe\nswither\nswithered\nswithering\nswithers\nswithly\nswive\nswived\nswivel\nswiveled\nswiveling\nswivelled\nswivelling\nswivels\nswives\nswivet\nswivets\nswiving\nswizzle\nswizzled\nswizzler\nswizzlers\nswizzles\nswizzling\nswob\nswobbed\nswobber\nswobbers\nswobbing\nswobs\nswollen\nswoon\nswooned\nswooner\nswooners\nswooning\nswooningly\nswoons\nswoop\nswooped\nswooper\nswoopers\nswooping\nswoops\nswoosh\nswooshed\nswooshes\nswooshing\nswop\nswopped\nswopping\nswops\nsword\nswordfish\nswordfishes\nswordlike\nswordman\nswordmen\nswordplay\nswordplayer\nswordplayers\nswords\nswordsman\nswordsmanship\nswordsmen\nswore\nsworn\nswot\nswots\nswotted\nswotter\nswotters\nswotting\nswoun\nswound\nswounded\nswounding\nswounds\nswouned\nswouning\nswouns\nswum\nswung\nsybarite\nsybarites\nsybaritic\nsybaritically\nsybo\nsyboes\nsycamine\nsycamines\nsycamore\nsycamores\nsyce\nsycee\nsycees\nsyces\nsycomore\nsycomores\nsyconia\nsyconium\nsycophancies\nsycophancy\nsycophant\nsycophantic\nsycophantically\nsycophantishly\nsycophants\nsycoses\nsycosis\nsyenite\nsyenites\nsyenitic\nsyke\nsykes\nsyli\nsylis\nsyllabi\nsyllabic\nsyllabically\nsyllabicate\nsyllabicated\nsyllabicates\nsyllabicating\nsyllabication\nsyllabications\nsyllabics\nsyllabification\nsyllabifications\nsyllabified\nsyllabifies\nsyllabify\nsyllabifying\nsyllable\nsyllabled\nsyllables\nsyllabling\nsyllabub\nsyllabubs\nsyllabus\nsyllabuses\nsyllogism\nsyllogisms\nsyllogist\nsyllogistic\nsyllogistically\nsyllogists\nsylph\nsylphic\nsylphid\nsylphids\nsylphish\nsylphlike\nsylphs\nsylphy\nsylva\nsylvae\nsylvan\nsylvanite\nsylvans\nsylvas\nsylvatic\nsylvin\nsylvine\nsylvines\nsylvins\nsylvite\nsylvites\nsymbion\nsymbions\nsymbiont\nsymbionts\nsymbioses\nsymbiosis\nsymbiot\nsymbiote\nsymbiotes\nsymbiotic\nsymbiotically\nsymbiots\nsymbol\nsymboled\nsymbolic\nsymbolically\nsymboling\nsymbolism\nsymbolisms\nsymbolist\nsymbolistic\nsymbolists\nsymbolization\nsymbolizations\nsymbolize\nsymbolized\nsymbolizes\nsymbolizing\nsymbolled\nsymbolling\nsymbologies\nsymbology\nsymbols\nsymmetric\nsymmetrical\nsymmetrically\nsymmetricalness\nsymmetries\nsymmetrization\nsymmetrizations\nsymmetrize\nsymmetrized\nsymmetrizes\nsymmetrizing\nsymmetry\nsympathetic\nsympathetically\nsympathies\nsympathize\nsympathized\nsympathizer\nsympathizers\nsympathizes\nsympathizing\nsympathy\nsympatries\nsympatry\nsymphonic\nsymphonically\nsymphonies\nsymphony\nsympodia\nsymposia\nsymposium\nsymposiums\nsymptom\nsymptomatic\nsymptomatically\nsymptomless\nsymptoms\nsyn\nsynagog\nsynagogs\nsynagogue\nsynagogues\nsynapse\nsynapsed\nsynapses\nsynapsing\nsynapsis\nsynaptic\nsynaptically\nsync\nsyncarp\nsyncarpies\nsyncarps\nsyncarpy\nsynced\nsynch\nsynched\nsynching\nsynchro\nsynchromesh\nsynchromeshes\nsynchronism\nsynchronisms\nsynchronistic\nsynchronization\nsynchronizations\nsynchronize\nsynchronized\nsynchronizer\nsynchronizers\nsynchronizes\nsynchronizing\nsynchronous\nsynchronously\nsynchronousness\nsynchros\nsynchrotron\nsynchrotrons\nsynchs\nsyncing\nsynclinal\nsyncline\nsynclines\nsyncom\nsyncoms\nsyncopal\nsyncopate\nsyncopated\nsyncopates\nsyncopating\nsyncopation\nsyncopations\nsyncopator\nsyncopators\nsyncope\nsyncopes\nsyncopic\nsyncretic\nsyncretism\nsyncretisms\nsyncretistic\nsyncretize\nsyncretized\nsyncretizes\nsyncretizing\nsyncs\nsyncytia\nsyndeses\nsyndesis\nsyndesises\nsyndet\nsyndetic\nsyndets\nsyndic\nsyndical\nsyndicalism\nsyndicalist\nsyndicalists\nsyndicate\nsyndicated\nsyndicates\nsyndicating\nsyndication\nsyndications\nsyndicator\nsyndicators\nsyndics\nsyndrome\nsyndromes\nsyne\nsynecdoche\nsynecdoches\nsynecdochic\nsynecdochical\nsynecdochically\nsynecological\nsynecology\nsynectic\nsynergia\nsynergias\nsynergic\nsynergid\nsynergids\nsynergies\nsynergism\nsynergisms\nsynergistic\nsynergistically\nsynergy\nsynesis\nsynesises\nsyngamic\nsyngamies\nsyngamy\nsynod\nsynodal\nsynodic\nsynodical\nsynods\nsynonym\nsynonyme\nsynonymes\nsynonymic\nsynonymies\nsynonymity\nsynonymize\nsynonymized\nsynonymizes\nsynonymizing\nsynonymous\nsynonymously\nsynonyms\nsynonymy\nsynopses\nsynopsis\nsynopsize\nsynopsized\nsynopsizes\nsynopsizing\nsynoptic\nsynoptically\nsynovia\nsynovial\nsynovias\nsyntactic\nsyntactical\nsyntactically\nsyntax\nsyntaxes\nsynth\nsyntheses\nsynthesis\nsynthesist\nsynthesists\nsynthesize\nsynthesized\nsynthesizer\nsynthesizers\nsynthesizes\nsynthesizing\nsynthetic\nsynthetical\nsynthetically\nsynthetics\nsyntonic\nsyntonies\nsyntony\nsynura\nsynurae\nsypher\nsyphered\nsyphering\nsyphers\nsyphilis\nsyphilises\nsyphilitic\nsyphilitics\nsyphon\nsyphoned\nsyphoning\nsyphons\nsyren\nsyrens\nsyringa\nsyringas\nsyringe\nsyringed\nsyringes\nsyringing\nsyrinx\nsyrinxes\nsyrphian\nsyrphians\nsyrphid\nsyrphids\nsyrup\nsyrups\nsyrupy\nsystem\nsystematic\nsystematically\nsystematicness\nsystematics\nsystematist\nsystematists\nsystematization\nsystematizations\nsystematize\nsystematized\nsystematizer\nsystematizers\nsystematizes\nsystematizing\nsystemic\nsystemically\nsystemics\nsystemization\nsystemizations\nsystemize\nsystemized\nsystemizes\nsystemizing\nsystemless\nsystems\nsystole\nsystoles\nsystolic\nsyzygal\nsyzygial\nsyzygies\nsyzygy\nta\ntab\ntabanid\ntabanids\ntabard\ntabarded\ntabards\ntabaret\ntabarets\ntabbed\ntabbied\ntabbies\ntabbing\ntabbis\ntabbises\ntabby\ntabbying\ntaber\ntabered\ntabering\ntabernacle\ntabernacled\ntabernacles\ntabernacling\ntabers\ntabes\ntabetic\ntabetics\ntabid\ntabla\ntablas\ntable\ntableau\ntableaus\ntableaux\ntablecloth\ntablecloths\ntabled\ntableful\ntablefuls\ntableland\ntablelands\ntableless\ntables\ntablesful\ntablespoon\ntablespoonful\ntablespoonfuls\ntablespoons\ntablet\ntableted\ntableting\ntabletop\ntabletops\ntablets\ntabletted\ntabletting\ntableware\ntabling\ntabloid\ntabloids\ntaboo\ntabooed\ntabooing\ntaboos\ntabor\ntabored\ntaborer\ntaborers\ntaboret\ntaborets\ntaborin\ntaborine\ntaborines\ntaboring\ntaborins\ntabors\ntabour\ntaboured\ntabourer\ntabourers\ntabouret\ntabourets\ntabouring\ntabours\ntabs\ntabu\ntabued\ntabuing\ntabular\ntabulate\ntabulated\ntabulates\ntabulating\ntabulation\ntabulations\ntabulator\ntabulators\ntabus\ntace\ntaces\ntacet\ntach\ntache\ntaches\ntachinid\ntachinids\ntachism\ntachisms\ntachist\ntachiste\ntachistes\ntachistoscope\ntachistoscopes\ntachistoscopic\ntachistoscopically\ntachists\ntachometer\ntachometers\ntachs\ntacit\ntacitly\ntacitness\ntaciturn\ntaciturnity\ntack\ntacked\ntacker\ntackers\ntacket\ntackets\ntackey\ntackier\ntackiest\ntackified\ntackifies\ntackify\ntackifying\ntackily\ntackiness\ntacking\ntackle\ntackled\ntackler\ntacklers\ntackles\ntackless\ntackling\ntacklings\ntacks\ntacky\ntacnode\ntacnodes\ntaco\ntaconite\ntaconites\ntacos\ntact\ntactful\ntactfully\ntactfulness\ntactic\ntactical\ntactically\ntactician\ntacticians\ntactics\ntactile\ntactility\ntaction\ntactions\ntactless\ntactlessly\ntactlessness\ntacts\ntactual\ntactually\ntad\ntadpole\ntadpoles\ntads\ntae\ntael\ntaels\ntaenia\ntaeniae\ntaenias\ntaffarel\ntaffarels\ntafferel\ntafferels\ntaffeta\ntaffetas\ntaffia\ntaffias\ntaffies\ntaffrail\ntaffrails\ntaffy\ntafia\ntafias\ntag\ntagalong\ntagalongs\ntagboard\ntagboards\ntagged\ntagger\ntaggers\ntagging\ntaglike\ntagmeme\ntagmemes\ntagrag\ntagrags\ntags\ntahr\ntahrs\ntahsil\ntahsils\ntaiga\ntaigas\ntaiglach\ntail\ntailback\ntailbacks\ntailbone\ntailbones\ntailcoat\ntailcoats\ntailed\ntailer\ntailers\ntailgate\ntailgated\ntailgates\ntailgating\ntailing\ntailings\ntaille\ntailles\ntailless\ntaillight\ntaillights\ntaillike\ntailor\ntailored\ntailoring\ntailors\ntailpiece\ntailpieces\ntailpipe\ntailpipes\ntailrace\ntailraces\ntails\ntailskid\ntailskids\ntailspin\ntailspins\ntailwind\ntailwinds\ntain\ntains\ntaint\ntainted\ntainting\ntaintless\ntaints\ntaipan\ntaipans\ntaj\ntajes\ntaka\ntakable\ntakahe\ntakahes\ntake\ntakeable\ntakedown\ntakedowns\ntaken\ntakeoff\ntakeoffs\ntakeout\ntakeouts\ntakeover\ntakeovers\ntaker\ntakers\ntakes\ntakin\ntaking\ntakingly\ntakings\ntakins\ntala\ntalapoin\ntalapoins\ntalar\ntalaria\ntalars\ntalas\ntalc\ntalced\ntalcing\ntalcked\ntalcking\ntalcky\ntalcose\ntalcous\ntalcs\ntalcum\ntalcums\ntale\ntalebearer\ntalebearers\ntalent\ntalented\ntalents\ntaler\ntalers\ntales\ntalesman\ntalesmen\ntaleteller\ntaletellers\ntaleysim\ntali\ntalion\ntalions\ntaliped\ntalipeds\ntalipes\ntalipot\ntalipots\ntalisman\ntalismanic\ntalismanically\ntalismans\ntalk\ntalkable\ntalkative\ntalkatively\ntalkativeness\ntalked\ntalker\ntalkers\ntalkie\ntalkier\ntalkies\ntalkiest\ntalking\ntalkings\ntalks\ntalky\ntall\ntallage\ntallaged\ntallages\ntallaging\ntallaisim\ntallboy\ntallboys\ntaller\ntallest\ntallied\ntallier\ntalliers\ntallies\ntallish\ntallith\ntallithes\ntallithim\ntallitoth\ntallness\ntallnesses\ntallol\ntallols\ntallow\ntallowed\ntallowing\ntallows\ntallowy\ntally\ntallyho\ntallyhoed\ntallyhoing\ntallyhos\ntallying\ntallyman\ntallymen\ntalmudic\ntalon\ntaloned\ntalons\ntalooka\ntalookas\ntaluk\ntaluka\ntalukas\ntaluks\ntalus\ntaluses\ntam\ntamable\ntamal\ntamale\ntamales\ntamals\ntamandu\ntamandua\ntamanduas\ntamandus\ntamarack\ntamaracks\ntamarao\ntamaraos\ntamarau\ntamaraus\ntamarin\ntamarind\ntamarinds\ntamarins\ntamarisk\ntamarisks\ntamasha\ntamashas\ntambac\ntambacs\ntambala\ntambalas\ntambour\ntamboura\ntambouras\ntamboured\ntambourine\ntambourines\ntambouring\ntambours\ntambur\ntambura\ntamburas\ntamburs\ntame\ntameable\ntamed\ntamein\ntameins\ntameless\ntamely\ntameness\ntamenesses\ntamer\ntamers\ntames\ntamest\ntaming\ntamis\ntamises\ntammie\ntammies\ntammy\ntamp\ntampala\ntampalas\ntampan\ntampans\ntamped\ntamper\ntampered\ntamperer\ntamperers\ntampering\ntampers\ntamping\ntampion\ntampions\ntampon\ntamponed\ntamponing\ntampons\ntamps\ntams\ntan\ntanager\ntanagers\ntanbark\ntanbarks\ntandem\ntandems\ntang\ntanged\ntangelo\ntangelos\ntangence\ntangences\ntangencies\ntangency\ntangent\ntangential\ntangentially\ntangents\ntangerine\ntangerines\ntangibility\ntangible\ntangibleness\ntangibles\ntangibly\ntangier\ntangiest\ntanging\ntangle\ntangled\ntanglement\ntanglements\ntangler\ntanglers\ntangles\ntanglier\ntangliest\ntangling\ntangly\ntango\ntangoed\ntangoing\ntangos\ntangram\ntangrams\ntangs\ntangy\ntanist\ntanistries\ntanistry\ntanists\ntank\ntanka\ntankage\ntankages\ntankard\ntankards\ntankas\ntanked\ntanker\ntankers\ntankful\ntankfuls\ntanking\ntanks\ntankship\ntankships\ntannable\ntannage\ntannages\ntannate\ntannates\ntanned\ntanner\ntanneries\ntanners\ntannery\ntannest\ntannic\ntannin\ntanning\ntannings\ntannins\ntannish\ntanrec\ntanrecs\ntans\ntansies\ntansy\ntantalic\ntantalize\ntantalized\ntantalizes\ntantalizing\ntantalizingly\ntantalum\ntantalums\ntantalus\ntantaluses\ntantamount\ntantara\ntantaras\ntantivies\ntantivy\ntanto\ntantra\ntantras\ntantric\ntantrum\ntantrums\ntanyard\ntanyards\ntao\ntaos\ntap\ntapa\ntapadera\ntapaderas\ntapadero\ntapaderos\ntapalo\ntapalos\ntapas\ntape\ntaped\ntapeless\ntapelike\ntapeline\ntapelines\ntaper\ntapered\ntaperer\ntaperers\ntapering\ntapers\ntapes\ntapestried\ntapestries\ntapestry\ntapestrying\ntapeta\ntapetal\ntapetum\ntapeworm\ntapeworms\ntaphole\ntapholes\ntaphouse\ntaphouses\ntaping\ntapioca\ntapiocas\ntapir\ntapirs\ntapis\ntapises\ntapped\ntapper\ntappers\ntappet\ntappets\ntapping\ntappings\ntaproom\ntaprooms\ntaproot\ntaproots\ntaps\ntapster\ntapsters\ntar\ntarantas\ntarantases\ntarantella\ntarantellas\ntarantula\ntarantulas\ntarboosh\ntarbooshes\ntarbush\ntarbushes\ntardier\ntardies\ntardiest\ntardily\ntardiness\ntardinesses\ntardo\ntardy\ntare\ntared\ntares\ntarge\ntarges\ntarget\ntargeted\ntargeting\ntargets\ntariff\ntariffed\ntariffing\ntariffs\ntaring\ntarlatan\ntarlatans\ntarletan\ntarletans\ntarmac\ntarmacs\ntarn\ntarnal\ntarnally\ntarnish\ntarnishable\ntarnished\ntarnishes\ntarnishing\ntarns\ntaro\ntaroc\ntarocs\ntarok\ntaroks\ntaros\ntarot\ntarots\ntarp\ntarpan\ntarpans\ntarpaper\ntarpapers\ntarpaulin\ntarpaulins\ntarpon\ntarpons\ntarps\ntarragon\ntarragons\ntarre\ntarred\ntarres\ntarried\ntarrier\ntarriers\ntarries\ntarriest\ntarring\ntarry\ntarrying\ntars\ntarsal\ntarsals\ntarsi\ntarsia\ntarsias\ntarsier\ntarsiers\ntarsus\ntart\ntartan\ntartana\ntartanas\ntartans\ntartar\ntartaric\ntartars\ntarted\ntarter\ntartest\ntarting\ntartish\ntartlet\ntartlets\ntartly\ntartness\ntartnesses\ntartrate\ntartrates\ntarts\ntartufe\ntartufes\ntartuffe\ntartuffes\ntarty\ntarweed\ntarweeds\ntarzan\ntarzans\ntas\ntask\ntasked\ntasking\ntaskmaster\ntaskmasters\ntasks\ntaskwork\ntaskworks\ntass\ntasse\ntassel\ntasseled\ntasseling\ntasselled\ntasselling\ntassels\ntasses\ntasset\ntassets\ntassie\ntassies\ntastable\ntaste\ntasted\ntasteful\ntastefully\ntastefulness\ntasteless\ntastelessly\ntastelessness\ntaster\ntasters\ntastes\ntastier\ntastiest\ntastily\ntastiness\ntasting\ntasty\ntat\ntatami\ntatamis\ntatar\ntate\ntater\ntaters\ntates\ntatouay\ntatouays\ntats\ntatted\ntatter\ntatterdemalion\ntatterdemalions\ntattered\ntattering\ntatters\ntattersall\ntattersalls\ntattier\ntattiest\ntatting\ntattings\ntattle\ntattled\ntattler\ntattlers\ntattles\ntattletale\ntattletales\ntattling\ntattoo\ntattooed\ntattooer\ntattooers\ntattooing\ntattooist\ntattooists\ntattoos\ntatty\ntau\ntaught\ntaunt\ntaunted\ntaunter\ntaunters\ntaunting\ntauntingly\ntaunts\ntaupe\ntaupes\ntaurine\ntaurines\ntaus\ntaut\ntautaug\ntautaugs\ntauted\ntauten\ntautened\ntautening\ntautens\ntauter\ntautest\ntauting\ntautly\ntautness\ntautnesses\ntautog\ntautogs\ntautological\ntautologically\ntautologies\ntautologous\ntautologously\ntautology\ntautomer\ntautomers\ntautonym\ntautonyms\ntauts\ntav\ntavern\ntaverner\ntaverners\ntaverns\ntavs\ntaw\ntawdrier\ntawdries\ntawdriest\ntawdrily\ntawdry\ntawed\ntawer\ntawers\ntawie\ntawing\ntawney\ntawneys\ntawnier\ntawnies\ntawniest\ntawnily\ntawny\ntawpie\ntawpies\ntaws\ntawse\ntawsed\ntawses\ntawsing\ntax\ntaxa\ntaxable\ntaxables\ntaxably\ntaxation\ntaxations\ntaxed\ntaxeme\ntaxemes\ntaxemic\ntaxer\ntaxers\ntaxes\ntaxi\ntaxicab\ntaxicabs\ntaxidermist\ntaxidermists\ntaxidermy\ntaxied\ntaxies\ntaxiing\ntaximan\ntaximen\ntaximeter\ntaximeters\ntaxing\ntaxingly\ntaxis\ntaxite\ntaxites\ntaxitic\ntaxiway\ntaxiways\ntaxless\ntaxman\ntaxmen\ntaxon\ntaxonomic\ntaxonomically\ntaxonomies\ntaxonomist\ntaxonomists\ntaxonomy\ntaxons\ntaxpaid\ntaxpayer\ntaxpayers\ntaxpaying\ntaxus\ntaxwise\ntaxying\ntazza\ntazzas\ntazze\ntea\nteaberries\nteaberry\nteaboard\nteaboards\nteabowl\nteabowls\nteabox\nteaboxes\nteacake\nteacakes\nteacart\nteacarts\nteach\nteachable\nteachableness\nteachably\nteacher\nteachers\nteaches\nteaching\nteachings\nteacup\nteacupful\nteacupfuls\nteacups\nteahouse\nteahouses\nteak\nteakettle\nteakettles\nteaks\nteakwood\nteakwoods\nteal\nteals\nteam\nteamaker\nteamakers\nteamed\nteaming\nteammate\nteammates\nteams\nteamster\nteamsters\nteamwork\nteamworks\nteapot\nteapots\nteapoy\nteapoys\ntear\ntearable\nteardown\nteardowns\nteardrop\nteardrops\nteared\ntearer\ntearers\ntearful\ntearfully\ntearfulness\nteargas\nteargases\nteargassed\nteargasses\nteargassing\ntearier\nteariest\ntearily\nteariness\ntearing\ntearless\ntearoom\ntearooms\ntears\nteary\nteas\ntease\nteased\nteasel\nteaseled\nteaseler\nteaselers\nteaseling\nteaselled\nteaselling\nteasels\nteaser\nteasers\nteases\nteashop\nteashops\nteasing\nteasingly\nteaspoon\nteaspoonful\nteaspoonfuls\nteaspoons\nteat\nteated\nteatime\nteatimes\nteats\nteaware\nteawares\nteazel\nteazeled\nteazeling\nteazelled\nteazelling\nteazels\nteazle\nteazled\nteazles\nteazling\nteched\ntechier\ntechiest\ntechily\ntechnetronic\ntechnic\ntechnical\ntechnicalities\ntechnicality\ntechnically\ntechnician\ntechnicians\ntechnics\ntechnique\ntechniques\ntechnocracies\ntechnocracy\ntechnocrat\ntechnocratic\ntechnocrats\ntechnologic\ntechnological\ntechnologically\ntechnologies\ntechnologist\ntechnologists\ntechnologize\ntechnology\ntechnostructure\ntechnostructures\ntechy\ntecta\ntectal\ntectonic\ntectonics\ntectrices\ntectrix\ntectum\nted\ntedded\ntedder\ntedders\nteddies\ntedding\nteddy\ntedious\ntediously\ntediousness\ntedium\ntediums\nteds\ntee\nteed\nteeing\nteel\nteels\nteem\nteemed\nteemer\nteemers\nteeming\nteemingly\nteems\nteen\nteenage\nteenaged\nteenager\nteenagers\nteener\nteeners\nteenful\nteenier\nteeniest\nteens\nteensier\nteensiest\nteensy\nteentsier\nteentsiest\nteentsy\nteeny\nteepee\nteepees\ntees\nteeter\nteetered\nteetering\nteeters\nteeth\nteethe\nteethed\nteether\nteethers\nteethes\nteething\nteethings\nteetotal\nteetotaled\nteetotaler\nteetotalers\nteetotaling\nteetotalism\nteetotalist\nteetotalists\nteetotalled\nteetotaller\nteetotallers\nteetotalling\nteetotally\nteetotals\nteetotum\nteetotums\nteff\nteffs\nteg\ntegmen\ntegmenta\ntegmina\ntegminal\ntegs\ntegua\nteguas\ntegular\ntegumen\ntegument\nteguments\ntegumina\nteiglach\nteiid\nteiids\nteind\nteinds\ntektite\ntektites\ntektitic\ntel\ntela\ntelae\ntelamon\ntelamones\ntele\ntelecast\ntelecasted\ntelecaster\ntelecasters\ntelecasting\ntelecasts\ntelecommunication\ntelecommunications\nteleconference\nteleconferences\nteleconferencing\ntelecourse\ntelecourses\nteledu\nteledus\ntelefilm\ntelefilms\ntelega\ntelegas\ntelegenic\ntelegonies\ntelegony\ntelegram\ntelegrammed\ntelegramming\ntelegrams\ntelegraph\ntelegraphed\ntelegrapher\ntelegraphers\ntelegraphic\ntelegraphing\ntelegraphist\ntelegraphists\ntelegraphs\ntelegraphy\ntelekinesis\ntelekinetic\nteleman\ntelemark\ntelemarks\ntelemen\ntelemeter\ntelemeters\ntelemetries\ntelemetry\nteleologic\nteleological\nteleologically\nteleologies\nteleology\nteleost\nteleosts\ntelepathic\ntelepathically\ntelepathy\ntelephone\ntelephoned\ntelephoner\ntelephoners\ntelephones\ntelephonic\ntelephonically\ntelephoning\ntelephony\ntelephoto\ntelephotographic\ntelephotography\nteleplay\nteleplays\nteleport\nteleported\nteleporting\nteleports\nteleprinter\nteleprinters\nteleprocessing\nteleran\ntelerans\nteles\ntelescope\ntelescoped\ntelescopes\ntelescopic\ntelescopically\ntelescoping\nteleses\ntelesis\ntelethon\ntelethons\nteletypewriter\nteletypewriters\nteleview\nteleviewed\nteleviewer\nteleviewers\nteleviewing\nteleviews\ntelevise\ntelevised\ntelevises\ntelevising\ntelevision\ntelevisionary\ntelevisions\ntelevisor\ntelevisors\ntelex\ntelexed\ntelexes\ntelexing\ntelfer\ntelfered\ntelfering\ntelfers\ntelford\ntelfords\ntelia\ntelial\ntelic\ntelium\ntell\ntellable\nteller\ntellers\ntellies\ntellieses\ntelling\ntells\ntelltale\ntelltales\ntelluric\ntelluride\ntellurides\ntellurium\ntelly\nteloi\ntelome\ntelomes\ntelomic\ntelos\ntelpher\ntelphered\ntelphering\ntelphers\ntels\ntelson\ntelsonic\ntelsons\ntemblor\ntemblores\ntemblors\ntemerities\ntemerity\ntemp\ntempeh\ntempehs\ntemper\ntempera\ntemperable\ntemperament\ntemperamental\ntemperamentally\ntemperaments\ntemperance\ntemperances\ntemperas\ntemperate\ntemperately\ntemperateness\ntemperature\ntemperatures\ntempered\ntemperer\ntemperers\ntempering\ntempers\ntempest\ntempested\ntempesting\ntempests\ntempestuous\ntempestuously\ntempestuousness\ntempi\ntemplar\ntemplars\ntemplate\ntemplates\ntemple\ntempled\ntemples\ntemplet\ntemplets\ntempo\ntemporal\ntemporalities\ntemporality\ntemporally\ntemporals\ntemporaries\ntemporarily\ntemporariness\ntemporary\ntemporization\ntemporizations\ntemporize\ntemporized\ntemporizer\ntemporizers\ntemporizes\ntemporizing\ntempos\ntemps\ntempt\ntemptable\ntemptation\ntemptations\ntempted\ntempter\ntempters\ntempting\ntemptingly\ntemptress\ntemptresses\ntempts\ntempura\ntempuras\nten\ntenability\ntenable\ntenableness\ntenably\ntenace\ntenaces\ntenacious\ntenaciously\ntenaciousness\ntenacities\ntenacity\ntenacula\ntenail\ntenaille\ntenailles\ntenails\ntenancies\ntenancy\ntenant\ntenantable\ntenanted\ntenanting\ntenantless\ntenantries\ntenantry\ntenants\ntench\ntenches\ntend\ntendance\ntendances\ntended\ntendence\ntendences\ntendencies\ntendency\ntendentious\ntendentiously\ntendentiousness\ntender\ntendered\ntenderer\ntenderers\ntenderest\ntenderfeet\ntenderfoot\ntenderfoots\ntenderhearted\ntenderheartedly\ntenderheartedness\ntendering\ntenderization\ntenderizations\ntenderize\ntenderized\ntenderizer\ntenderizers\ntenderizes\ntenderizing\ntenderloin\ntenderloins\ntenderly\ntenderness\ntenders\ntending\ntendon\ntendons\ntendril\ntendrilous\ntendrils\ntends\ntenebrae\ntenement\ntenementary\ntenements\ntenesmic\ntenesmus\ntenesmuses\ntenet\ntenets\ntenfold\ntenfolds\ntenia\nteniae\ntenias\nteniasis\nteniasises\ntenner\ntenners\ntennis\ntennises\ntennist\ntennists\ntenon\ntenoned\ntenoner\ntenoners\ntenoning\ntenons\ntenor\ntenorite\ntenorites\ntenors\ntenotomies\ntenotomy\ntenour\ntenours\ntenpence\ntenpences\ntenpenny\ntenpin\ntenpins\ntenrec\ntenrecs\ntens\ntense\ntensed\ntensely\ntenseness\ntenser\ntenses\ntensest\ntensible\ntensibly\ntensile\ntensility\ntensing\ntension\ntensional\ntensioned\ntensioning\ntensionless\ntensions\ntensities\ntensity\ntensive\ntensor\ntensors\ntent\ntentacle\ntentacled\ntentacles\ntentage\ntentages\ntentative\ntentatively\ntentativeness\ntented\ntenter\ntentered\ntenterhook\ntenterhooks\ntentering\ntenters\ntenth\ntenthly\ntenths\ntentie\ntentier\ntentiest\ntenting\ntentless\ntentlike\ntents\ntenty\ntenues\ntenuis\ntenuities\ntenuity\ntenuous\ntenuously\ntenuousness\ntenure\ntenured\ntenures\ntenurial\ntenurially\ntenuti\ntenuto\ntenutos\nteocalli\nteocallis\nteopan\nteopans\nteosinte\nteosintes\ntepa\ntepal\ntepals\ntepas\ntepee\ntepees\ntepefied\ntepefies\ntepefy\ntepefying\ntephra\ntephras\ntephrite\ntephrites\ntepid\ntepidities\ntepidity\ntepidly\ntepidness\ntepoy\ntequila\ntequilas\nterai\nterais\nteraohm\nteraohms\nteraph\nteraphim\nteratism\nteratisms\nteratoid\nteratoma\nteratomas\nteratomata\nterbia\nterbias\nterbic\nterbium\nterbiums\nterce\ntercel\ntercelet\ntercelets\ntercels\ntercentenaries\ntercentenary\ntercentennial\ntercentennials\nterces\ntercet\ntercets\nterebene\nterebenes\nterebic\nteredines\nteredo\nteredos\nterefah\nterete\nterga\ntergal\ntergite\ntergites\ntergiversate\ntergiversated\ntergiversates\ntergiversating\ntergiversation\ntergiversations\ntergiversator\ntergiversators\ntergum\nteriyaki\nteriyakis\nterm\ntermagant\ntermagants\ntermed\ntermer\ntermers\nterminable\nterminableness\nterminably\nterminal\nterminally\nterminals\nterminate\nterminated\nterminates\nterminating\ntermination\nterminational\nterminations\nterminative\nterminatively\nterminator\nterminators\nterming\ntermini\nterminological\nterminologically\nterminologies\nterminology\nterminus\nterminuses\ntermite\ntermites\ntermitic\ntermless\ntermly\ntermor\ntermors\nterms\ntermtime\ntermtimes\ntern\nternaries\nternary\nternate\nterne\nternes\nternion\nternions\nterns\nterpene\nterpenes\nterpenic\nterpinol\nterpinols\nterpsichorean\nterpsichoreans\nterra\nterrace\nterraced\nterraces\nterracing\nterrae\nterrain\nterrains\nterrane\nterranes\nterrapin\nterrapins\nterraria\nterrarium\nterrariums\nterras\nterrases\nterrazzo\nterrazzos\nterreen\nterreens\nterrella\nterrellas\nterrene\nterrenes\nterrestrial\nterrestrially\nterrestrials\nterret\nterrets\nterrible\nterribleness\nterribly\nterrier\nterriers\nterries\nterrific\nterrifically\nterrified\nterrifies\nterrify\nterrifying\nterrifyingly\nterrine\nterrines\nterrit\nterritorial\nterritorialities\nterritoriality\nterritorialization\nterritorializations\nterritorialize\nterritorialized\nterritorializes\nterritorializing\nterritorially\nterritories\nterritory\nterrits\nterror\nterrorism\nterrorisms\nterrorist\nterroristic\nterrorists\nterrorization\nterrorizations\nterrorize\nterrorized\nterrorizes\nterrorizing\nterrorless\nterrors\nterry\nterse\ntersely\nterseness\nterser\ntersest\ntertial\ntertials\ntertian\ntertians\ntertiaries\ntertiary\ntesla\nteslas\ntessellate\ntessellated\ntessellates\ntessellating\ntessellation\ntessellations\ntessera\ntesserae\ntest\ntesta\ntestability\ntestable\ntestacies\ntestacy\ntestae\ntestament\ntestamentary\ntestaments\ntestate\ntestator\ntestators\ntested\ntestee\ntestees\ntester\ntesters\ntestes\ntesticle\ntesticles\ntestier\ntestiest\ntestified\ntestifies\ntestify\ntestifying\ntestily\ntestimonial\ntestimonials\ntestimonies\ntestimony\ntestiness\ntesting\ntestis\nteston\ntestons\ntestoon\ntestoons\ntests\ntestudines\ntestudo\ntestudos\ntesty\ntet\ntetanal\ntetanic\ntetanics\ntetanies\ntetanise\ntetanised\ntetanises\ntetanising\ntetanize\ntetanized\ntetanizes\ntetanizing\ntetanoid\ntetanus\ntetanuses\ntetany\ntetched\ntetchier\ntetchiest\ntetchily\ntetchy\nteth\ntether\ntethered\ntethering\ntethers\nteths\ntetotum\ntetotums\ntetra\ntetrachloride\ntetrachlorides\ntetracid\ntetracids\ntetracycline\ntetracyclines\ntetrad\ntetradic\ntetrads\ntetragon\ntetragons\ntetrahedra\ntetrahedral\ntetrahedrally\ntetrahedron\ntetrahedrons\ntetralogies\ntetralogy\ntetramer\ntetramers\ntetrapod\ntetrapods\ntetrarch\ntetrarchs\ntetras\ntetrode\ntetrodes\ntetroxid\ntetroxids\ntetryl\ntetryls\ntets\ntetter\ntetters\nteuch\nteugh\nteughly\ntew\ntewed\ntewing\ntews\ntexas\ntexases\ntext\ntextbook\ntextbookish\ntextbooks\ntextile\ntextiles\ntextless\ntexts\ntextual\ntextually\ntextuaries\ntextuary\ntextural\ntexturally\ntexture\ntextured\ntextures\ntexturing\nthack\nthacked\nthacking\nthacks\nthae\nthairm\nthairms\nthalami\nthalamic\nthalamus\nthaler\nthalers\nthalli\nthallic\nthallium\nthalliums\nthalloid\nthallous\nthallus\nthalluses\nthan\nthanage\nthanages\nthanatos\nthanatoses\nthane\nthanes\nthank\nthanked\nthanker\nthankers\nthankful\nthankfuller\nthankfullest\nthankfully\nthankfulness\nthanking\nthankless\nthanklessly\nthanklessness\nthanks\nthanksgiving\nthanksgivings\ntharm\ntharms\nthat\nthataway\nthatch\nthatched\nthatcher\nthatchers\nthatches\nthatching\nthatchy\nthaw\nthawed\nthawer\nthawers\nthawing\nthawless\nthaws\nthe\nthearchies\nthearchy\ntheater\ntheaters\ntheatre\ntheatres\ntheatric\ntheatrical\ntheatricality\ntheatrically\ntheatricals\ntheatrics\nthebaine\nthebaines\nthebe\ntheca\nthecae\nthecal\nthecate\nthee\ntheelin\ntheelins\ntheelol\ntheelols\ntheft\nthefts\nthegn\nthegnly\nthegns\nthein\ntheine\ntheines\ntheins\ntheir\ntheirs\ntheism\ntheisms\ntheist\ntheistic\ntheistical\ntheistically\ntheists\nthelitis\nthelitises\nthem\nthematic\nthematically\ntheme\nthemes\nthemselves\nthen\nthenage\nthenages\nthenal\nthenar\nthenars\nthence\nthenceforth\nthenceforward\nthenceforwards\nthens\ntheocracies\ntheocracy\ntheocrat\ntheocratic\ntheocratical\ntheocratically\ntheocrats\ntheodicies\ntheodicy\ntheodolite\ntheodolites\ntheodolitic\ntheogonies\ntheogony\ntheolog\ntheologian\ntheologians\ntheological\ntheologically\ntheologies\ntheologize\ntheologized\ntheologizer\ntheologizers\ntheologizes\ntheologizing\ntheologs\ntheology\ntheonomies\ntheonomy\ntheorbo\ntheorbos\ntheorem\ntheorematic\ntheorems\ntheoretic\ntheoretical\ntheoretically\ntheoretician\ntheoreticians\ntheoretics\ntheories\ntheorise\ntheorised\ntheorises\ntheorising\ntheorist\ntheorists\ntheorization\ntheorizations\ntheorize\ntheorized\ntheorizer\ntheorizers\ntheorizes\ntheorizing\ntheory\ntheosophical\ntheosophically\ntheosophist\ntheosophists\ntheosophy\ntherapeutic\ntherapeutically\ntherapeutics\ntherapeutist\ntherapeutists\ntherapies\ntherapist\ntherapists\ntherapy\nthere\nthereabout\nthereabouts\nthereafter\nthereat\nthereby\ntherefor\ntherefore\ntherefrom\ntherein\nthereinafter\nthereinto\ntheremin\ntheremins\nthereof\nthereon\ntheres\nthereto\ntheretofore\nthereunder\nthereupon\ntherewith\ntheriac\ntheriaca\ntheriacas\ntheriacs\ntherm\nthermae\nthermal\nthermally\nthermals\ntherme\nthermel\nthermels\nthermes\nthermic\nthermion\nthermions\nthermite\nthermites\nthermocouple\nthermocouples\nthermodynamic\nthermodynamical\nthermodynamically\nthermodynamicist\nthermodynamicists\nthermodynamics\nthermoelectric\nthermoelectricity\nthermometer\nthermometers\nthermometric\nthermometrically\nthermometries\nthermometry\nthermonuclear\nthermopile\nthermopiles\nthermoplastic\nthermoplasticity\nthermoplastics\nthermos\nthermoses\nthermoset\nthermosets\nthermosetting\nthermostat\nthermostatic\nthermostatically\nthermostats\ntherms\ntheroid\ntheropod\ntheropods\nthesauri\nthesaurus\nthesauruses\nthese\ntheses\nthesis\nthespian\nthespians\ntheta\nthetas\nthetic\nthetical\ntheurgic\ntheurgies\ntheurgy\nthew\nthewless\nthews\nthewy\nthey\nthiamin\nthiamine\nthiamines\nthiamins\nthiazide\nthiazides\nthiazin\nthiazine\nthiazines\nthiazins\nthiazol\nthiazole\nthiazoles\nthiazols\nthick\nthicken\nthickened\nthickener\nthickeners\nthickening\nthickenings\nthickens\nthicker\nthickest\nthicket\nthickets\nthickety\nthickish\nthickly\nthickness\nthicknesses\nthicks\nthickset\nthicksets\nthief\nthieve\nthieved\nthieveries\nthievery\nthieves\nthieving\nthievingly\nthievish\nthievishly\nthievishness\nthigh\nthighbone\nthighbones\nthighed\nthighs\nthill\nthills\nthimble\nthimbleful\nthimblefuls\nthimbles\nthin\nthinclad\nthinclads\nthindown\nthindowns\nthine\nthing\nthings\nthink\nthinkable\nthinker\nthinkers\nthinking\nthinkingly\nthinkings\nthinks\nthinly\nthinned\nthinner\nthinners\nthinness\nthinnesses\nthinnest\nthinning\nthinnish\nthins\nthio\nthiol\nthiolic\nthiols\nthionate\nthionates\nthionic\nthionin\nthionine\nthionines\nthionins\nthionyl\nthionyls\nthiophen\nthiophens\nthiotepa\nthiotepas\nthiourea\nthioureas\nthir\nthiram\nthirams\nthird\nthirdly\nthirds\nthirl\nthirlage\nthirlages\nthirled\nthirling\nthirls\nthirst\nthirsted\nthirster\nthirsters\nthirstier\nthirstiest\nthirstily\nthirstiness\nthirsting\nthirsts\nthirsty\nthirteen\nthirteens\nthirteenth\nthirteenths\nthirties\nthirtieth\nthirtieths\nthirty\nthis\nthistle\nthistledown\nthistles\nthistly\nthither\nthitherto\ntho\nthole\ntholed\ntholepin\ntholepins\ntholes\ntholing\ntholoi\ntholos\nthong\nthonged\nthongs\nthoracal\nthoraces\nthoracic\nthorax\nthoraxes\nthoria\nthorias\nthoric\nthorite\nthorites\nthorium\nthoriums\nthorn\nthorned\nthornier\nthorniest\nthornily\nthorniness\nthorning\nthornless\nthornlike\nthorns\nthorny\nthoro\nthoron\nthorons\nthorough\nthoroughbred\nthoroughbreds\nthorougher\nthoroughest\nthoroughfare\nthoroughfares\nthoroughgoing\nthoroughly\nthoroughness\nthorp\nthorpe\nthorpes\nthorps\nthose\nthou\nthoued\nthough\nthought\nthoughtful\nthoughtfully\nthoughtfulness\nthoughtless\nthoughtlessly\nthoughtlessness\nthoughts\nthouing\nthous\nthousand\nthousandfold\nthousands\nthousandth\nthousandths\nthowless\nthraldom\nthraldoms\nthrall\nthralled\nthralling\nthralls\nthrash\nthrashed\nthrasher\nthrashers\nthrashes\nthrashing\nthrave\nthraves\nthraw\nthrawart\nthrawed\nthrawing\nthrawn\nthrawnly\nthraws\nthread\nthreadbare\nthreadbareness\nthreaded\nthreader\nthreaders\nthreadier\nthreadiest\nthreadiness\nthreading\nthreadless\nthreadlike\nthreads\nthready\nthreap\nthreaped\nthreaper\nthreapers\nthreaping\nthreaps\nthreat\nthreated\nthreaten\nthreatened\nthreatener\nthreateners\nthreatening\nthreateningly\nthreatens\nthreating\nthreats\nthree\nthreefold\nthreep\nthreeped\nthreeping\nthreeps\nthrees\nthreescore\nthreesome\nthreesomes\nthrenode\nthrenodes\nthrenodies\nthrenodist\nthrenodists\nthrenody\nthresh\nthreshed\nthresher\nthreshers\nthreshes\nthreshing\nthreshold\nthresholds\nthrew\nthrice\nthrift\nthriftier\nthriftiest\nthriftily\nthriftiness\nthriftless\nthriftlessly\nthriftlessness\nthrifts\nthrifty\nthrill\nthrilled\nthriller\nthrillers\nthrilling\nthrillingly\nthrills\nthrip\nthrips\nthrive\nthrived\nthriven\nthriver\nthrivers\nthrives\nthriving\nthrivingly\nthro\nthroat\nthroated\nthroatier\nthroatiest\nthroatily\nthroatiness\nthroating\nthroats\nthroaty\nthrob\nthrobbed\nthrobber\nthrobbers\nthrobbing\nthrobs\nthroe\nthroes\nthrombi\nthrombin\nthrombins\nthrombus\nthrone\nthroned\nthrones\nthrong\nthronged\nthronging\nthrongs\nthroning\nthrostle\nthrostles\nthrottle\nthrottled\nthrottler\nthrottlers\nthrottles\nthrottling\nthrough\nthroughout\nthroughput\nthroughputs\nthrove\nthrow\nthrowaway\nthrowaways\nthrowback\nthrowbacks\nthrower\nthrowers\nthrowing\nthrown\nthrows\nthru\nthrum\nthrummed\nthrummer\nthrummers\nthrummier\nthrummiest\nthrumming\nthrummy\nthrums\nthruput\nthruputs\nthrush\nthrushes\nthrust\nthrusted\nthruster\nthrusters\nthrusting\nthrustor\nthrustors\nthrusts\nthruway\nthruways\nthud\nthudded\nthudding\nthuds\nthug\nthuggee\nthuggees\nthuggeries\nthuggery\nthuggish\nthugs\nthuja\nthujas\nthulia\nthulias\nthulium\nthuliums\nthumb\nthumbed\nthumbing\nthumbkin\nthumbkins\nthumbnail\nthumbnails\nthumbnut\nthumbnuts\nthumbs\nthumbscrew\nthumbscrews\nthumbtack\nthumbtacks\nthump\nthumped\nthumper\nthumpers\nthumping\nthumps\nthunder\nthunderbolt\nthunderbolts\nthunderclap\nthunderclaps\nthundercloud\nthunderclouds\nthundered\nthunderhead\nthunderheads\nthundering\nthunderingly\nthunderous\nthunderously\nthunders\nthundershower\nthundershowers\nthunderstorm\nthunderstorms\nthundery\nthunk\nthurible\nthuribles\nthurifer\nthurifers\nthurl\nthurls\nthus\nthusly\nthuya\nthuyas\nthwack\nthwacked\nthwacker\nthwackers\nthwacking\nthwacks\nthwart\nthwarted\nthwarter\nthwarters\nthwarting\nthwartly\nthwarts\nthy\nthyme\nthymes\nthymey\nthymi\nthymic\nthymier\nthymiest\nthymine\nthymines\nthymol\nthymols\nthymus\nthymuses\nthymy\nthyreoid\nthyroid\nthyroids\nthyroxin\nthyroxine\nthyroxines\nthyroxins\nthyrse\nthyrses\nthyrsoid\nthyrsus\nthyrsusi\nthyself\nti\ntiara\ntiaraed\ntiaras\ntibia\ntibiae\ntibial\ntibias\ntic\ntical\nticals\ntick\nticked\nticker\ntickers\nticket\nticketed\nticketing\ntickets\nticking\ntickings\ntickle\ntickled\ntickler\nticklers\ntickles\ntickling\nticklish\nticklishly\nticklishness\nticks\ntickseed\ntickseeds\nticktack\nticktacked\nticktacking\nticktacks\nticktock\nticktocked\nticktocking\nticktocks\ntics\ntictac\ntictacked\ntictacking\ntictacs\ntictoc\ntictocked\ntictocking\ntictocs\ntidal\ntidally\ntidbit\ntidbits\ntiddly\ntide\ntided\ntideland\ntidelands\ntideless\ntidelike\ntidemark\ntidemarks\ntiderip\ntiderips\ntides\ntidewater\ntidewaters\ntideway\ntideways\ntidied\ntidier\ntidies\ntidiest\ntidily\ntidiness\ntidinesses\ntiding\ntidings\ntidy\ntidying\ntidytips\ntie\ntieback\ntiebacks\ntieclasp\ntieclasps\ntied\ntieing\ntiepin\ntiepins\ntier\ntierce\ntierced\ntiercel\ntiercels\ntierces\ntiered\ntiering\ntiers\nties\ntiff\ntiffanies\ntiffany\ntiffed\ntiffin\ntiffined\ntiffing\ntiffining\ntiffins\ntiffs\ntiger\ntigereye\ntigereyes\ntigerish\ntigerlike\ntigers\ntight\ntighten\ntightened\ntightener\ntighteners\ntightening\ntightens\ntighter\ntightest\ntightly\ntightness\ntightrope\ntightropes\ntights\ntightwad\ntightwads\ntiglon\ntiglons\ntigon\ntigons\ntigress\ntigresses\ntigrish\ntike\ntikes\ntiki\ntikis\ntil\ntilak\ntilapia\ntilapias\ntilburies\ntilbury\ntilde\ntildes\ntile\ntiled\ntilefish\ntilefishes\ntilelike\ntiler\ntilers\ntiles\ntiling\ntilings\ntill\ntillable\ntillage\ntillages\ntilled\ntiller\ntillered\ntillering\ntillerless\ntillers\ntilling\ntills\ntils\ntilt\ntiltable\ntilted\ntilter\ntilters\ntilth\ntilths\ntilting\ntilts\ntiltyard\ntiltyards\ntimarau\ntimaraus\ntimbal\ntimbale\ntimbales\ntimbals\ntimber\ntimbered\ntimbering\ntimberland\ntimberlands\ntimberless\ntimberline\ntimberlines\ntimbers\ntimbre\ntimbrel\ntimbrels\ntimbres\ntime\ntimecard\ntimecards\ntimed\ntimekeeper\ntimekeepers\ntimeless\ntimelessly\ntimelessness\ntimelier\ntimeliest\ntimeliness\ntimely\ntimeous\ntimeout\ntimeouts\ntimepiece\ntimepieces\ntimer\ntimers\ntimes\ntimesaving\ntimeshare\ntimesharing\ntimetable\ntimetables\ntimework\ntimeworks\ntimeworn\ntimid\ntimider\ntimidest\ntimidities\ntimidity\ntimidly\ntimidness\ntiming\ntimings\ntimorous\ntimorously\ntimorousness\ntimothies\ntimothy\ntimpana\ntimpani\ntimpanist\ntimpanists\ntimpano\ntimpanum\ntimpanums\ntin\ntinamou\ntinamous\ntincal\ntincals\ntinct\ntincted\ntincting\ntincts\ntincture\ntinctured\ntinctures\ntincturing\ntinder\ntinderbox\ntinderboxes\ntinders\ntindery\ntine\ntinea\ntineal\ntineas\ntined\ntineid\ntineids\ntines\ntinfoil\ntinfoils\ntinful\ntinfuls\nting\ntinge\ntinged\ntingeing\ntinges\ntinging\ntingle\ntingled\ntingler\ntinglers\ntingles\ntinglier\ntingliest\ntingling\ntinglingly\ntingly\ntings\ntinhorn\ntinhorns\ntinier\ntiniest\ntinily\ntininess\ntininesses\ntining\ntinker\ntinkered\ntinkerer\ntinkerers\ntinkering\ntinkers\ntinkle\ntinkled\ntinkles\ntinklier\ntinkliest\ntinkling\ntinklings\ntinkly\ntinlike\ntinman\ntinmen\ntinned\ntinner\ntinners\ntinnier\ntinniest\ntinnily\ntinning\ntinnitus\ntinnituses\ntinny\ntinplate\ntinplates\ntins\ntinsel\ntinseled\ntinseling\ntinselled\ntinselling\ntinselly\ntinsels\ntinsmith\ntinsmiths\ntinstone\ntinstones\ntint\ntinted\ntinter\ntinters\ntinting\ntintings\ntintinnabulary\ntintinnabulation\ntintinnabulations\ntintless\ntints\ntintype\ntintypes\ntinware\ntinwares\ntinwork\ntinworks\ntiny\ntip\ntipcart\ntipcarts\ntipcat\ntipcats\ntipi\ntipis\ntipless\ntipoff\ntipoffs\ntippable\ntipped\ntipper\ntippers\ntippet\ntippets\ntippier\ntippiest\ntipping\ntipple\ntippled\ntippler\ntipplers\ntipples\ntippling\ntippy\ntips\ntipsier\ntipsiest\ntipsily\ntipsiness\ntipstaff\ntipstaffs\ntipstaves\ntipster\ntipsters\ntipstock\ntipstocks\ntipsy\ntiptoe\ntiptoed\ntiptoeing\ntiptoes\ntiptop\ntiptops\ntirade\ntirades\ntire\ntired\ntireder\ntiredest\ntiredly\ntiredness\ntireless\ntirelessly\ntirelessness\ntires\ntiresome\ntiresomely\ntiresomeness\ntiring\ntirl\ntirled\ntirling\ntirls\ntiro\ntiros\ntirrivee\ntirrivees\ntis\ntisane\ntisanes\ntissual\ntissue\ntissued\ntissues\ntissuey\ntissuing\ntit\ntitan\ntitanate\ntitanates\ntitaness\ntitanesses\ntitania\ntitanias\ntitanic\ntitanically\ntitanism\ntitanisms\ntitanite\ntitanites\ntitanium\ntitaniums\ntitanous\ntitans\ntitbit\ntitbits\ntiter\ntiters\ntithable\ntithe\ntithed\ntither\ntithers\ntithes\ntithing\ntithings\ntithonia\ntithonias\ntiti\ntitian\ntitians\ntitillate\ntitillated\ntitillates\ntitillating\ntitillatingly\ntitillation\ntitillations\ntitillative\ntitis\ntitivate\ntitivated\ntitivates\ntitivating\ntitlark\ntitlarks\ntitle\ntitled\ntitleholder\ntitleholders\ntitles\ntitling\ntitlist\ntitlists\ntitman\ntitmen\ntitmice\ntitmouse\ntitrable\ntitrant\ntitrants\ntitrate\ntitrated\ntitrates\ntitrating\ntitrator\ntitrators\ntitre\ntitres\ntits\ntitter\ntittered\ntitterer\ntitterers\ntittering\ntitters\ntittie\ntitties\ntittle\ntittles\ntittup\ntittuped\ntittuping\ntittupped\ntittupping\ntittuppy\ntittups\ntitty\ntitular\ntitularies\ntitularly\ntitulars\ntitulary\ntivy\ntizzies\ntizzy\ntmeses\ntmesis\nto\ntoad\ntoadfish\ntoadfishes\ntoadflax\ntoadflaxes\ntoadied\ntoadies\ntoadish\ntoadless\ntoadlike\ntoads\ntoadstool\ntoadstools\ntoady\ntoadying\ntoadyish\ntoadyism\ntoadyisms\ntoast\ntoasted\ntoaster\ntoasters\ntoastier\ntoastiest\ntoasting\ntoastmaster\ntoastmasters\ntoastmistress\ntoastmistresses\ntoasts\ntoasty\ntobacco\ntobaccoes\ntobacconist\ntobacconists\ntobaccos\ntobies\ntoboggan\ntobogganed\ntobogganer\ntobogganers\ntobogganing\ntobogganist\ntobogganists\ntoboggans\ntoby\ntoccata\ntoccatas\ntoccate\ntocher\ntochered\ntochering\ntochers\ntocologies\ntocology\ntocsin\ntocsins\ntod\ntoday\ntodays\ntoddies\ntoddle\ntoddled\ntoddler\ntoddlers\ntoddles\ntoddling\ntoddy\ntodies\ntods\ntody\ntoe\ntoea\ntoecap\ntoecaps\ntoed\ntoehold\ntoeholds\ntoeing\ntoeless\ntoelike\ntoenail\ntoenailed\ntoenailing\ntoenails\ntoepiece\ntoepieces\ntoeplate\ntoeplates\ntoes\ntoeshoe\ntoeshoes\ntoff\ntoffee\ntoffees\ntoffies\ntoffs\ntoffy\ntoft\ntofts\ntofu\ntofus\ntog\ntoga\ntogae\ntogaed\ntogas\ntogate\ntogated\ntogether\ntogetherness\ntogged\ntoggeries\ntoggery\ntogging\ntoggle\ntoggled\ntoggler\ntogglers\ntoggles\ntoggling\ntogs\ntogue\ntogues\ntoil\ntoile\ntoiled\ntoiler\ntoilers\ntoiles\ntoilet\ntoileted\ntoileting\ntoiletries\ntoiletry\ntoilets\ntoilette\ntoilettes\ntoilful\ntoiling\ntoils\ntoilsome\ntoilsomely\ntoilsomeness\ntoilworn\ntoit\ntoited\ntoiting\ntoits\ntokay\ntokays\ntoke\ntoked\ntoken\ntokened\ntokening\ntokenism\ntokenisms\ntokens\ntoker\ntokes\ntokologies\ntokology\ntokonoma\ntokonomas\ntola\ntolan\ntolane\ntolanes\ntolans\ntolas\ntolbooth\ntolbooths\ntold\ntole\ntoled\ntoledo\ntoledos\ntolerability\ntolerable\ntolerably\ntolerance\ntolerances\ntolerant\ntolerantly\ntolerate\ntolerated\ntolerates\ntolerating\ntoleration\ntolerations\ntolerative\ntolerator\ntolerators\ntoles\ntolidin\ntolidine\ntolidines\ntolidins\ntoling\ntoll\ntollage\ntollages\ntollbar\ntollbars\ntollbooth\ntollbooths\ntolled\ntoller\ntollers\ntollgate\ntollgates\ntolling\ntollman\ntollmen\ntolls\ntollway\ntollways\ntolu\ntoluate\ntoluates\ntoluene\ntoluenes\ntoluic\ntoluid\ntoluide\ntoluides\ntoluidin\ntoluidins\ntoluids\ntoluol\ntoluole\ntoluoles\ntoluols\ntolus\ntoluyl\ntoluyls\ntolyl\ntolyls\ntom\ntomahawk\ntomahawked\ntomahawking\ntomahawks\ntomalley\ntomalleys\ntoman\ntomans\ntomato\ntomatoes\ntomb\ntombac\ntomback\ntombacks\ntombacs\ntombak\ntombaks\ntombal\ntombed\ntombing\ntombless\ntomblike\ntombolo\ntombolos\ntomboy\ntomboyish\ntomboyishness\ntomboys\ntombs\ntombstone\ntombstones\ntomcat\ntomcats\ntomcod\ntomcods\ntome\ntomenta\ntomentum\ntomes\ntomfool\ntomfooleries\ntomfoolery\ntomfools\ntommies\ntommy\ntommyrot\ntommyrots\ntomogram\ntomograms\ntomorrow\ntomorrows\ntompion\ntompions\ntoms\ntomtit\ntomtits\nton\ntonal\ntonalities\ntonality\ntonally\ntondi\ntondo\ntone\ntoned\ntoneless\ntonelessly\ntonelessness\ntoneme\ntonemes\ntonemic\ntoner\ntoners\ntones\ntonetic\ntonetics\ntonette\ntonettes\ntoney\ntong\ntonga\ntongas\ntonged\ntonger\ntongers\ntonging\ntongman\ntongmen\ntongs\ntongue\ntongued\ntongueless\ntonguelike\ntongues\ntonguetieing\ntonguing\ntonguings\ntonic\ntonically\ntonicities\ntonicity\ntonics\ntonier\ntoniest\ntonight\ntonights\ntoning\ntonish\ntonishly\ntonlet\ntonlets\ntonnage\ntonnages\ntonne\ntonneau\ntonneaus\ntonneaux\ntonner\ntonners\ntonnes\ntonnish\ntons\ntonsil\ntonsilar\ntonsillar\ntonsillectomies\ntonsillectomy\ntonsillitis\ntonsils\ntonsure\ntonsured\ntonsures\ntonsuring\ntontine\ntontines\ntonus\ntonuses\ntony\ntoo\ntook\ntool\ntoolbox\ntoolboxes\ntooled\ntooler\ntoolers\ntoolhead\ntoolheads\ntooling\ntoolings\ntoolless\ntoolmaker\ntoolmakers\ntoolmaking\ntoolroom\ntoolrooms\ntools\ntoolshed\ntoolsheds\ntoom\ntoon\ntoons\ntoot\ntooted\ntooter\ntooters\ntooth\ntoothache\ntoothaches\ntoothbrush\ntoothbrushes\ntoothed\ntoothier\ntoothiest\ntoothily\ntoothing\ntoothless\ntoothlike\ntoothpaste\ntoothpastes\ntoothpick\ntoothpicks\ntooths\ntoothsome\ntoothsomely\ntoothsomeness\ntoothy\ntooting\ntootle\ntootled\ntootler\ntootlers\ntootles\ntootling\ntoots\ntootses\ntootsie\ntootsies\ntootsy\ntop\ntopaz\ntopazes\ntopazine\ntopcoat\ntopcoats\ntopcross\ntopcrosses\ntope\ntoped\ntopee\ntopees\ntoper\ntopers\ntopes\ntopful\ntopfull\ntoph\ntophe\ntophes\ntophi\ntophs\ntophus\ntopi\ntopiaries\ntopiary\ntopic\ntopical\ntopicalities\ntopicality\ntopically\ntopics\ntoping\ntopis\ntopkick\ntopkicks\ntopknot\ntopknots\ntopless\ntoploftier\ntoploftiest\ntoplofty\ntopmast\ntopmasts\ntopmost\ntopnotch\ntopographer\ntopographers\ntopographic\ntopographical\ntopographically\ntopographies\ntopography\ntopoi\ntopological\ntopologically\ntopologies\ntopologist\ntopologists\ntopology\ntoponym\ntoponymies\ntoponyms\ntoponymy\ntopos\ntopotype\ntopotypes\ntopped\ntopper\ntoppers\ntopping\ntoppings\ntopple\ntoppled\ntopples\ntoppling\ntops\ntopsail\ntopsails\ntopside\ntopsides\ntopsoil\ntopsoiled\ntopsoiling\ntopsoils\ntopstone\ntopstones\ntopwork\ntopworked\ntopworking\ntopworks\ntoque\ntoques\ntoquet\ntoquets\ntor\ntora\ntorah\ntorahs\ntoras\ntorc\ntorch\ntorchbearer\ntorchbearers\ntorched\ntorchere\ntorcheres\ntorches\ntorchier\ntorchiers\ntorching\ntorchlight\ntorchlights\ntorchon\ntorchons\ntorcs\ntore\ntoreador\ntoreadors\ntorero\ntoreros\ntores\ntoreutic\ntori\ntoric\ntories\ntorii\ntorment\ntormented\ntormenter\ntormenters\ntormenting\ntormentor\ntormentors\ntorments\ntorn\ntornadic\ntornado\ntornadoes\ntornados\ntornillo\ntornillos\ntoro\ntoroid\ntoroidal\ntoroids\ntoros\ntorose\ntorosities\ntorosity\ntorot\ntorous\ntorpedo\ntorpedoed\ntorpedoes\ntorpedoing\ntorpedos\ntorpid\ntorpidity\ntorpidly\ntorpids\ntorpor\ntorpors\ntorquate\ntorque\ntorqued\ntorquer\ntorquers\ntorques\ntorqueses\ntorquing\ntorr\ntorrefied\ntorrefies\ntorrefy\ntorrefying\ntorrent\ntorrential\ntorrentially\ntorrents\ntorrid\ntorrider\ntorridest\ntorridity\ntorridly\ntorridness\ntorrified\ntorrifies\ntorrify\ntorrifying\ntors\ntorsade\ntorsades\ntorse\ntorses\ntorsi\ntorsion\ntorsional\ntorsionally\ntorsions\ntorsk\ntorsks\ntorso\ntorsos\ntort\ntorte\ntorten\ntortes\ntortile\ntortilla\ntortillas\ntortious\ntortoise\ntortoises\ntortoni\ntortonis\ntortrix\ntortrixes\ntorts\ntortuous\ntortuously\ntortuousness\ntorture\ntortured\ntorturer\ntorturers\ntortures\ntorturing\ntorturous\ntorturously\ntorula\ntorulae\ntorulas\ntorus\ntory\ntosh\ntoshes\ntoss\ntossed\ntosser\ntossers\ntosses\ntossing\ntosspot\ntosspots\ntossup\ntossups\ntost\ntot\ntotable\ntotal\ntotaled\ntotaling\ntotalise\ntotalised\ntotalises\ntotalising\ntotalism\ntotalisms\ntotalitarian\ntotalitarianism\ntotalitarianisms\ntotalitarians\ntotalities\ntotality\ntotalizator\ntotalizators\ntotalize\ntotalized\ntotalizer\ntotalizers\ntotalizes\ntotalizing\ntotalled\ntotalling\ntotally\ntotals\ntote\ntoted\ntotem\ntotemic\ntotemism\ntotemisms\ntotemist\ntotemists\ntotemite\ntotemites\ntotems\ntoter\ntoters\ntotes\ntother\ntoting\ntots\ntotted\ntotter\ntottered\ntotterer\ntotterers\ntottering\ntotteringly\ntotters\ntottery\ntotting\ntoucan\ntoucans\ntouch\ntouchable\ntouchback\ntouchbacks\ntouchdown\ntouchdowns\ntouche\ntouched\ntoucher\ntouchers\ntouches\ntouchhole\ntouchholes\ntouchier\ntouchiest\ntouchily\ntouchiness\ntouching\ntouchingly\ntouchstone\ntouchstones\ntouchup\ntouchups\ntouchy\ntough\ntoughen\ntoughened\ntoughening\ntoughens\ntougher\ntoughest\ntoughie\ntoughies\ntoughish\ntoughly\ntoughness\ntoughs\ntoughy\ntoupee\ntoupees\ntour\ntouraco\ntouracos\ntoured\ntourer\ntourers\ntouring\ntourings\ntourism\ntourisms\ntourist\ntouristic\ntouristically\ntourists\ntouristy\ntourmaline\ntourmalines\ntournament\ntournaments\ntourney\ntourneyed\ntourneying\ntourneys\ntourniquet\ntourniquets\ntours\ntouse\ntoused\ntouses\ntousing\ntousle\ntousled\ntousles\ntousling\ntout\ntouted\ntouter\ntouters\ntouting\ntouts\ntouzle\ntouzled\ntouzles\ntouzling\ntovarich\ntovariches\ntovarish\ntovarishes\ntow\ntowage\ntowages\ntoward\ntowardly\ntowards\ntowaway\ntowaways\ntowboat\ntowboats\ntowed\ntowel\ntoweled\ntoweling\ntowelings\ntowelled\ntowelling\ntowels\ntower\ntowered\ntowerier\ntoweriest\ntowering\ntowerlike\ntowers\ntowery\ntowhead\ntowheaded\ntowheads\ntowhee\ntowhees\ntowie\ntowies\ntowing\ntowline\ntowlines\ntowmond\ntowmonds\ntowmont\ntowmonts\ntown\ntownee\ntownees\ntownfolk\ntownie\ntownies\ntownish\ntownless\ntownlet\ntownlets\ntowns\ntownship\ntownships\ntownsman\ntownsmen\ntownspeople\ntownwear\ntownwears\ntowny\ntowpath\ntowpaths\ntowrope\ntowropes\ntows\ntowy\ntoxaemia\ntoxaemias\ntoxaemic\ntoxemia\ntoxemias\ntoxemic\ntoxic\ntoxical\ntoxicant\ntoxicants\ntoxicities\ntoxicity\ntoxicologic\ntoxicological\ntoxicologically\ntoxicologist\ntoxicologists\ntoxicology\ntoxin\ntoxine\ntoxines\ntoxins\ntoxoid\ntoxoids\ntoy\ntoyed\ntoyer\ntoyers\ntoying\ntoyish\ntoyless\ntoylike\ntoyo\ntoyon\ntoyons\ntoyos\ntoys\ntrabeate\ntrace\ntraceability\ntraceable\ntraced\ntraceless\ntracelessly\ntracer\ntraceries\ntracers\ntracery\ntraces\ntrachea\ntracheae\ntracheal\ntracheas\ntracheid\ntracheids\ntracheotomies\ntracheotomy\ntrachle\ntrachled\ntrachles\ntrachling\ntrachoma\ntrachomas\ntrachyte\ntrachytes\ntracing\ntracings\ntrack\ntrackage\ntrackages\ntracked\ntracker\ntrackers\ntracking\ntrackings\ntrackless\ntrackman\ntrackmen\ntracks\ntract\ntractability\ntractable\ntractableness\ntractably\ntractate\ntractates\ntractile\ntraction\ntractional\ntractions\ntractive\ntractor\ntractors\ntracts\ntrad\ntradable\ntrade\ntradeable\ntraded\ntrademark\ntrademarked\ntrademarking\ntrademarks\ntrader\ntraders\ntrades\ntradesman\ntradesmen\ntradespeople\ntrading\ntradition\ntraditional\ntraditionalism\ntraditionalisms\ntraditionalist\ntraditionalistic\ntraditionalists\ntraditionally\ntraditionary\ntraditionless\ntraditions\ntraditor\ntraditores\ntraduce\ntraduced\ntraducement\ntraducements\ntraducer\ntraducers\ntraduces\ntraducing\ntraffic\ntrafficked\ntrafficker\ntraffickers\ntrafficking\ntraffics\ntragedian\ntragedians\ntragedienne\ntragediennes\ntragedies\ntragedy\ntragi\ntragic\ntragical\ntragically\ntragicomedies\ntragicomedy\ntragicomic\ntragicomical\ntragopan\ntragopans\ntragus\ntraik\ntraiked\ntraiking\ntraiks\ntrail\ntrailblazer\ntrailblazers\ntrailed\ntrailer\ntrailered\ntrailering\ntrailers\ntrailing\ntrailless\ntrails\ntrain\ntrainable\ntrained\ntrainee\ntrainees\ntrainer\ntrainers\ntrainful\ntrainfuls\ntraining\ntrainings\ntrainload\ntrainloads\ntrainman\ntrainmen\ntrains\ntrainway\ntrainways\ntraipse\ntraipsed\ntraipses\ntraipsing\ntrait\ntraitor\ntraitorous\ntraitorously\ntraitors\ntraitress\ntraitresses\ntraits\ntraject\ntrajected\ntrajecting\ntrajection\ntrajections\ntrajectories\ntrajectory\ntrajects\ntram\ntramcar\ntramcars\ntramel\ntrameled\ntrameling\ntramell\ntramelled\ntramelling\ntramells\ntramels\ntramless\ntramline\ntramlines\ntrammed\ntrammel\ntrammeled\ntrammeling\ntrammelled\ntrammelling\ntrammels\ntramming\ntramp\ntramped\ntramper\ntrampers\ntramping\ntrampish\ntrample\ntrampled\ntrampler\ntramplers\ntramples\ntrampling\ntrampoline\ntrampoliner\ntrampoliners\ntrampolines\ntrampolinist\ntrampolinists\ntramps\ntramroad\ntramroads\ntrams\ntramway\ntramways\ntrance\ntranced\ntrancelike\ntrances\ntrancing\ntrangam\ntrangams\ntrank\ntranq\ntranquil\ntranquiler\ntranquilest\ntranquility\ntranquilize\ntranquilized\ntranquilizer\ntranquilizers\ntranquilizes\ntranquilizing\ntranquiller\ntranquillest\ntranquillity\ntranquillize\ntranquillized\ntranquillizer\ntranquillizers\ntranquillizes\ntranquillizing\ntranquilly\ntranquilness\ntrans\ntransact\ntransacted\ntransacting\ntransaction\ntransactional\ntransactions\ntransactor\ntransactors\ntransacts\ntransatlantic\ntransceiver\ntransceivers\ntranscend\ntranscended\ntranscendence\ntranscendency\ntranscendent\ntranscendental\ntranscendentalism\ntranscendentalisms\ntranscendentalist\ntranscendentalists\ntranscendentally\ntranscendently\ntranscending\ntranscends\ntranscontinental\ntranscribe\ntranscribed\ntranscriber\ntranscribers\ntranscribes\ntranscribing\ntranscript\ntranscription\ntranscriptional\ntranscriptionally\ntranscriptionist\ntranscriptionists\ntranscriptions\ntranscripts\ntransducer\ntransducers\ntransect\ntransected\ntransecting\ntransects\ntransept\ntranseptal\ntransepts\ntransfer\ntransferability\ntransferable\ntransferal\ntransferals\ntransferee\ntransferees\ntransference\ntransferences\ntransferred\ntransferrer\ntransferrers\ntransferring\ntransfers\ntransfiguration\ntransfigurations\ntransfigure\ntransfigured\ntransfigures\ntransfiguring\ntransfix\ntransfixed\ntransfixes\ntransfixing\ntransfixion\ntransfixions\ntransfixt\ntransform\ntransformable\ntransformation\ntransformational\ntransformations\ntransformed\ntransformer\ntransformers\ntransforming\ntransforms\ntransfusable\ntransfuse\ntransfused\ntransfuses\ntransfusible\ntransfusing\ntransfusion\ntransfusions\ntransgress\ntransgressed\ntransgresses\ntransgressing\ntransgression\ntransgressions\ntransgressive\ntransgressor\ntransgressors\ntranship\ntranshipped\ntranshipping\ntranships\ntransience\ntransiency\ntransient\ntransiently\ntransients\ntransistor\ntransistorize\ntransistorized\ntransistorizes\ntransistorizing\ntransistors\ntransit\ntransited\ntransiting\ntransition\ntransitional\ntransitions\ntransitive\ntransitively\ntransitiveness\ntransitivity\ntransitory\ntransits\ntranslatability\ntranslatable\ntranslate\ntranslated\ntranslates\ntranslating\ntranslation\ntranslational\ntranslations\ntranslative\ntranslator\ntranslators\ntransliterate\ntransliterated\ntransliterates\ntransliterating\ntransliteration\ntransliterations\ntranslucence\ntranslucences\ntranslucencies\ntranslucency\ntranslucent\ntranslucently\ntransmigrate\ntransmigrated\ntransmigrates\ntransmigrating\ntransmigration\ntransmigrations\ntransmigrator\ntransmigrators\ntransmigratory\ntransmissibility\ntransmissible\ntransmission\ntransmissions\ntransmissive\ntransmit\ntransmits\ntransmittable\ntransmittal\ntransmittals\ntransmittance\ntransmittances\ntransmitted\ntransmitter\ntransmitters\ntransmitting\ntransmutable\ntransmutation\ntransmutations\ntransmute\ntransmuted\ntransmutes\ntransmuting\ntransom\ntransoms\ntransonic\ntranspacific\ntransparence\ntransparencies\ntransparency\ntransparent\ntransparently\ntransparentness\ntranspiration\ntranspirations\ntranspire\ntranspired\ntranspires\ntranspiring\ntransplant\ntransplantable\ntransplantation\ntransplantations\ntransplanted\ntransplanter\ntransplanters\ntransplanting\ntransplants\ntransponder\ntransponders\ntransport\ntransportability\ntransportable\ntransportation\ntransportations\ntransported\ntransporter\ntransporters\ntransporting\ntransports\ntransposable\ntranspose\ntransposed\ntransposes\ntransposing\ntransposition\ntranspositional\ntranspositions\ntranssexual\ntranssexuals\ntransship\ntransshipment\ntransshipments\ntransshipped\ntransshipping\ntransships\ntransubstantial\ntransubstantiate\ntransubstantiated\ntransubstantiates\ntransubstantiating\ntransubstantiation\ntransubstantiations\ntransude\ntransuded\ntransudes\ntransuding\ntransvaluation\ntransvaluations\ntransvalue\ntransvalued\ntransvalues\ntransvaluing\ntransversal\ntransversals\ntransverse\ntransversely\ntransverses\ntransvestite\ntransvestites\ntrap\ntrapan\ntrapanned\ntrapanning\ntrapans\ntrapball\ntrapballs\ntrapdoor\ntrapdoors\ntrapes\ntrapesed\ntrapeses\ntrapesing\ntrapeze\ntrapezes\ntrapezia\ntrapezist\ntrapezists\ntrapezium\ntrapeziums\ntrapezoid\ntrapezoidal\ntrapezoids\ntraplike\ntrapnest\ntrapnested\ntrapnesting\ntrapnests\ntrappean\ntrapped\ntrapper\ntrappers\ntrapping\ntrappings\ntrappose\ntrappous\ntraprock\ntraprocks\ntraps\ntrapshooter\ntrapshooters\ntrapt\ntrapunto\ntrapuntos\ntrash\ntrashed\ntrashes\ntrashier\ntrashiest\ntrashily\ntrashiness\ntrashing\ntrashman\ntrashmen\ntrashy\ntrass\ntrasses\ntrauchle\ntrauchled\ntrauchles\ntrauchling\ntrauma\ntraumas\ntraumata\ntraumatic\ntraumatically\ntraumatization\ntraumatizations\ntraumatize\ntraumatized\ntraumatizes\ntraumatizing\ntravail\ntravailed\ntravailing\ntravails\ntrave\ntravel\ntraveled\ntraveler\ntravelers\ntraveling\ntravelled\ntraveller\ntravellers\ntravelling\ntravelog\ntravelogs\ntravelogue\ntravelogues\ntravels\ntraversable\ntraversal\ntraversals\ntraverse\ntraversed\ntraverser\ntraversers\ntraverses\ntraversing\ntravertine\ntraves\ntravestied\ntravesties\ntravesty\ntravestying\ntravois\ntravoise\ntravoises\ntrawl\ntrawled\ntrawler\ntrawlers\ntrawley\ntrawleys\ntrawling\ntrawls\ntray\ntrayful\ntrayfuls\ntrays\ntreacheries\ntreacherous\ntreacherously\ntreacherousness\ntreachery\ntreacle\ntreacles\ntreacly\ntread\ntreaded\ntreader\ntreaders\ntreading\ntreadle\ntreadled\ntreadler\ntreadlers\ntreadles\ntreadling\ntreadmill\ntreadmills\ntreads\ntreason\ntreasonable\ntreasonably\ntreasonous\ntreasons\ntreasurable\ntreasure\ntreasured\ntreasurer\ntreasurers\ntreasures\ntreasuries\ntreasuring\ntreasury\ntreat\ntreatable\ntreated\ntreater\ntreaters\ntreaties\ntreating\ntreatise\ntreatises\ntreatment\ntreatments\ntreats\ntreaty\ntreble\ntrebled\ntrebles\ntrebling\ntrebly\ntrecento\ntrecentos\ntreddle\ntreddled\ntreddles\ntreddling\ntree\ntreed\ntreeing\ntreeless\ntreelike\ntreen\ntreenail\ntreenails\ntrees\ntreetop\ntreetops\ntref\ntrefah\ntrefoil\ntrefoils\ntrehala\ntrehalas\ntreillage\ntreillages\ntrek\ntrekked\ntrekker\ntrekkers\ntrekking\ntreks\ntrellis\ntrellised\ntrellises\ntrellising\ntremble\ntrembled\ntrembler\ntremblers\ntrembles\ntremblier\ntrembliest\ntrembling\ntrembly\ntremendous\ntremendously\ntremendousness\ntremolo\ntremolos\ntremor\ntremors\ntremulous\ntremulously\ntremulousness\ntrenail\ntrenails\ntrench\ntrenchancy\ntrenchant\ntrenchantly\ntrenched\ntrencher\ntrencherman\ntrenchermen\ntrenchers\ntrenches\ntrenching\ntrend\ntrended\ntrendier\ntrendiest\ntrendily\ntrending\ntrends\ntrendy\ntrepan\ntrepanation\ntrepanations\ntrepang\ntrepangs\ntrepanned\ntrepanning\ntrepans\ntrephination\ntrephinations\ntrephine\ntrephined\ntrephines\ntrephining\ntrepid\ntrepidation\ntrepidations\ntrespass\ntrespassed\ntrespasser\ntrespassers\ntrespasses\ntrespassing\ntress\ntressed\ntressel\ntressels\ntresses\ntressier\ntressiest\ntressour\ntressours\ntressure\ntressures\ntressy\ntrestle\ntrestles\ntrestlework\ntrestleworks\ntret\ntrets\ntrevet\ntrevets\ntrews\ntrey\ntreys\ntriable\ntriableness\ntriac\ntriacid\ntriacids\ntriad\ntriadic\ntriadics\ntriadism\ntriadisms\ntriads\ntriage\ntriages\ntrial\ntrials\ntriangle\ntriangles\ntriangular\ntriangularity\ntriangularly\ntriangulate\ntriangulated\ntriangulates\ntriangulating\ntriangulation\ntriangulations\ntriarchies\ntriarchy\ntriaxial\ntriazin\ntriazine\ntriazines\ntriazins\ntriazole\ntriazoles\ntribade\ntribades\ntribadic\ntribal\ntribalism\ntribalisms\ntribally\ntribasic\ntribe\ntribes\ntribesman\ntribesmen\ntribrach\ntribrachs\ntribulation\ntribulations\ntribunal\ntribunals\ntribunate\ntribunates\ntribune\ntribunes\ntributaries\ntributary\ntribute\ntributes\ntrice\ntriced\ntriceps\ntricepses\ntrices\ntrichina\ntrichinae\ntrichinas\ntrichite\ntrichites\ntrichoid\ntrichome\ntrichomes\ntrichotomies\ntrichotomous\ntrichotomously\ntrichotomy\ntricing\ntrick\ntricked\ntricker\ntrickeries\ntrickers\ntrickery\ntrickie\ntrickier\ntrickiest\ntrickily\ntrickiness\ntricking\ntrickish\ntrickishly\ntrickishness\ntrickle\ntrickled\ntrickles\ntricklier\ntrickliest\ntrickling\ntrickly\ntricks\ntricksier\ntricksiest\ntrickster\ntricksters\ntricksy\ntricky\ntriclad\ntriclads\ntricolor\ntricolored\ntricolors\ntricorn\ntricorne\ntricornes\ntricorns\ntricot\ntricots\ntrictrac\ntrictracs\ntricycle\ntricycles\ntricyclic\ntrident\ntridents\ntridimensional\ntridimensionality\ntriduum\ntriduums\ntried\ntriene\ntrienes\ntriennia\ntriennial\ntriennially\ntriennials\ntriennium\ntrienniums\ntriens\ntrientes\ntrier\ntriers\ntries\ntriethyl\ntrifid\ntrifle\ntrifled\ntrifler\ntriflers\ntrifles\ntrifling\ntriflings\ntrifocal\ntrifocals\ntrifold\ntriforia\ntriform\ntrifornia\ntrig\ntrigged\ntrigger\ntriggered\ntriggering\ntriggers\ntriggest\ntrigging\ntrigly\ntriglyph\ntriglyphs\ntrigness\ntrignesses\ntrigo\ntrigon\ntrigonal\ntrigonometric\ntrigonometrical\ntrigonometrically\ntrigonometry\ntrigons\ntrigos\ntrigraph\ntrigraphs\ntrigs\ntrihedra\ntrijet\ntrijets\ntrike\ntrilateral\ntrilbies\ntrilby\ntrilingual\ntrilingually\ntrill\ntrilled\ntriller\ntrillers\ntrilling\ntrillion\ntrillions\ntrillionth\ntrillionths\ntrillium\ntrilliums\ntrills\ntrilobal\ntrilobed\ntrilobite\ntrilobites\ntrilogies\ntrilogy\ntrim\ntrimaran\ntrimarans\ntrimer\ntrimers\ntrimester\ntrimesters\ntrimeter\ntrimeters\ntrimly\ntrimmed\ntrimmer\ntrimmers\ntrimmest\ntrimming\ntrimmings\ntrimness\ntrimnesses\ntrimonthly\ntrimorph\ntrimorphs\ntrimotor\ntrimotors\ntrims\ntrinal\ntrinary\ntrindle\ntrindled\ntrindles\ntrindling\ntrine\ntrined\ntrines\ntrining\ntrinities\ntrinity\ntrinket\ntrinketed\ntrinketing\ntrinkets\ntrinkums\ntrinodal\ntrinomial\ntrinomials\ntrio\ntriode\ntriodes\ntriol\ntriolet\ntriolets\ntriols\ntrios\ntriose\ntrioses\ntrioxid\ntrioxide\ntrioxides\ntrioxids\ntrip\ntripack\ntripacks\ntripart\ntripartite\ntripe\ntripedal\ntripes\ntriphase\ntriplane\ntriplanes\ntriple\ntripled\ntriples\ntriplet\ntriplets\ntriplex\ntriplexes\ntriplicate\ntriplicated\ntriplicates\ntriplicating\ntriplication\ntriplications\ntriplicities\ntriplicity\ntripling\ntriplite\ntriplites\ntriploid\ntriploids\ntriply\ntripod\ntripodal\ntripodic\ntripodies\ntripods\ntripody\ntripoli\ntripolis\ntripos\ntriposes\ntripped\ntripper\ntrippers\ntrippet\ntrippets\ntripping\ntrippings\ntrips\ntriptane\ntriptanes\ntriptyca\ntriptycas\ntriptych\ntriptychs\ntrireme\ntriremes\ntriscele\ntrisceles\ntrisect\ntrisected\ntrisecting\ntrisection\ntrisections\ntrisector\ntrisectors\ntrisects\ntriseme\ntrisemes\ntrisemic\ntriskele\ntriskeles\ntrismic\ntrismus\ntrismuses\ntrisome\ntrisomes\ntrisomic\ntrisomics\ntrisomies\ntrisomy\ntristate\ntriste\ntristeza\ntristezas\ntristful\ntristich\ntristichs\ntrite\ntritely\ntriteness\ntriter\ntritest\ntrithing\ntrithings\ntriticum\ntriticums\ntritium\ntritiums\ntritoma\ntritomas\ntriton\ntritone\ntritones\ntritons\ntriturate\ntriturated\ntriturates\ntriturating\ntriturator\ntriturators\ntriumph\ntriumphal\ntriumphant\ntriumphantly\ntriumphed\ntriumphing\ntriumphs\ntriumvir\ntriumviral\ntriumvirate\ntriumvirates\ntriumviri\ntriumvirs\ntriune\ntriunes\ntriunities\ntriunity\ntrivalve\ntrivalves\ntrivet\ntrivets\ntrivia\ntrivial\ntrivialities\ntriviality\ntrivially\ntrivium\ntriweeklies\ntriweekly\ntroak\ntroaked\ntroaking\ntroaks\ntrocar\ntrocars\ntrochaic\ntrochaics\ntrochal\ntrochar\ntrochars\ntroche\ntrochee\ntrochees\ntroches\ntrochil\ntrochili\ntrochils\ntrochlea\ntrochleae\ntrochleas\ntrochoid\ntrochoids\ntrock\ntrocked\ntrocking\ntrocks\ntrod\ntrodden\ntrode\ntroffer\ntroffers\ntrogon\ntrogons\ntroika\ntroikas\ntroilite\ntroilites\ntroilus\ntroiluses\ntrois\ntroke\ntroked\ntrokes\ntroking\ntroland\ntrolands\ntroll\ntrolled\ntroller\ntrollers\ntrolley\ntrolleyed\ntrolleying\ntrolleys\ntrollied\ntrollies\ntrolling\ntrollings\ntrollop\ntrollops\ntrollopy\ntrolls\ntrolly\ntrollying\ntrombone\ntrombones\ntrombonist\ntrombonists\ntrommel\ntrommels\ntromp\ntrompe\ntromped\ntrompes\ntromping\ntromps\ntrona\ntronas\ntrone\ntrones\ntroop\ntrooped\ntrooper\ntroopers\ntroopial\ntroopials\ntrooping\ntroops\ntroopship\ntroopships\ntrooz\ntrop\ntrope\ntropes\ntrophic\ntrophied\ntrophies\ntrophy\ntrophying\ntropic\ntropical\ntropicalize\ntropicalized\ntropicalizes\ntropicalizing\ntropically\ntropics\ntropin\ntropine\ntropines\ntropins\ntropism\ntropisms\ntroposphere\ntropospheres\ntropospheric\ntrot\ntroth\ntrothed\ntrothing\ntroths\ntrotline\ntrotlines\ntrots\ntrotted\ntrotter\ntrotters\ntrotting\ntrotyl\ntrotyls\ntroubadour\ntroubadours\ntrouble\ntroubled\ntroublemaker\ntroublemakers\ntroubler\ntroublers\ntroubles\ntroubleshoot\ntroubleshooter\ntroubleshooters\ntroubleshooting\ntroubleshoots\ntroubleshot\ntroublesome\ntroublesomely\ntroublesomeness\ntroubling\ntrough\ntroughs\ntrounce\ntrounced\ntrounces\ntrouncing\ntroupe\ntrouped\ntrouper\ntroupers\ntroupes\ntroupial\ntroupials\ntrouping\ntrouser\ntrousers\ntrousseau\ntrousseaus\ntrousseaux\ntrout\ntroutier\ntroutiest\ntrouts\ntrouty\ntrouvere\ntrouveres\ntrouveur\ntrouveurs\ntrove\ntrover\ntrovers\ntroves\ntrow\ntrowed\ntrowel\ntroweled\ntroweler\ntrowelers\ntroweling\ntrowelled\ntrowelling\ntrowels\ntrowing\ntrows\ntrowsers\ntrowth\ntrowths\ntroy\ntroys\ntruancies\ntruancy\ntruant\ntruanted\ntruanting\ntruantries\ntruantry\ntruants\ntruce\ntruced\ntruces\ntrucing\ntruck\ntruckage\ntruckages\ntrucked\ntrucker\ntruckers\ntrucking\ntruckings\ntruckle\ntruckled\ntruckler\ntrucklers\ntruckles\ntruckling\ntruckload\ntruckloads\ntruckman\ntruckmen\ntrucks\ntruculence\ntruculency\ntruculent\ntruculently\ntrudge\ntrudged\ntrudgen\ntrudgens\ntrudgeon\ntrudgeons\ntrudger\ntrudgers\ntrudges\ntrudging\ntrue\ntrueblue\ntrueblues\ntrueborn\ntrued\ntrueing\ntruelove\ntrueloves\ntrueness\ntruenesses\ntruer\ntrues\ntruest\ntruffe\ntruffes\ntruffle\ntruffled\ntruffles\ntrug\ntrugs\ntruing\ntruism\ntruisms\ntruistic\ntrull\ntrulls\ntruly\ntrumeau\ntrumeaux\ntrump\ntrumped\ntrumperies\ntrumpery\ntrumpet\ntrumpeted\ntrumpeter\ntrumpeters\ntrumpeting\ntrumpetlike\ntrumpets\ntrumping\ntrumps\ntruncate\ntruncated\ntruncates\ntruncating\ntruncation\ntruncations\ntruncheon\ntruncheons\ntrundle\ntrundled\ntrundler\ntrundlers\ntrundles\ntrundling\ntrunk\ntrunked\ntrunkless\ntrunks\ntrunnel\ntrunnels\ntrunnion\ntrunnions\ntruss\ntrussed\ntrusser\ntrussers\ntrusses\ntrussing\ntrussings\ntrust\ntrustability\ntrustable\ntrusted\ntrustee\ntrusteed\ntrusteeing\ntrustees\ntrusteeship\ntrusteeships\ntruster\ntrusters\ntrustful\ntrustfully\ntrustfulness\ntrustier\ntrusties\ntrustiest\ntrustily\ntrustiness\ntrusting\ntrustingly\ntrustingness\ntrustless\ntrusts\ntrustworthily\ntrustworthiness\ntrustworthy\ntrusty\ntruth\ntruthful\ntruthfully\ntruthfulness\ntruths\ntry\ntrying\ntryingly\ntryma\ntrymata\ntryout\ntryouts\ntrypsin\ntrypsins\ntryptic\ntrysail\ntrysails\ntryst\ntryste\ntrysted\ntryster\ntrysters\ntrystes\ntrysting\ntrysts\ntryworks\ntsade\ntsades\ntsadi\ntsadis\ntsar\ntsardom\ntsardoms\ntsarevna\ntsarevnas\ntsarina\ntsarinas\ntsarism\ntsarisms\ntsarist\ntsarists\ntsaritza\ntsaritzas\ntsars\ntsetse\ntsetses\ntsimmes\ntsk\ntsked\ntsking\ntsks\ntsktsk\ntsktsked\ntsktsking\ntsktsks\ntsuba\ntsunami\ntsunamic\ntsunamis\ntsuris\ntuatara\ntuataras\ntuatera\ntuateras\ntub\ntuba\ntubae\ntubal\ntubas\ntubate\ntubbable\ntubbed\ntubber\ntubbers\ntubbier\ntubbiest\ntubbing\ntubby\ntube\ntubed\ntubeless\ntubelike\ntuber\ntubercle\ntubercles\ntubercular\ntuberculate\ntuberculated\ntuberculin\ntuberculins\ntuberculoid\ntuberculoses\ntuberculosis\ntuberculous\ntuberoid\ntuberose\ntuberoses\ntuberosity\ntuberous\ntubers\ntubes\ntubework\ntubeworks\ntubful\ntubfuls\ntubifex\ntubifexes\ntubiform\ntubing\ntubings\ntublike\ntubs\ntubular\ntubulate\ntubulated\ntubulates\ntubulating\ntubule\ntubules\ntubulose\ntubulous\ntubulure\ntubulures\ntuchun\ntuchuns\ntuck\ntuckahoe\ntuckahoes\ntucked\ntucker\ntuckered\ntuckering\ntuckers\ntucket\ntuckets\ntucking\ntucks\ntufa\ntufas\ntuff\ntuffet\ntuffets\ntuffs\ntuft\ntufted\ntufter\ntufters\ntuftier\ntuftiest\ntuftily\ntufting\ntufts\ntufty\ntug\ntugboat\ntugboats\ntugged\ntugger\ntuggers\ntugging\ntugless\ntugrik\ntugriks\ntugs\ntui\ntuille\ntuilles\ntuis\ntuition\ntuitional\ntuitions\ntuladi\ntuladis\ntularemia\ntule\ntules\ntulip\ntulips\ntulle\ntulles\ntullibee\ntullibees\ntumble\ntumbled\ntumbler\ntumblers\ntumbles\ntumbling\ntumblings\ntumbrel\ntumbrels\ntumbril\ntumbrils\ntumefied\ntumefies\ntumefy\ntumefying\ntumescence\ntumescences\ntumid\ntumidities\ntumidity\ntumidly\ntummies\ntummy\ntumor\ntumoral\ntumorlike\ntumorous\ntumors\ntumour\ntumours\ntump\ntumpline\ntumplines\ntumps\ntumular\ntumuli\ntumulose\ntumulous\ntumult\ntumults\ntumultuous\ntumultuously\ntumultuousness\ntumulus\ntumuluses\ntun\ntuna\ntunable\ntunableness\ntunably\ntunas\ntundish\ntundishes\ntundra\ntundras\ntune\ntuneable\ntuneably\ntuned\ntuneful\ntunefully\ntunefulness\ntuneless\ntunelessly\ntuner\ntuners\ntunes\ntung\ntungs\ntungsten\ntungstens\ntungstic\ntunic\ntunica\ntunicae\ntunicate\ntunicates\ntunicle\ntunicles\ntunics\ntuning\ntunnage\ntunnages\ntunned\ntunnel\ntunneled\ntunneler\ntunnelers\ntunneling\ntunnelled\ntunnellike\ntunnelling\ntunnels\ntunnies\ntunning\ntunny\ntuns\ntup\ntupelo\ntupelos\ntupik\ntupiks\ntupped\ntuppence\ntuppences\ntuppenny\ntupping\ntups\ntuque\ntuques\nturaco\nturacos\nturacou\nturacous\nturban\nturbaned\nturbans\nturbaries\nturbary\nturbeth\nturbeths\nturbid\nturbidity\nturbidly\nturbidness\nturbinal\nturbinals\nturbine\nturbines\nturbit\nturbith\nturbiths\nturbits\nturbo\nturbocar\nturbocars\nturbocharger\nturbochargers\nturbofan\nturbofans\nturbojet\nturbojets\nturboprop\nturboprops\nturbos\nturbot\nturbots\nturbulence\nturbulences\nturbulencies\nturbulency\nturbulent\nturbulently\nturd\nturdine\nturds\ntureen\ntureens\nturf\nturfed\nturfier\nturfiest\nturfing\nturfless\nturflike\nturfman\nturfmen\nturfs\nturfski\nturfskis\nturfy\nturgencies\nturgency\nturgent\nturgid\nturgidity\nturgidly\nturgidness\nturgite\nturgites\nturgor\nturgors\nturkey\nturkeys\nturkois\nturkoises\nturmeric\nturmerics\nturmoil\nturmoiled\nturmoiling\nturmoils\nturn\nturnable\nturnabout\nturnabouts\nturnaround\nturnarounds\nturnbuckle\nturnbuckles\nturncoat\nturncoats\nturndown\nturndowns\nturned\nturner\nturneries\nturners\nturnery\nturnhall\nturnhalls\nturning\nturnings\nturnip\nturnips\nturnkey\nturnkeys\nturnoff\nturnoffs\nturnout\nturnouts\nturnover\nturnovers\nturnpike\nturnpikes\nturns\nturnsole\nturnsoles\nturnspit\nturnspits\nturnstile\nturnstiles\nturntable\nturntables\nturnup\nturnups\nturpentine\nturpentined\nturpentines\nturpentining\nturpeth\nturpeths\nturpitude\nturpitudes\nturps\nturquois\nturquoise\nturquoises\nturret\nturreted\nturrets\nturrical\nturtle\nturtled\nturtledove\nturtledoves\nturtleneck\nturtlenecks\nturtler\nturtlers\nturtles\nturtling\nturtlings\nturves\ntusche\ntusches\ntush\ntushed\ntushes\ntushing\ntushy\ntusk\ntusked\ntusker\ntuskers\ntusking\ntuskless\ntusklike\ntusks\ntussah\ntussahs\ntussal\ntussar\ntussars\ntusseh\ntussehs\ntusser\ntussers\ntussis\ntussises\ntussive\ntussle\ntussled\ntussles\ntussling\ntussock\ntussocks\ntussocky\ntussor\ntussore\ntussores\ntussors\ntussuck\ntussucks\ntussur\ntussurs\ntut\ntutee\ntutees\ntutelage\ntutelages\ntutelar\ntutelaries\ntutelars\ntutelary\ntutor\ntutorage\ntutorages\ntutored\ntutoress\ntutoresses\ntutorial\ntutorials\ntutoring\ntutors\ntutorship\ntutorships\ntutoyed\ntutoyer\ntutoyered\ntutoyering\ntutoyers\ntuts\ntutted\ntutti\ntutties\ntutting\ntuttis\ntutty\ntutu\ntutus\ntux\ntuxedo\ntuxedoes\ntuxedos\ntuxes\ntuyer\ntuyere\ntuyeres\ntuyers\ntwa\ntwaddle\ntwaddled\ntwaddler\ntwaddlers\ntwaddles\ntwaddling\ntwae\ntwaes\ntwain\ntwains\ntwang\ntwanged\ntwangier\ntwangiest\ntwanging\ntwangle\ntwangled\ntwangler\ntwanglers\ntwangles\ntwangling\ntwangs\ntwangy\ntwankies\ntwanky\ntwas\ntwasome\ntwasomes\ntwat\ntwats\ntwattle\ntwattled\ntwattles\ntwattling\ntweak\ntweaked\ntweakier\ntweakiest\ntweaking\ntweaks\ntweaky\ntwee\ntweed\ntweedier\ntweediest\ntweedle\ntweedled\ntweedles\ntweedling\ntweeds\ntweedy\ntween\ntweet\ntweeted\ntweeter\ntweeters\ntweeting\ntweets\ntweeze\ntweezed\ntweezer\ntweezers\ntweezes\ntweezing\ntwelfth\ntwelfths\ntwelve\ntwelvemo\ntwelvemos\ntwelves\ntwenties\ntwentieth\ntwentieths\ntwenty\ntwerp\ntwerps\ntwibil\ntwibill\ntwibills\ntwibils\ntwice\ntwiddle\ntwiddled\ntwiddler\ntwiddlers\ntwiddles\ntwiddling\ntwier\ntwiers\ntwig\ntwigged\ntwiggen\ntwiggier\ntwiggiest\ntwigging\ntwiggy\ntwigless\ntwiglike\ntwigs\ntwilight\ntwilights\ntwilit\ntwill\ntwilled\ntwilling\ntwillings\ntwills\ntwin\ntwinborn\ntwine\ntwined\ntwiner\ntwiners\ntwines\ntwinge\ntwinged\ntwingeing\ntwinges\ntwinging\ntwinier\ntwiniest\ntwinight\ntwining\ntwinkle\ntwinkled\ntwinkler\ntwinklers\ntwinkles\ntwinkling\ntwinklings\ntwinkly\ntwinned\ntwinning\ntwinnings\ntwins\ntwinship\ntwinships\ntwiny\ntwirl\ntwirled\ntwirler\ntwirlers\ntwirlier\ntwirliest\ntwirling\ntwirls\ntwirly\ntwirp\ntwirps\ntwist\ntwisted\ntwister\ntwisters\ntwisting\ntwistings\ntwists\ntwit\ntwitch\ntwitched\ntwitcher\ntwitchers\ntwitches\ntwitchier\ntwitchiest\ntwitching\ntwitchy\ntwits\ntwitted\ntwitter\ntwittered\ntwittering\ntwitters\ntwittery\ntwitting\ntwixt\ntwo\ntwofer\ntwofers\ntwofold\ntwofolds\ntwopence\ntwopences\ntwopenny\ntwos\ntwosome\ntwosomes\ntwyer\ntwyers\ntycoon\ntycoons\ntye\ntyee\ntyees\ntyes\ntying\ntyke\ntykes\ntymbal\ntymbals\ntympan\ntympana\ntympanal\ntympani\ntympanic\ntympanies\ntympanist\ntympanists\ntympans\ntympanum\ntympanums\ntympany\ntyne\ntyned\ntynes\ntyning\ntypal\ntype\ntypeable\ntypebar\ntypebars\ntypecase\ntypecases\ntypecast\ntypecasting\ntypecasts\ntyped\ntypeface\ntypefaces\ntypes\ntypescript\ntypescripts\ntypeset\ntypeseting\ntypesets\ntypesetter\ntypesetters\ntypesetting\ntypewrite\ntypewriter\ntypewriters\ntypewrites\ntypewriting\ntypewritten\ntypewrote\ntypey\ntyphoid\ntyphoids\ntyphon\ntyphonic\ntyphons\ntyphoon\ntyphoons\ntyphose\ntyphous\ntyphus\ntyphuses\ntypic\ntypical\ntypicality\ntypically\ntypicalness\ntypier\ntypiest\ntypification\ntypifications\ntypified\ntypifier\ntypifiers\ntypifies\ntypify\ntypifying\ntyping\ntypist\ntypists\ntypo\ntypographer\ntypographers\ntypographic\ntypographical\ntypographically\ntypographies\ntypography\ntypological\ntypologically\ntypologies\ntypologist\ntypologists\ntypology\ntypos\ntypp\ntypps\ntypy\ntyramine\ntyramines\ntyrannic\ntyrannical\ntyrannically\ntyrannies\ntyrannize\ntyrannized\ntyrannizer\ntyrannizers\ntyrannizes\ntyrannizing\ntyrannous\ntyrannously\ntyranny\ntyrant\ntyrants\ntyre\ntyred\ntyres\ntyring\ntyro\ntyronic\ntyros\ntyrosine\ntyrosines\ntyrothricin\ntythe\ntythed\ntythes\ntything\ntzaddik\ntzaddikim\ntzar\ntzardom\ntzardoms\ntzarevna\ntzarevnas\ntzarina\ntzarinas\ntzarism\ntzarisms\ntzarist\ntzarists\ntzaritza\ntzaritzas\ntzars\ntzetze\ntzetzes\ntzigane\ntziganes\ntzimmes\ntzitzis\ntzitzith\ntzuris\nubieties\nubiety\nubique\nubiquities\nubiquitous\nubiquitously\nubiquitousness\nubiquity\nudder\nudders\nudo\nudometer\nudometers\nudometries\nudometry\nudos\nugh\nughs\nuglier\nugliest\nuglification\nuglifications\nuglified\nuglifier\nuglifiers\nuglifies\nuglify\nuglifying\nuglily\nugliness\nuglinesses\nugly\nugsome\nuh\nuhlan\nuhlans\nuintaite\nuintaites\nukase\nukases\nuke\nukelele\nukeleles\nukes\nukulele\nukuleles\nulama\nulamas\nulan\nulans\nulcer\nulcerate\nulcerated\nulcerates\nulcerating\nulceration\nulcerations\nulcerative\nulcered\nulcering\nulcerous\nulcers\nulema\nulemas\nulexite\nulexites\nullage\nullaged\nullages\nulna\nulnad\nulnae\nulnar\nulnas\nulpan\nulster\nulsters\nulterior\nulteriorly\nultima\nultimacies\nultimacy\nultimas\nultimata\nultimate\nultimately\nultimateness\nultimates\nultimatum\nultimatums\nultimo\nultra\nultraconservative\nultraconservatives\nultraism\nultraisms\nultraist\nultraists\nultramarine\nultramarines\nultramicroscope\nultramicroscopes\nultramicroscopic\nultraminiature\nultraminiaturization\nultraminiaturizations\nultramodern\nultramodernist\nultramodernists\nultranational\nultranationalism\nultranationalist\nultranationalistic\nultranationalists\nultrared\nultrareds\nultras\nultrasonic\nultrasonically\nultrasonics\nultraviolet\nulu\nululant\nululate\nululated\nululates\nululating\nululation\nululations\nulus\nulva\nulvas\num\numbel\numbeled\numbellar\numbellate\numbelled\numbellet\numbellets\numbels\number\numbered\numbering\numbers\numbilical\numbilicals\numbilici\numbilicus\numbilicuses\numbles\numbo\numbonal\numbonate\numbones\numbonic\numbos\numbra\numbrae\numbrage\numbrageous\numbrageously\numbrageousness\numbrages\numbral\numbras\numbrella\numbrellaed\numbrellaing\numbrellas\numbrette\numbrettes\numiac\numiack\numiacks\numiacs\numiak\numiaks\numiaq\numlaut\numlauted\numlauting\numlauts\numm\nump\numped\numping\numpirage\numpirages\numpire\numpired\numpires\numpiring\numps\numpteen\numpteenth\numteenth\nun\nunabashed\nunabashedly\nunabated\nunable\nunabridged\nunabused\nunaccented\nunacceptable\nunacceptably\nunaccepted\nunaccountability\nunaccountable\nunaccountably\nunaccustomed\nunacknowledged\nunacted\nunadjusted\nunadorned\nunadulterated\nunaffected\nunaffectedly\nunaffectedness\nunafraid\nunaged\nunageing\nunagile\nunaging\nunai\nunaided\nunaimed\nunaired\nunais\nunalike\nunallied\nunalterable\nunalterably\nunaltered\nunambiguous\nunambiguously\nunamused\nunanchor\nunanchored\nunanchoring\nunanchors\nunaneled\nunanimities\nunanimity\nunanimous\nunanimously\nunanswerable\nunanswerably\nunanswered\nunanticipated\nunanticipatedly\nunappetizing\nunappetizingly\nunapt\nunaptly\nunargued\nunarm\nunarmed\nunarming\nunarms\nunartful\nunary\nunasked\nunassigned\nunassuming\nunassumingness\nunatoned\nunattached\nunattainable\nunattended\nunattractive\nunattractively\nunattractiveness\nunau\nunaudited\nunaus\nunauthorized\nunavailability\nunavailable\nunavailing\nunavailingly\nunavoidable\nunavoidably\nunavowed\nunawaked\nunaware\nunawarely\nunawareness\nunawares\nunawed\nunbacked\nunbaked\nunbalance\nunbalanced\nunbalances\nunbalancing\nunbar\nunbarbed\nunbarred\nunbarring\nunbars\nunbased\nunbated\nunbe\nunbear\nunbearable\nunbearably\nunbeared\nunbearing\nunbears\nunbeatable\nunbeaten\nunbecoming\nunbecomingly\nunbecomingness\nunbeknownst\nunbelief\nunbeliefs\nunbelievable\nunbelievably\nunbeliever\nunbelievers\nunbelieving\nunbelievingly\nunbelt\nunbelted\nunbelting\nunbelts\nunbend\nunbendable\nunbended\nunbending\nunbends\nunbenign\nunbent\nunbiased\nunbid\nunbidden\nunbind\nunbinding\nunbinds\nunbitted\nunblamed\nunblessed\nunblest\nunblock\nunblocked\nunblocking\nunblocks\nunbloody\nunbodied\nunbolt\nunbolted\nunbolting\nunbolts\nunboned\nunbonnet\nunbonneted\nunbonneting\nunbonnets\nunborn\nunbosom\nunbosomed\nunbosoming\nunbosoms\nunbought\nunbound\nunbounded\nunboundedness\nunbowed\nunbox\nunboxed\nunboxes\nunboxing\nunbrace\nunbraced\nunbraces\nunbracing\nunbraid\nunbraided\nunbraiding\nunbraids\nunbreakable\nunbred\nunbreech\nunbreeched\nunbreeches\nunbreeching\nunbridle\nunbridled\nunbridles\nunbridling\nunbroke\nunbroken\nunbuckle\nunbuckled\nunbuckles\nunbuckling\nunbuffered\nunbuild\nunbuilding\nunbuilds\nunbuilt\nunbundle\nunbundled\nunbundles\nunbundling\nunburden\nunburdened\nunburdening\nunburdens\nunburied\nunburned\nunburnt\nunbutton\nunbuttoned\nunbuttoning\nunbuttons\nuncage\nuncaged\nuncages\nuncaging\nuncake\nuncaked\nuncakes\nuncaking\nuncalled\nuncandid\nuncannier\nuncanniest\nuncannily\nuncanniness\nuncanny\nuncap\nuncapped\nuncapping\nuncaps\nuncaring\nuncase\nuncased\nuncases\nuncashed\nuncasing\nuncaught\nuncaused\nunceasing\nunceasingly\nunceremonious\nunceremoniously\nunceremoniousness\nuncertain\nuncertainly\nuncertainness\nuncertainties\nuncertainty\nunchain\nunchained\nunchaining\nunchains\nunchancy\nunchangeable\nunchanged\nunchanging\nuncharacteristic\nuncharacteristically\nuncharge\nuncharged\nuncharges\nuncharging\nuncharitable\nuncharitableness\nuncharitably\nuncharted\nunchary\nunchaste\nunchewed\nunchic\nunchoke\nunchoked\nunchokes\nunchoking\nunchosen\nunchristian\nunchurch\nunchurched\nunchurches\nunchurching\nunci\nuncia\nunciae\nuncial\nuncially\nuncials\nunciform\nunciforms\nuncinal\nuncinate\nuncini\nuncinus\nuncivil\nuncivilized\nuncivilly\nunclad\nunclamp\nunclamped\nunclamping\nunclamps\nunclasp\nunclasped\nunclasping\nunclasps\nunclassified\nuncle\nunclean\nuncleaner\nuncleanest\nuncleanliness\nuncleanly\nuncleanness\nunclear\nuncleared\nunclearer\nunclearest\nunclench\nunclenched\nunclenches\nunclenching\nuncles\nunclinch\nunclinched\nunclinches\nunclinching\nuncloak\nuncloaked\nuncloaking\nuncloaks\nunclog\nunclogged\nunclogging\nunclogs\nunclose\nunclosed\nuncloses\nunclosing\nunclothe\nunclothed\nunclothes\nunclothing\nuncloud\nunclouded\nunclouding\nunclouds\nuncloyed\nuncluttered\nunco\nuncoated\nuncock\nuncocked\nuncocking\nuncocks\nuncoffin\nuncoffined\nuncoffining\nuncoffins\nuncoil\nuncoiled\nuncoiling\nuncoils\nuncoined\nuncombed\nuncomely\nuncomfortable\nuncomfortably\nuncomic\nuncommitted\nuncommon\nuncommoner\nuncommonest\nuncommonly\nuncommonness\nuncompromising\nuncompromisingly\nunconcern\nunconcerned\nunconcernedly\nunconcernedness\nunconditional\nunconditionally\nunconditioned\nunconfirmed\nunconquerable\nunconquered\nunconscionable\nunconscionableness\nunconscionably\nunconscious\nunconsciously\nunconsciousness\nunconstitutional\nunconstitutionality\nunconstitutionally\nuncontrollable\nuncontrollably\nuncontrolled\nunconventional\nunconventionality\nunconventionally\nuncooked\nuncool\nuncooperative\nuncork\nuncorked\nuncorking\nuncorks\nuncos\nuncountable\nuncounted\nuncouple\nuncoupled\nuncouples\nuncoupling\nuncouth\nuncouthly\nuncouthness\nuncover\nuncovered\nuncovering\nuncovers\nuncoy\nuncrate\nuncrated\nuncrates\nuncrating\nuncreate\nuncreated\nuncreates\nuncreating\nuncross\nuncrossed\nuncrosses\nuncrossing\nuncrown\nuncrowned\nuncrowning\nuncrowns\nunction\nunctions\nunctuous\nunctuously\nunctuousness\nuncurb\nuncurbed\nuncurbing\nuncurbs\nuncured\nuncurl\nuncurled\nuncurling\nuncurls\nuncursed\nuncus\nuncut\nundamaged\nundamped\nundaring\nundated\nundaunted\nundauntedly\nunde\nundecided\nundecked\nundeclared\nundee\nundefined\nundeliverable\nundemocratic\nundemonstrative\nundeniable\nundeniableness\nundeniably\nundenied\nunder\nunderachieve\nunderachieved\nunderachievement\nunderachievements\nunderachiever\nunderachievers\nunderachieves\nunderachieving\nunderact\nunderacted\nunderacting\nunderacts\nunderage\nunderages\nunderarm\nunderarms\nunderate\nunderbellies\nunderbelly\nunderbid\nunderbidder\nunderbidders\nunderbidding\nunderbids\nunderbought\nunderbrush\nunderbud\nunderbudded\nunderbudding\nunderbuds\nunderbuy\nunderbuying\nunderbuys\nundercapitalized\nundercarriage\nundercarriages\nundercharge\nundercharged\nundercharges\nundercharging\nunderclassman\nunderclassmen\nunderclothes\nunderclothing\nundercoat\nundercoating\nundercoats\nundercover\nundercurrent\nundercurrents\nundercut\nundercuts\nundercutting\nunderdeveloped\nunderdevelopment\nunderdevelopments\nunderdid\nunderdo\nunderdoes\nunderdog\nunderdogs\nunderdoing\nunderdone\nundereat\nundereate\nundereaten\nundereating\nundereats\nunderemployed\nunderemployment\nunderestimate\nunderestimated\nunderestimates\nunderestimating\nunderestimation\nunderestimations\nunderexpose\nunderexposed\nunderexposes\nunderexposing\nunderexposure\nunderexposures\nunderfed\nunderfeed\nunderfeeding\nunderfeeds\nunderfoot\nunderfur\nunderfurs\nundergarment\nundergarments\nundergo\nundergod\nundergods\nundergoes\nundergoing\nundergone\nundergraduate\nundergraduates\nunderground\nundergrounds\nundergrowth\nundergrowths\nunderhand\nunderhanded\nunderhandedly\nunderhandedness\nunderjaw\nunderjaws\nunderlaid\nunderlain\nunderlap\nunderlapped\nunderlapping\nunderlaps\nunderlay\nunderlaying\nunderlays\nunderlet\nunderlets\nunderletting\nunderlie\nunderlies\nunderline\nunderlined\nunderlines\nunderling\nunderlings\nunderlining\nunderlip\nunderlips\nunderlit\nunderlying\nundermine\nundermined\nundermines\nundermining\nundermost\nunderneath\nundernourished\nundernourishment\nunderpaid\nunderpants\nunderpart\nunderparts\nunderpass\nunderpasses\nunderpay\nunderpaying\nunderpayment\nunderpayments\nunderpays\nunderpin\nunderpinned\nunderpinning\nunderpinnings\nunderpins\nunderplay\nunderplayed\nunderplaying\nunderplays\nunderpopulated\nunderprivileged\nunderproduction\nunderproductions\nunderran\nunderrate\nunderrated\nunderrates\nunderrating\nunderrun\nunderrunning\nunderruns\nunderscore\nunderscored\nunderscores\nunderscoring\nundersea\nunderseas\nundersell\nunderselling\nundersells\nunderset\nundersets\nundersexed\nundershirt\nundershirts\nundershoot\nundershooting\nundershoots\nundershorts\nundershot\nunderside\nundersides\nundersigned\nundersized\nundersold\nunderstaffed\nunderstand\nunderstandability\nunderstandable\nunderstandably\nunderstanding\nunderstandingly\nunderstandings\nunderstands\nunderstate\nunderstated\nunderstatement\nunderstatements\nunderstates\nunderstating\nunderstood\nunderstudied\nunderstudies\nunderstudy\nunderstudying\nundertake\nundertaken\nundertaker\nundertakers\nundertakes\nundertaking\nundertakings\nundertax\nundertaxed\nundertaxes\nundertaxing\nundertone\nundertones\nundertook\nundertow\nundertows\nundervaluation\nundervaluations\nundervalue\nundervalued\nundervalues\nundervaluing\nunderwater\nunderway\nunderwear\nunderweight\nunderwent\nunderworld\nunderworlds\nunderwrite\nunderwriter\nunderwriters\nunderwrites\nunderwriting\nunderwritten\nunderwrote\nundesirable\nundesirables\nundesirably\nundesired\nundetectable\nundetected\nundeterminable\nundetermined\nundeveloped\nundevout\nundiagnosed\nundid\nundies\nundiluted\nundimmed\nundine\nundines\nundisclosed\nundiscoverable\nundiscovered\nundisputable\nundisputed\nundistinguished\nundisturbed\nundivided\nundo\nundock\nundocked\nundocking\nundocks\nundocumented\nundoer\nundoers\nundoes\nundoing\nundoings\nundone\nundouble\nundoubled\nundoubles\nundoubling\nundoubtable\nundoubted\nundoubtedly\nundoubting\nundrape\nundraped\nundrapes\nundraping\nundraw\nundrawing\nundrawn\nundraws\nundreamed\nundreamt\nundress\nundressed\nundresses\nundressing\nundrest\nundrew\nundried\nundrunk\nundue\nundulant\nundulate\nundulated\nundulates\nundulating\nundulation\nundulations\nundulatory\nundulled\nunduly\nundy\nundyed\nundying\nuneager\nunearned\nunearth\nunearthed\nunearthing\nunearthliness\nunearthly\nunearths\nunease\nuneases\nuneasier\nuneasiest\nuneasily\nuneasiness\nuneasy\nuneaten\nuneconomic\nunedible\nunedited\nunemployable\nunemployed\nunemployment\nunemployments\nunended\nunending\nunenforceable\nunenforced\nunenvied\nunequal\nunequaled\nunequalled\nunequally\nunequals\nunequivocal\nunequivocally\nunerased\nunerring\nunerringly\nunessential\nunethical\nunevaded\nuneven\nunevener\nunevenest\nunevenly\nunevenness\nuneventful\nuneventfully\nunexceptionable\nunexceptionableness\nunexceptionably\nunexceptional\nunexotic\nunexpected\nunexpectedly\nunexpectedness\nunexpert\nunexplainable\nunexplained\nunexplored\nunexposed\nunf\nunfaded\nunfading\nunfailing\nunfailingly\nunfair\nunfairer\nunfairest\nunfairly\nunfairness\nunfaith\nunfaithful\nunfaithfully\nunfaithfulness\nunfaiths\nunfallen\nunfamiliar\nunfamiliarity\nunfamiliarly\nunfancy\nunfasten\nunfastened\nunfastening\nunfastens\nunfavorable\nunfavorably\nunfazed\nunfeared\nunfed\nunfeeling\nunfeelingly\nunfeelingness\nunfeigned\nunfeignedly\nunfelt\nunfence\nunfenced\nunfences\nunfencing\nunfetter\nunfettered\nunfettering\nunfetters\nunfilial\nunfilled\nunfilmed\nunfinished\nunfired\nunfished\nunfit\nunfitly\nunfitness\nunfits\nunfitted\nunfitting\nunfix\nunfixed\nunfixes\nunfixing\nunfixt\nunflappable\nunflexed\nunflinching\nunflinchingly\nunfoiled\nunfold\nunfolded\nunfolder\nunfolders\nunfolding\nunfolds\nunfond\nunforced\nunforeseeable\nunforeseen\nunforged\nunforgettable\nunforgettably\nunforgot\nunforked\nunformed\nunfortunate\nunfortunately\nunfortunates\nunfought\nunfound\nunfounded\nunframed\nunfree\nunfreed\nunfreeing\nunfrees\nunfreeze\nunfreezes\nunfreezing\nunfriendlier\nunfriendliest\nunfriendliness\nunfriendly\nunfrock\nunfrocked\nunfrocking\nunfrocks\nunfroze\nunfrozen\nunfunded\nunfurl\nunfurled\nunfurling\nunfurls\nunfurnished\nunfused\nunfussy\nungainlier\nungainliest\nungainliness\nungainly\nungalled\nungenial\nungentle\nungently\nungifted\nungird\nungirded\nungirding\nungirds\nungirt\nunglazed\nunglove\nungloved\nungloves\nungloving\nunglue\nunglued\nunglues\nungluing\nungodlier\nungodliest\nungodliness\nungodly\nungot\nungotten\nungovernable\nungowned\nungraced\nungraded\nungrateful\nungratefully\nungratefulness\nungreedy\nungual\nunguard\nunguarded\nunguardedly\nunguardedness\nunguarding\nunguards\nunguent\nunguents\nungues\nunguided\nunguis\nungula\nungulae\nungular\nungulate\nungulates\nunhailed\nunhair\nunhaired\nunhairing\nunhairs\nunhallow\nunhallowed\nunhallowing\nunhallows\nunhalved\nunhand\nunhanded\nunhandier\nunhandiest\nunhanding\nunhands\nunhandy\nunhang\nunhanged\nunhanging\nunhangs\nunhappier\nunhappiest\nunhappily\nunhappiness\nunhappy\nunharmed\nunhasty\nunhat\nunhats\nunhatted\nunhatting\nunhealed\nunhealthier\nunhealthiest\nunhealthily\nunhealthy\nunheard\nunheated\nunheeded\nunheeding\nunhelm\nunhelmed\nunhelming\nunhelms\nunhelped\nunheroic\nunhewn\nunhinge\nunhinged\nunhinges\nunhinging\nunhip\nunhired\nunhitch\nunhitched\nunhitches\nunhitching\nunholiest\nunholily\nunholiness\nunholy\nunhood\nunhooded\nunhooding\nunhoods\nunhook\nunhooked\nunhooking\nunhooks\nunhoped\nunhorse\nunhorsed\nunhorses\nunhorsing\nunhouse\nunhoused\nunhouses\nunhousing\nunhuman\nunhung\nunhurt\nunhusk\nunhusked\nunhusking\nunhusks\nunhyphenated\nunialgal\nuniaxial\nunicameral\nunicamerally\nunicellular\nunicolor\nunicorn\nunicorns\nunicycle\nunicycles\nunicyclist\nunicyclists\nunideaed\nunideal\nunidentifiable\nunidentified\nunidirectional\nuniface\nunifaces\nunifiable\nunific\nunification\nunifications\nunified\nunifier\nunifiers\nunifies\nunifilar\nuniform\nuniformed\nuniformer\nuniformest\nuniforming\nuniformitarian\nuniformitarianism\nuniformities\nuniformity\nuniformly\nuniforms\nunify\nunifying\nunilateral\nunilaterally\nunilobed\nunimaginable\nunimbued\nunimpeachable\nunimpeachably\nunimportant\nuninformed\nuninhabitable\nuninhabited\nuninhibited\nuninhibitedly\nuninhibitedness\nuninstructed\nuninstructive\nunintelligibilities\nunintelligibility\nunintelligible\nunintelligibleness\nunintelligibly\nunintended\nunintentional\nunintentionally\nuninterested\nuninteresting\nuninterrupted\nuninterruptedly\nunion\nunionise\nunionised\nunionises\nunionising\nunionism\nunionisms\nunionist\nunionists\nunionization\nunionizations\nunionize\nunionized\nunionizes\nunionizing\nunions\nunipod\nunipods\nunipolar\nunique\nuniquely\nuniqueness\nuniquer\nuniques\nuniquest\nunironed\nunisex\nunisexes\nunison\nunisonal\nunisons\nunissued\nunit\nunitage\nunitages\nunitarian\nunitarianism\nunitarians\nunitary\nunite\nunited\nunitedly\nuniter\nuniters\nunites\nunities\nuniting\nunitive\nunitization\nunitizations\nunitize\nunitized\nunitizes\nunitizing\nunits\nunity\nunivalve\nunivalves\nuniversal\nuniversalism\nuniversalist\nuniversalistic\nuniversalists\nuniversalities\nuniversality\nuniversalization\nuniversalizations\nuniversalize\nuniversalized\nuniversalizes\nuniversalizing\nuniversally\nuniversalness\nuniversals\nuniverse\nuniverses\nuniversities\nuniversity\nunivocal\nunivocals\nunjaded\nunjoined\nunjoyful\nunjudged\nunjust\nunjustifiable\nunjustifiably\nunjustified\nunjustly\nunkempt\nunkend\nunkenned\nunkennel\nunkenneled\nunkenneling\nunkennelled\nunkennelling\nunkennels\nunkent\nunkept\nunkind\nunkinder\nunkindest\nunkindlier\nunkindliest\nunkindly\nunkindness\nunkingly\nunkissed\nunknit\nunknits\nunknitted\nunknitting\nunknot\nunknots\nunknotted\nunknotting\nunknowable\nunknowing\nunknowingly\nunknown\nunknowns\nunkosher\nunlace\nunlaced\nunlaces\nunlacing\nunlade\nunladed\nunladen\nunlades\nunlading\nunlaid\nunlash\nunlashed\nunlashes\nunlashing\nunlatch\nunlatched\nunlatches\nunlatching\nunlawful\nunlawfully\nunlawfulness\nunlay\nunlaying\nunlays\nunlead\nunleaded\nunleading\nunleads\nunlearn\nunlearned\nunlearning\nunlearns\nunlearnt\nunleased\nunleash\nunleashed\nunleashes\nunleashing\nunled\nunless\nunlet\nunlethal\nunletted\nunlettered\nunlevel\nunleveled\nunleveling\nunlevelled\nunlevelling\nunlevels\nunlevied\nunlicensed\nunlicked\nunlier\nunliest\nunlike\nunlikelier\nunlikeliest\nunlikelihood\nunlikelihoods\nunlikely\nunlimber\nunlimbered\nunlimbering\nunlimbers\nunlimited\nunlimitedly\nunlined\nunlink\nunlinked\nunlinking\nunlinks\nunlisted\nunlit\nunlive\nunlived\nunlively\nunlives\nunliving\nunload\nunloaded\nunloader\nunloaders\nunloading\nunloads\nunlobed\nunlock\nunlocked\nunlocking\nunlocks\nunloose\nunloosed\nunloosen\nunloosened\nunloosening\nunloosens\nunlooses\nunloosing\nunlovable\nunloved\nunlovelier\nunloveliest\nunlovely\nunloving\nunluckier\nunluckiest\nunluckily\nunlucky\nunmade\nunmake\nunmaker\nunmakers\nunmakes\nunmaking\nunman\nunmanful\nunmanliness\nunmanly\nunmanned\nunmannerly\nunmanning\nunmans\nunmapped\nunmarked\nunmarred\nunmarried\nunmask\nunmasked\nunmasker\nunmaskers\nunmasking\nunmasks\nunmatched\nunmated\nunmatted\nunmeaning\nunmeant\nunmeet\nunmeetly\nunmellow\nunmelted\nunmended\nunmentionable\nunmentionables\nunmerciful\nunmercifully\nunmet\nunmew\nunmewed\nunmewing\nunmews\nunmilled\nunmingle\nunmingled\nunmingles\nunmingling\nunmistakable\nunmistakably\nunmiter\nunmitered\nunmitering\nunmiters\nunmitigated\nunmitigatedly\nunmitre\nunmitred\nunmitres\nunmitring\nunmixed\nunmixt\nunmodish\nunmold\nunmolded\nunmolding\nunmolds\nunmolten\nunmoner\nunmonest\nunmoor\nunmoored\nunmooring\nunmoors\nunmoral\nunmounted\nunmovable\nunmoved\nunmoving\nunmown\nunmuffle\nunmuffled\nunmuffles\nunmuffling\nunmuzzle\nunmuzzled\nunmuzzles\nunmuzzling\nunnail\nunnailed\nunnailing\nunnails\nunnameable\nunnamed\nunnatural\nunnaturally\nunnaturalness\nunnecessarily\nunnecessary\nunneeded\nunnerve\nunnerved\nunnerves\nunnerving\nunnoisy\nunnoted\nunnoticeable\nunnoticed\nunnumbered\nunny\nunobserved\nunoccupied\nunofficial\nunofficially\nunoiled\nunopen\nunopened\nunopposed\nunordered\nunorganized\nunornate\nunorthodox\nunorthodoxies\nunorthodoxy\nunowned\nunpack\nunpacked\nunpacker\nunpackers\nunpacking\nunpacks\nunpaged\nunpaid\nunpaired\nunpalatable\nunparalleled\nunparted\nunpaved\nunpaying\nunpeg\nunpegged\nunpegging\nunpegs\nunpen\nunpenned\nunpenning\nunpens\nunpent\nunpeople\nunpeopled\nunpeoples\nunpeopling\nunperson\nunpersons\nunpick\nunpicked\nunpicking\nunpicks\nunpier\nunpiest\nunpile\nunpiled\nunpiles\nunpiling\nunpin\nunpinned\nunpinning\nunpins\nunpitied\nunplaced\nunplait\nunplaited\nunplaiting\nunplaits\nunplayed\nunpleasant\nunpleasantly\nunpleasantness\nunpliant\nunplowed\nunplug\nunplugged\nunplugging\nunplugs\nunpoetic\nunpoised\nunpolite\nunpolled\nunpopular\nunpopularity\nunposed\nunposted\nunprecedented\nunpredictable\nunprejudiced\nunprepared\nunpreparedness\nunpretty\nunpriced\nunprimed\nunprincipled\nunprincipledness\nunprintable\nunprized\nunprobed\nunprocessed\nunproductive\nunprofessional\nunprofitable\nunprofitably\nunprosperous\nunprotected\nunprovable\nunproved\nunproven\nunpruned\nunpublished\nunpucker\nunpuckered\nunpuckering\nunpuckers\nunpunished\nunpure\nunpurged\nunpuzzle\nunpuzzled\nunpuzzles\nunpuzzling\nunqualifiable\nunqualified\nunqualifiedly\nunquestionable\nunquestionably\nunquestioned\nunquestioning\nunquestioningly\nunquiet\nunquieter\nunquietest\nunquietly\nunquietness\nunquiets\nunquote\nunquoted\nunquotes\nunquoting\nunraised\nunraked\nunranked\nunrated\nunravel\nunraveled\nunraveling\nunravelled\nunravelling\nunravels\nunrazed\nunreachable\nunread\nunreadable\nunreadier\nunreadiest\nunready\nunreal\nunrealistic\nunrealistically\nunrealities\nunreality\nunrealizable\nunrealized\nunreally\nunreason\nunreasonable\nunreasonableness\nunreasonably\nunreasoned\nunreasoning\nunreasoningly\nunreasons\nunreceptive\nunrecognizable\nunrecognizably\nunrecognized\nunrecoverable\nunreel\nunreeled\nunreeler\nunreelers\nunreeling\nunreels\nunreeve\nunreeved\nunreeves\nunreeving\nunregenerate\nunregenerately\nunregulated\nunrelated\nunrelenting\nunrelentingly\nunreliable\nunremitting\nunremittingly\nunrent\nunrented\nunrepaid\nunrepair\nunrepairs\nunreported\nunreserved\nunreservedly\nunresolved\nunresponsive\nunresponsively\nunresponsiveness\nunrest\nunrested\nunrestricted\nunrests\nunrhymed\nunriddle\nunriddled\nunriddles\nunriddling\nunrifled\nunrig\nunrigged\nunrigging\nunrigs\nunrimed\nunrinsed\nunrip\nunripe\nunripely\nunriper\nunripest\nunripped\nunripping\nunrips\nunrisen\nunrivaled\nunrivalled\nunrobe\nunrobed\nunrobes\nunrobing\nunroll\nunrolled\nunrolling\nunrolls\nunroof\nunroofed\nunroofing\nunroofs\nunroot\nunrooted\nunrooting\nunroots\nunrough\nunround\nunrounded\nunrounding\nunrounds\nunrove\nunroven\nunruffled\nunruled\nunrulier\nunruliest\nunruliness\nunruly\nunrushed\nuns\nunsaddle\nunsaddled\nunsaddles\nunsaddling\nunsafe\nunsafely\nunsafeties\nunsafety\nunsaid\nunsalted\nunsated\nunsatisfactorily\nunsatisfactory\nunsatisfied\nunsaturated\nunsaved\nunsavory\nunsawed\nunsawn\nunsay\nunsaying\nunsays\nunscaled\nunscathed\nunschooled\nunscientific\nunscientifically\nunscramble\nunscrambled\nunscrambles\nunscrambling\nunscrew\nunscrewed\nunscrewing\nunscrews\nunscrupulous\nunscrupulously\nunscrupulousness\nunseal\nunsealed\nunsealing\nunseals\nunseam\nunseamed\nunseaming\nunseams\nunseared\nunseasonable\nunseasonableness\nunseasonably\nunseasoned\nunseat\nunseated\nunseating\nunseats\nunsecured\nunseeded\nunseeing\nunseemlier\nunseemliest\nunseemliness\nunseemly\nunseen\nunseized\nunselfish\nunselfishly\nunselfishness\nunsent\nunserved\nunset\nunsets\nunsetting\nunsettle\nunsettled\nunsettledness\nunsettlement\nunsettlements\nunsettles\nunsettling\nunsew\nunsewed\nunsewing\nunsewn\nunsews\nunsex\nunsexed\nunsexes\nunsexing\nunsexual\nunshaded\nunshaken\nunshamed\nunshaped\nunshapen\nunshared\nunsharp\nunshaved\nunshaven\nunsheathe\nunsheathed\nunsheathes\nunsheathing\nunshed\nunshell\nunshelled\nunshelling\nunshells\nunshift\nunshifted\nunshifting\nunshifts\nunship\nunshipped\nunshipping\nunships\nunshod\nunshorn\nunshrunk\nunshut\nunsicker\nunsifted\nunsight\nunsighted\nunsighting\nunsightliness\nunsightly\nunsights\nunsigned\nunsilent\nunsinful\nunsized\nunskilled\nunskillful\nunskillfully\nunskillfulness\nunslaked\nunsling\nunslinging\nunslings\nunslung\nunsmoked\nunsnap\nunsnapped\nunsnapping\nunsnaps\nunsnarl\nunsnarled\nunsnarling\nunsnarls\nunsoaked\nunsober\nunsociability\nunsociable\nunsocial\nunsocially\nunsoiled\nunsold\nunsolder\nunsoldered\nunsoldering\nunsolders\nunsolid\nunsolvable\nunsolved\nunsoncy\nunsonsie\nunsonsy\nunsophisticated\nunsophistication\nunsophistications\nunsorted\nunsought\nunsound\nunsounder\nunsoundest\nunsoundly\nunsoundness\nunsoured\nunsowed\nunsown\nunsparing\nunsparingly\nunspeak\nunspeakable\nunspeakably\nunspeaking\nunspeaks\nunspecific\nunspecified\nunspent\nunsphere\nunsphered\nunspheres\nunsphering\nunspilt\nunsplit\nunspoilt\nunspoke\nunspoken\nunsprung\nunspun\nunstable\nunstableness\nunstabler\nunstablest\nunstably\nunstack\nunstacked\nunstacking\nunstacks\nunstate\nunstated\nunstates\nunstating\nunsteadied\nunsteadier\nunsteadies\nunsteadiest\nunsteadily\nunsteadiness\nunsteady\nunsteadying\nunsteel\nunsteeled\nunsteeling\nunsteels\nunstep\nunstepped\nunstepping\nunsteps\nunstick\nunsticked\nunsticking\nunsticks\nunstop\nunstopped\nunstopping\nunstops\nunstrap\nunstrapped\nunstrapping\nunstraps\nunstress\nunstresses\nunstring\nunstringing\nunstrings\nunstructured\nunstrung\nunstuck\nunstung\nunsubtle\nunsuccessful\nunsuccessfully\nunsuitability\nunsuitable\nunsuitably\nunsuited\nunsung\nunsunk\nunsupportable\nunsupported\nunsure\nunsurely\nunsuspected\nunsuspecting\nunswathe\nunswathed\nunswathes\nunswathing\nunswayed\nunswear\nunswearing\nunswears\nunswept\nunswore\nunsworn\nuntack\nuntacked\nuntacking\nuntacks\nuntagged\nuntaken\nuntame\nuntamed\nuntangle\nuntangled\nuntangles\nuntangling\nuntanned\nuntapped\nuntasted\nuntaught\nuntaxed\nunteach\nunteaches\nunteaching\nuntenability\nuntenable\nuntenanted\nuntended\nuntested\nuntether\nuntethered\nuntethering\nuntethers\nunthawed\nunthink\nunthinkability\nunthinkable\nunthinkably\nunthinking\nunthinkingly\nunthinks\nunthought\nunthread\nunthreaded\nunthreading\nunthreads\nunthrone\nunthroned\nunthrones\nunthroning\nuntidied\nuntidier\nuntidies\nuntidiest\nuntidily\nuntidy\nuntidying\nuntie\nuntied\nunties\nuntil\nuntilled\nuntilted\nuntimelier\nuntimeliest\nuntimeliness\nuntimely\nuntinged\nuntired\nuntiring\nuntitled\nunto\nuntold\nuntouchability\nuntouchable\nuntouchables\nuntouched\nuntoward\nuntowardly\nuntowardness\nuntraced\nuntrained\nuntrammeled\nuntread\nuntreading\nuntreads\nuntried\nuntrim\nuntrimmed\nuntrimming\nuntrims\nuntrod\nuntrodden\nuntrue\nuntruer\nuntruest\nuntruly\nuntruss\nuntrussed\nuntrusses\nuntrussing\nuntrusty\nuntruth\nuntruthful\nuntruthfully\nuntruthfulness\nuntruths\nuntuck\nuntucked\nuntucking\nuntucks\nuntufted\nuntune\nuntuned\nuntunes\nuntuning\nunturned\nuntwine\nuntwined\nuntwines\nuntwining\nuntwist\nuntwisted\nuntwisting\nuntwists\nuntying\nununited\nunurged\nunusable\nunused\nunusual\nunusually\nunusualness\nunvalued\nunvaried\nunveil\nunveiled\nunveiling\nunveils\nunveined\nunversed\nunvexed\nunvext\nunviable\nunvocal\nunvoice\nunvoiced\nunvoices\nunvoicing\nunwalled\nunwanted\nunwarier\nunwariest\nunwarily\nunwariness\nunwarmed\nunwarned\nunwarped\nunwarranted\nunwary\nunwashed\nunwasheds\nunwasted\nunwaxed\nunweaned\nunweary\nunweave\nunweaves\nunweaving\nunwed\nunwedded\nunweeded\nunweight\nunweighted\nunweighting\nunweights\nunwelcome\nunwelded\nunwell\nunwept\nunwetted\nunwholesome\nunwholesomely\nunwieldier\nunwieldiest\nunwieldy\nunwifely\nunwilled\nunwilling\nunwillingly\nunwillingness\nunwind\nunwinder\nunwinders\nunwinding\nunwinds\nunwisdom\nunwisdoms\nunwise\nunwisely\nunwiser\nunwisest\nunwish\nunwished\nunwishes\nunwishing\nunwit\nunwits\nunwitted\nunwitting\nunwittingly\nunwon\nunwonted\nunwontedly\nunwontedness\nunwooded\nunwooed\nunworkable\nunworked\nunworn\nunworthier\nunworthies\nunworthiest\nunworthily\nunworthiness\nunworthy\nunwound\nunwove\nunwoven\nunwrap\nunwrapped\nunwrapping\nunwraps\nunwritten\nunwrung\nunyeaned\nunyoke\nunyoked\nunyokes\nunyoking\nunzip\nunzipped\nunzipping\nunzips\nunzoned\nup\nupas\nupases\nupbear\nupbearer\nupbearers\nupbearing\nupbears\nupbeat\nupbeats\nupbind\nupbinding\nupbinds\nupboil\nupboiled\nupboiling\nupboils\nupbore\nupborne\nupbound\nupbow\nupbraid\nupbraided\nupbraiding\nupbraids\nupbringing\nupbringings\nupbuild\nupbuilding\nupbuilds\nupbuilt\nupby\nupbye\nupcast\nupcasting\nupcasts\nupchuck\nupchucked\nupchucking\nupchucks\nupclimb\nupclimbed\nupclimbing\nupclimbs\nupcoil\nupcoiled\nupcoiling\nupcoils\nupcoming\nupcurl\nupcurled\nupcurling\nupcurls\nupcurve\nupcurved\nupcurves\nupcurving\nupdart\nupdarted\nupdarting\nupdarts\nupdate\nupdated\nupdater\nupdaters\nupdates\nupdating\nupdive\nupdived\nupdives\nupdiving\nupdo\nupdos\nupdove\nupdraft\nupdrafts\nupdried\nupdries\nupdry\nupdrying\nupend\nupended\nupending\nupends\nupfield\nupfling\nupflinging\nupflings\nupflow\nupflowed\nupflowing\nupflows\nupflung\nupfold\nupfolded\nupfolding\nupfolds\nupgather\nupgathered\nupgathering\nupgathers\nupgaze\nupgazed\nupgazes\nupgazing\nupgird\nupgirded\nupgirding\nupgirds\nupgirt\nupgoing\nupgrade\nupgraded\nupgrades\nupgrading\nupgrew\nupgrow\nupgrowing\nupgrown\nupgrows\nupgrowth\nupgrowths\nupheap\nupheaped\nupheaping\nupheaps\nupheaval\nupheavals\nupheave\nupheaved\nupheaver\nupheavers\nupheaves\nupheaving\nupheld\nuphill\nuphills\nuphoard\nuphoarded\nuphoarding\nuphoards\nuphold\nupholder\nupholders\nupholding\nupholds\nupholster\nupholstered\nupholsterer\nupholsterers\nupholsteries\nupholstering\nupholsters\nupholstery\nuphove\nuphroe\nuphroes\nupkeep\nupkeeps\nupland\nuplander\nuplanders\nuplands\nupleap\nupleaped\nupleaping\nupleaps\nupleapt\nuplift\nuplifted\nuplifter\nuplifters\nuplifting\nuplifts\nuplight\nuplighted\nuplighting\nuplights\nuplit\nupmost\nupo\nupon\nupped\nupper\nuppercase\nupperclassman\nupperclassmen\nuppercut\nuppercuts\nuppercutted\nuppercutting\nuppermost\nuppers\nuppile\nuppiled\nuppiles\nuppiling\nupping\nuppings\nuppish\nuppishly\nuppity\nupprop\nuppropped\nuppropping\nupprops\nupraise\nupraised\nupraiser\nupraisers\nupraises\nupraising\nupreach\nupreached\nupreaches\nupreaching\nuprear\nupreared\nuprearing\nuprears\nupright\nuprighted\nuprighting\nuprightly\nuprightness\nuprights\nuprise\nuprisen\nupriser\nuprisers\nuprises\nuprising\nuprisings\nupriver\nuprivers\nuproar\nuproarious\nuproariously\nuproariousness\nuproars\nuproot\nuprootal\nuprootals\nuprooted\nuprootedness\nuprooter\nuprooters\nuprooting\nuproots\nuprose\nuprouse\nuproused\nuprouses\nuprousing\nuprush\nuprushed\nuprushes\nuprushing\nups\nupsend\nupsending\nupsends\nupsent\nupset\nupsets\nupsetter\nupsetters\nupsetting\nupshift\nupshifted\nupshifting\nupshifts\nupshoot\nupshooting\nupshoots\nupshot\nupshots\nupside\nupsides\nupsilon\nupsilons\nupsoar\nupsoared\nupsoaring\nupsoars\nupsprang\nupspring\nupspringing\nupsprings\nupsprung\nupstage\nupstaged\nupstages\nupstaging\nupstair\nupstairs\nupstand\nupstanding\nupstandingness\nupstands\nupstare\nupstared\nupstares\nupstaring\nupstart\nupstarted\nupstarting\nupstarts\nupstate\nupstater\nupstaters\nupstates\nupstep\nupstepped\nupstepping\nupsteps\nupstir\nupstirred\nupstirring\nupstirs\nupstood\nupstream\nupstroke\nupstrokes\nupsurge\nupsurged\nupsurges\nupsurging\nupsweep\nupsweeping\nupsweeps\nupswell\nupswelled\nupswelling\nupswells\nupswept\nupswing\nupswinging\nupswings\nupswollen\nupswung\nuptake\nuptakes\nuptear\nuptearing\nuptears\nupthrew\nupthrow\nupthrowing\nupthrown\nupthrows\nupthrust\nupthrusted\nupthrusting\nupthrusts\nuptight\nuptilt\nuptilted\nuptilting\nuptilts\nuptime\nuptimes\nuptore\nuptorn\nuptoss\nuptossed\nuptosses\nuptossing\nuptown\nuptowner\nuptowners\nuptowns\nuptrend\nuptrends\nupturn\nupturned\nupturning\nupturns\nupwaft\nupwafted\nupwafting\nupwafts\nupward\nupwardly\nupwardness\nupwards\nupwell\nupwelled\nupwelling\nupwells\nupwind\nupwinds\nuracil\nuracils\nuraei\nuraemia\nuraemias\nuraemic\nuraeus\nuraeuses\nuralite\nuralites\nuralitic\nuranic\nuranide\nuranides\nuranism\nuranisms\nuranite\nuranites\nuranitic\nuranium\nuraniums\nuranous\nuranyl\nuranylic\nuranyls\nurare\nurares\nurari\nuraris\nurase\nurases\nurate\nurates\nuratic\nurb\nurban\nurbane\nurbanely\nurbaner\nurbanest\nurbanise\nurbanised\nurbanises\nurbanising\nurbanism\nurbanisms\nurbanist\nurbanists\nurbanite\nurbanites\nurbanities\nurbanity\nurbanization\nurbanize\nurbanized\nurbanizes\nurbanizing\nurbanologist\nurbanologists\nurbanology\nurbia\nurbs\nurchin\nurchins\nurd\nurds\nurea\nureal\nureas\nurease\nureases\nuredia\nuredial\nuredinia\nuredium\nuredo\nuredos\nureic\nureide\nureides\nuremia\nuremias\nuremic\nureter\nureteral\nureteric\nureters\nurethan\nurethane\nurethanes\nurethans\nurethra\nurethrae\nurethral\nurethras\nuretic\nurge\nurged\nurgencies\nurgency\nurgent\nurgently\nurger\nurgers\nurges\nurging\nurgingly\nurial\nuric\nuridine\nuridines\nurinal\nurinals\nurinaries\nurinary\nurinate\nurinated\nurinates\nurinating\nurination\nurinations\nurine\nurinemia\nurinemias\nurinemic\nurines\nurinose\nurinous\nurn\nurnlike\nurns\nurochord\nurochords\nurodele\nurodeles\nurolith\nuroliths\nurologic\nurologies\nurologist\nurologists\nurology\nuropod\nuropodal\nuropods\nuroscopies\nuroscopy\nurostyle\nurostyles\nursa\nursae\nursiform\nursine\nurticant\nurticants\nurticate\nurticated\nurticates\nurticating\nurus\nuruses\nurushiol\nurushiols\nus\nusabilities\nusability\nusable\nusableness\nusably\nusage\nusages\nusance\nusances\nusaunce\nusaunces\nuse\nuseable\nuseably\nused\nuseful\nusefully\nusefulness\nuseless\nuselessly\nuselessness\nuser\nusers\nuses\nusher\nushered\nusherette\nusherettes\nushering\nushers\nusing\nusnea\nusneas\nusquabae\nusquabaes\nusque\nusquebae\nusquebaes\nusques\nustulate\nusual\nusually\nusualness\nusuals\nusufruct\nusufructs\nusufructuaries\nusufructuary\nusurer\nusurers\nusuries\nusurious\nusuriously\nusuriousness\nusurp\nusurpation\nusurpations\nusurped\nusurper\nusurpers\nusurping\nusurps\nusury\nut\nuta\nutas\nutensil\nutensils\nuteri\nuterine\nuterus\nuteruses\nuties\nutile\nutilidor\nutilidors\nutilise\nutilised\nutiliser\nutilisers\nutilises\nutilising\nutilitarian\nutilitarianism\nutilitarians\nutilities\nutility\nutilizable\nutilization\nutilizations\nutilize\nutilized\nutilizer\nutilizers\nutilizes\nutilizing\nutmost\nutmosts\nutopia\nutopian\nutopians\nutopias\nutopism\nutopisms\nutopist\nutopists\nutricle\nutricles\nutriculi\nuts\nutter\nutterable\nutterance\nutterances\nuttered\nutterer\nutterers\nuttering\nutterly\nuttermost\nutters\nuvea\nuveal\nuveas\nuveitic\nuveitis\nuveitises\nuveous\nuvula\nuvulae\nuvular\nuvularly\nuvulars\nuvulas\nuvulitis\nuvulitises\nuxorial\nuxoricide\nuxoricides\nuxorious\nuxoriously\nuxoriousness\nvac\nvacancies\nvacancy\nvacant\nvacantly\nvacantness\nvacate\nvacated\nvacates\nvacating\nvacation\nvacationed\nvacationer\nvacationers\nvacationing\nvacationist\nvacationists\nvacations\nvaccina\nvaccinal\nvaccinas\nvaccinate\nvaccinated\nvaccinates\nvaccinating\nvaccination\nvaccinations\nvaccinator\nvaccinators\nvaccine\nvaccines\nvaccinia\nvaccinias\nvacillate\nvacillated\nvacillates\nvacillating\nvacillatingly\nvacillation\nvacillations\nvacillator\nvacillators\nvacs\nvacua\nvacuities\nvacuity\nvacuolar\nvacuole\nvacuoles\nvacuous\nvacuously\nvacuousness\nvacuum\nvacuumed\nvacuuming\nvacuums\nvadose\nvagabond\nvagabonded\nvagabonding\nvagabondish\nvagabondism\nvagabonds\nvagal\nvagally\nvagaries\nvagarious\nvagariously\nvagary\nvagi\nvagile\nvagilities\nvagility\nvagina\nvaginae\nvaginal\nvaginas\nvaginate\nvagotomies\nvagotomy\nvagrancies\nvagrancy\nvagrant\nvagrantly\nvagrants\nvagrom\nvague\nvaguely\nvagueness\nvaguer\nvaguest\nvagus\nvahine\nvahines\nvail\nvailed\nvailing\nvails\nvain\nvainer\nvainest\nvainglories\nvainglorious\nvaingloriously\nvaingloriousness\nvainglory\nvainly\nvainness\nvainnesses\nvair\nvairs\nvakeel\nvakeels\nvakil\nvakils\nvalance\nvalanced\nvalances\nvalancing\nvale\nvalediction\nvaledictions\nvaledictorian\nvaledictorians\nvaledictories\nvaledictory\nvalence\nvalences\nvalencia\nvalencias\nvalencies\nvalency\nvalentine\nvalentines\nvalerate\nvalerates\nvalerian\nvalerians\nvaleric\nvales\nvalet\nvaleted\nvaleting\nvalets\nvaletudinarian\nvaletudinarianism\nvaletudinarians\nvaletudinaries\nvaletudinary\nvalgoid\nvalgus\nvalguses\nvaliance\nvaliances\nvaliancies\nvaliancy\nvaliant\nvaliantly\nvaliants\nvalid\nvalidate\nvalidated\nvalidates\nvalidating\nvalidation\nvalidations\nvalidities\nvalidity\nvalidly\nvaline\nvalines\nvalise\nvalises\nvalkyr\nvalkyrie\nvalkyries\nvalkyrs\nvallate\nvalley\nvalleys\nvalonia\nvalonias\nvalor\nvalorise\nvalorised\nvalorises\nvalorising\nvalorization\nvalorizations\nvalorize\nvalorized\nvalorizes\nvalorizing\nvalorous\nvalorously\nvalors\nvalour\nvalours\nvalse\nvalses\nvaluable\nvaluableness\nvaluables\nvaluably\nvaluate\nvaluated\nvaluates\nvaluating\nvaluation\nvaluational\nvaluationally\nvaluations\nvaluator\nvaluators\nvalue\nvalued\nvalueless\nvaluelessness\nvaluer\nvaluers\nvalues\nvaluing\nvaluta\nvalutas\nvalval\nvalvar\nvalvate\nvalve\nvalved\nvalveless\nvalvelet\nvalvelets\nvalves\nvalving\nvalvula\nvalvulae\nvalvular\nvalvule\nvalvules\nvambrace\nvambraces\nvamoose\nvamoosed\nvamooses\nvamoosing\nvamose\nvamosed\nvamoses\nvamosing\nvamp\nvamped\nvamper\nvampers\nvamping\nvampire\nvampires\nvampiric\nvampish\nvamps\nvan\nvanadate\nvanadates\nvanadic\nvanadium\nvanadiums\nvanadous\nvanda\nvandal\nvandalic\nvandalism\nvandalize\nvandalized\nvandalizes\nvandalizing\nvandals\nvandas\nvandyke\nvandyked\nvandykes\nvane\nvaned\nvanes\nvang\nvangs\nvanguard\nvanguards\nvanilla\nvanillas\nvanillic\nvanillin\nvanillins\nvanish\nvanished\nvanisher\nvanishers\nvanishes\nvanishing\nvanishingly\nvanitied\nvanities\nvanity\nvanman\nvanmen\nvanquish\nvanquishable\nvanquished\nvanquisher\nvanquishers\nvanquishes\nvanquishing\nvans\nvantage\nvantages\nvanward\nvapid\nvapidities\nvapidity\nvapidly\nvapidness\nvapor\nvapored\nvaporer\nvaporers\nvaporing\nvaporings\nvaporise\nvaporised\nvaporises\nvaporish\nvaporishness\nvaporising\nvaporization\nvaporizations\nvaporize\nvaporized\nvaporizer\nvaporizers\nvaporizes\nvaporizing\nvaporous\nvaporously\nvaporousness\nvapors\nvapory\nvapour\nvapoured\nvapourer\nvapourers\nvapouring\nvapours\nvapoury\nvaquero\nvaqueros\nvar\nvara\nvaras\nvaria\nvariabilities\nvariability\nvariable\nvariableness\nvariables\nvariably\nvariance\nvariances\nvariant\nvariants\nvariate\nvariated\nvariates\nvariating\nvariation\nvariational\nvariationally\nvariations\nvarices\nvaricose\nvaricosities\nvaricosity\nvaried\nvariedly\nvariegate\nvariegated\nvariegates\nvariegating\nvariegation\nvariegations\nvarier\nvariers\nvaries\nvarietal\nvarieties\nvariety\nvariform\nvariola\nvariolar\nvariolas\nvariole\nvarioles\nvariorum\nvariorums\nvarious\nvariously\nvaristor\nvaristors\nvarix\nvarlet\nvarletries\nvarletry\nvarlets\nvarment\nvarments\nvarmint\nvarmints\nvarna\nvarnas\nvarnish\nvarnished\nvarnishes\nvarnishing\nvarnishy\nvars\nvarsities\nvarsity\nvarus\nvaruses\nvarve\nvarved\nvarves\nvary\nvarying\nvaryingly\nvas\nvasa\nvasal\nvascula\nvascular\nvascularities\nvascularity\nvasculum\nvasculums\nvase\nvasectomies\nvasectomy\nvaselike\nvases\nvasiform\nvassal\nvassalage\nvassals\nvast\nvaster\nvastest\nvastier\nvasties\nvastiest\nvastities\nvastity\nvastly\nvastness\nvastnesses\nvasts\nvasty\nvat\nvatful\nvatfuls\nvatic\nvatical\nvaticide\nvaticides\nvaticinate\nvaticinated\nvaticinates\nvaticinating\nvaticinator\nvaticinators\nvats\nvatted\nvatting\nvatu\nvatus\nvau\nvaudeville\nvaudevillian\nvaudevillians\nvault\nvaulted\nvaulter\nvaulters\nvaultier\nvaultiest\nvaulting\nvaultings\nvaults\nvaulty\nvaunt\nvaunted\nvaunter\nvaunters\nvauntful\nvauntie\nvaunting\nvauntingly\nvaunts\nvaunty\nvaus\nvav\nvavasor\nvavasors\nvavasour\nvavasours\nvavassor\nvavassors\nvavs\nvaw\nvaward\nvawards\nvawntie\nvaws\nveal\nvealed\nvealer\nvealers\nvealier\nvealiest\nvealing\nveals\nvealy\nvector\nvectored\nvectorial\nvectoring\nvectors\nvedalia\nvedalias\nvedette\nvedettes\nvee\nveena\nveenas\nveep\nveepee\nveepees\nveeps\nveer\nveered\nveeries\nveering\nveeringly\nveers\nveery\nvees\nveg\nvegan\nveganism\nveganisms\nvegans\nvegetable\nvegetables\nvegetably\nvegetal\nvegetant\nvegetarian\nvegetarianism\nvegetarians\nvegetate\nvegetated\nvegetates\nvegetating\nvegetation\nvegetational\nvegetations\nvegetative\nvegetatively\nvegetativeness\nvegete\nvegetist\nvegetists\nvegetive\nvegie\nvehemence\nvehement\nvehemently\nvehicle\nvehicles\nvehicular\nveil\nveiled\nveiledly\nveiler\nveilers\nveiling\nveilings\nveillike\nveils\nvein\nveinal\nveined\nveiner\nveiners\nveinier\nveiniest\nveining\nveinings\nveinless\nveinlet\nveinlets\nveinlike\nveins\nveinule\nveinules\nveinulet\nveinulets\nveiny\nvela\nvelamen\nvelamina\nvelar\nvelaria\nvelarium\nvelarize\nvelarized\nvelarizes\nvelarizing\nvelars\nvelate\nveld\nvelds\nveldt\nveldts\nveliger\nveligers\nvelites\nvelleities\nvelleity\nvellum\nvellums\nveloce\nvelocipede\nvelocipedes\nvelocities\nvelocity\nvelour\nvelours\nveloute\nveloutes\nvelum\nvelure\nvelured\nvelures\nveluring\nvelveret\nvelverets\nvelvet\nvelveted\nvelveteen\nvelveteens\nvelvets\nvelvety\nvena\nvenae\nvenal\nvenalities\nvenality\nvenally\nvenatic\nvenation\nvenations\nvend\nvendable\nvendace\nvendaces\nvended\nvendee\nvendees\nvender\nvenders\nvendetta\nvendettas\nvendibilities\nvendibility\nvendible\nvendibles\nvendibly\nvending\nvendor\nvendors\nvends\nvendue\nvendues\nveneer\nveneered\nveneerer\nveneerers\nveneering\nveneers\nvenenate\nvenenated\nvenenates\nvenenating\nvenenose\nvenerabilities\nvenerability\nvenerable\nvenerableness\nvenerably\nvenerate\nvenerated\nvenerates\nvenerating\nveneration\nvenerations\nvenerator\nvenerators\nvenereal\nveneries\nvenery\nvenetian\nvenetians\nvenge\nvengeance\nvenged\nvengeful\nvengefully\nvengefulness\nvenges\nvenging\nvenial\nvenially\nvenialness\nvenin\nvenine\nvenines\nvenins\nvenire\nvenires\nvenison\nvenisons\nvenom\nvenomed\nvenomer\nvenomers\nvenoming\nvenomous\nvenomously\nvenomousness\nvenoms\nvenose\nvenosities\nvenosity\nvenous\nvenously\nvent\nventage\nventages\nventail\nventails\nvented\nventer\nventers\nventilate\nventilated\nventilates\nventilating\nventilation\nventilations\nventilator\nventilators\nventilatory\nventing\nventless\nventral\nventrally\nventrals\nventricle\nventricles\nventriloquial\nventriloquially\nventriloquism\nventriloquist\nventriloquistic\nventriloquists\nventriloquize\nventriloquized\nventriloquizes\nventriloquizing\nventriloquy\nvents\nventure\nventured\nventurer\nventurers\nventures\nventuresome\nventuresomely\nventuresomeness\nventuri\nventuring\nventuris\nventurous\nventurously\nventurousness\nvenue\nvenues\nvenular\nvenule\nvenules\nvenulose\nvenulous\nvera\nveracious\nveraciously\nveraciousness\nveracities\nveracity\nveranda\nverandaed\nverandah\nverandahs\nverandas\nveratria\nveratrias\nveratrin\nveratrins\nveratrum\nveratrums\nverb\nverbal\nverbalism\nverbalist\nverbalistic\nverbalists\nverbalization\nverbalizations\nverbalize\nverbalized\nverbalizer\nverbalizers\nverbalizes\nverbalizing\nverbally\nverbals\nverbatim\nverbena\nverbenas\nverbiage\nverbiages\nverbid\nverbids\nverbified\nverbifies\nverbify\nverbifying\nverbile\nverbiles\nverbless\nverbose\nverbosely\nverboseness\nverbosities\nverbosity\nverboten\nverbs\nverdancies\nverdancy\nverdant\nverdantly\nverderer\nverderers\nverderor\nverderors\nverdict\nverdicts\nverdigris\nverdin\nverdins\nverditer\nverditers\nverdure\nverdured\nverdures\nverdurous\nverecund\nverge\nverged\nvergence\nvergences\nverger\nvergers\nverges\nverging\nverglas\nverglases\nveridic\nverier\nveriest\nverifiabilities\nverifiability\nverifiable\nverification\nverifications\nverified\nverifier\nverifiers\nverifies\nverify\nverifying\nverily\nverisimilitude\nverisimilitudes\nverism\nverismo\nverismos\nverisms\nverist\nveristic\nverists\nveritable\nveritableness\nveritably\nveritas\nveritates\nverities\nverity\nverjuice\nverjuices\nvermeil\nvermeils\nvermes\nvermian\nvermicide\nvermicides\nvermicular\nvermiculite\nvermiculites\nvermilion\nvermilions\nvermin\nverminous\nvermis\nvermoulu\nvermouth\nvermouths\nvermuth\nvermuths\nvernacle\nvernacles\nvernacular\nvernacularly\nvernaculars\nvernal\nvernalization\nvernalizations\nvernalize\nvernalized\nvernalizes\nvernalizing\nvernally\nvernicle\nvernicles\nvernier\nverniers\nvernix\nvernixes\nveronica\nveronicas\nverruca\nverrucae\nversal\nversant\nversants\nversatile\nversatilely\nversatilities\nversatility\nverse\nversed\nverseman\nversemen\nverser\nversers\nverses\nverset\nversets\nversicle\nversicles\nversification\nversifications\nversified\nversifier\nversifiers\nversifies\nversify\nversifying\nversine\nversines\nversing\nversion\nversional\nversions\nverso\nversos\nverst\nverste\nverstes\nversts\nversus\nvert\nvertebra\nvertebrae\nvertebral\nvertebras\nvertebrate\nvertebrates\nvertex\nvertexes\nvertical\nverticalities\nverticality\nvertically\nverticalness\nverticals\nvertices\nverticil\nverticils\nvertigines\nvertiginous\nvertiginously\nvertigo\nvertigoes\nvertigos\nverts\nvertu\nvertus\nvervain\nvervains\nverve\nverves\nvervet\nvervets\nvery\nvesica\nvesicae\nvesical\nvesicant\nvesicants\nvesicate\nvesicated\nvesicates\nvesicating\nvesication\nvesications\nvesicle\nvesicles\nvesicula\nvesiculae\nvesicular\nvesiculate\nvesiculated\nvesiculates\nvesiculating\nvesper\nvesperal\nvesperals\nvespers\nvespertine\nvespiaries\nvespiary\nvespid\nvespids\nvespine\nvessel\nvesseled\nvessels\nvest\nvesta\nvestal\nvestally\nvestals\nvestas\nvested\nvestee\nvestees\nvestiaries\nvestiary\nvestibule\nvestibuled\nvestibules\nvestige\nvestiges\nvestigia\nvestigial\nvestigially\nvesting\nvestings\nvestless\nvestlike\nvestment\nvestments\nvestral\nvestries\nvestry\nvests\nvestural\nvesture\nvestured\nvestures\nvesturing\nvesuvian\nvesuvians\nvet\nvetch\nvetches\nveteran\nveterans\nveterinarian\nveterinarians\nveterinaries\nveterinary\nvetiver\nvetivers\nveto\nvetoed\nvetoer\nvetoers\nvetoes\nvetoing\nvets\nvetted\nvetting\nvex\nvexation\nvexations\nvexatious\nvexatiously\nvexatiousness\nvexed\nvexedly\nvexer\nvexers\nvexes\nvexil\nvexilla\nvexillar\nvexillum\nvexils\nvexing\nvexingly\nvext\nvia\nviabilities\nviability\nviable\nviably\nviaduct\nviaducts\nvial\nvialed\nvialing\nvialled\nvialling\nvials\nviand\nviands\nviatic\nviatica\nviatical\nviaticum\nviaticums\nviator\nviatores\nviators\nvibe\nvibes\nvibist\nvibists\nvibrance\nvibrances\nvibrancies\nvibrancy\nvibrant\nvibrantly\nvibrants\nvibraphone\nvibraphones\nvibraphonist\nvibraphonists\nvibrate\nvibrated\nvibrates\nvibratile\nvibrating\nvibration\nvibrational\nvibrations\nvibrato\nvibrator\nvibrators\nvibratory\nvibratos\nvibrio\nvibrioid\nvibrion\nvibrions\nvibrios\nvibrissa\nvibrissae\nviburnum\nviburnums\nvicar\nvicarage\nvicarages\nvicarate\nvicarates\nvicarial\nvicariate\nvicariates\nvicarious\nvicariously\nvicariousness\nvicarly\nvicars\nvice\nviced\nviceless\nvicenary\nviceregal\nviceroy\nviceroys\nvices\nvichies\nvichy\nvicinage\nvicinages\nvicinal\nvicing\nvicinities\nvicinity\nvicious\nviciously\nviciousness\nvicissitude\nvicissitudes\nvicomte\nvicomtes\nvictim\nvictimization\nvictimizations\nvictimize\nvictimized\nvictimizer\nvictimizers\nvictimizes\nvictimizing\nvictimless\nvictims\nvictor\nvictoria\nvictorias\nvictories\nvictorious\nvictoriously\nvictors\nvictory\nvictress\nvictresses\nvictual\nvictualed\nvictualer\nvictualers\nvictualing\nvictualled\nvictualler\nvictuallers\nvictualling\nvictuals\nvicugna\nvicugnas\nvicuna\nvicunas\nvide\nvideo\nvideocassette\nvideocassettes\nvideodisc\nvideodiscs\nvideodisk\nvideodisks\nvideos\nvideotape\nvideotaped\nvideotapes\nvideotaping\nvideotext\nvidette\nvidettes\nvidicon\nvidicons\nviduities\nviduity\nvie\nvied\nvier\nviers\nvies\nview\nviewable\nviewed\nviewer\nviewers\nviewier\nviewiest\nviewing\nviewings\nviewless\nviewlessly\nviewpoint\nviewpoints\nviews\nviewy\nvig\nviga\nvigas\nvigil\nvigilance\nvigilant\nvigilante\nvigilantes\nvigilantism\nvigilantly\nvigils\nvignette\nvignetted\nvignettes\nvignetting\nvignettist\nvignettists\nvigor\nvigorish\nvigorishes\nvigoroso\nvigorous\nvigorously\nvigorousness\nvigors\nvigour\nvigours\nvigs\nviking\nvikings\nvilayet\nvilayets\nvile\nvilely\nvileness\nvilenesses\nviler\nvilest\nvilification\nvilifications\nvilified\nvilifier\nvilifiers\nvilifies\nvilify\nvilifying\nvilipend\nvilipended\nvilipending\nvilipends\nvill\nvilla\nvilladom\nvilladoms\nvillae\nvillage\nvillager\nvillagers\nvillages\nvillain\nvillainess\nvillainesses\nvillainies\nvillainous\nvillainously\nvillainousness\nvillains\nvillainy\nvillas\nvillatic\nvillein\nvilleins\nvilli\nvillose\nvillous\nvills\nvillus\nvim\nvimen\nvimina\nviminal\nvims\nvin\nvina\nvinal\nvinals\nvinas\nvinasse\nvinasses\nvinca\nvincas\nvincible\nvincula\nvinculum\nvinculums\nvindicate\nvindicated\nvindicates\nvindicating\nvindication\nvindications\nvindicative\nvindicator\nvindicators\nvindicatory\nvindictive\nvindictively\nvindictiveness\nvine\nvineal\nvined\nvinegar\nvinegars\nvinegary\nvineries\nvinery\nvines\nvineyard\nvineyards\nvinic\nviniculture\nvinier\nviniest\nvinifera\nviniferas\nvining\nvino\nvinos\nvinosities\nvinosity\nvinous\nvinously\nvins\nvintage\nvintager\nvintagers\nvintages\nvintner\nvintners\nviny\nvinyl\nvinylic\nvinyls\nviol\nviola\nviolabilities\nviolability\nviolable\nviolably\nviolas\nviolate\nviolated\nviolater\nviolaters\nviolates\nviolating\nviolation\nviolations\nviolative\nviolator\nviolators\nviolence\nviolences\nviolent\nviolently\nviolet\nviolets\nviolin\nviolinist\nviolinists\nviolins\nviolist\nviolists\nvioloncellist\nvioloncellists\nvioloncello\nvioloncellos\nviolone\nviolones\nviols\nviomycin\nviomycins\nviper\nviperine\nviperish\nviperous\nviperously\nvipers\nvirago\nviragoes\nviragos\nviral\nvirally\nvirelai\nvirelais\nvirelay\nvirelays\nviremia\nviremias\nviremic\nvireo\nvireos\nvires\nvirga\nvirgas\nvirgate\nvirgates\nvirgin\nvirginal\nvirginalist\nvirginalists\nvirginally\nvirginals\nvirginities\nvirginity\nvirgins\nvirgule\nvirgules\nviricide\nviricides\nvirid\nviridian\nviridians\nviridities\nviridity\nvirile\nvirilism\nvirilisms\nvirilities\nvirility\nvirion\nvirions\nvirl\nvirls\nvirological\nvirologies\nvirologist\nvirologists\nvirology\nviroses\nvirosis\nvirtu\nvirtual\nvirtualities\nvirtuality\nvirtually\nvirtue\nvirtueless\nvirtues\nvirtuosa\nvirtuosas\nvirtuose\nvirtuosi\nvirtuosities\nvirtuosity\nvirtuoso\nvirtuosos\nvirtuous\nvirtuously\nvirtus\nvirucide\nvirucides\nvirulence\nvirulency\nvirulent\nvirulently\nvirus\nviruses\nvis\nvisa\nvisaed\nvisage\nvisaged\nvisages\nvisaing\nvisard\nvisards\nvisas\nviscacha\nviscachas\nviscera\nvisceral\nviscerally\nviscid\nviscidities\nviscidity\nviscidly\nviscoid\nviscose\nviscoses\nviscosities\nviscosity\nviscount\nviscountess\nviscountesses\nviscounts\nviscous\nviscously\nviscus\nvise\nvised\nviseed\nviseing\nviselike\nvises\nvisibilities\nvisibility\nvisible\nvisibly\nvising\nvision\nvisional\nvisionally\nvisionaries\nvisionary\nvisioned\nvisioning\nvisionless\nvisions\nvisit\nvisitable\nvisitant\nvisitants\nvisitation\nvisitational\nvisitations\nvisited\nvisiter\nvisiters\nvisiting\nvisitor\nvisitors\nvisits\nvisive\nvisor\nvisored\nvisoring\nvisors\nvista\nvistaed\nvistas\nvisual\nvisualization\nvisualizations\nvisualize\nvisualized\nvisualizer\nvisualizers\nvisualizes\nvisualizing\nvisually\nvita\nvitae\nvital\nvitalise\nvitalised\nvitalises\nvitalising\nvitalism\nvitalisms\nvitalist\nvitalistic\nvitalists\nvitalities\nvitality\nvitalization\nvitalizations\nvitalize\nvitalized\nvitalizes\nvitalizing\nvitally\nvitals\nvitamer\nvitamers\nvitamin\nvitamine\nvitamines\nvitamins\nvitellin\nvitellins\nvitellus\nvitelluses\nvitesse\nvitesses\nvitiable\nvitiate\nvitiated\nvitiates\nvitiating\nvitiation\nvitiations\nvitiator\nvitiators\nvitiligo\nvitiligos\nvitreous\nvitric\nvitrification\nvitrifications\nvitrified\nvitrifies\nvitrify\nvitrifying\nvitrine\nvitrines\nvitriol\nvitrioled\nvitriolic\nvitrioling\nvitriolled\nvitriolling\nvitriols\nvitta\nvittae\nvittate\nvittle\nvittled\nvittles\nvittling\nvituline\nvituperate\nvituperated\nvituperates\nvituperating\nvituperation\nvituperations\nvituperative\nvituperatively\nvituperator\nvituperators\nviva\nvivace\nvivacious\nvivaciously\nvivaciousness\nvivacities\nvivacity\nvivaria\nvivaries\nvivarium\nvivariums\nvivary\nvivas\nvive\nviverrid\nviverrids\nvivers\nvivid\nvivider\nvividest\nvividly\nvividness\nvivific\nvivification\nvivifications\nvivified\nvivifier\nvivifiers\nvivifies\nvivify\nvivifying\nvivipara\nviviparities\nviviparity\nviviparous\nviviparously\nvivisect\nvivisected\nvivisecting\nvivisection\nvivisectional\nvivisectionist\nvivisectionists\nvivisections\nvivisector\nvivisectors\nvivisects\nvixen\nvixenish\nvixenly\nvixens\nvizard\nvizarded\nvizards\nvizcacha\nvizcachas\nvizier\nviziers\nvizir\nvizirate\nvizirates\nvizirial\nvizirs\nvizor\nvizored\nvizoring\nvizors\nvizsla\nvizslas\nvocable\nvocables\nvocably\nvocabularies\nvocabulary\nvocal\nvocalic\nvocalics\nvocalise\nvocalised\nvocalises\nvocalising\nvocalism\nvocalisms\nvocalist\nvocalists\nvocalities\nvocality\nvocalization\nvocalizations\nvocalize\nvocalized\nvocalizer\nvocalizers\nvocalizes\nvocalizing\nvocally\nvocals\nvocation\nvocational\nvocationally\nvocations\nvocative\nvocatively\nvocatives\nvoces\nvociferant\nvociferate\nvociferated\nvociferates\nvociferating\nvociferation\nvociferations\nvociferous\nvociferously\nvociferousness\nvocoder\nvocoders\nvodka\nvodkas\nvodun\nvoduns\nvoe\nvoes\nvogie\nvogue\nvogues\nvoguish\nvoice\nvoiced\nvoiceful\nvoiceless\nvoicelessly\nvoicelessness\nvoiceprint\nvoiceprints\nvoicer\nvoicers\nvoices\nvoicing\nvoid\nvoidable\nvoidance\nvoidances\nvoided\nvoider\nvoiders\nvoiding\nvoidness\nvoidnesses\nvoids\nvoila\nvoile\nvoiles\nvolant\nvolante\nvolar\nvolatile\nvolatiles\nvolatilities\nvolatility\nvolatilization\nvolatilizations\nvolatilize\nvolatilized\nvolatilizes\nvolatilizing\nvolcanic\nvolcanically\nvolcanicities\nvolcanicity\nvolcanics\nvolcano\nvolcanoes\nvolcanological\nvolcanologies\nvolcanologist\nvolcanologists\nvolcanology\nvolcanos\nvole\nvoled\nvoleries\nvolery\nvoles\nvoling\nvolitant\nvolition\nvolitional\nvolitions\nvolitive\nvolley\nvolleyball\nvolleyballs\nvolleyed\nvolleyer\nvolleyers\nvolleying\nvolleys\nvolost\nvolosts\nvolplane\nvolplaned\nvolplanes\nvolplaning\nvolt\nvolta\nvoltage\nvoltages\nvoltaic\nvoltaism\nvoltaisms\nvoltameter\nvoltameters\nvolte\nvoltes\nvolti\nvoltmeter\nvoltmeters\nvolts\nvolubilities\nvolubility\nvoluble\nvolubly\nvolume\nvolumed\nvolumes\nvoluming\nvoluminous\nvoluminously\nvoluntaries\nvoluntarily\nvoluntarist\nvoluntaristic\nvoluntarists\nvoluntary\nvoluntaryism\nvoluntaryist\nvoluntaryists\nvolunteer\nvolunteered\nvolunteering\nvolunteers\nvoluptuaries\nvoluptuary\nvoluptuous\nvoluptuously\nvoluptuousness\nvolute\nvoluted\nvolutes\nvolutin\nvolutins\nvolution\nvolutions\nvolva\nvolvas\nvolvate\nvolvox\nvolvoxes\nvolvuli\nvolvulus\nvolvuluses\nvomer\nvomerine\nvomers\nvomica\nvomicae\nvomit\nvomited\nvomiter\nvomiters\nvomiting\nvomitive\nvomitives\nvomito\nvomitories\nvomitory\nvomitos\nvomitous\nvomits\nvomitus\nvomituses\nvon\nvoodoo\nvoodooed\nvoodooing\nvoodooism\nvoodooist\nvoodooistic\nvoodooists\nvoodoos\nvoracious\nvoraciously\nvoraciousness\nvoracities\nvoracity\nvorlage\nvorlages\nvortex\nvortexes\nvortical\nvortices\nvotable\nvotaress\nvotaresses\nvotaries\nvotarist\nvotarists\nvotary\nvote\nvoteable\nvoted\nvoteless\nvoter\nvoters\nvotes\nvoting\nvotive\nvotively\nvotress\nvotresses\nvouch\nvouched\nvouchee\nvouchees\nvoucher\nvouchered\nvouchering\nvouchers\nvouches\nvouching\nvouchsafe\nvouchsafed\nvouchsafes\nvouchsafing\nvoussoir\nvoussoirs\nvow\nvowed\nvowel\nvowelize\nvowelized\nvowelizes\nvowelizing\nvowels\nvower\nvowers\nvowing\nvowless\nvows\nvox\nvoyage\nvoyaged\nvoyager\nvoyagers\nvoyages\nvoyageur\nvoyageurs\nvoyaging\nvoyeur\nvoyeurism\nvoyeurs\nvroom\nvroomed\nvrooming\nvrooms\nvrouw\nvrouws\nvrow\nvrows\nvug\nvugg\nvuggs\nvuggy\nvugh\nvughs\nvugs\nvulcanic\nvulcanization\nvulcanizations\nvulcanize\nvulcanized\nvulcanizer\nvulcanizers\nvulcanizes\nvulcanizing\nvulgar\nvulgarer\nvulgarest\nvulgarian\nvulgarians\nvulgarism\nvulgarities\nvulgarity\nvulgarization\nvulgarizations\nvulgarize\nvulgarized\nvulgarizes\nvulgarizing\nvulgarly\nvulgars\nvulgate\nvulgates\nvulgo\nvulgus\nvulguses\nvulnerabilities\nvulnerability\nvulnerable\nvulnerableness\nvulnerably\nvulpine\nvulture\nvultures\nvulva\nvulvae\nvulval\nvulvar\nvulvas\nvulvate\nvulvitis\nvulvitises\nvying\nvyingly\nwab\nwabble\nwabbled\nwabbler\nwabblers\nwabbles\nwabblier\nwabbliest\nwabbling\nwabbly\nwabs\nwack\nwacke\nwackes\nwackier\nwackiest\nwackily\nwacko\nwacks\nwacky\nwad\nwadable\nwadded\nwadder\nwadders\nwaddie\nwaddied\nwaddies\nwadding\nwaddings\nwaddle\nwaddled\nwaddler\nwaddlers\nwaddles\nwaddling\nwaddly\nwaddy\nwaddying\nwade\nwadeable\nwaded\nwader\nwaders\nwades\nwadi\nwadies\nwading\nwadis\nwadmaal\nwadmaals\nwadmal\nwadmals\nwadmel\nwadmels\nwadmol\nwadmoll\nwadmolls\nwadmols\nwads\nwadset\nwadsets\nwadsetted\nwadsetting\nwady\nwae\nwaeful\nwaeness\nwaenesses\nwaes\nwaesuck\nwaesucks\nwafer\nwafered\nwafering\nwafers\nwafery\nwaff\nwaffed\nwaffie\nwaffies\nwaffing\nwaffle\nwaffled\nwaffles\nwaffling\nwaffs\nwaft\nwaftage\nwaftages\nwafted\nwafter\nwafters\nwafting\nwafts\nwafture\nwaftures\nwag\nwage\nwaged\nwageless\nwager\nwagered\nwagerer\nwagerers\nwagering\nwagers\nwages\nwagged\nwagger\nwaggeries\nwaggers\nwaggery\nwagging\nwaggish\nwaggishly\nwaggishness\nwaggle\nwaggled\nwaggles\nwaggling\nwaggly\nwaggon\nwaggoned\nwaggoner\nwaggoners\nwaggoning\nwaggons\nwaging\nwagon\nwagonage\nwagonages\nwagoned\nwagoner\nwagoners\nwagonette\nwagonettes\nwagoning\nwagons\nwags\nwagsome\nwagtail\nwagtails\nwahconda\nwahcondas\nwahine\nwahines\nwahoo\nwahoos\nwaif\nwaifed\nwaifing\nwaifs\nwail\nwailed\nwailer\nwailers\nwailful\nwailfully\nwailing\nwails\nwailsome\nwain\nwains\nwainscot\nwainscoted\nwainscoting\nwainscotings\nwainscots\nwainscotted\nwainscotting\nwainscottings\nwainwright\nwainwrights\nwair\nwaired\nwairing\nwairs\nwaist\nwaistband\nwaistbands\nwaistcoat\nwaistcoated\nwaistcoats\nwaisted\nwaister\nwaisters\nwaisting\nwaistings\nwaistline\nwaistlines\nwaists\nwait\nwaited\nwaiter\nwaiters\nwaiting\nwaitings\nwaitress\nwaitresses\nwaits\nwaive\nwaived\nwaiver\nwaivers\nwaives\nwaiving\nwakanda\nwakandas\nwake\nwaked\nwakeful\nwakefully\nwakefulness\nwakeless\nwaken\nwakened\nwakener\nwakeners\nwakening\nwakenings\nwakens\nwaker\nwakerife\nwakers\nwakes\nwakiki\nwakikis\nwaking\nwale\nwaled\nwaler\nwalers\nwales\nwalies\nwaling\nwalk\nwalkable\nwalkaway\nwalkaways\nwalked\nwalker\nwalkers\nwalking\nwalkings\nwalkout\nwalkouts\nwalkover\nwalkovers\nwalks\nwalkup\nwalkups\nwalkway\nwalkways\nwalkyrie\nwalkyries\nwall\nwalla\nwallabies\nwallaby\nwallah\nwallahs\nwallaroo\nwallaroos\nwallas\nwallboard\nwallboards\nwalled\nwallet\nwallets\nwalleye\nwalleyed\nwalleyes\nwallflower\nwallflowers\nwallie\nwallies\nwalling\nwallop\nwalloped\nwalloper\nwallopers\nwalloping\nwallops\nwallow\nwallowed\nwallower\nwallowers\nwallowing\nwallows\nwallpaper\nwallpapered\nwallpapering\nwallpapers\nwalls\nwally\nwalnut\nwalnuts\nwalrus\nwalruses\nwaltz\nwaltzed\nwaltzer\nwaltzers\nwaltzes\nwaltzing\nwaly\nwamble\nwambled\nwambles\nwamblier\nwambliest\nwambling\nwambly\nwame\nwamefou\nwamefous\nwameful\nwamefuls\nwames\nwammus\nwammuses\nwampish\nwampished\nwampishes\nwampishing\nwampum\nwampums\nwampus\nwampuses\nwamus\nwamuses\nwan\nwand\nwander\nwandered\nwanderer\nwanderers\nwandering\nwanderings\nwanderlust\nwanderoo\nwanderoos\nwanders\nwandle\nwands\nwane\nwaned\nwanes\nwaney\nwangan\nwangans\nwangle\nwangled\nwangler\nwanglers\nwangles\nwangling\nwangun\nwanguns\nwanier\nwaniest\nwanigan\nwanigans\nwaning\nwanion\nwanions\nwanly\nwanned\nwanner\nwanness\nwannesses\nwannest\nwannigan\nwannigans\nwanning\nwans\nwant\nwantage\nwantages\nwanted\nwanter\nwanters\nwanting\nwanton\nwantoned\nwantoner\nwantoners\nwantoning\nwantonly\nwantonness\nwantons\nwants\nwany\nwap\nwapiti\nwapitis\nwapped\nwapping\nwaps\nwar\nwarble\nwarbled\nwarbler\nwarblers\nwarbles\nwarbling\nwarcraft\nwarcrafts\nward\nwarded\nwarden\nwardenries\nwardenry\nwardens\nwarder\nwarders\nwarding\nwardress\nwardresses\nwardrobe\nwardrobes\nwardroom\nwardrooms\nwards\nwardship\nwardships\nware\nwared\nwarehouse\nwarehoused\nwarehouseman\nwarehousemen\nwarehouses\nwarehousing\nwareroom\nwarerooms\nwares\nwarfare\nwarfares\nwarfarin\nwarfarins\nwarhead\nwarheads\nwarier\nwariest\nwarily\nwariness\nwarinesses\nwaring\nwarison\nwarisons\nwark\nwarked\nwarking\nwarks\nwarless\nwarlike\nwarlock\nwarlocks\nwarlord\nwarlords\nwarm\nwarmaker\nwarmakers\nwarmblooded\nwarmed\nwarmer\nwarmers\nwarmest\nwarmhearted\nwarmheartedly\nwarmheartedness\nwarming\nwarmish\nwarmly\nwarmness\nwarmnesses\nwarmonger\nwarmongering\nwarmongers\nwarmouth\nwarmouths\nwarms\nwarmth\nwarmths\nwarmup\nwarmups\nwarn\nwarned\nwarner\nwarners\nwarning\nwarningly\nwarnings\nwarns\nwarp\nwarpage\nwarpages\nwarpath\nwarpaths\nwarped\nwarper\nwarpers\nwarping\nwarplane\nwarplanes\nwarpower\nwarpowers\nwarps\nwarpwise\nwarragal\nwarragals\nwarrant\nwarrantable\nwarranted\nwarranties\nwarranting\nwarrantless\nwarrantor\nwarrantors\nwarrants\nwarranty\nwarred\nwarren\nwarrener\nwarreners\nwarrens\nwarrigal\nwarrigals\nwarring\nwarrior\nwarriors\nwars\nwarsaw\nwarsaws\nwarship\nwarships\nwarsle\nwarsled\nwarsler\nwarslers\nwarsles\nwarsling\nwarstle\nwarstled\nwarstler\nwarstlers\nwarstles\nwarstling\nwart\nwarted\nwarthog\nwarthogs\nwartier\nwartiest\nwartime\nwartimes\nwartlike\nwarts\nwarty\nwarwork\nwarworks\nwarworn\nwary\nwas\nwash\nwashabilities\nwashability\nwashable\nwashboard\nwashboards\nwashbowl\nwashbowls\nwashcloth\nwashcloths\nwashday\nwashdays\nwashed\nwasher\nwashers\nwashes\nwashier\nwashiest\nwashing\nwashings\nwashout\nwashouts\nwashrag\nwashrags\nwashroom\nwashrooms\nwashstand\nwashstands\nwashtub\nwashtubs\nwashy\nwasp\nwaspier\nwaspiest\nwaspily\nwaspiness\nwaspish\nwaspishly\nwaspishness\nwasplike\nwasps\nwaspy\nwassail\nwassailed\nwassailer\nwassailers\nwassailing\nwassails\nwast\nwastable\nwastage\nwastages\nwaste\nwastebasket\nwastebaskets\nwasted\nwasteful\nwastefully\nwastefulness\nwasteland\nwastelands\nwastelot\nwastelots\nwastepaper\nwaster\nwasterie\nwasteries\nwasters\nwastery\nwastes\nwastewater\nwastewaters\nwasteway\nwasteways\nwasting\nwastrel\nwastrels\nwastrie\nwastries\nwastry\nwasts\nwat\nwatap\nwatape\nwatapes\nwataps\nwatch\nwatchband\nwatchbands\nwatchcase\nwatchcases\nwatchcries\nwatchcry\nwatchdog\nwatchdogged\nwatchdogging\nwatchdogs\nwatched\nwatcher\nwatchers\nwatches\nwatcheye\nwatcheyes\nwatchful\nwatchfully\nwatchfulness\nwatching\nwatchmaker\nwatchmakers\nwatchmaking\nwatchman\nwatchmen\nwatchout\nwatchouts\nwatchtower\nwatchtowers\nwatchword\nwatchwords\nwater\nwaterage\nwaterages\nwaterbed\nwaterbeds\nwatercolor\nwatercolorist\nwatercolorists\nwatercolors\nwatercooler\nwatercoolers\nwatercourse\nwatercourses\nwatercraft\nwatercrafts\nwaterdog\nwaterdogs\nwatered\nwaterer\nwaterers\nwaterfall\nwaterfalls\nwaterfront\nwaterfronts\nwaterier\nwateriest\nwaterily\nwateriness\nwatering\nwaterings\nwaterish\nwaterless\nwaterline\nwaterlines\nwaterlog\nwaterlogged\nwaterlogging\nwaterlogs\nwaterloo\nwaterloos\nwaterman\nwatermark\nwatermarks\nwatermen\nwaterpower\nwaterproof\nwaterproofed\nwaterproofing\nwaterproofness\nwaterproofs\nwaters\nwaterscape\nwaterscapes\nwatershed\nwatersheds\nwaterside\nwatersides\nwaterspout\nwaterspouts\nwatertight\nwatertightness\nwaterway\nwaterways\nwaterworks\nwatery\nwats\nwatt\nwattage\nwattages\nwattape\nwattapes\nwatter\nwattest\nwatthour\nwatthours\nwattle\nwattled\nwattles\nwattless\nwattling\nwattmeter\nwattmeters\nwatts\nwaucht\nwauchted\nwauchting\nwauchts\nwaugh\nwaught\nwaughted\nwaughting\nwaughts\nwauk\nwauked\nwauking\nwauks\nwaul\nwauled\nwauling\nwauls\nwaur\nwave\nwaveband\nwavebands\nwaved\nwaveform\nwaveforms\nwavelength\nwavelengths\nwaveless\nwavelet\nwavelets\nwavelike\nwaveoff\nwaveoffs\nwaver\nwavered\nwaverer\nwaverers\nwavering\nwaveringly\nwavers\nwavery\nwaves\nwavey\nwaveys\nwavier\nwavies\nwaviest\nwavily\nwaviness\nwavinesses\nwaving\nwavy\nwaw\nwawl\nwawled\nwawling\nwawls\nwaws\nwax\nwaxberries\nwaxberry\nwaxbill\nwaxbills\nwaxed\nwaxen\nwaxer\nwaxers\nwaxes\nwaxier\nwaxiest\nwaxily\nwaxiness\nwaxinesses\nwaxing\nwaxings\nwaxlike\nwaxplant\nwaxplants\nwaxweed\nwaxweeds\nwaxwing\nwaxwings\nwaxwork\nwaxworks\nwaxworm\nwaxworms\nwaxy\nway\nwaybill\nwaybills\nwayfarer\nwayfarers\nwayfaring\nwayfarings\nwaygoing\nwaygoings\nwaylaid\nwaylay\nwaylayer\nwaylayers\nwaylaying\nwaylays\nwayless\nways\nwayside\nwaysides\nwayward\nwaywardly\nwaywardness\nwayworn\nwe\nweak\nweaken\nweakened\nweakener\nweakeners\nweakening\nweakens\nweaker\nweakest\nweakfish\nweakfishes\nweakish\nweaklier\nweakliest\nweakliness\nweakling\nweaklings\nweakly\nweakness\nweaknesses\nweal\nweald\nwealds\nweals\nwealth\nwealthier\nwealthiest\nwealthily\nwealthiness\nwealths\nwealthy\nwean\nweaned\nweaner\nweaners\nweaning\nweanling\nweanlings\nweans\nweapon\nweaponed\nweaponing\nweaponless\nweaponries\nweaponry\nweapons\nwear\nwearable\nwearables\nwearer\nwearers\nwearied\nwearier\nwearies\nweariest\nweariful\nwearifully\nweariless\nwearilessly\nwearily\nweariness\nwearing\nwearingly\nwearish\nwearisome\nwearisomely\nwearisomeness\nwears\nweary\nwearying\nweasand\nweasands\nweasel\nweaseled\nweaseling\nweasels\nweason\nweasons\nweather\nweatherabilities\nweatherability\nweatherboard\nweatherboarding\nweatherboards\nweathercock\nweathercocks\nweathered\nweathering\nweatherman\nweathermen\nweatherproof\nweatherproofed\nweatherproofing\nweatherproofs\nweathers\nweave\nweaved\nweaver\nweavers\nweaves\nweaving\nweazand\nweazands\nweb\nwebbed\nwebbier\nwebbiest\nwebbing\nwebbings\nwebby\nweber\nwebers\nwebfed\nwebfeet\nwebfoot\nwebless\nweblike\nwebs\nwebster\nwebsters\nwebworm\nwebworms\nwecht\nwechts\nwed\nwedded\nwedder\nwedders\nwedding\nweddings\nwedel\nwedeled\nwedeling\nwedeln\nwedelns\nwedels\nwedge\nwedged\nwedges\nwedgie\nwedgier\nwedgies\nwedgiest\nwedging\nwedgy\nwedlock\nwedlocks\nweds\nwee\nweed\nweeded\nweeder\nweeders\nweedier\nweediest\nweedily\nweediness\nweeding\nweedless\nweedlike\nweeds\nweedy\nweek\nweekday\nweekdays\nweekend\nweekended\nweekender\nweekenders\nweekending\nweekends\nweeklies\nweeklong\nweekly\nweeknight\nweeknights\nweeks\nweel\nween\nweened\nweenie\nweenier\nweenies\nweeniest\nweening\nweens\nweensier\nweensiest\nweensy\nweeny\nweep\nweeper\nweepers\nweepier\nweepiest\nweeping\nweeps\nweepy\nweer\nwees\nweest\nweet\nweeted\nweeting\nweets\nweever\nweevers\nweevil\nweeviled\nweevilly\nweevils\nweevily\nweewee\nweeweed\nweeweeing\nweewees\nweft\nwefts\nweftwise\nweigela\nweigelas\nweigelia\nweigelias\nweigh\nweighable\nweighed\nweigher\nweighers\nweighing\nweighman\nweighmen\nweighs\nweight\nweighted\nweighter\nweighters\nweightier\nweightiest\nweightily\nweightiness\nweighting\nweightless\nweightlessly\nweightlessness\nweights\nweighty\nweiner\nweiners\nweir\nweird\nweirder\nweirdest\nweirdie\nweirdies\nweirdly\nweirdness\nweirdo\nweirdoes\nweirdos\nweirds\nweirdy\nweirs\nweka\nwekas\nwelch\nwelched\nwelcher\nwelchers\nwelches\nwelching\nwelcome\nwelcomed\nwelcomely\nwelcomeness\nwelcomer\nwelcomers\nwelcomes\nwelcoming\nweld\nweldable\nwelded\nwelder\nwelders\nwelding\nweldless\nweldment\nweldments\nweldor\nweldors\nwelds\nwelfare\nwelfares\nwelkin\nwelkins\nwell\nwelladay\nwelladays\nwellaway\nwellaways\nwellborn\nwellcurb\nwellcurbs\nwelldoer\nwelldoers\nwelled\nwellhead\nwellheads\nwellhole\nwellholes\nwelling\nwellness\nwellnesses\nwells\nwellsite\nwellsites\nwellspring\nwellsprings\nwelly\nwelsh\nwelshed\nwelsher\nwelshers\nwelshes\nwelshing\nwelt\nwelted\nwelter\nweltered\nweltering\nwelters\nwelterweight\nwelterweights\nwelting\nweltings\nwelts\nwen\nwench\nwenched\nwencher\nwenchers\nwenches\nwenching\nwend\nwended\nwendigo\nwendigos\nwending\nwends\nwennier\nwenniest\nwennish\nwenny\nwens\nwent\nwept\nwere\nweregild\nweregilds\nwerewolf\nwerewolves\nwergeld\nwergelds\nwergelt\nwergelts\nwergild\nwergilds\nwert\nwerwolf\nwerwolves\nweskit\nweskits\nwessand\nwessands\nwest\nwester\nwestered\nwestering\nwesterlies\nwesterly\nwestern\nwesternization\nwesternize\nwesternized\nwesternizes\nwesternizing\nwesterns\nwesters\nwesting\nwestings\nwestmost\nwests\nwestward\nwestwards\nwet\nwetback\nwetbacks\nwether\nwethers\nwetland\nwetlands\nwetly\nwetness\nwetnesses\nwetproof\nwets\nwettable\nwetted\nwetter\nwetters\nwettest\nwetting\nwettings\nwettish\nwha\nwhack\nwhacked\nwhacker\nwhackers\nwhackier\nwhackiest\nwhacking\nwhacks\nwhacky\nwhale\nwhalebone\nwhalebones\nwhaled\nwhaleman\nwhalemen\nwhaler\nwhalers\nwhales\nwhaling\nwhalings\nwham\nwhammed\nwhammies\nwhamming\nwhammy\nwhamo\nwhams\nwhang\nwhanged\nwhangee\nwhangees\nwhanging\nwhangs\nwhap\nwhapped\nwhapper\nwhappers\nwhapping\nwhaps\nwharf\nwharfage\nwharfages\nwharfed\nwharfing\nwharfs\nwharve\nwharves\nwhat\nwhatever\nwhatnot\nwhatnots\nwhats\nwhatsoever\nwhaup\nwhaups\nwheal\nwheals\nwheat\nwheatear\nwheatears\nwheaten\nwheats\nwhee\nwheedle\nwheedled\nwheedler\nwheedlers\nwheedles\nwheedling\nwheel\nwheelbarrow\nwheelbarrows\nwheelbase\nwheelchair\nwheelchairs\nwheeled\nwheeler\nwheelers\nwheelhouse\nwheelhouses\nwheelie\nwheelies\nwheeling\nwheelings\nwheelless\nwheelman\nwheelmen\nwheels\nwheelwright\nwheelwrights\nwheen\nwheens\nwheep\nwheeped\nwheeping\nwheeple\nwheepled\nwheeples\nwheepling\nwheeps\nwheeze\nwheezed\nwheezer\nwheezers\nwheezes\nwheezier\nwheeziest\nwheezily\nwheezing\nwheezy\nwhelk\nwhelkier\nwhelkiest\nwhelks\nwhelky\nwhelm\nwhelmed\nwhelming\nwhelms\nwhelp\nwhelped\nwhelping\nwhelps\nwhen\nwhenas\nwhence\nwhencesoever\nwhenever\nwhens\nwhensoever\nwhere\nwhereabouts\nwhereas\nwhereases\nwhereat\nwhereby\nwherefore\nwherein\nwhereof\nwhereon\nwheres\nwhereto\nwhereupon\nwherever\nwherewith\nwherewithal\nwherried\nwherries\nwherry\nwherrying\nwherve\nwherves\nwhet\nwhether\nwhets\nwhetstone\nwhetstones\nwhetted\nwhetter\nwhetters\nwhetting\nwhew\nwhews\nwhey\nwheyey\nwheyface\nwheyfaced\nwheyfaces\nwheyish\nwheys\nwhich\nwhichever\nwhichsoever\nwhicker\nwhickered\nwhickering\nwhickers\nwhid\nwhidah\nwhidahs\nwhidded\nwhidding\nwhids\nwhiff\nwhiffed\nwhiffer\nwhiffers\nwhiffet\nwhiffets\nwhiffing\nwhiffle\nwhiffled\nwhiffler\nwhifflers\nwhiffles\nwhiffling\nwhiffs\nwhig\nwhigs\nwhile\nwhiled\nwhiles\nwhiling\nwhilom\nwhilst\nwhim\nwhimbrel\nwhimbrels\nwhimper\nwhimpered\nwhimpering\nwhimpers\nwhims\nwhimsey\nwhimseys\nwhimsical\nwhimsicalities\nwhimsicality\nwhimsically\nwhimsicalness\nwhimsied\nwhimsies\nwhimsy\nwhin\nwhinchat\nwhinchats\nwhine\nwhined\nwhiner\nwhiners\nwhines\nwhiney\nwhinier\nwhiniest\nwhining\nwhiningly\nwhinnied\nwhinnier\nwhinnies\nwhinniest\nwhinny\nwhinnying\nwhins\nwhiny\nwhip\nwhipcord\nwhipcords\nwhiplash\nwhiplashes\nwhiplike\nwhipped\nwhipper\nwhippers\nwhippersnapper\nwhippersnappers\nwhippet\nwhippets\nwhippier\nwhippiest\nwhipping\nwhippings\nwhippy\nwhipray\nwhiprays\nwhips\nwhipsaw\nwhipsawed\nwhipsawing\nwhipsawn\nwhipsaws\nwhipstock\nwhipstocks\nwhipt\nwhiptail\nwhiptails\nwhipworm\nwhipworms\nwhir\nwhirl\nwhirled\nwhirler\nwhirlers\nwhirlier\nwhirlies\nwhirliest\nwhirligig\nwhirligigs\nwhirling\nwhirlpool\nwhirlpools\nwhirls\nwhirlwind\nwhirlwinds\nwhirly\nwhirr\nwhirred\nwhirried\nwhirries\nwhirring\nwhirrs\nwhirry\nwhirrying\nwhirs\nwhish\nwhished\nwhishes\nwhishing\nwhisht\nwhishted\nwhishting\nwhishts\nwhisk\nwhiskbroom\nwhiskbrooms\nwhisked\nwhisker\nwhiskered\nwhiskers\nwhiskery\nwhiskey\nwhiskeys\nwhiskies\nwhisking\nwhisks\nwhisky\nwhisper\nwhispered\nwhispering\nwhisperingly\nwhisperings\nwhispers\nwhispery\nwhist\nwhisted\nwhisting\nwhistle\nwhistled\nwhistler\nwhistlers\nwhistles\nwhistling\nwhistlings\nwhists\nwhit\nwhite\nwhitecap\nwhitecaps\nwhited\nwhitefish\nwhiteflies\nwhitefly\nwhitely\nwhiten\nwhitened\nwhitener\nwhiteners\nwhiteness\nwhitening\nwhitenings\nwhitens\nwhiteout\nwhiteouts\nwhiter\nwhites\nwhitest\nwhitewall\nwhitewalls\nwhitewash\nwhitewashed\nwhitewashes\nwhitewashing\nwhitey\nwhiteys\nwhither\nwhities\nwhiting\nwhitings\nwhitish\nwhitlow\nwhitlows\nwhitrack\nwhitracks\nwhits\nwhitter\nwhitters\nwhittle\nwhittled\nwhittler\nwhittlers\nwhittles\nwhittling\nwhittlings\nwhittret\nwhittrets\nwhity\nwhiz\nwhizbang\nwhizbangs\nwhizz\nwhizzed\nwhizzer\nwhizzers\nwhizzes\nwhizzing\nwho\nwhoa\nwhodunit\nwhodunits\nwhoever\nwhole\nwholehearted\nwholeheartedly\nwholeness\nwholes\nwholesale\nwholesaled\nwholesaler\nwholesalers\nwholesales\nwholesaling\nwholesome\nwholesomely\nwholesomeness\nwholism\nwholisms\nwholly\nwhom\nwhomever\nwhomp\nwhomped\nwhomping\nwhomps\nwhomso\nwhomsoever\nwhoof\nwhoop\nwhooped\nwhoopee\nwhoopees\nwhooper\nwhoopers\nwhooping\nwhoopla\nwhooplas\nwhoops\nwhoosh\nwhooshed\nwhooshes\nwhooshing\nwhoosis\nwhoosises\nwhop\nwhopped\nwhopper\nwhoppers\nwhopping\nwhops\nwhore\nwhored\nwhoredom\nwhoredoms\nwhores\nwhoreson\nwhoresons\nwhoring\nwhorish\nwhorl\nwhorled\nwhorls\nwhort\nwhortle\nwhortles\nwhorts\nwhose\nwhosever\nwhosis\nwhosises\nwhoso\nwhosoever\nwhump\nwhumped\nwhumping\nwhumps\nwhy\nwhydah\nwhydahs\nwhys\nwich\nwiches\nwick\nwickape\nwickapes\nwicked\nwickeder\nwickedest\nwickedly\nwickedness\nwicker\nwickers\nwickerwork\nwickerworks\nwicket\nwickets\nwicking\nwickings\nwickiup\nwickiups\nwicks\nwickyup\nwickyups\nwicopies\nwicopy\nwidder\nwidders\nwiddie\nwiddies\nwiddle\nwiddled\nwiddles\nwiddling\nwiddy\nwide\nwidely\nwiden\nwidened\nwidener\nwideners\nwideness\nwidenesses\nwidening\nwidens\nwider\nwides\nwidespread\nwidespreading\nwidest\nwidgeon\nwidgeons\nwidget\nwidgets\nwidish\nwidow\nwidowed\nwidower\nwidowerhood\nwidowers\nwidowhood\nwidowing\nwidows\nwidth\nwidths\nwidthway\nwield\nwielded\nwielder\nwielders\nwieldier\nwieldiest\nwielding\nwields\nwieldy\nwiener\nwieners\nwienie\nwienies\nwife\nwifed\nwifedom\nwifedoms\nwifehood\nwifehoods\nwifeless\nwifelier\nwifeliest\nwifelike\nwifeliness\nwifely\nwifes\nwifing\nwig\nwigan\nwigans\nwigeon\nwigeons\nwigged\nwiggeries\nwiggery\nwigging\nwiggings\nwiggle\nwiggled\nwiggler\nwigglers\nwiggles\nwigglier\nwiggliest\nwiggling\nwiggly\nwiggy\nwight\nwights\nwigless\nwiglet\nwiglets\nwiglike\nwigmaker\nwigmakers\nwigs\nwigwag\nwigwagged\nwigwagging\nwigwags\nwigwam\nwigwams\nwikiup\nwikiups\nwilco\nwild\nwildcat\nwildcats\nwildcatted\nwildcatter\nwildcatters\nwildcatting\nwilder\nwildered\nwildering\nwilderness\nwildernesses\nwilders\nwildest\nwildfire\nwildfires\nwildflower\nwildflowers\nwildfowl\nwildfowls\nwilding\nwildings\nwildish\nwildlife\nwildling\nwildlings\nwildly\nwildness\nwildnesses\nwilds\nwildwood\nwildwoods\nwile\nwiled\nwiles\nwilful\nwilfully\nwilfulness\nwilier\nwiliest\nwilily\nwiliness\nwilinesses\nwiling\nwill\nwillable\nwilled\nwiller\nwillers\nwillet\nwillets\nwillful\nwillfully\nwillfulness\nwillied\nwillies\nwilling\nwillinger\nwillingest\nwillingly\nwillingness\nwilliwau\nwilliwaus\nwilliwaw\nwilliwaws\nwillow\nwillowed\nwillower\nwillowers\nwillowier\nwillowiest\nwillowing\nwillowlike\nwillows\nwillowy\nwillpower\nwills\nwilly\nwillyard\nwillyart\nwillying\nwillywaw\nwillywaws\nwilt\nwilted\nwilting\nwilts\nwily\nwimble\nwimbled\nwimbles\nwimbling\nwimp\nwimple\nwimpled\nwimples\nwimpling\nwimps\nwimpy\nwin\nwince\nwinced\nwincer\nwincers\nwinces\nwincey\nwinceys\nwinch\nwinched\nwincher\nwinchers\nwinches\nwinching\nwincing\nwind\nwindable\nwindage\nwindages\nwindbag\nwindbags\nwindblown\nwindbreak\nwindbreaker\nwindbreakers\nwindbreaks\nwindburn\nwindburned\nwindburning\nwindburns\nwindburnt\nwindchill\nwinded\nwinder\nwinders\nwindfall\nwindfalls\nwindflaw\nwindflaws\nwindgall\nwindgalls\nwindier\nwindiest\nwindigo\nwindigos\nwindily\nwindiness\nwinding\nwindings\nwindjammer\nwindjammers\nwindlass\nwindlassed\nwindlasses\nwindlassing\nwindle\nwindled\nwindles\nwindless\nwindlessly\nwindling\nwindlings\nwindmill\nwindmilled\nwindmilling\nwindmills\nwindow\nwindowed\nwindowing\nwindowless\nwindowpane\nwindowpanes\nwindows\nwindowsill\nwindpipe\nwindpipes\nwindrow\nwindrowed\nwindrowing\nwindrows\nwinds\nwindshield\nwindshields\nwindsock\nwindsocks\nwindstorm\nwindstorms\nwindswept\nwindup\nwindups\nwindward\nwindwards\nwindway\nwindways\nwindy\nwine\nwined\nwineglass\nwineglasses\nwinegrower\nwinegrowers\nwineless\nwineries\nwinery\nwines\nwineshop\nwineshops\nwineskin\nwineskins\nwinesop\nwinesops\nwiney\nwing\nwingback\nwingbacks\nwingbow\nwingbows\nwingding\nwingdings\nwinged\nwingedly\nwinger\nwingers\nwingier\nwingiest\nwinging\nwingless\nwinglessness\nwinglet\nwinglets\nwinglike\nwingman\nwingmen\nwingover\nwingovers\nwings\nwingspan\nwingspans\nwingspread\nwingspreads\nwingy\nwinier\nwiniest\nwining\nwinish\nwink\nwinked\nwinker\nwinkers\nwinking\nwinkle\nwinkled\nwinkles\nwinkling\nwinks\nwinnable\nwinned\nwinner\nwinners\nwinning\nwinningly\nwinnings\nwinnock\nwinnocks\nwinnow\nwinnowed\nwinnower\nwinnowers\nwinnowing\nwinnows\nwino\nwinoes\nwinos\nwins\nwinsome\nwinsomely\nwinsomeness\nwinsomer\nwinsomest\nwinter\nwintered\nwinterer\nwinterers\nwintergreen\nwintergreens\nwinterier\nwinteriest\nwintering\nwinterization\nwinterizations\nwinterize\nwinterized\nwinterizes\nwinterizing\nwinterly\nwinters\nwintertime\nwintertimes\nwintery\nwintle\nwintled\nwintles\nwintling\nwintrier\nwintriest\nwintrily\nwintry\nwiny\nwinze\nwinzes\nwipe\nwiped\nwipeout\nwipeouts\nwiper\nwipers\nwipes\nwiping\nwirable\nwire\nwired\nwiredraw\nwiredrawer\nwiredrawers\nwiredrawing\nwiredrawn\nwiredraws\nwiredrew\nwirehair\nwirehaired\nwirehairs\nwireless\nwirelessed\nwirelesses\nwirelessing\nwirelike\nwireman\nwiremen\nwirepuller\nwirepullers\nwirer\nwirers\nwires\nwiretap\nwiretapped\nwiretapper\nwiretappers\nwiretapping\nwiretaps\nwireway\nwireways\nwirework\nwireworker\nwireworkers\nwireworks\nwireworm\nwireworms\nwirier\nwiriest\nwirily\nwiriness\nwirinesses\nwiring\nwirings\nwirra\nwiry\nwis\nwisdom\nwisdoms\nwise\nwiseacre\nwiseacres\nwisecrack\nwisecracked\nwisecracker\nwisecrackers\nwisecracking\nwisecracks\nwised\nwiselier\nwiseliest\nwisely\nwiseness\nwisenesses\nwisent\nwisents\nwiser\nwises\nwisest\nwish\nwisha\nwishbone\nwishbones\nwished\nwisher\nwishers\nwishes\nwishful\nwishfully\nwishfulness\nwishing\nwishless\nwising\nwisp\nwisped\nwispier\nwispiest\nwispily\nwispiness\nwisping\nwispish\nwisplike\nwisps\nwispy\nwiss\nwissed\nwisses\nwissing\nwist\nwistaria\nwistarias\nwisted\nwisteria\nwisterias\nwistful\nwistfully\nwistfulness\nwisting\nwists\nwit\nwitan\nwitch\nwitchcraft\nwitchcrafts\nwitched\nwitcheries\nwitchery\nwitches\nwitchier\nwitchiest\nwitching\nwitchings\nwitchy\nwite\nwited\nwites\nwith\nwithal\nwithdraw\nwithdrawable\nwithdrawal\nwithdrawals\nwithdrawing\nwithdrawn\nwithdrawnness\nwithdraws\nwithdrew\nwithe\nwithed\nwither\nwithered\nwitherer\nwitherers\nwithering\nwitheringly\nwithers\nwithes\nwithheld\nwithhold\nwithholder\nwithholders\nwithholding\nwithholds\nwithier\nwithies\nwithiest\nwithin\nwithing\nwithins\nwithout\nwithouts\nwithstand\nwithstanding\nwithstands\nwithstood\nwithy\nwiting\nwitless\nwitlessly\nwitlessness\nwitling\nwitlings\nwitloof\nwitloofs\nwitness\nwitnessed\nwitnesses\nwitnessing\nwitney\nwitneys\nwits\nwitted\nwitticism\nwitticisms\nwittier\nwittiest\nwittily\nwittiness\nwitting\nwittingly\nwittings\nwittol\nwittols\nwitty\nwive\nwived\nwiver\nwivern\nwiverns\nwivers\nwives\nwiving\nwiz\nwizard\nwizardly\nwizardries\nwizardry\nwizards\nwizen\nwizened\nwizening\nwizens\nwizes\nwizzen\nwizzens\nwo\nwoad\nwoaded\nwoads\nwoadwax\nwoadwaxes\nwoald\nwoalds\nwobble\nwobbled\nwobbler\nwobblers\nwobbles\nwobblier\nwobblies\nwobbliest\nwobbling\nwobbly\nwobegone\nwodge\nwoe\nwoebegone\nwoebegoneness\nwoeful\nwoefuller\nwoefullest\nwoefully\nwoefulness\nwoeness\nwoenesses\nwoes\nwoesome\nwoful\nwofully\nwog\nwogs\nwok\nwoke\nwoken\nwoks\nwold\nwolds\nwolf\nwolfed\nwolfer\nwolfers\nwolffish\nwolffishes\nwolfhound\nwolfhounds\nwolfing\nwolfish\nwolfishly\nwolfishness\nwolflike\nwolfram\nwolframs\nwolfs\nwolver\nwolverine\nwolverines\nwolvers\nwolves\nwoman\nwomaned\nwomanhood\nwomaning\nwomanise\nwomanised\nwomanises\nwomanish\nwomanishly\nwomanishness\nwomanising\nwomanize\nwomanized\nwomanizer\nwomanizers\nwomanizes\nwomanizing\nwomankind\nwomanlier\nwomanliest\nwomanlike\nwomanliness\nwomanly\nwomans\nwomb\nwombat\nwombats\nwombed\nwombier\nwombiest\nwombs\nwomby\nwomen\nwomenfolk\nwomenfolks\nwomera\nwomeras\nwommera\nwommeras\nwon\nwonder\nwondered\nwonderer\nwonderers\nwonderful\nwonderfully\nwonderfulness\nwondering\nwonderland\nwonderlands\nwonderment\nwonderments\nwonders\nwonderwork\nwonderworker\nwonderworkers\nwonderworking\nwonderworks\nwondrous\nwondrously\nwondrousness\nwonk\nwonkier\nwonkiest\nwonks\nwonky\nwonned\nwonner\nwonners\nwonning\nwons\nwont\nwonted\nwontedly\nwontedness\nwonting\nwonton\nwontons\nwonts\nwoo\nwood\nwoodbin\nwoodbind\nwoodbinds\nwoodbine\nwoodbines\nwoodbins\nwoodbox\nwoodboxes\nwoodcarving\nwoodcarvings\nwoodchat\nwoodchats\nwoodchopper\nwoodchoppers\nwoodchuck\nwoodchucks\nwoodcock\nwoodcocks\nwoodcraft\nwoodcut\nwoodcuts\nwoodcutter\nwoodcutters\nwoodcutting\nwoodcuttings\nwooded\nwooden\nwoodener\nwoodenest\nwoodenly\nwoodenness\nwoodhen\nwoodhens\nwoodier\nwoodiest\nwoodiness\nwooding\nwoodland\nwoodlands\nwoodlark\nwoodlarks\nwoodless\nwoodlore\nwoodlores\nwoodlot\nwoodlots\nwoodman\nwoodmen\nwoodnote\nwoodnotes\nwoodpecker\nwoodpeckers\nwoodpile\nwoodpiles\nwoodruff\nwoodruffs\nwoods\nwoodshed\nwoodshedded\nwoodshedding\nwoodsheds\nwoodsia\nwoodsias\nwoodsier\nwoodsiest\nwoodsman\nwoodsmen\nwoodsy\nwoodwax\nwoodwaxes\nwoodwind\nwoodwinds\nwoodwork\nwoodworker\nwoodworkers\nwoodworking\nwoodworks\nwoodworm\nwoodworms\nwoody\nwooed\nwooer\nwooers\nwoof\nwoofed\nwoofer\nwoofers\nwoofing\nwoofs\nwooing\nwooingly\nwool\nwooled\nwoolen\nwoolens\nwooler\nwoolers\nwoolfell\nwoolfells\nwoolgatherer\nwoolgatherers\nwoolgathering\nwoolgatherings\nwoolie\nwoolier\nwoolies\nwooliest\nwoollen\nwoollens\nwoollier\nwoollies\nwoolliest\nwoollike\nwoolliness\nwoolly\nwoolman\nwoolmen\nwoolpack\nwoolpacks\nwools\nwoolsack\nwoolsacks\nwoolshed\nwoolsheds\nwoolskin\nwoolskins\nwooly\nwoomera\nwoomeras\nwoops\nwoorali\nwooralis\nwoorari\nwooraris\nwoos\nwoosh\nwooshed\nwooshes\nwooshing\nwoozier\nwooziest\nwoozily\nwoozy\nwop\nwops\nword\nwordage\nwordages\nwordbook\nwordbooks\nworded\nwordier\nwordiest\nwordily\nwordiness\nwording\nwordings\nwordless\nwordlessly\nwordlessness\nwordplay\nwordplays\nwords\nwordy\nwore\nwork\nworkabilities\nworkability\nworkable\nworkableness\nworkaday\nworkbag\nworkbags\nworkbasket\nworkbaskets\nworkbench\nworkbenches\nworkboat\nworkboats\nworkbook\nworkbooks\nworkbox\nworkboxes\nworkday\nworkdays\nworked\nworker\nworkers\nworkfolk\nworkhorse\nworkhorses\nworkhouse\nworkhouses\nworking\nworkingman\nworkingmen\nworkings\nworkless\nworklessness\nworkload\nworkloads\nworkman\nworkmanlike\nworkmanly\nworkmanship\nworkmen\nworkout\nworkouts\nworkplace\nworkplaces\nworkroom\nworkrooms\nworks\nworkshop\nworkshops\nworkstation\nworkstations\nworktable\nworktables\nworkup\nworkups\nworkweek\nworkweeks\nworld\nworldlier\nworldliest\nworldliness\nworldling\nworldlings\nworldly\nworlds\nworldwide\nworm\nwormed\nwormer\nwormers\nwormhole\nwormholes\nwormier\nwormiest\nwormil\nwormils\nworming\nwormish\nwormlike\nwormroot\nwormroots\nworms\nwormseed\nwormseeds\nwormwood\nwormwoods\nwormy\nworn\nwornness\nwornnesses\nworried\nworrier\nworriers\nworries\nworriment\nworriments\nworrisome\nworrisomely\nworrit\nworrited\nworriting\nworrits\nworry\nworrying\nworrywart\nworrywarts\nworse\nworsen\nworsened\nworsening\nworsens\nworser\nworses\nworset\nworsets\nworship\nworshiped\nworshiper\nworshipers\nworshipful\nworshipfully\nworshipfulness\nworshiping\nworshipped\nworshipper\nworshippers\nworshipping\nworships\nworst\nworsted\nworsteds\nworsting\nworsts\nwort\nworth\nworthed\nworthful\nworthier\nworthies\nworthiest\nworthily\nworthiness\nworthing\nworthless\nworthlessly\nworthlessness\nworths\nworthwhile\nworthy\nworts\nwos\nwost\nwot\nwots\nwotted\nwotting\nwould\nwouldest\nwouldst\nwound\nwounded\nwounding\nwoundless\nwounds\nwove\nwoven\nwow\nwowed\nwowing\nwows\nwowser\nwowsers\nwrack\nwracked\nwrackful\nwracking\nwracks\nwraith\nwraithlike\nwraiths\nwrang\nwrangle\nwrangled\nwrangler\nwranglers\nwrangles\nwrangling\nwrangs\nwrap\nwraparound\nwraparounds\nwrapped\nwrapper\nwrappers\nwrapping\nwrappings\nwraps\nwrapt\nwrasse\nwrasses\nwrastle\nwrastled\nwrastles\nwrastling\nwrath\nwrathed\nwrathful\nwrathfully\nwrathfulness\nwrathier\nwrathiest\nwrathily\nwrathing\nwraths\nwrathy\nwreak\nwreaked\nwreaker\nwreakers\nwreaking\nwreaks\nwreath\nwreathe\nwreathed\nwreathen\nwreathes\nwreathing\nwreaths\nwreathy\nwreck\nwreckage\nwreckages\nwrecked\nwrecker\nwreckers\nwreckful\nwrecking\nwreckings\nwrecks\nwren\nwrench\nwrenched\nwrenches\nwrenching\nwrens\nwrest\nwrested\nwrester\nwresters\nwresting\nwrestle\nwrestled\nwrestler\nwrestlers\nwrestles\nwrestling\nwrests\nwretch\nwretched\nwretcheder\nwretchedest\nwretchedly\nwretchedness\nwretches\nwrick\nwried\nwrier\nwries\nwriest\nwriggle\nwriggled\nwriggler\nwrigglers\nwriggles\nwrigglier\nwriggliest\nwriggling\nwriggly\nwright\nwrights\nwring\nwringed\nwringer\nwringers\nwringing\nwrings\nwrinkle\nwrinkled\nwrinkles\nwrinklier\nwrinkliest\nwrinkling\nwrinkly\nwrist\nwristband\nwristbands\nwristier\nwristiest\nwristlet\nwristlets\nwrists\nwristwatch\nwristwatches\nwristy\nwrit\nwritable\nwrite\nwriter\nwriters\nwrites\nwrithe\nwrithed\nwrithen\nwrither\nwrithers\nwrithes\nwrithing\nwriting\nwritings\nwrits\nwritten\nwrong\nwrongdoer\nwrongdoers\nwrongdoing\nwrongdoings\nwronged\nwronger\nwrongers\nwrongest\nwrongful\nwrongfully\nwrongfulness\nwronging\nwrongly\nwrongness\nwrongs\nwrote\nwroth\nwrothful\nwrought\nwrung\nwry\nwryer\nwryest\nwrying\nwryly\nwryneck\nwrynecks\nwryness\nwrynesses\nwud\nwurst\nwursts\nwurzel\nwurzels\nwych\nwyches\nwye\nwyes\nwyle\nwyled\nwyles\nwyling\nwyn\nwynd\nwynds\nwynn\nwynns\nwyns\nwyte\nwyted\nwytes\nwyting\nwyvern\nwyverns\nxanthate\nxanthates\nxanthein\nxantheins\nxanthene\nxanthenes\nxanthic\nxanthin\nxanthine\nxanthines\nxanthins\nxanthoma\nxanthomas\nxanthomata\nxanthone\nxanthones\nxanthous\nxebec\nxebecs\nxenia\nxenial\nxenias\nxenic\nxenogamies\nxenogamy\nxenogenies\nxenogeny\nxenolith\nxenolithic\nxenoliths\nxenon\nxenons\nxenophobe\nxenophobes\nxenophobia\nxenophobic\nxerarch\nxeric\nxerographic\nxerographically\nxerographies\nxerography\nxerophyte\nxerophytes\nxerophytic\nxerosere\nxeroseres\nxeroses\nxerosis\nxerotic\nxerus\nxeruses\nxi\nxiphoid\nxiphoids\nxis\nxu\nxylan\nxylans\nxylem\nxylems\nxylene\nxylenes\nxylidin\nxylidine\nxylidines\nxylidins\nxylocarp\nxylocarps\nxyloid\nxylol\nxylols\nxylophone\nxylophones\nxylophonist\nxylophonists\nxylose\nxyloses\nxylotomies\nxylotomy\nxylyl\nxylyls\nxyst\nxyster\nxysters\nxysti\nxystoi\nxystos\nxysts\nxystus\nya\nyabber\nyabbered\nyabbering\nyabbers\nyacht\nyachted\nyachter\nyachters\nyachting\nyachtings\nyachtman\nyachtmen\nyachts\nyack\nyacked\nyacking\nyacks\nyaff\nyaffed\nyaffing\nyaffs\nyager\nyagers\nyagi\nyagis\nyah\nyahoo\nyahooism\nyahooisms\nyahoos\nyaird\nyairds\nyak\nyakked\nyakking\nyaks\nyald\nyam\nyamen\nyamens\nyammer\nyammered\nyammerer\nyammerers\nyammering\nyammers\nyams\nyamun\nyamuns\nyang\nyangs\nyank\nyanked\nyanking\nyanks\nyanqui\nyanquis\nyap\nyapock\nyapocks\nyapok\nyapoks\nyapon\nyapons\nyapped\nyapper\nyappers\nyapping\nyaps\nyar\nyard\nyardage\nyardages\nyardarm\nyardarms\nyardbird\nyardbirds\nyarded\nyarding\nyardman\nyardmaster\nyardmasters\nyardmen\nyards\nyardstick\nyardsticks\nyardwand\nyardwands\nyare\nyarely\nyarer\nyarest\nyarmelke\nyarmelkes\nyarmulke\nyarmulkes\nyarn\nyarned\nyarning\nyarns\nyarrow\nyarrows\nyashmac\nyashmacs\nyashmak\nyashmaks\nyasmak\nyasmaks\nyatagan\nyatagans\nyataghan\nyataghans\nyaud\nyauds\nyauld\nyaup\nyauped\nyauper\nyaupers\nyauping\nyaupon\nyaupons\nyaups\nyaw\nyawed\nyawing\nyawl\nyawled\nyawling\nyawls\nyawmeter\nyawmeters\nyawn\nyawned\nyawner\nyawners\nyawning\nyawns\nyawp\nyawped\nyawper\nyawpers\nyawping\nyawpings\nyawps\nyaws\nyay\nyays\nycleped\nyclept\nye\nyea\nyeah\nyealing\nyealings\nyean\nyeaned\nyeaning\nyeanling\nyeanlings\nyeans\nyear\nyearbook\nyearbooks\nyearlies\nyearling\nyearlings\nyearlong\nyearly\nyearn\nyearned\nyearner\nyearners\nyearning\nyearningly\nyearnings\nyearns\nyears\nyeas\nyeast\nyeasted\nyeastier\nyeastiest\nyeastily\nyeastiness\nyeasting\nyeasts\nyeasty\nyecch\nyech\nyechs\nyechy\nyeelin\nyeelins\nyegg\nyeggman\nyeggmen\nyeggs\nyeh\nyeld\nyelk\nyelks\nyell\nyelled\nyeller\nyellers\nyelling\nyellow\nyellowed\nyellower\nyellowest\nyellowing\nyellowish\nyellowly\nyellowness\nyellows\nyellowy\nyells\nyelp\nyelped\nyelper\nyelpers\nyelping\nyelps\nyen\nyenned\nyenning\nyens\nyenta\nyentas\nyente\nyeoman\nyeomanly\nyeomanries\nyeomanry\nyeomen\nyep\nyerba\nyerbas\nyerk\nyerked\nyerking\nyerks\nyes\nyeses\nyeshiva\nyeshivah\nyeshivahs\nyeshivas\nyeshivoth\nyessed\nyesses\nyessing\nyester\nyesterday\nyesterdays\nyestern\nyesteryear\nyesteryears\nyestreen\nyestreens\nyet\nyeti\nyetis\nyett\nyetts\nyeuk\nyeuked\nyeuking\nyeuks\nyeuky\nyew\nyews\nyid\nyids\nyield\nyielded\nyielder\nyielders\nyielding\nyields\nyikes\nyill\nyills\nyin\nyince\nyins\nyip\nyipe\nyipes\nyipped\nyippee\nyippie\nyippies\nyipping\nyips\nyird\nyirds\nyirr\nyirred\nyirring\nyirrs\nyirth\nyirths\nylem\nylems\nyob\nyobbo\nyobs\nyock\nyocks\nyod\nyodel\nyodeled\nyodeler\nyodelers\nyodeling\nyodelled\nyodeller\nyodellers\nyodelling\nyodels\nyodh\nyodhs\nyodle\nyodled\nyodler\nyodlers\nyodles\nyodling\nyods\nyoga\nyogas\nyogee\nyogees\nyogh\nyoghourt\nyoghourts\nyoghs\nyoghurt\nyoghurts\nyogi\nyogic\nyogin\nyogini\nyoginis\nyogins\nyogis\nyogurt\nyogurts\nyoicks\nyok\nyoke\nyoked\nyokel\nyokeless\nyokelish\nyokels\nyokemate\nyokemates\nyokes\nyoking\nyoks\nyolk\nyolked\nyolkier\nyolkiest\nyolks\nyolky\nyom\nyomim\nyon\nyond\nyonder\nyoni\nyonic\nyonis\nyonker\nyonkers\nyore\nyores\nyou\nyoung\nyounger\nyoungers\nyoungest\nyoungish\nyoungs\nyoungster\nyoungsters\nyounker\nyounkers\nyoupon\nyoupons\nyour\nyourn\nyours\nyourself\nyourselves\nyouse\nyouth\nyouthen\nyouthened\nyouthening\nyouthens\nyouthful\nyouthfully\nyouthfulness\nyouths\nyow\nyowe\nyowed\nyowes\nyowie\nyowies\nyowing\nyowl\nyowled\nyowler\nyowlers\nyowling\nyowls\nyows\nyperite\nyperites\nytterbia\nytterbias\nytterbic\nyttria\nyttrias\nyttric\nyttrium\nyttriums\nyuan\nyuans\nyucca\nyuccas\nyucch\nyuch\nyuck\nyucks\nyucky\nyuga\nyugas\nyuk\nyukked\nyukking\nyuks\nyulan\nyulans\nyule\nyules\nyuletide\nyuletides\nyum\nyummier\nyummies\nyummiest\nyummy\nyup\nyupon\nyupons\nyurt\nyurta\nyurts\nywis\nzabaione\nzabaiones\nzabajone\nzabajones\nzacaton\nzacatons\nzaddik\nzaddikim\nzaffar\nzaffars\nzaffer\nzaffers\nzaffir\nzaffirs\nzaffre\nzaffres\nzaftig\nzag\nzagged\nzagging\nzags\nzaibatsu\nzaire\nzaires\nzamarra\nzamarras\nzamarro\nzamarros\nzamia\nzamias\nzamindar\nzamindars\nzanana\nzananas\nzander\nzanders\nzanier\nzanies\nzaniest\nzanily\nzaniness\nzaninesses\nzany\nzanyish\nzanza\nzanzas\nzap\nzapateo\nzapateos\nzapped\nzapping\nzappy\nzaps\nzaptiah\nzaptiahs\nzaptieh\nzaptiehs\nzaratite\nzaratites\nzareba\nzarebas\nzareeba\nzareebas\nzarf\nzarfs\nzariba\nzaribas\nzarzuela\nzarzuelas\nzastruga\nzastrugi\nzax\nzaxes\nzayin\nzayins\nzazen\nzeal\nzealot\nzealotries\nzealotry\nzealots\nzealous\nzealously\nzealousness\nzeals\nzeatin\nzeatins\nzebec\nzebeck\nzebecks\nzebecs\nzebra\nzebraic\nzebras\nzebrass\nzebrasses\nzebrine\nzebroid\nzebu\nzebus\nzecchin\nzecchini\nzecchino\nzecchinos\nzecchins\nzechin\nzechins\nzed\nzedoaries\nzedoary\nzeds\nzee\nzees\nzein\nzeins\nzeitgeist\nzeitgeists\nzek\nzeks\nzelkova\nzelkovas\nzemindar\nzemindars\nzemstvo\nzemstvos\nzenana\nzenanas\nzenith\nzenithal\nzeniths\nzeolite\nzeolites\nzeolitic\nzephyr\nzephyrs\nzeppelin\nzeppelins\nzero\nzeroed\nzeroes\nzeroing\nzeros\nzest\nzested\nzestful\nzestfully\nzestfulness\nzestier\nzestiest\nzesting\nzests\nzesty\nzeta\nzetas\nzeugma\nzeugmas\nzibeline\nzibelines\nzibet\nzibeth\nzibeths\nzibets\nzig\nzigged\nzigging\nziggurat\nziggurats\nzigs\nzigzag\nzigzagged\nzigzagging\nzigzags\nzikkurat\nzikkurats\nzikurat\nzikurats\nzilch\nzilches\nzill\nzillah\nzillahs\nzillion\nzillions\nzills\nzinc\nzincate\nzincates\nzinced\nzincic\nzincified\nzincifies\nzincify\nzincifying\nzincing\nzincite\nzincites\nzincked\nzincking\nzincky\nzincoid\nzincous\nzincs\nzincy\nzineb\nzing\nzingani\nzingano\nzingara\nzingare\nzingari\nzingaro\nzinged\nzingier\nzingiest\nzinging\nzings\nzingy\nzinkified\nzinkifies\nzinkify\nzinkifying\nzinky\nzinnia\nzinnias\nzip\nzipped\nzipper\nzippered\nzippering\nzippers\nzippier\nzippiest\nzipping\nzippy\nzips\nziram\nzirams\nzircon\nzirconia\nzirconias\nzirconic\nzirconium\nzircons\nzit\nzither\nzitherist\nzitherists\nzithern\nzitherns\nzithers\nziti\nzitis\nzits\nzizit\nzizith\nzizzle\nzizzled\nzizzles\nzizzling\nzlote\nzloty\nzlotys\nzoa\nzoaria\nzoarial\nzoarium\nzodiac\nzodiacal\nzodiacs\nzoea\nzoeae\nzoeal\nzoeas\nzoftig\nzoic\nzoisite\nzoisites\nzombi\nzombie\nzombies\nzombiism\nzombiisms\nzombis\nzonal\nzonally\nzonary\nzonate\nzonated\nzonation\nzonations\nzone\nzoned\nzoneless\nzoner\nzoners\nzones\nzonetime\nzonetimes\nzoning\nzonk\nzonked\nzonks\nzonula\nzonulae\nzonular\nzonulas\nzonule\nzonules\nzoo\nzoochore\nzoochores\nzoogenic\nzoogeographer\nzoogeographers\nzoogeographic\nzoogeographical\nzoogeographically\nzoogeography\nzooglea\nzoogleae\nzoogleal\nzoogleas\nzoogloea\nzoogloeae\nzoogloeas\nzooid\nzooidal\nzooids\nzooks\nzoolater\nzoolaters\nzoolatries\nzoolatry\nzoologic\nzoological\nzoologically\nzoologies\nzoologist\nzoologists\nzoology\nzoom\nzoomania\nzoomanias\nzoomed\nzoometries\nzoometry\nzooming\nzoomorph\nzoomorphs\nzooms\nzoon\nzoonal\nzoonoses\nzoonosis\nzoonotic\nzoons\nzoophile\nzoophiles\nzoophyte\nzoophytes\nzoos\nzoosperm\nzoosperms\nzoospore\nzoospores\nzootomic\nzootomies\nzootomy\nzori\nzoril\nzorilla\nzorillas\nzorille\nzorilles\nzorillo\nzorillos\nzorils\nzoris\nzoster\nzosters\nzouave\nzouaves\nzounds\nzowie\nzoysia\nzoysias\nzucchetto\nzucchettos\nzucchini\nzucchinis\nzwieback\nzwiebacks\nzygoma\nzygomas\nzygomata\nzygose\nzygoses\nzygosis\nzygosities\nzygosity\nzygote\nzygotene\nzygotenes\nzygotes\nzygotic\nzymase\nzymases\nzyme\nzymes\nzymogen\nzymogene\nzymogenes\nzymogens\nzymologies\nzymology\nzymoses\nzymosis\nzymotic\nzymurgies\nzymurgy\nzyzzyva\nzyzzyvas\n"
  },
  {
    "path": "Library/resources/Makefile",
    "content": "# Quick and dirty Makefile to generate qrc file from set of image files\n# for use as library resource package\n#\n# @author Julie Zelenski\n# @version 2019/11/05\n\nQRC_FILE = generated.qrc\nPRODUCTS = $(QRC_FILE)\n\nall:: $(PRODUCTS)\n\nglob_img = $(wildcard $(1)/*.gif) $(wildcard $(1)/*.png)\n\n# argument is output, prefix, directory of files, path\ndefine jz\n\t@echo '<qresource prefix=\"$2\">' >>$1\n\t@$(foreach f, $(call glob_img,$3), echo '<file alias=\"$(notdir $(basename $f))\">$4$(notdir $f)</file>' >>$1;)\n\t@echo \"</qresource>\"  >>$1\nendef\n\n$(QRC_FILE):\n\t\t@rm -f $@\n\t\t@echo \"<!DOCTYPE RCC><RCC version=\\\"1.0\\\">\" >> $@\n\t\t$(call jz,$@,/,.,images/)\n\t\t@echo \"</RCC>\" >> $@\n\t\t@echo \"Wrote resource file\" $@\n\t\tcat $@\n\nclean::\n\trm -rf $(PRODUCTS)\n\n.PHONY: all clean\n"
  },
  {
    "path": "Library/spl_version.in",
    "content": "$$SPL_VERSION\n"
  },
  {
    "path": "Library/stanfordtypes.py",
    "content": "# stanfordtypes.py   version 2025.5\n#\n# v 2025.5 monkey patch thread select during step\n#\n# v 2025.4 fix Vector/Stack/Grid on macOS, field renamed\n#\n# v 2025.3 adds handling of typedef to alignment fix\n#\n# Debug helpers seem to now be correct for all Stanford types,\n# tested on Qt 6.9.2 macOS arm, macOS x86, and windows x86\n#\n# Debugging helpers for the CS106B classes (Vector, Stack, Set, Map, etc.)\n# Some code adopted from stdtypes.py distributed with Qt Creator\n#\n# @author Jeremy Barenholtz 2020, created\n# @author Julie Zelenski, updated 2020-\n#\nfrom dumper import Children, SubItem\nfrom functools import partial\n\n#############################\n# Element Display Functions #\n#############################\n\n# These functions, named `add_<type>_elem`, control how the elements of each\n# class get displayed in the debug window.\n#\n# You should only adjust these functions if you wish to change the display\n# format. To understand the relevant code, fire up the debugger to view your\n# desired class, and look at the related add element function here; you should\n# be able to see how the code corresponds to what is displayed.\n\ndef add_map_elem(d, i, key, value):\n    \"\"\"Adds an element of a map to the debugger display.\"\"\"\n\n    putPairItem(d, i, key, value, 'key', 'value', compact=True)\n\n\ndef add_set_elem(d, i, key, value):\n    \"\"\"Adds an element of a set to the debugger display.\"\"\"\n\n    # Our Sets stored as map of key,val pairs where val is always true\n    # ignore this value and don't display\n    d.putSubItem('-', key)\n\n\n# Currently only used by Vector\ndef add_indexed_elem(d, i, size, value):\n    \"\"\"Adds an element of an indexed container to the debugger display.\"\"\"\n\n    d.putSubItem(i, value)\n\n\ndef add_pq_elem(d, i, size, pq_entry):  # pq_entry struct\n    \"\"\"Adds an element of a priority queue to the debugger display.\"\"\"\n\n    priority = pq_entry['priority']\n    value = pq_entry['value']\n    putPairItem(d, i, value, priority, 'value', 'priority', compact=False)\n\n\ndef add_stack_elem(d, i, size, value):\n    \"\"\"Adds an element of a stack to the debugger display.\"\"\"\n\n    if i == size - 1:\n        name = 'top'\n    else:\n        name = '-'\n\n    d.putSubItem(name, value)\n\n\ndef add_queue_elem(d, i, size, value):\n    \"\"\"Adds an element of a queue to the debugger display.\"\"\"\n\n    if size == 1:\n        name = 'front/back'\n    elif i == 0:\n        name = 'front'\n    elif i == size - 1:\n        name = 'back'\n    else:\n        name = '-'\n\n    d.putSubItem(name, value)\n\n\n# This function takes in an extra `ncols` parameter. Look at `qdump__Grid` for\n# an example of how you can add parameters to these functions.\ndef add_grid_elem(d, i, size, value, ncols):\n    \"\"\"Adds an element of a grid to the debugger display.\"\"\"\n\n    name = f\"[{i//ncols}][{i%ncols}]\"\n    d.putSubItem(name, value)\n\n\n# The existing Dumper.putPairItem is somewhat broken, we replace with our own\n# version that works correctly for our paired collections (Map/HashMap/PriorityQueue)\n# The \"compact\" form uses val1 as top-level summary, makes val2 a single child of val1\n# non-compact has blank summary, val1 & val2 are both children of top-level\n# only attempts compact if val1 has simple display. Mostly this would translate to having\n# no children (and thus not needed expansion) but that info is hard to come by in a reliable\n# way. The code below accepts primitive types and makes special case for other types\n# know to have simple display (GridLocation/GridLocationRange and std::string)\n\nbasic_types = ['std__basic_string', 'std____1__basic_string', 'std____cxx11__basic_string']\nSTR_TYPES = basic_types + [s.replace('basic_', '') for s in basic_types]\n\ndef is_std_string(d, type):\n    nsStrippedType = d.stripNamespaceFromType(type.name).replace('::', '__')\n    return nsStrippedType in STR_TYPES\n\ndef has_simple_display(d, type):\n    return type.isSimpleType() or type.name in ['GridLocation', 'GridLocationRange'] or is_std_string(d, type)\n\ndef putPairItem(d, i, val1, val2, name1, name2, compact):\n    compact = compact and has_simple_display(d, val1.type)\n    with SubItem(d, i):\n        d.putExpandable()\n        if d.isExpanded():\n            with Children(d):\n                if not compact: d.putSubItem(f\"{name1}\", val1)\n                d.putSubItem(f\"{name2}\", val2)\n        if compact:\n            d.putField('key', name1)\n            d.putItem(val1)\n        else:\n            d.putField('key', '...')\n            d.putNoType()\n            d.putEmptyValue()\n\n#####################################\n# Stanford Library Dumper Functions #\n#####################################\n\n# These functions, named `qdump__<class>`, are called with the underlying data\n# for a variable of the corresponding type.\n#\n# You can change the displayed type with `d.putBetterType('<new_type>')`. See\n# `qdump__stanfordcpplib__collections__GenericSet` for an example of that.\n# All formatting of the elements should be set using the add element functions\n# above.\n\n\ndef qdump__Set(d, value):\n    \"\"\"Display Stanford Set on debugger.\"\"\"\n\n    # Grab the internal data from Set > MapType > std::map\n    value = value['_map']['_elements']\n    map_helper(d, value, elem_fn=add_set_elem)\n\n\ndef qdump__stanfordcpplib__collections__GenericSet(d, value):\n    \"\"\"Display Stanford Set or HashSet when dumped as GenericSet (Windows).\"\"\"\n\n    # Grab the internal data from the Set > MapType > std::map\n    # or std::unordered_map for HashSets\n\n    value = value['_map']['_elements']\n    if \"unordered\" in value.type.name:\n        unordered_map_helper(d, value, elem_fn=add_set_elem)\n        cls = \"HashSet\"\n    else:\n        map_helper(d, value, elem_fn=add_set_elem)\n        cls = \"Set\"\n\n    inner_type = value.type[0].name\n    d.putBetterType('%s<%s>' % (cls, inner_type))\n\n\ndef qdump__Stack(d, value):\n    \"\"\"Display Stanford Stack on debugger.\"\"\"\n\n    # Grab the internal data from Stack > Vector > std::{vector, deque}\n    value = value['_elements']['_elements']\n    vector_or_deque_helper(d, value, elem_fn=add_stack_elem)\n\n\ndef qdump__Queue(d, value):\n    \"\"\"Display Stanford Queue on debugger.\"\"\"\n\n    # Grab the internal data from Queue > Deque > std::deque\n    value = value['_elements']['_elements']\n    deque_helper(d, value, elem_fn=add_queue_elem)\n\n\ndef qdump__PriorityQueue(d, value):\n    \"\"\"Display Stanford PriorityQueue on debugger.\"\"\"\n\n    # Grab the internal data from PriorityQueue > Vector > std::vector\n    value = value['_heap']['_elements']\n    vector_helper(d, value, elem_fn=add_pq_elem)\n\n\ndef qdump__Deque(d, value):\n    \"\"\"Display Stanford Deque on debugger.\"\"\"\n\n    # Grab the internal data from Deque > std::deque\n    value = value['_elements']\n    deque_helper(d, value, elem_fn=add_queue_elem)\n\n\ndef qdump__Map(d, value):\n    \"\"\"Display Stanford Map on debugger.\"\"\"\n\n    # Grab the internal data from Map > std::map\n    value = value['_elements']\n    map_helper(d, value, elem_fn=add_map_elem)\n\n\ndef qdump__Vector(d, value):\n    \"\"\"Display Stanford Vector on debugger.\"\"\"\n\n    # Grab the internal data from Vector > std::vector\n    value = value['_elements']\n    vector_or_deque_helper(d, value, elem_fn=add_indexed_elem)\n\n\ndef qdump__Grid(d, value):\n    \"\"\"Display Stanford Grid on debugger.\"\"\"\n\n    rows = value['_rowCount'].integer()\n    cols = value['_columnCount'].integer()\n\n    # Grab the internal data from the Grid > Vector > std::vector\n    value = value['_elements']['_elements']\n    vector_or_deque_helper(d, value, elem_fn=partial(add_grid_elem, ncols=cols))\n\n\ndef location_str(value):\n    row = value['row'].integer()\n    col = value['col'].integer()\n    return f\"r{row}c{col}\"\n\n\ndef put_all_fields(d, value):\n    d.putExpandable()  # Show the rest of the fields as usual\n    if d.isExpanded():\n        with Children(d):\n            d.putFields(value)\n\n\ndef qdump__GridLocation(d, value):\n    \"\"\"Display Stanford GridLocation on debugger.\"\"\"\n    d.putValue(location_str(value))\n\n\ndef qdump__GridLocationRange(d, value):\n    \"\"\"Display Stanford GridLocationRange on debugger.\"\"\"\n    start = location_str(value['_start'])\n    end = location_str(value['_end'])\n    d.putValue(f\"{start} .. {end}\")\n\n\ndef qdump__HashMap(d, value):\n    \"\"\"Display Stanford HashMap on debugger.\"\"\"\n    value = value['_elements']  # Grab the internal map from HashMap > std::unordered_map\n    unordered_map_helper(d, value, elem_fn=add_map_elem)\n\n\ndef qdump__HashSet(d, value):\n    \"\"\"Display Stanford HashSet on debugger.\"\"\"\n    value = value['_map']['_elements']  # Grab the internal map from HashMap > std::unordered_map\n    unordered_map_helper(d, value, elem_fn=add_set_elem)\n\n\ndef qdump__Bit(d, value):\n    \"\"\"Display Huffman Bit on debugger.\"\"\"\n    bit = value['_value'].integer()\n    bitstr = \"1\" if bit else \"0\"\n    d.putValue(bitstr)\n\n\n####################\n# Helper Functions #\n####################\n\n\ndef vector_or_deque_helper(d, value, elem_fn):\n    \"\"\"Wrapper for dumping vectors or deque in the bool case.\"\"\"\n\n    # If the inner type is bool, container is actually a std::deque, not vector\n    inner_type = value.type[0]\n    if inner_type.name == 'bool':\n        deque_helper(d, value, elem_fn)\n    else:\n        vector_helper(d, value, elem_fn)\n\n\ndef vector_helper(d, value, elem_fn):\n    \"\"\"Dumps the internal vector for Vector, Stack, PriorityQueue, and Grid.\n       Adapted from qdumpHelper__std__vector__libstdcxx,  qdumpHelper__std__vector__libcxx\"\"\"\n\n    inner_type = value.type[0]\n    is_bool = inner_type.name == 'bool'\n\n    # Check if compiled with libstdc++ or libc++\n    class_is_lib_cpp = is_lib_cpp(value)\n\n    if is_bool:\n        if class_is_lib_cpp:\n            start = value[\"__begin_\"].pointer()\n            size = value[\"__size_\"].integer()  # JDZ extract integer value\n            alloc = size\n        else:\n            start = value[\"_M_start\"][\"_M_p\"].pointer()\n            soffset = value[\"_M_start\"][\"_M_offset\"].integer()\n            finish = value[\"_M_finish\"][\"_M_p\"].pointer()\n            foffset = value[\"_M_finish\"][\"_M_offset\"].integer()\n            alloc = value[\"_M_end_of_storage\"].pointer()\n            size = (finish - start) * 8 + foffset - soffset  # 8 is CHAR_BIT.\n    else:\n        if class_is_lib_cpp:\n            start = value[\"__begin_\"].pointer()\n            finish = value[\"__end_\"].pointer()\n            # try to find capacity, field name may be __end_cap_ (used in past) or __cap_ (more recent)\n            if \"__end_cap_\" in value:\n                alloc = value[\"__end_cap_\"].pointer()\n            elif \"__cap_\" in value:\n                alloc = value[\"__cap_\"].pointer()\n            else:\n                alloc = finish   # assume allocated to size as default\n        else:\n            start = value[\"_M_start\"].pointer()\n            finish = value[\"_M_finish\"].pointer()\n            alloc = value[\"_M_end_of_storage\"].pointer()\n        size = int((finish - start) / inner_type.size())\n        d.check(finish <= alloc)\n        if size > 0:\n            d.checkPointer(start)\n            d.checkPointer(finish)\n            d.checkPointer(alloc)\n\n    d.check(0 <= size and size <= 1000 * 1000 * 1000)\n    d.putItemCount(size)\n    if d.isExpanded():\n        if is_bool:\n            with Children(d, size, maxNumChild=1000,\n                    childType=inner_type):\n                for i in d.childRange():\n                    q = start + int(i / 8)\n                    with SubItem(d, i):\n                        # std::vector<bool> stores elements as special\n                        # bit-array, so we read each bit and convert from\n                        # {0, 1} -> {false, true}\n                        val = (int(d.extractPointer(q)) >> (i % 8)) & 1\n                        d.putValue(val != 0)\n        else:\n            d.checkIntType(start)\n            d.checkIntType(size)\n            addr_base = start\n            inner_size = inner_type.size()\n            d.putNumChild(size)\n            with Children(d, size, inner_type, None, maxNumChild=1000,\n                      addrBase=addr_base, addrStep=inner_size):\n                for i in d.childRange():\n                    value = d.createValue(addr_base + i * inner_size,\n                                          inner_type)\n                    elem_fn(d, i, size, value)\n\n\ndef deque_helper(d, value, elem_fn):\n    \"\"\"Wrapper for dumping deques.\"\"\"\n\n    # Check if compiled with libstdc++ or libc++\n    if is_lib_cpp(value):\n        deque_helper_libcpp(d, value, elem_fn)\n    else:\n        deque_helper_libstd(d, value, elem_fn)\n\n\ndef deque_helper_libcpp(d, value, elem_fn):\n    \"\"\"Dumps the deque for containers of bools or Queue for libc++.\n       Adapted from qdumpHelper__std__deque__libcxx in stdtypes.py\"\"\"\n\n    mptr, mfirst, mbegin, mend, start, size = value.split(\"pppptt\")\n    d.check(0 <= size and size <= 1000 * 1000 * 1000)\n    d.putItemCount(size)\n    if d.isExpanded():\n        innerType = value.type[0]\n        innerSize = innerType.size()\n        ptrSize = d.ptrSize()\n        bufsize = (4096 // innerSize) if innerSize < 256 else 16\n        with Children(d, size, maxNumChild=1000, childType=innerType):\n            for i in d.childRange():\n                k, j = divmod(start + i, bufsize)\n                base = d.extractPointer(mfirst + k * ptrSize)\n                value = d.createValue(base + j * innerSize, innerType)\n                elem_fn(d, i, size, value)\n\n\ndef deque_helper_libstd(d, value, elem_fn):\n    \"\"\"Dumps the deque for containers of bools or Queue for libstdc++.\n        Adapted from qdumpHelper__std__deque__libstdcxx in stdtypes.py\"\"\"\n\n    innerType = value.type[0]\n    innerSize = innerType.size()\n    bufsize = 1\n    if innerSize < 512:\n        bufsize = 512 // innerSize\n\n    (mapptr, mapsize, startCur, startFirst, startLast, startNode,\n    finishCur, finishFirst, finishLast, finishNode) = value.split(\"pppppppppp\")\n\n    size = bufsize * ((finishNode - startNode) // d.ptrSize() - 1)\n    size += (finishCur - finishFirst) // innerSize\n    size += (startLast - startCur) // innerSize\n\n    d.check(0 <= size and size <= 1000 * 1000 * 1000)\n    d.putItemCount(size)\n    if d.isExpanded():\n        with Children(d, size, maxNumChild=1000, childType=innerType):\n            pcur = startCur\n            plast = startLast\n            pnode = startNode\n            for i in d.childRange():\n                value = d.createValue(pcur, innerType)\n                elem_fn(d, i, size, value)\n                pcur += innerSize\n                if pcur == plast:\n                    newnode = pnode + d.ptrSize()\n                    pfirst = d.extractPointer(newnode)\n                    plast = pfirst + bufsize * d.ptrSize()\n                    pcur = pfirst\n                    pnode = newnode\n\n\ndef unordered_map_helper(d, value, elem_fn):\n    \"\"\"Wrapper for dumping unordered maps.\"\"\"\n\n    if is_lib_cpp(value):\n        unordered_map_helper_libcpp(d, value, elem_fn)\n    else:\n        unordered_map_helper_libstd(d, value, elem_fn)\n\n\ndef unordered_map_helper_libcpp(d, value, elem_fn):\n    \"\"\"Dumps the unordered_map for HashSet and HashMap for libc++.\n       Adapted from qdump__std____1__unordered_map in libcpp_stdtypes.py\"\"\"\n\n    size = value[\"__table_\"][\"__size_\"].integer() # 12/2025 field access change macos clang\n    d.putItemCount(size)\n\n    if d.isExpanded():\n        keyType = value.type[0]\n        valueType = value.type[1]\n        pairType = value.type[4][0]\n\n        # 9/2025 JDZ see comment on ordered_map_helper_libcpp about alignment fix\n        valAlign = my_type_alignment(d, valueType.typeid)\n        pairAlign = my_type_alignment(d, pairType.typeid)\n        node_fmt = \"pp%d@{%s}%d@{%s}\" % (pairAlign, keyType.name, valAlign, valueType.name)\n        # [next][prev][pad][key(aligned)][pad][val(aligned)]\n\n        first = value[\"__table_\"][\"__first_node_\"].pointer() # 12/2025 field access change macos clang\n        def traverse_list(node):\n            while node:\n                (next_,_,_,k,_,v) = d.split(node_fmt, node)\n                yield (k, v)\n                node = next_\n        with Children(d, size, maxNumChild=1000):  # JDZ removed childType=value.type[0],\n            for (i, pair) in zip(d.childRange(), traverse_list(first)):\n                elem_fn(d, i, pair[0], pair[1])\n\n\ndef unordered_map_helper_libstd(d, value, elem_fn):\n    \"\"\"Dumps the unordered_map for HashSet and HashMap for libstdc++.\n       Adapted from qdump__std__unordered_map in stdtypes.py\"\"\"\n\n    try:\n        # gcc ~= 4.7\n        size = value[\"_M_element_count\"].integer()\n        start = value[\"_M_before_begin\"][\"_M_nxt\"]\n    except:\n        try:\n            # libc++ (Mac)\n            size = value[\"_M_h\"][\"_M_element_count\"].integer()\n            start = value[\"_M_h\"][\"_M_bbegin\"][\"_M_node\"][\"_M_nxt\"]\n        except:\n            try:\n                # gcc 4.9.1\n                size = value[\"_M_h\"][\"_M_element_count\"].integer()\n                start = value[\"_M_h\"][\"_M_before_begin\"][\"_M_nxt\"]\n            except:\n                # gcc 4.6.2\n                size = value[\"_M_element_count\"].integer()\n                start = value[\"_M_buckets\"].dereference()\n                # FIXME: Pointer-aligned?\n                d.putItemCount(size)\n                # We don't know where the data is\n                d.putNumChild(0)\n                return\n\n    d.putItemCount(size)\n    if d.isExpanded():\n        keyType = value.type[0]\n        valueType = value.type[1]\n        if d.isMsvcTarget():\n            typeCode = 'pp@{%s}@{%s}' % (keyType.name, valueType.name)\n            p = d.extractPointer(start)\n        else:\n            typeCode = 'p@{%s}@{%s}' % (keyType.name, valueType.name)\n            p = start.pointer()\n        with Children(d, size):\n            for i in d.childRange():\n                if d.isMsvcTarget():\n                    p,_,_,key,_,val = d.split(typeCode, p)\n                else:\n                    p,_,key,_,val = d.split(typeCode, p)\n                elem_fn(d, i, key, val)\n\ndef map_helper(d, value, elem_fn):\n    \"\"\"Wrapper for dumping maps.\"\"\"\n\n    if is_lib_cpp(value):\n        map_helper_libcpp(d, value, elem_fn)\n    else:\n        map_helper_libstd(d, value, elem_fn)\n\nfrom utils import TypeCode\n\ndef my_type_alignment(d, typeid):\n    # 9/2025 JDZ calculation of alignment for struct is broken in Dumper.nativeStructAlignment\n    # (iterates over get_fields_array when should instead get_members_array)\n    # code below does correct iteration to compute alignment and overwrites bad value in cache\n    # We should remove this code when/if Qt version is corrected (although leaving it in\n    # should act as no-op)\n    orig = d.type_alignment(typeid)\n    code = d.type_code_cache.get(typeid, None)\n    if code == TypeCode.Typedef:\n        target = d.type_target(typeid)\n        return my_type_alignment(d, target)\n    elif code == TypeCode.Struct:\n        align = 1\n        for m in d.type_nativetype(typeid).get_members_array():\n            mtypeid = d.from_native_type(m.type)\n            align = max(my_type_alignment(d, mtypeid), align)\n        if orig != align:\n            d.type_alignment_cache[typeid] = align # update cache so correct for all\n            return align\n    return orig\n\ndef map_helper_libcpp(d, value, elem_fn):\n    \"\"\"Dumps the internal map for Set or Map for libc++.\n       Adapted from qdump__std____1__map in libcpp_stdtypes.py\"\"\"\n\n    try:\n        (proxy, head, size) = value.split(\"ppp\")\n        d.check(0 <= size and size <= 100 * 1000 * 1000)\n\n    # Sometimes there is extra data at the front. Don't know why at the moment.\n    except RuntimeError:\n        (junk, proxy, head, size) = value.split(\"pppp\")\n        d.check(0 <= size and size <= 100 * 1000 * 1000)\n\n    d.putItemCount(size)\n\n    if d.isExpanded():\n        keyType = value.type[0]\n        valueType = value.type[1]\n        pairType = value.type[3][0]\n        # 9/2025 JDZ ugh compressed_pair still does not report correct align\n        # Qt update tried to fix but got it wrong for inherited class\n        valAlign = my_type_alignment(d, valueType.typeid)\n        pairAlign = my_type_alignment(d, pairType.typeid)\n        node_fmt = \"pppB%d@{%s}%d@{%s}\" % (pairAlign, keyType.name, valAlign, valueType.name)\n        # [left][right][parent][bool_is_black][pad][key(aligned)][pad][val(aligned)]\n\n        def in_order_traversal(node):\n            (left,right,_,_,_,k,_,v) = d.split(node_fmt, node)\n            if left:\n                for res in in_order_traversal(left):\n                    yield res\n            yield (k, v)\n            if right:\n                for res in in_order_traversal(right):\n                    yield res\n        with Children(d, size, maxNumChild=1000):\n            for (i, pair) in zip(d.childRange(), in_order_traversal(head)):\n                elem_fn(d, i, pair[0], pair[1])\n\n\ndef map_helper_libstd(d, value, elem_fn):\n    \"\"\"Dumps the internal map for Set or Map for libstdc++.\n       Adapted from qdump__std__map in stdtypes.py\"\"\"\n\n    # stuff is actually (color, pad) with 'I@', but we can save cycles/\n    (compare, stuff, parent, left, right) = value.split('ppppp')\n    size = value[\"_M_t\"][\"_M_impl\"][\"_M_node_count\"].integer()\n    d.check(0 <= size and size <= 100 * 1000 * 1000)\n    d.putItemCount(size)\n\n    if d.isExpanded():\n        keyType = value.type[0]\n        valueType = value.type[1]\n        with Children(d, size, maxNumChild=1000):\n            node = value[\"_M_t\"][\"_M_impl\"][\"_M_header\"][\"_M_left\"]\n            nodeSize = node.dereference().type.size()\n            typeCode = \"@{%s}@{%s}\" % (keyType.name, valueType.name)\n            for i in d.childRange():\n                (pad1, key, pad2, value) = d.split(typeCode, node.pointer() + nodeSize)\n                elem_fn(d, i, key, value)\n                if node[\"_M_right\"].pointer() == 0:\n                    parent = node[\"_M_parent\"]\n                    while True:\n                        if node.pointer() != parent[\"_M_right\"].pointer():\n                            break\n                        node = parent\n                        parent = parent[\"_M_parent\"]\n                    if node[\"_M_right\"] != parent:\n                        node = parent\n                else:\n                    node = node[\"_M_right\"]\n                    while True:\n                        if node[\"_M_left\"].pointer() == 0:\n                            break\n                        node = node[\"_M_left\"]\ndef is_lib_cpp(value):\n    \"\"\"Returns whether the class is from libc++.\"\"\"\n    return value.type.name.startswith('std::__1')\n\n\n# 9/2024 JDZ another patch to fix std::string on latest clang, ugh.\n# need reroute from alternate name to existing dumper\n\nfrom libcpp_stdtypes import qdump__std____1__string\n\ndef qdump__std____1__basic_string(d, value):\n    qdump__std____1__string(d, value)\n\n\n# 10/2025 JDZ\n# lldbbridge often mis-identifies current thread when stepping\n# (it picks first thread that is stopped for any reason)\n# Instead should first look for thread at plan complete. If none found,\n# then consider other stopped threads\n# The replacement function below works as it should\n# We monkey patch it into lldbbridge as replacement\n# Entire process is under try/except so as to gracefully\n# cope when something we depend on changes\ntry:\n    import lldb\n\n    def origfirstStoppedThread(self):\n        for i in range(0, self.process.GetNumThreads()):\n            thread = self.process.GetThreadAtIndex(i)\n            reason = thread.GetStopReason()\n            if (reason == lldb.eStopReasonBreakpoint or\n                    reason == lldb.eStopReasonException or\n                    reason == lldb.eStopReasonPlanComplete or\n                    reason == lldb.eStopReasonSignal or\n                    reason == lldb.eStopReasonWatchpoint):\n                return thread\n        return None\n\n    def findSteppingThread(self):\n        for i in range(0, self.process.GetNumThreads()):\n            thread = self.process.GetThreadAtIndex(i)\n            reason = thread.GetStopReason()\n            if reason == lldb.eStopReasonPlanComplete:\n                return thread\n        return origfirstStoppedThread(self)\n\n\n    from lldbbridge import Dumper\n    Dumper.firstStoppedThread = findSteppingThread\n    print(f\"SPL did monkey-patch thread step\")\nexcept Exception as e:\n    print(f\"SPL was not able to monkey-patch thread step (Reason: {e})\")\n"
  },
  {
    "path": "Library/system/error.cpp",
    "content": "/*\n * File: error.cpp\n * ---------------\n * Implementation of the error function.\n *\n * @version 2016/11/23\n * - added operator << to print ErrorExceptions\n * @version 2014/10/08\n * - removed 'using namespace' statement\n */\n\n#include \"error.h\"\n#include <sstream>\n\n/* Definitions for the ErrorException class */\n\nErrorException::ErrorException(std::string msg)\n        : _kind(\"error\") {\n    _msg = msg;\n}\n\nstd::string ErrorException::getKind() const {\n    return _kind;\n}\n\nstd::string ErrorException::getMessage() const {\n    return _msg;\n}\n\nvoid ErrorException::setKind(const std::string& kind) {\n    _kind = kind;\n}\n\nconst char* ErrorException::what() const noexcept {\n    // stepp : The original \"Error: \" prefix is commented out here,\n    // because in many error cases, the attempt to do the string concatenation\n    // ends up garbling the string and leading to garbage exception text\n    // return (\"Error: \" + msg).c_str();\n    return _msg.c_str();\n}\n\nstd::ostream& operator <<(std::ostream& out, const ErrorException& ex) {\n    out << \"ErrorException: \" << ex.what();\n    return out;\n}\n\n/*\n * Implementation notes: error\n * ---------------------------\n * Earlier implementations of error made it possible, at least on the\n * Macintosh, to help the debugger generate a backtrace at the point\n * of the error.  Unfortunately, doing so is no longer possible if\n * the errors are catchable.\n */\n\n/* [[noreturn]] */ void error(const std::string& msg) {\n    throw ErrorException(msg);\n}\n"
  },
  {
    "path": "Library/system/error.h",
    "content": "/*\n * File: error.h\n * -------------\n * This file defines the <code>ErrorException</code> class and the\n * <code>error</code> function.\n *\n * @version 2018/10/18\n * - added getKind for ErrorExceptions that wrap other types of errors\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2017/11/29\n * - fix for undefined SIGUSR1 on Windows systems\n * @version 2016/11/29\n * - changed error() to accept const string& instead of string\n * @version 2016/11/23\n * - added operator << to print ErrorExceptions\n */\n\n\n#ifndef _error_h\n#define _error_h\n\n#include <csignal>\n#include <exception>\n#include <iostream>\n#include <string>\n\n// bug fix for missing signals on some Windows systems\n#ifndef SIGUSR1\n#define SIGUSR1 10\n#endif // SIGUSR1\n\n/**\n * This exception is thrown by calls to the <code>error</code>\n * function.  Typical code for catching errors looks like this:\n *\n *<pre>\n *    try {\n *       ... code in which an error might occur ...\n *    } catch (ErrorException& ex) {\n *       ... code to handle the error condition ...\n *    }\n *</pre>\n *\n * If an <code>ErrorException</code> is thrown at any point in the\n * range of the <code>try</code> (including in functions called from\n * that code), control will jump immediately to the error handler.\n */\nclass ErrorException : public std::exception {\npublic:\n    /**\n     * Creates a new ErrorException with the given error message.\n     */\n    ErrorException(std::string msg);\n\n    /**\n     * Frees any memory allocated by the exception.\n     */\n    virtual ~ErrorException() noexcept = default;\n\n    /**\n     * Returns what kind of exception this is.\n     * In general this returns \"error\", but in some cases we catch other kinds\n     * of exceptions (like thrown ints or strings) and wrap them up as\n     * ErrorExceptions. In such cases, the kind will be \"int\" or \"string\" etc.\n     */\n    virtual std::string getKind() const;\n\n    /**\n     * Returns the exception's error message as passed to its constructor.\n     */\n    virtual std::string getMessage() const;\n\n    /**\n     * Sets what kind of exception this is.\n     * Default is \"error\".\n     */\n    void setKind(const std::string& kind);\n\n    /**\n     * Returns the exception's error message as a C string.\n     */\n    virtual const char* what() const noexcept;\n\nprivate:\n    std::string _kind;\n    std::string _msg;\n};\n\n/**\n * Prints the error exception to the given output stream.\n */\nstd::ostream& operator <<(std::ostream& out, const ErrorException& ex);\n\n/**\n * Signals an error condition in a program by throwing an\n * <code>ErrorException</code> with the specified message.\n */\n[[noreturn]] void error(const std::string& msg);\n\n#endif // _error_h\n"
  },
  {
    "path": "Library/system/exceptions.cpp",
    "content": "/*\n * File: exceptions.cpp\n * --------------------\n * This file contains a top-level exception handler to print exceptions thrown\n * by student code on the console.\n *\n * @author Julie Zelenski\n * @version 2020/08/28\n * - stack trace harvesting removed, consolidate handling of fatal errors\n * @author Marty Stepp\n * @version 2019/05/16\n * - added more function names to filter from stack trace\n * @version 2019/04/16\n * - filter Qt/std thread methods from stack trace\n * @version 2019/04/02\n * - small fix for warning about -Wreturn-std-move on string exception\n * @version 2018/10/18\n * - added set_unexpected handler (used by autograders when errors are thrown)\n * - added some new function names to filter from stack traces\n * @version 2018/09/27\n * - bug fixes to print better stack traces when used with threads\n * @version 2018/09/25\n * - modify setTopLevelExceptionHandlerEnabled to work better with threads\n * @version 2016/12/23\n * - added more function names for stack trace filtering (mainly thread stuff)\n * @version 2016/12/09\n * - added insertStarsBeforeEachLine\n * @version 2016/11/07\n * - added cleanupFunctionNameForStackTrace\n * - slight refactor of shouldFilterOutFromStackTrace\n * @version 2016/10/30\n * - moved recursion functions to recursion.h/cpp\n * @version 2016/10/04\n * - removed all static variables (replaced with STATIC_VARIABLE macros)\n * @version 2016/08/02\n * - added some new cxx11 filters to stack traces\n * - fixed spacing on *** messages from exception handlers\n * @version 2015/10/13\n * - bug fix in terminate handler to turn off signal handler at end\n * @version 2015/05/28\n * - tiny bug fix to exception stack trace printing format on Windows\n * @version 2014/11/19\n * - disabled SetThreadErrorMode to avoid compiler errors on Windows systems\n * @version 2014/11/18\n * - fixed minor bug with filtering out nested <> template args from stack traces\n * @version 2014/11/14\n * - fixed bug with SIGABRT handling in autograder mode (was muffling unit test failures)\n * @version 2014/11/12\n * - made printStackTrace function publicly available\n * - added top-level signal handler (for null-pointer derefs etc.)\n * @since 2014/11/05\n */\n\n#include \"exceptions.h\"\n#include <csignal>\n#include <string>\n#include \"error.h\"\n#include \"strlib.h\"\n#include \"private/static.h\"\n#include \"qtgui.h\"\n#include <QCoreApplication> // for application name\n#ifdef _WIN32\n#include <windows.h>\n#include <Debugapi.h>\n#endif\n#ifdef __GNUG__ // gnu C++ compiler\n#include <cxxabi.h>\n#endif\n\n\nnamespace exceptions {\n// just some value that is not any existing signal\n#define SIGSTACK (static_cast<int>(0xdeadbeef))\n#define SIGUNKNOWN (static_cast<int>(0xcafebabe))\n\n// static 'variables' (as functions to avoid initialization ordering bugs)\nSTATIC_CONST_VARIABLE_DECLARE_COLLECTION(Vector<int>, SIGNALS_HANDLED, SIGSEGV, SIGILL, SIGFPE, SIGABRT)\n\nstatic void signalHandlerDisable();\nstatic void signalHandlerEnable();\nstatic void stanfordCppLibSignalHandler(int sig);\n[[noreturn]] static void stanfordCppLibTerminateHandler();\n\n#ifdef __GNUG__ // gnu C++ compiler\n\nstatic std::string demangle(const char* mangled_name)\n{\n    int status = -99;\n    // name is malloc'ed and will leak, but we only demangle on terminate...\n    char *name = __cxxabiv1::__cxa_demangle(mangled_name, nullptr, nullptr, &status);\n    return (status == 0 && name) ? name : mangled_name;\n}\n\n#else\n\nstatic std::string demangle(const char* mangled_name) { return mangled_name; }\n\n#endif // _GNUG_\n\n#if _WIN32\n\nvoid interruptIfDebug()\n{\n    if (IsDebuggerPresent())\n        DebugBreak();\n}\n\n#else\n\nenum status_t { DBG_UNKNOWN = -1, DBG_NO, DBG_YES };\nstatic status_t gStatus = DBG_UNKNOWN;\n\nstatic void local_handler(int)\n{\n    gStatus = DBG_NO;\n    signal(SIGTRAP, SIG_DFL); // reset to default handler\n}\n\nvoid interruptIfDebug()\n{\n    if (gStatus == DBG_UNKNOWN) { // first time through\n        gStatus = DBG_YES;  // assume debugger unless we learn otherwise\n        signal(SIGTRAP, local_handler); // install our signal handler\n        raise(SIGTRAP); // raise; if our handler receives signal, there is no IsDebuggerPresent\n                        // if debugger then it will receive it\n    } else if (gStatus == DBG_YES) {\n        raise(SIGTRAP);\n    }\n}\n\n#endif\n\nbool getTopLevelExceptionHandlerEnabled() {\n    return std::get_terminate() == stanfordCppLibTerminateHandler;\n}\n\n#ifdef _WIN32\n\nLONG WINAPI UnhandledException(LPEXCEPTION_POINTERS exceptionInfo) {\n    DWORD code = exceptionInfo->ExceptionRecord->ExceptionCode;\n    if (code == EXCEPTION_STACK_OVERFLOW || code == EXCEPTION_FLT_STACK_CHECK) {\n        stanfordCppLibSignalHandler(SIGSTACK);\n    } else if (code == EXCEPTION_IN_PAGE_ERROR || code == EXCEPTION_ACCESS_VIOLATION) {\n        stanfordCppLibSignalHandler(SIGSEGV);\n    } else if (code == EXCEPTION_FLT_DENORMAL_OPERAND || code == EXCEPTION_FLT_DIVIDE_BY_ZERO\n               || code == EXCEPTION_FLT_INEXACT_RESULT || code == EXCEPTION_FLT_INVALID_OPERATION\n               || code == EXCEPTION_FLT_OVERFLOW || code == EXCEPTION_FLT_UNDERFLOW\n               || code == EXCEPTION_INT_DIVIDE_BY_ZERO || code == EXCEPTION_INT_OVERFLOW) {\n        stanfordCppLibSignalHandler(SIGFPE);\n    } else if (code == EXCEPTION_ILLEGAL_INSTRUCTION || code == EXCEPTION_PRIV_INSTRUCTION) {\n        stanfordCppLibSignalHandler(SIGILL);\n    } else {\n        stanfordCppLibSignalHandler(SIGUNKNOWN);\n    }\n    return EXCEPTION_EXECUTE_HANDLER;\n}\n#endif // _WIN32\n\nvoid setTopLevelExceptionHandlerEnabled(bool enabled) {\n    static void (* old_terminate)() = nullptr;\n\n    if (enabled) {\n        void (* previous)() = std::set_terminate(stanfordCppLibTerminateHandler);\n        if (previous != stanfordCppLibTerminateHandler) {\n            old_terminate = previous;\n        }\n#ifdef _WIN32\n        SetErrorMode(SEM_FAILCRITICALERRORS);\n        SetUnhandledExceptionFilter(UnhandledException);\n#endif // _WIN32\n        signalHandlerEnable(); // to catch segfault / abort / fpe\n    } else {\n        std::set_terminate(old_terminate);\n        signalHandlerDisable();\n    }\n}\n\nstatic void signalHandlerDisable() {\n    for (int sig : STATIC_VARIABLE(SIGNALS_HANDLED)) {\n        signal(sig, SIG_DFL);\n    }\n}\n\nstatic void signalHandlerEnable() {\n#if _WIN32\n    for (int sig : STATIC_VARIABLE(SIGNALS_HANDLED)) {\n        signal(sig, stanfordCppLibSignalHandler); // Windows only signal, not sigaction, sigh\n    }\n#else\n    struct sigaction action;\n    action.sa_handler = stanfordCppLibSignalHandler;\n    action.sa_flags = 0;\n    sigemptyset(&action.sa_mask);\n    // mask other signals during handler\n    for (int sig : STATIC_VARIABLE(SIGNALS_HANDLED)) {\n        sigaddset(&action.sa_mask, sig);\n    }\n    // use same action for all handled signals\n    for (int sig : STATIC_VARIABLE(SIGNALS_HANDLED)) {\n        sigaction(sig, &action, 0);\n    }\n#endif\n}\n\nstatic void reportFatalEvent(std::string event, std::string details)\n{\n    std::string indent = \"    \"; // used for details to stand out from boilerplate\n\n    std::cerr << std::endl;\n    std::cerr <<\"*** STANFORD C++ LIBRARY\" << std::endl;\n    std::cerr << \"*** The \" << QCoreApplication::applicationName().toStdString() << \" program has terminated unexpectedly (crashed)\" << std::endl;\n    std::cerr << \"*** \" << event << std::endl;\n    stringReplaceInPlace(details ,\"\\n\", \"\\n\" + indent);\n    std::cerr << std::endl << indent << details << std::endl << std::endl;\n    std::cerr << \"*** To get more information about a program crash,\" << std::endl;\n    std::cerr << \"*** run your program again under the debugger.\" << std::endl;\n    std::cerr << std::endl;\n    std::cerr.flush();\n}\n\n/*\n * A general handler for process signals.\n * Prints details about the signal.\n */\nstatic void stanfordCppLibSignalHandler(int sig) {\n    signalHandlerDisable();\n\n   // tailor the error message to the kind of signal that occurred\n    std::string event = \"A fatal error (signal \" + std::to_string(sig) + \") was received\";\n    std::string details = \"No details were provided about the error\";\n\n\n    if (sig == SIGSEGV) {\n        event = \"A segmentation fault (SIGSEGV) occurred\";\n        details = \"This error indicates your program attempted to dereference a pointer\\nto an invalid memory address (possibly out of bounds, deallocated, nullptr, ...)\";\n    } else if (sig == SIGABRT) {\n        event = \"An abort error (SIGABRT) was raised\";\n        details = \"This error is raised by system functions that detect corrupt state\";\n    } else if (sig == SIGFPE) {\n        event = \"An arithmetic error (SIGFPE) occurred\";\n        details = \"This error happens when dividing by zero or producing numeric overflow\";\n    } else if (sig == SIGSTACK) {\n        event = \"A stack overflow occurred\";\n        details = \"This can happen when your program has infinite recursion\";\n    } else if (sig == SIGUSR1) {\n        event = \"Custom signal 1 was raised\";\n        details = \"This can happen when your program produces infinite output\";\n    }\n    event += \" during program execution\";\n\n    reportFatalEvent(event, details);\n\n    if (GThread::iAmRunningOnTheQtGuiThread()) {\n        // no recovery possible if gui thread was the one who crashed\n        raise(sig); // our signal handling has been disabled, default handler will abort\n    } else {\n        interruptIfDebug();\n        stanfordcpplib::studentThreadHasExited(\"Terminated\");\n        native_thread_exit(); // exit this thread (no return), gui loop can live on\n    }\n}\n\n/*\n * A general handler for any uncaught exception.\n * Prints details about the exception.\n */\n[[noreturn]] static void stanfordCppLibTerminateHandler() {\n    signalHandlerDisable();\n\n    std::string event  =\"An exception was thrown during program execution\";\n    std::string details = \"(details of exception unknown)\";\n\n    try {\n        throw;   // re-throws the exception that already occurred\n    } catch (const ErrorException& ex) {\n        event = \"A fatal error was reported:\";\n        details = ex.what();\n    } catch (const std::exception& ex) {\n        event = \"A C++ standard exception was thrown during program execution\";\n        details = demangle(typeid(ex).name()) + \" \" + ex.what();\n    } catch (const std::string& str) {\n        details = str;\n    } catch (char const* str) {\n        details = str;\n    } catch (int n) {   // throw primitive type is unhelpful, but I suppose some might do it\n        details = \"int exception \" + std::to_string(n);\n    } catch (double d) {\n        details = \"double exception \" + realToString(d);\n    } catch (...) {\n        event = \"An unexpected exception was thrown during program execution\";\n        // use default details\n    }\n\n    reportFatalEvent(event, details);\n\n    if (GThread::iAmRunningOnTheQtGuiThread()) {\n        // no recovery possible if gui thread was the one who crashed\n        abort();\n    } else {\n        interruptIfDebug();\n        stanfordcpplib::studentThreadHasExited(\"Terminated\");\n        native_thread_exit(); // exit this thread (no return), gui loop can live on\n    }\n}\n\n\n} // namespace exceptions\n"
  },
  {
    "path": "Library/system/exceptions.h",
    "content": "/*\n * File: exceptions.h\n * ------------------\n * This file contains a top-level exception handler to print exceptions thrown\n * by student code on the console.\n * It also contains some wizardry to try to retrieve a stack trace when the\n * exception is thrown, though it is hard to consistently do this on all platforms.\n *\n * @author Marty Stepp\n * @version 2018/09/25\n * - add 'force' parameter to setTopLevelExceptionHandlerEnabled\n *   (helps it to work better with threads)\n * - added doc comments for new documentation generation\n * @version 2016/11/07\n * - added cleanupFunctionNameForStackTrace\n * @version 2016/10/30\n * - moved recursion functions to recursion.h/cpp\n * @version 2014/11/12\n * - made printStackTrace function publicly available\n * - added top-level signal handler (for null-pointer derefs etc.)\n * @since 2014/11/05\n */\n\n\n#ifndef _exceptions_h\n#define _exceptions_h\n\n#include <string>\n\nnamespace exceptions {\n\n/**\n * Returns whether the top-level exception handler is enabled.\n */\nbool getTopLevelExceptionHandlerEnabled();\n\n/**\n * Sets whether the top-level exception handler is enabled.\n */\nvoid setTopLevelExceptionHandlerEnabled(bool enabled);\n\n/**\n * If running under debugger, will interrupt program and return control to debugger (as if you\n * pressed \"interrupt\" button). If not running under debugger, does nothing.\n */\nvoid interruptIfDebug();\n\n}\n\n#endif // _exceptions_h\n"
  },
  {
    "path": "Library/system/os.cpp",
    "content": "/*\n * File: os.cpp\n * ------------\n * This file implements the OS class declared in os.h.\n * \n * @author Marty Stepp\n * @version 2018/11/22\n * - added headless (non-Qt) mode support\n * @version 2018/09/23\n * - bug fix for isMac\n * @version 2018/09/17\n * - initial version\n */\n\n#include \"os.h\"\n#ifndef SPL_HEADLESS_MODE\n#include <QString>\n#include <QSysInfo>\n#endif // SPL_HEADLESS_MODE\n#include \"strlib.h\"\n\n#if !defined(SPL_HEADLESS_MODE) && QT_VERSION >= QT_VERSION_CHECK(5, 9, 0)\n/*static*/ std::string OS::getName() {\n    std::string productName = QSysInfo::prettyProductName().toStdString();\n    return productName;\n}\n\n/*static*/ std::string OS::getVersion() {\n    std::string productVersion = QSysInfo::productVersion().toStdString();\n    return productVersion;\n}\n\nbool OS::isLinux() {\n    std::string kernelType = toLowerCase(QSysInfo::kernelType().toStdString());\n    std::string productType = toLowerCase(QSysInfo::productType().toStdString());\n    return kernelType == \"linux\" || productType == \"linux\";\n}\n\nbool OS::isMac() {\n    std::string kernelType = toLowerCase(QSysInfo::kernelType().toStdString());\n    std::string productType = toLowerCase(QSysInfo::productType().toStdString());\n    return stringContains(kernelType, \"apple\")\n            || stringContains(kernelType, \"darwin\")\n            || stringContains(kernelType, \"mac\")\n            || stringContains(kernelType, \"ios\")\n            || stringContains(productType, \"apple\")\n            || stringContains(productType, \"ios\")\n            || stringContains(productType, \"mac\")\n            || stringContains(productType, \"osx\");\n}\n\nbool OS::isWindows() {\n    std::string kernelType = toLowerCase(QSysInfo::kernelType().toStdString());\n    std::string productType = toLowerCase(QSysInfo::productType().toStdString());\n    return stringContains(kernelType, \"windows\")\n            || stringContains(productType, \"windows\");\n}\n#else\n/*static*/ std::string OS::getName() {\n    return \"unknown\";\n}\n\n/*static*/ std::string OS::getVersion() {\n    return \"unknown\";\n}\n\nbool OS::isLinux() {\n    return false;\n}\n\nbool OS::isMac() {\n    return false;\n}\n\nbool OS::isWindows() {\n    return true;   // most old versions of Qt occur on old Windows installs\n}\n#endif // QT_VERSION\n\nOS::OS() {\n    // empty\n}\n"
  },
  {
    "path": "Library/system/os.h",
    "content": "/*\n * File: os.h\n * ----------\n * This file exports a class with static member functions related to the\n * current operating system.\n *\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2018/09/16\n * - initial version\n */\n\n\n#ifndef _os_h\n#define _os_h\n\n#include <string>\n\n/**\n * This class contains useful static methods for asking about what operating\n * system the program is currently running on.\n */\nclass OS {\npublic:\n    /**\n     * Returns a string representing the name of the current operating system.\n     */\n    static std::string getName();\n\n    /**\n     * Returns a string representing the current version or release of the\n     * current operating system.\n     */\n    static std::string getVersion();\n\n    /**\n     * Returns true if the current operating system appears to be Linux.\n     */\n    static bool isLinux();\n\n    /**\n     * Returns true if the current operating system appears to be Mac OS X.\n     */\n    static bool isMac();\n\n    /**\n     * Returns true if the current operating system appears to be Windows.\n     */\n    static bool isWindows();\n\nprivate:\n    OS();   // prevent construction\n};\n\n#endif // _os_h\n"
  },
  {
    "path": "Library/testing/MemoryDiagnostics.cpp",
    "content": "/**\n * MemoryDiagnostics.cpp\n *\n * @author Keith Schwarz\n * @version 2020/3/5\n *    Keith final revision from end of quarter 19-2\n */\n\n#include \"MemoryDiagnostics.h\"\n#include \"error.h\"\n#include <sstream>\n#include <unordered_map>\n#include <typeindex>\n#include <cxxabi.h> // Nonstandard, but supported on g++ and clang.\nusing namespace std;\n\nnamespace {\n    /* Type --> Frequency */\n    unordered_map<type_index, int>& allocationTable() {\n        static unordered_map<type_index, int> instance;\n        return instance;\n    }\n\n    /* Name --> Type */\n    unordered_map<string, type_index>& lookupTable() {\n        static unordered_map<string, type_index> instance;\n        return instance;\n    }\n}\n\nnamespace MemoryDiagnostics {\n    /* Injects the type into the appropriate table. */\n    int registerSentinel(const std::type_info& type) {\n        /* std::type_info does not guarantee that .name() will be at all human-readable.\n         * Use this g++/clang-specific logic to \"demangle\" the name back into a human-readable\n         * format.\n         */\n        int statusCode;\n        auto* realName = abi::__cxa_demangle(type.name(), nullptr, nullptr, &statusCode);\n        if (statusCode != 0) error(\"Internal error: Couldn't demangle name?\");\n\n        /* C++ type_info objects don't work well as keys in maps, but std::type_index\n         * allows us to fix that.\n         */\n        lookupTable().insert(make_pair(string(realName), type_index(type)));\n\n        free(realName);\n        return 137; // You know, cause, why not?\n    }\n\n    void recordNew(const type_info& type) {\n        allocationTable()[type_index(type)]++;\n    }\n\n    void recordDelete(const type_info& type) {\n        allocationTable()[type_index(type)]--;\n    }\n\n    /* Clears the allocation table. */\n    void clear() {\n        allocationTable().clear();\n    }\n\n    /* Returns a list of all imbalanced types. */\n    map<string, int> typesWithErrors() {\n        map<string, int> result;\n\n        /* Loop over types, looking for mismatches. */\n        for (const auto& entry: lookupTable()) {\n            int record = allocationTable()[entry.second];\n            if (record != 0) {\n                result[entry.first] = record;\n            }\n        }\n\n        return result;\n    }\n}\n"
  },
  {
    "path": "Library/testing/MemoryDiagnostics.h",
    "content": "\n#pragma once\n\n/* Set of utility functions that can be used to track allocations and deallocations of\n * various node types. In actual C++ code, you wouldn't do something like this and would\n * instead rely on external tools like the wonderful Valgrind, which you'll see if you\n * continue on to CS107!\n */\n\n#include <string>\n\n/* Macro: TRACK_ALLOCATIONS_OF(type)\n * ------------------------------------------------------------------------------\n * Hooks the specified node type into the memory diagnostics system. To use this,\n * inside the struct or class that you're defining, insert a line like this one:\n *\n *     struct MyType {\n *         ...\n *         TRACK_ALLOCATIONS_OF(MyType);\n *     };\n */\n#define TRACK_ALLOCATIONS_OF(type) /* Something you shouldn't worry about */\n\n\n\n\n\n\n\n\n\n\n\n/* * * * * Implementation Below This Point * * * * */\n\n\n\n\n\n\n\n\n\n\n#include <typeinfo>\n#include <cstddef>\n#include <typeindex>\n#include <unordered_map>\n#include <string>\n#include <map>\n#include <vector>\n\n/* Helper functions for memory diagnostics. You are not expected to use any of these\n * functions in your code.\n */\nnamespace MemoryDiagnostics {\n    void recordNew(const std::type_info& type);\n    void recordDelete(const std::type_info& type);\n\n    template <typename T> struct MemorySentinel {\n        static int initializer;\n    };\n\n    /* Installs the specified type into the main type tables. Returns an integer value\n     * that is completely of no consequence.\n     */\n    int registerSentinel(const std::type_info& type);\n\n    /* Hook to allocate and deallocate memory. Use this to customize how the memory system\n     * allocates and deallocates objects of your type.\n     */\n    template <typename T> struct Allocator {\n        static void* scalarAlloc(std::size_t bytes) {\n            return ::operator new(bytes);\n        }\n\n        static void* vectorAlloc(std::size_t bytes) {\n            return ::operator new[](bytes);\n        }\n\n        static void scalarFree(void* memory) {\n            ::operator delete(memory);\n        }\n\n        static void vectorFree(void* memory) {\n            ::operator delete[](memory);\n        }\n    };\n\n    /* Clears all allocation records, effectively resetting the leak counts. */\n    void clear();\n\n    /* Returns a map of all types that have memory leaks / errors. Keys are type\n     * names, values are allocation records.\n     */\n    std::map<std::string, int> typesWithErrors();\n}\n\ntemplate <typename T>\nint MemoryDiagnostics::MemorySentinel<T>::initializer = registerSentinel(typeid(T));\n\n/* Implementation of TRACK_ALLOCATIONS introduces operator new/delete hooks that call\n * into the memory diagnostics system.\n *\n * If you were redirected here by hitting F2 or fn+F2, you've been sent to the\n * implementation of TRACK_ALLOCATIONS_OF rather than the definition. Scroll higher\n * up in this file for more information.\n */\n#undef TRACK_ALLOCATIONS_OF\n#define TRACK_ALLOCATIONS_OF(Type)                                           \\\n    void* operator new(std::size_t bytes) {                                  \\\n        (void) ::MemoryDiagnostics::MemorySentinel<Type>::initializer;       \\\n        ::MemoryDiagnostics::recordNew(typeid(Type));                        \\\n        return MemoryDiagnostics::Allocator<Type>::scalarAlloc(bytes);       \\\n    }                                                                        \\\n    void* operator new[](std::size_t bytes) {                                \\\n        ::MemoryDiagnostics::recordNew(typeid(Type));                        \\\n        return MemoryDiagnostics::Allocator<Type>::vectorAlloc(bytes);       \\\n    }                                                                        \\\n    void operator delete(void* ptr) {                                        \\\n        ::MemoryDiagnostics::recordDelete(typeid(Type));                     \\\n        return MemoryDiagnostics::Allocator<Type>::scalarFree(ptr);          \\\n    }                                                                        \\\n    void operator delete(void* ptr, std::size_t) {                           \\\n        ::MemoryDiagnostics::recordDelete(typeid(Type));                     \\\n        return MemoryDiagnostics::Allocator<Type>::scalarFree(ptr);          \\\n    }                                                                        \\\n    void operator delete[](void* ptr) {                                      \\\n        ::MemoryDiagnostics::recordDelete(typeid(Type));                     \\\n        return MemoryDiagnostics::Allocator<Type>::vectorFree(ptr);          \\\n    }                                                                        \\\n    void operator delete[](void* ptr, std::size_t) {                         \\\n        ::MemoryDiagnostics::recordDelete(typeid(Type));                     \\\n        return MemoryDiagnostics::Allocator<Type>::vectorFree(ptr);          \\\n    }                                                                        \\\n    static_assert(true, \"Just so we need a semicolon.\")\n\n"
  },
  {
    "path": "Library/testing/README.txt",
    "content": "Incorporate SimpleTest into cs106 library as of Fall quarter 2022\n(code now pretty stable, possible to patch/shadow on per-project basis as needed)\n\nFall 2022: very minor changes from last year\n(fp equality re: inf/nan, no d suffix on pretty print double)\n\n"
  },
  {
    "path": "Library/testing/SimpleTest.h",
    "content": "/**\n * File: SimpleTest.h\n *\n * This files defines the interface to the SimpleTest features that you\n * can use to test your code.\n *\n * @author Keith Schwarz\n * @version 2020/3/22\n *    Keith final revision from end of quarter 19-2\n * @version 2021 Fall Quarter\n *    Minor tweaks by Julie\n */\n#pragma once\n#include <string>\n// IWYU pragma: always keep\n\n\n/*** Utility functions to express your test cases. ***/\n\n/* Checks whether the given condition is true. If so, nothing happens. If the condition\n * is false, then the test fails. For example:\n *\n *     EXPECT(!vec.isEmpty());\n *     EXPECT(vec.size() < 10);\n */\n#define EXPECT(condition) /* Use to confirm truth of a boolean expression. */\n\n/* Checks whether two objects are equal. If so, nothing happens. If not, then the test fails\n * and reports what the two values were. The expectation is that the first value should be\n * the student's value and the second should be the correct answer. For example:\n *\n *     EXPECT_EQUAL(studentValue, referenceValue)\n */\n#define EXPECT_EQUAL(student, reference) /* Use to confirm value is equal to expected. */\n\n/* Checks whether the given expression called the error() handler. If so, nothing happens.\n * If not, then the test fails. You can use this to confirm that an expression that is\n * supposed to trigger an exception indeed does so. For example:\n *\n *     Vector<int> myVec;\n *     EXPECT_ERROR(myVec.get(0));    // Nothing happens, since myVec.get(0) does trigger error().\n *     EXPECT_ERROR(myVec.isEmpty()); // The test fails because no error would be generated here.\n */\n#define EXPECT_ERROR(expression) /* Use to confirm an expected error is raised. */\n\n/* Checks whether the given expression completed without calling the error() handler.\n * If so, nothing happens. If the expression did call error(), then the test fails. You\n * can use this to confirm that an expression that is supposed to complete successfully\n * indeed does so. For example:\n *\n *     Vector<int> myVec;\n *     EXPECT_NO_ERROR(myVec.isEmpty()); // Nothing happens because no error would be generated here.\n *     EXPECT_NO_ERROR(myVec.get(0));    // The test fails, since myVec.get(0) does trigger error().\n */\n#define EXPECT_NO_ERROR(expression) /* Use to confirm no error raised by expression. */\n\n/* Time the evaluation of an expression report the time in seconds in test results.\n * The argument size is the size of the input.\n *\n * This syntax for adding a timed operation in a test case is:\n *\n *    TIME_OPERATION(myVector.size(), myVector.sort());\n */\n #define TIME_OPERATION(size, expression) /* Time the evaluation of expression */\n\n/* Defines a new test case. You can write whatever code you want inside of the test case,\n * but you'll likely want to use EXPECT and EXPECT_EQUAL in your test cases, as they're\n * what actually perform tests.\n *\n * The syntax for defining a new test case is\n *\n *    STUDENT_TEST(\"Description of Test Case\") {\n *       ... whatever code you'd like! ...\n *    }\n */\n#define STUDENT_TEST(name) /* Add a new test case. */\n\n/* We use this to define the test cases we provide to you.\n * You should not use this macro yourself.\n */\n#define PROVIDED_TEST(name) /* For our use. */\n\n\n/* Enumerated type for the different options when running tests. Your options are:\n *     ALL_TESTS (all tests from all files) or\n *     SELECTED_TESTS (user selects from menu which test groups to run)\n */\nenum Choice { ALL_TESTS, SELECTED_TESTS };\n\n/* Enumerated type for where to report test results. Your options are:\n *     CONSOLE_ONLY (text output on console)\n *     WINDOW_ONLY (results displayed in separate window)\n *     CONSOLE_AND_WINDOW (both, this is the default)\n */\nenum Where { CONSOLE_ONLY, WINDOW_ONLY, CONSOLE_AND_WINDOW };\n\n/* Call this function from your main to run the desired tests.\n */\nbool runSimpleTests(Choice ch, Where where = CONSOLE_AND_WINDOW);\nbool runSimpleTests(std::string groupName, Where where = CONSOLE_AND_WINDOW);\n\n\n#include \"TestDriver.h\" // IWYU pragma: export\n"
  },
  {
    "path": "Library/testing/TestDriver.cpp",
    "content": "/**\n * TestDriver.cpp\n *\n * @author Keith Schwarz\n * @version 2020/3/5\n *    Keith final revision from end of quarter 19-2\n * @version 2021 Fall Quarter\n *    Julie edits\n */\n#include \"TestDriver.h\"\n#include \"filelib.h\"\n#include <map>\n\nusing namespace std;\n\n/* Why this type? Because we want to be able to\n *\n * 1. find all the tests in a certain group,\n * 2. have them be sorted by line number, and\n * 3. then have a name associated with each.\n */\nmap<TestKey, multimap<int, TestCase>>& gTestsMap() {\n    static map<TestKey, multimap<int, TestCase>> result;\n    return result;\n}\n\nvoid reportFailure(const string& message, size_t line) {\n    string msg = message;\n    if (line != 0) {\n        msg =  \"Line \" + to_string(line) + \": \" + msg;\n    }\n    throw TestFailedException(msg);\n}\n\nvoid doExpect(bool condition, const string &expression, size_t line) {\n    if (!condition) {\n        reportFailure(expression, line);\n    }\n}\n\n/* TestFailedException implementation. */\nTestFailedException::TestFailedException(const string& message)\n    : logic_error(message) {\n}\n\n/* TestCaseAdder implementation. */\nTestCaseAdder::TestCaseAdder(const TestKey& key, int line, const string& testname, const string &owner, std::function<void()> callback) {\n    TestKey basename = getTail(key);\n    TestCase tcase;\n    tcase.testname = testname;\n    tcase.line = line;\n    tcase.filename = basename;\n    tcase.owner = owner;\n    tcase.callback = callback;\n    gTestsMap()[basename].insert(make_pair(line, tcase));\n}\n\n"
  },
  {
    "path": "Library/testing/TestDriver.h",
    "content": "\n#pragma once\n\n// be careful about what is #include here, it will all end up in all student code\n#include <cfloat>\n#include \"error.h\"\n#include <functional>\n#include \"gmath.h\"\n#include <sstream>\n#include <iomanip>\n#include <string>\n#include \"timer.h\"\n#include \"TextUtils.h\"\n\n/* Type representing a key in the top-level testing map. We use the file basename\n * as the top-level grouping.\n */\nusing TestKey = std::string;\n\n/* Type representing a test case, including name, owner (student or provided),\n * line number, and the callback function to execute.\n */\nstruct TestCase {\n    std::string testname;\n    int line;\n    std::string filename;\n    std::string owner;\n    std::function<void()> callback;\n};\n\n\n\n/* Exception type signifying that a test case failed. */\nclass TestFailedException: public std::logic_error {\npublic:\n    TestFailedException(const std::string &message);\n};\n\n/* Object whose sole purpose is to put a test case into a group of tests. */\nclass TestCaseAdder {\npublic:\n    TestCaseAdder(const TestKey& key, int lineNumber, const std::string& name, const std::string &owner, std::function<void()>);\n};\n\n/**** Defines the macro that adds a new test case. ****/\n\n/* First, undefine STUDENT_TEST, since we defined it above as a way of \"prototyping\" it. */\n#undef STUDENT_TEST\n#undef PROVIDED_TEST\n\n/* We need several levels of indirection here because of how the preprocessor works.\n * This first layer expands out to the skeleton of what we want.\n */\n#define STUDENT_TEST(name) DO_ADD_TEST(_testCase, _adder, name, __LINE__, \"STUDENT_TEST\")\n#define PROVIDED_TEST(name) DO_ADD_TEST(_testCase, _adder, name, __LINE__, \"PROVIDED_TEST\")\n#define AUTOGRADER_TEST(name) DO_ADD_TEST(_testCase, _adder, name, __LINE__, \"AUTOGRADER_TEST\")\n#define MANUAL_TEST(name) DO_ADD_TEST(_testCase, _adder, name, __LINE__, \"MANUAL_TEST\")\n\n/* This level of indirection exists so that line will be expanded to __LINE__ and\n * from there to the true line number. We still can't token-paste it here, since\n * the even further level of indirection.\n */\n#define DO_ADD_TEST(fn, adder, name, line, owner)\\\n    static void JOIN(fn, line)();\\\n    static TestCaseAdder JOIN(adder, line)(__FILE__, line, name, owner, JOIN(fn, line));\\\n    static void JOIN(fn, line)()\n\n#define JOIN(X, Y) X##Y\n\n/***** Macros used to implement testing primitives. *****/\nvoid reportFailure(const std::string& message, std::size_t line = 0);\nvoid addDetail(const std::string& message);\n\n#undef EXPECT\n#define EXPECT(condition) doExpect(condition, \"EXPECT failed: \" #condition \" is not true.\", __LINE__)\nvoid doExpect(bool condition, const std::string& expression, std::size_t line);\n\n#undef EXPECT_ERROR\n#define EXPECT_ERROR(condition) do {\\\n    std::stringstream _out; \\\n    try {\\\n        (void)(condition); \\\n        _out << \"Line \" << __LINE__ << \" EXPECT_ERROR failed: \" #condition \" did not call error()\"; \\\n        reportFailure(_out.str()); \\\n    } catch (const ErrorException& e) { \\\n        _out << \"Line \" << __LINE__ << \" EXPECT_ERROR ok: error raised \" \\\n             << \"\\\"\" << e.getMessage() << \"\\\"\"; \\\n        addDetail(_out.str()); \\\n    }\\\n} while(0)\n\n#undef EXPECT_NO_ERROR\n#define EXPECT_NO_ERROR(condition) do {\\\n    std::stringstream _out; \\\n    try {\\\n        (void)(condition); \\\n    } catch (const ErrorException& e) { \\\n        _out << \"Line \" << __LINE__ << \" EXPECT_NO_ERROR failed: error raised \" \\\n             << \"\\\"\" << e.getMessage() << \"\\\"\"; \\\n        reportFailure(_out.str()); \\\n    }\\\n} while(0)\n\n/* * * * Pretty-Printers for EXPECT_EQUAL * * * */\ninline std::string debugFriendlyString(char c) {\n    return quotedVersionOf(c);\n}\n\n/* Print strings in quotes. */\ninline std::string debugFriendlyString(const std::string& s) {\n    return quotedVersionOf(s);\n}\ninline std::string debugFriendlyString(const char* s) {\n    return debugFriendlyString(std::string(s));\n}\ntemplate <size_t N> std::string debugFriendlyString(char (&s)[N]) {\n    return debugFriendlyString((const char *)s);\n}\n\n/* Print float/double with maximum precision. */\ninline std::string debugFriendlyString(float value) {\n    std::ostringstream result;\n    // do add suffix if float since may need type to understand result\n    result << std::setprecision(FLT_DIG+1) << value << \"f\";\n    return result.str();\n}\n\ninline std::string debugFriendlyString(double value) {\n    std::ostringstream result;\n    result << std::setprecision(DBL_DIG+1) << value;\n    return result.str();\n}\n\n/* Print bools as strings. */\ninline std::string debugFriendlyString(bool value) {\n    return value? \"true\" : \"false\";\n}\n\n/* Print nullptr as such. */\ninline std::string debugFriendlyString(std::nullptr_t) {\n    return \"nullptr\";\n}\n\ntemplate <typename T>\ninline std::string debugFriendlyString(T* ptr) {\n    /* Print null pointers as such. */\n    if (ptr == nullptr) return \"nullptr\";\n\n    std::ostringstream converter;\n    converter << \"Memory address \" << std::hex << (void *)ptr;\n    return converter.str();\n}\n\n/* Print everything else using stream insertion. */\ntemplate <typename T> std::string debugFriendlyString(const T& value) {\n    std::ostringstream result;\n    result << value;\n    return result.str();\n}\n\n/* * * * Equality comparisons * * * */\n\n\n/* Equality comparisons are fuzzy for real numbers. */\n\ninline bool _areEqual(double lhs, double rhs) {\n    return floatingPointEqual(lhs, rhs);\n}\ninline bool _areEqual(float lhs, float rhs) {\n    return floatingPointEqual(lhs, rhs);\n}\n\ntemplate <typename T1, typename T2> bool _areEqual(const T1& lhs, const T2& rhs) {\n    return lhs == rhs;\n}\n\ninline std::string abbreviate(const std::string& s, size_t maxLen = 300) {\n    return s.length() < maxLen ? s : s.substr(0, maxLen) + \" ...\";\n}\n\ntemplate <typename T> std::string evaluate(const std::string& orig, const T& answer)\n{\n    std::string evaluated = abbreviate(debugFriendlyString(answer));\n    // if argument was expressed as literal and matches its evaluated answer,\n    // no explanation needed, otherwise show the evaluated result\n    if (orig == evaluated) {\n        return \"\";\n    } else {\n        return \"                \" + orig  + \" = \" + evaluated + '\\n';\n    }\n}\n\n#undef EXPECT_EQUAL\n#define EXPECT_EQUAL(student, ...)                                                          \\\n    do {                                                                                    \\\n       auto _studentAnswer   = (student);                                                   \\\n       decltype(_studentAnswer) _referenceAnswer = __VA_ARGS__;                             \\\n                                                                                            \\\n       if (!_areEqual(_studentAnswer, _referenceAnswer)) {                                  \\\n           std::stringstream _expression;                                                   \\\n           _expression << std::boolalpha << \"EXPECT_EQUAL failed: \"                         \\\n                       << #student << \" != \" << #__VA_ARGS__ << \"\\n\"                        \\\n                       << evaluate(#student, _studentAnswer)                                \\\n                       << evaluate(#__VA_ARGS__, _referenceAnswer);                         \\\n           reportFailure(_expression.str(), __LINE__);                                      \\\n        }                                                                                   \\\n    } while (0)\n\n#undef TIME_OPERATION\n#define TIME_OPERATION(n, expr) do {\\\n    Timer _timer;\\\n    _timer.start();\\\n    (void)(expr); \\\n    double _elapsed_ms = _timer.stop();\\\n    std::ostringstream _out; \\\n    _out << \"Line \" << __LINE__ << \" TIME_OPERATION \" << #expr << \" (size = \" << std::setw(8) << n << \")\" << \" completed in \" << std::setw(8) << std::fixed << std::setprecision(3) << (_elapsed_ms/1000) << \" secs\";\\\n    addDetail(_out.str());\\\n} while(0)\n"
  },
  {
    "path": "Library/testing/TestingGUI.cpp",
    "content": "/**\n * TestingGUI.cpp\n *\n * @author Keith Schwarz\n * @version 2020/3/5\n *    Keith final revision from end of quarter 19-2\n * @version 2021 Fall Quarter\n *    Julie edits\n */\n#include \"console.h\"\n#include \"error.h\"\n#include \"filelib.h\"\n#include \"gbrowserpane.h\"\n#include \"gthread.h\"\n#include \"gwindow.h\"\n#include <iomanip>\n#include <map>\n#include \"MemoryDiagnostics.h\"\n#include <QCoreApplication> // for application name\n#include \"simpio.h\"\n#include \"SimpleTest.h\"\n#include \"styles_css_h\"\nusing namespace std;\n\nstatic Vector<string> gDetails;\n\nvoid addDetail(const string& msg)\n{\n    gDetails.add(msg);\n}\n\n// hand prototype to avoid having map in exposed header (and leading students astray)\nstd::map<TestKey, std::multimap<int, TestCase>>& gTestsMap();\n\nnamespace SimpleTest {\n    /* Type representing how a test turned out. */\n    enum class TestResult {\n        WAITING,\n        RUNNING,\n        PASS,\n        FAIL,\n        LEAK,\n        EXCEPTION\n    };\n\n    /* Type representing a single test and its result. */\n    struct Test {\n        string testname;\n        string id; // string identifying owner, module, line number\n        std::function<void()> callback;\n        TestResult result;\n        string detailMessage;\n    };\n\n    /* Type representing a group of tests and whether group is selected to run. */\n    struct TestGroup {\n        string name;\n        Vector<Test> tests;\n        bool selected;\n        bool isfilegroup;\n    };\n\n    static const string NORMAL=\"\\033[0m\", RED=\"\\033[31m\", BLUE=\"\\033[34m\",\n           GREEN=\"\\033[32m\", YELLOW=\"\\033[33m\", BOLD=\"\\033[1m\", FAINT=\"\\033[2m\";\n\n    struct status_info {\n        string status, id, color;\n    };\n\n    static Map<TestResult, status_info> info = {\n        {TestResult::WAITING,   {\"&nbsp;\", \"waiting\", FAINT} },\n        {TestResult::RUNNING,   {\"Running...\", \"running\", BLUE} },\n        {TestResult::PASS,      {\"Correct\", \"pass\", GREEN + BOLD} },\n        {TestResult::FAIL,      {\"Incorrect\", \"fail\",  RED + BOLD} },\n        {TestResult::LEAK,      {\"Leak\", \"leak\", YELLOW + BOLD} },\n        {TestResult::EXCEPTION, {\"Exception\", \"exception\", RED + BOLD} }\n    };\n\n    string affirmation()\n    {\n        Vector<string> choices = {\n            \"Excellent!\", \"Good job!\", \"Good on ya!\", \"Sweet!\", \"Bien hecho!\",\n            \"Way to go!\", \"Super!\", \"Awesome!\", \"Great!\", \"Perfect!\", \"Nice work!\",\n            \"You rock!\", \"Love it!\", \"Right on!\", \"No complaints here!\", \"Que bien!\",\n            \"Buen trabajo!\", \"Bravo!\", \"Fantastico!\", \"Perfecto!\", \"Lo hiciste!\",\n            \"Muy bien!\", \"Jolly good!\", \"Congratulations!\", \"Nice going!\",\n            \"Terrific!\", \"Keep it up!\", \"You did it!\", \"A+\", \"Take a bow!\"\n        };\n        return randomElement(choices);\n    }\n\n    string sanitize(string s)\n    {\n        for (size_t i = 0; i < s.length(); i++) {\n            if (s[i] == '<') s.replace(i, 1, \"&lt;\");\n            if (s[i] == '>') s.replace(i, 1, \"&gt;\");\n        }\n        return s;\n    }\n\n    /* Runs a single test. */\n    void runSingleTest(Test& test) {\n        try {\n            /* Reset memory counters so we don't have carryover across tests. */\n            MemoryDiagnostics::clear();\n            gDetails.clear();\n\n            /* Run the test. */\n            test.callback();\n\n            /* grab any details accumulated during run */\n            test.detailMessage = stringJoin(gDetails, \"\\n\"); // will be overwritten in case of actual failure\n\n            /* See if there were any memory leaks. */\n            auto errors = MemoryDiagnostics::typesWithErrors();\n            if (errors.empty()) {\n                test.result = TestResult::PASS;\n            } else {\n                /* We have memory leaks. */\n                test.result = TestResult::LEAK;\n\n                ostringstream out;\n                out << endl << \"Test had allocation count mismatch with these types:\" << endl;\n                for (const auto& entry: errors) {\n                    string type = entry.first;\n                    int delta = entry.second;\n\n                    if (delta > 0) {\n                        out << \"    \" << type << \": Leaked \" << pluralize(delta, \"object\") << \".\" << endl;\n                    } else {\n                        out << \"    \" << type << \": Deallocated \" << pluralize(-delta, \"more object\") << \" than allocated.\" << endl;\n                    }\n                }\n                test.detailMessage += out.str();\n            }\n        } catch (const TestFailedException& e) {\n            test.result = TestResult::FAIL;\n            ostringstream out;\n            out << e.what() << endl;\n            test.detailMessage = out.str();\n        } catch (const ErrorException& e) {\n            test.result = TestResult::EXCEPTION;\n            ostringstream out;\n            out << \"Test failed due to the program triggering an ErrorException.\" << endl;\n            out << \" \" << endl;\n            out << \"This means that the test did not fail because of a call\" << endl;\n            out << \"to EXPECT() or EXPECT_ERROR() failing, but rather because\" << endl;\n            out << \"some code explicitly called the error() function.\" << endl;\n            out << \" \" << endl;\n            out << \"Error: \" << e.getMessage();\n            test.detailMessage = out.str();\n        } catch (const exception& e) {\n            test.result = TestResult::EXCEPTION;\n            ostringstream out;\n            out << \"Test failed due to the program triggering an exception.\" << endl;\n            out << \" \" << endl;\n            out << \"This means that the test did not fail because of a call\" << endl;\n            out << \"to EXPECT() or an EXPECT_ERROR() failing, but rather because\" << endl;\n            out << \"some code - probably an internal C++ library - triggered\" << endl;\n            out << \"an error.\" << endl;\n            out << \" \" << endl;\n            out << \"Error: \" << e.what() << endl;\n            test.detailMessage = out.str();\n        } catch (...) {\n            test.result = TestResult::EXCEPTION;\n            ostringstream out;\n            out << \"Test failed due to the program triggering an unknown type\" << endl;\n            out << \"of exception. \" << endl;\n            out << \" \" << endl;\n            out << \"This means that the test did not fail because of a call\" << endl;\n            out << \"to EXPECT() or an EXPECT_ERROR() failing, but rather because\" << endl;\n            out << \"some code triggered an error whose format we couldn't\" << endl;\n            out << \"recognize.\" << endl;\n            out << \" \" << endl;\n            test.detailMessage = out.str();\n        }\n        string indented;\n        for (auto& line : stringSplit(test.detailMessage, \"\\n\")) {\n            indented += \"    \" + line + \"\\n\";\n        }\n        test.detailMessage = indented;\n    }\n\n    /* Displays all the results from the given test group. */\n    string displayResults(GBrowserPane *bp, const string& stylesheet, const Vector<TestGroup>& testGroups, int npass=-1, int nrun=-1)\n    {\n        stringstream h;\n        string conclusion;\n\n        if (!bp) return affirmation();\n\n        h << \"<html><style>\" << stylesheet << \"</style><body><ul>\";\n        for (const auto& group: testGroups) {\n            if (!group.selected) continue;\n            h << \"<li class=\" << quotedVersionOf(\"title\") << \"> Tests from \" << group.name << \"</li>\" ;\n            /* Display each test as list item */\n            for (const auto& test: group.tests) {\n                h << \"<hr>\" << endl;\n                string li = \"<li class=\" + quotedVersionOf(info[test.result].id) + \">\";\n                h << li << \"<b>\" << info[test.result].status << \"</b> \" << test.id << \" \" << test.testname << \"</li>\";\n                if (!test.detailMessage.empty()) {\n                    h << li << \"<pre>\" << sanitize(test.detailMessage) << \"</pre></li>\";\n                }\n                h << endl;\n            }\n            h << \"<hr>\" << endl;\n        }\n        h << \"</ul>\";\n        if (nrun > 0) { // all tests completed\n            h << \"<h3> Passed \" << npass << \" of \" << nrun << \" tests.&nbsp;\"; // trailing space after period consumed otherwise\n            if (npass == nrun) conclusion = affirmation();\n            h << conclusion << \"</h3>\";\n\n        }\n        h << \"</body></html>\";\n        bp->setTextPreserveScroll(h.str(), nrun == -1); // patch now incorporated into library\n        return conclusion;\n    }\n\n    void addTestToGroup(Map<string, TestGroup>& map, TestCase tcase, string groupname, bool isfilegroup)\n    {\n        if (!map.containsKey(groupname)) {\n            TestGroup tg;\n            tg.name = groupname;\n            tg.selected = false;\n            tg.isfilegroup = isfilegroup;\n            map[groupname] = tg;\n        }\n        Test t;\n        t.testname = tcase.testname;\n        t.callback = tcase.callback;\n        ostringstream os;\n        if (isfilegroup) {\n            os << \" (\" << tcase.owner << \", line \" << setw(3) << tcase.line << \") \";\n        } else {\n            os << \" (\" << tcase.owner << \", \" << tcase.filename << \":\" << tcase.line << \") \";\n        }\n        t.id = os.str();\n        t.result = TestResult::WAITING; // It hasn't run yet\n        map[groupname].tests += t;\n    }\n\n   Vector<TestGroup> prepareGroups(const map<TestKey, multimap<int, TestCase>> &allTests)\n   {\n        Map<string, TestGroup> grouped;\n\n        for (const auto& module: allTests) {\n            for (const auto& rawTest: module.second) {\n                TestCase tcase = rawTest.second;\n                addTestToGroup(grouped, tcase, tcase.owner, false);  // add once in owner group\n                addTestToGroup(grouped, tcase, module.first, true);  // add again in file group\n            }\n        }\n        return grouped.values();\n    }\n\n    void runSelectedGroups(Vector<TestGroup>& groups, Where where)\n    {\n        GBrowserPane *bp = nullptr;\n        string stylesheet;\n        bool displayWindow = (where == CONSOLE_AND_WINDOW || where == WINDOW_ONLY);\n        bool displayConsole = (where == CONSOLE_AND_WINDOW || where == CONSOLE_ONLY);\n        ostringstream devnull;\n        ostream& console = displayConsole ? cout : devnull;\n\n        if (displayWindow) {\n            GWindow* window = new GWindow(700, 600);\n            bp = new GBrowserPane();\n            window->setTitle(\"SimpleTest \" + QCoreApplication::applicationName().toStdString());\n            window->setExitOnClose(true);\n            window->add(bp);\n\n            window->setVisible(true);\n            window->requestFocus();\n            stylesheet = gDefaultStylesheet;\n            // student can customize by adding stylesheet in project directory\n            string localFile = \"simpletest.css\";\n            if (fileExists(localFile)) {\n                ifstream in(localFile);\n                stylesheet += readEntire(in);\n            }\n        }\n\n        /* Show everything so there's some basic data available. */\n        displayResults(bp, stylesheet, groups);\n\n        int nrun=0, npassed=0;\n        const int test_name_length = 30;\n        /* Now, go run the tests. */\n        for (auto& group: groups) {\n            if (!group.selected) continue;\n            console << endl << \"[SimpleTest] ---- Tests from \" << group.name << \" -----\" << endl;\n            for (auto& test: group.tests) {\n                /* Make clear that we're running the test. */\n                test.result = TestResult::RUNNING;\n                displayResults(bp,stylesheet, groups);\n                console << \"[SimpleTest] starting\" << test.id << left << setfill('.') << setw(test_name_length) << test.testname.substr(0,test_name_length) << \"... \" << flush;\n                runSingleTest(test);\n                nrun++;\n                if (test.result == TestResult::PASS) npassed++;\n                string status = info[test.result].status;\n                if (!GThread::qtGuiThreadExists()) status = info[test.result].color + status + NORMAL;\n                console << \" =  \" << status << endl << test.detailMessage << flush;\n                displayResults(bp, stylesheet, groups);\n            }\n        }\n        string conclusion = displayResults(bp, stylesheet, groups, npassed, nrun);\n        console << \"You passed \" << npassed << \" of \" << nrun << \" tests. \" << conclusion << endl << endl;\n        if (npassed < nrun) {\n            cout << \"Failed tests:\" << endl;\n            for (const auto& group: groups) {\n                if (!group.selected) continue;\n                for (const auto& test: group.tests) {\n                    if (test.result != TestResult::PASS)\n                        cout << info[test.result].status << test.id << test.testname << endl;\n                }\n            }\n        }\n    }\n\n    int userChoiceFromMenu(Vector<string>& options)\n    {\n        cout << endl;\n        cout << \"Tests are grouped by filename or by type.\" << endl;\n        cout << \"Select the test groups you wish to run:\" << endl;\n        cout << \"----------------------------------------\" << endl;\n        int i = 0;\n        for (const auto& entry: options) {\n            cout << \"  \" << i++ << \") \" << entry << endl;\n        }\n        int chosen = getIntegerBetween(\"Enter your selection:\", 0, options.size()-1);\n        if (chosen == 0) {\n            cout << \"No tests selected.\" << endl << endl;\n        }\n        return chosen;\n    }\n\n    int getChoice(Vector<TestGroup>& groups, Choice ch, std::string groupName)\n    {\n        if (ch == ALL_TESTS ) {\n            return groups.size()+1;\n        } else {\n            Vector<string> names = { \"None (instead execute ordinary main() function)\", \"All of the above tests\" };\n            for (const auto& entry: groups) {\n                int index = names.size() - 1;\n                names.insert(index, \"From \" + entry.name);\n                if (entry.name == groupName) {\n                    return index;\n                }\n            }\n            return userChoiceFromMenu(names);\n        }\n    }\n\n    bool selectChosenGroup(Vector<TestGroup>& groups, Choice ch, std::string groupName)\n    {\n        int chosen = getChoice(groups, ch, groupName);\n\n        if (chosen == 0) {\n            return false;\n        } else {\n            for (int i = 0; i < groups.size(); i++) {\n                groups[i].selected = (chosen == i+1) || ((chosen == groups.size()+1) && groups[i].isfilegroup);\n            }\n            return true;\n        }\n    }\n\n    bool runSimpleTests(Choice ch, Where where, std::string groupName = \"\")\n    {\n        if (!GThread::qtGuiThreadExists()) {\n            where = CONSOLE_ONLY;   // without Qt GUI, fall back to console only\n        }\n\n        Vector<TestGroup> testGroups = prepareGroups(gTestsMap());\n\n        if (selectChosenGroup(testGroups, ch, groupName)) {\n            runSelectedGroups(testGroups, where);\n            return true;\n        } else {\n            return false;\n        }\n    }\n}\n\nbool runSimpleTests(Choice ch, Where where) {\n    return SimpleTest::runSimpleTests(ch, where, \"\");\n}\nbool runSimpleTests(std::string groupName, Where where) {\n    return SimpleTest::runSimpleTests(SELECTED_TESTS, where, groupName);\n}\n\n\n"
  },
  {
    "path": "Library/testing/TextUtils.cpp",
    "content": "/**\n * TextUtils.cpp\n *\n * @author Keith Schwarz\n * @version 2020/3/5\n *    Keith final revision from end of quarter 19-2\n */\n#include \"TextUtils.h\"\n#include <sstream>\n#include <iomanip>\nusing namespace std;\n\nnamespace {\n    /* Quotes the given object with the specified escape characters. */\n    string quotedVersionOf(const string& str, char quoteChar) {\n        ostringstream result;\n        result << quoteChar;\n\n        for (char ch: str) {\n            /* Escape close quotes. */\n            if (ch == '\\\"') result << \"\\\\\\\"\";\n            if (ch == '\\'') result << \"\\\\\\'\";\n\n            /* Escape slashes. */\n            else if (ch == '\\\\') result << \"\\\\\\\\\";\n\n            /* Print out any other printable characters. */\n            else if (isgraph(ch) || ch == ' ') result << ch;\n\n            /* Otherwise, escape it. */\n            else {\n                result << \"\\\\x\" << hex << setfill('0') << setw(2) << +static_cast<unsigned char>(ch);\n            }\n        }\n\n        result << quoteChar;\n        return result.str();\n    }\n}\n\n\n/* Inserts commas into a numeric string. */\nstring addCommasTo(int val) {\n    string asStr = to_string(val);\n    const int length = int(asStr.length());\n\n    string result;\n    for (int i = 0; i < length; i++) {\n        /* Run backwards through the source string so determining where commas go\n         * becomes a lot easier.\n         */\n        result = asStr[length - 1 - i] + result;\n\n        /* Put commas in provided we've already added three characters, but aren't\n         * about to use all the digits up.\n         */\n        if (i % 3 == 2 && i < length - 1) {\n            result = ',' + result;\n        }\n    }\n    return result;\n}\n\n/* TODO: Once C++14 support is more widespread, replace with std::quoted. */\nstring quotedVersionOf(const string& source) {\n    return quotedVersionOf(source, '\"');\n}\nstring quotedVersionOf(char source) {\n    return quotedVersionOf(string(1, source), '\\'');\n}\n"
  },
  {
    "path": "Library/testing/TextUtils.h",
    "content": "\n#pragma once\n\n#include <string>\n\n/**\n * Given a number, returns a version of that number with commas separating the digits.\n *\n * @param number The number in question\n * @return The number with commas added.\n */\nstd::string addCommasTo(int number);\n\n/* Given a quantity, returns a string of that quantity plus an appropriately-pluralized\n * version of what it is.\n */\ntemplate <typename ValueType>\nstd::string pluralize(const ValueType& value, const std::string& singular, const std::string& plural) {\n    return addCommasTo(value) + \" \" + (value == 1? singular : plural);\n}\n\n/* Assume we suffix with s to pluralize unless specified otherwise. */\ntemplate <typename ValueType>\nstd::string pluralize(const ValueType& value, const std::string& singular) {\n    return pluralize(value, singular, singular + \"s\");\n}\n\n/**\n * Given a string or character, quotes that string in a manner similar to C++14's std::quoted.\n *\n * @param input The text to escape.\n * @return A quoted version of that string.\n */\nstd::string quotedVersionOf(const std::string& input);\nstd::string quotedVersionOf(char input);\n"
  },
  {
    "path": "Library/testing/styles_css_h",
    "content": "#pragma once\n\n// create raw string literal from file contents & build into library\n// (removes dependency on filesystem)\n// this is default stylesheet used by SimpleTest\n//\n// SimpleTest also looks for stylesheet in local project dir\n// and uses that preferentially. This allows student to customize\n// if needed/preferred\n\nstatic std::string gDefaultStylesheet = R\"(\n\n\n/*\n * File: styles.css\n *\n * This file is the stylesheet for the SimpleTest results window.\n * Students can edit to set fonts, sizes, colors, per their preference.\n */\n\nbody {\n    background: white;\n    color: black;\n    font-size: large;\n}\n\nul {\n    font-family:  Arial, Helvetica, sans-serif;\n    list-style-type: none;\n    margin-left: -40px;\n}\n\nli.pass     { background-color: #C1ECB0; }\nli.leak     { background-color: #E8DAA4; }\nli.fail, li.exception { background-color: #ECA9B6;}\nli.waiting  { color: #C9C9C9; }\nli.running  { color: #2156F2; font-style: italic; }\n\nli.title {\n    text-align: center;\n    font-size: xx-large;\n    margin: 10px 0px 10px 0px;\n}\n\npre {\n    font-family: \"Lucida Console\", Inconsolata, Consolas, Menlo, Courier, monospace;\n    font-size: medium;\n    margin: 0;\n}\n\n\n)\";"
  },
  {
    "path": "Library/util/direction.cpp",
    "content": "/*\n * File: direction.cpp\n * -------------------\n * This file implements the direction.h interface.\n *\n * @version 2016/08/04\n * - fixed operator >> to not throw errors\n * @version 2014/10/08\n * - removed 'using namespace' statement\n */\n\n#include \"direction.h\"\n#include \"strlib.h\"\n#include \"tokenscanner.h\"\n\n/*\n * Implementation notes: leftFrom, rightFrom, opposite\n * ---------------------------------------------------\n * These functions use the remainder operator to cycle through the\n * internal values of the enumeration type.  Note that the leftFrom\n * function cannot subtract 1 from the direction because the result\n * might then be negative; adding 3 achieves the same effect but\n * ensures that the values remain positive.\n */\n\nDirection leftFrom(Direction dir) {\n    return Direction((dir + 3) % 4);\n}\n\nDirection rightFrom(Direction dir) {\n    return Direction((dir + 1) % 4);\n}\n\nDirection opposite(Direction dir) {\n    return Direction((dir + 2) % 4);\n}\n\n/*\n * Implementation notes: directionToString\n * ---------------------------------------\n * The C++ compiler requires the default clause to ensure that this\n * function always returns a string, even if the direction is not one\n * of the legal values.\n */\n\nstd::string directionToString(Direction dir) {\n    switch (dir) {\n    case NORTH:\n        return \"NORTH\";\n    case EAST:\n        return \"EAST\";\n    case SOUTH:\n        return \"SOUTH\";\n    default:\n    // case WEST:\n        return \"WEST\";   // BUGFIX 2014/07/09: removed unreachable 'default' case\n    }\n}\n\n/*\n * Implementation notes: <<\n * ------------------------\n * This operator must return the stream by reference after printing\n * the value.  The operator << returns this stream, so the function\n * can be implemented as a single line.\n */\n\nstd::ostream& operator <<(std::ostream& os, const Direction& dir) {\n    return os << directionToString(dir);\n}\n\n/*\n * Implementation notes: >>\n * ------------------------\n * This implementation uses the TokenScanner to read tokens from the\n * stream.\n */\n\nstd::istream& operator >>(std::istream& is, Direction& dir) {\n    TokenScanner scanner(is);\n    scanner.ignoreWhitespace();\n    std::string token = toUpperCase(scanner.nextToken());\n    if (token == \"\") {\n        dir = Direction(-1);\n    } else if (startsWith(\"NORTH\", token)) {\n        dir = NORTH;\n    } else if (startsWith(\"EAST\", token)) {\n        dir = EAST;\n    } else if (startsWith(\"SOUTH\", token)) {\n        dir = SOUTH;\n    } else if (startsWith(\"WEST\", token)) {\n        dir = WEST;\n    } else {\n        is.setstate(std::ios_base::failbit);\n        return is;\n    }\n    return is;\n}\n\n/*\n * Implementation notes: ++\n * ------------------------\n * The int parameter in the signature for this operator is a marker used\n * by the C++ compiler to identify the suffix form of the operator.  Note\n * that the value after incrementing a variable containing WEST will be\n * out of the Direction range.  That fact will not cause a problem if\n * this operator is used only in the for loop idiom for which it is defined.\n */\n\nDirection operator ++(Direction& dir, int) {\n    Direction old = dir;\n    dir = Direction(dir + 1);\n    return old;\n}\n"
  },
  {
    "path": "Library/util/direction.h",
    "content": "/*\n * File: direction.h\n * -----------------\n * This file exports an enumerated type called <code>Direction</code>\n * whose elements are the four compass points: <code>NORTH</code>,\n * <code>EAST</code>, <code>SOUTH</code>, and <code>WEST</code>.\n *\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n */\n\n\n#ifndef _direction_h\n#define _direction_h\n\n#include <iostream>\n#include <string>\n\n/**\n * This enumerated type is used to represent the four compass directions.\n */\nenum Direction { NORTH, EAST, SOUTH, WEST };\n\n/**\n * Returns the direction that is to the left of the argument.\n */\nDirection leftFrom(Direction dir);\n\n/**\n * Returns the direction that is to the right of the argument.\n */\nDirection rightFrom(Direction dir);\n\n/**\n * Returns the direction that is opposite to the argument.\n */\nDirection opposite(Direction dir);\n\n/**\n * Returns the name of the direction as a string.\n */\nstd::string directionToString(Direction dir);\n\n/**\n * Overloads the <code>&lt;&lt;</code> operator so that it is able\n * to display <code>Direction</code> values.\n */\nstd::ostream& operator <<(std::ostream& os, const Direction& dir);\n\n/**\n * Overloads the <code>&gt;&gt;</code> operator so that it is able\n * to read <code>Direction</code> values.\n */\nstd::istream& operator >>(std::istream& os, Direction& dir);\n\n/**\n * Overloads the suffix version of the <code>++</code> operator to\n * work with <code>Direction</code> values.  The sole purpose of this\n * definition is to support the idiom\n *\n *<pre>\n *    for (Direction dir = NORTH; dir &lt;= WEST; dir++) ...\n *</pre>\n */\nDirection operator ++(Direction& dir, int);\n\n#endif // _direction_h\n"
  },
  {
    "path": "Library/util/gmath.cpp",
    "content": "/*\n * File: gmath.cpp\n * ---------------\n * This file implements the gmath.h interface.  In all cases, the\n * implementation for each function requires only one line of code,\n * which makes detailed documentation unnecessary.\n *\n * @version 2018/11/22\n * - added headless mode support\n * - alphabetized methods\n * @version 2016/10/14\n * - modified floating-point equality tests to use floatingPointEqual function\n */\n\n#include \"gmath.h\"\n#include <cmath>\n#include \"gtypes.h\"\n\nextern const double PI = 3.14159265358979323846;\nextern const double E  = 2.71828182845904523536;\n\n// See also:\n// http://stackoverflow.com/questions/4548004/how-to-correctly-and-standardly-compare-floats\ntemplate<typename T>\nbool withinEpsilon(T f1, T f2) {\n    if (std::isinf(f1) || std::isinf(f2)) return std::isinf(f1) && std::isinf(f2);\n    if (std::isnan(f1) || std::isnan(f2)) return false;\n    T larger = std::fmax(std::fabs(f1), std::fabs(f2));\n    T tolerance = std::numeric_limits<T>::epsilon() * larger;\n    return std::fabs(f1 - f2) <= tolerance;\n}\n\nbool floatingPointEqual(double f1, double f2) {\n    return withinEpsilon(f1, f2);\n}\n\nbool floatingPointEqual(float f1, float f2) {\n    return withinEpsilon(f1, f2);\n}\n\ndouble cosDegrees(double angle) {\n    return cos(toRadians(angle));\n}\n\ndouble sinDegrees(double angle) {\n    return sin(toRadians(angle));\n}\n\ndouble tanDegrees(double angle) {\n    return tan(toRadians(angle));\n}\n\ndouble toDegrees(double radians) {\n    return radians * 180 / PI;\n}\n\ndouble toRadians(double degrees) {\n    return degrees * PI / 180;\n}\n\ndouble vectorAngle(double x, double y) {\n    return floatingPointEqual(x, 0) && floatingPointEqual(y, 0)\n            ? 0 : toDegrees(atan2(-y, x));\n}\n\ndouble vectorAngle(const GPoint& pt) {\n    return vectorAngle(pt.x, pt.y);\n}\n\ndouble vectorDistance(double x, double y) {\n    return sqrt(x * x + y * y);\n}\n\ndouble vectorDistance(const GPoint& pt) {\n    return vectorDistance(pt.x, pt.y);\n}\n"
  },
  {
    "path": "Library/util/gmath.h",
    "content": "/*\n * File: gmath.h\n * -------------\n * This file exports several functions for working with graphical\n * geometry along with the mathematical constants <code>PI</code>\n * and <code>E</code>.\n */\n\n\n#ifndef _gmath_h\n#define _gmath_h\n\n#include <cmath>\n#include <limits>\n#include \"gtypes.h\"\n\n\n/**\n * The mathematical constant pi, which is the ratio of the circumference\n * of a circle to its diameter.\n */\nextern const double PI;\n\n/**\n * Constant: E\n * -----------\n * The mathematical constant e, which is the base of natural logarithms.\n */\nextern const double E;\n\n/**\n * Returns the trigonometric cosine of <code>angle</code>, which is\n * expressed in degrees.\n */\ndouble cosDegrees(double angle);\n\n/**\n * Returns true if the two given floating-point numbers are \"equal\".\n * Floating-point equality is tricky because of roundoff errors, which can cause\n * the numbers to be nearly the same but not identical.\n * This comparison tests whether difference of the two numbers is within machine\n * epsilon.\n */\nbool floatingPointEqual(double f1, double f2);\nbool floatingPointEqual(float f1, float f2);\n\n/**\n * Returns the trigonometric sine of <code>angle</code>, which is\n * expressed in degrees.\n */\ndouble sinDegrees(double angle);\n\n/**\n * Returns the trigonometric tangent of <code>angle</code>, which is\n * expressed in degrees.\n */\ndouble tanDegrees(double angle);\n\n/**\n * Converts an angle from radians to degrees.\n */\ndouble toDegrees(double radians);\n\n/**\n * Converts an angle from degrees to radians.\n */\ndouble toRadians(double degrees);\n\n/**\n * Returns the angle in degrees from the origin to the specified point.\n * This function takes account of the fact that the graphics coordinate\n * system is flipped in the <i>y</i> direction from the traditional\n * Cartesian plane.\n */\ndouble vectorAngle(double x, double y);\n\n/**\n * Returns the angle in degrees from the origin to the specified point.\n * This function takes account of the fact that the graphics coordinate\n * system is flipped in the <i>y</i> direction from the traditional\n * Cartesian plane.\n */\ndouble vectorAngle(const GPoint& pt);\n\n/**\n * Computes the distance between the origin and the specified point.\n */\ndouble vectorDistance(double x, double y);\n\n/**\n * Computes the distance between the origin and the specified point.\n */\ndouble vectorDistance(const GPoint& pt);\n\n#endif // _gmath_h\n"
  },
  {
    "path": "Library/util/observable.h",
    "content": "/*\n * File: observable.h\n * ------------------\n * This file defines an abstract superclass named <code>Observable</code> that\n * allows objects to store lists of observers, which are other objects that are\n * notified when some part of the state of the observable object changes.\n * This is an example of the classic Observer/Observable design pattern.\n *\n * @author Marty Stepp\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2017/10/25\n * - added addObserver/removeObserver overloads that accept reference param\n * @version 2016/11/20\n * - refactored to use template for event type\n * @version 2014/10/08\n * - removed 'using namespace' statement\n * - fixed bug in error string on removeObserver (said 'addObserver')\n * @version 2014/03/09\n * - initial version\n */\n\n\n#ifndef _observable_h\n#define _observable_h\n\n#include <set>\n\n#include \"error.h\"\n\n// forward declarations\ntemplate <class T>\nclass Observer;\n\n/**\n * This abstract superclass allows objects to store lists of observers,\n * which are other objects that would like to be notified when some part of the\n * state of the observable object changes.\n *\n * The intended usage is that you should extend Observable in the object you\n * want to be watched, then call notifyObservers in its code at appropriate\n * places.  Then create some other object that extends Observer and defines an\n * update method, and attach it to the Observable so it will be notified.\n */\ntemplate <typename T>\nclass Observable {\npublic:\n    /**\n     * Adds the given observer object to this observable object's internal list\n     * of observers.  The observer's update method will be called when the\n     * notifyObservers method is called afterward.\n     * Precondition: obs != nullptr\n     */\n    void addObserver(Observer<T>* obs);\n\n    /**\n     * Adds the given observer object to this observable object's internal list\n     * of observers.  The observer's update method will be called when the\n     * notifyObservers method is called afterward.\n     */\n    void addObserver(Observer<T>& obs);\n\n    /**\n     * Calls the update method of all observers that have been added previously\n     * to this observable object.\n     * The given argument can be passed to provide extra information to the\n     * observers if necessary.  If no argument is passed, nullptr is used.\n     */\n    void notifyObservers(T arg = T());\n\n    /**\n     * Removes the given observer object from this observable object's internal\n     * list of observers.  The observer will no longer be notified.\n     */\n    void removeObserver(Observer<T>* obs);\n\n    /**\n     * Removes the given observer object from this observable object's internal\n     * list of observers.  The observer will no longer be notified.\n     */\n    void removeObserver(Observer<T>& obs);\n\nprivate:\n    // a list of observers to notify when notifyObservers is called\n    std::set<Observer<T>*> m_observers;\n};\n\n/**\n * An object that wishes to be notified when the state of an observable object\n * changes.\n */\ntemplate <typename T>\nclass Observer {\npublic:\n    /**\n     * Called by an Observable to inform this observer that its state changed.\n     * The 'obs' parameter will be a pointer to the observable object itself\n     * on which the state change occurred.  The 'arg' parameter will be\n     * the extra information passed by the Observable when it called\n     * notifyObservers, if any.\n     */\n    virtual void update(Observable<T>* obs, const T& arg = T()) = 0;\n};\n\ntemplate <typename T>\nvoid Observable<T>::addObserver(Observer<T>* obs) {\n    if (!obs) {\n        error(\"Observable::addObserver: null observer passed\");\n    }\n    m_observers.insert(obs);\n}\n\ntemplate <typename T>\nvoid Observable<T>::addObserver(Observer<T>& obs) {\n    addObserver(&obs);\n}\n\ntemplate <typename T>\nvoid Observable<T>::notifyObservers(T arg) {\n    for (Observer<T>* obs : m_observers) {\n        obs->update(this, arg);\n    }\n}\n\ntemplate <typename T>\nvoid Observable<T>::removeObserver(Observer<T>* obs) {\n    if (!obs) {\n        error(\"Observable::removeObserver: null observer passed\");\n    }\n    m_observers.erase(obs);\n}\n\ntemplate <typename T>\nvoid Observable<T>::removeObserver(Observer<T>& obs) {\n    removeObserver(&obs);\n}\n\n#endif // _observable_h\n"
  },
  {
    "path": "Library/util/random.cpp",
    "content": "/*\n * File: random.cpp\n * ----------------\n * This file implements the random.h interface.\n *\n * @version 2019/05/16\n * - added randomColor that takes min/max RGB\n * @version 2017/10/05\n * - added randomFeedClear\n * @version 2017/09/28\n * - moved random 'feed' functions into autograder namespace\n * - ensure that randomly fed integers are within the specified range\n * @version 2016/10/04\n * - removed all static variables (replaced with STATIC_VARIABLE macros)\n * @version 2016/08/02\n * - added randomColor, randomColorString\n * @version 2014/10/19\n * - alphabetized functions\n * @version 2014/10/08\n * - removed 'using namespace' statement\n */\n\n#include \"random.h\"\n#include <cstdlib>\n#include <cmath>\n#include <ctime>\n#include <iostream>\n#include <iomanip>\n#include <queue>\n#include <sstream>\n#include \"error.h\"\n\n/* Private function prototype */\n\nstatic void initRandomSeed();\n\nbool randomBool() {\n    return randomChance(0.5);\n}\n\n/*\n * Implementation notes: randomChance\n * ----------------------------------\n * The code for randomChance calls randomReal(0, 1) and then checks\n * whether the result is less than the requested probability.\n */\nbool randomChance(double p) {\n    initRandomSeed();\n    return randomReal(0, 1) < p;\n}\n\nint randomColor() {\n    initRandomSeed();\n    return rand() & 0x00ffffff;\n}\n\nint randomColor(int minRGB, int maxRGB) {\n    if (minRGB < 0 || minRGB > 255 || maxRGB < 0 || maxRGB > 255\n            || minRGB > maxRGB) {\n        error(\"randomColor: min/max values out of range\");\n    }\n    int r = randomInteger(minRGB, maxRGB);\n    int g = randomInteger(minRGB, maxRGB);\n    int b = randomInteger(minRGB, maxRGB);\n    return r << 16 | g << 8 | b;\n}\n\n// see convertRGBToColor in gcolor.h (repeated here to avoid Qt dependency)\nstd::string randomColorString() {\n    int rgb = randomColor();\n    std::ostringstream os;\n    os << std::hex << std::uppercase << \"#\";\n    os << std::setw(2) << std::setfill('0') << (rgb >> 16 & 0xFF);\n    os << std::setw(2) << std::setfill('0') << (rgb >> 8 & 0xFF);\n    os << std::setw(2) << std::setfill('0') << (rgb & 0xFF);\n    return os.str();\n}\n\nstd::string randomColorString(int minRGB, int maxRGB) {\n    int rgb = randomColor(minRGB, maxRGB);\n    std::ostringstream os;\n    os << std::hex << std::uppercase << \"#\";\n    os << std::setw(2) << std::setfill('0') << (rgb >> 16 & 0xFF);\n    os << std::setw(2) << std::setfill('0') << (rgb >> 8 & 0xFF);\n    os << std::setw(2) << std::setfill('0') << (rgb & 0xFF);\n    return os.str();\n}\n\n/*\n * Implementation notes: randomInteger\n * -----------------------------------\n * The code for randomInteger produces the number in four steps:\n *\n * 1. Generate a random real number d in the range [0 .. 1).\n * 2. Scale the number to the range [0 .. N) where N is the number of values.\n * 3. Translate the number so that the range starts at the appropriate value.\n * 4. Convert the result to the next lower integer.\n *\n * The implementation is complicated by the fact that both the expression\n *\n *     RAND_MAX + 1\n *\n * and the expression for the number of values\n *\n *     high - low + 1\n *\n * can overflow the integer range.  These calculations must therefore be\n * performed using doubles instead of ints.\n */\nint randomInteger(int low, int high) {\n    initRandomSeed();\n    double d = rand() / (double(RAND_MAX) + 1);\n    double s = d * (double(high) - low + 1);\n    return int(floor(low + s));\n}\n\n/*\n * Implementation notes: randomReal\n * --------------------------------\n * The code for randomReal is similar to that for randomInteger,\n * without the final conversion step.\n */\ndouble randomReal(double low, double high) {\n    initRandomSeed();\n    double d = rand() / (double(RAND_MAX) + 1);\n    double s = d * (high - low);\n    return low + s;\n}\n\n/*\n * Implementation notes: setRandomSeed\n * -----------------------------------\n * The setRandomSeed function simply forwards its argument to srand.\n * The call to initRandomSeed is required to set the initialized flag.\n */\nvoid setRandomSeed(int seed) {\n    initRandomSeed();\n    srand(seed);\n}\n\n/*\n * Implementation notes: initRandomSeed\n * ------------------------------------\n * The initRandomSeed function declares a static variable that keeps track\n * of whether the seed has been initialized.  The first time initRandomSeed\n * is called, initialized is false, so the seed is set to the current time.\n */\nstatic void initRandomSeed() {\n    static bool _initialized = false;\n    if (!_initialized) {\n        srand(int(time(nullptr)));\n        rand();   // BUGFIX: throwaway call to get randomness going\n        _initialized = true;\n    }\n}\n"
  },
  {
    "path": "Library/util/random.h",
    "content": "/*\n * File: random.h\n * --------------\n * This file exports functions for generating pseudorandom numbers.\n *\n * @version 2019/05/16\n * - added randomColor that takes min/max RGB\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2017/10/05\n * - added randomFeedClear\n * @version 2017/09/28\n * - moved random 'feed' functions into autograder namespace\n * @version 2016/08/02\n * - added randomColor, randomColorString\n * @version 2014/10/19\n * - alphabetized functions\n */\n\n\n#ifndef _random_h\n#define _random_h\n\n#include <string>\n\n/**\n * Returns <code>true</code> with 50% probability.\n */\nbool randomBool();\n\n/**\n * Returns <code>true</code> with the probability indicated by <code>p</code>.\n * The argument <code>p</code> must be a floating-point number between\n * 0 (never) and 1 (always).  For example, calling\n * <code>randomChance(.30)</code> returns <code>true</code> 30 percent\n * of the time.\n */\nbool randomChance(double p);\n\n/**\n * Returns a random RGB color as an integer.\n * See also: gwindow.h convertRGBToColor()\n */\nint randomColor();\n\n/**\n * Returns a random RGB color as an integer, with the value of the RGB components\n * bounded between the given minimum and maximum.\n * @throw ErrorException if min or max is not in [0..255] or min > max\n * See also: gwindow.h convertRGBToColor()\n */\nint randomColor(int minRGB, int maxRGB);\n\n/**\n * Returns a random RGB color as a hex string like \"#ff00ff\" for magenta.\n * See also: gwindow.h convertColorToRGB()\n */\nstd::string randomColorString();\n\n/**\n * Returns a random RGB color as a hex string like \"#ff00ff\" for magenta,\n * with the value of the RGB components bounded between the given minimum and maximum.\n * @throw ErrorException if min or max is not in [0..255] or min > max\n * See also: gwindow.h convertColorToRGB()\n */\nstd::string randomColorString(int minRGB, int maxRGB);\n\n/**\n * Returns a random integer in the range <code>low</code> to\n * <code>high</code>, inclusive.\n */\nint randomInteger(int low, int high);\n\n/**\n * Returns a random real number in the half-open interval\n * [<code>low</code>&nbsp;..&nbsp;<code>high</code>).  A half-open\n * interval includes the first endpoint but not the second, which\n * means that the result is always greater than or equal to\n * <code>low</code> but strictly less than <code>high</code>.\n */\ndouble randomReal(double low, double high);\n\n/**\n * Sets the internal random number seed to the specified value.  You\n * can use this function to set a specific starting point for the\n * pseudorandom sequence or to ensure that program behavior is\n * repeatable during the debugging phase.\n */\nvoid setRandomSeed(int seed);\n\n#endif // _random_h\n"
  },
  {
    "path": "Library/util/require.cpp",
    "content": "/*\n * File: require.cpp\n * -----------------\n * This file implements the require.h interface.\n *\n * @version 2018/09/05\n * - initial version\n */\n\n#include \"require.h\"\n#include <string>\n#include \"error.h\"\n\nnamespace require {\n\nstatic void _errorMessage(const std::string& caller, const std::string& valueName, const std::string& details) {\n    std::string overallMessage = \"\";\n    if (!caller.empty()) {\n        overallMessage += caller;\n    }\n    if (!valueName.empty() || !details.empty()) {\n        if (!overallMessage.empty()) {\n            overallMessage += \": \";\n        }\n        if (!valueName.empty()) {\n            if (!overallMessage.empty()) {\n                overallMessage += \" \";\n            }\n            overallMessage += valueName;\n            if (!details.empty()) {\n                overallMessage + \" \";\n            }\n        }\n        overallMessage += details;\n    }\n    error(overallMessage);\n}\n\n#define _spl_assert(test, caller, valueName, details) \\\n    if (!(test)) { \\\n        _errorMessage((caller), _default((valueName), \"value\"), (details)); \\\n    }\n\n#define _default(value, defaultValue) ((value) == std::string(\"\") ? (defaultValue) : (value))\n\nvoid inRange(double value, double min, double max, const std::string& caller, const std::string& valueName, const std::string& details) {\n    _spl_assert(min <= value && value <= max, caller, _default(valueName, \"value\"), _default(details, \" must be between \" + std::to_string(min) + \" and \" + std::to_string(max) + \" inclusive but was \" + std::to_string(value)));\n}\n\nvoid inRange(int value, int min, int max, const std::string& caller, const std::string& valueName, const std::string& details) {\n    _spl_assert(min <= value && value <= max, caller, _default(valueName, \"value\"), _default(details, \" must be between \" + std::to_string(min) + \" and \" + std::to_string(max) + \" inclusive but was \" + std::to_string(value)));\n}\n\nvoid inRange2D(double x, double y, double maxX, double maxY, const std::string& caller, const std::string& xValueName, const std::string& yValueName, const std::string& details) {\n    inRange2D(x, y, /* minX */ 0.0, /* minY */ 0.0, maxX, maxY, caller, xValueName, yValueName, details);\n}\n\nvoid inRange2D(double x, double y, double minX, double minY, double maxX, double maxY, const std::string& caller, const std::string& xValueName, const std::string& yValueName, const std::string& details) {\n    inRange(x, minX, maxX, caller, xValueName, details);\n    inRange(y, minY, maxY, caller, yValueName, details);\n}\n\nvoid inRange2D(int x, int y, int maxX, int maxY, const std::string& caller, const std::string& xValueName, const std::string& yValueName, const std::string& details) {\n    inRange2D(x, y, /* minX */ 0, /* minY */ 0, maxX, maxY, caller, xValueName, yValueName, details);\n}\n\nvoid inRange2D(int x, int y, int minX, int minY, int maxX, int maxY, const std::string& caller, const std::string& xValueName, const std::string& yValueName, const std::string& details) {\n    inRange(x, minX, maxX, caller, xValueName, details);\n    inRange(y, minY, maxY, caller, yValueName, details);\n}\n\nvoid nonEmpty(const std::string& str, const std::string& caller, const std::string& valueName, const std::string& details) {\n    _spl_assert(!str.empty(), caller, _default(valueName, \"string\"), _default(details, \" must not be empty\"));\n}\n\nvoid nonNegative(double value, const std::string& caller, const std::string& valueName, const std::string& details) {\n    _spl_assert(value >= 0.0, caller, _default(valueName, \"value\"), _default(details, \" must be non-negative but was \" + std::to_string(value)));\n}\n\nvoid nonNegative(int value, const std::string& caller, const std::string& valueName, const std::string& details) {\n    _spl_assert(value >= 0, caller, _default(valueName, \"value\"), _default(details, \" must be non-negative but was \" + std::to_string(value)));\n}\n\nvoid nonNegative(long value, const std::string& caller, const std::string& valueName, const std::string& details) {\n    _spl_assert(value >= 0, caller, _default(valueName, \"value\"), _default(details, \" must be non-negative but was \" + std::to_string(value)));\n}\n\nvoid nonNegative2D(double x, double y, const std::string& caller, const std::string& xValueName, const std::string& yValueName, const std::string& details) {\n    nonNegative(x, caller, xValueName, details);\n    nonNegative(y, caller, yValueName, details);\n}\n\nvoid nonNegative2D(int x, int y, const std::string& caller, const std::string& xValueName, const std::string& yValueName, const std::string& details) {\n    nonNegative(x, caller, xValueName, details);\n    nonNegative(y, caller, yValueName, details);\n}\n\nvoid nonNull(const void* ptr, const std::string& caller, const std::string& valueName, const std::string& details) {\n    _spl_assert(ptr != nullptr, caller, _default(valueName, \"value\"), _default(details, \" must be non-null\"));\n}\n\nvoid positive(double value, const std::string& caller, const std::string& valueName, const std::string& details) {\n    _spl_assert(value > 0.0, caller, _default(valueName, \"value\"), _default(details, \" must be positive but was \" + std::to_string(value)));\n}\n\nvoid positive(int value, const std::string& caller, const std::string& valueName, const std::string& details) {\n    _spl_assert(value > 0, caller, _default(valueName, \"value\"), _default(details, \" must be positive but was \" + std::to_string(value)));\n}\n\nvoid require(bool test, const std::string& caller, const std::string& details) {\n    _spl_assert(test, caller, \" \", details); // use empty string to avoid erroneous use of default value\n}\n\n} // namespace require\n"
  },
  {
    "path": "Library/util/require.h",
    "content": "/*\n * File: require.h\n * ---------------\n *\n * This file contains assertion functions for argument checking within the\n * code of the Stanford C++ library itself.\n */\n\n\n#ifndef _require_h\n#define _require_h\n\n#include <string>\n\n/**\n * @private\n */\nnamespace require {\n\nvoid inRange(double value, double min, double max, const std::string& caller = \"\", const std::string& valueName = \"\", const std::string& details = \"\");\nvoid inRange(int value, int min, int max, const std::string& caller = \"\", const std::string& valueName = \"\", const std::string& details = \"\");\nvoid inRange2D(double x, double y, double maxX, double maxY, const std::string& caller = \"\", const std::string& xValueName = \"\", const std::string& yValueName = \"\", const std::string& details = \"\");\nvoid inRange2D(double x, double y, double minX, double minY, double maxX, double maxY, const std::string& caller = \"\", const std::string& xValueName = \"\", const std::string& yValueName = \"\", const std::string& details = \"\");\nvoid inRange2D(int x, int y, int maxX, int maxY, const std::string& caller = \"\", const std::string& xValueName = \"\", const std::string& yValueName = \"\", const std::string& details = \"\");\nvoid inRange2D(int x, int y, int minX, int minY, int maxX, int maxY, const std::string& caller = \"\", const std::string& xValueName = \"\", const std::string& yValueName = \"\", const std::string& details = \"\");\nvoid nonEmpty(const std::string& str, const std::string& caller = \"\", const std::string& valueName = \"\", const std::string& details = \"\");\nvoid nonNegative(double value, const std::string& caller = \"\", const std::string& valueName = \"\", const std::string& details = \"\");\nvoid nonNegative(int value, const std::string& caller = \"\", const std::string& valueName = \"\", const std::string& details = \"\");\nvoid nonNegative(long value, const std::string& caller = \"\", const std::string& valueName = \"\", const std::string& details = \"\");\nvoid nonNegative2D(double x, double y, const std::string& caller = \"\", const std::string& xValueName = \"\", const std::string& yValueName = \"\", const std::string& details = \"\");\nvoid nonNegative2D(int x, int y, const std::string& caller = \"\", const std::string& xValueName = \"\", const std::string& yValueName = \"\", const std::string& details = \"\");\nvoid nonNull(const void* ptr, const std::string& caller = \"\", const std::string& valueName = \"\", const std::string& details = \"\");\nvoid positive(double value, const std::string& caller = \"\", const std::string& valueName = \"\", const std::string& details = \"\");\nvoid positive(int value, const std::string& caller = \"\", const std::string& valueName = \"\", const std::string& details = \"\");\nvoid require(bool test, const std::string& caller = \"\", const std::string& details = \"\");\n\n} // namespace require\n\n#endif // _require_h\n"
  },
  {
    "path": "Library/util/sound.cpp",
    "content": "/*\n * File: sound.cpp\n * ---------------\n * Implementation of the Sound class.\n * \n * 2024/9 juliez: Restored functionality to play sound file on updated QtMultimedia.\n */\n\n#include \"sound.h\"\n#include \"filelib.h\"\n#include \"gthread.h\"\n#include <QAudioOutput>\n\n/*static*/ QMediaPlayer* Sound::_qmediaPlayer = nullptr;\n/*static*/ Sound::Status Sound::_playbackStatus = Sound::NONE;\n\n/*static*/ void Sound::initialize() {\n    if (!_qmediaPlayer) {\n        GThread::runOnQtGuiThreadAsync([]() {\n            if (!_qmediaPlayer) {\n               _qmediaPlayer = new QMediaPlayer;\n                _qmediaPlayer->setAudioOutput(new QAudioOutput);\n                QObject::connect(_qmediaPlayer, &QMediaPlayer::mediaStatusChanged, Sound::statusChanged);\n                QObject::connect( _qmediaPlayer, &QMediaPlayer::errorOccurred, Sound::errorOccurred);\n            }\n        });\n    }\n}\n\n/* static */ bool Sound::waitComplete() {\n    // cannot wait on this thread if it is GUI thread (i.e. deadlock)\n    if (GThread::iAmRunningOnTheQtGuiThread()) {\n        return false;\n    }\n    while (_playbackStatus == BUSY) GThread::msleep(100);\n    return _playbackStatus == ERROR;\n}\n\n/* static */ void Sound::playSource(const QUrl &qurl) {\n    _playbackStatus = BUSY;\n    GThread::runOnQtGuiThread([qurl]() {\n        _qmediaPlayer->setSource(qurl);\n        _qmediaPlayer->play(); // dispatch is async, play will  execute on Qt thread\n     });\n    bool hadError = waitComplete();\n    if (hadError) {\n        error(\"Sound::play() error \" + _qmediaPlayer->errorString().toStdString() + \" (\" + _qmediaPlayer->source().toString().toStdString() + \")\");\n    }\n}\n\n/*static*/ void Sound::playFile(const std::string& filename) {\n    initialize();\n    std::string absPath = getAbsolutePath(filename);\n    if (!fileExists(absPath)) {\n        error(\"Sound::playFile() file not found (\" + filename + \")\");\n    }\n    QUrl qurl = QUrl::fromLocalFile(QString::fromStdString(absPath));\n    playSource(qurl);\n}\n\n/*static*/ void Sound::playURL(const std::string& url) {\n    initialize();\n    QUrl qurl = QUrl(QString::fromStdString(url));\n    if (!qurl.isValid()) {\n        error(\"Sound::playURL() url not valid (\" + url + \")\");\n    }\n    playSource(qurl);\n}\n\n/*static*/ void Sound::statusChanged(QMediaPlayer::MediaStatus update) {\n    switch (update) {\n        case QMediaPlayer::NoMedia:\n            _playbackStatus = NONE;\n            break;\n        case QMediaPlayer::LoadingMedia:\n        case QMediaPlayer::LoadedMedia:\n        case QMediaPlayer::StalledMedia:\n        case QMediaPlayer::BufferingMedia:\n        case QMediaPlayer::BufferedMedia:\n            _playbackStatus = BUSY;\n            break;\n        case QMediaPlayer::EndOfMedia:\n            _playbackStatus = COMPLETE;\n            break;\n        case QMediaPlayer::InvalidMedia:\n            _playbackStatus = ERROR;\n            break;\n    }\n}\n\n/* static */ void Sound::errorOccurred(QMediaPlayer::Error, const QString &) {\n   _playbackStatus = ERROR;\n}\n"
  },
  {
    "path": "Library/util/sound.h",
    "content": "/*\n * File: sound.h\n * -------------\n * This file defines functions to play a sound.\n *\n */\n\n#ifndef _sound_h\n#define _sound_h\n\n#include <string>\n#include <QMediaPlayer>\n#include <QUrl>\n\n/**\n * Play a sound. The sound resource can be read either from\n * a local file or a URL.\n *\n * Sample uses:\n *\n *<pre>\n *    Sound::playFile(\"all-right-now.mp3\");\n *    Sound::playURL(\"https://download.samplelib.com/wav/sample-3s.wav\");\n *</pre>\n */\nclass Sound {\npublic:\n\n    /**\n     * Play sound read from file.\n     */\n    static void playFile(const std::string& filename);\n\n    /**\n     * Play sound read from url.\n     */\n    static void playURL(const std::string& url);\n\n\nprivate:\n    static QMediaPlayer* _qmediaPlayer;\n\n    enum Status {\n        NONE = 0,\n        BUSY = 1,\n        COMPLETE = 2,\n        ERROR = 3,\n    };\n    static Status _playbackStatus;\n\n    static void initialize();\n    static void statusChanged(QMediaPlayer::MediaStatus update);\n    static void errorOccurred(QMediaPlayer::Error err, const QString &errorString);\n    static void playSource(const QUrl &qurl);\n    static bool waitComplete();\n};\n\n#endif // _sound_h\n"
  },
  {
    "path": "Library/util/splversion.cpp",
    "content": "/*\n * File: splversion.cpp\n * --------------------\n * @author Julie Zelenski\n * updated for installed static lib\n */\n\n#include \"private/build.h\"\n#include \"splversion.h\"\n#include \"filelib.h\"\n#include <QString>\n#include <QStandardPaths>\n#include <QLibraryInfo>\n\nstatic std::string installedLocation()\n{\n    return QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation).toStdString() +  \"/cs106\";\n}\n\nstd::string getLibraryInfoPanelMessage()\n{\n    return \"<html><p>\" \"Stanford C++ Library version \" SPL_VERSION \"<br>\"\n        \"<br>\"\n        \"<small>Library built on \" SPL_BUILD_DATE \" by \" SPL_BUILD_USER \"<br>\"\n        \"Installed into \" + installedLocation() + \"<br>\"\n        \"Compiled on QT version \" + QT_VERSION_STR + \"<br>\"\n        \"Running on QT version \" + QLibraryInfo::version().toString().toStdString() + \"<br>\"\n        \"<br>\"\n        \"Libraries originally authored by Eric Roberts.<br>\"\n        \"Updates from Marty Stepp, Keith Schwarz, and Julie Zelenski.<br>\"\n        \"&copy; Stanford University &bull; 2003-2025.\";\n}\n\nstd::string getLibraryVersion()\n{\n    return std::string(SPL_VERSION);\n}\n\nstd::string getLibraryPathForResource(const std::string& name)\n{\n    return installedLocation() + \"/resources/\" + name;\n}\n\n"
  },
  {
    "path": "Library/util/splversion.h",
    "content": "/*\n * File: splversion.h\n * ------------------\n * functions to report version/build info of the\n * Stanford C++ library and where installed.\n *\n */\n\n#pragma once\n#include <string>\n\nstd::string getLibraryInfoPanelMessage();\nstd::string getLibraryVersion();\nstd::string getLibraryPathForResource(const std::string& name);\n"
  },
  {
    "path": "Library/util/strlib.cpp",
    "content": "/*\n * File: strlib.cpp\n * ----------------\n * This file implements the strlib.h interface.\n * \n * @version 2018/11/14\n * - added std::to_string for bool, char, pointer, and generic template type T\n * - bug fix for pointerToString (was putting two \"0x\" prefixes)\n * @version 2018/09/02\n * - added padLeft, padRight\n * @version 2017/10/24\n * - print nullptr instead of null in uppercase\n * @version 2016/11/07\n * - bug fix: urlDecode throws error on invalid encodings (courtesy GitHub @scinart)\n * @version 2016/10/30\n * - alphabetized functions\n * - added overloads that take type char instead of string:\n *   stringContains, stringIndexOf, stringJoin, stringLastIndexOf, stringReplace,\n *   stringSplit, toLowerCase, toUpperCase\n * @version 2016/10/13\n * - modified writeQuotedString to return ostream\n * @version 2016/08/03\n * - modified readQuotedString not to throw error() on parse failures\n *   (needed to support idiomatic silent-failing >> operators)\n * @version 2015/11/07\n * - fixed bugs in urlDecode (wasn't decoding % sequences properly, oops)\n * @version 2015/10/26\n * - added charToInteger/integerToChar functions\n * @version 2015/06/19\n * - slight bug fix to make stringToInteger functions compile with int radix\n * @version 2015/05/22\n * - slight bug fix in stringToBool function\n * @version 2014/10/31\n * - fixed infinite loop bug in stringReplace function\n * @version 2014/10/19\n * - alphabetized functions\n * - added several 'inPlace' variants of existing functions that return strings\n * @version 2014/10/08\n * - removed 'using namespace' statement\n */\n\n#include \"strlib.h\"\n#include <cctype>\n#include <iomanip>\n#include <iostream>\n#include <sstream>\n\n#include \"error.h\"\n#include \"vector.h\"\n#include \"require.h\"\n\n/* Function prototypes */\n\nstd::string boolToString(bool b) {\n    return (b ? \"true\" : \"false\");\n}\n\nstd::string boolToString(int b) {\n    return (b ? \"true\" : \"false\");\n}\n\nint charToInteger(char c) {\n    if (c < '0' || c > '9') {\n        std::ostringstream out;\n        out << \"charToInteger: character is not numeric: '\" << c\n            << \"' (ASCII value \" << (int) c << \")\";\n        error(out.str());\n    }\n    return c - '0';\n}\n\nstd::string charToString(char c) {\n    std::string s;\n    s += c;\n    return s;\n}\n\nstd::string doubleToString(double d) {\n    return realToString(d);\n}\n\nbool endsWith(const std::string& str, char suffix) {\n    return str.length() > 0 && str[str.length() - 1] == suffix;\n}\n\nbool endsWith(const std::string& str, const std::string& suffix) {\n    int nChars = suffix.length();\n    int start = str.length() - nChars;\n    if (start < 0) return false;\n    for (int i = 0; i < nChars; i++) {\n        if (str[start + i] != suffix[i]) return false;\n    }\n    return true;\n}\n\n/*\n * Implementation notes: equalsIgnoreCase\n * --------------------------------------\n * This implementation uses a for loop to cycle through the characters in\n * each string.  Converting each string to uppercase and then comparing\n * the results makes for a shorter but less efficient implementation.\n */\nbool equalsIgnoreCase(const std::string& s1, const std::string& s2) {\n    if (s1.length() != s2.length()) return false;\n    int nChars = s1.length();\n    for (int i = 0; i < nChars; i++) {\n        if (tolower(s1[i]) != tolower(s2[i])) return false;\n    }\n    return true;\n}\n\nstd::string htmlDecode(const std::string& s) {\n    std::string result = s;\n    stringReplaceInPlace(result, \"&lt;\", \"<\");\n    stringReplaceInPlace(result, \"&gt;\", \">\");\n    stringReplaceInPlace(result, \"&quot;\", \"\\\"\");\n    stringReplaceInPlace(result, \"&amp;\", \"&\");\n    return result;\n}\n\nstd::string htmlEncode(const std::string& s) {\n    std::string result = s;\n    stringReplaceInPlace(result, \"&\", \"&amp;\");\n    stringReplaceInPlace(result, \"<\", \"&lt;\");\n    stringReplaceInPlace(result, \">\", \"&gt;\");\n    stringReplaceInPlace(result, \"\\\"\", \"&quot;\");\n    return result;\n}\n\nchar integerToChar(int n) {\n    if (n < 0 || n > 9) {\n        std::ostringstream out;\n        out << \"integerToChar: number must be between 0-9: \" << n;\n        error(out.str());\n    }\n    return (char) (n + '0');\n}\n\n/*\n * Implementation notes: numeric conversion\n * ----------------------------------------\n * These functions use the <sstream> library to perform the conversion.\n */\nstd::string integerToString(int n, int radix) {\n    if (radix <= 0) {\n        error(\"integerToString: Illegal radix: \" + std::to_string(radix));\n    }\n    std::ostringstream stream;\n    if (radix != 10) {\n        stream << std::setbase(radix);\n    }\n    stream << n;\n    return stream.str();\n}\n\nstd::string longToString(long n, int radix) {\n    if (radix <= 0) {\n        error(\"longToString: Illegal radix: \" + std::to_string(radix));\n    }\n    std::ostringstream stream;\n    if (radix != 10) {\n        stream << std::setbase(radix);\n    }\n    stream << n;\n    return stream.str();\n}\n\nstd::string padLeft(const std::string& s, int length, char fill) {\n    if ((int) s.length() >= length) {\n        return s;\n    } else {\n        std::ostringstream out;\n        for (int i = 0, count = length - (int) s.length(); i < count; i++) {\n            out << fill;\n        }\n        out << s;\n        return out.str();\n    }\n}\n\nstd::string padRight(const std::string& s, int length, char fill) {\n    if ((int) s.length() >= length) {\n        return s;\n    } else {\n        std::ostringstream out;\n        out << s;\n        for (int i = 0, count = length - (int) s.length(); i < count; i++) {\n            out << fill;\n        }\n        return out.str();\n    }\n}\n\nstd::string pointerToString(void* p) {\n    if (p) {\n        std::ostringstream stream;\n        stream << std::hex;\n        stream << p;\n        return stream.str();\n    } else {\n        return \"nullptr\";\n    }\n}\n\nstd::string realToString(double d) {\n    std::ostringstream stream;\n    stream << std::uppercase << d;\n    return stream.str();\n}\n\nbool startsWith(const std::string& str, char prefix) {\n    return str.length() > 0 && str[0] == prefix;\n}\n\nbool startsWith(const std::string& str, const std::string& prefix) {\n    if (str.length() < prefix.length()) return false;\n    int nChars = prefix.length();\n    for (int i = 0; i < nChars; i++) {\n        if (str[i] != prefix[i]) return false;\n    }\n    return true;\n}\n\nbool stringIsBool(const std::string& str) {\n    return str == \"true\" || str == \"false\";\n}\n\nbool stringIsDouble(const std::string& str) {\n    return stringIsReal(str);\n}\n\nbool stringIsInteger(const std::string& str, int radix) {\n    if (radix <= 0) {\n        error(\"stringIsInteger: Illegal radix: \" + std::to_string(radix));\n    }\n    std::istringstream stream(trim(str));\n    stream >> std::setbase(radix);\n    int value;\n    stream >> value;\n    return !(stream.fail() || !stream.eof());\n}\n\nbool stringIsLong(const std::string& str, int radix) {\n    if (radix <= 0) {\n        error(\"stringIsLong: Illegal radix: \" + std::to_string(radix));\n    }\n    std::istringstream stream(trim(str));\n    stream >> std::setbase(radix);\n    long value;\n    stream >> value;\n    return !(stream.fail() || !stream.eof());\n}\n\nbool stringIsReal(const std::string& str) {\n    std::istringstream stream(trim(str));\n    double value;\n    stream >> value;\n    return !(stream.fail() || !stream.eof());\n}\n\nbool stringContains(const std::string& s, char ch) {\n    return s.find(ch) != std::string::npos;\n}\n\nbool stringContains(const std::string& s, const std::string& substring) {\n    return s.find(substring) != std::string::npos;\n}\n\nint stringIndexOf(const std::string& s, char ch, int startIndex) {\n    size_t index = s.find(ch, (size_t) startIndex);\n    if (index == std::string::npos) {\n        return -1;\n    } else {\n        return index;\n    }\n}\n\nint stringIndexOf(const std::string& s, const std::string& substring, int startIndex) {\n    size_t index = s.find(substring, (size_t) startIndex);\n    if (index == std::string::npos) {\n        return -1;\n    } else {\n        return index;\n    }\n}\n\nstd::string stringJoin(const Vector<std::string>& v, char delimiter) {\n    std::string delim = charToString(delimiter);\n    return stringJoin(v, delim);\n}\n\nstd::string stringJoin(const Vector<std::string>& v, const std::string& delimiter) {\n    if (v.isEmpty()) {\n        return \"\";\n    } else {\n        std::ostringstream out;\n        out << v[0];\n        for (int i = 1; i < (int) v.size(); i++) {\n            out << delimiter;\n            out << v[i];\n        }\n        return out.str();\n    }\n}\n\nint stringLastIndexOf(const std::string& s, char ch, int startIndex) {\n    size_t index = s.rfind(ch, (size_t) startIndex);\n    if (index == std::string::npos) {\n        return -1;\n    } else {\n        return index;\n    }\n}\n\nint stringLastIndexOf(const std::string& s, const std::string& substring, int startIndex) {\n    size_t index = s.rfind(substring, (size_t) startIndex);\n    if (index == std::string::npos) {\n        return -1;\n    } else {\n        return index;\n    }\n}\n\nstd::string stringReplace(const std::string& str, char old, char replacement, int limit) {\n    std::string str2 = str;\n    stringReplaceInPlace(str2, old, replacement, limit);\n    return str2;\n}\n\nstd::string stringReplace(const std::string& str, const std::string& old, const std::string& replacement, int limit) {\n    require::nonEmpty(old, \"stringReplace\", \"old\");\n    std::string str2 = str;\n    stringReplaceInPlace(str2, old, replacement, limit);\n    return str2;\n}\n\nint stringReplaceInPlace(std::string& str, char old, char replacement, int limit) {\n    int count = 0;\n    for (size_t i = 0, len = str.length(); i < len; i++) {\n        if (str[i] == old) {\n            str[i] = replacement;\n            count++;\n            if (limit > 0 && count >= limit) {\n                break;\n            }\n        }\n    }\n    return count;\n}\n\nint stringReplaceInPlace(std::string& str, const std::string& old, const std::string& replacement, int limit) {\n    require::nonEmpty(old, \"stringReplaceInPlace\", \"old\");\n    int count = 0;\n    size_t startIndex = 0;\n    size_t rlen = replacement.length();\n    while (limit <= 0 || count < limit) {\n        size_t index = str.find(old, startIndex);\n        if (index == std::string::npos) {\n            break;\n        }\n        str.replace(index, old.length(), replacement);\n        startIndex = index + rlen;\n        count++;\n    }\n    return count;\n}\n\nVector<std::string> stringSplit(const std::string& str, char delimiter, int limit) {\n    std::string delim = charToString(delimiter);\n    return stringSplit(str, delim, limit);\n}\n\nVector<std::string> stringSplit(const std::string& str, const std::string& delimiter, int limit) {\n    require::nonEmpty(delimiter, \"stringSplit\", \"delimiter\");\n    std::string str2 = str;\n    Vector<std::string> result;\n    int count = 0;\n    size_t index = 0;\n    while (limit < 0 || count < limit) {\n        size_t found = str2.find(delimiter, index);\n        if (found == std::string::npos) {\n            break;\n        }\n        // don't add empty token, coalesce adjacent/leading delimiters\n        if (found != index) result.add(str2.substr(index, found - index));\n        index = found + delimiter.length();\n        count++;\n    }\n    if ((int) str2.length() > index) {\n        result.add(str2.substr(index));\n    }\n\n    return result;\n}\n\nbool stringToBool(const std::string& str) {\n    if (str == \"true\" || str == \"1\") {\n        return true;\n    } else if (str == \"false\" || str == \"0\") {\n        return false;\n    }\n    std::istringstream stream(trim(str));\n    bool value;\n    stream >> std::boolalpha >> value;\n    if (stream.fail() || !stream.eof()) {\n        error(\"stringToBool: Illegal bool format (\" + str + \")\");\n    }\n    return value;\n}\n\nchar stringToChar(const std::string& str) {\n    if ((int) str.length() != 1) {\n        error(\"stringToChar: string must contain exactly 1 character\");\n    }\n    return str[0];\n}\n\ndouble stringToDouble(const std::string& str) {\n    return stringToReal(str);\n}\n\nint stringToInteger(const std::string& str, int radix) {\n    if (radix <= 0) {\n        error(\"stringToInteger: Illegal radix: \" + std::to_string(radix));\n    }\n    std::istringstream stream(trim(str));\n    stream >> std::setbase(radix);\n    int value;\n    stream >> value;\n    if (stream.fail() || !stream.eof()) {\n        error(\"stringToInteger: Illegal integer format: \\\"\" + str + \"\\\"\");\n    }\n    return value;\n}\n\nlong stringToLong(const std::string& str, int radix) {\n    if (radix <= 0) {\n        error(\"stringToLong: Illegal radix: \" + std::to_string(radix));\n    }\n    std::istringstream stream(trim(str));\n    stream >> std::setbase(radix);\n    long value;\n    stream >> value;\n    if (stream.fail() || !stream.eof()) {\n        error(\"stringToLong: Illegal long format \\\"\" + str + \"\\\"\");\n    }\n    return value;\n}\n\ndouble stringToReal(const std::string& str) {\n    std::istringstream stream(trim(str));\n    double value;\n    stream >> value;\n    if (stream.fail() || !stream.eof()) {\n        error(\"stringToReal: Illegal floating-point format (\" + str + \")\");\n    }\n    return value;\n}\n\nchar toLowerCase(char ch) {\n    return (char) tolower(ch);\n}\n\nstd::string toLowerCase(const std::string& str) {\n    std::string str2 = str;\n    toLowerCaseInPlace(str2);\n    return str2;\n}\n\nvoid toLowerCaseInPlace(std::string& str) {\n    int nChars = str.length();\n    for (int i = 0; i < nChars; i++) {\n        str[i] = tolower(str[i]);\n    }\n}\n\nchar toUpperCase(char ch) {\n    return (char) toupper(ch);\n}\n\nstd::string toUpperCase(const std::string& str) {\n    std::string str2 = str;\n    toUpperCaseInPlace(str2);\n    return str2;\n}\n\nvoid toUpperCaseInPlace(std::string& str) {\n    int nChars = str.length();\n    for (int i = 0; i < nChars; i++) {\n        str[i] = toupper(str[i]);\n    }\n}\n\nstd::string trim(const std::string& str) {\n    std::string str2 = str;\n    trimInPlace(str2);\n    return str2;\n}\n\nvoid trimInPlace(std::string& str) {\n    trimEndInPlace(str);\n    trimStartInPlace(str);\n}\n\nstd::string trimEnd(const std::string& str) {\n    std::string str2 = str;\n    trimEndInPlace(str2);\n    return str2;\n}\n\nvoid trimEndInPlace(std::string& str) {\n    int end = (int) str.length();\n    int finish = end;\n    while (finish > 0 && isspace(str[finish - 1])) {\n        finish--;\n    }\n    if (finish < end) {\n        str.erase(finish, end - finish);\n    }\n}\n\nstd::string trimStart(const std::string& str) {\n    std::string str2 = str;\n    trimStartInPlace(str2);\n    return str2;\n}\n\nvoid trimStartInPlace(std::string& str) {\n    int start = 0;\n    int finish = (int) str.length() - 1;\n    while (start <= finish && isspace(str[start])) {\n        start++;\n    }\n    if (start > 0) {\n        str.erase(0, start);\n    }\n}\n\nstd::string urlDecode(const std::string& str) {\n    std::ostringstream unescaped;\n    for (std::string::const_iterator i = str.begin(), n = str.end(); i != n; ++i) {\n        std::string::value_type c = (*i);\n        if (isalnum(c) || c == '-' || c == '_' || c == '.' || c == '~' || c == '*') {\n            unescaped << c;\n        } else if (c == '+')  {\n            unescaped << ' ';\n        } else if (c == '%') {\n            // throw error if string is invalid and doesn't have 2 char after,\n            // or if it has non-hex chars here (courtesy GitHub @scinart)\n            if (i + 2 >= n || !isxdigit(*(i + 1)) || !isxdigit(*(i + 2))) {\n                error(\"urlDecode: Invalid percent-encoding\");\n            }\n\n            // decode a URL-encoded ASCII character, e.g. %40 => &\n            char ch1 = *(i + 1);\n            char ch2 = *(i + 2);\n            int hex1 = (isdigit(ch1) ? (ch1 - '0') : (toupper(ch1) - 'A' + 10));\n            int hex2 = (isdigit(ch2) ? (ch2 - '0') : (toupper(ch2) - 'A' + 10));\n            int decodedChar = (hex1 << 4) + hex2;\n            unescaped << (char) decodedChar;\n            i += 2;\n        } else {\n            std::ostringstream msg;\n            msg << \"urlDecode: Unexpected character in string: \"\n                << (int) c << \" (\" << c << \")\";\n            error(msg.str());\n        }\n    }\n\n    return unescaped.str();\n}\n\nvoid urlDecodeInPlace(std::string& str) {\n    str = urlDecode(str);   // no real efficiency gain here\n}\n\nstd::string urlEncode(const std::string& str) {\n    std::ostringstream escaped;\n    escaped.fill('0');\n    escaped << std::hex << std::uppercase;\n\n    for (std::string::const_iterator i = str.begin(), n = str.end(); i != n; ++i) {\n        std::string::value_type c = (*i);\n        if (isalnum(c) || c == '-' || c == '_' || c == '.' || c == '~' || c == '*') {\n            escaped << c;\n        } else if (c == ' ')  {\n            escaped << '+';\n        } else {\n            escaped << '%' << std::setw(2) << ((int) c) << std::setw(0);\n        }\n    }\n\n    return escaped.str();\n}\n\nvoid urlEncodeInPlace(std::string& str) {\n    str = urlEncode(str);   // no real efficiency gain here\n}\n\nnamespace std {\nbool stob(const std::string& str) {\n    return ::stringToBool(str);\n}\n\nchar stoc(const std::string& str) {\n    return ::stringToChar(str);\n}\n\nstd::string to_string(bool b) {\n    return ::boolToString(b);\n}\n\nstd::string to_string(char c) {\n    return ::charToString(c);\n}\n\nstd::string to_string(void* p) {\n    return ::pointerToString(p);\n}\n} // namespace std\n"
  },
  {
    "path": "Library/util/strlib.h",
    "content": "/*\n * File: strlib.h\n * --------------\n * This file exports several useful string functions that are not\n * included in the C++ string library.\n *\n * @version 2018/11/14\n * - added std::to_string for bool, char, pointer, and generic template type T\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2018/09/02\n * - added padLeft, padRight\n * @version 2016/11/09\n * - added boolalpha to writeGenericValue (improves bool printing in\n *   collection toString output)\n * @version 2016/10/30\n * - added overloads that take type char instead of string:\n *   stringContains, stringIndexOf, stringJoin, stringLastIndexOf, stringReplace,\n *   stringSplit, toLowerCase, toUpperCase\n * @version 2016/10/26\n * - bug fix for stringLastIndexOf default index arg\n * @version 2016/10/13\n * - modified writeGenericValue, writeQuotedString to return ostream\n * @version 2016/08/03\n * - modified readGenericValue not to throw error() on parse failures\n *   (needed to support idiomatic silent-failing >> operators)\n * @version 2015/10/26\n * - added charToInteger/integerToChar functions\n * @version 2015/08/02\n * - added htmlEncode/Decode functions (not 100% perfect but works for common cases)\n * @version 2014/10/19\n * - alphabetized functions\n * - added several 'inPlace' variants of existing functions that return strings\n * @version 2014/10/08\n * - removed dependency on 'using namespace' statement\n */\n\n\n#ifndef _strlib_h\n#define _strlib_h\n\n#include <iostream>\n#include <sstream>\n#include <string>\n\n#include \"vector.h\"\n\n/**\n * Returns the string \"true\" if b is true, or \"false\" if b is false.\n */\nstd::string boolToString(bool b);\n\n/**\n * Returns the string \"true\" if b is nonzero, or \"false\" if b is 0.\n */\nstd::string boolToString(int b);\n\n/**\n * Returns an integer equivalent of the given numeric character.\n * For example, charToInteger('3') returns the int 3.\n * If the character is not '0' through '9', throws an error.\n */\nint charToInteger(char c);\n\n/**\n * Returns a single-character string containing the given character.\n * For example, charToString('Q') returns the string \"Q\".\n */\nstd::string charToString(char c);\n\n/**\n * Converts a floating-point number into the corresponding string form.\n * For example, calling <code>doubleToString(23.45)</code> returns\n * the string <code>\"23.45\"</code>.\n * Equivalent to realToString.\n */\nstd::string doubleToString(double d);\n\n/**\n * Returns <code>true</code> if the string <code>str</code> ends with\n * the specified suffix.\n */\nbool endsWith(const std::string& str, const std::string& suffix);\n\n/**\n * Returns <code>true</code> if the string <code>str</code> ends with\n * the specified character.\n */\nbool endsWith(const std::string& str, char suffix);\n\n/**\n * Returns <code>true</code> if <code>s1</code> and <code>s2</code> are\n * equal discounting differences in case.\n */\nbool equalsIgnoreCase(const std::string& s1, const std::string& s2);\n\n/**\n * Converts the given string from an HTML-encoded version to its decoded\n * equivalent; the opposite of htmlEncode. Any escaped HTML character entities\n * will be replaced by their unescaped equivalents.\n * For example, <code>htmlEncode(\"&lt;p class=&quot;abc&quot;&gt;I love you &amp; me&lt;/p&gt;\")\n * returns \"<p class=\\\"abc\\\">I love you & me</p>\".\n */\nstd::string htmlDecode(const std::string& s);\n\n/**\n * Converts the given string into an HTML-encoded equivalent version, with\n * any relevant HTML character entities replaced by escaped equivalents.\n * For example, <code>htmlEncode(\"<p class=\\\"abc\\\">I love you & me</p>\") returns\n * \"&lt;p class=&quot;abc&quot;&gt;I love you &amp; me&lt;/p&gt;\".\n */\nstd::string htmlEncode(const std::string& s);\n\n/**\n * Converts an integer into the corresponding numeric character.\n * For example, calling <code>integerToChar(3)</code> returns\n * the char <code>'3'</code>.\n * @throw ErrorException if the given integer is not a single-digit number from 0-9 inclusive\n */\nchar integerToChar(int n);\n\n/**\n * Converts an integer into the corresponding string of digits.\n * For example, calling <code>integerToString(123)</code> returns\n * the string <code>\"123\"</code>.\n */\nstd::string integerToString(int n, int radix = 10);\n\n/**\n * Converts an integer into the corresponding string of digits.\n * For example, calling <code>longToString(123)</code> returns\n * the string <code>\"123\"</code>.\n */\nstd::string longToString(long n, int radix = 10);\n\n/**\n * Returns a hexadecimal string for the given pointer, such as \"0x3f0427b\".\n * Returns \"nullptr\" if p is a null pointer.\n */\nstd::string pointerToString(void* p);\n\n/**\n * Converts a floating-point number into the corresponding string form.\n * For example, calling <code>realToString(23.45)</code> returns\n * the string <code>\"23.45\"</code>.\n */\nstd::string realToString(double d);\n\n/**\n * Returns <code>true</code> if the string <code>str</code> starts with\n * the specified prefix.\n */\nbool startsWith(const std::string& str, char prefix);\n\n/**\n * Returns <code>true</code> if the string <code>str</code> starts with\n * the specified character.\n */\nbool startsWith(const std::string& str, const std::string& prefix);\n\n/**\n * Returns true if the given character occurs somewhere in s.\n */\nbool stringContains(const std::string& s, char ch);\n\n/**\n * Returns true if the given substring occurs somewhere in s.\n */\nbool stringContains(const std::string& s, const std::string& substring);\n\n/**\n * Returns the index of the start of the first occurrence of the given character\n * in s, if it occurs in s.  If it does not occur, returns -1.\n * This function is very similar to string.find, but find returns string::npos\n * when the string is not found.\n */\nint stringIndexOf(const std::string& s, char ch, int startIndex = 0);\n\n/**\n * Returns the index of the start of the first occurrence of the given substring\n * in s, if it occurs in s.  If it does not occur, returns -1.\n * This function is very similar to string.find, but find returns string::npos\n * when the string is not found.\n */\nint stringIndexOf(const std::string& s, const std::string& substring, int startIndex = 0);\n\n/**\n * Returns true if the given string is either \"true\" or \"false\".\n */\nbool stringIsBool(const std::string& str);\n\n/**\n * Returns true if the given string could be converted to an real number\n * successfully by the stringToReal function, which will be true if\n * the string has the format of a real number such as \"3.14\" or \"-46\".\n * Equivalent to stringIsReal.\n */\nbool stringIsDouble(const std::string& str);   // alias\n\n/**\n * Returns true if the given string could be converted to an integer\n * successfully by the stringToInteger function, which will be true if\n * the string has the format of an integer such as \"1234\" or \"-8\".\n * Optionally accepts a radix (base) parameter if base-10 is not desired.\n */\nbool stringIsInteger(const std::string& str, int radix = 10);\n\n/**\n * Returns true if the given string could be converted to a long\n * successfully by the stringToLong function, which will be true if\n * the string has the format of an integer such as \"1234\" or \"-8\".\n * Optionally accepts a radix (base) parameter if base-10 is not desired.\n */\nbool stringIsLong(const std::string& str, int radix = 10);\n\n/**\n * Returns true if the given string could be converted to an real number\n * successfully by the stringToReal function, which will be true if\n * the string has the format of a real number such as \"3.14\" or \"-46\".\n */\nbool stringIsReal(const std::string& str);\n\n/**\n * Combines the elements of the given Vector into a single string,\n * with the given delimiter separating neighboring elements, and returns it.\n * For example, joining the elements of the vector\n * {\"Hi\", \"there\", \"\", \"Jim\"} with the delimiter '?' returns \"Hi?there??Jim\".\n */\nstd::string stringJoin(const Vector<std::string>& v, char delimiter = '\\n');\n\n/**\n * Combines the elements of the given Vector into a single string,\n * with the given delimiter separating neighboring elements, and returns it.\n * For example, joining the elements of the vector\n * {\"Hi\", \"there\", \"\", \"Jim\"} with the delimiter \"??\" returns \"Hi??there????Jim\".\n */\nstd::string stringJoin(const Vector<std::string>& v, const std::string& delimiter = \"\\n\");\n\n/**\n * Returns the index of the start of the last occurrence of the given character\n * in s, if it occurs in s.  If it does not occur, returns -1.\n * This function is very similar to string.rfind, but rfind returns string::npos\n * when the string is not found.\n */\nint stringLastIndexOf(const std::string& s, char ch, int startIndex = (int) std::string::npos);\n\n/**\n * Returns the index of the start of the last occurrence of the given substring\n * in s, if it occurs in s.  If it does not occur, returns -1.\n * This function is very similar to string.rfind, but rfind returns string::npos\n * when the string is not found.\n */\nint stringLastIndexOf(const std::string& s, const std::string& substring, int startIndex = (int) std::string::npos);\n\n/**\n * Returns a new string formed by replacing any occurrences of the given 'old'\n * character with the given replacement character in 'str'.\n * Note that this is NOT a regular expression replacement; it looks for the\n * 'old' string literally.  If you want regular expressions, see regexpr.h.\n * The 'inPlace' variant modifies an existing string rather than returning a new one,\n * and returns the number of occurrences of 'old' were replaced.\n */\nstd::string stringReplace(const std::string& str, char old, char replacement, int limit = -1);\n\n/**\n * Returns a new string formed by replacing any occurrences of the given 'old'\n * text with the given replacement text in 'str'.\n * Note that this is NOT a regular expression replacement; it looks for the\n * 'old' string literally.  If you want regular expressions, see regexpr.h.\n * The 'inPlace' variant modifies an existing string rather than returning a new one,\n * and returns the number of occurrences of 'old' were replaced.\n */\nstd::string stringReplace(const std::string& str, const std::string& old, const std::string& replacement, int limit = -1);\n\n/**\n * A variant of stringReplace, except that it accepts the string as a reference\n * and modifies it in-place rather than returning a new string.\n */\nint stringReplaceInPlace(std::string& str, char old, char replacement, int limit = -1);\n\n/**\n * A variant of stringReplace, except that it accepts the string as a reference\n * and modifies it in-place rather than returning a new string.\n */\nint stringReplaceInPlace(std::string& str, const std::string& old, const std::string& replacement, int limit = -1);\n\n/**\n * Returns a vector whose elements are strings formed by splitting the\n * given string 'str' by the given separator character.\n * Any adjacent separators are coalesced.\n * For example, splitting \"Hi there    Jim!\" on delimiter \" \" returns\n * {\"Hi\", \"there\", \"Jim!\"}.\n */\nVector<std::string> stringSplit(const std::string& str, char delimiter, int limit = -1);\n\n/**\n * Returns a vector whose elements are strings formed by splitting the\n * given string 'str' by the given separator text.\n * Any adjacent separators are coalesced.\n * For example, splitting \"Hi_*_there_*__*_Jim!\" on delimiter \"_*_\" returns\n * {\"Hi\", \"there\", \"Jim!\"}.\n */\nVector<std::string> stringSplit(const std::string& str, const std::string& delimiter, int limit = -1);\n\n/**\n * If str is \"true\", returns the bool value true.\n * If str is \"false\", returns the bool value false.\n * @throw ErrorException if str is any other value than \"true\" or \"false\"\n */\nbool stringToBool(const std::string& str);\n\n/**\n * Converts a single-character string into its corresponding char value.\n * For example, stringToChar(\"hello\") returns the char 'h'.\n * @throw ErrorException if the given string does not contain exactly 1 character\n */\nchar stringToChar(const std::string& str);\n\n/**\n * Converts a string representing a real number into its corresponding\n * value.\n * Equivalent to stringToReal.\n * @throw ErrorException if the string is not a legal floating-point number\n *        or contains extraneous characters other than whitespace\n */\ndouble stringToDouble(const std::string& str);   // alias\n\n/**\n * Converts a string of digits into an integer.\n * The function accepts an optional radix (base); for example,\n * stringToInteger(\"234\", 16) assumes that the string is in base-16 and\n * returns 2*16*16 + 3*16 + 4 = 564.\n * @throw ErrorException if the string is not a legal integer or contains\n *        extraneous characters other than whitespace\n */\nint stringToInteger(const std::string& str, int radix = 10);\n\n/**\n * Converts a string of digits into a long.\n * The function accepts an optional radix (base); for example,\n * stringToLong(\"234\", 16) assumes that the string is in base-16 and\n * returns 2*16*16 + 3*16 + 4 = 564.\n * @throw ErrorException if the string is not a legal long or contains\n *        extraneous characters other than whitespace\n */\nlong stringToLong(const std::string& str, int radix = 10);\n\n/**\n * Converts a string representing a real number into its corresponding\n * value.\n * Equivalent to stringToDouble.\n * @throw ErrorException if the string is not a legal floating-point number or\n * contains extraneous characters other than whitespace\n */\ndouble stringToReal(const std::string& str);\n\n/**\n * Returns a new character in which the given uppercase character has been\n * converted into its lowercase equivalent.\n */\nchar toLowerCase(char ch);\n\n/**\n * Returns a new string in which all uppercase characters have been converted\n * into their lowercase equivalents.\n */\nstd::string toLowerCase(const std::string& str);\n\n/**\n * Modifies the given string in-place such that all uppercase characters have\n * been converted into their lowercase equivalents.\n */\nvoid toLowerCaseInPlace(std::string& str);\n\n/**\n * Returns a new character in which the given lowercase character has been\n * converted into its uppercase equivalent.\n */\nchar toUpperCase(char ch);\n\n/**\n * Returns a new string in which all lowercase characters have been converted\n * into their uppercase equivalents.\n */\nstd::string toUpperCase(const std::string& str);\n\n/**\n * Modifies the given string in-place such that all lowercase characters have\n * been converted into their uppercase equivalents.\n */\nvoid toUpperCaseInPlace(std::string& str);\n\n/**\n * Returns a new string after removing any whitespace characters\n * from the beginning and end of the argument.\n */\nstd::string trim(const std::string& str);\n\n/**\n * Modifies the given string in-place where any whitespace characters\n * from the beginning and end of the argument are removed.\n */\nvoid trimInPlace(std::string& str);\n\n/**\n * Returns a new string after removing any whitespace characters\n * from the end of the argument.\n */\nstd::string trimEnd(const std::string& str);\n\n/**\n * Modifies the given string in-place to remove any whitespace characters\n * from its end.\n */\nvoid trimEndInPlace(std::string& str);\n\n/**\n * Returns a new string after removing any whitespace characters\n * from the beginning of the argument.\n */\nstd::string trimStart(const std::string& str);\n\n/**\n * Modifies the given string in-place to remove removing any whitespace characters\n * from the beginning of it.\n */\nvoid trimStartInPlace(std::string& str);\n\n/**\n * Returns a URL-decoded version of the given string, where any %xx character\n * codes are converted back to the equivalent characters.\n */\nstd::string urlDecode(const std::string& str);\n\n/**\n * Modifies the given string in-place into a URL-decoded version of itself,\n * where any %xx character codes are converted back to the equivalent characters.\n */\nvoid urlDecodeInPlace(std::string& str);\n\n/**\n * Returns a URL-encoded version of the given string, where most non-\n * alphabetic characters are replaced by %xx character codes.\n */\nstd::string urlEncode(const std::string& str);\n\n/**\n * Modifies the given string in-place into a URL-encoded version of itself,\n * where most non- alphabetic characters are replaced by %xx character codes.\n */\nvoid urlEncodeInPlace(std::string& str);\n\n// add to_string overloads for some common types missing from C++ standard\nnamespace std {\n/**\n * String-to-bool conversion function.\n * If str is \"true\", returns the bool value true.\n * If str is \"false\", returns the bool value false.\n * @throw ErrorException if str is any other value than \"true\" or \"false\"\n */\nbool stob(const std::string& str);\n\n/**\n * String-to-char conversion function.\n * Converts a single-character string into its corresponding char value.\n * For example, stringToChar(\"hello\") returns the char 'h'.\n * @throw ErrorException if the given string does not contain exactly 1 character\n */\nchar stoc(const std::string& str);\n\n/**\n * Returns the string \"true\" if b is true, or \"false\" if b is false.\n */\nstd::string to_string(bool b);\n\n/**\n * Returns a single-character string containing the given character.\n * For example, charToString('Q') returns the string \"Q\".\n */\nstd::string to_string(char c);\n\n/**\n * Returns a hexadecimal string for the given pointer, such as \"0x3f0427b\".\n * Returns \"nullptr\" if p is a null pointer.\n */\nstd::string to_string(void* p);\n\n/**\n * Generic to_string function for any type that has an operator <<.\n */\ntemplate <typename T>\nstd::string to_string(const T& value) {\n    std::ostringstream out;\n    out << value;   // if you get an error here, your type might not have a << operator\n    return out.str();\n}\n} // namespace std\n\n#endif // _strlib_h\n"
  },
  {
    "path": "Library/util/timer.cpp",
    "content": "/*\n * File: timer.cpp\n * ---------------\n * Implementation of the Timer class as declared in timer.h.\n */\n\n#include \"timer.h\"\n#include <sys/time.h>\n\nTimer::Timer(bool autostart) {\n    _startMS = 0;\n    _stopMS = 0;\n    _isStarted = false;\n    if (autostart) {\n        start();\n    }\n}\n\nlong Timer::elapsed() const {\n    return _stopMS - _startMS;\n}\n\nbool Timer::isStarted() const {\n    return _isStarted;\n}\n\nvoid Timer::start() {\n    _startMS = currentTimeMS();\n    _isStarted = true;\n}\n\nlong Timer::stop() {\n    _stopMS = currentTimeMS();\n    if (!_isStarted) {\n        // error(\"Timer is not started\");\n        _startMS = _stopMS;\n    }\n    _isStarted = false;\n    return elapsed();\n}\n\nlong Timer::currentTimeMS() {\n    timeval time;\n    gettimeofday(&time, nullptr);\n    return (time.tv_sec * 1000000 + time.tv_usec) / 1000;\n}\n"
  },
  {
    "path": "Library/util/timer.h",
    "content": "/*\n * File: timer.h\n * -------------\n * This file exports a Timer class that is useful for measuring the elapsed\n * time of a program in milliseconds over a given interval.\n *\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n */\n\n#ifndef _timer_h\n#define _timer_h\n\n/**\n * A Timer object is useful for measuring the elapsed\n * time of a program in milliseconds over a given interval.\n * Usage example:\n *\n *<pre>\n * Timer tim;\n * tim.start();\n * ... code that takes a while ...\n * tim.stop();\n * cout << \"That took \" << tim.elapsed() << \"ms.\" << endl;\n *</pre>\n */\nclass Timer {\npublic:\n    /**\n     * Constructs a new timer.\n     * If an optional bool parameter of true is passed, also starts the timer.\n     */\n    Timer(bool autostart = false);\n\n    /**\n     * Returns the number of milliseconds that have elapsed since this timer\n     * was started.\n     * Returns 0 if the timer was never started.\n     */\n    long elapsed() const;\n\n    /**\n     * Returns true if the timer has been started.\n     */\n    bool isStarted() const;\n\n    /**\n     * Starts the timer.\n     * If the timer was already started, restarts it such that its 'elapsed'\n     * time will be 0 at the moment of the call.\n     */\n    void start();\n\n    /**\n     * Stops the timer and returns the number of elapsed milliseconds.\n     * If the timer was never started, 0 ms will be considered to have elapsed.\n     */\n    long stop();\n\n    /**\n     * A static utility function for getting the current time as a Unix\n     * timestamp of milliseconds since the epoch.\n     */\n    static long currentTimeMS();\n\nprivate:\n    // instance variables\n    long _startMS;\n    long _stopMS;\n    bool _isStarted;\n};\n\n#endif // _timer_h\n"
  },
  {
    "path": "README.md",
    "content": "# stanford-cpp-library\nSource code and resources for the C++ libraries used by Stanford CS106B course. This code written by Eric Roberts and Marty Stepp and currently maintained by Julie Zelenski and Keith Schwarz.\n\nMany thanks to Prof. Jeff Lutgen (jlutgen) of Whittier College,\nwho has submitted several useful pull requests and new features to the libraries.\n"
  },
  {
    "path": "RandomClientTests/BugFixes/BugFixes.pro",
    "content": "###############################################################################\n# Project file for CS106B/X student program\n#\n# @version Winter Quarter 2025.2 for Qt 6\n# @author Julie Zelenski\n#   build client program using installed static library\n###############################################################################\n\nSPL_VERSION = 2025.2\nSPL_URL = https://web.stanford.edu/dept/cs_edu/qt\n\nTEMPLATE    =   app\nQT          +=  core gui widgets network multimedia\nCONFIG      +=  silent debug         # quiet build and debug symbols always\nCONFIG      -=  depend_includepath   # library headers not changing, don't add depend\n\n###############################################################################\n#       Find/use installed version of cs106 lib and headers                   #\n###############################################################################\n\n# Library installed into per-user writable data location from QtStandardPaths\nwin32|win64     { QTP_EXE = qtpaths.exe } else { QTP_EXE = qtpaths }\nUSER_DATA_DIR   =   $$system($$[QT_INSTALL_BINS]/$$QTP_EXE --writable-path GenericDataLocation)\n\nSPL_DIR         =   $${USER_DATA_DIR}/cs106\nSTATIC_LIB      =   $$system_path($${SPL_DIR}/lib/libcs106.a)\nVERSION_FILE =      $$system_path($${SPL_DIR}/lib/spl_version)\n\n# link against libcs106.a, add library headers to search path\n# libcs106 requires libpthread, add link here\nLIBS            +=  -lcs106 -lpthread\nQMAKE_LFLAGS    =   -L$$shell_quote($${SPL_DIR}/lib)\n# put PWD first in search list to allow local copy to shadow if needed\nINCLUDEPATH     +=  $$PWD \"$${SPL_DIR}/include\"\n\n###############################################################################\n#       Configure project with custom settings                                #\n###############################################################################\n\n# changes to headers require recompilation\nDEPENDPATH += $$PWD\n\n# remove spaces from target executable for better Windows compatibility\nTARGET      =   $$replace(TARGET, \" \", _)\n\n# set DESTDIR to project root dir, this is where executable/app will deploy and run\nDESTDIR     =   $$PWD\n\n# student writes ordinary main() function, but it must be called within a\n# wrapper main() that handles library setup/teardown. Rename student's\n# to distinguish between the two main() functions and avoid symbol clash\n# Ask Julie if you are curious why main->qMain->studentMain\nDEFINES     +=  main=qMain qMain=studentMain\n\n###############################################################################\n#       Gather files to list in Qt Creator project browser                    #\n###############################################################################\n\n# honeypot to trick Qt Creator to allow glob-all to coexist with user-added files\n# Qt looks for first 'SOURCES *=' line and lists user-added .cpp/h files there.\n# Afterward we glob-add files to SOURCES ourselves. Operator *= will unique\n# entries, so no worries about duplicates\nSOURCES         *=  \"\"\nHEADERS         *=  \"\"\n\n# Gather any .cpp or .h files within the project folder (student/starter code).\n# Second argument true makes search recursive\nSOURCES         *=  $$files(*.cpp, true)\nHEADERS         *=  $$files(*.h, true)\n\n# Gather resource files (image/sound/etc) from res dir, list under \"Other files\"\nOTHER_FILES     *=  $$files(res/*, true)\n# Gather text files from root dir or anywhere recursively\nOTHER_FILES     *=  $$files(*.txt, true)\n\n###############################################################################\n#       Configure compiler, compile flags                                     #\n###############################################################################\n\n# Configure flags for the C++ compiler\n# (In general, many warnings/errors are enabled to tighten compile-time checking.\n# A few overly pedantic/confusing errors are turned off to avoid confusion.)\n\nCONFIG          +=  sdk_no_version_check   # removes spurious warnings on Mac OS X\n\n# MinGW compiler lags, be conservative and use C++11 on all platforms\n# rather than special case\nCONFIG          +=  c++11\n\n# WARN_ON has -Wall -Wextra, add/remove a few specific warnings\nQMAKE_CXXFLAGS_WARN_ON      +=  -Werror=return-type\nQMAKE_CXXFLAGS_WARN_ON      +=  -Werror=uninitialized\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wunused-parameter\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wmissing-field-initializers\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wno-old-style-cast\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wno-sign-compare\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wno-sign-conversion\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wno-unused-const-variable\n\n*-clang { # warning flags specific to clang\n    QMAKE_CXXFLAGS_WARN_ON  +=  -Wempty-init-stmt\n    QMAKE_CXXFLAGS_WARN_ON  +=  -Wignored-qualifiers\n}\n\n*-g++ {   # warning flags specific to g++\n    QMAKE_CXXFLAGS_WARN_ON  +=  -Wlogical-op\n}\n\n###############################################################################\n#       Detect/report errors in project structure                             #\n###############################################################################\n\n# error if project opened from within a ZIP archive (common mistake on Windows)\nwin32|win64 {\n    contains(PWD, .*\\.zip.*) | contains(PWD, .*\\.ZIP.*) {\n        warning( \"*** You are trying to open this project from within a ZIP archive.\" )\n        warning( \"*** You must first extract the files then open in Qt Creator.\" )\n        warning( \"*** In File Explorer open the ZIP and choose to Extract All.\" )\n        error( Exiting. Extract project from ZIP first.)\n    }\n}\n\n# error if name of directory has chars that may cause trouble for qmake/make/shell\nPROJECT_DIR = $$basename(PWD)\nFOUND  = $$PROJECT_DIR\nFOUND ~= s|[a-z A-Z 0-9 _.+-]||   # yes, spaces ok, limited punctuation, $ % & are dicey\n!isEmpty(FOUND) {\n    warning( \"*** The name of your project directory contains the disallowed characters: $$FOUND\" )\n    warning( \"*** The allowed characters are letters, numbers, and simple punctuation.\" )\n    warning( \"*** Please rename to a simple name such as Assignment_1 that contains no disallowed characters.\" )\n    error(Exiting. Rename project directory to remove disallowed characters. )\n}\n\n\n!isEmpty(CURRENTLY_INSTALLING_LIBRARY) { # special case for Welcome app in CS106 package\n    message(\"Installing cs106 package, will skip library version check\")\n} else {\n    !exists($$STATIC_LIB) {             # confirm static lib exists\n        warning(\"No CS106 library found. Need to install.\")\n        error(Exiting. Install CS106 package following instructions at $$SPL_URL)\n    }\n    !exists($$VERSION_FILE) {           # confirm version file exists\n         warning(\"Installed library has no version. Re-install to get correct version.\")\n         error(Exiting. Re-install CS106 package following instructions at $$SPL_URL)\n    }\n    CONTENTS = $$cat($$VERSION_FILE)    # confirm version file contents match this .pro file\n    !equals(CONTENTS, $$SPL_VERSION) {\n        warning( \"Installed library version $$CONTENTS, expected $$SPL_VERSION\" )\n        error(Exiting. Re-install CS106 package following instructions at $$SPL_URL)\n    }\n}\n"
  },
  {
    "path": "RandomClientTests/BugFixes/bugfixes.cpp",
    "content": "#include <iostream>\n#include \"console.h\"\n#include \"gridlocation.h\"\n#include \"stack.h\"\n#include \"gwindow.h\"\n#include \"goptionpane.h\"\n#include \"SimpleTest.h\"\nusing namespace std;\n\n\nvoid graphics_fixes()\n{\n    GWindow* window = new GWindow(200, 200);\n    window->setTitle(\"Bug test\");\n    window->setLocation(50, 50);\n    window->setBackground(\"White\");\n    window->clear();\n    window->setColor(\"#008F00\");\n    // fix behavior with fill polygon\n    double x = 100, y = 45, w = 15, h = 30;\n    for (int i = 0; i < 4; i++) {\n        window->fillPolygon({GPoint(x-w, y+h),GPoint(x, y),GPoint(x+w, y+h) } );\n        y += h/2;\n    }\n    window->setVisible(true);\n}\n\nvoid gridlocation_fixes()\n{\n    // GridLocation used to not be able to properly read from a stream\n    // It also had one-arg constructor that was bonus\n    GridLocation none;\n   // GridLocation one = (1,2);\n   // GridLocation one = 1;\n    GridLocation one(1, 2);\n\n    Stack<GridLocation> s = {none, one, {3, 4}, {5, 6}};\n    Stack<GridLocation> t;\n\n    {\n        ostringstream output;\n        output << s << endl;\n        istringstream input(output.str());\n        bool flag = (input >> t) ? true : false;\n        cout << \"read succcess? \" << flag << \", same contents? \" << (s == t) << endl;\n    }\n    {\n        Stack<GridLocation> empty;\n        ostringstream output;\n        output << empty << endl;\n        istringstream input(output.str());\n        bool flag = (input >> t) ? true : false;\n        cout << \"read succcess? \" << flag << \", same contents? \" << (empty == t) << endl;\n    }\n    {\n        Stack<GridLocation> bad;\n        istringstream input(\"{r1c2,r2c3,rc,r6c7\");\n        bool flag = (input >> bad) ? true : false;\n        cout << \"read succcess? \" << flag << \", stack contains \" << bad << endl;\n    }\n}\n\nint main()\n{\n    if (!runSimpleTests(SELECTED_TESTS)) {\n        graphics_fixes();\n        gridlocation_fixes();\n    }\n    return 0;\n}\n\n// miscellaneous bugs I was testing fall 2021\n\nPROVIDED_TEST(\"Error if empty delimiter to stringSplit\") {\n    EXPECT_ERROR(stringSplit(\"Julie was here\", \"\"));\n}\n\nPROVIDED_TEST(\"stringSplit correctly discard leading/repeated delimiters\") {\n    Vector<string> words;\n    words = stringSplit(\" apple banana chip    doodle    \",\" \");\n    EXPECT_EQUAL(words.size(), 4);\n    words = stringSplit(\"              \",\" \");\n    EXPECT_EQUAL(words.size(), 0);\n}\n\nPROVIDED_TEST(\"stringToChar correctly handles single whitespace character (no erroenous trim!)\") {\n    EXPECT_EQUAL(' ', stringToChar(\" \"));\n    EXPECT_EQUAL('\\t', stringToChar(\"\\t\"));\n    EXPECT_EQUAL('\\n', stringToChar(\"\\n\"));\n    EXPECT_ERROR(stringToChar(\"   a\"));\n}\n\nPROVIDED_TEST(\"Error if empty find argument to stringReplace\") {\n    EXPECT_EQUAL(stringReplace(\"ababa\", \"a\", \"A\"),\"AbAbA\");\n    EXPECT_ERROR(stringReplace(\"ababa\", \"\", \"A\"));\n    string str = \"ababa\";\n    stringReplaceInPlace(str, \"a\", \"A\");\n    EXPECT_EQUAL(str,\"AbAbA\");\n    EXPECT_ERROR(stringReplaceInPlace(str, \"\", \"A\"));\n}\n\nstruct Person {\n    int age;\n    string name;\n };\n\nbool operator< (const Person& lhs, const Person& rhs) {\n    using namespace stanfordcpplib::collections;\n    return compareTo(lhs.age,rhs.age, lhs.name, rhs.name) == -1;\n}\n\nPROVIDED_TEST(\"custom comparator\") {\n    using namespace stanfordcpplib::collections;\n    Vector<Person> v = { {1, \"Apple\"},\n                         {0, \"Apple\"}, {99, \"Apple\"},\n                         {0, \"Zebra\"}, {99, \"Zebra\"},\n                         {1, \"Aardvark\"},  {1, \"Zebra\"},\n                         {1, \"Apple\"}};\n\n    Set<Person> people;\n    for (Person p : v) people.add(p);\n    EXPECT_EQUAL(people.size(), 7);\n    Person f = people.first();\n    EXPECT_EQUAL(f.age, 0);\n\n    Map<Person, int> map;\n    for (Person p: people)  map.put(p, p.age);\n    f = map.firstKey();\n    EXPECT_EQUAL(f.age, 0);\n}\n\nSTUDENT_TEST(\"Dialog font GText\") {\n    GWindow* window = new GWindow(300, 200);\n    window->setTitle(\"GText\");\n    window->setLocation(300, 100);\n    window->setVisible(true);\n    GText *gc = new GText(\"hello world\", 25, 25);\n    window->add(gc);\n    GOptionPane::showTextFileDialog(\"This is the text\", \"title\", 10, 10);\n}\n"
  },
  {
    "path": "RandomClientTests/CompileFlags/CompileFlags.pro",
    "content": "###############################################################################\n# Project file for CS106B/X student program\n#\n# @version Winter Quarter 2025.2 for Qt 6\n# @author Julie Zelenski\n#   build client program using installed static library\n###############################################################################\n\nSPL_VERSION = 2025.2\nSPL_URL = https://web.stanford.edu/dept/cs_edu/qt\n\nTEMPLATE    =   app\nQT          +=  core gui widgets network multimedia\nCONFIG      +=  silent debug         # quiet build and debug symbols always\nCONFIG      -=  depend_includepath   # library headers not changing, don't add depend\n\n###############################################################################\n#       Find/use installed version of cs106 lib and headers                   #\n###############################################################################\n\n# Library installed into per-user writable data location from QtStandardPaths\nwin32|win64     { QTP_EXE = qtpaths.exe } else { QTP_EXE = qtpaths }\nUSER_DATA_DIR   =   $$system($$[QT_INSTALL_BINS]/$$QTP_EXE --writable-path GenericDataLocation)\n\nSPL_DIR         =   $${USER_DATA_DIR}/cs106\nSTATIC_LIB      =   $$system_path($${SPL_DIR}/lib/libcs106.a)\nVERSION_FILE =      $$system_path($${SPL_DIR}/lib/spl_version)\n\n# link against libcs106.a, add library headers to search path\n# libcs106 requires libpthread, add link here\nLIBS            +=  -lcs106 -lpthread\nQMAKE_LFLAGS    =   -L$$shell_quote($${SPL_DIR}/lib)\n# put PWD first in search list to allow local copy to shadow if needed\nINCLUDEPATH     +=  $$PWD \"$${SPL_DIR}/include\"\n\n###############################################################################\n#       Configure project with custom settings                                #\n###############################################################################\n\n# changes to headers require recompilation\nDEPENDPATH += $$PWD\n\n# remove spaces from target executable for better Windows compatibility\nTARGET      =   $$replace(TARGET, \" \", _)\n\n# set DESTDIR to project root dir, this is where executable/app will deploy and run\nDESTDIR     =   $$PWD\n\n# student writes ordinary main() function, but it must be called within a\n# wrapper main() that handles library setup/teardown. Rename student's\n# to distinguish between the two main() functions and avoid symbol clash\n# Ask Julie if you are curious why main->qMain->studentMain\nDEFINES     +=  main=qMain qMain=studentMain\n\n###############################################################################\n#       Gather files to list in Qt Creator project browser                    #\n###############################################################################\n\n# honeypot to trick Qt Creator to allow glob-all to coexist with user-added files\n# Qt looks for first 'SOURCES *=' line and lists user-added .cpp/h files there.\n# Afterward we glob-add files to SOURCES ourselves. Operator *= will unique\n# entries, so no worries about duplicates\nSOURCES         *=  \"\"\nHEADERS         *=  \"\"\n\n# Gather any .cpp or .h files within the project folder (student/starter code).\n# Second argument true makes search recursive\nSOURCES         *=  $$files(*.cpp, true)\nHEADERS         *=  $$files(*.h, true)\n\n# Gather resource files (image/sound/etc) from res dir, list under \"Other files\"\nOTHER_FILES     *=  $$files(res/*, true)\n# Gather text files from root dir or anywhere recursively\nOTHER_FILES     *=  $$files(*.txt, true)\n\n###############################################################################\n#       Configure compiler, compile flags                                     #\n###############################################################################\n\n# Configure flags for the C++ compiler\n# (In general, many warnings/errors are enabled to tighten compile-time checking.\n# A few overly pedantic/confusing errors are turned off to avoid confusion.)\n\nCONFIG          +=  sdk_no_version_check   # removes spurious warnings on Mac OS X\n\n# MinGW compiler lags, be conservative and use C++11 on all platforms\n# rather than special case\nCONFIG          +=  c++11\n\n# WARN_ON has -Wall -Wextra, add/remove a few specific warnings\nQMAKE_CXXFLAGS_WARN_ON      +=  -Werror=return-type\nQMAKE_CXXFLAGS_WARN_ON      +=  -Werror=uninitialized\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wunused-parameter\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wmissing-field-initializers\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wno-old-style-cast\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wno-sign-compare\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wno-sign-conversion\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wno-unused-const-variable\n\n*-clang { # warning flags specific to clang\n    QMAKE_CXXFLAGS_WARN_ON  +=  -Wempty-init-stmt\n    QMAKE_CXXFLAGS_WARN_ON  +=  -Wignored-qualifiers\n}\n\n*-g++ {   # warning flags specific to g++\n    QMAKE_CXXFLAGS_WARN_ON  +=  -Wlogical-op\n}\n\n###############################################################################\n#       Detect/report errors in project structure                             #\n###############################################################################\n\n# error if project opened from within a ZIP archive (common mistake on Windows)\nwin32|win64 {\n    contains(PWD, .*\\.zip.*) | contains(PWD, .*\\.ZIP.*) {\n        warning( \"*** You are trying to open this project from within a ZIP archive.\" )\n        warning( \"*** You must first extract the files then open in Qt Creator.\" )\n        warning( \"*** In File Explorer open the ZIP and choose to Extract All.\" )\n        error( Exiting. Extract project from ZIP first.)\n    }\n}\n\n# error if name of directory has chars that may cause trouble for qmake/make/shell\nPROJECT_DIR = $$basename(PWD)\nFOUND  = $$PROJECT_DIR\nFOUND ~= s|[a-z A-Z 0-9 _.+-]||   # yes, spaces ok, limited punctuation, $ % & are dicey\n!isEmpty(FOUND) {\n    warning( \"*** The name of your project directory contains the disallowed characters: $$FOUND\" )\n    warning( \"*** The allowed characters are letters, numbers, and simple punctuation.\" )\n    warning( \"*** Please rename to a simple name such as Assignment_1 that contains no disallowed characters.\" )\n    error(Exiting. Rename project directory to remove disallowed characters. )\n}\n\n\n!isEmpty(CURRENTLY_INSTALLING_LIBRARY) { # special case for Welcome app in CS106 package\n    message(\"Installing cs106 package, will skip library version check\")\n} else {\n    !exists($$STATIC_LIB) {             # confirm static lib exists\n        warning(\"No CS106 library found. Need to install.\")\n        error(Exiting. Install CS106 package following instructions at $$SPL_URL)\n    }\n    !exists($$VERSION_FILE) {           # confirm version file exists\n         warning(\"Installed library has no version. Re-install to get correct version.\")\n         error(Exiting. Re-install CS106 package following instructions at $$SPL_URL)\n    }\n    CONTENTS = $$cat($$VERSION_FILE)    # confirm version file contents match this .pro file\n    !equals(CONTENTS, $$SPL_VERSION) {\n        warning( \"Installed library version $$CONTENTS, expected $$SPL_VERSION\" )\n        error(Exiting. Re-install CS106 package following instructions at $$SPL_URL)\n    }\n}\n"
  },
  {
    "path": "RandomClientTests/CompileFlags/compile.cpp",
    "content": "\n#include \"vector.h\"\nusing namespace std;\n\nint gNum;\n\nvoid please_no()\n{\n    string str = \"ulie\";\n    int sum = 0;\n    for (int i = 0; i < str.length(); i++)\n        sum += str[i];\n}\n#if 0\nint missing_return(int unused)\n{\n    int uninit;\n    gNum = uninit;\n}\n#endif\n\nconst int ignored_qualilfier(int x)\n{\n    return 5;\n}\nvoid empty_body() {\n    for (int i = 0; i < 10; i++) ;;\n}\n#if 0\nvoid readonly_literal()\n{\n    char *literal = \"julie\";\n    literal[0] = 'k';\n    \"other\"[0] = 'j';\n}\n#endif\n\nvoid null_arith()\n{\n    int *p = (int *)NULL + 4;\n    *p = 0;\n}\n\nstatic const int a = 27;\nconst int b = 42;\nstruct location { int x; int y;};\n\nint missing_field()\n{\n    location loc = {5};\n    return loc.x;\n}\n\n\nint main()\n{\n    return 0;\n}\n"
  },
  {
    "path": "RandomClientTests/LexCrash/LexTest.pro",
    "content": "###############################################################################\n# Project file for CS106B/X student program\n#\n# @version Winter Quarter 2025.2 for Qt 6\n# @author Julie Zelenski\n#   build client program using installed static library\n###############################################################################\n\nSPL_VERSION = 2025.2\nSPL_URL = https://web.stanford.edu/dept/cs_edu/qt\n\nTEMPLATE    =   app\nQT          +=  core gui widgets network multimedia\nCONFIG      +=  silent debug         # quiet build and debug symbols always\nCONFIG      -=  depend_includepath   # library headers not changing, don't add depend\n\n###############################################################################\n#       Find/use installed version of cs106 lib and headers                   #\n###############################################################################\n\n# Library installed into per-user writable data location from QtStandardPaths\nwin32|win64     { QTP_EXE = qtpaths.exe } else { QTP_EXE = qtpaths }\nUSER_DATA_DIR   =   $$system($$[QT_INSTALL_BINS]/$$QTP_EXE --writable-path GenericDataLocation)\n\nSPL_DIR         =   $${USER_DATA_DIR}/cs106\nSTATIC_LIB      =   $$system_path($${SPL_DIR}/lib/libcs106.a)\nVERSION_FILE =      $$system_path($${SPL_DIR}/lib/spl_version)\n\n# link against libcs106.a, add library headers to search path\n# libcs106 requires libpthread, add link here\nLIBS            +=  -lcs106 -lpthread\nQMAKE_LFLAGS    =   -L$$shell_quote($${SPL_DIR}/lib)\n# put PWD first in search list to allow local copy to shadow if needed\nINCLUDEPATH     +=  $$PWD \"$${SPL_DIR}/include\"\n\n###############################################################################\n#       Configure project with custom settings                                #\n###############################################################################\n\n# changes to headers require recompilation\nDEPENDPATH += $$PWD\n\n# remove spaces from target executable for better Windows compatibility\nTARGET      =   $$replace(TARGET, \" \", _)\n\n# set DESTDIR to project root dir, this is where executable/app will deploy and run\nDESTDIR     =   $$PWD\n\n# student writes ordinary main() function, but it must be called within a\n# wrapper main() that handles library setup/teardown. Rename student's\n# to distinguish between the two main() functions and avoid symbol clash\n# Ask Julie if you are curious why main->qMain->studentMain\nDEFINES     +=  main=qMain qMain=studentMain\n\n###############################################################################\n#       Gather files to list in Qt Creator project browser                    #\n###############################################################################\n\n# honeypot to trick Qt Creator to allow glob-all to coexist with user-added files\n# Qt looks for first 'SOURCES *=' line and lists user-added .cpp/h files there.\n# Afterward we glob-add files to SOURCES ourselves. Operator *= will unique\n# entries, so no worries about duplicates\nSOURCES         *=  \"\"\nHEADERS         *=  \"\"\n\n# Gather any .cpp or .h files within the project folder (student/starter code).\n# Second argument true makes search recursive\nSOURCES         *=  $$files(*.cpp, true)\nHEADERS         *=  $$files(*.h, true)\n\n# Gather resource files (image/sound/etc) from res dir, list under \"Other files\"\nOTHER_FILES     *=  $$files(res/*, true)\n# Gather text files from root dir or anywhere recursively\nOTHER_FILES     *=  $$files(*.txt, true)\n\n###############################################################################\n#       Configure compiler, compile flags                                     #\n###############################################################################\n\n# Configure flags for the C++ compiler\n# (In general, many warnings/errors are enabled to tighten compile-time checking.\n# A few overly pedantic/confusing errors are turned off to avoid confusion.)\n\nCONFIG          +=  sdk_no_version_check   # removes spurious warnings on Mac OS X\n\n# MinGW compiler lags, be conservative and use C++11 on all platforms\n# rather than special case\nCONFIG          +=  c++11\n\n# WARN_ON has -Wall -Wextra, add/remove a few specific warnings\nQMAKE_CXXFLAGS_WARN_ON      +=  -Werror=return-type\nQMAKE_CXXFLAGS_WARN_ON      +=  -Werror=uninitialized\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wunused-parameter\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wmissing-field-initializers\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wno-old-style-cast\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wno-sign-compare\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wno-sign-conversion\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wno-unused-const-variable\n\n*-clang { # warning flags specific to clang\n    QMAKE_CXXFLAGS_WARN_ON  +=  -Wempty-init-stmt\n    QMAKE_CXXFLAGS_WARN_ON  +=  -Wignored-qualifiers\n}\n\n*-g++ {   # warning flags specific to g++\n    QMAKE_CXXFLAGS_WARN_ON  +=  -Wlogical-op\n}\n\n###############################################################################\n#       Detect/report errors in project structure                             #\n###############################################################################\n\n# error if project opened from within a ZIP archive (common mistake on Windows)\nwin32|win64 {\n    contains(PWD, .*\\.zip.*) | contains(PWD, .*\\.ZIP.*) {\n        warning( \"*** You are trying to open this project from within a ZIP archive.\" )\n        warning( \"*** You must first extract the files then open in Qt Creator.\" )\n        warning( \"*** In File Explorer open the ZIP and choose to Extract All.\" )\n        error( Exiting. Extract project from ZIP first.)\n    }\n}\n\n# error if name of directory has chars that may cause trouble for qmake/make/shell\nPROJECT_DIR = $$basename(PWD)\nFOUND  = $$PROJECT_DIR\nFOUND ~= s|[a-z A-Z 0-9 _.+-]||   # yes, spaces ok, limited punctuation, $ % & are dicey\n!isEmpty(FOUND) {\n    warning( \"*** The name of your project directory contains the disallowed characters: $$FOUND\" )\n    warning( \"*** The allowed characters are letters, numbers, and simple punctuation.\" )\n    warning( \"*** Please rename to a simple name such as Assignment_1 that contains no disallowed characters.\" )\n    error(Exiting. Rename project directory to remove disallowed characters. )\n}\n\n\n!isEmpty(CURRENTLY_INSTALLING_LIBRARY) { # special case for Welcome app in CS106 package\n    message(\"Installing cs106 package, will skip library version check\")\n} else {\n    !exists($$STATIC_LIB) {             # confirm static lib exists\n        warning(\"No CS106 library found. Need to install.\")\n        error(Exiting. Install CS106 package following instructions at $$SPL_URL)\n    }\n    !exists($$VERSION_FILE) {           # confirm version file exists\n         warning(\"Installed library has no version. Re-install to get correct version.\")\n         error(Exiting. Re-install CS106 package following instructions at $$SPL_URL)\n    }\n    CONTENTS = $$cat($$VERSION_FILE)    # confirm version file contents match this .pro file\n    !equals(CONTENTS, $$SPL_VERSION) {\n        warning( \"Installed library version $$CONTENTS, expected $$SPL_VERSION\" )\n        error(Exiting. Re-install CS106 package following instructions at $$SPL_URL)\n    }\n}\n"
  },
  {
    "path": "RandomClientTests/LexCrash/README.md",
    "content": "See https://github.com/zelenski/stanford-cpp-library/issues/89\n"
  },
  {
    "path": "RandomClientTests/LexCrash/main.cpp",
    "content": "#include \"console.h\"\n#include <iostream>\n#include \"lexicon.h\"\nusing namespace std;\n\n\nint main() {\n    cout << \"Starting main() \" << endl;\n    Lexicon lex(\"res/EnglishWords.txt\");\n\n    // change init to ctor and separate call is enough to fx\n    // Lexicon lex;\n    //lex.addWordsFromFile(\"res/EnglishWords.txt\");\n\n    // another minimal fix is to simply have TrieLexicon.h/.cpp in project and recompile\n\n    cout << lex.size() << endl;\n    cout << endl << \"main() completed.\" << endl;\n    return 0;\n}\n\nvoid test(void) {\n    Set<string> suggestions;\n}"
  },
  {
    "path": "RandomClientTests/LexCrash/res/EnglishWords.txt",
    "content": "a\naa\naah\naahed\naahing\naahs\naal\naalii\naaliis\naals\naardvark\naardvarks\naardwolf\naardwolves\naargh\naas\naasvogel\naasvogels\naba\nabaca\nabacas\nabaci\naback\nabacus\nabacuses\nabaft\nabaka\nabakas\nabalone\nabalones\nabamp\nabampere\nabamperes\nabamps\nabandon\nabandoned\nabandoning\nabandonment\nabandonments\nabandons\nabas\nabase\nabased\nabasedly\nabasement\nabasements\nabaser\nabasers\nabases\nabash\nabashed\nabashes\nabashing\nabashment\nabashments\nabasing\nabatable\nabate\nabated\nabatement\nabatements\nabater\nabaters\nabates\nabating\nabatis\nabatises\nabator\nabators\nabattis\nabattises\nabattoir\nabattoirs\nabaxial\nabaxile\nabba\nabbacies\nabbacy\nabbas\nabbatial\nabbe\nabbes\nabbess\nabbesses\nabbey\nabbeys\nabbot\nabbotcies\nabbotcy\nabbots\nabbreviate\nabbreviated\nabbreviates\nabbreviating\nabbreviation\nabbreviations\nabbreviator\nabbreviators\nabdicate\nabdicated\nabdicates\nabdicating\nabdication\nabdications\nabdicator\nabdicators\nabdomen\nabdomens\nabdomina\nabdominal\nabdominally\nabduce\nabduced\nabducens\nabducent\nabducentes\nabduces\nabducing\nabduct\nabducted\nabducting\nabduction\nabductions\nabductor\nabductores\nabductors\nabducts\nabeam\nabed\nabele\nabeles\nabelmosk\nabelmosks\naberrance\naberrances\naberrancies\naberrancy\naberrant\naberrants\naberration\naberrational\naberrations\nabet\nabetment\nabetments\nabets\nabettal\nabettals\nabetted\nabetter\nabetters\nabetting\nabettor\nabettors\nabeyance\nabeyances\nabeyancies\nabeyancy\nabeyant\nabfarad\nabfarads\nabhenries\nabhenry\nabhenrys\nabhor\nabhorred\nabhorrence\nabhorrent\nabhorrently\nabhorrer\nabhorrers\nabhorring\nabhors\nabidance\nabidances\nabide\nabided\nabider\nabiders\nabides\nabiding\nabigail\nabigails\nabilities\nability\nabioses\nabiosis\nabiotic\nabject\nabjectly\nabjectness\nabjuration\nabjurations\nabjure\nabjured\nabjurer\nabjurers\nabjures\nabjuring\nablate\nablated\nablates\nablating\nablation\nablations\nablative\nablatives\nablaut\nablauts\nablaze\nable\nablegate\nablegates\nabler\nables\nablest\nablings\nablins\nabloom\nabluent\nabluents\nablush\nabluted\nablution\nablutions\nably\nabmho\nabmhos\nabnegate\nabnegated\nabnegates\nabnegating\nabnegation\nabnegations\nabnegator\nabnegators\nabnormal\nabnormalities\nabnormality\nabnormally\nabnormals\nabo\naboard\nabode\naboded\nabodes\naboding\nabohm\nabohms\naboideau\naboideaus\naboideaux\naboil\naboiteau\naboiteaus\naboiteaux\nabolish\nabolished\nabolishes\nabolishing\nabolishment\nabolishments\nabolition\nabolitionary\nabolitionism\nabolitionist\nabolitionists\nabolitions\nabolla\nabollae\naboma\nabomas\nabomasa\nabomasal\nabomasi\nabomasum\nabomasus\nabominable\nabominably\nabominate\nabominated\nabominates\nabominating\nabomination\nabominations\nabominator\nabominators\naboon\naboral\naborally\naboriginal\naboriginally\naborigine\naborigines\naborning\nabort\naborted\naborter\naborters\naborting\nabortion\nabortionist\nabortionists\nabortions\nabortive\nabortively\naborts\nabos\nabought\naboulia\naboulias\naboulic\nabound\nabounded\nabounding\nabounds\nabout\nabove\naboveboard\naboves\nabracadabra\nabradant\nabradants\nabrade\nabraded\nabrader\nabraders\nabrades\nabrading\nabrasion\nabrasions\nabrasive\nabrasives\nabreact\nabreacted\nabreacting\nabreacts\nabreast\nabri\nabridge\nabridged\nabridgement\nabridgements\nabridger\nabridgers\nabridges\nabridging\nabridgment\nabridgments\nabris\nabroach\nabroad\nabrogate\nabrogated\nabrogates\nabrogating\nabrogation\nabrogations\nabrupt\nabrupter\nabruptest\nabruptly\nabruptness\nabscess\nabscessed\nabscesses\nabscessing\nabscise\nabscised\nabscises\nabscisin\nabscising\nabscisins\nabscissa\nabscissae\nabscissas\nabscission\nabscissions\nabscond\nabsconded\nabsconding\nabsconds\nabsence\nabsences\nabsent\nabsented\nabsentee\nabsenteeism\nabsentees\nabsenter\nabsenters\nabsenting\nabsently\nabsentminded\nabsentmindedly\nabsentmindedness\nabsents\nabsinth\nabsinthe\nabsinthes\nabsinths\nabsolute\nabsolutely\nabsoluteness\nabsoluter\nabsolutes\nabsolutest\nabsolution\nabsolutions\nabsolutism\nabsolutist\nabsolutistic\nabsolutists\nabsolve\nabsolved\nabsolver\nabsolvers\nabsolves\nabsolving\nabsonant\nabsorb\nabsorbabilities\nabsorbability\nabsorbable\nabsorbed\nabsorbencies\nabsorbency\nabsorbent\nabsorber\nabsorbers\nabsorbing\nabsorbingly\nabsorbs\nabsorption\nabsorptions\nabsorptive\nabstain\nabstained\nabstainer\nabstainers\nabstaining\nabstains\nabstemious\nabstemiously\nabstention\nabstentions\nabstentious\nabsterge\nabsterged\nabsterges\nabsterging\nabstinence\nabstinent\nabstract\nabstracted\nabstractedly\nabstracter\nabstracters\nabstractest\nabstracting\nabstraction\nabstractions\nabstractive\nabstractly\nabstractness\nabstractor\nabstractors\nabstracts\nabstrict\nabstricted\nabstricting\nabstricts\nabstruse\nabstrusely\nabstruseness\nabstruser\nabstrusest\nabsurd\nabsurder\nabsurdest\nabsurdities\nabsurdity\nabsurdly\nabsurdness\nabsurds\nabubble\nabulia\nabulias\nabulic\nabundance\nabundances\nabundant\nabundantly\nabusable\nabuse\nabused\nabuser\nabusers\nabuses\nabusing\nabusive\nabusively\nabusiveness\nabut\nabutilon\nabutilons\nabutment\nabutments\nabuts\nabuttal\nabuttals\nabutted\nabutter\nabutters\nabutting\nabuzz\nabvolt\nabvolts\nabwatt\nabwatts\naby\nabye\nabyes\nabying\nabys\nabysm\nabysmal\nabysmally\nabysms\nabyss\nabyssal\nabysses\nacacia\nacacias\nacademe\nacademes\nacademia\nacademias\nacademic\nacademically\nacademician\nacademicians\nacademicism\nacademics\nacademies\nacademy\nacajou\nacajous\nacaleph\nacalephae\nacalephe\nacalephes\nacalephs\nacanthi\nacanthus\nacanthuses\nacari\nacarid\nacaridan\nacaridans\nacarids\nacarine\nacarines\nacaroid\nacarpous\nacarus\nacaudal\nacaudate\nacauline\nacaulose\nacaulous\naccede\nacceded\nacceder\nacceders\naccedes\nacceding\naccelerando\naccelerate\naccelerated\naccelerates\naccelerating\nacceleration\naccelerations\naccelerative\naccelerator\naccelerators\naccelerometer\naccelerometers\naccent\naccented\naccenting\naccentor\naccentors\naccents\naccentual\naccentuate\naccentuated\naccentuates\naccentuating\naccentuation\naccentuations\naccept\nacceptabilities\nacceptability\nacceptable\nacceptably\nacceptance\nacceptances\nacceptant\nacceptation\nacceptations\naccepted\nacceptee\nacceptees\naccepter\naccepters\naccepting\nacceptor\nacceptors\naccepts\naccess\naccessaries\naccessary\naccessed\naccesses\naccessibilities\naccessibility\naccessible\naccessibleness\naccessibly\naccessing\naccession\naccessional\naccessions\naccessories\naccessory\naccident\naccidental\naccidentally\naccidentalness\naccidently\naccidents\naccidie\naccidies\nacclaim\nacclaimed\nacclaiming\nacclaims\nacclamation\nacclamations\nacclimate\nacclimated\nacclimates\nacclimating\nacclimation\nacclimations\nacclimatization\nacclimatizations\nacclimatize\nacclimatized\nacclimatizes\nacclimatizing\nacclivities\nacclivity\naccolade\naccolades\naccommodate\naccommodated\naccommodates\naccommodating\naccommodatingly\naccommodation\naccommodations\naccommodative\naccompanied\naccompanies\naccompaniment\naccompaniments\naccompanist\naccompanists\naccompany\naccompanying\naccomplice\naccomplices\naccomplish\naccomplished\naccomplisher\naccomplishers\naccomplishes\naccomplishing\naccomplishment\naccomplishments\naccord\naccordance\naccordances\naccordant\naccordantly\naccorded\naccorder\naccorders\naccording\naccordingly\naccordion\naccordionist\naccordionists\naccordions\naccords\naccost\naccosted\naccosting\naccosts\naccount\naccountabilities\naccountability\naccountable\naccountably\naccountancy\naccountant\naccountants\naccounted\naccounting\naccountings\naccounts\naccouter\naccoutered\naccoutering\naccouterment\naccouterments\naccouters\naccoutre\naccoutred\naccoutrement\naccoutrements\naccoutres\naccoutring\naccredit\naccreditation\naccreditations\naccredited\naccrediting\naccredits\naccrete\naccreted\naccretes\naccreting\naccretion\naccretionary\naccretions\naccrual\naccruals\naccrue\naccrued\naccruement\naccruements\naccrues\naccruing\nacculturate\nacculturated\nacculturates\nacculturating\nacculturation\nacculturations\naccumulate\naccumulated\naccumulates\naccumulating\naccumulation\naccumulations\naccumulative\naccumulator\naccumulators\naccuracies\naccuracy\naccurate\naccurately\naccurateness\naccursed\naccurst\naccusal\naccusals\naccusant\naccusants\naccusation\naccusations\naccusative\naccusatory\naccuse\naccused\naccuser\naccusers\naccuses\naccusing\naccusingly\naccustom\naccustomed\naccustoming\naccustoms\nace\naced\nacedia\nacedias\naceldama\naceldamas\nacentric\nacequia\nacequias\nacerate\nacerated\nacerb\nacerbate\nacerbated\nacerbates\nacerbating\nacerber\nacerbest\nacerbic\nacerbities\nacerbity\nacerola\nacerolas\nacerose\nacerous\nacervate\nacervuli\naces\nacescent\nacescents\naceta\nacetal\nacetals\nacetamid\nacetamids\nacetate\nacetated\nacetates\nacetic\nacetified\nacetifies\nacetify\nacetifying\nacetone\nacetones\nacetonic\nacetose\nacetous\nacetoxyl\nacetoxyls\nacetum\nacetyl\nacetylcholine\nacetylene\nacetylenes\nacetylic\nacetyls\nacetylsalicylic\nache\nached\nachene\nachenes\nachenial\naches\nachier\nachiest\nachievable\nachieve\nachieved\nachievement\nachievements\nachiever\nachievers\nachieves\nachieving\nachiness\nachinesses\naching\nachingly\nachiote\nachiotes\nachoo\nachromat\nachromatic\nachromaticities\nachromaticity\nachromats\nachromic\nachy\nacicula\naciculae\nacicular\naciculas\nacid\nacidhead\nacidheads\nacidic\nacidification\nacidifications\nacidified\nacidifies\nacidify\nacidifying\nacidities\nacidity\nacidly\nacidness\nacidnesses\nacidoses\nacidosis\nacidotic\nacids\nacidulate\nacidulated\nacidulates\nacidulating\nacidulation\nacidulations\nacidulous\nacidy\nacierate\nacierated\nacierates\nacierating\naciform\nacinar\nacing\nacini\nacinic\nacinose\nacinous\nacinus\nackee\nacknowledge\nacknowledged\nacknowledges\nacknowledging\nacknowledgment\nacknowledgments\naclinic\nacmatic\nacme\nacmes\nacmic\nacne\nacned\nacnes\nacnode\nacnodes\nacock\nacold\nacolyte\nacolytes\naconite\naconites\naconitic\naconitum\naconitums\nacorn\nacorns\nacoustic\nacoustical\nacoustically\nacoustician\nacousticians\nacoustics\nacquaint\nacquaintance\nacquaintances\nacquaintanceship\nacquainted\nacquainting\nacquaints\nacquest\nacquests\nacquiesce\nacquiesced\nacquiescence\nacquiescences\nacquiescent\nacquiescently\nacquiesces\nacquiescing\nacquirable\nacquire\nacquired\nacquirement\nacquirements\nacquirer\nacquirers\nacquires\nacquiring\nacquisition\nacquisitional\nacquisitions\nacquisitive\nacquisitively\nacquisitiveness\nacquisitor\nacquisitors\nacquit\nacquits\nacquittal\nacquittals\nacquittance\nacquittances\nacquitted\nacquitting\nacrasin\nacrasins\nacre\nacreage\nacreages\nacred\nacres\nacrid\nacrider\nacridest\nacridine\nacridines\nacridities\nacridity\nacridly\nacridness\nacrimonies\nacrimonious\nacrimony\nacrobat\nacrobatic\nacrobatically\nacrobatics\nacrobats\nacrodont\nacrodonts\nacrogen\nacrogens\nacrolein\nacroleins\nacrolith\nacroliths\nacromia\nacromial\nacromion\nacronic\nacronym\nacronyms\nacrophobia\nacrophobias\nacropolis\nacross\nacrostic\nacrostics\nacrotic\nacrotism\nacrotisms\nacrylate\nacrylates\nacrylic\nacrylics\nact\nacta\nactability\nactable\nacted\nacties\nactin\nactinal\nacting\nactings\nactinia\nactiniae\nactinian\nactinians\nactinias\nactinic\nactinide\nactinides\nactinism\nactinisms\nactinium\nactiniums\nactinoid\nactinoids\nactinon\nactinons\nactins\naction\nactionable\nactionably\nactions\nactivate\nactivated\nactivates\nactivating\nactivation\nactivations\nactivator\nactivators\nactive\nactively\nactiveness\nactives\nactivism\nactivisms\nactivist\nactivists\nactivities\nactivity\nactor\nactorish\nactors\nactress\nactresses\nacts\nactual\nactualities\nactuality\nactualization\nactualizations\nactualize\nactualized\nactualizes\nactualizing\nactually\nactuarial\nactuaries\nactuary\nactuate\nactuated\nactuates\nactuating\nactuation\nactuations\nactuator\nactuators\nacuate\nacuities\nacuity\naculeate\nacumen\nacumens\nacupuncture\nacupunctures\nacupuncturist\nacupuncturists\nacutance\nacutances\nacute\nacutely\nacuteness\nacuter\nacutes\nacutest\nacyclic\nacyl\nacylate\nacylated\nacylates\nacylating\nacyls\nad\nadage\nadages\nadagial\nadagio\nadagios\nadamance\nadamances\nadamancies\nadamancy\nadamant\nadamantine\nadamantly\nadamants\nadamsite\nadamsites\nadapt\nadaptability\nadaptable\nadaptation\nadaptations\nadapted\nadapter\nadapters\nadapting\nadaption\nadaptions\nadaptive\nadaptor\nadaptors\nadapts\nadaxial\nadd\naddable\naddax\naddaxes\nadded\naddedly\naddend\naddenda\naddends\naddendum\nadder\nadders\naddible\naddict\naddicted\naddicting\naddiction\naddictions\naddictive\naddicts\nadding\naddition\nadditional\nadditionally\nadditions\nadditive\nadditives\naddle\naddled\naddles\naddling\naddress\naddressed\naddressee\naddressees\naddresser\naddressers\naddresses\naddressing\naddrest\nadds\nadduce\nadduced\nadducent\nadducer\nadducers\nadduces\nadducing\nadduct\nadducted\nadducting\nadductor\nadductors\nadducts\nadeem\nadeemed\nadeeming\nadeems\nadenine\nadenines\nadenitis\nadenitises\nadenoid\nadenoidal\nadenoids\nadenoma\nadenomas\nadenomata\nadenyl\nadenyls\nadept\nadepter\nadeptest\nadeptly\nadeptness\nadepts\nadequacies\nadequacy\nadequate\nadequately\nadhere\nadhered\nadherence\nadherences\nadherend\nadherends\nadherent\nadherents\nadherer\nadherers\nadheres\nadhering\nadhesion\nadhesional\nadhesions\nadhesive\nadhesively\nadhesiveness\nadhesives\nadhibit\nadhibited\nadhibiting\nadhibits\nadiabatic\nadiabatically\nadieu\nadieus\nadieux\nadios\nadipic\nadipose\nadiposes\nadiposis\nadiposity\nadipous\nadit\nadits\nadjacencies\nadjacency\nadjacent\nadjacently\nadjectival\nadjectivally\nadjective\nadjectives\nadjoin\nadjoined\nadjoining\nadjoins\nadjoint\nadjoints\nadjourn\nadjourned\nadjourning\nadjournment\nadjournments\nadjourns\nadjudge\nadjudged\nadjudges\nadjudging\nadjudicate\nadjudicated\nadjudicates\nadjudicating\nadjudication\nadjudications\nadjudicative\nadjudicator\nadjudicators\nadjunct\nadjunctive\nadjuncts\nadjuration\nadjurations\nadjuratory\nadjure\nadjured\nadjurer\nadjurers\nadjures\nadjuring\nadjuror\nadjurors\nadjust\nadjustable\nadjusted\nadjuster\nadjusters\nadjusting\nadjustment\nadjustments\nadjustor\nadjustors\nadjusts\nadjutancy\nadjutant\nadjutants\nadjuvant\nadjuvants\nadman\nadmass\nadmen\nadminister\nadministered\nadministering\nadministers\nadministrable\nadministrant\nadministrants\nadministrate\nadministrated\nadministrates\nadministrating\nadministration\nadministrations\nadministrative\nadministratively\nadministrator\nadministrators\nadmirable\nadmirableness\nadmirably\nadmiral\nadmirals\nadmiralties\nadmiralty\nadmiration\nadmirations\nadmire\nadmired\nadmirer\nadmirers\nadmires\nadmiring\nadmissibility\nadmissible\nadmission\nadmissions\nadmit\nadmits\nadmittance\nadmittances\nadmitted\nadmittedly\nadmitter\nadmitters\nadmitting\nadmix\nadmixed\nadmixes\nadmixing\nadmixt\nadmixture\nadmixtures\nadmonish\nadmonished\nadmonishes\nadmonishing\nadmonishingly\nadmonishment\nadmonishments\nadmonition\nadmonitions\nadmonitory\nadnate\nadnation\nadnations\nadnexa\nadnexal\nadnoun\nadnouns\nado\nadobe\nadobes\nadobo\nadolescence\nadolescent\nadolescents\nadopt\nadoptabilities\nadoptability\nadoptable\nadopted\nadoptee\nadoptees\nadopter\nadopters\nadopting\nadoption\nadoptions\nadoptive\nadoptively\nadopts\nadorable\nadorably\nadoration\nadorations\nadore\nadored\nadorer\nadorers\nadores\nadoring\nadorn\nadorned\nadorner\nadorners\nadorning\nadornment\nadornments\nadorns\nados\nadown\nadoze\nadrenal\nadrenaline\nadrenalines\nadrenals\nadrift\nadroit\nadroiter\nadroitest\nadroitly\nadroitness\nads\nadscript\nadscripts\nadsorb\nadsorbate\nadsorbates\nadsorbed\nadsorbent\nadsorbing\nadsorbs\nadsorption\nadsorptions\nadularia\nadularias\nadulate\nadulated\nadulates\nadulating\nadulation\nadulations\nadulator\nadulators\nadulatory\nadult\nadulterant\nadulterants\nadulterate\nadulterated\nadulterates\nadulterating\nadulteration\nadulterations\nadulterer\nadulterers\nadulteress\nadulteresses\nadulteries\nadulterous\nadulterously\nadultery\nadulthood\nadultly\nadultness\nadults\nadumbral\nadumbrate\nadumbrated\nadumbrates\nadumbrating\nadumbration\nadumbrations\nadumbrative\nadumbratively\nadunc\naduncate\naduncous\nadust\nadvance\nadvanced\nadvancement\nadvancements\nadvancer\nadvancers\nadvances\nadvancing\nadvantage\nadvantageous\nadvantageously\nadvantages\nadvent\nadventitious\nadventitiously\nadventitiousness\nadvents\nadventure\nadventured\nadventurer\nadventurers\nadventures\nadventuresome\nadventuress\nadventuresses\nadventuring\nadventurous\nadverb\nadverbial\nadverbially\nadverbs\nadversaries\nadversary\nadversative\nadversatively\nadverse\nadversely\nadverseness\nadversities\nadversity\nadvert\nadverted\nadvertence\nadvertences\nadvertencies\nadvertency\nadvertent\nadvertently\nadverting\nadvertise\nadvertised\nadvertisement\nadvertisements\nadvertiser\nadvertisers\nadvertises\nadvertising\nadverts\nadvice\nadvices\nadvisabilities\nadvisability\nadvisable\nadvisableness\nadvisably\nadvise\nadvised\nadvisedly\nadvisee\nadvisees\nadvisement\nadvisements\nadviser\nadvisers\nadvises\nadvising\nadvisor\nadvisories\nadvisors\nadvisory\nadvocacies\nadvocacy\nadvocate\nadvocated\nadvocates\nadvocating\nadvowson\nadvowsons\nadynamia\nadynamias\nadynamic\nadyta\nadytum\nadz\nadze\nadzes\nae\naecia\naecial\naecidia\naecidium\naecium\naedes\naedile\naediles\naedine\naegis\naegises\naeneous\naeneus\naeolian\naeon\naeonian\naeonic\naeons\naerate\naerated\naerates\naerating\naeration\naerations\naerator\naerators\naerial\naerialist\naerialists\naerially\naerials\naerie\naeried\naerier\naeries\naeriest\naerified\naerifies\naeriform\naerify\naerifying\naerily\naero\naerobatics\naerobe\naerobes\naerobia\naerobic\naerobically\naerobium\naeroduct\naeroducts\naerodynamic\naerodynamically\naerodynamics\naerodyne\naerodynes\naerofoil\naerofoils\naerogel\naerogels\naerogram\naerograms\naerolite\naerolites\naerolith\naeroliths\naerologies\naerology\naeronaut\naeronautic\naeronautical\naeronautically\naeronautics\naeronauts\naeronomer\naeronomers\naeronomic\naeronomical\naeronomics\naeronomies\naeronomist\naeronomists\naeronomy\naerosol\naerosols\naerospace\naerostat\naerostatics\naerostats\naerugo\naerugos\naery\naesthete\naesthetes\naesthetic\naesthetically\naestheticism\naestheticisms\naesthetics\naestival\naether\naetheric\naethers\nafar\nafars\nafeard\nafeared\naff\naffability\naffable\naffably\naffair\naffaire\naffaires\naffairs\naffect\naffectabilities\naffectability\naffectable\naffectation\naffectations\naffected\naffectedly\naffectedness\naffecter\naffecters\naffecting\naffectingly\naffection\naffectionate\naffectionately\naffections\naffective\naffects\nafferent\naffiance\naffianced\naffiances\naffiancing\naffiant\naffiants\naffiche\naffiches\naffidavit\naffidavits\naffiliate\naffiliated\naffiliates\naffiliating\naffiliation\naffiliations\naffine\naffined\naffinely\naffines\naffinities\naffinity\naffirm\naffirmable\naffirmance\naffirmative\naffirmatively\naffirmed\naffirmer\naffirmers\naffirming\naffirms\naffix\naffixal\naffixed\naffixer\naffixers\naffixes\naffixial\naffixing\nafflatus\nafflatuses\nafflict\nafflicted\nafflicting\naffliction\nafflictions\nafflictive\nafflictively\nafflicts\naffluence\naffluent\naffluently\naffluents\nafflux\naffluxes\nafford\naffordable\nafforded\naffording\naffords\nafforest\nafforested\nafforesting\nafforests\naffray\naffrayed\naffrayer\naffrayers\naffraying\naffrays\naffright\naffrighted\naffrighting\naffrights\naffront\naffronted\naffronting\naffronts\naffusion\naffusions\nafghan\nafghani\nafghanis\nafghans\naficionado\naficionados\nafield\nafire\naflame\nafloat\naflutter\nafoot\nafore\naforementioned\naforesaid\naforethought\nafoul\nafraid\nafreet\nafreets\nafresh\nafrit\nafrits\naft\nafter\nafterbirth\nafterbirths\nafterburner\nafterburners\naftercare\naftereffect\naftereffects\nafterglow\nafterglows\nafterimage\nafterimages\nafterlife\naftermath\naftermaths\nafternoon\nafternoons\nafters\naftershock\naftershocks\naftertaste\naftertastes\naftertax\nafterthought\nafterthoughts\nafterward\nafterwards\naftmost\naftosa\naftosas\nag\naga\nagain\nagainst\nagalloch\nagallochs\nagalwood\nagalwoods\nagama\nagamas\nagamete\nagametes\nagamic\nagamous\nagapae\nagapai\nagape\nagapeic\nagar\nagaric\nagarics\nagars\nagas\nagate\nagates\nagatize\nagatized\nagatizes\nagatizing\nagatoid\nagave\nagaves\nagaze\nage\naged\nagedly\nagedness\nagednesses\nagee\nageing\nageings\nageless\nagelong\nagencies\nagency\nagenda\nagendas\nagendum\nagendums\nagene\nagenes\nageneses\nagenesia\nagenesias\nagenesis\nagenetic\nagenize\nagenized\nagenizes\nagenizing\nagent\nagential\nagentries\nagentry\nagents\nager\nageratum\nageratums\nagers\nages\nagger\naggers\naggie\naggies\nagglomerate\nagglomerated\nagglomerates\nagglomerating\nagglomeration\nagglomerations\nagglutinate\nagglutinated\nagglutinates\nagglutinating\nagglutination\nagglutinations\nagglutinative\nagglutinin\nagglutinins\naggrade\naggraded\naggrades\naggrading\naggrandize\naggrandized\naggrandizement\naggrandizements\naggrandizes\naggrandizing\naggravate\naggravated\naggravates\naggravating\naggravation\naggravations\naggregate\naggregated\naggregates\naggregating\naggregation\naggregations\naggress\naggressed\naggresses\naggressing\naggression\naggressions\naggressive\naggressively\naggressiveness\naggressor\naggressors\naggrieve\naggrieved\naggrieves\naggrieving\naggro\nagha\naghas\naghast\nagile\nagilely\nagilities\nagility\nagin\naging\nagings\naginner\naginners\nagio\nagios\nagiotage\nagiotages\nagism\nagist\nagisted\nagisting\nagists\nagitable\nagitate\nagitated\nagitatedly\nagitates\nagitating\nagitation\nagitations\nagitato\nagitator\nagitators\nagitprop\nagitprops\naglare\nagleam\naglee\naglet\naglets\nagley\naglimmer\naglitter\naglow\nagly\naglycon\naglycone\naglycones\naglycons\nagma\nagmas\nagminate\nagnail\nagnails\nagnate\nagnates\nagnatic\nagnation\nagnations\nagnize\nagnized\nagnizes\nagnizing\nagnomen\nagnomens\nagnomina\nagnostic\nagnosticism\nagnostics\nago\nagog\nagon\nagonal\nagone\nagones\nagonic\nagonies\nagonise\nagonised\nagonises\nagonising\nagonist\nagonists\nagonize\nagonized\nagonizes\nagonizing\nagonizingly\nagons\nagony\nagora\nagorae\nagoraphobia\nagoraphobic\nagoras\nagorot\nagoroth\nagouti\nagouties\nagoutis\nagouty\nagrafe\nagrafes\nagraffe\nagraffes\nagrapha\nagraphia\nagraphias\nagraphic\nagrarian\nagrarianism\nagrarians\nagree\nagreeability\nagreeable\nagreeableness\nagreeably\nagreed\nagreeing\nagreement\nagreements\nagrees\nagrestal\nagrestic\nagria\nagricultural\nagriculturalist\nagriculturalists\nagriculture\nagricultures\nagriculturist\nagriculturists\nagrimonies\nagrimony\nagrologies\nagrology\nagronomic\nagronomically\nagronomies\nagronomist\nagronomists\nagronomy\naground\nague\naguelike\nagues\nagueweed\nagueweeds\naguish\naguishly\nah\naha\nahchoo\nahead\nahem\nahimsa\nahimsas\nahold\naholds\nahorse\nahoy\nahull\nai\naiblins\naid\naide\naided\naider\naiders\naides\naidful\naiding\naidless\naidman\naidmen\naids\naiglet\naiglets\naigret\naigrets\naigrette\naigrettes\naiguille\naiguilles\naikido\naikidos\nail\nailed\naileron\nailerons\nailing\nailment\nailments\nails\naim\naimed\naimer\naimers\naimful\naimfully\naiming\naimless\naimlessly\naimlessness\naims\nain\nains\nainsell\nainsells\naioli\nair\nairboat\nairboats\nairborne\nairbound\nairbrush\nairbrushed\nairbrushes\nairbrushing\nairburst\nairbursts\nairbus\nairbuses\nairbusses\naircoach\naircoaches\naircraft\naircrew\naircrews\nairdrome\nairdromes\nairdrop\nairdropped\nairdropping\nairdrops\naired\nairer\nairest\nairfield\nairfields\nairflow\nairflows\nairfoil\nairfoils\nairframe\nairframes\nairglow\nairglows\nairhead\nairheads\nairier\nairiest\nairily\nairiness\nairinesses\nairing\nairings\nairless\nairlift\nairlifted\nairlifting\nairlifts\nairlike\nairline\nairliner\nairliners\nairlines\nairmail\nairmailed\nairmailing\nairmails\nairman\nairmen\nairn\nairns\nairpark\nairparks\nairplane\nairplanes\nairport\nairports\nairpost\nairposts\nairproof\nairproofed\nairproofing\nairproofs\nairs\nairscrew\nairscrews\nairship\nairships\nairsick\nairsickness\nairspace\nairspaces\nairspeed\nairspeeds\nairstream\nairstreams\nairstrip\nairstrips\nairt\nairted\nairth\nairthed\nairthing\nairths\nairtight\nairtightness\nairting\nairts\nairward\nairwave\nairwaves\nairway\nairways\nairwise\nairwoman\nairwomen\nairworthiness\nairworthy\nairy\nais\naisle\naisled\naisles\nait\naitch\naitches\naits\naiver\naivers\najar\najee\najiva\najivas\najowan\najowans\najuga\nakee\nakees\nakela\nakelas\nakene\nakenes\nakimbo\nakin\nakvavit\nakvavits\nal\nala\nalabaster\nalabasters\nalack\nalacrities\nalacritous\nalacrity\nalae\nalameda\nalamedas\nalamo\nalamode\nalamodes\nalamos\nalan\naland\nalands\nalane\nalang\nalanin\nalanine\nalanines\nalanins\nalans\nalant\nalants\nalanyl\nalanyls\nalar\nalarm\nalarmed\nalarming\nalarmingly\nalarmism\nalarmisms\nalarmist\nalarmists\nalarms\nalarum\nalarumed\nalaruming\nalarums\nalary\nalas\nalaska\nalaskas\nalastor\nalastors\nalate\nalated\nalation\nalations\nalb\nalba\nalbacore\nalbacores\nalbas\nalbata\nalbatas\nalbatross\nalbatrosses\nalbedo\nalbedos\nalbeit\nalbicore\nalbicores\nalbinal\nalbinic\nalbinism\nalbinisms\nalbinistic\nalbino\nalbinos\nalbite\nalbites\nalbitic\nalbs\nalbum\nalbumen\nalbumens\nalbumin\nalbuminous\nalbumins\nalbumose\nalbumoses\nalbums\nalburnum\nalburnums\nalcade\nalcades\nalcahest\nalcahests\nalcaic\nalcaics\nalcaide\nalcaides\nalcalde\nalcaldes\nalcayde\nalcaydes\nalcazar\nalcazars\nalchemic\nalchemical\nalchemies\nalchemist\nalchemists\nalchemy\nalchymies\nalchymy\nalcid\nalcidine\nalcohol\nalcoholic\nalcoholically\nalcoholics\nalcoholism\nalcohols\nalcove\nalcoved\nalcoves\naldehyde\naldehydes\nalder\nalderman\naldermen\nalders\nalderwoman\nalderwomen\naldol\naldolase\naldolases\naldols\naldose\naldoses\naldrin\naldrins\nale\naleatoric\naleatory\nalec\nalecs\nalee\nalef\nalefs\nalegar\nalegars\nalehouse\nalehouses\nalembic\nalembics\naleph\nalephs\nalert\nalerted\nalerter\nalertest\nalerting\nalertly\nalertness\nalerts\nales\naleuron\naleurone\naleurones\naleurons\nalevin\nalevins\nalewife\nalewives\nalexandrine\nalexia\nalexias\nalexin\nalexine\nalexines\nalexins\nalfa\nalfaki\nalfakis\nalfalfa\nalfalfas\nalfaqui\nalfaquin\nalfaquins\nalfaquis\nalfas\nalforja\nalforjas\nalfresco\nalga\nalgae\nalgal\nalgaroba\nalgarobas\nalgas\nalgebra\nalgebraic\nalgebraically\nalgebras\nalgerine\nalgerines\nalgicide\nalgicides\nalgid\nalgidities\nalgidity\nalgin\nalginate\nalginates\nalgins\nalgoid\nalgologies\nalgology\nalgor\nalgorism\nalgorisms\nalgorithm\nalgorithmic\nalgorithms\nalgors\nalgum\nalgums\nalias\naliases\nalibi\nalibied\nalibies\nalibiing\nalibis\nalible\nalidad\nalidade\nalidades\nalidads\nalien\nalienabilities\nalienability\nalienable\nalienage\nalienages\nalienate\nalienated\nalienates\nalienating\nalienation\nalienations\naliened\nalienee\nalienees\naliener\nalieners\naliening\nalienism\nalienisms\nalienist\nalienists\nalienly\nalienor\nalienors\naliens\nalif\naliform\nalifs\nalight\nalighted\nalighting\nalights\nalign\naligned\naligner\naligners\naligning\nalignment\nalignments\naligns\nalike\nalikeness\naliment\nalimentary\nalimented\nalimenting\naliments\nalimonies\nalimony\naline\nalined\nalinement\nalinements\naliner\naliners\nalines\nalining\naliped\nalipeds\naliphatic\naliquant\naliquot\naliquots\nalist\nalit\naliunde\nalive\naliveness\naliya\naliyah\naliyahs\nalizarin\nalizarins\nalkahest\nalkahests\nalkali\nalkalic\nalkalies\nalkalified\nalkalifies\nalkalify\nalkalifying\nalkalin\nalkaline\nalkalinities\nalkalinity\nalkalis\nalkalise\nalkalised\nalkalises\nalkalising\nalkalize\nalkalized\nalkalizes\nalkalizing\nalkaloid\nalkaloidal\nalkaloids\nalkane\nalkanes\nalkanet\nalkanets\nalkene\nalkenes\nalkine\nalkines\nalkoxy\nalky\nalkyd\nalkyds\nalkyl\nalkylate\nalkylated\nalkylates\nalkylating\nalkylic\nalkyls\nalkyne\nalkynes\nall\nallanite\nallanites\nallay\nallayed\nallayer\nallayers\nallaying\nallays\nallegation\nallegations\nallege\nalleged\nallegedly\nalleger\nallegers\nalleges\nallegiance\nallegiances\nalleging\nallegorical\nallegorically\nallegories\nallegorize\nallegorized\nallegorizes\nallegorizing\nallegory\nallegretto\nallegro\nallegros\nallele\nalleles\nallelic\nallelism\nallelisms\nalleluia\nalleluias\nallemande\nallemandes\nallergen\nallergenic\nallergens\nallergic\nallergies\nallergin\nallergins\nallergist\nallergists\nallergy\nalleviate\nalleviated\nalleviates\nalleviating\nalleviation\nalleviations\nalley\nalleys\nalleyway\nalleyways\nallheal\nallheals\nalliable\nalliance\nalliances\nallied\nallies\nalligator\nalligators\nalliterate\nalliterated\nalliterates\nalliterating\nalliteration\nalliterations\nalliterative\nalliteratively\nallium\nalliums\nallobar\nallobars\nallocatable\nallocate\nallocated\nallocates\nallocating\nallocation\nallocations\nallocution\nallocutions\nallod\nallodia\nallodial\nallodium\nallods\nallogamies\nallogamy\nallonge\nallonges\nallonym\nallonyms\nallopath\nallopaths\nallot\nallotment\nallotments\nallotropies\nallotropy\nallots\nallotted\nallottee\nallottees\nallotter\nallotters\nallotting\nallotype\nallotypes\nallotypies\nallotypy\nallover\nallovers\nallow\nallowable\nallowably\nallowance\nallowances\nallowed\nallowing\nallows\nalloxan\nalloxans\nalloy\nalloyed\nalloying\nalloys\nalls\nallseed\nallseeds\nallspice\nallspices\nallude\nalluded\nalludes\nalluding\nallure\nallured\nallurement\nallurements\nallurer\nallurers\nallures\nalluring\nalluringly\nallusion\nallusions\nallusive\nallusively\nallusiveness\nalluvia\nalluvial\nalluvials\nalluvion\nalluvions\nalluvium\nalluviums\nally\nallying\nallyl\nallylic\nallyls\nalma\nalmagest\nalmagests\nalmah\nalmahs\nalmanac\nalmanacs\nalmas\nalme\nalmeh\nalmehs\nalmemar\nalmemars\nalmes\nalmightiness\nalmighty\nalmner\nalmners\nalmond\nalmonds\nalmoner\nalmoners\nalmonries\nalmonry\nalmost\nalms\nalmsman\nalmsmen\nalmuce\nalmuces\nalmud\nalmude\nalmudes\nalmuds\nalmug\nalmugs\nalnico\nalnicoes\nalodia\nalodial\nalodium\naloe\naloes\naloetic\naloft\nalogical\naloha\nalohas\naloin\naloins\nalone\nalong\nalongshore\nalongside\naloof\naloofly\naloofness\nalopecia\nalopecias\nalopecic\naloud\nalow\nalp\nalpaca\nalpacas\nalpenstock\nalpenstocks\nalpha\nalphabet\nalphabeted\nalphabetic\nalphabetical\nalphabetically\nalphabeting\nalphabetization\nalphabetizations\nalphabetize\nalphabetized\nalphabetizer\nalphabetizers\nalphabetizes\nalphabetizing\nalphabets\nalphameric\nalphanumeric\nalphas\nalphorn\nalphorns\nalphosis\nalphosises\nalphyl\nalphyls\nalpine\nalpinely\nalpines\nalpinism\nalpinisms\nalpinist\nalpinists\nalps\nalready\nalright\nals\nalsike\nalsikes\nalso\nalt\naltar\naltarpiece\naltarpieces\naltars\nalter\nalterabilities\nalterability\nalterable\nalterably\nalterant\nalterants\nalteration\nalterations\nalterative\nalteratives\naltercation\naltercations\naltered\nalterer\nalterers\naltering\nalternate\nalternated\nalternately\nalternates\nalternating\nalternation\nalternations\nalternative\nalternatively\nalternatives\nalternator\nalternators\nalters\nalthaea\nalthaeas\nalthea\naltheas\naltho\nalthorn\nalthorns\nalthough\naltimeter\naltimeters\naltitude\naltitudes\nalto\naltogether\naltos\naltruism\naltruisms\naltruist\naltruistic\naltruistically\naltruists\nalts\naludel\naludels\nalula\nalulae\nalular\nalum\nalumin\nalumina\naluminas\nalumine\nalumines\naluminic\naluminize\naluminized\naluminizes\naluminizing\nalumins\naluminum\naluminums\nalumna\nalumnae\nalumni\nalumnus\nalumroot\nalumroots\nalums\nalunite\nalunites\nalveolar\nalveolars\nalveoli\nalveolus\nalvine\nalway\nalways\nalyssum\nalyssums\nam\nama\namadavat\namadavats\namadou\namadous\namah\namahs\namain\namalgam\namalgamate\namalgamated\namalgamates\namalgamating\namalgamation\namalgamations\namalgamator\namalgamators\namalgams\namandine\namanita\namanitas\namanuenses\namanuensis\namaranth\namaranthine\namaranths\namarelle\namarelles\namarna\namaryllis\namaryllises\namas\namass\namassed\namasser\namassers\namasses\namassing\namateur\namateurish\namateurishly\namateurishness\namateurism\namateurisms\namateurs\namative\namatol\namatols\namatory\namaze\namazed\namazedly\namazement\namazements\namazes\namazing\namazingly\namazon\namazonian\namazons\nambage\nambages\nambari\nambaries\nambaris\nambary\nambassador\nambassadorial\nambassadors\nambassadorship\nambassadorships\nambeer\nambeers\namber\nambergris\nambergrises\namberies\namberoid\namberoids\nambers\nambery\nambiance\nambiances\nambidexterity\nambidextrous\nambidextrously\nambience\nambiences\nambient\nambients\nambiguities\nambiguity\nambiguous\nambiguously\nambiguousness\nambit\nambition\nambitioned\nambitioning\nambitions\nambitious\nambitiously\nambitiousness\nambits\nambivalence\nambivalences\nambivalent\nambivert\nambiverts\namble\nambled\nambler\namblers\nambles\nambling\nambo\namboina\namboinas\nambones\nambos\namboyna\namboynas\nambries\nambroid\nambroids\nambrosia\nambrosias\nambry\nambsace\nambsaces\nambulance\nambulances\nambulant\nambulate\nambulated\nambulates\nambulating\nambulatory\nambuscade\nambuscaded\nambuscades\nambuscading\nambush\nambushed\nambusher\nambushers\nambushes\nambushing\nameba\namebae\nameban\namebas\namebean\namebic\nameboid\nameer\nameerate\nameerates\nameers\namelcorn\namelcorns\nameliorate\nameliorated\nameliorates\nameliorating\namelioration\nameliorations\nameliorative\namen\namenability\namenable\namenably\namend\namendable\namendatory\namended\namender\namenders\namending\namendment\namendments\namends\namenities\namenity\namens\nament\namentia\namentias\naments\namerce\namerced\namercer\namercers\namerces\namercing\namericium\namesace\namesaces\namethyst\namethysts\nami\namia\namiability\namiable\namiably\namiantus\namiantuses\namias\namicability\namicable\namicably\namice\namices\namid\namidase\namidases\namide\namides\namidic\namidin\namidins\namido\namidogen\namidogens\namidol\namidols\namids\namidship\namidships\namidst\namie\namies\namiga\namigas\namigo\namigos\namin\namine\namines\naminic\naminities\naminity\namino\namins\namir\namirate\namirates\namirs\namis\namiss\namities\namitoses\namitosis\namitotic\namitrole\namitroles\namity\nammeter\nammeters\nammine\nammines\nammino\nammo\nammocete\nammocetes\nammonal\nammonals\nammonia\nammoniac\nammoniacs\nammonias\nammonic\nammonified\nammonifies\nammonify\nammonifying\nammonite\nammonites\nammonium\nammoniums\nammonoid\nammonoids\nammos\nammunition\nammunitions\namnesia\namnesiac\namnesiacs\namnesias\namnesic\namnesics\namnestic\namnestied\namnesties\namnesty\namnestying\namnic\namniocenteses\namniocentesis\namnion\namnionia\namnionic\namnionions\namniote\namniotes\namniotic\namoeba\namoebae\namoeban\namoebas\namoebean\namoebic\namoeboid\namok\namoks\namole\namoles\namong\namongst\namontillado\namontillados\namoral\namorality\namorally\namoretti\namoretto\namorettos\namorini\namorino\namorist\namorists\namoroso\namorous\namorously\namorousness\namorphous\namorphously\namorphousness\namort\namortise\namortised\namortises\namortising\namortizable\namortization\namortizations\namortize\namortized\namortizes\namortizing\namotion\namotions\namount\namounted\namounting\namounts\namour\namours\namp\namperage\namperages\nampere\namperes\nampersand\nampersands\namphetamine\namphetamines\namphibia\namphibian\namphibians\namphibious\namphioxi\namphipod\namphipods\namphitheater\namphitheaters\namphora\namphorae\namphoral\namphoras\nample\nampler\namplest\namplification\namplifications\namplified\namplifier\namplifiers\namplifies\namplify\namplifying\namplitude\namplitudes\namply\nampoule\nampoules\namps\nampul\nampule\nampules\nampulla\nampullae\nampullar\nampuls\namputate\namputated\namputates\namputating\namputation\namputations\namputee\namputees\namreeta\namreetas\namrita\namritas\namtrac\namtrack\namtracks\namtracs\namu\namuck\namucks\namulet\namulets\namus\namusable\namuse\namused\namusedly\namusement\namusements\namuser\namusers\namuses\namusing\namusingly\namusive\namygdala\namygdalae\namygdale\namygdales\namygdule\namygdules\namyl\namylase\namylases\namylene\namylenes\namylic\namyloid\namyloids\namylose\namyloses\namyls\namylum\namylums\nan\nana\nanabaena\nanabaenas\nanabas\nanabases\nanabasis\nanabatic\nanableps\nanablepses\nanabolic\nanabolism\nanabolisms\nanachronism\nanachronisms\nanachronistic\nanaconda\nanacondas\nanadem\nanadems\nanaemia\nanaemias\nanaemic\nanaerobe\nanaerobes\nanaglyph\nanaglyphs\nanagoge\nanagoges\nanagogic\nanagogies\nanagogy\nanagram\nanagrammed\nanagramming\nanagrams\nanal\nanalcime\nanalcimes\nanalcite\nanalcites\nanalecta\nanalects\nanalemma\nanalemmas\nanalemmata\nanalgesia\nanalgesic\nanalgesics\nanalgia\nanalgias\nanalities\nanality\nanally\nanalog\nanalogic\nanalogical\nanalogically\nanalogies\nanalogize\nanalogized\nanalogizes\nanalogizing\nanalogous\nanalogously\nanalogs\nanalogue\nanalogues\nanalogy\nanalyse\nanalysed\nanalyser\nanalysers\nanalyses\nanalysing\nanalysis\nanalyst\nanalysts\nanalytic\nanalytical\nanalytically\nanalyze\nanalyzed\nanalyzer\nanalyzers\nanalyzes\nanalyzing\nananke\nanankes\nanapaest\nanapaests\nanapest\nanapests\nanaphase\nanaphases\nanaphora\nanaphoras\nanarch\nanarchic\nanarchies\nanarchism\nanarchisms\nanarchist\nanarchistic\nanarchists\nanarchs\nanarchy\nanas\nanasarca\nanasarcas\nanatase\nanatases\nanathema\nanathemas\nanathemata\nanathematize\nanathematized\nanathematizes\nanathematizing\nanatomic\nanatomical\nanatomically\nanatomies\nanatomist\nanatomists\nanatomize\nanatomized\nanatomizes\nanatomizing\nanatomy\nanatoxin\nanatoxins\nanatto\nanattos\nancestor\nancestors\nancestral\nancestress\nancestresses\nancestries\nancestry\nanchor\nanchorage\nanchorages\nanchored\nanchoret\nanchorets\nanchoring\nanchorite\nanchorites\nanchorman\nanchormen\nanchors\nanchovies\nanchovy\nanchusa\nanchusas\nanchusin\nanchusins\nancient\nancienter\nancientest\nanciently\nancientness\nancients\nancilla\nancillae\nancillary\nancillas\nancon\nanconal\nancone\nanconeal\nancones\nanconoid\nancress\nancresses\nand\nandante\nandantes\nandesite\nandesites\nandesyte\nandesytes\nandiron\nandirons\nandrogen\nandrogenic\nandrogens\nandrogynous\nandroid\nandroids\nands\nane\nanear\naneared\nanearing\nanears\nanecdota\nanecdotal\nanecdotally\nanecdote\nanecdotes\nanecdotist\nanecdotists\nanechoic\nanele\naneled\naneles\naneling\nanemia\nanemias\nanemic\nanemograph\nanemographs\nanemometer\nanemometers\nanemone\nanemones\nanenst\nanent\nanergia\nanergias\nanergic\nanergies\nanergy\naneroid\naneroids\nanes\nanesthesia\nanesthesias\nanesthesiologist\nanesthesiologists\nanesthesiology\nanesthetic\nanesthetics\nanesthetist\nanesthetists\nanesthetize\nanesthetized\nanesthetizes\nanesthetizing\nanestri\nanestrus\nanethol\nanethole\nanetholes\nanethols\naneurism\naneurisms\naneurysm\naneurysmal\naneurysms\nanew\nanga\nangaria\nangarias\nangaries\nangary\nangas\nangel\nangelfish\nangelic\nangelica\nangelical\nangelically\nangelicas\nangels\nangelus\nangeluses\nanger\nangered\nangering\nangerly\nangers\nangina\nanginal\nanginas\nanginose\nanginous\nangioma\nangiomas\nangiomata\nangle\nangled\nanglepod\nanglepods\nangler\nanglers\nangles\nangleworm\nangleworms\nanglice\nanglicism\nanglicisms\nanglicize\nanglicized\nanglicizes\nanglicizing\nangling\nanglings\nangora\nangoras\nangrier\nangriest\nangrily\nangry\nangst\nangstrom\nangstroms\nangsts\nanguine\nanguish\nanguished\nanguishes\nanguishing\nangular\nangularities\nangularity\nangularly\nangulate\nangulated\nangulates\nangulating\nangulose\nangulous\nanhinga\nanhingas\nanhydride\nanhydrides\nanhydrous\nani\nanil\nanile\nanilin\naniline\nanilines\nanilins\nanilities\nanility\nanils\nanima\nanimadversion\nanimadversions\nanimal\nanimalcule\nanimalcules\nanimalism\nanimalisms\nanimalistic\nanimally\nanimals\nanimas\nanimate\nanimated\nanimatedly\nanimater\nanimaters\nanimates\nanimating\nanimation\nanimations\nanimato\nanimator\nanimators\nanime\nanimes\nanimi\nanimis\nanimism\nanimisms\nanimist\nanimistic\nanimists\nanimosities\nanimosity\nanimus\nanimuses\nanion\nanionic\nanions\nanis\nanise\naniseed\naniseeds\nanises\nanisette\nanisettes\nanisic\nanisole\nanisoles\nankerite\nankerites\nankh\nankhs\nankle\nanklebone\nanklebones\nankles\nanklet\nanklets\nankus\nankuses\nankush\nankushes\nankylose\nankylosed\nankyloses\nankylosing\nanlace\nanlaces\nanlage\nanlagen\nanlages\nanlas\nanlases\nanna\nannal\nannalist\nannalistic\nannalists\nannals\nannas\nannates\nannatto\nannattos\nanneal\nannealed\nannealer\nannealers\nannealing\nanneals\nannelid\nannelids\nannex\nannexation\nannexational\nannexationist\nannexationists\nannexations\nannexe\nannexed\nannexes\nannexing\nannihilate\nannihilated\nannihilates\nannihilating\nannihilation\nannihilations\nannihilator\nannihilators\nanniversaries\nanniversary\nannotate\nannotated\nannotates\nannotating\nannotation\nannotations\nannotator\nannotators\nannounce\nannounced\nannouncement\nannouncements\nannouncer\nannouncers\nannounces\nannouncing\nannoy\nannoyance\nannoyances\nannoyed\nannoyer\nannoyers\nannoying\nannoyingly\nannoys\nannual\nannualize\nannualized\nannualizes\nannualizing\nannually\nannuals\nannuitant\nannuitants\nannuities\nannuity\nannul\nannular\nannulate\nannulet\nannulets\nannuli\nannulled\nannulling\nannulment\nannulments\nannulose\nannuls\nannulus\nannuluses\nannunciate\nannunciated\nannunciates\nannunciating\nannunciation\nannunciations\nannunciator\nannunciators\nanoa\nanoas\nanodal\nanodally\nanode\nanodes\nanodic\nanodically\nanodize\nanodized\nanodizes\nanodizing\nanodyne\nanodynes\nanodynic\nanoint\nanointed\nanointer\nanointers\nanointing\nanointment\nanointments\nanoints\nanole\nanoles\nanolyte\nanolytes\nanomalies\nanomalous\nanomalously\nanomaly\nanomic\nanomie\nanomies\nanomy\nanon\nanonym\nanonymities\nanonymity\nanonymous\nanonymously\nanonymousness\nanonyms\nanoopsia\nanoopsias\nanopheles\nanopia\nanopias\nanopsia\nanopsias\nanorak\nanoraks\nanoretic\nanorexia\nanorexias\nanorexies\nanorexy\nanorthic\nanosmia\nanosmias\nanosmic\nanother\nanoxemia\nanoxemias\nanoxemic\nanoxia\nanoxias\nanoxic\nansa\nansae\nansate\nansated\nanserine\nanserines\nanserous\nanswer\nanswerable\nanswered\nanswerer\nanswerers\nanswering\nanswers\nant\nanta\nantacid\nantacids\nantae\nantagonism\nantagonisms\nantagonist\nantagonistic\nantagonistically\nantagonists\nantagonize\nantagonized\nantagonizes\nantagonizing\nantalgic\nantalgics\nantarctic\nantas\nante\nanteater\nanteaters\nantebellum\nantecede\nanteceded\nantecedent\nantecedently\nantecedents\nantecedes\nanteceding\nantechamber\nantechambers\nanted\nantedate\nantedated\nantedates\nantedating\nantediluvian\nanteed\nantefix\nantefixa\nantefixes\nanteing\nantelope\nantelopes\nantenna\nantennae\nantennal\nantennas\nantepast\nantepasts\nantepenult\nantepenultimate\nantepenultimates\nantepenults\nanterior\nanteriorly\nanteroom\nanterooms\nantes\nantetype\nantetypes\nantevert\nanteverted\nanteverting\nanteverts\nanthelia\nanthelices\nanthelix\nanthem\nanthemed\nanthemia\nantheming\nanthems\nanther\nantheral\nantherid\nantherids\nanthers\nantheses\nanthesis\nanthill\nanthills\nanthodia\nanthoid\nanthologies\nanthologist\nanthologists\nanthologize\nanthologized\nanthologizes\nanthologizing\nanthology\nanthraces\nanthracite\nanthracites\nanthracitic\nanthrax\nanthropocentric\nanthropoid\nanthropoids\nanthropological\nanthropologically\nanthropologist\nanthropologists\nanthropology\nanthropomorphic\nanthropomorphically\nanthropomorphism\nanthropomorphisms\nanthropomorphize\nanthropomorphized\nanthropomorphizes\nanthropomorphizing\nanti\nantiaircraft\nantiar\nantiarin\nantiarins\nantiars\nantiauthoritarian\nantiauthoritarianism\nantibacterial\nantibacterials\nantibiotic\nantibiotics\nantibodies\nantibody\nantic\nanticipate\nanticipated\nanticipates\nanticipating\nanticipation\nanticipations\nanticipator\nanticipators\nanticipatory\nantick\nanticked\nanticking\nanticks\nanticlimactic\nanticlimactically\nanticlimax\nanticlimaxes\nanticly\nantics\nantidepressant\nantidepressants\nantidisestablishmentarianism\nantidotal\nantidotally\nantidote\nantidotes\nantiestablishment\nantifat\nantifreeze\nantifreezes\nantigen\nantigene\nantigenes\nantigens\nantihero\nantiheroes\nantiheroic\nantiheroine\nantiheroines\nantihistamine\nantihistamines\nantiking\nantikings\nantiknock\nantilog\nantilogarithm\nantilogarithms\nantilogies\nantilogs\nantilogy\nantimacassar\nantimacassars\nantimask\nantimasks\nantimatter\nantimere\nantimeres\nantimicrobial\nantimicrobials\nantimonies\nantimony\nanting\nantings\nantinode\nantinodes\nantinomies\nantinomy\nantinuclear\nantiparticle\nantiparticles\nantipasti\nantipasto\nantipathetic\nantipathies\nantipathy\nantipersonnel\nantiperspirant\nantiperspirants\nantiphon\nantiphonal\nantiphonies\nantiphons\nantiphony\nantipodal\nantipode\nantipodes\nantipole\nantipoles\nantipollution\nantipope\nantipopes\nantipyic\nantipyics\nantiquarian\nantiquarianism\nantiquarians\nantiquaries\nantiquary\nantiquate\nantiquated\nantiquates\nantiquating\nantique\nantiqued\nantiquer\nantiquers\nantiques\nantiquing\nantiquities\nantiquity\nantirust\nantirusts\nantis\nantisepsis\nantiseptic\nantiseptically\nantiseptics\nantisera\nantiskid\nantismog\nantisocial\nantitank\nantitax\nantitheses\nantithesis\nantithetic\nantithetical\nantithetically\nantitoxic\nantitoxin\nantitoxins\nantitrust\nantitype\nantitypes\nantiviral\nantiwar\nantler\nantlered\nantlers\nantlike\nantlion\nantlions\nantonym\nantonymies\nantonyms\nantonymy\nantra\nantral\nantre\nantres\nantrorse\nantrum\nants\nantsy\nanuran\nanurans\nanureses\nanuresis\nanuretic\nanuria\nanurias\nanuric\nanurous\nanus\nanuses\nanvil\nanviled\nanviling\nanvilled\nanvilling\nanvils\nanviltop\nanviltops\nanxieties\nanxiety\nanxious\nanxiously\nanxiousness\nany\nanybodies\nanybody\nanyhow\nanymore\nanyone\nanyplace\nanything\nanythings\nanytime\nanyway\nanyways\nanywhere\nanywheres\nanywise\naorist\naoristic\naorists\naorta\naortae\naortal\naortas\naortic\naoudad\naoudads\napace\napache\napaches\napagoge\napagoges\napagogic\napanage\napanages\naparejo\naparejos\napart\napartheid\napartment\napartments\napatetic\napathetic\napathetically\napathies\napathy\napatite\napatites\nape\napeak\naped\napeek\napelike\naper\napercu\napercus\naperient\naperients\naperies\naperitif\naperitifs\napers\naperture\napertures\napery\napes\napetalies\napetaly\napex\napexes\naphagia\naphagias\naphanite\naphanites\naphasia\naphasiac\naphasiacs\naphasias\naphasic\naphasics\naphelia\naphelian\naphelion\napheses\naphesis\naphetic\naphid\naphides\naphidian\naphidians\naphids\naphis\napholate\napholates\naphonia\naphonias\naphonic\naphonics\naphorise\naphorised\naphorises\naphorising\naphorism\naphorisms\naphorist\naphoristic\naphoristically\naphorists\naphorize\naphorized\naphorizes\naphorizing\naphotic\naphrodisiac\naphrodisiacal\naphrodisiacs\naphtha\naphthae\naphthous\naphyllies\naphylly\napian\napiarian\napiarians\napiaries\napiarist\napiarists\napiary\napical\napically\napices\napiculi\napiculus\napiece\napimania\napimanias\naping\napiologies\napiology\napish\napishly\naplasia\naplasias\naplastic\naplenty\naplite\naplites\naplitic\naplomb\naplombs\napnea\napneal\napneas\napneic\napnoea\napnoeal\napnoeas\napnoeic\napocalypse\napocalyptic\napocalyptically\napocarp\napocarpies\napocarps\napocarpy\napocope\napocopes\napocopic\napocrine\napocrypha\napocryphal\napocryphally\napod\napodal\napodoses\napodosis\napodous\napods\napogamic\napogamies\napogamy\napogeal\napogean\napogee\napogees\napogeic\napolitical\napollo\napollos\napolog\napologal\napologetic\napologetically\napologia\napologiae\napologias\napologies\napologist\napologists\napologize\napologized\napologizes\napologizing\napologs\napologue\napologues\napology\napolune\napolunes\napomict\napomicts\napomixes\napomixis\napophyge\napophyges\napoplectic\napoplexies\napoplexy\naport\napostacies\napostacy\napostasies\napostasy\napostate\napostates\napostatize\napostatized\napostatizes\napostatizing\napostil\napostils\napostle\napostles\napostolic\napostolicity\napostrophe\napostrophes\napostrophize\napostrophized\napostrophizes\napostrophizing\napothecaries\napothecary\napothece\napotheces\napothegm\napothegms\napothem\napothems\napotheoses\napotheosis\nappal\nappall\nappalled\nappalling\nappalls\nappals\nappanage\nappanages\napparat\napparats\napparatus\napparatuses\napparel\nappareled\nappareling\napparelled\napparelling\napparels\napparent\napparently\napparentness\napparition\napparitional\napparitions\nappeal\nappealability\nappealable\nappealed\nappealer\nappealers\nappealing\nappealingly\nappeals\nappear\nappearance\nappearances\nappeared\nappearing\nappears\nappeasable\nappease\nappeased\nappeasement\nappeasements\nappeaser\nappeasers\nappeases\nappeasing\nappel\nappellant\nappellants\nappellate\nappellation\nappellations\nappellee\nappellees\nappellor\nappellors\nappels\nappend\nappendage\nappendages\nappendectomies\nappendectomy\nappended\nappendices\nappendicitis\nappending\nappendix\nappendixes\nappends\napperceive\napperceived\napperceives\napperceiving\napperception\napperceptions\napperceptive\nappertain\nappertained\nappertaining\nappertains\nappestat\nappestats\nappetent\nappetite\nappetites\nappetizer\nappetizers\nappetizing\nappetizingly\napplaud\napplaudable\napplaudably\napplauded\napplauder\napplauders\napplauding\napplauds\napplause\napplauses\napple\napplejack\napples\nappliance\nappliances\napplicability\napplicable\napplicant\napplicants\napplication\napplications\napplicator\napplicators\napplied\napplier\nappliers\napplies\napplique\nappliqued\nappliqueing\nappliques\napply\napplying\nappoggiatura\nappoggiaturas\nappoint\nappointed\nappointee\nappointees\nappointing\nappointive\nappointment\nappointments\nappoints\napportion\napportioned\napportioning\napportionment\napportionments\napportions\nappose\napposed\napposer\napposers\napposes\napposing\napposite\nappositely\nappositeness\napposition\nappositional\nappositions\nappositive\nappositively\nappositives\nappraisal\nappraisals\nappraise\nappraised\nappraiser\nappraisers\nappraises\nappraising\nappreciable\nappreciably\nappreciate\nappreciated\nappreciates\nappreciating\nappreciation\nappreciations\nappreciative\nappreciatively\nappreciativeness\nappreciator\nappreciators\napprehend\napprehended\napprehending\napprehends\napprehensible\napprehensibly\napprehension\napprehensions\napprehensive\napprehensively\napprehensiveness\napprentice\napprenticed\napprentices\napprenticeship\napprenticeships\napprenticing\napprise\napprised\nappriser\napprisers\napprises\napprising\napprize\napprized\napprizer\napprizers\napprizes\napprizing\napproach\napproachability\napproachable\napproached\napproaches\napproaching\napprobate\napprobation\napprobations\nappropriate\nappropriated\nappropriately\nappropriateness\nappropriates\nappropriating\nappropriation\nappropriations\nappropriator\nappropriators\napproval\napprovals\napprove\napproved\napprover\napprovers\napproves\napproving\napprovingly\napproximate\napproximated\napproximately\napproximates\napproximating\napproximation\napproximations\nappulse\nappulses\nappurtenance\nappurtenances\nappurtenant\napractic\napraxia\napraxias\napraxic\napres\napricot\napricots\napron\naproned\naproning\naprons\napropos\napse\napses\napsidal\napsides\napsis\napt\napter\napteral\napterous\napteryx\napteryxes\naptest\naptitude\naptitudes\naptly\naptness\naptnesses\napyrase\napyrases\napyretic\naqua\naquacade\naquacades\naquaducts\naquae\naquamarine\naquamarines\naquanaut\naquanauts\naquaplane\naquaplaned\naquaplaner\naquaplaners\naquaplanes\naquaplaning\naquaria\naquarial\naquarian\naquarians\naquarist\naquarists\naquarium\naquariums\naquas\naquatic\naquatically\naquatics\naquatint\naquatinted\naquatinting\naquatints\naquatone\naquatones\naquavit\naquavits\naqueduct\naqueducts\naqueous\naquifer\naquiferous\naquifers\naquiline\naquiver\nar\narabesk\narabesks\narabesque\narabesques\narability\narabize\narabized\narabizes\narabizing\narable\narables\naraceous\narachnid\narachnids\naragonite\naragonites\narak\naraks\naraneid\naraneids\narapaima\narapaimas\nararoba\nararobas\narb\narbalest\narbalests\narbalist\narbalists\narbiter\narbiters\narbitrable\narbitral\narbitrament\narbitraments\narbitrarily\narbitrariness\narbitrary\narbitrate\narbitrated\narbitrates\narbitrating\narbitration\narbitrations\narbitrative\narbitrator\narbitrators\narbor\narboreal\narboreally\narbored\narbores\narboreta\narboretum\narboretums\narborist\narborists\narborize\narborized\narborizes\narborizing\narborous\narbors\narborvitae\narborvitaes\narbour\narboured\narbours\narbs\narbuscle\narbuscles\narbute\narbutean\narbutes\narbutus\narbutuses\narc\narcade\narcaded\narcades\narcadia\narcadian\narcadians\narcadias\narcading\narcadings\narcana\narcane\narcanum\narcature\narcatures\narced\narch\narchaeological\narchaeologist\narchaeologists\narchaeology\narchaic\narchaically\narchaise\narchaised\narchaises\narchaising\narchaism\narchaisms\narchaist\narchaists\narchaize\narchaized\narchaizes\narchaizing\narchangel\narchangels\narchbishop\narchbishops\narchdeacon\narchdeacons\narchdiocese\narchdioceses\narchduchess\narchduchesses\narchduchies\narchduchy\narchduke\narchdukes\narched\narchenemies\narchenemy\narcheological\narcheologist\narcheologists\narcheology\narcher\narcheries\narchers\narchery\narches\narchetypal\narchetype\narchetypes\narchfiend\narchfiends\narchiepiscopal\narchil\narchils\narchine\narchines\narching\narchings\narchipelago\narchipelagoes\narchipelagos\narchitect\narchitectonic\narchitectonics\narchitects\narchitectural\narchitecturally\narchitecture\narchitectures\narchitrave\narchitraves\narchival\narchive\narchived\narchives\narchiving\narchivist\narchivists\narchly\narchness\narchnesses\narchon\narchons\narchway\narchways\narciform\narcing\narcked\narcking\narco\narcs\narctic\narctics\narcuate\narcuated\narcus\narcuses\nardeb\nardebs\nardencies\nardency\nardent\nardently\nardor\nardors\nardour\nardours\narduous\narduously\narduousness\nare\narea\nareae\nareal\nareally\nareas\nareaway\nareaways\nareca\narecas\nareic\narena\narenas\narenose\narenous\nareola\nareolae\nareolar\nareolas\nareolate\nareole\nareoles\nareologies\nareology\nares\narete\naretes\narethusa\narethusas\narf\narfs\nargal\nargali\nargalis\nargals\nargent\nargental\nargentic\nargentine\nargentines\nargents\nargentum\nargentums\nargil\nargils\narginase\narginases\narginine\narginines\nargle\nargled\nargles\nargling\nargol\nargols\nargon\nargonaut\nargonauts\nargons\nargosies\nargosy\nargot\nargotic\nargots\narguable\narguably\nargue\nargued\narguer\narguers\nargues\nargufied\nargufier\nargufiers\nargufies\nargufy\nargufying\narguing\nargument\nargumentation\nargumentations\nargumentative\narguments\nargus\narguses\nargyle\nargyles\nargyll\nargylls\narhat\narhats\naria\narias\narid\narider\naridest\naridities\naridity\naridly\naridness\naridnesses\nariel\nariels\narietta\nariettas\nariette\nariettes\naright\naril\nariled\narillate\narillode\narillodes\narilloid\narils\nariose\nariosi\narioso\nariosos\narise\narisen\narises\narising\narista\naristae\naristas\naristate\naristocracies\naristocracy\naristocrat\naristocratic\naristocrats\narithmetic\narithmetical\narithmetically\narithmetician\narithmeticians\nark\narks\narles\narm\narmada\narmadas\narmadillo\narmadillos\narmament\narmaments\narmature\narmatured\narmatures\narmaturing\narmband\narmbands\narmchair\narmchairs\narmed\narmer\narmers\narmet\narmets\narmful\narmfuls\narmhole\narmholes\narmies\narmiger\narmigero\narmigeros\narmigers\narmilla\narmillae\narmillas\narming\narmings\narmistice\narmistices\narmless\narmlet\narmlets\narmlike\narmload\narmloads\narmoire\narmoires\narmonica\narmonicas\narmor\narmored\narmorer\narmorers\narmorial\narmorials\narmories\narmoring\narmors\narmory\narmour\narmoured\narmourer\narmourers\narmouries\narmouring\narmours\narmoury\narmpit\narmpits\narmrest\narmrests\narms\narmsful\narmure\narmures\narmy\narmyworm\narmyworms\narnatto\narnattos\narnica\narnicas\narnotto\narnottos\naroid\naroids\naroint\narointed\narointing\naroints\naroma\naromas\naromatic\naromatics\narose\naround\narousal\narousals\narouse\naroused\narouser\narousers\narouses\narousing\naroynt\naroynted\naroynting\naroynts\narpeggio\narpeggios\narpen\narpens\narpent\narpents\narquebus\narquebuses\narrack\narracks\narraign\narraigned\narraigning\narraignment\narraignments\narraigns\narrange\narranged\narrangement\narrangements\narranger\narrangers\narranges\narranging\narrant\narrantly\narras\narrased\narray\narrayal\narrayals\narrayed\narrayer\narrayers\narraying\narrays\narrear\narrears\narrest\narrested\narrestee\narrestees\narrester\narresters\narresting\narrestor\narrestors\narrests\narrhizal\narris\narrises\narrival\narrivals\narrive\narrived\narriver\narrivers\narrives\narriving\narroba\narrobas\narrogance\narrogant\narrogantly\narrogate\narrogated\narrogates\narrogating\narrogation\narrogations\narrow\narrowed\narrowhead\narrowheads\narrowing\narrowroot\narrows\narrowy\narroyo\narroyos\nars\narse\narsenal\narsenals\narsenate\narsenates\narsenic\narsenics\narsenide\narsenides\narsenite\narsenites\narseno\narsenous\narses\narshin\narshins\narsine\narsines\narsino\narsis\narson\narsonist\narsonists\narsonous\narsons\nart\nartal\nartefact\nartefacts\nartel\nartels\narterial\narterials\narteries\narteriosclerosis\narteriosclerotic\nartery\nartful\nartfully\nartfulness\narthritic\narthritides\narthritis\narthropod\nartichoke\nartichokes\narticle\narticled\narticles\narticling\narticular\narticulate\narticulated\narticulately\narticulateness\narticulates\narticulating\narticulation\narticulations\nartier\nartiest\nartifact\nartifacts\nartifice\nartificer\nartificers\nartifices\nartificial\nartificialities\nartificiality\nartificially\nartilleries\nartillery\nartily\nartiness\nartinesses\nartisan\nartisans\nartist\nartiste\nartistes\nartistic\nartistically\nartistries\nartistry\nartists\nartless\nartlessly\nartlessness\narts\nartsy\nartwork\nartworks\narty\narum\narums\naruspex\naruspices\narval\narvo\narvos\naryl\naryls\narythmia\narythmias\narythmic\nas\nasafetida\nasafoetida\nasarum\nasarums\nasbestic\nasbestos\nasbestoses\nasbestus\nasbestuses\nascarid\nascarides\nascarids\nascaris\nascend\nascendable\nascendancies\nascendancy\nascendant\nascendants\nascended\nascender\nascenders\nascendible\nascending\nascends\nascension\nascensions\nascent\nascents\nascertain\nascertained\nascertaining\nascertains\nasceses\nascesis\nascetic\nasceticism\nascetics\nasci\nascidia\nascidian\nascidians\nascidium\nascites\nascitic\nascocarp\nascocarps\nascorbic\nascot\nascots\nascribable\nascribe\nascribed\nascribes\nascribing\nascription\nascriptions\nascus\nasdic\nasdics\nasea\nasepses\nasepsis\naseptic\naseptically\nasexual\nasexuality\nasexually\nash\nashamed\nashamedly\nashcan\nashcans\nashed\nashen\nashes\nashier\nashiest\nashing\nashlar\nashlared\nashlaring\nashlars\nashler\nashlered\nashlering\nashlers\nashless\nashman\nashmen\nashore\nashplant\nashplants\nashram\nashrams\nashtray\nashtrays\nashy\naside\nasides\nasinine\nasininities\nasininity\nask\naskance\naskant\nasked\nasker\naskers\naskeses\naskesis\naskew\nasking\naskings\naskoi\naskos\nasks\naslant\nasleep\naslope\nasocial\nasp\nasparagus\naspect\naspects\naspen\naspens\nasper\nasperate\nasperated\nasperates\nasperating\nasperges\nasperities\nasperity\naspers\nasperse\naspersed\nasperser\naspersers\nasperses\naspersing\naspersion\naspersions\naspersor\naspersors\nasphalt\nasphalted\nasphaltic\nasphalting\nasphalts\naspheric\nasphodel\nasphodels\nasphyxia\nasphyxias\nasphyxiate\nasphyxiated\nasphyxiates\nasphyxiating\nasphyxiation\nasphyxiations\nasphyxiator\nasphyxiators\nasphyxies\nasphyxy\naspic\naspics\naspirant\naspirants\naspirata\naspiratae\naspirate\naspirated\naspirates\naspirating\naspiration\naspirations\naspirator\naspirators\naspire\naspired\naspirer\naspirers\naspires\naspirin\naspiring\naspirins\naspis\naspises\naspish\nasps\nasquint\nasrama\nasramas\nass\nassagai\nassagaied\nassagaiing\nassagais\nassai\nassail\nassailable\nassailant\nassailants\nassailed\nassailer\nassailers\nassailing\nassails\nassais\nassassin\nassassinate\nassassinated\nassassinates\nassassinating\nassassination\nassassinations\nassassinator\nassassinators\nassassins\nassault\nassaulted\nassaulting\nassaults\nassay\nassayed\nassayer\nassayers\nassaying\nassays\nassegai\nassegaied\nassegaiing\nassegais\nassemblage\nassemblages\nassemble\nassembled\nassembler\nassemblers\nassembles\nassemblies\nassembling\nassembly\nassemblyman\nassemblymen\nassemblywoman\nassemblywomen\nassent\nassented\nassenter\nassenters\nassenting\nassentor\nassentors\nassents\nassert\nasserted\nasserter\nasserters\nasserting\nassertion\nassertions\nassertive\nassertively\nassertor\nassertors\nasserts\nasses\nassess\nassessable\nassessed\nassesses\nassessing\nassessment\nassessments\nassessor\nassessors\nasset\nassets\nasseverate\nasseverated\nasseverates\nasseverating\nasseveration\nasseverations\nassiduities\nassiduity\nassiduous\nassiduously\nassiduousness\nassign\nassignable\nassignat\nassignation\nassignations\nassignats\nassigned\nassignee\nassignees\nassigner\nassigners\nassigning\nassignment\nassignments\nassignor\nassignors\nassigns\nassimilable\nassimilate\nassimilated\nassimilates\nassimilating\nassimilation\nassimilations\nassimilative\nassimilator\nassimilators\nassist\nassistance\nassistant\nassistants\nassistantship\nassistantships\nassisted\nassister\nassisters\nassisting\nassistor\nassistors\nassists\nassize\nassizes\nasslike\nassociate\nassociated\nassociates\nassociating\nassociation\nassociations\nassociative\nassociatively\nassociativities\nassociativity\nassoil\nassoiled\nassoiling\nassoils\nassonance\nassonances\nassonant\nassonants\nassort\nassorted\nassorter\nassorters\nassorting\nassortment\nassortments\nassorts\nassuage\nassuaged\nassuagement\nassuagements\nassuages\nassuaging\nassumable\nassume\nassumed\nassumer\nassumers\nassumes\nassuming\nassumption\nassumptions\nassurance\nassurances\nassure\nassured\nassuredly\nassureds\nassurer\nassurers\nassures\nassuring\nassuror\nassurors\nasswage\nasswaged\nasswages\nasswaging\nastasia\nastasias\nastatic\nastatine\nastatines\naster\nasteria\nasterias\nasterisk\nasterisked\nasterisking\nasterisks\nasterism\nasterisms\nastern\nasternal\nasteroid\nasteroids\nasters\nasthenia\nasthenias\nasthenic\nasthenics\nasthenies\nastheny\nasthma\nasthmas\nasthmatic\nasthmatics\nastigmatic\nastigmatically\nastigmatism\nastigmatisms\nastir\nastomous\nastonied\nastonies\nastonish\nastonished\nastonishes\nastonishing\nastonishingly\nastonishment\nastonishments\nastony\nastonying\nastound\nastounded\nastounding\nastoundingly\nastounds\nastrachan\nastrachans\nastraddle\nastragal\nastragals\nastrakhan\nastrakhans\nastral\nastrally\nastrals\nastray\nastrict\nastricted\nastricting\nastricts\nastride\nastringe\nastringed\nastringencies\nastringency\nastringent\nastringents\nastringes\nastringing\nastrodome\nastrodomes\nastrolabe\nastrolabes\nastrologer\nastrologers\nastrological\nastrology\nastronaut\nastronautic\nastronautical\nastronautically\nastronautics\nastronauts\nastronomer\nastronomers\nastronomic\nastronomical\nastronomically\nastronomy\nastrophysical\nastrophysicist\nastrophysicists\nastrophysics\nastute\nastutely\nastuteness\nastylar\nasunder\naswarm\naswirl\naswoon\nasyla\nasylum\nasylums\nasymmetric\nasymmetrical\nasymmetries\nasymmetry\nasymptote\nasymptotes\nasymptotic\nasymptotically\nasynchronous\nasynchronously\nasyndeta\nat\natabal\natabals\nataghan\nataghans\natalaya\natalayas\nataman\natamans\natamasco\natamascos\natap\nataps\nataraxia\nataraxias\nataraxic\nataraxics\nataraxies\nataraxy\natavic\natavism\natavisms\natavist\natavistic\natavistically\natavists\nataxia\nataxias\nataxic\nataxics\nataxies\nataxy\nate\natechnic\natelic\natelier\nateliers\nates\nathanasies\nathanasy\natheism\natheisms\natheist\natheistic\natheistical\natheistically\natheists\natheling\nathelings\nathenaeum\nathenaeums\natheneum\natheneums\natheroma\natheromas\natheromata\natherosclerosis\natherosclerotic\nathirst\nathlete\nathletes\nathletic\nathletically\nathletics\nathodyd\nathodyds\nathwart\natilt\natingle\natlantes\natlas\natlases\natlatl\natlatls\natma\natman\natmans\natmas\natmosphere\natmospheres\natmospheric\natmospherically\natmospherics\natoll\natolls\natom\natomic\natomical\natomically\natomics\natomies\natomise\natomised\natomises\natomising\natomism\natomisms\natomist\natomists\natomize\natomized\natomizer\natomizers\natomizes\natomizing\natoms\natomy\natonable\natonal\natonality\natonally\natone\natoned\natonement\natonements\natoner\natoners\natones\natonic\natonics\natonies\natoning\natony\natop\natopic\natopies\natopy\natrazine\natrazines\natremble\natresia\natresias\natria\natrial\natrip\natrium\natriums\natrocious\natrociously\natrocities\natrocity\natrophia\natrophias\natrophic\natrophied\natrophies\natrophy\natrophying\natropin\natropine\natropines\natropins\natropism\natropisms\nattach\nattachable\nattache\nattached\nattacher\nattachers\nattaches\nattaching\nattachment\nattachments\nattack\nattacked\nattacker\nattackers\nattacking\nattacks\nattain\nattainability\nattainable\nattainder\nattainders\nattained\nattainer\nattainers\nattaining\nattainment\nattainments\nattains\nattaint\nattainted\nattainting\nattaints\nattar\nattars\nattemper\nattempered\nattempering\nattempers\nattempt\nattempted\nattempting\nattempts\nattend\nattendance\nattendances\nattendant\nattendants\nattended\nattendee\nattendees\nattender\nattenders\nattending\nattends\nattent\nattention\nattentions\nattentive\nattentively\nattentiveness\nattenuate\nattenuated\nattenuates\nattenuating\nattenuation\nattenuations\nattest\nattestation\nattestations\nattested\nattester\nattesters\nattesting\nattestor\nattestors\nattests\nattic\natticism\natticisms\natticist\natticists\nattics\nattire\nattired\nattires\nattiring\nattitude\nattitudes\nattitudinize\nattitudinized\nattitudinizes\nattitudinizing\nattorn\nattorned\nattorney\nattorneys\nattorning\nattorns\nattract\nattracted\nattracting\nattraction\nattractions\nattractive\nattractively\nattractiveness\nattracts\nattributable\nattribute\nattributed\nattributes\nattributing\nattribution\nattributions\nattributive\nattrite\nattrited\nattrition\nattritions\nattune\nattuned\nattunes\nattuning\natwain\natween\natwitter\natypic\natypical\natypically\naubade\naubades\nauberge\nauberges\nauburn\nauburns\nauction\nauctioned\nauctioneer\nauctioneers\nauctioning\nauctions\naudacious\naudaciously\naudaciousness\naudacities\naudacity\naudad\naudads\naudibility\naudible\naudibles\naudibly\naudience\naudiences\naudient\naudients\naudile\naudiles\nauding\naudings\naudio\naudiologist\naudiologists\naudiology\naudiometer\naudiometers\naudiophile\naudiophiles\naudios\naudiovisual\naudiovisuals\naudit\naudited\nauditing\naudition\nauditioned\nauditioning\nauditions\nauditive\nauditives\nauditor\nauditories\nauditorium\nauditoriums\nauditors\nauditory\naudits\naugend\naugends\nauger\naugers\naught\naughts\naugite\naugites\naugitic\naugment\naugmentation\naugmentations\naugmentative\naugmented\naugmenting\naugments\naugur\naugural\naugured\naugurer\naugurers\nauguries\nauguring\naugurs\naugury\naugust\nauguster\naugustest\naugustly\nauk\nauklet\nauklets\nauks\nauld\naulder\nauldest\naulic\naunt\naunthood\naunthoods\nauntie\naunties\nauntlier\nauntliest\nauntlike\nauntly\naunts\naunty\naura\naurae\naural\naurally\naurar\nauras\naurate\naurated\naureate\naurei\naureola\naureolae\naureolas\naureole\naureoled\naureoles\naureoling\naures\naureus\nauric\nauricle\nauricled\nauricles\nauricula\nauriculae\nauricular\nauriculas\nauriferous\nauriform\nauris\naurist\naurists\naurochs\naurochses\naurora\naurorae\nauroral\nauroras\naurorean\naurous\naurum\naurums\nauscultation\nauscultations\nauspex\nauspice\nauspices\nauspicious\nauspiciously\nauspiciousness\naustere\nausterely\nausterer\nausterest\nausterities\nausterity\naustral\nautacoid\nautacoids\nautarchic\nautarchies\nautarchy\nautarkic\nautarkies\nautarky\nautecism\nautecisms\nauthentic\nauthentically\nauthenticate\nauthenticated\nauthenticates\nauthenticating\nauthentication\nauthentications\nauthenticator\nauthenticators\nauthenticity\nauthor\nauthored\nauthoress\nauthoresses\nauthorial\nauthoring\nauthoritarian\nauthoritative\nauthoritatively\nauthoritativeness\nauthorities\nauthority\nauthorization\nauthorizations\nauthorize\nauthorized\nauthorizer\nauthorizers\nauthorizes\nauthorizing\nauthors\nauthorship\nautism\nautisms\nautistic\nauto\nautobahn\nautobahnen\nautobahns\nautobiographer\nautobiographers\nautobiographic\nautobiographical\nautobiographically\nautobiographies\nautobiography\nautobus\nautobuses\nautobusses\nautocade\nautocades\nautocoid\nautocoids\nautocracies\nautocracy\nautocrat\nautocratic\nautocratical\nautocratically\nautocrats\nautodyne\nautodynes\nautoed\nautogamies\nautogamy\nautogenies\nautogeny\nautogiro\nautogiros\nautograph\nautographic\nautographically\nautographs\nautography\nautogyro\nautogyros\nautoing\nautoloading\nautolyze\nautolyzed\nautolyzes\nautolyzing\nautomata\nautomate\nautomated\nautomates\nautomatic\nautomatically\nautomaticity\nautomatics\nautomating\nautomation\nautomations\nautomatism\nautomatist\nautomatists\nautomatization\nautomatizations\nautomatize\nautomatized\nautomatizes\nautomatizing\nautomaton\nautomatons\nautomobile\nautomobiled\nautomobiles\nautomobiling\nautomobilist\nautomobilists\nautomotive\nautonomic\nautonomically\nautonomies\nautonomist\nautonomists\nautonomous\nautonomously\nautonomy\nautopsic\nautopsied\nautopsies\nautopsy\nautopsying\nautos\nautosome\nautosomes\nautosuggestion\nautosuggestions\nautotomies\nautotomy\nautotype\nautotypes\nautotypies\nautotypy\nautumn\nautumnal\nautumns\nautunite\nautunites\nauxeses\nauxesis\nauxetic\nauxetics\nauxiliaries\nauxiliary\nauxin\nauxinic\nauxins\nava\navail\navailability\navailable\navailableness\navailably\navailed\navailing\navails\navalanche\navalanched\navalanches\navalanching\navarice\navarices\navaricious\navariciously\navariciousness\navast\navatar\navatars\navaunt\nave\navellan\navellane\navenge\navenged\navenger\navengers\navenges\navenging\navens\navenses\naventail\naventails\navenue\navenues\naver\naverage\naveraged\naveragely\naverageness\naverages\naveraging\naverment\naverments\naverred\naverring\navers\naverse\naversely\naversion\naversions\naversive\navert\naverted\naverting\naverts\naves\navgas\navgases\navgasses\navian\navianize\navianized\navianizes\navianizing\navians\naviaries\naviarist\naviarists\naviary\naviate\naviated\naviates\naviating\naviation\naviations\naviator\naviators\naviatrices\naviatrix\naviatrixes\navicular\navid\navidin\navidins\navidities\navidity\navidly\navidness\navidnesses\navifauna\navifaunae\navifaunas\navigator\navigators\navion\navionic\navionics\navions\naviso\navisos\navo\navocado\navocadoes\navocados\navocation\navocations\navocet\navocets\navodire\navodires\navoid\navoidable\navoidably\navoidance\navoidances\navoided\navoider\navoiders\navoiding\navoids\navoirdupois\navos\navoset\navosets\navouch\navouched\navoucher\navouchers\navouches\navouching\navouchment\navouchments\navow\navowable\navowably\navowal\navowals\navowed\navowedly\navower\navowers\navowing\navows\navulse\navulsed\navulses\navulsing\navulsion\navulsions\navuncular\naw\nawa\nawait\nawaited\nawaiter\nawaiters\nawaiting\nawaits\nawake\nawaked\nawaken\nawakened\nawakener\nawakeners\nawakening\nawakenings\nawakens\nawakes\nawaking\naward\nawardable\nawarded\nawardee\nawardees\nawarder\nawarders\nawarding\nawards\naware\nawareness\nawash\naway\nawayness\nawaynesses\nawe\naweary\naweather\nawed\nawee\naweigh\naweing\naweless\nawes\nawesome\nawesomely\nawesomeness\nawestricken\nawestruck\nawful\nawfuller\nawfullest\nawfully\nawfulness\nawhile\nawhirl\nawing\nawkward\nawkwarder\nawkwardest\nawkwardly\nawkwardness\nawl\nawless\nawls\nawlwort\nawlworts\nawmous\nawn\nawned\nawning\nawninged\nawnings\nawnless\nawns\nawny\nawoke\nawoken\nawol\nawols\nawry\nax\naxal\naxe\naxed\naxel\naxels\naxeman\naxemen\naxenic\naxes\naxial\naxialities\naxiality\naxially\naxil\naxile\naxilla\naxillae\naxillar\naxillaries\naxillars\naxillary\naxillas\naxils\naxing\naxiologies\naxiology\naxiom\naxiomatic\naxiomatically\naxioms\naxis\naxised\naxises\naxite\naxites\naxle\naxled\naxles\naxletree\naxletrees\naxlike\naxman\naxmen\naxolotl\naxolotls\naxon\naxonal\naxone\naxones\naxonic\naxons\naxoplasm\naxoplasms\naxseed\naxseeds\nay\nayah\nayahs\nayatollah\nayatollahs\naye\nayes\nayin\nayins\nays\nazalea\nazaleas\nazan\nazans\nazide\nazides\nazido\nazimuth\nazimuthal\nazimuthally\nazimuths\nazine\nazines\nazlon\nazo\nazoic\nazole\nazoles\nazon\nazonal\nazonic\nazons\nazote\nazoted\nazotemia\nazotemias\nazotemic\nazotes\nazoth\nazoths\nazotic\nazotise\nazotised\nazotises\nazotising\nazotize\nazotized\nazotizes\nazotizing\nazoturia\nazoturias\nazure\nazures\nazurite\nazurites\nazygos\nazygoses\nazygous\nba\nbaa\nbaaed\nbaaing\nbaal\nbaalim\nbaalism\nbaalisms\nbaals\nbaas\nbaba\nbabas\nbabassu\nbabassus\nbabbitt\nbabbitted\nbabbitting\nbabbitts\nbabble\nbabbled\nbabbler\nbabblers\nbabbles\nbabbling\nbabblings\nbabe\nbabel\nbabels\nbabes\nbabesia\nbabesias\nbabiche\nbabiches\nbabied\nbabies\nbabirusa\nbabirusas\nbabka\nbabkas\nbaboo\nbabool\nbabools\nbaboon\nbaboons\nbaboos\nbabu\nbabul\nbabuls\nbabus\nbabushka\nbabushkas\nbaby\nbabyhood\nbabyhoods\nbabying\nbabyish\nbacca\nbaccae\nbaccalaureate\nbaccalaureates\nbaccara\nbaccaras\nbaccarat\nbaccarats\nbaccate\nbaccated\nbacchanal\nbacchanalia\nbacchanalian\nbacchanalians\nbacchanals\nbacchant\nbacchante\nbacchantes\nbacchantic\nbacchants\nbacchic\nbacchii\nbacchius\nbach\nbached\nbachelor\nbachelorhood\nbachelors\nbaches\nbaching\nbacillar\nbacillary\nbacilli\nbacillus\nback\nbackache\nbackaches\nbackbend\nbackbends\nbackbit\nbackbite\nbackbiter\nbackbiters\nbackbites\nbackbiting\nbackbitten\nbackbone\nbackbones\nbackbreaker\nbackbreakers\nbackbreaking\nbackdoor\nbackdrop\nbackdrops\nbacked\nbacker\nbackers\nbackfill\nbackfilled\nbackfilling\nbackfills\nbackfire\nbackfired\nbackfires\nbackfiring\nbackgammon\nbackground\nbackgrounds\nbackhand\nbackhanded\nbackhanding\nbackhands\nbackhoe\nbackhoes\nbacking\nbackings\nbacklash\nbacklashed\nbacklashes\nbacklashing\nbackless\nbacklist\nbacklists\nbacklit\nbacklog\nbacklogged\nbacklogging\nbacklogs\nbackmost\nbackout\nbackouts\nbackpack\nbackpacked\nbackpacker\nbackpackers\nbackpacking\nbackpacks\nbackrest\nbackrests\nbacks\nbacksaw\nbacksaws\nbackseat\nbackseats\nbackset\nbacksets\nbackside\nbacksides\nbackslap\nbackslapped\nbackslapper\nbackslappers\nbackslapping\nbackslaps\nbackslid\nbackslidden\nbackslide\nbackslider\nbacksliders\nbackslides\nbacksliding\nbackspace\nbackspaced\nbackspacer\nbackspacers\nbackspaces\nbackspacing\nbackspin\nbackspins\nbackstage\nbackstay\nbackstays\nbackstop\nbackstopped\nbackstopping\nbackstops\nbackstretch\nbackstretches\nbackstroke\nbackstroked\nbackstrokes\nbacktrack\nbacktracked\nbacktracking\nbacktracks\nbackup\nbackups\nbackward\nbackwardly\nbackwardness\nbackwards\nbackwash\nbackwashed\nbackwashes\nbackwashing\nbackwater\nbackwaters\nbackwood\nbackwoods\nbackyard\nbackyards\nbacon\nbacons\nbacteria\nbacterial\nbactericidal\nbactericide\nbactericides\nbacterin\nbacterins\nbacteriologic\nbacteriological\nbacteriologically\nbacteriologist\nbacteriologists\nbacteriology\nbacterium\nbaculine\nbad\nbaddie\nbaddies\nbaddy\nbade\nbadge\nbadged\nbadger\nbadgered\nbadgering\nbadgerly\nbadgers\nbadges\nbadging\nbadinage\nbadinaged\nbadinages\nbadinaging\nbadland\nbadlands\nbadly\nbadman\nbadmen\nbadminton\nbadmouth\nbadmouthed\nbadmouthing\nbadmouths\nbadness\nbadnesses\nbads\nbaff\nbaffed\nbaffies\nbaffing\nbaffle\nbaffled\nbafflement\nbafflements\nbaffler\nbafflers\nbaffles\nbaffling\nbaffs\nbaffy\nbag\nbagass\nbagasse\nbagasses\nbagatelle\nbagatelles\nbagel\nbagels\nbagful\nbagfuls\nbaggage\nbaggages\nbagged\nbaggie\nbaggier\nbaggies\nbaggiest\nbaggily\nbagging\nbaggings\nbaggy\nbagman\nbagmen\nbagnio\nbagnios\nbagpipe\nbagpiper\nbagpipers\nbagpipes\nbags\nbagsful\nbaguet\nbaguets\nbaguette\nbaguettes\nbagwig\nbagwigs\nbagworm\nbagworms\nbah\nbahadur\nbahadurs\nbaht\nbahts\nbaidarka\nbaidarkas\nbail\nbailable\nbailed\nbailee\nbailees\nbailer\nbailers\nbailey\nbaileys\nbailie\nbailies\nbailiff\nbailiffs\nbailing\nbailiwick\nbailiwicks\nbailment\nbailments\nbailor\nbailors\nbailout\nbailouts\nbails\nbailsman\nbailsmen\nbairn\nbairnish\nbairnlier\nbairnliest\nbairnly\nbairns\nbait\nbaited\nbaiter\nbaiters\nbaith\nbaiting\nbaits\nbaiza\nbaizas\nbaize\nbaizes\nbake\nbaked\nbakemeat\nbakemeats\nbaker\nbakeries\nbakers\nbakery\nbakes\nbakeshop\nbakeshops\nbaking\nbakings\nbaklava\nbaklavas\nbaklawa\nbaklawas\nbakshish\nbakshished\nbakshishes\nbakshishing\nbal\nbalance\nbalanced\nbalancer\nbalancers\nbalances\nbalancing\nbalas\nbalases\nbalata\nbalatas\nbalboa\nbalboas\nbalconies\nbalcony\nbald\nbalded\nbalder\nbalderdash\nbaldest\nbaldhead\nbaldheads\nbalding\nbaldish\nbaldly\nbaldness\nbaldnesses\nbaldpate\nbaldpates\nbaldric\nbaldrick\nbaldricks\nbaldrics\nbalds\nbaldy\nbale\nbaled\nbaleen\nbaleens\nbalefire\nbalefires\nbaleful\nbalefully\nbalefulness\nbaler\nbalers\nbales\nbaling\nbalisaur\nbalisaurs\nbalk\nbalked\nbalker\nbalkers\nbalkier\nbalkiest\nbalkily\nbalkiness\nbalking\nbalkline\nbalklines\nbalks\nbalky\nball\nballad\nballade\nballadeer\nballadeers\nballades\nballadic\nballadries\nballadry\nballads\nballast\nballasted\nballasting\nballasts\nballed\nballer\nballerina\nballerinas\nballers\nballet\nballetic\nballets\nballing\nballista\nballistae\nballistic\nballistics\nballon\nballonet\nballonets\nballonne\nballonnes\nballons\nballoon\nballooned\nballooning\nballoonist\nballoonists\nballoons\nballot\nballoted\nballoter\nballoters\nballoting\nballots\nballroom\nballrooms\nballs\nbally\nballyhoo\nballyhooed\nballyhooing\nballyhoos\nballyrag\nballyragged\nballyragging\nballyrags\nbalm\nbalmier\nbalmiest\nbalmily\nbalminess\nbalmlike\nbalmoral\nbalmorals\nbalms\nbalmy\nbalneal\nbaloney\nbaloneys\nbals\nbalsa\nbalsam\nbalsamed\nbalsamic\nbalsaming\nbalsams\nbalsas\nbaluster\nbalusters\nbalustrade\nbalustrades\nbam\nbambini\nbambino\nbambinos\nbamboo\nbamboos\nbamboozle\nbamboozled\nbamboozlement\nbamboozlements\nbamboozles\nbamboozling\nbams\nban\nbanal\nbanalities\nbanality\nbanally\nbanana\nbananas\nbanausic\nbanco\nbancos\nband\nbandage\nbandaged\nbandager\nbandagers\nbandages\nbandaging\nbandana\nbandanas\nbandanna\nbandannas\nbandbox\nbandboxes\nbandeau\nbandeaus\nbandeaux\nbanded\nbander\nbanderol\nbanderole\nbanderoles\nbanderols\nbanders\nbandied\nbandies\nbanding\nbandit\nbanditries\nbanditry\nbandits\nbanditti\nbandmaster\nbandmasters\nbandog\nbandogs\nbandoleer\nbandoleers\nbandolier\nbandoliers\nbandora\nbandoras\nbandore\nbandores\nbands\nbandsman\nbandsmen\nbandstand\nbandstands\nbandwagon\nbandwagons\nbandwidth\nbandwidths\nbandy\nbandying\nbane\nbaned\nbaneful\nbanefully\nbanes\nbang\nbanged\nbanger\nbangers\nbanging\nbangkok\nbangkoks\nbangle\nbangles\nbangs\nbangtail\nbangtails\nbani\nbanian\nbanians\nbaning\nbanish\nbanished\nbanisher\nbanishers\nbanishes\nbanishing\nbanishment\nbanishments\nbanister\nbanisters\nbanjo\nbanjoes\nbanjoist\nbanjoists\nbanjos\nbank\nbankable\nbankbook\nbankbooks\nbanked\nbanker\nbankers\nbanking\nbankings\nbanknote\nbanknotes\nbankroll\nbankrolled\nbankrolling\nbankrolls\nbankrupt\nbankruptcies\nbankruptcy\nbankrupted\nbankrupting\nbankrupts\nbanks\nbanksia\nbanksias\nbankside\nbanksides\nbanned\nbanner\nbanneret\nbannerets\nbannerol\nbannerols\nbanners\nbannet\nbannets\nbanning\nbannister\nbannisters\nbannock\nbannocks\nbanns\nbanquet\nbanqueted\nbanqueter\nbanqueters\nbanqueting\nbanquets\nbanquette\nbanquettes\nbans\nbanshee\nbanshees\nbanshie\nbanshies\nbantam\nbantams\nbantamweight\nbantamweights\nbanter\nbantered\nbanterer\nbanterers\nbantering\nbanteringly\nbanters\nbantling\nbantlings\nbanty\nbanyan\nbanyans\nbanzai\nbanzais\nbaobab\nbaobabs\nbaptise\nbaptised\nbaptises\nbaptisia\nbaptisias\nbaptising\nbaptism\nbaptismal\nbaptismally\nbaptisms\nbaptist\nbaptisteries\nbaptistery\nbaptistries\nbaptistry\nbaptists\nbaptize\nbaptized\nbaptizer\nbaptizers\nbaptizes\nbaptizing\nbar\nbarathea\nbaratheas\nbarb\nbarbal\nbarbarian\nbarbarianism\nbarbarians\nbarbaric\nbarbarism\nbarbarisms\nbarbarities\nbarbarity\nbarbarize\nbarbarized\nbarbarizes\nbarbarizing\nbarbarous\nbarbarously\nbarbarousness\nbarbasco\nbarbascos\nbarbate\nbarbe\nbarbecue\nbarbecued\nbarbecues\nbarbecuing\nbarbed\nbarbel\nbarbell\nbarbells\nbarbels\nbarber\nbarbered\nbarbering\nbarberries\nbarberry\nbarbers\nbarbershop\nbarbershops\nbarbes\nbarbet\nbarbets\nbarbette\nbarbettes\nbarbican\nbarbicans\nbarbicel\nbarbicels\nbarbing\nbarbital\nbarbitals\nbarbiturate\nbarbiturates\nbarbless\nbarbs\nbarbule\nbarbules\nbarbut\nbarbuts\nbarbwire\nbarbwires\nbarcarole\nbarcaroles\nbarcarolle\nbarcarolles\nbard\nbarde\nbarded\nbardes\nbardic\nbarding\nbards\nbare\nbareback\nbarebacked\nbared\nbarefaced\nbarefit\nbarefoot\nbarefooted\nbarege\nbareges\nbarehead\nbareheaded\nbarely\nbareness\nbarenesses\nbarer\nbares\nbaresark\nbaresarks\nbarest\nbarf\nbarfed\nbarfing\nbarflies\nbarfly\nbarfs\nbargain\nbargained\nbargainer\nbargainers\nbargaining\nbargains\nbarge\nbarged\nbargee\nbargees\nbargeman\nbargemen\nbarges\nbarghest\nbarghests\nbarging\nbarguest\nbarguests\nbarhop\nbarhopped\nbarhopping\nbarhops\nbaric\nbarilla\nbarillas\nbaring\nbarite\nbarites\nbaritone\nbaritones\nbarium\nbariums\nbark\nbarked\nbarkeep\nbarkeeper\nbarkeepers\nbarkeeps\nbarker\nbarkers\nbarkier\nbarkiest\nbarking\nbarkless\nbarks\nbarky\nbarleduc\nbarleducs\nbarless\nbarley\nbarleys\nbarlow\nbarlows\nbarm\nbarmaid\nbarmaids\nbarman\nbarmen\nbarmie\nbarmier\nbarmiest\nbarms\nbarmy\nbarn\nbarnacle\nbarnacled\nbarnacles\nbarnier\nbarniest\nbarns\nbarnstorm\nbarnstormed\nbarnstormer\nbarnstormers\nbarnstorming\nbarnstorms\nbarny\nbarnyard\nbarnyards\nbarogram\nbarograms\nbarometer\nbarometers\nbarometric\nbarometry\nbaron\nbaronage\nbaronages\nbaroness\nbaronesses\nbaronet\nbaronets\nbarong\nbarongs\nbaronial\nbaronies\nbaronne\nbaronnes\nbarons\nbarony\nbaroque\nbaroques\nbarouche\nbarouches\nbarque\nbarques\nbarrable\nbarrack\nbarracked\nbarracking\nbarracks\nbarracuda\nbarracudas\nbarrage\nbarraged\nbarrages\nbarraging\nbarranca\nbarrancas\nbarranco\nbarrancos\nbarrater\nbarraters\nbarrator\nbarrators\nbarratries\nbarratry\nbarre\nbarred\nbarrel\nbarreled\nbarrelful\nbarrelfuls\nbarreling\nbarrelled\nbarrelling\nbarrels\nbarrelsful\nbarren\nbarrener\nbarrenest\nbarrenly\nbarrenness\nbarrens\nbarres\nbarret\nbarretor\nbarretors\nbarretries\nbarretry\nbarrets\nbarrette\nbarrettes\nbarricade\nbarricaded\nbarricades\nbarricading\nbarrier\nbarriers\nbarring\nbarrio\nbarrios\nbarrister\nbarristers\nbarroom\nbarrooms\nbarrow\nbarrows\nbars\nbarstool\nbarstools\nbartend\nbartended\nbartender\nbartenders\nbartending\nbartends\nbarter\nbartered\nbarterer\nbarterers\nbartering\nbarters\nbartisan\nbartisans\nbartizan\nbartizans\nbarware\nbarwares\nbarye\nbaryes\nbaryon\nbaryonic\nbaryons\nbaryta\nbarytas\nbaryte\nbarytes\nbarytic\nbarytone\nbarytones\nbas\nbasal\nbasally\nbasalt\nbasaltes\nbasaltic\nbasalts\nbascule\nbascules\nbase\nbaseball\nbaseballs\nbaseboard\nbaseborn\nbased\nbaseless\nbaseline\nbaselines\nbasely\nbaseman\nbasemen\nbasement\nbasements\nbaseness\nbasenesses\nbasenji\nbasenjis\nbaser\nbases\nbasest\nbash\nbashaw\nbashaws\nbashed\nbasher\nbashers\nbashes\nbashful\nbashfully\nbashfulness\nbashing\nbashlyk\nbashlyks\nbasic\nbasically\nbasicities\nbasicity\nbasics\nbasidia\nbasidial\nbasidium\nbasified\nbasifier\nbasifiers\nbasifies\nbasify\nbasifying\nbasil\nbasilar\nbasilary\nbasilic\nbasilica\nbasilicae\nbasilicas\nbasilisk\nbasilisks\nbasils\nbasin\nbasinal\nbasined\nbasinet\nbasinets\nbasing\nbasins\nbasion\nbasions\nbasis\nbask\nbasked\nbasket\nbasketball\nbasketballs\nbasketful\nbasketfuls\nbasketries\nbasketry\nbaskets\nbasketwork\nbasking\nbasks\nbasophil\nbasophils\nbasque\nbasques\nbass\nbasses\nbasset\nbasseted\nbasseting\nbassets\nbassetted\nbassetting\nbassi\nbassinet\nbassinets\nbassist\nbassists\nbassly\nbassness\nbassnesses\nbasso\nbassoon\nbassoonist\nbassoonists\nbassoons\nbassos\nbasswood\nbasswoods\nbassy\nbast\nbastard\nbastardies\nbastardize\nbastardized\nbastardizes\nbastardizing\nbastardly\nbastards\nbastardy\nbaste\nbasted\nbaster\nbasters\nbastes\nbastile\nbastiles\nbastille\nbastilles\nbasting\nbastings\nbastion\nbastions\nbasts\nbat\nbatboy\nbatboys\nbatch\nbatched\nbatcher\nbatchers\nbatches\nbatching\nbate\nbateau\nbateaux\nbated\nbates\nbatfish\nbatfishes\nbatfowl\nbatfowled\nbatfowling\nbatfowls\nbath\nbathe\nbathed\nbather\nbathers\nbathes\nbathetic\nbathhouse\nbathhouses\nbathing\nbathless\nbathos\nbathoses\nbathrobe\nbathrobes\nbathroom\nbathrooms\nbaths\nbathtub\nbathtubs\nbathyal\nbathyscaph\nbathyscaphe\nbathyscaphes\nbathysphere\nbathyspheres\nbatik\nbatiks\nbating\nbatiste\nbatistes\nbatlike\nbatman\nbatmen\nbaton\nbatons\nbats\nbatsman\nbatsmen\nbatt\nbattalia\nbattalias\nbattalion\nbattalions\nbatteau\nbatteaux\nbatted\nbatten\nbattened\nbattener\nbatteners\nbattening\nbattens\nbatter\nbattered\nbatterie\nbatteries\nbattering\nbatters\nbattery\nbattier\nbattiest\nbattik\nbattiks\nbatting\nbattings\nbattle\nbattled\nbattlefield\nbattlefields\nbattlefront\nbattlefronts\nbattleground\nbattlegrounds\nbattlement\nbattlements\nbattler\nbattlers\nbattles\nbattleship\nbattleships\nbattling\nbatts\nbattu\nbattue\nbattues\nbatty\nbatwing\nbaubee\nbaubees\nbauble\nbaubles\nbaud\nbaudekin\nbaudekins\nbaudrons\nbaudronses\nbauds\nbaulk\nbaulked\nbaulkier\nbaulkiest\nbaulking\nbaulks\nbaulky\nbausond\nbauxite\nbauxites\nbauxitic\nbawbee\nbawbees\nbawcock\nbawcocks\nbawd\nbawdier\nbawdies\nbawdiest\nbawdily\nbawdiness\nbawdric\nbawdrics\nbawdries\nbawdry\nbawds\nbawdy\nbawl\nbawled\nbawler\nbawlers\nbawling\nbawls\nbawsunt\nbawtie\nbawties\nbawty\nbay\nbayadeer\nbayadeers\nbayadere\nbayaderes\nbayamo\nbayamos\nbayard\nbayards\nbayberries\nbayberry\nbayed\nbaying\nbayonet\nbayoneted\nbayoneting\nbayonets\nbayonetted\nbayonetting\nbayou\nbayous\nbays\nbaywood\nbaywoods\nbazaar\nbazaars\nbazar\nbazars\nbazoo\nbazooka\nbazookas\nbdellium\nbdelliums\nbe\nbeach\nbeachboy\nbeachboys\nbeachcomber\nbeachcombers\nbeachcombing\nbeached\nbeaches\nbeachhead\nbeachheads\nbeachier\nbeachiest\nbeaching\nbeachy\nbeacon\nbeaconed\nbeaconing\nbeacons\nbead\nbeaded\nbeadier\nbeadiest\nbeadily\nbeading\nbeadings\nbeadle\nbeadles\nbeadlike\nbeadman\nbeadmen\nbeadroll\nbeadrolls\nbeads\nbeadsman\nbeadsmen\nbeadwork\nbeadworks\nbeady\nbeagle\nbeagles\nbeak\nbeaked\nbeaker\nbeakers\nbeakier\nbeakiest\nbeakless\nbeaklike\nbeaks\nbeaky\nbeam\nbeamed\nbeamier\nbeamiest\nbeamily\nbeaming\nbeamish\nbeamless\nbeamlike\nbeams\nbeamy\nbean\nbeanbag\nbeanbags\nbeanball\nbeanballs\nbeaned\nbeaneries\nbeanery\nbeanie\nbeanies\nbeaning\nbeanlike\nbeano\nbeanos\nbeanpole\nbeanpoles\nbeans\nbear\nbearable\nbearably\nbearcat\nbearcats\nbeard\nbearded\nbearding\nbeardless\nbeards\nbearer\nbearers\nbearing\nbearings\nbearish\nbearishly\nbearishness\nbearlike\nbears\nbearskin\nbearskins\nbeast\nbeastie\nbeasties\nbeastlier\nbeastliest\nbeastliness\nbeastly\nbeasts\nbeat\nbeatable\nbeaten\nbeater\nbeaters\nbeatific\nbeatifically\nbeatification\nbeatifications\nbeatified\nbeatifies\nbeatify\nbeatifying\nbeating\nbeatings\nbeatitude\nbeatitudes\nbeatless\nbeatnik\nbeatniks\nbeats\nbeau\nbeauish\nbeaus\nbeaut\nbeauteous\nbeauteously\nbeauteousness\nbeautician\nbeauticians\nbeauties\nbeautification\nbeautifications\nbeautified\nbeautifier\nbeautifiers\nbeautifies\nbeautiful\nbeautifully\nbeautifulness\nbeautify\nbeautifying\nbeauts\nbeauty\nbeaux\nbeaver\nbeaverboard\nbeavered\nbeavering\nbeavers\nbebeeru\nbebeerus\nbeblood\nbeblooded\nbeblooding\nbebloods\nbebop\nbebopper\nbeboppers\nbebops\nbecalm\nbecalmed\nbecalming\nbecalms\nbecame\nbecap\nbecapped\nbecapping\nbecaps\nbecarpet\nbecarpeted\nbecarpeting\nbecarpets\nbecause\nbechalk\nbechalked\nbechalking\nbechalks\nbechamel\nbechamels\nbechance\nbechanced\nbechances\nbechancing\nbecharm\nbecharmed\nbecharming\nbecharms\nbeck\nbecked\nbecket\nbeckets\nbecking\nbeckon\nbeckoned\nbeckoner\nbeckoners\nbeckoning\nbeckons\nbecks\nbeclamor\nbeclamored\nbeclamoring\nbeclamors\nbeclasp\nbeclasped\nbeclasping\nbeclasps\nbecloak\nbecloaked\nbecloaking\nbecloaks\nbeclog\nbeclogged\nbeclogging\nbeclogs\nbeclothe\nbeclothed\nbeclothes\nbeclothing\nbecloud\nbeclouded\nbeclouding\nbeclouds\nbeclown\nbeclowned\nbeclowning\nbeclowns\nbecome\nbecomes\nbecoming\nbecomingly\nbecomings\nbecoward\nbecowarded\nbecowarding\nbecowards\nbecrawl\nbecrawled\nbecrawling\nbecrawls\nbecrime\nbecrimed\nbecrimes\nbecriming\nbecrowd\nbecrowded\nbecrowding\nbecrowds\nbecrust\nbecrusted\nbecrusting\nbecrusts\nbecudgel\nbecudgeled\nbecudgeling\nbecudgelled\nbecudgelling\nbecudgels\nbecurse\nbecursed\nbecurses\nbecursing\nbecurst\nbed\nbedabble\nbedabbled\nbedabbles\nbedabbling\nbedamn\nbedamned\nbedamning\nbedamns\nbedarken\nbedarkened\nbedarkening\nbedarkens\nbedaub\nbedaubed\nbedaubing\nbedaubs\nbedazzle\nbedazzled\nbedazzlement\nbedazzlements\nbedazzles\nbedazzling\nbedbug\nbedbugs\nbedchair\nbedchairs\nbedclothes\nbedcover\nbedcovers\nbedded\nbedder\nbedders\nbedding\nbeddings\nbedeafen\nbedeafened\nbedeafening\nbedeafens\nbedeck\nbedecked\nbedecking\nbedecks\nbedel\nbedell\nbedells\nbedels\nbedeman\nbedemen\nbedesman\nbedesmen\nbedevil\nbedeviled\nbedeviling\nbedevilled\nbedevilling\nbedevilment\nbedevilments\nbedevils\nbedew\nbedewed\nbedewing\nbedews\nbedfast\nbedfellow\nbedfellows\nbedframe\nbedframes\nbedgown\nbedgowns\nbediaper\nbediapered\nbediapering\nbediapers\nbedight\nbedighted\nbedighting\nbedights\nbedim\nbedimmed\nbedimming\nbedimple\nbedimpled\nbedimples\nbedimpling\nbedims\nbedirtied\nbedirties\nbedirty\nbedirtying\nbedizen\nbedizened\nbedizening\nbedizenment\nbedizenments\nbedizens\nbedlam\nbedlamp\nbedlamps\nbedlams\nbedless\nbedlike\nbedmaker\nbedmakers\nbedmate\nbedmates\nbedotted\nbedouin\nbedouins\nbedpan\nbedpans\nbedplate\nbedplates\nbedpost\nbedposts\nbedquilt\nbedquilts\nbedraggled\nbedrail\nbedrails\nbedrape\nbedraped\nbedrapes\nbedraping\nbedrench\nbedrenched\nbedrenches\nbedrenching\nbedrid\nbedridden\nbedrivel\nbedriveled\nbedriveling\nbedrivelled\nbedrivelling\nbedrivels\nbedrock\nbedrocks\nbedroll\nbedrolls\nbedroom\nbedrooms\nbedrug\nbedrugged\nbedrugging\nbedrugs\nbeds\nbedside\nbedsides\nbedsonia\nbedsonias\nbedsore\nbedsores\nbedspread\nbedspreads\nbedspring\nbedsprings\nbedstand\nbedstands\nbedstead\nbedsteads\nbedstraw\nbedstraws\nbedtick\nbedticks\nbedtime\nbedtimes\nbeduin\nbeduins\nbedumb\nbedumbed\nbedumbing\nbedumbs\nbedunce\nbedunced\nbedunces\nbeduncing\nbedward\nbedwards\nbedwarf\nbedwarfed\nbedwarfing\nbedwarfs\nbee\nbeebee\nbeebees\nbeebread\nbeebreads\nbeech\nbeechen\nbeeches\nbeechier\nbeechiest\nbeechnut\nbeechnuts\nbeechy\nbeef\nbeefcake\nbeefcakes\nbeefeater\nbeefeaters\nbeefed\nbeefier\nbeefiest\nbeefily\nbeefing\nbeefless\nbeefs\nbeefsteak\nbeefsteaks\nbeefwood\nbeefwoods\nbeefy\nbeehive\nbeehives\nbeekeeper\nbeekeepers\nbeekeeping\nbeelike\nbeeline\nbeelines\nbeen\nbeep\nbeeped\nbeeper\nbeepers\nbeeping\nbeeps\nbeer\nbeerier\nbeeriest\nbeers\nbeery\nbees\nbeeswax\nbeeswaxes\nbeeswing\nbeeswings\nbeet\nbeetle\nbeetled\nbeetles\nbeetling\nbeetroot\nbeetroots\nbeets\nbeeves\nbefall\nbefallen\nbefalling\nbefalls\nbefell\nbefinger\nbefingered\nbefingering\nbefingers\nbefit\nbefits\nbefitted\nbefitting\nbefittingly\nbeflag\nbeflagged\nbeflagging\nbeflags\nbeflea\nbefleaed\nbefleaing\nbefleas\nbefleck\nbeflecked\nbeflecking\nbeflecks\nbeflower\nbeflowered\nbeflowering\nbeflowers\nbefog\nbefogged\nbefogging\nbefogs\nbefool\nbefooled\nbefooling\nbefools\nbefore\nbeforehand\nbefoul\nbefouled\nbefouler\nbefoulers\nbefouling\nbefouls\nbefret\nbefrets\nbefretted\nbefretting\nbefriend\nbefriended\nbefriending\nbefriends\nbefringe\nbefringed\nbefringes\nbefringing\nbefuddle\nbefuddled\nbefuddlement\nbefuddlements\nbefuddles\nbefuddling\nbeg\nbegall\nbegalled\nbegalling\nbegalls\nbegan\nbegat\nbegaze\nbegazed\nbegazes\nbegazing\nbeget\nbegets\nbegetter\nbegetters\nbegetting\nbeggar\nbeggared\nbeggaries\nbeggaring\nbeggarliness\nbeggarly\nbeggars\nbeggary\nbegged\nbegging\nbegin\nbeginner\nbeginners\nbeginning\nbeginnings\nbegins\nbegird\nbegirded\nbegirding\nbegirdle\nbegirdled\nbegirdles\nbegirdling\nbegirds\nbegirt\nbeglad\nbegladded\nbegladding\nbeglads\nbegloom\nbegloomed\nbeglooming\nbeglooms\nbegone\nbegonia\nbegonias\nbegorah\nbegorra\nbegorrah\nbegot\nbegotten\nbegrim\nbegrime\nbegrimed\nbegrimes\nbegriming\nbegrimmed\nbegrimming\nbegrims\nbegroan\nbegroaned\nbegroaning\nbegroans\nbegrudge\nbegrudged\nbegrudges\nbegrudging\nbegrudgingly\nbegs\nbeguile\nbeguiled\nbeguilement\nbeguilements\nbeguiler\nbeguilers\nbeguiles\nbeguiling\nbeguilingly\nbeguine\nbeguines\nbegulf\nbegulfed\nbegulfing\nbegulfs\nbegum\nbegums\nbegun\nbehalf\nbehalves\nbehave\nbehaved\nbehaver\nbehavers\nbehaves\nbehaving\nbehavior\nbehavioral\nbehaviorally\nbehaviorism\nbehaviorisms\nbehaviorist\nbehavioristic\nbehaviorists\nbehaviors\nbehead\nbeheaded\nbeheading\nbeheads\nbeheld\nbehemoth\nbehemoths\nbehest\nbehests\nbehind\nbehinds\nbehold\nbeholden\nbeholder\nbeholders\nbeholding\nbeholds\nbehoof\nbehoove\nbehooved\nbehooves\nbehooving\nbehove\nbehoved\nbehoves\nbehoving\nbehowl\nbehowled\nbehowling\nbehowls\nbeige\nbeiges\nbeigy\nbeing\nbeings\nbejewel\nbejeweled\nbejeweling\nbejewelled\nbejewelling\nbejewels\nbejumble\nbejumbled\nbejumbles\nbejumbling\nbekiss\nbekissed\nbekisses\nbekissing\nbeknight\nbeknighted\nbeknighting\nbeknights\nbeknot\nbeknots\nbeknotted\nbeknotting\nbel\nbelabor\nbelabored\nbelaboring\nbelabors\nbelabour\nbelaboured\nbelabouring\nbelabours\nbelaced\nbeladied\nbeladies\nbelady\nbeladying\nbelated\nbelatedly\nbelatedness\nbelaud\nbelauded\nbelauding\nbelauds\nbelay\nbelayed\nbelaying\nbelays\nbelch\nbelched\nbelcher\nbelchers\nbelches\nbelching\nbeldam\nbeldame\nbeldames\nbeldams\nbeleaguer\nbeleaguered\nbeleaguering\nbeleaguers\nbeleap\nbeleaped\nbeleaping\nbeleaps\nbeleapt\nbelfried\nbelfries\nbelfry\nbelga\nbelgas\nbelie\nbelied\nbelief\nbeliefs\nbelier\nbeliers\nbelies\nbelievability\nbelievable\nbelievably\nbelieve\nbelieved\nbeliever\nbelievers\nbelieves\nbelieving\nbelike\nbeliquor\nbeliquored\nbeliquoring\nbeliquors\nbelittle\nbelittled\nbelittlement\nbelittlements\nbelittler\nbelittlers\nbelittles\nbelittling\nbelive\nbell\nbelladonna\nbelladonnas\nbellbird\nbellbirds\nbellboy\nbellboys\nbelle\nbelled\nbelleek\nbelleeks\nbelles\nbellhop\nbellhops\nbellicose\nbellicosity\nbellied\nbellies\nbelligerence\nbelligerences\nbelligerencies\nbelligerency\nbelligerent\nbelligerently\nbelling\nbellman\nbellmen\nbellow\nbellowed\nbellower\nbellowers\nbellowing\nbellows\nbellpull\nbellpulls\nbells\nbellwether\nbellwethers\nbellwort\nbellworts\nbelly\nbellyache\nbellyached\nbellyaches\nbellyaching\nbellyband\nbellybands\nbellyful\nbellyfuls\nbellying\nbelong\nbelonged\nbelonging\nbelongings\nbelongs\nbeloved\nbeloveds\nbelow\nbelows\nbels\nbelt\nbelted\nbelting\nbeltings\nbeltless\nbeltline\nbeltlines\nbelts\nbeltway\nbeltways\nbeluga\nbelugas\nbelying\nbema\nbemadam\nbemadamed\nbemadaming\nbemadams\nbemadden\nbemaddened\nbemaddening\nbemaddens\nbemas\nbemata\nbemean\nbemeaned\nbemeaning\nbemeans\nbemingle\nbemingled\nbemingles\nbemingling\nbemire\nbemired\nbemires\nbemiring\nbemist\nbemisted\nbemisting\nbemists\nbemix\nbemixed\nbemixes\nbemixing\nbemixt\nbemoan\nbemoaned\nbemoaning\nbemoans\nbemock\nbemocked\nbemocking\nbemocks\nbemuddle\nbemuddled\nbemuddles\nbemuddling\nbemurmur\nbemurmured\nbemurmuring\nbemurmurs\nbemuse\nbemused\nbemusedly\nbemuses\nbemusing\nbemuzzle\nbemuzzled\nbemuzzles\nbemuzzling\nben\nbename\nbenamed\nbenames\nbenaming\nbench\nbenched\nbencher\nbenchers\nbenches\nbenching\nbenchmark\nbenchmarks\nbend\nbendable\nbenday\nbendayed\nbendaying\nbendays\nbended\nbendee\nbendees\nbender\nbenders\nbending\nbends\nbendways\nbendwise\nbendy\nbendys\nbene\nbeneath\nbenedick\nbenedicks\nbenedict\nbenediction\nbenedictions\nbenedicts\nbenefaction\nbenefactions\nbenefactor\nbenefactors\nbenefactress\nbenefactresses\nbenefic\nbenefice\nbeneficed\nbeneficence\nbeneficences\nbeneficent\nbeneficently\nbenefices\nbeneficial\nbeneficially\nbeneficialness\nbeneficiaries\nbeneficiary\nbeneficing\nbenefit\nbenefited\nbenefiting\nbenefits\nbenefitted\nbenefitting\nbenempt\nbenempted\nbenes\nbenevolence\nbenevolences\nbenevolent\nbenevolently\nbengaline\nbengalines\nbenighted\nbenightedness\nbenign\nbenignancy\nbenignant\nbenignantly\nbenignities\nbenignity\nbenignly\nbenison\nbenisons\nbenjamin\nbenjamins\nbenne\nbennes\nbennet\nbennets\nbenni\nbennies\nbennis\nbenny\nbens\nbent\nbenthal\nbenthic\nbenthos\nbenthoses\nbents\nbentwood\nbentwoods\nbenumb\nbenumbed\nbenumbing\nbenumbs\nbenzal\nbenzene\nbenzenes\nbenzidin\nbenzidins\nbenzin\nbenzine\nbenzines\nbenzins\nbenzoate\nbenzoates\nbenzoic\nbenzoin\nbenzoins\nbenzol\nbenzole\nbenzoles\nbenzols\nbenzoyl\nbenzoyls\nbenzyl\nbenzylic\nbenzyls\nbepaint\nbepainted\nbepainting\nbepaints\nbepimple\nbepimpled\nbepimples\nbepimpling\nbequeath\nbequeathal\nbequeathals\nbequeathed\nbequeathing\nbequeaths\nbequest\nbequests\nberake\nberaked\nberakes\nberaking\nberascal\nberascaled\nberascaling\nberascals\nberate\nberated\nberates\nberating\nberberin\nberberins\nberceuse\nberceuses\nbereave\nbereaved\nbereavement\nbereavements\nbereaver\nbereavers\nbereaves\nbereaving\nbereft\nberet\nberets\nberetta\nberettas\nberg\nbergamot\nbergamots\nbergs\nberhyme\nberhymed\nberhymes\nberhyming\nberiberi\nberiberis\nberime\nberimed\nberimes\nberiming\nberinged\nberlin\nberline\nberlines\nberlins\nberm\nberme\nbermes\nberms\nbernicle\nbernicles\nberobed\nberouged\nberreaved\nberreaves\nberreaving\nberretta\nberrettas\nberried\nberries\nberry\nberrying\nberrylike\nberseem\nberseems\nberserk\nberserker\nberserkers\nberserkly\nberserks\nberth\nbertha\nberthas\nberthed\nberthing\nberths\nberyl\nberyline\nberyllium\nberyls\nbescorch\nbescorched\nbescorches\nbescorching\nbescour\nbescoured\nbescouring\nbescours\nbescreen\nbescreened\nbescreening\nbescreens\nbeseech\nbeseeched\nbeseeches\nbeseeching\nbeseechingly\nbeseem\nbeseemed\nbeseeming\nbeseems\nbeset\nbesets\nbesetter\nbesetters\nbesetting\nbeshadow\nbeshadowed\nbeshadowing\nbeshadows\nbeshame\nbeshamed\nbeshames\nbeshaming\nbeshiver\nbeshivered\nbeshivering\nbeshivers\nbeshout\nbeshouted\nbeshouting\nbeshouts\nbeshrew\nbeshrewed\nbeshrewing\nbeshrews\nbeshroud\nbeshrouded\nbeshrouding\nbeshrouds\nbeside\nbesides\nbesiege\nbesieged\nbesieger\nbesiegers\nbesieges\nbesieging\nbeslaved\nbeslime\nbeslimed\nbeslimes\nbesliming\nbesmear\nbesmeared\nbesmearing\nbesmears\nbesmile\nbesmiled\nbesmiles\nbesmiling\nbesmirch\nbesmirched\nbesmirches\nbesmirching\nbesmoke\nbesmoked\nbesmokes\nbesmoking\nbesmooth\nbesmoothed\nbesmoothing\nbesmooths\nbesmudge\nbesmudged\nbesmudges\nbesmudging\nbesmut\nbesmuts\nbesmutted\nbesmutting\nbesnow\nbesnowed\nbesnowing\nbesnows\nbesom\nbesoms\nbesoothe\nbesoothed\nbesoothes\nbesoothing\nbesot\nbesots\nbesotted\nbesotting\nbesought\nbespake\nbespatter\nbespattered\nbespattering\nbespatters\nbespeak\nbespeaking\nbespeaks\nbespectacled\nbespoke\nbespoken\nbespouse\nbespoused\nbespouses\nbespousing\nbespread\nbespreading\nbespreads\nbesprent\nbest\nbestead\nbesteaded\nbesteading\nbesteads\nbested\nbestial\nbestialities\nbestiality\nbestially\nbestiaries\nbestiary\nbesting\nbestir\nbestirred\nbestirring\nbestirs\nbestow\nbestowal\nbestowals\nbestowed\nbestowing\nbestowment\nbestowments\nbestows\nbestrew\nbestrewed\nbestrewing\nbestrewn\nbestrews\nbestrid\nbestridden\nbestride\nbestrides\nbestriding\nbestrode\nbestrow\nbestrowed\nbestrowing\nbestrown\nbestrows\nbests\nbestselling\nbestud\nbestudded\nbestudding\nbestuds\nbeswarm\nbeswarmed\nbeswarming\nbeswarms\nbet\nbeta\nbetaine\nbetaines\nbetake\nbetaken\nbetakes\nbetaking\nbetas\nbetatron\nbetatrons\nbetatter\nbetattered\nbetattering\nbetatters\nbetaxed\nbetel\nbetelnut\nbetelnuts\nbetels\nbeth\nbethank\nbethanked\nbethanking\nbethanks\nbethel\nbethels\nbethink\nbethinking\nbethinks\nbethorn\nbethorned\nbethorning\nbethorns\nbethought\nbeths\nbethump\nbethumped\nbethumping\nbethumps\nbetide\nbetided\nbetides\nbetiding\nbetime\nbetimes\nbetise\nbetises\nbetoken\nbetokened\nbetokening\nbetokens\nbeton\nbetonies\nbetons\nbetony\nbetook\nbetray\nbetrayal\nbetrayals\nbetrayed\nbetrayer\nbetrayers\nbetraying\nbetrays\nbetroth\nbetrothal\nbetrothals\nbetrothed\nbetrothing\nbetroths\nbets\nbetta\nbettas\nbetted\nbetter\nbettered\nbettering\nbetterment\nbetterments\nbetters\nbetting\nbettor\nbettors\nbetween\nbetweenness\nbetwixt\nbeuncled\nbevatron\nbevatrons\nbevel\nbeveled\nbeveler\nbevelers\nbeveling\nbevelled\nbeveller\nbevellers\nbevelling\nbevels\nbeverage\nbeverages\nbevies\nbevomit\nbevomited\nbevomiting\nbevomits\nbevor\nbevors\nbevy\nbewail\nbewailed\nbewailer\nbewailers\nbewailing\nbewails\nbeware\nbewared\nbewares\nbewaring\nbewearied\nbewearies\nbeweary\nbewearying\nbeweep\nbeweeping\nbeweeps\nbewept\nbewig\nbewigged\nbewigging\nbewigs\nbewilder\nbewildered\nbewildering\nbewilderingly\nbewilderment\nbewilderments\nbewilders\nbewinged\nbewitch\nbewitched\nbewitchery\nbewitches\nbewitching\nbewitchingly\nbewitchingness\nbewitchment\nbewitchments\nbeworm\nbewormed\nbeworming\nbeworms\nbeworried\nbeworries\nbeworry\nbeworrying\nbewrap\nbewrapped\nbewrapping\nbewraps\nbewrapt\nbewray\nbewrayed\nbewrayer\nbewrayers\nbewraying\nbewrays\nbey\nbeylic\nbeylics\nbeylik\nbeyliks\nbeyond\nbeyonds\nbeys\nbezant\nbezants\nbezel\nbezels\nbezil\nbezils\nbezique\nbeziques\nbezoar\nbezoars\nbezzant\nbezzants\nbhakta\nbhaktas\nbhakti\nbhaktis\nbhang\nbhangs\nbheestie\nbheesties\nbheesty\nbhistie\nbhisties\nbhoot\nbhoots\nbhut\nbhuts\nbi\nbiacetyl\nbiacetyls\nbiali\nbialy\nbialys\nbiannual\nbiannually\nbias\nbiased\nbiasedly\nbiases\nbiasing\nbiasness\nbiasnesses\nbiassed\nbiasses\nbiassing\nbiathlon\nbiathlons\nbiaxal\nbiaxial\nbib\nbibasic\nbibb\nbibbed\nbibber\nbibberies\nbibbers\nbibbery\nbibbing\nbibbs\nbibcock\nbibcocks\nbibelot\nbibelots\nbible\nbibles\nbibless\nbiblical\nbiblically\nbiblike\nbibliographer\nbibliographers\nbibliographic\nbibliographical\nbibliographically\nbibliographies\nbibliography\nbibliophile\nbibliophiles\nbibs\nbibulous\nbibulously\nbibulousness\nbicameral\nbicameralism\nbicarb\nbicarbonate\nbicarbonates\nbicarbs\nbice\nbicentennial\nbicentennials\nbiceps\nbicepses\nbices\nbichrome\nbicker\nbickered\nbickerer\nbickerers\nbickering\nbickers\nbicolor\nbicolored\nbicolors\nbicolour\nbicolours\nbiconcave\nbiconvex\nbicorn\nbicorne\nbicornes\nbicron\nbicrons\nbicultural\nbicuspid\nbicuspids\nbicycle\nbicycled\nbicycler\nbicyclers\nbicycles\nbicyclic\nbicycling\nbicyclist\nbicyclists\nbid\nbidarka\nbidarkas\nbidarkee\nbidarkees\nbiddable\nbiddably\nbidden\nbidder\nbidders\nbiddies\nbidding\nbiddings\nbiddy\nbide\nbided\nbidental\nbider\nbiders\nbides\nbidet\nbidets\nbiding\nbidirectional\nbids\nbield\nbielded\nbielding\nbields\nbiennia\nbiennial\nbiennially\nbiennials\nbiennium\nbienniums\nbier\nbiers\nbifacial\nbiff\nbiffed\nbiffies\nbiffin\nbiffing\nbiffins\nbiffs\nbiffy\nbifid\nbifidities\nbifidity\nbifidly\nbifilar\nbiflex\nbifocal\nbifocals\nbifold\nbiforate\nbiforked\nbiform\nbiformed\nbifunctional\nbifurcate\nbifurcated\nbifurcates\nbifurcating\nbifurcation\nbifurcations\nbig\nbigamies\nbigamist\nbigamists\nbigamous\nbigamously\nbigamy\nbigaroon\nbigaroons\nbigeminies\nbigeminy\nbigeye\nbigeyes\nbigger\nbiggest\nbiggety\nbiggie\nbiggies\nbiggin\nbigging\nbiggings\nbiggins\nbiggish\nbiggity\nbighead\nbigheads\nbighearted\nbigheartedly\nbigheartedness\nbighorn\nbighorns\nbight\nbighted\nbighting\nbights\nbigly\nbigmouth\nbigmouths\nbigness\nbignesses\nbignonia\nbignonias\nbigot\nbigoted\nbigotedly\nbigotries\nbigotry\nbigots\nbigwig\nbigwigs\nbihourly\nbijou\nbijous\nbijoux\nbijugate\nbijugous\nbike\nbiked\nbiker\nbikers\nbikes\nbikeway\nbikeways\nbikie\nbiking\nbikini\nbikinied\nbikinis\nbilabial\nbilabials\nbilander\nbilanders\nbilateral\nbilaterally\nbilberries\nbilberry\nbilbo\nbilboa\nbilboas\nbilboes\nbilbos\nbile\nbiles\nbilge\nbilged\nbilges\nbilgier\nbilgiest\nbilging\nbilgy\nbiliary\nbilinear\nbilingual\nbilingualism\nbilingually\nbilious\nbiliously\nbiliousness\nbilk\nbilked\nbilker\nbilkers\nbilking\nbilks\nbill\nbillable\nbillboard\nbillboards\nbillbug\nbillbugs\nbilled\nbiller\nbillers\nbillet\nbilleted\nbilleter\nbilleters\nbilleting\nbillets\nbillfish\nbillfishes\nbillfold\nbillfolds\nbillhead\nbillheads\nbillhook\nbillhooks\nbilliard\nbilliards\nbillie\nbillies\nbilling\nbillings\nbillion\nbillionaire\nbillionaires\nbillions\nbillionth\nbillionths\nbillon\nbillons\nbillow\nbillowed\nbillowier\nbillowiest\nbillowing\nbillows\nbillowy\nbills\nbilly\nbillycan\nbillycans\nbilobate\nbilobed\nbilsted\nbilsteds\nbiltong\nbiltongs\nbima\nbimah\nbimahs\nbimanous\nbimanual\nbimas\nbimbo\nbimensal\nbimester\nbimesters\nbimetal\nbimetallic\nbimetallism\nbimetallist\nbimetallistic\nbimetallists\nbimetals\nbimethyl\nbimethyls\nbimodal\nbimodality\nbimonthlies\nbimonthly\nbin\nbinal\nbinaries\nbinary\nbinate\nbinately\nbinational\nbinaural\nbind\nbindable\nbinder\nbinderies\nbinders\nbindery\nbindi\nbinding\nbindingness\nbindings\nbindle\nbindles\nbinds\nbindweed\nbindweeds\nbine\nbines\nbinge\nbinges\nbingo\nbingos\nbinit\nbinits\nbinnacle\nbinnacles\nbinned\nbinning\nbinocle\nbinocles\nbinocular\nbinocularity\nbinocularly\nbinoculars\nbinomial\nbinomially\nbinomials\nbins\nbint\nbints\nbio\nbioassay\nbioassayed\nbioassaying\nbioassays\nbiochemical\nbiochemically\nbiochemist\nbiochemistries\nbiochemistry\nbiochemists\nbiocidal\nbiocide\nbiocides\nbioclean\nbiocycle\nbiocycles\nbiodegradability\nbiodegradable\nbiodegradation\nbiodegradations\nbiodegrade\nbiodegraded\nbiodegrades\nbiodegrading\nbiogen\nbiogenic\nbiogenies\nbiogens\nbiogeny\nbiogeographic\nbiogeographical\nbiogeographies\nbiogeography\nbiographer\nbiographers\nbiographic\nbiographical\nbiographically\nbiographies\nbiography\nbioherm\nbioherms\nbiologic\nbiological\nbiologically\nbiologics\nbiologies\nbiologist\nbiologists\nbiology\nbiolyses\nbiolysis\nbiolytic\nbiomass\nbiomasses\nbiome\nbiomedical\nbiomedicine\nbiomes\nbiometries\nbiometry\nbionic\nbionics\nbionomic\nbionomies\nbionomy\nbiont\nbiontic\nbionts\nbiophysical\nbiophysically\nbiophysicist\nbiophysicists\nbiophysics\nbioplasm\nbioplasms\nbiopsic\nbiopsies\nbiopsy\nbioptic\nbiorhythm\nbiorhythmic\nbiorhythms\nbios\nbioscope\nbioscopes\nbioscopies\nbioscopy\nbiota\nbiotas\nbiotic\nbiotical\nbiotics\nbiotin\nbiotins\nbiotite\nbiotites\nbiotitic\nbiotope\nbiotopes\nbiotron\nbiotrons\nbiotype\nbiotypes\nbiotypic\nbiovular\nbipack\nbipacks\nbiparental\nbiparous\nbiparted\nbipartisan\nbipartisanism\nbipartisanisms\nbipartisanship\nbipartisanships\nbipartite\nbipartitely\nbipartition\nbipartitions\nbiparty\nbiped\nbipedal\nbipeds\nbiphenyl\nbiphenyls\nbiplane\nbiplanes\nbipod\nbipods\nbipolar\nbipolarity\nbiracial\nbiradial\nbiramose\nbiramous\nbirch\nbirched\nbirchen\nbirches\nbirching\nbird\nbirdbath\nbirdbaths\nbirdcage\nbirdcages\nbirdcall\nbirdcalls\nbirded\nbirder\nbirders\nbirdfarm\nbirdfarms\nbirdhouse\nbirdhouses\nbirdie\nbirdied\nbirdieing\nbirdies\nbirding\nbirdlike\nbirdlime\nbirdlimed\nbirdlimes\nbirdliming\nbirdman\nbirdmen\nbirds\nbirdseed\nbirdseeds\nbirdseye\nbirdseyes\nbireme\nbiremes\nbiretta\nbirettas\nbirk\nbirkie\nbirkies\nbirks\nbirl\nbirle\nbirled\nbirler\nbirlers\nbirles\nbirling\nbirlings\nbirls\nbirr\nbirred\nbirretta\nbirrettas\nbirring\nbirrs\nbirse\nbirses\nbirth\nbirthday\nbirthdays\nbirthed\nbirthing\nbirthmark\nbirthmarks\nbirthplace\nbirthplaces\nbirthrate\nbirthrates\nbirthright\nbirthrights\nbirths\nbirthstone\nbirthstones\nbis\nbiscuit\nbiscuits\nbise\nbisect\nbisected\nbisecting\nbisection\nbisections\nbisector\nbisectors\nbisects\nbises\nbisexual\nbisexuality\nbisexually\nbisexuals\nbishop\nbishoped\nbishoping\nbishopric\nbishoprics\nbishops\nbisk\nbisks\nbismuth\nbismuths\nbisnaga\nbisnagas\nbison\nbisons\nbisque\nbisques\nbistate\nbister\nbistered\nbisters\nbistort\nbistorts\nbistouries\nbistoury\nbistre\nbistred\nbistres\nbistro\nbistroic\nbistros\nbit\nbitable\nbitch\nbitched\nbitcheries\nbitchery\nbitches\nbitchier\nbitchiest\nbitchily\nbitching\nbitchy\nbite\nbiteable\nbiter\nbiters\nbites\nbitewing\nbitewings\nbiting\nbitingly\nbits\nbitstock\nbitstocks\nbitsy\nbitt\nbitted\nbitten\nbitter\nbittered\nbitterer\nbitterest\nbittering\nbitterish\nbitterly\nbittern\nbitterness\nbitterns\nbitters\nbittersweet\nbittersweets\nbittier\nbittiest\nbitting\nbittings\nbittock\nbittocks\nbitts\nbitty\nbitumen\nbitumens\nbituminous\nbivalent\nbivalents\nbivalve\nbivalved\nbivalves\nbivinyl\nbivinyls\nbivouac\nbivouacked\nbivouacking\nbivouacks\nbivouacs\nbiweeklies\nbiweekly\nbiyearly\nbiz\nbizarre\nbizarrely\nbizarreness\nbizarres\nbize\nbizes\nbiznaga\nbiznagas\nbizonal\nbizone\nbizones\nblab\nblabbed\nblabber\nblabbered\nblabbering\nblabbers\nblabbing\nblabby\nblabs\nblack\nblackball\nblackballed\nblackballing\nblackballs\nblackberries\nblackberry\nblackbird\nblackbirds\nblackboard\nblackboards\nblackboy\nblackboys\nblackcap\nblackcaps\nblacked\nblacken\nblackened\nblackener\nblackeners\nblackening\nblackens\nblacker\nblackest\nblackfin\nblackfins\nblackflies\nblackfly\nblackguard\nblackguardly\nblackguards\nblackgum\nblackgums\nblackhead\nblackheads\nblacking\nblackings\nblackish\nblackjack\nblackjacked\nblackjacking\nblackjacks\nblackleg\nblacklegs\nblacklist\nblacklisted\nblacklisting\nblacklists\nblackly\nblackmail\nblackmailed\nblackmailer\nblackmailers\nblackmailing\nblackmails\nblackness\nblackout\nblackouts\nblacks\nblacksmith\nblacksmiths\nblacktop\nblacktopped\nblacktopping\nblacktops\nbladder\nbladderlike\nbladders\nbladdery\nblade\nbladed\nblades\nblae\nblah\nblahs\nblain\nblains\nblam\nblamable\nblamably\nblame\nblamed\nblameful\nblameless\nblamelessly\nblamelessness\nblamer\nblamers\nblames\nblameworthiness\nblameworthy\nblaming\nblams\nblanch\nblanched\nblancher\nblanchers\nblanches\nblanching\nbland\nblander\nblandest\nblandish\nblandished\nblandisher\nblandishers\nblandishes\nblandishing\nblandishment\nblandishments\nblandly\nblandness\nblank\nblanked\nblanker\nblankest\nblanket\nblanketed\nblanketing\nblankets\nblanking\nblankly\nblankness\nblanks\nblare\nblared\nblares\nblaring\nblarney\nblarneyed\nblarneying\nblarneys\nblase\nblaspheme\nblasphemed\nblasphemer\nblasphemers\nblasphemes\nblasphemies\nblaspheming\nblasphemous\nblasphemously\nblasphemousness\nblasphemy\nblast\nblasted\nblastema\nblastemas\nblastemata\nblaster\nblasters\nblastie\nblastier\nblasties\nblastiest\nblasting\nblastings\nblastoff\nblastoffs\nblastoma\nblastomas\nblastomata\nblasts\nblastula\nblastulae\nblastulas\nblasty\nblat\nblatancies\nblatancy\nblatant\nblatantly\nblate\nblather\nblathered\nblathering\nblathers\nblats\nblatted\nblatter\nblattered\nblattering\nblatters\nblatting\nblaubok\nblauboks\nblaw\nblawed\nblawing\nblawn\nblaws\nblaze\nblazed\nblazer\nblazers\nblazes\nblazing\nblazon\nblazoned\nblazoner\nblazoners\nblazoning\nblazonments\nblazonries\nblazonry\nblazons\nbleach\nbleachable\nbleached\nbleacher\nbleachers\nbleaches\nbleaching\nbleak\nbleaker\nbleakest\nbleakish\nbleakly\nbleakness\nbleaks\nblear\nbleared\nblearier\nbleariest\nblearily\nbleariness\nblearing\nblears\nbleary\nbleat\nbleated\nbleater\nbleaters\nbleating\nbleats\nbleb\nblebby\nblebs\nbled\nbleed\nbleeder\nbleeders\nbleeding\nbleedings\nbleeds\nbleep\nblellum\nblellums\nblemish\nblemished\nblemishes\nblemishing\nblench\nblenched\nblencher\nblenchers\nblenches\nblenching\nblend\nblende\nblended\nblender\nblenders\nblendes\nblending\nblends\nblennies\nblenny\nblent\nblesbok\nblesboks\nblesbuck\nblesbucks\nbless\nblessed\nblesseder\nblessedest\nblessedly\nblessedness\nblesser\nblessers\nblesses\nblessing\nblessings\nblest\nblet\nblether\nblethered\nblethering\nblethers\nblets\nblew\nblight\nblighted\nblighter\nblighters\nblighties\nblighting\nblights\nblighty\nblimey\nblimp\nblimpish\nblimps\nblimy\nblin\nblind\nblindage\nblindages\nblinded\nblinder\nblinders\nblindest\nblindfold\nblindfolded\nblindfolding\nblindfolds\nblinding\nblindly\nblindness\nblinds\nblini\nblinis\nblink\nblinkard\nblinkards\nblinked\nblinker\nblinkered\nblinkering\nblinkers\nblinking\nblinks\nblintz\nblintze\nblintzes\nblip\nblipped\nblipping\nblips\nbliss\nblisses\nblissful\nblissfully\nblissfulness\nblister\nblistered\nblistering\nblisters\nblistery\nblite\nblites\nblithe\nblithely\nblither\nblithered\nblithering\nblithers\nblithesome\nblithesomely\nblithest\nblitz\nblitzed\nblitzes\nblitzing\nblitzkrieg\nblitzkriegs\nblizzard\nblizzards\nbloat\nbloated\nbloater\nbloaters\nbloating\nbloats\nblob\nblobbed\nblobbing\nblobs\nbloc\nblock\nblockade\nblockaded\nblockader\nblockaders\nblockades\nblockading\nblockage\nblockages\nblockbuster\nblockbusters\nblockbusting\nblocked\nblocker\nblockers\nblockhead\nblockheads\nblockhouse\nblockhouses\nblockier\nblockiest\nblocking\nblockish\nblocks\nblocky\nblocs\nbloke\nblokes\nblond\nblonde\nblondeness\nblonder\nblondes\nblondest\nblondish\nblonds\nblood\nbloodbath\nbloodbaths\nbloodcurdling\nblooded\nbloodfin\nbloodfins\nbloodhound\nbloodhounds\nbloodied\nbloodier\nbloodies\nbloodiest\nbloodily\nbloodiness\nblooding\nbloodings\nbloodless\nbloodlessly\nbloodlessness\nbloodletting\nbloodlettings\nbloodline\nbloodlines\nbloodmobile\nbloodmobiles\nbloodred\nbloods\nbloodshed\nbloodshot\nbloodstain\nbloodstained\nbloodstream\nbloodstreams\nbloodsucker\nbloodsuckers\nbloodsucking\nbloodthirstily\nbloodthirstiness\nbloodthirsty\nbloody\nbloodying\nbloom\nbloomed\nbloomer\nbloomeries\nbloomers\nbloomery\nbloomier\nbloomiest\nblooming\nblooms\nbloomy\nbloop\nblooped\nblooper\nbloopers\nblooping\nbloops\nblossom\nblossomed\nblossoming\nblossoms\nblossomy\nblot\nblotch\nblotched\nblotches\nblotchier\nblotchiest\nblotchily\nblotching\nblotchy\nblotless\nblots\nblotted\nblotter\nblotters\nblottier\nblottiest\nblotting\nblotto\nblotty\nblouse\nbloused\nblouses\nblousier\nblousiest\nblousily\nblousing\nblouson\nblousons\nblousy\nblow\nblowback\nblowbacks\nblowby\nblowbys\nblower\nblowers\nblowfish\nblowfishes\nblowflies\nblowfly\nblowgun\nblowguns\nblowhard\nblowhards\nblowhole\nblowholes\nblowier\nblowiest\nblowing\nblown\nblowoff\nblowoffs\nblowout\nblowouts\nblowpipe\nblowpipes\nblows\nblowsed\nblowsier\nblowsiest\nblowsily\nblowsy\nblowtorch\nblowtorches\nblowtube\nblowtubes\nblowup\nblowups\nblowy\nblowzed\nblowzier\nblowziest\nblowzily\nblowzy\nblubber\nblubbered\nblubbering\nblubbers\nblubbery\nblucher\nbluchers\nbludgeon\nbludgeoned\nbludgeoning\nbludgeons\nblue\nblueball\nblueballs\nbluebell\nbluebells\nblueberries\nblueberry\nbluebill\nbluebills\nbluebird\nbluebirds\nbluebook\nbluebooks\nbluebottle\nbluebottles\nbluecap\nbluecaps\nbluecoat\nbluecoats\nblued\nbluefin\nbluefins\nbluefish\nbluefishes\nbluegill\nbluegills\nbluegrass\nbluegrasses\nbluegum\nbluegums\nbluehead\nblueheads\nblueing\nblueings\nblueish\nbluejack\nbluejacks\nbluejay\nbluejays\nblueline\nbluelines\nbluely\nblueness\nbluenesses\nbluenose\nbluenoses\nblueprint\nblueprints\nbluer\nblues\nbluesman\nbluesmen\nbluest\nbluestem\nbluestems\nbluestocking\nbluestockings\nbluesy\nbluet\nbluets\nblueweed\nblueweeds\nbluewood\nbluewoods\nbluey\nblueys\nbluff\nbluffed\nbluffer\nbluffers\nbluffest\nbluffing\nbluffly\nbluffness\nbluffs\nbluing\nbluings\nbluish\nbluishness\nblume\nblumed\nblumes\nbluming\nblunder\nblunderbuss\nblunderbusses\nblundered\nblunderer\nblunderers\nblundering\nblunderingly\nblunders\nblunge\nblunged\nblunger\nblungers\nblunges\nblunging\nblunt\nblunted\nblunter\nbluntest\nblunting\nbluntly\nbluntness\nblunts\nblur\nblurb\nblurbs\nblurred\nblurrier\nblurriest\nblurrily\nblurring\nblurry\nblurs\nblurt\nblurted\nblurter\nblurters\nblurting\nblurts\nblush\nblushed\nblusher\nblushers\nblushes\nblushful\nblushing\nblushingly\nbluster\nblustered\nblusterer\nblusterers\nblustering\nblusteringly\nblusterous\nblusters\nblustery\nblype\nblypes\nbo\nboa\nboar\nboard\nboarded\nboarder\nboarders\nboarding\nboardinghouse\nboardinghouses\nboardings\nboardman\nboardmen\nboardroom\nboardrooms\nboards\nboardwalk\nboardwalks\nboarfish\nboarfishes\nboarish\nboars\nboart\nboarts\nboas\nboast\nboasted\nboaster\nboasters\nboastful\nboastfully\nboastfulness\nboasting\nboasts\nboat\nboatable\nboatbill\nboatbills\nboated\nboatel\nboatels\nboater\nboaters\nboathouse\nboathouses\nboating\nboatings\nboatload\nboatloads\nboatman\nboatmen\nboats\nboatsman\nboatsmen\nboatswain\nboatswains\nboatyard\nboatyards\nbob\nbobbed\nbobber\nbobberies\nbobbers\nbobbery\nbobbies\nbobbin\nbobbinet\nbobbinets\nbobbing\nbobbins\nbobble\nbobbled\nbobbles\nbobbling\nbobby\nbobcat\nbobcats\nbobeche\nbobeches\nbobolink\nbobolinks\nbobs\nbobsled\nbobsledded\nbobsledder\nbobsledders\nbobsledding\nbobsleded\nbobsleding\nbobsleds\nbobstay\nbobstays\nbobtail\nbobtailed\nbobtailing\nbobtails\nbobwhite\nbobwhites\nbocaccio\nbocaccios\nbocce\nbocces\nbocci\nboccia\nboccias\nboccie\nboccies\nboccis\nboche\nboches\nbock\nbocks\nbod\nbode\nboded\nbodega\nbodegas\nbodement\nbodements\nbodes\nbodice\nbodices\nbodied\nbodies\nbodiless\nbodily\nboding\nbodingly\nbodings\nbodkin\nbodkins\nbods\nbody\nbodybuilder\nbodybuilders\nbodybuilding\nbodyguard\nbodyguards\nbodying\nbodysurf\nbodysurfed\nbodysurfing\nbodysurfs\nbodywork\nbodyworks\nboehmite\nboehmites\nboff\nboffin\nboffins\nboffo\nboffola\nboffolas\nboffos\nboffs\nbog\nbogan\nbogans\nbogbean\nbogbeans\nbogey\nbogeyed\nbogeying\nbogeyman\nbogeymen\nbogeys\nbogged\nboggier\nboggiest\nbogging\nboggish\nboggle\nboggled\nboggler\nbogglers\nboggles\nboggling\nboggy\nbogie\nbogies\nbogle\nbogles\nbogs\nbogus\nbogwood\nbogwoods\nbogy\nbogyism\nbogyisms\nbogyman\nbogymen\nbohea\nboheas\nbohemia\nbohemian\nbohemians\nbohemias\nbohunk\nbohunks\nboil\nboilable\nboiled\nboiler\nboilermaker\nboilermakers\nboilers\nboiling\nboils\nboing\nboisterous\nboisterously\nboisterousness\nboite\nboites\nbola\nbolar\nbolas\nbolases\nbold\nbolder\nboldest\nboldface\nboldfaced\nboldfaces\nboldfacing\nboldly\nboldness\nboldnesses\nbole\nbolero\nboleros\nboles\nbolete\nboletes\nboleti\nboletus\nboletuses\nbolide\nbolides\nbolivar\nbolivares\nbolivars\nbolivia\nbolivias\nboll\nbollard\nbollards\nbolled\nbolling\nbollix\nbollixed\nbollixes\nbollixing\nbollox\nbolloxed\nbolloxes\nbolloxing\nbolls\nbollworm\nbollworms\nbolo\nbologna\nbolognas\nboloney\nboloneys\nbolos\nbolshevism\nbolson\nbolsons\nbolster\nbolstered\nbolsterer\nbolsterers\nbolstering\nbolsters\nbolt\nbolted\nbolter\nbolters\nbolthead\nboltheads\nbolting\nboltonia\nboltonias\nboltrope\nboltropes\nbolts\nbolus\nboluses\nbomb\nbombard\nbombarded\nbombardier\nbombardiers\nbombarding\nbombardment\nbombardments\nbombards\nbombast\nbombastic\nbombastically\nbombasts\nbombe\nbombed\nbomber\nbombers\nbombes\nbombing\nbombload\nbombloads\nbombproof\nbombs\nbombshell\nbombshells\nbombsight\nbombsights\nbombycid\nbombycids\nbombyx\nbombyxes\nbonaci\nbonacis\nbonanza\nbonanzas\nbonbon\nbonbons\nbond\nbondable\nbondage\nbondages\nbonded\nbonder\nbonders\nbondholder\nbondholders\nbonding\nbondmaid\nbondmaids\nbondman\nbondmen\nbonds\nbondsman\nbondsmen\nbonduc\nbonducs\nbondwoman\nbondwomen\nbone\nboned\nbonefish\nbonefishes\nbonehead\nboneheads\nboneless\nboner\nboners\nbones\nboneset\nbonesets\nboney\nboneyard\nboneyards\nbonfire\nbonfires\nbong\nbonged\nbonging\nbongo\nbongoes\nbongoist\nbongoists\nbongos\nbongs\nbonhomie\nbonhomies\nbonier\nboniest\nboniface\nbonifaces\nboniness\nboninesses\nboning\nbonita\nbonitas\nbonito\nbonitoes\nbonitos\nbonk\nbonkers\nbonks\nbonne\nbonnes\nbonnet\nbonneted\nbonneting\nbonnets\nbonnie\nbonnier\nbonniest\nbonnily\nbonnock\nbonnocks\nbonny\nbonsai\nbonspell\nbonspells\nbonspiel\nbonspiels\nbontebok\nbonteboks\nbonus\nbonuses\nbony\nbonze\nbonzer\nbonzes\nboo\nboob\nboobies\nbooboo\nbooboos\nboobs\nbooby\nboodle\nboodled\nboodler\nboodlers\nboodles\nboodling\nbooed\nbooger\nboogers\nboogie\nboogies\nboogy\nboogyman\nboogymen\nboohoo\nboohooed\nboohooing\nboohoos\nbooing\nbook\nbookbinder\nbookbinderies\nbookbinders\nbookbindery\nbookbinding\nbookbindings\nbookcase\nbookcases\nbooked\nbookend\nbookends\nbooker\nbookers\nbookie\nbookies\nbooking\nbookings\nbookish\nbookishly\nbookishness\nbookkeeper\nbookkeepers\nbookkeeping\nbooklet\nbooklets\nbooklore\nbooklores\nbookmaker\nbookmakers\nbookmaking\nbookman\nbookmark\nbookmarks\nbookmen\nbookmobile\nbookmobiles\nbookplate\nbookplates\nbookrack\nbookracks\nbookrest\nbookrests\nbooks\nbookseller\nbooksellers\nbookshelf\nbookshelves\nbookshop\nbookshops\nbookstall\nbookstalls\nbookstore\nbookstores\nbookworm\nbookworms\nboom\nboomed\nboomer\nboomerang\nboomeranged\nboomeranging\nboomerangs\nboomers\nboomier\nboomiest\nbooming\nboomkin\nboomkins\nboomlet\nboomlets\nbooms\nboomtown\nboomtowns\nboomy\nboon\nboondocks\nboondoggle\nboondoggled\nboondoggler\nboondogglers\nboondoggles\nboondoggling\nboonies\nboons\nboor\nboorish\nboorishly\nboorishness\nboors\nboos\nboost\nboosted\nbooster\nboosters\nboosting\nboosts\nboot\nbootblack\nbootblacks\nbooted\nbootee\nbootees\nbooteries\nbootery\nbooth\nbooths\nbootie\nbooties\nbooting\nbootjack\nbootjacks\nbootlace\nbootlaces\nbootleg\nbootlegged\nbootlegger\nbootleggers\nbootlegging\nbootlegs\nbootless\nbootlessly\nbootlessness\nbootlick\nbootlicked\nbootlicking\nbootlicks\nboots\nbootstrap\nbootstraps\nbooty\nbooze\nboozed\nboozer\nboozers\nboozes\nboozier\nbooziest\nboozily\nboozing\nboozy\nbop\nbopped\nbopper\nboppers\nbopping\nbops\nbora\nboraces\nboracic\nboracite\nboracites\nborage\nborages\nboral\nborane\nboranes\nboras\nborate\nborated\nborates\nborax\nboraxes\nbordel\nbordello\nbordellos\nbordels\nborder\nbordered\nborderer\nborderers\nbordering\nborderland\nborderlands\nborderline\nborderlines\nborders\nbordure\nbordures\nbore\nboreal\nborecole\nborecoles\nbored\nboredom\nboredoms\nborer\nborers\nbores\nboric\nboride\nborides\nboring\nboringly\nborings\nborn\nborne\nborneol\nborneols\nbornite\nbornites\nboron\nboronic\nborons\nborough\nboroughs\nborrow\nborrowed\nborrower\nborrowers\nborrowing\nborrowings\nborrows\nborsch\nborsches\nborscht\nborschts\nborsht\nborshts\nborstal\nborstals\nbort\nborts\nborty\nbortz\nbortzes\nborzoi\nborzois\nbos\nboscage\nboscages\nboschbok\nboschboks\nbosh\nboshbok\nboshboks\nboshes\nboshvark\nboshvarks\nbosk\nboskage\nboskages\nbosker\nbosket\nboskets\nboskier\nboskiest\nbosks\nbosky\nbosom\nbosomed\nbosoming\nbosoms\nbosomy\nboson\nbosons\nbosque\nbosques\nbosquet\nbosquets\nboss\nbossdom\nbossdoms\nbossed\nbosses\nbossier\nbossies\nbossiest\nbossily\nbossiness\nbossing\nbossism\nbossisms\nbossy\nboston\nbostons\nbosun\nbosuns\nbot\nbota\nbotanic\nbotanical\nbotanically\nbotanies\nbotanise\nbotanised\nbotanises\nbotanising\nbotanist\nbotanists\nbotanize\nbotanized\nbotanizes\nbotanizing\nbotany\nbotas\nbotch\nbotched\nbotcher\nbotcheries\nbotchers\nbotchery\nbotches\nbotchier\nbotchiest\nbotchily\nbotching\nbotchy\nbotel\nbotels\nbotflies\nbotfly\nboth\nbother\nbotheration\nbotherations\nbothered\nbothering\nbothers\nbothersome\nbothy\nbotonee\nbotonnee\nbotryoid\nbotryose\nbots\nbott\nbottle\nbottled\nbottleful\nbottlefuls\nbottleneck\nbottlenecks\nbottlenose\nbottler\nbottlers\nbottles\nbottling\nbottom\nbottomed\nbottomer\nbottomers\nbottoming\nbottomless\nbottomlessly\nbottomlessness\nbottommost\nbottomries\nbottomry\nbottoms\nbotts\nbotulin\nbotulins\nbotulism\nbotulisms\nboucle\nboucles\nboudoir\nboudoirs\nbouffant\nbouffants\nbouffe\nbouffes\nbough\nboughed\nboughpot\nboughpots\nboughs\nbought\nboughten\nbougie\nbougies\nbouillabaisse\nbouillon\nbouillons\nboulder\nbouldered\nboulders\nbouldery\nboule\nboules\nboulevard\nboulevardier\nboulevardiers\nboulevards\nboulle\nboulles\nbounce\nbounced\nbouncer\nbouncers\nbounces\nbouncier\nbounciest\nbouncily\nbouncing\nbouncy\nbound\nboundable\nboundaries\nboundary\nbounded\nbounden\nbounder\nbounders\nbounding\nboundless\nboundlessly\nboundlessness\nbounds\nbounteous\nbounteously\nbounteousness\nbountied\nbounties\nbountiful\nbountifully\nbountifulness\nbounty\nbouquet\nbouquets\nbourbon\nbourbons\nbourdon\nbourdons\nbourg\nbourgeois\nbourgeoise\nbourgeoises\nbourgeoisie\nbourgeoisies\nbourgeon\nbourgeoned\nbourgeoning\nbourgeons\nbourgs\nbourn\nbourne\nbournes\nbourns\nbourree\nbourrees\nbourse\nbourses\nbourtree\nbourtrees\nbouse\nboused\nbouses\nbousing\nbousouki\nbousoukia\nbousoukis\nbousy\nbout\nboutique\nboutiques\nboutonniere\nboutonnieres\nbouts\nbouzouki\nbouzoukia\nbouzoukis\nbovid\nbovids\nbovine\nbovinely\nbovines\nbovinities\nbovinity\nbow\nbowdlerization\nbowdlerizations\nbowdlerize\nbowdlerized\nbowdlerizes\nbowdlerizing\nbowed\nbowel\nboweled\nboweling\nbowelled\nbowelling\nbowels\nbower\nbowered\nboweries\nbowering\nbowers\nbowery\nbowfin\nbowfins\nbowfront\nbowhead\nbowheads\nbowing\nbowingly\nbowings\nbowknot\nbowknots\nbowl\nbowlder\nbowlders\nbowled\nbowleg\nbowlegged\nbowlegs\nbowler\nbowlers\nbowless\nbowlful\nbowlfuls\nbowlike\nbowline\nbowlines\nbowling\nbowlings\nbowllike\nbowls\nbowman\nbowmen\nbowpot\nbowpots\nbows\nbowse\nbowsed\nbowses\nbowshot\nbowshots\nbowsing\nbowsprit\nbowsprits\nbowstring\nbowstrings\nbowwow\nbowwows\nbowyer\nbowyers\nbox\nboxberries\nboxberry\nboxcar\nboxcars\nboxed\nboxer\nboxers\nboxes\nboxfish\nboxfishes\nboxful\nboxfuls\nboxhaul\nboxhauled\nboxhauling\nboxhauls\nboxier\nboxiest\nboxiness\nboxinesses\nboxing\nboxings\nboxlike\nboxthorn\nboxthorns\nboxwood\nboxwoods\nboxy\nboy\nboyar\nboyard\nboyards\nboyarism\nboyarisms\nboyars\nboycott\nboycotted\nboycotter\nboycotters\nboycotting\nboycotts\nboyfriend\nboyfriends\nboyhood\nboyhoods\nboyish\nboyishly\nboyishness\nboyla\nboylas\nboyo\nboyos\nboys\nboysenberries\nboysenberry\nbozo\nbozos\nbra\nbrabble\nbrabbled\nbrabbler\nbrabblers\nbrabbles\nbrabbling\nbrace\nbraced\nbracelet\nbracelets\nbracer\nbracero\nbraceros\nbracers\nbraces\nbrach\nbraches\nbrachet\nbrachets\nbrachia\nbrachial\nbrachials\nbrachium\nbracing\nbracings\nbracken\nbrackens\nbracket\nbracketed\nbracketing\nbrackets\nbrackish\nbrackishness\nbract\nbracteal\nbracted\nbractlet\nbractlets\nbracts\nbrad\nbradawl\nbradawls\nbradded\nbradding\nbradoon\nbradoons\nbrads\nbrae\nbraes\nbrag\nbraggadocio\nbraggadocios\nbraggart\nbraggarts\nbragged\nbragger\nbraggers\nbraggest\nbraggier\nbraggiest\nbragging\nbraggingly\nbraggy\nbrags\nbrahma\nbrahmas\nbraid\nbraided\nbraider\nbraiders\nbraiding\nbraidings\nbraids\nbrail\nbrailed\nbrailing\nbraille\nbrailled\nbrailles\nbrailling\nbrails\nbrain\nbrainchild\nbrainchildren\nbrained\nbrainier\nbrainiest\nbrainily\nbraininess\nbraining\nbrainish\nbrainless\nbrainlessly\nbrainlessness\nbrainpan\nbrainpans\nbrains\nbrainstorm\nbrainstorming\nbrainstormings\nbrainstorms\nbrainwash\nbrainwashed\nbrainwasher\nbrainwashers\nbrainwashes\nbrainwashing\nbrainwashings\nbrainy\nbraise\nbraised\nbraises\nbraising\nbraize\nbraizes\nbrake\nbrakeage\nbrakeages\nbraked\nbrakeless\nbrakeman\nbrakemen\nbrakes\nbrakier\nbrakiest\nbraking\nbraky\nbramble\nbrambled\nbrambles\nbramblier\nbrambliest\nbrambling\nbrambly\nbran\nbranch\nbranched\nbranches\nbranchia\nbranchiae\nbranchier\nbranchiest\nbranching\nbranchless\nbranchy\nbrand\nbranded\nbrander\nbranders\nbrandied\nbrandies\nbranding\nbrandish\nbrandished\nbrandishes\nbrandishing\nbrands\nbrandy\nbrandying\nbrank\nbranks\nbranned\nbranner\nbranners\nbrannier\nbranniest\nbranning\nbranny\nbrans\nbrant\nbrantail\nbrantails\nbrants\nbras\nbrash\nbrasher\nbrashes\nbrashest\nbrashier\nbrashiest\nbrashly\nbrashness\nbrashy\nbrasier\nbrasiers\nbrasil\nbrasilin\nbrasilins\nbrasils\nbrass\nbrassage\nbrassages\nbrassard\nbrassards\nbrassart\nbrassarts\nbrasserie\nbrasseries\nbrasses\nbrassica\nbrassicas\nbrassie\nbrassier\nbrassiere\nbrassieres\nbrassies\nbrassiest\nbrassily\nbrassiness\nbrassish\nbrassy\nbrat\nbrats\nbrattice\nbratticed\nbrattices\nbratticing\nbrattier\nbrattiest\nbrattish\nbrattle\nbrattled\nbrattles\nbrattling\nbratty\nbraunite\nbraunites\nbrava\nbravado\nbravadoes\nbravados\nbravas\nbrave\nbraved\nbravely\nbraveness\nbraver\nbraveries\nbravers\nbravery\nbraves\nbravest\nbravi\nbraving\nbravo\nbravoed\nbravoes\nbravoing\nbravos\nbravura\nbravuras\nbravure\nbraw\nbrawer\nbrawest\nbrawl\nbrawled\nbrawler\nbrawlers\nbrawlie\nbrawlier\nbrawliest\nbrawling\nbrawls\nbrawly\nbrawn\nbrawnier\nbrawniest\nbrawnily\nbrawniness\nbrawns\nbrawny\nbraws\nbraxies\nbraxy\nbray\nbrayed\nbrayer\nbrayers\nbraying\nbrays\nbraza\nbrazas\nbraze\nbrazed\nbrazen\nbrazened\nbrazening\nbrazenly\nbrazenness\nbrazens\nbrazer\nbrazers\nbrazes\nbrazier\nbraziers\nbrazil\nbrazilin\nbrazilins\nbrazils\nbrazing\nbreach\nbreached\nbreacher\nbreachers\nbreaches\nbreaching\nbread\nbreadbasket\nbreadbaskets\nbreadboard\nbreadboards\nbreaded\nbreadfruit\nbreadfruits\nbreading\nbreadnut\nbreadnuts\nbreads\nbreadstuff\nbreadstuffs\nbreadth\nbreadths\nbreadwinner\nbreadwinners\nbreak\nbreakable\nbreakage\nbreakages\nbreakdown\nbreakdowns\nbreaker\nbreakers\nbreakfast\nbreakfasted\nbreakfasting\nbreakfasts\nbreaking\nbreakings\nbreakneck\nbreakout\nbreakouts\nbreaks\nbreakthrough\nbreakthroughs\nbreakup\nbreakups\nbreakwater\nbreakwaters\nbream\nbreamed\nbreaming\nbreams\nbreast\nbreastbone\nbreastbones\nbreasted\nbreasting\nbreastplate\nbreastplates\nbreasts\nbreaststroke\nbreaststrokes\nbreastwork\nbreastworks\nbreath\nbreathable\nbreathe\nbreathed\nbreather\nbreathers\nbreathes\nbreathier\nbreathiest\nbreathing\nbreathless\nbreathlessly\nbreathlessness\nbreaths\nbreathtaking\nbreathtakingly\nbreathy\nbreccia\nbreccial\nbreccias\nbrecham\nbrechams\nbrechan\nbrechans\nbred\nbrede\nbredes\nbree\nbreech\nbreechcloth\nbreechcloths\nbreeched\nbreeches\nbreeching\nbreed\nbreeder\nbreeders\nbreeding\nbreedings\nbreeds\nbreeks\nbrees\nbreeze\nbreezed\nbreezes\nbreezeway\nbreezeways\nbreezier\nbreeziest\nbreezily\nbreeziness\nbreezing\nbreezy\nbregma\nbregmata\nbregmate\nbren\nbrens\nbrent\nbrents\nbrethren\nbreve\nbreves\nbrevet\nbrevetcies\nbrevetcy\nbreveted\nbreveting\nbrevets\nbrevetted\nbrevetting\nbreviaries\nbreviary\nbrevier\nbreviers\nbrevities\nbrevity\nbrew\nbrewage\nbrewages\nbrewed\nbrewer\nbreweries\nbrewers\nbrewery\nbrewing\nbrewings\nbrewis\nbrewises\nbrews\nbriar\nbriard\nbriards\nbriars\nbriary\nbribable\nbribe\nbribed\nbriber\nbriberies\nbribers\nbribery\nbribes\nbribing\nbrick\nbrickbat\nbrickbats\nbricked\nbrickier\nbrickiest\nbricking\nbricklayer\nbricklayers\nbricklaying\nbricklayings\nbrickle\nbricks\nbrickwork\nbrickworks\nbricky\nbrickyard\nbrickyards\nbricole\nbricoles\nbridal\nbridally\nbridals\nbride\nbridegroom\nbridegrooms\nbrides\nbridesmaid\nbridesmaids\nbridge\nbridgeable\nbridged\nbridgehead\nbridgeheads\nbridges\nbridgework\nbridgeworks\nbridging\nbridgings\nbridle\nbridled\nbridler\nbridlers\nbridles\nbridling\nbridoon\nbridoons\nbrie\nbrief\nbriefcase\nbriefcases\nbriefed\nbriefer\nbriefers\nbriefest\nbriefing\nbriefings\nbriefly\nbriefness\nbriefs\nbrier\nbriers\nbriery\nbries\nbrig\nbrigade\nbrigaded\nbrigades\nbrigadier\nbrigadiers\nbrigading\nbrigand\nbrigandage\nbrigands\nbrigantine\nbrigantines\nbright\nbrighten\nbrightened\nbrightener\nbrighteners\nbrightening\nbrightens\nbrighter\nbrightest\nbrightly\nbrightness\nbrights\nbrigs\nbrill\nbrilliance\nbrilliancies\nbrilliancy\nbrilliant\nbrilliantine\nbrilliantines\nbrilliantly\nbrilliants\nbrills\nbrim\nbrimful\nbrimfull\nbrimless\nbrimmed\nbrimmer\nbrimmers\nbrimming\nbrims\nbrimstone\nbrimstones\nbrin\nbrinded\nbrindle\nbrindled\nbrindles\nbrine\nbrined\nbriner\nbriners\nbrines\nbring\nbringer\nbringers\nbringing\nbrings\nbrinier\nbrinies\nbriniest\nbrininess\nbrining\nbrinish\nbrink\nbrinks\nbrins\nbriny\nbrio\nbrioche\nbrioches\nbrionies\nbriony\nbrios\nbriquet\nbriquets\nbriquette\nbriquetted\nbriquettes\nbriquetting\nbris\nbrisance\nbrisances\nbrisant\nbrisk\nbrisked\nbrisker\nbriskest\nbrisket\nbriskets\nbrisking\nbriskly\nbriskness\nbrisks\nbrisling\nbrislings\nbristle\nbristled\nbristles\nbristlier\nbristliest\nbristling\nbristlings\nbristly\nbristol\nbristols\nbrit\nbritches\nbrits\nbritska\nbritskas\nbritt\nbrittle\nbrittled\nbrittleness\nbrittler\nbrittles\nbrittlest\nbrittling\nbritts\nbritzka\nbritzkas\nbritzska\nbritzskas\nbroach\nbroached\nbroacher\nbroachers\nbroaches\nbroaching\nbroad\nbroadax\nbroadaxe\nbroadaxes\nbroadband\nbroadcast\nbroadcasted\nbroadcaster\nbroadcasters\nbroadcasting\nbroadcasts\nbroadcloth\nbroadcloths\nbroaden\nbroadened\nbroadening\nbroadens\nbroader\nbroadest\nbroadish\nbroadloom\nbroadlooms\nbroadly\nbroads\nbroadside\nbroadsides\nbroadsword\nbroadswords\nbrocade\nbrocaded\nbrocades\nbrocading\nbrocatel\nbrocatels\nbroccoli\nbroccolis\nbroche\nbrochette\nbrochettes\nbrochure\nbrochures\nbrock\nbrockage\nbrockages\nbrocket\nbrockets\nbrocks\nbrocoli\nbrocolis\nbrogan\nbrogans\nbrogue\nbrogueries\nbroguery\nbrogues\nbroguish\nbroider\nbroidered\nbroideries\nbroidering\nbroiders\nbroidery\nbroil\nbroiled\nbroiler\nbroilers\nbroiling\nbroils\nbrokage\nbrokages\nbroke\nbroken\nbrokenhearted\nbrokenly\nbrokenness\nbroker\nbrokerage\nbrokerages\nbrokers\nbrollies\nbrolly\nbromal\nbromals\nbromate\nbromated\nbromates\nbromating\nbrome\nbromelin\nbromelins\nbromes\nbromic\nbromid\nbromide\nbromides\nbromidic\nbromids\nbromin\nbromine\nbromines\nbromins\nbromism\nbromisms\nbromo\nbromos\nbronc\nbronchi\nbronchia\nbronchial\nbronchitis\nbroncho\nbronchos\nbronchus\nbronco\nbroncobuster\nbroncobusters\nbroncos\nbroncs\nbronze\nbronzed\nbronzer\nbronzers\nbronzes\nbronzier\nbronziest\nbronzing\nbronzings\nbronzy\nbroo\nbrooch\nbrooches\nbrood\nbrooded\nbrooder\nbrooders\nbroodier\nbroodiest\nbroodiness\nbrooding\nbroodingly\nbroods\nbroody\nbrook\nbrooked\nbrooking\nbrookite\nbrookites\nbrooklet\nbrooklets\nbrooks\nbroom\nbroomed\nbroomier\nbroomiest\nbrooming\nbrooms\nbroomstick\nbroomsticks\nbroomy\nbroos\nbrose\nbroses\nbrosy\nbroth\nbrothel\nbrothels\nbrother\nbrothered\nbrotherhood\nbrotherhoods\nbrothering\nbrotherliness\nbrotherly\nbrothers\nbroths\nbrothy\nbrougham\nbroughams\nbrought\nbrouhaha\nbrouhahas\nbrow\nbrowbeat\nbrowbeaten\nbrowbeating\nbrowbeats\nbrowless\nbrown\nbrowned\nbrowner\nbrownest\nbrownie\nbrownier\nbrownies\nbrowniest\nbrowning\nbrownish\nbrownout\nbrownouts\nbrowns\nbrownstone\nbrownstones\nbrowny\nbrows\nbrowse\nbrowsed\nbrowser\nbrowsers\nbrowses\nbrowsing\nbrr\nbrrr\nbrucella\nbrucellae\nbrucellas\nbrucin\nbrucine\nbrucines\nbrucins\nbrugh\nbrughs\nbruin\nbruins\nbruise\nbruised\nbruiser\nbruisers\nbruises\nbruising\nbruit\nbruited\nbruiter\nbruiters\nbruiting\nbruits\nbrulot\nbrulots\nbrulyie\nbrulyies\nbrulzie\nbrulzies\nbrumal\nbrumbies\nbrumby\nbrume\nbrumes\nbrumous\nbrunch\nbrunched\nbrunches\nbrunching\nbrunet\nbrunets\nbrunette\nbrunettes\nbrunizem\nbrunizems\nbrunt\nbrunts\nbrush\nbrushed\nbrusher\nbrushers\nbrushes\nbrushier\nbrushiest\nbrushing\nbrushoff\nbrushoffs\nbrushup\nbrushups\nbrushwork\nbrushworks\nbrushy\nbrusk\nbrusker\nbruskest\nbrusque\nbrusquely\nbrusqueness\nbrusquer\nbrusquest\nbrut\nbrutal\nbrutalities\nbrutality\nbrutalization\nbrutalizations\nbrutalize\nbrutalized\nbrutalizes\nbrutalizing\nbrutally\nbrute\nbruted\nbrutely\nbrutes\nbrutified\nbrutifies\nbrutify\nbrutifying\nbruting\nbrutish\nbrutishly\nbrutishness\nbrutism\nbrutisms\nbruxism\nbruxisms\nbryologies\nbryology\nbryonies\nbryony\nbryozoan\nbryozoans\nbub\nbubal\nbubale\nbubales\nbubaline\nbubalis\nbubalises\nbubals\nbubbies\nbubble\nbubbled\nbubbler\nbubblers\nbubbles\nbubblier\nbubblies\nbubbliest\nbubbling\nbubbly\nbubby\nbubinga\nbubingas\nbubo\nbuboed\nbuboes\nbubonic\nbubs\nbuccal\nbuccally\nbuccaneer\nbuccaneerish\nbuccaneers\nbuck\nbuckaroo\nbuckaroos\nbuckayro\nbuckayros\nbuckbean\nbuckbeans\nbuckboard\nbuckboards\nbucked\nbuckeen\nbuckeens\nbucker\nbuckeroo\nbuckeroos\nbuckers\nbucket\nbucketed\nbucketful\nbucketfuls\nbucketing\nbuckets\nbucketsful\nbuckeye\nbuckeyes\nbucking\nbuckish\nbuckle\nbuckled\nbuckler\nbucklered\nbucklering\nbucklers\nbuckles\nbuckling\nbucko\nbuckoes\nbuckra\nbuckram\nbuckramed\nbuckraming\nbuckrams\nbuckras\nbucks\nbucksaw\nbucksaws\nbuckshee\nbuckshees\nbuckshot\nbuckshots\nbuckskin\nbuckskins\nbucktail\nbucktails\nbuckteeth\nbuckthorn\nbuckthorns\nbucktooth\nbucktoothed\nbuckwheat\nbucolic\nbucolically\nbucolics\nbud\nbudded\nbudder\nbudders\nbuddies\nbudding\nbuddle\nbuddleia\nbuddleias\nbuddles\nbuddy\nbudge\nbudged\nbudger\nbudgerigar\nbudgerigars\nbudgers\nbudges\nbudget\nbudgetary\nbudgeted\nbudgeter\nbudgeters\nbudgeting\nbudgets\nbudgie\nbudgies\nbudging\nbudless\nbudlike\nbuds\nbuff\nbuffable\nbuffalo\nbuffaloed\nbuffaloes\nbuffaloing\nbuffalos\nbuffed\nbuffer\nbuffered\nbuffering\nbuffers\nbuffet\nbuffeted\nbuffeter\nbuffeters\nbuffeting\nbuffets\nbuffi\nbuffier\nbuffiest\nbuffing\nbuffo\nbuffoon\nbuffooneries\nbuffoonery\nbuffoonish\nbuffoons\nbuffos\nbuffs\nbuffy\nbug\nbugaboo\nbugaboos\nbugbane\nbugbanes\nbugbear\nbugbears\nbugeye\nbugeyes\nbugged\nbugger\nbuggered\nbuggeries\nbuggering\nbuggers\nbuggery\nbuggier\nbuggies\nbuggiest\nbugging\nbuggy\nbughouse\nbughouses\nbugle\nbugled\nbugler\nbuglers\nbugles\nbugling\nbugloss\nbuglosses\nbugs\nbugseed\nbugseeds\nbugsha\nbugshas\nbuhl\nbuhls\nbuhlwork\nbuhlworks\nbuhr\nbuhrs\nbuild\nbuildable\nbuilded\nbuilder\nbuilders\nbuilding\nbuildings\nbuilds\nbuildup\nbuildups\nbuilt\nbuirdly\nbulb\nbulbar\nbulbed\nbulbel\nbulbels\nbulbil\nbulbils\nbulbous\nbulbously\nbulbs\nbulbul\nbulbuls\nbulge\nbulged\nbulger\nbulgers\nbulges\nbulgier\nbulgiest\nbulging\nbulgur\nbulgurs\nbulgy\nbulimia\nbulimiac\nbulimias\nbulimic\nbulk\nbulkage\nbulkages\nbulked\nbulkhead\nbulkheads\nbulkier\nbulkiest\nbulkily\nbulkiness\nbulking\nbulks\nbulky\nbull\nbulla\nbullace\nbullaces\nbullae\nbullate\nbullbat\nbullbats\nbulldog\nbulldogged\nbulldogging\nbulldogs\nbulldoze\nbulldozed\nbulldozer\nbulldozers\nbulldozes\nbulldozing\nbulled\nbullet\nbulleted\nbulletin\nbulletined\nbulleting\nbulletining\nbulletins\nbulletproof\nbullets\nbullfight\nbullfighter\nbullfighters\nbullfighting\nbullfights\nbullfrog\nbullfrogs\nbullhead\nbullheaded\nbullheadedly\nbullheadedness\nbullheads\nbullhorn\nbullhorns\nbullied\nbullier\nbullies\nbulliest\nbulling\nbullion\nbullions\nbullish\nbullishly\nbullneck\nbullnecks\nbullnose\nbullnoses\nbullock\nbullocks\nbullocky\nbullous\nbullpen\nbullpens\nbullpout\nbullpouts\nbullring\nbullrings\nbullrush\nbullrushes\nbulls\nbullshit\nbullshits\nbullshitted\nbullshitting\nbullweed\nbullweeds\nbullwhip\nbullwhipped\nbullwhipping\nbullwhips\nbully\nbullyboy\nbullyboys\nbullying\nbullyrag\nbullyragged\nbullyragging\nbullyrags\nbulrush\nbulrushes\nbulwark\nbulwarked\nbulwarking\nbulwarks\nbum\nbumble\nbumblebee\nbumblebees\nbumbled\nbumbler\nbumblers\nbumbles\nbumbling\nbumblings\nbumboat\nbumboats\nbumf\nbumfs\nbumkin\nbumkins\nbummed\nbummer\nbummers\nbumming\nbump\nbumped\nbumper\nbumpered\nbumpering\nbumpers\nbumph\nbumpier\nbumpiest\nbumpily\nbumpiness\nbumping\nbumpkin\nbumpkins\nbumps\nbumptious\nbumptiously\nbumptiousness\nbumpy\nbums\nbun\nbunch\nbunched\nbunches\nbunchier\nbunchiest\nbunchily\nbunching\nbunchy\nbunco\nbuncoed\nbuncoing\nbuncombe\nbuncombes\nbuncos\nbund\nbundist\nbundists\nbundle\nbundled\nbundler\nbundlers\nbundles\nbundling\nbundlings\nbunds\nbundt\nbung\nbungalow\nbungalows\nbunged\nbunghole\nbungholes\nbunging\nbungle\nbungled\nbungler\nbunglers\nbungles\nbungling\nbunglingly\nbunglings\nbungs\nbunion\nbunions\nbunk\nbunked\nbunker\nbunkered\nbunkering\nbunkers\nbunkhouse\nbunkhouses\nbunking\nbunkmate\nbunkmates\nbunko\nbunkoed\nbunkoing\nbunkos\nbunks\nbunkum\nbunkums\nbunn\nbunnies\nbunns\nbunny\nbuns\nbunt\nbunted\nbunter\nbunters\nbunting\nbuntings\nbuntline\nbuntlines\nbunts\nbunya\nbunyas\nbuoy\nbuoyage\nbuoyages\nbuoyance\nbuoyances\nbuoyancies\nbuoyancy\nbuoyant\nbuoyantly\nbuoyed\nbuoying\nbuoys\nbuqsha\nbuqshas\nbur\nbura\nburan\nburans\nburas\nburble\nburbled\nburbler\nburblers\nburbles\nburblier\nburbliest\nburbling\nburbly\nburbot\nburbots\nburbs\nburd\nburden\nburdened\nburdener\nburdeners\nburdening\nburdens\nburdensome\nburdie\nburdies\nburdock\nburdocks\nburds\nbureau\nbureaucracies\nbureaucracy\nbureaucrat\nbureaucratic\nbureaucratically\nbureaucratization\nbureaucratizations\nbureaucratize\nbureaucratized\nbureaucratizes\nbureaucratizing\nbureaucrats\nbureaus\nbureaux\nburet\nburets\nburette\nburettes\nburg\nburgage\nburgages\nburgee\nburgees\nburgeon\nburgeoned\nburgeoning\nburgeons\nburger\nburgers\nburgess\nburgesses\nburgh\nburghal\nburgher\nburghers\nburghs\nburglar\nburglaries\nburglarious\nburglarize\nburglarized\nburglarizes\nburglarizing\nburglars\nburglary\nburgle\nburgled\nburgles\nburgling\nburgomaster\nburgomasters\nburgonet\nburgonets\nburgoo\nburgoos\nburgout\nburgouts\nburgrave\nburgraves\nburgs\nburgundies\nburgundy\nburial\nburials\nburied\nburier\nburiers\nburies\nburin\nburins\nburke\nburked\nburker\nburkers\nburkes\nburking\nburkite\nburkites\nburl\nburlap\nburlaps\nburled\nburler\nburlers\nburlesk\nburlesks\nburlesque\nburlesqued\nburlesquer\nburlesquers\nburlesques\nburlesquing\nburley\nburleys\nburlier\nburliest\nburlily\nburliness\nburling\nburls\nburly\nburn\nburnable\nburned\nburner\nburners\nburnet\nburnets\nburnie\nburnies\nburning\nburningly\nburnings\nburnish\nburnished\nburnisher\nburnishers\nburnishes\nburnishing\nburnoose\nburnooses\nburnous\nburnouses\nburnout\nburnouts\nburns\nburnt\nburp\nburped\nburping\nburps\nburr\nburred\nburrer\nburrers\nburrier\nburriest\nburring\nburro\nburros\nburrow\nburrowed\nburrower\nburrowers\nburrowing\nburrows\nburrs\nburry\nburs\nbursa\nbursae\nbursal\nbursar\nbursaries\nbursars\nbursary\nbursas\nbursate\nburse\nburseed\nburseeds\nburses\nbursitis\nbursitises\nburst\nbursted\nburster\nbursters\nbursting\nburstone\nburstones\nbursts\nburthen\nburthened\nburthening\nburthens\nburton\nburtons\nburweed\nburweeds\nbury\nburying\nbus\nbusbies\nbusboy\nbusboys\nbusby\nbused\nbuses\nbush\nbushbodies\nbushbuck\nbushbucks\nbushed\nbushel\nbusheled\nbusheler\nbushelers\nbusheling\nbushelled\nbushelling\nbushels\nbusher\nbushers\nbushes\nbushfire\nbushfires\nbushgoat\nbushgoats\nbushido\nbushidos\nbushier\nbushiest\nbushily\nbushiness\nbushing\nbushings\nbushland\nbushlands\nbushless\nbushlike\nbushman\nbushmen\nbushtit\nbushtits\nbushwhack\nbushwhacked\nbushwhacker\nbushwhackers\nbushwhacking\nbushwhacks\nbushy\nbusied\nbusier\nbusies\nbusiest\nbusily\nbusiness\nbusinesses\nbusinesslike\nbusinessman\nbusinessmen\nbusinesswoman\nbusinesswomen\nbusing\nbusings\nbusk\nbusked\nbusker\nbuskers\nbuskin\nbuskined\nbusking\nbuskins\nbusks\nbusman\nbusmen\nbuss\nbussed\nbusses\nbussing\nbussings\nbust\nbustard\nbustards\nbusted\nbuster\nbusters\nbustic\nbustics\nbustier\nbustiest\nbusting\nbustle\nbustled\nbustles\nbustling\nbusts\nbusty\nbusulfan\nbusulfans\nbusy\nbusybodies\nbusybody\nbusying\nbusyness\nbusynesses\nbusywork\nbusyworks\nbut\nbutane\nbutanes\nbutanol\nbutanols\nbutanone\nbutanones\nbutch\nbutcher\nbutchered\nbutcheries\nbutchering\nbutchers\nbutchery\nbutches\nbutene\nbutenes\nbuteo\nbuteos\nbutle\nbutler\nbutleries\nbutlers\nbutlery\nbuts\nbutt\nbuttals\nbutte\nbutted\nbutter\nbuttercup\nbuttercups\nbuttered\nbutterfat\nbutterfingered\nbutterfingers\nbutterflies\nbutterfly\nbutterier\nbutteries\nbutteriest\nbuttering\nbuttermilk\nbutternut\nbutternuts\nbutters\nbutterscotch\nbuttery\nbuttes\nbutties\nbutting\nbuttock\nbuttocks\nbutton\nbuttoned\nbuttoner\nbuttoners\nbuttonhole\nbuttonholed\nbuttonholer\nbuttonholers\nbuttonholes\nbuttonholing\nbuttoning\nbuttons\nbuttony\nbuttress\nbuttressed\nbuttresses\nbuttressing\nbutts\nbutty\nbutut\nbututs\nbutyl\nbutylate\nbutylated\nbutylates\nbutylating\nbutylene\nbutylenes\nbutyls\nbutyral\nbutyrals\nbutyrate\nbutyrates\nbutyric\nbutyrin\nbutyrins\nbutyrous\nbutyryl\nbutyryls\nbuxom\nbuxomer\nbuxomest\nbuxomly\nbuxomness\nbuy\nbuyable\nbuyer\nbuyers\nbuying\nbuys\nbuzz\nbuzzard\nbuzzards\nbuzzed\nbuzzer\nbuzzers\nbuzzes\nbuzzing\nbuzzwig\nbuzzwigs\nbuzzword\nbuzzwords\nbwana\nbwanas\nby\nbye\nbyelaw\nbyelaws\nbyes\nbygone\nbygones\nbylaw\nbylaws\nbyline\nbylined\nbyliner\nbyliners\nbylines\nbylining\nbyname\nbynames\nbypass\nbypassed\nbypasses\nbypassing\nbypast\nbypath\nbypaths\nbyplay\nbyplays\nbyre\nbyres\nbyrl\nbyrled\nbyrling\nbyrls\nbyrnie\nbyrnies\nbyroad\nbyroads\nbys\nbyssi\nbyssus\nbyssuses\nbystander\nbystanders\nbystreet\nbystreets\nbytalk\nbytalks\nbyte\nbytes\nbyway\nbyways\nbyword\nbywords\nbywork\nbyworks\nbyzant\nbyzants\ncab\ncabal\ncabala\ncabalas\ncabalism\ncabalisms\ncabalist\ncabalistic\ncabalists\ncaballed\ncaballero\ncaballeros\ncaballing\ncabals\ncabana\ncabanas\ncabaret\ncabarets\ncabbage\ncabbaged\ncabbages\ncabbaging\ncabbala\ncabbalah\ncabbalahs\ncabbalas\ncabbie\ncabbies\ncabby\ncabdriver\ncabdrivers\ncaber\ncabers\ncabestro\ncabestros\ncabezon\ncabezone\ncabezones\ncabezons\ncabildo\ncabildos\ncabin\ncabined\ncabinet\ncabinetmaker\ncabinetmakers\ncabinets\ncabinetwork\ncabinetworks\ncabining\ncabins\ncable\ncabled\ncablegram\ncablegrams\ncables\ncablet\ncablets\ncableway\ncableways\ncabling\ncabman\ncabmen\ncabob\ncabobs\ncaboched\ncabochon\ncabochons\ncaboodle\ncaboodles\ncaboose\ncabooses\ncaboshed\ncabotage\ncabotages\ncabresta\ncabrestas\ncabresto\ncabrestos\ncabretta\ncabrettas\ncabrilla\ncabrillas\ncabriole\ncabrioles\ncabs\ncabstand\ncabstands\ncaca\ncacao\ncacaos\ncacas\ncachalot\ncachalots\ncache\ncached\ncachepot\ncachepots\ncaches\ncachet\ncachets\ncachexia\ncachexias\ncachexic\ncachexies\ncachexy\ncaching\ncachou\ncachous\ncachucha\ncachuchas\ncacique\ncaciques\ncackle\ncackled\ncackler\ncacklers\ncackles\ncackling\ncacodyl\ncacodyls\ncacomixl\ncacomixls\ncacophonies\ncacophonous\ncacophony\ncacti\ncactoid\ncactus\ncactuses\ncad\ncadaster\ncadasters\ncadastre\ncadastres\ncadaver\ncadaverous\ncadaverously\ncadavers\ncaddice\ncaddices\ncaddie\ncaddied\ncaddies\ncaddis\ncaddises\ncaddish\ncaddishly\ncaddishness\ncaddy\ncaddying\ncade\ncadelle\ncadelles\ncadence\ncadenced\ncadences\ncadencies\ncadencing\ncadency\ncadent\ncadenza\ncadenzas\ncades\ncadet\ncadets\ncadge\ncadged\ncadger\ncadgers\ncadges\ncadging\ncadgy\ncadi\ncadis\ncadmic\ncadmium\ncadmiums\ncadre\ncadres\ncads\ncaducean\ncaducei\ncaduceus\ncaducities\ncaducity\ncaducous\ncaecaeca\ncaecal\ncaecally\ncaecum\ncaeoma\ncaeomas\ncaesium\ncaesiums\ncaestus\ncaestuses\ncaesura\ncaesurae\ncaesural\ncaesuras\ncaesuric\ncafe\ncafes\ncafeteria\ncafeterias\ncaffein\ncaffeine\ncaffeines\ncaffeins\ncaftan\ncaftans\ncage\ncaged\ncageling\ncagelings\ncager\ncages\ncagey\ncagier\ncagiest\ncagily\ncaginess\ncaginesses\ncaging\ncagy\ncahier\ncahiers\ncahoot\ncahoots\ncahow\ncahows\ncaid\ncaids\ncaiman\ncaimans\ncain\ncains\ncaique\ncaiques\ncaird\ncairds\ncairn\ncairned\ncairns\ncairny\ncaisson\ncaissons\ncaitiff\ncaitiffs\ncajaput\ncajaputs\ncajeput\ncajeputs\ncajole\ncajoled\ncajoler\ncajoleries\ncajolers\ncajolery\ncajoles\ncajoling\ncajon\ncajones\ncajuput\ncajuputs\ncake\ncaked\ncakes\ncakewalk\ncakewalked\ncakewalking\ncakewalks\ncakey\ncaking\ncaky\ncalabash\ncalabashes\ncalaboose\ncalabooses\ncaladium\ncaladiums\ncalamar\ncalamaries\ncalamars\ncalamary\ncalami\ncalamine\ncalamined\ncalamines\ncalamining\ncalamint\ncalamints\ncalamite\ncalamites\ncalamities\ncalamitous\ncalamitously\ncalamitousness\ncalamity\ncalamus\ncalando\ncalash\ncalashes\ncalathi\ncalathos\ncalathus\ncalcanea\ncalcanei\ncalcar\ncalcareous\ncalcareously\ncalcareousness\ncalcaria\ncalcars\ncalceate\ncalces\ncalcic\ncalcific\ncalcification\ncalcifications\ncalcified\ncalcifies\ncalcify\ncalcifying\ncalcimine\ncalcimined\ncalcimines\ncalcimining\ncalcination\ncalcinations\ncalcine\ncalcined\ncalcines\ncalcining\ncalcite\ncalcites\ncalcitic\ncalcium\ncalciums\ncalcspar\ncalcspars\ncalctufa\ncalctufas\ncalctuff\ncalctuffs\ncalculable\ncalculably\ncalculate\ncalculated\ncalculatedly\ncalculates\ncalculating\ncalculatingly\ncalculation\ncalculations\ncalculative\ncalculator\ncalculators\ncalculi\ncalculus\ncalculuses\ncaldera\ncalderas\ncaldron\ncaldrons\ncaleche\ncaleches\ncalendal\ncalendar\ncalendared\ncalendaring\ncalendars\ncalender\ncalendered\ncalendering\ncalenders\ncalends\ncalesa\ncalesas\ncalf\ncalflike\ncalfs\ncalfskin\ncalfskins\ncaliber\ncalibered\ncalibers\ncalibrate\ncalibrated\ncalibrates\ncalibrating\ncalibration\ncalibrations\ncalibrator\ncalibrators\ncalibre\ncalibred\ncalibres\ncalices\ncaliche\ncaliches\ncalicle\ncalicles\ncalico\ncalicoes\ncalicos\ncalif\ncalifate\ncalifates\ncalifs\ncalipash\ncalipashes\ncalipee\ncalipees\ncaliper\ncalipered\ncalipering\ncalipers\ncaliph\ncaliphal\ncaliphate\ncaliphates\ncaliphs\ncalisaya\ncalisayas\ncalisthenic\ncalisthenics\ncalix\ncalk\ncalked\ncalker\ncalkers\ncalkin\ncalking\ncalkins\ncalks\ncall\ncalla\ncallable\ncallan\ncallans\ncallant\ncallants\ncallas\ncallback\ncallbacks\ncallboy\ncallboys\ncalled\ncaller\ncallers\ncallet\ncallets\ncalligrapher\ncalligraphers\ncalligraphic\ncalligraphically\ncalligraphy\ncalling\ncallings\ncalliope\ncalliopes\ncallipee\ncallipees\ncalliper\ncallipered\ncallipering\ncallipers\ncallose\ncalloses\ncallosities\ncallosity\ncallous\ncalloused\ncallouses\ncallousing\ncallously\ncallousness\ncallow\ncallower\ncallowest\ncallowness\ncalls\ncallus\ncallused\ncalluses\ncallusing\ncalm\ncalmed\ncalmer\ncalmest\ncalming\ncalmly\ncalmness\ncalmnesses\ncalms\ncalomel\ncalomels\ncaloric\ncalorically\ncalorics\ncalorie\ncalories\ncalorific\ncalorimeter\ncalorimeters\ncalorimetric\ncalorimetrically\ncalory\ncalotte\ncalottes\ncaloyer\ncaloyers\ncalpac\ncalpack\ncalpacks\ncalpacs\ncalque\ncalqued\ncalques\ncalquing\ncalthrop\ncalthrops\ncaltrap\ncaltraps\ncaltrop\ncaltrops\ncalumet\ncalumets\ncalumniate\ncalumniated\ncalumniates\ncalumniating\ncalumniation\ncalumniations\ncalumniator\ncalumniators\ncalumnies\ncalumnious\ncalumniously\ncalumny\ncalutron\ncalutrons\ncalvados\ncalvadoses\ncalvaria\ncalvarias\ncalvaries\ncalvary\ncalve\ncalved\ncalves\ncalving\ncalx\ncalxes\ncalycate\ncalyceal\ncalyces\ncalycine\ncalycle\ncalycles\ncalyculi\ncalypso\ncalypsoes\ncalypsos\ncalypter\ncalypters\ncalyptra\ncalyptras\ncalyx\ncalyxes\ncam\ncamail\ncamailed\ncamails\ncamaraderie\ncamaraderies\ncamas\ncamases\ncamass\ncamasses\ncamber\ncambered\ncambering\ncambers\ncambia\ncambial\ncambism\ncambisms\ncambist\ncambists\ncambium\ncambiums\ncambogia\ncambogias\ncambric\ncambrics\ncame\ncamel\ncameleer\ncameleers\ncamelia\ncamelias\ncamellia\ncamellias\ncamels\ncameo\ncameoed\ncameoing\ncameos\ncamera\ncamerae\ncameral\ncameraman\ncameramen\ncameras\ncamerawoman\ncamerawomen\ncames\ncamion\ncamions\ncamisa\ncamisade\ncamisades\ncamisado\ncamisadoes\ncamisados\ncamisas\ncamise\ncamises\ncamisia\ncamisias\ncamisole\ncamisoles\ncamlet\ncamlets\ncamomile\ncamomiles\ncamorra\ncamorras\ncamouflage\ncamouflaged\ncamouflages\ncamouflaging\ncamp\ncampagna\ncampagne\ncampaign\ncampaigned\ncampaigner\ncampaigners\ncampaigning\ncampaigns\ncampanile\ncampaniles\ncampanili\ncamped\ncamper\ncampers\ncampfire\ncampfires\ncampground\ncampgrounds\ncamphene\ncamphenes\ncamphine\ncamphines\ncamphol\ncamphols\ncamphor\ncamphorate\ncamphorated\ncamphorates\ncamphorating\ncamphors\ncampi\ncampier\ncampiest\ncampily\ncamping\ncampings\ncampion\ncampions\ncampo\ncampong\ncampongs\ncamporee\ncamporees\ncampos\ncamps\ncampsite\ncampsites\ncampus\ncampuses\ncampy\ncams\ncamshaft\ncamshafts\ncan\ncanaille\ncanailles\ncanakin\ncanakins\ncanal\ncanaled\ncanaling\ncanalise\ncanalised\ncanalises\ncanalising\ncanalization\ncanalizations\ncanalize\ncanalized\ncanalizes\ncanalizing\ncanalled\ncanaller\ncanallers\ncanalling\ncanals\ncanape\ncanapes\ncanard\ncanards\ncanaries\ncanary\ncanasta\ncanastas\ncancan\ncancans\ncancel\ncancelable\ncanceled\ncanceler\ncancelers\ncanceling\ncancellable\ncancellation\ncancellations\ncancelled\ncanceller\ncancellers\ncancelling\ncancels\ncancer\ncancerous\ncancerously\ncancers\ncancha\ncanchas\ncancroid\ncancroids\ncandela\ncandelabra\ncandelabras\ncandelabrum\ncandelabrums\ncandelas\ncandent\ncandescent\ncandid\ncandida\ncandidacies\ncandidacy\ncandidas\ncandidate\ncandidates\ncandider\ncandidest\ncandidly\ncandidness\ncandids\ncandied\ncandies\ncandle\ncandled\ncandlelight\ncandlelights\ncandler\ncandlers\ncandles\ncandlestick\ncandlesticks\ncandling\ncandor\ncandors\ncandour\ncandours\ncandy\ncandying\ncane\ncaned\ncanella\ncanellas\ncaner\ncaners\ncanes\ncaneware\ncanewares\ncanfield\ncanfields\ncanful\ncanfuls\ncangue\ncangues\ncanid\ncanikin\ncanikins\ncanine\ncanines\ncaning\ncaninities\ncaninity\ncanister\ncanisters\ncanities\ncanker\ncankered\ncankering\ncankerous\ncankers\ncanna\ncannabic\ncannabin\ncannabins\ncannabis\ncannabises\ncannas\ncanned\ncannel\ncannelon\ncannelons\ncannels\ncanner\ncanneries\ncanners\ncannery\ncannibal\ncannibalism\ncannibalistic\ncannibalize\ncannibalized\ncannibalizes\ncannibalizing\ncannibals\ncannie\ncannier\ncanniest\ncannikin\ncannikins\ncannily\ncanniness\ncanning\ncannings\ncannon\ncannonade\ncannonaded\ncannonades\ncannonading\ncannonball\ncannonballs\ncannoned\ncannoneer\ncannoneering\ncannoneers\ncannoning\ncannonries\ncannonry\ncannons\ncannot\ncannula\ncannulae\ncannular\ncannulas\ncanny\ncanoe\ncanoed\ncanoeing\ncanoeist\ncanoeists\ncanoes\ncanon\ncanoness\ncanonesses\ncanonic\ncanonical\ncanonically\ncanonicals\ncanonicity\ncanonise\ncanonised\ncanonises\ncanonising\ncanonist\ncanonists\ncanonization\ncanonizations\ncanonize\ncanonized\ncanonizes\ncanonizing\ncanonries\ncanonry\ncanons\ncanopied\ncanopies\ncanopy\ncanopying\ncanorous\ncans\ncansful\ncanso\ncansos\ncanst\ncant\ncantala\ncantalas\ncantaloupe\ncantaloupes\ncantankerous\ncantankerously\ncantankerousness\ncantata\ncantatas\ncantdog\ncantdogs\ncanted\ncanteen\ncanteens\ncanter\ncantered\ncantering\ncanters\ncanthal\ncanthi\ncanthus\ncantic\ncanticle\ncanticles\ncantilever\ncantilevers\ncantina\ncantinas\ncanting\ncantle\ncantles\ncanto\ncanton\ncantonal\ncantoned\ncantoning\ncantonment\ncantonments\ncantons\ncantor\ncantors\ncantos\ncantraip\ncantraips\ncantrap\ncantraps\ncantrip\ncantrips\ncants\ncantus\ncanty\ncanula\ncanulae\ncanulas\ncanulate\ncanulated\ncanulates\ncanulating\ncanvas\ncanvased\ncanvaser\ncanvasers\ncanvases\ncanvasing\ncanvass\ncanvassed\ncanvasser\ncanvassers\ncanvasses\ncanvassing\ncanyon\ncanyons\ncanzona\ncanzonas\ncanzone\ncanzones\ncanzonet\ncanzonets\ncanzoni\ncap\ncapabilities\ncapability\ncapable\ncapabler\ncapablest\ncapably\ncapacious\ncapaciously\ncapaciousness\ncapacitance\ncapacitances\ncapacities\ncapacitive\ncapacitor\ncapacitors\ncapacity\ncaparison\ncaparisons\ncape\ncaped\ncapelan\ncapelans\ncapelet\ncapelets\ncapelin\ncapelins\ncaper\ncapered\ncaperer\ncaperers\ncapering\ncapers\ncapes\ncapeskin\ncapeskins\ncapework\ncapeworks\ncapful\ncapfuls\ncaph\ncaphs\ncapias\ncapiases\ncapillaries\ncapillary\ncapita\ncapital\ncapitalism\ncapitalist\ncapitalistic\ncapitalistically\ncapitalists\ncapitalization\ncapitalizations\ncapitalize\ncapitalized\ncapitalizes\ncapitalizing\ncapitally\ncapitals\ncapitate\ncapitation\ncapitations\ncapitol\ncapitols\ncapitula\ncapitulate\ncapitulated\ncapitulates\ncapitulating\ncapitulation\ncapitulations\ncapless\ncaplin\ncaplins\ncapmaker\ncapmakers\ncapo\ncapon\ncaponier\ncaponiers\ncaponize\ncaponized\ncaponizes\ncaponizing\ncapons\ncaporal\ncaporals\ncapos\ncapote\ncapotes\ncapouch\ncapouches\ncapped\ncapper\ncappers\ncapping\ncappings\ncapric\ncapricci\ncapriccio\ncapriccios\ncaprice\ncaprices\ncapricious\ncapriciously\ncapriciousness\ncaprifig\ncaprifigs\ncaprine\ncapriole\ncaprioled\ncaprioles\ncaprioling\ncaps\ncapsicin\ncapsicins\ncapsicum\ncapsicums\ncapsid\ncapsidal\ncapsids\ncapsize\ncapsized\ncapsizes\ncapsizing\ncapstan\ncapstans\ncapstone\ncapstones\ncapsular\ncapsulate\ncapsulated\ncapsule\ncapsuled\ncapsules\ncapsuling\ncaptain\ncaptaincies\ncaptaincy\ncaptained\ncaptaining\ncaptains\ncaptainship\ncaptan\ncaptans\ncaption\ncaptioned\ncaptioning\ncaptions\ncaptious\ncaptiously\ncaptiousness\ncaptivate\ncaptivated\ncaptivates\ncaptivating\ncaptivation\ncaptivations\ncaptivator\ncaptivators\ncaptive\ncaptives\ncaptivities\ncaptivity\ncaptor\ncaptors\ncapture\ncaptured\ncapturer\ncapturers\ncaptures\ncapturing\ncapuche\ncapuched\ncapuches\ncapuchin\ncapuchins\ncaput\ncapybara\ncapybaras\ncar\ncarabao\ncarabaos\ncarabid\ncarabids\ncarabin\ncarabine\ncarabines\ncarabins\ncaracal\ncaracals\ncaracara\ncaracaras\ncarack\ncaracks\ncaracol\ncaracole\ncaracoled\ncaracoles\ncaracoling\ncaracolled\ncaracolling\ncaracols\ncaracul\ncaraculs\ncarafe\ncarafes\ncaragana\ncaraganas\ncarageen\ncarageens\ncaramel\ncaramelize\ncaramelized\ncaramelizes\ncaramelizing\ncaramels\ncarangid\ncarangids\ncarapace\ncarapaces\ncarapax\ncarapaxes\ncarassow\ncarassows\ncarat\ncarate\ncarates\ncarats\ncaravan\ncaravaned\ncaravaning\ncaravanned\ncaravanning\ncaravans\ncaravansaries\ncaravansary\ncaravanserai\ncaravanserais\ncaravel\ncaravels\ncaraway\ncaraways\ncarb\ncarbamic\ncarbamyl\ncarbamyls\ncarbarn\ncarbarns\ncarbaryl\ncarbaryls\ncarbide\ncarbides\ncarbine\ncarbines\ncarbinol\ncarbinols\ncarbohydrate\ncarbohydrates\ncarbon\ncarbonate\ncarbonated\ncarbonates\ncarbonating\ncarbonation\ncarbonations\ncarbonic\ncarbonization\ncarbonize\ncarbonized\ncarbonizes\ncarbonizing\ncarbons\ncarbonyl\ncarbonyls\ncarbora\ncarboras\ncarboxyl\ncarboxyls\ncarboy\ncarboyed\ncarboys\ncarbs\ncarbuncle\ncarbuncled\ncarbuncles\ncarburet\ncarbureted\ncarbureter\ncarburetest\ncarbureting\ncarburetor\ncarburetors\ncarburets\ncarburetted\ncarburetting\ncarcajou\ncarcajous\ncarcanet\ncarcanets\ncarcase\ncarcases\ncarcass\ncarcasses\ncarcel\ncarcels\ncarcinogen\ncarcinogenic\ncarcinogenicity\ncarcinogens\ncarcinoma\ncarcinomas\ncarcinomata\ncard\ncardamom\ncardamoms\ncardamon\ncardamons\ncardamum\ncardamums\ncardboard\ncardboards\ncardcase\ncardcases\ncarded\ncarder\ncarders\ncardia\ncardiac\ncardiacs\ncardiae\ncardias\ncardigan\ncardigans\ncardinal\ncardinally\ncardinals\ncarding\ncardings\ncardiogram\ncardiograms\ncardiograph\ncardiographic\ncardiographs\ncardiography\ncardioid\ncardioids\ncardiologist\ncardiologists\ncardiology\ncardiovascular\ncarditic\ncarditis\ncarditises\ncardoon\ncardoons\ncards\ncardsharp\ncardsharper\ncardsharpers\ncardsharps\ncare\ncared\ncareen\ncareened\ncareener\ncareeners\ncareening\ncareens\ncareer\ncareered\ncareerer\ncareerers\ncareering\ncareers\ncarefree\ncareful\ncarefuller\ncarefullest\ncarefully\ncarefulness\ncareless\ncarelessly\ncarelessness\ncarer\ncarers\ncares\ncaress\ncaressed\ncaresser\ncaressers\ncaresses\ncaressing\ncaressingly\ncaressive\ncaressively\ncaret\ncaretaker\ncaretakers\ncarets\ncareworn\ncarex\ncarfare\ncarfares\ncarful\ncarfuls\ncargo\ncargoes\ncargos\ncarhop\ncarhops\ncaribe\ncaribes\ncaribou\ncaribous\ncaricature\ncaricatured\ncaricatures\ncaricaturing\ncaricaturist\ncaricaturists\ncarices\ncaried\ncaries\ncarillon\ncarillonned\ncarillonneur\ncarillonneurs\ncarillonning\ncarillons\ncarina\ncarinae\ncarinal\ncarinas\ncarinate\ncaring\ncarioca\ncariocas\ncariole\ncarioles\ncarious\ncark\ncarked\ncarking\ncarks\ncarl\ncarle\ncarles\ncarless\ncarlin\ncarline\ncarlines\ncarling\ncarlings\ncarlins\ncarlish\ncarload\ncarloads\ncarls\ncarmaker\ncarmakers\ncarman\ncarmen\ncarminative\ncarminatives\ncarmine\ncarmines\ncarn\ncarnage\ncarnages\ncarnal\ncarnality\ncarnally\ncarnation\ncarnations\ncarnauba\ncarnaubas\ncarney\ncarneys\ncarnie\ncarnies\ncarnified\ncarnifies\ncarnify\ncarnifying\ncarnival\ncarnivals\ncarnivore\ncarnivores\ncarnivorous\ncarnivorously\ncarnivorousness\ncarnotite\ncarnotites\ncarns\ncarny\ncaroach\ncaroaches\ncarob\ncarobs\ncaroch\ncaroche\ncaroches\ncarol\ncaroled\ncaroler\ncarolers\ncaroli\ncaroling\ncarolled\ncaroller\ncarollers\ncarolling\ncarols\ncarolus\ncaroluses\ncarom\ncaromed\ncaroming\ncaroms\ncarotene\ncarotenes\ncarotid\ncarotids\ncarotin\ncarotins\ncarousal\ncarousals\ncarouse\ncaroused\ncarousel\ncarousels\ncarouser\ncarousers\ncarouses\ncarousing\ncarp\ncarpal\ncarpale\ncarpalia\ncarpals\ncarped\ncarpel\ncarpels\ncarpenter\ncarpentered\ncarpentering\ncarpenters\ncarpentry\ncarper\ncarpers\ncarpet\ncarpetbag\ncarpetbagged\ncarpetbagger\ncarpetbaggers\ncarpetbagging\ncarpetbags\ncarpeted\ncarpeting\ncarpets\ncarpi\ncarping\ncarpingly\ncarpings\ncarport\ncarports\ncarps\ncarpus\ncarrack\ncarracks\ncarrel\ncarrell\ncarrells\ncarrels\ncarriage\ncarriages\ncarried\ncarrier\ncarriers\ncarries\ncarriole\ncarrioles\ncarrion\ncarrions\ncarritch\ncarritches\ncarroch\ncarroches\ncarrom\ncarromed\ncarroming\ncarroms\ncarrot\ncarrotier\ncarrotiest\ncarrotin\ncarrotins\ncarrots\ncarroty\ncarrousel\ncarrousels\ncarry\ncarryall\ncarryalls\ncarrying\ncarryon\ncarryons\ncarryout\ncarryouts\ncars\ncarse\ncarses\ncarsick\ncart\ncartable\ncartage\ncartages\ncarte\ncarted\ncartel\ncartels\ncarter\ncarters\ncartes\ncartilage\ncartilaginous\ncarting\ncartload\ncartloads\ncartographer\ncartographers\ncartographic\ncartography\ncarton\ncartoned\ncartoning\ncartons\ncartoon\ncartooned\ncartooning\ncartoonist\ncartoonists\ncartoons\ncartop\ncartouch\ncartouches\ncartridge\ncartridges\ncarts\ncartwheel\ncartwheels\ncaruncle\ncaruncles\ncarve\ncarved\ncarvel\ncarvels\ncarven\ncarver\ncarvers\ncarves\ncarving\ncarvings\ncaryatid\ncaryatides\ncaryatids\ncaryotin\ncaryotins\ncasa\ncasaba\ncasabas\ncasas\ncasava\ncasavas\ncascabel\ncascabels\ncascable\ncascables\ncascade\ncascaded\ncascades\ncascading\ncascara\ncascaras\ncase\ncasease\ncaseases\ncaseate\ncaseated\ncaseates\ncaseating\ncasebook\ncasebooks\ncased\ncasefied\ncasefies\ncasefy\ncasefying\ncaseic\ncasein\ncaseins\ncasemate\ncasemates\ncasement\ncasements\ncaseose\ncaseoses\ncaseous\ncasern\ncaserne\ncasernes\ncaserns\ncases\ncasette\ncasettes\ncasework\ncaseworker\ncaseworkers\ncaseworks\ncaseworm\ncaseworms\ncash\ncashable\ncashaw\ncashaws\ncashbook\ncashbooks\ncashbox\ncashboxes\ncashed\ncashes\ncashew\ncashews\ncashier\ncashiered\ncashiering\ncashiers\ncashing\ncashless\ncashmere\ncashmeres\ncashoo\ncashoos\ncasimere\ncasimeres\ncasimire\ncasimires\ncasing\ncasings\ncasino\ncasinos\ncask\ncasked\ncasket\ncasketed\ncasketing\ncaskets\ncasking\ncasks\ncasky\ncasque\ncasqued\ncasques\ncassaba\ncassabas\ncassava\ncassavas\ncasserole\ncasseroles\ncassette\ncassettes\ncassia\ncassias\ncassino\ncassinos\ncassis\ncassises\ncassock\ncassocks\ncast\ncastanet\ncastanets\ncastaway\ncastaways\ncaste\ncasteism\ncasteisms\ncastellated\ncaster\ncasters\ncastes\ncastigate\ncastigated\ncastigates\ncastigating\ncastigation\ncastigations\ncastigator\ncastigators\ncasting\ncastings\ncastle\ncastled\ncastles\ncastling\ncastoff\ncastoffs\ncastor\ncastors\ncastrate\ncastrated\ncastrates\ncastrati\ncastrating\ncastration\ncastrations\ncastrato\ncasts\ncasual\ncasually\ncasualness\ncasuals\ncasualties\ncasualty\ncasuist\ncasuistic\ncasuistries\ncasuistry\ncasuists\ncasus\ncat\ncatabolic\ncatabolism\ncataclysm\ncataclysmal\ncataclysmic\ncataclysms\ncatacomb\ncatacombs\ncatafalque\ncatafalques\ncatalase\ncatalases\ncataleptic\ncataleptics\ncatalo\ncataloes\ncatalog\ncataloged\ncataloger\ncatalogers\ncataloging\ncatalogs\ncatalogue\ncatalogued\ncataloguer\ncataloguers\ncatalogues\ncataloguing\ncatalos\ncatalpa\ncatalpas\ncatalyses\ncatalysis\ncatalyst\ncatalysts\ncatalytic\ncatalytically\ncatalyze\ncatalyzed\ncatalyzes\ncatalyzing\ncatamaran\ncatamarans\ncatamite\ncatamites\ncatamount\ncatamounts\ncatapult\ncatapulted\ncatapulting\ncatapults\ncataract\ncataracts\ncatarrh\ncatarrhal\ncatarrhs\ncatastrophe\ncatastrophes\ncatastrophic\ncatastrophically\ncatbird\ncatbirds\ncatboat\ncatboats\ncatbrier\ncatbriers\ncatcall\ncatcalled\ncatcalling\ncatcalls\ncatch\ncatchable\ncatchall\ncatchalls\ncatcher\ncatchers\ncatches\ncatchflies\ncatchfly\ncatchier\ncatchiest\ncatching\ncatchpennies\ncatchpenny\ncatchup\ncatchups\ncatchword\ncatchwords\ncatchy\ncate\ncatechin\ncatechins\ncatechism\ncatechismal\ncatechisms\ncatechist\ncatechistic\ncatechists\ncatechize\ncatechized\ncatechizer\ncatechizers\ncatechizes\ncatechizing\ncatechol\ncatechols\ncatechu\ncatechumen\ncatechumens\ncatechus\ncategorical\ncategorically\ncategories\ncategorization\ncategorizations\ncategorize\ncategorized\ncategorizes\ncategorizing\ncategory\ncatena\ncatenae\ncatenaries\ncatenary\ncatenas\ncatenate\ncatenated\ncatenates\ncatenating\ncatenation\ncatenations\ncatenoid\ncatenoids\ncater\ncateran\ncaterans\ncatered\ncaterer\ncaterers\ncateress\ncateresses\ncatering\ncaterpillar\ncaterpillars\ncaters\ncaterwaul\ncaterwauled\ncaterwauling\ncaterwauls\ncates\ncatface\ncatfaces\ncatfall\ncatfalls\ncatfish\ncatfishes\ncatgut\ncatguts\ncathartic\ncathead\ncatheads\ncathect\ncathected\ncathecting\ncathects\ncathedra\ncathedrae\ncathedral\ncathedrals\ncathedras\ncatheter\ncatheters\ncathexes\ncathexis\ncathode\ncathodes\ncathodic\ncatholic\ncatholically\ncatholicity\ncatholicize\ncatholicized\ncatholicizes\ncatholicizing\ncathouse\ncathouses\ncation\ncationic\ncations\ncatkin\ncatkins\ncatlike\ncatlin\ncatling\ncatlings\ncatlins\ncatmint\ncatmints\ncatnap\ncatnaper\ncatnapers\ncatnapped\ncatnapping\ncatnaps\ncatnip\ncatnips\ncats\ncatspaw\ncatspaws\ncatsup\ncatsups\ncattail\ncattails\ncattalo\ncattaloes\ncattalos\ncatted\ncattie\ncattier\ncatties\ncattiest\ncattily\ncatting\ncattish\ncattle\ncattleman\ncattlemen\ncattleya\ncattleyas\ncatty\ncatwalk\ncatwalks\ncaucus\ncaucused\ncaucuses\ncaucusing\ncaucussed\ncaucusses\ncaucussing\ncaudad\ncaudal\ncaudally\ncaudate\ncaudated\ncaudex\ncaudexes\ncaudices\ncaudillo\ncaudillos\ncaudle\ncaudles\ncaught\ncaul\ncauld\ncauldron\ncauldrons\ncaulds\ncaules\ncaulicle\ncaulicles\ncauliflower\ncauliflowers\ncauline\ncaulis\ncaulk\ncaulked\ncaulker\ncaulkers\ncaulking\ncaulkings\ncaulks\ncauls\ncausable\ncausal\ncausalities\ncausality\ncausally\ncausals\ncausation\ncausations\ncausative\ncausatively\ncause\ncaused\ncauseless\ncauser\ncauserie\ncauseries\ncausers\ncauses\ncauseway\ncausewayed\ncausewaying\ncauseways\ncausey\ncauseys\ncausing\ncaustic\ncaustically\ncaustics\ncauteries\ncauterization\ncauterizations\ncauterize\ncauterized\ncauterizes\ncauterizing\ncautery\ncaution\ncautionary\ncautioned\ncautioning\ncautions\ncautious\ncautiously\ncautiousness\ncavalcade\ncavalcades\ncavalero\ncavaleros\ncavalier\ncavaliered\ncavaliering\ncavalierly\ncavalierness\ncavaliers\ncavalla\ncavallas\ncavallies\ncavally\ncavalries\ncavalry\ncavalryman\ncavalrymen\ncavatina\ncavatinas\ncavatine\ncave\ncaveat\ncaveator\ncaveators\ncaveats\ncaved\ncavefish\ncavefishes\ncavelike\ncaveman\ncavemen\ncaver\ncavern\ncaverned\ncaverning\ncavernous\ncavernously\ncaverns\ncavers\ncaves\ncavetti\ncavetto\ncavettos\ncaviar\ncaviare\ncaviares\ncaviars\ncavicorn\ncavie\ncavies\ncavil\ncaviled\ncaviler\ncavilers\ncaviling\ncavilingly\ncavilled\ncaviller\ncavillers\ncavilling\ncavils\ncaving\ncavitary\ncavitate\ncavitated\ncavitates\ncavitating\ncavitation\ncavitations\ncavitied\ncavities\ncavity\ncavort\ncavorted\ncavorter\ncavorters\ncavorting\ncavorts\ncavy\ncaw\ncawed\ncawing\ncaws\ncay\ncayenne\ncayenned\ncayennes\ncayman\ncaymans\ncays\ncayuse\ncayuses\ncazique\ncaziques\ncease\nceased\nceaseless\nceaselessly\nceaselessness\nceases\nceasing\ncebid\ncebids\nceboid\nceboids\nceca\ncecal\ncecally\ncecum\ncedar\ncedarn\ncedars\ncede\nceded\nceder\nceders\ncedes\ncedi\ncedilla\ncedillas\nceding\ncedis\ncedula\ncedulas\ncee\ncees\nceiba\nceibas\nceil\nceiled\nceiler\nceilers\nceiling\nceilings\nceils\nceinture\nceintures\nceladon\nceladons\nceleb\ncelebrant\ncelebrants\ncelebrate\ncelebrated\ncelebratedness\ncelebrates\ncelebrating\ncelebration\ncelebrations\ncelebrator\ncelebrators\ncelebrities\ncelebrity\ncelebs\nceleriac\nceleriacs\nceleries\ncelerities\ncelerity\ncelery\ncelesta\ncelestas\nceleste\ncelestes\ncelestial\ncelestially\ncelestites\nceliac\ncelibacies\ncelibacy\ncelibate\ncelibates\ncell\ncella\ncellae\ncellar\ncellared\ncellarer\ncellarers\ncellaret\ncellarets\ncellaring\ncellars\ncelled\ncelli\ncelling\ncellist\ncellists\ncello\ncellophane\ncellophaned\ncellos\ncells\ncellular\ncellule\ncellules\ncelluloid\ncellulose\ncellulosic\ncelom\ncelomata\nceloms\ncelt\ncelts\ncembali\ncembalo\ncembalos\ncement\ncementa\ncementation\ncementations\ncemented\ncementer\ncementers\ncementing\ncementite\ncementites\ncements\ncementum\ncemeteries\ncemetery\ncenacle\ncenacles\ncenobite\ncenobites\ncenobitic\ncenobitical\ncenotaph\ncenotaphs\ncenote\ncenotes\ncense\ncensed\ncenser\ncensers\ncenses\ncensing\ncensor\ncensored\ncensorial\ncensoring\ncensorious\ncensoriously\ncensoriousness\ncensors\ncensorship\ncensorships\ncensual\ncensurable\ncensure\ncensured\ncensurer\ncensurers\ncensures\ncensuring\ncensus\ncensused\ncensuses\ncensusing\ncent\ncental\ncentals\ncentare\ncentares\ncentaur\ncentauries\ncentaurs\ncentaury\ncentavo\ncentavos\ncentenarian\ncentenarians\ncentenaries\ncentenary\ncentennial\ncentennially\ncentennials\ncenter\ncenterboard\ncenterboards\ncentered\ncentering\ncenterpiece\ncenterpieces\ncenters\ncenteses\ncentesis\ncentiare\ncentiares\ncentigrade\ncentigram\ncentigrams\ncentile\ncentiles\ncentiliter\ncentiliters\ncentime\ncentimes\ncentimeter\ncentimeters\ncentimo\ncentimos\ncentipede\ncentipedes\ncentner\ncentners\ncento\ncentones\ncentos\ncentra\ncentral\ncentraler\ncentralest\ncentralism\ncentralist\ncentralistic\ncentralists\ncentralities\ncentrality\ncentralization\ncentralize\ncentralized\ncentralizer\ncentralizers\ncentralizes\ncentralizing\ncentrally\ncentrals\ncentre\ncentred\ncentres\ncentric\ncentrically\ncentricities\ncentricity\ncentrifugal\ncentrifugally\ncentrifugation\ncentrifugations\ncentrifuge\ncentrifuged\ncentrifuges\ncentrifuging\ncentring\ncentrings\ncentripetal\ncentripetally\ncentrism\ncentrisms\ncentrist\ncentrists\ncentroid\ncentroids\ncentrum\ncentrums\ncents\ncentum\ncentums\ncentuple\ncentupled\ncentuples\ncentupling\ncenturies\ncenturion\ncenturions\ncentury\nceorl\nceorlish\nceorls\ncep\ncepe\ncepes\ncephalad\ncephalic\ncephalin\ncephalins\nceps\nceramal\nceramals\nceramic\nceramicist\nceramicists\nceramics\nceramist\nceramists\ncerastes\ncerate\ncerated\ncerates\nceratin\nceratins\nceratoid\ncercaria\ncercariae\ncercarias\ncerci\ncercis\ncercises\ncercus\ncere\ncereal\ncereals\ncerebella\ncerebellar\ncerebellum\ncerebellums\ncerebra\ncerebral\ncerebrally\ncerebrals\ncerebrate\ncerebrated\ncerebrates\ncerebrating\ncerebration\ncerebrations\ncerebric\ncerebrum\ncerebrums\ncerecloth\ncerecloths\ncered\ncerement\ncerements\nceremonial\nceremonialism\nceremonialist\nceremonialists\nceremonially\nceremonies\nceremonious\nceremoniously\nceremoniousness\nceremony\nceres\ncereus\ncereuses\nceria\ncerias\nceric\ncering\nceriph\nceriphs\ncerise\ncerises\ncerite\ncerites\ncerium\nceriums\ncermet\ncermets\ncernuous\ncero\nceros\ncerotic\ncerotype\ncerotypes\ncerous\ncertain\ncertainer\ncertainest\ncertainly\ncertainties\ncertainty\ncertes\ncertifiable\ncertifiably\ncertificate\ncertificated\ncertificates\ncertificating\ncertification\ncertifications\ncertified\ncertifier\ncertifiers\ncertifies\ncertify\ncertifying\ncertiorari\ncertitude\ncertitudes\ncerulean\nceruleans\ncerumen\ncerumens\nceruse\nceruses\ncerusite\ncerusites\ncervelat\ncervelats\ncervical\ncervices\ncervine\ncervix\ncervixes\ncesarean\ncesareans\ncesarian\ncesarians\ncesium\ncesiums\ncess\ncessation\ncessations\ncessed\ncesses\ncessing\ncession\ncessions\ncesspit\ncesspits\ncesspool\ncesspools\ncesta\ncestas\ncesti\ncestode\ncestodes\ncestoi\ncestoid\ncestoids\ncestos\ncestus\ncestuses\ncesura\ncesurae\ncesuras\ncetacean\ncetaceans\ncetane\ncetanes\ncete\ncetes\ncetologies\ncetology\nchabouk\nchabouks\nchabuk\nchabuks\nchacma\nchacmas\nchaconne\nchaconnes\nchad\nchadarim\nchadless\nchads\nchaeta\nchaetae\nchaetal\nchafe\nchafed\nchafer\nchafers\nchafes\nchaff\nchaffed\nchaffer\nchaffered\nchafferer\nchafferers\nchaffering\nchaffers\nchaffier\nchaffiest\nchaffing\nchaffs\nchaffy\nchafing\nchagrin\nchagrined\nchagrining\nchagrinned\nchagrinning\nchagrins\nchain\nchaine\nchained\nchaines\nchaining\nchainman\nchainmen\nchains\nchair\nchaired\nchairing\nchairman\nchairmaned\nchairmaning\nchairmanned\nchairmanning\nchairmans\nchairmanship\nchairmanships\nchairmen\nchairperson\nchairpersons\nchairs\nchairwoman\nchairwomen\nchaise\nchaises\nchalah\nchalahs\nchalaza\nchalazae\nchalazal\nchalazas\nchalcedonies\nchalcedony\nchalcid\nchalcids\nchaldron\nchaldrons\nchaleh\nchalehs\nchalet\nchalets\nchalice\nchaliced\nchalices\nchalk\nchalkboard\nchalkboards\nchalked\nchalkier\nchalkiest\nchalking\nchalks\nchalky\nchallah\nchallahs\nchallenge\nchallenged\nchallenger\nchallengers\nchallenges\nchallenging\nchallie\nchallies\nchallis\nchallises\nchallot\nchalloth\nchally\nchalone\nchalones\nchalot\nchaloth\nchalutz\nchalutzim\ncham\nchamade\nchamades\nchamber\nchambered\nchambering\nchamberlain\nchamberlains\nchambermaid\nchambermaids\nchambers\nchambray\nchambrays\nchameleon\nchameleonic\nchameleons\nchamfer\nchamfered\nchamfering\nchamfers\nchamfron\nchamfrons\nchamise\nchamises\nchamiso\nchamisos\nchammied\nchammies\nchammy\nchammying\nchamois\nchamoised\nchamoises\nchamoising\nchamoix\nchamp\nchampac\nchampacs\nchampagne\nchampagnes\nchampak\nchampaks\nchamped\nchamper\nchampers\nchamping\nchampion\nchampioned\nchampioning\nchampions\nchampionship\nchampionships\nchamps\nchampy\nchams\nchance\nchanced\nchancel\nchancelleries\nchancellery\nchancellor\nchancellories\nchancellors\nchancellorship\nchancellorships\nchancellory\nchancels\nchanceries\nchancery\nchances\nchancier\nchanciest\nchancily\nchancing\nchancre\nchancres\nchancrous\nchancy\nchandelier\nchandeliers\nchandler\nchandleries\nchandlers\nchandlery\nchanfron\nchanfrons\nchang\nchange\nchangeability\nchangeable\nchangeableness\nchangeably\nchanged\nchangeful\nchangefully\nchangefulness\nchangeless\nchangelessly\nchangelessness\nchangeling\nchangelings\nchanger\nchangers\nchanges\nchanging\nchangs\nchannel\nchanneled\nchanneling\nchannelled\nchannelling\nchannels\nchanson\nchansons\nchant\nchantage\nchantages\nchanted\nchanter\nchanters\nchanteuse\nchanteuses\nchantey\nchanteys\nchanticleer\nchanticleers\nchanties\nchanting\nchantor\nchantors\nchantries\nchantry\nchants\nchanty\nchao\nchaos\nchaoses\nchaotic\nchaotically\nchap\nchaparral\nchaparrals\nchapbook\nchapbooks\nchape\nchapeau\nchapeaus\nchapeaux\nchapel\nchapels\nchaperon\nchaperonage\nchaperone\nchaperoned\nchaperones\nchaperoning\nchaperons\nchapes\nchapiter\nchapiters\nchaplain\nchaplaincies\nchaplaincy\nchaplains\nchaplainship\nchaplainships\nchaplet\nchaplets\nchapman\nchapmen\nchapped\nchapping\nchaps\nchapt\nchapter\nchaptered\nchaptering\nchapters\nchaqueta\nchaquetas\nchar\ncharacid\ncharacids\ncharacin\ncharacins\ncharacter\ncharacteristic\ncharacteristically\ncharacteristics\ncharacterizable\ncharacterization\ncharacterizations\ncharacterize\ncharacterized\ncharacterizes\ncharacterizing\ncharacterless\ncharacters\ncharade\ncharades\ncharas\ncharases\ncharbroil\ncharbroiled\ncharbroiling\ncharbroils\ncharcoal\ncharcoaled\ncharcoaling\ncharcoals\nchard\nchards\nchare\nchared\nchares\ncharge\nchargeable\ncharged\ncharger\nchargers\ncharges\ncharging\ncharier\nchariest\ncharily\nchariness\ncharing\nchariot\ncharioted\ncharioteer\ncharioteers\ncharioting\nchariots\ncharism\ncharisma\ncharismata\ncharismatic\ncharisms\ncharitable\ncharitableness\ncharitably\ncharities\ncharity\nchark\ncharka\ncharkas\ncharked\ncharkha\ncharkhas\ncharking\ncharks\ncharladies\ncharlady\ncharlatan\ncharlatanism\ncharlatanisms\ncharlatanries\ncharlatanry\ncharlatans\ncharlock\ncharlocks\ncharlotte\ncharlottes\ncharm\ncharmed\ncharmer\ncharmers\ncharming\ncharminger\ncharmingest\ncharmingly\ncharms\ncharnel\ncharnels\ncharpai\ncharpais\ncharpoy\ncharpoys\ncharqui\ncharquid\ncharquis\ncharr\ncharred\ncharrier\ncharriest\ncharring\ncharro\ncharros\ncharrs\ncharry\nchars\nchart\ncharted\ncharter\nchartered\ncharterer\ncharterers\nchartering\ncharters\ncharting\nchartist\nchartists\nchartreuse\ncharts\ncharwoman\ncharwomen\nchary\nchase\nchased\nchaser\nchasers\nchases\nchasing\nchasings\nchasm\nchasmal\nchasmed\nchasmic\nchasms\nchasmy\nchasse\nchassed\nchasseing\nchasses\nchasseur\nchasseurs\nchassis\nchaste\nchastely\nchasten\nchastened\nchastener\nchasteners\nchasteness\nchastening\nchastenment\nchastenments\nchastens\nchaster\nchastest\nchasties\nchastise\nchastised\nchastisement\nchastisements\nchastiser\nchastisers\nchastises\nchastising\nchastities\nchastity\nchasuble\nchasubles\nchat\nchateau\nchateaus\nchateaux\nchatelaine\nchatelaines\nchats\nchatted\nchattel\nchattels\nchatter\nchattered\nchatterer\nchatterers\nchattering\nchatters\nchattery\nchattier\nchattiest\nchattily\nchattiness\nchatting\nchatty\nchaufer\nchaufers\nchauffer\nchauffers\nchauffeur\nchauffeured\nchauffeuring\nchauffeurs\nchaunt\nchaunted\nchaunter\nchaunters\nchaunting\nchaunts\nchausses\nchauvinism\nchauvinisms\nchauvinist\nchauvinistic\nchauvinistically\nchauvinists\nchaw\nchawed\nchawer\nchawers\nchawing\nchaws\nchay\nchayote\nchayotes\nchays\nchazan\nchazanim\nchazans\nchazzen\nchazzenim\nchazzens\ncheap\ncheapen\ncheapened\ncheapening\ncheapens\ncheaper\ncheapest\ncheapie\ncheapies\ncheapish\ncheaply\ncheapness\ncheaps\ncheapskate\ncheapskates\ncheat\ncheated\ncheater\ncheaters\ncheating\ncheats\nchebec\nchebecs\nchechako\nchechakos\ncheck\ncheckable\ncheckbook\ncheckbooks\nchecked\nchecker\ncheckerboard\ncheckerboards\ncheckered\ncheckering\ncheckers\nchecking\ncheckless\nchecklist\nchecklists\ncheckmate\ncheckmated\ncheckmates\ncheckmating\ncheckoff\ncheckoffs\ncheckout\ncheckouts\ncheckpoint\ncheckpoints\ncheckrein\ncheckreins\ncheckroom\ncheckrooms\ncheckrow\ncheckrowed\ncheckrowing\ncheckrows\nchecks\ncheckup\ncheckups\ncheddar\ncheddars\ncheddite\ncheddites\ncheder\ncheders\nchedite\nchedites\ncheefuller\ncheefullest\ncheek\ncheekbone\ncheekbones\ncheeked\ncheekful\ncheekfuls\ncheekier\ncheekiest\ncheekily\ncheekiness\ncheeking\ncheeks\ncheeky\ncheep\ncheeped\ncheeper\ncheepers\ncheeping\ncheeps\ncheer\ncheered\ncheerer\ncheerers\ncheerful\ncheerfuller\ncheerfullest\ncheerfully\ncheerfulness\ncheerier\ncheeriest\ncheerily\ncheeriness\ncheering\ncheerio\ncheerios\ncheerleader\ncheerleaders\ncheerless\ncheerlessly\ncheerlessness\ncheero\ncheeros\ncheers\ncheery\ncheese\ncheeseburger\ncheeseburgers\ncheesecake\ncheesecakes\ncheesecloth\ncheesecloths\ncheesed\ncheeses\ncheesier\ncheesiest\ncheesily\ncheesing\ncheesy\ncheetah\ncheetahs\nchef\nchefdom\nchefdoms\nchefs\nchegoe\nchegoes\nchela\nchelae\nchelas\nchelate\nchelated\nchelates\nchelating\nchelator\nchelators\ncheloid\ncheloids\nchemic\nchemical\nchemically\nchemicals\nchemics\nchemise\nchemises\nchemism\nchemisms\nchemist\nchemistries\nchemistry\nchemists\nchemotherapeutic\nchemotherapies\nchemotherapist\nchemotherapists\nchemotherapy\nchemurgic\nchemurgically\nchemurgies\nchemurgy\nchenille\nchenilles\nchenopod\nchenopods\ncheque\nchequer\nchequered\nchequering\nchequers\ncheques\ncherish\ncherished\ncherishes\ncherishing\ncheroot\ncheroots\ncherries\ncherry\ncherrylike\nchert\nchertier\nchertiest\ncherts\ncherty\ncherub\ncherubic\ncherubically\ncherubim\ncherubs\nchervil\nchervils\nchess\nchessboard\nchessboards\nchesses\nchessman\nchessmen\nchest\nchested\nchesterfield\nchesterfields\nchestful\nchestfuls\nchestier\nchestiest\nchestnut\nchestnuts\nchests\nchesty\nchetah\nchetahs\ncheth\ncheths\nchevalet\nchevalets\nchevalier\nchevaliers\ncheveron\ncheverons\nchevied\nchevies\ncheviot\ncheviots\nchevron\nchevrons\nchevy\nchevying\nchew\nchewable\nchewed\nchewer\nchewers\nchewier\nchewiest\nchewing\nchewink\nchewinks\nchews\nchewy\nchez\nchi\nchia\nchiao\nchiaroscurist\nchiaroscurists\nchiaroscuro\nchiaroscuros\nchias\nchiasm\nchiasma\nchiasmal\nchiasmas\nchiasmata\nchiasmi\nchiasmic\nchiasms\nchiasmus\nchiastic\nchiaus\nchiauses\nchibouk\nchibouks\nchic\nchicane\nchicaned\nchicaner\nchicaneries\nchicaners\nchicanery\nchicanes\nchicaning\nchiccories\nchiccory\nchichi\nchichis\nchick\nchickadee\nchickadees\nchicken\nchickened\nchickenhearted\nchickening\nchickens\nchickpea\nchickpeas\nchicks\nchickweed\nchickweeds\nchicle\nchicles\nchicly\nchicness\nchicnesses\nchico\nchicories\nchicory\nchicos\nchics\nchid\nchidden\nchide\nchided\nchider\nchiders\nchides\nchiding\nchief\nchiefdom\nchiefdoms\nchiefer\nchiefest\nchiefly\nchiefs\nchieftain\nchieftaincy\nchieftains\nchieftainship\nchieftainships\nchiel\nchield\nchields\nchiels\nchiffon\nchiffonier\nchiffoniers\nchiffons\nchigetai\nchigetais\nchigger\nchiggers\nchignon\nchignons\nchigoe\nchigoes\nchilblain\nchilblains\nchild\nchildbed\nchildbeds\nchildbirth\nchildbirths\nchilde\nchildes\nchildhood\nchildhoods\nchilding\nchildish\nchildishly\nchildishness\nchildless\nchildlessness\nchildlier\nchildliest\nchildlike\nchildlikeness\nchildly\nchildren\nchile\nchiles\nchili\nchiliad\nchiliads\nchiliasm\nchiliasms\nchiliast\nchiliasts\nchilies\nchill\nchilled\nchiller\nchillers\nchillest\nchilli\nchillier\nchillies\nchilliest\nchillily\nchilliness\nchilling\nchillingly\nchillness\nchills\nchillum\nchillums\nchilly\nchilopod\nchilopods\nchimaera\nchimaeras\nchimar\nchimars\nchimb\nchimbley\nchimbleys\nchimblies\nchimbly\nchimbs\nchime\nchimed\nchimer\nchimera\nchimeras\nchimere\nchimeres\nchimeric\nchimerical\nchimerically\nchimers\nchimes\nchiming\nchimla\nchimlas\nchimley\nchimleys\nchimney\nchimneys\nchimp\nchimpanzee\nchimpanzees\nchimps\nchin\nchina\nchinas\nchinbone\nchinbones\nchinch\nchinches\nchinchier\nchinchiest\nchinchilla\nchinchillas\nchinchy\nchine\nchined\nchines\nchining\nchink\nchinked\nchinkier\nchinkiest\nchinking\nchinks\nchinky\nchinless\nchinned\nchinning\nchino\nchinone\nchinones\nchinook\nchinooks\nchinos\nchinquapin\nchinquapins\nchins\nchints\nchintses\nchintz\nchintzes\nchintzier\nchintziest\nchintzy\nchip\nchipboard\nchipboards\nchipmuck\nchipmucks\nchipmunk\nchipmunks\nchipped\nchipper\nchippered\nchippering\nchippers\nchippie\nchippies\nchipping\nchippy\nchips\nchirk\nchirked\nchirker\nchirkest\nchirking\nchirks\nchirm\nchirmed\nchirming\nchirms\nchiro\nchirographer\nchirographers\nchirography\nchiropodist\nchiropodists\nchiropody\nchiropractor\nchiropractors\nchiros\nchirp\nchirped\nchirper\nchirpers\nchirpier\nchirpiest\nchirpily\nchirpiness\nchirping\nchirps\nchirpy\nchirr\nchirre\nchirred\nchirres\nchirring\nchirrs\nchirrup\nchirruped\nchirruping\nchirrups\nchirrupy\nchis\nchisel\nchiseled\nchiseler\nchiselers\nchiseling\nchiselled\nchiselling\nchisels\nchit\nchital\nchitchat\nchitchats\nchitchatted\nchitchatting\nchitin\nchitins\nchitlin\nchitling\nchitlings\nchitlins\nchiton\nchitons\nchits\nchitter\nchittered\nchittering\nchitterling\nchitterlings\nchitters\nchitties\nchitty\nchivalries\nchivalrous\nchivalrously\nchivalrousness\nchivalry\nchivaree\nchivareed\nchivareeing\nchivarees\nchivari\nchivaried\nchivaries\nchivariing\nchivaring\nchive\nchives\nchivied\nchivies\nchivvied\nchivvies\nchivvy\nchivvying\nchivy\nchivying\nchlamydes\nchlamys\nchlamyses\nchloral\nchlorals\nchlorate\nchlorates\nchlordan\nchlordans\nchloric\nchlorid\nchloride\nchlorides\nchlorids\nchlorin\nchlorinate\nchlorinated\nchlorinates\nchlorinating\nchlorination\nchlorinations\nchlorine\nchlorines\nchlorins\nchlorite\nchlorites\nchloroform\nchlorophyll\nchlorophyllous\nchlorous\nchock\nchocked\nchocking\nchocks\nchocolate\nchocolates\nchocolaty\nchoice\nchoicely\nchoiceness\nchoicer\nchoices\nchoicest\nchoir\nchoirboy\nchoirboys\nchoired\nchoirgirl\nchoirgirls\nchoiring\nchoirmaster\nchoirmasters\nchoirs\nchoke\nchoked\nchoker\nchokers\nchokes\nchokey\nchokier\nchokiest\nchoking\nchoky\ncholate\ncholates\ncholer\ncholera\ncholeraic\ncholeras\ncholeric\ncholerically\ncholers\ncholesterol\ncholine\ncholines\ncholla\nchollas\ncholo\nchomp\nchomped\nchomping\nchomps\nchon\nchoose\nchooser\nchoosers\nchooses\nchoosey\nchoosier\nchoosiest\nchoosing\nchoosy\nchop\nchophouse\nchophouses\nchopin\nchopine\nchopines\nchopins\nchopped\nchopper\nchoppers\nchoppier\nchoppiest\nchoppily\nchopping\nchoppy\nchops\nchopstick\nchopsticks\nchoragi\nchoragic\nchoragus\nchoraguses\nchoral\nchorale\nchorales\nchorally\nchorals\nchord\nchordal\nchordate\nchordates\nchorded\nchording\nchords\nchore\nchorea\nchoreal\nchoreas\nchored\nchoregi\nchoregus\nchoreguses\nchoreic\nchoreman\nchoremen\nchoreograph\nchoreographed\nchoreographer\nchoreographers\nchoreographic\nchoreographically\nchoreographies\nchoreographing\nchoreographs\nchoreography\nchoreoid\nchores\nchorial\nchoriamb\nchoriambs\nchoric\nchorine\nchorines\nchoring\nchorioid\nchorioids\nchorion\nchorions\nchorister\nchoristers\nchorizo\nchorizos\nchoroid\nchoroids\nchortle\nchortled\nchortler\nchortlers\nchortles\nchortling\nchorus\nchorused\nchoruses\nchorusing\nchorussed\nchorusses\nchorussing\nchose\nchosen\nchoses\nchott\nchotts\nchough\nchoughs\nchouse\nchoused\nchouser\nchousers\nchouses\nchoush\nchoushes\nchousing\nchow\nchowchow\nchowchows\nchowder\nchowdered\nchowdering\nchowders\nchowed\nchowing\nchows\nchowse\nchowsed\nchowses\nchowsing\nchowtime\nchowtimes\nchresard\nchresards\nchrism\nchrisma\nchrismal\nchrismon\nchrismons\nchrisms\nchrisom\nchrisoms\nchristen\nchristened\nchristening\nchristenings\nchristens\nchristie\nchristies\nchristy\nchroma\nchromas\nchromate\nchromates\nchromatic\nchromatically\nchromaticism\nchromaticity\nchromatid\nchromatids\nchromatin\nchromatinic\nchromatographic\nchromatographically\nchromatography\nchrome\nchromed\nchromes\nchromic\nchromide\nchromides\nchroming\nchromite\nchromites\nchromium\nchromiums\nchromize\nchromized\nchromizes\nchromizing\nchromo\nchromos\nchromosomal\nchromosome\nchromosomes\nchromosphere\nchromous\nchromyl\nchronaxies\nchronaxy\nchronic\nchronically\nchronicities\nchronicity\nchronicle\nchronicled\nchronicler\nchroniclers\nchronicles\nchronicling\nchronics\nchronograph\nchronographic\nchronographs\nchronological\nchronologically\nchronologies\nchronologist\nchronologists\nchronology\nchronometer\nchronometers\nchronometric\nchronometry\nchronon\nchronons\nchrysalides\nchrysalis\nchrysalises\nchrysanthemum\nchrysanthemums\nchthonic\nchub\nchubasco\nchubascos\nchubbier\nchubbiest\nchubbily\nchubbiness\nchubby\nchubs\nchuck\nchucked\nchuckhole\nchuckholes\nchuckies\nchucking\nchuckle\nchuckled\nchuckler\nchucklers\nchuckles\nchuckling\nchucks\nchucky\nchuddah\nchuddahs\nchuddar\nchuddars\nchudder\nchudders\nchufa\nchufas\nchuff\nchuffed\nchuffer\nchuffest\nchuffier\nchuffiest\nchuffing\nchuffs\nchuffy\nchug\nchugged\nchugger\nchuggers\nchugging\nchugs\nchukar\nchukars\nchukka\nchukkar\nchukkars\nchukkas\nchukker\nchukkers\nchum\nchummed\nchummier\nchummiest\nchummily\nchumming\nchummy\nchump\nchumped\nchumping\nchumps\nchums\nchumship\nchumships\nchunk\nchunked\nchunkier\nchunkiest\nchunkily\nchunkiness\nchunking\nchunks\nchunky\nchunter\nchuntered\nchuntering\nchunters\nchurch\nchurched\nchurches\nchurchgoer\nchurchgoers\nchurchgoing\nchurchier\nchurchiest\nchurching\nchurchless\nchurchlier\nchurchliest\nchurchly\nchurchman\nchurchmen\nchurchwoman\nchurchwomen\nchurchy\nchurchyard\nchurchyards\nchurl\nchurlish\nchurlishly\nchurlishness\nchurls\nchurn\nchurned\nchurner\nchurners\nchurning\nchurnings\nchurns\nchurr\nchurred\nchurring\nchurrs\nchute\nchuted\nchutes\nchuting\nchutist\nchutists\nchutnee\nchutnees\nchutney\nchutneys\nchutzpa\nchutzpah\nchutzpahs\nchutzpas\nchyle\nchyles\nchylous\nchyme\nchymes\nchymic\nchymics\nchymist\nchymists\nchymosin\nchymosins\nchymous\nciao\ncibol\ncibols\nciboria\nciborium\nciboule\nciboules\ncicada\ncicadae\ncicadas\ncicala\ncicalas\ncicale\ncicatrices\ncicatrix\ncicelies\ncicely\ncicero\ncicerone\ncicerones\nciceroni\nciceros\ncichlid\ncichlidae\ncichlids\ncicisbei\ncicisbeo\ncicoree\ncicorees\ncider\nciders\ncigar\ncigaret\ncigarets\ncigarette\ncigarettes\ncigars\ncilantro\ncilantros\ncilia\nciliary\nciliate\nciliated\nciliates\ncilice\ncilices\ncilium\ncimex\ncimices\ncinch\ncinched\ncinches\ncinching\ncinchona\ncinchonas\ncincture\ncinctured\ncinctures\ncincturing\ncinder\ncindered\ncindering\ncinders\ncindery\ncine\ncineast\ncineaste\ncineastes\ncineasts\ncinema\ncinemas\ncinematic\ncinematically\ncinematographer\ncinematographers\ncinematographic\ncinematographically\ncinematographies\ncinematography\ncineol\ncineole\ncineoles\ncineols\ncinerary\ncinerin\ncinerins\ncines\ncingula\ncingulum\ncinnabar\ncinnabarine\ncinnabars\ncinnamic\ncinnamon\ncinnamons\ncinnamyl\ncinnamyls\ncinquain\ncinquains\ncinque\ncinquefoil\ncinquefoils\ncinques\ncion\ncions\ncipher\nciphered\nciphering\nciphers\nciphonies\nciphony\ncipolin\ncipolins\ncirca\ncircle\ncircled\ncircler\ncirclers\ncircles\ncirclet\ncirclets\ncircling\ncircuit\ncircuital\ncircuited\ncircuities\ncircuiting\ncircuitous\ncircuitously\ncircuitousness\ncircuitries\ncircuitry\ncircuits\ncircuity\ncircular\ncircularities\ncircularity\ncircularization\ncircularizations\ncircularize\ncircularized\ncircularizes\ncircularizing\ncircularly\ncircularness\ncirculars\ncirculate\ncirculated\ncirculates\ncirculating\ncirculation\ncirculations\ncirculative\ncirculator\ncirculators\ncirculatory\ncircumcise\ncircumcised\ncircumcises\ncircumcising\ncircumcision\ncircumcisions\ncircumference\ncircumferences\ncircumferential\ncircumflex\ncircumflexes\ncircumlocution\ncircumlocutions\ncircumnavigate\ncircumnavigated\ncircumnavigates\ncircumnavigating\ncircumnavigation\ncircumnavigations\ncircumnavigator\ncircumnavigators\ncircumscribe\ncircumscribed\ncircumscribes\ncircumscribing\ncircumscription\ncircumscriptions\ncircumspect\ncircumspection\ncircumspections\ncircumspectly\ncircumstance\ncircumstanced\ncircumstances\ncircumstantial\ncircumstantialities\ncircumstantiality\ncircumstantially\ncircumstantiate\ncircumstantiated\ncircumstantiates\ncircumstantiating\ncircumvent\ncircumvented\ncircumventing\ncircumvention\ncircumventions\ncircumvents\ncircus\ncircuses\ncircusy\ncircuting\ncire\ncires\ncirque\ncirques\ncirrate\ncirrhoses\ncirrhosis\ncirrhotic\ncirri\ncirriped\ncirripeds\ncirrose\ncirrous\ncirrus\ncirsoid\ncis\ncisco\nciscoes\nciscos\ncislunar\ncissoid\ncissoids\ncissy\ncist\ncistern\ncisterna\ncisternae\ncisterns\ncistron\ncistrons\ncists\ncitable\ncitadel\ncitadels\ncitation\ncitations\ncitatory\ncite\nciteable\ncited\nciter\nciters\ncites\ncithara\ncitharas\ncither\ncithern\ncitherns\ncithers\ncithren\ncithrens\ncitied\ncities\ncitified\ncitifies\ncitify\ncitifying\nciting\ncitizen\ncitizenly\ncitizenries\ncitizenry\ncitizens\ncitizenship\ncitola\ncitolas\ncitole\ncitoles\ncitral\ncitrals\ncitrate\ncitrated\ncitrates\ncitreous\ncitric\ncitrin\ncitrine\ncitrines\ncitrins\ncitron\ncitrons\ncitrous\ncitrus\ncitruses\ncittern\ncitterns\ncity\ncityfied\ncityward\ncivet\ncivets\ncivic\ncivically\ncivicism\ncivicisms\ncivics\ncivie\ncivies\ncivil\ncivilian\ncivilians\ncivilise\ncivilised\ncivilises\ncivilising\ncivilities\ncivility\ncivilization\ncivilizations\ncivilize\ncivilized\ncivilizer\ncivilizers\ncivilizes\ncivilizing\ncivilly\ncivism\ncivisms\ncivvies\ncivvy\nclabber\nclabbered\nclabbering\nclabbers\nclach\nclachan\nclachans\nclachs\nclack\nclacked\nclacker\nclackers\nclacking\nclacks\nclad\ncladding\ncladdings\ncladode\ncladodes\nclads\nclag\nclagged\nclagging\nclags\nclaim\nclaimable\nclaimant\nclaimants\nclaimed\nclaimer\nclaimers\nclaiming\nclaims\nclairvoyance\nclairvoyant\nclairvoyantly\nclairvoyants\nclam\nclamant\nclamantly\nclambake\nclambakes\nclamber\nclambered\nclamberer\nclamberers\nclambering\nclambers\nclammed\nclammier\nclammiest\nclammily\nclamming\nclammy\nclamor\nclamored\nclamorer\nclamorers\nclamoring\nclamorous\nclamorously\nclamorousness\nclamors\nclamour\nclamoured\nclamouring\nclamours\nclamp\nclamped\nclamper\nclampers\nclamping\nclamps\nclams\nclamworm\nclamworms\nclan\nclandestine\nclandestinely\nclandestineness\nclang\nclanged\nclanging\nclangor\nclangored\nclangoring\nclangorous\nclangorously\nclangors\nclangour\nclangoured\nclangouring\nclangours\nclangs\nclank\nclanked\nclanking\nclankingly\nclanks\nclannish\nclannishly\nclannishness\nclans\nclansman\nclansmen\nclap\nclapboard\nclapboards\nclapped\nclapper\nclappers\nclapping\nclaps\nclapt\nclaptrap\nclaptraps\nclaque\nclaquer\nclaquers\nclaques\nclaqueur\nclaqueurs\nclarence\nclarences\nclaret\nclarets\nclaries\nclarification\nclarifications\nclarified\nclarifier\nclarifiers\nclarifies\nclarify\nclarifying\nclarinet\nclarinetist\nclarinetists\nclarinets\nclarinettist\nclarinettists\nclarion\nclarioned\nclarioning\nclarions\nclarities\nclarity\nclarkia\nclarkias\nclaro\nclaroes\nclaros\nclary\nclash\nclashed\nclasher\nclashers\nclashes\nclashing\nclasp\nclasped\nclasper\nclaspers\nclasping\nclasps\nclaspt\nclass\nclassed\nclasser\nclassers\nclasses\nclassic\nclassical\nclassicality\nclassically\nclassicism\nclassicist\nclassicistic\nclassicists\nclassicize\nclassicized\nclassicizes\nclassicizing\nclassics\nclassier\nclassiest\nclassifiable\nclassification\nclassifications\nclassified\nclassifier\nclassifiers\nclassifies\nclassify\nclassifying\nclassily\nclassiness\nclassing\nclassis\nclassless\nclassmate\nclassmates\nclassroom\nclassrooms\nclassy\nclast\nclastic\nclastics\nclasts\nclatter\nclattered\nclatterer\nclatterers\nclattering\nclatteringly\nclatters\nclattery\nclaucht\nclaught\nclaughted\nclaughting\nclaughts\nclausal\nclause\nclauses\nclaustrophobe\nclaustrophobes\nclaustrophobia\nclaustrophobic\nclavate\nclave\nclaver\nclavered\nclavering\nclavers\nclavi\nclavichord\nclavichordist\nclavichordists\nclavichords\nclavicle\nclavicles\nclavier\nclavierist\nclavierists\nclaviers\nclaw\nclawed\nclawer\nclawers\nclawing\nclawless\nclaws\nclaxon\nclaxons\nclay\nclaybank\nclaybanks\nclayed\nclayey\nclayier\nclayiest\nclaying\nclayish\nclaylike\nclaymore\nclaymores\nclaypan\nclaypans\nclays\nclayware\nclaywares\nclean\ncleanable\ncleaned\ncleaner\ncleaners\ncleanest\ncleaning\ncleanlier\ncleanliest\ncleanliness\ncleanly\ncleanness\ncleans\ncleanse\ncleansed\ncleanser\ncleansers\ncleanses\ncleansing\ncleanup\ncleanups\nclear\nclearable\nclearance\nclearances\ncleared\nclearer\nclearers\nclearest\nclearheaded\nclearheadedly\nclearheadedness\nclearing\nclearinghouse\nclearinghouses\nclearings\nclearly\nclearness\nclears\nclearstories\nclearstory\ncleat\ncleated\ncleating\ncleats\ncleavable\ncleavage\ncleavages\ncleave\ncleaved\ncleaver\ncleavers\ncleaves\ncleaving\ncleek\ncleeked\ncleeking\ncleeks\nclef\nclefs\ncleft\nclefts\nclematis\nclematises\nclemencies\nclemency\nclement\nclemently\nclench\nclenched\nclenches\nclenching\ncleome\ncleomes\nclepe\ncleped\nclepes\ncleping\nclept\nclerestories\nclerestory\nclergies\nclergy\nclergyman\nclergymen\ncleric\nclerical\nclericalism\nclerically\nclericals\nclerics\nclerid\nclerids\nclerihew\nclerihews\nclerisies\nclerisy\nclerk\nclerkdom\nclerkdoms\nclerked\nclerking\nclerkish\nclerklier\nclerkliest\nclerkly\nclerks\nclerkship\ncleveite\ncleveites\nclever\ncleverer\ncleverest\ncleverish\ncleverly\ncleverness\nclevis\nclevises\nclew\nclewed\nclewing\nclews\ncliche\ncliched\ncliches\nclick\nclicked\nclicker\nclickers\nclicking\nclicks\nclient\ncliental\nclientele\nclienteles\nclientless\nclients\ncliff\ncliffier\ncliffiest\ncliffs\ncliffy\nclift\nclifts\nclimacteric\nclimactic\nclimactically\nclimatal\nclimate\nclimates\nclimatic\nclimatically\nclimatological\nclimatologist\nclimatologists\nclimatology\nclimax\nclimaxed\nclimaxes\nclimaxing\nclimb\nclimbable\nclimbed\nclimber\nclimbers\nclimbing\nclimbs\nclime\nclimes\nclinal\nclinally\nclinch\nclinched\nclincher\nclinchers\nclinches\nclinching\ncline\nclines\ncling\nclinged\nclinger\nclingers\nclingier\nclingiest\nclinging\nclings\nclingstone\nclingstones\nclingy\nclinic\nclinical\nclinically\nclinician\nclinicians\nclinics\nclink\nclinked\nclinker\nclinkered\nclinkering\nclinkers\nclinking\nclinks\nclinometer\nclinometers\nclinometry\nclip\nclipboard\nclipboards\nclipped\nclipper\nclippers\nclipping\nclippings\nclips\nclipt\nclique\ncliqued\ncliqueier\ncliqueiest\ncliques\ncliquey\ncliquier\ncliquiest\ncliquing\ncliquish\ncliquishly\ncliquishness\ncliquy\nclitella\nclitoral\nclitoric\nclitorides\nclitoris\nclitorises\nclivers\ncloaca\ncloacae\ncloacal\ncloak\ncloaked\ncloaking\ncloakroom\ncloakrooms\ncloaks\nclobber\nclobbered\nclobbering\nclobbers\ncloche\ncloches\nclock\nclocked\nclocker\nclockers\nclocking\nclocks\nclockwise\nclockwork\nclockworks\nclod\ncloddier\ncloddiest\ncloddish\ncloddishness\ncloddy\nclodhopper\nclodhoppers\nclodpate\nclodpates\nclodpole\nclodpoles\nclodpoll\nclodpolls\nclods\nclog\nclogged\ncloggier\ncloggiest\nclogging\ncloggy\nclogs\ncloister\ncloistered\ncloistering\ncloisters\nclomb\nclomp\nclomped\nclomping\nclomps\nclon\nclonal\nclonally\nclone\ncloned\nclones\nclonic\ncloning\nclonism\nclonisms\nclonk\nclonked\nclonking\nclonks\nclons\nclonus\nclonuses\ncloot\ncloots\nclop\nclopped\nclopping\nclops\nclosable\nclose\nclosed\nclosefisted\nclosely\nclosemouthed\ncloseness\ncloseout\ncloseouts\ncloser\nclosers\ncloses\nclosest\ncloset\ncloseted\ncloseting\nclosets\nclosing\nclosings\nclosure\nclosured\nclosures\nclosuring\nclot\ncloth\nclothe\nclothed\nclothes\nclotheshorse\nclotheshorses\nclothesline\nclotheslines\nclothespin\nclothespins\nclothier\nclothiers\nclothing\nclothings\ncloths\nclots\nclotted\nclotting\nclotty\ncloture\nclotured\nclotures\ncloturing\ncloud\ncloudburst\ncloudbursts\nclouded\ncloudier\ncloudiest\ncloudily\ncloudiness\nclouding\ncloudless\ncloudlessly\ncloudlessness\ncloudlet\ncloudlets\nclouds\ncloudy\nclough\ncloughs\nclour\ncloured\nclouring\nclours\nclout\nclouted\nclouter\nclouters\nclouting\nclouts\nclove\ncloven\nclover\ncloverleaf\ncloverleafs\ncloverleaves\nclovers\ncloves\nclowder\nclowders\nclown\nclowned\nclowneries\nclownery\nclowning\nclownish\nclownishly\nclownishness\nclowns\ncloy\ncloyed\ncloying\ncloyingly\ncloys\ncloze\nclub\nclubable\nclubbable\nclubbed\nclubber\nclubbers\nclubbier\nclubbiest\nclubbiness\nclubbing\nclubby\nclubfeet\nclubfoot\nclubfooted\nclubhand\nclubhands\nclubhaul\nclubhauled\nclubhauling\nclubhauls\nclubhouse\nclubhouses\nclubman\nclubmen\nclubroot\nclubroots\nclubs\ncluck\nclucked\nclucking\nclucks\nclue\nclued\nclueing\nclues\ncluing\nclumber\nclumbers\nclump\nclumped\nclumpier\nclumpiest\nclumping\nclumpish\nclumps\nclumpy\nclumsier\nclumsiest\nclumsily\nclumsiness\nclumsy\nclung\nclunk\nclunked\nclunker\nclunkers\nclunking\nclunks\nclupeid\nclupeids\nclupeoid\nclupeoids\ncluster\nclustered\nclustering\nclusters\nclustery\nclutch\nclutched\nclutches\nclutching\nclutchy\nclutter\ncluttered\ncluttering\nclutters\nclypeal\nclypeate\nclypei\nclypeus\nclyster\nclysters\ncoach\ncoached\ncoacher\ncoachers\ncoaches\ncoaching\ncoachman\ncoachmen\ncoact\ncoacted\ncoacting\ncoaction\ncoactions\ncoactive\ncoacts\ncoadjutor\ncoadjutors\ncoadmire\ncoadmired\ncoadmires\ncoadmiring\ncoadmit\ncoadmits\ncoadmitted\ncoadmitting\ncoaeval\ncoaevals\ncoagencies\ncoagency\ncoagent\ncoagents\ncoagula\ncoagulability\ncoagulable\ncoagulant\ncoagulants\ncoagulate\ncoagulated\ncoagulates\ncoagulating\ncoagulation\ncoagulations\ncoagulum\ncoagulums\ncoal\ncoala\ncoalas\ncoalbin\ncoalbins\ncoalbox\ncoalboxes\ncoaled\ncoaler\ncoalers\ncoalesce\ncoalesced\ncoalescence\ncoalescent\ncoalesces\ncoalescing\ncoalfish\ncoalfishes\ncoalhole\ncoalholes\ncoalified\ncoalifies\ncoalify\ncoalifying\ncoaling\ncoalition\ncoalitionist\ncoalitionists\ncoalitions\ncoalless\ncoalpit\ncoalpits\ncoals\ncoalsack\ncoalsacks\ncoalshed\ncoalsheds\ncoaly\ncoalyard\ncoalyards\ncoaming\ncoamings\ncoannex\ncoannexed\ncoannexes\ncoannexing\ncoappear\ncoappeared\ncoappearing\ncoappears\ncoapt\ncoapted\ncoapting\ncoapts\ncoarse\ncoarsely\ncoarsen\ncoarsened\ncoarseness\ncoarsening\ncoarsens\ncoarser\ncoarsest\ncoassist\ncoassisted\ncoassisting\ncoassists\ncoassume\ncoassumed\ncoassumes\ncoassuming\ncoast\ncoastal\ncoasted\ncoaster\ncoasters\ncoasting\ncoastings\ncoastline\ncoastlines\ncoasts\ncoat\ncoated\ncoatee\ncoatees\ncoater\ncoaters\ncoati\ncoating\ncoatings\ncoatis\ncoatless\ncoatrack\ncoatracks\ncoatroom\ncoatrooms\ncoats\ncoattail\ncoattails\ncoattend\ncoattended\ncoattending\ncoattends\ncoattest\ncoattested\ncoattesting\ncoattests\ncoauthor\ncoauthored\ncoauthoring\ncoauthors\ncoax\ncoaxal\ncoaxed\ncoaxer\ncoaxers\ncoaxes\ncoaxial\ncoaxing\ncob\ncobalt\ncobaltic\ncobalts\ncobb\ncobber\ncobbers\ncobbier\ncobbiest\ncobble\ncobbled\ncobbler\ncobblers\ncobbles\ncobblestone\ncobblestones\ncobbling\ncobbs\ncobby\ncobia\ncobias\ncoble\ncobles\ncobnut\ncobnuts\ncobra\ncobras\ncobs\ncobweb\ncobwebbed\ncobwebbier\ncobwebbiest\ncobwebbing\ncobwebby\ncobwebs\ncoca\ncocain\ncocaine\ncocaines\ncocains\ncocas\ncoccal\ncocci\ncoccic\ncoccid\ncoccidia\ncoccids\ncoccoid\ncoccoids\ncoccous\ncoccus\ncoccyges\ncoccyx\ncoccyxes\ncochair\ncochaired\ncochairing\ncochairman\ncochairmen\ncochairs\ncochin\ncochins\ncochlea\ncochleae\ncochlear\ncochleas\ncocinera\ncocineras\ncock\ncockade\ncockaded\ncockades\ncockatoo\ncockatoos\ncockatrice\ncockatrices\ncockbill\ncockbilled\ncockbilling\ncockbills\ncockboat\ncockboats\ncockcrow\ncockcrows\ncocked\ncocker\ncockered\ncockerel\ncockerels\ncockering\ncockers\ncockeye\ncockeyed\ncockeyes\ncockfight\ncockfighting\ncockfights\ncockier\ncockiest\ncockily\ncockiness\ncocking\ncockish\ncockle\ncocklebur\ncockleburs\ncockled\ncockles\ncockleshell\ncockleshells\ncocklike\ncockling\ncockloft\ncocklofts\ncockney\ncockneyish\ncockneys\ncockpit\ncockpits\ncockroach\ncockroaches\ncocks\ncockshies\ncockshut\ncockshuts\ncockshy\ncockspur\ncockspurs\ncocksure\ncocksurely\ncocksureness\ncocktail\ncocktailed\ncocktailing\ncocktails\ncockup\ncockups\ncocky\ncoco\ncocoa\ncocoanut\ncocoanuts\ncocoas\ncocobola\ncocobolas\ncocobolo\ncocobolos\ncocomat\ncocomats\ncoconspirator\ncoconspirators\ncoconut\ncoconuts\ncocoon\ncocooned\ncocooning\ncocoons\ncocos\ncocotte\ncocottes\ncocreate\ncocreated\ncocreates\ncocreating\ncod\ncoda\ncodable\ncodas\ncodder\ncodders\ncoddle\ncoddled\ncoddler\ncoddlers\ncoddles\ncoddling\ncode\ncodebtor\ncodebtors\ncodec\ncoded\ncodefendant\ncodefendants\ncodeia\ncodeias\ncodein\ncodeina\ncodeinas\ncodeine\ncodeines\ncodeins\ncodeless\ncoden\ncodens\ncoder\ncoderive\ncoderived\ncoderives\ncoderiving\ncoders\ncodes\ncodex\ncodfish\ncodfishes\ncodger\ncodgers\ncodices\ncodicil\ncodicils\ncodification\ncodifications\ncodified\ncodifier\ncodifiers\ncodifies\ncodify\ncodifying\ncoding\ncodiscoverer\ncodiscoverers\ncodlin\ncodling\ncodlings\ncodlins\ncodon\ncodons\ncodpiece\ncodpieces\ncods\ncoed\ncoeditor\ncoeditors\ncoeds\ncoeducation\ncoeducational\ncoeducationally\ncoeffect\ncoeffects\ncoefficient\ncoefficients\ncoeliac\ncoelom\ncoelomata\ncoelome\ncoelomes\ncoelomic\ncoeloms\ncoembodied\ncoembodies\ncoembody\ncoembodying\ncoemploy\ncoemployed\ncoemploying\ncoemploys\ncoempt\ncoempted\ncoempting\ncoempts\ncoenact\ncoenacted\ncoenacting\ncoenacts\ncoenamor\ncoenamored\ncoenamoring\ncoenamors\ncoendure\ncoendured\ncoendures\ncoenduring\ncoenure\ncoenures\ncoenuri\ncoenurus\ncoenzymatic\ncoenzymatically\ncoenzyme\ncoenzymes\ncoequal\ncoequality\ncoequally\ncoequals\ncoequate\ncoequated\ncoequates\ncoequating\ncoerce\ncoerced\ncoercer\ncoercers\ncoerces\ncoercible\ncoercing\ncoercion\ncoercions\ncoercive\ncoercively\ncoerciveness\ncoerect\ncoerected\ncoerecting\ncoerects\ncoeval\ncoevally\ncoevals\ncoexecutor\ncoexecutors\ncoexert\ncoexerted\ncoexerting\ncoexerts\ncoexist\ncoexisted\ncoexistence\ncoexistent\ncoexisting\ncoexists\ncoextend\ncoextended\ncoextending\ncoextends\ncoextensive\ncoextensively\ncofactor\ncofactors\ncoff\ncoffee\ncoffeehouse\ncoffeehouses\ncoffeepot\ncoffeepots\ncoffees\ncoffer\ncofferdam\ncofferdams\ncoffered\ncoffering\ncoffers\ncoffin\ncoffined\ncoffing\ncoffining\ncoffins\ncoffle\ncoffled\ncoffles\ncoffling\ncoffret\ncoffrets\ncoffs\ncofounder\ncofounders\ncoft\ncog\ncogencies\ncogency\ncogent\ncogently\ncogged\ncogging\ncogitate\ncogitated\ncogitates\ncogitating\ncogitation\ncogitations\ncogitative\ncogito\ncogitos\ncognac\ncognacs\ncognate\ncognates\ncognise\ncognised\ncognises\ncognising\ncognition\ncognitional\ncognitions\ncognitive\ncognizable\ncognizably\ncognizance\ncognizant\ncognize\ncognized\ncognizer\ncognizers\ncognizes\ncognizing\ncognomen\ncognomens\ncognomina\ncognovit\ncognovits\ncogon\ncogons\ncogs\ncogway\ncogways\ncogwheel\ncogwheels\ncohabit\ncohabitant\ncohabitants\ncohabitation\ncohabitations\ncohabited\ncohabiting\ncohabits\ncoheir\ncoheiress\ncoheiresses\ncoheirs\ncohere\ncohered\ncoherence\ncoherency\ncoherent\ncoherently\ncoherer\ncoherers\ncoheres\ncohering\ncohesion\ncohesions\ncohesive\ncohesively\ncohesiveness\ncoho\ncohobate\ncohobated\ncohobates\ncohobating\ncohog\ncohogs\ncohort\ncohorts\ncohos\ncohosh\ncohoshes\ncohune\ncohunes\ncoif\ncoifed\ncoiffe\ncoiffed\ncoiffes\ncoiffeur\ncoiffeurs\ncoiffing\ncoiffure\ncoiffured\ncoiffures\ncoiffuring\ncoifing\ncoifs\ncoign\ncoigne\ncoigned\ncoignes\ncoigning\ncoigns\ncoil\ncoiled\ncoiler\ncoilers\ncoiling\ncoils\ncoin\ncoinable\ncoinage\ncoinages\ncoincide\ncoincided\ncoincidence\ncoincidences\ncoincident\ncoincidental\ncoincidentally\ncoincidently\ncoincides\ncoinciding\ncoined\ncoiner\ncoiners\ncoinfer\ncoinferred\ncoinferring\ncoinfers\ncoinhere\ncoinhered\ncoinheres\ncoinhering\ncoining\ncoinmate\ncoinmates\ncoins\ncoinsurance\ncoinsurances\ncoinsure\ncoinsured\ncoinsurer\ncoinsurers\ncoinsures\ncoinsuring\ncointer\ncointerred\ncointerring\ncointers\ncoir\ncoirs\ncoistrel\ncoistrels\ncoistril\ncoistrils\ncoital\ncoitally\ncoition\ncoitions\ncoitus\ncoituses\ncoke\ncoked\ncokes\ncoking\ncol\ncola\ncolander\ncolanders\ncolas\ncold\ncolder\ncoldest\ncoldhearted\ncoldheartedly\ncoldheartedness\ncoldish\ncoldly\ncoldness\ncoldnesses\ncolds\ncole\ncoles\ncoleseed\ncoleseeds\ncoleslaw\ncoleslaws\ncolessee\ncolessees\ncolessor\ncolessors\ncoleus\ncoleuses\ncolewort\ncoleworts\ncolic\ncolicin\ncolicine\ncolicines\ncolicins\ncolicky\ncolics\ncolies\ncoliform\ncoliforms\ncolin\ncolinear\ncolins\ncoliseum\ncoliseums\ncolistin\ncolistins\ncolitic\ncolitis\ncolitises\ncollaborate\ncollaborated\ncollaborates\ncollaborating\ncollaboration\ncollaborationist\ncollaborationists\ncollaborations\ncollaborative\ncollaborator\ncollaborators\ncollage\ncollagen\ncollagens\ncollages\ncollagist\ncollagists\ncollapse\ncollapsed\ncollapses\ncollapsible\ncollapsing\ncollar\ncollarbone\ncollarbones\ncollard\ncollards\ncollared\ncollaret\ncollarets\ncollaring\ncollars\ncollate\ncollated\ncollateral\ncollaterally\ncollates\ncollating\ncollation\ncollations\ncollator\ncollators\ncolleague\ncolleagues\ncollect\ncollectable\ncollected\ncollectible\ncollectibles\ncollecting\ncollection\ncollections\ncollective\ncollectively\ncollectives\ncollectivism\ncollectivist\ncollectivistic\ncollectivists\ncollectivities\ncollectivity\ncollectivization\ncollectivizations\ncollectivize\ncollectivized\ncollectivizes\ncollectivizing\ncollector\ncollectors\ncollectorship\ncollectorships\ncollects\ncolleen\ncolleens\ncollege\ncolleger\ncollegers\ncolleges\ncollegia\ncollegial\ncollegiality\ncollegian\ncollegians\ncollegiate\ncollet\ncolleted\ncolleting\ncollets\ncollide\ncollided\ncollides\ncolliding\ncollie\ncollied\ncollier\ncollieries\ncolliers\ncolliery\ncollies\ncollimate\ncollimated\ncollimates\ncollimating\ncollimator\ncollimators\ncollins\ncollinses\ncollision\ncollisions\ncollocate\ncollocated\ncollocates\ncollocating\ncollocation\ncollocations\ncollodion\ncollogue\ncollogued\ncollogues\ncolloguing\ncolloid\ncolloidal\ncolloids\ncollop\ncollops\ncolloquial\ncolloquialism\ncolloquialisms\ncolloquially\ncolloquies\ncolloquy\ncollude\ncolluded\ncolluder\ncolluders\ncolludes\ncolluding\ncollusion\ncollusions\ncollusive\ncollusively\ncolluvia\ncolly\ncollying\ncollyria\ncolocate\ncolocated\ncolocates\ncolocating\ncolog\ncologne\ncologned\ncolognes\ncologs\ncolon\ncolonel\ncolonels\ncolones\ncoloni\ncolonial\ncolonialism\ncolonially\ncolonials\ncolonic\ncolonies\ncolonise\ncolonised\ncolonises\ncolonising\ncolonist\ncolonists\ncolonization\ncolonizations\ncolonize\ncolonized\ncolonizer\ncolonizers\ncolonizes\ncolonizing\ncolonnade\ncolonnaded\ncolonnades\ncolons\ncolonus\ncolony\ncolophon\ncolophons\ncolor\ncolorado\ncolorant\ncolorants\ncolorations\ncoloratura\ncoloraturas\ncolored\ncoloreds\ncolorer\ncolorers\ncolorfast\ncolorfastness\ncolorful\ncolorfully\ncolorfulness\ncoloring\ncolorings\ncolorism\ncolorisms\ncolorist\ncoloristic\ncolorists\ncolorless\ncolorlessly\ncolorlessness\ncolors\ncolossal\ncolossally\ncolosseum\ncolosseums\ncolossi\ncolossus\ncolossuses\ncolostomies\ncolostomy\ncolotomies\ncolotomy\ncolour\ncoloured\ncolourer\ncolourers\ncolouring\ncolours\ncolpitis\ncolpitises\ncols\ncolt\ncolter\ncolters\ncoltish\ncoltishly\ncolts\ncolubrid\ncolubrids\ncolugo\ncolugos\ncolumbic\ncolumbine\ncolumbines\ncolumel\ncolumels\ncolumn\ncolumnal\ncolumnar\ncolumned\ncolumnist\ncolumnists\ncolumns\ncolure\ncolures\ncoly\ncolza\ncolzas\ncoma\ncomae\ncomaker\ncomakers\ncomal\ncomas\ncomate\ncomates\ncomatic\ncomatik\ncomatiks\ncomatose\ncomatula\ncomatulae\ncomb\ncombat\ncombatant\ncombatants\ncombated\ncombater\ncombaters\ncombating\ncombative\ncombatively\ncombativeness\ncombats\ncombatted\ncombatting\ncombe\ncombed\ncomber\ncombers\ncombes\ncombinable\ncombination\ncombinational\ncombinations\ncombine\ncombined\ncombiner\ncombiners\ncombines\ncombing\ncombings\ncombining\ncomblike\ncombo\ncombos\ncombs\ncombust\ncombusted\ncombustibility\ncombustible\ncombustibles\ncombustibly\ncombusting\ncombustion\ncombustions\ncombustor\ncombustors\ncombusts\ncome\ncomeback\ncomebacks\ncomedian\ncomedians\ncomedic\ncomedienne\ncomediennes\ncomedies\ncomedo\ncomedones\ncomedos\ncomedown\ncomedowns\ncomedy\ncomelier\ncomeliest\ncomelily\ncomeliness\ncomely\ncomer\ncomers\ncomes\ncomestible\ncomestibles\ncomet\ncometary\ncometh\ncomether\ncomethers\ncometic\ncomets\ncomeuppance\ncomfier\ncomfiest\ncomfit\ncomfits\ncomfort\ncomfortable\ncomfortably\ncomforted\ncomforter\ncomforters\ncomforting\ncomfortingly\ncomforts\ncomfrey\ncomfreys\ncomfy\ncomic\ncomical\ncomicality\ncomically\ncomics\ncoming\ncomings\ncomitia\ncomitial\ncomities\ncomity\ncomix\ncomma\ncommand\ncommandant\ncommandants\ncommanded\ncommandeer\ncommandeered\ncommandeering\ncommandeers\ncommander\ncommanders\ncommandership\ncommanding\ncommandingly\ncommandment\ncommandments\ncommando\ncommandoes\ncommandos\ncommands\ncommas\ncommata\ncommemorate\ncommemorated\ncommemorates\ncommemorating\ncommemoration\ncommemorations\ncommemorative\ncommemoratively\ncommemorator\ncommemorators\ncommence\ncommenced\ncommencement\ncommencements\ncommencer\ncommencers\ncommences\ncommencing\ncommend\ncommendable\ncommendably\ncommendation\ncommendations\ncommendatory\ncommended\ncommending\ncommends\ncommensal\ncommensalism\ncommensally\ncommensals\ncommensurability\ncommensurable\ncommensurably\ncommensurate\ncommensurately\ncommensuration\ncommensurations\ncomment\ncommentaries\ncommentary\ncommentator\ncommentators\ncommented\ncommenting\ncomments\ncommerce\ncommerced\ncommerces\ncommercial\ncommercialism\ncommercialistic\ncommercialization\ncommercializations\ncommercialize\ncommercialized\ncommercializes\ncommercializing\ncommercially\ncommercials\ncommercing\ncommie\ncommies\ncommingle\ncommingled\ncommingles\ncommingling\ncomminute\ncomminuted\ncomminutes\ncomminuting\ncomminution\ncomminutions\ncommiserate\ncommiserated\ncommiserates\ncommiserating\ncommiseration\ncommiserations\ncommiserative\ncommissar\ncommissariat\ncommissariats\ncommissaries\ncommissars\ncommissary\ncommission\ncommissioned\ncommissioner\ncommissioners\ncommissioning\ncommissions\ncommit\ncommitment\ncommitments\ncommits\ncommittable\ncommittal\ncommittals\ncommitted\ncommittee\ncommitteeman\ncommitteemen\ncommittees\ncommitteewoman\ncommitteewomen\ncommitting\ncommix\ncommixed\ncommixes\ncommixing\ncommixt\ncommode\ncommodes\ncommodious\ncommodiously\ncommodiousness\ncommodities\ncommodity\ncommodore\ncommodores\ncommon\ncommonalities\ncommonality\ncommonalties\ncommonalty\ncommoner\ncommoners\ncommonest\ncommonly\ncommonness\ncommonplace\ncommons\ncommonwealth\ncommonwealths\ncommotion\ncommotions\ncommove\ncommoved\ncommoves\ncommoving\ncommunal\ncommunalism\ncommunalist\ncommunalists\ncommunalize\ncommunalized\ncommunalizes\ncommunalizing\ncommunally\ncommune\ncommuned\ncommunes\ncommunicability\ncommunicable\ncommunicableness\ncommunicably\ncommunicant\ncommunicants\ncommunicate\ncommunicated\ncommunicates\ncommunicating\ncommunication\ncommunications\ncommunicative\ncommunicatively\ncommunicativeness\ncommunicator\ncommunicators\ncommuning\ncommunion\ncommunions\ncommunique\ncommuniques\ncommunism\ncommunist\ncommunistic\ncommunistically\ncommunists\ncommunities\ncommunity\ncommunization\ncommunizations\ncommunize\ncommunized\ncommunizes\ncommunizing\ncommutable\ncommutation\ncommutations\ncommutative\ncommutator\ncommutators\ncommute\ncommuted\ncommuter\ncommuters\ncommutes\ncommuting\ncommy\ncomose\ncomous\ncomp\ncompact\ncompacted\ncompacter\ncompactest\ncompactible\ncompacting\ncompaction\ncompactions\ncompactly\ncompactness\ncompactor\ncompactors\ncompacts\ncompadre\ncompadres\ncompanied\ncompanies\ncompanion\ncompanionable\ncompanionableness\ncompanionably\ncompanions\ncompanionship\ncompanionships\ncompanionway\ncompanionways\ncompany\ncompanying\ncomparability\ncomparable\ncomparableness\ncomparably\ncomparative\ncomparatively\ncomparativeness\ncomparator\ncomparators\ncompare\ncompared\ncomparer\ncomparers\ncompares\ncomparing\ncomparison\ncomparisons\ncompart\ncomparted\ncomparting\ncompartment\ncompartmental\ncompartmentalization\ncompartmentalizations\ncompartmentalize\ncompartmentalized\ncompartmentalizes\ncompartmentalizing\ncompartmented\ncompartments\ncomparts\ncompass\ncompassable\ncompassed\ncompasses\ncompassing\ncompassion\ncompassionate\ncompassionately\ncompassionateness\ncompassions\ncompatibilities\ncompatibility\ncompatible\ncompatibleness\ncompatibles\ncompatibly\ncompatriot\ncompatriotic\ncompatriots\ncomped\ncompeer\ncompeered\ncompeering\ncompeers\ncompel\ncompellable\ncompelled\ncompeller\ncompellers\ncompelling\ncompellingly\ncompels\ncompend\ncompendia\ncompendious\ncompendiously\ncompendiousness\ncompendium\ncompendiums\ncompends\ncompensate\ncompensated\ncompensates\ncompensating\ncompensation\ncompensational\ncompensations\ncompensator\ncompensators\ncompensatory\ncompere\ncompered\ncomperes\ncompering\ncompete\ncompeted\ncompetence\ncompetencies\ncompetency\ncompetent\ncompetently\ncompetes\ncompeting\ncompetition\ncompetitions\ncompetitive\ncompetitively\ncompetitiveness\ncompetitor\ncompetitors\ncompetitory\ncompilation\ncompilations\ncompile\ncompiled\ncompiler\ncompilers\ncompiles\ncompiling\ncomping\ncomplacence\ncomplacency\ncomplacent\ncomplacently\ncomplain\ncomplainant\ncomplainants\ncomplained\ncomplainer\ncomplainers\ncomplaining\ncomplainingly\ncomplains\ncomplaint\ncomplaints\ncomplaisance\ncomplaisant\ncomplaisantly\ncompleat\ncomplect\ncomplected\ncomplecting\ncomplects\ncomplement\ncomplemental\ncomplementaries\ncomplementary\ncomplemented\ncomplementing\ncomplements\ncomplete\ncompleted\ncompletely\ncompleteness\ncompleter\ncompletes\ncompletest\ncompleting\ncompletion\ncompletions\ncompletive\ncomplex\ncomplexed\ncomplexer\ncomplexes\ncomplexest\ncomplexing\ncomplexion\ncomplexional\ncomplexioned\ncomplexions\ncomplexities\ncomplexity\ncomplexly\ncomplexness\ncompliance\ncompliances\ncompliancies\ncompliancy\ncompliant\ncompliantly\ncomplicacies\ncomplicacy\ncomplicate\ncomplicated\ncomplicatedly\ncomplicatedness\ncomplicates\ncomplicating\ncomplication\ncomplications\ncomplice\ncomplices\ncomplicities\ncomplicity\ncomplied\ncomplier\ncompliers\ncomplies\ncompliment\ncomplimentarily\ncomplimentary\ncompliments\ncomplin\ncompline\ncomplines\ncomplins\ncomplot\ncomplots\ncomplotted\ncomplotting\ncomply\ncomplying\ncompo\ncompone\ncomponent\ncomponential\ncomponents\ncompony\ncomport\ncomported\ncomporting\ncomportment\ncomportments\ncomports\ncompos\ncompose\ncomposed\ncomposedly\ncomposedness\ncomposer\ncomposers\ncomposes\ncomposing\ncomposite\ncompositely\ncomposites\ncomposition\ncompositional\ncompositions\ncompositor\ncompositors\ncompost\ncomposted\ncomposting\ncomposts\ncomposure\ncomposures\ncompote\ncompotes\ncompound\ncompoundable\ncompounded\ncompounder\ncompounders\ncompounding\ncompounds\ncomprehend\ncomprehended\ncomprehendible\ncomprehending\ncomprehends\ncomprehensibility\ncomprehensible\ncomprehensibleness\ncomprehensibly\ncomprehension\ncomprehensions\ncomprehensive\ncomprehensively\ncomprehensiveness\ncompress\ncompressed\ncompressedly\ncompresses\ncompressibility\ncompressible\ncompressing\ncompression\ncompressional\ncompressions\ncompressive\ncompressively\ncompressor\ncompressors\ncomprise\ncomprised\ncomprises\ncomprising\ncomprize\ncomprized\ncomprizes\ncomprizing\ncompromise\ncompromised\ncompromiser\ncompromisers\ncompromises\ncompromising\ncomps\ncompt\ncompted\ncompting\ncomptroller\ncomptrollers\ncomptrollership\ncomptrollerships\ncompts\ncompulsion\ncompulsions\ncompulsive\ncompulsively\ncompulsiveness\ncompulsorily\ncompulsory\ncompunction\ncompunctions\ncompunctious\ncomputability\ncomputable\ncomputation\ncomputational\ncomputations\ncompute\ncomputed\ncomputer\ncomputerese\ncomputerizable\ncomputerization\ncomputerizations\ncomputerize\ncomputerized\ncomputerizes\ncomputerizing\ncomputers\ncomputes\ncomputing\ncomrade\ncomradely\ncomrades\ncomradeship\ncomradeships\ncomte\ncomtes\ncon\nconation\nconations\nconative\nconatus\nconcatenate\nconcatenated\nconcatenates\nconcatenating\nconcatenation\nconcatenations\nconcave\nconcaved\nconcavely\nconcaveness\nconcaves\nconcaving\nconcavities\nconcavity\nconceal\nconcealable\nconcealed\nconcealer\nconcealers\nconcealing\nconcealment\nconcealments\nconceals\nconcede\nconceded\nconcededly\nconceder\nconceders\nconcedes\nconceding\nconceit\nconceited\nconceitedly\nconceitedness\nconceiting\nconceits\nconceivability\nconceivable\nconceivableness\nconceivably\nconceive\nconceived\nconceiver\nconceivers\nconceives\nconceiving\nconcent\nconcentrate\nconcentrated\nconcentrates\nconcentrating\nconcentration\nconcentrations\nconcentrative\nconcentrator\nconcentrators\nconcentric\nconcentrically\nconcentricities\nconcentricity\nconcents\nconcept\nconception\nconceptional\nconceptions\nconceptive\nconcepts\nconceptual\nconceptualism\nconceptualist\nconceptualistic\nconceptualists\nconceptualize\nconceptualized\nconceptualizes\nconceptualizing\nconceptually\nconcern\nconcerned\nconcerning\nconcernment\nconcernments\nconcerns\nconcert\nconcerted\nconcertedly\nconcerti\nconcerting\nconcertize\nconcertized\nconcertizes\nconcertizing\nconcertmaster\nconcertmasters\nconcertmeister\nconcertmeisters\nconcerto\nconcertos\nconcerts\nconcession\nconcessionaire\nconcessionaires\nconcessionary\nconcessions\nconcessive\nconcessively\nconch\nconcha\nconchae\nconchal\nconches\nconchies\nconchoid\nconchoids\nconchs\nconchy\nconcierge\nconcierges\nconciliar\nconciliarly\nconciliate\nconciliated\nconciliates\nconciliating\nconciliation\nconciliations\nconciliative\nconciliator\nconciliators\nconciliatory\nconcise\nconcisely\nconciseness\nconciser\nconcisest\nconcision\nconclave\nconclaves\nconclavist\nconclavists\nconclude\nconcluded\nconcluder\nconcluders\nconcludes\nconcluding\nconclusion\nconclusions\nconclusive\nconclusively\nconclusiveness\nconcoct\nconcocted\nconcocting\nconcoction\nconcoctions\nconcoctive\nconcocts\nconcomitance\nconcomitant\nconcomitantly\nconcomitants\nconcord\nconcordance\nconcordances\nconcordant\nconcordantly\nconcordat\nconcordats\nconcords\nconcourse\nconcourses\nconcrete\nconcreted\nconcretely\nconcreteness\nconcretes\nconcreting\nconcretion\nconcretionary\nconcretions\nconcretization\nconcretizations\nconcretize\nconcretized\nconcretizes\nconcretizing\nconcubine\nconcubines\nconcur\nconcurred\nconcurrence\nconcurrences\nconcurrent\nconcurrently\nconcurrents\nconcurring\nconcurs\nconcuss\nconcussed\nconcusses\nconcussing\nconcussion\nconcussions\nconcussive\ncondemn\ncondemnable\ncondemnation\ncondemnations\ncondemnatory\ncondemned\ncondemner\ncondemners\ncondemning\ncondemnor\ncondemnors\ncondemns\ncondensable\ncondensate\ncondensates\ncondensation\ncondensational\ncondensations\ncondense\ncondensed\ncondenser\ncondensers\ncondenses\ncondensing\ncondescend\ncondescended\ncondescendence\ncondescending\ncondescendingly\ncondescends\ncondescension\ncondescensions\ncondign\ncondignly\ncondiment\ncondiments\ncondition\nconditional\nconditionally\nconditionals\nconditioned\nconditioner\nconditioners\nconditioning\nconditions\ncondo\ncondole\ncondoled\ncondolence\ncondolences\ncondoler\ncondolers\ncondoles\ncondoling\ncondom\ncondominium\ncondominiums\ncondoms\ncondonable\ncondonation\ncondonations\ncondone\ncondoned\ncondoner\ncondoners\ncondones\ncondoning\ncondor\ncondores\ncondors\nconduce\nconduced\nconducer\nconducers\nconduces\nconducing\nconducive\nconduciveness\nconduct\nconductance\nconductances\nconducted\nconductibilities\nconductibility\nconductible\nconducting\nconduction\nconductions\nconductive\nconductivities\nconductivity\nconductor\nconductorial\nconductors\nconductress\nconductresses\nconducts\nconduit\nconduits\ncondylar\ncondyle\ncondyles\ncone\nconed\nconelrad\nconelrads\nconenose\nconenoses\nconepate\nconepates\nconepatl\nconepatls\ncones\nconey\nconeys\nconfab\nconfabbed\nconfabbing\nconfabs\nconfabulate\nconfabulated\nconfabulates\nconfabulating\nconfabulation\nconfabulations\nconfabulator\nconfabulators\nconfect\nconfected\nconfecting\nconfection\nconfectioner\nconfectioneries\nconfectioners\nconfectionery\nconfections\nconfects\nconfederacies\nconfederacy\nconfederalist\nconfederalists\nconfederate\nconfederated\nconfederates\nconfederating\nconfederation\nconfederations\nconfer\nconferee\nconferees\nconference\nconferences\nconferment\nconferments\nconferrable\nconferral\nconferrals\nconferred\nconferrer\nconferrers\nconferring\nconfers\nconferva\nconfervae\nconfervas\nconfess\nconfessable\nconfessed\nconfessedly\nconfesses\nconfessing\nconfession\nconfessional\nconfessionals\nconfessions\nconfessor\nconfessors\nconfetti\nconfetto\nconfidant\nconfidante\nconfidantes\nconfidants\nconfide\nconfided\nconfidence\nconfidences\nconfident\nconfidential\nconfidentiality\nconfidentially\nconfidentialness\nconfidently\nconfider\nconfiders\nconfides\nconfiding\nconfidingly\nconfiguration\nconfigurational\nconfigurationally\nconfigurations\nconfigurative\nconfigure\nconfigured\nconfigures\nconfiguring\nconfine\nconfined\nconfinement\nconfinements\nconfiner\nconfiners\nconfines\nconfining\nconfirm\nconfirmable\nconfirmation\nconfirmations\nconfirmatory\nconfirmed\nconfirmedly\nconfirming\nconfirms\nconfiscable\nconfiscate\nconfiscated\nconfiscates\nconfiscating\nconfiscation\nconfiscations\nconfiscator\nconfiscators\nconfiscatory\nconflagration\nconflagrations\nconflate\nconflated\nconflates\nconflating\nconflict\nconflicted\nconflicting\nconflictingly\nconfliction\nconflictions\nconflictive\nconflicts\nconflux\nconfluxes\nconfocal\nconform\nconformable\nconformably\nconformal\nconformance\nconformances\nconformation\nconformations\nconformed\nconformer\nconformers\nconforming\nconformism\nconformisms\nconformist\nconformists\nconformities\nconformity\nconforms\nconfound\nconfounded\nconfoundedly\nconfounder\nconfounders\nconfounding\nconfounds\nconfraternities\nconfraternity\nconfrere\nconfreres\nconfront\nconfrontation\nconfrontational\nconfrontationist\nconfrontationists\nconfrontations\nconfronted\nconfronter\nconfronters\nconfronting\nconfronts\nconfuse\nconfused\nconfusedly\nconfusedness\nconfuses\nconfusing\nconfusingly\nconfusion\nconfusional\nconfusions\nconfutation\nconfutations\nconfutative\nconfute\nconfuted\nconfuter\nconfuters\nconfutes\nconfuting\nconga\ncongaed\ncongaing\ncongas\nconge\ncongeal\ncongealed\ncongealing\ncongealment\ncongealments\ncongeals\ncongee\ncongeed\ncongeeing\ncongees\ncongener\ncongeneric\ncongeners\ncongenial\ncongeniality\ncongenially\ncongenital\ncongenitally\nconger\ncongeries\ncongers\nconges\ncongest\ncongested\ncongesting\ncongestion\ncongestions\ncongestive\ncongests\ncongii\ncongius\nconglobe\nconglobed\nconglobes\nconglobing\nconglomerate\nconglomerated\nconglomerates\nconglomeratic\nconglomerating\nconglomeration\nconglomerations\nconglomerator\nconglomerators\ncongo\ncongoes\ncongos\ncongou\ncongous\ncongratulate\ncongratulated\ncongratulates\ncongratulating\ncongratulation\ncongratulations\ncongratulator\ncongratulators\ncongratulatory\ncongregate\ncongregated\ncongregates\ncongregating\ncongregation\ncongregational\ncongregationalism\ncongregationalist\ncongregationalists\ncongregations\ncongregator\ncongregators\ncongress\ncongressed\ncongresses\ncongressing\ncongressional\ncongressionally\ncongressman\ncongressmen\ncongresswoman\ncongresswomen\ncongruence\ncongruencies\ncongruency\ncongruent\ncongruently\ncongruities\ncongruity\ncongruous\ncongruously\ncongruousness\nconi\nconic\nconical\nconically\nconicities\nconicity\nconics\nconidia\nconidial\nconidian\nconidium\nconies\nconifer\nconiferous\nconifers\nconiine\nconiines\nconin\nconine\nconines\nconing\nconins\nconium\nconiums\nconjectural\nconjecturally\nconjecture\nconjectured\nconjecturer\nconjecturers\nconjectures\nconjecturing\nconjoin\nconjoined\nconjoining\nconjoins\nconjoint\nconjointly\nconjugal\nconjugality\nconjugally\nconjugate\nconjugated\nconjugately\nconjugateness\nconjugates\nconjugating\nconjugation\nconjugational\nconjugationally\nconjugations\nconjugative\nconjunct\nconjunction\nconjunctional\nconjunctionally\nconjunctions\nconjunctiva\nconjunctivae\nconjunctival\nconjunctivas\nconjunctive\nconjunctively\nconjunctives\nconjuncts\nconjuncture\nconjunctures\nconjuration\nconjurations\nconjure\nconjured\nconjurer\nconjurers\nconjures\nconjuring\nconjuror\nconjurors\nconk\nconked\nconker\nconkers\nconking\nconks\nconky\nconn\nconnate\nconnect\nconnectable\nconnected\nconnectedly\nconnectedness\nconnecting\nconnection\nconnectional\nconnections\nconnective\nconnectively\nconnectivity\nconnector\nconnectors\nconnects\nconned\nconner\nconners\nconning\nconniption\nconniptions\nconnivance\nconnivances\nconnive\nconnived\nconniver\nconnivers\nconnives\nconniving\nconnoisseur\nconnoisseurs\nconnoisseurship\nconnoisseurships\nconnotation\nconnotational\nconnotations\nconnotative\nconnotatively\nconnote\nconnoted\nconnotes\nconnoting\nconns\nconnubial\nconnubiality\nconnubially\nconodont\nconodonts\nconoid\nconoidal\nconoids\nconquer\nconquered\nconquering\nconqueror\nconquerors\nconquers\nconquest\nconquests\nconquian\nconquians\nconquistador\nconquistadores\nconquistadors\ncons\nconsanguineous\nconsanguineously\nconsanguinities\nconsanguinity\nconscience\nconscienceless\nconsciences\nconscientious\nconscientiously\nconscientiousness\nconscionable\nconscious\nconsciously\nconsciousness\nconscript\nconscripted\nconscripting\nconscription\nconscriptions\nconscripts\nconsecrate\nconsecrated\nconsecrates\nconsecrating\nconsecration\nconsecrations\nconsecrative\nconsecrator\nconsecrators\nconsecratory\nconsecutive\nconsecutively\nconsecutiveness\nconsensual\nconsensually\nconsensus\nconsensuses\nconsent\nconsented\nconsenting\nconsents\nconsequence\nconsequences\nconsequent\nconsequential\nconsequentiality\nconsequentially\nconsequentialness\nconsequently\nconsequents\nconservancies\nconservancy\nconservation\nconservational\nconservationist\nconservationists\nconservations\nconservatism\nconservative\nconservatively\nconservativeness\nconservatives\nconservator\nconservatories\nconservators\nconservatory\nconserve\nconserved\nconserver\nconservers\nconserves\nconserving\nconsider\nconsiderable\nconsiderably\nconsiderate\nconsiderately\nconsiderateness\nconsideration\nconsiderations\nconsidered\nconsidering\nconsiders\nconsign\nconsignable\nconsignation\nconsignations\nconsigned\nconsignee\nconsignees\nconsigning\nconsignment\nconsignments\nconsignor\nconsignors\nconsigns\nconsist\nconsisted\nconsistence\nconsistencies\nconsistency\nconsistent\nconsistently\nconsisting\nconsists\nconsol\nconsolable\nconsolation\nconsolations\nconsolatory\nconsole\nconsoled\nconsoler\nconsolers\nconsoles\nconsolidate\nconsolidated\nconsolidates\nconsolidating\nconsolidation\nconsolidations\nconsolidator\nconsolidators\nconsoling\nconsols\nconsomme\nconsommes\nconsonance\nconsonances\nconsonancies\nconsonancy\nconsonant\nconsonantal\nconsonantly\nconsonants\nconsort\nconsorted\nconsortia\nconsorting\nconsortium\nconsorts\nconspectus\nconspectuses\nconspicuous\nconspicuously\nconspicuousness\nconspiracies\nconspiracy\nconspirator\nconspiratorial\nconspiratorially\nconspirators\nconspire\nconspired\nconspires\nconspiring\nconstable\nconstables\nconstabularies\nconstabulary\nconstancy\nconstant\nconstantly\nconstants\nconstellation\nconstellations\nconsternate\nconsternated\nconsternates\nconsternating\nconsternation\nconsternations\nconstipate\nconstipated\nconstipates\nconstipating\nconstipation\nconstipations\nconstituencies\nconstituency\nconstituent\nconstituently\nconstituents\nconstitute\nconstituted\nconstitutes\nconstituting\nconstitution\nconstitutional\nconstitutionalism\nconstitutionalisms\nconstitutionalist\nconstitutionalists\nconstitutionalities\nconstitutionality\nconstitutionally\nconstitutionals\nconstitutions\nconstitutive\nconstitutively\nconstrain\nconstrained\nconstrainedly\nconstraining\nconstrains\nconstraint\nconstraints\nconstrict\nconstricted\nconstricting\nconstriction\nconstrictions\nconstrictive\nconstrictor\nconstrictors\nconstricts\nconstruable\nconstruct\nconstructed\nconstructible\nconstructing\nconstruction\nconstructional\nconstructionally\nconstructionist\nconstructionists\nconstructions\nconstructive\nconstructively\nconstructiveness\nconstructor\nconstructors\nconstructs\nconstrue\nconstrued\nconstrues\nconstruing\nconsubstantial\nconsubstantiation\nconsul\nconsular\nconsulate\nconsulates\nconsuls\nconsulship\nconsulships\nconsult\nconsultant\nconsultants\nconsultation\nconsultations\nconsultative\nconsulted\nconsulter\nconsulters\nconsulting\nconsultive\nconsultor\nconsultors\nconsults\nconsumable\nconsume\nconsumed\nconsumedly\nconsumer\nconsumerism\nconsumerist\nconsumerists\nconsumers\nconsumes\nconsuming\nconsummate\nconsummated\nconsummately\nconsummates\nconsummating\nconsummation\nconsummations\nconsummative\nconsummator\nconsummators\nconsummatory\nconsumption\nconsumptions\nconsumptive\nconsumptively\nconsumptiveness\nconsumptives\ncontact\ncontacted\ncontacting\ncontacts\ncontagia\ncontagion\ncontagions\ncontagious\ncontagiously\ncontagiousness\ncontain\ncontainable\ncontained\ncontainer\ncontainers\ncontaining\ncontainment\ncontainments\ncontains\ncontaminant\ncontaminants\ncontaminate\ncontaminated\ncontaminates\ncontaminating\ncontamination\ncontaminations\ncontaminative\ncontaminator\ncontaminators\nconte\ncontemn\ncontemned\ncontemner\ncontemners\ncontemning\ncontemns\ncontemplate\ncontemplated\ncontemplates\ncontemplating\ncontemplation\ncontemplations\ncontemplative\ncontemplatively\ncontemplativeness\ncontemplator\ncontemplators\ncontemporaneous\ncontemporaneously\ncontemporaneousness\ncontemporaries\ncontemporarily\ncontemporary\ncontempt\ncontemptibility\ncontemptible\ncontemptibleness\ncontemptibly\ncontempts\ncontemptuous\ncontemptuously\ncontemptuousness\ncontend\ncontended\ncontender\ncontenders\ncontending\ncontends\ncontent\ncontented\ncontentedly\ncontentedness\ncontenting\ncontention\ncontentions\ncontentious\ncontentiously\ncontentiousness\ncontentment\ncontentments\ncontents\nconterminous\ncontes\ncontest\ncontestable\ncontestably\ncontestant\ncontestants\ncontestation\ncontestations\ncontested\ncontester\ncontesters\ncontesting\ncontests\ncontext\ncontexts\ncontextual\ncontextually\ncontexture\ncontextures\ncontiguities\ncontiguity\ncontiguous\ncontiguously\ncontiguousness\ncontinence\ncontinent\ncontinental\ncontinentally\ncontinentals\ncontinently\ncontinents\ncontingencies\ncontingency\ncontingent\ncontingently\ncontingents\ncontinua\ncontinual\ncontinually\ncontinuance\ncontinuances\ncontinuant\ncontinuants\ncontinuation\ncontinuations\ncontinuative\ncontinuator\ncontinuators\ncontinue\ncontinued\ncontinuer\ncontinuers\ncontinues\ncontinuing\ncontinuingly\ncontinuities\ncontinuity\ncontinuo\ncontinuos\ncontinuous\ncontinuously\ncontinuousness\ncontinuum\nconto\ncontort\ncontorted\ncontorting\ncontortion\ncontortionist\ncontortionists\ncontortions\ncontortive\ncontorts\ncontos\ncontour\ncontoured\ncontouring\ncontours\ncontra\ncontraband\ncontrabandist\ncontrabandists\ncontrabass\ncontrabassoon\ncontrabassoons\ncontraception\ncontraceptions\ncontraceptive\ncontraceptives\ncontract\ncontracted\ncontractibility\ncontractible\ncontractile\ncontractility\ncontracting\ncontraction\ncontractional\ncontractions\ncontractive\ncontractor\ncontractors\ncontracts\ncontractual\ncontractually\ncontradict\ncontradictable\ncontradicted\ncontradicting\ncontradiction\ncontradictions\ncontradictor\ncontradictorily\ncontradictoriness\ncontradictors\ncontradictory\ncontradicts\ncontradistinction\ncontradistinctions\ncontradistinctive\ncontradistinctively\ncontrail\ncontrails\ncontralto\ncontraltos\ncontraption\ncontraptions\ncontrapuntal\ncontrapuntally\ncontraries\ncontrarieties\ncontrariety\ncontrarily\ncontrariness\ncontrariwise\ncontrary\ncontrast\ncontrastable\ncontrasted\ncontrasting\ncontrastive\ncontrastively\ncontrasts\ncontravene\ncontravened\ncontravener\ncontraveners\ncontravenes\ncontravening\ncontravention\ncontraventions\ncontretemps\ncontribute\ncontributed\ncontributes\ncontributing\ncontribution\ncontributions\ncontributive\ncontributively\ncontributor\ncontributors\ncontributory\ncontrite\ncontritely\ncontriteness\ncontrition\ncontritions\ncontrivance\ncontrivances\ncontrive\ncontrived\ncontriver\ncontrivers\ncontrives\ncontriving\ncontrol\ncontrollability\ncontrollable\ncontrollably\ncontrolled\ncontroller\ncontrollers\ncontrollership\ncontrollerships\ncontrolling\ncontrols\ncontroversial\ncontroversialist\ncontroversialists\ncontroversially\ncontroversies\ncontroversy\ncontrovert\ncontroverted\ncontroverter\ncontroverters\ncontrovertible\ncontroverting\ncontroverts\ncontumacies\ncontumacious\ncontumaciously\ncontumacy\ncontumelies\ncontumelious\ncontumeliously\ncontumely\ncontuse\ncontused\ncontuses\ncontusing\ncontusion\ncontusions\nconundrum\nconundrums\nconus\nconvalesce\nconvalesced\nconvalescence\nconvalescences\nconvalescent\nconvalescents\nconvalesces\nconvalescing\nconvect\nconvected\nconvecting\nconvection\nconvectional\nconvections\nconvective\nconvector\nconvectors\nconvects\nconvene\nconvened\nconvener\nconveners\nconvenes\nconvenience\nconveniences\nconvenient\nconveniently\nconvening\nconvent\nconvented\nconventicle\nconventicler\nconventiclers\nconventicles\nconventing\nconvention\nconventional\nconventionalism\nconventionalist\nconventionalists\nconventionalities\nconventionality\nconventionalization\nconventionalizations\nconventionalize\nconventionalized\nconventionalizes\nconventionalizing\nconventionally\nconventioneer\nconventioneers\nconventions\nconvents\nconventual\nconverge\nconverged\nconvergence\nconvergencies\nconvergency\nconvergent\nconverges\nconverging\nconversable\nconversant\nconversantly\nconversation\nconversational\nconversationalist\nconversationalists\nconversationally\nconversations\nconverse\nconversed\nconversely\nconverser\nconversers\nconverses\nconversing\nconversion\nconversional\nconversions\nconvert\nconverted\nconverter\nconverters\nconvertibilities\nconvertibility\nconvertible\nconvertibleness\nconvertibles\nconvertibly\nconverting\nconvertor\nconvertors\nconverts\nconvex\nconvexes\nconvexities\nconvexity\nconvexly\nconvexness\nconvey\nconveyance\nconveyancer\nconveyancers\nconveyances\nconveyancing\nconveyed\nconveyer\nconveyers\nconveying\nconveyor\nconveyors\nconveys\nconvict\nconvicted\nconvicting\nconviction\nconvictions\nconvicts\nconvince\nconvinced\nconvincer\nconvincers\nconvinces\nconvincing\nconvincingly\nconvincingness\nconvivial\nconvivialities\nconviviality\nconvivially\nconvocation\nconvocational\nconvocations\nconvoke\nconvoked\nconvoker\nconvokers\nconvokes\nconvoking\nconvolute\nconvoluted\nconvolutes\nconvoluting\nconvolution\nconvolutional\nconvolutions\nconvolve\nconvolved\nconvolves\nconvolving\nconvoy\nconvoyed\nconvoying\nconvoys\nconvulse\nconvulsed\nconvulses\nconvulsing\nconvulsion\nconvulsionary\nconvulsions\nconvulsive\nconvulsively\nconvulsiveness\ncony\ncoo\ncooch\ncooches\ncooed\ncooee\ncooeed\ncooeeing\ncooees\ncooer\ncooers\ncooey\ncooeyed\ncooeying\ncooeys\ncoof\ncoofs\ncooing\ncooingly\ncook\ncookable\ncookbook\ncookbooks\ncooked\ncooker\ncookeries\ncookers\ncookery\ncookey\ncookeys\ncookie\ncookies\ncooking\ncookings\ncookless\ncookout\ncookouts\ncooks\ncookshop\ncookshops\ncookware\ncookwares\ncooky\ncool\ncoolant\ncoolants\ncooled\ncooler\ncoolers\ncoolest\ncoolie\ncoolies\ncooling\ncoolish\ncoolly\ncoolness\ncoolnesses\ncools\ncooly\ncoomb\ncoombe\ncoombes\ncoombs\ncoon\ncooncan\ncooncans\ncoons\ncoonskin\ncoonskins\ncoontie\ncoonties\ncoop\ncooped\ncooper\ncooperage\ncooperages\ncooperate\ncooperated\ncooperates\ncooperating\ncooperation\ncooperations\ncooperative\ncooperatively\ncooperativeness\ncooperatives\ncooperator\ncooperators\ncoopered\ncooperies\ncoopering\ncoopers\ncoopery\ncooping\ncoops\ncoopt\ncoopted\ncoopting\ncooption\ncooptions\ncoopts\ncoordinate\ncoordinated\ncoordinately\ncoordinates\ncoordinating\ncoordination\ncoordinations\ncoordinator\ncoordinators\ncoos\ncoot\ncootie\ncooties\ncoots\ncop\ncopaiba\ncopaibas\ncopal\ncopalm\ncopalms\ncopals\ncoparent\ncoparents\ncopartner\ncopartners\ncopartnership\ncopartnerships\ncopastor\ncopastors\ncopatron\ncopatrons\ncope\ncopeck\ncopecks\ncoped\ncopemate\ncopemates\ncopen\ncopens\ncopepod\ncopepods\ncoper\ncopers\ncopes\ncopied\ncopier\ncopiers\ncopies\ncopihue\ncopihues\ncopilot\ncopilots\ncoping\ncopings\ncopious\ncopiously\ncopiousness\ncoplanar\ncoplot\ncoplots\ncoplotted\ncoplotting\ncopolymer\ncopolymerization\ncopolymerizations\ncopolymerize\ncopolymerized\ncopolymerizes\ncopolymerizing\ncopolymers\ncopped\ncopper\ncopperah\ncopperahs\ncopperas\ncopperases\ncoppered\ncopperhead\ncopperheads\ncoppering\ncopperplate\ncopperplates\ncoppers\ncoppersmith\ncoppersmiths\ncoppery\ncoppice\ncoppiced\ncoppices\ncopping\ncoppra\ncoppras\ncopra\ncoprah\ncoprahs\ncopras\ncopremia\ncopremias\ncopremic\ncops\ncopse\ncopses\ncopter\ncopters\ncopula\ncopulae\ncopular\ncopulas\ncopulate\ncopulated\ncopulates\ncopulating\ncopulation\ncopulations\ncopulative\ncopulatively\ncopy\ncopybook\ncopybooks\ncopyboy\ncopyboys\ncopycat\ncopycats\ncopycatted\ncopycatting\ncopydesk\ncopydesks\ncopyhold\ncopyholds\ncopying\ncopyist\ncopyists\ncopyreader\ncopyreaders\ncopyright\ncopyrighted\ncopyrighter\ncopyrighters\ncopyrighting\ncopyrights\ncopywriter\ncopywriters\ncoquet\ncoquetries\ncoquetry\ncoquets\ncoquette\ncoquetted\ncoquettes\ncoquetting\ncoquettish\ncoquettishly\ncoquettishness\ncoquille\ncoquilles\ncoquina\ncoquinas\ncoquito\ncoquitos\ncor\ncoracle\ncoracles\ncoracoid\ncoracoids\ncoral\ncorals\ncoranto\ncorantoes\ncorantos\ncorban\ncorbans\ncorbeil\ncorbeils\ncorbel\ncorbeled\ncorbeling\ncorbelled\ncorbelling\ncorbels\ncorbie\ncorbies\ncorbina\ncorbinas\ncorby\ncord\ncordage\ncordages\ncordate\ncorded\ncorder\ncorders\ncordial\ncordiality\ncordially\ncordialness\ncordials\ncordillera\ncordilleras\ncording\ncordite\ncordites\ncordless\ncordlike\ncordoba\ncordobas\ncordon\ncordoned\ncordoning\ncordons\ncordovan\ncordovans\ncords\ncorduroy\ncorduroyed\ncorduroying\ncorduroys\ncordwain\ncordwains\ncordwood\ncordwoods\ncore\ncored\ncoredeem\ncoredeemed\ncoredeeming\ncoredeems\ncoreign\ncoreigns\ncorelate\ncorelated\ncorelates\ncorelating\ncoreless\ncoremia\ncoremium\ncorer\ncorers\ncores\ncorespondent\ncorespondents\ncorf\ncorgi\ncorgis\ncoria\ncoriander\ncorianders\ncoring\ncorium\ncork\ncorkage\ncorkages\ncorkboard\ncorked\ncorker\ncorkers\ncorkier\ncorkiest\ncorking\ncorklike\ncorks\ncorkscrew\ncorkscrews\ncorkwood\ncorkwoods\ncorky\ncorm\ncormel\ncormels\ncormlike\ncormoid\ncormorant\ncormorants\ncormous\ncorms\ncorn\ncornball\ncornballs\ncorncake\ncorncakes\ncorncob\ncorncobs\ncorncrib\ncorncribs\ncornea\ncorneal\ncorneas\ncorned\ncornel\ncornels\ncorneous\ncorner\ncornered\ncornering\ncorners\ncornerstone\ncornerstones\ncornet\ncornetcies\ncornetcy\ncornetist\ncornetists\ncornets\ncornettist\ncornettists\ncornfed\ncornfield\ncornfields\ncornflower\ncornflowers\ncornhusk\ncornhusking\ncornhusks\ncornice\ncorniced\ncornices\ncorniche\ncorniches\ncornicing\ncornicle\ncornicles\ncornier\ncorniest\ncornily\ncorning\ncornmeal\ncornmeals\ncorns\ncornstalk\ncornstalks\ncornstarch\ncornu\ncornua\ncornual\ncornucopia\ncornucopias\ncornus\ncornuses\ncornute\ncornuted\ncornuto\ncornutos\ncorny\ncorodies\ncorody\ncorolla\ncorollaries\ncorollary\ncorollas\ncorollate\ncorona\ncoronach\ncoronachs\ncoronae\ncoronal\ncoronals\ncoronaries\ncoronary\ncoronas\ncoronation\ncoronations\ncoronel\ncoronels\ncoroner\ncoroners\ncoronet\ncoronets\ncorotate\ncorotated\ncorotates\ncorotating\ncorpora\ncorporal\ncorporally\ncorporals\ncorporate\ncorporately\ncorporation\ncorporations\ncorporatist\ncorporatists\ncorporative\ncorporativism\ncorporator\ncorporators\ncorporeal\ncorporeality\ncorporeally\ncorporealness\ncorps\ncorpse\ncorpses\ncorpsman\ncorpsmen\ncorpulence\ncorpulency\ncorpulent\ncorpulently\ncorpus\ncorpuscle\ncorpuscles\ncorrade\ncorraded\ncorrades\ncorrading\ncorral\ncorralled\ncorralling\ncorrals\ncorrect\ncorrectable\ncorrected\ncorrecter\ncorrectest\ncorrecting\ncorrection\ncorrectional\ncorrections\ncorrective\ncorrectively\ncorrectly\ncorrectness\ncorrector\ncorrectors\ncorrects\ncorrelate\ncorrelated\ncorrelates\ncorrelating\ncorrelation\ncorrelational\ncorrelations\ncorrelative\ncorrelatively\ncorrelatives\ncorrespond\ncorresponded\ncorrespondence\ncorrespondences\ncorrespondent\ncorrespondents\ncorresponding\ncorrespondingly\ncorresponds\ncorrida\ncorridas\ncorridor\ncorridors\ncorrie\ncorries\ncorrigibility\ncorrigible\ncorrigibly\ncorrival\ncorrivals\ncorroborate\ncorroborated\ncorroborates\ncorroborating\ncorroboration\ncorroborations\ncorroborative\ncorroboratively\ncorroborator\ncorroborators\ncorroboratory\ncorrode\ncorroded\ncorrodes\ncorrodible\ncorrodies\ncorroding\ncorrody\ncorrosion\ncorrosions\ncorrosive\ncorrosively\ncorrosiveness\ncorrosives\ncorrugate\ncorrugated\ncorrugates\ncorrugating\ncorrugation\ncorrugations\ncorrupt\ncorrupted\ncorrupter\ncorrupters\ncorruptest\ncorruptibility\ncorruptible\ncorrupting\ncorruption\ncorruptions\ncorruptive\ncorruptly\ncorruptness\ncorruptor\ncorruptors\ncorrupts\ncorsac\ncorsacs\ncorsage\ncorsages\ncorsair\ncorsairs\ncorse\ncorselet\ncorselets\ncorses\ncorset\ncorseted\ncorseting\ncorsets\ncorslet\ncorslets\ncortege\ncorteges\ncortex\ncortexes\ncortical\ncortically\ncortices\ncortin\ncortins\ncortisol\ncortisols\ncortisone\ncorundum\ncorundums\ncoruscate\ncoruscated\ncoruscates\ncoruscating\ncoruscation\ncoruscations\ncorvee\ncorvees\ncorves\ncorvet\ncorvets\ncorvette\ncorvettes\ncorvina\ncorvinas\ncorvine\ncory\ncorymb\ncorymbed\ncorymbs\ncoryphee\ncoryphees\ncoryza\ncoryzal\ncoryzas\ncos\ncosec\ncosecant\ncosecants\ncosecs\ncoses\ncoset\ncosets\ncosey\ncoseys\ncosh\ncoshed\ncosher\ncoshered\ncoshering\ncoshers\ncoshes\ncoshing\ncosie\ncosier\ncosies\ncosiest\ncosign\ncosignatories\ncosignatory\ncosigned\ncosigner\ncosigners\ncosigning\ncosigns\ncosily\ncosine\ncosines\ncosiness\ncosinesses\ncosmetic\ncosmetically\ncosmetician\ncosmeticians\ncosmetics\ncosmetologist\ncosmetologists\ncosmetology\ncosmic\ncosmical\ncosmically\ncosmism\ncosmisms\ncosmist\ncosmists\ncosmogonies\ncosmogonist\ncosmogonists\ncosmogony\ncosmographer\ncosmographers\ncosmographic\ncosmographies\ncosmography\ncosmological\ncosmologically\ncosmologist\ncosmologists\ncosmology\ncosmonaut\ncosmonauts\ncosmopolitan\ncosmopolitanism\ncosmopolitans\ncosmopolite\ncosmopolites\ncosmos\ncosmoses\ncosponsor\ncosponsored\ncosponsoring\ncosponsors\ncosponsorship\ncosponsorships\ncoss\ncossack\ncossacks\ncosset\ncosseted\ncosseting\ncossets\ncost\ncosta\ncostae\ncostal\ncostar\ncostard\ncostards\ncostarred\ncostarring\ncostars\ncostate\ncosted\ncoster\ncosters\ncosting\ncostive\ncostively\ncostiveness\ncostless\ncostlier\ncostliest\ncostliness\ncostly\ncostmaries\ncostmary\ncostrel\ncostrels\ncosts\ncostume\ncostumed\ncostumer\ncostumers\ncostumes\ncostumey\ncostumier\ncostumiers\ncostuming\ncosy\ncot\ncotan\ncotangent\ncotangents\ncotans\ncote\ncoteau\ncoteaux\ncoted\ncotenant\ncotenants\ncoterie\ncoteries\ncotes\ncothurn\ncothurni\ncothurns\ncotidal\ncotillion\ncotillions\ncotillon\ncotillons\ncoting\ncotquean\ncotqueans\ncots\ncotta\ncottae\ncottage\ncottager\ncottagers\ncottages\ncottagey\ncottar\ncottars\ncottas\ncotter\ncotters\ncottier\ncottiers\ncotton\ncottoned\ncottoning\ncottonmouth\ncottonmouths\ncottons\ncottonseed\ncottonseeds\ncottontail\ncottontails\ncottonwood\ncottonwoods\ncottony\ncotyledon\ncotyledonary\ncotyledons\ncotyloid\ncotype\ncotypes\ncouch\ncouchant\ncouched\ncoucher\ncouchers\ncouches\ncouching\ncouchings\ncoude\ncougar\ncougars\ncough\ncoughed\ncougher\ncoughers\ncoughing\ncoughs\ncould\ncouldest\ncouldst\ncoulee\ncoulees\ncoulisse\ncoulisses\ncouloir\ncouloirs\ncoulomb\ncoulombs\ncoulter\ncoulters\ncoumaric\ncoumarin\ncoumarins\ncoumarou\ncoumarous\ncouncil\ncouncillor\ncouncillors\ncouncilman\ncouncilmen\ncouncilor\ncouncilors\ncouncils\ncouncilwoman\ncouncilwomen\ncounsel\ncounseled\ncounseling\ncounselled\ncounselling\ncounsellor\ncounsellors\ncounselor\ncounselors\ncounselorship\ncounselorships\ncounsels\ncount\ncountable\ncountdown\ncountdowns\ncounted\ncountenance\ncountenanced\ncountenances\ncountenancing\ncounter\ncounteract\ncounteracted\ncounteracting\ncounteraction\ncounteractions\ncounteractive\ncounteracts\ncounterattack\ncounterattacked\ncounterattacking\ncounterattacks\ncounterbalance\ncounterbalanced\ncounterbalances\ncounterbalancing\ncounterblow\ncounterblows\ncountercharge\ncountercharges\ncounterclaim\ncounterclaimed\ncounterclaiming\ncounterclaims\ncounterclockwise\ncounterculture\ncountered\ncounterfeit\ncounterfeited\ncounterfeiter\ncounterfeiters\ncounterfeiting\ncounterfeits\ncountering\ncounterintelligence\ncounterirritant\ncounterirritants\ncounterman\ncountermand\ncountermanded\ncountermanding\ncountermands\ncountermarch\ncountermarched\ncountermarches\ncountermarching\ncountermeasure\ncountermeasures\ncountermen\ncountermove\ncountermoved\ncountermovement\ncountermovements\ncountermoves\ncountermoving\ncounteroffensive\ncounteroffensives\ncounteroffer\ncounteroffers\ncounterpane\ncounterpanes\ncounterpart\ncounterparts\ncounterplot\ncounterplots\ncounterplotted\ncounterplotting\ncounterpoint\ncounterpoints\ncounterpoise\ncounterpoised\ncounterpoises\ncounterpoising\ncounterproductive\ncounterproposal\ncounterproposals\ncounterrevolution\ncounterrevolutionaries\ncounterrevolutionary\ncounterrevolutionist\ncounterrevolutionists\ncounterrevolutions\ncounters\ncountersign\ncountersignature\ncountersignatures\ncountersigned\ncountersigning\ncountersigns\ncountersink\ncountersinking\ncountersinks\ncounterspies\ncounterspy\ncountersunk\ncountertenor\ncountertenors\ncounterweight\ncounterweighted\ncounterweighting\ncounterweights\ncountess\ncountesses\ncountian\ncountians\ncounties\ncounting\ncountinghouse\ncountinghouses\ncountless\ncountries\ncountrified\ncountry\ncountryman\ncountrymen\ncountryside\ncountrysides\ncountrywide\ncounts\ncounty\ncoup\ncoupe\ncouped\ncoupes\ncouping\ncouple\ncoupled\ncoupler\ncouplers\ncouples\ncouplet\ncouplets\ncoupling\ncouplings\ncoupon\ncoupons\ncoups\ncourage\ncourageous\ncourageously\ncourageousness\ncourages\ncourant\ncourante\ncourantes\ncouranto\ncourantoes\ncourantos\ncourants\ncourier\ncouriers\ncourlan\ncourlans\ncourse\ncoursed\ncourser\ncoursers\ncourses\ncoursing\ncoursings\ncourt\ncourted\ncourteous\ncourteously\ncourteousness\ncourtesan\ncourtesans\ncourtesied\ncourtesies\ncourtesy\ncourtesying\ncourthouse\ncourthouses\ncourtier\ncourtiers\ncourting\ncourtlier\ncourtliest\ncourtliness\ncourtly\ncourtroom\ncourtrooms\ncourts\ncourtship\ncourtships\ncourtyard\ncourtyards\ncouscous\ncouscouses\ncousin\ncousinly\ncousinries\ncousinry\ncousins\ncouteau\ncouteaux\ncouter\ncouters\ncouth\ncouther\ncouthest\ncouthie\ncouthier\ncouthiest\ncouths\ncouture\ncoutures\ncouturier\ncouturiers\ncouvade\ncouvades\ncovalent\ncove\ncoved\ncoven\ncovenant\ncovenantal\ncovenanted\ncovenanter\ncovenanters\ncovenanting\ncovenants\ncovens\ncover\ncoverage\ncoverages\ncoverall\ncoveralls\ncovered\ncoverer\ncoverers\ncovering\ncoverings\ncoverless\ncoverlet\ncoverlets\ncoverlid\ncoverlids\ncovers\ncovert\ncovertly\ncovertness\ncoverts\ncoves\ncovet\ncovetable\ncoveted\ncoveter\ncoveters\ncoveting\ncovetous\ncovetously\ncovetousness\ncovets\ncovey\ncoveys\ncovin\ncoving\ncovings\ncow\ncowage\ncowages\ncoward\ncowardice\ncowardliness\ncowardly\ncowards\ncowbane\ncowbanes\ncowbell\ncowbells\ncowberries\ncowberry\ncowbind\ncowbinds\ncowbird\ncowbirds\ncowboy\ncowboys\ncowcatcher\ncowcatchers\ncowed\ncowedly\ncower\ncowered\ncowering\ncowers\ncowfish\ncowfishes\ncowgirl\ncowgirls\ncowhage\ncowhages\ncowhand\ncowhands\ncowherb\ncowherbs\ncowherd\ncowherds\ncowhide\ncowhided\ncowhides\ncowhiding\ncowier\ncowiest\ncowing\ncowinner\ncowinners\ncowkine\ncowl\ncowled\ncowlick\ncowlicks\ncowling\ncowlings\ncowls\ncowman\ncowmen\ncoworker\ncoworkers\ncowpat\ncowpats\ncowpea\ncowpeas\ncowpoke\ncowpokes\ncowpox\ncowpoxes\ncowpuncher\ncowpunchers\ncowrie\ncowries\ncowry\ncows\ncowshed\ncowsheds\ncowskin\ncowskins\ncowslip\ncowslips\ncowy\ncox\ncoxa\ncoxae\ncoxal\ncoxalgia\ncoxalgias\ncoxalgic\ncoxalgies\ncoxalgy\ncoxcomb\ncoxcombical\ncoxcombry\ncoxcombs\ncoxed\ncoxes\ncoxing\ncoxswain\ncoxswained\ncoxswaining\ncoxswains\ncoy\ncoyed\ncoyer\ncoyest\ncoying\ncoyish\ncoyly\ncoyness\ncoynesses\ncoyote\ncoyotes\ncoypou\ncoypous\ncoypu\ncoypus\ncoys\ncoz\ncozen\ncozenage\ncozenages\ncozened\ncozener\ncozeners\ncozening\ncozens\ncozes\ncozey\ncozeys\ncozie\ncozier\ncozies\ncoziest\ncozily\ncoziness\ncozinesses\ncozy\ncozzes\ncraal\ncraaled\ncraaling\ncraals\ncrab\ncrabbed\ncrabbedly\ncrabbedness\ncrabber\ncrabbers\ncrabbier\ncrabbiest\ncrabbing\ncrabby\ncrabgrass\ncrabgrasses\ncrabs\ncrabwise\ncrack\ncrackdown\ncrackdowns\ncracked\ncracker\ncrackerjack\ncrackerjacks\ncrackers\ncracking\ncrackings\ncrackle\ncrackled\ncracklees\ncracklier\ncrackliest\ncrackling\ncracklings\ncrackly\ncracknel\ncracknels\ncrackpot\ncrackpots\ncracks\ncrackup\ncrackups\ncracky\ncradle\ncradled\ncradler\ncradlers\ncradles\ncradlesong\ncradlesongs\ncradling\ncraft\ncrafted\ncraftier\ncraftiest\ncraftily\ncraftiness\ncrafting\ncrafts\ncraftsman\ncraftsmanship\ncraftsmen\ncrafty\ncrag\ncragged\ncraggier\ncraggiest\ncraggily\ncraggy\ncrags\ncragsman\ncragsmen\ncrake\ncrakes\ncram\ncrambe\ncrambes\ncrambo\ncramboes\ncrambos\ncrammed\ncrammer\ncrammers\ncramming\ncramoisies\ncramoisy\ncramp\ncramped\ncramping\ncrampit\ncrampits\ncrampon\ncrampons\ncrampoon\ncrampoons\ncramps\ncrams\ncranberries\ncranberry\ncranch\ncranched\ncranches\ncranching\ncrane\ncraned\ncranes\ncrania\ncranial\ncranially\ncraniate\ncraniates\ncraning\ncranium\ncraniums\ncrank\ncrankcase\ncrankcases\ncranked\ncranker\ncrankest\ncrankier\ncrankiest\ncrankily\ncrankiness\ncranking\ncrankle\ncrankled\ncrankles\ncrankling\ncrankly\ncrankous\ncrankpin\ncrankpins\ncranks\ncrankshaft\ncrankshafts\ncranky\ncrannied\ncrannies\ncrannog\ncrannoge\ncrannoges\ncrannogs\ncranny\ncrap\ncrape\ncraped\ncraping\ncrapped\ncrapper\ncrappers\ncrappie\ncrappier\ncrappies\ncrappiest\ncrapping\ncrappy\ncraps\ncrapshooter\ncrapshooters\ncrases\ncrash\ncrashed\ncrasher\ncrashers\ncrashes\ncrashing\ncrasis\ncrass\ncrasser\ncrassest\ncrassly\ncrassness\ncratch\ncratches\ncrate\ncrated\ncrater\ncratered\ncratering\ncraters\ncrates\ncrating\ncraton\ncratonic\ncratons\ncraunch\ncraunched\ncraunches\ncraunching\ncravat\ncravats\ncrave\ncraved\ncraven\ncravened\ncravening\ncravenly\ncravenness\ncravens\ncraver\ncravers\ncraves\ncraving\ncravings\ncraw\ncrawdad\ncrawdads\ncrawfish\ncrawfished\ncrawfishes\ncrawfishing\ncrawl\ncrawled\ncrawler\ncrawlers\ncrawlier\ncrawliest\ncrawling\ncrawls\ncrawlway\ncrawlways\ncrawly\ncraws\ncrayfish\ncrayfishes\ncrayon\ncrayoned\ncrayoning\ncrayonist\ncrayonists\ncrayons\ncraze\ncrazed\ncrazes\ncrazier\ncraziest\ncrazily\ncraziness\ncrazing\ncrazy\ncreak\ncreaked\ncreakier\ncreakiest\ncreakily\ncreaking\ncreaks\ncreaky\ncream\ncreamed\ncreamer\ncreameries\ncreamers\ncreamery\ncreamier\ncreamiest\ncreamily\ncreaminess\ncreaming\ncreams\ncreamy\ncrease\ncreased\ncreaser\ncreasers\ncreases\ncreasier\ncreasiest\ncreasing\ncreasy\ncreate\ncreated\ncreates\ncreatin\ncreatine\ncreatines\ncreating\ncreatins\ncreation\ncreations\ncreative\ncreatively\ncreativeness\ncreativity\ncreator\ncreators\ncreatural\ncreature\ncreatures\ncreche\ncreches\ncredal\ncredence\ncredences\ncredenda\ncredent\ncredential\ncredentials\ncredenza\ncredenzas\ncredibility\ncredible\ncredibly\ncredit\ncreditability\ncreditable\ncreditably\ncredited\ncrediting\ncreditor\ncreditors\ncredits\ncreditworthiness\ncreditworthy\ncredo\ncredos\ncredulity\ncredulous\ncredulously\ncredulousness\ncreed\ncreedal\ncreeds\ncreek\ncreeks\ncreel\ncreels\ncreep\ncreepage\ncreepages\ncreeper\ncreepers\ncreepie\ncreepier\ncreepies\ncreepiest\ncreepily\ncreepiness\ncreeping\ncreeps\ncreepy\ncreese\ncreeses\ncreesh\ncreeshed\ncreeshes\ncreeshing\ncremains\ncremate\ncremated\ncremates\ncremating\ncremation\ncremations\ncremator\ncrematoria\ncrematories\ncrematorium\ncrematoriums\ncremators\ncrematory\ncreme\ncremes\ncrenate\ncrenated\ncrenel\ncreneled\ncreneling\ncrenelle\ncrenelled\ncrenelles\ncrenelling\ncrenels\ncreodont\ncreodonts\ncreole\ncreoles\ncreosol\ncreosols\ncreosote\ncreosoted\ncreosotes\ncreosoting\ncrepe\ncreped\ncrepeiest\ncrepes\ncrepey\ncrepier\ncrepiest\ncreping\ncrept\ncrepy\ncrescendo\ncrescendoes\ncrescendos\ncrescent\ncrescentic\ncrescents\ncrescive\ncresol\ncresols\ncress\ncresses\ncresset\ncressets\ncrest\ncrestal\ncrested\ncrestfallen\ncrestfallenness\ncresting\ncrestings\ncrestless\ncrests\ncresyl\ncresylic\ncresyls\ncretaceous\ncretic\ncretics\ncretin\ncretinism\ncretinous\ncretins\ncretonne\ncretonnes\ncrevalle\ncrevalles\ncrevasse\ncrevassed\ncrevasses\ncrevassing\ncrevice\ncreviced\ncrevices\ncrew\ncrewed\ncrewel\ncrewels\ncrewelwork\ncrewing\ncrewless\ncrewman\ncrewmen\ncrews\ncrib\ncribbage\ncribbages\ncribbed\ncribber\ncribbers\ncribbing\ncribbings\ncribbled\ncribrous\ncribs\ncribwork\ncribworks\ncricetid\ncricetids\ncrick\ncricked\ncricket\ncricketed\ncricketer\ncricketers\ncricketing\ncrickets\ncricking\ncricks\ncricoid\ncricoids\ncried\ncrier\ncriers\ncries\ncrime\ncrimes\ncriminal\ncriminalities\ncriminality\ncriminally\ncriminals\ncriminate\ncriminated\ncriminates\ncriminating\ncriminological\ncriminologically\ncriminologist\ncriminologists\ncriminology\ncrimmer\ncrimmers\ncrimp\ncrimped\ncrimper\ncrimpers\ncrimpier\ncrimpiest\ncrimping\ncrimple\ncrimpled\ncrimples\ncrimpling\ncrimps\ncrimpy\ncrimson\ncrimsoned\ncrimsoning\ncrimsons\ncringe\ncringed\ncringer\ncringers\ncringes\ncringing\ncringle\ncringles\ncrinite\ncrinites\ncrinkle\ncrinkled\ncrinkles\ncrinklier\ncrinkliest\ncrinkling\ncrinkly\ncrinoid\ncrinoids\ncrinoline\ncrinolines\ncrinum\ncrinums\ncriollo\ncriollos\ncripe\ncripple\ncrippled\ncrippler\ncripplers\ncripples\ncrippling\ncris\ncrises\ncrisic\ncrisis\ncrisp\ncrispate\ncrisped\ncrispen\ncrispened\ncrispening\ncrispens\ncrisper\ncrispers\ncrispest\ncrispier\ncrispiest\ncrispily\ncrispiness\ncrisping\ncrisply\ncrispness\ncrisps\ncrispy\ncrissa\ncrissal\ncrisscross\ncrisscrossed\ncrisscrosses\ncrisscrossing\ncrissum\ncrista\ncristae\ncristate\ncriteria\ncriterion\ncriterions\ncritic\ncritical\ncritically\ncriticalness\ncriticism\ncriticisms\ncriticize\ncriticized\ncriticizer\ncriticizers\ncriticizes\ncriticizing\ncritics\ncritique\ncritiqued\ncritiques\ncritiquing\ncritter\ncritters\ncrittur\ncritturs\ncroak\ncroaked\ncroaker\ncroakers\ncroakier\ncroakiest\ncroakily\ncroaking\ncroaks\ncroaky\ncroc\ncrocein\ncroceine\ncroceines\ncroceins\ncrochet\ncrocheted\ncrocheter\ncrocheters\ncrocheting\ncrochets\ncroci\ncrocine\ncrock\ncrocked\ncrockeries\ncrockery\ncrocket\ncrockets\ncrocking\ncrocks\ncrocodile\ncrocodiles\ncrocoite\ncrocoites\ncrocs\ncrocuci\ncrocus\ncrocuses\ncroft\ncrofter\ncrofters\ncrofts\ncroissant\ncroissants\ncrojik\ncrojiks\ncromlech\ncromlechs\ncrone\ncrones\ncronies\ncrony\ncronyism\ncronyisms\ncrook\ncrooked\ncrookeder\ncrookedest\ncrookedly\ncrookedness\ncrooking\ncrooks\ncroon\ncrooned\ncrooner\ncrooners\ncrooning\ncroons\ncrop\ncropland\ncroplands\ncropless\ncropped\ncropper\ncroppers\ncropping\ncrops\ncroquet\ncroqueted\ncroqueting\ncroquets\ncroquette\ncroquettes\ncroquis\ncrore\ncrores\ncrosier\ncrosiers\ncross\ncrossarm\ncrossarms\ncrossbar\ncrossbarred\ncrossbarring\ncrossbars\ncrossbow\ncrossbows\ncrossbred\ncrossbreed\ncrossbreeding\ncrossbreeds\ncrosscut\ncrosscuts\ncrosscutting\ncrosse\ncrossed\ncrosser\ncrossers\ncrosses\ncrossest\ncrosshatch\ncrosshatched\ncrosshatches\ncrosshatching\ncrosshatchings\ncrossing\ncrossings\ncrosslet\ncrosslets\ncrossly\ncrossover\ncrossovers\ncrosspiece\ncrosspieces\ncrossroad\ncrossroads\ncrosstie\ncrossties\ncrosstown\ncrosswalk\ncrosswalks\ncrossway\ncrossways\ncrosswise\ncrossword\ncrosswords\ncrotch\ncrotched\ncrotches\ncrotchet\ncrotchetiness\ncrotchets\ncrotchety\ncroton\ncrotons\ncrouch\ncrouched\ncrouches\ncrouching\ncroup\ncroupe\ncroupes\ncroupier\ncroupiers\ncroupiest\ncroupily\ncroupous\ncroups\ncroupy\ncrouse\ncrousely\ncrouton\ncroutons\ncrow\ncrowbar\ncrowbars\ncrowd\ncrowded\ncrowder\ncrowders\ncrowdie\ncrowdies\ncrowding\ncrowds\ncrowdy\ncrowed\ncrower\ncrowers\ncrowfeet\ncrowfoot\ncrowfoots\ncrowing\ncrown\ncrowned\ncrowner\ncrowners\ncrownet\ncrownets\ncrowning\ncrowns\ncrows\ncrowstep\ncrowsteps\ncroze\ncrozer\ncrozers\ncrozes\ncrozier\ncroziers\ncruces\ncrucial\ncrucially\ncrucian\ncrucians\ncruciate\ncrucible\ncrucibles\ncrucifer\ncrucifers\ncrucified\ncrucifies\ncrucifix\ncrucifixes\ncrucifixion\ncrucifixions\ncrucify\ncrucifying\ncruck\ncrud\ncrudded\ncrudding\ncruddy\ncrude\ncrudely\ncrudeness\ncruder\ncrudes\ncrudest\ncrudities\ncrudity\ncruds\ncruel\ncrueler\ncruelest\ncrueller\ncruellest\ncruelly\ncruelness\ncruelties\ncruelty\ncruet\ncruets\ncruise\ncruised\ncruiser\ncruisers\ncruises\ncruising\ncruller\ncrullers\ncrumb\ncrumbed\ncrumber\ncrumbers\ncrumbier\ncrumbiest\ncrumbing\ncrumble\ncrumbled\ncrumbles\ncrumblier\ncrumbliest\ncrumbliness\ncrumbling\ncrumbly\ncrumbs\ncrumby\ncrummie\ncrummier\ncrummies\ncrummiest\ncrummy\ncrump\ncrumped\ncrumpet\ncrumpets\ncrumping\ncrumple\ncrumpled\ncrumples\ncrumpling\ncrumply\ncrumps\ncrunch\ncrunched\ncruncher\ncrunchers\ncrunches\ncrunchier\ncrunchiest\ncrunchily\ncrunchiness\ncrunching\ncrunchy\ncrunodal\ncrunode\ncrunodes\ncruor\ncruors\ncrupper\ncruppers\ncrura\ncrural\ncrus\ncrusade\ncrusaded\ncrusader\ncrusaders\ncrusades\ncrusading\ncrusado\ncrusadoes\ncrusados\ncruse\ncruses\ncruset\ncrusets\ncrush\ncrushed\ncrusher\ncrushers\ncrushes\ncrushing\ncrusily\ncrust\ncrustacean\ncrustaceans\ncrustal\ncrusted\ncrustier\ncrustiest\ncrustily\ncrustiness\ncrusting\ncrustose\ncrusts\ncrusty\ncrutch\ncrutched\ncrutches\ncrutching\ncrux\ncruxes\ncruzado\ncruzadoes\ncruzados\ncruzeiro\ncruzeiros\ncruzieros\ncrwth\ncrwths\ncry\ncrybabies\ncrybaby\ncrying\ncryingly\ncryogen\ncryogenic\ncryogenically\ncryogenics\ncryogenies\ncryogens\ncryogeny\ncryolite\ncryolites\ncryonic\ncryonics\ncryostat\ncryostats\ncryotron\ncryotrons\ncrypt\ncryptal\ncryptic\ncryptically\ncrypto\ncryptogram\ncryptograms\ncryptograph\ncryptographer\ncryptographers\ncryptographic\ncryptographically\ncryptographies\ncryptographs\ncryptography\ncryptos\ncrypts\ncrystal\ncrystalline\ncrystallinity\ncrystallization\ncrystallizations\ncrystallize\ncrystallized\ncrystallizes\ncrystallizing\ncrystallographer\ncrystallographers\ncrystallographic\ncrystallography\ncrystalloid\ncrystalloids\ncrystals\nctenidia\nctenoid\nctenophore\nctenophores\ncub\ncubage\ncubages\ncubature\ncubatures\ncubbies\ncubbish\ncubby\ncubbyhole\ncubbyholes\ncube\ncubeb\ncubebs\ncubed\ncuber\ncubers\ncubes\ncubic\ncubical\ncubicities\ncubicity\ncubicle\ncubicles\ncubicly\ncubics\ncubicula\ncubiform\ncubing\ncubism\ncubisms\ncubist\ncubistic\ncubists\ncubit\ncubital\ncubits\ncuboid\ncuboidal\ncuboids\ncubs\ncuckold\ncuckolded\ncuckolding\ncuckolds\ncuckoo\ncuckooed\ncuckooing\ncuckoos\ncucumber\ncucumbers\ncucurbit\ncucurbits\ncud\ncudbear\ncudbears\ncuddie\ncuddies\ncuddle\ncuddled\ncuddles\ncuddlier\ncuddliest\ncuddling\ncuddly\ncuddy\ncudgel\ncudgeled\ncudgeler\ncudgelers\ncudgeling\ncudgelled\ncudgelling\ncudgels\ncuds\ncudweed\ncudweeds\ncue\ncued\ncueing\ncues\ncuesta\ncuestas\ncuff\ncuffed\ncuffing\ncuffless\ncuffs\ncuif\ncuifs\ncuing\ncuirass\ncuirassed\ncuirasses\ncuirassier\ncuirassiers\ncuirassing\ncuish\ncuishes\ncuisine\ncuisines\ncuisse\ncuisses\ncuittle\ncuittled\ncuittles\ncuittling\ncuke\ncukes\nculch\nculches\nculet\nculets\nculex\nculices\nculicid\nculicids\nculicine\nculicines\nculinary\ncull\ncullay\ncullays\nculled\nculler\ncullers\ncullet\ncullets\ncullied\ncullies\nculling\ncullion\ncullions\ncullis\ncullises\nculls\ncully\ncullying\nculm\nculmed\nculminate\nculminated\nculminates\nculminating\nculmination\nculminations\nculming\nculms\nculotte\nculottes\nculpa\nculpability\nculpable\nculpableness\nculpably\nculpae\nculprit\nculprits\ncult\ncultch\ncultches\nculti\ncultic\ncultigen\ncultigens\ncultism\ncultisms\ncultist\ncultists\ncultivable\ncultivar\ncultivars\ncultivatable\ncultivate\ncultivated\ncultivates\ncultivating\ncultivation\ncultivations\ncultivator\ncultivators\ncultrate\ncults\ncultural\nculturally\nculture\ncultured\ncultures\nculturing\ncultus\ncultuses\nculver\nculverin\nculverins\nculvers\nculvert\nculverts\ncum\ncumarin\ncumarins\ncumber\ncumbered\ncumberer\ncumberers\ncumbering\ncumbers\ncumbersome\ncumbersomely\ncumbersomeness\ncumbrous\ncumbrously\ncumbrousness\ncumin\ncumins\ncummer\ncummerbund\ncummerbunds\ncummers\ncummin\ncummins\ncumquat\ncumquats\ncumshaw\ncumshaws\ncumulate\ncumulated\ncumulates\ncumulating\ncumulation\ncumulations\ncumulative\ncumulatively\ncumulativeness\ncumuli\ncumulous\ncumulus\ncundum\ncundums\ncuneal\ncuneate\ncuneated\ncuneatic\ncuneiform\ncuniform\ncuniforms\ncunner\ncunners\ncunning\ncunninger\ncunningest\ncunningly\ncunnings\ncunt\ncunts\ncup\ncupboard\ncupboards\ncupcake\ncupcakes\ncupel\ncupeled\ncupeler\ncupelers\ncupeling\ncupelled\ncupeller\ncupellers\ncupelling\ncupels\ncupful\ncupfuls\ncupid\ncupidities\ncupidity\ncupids\ncuplike\ncupola\ncupolaed\ncupolaing\ncupolas\ncuppa\ncuppas\ncupped\ncupper\ncuppers\ncuppier\ncuppiest\ncupping\ncuppings\ncuppy\ncupreous\ncupric\ncuprite\ncuprites\ncuprous\ncuprum\ncuprums\ncups\ncupsful\ncupula\ncupulae\ncupular\ncupulate\ncupule\ncupules\ncur\ncurability\ncurable\ncurableness\ncurably\ncuracao\ncuracaos\ncuracies\ncuracoa\ncuracoas\ncuracy\ncuragh\ncuraghs\ncurara\ncuraras\ncurare\ncurares\ncurari\ncurarine\ncurarines\ncuraris\ncurarize\ncurarized\ncurarizes\ncurarizing\ncurassow\ncurassows\ncurate\ncurates\ncurative\ncuratives\ncurator\ncuratorial\ncurators\ncuratorship\ncurb\ncurbable\ncurbed\ncurber\ncurbers\ncurbing\ncurbings\ncurbs\ncurbstone\ncurbstones\ncurch\ncurches\ncurculio\ncurculios\ncurcuma\ncurcumas\ncurd\ncurded\ncurdier\ncurdiest\ncurding\ncurdle\ncurdled\ncurdler\ncurdlers\ncurdles\ncurdling\ncurds\ncurdy\ncure\ncured\ncureless\ncurer\ncurers\ncures\ncuret\ncurets\ncurette\ncuretted\ncurettes\ncuretting\ncurf\ncurfew\ncurfews\ncurfs\ncuria\ncuriae\ncurial\ncurie\ncuries\ncuring\ncurio\ncurios\ncuriosa\ncuriosities\ncuriosity\ncurious\ncuriouser\ncuriousest\ncuriously\ncuriousness\ncurite\ncurites\ncurium\ncuriums\ncurl\ncurled\ncurler\ncurlers\ncurlew\ncurlews\ncurlicue\ncurlicued\ncurlicues\ncurlicuing\ncurlier\ncurliest\ncurlily\ncurliness\ncurling\ncurlings\ncurls\ncurly\ncurlycue\ncurlycues\ncurmudgeon\ncurmudgeonly\ncurmudgeons\ncurn\ncurns\ncurr\ncurrach\ncurrachs\ncurragh\ncurraghs\ncurran\ncurrans\ncurrant\ncurrants\ncurred\ncurrencies\ncurrency\ncurrent\ncurrently\ncurrentness\ncurrents\ncurricle\ncurricles\ncurricula\ncurricular\ncurriculum\ncurriculums\ncurrie\ncurried\ncurrier\ncurrieries\ncurriers\ncurriery\ncurries\ncurring\ncurrish\ncurrs\ncurry\ncurrycomb\ncurrycombs\ncurrying\ncurs\ncurse\ncursed\ncurseder\ncursedest\ncursedly\ncursedness\ncurser\ncursers\ncurses\ncursing\ncursive\ncursively\ncursives\ncursorily\ncursoriness\ncursory\ncurst\ncurt\ncurtail\ncurtailed\ncurtailer\ncurtailers\ncurtailing\ncurtailment\ncurtailments\ncurtails\ncurtain\ncurtained\ncurtaining\ncurtains\ncurtal\ncurtalax\ncurtalaxes\ncurtals\ncurtate\ncurter\ncurtesies\ncurtest\ncurtesy\ncurtly\ncurtness\ncurtnesses\ncurtsey\ncurtseyed\ncurtseying\ncurtseys\ncurtsied\ncurtsies\ncurtsy\ncurtsying\ncurule\ncurvaceous\ncurvature\ncurvatures\ncurve\ncurved\ncurves\ncurvet\ncurveted\ncurveting\ncurvets\ncurvetted\ncurvetting\ncurvey\ncurvier\ncurviest\ncurvilinear\ncurving\ncurvy\ncuscus\ncuscuses\ncusec\ncusecs\ncushat\ncushats\ncushaw\ncushaws\ncushier\ncushiest\ncushily\ncushion\ncushioned\ncushioning\ncushions\ncushiony\ncushy\ncusk\ncusks\ncusp\ncuspate\ncuspated\ncusped\ncuspid\ncuspidal\ncuspides\ncuspidor\ncuspidors\ncuspids\ncuspis\ncusps\ncuss\ncussed\ncussedly\ncussedness\ncusser\ncussers\ncusses\ncussing\ncusso\ncussos\ncussword\ncusswords\ncustard\ncustards\ncustodes\ncustodial\ncustodian\ncustodians\ncustodianship\ncustodies\ncustody\ncustom\ncustomarily\ncustomary\ncustomer\ncustomers\ncustomhouse\ncustomhouses\ncustomize\ncustomized\ncustomizes\ncustomizing\ncustoms\ncustos\ncustumal\ncustumals\ncut\ncutaneous\ncutaneously\ncutaway\ncutaways\ncutback\ncutbacks\ncutch\ncutcheries\ncutchery\ncutches\ncutdown\ncutdowns\ncute\ncutely\ncuteness\ncutenesses\ncuter\ncutes\ncutesier\ncutesiest\ncutest\ncutesy\ncutey\ncuteys\ncutgrass\ncutgrasses\ncuticle\ncuticles\ncuticula\ncuticulae\ncuticular\ncutie\ncuties\ncutin\ncutinise\ncutinised\ncutinises\ncutinising\ncutinize\ncutinized\ncutinizes\ncutinizing\ncutins\ncutis\ncutises\ncutlas\ncutlases\ncutlass\ncutlasses\ncutler\ncutleries\ncutlers\ncutlery\ncutlet\ncutlets\ncutline\ncutlines\ncutoff\ncutoffs\ncutout\ncutouts\ncutover\ncutpurse\ncutpurses\ncuts\ncuttable\ncuttage\ncuttages\ncutter\ncutters\ncutthroat\ncutthroats\ncutties\ncutting\ncuttings\ncuttle\ncuttled\ncuttlefish\ncuttlefishes\ncuttles\ncuttling\ncutty\ncutup\ncutups\ncutwater\ncutwaters\ncutwork\ncutworks\ncutworm\ncutworms\ncuvette\ncuvettes\ncwm\ncwms\ncyan\ncyanamid\ncyanamide\ncyanamides\ncyanamids\ncyanate\ncyanates\ncyanic\ncyanid\ncyanide\ncyanided\ncyanides\ncyaniding\ncyanids\ncyanin\ncyanine\ncyanines\ncyanins\ncyanite\ncyanites\ncyanitic\ncyano\ncyanogen\ncyanogens\ncyanosed\ncyanoses\ncyanosis\ncyanotic\ncyans\ncybernetic\ncybernetics\ncyborg\ncyborgs\ncycad\ncycads\ncycas\ncycases\ncycasin\ncycasins\ncyclamate\ncyclamates\ncyclamen\ncyclamens\ncyclase\ncyclases\ncycle\ncyclecar\ncyclecars\ncycled\ncycler\ncyclers\ncycles\ncyclic\ncyclical\ncyclically\ncyclicly\ncycling\ncyclings\ncyclist\ncyclists\ncyclitol\ncyclitols\ncyclize\ncyclized\ncyclizes\ncyclizing\ncyclo\ncycloid\ncycloids\ncyclometer\ncyclometers\ncyclonal\ncyclone\ncyclones\ncyclonic\ncyclonically\ncyclopedia\ncyclopedias\ncyclopedic\ncyclops\ncyclorama\ncycloramas\ncyclos\ncycloses\ncyclosis\ncyclotron\ncyclotrons\ncyder\ncyders\ncyeses\ncyesis\ncygnet\ncygnets\ncylices\ncylinder\ncylindered\ncylindering\ncylinders\ncylindric\ncylindrical\ncylindrically\ncylix\ncyma\ncymae\ncymar\ncymars\ncymas\ncymatia\ncymatium\ncymbal\ncymbaler\ncymbalers\ncymbals\ncymbling\ncymblings\ncyme\ncymene\ncymenes\ncymes\ncymlin\ncymling\ncymlings\ncymlins\ncymogene\ncymogenes\ncymoid\ncymol\ncymols\ncymose\ncymosely\ncymous\ncynic\ncynical\ncynically\ncynicism\ncynicisms\ncynics\ncynosure\ncynosures\ncypher\ncyphered\ncyphering\ncyphers\ncypres\ncypreses\ncypress\ncypresses\ncyprian\ncyprians\ncyprinid\ncyprinids\ncyprus\ncypruses\ncypsela\ncypselae\ncyst\ncystein\ncysteine\ncysteines\ncysteins\ncystic\ncystine\ncystines\ncystitides\ncystitis\ncystititides\ncystoid\ncystoids\ncysts\ncytaster\ncytasters\ncytidine\ncytidines\ncytogenies\ncytogeny\ncytologic\ncytological\ncytologically\ncytologies\ncytologist\ncytologists\ncytology\ncyton\ncytons\ncytoplasm\ncytoplasmic\ncytoplasms\ncytosine\ncytosines\nczar\nczardas\nczardom\nczardoms\nczarevna\nczarevnas\nczarina\nczarinas\nczarism\nczarisms\nczarist\nczarists\nczaritza\nczaritzas\nczars\nda\ndab\ndabbed\ndabber\ndabbers\ndabbing\ndabble\ndabbled\ndabbler\ndabblers\ndabbles\ndabbling\ndabblings\ndabchick\ndabchicks\ndabs\ndabster\ndabsters\ndace\ndaces\ndacha\ndachas\ndachshund\ndachshunds\ndacker\ndackered\ndackering\ndackers\ndacoit\ndacoities\ndacoits\ndacoity\ndactyl\ndactyli\ndactylic\ndactylics\ndactyls\ndactylus\ndad\ndada\ndadaism\ndadaisms\ndadaist\ndadaists\ndadas\ndaddies\ndaddle\ndaddled\ndaddles\ndaddling\ndaddy\ndado\ndadoed\ndadoes\ndadoing\ndados\ndads\ndaedal\ndaemon\ndaemonic\ndaemons\ndaff\ndaffed\ndaffier\ndaffiest\ndaffing\ndaffodil\ndaffodils\ndaffs\ndaffy\ndaft\ndafter\ndaftest\ndaftly\ndaftness\ndaftnesses\ndag\ndagga\ndagger\ndaggered\ndaggering\ndaggers\ndaggle\ndaggled\ndaggles\ndaggling\ndaglock\ndaglocks\ndago\ndagoba\ndagobas\ndagoes\ndagos\ndags\ndaguerreotype\ndaguerreotypes\ndah\ndahabeah\ndahabeahs\ndahabiah\ndahabiahs\ndahabieh\ndahabiehs\ndahabiya\ndahabiyas\ndahl\ndahlia\ndahlias\ndahls\ndahoon\ndahoons\ndahs\ndaiker\ndaikered\ndaikering\ndaikers\ndailies\ndaily\ndaimen\ndaimio\ndaimios\ndaimon\ndaimones\ndaimonic\ndaimons\ndaimyo\ndaimyos\ndaintier\ndainties\ndaintiest\ndaintily\ndaintiness\ndainty\ndaiquiri\ndaiquiris\ndairies\ndairy\ndairying\ndairyings\ndairymaid\ndairymaids\ndairyman\ndairymen\ndais\ndaises\ndaishiki\ndaishikis\ndaisied\ndaisies\ndaisy\ndaisywheel\ndaisywheels\ndak\ndakerhen\ndakerhens\ndakoit\ndakoities\ndakoits\ndakoity\ndaks\ndal\ndalapon\ndalapons\ndalasi\ndale\ndales\ndalesman\ndalesmen\ndaleth\ndaleths\ndalles\ndalliance\ndalliances\ndallied\ndallier\ndalliers\ndallies\ndally\ndallying\ndalmatian\ndalmatians\ndalmatic\ndalmatics\ndals\ndaltonic\ndam\ndamage\ndamageable\ndamaged\ndamager\ndamagers\ndamages\ndamaging\ndaman\ndamans\ndamar\ndamars\ndamascene\ndamascened\ndamascenes\ndamascening\ndamask\ndamasked\ndamasking\ndamasks\ndame\ndames\ndamewort\ndameworts\ndammar\ndammars\ndammed\ndammer\ndammers\ndamming\ndamn\ndamnable\ndamnableness\ndamnably\ndamnation\ndamnations\ndamndest\ndamndests\ndamned\ndamneder\ndamnedest\ndamner\ndamners\ndamnified\ndamnifies\ndamnify\ndamnifying\ndamning\ndamningly\ndamns\ndamosel\ndamosels\ndamozel\ndamozels\ndamp\ndamped\ndampen\ndampened\ndampener\ndampeners\ndampening\ndampens\ndamper\ndampers\ndampest\ndamping\ndampish\ndamply\ndampness\ndampnesses\ndamps\ndams\ndamsel\ndamsels\ndamson\ndamsons\ndance\ndanced\ndancer\ndancers\ndances\ndancing\ndandelion\ndandelions\ndander\ndandered\ndandering\ndanders\ndandiacal\ndandier\ndandies\ndandiest\ndandified\ndandifies\ndandify\ndandifying\ndandily\ndandle\ndandled\ndandler\ndandlers\ndandles\ndandling\ndandriff\ndandriffs\ndandruff\ndandruffs\ndandruffy\ndandy\ndandyish\ndandyism\ndandyisms\ndanegeld\ndanegelds\ndaneweed\ndaneweeds\ndanewort\ndaneworts\ndang\ndanged\ndanger\ndangered\ndangering\ndangerous\ndangerously\ndangerousness\ndangers\ndanging\ndangle\ndangled\ndangler\ndanglers\ndangles\ndangling\ndangs\ndanio\ndanios\ndank\ndanker\ndankest\ndankly\ndankness\ndanknesses\ndanseur\ndanseurs\ndanseuse\ndanseuses\ndap\ndaphne\ndaphnes\ndaphnia\ndaphnias\ndapped\ndapper\ndapperer\ndapperest\ndapperly\ndapperness\ndapping\ndapple\ndappled\ndapples\ndappling\ndaps\ndarb\ndarbies\ndarbs\ndare\ndared\ndaredevil\ndaredevilry\ndaredevils\ndaredeviltry\ndareful\ndarer\ndarers\ndares\ndaresay\ndaric\ndarics\ndaring\ndaringly\ndaringness\ndarings\ndariole\ndarioles\ndark\ndarked\ndarken\ndarkened\ndarkener\ndarkeners\ndarkening\ndarkens\ndarker\ndarkest\ndarkey\ndarkeys\ndarkie\ndarkies\ndarking\ndarkish\ndarkle\ndarkled\ndarkles\ndarklier\ndarkliest\ndarkling\ndarkly\ndarkness\ndarknesses\ndarkroom\ndarkrooms\ndarks\ndarksome\ndarky\ndarling\ndarlingly\ndarlingness\ndarlings\ndarn\ndarndest\ndarndests\ndarned\ndarneder\ndarnedest\ndarnel\ndarnels\ndarner\ndarners\ndarning\ndarnings\ndarns\ndart\ndarted\ndarter\ndarters\ndarting\ndartle\ndartled\ndartles\ndartling\ndarts\ndash\ndashboard\ndashboards\ndashed\ndasheen\ndasheens\ndasher\ndashers\ndashes\ndashi\ndashier\ndashiest\ndashiki\ndashikis\ndashing\ndashingly\ndashpot\ndashpots\ndashy\ndassie\ndassies\ndastard\ndastardliness\ndastardly\ndastards\ndasyure\ndasyures\ndata\ndatable\ndataries\ndatary\ndatcha\ndatchas\ndate\ndateable\ndated\ndatedly\ndateless\ndateline\ndatelined\ndatelines\ndatelining\ndater\ndaters\ndates\ndating\ndatival\ndative\ndatively\ndatives\ndato\ndatos\ndatto\ndattos\ndatum\ndatums\ndatura\ndaturas\ndaturic\ndaub\ndaube\ndaubed\ndauber\ndauberies\ndaubers\ndaubery\ndaubes\ndaubier\ndaubiest\ndaubing\ndaubries\ndaubry\ndaubs\ndauby\ndaughter\ndaughterless\ndaughterly\ndaughters\ndaunder\ndaundered\ndaundering\ndaunders\ndaunt\ndaunted\ndaunter\ndaunters\ndaunting\ndauntingly\ndauntless\ndauntlessly\ndauntlessness\ndaunts\ndauphin\ndauphine\ndauphines\ndauphins\ndaut\ndauted\ndautie\ndauties\ndauting\ndauts\ndaven\ndavened\ndavening\ndavenport\ndavenports\ndavens\ndavies\ndavit\ndavits\ndavy\ndaw\ndawdle\ndawdled\ndawdler\ndawdlers\ndawdles\ndawdling\ndawed\ndawen\ndawing\ndawk\ndawks\ndawn\ndawned\ndawning\ndawnlike\ndawns\ndaws\ndawt\ndawted\ndawtie\ndawties\ndawting\ndawts\nday\ndaybed\ndaybeds\ndaybook\ndaybooks\ndaybreak\ndaybreaks\ndaydream\ndaydreamed\ndaydreamer\ndaydreamers\ndaydreaming\ndaydreams\ndaydreamt\ndayflies\ndayfly\ndayglow\ndayglows\ndaylight\ndaylighted\ndaylighting\ndaylights\ndaylilies\ndaylily\ndaylit\ndaylong\ndaymare\ndaymares\ndayroom\ndayrooms\ndays\ndayside\ndaysides\ndaysman\ndaysmen\ndaystar\ndaystars\ndaytime\ndaytimes\ndaze\ndazed\ndazedly\ndazedness\ndazes\ndazing\ndazzle\ndazzled\ndazzler\ndazzlers\ndazzles\ndazzling\ndazzlingly\nde\ndeacon\ndeaconed\ndeaconess\ndeaconesses\ndeaconing\ndeaconries\ndeaconry\ndeacons\ndeactivate\ndeactivated\ndeactivates\ndeactivating\ndeactivation\ndeactivations\ndeactivator\ndeactivators\ndead\ndeadbeat\ndeadbeats\ndeaden\ndeadened\ndeadener\ndeadeners\ndeadening\ndeadens\ndeader\ndeadest\ndeadeye\ndeadeyes\ndeadfall\ndeadfalls\ndeadhead\ndeadheaded\ndeadheading\ndeadheads\ndeadlier\ndeadliest\ndeadline\ndeadlines\ndeadliness\ndeadlock\ndeadlocked\ndeadlocking\ndeadlocks\ndeadly\ndeadness\ndeadnesses\ndeadpan\ndeadpanned\ndeadpanning\ndeadpans\ndeads\ndeadweight\ndeadweights\ndeadwood\ndeadwoods\ndeaerate\ndeaerated\ndeaerates\ndeaerating\ndeaf\ndeafen\ndeafened\ndeafening\ndeafeningly\ndeafens\ndeafer\ndeafest\ndeafish\ndeafly\ndeafness\ndeafnesses\ndeair\ndeaired\ndeairing\ndeairs\ndeal\ndealate\ndealated\ndealates\ndealer\ndealers\ndealfish\ndealfishes\ndealing\ndealings\ndeals\ndealt\ndean\ndeaned\ndeaneries\ndeanery\ndeaning\ndeans\ndeanship\ndeanships\ndear\ndearer\ndearest\ndearie\ndearies\ndearly\ndearness\ndearnesses\ndears\ndearth\ndearths\ndeary\ndeash\ndeashed\ndeashes\ndeashing\ndeasil\ndeath\ndeathbed\ndeathbeds\ndeathblow\ndeathblows\ndeathcup\ndeathcups\ndeathful\ndeathless\ndeathlessly\ndeathlessness\ndeathlike\ndeathly\ndeaths\ndeathtrap\ndeathtraps\ndeathwatch\ndeathwatches\ndeathy\ndeave\ndeaved\ndeaves\ndeaving\ndeb\ndebacle\ndebacles\ndebar\ndebark\ndebarkation\ndebarkations\ndebarked\ndebarking\ndebarks\ndebarment\ndebarments\ndebarred\ndebarring\ndebars\ndebase\ndebased\ndebasement\ndebasements\ndebaser\ndebasers\ndebases\ndebasing\ndebatable\ndebate\ndebated\ndebater\ndebaters\ndebates\ndebating\ndebauch\ndebauched\ndebaucher\ndebaucheries\ndebauchers\ndebauchery\ndebauches\ndebauching\ndebenture\ndebentures\ndebilitate\ndebilitated\ndebilitates\ndebilitating\ndebilitation\ndebilitations\ndebilities\ndebility\ndebit\ndebited\ndebiting\ndebits\ndebonair\ndebonairly\ndebonairness\ndebone\ndeboned\ndeboner\ndeboners\ndebones\ndeboning\ndebouch\ndebouche\ndebouched\ndebouches\ndebouching\ndebrief\ndebriefed\ndebriefing\ndebriefs\ndebris\ndebruise\ndebruised\ndebruises\ndebruising\ndebs\ndebt\ndebtless\ndebtor\ndebtors\ndebts\ndebug\ndebugged\ndebugging\ndebugs\ndebunk\ndebunked\ndebunker\ndebunkers\ndebunking\ndebunks\ndebut\ndebutant\ndebutante\ndebutantes\ndebutants\ndebuted\ndebuting\ndebuts\ndebye\ndebyes\ndecadal\ndecade\ndecadence\ndecadences\ndecadency\ndecadent\ndecadently\ndecadents\ndecades\ndecaf\ndecagon\ndecagonal\ndecagons\ndecagram\ndecagrams\ndecahedron\ndecahedrons\ndecal\ndecalcification\ndecalcifications\ndecalcified\ndecalcifies\ndecalcify\ndecalcifying\ndecalcomania\ndecalcomanias\ndecaliter\ndecaliters\ndecals\ndecameter\ndecameters\ndecamp\ndecamped\ndecamping\ndecampment\ndecampments\ndecamps\ndecanal\ndecane\ndecanes\ndecant\ndecantation\ndecantations\ndecanted\ndecanter\ndecanters\ndecanting\ndecants\ndecapitate\ndecapitated\ndecapitates\ndecapitating\ndecapitation\ndecapitations\ndecapitator\ndecapitators\ndecapod\ndecapods\ndecare\ndecares\ndecathlon\ndecathlons\ndecay\ndecayed\ndecayer\ndecayers\ndecaying\ndecays\ndecciares\ndecease\ndeceased\ndeceases\ndeceasing\ndecedent\ndecedents\ndeceit\ndeceitful\ndeceitfully\ndeceitfulness\ndeceits\ndeceive\ndeceived\ndeceiver\ndeceivers\ndeceives\ndeceiving\ndeceivingly\ndecelerate\ndecelerated\ndecelerates\ndecelerating\ndeceleration\ndecelerations\ndecelerator\ndecelerators\ndecemvir\ndecemviri\ndecemvirs\ndecenaries\ndecenary\ndecencies\ndecency\ndecennia\ndecennial\ndecennially\ndecent\ndecenter\ndecentered\ndecentering\ndecenters\ndecentest\ndecently\ndecentness\ndecentralization\ndecentralizations\ndecentralize\ndecentralized\ndecentralizes\ndecentralizing\ndecentre\ndecentred\ndecentres\ndecentring\ndeception\ndeceptions\ndeceptive\ndeceptively\ndeceptiveness\ndecern\ndecerned\ndecerning\ndecerns\ndecertified\ndecertifies\ndecertify\ndecertifying\ndeciare\ndeciares\ndecibel\ndecibels\ndecidable\ndecide\ndecided\ndecidedly\ndecidedness\ndecider\ndeciders\ndecides\ndeciding\ndecidua\ndeciduae\ndecidual\ndeciduas\ndeciduous\ndeciduously\ndeciduousness\ndecigram\ndecigrams\ndecile\ndeciles\ndecimal\ndecimalization\ndecimalizations\ndecimalize\ndecimalized\ndecimalizes\ndecimalizing\ndecimally\ndecimals\ndecimate\ndecimated\ndecimates\ndecimating\ndecimation\ndecimations\ndecimeter\ndecimeters\ndecipher\ndecipherable\ndeciphered\ndecipherer\ndecipherers\ndeciphering\ndecipherment\ndecipherments\ndeciphers\ndecision\ndecisional\ndecisions\ndecisive\ndecisively\ndecisiveness\ndeck\ndecked\ndeckel\ndeckels\ndecker\ndeckers\ndeckhand\ndeckhands\ndecking\ndeckings\ndeckle\ndeckles\ndecks\ndeclaim\ndeclaimed\ndeclaimer\ndeclaimers\ndeclaiming\ndeclaims\ndeclamation\ndeclamations\ndeclarable\ndeclaration\ndeclarations\ndeclarative\ndeclaratively\ndeclaratory\ndeclare\ndeclared\ndeclarer\ndeclarers\ndeclares\ndeclaring\ndeclass\ndeclasse\ndeclassed\ndeclasses\ndeclassified\ndeclassifies\ndeclassify\ndeclassifying\ndeclassing\ndeclension\ndeclensional\ndeclensions\ndeclinable\ndeclination\ndeclinational\ndeclinations\ndecline\ndeclined\ndecliner\ndecliners\ndeclines\ndeclining\ndeclivities\ndeclivity\ndeco\ndecoct\ndecocted\ndecocting\ndecoction\ndecoctions\ndecocts\ndecode\ndecoded\ndecoder\ndecoders\ndecodes\ndecoding\ndecollate\ndecollated\ndecollates\ndecollating\ndecollation\ndecollations\ndecolor\ndecolored\ndecoloring\ndecolors\ndecolour\ndecoloured\ndecolouring\ndecolours\ndecommission\ndecommissioned\ndecommissioning\ndecommissions\ndecomposability\ndecomposable\ndecompose\ndecomposed\ndecomposer\ndecomposers\ndecomposes\ndecomposing\ndecomposition\ndecompositions\ndecompress\ndecompressed\ndecompresses\ndecompressing\ndecompression\ndecompressions\ndecongest\ndecongestant\ndecongestants\ndecongested\ndecongesting\ndecongestion\ndecongestive\ndecongests\ndecontaminate\ndecontaminated\ndecontaminates\ndecontaminating\ndecontamination\ndecontaminations\ndecontrol\ndecontrolled\ndecontrolling\ndecontrols\ndecor\ndecorate\ndecorated\ndecorates\ndecorating\ndecoration\ndecorations\ndecorative\ndecoratively\ndecorativeness\ndecorator\ndecorators\ndecorous\ndecorously\ndecorousness\ndecors\ndecorum\ndecorums\ndecos\ndecoy\ndecoyed\ndecoyer\ndecoyers\ndecoying\ndecoys\ndecrease\ndecreased\ndecreases\ndecreasing\ndecreasingly\ndecree\ndecreed\ndecreeing\ndecreer\ndecreers\ndecrees\ndecrement\ndecrements\ndecrepit\ndecrepitate\ndecrepitated\ndecrepitates\ndecrepitating\ndecrepitation\ndecrepitations\ndecrepitly\ndecrepitness\ndecrepitude\ndecrepitudes\ndecrescendo\ndecrescendos\ndecretal\ndecretals\ndecrial\ndecrials\ndecried\ndecrier\ndecriers\ndecries\ndecriminalization\ndecriminalizations\ndecriminalize\ndecriminalized\ndecriminalizes\ndecriminalizing\ndecrown\ndecrowned\ndecrowning\ndecrowns\ndecry\ndecrying\ndecrypt\ndecrypted\ndecrypting\ndecrypts\ndecuman\ndecumbencies\ndecumbency\ndecumbent\ndecuple\ndecupled\ndecuples\ndecupling\ndecuries\ndecurion\ndecurions\ndecurve\ndecurved\ndecurves\ndecurving\ndecury\ndedal\ndedans\ndedicate\ndedicated\ndedicatee\ndedicatees\ndedicates\ndedicating\ndedication\ndedications\ndedicative\ndedicator\ndedicators\ndedicatory\ndeduce\ndeduced\ndeduces\ndeducible\ndeducing\ndeduct\ndeducted\ndeductibility\ndeductible\ndeducting\ndeduction\ndeductions\ndeductive\ndeductively\ndeducts\ndee\ndeed\ndeeded\ndeedier\ndeediest\ndeeding\ndeedless\ndeeds\ndeedy\ndeejay\ndeejays\ndeem\ndeemed\ndeeming\ndeems\ndeemster\ndeemsters\ndeep\ndeepen\ndeepened\ndeepener\ndeepeners\ndeepening\ndeepens\ndeeper\ndeepest\ndeeply\ndeepness\ndeepnesses\ndeeps\ndeer\ndeerflies\ndeerfly\ndeers\ndeerskin\ndeerskins\ndeerweed\ndeerweeds\ndeeryard\ndeeryards\ndees\ndeet\ndeets\ndeewan\ndeewans\ndeface\ndefaced\ndefacement\ndefacements\ndefacer\ndefacers\ndefaces\ndefacing\ndefalcate\ndefalcated\ndefalcates\ndefalcating\ndefalcation\ndefalcations\ndefalcator\ndefalcators\ndefamation\ndefamations\ndefame\ndefamed\ndefamer\ndefamers\ndefames\ndefaming\ndefat\ndefats\ndefatted\ndefatting\ndefault\ndefaulted\ndefaulter\ndefaulters\ndefaulting\ndefaults\ndefeat\ndefeated\ndefeater\ndefeaters\ndefeating\ndefeatism\ndefeatist\ndefeatists\ndefeats\ndefecate\ndefecated\ndefecates\ndefecating\ndefecation\ndefecations\ndefect\ndefected\ndefecting\ndefection\ndefections\ndefective\ndefectively\ndefectiveness\ndefector\ndefectors\ndefects\ndefence\ndefences\ndefend\ndefendable\ndefendant\ndefendants\ndefended\ndefender\ndefenders\ndefending\ndefends\ndefense\ndefensed\ndefenseless\ndefenselessly\ndefenselessness\ndefenses\ndefensibility\ndefensible\ndefensibly\ndefensing\ndefensive\ndefensively\ndefensiveness\ndefensives\ndefer\ndeference\ndeferences\ndeferent\ndeferential\ndeferentially\ndeferents\ndeferment\ndeferments\ndeferrable\ndeferral\ndeferrals\ndeferred\ndeferrer\ndeferrers\ndeferring\ndefers\ndefi\ndefiance\ndefiances\ndefiant\ndefiantly\ndeficiencies\ndeficiency\ndeficient\ndeficiently\ndeficients\ndeficit\ndeficits\ndefied\ndefier\ndefiers\ndefies\ndefilade\ndefiladed\ndefilades\ndefilading\ndefile\ndefiled\ndefilement\ndefilements\ndefiler\ndefilers\ndefiles\ndefiling\ndefinable\ndefinably\ndefine\ndefined\ndefiner\ndefiners\ndefines\ndefining\ndefinite\ndefinitely\ndefiniteness\ndefinition\ndefinitional\ndefinitions\ndefinitive\ndefinitively\ndefinitiveness\ndefis\ndeflate\ndeflated\ndeflates\ndeflating\ndeflation\ndeflationary\ndeflations\ndeflator\ndeflators\ndeflea\ndefleaed\ndefleaing\ndefleas\ndeflect\ndeflectable\ndeflected\ndeflecting\ndeflection\ndeflections\ndeflective\ndeflector\ndeflectors\ndeflects\ndeflexed\ndeflower\ndeflowered\ndeflowering\ndeflowers\ndefoam\ndefoamed\ndefoamer\ndefoamers\ndefoaming\ndefoams\ndefog\ndefogged\ndefogger\ndefoggers\ndefogging\ndefogs\ndefoliant\ndefoliants\ndefoliate\ndefoliated\ndefoliates\ndefoliating\ndefoliation\ndefoliations\ndefoliator\ndefoliators\ndeforce\ndeforced\ndeforces\ndeforcing\ndeforest\ndeforestation\ndeforestations\ndeforested\ndeforesting\ndeforests\ndeform\ndeformation\ndeformations\ndeformed\ndeformer\ndeformers\ndeforming\ndeformities\ndeformity\ndeforms\ndefraud\ndefraudation\ndefraudations\ndefrauded\ndefrauder\ndefrauders\ndefrauding\ndefrauds\ndefray\ndefrayable\ndefrayal\ndefrayals\ndefrayed\ndefrayer\ndefrayers\ndefraying\ndefrays\ndefrock\ndefrocked\ndefrocking\ndefrocks\ndefrost\ndefrosted\ndefroster\ndefrosters\ndefrosting\ndefrosts\ndeft\ndefter\ndeftest\ndeftly\ndeftness\ndeftnesses\ndefunct\ndefuse\ndefused\ndefuses\ndefusing\ndefuze\ndefuzed\ndefuzes\ndefuzing\ndefy\ndefying\ndegage\ndegame\ndegames\ndegami\ndegamis\ndegas\ndegases\ndegassed\ndegasser\ndegassers\ndegasses\ndegassing\ndegauss\ndegaussed\ndegausser\ndegaussers\ndegausses\ndegaussing\ndegeneracies\ndegeneracy\ndegenerate\ndegenerated\ndegenerately\ndegenerateness\ndegenerates\ndegenerating\ndegeneration\ndegenerations\ndegenerative\ndegerm\ndegermed\ndegerming\ndegerms\ndeglaze\ndeglazed\ndeglazes\ndeglazing\ndegradation\ndegradations\ndegrade\ndegraded\ndegradedly\ndegrader\ndegraders\ndegrades\ndegrading\ndegradingly\ndegrease\ndegreased\ndegreases\ndegreasing\ndegree\ndegreed\ndegrees\ndegum\ndegummed\ndegumming\ndegums\ndegust\ndegusted\ndegusting\ndegusts\ndehisce\ndehisced\ndehisces\ndehiscing\ndehorn\ndehorned\ndehorner\ndehorners\ndehorning\ndehorns\ndehort\ndehorted\ndehorting\ndehorts\ndehumanization\ndehumanizations\ndehumanize\ndehumanized\ndehumanizes\ndehumanizing\ndehumidification\ndehumidified\ndehumidifier\ndehumidifiers\ndehumidifies\ndehumidify\ndehumidifying\ndehydrate\ndehydrated\ndehydrates\ndehydrating\ndehydration\ndehydrations\ndehydrator\ndehydrators\ndei\ndeice\ndeiced\ndeicer\ndeicers\ndeices\ndeicidal\ndeicide\ndeicides\ndeicing\ndeictic\ndeific\ndeifical\ndeification\ndeifications\ndeified\ndeifier\ndeifiers\ndeifies\ndeiform\ndeify\ndeifying\ndeign\ndeigned\ndeigning\ndeigns\ndeil\ndeils\ndeionize\ndeionized\ndeionizes\ndeionizing\ndeism\ndeisms\ndeist\ndeistic\ndeistical\ndeistically\ndeists\ndeities\ndeity\ndeject\ndejecta\ndejected\ndejectedly\ndejectedness\ndejecting\ndejection\ndejections\ndejects\ndejeuner\ndejeuners\ndekagram\ndekagrams\ndekare\ndekares\ndeke\ndeked\ndekes\ndeking\ndekko\ndel\ndelaine\ndelaines\ndelate\ndelated\ndelates\ndelating\ndelation\ndelations\ndelator\ndelators\ndelay\ndelayed\ndelayer\ndelayers\ndelaying\ndelays\ndele\ndelead\ndeleaded\ndeleading\ndeleads\ndelectability\ndelectable\ndelectably\ndelectation\ndelectations\ndeled\ndelegable\ndelegacies\ndelegacy\ndelegate\ndelegated\ndelegates\ndelegating\ndelegation\ndelegations\ndeleing\ndeles\ndelete\ndeleted\ndeleterious\ndeleteriously\ndeleteriousness\ndeletes\ndeleting\ndeletion\ndeletions\ndelf\ndelfs\ndelft\ndelfts\ndelftware\ndelftwares\ndeli\ndeliberate\ndeliberated\ndeliberately\ndeliberateness\ndeliberates\ndeliberating\ndeliberation\ndeliberations\ndeliberative\ndeliberatively\ndeliberativeness\ndelicacies\ndelicacy\ndelicate\ndelicately\ndelicateness\ndelicates\ndelicatessen\ndelicatessens\ndelicious\ndeliciously\ndeliciousness\ndelict\ndelicts\ndelight\ndelighted\ndelightedly\ndelightful\ndelightfully\ndelightfulness\ndelighting\ndelights\ndelightsome\ndelime\ndelimed\ndelimes\ndeliming\ndelimit\ndelimitation\ndelimitations\ndelimitative\ndelimited\ndelimiting\ndelimits\ndelineate\ndelineated\ndelineates\ndelineating\ndelineation\ndelineations\ndelineative\ndelineator\ndelineators\ndelinquencies\ndelinquency\ndelinquent\ndelinquently\ndelinquents\ndeliquesce\ndeliquesced\ndeliquescence\ndeliquescences\ndeliquesces\ndeliquescing\ndeliria\ndelirious\ndeliriously\ndeliriousness\ndelirium\ndeliriums\ndelis\ndelist\ndelisted\ndelisting\ndelists\ndeliver\ndeliverable\ndeliverance\ndeliverances\ndelivered\ndeliverer\ndeliverers\ndeliveries\ndelivering\ndelivers\ndelivery\ndell\ndellies\ndells\ndelly\ndelouse\ndeloused\ndelouses\ndelousing\ndelphinium\ndelphiniums\ndels\ndelta\ndeltaic\ndeltas\ndeltic\ndeltoid\ndeltoids\ndelude\ndeluded\ndeluder\ndeluders\ndeludes\ndeluding\ndeludingly\ndeluge\ndeluged\ndeluges\ndeluging\ndelusion\ndelusional\ndelusions\ndelusive\ndelusively\ndelusiveness\ndelusory\ndeluster\ndelustered\ndelustering\ndelusters\ndeluxe\ndelve\ndelved\ndelver\ndelvers\ndelves\ndelving\ndemagnetization\ndemagnetizations\ndemagnetize\ndemagnetized\ndemagnetizer\ndemagnetizers\ndemagnetizes\ndemagnetizing\ndemagog\ndemagogic\ndemagogical\ndemagogically\ndemagogies\ndemagogs\ndemagogue\ndemagoguery\ndemagogues\ndemagogy\ndemand\ndemandable\ndemanded\ndemander\ndemanders\ndemanding\ndemandingly\ndemands\ndemarcate\ndemarcated\ndemarcates\ndemarcating\ndemarcation\ndemarcations\ndemarche\ndemarches\ndemark\ndemarked\ndemarking\ndemarks\ndemast\ndemasted\ndemasting\ndemasts\ndematerialization\ndematerializations\ndematerialize\ndematerialized\ndematerializes\ndematerializing\ndeme\ndemean\ndemeaned\ndemeaning\ndemeanor\ndemeanors\ndemeans\ndement\ndemented\ndementedly\ndementedness\ndementia\ndementias\ndementing\ndements\ndemerit\ndemerited\ndemeriting\ndemerits\ndemes\ndemesne\ndemesnes\ndemies\ndemigod\ndemigoddess\ndemigoddesses\ndemigods\ndemijohn\ndemijohns\ndemilitarization\ndemilitarizations\ndemilitarize\ndemilitarized\ndemilitarizes\ndemilitarizing\ndemilune\ndemilunes\ndemimonde\ndemimondes\ndemirep\ndemireps\ndemise\ndemised\ndemises\ndemising\ndemit\ndemitasse\ndemitasses\ndemits\ndemitted\ndemitting\ndemiurge\ndemiurges\ndemivolt\ndemivolts\ndemo\ndemob\ndemobbed\ndemobbing\ndemobilization\ndemobilizations\ndemobilize\ndemobilized\ndemobilizes\ndemobilizing\ndemobs\ndemocracies\ndemocracy\ndemocrat\ndemocratic\ndemocratically\ndemocratization\ndemocratizations\ndemocratize\ndemocratized\ndemocratizes\ndemocratizing\ndemocrats\ndemode\ndemoded\ndemodulate\ndemodulated\ndemodulates\ndemodulating\ndemodulation\ndemodulations\ndemodulator\ndemodulators\ndemographer\ndemographers\ndemographic\ndemographically\ndemographics\ndemolish\ndemolished\ndemolisher\ndemolishers\ndemolishes\ndemolishing\ndemolishment\ndemolishments\ndemolition\ndemolitionist\ndemolitionists\ndemolitions\ndemon\ndemoness\ndemonesses\ndemonetization\ndemonetizations\ndemonetize\ndemonetized\ndemonetizes\ndemonetizing\ndemoniac\ndemoniacal\ndemoniacally\ndemoniacs\ndemonian\ndemonic\ndemonically\ndemonise\ndemonised\ndemonises\ndemonising\ndemonism\ndemonisms\ndemonist\ndemonists\ndemonize\ndemonized\ndemonizes\ndemonizing\ndemonology\ndemons\ndemonstrability\ndemonstrable\ndemonstrableness\ndemonstrably\ndemonstrate\ndemonstrated\ndemonstrates\ndemonstrating\ndemonstration\ndemonstrational\ndemonstrations\ndemonstrative\ndemonstratively\ndemonstrativeness\ndemonstrator\ndemonstrators\ndemoralization\ndemoralizations\ndemoralize\ndemoralized\ndemoralizer\ndemoralizers\ndemoralizes\ndemoralizing\ndemos\ndemoses\ndemote\ndemoted\ndemotes\ndemotic\ndemotics\ndemoting\ndemotion\ndemotions\ndemotist\ndemotists\ndemount\ndemountable\ndemounted\ndemounting\ndemounts\ndempster\ndempsters\ndemur\ndemure\ndemurely\ndemureness\ndemurer\ndemurest\ndemurrage\ndemurrages\ndemurral\ndemurrals\ndemurred\ndemurrer\ndemurrers\ndemurring\ndemurs\ndemy\ndemythologization\ndemythologizations\ndemythologize\ndemythologized\ndemythologizes\ndemythologizing\nden\ndenarii\ndenarius\ndenary\ndenationalization\ndenationalizations\ndenationalize\ndenationalized\ndenationalizes\ndenationalizing\ndenaturalization\ndenaturalizations\ndenaturalize\ndenaturalized\ndenaturalizes\ndenaturalizing\ndenaturant\ndenaturants\ndenaturation\ndenaturations\ndenature\ndenatured\ndenatures\ndenaturing\ndenazified\ndenazifies\ndenazify\ndenazifying\ndendrite\ndendrites\ndendroid\ndendron\ndendrons\ndene\ndenes\ndengue\ndengues\ndeniable\ndeniably\ndenial\ndenials\ndenied\ndenier\ndeniers\ndenies\ndenigrate\ndenigrated\ndenigrates\ndenigrating\ndenigration\ndenigrations\ndenigrator\ndenigrators\ndenim\ndenims\ndenizen\ndenizened\ndenizening\ndenizens\ndenned\ndenning\ndenominate\ndenominated\ndenominates\ndenominating\ndenomination\ndenominational\ndenominationalism\ndenominationally\ndenominations\ndenominative\ndenominator\ndenominators\ndenotation\ndenotations\ndenotative\ndenote\ndenoted\ndenotement\ndenotements\ndenotes\ndenoting\ndenotive\ndenouement\ndenouements\ndenounce\ndenounced\ndenouncement\ndenouncements\ndenouncer\ndenouncers\ndenounces\ndenouncing\ndens\ndense\ndensely\ndenseness\ndenser\ndensest\ndensified\ndensifies\ndensify\ndensifying\ndensities\ndensity\ndent\ndental\ndentalia\ndentally\ndentals\ndentate\ndentated\ndented\ndenticle\ndenticles\ndentifrice\ndentifrices\ndentil\ndentils\ndentin\ndentinal\ndentine\ndentines\ndenting\ndentins\ndentist\ndentistry\ndentists\ndentition\ndentitions\ndentoid\ndents\ndentural\ndenture\ndentures\ndenudate\ndenudated\ndenudates\ndenudating\ndenudation\ndenudations\ndenude\ndenuded\ndenuder\ndenuders\ndenudes\ndenuding\ndenunciation\ndenunciations\ndenunciative\ndenunciatory\ndeny\ndenying\ndeodand\ndeodands\ndeodar\ndeodara\ndeodaras\ndeodars\ndeodorant\ndeodorants\ndeodorization\ndeodorizations\ndeodorize\ndeodorized\ndeodorizer\ndeodorizers\ndeodorizes\ndeodorizing\ndepaint\ndepainted\ndepainting\ndepaints\ndepart\ndeparted\ndeparting\ndepartment\ndepartmental\ndepartmentalization\ndepartmentalizations\ndepartmentalize\ndepartmentalized\ndepartmentalizes\ndepartmentalizing\ndepartmentally\ndepartments\ndeparts\ndeparture\ndepartures\ndepend\ndependability\ndependable\ndependableness\ndependably\ndepended\ndependence\ndependences\ndependencies\ndependency\ndependent\ndependently\ndependents\ndepending\ndepends\ndeperm\ndepermed\ndeperming\ndeperms\ndepict\ndepicted\ndepicter\ndepicters\ndepicting\ndepiction\ndepictions\ndepictor\ndepictors\ndepicts\ndepilate\ndepilated\ndepilates\ndepilating\ndepilatories\ndepilatory\ndeplane\ndeplaned\ndeplanes\ndeplaning\ndeplete\ndepleted\ndepletes\ndepleting\ndepletion\ndepletions\ndepletive\ndeplorable\ndeplorableness\ndeplorably\ndeplore\ndeplored\ndeplorer\ndeplorers\ndeplores\ndeploring\ndeploy\ndeployed\ndeploying\ndeployment\ndeployments\ndeploys\ndeplume\ndeplumed\ndeplumes\ndepluming\ndepolish\ndepolished\ndepolishes\ndepolishing\ndepone\ndeponed\ndeponent\ndeponents\ndepones\ndeponing\ndepopulate\ndepopulated\ndepopulates\ndepopulating\ndepopulation\ndepopulations\ndeport\ndeportable\ndeportation\ndeportations\ndeported\ndeportee\ndeportees\ndeporting\ndeportment\ndeportments\ndeports\ndeposal\ndeposals\ndepose\ndeposed\ndeposer\ndeposers\ndeposes\ndeposing\ndeposit\ndepositaries\ndepositary\ndeposited\ndepositing\ndeposition\ndepositional\ndepositions\ndepositor\ndepositories\ndepositors\ndepository\ndeposits\ndepot\ndepots\ndepravation\ndepravations\ndeprave\ndepraved\ndepravedly\ndepravedness\ndepraver\ndepravers\ndepraves\ndepraving\ndepravities\ndepravity\ndeprecate\ndeprecated\ndeprecates\ndeprecating\ndeprecatingly\ndeprecation\ndeprecations\ndeprecatorily\ndeprecatory\ndepreciable\ndepreciate\ndepreciated\ndepreciates\ndepreciating\ndepreciatingly\ndepreciation\ndepreciations\ndepreciative\ndepreciator\ndepreciators\ndepreciatory\ndepredate\ndepredated\ndepredates\ndepredating\ndepredation\ndepredations\ndepredator\ndepredators\ndepredatory\ndepress\ndepressant\ndepressants\ndepressed\ndepresses\ndepressible\ndepressing\ndepressingly\ndepression\ndepressions\ndepressive\ndepressively\ndepressor\ndepressors\ndepressurization\ndepressurizations\ndepressurize\ndepressurized\ndepressurizes\ndepressurizing\ndeprival\ndeprivals\ndeprivation\ndeprivations\ndeprive\ndeprived\ndepriver\ndeprivers\ndeprives\ndepriving\ndepside\ndepsides\ndepth\ndepths\ndepurate\ndepurated\ndepurates\ndepurating\ndeputation\ndeputations\ndepute\ndeputed\ndeputes\ndeputies\ndeputing\ndeputize\ndeputized\ndeputizes\ndeputizing\ndeputy\nderaign\nderaigned\nderaigning\nderaigns\nderail\nderailed\nderailing\nderailment\nderailments\nderails\nderange\nderanged\nderangement\nderangements\nderanges\nderanging\nderat\nderats\nderatted\nderatting\nderay\nderays\nderbies\nderby\ndere\nderegulate\nderegulated\nderegulates\nderegulation\nderegulations\nderelict\ndereliction\nderelictions\nderelicts\nderide\nderided\nderider\nderiders\nderides\nderiding\nderidingly\nderinger\nderingers\nderision\nderisions\nderisive\nderisively\nderisiveness\nderisory\nderivable\nderivate\nderivates\nderivation\nderivational\nderivations\nderivative\nderivatively\nderivativeness\nderivatives\nderive\nderived\nderiver\nderivers\nderives\nderiving\nderm\nderma\ndermal\ndermas\ndermatological\ndermatologist\ndermatologists\ndermatology\ndermic\ndermis\ndermises\ndermoid\nderms\ndernier\nderogate\nderogated\nderogates\nderogating\nderogation\nderogations\nderogative\nderogatorily\nderogatory\nderrick\nderricks\nderriere\nderrieres\nderries\nderringer\nderringers\nderris\nderrises\nderry\ndervish\ndervishes\ndes\ndesalt\ndesalted\ndesalter\ndesalters\ndesalting\ndesalts\ndesand\ndesanded\ndesanding\ndesands\ndescant\ndescanted\ndescanting\ndescants\ndescend\ndescendant\ndescendants\ndescended\ndescendent\ndescendents\ndescending\ndescends\ndescent\ndescents\ndescribable\ndescribe\ndescribed\ndescriber\ndescribers\ndescribes\ndescribing\ndescried\ndescrier\ndescriers\ndescries\ndescription\ndescriptions\ndescriptive\ndescriptively\ndescriptiveness\ndescriptor\ndescriptors\ndescry\ndescrying\ndesecrate\ndesecrated\ndesecrater\ndesecraters\ndesecrates\ndesecrating\ndesecration\ndesecrations\ndesecrator\ndesecrators\ndesegregate\ndesegregated\ndesegregates\ndesegregating\ndesegregation\ndesegregations\ndeselect\ndeselected\ndeselecting\ndeselects\ndesensitization\ndesensitizations\ndesensitize\ndesensitized\ndesensitizer\ndesensitizers\ndesensitizes\ndesensitizing\ndesert\ndeserted\ndeserter\ndeserters\ndesertic\ndeserting\ndesertion\ndesertions\ndeserts\ndeserve\ndeserved\ndeservedly\ndeservedness\ndeserver\ndeservers\ndeserves\ndeserving\ndesex\ndesexed\ndesexes\ndesexing\ndesiccant\ndesiccants\ndesiccate\ndesiccated\ndesiccates\ndesiccating\ndesiccation\ndesiccations\ndesiccative\ndesiccator\ndesiccators\ndesign\ndesignate\ndesignated\ndesignates\ndesignating\ndesignation\ndesignations\ndesignative\ndesignator\ndesignators\ndesignatory\ndesigned\ndesignedly\ndesignee\ndesignees\ndesigner\ndesigners\ndesigning\ndesigns\ndesilver\ndesilvered\ndesilvering\ndesilvers\ndesinent\ndesirability\ndesirable\ndesirableness\ndesirables\ndesirably\ndesire\ndesired\ndesirer\ndesirers\ndesires\ndesiring\ndesirous\ndesirously\ndesirousness\ndesist\ndesistance\ndesisted\ndesisting\ndesists\ndesk\ndeskman\ndeskmen\ndesks\ndesman\ndesmans\ndesmid\ndesmids\ndesmoid\ndesmoids\ndesolate\ndesolated\ndesolately\ndesolater\ndesolaters\ndesolates\ndesolating\ndesolation\ndesolations\ndesolator\ndesolators\ndesorb\ndesorbed\ndesorbing\ndesorbs\ndespair\ndespaired\ndespairing\ndespairingly\ndespairs\ndespatch\ndespatched\ndespatcher\ndespatchers\ndespatches\ndespatching\ndesperado\ndesperadoes\ndesperados\ndesperate\ndesperately\ndesperateness\ndesperation\ndespicable\ndespicableness\ndespicably\ndespise\ndespised\ndespiser\ndespisers\ndespises\ndespising\ndespite\ndespited\ndespiteful\ndespitefully\ndespitefulness\ndespites\ndespiting\ndespoil\ndespoiled\ndespoiler\ndespoilers\ndespoiling\ndespoilment\ndespoilments\ndespoils\ndespoliation\ndespoliations\ndespond\ndesponded\ndespondence\ndespondencies\ndespondency\ndespondent\ndespondently\ndesponding\ndesponds\ndespot\ndespotic\ndespotically\ndespotism\ndespotisms\ndespots\ndessert\ndesserts\ndestabilization\ndestabilizations\ndestabilize\ndestabilized\ndestabilizes\ndestabilizing\ndestain\ndestained\ndestaining\ndestains\ndestination\ndestinations\ndestine\ndestined\ndestines\ndestinies\ndestining\ndestiny\ndestitute\ndestitution\ndestitutions\ndestrier\ndestriers\ndestroy\ndestroyed\ndestroyer\ndestroyers\ndestroying\ndestroys\ndestruct\ndestructed\ndestructible\ndestructing\ndestruction\ndestructions\ndestructive\ndestructively\ndestructiveness\ndestructor\ndestructors\ndestructs\ndesuetude\ndesugar\ndesugared\ndesugaring\ndesugars\ndesulfur\ndesulfured\ndesulfuring\ndesulfurs\ndesultorily\ndesultoriness\ndesultory\ndetach\ndetachability\ndetachable\ndetachably\ndetached\ndetachedly\ndetachedness\ndetacher\ndetachers\ndetaches\ndetaching\ndetachment\ndetachments\ndetail\ndetailed\ndetailer\ndetailers\ndetailing\ndetails\ndetain\ndetained\ndetainee\ndetainees\ndetainer\ndetainers\ndetaining\ndetainment\ndetainments\ndetains\ndetect\ndetectable\ndetected\ndetecter\ndetecters\ndetecting\ndetection\ndetections\ndetective\ndetectives\ndetector\ndetectors\ndetects\ndetent\ndetente\ndetentes\ndetention\ndetentions\ndetents\ndeter\ndeterge\ndeterged\ndetergency\ndetergent\ndetergents\ndeterger\ndetergers\ndeterges\ndeterging\ndeteriorate\ndeteriorated\ndeteriorates\ndeteriorating\ndeterioration\ndeteriorations\ndeteriorative\ndeterminable\ndeterminableness\ndeterminably\ndeterminant\ndeterminants\ndeterminate\ndeterminates\ndetermination\ndeterminations\ndeterminative\ndetermine\ndetermined\ndeterminedly\ndeterminedness\ndeterminer\ndeterminers\ndetermines\ndetermining\ndeterminism\ndeterminist\ndeterministic\ndeterministically\ndeterminists\ndeterred\ndeterrence\ndeterrences\ndeterrent\ndeterrently\ndeterrents\ndeterrer\ndeterrers\ndeterring\ndeters\ndetersive\ndetersives\ndetest\ndetestable\ndetestableness\ndetestably\ndetestation\ndetestations\ndetested\ndetester\ndetesters\ndetesting\ndetests\ndethrone\ndethroned\ndethronement\ndethronements\ndethrones\ndethroning\ndetick\ndeticked\ndeticker\ndetickers\ndeticking\ndeticks\ndetinue\ndetinues\ndetonate\ndetonated\ndetonates\ndetonating\ndetonation\ndetonations\ndetonative\ndetonator\ndetonators\ndetour\ndetoured\ndetouring\ndetours\ndetox\ndetoxified\ndetoxifies\ndetoxify\ndetoxifying\ndetract\ndetracted\ndetracting\ndetractingly\ndetraction\ndetractions\ndetractive\ndetractively\ndetractor\ndetractors\ndetracts\ndetrain\ndetrained\ndetraining\ndetrainment\ndetrainments\ndetrains\ndetriment\ndetrimental\ndetrimentally\ndetriments\ndetrital\ndetritus\ndetrude\ndetruded\ndetrudes\ndetruding\ndeuce\ndeuced\ndeucedly\ndeuces\ndeucing\ndeuteric\ndeuterium\ndeuteron\ndeuterons\ndeutschemark\ndeutschemarks\ndeutzia\ndeutzias\ndev\ndeva\ndevaluate\ndevaluated\ndevaluates\ndevaluating\ndevaluation\ndevaluations\ndevalue\ndevalued\ndevalues\ndevaluing\ndevas\ndevastate\ndevastated\ndevastates\ndevastating\ndevastation\ndevastations\ndevastative\ndevastator\ndevastators\ndevein\ndeveined\ndeveining\ndeveins\ndevel\ndeveled\ndeveling\ndevelop\ndevelopable\ndevelope\ndeveloped\ndeveloper\ndevelopers\ndevelopes\ndeveloping\ndevelopment\ndevelopmental\ndevelopmentally\ndevelopments\ndevelops\ndevels\ndevest\ndevested\ndevesting\ndevests\ndeviance\ndeviances\ndeviancies\ndeviancy\ndeviant\ndeviants\ndeviate\ndeviated\ndeviates\ndeviating\ndeviation\ndeviations\ndeviator\ndeviators\ndeviatory\ndevice\ndevices\ndevil\ndeviled\ndeviling\ndevilish\ndevilishly\ndevilishness\ndevilkin\ndevilkins\ndevilled\ndevilling\ndevilment\ndevilments\ndevilries\ndevilry\ndevils\ndeviltries\ndeviltry\ndevious\ndeviously\ndeviousness\ndevisal\ndevisals\ndevise\ndevised\ndevisee\ndevisees\ndeviser\ndevisers\ndevises\ndevising\ndevisor\ndevisors\ndevitalize\ndevitalized\ndevitalizes\ndevitalizing\ndevoice\ndevoiced\ndevoices\ndevoicing\ndevoid\ndevoir\ndevoirs\ndevolution\ndevolutionary\ndevolutionist\ndevolutions\ndevolve\ndevolved\ndevolves\ndevolving\ndevon\ndevons\ndevote\ndevoted\ndevotedly\ndevotedness\ndevotee\ndevotees\ndevotes\ndevoting\ndevotion\ndevotional\ndevotionally\ndevotionals\ndevotions\ndevour\ndevoured\ndevourer\ndevourers\ndevouring\ndevours\ndevout\ndevoutly\ndevoutness\ndevs\ndew\ndewan\ndewans\ndewar\ndewater\ndewatered\ndewatering\ndewaters\ndewax\ndewaxed\ndewaxes\ndewaxing\ndewberries\ndewberry\ndewclaw\ndewclaws\ndewdrop\ndewdrops\ndewed\ndewfall\ndewfalls\ndewier\ndewiest\ndewily\ndewiness\ndewinesses\ndewing\ndewlap\ndewlaps\ndewless\ndewool\ndewooled\ndewooling\ndewools\ndeworm\ndewormed\ndeworming\ndeworms\ndews\ndewy\ndex\ndexes\ndexie\ndexies\ndexter\ndexterities\ndexterity\ndexterous\ndexterously\ndexterousness\ndextral\ndextran\ndextrans\ndextrin\ndextrine\ndextrines\ndextrins\ndextro\ndextrose\ndextroses\ndextrous\ndexy\ndey\ndeys\ndezinc\ndezinced\ndezincing\ndezincked\ndezincking\ndezincs\ndhak\ndhaks\ndhal\ndhals\ndharma\ndharmas\ndharmic\ndharna\ndharnas\ndhobi\ndhole\ndholes\ndhoolies\ndhooly\ndhoora\ndhooras\ndhooti\ndhootie\ndhooties\ndhootis\ndhoti\ndhotis\ndhourra\ndhourras\ndhow\ndhows\ndhurna\ndhurnas\ndhuti\ndhutis\ndiabase\ndiabases\ndiabasic\ndiabetes\ndiabetic\ndiabetics\ndiableries\ndiablery\ndiabolic\ndiabolical\ndiabolically\ndiabolicalness\ndiabolism\ndiabolist\ndiabolists\ndiabolo\ndiabolos\ndiacetyl\ndiacetyls\ndiacid\ndiacidic\ndiacids\ndiaconal\ndiacritic\ndiacritical\ndiacritics\ndiadem\ndiademed\ndiademing\ndiadems\ndiagnosable\ndiagnose\ndiagnosed\ndiagnoses\ndiagnosing\ndiagnosis\ndiagnostic\ndiagnostically\ndiagnostician\ndiagnosticians\ndiagnostics\ndiagonal\ndiagonally\ndiagonals\ndiagram\ndiagramed\ndiagraming\ndiagrammatic\ndiagrammatically\ndiagrammed\ndiagramming\ndiagrams\ndiagraph\ndiagraphs\ndial\ndialect\ndialectal\ndialectally\ndialectic\ndialectical\ndialectically\ndialectician\ndialecticians\ndialectics\ndialectologist\ndialectologists\ndialectology\ndialects\ndialed\ndialer\ndialers\ndialing\ndialings\ndialist\ndialists\ndiallage\ndiallages\ndialled\ndiallel\ndialler\ndiallers\ndialling\ndiallings\ndiallist\ndiallists\ndialog\ndialoged\ndialoger\ndialogers\ndialogged\ndialogging\ndialogic\ndialogical\ndialogically\ndialoging\ndialogist\ndialogistic\ndialogists\ndialogs\ndialogue\ndialogued\ndialogues\ndialoguing\ndials\ndialyse\ndialysed\ndialyser\ndialysers\ndialyses\ndialysing\ndialysis\ndialytic\ndialyzable\ndialyze\ndialyzed\ndialyzer\ndialyzers\ndialyzes\ndialyzing\ndiamagnet\ndiamagnetic\ndiamagnetism\ndiameter\ndiameters\ndiametric\ndiametrical\ndiametrically\ndiamide\ndiamides\ndiamin\ndiamine\ndiamines\ndiamins\ndiamond\ndiamondback\ndiamondbacks\ndiamonded\ndiamonding\ndiamonds\ndianthus\ndianthuses\ndiapason\ndiapasons\ndiapause\ndiapaused\ndiapauses\ndiapausing\ndiaper\ndiapered\ndiapering\ndiapers\ndiaphanous\ndiaphanously\ndiaphanousness\ndiaphone\ndiaphones\ndiaphonies\ndiaphony\ndiaphragm\ndiaphragmatic\ndiaphragmatically\ndiaphragms\ndiapir\ndiapiric\ndiapirs\ndiapsid\ndiarchic\ndiarchies\ndiarchy\ndiaries\ndiarist\ndiarists\ndiarrhea\ndiarrheas\ndiarrhoea\ndiarrhoeas\ndiary\ndiaspora\ndiasporas\ndiaspore\ndiaspores\ndiastase\ndiastases\ndiastema\ndiastemata\ndiaster\ndiasters\ndiastole\ndiastoles\ndiastolic\ndiastral\ndiastrophism\ndiastrophisms\ndiatom\ndiatomic\ndiatomite\ndiatoms\ndiatonic\ndiatonically\ndiatribe\ndiatribes\ndiazepam\ndiazepams\ndiazin\ndiazine\ndiazines\ndiazins\ndiazo\ndiazole\ndiazoles\ndib\ndibasic\ndibbed\ndibber\ndibbers\ndibbing\ndibble\ndibbled\ndibbler\ndibblers\ndibbles\ndibbling\ndibbuk\ndibbukim\ndibbuks\ndibs\ndicast\ndicastic\ndicasts\ndice\ndiced\ndicentra\ndicentras\ndicer\ndicers\ndices\ndicey\ndichasia\ndichotic\ndichotomies\ndichotomist\ndichotomists\ndichotomization\ndichotomizations\ndichotomize\ndichotomized\ndichotomizes\ndichotomizing\ndichotomous\ndichotomously\ndichotomy\ndichroic\ndicier\ndiciest\ndicing\ndick\ndickens\ndickenses\ndicker\ndickered\ndickering\ndickers\ndickey\ndickeys\ndickie\ndickies\ndicks\ndicky\ndiclinies\ndicliny\ndicot\ndicots\ndicotyl\ndicotyledon\ndicotyledonous\ndicotyledons\ndicotyls\ndicrotal\ndicrotic\ndicta\ndictate\ndictated\ndictates\ndictating\ndictation\ndictations\ndictator\ndictatorial\ndictatorially\ndictatorialness\ndictators\ndictatorship\ndictatorships\ndiction\ndictionaries\ndictionary\ndictions\ndictum\ndictums\ndicty\ndicyclic\ndicyclies\ndicycly\ndid\ndidact\ndidactic\ndidactical\ndidactically\ndidacticism\ndidactics\ndidacts\ndidactyl\ndidapper\ndidappers\ndiddle\ndiddled\ndiddler\ndiddlers\ndiddles\ndiddling\ndidie\ndidies\ndido\ndidoes\ndidos\ndidst\ndidy\ndidymium\ndidymiums\ndidymous\ndidynamies\ndidynamy\ndie\ndieback\ndiebacks\ndiecious\ndied\ndiehard\ndiehards\ndieing\ndiel\ndieldrin\ndieldrins\ndielectric\ndielectrics\ndiemaker\ndiemakers\ndiene\ndienes\ndiereses\ndieresis\ndieretic\ndies\ndiesel\ndiesels\ndieses\ndiesis\ndiester\ndiesters\ndiestock\ndiestocks\ndiestrum\ndiestrums\ndiestrus\ndiestruses\ndiet\ndietaries\ndietary\ndieted\ndieter\ndieters\ndietetic\ndietetics\ndietician\ndieticians\ndieting\ndietitian\ndietitians\ndiets\ndiffer\ndiffered\ndifference\ndifferences\ndifferent\ndifferentia\ndifferentiability\ndifferentiable\ndifferentiae\ndifferential\ndifferentials\ndifferentiate\ndifferentiated\ndifferentiates\ndifferentiating\ndifferentiation\ndifferentiations\ndifferently\ndiffering\ndiffers\ndifficult\ndifficulties\ndifficultly\ndifficulty\ndiffidence\ndiffidences\ndiffident\ndiffidently\ndiffract\ndiffracted\ndiffracting\ndiffraction\ndiffractions\ndiffracts\ndiffuse\ndiffused\ndiffusely\ndiffuseness\ndiffuser\ndiffusers\ndiffuses\ndiffusibilities\ndiffusibility\ndiffusible\ndiffusing\ndiffusion\ndiffusions\ndiffusive\ndiffusively\ndiffusiveness\ndiffusor\ndiffusors\ndig\ndigamies\ndigamist\ndigamists\ndigamma\ndigammas\ndigamous\ndigamy\ndigest\ndigested\ndigester\ndigesters\ndigestibility\ndigestible\ndigesting\ndigestion\ndigestions\ndigestive\ndigestively\ndigestor\ndigestors\ndigests\ndigged\ndigger\ndiggers\ndigging\ndiggings\ndight\ndighted\ndighting\ndights\ndigit\ndigital\ndigitalis\ndigitalization\ndigitalizations\ndigitalize\ndigitalized\ndigitalizes\ndigitalizing\ndigitally\ndigitals\ndigitate\ndigitize\ndigitized\ndigitizes\ndigitizing\ndigits\ndiglot\ndiglots\ndignified\ndignifies\ndignify\ndignifying\ndignitaries\ndignitary\ndignities\ndignity\ndigoxin\ndigoxins\ndigraph\ndigraphs\ndigress\ndigressed\ndigresses\ndigressing\ndigression\ndigressional\ndigressions\ndigressive\ndigressively\ndigressiveness\ndigs\ndihedral\ndihedrals\ndihedron\ndihedrons\ndihybrid\ndihybrids\ndihydric\ndikdik\ndikdiks\ndike\ndiked\ndiker\ndikers\ndikes\ndikey\ndiking\ndiktat\ndiktats\ndilapidate\ndilapidated\ndilapidates\ndilapidating\ndilapidation\ndilapidations\ndilatable\ndilatant\ndilatants\ndilatate\ndilatation\ndilatational\ndilatations\ndilate\ndilated\ndilater\ndilaters\ndilates\ndilating\ndilation\ndilations\ndilative\ndilator\ndilatorily\ndilatoriness\ndilators\ndilatory\ndildo\ndildoe\ndildoes\ndildos\ndilemma\ndilemmas\ndilemmatic\ndilemmic\ndilettante\ndilettantes\ndilettantish\ndilettantism\ndilettantisms\ndiligence\ndiligences\ndiligent\ndiligently\ndill\ndillies\ndills\ndilly\ndillydallied\ndillydallies\ndillydally\ndillydallying\ndiluent\ndiluents\ndilute\ndiluted\ndiluteness\ndiluter\ndiluters\ndilutes\ndiluting\ndilution\ndilutions\ndilutive\ndilutor\ndilutors\ndiluvia\ndiluvial\ndiluvian\ndiluvion\ndiluvions\ndiluvium\ndiluviums\ndim\ndime\ndimension\ndimensional\ndimensionality\ndimensionally\ndimensioned\ndimensioning\ndimensionless\ndimensions\ndimer\ndimeric\ndimerism\ndimerisms\ndimerize\ndimerized\ndimerizes\ndimerizing\ndimerous\ndimers\ndimes\ndimeter\ndimeters\ndimethyl\ndimethyls\ndimetric\ndiminish\ndiminishable\ndiminished\ndiminishes\ndiminishing\ndiminishment\ndiminishments\ndiminuendo\ndiminuendos\ndiminution\ndiminutions\ndiminutive\ndiminutively\ndiminutiveness\ndiminutives\ndimities\ndimity\ndimly\ndimmable\ndimmed\ndimmer\ndimmers\ndimmest\ndimming\ndimness\ndimnesses\ndimorph\ndimorphism\ndimorphisms\ndimorphs\ndimout\ndimouts\ndimple\ndimpled\ndimples\ndimplier\ndimpliest\ndimpling\ndimply\ndims\ndimwit\ndimwits\ndin\ndinar\ndinars\ndindle\ndindled\ndindles\ndindling\ndine\ndined\ndiner\ndineric\ndinero\ndineros\ndiners\ndines\ndinette\ndinettes\nding\ndingbat\ndingbats\ndingdong\ndingdonged\ndingdonging\ndingdongs\ndinge\ndinged\ndingey\ndingeys\ndinghies\ndinghy\ndingier\ndingies\ndingiest\ndingily\ndinginess\ndinging\ndingle\ndingles\ndingo\ndingoes\ndings\ndingus\ndinguses\ndingy\ndining\ndink\ndinked\ndinkey\ndinkeys\ndinkier\ndinkies\ndinkiest\ndinking\ndinkly\ndinks\ndinkum\ndinky\ndinned\ndinner\ndinners\ndinnerware\ndinning\ndinosaur\ndinosaurs\ndins\ndint\ndinted\ndinting\ndints\ndiobol\ndiobolon\ndiobolons\ndiobols\ndiocesan\ndiocesans\ndiocese\ndioceses\ndiode\ndiodes\ndioecism\ndioecisms\ndioicous\ndiol\ndiolefin\ndiolefins\ndiols\ndiopside\ndiopsides\ndioptase\ndioptases\ndiopter\ndiopters\ndioptral\ndioptre\ndioptres\ndioptric\ndiorama\ndioramas\ndioramic\ndiorite\ndiorites\ndioritic\ndioxane\ndioxanes\ndioxid\ndioxide\ndioxides\ndioxids\ndip\ndiphase\ndiphasic\ndiphenyl\ndiphenyls\ndiphtheria\ndiphtherial\ndiphtheritic\ndiphtheroid\ndiphtheroids\ndiphthong\ndiphthongal\ndiphthongs\ndiplegia\ndiplegias\ndiplex\ndiploe\ndiploes\ndiploic\ndiploid\ndiploidies\ndiploids\ndiploidy\ndiploma\ndiplomacies\ndiplomacy\ndiplomaed\ndiplomaing\ndiplomas\ndiplomat\ndiplomata\ndiplomate\ndiplomates\ndiplomatic\ndiplomatically\ndiplomats\ndiplont\ndiplonts\ndiplopia\ndiplopias\ndiplopic\ndiplopod\ndiplopods\ndiploses\ndiplosis\ndipnoan\ndipnoans\ndipodic\ndipodies\ndipody\ndipolar\ndipole\ndipoles\ndippable\ndipped\ndipper\ndippers\ndippier\ndippiest\ndipping\ndippy\ndips\ndipsades\ndipsas\ndipso\ndipsomania\ndipsomaniac\ndipsomaniacal\ndipsomaniacs\ndipsomanias\ndipstick\ndipsticks\ndipt\ndiptera\ndipteral\ndipteran\ndipterans\ndipteron\ndiptyca\ndiptycas\ndiptych\ndiptychs\ndiquat\ndiquats\ndirdum\ndirdums\ndire\ndirect\ndirected\ndirecter\ndirectest\ndirecting\ndirection\ndirectional\ndirections\ndirective\ndirectives\ndirectivity\ndirectly\ndirectness\ndirector\ndirectorate\ndirectorates\ndirectorial\ndirectories\ndirectors\ndirectorship\ndirectorships\ndirectory\ndirects\ndireful\ndirefully\ndirely\ndireness\ndirenesses\ndirer\ndirest\ndirge\ndirgeful\ndirges\ndirham\ndirhams\ndirigible\ndirigibles\ndiriment\ndirk\ndirked\ndirking\ndirks\ndirl\ndirled\ndirling\ndirls\ndirndl\ndirndls\ndirt\ndirtied\ndirtier\ndirties\ndirtiest\ndirtily\ndirtiness\ndirts\ndirty\ndirtying\ndisabilities\ndisability\ndisable\ndisabled\ndisablement\ndisablements\ndisables\ndisabling\ndisabuse\ndisabused\ndisabuses\ndisabusing\ndisadvantage\ndisadvantaged\ndisadvantageous\ndisadvantageously\ndisadvantageousness\ndisadvantages\ndisadvantaging\ndisaffect\ndisaffected\ndisaffecting\ndisaffection\ndisaffections\ndisaffects\ndisagree\ndisagreeable\ndisagreeableness\ndisagreeably\ndisagreed\ndisagreeing\ndisagreement\ndisagreements\ndisagrees\ndisallow\ndisallowance\ndisallowances\ndisallowed\ndisallowing\ndisallows\ndisambiguate\ndisambiguated\ndisambiguates\ndisambiguating\ndisambiguation\ndisambiguations\ndisannul\ndisannulled\ndisannulling\ndisannuls\ndisappear\ndisappearance\ndisappearances\ndisappeared\ndisappearing\ndisappears\ndisappoint\ndisappointed\ndisappointedly\ndisappointing\ndisappointingly\ndisappointment\ndisappointments\ndisappoints\ndisapprobation\ndisapprobations\ndisapproval\ndisapprovals\ndisapprove\ndisapproved\ndisapprover\ndisapprovers\ndisapproves\ndisapproving\ndisapprovingly\ndisarm\ndisarmament\ndisarmaments\ndisarmed\ndisarmer\ndisarmers\ndisarming\ndisarmingly\ndisarms\ndisarrange\ndisarranged\ndisarrangement\ndisarrangements\ndisarranges\ndisarranging\ndisarray\ndisarrayed\ndisarraying\ndisarrays\ndisassemble\ndisassembled\ndisassembles\ndisassembling\ndisassembly\ndisassociate\ndisassociated\ndisassociates\ndisassociating\ndisassociation\ndisassociations\ndisaster\ndisasters\ndisastrous\ndisastrously\ndisastrousness\ndisavow\ndisavowal\ndisavowals\ndisavowed\ndisavowing\ndisavows\ndisband\ndisbanded\ndisbanding\ndisbandment\ndisbandments\ndisbands\ndisbar\ndisbarment\ndisbarments\ndisbarred\ndisbarring\ndisbars\ndisbelief\ndisbeliefs\ndisbelieve\ndisbelieved\ndisbeliever\ndisbelievers\ndisbelieves\ndisbelieving\ndisbelievingly\ndisbosom\ndisbosomed\ndisbosoming\ndisbosoms\ndisbound\ndisbowel\ndisboweled\ndisboweling\ndisbowelled\ndisbowelling\ndisbowels\ndisbud\ndisbudded\ndisbudding\ndisbuds\ndisburse\ndisbursed\ndisbursement\ndisbursements\ndisburser\ndisbursers\ndisburses\ndisbursing\ndisc\ndiscant\ndiscanted\ndiscanting\ndiscants\ndiscard\ndiscarded\ndiscarding\ndiscards\ndiscase\ndiscased\ndiscases\ndiscasing\ndisced\ndiscept\ndiscepted\ndiscepting\ndiscepts\ndiscern\ndiscerned\ndiscerner\ndiscerners\ndiscernible\ndiscernibly\ndiscerning\ndiscerningly\ndiscernment\ndiscernments\ndiscerns\ndischarge\ndischargeable\ndischarged\ndischarger\ndischargers\ndischarges\ndischarging\ndisci\ndiscing\ndisciple\ndiscipled\ndisciples\ndiscipleship\ndiscipleships\ndisciplinarian\ndisciplinarians\ndisciplinary\ndiscipline\ndisciplined\ndiscipliner\ndiscipliners\ndisciplines\ndiscipling\ndisciplining\ndisclaim\ndisclaimed\ndisclaimer\ndisclaimers\ndisclaiming\ndisclaims\ndisclike\ndisclose\ndisclosed\ndiscloser\ndisclosers\ndiscloses\ndisclosing\ndisclosure\ndisclosures\ndisco\ndiscographer\ndiscographers\ndiscographies\ndiscography\ndiscoid\ndiscoidal\ndiscoids\ndiscolor\ndiscoloration\ndiscolorations\ndiscolored\ndiscoloring\ndiscolors\ndiscomfit\ndiscomfited\ndiscomfiting\ndiscomfits\ndiscomfiture\ndiscomfitures\ndiscomfort\ndiscomfortable\ndiscomforted\ndiscomforting\ndiscomforts\ndiscompose\ndiscomposed\ndiscomposes\ndiscomposing\ndiscomposure\ndiscomposures\ndisconcert\ndisconcerted\ndisconcerting\ndisconcertingly\ndisconcerts\ndisconnect\ndisconnected\ndisconnectedly\ndisconnectedness\ndisconnecting\ndisconnection\ndisconnections\ndisconnects\ndisconsolate\ndisconsolately\ndisconsolateness\ndisconsolation\ndiscontent\ndiscontented\ndiscontentedly\ndiscontentedness\ndiscontentment\ndiscontentments\ndiscontents\ndiscontinuance\ndiscontinuances\ndiscontinue\ndiscontinued\ndiscontinues\ndiscontinuing\ndiscontinuity\ndiscontinuous\ndiscontinuously\ndiscord\ndiscordance\ndiscordances\ndiscordancies\ndiscordancy\ndiscordant\ndiscordantly\ndiscorded\ndiscording\ndiscords\ndiscos\ndiscotheque\ndiscotheques\ndiscount\ndiscountable\ndiscounted\ndiscountenance\ndiscountenanced\ndiscountenances\ndiscountenancing\ndiscounter\ndiscounters\ndiscounting\ndiscounts\ndiscourage\ndiscouraged\ndiscouragement\ndiscouragements\ndiscourager\ndiscouragers\ndiscourages\ndiscouraging\ndiscouragingly\ndiscourse\ndiscoursed\ndiscourser\ndiscoursers\ndiscourses\ndiscoursing\ndiscourteous\ndiscourteously\ndiscourteousness\ndiscourtesies\ndiscourtesy\ndiscover\ndiscoverable\ndiscovered\ndiscoverer\ndiscoverers\ndiscoveries\ndiscovering\ndiscovers\ndiscovery\ndiscredit\ndiscreditable\ndiscreditably\ndiscredited\ndiscrediting\ndiscredits\ndiscreet\ndiscreeter\ndiscreetest\ndiscreetly\ndiscreetness\ndiscrepancies\ndiscrepancy\ndiscrepant\ndiscrepantly\ndiscrete\ndiscretely\ndiscreteness\ndiscretion\ndiscretional\ndiscretionary\ndiscretions\ndiscriminate\ndiscriminated\ndiscriminates\ndiscriminating\ndiscriminatingly\ndiscrimination\ndiscriminational\ndiscriminations\ndiscriminative\ndiscriminatively\ndiscriminator\ndiscriminators\ndiscriminatory\ndiscrown\ndiscrowned\ndiscrowning\ndiscrowns\ndiscs\ndiscursive\ndiscursively\ndiscursiveness\ndiscus\ndiscuses\ndiscuss\ndiscussable\ndiscussant\ndiscussants\ndiscussed\ndiscusser\ndiscussers\ndiscusses\ndiscussible\ndiscussing\ndiscussion\ndiscussions\ndisdain\ndisdained\ndisdainful\ndisdainfully\ndisdainfulness\ndisdaining\ndisdains\ndisease\ndiseased\ndiseases\ndiseasing\ndisembark\ndisembarkation\ndisembarkations\ndisembarked\ndisembarking\ndisembarks\ndisembarrass\ndisembarrassed\ndisembarrasses\ndisembarrassing\ndisembodied\ndisembodies\ndisembody\ndisembodying\ndisembowel\ndisemboweled\ndisemboweling\ndisembowelment\ndisembowelments\ndisembowels\ndisenchant\ndisenchanted\ndisenchanter\ndisenchanters\ndisenchanting\ndisenchantingly\ndisenchantment\ndisenchantments\ndisenchants\ndisencumber\ndisencumbered\ndisencumbering\ndisencumbers\ndisendow\ndisendowed\ndisendowing\ndisendows\ndisenfranchise\ndisenfranchised\ndisenfranchisement\ndisenfranchisements\ndisenfranchises\ndisenfranchising\ndisengage\ndisengaged\ndisengagement\ndisengagements\ndisengages\ndisengaging\ndisentangle\ndisentangled\ndisentanglement\ndisentanglements\ndisentangles\ndisentangling\ndiseuse\ndiseuses\ndisfavor\ndisfavored\ndisfavoring\ndisfavors\ndisfigure\ndisfigured\ndisfigurement\ndisfigurements\ndisfigures\ndisfiguring\ndisfranchise\ndisfranchised\ndisfranchisement\ndisfranchisements\ndisfranchises\ndisfranchising\ndisfrock\ndisfrocked\ndisfrocking\ndisfrocks\ndisgorge\ndisgorged\ndisgorges\ndisgorging\ndisgrace\ndisgraced\ndisgraceful\ndisgracefully\ndisgracefulness\ndisgracer\ndisgracers\ndisgraces\ndisgracing\ndisgruntle\ndisgruntled\ndisgruntlement\ndisgruntlements\ndisgruntles\ndisgruntling\ndisguise\ndisguised\ndisguisedly\ndisguiser\ndisguisers\ndisguises\ndisguising\ndisgust\ndisgusted\ndisgustedly\ndisgustful\ndisgustfully\ndisgusting\ndisgustingly\ndisgusts\ndish\ndishabille\ndisharmonies\ndisharmonious\ndisharmonize\ndisharmonized\ndisharmonizes\ndisharmonizing\ndisharmony\ndishcloth\ndishcloths\ndishearten\ndisheartened\ndisheartening\ndishearteningly\ndisheartenment\ndisheartenments\ndisheartens\ndished\ndishelm\ndishelmed\ndishelming\ndishelms\ndisherit\ndisherited\ndisheriting\ndisherits\ndishes\ndishevel\ndisheveled\ndisheveling\ndishevelled\ndishevelling\ndishevelment\ndishevelments\ndishevels\ndishful\ndishfuls\ndishier\ndishiest\ndishing\ndishlike\ndishonest\ndishonesties\ndishonestly\ndishonesty\ndishonor\ndishonorable\ndishonorableness\ndishonorably\ndishonored\ndishonorer\ndishonorers\ndishonoring\ndishonors\ndishpan\ndishpans\ndishrag\ndishrags\ndishware\ndishwares\ndishwasher\ndishwashers\ndishwater\ndishwaters\ndishy\ndisillusion\ndisillusioned\ndisillusioning\ndisillusionment\ndisillusionments\ndisillusions\ndisincentive\ndisincentives\ndisinclination\ndisinclinations\ndisincline\ndisinclined\ndisinclines\ndisinclining\ndisinfect\ndisinfectant\ndisinfectants\ndisinfected\ndisinfecting\ndisinfection\ndisinfections\ndisinfects\ndisingenuous\ndisingenuously\ndisingenuousness\ndisinherit\ndisinheritance\ndisinherited\ndisinheriting\ndisinherits\ndisintegrate\ndisintegrated\ndisintegrates\ndisintegrating\ndisintegration\ndisintegrations\ndisintegrative\ndisintegrator\ndisintegrators\ndisinter\ndisinterest\ndisinterested\ndisinterestedly\ndisinterestedness\ndisinteresting\ndisinterests\ndisinterment\ndisinterments\ndisinterred\ndisinterring\ndisinters\ndisject\ndisjected\ndisjecting\ndisjects\ndisjoin\ndisjoined\ndisjoining\ndisjoins\ndisjoint\ndisjointed\ndisjointedly\ndisjointedness\ndisjointing\ndisjoints\ndisjunct\ndisjunction\ndisjunctions\ndisjunctive\ndisjunctively\ndisjuncts\ndisjuncture\ndisjunctures\ndisk\ndisked\ndisking\ndisklike\ndisks\ndislikable\ndislike\ndisliked\ndisliker\ndislikers\ndislikes\ndisliking\ndislimn\ndislimned\ndislimning\ndislimns\ndislocate\ndislocated\ndislocates\ndislocating\ndislocation\ndislocations\ndislodge\ndislodged\ndislodges\ndislodging\ndislodgment\ndislodgments\ndisloyal\ndisloyally\ndisloyalties\ndisloyalty\ndismal\ndismaler\ndismalest\ndismally\ndismalness\ndismals\ndismantle\ndismantled\ndismantlement\ndismantlements\ndismantles\ndismantling\ndismast\ndismasted\ndismasting\ndismasts\ndismay\ndismayed\ndismaying\ndismays\ndisme\ndismember\ndismembered\ndismembering\ndismemberment\ndismemberments\ndismembers\ndismes\ndismiss\ndismissal\ndismissals\ndismissed\ndismisses\ndismissing\ndismission\ndismissive\ndismount\ndismounted\ndismounting\ndismounts\ndisobedience\ndisobediences\ndisobedient\ndisobediently\ndisobey\ndisobeyed\ndisobeyer\ndisobeyers\ndisobeying\ndisobeys\ndisomic\ndisorder\ndisordered\ndisorderedly\ndisorderedness\ndisordering\ndisorderliness\ndisorderly\ndisorders\ndisorganization\ndisorganizations\ndisorganize\ndisorganized\ndisorganizes\ndisorganizing\ndisorient\ndisorientate\ndisorientated\ndisorientates\ndisorientating\ndisorientation\ndisorientations\ndisoriented\ndisorienting\ndisorients\ndisown\ndisowned\ndisowning\ndisownment\ndisowns\ndisparage\ndisparaged\ndisparagement\ndisparagements\ndisparager\ndisparagers\ndisparages\ndisparaging\ndisparagingly\ndisparate\ndisparately\ndisparateness\ndisparities\ndisparity\ndispart\ndisparted\ndisparting\ndisparts\ndispassionate\ndispassionately\ndispassionateness\ndispatch\ndispatched\ndispatcher\ndispatchers\ndispatches\ndispatching\ndispel\ndispelled\ndispelling\ndispels\ndispend\ndispended\ndispending\ndispends\ndispensability\ndispensable\ndispensaries\ndispensary\ndispensation\ndispensational\ndispensations\ndispense\ndispensed\ndispenser\ndispensers\ndispenses\ndispensing\ndispersal\ndispersals\ndisperse\ndispersed\ndispersedly\ndisperser\ndispersers\ndisperses\ndispersible\ndispersing\ndispersion\ndispersions\ndispersive\ndispersively\ndispersiveness\ndispirit\ndispirited\ndispiritedly\ndispiritedness\ndispiriting\ndispirits\ndisplace\ndisplaced\ndisplacement\ndisplacements\ndisplaces\ndisplacing\ndisplant\ndisplanted\ndisplanting\ndisplants\ndisplay\ndisplayed\ndisplaying\ndisplays\ndisplease\ndispleased\ndispleases\ndispleasing\ndispleasure\ndispleasures\ndisplode\ndisploded\ndisplodes\ndisploding\ndisplume\ndisplumed\ndisplumes\ndispluming\ndisport\ndisported\ndisporting\ndisports\ndisposable\ndisposal\ndisposals\ndispose\ndisposed\ndisposer\ndisposers\ndisposes\ndisposing\ndisposition\ndispositional\ndispositions\ndispossess\ndispossessed\ndispossesses\ndispossessing\ndispossession\ndispossessions\ndispossessor\ndispossessors\ndispread\ndispreading\ndispreads\ndisprize\ndisprized\ndisprizes\ndisprizing\ndisproof\ndisproofs\ndisproportion\ndisproportional\ndisproportionate\ndisproportionately\ndisproportions\ndisprovable\ndisprove\ndisproved\ndisproven\ndisproves\ndisproving\ndisputable\ndisputably\ndisputant\ndisputants\ndisputation\ndisputations\ndisputatious\ndisputatiously\ndisputatiousness\ndispute\ndisputed\ndisputer\ndisputers\ndisputes\ndisputing\ndisqualification\ndisqualifications\ndisqualified\ndisqualifies\ndisqualify\ndisqualifying\ndisquiet\ndisquieted\ndisquieting\ndisquietingly\ndisquietly\ndisquiets\ndisquietude\ndisquietudes\ndisquisition\ndisquisitions\ndisrate\ndisrated\ndisrates\ndisrating\ndisregard\ndisregarded\ndisregardful\ndisregarding\ndisregards\ndisrepair\ndisrepairs\ndisreputability\ndisreputable\ndisreputableness\ndisreputably\ndisrepute\ndisreputes\ndisrespect\ndisrespectability\ndisrespectable\ndisrespected\ndisrespectful\ndisrespectfully\ndisrespectfulness\ndisrespecting\ndisrespects\ndisrobe\ndisrobed\ndisrober\ndisrobers\ndisrobes\ndisrobing\ndisroot\ndisrooted\ndisrooting\ndisroots\ndisrupt\ndisrupted\ndisrupter\ndisrupters\ndisrupting\ndisruption\ndisruptions\ndisruptive\ndisruptively\ndisruptiveness\ndisrupts\ndissatisfaction\ndissatisfactions\ndissatisfactory\ndissatisfied\ndissatisfies\ndissatisfy\ndissatisfying\ndissave\ndissaved\ndissaves\ndissaving\ndisseat\ndisseated\ndisseating\ndisseats\ndissect\ndissected\ndissecting\ndissection\ndissections\ndissector\ndissectors\ndissects\ndisseise\ndisseised\ndisseiseised\ndisseiseises\ndisseiseising\ndisseises\ndisseising\ndisseize\ndisseized\ndisseizes\ndisseizing\ndissemble\ndissembled\ndissembler\ndissemblers\ndissembles\ndissembling\ndisseminate\ndisseminated\ndisseminates\ndisseminating\ndissemination\ndisseminations\ndisseminator\ndisseminators\ndissension\ndissensions\ndissent\ndissented\ndissenter\ndissenters\ndissentient\ndissentients\ndissenting\ndissents\ndissert\ndissertate\ndissertates\ndissertation\ndissertational\ndissertations\ndissertator\ndissertators\ndisserted\ndisserting\ndisserts\ndisserve\ndisserved\ndisserves\ndisservice\ndisservices\ndisserving\ndissever\ndisseverance\ndissevered\ndissevering\ndisseverment\ndissevers\ndissidence\ndissidences\ndissident\ndissidents\ndissimilar\ndissimilarities\ndissimilarity\ndissimilarly\ndissimilate\ndissimilated\ndissimilates\ndissimilating\ndissimilation\ndissimilations\ndissimilative\ndissimilatory\ndissimilitude\ndissimilitudes\ndissimulate\ndissimulated\ndissimulates\ndissimulating\ndissimulation\ndissimulations\ndissimulator\ndissimulators\ndissipate\ndissipated\ndissipatedly\ndissipatedness\ndissipater\ndissipaters\ndissipates\ndissipating\ndissipation\ndissipations\ndissipative\ndissociate\ndissociated\ndissociates\ndissociating\ndissociation\ndissociations\ndissociative\ndissolubilities\ndissolubility\ndissoluble\ndissolute\ndissolutely\ndissoluteness\ndissolution\ndissolutions\ndissolvable\ndissolve\ndissolved\ndissolver\ndissolvers\ndissolves\ndissolving\ndissonance\ndissonances\ndissonant\ndissonantly\ndissuade\ndissuaded\ndissuader\ndissuaders\ndissuades\ndissuading\ndissuasion\ndissuasions\ndissuasive\ndissuasively\ndissuasiveness\ndissymmetric\ndissymmetries\ndissymmetry\ndistaff\ndistaffs\ndistain\ndistained\ndistaining\ndistains\ndistal\ndistally\ndistance\ndistanced\ndistances\ndistancing\ndistant\ndistantly\ndistantness\ndistaste\ndistasted\ndistasteful\ndistastefully\ndistastefulness\ndistastes\ndistasting\ndistaves\ndistemper\ndistempered\ndistempering\ndistempers\ndistend\ndistended\ndistending\ndistends\ndistension\ndistensions\ndistent\ndistention\ndistentions\ndistich\ndistichs\ndistil\ndistill\ndistillate\ndistillates\ndistillation\ndistillations\ndistilled\ndistiller\ndistilleries\ndistillers\ndistillery\ndistilling\ndistills\ndistils\ndistinct\ndistincter\ndistinctest\ndistinction\ndistinctions\ndistinctive\ndistinctively\ndistinctiveness\ndistinctly\ndistinctness\ndistinguish\ndistinguishability\ndistinguishable\ndistinguishably\ndistinguished\ndistinguishes\ndistinguishing\ndistome\ndistomes\ndistort\ndistorted\ndistorter\ndistorters\ndistorting\ndistortion\ndistortional\ndistortions\ndistorts\ndistract\ndistracted\ndistractedly\ndistractibility\ndistractible\ndistracting\ndistraction\ndistractions\ndistractive\ndistracts\ndistrain\ndistrained\ndistraining\ndistrains\ndistrait\ndistraught\ndistraughtly\ndistress\ndistressed\ndistresses\ndistressful\ndistressfully\ndistressfulness\ndistressing\ndistressingly\ndistributable\ndistributaries\ndistributary\ndistribute\ndistributed\ndistributes\ndistributing\ndistribution\ndistributional\ndistributions\ndistributive\ndistributively\ndistributiveness\ndistributor\ndistributors\ndistributorship\ndistributorships\ndistrict\ndistricted\ndistricting\ndistricts\ndistrust\ndistrusted\ndistrustful\ndistrustfully\ndistrustfulness\ndistrusting\ndistrusts\ndisturb\ndisturbance\ndisturbances\ndisturbed\ndisturber\ndisturbers\ndisturbing\ndisturbingly\ndisturbs\ndisulfid\ndisulfids\ndisunion\ndisunionist\ndisunionists\ndisunions\ndisunite\ndisunited\ndisunites\ndisunities\ndisuniting\ndisunity\ndisuse\ndisused\ndisuses\ndisusing\ndisvalue\ndisvalued\ndisvalues\ndisvaluing\ndisyllabic\ndisyllable\ndisyllables\ndisyoke\ndisyoked\ndisyokes\ndisyoking\ndit\ndita\nditas\nditch\nditched\nditcher\nditchers\nditches\nditching\ndite\ndites\nditheism\nditheisms\nditheist\nditheists\ndither\ndithered\ndithering\ndithers\ndithery\ndithiol\ndits\nditsy\ndittanies\ndittany\nditties\nditto\ndittoed\ndittoing\ndittos\nditty\nditzy\ndiureses\ndiuresis\ndiuretic\ndiuretically\ndiuretics\ndiurnal\ndiurnally\ndiurnals\ndiuron\ndiurons\ndiva\ndivagate\ndivagated\ndivagates\ndivagating\ndivagation\ndivagations\ndivalent\ndivan\ndivans\ndivas\ndive\ndived\ndiver\ndiverge\ndiverged\ndivergence\ndivergences\ndivergencies\ndivergency\ndivergent\ndivergently\ndiverges\ndiverging\ndivers\ndiverse\ndiversely\ndiverseness\ndiversification\ndiversifications\ndiversified\ndiversifier\ndiversifiers\ndiversifies\ndiversify\ndiversifying\ndiversion\ndiversionary\ndiversions\ndiversities\ndiversity\ndivert\ndiverted\ndiverter\ndiverters\ndiverting\ndivertissement\ndivertissements\ndiverts\ndives\ndivest\ndivested\ndivesting\ndivestiture\ndivestitures\ndivestment\ndivestments\ndivests\ndividable\ndivide\ndivided\ndividend\ndividends\ndivider\ndividers\ndivides\ndividing\ndividual\ndivination\ndivinations\ndivine\ndivined\ndivinely\ndiviner\ndiviners\ndivines\ndivinest\ndiving\ndivining\ndivinise\ndivinised\ndivinises\ndivinising\ndivinities\ndivinity\ndivinize\ndivinized\ndivinizes\ndivinizing\ndivisibility\ndivisible\ndivision\ndivisional\ndivisions\ndivisive\ndivisively\ndivisiveness\ndivisor\ndivisors\ndivorce\ndivorced\ndivorcee\ndivorcees\ndivorcement\ndivorcements\ndivorcer\ndivorcers\ndivorces\ndivorcing\ndivot\ndivots\ndivulge\ndivulged\ndivulgence\ndivulgences\ndivulger\ndivulgers\ndivulges\ndivulging\ndivvied\ndivvies\ndivvy\ndivvying\ndiwan\ndiwans\ndixit\ndixits\ndizen\ndizened\ndizening\ndizens\ndizygous\ndizzied\ndizzier\ndizzies\ndizziest\ndizzily\ndizziness\ndizzy\ndizzying\ndizzyingly\ndjebel\ndjebels\ndjellaba\ndjellabas\ndjin\ndjinn\ndjinni\ndjinns\ndjinny\ndjins\ndo\ndoable\ndoat\ndoated\ndoating\ndoats\ndobber\ndobbers\ndobbies\ndobbin\ndobbins\ndobby\ndobie\ndobies\ndobla\ndoblas\ndoblon\ndoblones\ndoblons\ndobra\ndobras\ndobson\ndobsons\ndoby\ndoc\ndocent\ndocents\ndocetic\ndocile\ndocilely\ndocilities\ndocility\ndock\ndockage\ndockages\ndocked\ndocker\ndockers\ndocket\ndocketed\ndocketing\ndockets\ndockhand\ndockhands\ndocking\ndockland\ndocklands\ndocks\ndockside\ndocksides\ndockyard\ndockyards\ndocs\ndoctor\ndoctoral\ndoctorate\ndoctorates\ndoctored\ndoctoring\ndoctors\ndoctorship\ndoctrinaire\ndoctrinaires\ndoctrinairism\ndoctrinal\ndoctrinally\ndoctrine\ndoctrines\ndocument\ndocumentable\ndocumental\ndocumentarian\ndocumentarians\ndocumentaries\ndocumentary\ndocumentation\ndocumentations\ndocumented\ndocumenting\ndocuments\ndodder\ndoddered\ndodderer\ndodderers\ndoddering\ndodders\ndoddery\ndodge\ndodged\ndodger\ndodgeries\ndodgers\ndodgery\ndodges\ndodgier\ndodgiest\ndodging\ndodgy\ndodo\ndodoes\ndodoism\ndodoisms\ndodos\ndoe\ndoer\ndoers\ndoes\ndoeskin\ndoeskins\ndoest\ndoeth\ndoff\ndoffed\ndoffer\ndoffers\ndoffing\ndoffs\ndog\ndogbane\ndogbanes\ndogberries\ndogberry\ndogcart\ndogcarts\ndogcatcher\ndogcatchers\ndogdom\ndogdoms\ndoge\ndogedom\ndogedoms\ndoges\ndogeship\ndogeships\ndogey\ndogeys\ndogface\ndogfaces\ndogfight\ndogfighting\ndogfights\ndogfish\ndogfishes\ndogfought\ndogged\ndoggedly\ndoggedness\ndogger\ndoggerel\ndoggerels\ndoggeries\ndoggers\ndoggery\ndoggie\ndoggier\ndoggies\ndoggiest\ndogging\ndoggish\ndoggishly\ndoggishness\ndoggo\ndoggone\ndoggoned\ndoggoneder\ndoggonedest\ndoggoner\ndoggones\ndoggonest\ndoggoning\ndoggrel\ndoggrels\ndoggy\ndoghouse\ndoghouses\ndogie\ndogies\ndogleg\ndoglegged\ndoglegging\ndoglegs\ndoglike\ndogma\ndogmas\ndogmata\ndogmatic\ndogmatical\ndogmatically\ndogmatics\ndogmatism\ndogmatisms\ndogmatist\ndogmatists\ndogmatization\ndogmatizations\ndogmatize\ndogmatized\ndogmatizer\ndogmatizers\ndogmatizes\ndogmatizing\ndognap\ndognaped\ndognaper\ndognapers\ndognaping\ndognapped\ndognapping\ndognaps\ndogs\ndogsbodies\ndogsbody\ndogsled\ndogsleds\ndogtooteeth\ndogtooth\ndogtrot\ndogtrots\ndogtrotted\ndogtrotting\ndogvane\ndogvanes\ndogwatch\ndogwatches\ndogwood\ndogwoods\ndogy\ndoiled\ndoilies\ndoily\ndoing\ndoings\ndoit\ndoited\ndoits\ndojo\ndojos\ndol\ndolce\ndolci\ndoldrums\ndole\ndoled\ndoleful\ndolefuller\ndolefullest\ndolefully\ndolefulness\ndolerite\ndolerites\ndoles\ndolesome\ndoling\ndoll\ndollar\ndollars\ndolled\ndollied\ndollies\ndolling\ndollish\ndollishly\ndollop\ndollops\ndolls\ndolly\ndollying\ndolma\ndolman\ndolmans\ndolmen\ndolmens\ndolomite\ndolomites\ndolomitic\ndolor\ndoloroso\ndolorous\ndolorously\ndolorousness\ndolors\ndolour\ndolours\ndolphin\ndolphins\ndols\ndolt\ndoltish\ndoltishly\ndoltishness\ndolts\ndom\ndomain\ndomains\ndomal\ndome\ndomed\ndomelike\ndomes\ndomesday\ndomesdays\ndomestic\ndomestically\ndomesticate\ndomesticated\ndomesticates\ndomesticating\ndomestication\ndomestications\ndomesticities\ndomesticity\ndomestics\ndomic\ndomical\ndomicil\ndomicile\ndomiciled\ndomiciles\ndomiciling\ndomicils\ndominance\ndominances\ndominant\ndominantly\ndominants\ndominate\ndominated\ndominates\ndominating\ndomination\ndominations\ndominative\ndominator\ndominators\ndomine\ndomineer\ndomineered\ndomineering\ndomineeringly\ndomineeringness\ndomineers\ndomines\ndoming\ndominick\ndominicks\ndominie\ndominies\ndominion\ndominions\ndominium\ndominiums\ndomino\ndominoes\ndominos\ndoms\ndon\ndona\ndonas\ndonate\ndonated\ndonates\ndonating\ndonation\ndonations\ndonative\ndonatives\ndonator\ndonators\ndone\ndonee\ndonees\ndoneness\ndonenesses\ndong\ndonga\ndongola\ndongolas\ndongs\ndonjon\ndonjons\ndonkey\ndonkeys\ndonna\ndonnas\ndonne\ndonned\ndonnee\ndonnees\ndonnerd\ndonnered\ndonnert\ndonning\ndonnish\ndonnishly\ndonnishness\ndonnybrook\ndonnybrooks\ndonor\ndonors\ndonorship\ndonorships\ndons\ndonsie\ndonsy\ndonut\ndonuts\ndonzel\ndonzels\ndoodad\ndoodads\ndoodle\ndoodled\ndoodler\ndoodlers\ndoodles\ndoodling\ndoolee\ndoolees\ndoolie\ndoolies\ndooly\ndoom\ndoomed\ndoomful\ndooming\ndooms\ndoomsday\ndoomsdays\ndoomster\ndoomsters\ndoor\ndoorbell\ndoorbells\ndoorjamb\ndoorjambs\ndoorkeeper\ndoorkeepers\ndoorknob\ndoorknobs\ndoorless\ndoorman\ndoormat\ndoormats\ndoormen\ndoornail\ndoornails\ndoorplate\ndoorplates\ndoorpost\ndoorposts\ndoors\ndoorsill\ndoorsills\ndoorstep\ndoorsteps\ndoorstop\ndoorstops\ndoorway\ndoorways\ndooryard\ndooryards\ndoozer\ndoozers\ndoozies\ndoozy\ndopa\ndopamine\ndopamines\ndopant\ndopants\ndopas\ndope\ndoped\ndoper\ndopers\ndopes\ndopester\ndopesters\ndopey\ndopier\ndopiest\ndopiness\ndopinesses\ndoping\ndopy\ndor\ndorado\ndorados\ndorbug\ndorbugs\ndore\ndorhawk\ndorhawks\ndories\ndork\ndorks\ndorky\ndorm\ndormancies\ndormancy\ndormant\ndormer\ndormers\ndormice\ndormie\ndormient\ndormin\ndormins\ndormitories\ndormitory\ndormouse\ndorms\ndormy\ndorneck\ndornecks\ndornick\ndornicks\ndornock\ndornocks\ndorp\ndorper\ndorpers\ndorps\ndorr\ndorrs\ndors\ndorsa\ndorsad\ndorsal\ndorsally\ndorsals\ndorser\ndorsers\ndorsum\ndorty\ndory\ndos\ndosage\ndosages\ndose\ndosed\ndoser\ndosers\ndoses\ndosimeter\ndosimeters\ndosing\ndoss\ndossal\ndossals\ndossed\ndossel\ndossels\ndosser\ndosseret\ndosserets\ndossers\ndosses\ndossier\ndossiers\ndossil\ndossils\ndossing\ndost\ndot\ndotage\ndotages\ndotal\ndotard\ndotardly\ndotards\ndotation\ndotations\ndote\ndoted\ndoter\ndoters\ndotes\ndoth\ndotier\ndotiest\ndoting\ndotingly\ndots\ndotted\ndottel\ndottels\ndotter\ndotterel\ndotterels\ndotters\ndottier\ndottiest\ndottily\ndotting\ndottle\ndottles\ndottrel\ndottrels\ndotty\ndoty\ndouble\ndoubled\ndoubleheader\ndoubleheaders\ndoubleness\ndoubler\ndoublers\ndoubles\ndoublet\ndoublets\ndoubling\ndoubloon\ndoubloons\ndoublure\ndoublures\ndoubly\ndoubt\ndoubtable\ndoubted\ndoubter\ndoubters\ndoubtful\ndoubtfully\ndoubtfulness\ndoubting\ndoubtingly\ndoubtless\ndoubtlessly\ndoubtlessness\ndoubts\ndouce\ndoucely\ndouceur\ndouceurs\ndouche\ndouched\ndouches\ndouching\ndough\ndoughboy\ndoughboys\ndoughier\ndoughiest\ndoughnut\ndoughnuts\ndoughs\ndought\ndoughtier\ndoughtiest\ndoughtily\ndoughtiness\ndoughty\ndoughy\ndoum\ndouma\ndoumas\ndoums\ndour\ndoura\ndourah\ndourahs\ndouras\ndourer\ndourest\ndourine\ndourines\ndourly\ndourness\ndournesses\ndouse\ndoused\ndouser\ndousers\ndouses\ndousing\ndoux\ndouzeper\ndouzepers\ndove\ndovecot\ndovecote\ndovecotes\ndovecots\ndovekey\ndovekeys\ndovekie\ndovekies\ndovelike\ndoven\ndovened\ndovening\ndovens\ndoves\ndovetail\ndovetailed\ndovetailing\ndovetails\ndovish\ndow\ndowable\ndowager\ndowagers\ndowdier\ndowdies\ndowdiest\ndowdily\ndowdiness\ndowdy\ndowdyish\ndowed\ndowel\ndoweled\ndoweling\ndowelled\ndowelling\ndowels\ndower\ndowered\ndoweries\ndowering\ndowers\ndowery\ndowie\ndowing\ndown\ndownbeat\ndownbeats\ndowncast\ndowncasts\ndowncome\ndowncomes\ndowned\ndowner\ndowners\ndownfall\ndownfallen\ndownfalls\ndowngrade\ndowngraded\ndowngrades\ndowngrading\ndownhaul\ndownhauls\ndownhearted\ndownheartedly\ndownheartedness\ndownhill\ndownhills\ndownier\ndowniest\ndowning\ndownplay\ndownplayed\ndownplaying\ndownplays\ndownpour\ndownpours\ndownrange\ndownright\ndownrightly\ndownrightness\ndowns\ndownspout\ndownspouts\ndownstage\ndownstages\ndownstairs\ndownstate\ndownstater\ndownstaters\ndownstream\ndownswing\ndownswings\ndowntime\ndowntimes\ndowntown\ndowntowns\ndowntrod\ndowntrodden\ndownturn\ndownturns\ndownward\ndownwardly\ndownwardness\ndownwards\ndownwind\ndowny\ndowries\ndowry\ndows\ndowsabel\ndowsabels\ndowse\ndowsed\ndowser\ndowsers\ndowses\ndowsing\ndoxie\ndoxies\ndoxologies\ndoxology\ndoxy\ndoyen\ndoyenne\ndoyennes\ndoyens\ndoyley\ndoyleys\ndoylies\ndoyly\ndoze\ndozed\ndozen\ndozened\ndozening\ndozens\ndozenth\ndozenths\ndozer\ndozers\ndozes\ndozier\ndoziest\ndozily\ndoziness\ndozinesses\ndozing\ndozy\ndrab\ndrabbed\ndrabber\ndrabbest\ndrabbet\ndrabbets\ndrabbing\ndrabble\ndrabbled\ndrabbles\ndrabbling\ndrably\ndrabness\ndrabnesses\ndrabs\ndracaena\ndracaenas\ndrachm\ndrachma\ndrachmae\ndrachmai\ndrachmas\ndrachms\ndraconic\ndraff\ndraffier\ndraffiest\ndraffish\ndraffs\ndraffy\ndraft\ndraftable\ndrafted\ndraftee\ndraftees\ndrafter\ndrafters\ndraftier\ndraftiest\ndraftily\ndraftiness\ndrafting\ndraftings\ndrafts\ndraftsman\ndraftsmanship\ndraftsmen\ndrafty\ndrag\ndragee\ndragees\ndragged\ndragger\ndraggers\ndraggier\ndraggiest\ndragging\ndraggingly\ndraggle\ndraggled\ndraggles\ndraggling\ndraggy\ndragline\ndraglines\ndragnet\ndragnets\ndragoman\ndragomans\ndragomen\ndragon\ndragonet\ndragonets\ndragonflies\ndragonfly\ndragonish\ndragons\ndragoon\ndragooned\ndragooning\ndragoons\ndragrope\ndragropes\ndrags\ndragster\ndragsters\ndrail\ndrails\ndrain\ndrainage\ndrainages\ndrained\ndrainer\ndrainers\ndraining\ndrainpipe\ndrainpipes\ndrains\ndrake\ndrakes\ndram\ndrama\ndramas\ndramatic\ndramatically\ndramatics\ndramatist\ndramatists\ndramatizable\ndramatization\ndramatizations\ndramatize\ndramatized\ndramatizes\ndramatizing\ndramaturgic\ndramaturgical\ndramaturgically\ndramaturgy\ndrammed\ndramming\ndrammock\ndrammocks\ndrams\ndramshop\ndramshops\ndrank\ndrapable\ndrape\ndraped\ndraper\ndraperies\ndrapers\ndrapery\ndrapes\ndraping\ndrastic\ndrastically\ndrat\ndrats\ndratted\ndratting\ndraught\ndraughted\ndraughtier\ndraughtiest\ndraughting\ndraughts\ndraughty\ndrave\ndraw\ndrawable\ndrawback\ndrawbacks\ndrawbar\ndrawbars\ndrawbore\ndrawbores\ndrawbridge\ndrawbridges\ndrawdown\ndrawdowns\ndrawee\ndrawees\ndrawer\ndrawers\ndrawing\ndrawings\ndrawl\ndrawled\ndrawler\ndrawlers\ndrawlier\ndrawliest\ndrawling\ndrawlingly\ndrawls\ndrawly\ndrawn\ndraws\ndrawstring\ndrawstrings\ndrawtube\ndrawtubes\ndray\ndrayage\ndrayages\ndrayed\ndraying\ndrayman\ndraymen\ndrays\ndread\ndreaded\ndreadful\ndreadfully\ndreadfulness\ndreadfuls\ndreading\ndreads\ndream\ndreamed\ndreamer\ndreamers\ndreamful\ndreamier\ndreamiest\ndreamily\ndreaminess\ndreaming\ndreamless\ndreamlessly\ndreamlike\ndreams\ndreamt\ndreamy\ndrear\ndrearier\ndrearies\ndreariest\ndrearily\ndreariness\ndreary\ndreck\ndrecks\ndredge\ndredged\ndredger\ndredgers\ndredges\ndredging\ndredgings\ndree\ndreed\ndreeing\ndrees\ndreg\ndreggier\ndreggiest\ndreggish\ndreggy\ndregs\ndreich\ndreidel\ndreidels\ndreidl\ndreidls\ndreigh\ndrek\ndreks\ndrench\ndrenched\ndrencher\ndrenchers\ndrenches\ndrenching\ndress\ndressage\ndressages\ndressed\ndresser\ndressers\ndresses\ndressier\ndressiest\ndressily\ndressiness\ndressing\ndressings\ndressmaker\ndressmakers\ndressmaking\ndressy\ndrest\ndrew\ndrib\ndribbed\ndribbing\ndribble\ndribbled\ndribbler\ndribblers\ndribbles\ndribblet\ndribblets\ndribbling\ndriblet\ndriblets\ndribs\ndried\ndrier\ndriers\ndries\ndriest\ndrift\ndriftage\ndriftages\ndrifted\ndrifter\ndrifters\ndriftier\ndriftiest\ndrifting\ndriftingly\ndriftpin\ndriftpins\ndrifts\ndriftwood\ndrifty\ndrill\ndrillable\ndrilled\ndriller\ndrillers\ndrilling\ndrillings\ndrillmaster\ndrillmasters\ndrills\ndrily\ndrink\ndrinkable\ndrinkables\ndrinker\ndrinkers\ndrinking\ndrinks\ndrip\ndripless\ndripped\ndripper\ndrippers\ndrippier\ndrippiest\ndripping\ndrippings\ndrippy\ndrips\ndript\ndrivable\ndrive\ndrivel\ndriveled\ndriveler\ndrivelers\ndriveling\ndrivelled\ndriveller\ndrivellers\ndrivelling\ndrivels\ndriven\ndriver\ndriverless\ndrivers\ndrives\ndriveway\ndriveways\ndriving\ndrizzle\ndrizzled\ndrizzles\ndrizzlier\ndrizzliest\ndrizzling\ndrizzlingly\ndrizzly\ndrogue\ndrogues\ndroit\ndroits\ndroll\ndrolled\ndroller\ndrolleries\ndrollery\ndrollest\ndrolling\ndrollness\ndrolls\ndrolly\ndromedaries\ndromedary\ndromon\ndromond\ndromonds\ndromons\ndrone\ndroned\ndroner\ndroners\ndrones\ndrongo\ndrongos\ndroning\ndroningly\ndronish\ndrool\ndrooled\ndrooling\ndrools\ndroop\ndrooped\ndroopier\ndroopiest\ndroopily\ndrooping\ndroopingly\ndroops\ndroopy\ndrop\ndrophead\ndropheads\ndropkick\ndropkicks\ndroplet\ndroplets\ndropout\ndropouts\ndropped\ndropper\ndroppers\ndropping\ndroppings\ndrops\ndropshot\ndropshots\ndropsical\ndropsied\ndropsies\ndropsy\ndropt\ndropwort\ndropworts\ndrosera\ndroseras\ndroshkies\ndroshky\ndroskies\ndrosky\ndross\ndrosses\ndrossier\ndrossiest\ndrossy\ndrought\ndroughtier\ndroughtiest\ndroughtiness\ndroughts\ndroughty\ndrouk\ndrouked\ndrouking\ndrouks\ndrouth\ndrouthier\ndrouthiest\ndrouths\ndrouthy\ndrove\ndroved\ndrover\ndrovers\ndroves\ndroving\ndrown\ndrownd\ndrownded\ndrownding\ndrownds\ndrowned\ndrowner\ndrowners\ndrowning\ndrowns\ndrowse\ndrowsed\ndrowses\ndrowsier\ndrowsiest\ndrowsily\ndrowsiness\ndrowsing\ndrowsy\ndrub\ndrubbed\ndrubber\ndrubbers\ndrubbing\ndrubbings\ndrubs\ndrudge\ndrudged\ndrudger\ndrudgeries\ndrudgers\ndrudgery\ndrudges\ndrudging\ndrudgingly\ndrug\ndrugged\ndrugget\ndruggets\ndrugging\ndruggist\ndruggists\ndrugs\ndrugstore\ndrugstores\ndruid\ndruidess\ndruidesses\ndruidic\ndruidical\ndruidism\ndruidisms\ndruids\ndrum\ndrumbeat\ndrumbeater\ndrumbeaters\ndrumbeating\ndrumbeats\ndrumble\ndrumbled\ndrumbles\ndrumbling\ndrumfire\ndrumfires\ndrumfish\ndrumfishes\ndrumhead\ndrumheads\ndrumlier\ndrumliest\ndrumlike\ndrumlin\ndrumlins\ndrumly\ndrummed\ndrummer\ndrummers\ndrumming\ndrumroll\ndrumrolls\ndrums\ndrumstick\ndrumsticks\ndrunk\ndrunkard\ndrunkards\ndrunken\ndrunkenly\ndrunkenness\ndrunker\ndrunkest\ndrunkometer\ndrunkometers\ndrunks\ndrupe\ndrupelet\ndrupelets\ndrupes\ndruse\ndruses\ndruthers\ndry\ndryable\ndryad\ndryades\ndryadic\ndryads\ndryer\ndryers\ndryest\ndrying\ndrylot\ndrylots\ndryly\ndryness\ndrynesses\ndrypoint\ndrypoints\ndrys\nduad\nduads\ndual\ndualism\ndualisms\ndualist\ndualistic\ndualistically\ndualists\ndualities\nduality\ndualize\ndualized\ndualizes\ndualizing\ndually\nduals\ndub\ndubbed\ndubber\ndubbers\ndubbin\ndubbing\ndubbings\ndubbins\ndubieties\ndubiety\ndubious\ndubiously\ndubiousness\ndubitable\ndubonnet\ndubonnets\ndubs\nducal\nducally\nducat\nducats\nduce\nduces\nduchess\nduchesses\nduchies\nduchy\nduci\nduck\nduckbill\nduckbills\nducked\nducker\nduckers\nduckie\nduckier\nduckies\nduckiest\nducking\nduckling\nducklings\nduckpin\nduckpins\nducks\nducktail\nducktails\nduckweed\nduckweeds\nducky\nduct\nducted\nductile\nductility\nducting\nductings\nductless\nducts\nductule\nductules\ndud\nduddie\nduddy\ndude\nduded\ndudeen\ndudeens\ndudes\ndudgeon\ndudgeons\ndudish\ndudishly\nduds\ndue\nduecento\nduecentos\nduel\ndueled\ndueler\nduelers\ndueling\nduelist\nduelists\nduelled\ndueller\nduellers\nduelli\nduelling\nduellist\nduellists\nduello\nduellos\nduels\nduende\nduendes\ndueness\nduenesses\nduenna\nduennas\ndues\nduet\nduetted\nduetting\nduettist\nduettists\nduff\nduffel\nduffels\nduffer\nduffers\nduffle\nduffles\nduffs\ndug\ndugong\ndugongs\ndugout\ndugouts\ndugs\ndui\nduiker\nduikers\nduit\nduits\nduke\ndukedom\ndukedoms\ndukes\ndulcet\ndulcetly\ndulcets\ndulciana\ndulcianas\ndulcified\ndulcifies\ndulcify\ndulcifying\ndulcimer\ndulcimers\ndulcinea\ndulcineas\ndulia\ndulias\ndull\ndullard\ndullards\ndulled\nduller\ndullest\ndulling\ndullish\ndullness\ndullnesses\ndulls\ndully\ndulness\ndulnesses\ndulse\ndulses\nduly\nduma\ndumas\ndumb\ndumbbell\ndumbbells\ndumbed\ndumber\ndumbest\ndumbfound\ndumbfounded\ndumbfounding\ndumbfounds\ndumbing\ndumbly\ndumbness\ndumbnesses\ndumbs\ndumbwaiter\ndumbwaiters\ndumdum\ndumdums\ndumfound\ndumfounded\ndumfounding\ndumfounds\ndumka\ndumky\ndummied\ndummies\ndummkopf\ndummkopfs\ndummy\ndummying\ndump\ndumpcart\ndumpcarts\ndumped\ndumper\ndumpers\ndumpier\ndumpiest\ndumpily\ndumpiness\ndumping\ndumpings\ndumpish\ndumpling\ndumplings\ndumps\ndumpy\ndun\ndunam\ndunce\ndunces\ndunch\ndunches\nduncical\nduncish\ndune\nduneland\ndunelands\ndunelike\ndunes\ndung\ndungaree\ndungarees\ndunged\ndungeon\ndungeons\ndunghill\ndunghills\ndungier\ndungiest\ndunging\ndungs\ndungy\ndunite\ndunites\ndunitic\ndunk\ndunked\ndunker\ndunkers\ndunking\ndunks\ndunlin\ndunlins\ndunnage\ndunnages\ndunned\ndunner\ndunness\ndunnesses\ndunnest\ndunning\ndunnite\ndunnites\nduns\ndunt\ndunted\ndunting\ndunts\nduo\nduodecimal\nduodecimals\nduodena\nduodenal\nduodenum\nduodenums\nduolog\nduologs\nduologue\nduologues\nduomi\nduomo\nduomos\nduopolies\nduopoly\nduopsonies\nduopsony\nduos\nduotone\nduotones\ndup\ndupable\ndupe\nduped\nduper\nduperies\ndupers\ndupery\ndupes\nduping\nduple\nduplex\nduplexed\nduplexer\nduplexers\nduplexes\nduplexing\nduplicate\nduplicated\nduplicates\nduplicating\nduplication\nduplications\nduplicative\nduplicator\nduplicators\nduplicities\nduplicity\ndupped\ndupping\ndups\ndura\ndurability\ndurable\ndurableness\ndurables\ndurably\ndural\nduramen\nduramens\ndurance\ndurances\nduras\nduration\ndurations\ndurative\nduratives\ndurbar\ndurbars\ndure\ndured\ndures\nduress\nduresses\ndurian\ndurians\nduring\ndurion\ndurions\ndurmast\ndurmasts\ndurn\ndurndest\ndurned\ndurneder\ndurnedest\ndurning\ndurns\nduro\nduroc\ndurocs\nduros\ndurr\ndurra\ndurras\ndurrs\ndurst\ndurum\ndurums\ndusk\ndusked\nduskier\nduskiest\nduskily\nduskiness\ndusking\nduskish\ndusks\ndusky\ndust\ndustbin\ndustbins\ndusted\nduster\ndusters\ndustheap\ndustheaps\ndustier\ndustiest\ndustily\ndustiness\ndusting\ndustless\ndustlike\ndustman\ndustmen\ndustpan\ndustpans\ndustrag\ndustrags\ndusts\ndustup\ndustups\ndusty\ndutch\ndutchman\ndutchmen\nduteous\nduteously\nduteousness\ndutiable\nduties\ndutiful\ndutifully\ndutifulness\nduty\nduumvir\nduumviri\nduumvirs\nduvet\nduvetine\nduvetines\nduvetyn\nduvetyne\nduvetynes\nduvetyns\ndwarf\ndwarfed\ndwarfer\ndwarfest\ndwarfing\ndwarfish\ndwarfishly\ndwarfishness\ndwarfism\ndwarfisms\ndwarflike\ndwarfness\ndwarfs\ndwarves\ndwell\ndwelled\ndweller\ndwellers\ndwelling\ndwellings\ndwells\ndwelt\ndwindle\ndwindled\ndwindles\ndwindling\ndwine\ndwined\ndwines\ndwining\ndyable\ndyad\ndyadic\ndyadics\ndyads\ndyarchic\ndyarchies\ndyarchy\ndybbuk\ndybbukim\ndybbuks\ndye\ndyeable\ndyed\ndyeing\ndyeings\ndyer\ndyers\ndyes\ndyestuff\ndyestuffs\ndyeweed\ndyeweeds\ndyewood\ndyewoods\ndying\ndyings\ndyke\ndyked\ndykes\ndykey\ndyking\ndynamic\ndynamical\ndynamically\ndynamics\ndynamism\ndynamisms\ndynamist\ndynamistic\ndynamists\ndynamite\ndynamited\ndynamiter\ndynamiters\ndynamites\ndynamitic\ndynamiting\ndynamo\ndynamometer\ndynamometers\ndynamos\ndynamotor\ndynamotors\ndynast\ndynastic\ndynastically\ndynasties\ndynasts\ndynasty\ndynatron\ndynatrons\ndyne\ndynel\ndynes\ndynode\ndynodes\ndysenteric\ndysenteries\ndysentery\ndysfunction\ndysfunctional\ndysfunctions\ndysgenic\ndyslexia\ndyslexias\ndyslexic\ndyslexics\ndyspepsies\ndyspepsy\ndyspeptic\ndyspeptically\ndyspeptics\ndyspnea\ndyspneal\ndyspneas\ndyspneic\ndyspnoea\ndyspnoeas\ndyspnoic\ndysprosium\ndysprosiums\ndystaxia\ndystaxias\ndystocia\ndystocias\ndystonia\ndystonias\ndystopia\ndystopias\ndystrophic\ndystrophies\ndystrophy\ndysuria\ndysurias\ndysuric\ndyvour\ndyvours\neach\neager\neagerer\neagerest\neagerly\neagerness\neagers\neagle\neagles\neaglet\neaglets\neagre\neagres\neanling\neanlings\near\nearache\nearaches\neardrop\neardrops\neardrum\neardrums\neared\nearflap\nearflaps\nearful\nearfuls\nearing\nearings\nearl\nearlap\nearlaps\nearldom\nearldoms\nearless\nearlier\nearliest\nearliness\nearlobe\nearlobes\nearlock\nearlocks\nearls\nearlship\nearlships\nearly\nearmark\nearmarked\nearmarking\nearmarks\nearmuff\nearmuffs\nearn\nearned\nearner\nearners\nearnest\nearnestly\nearnestness\nearnests\nearning\nearnings\nearns\nearphone\nearphones\nearpiece\nearpieces\nearplug\nearplugs\nearring\nearrings\nears\nearshot\nearshots\nearstone\nearstones\nearth\nearthed\nearthen\nearthenware\nearthenwares\nearthier\nearthiest\nearthily\nearthiness\nearthing\nearthlier\nearthliest\nearthliness\nearthling\nearthlings\nearthly\nearthman\nearthmen\nearthnut\nearthnuts\nearthpea\nearthpeas\nearthquake\nearthquakes\nearths\nearthset\nearthsets\nearthward\nearthwards\nearthworm\nearthworms\nearthy\nearwax\nearwaxes\nearwig\nearwigged\nearwigging\nearwigs\nearworm\nearworms\nease\neased\neaseful\neasefully\neasel\neasels\neasement\neasements\neases\neasier\neasies\neasiest\neasily\neasiness\neasinesses\neasing\neast\neaster\neasterlies\neasterly\neastern\neasternmost\neasters\neasting\neastings\neasts\neastward\neastwards\neasy\neasygoing\neat\neatable\neatables\neaten\neater\neateries\neaters\neatery\neath\neating\neatings\neats\neau\neaux\neave\neaved\neaves\neavesdrop\neavesdropped\neavesdropper\neavesdroppers\neavesdropping\neavesdrops\nebb\nebbed\nebbet\nebbets\nebbing\nebbs\nebon\nebonies\nebonise\nebonised\nebonises\nebonising\nebonite\nebonites\nebonize\nebonized\nebonizes\nebonizing\nebons\nebony\nebullience\nebulliency\nebullient\nebulliently\nebullition\nebullitions\necarte\necartes\necaudate\necbolic\necbolics\neccentric\neccentrically\neccentricities\neccentricity\neccentrics\necclesia\necclesiae\necclesiastic\necclesiastical\necclesiastically\necclesiasticism\necclesiastics\neccrine\necdyses\necdysial\necdysis\necdyson\necdysone\necdysones\necdysons\necesis\necesises\nechard\nechards\neche\neched\nechelon\necheloned\necheloning\nechelons\neches\nechidna\nechidnae\nechidnas\nechinate\neching\nechini\nechinoid\nechinoids\nechinus\necho\nechoed\nechoer\nechoers\nechoes\nechoey\nechoic\nechoing\nechoism\nechoisms\necholess\neclair\neclairs\neclat\neclats\neclectic\neclectically\neclecticism\neclectics\neclipse\neclipsed\neclipses\neclipsing\neclipsis\neclipsises\necliptic\necliptics\neclogite\neclogites\neclogue\neclogues\neclosion\neclosions\necologic\necological\necologically\necologies\necologist\necologists\necology\neconometric\neconometrics\neconomic\neconomical\neconomically\neconomics\neconomies\neconomist\neconomists\neconomize\neconomized\neconomizer\neconomizers\neconomizes\neconomizing\neconomy\necosystem\necosystems\necotonal\necotone\necotones\necotype\necotypes\necotypic\necraseur\necraseurs\necru\necrus\necstasies\necstasy\necstatic\necstatically\necstatics\nectases\nectasis\nectatic\necthyma\necthymata\nectoderm\nectoderms\nectomere\nectomeres\nectopia\nectopias\nectopic\nectoplasm\nectoplasmic\nectoplasms\nectosarc\nectosarcs\nectozoa\nectozoan\nectozoans\nectozoon\nectypal\nectype\nectypes\necu\necumenic\necumenical\necumenically\necus\neczema\neczemas\neczematous\nedacious\nedacities\nedacity\nedaphic\neddied\neddies\neddo\neddoes\neddy\neddying\nedema\nedemas\nedemata\nedematous\nedentate\nedentates\nedge\nedged\nedgeless\nedger\nedgers\nedges\nedgeways\nedgewise\nedgier\nedgiest\nedgily\nedginess\nedginesses\nedging\nedgings\nedgy\nedh\nedhs\nedibility\nedible\nedibleness\nedibles\nedict\nedictal\nedicts\nedification\nedifications\nedifice\nedifices\nedified\nedifier\nedifiers\nedifies\nedify\nedifying\nedile\nediles\nedit\neditable\nedited\nediting\nedition\neditions\neditor\neditorial\neditorialist\neditorialists\neditorialization\neditorializations\neditorialize\neditorialized\neditorializer\neditorializers\neditorializes\neditorializing\neditorially\neditorials\neditors\neditress\neditresses\nedits\neducability\neducable\neducables\neducatability\neducate\neducated\neducates\neducating\neducation\neducational\neducationalist\neducationalists\neducationally\neducationist\neducationists\neducations\neducative\neducator\neducators\neduce\neduced\neduces\neducible\neducing\neduct\neduction\neductions\neductive\neductor\neductors\neducts\neel\neelgrass\neelgrasses\neelier\neeliest\neellike\neelpout\neelpouts\neels\neelworm\neelworms\neely\neerie\neerier\neeriest\neerily\neeriness\neerinesses\neery\nef\neff\neffable\nefface\neffaceable\neffaced\neffacement\neffacements\neffacer\neffacers\neffaces\neffacing\neffect\neffected\neffecter\neffecters\neffecting\neffective\neffectively\neffectiveness\neffectivity\neffector\neffectors\neffects\neffectual\neffectuality\neffectually\neffectualness\neffectuate\neffectuated\neffectuates\neffectuating\neffectuation\neffectuations\neffeminacy\neffeminate\neffeminately\neffeminateness\neffeminates\neffendi\neffendis\nefferent\nefferently\nefferents\neffervesce\neffervesced\neffervescence\neffervescent\neffervescently\neffervesces\neffervescing\neffete\neffetely\neffeteness\nefficacies\nefficacious\nefficaciously\nefficaciousness\nefficacy\nefficiencies\nefficiency\nefficient\nefficiently\neffigies\neffigy\neffloresce\neffloresced\nefflorescence\nefflorescent\neffloresces\nefflorescing\neffluence\neffluences\neffluent\neffluents\neffluvia\neffluvium\neffluviums\nefflux\neffluxes\neffort\neffortless\neffortlessly\neffortlessness\nefforts\neffronteries\neffrontery\neffs\neffulge\neffulged\neffulges\neffulging\neffuse\neffused\neffuses\neffusing\neffusion\neffusions\neffusive\neffusively\neffusiveness\nefs\neft\nefts\neftsoon\neftsoons\negad\negads\negal\negalitarian\negalitarianism\negalite\negalites\neger\negers\negest\negesta\negested\negesting\negestion\negestions\negestive\negests\negg\neggar\neggars\neggcup\neggcups\negged\negger\neggers\negghead\neggheads\negging\neggnog\neggnogs\neggplant\neggplants\neggs\neggshell\neggshells\neggy\negis\negises\neglantine\neglantines\neglatere\neglateres\nego\negocentric\negocentrically\negocentricity\negocentrics\negocentrism\negoism\negoisms\negoist\negoistic\negoistically\negoists\negomania\negomaniac\negomaniacal\negomaniacs\negomanias\negos\negotism\negotisms\negotist\negotistic\negotistical\negotistically\negotists\negregious\negregiously\negregiousness\negress\negressed\negresses\negressing\negression\negressions\negret\negrets\neh\neide\neider\neiderdown\neiderdowns\neiders\neidetic\neidetically\neidola\neidolon\neidolons\neidos\neight\neighteen\neighteens\neighteenth\neighteenths\neightfold\neighth\neighthly\neighths\neighties\neightieth\neightieths\neights\neightvo\neightvos\neighty\neikon\neikones\neikons\neinkorn\neinkorns\neirenic\neither\nejaculate\nejaculated\nejaculates\nejaculating\nejaculation\nejaculations\nejaculator\nejaculators\nejaculatory\neject\nejecta\nejected\nejecting\nejection\nejections\nejective\nejectives\nejectment\nejectments\nejector\nejectors\nejects\neke\neked\nekes\neking\nekistic\nekistics\nektexine\nektexines\nel\nelaborate\nelaborated\nelaborately\nelaborateness\nelaborates\nelaborating\nelaboration\nelaborations\nelaborative\nelain\nelains\nelan\neland\nelands\nelans\nelaphine\nelapid\nelapids\nelapine\nelapse\nelapsed\nelapses\nelapsing\nelastase\nelastases\nelastic\nelastically\nelasticities\nelasticity\nelasticized\nelastics\nelastin\nelastins\nelate\nelated\nelatedly\nelatedness\nelater\nelaterid\nelaterids\nelaterin\nelaterins\nelaters\nelates\nelating\nelation\nelations\nelative\nelatives\nelbow\nelbowed\nelbowing\nelbows\neld\nelder\nelderberries\nelderberry\nelderly\nelders\neldership\neldest\neldrich\neldritch\nelds\nelect\nelectable\nelected\nelecting\nelection\nelectioneer\nelectioneered\nelectioneering\nelectioneers\nelections\nelective\nelectively\nelectiveness\nelectives\nelector\nelectoral\nelectorate\nelectorates\nelectors\nelectret\nelectrets\nelectric\nelectrical\nelectrically\nelectrician\nelectricians\nelectricities\nelectricity\nelectrics\nelectrification\nelectrifications\nelectrified\nelectrifies\nelectrify\nelectrifying\nelectro\nelectrocardiogram\nelectrocardiograms\nelectrocardiograph\nelectrocardiographic\nelectrocardiographically\nelectrocardiographs\nelectrocardiography\nelectrochemical\nelectrochemically\nelectrochemistry\nelectrocute\nelectrocuted\nelectrocutes\nelectrocuting\nelectrocution\nelectrocutions\nelectrode\nelectrodes\nelectroed\nelectroing\nelectrolysis\nelectrolyte\nelectrolytes\nelectrolytic\nelectrolytically\nelectrolyze\nelectrolyzed\nelectrolyzes\nelectrolyzing\nelectromagnet\nelectromagnetic\nelectromagnetically\nelectromagnetism\nelectromagnets\nelectromechanical\nelectromechanically\nelectrometer\nelectrometers\nelectromotive\nelectron\nelectronic\nelectronically\nelectronics\nelectrons\nelectroplate\nelectroplated\nelectroplates\nelectroplating\nelectros\nelectroscope\nelectroscopes\nelectrostatic\nelectrostatically\nelectrostatics\nelectrotherapy\nelectrotype\nelectrotyped\nelectrotyper\nelectrotypers\nelectrotypes\nelectrotyping\nelectrum\nelectrums\nelects\neleemosynary\nelegance\nelegances\nelegancies\nelegancy\nelegant\nelegantly\nelegiac\nelegiacs\nelegies\nelegise\nelegised\nelegises\nelegising\nelegist\nelegists\nelegit\nelegits\nelegize\nelegized\nelegizes\nelegizing\nelegy\nelement\nelemental\nelementally\nelementarily\nelementariness\nelementary\nelements\nelemi\nelemis\nelenchi\nelenchic\nelenchus\nelenctic\nelephant\nelephants\nelevate\nelevated\nelevates\nelevating\nelevation\nelevations\nelevator\nelevators\neleven\nelevens\neleventh\nelevenths\nelevon\nelevons\nelf\nelfin\nelfins\nelfish\nelfishly\nelflock\nelflocks\nelhi\nelicit\nelicitation\nelicitations\nelicited\neliciting\nelicitor\nelicitors\nelicits\nelide\nelided\nelides\nelidible\neliding\neligibilities\neligibility\neligible\neligibles\neligibly\neliminate\neliminated\neliminates\neliminating\nelimination\neliminations\neliminative\neliminator\neliminators\nelint\nelision\nelisions\nelite\nelites\nelitism\nelitisms\nelitist\nelitists\nelixir\nelixirs\nelk\nelkhound\nelkhounds\nelks\nell\nellipse\nellipses\nellipsis\nellipsoid\nellipsoidal\nellipsoids\nelliptic\nelliptical\nelliptically\nellipticity\nells\nelm\nelmier\nelmiest\nelms\nelmy\nelocution\nelocutionary\nelocutionist\nelocutionists\nelocutions\nelodea\nelodeas\neloign\neloigned\neloigner\neloigners\neloigning\neloigns\neloin\neloined\neloiner\neloiners\neloining\neloins\nelongate\nelongated\nelongates\nelongating\nelongation\nelongations\nelope\neloped\nelopement\nelopements\neloper\nelopers\nelopes\neloping\neloquence\neloquences\neloquent\neloquently\nels\nelse\nelsewhere\neluant\neluants\neluate\neluates\nelucidate\nelucidated\nelucidates\nelucidating\nelucidation\nelucidations\nelucidative\nelucidator\nelucidators\nelude\neluded\neluder\neluders\neludes\neluding\neluent\neluents\nelusion\nelusions\nelusive\nelusively\nelusiveness\nelusory\nelute\neluted\nelutes\neluting\nelution\nelutions\neluvia\neluvial\neluviate\neluviated\neluviates\neluviating\neluvium\neluviums\nelver\nelvers\nelves\nelvish\nelvishly\nelysian\nelytra\nelytroid\nelytron\nelytrous\nelytrum\nem\nemaciate\nemaciated\nemaciates\nemaciating\nemaciation\nemanate\nemanated\nemanates\nemanating\nemanation\nemanational\nemanations\nemanative\nemanator\nemanators\nemancipate\nemancipated\nemancipates\nemancipating\nemancipation\nemancipationist\nemancipationists\nemancipations\nemancipator\nemancipators\nemasculate\nemasculated\nemasculates\nemasculating\nemasculation\nemasculations\nemasculator\nemasculators\nembalm\nembalmed\nembalmer\nembalmers\nembalming\nembalmment\nembalmments\nembalms\nembank\nembanked\nembanking\nembankment\nembankments\nembanks\nembar\nembargo\nembargoed\nembargoes\nembargoing\nembark\nembarkation\nembarkations\nembarked\nembarking\nembarkment\nembarkments\nembarks\nembarrass\nembarrassed\nembarrassedly\nembarrasses\nembarrassing\nembarrassingly\nembarrassment\nembarrassments\nembarred\nembarring\nembars\nembassies\nembassy\nembattle\nembattled\nembattles\nembattling\nembay\nembayed\nembaying\nembays\nembed\nembedded\nembedding\nembedment\nembedments\nembeds\nembellish\nembellished\nembellisher\nembellishers\nembellishes\nembellishing\nembellishment\nembellishments\nember\nembers\nembezzle\nembezzled\nembezzlement\nembezzlements\nembezzler\nembezzlers\nembezzles\nembezzling\nembitter\nembittered\nembittering\nembitterment\nembitterments\nembitters\nemblaze\nemblazed\nemblazer\nemblazers\nemblazes\nemblazing\nemblazon\nemblazoned\nemblazoner\nemblazoners\nemblazoning\nemblazonment\nemblazonments\nemblazonry\nemblazons\nemblem\nemblematic\nemblematical\nemblematically\nemblematize\nemblematized\nemblematizes\nemblematizing\nemblemed\nembleming\nemblems\nembodied\nembodier\nembodiers\nembodies\nembodiment\nembodiments\nembody\nembodying\nembolden\nemboldened\nemboldening\nemboldens\nemboli\nembolic\nembolies\nembolism\nembolismic\nembolisms\nembolus\nemboly\nemborder\nembordered\nembordering\nemborders\nembosk\nembosked\nembosking\nembosks\nembosom\nembosomed\nembosoming\nembosoms\nemboss\nembossed\nembosser\nembossers\nembosses\nembossing\nembossment\nembossments\nembouchure\nembouchures\nembow\nembowed\nembowel\nemboweled\nemboweling\nembowelled\nembowelling\nembowels\nembower\nembowered\nembowering\nembowers\nembowing\nembows\nembrace\nembraceable\nembraced\nembracement\nembracements\nembracer\nembraceries\nembracers\nembracery\nembraces\nembracing\nembrasure\nembrasures\nembroider\nembroidered\nembroiderer\nembroiderers\nembroideries\nembroidering\nembroiders\nembroidery\nembroil\nembroiled\nembroiling\nembroilment\nembroilments\nembroils\nembrown\nembrowned\nembrowning\nembrowns\nembrue\nembrued\nembrues\nembruing\nembrute\nembruted\nembrutes\nembruting\nembryo\nembryoid\nembryologic\nembryological\nembryologically\nembryologies\nembryologist\nembryologists\nembryology\nembryon\nembryonal\nembryonic\nembryonically\nembryons\nembryos\nemcee\nemceed\nemceeing\nemcees\neme\nemeer\nemeerate\nemeerates\nemeers\nemend\nemendable\nemendate\nemendated\nemendates\nemendating\nemendation\nemendations\nemended\nemender\nemenders\nemending\nemends\nemerald\nemeralds\nemerge\nemerged\nemergence\nemergencies\nemergency\nemergent\nemergents\nemerges\nemerging\nemeries\nemerita\nemeriti\nemeritus\nemerod\nemerods\nemeroid\nemeroids\nemersed\nemersion\nemersions\nemery\nemes\nemeses\nemesis\nemetic\nemetically\nemetics\nemetin\nemetine\nemetines\nemetins\nemeu\nemeus\nemeute\nemeutes\nemic\nemigrant\nemigrants\nemigrate\nemigrated\nemigrates\nemigrating\nemigration\nemigrations\nemigre\nemigres\neminence\neminences\neminencies\neminency\neminent\neminently\nemir\nemirate\nemirates\nemirs\nemissaries\nemissary\nemission\nemissions\nemissive\nemit\nemits\nemitted\nemitter\nemitters\nemitting\nemmer\nemmers\nemmet\nemmets\nemodin\nemodins\nemollient\nemollients\nemolument\nemoluments\nemote\nemoted\nemoter\nemoters\nemotes\nemoting\nemotion\nemotional\nemotionalism\nemotionalist\nemotionalistic\nemotionalists\nemotionalities\nemotionality\nemotionalize\nemotionalized\nemotionalizes\nemotionalizing\nemotionally\nemotionless\nemotions\nemotive\nemotively\nempale\nempaled\nempaler\nempalers\nempales\nempaling\nempanel\nempaneled\nempaneling\nempanelled\nempanelling\nempanels\nempathic\nempathies\nempathize\nempathized\nempathizes\nempathizing\nempathy\nempennage\nempennages\nemperies\nemperor\nemperors\nemperorship\nempery\nemphases\nemphasis\nemphasize\nemphasized\nemphasizes\nemphasizing\nemphatic\nemphatically\nemphysema\nemphysematous\nempire\nempires\nempiric\nempirical\nempirically\nempiricism\nempiricist\nempiricists\nempirics\nemplace\nemplaced\nemplacement\nemplacements\nemplaces\nemplacing\nemplane\nemplaned\nemplanes\nemplaning\nemploy\nemployability\nemployable\nemploye\nemployed\nemployee\nemployees\nemployer\nemployers\nemployes\nemploying\nemployment\nemployments\nemploys\nempoison\nempoisoned\nempoisoning\nempoisons\nemporia\nemporium\nemporiums\nempower\nempowered\nempowering\nempowerment\nempowers\nempress\nempresses\nemprise\nemprises\nemprize\nemprizes\nemptied\nemptier\nemptiers\nempties\nemptiest\nemptily\nemptiness\nemptings\nemptins\nempty\nemptying\nempurple\nempurpled\nempurples\nempurpling\nempyema\nempyemas\nempyemata\nempyemic\nempyreal\nempyrean\nempyreans\nems\nemu\nemulate\nemulated\nemulates\nemulating\nemulation\nemulations\nemulative\nemulatively\nemulator\nemulators\nemulous\nemulsible\nemulsifiable\nemulsification\nemulsifications\nemulsified\nemulsifier\nemulsifiers\nemulsifies\nemulsify\nemulsifying\nemulsion\nemulsions\nemulsive\nemulsoid\nemulsoids\nemus\nemyd\nemyde\nemydes\nemyds\nen\nenable\nenabled\nenabler\nenablers\nenables\nenabling\nenact\nenacted\nenacting\nenactive\nenactment\nenactments\nenactor\nenactors\nenactory\nenacts\nenamel\nenameled\nenameler\nenamelers\nenameling\nenamelist\nenamelists\nenamelled\nenamelling\nenamels\nenamelware\nenamine\nenamines\nenamor\nenamored\nenamoring\nenamors\nenamour\nenamoured\nenamouring\nenamours\nenate\nenates\nenatic\nenation\nenations\nencaenia\nencage\nencaged\nencages\nencaging\nencamp\nencamped\nencamping\nencampment\nencampments\nencamps\nencapsulate\nencapsulated\nencapsulates\nencapsulating\nencapsulation\nencapsulations\nencase\nencased\nencasement\nencasements\nencases\nencash\nencashed\nencashes\nencashing\nencasing\nencaustic\nencaustics\nenceinte\nenceintes\nencephalitis\nencephalogram\nencephalograms\nencephalograph\nencephalographs\nencephalography\nenchain\nenchained\nenchaining\nenchains\nenchant\nenchanted\nenchanter\nenchanters\nenchanting\nenchantment\nenchantments\nenchantress\nenchantresses\nenchants\nenchase\nenchased\nenchaser\nenchasers\nenchases\nenchasing\nenchilada\nenchiladas\nenchoric\nencina\nencinal\nencinas\nencipher\nenciphered\nenciphering\nenciphers\nencircle\nencircled\nencirclement\nencirclements\nencircles\nencircling\nenclasp\nenclasped\nenclasping\nenclasps\nenclave\nenclaves\nenclitic\nenclitics\nenclose\nenclosed\nencloser\nenclosers\nencloses\nenclosing\nenclosure\nenclosures\nencode\nencoded\nencoder\nencoders\nencodes\nencoding\nencomia\nencomiastic\nencomiastically\nencomium\nencomiums\nencompass\nencompassed\nencompasses\nencompassing\nencompassment\nencompassments\nencore\nencored\nencores\nencoring\nencounter\nencountered\nencountering\nencounters\nencourage\nencouraged\nencouragement\nencouragements\nencourager\nencouragers\nencourages\nencouraging\nencouragingly\nencroach\nencroached\nencroacher\nencroachers\nencroaches\nencroaching\nencroachment\nencroachments\nencrust\nencrustation\nencrustations\nencrusted\nencrusting\nencrusts\nencrypt\nencrypted\nencrypting\nencryption\nencryptions\nencrypts\nencumber\nencumbered\nencumbering\nencumbers\nencumbrance\nencumbrancer\nencumbrancers\nencumbrances\nencyclic\nencyclical\nencyclicals\nencyclics\nencyclopedia\nencyclopedias\nencyclopedic\nencyclopedically\nencyclopedism\nencyclopedist\nencyclopedists\nencyst\nencysted\nencysting\nencysts\nend\nendamage\nendamaged\nendamages\nendamaging\nendameba\nendamebae\nendamebas\nendanger\nendangered\nendangering\nendangerment\nendangers\nendarch\nendarchies\nendarchy\nendbrain\nendbrains\nendear\nendeared\nendearing\nendearingly\nendearment\nendearments\nendears\nendeavor\nendeavored\nendeavoring\nendeavors\nended\nendemial\nendemic\nendemically\nendemicity\nendemics\nendemism\nendemisms\nender\nendermic\nenders\nendexine\nendexines\nending\nendings\nendite\nendited\nendites\nenditing\nendive\nendives\nendleaf\nendleaves\nendless\nendlessly\nendlessness\nendlong\nendmost\nendocarp\nendocarps\nendocrine\nendocrinological\nendocrinologist\nendocrinologists\nendocrinology\nendoderm\nendoderms\nendogamies\nendogamous\nendogamy\nendogen\nendogenies\nendogens\nendogeny\nendopod\nendopods\nendorsable\nendorse\nendorsed\nendorsee\nendorsees\nendorsement\nendorsements\nendorser\nendorsers\nendorses\nendorsing\nendorsingly\nendorsor\nendorsors\nendosarc\nendosarcs\nendosmos\nendosmoses\nendosome\nendosomes\nendostea\nendow\nendowed\nendower\nendowers\nendowing\nendowment\nendowments\nendows\nendozoic\nendpaper\nendpapers\nendplate\nendplates\nendrin\nendrins\nends\nendue\nendued\nendues\nenduing\nendurable\nendurably\nendurance\nendurances\nendure\nendured\nendures\nenduring\nenduringly\nenduringness\nenduro\nenduros\nendways\nendwise\nenema\nenemas\nenemata\nenemies\nenemy\nenergetic\nenergetically\nenergeticist\nenergeticists\nenergetics\nenergid\nenergids\nenergies\nenergise\nenergised\nenergises\nenergising\nenergize\nenergized\nenergizer\nenergizers\nenergizes\nenergizing\nenergy\nenervate\nenervated\nenervates\nenervating\nenervation\nenervations\nenface\nenfaced\nenfaces\nenfacing\nenfeeble\nenfeebled\nenfeeblement\nenfeeblements\nenfeebles\nenfeebling\nenfeoff\nenfeoffed\nenfeoffing\nenfeoffs\nenfetter\nenfettered\nenfettering\nenfetters\nenfever\nenfevered\nenfevering\nenfevers\nenfilade\nenfiladed\nenfilades\nenfilading\nenflame\nenflamed\nenflames\nenflaming\nenfold\nenfolded\nenfolder\nenfolders\nenfolding\nenfolds\nenforce\nenforceability\nenforceable\nenforced\nenforcement\nenforcements\nenforcer\nenforcers\nenforces\nenforcing\nenframe\nenframed\nenframes\nenframing\nenfranchise\nenfranchised\nenfranchisement\nenfranchisements\nenfranchising\neng\nengage\nengaged\nengagement\nengagements\nengager\nengagers\nengages\nengaging\nengagingly\nengender\nengendered\nengendering\nengenders\nengild\nengilded\nengilding\nengilds\nengine\nengined\nengineer\nengineered\nengineering\nengineers\nengineries\nenginery\nengines\nengining\nenginous\nengird\nengirded\nengirding\nengirdle\nengirdled\nengirdles\nengirdling\nengirds\nengirt\nenglish\nenglished\nenglishes\nenglishing\nenglishness\nenglut\nengluts\nenglutted\nenglutting\nengorge\nengorged\nengorgement\nengorgements\nengorges\nengorging\nengraft\nengrafted\nengrafting\nengrafts\nengrail\nengrailed\nengrailing\nengrails\nengrain\nengrained\nengraining\nengrains\nengram\nengramme\nengrammes\nengrams\nengrave\nengraved\nengraver\nengravers\nengraves\nengraving\nengravings\nengross\nengrossed\nengrosser\nengrossers\nengrosses\nengrossing\nengrossingly\nengrossment\nengrossments\nengs\nengulf\nengulfed\nengulfing\nengulfment\nengulfments\nengulfs\nenhalo\nenhaloed\nenhaloes\nenhaloing\nenhalos\nenhance\nenhanced\nenhancement\nenhancements\nenhancer\nenhancers\nenhances\nenhancing\nenigma\nenigmas\nenigmata\nenigmatic\nenigmatical\nenigmatically\nenisle\nenisled\nenisles\nenisling\nenjambed\nenjoin\nenjoined\nenjoiner\nenjoiners\nenjoining\nenjoins\nenjoy\nenjoyable\nenjoyableness\nenjoyably\nenjoyed\nenjoyer\nenjoyers\nenjoying\nenjoyment\nenjoyments\nenjoys\nenkindle\nenkindled\nenkindles\nenkindling\nenlace\nenlaced\nenlacement\nenlaces\nenlacing\nenlarge\nenlarged\nenlargement\nenlargements\nenlarger\nenlargers\nenlarges\nenlarging\nenlighten\nenlightened\nenlightening\nenlightenment\nenlightenments\nenlightens\nenlist\nenlisted\nenlistee\nenlistees\nenlister\nenlisters\nenlisting\nenlistment\nenlistments\nenlists\nenliven\nenlivened\nenlivening\nenlivens\nenmesh\nenmeshed\nenmeshes\nenmeshing\nenmeshment\nenmities\nenmity\nennead\nenneadic\nenneads\nenneagon\nenneagons\nennoble\nennobled\nennoblement\nennoblements\nennobler\nennoblers\nennobles\nennobling\nennui\nennuis\nennuye\nennuyee\nenol\nenolase\nenolases\nenolic\nenologies\nenology\nenols\nenorm\nenormities\nenormity\nenormous\nenormously\nenormousness\nenosis\nenosises\nenough\nenoughs\nenounce\nenounced\nenounces\nenouncing\nenow\nenows\nenplane\nenplaned\nenplanes\nenplaning\nenquire\nenquired\nenquires\nenquiries\nenquiring\nenquiry\nenrage\nenraged\nenrages\nenraging\nenrapt\nenrapting\nenrapture\nenraptured\nenraptures\nenrapturing\nenravish\nenravished\nenravishes\nenravishing\nenrich\nenriched\nenricher\nenrichers\nenriches\nenriching\nenrichment\nenrichments\nenrobe\nenrobed\nenrober\nenrobers\nenrobes\nenrobing\nenrol\nenroll\nenrolled\nenrollee\nenrollees\nenroller\nenrollers\nenrolling\nenrollment\nenrollments\nenrolls\nenrolment\nenrolments\nenrols\nenroot\nenrooted\nenrooting\nenroots\nens\nensample\nensamples\nensconce\nensconced\nensconces\nensconcing\nenscroll\nenscrolled\nenscrolling\nenscrolls\nensemble\nensembles\nenserf\nenserfed\nenserfing\nenserfs\nensheath\nensheathed\nensheathing\nensheaths\nenshrine\nenshrined\nenshrinement\nenshrinements\nenshrines\nenshrining\nenshroud\nenshrouded\nenshrouding\nenshrouds\nensiform\nensign\nensigncies\nensigncy\nensigns\nensilage\nensilaged\nensilages\nensilaging\nensile\nensiled\nensiles\nensiling\nenskied\nenskies\nensky\nenskyed\nenskying\nenslave\nenslaved\nenslavement\nenslavements\nenslaver\nenslavers\nenslaves\nenslaving\nensnare\nensnared\nensnarer\nensnarers\nensnares\nensnaring\nensnarl\nensnarled\nensnarling\nensnarls\nensorcel\nensorceled\nensorceling\nensorcels\nensoul\nensouled\nensouling\nensouls\nensphere\nensphered\nenspheres\nensphering\nensue\nensued\nensues\nensuing\nensure\nensured\nensurer\nensurers\nensures\nensuring\nenswathe\nenswathed\nenswathes\nenswathing\nentail\nentailed\nentailer\nentailers\nentailing\nentailment\nentailments\nentails\nentameba\nentamebae\nentamebas\nentangle\nentangled\nentanglement\nentanglements\nentangler\nentanglers\nentangles\nentangling\nentases\nentasia\nentasias\nentasis\nentastic\nentellus\nentelluses\nentente\nententes\nenter\nentera\nenterable\nenteral\nentered\nenterer\nenterers\nenteric\nentering\nenteron\nenterons\nenterprise\nenterpriser\nenterprisers\nenterprises\nenterprising\nenters\nentertain\nentertained\nentertainer\nentertainers\nentertaining\nentertainingly\nentertainment\nentertainments\nentertains\nenthalpies\nenthalpy\nenthetic\nenthral\nenthrall\nenthralled\nenthralling\nenthrallment\nenthrallments\nenthralls\nenthralment\nenthralments\nenthrals\nenthrone\nenthroned\nenthronement\nenthronements\nenthrones\nenthroning\nenthuse\nenthused\nenthuses\nenthusiasm\nenthusiasms\nenthusiast\nenthusiastic\nenthusiastically\nenthusiasts\nenthusing\nentia\nentice\nenticed\nenticement\nenticements\nenticer\nenticers\nentices\nenticing\nenticingly\nenties\nentire\nentirely\nentireness\nentires\nentireties\nentirety\nentitle\nentitled\nentitlement\nentitlements\nentitles\nentitling\nentity\nentoderm\nentoderms\nentoil\nentoiled\nentoiling\nentoils\nentomb\nentombed\nentombing\nentombment\nentombments\nentombs\nentomological\nentomologically\nentomologies\nentomologist\nentomologists\nentomology\nentopic\nentourage\nentourages\nentozoa\nentozoal\nentozoan\nentozoans\nentozoic\nentozoon\nentrails\nentrain\nentrained\nentraining\nentrains\nentrance\nentranced\nentrancement\nentrancements\nentrances\nentrancing\nentrant\nentrants\nentrap\nentrapment\nentrapments\nentrapped\nentrapping\nentraps\nentreat\nentreated\nentreaties\nentreating\nentreatingly\nentreatment\nentreatments\nentreats\nentreaty\nentree\nentrees\nentrench\nentrenched\nentrencher\nentrenchers\nentrenches\nentrenching\nentrenchment\nentrenchments\nentrepot\nentrepots\nentrepreneur\nentrepreneurial\nentrepreneurs\nentrepreneurship\nentresol\nentresols\nentries\nentropies\nentropy\nentrust\nentrusted\nentrusting\nentrustment\nentrustments\nentrusts\nentry\nentryway\nentryways\nentwine\nentwined\nentwines\nentwining\nentwist\nentwisted\nentwisting\nentwists\nenumerate\nenumerated\nenumerates\nenumerating\nenumeration\nenumerations\nenumerative\nenumerator\nenumerators\nenunciate\nenunciated\nenunciates\nenunciating\nenunciation\nenunciations\nenunciator\nenunciators\nenure\nenured\nenures\nenuresis\nenuresises\nenuretic\nenuring\nenvelop\nenvelope\nenveloped\nenvelopes\nenveloping\nenvelopment\nenvelopments\nenvelops\nenvenom\nenvenomed\nenvenoming\nenvenoms\nenviable\nenviably\nenvied\nenvier\nenviers\nenvies\nenvious\nenviously\nenviousness\nenviron\nenvironed\nenvironing\nenvironment\nenvironmental\nenvironmentalism\nenvironmentalist\nenvironmentalists\nenvironmentally\nenvironments\nenvirons\nenvisage\nenvisaged\nenvisages\nenvisaging\nenvision\nenvisioned\nenvisioning\nenvisions\nenvoi\nenvois\nenvoy\nenvoys\nenvy\nenvying\nenvyingly\nenwheel\nenwheeled\nenwheeling\nenwheels\nenwind\nenwinding\nenwinds\nenwomb\nenwombed\nenwombing\nenwombs\nenwound\nenwrap\nenwrapped\nenwrapping\nenwraps\nenzootic\nenzootics\nenzym\nenzymatic\nenzymatically\nenzyme\nenzymes\nenzymic\nenzymologist\nenzymologists\nenzymology\nenzyms\neobiont\neobionts\neohippus\neohippuses\neolian\neolipile\neolipiles\neolith\neolithic\neoliths\neolopile\neolopiles\neon\neonian\neonism\neonisms\neons\neosin\neosine\neosines\neosinic\neosins\nepact\nepacts\neparch\neparchies\neparchs\neparchy\nepaulet\nepaulets\nepaulette\nepaulettes\nepee\nepeeist\nepeeists\nepees\nepeiric\nepergne\nepergnes\nepha\nephah\nephahs\nephas\nephebe\nephebes\nephebi\nephebic\nepheboi\nephebos\nephebus\nephedra\nephedras\nephedrin\nephedrins\nephemera\nephemerae\nephemeral\nephemeralities\nephemerality\nephemerally\nephemeras\nephemerides\nephemeris\nephod\nephods\nephor\nephoral\nephorate\nephorates\nephori\nephors\nepiblast\nepiblasts\nepibolic\nepibolies\nepiboly\nepic\nepical\nepically\nepicalyces\nepicalyx\nepicalyxes\nepicarp\nepicarps\nepicedia\nepicene\nepicenes\nepicenter\nepicenters\nepiclike\nepicotyl\nepicotyls\nepics\nepicure\nepicurean\nepicureanism\nepicureans\nepicures\nepicycle\nepicycles\nepidemic\nepidemical\nepidemically\nepidemics\nepidemiological\nepidemiologically\nepidemiologist\nepidemiologists\nepidemiology\nepiderm\nepidermal\nepidermis\nepiderms\nepidote\nepidotes\nepidotic\nepidural\nepifauna\nepifaunae\nepifaunas\nepifocal\nepigeal\nepigean\nepigene\nepigenic\nepigeous\nepigon\nepigone\nepigones\nepigoni\nepigonic\nepigons\nepigonus\nepigram\nepigrammatic\nepigrammatically\nepigrammatist\nepigrammatists\nepigrammatize\nepigrammatized\nepigrammatizes\nepigrammatizing\nepigrams\nepigraph\nepigraphic\nepigraphically\nepigraphist\nepigraphists\nepigraphs\nepigraphy\nepigynies\nepigyny\nepilepsies\nepilepsy\nepileptic\nepileptically\nepileptics\nepilog\nepilogs\nepilogue\nepilogued\nepilogues\nepiloguing\nepimer\nepimere\nepimeres\nepimeric\nepimers\nepimysia\nepinaoi\nepinaos\nepinasties\nepinasty\nepinephrin\nepinephrine\nepinephrines\nepiphanies\nepiphany\nepiphyte\nepiphytes\nepiphytic\nepiphytically\nepiscia\nepiscias\nepiscopacies\nepiscopacy\nepiscopal\nepiscopally\nepiscopate\nepiscopates\nepiscope\nepiscopes\nepisode\nepisodes\nepisodic\nepisodical\nepisodically\nepisomal\nepisome\nepisomes\nepistasies\nepistasy\nepistemological\nepistemologically\nepistemologies\nepistemologist\nepistemologists\nepistemology\nepistle\nepistler\nepistlers\nepistles\nepistolaries\nepistolary\nepistyle\nepistyles\nepitaph\nepitaphial\nepitaphic\nepitaphs\nepitases\nepitasis\nepitaxies\nepitaxy\nepithelia\nepithelium\nepithet\nepithetic\nepithetical\nepithets\nepitome\nepitomes\nepitomic\nepitomize\nepitomized\nepitomizes\nepitomizing\nepizoa\nepizoic\nepizoism\nepizoisms\nepizoite\nepizoites\nepizoon\nepizooties\nepizooty\nepoch\nepochal\nepochally\nepochs\nepode\nepodes\neponym\neponymic\neponymies\neponymous\neponyms\neponymy\nepopee\nepopees\nepopoeia\nepopoeias\nepos\neposes\nepoxide\nepoxides\nepoxied\nepoxies\nepoxy\nepoxyed\nepoxying\nepsilon\nepsilons\nequability\nequable\nequableness\nequably\nequal\nequaled\nequaling\nequalise\nequalised\nequalises\nequalising\nequalitarian\nequalitarianism\nequalitarians\nequalities\nequality\nequalization\nequalizations\nequalize\nequalized\nequalizer\nequalizers\nequalizes\nequalizing\nequalled\nequalling\nequally\nequals\nequanimities\nequanimity\nequate\nequated\nequates\nequating\nequation\nequational\nequationally\nequations\nequator\nequatorial\nequators\nequerries\nequerry\nequestrian\nequestrians\nequestrienne\nequestriennes\nequiangular\nequidistant\nequidistantly\nequilateral\nequilibrate\nequilibrated\nequilibrates\nequilibrating\nequilibration\nequilibrations\nequilibrator\nequilibrators\nequilibratory\nequilibria\nequilibrium\nequilibriums\nequine\nequinely\nequines\nequinities\nequinity\nequinoctial\nequinox\nequinoxes\nequip\nequipage\nequipages\nequipment\nequipments\nequipoise\nequipoised\nequipoises\nequipoising\nequipollence\nequipollences\nequipollent\nequipollently\nequipped\nequipper\nequippers\nequipping\nequips\nequiseta\nequitable\nequitableness\nequitably\nequitant\nequitation\nequitations\nequites\nequities\nequity\nequivalence\nequivalences\nequivalencies\nequivalency\nequivalent\nequivalently\nequivalents\nequivocal\nequivocality\nequivocally\nequivocalness\nequivocate\nequivocated\nequivocates\nequivocating\nequivocation\nequivocations\nequivocator\nequivocators\nequivoke\nequivokes\ner\nera\neradiate\neradiated\neradiates\neradiating\neradicable\neradicate\neradicated\neradicates\neradicating\neradication\neradications\neradicator\neradicators\neras\nerasable\nerase\nerased\neraser\nerasers\nerases\nerasing\nerasion\nerasions\nerasure\nerasures\nerbium\nerbiums\nere\nerect\nerectable\nerected\nerecter\nerecters\nerectile\nerectility\nerecting\nerection\nerections\nerective\nerectly\nerectness\nerector\nerectors\nerects\nerelong\neremite\neremites\neremitic\neremitical\neremitism\neremitisms\neremuri\neremurus\nerenow\nerepsin\nerepsins\nerethic\nerethism\nerethisms\nerewhile\nerg\nergastic\nergate\nergates\nergo\nergodic\nergonomic\nergonomically\nergonomics\nergonomist\nergonomists\nergosterol\nergosterols\nergot\nergotic\nergotism\nergotisms\nergots\nergs\nerica\nericas\nericoid\nerigeron\nerigerons\neringo\neringoes\neringos\neristic\neristics\nerlking\nerlkings\nermine\nermined\nermines\nern\nerne\nernes\nerns\nerode\neroded\nerodent\nerodes\nerodible\neroding\nerogenic\nerogenous\neros\nerose\nerosely\neroses\nerosible\nerosion\nerosional\nerosions\nerosive\nerosiveness\nerosivity\nerotic\nerotica\nerotical\nerotically\neroticism\neroticisms\nerotics\nerotism\nerotisms\nerr\nerrancies\nerrancy\nerrand\nerrands\nerrant\nerrantly\nerrantries\nerrantry\nerrants\nerrata\nerratas\nerratic\nerratical\nerratically\nerraticism\nerraticisms\nerratics\nerratum\nerred\nerrhine\nerrhines\nerring\nerringly\nerroneous\nerroneously\nerroneousness\nerror\nerrors\nerrs\ners\nersatz\nersatzes\nerses\nerst\nerstwhile\neruct\neructate\neructated\neructates\neructating\neructation\neructations\neructed\neructing\neructs\nerudite\neruditely\nerudition\neruditions\nerugo\nerugos\nerumpent\nerupt\nerupted\neruptible\nerupting\neruption\neruptions\neruptive\neruptively\neruptives\nerupts\nervil\nervils\neryngo\neryngoes\neryngos\nerythema\nerythemas\nerythrocyte\nerythrocytes\nerythrocytic\nerythromycin\nerythromycins\nerythron\nerythrons\nes\nescadrille\nescadrilles\nescalade\nescaladed\nescalades\nescalading\nescalate\nescalated\nescalates\nescalating\nescalation\nescalations\nescalator\nescalators\nescalatory\nescallop\nescalloped\nescalloping\nescallops\nescalop\nescaloped\nescaloping\nescalops\nescapable\nescapade\nescapades\nescape\nescaped\nescapee\nescapees\nescapement\nescapements\nescaper\nescapers\nescapes\nescaping\nescapism\nescapisms\nescapist\nescapists\nescar\nescargot\nescargots\nescarole\nescaroles\nescarp\nescarped\nescarping\nescarpment\nescarpments\nescarps\nescars\neschalot\neschalots\neschar\neschars\nescheat\nescheatable\nescheated\nescheating\nescheats\neschew\neschewal\neschewals\neschewed\neschewing\neschews\nescolar\nescolars\nescort\nescorted\nescorting\nescorts\nescot\nescoted\nescoting\nescots\nescrow\nescrowed\nescrowing\nescrows\nescuage\nescuages\nescudo\nescudos\nesculent\nesculents\nescutcheon\nescutcheons\neserine\neserines\neses\neskar\neskars\nesker\neskers\nesophagi\nesoteric\nesoterically\nespadrille\nespadrilles\nespalier\nespaliered\nespaliering\nespaliers\nespanol\nespanoles\nesparto\nespartos\nespecial\nespecially\nesperantos\nespial\nespials\nespied\nespiegle\nespies\nespionage\nespionages\nesplanade\nesplanades\nespousal\nespousals\nespouse\nespoused\nespouser\nespousers\nespouses\nespousing\nespresso\nespressos\nesprit\nesprits\nespy\nespying\nesquire\nesquired\nesquires\nesquiring\ness\nessancias\nessay\nessayed\nessayer\nessayers\nessaying\nessayist\nessayistic\nessayists\nessays\nessence\nessences\nessential\nessentialism\nessentialist\nessentialists\nessentialities\nessentiality\nessentially\nessentialness\nessentials\nesses\nessoin\nessoins\nessonite\nessonites\nestablish\nestablished\nestablisher\nestablishers\nestablishes\nestablishing\nestablishment\nestablishmentarian\nestablishmentarianism\nestablishmentarianisms\nestablishmentarians\nestablishments\nestancia\nestancias\nestate\nestated\nestates\nestating\nesteem\nesteemed\nesteeming\nesteems\nester\nesterase\nesterases\nesterified\nesterifies\nesterify\nesterifying\nesters\nestheses\nesthesia\nesthesias\nesthesis\nesthesises\nesthete\nesthetes\nesthetic\nesthetical\nesthetically\nestheticism\nesthetics\nestimable\nestimableness\nestimate\nestimated\nestimates\nestimating\nestimation\nestimations\nestimative\nestimator\nestimators\nestival\nestivate\nestivated\nestivates\nestivating\nestivation\nestivations\nestop\nestopped\nestoppel\nestoppels\nestopping\nestops\nestovers\nestragon\nestragons\nestral\nestrange\nestranged\nestrangement\nestrangements\nestranger\nestrangers\nestranges\nestranging\nestray\nestrayed\nestraying\nestrays\nestreat\nestreated\nestreating\nestreats\nestrin\nestrins\nestriol\nestriols\nestrogen\nestrogenic\nestrogenically\nestrogens\nestrone\nestrones\nestrous\nestrual\nestrum\nestrums\nestrus\nestruses\nestuarial\nestuaries\nestuarine\nestuary\nesurient\net\neta\netagere\netageres\netamin\netamine\netamines\netamins\netape\netapes\netas\netatism\netatisms\netatist\netcetera\netceteras\netch\netched\netcher\netchers\netches\netching\netchings\neternal\neternally\neternalness\neternals\neterne\neternise\neternised\neternises\neternising\neternities\neternity\neternization\neternizations\neternize\neternized\neternizes\neternizing\netesian\netesians\neth\nethane\nethanes\nethanol\nethanols\nethene\nethenes\nether\nethereal\netherealities\nethereality\netherealization\netherealizations\netherealize\netherealized\netherealizes\netherealizing\nethereally\netherealness\netheric\netherified\netherifies\netherify\netherifying\netherish\netherization\netherizations\netherize\netherized\netherizer\netherizers\netherizes\netherizing\nethers\nethic\nethical\nethicality\nethically\nethicalness\nethicals\nethician\nethicians\nethicist\nethicists\nethicize\nethicized\nethicizes\nethicizing\nethics\nethinyl\nethinyls\nethion\nethions\nethmoid\nethmoids\nethnarch\nethnarchs\nethnic\nethnical\nethnically\nethnics\nethnocentric\nethnocentricity\nethnocentrism\nethnographer\nethnographers\nethnographic\nethnographical\nethnographically\nethnographies\nethnography\nethnologic\nethnological\nethnologically\nethnologies\nethnologist\nethnologists\nethnology\nethnos\nethnoses\nethologies\nethology\nethos\nethoses\nethoxy\nethoxyl\nethoxyls\neths\nethyl\nethylate\nethylated\nethylates\nethylating\nethylene\nethylenes\nethylic\nethyls\nethyne\nethynes\nethynyl\nethynyls\netic\netiolate\netiolated\netiolates\netiolating\netiologic\netiological\netiologically\netiologies\netiology\netiquette\netiquettes\netna\netnas\netoile\netoiles\netude\netudes\netui\netuis\netwee\netwees\netyma\netymological\netymologically\netymologies\netymologist\netymologists\netymologize\netymologized\netymologizes\netymologizing\netymology\netymon\netymons\neucaine\neucaines\neucalypt\neucalypti\neucalypts\neucalyptus\neucalyptuses\neucharis\neucharises\neucharistic\neuchre\neuchred\neuchres\neuchring\neuclase\neuclases\neucrite\neucrites\neucritic\neudaemon\neudaemons\neudemon\neudemons\neugenic\neugenically\neugenicist\neugenicists\neugenics\neugenist\neugenists\neugenol\neugenols\neuglena\neuglenas\neulachan\neulachans\neulachon\neulachons\neulogia\neulogiae\neulogias\neulogies\neulogise\neulogised\neulogises\neulogising\neulogist\neulogistic\neulogistically\neulogists\neulogium\neulogiums\neulogize\neulogized\neulogizer\neulogizers\neulogizes\neulogizing\neulogy\neunuch\neunuchs\neuonymus\neuonymuses\neupatrid\neupatridae\neupatrids\neupepsia\neupepsias\neupepsies\neupepsy\neupeptic\neuphemism\neuphemisms\neuphemistic\neuphemistically\neuphenic\neuphonic\neuphonically\neuphonies\neuphonious\neuphoniously\neuphoniousness\neuphonium\neuphoniums\neuphony\neuphoria\neuphorias\neuphoric\neuphotic\neuphrasies\neuphrasy\neuphroe\neuphroes\neuphuism\neuphuisms\neuphuist\neuphuists\neuploid\neuploidies\neuploids\neuploidy\neupnea\neupneas\neupneic\neupnoea\neupnoeas\neupnoeic\neureka\neurhythmic\neurhythmics\neuripi\neuripus\neuro\neuropium\neuropiums\neuros\neurythmic\neurythmics\neurythmies\neurythmy\neustacies\neustacy\neustatic\neustele\neusteles\neutaxies\neutaxy\neutectic\neutectics\neuthanasia\neuthanasias\neuthanasic\neutrophies\neutrophy\neuxenite\neuxenites\nevacuant\nevacuants\nevacuate\nevacuated\nevacuates\nevacuating\nevacuation\nevacuations\nevacuative\nevacuator\nevacuators\nevacuee\nevacuees\nevadable\nevade\nevaded\nevader\nevaders\nevades\nevadible\nevading\nevaluate\nevaluated\nevaluates\nevaluating\nevaluation\nevaluations\nevaluative\nevaluator\nevaluators\nevanesce\nevanesced\nevanescence\nevanescences\nevanescent\nevanesces\nevanescing\nevangel\nevangelical\nevangelically\nevangelism\nevangelisms\nevangelist\nevangelistic\nevangelistically\nevangelists\nevangelization\nevangelizations\nevangelize\nevangelized\nevangelizer\nevangelizers\nevangelizes\nevangelizing\nevangels\nevanish\nevanished\nevanishes\nevanishing\nevaporate\nevaporated\nevaporates\nevaporating\nevaporation\nevaporations\nevaporative\nevaporator\nevaporators\nevapotranspiration\nevapotranspirations\nevasion\nevasions\nevasive\nevasively\nevasiveness\neve\nevection\nevections\neven\nevened\nevener\neveners\nevenest\nevenfall\nevenfalls\nevenhanded\nevenhandedly\nevenhandedness\nevening\nevenings\nevenly\nevenness\nevennesses\nevens\nevensong\nevensongs\nevent\neventful\neventfully\neventfulness\neventide\neventides\nevents\neventual\neventualities\neventuality\neventually\neventuate\neventuated\neventuates\neventuating\never\neverglade\nevergreen\nevergreens\neverlasting\neverlastingly\neverlastingness\nevermore\neversible\neversion\neversions\nevert\neverted\neverting\nevertor\nevertors\neverts\nevery\neverybody\neveryday\neverydayness\neveryman\neverymen\neveryone\neverything\neveryway\neverywhere\neves\nevict\nevicted\nevictee\nevictees\nevicting\neviction\nevictions\nevictor\nevictors\nevicts\nevidence\nevidenced\nevidences\nevidencing\nevident\nevidential\nevidentially\nevidently\nevil\nevildoer\nevildoers\nevildoing\neviler\nevilest\neviller\nevillest\nevilly\nevilness\nevilnesses\nevils\nevince\nevinced\nevinces\nevincible\nevincing\nevincive\neviscerate\neviscerated\neviscerates\neviscerating\nevisceration\neviscerations\nevitable\nevite\nevited\nevites\neviting\nevocable\nevocation\nevocations\nevocative\nevocatively\nevocativeness\nevocator\nevocators\nevoke\nevoked\nevoker\nevokers\nevokes\nevoking\nevolute\nevolutes\nevolution\nevolutionarily\nevolutionary\nevolutionism\nevolutionisms\nevolutionist\nevolutionists\nevolutions\nevolvable\nevolve\nevolved\nevolvement\nevolvements\nevolver\nevolvers\nevolves\nevolving\nevonymus\nevonymuses\nevulsion\nevulsions\nevzone\nevzones\newe\newer\newers\newes\nex\nexacerbate\nexacerbated\nexacerbates\nexacerbating\nexacerbation\nexacerbations\nexact\nexacta\nexactable\nexactas\nexacted\nexacter\nexacters\nexactest\nexacting\nexactingly\nexactingness\nexaction\nexactions\nexactitude\nexactitudes\nexactly\nexactness\nexactor\nexactors\nexacts\nexaggerate\nexaggerated\nexaggeratedly\nexaggerates\nexaggerating\nexaggeration\nexaggerations\nexaggerative\nexaggerator\nexaggerators\nexaggeratory\nexalt\nexaltation\nexaltations\nexalted\nexaltedly\nexalter\nexalters\nexalting\nexalts\nexam\nexamen\nexamens\nexaminable\nexaminant\nexaminants\nexamination\nexaminational\nexaminations\nexamine\nexamined\nexaminee\nexaminees\nexaminer\nexaminers\nexamines\nexamining\nexample\nexampled\nexamples\nexampling\nexams\nexanthem\nexanthems\nexarch\nexarchal\nexarchies\nexarchs\nexarchy\nexasperate\nexasperated\nexasperatedly\nexasperates\nexasperating\nexasperatingly\nexasperation\nexasperations\nexcavate\nexcavated\nexcavates\nexcavating\nexcavation\nexcavations\nexcavator\nexcavators\nexceed\nexceeded\nexceeder\nexceeders\nexceeding\nexceedingly\nexceeds\nexcel\nexcelled\nexcellence\nexcellencies\nexcellency\nexcellent\nexcellently\nexcelling\nexcels\nexcelsior\nexcept\nexcepted\nexcepting\nexception\nexceptionable\nexceptionably\nexceptional\nexceptionality\nexceptionally\nexceptionalness\nexceptions\nexceptive\nexcepts\nexcerpt\nexcerpted\nexcerpter\nexcerpters\nexcerpting\nexcerption\nexcerptions\nexcerptor\nexcerptors\nexcerpts\nexcess\nexcesses\nexcessive\nexcessively\nexcessiveness\nexchange\nexchangeabilities\nexchangeability\nexchangeable\nexchanged\nexchanger\nexchangers\nexchanges\nexchanging\nexchequer\nexchequers\nexcide\nexcided\nexcides\nexciding\nexciple\nexciples\nexcisable\nexcise\nexcised\nexcises\nexcising\nexcision\nexcisions\nexcitabilities\nexcitability\nexcitable\nexcitableness\nexcitant\nexcitants\nexcitation\nexcitations\nexcite\nexcited\nexcitedly\nexcitement\nexcitements\nexciter\nexciters\nexcites\nexciting\nexcitingly\nexciton\nexcitons\nexcitor\nexcitors\nexclaim\nexclaimed\nexclaimer\nexclaimers\nexclaiming\nexclaims\nexclamation\nexclamations\nexclamatory\nexclave\nexclaves\nexcludabilities\nexcludability\nexcludable\nexclude\nexcluded\nexcluder\nexcluders\nexcludes\nexcludible\nexcluding\nexclusion\nexclusionary\nexclusionist\nexclusionists\nexclusions\nexclusive\nexclusively\nexclusiveness\nexclusivity\nexcommunicate\nexcommunicated\nexcommunicates\nexcommunicating\nexcommunication\nexcommunications\nexcommunicative\nexcommunicator\nexcommunicators\nexcoriate\nexcoriated\nexcoriates\nexcoriating\nexcoriation\nexcoriations\nexcrement\nexcremental\nexcrementitious\nexcrements\nexcrescence\nexcrescences\nexcrescencies\nexcrescency\nexcrescent\nexcrescently\nexcreta\nexcretal\nexcrete\nexcreted\nexcreter\nexcreters\nexcretes\nexcreting\nexcretion\nexcretions\nexcretory\nexcruciate\nexcruciated\nexcruciates\nexcruciating\nexcruciatingly\nexcruciation\nexcruciations\nexculpate\nexculpated\nexculpates\nexculpating\nexculpation\nexculpations\nexculpatory\nexcursion\nexcursionist\nexcursionists\nexcursions\nexcursive\nexcursively\nexcursiveness\nexcusable\nexcusableness\nexcusably\nexcuse\nexcused\nexcuser\nexcusers\nexcuses\nexcusing\nexec\nexecrable\nexecrableness\nexecrably\nexecrate\nexecrated\nexecrates\nexecrating\nexecration\nexecrations\nexecrative\nexecrator\nexecrators\nexecs\nexecutable\nexecute\nexecuted\nexecuter\nexecuters\nexecutes\nexecuting\nexecution\nexecutioner\nexecutioners\nexecutions\nexecutive\nexecutives\nexecutor\nexecutorial\nexecutors\nexecutrices\nexecutrix\nexecutrixes\nexedra\nexedrae\nexegeses\nexegesis\nexegete\nexegetes\nexegetic\nexegetical\nexegetically\nexempla\nexemplar\nexemplarily\nexemplariness\nexemplarities\nexemplarity\nexemplars\nexemplary\nexemplification\nexemplifications\nexemplified\nexemplifies\nexemplify\nexemplifying\nexemplum\nexempt\nexempted\nexempting\nexemption\nexemptions\nexempts\nexequial\nexequies\nexequy\nexercisable\nexercise\nexercised\nexerciser\nexercisers\nexercises\nexercising\nexergual\nexergue\nexergues\nexert\nexerted\nexerting\nexertion\nexertions\nexertive\nexerts\nexes\nexhalant\nexhalants\nexhalation\nexhalations\nexhale\nexhaled\nexhalent\nexhalents\nexhales\nexhaling\nexhaust\nexhausted\nexhauster\nexhausters\nexhaustibilities\nexhaustibility\nexhaustible\nexhausting\nexhaustion\nexhaustions\nexhaustive\nexhaustively\nexhaustiveness\nexhaustless\nexhaustlessly\nexhaustlessness\nexhausts\nexhibit\nexhibited\nexhibiting\nexhibition\nexhibitioner\nexhibitioners\nexhibitionism\nexhibitionist\nexhibitionistic\nexhibitionists\nexhibitions\nexhibitor\nexhibitors\nexhibitory\nexhibits\nexhilarate\nexhilarated\nexhilarates\nexhilarating\nexhilaratingly\nexhilaration\nexhilarations\nexhilarative\nexhort\nexhortation\nexhortations\nexhortative\nexhortatory\nexhorted\nexhorter\nexhorters\nexhorting\nexhorts\nexhumation\nexhumations\nexhume\nexhumed\nexhumer\nexhumers\nexhumes\nexhuming\nexigence\nexigences\nexigencies\nexigency\nexigent\nexigently\nexigible\nexiguities\nexiguity\nexiguous\nexiguously\nexiguousness\nexile\nexiled\nexiles\nexilian\nexilic\nexiling\neximious\nexine\nexines\nexist\nexisted\nexistence\nexistences\nexistent\nexistential\nexistentialism\nexistentialisms\nexistentialist\nexistentialistic\nexistentialistically\nexistentialists\nexistentially\nexistents\nexisting\nexists\nexit\nexited\nexiting\nexits\nexocarp\nexocarps\nexocrine\nexocrines\nexoderm\nexoderms\nexodoi\nexodos\nexodus\nexoduses\nexoergic\nexogamic\nexogamies\nexogamous\nexogamy\nexogen\nexogens\nexon\nexonerate\nexonerated\nexonerates\nexonerating\nexoneration\nexonerations\nexonerative\nexons\nexorable\nexorbitance\nexorbitances\nexorbitant\nexorbitantly\nexorcise\nexorcised\nexorciser\nexorcisers\nexorcises\nexorcising\nexorcism\nexorcisms\nexorcist\nexorcists\nexorcize\nexorcized\nexorcizes\nexorcizing\nexordia\nexordial\nexordium\nexordiums\nexosmic\nexosmose\nexosmoses\nexospore\nexospores\nexoteric\nexoterically\nexothermal\nexothermally\nexothermic\nexothermically\nexotic\nexotica\nexotically\nexoticism\nexoticisms\nexoticness\nexotics\nexotism\nexotisms\nexotoxic\nexotoxin\nexotoxins\nexpand\nexpandable\nexpanded\nexpander\nexpanders\nexpanding\nexpands\nexpanse\nexpanses\nexpansible\nexpansion\nexpansionary\nexpansionism\nexpansionist\nexpansionistic\nexpansionists\nexpansions\nexpansive\nexpansively\nexpansiveness\nexpatiate\nexpatiated\nexpatiates\nexpatiating\nexpatiation\nexpatiations\nexpatriate\nexpatriated\nexpatriates\nexpatriating\nexpatriation\nexpatriations\nexpect\nexpectable\nexpectably\nexpectance\nexpectances\nexpectancies\nexpectancy\nexpectant\nexpectantly\nexpectants\nexpectation\nexpectations\nexpected\nexpecting\nexpectorant\nexpectorants\nexpectorate\nexpectorated\nexpectorates\nexpectorating\nexpectoration\nexpectorations\nexpects\nexpedience\nexpediences\nexpediencies\nexpediency\nexpedient\nexpediential\nexpediently\nexpedients\nexpedite\nexpedited\nexpediter\nexpediters\nexpedites\nexpediting\nexpedition\nexpeditionary\nexpeditions\nexpeditious\nexpeditiously\nexpeditiousness\nexpeditor\nexpeditors\nexpel\nexpellable\nexpelled\nexpellee\nexpellees\nexpeller\nexpellers\nexpelling\nexpels\nexpend\nexpendability\nexpendable\nexpendables\nexpendably\nexpended\nexpender\nexpenders\nexpending\nexpenditure\nexpenditures\nexpends\nexpense\nexpensed\nexpenses\nexpensing\nexpensive\nexpensively\nexpensiveness\nexperience\nexperienced\nexperiences\nexperiencing\nexperiential\nexperientially\nexperiment\nexperimental\nexperimentalism\nexperimentalisms\nexperimentalist\nexperimentalists\nexperimentally\nexperimentation\nexperimentations\nexperimented\nexperimenter\nexperimenters\nexperimenting\nexperiments\nexpert\nexperted\nexperting\nexpertise\nexpertly\nexpertness\nexperts\nexpiable\nexpiate\nexpiated\nexpiates\nexpiating\nexpiation\nexpiations\nexpiator\nexpiators\nexpiatory\nexpiration\nexpirations\nexpiratory\nexpire\nexpired\nexpirer\nexpirers\nexpires\nexpiries\nexpiring\nexpiry\nexplain\nexplainable\nexplained\nexplainer\nexplainers\nexplaining\nexplains\nexplanation\nexplanations\nexplanative\nexplanatively\nexplanatorily\nexplanatory\nexplant\nexplanted\nexplanting\nexplants\nexpletive\nexpletives\nexpletory\nexplicable\nexplicate\nexplicated\nexplicates\nexplicating\nexplication\nexplications\nexplicative\nexplicatively\nexplicator\nexplicators\nexplicatory\nexplicit\nexplicitly\nexplicitness\nexplicits\nexplode\nexploded\nexploder\nexploders\nexplodes\nexploding\nexploit\nexploitable\nexploitation\nexploitations\nexploitative\nexploited\nexploiter\nexploiters\nexploiting\nexploits\nexploration\nexplorations\nexplorative\nexploratory\nexplore\nexplored\nexplorer\nexplorers\nexplores\nexploring\nexplosion\nexplosions\nexplosive\nexplosively\nexplosiveness\nexplosives\nexpo\nexponent\nexponential\nexponentially\nexponentiation\nexponentiations\nexponents\nexport\nexportable\nexportation\nexportations\nexported\nexporter\nexporters\nexporting\nexports\nexpos\nexposable\nexposal\nexposals\nexpose\nexposed\nexposer\nexposers\nexposes\nexposing\nexposit\nexposited\nexpositing\nexposition\nexpositional\nexpositions\nexpositor\nexpositors\nexpository\nexposits\nexpostulate\nexpostulated\nexpostulates\nexpostulating\nexpostulation\nexpostulations\nexpostulatory\nexposure\nexposures\nexpound\nexpounded\nexpounder\nexpounders\nexpounding\nexpounds\nexpress\nexpressage\nexpressages\nexpressed\nexpresser\nexpressers\nexpresses\nexpressible\nexpressing\nexpression\nexpressional\nexpressionism\nexpressionist\nexpressionistic\nexpressionistically\nexpressionists\nexpressionless\nexpressionlessly\nexpressions\nexpressive\nexpressively\nexpressiveness\nexpressly\nexpressman\nexpressmen\nexpressway\nexpressways\nexpropriate\nexpropriated\nexpropriates\nexpropriating\nexpropriation\nexpropriations\nexpropriator\nexpropriators\nexpulse\nexpulsed\nexpulses\nexpulsing\nexpulsion\nexpulsions\nexpulsive\nexpunction\nexpunctions\nexpunge\nexpunged\nexpunger\nexpungers\nexpunges\nexpunging\nexpurgate\nexpurgated\nexpurgates\nexpurgating\nexpurgation\nexpurgations\nexpurgator\nexpurgatorial\nexpurgators\nexpurgatory\nexquisite\nexquisitely\nexquisiteness\nexquisites\nexscind\nexscinded\nexscinding\nexscinds\nexsecant\nexsecants\nexsect\nexsected\nexsecting\nexsects\nexsert\nexserted\nexserting\nexserts\nextant\nextemporaneity\nextemporaneous\nextemporaneously\nextemporaneousness\nextemporarily\nextemporary\nextempore\nextemporization\nextemporizations\nextemporize\nextemporized\nextemporizer\nextemporizers\nextemporizes\nextemporizing\nextend\nextendable\nextended\nextendedly\nextendedness\nextender\nextenders\nextendible\nextending\nextends\nextensibility\nextensible\nextension\nextensional\nextensionalities\nextensionality\nextensionally\nextensions\nextensities\nextensity\nextensive\nextensively\nextensiveness\nextensor\nextensors\nextent\nextents\nextenuate\nextenuated\nextenuates\nextenuating\nextenuation\nextenuations\nextenuator\nextenuators\nextenuatory\nexterior\nexteriorization\nexteriorizations\nexteriorize\nexteriorized\nexteriorizes\nexteriorizing\nexteriorly\nexteriors\nexterminate\nexterminated\nexterminates\nexterminating\nextermination\nexterminations\nexterminator\nexterminators\nexterminatory\nextern\nexternal\nexternalism\nexternalisms\nexternalities\nexternality\nexternalize\nexternalized\nexternalizes\nexternalizing\nexternally\nexternals\nexterne\nexternes\nexterns\nextinct\nextincted\nextincting\nextinction\nextinctions\nextinctive\nextincts\nextinguish\nextinguishable\nextinguished\nextinguisher\nextinguishers\nextinguishes\nextinguishing\nextinguishment\nextinguishments\nextirpate\nextirpated\nextirpates\nextirpating\nextirpation\nextirpations\nextirpator\nextirpators\nextol\nextoll\nextolled\nextoller\nextollers\nextolling\nextolls\nextols\nextort\nextorted\nextorter\nextorters\nextorting\nextortion\nextortionate\nextortionately\nextortioner\nextortioners\nextortionist\nextortionists\nextortions\nextortive\nextorts\nextra\nextract\nextractability\nextractable\nextracted\nextracting\nextraction\nextractions\nextractive\nextractives\nextractor\nextractors\nextracts\nextracurricular\nextraditable\nextradite\nextradited\nextradites\nextraditing\nextradition\nextraditions\nextrados\nextradoses\nextralegal\nextramarital\nextramural\nextramurally\nextraneous\nextraneously\nextraneousness\nextraordinarily\nextraordinariness\nextraordinary\nextrapolate\nextrapolated\nextrapolates\nextrapolating\nextrapolation\nextrapolations\nextrapolative\nextrapolator\nextrapolators\nextras\nextrasensory\nextraterritorial\nextraterritoriality\nextraterritorially\nextravagance\nextravagances\nextravagancies\nextravagancy\nextravagant\nextravagantly\nextravaganza\nextravaganzas\nextraversion\nextraversions\nextravert\nextraverted\nextraverts\nextrema\nextreme\nextremely\nextremeness\nextremer\nextremes\nextremest\nextremism\nextremisms\nextremist\nextremists\nextremities\nextremity\nextremum\nextremuma\nextricable\nextricate\nextricated\nextricates\nextricating\nextrication\nextrications\nextrinsic\nextrinsically\nextrorse\nextroversion\nextroversions\nextroversive\nextrovert\nextroverted\nextroverts\nextrude\nextruded\nextruder\nextruders\nextrudes\nextruding\nextrusion\nextrusions\nexuberance\nexuberances\nexuberant\nexuberantly\nexuberate\nexuberated\nexuberates\nexuberating\nexudate\nexudates\nexudation\nexudations\nexudative\nexude\nexuded\nexudes\nexuding\nexult\nexultance\nexultancy\nexultant\nexultantly\nexultation\nexultations\nexulted\nexulting\nexultingly\nexults\nexurb\nexurban\nexurbanite\nexurbanites\nexurbia\nexurbias\nexurbs\nexuvia\nexuviae\nexuvial\nexuviate\nexuviated\nexuviates\nexuviating\nexuvium\neyas\neyases\neye\neyeable\neyeball\neyeballed\neyeballing\neyeballs\neyebeam\neyebeams\neyebolt\neyebolts\neyebrow\neyebrows\neyecup\neyecups\neyed\neyedness\neyednesses\neyeful\neyefuls\neyeglass\neyeglasses\neyehole\neyeholes\neyehook\neyehooks\neyeing\neyelash\neyelashes\neyeless\neyelet\neyelets\neyeletted\neyeletting\neyelid\neyelids\neyelike\neyeliner\neyeliners\neyen\neyepiece\neyepieces\neyepoint\neyepoints\neyer\neyers\neyes\neyeshade\neyeshades\neyeshot\neyeshots\neyesight\neyesights\neyesome\neyesore\neyesores\neyespot\neyespots\neyestalk\neyestalks\neyestone\neyestones\neyestrain\neyestrains\neyetooteeth\neyetooth\neyewash\neyewashes\neyewater\neyewaters\neyewink\neyewinks\neyewitness\neyewitnesses\neying\neyne\neyra\neyras\neyre\neyres\neyrie\neyries\neyrir\neyry\nfa\nfable\nfabled\nfabler\nfablers\nfables\nfabliau\nfabliaux\nfabling\nfabric\nfabricate\nfabricated\nfabricates\nfabricating\nfabrication\nfabrications\nfabricator\nfabricators\nfabrics\nfabular\nfabulist\nfabulists\nfabulous\nfabulously\nfabulousness\nfacade\nfacades\nface\nfaceable\nfaced\nfacedown\nfaceless\nfacelessness\nfaceplate\nfaceplates\nfacer\nfacers\nfaces\nfacet\nfacete\nfaceted\nfacetely\nfacetiae\nfaceting\nfacetious\nfacetiously\nfacetiousness\nfacets\nfacetted\nfacetting\nfaceup\nfacia\nfacial\nfacially\nfacials\nfacias\nfaciend\nfaciends\nfacies\nfacile\nfacilely\nfacileness\nfacilitate\nfacilitated\nfacilitates\nfacilitating\nfacilitation\nfacilitations\nfacilitative\nfacilitator\nfacilitators\nfacilities\nfacility\nfacing\nfacings\nfacsimile\nfacsimiles\nfact\nfactful\nfaction\nfactional\nfactionalism\nfactionalist\nfactionalists\nfactions\nfactious\nfactiously\nfactiousness\nfactitious\nfactitiously\nfactitiousness\nfactitive\nfactitively\nfactor\nfactorable\nfactored\nfactorial\nfactorials\nfactories\nfactoring\nfactorization\nfactorizations\nfactorize\nfactorized\nfactorizes\nfactorizing\nfactors\nfactory\nfactotum\nfactotums\nfacts\nfactual\nfactualism\nfactualist\nfactualists\nfactuality\nfactually\nfactualness\nfacture\nfactures\nfacula\nfaculae\nfacular\nfacultative\nfacultatively\nfaculties\nfaculty\nfad\nfadable\nfaddier\nfaddiest\nfaddish\nfaddishness\nfaddism\nfaddisms\nfaddist\nfaddists\nfaddy\nfade\nfadeaway\nfadeaways\nfaded\nfadedly\nfadeless\nfader\nfaders\nfades\nfadge\nfadged\nfadges\nfadging\nfading\nfadings\nfado\nfados\nfads\nfaecal\nfaeces\nfaena\nfaenas\nfaerie\nfaeries\nfaery\nfag\nfagged\nfagging\nfaggot\nfaggoted\nfaggoting\nfaggots\nfaggy\nfagin\nfagins\nfagot\nfagoted\nfagoter\nfagoters\nfagoting\nfagotings\nfagots\nfags\nfahlband\nfahlbands\nfaience\nfaiences\nfail\nfailed\nfailing\nfailings\nfaille\nfailles\nfails\nfailure\nfailures\nfain\nfaineant\nfaineants\nfainer\nfainest\nfaint\nfainted\nfainter\nfainters\nfaintest\nfainthearted\nfaintheartedly\nfaintheartedness\nfainting\nfaintish\nfaintly\nfaintness\nfaints\nfair\nfaired\nfairer\nfairest\nfairground\nfairgrounds\nfairies\nfairing\nfairings\nfairish\nfairlead\nfairleads\nfairly\nfairness\nfairnesses\nfairs\nfairway\nfairways\nfairy\nfairyism\nfairyisms\nfairyland\nfairylands\nfairylike\nfaith\nfaithed\nfaithful\nfaithfully\nfaithfulness\nfaithfuls\nfaithing\nfaithless\nfaithlessly\nfaithlessness\nfaiths\nfaitour\nfaitours\nfake\nfaked\nfakeer\nfakeers\nfaker\nfakeries\nfakers\nfakery\nfakes\nfakey\nfaking\nfakir\nfakirs\nfalbala\nfalbalas\nfalcate\nfalcated\nfalchion\nfalchions\nfalcon\nfalconer\nfalconers\nfalconet\nfalconets\nfalconries\nfalconry\nfalcons\nfalderal\nfalderals\nfalderol\nfalderols\nfall\nfallacies\nfallacious\nfallaciously\nfallaciousness\nfallacy\nfallal\nfallals\nfallback\nfallbacks\nfallen\nfaller\nfallers\nfallfish\nfallfishes\nfallibility\nfallible\nfallibly\nfalling\nfalloff\nfalloffs\nfallout\nfallouts\nfallow\nfallowed\nfallowing\nfallowness\nfallows\nfalls\nfalse\nfalsehood\nfalsehoods\nfalsely\nfalseness\nfalser\nfalsest\nfalsetto\nfalsettos\nfalsie\nfalsies\nfalsification\nfalsifications\nfalsified\nfalsifier\nfalsifiers\nfalsifies\nfalsify\nfalsifying\nfalsities\nfalsity\nfaltboat\nfaltboats\nfalter\nfaltered\nfalterer\nfalterers\nfaltering\nfalteringly\nfalters\nfalx\nfame\nfamed\nfameless\nfames\nfamilial\nfamiliar\nfamiliarities\nfamiliarity\nfamiliarization\nfamiliarizations\nfamiliarize\nfamiliarized\nfamiliarizes\nfamiliarizing\nfamiliarly\nfamiliars\nfamilies\nfamily\nfamine\nfamines\nfaming\nfamish\nfamished\nfamishes\nfamishing\nfamishment\nfamous\nfamously\nfamousness\nfamuli\nfamulus\nfan\nfanatic\nfanatical\nfanatically\nfanaticism\nfanaticize\nfanaticized\nfanaticizes\nfanaticizing\nfanatics\nfancied\nfancier\nfanciers\nfancies\nfanciest\nfanciful\nfancifully\nfancifulness\nfancily\nfancy\nfancying\nfancywork\nfancyworks\nfandango\nfandangos\nfandom\nfandoms\nfane\nfanega\nfanegada\nfanegadas\nfanegas\nfanes\nfanfare\nfanfares\nfanfaron\nfanfarons\nfanfold\nfanfolds\nfang\nfanga\nfangas\nfanged\nfangless\nfanglike\nfangs\nfanion\nfanions\nfanjet\nfanjets\nfanlight\nfanlights\nfanlike\nfanned\nfanner\nfanners\nfannies\nfanning\nfanny\nfano\nfanon\nfanons\nfanos\nfans\nfantail\nfantails\nfantaseid\nfantasia\nfantasias\nfantasie\nfantasied\nfantasies\nfantasize\nfantasized\nfantasizes\nfantasizing\nfantasm\nfantasms\nfantast\nfantastic\nfantastically\nfantasts\nfantasy\nfantasying\nfantod\nfantods\nfantom\nfantoms\nfanum\nfanums\nfanwise\nfanwort\nfanworts\nfaqir\nfaqirs\nfaquir\nfaquirs\nfar\nfarad\nfaradaic\nfaraday\nfaradays\nfaradic\nfaradise\nfaradised\nfaradises\nfaradising\nfaradism\nfaradisms\nfaradize\nfaradized\nfaradizes\nfaradizing\nfarads\nfaraway\nfarce\nfarced\nfarcer\nfarcers\nfarces\nfarceur\nfarceurs\nfarci\nfarcical\nfarcically\nfarcie\nfarcies\nfarcing\nfarcy\nfard\nfarded\nfardel\nfardels\nfarding\nfards\nfare\nfared\nfarer\nfarers\nfares\nfarewell\nfarewelled\nfarewelling\nfarewells\nfarfal\nfarfals\nfarfel\nfarfels\nfarfetched\nfarfetchedness\nfarina\nfarinaceous\nfarinas\nfaring\nfarinha\nfarinhas\nfarinose\nfarl\nfarle\nfarles\nfarls\nfarm\nfarmable\nfarmed\nfarmer\nfarmers\nfarmhand\nfarmhands\nfarmhouse\nfarmhouses\nfarming\nfarmings\nfarmland\nfarmlands\nfarms\nfarmstead\nfarmsteads\nfarmyard\nfarmyards\nfarnesol\nfarnesols\nfarness\nfarnesses\nfaro\nfaros\nfarouche\nfarrago\nfarragoes\nfarrier\nfarrieries\nfarriers\nfarriery\nfarrow\nfarrowed\nfarrowing\nfarrows\nfarseeing\nfarsighted\nfarsightedly\nfarsightedness\nfart\nfarted\nfarther\nfarthermost\nfarthest\nfarthing\nfarthings\nfarting\nfarts\nfas\nfasces\nfascia\nfasciae\nfascial\nfascias\nfasciate\nfascicle\nfascicled\nfascicles\nfascicular\nfascinate\nfascinated\nfascinates\nfascinating\nfascinatingly\nfascination\nfascinations\nfascine\nfascines\nfascism\nfascisms\nfascist\nfascistic\nfascistically\nfascists\nfash\nfashed\nfashes\nfashing\nfashion\nfashionable\nfashionableness\nfashionably\nfashioned\nfashioner\nfashioners\nfashioning\nfashions\nfashious\nfast\nfastback\nfastbacks\nfastball\nfastballs\nfasted\nfasten\nfastened\nfastener\nfasteners\nfastening\nfastenings\nfastens\nfaster\nfastest\nfastidious\nfastidiously\nfastidiousness\nfastigiate\nfasting\nfastings\nfastness\nfastnesses\nfasts\nfastuous\nfat\nfatal\nfatalism\nfatalisms\nfatalist\nfatalistic\nfatalistically\nfatalists\nfatalities\nfatality\nfatally\nfatback\nfatbacks\nfatbird\nfatbirds\nfate\nfated\nfateful\nfatefully\nfatefulness\nfates\nfathead\nfatheads\nfather\nfathered\nfatherhood\nfathering\nfatherland\nfatherlands\nfatherless\nfatherly\nfathers\nfathom\nfathomable\nfathomed\nfathoming\nfathomless\nfathoms\nfatidic\nfatigability\nfatigable\nfatigue\nfatigued\nfatigues\nfatiguing\nfating\nfatless\nfatlike\nfatling\nfatlings\nfatly\nfatness\nfatnesses\nfats\nfatso\nfatsoes\nfatsos\nfatstock\nfatstocks\nfatted\nfatten\nfattened\nfattener\nfatteners\nfattening\nfattens\nfatter\nfattest\nfattier\nfatties\nfattiest\nfattily\nfattiness\nfatting\nfattish\nfatty\nfatuities\nfatuity\nfatuous\nfatuously\nfatuousness\nfaubourg\nfaubourgs\nfaucal\nfaucals\nfauces\nfaucet\nfaucets\nfaucial\nfaugh\nfauld\nfaulds\nfault\nfaulted\nfaultfinder\nfaultfinders\nfaultfinding\nfaultfindings\nfaultier\nfaultiest\nfaultily\nfaultiness\nfaulting\nfaultless\nfaultlessly\nfaultlessness\nfaults\nfaulty\nfaun\nfauna\nfaunae\nfaunal\nfaunally\nfaunas\nfaunlike\nfauns\nfauteuil\nfauteuils\nfauve\nfauves\nfauvism\nfauvisms\nfauvist\nfauvists\nfaux\nfavela\nfavelas\nfavonian\nfavor\nfavorable\nfavorableness\nfavorably\nfavored\nfavorer\nfavorers\nfavoring\nfavorite\nfavorites\nfavoritism\nfavoritisms\nfavors\nfavour\nfavoured\nfavourer\nfavourers\nfavouring\nfavours\nfavus\nfavuses\nfawn\nfawned\nfawner\nfawners\nfawnier\nfawniest\nfawning\nfawningly\nfawnlike\nfawns\nfawny\nfax\nfaxed\nfaxes\nfaxing\nfay\nfayalite\nfayalites\nfayed\nfaying\nfays\nfaze\nfazed\nfazenda\nfazendas\nfazes\nfazing\nfeal\nfealties\nfealty\nfear\nfeared\nfearer\nfearers\nfearful\nfearfuller\nfearfullest\nfearfully\nfearfulness\nfearing\nfearless\nfearlessly\nfearlessness\nfears\nfearsome\nfearsomely\nfearsomeness\nfeasance\nfeasances\nfease\nfeased\nfeases\nfeasibility\nfeasible\nfeasibleness\nfeasibly\nfeasing\nfeast\nfeasted\nfeaster\nfeasters\nfeastful\nfeasting\nfeasts\nfeat\nfeater\nfeatest\nfeather\nfeatherbed\nfeatherbedded\nfeatherbedding\nfeatherbeddings\nfeatherbeds\nfeatherbrain\nfeatherbrained\nfeatherbrains\nfeathered\nfeatheredge\nfeatheredged\nfeatheredges\nfeatheredging\nfeatherier\nfeatheriest\nfeathering\nfeatherless\nfeathers\nfeatherweight\nfeatherweights\nfeathery\nfeatlier\nfeatliest\nfeatly\nfeats\nfeature\nfeatured\nfeatureless\nfeatures\nfeaturing\nfeaze\nfeazed\nfeazes\nfeazing\nfebrific\nfebrifuge\nfebrifuges\nfebrile\nfecal\nfeces\nfecial\nfecials\nfeck\nfeckless\nfecklessly\nfecklessness\nfeckly\nfecks\nfecula\nfeculae\nfeculent\nfecund\nfecundate\nfecundated\nfecundates\nfecundating\nfecundation\nfecundations\nfecundity\nfed\nfedayee\nfedayeen\nfederacies\nfederacy\nfederal\nfederalism\nfederalist\nfederalists\nfederalization\nfederalize\nfederalized\nfederalizes\nfederalizing\nfederally\nfederals\nfederate\nfederated\nfederates\nfederating\nfederation\nfederations\nfederative\nfederatively\nfedora\nfedoras\nfeds\nfee\nfeeble\nfeebleminded\nfeeblemindedly\nfeeblemindedness\nfeebleness\nfeebler\nfeeblest\nfeeblish\nfeebly\nfeed\nfeedable\nfeedback\nfeedbacks\nfeedbag\nfeedbags\nfeedbox\nfeedboxes\nfeeder\nfeeders\nfeeding\nfeedlot\nfeedlots\nfeeds\nfeedstock\nfeedstocks\nfeeing\nfeel\nfeeler\nfeelers\nfeeless\nfeeling\nfeelingly\nfeelings\nfeels\nfees\nfeet\nfeetless\nfeeze\nfeezed\nfeezes\nfeezing\nfeh\nfehs\nfeign\nfeigned\nfeigner\nfeigners\nfeigning\nfeigns\nfeint\nfeinted\nfeinting\nfeints\nfeirie\nfeist\nfeistier\nfeistiest\nfeists\nfeisty\nfeldspar\nfeldspars\nfelicitate\nfelicitated\nfelicitates\nfelicitating\nfelicitation\nfelicitations\nfelicitator\nfelicitators\nfelicities\nfelicitous\nfelicitously\nfelicitousness\nfelicity\nfelid\nfelids\nfeline\nfelinely\nfelines\nfelinities\nfelinity\nfell\nfella\nfellable\nfellah\nfellaheen\nfellahin\nfellahs\nfellas\nfellatio\nfellatios\nfelled\nfeller\nfellers\nfellest\nfellies\nfelling\nfellness\nfellnesses\nfelloe\nfelloes\nfellow\nfellowed\nfellowing\nfellowly\nfellowman\nfellowmen\nfellows\nfellowship\nfellowships\nfells\nfelly\nfelon\nfelonies\nfelonious\nfeloniously\nfeloniousness\nfelonries\nfelonry\nfelons\nfelony\nfelsite\nfelsites\nfelsitic\nfelspar\nfelspars\nfelstone\nfelstones\nfelt\nfelted\nfelting\nfeltings\nfelts\nfelucca\nfeluccas\nfelwort\nfelworts\nfem\nfemale\nfemaleness\nfemales\nfeme\nfemes\nfeminacies\nfeminacy\nfeminie\nfeminine\nfemininely\nfeminineness\nfeminines\nfemininities\nfemininity\nfeminise\nfeminised\nfeminises\nfeminising\nfeminism\nfeminisms\nfeminist\nfeministic\nfeminists\nfeminities\nfeminity\nfeminization\nfeminizations\nfeminize\nfeminized\nfeminizes\nfeminizing\nfemme\nfemmes\nfemora\nfemoral\nfems\nfemur\nfemurs\nfen\nfenagle\nfenagled\nfenagles\nfenagling\nfence\nfenced\nfenceless\nfencelessness\nfencer\nfencers\nfences\nfencible\nfencibles\nfencing\nfencings\nfend\nfended\nfender\nfendered\nfenders\nfending\nfends\nfenestra\nfenestrae\nfenestrate\nfenestrated\nfenestration\nfenestrations\nfennec\nfennecs\nfennel\nfennels\nfenny\nfens\nfeod\nfeodaries\nfeodary\nfeods\nfeoff\nfeoffed\nfeoffee\nfeoffees\nfeoffer\nfeoffers\nfeoffing\nfeoffor\nfeoffors\nfeoffs\nfer\nferacities\nferacity\nferal\nferbam\nferbams\nfere\nferes\nferetories\nferetory\nferia\nferiae\nferial\nferias\nferine\nferities\nferity\nferlie\nferlies\nferly\nfermata\nfermatas\nfermate\nferment\nfermentable\nfermentation\nfermentations\nfermentative\nfermented\nfermenting\nferments\nfermi\nfermion\nfermions\nfermis\nfermium\nfermiums\nfern\nferneries\nfernery\nfernier\nferniest\nfernless\nfernlike\nferns\nferny\nferocious\nferociously\nferociousness\nferocities\nferocity\nferrate\nferrates\nferrel\nferreled\nferreling\nferrelled\nferrelling\nferrels\nferreous\nferret\nferreted\nferreter\nferreters\nferreting\nferrets\nferrety\nferriage\nferriages\nferric\nferried\nferries\nferrite\nferrites\nferritic\nferritin\nferritins\nferrous\nferrule\nferruled\nferrules\nferruling\nferrum\nferrums\nferry\nferryboat\nferryboats\nferrying\nferryman\nferrymen\nfertile\nfertilely\nfertileness\nfertilities\nfertility\nfertilizable\nfertilization\nfertilizations\nfertilize\nfertilized\nfertilizer\nfertilizers\nfertilizes\nfertilizing\nferula\nferulae\nferulas\nferule\nferuled\nferules\nferuling\nfervencies\nfervency\nfervent\nfervently\nfervid\nfervidly\nfervidness\nfervor\nfervors\nfervour\nfervours\nfescue\nfescues\nfess\nfesse\nfessed\nfesses\nfessing\nfesswise\nfestal\nfestally\nfester\nfestered\nfestering\nfesters\nfestival\nfestivals\nfestive\nfestively\nfestiveness\nfestivities\nfestivity\nfestoon\nfestooned\nfestooning\nfestoons\nfet\nfeta\nfetal\nfetas\nfetation\nfetations\nfetch\nfetched\nfetcher\nfetchers\nfetches\nfetching\nfetchingly\nfete\nfeted\nfeterita\nfeteritas\nfetes\nfetial\nfetiales\nfetialis\nfetials\nfetich\nfetiches\nfeticide\nfeticides\nfetid\nfetidly\nfetidness\nfeting\nfetish\nfetishes\nfetishism\nfetishisms\nfetishist\nfetishistic\nfetishists\nfetlock\nfetlocks\nfetologies\nfetology\nfetor\nfetors\nfets\nfetted\nfetter\nfettered\nfetterer\nfetterers\nfettering\nfetters\nfetting\nfettle\nfettled\nfettles\nfettling\nfettlings\nfetus\nfetuses\nfeu\nfeuar\nfeuars\nfeud\nfeudal\nfeudalism\nfeudalistic\nfeudalize\nfeudalized\nfeudalizes\nfeudalizing\nfeudally\nfeudaries\nfeudary\nfeuded\nfeuding\nfeudist\nfeudists\nfeuds\nfeued\nfeuing\nfeus\nfever\nfevered\nfeverfew\nfeverfews\nfevering\nfeverish\nfeverishly\nfeverishness\nfeverous\nfevers\nfew\nfewer\nfewest\nfewness\nfewnesses\nfewtrils\nfey\nfeyer\nfeyest\nfeyly\nfeyness\nfeynesses\nfez\nfezes\nfezzed\nfezzes\nfiacre\nfiacres\nfiance\nfiancee\nfiancees\nfiances\nfiar\nfiars\nfiaschi\nfiasco\nfiascoes\nfiascos\nfiat\nfiats\nfib\nfibbed\nfibber\nfibbers\nfibbing\nfiber\nfiberboard\nfiberboards\nfibered\nfiberfill\nfiberglass\nfiberize\nfiberized\nfiberizes\nfiberizing\nfibers\nfibre\nfibres\nfibril\nfibrilla\nfibrillae\nfibrillate\nfibrillated\nfibrillates\nfibrillating\nfibrillation\nfibrillations\nfibrillose\nfibrils\nfibrin\nfibrinogen\nfibrinogens\nfibrinous\nfibrins\nfibroblast\nfibroblastic\nfibroblasts\nfibroid\nfibroids\nfibroin\nfibroins\nfibroma\nfibromas\nfibromata\nfibroses\nfibrosis\nfibrotic\nfibrous\nfibs\nfibula\nfibulae\nfibular\nfibulas\nfice\nfices\nfiche\nfiches\nfichu\nfichus\nficin\nficins\nfickle\nfickleness\nfickler\nficklest\nfico\nficoes\nfictile\nfiction\nfictional\nfictionalization\nfictionalizations\nfictionalize\nfictionalized\nfictionalizes\nfictionalizing\nfictionally\nfictionist\nfictionists\nfictions\nfictitious\nfictitiously\nfictitiousness\nfictive\nfictively\nfictiveness\nficus\nfid\nfiddle\nfiddled\nfiddler\nfiddlers\nfiddles\nfiddlesticks\nfiddling\nfideism\nfideisms\nfideist\nfideists\nfidelities\nfidelity\nfidge\nfidged\nfidges\nfidget\nfidgeted\nfidgeter\nfidgeters\nfidgetiness\nfidgeting\nfidgets\nfidgety\nfidging\nfido\nfidos\nfids\nfiducial\nfiduciaries\nfiduciary\nfie\nfief\nfiefdom\nfiefdoms\nfiefs\nfield\nfielded\nfielder\nfielders\nfielding\nfieldpiece\nfieldpieces\nfields\nfieldstone\nfieldstones\nfieldwork\nfiend\nfiendish\nfiendishly\nfiendishness\nfiends\nfierce\nfiercely\nfierceness\nfiercer\nfiercest\nfierier\nfieriest\nfierily\nfieriness\nfiery\nfiesta\nfiestas\nfife\nfifed\nfifer\nfifers\nfifes\nfifing\nfifteen\nfifteens\nfifteenth\nfifteenths\nfifth\nfifthly\nfifths\nfifties\nfiftieth\nfiftieths\nfifty\nfig\nfigeater\nfigeaters\nfigged\nfigging\nfight\nfighter\nfighters\nfighting\nfightings\nfights\nfigment\nfigments\nfigs\nfiguline\nfigulines\nfigural\nfigurant\nfigurants\nfigurate\nfiguration\nfigurations\nfigurative\nfiguratively\nfigurativeness\nfigure\nfigured\nfigurehead\nfigureheads\nfigurer\nfigurers\nfigures\nfigurine\nfigurines\nfiguring\nfigwort\nfigworts\nfil\nfila\nfilagree\nfilagreed\nfilagreeing\nfilagrees\nfilament\nfilamentary\nfilamentous\nfilaments\nfilar\nfilaree\nfilarees\nfilaria\nfilariae\nfilarial\nfilarian\nfilariid\nfilariids\nfilature\nfilatures\nfilbert\nfilberts\nfilch\nfilched\nfilcher\nfilchers\nfilches\nfilching\nfile\nfiled\nfilefish\nfilefishes\nfilemot\nfiler\nfilers\nfiles\nfilet\nfileted\nfileting\nfilets\nfilial\nfilially\nfiliate\nfiliated\nfiliates\nfiliating\nfiliation\nfiliations\nfilibeg\nfilibegs\nfilibuster\nfilibustered\nfilibusterer\nfilibusterers\nfilibustering\nfilibusters\nfilicide\nfilicides\nfiliform\nfiligree\nfiligreed\nfiligreeing\nfiligrees\nfiling\nfilings\nfilister\nfilisters\nfill\nfille\nfilled\nfiller\nfillers\nfilles\nfillet\nfilleted\nfilleting\nfillets\nfillies\nfilling\nfillings\nfillip\nfilliped\nfilliping\nfillips\nfillo\nfills\nfilly\nfilm\nfilmcard\nfilmcards\nfilmdom\nfilmdoms\nfilmed\nfilmgoer\nfilmgoers\nfilmic\nfilmier\nfilmiest\nfilmily\nfilminess\nfilming\nfilmland\nfilmlands\nfilmmaker\nfilmmakers\nfilmmaking\nfilms\nfilmset\nfilmsets\nfilmsetting\nfilmstrip\nfilmstrips\nfilmy\nfilo\nfilos\nfilose\nfils\nfilter\nfilterability\nfilterable\nfiltered\nfilterer\nfilterers\nfiltering\nfilters\nfilth\nfilthier\nfilthiest\nfilthily\nfilthiness\nfilths\nfilthy\nfiltrate\nfiltrated\nfiltrates\nfiltrating\nfiltration\nfiltrations\nfilum\nfimble\nfimbles\nfimbria\nfimbriae\nfimbrial\nfin\nfinable\nfinagle\nfinagled\nfinagler\nfinaglers\nfinagles\nfinagling\nfinal\nfinale\nfinales\nfinalis\nfinalism\nfinalisms\nfinalist\nfinalists\nfinalities\nfinality\nfinalization\nfinalizations\nfinalize\nfinalized\nfinalizes\nfinalizing\nfinally\nfinals\nfinance\nfinanced\nfinances\nfinancial\nfinancially\nfinancier\nfinanciers\nfinancing\nfinback\nfinbacks\nfinch\nfinches\nfind\nfinder\nfinders\nfinding\nfindings\nfinds\nfine\nfineable\nfined\nfinely\nfineness\nfinenesses\nfiner\nfineries\nfinery\nfines\nfinespun\nfinesse\nfinessed\nfinesses\nfinessing\nfinest\nfinfish\nfinfishes\nfinfoot\nfinfoots\nfinger\nfingerboard\nfingerboards\nfingered\nfingerer\nfingerers\nfingering\nfingerings\nfingerling\nfingerlings\nfingernail\nfingernails\nfingerprint\nfingerprinted\nfingerprinting\nfingerprints\nfingers\nfingertip\nfingertips\nfinial\nfinialed\nfinials\nfinical\nfinickier\nfinickiest\nfinickin\nfinicking\nfinicky\nfinikin\nfiniking\nfining\nfinings\nfinis\nfinises\nfinish\nfinished\nfinisher\nfinishers\nfinishes\nfinishing\nfinite\nfinitely\nfiniteness\nfinites\nfinitude\nfinitudes\nfink\nfinked\nfinking\nfinks\nfinless\nfinlike\nfinmark\nfinmarks\nfinned\nfinnickier\nfinnickiest\nfinnicky\nfinnier\nfinniest\nfinning\nfinnmark\nfinnmarks\nfinny\nfino\nfinochio\nfinochios\nfinos\nfins\nfiord\nfiords\nfipple\nfipples\nfique\nfiques\nfir\nfire\nfirearm\nfirearms\nfireball\nfireballs\nfirebird\nfirebirds\nfireboat\nfireboats\nfirebomb\nfirebombed\nfirebombing\nfirebombs\nfirebox\nfireboxes\nfirebrand\nfirebrands\nfirebrat\nfirebrats\nfirebreak\nfirebreaks\nfirebrick\nfirebricks\nfirebug\nfirebugs\nfireclay\nfireclays\nfirecracker\nfirecrackers\nfired\nfiredamp\nfiredamps\nfiredog\nfiredogs\nfirefang\nfirefanged\nfirefanging\nfirefangs\nfireflies\nfirefly\nfirehall\nfirehalls\nfireless\nfirelight\nfirelights\nfirelock\nfirelocks\nfireman\nfiremen\nfirepan\nfirepans\nfirepink\nfirepinks\nfireplace\nfireplaces\nfireplug\nfireplugs\nfirepower\nfireproof\nfireproofed\nfireproofing\nfireproofs\nfirer\nfireroom\nfirerooms\nfirers\nfires\nfireside\nfiresides\nfiretrap\nfiretraps\nfirewater\nfireweed\nfireweeds\nfirewood\nfirewoods\nfirework\nfireworks\nfireworm\nfireworms\nfiring\nfirings\nfirkin\nfirkins\nfirm\nfirmament\nfirmamental\nfirman\nfirmans\nfirmed\nfirmer\nfirmers\nfirmest\nfirming\nfirmly\nfirmness\nfirmnesses\nfirms\nfirn\nfirns\nfirry\nfirs\nfirst\nfirstborn\nfirstborns\nfirsthand\nfirstling\nfirstlings\nfirstly\nfirsts\nfirth\nfirths\nfisc\nfiscal\nfiscally\nfiscals\nfiscs\nfish\nfishable\nfishboats\nfishbolt\nfishbolts\nfishbone\nfishbones\nfishbowl\nfishbowls\nfished\nfisher\nfisheries\nfisherman\nfishermen\nfishers\nfishery\nfishes\nfisheye\nfisheyes\nfishgig\nfishgigs\nfishhook\nfishhooks\nfishier\nfishiest\nfishily\nfishing\nfishings\nfishless\nfishlike\nfishline\nfishlines\nfishmeal\nfishmeals\nfishmonger\nfishmongers\nfishnet\nfishnets\nfishpole\nfishpoles\nfishpond\nfishponds\nfishtail\nfishtailed\nfishtailing\nfishtails\nfishway\nfishways\nfishwife\nfishwives\nfishy\nfissate\nfissile\nfission\nfissionability\nfissionable\nfissional\nfissioned\nfissioning\nfissions\nfissiparous\nfissiped\nfissipeds\nfissure\nfissured\nfissures\nfissuring\nfist\nfisted\nfistful\nfistfuls\nfistic\nfisticuffs\nfisting\nfistnote\nfistnotes\nfists\nfistula\nfistulae\nfistular\nfistulas\nfit\nfitch\nfitchee\nfitches\nfitchet\nfitchets\nfitchew\nfitchews\nfitchy\nfitful\nfitfully\nfitfulness\nfitly\nfitment\nfitments\nfitness\nfitnesses\nfits\nfittable\nfitted\nfitter\nfitters\nfittest\nfitting\nfittingly\nfittingness\nfittings\nfive\nfivefold\nfivepins\nfiver\nfivers\nfives\nfix\nfixable\nfixate\nfixated\nfixates\nfixatif\nfixatifs\nfixating\nfixation\nfixations\nfixative\nfixatives\nfixed\nfixedly\nfixedness\nfixer\nfixers\nfixes\nfixing\nfixings\nfixit\nfixities\nfixity\nfixt\nfixture\nfixtures\nfixure\nfixures\nfiz\nfizgig\nfizgigs\nfizz\nfizzed\nfizzer\nfizzers\nfizzes\nfizzier\nfizziest\nfizzing\nfizzle\nfizzled\nfizzles\nfizzling\nfizzy\nfjeld\nfjelds\nfjord\nfjords\nflab\nflabbergast\nflabbergasted\nflabbergasting\nflabbergasts\nflabbier\nflabbiest\nflabbily\nflabbiness\nflabby\nflabella\nflabs\nflaccid\nflaccidity\nflaccidly\nflack\nflacks\nflacon\nflacons\nflag\nflagella\nflagellant\nflagellants\nflagellate\nflagellated\nflagellates\nflagellating\nflagellation\nflagellations\nflagellum\nflagellums\nflageolet\nflageolets\nflagged\nflagger\nflaggers\nflaggier\nflaggiest\nflagging\nflaggings\nflaggy\nflagitious\nflagitiously\nflagitiousness\nflagless\nflagman\nflagmen\nflagon\nflagons\nflagpole\nflagpoles\nflagrancy\nflagrant\nflagrantly\nflags\nflagship\nflagships\nflagstaff\nflagstaffs\nflagstone\nflagstones\nflail\nflailed\nflailing\nflails\nflair\nflairs\nflak\nflake\nflaked\nflaker\nflakers\nflakes\nflakier\nflakiest\nflakily\nflakiness\nflaking\nflaky\nflam\nflambe\nflambeau\nflambeaus\nflambeaux\nflambee\nflambeed\nflambeing\nflambes\nflamboyance\nflamboyancy\nflamboyant\nflamboyantly\nflame\nflamed\nflamen\nflamenco\nflamencos\nflamens\nflameout\nflameouts\nflameproof\nflamer\nflamers\nflames\nflamier\nflamiest\nflamines\nflaming\nflamingo\nflamingoes\nflamingos\nflammability\nflammable\nflammables\nflammed\nflamming\nflams\nflamy\nflan\nflancard\nflancards\nflanerie\nflaneries\nflanes\nflaneur\nflaneurs\nflange\nflanged\nflanger\nflangers\nflanges\nflanging\nflank\nflanked\nflanker\nflankers\nflanking\nflanks\nflannel\nflanneled\nflannelette\nflannelettes\nflanneling\nflannelled\nflannelling\nflannels\nflans\nflap\nflapjack\nflapjacks\nflapless\nflappable\nflapped\nflapper\nflappers\nflappier\nflappiest\nflapping\nflappy\nflaps\nflare\nflared\nflares\nflarfishes\nflaring\nflaringly\nflash\nflashback\nflashbacks\nflashbulb\nflashbulbs\nflashcard\nflashcards\nflashcube\nflashcubes\nflashed\nflasher\nflashers\nflashes\nflashgun\nflashguns\nflashier\nflashiest\nflashily\nflashiness\nflashing\nflashings\nflashlight\nflashlights\nflashover\nflashovers\nflashy\nflask\nflasket\nflaskets\nflasks\nflat\nflatbed\nflatbeds\nflatboat\nflatboats\nflatcap\nflatcaps\nflatcar\nflatcars\nflatfeet\nflatfish\nflatfishes\nflatfoot\nflatfooted\nflatfooting\nflatfoots\nflathead\nflatheads\nflatiron\nflatirons\nflatland\nflatlands\nflatlet\nflatlets\nflatling\nflatly\nflatness\nflatnesses\nflats\nflatted\nflatten\nflattened\nflattener\nflatteners\nflattening\nflattens\nflatter\nflattered\nflatterer\nflatterers\nflatteries\nflattering\nflatteringly\nflatters\nflattery\nflattest\nflatting\nflattish\nflattop\nflattops\nflatulence\nflatulency\nflatulent\nflatulently\nflatus\nflatuses\nflatware\nflatwares\nflatwash\nflatwashes\nflatways\nflatwise\nflatwork\nflatworks\nflatworm\nflatworms\nflaunt\nflaunted\nflaunter\nflaunters\nflauntier\nflauntiest\nflaunting\nflauntingly\nflaunts\nflaunty\nflautist\nflautists\nflavin\nflavine\nflavines\nflavins\nflavone\nflavones\nflavonol\nflavonols\nflavor\nflavored\nflavorer\nflavorers\nflavorful\nflavorfully\nflavoring\nflavorings\nflavorless\nflavors\nflavorsome\nflavory\nflavour\nflavoured\nflavouring\nflavours\nflavoury\nflaw\nflawed\nflawier\nflawiest\nflawing\nflawless\nflawlessly\nflawlessness\nflaws\nflawy\nflax\nflaxen\nflaxes\nflaxier\nflaxiest\nflaxseed\nflaxseeds\nflaxy\nflay\nflayed\nflayer\nflayers\nflaying\nflays\nflea\nfleabag\nfleabags\nfleabane\nfleabanes\nfleabite\nfleabites\nfleam\nfleams\nfleas\nfleawort\nfleaworts\nfleche\nfleches\nfleck\nflecked\nflecking\nflecks\nflecky\nflection\nflections\nfled\nfledge\nfledged\nfledges\nfledgier\nfledgiest\nfledging\nfledgling\nfledglings\nfledgy\nflee\nfleece\nfleeced\nfleecer\nfleecers\nfleeces\nfleech\nfleeched\nfleeches\nfleeching\nfleecier\nfleeciest\nfleecily\nfleecing\nfleecy\nfleeing\nfleer\nfleered\nfleering\nfleers\nflees\nfleet\nfleeted\nfleeter\nfleetest\nfleeting\nfleetingly\nfleetingness\nfleetly\nfleetness\nfleets\nfleishig\nflemish\nflemished\nflemishes\nflemishing\nflench\nflenched\nflenches\nflenching\nflense\nflensed\nflenser\nflensers\nflenses\nflensing\nflesh\nfleshed\nflesher\nfleshers\nfleshes\nfleshier\nfleshiest\nfleshiness\nfleshing\nfleshings\nfleshlier\nfleshliest\nfleshly\nfleshpot\nfleshpots\nfleshy\nfletch\nfletched\nfletcher\nfletchers\nfletches\nfletching\nfleury\nflew\nflews\nflex\nflexed\nflexes\nflexibility\nflexible\nflexibly\nflexile\nflexing\nflexion\nflexions\nflexor\nflexors\nflexuose\nflexuous\nflexural\nflexure\nflexures\nfley\nfleyed\nfleying\nfleys\nflibbertigibbet\nflibbertigibbets\nflic\nflichter\nflichtered\nflichtering\nflichters\nflick\nflicked\nflicker\nflickered\nflickering\nflickeringly\nflickers\nflickery\nflicking\nflicks\nflics\nflied\nflier\nfliers\nflies\nfliest\nflight\nflighted\nflightier\nflightiest\nflightily\nflightiness\nflighting\nflightless\nflights\nflighty\nflimflam\nflimflammed\nflimflammer\nflimflammers\nflimflamming\nflimflams\nflimsier\nflimsies\nflimsiest\nflimsily\nflimsiness\nflimsy\nflinch\nflinched\nflincher\nflinchers\nflinches\nflinching\nflinder\nflinders\nfling\nflinger\nflingers\nflinging\nflings\nflint\nflinted\nflintier\nflintiest\nflintily\nflintiness\nflinting\nflintlock\nflintlocks\nflints\nflinty\nflip\nflippancies\nflippancy\nflippant\nflippantly\nflipped\nflipper\nflippers\nflippest\nflipping\nflips\nflirt\nflirtation\nflirtations\nflirtatious\nflirtatiously\nflirtatiousness\nflirted\nflirter\nflirters\nflirtier\nflirtiest\nflirting\nflirts\nflirty\nflit\nflitch\nflitched\nflitches\nflitching\nflite\nflited\nflites\nfliting\nflits\nflitted\nflitter\nflittered\nflittering\nflitters\nflitting\nflivver\nflivvers\nfloat\nfloatage\nfloatages\nfloated\nfloater\nfloaters\nfloatier\nfloatiest\nfloating\nfloats\nfloaty\nfloc\nflocced\nflocci\nfloccinaucinihilipilification\nfloccing\nfloccose\nflocculate\nflocculated\nflocculates\nflocculating\nflocculation\nflocculations\nfloccule\nflocculent\nfloccules\nflocculi\nfloccus\nflock\nflocked\nflockier\nflockiest\nflocking\nflockings\nflocks\nflocky\nflocs\nfloe\nfloes\nflog\nflogged\nflogger\nfloggers\nflogging\nfloggings\nflogs\nflong\nflongs\nflood\nflooded\nflooder\nflooders\nfloodgate\nfloodgates\nflooding\nfloodlight\nfloodlighted\nfloodlighting\nfloodlights\nfloodlit\nfloods\nfloodwater\nfloodwaters\nfloodway\nfloodways\nflooey\nfloor\nfloorage\nfloorages\nfloorboard\nfloorboards\nfloored\nfloorer\nfloorers\nflooring\nfloorings\nfloors\nfloorwalker\nfloorwalkers\nfloosies\nfloosy\nfloozie\nfloozies\nfloozy\nflop\nflophouse\nflophouses\nflopover\nflopovers\nflopped\nflopper\nfloppers\nfloppier\nfloppiest\nfloppily\nflopping\nfloppy\nflops\nflora\nflorae\nfloral\nflorally\nfloras\nflorence\nflorences\nflorescence\nflorescent\nfloret\nflorets\nfloricultural\nfloriculture\nfloriculturist\nfloriculturists\nflorid\nfloridity\nfloridly\nfloriferous\nflorigen\nflorigens\nflorin\nflorins\nflorist\nfloristic\nfloristically\nflorists\nfloruit\nfloruits\nfloss\nflosses\nflossie\nflossier\nflossies\nflossiest\nflossy\nflota\nflotage\nflotages\nflotas\nflotation\nflotations\nflotilla\nflotillas\nflotsam\nflotsams\nflounce\nflounced\nflounces\nflouncier\nflounciest\nflouncing\nflouncy\nflounder\nfloundered\nfloundering\nflounders\nflour\nfloured\nflouring\nflourish\nflourished\nflourishes\nflourishing\nflours\nfloury\nflout\nflouted\nflouter\nflouters\nflouting\nflouts\nflow\nflowage\nflowages\nflowchart\nflowcharting\nflowchartings\nflowcharts\nflowed\nflower\nflowered\nflowerer\nflowerers\nfloweret\nflowerets\nflowerier\nfloweriest\nfloweriness\nflowering\nflowerless\nflowerlike\nflowerpot\nflowerpots\nflowers\nflowery\nflowing\nflowingly\nflown\nflows\nflu\nflub\nflubbed\nflubbing\nflubdub\nflubdubs\nflubs\nfluctuate\nfluctuated\nfluctuates\nfluctuating\nfluctuation\nfluctuations\nflue\nflued\nfluencies\nfluency\nfluent\nfluently\nflueric\nfluerics\nflues\nfluff\nfluffed\nfluffier\nfluffiest\nfluffily\nfluffiness\nfluffing\nfluffs\nfluffy\nfluid\nfluidal\nfluidally\nfluidic\nfluidics\nfluidise\nfluidised\nfluidises\nfluidising\nfluidities\nfluidity\nfluidization\nfluidizations\nfluidize\nfluidized\nfluidizer\nfluidizers\nfluidizes\nfluidizing\nfluidly\nfluidness\nfluidounce\nfluidounces\nfluidram\nfluidrams\nfluids\nfluke\nfluked\nflukes\nflukey\nflukier\nflukiest\nfluking\nfluky\nflume\nflumed\nflumes\nfluming\nflummeries\nflummery\nflummox\nflummoxed\nflummoxes\nflummoxing\nflump\nflumped\nflumping\nflumps\nflung\nflunk\nflunked\nflunker\nflunkers\nflunkey\nflunkeys\nflunkies\nflunking\nflunks\nflunky\nfluor\nfluorene\nfluorenes\nfluoresce\nfluoresced\nfluorescein\nfluoresceins\nfluorescence\nfluorescent\nfluoresces\nfluorescing\nfluoric\nfluorid\nfluoridate\nfluoridated\nfluoridates\nfluoridating\nfluoridation\nfluoridations\nfluoride\nfluorides\nfluorids\nfluorin\nfluorinate\nfluorinated\nfluorinates\nfluorinating\nfluorination\nfluorinations\nfluorine\nfluorines\nfluorins\nfluorite\nfluorites\nfluorocarbon\nfluorocarbons\nfluoroscope\nfluoroscopes\nfluoroscopic\nfluoroscopist\nfluoroscopists\nfluoroscopy\nfluors\nflurried\nflurries\nflurry\nflurrying\nflus\nflush\nflushed\nflusher\nflushers\nflushes\nflushest\nflushing\nflushness\nfluster\nflustered\nflustering\nflusters\nflute\nfluted\nflutelike\nfluter\nfluters\nflutes\nflutier\nflutiest\nfluting\nflutings\nflutist\nflutists\nflutter\nfluttered\nfluttering\nflutters\nfluttery\nfluty\nfluvial\nflux\nfluxed\nfluxes\nfluxing\nfluxion\nfluxional\nfluxions\nfluyt\nfluyts\nfly\nflyable\nflyaway\nflyaways\nflybelt\nflybelts\nflyblew\nflyblow\nflyblowing\nflyblown\nflyblows\nflyboat\nflyboats\nflyby\nflybys\nflycatcher\nflycatchers\nflyer\nflyers\nflying\nflyings\nflyleaf\nflyleaves\nflyman\nflymen\nflyover\nflyovers\nflypaper\nflypapers\nflypast\nflypasts\nflysch\nflysches\nflyspeck\nflyspecked\nflyspecking\nflyspecks\nflyte\nflyted\nflytes\nflytier\nflytiers\nflyting\nflytings\nflytrap\nflytraps\nflyway\nflyways\nflyweight\nflyweights\nflywheel\nflywheels\nfoal\nfoaled\nfoaling\nfoals\nfoam\nfoamed\nfoamer\nfoamers\nfoamier\nfoamiest\nfoamily\nfoaminess\nfoaming\nfoamless\nfoamlike\nfoams\nfoamy\nfob\nfobbed\nfobbing\nfobs\nfocal\nfocalise\nfocalised\nfocalises\nfocalising\nfocalization\nfocalizations\nfocalize\nfocalized\nfocalizes\nfocalizing\nfocally\nfoci\nfocus\nfocused\nfocuser\nfocusers\nfocuses\nfocusing\nfocussed\nfocusses\nfocussing\nfodder\nfoddered\nfoddering\nfodders\nfodgel\nfoe\nfoehn\nfoehns\nfoeman\nfoemen\nfoes\nfoetal\nfoetid\nfoetor\nfoetors\nfoetus\nfoetuses\nfog\nfogbound\nfogbow\nfogbows\nfogdog\nfogdogs\nfogey\nfogeys\nfogfruit\nfogfruits\nfoggage\nfoggages\nfogged\nfogger\nfoggers\nfoggier\nfoggiest\nfoggily\nfogginess\nfogging\nfoggy\nfoghorn\nfoghorns\nfogie\nfogies\nfogless\nfogs\nfogy\nfogyish\nfogyism\nfogyisms\nfoh\nfohn\nfohns\nfoible\nfoibles\nfoil\nfoilable\nfoiled\nfoiling\nfoils\nfoilsman\nfoilsmen\nfoin\nfoined\nfoining\nfoins\nfoison\nfoisons\nfoist\nfoisted\nfoisting\nfoists\nfolacin\nfolacins\nfolate\nfolates\nfold\nfoldable\nfoldaway\nfoldboat\nfoldboats\nfolded\nfolder\nfolderol\nfolderols\nfolders\nfolding\nfoldout\nfoldouts\nfolds\nfolia\nfoliage\nfoliaged\nfoliages\nfoliar\nfoliate\nfoliated\nfoliates\nfoliating\nfoliation\nfoliations\nfolio\nfolioed\nfolioing\nfolios\nfoliose\nfolious\nfolium\nfoliums\nfolk\nfolkish\nfolklike\nfolklore\nfolklores\nfolkloric\nfolklorist\nfolkloristic\nfolklorists\nfolkmoot\nfolkmoots\nfolkmot\nfolkmote\nfolkmotes\nfolkmots\nfolks\nfolksier\nfolksiest\nfolksily\nfolksy\nfolktale\nfolktales\nfolkway\nfolkways\nfolky\nfolles\nfollicle\nfollicles\nfollies\nfollis\nfollow\nfollowed\nfollower\nfollowers\nfollowing\nfollowings\nfollows\nfolly\nfoment\nfomentation\nfomentations\nfomented\nfomenter\nfomenters\nfomenting\nfoments\nfon\nfond\nfondant\nfondants\nfonded\nfonder\nfondest\nfonding\nfondle\nfondled\nfondler\nfondlers\nfondles\nfondling\nfondlings\nfondly\nfondness\nfondnesses\nfonds\nfondu\nfondue\nfondues\nfondus\nfons\nfont\nfontal\nfontanel\nfontanels\nfontina\nfontinas\nfonts\nfood\nfoodless\nfoodlessness\nfoods\nfoodstuff\nfoodstuffs\nfoofaraw\nfoofaraws\nfool\nfooled\nfooleries\nfoolery\nfoolfish\nfoolfishes\nfoolhardily\nfoolhardiness\nfoolhardy\nfooling\nfoolish\nfoolisher\nfoolishest\nfoolishly\nfoolishness\nfoolproof\nfools\nfoolscap\nfoolscaps\nfoot\nfootage\nfootages\nfootball\nfootballs\nfootbath\nfootbaths\nfootboy\nfootboys\nfootbridge\nfootbridges\nfooted\nfooter\nfooters\nfootfall\nfootfalls\nfootgear\nfootgears\nfoothill\nfoothills\nfoothold\nfootholds\nfootier\nfootiest\nfooting\nfootings\nfootle\nfootled\nfootler\nfootlers\nfootles\nfootless\nfootlessly\nfootlessness\nfootlights\nfootlike\nfootling\nfootlocker\nfootlockers\nfootloose\nfootman\nfootmark\nfootmarks\nfootmen\nfootnote\nfootnoted\nfootnotes\nfootnoting\nfootpace\nfootpaces\nfootpad\nfootpads\nfootpath\nfootpaths\nfootprint\nfootprints\nfootrace\nfootraces\nfootrest\nfootrests\nfootrope\nfootropes\nfoots\nfootsie\nfootsies\nfootslog\nfootslogged\nfootslogging\nfootslogs\nfootsore\nfootsoreness\nfootstep\nfootsteps\nfootstool\nfootstools\nfootwall\nfootwalls\nfootway\nfootways\nfootwear\nfootwears\nfootwork\nfootworks\nfootworn\nfooty\nfoozle\nfoozled\nfoozler\nfoozlers\nfoozles\nfoozling\nfop\nfopped\nfopperies\nfoppery\nfopping\nfoppish\nfoppishly\nfoppishness\nfops\nfor\nfora\nforage\nforaged\nforager\nforagers\nforages\nforaging\nforam\nforamen\nforamens\nforamina\nforaminifer\nforaminifers\nforams\nforasmuch\nforay\nforayed\nforayer\nforayers\nforaying\nforays\nforb\nforbad\nforbade\nforbear\nforbearance\nforbearances\nforbearer\nforbearers\nforbearing\nforbears\nforbid\nforbidal\nforbidals\nforbiddance\nforbidden\nforbidder\nforbidders\nforbidding\nforbiddingly\nforbiddingness\nforbids\nforbode\nforboded\nforbodes\nforboding\nforbore\nforborne\nforbs\nforby\nforbye\nforce\nforced\nforcedly\nforceful\nforcefully\nforcefulness\nforceless\nforcemeat\nforcemeats\nforceps\nforcer\nforcers\nforces\nforcible\nforcibleness\nforcibly\nforcing\nforcipes\nford\nfordable\nforded\nfordid\nfording\nfordless\nfordo\nfordoes\nfordoing\nfordone\nfords\nfore\nforearm\nforearmed\nforearming\nforearms\nforebay\nforebays\nforebear\nforebears\nforebode\nforeboded\nforebodes\nforebodies\nforeboding\nforebodingly\nforebodingness\nforebodings\nforebody\nforeboom\nforebooms\nforeby\nforebye\nforecast\nforecasted\nforecaster\nforecasters\nforecasting\nforecastle\nforecastles\nforecasts\nforeclose\nforeclosed\nforecloses\nforeclosing\nforeclosure\nforeclosures\nforedate\nforedated\nforedates\nforedating\nforedeck\nforedecks\nforedid\nforedo\nforedoes\nforedoing\nforedone\nforedoom\nforedoomed\nforedooming\nforedooms\nforeface\nforefaces\nforefather\nforefathers\nforefeel\nforefeeling\nforefeels\nforefeet\nforefelt\nforefend\nforefended\nforefending\nforefends\nforefinger\nforefingers\nforefoot\nforefront\nforefronts\nforegather\nforego\nforegoer\nforegoers\nforegoes\nforegoing\nforegone\nforeground\nforegrounds\nforegut\nforeguts\nforehand\nforehanded\nforehandedly\nforehands\nforehead\nforeheads\nforehoof\nforehoofs\nforehooves\nforeign\nforeigner\nforeigners\nforeignism\nforeignness\nforeknew\nforeknow\nforeknowing\nforeknowledge\nforeknown\nforeknows\nforeladies\nforelady\nforeland\nforelands\nforeleg\nforelegs\nforelimb\nforelimbs\nforelock\nforelocks\nforeman\nforemanship\nforemast\nforemasts\nforemen\nforemilk\nforemilks\nforemost\nforename\nforenamed\nforenames\nforenoon\nforenoons\nforensic\nforensically\nforensics\nforeordain\nforeordained\nforeordaining\nforeordains\nforeordination\nforeordinations\nforepart\nforeparts\nforepast\nforepaw\nforepaws\nforepeak\nforepeaks\nforeplay\nforeplays\nforequarter\nforequarters\nforeran\nforerank\nforeranks\nforerun\nforerunner\nforerunners\nforerunning\nforeruns\nfores\nforesaid\nforesail\nforesails\nforesaw\nforesee\nforeseeable\nforeseeing\nforeseen\nforeseer\nforeseers\nforesees\nforeshadow\nforeshadowed\nforeshadower\nforeshadowers\nforeshadowing\nforeshadows\nforeshorten\nforeshortened\nforeshortening\nforeshortens\nforeshow\nforeshowed\nforeshowing\nforeshown\nforeshows\nforeside\nforesides\nforesight\nforesighted\nforesightedly\nforesightedness\nforesights\nforeskin\nforeskins\nforest\nforestal\nforestall\nforestalled\nforestaller\nforestallers\nforestalling\nforestallment\nforestallments\nforestalls\nforestation\nforestations\nforestay\nforestays\nforested\nforester\nforesters\nforestial\nforesting\nforestland\nforestlands\nforestries\nforestry\nforests\nforeswear\nforeswearing\nforeswore\nforesworn\nforetaste\nforetasted\nforetastes\nforetasting\nforetell\nforeteller\nforetellers\nforetelling\nforetells\nforethought\nforetime\nforetimes\nforetold\nforetop\nforetops\nforever\nforevermore\nforevers\nforewarn\nforewarned\nforewarning\nforewarns\nforewent\nforewing\nforewings\nforeword\nforewords\nforeworn\nforeyard\nforeyards\nforfeit\nforfeitable\nforfeited\nforfeiter\nforfeiters\nforfeiting\nforfeits\nforfeiture\nforfeitures\nforfend\nforfended\nforfending\nforfends\nforgat\nforgather\nforgathered\nforgathering\nforgathers\nforgave\nforge\nforgeable\nforged\nforger\nforgeries\nforgers\nforgery\nforges\nforget\nforgetful\nforgetfully\nforgetfulness\nforgets\nforgettable\nforgetter\nforgetters\nforgetting\nforging\nforgings\nforgivable\nforgive\nforgiven\nforgiveness\nforgiver\nforgivers\nforgives\nforgiving\nforgivingly\nforgivingness\nforgo\nforgoer\nforgoers\nforgoes\nforgoing\nforgone\nforgot\nforgotten\nforint\nforints\nforjudge\nforjudged\nforjudges\nforjudging\nfork\nforked\nforkedly\nforker\nforkers\nforkful\nforkfuls\nforkier\nforkiest\nforking\nforkless\nforklift\nforklifts\nforklike\nforks\nforksful\nforky\nforlorn\nforlorner\nforlornest\nforlornly\nforlornness\nform\nformabilities\nformability\nformable\nformal\nformaldehyde\nformaldehydes\nformalin\nformalins\nformalism\nformalisms\nformalist\nformalistic\nformalistically\nformalists\nformalities\nformality\nformalization\nformalizations\nformalize\nformalized\nformalizer\nformalizers\nformalizes\nformalizing\nformally\nformalness\nformals\nformant\nformants\nformat\nformate\nformates\nformation\nformational\nformations\nformative\nformatively\nformativeness\nformats\nformatted\nformatting\nforme\nformed\nformee\nformer\nformerly\nformers\nformes\nformful\nformic\nformicaries\nformicary\nformidable\nformidableness\nformidably\nforming\nformless\nformlessly\nformlessness\nformol\nformols\nforms\nformula\nformulae\nformulaic\nformulaically\nformularies\nformularization\nformularizations\nformularize\nformularized\nformularizer\nformularizers\nformularizes\nformularizing\nformulary\nformulas\nformulate\nformulated\nformulates\nformulating\nformulation\nformulations\nformulator\nformulators\nformulization\nformulizations\nformulize\nformulized\nformulizes\nformulizing\nformyl\nformyls\nfornical\nfornicate\nfornicated\nfornicates\nfornicating\nfornication\nfornications\nfornicator\nfornicators\nfornices\nfornix\nforrader\nforrit\nforsake\nforsaken\nforsaker\nforsakers\nforsakes\nforsaking\nforsook\nforsooth\nforspent\nforswear\nforswearing\nforswears\nforswore\nforsworn\nforsythia\nforsythias\nfort\nforte\nfortes\nforth\nforthcoming\nforthright\nforthrightly\nforthrightness\nforthwith\nforties\nfortieth\nfortieths\nfortification\nfortifications\nfortified\nfortifier\nfortifiers\nfortifies\nfortify\nfortifying\nfortis\nfortitude\nfortitudes\nfortnight\nfortnightly\nfortnights\nfortress\nfortressed\nfortresses\nfortressing\nforts\nfortuities\nfortuitous\nfortuitously\nfortuitousness\nfortuity\nfortunate\nfortunately\nfortunateness\nfortune\nfortuned\nfortunes\nfortuning\nforty\nforum\nforums\nforward\nforwarded\nforwarder\nforwarders\nforwardest\nforwarding\nforwardly\nforwardness\nforwards\nforwent\nforwhy\nforworn\nforzando\nforzandos\nfoss\nfossa\nfossae\nfossate\nfosse\nfosses\nfossette\nfossettes\nfossick\nfossicked\nfossicking\nfossicks\nfossil\nfossilization\nfossilizations\nfossilize\nfossilized\nfossilizes\nfossilizing\nfossils\nfoster\nfosterage\nfosterages\nfostered\nfosterer\nfosterers\nfostering\nfosterling\nfosterlings\nfosters\nfou\nfought\nfoughten\nfoul\nfoulard\nfoulards\nfouled\nfouler\nfoulest\nfouling\nfoulings\nfoully\nfoulmouthed\nfoulness\nfoulnesses\nfouls\nfound\nfoundation\nfoundational\nfoundationally\nfoundations\nfounded\nfounder\nfoundered\nfoundering\nfounders\nfounding\nfoundling\nfoundlings\nfoundries\nfoundry\nfounds\nfount\nfountain\nfountained\nfountainhead\nfountainheads\nfountaining\nfountains\nfounts\nfour\nfourchee\nfourfold\nfourgon\nfourgons\nfours\nfourscore\nfoursome\nfoursomes\nfoursquare\nfourteen\nfourteens\nfourteenth\nfourteenths\nfourth\nfourthly\nfourths\nfovea\nfoveae\nfoveal\nfoveate\nfoveated\nfoveola\nfoveolae\nfoveolar\nfoveolas\nfoveole\nfoveoles\nfoveolet\nfoveolets\nfowl\nfowled\nfowler\nfowlers\nfowling\nfowlings\nfowlpox\nfowlpoxes\nfowls\nfox\nfoxed\nfoxes\nfoxfire\nfoxfires\nfoxfish\nfoxfishes\nfoxglove\nfoxgloves\nfoxhole\nfoxholes\nfoxhound\nfoxhounds\nfoxier\nfoxiest\nfoxily\nfoxiness\nfoxinesses\nfoxing\nfoxings\nfoxlike\nfoxskin\nfoxskins\nfoxtail\nfoxtails\nfoxy\nfoy\nfoyer\nfoyers\nfoys\nfozier\nfoziest\nfoziness\nfozinesses\nfozy\nfracas\nfracases\nfracted\nfraction\nfractional\nfractionalization\nfractionalizations\nfractionalize\nfractionalized\nfractionalizes\nfractionalizing\nfractionally\nfractionate\nfractionated\nfractionates\nfractionating\nfractionation\nfractionations\nfractioned\nfractioning\nfractions\nfractious\nfractiously\nfractiousness\nfractur\nfracture\nfractured\nfractures\nfracturing\nfracturs\nfrae\nfraena\nfraenum\nfraenums\nfrag\nfragged\nfragging\nfraggings\nfragile\nfragility\nfragment\nfragmental\nfragmentally\nfragmentary\nfragmentation\nfragmentations\nfragmented\nfragmenting\nfragmentize\nfragmentized\nfragmentizes\nfragmentizing\nfragments\nfragrance\nfragrances\nfragrant\nfragrantly\nfrags\nfrail\nfrailer\nfrailest\nfrailly\nfrailness\nfrails\nfrailties\nfrailty\nfraise\nfraises\nfraktur\nfrakturs\nframable\nframe\nframed\nframer\nframers\nframes\nframework\nframeworks\nframing\nfranc\nfranchise\nfranchised\nfranchisee\nfranchisees\nfranchises\nfranchising\nfrancium\nfranciums\nfrancs\nfrangibility\nfrangible\nfrangipani\nfrangipanis\nfrank\nfranked\nfranker\nfrankers\nfrankest\nfrankfort\nfrankforter\nfrankforters\nfrankforts\nfrankfurt\nfrankfurter\nfrankfurters\nfrankfurts\nfrankincense\nfrankincenses\nfranking\nfranklin\nfranklins\nfrankly\nfrankness\nfranks\nfrantic\nfrantically\nfranticly\nfranticness\nfrap\nfrappe\nfrapped\nfrappes\nfrapping\nfraps\nfrat\nfrater\nfraternal\nfraternalism\nfraternalisms\nfraternally\nfraternities\nfraternity\nfraternization\nfraternizations\nfraternize\nfraternized\nfraternizer\nfraternizers\nfraternizes\nfraternizing\nfraters\nfratricidal\nfratricide\nfratricides\nfrats\nfraud\nfrauds\nfraudulent\nfraudulently\nfraught\nfraughted\nfraughting\nfraughts\nfraulein\nfrauleins\nfray\nfrayed\nfraying\nfrayings\nfrays\nfrazzle\nfrazzled\nfrazzles\nfrazzling\nfreak\nfreaked\nfreakier\nfreakiest\nfreakily\nfreakiness\nfreaking\nfreakish\nfreakishly\nfreakishness\nfreakout\nfreakouts\nfreaks\nfreaky\nfreckle\nfreckled\nfreckles\nfrecklier\nfreckliest\nfreckling\nfreckly\nfree\nfreebee\nfreebees\nfreebie\nfreebies\nfreeboot\nfreebooted\nfreebooter\nfreebooters\nfreebooting\nfreeboots\nfreeborn\nfreed\nfreedman\nfreedmen\nfreedom\nfreedoms\nfreedwoman\nfreedwomen\nfreeform\nfreehand\nfreehanded\nfreehandedly\nfreehandedness\nfreehold\nfreeholder\nfreeholders\nfreeholds\nfreeing\nfreeload\nfreeloaded\nfreeloader\nfreeloaders\nfreeloading\nfreeloads\nfreely\nfreeman\nfreemasonry\nfreemen\nfreeness\nfreenesses\nfreer\nfreers\nfrees\nfreesia\nfreesias\nfreest\nfreestanding\nfreestone\nfreestones\nfreethinker\nfreethinkers\nfreethinking\nfreeway\nfreeways\nfreewheel\nfreewheeled\nfreewheeling\nfreewheels\nfreewill\nfreeze\nfreezer\nfreezers\nfreezes\nfreezing\nfreight\nfreighted\nfreighter\nfreighters\nfreighting\nfreights\nfremd\nfremitus\nfremituses\nfrena\nfrench\nfrenched\nfrenches\nfrenching\nfrenetic\nfrenetically\nfrenetics\nfrenula\nfrenulum\nfrenum\nfrenums\nfrenzied\nfrenziedly\nfrenzies\nfrenzily\nfrenzy\nfrenzying\nfrequencies\nfrequency\nfrequent\nfrequentation\nfrequentations\nfrequented\nfrequenter\nfrequenters\nfrequentest\nfrequenting\nfrequently\nfrequentness\nfrequents\nfrere\nfreres\nfresco\nfrescoed\nfrescoer\nfrescoers\nfrescoes\nfrescoing\nfrescos\nfresh\nfreshed\nfreshen\nfreshened\nfreshener\nfresheners\nfreshening\nfreshens\nfresher\nfreshes\nfreshest\nfreshet\nfreshets\nfreshing\nfreshly\nfreshman\nfreshmen\nfreshness\nfreshwater\nfreshwaters\nfresnel\nfresnels\nfret\nfretful\nfretfully\nfretfulness\nfretless\nfrets\nfretsaw\nfretsaws\nfretsome\nfretted\nfrettier\nfrettiest\nfretting\nfretty\nfretwork\nfretworks\nfriability\nfriable\nfriableness\nfriar\nfriaries\nfriarly\nfriars\nfriary\nfribble\nfribbled\nfribbler\nfribblers\nfribbles\nfribbling\nfricando\nfricandoes\nfricassee\nfricasseed\nfricasseeing\nfricassees\nfriction\nfrictional\nfrictionally\nfrictionless\nfrictions\nfridge\nfridges\nfried\nfriend\nfriended\nfriending\nfriendless\nfriendlier\nfriendlies\nfriendliest\nfriendliness\nfriendly\nfriends\nfriendship\nfriendships\nfrier\nfriers\nfries\nfrieze\nfriezes\nfrig\nfrigate\nfrigates\nfrigged\nfrigging\nfright\nfrighted\nfrighten\nfrightened\nfrightening\nfrighteningly\nfrightens\nfrightful\nfrightfully\nfrightfulness\nfrighting\nfrights\nfrigid\nfrigidity\nfrigidly\nfrigidness\nfrijol\nfrijole\nfrijoles\nfrill\nfrilled\nfriller\nfrillers\nfrillier\nfrilliest\nfrilling\nfrillings\nfrills\nfrilly\nfringe\nfringed\nfringes\nfringier\nfringiest\nfringing\nfringy\nfripperies\nfrippery\nfrise\nfrises\nfrisette\nfrisettes\nfriseur\nfriseurs\nfrisk\nfrisked\nfrisker\nfriskers\nfrisket\nfriskets\nfriskier\nfriskiest\nfriskily\nfriskiness\nfrisking\nfrisks\nfrisky\nfrisson\nfrissons\nfrit\nfrith\nfriths\nfrits\nfritt\nfritted\nfritter\nfrittered\nfritterer\nfritterers\nfrittering\nfritters\nfritting\nfritts\nfritz\nfrivol\nfrivoled\nfrivoler\nfrivolers\nfrivoling\nfrivolities\nfrivolity\nfrivolled\nfrivoller\nfrivollers\nfrivolling\nfrivolous\nfrivolously\nfrivolousness\nfrivols\nfriz\nfrized\nfrizer\nfrizers\nfrizes\nfrizette\nfrizettes\nfrizing\nfrizz\nfrizzed\nfrizzer\nfrizzers\nfrizzes\nfrizzier\nfrizziest\nfrizzily\nfrizzing\nfrizzle\nfrizzled\nfrizzler\nfrizzlers\nfrizzles\nfrizzlier\nfrizzliest\nfrizzling\nfrizzly\nfrizzy\nfro\nfrock\nfrocked\nfrocking\nfrocks\nfroe\nfroes\nfrog\nfrogeye\nfrogeyed\nfrogeyes\nfrogfish\nfrogfishes\nfrogged\nfroggier\nfroggiest\nfrogging\nfroggy\nfroglike\nfrogman\nfrogmen\nfrogs\nfrolic\nfrolicked\nfrolicking\nfrolicky\nfrolics\nfrolicsome\nfrom\nfromage\nfromages\nfromenties\nfromenty\nfrond\nfronded\nfrondeur\nfrondeurs\nfrondose\nfronds\nfrons\nfront\nfrontage\nfrontages\nfrontal\nfrontally\nfrontals\nfronted\nfronter\nfrontes\nfrontier\nfrontiers\nfrontiersman\nfrontiersmen\nfronting\nfrontispiece\nfrontispieces\nfrontlet\nfrontlets\nfrontline\nfronton\nfrontons\nfronts\nfrore\nfrosh\nfrost\nfrostbit\nfrostbite\nfrostbites\nfrostbiting\nfrostbitten\nfrosted\nfrosteds\nfrostier\nfrostiest\nfrostily\nfrostiness\nfrosting\nfrostings\nfrosts\nfrosty\nfroth\nfrothed\nfrothier\nfrothiest\nfrothily\nfrothiness\nfrothing\nfroths\nfrothy\nfrottage\nfrottages\nfrotteur\nfrotteurs\nfroufrou\nfroufrous\nfrounce\nfrounced\nfrounces\nfrouncing\nfrouzier\nfrouziest\nfrouzy\nfrow\nfroward\nfrowardly\nfrowardness\nfrown\nfrowned\nfrowner\nfrowners\nfrowning\nfrowningly\nfrowns\nfrows\nfrowsier\nfrowsiest\nfrowstier\nfrowstiest\nfrowsty\nfrowsy\nfrowzier\nfrowziest\nfrowzily\nfrowzy\nfroze\nfrozen\nfrozenly\nfrozenness\nfructification\nfructifications\nfructified\nfructifies\nfructify\nfructifying\nfructose\nfructoses\nfrug\nfrugal\nfrugality\nfrugally\nfrugged\nfrugging\nfrugs\nfruit\nfruitage\nfruitages\nfruitcake\nfruitcakes\nfruited\nfruiter\nfruiters\nfruitful\nfruitfuller\nfruitfullest\nfruitfully\nfruitfulness\nfruitier\nfruitiest\nfruitiness\nfruiting\nfruition\nfruitions\nfruitless\nfruitlessly\nfruitlessness\nfruitlet\nfruitlets\nfruits\nfruity\nfrumenties\nfrumenty\nfrump\nfrumpier\nfrumpiest\nfrumpily\nfrumpish\nfrumps\nfrumpy\nfrusta\nfrustrate\nfrustrated\nfrustrates\nfrustrating\nfrustratingly\nfrustration\nfrustrations\nfrustule\nfrustules\nfrustum\nfrustums\nfry\nfryer\nfryers\nfrying\nfrypan\nfrypans\nfub\nfubbed\nfubbing\nfubs\nfubsier\nfubsiest\nfubsy\nfuchsia\nfuchsias\nfuchsin\nfuchsine\nfuchsines\nfuchsins\nfuci\nfuck\nfucked\nfucking\nfucks\nfucoid\nfucoidal\nfucoids\nfucose\nfucoses\nfucous\nfucus\nfucuses\nfud\nfuddle\nfuddled\nfuddles\nfuddling\nfudge\nfudged\nfudges\nfudging\nfuds\nfuehrer\nfuehrers\nfuel\nfueled\nfueler\nfuelers\nfueling\nfuelled\nfueller\nfuellers\nfuelling\nfuels\nfug\nfugacities\nfugacity\nfugal\nfugally\nfugato\nfugatos\nfugged\nfuggier\nfuggiest\nfugging\nfuggy\nfugio\nfugios\nfugitive\nfugitively\nfugitiveness\nfugitives\nfugle\nfugled\nfugleman\nfuglemen\nfugles\nfugling\nfugs\nfugu\nfugue\nfugued\nfugues\nfuguing\nfuguist\nfuguists\nfugus\nfuhrer\nfuhrers\nfuji\nfujis\nfulcra\nfulcrum\nfulcrums\nfulfil\nfulfill\nfulfilled\nfulfiller\nfulfillers\nfulfilling\nfulfillment\nfulfillments\nfulfills\nfulfils\nfulgent\nfulgid\nfulham\nfulhams\nfull\nfullam\nfullams\nfullback\nfullbacks\nfulled\nfuller\nfullered\nfulleries\nfullering\nfullers\nfullery\nfullest\nfullface\nfullfaces\nfulling\nfullness\nfullnesses\nfulls\nfully\nfulmar\nfulmars\nfulminate\nfulminated\nfulminates\nfulminating\nfulmination\nfulminations\nfulminator\nfulminators\nfulmine\nfulmined\nfulmines\nfulminic\nfulmining\nfulness\nfulnesses\nfulsome\nfulsomely\nfulsomeness\nfulvous\nfumarase\nfumarases\nfumarate\nfumarates\nfumaric\nfumarole\nfumaroles\nfumatories\nfumatory\nfumble\nfumbled\nfumbler\nfumblers\nfumbles\nfumbling\nfumblingly\nfume\nfumed\nfumeless\nfumelike\nfumer\nfumers\nfumes\nfumet\nfumets\nfumette\nfumettes\nfumier\nfumiest\nfumigant\nfumigants\nfumigate\nfumigated\nfumigates\nfumigating\nfumigation\nfumigations\nfumigator\nfumigators\nfuming\nfumitories\nfumitory\nfumuli\nfumulus\nfumy\nfun\nfunction\nfunctional\nfunctionalism\nfunctionalist\nfunctionalistic\nfunctionalists\nfunctionality\nfunctionally\nfunctionaries\nfunctionary\nfunctioned\nfunctioning\nfunctionless\nfunctions\nfunctor\nfunctors\nfund\nfundament\nfundamental\nfundamentalism\nfundamentalisms\nfundamentalist\nfundamentalists\nfundamentally\nfundamentals\nfundaments\nfunded\nfundi\nfundic\nfunding\nfunds\nfundus\nfuneral\nfunerals\nfunerary\nfunereal\nfunereally\nfunest\nfunfair\nfunfairs\nfungal\nfungals\nfungi\nfungible\nfungibles\nfungic\nfungicidal\nfungicidally\nfungicide\nfungicides\nfungo\nfungoes\nfungoid\nfungoids\nfungous\nfungus\nfunguses\nfunicle\nfunicles\nfuniculi\nfunk\nfunked\nfunker\nfunkers\nfunkia\nfunkias\nfunkier\nfunkiest\nfunkiness\nfunking\nfunks\nfunky\nfunned\nfunnel\nfunneled\nfunneling\nfunnelled\nfunnelling\nfunnels\nfunnier\nfunnies\nfunniest\nfunnily\nfunniness\nfunning\nfunny\nfunnyman\nfunnymen\nfuns\nfur\nfuran\nfurane\nfuranes\nfuranose\nfuranoses\nfurans\nfurbelow\nfurbelowed\nfurbelowing\nfurbelows\nfurbish\nfurbished\nfurbisher\nfurbishers\nfurbishes\nfurbishing\nfurcate\nfurcated\nfurcates\nfurcating\nfurcraea\nfurcraeas\nfurcula\nfurculae\nfurcular\nfurculum\nfurfur\nfurfural\nfurfurals\nfurfuran\nfurfurans\nfurfures\nfuribund\nfuries\nfurioso\nfurious\nfuriously\nfurl\nfurlable\nfurled\nfurler\nfurlers\nfurless\nfurling\nfurlong\nfurlongs\nfurlough\nfurloughed\nfurloughing\nfurloughs\nfurls\nfurmenties\nfurmenty\nfurmeties\nfurmety\nfurmities\nfurmity\nfurnace\nfurnaced\nfurnaces\nfurnacing\nfurnish\nfurnished\nfurnisher\nfurnishers\nfurnishes\nfurnishing\nfurnishings\nfurniture\nfuror\nfurore\nfurores\nfurors\nfurred\nfurrier\nfurrieries\nfurriers\nfurriery\nfurriest\nfurrily\nfurriner\nfurriners\nfurring\nfurrings\nfurrow\nfurrowed\nfurrower\nfurrowers\nfurrowing\nfurrows\nfurrowy\nfurry\nfurs\nfurther\nfurtherance\nfurtherances\nfurthered\nfurtherer\nfurtherers\nfurthering\nfurthermore\nfurthermost\nfurthers\nfurthest\nfurtive\nfurtively\nfurtiveness\nfuruncle\nfuruncles\nfury\nfurze\nfurzes\nfurzier\nfurziest\nfurzy\nfusain\nfusains\nfuscous\nfuse\nfused\nfusee\nfusees\nfusel\nfuselage\nfuselages\nfuseless\nfusels\nfuses\nfusibility\nfusible\nfusibly\nfusiform\nfusil\nfusile\nfusileer\nfusileers\nfusilier\nfusiliers\nfusillade\nfusillades\nfusils\nfusing\nfusion\nfusions\nfuss\nfussbudget\nfussbudgets\nfussed\nfusser\nfussers\nfusses\nfussier\nfussiest\nfussily\nfussiness\nfussing\nfusspot\nfusspots\nfussy\nfustian\nfustians\nfustic\nfustics\nfustier\nfustiest\nfustily\nfusty\nfutharc\nfutharcs\nfuthark\nfutharks\nfuthorc\nfuthorcs\nfuthork\nfuthorks\nfuties\nfutile\nfutilely\nfutileness\nfutilitarian\nfutilitarianism\nfutilitarians\nfutilities\nfutility\nfuton\nfuttock\nfuttocks\nfutural\nfuture\nfutureless\nfutures\nfuturism\nfuturisms\nfuturist\nfuturistic\nfuturistically\nfuturists\nfuturities\nfuturity\nfuturological\nfuturologist\nfuturologists\nfuturology\nfutz\nfuze\nfuzed\nfuzee\nfuzees\nfuzes\nfuzil\nfuzils\nfuzing\nfuzz\nfuzzed\nfuzzes\nfuzzier\nfuzziest\nfuzzily\nfuzzing\nfuzzy\nfyce\nfyces\nfyke\nfykes\nfylfot\nfylfots\nfytte\nfyttes\ngab\ngabardine\ngabardines\ngabbard\ngabbards\ngabbart\ngabbarts\ngabbed\ngabber\ngabbers\ngabbier\ngabbiest\ngabbing\ngabble\ngabbled\ngabbler\ngabblers\ngabbles\ngabbling\ngabbro\ngabbroic\ngabbroid\ngabbros\ngabby\ngabelle\ngabelled\ngabelles\ngabfest\ngabfests\ngabies\ngabion\ngabions\ngable\ngabled\ngables\ngabling\ngaboon\ngaboons\ngabs\ngaby\ngad\ngadabout\ngadabouts\ngadarene\ngadded\ngadder\ngadders\ngaddi\ngadding\ngaddis\ngadflies\ngadfly\ngadget\ngadgeteer\ngadgeteers\ngadgetries\ngadgetry\ngadgets\ngadgety\ngadi\ngadid\ngadids\ngadis\ngadoid\ngadoids\ngadroon\ngadroons\ngads\ngadwall\ngadwalls\ngadzooks\ngae\ngaed\ngaen\ngaes\ngaff\ngaffe\ngaffed\ngaffer\ngaffers\ngaffes\ngaffing\ngaffs\ngag\ngaga\ngage\ngaged\ngager\ngagers\ngages\ngagged\ngagger\ngaggers\ngagging\ngaggle\ngaggled\ngaggles\ngaggling\ngaging\ngagman\ngagmen\ngags\ngagster\ngagsters\ngahnite\ngahnites\ngaieties\ngaiety\ngaily\ngain\ngainable\ngained\ngainer\ngainers\ngainful\ngainfully\ngainfulness\ngaining\ngainless\ngainlier\ngainliest\ngainly\ngains\ngainsaid\ngainsay\ngainsayer\ngainsayers\ngainsaying\ngainsays\ngainst\ngait\ngaited\ngaiter\ngaiters\ngaiting\ngaits\ngal\ngala\ngalactic\ngalactose\ngalago\ngalagos\ngalah\ngalahs\ngalangal\ngalangals\ngalas\ngalatea\ngalateas\ngalavant\ngalavanted\ngalavanting\ngalavants\ngalax\ngalaxes\ngalaxies\ngalaxy\ngalbanum\ngalbanums\ngale\ngalea\ngaleae\ngaleas\ngaleate\ngaleated\ngalena\ngalenas\ngalenic\ngalenical\ngalenicals\ngalenite\ngalenites\ngalere\ngaleres\ngales\ngalilee\ngalilees\ngaliot\ngaliots\ngalipot\ngalipots\ngalivant\ngalivanted\ngalivanting\ngalivants\ngall\ngallant\ngallanted\ngallanting\ngallantly\ngallantries\ngallantry\ngallants\ngallate\ngallates\ngalleass\ngalleasses\ngalled\ngallein\ngalleins\ngalleon\ngalleons\ngalleried\ngalleries\ngallery\ngallerying\ngalleta\ngalletas\ngalley\ngalleys\ngallflies\ngallfly\ngalliard\ngalliards\ngalliass\ngalliasses\ngallic\ngallican\ngallied\ngallies\ngalling\ngalliot\ngalliots\ngallipot\ngallipots\ngallium\ngalliums\ngallivant\ngallivanted\ngallivanting\ngallivants\ngallnut\ngallnuts\ngallon\ngallonage\ngallons\ngalloon\ngalloons\ngalloot\ngalloots\ngallop\ngallopade\ngallopades\ngalloped\ngalloper\ngallopers\ngalloping\ngallops\ngallous\ngallows\ngallowses\ngalls\ngallstone\ngallstones\ngallus\ngallused\ngalluses\ngally\ngallying\ngaloot\ngaloots\ngalop\ngalopade\ngalopades\ngalops\ngalore\ngalores\ngalosh\ngaloshe\ngaloshed\ngaloshes\ngals\ngalumph\ngalumphed\ngalumphing\ngalumphs\ngalvanic\ngalvanically\ngalvanism\ngalvanization\ngalvanize\ngalvanized\ngalvanizer\ngalvanizers\ngalvanizes\ngalvanizing\ngalvanometer\ngalvanometers\ngalvanometric\ngalvanometry\ngalyac\ngalyacs\ngalyak\ngalyaks\ngam\ngama\ngamas\ngamashes\ngamay\ngamb\ngamba\ngambade\ngambades\ngambado\ngambadoes\ngambados\ngambas\ngambe\ngambes\ngambeson\ngambesons\ngambia\ngambias\ngambier\ngambiers\ngambir\ngambirs\ngambit\ngambits\ngamble\ngambled\ngambler\ngamblers\ngambles\ngambling\ngamboge\ngamboges\ngambol\ngamboled\ngamboling\ngambolled\ngambolling\ngambols\ngambrel\ngambrels\ngambs\ngambusia\ngambusias\ngame\ngamecock\ngamecocks\ngamed\ngamekeeper\ngamekeepers\ngamelan\ngamelans\ngamelike\ngamely\ngameness\ngamenesses\ngamer\ngames\ngamesmanship\ngamesome\ngamesomely\ngamesomeness\ngamest\ngamester\ngamesters\ngamete\ngametes\ngametic\ngamey\ngamic\ngamier\ngamiest\ngamily\ngamin\ngamine\ngamines\ngaminess\ngaminesses\ngaming\ngamings\ngamins\ngamma\ngammadia\ngammas\ngammed\ngammer\ngammers\ngamming\ngammon\ngammoned\ngammoner\ngammoners\ngammoning\ngammons\ngammy\ngamodeme\ngamodemes\ngamp\ngamps\ngams\ngamut\ngamuts\ngamy\ngan\ngander\ngandered\ngandering\nganders\ngane\nganef\nganefs\nganev\nganevs\ngang\nganged\nganger\ngangers\nganging\ngangland\nganglands\nganglia\nganglial\ngangliar\nganglier\ngangliest\ngangling\nganglion\nganglions\ngangly\ngangplank\ngangplanks\ngangplow\ngangplows\ngangrel\ngangrels\ngangrene\ngangrened\ngangrenes\ngangrening\ngangrenous\ngangs\ngangster\ngangsters\ngangue\ngangues\ngangway\ngangways\nganister\nganisters\nganja\nganjas\ngannet\ngannets\nganof\nganofs\nganoid\nganoids\ngantlet\ngantleted\ngantleting\ngantlets\ngantline\ngantlines\ngantlope\ngantlopes\ngantries\ngantry\nganymede\nganymedes\ngaol\ngaoled\ngaoler\ngaolers\ngaoling\ngaols\ngap\ngape\ngaped\ngaper\ngapers\ngapes\ngapeseed\ngapeseeds\ngapeworm\ngapeworms\ngaping\ngapingly\ngaposis\ngaposises\ngapped\ngappier\ngappiest\ngapping\ngappy\ngaps\ngapy\ngar\ngarage\ngaraged\ngarages\ngaraging\ngarb\ngarbage\ngarbages\ngarbanzo\ngarbanzos\ngarbed\ngarbing\ngarble\ngarbled\ngarbler\ngarblers\ngarbles\ngarbless\ngarbling\ngarboard\ngarboards\ngarboil\ngarboils\ngarbs\ngarcon\ngarcons\ngardant\ngarden\ngardened\ngardener\ngardeners\ngardenia\ngardenias\ngardening\ngardens\ngardyloo\ngarfish\ngarfishes\ngarganey\ngarganeys\ngargantuan\ngarget\ngargets\ngargety\ngargle\ngargled\ngargler\ngarglers\ngargles\ngargling\ngargoyle\ngargoyled\ngargoyles\ngarish\ngarishly\ngarishness\ngarland\ngarlanded\ngarlanding\ngarlands\ngarlic\ngarlicky\ngarlics\ngarment\ngarmented\ngarmenting\ngarments\ngarner\ngarnered\ngarnering\ngarners\ngarnet\ngarnets\ngarni\ngarnish\ngarnished\ngarnishee\ngarnisheed\ngarnisheeing\ngarnishees\ngarnishes\ngarnishing\ngarnishment\ngarnishments\ngarniture\ngarnitures\ngarote\ngaroted\ngarotes\ngaroting\ngarotte\ngarotted\ngarotter\ngarotters\ngarottes\ngarotting\ngarpike\ngarpikes\ngarred\ngarret\ngarrets\ngarring\ngarrison\ngarrisoned\ngarrisoning\ngarrisons\ngarron\ngarrons\ngarrote\ngarroted\ngarroter\ngarroters\ngarrotes\ngarroting\ngarrotte\ngarrotted\ngarrottes\ngarrotting\ngarrulity\ngarrulous\ngarrulously\ngarrulousness\ngars\ngarter\ngartered\ngartering\ngarters\ngarth\ngarths\ngarvey\ngarveys\ngas\ngasalier\ngasaliers\ngasbag\ngasbags\ngascon\ngasconade\ngasconaded\ngasconader\ngasconaders\ngasconades\ngasconading\ngascons\ngaselier\ngaseliers\ngaseous\ngases\ngash\ngashed\ngasher\ngashes\ngashest\ngashing\ngashouse\ngashouses\ngasification\ngasifications\ngasified\ngasifier\ngasifiers\ngasifies\ngasiform\ngasify\ngasifying\ngasket\ngaskets\ngaskin\ngasking\ngaskings\ngaskins\ngasless\ngaslight\ngaslights\ngaslit\ngasman\ngasmen\ngasogene\ngasogenes\ngasolene\ngasolenes\ngasolier\ngasoliers\ngasoline\ngasolines\ngasolinic\ngasometer\ngasometers\ngasp\ngasped\ngasper\ngaspers\ngasping\ngaspingly\ngasps\ngassed\ngasser\ngassers\ngasses\ngassier\ngassiest\ngassing\ngassings\ngassy\ngast\ngasted\ngastight\ngasting\ngastness\ngastnesses\ngastraea\ngastraeas\ngastral\ngastrea\ngastreas\ngastric\ngastrin\ngastrins\ngastroenterologist\ngastroenterologists\ngastroenterology\ngastronome\ngastronomes\ngastronomic\ngastronomical\ngastronomically\ngastronomist\ngastronomists\ngastronomy\ngastropod\ngastropods\ngastrula\ngastrulae\ngastrulas\ngastrulation\ngastrulations\ngasts\ngasworks\ngat\ngate\ngatecrasher\ngatecrashers\ngated\ngatefold\ngatefolds\ngateless\ngatelike\ngateman\ngatemen\ngatepost\ngateposts\ngates\ngateway\ngateways\ngather\ngathered\ngatherer\ngatherers\ngathering\ngatherings\ngathers\ngating\ngator\ngats\ngauche\ngauchely\ngaucheness\ngaucher\ngaucherie\ngaucheries\ngauchest\ngaucho\ngauchos\ngaud\ngauderies\ngaudery\ngaudier\ngaudies\ngaudiest\ngaudily\ngaudiness\ngauds\ngaudy\ngauffer\ngauffered\ngauffering\ngauffers\ngauge\ngaugeable\ngaugeably\ngauged\ngauger\ngaugers\ngauges\ngauging\ngault\ngaults\ngaum\ngaumed\ngauming\ngaums\ngaun\ngaunt\ngaunter\ngauntest\ngauntlet\ngauntleted\ngauntleting\ngauntlets\ngauntly\ngauntness\ngauntries\ngauntry\ngaur\ngaurs\ngauss\ngausses\ngauze\ngauzelike\ngauzes\ngauzier\ngauziest\ngauzily\ngauzy\ngavage\ngavages\ngave\ngavel\ngaveled\ngaveling\ngavelled\ngavelling\ngavelock\ngavelocks\ngavels\ngavial\ngavials\ngavot\ngavots\ngavotte\ngavotted\ngavottes\ngavotting\ngawk\ngawked\ngawker\ngawkers\ngawkier\ngawkies\ngawkiest\ngawkily\ngawking\ngawkish\ngawkishly\ngawkishness\ngawks\ngawky\ngawp\ngawps\ngawsie\ngawsy\ngay\ngayal\ngayals\ngayer\ngayest\ngayeties\ngayety\ngayly\ngayness\ngaynesses\ngays\ngaywings\ngazabo\ngazaboes\ngazabos\ngaze\ngazebo\ngazeboes\ngazebos\ngazed\ngazelle\ngazelles\ngazer\ngazers\ngazes\ngazette\ngazetted\ngazetteer\ngazetteers\ngazettes\ngazetting\ngazing\ngazogene\ngazogenes\ngazpacho\ngazpachos\ngear\ngearbox\ngearboxes\ngearcase\ngearcases\ngeared\ngearing\ngearings\ngearless\ngears\ngearshift\ngearshifts\ngearwheel\ngearwheels\ngeck\ngecked\ngecking\ngecko\ngeckoes\ngeckos\ngecks\nged\ngeds\ngee\ngeed\ngeegaw\ngeegaws\ngeeing\ngeek\ngeeks\ngeeky\ngeepound\ngeepounds\ngees\ngeese\ngeest\ngeests\ngeezer\ngeezers\ngeisha\ngeishas\ngel\ngelable\ngelada\ngeladas\ngelant\ngelants\ngelate\ngelated\ngelates\ngelatin\ngelatine\ngelatines\ngelating\ngelatinization\ngelatinizations\ngelatinize\ngelatinized\ngelatinizes\ngelatinizing\ngelatinous\ngelatinously\ngelatinousness\ngelatins\ngelation\ngelations\ngeld\ngelded\ngelder\ngelders\ngelding\ngeldings\ngelds\ngelee\ngelees\ngelid\ngelidities\ngelidity\ngelidly\ngellant\ngellants\ngelled\ngelling\ngels\ngelsemia\ngelt\ngelts\ngem\ngeminal\ngeminate\ngeminated\ngeminates\ngeminating\ngemination\ngeminations\ngemlike\ngemma\ngemmae\ngemmate\ngemmated\ngemmates\ngemmating\ngemmed\ngemmier\ngemmiest\ngemmily\ngemming\ngemmule\ngemmules\ngemmy\ngemologies\ngemology\ngemot\ngemote\ngemotes\ngemots\ngems\ngemsbok\ngemsboks\ngemsbuck\ngemsbucks\ngemstone\ngemstones\ngendarme\ngendarmes\ngender\ngendered\ngendering\ngenders\ngene\ngenealogical\ngenealogically\ngenealogies\ngenealogist\ngenealogists\ngenealogy\ngenera\ngeneral\ngeneralissimo\ngeneralissimos\ngeneralist\ngeneralists\ngeneralities\ngenerality\ngeneralizable\ngeneralization\ngeneralizations\ngeneralize\ngeneralized\ngeneralizer\ngeneralizers\ngeneralizes\ngeneralizing\ngenerally\ngenerals\ngenerate\ngenerated\ngenerates\ngenerating\ngeneration\ngenerational\ngenerations\ngenerative\ngenerator\ngenerators\ngeneric\ngenerically\ngenerics\ngenerosities\ngenerosity\ngenerous\ngenerously\ngenerousness\ngenes\ngeneses\ngenesis\ngenet\ngenetic\ngenetical\ngenetically\ngeneticist\ngeneticists\ngenetics\ngenets\ngenette\ngenettes\ngeneva\ngenevas\ngenial\ngenialities\ngeniality\ngenially\ngenic\ngenie\ngenies\ngenii\ngenip\ngenipap\ngenipaps\ngenips\ngenital\ngenitalia\ngenitals\ngenitival\ngenitivally\ngenitive\ngenitives\ngenitor\ngenitors\ngeniture\ngenitures\ngenius\ngeniuses\ngenoa\ngenoas\ngenocidal\ngenocide\ngenocides\ngenom\ngenome\ngenomes\ngenomic\ngenoms\ngenotype\ngenotypes\ngenotypic\ngenotypical\ngenotypically\ngenre\ngenres\ngenro\ngenros\ngens\ngenseng\ngensengs\ngent\ngenteel\ngenteeler\ngenteelest\ngenteelism\ngenteelisms\ngenteelly\ngenteelness\ngentes\ngentian\ngentians\ngentil\ngentile\ngentiles\ngentilities\ngentility\ngentle\ngentled\ngentleman\ngentlemanly\ngentlemen\ngentleness\ngentler\ngentles\ngentlest\ngentlewoman\ngentlewomen\ngentling\ngently\ngentrice\ngentrices\ngentries\ngentry\ngents\ngenu\ngenua\ngenuflect\ngenuflected\ngenuflecting\ngenuflection\ngenuflections\ngenuflects\ngenuine\ngenuinely\ngenuineness\ngenus\ngenuses\ngeocentric\ngeocentrically\ngeode\ngeodes\ngeodesic\ngeodesics\ngeodesies\ngeodesist\ngeodesists\ngeodesy\ngeodetic\ngeodetical\ngeodic\ngeoduck\ngeoducks\ngeognosies\ngeognosy\ngeographer\ngeographers\ngeographic\ngeographical\ngeographically\ngeographies\ngeography\ngeoid\ngeoidal\ngeoids\ngeologer\ngeologers\ngeologic\ngeological\ngeologically\ngeologies\ngeologist\ngeologists\ngeologize\ngeologized\ngeologizes\ngeologizing\ngeology\ngeomancies\ngeomancy\ngeometer\ngeometers\ngeometric\ngeometrical\ngeometrically\ngeometrician\ngeometricians\ngeometries\ngeometrize\ngeometrized\ngeometrizes\ngeometrizing\ngeometry\ngeophagies\ngeophagy\ngeophone\ngeophones\ngeophysicist\ngeophysicists\ngeophyte\ngeophytes\ngeopolitical\ngeopolitically\ngeopolitician\ngeopoliticians\ngeopolitics\ngeoponic\ngeorgic\ngeorgics\ngeotaxes\ngeotaxis\ngeotropic\ngeotropically\ngeotropism\ngeotropisms\ngerah\ngerahs\ngeranial\ngeranials\ngeraniol\ngeraniols\ngeranium\ngeraniums\ngerardia\ngerardias\ngerbera\ngerberas\ngerbil\ngerbille\ngerbilles\ngerbils\ngerent\ngerents\ngerenuk\ngerenuks\ngeriatric\ngeriatrician\ngeriatricians\ngeriatrics\ngeriatrist\ngeriatrists\ngerm\ngerman\ngermander\ngermanders\ngermane\ngermanely\ngermanic\ngermanium\ngermanization\ngermanizations\ngermanize\ngermanized\ngermanizes\ngermanizing\ngermanophobe\ngermanophobes\ngermanous\ngermans\ngermen\ngermens\ngermfree\ngermicidal\ngermicide\ngermicides\ngermier\ngermiest\ngermina\ngerminal\ngerminally\ngerminate\ngerminated\ngerminates\ngerminating\ngermination\ngerminations\ngerms\ngermy\ngerontic\ngerontologist\ngerontologists\ngerontology\ngerrymander\ngerrymandered\ngerrymandering\ngerrymanders\ngerund\ngerundive\ngerundives\ngerunds\ngesso\ngessoes\ngest\ngestalt\ngestalten\ngestalts\ngestapo\ngestapos\ngestate\ngestated\ngestates\ngestating\ngestation\ngestational\ngestations\ngeste\ngestes\ngestic\ngestical\ngesticulate\ngesticulated\ngesticulates\ngesticulating\ngesticulation\ngesticulations\ngesticulative\ngesticulator\ngesticulators\ngesticulatory\ngests\ngestural\ngesture\ngestured\ngesturer\ngesturers\ngestures\ngesturing\ngesundheit\nget\ngeta\ngetable\ngetas\ngetaway\ngetaways\ngets\ngettable\ngetter\ngettered\ngettering\ngetters\ngetting\ngetup\ngetups\ngeum\ngeums\ngewgaw\ngewgaws\ngey\ngeyser\ngeyserite\ngeyserites\ngeysers\ngharri\ngharries\ngharris\ngharry\nghast\nghastful\nghastlier\nghastliest\nghastliness\nghastly\nghat\nghats\nghaut\nghauts\nghazi\nghazies\nghazis\nghee\nghees\ngherao\ngheraoed\ngheraoes\ngheraoing\ngherkin\ngherkins\nghetto\nghettoed\nghettoes\nghettoing\nghettos\nghi\nghibli\nghiblis\nghillie\nghillies\nghis\nghost\nghosted\nghostier\nghostiest\nghosting\nghostlier\nghostliest\nghostlike\nghostly\nghosts\nghostwrite\nghostwriter\nghostwriters\nghostwrites\nghostwriting\nghostwritten\nghostwrote\nghosty\nghoul\nghoulish\nghoulishly\nghoulishness\nghouls\nghyll\nghylls\ngiant\ngiantess\ngiantesses\ngiantism\ngiantisms\ngiantlike\ngiants\ngiaour\ngiaours\ngib\ngibbed\ngibber\ngibbered\ngibbering\ngibberish\ngibbers\ngibbet\ngibbeted\ngibbeting\ngibbets\ngibbetted\ngibbetting\ngibbing\ngibbon\ngibbons\ngibbose\ngibbous\ngibbously\ngibbousness\ngibbsite\ngibbsites\ngibe\ngibed\ngiber\ngibers\ngibes\ngibing\ngibingly\ngiblet\ngiblets\ngibs\ngid\ngiddap\ngiddied\ngiddier\ngiddies\ngiddiest\ngiddily\ngiddiness\ngiddy\ngiddying\ngids\ngie\ngied\ngieing\ngien\ngies\ngift\ngifted\ngiftedly\ngiftedness\ngifting\ngiftless\ngifts\ngig\ngiga\ngigabit\ngigabits\ngigantic\ngigantically\ngigantism\ngigas\ngigaton\ngigatons\ngigawatt\ngigawatts\ngigged\ngigging\ngiggle\ngiggled\ngiggler\ngigglers\ngiggles\ngigglier\ngiggliest\ngiggling\ngiggly\ngighe\ngiglet\ngiglets\ngiglot\ngiglots\ngigolo\ngigolos\ngigot\ngigots\ngigs\ngigue\ngigues\ngilbert\ngilberts\ngild\ngilded\ngilder\ngilders\ngildhall\ngildhalls\ngilding\ngildings\ngilds\ngill\ngilled\ngiller\ngillers\ngillie\ngillied\ngillies\ngilling\ngillnet\ngillnets\ngillnetted\ngillnetting\ngills\ngilly\ngillying\ngilt\ngilthead\ngiltheads\ngilts\ngimbal\ngimbaled\ngimbaling\ngimballed\ngimballing\ngimbals\ngimcrack\ngimcrackeries\ngimcrackery\ngimcracks\ngimel\ngimels\ngimlet\ngimleted\ngimleting\ngimlets\ngimmal\ngimmals\ngimme\ngimmick\ngimmicked\ngimmicking\ngimmickries\ngimmickry\ngimmicks\ngimmicky\ngimp\ngimped\ngimpier\ngimpiest\ngimping\ngimps\ngimpy\ngin\ngingal\ngingall\ngingalls\ngingals\ngingeley\ngingeleys\ngingeli\ngingelies\ngingelis\ngingellies\ngingelly\ngingely\nginger\ngingerbread\ngingerbreads\ngingered\ngingering\ngingerly\ngingers\ngingery\ngingham\nginghams\ngingili\ngingilis\ngingiva\ngingivae\ngingival\ngingivitis\ngingko\ngingkoes\ngink\nginkgo\nginkgoes\nginks\nginned\nginner\nginners\nginnier\nginniest\nginning\nginnings\nginny\ngins\nginseng\nginsengs\ngip\ngipon\ngipons\ngipped\ngipper\ngippers\ngipping\ngips\ngipsied\ngipsies\ngipsy\ngipsying\ngiraffe\ngiraffes\ngirasol\ngirasole\ngirasoles\ngirasols\ngird\ngirded\ngirder\ngirders\ngirding\ngirdle\ngirdled\ngirdler\ngirdlers\ngirdles\ngirdling\ngirds\ngirl\ngirlfriend\ngirlfriends\ngirlhood\ngirlhoods\ngirlie\ngirlies\ngirlish\ngirlishly\ngirlishness\ngirls\ngirly\ngirn\ngirned\ngirning\ngirns\ngiro\ngiron\ngirons\ngiros\ngirosol\ngirosols\ngirsh\ngirshes\ngirt\ngirted\ngirth\ngirthed\ngirthing\ngirths\ngirting\ngirts\ngisarme\ngisarmes\ngismo\ngismos\ngist\ngists\ngit\ngitano\ngitanos\ngittern\ngitterns\ngive\ngiveable\ngiveaway\ngiveaways\ngiven\ngivens\ngiver\ngivers\ngives\ngiving\ngizmo\ngizmos\ngizzard\ngizzards\ngjetost\ngjetosts\nglabella\nglabellae\nglabrate\nglabrous\nglace\nglaceed\nglaceing\nglaces\nglacial\nglacially\nglaciate\nglaciated\nglaciates\nglaciating\nglaciation\nglaciations\nglacier\nglaciered\nglaciers\nglaciological\nglaciologist\nglaciologists\nglaciology\nglacis\nglacises\nglad\ngladded\ngladden\ngladdened\ngladdening\ngladdens\ngladder\ngladdest\ngladding\nglade\nglades\ngladiate\ngladiator\ngladiatorial\ngladiators\ngladier\ngladiest\ngladiola\ngladiolas\ngladioli\ngladiolus\ngladioluses\ngladlier\ngladliest\ngladly\ngladness\ngladnesses\nglads\ngladsome\ngladsomely\ngladsomeness\ngladsomer\ngladsomest\nglady\nglaiket\nglaikit\nglair\nglaire\nglaired\nglaires\nglairier\nglairiest\nglairing\nglairs\nglairy\nglaive\nglaived\nglaives\nglamor\nglamorization\nglamorizations\nglamorize\nglamorized\nglamorizes\nglamorizing\nglamorless\nglamorous\nglamorously\nglamorousness\nglamors\nglamour\nglamoured\nglamouring\nglamourization\nglamourizations\nglamourize\nglamourized\nglamourizes\nglamourizing\nglamourless\nglamourous\nglamourously\nglamourousness\nglamours\nglance\nglanced\nglances\nglancing\nglancingly\ngland\nglanders\nglandes\nglandless\nglands\nglandular\nglandularly\nglandule\nglandules\nglans\nglare\nglared\nglares\nglarier\nglariest\nglaring\nglaringly\nglaringness\nglary\nglass\nglassblower\nglassblowers\nglassblowing\nglassed\nglasses\nglassful\nglassfuls\nglasshouse\nglasshouses\nglassie\nglassier\nglassies\nglassiest\nglassily\nglassine\nglassines\nglassiness\nglassing\nglassless\nglassman\nglassmen\nglassware\nglasswares\nglassy\nglaucoma\nglaucomas\nglaucous\nglaze\nglazed\nglazer\nglazers\nglazes\nglazier\nglazieries\nglaziers\nglaziery\nglaziest\nglazing\nglazings\nglazy\ngleam\ngleamed\ngleamier\ngleamiest\ngleaming\ngleams\ngleamy\nglean\ngleanable\ngleaned\ngleaner\ngleaners\ngleaning\ngleanings\ngleans\ngleba\nglebae\nglebe\nglebes\ngled\nglede\ngledes\ngleds\nglee\ngleed\ngleeds\ngleeful\ngleefully\ngleefulness\ngleek\ngleeked\ngleeking\ngleeks\ngleeman\ngleemen\nglees\ngleesome\ngleet\ngleeted\ngleetier\ngleetiest\ngleeting\ngleets\ngleety\ngleg\nglegly\nglegness\nglegnesses\nglen\nglenlike\nglenoid\nglens\ngley\ngleys\nglia\ngliadin\ngliadine\ngliadines\ngliadins\nglial\nglias\nglib\nglibber\nglibbest\nglibly\nglibness\nglibnesses\nglide\nglided\nglider\ngliders\nglides\ngliding\ngliff\ngliffs\nglim\nglime\nglimed\nglimes\ngliming\nglimmer\nglimmered\nglimmering\nglimmers\nglimpse\nglimpsed\nglimpser\nglimpsers\nglimpses\nglimpsing\nglims\nglint\nglinted\nglinting\nglints\nglioma\ngliomas\ngliomata\nglissade\nglissaded\nglissader\nglissaders\nglissades\nglissading\nglisten\nglistened\nglistening\nglistens\nglister\nglistered\nglistering\nglisters\nglitch\nglitches\nglitter\nglittered\nglittering\nglitteringly\nglitters\nglittery\nglitz\ngloam\ngloaming\ngloamings\ngloams\ngloat\ngloated\ngloater\ngloaters\ngloating\ngloatingly\ngloats\nglob\nglobal\nglobally\nglobate\nglobated\nglobe\nglobed\nglobes\nglobin\nglobing\nglobins\ngloboid\ngloboids\nglobose\nglobous\nglobs\nglobular\nglobule\nglobules\nglobulin\nglobulins\nglochid\nglochids\nglockenspiel\nglockenspiels\nglogg\ngloggs\nglom\nglomera\nglommed\nglomming\ngloms\nglomus\ngloom\ngloomed\ngloomful\ngloomier\ngloomiest\ngloomily\ngloominess\nglooming\ngloomings\nglooms\ngloomy\nglop\nglops\ngloria\nglorias\ngloried\nglories\nglorification\nglorifications\nglorified\nglorifier\nglorifiers\nglorifies\nglorify\nglorifying\ngloriole\nglorioles\nglorious\ngloriously\ngloriousness\nglory\nglorying\ngloss\nglossa\nglossae\nglossal\nglossaries\nglossarist\nglossarists\nglossary\nglossas\nglossed\nglosseme\nglossemes\nglosser\nglossers\nglosses\nglossier\nglossies\nglossiest\nglossily\nglossina\nglossinas\nglossiness\nglossing\nglossy\nglost\nglosts\nglottal\nglottic\nglottides\nglottis\nglottises\nglout\nglouted\nglouting\nglouts\nglove\ngloved\nglover\nglovers\ngloves\ngloving\nglow\nglowed\nglower\nglowered\nglowering\nglowers\nglowflies\nglowfly\nglowing\nglowingly\nglows\nglowworm\nglowworms\ngloxinia\ngloxinias\ngloze\nglozed\nglozes\nglozing\nglucagon\nglucagons\nglucinic\nglucinum\nglucinums\nglucose\nglucoses\nglucosic\nglue\nglued\nglueing\ngluelike\ngluer\ngluers\nglues\ngluey\nglug\nglugs\ngluier\ngluiest\ngluily\ngluing\nglum\nglume\nglumes\nglumly\nglummer\nglummest\nglumness\nglumnesses\nglumpier\nglumpiest\nglumpily\nglumpy\nglunch\nglunched\nglunches\nglunching\ngluon\nglut\ngluteal\nglutei\nglutelin\nglutelins\ngluten\nglutenous\nglutens\ngluteus\nglutinous\nglutinously\ngluts\nglutted\nglutting\nglutton\ngluttonies\ngluttonous\ngluttonously\ngluttonousness\ngluttons\ngluttony\nglycan\nglycans\nglyceric\nglyceride\nglycerides\nglycerin\nglycerinate\nglycerinated\nglycerinates\nglycerinating\nglycerine\nglycerines\nglycerins\nglycerol\nglycerols\nglyceryl\nglyceryls\nglycin\nglycine\nglycines\nglycins\nglycogen\nglycogens\nglycol\nglycolic\nglycols\nglyconic\nglyconics\nglycosyl\nglycosyls\nglycyl\nglycyls\nglyph\nglyphic\nglyphs\nglyptic\nglyptics\ngnar\ngnarl\ngnarled\ngnarlier\ngnarliest\ngnarling\ngnarls\ngnarly\ngnarr\ngnarred\ngnarring\ngnarrs\ngnars\ngnash\ngnashed\ngnashes\ngnashing\ngnat\ngnathal\ngnathic\ngnathion\ngnathions\ngnathite\ngnathites\ngnatlike\ngnats\ngnattier\ngnattiest\ngnatty\ngnaw\ngnawable\ngnawed\ngnawer\ngnawers\ngnawing\ngnawings\ngnawn\ngnaws\ngneiss\ngneisses\ngneissic\ngnocchi\ngnome\ngnomes\ngnomic\ngnomical\ngnomish\ngnomist\ngnomists\ngnomon\ngnomonic\ngnomons\ngnoses\ngnosis\ngnostic\ngnosticism\ngnu\ngnus\ngo\ngoa\ngoad\ngoaded\ngoading\ngoadlike\ngoads\ngoal\ngoaled\ngoalie\ngoalies\ngoaling\ngoalkeeper\ngoalkeepers\ngoalless\ngoalpost\ngoalposts\ngoals\ngoas\ngoat\ngoatee\ngoateed\ngoatees\ngoatfish\ngoatfishes\ngoatherd\ngoatherds\ngoatish\ngoatlike\ngoats\ngoatskin\ngoatskins\ngob\ngoban\ngobang\ngobangs\ngobans\ngobbed\ngobbet\ngobbets\ngobbing\ngobble\ngobbled\ngobbledegook\ngobbledygook\ngobbler\ngobblers\ngobbles\ngobbling\ngobies\ngobioid\ngobioids\ngoblet\ngoblets\ngoblin\ngoblins\ngobo\ngoboes\ngobonee\ngobony\ngobos\ngobs\ngoby\ngod\ngodchild\ngodchildren\ngoddam\ngoddammed\ngoddamming\ngoddamn\ngoddamned\ngoddamning\ngoddamns\ngoddams\ngoddaughter\ngoddaughters\ngodded\ngoddess\ngoddesses\ngodding\ngodfather\ngodfathered\ngodfathering\ngodfathers\ngodhead\ngodheads\ngodhood\ngodhoods\ngodless\ngodlessness\ngodlier\ngodliest\ngodlike\ngodlikeness\ngodlily\ngodliness\ngodling\ngodlings\ngodly\ngodmother\ngodmothers\ngodown\ngodowns\ngodparent\ngodparents\ngodroon\ngodroons\ngods\ngodsend\ngodsends\ngodship\ngodships\ngodson\ngodsons\ngodwit\ngodwits\ngoer\ngoers\ngoes\ngoethite\ngoethites\ngofer\ngoffer\ngoffered\ngoffering\ngoffers\ngoggle\ngoggled\ngoggler\ngogglers\ngoggles\ngogglier\ngoggliest\ngoggling\ngoggly\ngoglet\ngoglets\ngogo\ngogos\ngoing\ngoings\ngoiter\ngoiters\ngoitre\ngoitres\ngoitrous\ngolconda\ngolcondas\ngold\ngoldarn\ngoldarns\ngoldbug\ngoldbugs\ngolden\ngoldener\ngoldenest\ngoldenly\ngoldenness\ngolder\ngoldest\ngoldeye\ngoldeyes\ngoldfield\ngoldfields\ngoldfinch\ngoldfinches\ngoldfish\ngoldfishes\ngolds\ngoldsmith\ngoldsmiths\ngoldurn\ngoldurns\ngolem\ngolems\ngolf\ngolfed\ngolfer\ngolfers\ngolfing\ngolfings\ngolfs\ngolgotha\ngolgothas\ngoliard\ngoliards\ngolliwog\ngolliwogs\ngolly\ngolosh\ngoloshes\ngombo\ngombos\ngombroon\ngombroons\ngomeral\ngomerals\ngomerel\ngomerels\ngomeril\ngomerils\ngomuti\ngomutis\ngonad\ngonadal\ngonadial\ngonadic\ngonads\ngondola\ngondolas\ngondolier\ngondoliers\ngone\ngonef\ngoneness\ngonenesses\ngoner\ngoners\ngonfalon\ngonfalons\ngonfanon\ngonfanons\ngong\ngonged\ngonging\ngonglike\ngongs\ngonia\ngonidia\ngonidial\ngonidic\ngonidium\ngonif\ngonifs\ngonion\ngonium\ngonocyte\ngonocytes\ngonof\ngonofs\ngonoph\ngonophs\ngonopore\ngonopores\ngonorrhea\ngonorrheal\ngonzo\ngoo\ngoober\ngoobers\ngood\ngoodby\ngoodbye\ngoodbyes\ngoodbys\ngoodies\ngoodish\ngoodlier\ngoodliest\ngoodly\ngoodman\ngoodmen\ngoodness\ngoodnesses\ngoods\ngoodwife\ngoodwill\ngoodwills\ngoodwives\ngoody\ngooey\ngoof\ngoofball\ngoofballs\ngoofed\ngoofier\ngoofiest\ngoofily\ngoofiness\ngoofing\ngoofs\ngoofy\ngooglies\ngoogly\ngoogol\ngoogols\ngooier\ngooiest\ngook\ngooks\ngooky\ngoon\ngooney\ngooneys\ngoonie\ngoonies\ngoons\ngoony\ngoop\ngoops\ngoopy\ngooral\ngoorals\ngoos\ngoose\ngooseberries\ngooseberry\ngoosed\ngooseflesh\ngooseneck\ngoosenecked\ngoosenecks\ngooses\ngoosey\ngoosier\ngoosiest\ngoosing\ngoosy\ngopher\ngophers\ngor\ngoral\ngorals\ngorbellies\ngorbelly\ngorblimy\ngorcock\ngorcocks\ngore\ngored\ngores\ngorge\ngorged\ngorgedly\ngorgeous\ngorgeously\ngorgeousness\ngorger\ngorgerin\ngorgerins\ngorgers\ngorges\ngorget\ngorgeted\ngorgets\ngorging\ngorgon\ngorgons\ngorhen\ngorhens\ngorier\ngoriest\ngorilla\ngorillas\ngorily\ngoriness\ngorinesses\ngoring\ngormand\ngormandize\ngormandized\ngormandizer\ngormandizers\ngormandizes\ngormandizing\ngormands\ngorp\ngorps\ngorse\ngorses\ngorsier\ngorsiest\ngorsy\ngory\ngosh\ngoshawk\ngoshawks\ngosling\ngoslings\ngospel\ngospeler\ngospelers\ngospeller\ngospellers\ngospels\ngosport\ngosports\ngossamer\ngossamers\ngossamery\ngossan\ngossans\ngossip\ngossiped\ngossiper\ngossipers\ngossiping\ngossipped\ngossipping\ngossipries\ngossipry\ngossips\ngossipy\ngossoon\ngossoons\ngossypol\ngossypols\ngot\ngothic\ngothically\ngothicize\ngothicized\ngothicizes\ngothicizing\ngothics\ngothite\ngothites\ngotten\ngouache\ngouaches\ngouge\ngouged\ngouger\ngougers\ngouges\ngouging\ngoulash\ngoulashes\ngourami\ngouramis\ngourd\ngourde\ngourdes\ngourds\ngourmand\ngourmandism\ngourmands\ngourmet\ngourmets\ngout\ngoutier\ngoutiest\ngoutily\ngouts\ngouty\ngovern\ngovernable\ngovernance\ngovernances\ngoverned\ngoverness\ngovernesses\ngoverning\ngovernment\ngovernmental\ngovernmentally\ngovernments\ngovernor\ngovernorate\ngovernorates\ngovernors\ngovernorship\ngovernorships\ngoverns\ngowan\ngowaned\ngowans\ngowany\ngowd\ngowds\ngowk\ngowks\ngown\ngowned\ngowning\ngowns\ngownsman\ngownsmen\ngox\ngoxes\ngoy\ngoyim\ngoyish\ngoys\ngraal\ngraals\ngrab\ngrabbed\ngrabber\ngrabbers\ngrabbier\ngrabbiest\ngrabbing\ngrabble\ngrabbled\ngrabbler\ngrabblers\ngrabbles\ngrabbling\ngrabby\ngraben\ngrabens\ngrabs\ngrace\ngraced\ngraceful\ngracefuller\ngracefullest\ngracefully\ngracefulness\ngraceless\ngracelessly\ngracelessness\ngraces\ngracile\ngracileness\ngraciles\ngracilis\ngracility\ngracing\ngracioso\ngraciosos\ngracious\ngraciously\ngraciousness\ngrackle\ngrackles\ngrad\ngradable\ngradate\ngradated\ngradates\ngradating\ngradation\ngradational\ngradationally\ngradations\ngrade\ngraded\ngrader\ngraders\ngrades\ngradient\ngradients\ngradin\ngradine\ngradines\ngrading\ngradins\ngrads\ngradual\ngradualism\ngradualist\ngradualists\ngradually\ngradualness\ngraduals\ngraduand\ngraduands\ngraduate\ngraduated\ngraduates\ngraduating\ngraduation\ngraduations\ngradus\ngraduses\ngraecize\ngraecized\ngraecizes\ngraecizing\ngraffiti\ngraffito\ngraft\ngraftage\ngraftages\ngrafted\ngrafter\ngrafters\ngrafting\ngrafts\ngraham\ngrail\ngrails\ngrain\ngrained\ngrainer\ngrainers\ngrainier\ngrainiest\ngraininess\ngraining\ngrains\ngrainy\ngram\ngrama\ngramaries\ngramary\ngramarye\ngramaryes\ngramas\ngramercies\ngramercy\ngrammar\ngrammarian\ngrammarians\ngrammars\ngrammatical\ngrammatically\ngrammaticalness\ngramme\ngrammes\ngramp\ngramps\ngrampus\ngrampuses\ngrams\ngran\ngrana\ngranaries\ngranary\ngrand\ngrandad\ngrandads\ngrandam\ngrandame\ngrandames\ngrandams\ngrandaunt\ngrandaunts\ngrandchild\ngrandchildren\ngranddad\ngranddads\ngranddaughter\ngranddaughters\ngrandee\ngrandees\ngrander\ngrandest\ngrandeur\ngrandeurs\ngrandfather\ngrandfatherly\ngrandfathers\ngrandiloquence\ngrandiloquent\ngrandiloquently\ngrandiose\ngrandiosely\ngrandiosities\ngrandiosity\ngrandly\ngrandma\ngrandmas\ngrandmaster\ngrandmasters\ngrandmother\ngrandmotherly\ngrandmothers\ngrandnephew\ngrandnephews\ngrandness\ngrandniece\ngrandnieces\ngrandpa\ngrandparent\ngrandparents\ngrandpas\ngrands\ngrandsir\ngrandsirs\ngrandson\ngrandsons\ngrandstand\ngrandstanded\ngrandstander\ngrandstanders\ngrandstanding\ngrandstands\ngranduncle\ngranduncles\ngrange\ngranger\ngrangerism\ngrangers\ngranges\ngranite\ngranitelike\ngranites\ngranitic\ngrannie\ngrannies\ngranny\ngrans\ngrant\ngrantable\ngranted\ngrantee\ngrantees\ngranter\ngranters\ngranting\ngrantor\ngrantors\ngrants\ngrantsman\ngrantsmanship\ngrantsmen\ngranular\ngranularity\ngranulate\ngranulated\ngranulates\ngranulating\ngranulation\ngranulations\ngranulative\ngranulator\ngranulators\ngranule\ngranules\ngranulite\ngranulites\ngranulitic\ngranulocyte\ngranulocytes\ngranulocytic\ngranuloma\ngranulomas\ngranum\ngrape\ngrapefruit\ngrapefruits\ngraperies\ngrapery\ngrapes\ngrapevine\ngrapevines\ngraph\ngraphed\ngrapheme\ngraphemes\ngraphemic\ngraphemically\ngraphemics\ngraphic\ngraphical\ngraphically\ngraphicness\ngraphics\ngraphing\ngraphite\ngraphites\ngraphitic\ngraphitization\ngraphitizations\ngraphitize\ngraphitized\ngraphitizes\ngraphitizing\ngraphological\ngraphologist\ngraphologists\ngraphology\ngraphs\ngrapier\ngrapiest\ngraplin\ngrapline\ngraplines\ngraplins\ngrapnel\ngrapnels\ngrappa\ngrappas\ngrapple\ngrappled\ngrappler\ngrapplers\ngrapples\ngrappling\ngrapy\ngrasp\ngraspable\ngrasped\ngrasper\ngraspers\ngrasping\ngraspingly\ngraspingness\ngrasps\ngrass\ngrassed\ngrasses\ngrasshopper\ngrasshoppers\ngrassier\ngrassiest\ngrassily\ngrassing\ngrassland\ngrasslands\ngrasslike\ngrassy\ngrat\ngrate\ngrated\ngrateful\ngratefuller\ngratefullest\ngratefully\ngratefulness\ngrater\ngraters\ngrates\ngratification\ngratifications\ngratified\ngratifies\ngratify\ngratifying\ngratifyingly\ngratin\ngrating\ngratings\ngratins\ngratis\ngratitude\ngratuities\ngratuitous\ngratuitously\ngratuitousness\ngratuity\ngratulating\ngratulation\ngratulations\ngraupel\ngraupels\ngravamen\ngravamens\ngravamina\ngrave\ngraved\ngravel\ngraveled\ngraveling\ngravelled\ngravelling\ngravelly\ngravels\ngravely\ngraven\ngraveness\ngraver\ngravers\ngraves\ngravest\ngravestone\ngravestones\ngraveyard\ngraveyards\ngravid\ngravida\ngravidae\ngravidas\ngravidities\ngravidity\ngravidly\ngravies\ngraving\ngravitate\ngravitated\ngravitates\ngravitating\ngravitation\ngravitational\ngravitationally\ngravitations\ngravities\ngraviton\ngravitons\ngravity\ngravure\ngravures\ngravy\ngray\ngrayback\ngraybacks\ngrayed\ngrayer\ngrayest\ngrayfish\ngrayfishes\ngraying\ngrayish\ngraylag\ngraylags\ngrayling\ngraylings\ngrayly\ngrayness\ngraynesses\ngrayout\ngrayouts\ngrays\ngrazable\ngraze\ngrazed\ngrazer\ngrazers\ngrazes\ngrazier\ngraziers\ngrazing\ngrazingly\ngrazings\ngrazioso\ngrease\ngreased\ngreaseless\ngreasepaint\ngreaser\ngreasers\ngreases\ngreasier\ngreasiest\ngreasily\ngreasiness\ngreasing\ngreasy\ngreat\ngreatcoat\ngreatcoats\ngreaten\ngreatened\ngreatening\ngreatens\ngreater\ngreatest\ngreatly\ngreatness\ngreats\ngreave\ngreaved\ngreaves\ngrebe\ngrebes\ngrecize\ngrecized\ngrecizes\ngrecizing\ngree\ngreed\ngreedier\ngreediest\ngreedily\ngreediness\ngreeds\ngreedy\ngreegree\ngreegrees\ngreeing\ngreek\ngreen\ngreenback\ngreenbacks\ngreenbug\ngreenbugs\ngreened\ngreener\ngreeneries\ngreenery\ngreenest\ngreenflies\ngreenfly\ngreengage\ngreengages\ngreenhorn\ngreenhorns\ngreenhouse\ngreenhouses\ngreenier\ngreeniest\ngreening\ngreenings\ngreenish\ngreenishness\ngreenlet\ngreenlets\ngreenling\ngreenlings\ngreenly\ngreenness\ngreenroom\ngreenrooms\ngreens\ngreensick\ngreensickness\ngreensward\ngreenswards\ngreenth\ngreenths\ngreenwood\ngreenwoods\ngreeny\ngrees\ngreet\ngreeted\ngreeter\ngreeters\ngreeting\ngreetings\ngreets\ngregarious\ngregariously\ngregariousness\ngrego\ngregos\ngreige\ngreiges\ngreisen\ngreisens\ngremial\ngremials\ngremlin\ngremlins\ngremmie\ngremmies\ngremmy\ngrenade\ngrenades\ngrenadier\ngrenadiers\ngrenadine\ngrenadines\ngrew\ngrewsome\ngrewsomer\ngrewsomest\ngrey\ngreyed\ngreyer\ngreyest\ngreyhen\ngreyhens\ngreyhound\ngreyhounds\ngreying\ngreyish\ngreylag\ngreylags\ngreyly\ngreyness\ngreynesses\ngreys\ngribble\ngribbles\ngrid\ngriddle\ngriddled\ngriddles\ngriddling\ngride\ngrided\ngrides\ngriding\ngridiron\ngridirons\ngrids\ngrief\ngriefs\ngrievance\ngrievances\ngrievant\ngrievants\ngrieve\ngrieved\ngriever\ngrievers\ngrieves\ngrieving\ngrievous\ngrievously\ngrievousness\ngriff\ngriffe\ngriffes\ngriffin\ngriffins\ngriffon\ngriffons\ngriffs\ngrift\ngrifted\ngrifter\ngrifters\ngrifting\ngrifts\ngrig\ngrigri\ngrigris\ngrigs\ngrill\ngrillade\ngrillades\ngrillage\ngrillages\ngrille\ngrilled\ngriller\ngrillers\ngrilles\ngrilling\ngrillroom\ngrillrooms\ngrills\ngrilse\ngrilses\ngrim\ngrimace\ngrimaced\ngrimacer\ngrimacers\ngrimaces\ngrimacing\ngrime\ngrimed\ngrimes\ngrimier\ngrimiest\ngrimily\ngriminess\ngriming\ngrimly\ngrimmer\ngrimmest\ngrimness\ngrimnesses\ngrimy\ngrin\ngrind\ngrinded\ngrinder\ngrinderies\ngrinders\ngrindery\ngrinding\ngrindingly\ngrinds\ngrindstone\ngrindstones\ngringo\ngringos\ngrinned\ngrinner\ngrinners\ngrinning\ngrinningly\ngrins\ngriot\ngrip\ngripe\ngriped\ngriper\ngripers\ngripes\ngripey\ngripier\ngripiest\ngriping\ngrippe\ngripped\ngripper\ngrippers\ngrippes\ngrippier\ngrippiest\ngripping\ngrippingly\ngripple\ngrippy\ngrips\ngripsack\ngripsacks\ngript\ngripy\ngriseous\ngrisette\ngrisettes\ngriskin\ngriskins\ngrislier\ngrisliest\ngrisly\ngrison\ngrisons\ngrist\ngristle\ngristles\ngristlier\ngristliest\ngristly\ngristmill\ngristmills\ngrists\ngrit\ngrith\ngriths\ngrits\ngritted\ngrittier\ngrittiest\ngrittily\ngrittiness\ngritting\ngritty\ngrivet\ngrivets\ngrizzle\ngrizzled\ngrizzler\ngrizzlers\ngrizzles\ngrizzlier\ngrizzlies\ngrizzliest\ngrizzling\ngrizzly\ngroan\ngroaned\ngroaner\ngroaners\ngroaning\ngroans\ngroat\ngroats\ngrocer\ngroceries\ngrocers\ngrocery\ngrog\ngroggeries\ngroggery\ngroggier\ngroggiest\ngroggily\ngrogginess\ngroggy\ngrogram\ngrograms\ngrogs\ngrogshop\ngrogshops\ngroin\ngroined\ngroining\ngroins\ngrommet\ngrommets\ngromwell\ngromwells\ngroom\ngroomed\ngroomer\ngroomers\ngrooming\ngrooms\ngroomsman\ngroomsmen\ngroove\ngrooved\ngroover\ngroovers\ngrooves\ngroovier\ngrooviest\ngrooving\ngroovy\ngrope\ngroped\ngroper\ngropers\ngropes\ngroping\ngrosbeak\ngrosbeaks\ngroschen\ngrosgrain\ngrosgrains\ngross\ngrossed\ngrosser\ngrossers\ngrosses\ngrossest\ngrossing\ngrossly\ngrossness\ngrosz\ngroszy\ngrot\ngrotesque\ngrotesquely\ngrotesqueness\ngrotesquerie\ngrotesqueries\ngrotesquery\ngrotesques\ngrots\ngrotto\ngrottoes\ngrottos\ngrouch\ngrouched\ngrouches\ngrouchier\ngrouchiest\ngrouchily\ngrouchiness\ngrouching\ngrouchy\nground\ngrounded\ngrounder\ngrounders\ngroundhog\ngroundhogs\ngrounding\ngroundings\ngroundless\ngroundlessly\ngroundlessness\ngrounds\ngroundspeed\ngroundspeeds\ngroundwater\ngroundwork\ngroundworks\ngroup\ngrouped\ngrouper\ngroupers\ngroupie\ngroupies\ngrouping\ngroupings\ngroupoid\ngroupoids\ngroups\ngrouse\ngroused\ngrouser\ngrousers\ngrouses\ngrousing\ngrout\ngrouted\ngrouter\ngrouters\ngroutier\ngroutiest\ngrouting\ngrouts\ngrouty\ngrove\ngroved\ngrovel\ngroveled\ngroveler\ngrovelers\ngroveling\ngrovelingly\ngrovelled\ngrovelling\ngrovels\ngroves\ngrow\ngrowable\ngrower\ngrowers\ngrowing\ngrowl\ngrowled\ngrowler\ngrowlers\ngrowlier\ngrowliest\ngrowling\ngrowlingly\ngrowls\ngrowly\ngrown\ngrownup\ngrownups\ngrows\ngrowth\ngrowths\ngroyne\ngroynes\ngrub\ngrubbed\ngrubber\ngrubbers\ngrubbier\ngrubbiest\ngrubbily\ngrubbiness\ngrubbing\ngrubby\ngrubs\ngrubstake\ngrubstaked\ngrubstaker\ngrubstakers\ngrubstakes\ngrubstaking\ngrubworm\ngrubworms\ngrudge\ngrudged\ngrudger\ngrudgers\ngrudges\ngrudging\ngrudgingly\ngrue\ngruel\ngrueled\ngrueler\ngruelers\ngrueling\ngruelings\ngruelled\ngrueller\ngruellers\ngruelling\ngruellings\ngruels\ngrues\ngruesome\ngruesomely\ngruesomeness\ngruesomer\ngruesomest\ngruff\ngruffed\ngruffer\ngruffest\ngruffier\ngruffiest\ngruffily\ngruffing\ngruffish\ngruffly\ngruffness\ngruffs\ngruffy\ngrugru\ngrugrus\ngrum\ngrumble\ngrumbled\ngrumbler\ngrumblers\ngrumbles\ngrumbling\ngrumblingly\ngrumbly\ngrume\ngrumes\ngrummer\ngrummest\ngrummet\ngrummets\ngrumose\ngrumous\ngrump\ngrumped\ngrumphie\ngrumphies\ngrumphy\ngrumpier\ngrumpiest\ngrumpily\ngrumpiness\ngrumping\ngrumpish\ngrumps\ngrumpy\ngrunion\ngrunions\ngrunt\ngrunted\ngrunter\ngrunters\ngrunting\ngruntle\ngruntled\ngruntles\ngruntling\ngrunts\ngrushie\ngrutch\ngrutched\ngrutches\ngrutching\ngrutten\ngryphon\ngryphons\nguacharo\nguacharoes\nguacharos\nguaco\nguacos\nguaiac\nguaiacol\nguaiacols\nguaiacs\nguaiacum\nguaiacums\nguaiocum\nguaiocums\nguan\nguanaco\nguanacos\nguanase\nguanases\nguanidin\nguanidins\nguanin\nguanine\nguanines\nguanins\nguano\nguanos\nguans\nguar\nguarani\nguaranies\nguaranis\nguarantee\nguaranteed\nguaranteeing\nguarantees\nguarantied\nguaranties\nguarantor\nguarantors\nguaranty\nguarantying\nguard\nguardant\nguardants\nguarded\nguardedly\nguardedness\nguarder\nguarders\nguardhouse\nguardhouses\nguardian\nguardians\nguardianship\nguarding\nguardrail\nguardrails\nguardroom\nguardrooms\nguards\nguardsman\nguardsmen\nguars\nguava\nguavas\nguayule\nguayules\ngubernatorial\nguck\ngucks\ngude\ngudes\ngudgeon\ngudgeoned\ngudgeoning\ngudgeons\nguenon\nguenons\nguerdon\nguerdoned\nguerdoning\nguerdons\nguerilla\nguerillas\nguernsey\nguernseys\nguerrilla\nguerrillas\nguess\nguessed\nguesser\nguessers\nguesses\nguessing\nguesstimate\nguesstimated\nguesstimates\nguesstimating\nguesswork\nguest\nguested\nguesting\nguests\nguff\nguffaw\nguffawed\nguffawing\nguffaws\nguffs\nguggle\nguggled\nguggles\nguggling\nguglet\nguglets\nguid\nguidable\nguidance\nguidances\nguide\nguidebook\nguidebooks\nguided\nguideline\nguidelines\nguidepost\nguideposts\nguider\nguiders\nguides\nguiding\nguidon\nguidons\nguids\nguild\nguilder\nguilders\nguilds\nguildship\nguildsman\nguildsmen\nguile\nguiled\nguileful\nguilefully\nguilefulness\nguileless\nguilelessly\nguilelessness\nguiles\nguiling\nguillotine\nguillotined\nguillotines\nguillotining\nguilt\nguiltier\nguiltiest\nguiltily\nguiltiness\nguiltless\nguiltlessly\nguiltlessness\nguilts\nguilty\nguimpe\nguimpes\nguinea\nguineas\nguipure\nguipures\nguiro\nguiros\nguisard\nguisards\nguise\nguised\nguises\nguising\nguitar\nguitarist\nguitarists\nguitars\ngul\ngulag\ngular\ngulch\ngulches\ngulden\nguldens\ngules\ngulf\ngulfed\ngulfier\ngulfiest\ngulfing\ngulflike\ngulfs\ngulfweed\ngulfweeds\ngulfy\ngull\ngullable\ngullably\ngulled\ngullet\ngullets\ngulley\ngulleys\ngullibilities\ngullibility\ngullible\ngullibly\ngullied\ngullies\ngulling\ngulls\ngully\ngullying\ngulosities\ngulosity\ngulp\ngulped\ngulper\ngulpers\ngulpier\ngulpiest\ngulping\ngulpingly\ngulps\ngulpy\nguls\ngum\ngumbo\ngumboil\ngumboils\ngumbos\ngumbotil\ngumbotils\ngumdrop\ngumdrops\ngumless\ngumlike\ngumma\ngummas\ngummata\ngummed\ngummer\ngummers\ngummier\ngummiest\ngumming\ngummite\ngummites\ngummose\ngummoses\ngummosis\ngummous\ngummy\ngumption\ngumptions\ngums\ngumshoe\ngumshoed\ngumshoeing\ngumshoes\ngumtree\ngumtrees\ngumweed\ngumweeds\ngumwood\ngumwoods\ngun\ngunboat\ngunboats\nguncotton\ngundog\ngundogs\ngunfight\ngunfighter\ngunfighters\ngunfighting\ngunfights\ngunfire\ngunfires\ngunflint\ngunflints\ngunfought\ngunk\ngunks\ngunky\ngunless\ngunlock\ngunlocks\ngunman\ngunmen\ngunmetal\ngunmetals\ngunned\ngunnel\ngunnels\ngunnen\ngunner\ngunneries\ngunners\ngunnery\ngunnies\ngunning\ngunnings\ngunny\ngunnysack\ngunnysacks\ngunpaper\ngunpapers\ngunplay\ngunplays\ngunpoint\ngunpoints\ngunpowder\ngunpowders\ngunroom\ngunrooms\ngunrunner\ngunrunners\ngunrunning\nguns\ngunsel\ngunsels\ngunship\ngunships\ngunshot\ngunshots\ngunslinger\ngunslingers\ngunsmith\ngunsmithing\ngunsmiths\ngunstock\ngunstocks\ngunwale\ngunwales\nguppies\nguppy\ngurge\ngurged\ngurges\ngurging\ngurgle\ngurgled\ngurgles\ngurglet\ngurglets\ngurgling\ngurnard\ngurnards\ngurnet\ngurnets\ngurney\ngurneys\ngurries\ngurry\ngursh\ngurshes\nguru\ngurus\nguruship\nguruships\ngush\ngushed\ngusher\ngushers\ngushes\ngushier\ngushiest\ngushily\ngushiness\ngushing\ngushy\ngusset\ngusseted\ngusseting\ngussets\ngussy\ngust\ngustable\ngustables\ngustation\ngustations\ngustatory\ngusted\ngustier\ngustiest\ngustily\ngustiness\ngusting\ngustless\ngusto\ngustoes\ngusts\ngusty\ngut\ngutless\ngutlessness\ngutlike\nguts\ngutsier\ngutsiest\ngutsiness\ngutsy\ngutta\nguttae\nguttate\nguttated\ngutted\ngutter\nguttered\nguttering\ngutters\nguttersnipe\nguttersnipes\nguttersnipish\nguttery\nguttier\nguttiest\ngutting\nguttle\nguttled\nguttler\nguttlers\nguttles\nguttling\nguttural\ngutturalism\ngutturalisms\ngutturals\ngutty\nguv\nguvs\nguy\nguyed\nguying\nguyot\nguyots\nguys\nguzzle\nguzzled\nguzzler\nguzzlers\nguzzles\nguzzling\ngweduc\ngweduck\ngweducks\ngweducs\ngybe\ngybed\ngybes\ngybing\ngym\ngymkhana\ngymkhanas\ngymnasia\ngymnasium\ngymnasiums\ngymnast\ngymnastic\ngymnastically\ngymnastics\ngymnasts\ngymnosperm\ngymnospermous\ngymnosperms\ngyms\ngynaecea\ngynaecia\ngynandries\ngynandry\ngynarchies\ngynarchy\ngynecia\ngynecic\ngynecium\ngynecoid\ngynecologic\ngynecological\ngynecologist\ngynecologists\ngynecology\ngyniatries\ngyniatry\ngynoecia\ngyp\ngypped\ngypper\ngyppers\ngypping\ngyps\ngypseian\ngypseous\ngypsied\ngypsies\ngypsum\ngypsums\ngypsy\ngypsydom\ngypsydoms\ngypsying\ngypsyish\ngypsyism\ngypsyisms\ngyral\ngyrally\ngyrate\ngyrated\ngyrates\ngyrating\ngyration\ngyrational\ngyrations\ngyrator\ngyrators\ngyratory\ngyre\ngyred\ngyrene\ngyrenes\ngyres\ngyri\ngyring\ngyro\ngyrocompass\ngyrocompasses\ngyroidal\ngyron\ngyrons\ngyros\ngyroscope\ngyroscopes\ngyroscopic\ngyroscopically\ngyrose\ngyrostabilizer\ngyrostabilizers\ngyrostat\ngyrostats\ngyrus\ngyve\ngyved\ngyves\ngyving\nha\nhaaf\nhaafs\nhaar\nhaars\nhabanera\nhabaneras\nhabdalah\nhabdalahs\nhaberdasher\nhaberdasheries\nhaberdashers\nhaberdashery\nhabile\nhabilitate\nhabilitated\nhabilitates\nhabilitating\nhabilitation\nhabilitations\nhabit\nhabitability\nhabitable\nhabitableness\nhabitably\nhabitan\nhabitans\nhabitant\nhabitants\nhabitat\nhabitation\nhabitations\nhabitats\nhabited\nhabiting\nhabits\nhabitual\nhabitually\nhabitualness\nhabituate\nhabituated\nhabituates\nhabituating\nhabituation\nhabituations\nhabitude\nhabitudes\nhabitue\nhabitues\nhabitus\nhabu\nhabus\nhacek\nhaceks\nhachure\nhachured\nhachures\nhachuring\nhacienda\nhaciendas\nhack\nhackbut\nhackbuts\nhacked\nhackee\nhackees\nhacker\nhackers\nhackie\nhackies\nhacking\nhackle\nhackled\nhackler\nhacklers\nhackles\nhacklier\nhackliest\nhackling\nhackly\nhackman\nhackmen\nhackney\nhackneyed\nhackneying\nhackneys\nhacks\nhacksaw\nhacksaws\nhackwork\nhackworks\nhad\nhadal\nhadarim\nhaddest\nhaddock\nhaddocks\nhade\nhaded\nhades\nhading\nhadj\nhadjee\nhadjees\nhadjes\nhadji\nhadjis\nhadron\nhadronic\nhadrons\nhadst\nhae\nhaed\nhaeing\nhaem\nhaemal\nhaematal\nhaematic\nhaematics\nhaematin\nhaematins\nhaemic\nhaemin\nhaemins\nhaemoid\nhaems\nhaen\nhaeredes\nhaeres\nhaes\nhaet\nhaets\nhaffet\nhaffets\nhaffit\nhaffits\nhafis\nhafiz\nhafnium\nhafniums\nhaft\nhaftarah\nhaftarahs\nhaftarot\nhaftaroth\nhafted\nhafter\nhafters\nhafting\nhaftorah\nhaftorahs\nhaftorot\nhaftoroth\nhafts\nhag\nhagadic\nhagadist\nhagadists\nhagberries\nhagberry\nhagborn\nhagbush\nhagbushes\nhagbut\nhagbuts\nhagdon\nhagdons\nhagfish\nhagfishes\nhaggadic\nhaggard\nhaggardly\nhaggardness\nhaggards\nhagged\nhagging\nhaggis\nhaggises\nhaggish\nhaggle\nhaggled\nhaggler\nhagglers\nhaggles\nhaggling\nhagridden\nhagride\nhagrides\nhagriding\nhagrode\nhags\nhah\nhaha\nhahas\nhahs\nhaik\nhaika\nhaiks\nhaiku\nhail\nhailed\nhailer\nhailers\nhailing\nhails\nhailstone\nhailstones\nhailstorm\nhailstorms\nhair\nhairball\nhairballs\nhairband\nhairbands\nhairbreadth\nhairbrush\nhairbrushes\nhaircap\nhaircaps\nhaircut\nhaircuts\nhaircutter\nhaircutters\nhaircutting\nhairdo\nhairdos\nhairdresser\nhairdressers\nhairdressing\nhairdressings\nhaired\nhairier\nhairiest\nhairiness\nhairless\nhairlessness\nhairlike\nhairline\nhairlines\nhairlock\nhairlocks\nhairpiece\nhairpieces\nhairpin\nhairpins\nhairs\nhairsbreadth\nhairsplitter\nhairsplitters\nhairsplitting\nhairspring\nhairsprings\nhairstyle\nhairstyles\nhairstyling\nhairstylist\nhairstylists\nhairwork\nhairworks\nhairworm\nhairworms\nhairy\nhaj\nhajes\nhaji\nhajis\nhajj\nhajjes\nhajji\nhajjis\nhake\nhakeem\nhakeems\nhakes\nhakim\nhakims\nhalakah\nhalakahs\nhalakic\nhalakist\nhalakists\nhalakoth\nhalala\nhalalah\nhalalahs\nhalalas\nhalation\nhalations\nhalavah\nhalavahs\nhalberd\nhalberds\nhalbert\nhalberts\nhalcyon\nhalcyons\nhale\nhaled\nhaleness\nhalenesses\nhaler\nhalers\nhaleru\nhales\nhalest\nhalf\nhalfback\nhalfbacks\nhalfbeak\nhalfbeaks\nhalfhearted\nhalfheartedly\nhalfheartedness\nhalflife\nhalflives\nhalfness\nhalfnesses\nhalftime\nhalftimes\nhalftone\nhalftones\nhalfway\nhalibut\nhalibuts\nhalid\nhalide\nhalides\nhalidom\nhalidome\nhalidomes\nhalidoms\nhalids\nhaling\nhalite\nhalites\nhalitus\nhalituses\nhall\nhallah\nhallahs\nhallel\nhallels\nhallelujah\nhallelujahs\nhalliard\nhalliards\nhallmark\nhallmarked\nhallmarking\nhallmarks\nhallo\nhalloa\nhalloaed\nhalloaing\nhalloas\nhalloed\nhalloes\nhalloing\nhalloo\nhallooed\nhallooing\nhalloos\nhallos\nhallot\nhalloth\nhallow\nhallowed\nhallower\nhallowers\nhallowing\nhallows\nhalls\nhalluces\nhallucinate\nhallucinated\nhallucinates\nhallucinating\nhallucination\nhallucinations\nhallucinator\nhallucinators\nhallucinatory\nhallucinogen\nhallucinogenic\nhallucinogens\nhallux\nhallway\nhallways\nhalm\nhalms\nhalo\nhaloed\nhaloes\nhalogen\nhalogenate\nhalogenated\nhalogenates\nhalogenating\nhalogenation\nhalogenations\nhalogens\nhaloid\nhaloids\nhaloing\nhalolike\nhalophyte\nhalophytes\nhalophytic\nhalos\nhalt\nhalted\nhalter\nhaltere\nhaltered\nhalteres\nhaltering\nhalters\nhalting\nhaltingly\nhaltless\nhalts\nhalutz\nhalutzim\nhalva\nhalvah\nhalvahs\nhalvas\nhalve\nhalved\nhalvers\nhalves\nhalving\nhalyard\nhalyards\nham\nhamal\nhamals\nhamartia\nhamartias\nhamate\nhamates\nhamaul\nhamauls\nhamburg\nhamburger\nhamburgers\nhamburgs\nhame\nhames\nhamlet\nhamlets\nhammal\nhammals\nhammed\nhammer\nhammered\nhammerer\nhammerers\nhammerhead\nhammerheads\nhammering\nhammerless\nhammers\nhammertoe\nhammertoes\nhammier\nhammiest\nhammily\nhamming\nhammock\nhammocks\nhammy\nhamper\nhampered\nhamperer\nhamperers\nhampering\nhampers\nhams\nhamster\nhamsters\nhamstring\nhamstringing\nhamstrings\nhamstrung\nhamular\nhamulate\nhamuli\nhamulose\nhamulous\nhamulus\nhamza\nhamzah\nhamzahs\nhamzas\nhanaper\nhanapers\nhance\nhances\nhand\nhandbag\nhandbags\nhandball\nhandballs\nhandbarrow\nhandbarrows\nhandbill\nhandbills\nhandbook\nhandbooks\nhandbreadth\nhandbreadths\nhandcar\nhandcars\nhandcart\nhandcarts\nhandclasp\nhandclasps\nhandcuff\nhandcuffed\nhandcuffing\nhandcuffs\nhanded\nhandedness\nhandfast\nhandfasted\nhandfasting\nhandfasts\nhandful\nhandfuls\nhandgrip\nhandgrips\nhandgun\nhandguns\nhandhold\nhandholds\nhandicap\nhandicapped\nhandicapper\nhandicappers\nhandicapping\nhandicaps\nhandicraft\nhandicrafter\nhandicrafters\nhandicrafts\nhandicraftsman\nhandicraftsmen\nhandier\nhandiest\nhandily\nhandiness\nhanding\nhandiwork\nhandiworks\nhandkerchief\nhandkerchiefs\nhandle\nhandleable\nhandlebar\nhandlebars\nhandled\nhandleless\nhandler\nhandlers\nhandles\nhandless\nhandlike\nhandling\nhandlings\nhandlist\nhandlists\nhandloom\nhandlooms\nhandmade\nhandmaid\nhandmaids\nhandoff\nhandoffs\nhandout\nhandouts\nhandpick\nhandpicked\nhandpicking\nhandpicks\nhandprint\nhandprints\nhandrail\nhandrails\nhands\nhandsaw\nhandsaws\nhandsbreadth\nhandsbreadths\nhandsel\nhandseled\nhandseling\nhandselled\nhandselling\nhandsels\nhandset\nhandsets\nhandsewn\nhandsful\nhandshake\nhandshaker\nhandshakers\nhandshakes\nhandshaking\nhandsome\nhandsomely\nhandsomeness\nhandsomer\nhandsomest\nhandspring\nhandsprings\nhandstand\nhandstands\nhandwork\nhandworks\nhandwrit\nhandwrite\nhandwrites\nhandwriting\nhandwritings\nhandwritten\nhandwrote\nhandy\nhandyman\nhandymen\nhang\nhangable\nhangar\nhangared\nhangaring\nhangars\nhangbird\nhangbirds\nhangdog\nhangdogs\nhanged\nhanger\nhangers\nhangfire\nhangfires\nhanging\nhangings\nhangman\nhangmen\nhangnail\nhangnails\nhangnest\nhangnests\nhangout\nhangouts\nhangover\nhangovers\nhangs\nhangtag\nhangtags\nhangup\nhangups\nhank\nhanked\nhanker\nhankered\nhankerer\nhankerers\nhankering\nhankerings\nhankers\nhankie\nhankies\nhanking\nhanks\nhanky\nhansa\nhanse\nhansel\nhanseled\nhanseling\nhanselled\nhanselling\nhansels\nhanses\nhansom\nhansoms\nhant\nhanted\nhanting\nhantle\nhantles\nhants\nhanuman\nhanumans\nhao\nhaole\nhaoles\nhap\nhapax\nhapaxes\nhaphazard\nhaphazardly\nhaphazardness\nhapless\nhaplessly\nhaplessness\nhaplite\nhaplites\nhaploid\nhaploidies\nhaploids\nhaploidy\nhaplont\nhaplonts\nhaplopia\nhaplopias\nhaploses\nhaplosis\nhaply\nhapped\nhappen\nhappened\nhappening\nhappenings\nhappens\nhappenstance\nhappier\nhappiest\nhappily\nhappiness\nhapping\nhappy\nhaps\nhapten\nhaptene\nhaptenes\nhaptenic\nhaptens\nhaptic\nhaptical\nharangue\nharangued\nharanguer\nharanguers\nharangues\nharanguing\nharass\nharassed\nharasser\nharassers\nharasses\nharassing\nharassment\nharassments\nharbinger\nharbingers\nharbor\nharborage\nharborages\nharbored\nharborer\nharborers\nharboring\nharborless\nharbors\nharbour\nharboured\nharbouring\nharbours\nhard\nhardback\nhardbacks\nhardball\nhardballs\nhardboot\nhardboots\nhardcase\nhardcore\nhardcover\nhardcovers\nharden\nhardened\nhardener\nhardeners\nhardening\nhardens\nharder\nhardest\nhardfisted\nhardhack\nhardhacks\nhardhat\nhardhats\nhardhead\nhardheaded\nhardheadedly\nhardheadedness\nhardheads\nhardier\nhardies\nhardiest\nhardihood\nhardihoods\nhardily\nhardiness\nhardly\nhardness\nhardnesses\nhardpan\nhardpans\nhards\nhardset\nhardship\nhardships\nhardtack\nhardtacks\nhardtop\nhardtops\nhardware\nhardwares\nhardwood\nhardwoods\nhardy\nhare\nharebell\nharebells\nharebrained\nhared\nhareem\nhareems\nharelike\nharelip\nharelipped\nharelips\nharem\nharems\nhares\nhariana\nharianas\nharicot\nharicots\nharijan\nharijans\nharing\nhark\nharked\nharken\nharkened\nharkener\nharkeners\nharkening\nharkens\nharking\nharks\nharl\nharlequin\nharlequins\nharlot\nharlotries\nharlotry\nharlots\nharls\nharm\nharmed\nharmer\nharmers\nharmful\nharmfully\nharmfulness\nharmin\nharmine\nharmines\nharming\nharmins\nharmless\nharmlessly\nharmlessness\nharmonic\nharmonica\nharmonically\nharmonicas\nharmonics\nharmonies\nharmonious\nharmoniously\nharmoniousness\nharmonization\nharmonizations\nharmonize\nharmonized\nharmonizer\nharmonizers\nharmonizes\nharmonizing\nharmony\nharms\nharness\nharnessed\nharnesses\nharnessing\nharp\nharped\nharper\nharpers\nharpies\nharpin\nharping\nharpings\nharpins\nharpist\nharpists\nharpoon\nharpooned\nharpooner\nharpooners\nharpooning\nharpoons\nharps\nharpsichord\nharpsichordist\nharpsichordists\nharpsichords\nharpy\nharridan\nharridans\nharried\nharrier\nharriers\nharries\nharrow\nharrowed\nharrower\nharrowers\nharrowing\nharrows\nharrumph\nharrumphed\nharrumphing\nharrumphs\nharry\nharrying\nharsh\nharshen\nharshened\nharshening\nharshens\nharsher\nharshest\nharshlets\nharshly\nharshness\nharslet\nharslets\nhart\nhartal\nhartals\nhartebeest\nhartebeests\nharts\nharuspex\nharuspices\nharvest\nharvested\nharvester\nharvesters\nharvesting\nharvestman\nharvestmen\nharvests\nhas\nhasenpfeffer\nhasenpfeffers\nhash\nhashed\nhasheesh\nhasheeshes\nhashes\nhashing\nhashish\nhashishes\nhaslet\nhaslets\nhasp\nhasped\nhasping\nhasps\nhassel\nhassels\nhassle\nhassled\nhassles\nhassling\nhassock\nhassocks\nhast\nhastate\nhaste\nhasted\nhasteful\nhasten\nhastened\nhastener\nhasteners\nhastening\nhastens\nhastes\nhastier\nhastiest\nhastily\nhastiness\nhasting\nhasty\nhat\nhatable\nhatband\nhatbands\nhatbox\nhatboxes\nhatch\nhatchabilities\nhatchability\nhatchable\nhatchback\nhatchbacks\nhatcheck\nhatched\nhatchel\nhatcheled\nhatcheling\nhatchelled\nhatchelling\nhatchels\nhatcher\nhatcheries\nhatchers\nhatchery\nhatches\nhatchet\nhatchets\nhatching\nhatchings\nhatchway\nhatchways\nhate\nhateable\nhated\nhateful\nhatefully\nhatefulness\nhater\nhaters\nhates\nhatful\nhatfuls\nhath\nhating\nhatless\nhatlike\nhatmaker\nhatmakers\nhatpin\nhatpins\nhatrack\nhatracks\nhatred\nhatreds\nhats\nhatsful\nhatted\nhatter\nhatteria\nhatterias\nhatters\nhatting\nhauberk\nhauberks\nhaugh\nhaughs\nhaughtier\nhaughtiest\nhaughtily\nhaughtiness\nhaughty\nhaul\nhaulage\nhaulages\nhauled\nhauler\nhaulers\nhaulier\nhauliers\nhauling\nhaulm\nhaulmier\nhaulmiest\nhaulms\nhaulmy\nhauls\nhaulyard\nhaulyards\nhaunch\nhaunched\nhaunches\nhaunt\nhaunted\nhaunter\nhaunters\nhaunting\nhauntingly\nhaunts\nhausen\nhausens\nhausfrau\nhausfrauen\nhausfraus\nhaut\nhautbois\nhautboy\nhautboys\nhaute\nhauteur\nhauteurs\nhavdalah\nhavdalahs\nhave\nhavelock\nhavelocks\nhaven\nhavened\nhavening\nhavens\nhaver\nhavered\nhaverel\nhaverels\nhavering\nhavers\nhaversack\nhaversacks\nhaves\nhaving\nhavior\nhaviors\nhaviour\nhaviours\nhavoc\nhavocked\nhavocker\nhavockers\nhavocking\nhavocs\nhaw\nhawed\nhawfinch\nhawfinches\nhawing\nhawk\nhawkbill\nhawkbills\nhawked\nhawker\nhawkers\nhawkey\nhawkeys\nhawkie\nhawkies\nhawking\nhawkings\nhawkish\nhawklike\nhawkmoth\nhawkmoths\nhawknose\nhawknoses\nhawks\nhawkshaw\nhawkshaws\nhawkweed\nhawkweeds\nhaws\nhawse\nhawser\nhawsers\nhawses\nhawthorn\nhawthorns\nhay\nhaycock\nhaycocks\nhayed\nhayer\nhayers\nhayfork\nhayforks\nhaying\nhayings\nhaylage\nhaylages\nhayloft\nhaylofts\nhaymaker\nhaymakers\nhaymow\nhaymows\nhayrack\nhayracks\nhayrick\nhayricks\nhayride\nhayrides\nhays\nhayseed\nhayseeds\nhaystack\nhaystacks\nhayward\nhaywards\nhaywire\nhaywires\nhazan\nhazanim\nhazans\nhazard\nhazarded\nhazarding\nhazardous\nhazardously\nhazardousness\nhazards\nhaze\nhazed\nhazel\nhazelly\nhazelnut\nhazelnuts\nhazels\nhazer\nhazers\nhazes\nhazier\nhaziest\nhazily\nhaziness\nhazinesses\nhazing\nhazings\nhazy\nhazzan\nhazzanim\nhazzans\nhe\nhead\nheadache\nheadaches\nheadachier\nheadachiest\nheadachy\nheadband\nheadbands\nheadboard\nheadboards\nheadcheese\nheadcheeses\nheaddress\nheaddresses\nheaded\nheader\nheaders\nheadgate\nheadgates\nheadgear\nheadgears\nheadhunt\nheadhunted\nheadhunter\nheadhunters\nheadhunting\nheadhunts\nheadier\nheadiest\nheadily\nheading\nheadings\nheadlamp\nheadlamps\nheadland\nheadlands\nheadless\nheadlessness\nheadlight\nheadlights\nheadline\nheadlined\nheadliner\nheadliners\nheadlines\nheadlining\nheadlock\nheadlocks\nheadlong\nheadman\nheadmaster\nheadmasters\nheadmen\nheadmistress\nheadmistresses\nheadmost\nheadnote\nheadnotes\nheadphone\nheadphones\nheadpiece\nheadpieces\nheadpin\nheadpins\nheadquarter\nheadquartered\nheadquartering\nheadquarters\nheadrace\nheadraces\nheadrest\nheadrests\nheadroom\nheadrooms\nheads\nheadsail\nheadsails\nheadset\nheadsets\nheadship\nheadships\nheadshrinker\nheadshrinkers\nheadsman\nheadsmen\nheadstand\nheadstands\nheadstay\nheadstays\nheadstock\nheadstocks\nheadstone\nheadstones\nheadstrong\nheadwaiter\nheadwaiters\nheadwater\nheadwaters\nheadway\nheadways\nheadwind\nheadwinds\nheadword\nheadwords\nheadwork\nheadworks\nheady\nheal\nhealable\nhealed\nhealer\nhealers\nhealing\nheals\nhealth\nhealthful\nhealthfulness\nhealthier\nhealthiest\nhealthily\nhealthiness\nhealths\nhealthy\nheap\nheaped\nheaping\nheaps\nhear\nhearable\nheard\nhearer\nhearers\nhearing\nhearings\nhearken\nhearkened\nhearkening\nhearkens\nhears\nhearsay\nhearsays\nhearse\nhearsed\nhearses\nhearsing\nheart\nheartache\nheartaches\nheartbeat\nheartbeats\nheartbreak\nheartbreaker\nheartbreakers\nheartbreaking\nheartbreakingly\nheartbreaks\nheartbroken\nheartburn\nheartburns\nhearted\nhearten\nheartened\nheartening\nhearteningly\nheartens\nheartfelt\nhearth\nhearths\nhearthstone\nhearthstones\nheartier\nhearties\nheartiest\nheartily\nheartiness\nhearting\nheartland\nheartlands\nheartless\nheartlessly\nheartlessness\nhearts\nheartsick\nheartsickness\nheartwarming\nhearty\nheat\nheatable\nheated\nheatedly\nheater\nheaters\nheath\nheathen\nheathenish\nheathenishly\nheathenism\nheathenisms\nheathenize\nheathenized\nheathenizes\nheathenizing\nheathens\nheather\nheathers\nheathery\nheathier\nheathiest\nheathlike\nheaths\nheathy\nheating\nheatless\nheats\nheatstroke\nheaume\nheaumes\nheave\nheaved\nheaven\nheavenlier\nheavenliest\nheavenliness\nheavenly\nheavens\nheavenward\nheavenwards\nheaver\nheavers\nheaves\nheavier\nheavies\nheaviest\nheavily\nheaviness\nheaving\nheavy\nheavyhearted\nheavyheartedly\nheavyheartedness\nheavyset\nheavyweight\nheavyweights\nhebdomad\nhebdomads\nhebe\nhebephrenia\nhebephrenias\nhebephrenic\nhebes\nhebetate\nhebetated\nhebetates\nhebetating\nhebetic\nhebetude\nhebetudes\nhebraize\nhebraized\nhebraizes\nhebraizing\nhecatomb\nhecatombs\nheck\nheckle\nheckled\nheckler\nhecklers\nheckles\nheckling\nhecks\nhectare\nhectares\nhectic\nhectical\nhectically\nhecticly\nhectograph\nhectographic\nhectometer\nhectometers\nhector\nhectored\nhectoring\nhectors\nheddle\nheddles\nheder\nheders\nhedge\nhedged\nhedgehog\nhedgehogs\nhedgehop\nhedgehopped\nhedgehopper\nhedgehoppers\nhedgehopping\nhedgehops\nhedgepig\nhedgepigs\nhedger\nhedgerow\nhedgerows\nhedgers\nhedges\nhedgier\nhedgiest\nhedging\nhedgingly\nhedgy\nhedonic\nhedonics\nhedonism\nhedonisms\nhedonist\nhedonistic\nhedonistically\nhedonists\nheed\nheeded\nheeder\nheeders\nheedful\nheedfully\nheedfulness\nheeding\nheedless\nheedlessly\nheedlessness\nheeds\nheehaw\nheehawed\nheehawing\nheehaws\nheel\nheelball\nheelballs\nheeled\nheeler\nheelers\nheeling\nheelings\nheelless\nheelpost\nheelposts\nheels\nheeltap\nheeltaps\nheeze\nheezed\nheezes\nheezing\nheft\nhefted\nhefter\nhefters\nheftier\nheftiest\nheftily\nheftiness\nhefting\nhefts\nhefty\nhegari\nhegaris\nhegemonies\nhegemony\nhegira\nhegiras\nhegumen\nhegumene\nhegumenes\nhegumenies\nhegumens\nhegumeny\nheh\nhehs\nheifer\nheifers\nheigh\nheight\nheighten\nheightened\nheightening\nheightens\nheighth\nheighths\nheights\nheil\nheiled\nheiling\nheils\nheinie\nheinies\nheinous\nheinously\nheinousness\nheir\nheirdom\nheirdoms\nheired\nheiress\nheiresses\nheiring\nheirless\nheirloom\nheirlooms\nheirs\nheirship\nheirships\nheist\nheisted\nheister\nheisters\nheisting\nheists\nhejira\nhejiras\nhektare\nhektares\nheld\nheliac\nheliacal\nheliast\nheliasts\nhelical\nhelically\nhelices\nhelicities\nhelicity\nhelicoid\nhelicoids\nhelicon\nhelicons\nhelicopt\nhelicopted\nhelicopter\nhelicoptered\nhelicoptering\nhelicopters\nhelicopting\nhelicopts\nhelio\nheliograph\nheliographer\nheliographers\nheliographic\nheliographies\nheliographs\nheliography\nheliolatrous\nheliolatry\nheliometer\nheliometers\nheliometric\nheliometrically\nhelios\nheliotrope\nheliotropes\nheliotropic\nheliotropism\nheliotropisms\nheliozoan\nheliozoans\nhelipad\nhelipads\nheliport\nheliports\nhelistop\nhelistops\nhelium\nheliums\nhelix\nhelixes\nhell\nhellbent\nhellbox\nhellboxes\nhellcat\nhellcats\nhelled\nhellenization\nhellenizations\nhellenize\nhellenized\nhellenizer\nhellenizers\nhellenizes\nhellenizing\nheller\nhelleri\nhelleries\nhellers\nhellery\nhellfire\nhellfires\nhellhole\nhellholes\nhelling\nhellion\nhellions\nhellish\nhellishly\nhellishness\nhellkite\nhellkites\nhello\nhelloed\nhelloes\nhelloing\nhellos\nhells\nhelluva\nhelm\nhelmed\nhelmet\nhelmeted\nhelmeting\nhelmetlike\nhelmets\nhelming\nhelminth\nhelminths\nhelmless\nhelms\nhelmsman\nhelmsmen\nhelot\nhelotage\nhelotages\nhelotism\nhelotisms\nhelotries\nhelotry\nhelots\nhelp\nhelpable\nhelped\nhelper\nhelpers\nhelpful\nhelpfully\nhelpfulness\nhelping\nhelpings\nhelpless\nhelplessly\nhelplessness\nhelpmate\nhelpmates\nhelpmeet\nhelpmeets\nhelps\nhelve\nhelved\nhelves\nhelving\nhem\nhemagog\nhemagogs\nhemal\nhematal\nhematein\nhemateins\nhematic\nhematics\nhematin\nhematine\nhematines\nhematins\nhematite\nhematites\nhematitic\nhematoid\nhematologic\nhematologist\nhematologists\nhematology\nhematoma\nhematomas\nhematomata\nheme\nhemes\nhemic\nhemin\nhemins\nhemiola\nhemiolas\nhemipter\nhemipters\nhemisphere\nhemispheres\nhemispheric\nhemispherical\nhemline\nhemlines\nhemlock\nhemlocks\nhemmed\nhemmer\nhemmers\nhemming\nhemocoel\nhemocoels\nhemocyte\nhemocytes\nhemoglobin\nhemoglobinic\nhemoglobinous\nhemoglobins\nhemoid\nhemolyze\nhemolyzed\nhemolyzes\nhemolyzing\nhemophilia\nhemophiliac\nhemophiliacs\nhemorrhage\nhemorrhaged\nhemorrhages\nhemorrhagic\nhemorrhaging\nhemorrhoid\nhemorrhoidal\nhemorrhoids\nhemostat\nhemostatic\nhemostatics\nhemostats\nhemp\nhempen\nhempie\nhempier\nhempiest\nhemplike\nhemps\nhempseed\nhempseeds\nhempweed\nhempweeds\nhempy\nhems\nhemstitch\nhemstitched\nhemstitcher\nhemstitchers\nhemstitches\nhemstitching\nhen\nhenbane\nhenbanes\nhenbit\nhenbits\nhence\nhenceforth\nhenchman\nhenchmen\nhencoop\nhencoops\nhenequen\nhenequens\nhenequin\nhenequins\nhenhouse\nhenhouses\nheniquen\nheniquens\nhenlike\nhenna\nhennaed\nhennaing\nhennas\nhenneries\nhennery\nhenpeck\nhenpecked\nhenpecking\nhenpecks\nhenries\nhenry\nhenrys\nhens\nhent\nhented\nhenting\nhents\nhep\nheparin\nheparins\nhepatic\nhepatica\nhepaticae\nhepaticas\nhepatics\nhepatitides\nhepatitis\nhepatize\nhepatized\nhepatizes\nhepatizing\nhepatoma\nhepatomas\nhepatomata\nhepcat\nhepcats\nheptad\nheptads\nheptagon\nheptagonal\nheptagons\nheptane\nheptanes\nheptarch\nheptarchs\nheptose\nheptoses\nher\nherald\nheralded\nheraldic\nheraldically\nheralding\nheraldries\nheraldry\nheralds\nherb\nherbaceous\nherbage\nherbages\nherbal\nherbalist\nherbalists\nherbals\nherbaria\nherbarium\nherbicidal\nherbicide\nherbicides\nherbier\nherbiest\nherbivore\nherbivores\nherbivorous\nherbless\nherblike\nherbs\nherby\nhercules\nherculeses\nherd\nherded\nherder\nherders\nherdic\nherdics\nherding\nherdlike\nherdman\nherdmen\nherds\nherdsman\nherdsmen\nhere\nhereabout\nhereabouts\nhereafter\nhereafters\nhereat\nhereaway\nhereby\nheredes\nhereditament\nhereditaments\nhereditarily\nhereditary\nheredities\nheredity\nherein\nhereinafter\nhereinto\nhereof\nhereon\nheres\nheresies\nheresy\nheretic\nheretical\nheretically\nheretics\nhereto\nheretofore\nheretrices\nheretrix\nheretrixes\nhereunder\nhereunto\nhereupon\nherewith\nheriot\nheriots\nheritabilities\nheritability\nheritable\nheritage\nheritages\nheritor\nheritors\nheritrices\nheritrix\nheritrixes\nherl\nherls\nherm\nherma\nhermae\nhermaean\nhermai\nhermaphrodite\nhermaphrodites\nhermaphroditic\nhermaphroditism\nhermaphroditisms\nhermetic\nhermetically\nhermeticism\nhermetist\nhermetists\nhermit\nhermitage\nhermitages\nhermitic\nhermitism\nhermitisms\nhermitries\nhermitry\nhermits\nherms\nhern\nhernia\nherniae\nhernial\nhernias\nherniate\nherniated\nherniates\nherniating\nherns\nhero\nheroes\nheroic\nheroical\nheroically\nheroics\nheroin\nheroine\nheroines\nheroins\nheroism\nheroisms\nheroize\nheroized\nheroizes\nheroizing\nheron\nheronries\nheronry\nherons\nheros\nherpes\nherpeses\nherpetic\nherpetological\nherpetologist\nherpetologists\nherpetology\nherried\nherries\nherring\nherringbone\nherringbones\nherrings\nherry\nherrying\nhers\nherself\nhertz\nhertzes\nhes\nhesitance\nhesitancies\nhesitancy\nhesitant\nhesitantly\nhesitate\nhesitated\nhesitater\nhesitaters\nhesitates\nhesitating\nhesitatingly\nhesitation\nhesitations\nhessian\nhessians\nhessite\nhessites\nhest\nhests\nhet\nhetaera\nhetaerae\nhetaeras\nhetaeric\nhetaira\nhetairai\nhetairas\nhetero\nheterocycle\nheterocycles\nheterocyclic\nheterocyclics\nheterodox\nheterodoxies\nheterodoxy\nheterodyne\nheterodyned\nheterodynes\nheterodyning\nheterogeneities\nheterogeneity\nheterogeneous\nheterogeneously\nheterogeneousness\nheteronomous\nheteros\nheterosexual\nheterosexualities\nheterosexuality\nheterosexuals\nheth\nheths\nhetman\nhetmans\nhets\nheuch\nheuchs\nheugh\nheughs\nheuristic\nheuristically\nheuristics\nhew\nhewable\nhewed\nhewer\nhewers\nhewing\nhewn\nhews\nhex\nhexad\nhexade\nhexadecimal\nhexades\nhexadic\nhexads\nhexagon\nhexagonal\nhexagonally\nhexagons\nhexagram\nhexagrams\nhexahedron\nhexahedrons\nhexameter\nhexameters\nhexamine\nhexamines\nhexane\nhexanes\nhexapla\nhexaplar\nhexaplas\nhexapod\nhexapodies\nhexapods\nhexapody\nhexarchies\nhexarchy\nhexed\nhexer\nhexerei\nhexereis\nhexers\nhexes\nhexing\nhexone\nhexones\nhexosan\nhexosans\nhexose\nhexoses\nhexyl\nhexyls\nhey\nheyday\nheydays\nheydey\nheydeys\nhi\nhiatal\nhiatus\nhiatuses\nhibachi\nhibachis\nhibernal\nhibernate\nhibernated\nhibernates\nhibernating\nhibernation\nhibernations\nhibernator\nhibernators\nhibiscus\nhibiscuses\nhic\nhiccough\nhiccoughed\nhiccoughing\nhiccoughs\nhiccup\nhiccuped\nhiccuping\nhiccupped\nhiccupping\nhiccups\nhick\nhickey\nhickeys\nhickories\nhickory\nhicks\nhid\nhidable\nhidalgo\nhidalgos\nhidden\nhiddenly\nhide\nhideaway\nhideaways\nhidebound\nhided\nhideless\nhideous\nhideously\nhideousness\nhideout\nhideouts\nhider\nhiders\nhides\nhiding\nhidings\nhidroses\nhidrosis\nhidrotic\nhie\nhied\nhieing\nhiemal\nhierarch\nhierarchal\nhierarchic\nhierarchical\nhierarchically\nhierarchies\nhierarchs\nhierarchy\nhieratic\nhieroglyphic\nhieroglyphically\nhieroglyphics\nhies\nhiggle\nhiggled\nhiggler\nhigglers\nhiggles\nhiggling\nhigh\nhighball\nhighballed\nhighballing\nhighballs\nhighborn\nhighboy\nhighboys\nhighbred\nhighbrow\nhighbrowed\nhighbrowism\nhighbrows\nhighbush\nhigher\nhighest\nhighjack\nhighjacked\nhighjacking\nhighjacks\nhighland\nhighlander\nhighlanders\nhighlands\nhighlight\nhighlighted\nhighlighting\nhighlights\nhighly\nhighness\nhighnesses\nhighroad\nhighroads\nhighs\nhight\nhightail\nhightailed\nhightailing\nhightails\nhighted\nhighth\nhighths\nhighting\nhights\nhighway\nhighwayman\nhighwaymen\nhighways\nhijack\nhijacked\nhijacker\nhijackers\nhijacking\nhijacks\nhijinks\nhike\nhiked\nhiker\nhikers\nhikes\nhiking\nhila\nhilar\nhilarious\nhilariously\nhilariousness\nhilarities\nhilarity\nhilding\nhildings\nhili\nhill\nhillbillies\nhillbilly\nhilled\nhiller\nhillers\nhillier\nhilliest\nhilling\nhillo\nhilloa\nhilloaed\nhilloaing\nhilloas\nhillock\nhillocks\nhillocky\nhilloed\nhilloes\nhilloing\nhillos\nhills\nhillside\nhillsides\nhilltop\nhilltops\nhilly\nhilt\nhilted\nhilting\nhiltless\nhilts\nhilum\nhilus\nhim\nhimatia\nhimation\nhimations\nhimself\nhin\nhind\nhinder\nhindered\nhinderer\nhinderers\nhindering\nhinders\nhindgut\nhindguts\nhindmost\nhindquarter\nhindquarters\nhindrance\nhindrances\nhinds\nhindsight\nhinge\nhinged\nhinger\nhingers\nhinges\nhinging\nhinnied\nhinnies\nhinny\nhinnying\nhins\nhint\nhinted\nhinter\nhinterland\nhinterlands\nhinters\nhinting\nhints\nhip\nhipbone\nhipbones\nhipless\nhiplike\nhipness\nhipnesses\nhipparch\nhipparchs\nhipped\nhipper\nhippest\nhippie\nhippier\nhippies\nhippiest\nhipping\nhippish\nhippo\nhippodrome\nhippodromes\nhippopotami\nhippopotamus\nhippopotamuses\nhippos\nhippy\nhips\nhipshot\nhipster\nhipsters\nhirable\nhiragana\nhiraganas\nhircine\nhire\nhireable\nhired\nhireling\nhirelings\nhirer\nhirers\nhires\nhiring\nhirple\nhirpled\nhirples\nhirpling\nhirsel\nhirseled\nhirseling\nhirselled\nhirselling\nhirsels\nhirsle\nhirsled\nhirsles\nhirsling\nhirsute\nhirsuteness\nhirudin\nhirudins\nhis\nhisn\nhispid\nhiss\nhissed\nhisself\nhisser\nhissers\nhisses\nhissing\nhissings\nhist\nhistamin\nhistamine\nhistamines\nhistaminic\nhistamins\nhisted\nhistidin\nhistidins\nhisting\nhistogen\nhistogens\nhistogram\nhistograms\nhistoid\nhistologic\nhistological\nhistologically\nhistologies\nhistologist\nhistologists\nhistology\nhistone\nhistones\nhistorian\nhistorians\nhistoric\nhistorical\nhistorically\nhistoricalness\nhistoricism\nhistoricisms\nhistoricist\nhistoricists\nhistoricities\nhistoricity\nhistories\nhistoriographer\nhistoriographers\nhistoriographic\nhistoriographical\nhistoriographically\nhistoriographies\nhistoriography\nhistory\nhistrionic\nhistrionically\nhistrionics\nhists\nhit\nhitch\nhitched\nhitcher\nhitchers\nhitches\nhitchhike\nhitchhiked\nhitchhiker\nhitchhikers\nhitchhikes\nhitchhiking\nhitching\nhither\nhitherto\nhitless\nhits\nhitter\nhitters\nhitting\nhive\nhived\nhiveless\nhives\nhiving\nhm\nhmm\nho\nhoactzin\nhoactzines\nhoactzins\nhoagie\nhoagies\nhoagy\nhoar\nhoard\nhoarded\nhoarder\nhoarders\nhoarding\nhoardings\nhoards\nhoarfrost\nhoarfrosts\nhoarier\nhoariest\nhoarily\nhoariness\nhoars\nhoarse\nhoarsely\nhoarsen\nhoarsened\nhoarseness\nhoarsening\nhoarsens\nhoarser\nhoarsest\nhoary\nhoatzin\nhoatzines\nhoatzins\nhoax\nhoaxed\nhoaxer\nhoaxers\nhoaxes\nhoaxing\nhob\nhobbed\nhobbies\nhobbing\nhobble\nhobbled\nhobbler\nhobblers\nhobbles\nhobbling\nhobby\nhobbyhorse\nhobbyhorses\nhobbyist\nhobbyists\nhobgoblin\nhobgoblins\nhoblike\nhobnail\nhobnailed\nhobnails\nhobnob\nhobnobbed\nhobnobbing\nhobnobs\nhobo\nhoboed\nhoboes\nhoboing\nhoboism\nhoboisms\nhobos\nhobs\nhock\nhocked\nhocker\nhockers\nhockey\nhockeys\nhocking\nhocks\nhockshop\nhockshops\nhocus\nhocused\nhocuses\nhocusing\nhocussed\nhocusses\nhocussing\nhod\nhodad\nhodaddies\nhodaddy\nhodads\nhodden\nhoddens\nhoddin\nhoddins\nhodgepodge\nhods\nhoe\nhoecake\nhoecakes\nhoed\nhoedown\nhoedowns\nhoeing\nhoelike\nhoer\nhoers\nhoes\nhog\nhogan\nhogans\nhogback\nhogbacks\nhogfish\nhogfishes\nhogg\nhogged\nhogger\nhoggers\nhogging\nhoggish\nhoggishly\nhoggishness\nhoggs\nhoglike\nhogmanay\nhogmanays\nhogmane\nhogmanes\nhogmenay\nhogmenays\nhognose\nhognoses\nhognut\nhognuts\nhogs\nhogshead\nhogsheads\nhogtie\nhogtied\nhogtieing\nhogties\nhogtying\nhogwash\nhogwashes\nhogweed\nhogweeds\nhoick\nhoicked\nhoicking\nhoicks\nhoiden\nhoidened\nhoidening\nhoidens\nhoise\nhoised\nhoises\nhoising\nhoist\nhoisted\nhoister\nhoisters\nhoisting\nhoists\nhoke\nhoked\nhokes\nhokey\nhoking\nhokku\nhokum\nhokums\nhokypokies\nhokypoky\nholard\nholards\nhold\nholdable\nholdall\nholdalls\nholdback\nholdbacks\nholden\nholder\nholders\nholdfast\nholdfasts\nholding\nholdings\nholdout\nholdouts\nholdover\nholdovers\nholds\nholdup\nholdups\nhole\nholed\nholeless\nholes\nholey\nholibut\nholibuts\nholiday\nholidayed\nholidaying\nholidays\nholier\nholies\nholiest\nholily\nholiness\nholinesses\nholing\nholism\nholisms\nholist\nholistic\nholistically\nholists\nholk\nholked\nholking\nholks\nholla\nhollaed\nhollaing\nholland\nhollands\nhollas\nholler\nhollered\nhollering\nhollers\nhollies\nhollo\nholloa\nholloaed\nholloaing\nholloas\nholloed\nholloes\nholloing\nholloo\nhollooed\nhollooing\nholloos\nhollos\nhollow\nholloware\nhollowed\nhollower\nhollowest\nhollowing\nhollowly\nhollowness\nhollows\nhollowware\nholly\nhollyhock\nhollyhocks\nholm\nholmic\nholmium\nholmiums\nholms\nholocaust\nholocausts\nhologram\nholograms\nholograph\nholographic\nholographies\nholographs\nholography\nhologynies\nhologyny\nholotype\nholotypes\nholozoic\nholp\nholpen\nhols\nholstein\nholsteins\nholster\nholsters\nholt\nholts\nholy\nholyday\nholydays\nholytide\nholytides\nhom\nhomage\nhomaged\nhomager\nhomagers\nhomages\nhomaging\nhombre\nhombres\nhomburg\nhomburgs\nhome\nhomebodies\nhomebody\nhomebred\nhomebreds\nhomecoming\nhomecomings\nhomed\nhomegrown\nhomeland\nhomelands\nhomeless\nhomelier\nhomeliest\nhomelike\nhomeliness\nhomely\nhomemade\nhomemaker\nhomemakers\nhomemaking\nhomeopath\nhomeopathic\nhomeopathically\nhomeopathies\nhomeopaths\nhomeopathy\nhomeostatic\nhomer\nhomered\nhomering\nhomeroom\nhomerooms\nhomers\nhomes\nhomesick\nhomesickness\nhomesite\nhomesites\nhomespun\nhomespuns\nhomestead\nhomesteaded\nhomesteader\nhomesteaders\nhomesteading\nhomesteads\nhomestretch\nhomestretches\nhometown\nhometowns\nhomeward\nhomewards\nhomework\nhomeworks\nhomey\nhomeyness\nhomicidal\nhomicidally\nhomicide\nhomicides\nhomier\nhomiest\nhomiletic\nhomiletical\nhomiletics\nhomilies\nhomilist\nhomilists\nhomily\nhominess\nhominesses\nhoming\nhominian\nhominians\nhominid\nhominids\nhominies\nhominine\nhominoid\nhominoids\nhominy\nhommock\nhommocks\nhomo\nhomogamies\nhomogamy\nhomogeneities\nhomogeneity\nhomogeneous\nhomogeneously\nhomogeneousness\nhomogenies\nhomogenization\nhomogenizations\nhomogenize\nhomogenized\nhomogenizer\nhomogenizers\nhomogenizes\nhomogenizing\nhomogenous\nhomogeny\nhomogonies\nhomogony\nhomograph\nhomographic\nhomographs\nhomolog\nhomological\nhomologically\nhomologies\nhomologize\nhomologized\nhomologizer\nhomologizers\nhomologizes\nhomologizing\nhomologous\nhomologs\nhomology\nhomonym\nhomonymic\nhomonymies\nhomonymous\nhomonymously\nhomonyms\nhomonymy\nhomophone\nhomophones\nhomophonic\nhomophonies\nhomophonous\nhomophony\nhomos\nhomosexual\nhomosexualities\nhomosexuality\nhomosexuals\nhomy\nhonan\nhonans\nhoncho\nhonchos\nhonda\nhondas\nhone\nhoned\nhoner\nhoners\nhones\nhonest\nhonester\nhonestest\nhonesties\nhonestly\nhonesty\nhonewort\nhoneworts\nhoney\nhoneybee\nhoneybees\nhoneybun\nhoneybuns\nhoneycomb\nhoneycombed\nhoneycombing\nhoneycombs\nhoneydew\nhoneydews\nhoneyed\nhoneyful\nhoneying\nhoneymoon\nhoneymooned\nhoneymooner\nhoneymooners\nhoneymooning\nhoneymoons\nhoneys\nhoneysuckle\nhoneysuckles\nhong\nhongs\nhonied\nhoning\nhonk\nhonked\nhonker\nhonkers\nhonkey\nhonkeys\nhonkie\nhonkies\nhonking\nhonks\nhonky\nhonor\nhonorable\nhonorableness\nhonorably\nhonorand\nhonorands\nhonoraria\nhonoraries\nhonorarium\nhonorary\nhonored\nhonoree\nhonorees\nhonorer\nhonorers\nhonorific\nhonorifically\nhonorifics\nhonoring\nhonors\nhonour\nhonoured\nhonourer\nhonourers\nhonouring\nhonours\nhons\nhooch\nhooches\nhood\nhooded\nhoodie\nhoodies\nhooding\nhoodless\nhoodlike\nhoodlum\nhoodlums\nhoodoo\nhoodooed\nhoodooing\nhoodoos\nhoods\nhoodwink\nhoodwinked\nhoodwinker\nhoodwinkers\nhoodwinking\nhoodwinks\nhooey\nhooeys\nhoof\nhoofbeat\nhoofbeats\nhoofed\nhoofer\nhoofers\nhoofing\nhoofless\nhooflike\nhoofs\nhook\nhooka\nhookah\nhookahs\nhookas\nhooked\nhooker\nhookers\nhookey\nhookeys\nhookier\nhookies\nhookiest\nhooking\nhookless\nhooklet\nhooklets\nhooklike\nhooknose\nhooknoses\nhooks\nhookup\nhookups\nhookworm\nhookworms\nhooky\nhoolie\nhooligan\nhooliganism\nhooliganisms\nhooligans\nhooly\nhoop\nhooped\nhooper\nhoopers\nhooping\nhoopla\nhooplas\nhoopless\nhooplike\nhoopoe\nhoopoes\nhoopoo\nhoopoos\nhoops\nhoopster\nhoopsters\nhoorah\nhoorahed\nhoorahing\nhoorahs\nhooray\nhoorayed\nhooraying\nhoorays\nhoosegow\nhoosegows\nhoosgow\nhoosgows\nhoot\nhootch\nhootches\nhooted\nhootenannies\nhootenanny\nhooter\nhooters\nhooting\nhoots\nhooves\nhop\nhope\nhoped\nhopeful\nhopefully\nhopefulness\nhopefuls\nhopeless\nhopelessly\nhopelessness\nhoper\nhopers\nhopes\nhophead\nhopheads\nhoping\nhoplite\nhoplites\nhoplitic\nhopped\nhopper\nhoppers\nhopping\nhopple\nhoppled\nhopples\nhoppling\nhops\nhopsack\nhopsacks\nhopscotch\nhoptoad\nhoptoads\nhora\nhorah\nhorahs\nhoral\nhorary\nhoras\nhorde\nhorded\nhordein\nhordeins\nhordes\nhording\nhorehound\nhorehounds\nhorizon\nhorizons\nhorizontal\nhorizontally\nhorizontals\nhormonal\nhormone\nhormones\nhormonic\nhorn\nhornbeam\nhornbeams\nhornbill\nhornbills\nhornbook\nhornbooks\nhorned\nhornedness\nhornet\nhornets\nhornfels\nhornier\nhorniest\nhornily\nhorniness\nhorning\nhornito\nhornitos\nhornless\nhornlessness\nhornlike\nhornpipe\nhornpipes\nhornpout\nhornpouts\nhorns\nhorntail\nhorntails\nhornworm\nhornworms\nhornwort\nhornworts\nhorny\nhorologe\nhorologes\nhorologic\nhorologies\nhorologist\nhorologists\nhorology\nhoroscope\nhoroscopes\nhorrendous\nhorrendously\nhorrent\nhorrible\nhorribleness\nhorribles\nhorribly\nhorrid\nhorridly\nhorridness\nhorrific\nhorrifically\nhorrified\nhorrifies\nhorrify\nhorrifying\nhorrifyingly\nhorror\nhorrors\nhorse\nhorseback\nhorsebacks\nhorsecar\nhorsecars\nhorsed\nhorseflies\nhorsefly\nhorsehair\nhorsehairs\nhorsehide\nhorsehides\nhorseiest\nhorselaugh\nhorselaughs\nhorselike\nhorseman\nhorsemanship\nhorsemen\nhorseplay\nhorseplayer\nhorseplayers\nhorsepower\nhorseradish\nhorseradishes\nhorses\nhorseshoe\nhorseshoed\nhorseshoer\nhorseshoers\nhorseshoes\nhorseshoing\nhorsetail\nhorsetails\nhorsewhip\nhorsewhipped\nhorsewhipper\nhorsewhippers\nhorsewhipping\nhorsewhips\nhorsewoman\nhorsewomen\nhorsey\nhorsier\nhorsiest\nhorsily\nhorsing\nhorst\nhorste\nhorstes\nhorsts\nhorsy\nhortative\nhortatively\nhorticultural\nhorticulturally\nhorticulture\nhorticultures\nhorticulturist\nhorticulturists\nhosanna\nhosannaed\nhosannaing\nhosannas\nhose\nhosed\nhosel\nhosels\nhosen\nhoses\nhosier\nhosieries\nhosiers\nhosiery\nhosing\nhospice\nhospices\nhospitable\nhospitably\nhospital\nhospitalities\nhospitality\nhospitalization\nhospitalizations\nhospitalize\nhospitalized\nhospitalizes\nhospitalizing\nhospitals\nhospitia\nhospodar\nhospodars\nhost\nhosta\nhostage\nhostages\nhosted\nhostel\nhosteled\nhosteler\nhostelers\nhosteling\nhostelries\nhostelry\nhostels\nhostess\nhostessed\nhostesses\nhostessing\nhostile\nhostilely\nhostiles\nhostilities\nhostility\nhosting\nhostler\nhostlers\nhostly\nhosts\nhot\nhotbed\nhotbeds\nhotblood\nhotbloods\nhotbox\nhotboxes\nhotcake\nhotcakes\nhotch\nhotched\nhotches\nhotching\nhotchpot\nhotchpots\nhotdog\nhotdogged\nhotdogging\nhotdogs\nhotel\nhotelier\nhoteliers\nhotelman\nhotelmen\nhotels\nhotfoot\nhotfooted\nhotfooting\nhotfoots\nhothead\nhotheaded\nhotheadedly\nhotheadedness\nhotheads\nhothouse\nhothouses\nhotly\nhotness\nhotnesses\nhotpress\nhotpressed\nhotpresses\nhotpressing\nhotrod\nhotrods\nhots\nhotshot\nhotshots\nhotspur\nhotspurs\nhotted\nhotter\nhottest\nhotting\nhottish\nhoudah\nhoudahs\nhound\nhounded\nhounder\nhounders\nhounding\nhounds\nhour\nhourglass\nhourglasses\nhouri\nhouris\nhourly\nhours\nhouse\nhouseboat\nhouseboats\nhouseboy\nhouseboys\nhousebreak\nhousebreaker\nhousebreakers\nhousebreaking\nhousebreaks\nhousebroke\nhousebroken\nhouseclean\nhousecleaned\nhousecleaning\nhousecleans\nhousecoat\nhousecoats\nhoused\nhousedress\nhousedresses\nhouseflies\nhousefly\nhouseful\nhousefuls\nhousehold\nhouseholder\nhouseholders\nhouseholds\nhousekeeper\nhousekeepers\nhousekeeping\nhousel\nhouseled\nhouselights\nhouseling\nhouselled\nhouselling\nhousels\nhousemaid\nhousemaids\nhouseman\nhousemen\nhousemother\nhousemothers\nhouser\nhousers\nhouses\nhousetop\nhousetops\nhousewarming\nhousewarmings\nhousewife\nhousewifely\nhousewifery\nhousewives\nhousework\nhousing\nhousings\nhove\nhovel\nhoveled\nhoveling\nhovelled\nhovelling\nhovels\nhover\nhovered\nhoverer\nhoverers\nhovering\nhoveringly\nhovers\nhow\nhowbeit\nhowdah\nhowdahs\nhowdie\nhowdies\nhowdy\nhowe\nhowes\nhowever\nhowf\nhowff\nhowffs\nhowfs\nhowitzer\nhowitzers\nhowk\nhowked\nhowking\nhowks\nhowl\nhowled\nhowler\nhowlers\nhowlet\nhowlets\nhowling\nhowlingly\nhowls\nhows\nhowsoever\nhoy\nhoya\nhoyas\nhoyden\nhoydened\nhoydening\nhoydenish\nhoydens\nhoyle\nhoyles\nhoys\nhuarache\nhuaraches\nhuaracho\nhuarachos\nhub\nhubbies\nhubbub\nhubbubs\nhubby\nhubcap\nhubcaps\nhubris\nhubrises\nhubristic\nhubs\nhuck\nhuckle\nhuckleberries\nhuckleberry\nhuckles\nhucks\nhuckster\nhuckstered\nhuckstering\nhucksterism\nhucksterisms\nhucksters\nhuddle\nhuddled\nhuddler\nhuddlers\nhuddles\nhuddling\nhue\nhued\nhueless\nhues\nhuff\nhuffed\nhuffier\nhuffiest\nhuffily\nhuffiness\nhuffing\nhuffish\nhuffs\nhuffy\nhug\nhuge\nhugely\nhugeness\nhugenesses\nhugeous\nhuger\nhugest\nhuggable\nhugged\nhugger\nhuggers\nhugging\nhugs\nhuh\nhuic\nhula\nhulas\nhulk\nhulked\nhulkier\nhulkiest\nhulking\nhulks\nhulky\nhull\nhullabaloo\nhullabaloos\nhulled\nhuller\nhullers\nhulling\nhullo\nhulloa\nhulloaed\nhulloaing\nhulloas\nhulloed\nhulloes\nhulloing\nhullos\nhulls\nhum\nhuman\nhumane\nhumanely\nhumaneness\nhumaner\nhumanest\nhumanise\nhumanised\nhumanises\nhumanising\nhumanism\nhumanisms\nhumanist\nhumanistic\nhumanistically\nhumanists\nhumanitarian\nhumanitarianism\nhumanitarianisms\nhumanitarians\nhumanities\nhumanity\nhumanization\nhumanizations\nhumanize\nhumanized\nhumanizer\nhumanizers\nhumanizes\nhumanizing\nhumankind\nhumanlike\nhumanly\nhumanness\nhumanoid\nhumanoids\nhumans\nhumate\nhumates\nhumble\nhumbled\nhumbleness\nhumbler\nhumblers\nhumbles\nhumblest\nhumbling\nhumbly\nhumbug\nhumbugged\nhumbugging\nhumbugs\nhumdrum\nhumdrums\nhumectant\nhumectants\nhumeral\nhumerals\nhumeri\nhumerus\nhumic\nhumid\nhumidified\nhumidifier\nhumidifiers\nhumidifies\nhumidify\nhumidifying\nhumidities\nhumidity\nhumidly\nhumidor\nhumidors\nhumified\nhumiliate\nhumiliated\nhumiliates\nhumiliating\nhumiliatingly\nhumiliation\nhumiliations\nhumilities\nhumility\nhummable\nhummed\nhummer\nhummers\nhumming\nhummingbird\nhummingbirds\nhummock\nhummocks\nhummocky\nhumor\nhumoral\nhumored\nhumoresque\nhumorful\nhumoring\nhumorist\nhumoristic\nhumorists\nhumorless\nhumorlessness\nhumorous\nhumorously\nhumorousness\nhumors\nhumour\nhumoured\nhumouring\nhumours\nhump\nhumpback\nhumpbacked\nhumpbacks\nhumped\nhumph\nhumphed\nhumphing\nhumphs\nhumpier\nhumpiest\nhumping\nhumpless\nhumps\nhumpy\nhums\nhumus\nhumuses\nhun\nhunch\nhunchback\nhunchbacked\nhunchbacks\nhunched\nhunches\nhunching\nhundred\nhundredfold\nhundreds\nhundredth\nhundredths\nhundredweight\nhundredweights\nhung\nhunger\nhungered\nhungering\nhungers\nhungrier\nhungriest\nhungrily\nhungriness\nhungry\nhunh\nhunk\nhunker\nhunkered\nhunkering\nhunkers\nhunkies\nhunks\nhunky\nhunnish\nhuns\nhunt\nhuntable\nhunted\nhuntedly\nhunter\nhunters\nhunting\nhuntings\nhuntress\nhuntresses\nhunts\nhuntsman\nhuntsmen\nhup\nhurdies\nhurdle\nhurdled\nhurdler\nhurdlers\nhurdles\nhurdling\nhurds\nhurl\nhurled\nhurler\nhurlers\nhurley\nhurleys\nhurlies\nhurling\nhurlings\nhurls\nhurly\nhurrah\nhurrahed\nhurrahing\nhurrahs\nhurray\nhurrayed\nhurraying\nhurrays\nhurricane\nhurricanes\nhurried\nhurriedly\nhurriedness\nhurrier\nhurriers\nhurries\nhurry\nhurrying\nhurryingly\nhurst\nhurt\nhurter\nhurters\nhurtful\nhurtfully\nhurtfulness\nhurting\nhurtle\nhurtled\nhurtles\nhurtless\nhurtling\nhurts\nhusband\nhusbanded\nhusbander\nhusbanders\nhusbanding\nhusbandman\nhusbandmen\nhusbandries\nhusbandry\nhusbands\nhush\nhushaby\nhushed\nhushedly\nhushes\nhushful\nhushing\nhusk\nhusked\nhusker\nhuskers\nhuskier\nhuskies\nhuskiest\nhuskily\nhuskiness\nhusking\nhuskings\nhusklike\nhusks\nhusky\nhussar\nhussars\nhussies\nhussy\nhustings\nhustle\nhustled\nhustler\nhustlers\nhustles\nhustling\nhuswife\nhuswifes\nhuswives\nhut\nhutch\nhutched\nhutches\nhutching\nhutlike\nhutment\nhutments\nhuts\nhutted\nhutting\nhutzpa\nhutzpah\nhutzpahs\nhutzpas\nhuzza\nhuzzaed\nhuzzah\nhuzzahed\nhuzzahing\nhuzzahs\nhuzzaing\nhuzzas\nhwan\nhyacinth\nhyacinths\nhyaena\nhyaenas\nhyaenic\nhyalin\nhyaline\nhyalines\nhyalins\nhyalite\nhyalites\nhyalogen\nhyalogens\nhyaloid\nhyaloids\nhybrid\nhybridization\nhybridizations\nhybridize\nhybridized\nhybridizer\nhybridizers\nhybridizes\nhybridizing\nhybrids\nhybris\nhybrises\nhydatid\nhydatids\nhydra\nhydracid\nhydracids\nhydrae\nhydragog\nhydragogs\nhydrangea\nhydrangeas\nhydrant\nhydranth\nhydranths\nhydrants\nhydras\nhydrase\nhydrases\nhydrate\nhydrated\nhydrates\nhydrating\nhydration\nhydrations\nhydrator\nhydrators\nhydraulic\nhydraulically\nhydraulics\nhydria\nhydriae\nhydric\nhydrid\nhydride\nhydrides\nhydrids\nhydro\nhydrocarbon\nhydrocarbons\nhydrochloric\nhydrochloride\nhydrochlorides\nhydrodynamic\nhydrodynamically\nhydrodynamics\nhydroelectric\nhydroelectricities\nhydroelectricity\nhydrofoil\nhydrofoils\nhydrogel\nhydrogels\nhydrogen\nhydrogenate\nhydrogenated\nhydrogenates\nhydrogenating\nhydrogenation\nhydrogenations\nhydrogenous\nhydrogens\nhydroid\nhydroids\nhydrokinetic\nhydrokinetics\nhydrologic\nhydrological\nhydrologically\nhydrologies\nhydrologist\nhydrologists\nhydrology\nhydrolytic\nhydrolyzable\nhydrolyze\nhydrolyzed\nhydrolyzes\nhydrolyzing\nhydromel\nhydromels\nhydrometer\nhydrometers\nhydrometric\nhydrometrical\nhydrometries\nhydrometry\nhydronic\nhydrophobia\nhydrophobias\nhydrophobic\nhydrophobicities\nhydrophobicity\nhydropic\nhydroplane\nhydroplaned\nhydroplanes\nhydroplaning\nhydroponic\nhydroponically\nhydroponics\nhydrops\nhydropses\nhydropsies\nhydropsy\nhydros\nhydrosol\nhydrosols\nhydrostatic\nhydrostatically\nhydrostatics\nhydrotherapy\nhydrous\nhydroxide\nhydroxides\nhydroxy\nhydroxyl\nhydroxyls\nhyena\nhyenas\nhyenic\nhyenine\nhyenoid\nhyetal\nhygeist\nhygeists\nhygieist\nhygieists\nhygiene\nhygienes\nhygienic\nhygienically\nhygienics\nhygienist\nhygienists\nhygrometer\nhygrometers\nhygrometric\nhygroscope\nhygroscopes\nhygroscopic\nhygroscopically\nhygroscopicities\nhygroscopicity\nhying\nhyla\nhylas\nhylozoic\nhymen\nhymenal\nhymeneal\nhymeneals\nhymenia\nhymenial\nhymenium\nhymeniums\nhymens\nhymn\nhymnal\nhymnals\nhymnaries\nhymnary\nhymnbook\nhymnbooks\nhymned\nhymning\nhymnist\nhymnists\nhymnless\nhymnlike\nhymnodies\nhymnody\nhymnologies\nhymnology\nhymns\nhyoid\nhyoidal\nhyoidean\nhyoids\nhyoscine\nhyoscines\nhyp\nhype\nhyped\nhyper\nhyperactive\nhyperactivities\nhyperactivity\nhyperbola\nhyperbolae\nhyperbolas\nhyperbole\nhyperboles\nhyperbolic\nhyperbolically\nhypercritic\nhypercritical\nhypercritically\nhypercriticism\nhypercriticisms\nhypergol\nhypergols\nhyperon\nhyperons\nhyperope\nhyperopes\nhypersensitive\nhypersensitivities\nhypersensitivity\nhypertension\nhypertensions\nhyperventilation\nhyperventilations\nhypes\nhypha\nhyphae\nhyphal\nhyphemia\nhyphemias\nhyphen\nhyphenate\nhyphenated\nhyphenates\nhyphenating\nhyphenation\nhyphenations\nhyphened\nhyphening\nhyphenless\nhyphens\nhypnic\nhypnoid\nhypnoses\nhypnosis\nhypnotic\nhypnotically\nhypnotics\nhypnotism\nhypnotisms\nhypnotist\nhypnotists\nhypnotizability\nhypnotizable\nhypnotize\nhypnotized\nhypnotizes\nhypnotizing\nhypo\nhypoacid\nhypochondria\nhypochondriac\nhypochondriacal\nhypochondriacally\nhypochondriacs\nhypochondrias\nhypocrisies\nhypocrisy\nhypocrite\nhypocrites\nhypocritical\nhypocritically\nhypoderm\nhypodermal\nhypodermic\nhypodermically\nhypodermics\nhypoderms\nhypoed\nhypogea\nhypogeal\nhypogean\nhypogene\nhypogeum\nhypogynies\nhypogyny\nhypoing\nhyponea\nhyponeas\nhyponoia\nhyponoias\nhypopnea\nhypopneas\nhypopyon\nhypopyons\nhypos\nhypotenuse\nhypotenuses\nhypothalamic\nhypothalamus\nhypothec\nhypothecate\nhypothecated\nhypothecates\nhypothecating\nhypothecation\nhypothecations\nhypothecator\nhypothecators\nhypothecs\nhypotheses\nhypothesis\nhypothesize\nhypothesized\nhypothesizes\nhypothesizing\nhypothetical\nhypothetically\nhypoxia\nhypoxias\nhypoxic\nhyps\nhyraces\nhyracoid\nhyracoids\nhyrax\nhyraxes\nhyson\nhysons\nhyssop\nhyssops\nhysterectomies\nhysterectomy\nhystereses\nhysteresis\nhysteretic\nhysteria\nhysterias\nhysteric\nhysterical\nhysterically\nhysterics\nhyte\ni\niamb\niambi\niambic\niambics\niambs\niambus\niambuses\niatric\niatrical\nibex\nibexes\nibices\nibidem\nibis\nibises\nice\niceberg\nicebergs\niceblink\niceblinks\niceboat\niceboats\nicebound\nicebox\niceboxes\nicebreaker\nicebreakers\nicecap\nicecaps\niced\nicefall\nicefalls\nicehouse\nicehouses\nicekhana\nicekhanas\niceless\nicelike\niceman\nicemen\nices\nich\nichneumon\nichneumons\nichnite\nichnites\nichor\nichorous\nichors\nichs\nichthyic\nichthyological\nichthyologically\nichthyologist\nichthyologists\nichthyology\nicicle\nicicled\nicicles\nicier\niciest\nicily\niciness\nicinesses\nicing\nicings\nick\nicker\nickers\nickier\nickiest\nicky\nicon\nicones\niconic\niconical\niconically\niconoclasm\niconoclasms\niconoclast\niconoclastic\niconoclastically\niconoclasts\niconographer\niconographers\niconographic\niconographical\niconographically\niconographies\niconography\nicons\nicteric\nicterics\nicterus\nicteruses\nictic\nictus\nictuses\nicy\nid\nidea\nideal\nidealess\nidealise\nidealised\nidealises\nidealising\nidealism\nidealisms\nidealist\nidealistic\nidealistically\nidealists\nidealities\nideality\nidealization\nidealizations\nidealize\nidealized\nidealizer\nidealizers\nidealizes\nidealizing\nideally\nidealogies\nidealogy\nideals\nideas\nideate\nideated\nideates\nideating\nideation\nideational\nideations\nideative\nidem\nidentic\nidentical\nidentically\nidenticalness\nidenties\nidentifiable\nidentifiably\nidentification\nidentifications\nidentified\nidentifier\nidentifiers\nidentifies\nidentify\nidentifying\nidentities\nidentity\nideogram\nideogramic\nideogrammatic\nideogrammic\nideograms\nideograph\nideographic\nideographically\nideographs\nideologic\nideological\nideologically\nideologies\nideologist\nideologists\nideologue\nideologues\nideology\nides\nidiocies\nidiocy\nidiographic\nidiolect\nidiolects\nidiom\nidiomatic\nidiomatically\nidiomaticness\nidioms\nidiopathic\nidiosyncrasies\nidiosyncrasy\nidiosyncratic\nidiosyncratically\nidiot\nidiotic\nidiotically\nidioticalness\nidiotism\nidiotisms\nidiots\nidle\nidled\nidleness\nidlenesses\nidler\nidlers\nidles\nidlesse\nidlesses\nidlest\nidling\nidly\nidocrase\nidocrases\nidol\nidolater\nidolaters\nidolatries\nidolatrous\nidolatrously\nidolatrousness\nidolatry\nidolise\nidolised\nidoliser\nidolisers\nidolises\nidolising\nidolism\nidolisms\nidolization\nidolizations\nidolize\nidolized\nidolizer\nidolizers\nidolizes\nidolizing\nidols\nidoneities\nidoneity\nidoneous\nids\nidyl\nidylist\nidylists\nidyll\nidyllic\nidyllically\nidyllist\nidyllists\nidylls\nidyls\nif\niffier\niffiest\niffiness\niffinesses\niffy\nifs\nigloo\nigloos\niglu\niglus\nignatia\nignatias\nigneous\nignescent\nignified\nignifies\nignify\nignifying\nignitable\nignite\nignited\nigniter\nigniters\nignites\nigniting\nignition\nignitions\nignitor\nignitors\nignitron\nignitrons\nignobility\nignoble\nignobleness\nignobly\nignominies\nignominious\nignominiously\nignominiousness\nignominy\nignorable\nignoramus\nignoramuses\nignorance\nignorances\nignorant\nignorantly\nignore\nignored\nignorer\nignorers\nignores\nignoring\niguana\niguanas\niguanian\niguanians\nihram\nihrams\nikebana\nikebanas\nikon\nikons\nilea\nileac\nileal\nileitides\nileitis\nileum\nileus\nileuses\nilex\nilexes\nilia\niliac\niliad\niliads\nilial\nilium\nilk\nilka\nilks\nill\nillation\nillations\nillative\nillatives\nillegal\nillegalities\nillegality\nillegalization\nillegalizations\nillegalize\nillegalized\nillegalizes\nillegalizing\nillegally\nillegibility\nillegible\nillegibly\nillegitimacies\nillegitimacy\nillegitimate\nillegitimately\nilliberal\nilliberalism\nilliberality\nilliberally\nilliberalness\nillicit\nillicitly\nillimitability\nillimitable\nillimitableness\nillimitably\nillinium\nilliniums\nilliquid\nilliquidity\nillite\nilliteracies\nilliteracy\nilliterate\nilliterately\nilliterateness\nilliterates\nillites\nillitic\nillness\nillnesses\nillogic\nillogical\nillogicalities\nillogicality\nillogically\nillogicalness\nillogics\nills\nillume\nillumed\nillumes\nilluminable\nilluminance\nilluminances\nilluminate\nilluminated\nilluminates\nilluminati\nilluminating\nilluminatingly\nillumination\nilluminations\nilluminative\nilluminator\nilluminators\nillumine\nillumined\nillumines\nilluming\nillumining\nilluminism\nilluminisms\nilluminist\nilluminists\nillusion\nillusional\nillusionary\nillusionism\nillusionist\nillusionistic\nillusionistically\nillusionists\nillusions\nillusive\nillusively\nillusiveness\nillusorily\nillusoriness\nillusory\nillustrate\nillustrated\nillustrates\nillustrating\nillustration\nillustrational\nillustrations\nillustrative\nillustratively\nillustrator\nillustrators\nillustrious\nillustriously\nillustriousness\nilluvia\nilluvial\nilluvium\nilluviums\nilly\nilmenite\nilmenites\nimage\nimaged\nimageries\nimagery\nimages\nimaginable\nimaginableness\nimaginably\nimaginal\nimaginaries\nimaginarily\nimaginariness\nimaginary\nimagination\nimaginations\nimaginative\nimaginatively\nimaginativeness\nimagine\nimagined\nimaginer\nimaginers\nimagines\nimaging\nimagining\nimagism\nimagisms\nimagist\nimagistic\nimagistically\nimagists\nimago\nimagoes\nimam\nimamate\nimamates\nimams\nimaret\nimarets\nimaum\nimaums\nimbalance\nimbalances\nimbalm\nimbalmed\nimbalmer\nimbalmers\nimbalming\nimbalms\nimbark\nimbarked\nimbarking\nimbarks\nimbecile\nimbeciles\nimbecilic\nimbecilities\nimbecility\nimbed\nimbedded\nimbedding\nimbeds\nimbibe\nimbibed\nimbiber\nimbibers\nimbibibes\nimbibing\nimbibition\nimbibitions\nimbitter\nimbittered\nimbittering\nimbitters\nimblaze\nimblazed\nimblazes\nimblazing\nimbodied\nimbodies\nimbody\nimbodying\nimbolden\nimboldened\nimboldening\nimboldens\nimbosom\nimbosomed\nimbosoming\nimbosoms\nimbower\nimbowered\nimbowering\nimbowers\nimbricate\nimbricated\nimbricates\nimbricating\nimbrication\nimbrications\nimbroglio\nimbroglios\nimbrown\nimbrowned\nimbrowning\nimbrowns\nimbrue\nimbrued\nimbrues\nimbruing\nimbrute\nimbruted\nimbrutes\nimbruting\nimbue\nimbued\nimbues\nimbuing\nimid\nimide\nimides\nimidic\nimido\nimids\nimine\nimines\nimino\nimitable\nimitableness\nimitate\nimitated\nimitates\nimitating\nimitation\nimitations\nimitative\nimitatively\nimitativeness\nimitator\nimitators\nimmaculacy\nimmaculate\nimmaculately\nimmane\nimmanence\nimmanences\nimmanencies\nimmanency\nimmanent\nimmanently\nimmaterial\nimmaterialism\nimmaterialist\nimmaterialists\nimmaterialities\nimmateriality\nimmaterialize\nimmaterialized\nimmaterializes\nimmaterializing\nimmature\nimmaturely\nimmatures\nimmaturity\nimmeasurable\nimmeasurableness\nimmeasurably\nimmediacies\nimmediacy\nimmediate\nimmediately\nimmediateness\nimmemorial\nimmemorially\nimmense\nimmensely\nimmenseness\nimmenser\nimmensest\nimmensities\nimmensity\nimmensurable\nimmerge\nimmerged\nimmergence\nimmergences\nimmerges\nimmerging\nimmerse\nimmersed\nimmerses\nimmersible\nimmersing\nimmersion\nimmersions\nimmesh\nimmeshed\nimmeshes\nimmeshing\nimmethodical\nimmethodically\nimmies\nimmigrant\nimmigrants\nimmigrate\nimmigrated\nimmigrates\nimmigrating\nimmigration\nimmigrational\nimmigrations\nimminence\nimminences\nimminencies\nimminency\nimminent\nimminently\nimmingle\nimmingled\nimmingles\nimmingling\nimmiscibility\nimmiscible\nimmiscibly\nimmitigable\nimmitigableness\nimmitigably\nimmix\nimmixed\nimmixes\nimmixing\nimmixture\nimmobile\nimmobility\nimmobilization\nimmobilizations\nimmobilize\nimmobilized\nimmobilizer\nimmobilizers\nimmobilizes\nimmobilizing\nimmoderacies\nimmoderacy\nimmoderate\nimmoderately\nimmoderateness\nimmoderation\nimmoderations\nimmodest\nimmodesties\nimmodestly\nimmodesty\nimmolate\nimmolated\nimmolates\nimmolating\nimmolation\nimmolations\nimmolator\nimmolators\nimmoral\nimmoralist\nimmoralists\nimmoralities\nimmorality\nimmorally\nimmortal\nimmortalities\nimmortality\nimmortalization\nimmortalizations\nimmortalize\nimmortalized\nimmortalizer\nimmortalizers\nimmortalizes\nimmortalizing\nimmortally\nimmortals\nimmotile\nimmovabilities\nimmovability\nimmovable\nimmovableness\nimmovables\nimmovably\nimmune\nimmunes\nimmunise\nimmunised\nimmunises\nimmunising\nimmunities\nimmunity\nimmunization\nimmunizations\nimmunize\nimmunized\nimmunizes\nimmunizing\nimmunogenic\nimmunologic\nimmunological\nimmunologically\nimmunologist\nimmunologists\nimmunology\nimmure\nimmured\nimmurement\nimmurements\nimmures\nimmuring\nimmutability\nimmutable\nimmutableness\nimmutably\nimmy\nimp\nimpact\nimpacted\nimpacter\nimpacters\nimpacting\nimpaction\nimpactions\nimpactive\nimpactor\nimpactors\nimpacts\nimpaint\nimpainted\nimpainting\nimpaints\nimpair\nimpaired\nimpairer\nimpairers\nimpairing\nimpairment\nimpairments\nimpairs\nimpala\nimpalas\nimpale\nimpaled\nimpalement\nimpalements\nimpaler\nimpalers\nimpales\nimpaling\nimpalpability\nimpalpable\nimpalpably\nimpanel\nimpaneled\nimpaneling\nimpanelled\nimpanelling\nimpanels\nimparities\nimparity\nimpark\nimparked\nimparking\nimparks\nimpart\nimpartation\nimpartations\nimparted\nimparter\nimparters\nimpartial\nimpartialities\nimpartiality\nimpartially\nimpartible\nimpartibly\nimparting\nimpartment\nimpartments\nimparts\nimpassability\nimpassable\nimpassableness\nimpassably\nimpasse\nimpasses\nimpassibility\nimpassible\nimpassibly\nimpassion\nimpassioned\nimpassioning\nimpassions\nimpassive\nimpassively\nimpassiveness\nimpassivities\nimpassivity\nimpaste\nimpasted\nimpastes\nimpasting\nimpasto\nimpastos\nimpatience\nimpatiens\nimpatient\nimpatiently\nimpavid\nimpawn\nimpawned\nimpawning\nimpawns\nimpeach\nimpeachable\nimpeached\nimpeacher\nimpeachers\nimpeaches\nimpeaching\nimpeachment\nimpeachments\nimpearl\nimpearled\nimpearling\nimpearls\nimpeccability\nimpeccable\nimpeccably\nimpecuniosity\nimpecunious\nimpecuniously\nimpecuniousness\nimped\nimpedance\nimpedances\nimpede\nimpeded\nimpeder\nimpeders\nimpedes\nimpediment\nimpedimenta\nimpediments\nimpeding\nimpel\nimpelled\nimpeller\nimpellers\nimpelling\nimpellor\nimpellors\nimpels\nimpend\nimpended\nimpending\nimpends\nimpenetrability\nimpenetrable\nimpenetrably\nimpenitence\nimpenitences\nimpenitent\nimpenitently\nimperative\nimperatively\nimperativeness\nimperatives\nimperceptible\nimperceptibly\nimperceptive\nimperceptiveness\nimperfect\nimperfection\nimperfections\nimperfective\nimperfectly\nimperfectness\nimperforate\nimperia\nimperial\nimperialism\nimperialisms\nimperialist\nimperialistic\nimperialistically\nimperialists\nimperially\nimperials\nimperil\nimperiled\nimperiling\nimperilled\nimperilling\nimperilment\nimperilments\nimperils\nimperious\nimperiously\nimperiousness\nimperishabilities\nimperishability\nimperishable\nimperishableness\nimperishably\nimperium\nimperiums\nimpermanence\nimpermanences\nimpermanency\nimpermanent\nimpermanently\nimpermeabilities\nimpermeability\nimpermeable\nimpermissibility\nimpermissible\nimpermissibly\nimpersonal\nimpersonalities\nimpersonality\nimpersonalization\nimpersonalizations\nimpersonalize\nimpersonalized\nimpersonalizes\nimpersonalizing\nimpersonally\nimpersonate\nimpersonated\nimpersonates\nimpersonating\nimpersonation\nimpersonations\nimpersonator\nimpersonators\nimpertinence\nimpertinences\nimpertinencies\nimpertinency\nimpertinent\nimpertinently\nimperturbabilities\nimperturbability\nimperturbable\nimperturbably\nimpervious\nimperviously\nimperviousness\nimpetigo\nimpetigos\nimpetrate\nimpetrated\nimpetrates\nimpetrating\nimpetration\nimpetrations\nimpetuosities\nimpetuosity\nimpetuous\nimpetuously\nimpetuousness\nimpetus\nimpetuses\nimphee\nimphees\nimpi\nimpieties\nimpiety\nimping\nimpinge\nimpinged\nimpingement\nimpingements\nimpinger\nimpingers\nimpinges\nimpinging\nimpings\nimpious\nimpiously\nimpis\nimpish\nimpishly\nimpishness\nimplacabilities\nimplacability\nimplacable\nimplacably\nimplant\nimplantable\nimplantation\nimplantations\nimplanted\nimplanter\nimplanters\nimplanting\nimplants\nimplausibilities\nimplausibility\nimplausible\nimplausibly\nimplead\nimpleaded\nimpleading\nimpleads\nimpledge\nimpledged\nimpledges\nimpledging\nimplement\nimplementation\nimplementations\nimplemented\nimplementing\nimplements\nimplicate\nimplicated\nimplicates\nimplicating\nimplication\nimplications\nimplicative\nimplicatively\nimplicativeness\nimplicit\nimplicitly\nimplicitness\nimplied\nimplies\nimplode\nimploded\nimplodes\nimploding\nimplore\nimplored\nimplorer\nimplorers\nimplores\nimploring\nimploringly\nimplosion\nimplosions\nimplosive\nimply\nimplying\nimpolicies\nimpolicy\nimpolite\nimpolitely\nimpoliteness\nimpolitic\nimpolitical\nimpolitically\nimpoliticly\nimponderabilities\nimponderability\nimponderable\nimponderables\nimponderably\nimpone\nimponed\nimpones\nimponing\nimporous\nimport\nimportable\nimportance\nimportances\nimportant\nimportantly\nimportation\nimportations\nimported\nimporter\nimporters\nimporting\nimports\nimportunate\nimportunately\nimportunateness\nimportune\nimportuned\nimportunely\nimportuner\nimportuners\nimportunes\nimportuning\nimportunities\nimportunity\nimpose\nimposed\nimposer\nimposers\nimposes\nimposing\nimposingly\nimposition\nimpositions\nimpossibilities\nimpossibility\nimpossible\nimpossibleness\nimpossibly\nimpost\nimposted\nimposter\nimposters\nimposting\nimpostor\nimpostors\nimposts\nimposture\nimpostures\nimpotence\nimpotences\nimpotencies\nimpotency\nimpotent\nimpotently\nimpotents\nimpound\nimpounded\nimpounding\nimpoundment\nimpoundments\nimpounds\nimpoverish\nimpoverished\nimpoverisher\nimpoverishers\nimpoverishes\nimpoverishing\nimpoverishment\nimpoverishments\nimpower\nimpowered\nimpowering\nimpowers\nimpracticabilities\nimpracticability\nimpracticable\nimpracticably\nimpractical\nimpracticalities\nimpracticality\nimprecate\nimprecated\nimprecates\nimprecating\nimprecation\nimprecations\nimprecatory\nimprecise\nimprecisely\nimpreciseness\nimprecision\nimprecisions\nimpregn\nimpregnability\nimpregnable\nimpregnableness\nimpregnably\nimpregnate\nimpregnated\nimpregnates\nimpregnating\nimpregnation\nimpregnations\nimpregnator\nimpregnators\nimpregned\nimpregning\nimpregns\nimpresa\nimpresario\nimpresarios\nimpresas\nimprese\nimpreses\nimpress\nimpressed\nimpresses\nimpressibility\nimpressible\nimpressibly\nimpressing\nimpression\nimpressionability\nimpressionable\nimpressionably\nimpressionism\nimpressionisms\nimpressionist\nimpressionistic\nimpressionists\nimpressions\nimpressive\nimpressively\nimpressiveness\nimpressment\nimpressments\nimprest\nimprests\nimprimatur\nimprimaturs\nimprimis\nimprint\nimprinted\nimprinter\nimprinters\nimprinting\nimprints\nimprison\nimprisonable\nimprisoned\nimprisoning\nimprisonment\nimprisonments\nimprisons\nimprobabilities\nimprobability\nimprobable\nimprobably\nimpromptu\nimproper\nimproperly\nimproperness\nimproprieties\nimpropriety\nimprovability\nimprovable\nimprovably\nimprove\nimproved\nimprovement\nimprovements\nimprover\nimprovers\nimproves\nimprovidence\nimprovidences\nimprovident\nimprovidently\nimproving\nimprovisation\nimprovisational\nimprovisationally\nimprovisations\nimprovisator\nimprovisatorial\nimprovisators\nimprovisatory\nimprovise\nimprovised\nimproviser\nimprovisers\nimprovises\nimprovising\nimprovisor\nimprovisors\nimprudence\nimprudences\nimprudent\nimprudently\nimps\nimpudence\nimpudences\nimpudent\nimpudently\nimpugn\nimpugnable\nimpugned\nimpugner\nimpugners\nimpugning\nimpugns\nimpuissance\nimpuissant\nimpulse\nimpulsed\nimpulses\nimpulsing\nimpulsion\nimpulsions\nimpulsive\nimpulsively\nimpulsiveness\nimpulsivity\nimpunities\nimpunity\nimpure\nimpurely\nimpureness\nimpurities\nimpurity\nimputabilities\nimputability\nimputable\nimputation\nimputations\nimputative\nimputatively\nimpute\nimputed\nimputer\nimputers\nimputes\nimputing\nin\ninabilities\ninability\ninaccessibility\ninaccessible\ninaccessibly\ninaccuracies\ninaccuracy\ninaccurate\ninaccurately\ninaction\ninactions\ninactivate\ninactivated\ninactivates\ninactivating\ninactivation\ninactivations\ninactive\ninactively\ninactiveness\ninactivity\ninadequacies\ninadequacy\ninadequate\ninadequately\ninadequateness\ninadmissibility\ninadmissible\ninadmissibly\ninadvertence\ninadvertences\ninadvertencies\ninadvertency\ninadvertent\ninadvertently\ninadvisability\ninadvisable\ninalienabilities\ninalienability\ninalienable\ninalienably\ninalterability\ninalterable\ninalterableness\ninalterably\ninamorata\ninane\ninanely\ninaner\ninanes\ninanest\ninanimate\ninanimately\ninanimateness\ninanities\ninanition\ninanity\ninapparent\ninapplicability\ninapplicable\ninapplicably\ninapposite\ninappositely\ninappositeness\ninappreciable\ninappreciably\ninappreciative\ninappreciatively\ninappreciativeness\ninapproachable\ninappropriate\ninappropriately\ninappropriateness\ninapt\ninaptitude\ninaptly\ninaptness\ninarable\ninarch\ninarched\ninarches\ninarching\ninarguable\ninarguably\ninarm\ninarmed\ninarming\ninarms\ninarticulacy\ninarticulate\ninarticulately\ninarticulateness\ninartistic\ninartistically\ninattention\ninattentions\ninattentive\ninattentively\ninattentiveness\ninaudibility\ninaudible\ninaudibly\ninaugural\ninaugurals\ninaugurate\ninaugurated\ninaugurates\ninaugurating\ninauguration\ninaugurations\ninaugurator\ninaugurators\ninauspicious\ninauspiciously\ninauspiciousness\ninbeing\ninbeings\ninboard\ninboards\ninborn\ninbound\ninbounds\ninbred\ninbreed\ninbreeding\ninbreeds\ninbuilt\ninburst\ninbursts\ninby\ninbye\nincage\nincaged\nincages\nincaging\nincalculability\nincalculable\nincalculably\nincandesce\nincandesced\nincandescence\nincandescent\nincandescently\nincandesces\nincandescing\nincantation\nincantational\nincantations\nincantatory\nincapabilities\nincapability\nincapable\nincapableness\nincapably\nincapacitate\nincapacitated\nincapacitates\nincapacitating\nincapacitation\nincapacitations\nincapacitator\nincapacitators\nincapacities\nincapacity\nincarcerate\nincarcerated\nincarcerates\nincarcerating\nincarceration\nincarcerations\nincarcerator\nincarcerators\nincarnate\nincarnated\nincarnates\nincarnating\nincarnation\nincarnations\nincase\nincased\nincases\nincasing\nincaution\nincautions\nincautious\nincautiously\nincautiousness\nincendiaries\nincendiary\nincense\nincensed\nincenses\nincensing\nincentive\nincentives\nincept\nincepted\nincepting\ninception\ninceptions\ninceptive\ninceptively\ninceptor\ninceptors\nincepts\nincertitude\nincertitudes\nincessant\nincessantly\nincest\nincests\nincestuous\nincestuously\nincestuousness\ninch\ninched\ninches\ninching\ninchmeal\ninchoate\ninchoately\ninchoateness\ninchworm\ninchworms\nincidence\nincidences\nincident\nincidental\nincidentally\nincidentals\nincidents\nincinerate\nincinerated\nincinerates\nincinerating\nincineration\nincinerations\nincinerator\nincinerators\nincipience\nincipiences\nincipiencies\nincipiency\nincipient\nincipiently\nincipit\nincipits\nincise\nincised\nincises\nincising\nincision\nincisions\nincisive\nincisively\nincisiveness\nincisor\nincisors\nincisory\nincisure\nincisures\nincitant\nincitants\nincitation\nincitations\nincite\nincited\nincitement\nincitements\ninciter\ninciters\nincites\ninciting\nincivil\nincivilities\nincivility\ninclasp\ninclasped\ninclasping\ninclasps\ninclemencies\ninclemency\ninclement\ninclemently\ninclinable\ninclination\ninclinational\ninclinations\nincline\ninclined\nincliner\nincliners\ninclines\ninclining\ninclinometer\ninclinometers\ninclip\ninclipped\ninclipping\ninclips\ninclose\ninclosed\nincloser\ninclosers\nincloses\ninclosing\nincludable\ninclude\nincluded\nincludes\nincludible\nincluding\ninclusion\ninclusions\ninclusive\ninclusively\ninclusiveness\nincog\nincognita\nincognitas\nincognito\nincognitos\nincognizance\nincognizant\nincogs\nincoherence\nincoherences\nincoherent\nincoherently\nincombustibility\nincombustible\nincome\nincomer\nincomers\nincomes\nincoming\nincomings\nincommensurabilities\nincommensurability\nincommensurable\nincommensurably\nincommensurate\nincommode\nincommoded\nincommodes\nincommoding\nincommodious\nincommodiously\nincommodiousness\nincommodity\nincommunicability\nincommunicable\nincommunicably\nincommunicado\nincommunicative\nincomparability\nincomparable\nincomparably\nincompatibilities\nincompatibility\nincompatible\nincompatibles\nincompatibly\nincompetence\nincompetences\nincompetencies\nincompetency\nincompetent\nincompetently\nincompetents\nincomplete\nincompletely\nincompleteness\nincompliant\nincomprehensibilities\nincomprehensibility\nincomprehensible\nincomprehensibleness\nincomprehensibly\nincompressibilities\nincompressibility\nincompressible\nincompressibly\nincomputable\nincomputably\ninconceivabilities\ninconceivability\ninconceivable\ninconceivableness\ninconceivably\ninconclusive\ninconclusively\ninconclusiveness\ninconformities\ninconformity\nincongruence\nincongruences\nincongruent\nincongruently\nincongruities\nincongruity\nincongruous\nincongruously\nincongruousness\ninconnu\ninconnus\ninconsecutive\ninconsequence\ninconsequences\ninconsequent\ninconsequential\ninconsequentiality\ninconsequentially\ninconsequently\ninconsiderable\ninconsiderableness\ninconsiderably\ninconsiderate\ninconsiderately\ninconsiderateness\ninconsideration\ninconsiderations\ninconsistence\ninconsistencies\ninconsistency\ninconsistent\ninconsistently\ninconsolable\ninconsolableness\ninconsolably\ninconsonance\ninconsonant\ninconspicuous\ninconspicuously\ninconspicuousness\ninconstancies\ninconstancy\ninconstant\ninconstantly\ninconsumable\ninconsumably\nincontestability\nincontestable\nincontestably\nincontinence\nincontinences\nincontinencies\nincontinency\nincontinent\nincontinently\nincontrollable\nincontrovertible\nincontrovertibly\ninconvenience\ninconvenienced\ninconveniences\ninconveniencies\ninconveniencing\ninconveniency\ninconvenient\ninconveniently\ninconvertibility\ninconvertible\ninconvertibly\nincony\nincoordination\nincoordinations\nincorporable\nincorporate\nincorporated\nincorporates\nincorporating\nincorporation\nincorporations\nincorporative\nincorporator\nincorporators\nincorporeal\nincorporeally\nincorpse\nincorpsed\nincorpses\nincorpsing\nincorrect\nincorrectly\nincorrectness\nincorrigibility\nincorrigible\nincorrigibleness\nincorrigibly\nincorruptibility\nincorruptible\nincorruptibly\nincreasable\nincrease\nincreased\nincreaser\nincreasers\nincreases\nincreasing\nincreasingly\nincreate\nincredibilities\nincredibility\nincredible\nincredibleness\nincredibly\nincredulities\nincredulity\nincredulous\nincredulously\nincrement\nincremental\nincrementalism\nincrementalist\nincrementalists\nincrementally\nincrements\nincriminate\nincriminated\nincriminates\nincriminating\nincrimination\nincriminations\nincriminatory\nincross\nincrosses\nincrust\nincrustation\nincrustations\nincrusted\nincrusting\nincrusts\nincubate\nincubated\nincubates\nincubating\nincubation\nincubational\nincubations\nincubative\nincubator\nincubators\nincubatory\nincubi\nincubus\nincubuses\nincudal\nincudate\nincudes\ninculcate\ninculcated\ninculcates\ninculcating\ninculcation\ninculcations\ninculcator\ninculcators\ninculpable\ninculpate\ninculpated\ninculpates\ninculpating\ninculpation\ninculpations\ninculpatory\nincult\nincumbencies\nincumbency\nincumbent\nincumbents\nincumber\nincumbered\nincumbering\nincumbers\nincur\nincurable\nincurably\nincuriosity\nincurious\nincuriously\nincuriousness\nincurred\nincurrence\nincurring\nincurs\nincursion\nincursions\nincurve\nincurved\nincurves\nincurving\nincus\nincuse\nincused\nincuses\nincusing\nindaba\nindabas\nindagate\nindagated\nindagates\nindagating\nindamin\nindamine\nindamines\nindamins\nindebted\nindebtedness\nindecencies\nindecency\nindecent\nindecenter\nindecentest\nindecently\nindecipherable\nindecision\nindecisions\nindecisive\nindecisively\nindecisiveness\nindeclinable\nindecorous\nindecorously\nindecorousness\nindecorum\nindecorums\nindeed\nindefatigability\nindefatigable\nindefatigableness\nindefatigably\nindefeasibility\nindefeasible\nindefeasibly\nindefectibility\nindefectible\nindefectibly\nindefensibility\nindefensible\nindefensibly\nindefinability\nindefinable\nindefinableness\nindefinably\nindefinite\nindefinitely\nindefiniteness\nindefinites\nindelibility\nindelible\nindelibly\nindelicacies\nindelicacy\nindelicate\nindelicately\nindelicateness\nindemnification\nindemnifications\nindemnified\nindemnifier\nindemnifiers\nindemnifies\nindemnify\nindemnifying\nindemnities\nindemnity\nindemonstrable\nindemonstrably\nindene\nindenes\nindent\nindentation\nindentations\nindented\nindenter\nindenters\nindenting\nindention\nindentions\nindentor\nindentors\nindents\nindenture\nindentured\nindentures\nindenturing\nindependence\nindependencies\nindependency\nindependent\nindependently\nindependents\nindescribable\nindescribableness\nindescribably\nindestructibilities\nindestructibility\nindestructible\nindestructibleness\nindestructibly\nindeterminable\nindeterminably\nindeterminacies\nindeterminacy\nindeterminate\nindeterminately\nindeterminateness\nindetermination\nindeterminations\nindeterminism\nindeterminist\nindeterministic\nindeterminists\nindevout\nindex\nindexation\nindexed\nindexer\nindexers\nindexes\nindexing\nindican\nindicans\nindicant\nindicants\nindicate\nindicated\nindicates\nindicating\nindication\nindicational\nindications\nindicative\nindicatively\nindicator\nindicators\nindicatory\nindices\nindicia\nindicias\nindicium\nindiciums\nindict\nindictable\nindicted\nindictee\nindictees\nindicter\nindicters\nindicting\nindiction\nindictions\nindictment\nindictments\nindictor\nindictors\nindicts\nindie\nindifference\nindifferences\nindifferent\nindifferentism\nindifferentist\nindifferentists\nindifferently\nindigen\nindigence\nindigences\nindigene\nindigenes\nindigenous\nindigenously\nindigenousness\nindigens\nindigent\nindigents\nindigestibility\nindigestible\nindigestion\nindigestions\nindign\nindignant\nindignantly\nindignation\nindignations\nindignities\nindignity\nindignly\nindigo\nindigoes\nindigoid\nindigoids\nindigos\nindirect\nindirection\nindirections\nindirectly\nindirectness\nindiscernible\nindisciplinable\nindiscipline\nindisciplined\nindiscoverable\nindiscreet\nindiscreetly\nindiscreetness\nindiscrete\nindiscretion\nindiscretions\nindiscriminate\nindiscriminately\nindiscriminateness\nindiscriminating\nindiscriminatingly\nindiscrimination\nindiscriminations\nindiscussible\nindispensability\nindispensable\nindispensableness\nindispensables\nindispensably\nindispose\nindisposed\nindisposes\nindisposing\nindisposition\nindispositions\nindisputable\nindisputableness\nindisputably\nindissolubility\nindissoluble\nindissolubleness\nindissolubly\nindistinct\nindistinctive\nindistinctly\nindistinctness\nindistinguishability\nindistinguishable\nindistinguishableness\nindistinguishably\nindite\nindited\ninditer\ninditers\nindites\ninditing\nindium\nindiums\nindividual\nindividualism\nindividualisms\nindividualist\nindividualistic\nindividualistically\nindividualists\nindividualities\nindividuality\nindividualization\nindividualizations\nindividualize\nindividualized\nindividualizes\nindividualizing\nindividually\nindividuals\nindividuate\nindividuated\nindividuates\nindividuating\nindividuation\nindividuations\nindivisibility\nindivisible\nindivisibly\nindocile\nindoctrinate\nindoctrinated\nindoctrinates\nindoctrinating\nindoctrination\nindoctrinations\nindoctrinator\nindoctrinators\nindol\nindole\nindolence\nindolences\nindolent\nindolently\nindoles\nindols\nindomitabilities\nindomitability\nindomitable\nindomitableness\nindomitably\nindoor\nindoors\nindorse\nindorsed\nindorsee\nindorsees\nindorser\nindorsers\nindorses\nindorsing\nindorsor\nindorsors\nindow\nindowed\nindowing\nindows\nindoxyl\nindoxyls\nindraft\nindrafts\nindrawn\nindri\nindris\nindubitability\nindubitable\nindubitableness\nindubitably\ninduce\ninduced\ninducement\ninducements\ninducer\ninducers\ninduces\ninducibility\ninducible\ninducing\ninduct\ninductance\ninductances\ninducted\ninductee\ninductees\ninducting\ninduction\ninductions\ninductive\ninductively\ninductor\ninductors\ninducts\nindue\nindued\nindues\ninduing\nindulge\nindulged\nindulgence\nindulgenced\nindulgences\nindulgencing\nindulgent\nindulgently\nindulger\nindulgers\nindulges\nindulging\nindulin\ninduline\nindulines\nindulins\nindult\nindults\nindurate\nindurated\nindurates\nindurating\ninduration\nindurations\nindurative\nindusia\nindusial\nindusium\nindustrial\nindustrialism\nindustrialist\nindustrialists\nindustrialization\nindustrializations\nindustrialize\nindustrialized\nindustrializes\nindustrializing\nindustrially\nindustrials\nindustries\nindustrious\nindustriously\nindustriousness\nindustry\nindwell\nindwelling\nindwells\nindwelt\ninearth\ninearthed\ninearthing\ninearths\ninebriate\ninebriated\ninebriates\ninebriating\ninebriation\ninebriations\ninebriety\ninedible\ninedita\ninedited\nineducability\nineducable\nineffabilities\nineffability\nineffable\nineffableness\nineffably\nineffaceabilities\nineffaceability\nineffaceable\nineffaceably\nineffective\nineffectively\nineffectiveness\nineffectual\nineffectuality\nineffectually\nineffectualness\ninefficacies\ninefficacious\ninefficaciously\ninefficaciousness\ninefficacy\ninefficiencies\ninefficiency\ninefficient\ninefficiently\ninegalitarian\ninelastic\ninelasticity\ninelegance\ninelegant\ninelegantly\nineligibility\nineligible\nineluctability\nineluctable\nineluctably\nineludible\ninept\nineptitude\nineptitudes\nineptly\nineptness\ninequalities\ninequality\ninequitable\ninequitably\ninequities\ninequity\nineradicability\nineradicable\nineradicably\ninerrancy\ninerrant\ninert\ninertia\ninertiae\ninertial\ninertias\ninertly\ninertness\ninerts\ninescapable\ninescapably\ninessential\ninessentials\ninestimable\ninestimably\ninevitabilities\ninevitability\ninevitable\ninevitableness\ninevitably\ninexact\ninexactitude\ninexactitudes\ninexactly\ninexactness\ninexcusabilities\ninexcusability\ninexcusable\ninexcusableness\ninexcusably\ninexhaustibility\ninexhaustible\ninexhaustibleness\ninexhaustibly\ninexistence\ninexistent\ninexorabilities\ninexorability\ninexorable\ninexorableness\ninexorably\ninexpedience\ninexpediences\ninexpediencies\ninexpediency\ninexpedient\ninexpediently\ninexpensive\ninexpensively\ninexpensiveness\ninexperience\ninexperienced\ninexperiences\ninexpert\ninexpertly\ninexpertness\ninexperts\ninexpiable\ninexpiably\ninexplicabilities\ninexplicability\ninexplicable\ninexplicableness\ninexplicably\ninexplicit\ninexpressibility\ninexpressible\ninexpressibleness\ninexpressibly\ninexpressive\ninexpressively\ninexpressiveness\ninexpugnable\ninexpugnably\ninextinguishable\ninextinguishably\ninextricability\ninextricable\ninextricably\ninfallibility\ninfallible\ninfallibleness\ninfallibly\ninfamies\ninfamous\ninfamously\ninfamy\ninfancies\ninfancy\ninfant\ninfanta\ninfantas\ninfante\ninfantes\ninfanticidal\ninfanticide\ninfanticides\ninfantile\ninfantilism\ninfantility\ninfantries\ninfantry\ninfantryman\ninfantrymen\ninfants\ninfarct\ninfarcts\ninfare\ninfares\ninfatuate\ninfatuated\ninfatuates\ninfatuating\ninfatuation\ninfatuations\ninfauna\ninfaunae\ninfaunal\ninfaunas\ninfeasibility\ninfeasible\ninfect\ninfected\ninfecter\ninfecters\ninfecting\ninfection\ninfections\ninfectious\ninfectiously\ninfectiousness\ninfective\ninfectivity\ninfector\ninfectors\ninfects\ninfecund\ninfelicities\ninfelicitous\ninfelicitously\ninfelicity\ninfeoff\ninfeoffed\ninfeoffing\ninfeoffs\ninfer\ninferable\ninference\ninferences\ninferential\ninferentially\ninferior\ninferiorities\ninferiority\ninferiorly\ninferiors\ninfernal\ninfernally\ninferno\ninfernos\ninferred\ninferrer\ninferrers\ninferring\ninfers\ninfertile\ninfertility\ninfest\ninfestation\ninfestations\ninfested\ninfester\ninfesters\ninfesting\ninfests\ninfidel\ninfidelities\ninfidelity\ninfidels\ninfield\ninfielder\ninfielders\ninfields\ninfighter\ninfighters\ninfighting\ninfiltrate\ninfiltrated\ninfiltrates\ninfiltrating\ninfiltration\ninfiltrations\ninfiltrative\ninfiltrator\ninfiltrators\ninfinite\ninfinitely\ninfiniteness\ninfinites\ninfinitesimal\ninfinitesimally\ninfinities\ninfinitival\ninfinitive\ninfinitively\ninfinitives\ninfinitude\ninfinitudes\ninfinity\ninfirm\ninfirmaries\ninfirmary\ninfirmed\ninfirming\ninfirmities\ninfirmity\ninfirmly\ninfirms\ninfix\ninfixation\ninfixations\ninfixed\ninfixes\ninfixing\ninfixion\ninfixions\ninflame\ninflamed\ninflamer\ninflamers\ninflames\ninflaming\ninflammabilities\ninflammability\ninflammable\ninflammableness\ninflammably\ninflammation\ninflammations\ninflammatorily\ninflammatory\ninflatable\ninflate\ninflated\ninflater\ninflaters\ninflates\ninflating\ninflation\ninflationary\ninflationism\ninflationist\ninflationists\ninflations\ninflator\ninflators\ninflect\ninflectable\ninflected\ninflecting\ninflection\ninflectional\ninflectionally\ninflections\ninflective\ninflects\ninflexed\ninflexibilities\ninflexibility\ninflexible\ninflexibleness\ninflexibly\ninflict\ninflicted\ninflicter\ninflicters\ninflicting\ninfliction\ninflictions\ninflictive\ninflictor\ninflictors\ninflicts\ninflight\ninflow\ninflows\ninfluence\ninfluenceable\ninfluenced\ninfluences\ninfluencing\ninfluent\ninfluential\ninfluentially\ninfluents\ninfluenza\ninflux\ninfluxes\ninfo\ninfold\ninfolded\ninfolder\ninfolders\ninfolding\ninfolds\ninform\ninformal\ninformalities\ninformality\ninformally\ninformant\ninformants\ninformation\ninformational\ninformationless\ninformations\ninformative\ninformatively\ninformativeness\ninformatory\ninformed\ninformedly\ninformer\ninformers\ninforming\ninforms\ninfos\ninfra\ninfract\ninfracted\ninfracting\ninfraction\ninfractions\ninfractor\ninfractors\ninfracts\ninfrangibility\ninfrangible\ninfrangibleness\ninfrangibly\ninfrared\ninfrareds\ninfrasonic\ninfrastructure\ninfrastructures\ninfrequence\ninfrequencies\ninfrequency\ninfrequent\ninfrequently\ninfringe\ninfringed\ninfringement\ninfringements\ninfringer\ninfringers\ninfringes\ninfringing\ninfrugal\ninfuriate\ninfuriated\ninfuriates\ninfuriating\ninfuriatingly\ninfuriation\ninfuriations\ninfuse\ninfused\ninfuser\ninfusers\ninfuses\ninfusibility\ninfusible\ninfusibleness\ninfusing\ninfusion\ninfusions\ninfusive\ningate\ningates\ningather\ningathered\ningathering\ningathers\ningenious\ningeniously\ningeniousness\ningenue\ningenues\ningenuities\ningenuity\ningenuous\ningenuously\ningenuousness\ningest\ningesta\ningested\ningestible\ningesting\ningestion\ningestive\ningests\ningle\ninglenook\ninglenooks\ningles\ninglorious\ningloriously\ningloriousness\ningoing\ningot\ningoted\ningoting\ningots\ningraft\ningrafted\ningrafting\ningrafts\ningrain\ningrained\ningrainedly\ningraining\ningrains\ningrate\ningrates\ningratiate\ningratiated\ningratiates\ningratiating\ningratiation\ningratiatory\ningratitude\ningredient\ningredients\ningress\ningresses\ningression\ningressions\ningressive\ningressiveness\ningroup\ningroups\ningrown\ningrowth\ningrowths\ninguinal\ningulf\ningulfed\ningulfing\ningulfs\ninhabit\ninhabitable\ninhabitancy\ninhabitant\ninhabitants\ninhabitation\ninhabitations\ninhabited\ninhabiter\ninhabiters\ninhabiting\ninhabits\ninhalant\ninhalants\ninhalation\ninhalations\ninhalator\ninhalators\ninhale\ninhaled\ninhaler\ninhalers\ninhales\ninhaling\ninharmonious\ninharmoniously\ninharmoniousness\ninhaul\ninhauler\ninhaulers\ninhauls\ninhere\ninhered\ninherence\ninherent\ninherently\ninheres\ninhering\ninherit\ninheritability\ninheritable\ninheritableness\ninheritably\ninheritance\ninheritances\ninherited\ninheriting\ninheritor\ninheritors\ninheritress\ninheritresses\ninheritrix\ninheritrixes\ninherits\ninhesion\ninhesions\ninhibit\ninhibited\ninhibiting\ninhibition\ninhibitions\ninhibitive\ninhibitor\ninhibitors\ninhibitory\ninhibits\ninhospitable\ninhospitableness\ninhospitably\ninhospitality\ninhuman\ninhumane\ninhumanely\ninhumanities\ninhumanity\ninhumanly\ninhumanness\ninhume\ninhumed\ninhumer\ninhumers\ninhumes\ninhuming\ninia\ninimical\ninimically\ninimitable\ninimitableness\ninimitably\ninion\niniquities\niniquitous\niniquitously\niniquitousness\niniquity\ninitial\ninitialed\ninitialing\ninitialization\ninitialize\ninitialized\ninitializes\ninitializing\ninitialled\ninitialling\ninitially\ninitials\ninitiate\ninitiated\ninitiates\ninitiating\ninitiation\ninitiations\ninitiative\ninitiatives\ninitiator\ninitiators\ninitiatory\ninject\ninjectable\ninjected\ninjecting\ninjection\ninjections\ninjector\ninjectors\ninjects\ninjudicious\ninjudiciously\ninjudiciousness\ninjunction\ninjunctions\ninjunctive\ninjure\ninjured\ninjurer\ninjurers\ninjures\ninjuries\ninjuring\ninjurious\ninjuriously\ninjuriousness\ninjury\ninjustice\ninjustices\nink\ninkberries\ninkberry\ninkblot\ninkblots\ninked\ninker\ninkers\ninkhorn\ninkhorns\ninkier\ninkiest\ninkiness\ninkinesses\ninking\ninkle\ninkles\ninkless\ninklike\ninkling\ninklings\ninkpot\ninkpots\ninks\ninkstand\ninkstands\ninkwell\ninkwells\ninkwood\ninkwoods\ninky\ninlace\ninlaced\ninlaces\ninlacing\ninlaid\ninland\ninlander\ninlanders\ninlands\ninlay\ninlayer\ninlayers\ninlaying\ninlays\ninlet\ninlets\ninletting\ninlier\ninliers\ninly\ninmate\ninmates\ninmesh\ninmeshed\ninmeshes\ninmeshing\ninmost\ninn\ninnards\ninnate\ninnately\ninnateness\ninned\ninner\ninnerly\ninnermost\ninners\ninnersole\ninnersoles\ninnervate\ninnervated\ninnervates\ninnervating\ninnervation\ninnervational\ninnervations\ninnerve\ninnerved\ninnerves\ninnerving\ninning\ninnings\ninnkeeper\ninnkeepers\ninnless\ninnocence\ninnocencies\ninnocency\ninnocent\ninnocenter\ninnocentest\ninnocently\ninnocents\ninnocuous\ninnocuously\ninnocuousness\ninnovate\ninnovated\ninnovates\ninnovating\ninnovation\ninnovational\ninnovations\ninnovative\ninnovator\ninnovators\ninnovatory\ninns\ninnuendo\ninnuendoed\ninnuendoes\ninnuendoing\ninnuendos\ninnumerable\ninnumerableness\ninnumerably\ninnumerous\ninocula\ninoculate\ninoculated\ninoculates\ninoculating\ninoculation\ninoculations\ninoculative\ninoculator\ninoculators\ninoculum\ninoculums\ninoffensive\ninoffensively\ninoffensiveness\ninoperable\ninoperative\ninoperativeness\ninopportune\ninopportunely\ninopportuneness\ninordinate\ninordinately\ninordinateness\ninorganic\ninorganically\ninosite\ninosites\ninositol\ninositols\ninpatient\ninpatients\ninphase\ninpour\ninpoured\ninpouring\ninpours\ninput\ninputs\ninputted\ninputting\ninquest\ninquests\ninquiet\ninquieted\ninquieting\ninquiets\ninquietude\ninquietudes\ninquire\ninquired\ninquirer\ninquirers\ninquires\ninquiries\ninquiring\ninquiringly\ninquiry\ninquisition\ninquisitional\ninquisitions\ninquisitive\ninquisitively\ninquisitiveness\ninquisitor\ninquisitorial\ninquisitorially\ninquisitors\ninro\ninroad\ninroads\ninrush\ninrushes\nins\ninsalubrious\ninsalubrities\ninsalubrity\ninsane\ninsanely\ninsaneness\ninsaner\ninsanest\ninsanitation\ninsanities\ninsanity\ninsatiability\ninsatiable\ninsatiableness\ninsatiably\ninsatiate\ninscribe\ninscribed\ninscriber\ninscribers\ninscribes\ninscribing\ninscription\ninscriptional\ninscriptions\ninscriptive\ninscriptively\ninscroll\ninscrolled\ninscrolling\ninscrolls\ninscrutability\ninscrutable\ninscrutableness\ninscrutably\ninsculp\ninsculped\ninsculping\ninsculps\ninseam\ninseams\ninsect\ninsectan\ninsectary\ninsecticidal\ninsecticide\ninsecticides\ninsectivore\ninsectivores\ninsectivorous\ninsects\ninsecure\ninsecurely\ninsecureness\ninsecurities\ninsecurity\ninseminate\ninseminated\ninseminates\ninseminating\ninsemination\ninseminations\ninsensate\ninsensately\ninsensateness\ninsensibilities\ninsensibility\ninsensible\ninsensibly\ninsensitive\ninsensitively\ninsensitiveness\ninsensitivities\ninsensitivity\ninsentience\ninsentient\ninseparabilities\ninseparability\ninseparable\ninseparableness\ninseparables\ninseparably\ninsert\ninserted\ninserter\ninserters\ninserting\ninsertion\ninsertional\ninsertions\ninserts\ninset\ninsets\ninsetted\ninsetter\ninsetters\ninsetting\ninsheath\ninsheathed\ninsheathing\ninsheaths\ninshore\ninshrine\ninshrined\ninshrines\ninshrining\ninside\ninsider\ninsiders\ninsides\ninsidious\ninsidiously\ninsidiousness\ninsight\ninsightful\ninsights\ninsigne\ninsignia\ninsignias\ninsignificance\ninsignificancies\ninsignificancy\ninsignificant\ninsignificantly\ninsincere\ninsincerely\ninsincerities\ninsincerity\ninsinuate\ninsinuated\ninsinuates\ninsinuating\ninsinuatingly\ninsinuation\ninsinuations\ninsinuative\ninsinuator\ninsinuators\ninsipid\ninsipidity\ninsipidly\ninsist\ninsisted\ninsistence\ninsistencies\ninsistency\ninsistent\ninsistently\ninsister\ninsisters\ninsisting\ninsists\ninsnare\ninsnared\ninsnarer\ninsnarers\ninsnares\ninsnaring\ninsobriety\ninsofar\ninsolate\ninsolated\ninsolates\ninsolating\ninsole\ninsolence\ninsolences\ninsolent\ninsolently\ninsolents\ninsoles\ninsolubilities\ninsolubility\ninsoluble\ninsolubleness\ninsolubly\ninsolvency\ninsolvent\ninsolvents\ninsomnia\ninsomniac\ninsomniacs\ninsomnias\ninsomuch\ninsouciance\ninsouciant\ninsouciantly\ninsoul\ninsouled\ninsouling\ninsouls\ninspan\ninspanned\ninspanning\ninspans\ninspect\ninspected\ninspecting\ninspection\ninspections\ninspector\ninspectors\ninspectorship\ninspectorships\ninspects\ninsphere\ninsphered\ninspheres\ninsphering\ninspiration\ninspirational\ninspirationally\ninspirations\ninspire\ninspired\ninspirer\ninspirers\ninspires\ninspiring\ninspirit\ninspirited\ninspiriting\ninspiritingly\ninspirits\ninstabilities\ninstability\ninstable\ninstal\ninstall\ninstallation\ninstallations\ninstalled\ninstaller\ninstallers\ninstalling\ninstallment\ninstallments\ninstalls\ninstalment\ninstals\ninstance\ninstanced\ninstances\ninstancies\ninstancing\ninstancy\ninstant\ninstantaneity\ninstantaneous\ninstantaneously\ninstantaneousness\ninstanter\ninstantiate\ninstantiated\ninstantiates\ninstantiating\ninstantly\ninstants\ninstar\ninstarred\ninstarring\ninstars\ninstate\ninstated\ninstates\ninstating\ninstead\ninstep\ninsteps\ninstigate\ninstigated\ninstigates\ninstigating\ninstigation\ninstigations\ninstigative\ninstigator\ninstigators\ninstil\ninstill\ninstillation\ninstillations\ninstilled\ninstiller\ninstillers\ninstilling\ninstillment\ninstillments\ninstills\ninstils\ninstinct\ninstinctive\ninstinctively\ninstincts\ninstinctual\ninstitute\ninstituted\ninstituter\ninstituters\ninstitutes\ninstituting\ninstitution\ninstitutional\ninstitutionalism\ninstitutionalist\ninstitutionalists\ninstitutionalization\ninstitutionalize\ninstitutionalized\ninstitutionalizes\ninstitutionalizing\ninstitutionally\ninstitutions\ninstitutor\ninstitutors\ninstroke\ninstrokes\ninstruct\ninstructed\ninstructing\ninstruction\ninstructional\ninstructions\ninstructive\ninstructively\ninstructiveness\ninstructor\ninstructors\ninstructorship\ninstructorships\ninstructress\ninstructresses\ninstructs\ninstrument\ninstrumental\ninstrumentalism\ninstrumentalist\ninstrumentalists\ninstrumentalities\ninstrumentality\ninstrumentally\ninstrumentation\ninstrumentations\ninstrumented\ninstrumenting\ninstruments\ninsubordinate\ninsubordinately\ninsubordinates\ninsubordination\ninsubordinations\ninsubstantial\ninsubstantiality\ninsufferable\ninsufferableness\ninsufferably\ninsufficience\ninsufficiencies\ninsufficiency\ninsufficient\ninsufficiently\ninsulant\ninsulants\ninsular\ninsularism\ninsularities\ninsularity\ninsularly\ninsulars\ninsulate\ninsulated\ninsulates\ninsulating\ninsulation\ninsulations\ninsulator\ninsulators\ninsulin\ninsulins\ninsult\ninsulted\ninsulter\ninsulters\ninsulting\ninsultingly\ninsults\ninsuperable\ninsuperably\ninsupportable\ninsupportableness\ninsupportably\ninsuppressible\ninsuppressibly\ninsurability\ninsurable\ninsurance\ninsurances\ninsurant\ninsurants\ninsure\ninsured\ninsureds\ninsurer\ninsurers\ninsures\ninsurgence\ninsurgences\ninsurgencies\ninsurgency\ninsurgent\ninsurgents\ninsuring\ninsurmountable\ninsurmountably\ninsurrection\ninsurrectional\ninsurrectionary\ninsurrectionist\ninsurrectionists\ninsurrections\ninsusceptibility\ninsusceptible\ninsusceptibly\ninswathe\ninswathed\ninswathes\ninswathing\ninswept\nintact\nintactness\nintagli\nintaglio\nintaglios\nintake\nintakes\nintangibilities\nintangibility\nintangible\nintangibleness\nintangibles\nintangibly\nintarsia\nintarsias\ninteger\nintegers\nintegrability\nintegrable\nintegral\nintegrality\nintegrally\nintegrals\nintegrate\nintegrated\nintegrates\nintegrating\nintegration\nintegrationist\nintegrationists\nintegrations\nintegrative\nintegrator\nintegrators\nintegrities\nintegrity\nintegument\nintegumentary\ninteguments\nintellect\nintellection\nintellections\nintellective\nintellects\nintellectual\nintellectualism\nintellectualisms\nintellectualist\nintellectualistic\nintellectualists\nintellectualities\nintellectuality\nintellectualization\nintellectualizations\nintellectualize\nintellectualized\nintellectualizer\nintellectualizers\nintellectualizes\nintellectualizing\nintellectually\nintellectualness\nintellectuals\nintelligence\nintelligences\nintelligent\nintelligential\nintelligently\nintelligentsia\nintelligibilities\nintelligibility\nintelligible\nintelligibleness\nintelligibly\nintemperance\nintemperances\nintemperate\nintemperately\nintemperateness\nintend\nintendant\nintendants\nintended\nintendedly\nintendedness\nintendeds\nintender\nintenders\nintending\nintendment\nintendments\nintends\nintense\nintensely\nintenseness\nintenser\nintensest\nintensification\nintensified\nintensifier\nintensifiers\nintensifies\nintensify\nintensifying\nintension\nintensional\nintensionally\nintensions\nintensities\nintensity\nintensive\nintensively\nintensiveness\nintent\nintention\nintentional\nintentionality\nintentionally\nintentions\nintently\nintentness\nintents\ninter\ninteract\ninteracted\ninteracting\ninteraction\ninteractional\ninteractions\ninteractive\ninteractively\ninteracts\ninterbred\ninterbreed\ninterbreeding\ninterbreeds\nintercalate\nintercalated\nintercalates\nintercalating\nintercalation\nintercalations\nintercede\ninterceded\ninterceder\ninterceders\nintercedes\ninterceding\nintercept\nintercepted\nintercepter\nintercepters\nintercepting\ninterception\ninterceptions\ninterceptor\ninterceptors\nintercepts\nintercession\nintercessional\nintercessions\nintercessor\nintercessors\nintercessory\ninterchange\ninterchangeability\ninterchangeable\ninterchangeableness\ninterchangeably\ninterchanged\ninterchanges\ninterchanging\nintercoastal\nintercom\nintercommunicate\nintercommunicated\nintercommunicates\nintercommunicating\nintercommunication\nintercommunications\nintercoms\ninterconnect\ninterconnected\ninterconnecting\ninterconnection\ninterconnections\ninterconnects\nintercontinental\nintercostal\nintercourse\nintercut\nintercuts\nintercutting\ninterdenominational\ninterdenominationalism\ninterdepartmental\ninterdepartmentally\ninterdependence\ninterdependencies\ninterdependency\ninterdependent\ninterdependently\ninterdict\ninterdicted\ninterdicting\ninterdiction\ninterdictions\ninterdictor\ninterdictors\ninterdicts\ninterdisciplinary\ninterest\ninterested\ninterestedly\ninteresting\ninterestingly\ninterestingness\ninterests\ninterface\ninterfaced\ninterfaces\ninterfacial\ninterfacing\ninterfaith\ninterfere\ninterfered\ninterference\ninterferences\ninterferer\ninterferers\ninterferes\ninterfering\ninterferon\ninterim\ninterims\ninterior\ninteriority\ninteriorly\ninteriors\ninterject\ninterjected\ninterjecting\ninterjection\ninterjectional\ninterjectionally\ninterjections\ninterjector\ninterjectors\ninterjectory\ninterjects\ninterlace\ninterlaced\ninterlacement\ninterlacements\ninterlaces\ninterlacing\ninterlaid\ninterlap\ninterlapped\ninterlapping\ninterlaps\ninterlard\ninterlarded\ninterlarding\ninterlards\ninterlay\ninterlaying\ninterlays\ninterleave\ninterleaved\ninterleaves\ninterleaving\ninterlinear\ninterlinearly\ninterlining\ninterlinings\ninterlock\ninterlocked\ninterlocking\ninterlocks\ninterlocutor\ninterlocutors\ninterlocutory\ninterlocutress\ninterlope\ninterloped\ninterloper\ninterlopers\ninterlopes\ninterloping\ninterlude\ninterludes\nintermarriage\nintermarriages\nintermarried\nintermarries\nintermarry\nintermarrying\nintermediacies\nintermediacy\nintermediaries\nintermediary\nintermediate\nintermediated\nintermediately\nintermediateness\nintermediates\nintermediating\nintermediation\nintermediations\ninterment\ninterments\nintermezzi\nintermezzo\nintermezzos\ninterminable\ninterminableness\ninterminably\nintermingle\nintermingled\nintermingles\nintermingling\nintermission\nintermissions\nintermit\nintermits\nintermitted\nintermittence\nintermittences\nintermittent\nintermittently\nintermitter\nintermitting\nintermix\nintermixed\nintermixes\nintermixing\nintermixture\nintermixtures\nintern\ninternal\ninternalities\ninternality\ninternalization\ninternalizations\ninternalize\ninternalized\ninternalizes\ninternalizing\ninternally\ninternals\ninternational\ninternationalism\ninternationalist\ninternationalists\ninternationalities\ninternationality\ninternationalization\ninternationalize\ninternationalized\ninternationalizes\ninternationalizing\ninternationally\ninterne\ninterned\ninternee\ninternees\ninternes\ninterning\ninternist\ninternists\ninternment\ninternments\ninterns\ninternship\ninternships\ninteroffice\ninterpenetrate\ninterpenetrated\ninterpenetrates\ninterpenetrating\ninterpenetration\ninterpenetrations\ninterpersonal\ninterpersonally\ninterplanetary\ninterplay\ninterplayed\ninterplaying\ninterplays\ninterpolate\ninterpolated\ninterpolates\ninterpolating\ninterpolation\ninterpolations\ninterpolative\ninterpolator\ninterpolators\ninterpose\ninterposed\ninterposer\ninterposers\ninterposes\ninterposing\ninterposition\ninterpositions\ninterpret\ninterpretability\ninterpretable\ninterpretation\ninterpretational\ninterpretations\ninterpretative\ninterpretatively\ninterpreted\ninterpreter\ninterpreters\ninterpreting\ninterpretive\ninterpretively\ninterprets\ninterracial\ninterred\ninterreges\ninterrelate\ninterrelated\ninterrelatedly\ninterrelatedness\ninterrelates\ninterrelating\ninterrelation\ninterrelations\ninterrelationship\ninterrelationships\ninterrex\ninterring\ninterrogate\ninterrogated\ninterrogates\ninterrogating\ninterrogation\ninterrogational\ninterrogations\ninterrogative\ninterrogatively\ninterrogatives\ninterrogator\ninterrogatories\ninterrogators\ninterrogatory\ninterrupt\ninterrupted\ninterrupter\ninterrupters\ninterruptible\ninterrupting\ninterruption\ninterruptions\ninterruptive\ninterrupts\ninters\ninterscholastic\nintersect\nintersected\nintersecting\nintersection\nintersections\nintersects\nintersex\nintersexes\nintersperse\ninterspersed\nintersperses\ninterspersing\ninterspersion\ninterspersions\ninterstate\ninterstice\ninterstices\ninterstitial\ninterstitially\nintertie\ninterties\nintertwine\nintertwined\nintertwinement\nintertwines\nintertwining\ninterurban\ninterval\nintervals\nintervene\nintervened\nintervener\ninterveners\nintervenes\nintervening\nintervenor\nintervenors\nintervention\ninterventionism\ninterventionist\ninterventionists\ninterventions\ninterview\ninterviewed\ninterviewer\ninterviewers\ninterviewing\ninterviews\ninterwar\ninterweave\ninterweaves\ninterweaving\ninterwove\ninterwoven\nintestacy\nintestate\nintestates\nintestinal\nintestinally\nintestine\nintestines\ninthral\ninthrall\ninthralled\ninthralling\ninthralls\ninthrals\ninthrone\ninthroned\ninthrones\ninthroning\ninti\nintima\nintimacies\nintimacy\nintimae\nintimal\nintimas\nintimate\nintimated\nintimately\nintimateness\nintimater\nintimaters\nintimates\nintimating\nintimation\nintimations\nintime\nintimidate\nintimidated\nintimidates\nintimidating\nintimidation\nintimidations\nintimidator\nintimidators\nintine\nintines\nintis\nintitle\nintitled\nintitles\nintitling\nintitule\nintituled\nintitules\nintituling\ninto\nintolerability\nintolerable\nintolerableness\nintolerably\nintolerance\nintolerances\nintolerant\nintolerantly\nintomb\nintombed\nintombing\nintombs\nintonate\nintonated\nintonates\nintonating\nintonation\nintonational\nintonations\nintone\nintoned\nintoner\nintoners\nintones\nintoning\nintort\nintorted\nintorting\nintorts\nintown\nintoxicant\nintoxicants\nintoxicate\nintoxicated\nintoxicatedly\nintoxicates\nintoxicating\nintoxication\nintoxications\nintractabilities\nintractability\nintractable\nintractableness\nintractably\nintrados\nintradoses\nintramural\nintramuscular\nintramuscularly\nintransigence\nintransigent\nintransigently\nintransigents\nintransitive\nintransitively\nintransitiveness\nintrant\nintrants\nintravenous\nintravenously\nintreat\nintreated\nintreating\nintreats\nintrench\nintrenched\nintrenches\nintrenching\nintrepid\nintrepidity\nintrepidly\nintrepidness\nintricacies\nintricacy\nintricate\nintricately\nintricateness\nintrigue\nintrigued\nintriguer\nintriguers\nintrigues\nintriguing\nintriguingly\nintrinsic\nintrinsical\nintrinsically\nintro\nintroduce\nintroduced\nintroducer\nintroducers\nintroduces\nintroducing\nintroduction\nintroductions\nintroductorily\nintroductory\nintrofied\nintrofies\nintrofy\nintrofying\nintroit\nintroits\nintromit\nintromits\nintromitted\nintromitting\nintrorse\nintros\nintrospect\nintrospected\nintrospecting\nintrospection\nintrospectional\nintrospectionist\nintrospectionists\nintrospections\nintrospective\nintrospectively\nintrospectiveness\nintrospects\nintroversion\nintroversive\nintrovert\nintroverted\nintroverting\nintroverts\nintrude\nintruded\nintruder\nintruders\nintrudes\nintruding\nintrusion\nintrusions\nintrusive\nintrusively\nintrusiveness\nintrust\nintrusted\nintrusting\nintrusts\nintubate\nintubated\nintubates\nintubating\nintuit\nintuitable\nintuited\nintuiting\nintuition\nintuitional\nintuitionism\nintuitionist\nintuitionists\nintuitions\nintuitive\nintuitively\nintuitiveness\nintuits\ninturn\ninturned\ninturns\nintwine\nintwined\nintwines\nintwining\nintwist\nintwisted\nintwisting\nintwists\ninulase\ninulases\ninulin\ninulins\ninundant\ninundate\ninundated\ninundates\ninundating\ninundation\ninundations\ninundator\ninundators\ninundatory\ninurbane\ninure\ninured\ninurement\ninures\ninuring\ninurn\ninurned\ninurning\ninurns\ninutile\ninutilities\ninutility\ninvade\ninvaded\ninvader\ninvaders\ninvades\ninvading\ninvalid\ninvalidate\ninvalidated\ninvalidates\ninvalidating\ninvalidation\ninvalidations\ninvalidator\ninvalidators\ninvalided\ninvaliding\ninvalidism\ninvalidity\ninvalidly\ninvalids\ninvaluable\ninvaluableness\ninvaluably\ninvariability\ninvariable\ninvariably\ninvariant\ninvariants\ninvasion\ninvasions\ninvasive\ninvected\ninvective\ninvectively\ninvectiveness\ninvectives\ninveigh\ninveighed\ninveigher\ninveighers\ninveighing\ninveighs\ninveigle\ninveigled\ninveiglement\ninveiglements\ninveigler\ninveiglers\ninveigles\ninveigling\ninvent\ninvented\ninventer\ninventers\ninventing\ninvention\ninventions\ninventive\ninventively\ninventiveness\ninventor\ninventorial\ninventorially\ninventoried\ninventories\ninventors\ninventory\ninventorying\ninvents\ninverities\ninverity\ninverse\ninversely\ninverses\ninversion\ninversions\ninversive\ninvert\ninvertebrate\ninvertebrates\ninverted\ninverter\ninverters\ninvertible\ninverting\ninvertor\ninvertors\ninverts\ninvest\ninvestable\ninvested\ninvestigate\ninvestigated\ninvestigates\ninvestigating\ninvestigation\ninvestigational\ninvestigations\ninvestigative\ninvestigator\ninvestigators\ninvestigatory\ninvesting\ninvestiture\ninvestitures\ninvestment\ninvestments\ninvestor\ninvestors\ninvests\ninveteracy\ninveterate\ninveterately\ninviable\ninviably\ninvidious\ninvidiously\ninvidiousness\ninvigorate\ninvigorated\ninvigorates\ninvigorating\ninvigoratingly\ninvigoration\ninvigorations\ninvigorator\ninvigorators\ninvincibility\ninvincible\ninvincibleness\ninvincibly\ninviolabilities\ninviolability\ninviolable\ninviolableness\ninviolably\ninviolate\ninviolately\ninviolateness\ninvirile\ninviscid\ninvisibilities\ninvisibility\ninvisible\ninvisibleness\ninvisibly\ninvital\ninvitation\ninvitational\ninvitations\ninvite\ninvited\ninvitee\ninvitees\ninviter\ninviters\ninvites\ninviting\ninvitingly\ninvocate\ninvocated\ninvocates\ninvocating\ninvocation\ninvocational\ninvocations\ninvoice\ninvoiced\ninvoices\ninvoicing\ninvoke\ninvoked\ninvoker\ninvokers\ninvokes\ninvoking\ninvoluntarily\ninvoluntariness\ninvoluntary\ninvolute\ninvoluted\ninvolutes\ninvoluting\ninvolution\ninvolutions\ninvolve\ninvolved\ninvolvedly\ninvolvement\ninvolvements\ninvolver\ninvolvers\ninvolves\ninvolving\ninvulnerabilities\ninvulnerability\ninvulnerable\ninvulnerableness\ninvulnerably\ninwall\ninwalled\ninwalling\ninwalls\ninward\ninwardly\ninwardness\ninwards\ninweave\ninweaved\ninweaves\ninweaving\ninwind\ninwinding\ninwinds\ninwound\ninwove\ninwoven\ninwrap\ninwrapped\ninwrapping\ninwraps\niodate\niodated\niodates\niodating\niodation\niodations\niodic\niodid\niodide\niodides\niodids\niodin\niodinate\niodinated\niodinates\niodinating\niodine\niodines\niodins\niodism\niodisms\niodize\niodized\niodizer\niodizers\niodizes\niodizing\niodoform\niodoforms\niodophor\niodophors\niodopsin\niodopsins\niodous\niolite\niolites\nion\nionic\nionicities\nionicity\nionics\nionise\nionised\nionises\nionising\nionium\nioniums\nionizable\nionization\nionizations\nionize\nionized\nionizer\nionizers\nionizes\nionizing\nionomer\nionomers\nionone\nionones\nionosphere\nionospheres\nionospheric\nions\niota\niotacism\niotacisms\niotas\nipecac\nipecacs\nipomoea\nipomoeas\niracund\nirade\nirades\nirascibility\nirascible\nirascibleness\nirascibly\nirate\nirately\nirater\niratest\nire\nired\nireful\nirefully\nireless\nirenic\nirenical\nirenics\nires\nirid\nirides\niridescence\niridescences\niridescent\niridescently\niridic\niridium\niridiums\nirids\niring\niris\nirised\nirises\nirising\niritic\niritis\niritises\nirk\nirked\nirking\nirks\nirksome\nirksomely\nirksomeness\niron\nironbark\nironbarks\nironclad\nironclads\nirone\nironed\nironer\nironers\nirones\nironic\nironical\nironically\nironicalness\nironies\nironing\nironings\nironist\nironists\nironlike\nironness\nironnesses\nirons\nironside\nironsides\nironstone\nironstones\nironware\nironwares\nironweed\nironweeds\nironwood\nironwoods\nironwork\nironworker\nironworkers\nironworks\nirony\nirradiate\nirradiated\nirradiates\nirradiating\nirradiation\nirradiations\nirradiative\nirradiator\nirradiators\nirrational\nirrationalism\nirrationalist\nirrationalistic\nirrationalists\nirrationalities\nirrationality\nirrationally\nirreal\nirreclaimable\nirreclaimably\nirreconcilabilities\nirreconcilability\nirreconcilable\nirreconcilableness\nirreconcilably\nirrecoverable\nirrecoverableness\nirrecoverably\nirredeemable\nirredeemably\nirreducibility\nirreducible\nirreducibly\nirrefutability\nirrefutable\nirrefutably\nirregular\nirregularities\nirregularity\nirregularly\nirregulars\nirrelevance\nirrelevances\nirrelevancies\nirrelevancy\nirrelevant\nirrelevantly\nirreligious\nirreligiously\nirremediable\nirremediableness\nirremediably\nirremovability\nirremovable\nirremovableness\nirremovably\nirreparable\nirreparableness\nirreparably\nirreplaceability\nirreplaceable\nirreplaceableness\nirreplaceably\nirrepressibility\nirrepressible\nirrepressibly\nirreproachability\nirreproachable\nirreproachableness\nirreproachably\nirresistibility\nirresistible\nirresistibleness\nirresistibly\nirresolute\nirresolutely\nirresoluteness\nirresolution\nirrespective\nirresponsibilities\nirresponsibility\nirresponsible\nirresponsibleness\nirresponsibly\nirretrievability\nirretrievable\nirretrievably\nirreverence\nirreverences\nirreverent\nirreverently\nirreversibility\nirreversible\nirreversibly\nirrevocability\nirrevocable\nirrevocableness\nirrevocably\nirrigate\nirrigated\nirrigates\nirrigating\nirrigation\nirrigations\nirrigator\nirrigators\nirritability\nirritable\nirritableness\nirritably\nirritant\nirritants\nirritate\nirritated\nirritates\nirritating\nirritatingly\nirritation\nirritations\nirritative\nirrupt\nirrupted\nirrupting\nirruption\nirruptions\nirruptive\nirruptively\nirrupts\nis\nisagoge\nisagoges\nisagogic\nisagogics\nisarithm\nisarithms\nisatin\nisatine\nisatines\nisatinic\nisatins\nisba\nisbas\nischemia\nischemias\nischemic\nischia\nischial\nischium\nisinglass\nislamizations\nisland\nislanded\nislander\nislanders\nislanding\nislands\nisle\nisled\nisleless\nisles\nislet\nislets\nisling\nism\nisms\nisobar\nisobare\nisobares\nisobaric\nisobars\nisobath\nisobaths\nisocheim\nisocheims\nisochime\nisochimes\nisochor\nisochore\nisochores\nisochors\nisochron\nisochrons\nisoclinal\nisocline\nisoclines\nisoclinic\nisocracies\nisocracy\nisodose\nisogamies\nisogamy\nisogenic\nisogenies\nisogeny\nisogloss\nisoglosses\nisogon\nisogonal\nisogonals\nisogone\nisogones\nisogonic\nisogonics\nisogonies\nisogons\nisogony\nisogram\nisograms\nisograph\nisographs\nisogriv\nisogrivs\nisohel\nisohels\nisohyet\nisohyets\nisolable\nisolate\nisolated\nisolates\nisolating\nisolation\nisolationism\nisolationist\nisolationists\nisolations\nisolator\nisolators\nisolead\nisoleads\nisoline\nisolines\nisolog\nisologs\nisologue\nisologues\nisomer\nisomeric\nisomerism\nisomerisms\nisomers\nisometric\nisometrically\nisometrics\nisometries\nisometry\nisomorph\nisomorphs\nisonomic\nisonomies\nisonomy\nisophote\nisophotes\nisopleth\nisopleths\nisopod\nisopodan\nisopodans\nisopods\nisoprene\nisoprenes\nisosceles\nisospin\nisospins\nisospories\nisospory\nisostasies\nisostasy\nisotach\nisotachs\nisothere\nisotheres\nisotherm\nisothermal\nisothermally\nisotherms\nisotone\nisotones\nisotonic\nisotope\nisotopes\nisotopic\nisotopies\nisotopy\nisotropic\nisotropies\nisotropy\nisotype\nisotypes\nisotypic\nisozyme\nisozymes\nisozymic\nissei\nisseis\nissuable\nissuably\nissuance\nissuances\nissuant\nissue\nissued\nissueless\nissuer\nissuers\nissues\nissuing\nisthmi\nisthmian\nisthmians\nisthmic\nisthmoid\nisthmus\nisthmuses\nistle\nistles\nit\nitalic\nitalicization\nitalicizations\nitalicize\nitalicized\nitalicizes\nitalicizing\nitalics\nitch\nitched\nitches\nitchier\nitchiest\nitchiness\nitching\nitchings\nitchy\nitem\nitemed\niteming\nitemization\nitemizations\nitemize\nitemized\nitemizer\nitemizers\nitemizes\nitemizing\nitems\niterance\niterances\niterant\niterate\niterated\niterates\niterating\niteration\niterations\niterative\niteratively\niterum\nither\nitinerant\nitinerantly\nitinerants\nitineraries\nitinerary\nitinerate\nitinerated\nitinerates\nitinerating\nitineration\nitinerations\nits\nitself\nivied\nivies\nivories\nivory\nivy\nivylike\niwis\nixia\nixias\nixodid\nixodids\nixora\nixtle\nixtles\nizar\nizars\nizzard\nizzards\njab\njabbed\njabber\njabbered\njabberer\njabberers\njabbering\njabbers\njabbing\njabiru\njabirus\njabot\njabots\njabs\njacal\njacales\njacals\njacamar\njacamars\njacana\njacanas\njacinth\njacinthe\njacinthes\njacinths\njack\njackal\njackals\njackaroo\njackaroos\njackass\njackasses\njackboot\njackboots\njackdaw\njackdaws\njacked\njacker\njackeroo\njackeroos\njackers\njacket\njacketed\njacketing\njackets\njackfish\njackfishes\njackhammer\njackhammers\njackies\njacking\njackknife\njackknifed\njackknifes\njackknifing\njackknives\njackleg\njacklegs\njackpot\njackpots\njackrabbit\njackrabbits\njacks\njackscrew\njackscrews\njackstay\njackstays\njackstraw\njackstraws\njacky\njacobin\njacobins\njacobus\njacobuses\njaconet\njaconets\njacquard\njacquards\njaculate\njaculated\njaculates\njaculating\njade\njaded\njadedly\njadedness\njadeite\njadeites\njades\njading\njadish\njadishly\njaditic\njaeger\njaegers\njag\njager\njagers\njagg\njaggaries\njaggary\njagged\njaggeder\njaggedest\njaggedly\njaggedness\njagger\njaggeries\njaggers\njaggery\njaggheries\njagghery\njaggier\njaggiest\njagging\njaggs\njaggy\njagless\njagra\njagras\njags\njaguar\njaguars\njail\njailbait\njailbird\njailbirds\njailbreak\njailbreaks\njailed\njailer\njailers\njailing\njailor\njailors\njails\njake\njakes\njalap\njalapic\njalapin\njalapins\njalaps\njalop\njalopies\njaloppies\njaloppy\njalops\njalopy\njalousie\njalousies\njam\njamb\njambe\njambeau\njambeaux\njambed\njambes\njambing\njamboree\njamborees\njambs\njammed\njammer\njammers\njamming\njams\njane\njanes\njangle\njangled\njangler\njanglers\njangles\njangling\njaniform\njanisaries\njanisary\njanitor\njanitorial\njanitors\njanizaries\njanizary\njanty\njapan\njapanize\njapanized\njapanizes\njapanizing\njapanned\njapanner\njapanners\njapanning\njapans\njape\njaped\njaper\njaperies\njapers\njapery\njapes\njaping\njapingly\njaponica\njaponicas\njar\njardiniere\njardinieres\njarful\njarfuls\njargon\njargoned\njargonel\njargonels\njargoning\njargonize\njargonized\njargonizes\njargonizing\njargons\njargoon\njargoons\njarina\njarinas\njarl\njarldom\njarldoms\njarls\njarosite\njarosites\njarovize\njarovized\njarovizes\njarovizing\njarrah\njarrahs\njarred\njarring\njarringly\njars\njarsful\njarvey\njarveys\njasmine\njasmines\njasper\njaspers\njaspery\njassid\njassids\njato\njatos\njauk\njauked\njauking\njauks\njaunce\njaunced\njaunces\njauncing\njaundice\njaundiced\njaundices\njaundicing\njaunt\njaunted\njauntier\njauntiest\njauntily\njauntiness\njaunting\njaunts\njaunty\njaup\njauped\njauping\njaups\njava\njavas\njavelin\njavelina\njavelinas\njavelined\njavelining\njavelins\njaw\njawan\njawans\njawbone\njawboned\njawbones\njawboning\njawbreaker\njawbreakers\njawed\njawing\njawlike\njawline\njawlines\njaws\njay\njaybird\njaybirds\njaygee\njaygees\njays\njayvee\njayvees\njaywalk\njaywalked\njaywalker\njaywalkers\njaywalking\njaywalks\njazz\njazzed\njazzer\njazzers\njazzes\njazzier\njazziest\njazzily\njazziness\njazzing\njazzman\njazzmen\njazzy\njealous\njealousies\njealously\njealousness\njealousy\njean\njeans\njebel\njebels\njee\njeed\njeeing\njeep\njeepers\njeeps\njeer\njeered\njeerer\njeerers\njeering\njeeringly\njeers\njees\njeez\njefe\njefes\njehad\njehads\njehu\njehus\njejuna\njejunal\njejune\njejunely\njejunities\njejunity\njejunum\njell\njelled\njellied\njellies\njellified\njellifies\njellify\njellifying\njelling\njells\njelly\njellyfish\njellyfishes\njellying\njellylike\njelutong\njelutongs\njemadar\njemadars\njemidar\njemidars\njemmied\njemmies\njemmy\njemmying\njennet\njennets\njennies\njenny\njeon\njeopard\njeoparded\njeopardies\njeoparding\njeopardize\njeopardized\njeopardizes\njeopardizing\njeopards\njeopardy\njerboa\njerboas\njereed\njereeds\njeremiad\njeremiads\njerid\njerids\njerk\njerked\njerker\njerkers\njerkier\njerkies\njerkiest\njerkily\njerkin\njerkiness\njerking\njerkins\njerks\njerky\njeroboam\njeroboams\njerreed\njerreeds\njerrican\njerricans\njerrid\njerrids\njerries\njerry\njerrycan\njerrycans\njersey\njerseyed\njerseys\njess\njessamine\njessant\njesse\njessed\njesses\njessing\njest\njested\njester\njesters\njestful\njesting\njestingly\njestings\njests\njesuit\njesuitic\njesuitical\njesuitically\njesuitism\njesuitries\njesuitry\njesuits\njet\njetbead\njetbeads\njete\njetes\njetliner\njetliners\njeton\njetons\njetport\njetports\njets\njetsam\njetsams\njetsom\njetsoms\njetted\njettied\njetties\njetting\njettison\njettisoned\njettisoning\njettisons\njetton\njettons\njetty\njettying\njeu\njeux\njew\njewed\njewel\njeweled\njeweler\njewelers\njeweling\njewelled\njeweller\njewellers\njewellike\njewelling\njewelries\njewelry\njewels\njewfish\njewfishes\njewing\njews\njezail\njezails\njezebel\njezebels\njib\njibb\njibbed\njibber\njibbers\njibbing\njibboom\njibbooms\njibbs\njibe\njibed\njiber\njibers\njibes\njibing\njibingly\njibs\njiff\njiffies\njiffs\njiffy\njig\njigaboo\njigaboos\njigged\njigger\njiggered\njiggering\njiggers\njigging\njiggle\njiggled\njiggles\njigglier\njiggliest\njiggling\njiggly\njigs\njigsaw\njigsawed\njigsawing\njigsawn\njigsaws\njihad\njihads\njill\njillion\njillions\njills\njilt\njilted\njilter\njilters\njilting\njilts\njiminy\njimjams\njimmied\njimmies\njimminy\njimmy\njimmying\njimp\njimper\njimpest\njimply\njimpy\njimsonweed\njimsonweeds\njin\njingal\njingall\njingalls\njingals\njingko\njingkoes\njingle\njingled\njingler\njinglers\njingles\njinglier\njingliest\njingling\njingly\njingo\njingoes\njingoish\njingoism\njingoisms\njingoist\njingoistic\njingoistically\njingoists\njink\njinked\njinker\njinkers\njinking\njinks\njinn\njinnee\njinni\njinns\njins\njinx\njinxed\njinxes\njinxing\njipijapa\njipijapas\njism\njisms\njitney\njitneys\njitter\njitterbug\njitterbugged\njitterbugging\njitterbugs\njittered\njittering\njitters\njittery\njiujitsu\njiujitsus\njiujutsu\njiujutsus\njive\njived\njiver\njives\njiving\njlao\njnana\njnanas\njo\njoannes\njob\njobbed\njobber\njobberies\njobbers\njobbery\njobbing\njobholder\njobholders\njobless\njoblessness\njobs\njock\njockey\njockeyed\njockeying\njockeys\njocko\njockos\njocks\njockstrap\njockstraps\njocose\njocosely\njocosities\njocosity\njocular\njocularities\njocularity\njocularly\njocund\njocundity\njocundly\njodhpur\njodhpurs\njoe\njoes\njoey\njoeys\njog\njogged\njogger\njoggers\njogging\njoggle\njoggled\njoggler\njogglers\njoggles\njoggling\njogs\njohannes\njohn\njohnboat\njohnboats\njohnnies\njohnny\njohns\njoin\njoinable\njoinder\njoinders\njoined\njoiner\njoineries\njoiners\njoinery\njoining\njoinings\njoins\njoint\njointed\njointer\njointers\njointing\njointly\njoints\njointure\njointured\njointures\njointuring\njoist\njoisted\njoisting\njoists\njojoba\njojobas\njoke\njoked\njoker\njokers\njokes\njokester\njokesters\njokey\njoking\njokingly\njoky\njole\njoles\njollied\njollier\njollies\njolliest\njollified\njollifies\njollify\njollifying\njollily\njollities\njollity\njolly\njollying\njolt\njolted\njolter\njolters\njoltier\njoltiest\njoltily\njolting\njolts\njolty\njones\njongleur\njongleurs\njonquil\njonquils\njoram\njorams\njordan\njordans\njorum\njorums\njoseph\njosephs\njosh\njoshed\njosher\njoshers\njoshes\njoshing\njoss\njosses\njostle\njostled\njostler\njostlers\njostles\njostling\njot\njota\njotas\njots\njotted\njotting\njottings\njotty\njoual\njouk\njouked\njouking\njouks\njoule\njoules\njounce\njounced\njounces\njouncier\njounciest\njouncing\njouncy\njournal\njournalese\njournalism\njournalist\njournalistic\njournalistically\njournalists\njournalize\njournalized\njournalizes\njournalizing\njournals\njourney\njourneyed\njourneyer\njourneyers\njourneying\njourneyman\njourneymen\njourneys\njoust\njousted\njouster\njousters\njousting\njousts\njovial\njoviality\njovially\njovialties\njovialty\njow\njowar\njowed\njowing\njowl\njowled\njowlier\njowliest\njowls\njowly\njows\njoy\njoyance\njoyances\njoyed\njoyful\njoyfuller\njoyfullest\njoyfully\njoyfulness\njoying\njoyless\njoylessly\njoylessness\njoyous\njoyously\njoyousness\njoypop\njoypopped\njoypopping\njoypops\njoyride\njoyrider\njoyriders\njoyrides\njoyriding\njoys\njoystick\njoysticks\njuba\njubas\njubbah\njubbahs\njube\njubes\njubhah\njubhahs\njubilance\njubilant\njubilantly\njubilate\njubilated\njubilates\njubilating\njubilation\njubilations\njubile\njubilee\njubilees\njubiles\njudas\njudases\njudder\njuddered\njuddering\njudders\njudge\njudged\njudgement\njudgemental\njudgements\njudger\njudgers\njudges\njudgeship\njudgeships\njudging\njudgment\njudgmental\njudgments\njudicatories\njudicatory\njudicature\njudicatures\njudicial\njudicially\njudiciaries\njudiciary\njudicious\njudiciously\njudiciousness\njudo\njudoist\njudoists\njudoka\njudokas\njudos\njug\njuga\njugal\njugate\njugful\njugfuls\njugged\njuggernaut\njuggernauts\njugging\njuggle\njuggled\njuggler\njuggleries\njugglers\njugglery\njuggles\njuggling\njugglings\njughead\njugheads\njugs\njugsful\njugula\njugular\njugulars\njugulate\njugulated\njugulates\njugulating\njugulum\njugum\njugums\njuice\njuiced\njuicer\njuicers\njuices\njuicier\njuiciest\njuicily\njuiciness\njuicing\njuicy\njujitsu\njujitsus\njuju\njujube\njujubes\njujuism\njujuisms\njujuist\njujuists\njujus\njujutsu\njujutsus\njuke\njukebox\njukeboxes\njuked\njukes\njuking\njulep\njuleps\njulienne\njuliennes\njumble\njumbled\njumbler\njumblers\njumbles\njumbling\njumbo\njumbos\njumbuck\njumbucks\njump\njumped\njumper\njumpers\njumpier\njumpiest\njumpily\njumpiness\njumping\njumpoff\njumpoffs\njumps\njumpy\njun\njunco\njuncoes\njuncos\njunction\njunctional\njunctions\njuncture\njunctures\njungle\njungles\njunglier\njungliest\njungly\njunior\njuniors\njuniper\njunipers\njunk\njunked\njunker\njunkers\njunket\njunketed\njunketeer\njunketeers\njunketer\njunketers\njunketing\njunkets\njunkie\njunkier\njunkies\njunkiest\njunking\njunkman\njunkmen\njunks\njunky\njunkyard\njunkyards\njunta\njuntas\njunto\njuntos\njupe\njupes\njupon\njupons\njura\njural\njurally\njurant\njurants\njurat\njuratory\njurats\njurel\njurels\njuridic\njuridical\njuridically\njuries\njurisdiction\njurisdictional\njurisdictions\njurisprudence\njurisprudent\njurisprudential\njurisprudentially\njurisprudents\njurist\njuristic\njuristically\njurists\njuror\njurors\njury\njuryman\njurymen\njus\njussive\njussives\njust\njusted\njuster\njusters\njustest\njustice\njustices\njusticiability\njusticiable\njustifiability\njustifiable\njustifiably\njustification\njustifications\njustificative\njustified\njustifies\njustify\njustifying\njusting\njustle\njustled\njustles\njustling\njustly\njustness\njustnesses\njusts\njut\njute\njutes\njuts\njutted\njuttied\njutties\njutting\njutty\njuttying\njuvenal\njuvenals\njuvenile\njuveniles\njuvenilities\njuvenility\njuxtapose\njuxtaposed\njuxtaposes\njuxtaposing\njuxtaposition\njuxtapositions\nka\nkaas\nkab\nkabab\nkababs\nkabaka\nkabakas\nkabala\nkabalas\nkabar\nkabars\nkabaya\nkabayas\nkabbala\nkabbalah\nkabbalahs\nkabbalas\nkabeljou\nkabeljous\nkabiki\nkabikis\nkabob\nkabobs\nkabs\nkabuki\nkabukis\nkachina\nkachinas\nkaddish\nkaddishim\nkadi\nkadis\nkae\nkaes\nkaf\nkaffir\nkaffirs\nkaffiyeh\nkaffiyehs\nkafir\nkafirs\nkafs\nkaftan\nkaftans\nkagu\nkagus\nkahuna\nkahunas\nkaiak\nkaiaks\nkaif\nkaifs\nkail\nkails\nkailyard\nkailyards\nkain\nkainit\nkainite\nkainites\nkainits\nkains\nkaiser\nkaiserin\nkaiserins\nkaisers\nkajeput\nkajeputs\nkaka\nkakapo\nkakapos\nkakas\nkakemono\nkakemonos\nkaki\nkakis\nkalam\nkalams\nkale\nkaleidoscope\nkaleidoscopes\nkaleidoscopic\nkaleidoscopically\nkalends\nkales\nkalewife\nkalewives\nkaleyard\nkaleyards\nkalian\nkalians\nkalif\nkalifate\nkalifates\nkalifs\nkalimba\nkalimbas\nkaliph\nkaliphs\nkalium\nkaliums\nkallidin\nkallidins\nkalmia\nkalmias\nkalong\nkalongs\nkalpa\nkalpak\nkalpaks\nkalpas\nkalyptra\nkalyptras\nkamaaina\nkamaainas\nkamacite\nkamacites\nkamala\nkamalas\nkame\nkames\nkami\nkamik\nkamikaze\nkamikazes\nkamiks\nkampong\nkampongs\nkamseen\nkamseens\nkamsin\nkamsins\nkana\nkanas\nkane\nkanes\nkangaroo\nkangaroos\nkanji\nkanjis\nkantar\nkantars\nkantele\nkanteles\nkaoliang\nkaoliangs\nkaolin\nkaoline\nkaolines\nkaolinic\nkaolins\nkaon\nkaons\nkapa\nkapas\nkaph\nkaphs\nkapok\nkapoks\nkappa\nkappas\nkaput\nkaputt\nkarakul\nkarakuls\nkarat\nkarate\nkarates\nkarats\nkarma\nkarmas\nkarmic\nkarn\nkarns\nkaroo\nkaroos\nkaross\nkarosses\nkarroo\nkarroos\nkarst\nkarstic\nkarsts\nkart\nkarting\nkartings\nkarts\nkaryotin\nkaryotins\nkas\nkasha\nkashas\nkasher\nkashered\nkashering\nkashers\nkashmir\nkashmirs\nkashrut\nkashruth\nkashruths\nkashruts\nkat\nkatakana\nkatakanas\nkathodal\nkathode\nkathodes\nkathodic\nkation\nkations\nkats\nkatydid\nkatydids\nkauri\nkauries\nkauris\nkaury\nkava\nkavas\nkavass\nkavasses\nkay\nkayak\nkayaker\nkayakers\nkayaks\nkayles\nkayo\nkayoed\nkayoes\nkayoing\nkayos\nkays\nkazoo\nkazoos\nkbar\nkbars\nkea\nkeas\nkebab\nkebabs\nkebar\nkebars\nkebbie\nkebbies\nkebbock\nkebbocks\nkebbuck\nkebbucks\nkeblah\nkeblahs\nkebob\nkebobs\nkeck\nkecked\nkecking\nkeckle\nkeckled\nkeckles\nkeckling\nkecks\nkeddah\nkeddahs\nkedge\nkedged\nkedgeree\nkedgerees\nkedges\nkedging\nkeef\nkeefs\nkeek\nkeeked\nkeeking\nkeeks\nkeel\nkeelage\nkeelages\nkeelboat\nkeelboats\nkeeled\nkeelhale\nkeelhaled\nkeelhales\nkeelhaling\nkeelhaul\nkeelhauled\nkeelhauling\nkeelhauls\nkeeling\nkeelless\nkeels\nkeelson\nkeelsons\nkeen\nkeened\nkeener\nkeeners\nkeenest\nkeening\nkeenly\nkeenness\nkeennesses\nkeens\nkeep\nkeepable\nkeeper\nkeepers\nkeeping\nkeepings\nkeeps\nkeepsake\nkeepsakes\nkeeshond\nkeeshonden\nkeeshonds\nkeester\nkeesters\nkeet\nkeets\nkeeve\nkeeves\nkef\nkefir\nkefirs\nkefs\nkeg\nkegeler\nkegelers\nkegler\nkeglers\nkegling\nkeglings\nkegs\nkeir\nkeirs\nkeister\nkeisters\nkeitloa\nkeitloas\nkelep\nkelly\nkeloid\nkeloidal\nkeloids\nkelp\nkelped\nkelpie\nkelpies\nkelping\nkelps\nkelpy\nkelson\nkelsons\nkelter\nkelters\nkelvin\nkelvins\nkemp\nkemps\nkempt\nken\nkenaf\nkenafs\nkench\nkenches\nkendo\nkendos\nkenned\nkennel\nkenneled\nkenneling\nkennelled\nkennelling\nkennels\nkenning\nkennings\nkeno\nkenos\nkenosis\nkenosises\nkenotic\nkenotron\nkenotrons\nkens\nkent\nkep\nkephalin\nkephalins\nkepi\nkepis\nkepped\nkeppen\nkepping\nkeps\nkept\nkeramic\nkeramics\nkeratin\nkeratinous\nkeratins\nkeratoid\nkeratoma\nkeratomas\nkeratomata\nkeratose\nkerb\nkerbed\nkerbing\nkerbs\nkerchief\nkerchiefed\nkerchiefs\nkerchieves\nkerchoo\nkerf\nkerfed\nkerfing\nkerfs\nkermes\nkermess\nkermesses\nkermis\nkermises\nkern\nkerne\nkerned\nkernel\nkerneled\nkerneling\nkernelled\nkernelling\nkernels\nkernes\nkerning\nkernite\nkernites\nkerns\nkerogen\nkerogens\nkerosene\nkerosenes\nkerosine\nkerosines\nkerplunk\nkerria\nkerrias\nkerries\nkerry\nkersey\nkerseys\nkerygma\nkerygmata\nkestrel\nkestrels\nketch\nketches\nketchup\nketchups\nketene\nketenes\nketo\nketol\nketone\nketones\nketonic\nketose\nketoses\nketosis\nketotic\nkettle\nkettledrum\nkettledrums\nkettles\nkev\nkevel\nkevels\nkevil\nkevils\nkex\nkexes\nkey\nkeyboard\nkeyboarded\nkeyboarder\nkeyboarders\nkeyboarding\nkeyboards\nkeyed\nkeyhole\nkeyholes\nkeying\nkeyless\nkeynote\nkeynoted\nkeynoter\nkeynoters\nkeynotes\nkeynoting\nkeypunch\nkeypunched\nkeypuncher\nkeypunchers\nkeypunches\nkeypunching\nkeys\nkeyset\nkeysets\nkeyster\nkeysters\nkeystone\nkeystones\nkeystroke\nkeystroked\nkeystrokes\nkeystroking\nkeyway\nkeyways\nkeyword\nkeywords\nkhaddar\nkhaddars\nkhadi\nkhadis\nkhaf\nkhafs\nkhaki\nkhakis\nkhalif\nkhalifa\nkhalifas\nkhalifs\nkhamseen\nkhamseens\nkhamsin\nkhamsins\nkhan\nkhanate\nkhanates\nkhans\nkhaph\nkhat\nkhats\nkhazen\nkhazenim\nkhazens\nkheda\nkhedah\nkhedahs\nkhedas\nkhedival\nkhedive\nkhedives\nkhet\nkheth\nkhets\nkhi\nkhirkah\nkhirkahs\nkhis\nkhoum\nkiang\nkiangs\nkiaugh\nkiaughs\nkibbe\nkibble\nkibbled\nkibbles\nkibbling\nkibbutz\nkibbutzim\nkibe\nkibei\nkibes\nkibitz\nkibitzed\nkibitzer\nkibitzers\nkibitzes\nkibitzing\nkibla\nkiblah\nkiblahs\nkiblas\nkibosh\nkiboshed\nkiboshes\nkiboshing\nkick\nkickback\nkickbacks\nkicked\nkicker\nkickers\nkicking\nkickoff\nkickoffs\nkicks\nkickshaw\nkickshaws\nkickup\nkickups\nkicky\nkid\nkidded\nkidder\nkidders\nkiddie\nkiddies\nkidding\nkiddingly\nkiddish\nkiddo\nkiddoes\nkiddos\nkiddush\nkiddushes\nkiddy\nkidlike\nkidnap\nkidnaped\nkidnaper\nkidnapers\nkidnaping\nkidnapped\nkidnapper\nkidnappers\nkidnapping\nkidnaps\nkidney\nkidneys\nkids\nkidskin\nkidskins\nkief\nkiefs\nkielbasa\nkielbasas\nkielbasy\nkier\nkiers\nkiester\nkiesters\nkif\nkifs\nkike\nkikes\nkilim\nkilims\nkill\nkilldee\nkilldeer\nkilldeers\nkilldees\nkilled\nkiller\nkillers\nkillick\nkillicks\nkilling\nkillings\nkilljoy\nkilljoys\nkillock\nkillocks\nkills\nkiln\nkilned\nkilning\nkilns\nkilo\nkilobar\nkilobars\nkilobit\nkilobits\nkilocycle\nkilocycles\nkilogram\nkilograms\nkilohertz\nkiloliter\nkiloliters\nkilometer\nkilometers\nkilomole\nkilomoles\nkilorad\nkilorads\nkilos\nkiloton\nkilotons\nkilovolt\nkilovolts\nkilowatt\nkilowatts\nkilt\nkilted\nkilter\nkilters\nkiltie\nkilties\nkilting\nkiltings\nkilts\nkilty\nkimono\nkimonoed\nkimonos\nkin\nkina\nkinas\nkinase\nkinases\nkind\nkinder\nkindergarten\nkindergartens\nkindergartner\nkindergartners\nkindest\nkindhearted\nkindheartedly\nkindheartedness\nkindle\nkindled\nkindler\nkindlers\nkindles\nkindless\nkindlier\nkindliest\nkindliness\nkindling\nkindlings\nkindly\nkindness\nkindnesses\nkindred\nkindreds\nkinds\nkine\nkinema\nkinemas\nkinematic\nkinematical\nkinematically\nkinematics\nkines\nkinescope\nkinescoped\nkinescopes\nkinescoping\nkineses\nkinesics\nkinesis\nkinetic\nkinetically\nkinetics\nkinetin\nkinetins\nkinfolk\nkinfolks\nking\nkingbird\nkingbirds\nkingbolt\nkingbolts\nkingcup\nkingcups\nkingdom\nkingdoms\nkinged\nkingfish\nkingfishes\nkinghood\nkinghoods\nkinging\nkingless\nkinglet\nkinglets\nkinglier\nkingliest\nkinglike\nkingly\nkingpin\nkingpins\nkingpost\nkingposts\nkings\nkingship\nkingships\nkingside\nkingsides\nkingwood\nkingwoods\nkinin\nkinins\nkink\nkinkajou\nkinkajous\nkinked\nkinkier\nkinkiest\nkinkily\nkinkiness\nkinking\nkinks\nkinky\nkino\nkinos\nkins\nkinsfolk\nkinship\nkinships\nkinsman\nkinsmen\nkinswoman\nkinswomen\nkiosk\nkiosks\nkip\nkipped\nkippen\nkipper\nkippered\nkippering\nkippers\nkipping\nkips\nkipskin\nkipskins\nkir\nkirigami\nkirigamis\nkirk\nkirkman\nkirkmen\nkirks\nkirmess\nkirmesses\nkirn\nkirned\nkirning\nkirns\nkirs\nkirsch\nkirsches\nkirtle\nkirtled\nkirtles\nkishka\nkishkas\nkishke\nkishkes\nkismat\nkismats\nkismet\nkismetic\nkismets\nkiss\nkissable\nkissably\nkissed\nkisser\nkissers\nkisses\nkissing\nkissy\nkist\nkistful\nkistfuls\nkists\nkit\nkitchen\nkitchenette\nkitchenettes\nkitchens\nkite\nkited\nkiter\nkiters\nkites\nkith\nkithara\nkitharas\nkithe\nkithed\nkithes\nkithing\nkiths\nkiting\nkitling\nkitlings\nkits\nkitsch\nkitsches\nkitschy\nkitted\nkittel\nkitten\nkittened\nkittening\nkittens\nkitties\nkitting\nkittle\nkittled\nkittler\nkittles\nkittlest\nkittling\nkitty\nkiva\nkivas\nkiwi\nkiwis\nklatch\nklatches\nklatsch\nklatsches\nklavern\nklaverns\nklaxon\nklaxons\nkleagle\nkleagles\nklepht\nklephtic\nklephts\nkleptomania\nkleptomaniac\nkleptomaniacs\nklong\nklongs\nkloof\nkloofs\nkludge\nkludges\nkluge\nklutz\nklutzes\nklutzier\nklutziest\nklutzy\nklystron\nklystrons\nknack\nknacked\nknacker\nknackeries\nknackers\nknackery\nknacking\nknacks\nknap\nknapped\nknapper\nknappers\nknapping\nknaps\nknapsack\nknapsacks\nknapweed\nknapweeds\nknar\nknarred\nknarry\nknars\nknaur\nknave\nknaveries\nknavery\nknaves\nknavish\nknavishly\nknawel\nknawels\nknead\nkneaded\nkneader\nkneaders\nkneading\nkneads\nknee\nkneecap\nkneecaps\nkneed\nkneehole\nkneeholes\nkneeing\nkneel\nkneeled\nkneeler\nkneelers\nkneeling\nkneels\nkneepad\nkneepads\nkneepan\nkneepans\nknees\nknell\nknelled\nknelling\nknells\nknelt\nknew\nknickers\nknickknack\nknickknacks\nknife\nknifed\nknifer\nknifers\nknifes\nknifing\nknight\nknighted\nknighthood\nknighting\nknightly\nknights\nknish\nknishes\nknit\nknits\nknitted\nknitter\nknitters\nknitting\nknittings\nknitwear\nknitwears\nknives\nknob\nknobbed\nknobbier\nknobbiest\nknobby\nknoblike\nknobs\nknock\nknockdown\nknocked\nknocker\nknockers\nknocking\nknockoff\nknockoffs\nknockout\nknockouts\nknocks\nknoll\nknolled\nknoller\nknollers\nknolling\nknolls\nknolly\nknop\nknopped\nknops\nknosp\nknosps\nknot\nknothole\nknotholes\nknotless\nknotlike\nknots\nknotted\nknotter\nknotters\nknottier\nknottiest\nknottily\nknotting\nknotty\nknotweed\nknotweeds\nknout\nknouted\nknouting\nknouts\nknow\nknowable\nknower\nknowers\nknowing\nknowinger\nknowingest\nknowingly\nknowings\nknowledge\nknowledgeable\nknowledgeableness\nknowledgeably\nknown\nknowns\nknows\nknuckle\nknuckled\nknuckler\nknucklers\nknuckles\nknucklier\nknuckliest\nknuckling\nknuckly\nknur\nknurl\nknurled\nknurlier\nknurliest\nknurling\nknurls\nknurly\nknurs\nkoa\nkoala\nkoalas\nkoan\nkoans\nkoas\nkob\nkobo\nkobold\nkobolds\nkobs\nkoel\nkoels\nkohl\nkohlrabi\nkohlrabies\nkohls\nkoine\nkoines\nkokanee\nkokanees\nkola\nkolacky\nkolas\nkolhoz\nkolhozes\nkolhozy\nkolinski\nkolinskies\nkolinsky\nkolkhos\nkolkhoses\nkolkhosy\nkolkhoz\nkolkhozes\nkolkhozy\nkolkoz\nkolkozes\nkolkozy\nkolo\nkolos\nkomatik\nkomatiks\nkomondor\nkomondorock\nkomondorok\nkomondors\nkonk\nkonks\nkoodoo\nkoodoos\nkook\nkookie\nkookier\nkookiest\nkooks\nkooky\nkop\nkopeck\nkopecks\nkopek\nkopeks\nkoph\nkophs\nkopje\nkopjes\nkoppa\nkoppas\nkoppie\nkoppies\nkops\nkor\nkorat\nkors\nkorun\nkoruna\nkorunas\nkoruny\nkos\nkosher\nkoshered\nkoshering\nkoshers\nkoss\nkoto\nkotos\nkotow\nkotowed\nkotower\nkotowers\nkotowing\nkotows\nkoumis\nkoumises\nkoumiss\nkoumisses\nkoumys\nkoumyses\nkoumyss\nkoumysses\nkousso\nkoussos\nkowtow\nkowtowed\nkowtower\nkowtowers\nkowtowing\nkowtows\nkraal\nkraaled\nkraaling\nkraals\nkraft\nkrafts\nkrait\nkraits\nkraken\nkrakens\nkrater\nkraters\nkraut\nkrauts\nkreep\nkremlin\nkremlins\nkreutzer\nkreutzers\nkreuzer\nkreuzers\nkrill\nkrills\nkrimmer\nkrimmers\nkris\nkrises\nkrona\nkrone\nkronen\nkroner\nkronor\nkronur\nkroon\nkrooni\nkroons\nkrubi\nkrubis\nkrubut\nkrubuts\nkruller\nkrullers\nkryolite\nkryolites\nkryolith\nkryoliths\nkrypton\nkryptons\nkuchen\nkudo\nkudos\nkudu\nkudus\nkudzu\nkudzus\nkue\nkues\nkugel\nkukri\nkulak\nkulaki\nkulaks\nkultur\nkulturs\nkumiss\nkumisses\nkummel\nkummels\nkumquat\nkumquats\nkumys\nkumyses\nkunzite\nkunzites\nkurbash\nkurbashed\nkurbashes\nkurbashing\nkurgan\nkurgans\nkurta\nkurtas\nkurtosis\nkurtosises\nkuru\nkurus\nkusso\nkussos\nkvas\nkvases\nkvass\nkvasses\nkvetch\nkvetched\nkvetches\nkvetching\nkwacha\nkyack\nkyacks\nkyak\nkyaks\nkyanise\nkyanised\nkyanises\nkyanising\nkyanite\nkyanites\nkyanize\nkyanized\nkyanizes\nkyanizing\nkyar\nkyars\nkyat\nkyats\nkylikes\nkylix\nkymogram\nkymograms\nkyphoses\nkyphosis\nkyphotic\nkyrie\nkyries\nkyte\nkytes\nkythe\nkythed\nkythes\nkything\nla\nlaager\nlaagered\nlaagering\nlaagers\nlab\nlabara\nlabarum\nlabarums\nlabdanum\nlabdanums\nlabel\nlabeled\nlabeler\nlabelers\nlabeling\nlabella\nlabelled\nlabeller\nlabellers\nlabelling\nlabellum\nlabels\nlabia\nlabial\nlabialization\nlabializations\nlabialize\nlabialized\nlabializes\nlabializing\nlabially\nlabials\nlabiate\nlabiated\nlabiates\nlabile\nlabilities\nlability\nlabium\nlabor\nlaboratories\nlaboratory\nlabored\nlaborer\nlaborers\nlaboring\nlaborious\nlaboriously\nlaboriousness\nlaborite\nlaborites\nlabors\nlabour\nlaboured\nlabourer\nlabourers\nlabouring\nlabours\nlabra\nlabret\nlabrets\nlabroid\nlabroids\nlabrum\nlabrums\nlabs\nlaburnum\nlaburnums\nlabyrinth\nlabyrinthine\nlabyrinths\nlac\nlace\nlaced\nlaceless\nlacelike\nlacer\nlacerate\nlacerated\nlacerates\nlacerating\nlaceration\nlacerations\nlacers\nlacertid\nlacertids\nlaces\nlacewing\nlacewings\nlacewood\nlacewoods\nlacework\nlaceworks\nlacey\nlaches\nlachrymal\nlachrymator\nlachrymators\nlachrymose\nlachrymosely\nlacier\nlaciest\nlacily\nlaciness\nlacinesses\nlacing\nlacings\nlack\nlackadaisical\nlackadaisically\nlackaday\nlacked\nlacker\nlackered\nlackering\nlackers\nlackey\nlackeyed\nlackeying\nlackeys\nlacking\nlackluster\nlacks\nlaconic\nlaconically\nlaconism\nlaconisms\nlacquer\nlacquered\nlacquering\nlacquers\nlacquey\nlacqueyed\nlacqueying\nlacqueys\nlacrimal\nlacrimals\nlacrosse\nlacrosses\nlacs\nlactam\nlactams\nlactary\nlactase\nlactases\nlactate\nlactated\nlactates\nlactating\nlactation\nlactations\nlacteal\nlacteals\nlactean\nlacteous\nlactic\nlactone\nlactones\nlactonic\nlactose\nlactoses\nlacuna\nlacunae\nlacunal\nlacunar\nlacunaria\nlacunars\nlacunary\nlacunas\nlacunate\nlacune\nlacunes\nlacunose\nlacy\nlad\nladanum\nladanums\nladder\nladdered\nladdering\nladders\nladdie\nladdies\nlade\nladed\nladen\nladened\nladening\nladens\nlader\nladers\nlades\nladies\nlading\nladings\nladino\nladinos\nladle\nladled\nladleful\nladlefuls\nladler\nladlers\nladles\nladling\nladron\nladrone\nladrones\nladrons\nlads\nlady\nladybird\nladybirds\nladybug\nladybugs\nladyfinger\nladyfingers\nladyfish\nladyfishes\nladyhood\nladyhoods\nladyish\nladykin\nladykins\nladylike\nladylove\nladyloves\nladypalm\nladypalms\nladyship\nladyships\nlaevo\nlag\nlagan\nlagans\nlagend\nlagends\nlager\nlagered\nlagering\nlagers\nlaggard\nlaggards\nlagged\nlagger\nlaggers\nlagging\nlaggings\nlagnappe\nlagnappes\nlagniappe\nlagniappes\nlagoon\nlagoonal\nlagoons\nlags\nlaguna\nlagunas\nlagune\nlagunes\nlahar\nlaic\nlaical\nlaically\nlaich\nlaichs\nlaicise\nlaicised\nlaicises\nlaicising\nlaicism\nlaicisms\nlaicize\nlaicized\nlaicizes\nlaicizing\nlaics\nlaid\nlaigh\nlaighs\nlain\nlair\nlaird\nlairdly\nlairds\nlaired\nlairing\nlairs\nlaitance\nlaitances\nlaith\nlaithly\nlaities\nlaity\nlake\nlaked\nlakeport\nlakeports\nlaker\nlakers\nlakes\nlakeside\nlakesides\nlakh\nlakhs\nlakier\nlakiest\nlaking\nlakings\nlaky\nlall\nlallan\nlalland\nlallands\nlallans\nlalled\nlalling\nlalls\nlallygag\nlallygagged\nlallygagging\nlallygags\nlam\nlama\nlamas\nlamaseries\nlamasery\nlamb\nlambast\nlambaste\nlambasted\nlambastes\nlambasting\nlambasts\nlambda\nlambdas\nlambdoid\nlambed\nlambencies\nlambency\nlambent\nlamber\nlambers\nlambert\nlamberts\nlambie\nlambies\nlambing\nlambkill\nlambkills\nlambkin\nlambkins\nlamblike\nlambrequin\nlambrequins\nlambs\nlambskin\nlambskins\nlame\nlamebrain\nlamebrained\nlamebrains\nlamed\nlamedh\nlamedhs\nlameds\nlamella\nlamellae\nlamellar\nlamellas\nlamely\nlameness\nlamenesses\nlament\nlamentable\nlamentably\nlamentation\nlamentations\nlamented\nlamenter\nlamenters\nlamenting\nlaments\nlamer\nlames\nlamest\nlamia\nlamiae\nlamias\nlamina\nlaminae\nlaminal\nlaminar\nlaminary\nlaminas\nlaminate\nlaminated\nlaminates\nlaminating\nlamination\nlaminations\nlaminator\nlaminators\nlaming\nlaminose\nlaminous\nlamister\nlamisters\nlammed\nlamming\nlamp\nlampad\nlampads\nlampas\nlampases\nlamped\nlampers\nlamperses\nlamping\nlampion\nlampions\nlampoon\nlampooned\nlampooning\nlampoons\nlamppost\nlampposts\nlamprey\nlampreys\nlamps\nlampyrid\nlampyrids\nlams\nlamster\nlamsters\nlanai\nlanais\nlanate\nlanated\nlance\nlanced\nlancelet\nlancelets\nlancer\nlancers\nlances\nlancet\nlanceted\nlancets\nlanciers\nlancing\nland\nlandau\nlandaus\nlanded\nlander\nlanders\nlandfall\nlandfalls\nlandfill\nlandfills\nlandform\nlandforms\nlandholder\nlandholders\nlandholding\nlandholdings\nlanding\nlandings\nlandladies\nlandlady\nlandler\nlandlers\nlandless\nlandlocked\nlandlord\nlandlords\nlandlubber\nlandlubbers\nlandman\nlandmark\nlandmarks\nlandmass\nlandmasses\nlandmen\nlandowner\nlandowners\nlands\nlandscape\nlandscaped\nlandscaper\nlandscapers\nlandscapes\nlandscaping\nlandscapist\nlandscapists\nlandside\nlandsides\nlandskip\nlandskips\nlandsleit\nlandslid\nlandslide\nlandslides\nlandslip\nlandslips\nlandsman\nlandsmen\nlandward\nlane\nlanely\nlanes\nlang\nlanglauf\nlanglaufs\nlangley\nlangleys\nlangrage\nlangrages\nlangrel\nlangrels\nlangshan\nlangshans\nlangsyne\nlangsynes\nlanguage\nlanguages\nlangue\nlangues\nlanguet\nlanguets\nlanguid\nlanguidly\nlanguidness\nlanguish\nlanguished\nlanguishes\nlanguishing\nlanguor\nlanguorous\nlanguorously\nlanguors\nlangur\nlangurs\nlaniard\nlaniards\nlaniaries\nlaniary\nlanital\nlanitals\nlank\nlanker\nlankest\nlankier\nlankiest\nlankily\nlankiness\nlankly\nlankness\nlanknesses\nlanky\nlanner\nlanneret\nlannerets\nlanners\nlanolin\nlanoline\nlanolines\nlanolins\nlanose\nlanosities\nlanosity\nlantana\nlantanas\nlantern\nlanterns\nlanthorn\nlanthorns\nlanugo\nlanugos\nlanyard\nlanyards\nlap\nlapboard\nlapboards\nlapdog\nlapdogs\nlapel\nlapelled\nlapels\nlapful\nlapfuls\nlapidaries\nlapidary\nlapidate\nlapidated\nlapidates\nlapidating\nlapides\nlapidified\nlapidifies\nlapidify\nlapidifying\nlapidist\nlapidists\nlapilli\nlapillus\nlapin\nlapins\nlapis\nlapises\nlapped\nlapper\nlappered\nlappering\nlappers\nlappet\nlappeted\nlappets\nlapping\nlaps\nlapsable\nlapse\nlapsed\nlapser\nlapsers\nlapses\nlapsible\nlapsing\nlapsus\nlapwing\nlapwings\nlar\nlarboard\nlarboards\nlarcener\nlarceners\nlarcenies\nlarcenist\nlarcenists\nlarcenous\nlarcenously\nlarceny\nlarch\nlarches\nlard\nlarded\nlarder\nlarders\nlardier\nlardiest\nlarding\nlardlike\nlardon\nlardons\nlardoon\nlardoons\nlards\nlardy\nlaree\nlares\nlarge\nlargely\nlargeness\nlarger\nlarges\nlargess\nlargesse\nlargesses\nlargest\nlargish\nlargo\nlargos\nlari\nlariat\nlariated\nlariating\nlariats\nlarine\nlaris\nlark\nlarked\nlarker\nlarkers\nlarkier\nlarkiest\nlarking\nlarks\nlarksome\nlarkspur\nlarkspurs\nlarky\nlarrigan\nlarrigans\nlarrikin\nlarrikins\nlarrup\nlarruped\nlarruper\nlarrupers\nlarruping\nlarrups\nlars\nlarum\nlarums\nlarva\nlarvae\nlarval\nlarvas\nlarvicidal\nlarvicide\nlarvicides\nlaryngal\nlaryngeal\nlarynges\nlaryngitic\nlaryngitis\nlarynx\nlarynxes\nlas\nlasagna\nlasagnas\nlasagne\nlasagnes\nlascar\nlascars\nlascivious\nlasciviously\nlasciviousness\nlase\nlased\nlaser\nlasers\nlases\nlash\nlashed\nlasher\nlashers\nlashes\nlashing\nlashings\nlashins\nlashkar\nlashkars\nlasing\nlass\nlasses\nlassie\nlassies\nlassitude\nlassitudes\nlasso\nlassoed\nlassoer\nlassoers\nlassoes\nlassoing\nlassos\nlast\nlasted\nlaster\nlasters\nlasting\nlastingly\nlastings\nlastly\nlasts\nlat\nlatakia\nlatakias\nlatch\nlatched\nlatches\nlatchet\nlatchets\nlatching\nlatchkey\nlatchkeys\nlate\nlatecomer\nlatecomers\nlated\nlateen\nlateener\nlateeners\nlateens\nlately\nlaten\nlatencies\nlatency\nlatened\nlateness\nlatenesses\nlatening\nlatens\nlatent\nlatently\nlatents\nlater\nlaterad\nlateral\nlateraled\nlateraling\nlaterally\nlaterals\nlaterite\nlaterites\nlatest\nlatests\nlatewood\nlatewoods\nlatex\nlatexes\nlath\nlathe\nlathed\nlather\nlathered\nlatherer\nlatherers\nlathering\nlathers\nlathery\nlathes\nlathi\nlathier\nlathiest\nlathing\nlathings\nlaths\nlathwork\nlathworks\nlathy\nlati\nlatices\nlaties\nlatigo\nlatigoes\nlatigos\nlatinities\nlatinity\nlatinize\nlatinized\nlatinizes\nlatinizing\nlatish\nlatitude\nlatitudes\nlatitudinal\nlatitudinally\nlatitudinarian\nlatitudinarians\nlatke\nlatosol\nlatosols\nlatria\nlatrias\nlatrine\nlatrines\nlats\nlatten\nlattens\nlatter\nlatterly\nlattice\nlatticed\nlattices\nlatticework\nlatticeworks\nlatticing\nlattin\nlattins\nlauan\nlauans\nlaud\nlaudability\nlaudable\nlaudableness\nlaudably\nlaudanum\nlaudanums\nlaudation\nlaudations\nlaudator\nlaudators\nlaudatory\nlauded\nlauder\nlauders\nlauding\nlauds\nlaugh\nlaughable\nlaughableness\nlaughably\nlaughed\nlaugher\nlaughers\nlaughing\nlaughingly\nlaughings\nlaughingstock\nlaughingstocks\nlaughs\nlaughter\nlaughters\nlaunce\nlaunces\nlaunch\nlaunched\nlauncher\nlaunchers\nlaunches\nlaunching\nlaunchpad\nlaunchpads\nlaunder\nlaundered\nlaunderer\nlaunderers\nlaundering\nlaunders\nlaundress\nlaundresses\nlaundries\nlaundry\nlaundryman\nlaundrymen\nlaundrywoman\nlaundrywomen\nlaura\nlaurae\nlauras\nlaureate\nlaureated\nlaureates\nlaureateship\nlaureateships\nlaureating\nlaureation\nlaureations\nlaurel\nlaureled\nlaureling\nlaurelled\nlaurelling\nlaurels\nlauwine\nlauwines\nlav\nlava\nlavabo\nlavaboes\nlavabos\nlavage\nlavages\nlavalava\nlavalavas\nlavalier\nlavaliere\nlavalieres\nlavaliers\nlavalike\nlavalliere\nlavallieres\nlavas\nlavation\nlavations\nlavatories\nlavatory\nlave\nlaved\nlaveer\nlaveered\nlaveering\nlaveers\nlavender\nlavendered\nlavendering\nlavenders\nlaver\nlaverock\nlaverocks\nlavers\nlaves\nlaving\nlavish\nlavished\nlavisher\nlavishers\nlavishes\nlavishest\nlavishing\nlavishly\nlavishness\nlavrock\nlavrocks\nlavs\nlaw\nlawbreaker\nlawbreakers\nlawbreaking\nlawed\nlawful\nlawfully\nlawfulness\nlawgiver\nlawgivers\nlawine\nlawines\nlawing\nlawings\nlawless\nlawlessly\nlawlessness\nlawlike\nlawmaker\nlawmakers\nlawmaking\nlawman\nlawmen\nlawn\nlawns\nlawny\nlaws\nlawsuit\nlawsuits\nlawyer\nlawyerly\nlawyers\nlax\nlaxation\nlaxations\nlaxative\nlaxatives\nlaxer\nlaxest\nlaxities\nlaxity\nlaxly\nlaxness\nlaxnesses\nlay\nlayabout\nlayabouts\nlayaway\nlayaways\nlayed\nlayer\nlayerage\nlayerages\nlayered\nlayering\nlayerings\nlayers\nlayette\nlayettes\nlaying\nlayman\nlaymen\nlayoff\nlayoffs\nlayout\nlayouts\nlayover\nlayovers\nlayperson\nlaypersons\nlays\nlayup\nlaywoman\nlaywomen\nlazar\nlazaret\nlazarets\nlazars\nlaze\nlazed\nlazes\nlazied\nlazier\nlazies\nlaziest\nlazily\nlaziness\nlazinesses\nlazing\nlazuli\nlazulis\nlazulite\nlazulites\nlazurite\nlazurites\nlazy\nlazying\nlazyish\nlea\nleach\nleachability\nleachable\nleachate\nleachates\nleached\nleacher\nleachers\nleaches\nleachier\nleachiest\nleaching\nleachy\nlead\nleaded\nleaden\nleadenly\nleader\nleaderless\nleaders\nleadership\nleadier\nleadiest\nleading\nleadings\nleadless\nleadoff\nleadoffs\nleads\nleadsman\nleadsmen\nleadwork\nleadworks\nleadwort\nleadworts\nleady\nleaf\nleafage\nleafages\nleafed\nleafier\nleafiest\nleafing\nleafless\nleaflet\nleaflets\nleaflike\nleafs\nleafworm\nleafworms\nleafy\nleague\nleagued\nleaguer\nleaguered\nleaguering\nleaguers\nleagues\nleaguing\nleak\nleakage\nleakages\nleaked\nleaker\nleakers\nleakier\nleakiest\nleakily\nleakiness\nleaking\nleakless\nleakproof\nleaks\nleaky\nleal\nleally\nlealties\nlealty\nlean\nleaned\nleaner\nleanest\nleaning\nleanings\nleanly\nleanness\nleannesses\nleans\nleant\nleap\nleaped\nleaper\nleapers\nleapfrog\nleapfrogged\nleapfrogging\nleapfrogs\nleaping\nleaps\nleapt\nlear\nlearier\nleariest\nlearn\nlearnable\nlearned\nlearnedly\nlearnedness\nlearner\nlearners\nlearning\nlearnings\nlearns\nlearnt\nlears\nleary\nleas\nleasable\nlease\nleased\nleaseholder\nleaseholders\nleaser\nleasers\nleases\nleash\nleashed\nleashes\nleashing\nleasing\nleasings\nleast\nleasts\nleather\nleathered\nleathering\nleathern\nleathers\nleathery\nleave\nleaved\nleaven\nleavened\nleavening\nleavenings\nleavens\nleaver\nleavers\nleaves\nleavier\nleaviest\nleaving\nleavings\nleavy\nleben\nlebens\nlech\nlechayim\nlechayims\nlecher\nlechered\nlecheries\nlechering\nlecherous\nlecherously\nlecherousness\nlechers\nlechery\nleches\nlecithin\nlecithins\nlectern\nlecterns\nlection\nlections\nlector\nlectors\nlecture\nlectured\nlecturer\nlecturers\nlectures\nlectureship\nlectureships\nlecturing\nlecythi\nlecythus\nled\nledge\nledger\nledgers\nledges\nledgier\nledgiest\nledgy\nlee\nleeboard\nleeboards\nleech\nleeched\nleeches\nleeching\nleek\nleeks\nleer\nleered\nleerier\nleeriest\nleerily\nleering\nleeringly\nleers\nleery\nlees\nleet\nleets\nleeward\nleewards\nleeway\nleeways\nleft\nlefter\nleftest\nlefties\nleftism\nleftisms\nleftist\nleftists\nleftover\nleftovers\nlefts\nleftward\nleftwing\nlefty\nleg\nlegacies\nlegacy\nlegal\nlegalese\nlegaleses\nlegalise\nlegalised\nlegalises\nlegalising\nlegalism\nlegalisms\nlegalist\nlegalistic\nlegalistically\nlegalists\nlegalities\nlegality\nlegalization\nlegalizations\nlegalize\nlegalized\nlegalizes\nlegalizing\nlegally\nlegals\nlegate\nlegated\nlegatee\nlegatees\nlegates\nlegatine\nlegating\nlegation\nlegations\nlegato\nlegator\nlegators\nlegatos\nlegend\nlegendary\nlegendries\nlegendry\nlegends\nleger\nlegerdemain\nlegerities\nlegerity\nlegers\nleges\nlegged\nleggier\nleggiest\nleggin\nlegging\nleggings\nleggins\nleggy\nleghorn\nleghorns\nlegibility\nlegible\nlegibly\nlegion\nlegionaries\nlegionary\nlegionnaire\nlegionnaires\nlegions\nlegislate\nlegislated\nlegislates\nlegislating\nlegislation\nlegislations\nlegislative\nlegislatively\nlegislator\nlegislatorial\nlegislators\nlegislature\nlegislatures\nlegist\nlegists\nlegit\nlegitimacy\nlegitimate\nlegitimated\nlegitimately\nlegitimates\nlegitimating\nlegitimation\nlegitimations\nlegitimist\nlegitimists\nlegitimize\nlegitimized\nlegitimizes\nlegitimizing\nlegits\nlegless\nleglike\nlegman\nlegmen\nlegroom\nlegrooms\nlegs\nlegume\nlegumes\nlegumin\nleguminous\nlegumins\nlegwork\nlegworks\nlehayim\nlehayims\nlehr\nlehrs\nlehua\nlehuas\nlei\nleis\nleister\nleistered\nleistering\nleisters\nleisure\nleisured\nleisureliness\nleisurely\nleisures\nlek\nleke\nleks\nleku\nlekythi\nlekythoi\nlekythos\nlekythus\nleman\nlemans\nlemma\nlemmas\nlemmata\nlemming\nlemmings\nlemnisci\nlemon\nlemonade\nlemonades\nlemonish\nlemons\nlemony\nlempira\nlempiras\nlemur\nlemures\nlemuroid\nlemuroids\nlemurs\nlend\nlender\nlenders\nlending\nlends\nlenes\nlength\nlengthen\nlengthened\nlengthener\nlengtheners\nlengthening\nlengthens\nlengthier\nlengthiest\nlengthily\nlengthiness\nlengths\nlengthways\nlengthwise\nlengthy\nlenience\nleniences\nleniencies\nleniency\nlenient\nleniently\nlenis\nlenities\nlenitive\nlenitives\nlenity\nleno\nlenos\nlens\nlense\nlensed\nlenses\nlensless\nlent\nlentando\nlenten\nlentic\nlenticel\nlenticels\nlentigines\nlentigo\nlentil\nlentils\nlentisk\nlentisks\nlento\nlentoid\nlentos\nleone\nleones\nleonine\nleopard\nleopards\nleotard\nleotards\nleper\nlepers\nlepidote\nleporid\nleporids\nleporine\nleprechaun\nleprechauns\nleprose\nleprosies\nleprosy\nleprotic\nleprous\nleprousness\nlept\nlepta\nlepton\nleptonic\nleptons\nlesbian\nlesbianism\nlesbians\nlesion\nlesions\nless\nlessee\nlessees\nlessen\nlessened\nlessening\nlessens\nlesser\nlesson\nlessoned\nlessoning\nlessons\nlessor\nlessors\nlest\nlet\nletch\nletches\nletdown\nletdowns\nlethal\nlethality\nlethally\nlethals\nlethargic\nlethargically\nlethargies\nlethargy\nlethe\nlethean\nlethes\nlets\nletted\nletter\nlettered\nletterer\nletterers\nletterhead\nletterheads\nlettering\nletterpress\nletters\nletting\nlettuce\nlettuces\nletup\nletups\nleu\nleucemia\nleucemias\nleucemic\nleucin\nleucine\nleucines\nleucins\nleucite\nleucites\nleucitic\nleucoma\nleucomas\nleud\nleudes\nleuds\nleukemia\nleukemias\nleukemic\nleukemics\nleukoma\nleukomas\nleukon\nleukons\nleukoses\nleukosis\nleukotic\nlev\nleva\nlevant\nlevanted\nlevanter\nlevanters\nlevanting\nlevants\nlevator\nlevatores\nlevators\nlevee\nleveed\nleveeing\nlevees\nlevel\nleveled\nleveler\nlevelers\nlevelheaded\nlevelheadedness\nleveling\nlevelled\nleveller\nlevellers\nlevelling\nlevelly\nlevelness\nlevels\nlever\nleverage\nleveraged\nleverages\nleveraging\nlevered\nleveret\nleverets\nlevering\nlevers\nleviable\nleviathan\nleviathans\nlevied\nlevier\nleviers\nlevies\nlevigate\nlevigated\nlevigates\nlevigating\nlevin\nlevins\nlevirate\nlevirates\nlevitate\nlevitated\nlevitates\nlevitating\nlevitation\nlevitations\nlevities\nlevity\nlevo\nlevogyre\nlevulin\nlevulins\nlevulose\nlevuloses\nlevy\nlevying\nlewd\nlewder\nlewdest\nlewdly\nlewdness\nlewdnesses\nlewis\nlewises\nlewisite\nlewisites\nlewisson\nlewissons\nlex\nlexes\nlexica\nlexical\nlexicality\nlexically\nlexicographer\nlexicographers\nlexicographic\nlexicographical\nlexicographically\nlexicography\nlexicon\nlexicons\nlexis\nley\nleys\nlez\nlezes\nlezzy\nli\nliabilities\nliability\nliable\nliaise\nliaised\nliaises\nliaising\nliaison\nliaisons\nliana\nlianas\nliane\nlianes\nliang\nliangs\nlianoid\nliar\nliard\nliards\nliars\nlib\nlibation\nlibationary\nlibations\nlibber\nlibbers\nlibeccio\nlibeccios\nlibel\nlibelant\nlibelants\nlibeled\nlibelee\nlibelees\nlibeler\nlibelers\nlibeling\nlibelist\nlibelists\nlibellant\nlibellants\nlibelled\nlibellee\nlibellees\nlibeller\nlibellers\nlibelling\nlibellous\nlibelous\nlibels\nliber\nliberal\nliberalism\nliberalist\nliberalistic\nliberalists\nliberalities\nliberality\nliberalization\nliberalizations\nliberalize\nliberalized\nliberalizes\nliberalizing\nliberally\nliberalness\nliberals\nliberate\nliberated\nliberates\nliberating\nliberation\nliberations\nliberator\nliberators\nlibers\nlibertarian\nlibertarianism\nlibertarians\nliberties\nlibertine\nlibertines\nliberty\nlibidinal\nlibidinous\nlibido\nlibidos\nlibra\nlibrae\nlibrarian\nlibrarians\nlibraries\nlibrary\nlibras\nlibrate\nlibrated\nlibrates\nlibrating\nlibretti\nlibrettist\nlibrettists\nlibretto\nlibrettos\nlibri\nlibs\nlice\nlicence\nlicencee\nlicencees\nlicencenced\nlicencences\nlicencencing\nlicencer\nlicencers\nlicencing\nlicensable\nlicense\nlicensed\nlicensee\nlicensees\nlicenser\nlicensers\nlicenses\nlicensing\nlicensor\nlicensors\nlicentiate\nlicentiates\nlicentious\nlicentiously\nlicentiousness\nlich\nlichee\nlichees\nlichen\nlichened\nlichenin\nlichening\nlichenins\nlichenous\nlichens\nlichi\nlichis\nlicht\nlichted\nlichting\nlichtly\nlichts\nlicit\nlicitly\nlick\nlicked\nlicker\nlickers\nlicking\nlickings\nlicks\nlickspit\nlickspits\nlicorice\nlicorices\nlictor\nlictors\nlid\nlidar\nlidars\nlidded\nlidding\nlidless\nlido\nlidos\nlids\nlie\nlied\nlieder\nlief\nliefer\nliefest\nliefly\nliege\nliegeman\nliegemen\nlieges\nlien\nlienable\nlienal\nliens\nlienteries\nlientery\nlier\nlierne\nliernes\nliers\nlies\nliest\nlieu\nlieus\nlieutenancies\nlieutenancy\nlieutenant\nlieutenants\nlieve\nliever\nlievest\nlife\nlifeblood\nlifeboat\nlifeboats\nlifeful\nlifeguard\nlifeguards\nlifeless\nlifelessly\nlifelessness\nlifelike\nlifeline\nlifelines\nlifelong\nlifer\nlifers\nlifesaver\nlifesavers\nlifesaving\nlifetime\nlifetimes\nlifeway\nlifeways\nlifework\nlifeworks\nlift\nliftable\nlifted\nlifter\nlifters\nlifting\nliftman\nliftmen\nliftoff\nliftoffs\nlifts\nligament\nligamentous\nligaments\nligan\nligand\nligands\nligans\nligase\nligases\nligate\nligated\nligates\nligating\nligation\nligations\nligative\nligature\nligatured\nligatures\nligaturing\nliger\nlight\nlighted\nlighten\nlightened\nlightener\nlighteners\nlightening\nlightens\nlighter\nlighterage\nlightered\nlightering\nlighters\nlightest\nlightful\nlighthearted\nlightheartedly\nlightheartedness\nlighthouse\nlighthouses\nlighting\nlightings\nlightish\nlightly\nlightness\nlightning\nlightninged\nlightnings\nlightproof\nlights\nlightweight\nlightweights\nligneous\nlignified\nlignifies\nlignify\nlignifying\nlignin\nlignins\nlignite\nlignites\nlignitic\nligroin\nligroine\nligroines\nligroins\nligula\nligulae\nligular\nligulas\nligulate\nligule\nligules\nliguloid\nligure\nligures\nlikability\nlikable\nlikableness\nlike\nlikeable\nliked\nlikeliest\nlikelihood\nlikelihoods\nlikely\nliken\nlikened\nlikeness\nlikenesses\nlikening\nlikens\nliker\nlikers\nlikes\nlikest\nlikewise\nliking\nlikings\nlikuta\nlilac\nlilacs\nlilied\nlilies\nlilliput\nlilliputs\nlilt\nlilted\nlilting\nlilts\nlily\nlilylike\nlima\nlimacine\nlimacon\nlimacons\nliman\nlimans\nlimas\nlimb\nlimba\nlimbas\nlimbate\nlimbeck\nlimbecks\nlimbed\nlimber\nlimbered\nlimberer\nlimberest\nlimbering\nlimberly\nlimberness\nlimbers\nlimbi\nlimbic\nlimbier\nlimbiest\nlimbing\nlimbless\nlimbo\nlimbos\nlimbs\nlimbus\nlimbuses\nlimby\nlime\nlimeade\nlimeades\nlimed\nlimekiln\nlimekilns\nlimeless\nlimelight\nlimelights\nlimen\nlimens\nlimerick\nlimericks\nlimes\nlimestone\nlimestones\nlimey\nlimeys\nlimier\nlimiest\nlimina\nliminal\nliminess\nliminesses\nliming\nlimit\nlimitable\nlimitary\nlimitation\nlimitations\nlimited\nlimitedly\nlimitedness\nlimiteds\nlimiter\nlimiters\nlimites\nlimiting\nlimitless\nlimitlessly\nlimitlessness\nlimits\nlimmer\nlimmers\nlimn\nlimned\nlimner\nlimners\nlimnetic\nlimnic\nlimning\nlimns\nlimo\nlimonene\nlimonenes\nlimonite\nlimonites\nlimos\nlimousine\nlimousines\nlimp\nlimpa\nlimped\nlimper\nlimpers\nlimpest\nlimpet\nlimpets\nlimpid\nlimpidity\nlimpidly\nlimpidness\nlimping\nlimpingly\nlimpkin\nlimpkins\nlimply\nlimpness\nlimpnesses\nlimps\nlimpsy\nlimuli\nlimuloid\nlimuloids\nlimulus\nlimy\nlin\nlinable\nlinac\nlinacs\nlinage\nlinages\nlinalol\nlinalols\nlinalool\nlinalools\nlinchpin\nlinchpins\nlindane\nlindanes\nlinden\nlindens\nlindies\nlindy\nline\nlineable\nlineage\nlineages\nlineal\nlineally\nlineament\nlineamental\nlineaments\nlinear\nlinearity\nlinearization\nlinearizations\nlinearize\nlinearized\nlinearizes\nlinearizing\nlinearly\nlineate\nlineated\nlineation\nlineations\nlinebacker\nlinebackers\nlinebred\nlinecut\nlinecuts\nlined\nlineless\nlinelike\nlineman\nlinemen\nlinen\nlinens\nlineny\nliner\nliners\nlines\nlinesman\nlinesmen\nlineup\nlineups\nliney\nling\nlinga\nlingam\nlingams\nlingas\nlingcod\nlingcods\nlinger\nlingered\nlingerer\nlingerers\nlingerie\nlingeries\nlingering\nlingeringly\nlingers\nlingier\nlingiest\nlingo\nlingoes\nlings\nlingua\nlinguae\nlingual\nlinguals\nlinguine\nlinguines\nlinguini\nlinguinis\nlinguist\nlinguistic\nlinguistically\nlinguistics\nlinguists\nlingy\nlinier\nliniest\nliniment\nliniments\nlinin\nlining\nlinings\nlinins\nlink\nlinkable\nlinkage\nlinkages\nlinkboy\nlinkboys\nlinked\nlinker\nlinkers\nlinking\nlinkman\nlinkmen\nlinks\nlinksman\nlinksmen\nlinkup\nlinkups\nlinkwork\nlinkworks\nlinky\nlinn\nlinnet\nlinnets\nlinns\nlino\nlinocut\nlinocuts\nlinoleum\nlinoleums\nlinos\nlins\nlinsang\nlinsangs\nlinseed\nlinseeds\nlinsey\nlinseys\nlinstock\nlinstocks\nlint\nlintel\nlintels\nlinter\nlinters\nlintier\nlintiest\nlintless\nlintol\nlintols\nlints\nlinty\nlinum\nlinums\nliny\nlion\nlioness\nlionesses\nlionfish\nlionfishes\nlionhearted\nlionise\nlionised\nlioniser\nlionisers\nlionises\nlionising\nlionization\nlionizations\nlionize\nlionized\nlionizer\nlionizers\nlionizes\nlionizing\nlionlike\nlions\nlip\nlipase\nlipases\nlipid\nlipide\nlipides\nlipidic\nlipids\nlipin\nlipins\nlipless\nliplike\nlipocyte\nlipocytes\nlipoid\nlipoidal\nlipoids\nlipoma\nlipomas\nlipomata\nlipped\nlippen\nlippened\nlippening\nlippens\nlipper\nlippered\nlippering\nlippers\nlippier\nlippiest\nlipping\nlippings\nlippy\nlipreading\nlips\nlipstick\nlipsticks\nliquate\nliquated\nliquates\nliquating\nliquefaction\nliquefactions\nliquefiable\nliquefied\nliquefier\nliquefiers\nliquefies\nliquefy\nliquefying\nliqueur\nliqueurs\nliquid\nliquidate\nliquidated\nliquidates\nliquidating\nliquidation\nliquidations\nliquidator\nliquidators\nliquidity\nliquidize\nliquidized\nliquidizes\nliquidizing\nliquidly\nliquids\nliquified\nliquifies\nliquify\nliquifying\nliquor\nliquored\nliquoring\nliquors\nlira\nliras\nlire\nliripipe\nliripipes\nlirot\nliroth\nlis\nlisle\nlisles\nlisp\nlisped\nlisper\nlispers\nlisping\nlisps\nlissom\nlissome\nlissomly\nlist\nlistable\nlisted\nlistel\nlistels\nlisten\nlistenable\nlistened\nlistener\nlisteners\nlistening\nlistens\nlister\nlisters\nlisting\nlistings\nlistless\nlistlessly\nlistlessness\nlists\nlit\nlitai\nlitanies\nlitany\nlitas\nlitchi\nlitchis\nliter\nliteracies\nliteracy\nliteral\nliteralism\nliteralist\nliteralistic\nliteralists\nliterality\nliteralization\nliteralizations\nliteralize\nliteralized\nliteralizes\nliteralizing\nliterally\nliteralness\nliterals\nliterary\nliterate\nliterately\nliterates\nliterati\nliterature\nliteratures\nliters\nlitharge\nlitharges\nlithe\nlithely\nlithemia\nlithemias\nlithemic\nlitheness\nlither\nlithesome\nlithest\nlithia\nlithias\nlithic\nlithium\nlithiums\nlitho\nlithograph\nlithographed\nlithographer\nlithographers\nlithographic\nlithographically\nlithographing\nlithographs\nlithography\nlithoid\nlithos\nlithosol\nlithosols\nlitigant\nlitigants\nlitigate\nlitigated\nlitigates\nlitigating\nlitigation\nlitigations\nlitigious\nlitigiously\nlitigiousness\nlitmus\nlitmuses\nlitoral\nlitotes\nlitre\nlitres\nlits\nlitten\nlitter\nlitterbug\nlitterbugs\nlittered\nlitterer\nlitterers\nlittering\nlitters\nlittery\nlittle\nlittleness\nlittler\nlittles\nlittlest\nlittlish\nlittoral\nlittorals\nlitu\nliturgic\nliturgical\nliturgics\nliturgies\nliturgist\nliturgists\nliturgy\nlivability\nlivable\nlivableness\nlive\nliveable\nlived\nlivelier\nliveliest\nlivelihood\nlivelihoods\nlivelily\nliveliness\nlivelong\nlively\nliven\nlivened\nlivener\nliveners\nliveness\nlivenesses\nlivening\nlivens\nliver\nliveried\nliveries\nliverish\nlivers\nlivery\nliveryman\nliverymen\nlives\nlivest\nlivestock\nlivetrap\nlivetrapped\nlivetrapping\nlivetraps\nlivid\nlividities\nlividity\nlividly\nlividness\nlivier\nliviers\nliving\nlivingly\nlivings\nlivre\nlivres\nlivyer\nlivyers\nlixivia\nlixivial\nlixivium\nlixiviums\nlizard\nlizards\nllama\nllamas\nllano\nllanos\nlo\nloach\nloaches\nload\nloaded\nloader\nloaders\nloading\nloadings\nloads\nloadstar\nloadstars\nloaf\nloafed\nloafer\nloafers\nloafing\nloafs\nloam\nloamed\nloamier\nloamiest\nloaming\nloamless\nloams\nloamy\nloan\nloanable\nloaned\nloaner\nloaners\nloaning\nloanings\nloans\nloanword\nloanwords\nloath\nloathe\nloathed\nloather\nloathers\nloathes\nloathful\nloathing\nloathings\nloathly\nloathsome\nloathsomeness\nloaves\nlob\nlobar\nlobate\nlobated\nlobately\nlobation\nlobations\nlobbed\nlobbied\nlobbies\nlobbing\nlobby\nlobbyer\nlobbyers\nlobbygow\nlobbygows\nlobbying\nlobbyism\nlobbyisms\nlobbyist\nlobbyists\nlobe\nlobed\nlobefin\nlobefins\nlobelia\nlobelias\nlobeline\nlobelines\nlobes\nloblollies\nloblolly\nlobo\nlobos\nlobotomies\nlobotomize\nlobotomized\nlobotomizes\nlobotomizing\nlobotomy\nlobs\nlobster\nlobsters\nlobstick\nlobsticks\nlobular\nlobulate\nlobule\nlobules\nlobulose\nlobworm\nlobworms\nloca\nlocal\nlocale\nlocales\nlocalise\nlocalised\nlocalises\nlocalising\nlocalism\nlocalisms\nlocalist\nlocalists\nlocalite\nlocalites\nlocalities\nlocality\nlocalizable\nlocalization\nlocalizations\nlocalize\nlocalized\nlocalizes\nlocalizing\nlocally\nlocals\nlocatable\nlocate\nlocated\nlocater\nlocaters\nlocates\nlocating\nlocation\nlocations\nlocative\nlocatives\nlocator\nlocators\nloch\nlochia\nlochial\nlochs\nloci\nlock\nlockable\nlockage\nlockages\nlockbox\nlockboxes\nlocked\nlocker\nlockers\nlocket\nlockets\nlocking\nlockjaw\nlockjaws\nlocknut\nlocknuts\nlockout\nlockouts\nlockram\nlockrams\nlocks\nlocksmith\nlocksmiths\nlockstep\nlocksteps\nlockup\nlockups\nloco\nlocoed\nlocoes\nlocofoco\nlocofocos\nlocoing\nlocoism\nlocoisms\nlocomote\nlocomoted\nlocomotes\nlocomoting\nlocomotion\nlocomotions\nlocomotive\nlocomotives\nlocos\nlocoweed\nlocoweeds\nlocular\nloculate\nlocule\nloculed\nlocules\nloculi\nloculus\nlocum\nlocums\nlocus\nlocust\nlocusta\nlocustae\nlocustal\nlocusts\nlocution\nlocutions\nlocutories\nlocutory\nlode\nloden\nlodens\nlodes\nlodestar\nlodestars\nlodestone\nlodestones\nlodge\nlodged\nlodgement\nlodgements\nlodger\nlodgers\nlodges\nlodging\nlodgings\nlodgment\nlodgments\nlodicule\nlodicules\nloess\nloessal\nloesses\nloessial\nloft\nlofted\nlofter\nlofters\nloftier\nloftiest\nloftily\nloftiness\nlofting\nloftless\nlofts\nlofty\nlog\nlogan\nlogans\nlogarithm\nlogarithmic\nlogarithmically\nlogarithms\nlogbook\nlogbooks\nloge\nloges\nloggats\nlogged\nlogger\nloggerhead\nloggerheads\nloggers\nloggets\nloggia\nloggias\nloggie\nloggier\nloggiest\nlogging\nloggings\nloggy\nlogia\nlogic\nlogical\nlogicality\nlogically\nlogician\nlogicians\nlogicise\nlogicised\nlogicises\nlogicising\nlogicize\nlogicized\nlogicizes\nlogicizing\nlogics\nlogier\nlogiest\nlogily\nloginess\nloginesses\nlogion\nlogions\nlogistic\nlogistical\nlogistically\nlogistician\nlogisticians\nlogistics\nlogjam\nlogjams\nlognormal\nlogo\nlogogram\nlogogrammatic\nlogograms\nlogogriph\nlogoi\nlogomach\nlogomachs\nlogos\nlogotype\nlogotypes\nlogotypies\nlogotypy\nlogroll\nlogrolled\nlogrolling\nlogrolls\nlogs\nlogway\nlogways\nlogwood\nlogwoods\nlogy\nloin\nloincloth\nloincloths\nloins\nloiter\nloitered\nloiterer\nloiterers\nloitering\nloiters\nloll\nlolled\nloller\nlollers\nlollies\nlolling\nlollipop\nlollipops\nlollop\nlolloped\nlolloping\nlollops\nlolls\nlolly\nlollygag\nlollygagged\nlollygagging\nlollygags\nlollypop\nlollypops\nloment\nlomenta\nloments\nlomentum\nlomentums\nlone\nlonelier\nloneliest\nlonelily\nloneliness\nlonely\nloneness\nlonenesses\nloner\nloners\nlonesome\nlonesomely\nlonesomeness\nlonesomes\nlong\nlongan\nlongans\nlongboat\nlongboats\nlongbow\nlongbows\nlonge\nlonged\nlongeing\nlonger\nlongeron\nlongerons\nlongers\nlonges\nlongest\nlongevity\nlonghair\nlonghairs\nlonghand\nlonghands\nlonghead\nlongheads\nlonghorn\nlonghorns\nlonging\nlongingly\nlongings\nlongish\nlongitude\nlongitudes\nlongitudinal\nlongitudinally\nlongleaf\nlongleaves\nlongline\nlonglines\nlongly\nlongness\nlongnesses\nlongs\nlongship\nlongships\nlongshoreman\nlongshoremen\nlongsome\nlongspur\nlongspurs\nlongtime\nlongueur\nlongueurs\nlongways\nlongwise\nloo\nloobies\nlooby\nlooed\nlooey\nlooeys\nloof\nloofa\nloofah\nloofahs\nloofas\nloofs\nlooie\nlooies\nlooing\nlook\nlookdown\nlookdowns\nlooked\nlooker\nlookers\nlooking\nlookout\nlookouts\nlooks\nlookup\nlookups\nloom\nloomed\nlooming\nlooms\nloon\nlooney\nloonier\nloonies\nlooniest\nlooniness\nloons\nloony\nloop\nlooped\nlooper\nloopers\nloophole\nloopholed\nloopholes\nloopholing\nloopier\nloopiest\nlooping\nloops\nloopy\nloos\nloose\nloosed\nloosely\nloosen\nloosened\nloosener\nlooseners\nlooseness\nloosening\nloosens\nlooser\nlooses\nloosest\nloosing\nloot\nlooted\nlooter\nlooters\nlooting\nloots\nlop\nlope\nloped\nloper\nlopers\nlopes\nloping\nlopped\nlopper\nloppered\nloppering\nloppers\nloppier\nloppiest\nlopping\nloppy\nlops\nlopsided\nlopsidedly\nlopsidedness\nlopstick\nlopsticks\nloquacious\nloquaciously\nloquaciousness\nloquacities\nloquacity\nloquat\nloquats\nloral\nloran\nlorans\nlord\nlorded\nlording\nlordings\nlordless\nlordlier\nlordliest\nlordlike\nlordling\nlordlings\nlordly\nlordoma\nlordomas\nlordoses\nlordosis\nlordotic\nlords\nlordship\nlordships\nlore\nloreal\nlores\nlorgnette\nlorgnettes\nlorgnon\nlorgnons\nlorica\nloricae\nloricate\nloricates\nlories\nlorikeet\nlorikeets\nlorimer\nlorimers\nloriner\nloriners\nloris\nlorises\nlorn\nlornness\nlornnesses\nlorries\nlorry\nlory\nlosable\nlosableness\nlose\nlosel\nlosels\nloser\nlosers\nloses\nlosing\nlosingly\nlosings\nloss\nlosses\nlossy\nlost\nlostness\nlostnesses\nlot\nlota\nlotah\nlotahs\nlotas\nloth\nlothario\nlotharios\nlothsome\nloti\nlotic\nlotion\nlotions\nlotos\nlotoses\nlots\nlotted\nlotteries\nlottery\nlotting\nlotto\nlottos\nlotus\nlotuses\nloud\nlouden\nloudened\nloudening\nloudens\nlouder\nloudest\nloudish\nloudlier\nloudliest\nloudly\nloudmouth\nloudmouthed\nloudmouths\nloudness\nloudnesses\nloudspeaker\nloudspeakers\nlough\nloughs\nlouie\nlouies\nlouis\nlounge\nlounged\nlounger\nloungers\nlounges\nlounging\nloungy\nloup\nloupe\nlouped\nloupen\nloupes\nlouping\nloups\nlour\nloured\nlouring\nlours\nloury\nlouse\nloused\nlouses\nlousier\nlousiest\nlousily\nlousiness\nlousing\nlousy\nlout\nlouted\nlouting\nloutish\nlouts\nlouver\nlouvered\nlouvers\nlouvre\nlouvres\nlovable\nlovableness\nlovably\nlovage\nlovages\nlovat\nlove\nloveable\nloveably\nlovebird\nlovebirds\nloved\nloveless\nlovelessly\nlovelessness\nlovelier\nlovelies\nloveliest\nlovelily\nloveliness\nlovelock\nlovelocks\nlovelorn\nlovely\nlover\nloverly\nlovers\nloves\nlovesick\nlovesome\nlovevine\nlovevines\nloving\nlovingly\nlovingness\nlow\nlowborn\nlowboy\nlowboys\nlowbred\nlowbrow\nlowbrows\nlowdown\nlowdowns\nlowe\nlowed\nlower\nlowercase\nlowered\nlowering\nlowermost\nlowers\nlowery\nlowes\nlowest\nlowing\nlowings\nlowish\nlowland\nlowlands\nlowlier\nlowliest\nlowlife\nlowlifes\nlowliness\nlowly\nlown\nlowness\nlownesses\nlows\nlowse\nlox\nloxed\nloxes\nloxing\nloyal\nloyaler\nloyalest\nloyalism\nloyalisms\nloyalist\nloyalists\nloyally\nloyalties\nloyalty\nlozenge\nlozenges\nluau\nluaus\nlubber\nlubberly\nlubbers\nlube\nlubes\nlubric\nlubricant\nlubricants\nlubricate\nlubricated\nlubricates\nlubricating\nlubrication\nlubrications\nlubricative\nlubricator\nlubricators\nlubricious\nlubricities\nlubricity\nlubricous\nlucarne\nlucarnes\nluce\nlucence\nlucences\nlucencies\nlucency\nlucent\nlucently\nlucern\nlucerne\nlucernes\nlucerns\nluces\nlucid\nlucidities\nlucidity\nlucidly\nlucidness\nlucifer\nluciferous\nlucifers\nluck\nlucked\nluckie\nluckier\nluckies\nluckiest\nluckily\nluckiness\nlucking\nluckless\nlucks\nlucky\nlucrative\nlucratively\nlucrativeness\nlucre\nlucres\nlucubration\nlucubrations\nluculent\nlude\nludes\nludic\nludicrous\nludicrously\nludicrousness\nlues\nluetic\nluetics\nluff\nluffa\nluffas\nluffed\nluffing\nluffs\nlug\nluge\nluged\nluges\nluggage\nluggages\nlugged\nlugger\nluggers\nluggie\nluggies\nlugging\nlugs\nlugsail\nlugsails\nlugubrious\nlugworm\nlugworms\nlukewarm\nlull\nlullabied\nlullabies\nlullaby\nlullabying\nlulled\nlulling\nlulls\nlulu\nlulus\nlum\nlumbago\nlumbagos\nlumbar\nlumbars\nlumber\nlumbered\nlumberer\nlumberers\nlumbering\nlumberjack\nlumberjacks\nlumberman\nlumbermen\nlumbers\nlumberyard\nlumberyards\nlumen\nlumenal\nlumens\nlumina\nluminaires\nluminal\nluminance\nluminances\nluminaries\nluminary\nluminesce\nluminesced\nluminescence\nluminescent\nluminesces\nluminescing\nluminist\nluminists\nluminosities\nluminosity\nluminous\nluminously\nluminousness\nlummox\nlummoxes\nlump\nlumped\nlumpen\nlumpens\nlumper\nlumpers\nlumpfish\nlumpfishes\nlumpier\nlumpiest\nlumpily\nlumpiness\nlumping\nlumpingly\nlumpish\nlumps\nlumpy\nlums\nluna\nlunacies\nlunacy\nlunar\nlunarian\nlunarians\nlunars\nlunas\nlunate\nlunated\nlunately\nlunatic\nlunatics\nlunation\nlunations\nlunch\nlunched\nluncheon\nluncheonette\nluncheonettes\nluncheons\nluncher\nlunchers\nlunches\nlunching\nlunchroom\nlunchrooms\nlunchtime\nlunchtimes\nlune\nlunes\nlunet\nlunets\nlunette\nlunettes\nlung\nlungan\nlungans\nlunge\nlunged\nlungee\nlungees\nlunger\nlungers\nlunges\nlungfish\nlungfishes\nlungi\nlunging\nlungis\nlungs\nlungworm\nlungworms\nlungwort\nlungworts\nlungyi\nlungyis\nlunier\nlunies\nluniest\nlunk\nlunker\nlunkers\nlunkhead\nlunkheads\nlunks\nlunt\nlunted\nlunting\nlunts\nlunula\nlunulae\nlunular\nlunulate\nlunule\nlunules\nluny\nlupanar\nlupanars\nlupin\nlupine\nlupines\nlupins\nlupous\nlupulin\nlupulins\nlupus\nlupuses\nlurch\nlurched\nlurcher\nlurchers\nlurches\nlurching\nlurdan\nlurdane\nlurdanes\nlurdans\nlure\nlured\nlurer\nlurers\nlures\nlurid\nluridly\nluridness\nluring\nlurk\nlurked\nlurker\nlurkers\nlurking\nlurks\nluscious\nlusciousness\nlush\nlushed\nlusher\nlushes\nlushest\nlushing\nlushly\nlushness\nlushnesses\nlust\nlusted\nluster\nlustered\nlustering\nlusterless\nlusters\nlustful\nlustfully\nlustfulness\nlustier\nlustiest\nlustily\nlustiness\nlusting\nlustra\nlustral\nlustrate\nlustrated\nlustrates\nlustrating\nlustre\nlustred\nlustres\nlustring\nlustrings\nlustrous\nlustrously\nlustrousness\nlustrum\nlustrums\nlusts\nlusty\nlusus\nlususes\nlutanist\nlutanists\nlute\nlutea\nluteal\nlutecium\nluteciums\nluted\nlutein\nluteins\nlutenist\nlutenists\nluteolin\nluteolins\nluteous\nlutes\nlutetium\nlutetiums\nluteum\nluthern\nlutherns\nluting\nlutings\nlutist\nlutists\nluv\nluvs\nlux\nluxate\nluxated\nluxates\nluxating\nluxation\nluxations\nluxe\nluxes\nluxuriance\nluxuriances\nluxuriant\nluxuriantly\nluxuriate\nluxuriated\nluxuriates\nluxuriating\nluxuries\nluxurious\nluxuriously\nluxuriousness\nluxury\nlwei\nlweis\nlyard\nlyart\nlyase\nlyases\nlycea\nlycee\nlycees\nlyceum\nlyceums\nlychee\nlychees\nlychnis\nlychnises\nlycopene\nlycopenes\nlycopod\nlycopods\nlyddite\nlyddites\nlye\nlyes\nlying\nlyingly\nlyings\nlymph\nlymphatic\nlymphatics\nlymphocyte\nlymphocytes\nlymphoid\nlymphoma\nlymphomas\nlymphomata\nlymphs\nlyncean\nlynch\nlynched\nlyncher\nlynchers\nlynches\nlynching\nlynchings\nlynx\nlynxes\nlyophile\nlyrate\nlyrated\nlyrately\nlyre\nlyrebird\nlyrebirds\nlyres\nlyric\nlyrical\nlyrically\nlyricise\nlyricised\nlyricises\nlyricising\nlyricism\nlyricisms\nlyricist\nlyricists\nlyricize\nlyricized\nlyricizes\nlyricizing\nlyrics\nlyriform\nlyrism\nlyrisms\nlyrist\nlyrists\nlysate\nlysates\nlyse\nlysed\nlyses\nlysin\nlysine\nlysines\nlysing\nlysins\nlysis\nlysogen\nlysogenies\nlysogens\nlysogeny\nlysosome\nlysosomes\nlysozyme\nlysozymes\nlyssa\nlyssas\nlytic\nlytta\nlyttae\nlyttas\nma\nmaar\nmaars\nmabe\nmabes\nmac\nmacaber\nmacabre\nmacaco\nmacacos\nmacadam\nmacadamize\nmacadamized\nmacadamizes\nmacadamizing\nmacadams\nmacaque\nmacaques\nmacaroni\nmacaronies\nmacaronis\nmacaroon\nmacaroons\nmacaw\nmacaws\nmaccabaw\nmaccabaws\nmaccaboy\nmaccaboys\nmacchia\nmacchie\nmaccoboy\nmaccoboys\nmace\nmaced\nmacer\nmacerate\nmacerated\nmacerates\nmacerating\nmaceration\nmacerations\nmacerator\nmacerators\nmacers\nmaces\nmach\nmache\nmachete\nmachetes\nmachinable\nmachinate\nmachinated\nmachinates\nmachinating\nmachination\nmachinations\nmachinator\nmachinators\nmachine\nmachined\nmachinelike\nmachineries\nmachinery\nmachines\nmachining\nmachinist\nmachinists\nmachismo\nmachismos\nmacho\nmachos\nmachree\nmachrees\nmachs\nmachzor\nmachzorim\nmachzors\nmacing\nmack\nmackerel\nmackerels\nmackinaw\nmackinaws\nmackintosh\nmackintoshes\nmackle\nmackled\nmackles\nmackling\nmacks\nmacle\nmacled\nmacles\nmacon\nmacrame\nmacrames\nmacro\nmacrocosm\nmacrocosms\nmacroinstruction\nmacroinstructions\nmacromolecule\nmacromolecules\nmacron\nmacrons\nmacros\nmacroscopic\nmacroscopically\nmacrural\nmacruran\nmacrurans\nmacs\nmacula\nmaculae\nmacular\nmaculas\nmaculate\nmaculated\nmaculates\nmaculating\nmacule\nmaculed\nmacules\nmaculing\nmad\nmadam\nmadame\nmadames\nmadams\nmadcap\nmadcaps\nmadded\nmadden\nmaddened\nmaddening\nmaddeningly\nmaddens\nmadder\nmadders\nmaddest\nmadding\nmaddish\nmade\nmadeira\nmadeiras\nmademoiselle\nmademoiselles\nmadhouse\nmadhouses\nmadly\nmadman\nmadmen\nmadness\nmadnesses\nmadonna\nmadonnas\nmadras\nmadrases\nmadre\nmadres\nmadrigal\nmadrigalist\nmadrigalists\nmadrigals\nmadrona\nmadronas\nmadrone\nmadrones\nmadrono\nmadronos\nmads\nmaduro\nmaduros\nmadwoman\nmadwomen\nmadwort\nmadworts\nmadzoon\nmadzoons\nmae\nmaelstrom\nmaelstroms\nmaenad\nmaenades\nmaenadic\nmaenads\nmaes\nmaestoso\nmaestosos\nmaestri\nmaestro\nmaestros\nmaffia\nmaffias\nmaffick\nmafficked\nmafficking\nmafficks\nmafia\nmafias\nmafic\nmafiosi\nmafioso\nmaftir\nmaftirs\nmag\nmagazine\nmagazines\nmagdalen\nmagdalens\nmage\nmagenta\nmagentas\nmages\nmaggot\nmaggots\nmaggoty\nmagi\nmagic\nmagical\nmagically\nmagician\nmagicians\nmagicked\nmagicking\nmagics\nmagilp\nmagilps\nmagister\nmagisterial\nmagisterially\nmagisters\nmagistracies\nmagistracy\nmagistrate\nmagistrates\nmagistrature\nmagistratures\nmagma\nmagmas\nmagmata\nmagmatic\nmagnanimities\nmagnanimity\nmagnanimous\nmagnanimously\nmagnate\nmagnates\nmagnesia\nmagnesias\nmagnesic\nmagnesium\nmagnet\nmagnetic\nmagnetically\nmagnetics\nmagnetism\nmagnetite\nmagnetites\nmagnetizable\nmagnetization\nmagnetizations\nmagnetize\nmagnetized\nmagnetizer\nmagnetizers\nmagnetizes\nmagnetizing\nmagneto\nmagneton\nmagnetons\nmagnetos\nmagnets\nmagnific\nmagnification\nmagnifications\nmagnificence\nmagnificent\nmagnificently\nmagnified\nmagnifier\nmagnifiers\nmagnifies\nmagnify\nmagnifying\nmagniloquence\nmagniloquent\nmagniloquently\nmagnitude\nmagnitudes\nmagnolia\nmagnolias\nmagnum\nmagnums\nmagot\nmagots\nmagpie\nmagpies\nmags\nmaguey\nmagueys\nmagus\nmaharaja\nmaharajah\nmaharajahs\nmaharajas\nmaharanee\nmaharanees\nmaharani\nmaharanis\nmahatma\nmahatmas\nmahjong\nmahjongg\nmahjonggs\nmahjongs\nmahoe\nmahoes\nmahoganies\nmahogany\nmahonia\nmahonias\nmahout\nmahouts\nmahuang\nmahuangs\nmahzor\nmahzorim\nmahzors\nmaid\nmaiden\nmaidenhair\nmaidenhairs\nmaidenhood\nmaidenhoods\nmaidenly\nmaidens\nmaidhood\nmaidhoods\nmaidish\nmaids\nmaidservant\nmaidservants\nmaieutic\nmaigre\nmaihem\nmaihems\nmail\nmailability\nmailable\nmailbag\nmailbags\nmailbox\nmailboxes\nmaile\nmailed\nmailer\nmailers\nmailes\nmailing\nmailings\nmaill\nmailless\nmaillot\nmaillots\nmaills\nmailman\nmailmen\nmails\nmaim\nmaimed\nmaimer\nmaimers\nmaiming\nmaims\nmain\nmainframe\nmainframes\nmainland\nmainlander\nmainlanders\nmainlands\nmainline\nmainlined\nmainlines\nmainlining\nmainly\nmainmast\nmainmasts\nmains\nmainsail\nmainsails\nmainspring\nmainsprings\nmainstay\nmainstays\nmainstream\nmainstreams\nmaintain\nmaintainability\nmaintainable\nmaintained\nmaintaining\nmaintains\nmaintenance\nmaintenances\nmaintop\nmaintops\nmaiolica\nmaiolicas\nmair\nmairs\nmaist\nmaists\nmaize\nmaizes\nmajagua\nmajaguas\nmajestic\nmajestically\nmajesties\nmajesty\nmajolica\nmajolicas\nmajor\nmajordomo\nmajordomos\nmajored\nmajorette\nmajorettes\nmajoring\nmajorities\nmajority\nmajors\nmajuscule\nmajuscules\nmakable\nmakar\nmakars\nmake\nmakeable\nmakebate\nmakebates\nmakefast\nmakefasts\nmaker\nmakers\nmakes\nmakeshift\nmakeshifts\nmakeup\nmakeups\nmakimono\nmakimonos\nmaking\nmakings\nmako\nmakos\nmakuta\nmalachite\nmalachites\nmaladapted\nmaladies\nmaladjusted\nmaladjustment\nmaladjustments\nmaladminister\nmaladministered\nmaladministering\nmaladministers\nmaladministration\nmaladministrations\nmaladroit\nmaladroitly\nmaladroitness\nmalady\nmalaise\nmalaises\nmalamute\nmalamutes\nmalapert\nmalaperts\nmalaprop\nmalapropism\nmalapropisms\nmalaprops\nmalar\nmalaria\nmalarial\nmalarian\nmalarias\nmalarkey\nmalarkeys\nmalarkies\nmalarky\nmalaroma\nmalaromas\nmalars\nmalate\nmalates\nmalcontent\nmalcontents\nmale\nmaleate\nmaleates\nmaledict\nmaledicted\nmaledicting\nmalediction\nmaledictions\nmaledicts\nmalefaction\nmalefactions\nmalefactor\nmalefactors\nmalefic\nmaleficence\nmaleficences\nmalemiut\nmalemiuts\nmalemuits\nmalemute\nmalemutes\nmaleness\nmalenesses\nmales\nmalevolence\nmalevolent\nmalevolently\nmalfeasance\nmalfeasances\nmalfed\nmalformation\nmalformations\nmalformed\nmalfunction\nmalfunctioned\nmalfunctioning\nmalfunctions\nmalgre\nmalic\nmalice\nmalices\nmalicious\nmaliciously\nmaliciousness\nmalign\nmalignance\nmalignances\nmalignancies\nmalignancy\nmalignant\nmalignantly\nmaligned\nmaligner\nmaligners\nmaligning\nmalignities\nmalignity\nmalignly\nmaligns\nmalihini\nmalihinis\nmaline\nmalines\nmalinger\nmalingered\nmalingerer\nmalingerers\nmalingering\nmalingers\nmalison\nmalisons\nmalkin\nmalkins\nmall\nmallard\nmallards\nmalleability\nmalleable\nmalled\nmallee\nmallees\nmallei\nmalleoli\nmallet\nmallets\nmalleus\nmalling\nmallow\nmallows\nmalls\nmalm\nmalmier\nmalmiest\nmalms\nmalmsey\nmalmseys\nmalmy\nmalnourished\nmalnutrition\nmalocclusion\nmalocclusions\nmalodor\nmalodorous\nmalodorously\nmalodorousness\nmalodors\nmalposed\nmalpractice\nmalpractices\nmalt\nmaltase\nmaltases\nmalted\nmalteds\nmaltha\nmalthas\nmaltier\nmaltiest\nmalting\nmaltol\nmaltols\nmaltose\nmaltoses\nmaltreat\nmaltreated\nmaltreating\nmaltreatment\nmaltreatments\nmaltreats\nmalts\nmaltster\nmaltsters\nmalty\nmalvasia\nmalvasias\nmama\nmamas\nmamba\nmambas\nmambo\nmamboed\nmamboes\nmamboing\nmambos\nmameluke\nmamelukes\nmamey\nmameyes\nmameys\nmamie\nmamies\nmamluk\nmamluks\nmamma\nmammae\nmammal\nmammalian\nmammalians\nmammals\nmammary\nmammas\nmammate\nmammati\nmammatus\nmammee\nmammees\nmammer\nmammered\nmammering\nmammers\nmammet\nmammets\nmammey\nmammeys\nmammie\nmammies\nmammilla\nmammillae\nmammitides\nmammitis\nmammock\nmammocked\nmammocking\nmammocks\nmammon\nmammonism\nmammonist\nmammonists\nmammons\nmammoth\nmammoths\nmammy\nman\nmana\nmanacle\nmanacled\nmanacles\nmanacling\nmanage\nmanageability\nmanageable\nmanageableness\nmanageably\nmanaged\nmanagement\nmanagements\nmanager\nmanagerial\nmanagerially\nmanagers\nmanagership\nmanages\nmanaging\nmanakin\nmanakins\nmanana\nmananas\nmanas\nmanatee\nmanatees\nmanatoid\nmanche\nmanches\nmanchet\nmanchets\nmanciple\nmanciples\nmandala\nmandalas\nmandalic\nmandamus\nmandamused\nmandamuses\nmandamusing\nmandarin\nmandarins\nmandataries\nmandatary\nmandate\nmandated\nmandates\nmandating\nmandator\nmandatories\nmandators\nmandatory\nmandible\nmandibles\nmandibular\nmandioca\nmandiocas\nmandola\nmandolas\nmandolin\nmandolinist\nmandolinists\nmandolins\nmandrake\nmandrakes\nmandrel\nmandrels\nmandril\nmandrill\nmandrills\nmandrils\nmane\nmaned\nmanege\nmaneges\nmaneless\nmanes\nmaneuver\nmaneuverability\nmaneuverable\nmaneuvered\nmaneuverer\nmaneuverers\nmaneuvering\nmaneuvers\nmanful\nmanfully\nmangabey\nmangabeys\nmangabies\nmangaby\nmanganese\nmanganic\nmange\nmangel\nmangels\nmanger\nmangers\nmanges\nmangey\nmangier\nmangiest\nmangily\nmangle\nmangled\nmangler\nmanglers\nmangles\nmangling\nmango\nmangoes\nmangold\nmangolds\nmangonel\nmangonels\nmangos\nmangrove\nmangroves\nmangy\nmanhandle\nmanhandled\nmanhandles\nmanhandling\nmanhattans\nmanhole\nmanholes\nmanhood\nmanhoods\nmanhunt\nmanhunts\nmania\nmaniac\nmaniacal\nmaniacally\nmaniacs\nmanias\nmanic\nmanicotti\nmanics\nmanicure\nmanicured\nmanicures\nmanicuring\nmanicurist\nmanicurists\nmanifest\nmanifestant\nmanifestants\nmanifestation\nmanifestations\nmanifested\nmanifesting\nmanifestly\nmanifesto\nmanifestoes\nmanifestos\nmanifests\nmanifold\nmanifolded\nmanifolding\nmanifolds\nmanihot\nmanihots\nmanikin\nmanikins\nmanila\nmanilas\nmanilla\nmanillas\nmanille\nmanilles\nmanioc\nmanioca\nmaniocas\nmaniocs\nmaniple\nmaniples\nmanipulability\nmanipulable\nmanipulatable\nmanipulate\nmanipulated\nmanipulates\nmanipulating\nmanipulation\nmanipulations\nmanipulative\nmanipulatively\nmanipulativeness\nmanipulator\nmanipulators\nmanipulatory\nmanito\nmanitos\nmanitou\nmanitous\nmanitu\nmanitus\nmankind\nmanless\nmanlier\nmanliest\nmanlike\nmanlily\nmanliness\nmanly\nmanmade\nmanna\nmannan\nmannans\nmannas\nmanned\nmannequin\nmannequins\nmanner\nmannered\nmannerism\nmannerisms\nmannerist\nmanneristic\nmannerists\nmannerless\nmannerliness\nmannerly\nmanners\nmannikin\nmannikins\nmanning\nmannish\nmannishly\nmannishness\nmannite\nmannites\nmannitic\nmannitol\nmannitols\nmannose\nmannoses\nmano\nmanometer\nmanometers\nmanometric\nmanometry\nmanor\nmanorial\nmanors\nmanos\nmanpack\nmanpower\nmanpowers\nmanque\nmanrope\nmanropes\nmans\nmansard\nmansards\nmanse\nmanservant\nmanses\nmansion\nmansions\nmanslaughter\nmanslaughters\nmanta\nmantas\nmanteau\nmanteaus\nmanteaux\nmantel\nmantelet\nmantelets\nmantelpiece\nmantelpieces\nmantels\nmantes\nmantic\nmantid\nmantids\nmantilla\nmantillas\nmantis\nmantises\nmantissa\nmantissas\nmantle\nmantled\nmantles\nmantlet\nmantlets\nmantling\nmantlings\nmantra\nmantrap\nmantraps\nmantras\nmantua\nmantuas\nmanual\nmanually\nmanuals\nmanuary\nmanubria\nmanufacture\nmanufactured\nmanufacturer\nmanufacturers\nmanufactures\nmanufacturing\nmanumit\nmanumits\nmanumitted\nmanumitting\nmanure\nmanured\nmanurer\nmanurers\nmanures\nmanurial\nmanuring\nmanus\nmanuscript\nmanuscripts\nmanward\nmanwards\nmanwise\nmany\nmanyfold\nmap\nmaple\nmaples\nmapmaker\nmapmakers\nmappable\nmapped\nmapper\nmappers\nmapping\nmappings\nmaps\nmaquette\nmaquettes\nmaqui\nmaquis\nmar\nmarabou\nmarabous\nmarabout\nmarabouts\nmaraca\nmaracas\nmaranta\nmarantas\nmarasca\nmarascas\nmaraschino\nmaraschinos\nmarasmic\nmarasmus\nmarasmuses\nmarathon\nmarathons\nmaraud\nmarauded\nmarauder\nmarauders\nmarauding\nmarauds\nmaravedi\nmaravedis\nmarble\nmarbled\nmarbleize\nmarbleized\nmarbleizes\nmarbleizing\nmarbler\nmarblers\nmarbles\nmarblier\nmarbliest\nmarbling\nmarblings\nmarbly\nmarc\nmarcel\nmarcelled\nmarcelling\nmarcels\nmarch\nmarched\nmarchen\nmarcher\nmarchers\nmarches\nmarchesa\nmarchese\nmarchesi\nmarching\nmarchioness\nmarchionesses\nmarcs\nmare\nmaremma\nmaremme\nmares\nmargaric\nmargarin\nmargarine\nmargarines\nmargarins\nmargay\nmargays\nmarge\nmargent\nmargented\nmargenting\nmargents\nmarges\nmargin\nmarginal\nmarginalities\nmarginality\nmarginally\nmarginate\nmarginated\nmarginates\nmarginating\nmargination\nmarginations\nmargined\nmargining\nmargins\nmargrave\nmargraves\nmaria\nmariachi\nmariachis\nmarigold\nmarigolds\nmarijuana\nmarijuanas\nmarimba\nmarimbas\nmarina\nmarinade\nmarinaded\nmarinades\nmarinading\nmarinara\nmarinaras\nmarinas\nmarinate\nmarinated\nmarinates\nmarinating\nmarine\nmariner\nmariners\nmarines\nmarionette\nmarionettes\nmariposa\nmariposas\nmarish\nmarishes\nmarital\nmaritally\nmaritime\nmarjoram\nmarjorams\nmark\nmarkdown\nmarkdowns\nmarked\nmarkedly\nmarker\nmarkers\nmarket\nmarketability\nmarketable\nmarketed\nmarketer\nmarketers\nmarketing\nmarketplace\nmarketplaces\nmarkets\nmarkhoor\nmarkhoors\nmarkhor\nmarkhors\nmarking\nmarkings\nmarkka\nmarkkaa\nmarkkas\nmarks\nmarksman\nmarksmanship\nmarksmen\nmarkup\nmarkups\nmarl\nmarled\nmarlier\nmarliest\nmarlin\nmarline\nmarlines\nmarling\nmarlings\nmarlins\nmarlite\nmarlites\nmarlitic\nmarls\nmarly\nmarmalade\nmarmalades\nmarmite\nmarmites\nmarmoset\nmarmosets\nmarmot\nmarmots\nmaroon\nmarooned\nmarooning\nmaroons\nmarplot\nmarplots\nmarque\nmarquee\nmarquees\nmarques\nmarquess\nmarquesses\nmarquetries\nmarquetry\nmarquis\nmarquise\nmarquises\nmarquisette\nmarquisettes\nmarram\nmarrams\nmarred\nmarrer\nmarrers\nmarriage\nmarriageable\nmarriages\nmarried\nmarrieds\nmarrier\nmarriers\nmarries\nmarring\nmarron\nmarrons\nmarrow\nmarrowed\nmarrowing\nmarrows\nmarrowy\nmarry\nmarrying\nmars\nmarse\nmarses\nmarsh\nmarshal\nmarshalcy\nmarshaled\nmarshaling\nmarshall\nmarshalled\nmarshalling\nmarshalls\nmarshals\nmarshes\nmarshier\nmarshiest\nmarshiness\nmarshlike\nmarshmallow\nmarshmallows\nmarshmallowy\nmarshy\nmarsupia\nmarsupial\nmarsupials\nmart\nmartagon\nmartagons\nmarted\nmartello\nmartellos\nmarten\nmartens\nmartial\nmartially\nmartian\nmartians\nmartin\nmartinet\nmartinets\nmarting\nmartingale\nmartingales\nmartini\nmartinis\nmartins\nmartlet\nmartlets\nmarts\nmartyr\nmartyrdom\nmartyrdoms\nmartyred\nmartyries\nmartyring\nmartyrization\nmartyrizations\nmartyrize\nmartyrized\nmartyrizes\nmartyrizing\nmartyrly\nmartyrs\nmartyry\nmarvel\nmarveled\nmarveling\nmarvelled\nmarvelling\nmarvellous\nmarvelous\nmarvelously\nmarvelousness\nmarvels\nmarvy\nmarzipan\nmarzipans\nmas\nmascara\nmascaras\nmascon\nmascons\nmascot\nmascots\nmasculine\nmasculinely\nmasculinity\nmasculinization\nmasculinize\nmasculinized\nmasculinizes\nmasculinizing\nmaser\nmasers\nmash\nmashed\nmasher\nmashers\nmashes\nmashie\nmashies\nmashing\nmashy\nmasjid\nmasjids\nmask\nmaskable\nmasked\nmaskeg\nmaskegs\nmasker\nmaskers\nmasking\nmaskings\nmasklike\nmasks\nmasochism\nmasochist\nmasochistic\nmasochistically\nmasochists\nmason\nmasoned\nmasonic\nmasoning\nmasonries\nmasonry\nmasons\nmasque\nmasquer\nmasquerade\nmasqueraded\nmasquerader\nmasqueraders\nmasquerades\nmasquerading\nmasquers\nmasques\nmass\nmassa\nmassacre\nmassacred\nmassacres\nmassacring\nmassage\nmassaged\nmassager\nmassagers\nmassages\nmassaging\nmassas\nmasse\nmassed\nmassedly\nmasses\nmasseter\nmasseters\nmasseur\nmasseurs\nmasseuse\nmasseuses\nmassicot\nmassicots\nmassier\nmassiest\nmassif\nmassifs\nmassing\nmassive\nmassively\nmassiveness\nmassless\nmassy\nmast\nmastaba\nmastabah\nmastabahs\nmastabas\nmasted\nmaster\nmastered\nmasterful\nmasterfully\nmasteries\nmastering\nmasterly\nmastermind\nmasterminded\nmasterminding\nmasterminds\nmasterpiece\nmasterpieces\nmasters\nmastership\nmasterwork\nmasterworks\nmastery\nmasthead\nmastheaded\nmastheading\nmastheads\nmastic\nmasticate\nmasticated\nmasticates\nmasticating\nmastication\nmastications\nmasticator\nmasticatories\nmasticators\nmasticatory\nmastiche\nmastiches\nmastics\nmastiff\nmastiffs\nmasting\nmastitic\nmastitides\nmastitis\nmastititides\nmastix\nmastixes\nmastless\nmastlike\nmastodon\nmastodons\nmastoid\nmastoids\nmasts\nmasturbate\nmasturbated\nmasturbates\nmasturbating\nmasturbation\nmasturbations\nmasturbator\nmasturbators\nmasturbatory\nmasurium\nmasuriums\nmat\nmatador\nmatadors\nmatch\nmatchable\nmatchbox\nmatchboxes\nmatched\nmatcher\nmatchers\nmatches\nmatching\nmatchless\nmatchlessly\nmatchlessness\nmatchmaker\nmatchmakers\nmate\nmated\nmateless\nmatelote\nmatelotes\nmater\nmaterial\nmaterialism\nmaterialist\nmaterialistic\nmaterialistically\nmaterialists\nmaterialities\nmateriality\nmaterialization\nmaterializations\nmaterialize\nmaterialized\nmaterializes\nmaterializing\nmaterially\nmaterialness\nmaterials\nmateriel\nmateriels\nmaternal\nmaternally\nmaternities\nmaternity\nmaters\nmates\nmateship\nmateships\nmatey\nmateys\nmath\nmathematical\nmathematically\nmathematician\nmathematicians\nmathematics\nmaths\nmatilda\nmatildas\nmatin\nmatinal\nmatinee\nmatinees\nmatiness\nmatinesses\nmating\nmatings\nmatins\nmatless\nmatrass\nmatrasses\nmatres\nmatriarch\nmatriarchal\nmatriarchate\nmatriarchates\nmatriarchies\nmatriarchs\nmatriarchy\nmatrices\nmatricidal\nmatricide\nmatricides\nmatriculant\nmatriculants\nmatriculate\nmatriculated\nmatriculates\nmatriculating\nmatriculation\nmatriculations\nmatrimonial\nmatrimonially\nmatrimony\nmatrix\nmatrixes\nmatron\nmatronal\nmatronly\nmatrons\nmats\nmatt\nmatte\nmatted\nmattedly\nmatter\nmattered\nmattering\nmatters\nmattery\nmattes\nmattin\nmatting\nmattings\nmattins\nmattock\nmattocks\nmattoid\nmattoids\nmattrass\nmattrasses\nmattress\nmattresses\nmatts\nmaturate\nmaturated\nmaturates\nmaturating\nmaturation\nmaturational\nmaturations\nmature\nmatured\nmaturely\nmaturer\nmatures\nmaturest\nmaturing\nmaturities\nmaturity\nmatza\nmatzah\nmatzahs\nmatzas\nmatzo\nmatzoh\nmatzohs\nmatzoon\nmatzoons\nmatzos\nmatzot\nmatzoth\nmaud\nmaudlin\nmauds\nmauger\nmaugre\nmaul\nmauled\nmauler\nmaulers\nmauling\nmauls\nmaumet\nmaumetries\nmaumetry\nmaumets\nmaun\nmaund\nmaunder\nmaundered\nmaundering\nmaunders\nmaundies\nmaunds\nmaundy\nmausolea\nmausoleum\nmausoleums\nmaut\nmauts\nmauve\nmauves\nmaven\nmavens\nmaverick\nmavericks\nmavie\nmavies\nmavin\nmavins\nmavis\nmavises\nmaw\nmawed\nmawing\nmawkish\nmawkishly\nmawkishness\nmawn\nmaws\nmaxi\nmaxicoat\nmaxicoats\nmaxilla\nmaxillae\nmaxillas\nmaxim\nmaxima\nmaximal\nmaximally\nmaximals\nmaximin\nmaximins\nmaximise\nmaximised\nmaximises\nmaximising\nmaximite\nmaximites\nmaximization\nmaximizations\nmaximize\nmaximized\nmaximizer\nmaximizers\nmaximizes\nmaximizing\nmaxims\nmaximum\nmaximums\nmaxis\nmaxixe\nmaxixes\nmaxwell\nmaxwells\nmay\nmaya\nmayan\nmayapple\nmayapples\nmayas\nmaybe\nmaybush\nmaybushes\nmayday\nmaydays\nmayed\nmayest\nmayflies\nmayflower\nmayflowers\nmayfly\nmayhap\nmayhem\nmayhems\nmaying\nmayings\nmayo\nmayonnaise\nmayonnaises\nmayor\nmayoral\nmayoralties\nmayoralty\nmayoress\nmayoresses\nmayors\nmayos\nmaypole\nmaypoles\nmaypop\nmaypops\nmays\nmayst\nmayvin\nmayvins\nmayweed\nmayweeds\nmazaedia\nmazard\nmazards\nmaze\nmazed\nmazedly\nmazelike\nmazer\nmazers\nmazes\nmazier\nmaziest\nmazily\nmaziness\nmazinesses\nmazing\nmazourka\nmazourkas\nmazuma\nmazumas\nmazurka\nmazurkas\nmazy\nmazzard\nmazzards\nmbira\nmbiras\nme\nmead\nmeadow\nmeadowlark\nmeadowlarks\nmeadows\nmeadowy\nmeads\nmeager\nmeagerly\nmeagerness\nmeagre\nmeagrely\nmeal\nmealie\nmealier\nmealies\nmealiest\nmealless\nmeals\nmealtime\nmealtimes\nmealworm\nmealworms\nmealy\nmealybug\nmealybugs\nmealymouthed\nmean\nmeander\nmeandered\nmeandering\nmeanders\nmeaner\nmeaners\nmeanest\nmeanie\nmeanies\nmeaning\nmeaningful\nmeaningfully\nmeaningfulness\nmeaningless\nmeaninglessly\nmeaninglessness\nmeanings\nmeanly\nmeanness\nmeannesses\nmeans\nmeant\nmeantime\nmeantimes\nmeanwhile\nmeany\nmeasle\nmeasled\nmeasles\nmeaslier\nmeasliest\nmeasly\nmeasurability\nmeasurable\nmeasurably\nmeasure\nmeasured\nmeasuredly\nmeasureless\nmeasurement\nmeasurements\nmeasurer\nmeasurers\nmeasures\nmeasuring\nmeat\nmeatal\nmeatball\nmeatballs\nmeathead\nmeatheads\nmeatier\nmeatiest\nmeatily\nmeatiness\nmeatless\nmeatman\nmeatmen\nmeats\nmeatus\nmeatuses\nmeaty\nmecca\nmeccas\nmechanic\nmechanical\nmechanically\nmechanician\nmechanicians\nmechanics\nmechanism\nmechanisms\nmechanist\nmechanistic\nmechanistically\nmechanists\nmechanization\nmechanizations\nmechanize\nmechanized\nmechanizer\nmechanizers\nmechanizes\nmechanizing\nmeconium\nmeconiums\nmed\nmedaka\nmedakas\nmedal\nmedaled\nmedaling\nmedalist\nmedalists\nmedalled\nmedallic\nmedalling\nmedallion\nmedallions\nmedallist\nmedallists\nmedals\nmeddle\nmeddled\nmeddler\nmeddlers\nmeddles\nmeddlesome\nmeddling\nmedia\nmediacies\nmediacy\nmediad\nmediae\nmediaeval\nmedial\nmedially\nmedials\nmedian\nmedianly\nmedians\nmediant\nmediants\nmedias\nmediate\nmediated\nmediates\nmediating\nmediation\nmediations\nmediator\nmediators\nmediatory\nmedic\nmedicable\nmedicaid\nmedicaids\nmedical\nmedically\nmedicals\nmedicament\nmedicamentous\nmedicaments\nmedicare\nmedicares\nmedicate\nmedicated\nmedicates\nmedicating\nmedication\nmedications\nmedicinal\nmedicinally\nmedicine\nmedicined\nmedicines\nmedicining\nmedick\nmedicks\nmedico\nmedicos\nmedics\nmedieval\nmedievalism\nmedievalist\nmedievalists\nmedievally\nmedievals\nmedii\nmediocre\nmediocrities\nmediocrity\nmeditate\nmeditated\nmeditates\nmeditating\nmeditatingly\nmeditation\nmeditations\nmeditative\nmeditatively\nmeditativeness\nmeditator\nmeditators\nmedium\nmediums\nmedius\nmedlar\nmedlars\nmedley\nmedleys\nmedulla\nmedullae\nmedullar\nmedullary\nmedullas\nmedusa\nmedusae\nmedusan\nmedusans\nmedusas\nmedusoid\nmedusoids\nmeed\nmeeds\nmeek\nmeeker\nmeekest\nmeekly\nmeekness\nmeeknesses\nmeerschaum\nmeerschaums\nmeet\nmeeter\nmeeters\nmeeting\nmeetinghouse\nmeetinghouses\nmeetings\nmeetly\nmeetness\nmeetnesses\nmeets\nmegabar\nmegabars\nmegabit\nmegabits\nmegabuck\nmegabucks\nmegacycle\nmegacycles\nmegadyne\nmegadynes\nmegahertz\nmegalith\nmegalithic\nmegaliths\nmegalomania\nmegalomaniac\nmegalomaniacal\nmegalomaniacally\nmegalomaniacs\nmegalomanias\nmegalomanic\nmegalopolis\nmegalopolises\nmegalopolitan\nmegalopolitanism\nmegalopolitans\nmegaphone\nmegaphones\nmegaphonic\nmegapod\nmegapode\nmegapodes\nmegass\nmegasse\nmegasses\nmegaton\nmegatons\nmegavolt\nmegavolts\nmegawatt\nmegawatts\nmegillah\nmegillahs\nmegilp\nmegilph\nmegilphs\nmegilps\nmegohm\nmegohms\nmegrim\nmegrims\nmeikle\nmeinie\nmeinies\nmeiny\nmeioses\nmeiosis\nmeiotic\nmel\nmelamine\nmelamines\nmelancholia\nmelancholiac\nmelancholiacs\nmelancholic\nmelancholies\nmelancholy\nmelange\nmelanges\nmelanian\nmelanic\nmelanics\nmelanin\nmelanins\nmelanism\nmelanisms\nmelanist\nmelanists\nmelanite\nmelanites\nmelanize\nmelanized\nmelanizes\nmelanizing\nmelanoid\nmelanoids\nmelanoma\nmelanomas\nmelanomata\nmelanous\nmeld\nmelded\nmelder\nmelders\nmelding\nmelds\nmelee\nmelees\nmelic\nmelilite\nmelilites\nmelilot\nmelilots\nmelinite\nmelinites\nmeliorate\nmeliorated\nmeliorates\nmeliorating\nmelioration\nmeliorations\nmeliorative\nmeliorator\nmeliorators\nmelisma\nmelismas\nmelismata\nmell\nmelled\nmellific\nmellifluous\nmellifluously\nmellifluousness\nmelling\nmellow\nmellowed\nmellower\nmellowest\nmellowing\nmellowly\nmellowness\nmellows\nmells\nmelodeon\nmelodeons\nmelodia\nmelodias\nmelodic\nmelodically\nmelodies\nmelodious\nmelodiously\nmelodiousness\nmelodise\nmelodised\nmelodises\nmelodising\nmelodist\nmelodists\nmelodize\nmelodized\nmelodizes\nmelodizing\nmelodrama\nmelodramas\nmelodramatic\nmelodramatically\nmelodramatics\nmelodramatist\nmelodramatists\nmelody\nmeloid\nmeloids\nmelon\nmelons\nmels\nmelt\nmeltability\nmeltable\nmeltage\nmeltages\nmelted\nmelter\nmelters\nmelting\nmeltingly\nmelton\nmeltons\nmelts\nmem\nmember\nmembered\nmembers\nmembership\nmemberships\nmembrane\nmembranes\nmembranous\nmemento\nmementoes\nmementos\nmemo\nmemoir\nmemoirist\nmemoirists\nmemoirs\nmemorabilia\nmemorability\nmemorable\nmemorableness\nmemorably\nmemoranda\nmemorandum\nmemorandums\nmemorial\nmemorialist\nmemorialists\nmemorialize\nmemorialized\nmemorializes\nmemorializing\nmemorially\nmemorials\nmemories\nmemorizable\nmemorization\nmemorizations\nmemorize\nmemorized\nmemorizer\nmemorizers\nmemorizes\nmemorizing\nmemory\nmemos\nmems\nmemsahib\nmemsahibs\nmen\nmenace\nmenaced\nmenacer\nmenacers\nmenaces\nmenacing\nmenacingly\nmenad\nmenads\nmenage\nmenagerie\nmenageries\nmenages\nmenarche\nmenarches\nmend\nmendable\nmendacious\nmendaciously\nmendaciousness\nmendacities\nmendacity\nmended\nmender\nmenders\nmendicancy\nmendicant\nmendicants\nmendigo\nmendigos\nmending\nmendings\nmends\nmenfolk\nmenfolks\nmenhaden\nmenhadens\nmenhir\nmenhirs\nmenial\nmenially\nmenials\nmeninges\nmeningitides\nmeningitis\nmeninx\nmeniscal\nmenisci\nmeniscus\nmeniscuses\nmeno\nmenologies\nmenology\nmenopausal\nmenopause\nmenorah\nmenorahs\nmensa\nmensae\nmensal\nmensas\nmensch\nmenschen\nmensches\nmense\nmensed\nmenseful\nmenservants\nmenses\nmensing\nmenstrua\nmenstrual\nmenstruate\nmenstruated\nmenstruates\nmenstruating\nmenstruation\nmenstruations\nmensural\nmensuration\nmensurations\nmenswear\nmenswears\nmenta\nmental\nmentalism\nmentalist\nmentalistic\nmentalists\nmentalities\nmentality\nmentally\nmenthene\nmenthenes\nmenthol\nmentholated\nmenthols\nmention\nmentionable\nmentioned\nmentioning\nmentions\nmentor\nmentors\nmentum\nmenu\nmenus\nmeou\nmeous\nmeow\nmeowed\nmeowing\nmeows\nmephitic\nmephitis\nmephitises\nmercantile\nmercantilism\nmercantilist\nmercantilists\nmercapto\nmercenaries\nmercenarily\nmercenariness\nmercenary\nmercer\nmerceries\nmercerize\nmercerized\nmercerizes\nmercerizing\nmercers\nmercery\nmerchandise\nmerchandised\nmerchandiser\nmerchandisers\nmerchandises\nmerchandising\nmerchant\nmerchantability\nmerchantable\nmerchanted\nmerchanting\nmerchants\nmercies\nmerciful\nmercifully\nmercifulness\nmerciless\nmercilessly\nmercilessness\nmercurial\nmercurially\nmercuric\nmercuries\nmercurous\nmercury\nmercy\nmerde\nmere\nmerely\nmerengue\nmerengues\nmerer\nmeres\nmerest\nmeretricious\nmeretriciously\nmeretriciousness\nmerganser\nmergansers\nmerge\nmerged\nmergence\nmergences\nmerger\nmergers\nmerges\nmerging\nmeridian\nmeridians\nmeringue\nmeringues\nmerino\nmerinos\nmerises\nmerisis\nmeristem\nmeristems\nmeristic\nmerit\nmerited\nmeriting\nmeritorious\nmeritoriously\nmeritoriousness\nmerits\nmerk\nmerks\nmerl\nmerle\nmerles\nmerlin\nmerlins\nmerlon\nmerlons\nmerls\nmermaid\nmermaids\nmerman\nmermen\nmeropia\nmeropias\nmeropic\nmerrier\nmerriest\nmerrily\nmerriment\nmerriments\nmerriness\nmerry\nmerrymaking\nmesa\nmesally\nmesarch\nmesas\nmescal\nmescaline\nmescals\nmesdames\nmesdemoiselles\nmeseemed\nmeseems\nmesh\nmeshed\nmeshes\nmeshier\nmeshiest\nmeshing\nmeshwork\nmeshworks\nmeshy\nmesial\nmesially\nmesian\nmesic\nmesmeric\nmesmerism\nmesmerist\nmesmerists\nmesmerize\nmesmerized\nmesmerizer\nmesmerizers\nmesmerizes\nmesmerizing\nmesnalties\nmesnalty\nmesne\nmesocarp\nmesocarps\nmesoderm\nmesodermal\nmesoderms\nmesoglea\nmesogleas\nmesomere\nmesomeres\nmeson\nmesonic\nmesons\nmesophyl\nmesophyls\nmesosome\nmesosomes\nmesotron\nmesotrons\nmesquit\nmesquite\nmesquites\nmesquits\nmess\nmessage\nmessages\nmessan\nmessans\nmessed\nmessenger\nmessengers\nmesses\nmessiah\nmessiahs\nmessianic\nmessier\nmessiest\nmessieurs\nmessily\nmessiness\nmessing\nmessman\nmessmate\nmessmates\nmessmen\nmessuage\nmessuages\nmessy\nmestee\nmestees\nmesteso\nmestesoes\nmestesos\nmestino\nmestinoes\nmestinos\nmestiza\nmestizas\nmestizo\nmestizoes\nmestizos\nmet\nmeta\nmetabolic\nmetabolically\nmetabolism\nmetabolisms\nmetabolite\nmetabolites\nmetabolizable\nmetabolize\nmetabolized\nmetabolizes\nmetabolizing\nmetage\nmetages\nmetal\nmetaled\nmetaling\nmetalise\nmetalised\nmetalises\nmetalising\nmetalist\nmetalists\nmetalize\nmetalized\nmetalizes\nmetalizing\nmetalled\nmetallic\nmetallically\nmetalling\nmetallization\nmetallizations\nmetallize\nmetallized\nmetallizes\nmetallizing\nmetallurgical\nmetallurgically\nmetallurgist\nmetallurgists\nmetallurgy\nmetals\nmetalwork\nmetalworker\nmetalworkers\nmetalworking\nmetamer\nmetamere\nmetameres\nmetamers\nmetamorphism\nmetamorphisms\nmetamorphose\nmetamorphosed\nmetamorphoses\nmetamorphosing\nmetamorphosis\nmetaphor\nmetaphoric\nmetaphorical\nmetaphorically\nmetaphors\nmetaphysical\nmetaphysically\nmetaphysician\nmetaphysicians\nmetaphysics\nmetastability\nmetastable\nmetastasize\nmetastasized\nmetastasizes\nmetastasizing\nmetastatic\nmetastatically\nmetatarsal\nmetatarsals\nmetate\nmetates\nmetathetic\nmetathetical\nmetazoa\nmetazoal\nmetazoan\nmetazoans\nmetazoic\nmetazoon\nmete\nmeted\nmeteor\nmeteoric\nmeteorically\nmeteorite\nmeteorites\nmeteoritic\nmeteoritical\nmeteoritics\nmeteoroid\nmeteoroids\nmeteorologic\nmeteorological\nmeteorologically\nmeteorologist\nmeteorologists\nmeteorology\nmeteors\nmetepa\nmetepas\nmeter\nmeterage\nmeterages\nmetered\nmetering\nmeters\nmetes\nmeth\nmethadon\nmethadone\nmethadons\nmethane\nmethanes\nmethanol\nmethanols\nmethinks\nmethod\nmethodic\nmethodical\nmethodically\nmethodicalness\nmethodist\nmethodistic\nmethodists\nmethodize\nmethodized\nmethodizes\nmethodizing\nmethodological\nmethodologically\nmethodologies\nmethodologist\nmethodologists\nmethodology\nmethods\nmethought\nmethoxy\nmethoxyl\nmeths\nmethyl\nmethylal\nmethylals\nmethylic\nmethyls\nmeticulosity\nmeticulous\nmeticulously\nmeticulousness\nmetier\nmetiers\nmeting\nmetis\nmetisse\nmetisses\nmetonym\nmetonymic\nmetonymical\nmetonymies\nmetonyms\nmetonymy\nmetopae\nmetope\nmetopes\nmetopic\nmetopon\nmetopons\nmetre\nmetred\nmetres\nmetric\nmetrical\nmetrically\nmetrication\nmetrics\nmetrified\nmetrifies\nmetrify\nmetrifying\nmetring\nmetrist\nmetrists\nmetritis\nmetritises\nmetro\nmetrological\nmetrologically\nmetrologies\nmetrologist\nmetrologists\nmetrology\nmetronome\nmetronomes\nmetronomic\nmetropolis\nmetropolises\nmetropolitan\nmetropolitans\nmetros\nmettle\nmettled\nmettles\nmettlesome\nmetump\nmetumps\nmeuniere\nmew\nmewed\nmewing\nmewl\nmewled\nmewler\nmewlers\nmewling\nmewls\nmews\nmezcal\nmezcals\nmezereon\nmezereons\nmezereum\nmezereums\nmezquit\nmezquite\nmezquites\nmezquits\nmezuza\nmezuzah\nmezuzahs\nmezuzas\nmezuzot\nmezuzoth\nmezzanine\nmezzanines\nmezzo\nmezzos\nmho\nmhos\nmi\nmiaou\nmiaoued\nmiaouing\nmiaous\nmiaow\nmiaowed\nmiaowing\nmiaows\nmiasm\nmiasma\nmiasmal\nmiasmas\nmiasmata\nmiasmatic\nmiasmic\nmiasms\nmiaul\nmiauled\nmiauling\nmiauls\nmib\nmibs\nmica\nmicas\nmicawber\nmicawbers\nmice\nmicell\nmicella\nmicellae\nmicellar\nmicelle\nmicelles\nmicells\nmiche\nmick\nmickey\nmickeys\nmickle\nmickler\nmickles\nmicklest\nmicks\nmicra\nmicrified\nmicrifies\nmicrify\nmicrifying\nmicro\nmicroampere\nmicroamperes\nmicrobar\nmicrobars\nmicrobe\nmicrobes\nmicrobial\nmicrobic\nmicrobiological\nmicrobiologist\nmicrobiologists\nmicrobus\nmicrobuses\nmicrobusses\nmicrochip\nmicrochips\nmicrocircuit\nmicrocircuitries\nmicrocircuitry\nmicrocircuits\nmicrocode\nmicrocoded\nmicrocodes\nmicrocomputer\nmicrocomputers\nmicrocopies\nmicrocopy\nmicrocosm\nmicrocosmic\nmicrocosmically\nmicrocosmos\nmicrocosms\nmicroelectronic\nmicroelectronics\nmicrofarad\nmicrofarads\nmicrofiche\nmicrofiches\nmicrofilm\nmicrofilmed\nmicrofilming\nmicrofilms\nmicroform\nmicroforms\nmicrogram\nmicrograms\nmicrograph\nmicrographed\nmicrographic\nmicrographically\nmicrographics\nmicrographing\nmicrographs\nmicrogroove\nmicrogrooves\nmicrohm\nmicrohms\nmicroimage\nmicroimages\nmicroinstruction\nmicroinstructions\nmicroliter\nmicroliters\nmicroluces\nmicrolux\nmicroluxes\nmicrometer\nmicrometers\nmicrometries\nmicrometry\nmicromho\nmicromhos\nmicrominiature\nmicrominiaturization\nmicrominiaturized\nmicron\nmicronize\nmicronized\nmicronizes\nmicronizing\nmicrons\nmicroorganism\nmicroorganisms\nmicrophone\nmicrophones\nmicroprocessor\nmicroprocessors\nmicroprogram\nmicroprogramming\nmicroprograms\nmicropublisher\nmicropublishers\nmicropublishing\nmicroreader\nmicroreaders\nmicroscope\nmicroscopes\nmicroscopic\nmicroscopical\nmicroscopically\nmicroscopist\nmicroscopists\nmicroscopy\nmicrosecond\nmicroseconds\nmicrovolt\nmicrovolts\nmicrowave\nmicrowaves\nmicrurgies\nmicrurgy\nmid\nmidair\nmidairs\nmidbrain\nmidbrains\nmidday\nmiddays\nmidden\nmiddens\nmiddies\nmiddle\nmiddlebrow\nmiddlebrows\nmiddled\nmiddleman\nmiddlemen\nmiddler\nmiddlers\nmiddles\nmiddleweight\nmiddleweights\nmiddling\nmiddlingly\nmiddlings\nmiddy\nmidfield\nmidfields\nmidge\nmidges\nmidget\nmidgets\nmidgut\nmidguts\nmidi\nmidiron\nmidirons\nmidis\nmidland\nmidlands\nmidleg\nmidlegs\nmidline\nmidlines\nmidmonth\nmidmonths\nmidmost\nmidmosts\nmidnight\nmidnights\nmidnoon\nmidnoons\nmidpoint\nmidpoints\nmidrange\nmidranges\nmidrash\nmidrashim\nmidrib\nmidribs\nmidriff\nmidriffs\nmids\nmidship\nmidshipman\nmidshipmen\nmidships\nmidspace\nmidspaces\nmidst\nmidstories\nmidstory\nmidstream\nmidstreams\nmidsts\nmidsummer\nmidsummers\nmidterm\nmidterms\nmidtown\nmidtowns\nmidwatch\nmidwatches\nmidway\nmidways\nmidweek\nmidweeks\nmidwife\nmidwifed\nmidwifery\nmidwifes\nmidwifing\nmidwinter\nmidwinters\nmidwived\nmidwives\nmidwiving\nmidyear\nmidyears\nmien\nmiens\nmies\nmiff\nmiffed\nmiffier\nmiffiest\nmiffing\nmiffs\nmiffy\nmig\nmigg\nmiggle\nmiggles\nmiggs\nmight\nmightier\nmightiest\nmightily\nmightiness\nmights\nmighty\nmignon\nmignonette\nmignonettes\nmignonne\nmignons\nmigraine\nmigraines\nmigrant\nmigrants\nmigrate\nmigrated\nmigrates\nmigrating\nmigration\nmigrations\nmigrator\nmigrators\nmigratory\nmigs\nmijnheer\nmijnheers\nmikado\nmikados\nmike\nmiked\nmikes\nmikra\nmikron\nmikrons\nmikvah\nmikvahs\nmikveh\nmikvehs\nmikvoth\nmil\nmiladi\nmiladies\nmiladis\nmilady\nmilage\nmilages\nmilch\nmilchig\nmild\nmilden\nmildened\nmildening\nmildens\nmilder\nmildest\nmildew\nmildewed\nmildewing\nmildews\nmildewy\nmildly\nmildness\nmildnesses\nmile\nmileage\nmileages\nmilepost\nmileposts\nmiler\nmilers\nmiles\nmilesimo\nmilesimos\nmilestone\nmilestones\nmilfoil\nmilfoils\nmilia\nmiliaria\nmiliarias\nmiliary\nmilieu\nmilieus\nmilieux\nmilitancy\nmilitant\nmilitantly\nmilitantness\nmilitants\nmilitaries\nmilitarily\nmilitarism\nmilitarist\nmilitaristic\nmilitaristically\nmilitarists\nmilitarization\nmilitarize\nmilitarized\nmilitarizes\nmilitarizing\nmilitary\nmilitate\nmilitated\nmilitates\nmilitating\nmilitia\nmilitiaman\nmilitiamen\nmilitias\nmilium\nmilk\nmilked\nmilker\nmilkers\nmilkfish\nmilkfishes\nmilkier\nmilkiest\nmilkily\nmilkiness\nmilking\nmilkmaid\nmilkmaids\nmilkman\nmilkmen\nmilks\nmilksop\nmilksops\nmilkweed\nmilkweeds\nmilkwood\nmilkwoods\nmilkwort\nmilkworts\nmilky\nmill\nmillable\nmillage\nmillages\nmilldam\nmilldams\nmille\nmilled\nmillenaries\nmillenary\nmillennia\nmillennium\nmillenniums\nmilleped\nmillepeds\nmiller\nmillers\nmilles\nmillet\nmillets\nmilliampere\nmilliamperes\nmilliard\nmilliards\nmilliare\nmilliares\nmilliary\nmillibar\nmillibars\nmillieme\nmilliemes\nmillier\nmilliers\nmilligal\nmilligals\nmilligram\nmilligrams\nmillihenries\nmillihenry\nmillihenrys\nmilliliter\nmilliliters\nmilliluces\nmillilux\nmilliluxes\nmillime\nmillimes\nmillimeter\nmillimeters\nmillimho\nmillimhos\nmilline\nmilliner\nmillineries\nmilliners\nmillinery\nmillines\nmilling\nmillings\nmilliohm\nmilliohms\nmillion\nmillionaire\nmillionaires\nmillions\nmillionth\nmillionths\nmilliped\nmillipede\nmillipedes\nmillipeds\nmillirem\nmillirems\nmillisecond\nmilliseconds\nmillivolt\nmillivolts\nmillpond\nmillponds\nmillrace\nmillraces\nmillrun\nmillruns\nmills\nmillstone\nmillstones\nmillstream\nmillstreams\nmillwork\nmillworks\nmillwright\nmillwrights\nmilo\nmilord\nmilords\nmilos\nmilpa\nmilpas\nmilreis\nmils\nmilt\nmilted\nmilter\nmilters\nmiltier\nmiltiest\nmilting\nmilts\nmilty\nmim\nmimbar\nmimbars\nmime\nmimed\nmimeo\nmimeograph\nmimeographed\nmimeographing\nmimeographs\nmimer\nmimers\nmimes\nmimesis\nmimesises\nmimetic\nmimetically\nmimetite\nmimetites\nmimic\nmimical\nmimicked\nmimicker\nmimickers\nmimicking\nmimicries\nmimicry\nmimics\nmiming\nmimosa\nmimosas\nmina\nminable\nminacities\nminacity\nminae\nminaret\nminarets\nminas\nminatory\nmince\nminced\nmincemeat\nmincemeats\nmincer\nmincers\nminces\nmincier\nminciest\nmincing\nmincingly\nmincy\nmind\nminded\nminder\nminders\nmindful\nmindfully\nmindfulness\nminding\nmindless\nmindlessly\nmindlessness\nminds\nmine\nmineable\nmined\nminelayer\nminelayers\nminer\nmineral\nmineralization\nmineralizations\nmineralize\nmineralized\nmineralizes\nmineralizing\nmineralogical\nmineralogist\nmineralogists\nmineralogy\nminerals\nminers\nmines\nminestrone\nminesweeper\nminesweepers\nmingier\nmingiest\nmingle\nmingled\nmingler\nminglers\nmingles\nmingling\nmingy\nmini\nminiature\nminiatures\nminiaturist\nminiaturists\nminiaturization\nminiaturizations\nminiaturize\nminiaturized\nminiaturizes\nminiaturizing\nminibike\nminibikes\nminibus\nminibuses\nminibusses\nminicab\nminicabs\nminicar\nminicars\nminicomputer\nminicomputers\nminified\nminifies\nminify\nminifying\nminikin\nminikins\nminim\nminima\nminimal\nminimally\nminimals\nminimax\nminimaxes\nminimise\nminimised\nminimises\nminimising\nminimization\nminimizations\nminimize\nminimized\nminimizer\nminimizers\nminimizes\nminimizing\nminims\nminimum\nminimums\nmining\nminings\nminion\nminions\nminis\nminish\nminished\nminishes\nminishing\nminiskirt\nminiskirted\nminiskirts\nminister\nministered\nministerial\nministerially\nministering\nministers\nministrant\nministrants\nministration\nministrations\nministries\nministry\nminitrack\nminitracks\nminium\nminiums\nminiver\nminivers\nmink\nminke\nminks\nminnesinger\nminnesingers\nminnies\nminnow\nminnows\nminny\nminor\nminorca\nminorcas\nminored\nminoring\nminorities\nminority\nminors\nminster\nminsters\nminstrel\nminstrels\nminstrelsies\nminstrelsy\nmint\nmintage\nmintages\nminted\nminter\nminters\nmintier\nmintiest\nminting\nmints\nminty\nminuend\nminuends\nminuet\nminuets\nminus\nminuscule\nminuscules\nminuses\nminute\nminuted\nminutely\nminuteman\nminutemen\nminuteness\nminuter\nminutes\nminutest\nminutia\nminutiae\nminutial\nminuting\nminx\nminxes\nminxish\nminyan\nminyanim\nminyans\nmioses\nmiosis\nmiotic\nmiotics\nmiquelet\nmiquelets\nmir\nmiracle\nmiracles\nmiraculous\nmiraculously\nmiraculousness\nmirador\nmiradors\nmirage\nmirages\nmire\nmired\nmires\nmirex\nmirexes\nmiri\nmirier\nmiriest\nmiriness\nmirinesses\nmiring\nmirk\nmirker\nmirkest\nmirkier\nmirkiest\nmirkily\nmirks\nmirky\nmirror\nmirrored\nmirroring\nmirrorlike\nmirrors\nmirs\nmirth\nmirthful\nmirthfully\nmirthfulness\nmirthless\nmirthlessly\nmirths\nmiry\nmirza\nmirzas\nmis\nmisact\nmisacted\nmisacting\nmisacts\nmisadapt\nmisadapted\nmisadapting\nmisadapts\nmisadd\nmisadded\nmisadding\nmisadds\nmisadventure\nmisadventures\nmisadvise\nmisadvised\nmisadvises\nmisadvising\nmisagent\nmisagents\nmisaim\nmisaimed\nmisaiming\nmisaims\nmisaligned\nmisalignment\nmisalliance\nmisalliances\nmisallied\nmisallies\nmisallocation\nmisally\nmisallying\nmisalter\nmisaltered\nmisaltering\nmisalters\nmisanthrope\nmisanthropes\nmisanthropic\nmisanthropies\nmisanthropy\nmisapplication\nmisapplications\nmisapplied\nmisapplies\nmisapply\nmisapplying\nmisapprehend\nmisapprehended\nmisapprehending\nmisapprehends\nmisapprehension\nmisapprehensions\nmisappropriate\nmisappropriated\nmisappropriates\nmisappropriating\nmisappropriation\nmisappropriations\nmisassay\nmisassayed\nmisassaying\nmisassays\nmisate\nmisatone\nmisatoned\nmisatones\nmisatoning\nmisaver\nmisaverred\nmisaverring\nmisavers\nmisaward\nmisawarded\nmisawarding\nmisawards\nmisbegan\nmisbegin\nmisbeginning\nmisbegins\nmisbegot\nmisbegotten\nmisbegun\nmisbehave\nmisbehaved\nmisbehaver\nmisbehavers\nmisbehaves\nmisbehaving\nmisbehavior\nmisbehaviors\nmisbelief\nmisbeliefs\nmisbeliever\nmisbelievers\nmisbias\nmisbiased\nmisbiases\nmisbiasing\nmisbiassed\nmisbiasses\nmisbiassing\nmisbill\nmisbilled\nmisbilling\nmisbills\nmisbind\nmisbinding\nmisbinds\nmisbound\nmisbrand\nmisbranded\nmisbranding\nmisbrands\nmisbuild\nmisbuilding\nmisbuilds\nmisbuilt\nmiscalculate\nmiscalculated\nmiscalculates\nmiscalculating\nmiscalculation\nmiscalculations\nmiscall\nmiscalled\nmiscalling\nmiscalls\nmiscarriage\nmiscarriages\nmiscarried\nmiscarries\nmiscarry\nmiscarrying\nmiscast\nmiscasted\nmiscasting\nmiscasts\nmiscegenation\nmiscegenations\nmiscellanea\nmiscellaneous\nmiscellaneously\nmiscellanies\nmiscellany\nmischance\nmischances\nmischief\nmischiefs\nmischievous\nmischievously\nmischievousness\nmiscibilities\nmiscibility\nmiscible\nmiscite\nmiscited\nmiscites\nmisciting\nmisclaim\nmisclaimed\nmisclaiming\nmisclaims\nmisclass\nmisclassed\nmisclasses\nmisclassing\nmiscoin\nmiscoined\nmiscoining\nmiscoins\nmiscolor\nmiscolored\nmiscoloring\nmiscolors\nmiscommunication\nmiscommunications\nmisconceive\nmisconceived\nmisconceives\nmisconceiving\nmisconception\nmisconceptions\nmisconduct\nmisconducted\nmisconducting\nmisconducts\nmisconstruction\nmisconstructions\nmisconstrue\nmisconstrued\nmisconstrues\nmisconstruing\nmiscook\nmiscooked\nmiscooking\nmiscooks\nmiscopied\nmiscopies\nmiscopy\nmiscopying\nmiscount\nmiscounted\nmiscounting\nmiscounts\nmiscreant\nmiscreants\nmiscue\nmiscued\nmiscues\nmiscuing\nmiscut\nmiscuts\nmiscutting\nmisdate\nmisdated\nmisdates\nmisdating\nmisdeal\nmisdealing\nmisdeals\nmisdealt\nmisdeed\nmisdeeds\nmisdeem\nmisdeemed\nmisdeeming\nmisdeems\nmisdemeanor\nmisdemeanors\nmisdiagnose\nmisdiagnosed\nmisdiagnoses\nmisdiagnosing\nmisdiagnosis\nmisdid\nmisdirect\nmisdirected\nmisdirecting\nmisdirects\nmisdo\nmisdoer\nmisdoers\nmisdoes\nmisdoing\nmisdoings\nmisdone\nmisdoubt\nmisdoubted\nmisdoubting\nmisdoubts\nmisdraw\nmisdrawing\nmisdrawn\nmisdraws\nmisdrew\nmisdrive\nmisdriven\nmisdrives\nmisdriving\nmisdrove\nmise\nmisease\nmiseases\nmiseat\nmiseate\nmiseaten\nmiseating\nmiseats\nmisedit\nmisedited\nmisediting\nmisedits\nmisenrol\nmisenroll\nmisenrolled\nmisenrolling\nmisenrolls\nmisenrols\nmisenter\nmisentered\nmisentering\nmisenters\nmisentries\nmisentry\nmiser\nmiserable\nmiserably\nmiserere\nmisereres\nmiseries\nmiserliness\nmiserly\nmisers\nmisery\nmises\nmisestimate\nmisestimated\nmisestimates\nmisestimating\nmisestimation\nmisestimations\nmisevent\nmisevents\nmisfaith\nmisfaiths\nmisfeasance\nmisfeasances\nmisfeasor\nmisfeasors\nmisfield\nmisfielded\nmisfielding\nmisfields\nmisfile\nmisfiled\nmisfiles\nmisfiling\nmisfire\nmisfired\nmisfires\nmisfiring\nmisfit\nmisfits\nmisfitted\nmisfitting\nmisform\nmisformed\nmisforming\nmisforms\nmisfortune\nmisfortunes\nmisframe\nmisframed\nmisframes\nmisframing\nmisgauge\nmisgauged\nmisgauges\nmisgauging\nmisgave\nmisgive\nmisgiven\nmisgives\nmisgiving\nmisgivings\nmisgovern\nmisgoverned\nmisgoverning\nmisgovernment\nmisgovernments\nmisgoverns\nmisgraft\nmisgrafted\nmisgrafting\nmisgrafts\nmisgrew\nmisgrow\nmisgrowing\nmisgrown\nmisgrows\nmisguess\nmisguessed\nmisguesses\nmisguessing\nmisguidance\nmisguide\nmisguided\nmisguidedly\nmisguidedness\nmisguides\nmisguiding\nmishandle\nmishandled\nmishandles\nmishandling\nmishap\nmishaps\nmishear\nmisheard\nmishearing\nmishears\nmishit\nmishits\nmishitting\nmishmash\nmishmashes\nmishmosh\nmishmoshes\nmisinfer\nmisinferred\nmisinferring\nmisinfers\nmisinform\nmisinformation\nmisinformed\nmisinforming\nmisinforms\nmisinter\nmisinterpret\nmisinterpretation\nmisinterpretations\nmisinterpreted\nmisinterpreting\nmisinterprets\nmisinterred\nmisinterring\nmisinters\nmisjoin\nmisjoined\nmisjoining\nmisjoins\nmisjudge\nmisjudged\nmisjudges\nmisjudging\nmisjudgment\nmisjudgments\nmiskal\nmiskals\nmiskeep\nmiskeeping\nmiskeeps\nmiskept\nmisknew\nmisknow\nmisknowing\nmisknown\nmisknows\nmislabel\nmislabeled\nmislabeling\nmislabelled\nmislabelling\nmislabels\nmislabor\nmislabored\nmislaboring\nmislabors\nmislaid\nmislain\nmislay\nmislayer\nmislayers\nmislaying\nmislays\nmislead\nmisleading\nmisleadingly\nmisleads\nmislearn\nmislearned\nmislearning\nmislearns\nmislearnt\nmisled\nmislie\nmislies\nmislight\nmislighted\nmislighting\nmislights\nmislike\nmisliked\nmisliker\nmislikers\nmislikes\nmisliking\nmislit\nmislive\nmislived\nmislives\nmisliving\nmislodge\nmislodged\nmislodges\nmislodging\nmislying\nmismanage\nmismanaged\nmismanagement\nmismanagements\nmismanages\nmismanaging\nmismark\nmismarked\nmismarking\nmismarks\nmismatch\nmismatched\nmismatches\nmismatching\nmismate\nmismated\nmismates\nmismating\nmismeet\nmismeeting\nmismeets\nmismet\nmismoshes\nmismove\nmismoved\nmismoves\nmismoving\nmisname\nmisnamed\nmisnames\nmisnaming\nmisnomer\nmisnomers\nmiso\nmisogamies\nmisogamy\nmisogynies\nmisogynist\nmisogynistic\nmisogynists\nmisogyny\nmisologies\nmisology\nmisos\nmispage\nmispaged\nmispages\nmispaging\nmispaint\nmispainted\nmispainting\nmispaints\nmisparse\nmisparsed\nmisparses\nmisparsing\nmispart\nmisparted\nmisparting\nmisparts\nmispatch\nmispatched\nmispatches\nmispatching\nmispen\nmispenned\nmispenning\nmispens\nmisplace\nmisplaced\nmisplacement\nmisplacements\nmisplaces\nmisplacing\nmisplant\nmisplanted\nmisplanting\nmisplants\nmisplay\nmisplayed\nmisplaying\nmisplays\nmisplead\nmispleaded\nmispleading\nmispleads\nmispled\nmispoint\nmispointed\nmispointing\nmispoints\nmispoise\nmispoised\nmispoises\nmispoising\nmisprint\nmisprinted\nmisprinting\nmisprints\nmisprision\nmisprisions\nmisprize\nmisprized\nmisprizes\nmisprizing\nmispronounce\nmispronounced\nmispronounces\nmispronouncing\nmispronunciation\nmispronunciations\nmisquotation\nmisquotations\nmisquote\nmisquoted\nmisquotes\nmisquoting\nmisraise\nmisraised\nmisraises\nmisraising\nmisrate\nmisrated\nmisrates\nmisrating\nmisread\nmisreaded\nmisreading\nmisreads\nmisrefer\nmisreferred\nmisreferring\nmisrefers\nmisrelied\nmisrelies\nmisrely\nmisrelying\nmisrepresent\nmisrepresentation\nmisrepresentations\nmisrepresentative\nmisrepresented\nmisrepresenting\nmisrepresents\nmisrule\nmisruled\nmisrules\nmisruling\nmiss\nmissaid\nmissal\nmissals\nmissay\nmissaying\nmissays\nmisseat\nmisseated\nmisseating\nmisseats\nmissed\nmissel\nmissels\nmissend\nmissending\nmissends\nmissense\nmissenses\nmissent\nmisses\nmisshape\nmisshaped\nmisshapen\nmisshapenly\nmisshapes\nmisshaping\nmisshod\nmissies\nmissile\nmissileries\nmissilery\nmissiles\nmissilries\nmissilry\nmissing\nmission\nmissionaries\nmissionary\nmissioned\nmissioning\nmissions\nmissis\nmissises\nmissismissis\nmissive\nmissives\nmissort\nmissorted\nmissorting\nmissorts\nmissound\nmissounded\nmissounding\nmissounds\nmissout\nmissouts\nmisspace\nmisspaced\nmisspaces\nmisspacing\nmisspeak\nmisspeaking\nmisspeaks\nmisspell\nmisspelled\nmisspelling\nmisspellings\nmisspells\nmisspelt\nmisspend\nmisspending\nmisspends\nmisspent\nmisspoke\nmisspoken\nmisstart\nmisstarted\nmisstarting\nmisstarts\nmisstate\nmisstated\nmisstatement\nmisstatements\nmisstates\nmisstating\nmissteer\nmissteered\nmissteering\nmissteers\nmisstep\nmissteps\nmisstop\nmisstopped\nmisstopping\nmisstops\nmisstyle\nmisstyled\nmisstyles\nmisstyling\nmissuit\nmissuited\nmissuiting\nmissuits\nmissus\nmissuses\nmissy\nmist\nmistakable\nmistake\nmistaken\nmistakenly\nmistaker\nmistakers\nmistakes\nmistaking\nmistaught\nmistbow\nmistbows\nmisteach\nmisteaches\nmisteaching\nmisted\nmistend\nmistended\nmistending\nmistends\nmister\nmisterm\nmistermed\nmisterming\nmisterms\nmisters\nmisteuk\nmisthink\nmisthinking\nmisthinks\nmisthought\nmisthrew\nmisthrow\nmisthrowing\nmisthrown\nmisthrows\nmistier\nmistiest\nmistily\nmistime\nmistimed\nmistimes\nmistiming\nmistiness\nmisting\nmistitle\nmistitled\nmistitles\nmistitling\nmistletoe\nmistletoes\nmistook\nmistouch\nmistouched\nmistouches\nmistouching\nmistrace\nmistraced\nmistraces\nmistracing\nmistral\nmistrals\nmistreat\nmistreated\nmistreating\nmistreatment\nmistreats\nmistress\nmistresses\nmistrial\nmistrials\nmistrust\nmistrusted\nmistrustful\nmistrustfully\nmistrustfulness\nmistrusting\nmistrusts\nmistryst\nmistrysted\nmistrysting\nmistrysts\nmists\nmistune\nmistuned\nmistunes\nmistuning\nmistutor\nmistutored\nmistutoring\nmistutors\nmisty\nmistype\nmistyped\nmistypes\nmistyping\nmisunderstand\nmisunderstanding\nmisunderstandings\nmisunderstands\nmisunderstood\nmisunion\nmisunions\nmisusage\nmisusages\nmisuse\nmisused\nmisuser\nmisusers\nmisuses\nmisusing\nmisvalue\nmisvalued\nmisvalues\nmisvaluing\nmisword\nmisworded\nmiswording\nmiswords\nmiswrit\nmiswrite\nmiswrites\nmiswriting\nmiswritten\nmiswrote\nmisyoke\nmisyoked\nmisyokes\nmisyoking\nmite\nmiter\nmitered\nmiterer\nmiterers\nmitering\nmiters\nmites\nmither\nmithers\nmiticide\nmiticides\nmitier\nmitiest\nmitigate\nmitigated\nmitigates\nmitigating\nmitigation\nmitigations\nmitigative\nmitigatory\nmitis\nmitises\nmitogen\nmitogens\nmitoses\nmitosis\nmitotic\nmitral\nmitre\nmitred\nmitres\nmitring\nmitsvah\nmitsvahs\nmitsvoth\nmitt\nmitten\nmittens\nmittimus\nmittimuses\nmitts\nmity\nmitzvah\nmitzvahs\nmitzvoth\nmix\nmixable\nmixed\nmixer\nmixers\nmixes\nmixible\nmixing\nmixologies\nmixology\nmixt\nmixture\nmixtures\nmixup\nmixups\nmizen\nmizens\nmizzen\nmizzenmast\nmizzenmasts\nmizzens\nmizzle\nmizzled\nmizzles\nmizzling\nmizzly\nmm\nmnemonic\nmnemonically\nmnemonics\nmo\nmoa\nmoan\nmoaned\nmoanful\nmoaning\nmoaningly\nmoans\nmoas\nmoat\nmoated\nmoating\nmoatlike\nmoats\nmob\nmobbed\nmobber\nmobbers\nmobbing\nmobbish\nmobcap\nmobcaps\nmobile\nmobiles\nmobilise\nmobilised\nmobilises\nmobilising\nmobilities\nmobility\nmobilization\nmobilizations\nmobilize\nmobilized\nmobilizes\nmobilizing\nmobocracies\nmobocracy\nmobocrat\nmobocratic\nmobocrats\nmobs\nmobster\nmobsters\nmoccasin\nmoccasins\nmocha\nmochas\nmochila\nmochilas\nmock\nmockable\nmocked\nmocker\nmockeries\nmockers\nmockery\nmocking\nmockingbird\nmockingbirds\nmockingly\nmocks\nmockup\nmockups\nmod\nmodal\nmodalities\nmodality\nmodally\nmode\nmodel\nmodeled\nmodeler\nmodelers\nmodeling\nmodelings\nmodelled\nmodeller\nmodellers\nmodelling\nmodels\nmodem\nmoderate\nmoderated\nmoderately\nmoderateness\nmoderates\nmoderating\nmoderation\nmoderations\nmoderato\nmoderator\nmoderators\nmoderatos\nmodern\nmoderner\nmodernest\nmodernism\nmodernisms\nmodernist\nmodernistic\nmodernists\nmodernities\nmodernity\nmodernization\nmodernizations\nmodernize\nmodernized\nmodernizer\nmodernizers\nmodernizes\nmodernizing\nmodernly\nmodernness\nmoderns\nmodes\nmodest\nmodester\nmodestest\nmodesties\nmodestly\nmodesty\nmodi\nmodica\nmodicum\nmodicums\nmodifiability\nmodifiable\nmodification\nmodifications\nmodified\nmodifier\nmodifiers\nmodifies\nmodify\nmodifying\nmodioli\nmodiolus\nmodish\nmodishly\nmodishness\nmodiste\nmodistes\nmods\nmodulability\nmodular\nmodularities\nmodularity\nmodularized\nmodularly\nmodulate\nmodulated\nmodulates\nmodulating\nmodulation\nmodulations\nmodulator\nmodulators\nmodulatory\nmodule\nmodules\nmoduli\nmodulo\nmodulus\nmodus\nmofette\nmofettes\nmoffette\nmoffettes\nmog\nmogged\nmogging\nmogs\nmogul\nmoguls\nmohair\nmohairs\nmohalim\nmohel\nmohels\nmohur\nmohurs\nmoidore\nmoidores\nmoieties\nmoiety\nmoil\nmoiled\nmoiler\nmoilers\nmoiling\nmoils\nmoira\nmoirai\nmoire\nmoires\nmoist\nmoisten\nmoistened\nmoistener\nmoisteners\nmoistening\nmoistens\nmoister\nmoistest\nmoistful\nmoistly\nmoistness\nmoisture\nmoistures\nmoisturize\nmoisturized\nmoisturizer\nmoisturizers\nmoisturizes\nmoisturizing\nmojarra\nmojarras\nmojo\nmojos\nmoke\nmokes\nmol\nmola\nmolal\nmolalities\nmolality\nmolar\nmolarities\nmolarity\nmolars\nmolas\nmolasses\nmolasseses\nmold\nmoldable\nmoldboard\nmolded\nmolder\nmoldered\nmoldering\nmolders\nmoldier\nmoldiest\nmoldiness\nmolding\nmoldings\nmolds\nmoldwarp\nmoldwarps\nmoldy\nmole\nmolecular\nmolecularly\nmolecule\nmolecules\nmolehill\nmolehills\nmoles\nmoleskin\nmoleskins\nmolest\nmolestation\nmolestations\nmolested\nmolester\nmolesters\nmolesting\nmolests\nmolies\nmoline\nmoll\nmollah\nmollahs\nmollie\nmollies\nmollification\nmollifications\nmollified\nmollifies\nmollify\nmollifying\nmolls\nmollusc\nmolluscan\nmolluscans\nmolluscs\nmollusk\nmollusks\nmolly\nmollycoddle\nmollycoddled\nmollycoddles\nmollycoddling\nmoloch\nmolochs\nmols\nmolt\nmolted\nmolten\nmoltenly\nmolter\nmolters\nmolting\nmolto\nmolts\nmoly\nmolybdenum\nmolybdenums\nmolybdic\nmom\nmome\nmoment\nmomenta\nmomentarily\nmomentariness\nmomentary\nmomently\nmomento\nmomentoes\nmomentos\nmomentous\nmomentousness\nmoments\nmomentum\nmomentums\nmomes\nmomi\nmomism\nmomisms\nmomma\nmommas\nmommies\nmommy\nmoms\nmomus\nmomuses\nmon\nmonachal\nmonacid\nmonacids\nmonad\nmonadal\nmonades\nmonadic\nmonadism\nmonadisms\nmonads\nmonandries\nmonandry\nmonarch\nmonarchal\nmonarchial\nmonarchical\nmonarchically\nmonarchies\nmonarchism\nmonarchisms\nmonarchist\nmonarchists\nmonarchs\nmonarchy\nmonarda\nmonardas\nmonas\nmonasteries\nmonastery\nmonastic\nmonastically\nmonasticism\nmonasticisms\nmonastics\nmonaural\nmonaurally\nmonaxial\nmonazite\nmonazites\nmonde\nmondes\nmondo\nmondos\nmonecian\nmonetarily\nmonetarist\nmonetarists\nmonetary\nmonetise\nmonetised\nmonetises\nmonetising\nmonetization\nmonetizations\nmonetize\nmonetized\nmonetizes\nmonetizing\nmoney\nmoneybag\nmoneybags\nmoneyed\nmoneyer\nmoneyers\nmoneylender\nmoneylenders\nmoneys\nmongeese\nmonger\nmongered\nmongering\nmongers\nmongo\nmongoe\nmongoes\nmongol\nmongolianism\nmongolism\nmongols\nmongoose\nmongooses\nmongos\nmongrel\nmongrelize\nmongrelized\nmongrelizes\nmongrelizing\nmongrels\nmongst\nmonicker\nmonickers\nmonie\nmonied\nmonies\nmoniker\nmonikers\nmonish\nmonished\nmonishes\nmonishing\nmonism\nmonisms\nmonist\nmonistic\nmonistical\nmonists\nmonition\nmonitions\nmonitive\nmonitor\nmonitored\nmonitorial\nmonitories\nmonitoring\nmonitors\nmonitory\nmonk\nmonkeries\nmonkery\nmonkey\nmonkeyed\nmonkeying\nmonkeys\nmonkeyshines\nmonkfish\nmonkfishes\nmonkhood\nmonkhoods\nmonkish\nmonks\nmono\nmonoacid\nmonoacids\nmonocarp\nmonocarps\nmonochromatic\nmonochromatically\nmonochromaticities\nmonochromaticity\nmonochrome\nmonochromes\nmonochromic\nmonochromist\nmonochromists\nmonocle\nmonocled\nmonocles\nmonocot\nmonocots\nmonocrat\nmonocrats\nmonocular\nmonocularly\nmonocyte\nmonocytes\nmonodic\nmonodies\nmonodist\nmonodists\nmonodrama\nmonodramas\nmonody\nmonoecies\nmonoecy\nmonofil\nmonofils\nmonofuel\nmonofuels\nmonogamic\nmonogamies\nmonogamist\nmonogamists\nmonogamous\nmonogamously\nmonogamy\nmonogenies\nmonogeny\nmonogerm\nmonogram\nmonogramed\nmonograming\nmonogrammatic\nmonogrammed\nmonogramming\nmonograms\nmonograph\nmonographic\nmonographs\nmonogynies\nmonogynous\nmonogyny\nmonolingual\nmonolith\nmonolithic\nmonoliths\nmonolog\nmonologies\nmonologist\nmonologists\nmonologs\nmonologue\nmonologues\nmonologuist\nmonologuists\nmonology\nmonomania\nmonomaniac\nmonomaniacal\nmonomaniacs\nmonomanias\nmonomer\nmonomeric\nmonomers\nmonometallist\nmonometallists\nmonomial\nmonomials\nmononucleosis\nmonophonic\nmonophonically\nmonoplane\nmonoplanes\nmonopode\nmonopodes\nmonopodies\nmonopody\nmonopole\nmonopoles\nmonopolies\nmonopolist\nmonopolistic\nmonopolists\nmonopolization\nmonopolizations\nmonopolize\nmonopolized\nmonopolizer\nmonopolizers\nmonopolizes\nmonopolizing\nmonopoly\nmonorail\nmonorails\nmonos\nmonosome\nmonosomes\nmonosyllabic\nmonosyllabically\nmonosyllable\nmonosyllables\nmonotheism\nmonotheisms\nmonotheist\nmonotheistic\nmonotheistical\nmonotheistically\nmonotheists\nmonotint\nmonotints\nmonotone\nmonotones\nmonotonic\nmonotonically\nmonotonies\nmonotonous\nmonotonously\nmonotonousness\nmonotony\nmonotype\nmonotypes\nmonoxide\nmonoxides\nmons\nmonsieur\nmonsignor\nmonsignori\nmonsignors\nmonsoon\nmonsoonal\nmonsoons\nmonster\nmonsters\nmonstrosities\nmonstrosity\nmonstrous\nmonstrously\nmonstrousness\nmontage\nmontaged\nmontages\nmontaging\nmontane\nmontanes\nmonte\nmonteith\nmonteiths\nmontero\nmonteros\nmontes\nmonth\nmonthlies\nmonthly\nmonths\nmonument\nmonumental\nmonumentalities\nmonumentality\nmonumentalize\nmonumentalized\nmonumentalizes\nmonumentalizing\nmonumentally\nmonuments\nmonuron\nmonurons\nmony\nmoo\nmooch\nmooched\nmoocher\nmoochers\nmooches\nmooching\nmood\nmoodier\nmoodiest\nmoodily\nmoodiness\nmoods\nmoody\nmooed\nmooing\nmool\nmoola\nmoolah\nmoolahs\nmoolas\nmooley\nmooleys\nmools\nmoon\nmoonbeam\nmoonbeams\nmoonbow\nmoonbows\nmooncalf\nmooncalves\nmooned\nmooneye\nmooneyes\nmoonfish\nmoonfishes\nmoonier\nmooniest\nmoonily\nmooning\nmoonish\nmoonless\nmoonlet\nmoonlets\nmoonlight\nmoonlighted\nmoonlighter\nmoonlighters\nmoonlighting\nmoonlights\nmoonlike\nmoonlit\nmoonrise\nmoonrises\nmoons\nmoonsail\nmoonsails\nmoonscape\nmoonseed\nmoonseeds\nmoonset\nmoonsets\nmoonshine\nmoonshot\nmoonshots\nmoonstone\nmoonstones\nmoonstruck\nmoonward\nmoonwort\nmoonworts\nmoony\nmoor\nmoorage\nmoorages\nmoored\nmoorfowl\nmoorfowls\nmoorhen\nmoorhens\nmoorier\nmooriest\nmooring\nmoorings\nmoorish\nmoorland\nmoorlands\nmoors\nmoorwort\nmoorworts\nmoory\nmoos\nmoose\nmoot\nmooted\nmooter\nmooters\nmooting\nmoots\nmop\nmopboard\nmopboards\nmope\nmoped\nmopeds\nmoper\nmopers\nmopes\nmopey\nmoping\nmopingly\nmopish\nmopishly\nmopoke\nmopokes\nmopped\nmopper\nmoppers\nmoppet\nmoppets\nmopping\nmops\nmopy\nmoquette\nmoquettes\nmor\nmora\nmorae\nmorainal\nmoraine\nmoraines\nmorainic\nmoral\nmorale\nmorales\nmoralise\nmoralised\nmoralises\nmoralising\nmoralism\nmoralisms\nmoralist\nmoralistic\nmoralistically\nmoralists\nmoralities\nmorality\nmoralization\nmoralizations\nmoralize\nmoralized\nmoralizer\nmoralizers\nmoralizes\nmoralizing\nmorally\nmorals\nmoras\nmorass\nmorasses\nmorassy\nmoratoria\nmoratorium\nmoratoriums\nmoratory\nmoray\nmorays\nmorbid\nmorbidities\nmorbidity\nmorbidly\nmorbidness\nmorbific\nmorbilli\nmorceau\nmorceaux\nmordancies\nmordancy\nmordant\nmordanted\nmordanting\nmordantly\nmordants\nmordent\nmordents\nmore\nmoreen\nmoreens\nmorel\nmorelle\nmorelles\nmorello\nmorellos\nmorels\nmoreover\nmores\nmoresque\nmoresques\nmorganatic\nmorgen\nmorgens\nmorgue\nmorgues\nmoribund\nmoribundities\nmoribundity\nmorion\nmorions\nmorn\nmorning\nmornings\nmorns\nmorocco\nmoroccos\nmoron\nmoronic\nmoronically\nmoronism\nmoronisms\nmoronities\nmoronity\nmorons\nmorose\nmorosely\nmoroseness\nmorosities\nmorosity\nmorph\nmorpheme\nmorphemes\nmorphemics\nmorphia\nmorphias\nmorphic\nmorphin\nmorphine\nmorphines\nmorphins\nmorpho\nmorphological\nmorphologically\nmorphologies\nmorphologist\nmorphologists\nmorphology\nmorphos\nmorphs\nmorrion\nmorrions\nmorris\nmorrises\nmorro\nmorros\nmorrow\nmorrows\nmors\nmorse\nmorsel\nmorseled\nmorseling\nmorselled\nmorselling\nmorsels\nmort\nmortal\nmortalities\nmortality\nmortally\nmortals\nmortar\nmortarboard\nmortarboards\nmortared\nmortaring\nmortarless\nmortars\nmortary\nmortgage\nmortgaged\nmortgagee\nmortgagees\nmortgages\nmortgaging\nmortgagor\nmortgagors\nmortice\nmorticed\nmortices\nmortician\nmorticians\nmorticing\nmortification\nmortifications\nmortified\nmortifies\nmortify\nmortifying\nmortifyingly\nmortise\nmortised\nmortiser\nmortisers\nmortises\nmortising\nmortmain\nmortmains\nmorts\nmortuaries\nmortuary\nmorula\nmorulae\nmorular\nmorulas\nmos\nmosaic\nmosaicked\nmosaicking\nmosaics\nmoschate\nmosey\nmoseyed\nmoseying\nmoseys\nmoshav\nmoshavim\nmosk\nmosks\nmosque\nmosques\nmosquito\nmosquitoes\nmosquitos\nmoss\nmossback\nmossbacks\nmossed\nmosser\nmossers\nmosses\nmossier\nmossiest\nmossing\nmosslike\nmosso\nmossy\nmost\nmoste\nmostly\nmosts\nmot\nmote\nmotel\nmotels\nmotes\nmotet\nmotets\nmotey\nmoth\nmothball\nmothballed\nmothballing\nmothballs\nmother\nmothered\nmotherhood\nmothering\nmotherland\nmotherlands\nmotherless\nmotherly\nmothers\nmothery\nmothier\nmothiest\nmothproof\nmothproofed\nmothproofing\nmothproofs\nmoths\nmothy\nmoties\nmotif\nmotifs\nmotile\nmotiles\nmotilities\nmotility\nmotion\nmotional\nmotioned\nmotioner\nmotioners\nmotioning\nmotionless\nmotionlessly\nmotionlessness\nmotions\nmotivate\nmotivated\nmotivates\nmotivating\nmotivation\nmotivational\nmotivations\nmotivative\nmotivator\nmotivators\nmotive\nmotived\nmotiveless\nmotivelessly\nmotives\nmotivic\nmotiving\nmotivities\nmotivity\nmotley\nmotleyer\nmotleyest\nmotleys\nmotlier\nmotliest\nmotmot\nmotmots\nmotor\nmotorbike\nmotorbikes\nmotorboat\nmotorboats\nmotorbus\nmotorbuses\nmotorbusses\nmotorcade\nmotorcades\nmotorcar\nmotorcars\nmotorcycle\nmotorcycled\nmotorcycles\nmotorcycling\nmotorcyclist\nmotorcyclists\nmotordrome\nmotordromes\nmotored\nmotoric\nmotoring\nmotorings\nmotorise\nmotorised\nmotorises\nmotorising\nmotorist\nmotorists\nmotorization\nmotorizations\nmotorize\nmotorized\nmotorizes\nmotorizing\nmotorman\nmotormen\nmotors\nmotortruck\nmotortrucks\nmotorway\nmotorways\nmots\nmott\nmotte\nmottes\nmottle\nmottled\nmottler\nmottlers\nmottles\nmottling\nmotto\nmottoes\nmottos\nmotts\nmouch\nmouched\nmouches\nmouching\nmouchoir\nmouchoirs\nmoue\nmoues\nmoufflon\nmoufflons\nmouflon\nmouflons\nmouille\nmoujik\nmoujiks\nmoulage\nmoulages\nmould\nmoulded\nmoulder\nmouldered\nmouldering\nmoulders\nmouldier\nmouldiest\nmoulding\nmouldings\nmoulds\nmouldy\nmoulin\nmoulins\nmoult\nmoulted\nmoulter\nmoulters\nmoulting\nmoults\nmound\nmounded\nmounding\nmounds\nmount\nmountable\nmountain\nmountaineer\nmountaineering\nmountaineers\nmountainous\nmountainousness\nmountains\nmountebank\nmountebanks\nmounted\nmounter\nmounters\nmounting\nmountings\nmounts\nmourn\nmourned\nmourner\nmourners\nmournful\nmournfuller\nmournfullest\nmournfully\nmournfulness\nmourning\nmournings\nmourns\nmouse\nmoused\nmouser\nmousers\nmouses\nmousetrap\nmousetraps\nmousey\nmousier\nmousiest\nmousily\nmousing\nmousings\nmoussaka\nmoussakas\nmousse\nmousseline\nmousselines\nmousses\nmoustache\nmoustached\nmoustaches\nmousy\nmouth\nmouthed\nmouther\nmouthers\nmouthful\nmouthfuls\nmouthier\nmouthiest\nmouthily\nmouthing\nmouthpiece\nmouthpieces\nmouths\nmouthwash\nmouthwashes\nmouthy\nmouton\nmoutons\nmovabilities\nmovability\nmovable\nmovableness\nmovables\nmovably\nmove\nmoveabilities\nmoveability\nmoveable\nmoveableness\nmoveables\nmoveably\nmoved\nmoveless\nmovelessly\nmovelessness\nmovement\nmovements\nmover\nmovers\nmoves\nmovie\nmoviedom\nmoviedoms\nmoviegoer\nmoviegoers\nmovies\nmoving\nmovingly\nmow\nmowed\nmower\nmowers\nmowing\nmown\nmows\nmoxa\nmoxas\nmoxie\nmoxies\nmozetta\nmozettas\nmozette\nmozo\nmozos\nmozzarella\nmozzarellas\nmozzetta\nmozzettas\nmozzette\nmridanga\nmridangas\nmu\nmuch\nmuches\nmuchness\nmuchnesses\nmucid\nmucidities\nmucidity\nmucilage\nmucilages\nmucilaginous\nmucin\nmucinoid\nmucinous\nmucins\nmuck\nmucked\nmucker\nmuckers\nmuckier\nmuckiest\nmuckily\nmucking\nmuckle\nmuckles\nmuckluck\nmucklucks\nmuckrake\nmuckraked\nmuckraker\nmuckrakers\nmuckrakes\nmuckraking\nmucks\nmuckworm\nmuckworms\nmucky\nmucluc\nmuclucs\nmucoid\nmucoidal\nmucoids\nmucor\nmucors\nmucosa\nmucosae\nmucosal\nmucosas\nmucose\nmucosities\nmucosity\nmucous\nmucro\nmucrones\nmucus\nmucuses\nmud\nmudcap\nmudcapped\nmudcapping\nmudcaps\nmudded\nmudder\nmudders\nmuddied\nmuddier\nmuddies\nmuddiest\nmuddily\nmuddiness\nmudding\nmuddle\nmuddled\nmuddleheaded\nmuddler\nmuddlers\nmuddles\nmuddling\nmuddy\nmuddying\nmudfish\nmudfishes\nmudguard\nmudguards\nmudlark\nmudlarks\nmudpuppies\nmudpuppy\nmudra\nmudras\nmudrock\nmudrocks\nmudroom\nmudrooms\nmuds\nmudsill\nmudsills\nmudslinger\nmudslingers\nmudslinging\nmudslingings\nmudstone\nmudstones\nmueddin\nmueddins\nmuenster\nmuensters\nmuezzin\nmuezzins\nmuff\nmuffed\nmuffin\nmuffing\nmuffins\nmuffle\nmuffled\nmuffler\nmufflers\nmuffles\nmuffling\nmuffs\nmufti\nmuftis\nmug\nmugg\nmuggar\nmuggars\nmugged\nmugger\nmuggers\nmuggier\nmuggiest\nmuggily\nmugginess\nmugging\nmuggings\nmuggins\nmuggs\nmuggur\nmuggurs\nmuggy\nmugs\nmugwort\nmugworts\nmugwump\nmugwumps\nmuhlies\nmuhly\nmujik\nmujiks\nmukluk\nmukluks\nmulatto\nmulattoes\nmulattos\nmulberries\nmulberry\nmulch\nmulched\nmulches\nmulching\nmulct\nmulcted\nmulcting\nmulcts\nmule\nmuled\nmules\nmuleta\nmuletas\nmuleteer\nmuleteers\nmuley\nmuleys\nmuling\nmulish\nmulishly\nmulishness\nmull\nmulla\nmullah\nmullahs\nmullas\nmulled\nmullein\nmulleins\nmullen\nmullens\nmuller\nmullers\nmullet\nmullets\nmulley\nmulleys\nmulligan\nmulligans\nmulling\nmullion\nmullioned\nmullioning\nmullions\nmullite\nmullites\nmullock\nmullocks\nmullocky\nmulls\nmulticolored\nmultidimensional\nmultidimensionality\nmultifaceted\nmultifamily\nmultifarious\nmultifariousness\nmultifid\nmultiform\nmultiformities\nmultiformity\nmultijet\nmultilateral\nmultilaterally\nmultilevel\nmultilingual\nmultilingualism\nmultimedia\nmultimillionaire\nmultinational\nmultinationals\nmultiped\nmultipeds\nmultiple\nmultiples\nmultiplex\nmultiplexed\nmultiplexer\nmultiplexers\nmultiplexes\nmultiplexing\nmultiplexor\nmultiplexors\nmultiplicand\nmultiplicands\nmultiplication\nmultiplications\nmultiplicative\nmultiplicatively\nmultiplicities\nmultiplicity\nmultiplied\nmultiplier\nmultipliers\nmultiplies\nmultiply\nmultiplying\nmultiprocessing\nmultiprocessor\nmultiprocessors\nmultiprogramming\nmultipurpose\nmultiracial\nmultisense\nmultistage\nmultistory\nmultitude\nmultitudes\nmultitudinous\nmultitudinously\nmultitudinousness\nmultiversities\nmultiversity\nmultivitamin\nmultivitamins\nmulture\nmultures\nmum\nmumble\nmumbled\nmumbler\nmumblers\nmumbles\nmumbling\nmumm\nmummed\nmummer\nmummeries\nmummers\nmummery\nmummied\nmummies\nmummification\nmummifications\nmummified\nmummifies\nmummify\nmummifying\nmumming\nmumms\nmummy\nmummying\nmump\nmumped\nmumper\nmumpers\nmumping\nmumps\nmums\nmumu\nmumus\nmun\nmunch\nmunched\nmuncher\nmunchers\nmunches\nmunching\nmundane\nmundanely\nmundungo\nmundungos\nmungo\nmungoose\nmungooses\nmungos\nmunicipal\nmunicipalities\nmunicipality\nmunicipalization\nmunicipalizations\nmunicipalize\nmunicipalized\nmunicipalizes\nmunicipalizing\nmunicipally\nmunicipals\nmunificence\nmunificent\nmunificently\nmuniment\nmuniments\nmunition\nmunitioned\nmunitioning\nmunitions\nmunnion\nmunnions\nmuns\nmunster\nmunsters\nmuntin\nmunting\nmuntings\nmuntins\nmuntjac\nmuntjacs\nmuntjak\nmuntjaks\nmuon\nmuonic\nmuons\nmura\nmuraenid\nmuraenids\nmural\nmuralist\nmuralists\nmurals\nmuras\nmurder\nmurdered\nmurderee\nmurderees\nmurderer\nmurderers\nmurderess\nmurderesses\nmurdering\nmurderous\nmurderously\nmurderousness\nmurders\nmure\nmured\nmurein\nmureins\nmures\nmurex\nmurexes\nmuriate\nmuriated\nmuriates\nmuricate\nmurices\nmurid\nmurids\nmurine\nmurines\nmuring\nmurk\nmurker\nmurkest\nmurkier\nmurkiest\nmurkily\nmurkiness\nmurkly\nmurks\nmurky\nmurmur\nmurmured\nmurmurer\nmurmurers\nmurmuring\nmurmurous\nmurmurously\nmurmurs\nmurphies\nmurphy\nmurr\nmurra\nmurrain\nmurrains\nmurras\nmurre\nmurrelet\nmurrelets\nmurres\nmurrey\nmurreys\nmurrha\nmurrhas\nmurrhine\nmurries\nmurrine\nmurrs\nmurry\nmurther\nmurthered\nmurthering\nmurthers\nmus\nmusca\nmuscadel\nmuscadels\nmuscadine\nmuscadines\nmuscae\nmuscat\nmuscatel\nmuscatels\nmuscats\nmuscid\nmuscids\nmuscle\nmuscled\nmuscles\nmuscling\nmuscly\nmuscovite\nmuscular\nmuscularity\nmuscularly\nmusculature\nmusculatures\nmuse\nmused\nmuseful\nmuser\nmusers\nmuses\nmusette\nmusettes\nmuseum\nmuseums\nmush\nmushed\nmusher\nmushers\nmushes\nmushier\nmushiest\nmushily\nmushiness\nmushing\nmushroom\nmushroomed\nmushrooming\nmushrooms\nmushy\nmusic\nmusical\nmusicale\nmusicales\nmusicality\nmusically\nmusicals\nmusician\nmusicians\nmusicianship\nmusicological\nmusicologist\nmusicologists\nmusicology\nmusics\nmusing\nmusingly\nmusings\nmusjid\nmusjids\nmusk\nmuskeg\nmuskegs\nmusket\nmusketeer\nmusketeers\nmusketries\nmusketry\nmuskets\nmuskie\nmuskier\nmuskies\nmuskiest\nmuskily\nmuskiness\nmuskit\nmuskits\nmuskmelon\nmuskmelons\nmuskrat\nmuskrats\nmusks\nmusky\nmuslin\nmuslins\nmuspike\nmuspikes\nmusquash\nmusquashes\nmuss\nmussed\nmussel\nmussels\nmusses\nmussier\nmussiest\nmussily\nmussiness\nmussing\nmussy\nmust\nmustache\nmustached\nmustaches\nmustang\nmustangs\nmustard\nmustards\nmusted\nmustee\nmustees\nmuster\nmustered\nmustering\nmusters\nmusth\nmusths\nmustier\nmustiest\nmustily\nmustiness\nmusting\nmusts\nmusty\nmut\nmutabilities\nmutability\nmutable\nmutably\nmutagen\nmutagens\nmutant\nmutants\nmutase\nmutases\nmutate\nmutated\nmutates\nmutating\nmutation\nmutational\nmutations\nmutative\nmutch\nmutches\nmutchkin\nmutchkins\nmute\nmuted\nmutedly\nmutely\nmuteness\nmutenesses\nmuter\nmutes\nmutest\nmuticous\nmutilate\nmutilated\nmutilates\nmutilating\nmutilation\nmutilations\nmutilator\nmutilators\nmutine\nmutined\nmutineer\nmutineered\nmutineering\nmutineers\nmutines\nmuting\nmutinied\nmutinies\nmutining\nmutinous\nmutinously\nmutiny\nmutinying\nmutism\nmutisms\nmuton\nmuts\nmutt\nmutter\nmuttered\nmutterer\nmutterers\nmuttering\nmutters\nmutton\nmuttonchops\nmuttons\nmuttony\nmutts\nmutual\nmutualities\nmutuality\nmutually\nmutuel\nmutuels\nmutular\nmutule\nmutules\nmuumuu\nmuumuus\nmuzhik\nmuzhiks\nmuzjik\nmuzjiks\nmuzzier\nmuzziest\nmuzzily\nmuzzle\nmuzzled\nmuzzler\nmuzzlers\nmuzzles\nmuzzling\nmuzzy\nmy\nmyalgia\nmyalgias\nmyalgic\nmyases\nmyasis\nmycele\nmyceles\nmycelia\nmycelial\nmycelian\nmycelium\nmyceloid\nmycetoma\nmycetomas\nmycetomata\nmycological\nmycologies\nmycologist\nmycologists\nmycology\nmycoses\nmycosis\nmycotic\nmyelin\nmyeline\nmyelines\nmyelinic\nmyelins\nmyelitides\nmyelitis\nmyeloid\nmyeloma\nmyelomas\nmyelomata\nmyiases\nmyiasis\nmylonite\nmylonites\nmyna\nmynah\nmynahs\nmynas\nmynheer\nmynheers\nmyoblast\nmyoblasts\nmyogenic\nmyograph\nmyographs\nmyoid\nmyologic\nmyologies\nmyology\nmyoma\nmyomas\nmyomata\nmyopathies\nmyopathy\nmyope\nmyopes\nmyopia\nmyopias\nmyopic\nmyopically\nmyopies\nmyopy\nmyoscope\nmyoscopes\nmyoses\nmyosin\nmyosins\nmyosis\nmyosote\nmyosotes\nmyosotis\nmyosotises\nmyotic\nmyotics\nmyotome\nmyotomes\nmyotonia\nmyotonias\nmyotonic\nmyriad\nmyriads\nmyriapod\nmyriapods\nmyrica\nmyricas\nmyriopod\nmyriopods\nmyrmidon\nmyrmidons\nmyrrh\nmyrrhic\nmyrrhs\nmyrtle\nmyrtles\nmyself\nmysid\nmysost\nmysosts\nmystagog\nmystagogs\nmysteries\nmysterious\nmysteriously\nmysteriousness\nmystery\nmystic\nmystical\nmystically\nmysticism\nmysticisms\nmysticly\nmystics\nmystification\nmystifications\nmystified\nmystifies\nmystify\nmystifying\nmystifyingly\nmystique\nmystiques\nmyth\nmythic\nmythical\nmythically\nmythicize\nmythicized\nmythicizes\nmythicizing\nmythoi\nmythological\nmythologically\nmythologies\nmythologist\nmythologists\nmythologize\nmythologized\nmythologizes\nmythologizing\nmythology\nmythos\nmyths\nmyxedema\nmyxedemas\nmyxocyte\nmyxocytes\nmyxoid\nmyxoma\nmyxomas\nmyxomata\nna\nnab\nnabbed\nnabbing\nnabe\nnabes\nnabis\nnabob\nnaboberies\nnabobery\nnabobess\nnabobesses\nnabobism\nnabobisms\nnabobs\nnabs\nnacelle\nnacelles\nnacho\nnacre\nnacred\nnacreous\nnacres\nnadir\nnadiral\nnadirs\nnae\nnaething\nnaethings\nnaevi\nnaevoid\nnaevus\nnag\nnagana\nnaganas\nnagged\nnagger\nnaggers\nnagging\nnaggy\nnags\nnah\nnaiad\nnaiades\nnaiads\nnaif\nnaifs\nnail\nnailed\nnailer\nnailers\nnailfold\nnailfolds\nnailhead\nnailheads\nnailing\nnails\nnailset\nnailsets\nnainsook\nnainsooks\nnaira\nnaive\nnaively\nnaiveness\nnaiver\nnaives\nnaivest\nnaivete\nnaivetes\nnaiveties\nnaivety\nnaked\nnakeder\nnakedest\nnakedly\nnakedness\nnaled\nnaleds\nnaloxone\nnaloxones\nnam\nnamable\nname\nnameable\nnamed\nnameless\nnamelessly\nnamelessness\nnamely\nnameplate\nnameplates\nnamer\nnamers\nnames\nnamesake\nnamesakes\nnaming\nnana\nnanas\nnance\nnances\nnancy\nnandin\nnandins\nnanism\nnanisms\nnankeen\nnankeens\nnankin\nnankins\nnannie\nnannies\nnanny\nnanogram\nnanograms\nnanosecond\nnanoseconds\nnanowatt\nnanowatts\nnaoi\nnaos\nnap\nnapalm\nnapalmed\nnapalming\nnapalms\nnape\nnaperies\nnapery\nnapes\nnaphtha\nnaphthalene\nnaphthalenes\nnaphthalenic\nnaphthas\nnaphthol\nnaphthols\nnaphthyl\nnaphtol\nnaphtols\nnapiform\nnapkin\nnapkins\nnapless\nnapoleon\nnapoleons\nnappe\nnapped\nnapper\nnappers\nnappes\nnappie\nnappier\nnappies\nnappiest\nnapping\nnappy\nnaps\nnarc\nnarcein\nnarceine\nnarceines\nnarceins\nnarcism\nnarcisms\nnarcissi\nnarcissism\nnarcissist\nnarcissistic\nnarcissists\nnarcissus\nnarcissuses\nnarcist\nnarcists\nnarco\nnarcos\nnarcose\nnarcoses\nnarcosis\nnarcotic\nnarcotically\nnarcotics\nnarcotize\nnarcotized\nnarcotizes\nnarcotizing\nnarcs\nnard\nnardine\nnards\nnares\nnarghile\nnarghiles\nnargile\nnargileh\nnargilehs\nnargiles\nnarial\nnaric\nnarine\nnaris\nnark\nnarked\nnarking\nnarks\nnarky\nnarrate\nnarrated\nnarrater\nnarraters\nnarrates\nnarrating\nnarration\nnarrational\nnarrations\nnarrative\nnarratively\nnarratives\nnarrator\nnarrators\nnarrow\nnarrowed\nnarrower\nnarrowest\nnarrowing\nnarrowly\nnarrowness\nnarrows\nnarthex\nnarthexes\nnarwal\nnarwals\nnarwhal\nnarwhale\nnarwhales\nnarwhals\nnary\nnasal\nnasalise\nnasalised\nnasalises\nnasalising\nnasalities\nnasality\nnasalization\nnasalizations\nnasalize\nnasalized\nnasalizes\nnasalizing\nnasally\nnasals\nnascence\nnascences\nnascencies\nnascency\nnascent\nnasial\nnasion\nnasions\nnastic\nnastier\nnastiest\nnastily\nnastiness\nnasturtium\nnasturtiums\nnasty\nnatal\nnatalities\nnatality\nnatant\nnatantly\nnatation\nnatations\nnatatorial\nnatatorium\nnatatoriums\nnatatory\nnatch\nnates\nnathless\nnaties\nnation\nnational\nnationalism\nnationalisms\nnationalist\nnationalistic\nnationalistically\nnationalists\nnationalities\nnationality\nnationalization\nnationalizations\nnationalize\nnationalized\nnationalizes\nnationalizing\nnationally\nnationals\nnationhood\nnations\nnationwide\nnative\nnatively\nnativeness\nnatives\nnativism\nnativisms\nnativist\nnativistic\nnativists\nnativities\nnativity\nnatrium\nnatriums\nnatron\nnatrons\nnatter\nnattered\nnattering\nnatters\nnattier\nnattiest\nnattily\nnatty\nnatural\nnaturalism\nnaturalist\nnaturalistic\nnaturalistically\nnaturalists\nnaturalization\nnaturalizations\nnaturalize\nnaturalized\nnaturalizes\nnaturalizing\nnaturally\nnaturalness\nnaturals\nnature\nnatured\nnatures\nnaught\nnaughtier\nnaughtiest\nnaughtily\nnaughtiness\nnaughts\nnaughty\nnaumachies\nnaumachy\nnauplial\nnauplii\nnauplius\nnausea\nnauseant\nnauseants\nnauseas\nnauseate\nnauseated\nnauseates\nnauseating\nnauseatingly\nnauseous\nnauseously\nnauseousness\nnautch\nnautches\nnautical\nnautically\nnautili\nnautilus\nnautiluses\nnavaid\nnavaids\nnaval\nnavally\nnavar\nnavars\nnave\nnavel\nnavels\nnaves\nnavette\nnavettes\nnavicert\nnavicerts\nnavies\nnavigability\nnavigable\nnavigably\nnavigate\nnavigated\nnavigates\nnavigating\nnavigation\nnavigational\nnavigations\nnavigator\nnavigators\nnavvies\nnavvy\nnavy\nnaw\nnawab\nnawabs\nnay\nnays\nnazi\nnazified\nnazifies\nnazify\nnazifying\nnazis\nne\nneap\nneaps\nnear\nnearby\nneared\nnearer\nnearest\nnearing\nnearlier\nnearliest\nnearly\nnearness\nnearnesses\nnears\nnearsighted\nnearsightedly\nnearsightedness\nneat\nneaten\nneatened\nneatening\nneatens\nneater\nneatest\nneath\nneatherd\nneatherds\nneatly\nneatness\nneatnesses\nneats\nneb\nnebbish\nnebbishes\nnebs\nnebula\nnebulae\nnebular\nnebulas\nnebule\nnebulise\nnebulised\nnebulises\nnebulising\nnebulization\nnebulizations\nnebulize\nnebulized\nnebulizes\nnebulizing\nnebulose\nnebulosities\nnebulosity\nnebulous\nnebulously\nnebulousness\nnebuly\nnecessaries\nnecessarily\nnecessary\nnecessitarian\nnecessitarianism\nnecessitate\nnecessitated\nnecessitates\nnecessitating\nnecessitation\nnecessitations\nnecessities\nnecessitous\nnecessitously\nnecessitousness\nnecessity\nneck\nneckband\nneckbands\nnecked\nneckerchief\nneckerchiefs\nnecking\nneckings\nnecklace\nnecklaces\nneckless\nnecklike\nneckline\nnecklines\nnecks\nnecktie\nneckties\nneckwear\nneckwears\nnecrological\nnecrologies\nnecrologist\nnecrologists\nnecrology\nnecromancer\nnecromancers\nnecromancy\nnecromantic\nnecropsied\nnecropsies\nnecropsy\nnecropsying\nnecrose\nnecrosed\nnecroses\nnecrosing\nnecrosis\nnecrotic\nnectar\nnectaries\nnectarine\nnectarines\nnectars\nnectary\nnee\nneed\nneeded\nneeder\nneeders\nneedful\nneedfully\nneedfulness\nneedfuls\nneedier\nneediest\nneedily\nneediness\nneeding\nneedle\nneedled\nneedlepoint\nneedler\nneedlers\nneedles\nneedless\nneedlessly\nneedlessness\nneedlework\nneedling\nneedlings\nneeds\nneedy\nneem\nneems\nneep\nneeps\nnefarious\nnefariously\nnegate\nnegated\nnegater\nnegaters\nnegates\nnegating\nnegation\nnegational\nnegations\nnegative\nnegatived\nnegatively\nnegatives\nnegativing\nnegativism\nnegativist\nnegativistic\nnegativists\nnegativity\nnegaton\nnegatons\nnegator\nnegators\nnegatron\nnegatrons\nneglect\nneglected\nneglectful\nneglectfully\nneglectfulness\nneglecting\nneglects\nneglige\nnegligee\nnegligees\nnegligence\nnegligent\nnegligently\nnegliges\nnegligibility\nnegligible\nnegligibly\nnegotiability\nnegotiable\nnegotiant\nnegotiants\nnegotiate\nnegotiated\nnegotiates\nnegotiating\nnegotiation\nnegotiations\nnegotiator\nnegotiators\nnegroid\nnegroids\nnegus\nneguses\nneif\nneifs\nneigh\nneighbor\nneighbored\nneighborhood\nneighborhoods\nneighboring\nneighborliness\nneighborly\nneighbors\nneighed\nneighing\nneighs\nneist\nneither\nnekton\nnektonic\nnektons\nnelly\nnelson\nnelsons\nnelumbo\nnelumbos\nnema\nnemas\nnematic\nnematode\nnematodes\nnemeses\nnemesis\nnene\nneoclassic\nneoclassical\nneoclassicism\nneoclassicist\nneoclassicists\nneocolonial\nneocolonialism\nneocolonialist\nneolith\nneoliths\nneologic\nneologies\nneologism\nneologisms\nneologistic\nneology\nneomorph\nneomorphs\nneomycin\nneomycins\nneon\nneonatal\nneonatally\nneonate\nneonates\nneonatologist\nneonatologists\nneonatology\nneoned\nneons\nneophyte\nneophytes\nneoplasm\nneoplasms\nneoprene\nneoprenes\nneotenic\nneotenies\nneoteny\nneoteric\nneoterics\nneotype\nneotypes\nnepenthe\nnepenthes\nnephew\nnephews\nnephric\nnephrism\nnephrisms\nnephrite\nnephrites\nnephritic\nnephron\nnephrons\nnepotic\nnepotism\nnepotisms\nnepotist\nnepotistic\nnepotists\nnerd\nnerds\nnerdy\nnereid\nnereides\nnereids\nnereis\nneritic\nnerol\nneroli\nnerolis\nnerols\nnerts\nnertz\nnervate\nnerve\nnerved\nnerveless\nnervelessly\nnervelessness\nnerves\nnervier\nnerviest\nnervily\nnervine\nnervines\nnerviness\nnerving\nnervings\nnervous\nnervously\nnervousness\nnervule\nnervules\nnervure\nnervures\nnervy\nnescient\nnescients\nness\nnesses\nnest\nnested\nnester\nnesters\nnesting\nnestle\nnestled\nnestler\nnestlers\nnestles\nnestlike\nnestling\nnestlings\nnestor\nnestors\nnests\nnet\nnether\nnethermost\nnetless\nnetlike\nnetop\nnetops\nnets\nnetsuke\nnetsukes\nnett\nnettable\nnetted\nnetter\nnetters\nnettier\nnettiest\nnetting\nnettings\nnettle\nnettled\nnettler\nnettlers\nnettles\nnettlier\nnettliest\nnettling\nnettly\nnetts\nnetty\nnetwork\nnetworked\nnetworking\nnetworks\nneuk\nneuks\nneum\nneumatic\nneume\nneumes\nneumic\nneums\nneural\nneuralgia\nneuralgias\nneuralgic\nneurally\nneurasthenia\nneurasthenic\nneurasthenically\nneuraxon\nneuraxons\nneuritic\nneuritics\nneuritides\nneuritis\nneuritises\nneuroid\nneurological\nneurologically\nneurologist\nneurologists\nneurology\nneuroma\nneuromas\nneuromata\nneuron\nneuronal\nneurone\nneurones\nneuronic\nneurons\nneurosal\nneuroses\nneurosis\nneurotic\nneurotically\nneurotics\nneuston\nneustons\nneuter\nneutered\nneutering\nneuters\nneutral\nneutralism\nneutralist\nneutralists\nneutrality\nneutralization\nneutralizations\nneutralize\nneutralized\nneutralizer\nneutralizers\nneutralizes\nneutralizing\nneutrally\nneutrals\nneutrino\nneutrinos\nneutron\nneutrons\nneve\nnever\nnevermore\nnevertheless\nneves\nnevi\nnevoid\nnevus\nnew\nnewborn\nnewborns\nnewcomer\nnewcomers\nnewel\nnewels\nnewer\nnewest\nnewfangled\nnewfangledness\nnewfound\nnewie\nnewish\nnewly\nnewlywed\nnewlyweds\nnewmown\nnewness\nnewnesses\nnews\nnewsboy\nnewsboys\nnewscast\nnewscaster\nnewscasters\nnewscasts\nnewsdealer\nnewsdealers\nnewsier\nnewsies\nnewsiest\nnewsiness\nnewsless\nnewsletter\nnewsletters\nnewsman\nnewsmen\nnewspaper\nnewspaperman\nnewspapermen\nnewspapers\nnewspaperwoman\nnewspaperwomen\nnewspeak\nnewspeaks\nnewsprint\nnewsreel\nnewsreels\nnewsroom\nnewsrooms\nnewsstand\nnewsstands\nnewsworthy\nnewsy\nnewt\nnewton\nnewtons\nnewts\nnext\nnextdoor\nnexus\nnexuses\nngwee\nniacin\nniacins\nnib\nnibbed\nnibbing\nnibble\nnibbled\nnibbler\nnibblers\nnibbles\nnibbling\nniblick\nniblicks\nniblike\nnibs\nnicad\nnice\nnicely\nniceness\nnicenesses\nnicer\nnicest\nniceties\nnicety\nniche\nniched\nniches\nniching\nnick\nnicked\nnickel\nnickeled\nnickelic\nnickeling\nnickelled\nnickelling\nnickelodeon\nnickelodeons\nnickels\nnicker\nnickered\nnickering\nnickers\nnicking\nnickle\nnickles\nnicknack\nnicknacks\nnickname\nnicknamed\nnicknames\nnicknaming\nnicks\nnicol\nnicols\nnicotin\nnicotine\nnicotines\nnicotinic\nnicotins\nnictate\nnictated\nnictates\nnictating\nnictitate\nnictitated\nnictitates\nnictitating\nnidal\nnide\nnided\nnidering\nniderings\nnides\nnidget\nnidgets\nnidi\nnidified\nnidifies\nnidify\nnidifying\nniding\nnidus\nniduses\nniece\nnieces\nnielli\nniellist\nniellists\nniello\nnielloed\nnielloing\nniellos\nnies\nnieve\nnieves\nniffer\nniffered\nniffering\nniffers\nniftier\nnifties\nniftiest\nnifty\nniggard\nniggarded\nniggarding\nniggardly\nniggards\nnigger\nniggers\nniggle\nniggled\nniggler\nnigglers\nniggles\nniggling\nnigglings\nnigh\nnighed\nnigher\nnighest\nnighing\nnighness\nnighnesses\nnighs\nnight\nnightcap\nnightcaps\nnightclothes\nnightclub\nnightclubs\nnightdress\nnightdresses\nnightfall\nnightfalls\nnightgown\nnightgowns\nnighthawk\nnighthawks\nnightie\nnighties\nnightingale\nnightingales\nnightjar\nnightjars\nnightly\nnightmare\nnightmares\nnightmarish\nnights\nnightshade\nnightshades\nnightshirt\nnightshirts\nnightstick\nnightsticks\nnighttime\nnighttimes\nnighty\nnigrified\nnigrifies\nnigrify\nnigrifying\nnigrosin\nnigrosins\nnihil\nnihilism\nnihilisms\nnihilist\nnihilistic\nnihilists\nnihilities\nnihility\nnihils\nnil\nnilgai\nnilgais\nnilgau\nnilgaus\nnilghai\nnilghais\nnilghau\nnilghaus\nnill\nnilled\nnilling\nnills\nnils\nnim\nnimbi\nnimble\nnimbleness\nnimbler\nnimblest\nnimbly\nnimbus\nnimbused\nnimbuses\nnimieties\nnimiety\nnimious\nnimmed\nnimming\nnimrod\nnimrods\nnims\nnincompoop\nnincompoops\nnine\nninebark\nninebarks\nninefold\nninepin\nninepins\nnines\nnineteen\nnineteens\nnineteenth\nnineteenths\nnineties\nninetieth\nninetieths\nninety\nninja\nninny\nninnyish\nninon\nninons\nninth\nninthly\nninths\nniobic\nniobium\nniobiums\nniobous\nnip\nnipa\nnipas\nnipped\nnipper\nnippers\nnippier\nnippiest\nnippily\nnipping\nnippingly\nnipple\nnipples\nnippy\nnips\nnirvana\nnirvanas\nnirvanic\nnisei\nniseis\nnisi\nnisus\nnit\nnitchie\nnitchies\nniter\nniters\nnitid\nniton\nnitons\nnitpick\nnitpicked\nnitpicker\nnitpickers\nnitpicking\nnitpicks\nnitrate\nnitrated\nnitrates\nnitrating\nnitration\nnitrations\nnitrator\nnitrators\nnitre\nnitres\nnitric\nnitrid\nnitride\nnitrides\nnitrids\nnitrification\nnitrifications\nnitrified\nnitrifies\nnitrify\nnitrifying\nnitril\nnitrile\nnitriles\nnitrils\nnitrite\nnitrites\nnitro\nnitrocellulose\nnitrocellulosic\nnitrogen\nnitrogenous\nnitrogens\nnitroglycerin\nnitroglycerine\nnitrolic\nnitros\nnitroso\nnitrosyl\nnitrosyls\nnitrous\nnits\nnittier\nnittiest\nnitty\nnitwit\nnitwits\nnival\nniveous\nnix\nnixe\nnixed\nnixes\nnixie\nnixies\nnixing\nnixy\nnizam\nnizamate\nnizamates\nnizams\nnmitering\nno\nnob\nnobbier\nnobbiest\nnobbily\nnobble\nnobbled\nnobbler\nnobblers\nnobbles\nnobbling\nnobby\nnobelium\nnobeliums\nnobilities\nnobility\nnoble\nnobleman\nnoblemen\nnobleness\nnobler\nnobles\nnoblesse\nnoblesses\nnoblest\nnoblewoman\nnoblewomen\nnobly\nnobodies\nnobody\nnobs\nnocent\nnock\nnocked\nnocking\nnocks\nnoctuid\nnoctuids\nnoctule\nnoctules\nnoctuoid\nnocturn\nnocturnal\nnocturnally\nnocturne\nnocturnes\nnocturns\nnocuous\nnocuously\nnod\nnodal\nnodalities\nnodality\nnodally\nnodded\nnodder\nnodders\nnoddies\nnodding\nnoddle\nnoddled\nnoddles\nnoddling\nnoddy\nnode\nnodes\nnodi\nnodical\nnodose\nnodosities\nnodosity\nnodous\nnods\nnodular\nnodule\nnodules\nnodulose\nnodulous\nnodus\nnoel\nnoels\nnoes\nnoesis\nnoesises\nnoetic\nnog\nnogg\nnoggin\nnogging\nnoggings\nnoggins\nnoggs\nnogs\nnoh\nnohow\nnoil\nnoils\nnoily\nnoise\nnoised\nnoiseless\nnoiselessly\nnoisemaker\nnoisemakers\nnoisemaking\nnoises\nnoisier\nnoisiest\nnoisily\nnoisiness\nnoising\nnoisome\nnoisomely\nnoisomeness\nnoisy\nnolo\nnolos\nnom\nnoma\nnomad\nnomadic\nnomadism\nnomadisms\nnomads\nnomarch\nnomarchies\nnomarchs\nnomarchy\nnomas\nnombles\nnombril\nnombrils\nnome\nnomen\nnomenclatural\nnomenclature\nnomenclatures\nnomes\nnomina\nnominal\nnominalism\nnominalist\nnominalistic\nnominalists\nnominally\nnominals\nnominate\nnominated\nnominates\nnominating\nnomination\nnominations\nnominative\nnominator\nnominators\nnominee\nnominees\nnomism\nnomisms\nnomistic\nnomogram\nnomograms\nnomograph\nnomographic\nnomography\nnomoi\nnomologies\nnomology\nnomos\nnoms\nnona\nnonaccredited\nnonacid\nnonacids\nnonadjustable\nnonadult\nnonadults\nnonage\nnonagenarian\nnonagenarians\nnonages\nnonaggression\nnonagon\nnonagons\nnonalcoholic\nnonaligned\nnonalignment\nnonalignments\nnonalphabetic\nnonappearance\nnonas\nnonbank\nnonbasic\nnonbeing\nnonbeings\nnonbeliever\nnonbelievers\nnonbinding\nnonbook\nnonbooks\nnonbreakable\nnoncancerous\nnoncandidate\nnoncandidates\nnoncareer\nnoncash\nnonce\nnonces\nnonchalance\nnonchalant\nnonclassified\nnoncom\nnoncombatant\nnoncombatants\nnoncombustible\nnoncommercial\nnoncommissioned\nnoncommittal\nnoncommittally\nnoncompetitive\nnoncompetitor\nnoncompetitors\nnoncompliance\nnoncoms\nnonconductor\nnonconductors\nnonconformance\nnonconforming\nnonconformist\nnonconformists\nnonconformity\nnoncontributing\nnoncooperation\nnoncooperationist\nnoncooperationists\nnoncooperative\nnoncooperator\nnoncooperators\nnoncredit\nnondairy\nnondelivery\nnondescript\nnondescripts\nnondisclosure\nnondisclosures\nnondiscrimination\nnondiscriminatory\nnondistinctive\nnondurable\nnone\nnoneffective\nnoneffectives\nnonego\nnonegos\nnonelect\nnonelectronic\nnonempty\nnonentities\nnonentity\nnonentries\nnonentry\nnonequal\nnonequals\nnones\nnonessential\nnonessentials\nnonesuch\nnonesuches\nnonet\nnonetheless\nnoneuclidean\nnonevent\nnonevents\nnonexistence\nnonexistent\nnonexisting\nnonfarm\nnonfat\nnonfatal\nnonfeasance\nnonfeasances\nnonfiction\nnonfictional\nnonfictions\nnonfluid\nnonfluids\nnonfocal\nnonfood\nnongame\nnongovernmental\nnongreen\nnonguilt\nnonguilts\nnonhardy\nnonhero\nnonheroes\nnonhuman\nnonideal\nnoninflationary\nnonintervention\nnoninterventionalist\nnoninterventionist\nnoninterventionists\nnoninterventions\nnoninvolvement\nnonionic\nnonjuror\nnonjurors\nnonlegal\nnonlife\nnonlives\nnonlocal\nnonlocals\nnonman\nnonmanagement\nnonmanagerial\nnonmen\nnonmetal\nnonmetallic\nnonmetals\nnonmilitary\nnonmodal\nnonmoney\nnonmoral\nnonnaval\nnonnegotiable\nnonobese\nnonobjective\nnonobjectivism\nnonobjectivist\nnonobjectivity\nnonowner\nnonowners\nnonpagan\nnonpagans\nnonpapal\nnonpar\nnonpareil\nnonpareils\nnonparty\nnonpaying\nnonpayment\nnonperformance\nnonplus\nnonplused\nnonpluses\nnonplusing\nnonplussed\nnonplusses\nnonplussing\nnonpolar\nnonproductive\nnonproductiveness\nnonprofessional\nnonprofessionals\nnonprofit\nnonpros\nnonprossed\nnonprosses\nnonprossing\nnonquota\nnonradioactive\nnonrated\nnonrecurrent\nnonrecurring\nnonrenewable\nnonresidence\nnonresidency\nnonresident\nnonresidential\nnonresidents\nnonresistant\nnonresistants\nnonrigid\nnonrival\nnonrivals\nnonroyal\nnonrural\nnonseasonal\nnonsense\nnonsenses\nnonsensical\nnonsensically\nnonsexist\nnonsexists\nnonsignificant\nnonsignificants\nnonsked\nnonskeds\nnonskid\nnonskier\nnonskiers\nnonslip\nnonsmoker\nnonsmokers\nnonsmoking\nnonsolar\nnonsolid\nnonsolids\nnonspecific\nnonstandard\nnonstick\nnonstop\nnonsuch\nnonsuches\nnonsugar\nnonsugars\nnonsuit\nnonsuited\nnonsuiting\nnonsuits\nnontax\nnontaxable\nnontaxes\nnontidal\nnontitle\nnontoxic\nnontransferable\nnontrump\nnontruth\nnontruths\nnonunion\nnonunions\nnonuple\nnonuples\nnonurban\nnonuse\nnonuser\nnonusers\nnonuses\nnonusing\nnonviolent\nnonviolently\nnonviral\nnonvocal\nnonvolatile\nnonvoter\nnonvoters\nnonvoting\nnonwhite\nnonwhites\nnonwoody\nnonwoven\nnonyl\nnonzero\nnoo\nnoodle\nnoodled\nnoodles\nnoodling\nnook\nnookies\nnooklike\nnooks\nnooky\nnoon\nnoonday\nnoondays\nnooning\nnoonings\nnoons\nnoontide\nnoontides\nnoontime\nnoontimes\nnoose\nnoosed\nnooser\nnoosers\nnooses\nnoosing\nnopal\nnopals\nnope\nnor\nnoria\nnorias\nnorite\nnorites\nnoritic\nnorland\nnorlands\nnorm\nnormal\nnormalcies\nnormalcy\nnormality\nnormalization\nnormalizations\nnormalize\nnormalized\nnormalizes\nnormalizing\nnormally\nnormals\nnormative\nnormatively\nnormed\nnormless\nnorms\nnorth\nnorthbound\nnortheast\nnortheaster\nnortheasterly\nnortheastern\nnortheasters\nnorther\nnortherlies\nnortherly\nnorthern\nnorthernmost\nnortherns\nnorthers\nnorthing\nnorthings\nnorths\nnorthward\nnorthwards\nnorthwest\nnorthwesterly\nnorthwestern\nnos\nnose\nnosebag\nnosebags\nnoseband\nnosebands\nnosebleed\nnosebleeds\nnosed\nnosegay\nnosegays\nnoseless\nnoselike\nnosepiece\nnosepieces\nnoses\nnosey\nnosh\nnoshed\nnosher\nnoshers\nnoshes\nnoshing\nnosier\nnosiest\nnosily\nnosiness\nnosinesses\nnosing\nnosings\nnosologies\nnosology\nnostalgia\nnostalgic\nnostalgically\nnostoc\nnostocs\nnostril\nnostrils\nnostrum\nnostrums\nnosy\nnot\nnota\nnotabilities\nnotability\nnotable\nnotableness\nnotables\nnotably\nnotal\nnotarial\nnotarially\nnotaries\nnotarization\nnotarizations\nnotarize\nnotarized\nnotarizes\nnotarizing\nnotary\nnotate\nnotated\nnotates\nnotating\nnotation\nnotational\nnotations\nnotch\nnotchback\nnotchbacks\nnotched\nnotcher\nnotchers\nnotches\nnotching\nnote\nnotebook\nnotebooks\nnotecase\nnotecases\nnoted\nnotedly\nnoteless\nnoter\nnoters\nnotes\nnoteworthiness\nnoteworthy\nnothing\nnothingness\nnothings\nnotice\nnoticeable\nnoticeably\nnoticed\nnotices\nnoticing\nnotifiable\nnotification\nnotifications\nnotified\nnotifier\nnotifiers\nnotifies\nnotify\nnotifying\nnoting\nnotion\nnotional\nnotionally\nnotions\nnotoriety\nnotorious\nnotoriously\nnotoriousness\nnotornis\nnotturni\nnotturno\nnotum\nnotwithstanding\nnougat\nnougats\nnought\nnoughts\nnoumena\nnoumenal\nnoumenon\nnoun\nnounal\nnounally\nnounless\nnouns\nnourish\nnourished\nnourishes\nnourishing\nnourishment\nnourishments\nnous\nnouses\nnova\nnovae\nnovalike\nnovas\nnovation\nnovations\nnovel\nnovelette\nnovelettes\nnovelise\nnovelised\nnovelises\nnovelising\nnovelist\nnovelistic\nnovelists\nnovelization\nnovelizations\nnovelize\nnovelized\nnovelizes\nnovelizing\nnovella\nnovellas\nnovelle\nnovelly\nnovels\nnovelties\nnovelty\nnovena\nnovenae\nnovenas\nnovercal\nnovice\nnovices\nnovitiate\nnovitiates\nnow\nnowadays\nnoway\nnoways\nnowhere\nnowheres\nnowise\nnows\nnowt\nnowts\nnoxious\nnoxiously\nnoxiousness\nnoyade\nnoyades\nnozzle\nnozzles\nnth\nnu\nnuance\nnuanced\nnuances\nnub\nnubbier\nnubbiest\nnubbin\nnubbins\nnubble\nnubbles\nnubblier\nnubbliest\nnubbly\nnubby\nnubia\nnubias\nnubile\nnubilities\nnubility\nnubilose\nnubilous\nnubs\nnucellar\nnucelli\nnucellus\nnucha\nnuchae\nnuchal\nnuchals\nnucleal\nnuclear\nnuclease\nnucleases\nnucleate\nnucleated\nnucleates\nnucleating\nnucleation\nnucleations\nnucleator\nnucleators\nnuclei\nnuclein\nnucleins\nnucleole\nnucleoles\nnucleoli\nnucleon\nnucleonic\nnucleonics\nnucleons\nnucleus\nnucleuses\nnuclide\nnuclides\nnuclidic\nnude\nnudely\nnudeness\nnudenesses\nnuder\nnudes\nnudest\nnudge\nnudged\nnudger\nnudgers\nnudges\nnudging\nnudicaul\nnudie\nnudies\nnudism\nnudisms\nnudist\nnudists\nnudities\nnudity\nnudnick\nnudnicks\nnudnik\nnudniks\nnudzh\nnugatory\nnugget\nnuggets\nnuggety\nnuisance\nnuisances\nnuke\nnuked\nnukes\nnull\nnullah\nnullahs\nnulled\nnullification\nnullifications\nnullified\nnullifier\nnullifiers\nnullifies\nnullify\nnullifying\nnulling\nnullities\nnullity\nnulls\nnumb\nnumbed\nnumber\nnumbered\nnumberer\nnumberers\nnumbering\nnumberless\nnumbers\nnumbest\nnumbfish\nnumbfishes\nnumbing\nnumbingly\nnumbles\nnumbly\nnumbness\nnumbnesses\nnumbs\nnumbskull\nnumbskulls\nnumen\nnumerable\nnumeral\nnumerals\nnumerary\nnumerate\nnumerated\nnumerates\nnumerating\nnumeration\nnumerations\nnumerator\nnumerators\nnumeric\nnumerical\nnumerically\nnumerics\nnumerological\nnumerologist\nnumerologists\nnumerology\nnumerous\nnumerously\nnumerousness\nnumina\nnuminous\nnuminouses\nnumismatic\nnumismatics\nnumismatist\nnumismatists\nnummary\nnummular\nnumskull\nnumskulls\nnun\nnuncio\nnuncios\nnuncle\nnuncles\nnunlike\nnunneries\nnunnery\nnunnish\nnuns\nnuptial\nnuptials\nnurd\nnurds\nnurl\nnurled\nnurling\nnurls\nnurse\nnursed\nnursemaid\nnursemaids\nnurser\nnurseries\nnursers\nnursery\nnurseryman\nnurserymen\nnurses\nnursing\nnursings\nnursling\nnurslings\nnurture\nnurtured\nnurturer\nnurturers\nnurtures\nnurturing\nnus\nnut\nnutant\nnutate\nnutated\nnutates\nnutating\nnutation\nnutations\nnutbrown\nnutcracker\nnutcrackers\nnutgall\nnutgalls\nnutgrass\nnutgrasses\nnuthatch\nnuthatches\nnuthouse\nnuthouses\nnutlet\nnutlets\nnutlike\nnutmeat\nnutmeats\nnutmeg\nnutmegs\nnutpick\nnutpicks\nnutria\nnutrias\nnutrient\nnutrients\nnutriment\nnutriments\nnutrition\nnutritional\nnutritionally\nnutritionist\nnutritionists\nnutritions\nnutritious\nnutritiously\nnutritiousness\nnutritive\nnutritively\nnuts\nnutsedge\nnutsedges\nnutshell\nnutshells\nnutsy\nnutted\nnutter\nnutters\nnuttier\nnuttiest\nnuttily\nnuttiness\nnutting\nnutty\nnutwood\nnutwoods\nnuzzle\nnuzzled\nnuzzles\nnuzzling\nnyala\nnyalas\nnylghai\nnylghais\nnylghau\nnylghaus\nnylon\nnylons\nnymph\nnympha\nnymphae\nnymphal\nnymphean\nnymphet\nnymphets\nnympho\nnymphomania\nnymphomaniac\nnymphomaniacal\nnymphomaniacs\nnymphos\nnymphs\no\noaf\noafish\noafishly\noafishness\noafs\noak\noaken\noaklike\noakmoss\noakmosses\noaks\noakum\noakums\noar\noared\noarfish\noarfishes\noaring\noarless\noarlike\noarlock\noarlocks\noars\noarsman\noarsmen\noases\noasis\noast\noasts\noat\noatcake\noatcakes\noaten\noater\noaters\noath\noaths\noatlike\noatmeal\noatmeals\noats\noaves\nobbligato\nobbligatos\nobduracies\nobduracy\nobdurate\nobdurately\nobdurateness\nobe\nobeah\nobeahism\nobeahisms\nobeahs\nobedience\nobediences\nobedient\nobediently\nobeisance\nobeisances\nobeisant\nobeisantly\nobeli\nobelia\nobelias\nobelise\nobelised\nobelises\nobelising\nobelisk\nobelisks\nobelism\nobelisms\nobelize\nobelized\nobelizes\nobelizing\nobelus\nobes\nobese\nobesely\nobesities\nobesity\nobey\nobeyable\nobeyed\nobeyer\nobeyers\nobeying\nobeys\nobfuscate\nobfuscated\nobfuscates\nobfuscating\nobfuscation\nobfuscations\nobfuscatory\nobi\nobia\nobias\nobiism\nobiisms\nobis\nobit\nobits\nobituaries\nobituary\nobject\nobjected\nobjectification\nobjectifications\nobjectified\nobjectifies\nobjectify\nobjectifying\nobjecting\nobjection\nobjectionable\nobjectionableness\nobjectionably\nobjections\nobjective\nobjectively\nobjectiveness\nobjectives\nobjectivism\nobjectivist\nobjectivistic\nobjectivists\nobjectivities\nobjectivity\nobjectless\nobjector\nobjectors\nobjects\nobjurgate\nobjurgated\nobjurgates\nobjurgating\nobjurgation\nobjurgations\nobjurgatory\noblast\noblasti\noblasts\noblate\noblately\noblates\noblation\noblations\noblatory\nobligate\nobligated\nobligates\nobligati\nobligating\nobligation\nobligations\nobligato\nobligatorily\nobligatory\nobligatos\noblige\nobliged\nobligee\nobligees\nobliger\nobligers\nobliges\nobliging\nobligingly\nobligingness\nobligor\nobligors\noblique\nobliqued\nobliquely\nobliqueness\nobliques\nobliquing\nobliquities\nobliquity\nobliterate\nobliterated\nobliterates\nobliterating\nobliteration\nobliterations\nobliterative\nobliterator\nobliterators\noblivion\noblivions\noblivious\nobliviously\nobliviousness\noblong\noblongly\noblongs\nobloquies\nobloquy\nobnoxious\nobnoxiously\nobnoxiousness\noboe\noboes\noboist\noboists\nobol\nobole\noboles\noboli\nobols\nobolus\nobovate\nobovoid\nobscene\nobscenely\nobscener\nobscenest\nobscenities\nobscenity\nobscurantist\nobscurantists\nobscure\nobscured\nobscurely\nobscureness\nobscurer\nobscures\nobscurest\nobscuring\nobscurities\nobscurity\nobsequies\nobsequious\nobsequiously\nobsequiousness\nobsequy\nobservable\nobservably\nobservance\nobservances\nobservant\nobservantly\nobservation\nobservational\nobservations\nobservatories\nobservatory\nobserve\nobserved\nobserver\nobservers\nobserves\nobserving\nobservingly\nobsess\nobsessed\nobsesses\nobsessing\nobsession\nobsessional\nobsessions\nobsessive\nobsessively\nobsessiveness\nobsessor\nobsessors\nobsidian\nobsidians\nobsolesce\nobsolesced\nobsolescence\nobsolescences\nobsolescent\nobsolescently\nobsolesces\nobsolescing\nobsolete\nobsoleted\nobsoletely\nobsoleteness\nobsoletes\nobsoleting\nobstacle\nobstacles\nobstetric\nobstetrical\nobstetrically\nobstetrician\nobstetricians\nobstetrics\nobstinacies\nobstinacy\nobstinate\nobstinately\nobstinateness\nobstreperous\nobstreperously\nobstreperousness\nobstruct\nobstructed\nobstructing\nobstruction\nobstructionism\nobstructionist\nobstructionistic\nobstructionists\nobstructions\nobstructive\nobstructiveness\nobstructor\nobstructors\nobstructs\nobtain\nobtainable\nobtained\nobtainer\nobtainers\nobtaining\nobtainment\nobtainments\nobtains\nobtect\nobtected\nobtest\nobtested\nobtesting\nobtests\nobtrude\nobtruded\nobtruder\nobtruders\nobtrudes\nobtruding\nobtrusion\nobtrusions\nobtrusive\nobtrusively\nobtrusiveness\nobtund\nobtunded\nobtunding\nobtunds\nobturate\nobturated\nobturates\nobturating\nobtuse\nobtusely\nobtuseness\nobtuser\nobtusest\nobverse\nobversely\nobverses\nobvert\nobverted\nobverting\nobverts\nobviable\nobviate\nobviated\nobviates\nobviating\nobviation\nobviations\nobviator\nobviators\nobvious\nobviously\nobviousness\nobvolute\noca\nocarina\nocarinas\nocas\noccasion\noccasional\noccasionally\noccasioned\noccasioning\noccasions\noccident\noccidents\noccipita\noccipital\nocciput\nocciputs\nocclude\noccluded\noccludes\noccluding\nocclusal\nocclusion\nocclusions\nocclusive\noccult\noccultation\noccultations\nocculted\nocculter\nocculters\nocculting\noccultism\noccultisms\noccultist\noccultists\noccultly\noccults\noccupancies\noccupancy\noccupant\noccupants\noccupation\noccupational\noccupationally\noccupations\noccupied\noccupier\noccupiers\noccupies\noccupy\noccupying\noccur\noccurred\noccurrence\noccurrences\noccurrent\noccurring\noccurs\nocean\noceanfront\noceanfronts\noceangoing\noceanic\noceanographer\noceanographers\noceanographic\noceanographical\noceanography\noceanology\noceans\nocellar\nocellate\nocelli\nocellus\noceloid\nocelot\nocelots\nocher\nochered\nochering\nocherous\nochers\nochery\nochone\nochre\nochrea\nochreae\nochred\nochreous\nochres\nochring\nochroid\nochrous\nochry\nocker\nocotillo\nocotillos\nocrea\nocreae\nocreate\noctad\noctadic\noctads\noctagon\noctagonal\noctagonally\noctagons\noctahedra\noctahedral\noctahedron\noctahedrons\noctal\noctan\noctane\noctanes\noctangle\noctangles\noctant\noctantal\noctants\noctarchies\noctarchy\noctaval\noctave\noctaves\noctavo\noctavos\noctet\noctets\noctette\noctettes\noctogenarian\noctogenarians\noctonaries\noctonary\noctopi\noctopod\noctopodes\noctopods\noctopus\noctopuses\noctoroon\noctoroons\noctroi\noctrois\noctuple\noctupled\noctuples\noctuplet\noctuplets\noctuplex\noctupling\noctuply\noctyl\noctyls\nocular\nocularly\noculars\noculist\noculists\nod\nodalisk\nodalisks\nodd\noddball\noddballs\nodder\noddest\noddish\noddities\noddity\noddly\noddment\noddments\noddness\noddnesses\nodds\node\nodea\nodeon\nodeons\nodes\nodeum\nodic\nodious\nodiously\nodiousness\nodist\nodium\nodiums\nodograph\nodographs\nodometer\nodometers\nodometries\nodometry\nodonate\nodonates\nodontoid\nodontoids\nodor\nodorant\nodorants\nodored\nodorful\nodoriferous\nodoriferously\nodoriferousness\nodorize\nodorized\nodorizes\nodorizing\nodorless\nodorous\nodorously\nodorousness\nodors\nodour\nodourful\nodours\nods\nodyl\nodyle\nodyles\nodyls\nodyssey\nodysseys\noe\noecologies\noecology\noedema\noedemas\noedemata\noedipal\noedipean\noeillade\noeillades\noenologies\noenology\noenomel\noenomels\noerloaded\noersted\noersteds\noes\noestrin\noestrins\noestriol\noestriols\noestrone\noestrones\noestrous\noestrum\noestrums\noestrus\noestruses\noeuvre\noeuvres\nof\nofay\nofays\noff\noffal\noffals\noffbeat\noffbeats\noffcast\noffcasts\noffed\noffence\noffences\noffend\noffended\noffender\noffenders\noffending\noffends\noffense\noffenseless\noffenses\noffensive\noffensively\noffensiveness\noffer\noffered\nofferer\nofferers\noffering\nofferings\nofferor\nofferors\noffers\noffertories\noffertory\noffhand\noffhanded\noffhandedly\noffhandedness\noffice\nofficeholder\nofficeholders\nofficer\nofficered\nofficering\nofficers\noffices\nofficial\nofficialism\nofficially\nofficials\nofficiary\nofficiate\nofficiated\nofficiates\nofficiating\nofficiation\nofficiations\nofficinal\nofficinally\nofficious\nofficiously\nofficiousness\noffing\noffings\noffish\noffishly\noffishness\noffload\noffloaded\noffloading\noffloads\noffprint\noffprinted\noffprinting\noffprints\noffs\noffset\noffsets\noffsetting\noffshoot\noffshoots\noffshore\noffside\noffspring\noffsprings\noffstage\noft\noften\noftener\noftenest\nofter\noftest\nofttimes\nogam\nogams\nogdoad\nogdoads\nogee\nogees\nogham\noghamic\noghamist\noghamists\noghams\nogival\nogive\nogives\nogle\nogled\nogler\noglers\nogles\nogling\nogre\nogreish\nogreism\nogreisms\nogres\nogress\nogresses\nogrish\nogrishly\nogrism\nogrisms\noh\nohed\nohia\nohias\nohing\nohm\nohmage\nohmages\nohmic\nohmmeter\nohmmeters\nohms\noho\nohs\noidia\noidium\noil\noilbird\noilbirds\noilcamp\noilcamps\noilcan\noilcans\noilcloth\noilcloths\noilcup\noilcups\noiled\noiler\noilers\noilhole\noilholes\noilier\noiliest\noilily\noiliness\noilinesses\noiling\noilman\noilmen\noilpaper\noilpapers\noilproof\noils\noilseed\noilseeds\noilskin\noilskins\noilstone\noilstones\noiltight\noilway\noilways\noily\noink\noinked\noinking\noinks\noinologies\noinology\noinomel\noinomels\nointment\nointments\noiticica\noiticicas\noka\nokapi\nokapis\nokas\nokay\nokayed\nokaying\nokays\noke\nokeh\nokehs\nokes\nokeydoke\nokra\nokras\nold\nolden\nolder\noldest\noldie\noldies\noldish\noldness\noldnesses\nolds\noldster\noldsters\noldstyle\noldstyles\noldwife\noldwives\noldy\nole\nolea\noleaginous\noleander\noleanders\noleaster\noleasters\noleate\noleates\nolefin\nolefine\nolefines\nolefinic\nolefins\noleic\nolein\noleine\noleines\noleins\noleo\noleomargarine\noleomargarines\noleos\noles\noleum\noleums\nolfaction\nolfactory\nolibanum\nolibanums\noligarch\noligarchic\noligarchical\noligarchies\noligarchs\noligarchy\noligomer\noligomers\noligopolies\noligopoly\noligopsonies\noligopsony\nolio\nolios\nolivary\nolive\nolives\nolivine\nolivines\nolivinic\nolla\nollas\nollygagged\nologies\nologist\nologists\nology\nolympiad\nolympiads\nom\nomasa\nomasum\nomber\nombers\nombre\nombres\nombudsman\nombudsmen\nomega\nomegas\nomelet\nomelets\nomelette\nomelettes\nomen\nomened\nomening\nomens\nomenta\nomental\nomentum\nomentums\nomer\nomers\nomicron\nomicrons\nomikron\nomikrons\nominous\nominously\nominousness\nomissible\nomission\nomissions\nomissive\nomit\nomits\nomitted\nomitting\nomniarch\nomniarchs\nomnibus\nomnibuses\nomnifarious\nomnific\nomniform\nomnimode\nomnipotence\nomnipotences\nomnipotent\nomnipotently\nomnipresence\nomnipresent\nomniscience\nomniscient\nomnisciently\nomnivora\nomnivore\nomnivores\nomnivorous\nomnivorously\nomophagies\nomophagy\nomphali\nomphalos\noms\non\nonager\nonagers\nonagri\nonanism\nonanisms\nonanist\nonanists\nonce\noncidium\noncidiums\noncologies\noncology\noncoming\noncomings\nondogram\nondograms\none\nonefold\noneiric\noneness\nonenesses\nonerier\noneriest\nonerous\nonerously\nonerousness\nonery\nones\noneself\nonetime\nongoing\nonion\nonions\nonionskin\nonionskins\nonium\nonlooker\nonlookers\nonlooking\nonly\nonomatopoeia\nonomatopoeic\nonomatopoeically\nonomatopoetically\nonrush\nonrushes\nonrushing\nons\nonset\nonsets\nonshore\nonside\nonslaught\nonslaughts\nonstage\nontic\nonto\nontogenies\nontogeny\nontological\nontologies\nontologist\nontologists\nontology\nonus\nonuses\nonward\nonwards\nonyx\nonyxes\noocyst\noocysts\noocyte\noocytes\noodles\noodlins\noogamete\noogametes\noogamies\noogamous\noogamy\noogenies\noogeny\noogonia\noogonial\noogonium\noogoniums\nooh\noohed\noohing\noohs\noolachan\noolachans\noolite\noolites\noolith\nooliths\noolitic\noologic\noologies\noologist\noologists\noology\noolong\noolongs\noomiac\noomiack\noomiacks\noomiacs\noomiak\noomiaks\noomph\noomphs\noophyte\noophytes\noophytic\noops\noorali\nooralis\noorie\noosperm\noosperms\noosphere\noospheres\noospore\noospores\noosporic\noot\nootheca\noothecae\noothecal\nootid\nootids\noots\nooze\noozed\noozes\noozier\nooziest\noozily\nooziness\noozinesses\noozing\noozy\nop\nopacified\nopacifies\nopacify\nopacifying\nopacities\nopacity\nopah\nopahs\nopal\nopalesce\nopalesced\nopalescence\nopalescences\nopalescent\nopalesces\nopalescing\nopaline\nopalines\nopals\nopaque\nopaqued\nopaquely\nopaqueness\nopaquer\nopaques\nopaquest\nopaquing\nope\noped\nopen\nopenable\nopened\nopener\nopeners\nopenest\nopenhanded\nopenhandedly\nopenhandedness\nopenhearted\nopenheartedly\nopening\nopenings\nopenly\nopenness\nopennesses\nopens\nopenwork\nopenworks\nopera\noperabilities\noperability\noperable\noperably\noperand\noperands\noperant\noperants\noperas\noperate\noperated\noperates\noperatic\noperatically\noperatics\noperating\noperation\noperational\noperationalism\noperationally\noperations\noperative\noperatively\noperativeness\noperatives\noperator\noperators\nopercele\noperceles\nopercula\nopercule\nopercules\noperetta\noperettas\noperon\noperons\noperose\nopes\nophidian\nophidians\nophite\nophites\nophitic\nophthalmological\nophthalmologist\nophthalmologists\nophthalmology\nophthalmoscope\nophthalmoscopes\nophthalmoscopic\nopiate\nopiated\nopiates\nopiating\nopine\nopined\nopines\noping\nopining\nopinion\nopinionated\nopinionatedly\nopinionative\nopinionatively\nopinionativeness\nopinioned\nopinions\nopium\nopiumism\nopiumisms\nopiums\nopossum\nopossums\noppidan\noppidans\noppilant\noppilate\noppilated\noppilates\noppilating\nopponent\nopponents\nopportune\nopportunely\nopportuneness\nopportunism\nopportunist\nopportunistic\nopportunistically\nopportunists\nopportunities\nopportunity\nopposabilities\nopposability\nopposable\noppose\nopposed\nopposer\nopposers\nopposes\nopposing\nopposite\noppositely\noppositeness\nopposites\nopposition\noppositional\noppositionist\noppositionists\noppositions\noppress\noppressed\noppresses\noppressing\noppression\noppressions\noppressive\noppressively\noppressiveness\noppressor\noppressors\nopprobrious\nopprobriously\nopprobriousness\nopprobrium\nopprobriums\noppugn\noppugned\noppugner\noppugners\noppugning\noppugns\nops\nopsin\nopsins\nopsonic\nopsonified\nopsonifies\nopsonify\nopsonifying\nopsonin\nopsonins\nopsonize\nopsonized\nopsonizes\nopsonizing\nopt\noptative\noptatives\nopted\noptic\noptical\noptically\noptician\nopticians\nopticist\nopticists\noptics\noptima\noptimal\noptimally\noptime\noptimes\noptimise\noptimised\noptimises\noptimising\noptimism\noptimisms\noptimist\noptimistic\noptimistically\noptimists\noptimization\noptimizations\noptimize\noptimized\noptimizes\noptimizing\noptimum\noptimuma\noptimums\nopting\noption\noptional\noptionally\noptionals\noptioned\noptionee\noptionees\noptioning\noptions\noptometrist\noptometrists\noptometry\nopts\nopulence\nopulences\nopulencies\nopulency\nopulent\nopulently\nopuntia\nopuntias\nopus\nopuscula\nopuscule\nopuscules\nopuses\noquassa\noquassas\nor\nora\norach\norache\noraches\noracle\noracles\noracular\noracularly\norad\noral\noralities\norality\norally\norals\norang\norange\norangeade\norangeries\norangery\noranges\norangewood\norangewoods\norangey\norangier\norangiest\norangish\norangs\norangy\norate\norated\norates\norating\noration\norations\norator\noratorical\noratorically\noratories\noratorio\noratorios\norators\noratory\noratress\noratresses\noratrices\noratrix\norb\norbed\norbicular\norbiculate\norbing\norbit\norbital\norbitals\norbited\norbiter\norbiters\norbiting\norbits\norbs\norby\norc\norca\norcas\norcein\norceins\norchard\norchardist\norchardists\norchards\norchestra\norchestral\norchestrally\norchestras\norchestrate\norchestrated\norchestrates\norchestrating\norchestration\norchestrations\norchestrator\norchestrators\norchid\norchids\norchil\norchils\norchis\norchises\norchitic\norchitis\norchitises\norcin\norcinol\norcinols\norcins\norcs\nordain\nordained\nordainer\nordainers\nordaining\nordainment\nordainments\nordains\nordeal\nordeals\norder\nordered\norderer\norderers\nordering\norderless\norderlies\norderliness\norderly\norders\nordinal\nordinals\nordinance\nordinances\nordinand\nordinands\nordinarier\nordinaries\nordinariest\nordinarily\nordinariness\nordinary\nordinate\nordinates\nordination\nordinations\nordines\nordnance\nordnances\nordo\nordos\nordure\nordures\nore\noread\noreads\norectic\norective\noregano\noreganos\noreide\noreides\nores\norfray\norfrays\norgan\norgana\norgandie\norgandies\norgandy\norganic\norganically\norganicities\norganicity\norganics\norganise\norganised\norganises\norganising\norganism\norganismic\norganisms\norganist\norganists\norganizable\norganization\norganizational\norganizationally\norganizations\norganize\norganized\norganizer\norganizers\norganizes\norganizing\norganon\norganons\norgans\norganum\norganums\norganza\norganzas\norgasm\norgasmic\norgasms\norgastic\norgeat\norgeats\norgiac\norgic\norgies\norgulous\norgy\noribatid\noribatids\noribi\noribis\noriel\noriels\norient\noriental\norientally\norientals\norientate\norientated\norientates\norientating\norientation\norientations\noriented\norienting\norients\norifice\norifices\norigami\norigamis\norigan\norigans\noriganum\noriganums\norigin\noriginal\noriginalities\noriginality\noriginally\noriginals\noriginate\noriginated\noriginates\noriginating\norigination\noriginations\noriginative\noriginator\noriginators\norigins\norinasal\norinasals\noriole\norioles\norison\norisons\norle\norles\norlop\norlops\normer\normers\normolu\normolus\nornament\nornamental\nornamentally\nornamentals\nornamentation\nornamentations\nornamented\nornamenting\nornaments\nornate\nornately\nornateness\nornerier\norneriest\norneriness\nornery\nornis\nornithes\nornithic\nornithological\nornithologist\nornithologists\nornithology\norogenic\norogenies\norogeny\noroide\noroides\norologies\norology\norometer\norometers\norotund\norotundities\norotundity\norphan\norphanage\norphanages\norphaned\norphanhood\norphaning\norphans\norphic\norphical\norphrey\norphreys\norpiment\norpiments\norpin\norpine\norpines\norpins\norra\norreries\norrery\norrice\norrices\norris\norrises\nors\nort\northicon\northicons\northo\northoclase\northodontia\northodontic\northodontics\northodontist\northodontists\northodox\northodoxes\northodoxies\northodoxy\northoepies\northoepy\northogonal\northogonalities\northogonality\northogonally\northographic\northographically\northographies\northography\northopedic\northopedically\northopedics\northopedist\northopedists\northotic\nortolan\nortolans\norts\noryx\noryxes\norzo\norzos\nos\nosar\noscillate\noscillated\noscillates\noscillating\noscillation\noscillations\noscillator\noscillators\noscillatory\noscilloscope\noscilloscopes\noscine\noscines\noscinine\noscitant\noscula\nosculant\noscular\nosculate\nosculated\nosculates\nosculating\nosculation\nosculations\noscule\noscules\nosculum\nose\noses\nosier\nosiers\nosmatic\nosmic\nosmious\nosmium\nosmiums\nosmol\nosmolal\nosmolar\nosmols\nosmose\nosmosed\nosmoses\nosmosing\nosmosis\nosmotic\nosmotically\nosmous\nosmund\nosmunda\nosmundas\nosmunds\nosnaburg\nosnaburgs\nosprey\nospreys\nossa\nossein\nosseins\nosseous\nossia\nossicle\nossicles\nossific\nossification\nossifications\nossified\nossifier\nossifiers\nossifies\nossify\nossifying\nossuaries\nossuary\nosteal\nosteitic\nosteitides\nosteitis\nostensible\nostensibly\nostensive\nostensively\nostentation\nostentations\nostentatious\nostentatiously\nostentatiousness\nosteoid\nosteoids\nosteoma\nosteomas\nosteomata\nosteopath\nosteopathic\nosteopathically\nosteopaths\nosteopathy\nostia\nostiaries\nostiary\nostinato\nostinatos\nostiolar\nostiole\nostioles\nostium\nostler\nostlers\nostmark\nostmarks\nostomies\nostomy\nostoses\nostosis\nostosises\nostracism\nostracisms\nostracize\nostracized\nostracizes\nostracizing\nostracod\nostracods\nostrich\nostriches\notalgia\notalgias\notalgic\notalgies\notalgy\nother\notherness\nothers\notherwise\notic\noties\notiose\notiosely\notiosities\notiosity\notitic\notitides\notitis\notocyst\notocysts\notolith\notoliths\notologies\notology\notoscope\notoscopes\notoscopies\notoscopy\nottar\nottars\nottava\nottavas\notter\notters\notto\nottoman\nottomans\nottos\nouabain\nouabains\noubliette\noubliettes\nouch\nouches\noud\nouds\nought\noughted\noughting\noughts\nouistiti\nouistitis\nounce\nounces\nouph\nouphe\nouphes\nouphs\nour\nourang\nourangs\nourari\nouraris\nourebi\nourebis\nourie\nours\nourself\nourselves\nousel\nousels\noust\nousted\nouster\nousters\nousting\nousts\nout\noutact\noutacted\noutacting\noutacts\noutadd\noutadded\noutadding\noutadds\noutage\noutages\noutargue\noutargued\noutargues\noutarguing\noutask\noutasked\noutasking\noutasks\noutate\noutback\noutbacks\noutbake\noutbaked\noutbakes\noutbaking\noutbark\noutbarked\noutbarking\noutbarks\noutbawl\noutbawled\noutbawling\noutbawls\noutbeam\noutbeamed\noutbeaming\noutbeams\noutbeg\noutbegged\noutbegging\noutbegs\noutbid\noutbidden\noutbidding\noutbids\noutblaze\noutblazed\noutblazes\noutblazing\noutbleat\noutbleated\noutbleating\noutbleats\noutbless\noutblessed\noutblesses\noutblessing\noutbloom\noutbloomed\noutblooming\noutblooms\noutbluff\noutbluffed\noutbluffing\noutbluffs\noutblush\noutblushed\noutblushes\noutblushing\noutboard\noutboards\noutboast\noutboasted\noutboasting\noutboasts\noutbound\noutbox\noutboxed\noutboxes\noutboxing\noutbrag\noutbragged\noutbragging\noutbrags\noutbrave\noutbraved\noutbraves\noutbraving\noutbreak\noutbreaks\noutbred\noutbreed\noutbreeding\noutbreeds\noutbribe\noutbribed\noutbribes\noutbribing\noutbuild\noutbuilding\noutbuildings\noutbuilds\noutbuilt\noutbullied\noutbullies\noutbully\noutbullying\noutburn\noutburned\noutburning\noutburns\noutburnt\noutburst\noutbursts\noutby\noutbye\noutcaper\noutcapered\noutcapering\noutcapers\noutcast\noutcaste\noutcastes\noutcasts\noutcatch\noutcatches\noutcatching\noutcaught\noutcavil\noutcaviled\noutcaviling\noutcavilled\noutcavilling\noutcavils\noutcharm\noutcharmed\noutcharming\noutcharms\noutcheat\noutcheated\noutcheating\noutcheats\noutchid\noutchidden\noutchide\noutchided\noutchides\noutchiding\noutclass\noutclassed\noutclasses\noutclassing\noutclimb\noutclimbed\noutclimbing\noutclimbs\noutclomb\noutcome\noutcomes\noutcook\noutcooked\noutcooking\noutcooks\noutcrawl\noutcrawled\noutcrawling\noutcrawls\noutcried\noutcries\noutcrop\noutcropped\noutcropping\noutcrops\noutcross\noutcrossed\noutcrosses\noutcrossing\noutcrow\noutcrowed\noutcrowing\noutcrows\noutcry\noutcrying\noutcurse\noutcursed\noutcurses\noutcursing\noutcurve\noutcurves\noutdance\noutdanced\noutdances\noutdancing\noutdare\noutdared\noutdares\noutdaring\noutdate\noutdated\noutdatedness\noutdates\noutdating\noutdid\noutdistance\noutdistanced\noutdistances\noutdistancing\noutdo\noutdodge\noutdodged\noutdodges\noutdodging\noutdoer\noutdoers\noutdoes\noutdoing\noutdone\noutdoor\noutdoors\noutdrank\noutdraw\noutdrawing\noutdrawn\noutdraws\noutdream\noutdreamed\noutdreaming\noutdreams\noutdreamt\noutdress\noutdressed\noutdresses\noutdressing\noutdrew\noutdrink\noutdrinking\noutdrinks\noutdrive\noutdriven\noutdrives\noutdriving\noutdrop\noutdropped\noutdropping\noutdrops\noutdrove\noutdrunk\nouteat\nouteate\nouteaten\nouteating\nouteats\noutecho\noutechoed\noutechoes\noutechoing\nouted\nouter\noutermost\nouters\nouterwear\noutfable\noutfabled\noutfables\noutfabling\noutface\noutfaced\noutfaces\noutfacing\noutfall\noutfalls\noutfast\noutfasted\noutfasting\noutfasts\noutfawn\noutfawned\noutfawning\noutfawns\noutfeast\noutfeasted\noutfeasting\noutfeasts\noutfeel\noutfeeling\noutfeels\noutfelt\noutfield\noutfielder\noutfielders\noutfields\noutfight\noutfighting\noutfights\noutfind\noutfinding\noutfinds\noutfire\noutfired\noutfires\noutfiring\noutfit\noutfits\noutfitted\noutfitter\noutfitters\noutfitting\noutflank\noutflanked\noutflanking\noutflanks\noutflew\noutflies\noutflow\noutflowed\noutflowing\noutflown\noutflows\noutfly\noutflying\noutfool\noutfooled\noutfooling\noutfools\noutfoot\noutfooted\noutfooting\noutfoots\noutfought\noutfound\noutfox\noutfoxed\noutfoxes\noutfoxing\noutfrown\noutfrowned\noutfrowning\noutfrowns\noutgain\noutgained\noutgaining\noutgains\noutgas\noutgassed\noutgasses\noutgassing\noutgave\noutgive\noutgiven\noutgives\noutgiving\noutglare\noutglared\noutglares\noutglaring\noutglow\noutglowed\noutglowing\noutglows\noutgnaw\noutgnawed\noutgnawing\noutgnawn\noutgnaws\noutgo\noutgoes\noutgoing\noutgoings\noutgone\noutgrew\noutgrin\noutgrinned\noutgrinning\noutgrins\noutgroup\noutgroups\noutgrow\noutgrowing\noutgrown\noutgrows\noutgrowth\noutgrowths\noutguess\noutguessed\noutguesses\noutguessing\noutguide\noutguided\noutguides\noutguiding\noutgun\noutgunned\noutgunning\noutguns\noutgush\noutgushes\nouthaul\nouthauls\nouthear\noutheard\nouthearing\nouthears\nouthit\nouthits\nouthitting\nouthouse\nouthouses\nouthowl\nouthowled\nouthowling\nouthowls\nouthumor\nouthumored\nouthumoring\nouthumors\nouting\noutings\noutjinx\noutjinxed\noutjinxes\noutjinxing\noutjump\noutjumped\noutjumping\noutjumps\noutjut\noutjuts\noutjutted\noutjutting\noutkeep\noutkeeping\noutkeeps\noutkept\noutkick\noutkicked\noutkicking\noutkicks\noutkiss\noutkissed\noutkisses\noutkissing\noutlaid\noutlain\noutland\noutlander\noutlanders\noutlandish\noutlandishly\noutlandishness\noutlands\noutlast\noutlasted\noutlasting\noutlasts\noutlaugh\noutlaughed\noutlaughing\noutlaughs\noutlaw\noutlawed\noutlawing\noutlawries\noutlawry\noutlaws\noutlay\noutlaying\noutlays\noutleap\noutleaped\noutleaping\noutleaps\noutleapt\noutlearn\noutlearned\noutlearning\noutlearns\noutlearnt\noutlet\noutlets\noutlie\noutlier\noutliers\noutlies\noutline\noutlined\noutlines\noutlining\noutlive\noutlived\noutliver\noutlivers\noutlives\noutliving\noutlook\noutlooks\noutlove\noutloved\noutloves\noutloving\noutlying\noutman\noutmaneuver\noutmaneuvered\noutmaneuvering\noutmaneuvers\noutmanned\noutmanning\noutmans\noutmarch\noutmarched\noutmarches\noutmarching\noutmatch\noutmatched\noutmatches\noutmatching\noutmode\noutmoded\noutmodes\noutmoding\noutmost\noutmove\noutmoved\noutmoves\noutmoving\noutnumber\noutnumbered\noutnumbering\noutnumbers\noutpace\noutpaced\noutpaces\noutpacing\noutpaint\noutpainted\noutpainting\noutpaints\noutpass\noutpassed\noutpasses\noutpassing\noutpatient\noutpatients\noutperform\noutperformed\noutperforming\noutperforms\noutpitied\noutpities\noutpity\noutpitying\noutplan\noutplanned\noutplanning\noutplans\noutplay\noutplayed\noutplaying\noutplays\noutplod\noutplodded\noutplodding\noutplods\noutpoint\noutpointed\noutpointing\noutpoints\noutpoll\noutpolled\noutpolling\noutpolls\noutport\noutports\noutpost\noutposts\noutpour\noutpoured\noutpouring\noutpourings\noutpours\noutpray\noutprayed\noutpraying\noutprays\noutpreen\noutpreened\noutpreening\noutpreens\noutpress\noutpressed\noutpresses\noutpressing\noutprice\noutpriced\noutprices\noutpricing\noutpull\noutpulled\noutpulling\noutpulls\noutpush\noutpushed\noutpushes\noutpushing\noutput\noutputs\noutputted\noutputting\noutquote\noutquoted\noutquotes\noutquoting\noutrace\noutraced\noutraces\noutracing\noutrage\noutraged\noutrageous\noutrageously\noutrageousness\noutrages\noutraging\noutraise\noutraised\noutraises\noutraising\noutran\noutrance\noutrances\noutrang\noutrange\noutranged\noutranges\noutranging\noutrank\noutranked\noutranking\noutranks\noutrave\noutraved\noutraves\noutraving\noutre\noutreach\noutreached\noutreaches\noutreaching\noutread\noutreading\noutreads\noutridden\noutride\noutrider\noutriders\noutrides\noutriding\noutright\noutrightly\noutring\noutringing\noutrings\noutrival\noutrivaled\noutrivaling\noutrivalled\noutrivalling\noutrivals\noutroar\noutroared\noutroaring\noutroars\noutrock\noutrocked\noutrocking\noutrocks\noutrode\noutroll\noutrolled\noutrolling\noutrolls\noutroot\noutrooted\noutrooting\noutroots\noutrun\noutrung\noutrunning\noutruns\noutrush\noutrushes\nouts\noutsail\noutsailed\noutsailing\noutsails\noutsang\noutsat\noutsavor\noutsavored\noutsavoring\noutsavors\noutsaw\noutscold\noutscolded\noutscolding\noutscolds\noutscore\noutscored\noutscores\noutscoring\noutscorn\noutscorned\noutscorning\noutscorns\noutsee\noutseeing\noutseen\noutsees\noutsell\noutselling\noutsells\noutsert\noutserts\noutserve\noutserved\noutserves\noutserving\noutset\noutsets\noutshame\noutshamed\noutshames\noutshaming\noutshine\noutshined\noutshines\noutshining\noutshone\noutshoot\noutshooting\noutshoots\noutshot\noutshout\noutshouted\noutshouting\noutshouts\noutside\noutsider\noutsiders\noutsides\noutsight\noutsights\noutsin\noutsing\noutsinging\noutsings\noutsinned\noutsinning\noutsins\noutsit\noutsits\noutsitting\noutsize\noutsized\noutsizes\noutskirt\noutskirts\noutsleep\noutsleeping\noutsleeps\noutslept\noutsmart\noutsmarted\noutsmarting\noutsmarts\noutsmile\noutsmiled\noutsmiles\noutsmiling\noutsmoke\noutsmoked\noutsmokes\noutsmoking\noutsnore\noutsnored\noutsnores\noutsnoring\noutsoar\noutsoared\noutsoaring\noutsoars\noutsold\noutsole\noutsoles\noutspan\noutspanned\noutspanning\noutspans\noutspeak\noutspeaking\noutspeaks\noutspell\noutspelled\noutspelling\noutspells\noutspelt\noutspend\noutspending\noutspends\noutspent\noutspoke\noutspoken\noutspokenly\noutspokenness\noutspread\noutspreading\noutspreads\noutstand\noutstanding\noutstandingly\noutstands\noutstare\noutstared\noutstares\noutstaring\noutstart\noutstarted\noutstarting\noutstarts\noutstate\noutstated\noutstates\noutstating\noutstation\noutstations\noutstay\noutstayed\noutstaying\noutstays\noutsteer\noutsteered\noutsteering\noutsteers\noutstood\noutstretch\noutstretched\noutstretches\noutstretching\noutstrip\noutstripped\noutstripping\noutstrips\noutstudied\noutstudies\noutstudy\noutstudying\noutstunt\noutstunted\noutstunting\noutstunts\noutsulk\noutsulked\noutsulking\noutsulks\noutsung\noutswam\noutsware\noutswear\noutswearing\noutswears\noutswim\noutswimming\noutswims\noutswore\noutsworn\noutswum\nouttake\nouttakes\nouttalk\nouttalked\nouttalking\nouttalks\nouttask\nouttasked\nouttasking\nouttasks\nouttell\nouttelling\nouttells\noutthank\noutthanked\noutthanking\noutthanks\noutthink\noutthinking\noutthinks\noutthought\noutthrew\noutthrob\noutthrobbed\noutthrobbing\noutthrobs\noutthrow\noutthrowing\noutthrown\noutthrows\nouttold\nouttower\nouttowered\nouttowering\nouttowers\nouttrade\nouttraded\nouttrades\nouttrading\nouttrick\nouttricked\nouttricking\nouttricks\nouttrot\nouttrots\nouttrotted\nouttrotting\nouttrump\nouttrumped\nouttrumping\nouttrumps\noutturn\noutturns\noutvalue\noutvalued\noutvalues\noutvaluing\noutvaunt\noutvaunted\noutvaunting\noutvaunts\noutvoice\noutvoiced\noutvoices\noutvoicing\noutvote\noutvoted\noutvotes\noutvoting\noutwait\noutwaited\noutwaiting\noutwaits\noutwalk\noutwalked\noutwalking\noutwalks\noutwar\noutward\noutwardly\noutwardness\noutwards\noutwarred\noutwarring\noutwars\noutwash\noutwashes\noutwaste\noutwasted\noutwastes\noutwasting\noutwatch\noutwatched\noutwatches\noutwatching\noutwear\noutwearied\noutwearies\noutwearing\noutwears\noutweary\noutwearying\noutweep\noutweeping\noutweeps\noutweigh\noutweighed\noutweighing\noutweighs\noutwent\noutwept\noutwhirl\noutwhirled\noutwhirling\noutwhirls\noutwile\noutwiled\noutwiles\noutwiling\noutwill\noutwilled\noutwilling\noutwills\noutwind\noutwinded\noutwinding\noutwinds\noutwish\noutwished\noutwishes\noutwishing\noutwit\noutwits\noutwitted\noutwitting\noutwore\noutwork\noutworked\noutworking\noutworks\noutworn\noutwrit\noutwrite\noutwrites\noutwriting\noutwritten\noutwrote\noutwrought\noutyell\noutyelled\noutyelling\noutyells\noutyelp\noutyelped\noutyelping\noutyelps\noutyield\noutyielded\noutyielding\noutyields\nouzel\nouzels\nouzo\nouzos\nova\noval\novalities\novality\novally\novalness\novalnesses\novals\novarial\novarian\novaries\novariole\novarioles\novaritides\novaritis\novary\novate\novately\novation\novations\noven\novenbird\novenbirds\novenlike\novenproof\novens\novenware\novenwares\nover\noverable\noverabundance\noverabundant\noverachiever\noverachievers\noveract\noveracted\noveracting\noveractive\noveracts\noverage\noverages\noverall\noveralls\noveranxious\noverapt\noverarch\noverarched\noverarches\noverarching\noverarm\noverate\noverawe\noverawed\noverawes\noverawing\noverbake\noverbaked\noverbakes\noverbaking\noverbalance\noverbalanced\noverbalances\noverbalancing\noverbear\noverbearing\noverbearingly\noverbears\noverbet\noverbets\noverbetted\noverbetting\noverbid\noverbidden\noverbidding\noverbids\noverbig\noverbite\noverbites\noverblew\noverblow\noverblowing\noverblown\noverblows\noverboard\noverbold\noverbook\noverbooked\noverbooking\noverbooks\noverbore\noverborn\noverborne\noverbought\noverbred\noverbusy\noverbuy\noverbuying\noverbuys\novercall\novercalled\novercalling\novercalls\novercame\novercapitalization\novercapitalizations\novercapitalize\novercapitalized\novercapitalizes\novercapitalizing\novercast\novercasting\novercasts\novercharge\novercharged\novercharges\novercharging\novercoat\novercoats\novercold\novercome\novercomer\novercomers\novercomes\novercoming\novercompensate\novercompensated\novercompensates\novercompensating\novercompensation\novercompensations\novercompensatory\noverconfidence\noverconfident\noverconfidently\novercook\novercooked\novercooking\novercooks\novercool\novercooled\novercooling\novercools\novercoy\novercram\novercrammed\novercramming\novercrams\novercrop\novercropped\novercropping\novercrops\novercrowd\novercrowded\novercrowding\novercrowds\noverdare\noverdared\noverdares\noverdaring\noverdear\noverdeck\noverdecked\noverdecking\noverdecks\noverdid\noverdo\noverdoer\noverdoers\noverdoes\noverdoing\noverdone\noverdose\noverdosed\noverdoses\noverdosing\noverdraft\noverdrafts\noverdraw\noverdrawing\noverdrawn\noverdraws\noverdress\noverdressed\noverdresses\noverdressing\noverdrew\noverdrive\noverdry\noverdue\noverdye\noverdyed\noverdyeing\noverdyes\novereasy\novereat\novereate\novereaten\novereating\novereats\novered\noveremphasis\noveremphasize\noveremphasized\noveremphasizes\noveremphasizing\noverestimate\noverestimated\noverestimates\noverestimating\noverestimation\noverestimations\noverexpose\noverexposed\noverexposes\noverexposing\noverexposure\noverexposures\noverextend\noverextended\noverextending\noverextends\noverfar\noverfast\noverfat\noverfear\noverfeared\noverfearing\noverfears\noverfed\noverfeed\noverfeeding\noverfeeds\noverfill\noverfilled\noverfilling\noverfills\noverfish\noverfished\noverfishes\noverfishing\noverflew\noverflies\noverflight\noverflights\noverflow\noverflowed\noverflowing\noverflown\noverflows\noverfly\noverflying\noverfond\noverfoul\noverfree\noverfull\novergarment\novergarments\novergild\novergilded\novergilding\novergilds\novergilt\novergird\novergirded\novergirding\novergirds\novergirt\noverglad\noverglaze\noverglazes\novergoad\novergoaded\novergoading\novergoads\novergrew\novergrow\novergrowing\novergrown\novergrows\novergrowth\noverhand\noverhanded\noverhanding\noverhands\noverhang\noverhanging\noverhangs\noverhard\noverhate\noverhated\noverhates\noverhating\noverhaul\noverhauled\noverhauling\noverhauls\noverhead\noverheads\noverheap\noverheaped\noverheaping\noverheaps\noverhear\noverheard\noverhearing\noverhears\noverheat\noverheated\noverheating\noverheats\noverheld\noverhigh\noverhold\noverholding\noverholds\noverholy\noverhope\noverhoped\noverhopes\noverhoping\noverhot\noverhung\noverhunt\noverhunted\noverhunting\noverhunts\noveridle\noverindulgence\noverindulgences\noverindulgent\noverinflate\noverinflated\noverinflates\noverinflating\novering\noverissue\noverissued\noverissues\noverissuing\noverjoy\noverjoyed\noverjoying\noverjoys\noverjust\noverkeen\noverkill\noverkilled\noverkilling\noverkills\noverkind\noverlade\noverladed\noverladen\noverlades\noverlading\noverlaid\noverlain\noverland\noverlands\noverlap\noverlapped\noverlapping\noverlaps\noverlate\noverlax\noverlay\noverlaying\noverlays\noverleaf\noverleap\noverleaped\noverleaping\noverleaps\noverleapt\noverlet\noverlets\noverletting\noverlewd\noverlie\noverlies\noverlive\noverlived\noverlives\noverliving\noverload\noverloaded\noverloading\noverloads\noverlong\noverlook\noverlooked\noverlooking\noverlooks\noverlord\noverlorded\noverlording\noverlords\noverloud\noverlove\noverloved\noverloves\noverloving\noverly\noverlying\noverman\novermanned\novermanning\novermans\novermany\novermeek\novermelt\novermelted\novermelting\novermelts\novermen\novermild\novermix\novermixed\novermixes\novermixing\novermuch\novermuches\novernear\noverneat\novernew\novernice\novernight\novernights\noverpaid\noverpass\noverpassed\noverpasses\noverpassing\noverpast\noverpay\noverpaying\noverpayment\noverpayments\noverpays\noverpert\noverplay\noverplayed\noverplaying\noverplays\noverplied\noverplies\noverplus\noverpluses\noverply\noverplying\noverpopulated\noverpopulation\noverpower\noverpowered\noverpowering\noverpoweringly\noverpowers\noverprice\noverpriced\noverprices\noverpricing\noverprint\noverprinted\noverprinting\noverprints\noverproduce\noverproduced\noverproduces\noverproducing\noverproduction\noverproductions\noverprotect\noverprotected\noverprotecting\noverprotection\noverprotective\noverprotects\noverran\noverrank\noverrash\noverrate\noverrated\noverrates\noverrating\noverreach\noverreached\noverreaches\noverreaching\noverreact\noverreacted\noverreacting\noverreaction\noverreactions\noverreacts\noverregulate\noverregulated\noverregulates\noverregulating\noverrich\noverridden\noverride\noverrides\noverriding\noverrife\noverripe\noverrode\noverrude\noverruff\noverruffed\noverruffing\noverruffs\noverrule\noverruled\noverrules\noverruling\noverrun\noverrunning\noverruns\novers\noversad\noversale\noversales\noversalt\noversalted\noversalting\noversalts\noversave\noversaved\noversaves\noversaving\noversaw\noversea\noverseas\noversee\noverseed\noverseeded\noverseeding\noverseeds\noverseeing\noverseen\noverseer\noverseers\noversees\noversell\noverselling\noversells\noverset\noversets\noversetting\noversew\noversewed\noversewing\noversewn\noversews\noversexed\novershadow\novershadowed\novershadowing\novershadows\novershoe\novershoes\novershoot\novershooting\novershoots\novershot\novershots\noversick\noverside\noversides\noversight\noversights\noversimplification\noversimplifications\noversimplified\noversimplifies\noversimplify\noversimplifying\noversize\noversized\noversizes\noverslaugh\noverslaughed\noverslaughing\noverslaughs\noversleep\noversleeping\noversleeps\noverslept\noverslip\noverslipped\noverslipping\noverslips\noverslipt\noverslow\noversoak\noversoaked\noversoaking\noversoaks\noversoft\noversold\noversoon\noversoul\noversouls\noverspend\noverspending\noverspends\noverspent\noverspin\noverspins\noverspread\noverspreading\noverspreads\noverstaff\noverstaffed\noverstaffing\noverstaffs\noverstate\noverstated\noverstatement\noverstatements\noverstates\noverstating\noverstay\noverstayed\noverstaying\noverstays\noverstep\noverstepped\noverstepping\noversteps\noverstir\noverstirred\noverstirring\noverstirs\noverstock\noverstocked\noverstocking\noverstocks\noversubscribe\noversubscribed\noversubscribes\noversubscribing\noversubscription\noversubscriptions\noversup\noversupped\noversupping\noversupplied\noversupplies\noversupply\noversupplying\noversups\noversure\novert\novertake\novertaken\novertakes\novertaking\novertame\novertart\novertask\novertasked\novertasking\novertasks\novertax\novertaxed\novertaxes\novertaxing\noverthin\noverthrew\noverthrow\noverthrowing\noverthrown\noverthrows\novertime\novertimed\novertimes\novertiming\novertire\novertired\novertires\novertiring\novertly\novertness\novertoil\novertoiled\novertoiling\novertoils\novertone\novertones\novertook\novertop\novertopped\novertopping\novertops\novertrim\novertrimmed\novertrimming\novertrims\noverture\novertured\novertures\noverturing\noverturn\noverturned\noverturning\noverturns\noverurge\noverurged\noverurges\noverurging\noveruse\noverused\noveruses\noverusing\noverview\noverviews\novervote\novervoted\novervotes\novervoting\noverwarm\noverwarmed\noverwarming\noverwarms\noverwary\noverweak\noverwear\noverwearing\noverwears\noverween\noverweened\noverweening\noverweens\noverweight\noverwet\noverwets\noverwetted\noverwetting\noverwhelm\noverwhelmed\noverwhelming\noverwhelmingly\noverwhelms\noverwide\noverwily\noverwind\noverwinding\noverwinds\noverwise\noverword\noverwords\noverwore\noverwork\noverworked\noverworking\noverworks\noverworn\noverwound\noverwrite\noverwrites\noverwriting\noverwritten\noverwrote\noverwrought\noverzeal\noverzeals\novibos\novicidal\novicide\novicides\noviducal\noviduct\noviductal\noviducts\noviform\novine\novines\novipara\noviparous\noviposit\noviposited\novipositing\novipositor\novipositors\noviposits\novisac\novisacs\novoid\novoidal\novoids\novoli\novolo\novolos\novonic\novular\novulary\novulate\novulated\novulates\novulating\novulation\novulations\novule\novules\novum\now\nowe\nowed\nowes\nowing\nowl\nowlet\nowlets\nowlish\nowlishly\nowlishness\nowllike\nowls\nown\nownable\nowned\nowner\nowners\nownership\nownerships\nowning\nowns\nowse\nowsen\nox\noxalate\noxalated\noxalates\noxalating\noxalic\noxalis\noxalises\noxazine\noxazines\noxblood\noxbloods\noxbow\noxbows\noxcart\noxcarts\noxen\noxes\noxeye\noxeyes\noxford\noxfords\noxheart\noxhearts\noxid\noxidable\noxidant\noxidants\noxidase\noxidases\noxidasic\noxidate\noxidated\noxidates\noxidating\noxidation\noxidations\noxidative\noxide\noxides\noxidic\noxidise\noxidised\noxidiser\noxidisers\noxidises\noxidising\noxidizable\noxidize\noxidized\noxidizer\noxidizers\noxidizes\noxidizing\noxids\noxim\noxime\noximes\noxims\noxlip\noxlips\noxo\noxpecker\noxpeckers\noxtail\noxtails\noxter\noxters\noxtongue\noxtongues\noxy\noxyacetylene\noxyacid\noxyacids\noxygen\noxygenate\noxygenated\noxygenates\noxygenating\noxygenation\noxygenations\noxygenator\noxygenators\noxygenic\noxygenizable\noxygenless\noxygens\noxymora\noxymoron\noxyphil\noxyphile\noxyphiles\noxyphils\noxysalt\noxysalts\noxysome\noxysomes\noxytocic\noxytocics\noxytocin\noxytocins\noxytone\noxytones\noy\noyer\noyers\noyes\noyesses\noyez\noyster\noystered\noysterer\noysterers\noystering\noysters\nozone\nozones\nozonic\nozonide\nozonides\nozonise\nozonised\nozonises\nozonising\nozonize\nozonized\nozonizer\nozonizers\nozonizes\nozonizing\nozonosphere\nozonous\npa\npabular\npabulum\npabulums\npac\npaca\npacas\npace\npaced\npacemaker\npacemakers\npacemaking\npacer\npacers\npaces\npacha\npachadom\npachadoms\npachalic\npachalics\npachas\npachisi\npachisis\npachouli\npachoulis\npachuco\npachucos\npachyderm\npachyderms\npachysandra\npachysandras\npacifiable\npacific\npacifically\npacification\npacifications\npacificator\npacificators\npacified\npacifier\npacifiers\npacifies\npacifism\npacifisms\npacifist\npacifistic\npacifists\npacify\npacifying\npacing\npack\npackable\npackage\npackaged\npackager\npackagers\npackages\npackaging\npacked\npacker\npackers\npacket\npacketed\npacketing\npackets\npacking\npackinghouse\npackinghouses\npackings\npackly\npackman\npackmen\npackness\npacknesses\npacks\npacksack\npacksacks\npacksaddle\npacksaddles\npackthread\npackwax\npackwaxes\npacs\npact\npaction\npactions\npacts\npad\npadauk\npadauks\npadded\npaddies\npadding\npaddings\npaddle\npaddled\npaddler\npaddlers\npaddles\npaddling\npaddlings\npaddock\npaddocked\npaddocking\npaddocks\npaddy\npadi\npadis\npadishah\npadishahs\npadle\npadles\npadlock\npadlocked\npadlocking\npadlocks\npadnag\npadnags\npadouk\npadouks\npadre\npadres\npadri\npadrone\npadrones\npadroni\npads\npadshah\npadshahs\npaduasoy\npaduasoys\npaean\npaeanism\npaeanisms\npaeans\npaella\npaellas\npaeon\npaeons\npagan\npagandom\npagandoms\npaganise\npaganised\npaganises\npaganish\npaganising\npaganism\npaganisms\npaganist\npaganists\npaganize\npaganized\npaganizes\npaganizing\npagans\npage\npageant\npageantries\npageantry\npageants\npageboy\npageboys\npaged\npager\npages\npaginal\npaginate\npaginated\npaginates\npaginating\npagination\npaginations\npaging\npagod\npagoda\npagodas\npagods\npagurian\npagurians\npagurid\npagurids\npah\npahlavi\npahlavis\npaid\npaik\npaiked\npaiking\npaiks\npail\npailful\npailfuls\npails\npailsful\npain\npainch\npainches\npained\npainful\npainfuller\npainfullest\npainfully\npainfulness\npaining\npainkiller\npainkillers\npainkilling\npainless\npainlessly\npainlessness\npains\npainstaking\npainstakingly\npaint\npaintbrush\npaintbrushes\npainted\npainter\npainterliness\npainterly\npainters\npaintier\npaintiest\npainting\npaintings\npaints\npainty\npair\npaired\npairing\npairs\npaisa\npaisan\npaisano\npaisanos\npaisans\npaisas\npaise\npaisley\npaisleys\npajama\npajamas\npal\npalabra\npalabras\npalace\npalaced\npalaces\npaladin\npaladins\npalais\npalatability\npalatable\npalatableness\npalatably\npalatal\npalatalization\npalatalizations\npalatalize\npalatalized\npalatalizes\npalatalizing\npalatally\npalatals\npalate\npalates\npalatial\npalatially\npalatialness\npalatine\npalatines\npalaver\npalavered\npalavering\npalavers\npalazzi\npalazzo\npale\npalea\npaleae\npaleal\npaled\npaleface\npalefaces\npalely\npaleness\npalenesses\npaleographer\npaleographers\npaleographic\npaleographical\npaleographically\npaleography\npaleontologic\npaleontological\npaleontologies\npaleontologist\npaleontologists\npaleontology\npaler\npales\npalest\npalestra\npalestrae\npalestras\npalet\npaletot\npaletots\npalets\npalette\npalettes\npaleways\npalewise\npalfrey\npalfreys\npalier\npaliest\npalikar\npalikars\npalimpsest\npalimpsests\npalindrome\npalindromes\npaling\npalings\npalinode\npalinodes\npalisade\npalisaded\npalisades\npalisading\npalish\npall\npalladia\npalladic\npalladium\npallbearer\npallbearers\npalled\npallet\npallets\npallette\npallettes\npallia\npallial\npalliate\npalliated\npalliates\npalliating\npalliation\npalliations\npalliative\npalliatively\npalliator\npalliators\npallid\npallidly\npallidness\npallier\npalliest\npalling\npallium\npalliums\npallor\npallors\npalls\npally\npalm\npalmar\npalmary\npalmate\npalmated\npalmately\npalmation\npalmations\npalmed\npalmer\npalmers\npalmette\npalmettes\npalmetto\npalmettoes\npalmettos\npalmier\npalmiest\npalming\npalmist\npalmistry\npalmists\npalmitin\npalmitins\npalmlike\npalms\npalmy\npalmyra\npalmyras\npalomino\npalominos\npalooka\npalookas\npalp\npalpabilities\npalpability\npalpable\npalpably\npalpal\npalpate\npalpated\npalpates\npalpating\npalpation\npalpations\npalpator\npalpators\npalpebra\npalpebrae\npalpi\npalpitate\npalpitated\npalpitates\npalpitating\npalpitation\npalpitations\npalps\npalpus\npals\npalsied\npalsies\npalsy\npalsying\npalter\npaltered\npalterer\npalterers\npaltering\npalters\npaltrier\npaltriest\npaltrily\npaltry\npaludal\npaludism\npaludisms\npaly\npam\npampa\npampas\npampean\npampeans\npamper\npampered\npamperer\npamperers\npampering\npampero\npamperos\npampers\npamphlet\npamphleteer\npamphleteered\npamphleteering\npamphleteers\npamphlets\npams\npan\npanacea\npanacean\npanaceas\npanache\npanaches\npanada\npanadas\npanama\npanamas\npanatela\npanatelas\npancake\npancaked\npancakes\npancaking\npanchax\npanchaxes\npanchromatic\npancreas\npancreases\npancreatic\npanda\npandani\npandanus\npandanuses\npandas\npandect\npandects\npandemic\npandemics\npandemonium\npandemoniums\npander\npandered\npanderer\npanderers\npandering\npanders\npandied\npandies\npandit\npandits\npandoor\npandoors\npandora\npandoras\npandore\npandores\npandour\npandours\npandowdies\npandowdy\npandura\npanduras\npandy\npandying\npane\npaned\npanegyric\npanegyrical\npanegyrically\npanegyrics\npanegyrist\npanegyrists\npanel\npaneled\npaneling\npanelings\npanelist\npanelists\npanelled\npanelling\npanels\npanes\npanetela\npanetelas\npanfish\npanfishes\npanful\npanfuls\npang\npanga\npangas\npanged\npangen\npangens\npanging\npangolin\npangolins\npangs\npanhandle\npanhandled\npanhandler\npanhandlers\npanhandles\npanhandling\npanhuman\npanic\npanicked\npanickier\npanickiest\npanicking\npanicky\npanicle\npanicled\npanicles\npanics\npanicum\npanicums\npanier\npaniers\npanjandrum\npanjandrums\npanmixia\npanmixias\npanne\npanned\npannes\npannier\npanniers\npannikin\npannikins\npanning\npanocha\npanochas\npanoche\npanoches\npanoplies\npanoply\npanoptic\npanorama\npanoramas\npanoramic\npanoramical\npanoramically\npanpipe\npanpipes\npans\npansies\npansophies\npansophy\npansy\npant\npantaloon\npantaloons\npanted\npantheism\npantheisms\npantheist\npantheistic\npantheistical\npantheistically\npantheists\npantheon\npantheons\npanther\npanthers\npantie\npanties\npantile\npantiled\npantiles\npanting\npanto\npantofle\npantofles\npantograph\npantographic\npantographs\npantomime\npantomimed\npantomimes\npantomimic\npantomiming\npantomimist\npantomimists\npantoum\npantoums\npantries\npantry\npants\npantsuit\npantsuits\npanty\npanzer\npanzers\npap\npapa\npapacies\npapacy\npapain\npapains\npapal\npapally\npapas\npapaw\npapaws\npapaya\npapayan\npapayas\npaper\npaperback\npaperbacks\npaperboard\npaperbound\npaperboy\npaperboys\npapered\npaperer\npaperers\npaperhanger\npaperhangers\npaperhanging\npapering\npapers\npaperweight\npaperweights\npaperwork\npapery\npaphian\npaphians\npapilla\npapillae\npapillar\npapillary\npapillon\npapillons\npapillose\npapist\npapistic\npapistries\npapistry\npapists\npapoose\npapooses\npappi\npappier\npappies\npappiest\npappoose\npappooses\npappose\npappous\npappus\npappy\npaprica\npapricas\npaprika\npaprikas\npaps\npapula\npapulae\npapular\npapule\npapules\npapulose\npapyral\npapyri\npapyrian\npapyrine\npapyrus\npapyruses\npar\npara\nparable\nparables\nparabola\nparabolas\nparabolic\nparabolically\nparaboloid\nparaboloidal\nparaboloids\nparachor\nparachors\nparachute\nparachuted\nparachutes\nparachuting\nparachutist\nparachutists\nparade\nparaded\nparader\nparaders\nparades\nparadigm\nparadigmatic\nparadigms\nparading\nparadise\nparadises\nparadisiac\nparadisiacal\nparados\nparadoses\nparadox\nparadoxes\nparadoxical\nparadoxically\nparadoxicalness\nparadrop\nparadropped\nparadropping\nparadrops\nparaffin\nparaffined\nparaffinic\nparaffining\nparaffins\nparaform\nparaforms\nparagoge\nparagoges\nparagon\nparagoned\nparagoning\nparagons\nparagraph\nparagrapher\nparagraphers\nparagraphic\nparagraphs\nparajournalism\nparakeet\nparakeets\nparalegal\nparalegals\nparallactic\nparallax\nparallaxes\nparallel\nparalleled\nparalleleling\nparallelelled\nparallelelling\nparallelels\nparallelepiped\nparallelepipeds\nparalleling\nparallelism\nparallelisms\nparallelled\nparallelling\nparallelogram\nparallelograms\nparallels\nparalyse\nparalysed\nparalyses\nparalysing\nparalysis\nparalytic\nparalytically\nparalytics\nparalyze\nparalyzed\nparalyzer\nparalyzers\nparalyzes\nparalyzing\nparalyzingly\nparamagnet\nparamagnetic\nparamagnetism\nparamagnetisms\nparamagnets\nparamecia\nparamecium\nparamedic\nparamedical\nparamedics\nparament\nparamenta\nparaments\nparameter\nparameterization\nparameterize\nparameterized\nparameterizes\nparameterizing\nparameters\nparametric\nparametrically\nparametrization\nparametrize\nparametrized\nparametrizes\nparametrizing\nparamilitary\nparamo\nparamos\nparamount\nparamountcy\nparamour\nparamours\nparang\nparangs\nparanoea\nparanoeas\nparanoia\nparanoiac\nparanoias\nparanoid\nparanoids\nparapet\nparapeted\nparapets\nparaph\nparaphernalia\nparaphrasable\nparaphrase\nparaphrased\nparaphraser\nparaphrasers\nparaphrases\nparaphrasing\nparaphrastic\nparaphrastically\nparaphs\nparaplegia\nparaplegic\nparaplegics\nparaprofessional\nparaprofessionals\nparapsychological\nparapsychologist\nparapsychologists\nparapsychology\nparaquat\nparaquats\nparaquet\nparaquets\nparas\nparasang\nparasangs\nparashah\nparashioth\nparashoth\nparasite\nparasites\nparasitic\nparasitically\nparasitism\nparasitize\nparasitized\nparasitizes\nparasitizing\nparasitological\nparasitologist\nparasitologists\nparasitology\nparasol\nparasols\nparasympathetic\nparasympathetics\nparatroop\nparatrooper\nparatroopers\nparatroops\nparavane\nparavanes\nparboil\nparboiled\nparboiling\nparboils\nparbuckle\nparbuckled\nparbuckles\nparbuckling\nparcel\nparceled\nparceling\nparcelled\nparcelling\nparcels\nparcener\nparceners\nparch\nparched\nparches\nparching\nparchment\nparchments\npard\npardah\npardahs\npardee\npardi\npardie\npardine\npardner\npardners\npardon\npardonable\npardonableness\npardonably\npardoned\npardoner\npardoners\npardoning\npardons\npards\npardy\npare\nparecism\nparecisms\npared\nparegoric\npareira\npareiras\nparenchyma\nparenchymal\nparenchymatous\nparent\nparentage\nparentages\nparental\nparentally\nparented\nparentheses\nparenthesis\nparenthesize\nparenthesized\nparenthesizes\nparenthesizing\nparenthetic\nparenthetical\nparenthetically\nparenthood\nparenthoods\nparenting\nparents\nparer\nparers\npares\npareses\nparesis\nparetic\nparetics\npareu\npareus\npareve\nparfait\nparfaits\nparflesh\nparfleshes\nparfocal\nparge\nparged\nparges\nparget\npargeted\npargeting\npargets\npargetted\npargetting\nparging\npargo\npargos\nparhelia\nparhelic\npariah\npariahs\nparian\nparians\nparies\nparietal\nparietals\nparietes\nparing\nparings\nparis\nparises\nparish\nparishes\nparishioner\nparishioners\nparities\nparity\npark\nparka\nparkas\nparked\nparker\nparkers\nparking\nparkings\nparkland\nparklands\nparklike\nparks\nparkway\nparkways\nparlance\nparlances\nparlando\nparlante\nparlay\nparlayed\nparlaying\nparlays\nparle\nparled\nparles\nparley\nparleyed\nparleyer\nparleyers\nparleying\nparleys\nparliament\nparliamentarian\nparliamentarians\nparliamentary\nparliaments\nparling\nparlor\nparlors\nparlour\nparlours\nparlous\nparochial\nparochialism\nparochialisms\nparochially\nparodic\nparodied\nparodies\nparodist\nparodistic\nparodists\nparodoi\nparodos\nparody\nparodying\nparol\nparole\nparoled\nparolee\nparolees\nparoles\nparoling\nparols\nparonym\nparonyms\nparoquet\nparoquets\nparotic\nparotid\nparotids\nparotoid\nparotoids\nparous\nparoxysm\nparoxysmal\nparoxysms\nparquet\nparqueted\nparqueting\nparquetries\nparquetry\nparquets\nparr\nparral\nparrals\nparred\nparrel\nparrels\nparricidal\nparricide\nparricides\nparridge\nparridges\nparried\nparries\nparring\nparritch\nparritches\nparroket\nparrokets\nparrot\nparroted\nparroter\nparroters\nparroting\nparrots\nparroty\nparrs\nparry\nparrying\npars\nparsable\nparse\nparsec\nparsecs\nparsed\nparser\nparsers\nparses\nparsimonious\nparsimoniously\nparsimony\nparsing\nparsley\nparsleys\nparsnip\nparsnips\nparson\nparsonage\nparsonages\nparsonic\nparsons\npart\npartake\npartaken\npartaker\npartakers\npartakes\npartaking\npartan\npartans\nparted\nparterre\nparterres\nparthenogenetic\nparthenogenetically\npartial\npartialities\npartiality\npartially\npartials\npartible\nparticipant\nparticipants\nparticipate\nparticipated\nparticipates\nparticipating\nparticipation\nparticipations\nparticipative\nparticipator\nparticipators\nparticipatory\nparticipial\nparticipially\nparticiple\nparticiples\nparticle\nparticleboard\nparticles\nparticular\nparticularism\nparticularist\nparticularistic\nparticularists\nparticularities\nparticularity\nparticularization\nparticularizations\nparticularize\nparticularized\nparticularizes\nparticularizing\nparticularly\nparticulars\nparticulate\nparticulates\npartied\nparties\nparting\npartings\npartisan\npartisans\npartisanship\npartita\npartitas\npartite\npartition\npartitioned\npartitioning\npartitionist\npartitionists\npartitions\npartitive\npartitively\npartizan\npartizans\npartlet\npartlets\npartly\npartner\npartnered\npartnering\npartners\npartnership\npartnerships\nparton\npartons\npartook\npartridge\npartridges\nparts\nparturition\nparturitions\npartway\nparty\npartying\nparura\nparuras\nparure\nparures\nparve\nparvenu\nparvenue\nparvenus\nparvis\nparvise\nparvises\nparvolin\nparvolins\npas\npaschal\npaschals\npase\npaseo\npaseos\npases\npash\npasha\npashadom\npashadoms\npashalic\npashalics\npashalik\npashaliks\npashas\npashed\npashes\npashing\npasquil\npasquils\npasquinade\npasquinades\npass\npassable\npassably\npassade\npassades\npassado\npassadoes\npassados\npassage\npassaged\npassages\npassageway\npassageways\npassaging\npassant\npassband\npassbands\npassbook\npassbooks\npasse\npassed\npassee\npassel\npassels\npassenger\npassengers\npasser\npasserby\npassers\npassersby\npasses\npassible\npassim\npassing\npassings\npassion\npassional\npassionate\npassionately\npassionateness\npassionless\npassions\npassive\npassively\npassiveness\npassives\npassivism\npassivist\npassivists\npassivities\npassivity\npasskey\npasskeys\npassless\npassover\npassovers\npassport\npassports\npassus\npassuses\npassword\npasswords\npast\npasta\npastas\npaste\npasteboard\npasteboards\npasted\npastel\npastelist\npastelists\npastellist\npastellists\npastels\npaster\npastern\npasterns\npasters\npastes\npasteurization\npasteurizations\npasteurize\npasteurized\npasteurizer\npasteurizers\npasteurizes\npasteurizing\npasticci\npastiche\npastiches\npastier\npasties\npastiest\npastil\npastille\npastilles\npastils\npastime\npastimes\npastina\npastinas\npastiness\npasting\npastness\npastnesses\npastor\npastoral\npastoralism\npastorally\npastorals\npastorate\npastorates\npastored\npastoring\npastors\npastrami\npastramis\npastries\npastromi\npastromis\npastry\npasts\npasturage\npasturages\npastural\npasture\npastured\npasturer\npasturers\npastures\npasturing\npasty\npat\npataca\npatacas\npatagia\npatagium\npatamar\npatamars\npatch\npatched\npatcher\npatchers\npatches\npatchier\npatchiest\npatchily\npatchiness\npatching\npatchwork\npatchworks\npatchy\npate\npated\npatella\npatellae\npatellar\npatellas\npaten\npatencies\npatency\npatens\npatent\npatentability\npatentable\npatented\npatentee\npatentees\npatenting\npatently\npatentor\npatentors\npatents\npater\npaternal\npaternalism\npaternalist\npaternalistic\npaternalistically\npaternalists\npaternally\npaternities\npaternity\npaternoster\npaternosters\npaters\npates\npath\npathetic\npathetical\npathetically\npathfinder\npathfinders\npathfinding\npathless\npathogen\npathogenesis\npathogenetic\npathogenic\npathogenicity\npathogens\npathological\npathologically\npathologies\npathologist\npathologists\npathology\npathos\npathoses\npaths\npathway\npathways\npatience\npatiences\npatient\npatienter\npatientest\npatiently\npatients\npatin\npatina\npatinae\npatinas\npatine\npatined\npatines\npatining\npatins\npatio\npatios\npatly\npatness\npatnesses\npatois\npatriarch\npatriarchal\npatriarchate\npatriarchates\npatriarchies\npatriarchs\npatriarchy\npatrician\npatricians\npatriciate\npatriciates\npatricidal\npatricide\npatricides\npatrimonial\npatrimonies\npatrimony\npatriot\npatriotic\npatriotically\npatriotism\npatriots\npatrol\npatrolled\npatroller\npatrollers\npatrolling\npatrolman\npatrolmen\npatrols\npatron\npatronage\npatronages\npatronal\npatroness\npatronesses\npatronize\npatronized\npatronizes\npatronizing\npatronizingly\npatronly\npatrons\npatronymic\npatronymics\npatroon\npatroons\npats\npatsies\npatsy\npattamar\npattamars\npatted\npattee\npatten\npattens\npatter\npattered\npatterer\npatterers\npattering\npattern\npatterned\npatterning\npatternings\npatternless\npatterns\npatters\npattie\npatties\npatting\npatty\npattypan\npattypans\npatulent\npatulous\npaty\npaucities\npaucity\npaughty\npauldron\npauldrons\npaulin\npaulins\npaunch\npaunched\npaunches\npaunchier\npaunchiest\npaunchiness\npaunchy\npauper\npaupered\npaupering\npauperism\npauperize\npauperized\npauperizes\npauperizing\npaupers\npausal\npause\npaused\npauser\npausers\npauses\npausing\npavan\npavane\npavanes\npavans\npave\npaved\npavement\npavements\npaver\npavers\npaves\npavid\npavilion\npavilioned\npavilioning\npavilions\npavin\npaving\npavings\npavins\npavior\npaviors\npaviour\npaviours\npavis\npavise\npaviser\npavisers\npavises\npavonine\npaw\npawed\npawer\npawers\npawing\npawkier\npawkiest\npawkily\npawky\npawl\npawls\npawn\npawnable\npawnage\npawnages\npawnbroker\npawnbrokers\npawned\npawnee\npawnees\npawner\npawners\npawning\npawnor\npawnors\npawns\npawnshop\npawnshops\npawpaw\npawpaws\npaws\npax\npaxes\npaxwax\npaxwaxes\npay\npayable\npayably\npaycheck\npaychecks\npayday\npaydays\npayed\npayee\npayees\npayer\npayers\npaying\npayload\npayloads\npaymaster\npaymasters\npayment\npayments\npaynim\npaynims\npayoff\npayoffs\npayola\npayolas\npayor\npayors\npayroll\npayrolls\npays\npe\npea\npeace\npeaceable\npeaceableness\npeaceably\npeaced\npeaceful\npeacefuller\npeacefullest\npeacefully\npeacefulness\npeacekeeper\npeacekeepers\npeacekeeping\npeacemaker\npeacemakers\npeacemaking\npeaces\npeacetime\npeacetimes\npeach\npeached\npeacher\npeachers\npeaches\npeachier\npeachiest\npeaching\npeachy\npeacing\npeacoat\npeacoats\npeacock\npeacocked\npeacockier\npeacockiest\npeacocking\npeacockish\npeacocks\npeacocky\npeafowl\npeafowls\npeag\npeage\npeages\npeags\npeahen\npeahens\npeak\npeaked\npeakedness\npeakier\npeakiest\npeaking\npeakish\npeakless\npeaklike\npeaks\npeaky\npeal\npealed\npealike\npealing\npeals\npean\npeans\npeanut\npeanuts\npear\npearl\npearlash\npearlashes\npearled\npearler\npearlers\npearlier\npearliest\npearling\npearlite\npearlites\npearlized\npearls\npearly\npearmain\npearmains\npears\npeart\npearter\npeartest\npeartly\npeas\npeasant\npeasantry\npeasants\npeascod\npeascods\npease\npeasecod\npeasecods\npeasen\npeases\npeat\npeatier\npeatiest\npeats\npeaty\npeavey\npeaveys\npeavies\npeavy\npebble\npebbled\npebbles\npebblier\npebbliest\npebbling\npebbly\npecan\npecans\npeccable\npeccadillo\npeccadilloes\npeccadillos\npeccancies\npeccancy\npeccant\npeccaries\npeccary\npeccavi\npeccavis\npech\npechan\npechans\npeched\npeching\npechs\npeck\npecked\npecker\npeckers\npeckier\npeckiest\npecking\npecks\npecky\npecs\npectase\npectases\npectate\npectates\npecten\npectens\npectic\npectin\npectinate\npectination\npectinations\npectines\npectins\npectize\npectized\npectizes\npectizing\npectoral\npectorals\npeculate\npeculated\npeculates\npeculating\npeculation\npeculations\npeculator\npeculators\npeculia\npeculiar\npeculiarities\npeculiarity\npeculiarly\npeculiars\npeculium\npecuniarily\npecuniary\nped\npedagog\npedagogical\npedagogically\npedagogics\npedagogies\npedagogs\npedagogue\npedagogues\npedagogy\npedal\npedaled\npedalfer\npedalfers\npedalier\npedaliers\npedaling\npedalled\npedalling\npedals\npedant\npedantic\npedantically\npedantries\npedantry\npedants\npedate\npedately\npeddle\npeddled\npeddler\npeddleries\npeddlers\npeddlery\npeddles\npeddling\npederast\npederasts\npedes\npedestal\npedestaled\npedestaling\npedestalled\npedestalling\npedestals\npedestrian\npedestrianism\npedestrianisms\npedestrians\npediatric\npediatrician\npediatricians\npediatrics\npediatrist\npediatrists\npedicab\npedicabs\npedicel\npedicels\npedicle\npedicled\npedicles\npedicure\npedicured\npedicures\npedicuring\npedicurist\npedicurists\npediform\npedigree\npedigreed\npedigrees\npediment\npedimental\npediments\npedipalp\npedipalps\npedlar\npedlaries\npedlars\npedlary\npedler\npedlers\npedocal\npedocals\npedologies\npedology\npedometer\npedometers\npedro\npedros\npeds\npeduncle\npeduncles\npee\npeebeen\npeebeens\npeed\npeeing\npeek\npeekaboo\npeekaboos\npeeked\npeeking\npeeks\npeel\npeelable\npeeled\npeeler\npeelers\npeeling\npeelings\npeels\npeen\npeened\npeening\npeens\npeep\npeeped\npeeper\npeepers\npeephole\npeepholes\npeeping\npeeps\npeepshow\npeepshows\npeepul\npeepuls\npeer\npeerage\npeerages\npeered\npeeress\npeeresses\npeerie\npeeries\npeering\npeerless\npeers\npeery\npees\npeesweep\npeesweeps\npeetweet\npeetweets\npeeve\npeeved\npeeves\npeeving\npeevish\npeevishly\npeevishness\npeewee\npeewees\npeewit\npeewits\npeg\npegboard\npegboards\npegbox\npegboxes\npegged\npegging\npegless\npeglike\npegmatite\npegs\npeh\npehs\npeignoir\npeignoirs\npein\npeined\npeining\npeins\npeise\npeised\npeises\npeising\npejorative\npejoratively\npekan\npekans\npeke\npekes\npekin\npekins\npekoe\npekoes\npelage\npelages\npelagial\npelagic\npele\npelerine\npelerines\npeles\npelf\npelfs\npelican\npelicans\npelisse\npelisses\npelite\npelites\npelitic\npellagra\npellagras\npellet\npelletal\npelleted\npelleting\npelletize\npelletized\npelletizes\npelletizing\npellets\npellicle\npellicles\npellmell\npellmells\npellucid\npellucidly\npelon\npeloria\npelorian\npelorias\npeloric\npelorus\npeloruses\npelota\npelotas\npelt\npeltast\npeltasts\npeltate\npelted\npelter\npelters\npelting\npeltries\npeltry\npelts\npelves\npelvic\npelvics\npelvis\npelvises\npembina\npembinas\npemican\npemicans\npemmican\npemmicans\npemoline\npemolines\npemphix\npemphixes\npen\npenal\npenalise\npenalised\npenalises\npenalising\npenalities\npenality\npenalization\npenalizations\npenalize\npenalized\npenalizes\npenalizing\npenally\npenalties\npenalty\npenance\npenanced\npenances\npenancing\npenang\npenangs\npenates\npence\npencel\npencels\npenchant\npenchants\npencil\npenciled\npenciler\npencilers\npenciling\npencilled\npenciller\npencillers\npencilling\npencils\npend\npendant\npendants\npended\npendencies\npendency\npendent\npendentive\npendently\npendents\npending\npends\npendular\npendulous\npendulousness\npendulum\npendulums\npenes\npenetrability\npenetrable\npenetrant\npenetrants\npenetrate\npenetrated\npenetrates\npenetrating\npenetratingly\npenetration\npenetrations\npenetrative\npenetrometer\npenetrometers\npengo\npengos\npenguin\npenguins\npenholder\npenholders\npenial\npenicil\npenicillin\npenicillins\npenicils\npenile\npeninsula\npeninsular\npeninsulas\npenis\npenises\npenitence\npenitences\npenitent\npenitential\npenitentially\npenitentiaries\npenitentiary\npenitently\npenitents\npenknife\npenknives\npenlight\npenlights\npenlite\npenlites\npenman\npenmanship\npenmanships\npenmen\npenna\npennae\npenname\npennames\npennant\npennants\npennate\npennated\npenned\npenner\npenners\npenni\npennia\npennies\npenniless\npennine\npennines\npenning\npennis\npennon\npennoned\npennons\npenny\npennyweight\npennyweights\npenoche\npenoches\npenological\npenologies\npenologist\npenologists\npenology\npenoncel\npenoncels\npenpoint\npenpoints\npens\npensee\npensees\npensil\npensile\npensils\npension\npensionable\npensionaries\npensionary\npensione\npensioned\npensioner\npensioners\npensiones\npensioning\npensionless\npensions\npensive\npensively\npensiveness\npenster\npensters\npenstock\npenstocks\npent\npentacle\npentacles\npentad\npentads\npentagon\npentagonal\npentagons\npentagram\npentagrams\npentahedral\npentahedron\npentahedrons\npentameter\npentameters\npentane\npentanes\npentarch\npentarchs\npentathlon\npentathlons\npenthouse\npenthouses\npentomic\npentosan\npentosans\npentose\npentoses\npentyl\npentyls\npenuche\npenuches\npenuchi\npenuchis\npenuchle\npenuchles\npenuckle\npenuckles\npenult\npenults\npenumbra\npenumbrae\npenumbral\npenumbras\npenuries\npenurious\npenuriously\npenuriousness\npenury\npeon\npeonage\npeonages\npeones\npeonies\npeonism\npeonisms\npeons\npeony\npeople\npeopled\npeopler\npeoplers\npeoples\npeopling\npep\npeperoni\npeperonis\npepla\npeplos\npeploses\npeplum\npeplumed\npeplums\npeplus\npepluses\npepo\npeponida\npeponidas\npeponium\npeponiums\npepos\npepped\npepper\npeppercorn\npeppercorns\npeppered\npepperer\npepperers\npeppering\npeppermint\npeppermints\npepperoni\npepperonis\npeppers\npeppery\npeppier\npeppiest\npeppily\npepping\npeppy\npeps\npepsin\npepsine\npepsines\npepsins\npeptic\npeptics\npeptid\npeptide\npeptides\npeptidic\npeptids\npeptize\npeptized\npeptizer\npeptizers\npeptizes\npeptizing\npeptone\npeptones\npeptonic\nper\nperacid\nperacids\nperambulate\nperambulated\nperambulates\nperambulating\nperambulation\nperambulations\nperambulatory\npercale\npercales\nperceivable\nperceivably\nperceive\nperceived\nperceiver\nperceivers\nperceives\nperceiving\npercent\npercentage\npercentages\npercentile\npercentiles\npercents\npercept\nperceptibility\nperceptible\nperceptibly\nperception\nperceptional\nperceptions\nperceptive\nperceptively\nperceptiveness\nperceptivity\npercepts\nperceptual\nperceptually\nperch\nperchance\nperched\npercher\nperchers\nperches\nperching\npercipience\npercipiences\npercipient\npercipients\npercoid\npercoids\npercolate\npercolated\npercolates\npercolating\npercolation\npercolations\npercolator\npercolators\npercuss\npercussed\npercusses\npercussing\npercussion\npercussionist\npercussionists\npercussions\npercussive\npercussively\npercussiveness\nperdie\nperdition\nperdu\nperdue\nperdues\nperdurability\nperdurable\nperdurably\nperdus\nperdy\nperea\nperegrin\nperegrinate\nperegrinated\nperegrinates\nperegrinating\nperegrination\nperegrinations\nperegrins\nperemptorily\nperemptoriness\nperemptory\nperennial\nperennially\nperennials\nperfect\nperfecta\nperfectas\nperfected\nperfecter\nperfecters\nperfectest\nperfectibility\nperfectible\nperfecting\nperfection\nperfectionism\nperfectionist\nperfectionists\nperfections\nperfective\nperfectively\nperfectiveness\nperfectives\nperfectivity\nperfectly\nperfectness\nperfecto\nperfectos\nperfects\nperfidies\nperfidious\nperfidiously\nperfidiousness\nperfidy\nperforate\nperforated\nperforates\nperforating\nperforation\nperforations\nperforator\nperforators\nperforce\nperform\nperformable\nperformance\nperformances\nperformed\nperformer\nperformers\nperforming\nperforms\nperfume\nperfumed\nperfumer\nperfumeries\nperfumers\nperfumery\nperfumes\nperfuming\nperfunctorily\nperfunctoriness\nperfunctory\nperfuse\nperfused\nperfuses\nperfusing\npergola\npergolas\nperhaps\nperhapses\nperi\nperianth\nperianths\nperiapt\nperiapts\nperiblem\nperiblems\npericarp\npericarps\npericopae\npericope\npericopes\nperiderm\nperiderms\nperidia\nperidial\nperidium\nperidot\nperidots\nperigeal\nperigean\nperigee\nperigees\nperigon\nperigons\nperigynies\nperigyny\nperihelion\nperihelions\nperil\nperiled\nperiling\nperilla\nperillas\nperilled\nperilling\nperilous\nperilously\nperilousness\nperils\nperilune\nperilunes\nperimeter\nperimeters\nperinea\nperineal\nperineum\nperiod\nperiodic\nperiodical\nperiodically\nperiodicals\nperiodicity\nperiodid\nperiodids\nperiods\nperiotic\nperipatetic\nperipatetics\nperipeties\nperipety\nperipheral\nperipherally\nperipherals\nperipheries\nperiphery\nperiphrases\nperiphrasis\nperiphrastic\nperiphrastically\nperipter\nperipters\nperique\nperiques\nperis\nperisarc\nperisarcs\nperiscope\nperiscopes\nperiscopic\nperish\nperishability\nperishable\nperishables\nperished\nperishes\nperishing\nperistalses\nperistalsis\nperistaltic\nperistaltically\nperistyle\nperistyles\nperitonea\nperitoneum\nperitoneums\nperitonitis\nperiwig\nperiwigs\nperiwinkle\nperiwinkles\nperjure\nperjured\nperjurer\nperjurers\nperjures\nperjuries\nperjuring\nperjurious\nperjury\nperk\nperked\nperkier\nperkiest\nperkily\nperkiness\nperking\nperkish\nperks\nperky\nperlite\nperlites\nperlitic\nperm\npermafrost\npermafrosts\npermanence\npermanencies\npermanency\npermanent\npermanently\npermanentness\npermanents\npermeability\npermeable\npermease\npermeases\npermeate\npermeated\npermeates\npermeating\npermeation\npermeations\npermeative\npermissibility\npermissible\npermissibleness\npermissibly\npermission\npermissions\npermissive\npermissively\npermissiveness\npermit\npermits\npermitted\npermittee\npermittees\npermitter\npermitters\npermitting\npermittivity\nperms\npermutable\npermutation\npermutational\npermutations\npermute\npermuted\npermutes\npermuting\npernicious\nperniciously\nperniciousness\nperoneal\nperoral\nperorate\nperorated\nperorates\nperorating\nperoration\nperorational\nperorations\nperoxid\nperoxide\nperoxided\nperoxides\nperoxiding\nperoxids\nperpend\nperpended\nperpendicular\nperpendicularity\nperpendicularly\nperpendiculars\nperpending\nperpends\nperpent\nperpents\nperpetrate\nperpetrated\nperpetrates\nperpetrating\nperpetration\nperpetrations\nperpetrator\nperpetrators\nperpetual\nperpetually\nperpetuate\nperpetuated\nperpetuates\nperpetuating\nperpetuation\nperpetuations\nperpetuities\nperpetuity\nperplex\nperplexed\nperplexedly\nperplexes\nperplexing\nperplexities\nperplexity\nperquisite\nperquisites\nperries\nperron\nperrons\nperry\npersalt\npersalts\nperse\npersecute\npersecuted\npersecutes\npersecuting\npersecution\npersecutions\npersecutive\npersecutor\npersecutors\npersecutory\nperses\nperseverance\nperseverances\npersevere\npersevered\nperseveres\npersevering\npersiflage\npersimmon\npersimmons\npersist\npersisted\npersistence\npersistency\npersistent\npersistently\npersisting\npersists\npersnickety\nperson\npersona\npersonable\npersonableness\npersonae\npersonage\npersonages\npersonal\npersonalism\npersonalisms\npersonalist\npersonalistic\npersonalists\npersonalities\npersonality\npersonalization\npersonalizations\npersonalize\npersonalized\npersonalizes\npersonalizing\npersonally\npersonals\npersonalties\npersonalty\npersonas\npersonate\npersonated\npersonates\npersonating\npersonation\npersonations\npersonative\npersonator\npersonators\npersonification\npersonifications\npersonified\npersonifier\npersonifiers\npersonifies\npersonify\npersonifying\npersonnel\npersonnels\npersons\nperspectival\nperspective\nperspectively\nperspectives\nperspicacious\nperspicaciously\nperspicaciousness\nperspicacity\nperspicuities\nperspicuity\nperspicuous\nperspicuously\nperspicuousness\nperspiration\nperspirations\nperspire\nperspired\nperspires\nperspiring\nperspiry\npersuadable\npersuade\npersuaded\npersuades\npersuading\npersuasible\npersuasion\npersuasions\npersuasive\npersuasively\npersuasiveness\npert\npertain\npertained\npertaining\npertains\nperter\npertest\npertinacious\npertinaciously\npertinaciousness\npertinacities\npertinacity\npertinence\npertinencies\npertinency\npertinent\npertinently\npertly\npertness\npertnesses\nperturb\nperturbable\nperturbation\nperturbational\nperturbations\nperturbed\nperturbing\nperturbs\nperuke\nperukes\nperusal\nperusals\nperuse\nperused\nperuser\nperusers\nperuses\nperusing\npervade\npervaded\npervader\npervaders\npervades\npervading\npervasion\npervasions\npervasive\npervasively\npervasiveness\nperverse\nperversely\nperverseness\nperversion\nperversions\nperversities\nperversity\nperversive\npervert\nperverted\npervertedly\npervertedness\nperverting\nperverts\npervious\nperviousness\npes\npesade\npesades\npeseta\npesetas\npesewa\npesewas\npeskier\npeskiest\npeskily\npesky\npeso\npesos\npessaries\npessary\npessimism\npessimisms\npessimist\npessimistic\npessimistically\npessimists\npest\npester\npestered\npesterer\npesterers\npestering\npesters\npesthole\npestholes\npesticide\npesticides\npestiferous\npestiferously\npestiferousness\npestilence\npestilences\npestilent\npestilential\npestilentially\npestilently\npestle\npestled\npestles\npestling\npesto\npests\npet\npetal\npetaled\npetaline\npetalled\npetallike\npetalodies\npetalody\npetaloid\npetalous\npetals\npetard\npetards\npetasos\npetasoses\npetasus\npetasuses\npetcock\npetcocks\npetechia\npetechiae\npeter\npetered\npetering\npeters\npetiolar\npetiole\npetioled\npetioles\npetit\npetite\npetiteness\npetites\npetition\npetitionary\npetitioned\npetitioner\npetitioners\npetitioning\npetitions\npetrel\npetrels\npetrifaction\npetrifactions\npetrification\npetrifications\npetrified\npetrifies\npetrify\npetrifying\npetrochemical\npetrochemicals\npetrodollars\npetrographer\npetrographers\npetrographic\npetrographical\npetrographically\npetrography\npetrol\npetrolatum\npetroleum\npetroleums\npetrolic\npetrologic\npetrological\npetrologically\npetrologist\npetrologists\npetrology\npetrols\npetronel\npetronels\npetrosal\npetrous\npets\npetted\npettedly\npetter\npetters\npetti\npetticoat\npetticoats\npettier\npettiest\npettifog\npettifogged\npettifogger\npettifoggeries\npettifoggers\npettifoggery\npettifogging\npettifogs\npettily\npettiness\npetting\npettish\npettishly\npettishness\npettle\npettled\npettles\npettling\npetto\npetty\npetulance\npetulancies\npetulancy\npetulant\npetulantly\npetunia\npetunias\npetuntse\npetuntses\npetuntze\npetuntzes\npew\npewee\npewees\npewit\npewits\npews\npewter\npewterer\npewterers\npewters\npeyote\npeyotes\npeyotl\npeyotls\npeytral\npeytrals\npeytrel\npeytrels\npfennig\npfennige\npfennigs\npfft\npfui\nphaeton\nphaetons\nphage\nphages\nphalange\nphalanges\nphalanx\nphalanxes\nphalli\nphallic\nphallicism\nphallicisms\nphallism\nphallisms\nphallist\nphallists\nphallus\nphalluses\nphantasied\nphantasies\nphantasm\nphantasmagoria\nphantasmagoric\nphantasmal\nphantasmic\nphantasms\nphantast\nphantasts\nphantasy\nphantasying\nphantom\nphantomlike\nphantoms\npharaoh\npharaohs\npharaonic\npharisaic\npharisaical\npharisaically\npharisee\npharisees\npharmaceutical\npharmaceutically\npharmaceuticals\npharmacies\npharmacist\npharmacists\npharmacological\npharmacologically\npharmacologist\npharmacologists\npharmacology\npharmacy\npharos\npharoses\npharyngeal\npharynges\npharynx\npharynxes\nphase\nphaseal\nphased\nphaseout\nphaseouts\nphases\nphasic\nphasing\nphasis\nphasmid\nphasmids\nphat\nphatic\npheasant\npheasants\nphellem\nphellems\nphelonia\nphenazin\nphenazins\nphenetic\nphenetol\nphenetols\nphenix\nphenixes\nphenol\nphenolate\nphenolated\nphenolates\nphenolic\nphenolics\nphenols\nphenom\nphenomena\nphenomenal\nphenomenalism\nphenomenalist\nphenomenalistic\nphenomenalistically\nphenomenalists\nphenomenally\nphenomenological\nphenomenologically\nphenomenology\nphenomenon\nphenomenons\nphenoms\nphenotype\nphenotypes\nphenotypic\nphenotypically\nphenyl\nphenylic\nphenyls\npheromone\npheromones\nphew\nphi\nphial\nphials\nphilabeg\nphilabegs\nphilander\nphilandered\nphilanderer\nphilanderers\nphilandering\nphilanders\nphilanthropic\nphilanthropically\nphilanthropies\nphilanthropist\nphilanthropists\nphilanthropy\nphilatelic\nphilatelically\nphilatelist\nphilatelists\nphilately\nphilibeg\nphilibegs\nphilistine\nphilistines\nphilodendra\nphilodendron\nphilodendrons\nphilological\nphilologically\nphilologies\nphilologist\nphilologists\nphilology\nphilomel\nphilomels\nphilosopher\nphilosophers\nphilosophic\nphilosophical\nphilosophically\nphilosophies\nphilosophize\nphilosophized\nphilosophizer\nphilosophizers\nphilosophizes\nphilosophizing\nphilosophy\nphilter\nphiltered\nphiltering\nphilters\nphiltre\nphiltred\nphiltres\nphiltring\nphimoses\nphimosis\nphimotic\nphis\nphiz\nphizes\nphlebitis\nphlebotomies\nphlebotomist\nphlebotomists\nphlebotomy\nphlegm\nphlegmatic\nphlegmatically\nphlegmier\nphlegmiest\nphlegms\nphlegmy\nphloem\nphloems\nphlox\nphloxes\nphobia\nphobias\nphobic\nphocine\nphoebe\nphoebes\nphoenix\nphoenixes\nphon\nphonal\nphonate\nphonated\nphonates\nphonating\nphonation\nphonations\nphone\nphoned\nphoneiest\nphoneme\nphonemes\nphonemic\nphonemicist\nphonemicists\nphonemics\nphones\nphonetic\nphonetical\nphonetically\nphonetician\nphoneticians\nphonetics\nphoney\nphoneys\nphonic\nphonics\nphonier\nphonies\nphoniest\nphonily\nphoniness\nphoning\nphono\nphonograph\nphonographer\nphonographers\nphonographic\nphonographically\nphonographs\nphonography\nphonological\nphonologist\nphonologists\nphonology\nphonon\nphonons\nphonos\nphons\nphony\nphooey\nphorate\nphorates\nphosgene\nphosgenes\nphosphate\nphosphates\nphosphatic\nphosphid\nphosphids\nphosphin\nphosphins\nphosphor\nphosphoresce\nphosphoresced\nphosphorescence\nphosphorescences\nphosphorescent\nphosphorescently\nphosphoresces\nphosphorescing\nphosphoric\nphosphorite\nphosphorites\nphosphorous\nphosphors\nphosphorus\nphot\nphotic\nphotics\nphoto\nphotocathode\nphotocathodes\nphotocell\nphotocells\nphotochemical\nphotochemistries\nphotochemistry\nphotocompose\nphotocomposed\nphotocomposer\nphotocomposers\nphotocomposes\nphotocomposing\nphotocomposition\nphotocompositions\nphotoconductive\nphotoconductivities\nphotoconductivity\nphotocopied\nphotocopier\nphotocopiers\nphotocopies\nphotocopy\nphotocopying\nphotoed\nphotoelectric\nphotoelectrically\nphotoengrave\nphotoengraved\nphotoengraver\nphotoengravers\nphotoengraves\nphotoengraving\nphotoengravings\nphotog\nphotogenic\nphotogenically\nphotograph\nphotographed\nphotographer\nphotographers\nphotographic\nphotographically\nphotographing\nphotographs\nphotography\nphotogravure\nphotogravures\nphotogs\nphotoing\nphotojournalism\nphotojournalist\nphotojournalists\nphotolithograph\nphotolithographed\nphotolithographer\nphotolithographers\nphotolithographic\nphotolithographies\nphotolithographing\nphotolithographs\nphotolithography\nphotomap\nphotomapped\nphotomapping\nphotomaps\nphotometer\nphotometers\nphotometric\nphotometrically\nphotometry\nphotomontage\nphotomontages\nphotomural\nphotomurals\nphoton\nphotonic\nphotons\nphotopia\nphotopias\nphotopic\nphotos\nphotosensitive\nphotosensitivities\nphotosensitivity\nphotoset\nphotosets\nphotosetting\nphotostat\nphotostated\nphotostatic\nphotostating\nphotostats\nphotosynthesis\nphotosynthesize\nphotosynthesized\nphotosynthesizes\nphotosynthesizing\nphotosynthetic\nphotosynthetically\nphototropism\nphototropisms\nphototypesetter\nphototypesetters\nphototypesetting\nphots\nphpht\nphrasal\nphrase\nphrased\nphraseological\nphraseologies\nphraseologist\nphraseologists\nphraseology\nphrases\nphrasing\nphrasings\nphratral\nphratric\nphratries\nphratry\nphreatic\nphrenetic\nphrenic\nphrenological\nphrenologist\nphrenologists\nphrenology\nphrensied\nphrensies\nphrensy\nphrensying\npht\nphthalic\nphthalin\nphthalins\nphthises\nphthisic\nphthisics\nphthisis\nphut\nphuts\nphyla\nphylacteries\nphylactery\nphylae\nphylar\nphylaxis\nphylaxises\nphyle\nphyleses\nphylesis\nphylesises\nphyletic\nphylic\nphyllaries\nphyllary\nphyllite\nphyllites\nphyllode\nphyllodes\nphylloid\nphylloids\nphyllome\nphyllomes\nphylon\nphylum\nphyses\nphysic\nphysical\nphysicalism\nphysicalist\nphysicalistic\nphysicalists\nphysicalities\nphysicality\nphysically\nphysicalness\nphysicals\nphysician\nphysicians\nphysicist\nphysicists\nphysicked\nphysicking\nphysics\nphysiognomies\nphysiognomy\nphysiographer\nphysiographers\nphysiography\nphysiologic\nphysiological\nphysiologically\nphysiologist\nphysiologists\nphysiology\nphysiotherapist\nphysiotherapists\nphysiotherapy\nphysique\nphysiques\nphysis\nphytane\nphytanes\nphytoid\nphyton\nphytonic\nphytons\npi\npia\npiacular\npiaffe\npiaffed\npiaffer\npiaffers\npiaffes\npiaffing\npial\npian\npianic\npianism\npianisms\npianissimi\npianissimo\npianissimos\npianist\npianists\npiano\npianoforte\npianofortes\npianos\npians\npias\npiasaba\npiasabas\npiasava\npiasavas\npiassaba\npiassabas\npiassava\npiassavas\npiaster\npiasters\npiastre\npiastres\npiazza\npiazzas\npiazze\npibal\npibroch\npibroches\npibrochs\npic\npica\npicacho\npicachos\npicador\npicadores\npicadors\npical\npicara\npicaras\npicaro\npicaroon\npicarooned\npicarooning\npicaroons\npicaros\npicas\npicayune\npicayunes\npiccalilli\npiccalillis\npiccolo\npiccoloist\npiccoloists\npiccolos\npice\npiceous\npick\npickadil\npickadils\npickax\npickaxe\npickaxed\npickaxes\npickaxing\npicked\npickeer\npickeered\npickeering\npickeers\npicker\npickerel\npickerels\npickers\npicket\npicketed\npicketer\npicketers\npicketing\npickets\npickier\npickiest\npicking\npickings\npickle\npickled\npickles\npickling\npicklock\npicklocks\npickoff\npickoffs\npickpocket\npickpockets\npicks\npickup\npickups\npickwick\npickwicks\npicky\npicloram\npiclorams\npicnic\npicnicked\npicnicker\npicnickers\npicnicking\npicnicky\npicnics\npicofarad\npicofarads\npicogram\npicograms\npicolin\npicoline\npicolines\npicolins\npicosecond\npicoseconds\npicot\npicoted\npicotee\npicotees\npicoting\npicots\npicquet\npicquets\npicrate\npicrated\npicrates\npicric\npicrite\npicrites\npics\npictograph\npictographic\npictographs\npictography\npictorial\npictorially\npictorialness\npictorials\npicture\npictured\npictures\npicturesque\npicturesquely\npicturesqueness\npicturing\npicul\npiculs\npiddle\npiddled\npiddler\npiddlers\npiddles\npiddling\npiddock\npiddocks\npidgin\npidgins\npie\npiebald\npiebalds\npiece\npieced\npiecemeal\npiecer\npiecers\npieces\npiecework\npieceworker\npieceworkers\npiecing\npiecings\npiecrust\npiecrusts\npied\npiedfort\npiedforts\npiedmont\npiedmonts\npiefort\npieforts\npieing\npieplant\npieplants\npier\npierce\npierced\npiercer\npiercers\npierces\npiercing\npiercingly\npierrot\npierrots\npiers\npies\npieta\npietas\npieties\npietism\npietisms\npietist\npietistic\npietistical\npietistically\npietists\npiety\npiezoelectric\npiezoelectrically\npiezoelectricity\npiffle\npiffled\npiffles\npiffling\npig\npigboat\npigboats\npigeon\npigeonhole\npigeonholed\npigeonholes\npigeonholing\npigeons\npigfish\npigfishes\npigged\npiggeries\npiggery\npiggie\npiggies\npiggin\npigging\npiggins\npiggish\npiggishly\npiggishness\npiggy\npiggyback\npiggybacked\npiggybacking\npiggybacks\npigheaded\npigheadedly\npigheadedness\npiglet\npiglets\npigment\npigmentary\npigmentation\npigmentations\npigmented\npigmenting\npigments\npigmies\npigmy\npignora\npignus\npignut\npignuts\npigpen\npigpens\npigs\npigskin\npigskins\npigsney\npigsneys\npigstick\npigsticked\npigsticking\npigsticks\npigsties\npigsty\npigtail\npigtailed\npigtails\npigweed\npigweeds\npiing\npika\npikake\npikakes\npikas\npike\npiked\npikeman\npikemen\npiker\npikers\npikes\npikestaff\npikestaffs\npiking\npilaf\npilaff\npilaffs\npilafs\npilar\npilaster\npilasters\npilau\npilaus\npilaw\npilaws\npilchard\npilchards\npile\npilea\npileate\npileated\npiled\npilei\npileous\npiles\npileum\npileup\npileups\npileus\npilewort\npileworts\npilfer\npilferage\npilfered\npilferer\npilferers\npilfering\npilfers\npilgrim\npilgrimage\npilgrimages\npilgrims\npili\npiliform\npiling\npilings\npilis\npill\npillage\npillaged\npillager\npillagers\npillages\npillaging\npillar\npillared\npillaring\npillars\npillbox\npillboxes\npilled\npilling\npillion\npillions\npilloried\npillories\npillory\npillorying\npillow\npillowcase\npillowcases\npillowed\npillowing\npillows\npillowy\npills\npilose\npilosities\npilosity\npilot\npilotage\npilotages\npiloted\npilothouse\npilothouses\npiloting\npilotings\npilotless\npilots\npilous\npilsener\npilseners\npilsner\npilsners\npilular\npilule\npilules\npilus\npily\npima\npimas\npimento\npimentos\npimiento\npimientos\npimp\npimped\npimpernel\npimpernels\npimping\npimple\npimpled\npimples\npimplier\npimpliest\npimply\npimps\npin\npina\npinafore\npinafores\npinang\npinangs\npinas\npinaster\npinasters\npinata\npinatas\npinball\npinballs\npinbone\npinbones\npincer\npincers\npinch\npinchbeck\npinchbug\npinchbugs\npincheck\npinchecks\npinched\npincher\npinchers\npinches\npinching\npincushion\npincushions\npinder\npinders\npindling\npine\npineal\npineapple\npineapples\npinecone\npinecones\npined\npinelike\npinene\npinenes\npineries\npinery\npines\npinesap\npinesaps\npineta\npinetum\npinewood\npinewoods\npiney\npinfeather\npinfeathers\npinfish\npinfishes\npinfold\npinfolded\npinfolding\npinfolds\nping\npinged\npinger\npingers\npinging\npingo\npingos\npingrass\npingrasses\npings\npinguid\npinhead\npinheaded\npinheadedness\npinheads\npinhole\npinholes\npinier\npiniest\npining\npinion\npinioned\npinioning\npinions\npinite\npinites\npink\npinked\npinker\npinkest\npinkeye\npinkeyes\npinkie\npinkies\npinking\npinkings\npinkish\npinkly\npinkness\npinknesses\npinko\npinkoes\npinkos\npinkroot\npinkroots\npinks\npinky\npinna\npinnace\npinnaces\npinnacle\npinnacled\npinnacles\npinnacling\npinnae\npinnal\npinnas\npinnate\npinnated\npinned\npinner\npinners\npinning\npinniped\npinnipeds\npinnula\npinnulae\npinnular\npinnule\npinnules\npinny\npinochle\npinochles\npinocle\npinocles\npinole\npinoles\npinon\npinones\npinons\npinot\npinpoint\npinpointed\npinpointing\npinpoints\npinprick\npinpricked\npinpricking\npinpricks\npins\npinscher\npinschers\npinstripe\npinstripes\npint\npinta\npintada\npintadas\npintado\npintadoes\npintados\npintail\npintails\npintano\npintanos\npintas\npintle\npintles\npinto\npintoes\npintos\npints\npintsize\npinup\npinups\npinwale\npinwales\npinweed\npinweeds\npinwheel\npinwheels\npinwork\npinworks\npinworm\npinworms\npiny\npinyon\npinyons\npiolet\npiolets\npion\npioneer\npioneered\npioneering\npioneers\npionic\npions\npiosities\npiosity\npious\npiously\npiousness\npip\npipage\npipages\npipal\npipals\npipe\npipeage\npipeages\npiped\npipefish\npipefishes\npipeful\npipefuls\npipeless\npipelike\npipeline\npipelined\npipelines\npipelining\npiper\npiperine\npiperines\npipers\npipes\npipestem\npipestems\npipet\npipets\npipette\npipetted\npipettes\npipetting\npipier\npipiest\npiping\npipingly\npipings\npipit\npipits\npipkin\npipkins\npipped\npippin\npipping\npippins\npips\npipy\npiquancies\npiquancy\npiquant\npiquantly\npiquantness\npique\npiqued\npiques\npiquet\npiquets\npiquing\npiracies\npiracy\npiragua\npiraguas\npirana\npiranas\npiranha\npiranhas\npirarucu\npirarucus\npirate\npirated\npirates\npiratic\npiratical\npiratically\npirating\npiraya\npirayas\npirn\npirns\npirog\npirogen\npiroghi\npirogi\npirogue\npirogues\npirojki\npiroque\npiroques\npiroshki\npirouette\npirouetted\npirouettes\npirouetting\npirozhki\npirozhok\npis\npiscaries\npiscary\npiscator\npiscators\npisciculture\npiscina\npiscinae\npiscinal\npiscinas\npiscine\npisco\npish\npished\npishes\npishing\npisiform\npisiforms\npismire\npismires\npisolite\npisolites\npiss\npissant\npissants\npissed\npisses\npissing\npissoir\npissoirs\npistache\npistaches\npistachio\npistachios\npiste\npistil\npistils\npistol\npistole\npistoled\npistoles\npistoling\npistolled\npistolling\npistols\npiston\npistons\npit\npita\npitapat\npitapats\npitapatted\npitapatting\npitas\npitch\npitchblende\npitched\npitcher\npitchers\npitches\npitchfork\npitchforks\npitchier\npitchiest\npitchily\npitching\npitchman\npitchmen\npitchout\npitchouts\npitchy\npiteous\npiteously\npiteousness\npitfall\npitfalls\npith\npithead\npitheads\npithed\npithier\npithiest\npithily\npithiness\npithing\npithless\npiths\npithy\npitiable\npitiableness\npitiably\npitied\npitier\npitiers\npities\npitiful\npitifuller\npitifullest\npitifully\npitifulness\npitiless\npitilessly\npitilessness\npitman\npitmans\npitmen\npiton\npitons\npits\npitsaw\npitsaws\npittance\npittances\npitted\npitting\npittings\npituitaries\npituitary\npity\npitying\npityingly\npiu\npivot\npivotal\npivotally\npivoted\npivoting\npivots\npix\npixel\npixes\npixie\npixieish\npixies\npixilation\npixilations\npixiness\npixinesses\npixy\npixyish\npizazz\npizazzes\npizza\npizzas\npizzeria\npizzerias\npizzle\npizzles\nplacabilities\nplacability\nplacable\nplacably\nplacard\nplacarded\nplacarding\nplacards\nplacate\nplacated\nplacater\nplacaters\nplacates\nplacating\nplacation\nplacations\nplace\nplacebo\nplaceboes\nplacebos\nplaced\nplaceless\nplacelessly\nplaceman\nplacemen\nplacement\nplacements\nplacenta\nplacentae\nplacental\nplacentas\nplacentation\nplacentations\nplacer\nplacers\nplaces\nplacet\nplacets\nplacid\nplacidity\nplacidly\nplacidness\nplacing\nplack\nplacket\nplackets\nplacks\nplacoid\nplacoids\nplafond\nplafonds\nplagal\nplage\nplages\nplagiaries\nplagiarism\nplagiarisms\nplagiarist\nplagiaristic\nplagiarists\nplagiarize\nplagiarized\nplagiarizer\nplagiarizers\nplagiarizes\nplagiarizing\nplagiary\nplague\nplagued\nplaguer\nplaguers\nplagues\nplaguey\nplaguily\nplaguing\nplaguy\nplaice\nplaices\nplaid\nplaided\nplaids\nplain\nplained\nplainer\nplainest\nplaining\nplainly\nplainness\nplains\nplainsman\nplainsmen\nplainsong\nplainsongs\nplaint\nplaintiff\nplaintiffs\nplaintive\nplaintively\nplaintiveness\nplaints\nplaister\nplaistered\nplaistering\nplaisters\nplait\nplaited\nplaiter\nplaiters\nplaiting\nplaitings\nplaits\nplan\nplanar\nplanaria\nplanarias\nplanarity\nplanate\nplanation\nplanations\nplanch\nplanche\nplanches\nplanchet\nplanchets\nplane\nplaned\nplaner\nplaners\nplanes\nplanet\nplanetaria\nplanetarium\nplanetariums\nplanetary\nplanetesimal\nplanetesimals\nplanetoid\nplanetoidal\nplanetoids\nplanets\nplanform\nplanforms\nplangent\nplaning\nplanish\nplanished\nplanishes\nplanishing\nplank\nplanked\nplanking\nplankings\nplanks\nplankter\nplankters\nplankton\nplanktonic\nplanktons\nplanless\nplanned\nplanner\nplanners\nplanning\nplannings\nplanosol\nplanosols\nplans\nplant\nplantain\nplantains\nplantar\nplantation\nplantations\nplanted\nplanter\nplanters\nplantigrade\nplantigrades\nplanting\nplantings\nplantlike\nplants\nplanula\nplanulae\nplanular\nplaque\nplaques\nplash\nplashed\nplasher\nplashers\nplashes\nplashier\nplashiest\nplashing\nplashy\nplasm\nplasma\nplasmas\nplasmatic\nplasmic\nplasmid\nplasmids\nplasmin\nplasmins\nplasmoid\nplasmoids\nplasmon\nplasmons\nplasms\nplaster\nplasterboard\nplasterboards\nplastered\nplastering\nplasters\nplastery\nplastic\nplastically\nplasticity\nplasticization\nplasticizations\nplasticize\nplasticized\nplasticizer\nplasticizers\nplasticizes\nplasticizing\nplastics\nplastid\nplastids\nplastral\nplastron\nplastrons\nplastrum\nplastrums\nplat\nplatan\nplatane\nplatanes\nplatans\nplate\nplateau\nplateaued\nplateauing\nplateaus\nplateaux\nplated\nplateful\nplatefuls\nplatelet\nplatelets\nplatelike\nplaten\nplatens\nplater\nplaters\nplates\nplatesful\nplatform\nplatforms\nplatier\nplaties\nplatiest\nplatina\nplatinas\nplating\nplatings\nplatinic\nplatinum\nplatinums\nplatitude\nplatitudes\nplatitudinize\nplatitudinized\nplatitudinizing\nplatitudinous\nplatitudinously\nplatonic\nplatonically\nplatoon\nplatooned\nplatooning\nplatoons\nplats\nplatted\nplatter\nplatters\nplatting\nplaty\nplatypi\nplatypus\nplatypuses\nplatys\nplaudit\nplaudits\nplausibilities\nplausibility\nplausible\nplausibleness\nplausibly\nplausive\nplay\nplaya\nplayability\nplayable\nplayact\nplayacted\nplayacting\nplayacts\nplayas\nplayback\nplaybacks\nplaybill\nplaybills\nplaybook\nplaybooks\nplayboy\nplayboys\nplayday\nplaydays\nplaydown\nplaydowns\nplayed\nplayer\nplayers\nplayful\nplayfully\nplayfulness\nplaygirl\nplaygirls\nplaygoer\nplaygoers\nplayground\nplaygrounds\nplayhouse\nplayhouses\nplaying\nplayland\nplaylands\nplayless\nplaylet\nplaylets\nplaylike\nplaymate\nplaymates\nplayoff\nplayoffs\nplaypen\nplaypens\nplayroom\nplayrooms\nplays\nplaysuit\nplaysuits\nplaything\nplaythings\nplaytime\nplaytimes\nplaywear\nplaywears\nplaywright\nplaywrights\nplaza\nplazas\nplea\npleach\npleached\npleaches\npleaching\nplead\npleadable\npleaded\npleader\npleaders\npleading\npleadingly\npleadings\npleads\npleas\npleasance\npleasant\npleasanter\npleasantest\npleasantly\npleasantness\npleasantries\npleasantry\nplease\npleased\npleaser\npleasers\npleases\npleasing\npleasingly\npleasingness\npleasurable\npleasurableness\npleasurably\npleasure\npleasured\npleasureless\npleasures\npleasuring\npleat\npleated\npleater\npleaters\npleating\npleats\npleb\nplebe\nplebeian\nplebeianism\nplebeianly\nplebeians\nplebes\nplebiscite\nplebiscites\nplebs\nplectra\nplectron\nplectrons\nplectrum\nplectrums\npled\npledge\npledged\npledgee\npledgees\npledgeor\npledgeors\npledger\npledgers\npledges\npledget\npledgets\npledging\npledgor\npledgors\npleiad\npleiades\npleiads\nplena\nplenary\nplenipotentiaries\nplenipotentiary\nplenish\nplenished\nplenishes\nplenishing\nplenism\nplenisms\nplenist\nplenists\nplenitude\nplenitudes\nplenteous\nplenteously\nplenteousness\nplenties\nplentiful\nplentifully\nplentifulness\nplenty\nplenum\nplenums\npleonasm\npleonasms\npleonastic\npleonastically\npleopod\npleopods\nplessor\nplessors\nplethora\nplethoras\nplethoric\npleura\npleurae\npleural\npleuras\npleurisies\npleurisy\npleuritic\npleuron\npleuston\npleustons\nplew\nplews\nplexor\nplexors\nplexus\nplexuses\npliabilities\npliability\npliable\npliableness\npliably\npliancies\npliancy\npliant\npliantly\npliantness\nplica\nplicae\nplical\nplicate\nplicated\nplie\nplied\nplier\npliers\nplies\nplight\nplighted\nplighter\nplighters\nplighting\nplights\nplimsol\nplimsole\nplimsoles\nplimsoll\nplimsolls\nplimsols\nplink\nplinked\nplinker\nplinkers\nplinking\nplinks\nplinth\nplinths\npliskie\npliskies\nplisky\nplisse\nplisses\nplod\nplodded\nplodder\nplodders\nplodding\nploddingly\nplods\nploidies\nploidy\nplonk\nplonked\nplonking\nplonks\nplop\nplopped\nplopping\nplops\nplosion\nplosions\nplosive\nplosives\nplot\nplotless\nplotlessness\nplots\nplottage\nplottages\nplotted\nplotter\nplotters\nplottier\nplotties\nplottiest\nplotting\nplotty\nplotz\nplough\nploughed\nplougher\nploughers\nploughing\nploughs\nplover\nplovers\nplow\nplowable\nplowback\nplowbacks\nplowboy\nplowboys\nplowed\nplower\nplowers\nplowhead\nplowheads\nplowing\nplowland\nplowlands\nplowman\nplowmen\nplows\nplowshare\nplowshares\nploy\nployed\nploying\nploys\npluck\nplucked\nplucker\npluckers\npluckier\npluckiest\npluckily\npluckiness\nplucking\nplucks\nplucky\nplug\nplugged\nplugger\npluggers\nplugging\nplugless\nplugs\npluguglies\nplugugly\nplum\nplumage\nplumaged\nplumages\nplumate\nplumb\nplumbago\nplumbagos\nplumbed\nplumber\nplumberies\nplumbers\nplumbery\nplumbic\nplumbing\nplumbings\nplumbism\nplumbisms\nplumbous\nplumbs\nplumbum\nplumbums\nplume\nplumed\nplumelet\nplumelets\nplumes\nplumier\nplumiest\npluming\nplumiped\nplumipeds\nplumlike\nplummet\nplummeted\nplummeting\nplummets\nplummier\nplummiest\nplummy\nplumose\nplump\nplumped\nplumpen\nplumpened\nplumpening\nplumpens\nplumper\nplumpers\nplumpest\nplumping\nplumpish\nplumply\nplumpness\nplumps\nplums\nplumular\nplumule\nplumules\nplumy\nplunder\nplunderage\nplunderages\nplundered\nplunderer\nplunderers\nplundering\nplunderous\nplunders\nplunge\nplunged\nplunger\nplungers\nplunges\nplunging\nplunk\nplunked\nplunker\nplunkers\nplunking\nplunks\npluperfect\nplural\npluralism\npluralist\npluralistic\npluralistically\npluralists\npluralities\nplurality\npluralization\npluralizations\npluralize\npluralized\npluralizes\npluralizing\nplurally\nplurals\nplus\npluses\nplush\nplusher\nplushes\nplushest\nplushier\nplushiest\nplushily\nplushiness\nplushly\nplushness\nplushy\nplussage\nplussages\nplusses\nplutocracies\nplutocracy\nplutocrat\nplutocratic\nplutocratically\nplutocrats\npluton\nplutonic\nplutonium\nplutons\npluvial\npluvials\npluviose\npluvious\nply\nplyer\nplyers\nplying\nplyingly\nplywood\nplywoods\npneuma\npneumas\npneumatic\npneumatically\npneumatics\npneumonia\npoaceous\npoach\npoachards\npoached\npoacher\npoachers\npoaches\npoachier\npoachiest\npoaching\npoachy\npochard\npochards\npock\npocked\npocket\npocketable\npocketbook\npocketbooks\npocketed\npocketer\npocketers\npocketful\npocketfuls\npocketing\npocketknife\npocketknives\npockets\npockier\npockiest\npockily\npocking\npockmark\npockmarked\npockmarking\npockmarks\npocks\npocky\npoco\npocosin\npocosins\npod\npodagra\npodagral\npodagras\npodagric\npodded\npodding\npodesta\npodestas\npodgier\npodgiest\npodgily\npodgy\npodia\npodiatries\npodiatrist\npodiatrists\npodiatry\npodite\npodites\npoditic\npodium\npodiums\npodomere\npodomeres\npods\npodsol\npodsolic\npodsols\npodzol\npodzolic\npodzols\npoechore\npoechores\npoem\npoems\npoesies\npoesy\npoet\npoetess\npoetesses\npoetic\npoetical\npoetically\npoeticize\npoeticized\npoeticizes\npoeticizing\npoetics\npoetise\npoetised\npoetiser\npoetisers\npoetises\npoetising\npoetize\npoetized\npoetizer\npoetizers\npoetizes\npoetizing\npoetless\npoetlike\npoetries\npoetry\npoets\npogey\npogeys\npogies\npogonia\npogonias\npogonip\npogonips\npogrom\npogromed\npogroming\npogroms\npogy\npoh\npoi\npoignancy\npoignant\npoilu\npoilus\npoind\npoinded\npoinding\npoinds\npoinsettia\npoinsettias\npoint\npointe\npointed\npointedly\npointedness\npointer\npointers\npointes\npointier\npointiest\npointing\npointless\npointlessly\npointlessness\npointman\npointmen\npoints\npointy\npois\npoise\npoised\npoiser\npoisers\npoises\npoising\npoison\npoisoned\npoisoner\npoisoners\npoisoning\npoisonings\npoisonous\npoisonously\npoisons\npoitrel\npoitrels\npoke\npoked\npoker\npokeroot\npokeroots\npokers\npokes\npokeweed\npokeweeds\npokey\npokeys\npokier\npokies\npokiest\npokily\npokiness\npokinesses\npoking\npoky\npol\npolar\npolarise\npolarised\npolarises\npolarising\npolarities\npolarity\npolarizable\npolarization\npolarizations\npolarize\npolarized\npolarizes\npolarizing\npolaron\npolarons\npolars\npolder\npolders\npole\npoleax\npoleaxe\npoleaxed\npoleaxes\npoleaxing\npolecat\npolecats\npoled\npoleis\npoleless\npolemic\npolemical\npolemically\npolemicist\npolemicists\npolemics\npolemist\npolemists\npolemize\npolemized\npolemizes\npolemizing\npolenta\npolentas\npoler\npolers\npoles\npolestar\npolestars\npoleward\npoleyn\npoleyns\npolice\npoliced\npoliceman\npolicemen\npolices\npolicewoman\npolicewomen\npolicies\npolicing\npolicy\npolicyholder\npolicyholders\npoling\npolio\npoliomyelitis\npolios\npolis\npolish\npolished\npolisher\npolishers\npolishes\npolishing\npolitburo\npolitburos\npolite\npolitely\npoliteness\npoliter\npolitest\npolitic\npolitical\npolitically\npolitician\npoliticians\npoliticize\npoliticized\npoliticizes\npoliticizing\npolitick\npoliticked\npoliticking\npoliticks\npolitico\npoliticoes\npoliticos\npolitics\npolities\npolity\npolka\npolkaed\npolkaing\npolkas\npoll\npollack\npollacks\npollard\npollarded\npollarding\npollards\npolled\npollee\npollees\npollen\npollened\npollening\npollens\npoller\npollers\npollex\npollical\npollices\npollinate\npollinated\npollinates\npollinating\npollination\npollinations\npollinator\npollinators\npolling\npollinia\npollinic\npollist\npollists\npolliwog\npolliwogs\npollock\npollocks\npolls\npollster\npollsters\npollutant\npollutants\npollute\npolluted\npolluter\npolluters\npollutes\npolluting\npollution\npollutions\npollywog\npollywogs\npolo\npoloist\npoloists\npolonium\npoloniums\npolos\npols\npoltergeist\npoltergeists\npoltroon\npoltroonery\npoltroons\npoly\npolyandrous\npolyandry\npolybrid\npolybrids\npolyclinic\npolyclinics\npolycot\npolycots\npolyene\npolyenes\npolyenic\npolyester\npolyesters\npolyethylene\npolyethylenes\npolygala\npolygalas\npolygamies\npolygamist\npolygamists\npolygamous\npolygamy\npolygene\npolygenes\npolyglot\npolyglots\npolygon\npolygonal\npolygonally\npolygonies\npolygons\npolygony\npolygraph\npolygrapher\npolygraphers\npolygraphic\npolygraphist\npolygraphists\npolygraphs\npolygynies\npolygyny\npolyhedra\npolyhedral\npolyhedron\npolyhedrons\npolymath\npolymaths\npolymer\npolymeric\npolymerization\npolymerizations\npolymerize\npolymerized\npolymerizes\npolymerizing\npolymers\npolynomial\npolynomials\npolynya\npolynyas\npolyp\npolyparies\npolypary\npolyphone\npolyphones\npolyphonic\npolyphonically\npolyphonous\npolyphonously\npolyphony\npolypi\npolypide\npolypides\npolypnea\npolypneas\npolypod\npolypodies\npolypods\npolypody\npolypoid\npolypore\npolypores\npolypous\npolyps\npolypus\npolypuses\npolys\npolysemies\npolysemy\npolysome\npolysomes\npolystyrene\npolystyrenes\npolysyllabic\npolysyllabically\npolysyllable\npolysyllables\npolytechnic\npolytechnics\npolytene\npolytenies\npolyteny\npolytheism\npolytheist\npolytheistic\npolytheistical\npolytheistically\npolytheists\npolytype\npolytypes\npolyunsaturated\npolyuria\npolyurias\npolyuric\npolyvinyl\npolyzoan\npolyzoans\npolyzoic\npom\npomace\npomaceous\npomaces\npomade\npomaded\npomades\npomading\npomander\npomanders\npomatum\npomatums\npome\npomegranate\npomegranates\npomelo\npomelos\npomes\npommee\npommel\npommeled\npommeling\npommelled\npommelling\npommels\npommy\npomologies\npomology\npomp\npompadour\npompadours\npompano\npompanos\npompom\npompoms\npompon\npompons\npomposities\npomposity\npompous\npompously\npomps\npoms\nponce\nponces\nponcho\nponchos\npond\nponder\nponderable\npondered\nponderer\nponderers\npondering\nponderous\nponderously\nponderousness\nponders\nponds\npondweed\npondweeds\npone\nponent\npones\npong\npongee\npongees\npongid\npongids\npongs\nponiard\nponiarded\nponiarding\nponiards\nponied\nponies\npons\npontes\npontifex\npontiff\npontiffs\npontific\npontifical\npontifically\npontificals\npontificate\npontificated\npontificates\npontificating\npontifices\npontil\npontils\npontine\nponton\npontons\npontoon\npontoons\npony\nponying\nponytail\nponytails\npooch\npooches\npood\npoodle\npoodles\npoods\npoof\npoofs\npoofy\npooh\npoohed\npoohing\npoohs\npool\npooled\npoolhall\npoolhalls\npooling\npoolroom\npoolrooms\npools\npoon\npoons\npoop\npooped\npooping\npoops\npoor\npoorer\npoorest\npoorhouse\npoorhouses\npoori\npooris\npoorish\npoorly\npoorness\npoornesses\npoortith\npoortiths\npoove\npop\npopcorn\npopcorns\npope\npopedom\npopedoms\npopeless\npopelike\npoperies\npopery\npopes\npopeyed\npopgun\npopguns\npopinjay\npopinjays\npopish\npopishly\npoplar\npoplars\npoplin\npoplins\npoplitic\npopover\npopovers\npoppa\npoppas\npopped\npopper\npoppers\npoppet\npoppets\npoppied\npoppies\npopping\npopple\npoppled\npopples\npoppling\npoppy\npoppycock\npops\npopsy\npopulace\npopulaces\npopular\npopularity\npopularization\npopularizations\npopularize\npopularized\npopularizer\npopularizers\npopularizes\npopularizing\npopularly\npopulate\npopulated\npopulates\npopulating\npopulation\npopulational\npopulations\npopulism\npopulisms\npopulist\npopulists\npopulous\npopulously\npopulousness\nporcelain\nporcelainize\nporcelainized\nporcelainizes\nporcelainizing\nporcelains\nporch\nporches\nporcine\nporcupine\nporcupines\npore\npored\npores\nporgies\nporgy\nporing\nporism\nporisms\npork\nporker\nporkers\nporkier\nporkies\nporkiest\nporkpie\nporkpies\nporks\nporkwood\nporkwoods\nporky\nporn\nporno\npornographer\npornographers\npornographic\npornographically\npornography\npornos\nporns\nporny\nporose\nporosities\nporosity\nporous\nporously\nporphyries\nporphyry\nporpoise\nporpoises\nporrect\nporridge\nporridges\nporringer\nporringers\nport\nportability\nportable\nportables\nportably\nportage\nportaged\nportages\nportaging\nportal\nportaled\nportals\nportance\nportances\nportcullis\nportcullises\nported\nportend\nportended\nportending\nportends\nportent\nportentous\nportentously\nportentousness\nportents\nporter\nporterhouse\nporterhouses\nporters\nportfolio\nportfolios\nporthole\nportholes\nportico\nporticoes\nporticos\nportiere\nportieres\nporting\nportion\nportioned\nportioning\nportionless\nportions\nportless\nportlier\nportliest\nportly\nportmanteau\nportmanteaus\nportmanteaux\nportrait\nportraitist\nportraitists\nportraits\nportraiture\nportraitures\nportray\nportrayal\nportrayals\nportrayed\nportrayer\nportrayers\nportraying\nportrays\nportress\nportresses\nports\nposada\nposadas\npose\nposed\nposer\nposers\nposes\nposeur\nposeurs\nposh\nposher\nposhest\nposies\nposing\nposingly\nposit\nposited\npositing\nposition\npositional\npositionally\npositioned\npositioning\npositions\npositive\npositively\npositiveness\npositiver\npositives\npositivest\npositivism\npositivist\npositivistic\npositivists\npositivity\npositron\npositrons\nposits\nposologies\nposology\nposse\nposses\npossess\npossessed\npossessedly\npossesses\npossessing\npossession\npossessions\npossessive\npossessively\npossessiveness\npossessives\npossessor\npossessors\npossessory\nposset\npossets\npossibilities\npossibility\npossible\npossibler\npossiblest\npossibly\npossum\npossums\npost\npostage\npostages\npostal\npostally\npostals\npostanal\npostbag\npostbags\npostbox\npostboxes\npostboy\npostboys\npostcard\npostcards\npostcava\npostcavae\npostdate\npostdated\npostdates\npostdating\nposted\nposteen\nposteens\nposter\nposterior\nposteriori\nposteriority\nposteriorly\nposteriors\nposterity\npostern\nposterns\nposters\npostface\npostfaces\npostfix\npostfixed\npostfixes\npostfixing\npostflight\npostform\npostformed\npostforming\npostforms\npostgraduate\npostgraduates\nposthaste\nposthole\npostholes\nposthumous\nposthumously\nposthumousness\nposthypnotic\npostiche\npostiches\npostin\nposting\npostings\npostins\npostique\npostiques\npostlude\npostludes\npostman\npostmark\npostmarked\npostmarking\npostmarks\npostmaster\npostmasters\npostmen\npostmistress\npostmistresses\npostmortem\npostmortems\npostnatal\npostnatally\npostoperative\npostoperatively\npostoral\npostpaid\npostpartum\npostponable\npostpone\npostponed\npostponement\npostponements\npostponer\npostponers\npostpones\npostponing\nposts\npostscript\npostscripts\npostsurgical\npostulant\npostulants\npostulate\npostulated\npostulates\npostulating\npostulation\npostulational\npostulations\npostulator\npostulators\npostural\nposture\npostured\nposturer\nposturers\npostures\nposturing\npostwar\nposy\npot\npotability\npotable\npotableness\npotables\npotage\npotages\npotamic\npotash\npotashes\npotassic\npotassium\npotation\npotations\npotato\npotatoes\npotatory\npotbellied\npotbellies\npotbelly\npotboil\npotboiled\npotboiler\npotboilers\npotboiling\npotboils\npotboy\npotboys\npoteen\npoteens\npotence\npotences\npotencies\npotency\npotent\npotentate\npotentates\npotential\npotentialities\npotentiality\npotentially\npotentials\npotentiate\npotentiated\npotentiates\npotentiating\npotentiation\npotentiations\npotentiator\npotentiators\npotentiometer\npotentiometers\npotently\npotful\npotfuls\npothead\npotheads\npotheen\npotheens\npother\npotherb\npotherbs\npothered\npothering\npothers\npothole\npotholed\npotholes\npothook\npothooks\npothouse\npothouses\npotiche\npotiches\npotion\npotions\npotlach\npotlache\npotlaches\npotlatch\npotlatched\npotlatches\npotlatching\npotlike\npotluck\npotlucks\npotman\npotmen\npotpie\npotpies\npotpourri\npotpourris\npots\npotshard\npotshards\npotsherd\npotsherds\npotshot\npotshots\npotshotting\npotsie\npotsies\npotstone\npotstones\npotsy\npottage\npottages\npotted\npotteen\npotteens\npotter\npottered\npotterer\npotterers\npotteries\npottering\npotters\npottery\npottier\npotties\npottiest\npotting\npottle\npottles\npotto\npottos\npotty\npouch\npouched\npouches\npouchier\npouchiest\npouching\npouchy\npouf\npoufed\npouff\npouffe\npouffed\npouffes\npouffs\npoufs\npoulard\npoularde\npoulardes\npoulards\npoult\npoultice\npoulticed\npoultices\npoulticing\npoultries\npoultry\npoults\npounce\npounced\npouncer\npouncers\npounces\npouncing\npound\npoundage\npoundages\npoundal\npoundals\npounded\npounder\npounders\npounding\npounds\npour\npourable\npoured\npourer\npourers\npouring\npouringly\npours\npoussie\npoussies\npout\npouted\npouter\npouters\npoutful\npoutier\npoutiest\npouting\npouts\npouty\npoverties\npoverty\npow\npowder\npowdered\npowderer\npowderers\npowdering\npowders\npowdery\npower\npowered\npowerful\npowerfully\npowerhouse\npowerhouses\npowering\npowerless\npowerlessly\npowerlessness\npowers\npows\npowter\npowters\npowwow\npowwowed\npowwowing\npowwows\npox\npoxed\npoxes\npoxing\npoxvirus\npoxviruses\npoyou\npoyous\npozzolan\npozzolans\npraam\npraams\npractic\npracticability\npracticable\npracticableness\npracticably\npractical\npracticality\npractically\npracticalness\npractice\npracticed\npracticer\npracticers\npractices\npracticing\npractise\npractised\npractises\npractising\npractitioner\npractitioners\npraecipe\npraecipes\npraedial\npraefect\npraefects\npraelect\npraelected\npraelecting\npraelects\npraetor\npraetors\npragmatic\npragmatically\npragmaticism\npragmatics\npragmatism\npragmatist\npragmatistic\npragmatists\nprahu\nprahus\nprairie\nprairies\npraise\npraised\npraiser\npraisers\npraises\npraiseworthiness\npraiseworthy\npraising\npraline\npralines\npram\nprams\nprance\npranced\nprancer\nprancers\nprances\nprancing\nprandial\nprang\npranged\npranging\nprangs\nprank\npranked\npranking\nprankish\nprankishly\nprankishness\npranks\nprankster\npranksters\nprao\npraos\nprase\nprases\nprat\nprate\nprated\nprater\npraters\nprates\npratfall\npratfalls\nprating\npratingly\npratique\npratiques\nprats\nprattle\nprattled\nprattler\nprattlers\nprattles\nprattling\nprattlingly\nprau\npraus\nprawn\nprawned\nprawner\nprawners\nprawning\nprawns\npraxes\npraxis\npraxises\npray\nprayed\nprayer\nprayerful\nprayerfully\nprayerfulness\nprayers\npraying\nprays\npreach\npreached\npreacher\npreachers\npreaches\npreachier\npreachiest\npreachified\npreachifies\npreachify\npreachifying\npreaching\npreachingly\npreachment\npreachments\npreachy\npreact\npreacted\npreacting\npreacts\npreadapt\npreadapted\npreadapting\npreadapts\npreadmit\npreadmits\npreadmitted\npreadmitting\npreadolescence\npreadolescent\npreadolescents\npreadopt\npreadopted\npreadopting\npreadopts\npreadult\npreadults\npreaged\npreallot\npreallots\npreallotted\npreallotting\npreamble\npreambled\npreambles\npreamp\npreamps\npreanal\nprearm\nprearmed\nprearming\nprearms\nprearrange\nprearranged\nprearrangement\nprearrangements\nprearranger\nprearrangers\nprearranges\nprearranging\npreassign\npreassigned\npreassigning\npreassigns\npreaver\npreaverred\npreaverring\npreavers\npreaxial\nprebasal\nprebend\nprebendal\nprebendaries\nprebendary\nprebends\nprebill\nprebilled\nprebilling\nprebills\nprebind\nprebinding\nprebinds\nprebless\npreblessed\npreblesses\npreblessing\npreboil\npreboiled\npreboiling\npreboils\nprebound\nprecancel\nprecanceled\nprecanceling\nprecancellation\nprecancellations\nprecancels\nprecarious\nprecariously\nprecariousness\nprecast\nprecasting\nprecasts\nprecaution\nprecautionary\nprecautions\nprecava\nprecavae\nprecaval\nprecede\npreceded\nprecedence\nprecedences\nprecedency\nprecedent\nprecedents\nprecedes\npreceding\nprecent\nprecented\nprecenting\nprecents\nprecept\npreceptive\npreceptor\npreceptorial\npreceptors\nprecepts\nprecess\nprecessed\nprecesses\nprecessing\nprecession\nprecessional\nprecessions\nprecheck\nprechecked\nprechecking\nprechecks\nprechill\nprechilled\nprechilling\nprechills\nprecieux\nprecinct\nprecincts\npreciosities\npreciosity\nprecious\npreciouses\npreciously\npreciousness\nprecipe\nprecipes\nprecipice\nprecipiced\nprecipices\nprecipitance\nprecipitancy\nprecipitant\nprecipitantly\nprecipitants\nprecipitate\nprecipitated\nprecipitately\nprecipitateness\nprecipitates\nprecipitating\nprecipitation\nprecipitations\nprecipitative\nprecipitator\nprecipitators\nprecipitous\nprecipitously\nprecipitousness\nprecis\nprecise\nprecised\nprecisely\npreciseness\npreciser\nprecises\nprecisest\nprecising\nprecision\nprecisionist\nprecisionists\nprecisions\nprecited\npreclean\nprecleaned\nprecleaning\nprecleans\npreclude\nprecluded\nprecludes\nprecluding\npreclusion\npreclusions\npreclusive\npreclusively\nprecocious\nprecociously\nprecociousness\nprecocity\nprecognition\nprecognitions\nprecognitive\npreconceive\npreconceived\npreconceives\npreconceiving\npreconception\npreconceptions\nprecondition\npreconditioned\npreconditioning\npreconditions\npreconscious\npreconsciouses\npreconsciously\nprecook\nprecooked\nprecooking\nprecooks\nprecool\nprecooled\nprecooling\nprecools\nprecure\nprecured\nprecures\nprecuring\nprecursor\nprecursors\nprecursory\npredaceous\npredaceousness\npredacious\npredaciousness\npredacity\npredate\npredated\npredates\npredating\npredation\npredations\npredator\npredators\npredatory\npredawn\npredawns\npredecease\npredeceased\npredeceases\npredeceasing\npredecessor\npredecessors\npredefined\npredestinarian\npredestinarianism\npredestinarians\npredestinate\npredestinated\npredestinates\npredestinating\npredestination\npredestinations\npredestine\npredestined\npredestines\npredestining\npredetermination\npredeterminations\npredetermine\npredetermined\npredetermines\npredetermining\npredial\npredicable\npredicament\npredicaments\npredicate\npredicated\npredicates\npredicating\npredication\npredications\npredicator\npredicators\npredicatory\npredict\npredictability\npredictable\npredictably\npredicted\npredicting\nprediction\npredictions\npredictive\npredictively\npredictor\npredictors\npredicts\npredigest\npredigested\npredigesting\npredigestion\npredigestions\npredigests\npredilection\npredilections\npredispose\npredisposed\npredisposes\npredisposing\npredisposition\npredispositions\npredominance\npredominances\npredominancy\npredominant\npredominantly\npredominate\npredominated\npredominately\npredominates\npredominating\npredomination\npredominations\npredusk\npredusks\npree\npreed\npreeing\npreelect\npreelected\npreelecting\npreelects\npreemie\npreemies\npreeminence\npreeminent\npreeminently\npreempt\npreempted\npreempting\npreemption\npreemptions\npreemptive\npreemptively\npreempts\npreen\npreenact\npreenacted\npreenactg\npreenacting\npreenacts\npreened\npreener\npreeners\npreening\npreens\nprees\npreestablish\npreestablished\npreestablishes\npreestablishing\npreexist\npreexisted\npreexistence\npreexistences\npreexistent\npreexisting\npreexists\nprefab\nprefabbed\nprefabbing\nprefabricate\nprefabricated\nprefabricates\nprefabricating\nprefabrication\nprefabrications\nprefabs\npreface\nprefaced\nprefacer\nprefacers\nprefaces\nprefacing\nprefatory\nprefect\nprefects\nprefectural\nprefecture\nprefectures\nprefer\npreferability\npreferable\npreferably\npreference\npreferences\npreferential\npreferentially\npreferment\npreferments\npreferred\npreferring\nprefers\nprefiguration\nprefigurations\nprefigurative\nprefiguratively\nprefigurativeness\nprefigure\nprefigured\nprefigurement\nprefigurements\nprefigures\nprefiguring\nprefix\nprefixal\nprefixed\nprefixes\nprefixing\npreflight\nprefocus\nprefocused\nprefocuses\nprefocusing\nprefocussed\nprefocusses\nprefocussing\npreform\npreformation\npreformations\npreformed\npreforming\npreforms\nprefrank\nprefranked\nprefranking\nprefranks\npregame\npregnability\npregnable\npregnancies\npregnancy\npregnant\npregnantly\npreheat\npreheated\npreheating\npreheats\nprehensile\nprehensility\nprehension\nprehensions\nprehistorian\nprehistorians\nprehistoric\nprehistorically\nprehistories\nprehistory\nprehuman\nprehumans\nprejudge\nprejudged\nprejudges\nprejudging\nprejudgment\nprejudgments\nprejudice\nprejudiced\nprejudices\nprejudicial\nprejudicially\nprejudicialness\nprejudicing\nprelacies\nprelacy\nprelate\nprelates\nprelatic\nprelaunch\nprelect\nprelected\nprelecting\nprelects\nprelegal\nprelim\npreliminaries\npreliminarily\npreliminary\nprelimit\nprelimited\nprelimiting\nprelimits\nprelims\nprelude\npreluded\npreluder\npreluders\npreludes\npreluding\nprelusion\nprelusions\nprelusive\nprelusively\npreman\npremarital\npremature\nprematurely\nprematureness\nprematurity\npremed\npremedic\npremedical\npremedics\npremeditate\npremeditated\npremeditatedly\npremeditates\npremeditating\npremeditation\npremeditations\npremeditative\npremeds\npremen\npremenstrual\npremie\npremier\npremiere\npremiered\npremieres\npremiering\npremiers\npremies\npremise\npremised\npremises\npremising\npremiss\npremisses\npremium\npremiums\npremix\npremixed\npremixes\npremixing\npremolar\npremolars\npremonition\npremonitions\npremonitory\npremorse\npremune\nprename\nprenames\nprenatal\nprenatally\nprenomen\nprenomens\nprenomina\nprentice\nprenticed\nprentices\nprenticing\npreoccupancy\npreoccupation\npreoccupations\npreoccupied\npreoccupies\npreoccupy\npreoccupying\npreordain\npreordained\npreordaining\npreordains\npreordination\npreordinations\nprep\nprepack\nprepackage\nprepackaged\nprepackages\nprepackaging\nprepacked\nprepacking\nprepacks\nprepaid\npreparation\npreparations\npreparative\npreparatively\npreparatorily\npreparatory\nprepare\nprepared\npreparedly\npreparedness\npreparer\npreparers\nprepares\npreparing\nprepay\nprepaying\nprepayment\nprepayments\nprepays\nprepense\npreplace\npreplaced\npreplaces\npreplacing\npreplan\npreplanned\npreplanning\npreplans\npreplant\npreponderance\npreponderances\npreponderancy\npreponderant\npreponderantly\npreponderate\npreponderated\npreponderates\npreponderating\npreponderation\npreponderations\npreposition\nprepositional\nprepositionally\nprepositions\nprepossess\nprepossessed\nprepossesses\nprepossessing\nprepossession\nprepossessions\npreposterous\npreposterously\npreposterousness\nprepped\npreppie\npreppies\nprepping\npreprint\npreprinted\npreprinting\npreprints\npreprocess\npreprocessed\npreprocesses\npreprocessing\npreprocessor\npreprocessors\npreprogram\npreprogramming\npreps\nprepuce\nprepuces\nprepunch\nprepunched\nprepunches\nprepunching\nprerecord\nprerecorded\nprerecording\nprerecords\npreregister\npreregistered\npreregistering\npreregisters\npreregistration\npreregistrations\nprerenal\nprerequisite\nprerequisites\nprerogative\nprerogatives\npresa\npresage\npresaged\npresager\npresagers\npresages\npresaging\npresbyter\npresbyterial\npresbyters\npreschool\npreschools\nprescience\nprescient\npresciently\nprescind\nprescinded\nprescinding\nprescinds\nprescore\nprescored\nprescores\nprescoring\nprescribe\nprescribed\nprescriber\nprescribers\nprescribes\nprescribing\nprescript\nprescription\nprescriptions\nprescriptive\nprescriptively\nprescripts\nprese\npreseason\npresell\npreselling\npresells\npresence\npresences\npresent\npresentability\npresentable\npresentableness\npresentably\npresentation\npresentational\npresentations\npresentative\npresented\npresentee\npresentees\npresenter\npresenters\npresentiment\npresentimental\npresentiments\npresenting\npresently\npresentment\npresentments\npresentness\npresents\npreservability\npreservable\npreservation\npreservationist\npreservationists\npreservations\npreservative\npreservatives\npreserve\npreserved\npreserver\npreservers\npreserves\npreserving\npreset\npresets\npresetting\npreshape\npreshaped\npreshapes\npreshaping\npreshow\npreshowed\npreshowing\npreshown\npreshows\npreshrunk\npreside\npresided\npresidencies\npresidency\npresident\npresidential\npresidentially\npresidents\npresider\npresiders\npresides\npresidia\npresiding\npresidio\npresidios\npresidium\npresidiums\npresift\npresifted\npresifting\npresifts\npresignified\npresignifies\npresignify\npresignifying\npresoak\npresoaked\npresoaking\npresoaks\npresold\npress\npressed\npresser\npressers\npresses\npressing\npressingly\npressman\npressmen\npressor\npressrun\npressruns\npressure\npressured\npressureless\npressures\npressuring\npressurization\npressurizations\npressurize\npressurized\npressurizer\npressurizers\npressurizes\npressurizing\npresswork\npressworks\nprest\nprestamp\nprestamped\nprestamping\nprestamps\nprester\npresters\nprestidigitation\nprestidigitations\nprestidigitator\nprestidigitators\nprestige\nprestiges\nprestigious\nprestigiously\nprestigiousness\npresto\nprestos\nprestress\nprestressed\nprestresses\nprestressing\nprests\npresumable\npresumably\npresume\npresumed\npresumedly\npresumer\npresumers\npresumes\npresuming\npresumingly\npresumption\npresumptions\npresumptive\npresumptively\npresumptuous\npresumptuously\npresumptuousness\npresuppose\npresupposed\npresupposes\npresupposing\npresupposition\npresuppositions\npretaste\npretasted\npretastes\npretasting\npretax\npreteen\npreteens\npretence\npretences\npretend\npretended\npretendedly\npretender\npretenders\npretending\npretends\npretense\npretenses\npretension\npretensions\npretentious\npretentiously\npretentiousness\npreterit\npreterite\npreterites\npreterits\npreternatural\npreternaturally\npreternaturalness\npretest\npretested\npretesting\npretests\npretext\npretexted\npretexting\npretexts\npretor\npretors\npretreat\npretreated\npretreating\npretreats\nprettied\nprettier\npretties\nprettiest\nprettified\nprettifies\nprettify\nprettifying\nprettily\nprettiness\npretty\nprettying\nprettyish\npretzel\npretzels\npreunion\npreunions\npreunite\npreunited\npreunites\npreuniting\nprevail\nprevailed\nprevailing\nprevailingly\nprevails\nprevalence\nprevalent\nprevalently\nprevaricate\nprevaricated\nprevaricates\nprevaricating\nprevarication\nprevarications\nprevaricator\nprevaricators\nprevenient\npreveniently\nprevent\npreventability\npreventable\npreventative\nprevented\npreventing\nprevention\npreventions\npreventive\npreventively\npreventiveness\nprevents\npreview\npreviewed\npreviewing\npreviews\nprevious\npreviously\nprevise\nprevised\nprevises\nprevising\nprevision\nprevisional\nprevisions\nprevisor\nprevisors\nprevue\nprevued\nprevues\nprevuing\nprewar\nprewarm\nprewarmed\nprewarming\nprewarms\nprewarn\nprewarned\nprewarning\nprewarns\nprewash\nprewashed\nprewashes\nprewashing\nprewrap\nprewrapped\nprewrapping\nprewraps\nprex\nprexes\nprexies\nprexy\nprey\npreyed\npreyer\npreyers\npreying\npreys\nprez\npriapean\npriapi\npriapic\npriapism\npriapisms\npriapus\npriapuses\nprice\npriced\npriceless\npricer\npricers\nprices\npricey\npricier\npriciest\npricing\nprick\npricked\npricker\nprickers\npricket\nprickets\nprickier\nprickiest\npricking\nprickle\nprickled\nprickles\npricklier\nprickliest\nprickling\nprickly\npricks\npricky\npricy\npride\nprided\nprideful\npridefully\npridefulness\nprides\npriding\npried\npriedieu\npriedieus\npriedieux\nprier\npriers\npries\npriest\npriested\npriestess\npriestesses\npriesthood\npriesthoods\npriesting\npriestlier\npriestliest\npriestliness\npriestly\npriests\nprig\nprigged\npriggeries\npriggery\nprigging\npriggish\npriggishly\npriggishness\npriggism\npriggisms\nprigs\nprill\nprilled\nprilling\nprills\nprim\nprima\nprimacies\nprimacy\nprimage\nprimages\nprimal\nprimaries\nprimarily\nprimary\nprimas\nprimatal\nprimate\nprimates\nprime\nprimed\nprimely\nprimeness\nprimer\nprimero\nprimeros\nprimers\nprimes\nprimeval\nprimevally\nprimi\nprimine\nprimines\npriming\nprimings\nprimitive\nprimitively\nprimitiveness\nprimitives\nprimitivism\nprimitivist\nprimitivistic\nprimitivists\nprimly\nprimmed\nprimmer\nprimmest\nprimming\nprimness\nprimnesses\nprimo\nprimogenitor\nprimogenitors\nprimogeniture\nprimogenitures\nprimordial\nprimordially\nprimos\nprimp\nprimped\nprimping\nprimps\nprimrose\nprimroses\nprims\nprimsie\nprimula\nprimulas\nprimus\nprimuses\nprince\nprincedom\nprincedoms\nprincelier\nprinceliest\nprinceling\nprincelings\nprincely\nprinces\nprincess\nprincesses\nprincipal\nprincipalities\nprincipality\nprincipally\nprincipals\nprincipe\nprincipi\nprinciple\nprincipled\nprinciples\nprincock\nprincocks\nprincox\nprincoxes\nprink\nprinked\nprinker\nprinkers\nprinking\nprinks\nprint\nprintability\nprintable\nprinted\nprinter\nprinteries\nprinters\nprintery\nprinting\nprintings\nprintout\nprintouts\nprints\nprior\npriorate\npriorates\nprioress\nprioresses\npriories\npriorities\nprioritize\nprioritized\nprioritizes\nprioritizing\npriority\npriorly\npriors\npriory\nprise\nprised\nprisere\npriseres\nprises\nprising\nprism\nprismatic\nprismatically\nprismoid\nprismoids\nprisms\nprison\nprisoned\nprisoner\nprisoners\nprisoning\nprisons\npriss\nprisses\nprissier\nprissies\nprissiest\nprissily\nprissiness\nprissy\npristane\npristanes\npristine\nprithee\nprivacies\nprivacy\nprivate\nprivateer\nprivateers\nprivately\nprivateness\nprivater\nprivates\nprivatest\nprivation\nprivations\nprivatism\nprivative\nprivatively\nprivet\nprivets\nprivier\nprivies\npriviest\nprivilege\nprivileged\nprivileges\nprivileging\nprivily\nprivities\nprivity\nprivy\nprize\nprized\nprizefight\nprizefighter\nprizefighters\nprizefighting\nprizefights\nprizer\nprizers\nprizes\nprizewinner\nprizewinners\nprizing\npro\nproa\nproas\nprobabilist\nprobabilistic\nprobabilists\nprobabilities\nprobability\nprobable\nprobably\nproband\nprobands\nprobang\nprobangs\nprobate\nprobated\nprobates\nprobating\nprobation\nprobational\nprobationary\nprobationer\nprobationers\nprobations\nprobative\nprobe\nprobed\nprober\nprobers\nprobes\nprobing\nprobit\nprobities\nprobits\nprobity\nproblem\nproblematic\nproblematical\nproblematically\nproblems\nproboscis\nproboscises\nprocaine\nprocaines\nprocarp\nprocarps\nprocedural\nprocedure\nprocedures\nproceed\nproceeded\nproceeding\nproceedings\nproceeds\nprocess\nprocessed\nprocesses\nprocessing\nprocession\nprocessional\nprocessionally\nprocessions\nprocessor\nprocessors\nprochain\nprochein\nproclaim\nproclaimed\nproclaiming\nproclaims\nproclamation\nproclamations\nproclivities\nproclivity\nproconsul\nproconsular\nproconsulate\nproconsulates\nproconsuls\nprocrastinate\nprocrastinated\nprocrastinates\nprocrastinating\nprocrastination\nprocrastinations\nprocrastinator\nprocrastinators\nprocreate\nprocreated\nprocreates\nprocreating\nprocreation\nprocreations\nprocreative\nprocreator\nprocreators\nproctologic\nproctological\nproctologist\nproctologists\nproctology\nproctor\nproctored\nproctorial\nproctoring\nproctors\nprocurable\nprocural\nprocurals\nprocurance\nprocurances\nprocuration\nprocurations\nprocurator\nprocurators\nprocure\nprocured\nprocurement\nprocurements\nprocurer\nprocurers\nprocures\nprocuring\nprod\nprodded\nprodder\nprodders\nprodding\nprodigal\nprodigality\nprodigally\nprodigals\nprodigies\nprodigious\nprodigiously\nprodigiousness\nprodigy\nprodromata\nprodrome\nprodromes\nprods\nproduce\nproduced\nproducer\nproducers\nproduces\nproducible\nproducing\nproduct\nproduction\nproductional\nproductions\nproductive\nproductively\nproductiveness\nproductivity\nproducts\nproem\nproemial\nproems\nproette\nproettes\nprof\nprofanation\nprofanations\nprofane\nprofaned\nprofanely\nprofaneness\nprofaner\nprofaners\nprofanes\nprofaning\nprofanities\nprofanity\nprofess\nprofessed\nprofessedly\nprofesses\nprofessing\nprofession\nprofessional\nprofessionalism\nprofessionalize\nprofessionally\nprofessionals\nprofessions\nprofessor\nprofessorate\nprofessorates\nprofessorial\nprofessorially\nprofessoriat\nprofessoriate\nprofessoriates\nprofessoriats\nprofessors\nprofessorship\nprofessorships\nproffer\nproffered\nproffering\nproffers\nproficiency\nproficient\nproficiently\nprofile\nprofiled\nprofiler\nprofilers\nprofiles\nprofiling\nprofit\nprofitability\nprofitable\nprofitableness\nprofitably\nprofited\nprofiteer\nprofiteered\nprofiteering\nprofiteers\nprofiter\nprofiters\nprofiting\nprofitless\nprofits\nprofligacy\nprofligate\nprofligately\nprofligates\nprofound\nprofounder\nprofoundest\nprofoundly\nprofoundness\nprofounds\nprofs\nprofundities\nprofundity\nprofuse\nprofusely\nprofuseness\nprofusion\nprofusions\nprog\nprogenies\nprogenitor\nprogenitors\nprogeny\nprogged\nprogger\nproggers\nprogging\nprognathous\nprognose\nprognosed\nprognoses\nprognosing\nprognosis\nprognostic\nprognosticate\nprognosticated\nprognosticates\nprognosticating\nprognostication\nprognostications\nprognosticative\nprognosticator\nprognosticators\nprograde\nprogram\nprogramed\nprogramer\nprogramers\nprograming\nprogrammability\nprogrammable\nprogrammatic\nprogrammatically\nprogrammed\nprogrammer\nprogrammers\nprogramming\nprograms\nprogress\nprogressed\nprogresses\nprogressing\nprogression\nprogressional\nprogressions\nprogressive\nprogressively\nprogressiveness\nprogressivism\nprogressivist\nprogressivists\nprogs\nprohibit\nprohibited\nprohibiting\nprohibition\nprohibitionist\nprohibitionists\nprohibitions\nprohibitive\nprohibitively\nprohibitiveness\nprohibitory\nprohibits\nproject\nprojected\nprojectile\nprojectiles\nprojecting\nprojection\nprojectional\nprojectionist\nprojectionists\nprojections\nprojective\nprojectively\nprojector\nprojectors\nprojects\nprojet\nprojets\nprolabor\nprolamin\nprolamine\nprolamines\nprolamins\nprolan\nprolans\nprolapse\nprolapsed\nprolapses\nprolapsing\nprolate\nprole\nproleg\nprolegs\nproleptic\nproles\nproletarian\nproletarianization\nproletarianize\nproletarianized\nproletarianizes\nproletarianizing\nproletarians\nproletariat\nproletariats\nproliferate\nproliferated\nproliferates\nproliferating\nproliferation\nproliferations\nproliferative\nprolific\nprolifically\nprolificness\nproline\nprolines\nprolix\nprolixity\nprolixly\nprolocutor\nprolocutors\nprolog\nprologed\nprologing\nprologize\nprologized\nprologizes\nprologizing\nprologs\nprologue\nprologued\nprologues\nprologuing\nprologuize\nprologuized\nprologuizes\nprologuizing\nprolong\nprolongation\nprolongations\nprolonge\nprolonged\nprolonges\nprolonging\nprolongs\nprom\npromenade\npromenaded\npromenades\npromenading\nprominence\nprominences\nprominent\nprominently\npromiscuities\npromiscuity\npromiscuous\npromiscuously\npromiscuousness\npromise\npromised\npromisee\npromisees\npromiser\npromisers\npromises\npromising\npromisingly\npromisor\npromisors\npromissory\npromo\npromontories\npromontory\npromotable\npromote\npromoted\npromoter\npromoters\npromotes\npromoting\npromotion\npromotional\npromotions\npromotive\nprompt\nprompted\nprompter\nprompters\npromptest\nprompting\npromptitude\npromptly\npromptness\nprompts\nproms\npromulgate\npromulgated\npromulgates\npromulgating\npromulgation\npromulgations\npromulgator\npromulgators\npromulge\npromulged\npromulges\npromulging\npronate\npronated\npronates\npronating\npronator\npronatores\npronators\nprone\npronely\nproneness\nprong\npronged\npronging\nprongs\npronominal\npronominally\npronota\npronotum\npronoun\npronounce\npronounceable\npronounced\npronouncement\npronouncements\npronounces\npronouncing\npronouns\npronto\npronunciation\npronunciational\npronunciations\nproof\nproofed\nproofer\nproofers\nproofing\nproofread\nproofreader\nproofreaders\nproofreading\nproofreads\nproofs\nprop\npropagable\npropaganda\npropagandist\npropagandistic\npropagandists\npropagandize\npropagandized\npropagandizes\npropagandizing\npropagate\npropagated\npropagates\npropagating\npropagation\npropagations\npropagative\npropagator\npropagators\npropane\npropanes\npropel\npropellant\npropellants\npropelled\npropellent\npropeller\npropellers\npropelling\npropels\npropend\npropended\npropending\npropends\npropene\npropenes\npropenol\npropenols\npropense\npropensities\npropensity\npropenyl\nproper\nproperer\nproperest\nproperly\nproperness\npropers\npropertied\nproperties\nproperty\npropertyless\nprophage\nprophages\nprophase\nprophases\nprophecies\nprophecy\nprophesied\nprophesier\nprophesiers\nprophesies\nprophesy\nprophesying\nprophet\nprophetess\nprophetesses\nprophetic\nprophetical\nprophetically\nprophets\nprophylactic\nprophylactically\nprophylactics\nprophylaxes\nprophylaxis\npropine\npropined\npropines\npropining\npropinquities\npropinquity\npropitiate\npropitiated\npropitiates\npropitiating\npropitiation\npropitiations\npropitiator\npropitiators\npropitiatory\npropitious\npropitiously\npropitiousness\npropjet\npropjets\npropman\npropmen\npropolis\npropolises\npropone\nproponed\nproponent\nproponents\npropones\nproponing\nproportion\nproportionable\nproportionably\nproportional\nproportionality\nproportionally\nproportionate\nproportionated\nproportionately\nproportionates\nproportionating\nproportioned\nproportioning\nproportions\nproposal\nproposals\npropose\nproposed\nproposer\nproposers\nproposes\nproposing\nproposition\npropositional\npropositioned\npropositioning\npropositions\npropound\npropounded\npropounder\npropounders\npropounding\npropounds\npropped\npropping\nproprietaries\nproprietary\nproprieties\nproprietor\nproprietors\nproprietorship\nproprietress\nproprietresses\npropriety\nprops\npropulsion\npropulsions\npropulsive\npropyl\npropyla\npropylic\npropylon\npropyls\nprorate\nprorated\nprorates\nprorating\nproration\nprorations\nprorogation\nprorogations\nprorogue\nprorogued\nprorogues\nproroguing\npros\nprosaic\nprosaically\nprosaism\nprosaisms\nprosaist\nprosaists\nprosciutti\nprosciutto\nprosciuttos\nproscribe\nproscribed\nproscriber\nproscribers\nproscribes\nproscribing\nproscription\nproscriptions\nproscriptive\nproscriptively\nprose\nprosect\nprosected\nprosecting\nprosects\nprosecutable\nprosecute\nprosecuted\nprosecutes\nprosecuting\nprosecution\nprosecutions\nprosecutor\nprosecutors\nprosed\nproselyte\nproselyted\nproselytes\nproselyting\nproselytize\nproselytized\nproselytizer\nproselytizers\nproselytizes\nproselytizing\nproser\nprosers\nproses\nprosier\nprosiest\nprosily\nprosiness\nprosing\nprosit\nproso\nprosodic\nprosodical\nprosodies\nprosody\nprosoma\nprosomal\nprosomas\nprosos\nprospect\nprospected\nprospecting\nprospective\nprospectively\nprospector\nprospectors\nprospects\nprospectus\nprospectuses\nprosper\nprospered\nprospering\nprosperity\nprosperous\nprosperously\nprosperousness\nprospers\npross\nprost\nprostate\nprostates\nprostheses\nprosthesis\nprosthetic\nprosthetically\nprosthetics\nprostitute\nprostituted\nprostitutes\nprostituting\nprostitution\nprostitutions\nprostrate\nprostrated\nprostrates\nprostrating\nprostration\nprostrations\nprostyle\nprostyles\nprosy\nprotagonist\nprotagonists\nprotamin\nprotamins\nprotases\nprotasis\nprotatic\nprotea\nprotean\nproteas\nprotease\nproteases\nprotect\nprotected\nprotecting\nprotection\nprotectionism\nprotectionist\nprotectionists\nprotections\nprotective\nprotectively\nprotectiveness\nprotector\nprotectoral\nprotectorate\nprotectorates\nprotectories\nprotectors\nprotectorship\nprotectory\nprotectress\nprotectresses\nprotects\nprotege\nprotegee\nprotegees\nproteges\nprotei\nproteid\nproteide\nproteides\nproteids\nprotein\nproteins\nprotend\nprotended\nprotending\nprotends\nproteose\nproteoses\nprotest\nprotestant\nprotestation\nprotestations\nprotested\nprotester\nprotesters\nprotesting\nprotestor\nprotestors\nprotests\nproteus\nprothonotaries\nprothonotary\nprotist\nprotists\nprotium\nprotiums\nprotocol\nprotocoled\nprotocoling\nprotocolled\nprotocolling\nprotocols\nproton\nprotonic\nprotons\nprotoplasm\nprotoplasmic\nprotoplasms\nprotopod\nprotopods\nprototypal\nprototype\nprototypes\nprototypical\nprototypically\nprotoxid\nprotoxids\nprotozoa\nprotozoal\nprotozoan\nprotozoans\nprotozoologist\nprotozoologists\nprotozoology\nprotozoon\nprotract\nprotracted\nprotractile\nprotracting\nprotraction\nprotractions\nprotractive\nprotractor\nprotractors\nprotracts\nprotrude\nprotruded\nprotrudes\nprotruding\nprotrusion\nprotrusions\nprotrusive\nprotrusively\nprotrusiveness\nprotuberance\nprotuberances\nprotuberant\nprotuberantly\nprotyl\nprotyle\nprotyles\nprotyls\nproud\nprouder\nproudest\nproudful\nproudly\nprounion\nprovable\nprovableness\nprovably\nprove\nproved\nproven\nprovenance\nprovenances\nprovender\nprovenience\nproveniences\nprovenly\nprover\nproverb\nproverbed\nproverbial\nproverbially\nproverbing\nproverbs\nprovers\nproves\nprovide\nprovided\nprovidence\nprovident\nprovidential\nprovidentially\nprovidently\nprovider\nproviders\nprovides\nproviding\nprovince\nprovinces\nprovincial\nprovincialism\nprovincialisms\nprovincialities\nprovinciality\nprovincially\nproving\nproviral\nprovirus\nproviruses\nprovision\nprovisional\nprovisionally\nprovisionary\nprovisioned\nprovisioner\nprovisioners\nprovisioning\nprovisions\nproviso\nprovisoes\nprovisory\nprovisos\nprovocateur\nprovocateurs\nprovocation\nprovocations\nprovocative\nprovocatively\nprovocativeness\nprovoke\nprovoked\nprovoker\nprovokers\nprovokes\nprovoking\nprovokingly\nprovolone\nprovost\nprovosts\nprow\nprowar\nprower\nprowess\nprowesses\nprowest\nprowl\nprowled\nprowler\nprowlers\nprowling\nprowls\nprows\nproxemic\nproxies\nproximal\nproximally\nproximate\nproximately\nproximateness\nproximity\nproximo\nproxy\nprude\nprudence\nprudences\nprudent\nprudential\nprudentially\nprudently\npruderies\nprudery\nprudes\nprudish\nprudishly\nprudishness\npruinose\nprunable\nprune\npruned\nprunella\nprunellas\nprunelle\nprunelles\nprunello\nprunellos\npruner\npruners\nprunes\npruning\nprurience\npruriency\nprurient\npruriently\nprurigo\nprurigos\npruritic\npruritus\nprurituses\nprussic\npruta\nprutah\nprutot\nprutoth\npry\npryer\npryers\nprying\npryingly\nprythee\npsalm\npsalmbook\npsalmbooks\npsalmed\npsalmic\npsalming\npsalmist\npsalmists\npsalmodies\npsalmody\npsalms\npsalter\npsalteries\npsalters\npsaltery\npsaltries\npsaltry\npsammite\npsammites\npschent\npschents\npsephite\npsephites\npseud\npseudo\npseudonym\npseudonymity\npseudonymous\npseudonymously\npseudonyms\npseudorandom\npshaw\npshawed\npshawing\npshaws\npsi\npsiloses\npsilosis\npsilotic\npsis\npsoae\npsoai\npsoas\npsocid\npsocids\npsoralea\npsoraleas\npsoriasis\npsst\npsych\npsyche\npsyched\npsychedelic\npsychedelically\npsyches\npsychiatric\npsychiatrically\npsychiatrist\npsychiatrists\npsychiatry\npsychic\npsychically\npsychics\npsyching\npsycho\npsychoanalysis\npsychoanalyst\npsychoanalysts\npsychoanalytic\npsychoanalytically\npsychoanalyze\npsychoanalyzed\npsychoanalyzes\npsychoanalyzing\npsychobiological\npsychobiologies\npsychobiologist\npsychobiologists\npsychobiology\npsychodrama\npsychodramas\npsychogenetic\npsychological\npsychologically\npsychologies\npsychologist\npsychologists\npsychologize\npsychologized\npsychologizes\npsychologizing\npsychology\npsychometric\npsychometrically\npsychometrician\npsychometricians\npsychometrics\npsychometry\npsychopath\npsychopathic\npsychopathologic\npsychopathological\npsychopathologist\npsychopathologists\npsychopathology\npsychopaths\npsychos\npsychoses\npsychosexual\npsychosexuality\npsychosexually\npsychosis\npsychosomatic\npsychosomatically\npsychosomatics\npsychotherapies\npsychotherapist\npsychotherapists\npsychotherapy\npsychotic\npsychrometer\npsychrometers\npsychrometric\npsychs\npsylla\npsyllas\npsyllid\npsyllids\nptarmigan\nptarmigans\npterin\npterins\npterodactyl\npterodactyls\npteropod\npteropods\npteryla\npterylae\nptisan\nptisans\nptomain\nptomaine\nptomaines\nptomains\nptoses\nptosis\nptotic\nptyalin\nptyalins\nptyalism\nptyalisms\npub\npuberal\npubertal\npuberties\npuberty\npubes\npubescence\npubescent\npubic\npubis\npublic\npublican\npublicans\npublication\npublications\npublicist\npublicists\npublicities\npublicity\npublicize\npublicized\npublicizes\npublicizing\npublicly\npublicness\npublics\npublish\npublishable\npublished\npublisher\npublishers\npublishes\npublishing\npubs\npuccoon\npuccoons\npuce\npuces\npuck\npucka\npucker\npuckered\npuckerer\npuckerers\npuckerier\npuckeriest\npuckering\npuckers\npuckery\npuckish\npucks\npud\npudding\npuddings\npuddle\npuddled\npuddler\npuddlers\npuddles\npuddlier\npuddliest\npuddling\npuddlings\npuddly\npudencies\npudency\npudenda\npudendal\npudendum\npudgier\npudgiest\npudgily\npudgy\npudic\npuds\npueblo\npueblos\npuerile\npuerilely\npuerilities\npuerility\npuff\npuffball\npuffballs\npuffed\npuffer\npufferies\npuffers\npuffery\npuffier\npuffiest\npuffily\npuffin\npuffiness\npuffing\npuffins\npuffs\npuffy\npug\npugaree\npugarees\npuggaree\npuggarees\npugged\npuggier\npuggiest\npugging\npuggish\npuggree\npuggrees\npuggries\npuggry\npuggy\npugh\npugilism\npugilisms\npugilist\npugilistic\npugilists\npugmark\npugmarks\npugnacious\npugnaciously\npugnaciousness\npugnacity\npugree\npugrees\npugs\npuisne\npuisnes\npuissance\npuissances\npuissant\npuissantly\npuja\npujah\npujas\npuke\npuked\npukes\npuking\npukka\npul\npula\npulchritude\npulchritudes\npulchritudinous\npule\npuled\npuler\npulers\npules\npuli\npulicene\npulicide\npulicides\npulik\npuling\npulingly\npulings\npulis\npull\npullback\npullbacks\npulled\npuller\npullers\npullet\npullets\npulley\npulleys\npulling\npullman\npullmans\npullout\npullouts\npullover\npullovers\npulls\npulmonary\npulmonic\npulmotor\npulmotors\npulp\npulpal\npulpally\npulped\npulper\npulpers\npulpier\npulpiest\npulpily\npulping\npulpit\npulpital\npulpits\npulpless\npulpous\npulps\npulpwood\npulpwoods\npulpy\npulque\npulques\npuls\npulsant\npulsar\npulsars\npulsate\npulsated\npulsates\npulsatile\npulsating\npulsation\npulsations\npulsator\npulsators\npulse\npulsed\npulsejet\npulsejets\npulser\npulsers\npulses\npulsing\npulsion\npulsions\npulsojet\npulsojets\npulverizable\npulverization\npulverizations\npulverize\npulverized\npulverizer\npulverizers\npulverizes\npulverizing\npulvilli\npulvinar\npulvini\npulvinus\npuma\npumas\npumelo\npumelos\npumice\npumiced\npumiceous\npumicer\npumicers\npumices\npumicing\npumicite\npumicites\npummel\npummeled\npummeling\npummelled\npummelling\npummels\npump\npumped\npumper\npumpernickel\npumpernickels\npumpers\npumping\npumpkin\npumpkins\npumpkinseed\npumpkinseeds\npumpless\npumplike\npumps\npun\npuna\npunas\npunch\npunched\npuncheon\npuncheons\npuncher\npunchers\npunches\npunchier\npunchiest\npunching\npunchy\npunctate\npunctilio\npunctilios\npunctilious\npunctiliously\npunctiliousness\npunctual\npunctuality\npunctually\npunctualness\npunctuate\npunctuated\npunctuates\npunctuating\npunctuation\npunctuations\npunctuator\npunctuators\npuncture\npunctured\npuncturer\npuncturers\npunctures\npuncturing\npundit\npunditic\npunditries\npunditry\npundits\npung\npungencies\npungency\npungent\npungently\npungs\npunier\npuniest\npunily\npuniness\npuninesses\npunish\npunishability\npunishable\npunished\npunisher\npunishers\npunishes\npunishing\npunishment\npunishments\npunition\npunitions\npunitive\npunitively\npunitiveness\npunitory\npunk\npunka\npunkah\npunkahs\npunkas\npunker\npunkest\npunkey\npunkeys\npunkie\npunkier\npunkies\npunkiest\npunkin\npunkins\npunks\npunky\npunned\npunner\npunners\npunnier\npunniest\npunning\npunny\npuns\npunster\npunsters\npunt\npunted\npunter\npunters\npunties\npunting\npunto\npuntos\npunts\npunty\npuny\npup\npupa\npupae\npupal\npuparia\npuparial\npuparium\npupas\npupate\npupated\npupates\npupating\npupation\npupations\npupfish\npupfishes\npupil\npupilage\npupilages\npupilar\npupilary\npupillage\npupillages\npupils\npupped\npuppet\npuppeteer\npuppeteers\npuppetries\npuppetry\npuppets\npuppies\npupping\npuppy\npuppydom\npuppydoms\npuppyhood\npuppyish\npuppylike\npups\npur\npurana\npuranas\npuranic\npurblind\npurchasable\npurchase\npurchased\npurchaser\npurchasers\npurchases\npurchasing\npurda\npurdah\npurdahs\npurdas\npure\npurebred\npurebreds\npuree\npureed\npureeing\npurees\npurely\npureness\npurenesses\npurer\npurest\npurfle\npurfled\npurfles\npurfling\npurflings\npurgation\npurgations\npurgative\npurgatively\npurgatorial\npurgatories\npurgatory\npurge\npurged\npurger\npurgers\npurges\npurging\npurgings\npuri\npurification\npurifications\npurified\npurifier\npurifiers\npurifies\npurify\npurifying\npurin\npurine\npurines\npurins\npuris\npurism\npurisms\npurist\npuristic\npurists\npuritan\npuritanical\npuritanically\npuritanism\npuritans\npurities\npurity\npurl\npurled\npurlieu\npurlieus\npurlin\npurline\npurlines\npurling\npurlins\npurloin\npurloined\npurloiner\npurloiners\npurloining\npurloins\npurls\npurple\npurpled\npurpler\npurples\npurplest\npurpling\npurplish\npurply\npurport\npurported\npurportedly\npurporting\npurports\npurpose\npurposed\npurposeful\npurposefully\npurposefulness\npurposeless\npurposelessly\npurposelessness\npurposely\npurposes\npurposing\npurposive\npurposively\npurposiveness\npurpura\npurpuras\npurpure\npurpures\npurpuric\npurpurin\npurpurins\npurr\npurred\npurring\npurringly\npurrs\npurs\npurse\npursed\npurselike\npurser\npursers\npurses\npursier\npursiest\npursily\npursing\npurslane\npurslanes\npursuant\npursue\npursued\npursuer\npursuers\npursues\npursuing\npursuit\npursuits\npursy\npurulence\npurulent\npurvey\npurveyance\npurveyances\npurveyed\npurveying\npurveyor\npurveyors\npurveys\npurview\npurviews\npus\npuses\npush\npushball\npushballs\npushcart\npushcarts\npushdown\npushdowns\npushed\npusher\npushers\npushes\npushful\npushier\npushiest\npushily\npushiness\npushing\npushover\npushovers\npushpin\npushpins\npushup\npushups\npushy\npusillanimity\npusillanimous\npusillanimously\npusley\npusleys\npuslike\npuss\npusses\npussier\npussies\npussiest\npussley\npussleys\npusslies\npusslike\npussly\npussy\npussycat\npussycats\npussyfoot\npussyfooted\npussyfooter\npussyfooters\npussyfooting\npussyfoots\npustular\npustulate\npustulated\npustulates\npustulating\npustulation\npustulations\npustule\npustuled\npustules\nput\nputamen\nputamina\nputative\nputatively\nputlog\nputlogs\nputoff\nputoffs\nputon\nputons\nputout\nputouts\nputrefaction\nputrefactions\nputrefactive\nputrefied\nputrefies\nputrefy\nputrefying\nputrid\nputridity\nputridly\nputs\nputsch\nputsches\nputt\nputted\nputtee\nputtees\nputter\nputtered\nputterer\nputterers\nputtering\nputters\nputti\nputtied\nputtier\nputtiers\nputties\nputting\nputto\nputts\nputty\nputtying\nputz\npuzzle\npuzzled\npuzzlement\npuzzlements\npuzzler\npuzzlers\npuzzles\npuzzling\npuzzlingly\npya\npyaemia\npyaemias\npyaemic\npyas\npycnidia\npye\npyelitic\npyelitis\npyelitises\npyemia\npyemias\npyemic\npyes\npygidia\npygidial\npygidium\npygmaean\npygmean\npygmies\npygmoid\npygmy\npygmyish\npygmyism\npygmyisms\npyic\npyin\npyins\npyjamas\npyknic\npyknics\npylon\npylons\npylori\npyloric\npylorus\npyloruses\npyoderma\npyodermas\npyogenic\npyoid\npyorrhea\npyorrheas\npyoses\npyosis\npyralid\npyralids\npyramid\npyramidal\npyramidally\npyramided\npyramidical\npyramiding\npyramids\npyran\npyranoid\npyranose\npyranoses\npyrans\npyre\npyrene\npyrenes\npyrenoid\npyrenoids\npyres\npyretic\npyrexia\npyrexial\npyrexias\npyrexic\npyric\npyridic\npyridine\npyridines\npyriform\npyrite\npyrites\npyritic\npyritous\npyrogen\npyrogens\npyrola\npyrolas\npyrologies\npyrology\npyrolyze\npyrolyzed\npyrolyzes\npyrolyzing\npyromania\npyromaniac\npyromaniacal\npyromaniacs\npyrone\npyrones\npyronine\npyronines\npyrope\npyropes\npyrosis\npyrosises\npyrostat\npyrostats\npyrotechnic\npyrotechnically\npyrotechnics\npyrotechnist\npyrotechnists\npyroxene\npyroxenes\npyroxylin\npyroxylins\npyrrhic\npyrrhics\npyrrol\npyrrole\npyrroles\npyrrolic\npyrrols\npyruvate\npyruvates\npython\npythoness\npythonesses\npythonic\npythons\npyuria\npyurias\npyx\npyxes\npyxides\npyxidia\npyxidium\npyxie\npyxies\npyxis\nqaid\nqaids\nqanat\nqanats\nqat\nqats\nqindar\nqindars\nqintar\nqintars\nqiviut\nqiviuts\nqoph\nqophs\nqua\nquack\nquacked\nquackeries\nquackery\nquacking\nquackish\nquackism\nquackisms\nquacks\nquad\nquadded\nquadding\nquadrangle\nquadrangles\nquadrangular\nquadrans\nquadrant\nquadrantal\nquadrantes\nquadrants\nquadraphonic\nquadrat\nquadrate\nquadrated\nquadrates\nquadratic\nquadratics\nquadrating\nquadrats\nquadrennial\nquadrennially\nquadric\nquadrics\nquadriga\nquadrigae\nquadrilateral\nquadrilaterals\nquadrille\nquadrilles\nquadrillion\nquadrillions\nquadrillionth\nquadriplegia\nquadriplegic\nquadriplegics\nquadroon\nquadroons\nquadruped\nquadrupedal\nquadrupeds\nquadruple\nquadrupled\nquadruples\nquadruplet\nquadruplets\nquadruplicate\nquadruplicated\nquadruplicates\nquadruplicating\nquadruplication\nquadruplications\nquadrupling\nquadruply\nquads\nquaere\nquaeres\nquaestor\nquaestors\nquaff\nquaffed\nquaffer\nquaffers\nquaffing\nquaffs\nquag\nquagga\nquaggas\nquaggier\nquaggiest\nquaggy\nquagmire\nquagmires\nquagmirier\nquagmiriest\nquagmiry\nquags\nquahaug\nquahaugs\nquahog\nquahogs\nquai\nquaich\nquaiches\nquaichs\nquaigh\nquaighs\nquail\nquailed\nquailing\nquails\nquaint\nquainter\nquaintest\nquaintly\nquaintness\nquais\nquake\nquaked\nquaker\nquakers\nquakes\nquakier\nquakiest\nquakily\nquaking\nquaky\nquale\nqualia\nqualifiable\nqualification\nqualifications\nqualified\nqualifiedly\nqualifier\nqualifiers\nqualifies\nqualify\nqualifying\nqualitative\nqualitatively\nqualities\nquality\nqualm\nqualmier\nqualmiest\nqualmish\nqualms\nqualmy\nquamash\nquamashes\nquandang\nquandangs\nquandaries\nquandary\nquandong\nquandongs\nquant\nquanta\nquantal\nquanted\nquantic\nquantics\nquanties\nquantifiable\nquantification\nquantifications\nquantified\nquantifier\nquantifiers\nquantifies\nquantify\nquantifying\nquanting\nquantitate\nquantitated\nquantitates\nquantitating\nquantitative\nquantitatively\nquantitativeness\nquantities\nquantity\nquantization\nquantizations\nquantize\nquantized\nquantizes\nquantizing\nquantong\nquantongs\nquants\nquantum\nquarantine\nquarantined\nquarantines\nquarantining\nquare\nquark\nquarks\nquarrel\nquarreled\nquarreler\nquarrelers\nquarreling\nquarrelled\nquarreller\nquarrellers\nquarrelling\nquarrels\nquarrelsome\nquarrelsomely\nquarrelsomeness\nquarried\nquarrier\nquarriers\nquarries\nquarry\nquarrying\nquart\nquartan\nquartans\nquarte\nquarter\nquarterage\nquarterages\nquarterback\nquarterbacks\nquarterdeck\nquarterdecks\nquartered\nquartering\nquarterlies\nquarterly\nquartermaster\nquartermasters\nquartern\nquarterns\nquarters\nquartersawed\nquartes\nquartet\nquartets\nquartic\nquartics\nquartile\nquartiles\nquarto\nquartos\nquarts\nquartz\nquartzes\nquartzite\nquartzites\nquasar\nquasars\nquash\nquashed\nquashes\nquashing\nquasi\nquass\nquasses\nquassia\nquassias\nquassin\nquassins\nquate\nquaternaries\nquaternary\nquatorze\nquatorzes\nquatrain\nquatrains\nquatre\nquatrefoil\nquatrefoils\nquatres\nquaver\nquavered\nquaverer\nquaverers\nquavering\nquavers\nquavery\nquay\nquayage\nquayages\nquaylike\nquays\nquayside\nquaysides\nquean\nqueans\nqueasier\nqueasiest\nqueasily\nqueasiness\nqueasy\nqueazier\nqueaziest\nqueazy\nqueen\nqueened\nqueening\nqueenlier\nqueenliest\nqueenly\nqueens\nqueer\nqueered\nqueerer\nqueerest\nqueering\nqueerish\nqueerly\nqueerness\nqueers\nquell\nquelled\nqueller\nquellers\nquelling\nquells\nquench\nquenchable\nquenched\nquencher\nquenchers\nquenches\nquenching\nquenchless\nquenelle\nquenelles\nquercine\nquerida\nqueridas\nqueried\nquerier\nqueriers\nqueries\nquerist\nquerists\nquern\nquerns\nquerulous\nquerulously\nquerulousness\nquery\nquerying\nquest\nquested\nquester\nquesters\nquesting\nquestion\nquestionable\nquestionableness\nquestionably\nquestioned\nquestioner\nquestioners\nquestioning\nquestioningly\nquestionless\nquestionnaire\nquestionnaires\nquestions\nquestor\nquestors\nquests\nquetzal\nquetzales\nquetzals\nqueue\nqueued\nqueueing\nqueuer\nqueuers\nqueues\nqueuing\nquey\nqueys\nquezal\nquezales\nquezals\nquibble\nquibbled\nquibbler\nquibblers\nquibbles\nquibbling\nquiche\nquiches\nquick\nquicken\nquickened\nquickening\nquickens\nquicker\nquickest\nquickie\nquickies\nquicklime\nquickly\nquickness\nquicks\nquicksand\nquicksands\nquickset\nquicksets\nquicksilver\nquickstep\nquicksteps\nquid\nquiddities\nquiddity\nquidnunc\nquidnuncs\nquids\nquiescence\nquiescent\nquiescently\nquiet\nquieted\nquieten\nquietened\nquietening\nquietens\nquieter\nquieters\nquietest\nquieting\nquietism\nquietisms\nquietist\nquietistic\nquietists\nquietly\nquietness\nquiets\nquietude\nquietudes\nquietus\nquietuses\nquiff\nquiffs\nquill\nquillai\nquillais\nquilled\nquillet\nquillets\nquilling\nquills\nquilt\nquilted\nquilter\nquilters\nquilting\nquiltings\nquilts\nquin\nquinaries\nquinary\nquinate\nquince\nquinces\nquincunx\nquincunxes\nquinella\nquinellas\nquinic\nquiniela\nquinielas\nquinin\nquinina\nquininas\nquinine\nquinines\nquinins\nquinnat\nquinnats\nquinoa\nquinoas\nquinoid\nquinoids\nquinol\nquinolin\nquinolins\nquinols\nquinone\nquinones\nquinquennial\nquinquennially\nquinquennials\nquins\nquinsies\nquinsy\nquint\nquintain\nquintains\nquintal\nquintals\nquintan\nquintans\nquintar\nquintars\nquintessence\nquintessences\nquintessential\nquintet\nquintets\nquintic\nquintics\nquintile\nquintiles\nquintillion\nquintillions\nquintillionth\nquintillionths\nquintin\nquintins\nquints\nquintuple\nquintupled\nquintuples\nquintuplet\nquintuplets\nquintupling\nquip\nquipped\nquipping\nquippish\nquippu\nquippus\nquips\nquipster\nquipsters\nquipu\nquipus\nquire\nquired\nquires\nquiring\nquirk\nquirked\nquirkier\nquirkiest\nquirkily\nquirkiness\nquirking\nquirks\nquirky\nquirt\nquirted\nquirting\nquirts\nquisling\nquislings\nquit\nquitch\nquitches\nquitclaim\nquitclaimed\nquitclaiming\nquitclaims\nquite\nquitrent\nquitrents\nquits\nquittance\nquittances\nquitted\nquitter\nquitters\nquitting\nquittor\nquittors\nquiver\nquivered\nquiverer\nquiverers\nquivering\nquivers\nquivery\nquixote\nquixotes\nquixotic\nquixotically\nquixotism\nquixotisms\nquixotries\nquixotry\nquiz\nquizzed\nquizzer\nquizzers\nquizzes\nquizzical\nquizzically\nquizzing\nquod\nquods\nquoin\nquoined\nquoining\nquoins\nquoit\nquoited\nquoiting\nquoits\nquomodo\nquomodos\nquondam\nquorum\nquorums\nquota\nquotable\nquotably\nquotas\nquotation\nquotations\nquote\nquoted\nquoter\nquoters\nquotes\nquoth\nquotha\nquotidian\nquotidians\nquotient\nquotients\nquoting\nqursh\nqurshes\nqurush\nqurushes\nrabat\nrabato\nrabatos\nrabbet\nrabbeted\nrabbeting\nrabbets\nrabbi\nrabbies\nrabbin\nrabbinate\nrabbinates\nrabbinic\nrabbinical\nrabbins\nrabbis\nrabbit\nrabbited\nrabbiter\nrabbiters\nrabbiting\nrabbitries\nrabbitry\nrabbits\nrabble\nrabbled\nrabblement\nrabblements\nrabbler\nrabblers\nrabbles\nrabbling\nrabboni\nrabbonis\nrabic\nrabid\nrabidities\nrabidity\nrabidly\nrabidness\nrabies\nrabietic\nraccoon\nraccoons\nrace\nracecourse\nracecourses\nraced\nracehorse\nracehorses\nracemate\nracemates\nraceme\nracemed\nracemes\nracemic\nracemism\nracemisms\nracemize\nracemized\nracemizes\nracemizing\nracemoid\nracemose\nracemous\nracer\nracers\nraces\nracetrack\nracetracker\nracetrackers\nracetracks\nraceway\nraceways\nrachet\nrachets\nrachial\nrachides\nrachis\nrachises\nrachitic\nrachitides\nrachitis\nracial\nracialism\nracialist\nracialistic\nracialists\nracially\nracier\nraciest\nracily\nraciness\nracinesses\nracing\nracings\nracism\nracisms\nracist\nracists\nrack\nracked\nracker\nrackers\nracket\nracketed\nracketeer\nracketeered\nracketeering\nracketeers\nracketier\nracketiest\nracketing\nrackets\nrackety\nracking\nrackle\nracks\nrackwork\nrackworks\nraclette\nraclettes\nracon\nracons\nraconteur\nraconteurs\nracoon\nracoons\nracquet\nracquetball\nracquets\nracy\nrad\nradar\nradars\nradded\nradding\nraddle\nraddled\nraddles\nraddling\nradiable\nradial\nradiale\nradialia\nradially\nradials\nradian\nradiance\nradiances\nradiancies\nradiancy\nradians\nradiant\nradiantly\nradiants\nradiate\nradiated\nradiates\nradiating\nradiation\nradiational\nradiations\nradiative\nradiator\nradiators\nradical\nradicalism\nradically\nradicals\nradicand\nradicands\nradicate\nradicated\nradicates\nradicating\nradicel\nradicels\nradices\nradicle\nradicles\nradii\nradio\nradioactive\nradioactively\nradioactivity\nradiocarbon\nradiocarbons\nradioed\nradiogram\nradiograms\nradiograph\nradiographed\nradiographic\nradiographically\nradiographing\nradiographs\nradiography\nradioing\nradioisotope\nradioisotopes\nradioisotopic\nradiological\nradiologies\nradiologist\nradiologists\nradiology\nradioman\nradiomen\nradiometer\nradiometers\nradiophone\nradiophones\nradiophoto\nradiophotos\nradios\nradiosonde\nradiosondes\nradiotelephone\nradiotelephones\nradiotherapies\nradiotherapist\nradiotherapists\nradiotherapy\nradish\nradishes\nradium\nradiums\nradius\nradiuses\nradix\nradixes\nradome\nradomes\nradon\nradons\nrads\nradula\nradulae\nradular\nradulas\nraff\nraffia\nraffias\nraffish\nraffishly\nraffishness\nraffle\nraffled\nraffler\nrafflers\nraffles\nraffling\nraffs\nraft\nrafted\nrafter\nrafters\nrafting\nrafts\nraftsman\nraftsmen\nrag\nraga\nragamuffin\nragamuffins\nragas\nragbag\nragbags\nrage\nraged\nragee\nragees\nrages\nragged\nraggeder\nraggedest\nraggedly\nraggedness\nraggedy\nraggies\nragging\nraggle\nraggles\nraggy\nragi\nraging\nragingly\nragis\nraglan\nraglans\nragman\nragmen\nragout\nragouted\nragouting\nragouts\nrags\nragtag\nragtags\nragtime\nragtimes\nragweed\nragweeds\nragwort\nragworts\nrah\nraia\nraias\nraid\nraided\nraider\nraiders\nraiding\nraids\nrail\nrailbird\nrailbirds\nrailed\nrailer\nrailers\nrailhead\nrailheads\nrailing\nrailings\nrailleries\nraillery\nrailroad\nrailroaded\nrailroader\nrailroaders\nrailroading\nrailroads\nrails\nrailway\nrailways\nraiment\nraiments\nrain\nrainband\nrainbands\nrainbird\nrainbirds\nrainbow\nrainbows\nraincoat\nraincoats\nraindrop\nraindrops\nrained\nrainfall\nrainfalls\nrainier\nrainiest\nrainily\nraining\nrainless\nrainmaker\nrainmakers\nrainmaking\nrainout\nrainouts\nrainproof\nrains\nrainstorm\nrainstorms\nrainwash\nrainwashes\nrainwater\nrainwaters\nrainwear\nrainwears\nrainy\nraisable\nraise\nraised\nraiser\nraisers\nraises\nraisin\nraising\nraisings\nraisins\nraisiny\nraisonne\nraj\nraja\nrajah\nrajahs\nrajas\nrajes\nrake\nraked\nrakee\nrakees\nrakehell\nrakehells\nrakeoff\nrakeoffs\nraker\nrakers\nrakes\nraki\nraking\nrakis\nrakish\nrakishly\nrakishness\nrale\nrales\nrallied\nrallier\nralliers\nrallies\nralline\nrally\nrallye\nrallyes\nrallying\nrallyings\nrallyist\nrallyists\nralph\nram\nramate\nramble\nrambled\nrambler\nramblers\nrambles\nrambling\nrambunctious\nrambutan\nrambutans\nramee\nramees\nramekin\nramekins\nramenta\nramentum\nramequin\nramequins\nramet\nramets\nrami\nramie\nramies\nramification\nramifications\nramified\nramifies\nramiform\nramify\nramifying\nramilie\nramilies\nramillie\nramillies\nramjet\nramjets\nrammed\nrammer\nrammers\nrammier\nrammiest\nramming\nrammish\nrammy\nramose\nramosely\nramosities\nramosity\nramous\nramp\nrampage\nrampaged\nrampageous\nrampager\nrampagers\nrampages\nrampaging\nrampancies\nrampancy\nrampant\nrampantly\nrampart\nramparted\nramparting\nramparts\nramped\nrampike\nrampikes\nramping\nrampion\nrampions\nrampole\nrampoles\nramps\nramrod\nramrods\nrams\nramshackle\nramshorn\nramshorns\nramson\nramsons\nramtil\nramtils\nramulose\nramulous\nramus\nran\nrance\nrances\nranch\nranched\nrancher\nranchero\nrancheros\nranchers\nranches\nranching\nranchland\nranchlands\nranchman\nranchmen\nrancho\nranchos\nrancid\nrancidity\nrancidness\nrancor\nrancored\nrancorous\nrancorously\nrancors\nrancour\nrancours\nrand\nrandan\nrandans\nrandies\nrandom\nrandomization\nrandomizations\nrandomize\nrandomized\nrandomizes\nrandomizing\nrandomly\nrandomness\nrandoms\nrands\nrandy\nranee\nranees\nrang\nrange\nranged\nrangeland\nrangelands\nranger\nrangers\nranges\nrangier\nrangiest\nranginess\nranging\nrangy\nrani\nranid\nranids\nranis\nrank\nranked\nranker\nrankers\nrankest\nranking\nrankish\nrankle\nrankled\nrankles\nrankling\nrankly\nrankness\nranknesses\nranks\nranpike\nranpikes\nransack\nransacked\nransacking\nransacks\nransom\nransomed\nransomer\nransomers\nransoming\nransoms\nrant\nranted\nranter\nranters\nranting\nrantingly\nrants\nranula\nranulas\nrap\nrapacious\nrapaciously\nrapaciousness\nrapacities\nrapacity\nrape\nraped\nraper\nrapers\nrapes\nrapeseed\nrapeseeds\nraphae\nraphe\nraphes\nraphia\nraphias\nraphide\nraphides\nraphis\nrapid\nrapider\nrapidest\nrapidities\nrapidity\nrapidly\nrapidness\nrapids\nrapier\nrapiered\nrapiers\nrapine\nrapines\nraping\nrapist\nrapists\nrapparee\nrapparees\nrapped\nrappee\nrappees\nrappel\nrappelled\nrappelling\nrappels\nrappen\nrapper\nrappers\nrapping\nrappini\nrapport\nrapports\nrapprochement\nrapprochements\nraps\nrapscallion\nrapscallions\nrapt\nraptly\nraptness\nraptnesses\nraptor\nraptors\nrapture\nraptured\nraptures\nrapturing\nrapturous\nrapturously\nrapturousness\nrare\nrarebit\nrarebits\nrared\nrarefaction\nrarefactional\nrarefactions\nrarefied\nrarefier\nrarefiers\nrarefies\nrarefy\nrarefying\nrarely\nrareness\nrarenesses\nrarer\nrareripe\nrareripes\nrares\nrarest\nrarified\nrarifies\nrarify\nrarifying\nraring\nrarities\nrarity\nras\nrasbora\nrasboras\nrascal\nrascalities\nrascality\nrascally\nrascals\nrase\nrased\nraser\nrasers\nrases\nrash\nrasher\nrashers\nrashes\nrashest\nrashlike\nrashly\nrashness\nrashnesses\nrasing\nrasorial\nrasp\nraspberries\nraspberry\nrasped\nrasper\nraspers\nraspier\nraspiest\nrasping\nraspingly\nraspish\nrasps\nraspy\nrassle\nrassled\nrassles\nrassling\nraster\nrasters\nrasure\nrasures\nrat\nratable\nratably\nratafee\nratafees\nratafia\nratafias\nratal\nratals\nratan\nratanies\nratans\nratany\nrataplan\nrataplanned\nrataplanning\nrataplans\nratatat\nratatats\nratch\nratches\nratchet\nratchets\nrate\nrateable\nrateably\nrated\nratel\nratels\nrater\nraters\nrates\nratfink\nratfinks\nratfish\nratfishes\nrath\nrathe\nrather\nrathole\nratholes\nrathskeller\nrathskellers\nraticide\nraticides\nratification\nratifications\nratified\nratifier\nratifiers\nratifies\nratify\nratifying\nratine\nratines\nrating\nratings\nratio\nratiocinate\nratiocinated\nratiocinates\nratiocinating\nratiocination\nratiocinations\nratiocinative\nratiocinator\nratiocinators\nration\nrational\nrationale\nrationales\nrationalism\nrationalist\nrationalistic\nrationalistically\nrationalists\nrationalities\nrationality\nrationalization\nrationalizations\nrationalize\nrationalized\nrationalizer\nrationalizers\nrationalizes\nrationalizing\nrationally\nrationalness\nrationals\nrationed\nrationing\nrations\nratios\nratite\nratites\nratlike\nratlin\nratline\nratlines\nratlins\nrato\nratoon\nratooned\nratooner\nratooners\nratooning\nratoons\nratos\nrats\nratsbane\nratsbanes\nrattail\nrattails\nrattan\nrattans\nratted\nratteen\nratteens\nratten\nrattened\nrattener\nratteners\nrattening\nrattens\nratter\nratters\nrattier\nrattiest\nratting\nrattish\nrattle\nrattled\nrattler\nrattlers\nrattles\nrattlesnake\nrattlesnakes\nrattletrap\nrattletraps\nrattling\nrattlings\nrattly\nratton\nrattons\nrattoon\nrattooned\nrattooning\nrattoons\nrattrap\nrattraps\nratty\nraucities\nraucity\nraucous\nraucously\nraucousness\nraunchier\nraunchiest\nraunchy\nravage\nravaged\nravagement\nravagements\nravager\nravagers\nravages\nravaging\nrave\nraved\nravel\nraveled\nraveler\nravelers\nravelin\nraveling\nravelings\nravelins\nravelled\nraveller\nravellers\nravelling\nravellings\nravelly\nravels\nraven\nravened\nravener\nraveners\nravening\nravenings\nravenous\nravenously\nravenousness\nravens\nraver\nravers\nraves\nravigote\nravigotes\nravin\nravine\nravined\nravines\nraving\nravingly\nravings\nravining\nravins\nravioli\nraviolis\nravish\nravished\nravisher\nravishers\nravishes\nravishing\nravishment\nravishments\nraw\nrawboned\nrawer\nrawest\nrawhide\nrawhided\nrawhides\nrawhiding\nrawin\nrawish\nrawly\nrawness\nrawnesses\nraws\nrax\nraxed\nraxes\nraxing\nray\nraya\nrayah\nrayahs\nrayas\nrayed\nraygrass\nraygrasses\nraying\nrayless\nrayon\nrayons\nrays\nraze\nrazed\nrazee\nrazeed\nrazeeing\nrazees\nrazer\nrazers\nrazes\nrazing\nrazor\nrazored\nrazoring\nrazors\nrazz\nrazzed\nrazzes\nrazzing\nre\nreabsorb\nreabsorbed\nreabsorbing\nreabsorbs\nreaccede\nreacceded\nreaccedes\nreacceding\nreaccent\nreaccented\nreaccenting\nreaccents\nreaccept\nreaccepted\nreaccepting\nreaccepts\nreaccuse\nreaccused\nreaccuses\nreaccusing\nreach\nreachable\nreached\nreacher\nreachers\nreaches\nreaching\nreacquaint\nreacquainted\nreacquainting\nreacquaints\nreact\nreactance\nreactances\nreactant\nreactants\nreacted\nreacting\nreaction\nreactionaries\nreactionary\nreactions\nreactivate\nreactivated\nreactivates\nreactivating\nreactivation\nreactivations\nreactive\nreactively\nreactiveness\nreactivity\nreactor\nreactors\nreacts\nread\nreadability\nreadable\nreadableness\nreadably\nreadapt\nreadapted\nreadapting\nreadapts\nreadd\nreadded\nreaddict\nreaddicted\nreaddicting\nreaddicts\nreadding\nreadds\nreader\nreaders\nreadership\nreaderships\nreadied\nreadier\nreadies\nreadiest\nreadily\nreadiness\nreading\nreadings\nreadjust\nreadjustable\nreadjusted\nreadjusting\nreadjustment\nreadjustments\nreadjusts\nreadmit\nreadmits\nreadmitted\nreadmitting\nreadopt\nreadopted\nreadopting\nreadopts\nreadorn\nreadorned\nreadorning\nreadorns\nreadout\nreadouts\nreads\nready\nreadying\nreaffirm\nreaffirmation\nreaffirmations\nreaffirmed\nreaffirming\nreaffirms\nreaffix\nreaffixed\nreaffixes\nreaffixing\nreagent\nreagents\nreagin\nreaginic\nreagins\nreal\nrealer\nreales\nrealest\nrealgar\nrealgars\nrealia\nrealign\nrealigned\nrealigning\nrealignment\nrealignments\nrealigns\nrealise\nrealised\nrealiser\nrealisers\nrealises\nrealising\nrealism\nrealisms\nrealist\nrealistic\nrealistically\nrealists\nrealities\nreality\nrealizable\nrealization\nrealizations\nrealize\nrealized\nrealizer\nrealizers\nrealizes\nrealizing\nreallocate\nreallocated\nreallocates\nreallocating\nreallocation\nreallocations\nreallot\nreallots\nreallotted\nreallotting\nreally\nrealm\nrealms\nrealness\nrealnesses\nreals\nrealter\nrealtered\nrealtering\nrealters\nrealties\nrealty\nream\nreamed\nreamer\nreamers\nreaming\nreams\nreanimate\nreanimated\nreanimates\nreanimating\nreanimation\nreanimations\nreannex\nreannexed\nreannexes\nreannexing\nreanoint\nreanointed\nreanointing\nreanoints\nreap\nreapable\nreaped\nreaper\nreapers\nreaphook\nreaphooks\nreaping\nreappear\nreappearance\nreappearances\nreappeared\nreappearing\nreappears\nreapplied\nreapplies\nreapply\nreapplying\nreappoint\nreappointed\nreappointing\nreappointment\nreappointments\nreappoints\nreapportion\nreapportioned\nreapportioning\nreapportionment\nreapportionments\nreapportions\nreappraisal\nreappraisals\nreappraise\nreappraised\nreappraises\nreappraising\nreapprove\nreapproved\nreapproves\nreapproving\nreaps\nrear\nreared\nrearer\nrearers\nreargue\nreargued\nreargues\nrearguing\nrearing\nrearm\nrearmament\nrearmaments\nrearmed\nrearmice\nrearming\nrearmost\nrearms\nrearouse\nrearoused\nrearouses\nrearousing\nrearrange\nrearranged\nrearrangement\nrearrangements\nrearranges\nrearranging\nrearrest\nrearrested\nrearresting\nrearrests\nrears\nrearward\nrearwards\nreascend\nreascended\nreascending\nreascends\nreascent\nreascents\nreason\nreasonability\nreasonable\nreasonableness\nreasonably\nreasoned\nreasoner\nreasoners\nreasoning\nreasonings\nreasonless\nreasonlessly\nreasons\nreassail\nreassailed\nreassailing\nreassails\nreassert\nreasserted\nreasserting\nreasserts\nreassess\nreassessed\nreassesses\nreassessing\nreassessment\nreassessments\nreassign\nreassigned\nreassigning\nreassignment\nreassignments\nreassigns\nreassort\nreassorted\nreassorting\nreassorts\nreassume\nreassumed\nreassumes\nreassuming\nreassurance\nreassurances\nreassure\nreassured\nreassures\nreassuring\nreassuringly\nreata\nreatas\nreattach\nreattached\nreattaches\nreattaching\nreattack\nreattacked\nreattacking\nreattacks\nreattain\nreattained\nreattaining\nreattains\nreave\nreaved\nreaver\nreavers\nreaves\nreaving\nreavow\nreavowed\nreavowing\nreavows\nreawake\nreawaked\nreawaken\nreawakened\nreawakening\nreawakens\nreawakes\nreawaking\nreawoke\nreawoken\nreb\nrebait\nrebaited\nrebaiting\nrebaits\nrebate\nrebated\nrebater\nrebaters\nrebates\nrebating\nrebato\nrebatos\nrebbe\nrebbes\nrebec\nrebeck\nrebecks\nrebecs\nrebel\nrebeldom\nrebeldoms\nrebelled\nrebelling\nrebellion\nrebellions\nrebellious\nrebelliously\nrebelliousness\nrebels\nrebid\nrebidden\nrebidding\nrebids\nrebill\nrebilled\nrebilling\nrebills\nrebind\nrebinding\nrebinds\nrebirth\nrebirths\nrebloom\nrebloomed\nreblooming\nreblooms\nreboant\nreboard\nreboarded\nreboarding\nreboards\nreboil\nreboiled\nreboiling\nreboils\nrebop\nrebops\nreborn\nrebound\nrebounded\nrebounding\nrebounds\nrebozo\nrebozos\nrebranch\nrebranched\nrebranches\nrebranching\nrebroadcast\nrebroadcasted\nrebroadcasting\nrebroadcasts\nrebs\nrebuff\nrebuffed\nrebuffing\nrebuffs\nrebuild\nrebuilded\nrebuilding\nrebuilds\nrebuilt\nrebuke\nrebuked\nrebuker\nrebukers\nrebukes\nrebuking\nreburial\nreburials\nreburied\nreburies\nrebury\nreburying\nrebus\nrebuses\nrebut\nrebuts\nrebuttable\nrebuttal\nrebuttals\nrebutted\nrebutter\nrebutters\nrebutting\nrebutton\nrebuttoned\nrebuttoning\nrebuttons\nrebuy\nrec\nrecalcitrance\nrecalcitrancy\nrecalcitrant\nrecalcitrants\nrecalculate\nrecalculated\nrecalculates\nrecalculating\nrecall\nrecallable\nrecalled\nrecaller\nrecallers\nrecalling\nrecalls\nrecane\nrecaned\nrecanes\nrecaning\nrecant\nrecantation\nrecantations\nrecanted\nrecanter\nrecanters\nrecanting\nrecants\nrecap\nrecapitalization\nrecapitalizations\nrecapitalize\nrecapitalized\nrecapitalizes\nrecapitalizing\nrecapitulate\nrecapitulated\nrecapitulates\nrecapitulating\nrecapitulation\nrecapitulations\nrecappable\nrecapped\nrecapping\nrecaps\nrecapture\nrecaptured\nrecaptures\nrecapturing\nrecarried\nrecarries\nrecarry\nrecarrying\nrecast\nrecasting\nrecasts\nrecede\nreceded\nrecedes\nreceding\nreceipt\nreceipted\nreceipting\nreceipts\nreceivable\nreceivables\nreceive\nreceived\nreceiver\nreceivers\nreceivership\nreceiverships\nreceives\nreceiving\nrecencies\nrecency\nrecension\nrecensions\nrecent\nrecenter\nrecentest\nrecently\nrecentness\nrecept\nreceptacle\nreceptacles\nreception\nreceptionist\nreceptionists\nreceptions\nreceptive\nreceptively\nreceptiveness\nreceptivity\nreceptor\nreceptors\nrecepts\nrecertification\nrecertifications\nrecertified\nrecertifies\nrecertify\nrecertifying\nrecess\nrecessed\nrecesses\nrecessing\nrecession\nrecessional\nrecessionals\nrecessions\nrecessive\nrecessively\nrecessiveness\nrecessives\nrechange\nrechanged\nrechanges\nrechanging\nrecharge\nrechargeable\nrecharged\nrecharges\nrecharging\nrechart\nrecharted\nrecharting\nrecharts\nrecheat\nrecheats\nrecheck\nrechecked\nrechecking\nrechecks\nrecherche\nrechoose\nrechooses\nrechoosing\nrechose\nrechosen\nrecidivism\nrecidivisms\nrecidivist\nrecidivistic\nrecidivists\nrecipe\nrecipes\nrecipient\nrecipients\nreciprocal\nreciprocally\nreciprocals\nreciprocate\nreciprocated\nreciprocates\nreciprocating\nreciprocation\nreciprocations\nreciprocative\nreciprocator\nreciprocators\nreciprocities\nreciprocity\nrecircle\nrecircled\nrecircles\nrecircling\nrecision\nrecisions\nrecital\nrecitalist\nrecitalists\nrecitals\nrecitation\nrecitations\nrecite\nrecited\nreciter\nreciters\nrecites\nreciting\nreck\nrecked\nrecking\nreckless\nrecklessly\nrecklessness\nreckon\nreckoned\nreckoner\nreckoners\nreckoning\nreckonings\nreckons\nrecks\nreclad\nreclaim\nreclaimable\nreclaimed\nreclaiming\nreclaims\nreclamation\nreclamations\nreclame\nreclames\nreclasp\nreclasped\nreclasping\nreclasps\nreclassification\nreclassifications\nreclassified\nreclassifies\nreclassify\nreclassifying\nreclean\nrecleaned\nrecleaning\nrecleans\nrecline\nreclined\nrecliner\nrecliners\nreclines\nreclining\nreclothe\nreclothed\nreclothes\nreclothing\nrecluse\nrecluses\nreclusion\nreclusive\nrecoal\nrecoaled\nrecoaling\nrecoals\nrecock\nrecocked\nrecocking\nrecocks\nrecodified\nrecodifies\nrecodify\nrecodifying\nrecognition\nrecognitions\nrecognizability\nrecognizable\nrecognizably\nrecognizance\nrecognizances\nrecognize\nrecognized\nrecognizes\nrecognizing\nrecoil\nrecoiled\nrecoiler\nrecoilers\nrecoiling\nrecoilless\nrecoils\nrecoin\nrecoined\nrecoining\nrecoins\nrecollect\nrecollected\nrecollecting\nrecollection\nrecollections\nrecollects\nrecolor\nrecolored\nrecoloring\nrecolors\nrecomb\nrecombed\nrecombinant\nrecombinants\nrecombination\nrecombinations\nrecombine\nrecombined\nrecombines\nrecombing\nrecombining\nrecombs\nrecommence\nrecommenced\nrecommences\nrecommencing\nrecommend\nrecommendable\nrecommendation\nrecommendations\nrecommendatory\nrecommended\nrecommending\nrecommends\nrecommit\nrecommitment\nrecommitments\nrecommits\nrecommittal\nrecommittals\nrecommitted\nrecommitting\nrecompense\nrecompensed\nrecompenses\nrecompensing\nrecompute\nrecomputed\nrecomputes\nrecomputing\nrecon\nreconceive\nreconceived\nreconceives\nreconceiving\nreconcilability\nreconcilable\nreconcile\nreconciled\nreconcilement\nreconcilements\nreconciles\nreconciliation\nreconciliations\nreconciling\nrecondite\nreconditely\nreconditeness\nrecondition\nreconditioned\nreconditioning\nreconditions\nreconnaissance\nreconnaissances\nreconnoiter\nreconnoitered\nreconnoitering\nreconnoiters\nreconnoitre\nreconnoitred\nreconnoitres\nreconnoitring\nrecons\nreconsider\nreconsideration\nreconsiderations\nreconsidered\nreconsidering\nreconsiders\nreconstitute\nreconstituted\nreconstitutes\nreconstituting\nreconstitution\nreconstitutions\nreconstruct\nreconstructed\nreconstructible\nreconstructing\nreconstruction\nreconstructionism\nreconstructions\nreconstructive\nreconstructor\nreconstructors\nreconstructs\nreconvene\nreconvened\nreconvenes\nreconvening\nreconversion\nreconversions\nreconvert\nreconverted\nreconverting\nreconverts\nreconvey\nreconveyed\nreconveying\nreconveys\nrecook\nrecooked\nrecooking\nrecooks\nrecopied\nrecopies\nrecopy\nrecopying\nrecord\nrecordable\nrecordation\nrecordations\nrecorded\nrecorder\nrecorders\nrecording\nrecordings\nrecordist\nrecordists\nrecords\nrecount\nrecounted\nrecounting\nrecounts\nrecoup\nrecoupable\nrecoupe\nrecouped\nrecouping\nrecouple\nrecoupled\nrecouples\nrecoupling\nrecoups\nrecourse\nrecourses\nrecover\nrecoverable\nrecovered\nrecoveries\nrecovering\nrecovers\nrecovery\nrecrate\nrecrated\nrecrates\nrecrating\nrecreant\nrecreants\nrecreate\nrecreated\nrecreates\nrecreating\nrecreation\nrecreational\nrecreations\nrecreative\nrecriminate\nrecriminated\nrecriminates\nrecriminating\nrecrimination\nrecriminations\nrecriminative\nrecriminatory\nrecross\nrecrossed\nrecrosses\nrecrossing\nrecrown\nrecrowned\nrecrowning\nrecrowns\nrecrudescence\nrecrudescences\nrecruit\nrecruited\nrecruiter\nrecruiters\nrecruiting\nrecruitment\nrecruitments\nrecruits\nrecs\nrecta\nrectal\nrectally\nrectangle\nrectangles\nrectangular\nrectangularities\nrectangularity\nrectangularly\nrecti\nrectifiable\nrectification\nrectifications\nrectified\nrectifier\nrectifiers\nrectifies\nrectify\nrectifying\nrectilinear\nrectilinearly\nrectitude\nrectitudes\nrecto\nrector\nrectorate\nrectorates\nrectories\nrectors\nrectory\nrectos\nrectrices\nrectrix\nrectum\nrectums\nrectus\nrecumbency\nrecumbent\nrecuperate\nrecuperated\nrecuperates\nrecuperating\nrecuperation\nrecuperations\nrecuperative\nrecur\nrecurred\nrecurrence\nrecurrences\nrecurrent\nrecurrently\nrecurring\nrecurs\nrecursion\nrecursions\nrecursive\nrecursively\nrecursiveness\nrecurve\nrecurved\nrecurves\nrecurving\nrecusant\nrecusants\nrecuse\nrecused\nrecuses\nrecusing\nrecut\nrecuts\nrecutting\nrecyclable\nrecycle\nrecycled\nrecycles\nrecycling\nred\nredact\nredacted\nredacting\nredaction\nredactional\nredactions\nredactor\nredactors\nredacts\nredan\nredans\nredargue\nredargued\nredargues\nredarguing\nredate\nredated\nredates\nredating\nredbait\nredbaited\nredbaiting\nredbaits\nredbay\nredbays\nredbird\nredbirds\nredbone\nredbones\nredbreast\nredbreasts\nredbrick\nredbud\nredbuds\nredbug\nredbugs\nredcap\nredcaps\nredcoat\nredcoats\nredd\nredded\nredden\nreddened\nreddening\nreddens\nredder\nredders\nreddest\nredding\nreddish\nreddishness\nreddle\nreddled\nreddles\nreddling\nredds\nrede\nredear\nredears\nredecorate\nredecorated\nredecorates\nredecorating\nredecoration\nredecorations\nreded\nrededicate\nrededicated\nrededicates\nrededicating\nrededication\nredeem\nredeemable\nredeemed\nredeemer\nredeemers\nredeeming\nredeems\nredefeat\nredefeated\nredefeating\nredefeats\nredefied\nredefies\nredefine\nredefined\nredefines\nredefining\nredefinition\nredefinitions\nredefy\nredefying\nredemand\nredemanded\nredemanding\nredemands\nredemption\nredemptional\nredemptions\nredemptive\nredemptory\nredenied\nredenies\nredeny\nredenying\nredeploy\nredeployed\nredeploying\nredeployment\nredeployments\nredeploys\nredes\nredesign\nredesigned\nredesigning\nredesigns\nredevelop\nredeveloped\nredeveloper\nredevelopers\nredeveloping\nredevelopment\nredevelopments\nredevelops\nredeye\nredeyes\nredfin\nredfins\nredfish\nredfishes\nredhead\nredheaded\nredheads\nredhorse\nredhorses\nredia\nrediae\nredial\nredias\nredid\nredigest\nredigested\nredigesting\nredigests\nreding\nredip\nredipped\nredipping\nredips\nredipt\nredirect\nredirected\nredirecting\nredirection\nredirections\nredirects\nrediscover\nrediscovered\nrediscovering\nrediscovers\nrediscovery\nredistribute\nredistributed\nredistributes\nredistributing\nredistribution\nredistributions\nredistributive\nredistrict\nredistricted\nredistricting\nredistricts\nredivide\nredivided\nredivides\nredividing\nredleg\nredlegs\nredly\nredneck\nrednecks\nredness\nrednesses\nredo\nredock\nredocked\nredocking\nredocks\nredoes\nredoing\nredolence\nredolent\nredolently\nredon\nredone\nredos\nredouble\nredoubled\nredoubles\nredoubling\nredoubt\nredoubtable\nredoubtably\nredoubts\nredound\nredounded\nredounding\nredounds\nredout\nredouts\nredowa\nredowas\nredox\nredoxes\nredpoll\nredpolls\nredraft\nredrafted\nredrafting\nredrafts\nredraw\nredrawer\nredrawers\nredrawing\nredrawn\nredraws\nredress\nredressed\nredresses\nredressing\nredrew\nredried\nredries\nredrill\nredrilled\nredrilling\nredrills\nredrive\nredriven\nredrives\nredriving\nredroot\nredroots\nredrove\nredry\nredrying\nreds\nredshank\nredshanks\nredshirt\nredshirted\nredshirting\nredshirts\nredskin\nredskins\nredstart\nredstarts\nredtop\nredtops\nredub\nreduce\nreduced\nreducer\nreducers\nreduces\nreducibility\nreducible\nreducibly\nreducing\nreduction\nreductional\nreductions\nreductive\nredundancies\nredundancy\nredundant\nredundantly\nreduplicate\nreduplicated\nreduplicates\nreduplicating\nreduplication\nreduplications\nreduplicative\nreduviid\nreduviids\nredux\nredware\nredwares\nredwing\nredwings\nredwood\nredwoods\nredye\nredyed\nredyeing\nredyes\nree\nreearn\nreearned\nreearning\nreearns\nreecho\nreechoed\nreechoes\nreechoing\nreed\nreedbird\nreedbirds\nreedbuck\nreedbucks\nreeded\nreedier\nreediest\nreedified\nreedifies\nreedify\nreedifying\nreeding\nreedings\nreedit\nreedited\nreediting\nreedits\nreedling\nreedlings\nreeds\nreeducate\nreeducated\nreeducates\nreeducating\nreeducation\nreeducations\nreedy\nreef\nreefed\nreefer\nreefers\nreefier\nreefiest\nreefing\nreefs\nreefy\nreeject\nreejected\nreejecting\nreejects\nreek\nreeked\nreeker\nreekers\nreekier\nreekiest\nreeking\nreeks\nreeky\nreel\nreelable\nreelect\nreelected\nreelecting\nreelection\nreelections\nreelects\nreeled\nreeler\nreelers\nreeling\nreels\nreembark\nreembarked\nreembarking\nreembarks\nreembodied\nreembodies\nreembody\nreembodying\nreemerge\nreemerged\nreemergence\nreemergences\nreemerges\nreemerging\nreemit\nreemits\nreemitted\nreemitting\nreemphasize\nreemphasized\nreemphasizes\nreemphasizing\nreemploy\nreemployed\nreemploying\nreemploys\nreenact\nreenacted\nreenacting\nreenactment\nreenactments\nreenacts\nreendow\nreendowed\nreendowing\nreendows\nreengage\nreengaged\nreengages\nreengaging\nreenjoy\nreenjoyed\nreenjoying\nreenjoys\nreenlist\nreenlisted\nreenlisting\nreenlistment\nreenlistments\nreenlists\nreenter\nreentered\nreentering\nreenters\nreentrance\nreentrances\nreentrant\nreentrants\nreentries\nreentry\nreequip\nreequipped\nreequipping\nreequips\nreerect\nreerected\nreerecting\nreerects\nrees\nreest\nreestablish\nreestablished\nreestablishes\nreestablishing\nreestablishment\nreestablishments\nreested\nreesting\nreests\nreevaluate\nreevaluated\nreevaluates\nreevaluating\nreevaluation\nreevaluations\nreeve\nreeved\nreeves\nreeving\nreevoke\nreevoked\nreevokes\nreevoking\nreexamination\nreexaminations\nreexamine\nreexamined\nreexamines\nreexamining\nreexpel\nreexpelled\nreexpelling\nreexpels\nreexperience\nreexperienced\nreexperiences\nreexperiencing\nreexport\nreexportation\nreexportations\nreexported\nreexporting\nreexports\nref\nreface\nrefaced\nrefaces\nrefacing\nrefall\nrefallen\nrefalling\nrefalls\nrefasten\nrefastened\nrefastening\nrefastens\nrefect\nrefected\nrefecting\nrefection\nrefections\nrefectories\nrefectory\nrefects\nrefed\nrefeed\nrefeeding\nrefeeds\nrefel\nrefell\nrefelled\nrefelling\nrefels\nrefer\nreferable\nreferee\nrefereed\nrefereeing\nreferees\nreference\nreferenced\nreferences\nreferencing\nreferenda\nreferendum\nreferendums\nreferent\nreferential\nreferentially\nreferents\nreferral\nreferrals\nreferred\nreferrer\nreferrers\nreferring\nrefers\nreffed\nreffing\nrefight\nrefighting\nrefights\nrefigure\nrefigured\nrefigures\nrefiguring\nrefile\nrefiled\nrefiles\nrefiling\nrefill\nrefillable\nrefilled\nrefilling\nrefills\nrefilm\nrefilmed\nrefilming\nrefilms\nrefilter\nrefiltered\nrefiltering\nrefilters\nrefinance\nrefinanced\nrefinances\nrefinancing\nrefind\nrefinding\nrefinds\nrefine\nrefined\nrefinement\nrefinements\nrefiner\nrefineries\nrefiners\nrefinery\nrefines\nrefining\nrefinish\nrefinished\nrefinishes\nrefinishing\nrefire\nrefired\nrefires\nrefiring\nrefit\nrefits\nrefitted\nrefitting\nrefix\nrefixed\nrefixes\nrefixing\nreflate\nreflated\nreflates\nreflating\nreflation\nreflations\nreflect\nreflectance\nreflected\nreflecting\nreflection\nreflectional\nreflections\nreflective\nreflectively\nreflectiveness\nreflector\nreflectors\nreflects\nreflet\nreflets\nreflew\nreflex\nreflexed\nreflexes\nreflexing\nreflexive\nreflexively\nreflexiveness\nreflexives\nreflexivity\nreflexly\nreflies\nrefloat\nrefloated\nrefloating\nrefloats\nreflood\nreflooded\nreflooding\nrefloods\nreflow\nreflowed\nreflower\nreflowered\nreflowering\nreflowers\nreflowing\nreflown\nreflows\nrefluent\nreflux\nrefluxed\nrefluxes\nrefluxing\nrefly\nreflying\nrefocus\nrefocused\nrefocuses\nrefocusing\nrefocussed\nrefocusses\nrefocussing\nrefold\nrefolded\nrefolding\nrefolds\nreforest\nreforestation\nreforestations\nreforested\nreforesting\nreforests\nreforge\nreforged\nreforges\nreforging\nreform\nreformable\nreformat\nreformation\nreformational\nreformations\nreformative\nreformatories\nreformatory\nreformats\nreformatted\nreformatting\nreformed\nreformer\nreformers\nreforming\nreformism\nreformisms\nreformist\nreformists\nreforms\nreformulate\nreformulated\nreformulates\nreformulating\nreformulation\nreformulations\nrefought\nrefound\nrefounded\nrefounding\nrefounds\nrefract\nrefracted\nrefracting\nrefraction\nrefractions\nrefractive\nrefractively\nrefractivity\nrefractor\nrefractories\nrefractorily\nrefractors\nrefractory\nrefracts\nrefrain\nrefrained\nrefraining\nrefrains\nreframe\nreframed\nreframes\nreframing\nrefrangibility\nrefrangible\nrefrangibleness\nrefreeze\nrefreezes\nrefreezing\nrefresh\nrefreshed\nrefreshen\nrefreshened\nrefreshening\nrefreshens\nrefresher\nrefreshers\nrefreshes\nrefreshing\nrefreshingly\nrefreshment\nrefreshments\nrefried\nrefries\nrefrigerant\nrefrigerants\nrefrigerate\nrefrigerated\nrefrigerates\nrefrigerating\nrefrigeration\nrefrigerations\nrefrigerator\nrefrigerators\nrefront\nrefronted\nrefronting\nrefronts\nrefroze\nrefrozen\nrefry\nrefrying\nrefs\nreft\nrefuel\nrefueled\nrefueling\nrefuelled\nrefuelling\nrefuels\nrefuge\nrefuged\nrefugee\nrefugeeism\nrefugees\nrefuges\nrefugia\nrefuging\nrefugium\nrefulgence\nrefulgent\nrefund\nrefundable\nrefunded\nrefunder\nrefunders\nrefunding\nrefunds\nrefurbish\nrefurbished\nrefurbishes\nrefurbishing\nrefurbishment\nrefurbishments\nrefusal\nrefusals\nrefuse\nrefused\nrefuser\nrefusers\nrefuses\nrefusing\nrefutable\nrefutably\nrefutal\nrefutals\nrefutation\nrefutations\nrefute\nrefuted\nrefuter\nrefuters\nrefutes\nrefuting\nreg\nregain\nregained\nregainer\nregainers\nregaining\nregains\nregal\nregale\nregaled\nregales\nregalia\nregaling\nregalities\nregality\nregally\nregard\nregarded\nregardful\nregarding\nregardless\nregardlessly\nregards\nregather\nregathered\nregathering\nregathers\nregatta\nregattas\nregauge\nregauged\nregauges\nregauging\nregave\nregear\nregeared\nregearing\nregears\nregelate\nregelated\nregelates\nregelating\nregencies\nregency\nregenerate\nregenerated\nregenerates\nregenerating\nregeneration\nregenerations\nregenerative\nregenerator\nregenerators\nregent\nregental\nregents\nreges\nregicide\nregicides\nregild\nregilded\nregilding\nregilds\nregilt\nregime\nregimen\nregimens\nregiment\nregimental\nregimentals\nregimentation\nregimentations\nregimented\nregimenting\nregiments\nregimes\nregina\nreginae\nreginal\nreginas\nregion\nregional\nregionalism\nregionalisms\nregionalist\nregionalistic\nregionalists\nregionalize\nregionalized\nregionalizes\nregionalizing\nregionally\nregionals\nregions\nregister\nregistered\nregistering\nregisters\nregistrable\nregistrant\nregistrants\nregistrar\nregistrars\nregistration\nregistrations\nregistries\nregistry\nregius\nregive\nregiven\nregives\nregiving\nreglaze\nreglazed\nreglazes\nreglazing\nreglet\nreglets\nregloss\nreglossed\nreglosses\nreglossing\nreglow\nreglowed\nreglowing\nreglows\nreglue\nreglued\nreglues\nregluing\nregma\nregmata\nregna\nregnal\nregnancies\nregnancy\nregnant\nregnum\nregolith\nregoliths\nregorge\nregorged\nregorges\nregorging\nregosol\nregosols\nregrade\nregraded\nregrades\nregrading\nregraft\nregrafted\nregrafting\nregrafts\nregrant\nregranted\nregranting\nregrants\nregrate\nregrated\nregrates\nregrating\nregreet\nregreeted\nregreeting\nregreets\nregress\nregressed\nregresses\nregressing\nregression\nregressions\nregressive\nregressively\nregressor\nregressors\nregret\nregretful\nregretfully\nregretfulness\nregrets\nregrettable\nregrettably\nregretted\nregretting\nregrew\nregrind\nregrinding\nregrinds\nregroove\nregrooved\nregrooves\nregrooving\nreground\nregroup\nregrouped\nregrouping\nregroups\nregrow\nregrowing\nregrown\nregrows\nregrowth\nregrowths\nregs\nregular\nregularities\nregularity\nregularization\nregularizations\nregularize\nregularized\nregularizes\nregularizing\nregularly\nregulars\nregulate\nregulated\nregulates\nregulating\nregulation\nregulations\nregulative\nregulator\nregulators\nregulatory\nreguli\nreguline\nregulus\nreguluses\nregurgitate\nregurgitated\nregurgitates\nregurgitating\nregurgitation\nregurgitations\nrehab\nrehabilitate\nrehabilitated\nrehabilitates\nrehabilitating\nrehabilitation\nrehabilitations\nrehabilitative\nrehammer\nrehammered\nrehammering\nrehammers\nrehandle\nrehandled\nrehandles\nrehandling\nrehang\nrehanged\nrehanging\nrehangs\nreharden\nrehardened\nrehardening\nrehardens\nrehash\nrehashed\nrehashes\nrehashing\nrehear\nreheard\nrehearing\nrehearings\nrehears\nrehearsal\nrehearsals\nrehearse\nrehearsed\nrehearses\nrehearsing\nreheat\nreheated\nreheater\nreheaters\nreheating\nreheats\nreheel\nreheeled\nreheeling\nreheels\nrehem\nrehemmed\nrehemming\nrehems\nrehinge\nrehinged\nrehinges\nrehinging\nrehire\nrehired\nrehires\nrehiring\nrehouse\nrehoused\nrehouses\nrehousing\nrehung\nrei\nreif\nreified\nreifier\nreifiers\nreifies\nreifs\nreify\nreifying\nreign\nreigned\nreigning\nreignite\nreignited\nreignites\nreigniting\nreigns\nreimage\nreimaged\nreimages\nreimaging\nreimbursable\nreimburse\nreimbursed\nreimbursement\nreimbursements\nreimburses\nreimbursing\nreimport\nreimported\nreimporting\nreimports\nreimpose\nreimposed\nreimposes\nreimposing\nrein\nreincarnate\nreincarnated\nreincarnates\nreincarnating\nreincarnation\nreincarnations\nreincite\nreincited\nreincites\nreinciting\nreincorporate\nreincorporated\nreincorporates\nreincorporating\nreincur\nreincurred\nreincurring\nreincurs\nreindeer\nreindeers\nreindex\nreindexed\nreindexes\nreindexing\nreinduce\nreinduced\nreinduces\nreinducing\nreinduct\nreinducted\nreinducting\nreinducts\nreined\nreinfect\nreinfected\nreinfecting\nreinfects\nreinforce\nreinforced\nreinforcement\nreinforcements\nreinforcer\nreinforcers\nreinforces\nreinforcing\nreinform\nreinformed\nreinforming\nreinforms\nreinfuse\nreinfused\nreinfuses\nreinfusing\nreining\nreinjure\nreinjured\nreinjures\nreinjuring\nreink\nreinless\nreins\nreinsert\nreinserted\nreinserting\nreinsertion\nreinsertions\nreinserts\nreinsman\nreinsmen\nreinstall\nreinstallation\nreinstallations\nreinstalled\nreinstalling\nreinstalls\nreinstate\nreinstated\nreinstatement\nreinstatements\nreinstates\nreinstating\nreinstitute\nreinstituted\nreinstitutes\nreinstituting\nreinsure\nreinsured\nreinsures\nreinsuring\nreinter\nreinterred\nreinterring\nreinters\nreintroduce\nreintroduced\nreintroduces\nreintroducing\nreinvent\nreinvented\nreinventing\nreinvents\nreinvest\nreinvested\nreinvesting\nreinvestment\nreinvestments\nreinvests\nreinvite\nreinvited\nreinvites\nreinviting\nreinvoke\nreinvoked\nreinvokes\nreinvoking\nreis\nreissue\nreissued\nreissuer\nreissuers\nreissues\nreissuing\nreitbok\nreitboks\nreiterate\nreiterated\nreiterates\nreiterating\nreiteration\nreiterations\nreiterative\nreive\nreived\nreiver\nreivers\nreives\nreiving\nreject\nrejected\nrejectee\nrejectees\nrejecter\nrejecters\nrejecting\nrejection\nrejections\nrejective\nrejector\nrejectors\nrejects\nrejigger\nrejiggered\nrejiggering\nrejiggers\nrejoice\nrejoiced\nrejoicer\nrejoicers\nrejoices\nrejoicing\nrejoicingly\nrejoicings\nrejoin\nrejoinder\nrejoinders\nrejoined\nrejoining\nrejoins\nrejudge\nrejudged\nrejudges\nrejudging\nrejuvenate\nrejuvenated\nrejuvenates\nrejuvenating\nrejuvenation\nrejuvenations\nrekey\nrekeyed\nrekeying\nrekeys\nrekindle\nrekindled\nrekindles\nrekindling\nreknit\nreknits\nreknitted\nreknitting\nrelabel\nrelabeled\nrelabeling\nrelabelled\nrelabelling\nrelabels\nrelace\nrelaced\nrelaces\nrelacing\nrelaid\nrelapse\nrelapsed\nrelapser\nrelapsers\nrelapses\nrelapsing\nrelatable\nrelate\nrelated\nrelatedness\nrelater\nrelaters\nrelates\nrelating\nrelation\nrelational\nrelations\nrelationship\nrelationships\nrelative\nrelatively\nrelativeness\nrelatives\nrelativism\nrelativist\nrelativistic\nrelativists\nrelativities\nrelativity\nrelator\nrelators\nrelaunch\nrelaunched\nrelaunches\nrelaunching\nrelax\nrelaxant\nrelaxants\nrelaxation\nrelaxations\nrelaxed\nrelaxedly\nrelaxedness\nrelaxer\nrelaxers\nrelaxes\nrelaxin\nrelaxing\nrelaxins\nrelay\nrelayed\nrelaying\nrelays\nrelearn\nrelearned\nrelearning\nrelearns\nrelearnt\nrelease\nreleased\nreleaser\nreleasers\nreleases\nreleasing\nrelegate\nrelegated\nrelegates\nrelegating\nrelegation\nrelegations\nrelend\nrelending\nrelends\nrelent\nrelented\nrelenting\nrelentless\nrelentlessly\nrelentlessness\nrelents\nrelet\nrelets\nreletter\nrelettered\nrelettering\nreletters\nreletting\nrelevance\nrelevances\nrelevancies\nrelevancy\nrelevant\nrelevantly\nreliability\nreliable\nreliableness\nreliably\nreliance\nreliances\nreliant\nreliantly\nrelic\nrelics\nrelict\nrelicts\nrelied\nrelief\nreliefs\nrelier\nreliers\nrelies\nrelievable\nrelieve\nrelieved\nrelievedly\nreliever\nrelievers\nrelieves\nrelieving\nrelievo\nrelievos\nrelight\nrelighted\nrelighting\nrelights\nreligion\nreligionist\nreligionists\nreligions\nreligiose\nreligiosity\nreligious\nreligiously\nreligiousness\nreline\nrelined\nrelines\nrelining\nrelinquish\nrelinquished\nrelinquishes\nrelinquishing\nrelinquishment\nrelinquishments\nreliquaries\nreliquary\nrelique\nreliques\nrelish\nrelishable\nrelished\nrelishes\nrelishing\nrelist\nrelisted\nrelisting\nrelists\nrelit\nrelive\nrelived\nrelives\nreliving\nreload\nreloaded\nreloader\nreloaders\nreloading\nreloads\nreloan\nreloaned\nreloaning\nreloans\nrelocate\nrelocated\nrelocates\nrelocating\nrelocation\nrelocations\nrelucent\nreluct\nreluctance\nreluctances\nreluctancies\nreluctancy\nreluctant\nreluctantly\nrelucted\nrelucting\nrelucts\nrelume\nrelumed\nrelumes\nrelumine\nrelumined\nrelumines\nreluming\nrelumining\nrely\nrelying\nrem\nremade\nremail\nremailed\nremailing\nremails\nremain\nremainder\nremainders\nremained\nremaining\nremains\nremake\nremakes\nremaking\nreman\nremand\nremanded\nremanding\nremands\nremanent\nremanned\nremanning\nremans\nremap\nremapped\nremapping\nremaps\nremark\nremarkable\nremarkableness\nremarkably\nremarked\nremarker\nremarkers\nremarking\nremarks\nremarque\nremarques\nremarriage\nremarriages\nremarried\nremarries\nremarry\nremarrying\nrematch\nrematched\nrematches\nrematching\nremediable\nremedial\nremedially\nremedied\nremedies\nremedy\nremedying\nremeet\nremeeting\nremeets\nremelt\nremelted\nremelting\nremelts\nremember\nremembered\nremembering\nremembers\nremembrance\nremembrances\nremend\nremended\nremending\nremends\nremerge\nremerged\nremerges\nremerging\nremet\nremex\nremiges\nremigial\nremind\nreminded\nreminder\nreminders\nremindful\nreminding\nreminds\nreminisce\nreminisced\nreminiscence\nreminiscences\nreminiscent\nreminiscently\nreminisces\nreminiscing\nremint\nreminted\nreminting\nremints\nremise\nremised\nremises\nremising\nremiss\nremissible\nremission\nremissions\nremissly\nremissness\nremit\nremits\nremittable\nremittal\nremittals\nremittance\nremittances\nremitted\nremittence\nremittent\nremitter\nremitters\nremitting\nremittor\nremittors\nremix\nremixed\nremixes\nremixing\nremixt\nremnant\nremnants\nremodel\nremodeled\nremodeling\nremodelled\nremodelling\nremodels\nremodified\nremodifies\nremodify\nremodifying\nremolade\nremolades\nremold\nremolded\nremolding\nremolds\nremonstrance\nremonstrances\nremonstrant\nremonstrantly\nremonstrants\nremonstrate\nremonstrated\nremonstrates\nremonstrating\nremonstration\nremonstrations\nremonstrative\nremonstratively\nremonstrator\nremonstrators\nremora\nremoras\nremorid\nremorse\nremorseful\nremorsefully\nremorsefulness\nremorseless\nremorselessly\nremorselessness\nremorses\nremote\nremotely\nremoteness\nremoter\nremotest\nremotion\nremotions\nremount\nremounted\nremounting\nremounts\nremovability\nremovable\nremovableness\nremovably\nremoval\nremovals\nremove\nremoved\nremover\nremovers\nremoves\nremoving\nrems\nremuda\nremudas\nremunerate\nremunerated\nremunerates\nremunerating\nremuneration\nremunerations\nremunerative\nremuneratively\nremunerativeness\nremuneratory\nrenaissance\nrenaissances\nrenal\nrename\nrenamed\nrenames\nrenaming\nrenascence\nrenascences\nrenascent\nrenature\nrenatured\nrenatures\nrenaturing\nrend\nrended\nrender\nrenderable\nrendered\nrenderer\nrenderers\nrendering\nrenderings\nrenders\nrendezvous\nrendezvoused\nrendezvousing\nrendible\nrending\nrendition\nrenditions\nrends\nrendzina\nrendzinas\nrenegade\nrenegaded\nrenegades\nrenegading\nrenegado\nrenegadoes\nrenegados\nrenege\nreneged\nreneger\nrenegers\nreneges\nreneging\nrenegotiable\nrenegotiate\nrenegotiated\nrenegotiates\nrenegotiating\nrenegotiation\nrenegotiations\nrenew\nrenewability\nrenewable\nrenewably\nrenewal\nrenewals\nrenewed\nrenewer\nrenewers\nrenewing\nrenews\nreniform\nrenig\nrenigged\nrenigging\nrenigs\nrenin\nrenins\nrenitent\nrennase\nrennases\nrennet\nrennets\nrennin\nrennins\nrenogram\nrenograms\nrenotified\nrenotifies\nrenotify\nrenotifying\nrenounce\nrenounced\nrenouncement\nrenouncements\nrenounces\nrenouncing\nrenovate\nrenovated\nrenovates\nrenovating\nrenovation\nrenovations\nrenovative\nrenovator\nrenovators\nrenown\nrenowned\nrenowning\nrenowns\nrent\nrentability\nrentable\nrental\nrentals\nrente\nrented\nrenter\nrenters\nrentes\nrentier\nrentiers\nrenting\nrents\nrenumber\nrenumbered\nrenumbering\nrenumbers\nrenunciation\nrenunciations\nrenunciative\nrenunciatory\nrenvoi\nrenvois\nreobject\nreobjected\nreobjecting\nreobjects\nreobtain\nreobtained\nreobtaining\nreobtains\nreoccupied\nreoccupies\nreoccupy\nreoccupying\nreoccur\nreoccurred\nreoccurrence\nreoccurrences\nreoccurring\nreoccurs\nreoffer\nreoffered\nreoffering\nreoffers\nreoil\nreoiled\nreoiling\nreoils\nreopen\nreopened\nreopening\nreopens\nreoppose\nreopposed\nreopposes\nreopposing\nreordain\nreordained\nreordaining\nreordains\nreorder\nreordered\nreordering\nreorders\nreorganization\nreorganizations\nreorganize\nreorganized\nreorganizer\nreorganizers\nreorganizes\nreorganizing\nreorient\nreoriented\nreorienting\nreorients\nreovirus\nreoviruses\nrep\nrepacified\nrepacifies\nrepacify\nrepacifying\nrepack\nrepacked\nrepacking\nrepacks\nrepaid\nrepaint\nrepainted\nrepainting\nrepaints\nrepair\nrepairability\nrepairable\nrepaired\nrepairer\nrepairers\nrepairing\nrepairman\nrepairmen\nrepairs\nrepand\nrepandly\nrepaper\nrepapered\nrepapering\nrepapers\nreparable\nreparation\nreparations\nreparative\nrepartee\nrepartees\nrepass\nrepassed\nrepasses\nrepassing\nrepast\nrepasted\nrepasting\nrepasts\nrepatriate\nrepatriated\nrepatriates\nrepatriating\nrepatriation\nrepatriations\nrepave\nrepaved\nrepaves\nrepaving\nrepay\nrepayable\nrepaying\nrepayment\nrepayments\nrepays\nrepeal\nrepealable\nrepealed\nrepealer\nrepealers\nrepealing\nrepeals\nrepeat\nrepeatability\nrepeatable\nrepeated\nrepeatedly\nrepeater\nrepeaters\nrepeating\nrepeats\nrepeg\nrepel\nrepellant\nrepellants\nrepelled\nrepellency\nrepellent\nrepellently\nrepellents\nrepeller\nrepellers\nrepelling\nrepels\nrepent\nrepentance\nrepentances\nrepentant\nrepentantly\nrepented\nrepenter\nrepenters\nrepenting\nrepents\nrepeople\nrepeopled\nrepeoples\nrepeopling\nrepercussion\nrepercussions\nrepercussive\nreperk\nreperked\nreperking\nreperks\nrepertoire\nrepertoires\nrepertories\nrepertory\nrepetend\nrepetends\nrepetition\nrepetitions\nrepetitious\nrepetitiously\nrepetitiousness\nrepetitive\nrepetitively\nrepetitiveness\nrephrase\nrephrased\nrephrases\nrephrasing\nrepin\nrepine\nrepined\nrepiner\nrepiners\nrepines\nrepining\nrepinned\nrepinning\nrepins\nreplace\nreplaceable\nreplaced\nreplacement\nreplacements\nreplacer\nreplacers\nreplaces\nreplacing\nreplan\nreplanned\nreplanning\nreplans\nreplant\nreplanted\nreplanting\nreplants\nreplate\nreplated\nreplates\nreplating\nreplay\nreplayed\nreplaying\nreplays\nrepledge\nrepledged\nrepledges\nrepledging\nreplenish\nreplenished\nreplenishes\nreplenishing\nreplenishment\nreplenishments\nreplete\nrepleteness\nrepletion\nrepletions\nreplevied\nreplevies\nreplevin\nreplevined\nreplevining\nreplevins\nreplevy\nreplevying\nreplica\nreplicas\nreplicate\nreplicated\nreplicates\nreplicating\nreplication\nreplications\nreplied\nreplier\nrepliers\nreplies\nreplunge\nreplunged\nreplunges\nreplunging\nreply\nreplying\nrepo\nrepolish\nrepolished\nrepolishes\nrepolishing\nreport\nreportable\nreportage\nreportages\nreported\nreportedly\nreporter\nreporters\nreporting\nreportorial\nreportorially\nreports\nrepos\nreposal\nreposals\nrepose\nreposed\nreposeful\nreposefully\nreposer\nreposers\nreposes\nreposing\nreposit\nreposited\nrepositing\nreposition\nrepositioned\nrepositioning\nrepositions\nrepositories\nrepository\nreposits\nrepossess\nrepossessed\nrepossesses\nrepossessing\nrepossession\nrepossessions\nrepossessor\nrepossessors\nrepot\nrepour\nrepoured\nrepouring\nrepours\nrepousse\nrepousses\nrepower\nrepowered\nrepowering\nrepowers\nrepp\nrepped\nrepps\nreprehend\nreprehended\nreprehending\nreprehends\nreprehensibility\nreprehensible\nreprehensibleness\nreprehensibly\nreprehension\nreprehensions\nreprehensive\nrepresent\nrepresentable\nrepresentation\nrepresentational\nrepresentationalism\nrepresentationalisms\nrepresentationalist\nrepresentationalists\nrepresentations\nrepresentative\nrepresentatively\nrepresentativeness\nrepresentatives\nrepresented\nrepresenting\nrepresents\nrepress\nrepressed\nrepresses\nrepressible\nrepressing\nrepression\nrepressions\nrepressive\nrepressively\nrepressiveness\nrepressor\nrepressors\nreprice\nrepriced\nreprices\nrepricing\nreprieve\nreprieved\nreprieves\nreprieving\nreprimand\nreprimanded\nreprimanding\nreprimands\nreprint\nreprinted\nreprinter\nreprinters\nreprinting\nreprints\nreprisal\nreprisals\nreprise\nreprised\nreprises\nreprising\nrepro\nreproach\nreproachable\nreproached\nreproaches\nreproachful\nreproachfully\nreproachfulness\nreproaching\nreproachingly\nreprobate\nreprobated\nreprobates\nreprobating\nreprobation\nreprobations\nreprobative\nreprobe\nreprobed\nreprobes\nreprobing\nreprocess\nreprocessed\nreprocesses\nreprocessing\nreproduce\nreproduced\nreproducer\nreproducers\nreproduces\nreproducibilities\nreproducibility\nreproducible\nreproducing\nreproduction\nreproductions\nreproductive\nreproductively\nreprogram\nreprogrammed\nreprogramming\nreprograms\nreprographics\nreproof\nreproofs\nrepros\nreproval\nreprovals\nreprove\nreproved\nreprover\nreprovers\nreproves\nreproving\nreprovingly\nreps\nreptant\nreptile\nreptiles\nreptilian\nreptilians\nrepublic\nrepublican\nrepublicanism\nrepublicanize\nrepublicanized\nrepublicanizes\nrepublicanizing\nrepublicans\nrepublics\nrepublish\nrepublished\nrepublishes\nrepublishing\nrepudiate\nrepudiated\nrepudiates\nrepudiating\nrepudiation\nrepudiations\nrepudiator\nrepudiators\nrepugn\nrepugnance\nrepugnances\nrepugnancies\nrepugnancy\nrepugnant\nrepugnantly\nrepugned\nrepugning\nrepugns\nrepulse\nrepulsed\nrepulser\nrepulsers\nrepulses\nrepulsing\nrepulsion\nrepulsions\nrepulsive\nrepulsively\nrepulsiveness\nrepurchase\nrepurchased\nrepurchases\nrepurchasing\nrepurified\nrepurifies\nrepurify\nrepurifying\nrepursue\nrepursued\nrepursues\nrepursuing\nreputability\nreputable\nreputably\nreputation\nreputations\nrepute\nreputed\nreputedly\nreputes\nreputing\nrequest\nrequested\nrequester\nrequesters\nrequesting\nrequestor\nrequestors\nrequests\nrequiem\nrequiems\nrequin\nrequins\nrequire\nrequired\nrequirement\nrequirements\nrequirer\nrequirers\nrequires\nrequiring\nrequisite\nrequisiteness\nrequisites\nrequisition\nrequisitioned\nrequisitioning\nrequisitions\nrequital\nrequitals\nrequite\nrequited\nrequiter\nrequiters\nrequites\nrequiting\nreran\nreread\nrereading\nrereads\nrerecord\nrerecorded\nrerecording\nrerecords\nreredos\nreredoses\nreremice\nrereward\nrerewards\nrerise\nrerisen\nrerises\nrerising\nreroll\nrerolled\nreroller\nrerollers\nrerolling\nrerolls\nrerose\nreroute\nrerouted\nreroutes\nrerouting\nrerun\nrerunning\nreruns\nres\nresaddle\nresaddled\nresaddles\nresaddling\nresaid\nresail\nresailed\nresailing\nresails\nresalable\nresale\nresales\nresalute\nresaluted\nresalutes\nresaluting\nresample\nresampled\nresamples\nresampling\nresaw\nresawed\nresawing\nresawn\nresaws\nresay\nresaying\nresays\nrescale\nrescaled\nrescales\nrescaling\nreschedule\nrescheduled\nreschedules\nrescheduling\nrescind\nrescinded\nrescinding\nrescindment\nrescindments\nrescinds\nrescission\nrescissions\nrescore\nrescored\nrescores\nrescoring\nrescreen\nrescreened\nrescreening\nrescreens\nrescript\nrescripts\nrescuable\nrescue\nrescued\nrescuer\nrescuers\nrescues\nrescuing\nreseal\nresealed\nresealing\nreseals\nresearch\nresearchable\nresearched\nresearcher\nresearchers\nresearches\nresearching\nresearchist\nresearchists\nreseat\nreseated\nreseating\nreseats\nreseau\nreseaus\nreseaux\nresect\nresected\nresecting\nresection\nresections\nresects\nreseda\nresedas\nresee\nreseed\nreseeded\nreseeding\nreseeds\nreseeing\nreseek\nreseeking\nreseeks\nreseen\nresees\nreseize\nreseized\nreseizes\nreseizing\nresell\nreseller\nresellers\nreselling\nresells\nresemblance\nresemblances\nresemble\nresembled\nresembles\nresembling\nresend\nresending\nresends\nresent\nresented\nresentful\nresentfully\nresentfulness\nresenting\nresentment\nresentments\nresents\nreservation\nreservations\nreserve\nreserved\nreservedly\nreservedness\nreserver\nreservers\nreserves\nreserving\nreservist\nreservists\nreservoir\nreservoirs\nreset\nresets\nresetter\nresetters\nresetting\nresettle\nresettled\nresettlement\nresettlements\nresettles\nresettling\nresew\nresewed\nresewing\nresewn\nresews\nresh\nreshape\nreshaped\nreshaper\nreshapers\nreshapes\nreshaping\nreshes\nreship\nreshipment\nreshipments\nreshipped\nreshipping\nreships\nreshod\nreshoe\nreshoeing\nreshoes\nreshoot\nreshooting\nreshoots\nreshot\nreshow\nreshowed\nreshowing\nreshown\nreshows\nreshuffle\nreshuffled\nreshuffles\nreshuffling\nresid\nreside\nresided\nresidence\nresidences\nresidencies\nresidency\nresident\nresidential\nresidentially\nresidents\nresider\nresiders\nresides\nresiding\nresids\nresidua\nresidual\nresidually\nresiduals\nresiduary\nresidue\nresidues\nresiduum\nresiduums\nresift\nresifted\nresifting\nresifts\nresign\nresignation\nresignations\nresigned\nresignedly\nresignedness\nresigner\nresigners\nresigning\nresigns\nresile\nresiled\nresiles\nresilience\nresiliences\nresiliencies\nresiliency\nresilient\nresiliently\nresiling\nresilver\nresilvered\nresilvering\nresilvers\nresin\nresinate\nresinated\nresinates\nresinating\nresined\nresinified\nresinifies\nresinify\nresinifying\nresining\nresinoid\nresinoids\nresinous\nresins\nresiny\nresist\nresistance\nresistances\nresistant\nresistants\nresisted\nresister\nresisters\nresistibilities\nresistibility\nresistible\nresisting\nresistive\nresistively\nresistiveness\nresistivity\nresistless\nresistlessly\nresistlessness\nresistor\nresistors\nresists\nresize\nresized\nresizes\nresizing\nresmelt\nresmelted\nresmelting\nresmelts\nresmooth\nresmoothed\nresmoothing\nresmooths\nresod\nresojet\nresojets\nresold\nresolder\nresoldered\nresoldering\nresolders\nresole\nresoled\nresoles\nresoling\nresolute\nresolutely\nresoluteness\nresoluter\nresolutes\nresolutest\nresolution\nresolutions\nresolvable\nresolve\nresolved\nresolvent\nresolver\nresolvers\nresolves\nresolving\nresonance\nresonances\nresonant\nresonantly\nresonants\nresonate\nresonated\nresonates\nresonating\nresonator\nresonators\nresorb\nresorbed\nresorbing\nresorbs\nresorcin\nresorcins\nresorption\nresort\nresorted\nresorter\nresorters\nresorting\nresorts\nresought\nresound\nresounded\nresounding\nresoundingly\nresounds\nresource\nresourceful\nresourcefully\nresourcefulness\nresources\nresow\nresowed\nresowing\nresown\nresows\nrespect\nrespectabilities\nrespectability\nrespectable\nrespectableness\nrespectably\nrespected\nrespecter\nrespecters\nrespectful\nrespectfully\nrespectfulness\nrespecting\nrespective\nrespectively\nrespectiveness\nrespects\nrespell\nrespelled\nrespelling\nrespells\nrespelt\nrespirable\nrespiration\nrespirations\nrespirator\nrespirators\nrespiratory\nrespire\nrespired\nrespires\nrespiring\nrespite\nrespited\nrespites\nrespiting\nresplendence\nresplendences\nresplendencies\nresplendency\nresplendent\nresplendently\nrespond\nresponded\nrespondent\nrespondents\nresponder\nresponders\nresponding\nresponds\nresponsa\nresponse\nresponses\nresponsibilities\nresponsibility\nresponsible\nresponsibleness\nresponsibly\nresponsions\nresponsive\nresponsively\nresponsiveness\nresponsories\nresponsory\nresprang\nrespread\nrespreading\nrespreads\nrespring\nrespringing\nresprings\nresprung\nrest\nrestack\nrestacked\nrestacking\nrestacks\nrestaff\nrestaffed\nrestaffing\nrestaffs\nrestage\nrestaged\nrestages\nrestaging\nrestamp\nrestamped\nrestamping\nrestamps\nrestart\nrestarted\nrestarting\nrestarts\nrestate\nrestated\nrestatement\nrestatements\nrestates\nrestating\nrestaurant\nrestaurants\nrestaurateur\nrestaurateurs\nrested\nrester\nresters\nrestful\nrestfuller\nrestfullest\nrestfully\nrestfulness\nresting\nrestitution\nrestitutions\nrestive\nrestively\nrestiveness\nrestless\nrestlessly\nrestlessness\nrestock\nrestocked\nrestocking\nrestocks\nrestorable\nrestoral\nrestorals\nrestoration\nrestorations\nrestorative\nrestoratives\nrestore\nrestored\nrestorer\nrestorers\nrestores\nrestoring\nrestrain\nrestrainable\nrestrained\nrestrainedly\nrestrainer\nrestrainers\nrestraining\nrestrains\nrestraint\nrestraints\nrestricken\nrestrict\nrestricted\nrestrictedly\nrestricting\nrestriction\nrestrictionist\nrestrictionists\nrestrictions\nrestrictive\nrestrictively\nrestrictiveness\nrestricts\nrestrike\nrestrikes\nrestriking\nrestring\nrestringing\nrestrings\nrestrive\nrestriven\nrestrives\nrestriving\nrestrove\nrestruck\nrestructure\nrestructured\nrestructures\nrestructuring\nrestrung\nrests\nrestudied\nrestudies\nrestudy\nrestudying\nrestuff\nrestuffed\nrestuffing\nrestuffs\nrestyle\nrestyled\nrestyles\nrestyling\nresubmit\nresubmits\nresubmitted\nresubmitting\nresult\nresultant\nresultants\nresulted\nresulting\nresults\nresume\nresumed\nresumer\nresumers\nresumes\nresuming\nresummon\nresummoned\nresummoning\nresummons\nresumption\nresumptions\nresupine\nresupplied\nresupplies\nresupply\nresupplying\nresurface\nresurfaced\nresurfaces\nresurfacing\nresurge\nresurged\nresurgence\nresurgences\nresurgent\nresurges\nresurging\nresurrect\nresurrected\nresurrecting\nresurrection\nresurrectional\nresurrectionist\nresurrectionists\nresurrections\nresurrects\nresurvey\nresurveyed\nresurveying\nresurveys\nresuscitate\nresuscitated\nresuscitates\nresuscitating\nresuscitation\nresuscitations\nresuscitative\nresuscitator\nresuscitators\nret\nretable\nretables\nretag\nretail\nretailed\nretailer\nretailers\nretailing\nretailor\nretailored\nretailoring\nretailors\nretails\nretain\nretained\nretainer\nretainers\nretaining\nretains\nretake\nretaken\nretaker\nretakers\nretakes\nretaking\nretaliate\nretaliated\nretaliates\nretaliating\nretaliation\nretaliations\nretaliative\nretaliatory\nretard\nretardant\nretardants\nretardate\nretardates\nretardation\nretardations\nretarded\nretarder\nretarders\nretarding\nretards\nretaste\nretasted\nretastes\nretasting\nretaught\nretax\nretch\nretched\nretches\nretching\nrete\nreteach\nreteaches\nreteaching\nretell\nretelling\nretells\nretem\nretems\nretene\nretenes\nretention\nretentions\nretentive\nretentively\nretentiveness\nretentivities\nretentivity\nretest\nretested\nretesting\nretests\nrethink\nrethinking\nrethinks\nrethought\nrethread\nrethreaded\nrethreading\nrethreads\nretia\nretial\nretiarii\nretiary\nreticence\nreticences\nreticencies\nreticency\nreticent\nreticently\nreticle\nreticles\nreticula\nreticular\nreticulate\nreticulated\nreticulately\nreticulates\nreticulating\nreticulation\nreticulations\nreticule\nreticules\nretie\nretied\nreties\nretiform\nretime\nretimed\nretimes\nretiming\nretina\nretinae\nretinal\nretinals\nretinas\nretinene\nretinenes\nretinite\nretinites\nretinol\nretinols\nretint\nretinted\nretinting\nretints\nretinue\nretinued\nretinues\nretinula\nretinulae\nretinulas\nretirant\nretirants\nretire\nretired\nretiredly\nretiredness\nretiree\nretirees\nretirement\nretirements\nretirer\nretirers\nretires\nretiring\nretiringly\nretitle\nretitled\nretitles\nretitling\nretold\nretook\nretool\nretooled\nretooling\nretools\nretort\nretorted\nretorter\nretorters\nretorting\nretortion\nretortions\nretorts\nretouch\nretouched\nretoucher\nretouchers\nretouches\nretouching\nretrace\nretraced\nretraces\nretracing\nretrack\nretracked\nretracking\nretracks\nretract\nretractable\nretracted\nretractile\nretractility\nretracting\nretraction\nretractions\nretractor\nretractors\nretracts\nretrain\nretrainable\nretrained\nretrainee\nretrainees\nretraining\nretrains\nretral\nretrally\nretread\nretreaded\nretreading\nretreads\nretreat\nretreated\nretreating\nretreats\nretrench\nretrenched\nretrenches\nretrenching\nretrenchment\nretrenchments\nretrial\nretrials\nretribution\nretributions\nretributive\nretributively\nretributory\nretried\nretries\nretrievable\nretrieval\nretrievals\nretrieve\nretrieved\nretriever\nretrievers\nretrieves\nretrieving\nretrim\nretrimmed\nretrimming\nretrims\nretro\nretroact\nretroacted\nretroacting\nretroaction\nretroactions\nretroactive\nretroactively\nretroacts\nretrocede\nretroceded\nretrocedes\nretroceding\nretrocession\nretrocessions\nretrofire\nretrofired\nretrofires\nretrofiring\nretrofit\nretrofits\nretrofitted\nretrofitting\nretrogradation\nretrogradations\nretrograde\nretrograded\nretrogradely\nretrogrades\nretrograding\nretrogress\nretrogressed\nretrogresses\nretrogressing\nretrogression\nretrogressions\nretrogressive\nretrogressively\nretrorse\nretrospect\nretrospected\nretrospecting\nretrospection\nretrospections\nretrospective\nretrospectively\nretrospects\nretrousse\nretry\nretrying\nrets\nretsina\nretsinas\nretted\nretting\nretune\nretuned\nretunes\nretuning\nreturn\nreturnable\nreturned\nreturnee\nreturnees\nreturner\nreturners\nreturning\nreturns\nretuse\nretwist\nretwisted\nretwisting\nretwists\nretying\nretype\nretyped\nretypes\nretyping\nreunified\nreunifies\nreunify\nreunifying\nreunion\nreunionist\nreunionistic\nreunionists\nreunions\nreunite\nreunited\nreuniter\nreuniters\nreunites\nreuniting\nreusability\nreusable\nreuse\nreused\nreuses\nreusing\nreutter\nreuttered\nreuttering\nreutters\nrev\nrevaluate\nrevaluated\nrevaluates\nrevaluating\nrevalue\nrevalued\nrevalues\nrevaluing\nrevamp\nrevamped\nrevamper\nrevampers\nrevamping\nrevamps\nrevanche\nrevanches\nreveal\nrevealable\nrevealed\nrevealer\nrevealers\nrevealing\nrevealingly\nrevealment\nrevealments\nreveals\nrevehent\nreveille\nreveilles\nrevel\nrevelation\nrevelations\nrevelator\nrevelators\nrevelatory\nreveled\nreveler\nrevelers\nreveling\nrevelled\nreveller\nrevellers\nrevelling\nrevelries\nrevelry\nrevels\nrevenant\nrevenants\nrevenge\nrevenged\nrevengeful\nrevengefully\nrevengefulness\nrevenger\nrevengers\nrevenges\nrevenging\nrevenual\nrevenue\nrevenued\nrevenuer\nrevenuers\nrevenues\nreverb\nreverberant\nreverberantly\nreverberate\nreverberated\nreverberates\nreverberating\nreverberation\nreverberations\nreverberative\nreverberatories\nreverberatory\nreverbs\nrevere\nrevered\nreverence\nreverenced\nreverencer\nreverencers\nreverences\nreverencing\nreverend\nreverends\nreverent\nreverential\nreverentially\nreverently\nreverer\nreverers\nreveres\nreverie\nreveries\nreverified\nreverifies\nreverify\nreverifying\nrevering\nrevers\nreversal\nreversals\nreverse\nreversed\nreversely\nreverser\nreversers\nreverses\nreversible\nreversibly\nreversing\nreversion\nreversional\nreversionary\nreversioner\nreversioners\nreversions\nreverso\nreversos\nrevert\nrevertant\nrevertants\nreverted\nreverter\nreverters\nrevertible\nreverting\nreverts\nrevery\nrevest\nrevested\nrevesting\nrevests\nrevet\nrevets\nrevetted\nrevetting\nreview\nreviewal\nreviewals\nreviewed\nreviewer\nreviewers\nreviewing\nreviews\nrevile\nreviled\nrevilement\nrevilements\nreviler\nrevilers\nreviles\nreviling\nrevisable\nrevisal\nrevisals\nrevise\nrevised\nreviser\nrevisers\nrevises\nrevising\nrevision\nrevisionary\nrevisionism\nrevisionisms\nrevisionist\nrevisionists\nrevisions\nrevisit\nrevisited\nrevisiting\nrevisits\nrevisor\nrevisors\nrevisory\nrevitalization\nrevitalizations\nrevitalize\nrevitalized\nrevitalizes\nrevitalizing\nrevivable\nrevival\nrevivalism\nrevivalisms\nrevivalist\nrevivalistic\nrevivalists\nrevivals\nrevive\nrevived\nreviver\nrevivers\nrevivification\nrevivifications\nrevivified\nrevivifies\nrevivify\nrevivifying\nreviving\nrevivives\nrevocable\nrevocation\nrevocations\nrevoice\nrevoiced\nrevoices\nrevoicing\nrevokable\nrevoke\nrevoked\nrevoker\nrevokers\nrevokes\nrevoking\nrevolt\nrevolted\nrevolter\nrevolters\nrevolting\nrevoltingly\nrevolts\nrevolute\nrevolution\nrevolutionaries\nrevolutionary\nrevolutionist\nrevolutionists\nrevolutionize\nrevolutionized\nrevolutionizer\nrevolutionizers\nrevolutionizes\nrevolutionizing\nrevolutions\nrevolvable\nrevolve\nrevolved\nrevolver\nrevolvers\nrevolves\nrevolving\nrevs\nrevue\nrevues\nrevuist\nrevuists\nrevulsed\nrevulsion\nrevulsions\nrevulsive\nrevved\nrevving\nrewake\nrewaked\nrewaken\nrewakened\nrewakening\nrewakens\nrewakes\nrewaking\nrewan\nrewany\nreward\nrewardable\nrewarded\nrewarder\nrewarders\nrewarding\nrewards\nrewarm\nrewarmed\nrewarming\nrewarms\nrewash\nrewashed\nrewashes\nrewashing\nrewax\nrewaxed\nrewaxes\nrewaxing\nreweave\nreweaved\nreweaves\nreweaving\nrewed\nreweigh\nreweighed\nreweighing\nreweighs\nreweld\nrewelded\nrewelding\nrewelds\nrewet\nrewiden\nrewidened\nrewidening\nrewidens\nrewin\nrewind\nrewinded\nrewinder\nrewinders\nrewinding\nrewinds\nrewinning\nrewins\nrewire\nrewired\nrewires\nrewiring\nrewoke\nrewoken\nrewon\nreword\nreworded\nrewording\nrewords\nrework\nreworked\nreworking\nreworks\nrewound\nrewove\nrewoven\nrewrap\nrewrapped\nrewrapping\nrewraps\nrewrapt\nrewrite\nrewriter\nrewriters\nrewrites\nrewriting\nrewritten\nrewrote\nrewrought\nrex\nrexes\nreynard\nreynards\nrezone\nrezoned\nrezones\nrezoning\nrhabdom\nrhabdome\nrhabdomes\nrhabdoms\nrhachides\nrhachis\nrhachises\nrhamnose\nrhamnoses\nrhamnus\nrhamnuses\nrhaphae\nrhaphe\nrhaphes\nrhapsode\nrhapsodes\nrhapsodic\nrhapsodical\nrhapsodically\nrhapsodies\nrhapsodist\nrhapsodists\nrhapsodize\nrhapsodized\nrhapsodizes\nrhapsodizing\nrhapsody\nrhatanies\nrhatany\nrhea\nrheas\nrhebok\nrheboks\nrhematic\nrhenium\nrheniums\nrheobase\nrheobases\nrheologies\nrheology\nrheophil\nrheostat\nrheostatic\nrheostats\nrhesus\nrhesuses\nrhetor\nrhetoric\nrhetorical\nrhetorically\nrhetorician\nrhetoricians\nrhetorics\nrhetors\nrheum\nrheumatic\nrheumatically\nrheumatics\nrheumatism\nrheumatisms\nrheumatoid\nrheumic\nrheumier\nrheumiest\nrheums\nrheumy\nrhinal\nrhinestone\nrhinestones\nrhinitides\nrhinitis\nrhino\nrhinoceri\nrhinoceros\nrhinoceroses\nrhinos\nrhizobia\nrhizoid\nrhizoids\nrhizoma\nrhizomata\nrhizome\nrhizomes\nrhizomic\nrhizopi\nrhizopod\nrhizopods\nrhizopus\nrhizopuses\nrho\nrhodamin\nrhodamins\nrhodic\nrhodium\nrhodiums\nrhodora\nrhodoras\nrhomb\nrhombi\nrhombic\nrhomboid\nrhomboidal\nrhomboids\nrhombs\nrhombus\nrhombuses\nrhonchal\nrhonchi\nrhonchus\nrhos\nrhubarb\nrhubarbs\nrhumb\nrhumba\nrhumbaed\nrhumbaing\nrhumbas\nrhumbs\nrhus\nrhuses\nrhyme\nrhymed\nrhymer\nrhymers\nrhymes\nrhymester\nrhymesters\nrhyming\nrhyolite\nrhyolites\nrhyta\nrhythm\nrhythmic\nrhythmical\nrhythmically\nrhythmicities\nrhythmicity\nrhythmics\nrhythmist\nrhythmists\nrhythms\nrhyton\nria\nrial\nrials\nrialto\nrialtos\nriant\nriantly\nrias\nriata\nriatas\nrib\nribald\nribaldly\nribaldries\nribaldry\nribalds\nriband\nribands\nribband\nribbands\nribbed\nribber\nribbers\nribbier\nribbiest\nribbing\nribbings\nribbon\nribboned\nribboning\nribbonlike\nribbons\nribbony\nribby\nribes\nribgrass\nribgrasses\nribless\nriblet\nriblets\nriblike\nriboflavin\nribose\nriboses\nribosome\nribosomes\nribs\nribwort\nribworts\nrice\nricebird\nricebirds\nriced\nricer\nricercar\nricercars\nricers\nrices\nrich\nrichen\nrichened\nrichening\nrichens\nricher\nriches\nrichest\nrichly\nrichness\nrichnesses\nrichweed\nrichweeds\nricin\nricing\nricins\nricinus\nricinuses\nrick\nricked\nricketier\nricketiest\nrickets\nrickettsia\nrickettsiae\nrickettsias\nrickety\nrickey\nrickeys\nricking\nrickrack\nrickracks\nricks\nricksha\nrickshas\nrickshaw\nrickshaws\nricochet\nricocheted\nricocheting\nricochets\nricochetted\nricochetting\nricotta\nricottas\nricrac\nricracs\nrictal\nrictus\nrictuses\nrid\nridable\nriddance\nriddances\nridded\nridden\nridder\nridders\nridding\nriddle\nriddled\nriddler\nriddlers\nriddles\nriddling\nride\nrideable\nrident\nrider\nriderless\nriders\nridership\nrides\nridge\nridged\nridgel\nridgels\nridgepole\nridgepoles\nridges\nridgier\nridgiest\nridgil\nridgils\nridging\nridgling\nridglings\nridgy\nridicule\nridiculed\nridiculer\nridiculers\nridicules\nridiculing\nridiculous\nridiculously\nridiculousness\nriding\nridings\nridley\nridleys\nridotto\nridottos\nrids\nriel\nriels\nries\nriever\nrievers\nrif\nrife\nrifely\nrifeness\nrifenesses\nrifer\nrifest\nriff\nriffed\nriffing\nriffle\nriffled\nriffler\nrifflers\nriffles\nriffling\nriffraff\nriffraffs\nriffs\nrifle\nrifled\nrifleman\nriflemen\nrifler\nrifleries\nriflers\nriflery\nrifles\nrifling\nriflings\nrifs\nrift\nrifted\nrifting\nriftless\nrifts\nrig\nrigadoon\nrigadoons\nrigatoni\nrigatonis\nrigaudon\nrigaudons\nrigged\nrigger\nriggers\nrigging\nriggings\nright\nrightangle\nrightangles\nrighted\nrighteous\nrighteously\nrighteousness\nrighter\nrighters\nrightest\nrightful\nrightfully\nrightfulness\nrighties\nrighting\nrightism\nrightisms\nrightist\nrightists\nrightly\nrightness\nrighto\nrights\nrightward\nrighty\nrigid\nrigidified\nrigidifies\nrigidify\nrigidifying\nrigidities\nrigidity\nrigidly\nrigidness\nrigmarole\nrigmaroles\nrigor\nrigorism\nrigorisms\nrigorist\nrigorists\nrigorous\nrigorously\nrigorousness\nrigors\nrigour\nrigours\nrigs\nrikisha\nrikishas\nrikshaw\nrikshaws\nrile\nriled\nriles\nriley\nrilievi\nrilievo\nriling\nrill\nrille\nrilled\nrilles\nrillet\nrillets\nrilling\nrills\nrim\nrime\nrimed\nrimer\nrimers\nrimes\nrimester\nrimesters\nrimfire\nrimier\nrimiest\nriming\nrimland\nrimlands\nrimless\nrimmed\nrimmer\nrimmers\nrimming\nrimose\nrimosely\nrimosities\nrimosity\nrimous\nrimple\nrimpled\nrimples\nrimpling\nrimrock\nrimrocks\nrims\nrimy\nrin\nrind\nrinded\nrinds\nring\nringbark\nringbarked\nringbarking\nringbarks\nringbolt\nringbolts\nringbone\nringbones\nringdove\nringdoves\nringed\nringent\nringer\nringers\nringhals\nringhalses\nringing\nringleader\nringleaders\nringlet\nringlets\nringlike\nringmaster\nringmasters\nringneck\nringnecks\nrings\nringside\nringsides\nringtail\nringtails\nringtaw\nringtaws\nringtoss\nringtosses\nringworm\nringworms\nrink\nrinks\nrinning\nrins\nrinsable\nrinse\nrinsed\nrinser\nrinsers\nrinses\nrinsible\nrinsing\nrinsings\nrioja\nriot\nrioted\nrioter\nrioters\nrioting\nriotous\nriotously\nriotousness\nriots\nrip\nriparian\nripcord\nripcords\nripe\nriped\nripely\nripen\nripened\nripener\nripeners\nripeness\nripenesses\nripening\nripens\nriper\nripes\nripest\nripieni\nripieno\nripienos\nriping\nripost\nriposte\nriposted\nripostes\nriposting\nriposts\nrippable\nripped\nripper\nrippers\nripping\nripple\nrippled\nrippler\nripplers\nripples\nripplet\nripplets\nripplier\nrippliest\nrippling\nripply\nriprap\nriprapped\nriprapping\nripraps\nrips\nripsaw\nripsaws\nriptide\nriptides\nrise\nrisen\nriser\nrisers\nrises\nrishi\nrishis\nrisibilities\nrisibility\nrisible\nrisibles\nrisibly\nrising\nrisings\nrisk\nrisked\nrisker\nriskers\nriskier\nriskiest\nriskily\nriskiness\nrisking\nrisks\nrisky\nrisotto\nrisottos\nrisque\nrissole\nrissoles\nrisus\nrisuses\nritard\nritards\nrite\nrites\nritter\nritters\nritual\nritualism\nritualist\nritualistic\nritualistically\nritualists\nritualize\nritualized\nritualizes\nritualizing\nritually\nrituals\nritz\nritzes\nritzier\nritziest\nritzily\nritzy\nrivage\nrivages\nrival\nrivaled\nrivaling\nrivalled\nrivalling\nrivalries\nrivalrous\nrivalry\nrivals\nrive\nrived\nriven\nriver\nriverbed\nriverbeds\nriverine\nrivers\nriverside\nriversides\nrives\nrivet\nriveted\nriveter\nriveters\nriveting\nrivets\nrivetted\nrivetting\nriviera\nrivieras\nriviere\nrivieres\nriving\nrivulet\nrivulets\nriyal\nriyals\nroach\nroached\nroaches\nroaching\nroad\nroadability\nroadbed\nroadbeds\nroadblock\nroadblocked\nroadblocking\nroadblocks\nroadhouse\nroadhouses\nroadless\nroads\nroadside\nroadsides\nroadstead\nroadsteads\nroadster\nroadsters\nroadway\nroadways\nroadwork\nroadworks\nroam\nroamed\nroamer\nroamers\nroaming\nroams\nroan\nroans\nroar\nroared\nroarer\nroarers\nroaring\nroaringly\nroarings\nroars\nroast\nroasted\nroaster\nroasters\nroasting\nroasts\nrob\nrobalo\nrobalos\nroband\nrobands\nrobbed\nrobber\nrobberies\nrobbers\nrobbery\nrobbin\nrobbing\nrobbins\nrobe\nrobed\nrobes\nrobin\nrobing\nrobins\nroble\nrobles\nroborant\nroborants\nrobot\nrobotics\nrobotism\nrobotisms\nrobotize\nrobotized\nrobotizes\nrobotizing\nrobotries\nrobotry\nrobots\nrobs\nrobust\nrobuster\nrobustest\nrobustly\nrobustness\nroc\nrochet\nrochets\nrock\nrockabies\nrockaby\nrockabye\nrockabyes\nrockaway\nrockaways\nrocked\nrocker\nrockeries\nrockers\nrockery\nrocket\nrocketed\nrocketeer\nrocketeers\nrocketer\nrocketers\nrocketing\nrocketlike\nrocketries\nrocketry\nrockets\nrockfall\nrockfalls\nrockfish\nrockfishes\nrockier\nrockiest\nrockiness\nrocking\nrockless\nrocklike\nrockling\nrocklings\nrockoon\nrockoons\nrockrose\nrockroses\nrocks\nrockweed\nrockweeds\nrockwork\nrockworks\nrocky\nrococo\nrococos\nrocs\nrod\nrodded\nrodding\nrode\nrodent\nrodents\nrodeo\nrodeos\nrodless\nrodlike\nrodman\nrodmen\nrods\nrodsman\nrodsmen\nroe\nroebuck\nroebucks\nroentgen\nroentgenogram\nroentgenograms\nroentgenographic\nroentgenographically\nroentgenography\nroentgenologic\nroentgenological\nroentgenologically\nroentgenologist\nroentgenologists\nroentgenology\nroentgens\nroes\nrogation\nrogations\nrogatory\nroger\nrogers\nrogue\nrogued\nrogueing\nrogueries\nroguery\nrogues\nroguing\nroguish\nroguishly\nroguishness\nroil\nroiled\nroilier\nroiliest\nroiling\nroils\nroily\nroister\nroistered\nroistering\nroisterous\nroisterously\nroisters\nrolamite\nrolamites\nrole\nroles\nroll\nrollaway\nrollback\nrollbacks\nrolled\nroller\nrollers\nrollick\nrollicked\nrollicking\nrollicks\nrollicky\nrolling\nrollings\nrollmop\nrollmops\nrollout\nrollouts\nrollover\nrollovers\nrolls\nrolltop\nrollway\nrollways\nrom\nromaine\nromaines\nroman\nromance\nromanced\nromancer\nromancers\nromances\nromancing\nromanize\nromanized\nromanizes\nromanizing\nromano\nromanos\nromans\nromantic\nromantically\nromanticism\nromanticist\nromanticists\nromanticization\nromanticizations\nromanticize\nromanticized\nromanticizes\nromanticizing\nromantics\nromaunt\nromaunts\nromeo\nromp\nromped\nromper\nrompers\nromping\nrompish\nromps\nroms\nrondeau\nrondeaux\nrondel\nrondelet\nrondelets\nrondelle\nrondelles\nrondels\nrondo\nrondos\nrondure\nrondures\nronion\nronions\nronnel\nronnels\nrontgen\nrontgens\nronyon\nronyons\nrood\nroods\nroof\nroofed\nroofer\nroofers\nroofing\nroofings\nroofless\nrooflike\nroofline\nrooflines\nroofs\nrooftop\nrooftops\nrooftree\nrooftrees\nrook\nrooked\nrookeries\nrookery\nrookie\nrookier\nrookies\nrookiest\nrooking\nrooks\nrooky\nroom\nroomed\nroomer\nroomers\nroomette\nroomettes\nroomful\nroomfuls\nroomier\nroomiest\nroomily\nroominess\nrooming\nroommate\nroommates\nrooms\nroomy\nroorback\nroorbacks\nroose\nroosed\nrooser\nroosers\nrooses\nroosing\nroost\nroosted\nrooster\nroosters\nroosting\nroosts\nroot\nrootage\nrootages\nrooted\nrooter\nrooters\nroothold\nrootholds\nrootier\nrootiest\nrooting\nrootless\nrootlessness\nrootlet\nrootlets\nrootlike\nroots\nrootstock\nrooty\nropable\nrope\nroped\nroper\nroperies\nropers\nropery\nropes\nropewalk\nropewalks\nropeway\nropeways\nropey\nropier\nropiest\nropily\nropiness\nropinesses\nroping\nropy\nroque\nroques\nroquet\nroqueted\nroqueting\nroquets\nrorqual\nrorquals\nrosaria\nrosarian\nrosarians\nrosaries\nrosarium\nrosariums\nrosary\nroscoe\nroscoes\nrose\nroseate\nrosebay\nrosebays\nrosebud\nrosebuds\nrosebush\nrosebushes\nrosed\nrosefish\nrosefishes\nroselike\nroselle\nroselles\nrosemaries\nrosemary\nroseola\nroseolar\nroseolas\nroseries\nroseroot\nroseroots\nrosery\nroses\nroset\nrosets\nrosette\nrosettes\nrosewood\nrosewoods\nrosier\nrosiest\nrosily\nrosin\nrosined\nrosiness\nrosinesses\nrosing\nrosining\nrosinous\nrosins\nrosiny\nrosolio\nrosolios\nrostella\nroster\nrosters\nrostra\nrostral\nrostrate\nrostrum\nrostrums\nrosulate\nrosy\nrot\nrota\nrotaries\nrotary\nrotas\nrotatable\nrotate\nrotated\nrotates\nrotating\nrotation\nrotational\nrotations\nrotative\nrotatively\nrotator\nrotatores\nrotators\nrotatory\nrotch\nrotche\nrotches\nrote\nrotenone\nrotenones\nrotes\nrotgut\nrotguts\nrotifer\nrotifers\nrotiform\nrotisserie\nrotisseries\nrotl\nrotls\nroto\nrotogravure\nrotogravures\nrotor\nrotors\nrotos\nrototill\nrototilled\nrototilling\nrototills\nrots\nrotte\nrotted\nrotten\nrottener\nrottenest\nrottenly\nrottenness\nrotter\nrotters\nrotting\nrotund\nrotunda\nrotundas\nrotundities\nrotundity\nrotundly\nrotundness\nroturier\nroturiers\nrouble\nroubles\nrouche\nrouches\nroue\nrouen\nrouens\nroues\nrouge\nrouged\nrouges\nrough\nroughage\nroughages\nroughcast\nroughcasting\nroughcasts\nroughdried\nroughdries\nroughdry\nroughdrying\nroughed\nroughen\nroughened\nroughening\nroughens\nrougher\nroughers\nroughest\nroughhew\nroughhewed\nroughhewing\nroughhewn\nroughhews\nroughhouse\nroughhoused\nroughhouses\nroughhousing\nroughing\nroughish\nroughleg\nroughlegs\nroughly\nroughness\nroughs\nrouging\nroulade\nroulades\nrouleau\nrouleaus\nrouleaux\nroulette\nrouletted\nroulettes\nrouletting\nround\nroundabout\nrounded\nroundedness\nroundel\nroundelay\nroundelays\nroundels\nrounder\nrounders\nroundest\nroundhouse\nroundhouses\nrounding\nroundish\nroundlet\nroundlets\nroundly\nroundness\nrounds\nroundup\nroundups\nroundworm\nroundworms\nroup\nrouped\nroupet\nroupier\nroupiest\nroupily\nrouping\nroups\nroupy\nrouse\nroused\nrouser\nrousers\nrouses\nrousing\nrousingly\nrousseau\nrousseaus\nroust\nroustabout\nroustabouts\nrousted\nrouster\nrousters\nrousting\nrousts\nrout\nroute\nrouted\nrouteman\nroutemen\nrouter\nrouters\nroutes\nrouteway\nrouteways\nrouth\nrouths\nroutine\nroutinely\nroutines\nrouting\nroutinize\nroutinized\nroutinizes\nroutinizing\nrouts\nroux\nrove\nroved\nroven\nrover\nrovers\nroves\nroving\nrovingly\nrovings\nrow\nrowable\nrowan\nrowans\nrowboat\nrowboats\nrowdier\nrowdies\nrowdiest\nrowdily\nrowdy\nrowdyish\nrowdyism\nrowdyisms\nrowed\nrowel\nroweled\nroweling\nrowelled\nrowelling\nrowels\nrowen\nrowens\nrower\nrowers\nrowing\nrowings\nrowlock\nrowlocks\nrows\nrowth\nrowths\nroyal\nroyalism\nroyalisms\nroyalist\nroyalists\nroyally\nroyals\nroyalties\nroyalty\nroyster\nroystered\nroystering\nroysters\nrozzer\nrozzers\nruana\nrub\nrubaboo\nrubaboos\nrubace\nrubaces\nrubaiyat\nrubasse\nrubasses\nrubato\nrubatos\nrubbaboo\nrubbaboos\nrubbed\nrubber\nrubberize\nrubberized\nrubberizes\nrubberizing\nrubberlike\nrubberneck\nrubbernecked\nrubbernecking\nrubbernecks\nrubbers\nrubbery\nrubbing\nrubbings\nrubbish\nrubbishes\nrubbishy\nrubble\nrubbled\nrubbles\nrubblier\nrubbliest\nrubbling\nrubbly\nrubdown\nrubdowns\nrube\nrubella\nrubellas\nrubeola\nrubeolar\nrubeolas\nrubes\nrubicund\nrubicundity\nrubidic\nrubidium\nrubidiums\nrubied\nrubier\nrubies\nrubiest\nrubigo\nrubigos\nrubious\nruble\nrubles\nrubric\nrubrical\nrubrically\nrubricate\nrubricated\nrubricates\nrubricating\nrubrication\nrubrications\nrubricator\nrubricators\nrubrics\nrubs\nrubus\nruby\nrubying\nrubylike\nruche\nruches\nruching\nruchings\nruck\nrucked\nrucking\nrucks\nrucksack\nrucksacks\nruckus\nruckuses\nruction\nructions\nructious\nrudd\nrudder\nrudderless\nrudders\nruddier\nruddiest\nruddily\nruddiness\nruddle\nruddled\nruddles\nruddling\nruddock\nruddocks\nrudds\nruddy\nrude\nrudely\nrudeness\nrudenesses\nruder\nruderal\nruderals\nrudesbies\nrudesby\nrudest\nrudiment\nrudimental\nrudimentary\nrudiments\nrue\nrued\nrueful\nruefully\nruefulness\nruer\nruers\nrues\nruff\nruffe\nruffed\nruffes\nruffian\nruffianism\nruffianisms\nruffianly\nruffians\nruffing\nruffle\nruffled\nruffler\nrufflers\nruffles\nrufflike\nruffling\nruffly\nruffs\nrufous\nrug\nruga\nrugae\nrugal\nrugate\nrugbies\nrugby\nrugged\nruggeder\nruggedest\nruggedly\nruggedness\nrugger\nruggers\nrugging\nruglike\nrugose\nrugosely\nrugosities\nrugosity\nrugous\nrugs\nrugulose\nruin\nruinable\nruinate\nruinated\nruinates\nruinating\nruination\nruinations\nruined\nruiner\nruiners\nruing\nruining\nruinous\nruinously\nruinousness\nruins\nrulable\nrule\nruled\nruleless\nruler\nrulers\nrules\nruling\nrulings\nrum\nrumba\nrumbaed\nrumbaing\nrumbas\nrumble\nrumbled\nrumbler\nrumblers\nrumbles\nrumbling\nrumblings\nrumbly\nrumen\nrumens\nrumina\nruminal\nruminant\nruminantly\nruminants\nruminate\nruminated\nruminates\nruminating\nrumination\nruminations\nruminative\nruminatively\nruminator\nruminators\nrummage\nrummaged\nrummager\nrummagers\nrummages\nrummaging\nrummer\nrummers\nrummest\nrummier\nrummies\nrummiest\nrummy\nrumor\nrumored\nrumoring\nrumors\nrumour\nrumoured\nrumouring\nrumours\nrump\nrumple\nrumpled\nrumples\nrumpless\nrumplier\nrumpliest\nrumpling\nrumply\nrumps\nrumpus\nrumpuses\nrums\nrun\nrunabout\nrunabouts\nrunagate\nrunagates\nrunaround\nrunarounds\nrunaway\nrunaways\nrunback\nrunbacks\nrundle\nrundles\nrundlet\nrundlets\nrundown\nrundowns\nrune\nrunelike\nrunes\nrung\nrungless\nrungs\nrunic\nrunkle\nrunkled\nrunkles\nrunkling\nrunless\nrunlet\nrunlets\nrunnel\nrunnels\nrunner\nrunners\nrunnier\nrunniest\nrunning\nrunnings\nrunny\nrunoff\nrunoffs\nrunout\nrunouts\nrunover\nrunovers\nrunround\nrunrounds\nruns\nrunt\nruntier\nruntiest\nruntiness\nruntish\nrunts\nrunty\nrunway\nrunways\nrupee\nrupees\nrupiah\nrupiahs\nrupture\nruptured\nruptures\nrupturing\nrural\nruralise\nruralised\nruralises\nruralising\nruralism\nruralisms\nruralist\nruralists\nruralite\nruralites\nruralities\nrurality\nruralize\nruralized\nruralizes\nruralizing\nrurally\nrurban\nruse\nruses\nrush\nrushed\nrushee\nrushees\nrusher\nrushers\nrushes\nrushier\nrushiest\nrushing\nrushings\nrushlike\nrushy\nrusine\nrusk\nrusks\nrusset\nrussets\nrussety\nrussified\nrussifies\nrussify\nrussifying\nrust\nrustable\nrusted\nrustic\nrustical\nrustically\nrusticate\nrusticated\nrusticates\nrusticating\nrustication\nrustications\nrusticator\nrusticators\nrusticities\nrusticity\nrusticly\nrustics\nrustier\nrustiest\nrustily\nrustiness\nrusting\nrustle\nrustled\nrustler\nrustlers\nrustles\nrustless\nrustling\nrustproof\nrusts\nrusty\nrut\nrutabaga\nrutabagas\nruth\nruthenic\nruthenium\nruthful\nruthless\nruthlessly\nruthlessness\nruths\nrutilant\nrutile\nrutiles\nrutin\nruts\nrutted\nruttier\nruttiest\nruttily\nrutting\nruttish\nruttishly\nruttishness\nrutty\nrya\nryas\nrye\nryegrass\nryegrasses\nryes\nryke\nryked\nrykes\nryking\nrynd\nrynds\nryot\nryots\nsab\nsabaton\nsabatons\nsabbat\nsabbath\nsabbaths\nsabbatic\nsabbatical\nsabbaticals\nsabbats\nsabbed\nsabbing\nsabe\nsabed\nsabeing\nsaber\nsabered\nsabering\nsabers\nsabes\nsabin\nsabine\nsabines\nsabins\nsabir\nsabirs\nsable\nsables\nsabot\nsabotage\nsabotaged\nsabotages\nsabotaging\nsaboteur\nsaboteurs\nsabots\nsabra\nsabras\nsabre\nsabred\nsabres\nsabring\nsabs\nsabulose\nsabulous\nsac\nsacaton\nsacatons\nsacbut\nsacbuts\nsaccade\nsaccades\nsaccadic\nsaccate\nsaccharin\nsaccharine\nsaccharines\nsaccharinity\nsaccharins\nsaccular\nsaccule\nsaccules\nsacculi\nsacculus\nsacerdotal\nsachem\nsachemic\nsachems\nsachet\nsacheted\nsachets\nsack\nsackbut\nsackbuts\nsackcloth\nsacked\nsacker\nsackers\nsackful\nsackfuls\nsacking\nsackings\nsacklike\nsacks\nsacksful\nsaclike\nsacque\nsacques\nsacra\nsacral\nsacrals\nsacrament\nsacramental\nsacramentalist\nsacramentalists\nsacramentally\nsacraments\nsacraria\nsacred\nsacredly\nsacredness\nsacrifice\nsacrificed\nsacrifices\nsacrificial\nsacrificially\nsacrificing\nsacrilege\nsacrileges\nsacrilegious\nsacrilegiously\nsacrist\nsacristan\nsacristans\nsacristies\nsacrists\nsacristy\nsacroiliac\nsacroiliacs\nsacrosanct\nsacrosanctities\nsacrosanctity\nsacrum\nsacs\nsad\nsadden\nsaddened\nsaddening\nsaddens\nsadder\nsaddest\nsaddhu\nsaddhus\nsaddle\nsaddlebag\nsaddlebags\nsaddled\nsaddler\nsaddleries\nsaddlers\nsaddlery\nsaddles\nsaddling\nsade\nsades\nsadhe\nsadhes\nsadhu\nsadhus\nsadi\nsadiron\nsadirons\nsadis\nsadism\nsadisms\nsadist\nsadistic\nsadistically\nsadists\nsadly\nsadness\nsadnesses\nsadomasochism\nsae\nsafari\nsafaried\nsafariing\nsafaris\nsafe\nsafeguard\nsafeguarded\nsafeguarding\nsafeguards\nsafekeeping\nsafely\nsafeness\nsafenesses\nsafer\nsafes\nsafest\nsafetied\nsafeties\nsafety\nsafetying\nsafflower\nsafflowers\nsaffron\nsaffrons\nsafranin\nsafranins\nsafrol\nsafrole\nsafroles\nsafrols\nsag\nsaga\nsagacious\nsagaciously\nsagaciousness\nsagacities\nsagacity\nsagaman\nsagamen\nsagamore\nsagamores\nsaganash\nsaganashes\nsagas\nsagbut\nsagbuts\nsage\nsagely\nsageness\nsagenesses\nsager\nsages\nsagest\nsaggar\nsaggard\nsaggards\nsaggared\nsaggaring\nsaggars\nsagged\nsagger\nsaggered\nsaggering\nsaggers\nsagging\nsaggy\nsagier\nsagiest\nsagittal\nsago\nsagos\nsags\nsaguaro\nsaguaros\nsagum\nsagy\nsahib\nsahibs\nsahiwal\nsahiwals\nsahuaro\nsahuaros\nsaice\nsaices\nsaid\nsaids\nsaiga\nsaigas\nsail\nsailable\nsailboat\nsailboats\nsailcloth\nsailcloths\nsailed\nsailer\nsailers\nsailfish\nsailfishes\nsailing\nsailings\nsailor\nsailorly\nsailors\nsails\nsain\nsained\nsainfoin\nsainfoins\nsaining\nsains\nsaint\nsaintdom\nsaintdoms\nsainted\nsainthood\nsainting\nsaintlier\nsaintliest\nsaintliness\nsaintly\nsaints\nsaith\nsaithe\nsaiyid\nsaiyids\nsajou\nsajous\nsake\nsaker\nsakers\nsakes\nsaki\nsakis\nsal\nsalaam\nsalaamed\nsalaaming\nsalaams\nsalabilities\nsalability\nsalable\nsalably\nsalacious\nsalaciously\nsalaciousness\nsalacities\nsalacity\nsalad\nsaladang\nsaladangs\nsalads\nsalal\nsalami\nsalamis\nsalariat\nsalariats\nsalaried\nsalaries\nsalary\nsalarying\nsale\nsaleabilities\nsaleability\nsaleable\nsaleably\nsalep\nsaleps\nsaleroom\nsalerooms\nsales\nsalesclerk\nsalesclerks\nsalesgirl\nsalesgirls\nsalesman\nsalesmanship\nsalesmen\nsalespeople\nsalesperson\nsalespersons\nsaleswoman\nsaleswomen\nsalic\nsalicin\nsalicine\nsalicines\nsalicins\nsalience\nsaliences\nsaliencies\nsaliency\nsalient\nsaliently\nsalients\nsalified\nsalifies\nsalify\nsalifying\nsalina\nsalinas\nsaline\nsalines\nsalinities\nsalinity\nsalinize\nsalinized\nsalinizes\nsalinizing\nsaliva\nsalivary\nsalivas\nsalivate\nsalivated\nsalivates\nsalivating\nsalivation\nsalivations\nsall\nsallet\nsallets\nsallied\nsallier\nsalliers\nsallies\nsallow\nsallowed\nsallower\nsallowest\nsallowing\nsallowish\nsallowly\nsallowness\nsallows\nsallowy\nsally\nsallying\nsalmagundi\nsalmagundis\nsalmi\nsalmis\nsalmon\nsalmonella\nsalmonid\nsalmonids\nsalmons\nsalol\nsalols\nsalon\nsalons\nsaloon\nsaloons\nsaloop\nsaloops\nsalp\nsalpa\nsalpae\nsalpas\nsalpian\nsalpians\nsalpid\nsalpids\nsalpinges\nsalpinx\nsalps\nsals\nsalsa\nsalsifies\nsalsify\nsalsilla\nsalsillas\nsalt\nsaltant\nsaltation\nsaltations\nsaltbox\nsaltboxes\nsaltbush\nsaltbushes\nsaltcellar\nsaltcellars\nsalted\nsalter\nsaltern\nsalterns\nsalters\nsaltest\nsaltie\nsaltier\nsaltiers\nsalties\nsaltiest\nsaltily\nsaltine\nsaltines\nsaltiness\nsalting\nsaltire\nsaltires\nsaltish\nsaltless\nsaltlike\nsaltness\nsaltnesses\nsaltpan\nsaltpans\nsaltpeter\nsaltpeters\nsalts\nsaltshaker\nsaltshakers\nsaltwater\nsaltwork\nsaltworks\nsaltwort\nsaltworts\nsalty\nsalubrious\nsalubriously\nsalubriousness\nsalubrities\nsalubrity\nsaluki\nsalukis\nsalutary\nsalutation\nsalutations\nsalutatorian\nsalutatorians\nsalutatories\nsalutatory\nsalute\nsaluted\nsaluter\nsaluters\nsalutes\nsaluting\nsalvable\nsalvably\nsalvadoran\nsalvadorans\nsalvage\nsalvageable\nsalvaged\nsalvagee\nsalvagees\nsalvager\nsalvagers\nsalvages\nsalvaging\nsalvation\nsalvational\nsalvationism\nsalvationist\nsalvationists\nsalvations\nsalve\nsalved\nsalver\nsalvers\nsalves\nsalvia\nsalvias\nsalvific\nsalving\nsalvo\nsalvoed\nsalvoes\nsalvoing\nsalvor\nsalvors\nsalvos\nsamara\nsamaras\nsamaritan\nsamaritans\nsamarium\nsamariums\nsamba\nsambaed\nsambaing\nsambar\nsambars\nsambas\nsambhar\nsambhars\nsambhur\nsambhurs\nsambo\nsambos\nsambuca\nsambucas\nsambuke\nsambukes\nsambur\nsamburs\nsame\nsamech\nsamechs\nsamek\nsamekh\nsamekhs\nsameks\nsameness\nsamenesses\nsamiel\nsamiels\nsamisen\nsamisens\nsamite\nsamites\nsamlet\nsamlets\nsamovar\nsamovars\nsamp\nsampan\nsampans\nsamphire\nsamphires\nsample\nsampled\nsampler\nsamplers\nsamples\nsampling\nsamplings\nsamps\nsamsara\nsamsaras\nsamshu\nsamshus\nsamurai\nsamurais\nsanative\nsanatoria\nsanatorium\nsanatoriums\nsancta\nsancties\nsanctification\nsanctifications\nsanctified\nsanctifier\nsanctifiers\nsanctifies\nsanctify\nsanctifying\nsanctimonies\nsanctimonious\nsanctimoniously\nsanctimoniousness\nsanctimony\nsanction\nsanctioned\nsanctioning\nsanctions\nsanctities\nsanctity\nsanctuaries\nsanctuary\nsanctum\nsanctums\nsand\nsandal\nsandaled\nsandaling\nsandalled\nsandalling\nsandals\nsandalwood\nsandalwoods\nsandarac\nsandaracs\nsandbag\nsandbagged\nsandbagger\nsandbaggers\nsandbagging\nsandbags\nsandbank\nsandbanks\nsandbar\nsandbars\nsandblast\nsandblasted\nsandblasting\nsandblasts\nsandbox\nsandboxes\nsandbur\nsandburr\nsandburrs\nsandburs\nsanded\nsander\nsanders\nsandfish\nsandfishes\nsandflies\nsandfly\nsandhi\nsandhis\nsandhog\nsandhogs\nsandier\nsandiest\nsandiness\nsanding\nsandlike\nsandling\nsandlings\nsandlot\nsandlots\nsandman\nsandmen\nsandpaper\nsandpapered\nsandpapering\nsandpapers\nsandpeep\nsandpeeps\nsandpile\nsandpiles\nsandpiper\nsandpipers\nsandpit\nsandpits\nsands\nsandsoap\nsandsoaps\nsandstone\nsandstones\nsandstorm\nsandstorms\nsandwich\nsandwiched\nsandwiches\nsandwiching\nsandworm\nsandworms\nsandwort\nsandworts\nsandy\nsane\nsaned\nsanely\nsaneness\nsanenesses\nsaner\nsanes\nsanest\nsang\nsanga\nsangar\nsangaree\nsangarees\nsangars\nsangas\nsanger\nsangers\nsangh\nsanghs\nsangria\nsangrias\nsanguinary\nsanguine\nsanguinely\nsanguineness\nsanguines\nsanicle\nsanicles\nsanies\nsaning\nsanious\nsanitaria\nsanitarian\nsanitarians\nsanitaries\nsanitarily\nsanitarium\nsanitariums\nsanitary\nsanitate\nsanitated\nsanitates\nsanitating\nsanitation\nsanitations\nsanities\nsanitise\nsanitised\nsanitises\nsanitising\nsanitization\nsanitizations\nsanitize\nsanitized\nsanitizes\nsanitizing\nsanity\nsanjak\nsanjaks\nsank\nsannop\nsannops\nsannup\nsannups\nsannyasi\nsannyasis\nsans\nsansar\nsansars\nsansei\nsanseis\nsanserif\nsanserifs\nsantalic\nsantimi\nsantims\nsantir\nsantirs\nsantol\nsantols\nsantonin\nsantonins\nsantour\nsantours\nsap\nsapajou\nsapajous\nsaphead\nsapheads\nsaphena\nsaphenae\nsapid\nsapidities\nsapidity\nsapience\nsapiences\nsapiencies\nsapiency\nsapiens\nsapient\nsapiently\nsapless\nsapling\nsaplings\nsaponification\nsaponifications\nsaponified\nsaponifier\nsaponifiers\nsaponifies\nsaponify\nsaponifying\nsaponin\nsaponine\nsaponines\nsaponins\nsaponite\nsaponites\nsapor\nsaporous\nsapors\nsapota\nsapotas\nsapour\nsapours\nsapped\nsapper\nsappers\nsapphic\nsapphics\nsapphire\nsapphires\nsapphism\nsapphisms\nsapphist\nsapphists\nsappier\nsappiest\nsappily\nsapping\nsappy\nsapremia\nsapremias\nsapremic\nsaprobe\nsaprobes\nsaprobic\nsapropel\nsapropels\nsaps\nsapsago\nsapsagos\nsapwood\nsapwoods\nsaraband\nsarabands\nsaran\nsarape\nsarapes\nsarcasm\nsarcasms\nsarcastic\nsarcastically\nsarcenet\nsarcenets\nsarcoid\nsarcoids\nsarcoma\nsarcomas\nsarcomata\nsarcophagi\nsarcophagus\nsarcophaguses\nsarcous\nsard\nsardar\nsardars\nsardine\nsardines\nsardius\nsardiuses\nsardonic\nsardonically\nsardonicism\nsardonicisms\nsardonyx\nsardonyxes\nsards\nsaree\nsarees\nsargasso\nsargassos\nsarge\nsarges\nsari\nsarin\nsarins\nsaris\nsark\nsarks\nsarky\nsarment\nsarmenta\nsarments\nsarod\nsarode\nsarodes\nsarodist\nsarodists\nsarods\nsarong\nsarongs\nsaros\nsarsaparilla\nsarsaparillas\nsarsar\nsarsars\nsarsen\nsarsenet\nsarsenets\nsarsens\nsartor\nsartorial\nsartorially\nsartorii\nsartors\nsash\nsashay\nsashayed\nsashaying\nsashays\nsashed\nsashes\nsashimi\nsashimis\nsashing\nsasin\nsasins\nsass\nsassabies\nsassaby\nsassafras\nsassed\nsasses\nsassier\nsassies\nsassiest\nsassily\nsassing\nsasswood\nsasswoods\nsassy\nsastruga\nsastrugi\nsat\nsatang\nsatangs\nsatanic\nsatanically\nsatanism\nsatanisms\nsatanist\nsatanists\nsatara\nsataras\nsatay\nsatchel\nsatchels\nsate\nsated\nsateen\nsateens\nsatellite\nsatellites\nsatem\nsates\nsati\nsatiable\nsatiably\nsatiate\nsatiated\nsatiates\nsatiating\nsatiation\nsatiations\nsatieties\nsatiety\nsatin\nsatinet\nsatinets\nsating\nsatinpod\nsatinpods\nsatins\nsatinwood\nsatinwoods\nsatiny\nsatire\nsatires\nsatiric\nsatirical\nsatirically\nsatirise\nsatirised\nsatirises\nsatirising\nsatirist\nsatirists\nsatirize\nsatirized\nsatirizes\nsatirizing\nsatis\nsatisfaction\nsatisfactions\nsatisfactorily\nsatisfactory\nsatisfiable\nsatisfied\nsatisfies\nsatisfy\nsatisfying\nsatisfyingly\nsatori\nsatoris\nsatrap\nsatrapies\nsatraps\nsatrapy\nsaturable\nsaturant\nsaturants\nsaturate\nsaturated\nsaturates\nsaturating\nsaturation\nsaturations\nsaturator\nsaturators\nsaturnine\nsatyr\nsatyric\nsatyrid\nsatyrids\nsatyrs\nsau\nsauce\nsaucebox\nsauceboxes\nsauced\nsaucepan\nsaucepans\nsaucer\nsaucers\nsauces\nsauch\nsauchs\nsaucier\nsauciest\nsaucily\nsaucing\nsaucy\nsauger\nsaugers\nsaugh\nsaughs\nsaughy\nsaul\nsauls\nsault\nsaults\nsauna\nsaunas\nsaunter\nsauntered\nsauntering\nsaunters\nsaurel\nsaurels\nsaurian\nsaurians\nsauries\nsauropod\nsauropods\nsaury\nsausage\nsausages\nsaute\nsauted\nsauteed\nsauteing\nsauterne\nsauternes\nsautes\nsautoir\nsautoire\nsautoires\nsautoirs\nsavable\nsavage\nsavaged\nsavagely\nsavageness\nsavager\nsavageries\nsavagery\nsavages\nsavagest\nsavaging\nsavagism\nsavagisms\nsavanna\nsavannah\nsavannahs\nsavannas\nsavant\nsavants\nsavate\nsavates\nsave\nsaveable\nsaved\nsaveloy\nsaveloys\nsaver\nsavers\nsaves\nsavin\nsavine\nsavines\nsaving\nsavingly\nsavings\nsavins\nsavior\nsaviors\nsaviour\nsaviours\nsavor\nsavored\nsavorer\nsavorers\nsavorier\nsavories\nsavoriest\nsavorily\nsavoriness\nsavoring\nsavorless\nsavorous\nsavors\nsavory\nsavour\nsavoured\nsavourer\nsavourers\nsavourier\nsavouries\nsavouriest\nsavouring\nsavours\nsavoury\nsavoy\nsavoys\nsavvied\nsavvies\nsavvy\nsavvying\nsaw\nsawbill\nsawbills\nsawbones\nsawboneses\nsawbuck\nsawbucks\nsawdust\nsawdusts\nsawed\nsawer\nsawers\nsawfish\nsawfishes\nsawflies\nsawfly\nsawhorse\nsawhorses\nsawing\nsawlike\nsawlog\nsawlogs\nsawmill\nsawmills\nsawn\nsawney\nsawneys\nsaws\nsawtooteeth\nsawtooth\nsawyer\nsawyers\nsax\nsaxatile\nsaxes\nsaxhorn\nsaxhorns\nsaxonies\nsaxony\nsaxophone\nsaxophones\nsaxophonist\nsaxophonists\nsaxtuba\nsaxtubas\nsay\nsayable\nsayer\nsayers\nsayest\nsayid\nsayids\nsaying\nsayings\nsayonara\nsayonaras\nsays\nsayst\nsayyid\nsayyids\nscab\nscabbard\nscabbarded\nscabbarding\nscabbards\nscabbed\nscabbier\nscabbiest\nscabbily\nscabbing\nscabble\nscabbled\nscabbles\nscabbling\nscabby\nscabies\nscabiosa\nscabiosas\nscabious\nscabiouses\nscablike\nscabrous\nscabrously\nscabrousness\nscabs\nscad\nscads\nscaffold\nscaffolded\nscaffolding\nscaffoldings\nscaffolds\nscag\nscags\nscalable\nscalably\nscalade\nscalades\nscalado\nscalados\nscalage\nscalages\nscalar\nscalare\nscalares\nscalars\nscalawag\nscalawags\nscald\nscalded\nscaldic\nscalding\nscalds\nscale\nscaled\nscaleless\nscalene\nscaleni\nscalenus\nscalepan\nscalepans\nscaler\nscalers\nscales\nscalier\nscaliest\nscaling\nscall\nscallion\nscallions\nscallop\nscalloped\nscalloping\nscallopini\nscallops\nscalls\nscaloppine\nscalp\nscalped\nscalpel\nscalpels\nscalper\nscalpers\nscalping\nscalps\nscaly\nscam\nscammonies\nscammony\nscamp\nscamped\nscamper\nscampered\nscampering\nscampers\nscampi\nscamping\nscampish\nscamps\nscams\nscan\nscandal\nscandaled\nscandaling\nscandalize\nscandalized\nscandalizes\nscandalizing\nscandalled\nscandalling\nscandalmonger\nscandalmongers\nscandalous\nscandalously\nscandalousness\nscandals\nscandent\nscandia\nscandias\nscandic\nscandium\nscandiums\nscannable\nscanned\nscanner\nscanners\nscanning\nscannings\nscans\nscansion\nscansions\nscant\nscanted\nscanter\nscantest\nscantier\nscanties\nscantiest\nscantily\nscantiness\nscanting\nscantling\nscantlings\nscantly\nscantness\nscants\nscanty\nscape\nscaped\nscapegoat\nscapegoats\nscapegrace\nscapegraces\nscapes\nscaphoid\nscaphoids\nscaping\nscapose\nscapula\nscapulae\nscapular\nscapulars\nscapulas\nscar\nscarab\nscarabs\nscarce\nscarcely\nscarceness\nscarcer\nscarcest\nscarcities\nscarcity\nscare\nscarecrow\nscarecrows\nscared\nscarer\nscarers\nscares\nscarey\nscarf\nscarfed\nscarfing\nscarfpin\nscarfpins\nscarfs\nscarier\nscariest\nscarification\nscarifications\nscarified\nscarifier\nscarifiers\nscarifies\nscarify\nscarifying\nscariness\nscaring\nscariose\nscarious\nscarless\nscarlet\nscarlets\nscarp\nscarped\nscarper\nscarpered\nscarpering\nscarpers\nscarph\nscarphed\nscarphing\nscarphs\nscarping\nscarps\nscarred\nscarrier\nscarriest\nscarring\nscarry\nscars\nscart\nscarted\nscarting\nscarts\nscarves\nscary\nscat\nscatback\nscatbacks\nscathe\nscathed\nscatheless\nscathes\nscathing\nscathingly\nscatological\nscatology\nscats\nscatt\nscatted\nscatter\nscatterbrain\nscatterbrained\nscatterbrains\nscattered\nscattering\nscatterings\nscatters\nscattier\nscattiest\nscatting\nscatts\nscatty\nscaup\nscauper\nscaupers\nscaups\nscaur\nscaurs\nscavenge\nscavenged\nscavengenges\nscavenger\nscavengers\nscavenges\nscavenging\nscena\nscenario\nscenarios\nscenarist\nscenarists\nscenas\nscend\nscended\nscending\nscends\nscene\nsceneries\nscenery\nscenes\nscenic\nscenical\nscenically\nscenographic\nscenography\nscent\nscented\nscenting\nscents\nscepter\nsceptered\nsceptering\nscepters\nsceptic\nsceptical\nscepticism\nscepticisms\nsceptics\nsceptral\nsceptre\nsceptred\nsceptres\nsceptring\nschappe\nschappes\nschav\nschavs\nschedule\nscheduled\nschedules\nscheduling\nschema\nschemata\nschematic\nschematically\nschematics\nscheme\nschemed\nschemer\nschemers\nschemes\nscheming\nscherzi\nscherzo\nscherzos\nschiller\nschillers\nschism\nschismatic\nschismatics\nschisms\nschist\nschists\nschizo\nschizoid\nschizoids\nschizont\nschizonts\nschizophrene\nschizophrenes\nschizophrenia\nschizophrenias\nschizophrenic\nschizos\nschlep\nschlepp\nschlepped\nschlepping\nschlepps\nschleps\nschlock\nschlocks\nschmaltz\nschmaltzes\nschmalz\nschmalzes\nschmalzier\nschmalziest\nschmalzy\nschmeer\nschmeered\nschmeering\nschmeers\nschmelze\nschmelzes\nschmo\nschmoe\nschmoes\nschmoos\nschmoose\nschmoosed\nschmooses\nschmoosing\nschmooze\nschmoozed\nschmoozes\nschmoozing\nschmuck\nschmucks\nschnapps\nschnaps\nschnauzer\nschnauzers\nschnecke\nschnecken\nschnook\nschnooks\nscholar\nscholarly\nscholars\nscholarship\nscholarships\nscholastic\nscholastically\nscholasticism\nscholastics\nscholia\nscholium\nscholiums\nschool\nschoolbook\nschoolbooks\nschoolboy\nschoolboys\nschoolchild\nschoolchildren\nschooled\nschoolgirl\nschoolgirls\nschoolhouse\nschoolhouses\nschooling\nschoolmaster\nschoolmasters\nschoolmate\nschoolmates\nschoolroom\nschoolrooms\nschools\nschoolteacher\nschoolteachers\nschoolwork\nschooner\nschooners\nschorl\nschorls\nschrik\nschriks\nschtick\nschticks\nschuit\nschuits\nschul\nschuln\nschuss\nschussed\nschusses\nschussing\nschwa\nschwas\nsciaenid\nsciaenids\nsciatic\nsciatica\nsciaticas\nsciatics\nscience\nsciences\nscientific\nscientifically\nscientist\nscientists\nscilicet\nscilla\nscillas\nscimetar\nscimetars\nscimitar\nscimitars\nscimiter\nscimiters\nscincoid\nscincoids\nscintilla\nscintillas\nscintillate\nscintillated\nscintillates\nscintillating\nscintillation\nscintillations\nsciolism\nsciolisms\nsciolist\nsciolists\nscion\nscions\nscirocco\nsciroccos\nscirrhi\nscirrhus\nscirrhuses\nscissile\nscission\nscissions\nscissor\nscissored\nscissoring\nscissors\nscissure\nscissures\nsciurine\nsciurines\nsciuroid\nsclaff\nsclaffed\nsclaffer\nsclaffers\nsclaffing\nsclaffs\nsclera\nsclerae\nscleral\nscleras\nsclereid\nsclereids\nsclerite\nsclerites\nscleroid\nscleroma\nscleromata\nsclerose\nsclerosed\nscleroses\nsclerosing\nsclerosis\nsclerotic\nsclerotics\nsclerous\nscoff\nscoffed\nscoffer\nscoffers\nscoffing\nscofflaw\nscofflaws\nscoffs\nscold\nscolded\nscolder\nscolders\nscolding\nscoldings\nscolds\nscoleces\nscolex\nscolices\nscolioma\nscoliomas\nscollop\nscolloped\nscolloping\nscollops\nsconce\nsconced\nsconces\nsconcing\nscone\nscones\nscoop\nscooped\nscooper\nscoopers\nscoopful\nscoopfuls\nscooping\nscoops\nscoopsful\nscoot\nscooted\nscooter\nscooters\nscooting\nscoots\nscop\nscope\nscopes\nscops\nscopula\nscopulae\nscopulas\nscorbutic\nscorch\nscorched\nscorcher\nscorchers\nscorches\nscorching\nscorchingly\nscore\nscored\nscorekeeper\nscorekeepers\nscoreless\nscorepad\nscorepads\nscorer\nscorers\nscores\nscoria\nscoriae\nscorified\nscorifies\nscorify\nscorifying\nscoring\nscorn\nscorned\nscorner\nscorners\nscornful\nscornfully\nscornfulness\nscorning\nscorns\nscorpion\nscorpions\nscot\nscotch\nscotched\nscotches\nscotching\nscoter\nscoters\nscotia\nscotias\nscotoma\nscotomas\nscotomata\nscotopia\nscotopias\nscotopic\nscots\nscottie\nscotties\nscoundrel\nscoundrelly\nscoundrels\nscour\nscoured\nscourer\nscourers\nscourge\nscourged\nscourger\nscourgers\nscourges\nscourging\nscouring\nscourings\nscours\nscouse\nscouses\nscout\nscouted\nscouter\nscouters\nscouth\nscouther\nscouthered\nscouthering\nscouthers\nscouths\nscouting\nscoutings\nscoutmaster\nscoutmasters\nscouts\nscow\nscowder\nscowdered\nscowdering\nscowders\nscowed\nscowing\nscowl\nscowled\nscowler\nscowlers\nscowling\nscowls\nscows\nscrabble\nscrabbled\nscrabbles\nscrabbling\nscrabbly\nscrag\nscragged\nscraggier\nscraggiest\nscragging\nscragglier\nscraggliest\nscraggly\nscraggy\nscrags\nscraich\nscraiched\nscraiching\nscraichs\nscraigh\nscraighed\nscraighing\nscraighs\nscram\nscramble\nscrambled\nscrambler\nscramblers\nscrambles\nscrambling\nscrammed\nscramming\nscrams\nscrannel\nscrannels\nscrap\nscrapbook\nscrapbooks\nscrape\nscraped\nscraper\nscrapers\nscrapes\nscrapie\nscrapies\nscraping\nscrapings\nscrapped\nscrapper\nscrappers\nscrappier\nscrappiest\nscrappily\nscrappiness\nscrapping\nscrapple\nscrapples\nscrappy\nscraps\nscratch\nscratched\nscratcher\nscratchers\nscratches\nscratchier\nscratchiest\nscratchiness\nscratching\nscratchy\nscrawl\nscrawled\nscrawler\nscrawlers\nscrawlier\nscrawliest\nscrawling\nscrawls\nscrawly\nscrawnier\nscrawniest\nscrawny\nscreak\nscreaked\nscreaking\nscreaks\nscreaky\nscream\nscreamed\nscreamer\nscreamers\nscreaming\nscreamingly\nscreams\nscree\nscreech\nscreeched\nscreeches\nscreechier\nscreechiest\nscreeching\nscreechy\nscreed\nscreeded\nscreeding\nscreeds\nscreen\nscreened\nscreener\nscreeners\nscreening\nscreenings\nscreenplay\nscreenplays\nscreens\nscreenwriter\nscreenwriters\nscrees\nscrew\nscrewball\nscrewballs\nscrewdriver\nscrewdrivers\nscrewed\nscrewer\nscrewers\nscrewier\nscrewiest\nscrewing\nscrews\nscrewy\nscribal\nscribble\nscribbled\nscribbler\nscribblers\nscribbles\nscribbling\nscribe\nscribed\nscriber\nscribers\nscribes\nscribing\nscrieve\nscrieved\nscrieves\nscrieving\nscrim\nscrimmage\nscrimmaged\nscrimmager\nscrimmagers\nscrimmages\nscrimmaging\nscrimp\nscrimped\nscrimpier\nscrimpiest\nscrimping\nscrimpit\nscrimps\nscrimpy\nscrims\nscrip\nscrips\nscript\nscripted\nscripting\nscripts\nscriptural\nscripturally\nscripture\nscriptures\nscrive\nscrived\nscrivener\nscriveners\nscrives\nscriving\nscrod\nscrods\nscrofula\nscrofulas\nscrofulous\nscroggier\nscroggiest\nscroggy\nscroll\nscrolls\nscrollwork\nscrooge\nscrooges\nscroop\nscrooped\nscrooping\nscroops\nscrota\nscrotal\nscrotum\nscrotums\nscrouge\nscrouged\nscrouges\nscrouging\nscrounge\nscrounged\nscrounges\nscroungier\nscroungiest\nscrounging\nscroungy\nscrub\nscrubbed\nscrubber\nscrubbers\nscrubbier\nscrubbiest\nscrubbing\nscrubby\nscrubs\nscruff\nscruffier\nscruffiest\nscruffs\nscruffy\nscrum\nscrumptious\nscrumptiously\nscrums\nscrunch\nscrunched\nscrunches\nscrunching\nscruple\nscrupled\nscruples\nscrupling\nscrupulosities\nscrupulosity\nscrupulous\nscrupulously\nscrupulousness\nscrutinies\nscrutinize\nscrutinized\nscrutinizes\nscrutinizing\nscrutiny\nscry\nscuba\nscubas\nscud\nscudded\nscudding\nscudi\nscudo\nscuds\nscuff\nscuffed\nscuffing\nscuffle\nscuffled\nscuffler\nscufflers\nscuffles\nscuffling\nscuffs\nsculk\nsculked\nsculker\nsculkers\nsculking\nsculks\nscull\nsculled\nsculler\nsculleries\nscullers\nscullery\nsculling\nscullion\nscullions\nsculls\nsculp\nsculped\nsculpin\nsculping\nsculpins\nsculps\nsculpt\nsculpted\nsculpting\nsculptor\nsculptors\nsculptress\nsculptresses\nsculpts\nsculptural\nsculpturally\nsculpture\nsculptured\nsculptures\nsculpturesque\nsculpturing\nscum\nscumble\nscumbled\nscumbles\nscumbling\nscumlike\nscummed\nscummer\nscummers\nscummier\nscummiest\nscumming\nscummy\nscums\nscunner\nscunnered\nscunnering\nscunners\nscup\nscuppaug\nscuppaugs\nscupper\nscuppered\nscuppering\nscuppers\nscups\nscurf\nscurfier\nscurfiest\nscurfs\nscurfy\nscurried\nscurries\nscurril\nscurrile\nscurrilities\nscurrility\nscurrilous\nscurrilously\nscurrilousness\nscurry\nscurrying\nscurvier\nscurvies\nscurviest\nscurvily\nscurvy\nscut\nscuta\nscutage\nscutages\nscutate\nscutch\nscutched\nscutcher\nscutchers\nscutches\nscutching\nscute\nscutella\nscutes\nscuts\nscutter\nscuttered\nscuttering\nscutters\nscuttle\nscuttlebutt\nscuttlebutts\nscuttled\nscuttles\nscuttling\nscutum\nscyphate\nscythe\nscythed\nscythes\nscything\nsea\nseabag\nseabags\nseabeach\nseabeaches\nseabed\nseabeds\nseabird\nseabirds\nseaboard\nseaboards\nseaboot\nseaboots\nseaborne\nseacoast\nseacoasts\nseacock\nseacocks\nseacraft\nseacrafts\nseadog\nseadogs\nseadrome\nseadromes\nseafarer\nseafarers\nseafaring\nseafloor\nseafloors\nseafood\nseafoods\nseafowl\nseafowls\nseafront\nseafronts\nseagirt\nseagoing\nseal\nsealable\nsealant\nsealants\nsealed\nsealer\nsealeries\nsealers\nsealery\nsealing\nseallike\nseals\nsealskin\nsealskins\nseam\nseaman\nseamanlike\nseamanly\nseamanship\nseamark\nseamarks\nseamed\nseamen\nseamer\nseamers\nseamier\nseamiest\nseaminess\nseaming\nseamless\nseamlike\nseamount\nseamounts\nseams\nseamster\nseamsters\nseamstress\nseamstresses\nseamy\nseance\nseances\nseapiece\nseapieces\nseaplane\nseaplanes\nseaport\nseaports\nseaquake\nseaquakes\nsear\nsearch\nsearchable\nsearched\nsearcher\nsearchers\nsearches\nsearching\nsearchingly\nsearchlight\nsearchlights\nseared\nsearer\nsearest\nsearing\nsears\nseas\nseascape\nseascapes\nseascout\nseascouts\nseashell\nseashells\nseashore\nseashores\nseasick\nseasickness\nseasicknesses\nseaside\nseasides\nseason\nseasonable\nseasonableness\nseasonably\nseasonal\nseasonalities\nseasonality\nseasonally\nseasoned\nseasoner\nseasoners\nseasoning\nseasonings\nseasonless\nseasons\nseat\nseated\nseater\nseaters\nseating\nseatings\nseatless\nseatmate\nseatmates\nseatrain\nseatrains\nseats\nseatwork\nseatworks\nseawall\nseawalls\nseawan\nseawans\nseawant\nseawants\nseaward\nseawards\nseaware\nseawares\nseawater\nseawaters\nseaway\nseaways\nseaweed\nseaweeds\nseaworthiness\nseaworthy\nsebacic\nsebasic\nsebum\nsebums\nsec\nsecant\nsecantly\nsecants\nsecateur\nsecateurs\nsecco\nseccos\nsecede\nseceded\nseceder\nseceders\nsecedes\nseceding\nsecern\nsecerned\nsecerning\nsecerns\nsecession\nsecessionism\nsecessionisms\nsecessionist\nsecessionists\nsecessions\nseclude\nsecluded\nsecludedly\nsecludedness\nsecludes\nsecluding\nseclusion\nseclusions\nseclusive\nseclusiveness\nsecond\nsecondaries\nsecondarily\nsecondary\nseconde\nseconded\nseconder\nseconders\nsecondes\nsecondhand\nsecondi\nseconding\nsecondly\nsecondo\nseconds\nsecpar\nsecpars\nsecrecies\nsecrecy\nsecret\nsecretarial\nsecretariat\nsecretariats\nsecretaries\nsecretary\nsecretaryship\nsecretaryships\nsecrete\nsecreted\nsecreter\nsecretes\nsecretest\nsecretin\nsecreting\nsecretins\nsecretion\nsecretionary\nsecretions\nsecretive\nsecretively\nsecretiveness\nsecretly\nsecretor\nsecretors\nsecrets\nsecs\nsect\nsectarian\nsectarianism\nsectarianisms\nsectarianize\nsectarianized\nsectarianizes\nsectarianizing\nsectarians\nsectaries\nsectary\nsectile\nsection\nsectional\nsectionalism\nsectionally\nsectioned\nsectioning\nsections\nsector\nsectoral\nsectored\nsectorial\nsectoring\nsectors\nsects\nsecular\nsecularism\nsecularist\nsecularistic\nsecularists\nsecularities\nsecularity\nsecularization\nsecularizations\nsecularize\nsecularized\nsecularizes\nsecularizing\nsecularly\nseculars\nsecund\nsecundly\nsecundum\nsecure\nsecured\nsecurely\nsecureness\nsecurer\nsecurers\nsecures\nsecurest\nsecuring\nsecurities\nsecurity\nsedan\nsedans\nsedarim\nsedate\nsedated\nsedately\nsedateness\nsedater\nsedates\nsedatest\nsedating\nsedation\nsedations\nsedative\nsedatives\nsedentary\nseder\nseders\nsederunt\nsederunts\nsedge\nsedges\nsedgier\nsedgiest\nsedgy\nsedile\nsedilia\nsedilium\nsediment\nsedimentary\nsedimentation\nsedimentations\nsedimented\nsedimenting\nsediments\nsedition\nseditions\nseditious\nseditiously\nseditiousness\nseduce\nseduced\nseducer\nseducers\nseduces\nseducing\nseducive\nseduction\nseductions\nseductive\nseductively\nseductiveness\nseductress\nseductresses\nsedulities\nsedulity\nsedulous\nsedulously\nsedulousness\nsedum\nsedums\nsee\nseeable\nseecatch\nseecatchie\nseed\nseedbed\nseedbeds\nseedcake\nseedcakes\nseedcase\nseedcases\nseeded\nseeder\nseeders\nseedier\nseediest\nseedily\nseediness\nseeding\nseedless\nseedlike\nseedling\nseedlings\nseedman\nseedmen\nseedpod\nseedpods\nseeds\nseedsman\nseedsmen\nseedtime\nseedtimes\nseedy\nseeing\nseeings\nseek\nseeker\nseekers\nseeking\nseeks\nseel\nseeled\nseeling\nseels\nseely\nseem\nseemed\nseemer\nseemers\nseeming\nseemingly\nseemings\nseemlier\nseemliest\nseemly\nseems\nseen\nseep\nseepage\nseepages\nseeped\nseepier\nseepiest\nseeping\nseeps\nseepy\nseer\nseeress\nseeresses\nseers\nseersucker\nseersuckers\nsees\nseesaw\nseesawed\nseesawing\nseesaws\nseethe\nseethed\nseethes\nseething\nseg\nsegetal\nseggar\nseggars\nsegment\nsegmental\nsegmentally\nsegmentary\nsegmentation\nsegmentations\nsegmented\nsegmenting\nsegments\nsegni\nsegno\nsegnos\nsego\nsegos\nsegregate\nsegregated\nsegregates\nsegregating\nsegregation\nsegregationist\nsegregationists\nsegregations\nsegregative\nsegs\nsegue\nsegued\nsegueing\nsegues\nsei\nseicento\nseicentos\nseiche\nseiches\nseidel\nseidels\nseif\nseifs\nseigneur\nseigneurs\nseignior\nseigniors\nseignories\nseignory\nseine\nseined\nseiner\nseiners\nseines\nseining\nseis\nseisable\nseise\nseised\nseiser\nseisers\nseises\nseisin\nseising\nseisings\nseisins\nseism\nseismal\nseismic\nseismicity\nseismism\nseismisms\nseismograph\nseismographer\nseismographers\nseismographic\nseismographs\nseismography\nseismological\nseismologist\nseismologists\nseismology\nseisms\nseisor\nseisors\nseisure\nseisures\nseizable\nseize\nseized\nseizer\nseizers\nseizes\nseizin\nseizing\nseizings\nseizins\nseizor\nseizors\nseizure\nseizures\nsejant\nsejeant\nsel\nseladang\nseladangs\nselah\nselahs\nselamlik\nselamliks\nselcouth\nseldom\nseldomly\nselect\nselectable\nselected\nselectee\nselectees\nselecting\nselection\nselections\nselective\nselectively\nselectiveness\nselectivities\nselectivity\nselectly\nselectman\nselectmen\nselectness\nselector\nselectors\nselects\nselenate\nselenates\nselenic\nselenide\nselenides\nselenite\nselenites\nselenium\nseleniums\nselenous\nself\nselfdom\nselfdoms\nselfed\nselfheal\nselfheals\nselfhood\nselfhoods\nselfing\nselfish\nselfishly\nselfishness\nselfless\nselflessly\nselflessness\nselfness\nselfnesses\nselfs\nselfsame\nselfsameness\nselfward\nsell\nsellable\nselle\nseller\nsellers\nselles\nselling\nsellout\nsellouts\nsells\nsels\nselsyn\nselsyns\nseltzer\nseltzers\nselva\nselvage\nselvaged\nselvages\nselvedge\nselvedged\nselvedges\nselves\nsemantic\nsemantically\nsemanticist\nsemanticists\nsemantics\nsemaphore\nsemaphored\nsemaphores\nsemaphoring\nsematic\nsemblance\nsemblances\nseme\nsememe\nsememes\nsemen\nsemens\nsemes\nsemester\nsemesters\nsemi\nsemiannual\nsemiannually\nsemiarid\nsemiautomatic\nsemiautomatically\nsemiautomatics\nsemibald\nsemicircle\nsemicircles\nsemicircular\nsemicolon\nsemicolons\nsemicoma\nsemicomas\nsemiconductor\nsemiconductors\nsemiconscious\nsemiconsciousness\nsemideaf\nsemidome\nsemidomes\nsemidry\nsemifinal\nsemifinalist\nsemifinalists\nsemifinals\nsemifit\nsemifluid\nsemiformal\nsemigala\nsemihard\nsemihigh\nsemihobo\nsemihoboes\nsemihobos\nsemilog\nsemimat\nsemimatt\nsemimonthlies\nsemimonthly\nsemimute\nsemina\nseminal\nseminally\nseminar\nseminarian\nseminarians\nseminaries\nseminars\nseminary\nseminude\nsemiofficial\nsemiofficially\nsemioses\nsemiosis\nsemiotic\nsemiotics\nsemipermanent\nsemiprecious\nsemiprivate\nsemipro\nsemiprofessional\nsemiprofessionally\nsemiprofessionals\nsemipros\nsemiraw\nsemirigid\nsemis\nsemises\nsemiskilled\nsemisoft\nsemisolid\nsemisolids\nsemitist\nsemitists\nsemitone\nsemitones\nsemitropical\nsemitropics\nsemiweeklies\nsemiweekly\nsemiwild\nsemolina\nsemolinas\nsemple\nsemplice\nsempre\nsen\nsenarii\nsenarius\nsenary\nsenate\nsenates\nsenator\nsenatorial\nsenators\nsenatorship\nsenatorships\nsend\nsendable\nsendal\nsendals\nsender\nsenders\nsending\nsendoff\nsendoffs\nsends\nsene\nseneca\nsenecas\nsenecio\nsenecios\nsenega\nsenegas\nsenescence\nsenescent\nseneschal\nseneschals\nsengi\nsenhor\nsenhora\nsenhoras\nsenhores\nsenhors\nsenile\nsenilely\nseniles\nsenilities\nsenility\nsenior\nseniorities\nseniority\nseniors\nseniti\nsenna\nsennas\nsennet\nsennets\nsennight\nsennights\nsennit\nsennits\nsenopia\nsenopias\nsenor\nsenora\nsenoras\nsenores\nsenorita\nsenoritas\nsenors\nsensa\nsensate\nsensated\nsensately\nsensates\nsensating\nsensation\nsensational\nsensationalism\nsensationalisms\nsensationalist\nsensationalistic\nsensationalists\nsensationalize\nsensationalized\nsensationalizes\nsensationalizing\nsensationally\nsensations\nsense\nsensed\nsenseful\nsenseless\nsenselessly\nsenselessness\nsenses\nsensibilities\nsensibility\nsensible\nsensibleness\nsensibler\nsensibles\nsensiblest\nsensibly\nsensilla\nsensing\nsensitive\nsensitively\nsensitiveness\nsensitivities\nsensitivity\nsensitization\nsensitizations\nsensitize\nsensitized\nsensitizer\nsensitizers\nsensitizes\nsensitizing\nsensor\nsensoria\nsensorial\nsensors\nsensory\nsensual\nsensualism\nsensualist\nsensualistic\nsensualists\nsensualities\nsensuality\nsensualization\nsensualizations\nsensualize\nsensualized\nsensualizes\nsensualizing\nsensually\nsensum\nsensuous\nsensuously\nsensuousness\nsent\nsentence\nsentenced\nsentences\nsentencing\nsententious\nsententiously\nsententiousness\nsenti\nsentience\nsentient\nsentiently\nsentients\nsentiment\nsentimental\nsentimentalism\nsentimentalist\nsentimentalists\nsentimentalities\nsentimentality\nsentimentalization\nsentimentalizations\nsentimentalize\nsentimentalized\nsentimentalizes\nsentimentalizing\nsentimentally\nsentiments\nsentinel\nsentineled\nsentineling\nsentinelled\nsentinelling\nsentinels\nsentries\nsentry\nsepal\nsepaled\nsepaline\nsepalled\nsepaloid\nsepalous\nsepals\nseparability\nseparable\nseparableness\nseparably\nseparate\nseparated\nseparately\nseparateness\nseparates\nseparating\nseparation\nseparations\nseparatism\nseparatist\nseparatists\nseparative\nseparator\nseparators\nsepia\nsepias\nsepic\nsepoy\nsepoys\nseppuku\nseppukus\nsepses\nsepsis\nsept\nsepta\nseptal\nseptaria\nseptate\nseptet\nseptets\nseptette\nseptettes\nseptic\nseptical\nsepticemia\nseptics\nseptime\nseptimes\nsepts\nseptuagenarian\nseptuagenarians\nseptum\nseptuple\nseptupled\nseptuples\nseptupling\nsepulcher\nsepulchered\nsepulchering\nsepulchers\nsepulchral\nsepulchrally\nsepulchre\nsepulchred\nsepulchres\nsepulchring\nsequel\nsequela\nsequelae\nsequels\nsequence\nsequenced\nsequencer\nsequencers\nsequences\nsequencies\nsequencing\nsequency\nsequent\nsequential\nsequentially\nsequents\nsequester\nsequestered\nsequestering\nsequesters\nsequestrate\nsequestrated\nsequestrates\nsequestrating\nsequestration\nsequestrations\nsequin\nsequined\nsequinned\nsequins\nsequitur\nsequiturs\nsequoia\nsequoias\nser\nsera\nserac\nseracs\nseraglio\nseraglios\nserai\nserail\nserails\nserais\nseral\nserape\nserapes\nseraph\nseraphic\nseraphically\nseraphim\nseraphims\nseraphin\nseraphs\nserdab\nserdabs\nsere\nsered\nserein\nsereins\nserenade\nserenaded\nserenades\nserenading\nserenata\nserenatas\nserenate\nserendipitous\nserendipity\nserene\nserenely\nsereneness\nserener\nserenes\nserenest\nserenities\nserenity\nserer\nseres\nserest\nserf\nserfage\nserfages\nserfdom\nserfdoms\nserfhood\nserfhoods\nserfish\nserflike\nserfs\nserge\nsergeant\nsergeants\nserges\nserging\nsergings\nserial\nserialist\nserialists\nserialization\nserializations\nserialize\nserialized\nserializes\nserializing\nserially\nserials\nseriate\nseriated\nseriates\nseriatim\nseriating\nsericin\nsericins\nseriema\nseriemas\nseries\nserif\nserifs\nserigraph\nserigraphs\nserin\nserine\nserines\nsering\nseringa\nseringas\nserins\nseriocomic\nseriocomically\nserious\nseriously\nseriousness\nserjeant\nserjeants\nsermon\nsermonic\nsermonize\nsermonized\nsermonizer\nsermonizers\nsermonizes\nsermonizing\nsermons\nserologies\nserology\nserosa\nserosae\nserosal\nserosas\nserosities\nserosity\nserotine\nserotines\nserotype\nserotypes\nserous\nserow\nserows\nserpent\nserpentine\nserpents\nserpigines\nserpigo\nserpigoes\nserranid\nserranids\nserrate\nserrated\nserrates\nserrating\nserration\nserrations\nserried\nserries\nserry\nserrying\nsers\nserum\nserumal\nserums\nservable\nserval\nservals\nservant\nservantless\nservants\nserve\nserved\nserver\nservers\nserves\nservice\nserviceability\nserviceable\nserviceableness\nserviceably\nserviced\nserviceman\nservicemen\nservicer\nservicers\nservices\nservicing\nservile\nservilely\nservileness\nservility\nserving\nservings\nservitor\nservitors\nservitude\nservitudes\nservo\nservomechanism\nservomotor\nservomotors\nservos\nsesame\nsesames\nsesamoid\nsesamoids\nsesquicentennial\nsesquicentennials\nsessile\nsession\nsessional\nsessions\nsesspool\nsesspools\nsesterce\nsesterces\nsestet\nsestets\nsestina\nsestinas\nsestine\nsestines\nset\nseta\nsetae\nsetal\nsetback\nsetbacks\nsetiform\nsetline\nsetlines\nsetoff\nsetoffs\nseton\nsetons\nsetose\nsetous\nsetout\nsetouts\nsets\nsetscrew\nsetscrews\nsett\nsettee\nsettees\nsetter\nsetters\nsetting\nsettings\nsettle\nsettleable\nsettled\nsettlement\nsettlements\nsettler\nsettlers\nsettles\nsettling\nsettlings\nsettlor\nsettlors\nsetts\nsetulose\nsetulous\nsetup\nsetups\nseven\nsevenfold\nsevens\nseventeen\nseventeens\nseventeenth\nseventh\nsevenths\nseventies\nseventieth\nseventy\nsever\nseverable\nseveral\nseverally\nseverals\nseveralties\nseveralty\nseverance\nseverances\nsevere\nsevered\nseverely\nsevereness\nseverer\nseverest\nsevering\nseverities\nseverity\nsevers\nsew\nsewage\nsewages\nsewan\nsewans\nsewar\nsewars\nsewed\nsewer\nsewerage\nsewerages\nsewers\nsewing\nsewings\nsewn\nsews\nsex\nsexagenarian\nsexagenarians\nsexed\nsexes\nsexier\nsexiest\nsexily\nsexiness\nsexinesses\nsexing\nsexism\nsexisms\nsexist\nsexists\nsexless\nsexologies\nsexologist\nsexologists\nsexology\nsexpot\nsexpots\nsext\nsextain\nsextains\nsextan\nsextans\nsextant\nsextants\nsextarii\nsextet\nsextets\nsextette\nsextettes\nsextile\nsextiles\nsexto\nsexton\nsextons\nsextos\nsexts\nsextuple\nsextupled\nsextuples\nsextuplet\nsextuplets\nsextupling\nsextuply\nsexual\nsexuality\nsexualize\nsexualized\nsexualizes\nsexualizing\nsexually\nsexy\nsferics\nsforzato\nsforzatos\nsfumato\nsfumatos\nsh\nsha\nshabbier\nshabbiest\nshabbily\nshabbiness\nshabby\nshack\nshackle\nshackled\nshackler\nshacklers\nshackles\nshackling\nshacko\nshackoes\nshackos\nshacks\nshad\nshadblow\nshadblows\nshadbush\nshadbushes\nshadchan\nshadchanim\nshadchans\nshaddock\nshaddocks\nshade\nshaded\nshader\nshaders\nshades\nshadflies\nshadfly\nshadier\nshadiest\nshadily\nshadiness\nshading\nshadings\nshadoof\nshadoofs\nshadow\nshadowbox\nshadowboxed\nshadowboxes\nshadowboxing\nshadowed\nshadower\nshadowers\nshadowier\nshadowiest\nshadowiness\nshadowing\nshadows\nshadowy\nshadrach\nshadrachs\nshads\nshaduf\nshadufs\nshady\nshaft\nshafted\nshafting\nshaftings\nshafts\nshag\nshagbark\nshagbarks\nshagged\nshaggier\nshaggiest\nshaggily\nshagginess\nshagging\nshaggy\nshagreen\nshagreens\nshags\nshah\nshahdom\nshahdoms\nshahs\nshaird\nshairds\nshairn\nshairns\nshaitan\nshaitans\nshakable\nshake\nshakeable\nshakedown\nshakedowns\nshaken\nshakeout\nshakeouts\nshaker\nshakers\nshakes\nshakeup\nshakeups\nshakier\nshakiest\nshakily\nshakiness\nshaking\nshako\nshakoes\nshakos\nshaky\nshale\nshaled\nshales\nshalier\nshaliest\nshall\nshalloon\nshalloons\nshallop\nshallops\nshallot\nshallots\nshallow\nshallowed\nshallower\nshallowest\nshallowing\nshallowly\nshallowness\nshallows\nshalom\nshalt\nshaly\nsham\nshamable\nshaman\nshamanic\nshamanism\nshamanist\nshamanistic\nshamanists\nshamans\nshamble\nshambled\nshambles\nshambling\nshame\nshamed\nshamefaced\nshamefacedly\nshamefacedness\nshameful\nshamefully\nshamefulness\nshameless\nshamelessly\nshamelessness\nshames\nshaming\nshammas\nshammash\nshammashim\nshammasim\nshammed\nshammer\nshammers\nshammes\nshammied\nshammies\nshamming\nshammos\nshammosim\nshammy\nshammying\nshamois\nshamosim\nshamoy\nshamoyed\nshamoying\nshamoys\nshampoo\nshampooed\nshampooing\nshampoos\nshamrock\nshamrocks\nshams\nshamus\nshamuses\nshandies\nshandy\nshanghai\nshanghaied\nshanghaiing\nshanghais\nshank\nshanked\nshanking\nshanks\nshantey\nshanteys\nshanti\nshanties\nshantih\nshantihs\nshantis\nshantung\nshantungs\nshanty\nshapable\nshape\nshapeable\nshaped\nshapeless\nshapelessly\nshapelessness\nshapelier\nshapeliest\nshapely\nshapen\nshaper\nshapers\nshapes\nshapeup\nshapeups\nshaping\nsharable\nshard\nshards\nshare\nshareable\nsharecrop\nsharecropped\nsharecropper\nsharecroppers\nsharecropping\nsharecrops\nshared\nshareholder\nshareholders\nsharer\nsharers\nshares\nsharif\nsharifs\nsharing\nshark\nsharked\nsharker\nsharkers\nsharking\nsharks\nsharn\nsharns\nsharny\nsharp\nsharped\nsharpen\nsharpened\nsharpener\nsharpeners\nsharpening\nsharpens\nsharper\nsharpers\nsharpest\nsharpie\nsharpies\nsharping\nsharply\nsharpness\nsharps\nsharpshooter\nsharpshooters\nsharpshooting\nsharpy\nshashlik\nshashliks\nshaslik\nshasliks\nshat\nshatter\nshattered\nshattering\nshatteringly\nshatterproof\nshatters\nshaugh\nshaughs\nshaul\nshauled\nshauling\nshauls\nshavable\nshave\nshaved\nshaveling\nshavelings\nshaven\nshaver\nshavers\nshaves\nshavie\nshavies\nshaving\nshavings\nshaw\nshawed\nshawing\nshawl\nshawled\nshawling\nshawls\nshawm\nshawms\nshawn\nshaws\nshay\nshays\nshe\nshea\nsheaf\nsheafed\nsheafing\nsheafs\nsheal\nshealing\nshealings\nsheals\nshear\nsheared\nshearer\nshearers\nshearing\nshears\nsheas\nsheath\nsheathe\nsheathed\nsheather\nsheathers\nsheathes\nsheathing\nsheaths\nsheave\nsheaved\nsheaves\nsheaving\nshebang\nshebangs\nshebean\nshebeans\nshebeen\nshebeens\nshed\nshedable\nshedded\nshedder\nshedders\nshedding\nsheds\nsheen\nsheened\nsheeney\nsheeneys\nsheenful\nsheenie\nsheenier\nsheenies\nsheeniest\nsheening\nsheens\nsheeny\nsheep\nsheepdog\nsheepdogs\nsheepherder\nsheepherders\nsheepish\nsheepishly\nsheepishness\nsheepman\nsheepmen\nsheepskin\nsheepskins\nsheer\nsheered\nsheerer\nsheerest\nsheering\nsheerly\nsheerness\nsheers\nsheet\nsheeted\nsheeter\nsheeters\nsheetfed\nsheeting\nsheetings\nsheets\nsheeve\nsheeves\nshegetz\nsheik\nsheikdom\nsheikdoms\nsheikh\nsheikhdom\nsheikhdoms\nsheikhs\nsheiks\nsheitan\nsheitans\nshekel\nshekels\nshelduck\nshelducks\nshelf\nshelfful\nshelffuls\nshell\nshellac\nshellack\nshellacked\nshellacking\nshellackings\nshellacks\nshellacs\nshelled\nsheller\nshellers\nshellfish\nshellfisheries\nshellfishery\nshellier\nshelliest\nshelling\nshells\nshelly\nshelter\nsheltered\nsheltering\nshelterless\nshelters\nsheltie\nshelties\nshelty\nshelve\nshelved\nshelver\nshelvers\nshelves\nshelvier\nshelviest\nshelving\nshelvings\nshelvy\nshenanigan\nshenanigans\nshend\nshending\nshends\nshent\nsheol\nsheols\nshepherd\nshepherded\nshepherdess\nshepherdesses\nshepherding\nshepherds\nsherbert\nsherberts\nsherbet\nsherbets\nsherd\nsherds\nshereef\nshereefs\nsherif\nsheriff\nsheriffs\nsherifs\nsherlock\nsherlocks\nsheroot\nsheroots\nsherries\nsherris\nsherrises\nsherry\nshes\nshetland\nshetlands\nsheuch\nsheuchs\nsheugh\nsheughs\nshew\nshewed\nshewer\nshewers\nshewing\nshewn\nshews\nshh\nshibah\nshibahs\nshibboleth\nshibboleths\nshicksa\nshicksas\nshied\nshiel\nshield\nshielded\nshielder\nshielders\nshielding\nshields\nshieling\nshielings\nshiels\nshier\nshiers\nshies\nshiest\nshift\nshifted\nshifter\nshifters\nshiftier\nshiftiest\nshiftily\nshiftiness\nshifting\nshiftless\nshiftlessly\nshiftlessness\nshifts\nshifty\nshigella\nshigellae\nshigellas\nshikar\nshikaree\nshikarees\nshikari\nshikaris\nshikarred\nshikarring\nshikars\nshiksa\nshiksas\nshikse\nshikses\nshilingi\nshill\nshillala\nshillalas\nshilled\nshillelagh\nshillelaghs\nshilling\nshillings\nshills\nshilpit\nshily\nshim\nshimmed\nshimmer\nshimmered\nshimmering\nshimmers\nshimmery\nshimmied\nshimmies\nshimming\nshimmy\nshimmying\nshims\nshin\nshinbone\nshinbones\nshindies\nshindig\nshindigs\nshindy\nshindys\nshine\nshined\nshiner\nshiners\nshines\nshingle\nshingled\nshingler\nshinglers\nshingles\nshingling\nshingly\nshinier\nshiniest\nshinily\nshininess\nshining\nshinleaf\nshinleafs\nshinleaves\nshinned\nshinneries\nshinnery\nshinney\nshinneys\nshinnied\nshinnies\nshinning\nshinny\nshinnying\nshins\nshiny\nship\nshipboard\nshipboards\nshipbuilder\nshipbuilders\nshipbuilding\nshiplap\nshiplaps\nshipload\nshiploads\nshipman\nshipmate\nshipmates\nshipmen\nshipment\nshipments\nshipowner\nshipowners\nshippable\nshipped\nshippen\nshippens\nshipper\nshippers\nshipping\nshippings\nshippon\nshippons\nships\nshipshape\nshipside\nshipsides\nshipway\nshipways\nshipworm\nshipworms\nshipwreck\nshipwrecked\nshipwrecking\nshipwrecks\nshipwright\nshipwrights\nshipyard\nshipyards\nshire\nshires\nshirk\nshirked\nshirker\nshirkers\nshirking\nshirks\nshirr\nshirred\nshirring\nshirrings\nshirrs\nshirt\nshirtier\nshirtiest\nshirting\nshirtings\nshirts\nshirttail\nshirttails\nshirtwaist\nshirtwaists\nshirty\nshist\nshists\nshit\nshits\nshittah\nshittahs\nshitted\nshittim\nshittims\nshitting\nshiv\nshiva\nshivah\nshivahs\nshivaree\nshivareed\nshivareeing\nshivarees\nshivas\nshive\nshiver\nshivered\nshiverer\nshiverers\nshivering\nshivers\nshivery\nshives\nshivs\nshkotzim\nshlemiel\nshlemiels\nshlep\nshlock\nshlocks\nshmo\nshmoes\nshnaps\nshoal\nshoaled\nshoaler\nshoalest\nshoalier\nshoaliest\nshoaling\nshoals\nshoaly\nshoat\nshoats\nshock\nshockable\nshocked\nshocker\nshockers\nshocking\nshockingly\nshockproof\nshocks\nshod\nshodden\nshoddier\nshoddies\nshoddiest\nshoddily\nshoddiness\nshoddy\nshoe\nshoebill\nshoebills\nshoed\nshoehorn\nshoehorned\nshoehorning\nshoehorns\nshoeing\nshoelace\nshoelaces\nshoemaker\nshoemakers\nshoepac\nshoepack\nshoepacks\nshoepacs\nshoer\nshoers\nshoes\nshoestring\nshoestrings\nshoetree\nshoetrees\nshofar\nshofars\nshofroth\nshog\nshogged\nshogging\nshogs\nshogun\nshogunal\nshoguns\nshoji\nshojis\nsholom\nshone\nshoo\nshooed\nshooflies\nshoofly\nshooing\nshook\nshooks\nshool\nshooled\nshooling\nshools\nshoon\nshoos\nshoot\nshooter\nshooters\nshooting\nshootings\nshoots\nshop\nshopboy\nshopboys\nshopgirl\nshopgirls\nshophar\nshophars\nshophroth\nshopkeeper\nshopkeepers\nshoplift\nshoplifted\nshoplifter\nshoplifters\nshoplifting\nshoplifts\nshopman\nshopmen\nshoppe\nshopped\nshopper\nshoppers\nshoppes\nshopping\nshoppings\nshops\nshoptalk\nshoptalks\nshopworn\nshoran\nshorans\nshore\nshored\nshoreline\nshorelines\nshores\nshoreward\nshorewards\nshoring\nshorings\nshorl\nshorls\nshorn\nshort\nshortage\nshortages\nshortchange\nshortchanged\nshortchanger\nshortchangers\nshortchanges\nshortchanging\nshortcoming\nshortcomings\nshortcut\nshortcuts\nshorted\nshorten\nshortened\nshortener\nshorteners\nshortening\nshortens\nshorter\nshortest\nshortfall\nshortfalls\nshorthand\nshorthanded\nshorthands\nshorthorn\nshorthorns\nshortia\nshortias\nshortie\nshorties\nshorting\nshortish\nshortly\nshortness\nshorts\nshortsighted\nshortsightedly\nshortsightedness\nshortstop\nshortstops\nshortwave\nshortwaves\nshorty\nshot\nshote\nshotes\nshotgun\nshotgunned\nshotgunning\nshotguns\nshots\nshott\nshotted\nshotten\nshotting\nshotts\nshould\nshoulder\nshouldered\nshouldering\nshoulders\nshouldest\nshouldst\nshout\nshouted\nshouter\nshouters\nshouting\nshouts\nshove\nshoved\nshovel\nshoveled\nshoveler\nshovelers\nshovelful\nshovelfuls\nshoveling\nshovelled\nshoveller\nshovellers\nshovelling\nshovels\nshover\nshovers\nshoves\nshoving\nshow\nshowboat\nshowboated\nshowboating\nshowboats\nshowcase\nshowcased\nshowcases\nshowcasing\nshowdown\nshowdowns\nshowed\nshower\nshowered\nshowering\nshowers\nshowery\nshowgirl\nshowgirls\nshowier\nshowiest\nshowily\nshowiness\nshowing\nshowings\nshowman\nshowmanship\nshowmen\nshown\nshowoff\nshowoffs\nshowpiece\nshowpieces\nshowplace\nshowplaces\nshowroom\nshowrooms\nshows\nshowy\nshoyu\nshrank\nshrapnel\nshred\nshredded\nshredder\nshredders\nshredding\nshreds\nshrew\nshrewd\nshrewder\nshrewdest\nshrewdly\nshrewdness\nshrewed\nshrewing\nshrewish\nshrewishly\nshrewishness\nshrews\nshri\nshriek\nshrieked\nshrieker\nshriekers\nshriekier\nshriekiest\nshrieking\nshrieks\nshrieky\nshrieval\nshrieve\nshrieved\nshrieves\nshrieving\nshrift\nshrifts\nshrike\nshrikes\nshrill\nshrilled\nshriller\nshrillest\nshrilling\nshrillness\nshrills\nshrilly\nshrimp\nshrimped\nshrimper\nshrimpers\nshrimpier\nshrimpiest\nshrimping\nshrimps\nshrimpy\nshrine\nshrined\nshrines\nshrining\nshrink\nshrinkable\nshrinkage\nshrinkages\nshrinker\nshrinkers\nshrinking\nshrinks\nshris\nshrive\nshrived\nshrivel\nshriveled\nshriveling\nshrivelled\nshrivelling\nshrivels\nshriven\nshriver\nshrivers\nshrives\nshriving\nshroff\nshroffed\nshroffing\nshroffs\nshroud\nshrouded\nshrouding\nshrouds\nshrove\nshrub\nshrubberies\nshrubbery\nshrubbier\nshrubbiest\nshrubby\nshrubs\nshrug\nshrugged\nshrugging\nshrugs\nshrunk\nshrunken\nshtetel\nshtetl\nshtetlach\nshtick\nshticks\nshtik\nshuck\nshucked\nshucker\nshuckers\nshucking\nshuckings\nshucks\nshudder\nshuddered\nshuddering\nshudders\nshuddery\nshuffle\nshuffleboard\nshuffleboards\nshuffled\nshuffler\nshufflers\nshuffles\nshuffling\nshul\nshuln\nshuls\nshun\nshunned\nshunner\nshunners\nshunning\nshunpike\nshunpikes\nshuns\nshunt\nshunted\nshunter\nshunters\nshunting\nshunts\nshush\nshushed\nshushes\nshushing\nshut\nshutdown\nshutdowns\nshute\nshuted\nshutes\nshuteye\nshuteyes\nshuting\nshutoff\nshutoffs\nshutout\nshutouts\nshuts\nshutter\nshuttered\nshuttering\nshutterless\nshutters\nshutting\nshuttle\nshuttlecock\nshuttlecocked\nshuttlecocking\nshuttlecocks\nshuttled\nshuttles\nshuttling\nshwanpan\nshwanpans\nshy\nshyer\nshyers\nshyest\nshying\nshylock\nshylocked\nshylocking\nshylocks\nshyly\nshyness\nshynesses\nshyster\nshysters\nsi\nsial\nsialic\nsialoid\nsials\nsiamang\nsiamangs\nsiamese\nsiameses\nsib\nsibb\nsibbs\nsibilance\nsibilant\nsibilantly\nsibilants\nsibilate\nsibilated\nsibilates\nsibilating\nsibling\nsiblings\nsibs\nsibyl\nsibylic\nsibyllic\nsibyls\nsic\nsiccan\nsicced\nsiccing\nsice\nsices\nsick\nsickbay\nsickbays\nsickbed\nsickbeds\nsicked\nsicken\nsickened\nsickener\nsickeners\nsickening\nsickeningly\nsickens\nsicker\nsickerly\nsickest\nsicking\nsickish\nsickishly\nsickishness\nsickle\nsickled\nsickles\nsicklied\nsicklier\nsicklies\nsickliest\nsicklily\nsickliness\nsickling\nsickly\nsicklying\nsickness\nsicknesses\nsicko\nsickroom\nsickrooms\nsicks\nsics\nsiddur\nsiddurim\nsiddurs\nside\nsidearm\nsideband\nsidebands\nsideboard\nsideboards\nsideburns\nsidecar\nsidecars\nsided\nsidehill\nsidehills\nsidekick\nsidekicks\nsidelight\nsidelights\nsideline\nsidelined\nsideliner\nsideliners\nsidelines\nsideling\nsidelining\nsidelong\nsideman\nsidemen\nsidereal\nsiderite\nsiderites\nsides\nsidesaddle\nsidesaddles\nsideshow\nsideshows\nsideslip\nsideslipped\nsideslipping\nsideslips\nsidespin\nsidespins\nsidesplitting\nsidesplittingly\nsidestep\nsidestepped\nsidestepping\nsidesteps\nsidestroke\nsidestrokes\nsideswipe\nsideswiped\nsideswipes\nsideswiping\nsidetrack\nsidetracked\nsidetracking\nsidetracks\nsidewalk\nsidewalks\nsidewall\nsidewalls\nsideward\nsideway\nsideways\nsidewise\nsiding\nsidings\nsidle\nsidled\nsidler\nsidlers\nsidles\nsidling\nsiege\nsieged\nsieges\nsieging\nsiemens\nsienite\nsienites\nsienna\nsiennas\nsierozem\nsierozems\nsierra\nsierran\nsierras\nsies\nsiesta\nsiestas\nsieur\nsieurs\nsieve\nsieved\nsieves\nsieving\nsiffleur\nsiffleurs\nsift\nsifted\nsifter\nsifters\nsifting\nsiftings\nsifts\nsiganid\nsiganids\nsigh\nsighed\nsigher\nsighers\nsighing\nsighless\nsighlike\nsighs\nsight\nsighted\nsighter\nsighters\nsighting\nsightless\nsightlessly\nsightlessness\nsightlier\nsightliest\nsightliness\nsightly\nsights\nsightsaw\nsightsee\nsightseeing\nsightseen\nsightseer\nsightseers\nsightsees\nsigil\nsigils\nsigloi\nsiglos\nsigma\nsigmas\nsigmate\nsigmoid\nsigmoids\nsign\nsignal\nsignaled\nsignaler\nsignalers\nsignaling\nsignalize\nsignalized\nsignalizes\nsignalizing\nsignalled\nsignaller\nsignallers\nsignalling\nsignally\nsignalman\nsignalmen\nsignals\nsignatories\nsignatory\nsignature\nsignatures\nsignboard\nsignboards\nsigned\nsigner\nsigners\nsignet\nsigneted\nsigneting\nsignets\nsignificance\nsignificancy\nsignificant\nsignificantly\nsignification\nsignifications\nsignificative\nsignified\nsignifies\nsignify\nsignifying\nsigning\nsignior\nsigniori\nsigniories\nsigniors\nsigniory\nsignor\nsignora\nsignoras\nsignore\nsignori\nsignories\nsignorina\nsignorinas\nsignorine\nsignors\nsignory\nsignpost\nsignposted\nsignposting\nsignposts\nsigns\nsike\nsiker\nsikes\nsilage\nsilages\nsilane\nsilanes\nsild\nsilds\nsilence\nsilenced\nsilencer\nsilencers\nsilences\nsilencing\nsileni\nsilent\nsilenter\nsilentest\nsilently\nsilentness\nsilents\nsilenus\nsilesia\nsilesias\nsilex\nsilexes\nsilhouette\nsilhouetted\nsilhouettes\nsilhouetting\nsilica\nsilicas\nsilicate\nsilicates\nsilicic\nsilicide\nsilicides\nsilicification\nsilicified\nsilicifies\nsilicify\nsilicifying\nsilicium\nsiliciums\nsilicle\nsilicles\nsilicon\nsilicone\nsilicones\nsilicons\nsiliqua\nsiliquae\nsilique\nsiliques\nsilk\nsilked\nsilken\nsilkier\nsilkiest\nsilkily\nsilkiness\nsilking\nsilklike\nsilks\nsilkweed\nsilkweeds\nsilkworm\nsilkworms\nsilky\nsill\nsillabub\nsillabubs\nsiller\nsillers\nsillibibs\nsillibub\nsillibubs\nsillier\nsillies\nsilliest\nsillily\nsilliness\nsills\nsilly\nsilo\nsiloed\nsiloing\nsilos\nsiloxane\nsiloxanes\nsilt\nsiltation\nsilted\nsiltier\nsiltiest\nsilting\nsilts\nsilty\nsilurid\nsilurids\nsiluroid\nsiluroids\nsilva\nsilvae\nsilvan\nsilvans\nsilvas\nsilver\nsilvered\nsilverer\nsilverers\nsilverfish\nsilvering\nsilverly\nsilvern\nsilvers\nsilversmith\nsilversmiths\nsilverware\nsilverwares\nsilvery\nsilvical\nsilvics\nsilviculture\nsim\nsima\nsimar\nsimars\nsimaruba\nsimarubas\nsimas\nsimazine\nsimazines\nsimian\nsimians\nsimilar\nsimilarities\nsimilarity\nsimilarly\nsimile\nsimiles\nsimilitude\nsimilitudes\nsimioid\nsimious\nsimitar\nsimitars\nsimlin\nsimlins\nsimmer\nsimmered\nsimmering\nsimmers\nsimnel\nsimnels\nsimoleon\nsimoleons\nsimoniac\nsimoniacs\nsimonies\nsimonist\nsimonists\nsimonize\nsimonized\nsimonizes\nsimonizing\nsimony\nsimoom\nsimooms\nsimoon\nsimoons\nsimp\nsimper\nsimpered\nsimperer\nsimperers\nsimpering\nsimpers\nsimple\nsimpleness\nsimpler\nsimples\nsimplest\nsimpleton\nsimpletons\nsimplex\nsimplexes\nsimplices\nsimplicia\nsimplicities\nsimplicity\nsimplification\nsimplifications\nsimplified\nsimplifier\nsimplifiers\nsimplifies\nsimplify\nsimplifying\nsimplism\nsimplisms\nsimplistic\nsimplistically\nsimply\nsimps\nsims\nsimulant\nsimulants\nsimular\nsimulars\nsimulate\nsimulated\nsimulates\nsimulating\nsimulation\nsimulations\nsimulative\nsimulator\nsimulators\nsimulcast\nsimulcasting\nsimulcasts\nsimultaneities\nsimultaneity\nsimultaneous\nsimultaneously\nsimultaneousness\nsin\nsinapism\nsinapisms\nsince\nsincere\nsincerely\nsincerer\nsincerest\nsincerities\nsincerity\nsincipita\nsinciput\nsinciputs\nsine\nsinecure\nsinecures\nsines\nsinew\nsinewed\nsinewing\nsinews\nsinewy\nsinfonia\nsinfonie\nsinful\nsinfully\nsinfulness\nsing\nsingable\nsinge\nsinged\nsingeing\nsinger\nsingers\nsinges\nsinging\nsingle\nsingled\nsinglehood\nsingleness\nsingles\nsinglet\nsingleton\nsingletons\nsinglets\nsingling\nsingly\nsings\nsingsong\nsingsongs\nsingular\nsingularity\nsingularize\nsingularized\nsingularizes\nsingularizing\nsingularly\nsingulars\nsinh\nsinhs\nsinicize\nsinicized\nsinicizes\nsinicizing\nsinister\nsinisterly\nsink\nsinkable\nsinkage\nsinkages\nsinker\nsinkers\nsinkhole\nsinkholes\nsinking\nsinks\nsinless\nsinned\nsinner\nsinners\nsinning\nsinologies\nsinology\nsinopia\nsinopias\nsinopie\nsins\nsinsyne\nsinter\nsintered\nsintering\nsinters\nsinuate\nsinuated\nsinuates\nsinuating\nsinuosities\nsinuosity\nsinuous\nsinuously\nsinuousness\nsinus\nsinuses\nsinusoid\nsinusoids\nsip\nsipe\nsiped\nsipes\nsiphon\nsiphonal\nsiphoned\nsiphonic\nsiphoning\nsiphons\nsiping\nsipped\nsipper\nsippers\nsippet\nsippets\nsipping\nsips\nsir\nsirdar\nsirdars\nsire\nsired\nsiree\nsirees\nsiren\nsirenian\nsirenians\nsirens\nsires\nsiring\nsirloin\nsirloins\nsirocco\nsiroccos\nsirra\nsirrah\nsirrahs\nsirras\nsirree\nsirrees\nsirs\nsirup\nsirups\nsirupy\nsirvente\nsirventes\nsis\nsisal\nsisals\nsises\nsiskin\nsiskins\nsissier\nsissiest\nsissified\nsissy\nsissyish\nsister\nsistered\nsisterhood\nsisterhoods\nsistering\nsisterly\nsisters\nsistra\nsistroid\nsistrum\nsistrums\nsit\nsitar\nsitarist\nsitarists\nsitars\nsite\nsited\nsites\nsith\nsithence\nsithens\nsiting\nsitologies\nsitology\nsits\nsitten\nsitter\nsitters\nsitting\nsittings\nsituate\nsituated\nsituates\nsituating\nsituation\nsituational\nsituations\nsitup\nsitus\nsituses\nsitzmark\nsitzmarks\nsiver\nsivers\nsix\nsixes\nsixfold\nsixmo\nsixmos\nsixpence\nsixpences\nsixpenny\nsixte\nsixteen\nsixteens\nsixteenth\nsixteenths\nsixtes\nsixth\nsixthly\nsixths\nsixties\nsixtieth\nsixtieths\nsixty\nsizable\nsizableness\nsizably\nsizar\nsizars\nsize\nsizeable\nsizeably\nsized\nsizer\nsizers\nsizes\nsizier\nsiziest\nsiziness\nsizinesses\nsizing\nsizings\nsizy\nsizzle\nsizzled\nsizzler\nsizzlers\nsizzles\nsizzling\nska\nskag\nskags\nskald\nskaldic\nskalds\nskas\nskat\nskate\nskateboard\nskateboarder\nskateboarders\nskateboarding\nskateboards\nskated\nskater\nskaters\nskates\nskating\nskatings\nskatol\nskatole\nskatoles\nskatols\nskats\nskean\nskeane\nskeanes\nskeans\nskee\nskeed\nskeeing\nskeen\nskeens\nskees\nskeet\nskeeter\nskeeters\nskeets\nskeg\nskegs\nskeigh\nskein\nskeined\nskeining\nskeins\nskeletal\nskeletally\nskeleton\nskeletonize\nskeletonized\nskeletonizes\nskeletonizing\nskeletons\nskellum\nskellums\nskelm\nskelp\nskelped\nskelping\nskelpit\nskelps\nskelter\nskeltered\nskeltering\nskelters\nskene\nskenes\nskep\nskeps\nskepsis\nskepsises\nskeptic\nskeptical\nskeptically\nskepticism\nskepticisms\nskeptics\nskerries\nskerry\nsketch\nsketchbook\nsketchbooks\nsketched\nsketcher\nsketchers\nsketches\nsketchier\nsketchiest\nsketchily\nsketchiness\nsketching\nsketchy\nskew\nskewback\nskewbacks\nskewbald\nskewbalds\nskewed\nskewer\nskewered\nskewering\nskewers\nskewing\nskewness\nskewnesses\nskews\nski\nskiable\nskiagram\nskiagrams\nskibob\nskibobs\nskid\nskidded\nskidder\nskidders\nskiddier\nskiddiest\nskidding\nskiddoo\nskiddooed\nskiddooing\nskiddoos\nskiddy\nskidoo\nskidooed\nskidooing\nskidoos\nskids\nskidway\nskidways\nskied\nskier\nskiers\nskies\nskiey\nskiff\nskiffle\nskiffled\nskiffles\nskiffling\nskiffs\nskiing\nskiings\nskijorer\nskijorers\nskilful\nskilfully\nskilfulness\nskill\nskilled\nskilless\nskillessness\nskillet\nskillets\nskillful\nskillfully\nskillfulness\nskilling\nskillings\nskills\nskim\nskimmed\nskimmer\nskimmers\nskimming\nskimmings\nskimo\nskimos\nskimp\nskimped\nskimpier\nskimpiest\nskimpily\nskimpiness\nskimping\nskimps\nskimpy\nskims\nskin\nskinflint\nskinflints\nskinful\nskinfuls\nskinhead\nskinheads\nskink\nskinked\nskinker\nskinkers\nskinking\nskinks\nskinless\nskinlike\nskinned\nskinner\nskinners\nskinnier\nskinniest\nskinning\nskinny\nskins\nskint\nskintight\nskioring\nskiorings\nskip\nskipjack\nskipjacks\nskiplane\nskiplanes\nskipped\nskipper\nskippered\nskippering\nskippers\nskippet\nskippets\nskipping\nskips\nskirl\nskirled\nskirling\nskirls\nskirmish\nskirmished\nskirmisher\nskirmishers\nskirmishes\nskirmishing\nskirr\nskirred\nskirret\nskirrets\nskirring\nskirrs\nskirt\nskirted\nskirter\nskirters\nskirting\nskirtings\nskirts\nskis\nskit\nskite\nskited\nskites\nskiting\nskits\nskitter\nskittered\nskitterier\nskitteriest\nskittering\nskitters\nskittery\nskittish\nskittishly\nskittishness\nskittle\nskittles\nskive\nskived\nskiver\nskivers\nskives\nskiving\nskivvies\nskivvy\nskiwear\nskiwears\nsklent\nsklented\nsklenting\nsklents\nskoal\nskoaled\nskoaling\nskoals\nskookum\nskreegh\nskreeghed\nskreeghing\nskreeghs\nskreigh\nskreighed\nskreighing\nskreighs\nskua\nskuas\nskulduggeries\nskulduggery\nskulk\nskulked\nskulker\nskulkers\nskulking\nskulks\nskull\nskullcap\nskullcaps\nskullduggeries\nskullduggery\nskulled\nskulls\nskunk\nskunked\nskunking\nskunks\nsky\nskyborne\nskycap\nskycaps\nskydive\nskydived\nskydiver\nskydivers\nskydives\nskydiving\nskydove\nskyed\nskyey\nskyhook\nskyhooks\nskying\nskyjack\nskyjacked\nskyjacker\nskyjackers\nskyjacking\nskyjacks\nskylark\nskylarked\nskylarking\nskylarks\nskylight\nskylights\nskyline\nskylines\nskyman\nskymen\nskyphoi\nskyphos\nskyrocket\nskyrocketed\nskyrocketing\nskyrockets\nskysail\nskysails\nskyscraper\nskyscrapers\nskyward\nskywards\nskyway\nskyways\nskywrite\nskywrites\nskywriting\nskywritings\nskywritten\nskywrote\nslab\nslabbed\nslabber\nslabbered\nslabbering\nslabbers\nslabbery\nslabbing\nslabs\nslack\nslacked\nslacken\nslackened\nslackening\nslackens\nslacker\nslackers\nslackest\nslacking\nslackly\nslackness\nslacks\nslag\nslagged\nslaggier\nslaggiest\nslagging\nslaggy\nslags\nslain\nslakable\nslake\nslaked\nslaker\nslakers\nslakes\nslaking\nslalom\nslalomed\nslaloming\nslaloms\nslam\nslammed\nslamming\nslams\nslander\nslandered\nslanderer\nslanderers\nslandering\nslanderous\nslanderously\nslanders\nslang\nslanged\nslangier\nslangiest\nslangily\nslanginess\nslanging\nslangs\nslangy\nslank\nslant\nslanted\nslanting\nslants\nslantways\nslantwise\nslap\nslapdash\nslapdashes\nslapjack\nslapjacks\nslapped\nslapper\nslappers\nslapping\nslaps\nslapstick\nslapsticks\nslash\nslashed\nslasher\nslashers\nslashes\nslashing\nslashingly\nslashings\nslat\nslatch\nslatches\nslate\nslated\nslater\nslaters\nslates\nslather\nslathered\nslathering\nslathers\nslatier\nslatiest\nslating\nslatings\nslats\nslatted\nslattern\nslatternly\nslatterns\nslatting\nslaty\nslaughter\nslaughtered\nslaughterhouse\nslaughterhouses\nslaughtering\nslaughterous\nslaughterously\nslaughters\nslave\nslaved\nslaver\nslavered\nslaverer\nslaverers\nslaveries\nslavering\nslavers\nslavery\nslaves\nslavey\nslaveys\nslaving\nslavish\nslavishly\nslavishness\nslaw\nslaws\nslay\nslayer\nslayers\nslaying\nslays\nsleave\nsleaved\nsleaves\nsleaving\nsleazier\nsleaziest\nsleazily\nsleaziness\nsleazy\nsled\nsledded\nsledder\nsledders\nsledding\nsleddings\nsledge\nsledged\nsledgehammer\nsledgehammered\nsledgehammering\nsledgehammers\nsledges\nsledging\nsleds\nsleek\nsleeked\nsleeken\nsleekened\nsleekening\nsleekens\nsleeker\nsleekest\nsleekier\nsleekiest\nsleeking\nsleekit\nsleekly\nsleekness\nsleeks\nsleeky\nsleep\nsleeper\nsleepers\nsleepier\nsleepiest\nsleepily\nsleepiness\nsleeping\nsleepings\nsleepless\nsleeplessly\nsleeplessness\nsleeps\nsleepwalk\nsleepwalked\nsleepwalker\nsleepwalkers\nsleepwalking\nsleepwalks\nsleepy\nsleet\nsleeted\nsleetier\nsleetiest\nsleeting\nsleets\nsleety\nsleeve\nsleeved\nsleeveless\nsleevelet\nsleevelets\nsleeves\nsleeving\nsleigh\nsleighed\nsleigher\nsleighers\nsleighing\nsleighs\nsleight\nsleights\nslender\nslenderer\nslenderest\nslenderize\nslenderized\nslenderizes\nslenderizing\nslenderly\nslenderness\nslept\nsleuth\nsleuthed\nsleuthing\nsleuths\nslew\nslewed\nslewing\nslews\nslice\nsliced\nslicer\nslicers\nslices\nslicing\nslick\nslicked\nslicker\nslickers\nslickest\nslicking\nslickly\nslickness\nslicks\nslid\nslidable\nslidden\nslide\nslider\nsliders\nslides\nslideway\nslideways\nsliding\nslier\nsliest\nslight\nslighted\nslighter\nslightest\nslighting\nslightingly\nslightly\nslightness\nslights\nslily\nslim\nslime\nslimed\nslimes\nslimier\nslimiest\nslimily\nsliminess\nsliming\nslimly\nslimmed\nslimmer\nslimmest\nslimming\nslimness\nslimnesses\nslimpsier\nslimpsiest\nslimpsy\nslims\nslimsier\nslimsiest\nslimsy\nslimy\nsling\nslinger\nslingers\nslinging\nslings\nslingshot\nslingshots\nslink\nslinkier\nslinkiest\nslinkily\nslinkiness\nslinking\nslinks\nslinky\nslip\nslipcase\nslipcases\nslipcover\nslipcovers\nslipe\nsliped\nslipes\nslipform\nslipformed\nslipforming\nslipforms\nsliping\nslipknot\nslipknots\nslipless\nslipout\nslipouts\nslipover\nslipovers\nslippage\nslippages\nslipped\nslipper\nslipperier\nslipperiest\nslipperiness\nslippers\nslippery\nslippier\nslippiest\nslipping\nslippy\nslips\nslipshod\nslipslop\nslipslops\nslipsole\nslipsoles\nslipstream\nslipstreams\nslipt\nslipup\nslipups\nslipware\nslipwares\nslipway\nslipways\nslit\nslither\nslithered\nslithering\nslithers\nslithery\nslitless\nslits\nslitted\nslitter\nslitters\nslitting\nsliver\nslivered\nsliverer\nsliverers\nslivering\nslivers\nslivovic\nslivovices\nslivovics\nslob\nslobber\nslobbered\nslobbering\nslobbers\nslobbery\nslobbish\nslobs\nsloe\nsloes\nslog\nslogan\nsloganeer\nsloganeers\nslogans\nslogged\nslogger\nsloggers\nslogging\nslogs\nsloid\nsloids\nslojd\nslojds\nsloop\nsloops\nslop\nslope\nsloped\nsloper\nslopers\nslopes\nsloping\nslopped\nsloppier\nsloppiest\nsloppily\nsloppiness\nslopping\nsloppy\nslops\nslopwork\nslopworks\nslosh\nsloshed\nsloshes\nsloshier\nsloshiest\nsloshing\nsloshy\nslot\nslotback\nslotbacks\nsloth\nslothful\nslothfully\nslothfulness\nsloths\nslots\nslotted\nslotting\nslouch\nslouched\nsloucher\nslouchers\nslouches\nslouchier\nslouchiest\nslouchily\nslouchiness\nslouching\nslouchy\nslough\nsloughed\nsloughier\nsloughiest\nsloughing\nsloughs\nsloughy\nsloven\nslovenlier\nslovenliest\nslovenly\nslovens\nslow\nslowdown\nslowdowns\nslowed\nslower\nslowest\nslowing\nslowish\nslowly\nslowness\nslownesses\nslowpoke\nslowpokes\nslows\nslowworm\nslowworms\nsloyd\nsloyds\nslub\nslubbed\nslubber\nslubbered\nslubbering\nslubbers\nslubbing\nslubbings\nslubs\nsludge\nsludges\nsludgier\nsludgiest\nsludgy\nslue\nslued\nslues\nsluff\nsluffed\nsluffing\nsluffs\nslug\nslugabed\nslugabeds\nslugfest\nslugfests\nsluggard\nsluggardly\nsluggards\nslugged\nslugger\nsluggers\nslugging\nsluggish\nsluggishly\nsluggishness\nslugs\nsluice\nsluiced\nsluices\nsluicing\nsluicy\nsluing\nslum\nslumber\nslumbered\nslumbering\nslumberous\nslumbers\nslumbery\nslumbrous\nslumgum\nslumgums\nslumlord\nslumlords\nslummed\nslummer\nslummers\nslummier\nslummiest\nslumming\nslummy\nslump\nslumped\nslumping\nslumps\nslums\nslung\nslunk\nslur\nslurb\nslurban\nslurbs\nslurp\nslurped\nslurping\nslurps\nslurred\nslurried\nslurries\nslurring\nslurry\nslurrying\nslurs\nslush\nslushed\nslushes\nslushier\nslushiest\nslushily\nslushiness\nslushing\nslushy\nslut\nsluts\nsluttish\nsly\nslyboots\nslyer\nslyest\nslyly\nslyness\nslynesses\nslype\nslypes\nsmack\nsmacked\nsmacker\nsmackers\nsmacking\nsmacks\nsmall\nsmallage\nsmallages\nsmaller\nsmallest\nsmallish\nsmallness\nsmallpox\nsmallpoxes\nsmalls\nsmalt\nsmalti\nsmaltine\nsmaltines\nsmaltite\nsmaltites\nsmalto\nsmaltos\nsmalts\nsmaragd\nsmaragde\nsmaragdes\nsmaragds\nsmarm\nsmarmier\nsmarmiest\nsmarms\nsmarmy\nsmart\nsmarted\nsmarten\nsmartened\nsmartening\nsmartens\nsmarter\nsmartest\nsmartie\nsmarties\nsmarting\nsmartly\nsmartness\nsmarts\nsmarty\nsmash\nsmashed\nsmasher\nsmashers\nsmashes\nsmashing\nsmashup\nsmashups\nsmatter\nsmattered\nsmatterer\nsmatterers\nsmattering\nsmatterings\nsmatters\nsmaze\nsmazes\nsmear\nsmeared\nsmearer\nsmearers\nsmearier\nsmeariest\nsmearing\nsmears\nsmeary\nsmectic\nsmeddum\nsmeddums\nsmeek\nsmeeked\nsmeeking\nsmeeks\nsmegma\nsmegmas\nsmell\nsmelled\nsmeller\nsmellers\nsmellier\nsmelliest\nsmelling\nsmells\nsmelly\nsmelt\nsmelted\nsmelter\nsmelteries\nsmelters\nsmeltery\nsmelting\nsmelts\nsmerk\nsmerked\nsmerking\nsmerks\nsmew\nsmews\nsmidgen\nsmidgens\nsmidgeon\nsmidgeons\nsmidgin\nsmidgins\nsmilax\nsmilaxes\nsmile\nsmiled\nsmileless\nsmiler\nsmilers\nsmiles\nsmiling\nsmilingly\nsmirch\nsmirched\nsmirches\nsmirching\nsmirk\nsmirked\nsmirker\nsmirkers\nsmirkier\nsmirkiest\nsmirking\nsmirks\nsmirky\nsmit\nsmite\nsmiter\nsmiters\nsmites\nsmith\nsmitheries\nsmithery\nsmithies\nsmiths\nsmithy\nsmiting\nsmitten\nsmock\nsmocked\nsmocking\nsmockings\nsmocks\nsmog\nsmoggier\nsmoggiest\nsmoggy\nsmogless\nsmogs\nsmokable\nsmoke\nsmokeable\nsmoked\nsmokeless\nsmokepot\nsmokepots\nsmoker\nsmokers\nsmokes\nsmokestack\nsmokestacks\nsmokey\nsmokier\nsmokiest\nsmokily\nsmoking\nsmoky\nsmolder\nsmoldered\nsmoldering\nsmolders\nsmolt\nsmolts\nsmooch\nsmooched\nsmooches\nsmooching\nsmoochy\nsmooth\nsmoothbore\nsmoothbores\nsmoothed\nsmoothen\nsmoothened\nsmoothening\nsmoothens\nsmoother\nsmoothers\nsmoothest\nsmoothie\nsmoothies\nsmoothing\nsmoothly\nsmoothness\nsmooths\nsmoothy\nsmorgasbord\nsmorgasbords\nsmote\nsmother\nsmothered\nsmothering\nsmothers\nsmothery\nsmoulder\nsmouldered\nsmouldering\nsmoulders\nsmudge\nsmudged\nsmudges\nsmudgier\nsmudgiest\nsmudgily\nsmudging\nsmudgy\nsmug\nsmugger\nsmuggest\nsmuggle\nsmuggled\nsmuggler\nsmugglers\nsmuggles\nsmuggling\nsmugly\nsmugness\nsmugnesses\nsmut\nsmutch\nsmutched\nsmutches\nsmutchier\nsmutchiest\nsmutching\nsmutchy\nsmuts\nsmutted\nsmuttier\nsmuttiest\nsmuttily\nsmutting\nsmutty\nsnack\nsnacked\nsnacking\nsnacks\nsnaffle\nsnaffled\nsnaffles\nsnaffling\nsnafu\nsnafued\nsnafuing\nsnafus\nsnag\nsnagged\nsnaggier\nsnaggiest\nsnagging\nsnaggy\nsnaglike\nsnags\nsnail\nsnailed\nsnailing\nsnaillike\nsnails\nsnake\nsnakebite\nsnakebites\nsnaked\nsnakelike\nsnakes\nsnakeskin\nsnakeskins\nsnakier\nsnakiest\nsnakily\nsnaking\nsnaky\nsnap\nsnapback\nsnapbacks\nsnapless\nsnapped\nsnapper\nsnappers\nsnappier\nsnappiest\nsnappily\nsnapping\nsnappish\nsnappishly\nsnappishness\nsnappy\nsnaps\nsnapshot\nsnapshots\nsnapshotted\nsnapshotting\nsnapweed\nsnapweeds\nsnare\nsnared\nsnarer\nsnarers\nsnares\nsnaring\nsnark\nsnarks\nsnarl\nsnarled\nsnarler\nsnarlers\nsnarlier\nsnarliest\nsnarling\nsnarls\nsnarly\nsnash\nsnashes\nsnatch\nsnatched\nsnatcher\nsnatchers\nsnatches\nsnatchier\nsnatchiest\nsnatching\nsnatchy\nsnath\nsnathe\nsnathes\nsnaths\nsnaw\nsnawed\nsnawing\nsnaws\nsnazzier\nsnazziest\nsnazzy\nsneak\nsneaked\nsneaker\nsneakers\nsneakier\nsneakiest\nsneakily\nsneakiness\nsneaking\nsneakingly\nsneaks\nsneaky\nsneap\nsneaped\nsneaping\nsneaps\nsneck\nsnecks\nsned\nsnedded\nsnedding\nsneds\nsneer\nsneered\nsneerer\nsneerers\nsneerful\nsneering\nsneers\nsneesh\nsneeshes\nsneeze\nsneezed\nsneezer\nsneezers\nsneezes\nsneezier\nsneeziest\nsneezing\nsneezy\nsnell\nsneller\nsnellest\nsnells\nsnib\nsnibbed\nsnibbing\nsnibs\nsnick\nsnicked\nsnicker\nsnickered\nsnickerer\nsnickerers\nsnickering\nsnickers\nsnickery\nsnicking\nsnicks\nsnide\nsnidely\nsnideness\nsnider\nsnidest\nsniff\nsniffed\nsniffer\nsniffers\nsniffier\nsniffiest\nsniffily\nsniffing\nsniffish\nsniffle\nsniffled\nsniffler\nsnifflers\nsniffles\nsniffling\nsniffs\nsniffy\nsnifter\nsnifters\nsnigger\nsniggered\nsniggering\nsniggers\nsniggle\nsniggled\nsniggler\nsnigglers\nsniggles\nsniggling\nsnip\nsnipe\nsniped\nsniper\nsnipers\nsnipes\nsniping\nsnipped\nsnipper\nsnippers\nsnippet\nsnippetier\nsnippetiest\nsnippets\nsnippety\nsnippier\nsnippiest\nsnippily\nsnipping\nsnippy\nsnips\nsnit\nsnitch\nsnitched\nsnitcher\nsnitchers\nsnitches\nsnitching\nsnits\nsnivel\nsniveled\nsniveler\nsnivelers\nsniveling\nsnivelled\nsnivelling\nsnivels\nsnob\nsnobberies\nsnobbery\nsnobbier\nsnobbiest\nsnobbily\nsnobbish\nsnobbishly\nsnobbishness\nsnobbism\nsnobbisms\nsnobby\nsnobs\nsnog\nsnogs\nsnood\nsnooded\nsnooding\nsnoods\nsnook\nsnooked\nsnooker\nsnookers\nsnooking\nsnooks\nsnool\nsnooled\nsnooling\nsnools\nsnoop\nsnooped\nsnooper\nsnoopers\nsnoopier\nsnoopiest\nsnoopily\nsnooping\nsnoops\nsnoopy\nsnoot\nsnooted\nsnootier\nsnootiest\nsnootily\nsnooting\nsnoots\nsnooty\nsnooze\nsnoozed\nsnoozer\nsnoozers\nsnoozes\nsnoozier\nsnooziest\nsnoozing\nsnoozle\nsnoozled\nsnoozles\nsnoozling\nsnoozy\nsnore\nsnored\nsnorer\nsnorers\nsnores\nsnoring\nsnorkel\nsnorkeled\nsnorkeling\nsnorkels\nsnort\nsnorted\nsnorter\nsnorters\nsnorting\nsnorts\nsnot\nsnots\nsnottier\nsnottiest\nsnottily\nsnotty\nsnout\nsnouted\nsnoutier\nsnoutiest\nsnouting\nsnoutish\nsnouts\nsnouty\nsnow\nsnowball\nsnowballed\nsnowballing\nsnowballs\nsnowbank\nsnowbanks\nsnowbell\nsnowbells\nsnowbird\nsnowbirds\nsnowblower\nsnowblowers\nsnowbound\nsnowbush\nsnowbushes\nsnowcap\nsnowcaps\nsnowdrift\nsnowdrifts\nsnowdrop\nsnowdrops\nsnowed\nsnowfall\nsnowfalls\nsnowflake\nsnowflakes\nsnowier\nsnowiest\nsnowily\nsnowiness\nsnowing\nsnowland\nsnowlands\nsnowless\nsnowlike\nsnowman\nsnowmelt\nsnowmelts\nsnowmen\nsnowmobile\nsnowmobiles\nsnowpack\nsnowpacks\nsnowplow\nsnowplowed\nsnowplowing\nsnowplows\nsnows\nsnowshed\nsnowsheds\nsnowshoe\nsnowshoed\nsnowshoeing\nsnowshoes\nsnowstorm\nsnowstorms\nsnowsuit\nsnowsuits\nsnowy\nsnub\nsnubbed\nsnubber\nsnubbers\nsnubbier\nsnubbiest\nsnubbing\nsnubby\nsnubness\nsnubnesses\nsnubs\nsnuck\nsnuff\nsnuffbox\nsnuffboxes\nsnuffed\nsnuffer\nsnuffers\nsnuffier\nsnuffiest\nsnuffily\nsnuffing\nsnuffle\nsnuffled\nsnuffler\nsnufflers\nsnuffles\nsnufflier\nsnuffliest\nsnuffling\nsnuffly\nsnuffs\nsnuffy\nsnug\nsnugged\nsnugger\nsnuggeries\nsnuggery\nsnuggest\nsnugging\nsnuggle\nsnuggled\nsnuggles\nsnuggling\nsnugly\nsnugness\nsnugnesses\nsnugs\nsnye\nsnyes\nso\nsoak\nsoakage\nsoakages\nsoaked\nsoaker\nsoakers\nsoaking\nsoaks\nsoap\nsoapbark\nsoapbarks\nsoapbox\nsoapboxes\nsoaped\nsoapier\nsoapiest\nsoapily\nsoapiness\nsoaping\nsoapless\nsoaplike\nsoaps\nsoapstone\nsoapstones\nsoapsuds\nsoapwort\nsoapworts\nsoapy\nsoar\nsoared\nsoarer\nsoarers\nsoaring\nsoarings\nsoars\nsoave\nsoaves\nsob\nsobbed\nsobber\nsobbers\nsobbing\nsobeit\nsober\nsobered\nsoberer\nsoberest\nsobering\nsoberize\nsoberized\nsoberizes\nsoberizing\nsoberly\nsoberness\nsobers\nsobful\nsobrieties\nsobriety\nsobriquet\nsobriquets\nsobs\nsocage\nsocager\nsocagers\nsocages\nsoccage\nsoccages\nsoccer\nsoccers\nsociability\nsociable\nsociableness\nsociables\nsociably\nsocial\nsocialism\nsocialist\nsocialistic\nsocialistically\nsocialists\nsocialite\nsocialites\nsocialities\nsociality\nsocialization\nsocializations\nsocialize\nsocialized\nsocializer\nsocializers\nsocializes\nsocializing\nsocially\nsocials\nsocietal\nsocietally\nsocieties\nsociety\nsociocultural\nsocioeconomic\nsocioeconomically\nsociological\nsociologically\nsociologist\nsociologists\nsociology\nsociopath\nsociopathic\nsociopaths\nsock\nsocked\nsocket\nsocketed\nsocketing\nsockets\nsockeye\nsockeyes\nsocking\nsockman\nsockmen\nsocko\nsocks\nsocle\nsocles\nsocman\nsocmen\nsod\nsoda\nsodaless\nsodalist\nsodalists\nsodalite\nsodalites\nsodalities\nsodality\nsodamide\nsodamides\nsodas\nsodded\nsodden\nsoddened\nsoddening\nsoddenly\nsoddenness\nsoddens\nsoddies\nsodding\nsoddy\nsodic\nsodium\nsodiums\nsodom\nsodomies\nsodomite\nsodomites\nsodomitic\nsodomitical\nsodomy\nsods\nsoever\nsofa\nsofar\nsofars\nsofas\nsoffit\nsoffits\nsoft\nsofta\nsoftas\nsoftback\nsoftbacks\nsoftball\nsoftballs\nsoften\nsoftened\nsoftener\nsofteners\nsoftening\nsoftens\nsofter\nsoftest\nsofthead\nsoftheads\nsofthearted\nsoftheartedly\nsoftheartedness\nsoftie\nsofties\nsoftly\nsoftness\nsoftnesses\nsofts\nsoftware\nsoftwares\nsoftwood\nsoftwoods\nsofty\nsogged\nsoggier\nsoggiest\nsoggily\nsogginess\nsoggy\nsoigne\nsoignee\nsoil\nsoilage\nsoilages\nsoiled\nsoiling\nsoilless\nsoils\nsoilure\nsoilures\nsoiree\nsoirees\nsoja\nsojas\nsojourn\nsojourned\nsojourner\nsojourners\nsojourning\nsojourns\nsoke\nsokeman\nsokemen\nsokes\nsokol\nsol\nsola\nsolace\nsolaced\nsolacement\nsolacements\nsolacer\nsolacers\nsolaces\nsolacing\nsolan\nsoland\nsolander\nsolanders\nsolands\nsolanin\nsolanine\nsolanines\nsolanins\nsolano\nsolanos\nsolans\nsolanum\nsolanums\nsolar\nsolaria\nsolarise\nsolarised\nsolarises\nsolarising\nsolarism\nsolarisms\nsolarium\nsolariums\nsolarization\nsolarizations\nsolarize\nsolarized\nsolarizes\nsolarizing\nsolate\nsolated\nsolates\nsolatia\nsolating\nsolation\nsolations\nsolatium\nsold\nsoldan\nsoldans\nsolder\nsoldered\nsolderer\nsolderers\nsoldering\nsolders\nsoldi\nsoldier\nsoldiered\nsoldieries\nsoldiering\nsoldierly\nsoldiers\nsoldiery\nsoldo\nsole\nsolecise\nsolecised\nsolecises\nsolecising\nsolecism\nsolecisms\nsolecist\nsolecistic\nsolecists\nsolecize\nsolecized\nsolecizes\nsolecizing\nsoled\nsolei\nsoleless\nsolely\nsolemn\nsolemner\nsolemnest\nsolemnified\nsolemnifies\nsolemnify\nsolemnifying\nsolemnities\nsolemnity\nsolemnization\nsolemnizations\nsolemnize\nsolemnized\nsolemnizes\nsolemnizing\nsolemnly\nsolemnness\nsoleness\nsolenesses\nsolenoid\nsolenoidal\nsolenoids\nsoleret\nsolerets\nsoles\nsolfege\nsolfeges\nsolfeggi\nsolgel\nsoli\nsolicit\nsolicitation\nsolicitations\nsolicited\nsoliciting\nsolicitor\nsolicitors\nsolicitorship\nsolicitous\nsolicitously\nsolicitousness\nsolicits\nsolicitude\nsolicitudes\nsolid\nsolidago\nsolidagos\nsolidarities\nsolidarity\nsolidary\nsolider\nsolidest\nsolidi\nsolidification\nsolidifications\nsolidified\nsolidifies\nsolidify\nsolidifying\nsolidities\nsolidity\nsolidly\nsolidness\nsolids\nsolidus\nsoliloquies\nsoliloquist\nsoliloquists\nsoliloquize\nsoliloquized\nsoliloquizer\nsoliloquizers\nsoliloquizes\nsoliloquizing\nsoliloquy\nsoling\nsolion\nsolions\nsolipsism\nsolipsisms\nsolipsist\nsolipsistic\nsolipsists\nsoliquid\nsoliquids\nsolitaire\nsolitaires\nsolitaries\nsolitarily\nsolitariness\nsolitary\nsolitude\nsolitudes\nsolleret\nsollerets\nsolo\nsoloed\nsoloing\nsoloist\nsoloists\nsolon\nsolonets\nsolonetses\nsolonetz\nsolonetzes\nsolons\nsolos\nsols\nsolstice\nsolstices\nsolubilities\nsolubility\nsoluble\nsolubles\nsolubly\nsolum\nsolums\nsolus\nsolute\nsolutes\nsolution\nsolutions\nsolvability\nsolvable\nsolvate\nsolvated\nsolvates\nsolvating\nsolve\nsolved\nsolvencies\nsolvency\nsolvent\nsolvently\nsolvents\nsolver\nsolvers\nsolves\nsolving\nsoma\nsomas\nsomata\nsomatic\nsomatically\nsomber\nsomberly\nsomberness\nsombre\nsombrely\nsombrero\nsombreros\nsombrous\nsome\nsomebodies\nsomebody\nsomeday\nsomedeal\nsomehow\nsomeone\nsomeones\nsomeplace\nsomersault\nsomersaulted\nsomersaulting\nsomersaults\nsomerset\nsomerseted\nsomerseting\nsomersets\nsomersetted\nsomersetting\nsomething\nsomethings\nsometime\nsometimes\nsomeway\nsomeways\nsomewhat\nsomewhats\nsomewhen\nsomewhere\nsomewise\nsomital\nsomite\nsomites\nsomitic\nsomnambulate\nsomnambulated\nsomnambulates\nsomnambulating\nsomnambulation\nsomnambulations\nsomnambulist\nsomnambulistic\nsomnambulists\nsomnolence\nsomnolency\nsomnolent\nsomnolently\nson\nsonance\nsonances\nsonant\nsonantal\nsonantic\nsonants\nsonar\nsonarman\nsonarmen\nsonars\nsonata\nsonatas\nsonatina\nsonatinas\nsonatine\nsonde\nsonder\nsonders\nsondes\nsone\nsones\nsong\nsongbird\nsongbirds\nsongbook\nsongbooks\nsongfest\nsongfests\nsongful\nsongfully\nsongfulness\nsongless\nsonglessly\nsonglike\nsongs\nsongster\nsongsters\nsongstress\nsongstresses\nsonic\nsonicate\nsonicated\nsonicates\nsonicating\nsonics\nsonless\nsonlike\nsonly\nsonnet\nsonneted\nsonneteer\nsonneteers\nsonneting\nsonnetize\nsonnetized\nsonnetizes\nsonnetizing\nsonnets\nsonnetted\nsonnetting\nsonnies\nsonny\nsonorant\nsonorants\nsonorities\nsonority\nsonorous\nsonorously\nsonorousness\nsonovox\nsonovoxes\nsons\nsonship\nsonships\nsonsie\nsonsier\nsonsiest\nsonsy\nsoochong\nsoochongs\nsooey\nsook\nsooks\nsoon\nsooner\nsooners\nsoonest\nsoot\nsooted\nsooth\nsoothe\nsoothed\nsoother\nsoothers\nsoothes\nsoothest\nsoothing\nsoothingly\nsoothingness\nsoothly\nsooths\nsoothsaid\nsoothsay\nsoothsayer\nsoothsayers\nsoothsaying\nsoothsays\nsootier\nsootiest\nsootily\nsootiness\nsooting\nsoots\nsooty\nsop\nsoph\nsophies\nsophism\nsophisms\nsophist\nsophistic\nsophistical\nsophistically\nsophisticate\nsophisticated\nsophisticatedly\nsophisticates\nsophisticating\nsophistication\nsophistries\nsophistry\nsophists\nsophomore\nsophomores\nsophomoric\nsophs\nsophy\nsopite\nsopited\nsopites\nsopiting\nsopor\nsoporiferous\nsoporiferousness\nsoporific\nsoporifics\nsopors\nsopped\nsoppier\nsoppiest\nsopping\nsoppy\nsoprani\nsoprano\nsopranos\nsops\nsora\nsoras\nsorb\nsorbable\nsorbate\nsorbates\nsorbed\nsorbent\nsorbents\nsorbet\nsorbets\nsorbic\nsorbing\nsorbitol\nsorbitols\nsorbose\nsorboses\nsorbs\nsorcerer\nsorcerers\nsorceress\nsorceresses\nsorceries\nsorcerous\nsorcery\nsord\nsordid\nsordidly\nsordidness\nsordine\nsordines\nsordini\nsordino\nsords\nsore\nsorehead\nsoreheaded\nsoreheads\nsorel\nsorels\nsorely\nsoreness\nsorenesses\nsorer\nsores\nsorest\nsorgho\nsorghos\nsorghum\nsorghums\nsorgo\nsorgos\nsori\nsoricine\nsorites\nsoritic\nsorn\nsorned\nsorner\nsorners\nsorning\nsorns\nsoroche\nsoroches\nsororal\nsororate\nsororates\nsororities\nsorority\nsoroses\nsorosis\nsorosises\nsorption\nsorptions\nsorptive\nsorrel\nsorrels\nsorrier\nsorriest\nsorrily\nsorriness\nsorrow\nsorrowed\nsorrower\nsorrowers\nsorrowful\nsorrowfully\nsorrowfulness\nsorrowing\nsorrows\nsorry\nsort\nsortable\nsortably\nsorted\nsorter\nsorters\nsortie\nsortied\nsortieing\nsorties\nsorting\nsorts\nsorus\nsos\nsot\nsoth\nsoths\nsotol\nsotols\nsots\nsottish\nsou\nsouari\nsouaris\nsoubise\nsoubises\nsoubrette\nsoubrettes\nsoucar\nsoucars\nsouchong\nsouchongs\nsoudan\nsoudans\nsouffle\nsouffleed\nsouffles\nsough\nsoughed\nsoughing\nsoughs\nsought\nsouk\nsouks\nsoul\nsouled\nsoulful\nsoulfully\nsoulfulness\nsoulless\nsoullessly\nsoullessness\nsoullike\nsouls\nsound\nsoundable\nsoundbox\nsoundboxes\nsounded\nsounder\nsounders\nsoundest\nsounding\nsoundingly\nsoundings\nsoundless\nsoundlessly\nsoundly\nsoundness\nsoundproof\nsoundproofed\nsoundproofing\nsoundproofs\nsounds\nsoup\nsoupcon\nsoupcons\nsouped\nsoupier\nsoupiest\nsouping\nsoups\nsoupy\nsour\nsourball\nsourballs\nsource\nsourceless\nsources\nsourdine\nsourdines\nsourdough\nsourdoughs\nsoured\nsourer\nsourest\nsouring\nsourish\nsourly\nsourness\nsournesses\nsourpuss\nsourpusses\nsours\nsoursop\nsoursops\nsourwood\nsourwoods\nsous\nsousaphone\nsousaphones\nsouse\nsoused\nsouses\nsousing\nsoutache\nsoutaches\nsoutane\nsoutanes\nsouter\nsouters\nsouth\nsoutheast\nsoutheaster\nsoutheasterly\nsoutheastern\nsoutheasters\nsoutheastward\nsoutheastwards\nsouthed\nsouther\nsoutherlies\nsoutherly\nsouthern\nsouthernmost\nsoutherns\nsouthers\nsouthing\nsouthings\nsouthpaw\nsouthpaws\nsouthron\nsouthrons\nsouths\nsouthward\nsouthwards\nsouthwest\nsouthwester\nsouthwesterly\nsouthwestern\nsouthwesters\nsouthwestward\nsouthwestwards\nsouvenir\nsouvenirs\nsovereign\nsovereignly\nsovereigns\nsovereignties\nsovereignty\nsoviet\nsovietism\nsovietisms\nsovietization\nsovietizations\nsovietize\nsovietized\nsovietizes\nsovietizing\nsoviets\nsovkhoz\nsovkhozes\nsovkhozy\nsovran\nsovranly\nsovrans\nsovranties\nsovranty\nsow\nsowable\nsowans\nsowar\nsowars\nsowbellies\nsowbelly\nsowbread\nsowbreads\nsowcar\nsowcars\nsowed\nsowens\nsower\nsowers\nsowing\nsown\nsows\nsox\nsoy\nsoya\nsoyas\nsoybean\nsoybeans\nsoys\nsoyuz\nsozin\nsozine\nsozines\nsozins\nspa\nspace\nspacecraft\nspacecrafts\nspaced\nspaceflight\nspaceflights\nspaceman\nspacemen\nspaceport\nspaceports\nspacer\nspacers\nspaces\nspaceship\nspaceships\nspacial\nspacing\nspacings\nspacious\nspaciously\nspaciousness\nspackling\nspacy\nspade\nspaded\nspadeful\nspadefuls\nspadelike\nspader\nspaders\nspades\nspadework\nspadices\nspadille\nspadilles\nspading\nspadix\nspado\nspadones\nspae\nspaed\nspaeing\nspaeings\nspaes\nspaghetti\nspaghettis\nspagyric\nspagyrics\nspahee\nspahees\nspahi\nspahis\nspail\nspails\nspait\nspaits\nspake\nspale\nspales\nspall\nspalled\nspaller\nspallers\nspalling\nspalls\nspalpeen\nspalpeens\nspan\nspancel\nspanceled\nspanceling\nspancelled\nspancelling\nspancels\nspandrel\nspandrels\nspandril\nspandrils\nspang\nspangle\nspangled\nspangles\nspanglier\nspangliest\nspangling\nspangly\nspaniel\nspaniels\nspank\nspanked\nspanker\nspankers\nspanking\nspankings\nspanks\nspanless\nspanned\nspanner\nspanners\nspanning\nspans\nspanworm\nspanworms\nspar\nsparable\nsparables\nspare\nspareable\nspared\nsparely\nspareness\nsparer\nsparerib\nspareribs\nsparers\nspares\nsparest\nsparge\nsparged\nsparger\nspargers\nsparges\nsparging\nsparid\nsparids\nsparing\nsparingly\nspark\nsparked\nsparker\nsparkers\nsparkier\nsparkiest\nsparkily\nsparking\nsparkish\nsparkle\nsparkled\nsparkler\nsparklers\nsparkles\nsparkling\nsparks\nsparky\nsparlike\nsparling\nsparlings\nsparoid\nsparoids\nsparred\nsparrier\nsparriest\nsparring\nsparrow\nsparrowlike\nsparrows\nsparry\nspars\nsparse\nsparsely\nsparseness\nsparser\nsparsest\nsparsities\nsparsity\nspas\nspasm\nspasmodic\nspasmodically\nspasms\nspastic\nspastically\nspastics\nspat\nspate\nspates\nspathal\nspathe\nspathed\nspathes\nspathic\nspathose\nspatial\nspatiality\nspatially\nspats\nspatted\nspatter\nspattered\nspattering\nspatters\nspatting\nspatula\nspatular\nspatulas\nspavie\nspavies\nspaviet\nspavin\nspavined\nspavins\nspawn\nspawned\nspawner\nspawners\nspawning\nspawns\nspay\nspayed\nspaying\nspays\nspaz\nspeak\nspeakable\nspeakeasies\nspeakeasy\nspeaker\nspeakers\nspeaking\nspeakings\nspeaks\nspean\nspeaned\nspeaning\nspeans\nspear\nspeared\nspearer\nspearers\nspearhead\nspearheaded\nspearheading\nspearheads\nspearing\nspearman\nspearmen\nspearmint\nspearmints\nspears\nspec\nspecial\nspecialer\nspecialest\nspecialism\nspecialist\nspecialists\nspecialities\nspeciality\nspecialization\nspecializations\nspecialize\nspecialized\nspecializes\nspecializing\nspecially\nspecials\nspecialties\nspecialty\nspeciate\nspeciated\nspeciates\nspeciating\nspecie\nspecies\nspecifiable\nspecific\nspecifically\nspecification\nspecifications\nspecificities\nspecificity\nspecifics\nspecified\nspecifier\nspecifiers\nspecifies\nspecify\nspecifying\nspecimen\nspecimens\nspeciosities\nspeciosity\nspecious\nspeciously\nspeciousness\nspeck\nspecked\nspecking\nspeckle\nspeckled\nspeckles\nspeckling\nspecks\nspecs\nspectacle\nspectacled\nspectacles\nspectacular\nspectacularly\nspectaculars\nspectate\nspectated\nspectates\nspectating\nspectator\nspectators\nspecter\nspecters\nspectra\nspectral\nspectrally\nspectre\nspectres\nspectrometer\nspectrometers\nspectrometric\nspectrometry\nspectroscope\nspectroscopes\nspectroscopic\nspectroscopically\nspectroscopist\nspectroscopists\nspectroscopy\nspectrum\nspectrums\nspecula\nspecular\nspeculate\nspeculated\nspeculates\nspeculating\nspeculation\nspeculations\nspeculative\nspeculatively\nspeculator\nspeculators\nspeculum\nspeculums\nsped\nspeech\nspeeches\nspeechified\nspeechifies\nspeechify\nspeechifying\nspeechless\nspeechlessly\nspeechlessness\nspeed\nspeedboat\nspeedboats\nspeeded\nspeeder\nspeeders\nspeedier\nspeediest\nspeedily\nspeediness\nspeeding\nspeedings\nspeedometer\nspeedometers\nspeeds\nspeedster\nspeedsters\nspeedup\nspeedups\nspeedway\nspeedways\nspeedy\nspeel\nspeeled\nspeeling\nspeels\nspeer\nspeered\nspeering\nspeerings\nspeers\nspeil\nspeiled\nspeiling\nspeils\nspeir\nspeired\nspeiring\nspeirs\nspeise\nspeises\nspeiss\nspeisses\nspelaean\nspelean\nspell\nspellbind\nspellbinder\nspellbinders\nspellbinding\nspellbinds\nspellbound\nspelled\nspeller\nspellers\nspelling\nspellings\nspells\nspelt\nspelter\nspelters\nspelts\nspeltz\nspeltzes\nspelunk\nspelunked\nspelunker\nspelunkers\nspelunking\nspelunks\nspence\nspencer\nspencers\nspences\nspend\nspendable\nspender\nspenders\nspending\nspends\nspendthrift\nspendthrifts\nspent\nsperm\nspermaries\nspermary\nspermatic\nspermic\nspermine\nspermines\nspermous\nsperms\nspew\nspewed\nspewer\nspewers\nspewing\nspews\nsphagnum\nsphagnums\nsphene\nsphenes\nsphenic\nsphenoid\nsphenoidal\nsphenoids\nspheral\nsphere\nsphered\nspheres\nspheric\nspherical\nspherically\nsphericity\nspherics\nspherier\nspheriest\nsphering\nspheroid\nspheroidal\nspheroidally\nspheroids\nspherule\nspherules\nsphery\nsphincter\nsphincteral\nsphincters\nsphinges\nsphingid\nsphingids\nsphinx\nsphinxes\nsphygmic\nsphygmograph\nsphygmographic\nsphygmographs\nsphygmography\nsphygmomanometer\nsphygmomanometers\nsphygmus\nsphygmuses\nspic\nspica\nspicae\nspicas\nspicate\nspicated\nspiccato\nspiccatos\nspice\nspiced\nspicer\nspiceries\nspicers\nspicery\nspices\nspicey\nspicier\nspiciest\nspicily\nspicing\nspick\nspicks\nspics\nspicula\nspiculae\nspicular\nspicule\nspicules\nspiculum\nspicy\nspider\nspiderier\nspideriest\nspiders\nspidery\nspied\nspiegel\nspiegels\nspiel\nspieled\nspieler\nspielers\nspieling\nspiels\nspier\nspiered\nspiering\nspiers\nspies\nspiff\nspiffier\nspiffiest\nspiffily\nspiffing\nspiffy\nspigot\nspigots\nspik\nspike\nspiked\nspikelet\nspikelets\nspiker\nspikers\nspikes\nspikier\nspikiest\nspikily\nspiking\nspiks\nspiky\nspile\nspiled\nspiles\nspilikin\nspilikins\nspiling\nspilings\nspill\nspillage\nspillages\nspilled\nspiller\nspillers\nspilling\nspills\nspillway\nspillways\nspilt\nspilth\nspilths\nspin\nspinach\nspinaches\nspinage\nspinages\nspinal\nspinally\nspinals\nspinate\nspindle\nspindled\nspindler\nspindlers\nspindles\nspindlier\nspindliest\nspindling\nspindly\nspindrift\nspindrifts\nspine\nspined\nspinel\nspineless\nspinelle\nspinelles\nspinels\nspines\nspinet\nspinets\nspinier\nspiniest\nspinifex\nspinifexes\nspininess\nspinless\nspinnaker\nspinnakers\nspinner\nspinneries\nspinners\nspinnery\nspinney\nspinneys\nspinnies\nspinning\nspinnings\nspinny\nspinoff\nspinoffs\nspinor\nspinors\nspinose\nspinous\nspinout\nspinouts\nspins\nspinster\nspinsterhood\nspinsterish\nspinsters\nspinula\nspinulae\nspinule\nspinules\nspiny\nspiracle\nspiracles\nspiraea\nspiraeas\nspiral\nspiraled\nspiraling\nspiralled\nspiralling\nspirally\nspirals\nspirant\nspirants\nspire\nspirea\nspireas\nspired\nspirem\nspireme\nspiremes\nspirems\nspires\nspirilla\nspiring\nspirit\nspirited\nspiritedly\nspiriting\nspiritism\nspiritist\nspiritists\nspiritless\nspiritlessly\nspirits\nspiritual\nspiritualism\nspiritualist\nspiritualistic\nspiritualists\nspiritualities\nspirituality\nspiritualization\nspiritualizations\nspiritualize\nspiritualized\nspiritualizes\nspiritualizing\nspiritually\nspiritualness\nspirituals\nspirituel\nspirituelle\nspirituous\nspirochetal\nspirochete\nspirochetes\nspiroid\nspirt\nspirted\nspirting\nspirts\nspirula\nspirulae\nspirulas\nspiry\nspit\nspital\nspitals\nspitball\nspitballs\nspite\nspited\nspiteful\nspitefuller\nspitefullest\nspitefully\nspitefulness\nspites\nspitfire\nspitfires\nspiting\nspits\nspitted\nspitter\nspitters\nspitting\nspittle\nspittles\nspittoon\nspittoons\nspitz\nspitzes\nspiv\nspivs\nsplake\nsplakes\nsplash\nsplashdown\nsplashdowns\nsplashed\nsplasher\nsplashers\nsplashes\nsplashier\nsplashiest\nsplashiness\nsplashing\nsplashy\nsplat\nsplats\nsplatter\nsplattered\nsplattering\nsplatters\nsplay\nsplayed\nsplayfoot\nsplayfooted\nsplaying\nsplays\nspleen\nspleenful\nspleenier\nspleeniest\nspleens\nspleeny\nsplendid\nsplendider\nsplendidest\nsplendidly\nsplendidness\nsplendiferous\nsplendiferously\nsplendiferousness\nsplendor\nsplendorous\nsplendors\nsplenetic\nsplenetically\nsplenia\nsplenial\nsplenic\nsplenii\nsplenium\nsplenius\nsplent\nsplents\nsplice\nspliced\nsplicer\nsplicers\nsplices\nsplicing\nspline\nsplined\nsplines\nsplining\nsplint\nsplinted\nsplinter\nsplintered\nsplintering\nsplinters\nsplintery\nsplinting\nsplints\nsplit\nsplits\nsplitter\nsplitters\nsplitting\nsplore\nsplores\nsplosh\nsploshed\nsploshes\nsploshing\nsplotch\nsplotched\nsplotches\nsplotchier\nsplotchiest\nsplotching\nsplotchy\nsplurge\nsplurged\nsplurges\nsplurgier\nsplurgiest\nsplurging\nsplurgy\nsplutter\nspluttered\nspluttering\nsplutters\nspode\nspodes\nspoil\nspoilage\nspoilages\nspoiled\nspoiler\nspoilers\nspoiling\nspoils\nspoilsport\nspoilsports\nspoilt\nspoke\nspoked\nspoken\nspokes\nspokeshave\nspokeshaves\nspokesman\nspokesmen\nspokesperson\nspokespersons\nspokeswoman\nspokeswomen\nspoking\nspoliate\nspoliated\nspoliates\nspoliating\nspoliation\nspoliations\nspoliator\nspoliators\nspondaic\nspondaics\nspondee\nspondees\nsponge\nsponged\nsponger\nspongers\nsponges\nspongier\nspongiest\nspongily\nspongin\nsponging\nspongins\nspongy\nsponsal\nsponsion\nsponsions\nsponson\nsponsons\nsponsor\nsponsored\nsponsorial\nsponsoring\nsponsors\nsponsorship\nsponsorships\nspontaneity\nspontaneous\nspontaneously\nspontaneousness\nspontoon\nspontoons\nspoof\nspoofed\nspoofing\nspoofs\nspook\nspooked\nspookier\nspookiest\nspookily\nspooking\nspookish\nspooks\nspooky\nspool\nspooled\nspooling\nspools\nspoon\nspooned\nspoonerism\nspoonerisms\nspooney\nspooneys\nspoonful\nspoonfuls\nspoonier\nspoonies\nspooniest\nspoonily\nspooning\nspoons\nspoonsful\nspoony\nspoor\nspoored\nspooring\nspoors\nsporadic\nsporadically\nsporal\nspore\nspored\nspores\nsporing\nsporoid\nsporran\nsporrans\nsport\nsported\nsporter\nsporters\nsportful\nsportier\nsportiest\nsportily\nsportiness\nsporting\nsportive\nsportively\nsports\nsportscast\nsportscaster\nsportscasters\nsportscasts\nsportsman\nsportsmanlike\nsportsmanly\nsportsmanship\nsportsmen\nsportswear\nsportswoman\nsportswomen\nsportswriter\nsportswriters\nsporty\nsporular\nsporule\nsporules\nspot\nspotless\nspotlessly\nspotlessness\nspotlight\nspotlighted\nspotlighting\nspotlights\nspots\nspotted\nspotter\nspotters\nspottier\nspottiest\nspottily\nspotting\nspotty\nspousal\nspousals\nspouse\nspoused\nspouses\nspousing\nspout\nspouted\nspouter\nspouters\nspouting\nspouts\nspraddle\nspraddled\nspraddles\nspraddling\nsprag\nsprags\nsprain\nsprained\nspraining\nsprains\nsprang\nsprat\nsprats\nsprattle\nsprattled\nsprattles\nsprattling\nsprawl\nsprawled\nsprawler\nsprawlers\nsprawlier\nsprawliest\nsprawling\nsprawls\nsprawly\nspray\nsprayed\nsprayer\nsprayers\nspraying\nsprays\nspread\nspreadable\nspreader\nspreaders\nspreading\nspreads\nspreadsheet\nspreadsheets\nspree\nsprees\nsprent\nsprier\nspriest\nsprig\nsprigged\nsprigger\nspriggers\nspriggier\nspriggiest\nsprigging\nspriggy\nspright\nsprightlier\nsprightliest\nsprightliness\nsprightly\nsprights\nsprigs\nspring\nspringal\nspringals\nspringboard\nspringboards\nspringe\nspringed\nspringeing\nspringer\nspringers\nspringes\nspringier\nspringiest\nspringiness\nspringing\nspringings\nsprings\nspringtime\nspringtimes\nspringy\nsprinkle\nsprinkled\nsprinkler\nsprinklers\nsprinkles\nsprinkling\nsprinklings\nsprint\nsprinted\nsprinter\nsprinters\nsprinting\nsprints\nsprit\nsprite\nsprites\nsprits\nsprocket\nsprockets\nsprout\nsprouted\nsprouting\nsprouts\nspruce\nspruced\nsprucely\nsprucer\nspruces\nsprucest\nsprucier\nspruciest\nsprucing\nsprucy\nsprue\nsprues\nsprug\nsprugs\nsprung\nspry\nspryer\nspryest\nspryly\nspryness\nsprynesses\nspud\nspudded\nspudder\nspudders\nspudding\nspuds\nspue\nspued\nspues\nspuing\nspume\nspumed\nspumes\nspumier\nspumiest\nspuming\nspumone\nspumones\nspumoni\nspumonis\nspumous\nspumy\nspun\nspunk\nspunked\nspunkie\nspunkier\nspunkies\nspunkiest\nspunkily\nspunking\nspunks\nspunky\nspur\nspurgall\nspurgalled\nspurgalling\nspurgalls\nspurge\nspurges\nspurious\nspuriously\nspurn\nspurned\nspurner\nspurners\nspurning\nspurns\nspurred\nspurrer\nspurrers\nspurrey\nspurreys\nspurrier\nspurriers\nspurries\nspurring\nspurry\nspurs\nspurt\nspurted\nspurting\nspurtle\nspurtles\nspurts\nsputa\nsputnik\nsputniks\nsputter\nsputtered\nsputtering\nsputters\nsputum\nspy\nspyglass\nspyglasses\nspying\nsquab\nsquabbier\nsquabbiest\nsquabble\nsquabbled\nsquabbles\nsquabbling\nsquabby\nsquabs\nsquad\nsquadded\nsquadding\nsquadron\nsquadroned\nsquadroning\nsquadrons\nsquads\nsqualene\nsqualenes\nsqualid\nsqualider\nsqualidest\nsqualidly\nsquall\nsqualled\nsqualler\nsquallers\nsquallier\nsqualliest\nsqualling\nsqualls\nsqually\nsqualor\nsqualors\nsquama\nsquamae\nsquamate\nsquamose\nsquamous\nsquander\nsquandered\nsquandering\nsquanders\nsquare\nsquared\nsquarely\nsquarer\nsquarers\nsquares\nsquarest\nsquaring\nsquarish\nsquarishly\nsquash\nsquashed\nsquasher\nsquashers\nsquashes\nsquashier\nsquashiest\nsquashily\nsquashiness\nsquashing\nsquashy\nsquat\nsquatly\nsquats\nsquatted\nsquatter\nsquattered\nsquattering\nsquatters\nsquattest\nsquattier\nsquattiest\nsquatting\nsquatty\nsquaw\nsquawk\nsquawked\nsquawker\nsquawkers\nsquawking\nsquawks\nsquaws\nsqueak\nsqueaked\nsqueaker\nsqueakers\nsqueakier\nsqueakiest\nsqueaking\nsqueaks\nsqueaky\nsqueal\nsquealed\nsquealer\nsquealers\nsquealing\nsqueals\nsqueamish\nsqueamishly\nsqueegee\nsqueegeed\nsqueegeeing\nsqueegees\nsqueezability\nsqueezable\nsqueeze\nsqueezed\nsqueezer\nsqueezers\nsqueezes\nsqueezing\nsqueg\nsquegged\nsquegging\nsquegs\nsquelch\nsquelched\nsquelches\nsquelchier\nsquelchiest\nsquelching\nsquelchy\nsquib\nsquibbed\nsquibbing\nsquibs\nsquid\nsquidded\nsquidding\nsquids\nsquiffed\nsquiffy\nsquiggle\nsquiggled\nsquiggles\nsquigglier\nsquiggliest\nsquiggling\nsquiggly\nsquilgee\nsquilgeed\nsquilgeeing\nsquilgees\nsquill\nsquilla\nsquillae\nsquillas\nsquills\nsquinch\nsquinched\nsquinches\nsquinching\nsquinnied\nsquinnier\nsquinnies\nsquinniest\nsquinny\nsquinnying\nsquint\nsquinted\nsquinter\nsquinters\nsquintest\nsquintier\nsquintiest\nsquinting\nsquintingly\nsquints\nsquinty\nsquire\nsquired\nsquireen\nsquireens\nsquires\nsquiring\nsquirish\nsquirm\nsquirmed\nsquirmer\nsquirmers\nsquirmier\nsquirmiest\nsquirming\nsquirms\nsquirmy\nsquirrel\nsquirreled\nsquirreling\nsquirrelled\nsquirrelling\nsquirrels\nsquirt\nsquirted\nsquirter\nsquirters\nsquirting\nsquirts\nsquish\nsquished\nsquishes\nsquishier\nsquishiest\nsquishing\nsquishy\nsquoosh\nsquooshed\nsquooshes\nsquooshing\nsqureling\nsquush\nsquushed\nsquushes\nsquushing\nsraddha\nsraddhas\nsradha\nsradhas\nsri\nsris\nstab\nstabbed\nstabber\nstabbers\nstabbing\nstabbings\nstabile\nstabiles\nstabilities\nstability\nstabilization\nstabilize\nstabilized\nstabilizer\nstabilizers\nstabilizes\nstabilizing\nstable\nstabled\nstabler\nstablers\nstables\nstablest\nstabling\nstablings\nstablish\nstablished\nstablishes\nstablishing\nstably\nstabs\nstaccati\nstaccato\nstaccatos\nstack\nstacked\nstacker\nstackers\nstacking\nstacks\nstacte\nstactes\nstaddle\nstaddles\nstade\nstades\nstadia\nstadias\nstadium\nstadiums\nstaff\nstaffed\nstaffer\nstaffers\nstaffing\nstaffs\nstag\nstage\nstagecoach\nstagecoaches\nstagecraft\nstaged\nstagehand\nstagehands\nstager\nstagers\nstages\nstagey\nstaggard\nstaggards\nstaggart\nstaggarts\nstagged\nstagger\nstaggered\nstaggering\nstaggeringly\nstaggers\nstaggery\nstaggie\nstaggier\nstaggies\nstaggiest\nstagging\nstaggy\nstagier\nstagiest\nstagily\nstaginess\nstaging\nstagings\nstagnancy\nstagnant\nstagnate\nstagnated\nstagnates\nstagnating\nstagnation\nstagnations\nstags\nstagy\nstaid\nstaider\nstaidest\nstaidly\nstaig\nstaigs\nstain\nstainability\nstainable\nstained\nstainer\nstainers\nstaining\nstainless\nstains\nstair\nstaircase\nstaircases\nstairs\nstairway\nstairways\nstairwell\nstairwells\nstake\nstaked\nstakeholder\nstakeholders\nstakeout\nstakeouts\nstakes\nstaking\nstalactite\nstalactites\nstalag\nstalagmite\nstalagmites\nstalags\nstale\nstaled\nstalely\nstalemate\nstalemated\nstalemates\nstalemating\nstaler\nstales\nstalest\nstaling\nstalk\nstalked\nstalker\nstalkers\nstalkier\nstalkiest\nstalkily\nstalking\nstalkless\nstalks\nstalky\nstall\nstalled\nstalling\nstallion\nstallions\nstalls\nstalwart\nstalwarts\nstamen\nstamens\nstamina\nstaminal\nstaminas\nstammel\nstammels\nstammer\nstammered\nstammerer\nstammerers\nstammering\nstammers\nstamp\nstamped\nstampede\nstampeded\nstampedes\nstampeding\nstamper\nstampers\nstamping\nstamps\nstance\nstances\nstanch\nstanched\nstancher\nstanchers\nstanches\nstanchest\nstanching\nstanchion\nstanchions\nstanchly\nstand\nstandard\nstandardization\nstandardizations\nstandardize\nstandardized\nstandardizes\nstandardizing\nstandards\nstandby\nstandbys\nstandee\nstandees\nstander\nstanders\nstanding\nstandings\nstandish\nstandishes\nstandoff\nstandoffish\nstandoffs\nstandout\nstandouts\nstandpat\nstandpoint\nstandpoints\nstands\nstandstill\nstandstills\nstandup\nstane\nstaned\nstanes\nstang\nstanged\nstanging\nstangs\nstanhope\nstanhopes\nstaning\nstank\nstanks\nstannaries\nstannary\nstannic\nstannite\nstannites\nstannous\nstannum\nstannums\nstanza\nstanzaed\nstanzaic\nstanzas\nstapedes\nstapelia\nstapelias\nstapes\nstaph\nstaphs\nstaple\nstapled\nstapler\nstaplers\nstaples\nstapling\nstar\nstarboard\nstarch\nstarched\nstarches\nstarchier\nstarchiest\nstarchily\nstarchiness\nstarching\nstarchy\nstardom\nstardoms\nstardust\nstardusts\nstare\nstared\nstarer\nstarers\nstares\nstarets\nstarfish\nstarfishes\nstargaze\nstargazed\nstargazer\nstargazers\nstargazes\nstargazing\nstaring\nstark\nstarker\nstarkest\nstarkly\nstarkness\nstarless\nstarlet\nstarlets\nstarlight\nstarlike\nstarling\nstarlings\nstarlit\nstarnose\nstarnoses\nstarred\nstarrier\nstarriest\nstarring\nstarry\nstars\nstart\nstarted\nstarter\nstarters\nstarting\nstartle\nstartled\nstartler\nstartlers\nstartles\nstartling\nstartlingly\nstarts\nstartsy\nstarvation\nstarve\nstarved\nstarver\nstarvers\nstarves\nstarving\nstarwort\nstarworts\nstases\nstash\nstashed\nstashes\nstashing\nstasima\nstasimon\nstasis\nstat\nstatable\nstatal\nstatant\nstate\nstatecraft\nstated\nstatedly\nstatehood\nstatehoods\nstatehouse\nstatehouses\nstateless\nstatelier\nstateliest\nstateliness\nstately\nstatement\nstatements\nstater\nstateroom\nstaterooms\nstaters\nstates\nstateside\nstatesman\nstatesmanlike\nstatesmanly\nstatesmanship\nstatesmen\nstatewide\nstatic\nstatical\nstatically\nstatice\nstatices\nstatics\nstating\nstation\nstational\nstationary\nstationed\nstationer\nstationers\nstationery\nstationing\nstations\nstatism\nstatisms\nstatist\nstatistic\nstatistical\nstatistically\nstatistician\nstatisticians\nstatistics\nstatists\nstative\nstatives\nstator\nstators\nstats\nstatuaries\nstatuary\nstatue\nstatued\nstatues\nstatuesque\nstatuesquely\nstatuesqueness\nstatuette\nstatuettes\nstature\nstatures\nstatus\nstatuses\nstatute\nstatutes\nstatutorily\nstatutory\nstaumrel\nstaumrels\nstaunch\nstaunched\nstauncher\nstaunches\nstaunchest\nstaunching\nstaunchly\nstaunchness\nstave\nstaved\nstaves\nstaving\nstaw\nstay\nstayed\nstayer\nstayers\nstaying\nstays\nstaysail\nstaysails\nstead\nsteaded\nsteadfast\nsteadfastly\nsteadfastness\nsteadied\nsteadier\nsteadiers\nsteadies\nsteadiest\nsteadily\nsteadiness\nsteading\nsteadings\nsteads\nsteady\nsteadying\nsteak\nsteaks\nsteal\nstealage\nstealages\nstealer\nstealers\nstealing\nstealings\nsteals\nstealth\nstealthier\nstealthiest\nstealthily\nstealthiness\nstealths\nstealthy\nsteam\nsteamboat\nsteamboats\nsteamed\nsteamer\nsteamered\nsteamering\nsteamers\nsteamier\nsteamiest\nsteamily\nsteaming\nsteamroller\nsteamrollers\nsteams\nsteamship\nsteamships\nsteamy\nsteapsin\nsteapsins\nstearate\nstearates\nstearic\nstearin\nstearine\nstearines\nstearins\nsteatite\nsteatites\nsteatitic\nstedfast\nsteed\nsteeds\nsteek\nsteeked\nsteeking\nsteeks\nsteel\nsteeled\nsteelie\nsteelier\nsteelies\nsteeliest\nsteeliness\nsteeling\nsteelmaking\nsteels\nsteelwork\nsteelworker\nsteelworkers\nsteelworks\nsteely\nsteelyard\nsteelyards\nsteenbok\nsteenboks\nsteep\nsteeped\nsteepen\nsteepened\nsteepening\nsteepens\nsteeper\nsteepers\nsteepest\nsteeping\nsteeple\nsteeplechase\nsteeplechased\nsteeplechaser\nsteeplechasers\nsteeplechases\nsteeplechasing\nsteepled\nsteeplejack\nsteeplejacks\nsteeples\nsteeply\nsteepness\nsteeps\nsteer\nsteerage\nsteerages\nsteerageway\nsteered\nsteerer\nsteerers\nsteering\nsteers\nsteersman\nsteersmen\nsteeve\nsteeved\nsteeves\nsteeving\nsteevings\nstegodon\nstegodons\nstein\nsteinbok\nsteinboks\nsteins\nstela\nstelae\nstelai\nstelar\nstele\nstelene\nsteles\nstelic\nstella\nstellar\nstellas\nstellate\nstellified\nstellifies\nstellify\nstellifying\nstem\nstemless\nstemlike\nstemma\nstemmas\nstemmata\nstemmed\nstemmer\nstemmeries\nstemmers\nstemmery\nstemmier\nstemmiest\nstemming\nstemmy\nstems\nstemson\nstemsons\nstemware\nstemwares\nstench\nstenches\nstenchier\nstenchiest\nstenchy\nstencil\nstenciled\nstenciler\nstencilers\nstenciling\nstencilled\nstenciller\nstencillers\nstencilling\nstencils\nstengah\nstengahs\nsteno\nstenographer\nstenographers\nstenographic\nstenographically\nstenography\nstenos\nstenosed\nstenoses\nstenosis\nstenotic\nstenotype\nstenotyped\nstenotypes\nstenotyping\nstenotypist\nstenotypists\nstenotypy\nstentor\nstentorian\nstentors\nstep\nstepbrother\nstepbrothers\nstepchild\nstepchildren\nstepdame\nstepdames\nstepdaughter\nstepdaughters\nstepfather\nstepfathers\nstepladder\nstepladders\nsteplike\nstepmother\nstepmothers\nstepparent\nstepparents\nsteppe\nstepped\nstepper\nsteppers\nsteppes\nstepping\nsteps\nstepsister\nstepsisters\nstepson\nstepsons\nstepwise\nstere\nstereo\nstereoed\nstereoing\nstereophonic\nstereophonically\nstereopticon\nstereopticons\nstereos\nstereoscope\nstereoscopes\nstereoscopic\nstereoscopically\nstereotype\nstereotyped\nstereotyper\nstereotypers\nstereotypes\nstereotypical\nstereotyping\nstereotypy\nsteres\nsteric\nsterical\nsterigma\nsterigmas\nsterigmata\nsterile\nsterility\nsterilization\nsterilizations\nsterilize\nsterilized\nsterilizer\nsterilizers\nsterilizes\nsterilizing\nsterlet\nsterlets\nsterling\nsterlings\nstern\nsterna\nsternal\nsterner\nsternest\nsternite\nsternites\nsternly\nsternness\nsterns\nsternson\nsternsons\nsternum\nsternums\nsternutation\nsternutations\nsternutator\nsternutators\nsternway\nsternways\nsteroid\nsteroidal\nsteroids\nsterol\nsterols\nstertor\nstertors\nstet\nstethoscope\nstethoscopes\nstethoscopic\nstets\nstetted\nstetting\nstevedore\nstevedored\nstevedores\nstevedoring\nstew\nsteward\nstewarded\nstewardess\nstewardesses\nstewarding\nstewards\nstewardship\nstewardships\nstewbum\nstewbums\nstewed\nstewing\nstewpan\nstewpans\nstews\nstey\nsthenia\nsthenias\nsthenic\nstibial\nstibine\nstibines\nstibium\nstibiums\nstibnite\nstibnites\nstich\nstichic\nstichs\nstick\nsticked\nsticker\nstickers\nstickful\nstickfuls\nstickier\nstickiest\nstickily\nstickiness\nsticking\nstickit\nstickle\nstickled\nstickler\nsticklers\nstickles\nstickling\nstickman\nstickmen\nstickout\nstickouts\nstickpin\nstickpins\nsticks\nstickum\nstickums\nstickup\nstickups\nsticky\nstied\nsties\nstiff\nstiffen\nstiffened\nstiffener\nstiffeners\nstiffening\nstiffens\nstiffer\nstiffest\nstiffish\nstiffly\nstiffness\nstiffs\nstifle\nstifled\nstifler\nstiflers\nstifles\nstifling\nstiflingly\nstigma\nstigmal\nstigmas\nstigmata\nstigmatic\nstigmatically\nstigmatization\nstigmatizations\nstigmatize\nstigmatized\nstigmatizes\nstigmatizing\nstilbene\nstilbenes\nstilbite\nstilbites\nstile\nstiles\nstiletto\nstilettoed\nstilettoes\nstilettoing\nstilettos\nstill\nstillbirth\nstillbirths\nstillborn\nstillborns\nstilled\nstiller\nstillest\nstillier\nstilliest\nstilling\nstillman\nstillmen\nstillness\nstills\nstilly\nstilt\nstilted\nstilting\nstilts\nstime\nstimes\nstimied\nstimies\nstimulant\nstimulants\nstimulate\nstimulated\nstimulates\nstimulating\nstimulation\nstimulations\nstimulative\nstimulator\nstimulators\nstimuli\nstimulus\nstimy\nstimying\nsting\nstinger\nstingers\nstingier\nstingiest\nstingily\nstinginess\nstinging\nstingingly\nstingless\nstingo\nstingos\nstingray\nstingrays\nstings\nstingy\nstink\nstinkard\nstinkards\nstinkbug\nstinkbugs\nstinker\nstinkers\nstinkier\nstinkiest\nstinking\nstinkingly\nstinko\nstinkpot\nstinkpots\nstinks\nstinky\nstint\nstinted\nstinter\nstinters\nstinting\nstints\nstipe\nstiped\nstipel\nstipels\nstipend\nstipendiaries\nstipendiary\nstipends\nstipes\nstipites\nstipple\nstippled\nstippler\nstipplers\nstipples\nstippling\nstipular\nstipulate\nstipulated\nstipulates\nstipulating\nstipulation\nstipulations\nstipulator\nstipulators\nstipulatory\nstipule\nstipuled\nstipules\nstir\nstirk\nstirks\nstirp\nstirpes\nstirps\nstirred\nstirrer\nstirrers\nstirring\nstirrup\nstirrups\nstirs\nstitch\nstitched\nstitcher\nstitcheries\nstitchers\nstitchery\nstitches\nstitching\nstithied\nstithies\nstithy\nstithying\nstiver\nstivers\nstoa\nstoae\nstoai\nstoas\nstoat\nstoats\nstob\nstobbed\nstobbing\nstobs\nstoccado\nstoccados\nstoccata\nstoccatas\nstochastic\nstochastically\nstock\nstockade\nstockaded\nstockades\nstockading\nstockbroker\nstockbrokers\nstockcar\nstockcars\nstocked\nstocker\nstockers\nstockholder\nstockholders\nstockier\nstockiest\nstockily\nstockiness\nstockinet\nstockinets\nstockinette\nstockinettes\nstocking\nstockinged\nstockings\nstockish\nstockist\nstockists\nstockman\nstockmen\nstockpile\nstockpiled\nstockpiler\nstockpilers\nstockpiles\nstockpiling\nstockpot\nstockpots\nstockroom\nstockrooms\nstocks\nstocky\nstockyard\nstockyards\nstodge\nstodged\nstodges\nstodgier\nstodgiest\nstodgily\nstodging\nstodgy\nstogey\nstogeys\nstogie\nstogies\nstogy\nstoic\nstoical\nstoically\nstoicism\nstoicisms\nstoics\nstoke\nstoked\nstokehole\nstokeholes\nstoker\nstokers\nstokes\nstokesia\nstokesias\nstoking\nstole\nstoled\nstolen\nstoles\nstolid\nstolider\nstolidest\nstolidity\nstolidly\nstollen\nstollens\nstolon\nstolonic\nstolons\nstoma\nstomach\nstomachache\nstomachaches\nstomached\nstomachic\nstomaching\nstomachs\nstomachy\nstomal\nstomas\nstomata\nstomatal\nstomate\nstomates\nstomatic\nstomodea\nstomp\nstomped\nstomper\nstompers\nstomping\nstomps\nstonable\nstone\nstoneable\nstonecutter\nstonecutters\nstoned\nstoneflies\nstonefly\nstonemason\nstonemasonry\nstonemasons\nstoner\nstoners\nstones\nstonewall\nstonewalled\nstonewalling\nstonewalls\nstoneware\nstonework\nstoneworks\nstoney\nstonier\nstoniest\nstonily\nstoning\nstonish\nstonished\nstonishes\nstonishing\nstony\nstood\nstooge\nstooged\nstooges\nstooging\nstook\nstooked\nstooker\nstookers\nstooking\nstooks\nstool\nstooled\nstoolie\nstoolies\nstooling\nstools\nstoop\nstooped\nstooper\nstoopers\nstooping\nstoops\nstop\nstopcock\nstopcocks\nstope\nstoped\nstoper\nstopers\nstopes\nstopgap\nstopgaps\nstoping\nstoplight\nstoplights\nstopover\nstopovers\nstoppable\nstoppage\nstoppages\nstopped\nstopper\nstoppered\nstoppering\nstoppers\nstopping\nstopple\nstoppled\nstopples\nstoppling\nstops\nstopt\nstopwatch\nstopwatches\nstorable\nstorables\nstorage\nstorages\nstorax\nstoraxes\nstore\nstored\nstorefront\nstorefronts\nstorehouse\nstorehouses\nstorekeeper\nstorekeepers\nstoreroom\nstorerooms\nstores\nstorey\nstoreyed\nstoreys\nstoried\nstories\nstoring\nstork\nstorks\nstorm\nstormbound\nstormed\nstormier\nstormiest\nstormily\nstorminess\nstorming\nstorms\nstormy\nstory\nstorying\nstoryteller\nstorytellers\nstoss\nstotinka\nstotinki\nstound\nstounded\nstounding\nstounds\nstoup\nstoups\nstour\nstoure\nstoures\nstourie\nstours\nstoury\nstout\nstouten\nstoutened\nstoutening\nstoutens\nstouter\nstoutest\nstouthearted\nstoutheartedly\nstoutheartedness\nstoutish\nstoutly\nstoutness\nstouts\nstove\nstovepipe\nstovepipes\nstover\nstovers\nstoves\nstow\nstowable\nstowage\nstowages\nstowaway\nstowaways\nstowed\nstowing\nstowp\nstowps\nstows\nstrabismic\nstrabismus\nstraddle\nstraddled\nstraddler\nstraddlers\nstraddles\nstraddling\nstrafe\nstrafed\nstrafer\nstrafers\nstrafes\nstrafing\nstraggle\nstraggled\nstraggler\nstragglers\nstraggles\nstragglier\nstraggliest\nstraggling\nstraggly\nstraight\nstraightaway\nstraightaways\nstraighted\nstraightedge\nstraightedges\nstraighten\nstraightened\nstraightener\nstraighteners\nstraightening\nstraightens\nstraighter\nstraightest\nstraightforward\nstraightforwardly\nstraightforwardness\nstraighting\nstraightjacket\nstraightjackets\nstraightlaced\nstraightly\nstraights\nstraightway\nstrain\nstrained\nstrainer\nstrainers\nstraining\nstrains\nstrait\nstraiten\nstraitened\nstraitening\nstraitens\nstraiter\nstraitest\nstraitjacket\nstraitjackets\nstraitlaced\nstraitly\nstraitness\nstraits\nstrake\nstraked\nstrakes\nstramash\nstramashes\nstramonies\nstramony\nstrand\nstranded\nstrander\nstranders\nstranding\nstrands\nstrang\nstrange\nstrangely\nstrangeness\nstranger\nstrangered\nstrangering\nstrangers\nstrangest\nstrangle\nstrangled\nstranglehold\nstrangleholds\nstrangler\nstranglers\nstrangles\nstrangling\nstrangulate\nstrangulated\nstrangulates\nstrangulating\nstrangulation\nstrangulations\nstrap\nstrapless\nstrapped\nstrapper\nstrappers\nstrapping\nstrappings\nstraps\nstrass\nstrasses\nstrata\nstratagem\nstratagems\nstratal\nstratas\nstrategic\nstrategical\nstrategically\nstrategies\nstrategist\nstrategists\nstrategy\nstrath\nstraths\nstrati\nstratification\nstratifications\nstratified\nstratifies\nstratify\nstratifying\nstratosphere\nstratospheres\nstratospheric\nstratous\nstratum\nstratums\nstratus\nstravage\nstravaged\nstravages\nstravaging\nstravaig\nstravaiged\nstravaiging\nstravaigs\nstraw\nstrawberries\nstrawberry\nstrawed\nstrawhat\nstrawier\nstrawiest\nstrawing\nstraws\nstrawy\nstray\nstrayed\nstrayer\nstrayers\nstraying\nstrays\nstreak\nstreaked\nstreaker\nstreakers\nstreakier\nstreakiest\nstreakiness\nstreaking\nstreakings\nstreaks\nstreaky\nstream\nstreamed\nstreamer\nstreamers\nstreamier\nstreamiest\nstreaming\nstreamline\nstreamlined\nstreamliner\nstreamliners\nstreamlines\nstreamlining\nstreams\nstreamy\nstreek\nstreeked\nstreeker\nstreekers\nstreeking\nstreeks\nstreet\nstreetcar\nstreetcars\nstreets\nstrength\nstrengthen\nstrengthened\nstrengthening\nstrengthens\nstrengths\nstrenuous\nstrenuously\nstrenuousness\nstrep\nstreps\nstress\nstressed\nstresses\nstressful\nstressfully\nstressing\nstressless\nstressor\nstressors\nstretch\nstretchability\nstretchable\nstretched\nstretcher\nstretchers\nstretches\nstretchier\nstretchiest\nstretching\nstretchy\nstretta\nstrettas\nstrette\nstretti\nstretto\nstrettos\nstreusel\nstreusels\nstrew\nstrewed\nstrewer\nstrewers\nstrewing\nstrewn\nstrews\nstria\nstriae\nstriate\nstriated\nstriates\nstriating\nstriation\nstriations\nstrick\nstricken\nstrickle\nstrickled\nstrickles\nstrickling\nstricks\nstrict\nstricter\nstrictest\nstrictly\nstrictness\nstricture\nstrictures\nstrid\nstridden\nstride\nstridence\nstridency\nstrident\nstridently\nstrider\nstriders\nstrides\nstriding\nstridor\nstridors\nstridulate\nstridulated\nstridulates\nstridulating\nstridulation\nstridulations\nstridulous\nstridulously\nstrife\nstrifeless\nstrifes\nstrigil\nstrigils\nstrigose\nstrike\nstrikebound\nstrikebreaker\nstrikebreakers\nstriker\nstrikers\nstrikes\nstriking\nstrikingly\nstring\nstringed\nstringencies\nstringency\nstringent\nstringently\nstringer\nstringers\nstringier\nstringiest\nstringiness\nstringing\nstringless\nstrings\nstringy\nstrip\nstripe\nstriped\nstripeless\nstriper\nstripers\nstripes\nstripier\nstripiest\nstriping\nstripings\nstripling\nstriplings\nstripped\nstripper\nstrippers\nstripping\nstrips\nstript\nstriptease\nstripteaser\nstripteasers\nstripteases\nstripy\nstrive\nstrived\nstriven\nstriver\nstrivers\nstrives\nstriving\nstrobe\nstrobes\nstrobic\nstrobil\nstrobila\nstrobilae\nstrobile\nstrobiles\nstrobili\nstrobils\nstroboscope\nstroboscopes\nstroboscopic\nstroboscopically\nstrode\nstroke\nstroked\nstroker\nstrokers\nstrokes\nstroking\nstroll\nstrolled\nstroller\nstrollers\nstrolling\nstrolls\nstroma\nstromal\nstromata\nstrong\nstrongbox\nstrongboxes\nstronger\nstrongest\nstronghold\nstrongholds\nstrongish\nstrongly\nstrongyl\nstrongyls\nstrontia\nstrontias\nstrontic\nstrontium\nstrook\nstrop\nstrophe\nstrophes\nstrophic\nstropped\nstropping\nstrops\nstroud\nstrouds\nstrove\nstrow\nstrowed\nstrowing\nstrown\nstrows\nstroy\nstroyed\nstroyer\nstroyers\nstroying\nstroys\nstruck\nstrucken\nstructural\nstructuralism\nstructuralist\nstructuralists\nstructurally\nstructure\nstructured\nstructures\nstructuring\nstrudel\nstrudels\nstruggle\nstruggled\nstruggles\nstruggling\nstrum\nstruma\nstrumae\nstrumas\nstrummed\nstrummer\nstrummers\nstrumming\nstrumose\nstrumous\nstrumpet\nstrumpets\nstrums\nstrung\nstrunt\nstrunted\nstrunting\nstrunts\nstrut\nstruts\nstrutted\nstrutter\nstrutters\nstrutting\nstrychnine\nstub\nstubbed\nstubbier\nstubbiest\nstubbily\nstubbing\nstubble\nstubbled\nstubbles\nstubblier\nstubbliest\nstubbly\nstubborn\nstubbornly\nstubbornness\nstubby\nstubs\nstucco\nstuccoed\nstuccoer\nstuccoers\nstuccoes\nstuccoing\nstuccos\nstuck\nstud\nstudbook\nstudbooks\nstudded\nstuddie\nstuddies\nstudding\nstuddings\nstudent\nstudents\nstudfish\nstudfishes\nstudhorse\nstudhorses\nstudied\nstudiedly\nstudiedness\nstudier\nstudiers\nstudies\nstudio\nstudios\nstudious\nstudiously\nstudiousness\nstuds\nstudwork\nstudworks\nstudy\nstudying\nstuff\nstuffed\nstuffer\nstuffers\nstuffier\nstuffiest\nstuffily\nstuffiness\nstuffing\nstuffings\nstuffs\nstuffy\nstuiver\nstuivers\nstull\nstulls\nstultification\nstultifications\nstultified\nstultifies\nstultify\nstultifying\nstum\nstumble\nstumbled\nstumbler\nstumblers\nstumbles\nstumbling\nstumblingly\nstummed\nstumming\nstump\nstumpage\nstumpages\nstumped\nstumper\nstumpers\nstumpier\nstumpiest\nstumping\nstumps\nstumpy\nstums\nstun\nstung\nstunk\nstunned\nstunner\nstunners\nstunning\nstunningly\nstuns\nstunsail\nstunsails\nstunt\nstunted\nstunting\nstunts\nstupa\nstupas\nstupe\nstupefaction\nstupefactions\nstupefied\nstupefies\nstupefy\nstupefying\nstupendous\nstupendously\nstupes\nstupid\nstupider\nstupidest\nstupidities\nstupidity\nstupidly\nstupidness\nstupids\nstupor\nstuporous\nstupors\nsturdied\nsturdier\nsturdies\nsturdiest\nsturdily\nsturdiness\nsturdy\nsturgeon\nsturgeons\nsturt\nsturts\nstutter\nstuttered\nstutterer\nstutterers\nstuttering\nstutters\nsty\nstye\nstyed\nstyes\nstygian\nstying\nstylar\nstylate\nstyle\nstylebook\nstylebooks\nstyled\nstyler\nstylers\nstyles\nstylet\nstylets\nstyli\nstyling\nstylings\nstylise\nstylised\nstyliser\nstylisers\nstylises\nstylish\nstylishly\nstylishness\nstylising\nstylist\nstylistic\nstylistically\nstylists\nstylite\nstylites\nstylitic\nstylization\nstylizations\nstylize\nstylized\nstylizer\nstylizers\nstylizes\nstylizing\nstyloid\nstylus\nstyluses\nstymie\nstymied\nstymieing\nstymies\nstymy\nstymying\nstypsis\nstypsises\nstyptic\nstyptics\nstyrax\nstyraxes\nstyrene\nstyrenes\nsuability\nsuable\nsuably\nsuasion\nsuasions\nsuasive\nsuasively\nsuasiveness\nsuasory\nsuave\nsuavely\nsuaveness\nsuaver\nsuavest\nsuavities\nsuavity\nsub\nsuba\nsubabbot\nsubabbots\nsubacid\nsubacrid\nsubacute\nsubadar\nsubadars\nsubadult\nsubadults\nsubagent\nsubagents\nsubah\nsubahdar\nsubahdars\nsubahs\nsubalar\nsubaltern\nsubalternate\nsubalternates\nsubalterns\nsubarea\nsubareas\nsubarid\nsubas\nsubassemblies\nsubassembly\nsubatom\nsubatoms\nsubaverage\nsubaxial\nsubbase\nsubbases\nsubbass\nsubbasses\nsubbed\nsubbing\nsubbings\nsubbreed\nsubbreeds\nsubcategories\nsubcategory\nsubcause\nsubcauses\nsubcell\nsubcells\nsubchief\nsubchiefs\nsubclan\nsubclans\nsubclass\nsubclassed\nsubclasses\nsubclassification\nsubclassifications\nsubclassing\nsubclerk\nsubclerks\nsubcommission\nsubcommissions\nsubcommittee\nsubcommittees\nsubcompact\nsubcompacts\nsubconscious\nsubconsciously\nsubconsciousness\nsubcontinent\nsubcontinents\nsubcontract\nsubcontracted\nsubcontracting\nsubcontractor\nsubcontractors\nsubcontracts\nsubcool\nsubcooled\nsubcooling\nsubcools\nsubcultural\nsubculture\nsubcultured\nsubcultures\nsubculturing\nsubcutaneous\nsubcutaneously\nsubcutes\nsubcutis\nsubcutises\nsubdean\nsubdeans\nsubdeb\nsubdebs\nsubdepartment\nsubdepartments\nsubdepot\nsubdepots\nsubdivide\nsubdivided\nsubdivider\nsubdividers\nsubdivides\nsubdividing\nsubdivision\nsubdivisions\nsubdual\nsubduals\nsubduce\nsubduced\nsubduces\nsubducing\nsubduct\nsubducted\nsubducting\nsubducts\nsubdue\nsubdued\nsubduer\nsubduers\nsubdues\nsubduing\nsubecho\nsubechoes\nsubedit\nsubedited\nsubediting\nsubedits\nsubentries\nsubentry\nsubepoch\nsubepochs\nsuber\nsuberect\nsuberic\nsuberin\nsuberins\nsuberise\nsuberised\nsuberises\nsuberising\nsuberize\nsuberized\nsuberizes\nsuberizing\nsuberose\nsuberous\nsubers\nsubfield\nsubfields\nsubfix\nsubfixes\nsubfloor\nsubfloors\nsubfluid\nsubfreezing\nsubfusc\nsubgenera\nsubgenus\nsubgenuses\nsubgrade\nsubgrades\nsubgroup\nsubgroups\nsubgum\nsubhead\nsubheading\nsubheadings\nsubheads\nsubhuman\nsubhumans\nsubhumid\nsubidea\nsubideas\nsubindex\nsubindexes\nsubindices\nsubitem\nsubitems\nsubito\nsubject\nsubjected\nsubjecting\nsubjection\nsubjections\nsubjective\nsubjectively\nsubjectiveness\nsubjectivism\nsubjectivisms\nsubjectivist\nsubjectivistic\nsubjectivists\nsubjectivity\nsubjects\nsubjoin\nsubjoined\nsubjoining\nsubjoins\nsubjugate\nsubjugated\nsubjugates\nsubjugating\nsubjugation\nsubjugations\nsubjugator\nsubjugators\nsubjunctive\nsubjunctives\nsublate\nsublated\nsublates\nsublating\nsublease\nsubleased\nsubleases\nsubleasing\nsublet\nsublets\nsubletting\nsublevel\nsublevels\nsublicense\nsublicenses\nsublimable\nsublimate\nsublimated\nsublimates\nsublimating\nsublimation\nsublimations\nsublime\nsublimed\nsublimely\nsublimer\nsublimers\nsublimes\nsublimest\nsubliminal\nsubliminally\nsubliming\nsublimities\nsublimity\nsubliterate\nsubmarginal\nsubmarginally\nsubmarine\nsubmariner\nsubmariners\nsubmarines\nsubmerge\nsubmerged\nsubmergence\nsubmerges\nsubmergible\nsubmerging\nsubmerse\nsubmersed\nsubmerses\nsubmersible\nsubmersing\nsubmersion\nsubmersions\nsubmiss\nsubmission\nsubmissions\nsubmissive\nsubmissively\nsubmissiveness\nsubmit\nsubmits\nsubmittal\nsubmittals\nsubmitted\nsubmitting\nsubnasal\nsubnodal\nsubnormal\nsubnormalities\nsubnormality\nsuboptic\nsuboral\nsuborder\nsuborders\nsubordinate\nsubordinated\nsubordinately\nsubordinates\nsubordinating\nsubordination\nsubordinations\nsubordinative\nsuborn\nsubornation\nsubornations\nsuborned\nsuborner\nsuborners\nsuborning\nsuborns\nsuboval\nsubovate\nsuboxide\nsuboxides\nsubpar\nsubpart\nsubparts\nsubpena\nsubpenaed\nsubpenaing\nsubpenas\nsubphyla\nsubplot\nsubplots\nsubpoena\nsubpoenaed\nsubpoenaing\nsubpoenas\nsubpolar\nsubprogram\nsubprograms\nsubpubic\nsubrace\nsubraces\nsubrent\nsubrents\nsubring\nsubrings\nsubroutine\nsubroutines\nsubrule\nsubrules\nsubs\nsubsale\nsubsales\nsubscribe\nsubscribed\nsubscriber\nsubscribers\nsubscribes\nsubscribing\nsubscript\nsubscription\nsubscriptions\nsubscripts\nsubsect\nsubsection\nsubsections\nsubsects\nsubsequence\nsubsequences\nsubsequent\nsubsequently\nsubsere\nsubseres\nsubserve\nsubserved\nsubserves\nsubservience\nsubserviency\nsubservient\nsubserviently\nsubserving\nsubset\nsubsets\nsubshaft\nsubshafts\nsubshrub\nsubshrubs\nsubside\nsubsided\nsubsidence\nsubsidences\nsubsider\nsubsiders\nsubsides\nsubsidiaries\nsubsidiary\nsubsidies\nsubsiding\nsubsidization\nsubsidizations\nsubsidize\nsubsidized\nsubsidizer\nsubsidizers\nsubsidizes\nsubsidizing\nsubsidy\nsubsist\nsubsisted\nsubsistence\nsubsistences\nsubsistent\nsubsisting\nsubsists\nsubsoil\nsubsoiled\nsubsoiling\nsubsoils\nsubsolar\nsubsonic\nsubspace\nsubspaces\nsubstage\nsubstages\nsubstance\nsubstances\nsubstandard\nsubstantial\nsubstantialities\nsubstantiality\nsubstantially\nsubstantialness\nsubstantials\nsubstantiate\nsubstantiated\nsubstantiates\nsubstantiating\nsubstantiation\nsubstantiations\nsubstantiative\nsubstantival\nsubstantivally\nsubstantive\nsubstantively\nsubstantiveness\nsubstantives\nsubstantivize\nsubstantivized\nsubstantivizes\nsubstantivizing\nsubstation\nsubstations\nsubstitutability\nsubstitutable\nsubstitute\nsubstituted\nsubstitutes\nsubstituting\nsubstitution\nsubstitutional\nsubstitutionally\nsubstitutionary\nsubstitutions\nsubstitutive\nsubstitutively\nsubstrata\nsubstrate\nsubstrates\nsubstratum\nsubstructural\nsubstructure\nsubstructures\nsubsumable\nsubsume\nsubsumed\nsubsumes\nsubsuming\nsubsurface\nsubsurfaces\nsubsystem\nsubsystems\nsubteen\nsubteens\nsubtend\nsubtended\nsubtending\nsubtends\nsubterfuge\nsubterfuges\nsubterranean\nsubterraneanly\nsubtext\nsubtexts\nsubties\nsubtile\nsubtiler\nsubtilest\nsubtilties\nsubtilty\nsubtitle\nsubtitled\nsubtitles\nsubtitling\nsubtle\nsubtleness\nsubtler\nsubtlest\nsubtleties\nsubtlety\nsubtly\nsubtone\nsubtones\nsubtonic\nsubtonics\nsubtopic\nsubtopics\nsubtotal\nsubtotaled\nsubtotaling\nsubtotalled\nsubtotalling\nsubtotals\nsubtract\nsubtracted\nsubtracting\nsubtraction\nsubtractions\nsubtractive\nsubtracts\nsubtrahend\nsubtrahends\nsubtribe\nsubtribes\nsubtunic\nsubtunics\nsubtype\nsubtypes\nsubulate\nsubunit\nsubunits\nsuburb\nsuburban\nsuburbanite\nsuburbanites\nsuburbans\nsuburbed\nsuburbia\nsuburbias\nsuburbs\nsubvene\nsubvened\nsubvenes\nsubvening\nsubversion\nsubversions\nsubversive\nsubversively\nsubversiveness\nsubvert\nsubverted\nsubverting\nsubverts\nsubvicar\nsubvicars\nsubviral\nsubvocal\nsubway\nsubways\nsubzone\nsubzones\nsuccah\nsuccahs\nsucceed\nsucceeded\nsucceeder\nsucceeders\nsucceeding\nsucceeds\nsuccess\nsuccesses\nsuccessful\nsuccessfully\nsuccessfulness\nsuccession\nsuccessional\nsuccessionally\nsuccessions\nsuccessive\nsuccessively\nsuccessiveness\nsuccessor\nsuccessors\nsuccinct\nsuccincter\nsuccinctest\nsuccinctly\nsuccinctness\nsuccinic\nsuccinyl\nsuccinyls\nsuccor\nsuccored\nsuccorer\nsuccorers\nsuccories\nsuccoring\nsuccors\nsuccory\nsuccoth\nsuccour\nsuccoured\nsuccouring\nsuccours\nsuccuba\nsuccubae\nsuccubi\nsuccubus\nsuccubuses\nsucculence\nsucculent\nsucculently\nsucculents\nsuccumb\nsuccumbed\nsuccumbing\nsuccumbs\nsuccuss\nsuccussed\nsuccusses\nsuccussing\nsuch\nsuchlike\nsuchness\nsuchnesses\nsuck\nsucked\nsucker\nsuckered\nsuckering\nsuckers\nsuckfish\nsuckfishes\nsucking\nsuckle\nsuckled\nsuckler\nsucklers\nsuckles\nsuckless\nsuckling\nsucklings\nsucks\nsucrase\nsucrases\nsucre\nsucres\nsucrose\nsucroses\nsuction\nsuctional\nsuctions\nsudaria\nsudaries\nsudarium\nsudary\nsudation\nsudations\nsudatories\nsudatory\nsudd\nsudden\nsuddenly\nsuddenness\nsuddens\nsudds\nsudor\nsudoral\nsudoriferous\nsudorific\nsudorifics\nsudors\nsuds\nsudsed\nsudser\nsudsers\nsudses\nsudsier\nsudsiest\nsudsing\nsudsless\nsudsy\nsue\nsued\nsuede\nsueded\nsuedes\nsueding\nsuer\nsuers\nsues\nsuet\nsuets\nsuety\nsuffari\nsuffaris\nsuffer\nsufferable\nsufferableness\nsufferably\nsufferance\nsufferances\nsuffered\nsufferer\nsufferers\nsuffering\nsufferings\nsuffers\nsuffice\nsufficed\nsufficer\nsufficers\nsuffices\nsufficiency\nsufficient\nsufficiently\nsufficing\nsuffix\nsuffixal\nsuffixation\nsuffixations\nsuffixed\nsuffixes\nsuffixing\nsufflate\nsufflated\nsufflates\nsufflating\nsuffocate\nsuffocated\nsuffocates\nsuffocating\nsuffocatingly\nsuffocation\nsuffocations\nsuffocative\nsuffrage\nsuffrages\nsuffragette\nsuffragettes\nsuffragist\nsuffragists\nsuffuse\nsuffused\nsuffuses\nsuffusing\nsuffusion\nsuffusions\nsuffusive\nsugar\nsugarcane\nsugarcanes\nsugarcoat\nsugarcoated\nsugarcoating\nsugarcoats\nsugared\nsugarier\nsugariest\nsugaring\nsugarless\nsugarplum\nsugarplums\nsugars\nsugary\nsuggest\nsuggested\nsuggestibility\nsuggestible\nsuggesting\nsuggestion\nsuggestions\nsuggestive\nsuggestively\nsuggestiveness\nsuggests\nsugh\nsughed\nsughing\nsughs\nsuicidal\nsuicidally\nsuicide\nsuicided\nsuicides\nsuiciding\nsuing\nsuint\nsuints\nsuit\nsuitabilities\nsuitability\nsuitable\nsuitableness\nsuitably\nsuitcase\nsuitcases\nsuite\nsuited\nsuites\nsuiting\nsuitings\nsuitlike\nsuitor\nsuitors\nsuits\nsukiyaki\nsukiyakis\nsukkah\nsukkahs\nsukkoth\nsulcate\nsulcated\nsulci\nsulcus\nsuldan\nsuldans\nsulfa\nsulfanilamide\nsulfas\nsulfate\nsulfated\nsulfates\nsulfating\nsulfid\nsulfide\nsulfides\nsulfids\nsulfinyl\nsulfinyls\nsulfite\nsulfites\nsulfitic\nsulfo\nsulfonals\nsulfone\nsulfones\nsulfonic\nsulfonyl\nsulfonyls\nsulfur\nsulfured\nsulfuret\nsulfureted\nsulfureting\nsulfurets\nsulfuretted\nsulfuretting\nsulfuric\nsulfuring\nsulfurous\nsulfurs\nsulfury\nsulfuryl\nsulfuryls\nsulk\nsulked\nsulker\nsulkers\nsulkier\nsulkies\nsulkiest\nsulkily\nsulkiness\nsulking\nsulks\nsulky\nsullage\nsullages\nsullen\nsullener\nsullenest\nsullenly\nsullenness\nsullied\nsullies\nsully\nsullying\nsulpha\nsulphas\nsulphate\nsulphated\nsulphates\nsulphating\nsulphid\nsulphide\nsulphides\nsulphids\nsulphite\nsulphites\nsulphone\nsulphones\nsulphur\nsulphured\nsulphuring\nsulphurous\nsulphurs\nsulphury\nsultan\nsultana\nsultanas\nsultanate\nsultanates\nsultanic\nsultans\nsultrier\nsultriest\nsultrily\nsultry\nsulu\nsulus\nsum\nsumac\nsumach\nsumachs\nsumacs\nsumless\nsumma\nsummable\nsummae\nsummand\nsummands\nsummaries\nsummarily\nsummarization\nsummarizations\nsummarize\nsummarized\nsummarizer\nsummarizers\nsummarizes\nsummarizing\nsummary\nsummas\nsummate\nsummated\nsummates\nsummating\nsummation\nsummational\nsummations\nsummed\nsummer\nsummered\nsummerhouse\nsummerhouses\nsummerier\nsummeriest\nsummering\nsummerly\nsummers\nsummertime\nsummertimes\nsummery\nsumming\nsummit\nsummital\nsummitries\nsummitry\nsummits\nsummon\nsummoned\nsummoner\nsummoners\nsummoning\nsummons\nsummonsed\nsummonses\nsummonsing\nsumo\nsumos\nsump\nsumps\nsumpter\nsumpters\nsumptuous\nsumptuously\nsumptuousness\nsumpweed\nsumpweeds\nsums\nsun\nsunback\nsunbaked\nsunbath\nsunbathe\nsunbathed\nsunbather\nsunbathers\nsunbathes\nsunbathing\nsunbaths\nsunbeam\nsunbeams\nsunbird\nsunbirds\nsunbow\nsunbows\nsunburn\nsunburned\nsunburning\nsunburns\nsunburnt\nsunburst\nsunbursts\nsundae\nsundaes\nsunder\nsundered\nsunderer\nsunderers\nsundering\nsunders\nsundew\nsundews\nsundial\nsundials\nsundog\nsundogs\nsundown\nsundowns\nsundries\nsundrops\nsundry\nsunfast\nsunfish\nsunfishes\nsunflower\nsunflowers\nsung\nsunglass\nsunglasses\nsunglow\nsunglows\nsunk\nsunken\nsunket\nsunkets\nsunlamp\nsunlamps\nsunland\nsunlands\nsunless\nsunlight\nsunlights\nsunlike\nsunlit\nsunn\nsunna\nsunnas\nsunned\nsunnier\nsunniest\nsunnily\nsunniness\nsunning\nsunns\nsunny\nsunrise\nsunrises\nsunroof\nsunroofs\nsunroom\nsunrooms\nsuns\nsunscald\nsunscalds\nsunscreen\nsunscreening\nsunscreens\nsunset\nsunsets\nsunshade\nsunshades\nsunshine\nsunshines\nsunshiny\nsunspot\nsunspots\nsunstone\nsunstones\nsunstroke\nsunstrokes\nsunsuit\nsunsuits\nsuntan\nsuntanned\nsuntans\nsunup\nsunups\nsunward\nsunwards\nsunwise\nsup\nsupe\nsuper\nsuperable\nsuperableness\nsuperably\nsuperabundance\nsuperabundances\nsuperabundant\nsuperadd\nsuperadded\nsuperadding\nsuperadds\nsuperannuate\nsuperannuated\nsuperannuates\nsuperannuating\nsuperannuation\nsuperannuations\nsuperb\nsuperber\nsuperbest\nsuperbly\nsuperbness\nsupercargo\nsupercargoes\nsupercargos\nsupercharge\nsupercharged\nsupercharger\nsuperchargers\nsupercharges\nsupercharging\nsupercilious\nsuperciliously\nsuperciliousness\nsupercool\nsupercooled\nsupercooling\nsupercools\nsupered\nsuperego\nsuperegos\nsupererogation\nsupererogations\nsupererogatory\nsuperficial\nsuperficialities\nsuperficiality\nsuperficially\nsuperfine\nsuperfix\nsuperfixes\nsuperfluities\nsuperfluity\nsuperfluous\nsuperfluously\nsuperfluousness\nsuperhero\nsuperheroes\nsuperheroine\nsuperheroines\nsuperheterodyne\nsuperheterodynes\nsuperhighway\nsuperhighways\nsuperhuman\nsuperhumanly\nsuperhumanness\nsuperimpose\nsuperimposed\nsuperimposes\nsuperimposing\nsuperimposition\nsuperimpositions\nsuperinduce\nsuperinduced\nsuperinduces\nsuperinducing\nsuperinduction\nsuperinductions\nsupering\nsuperintend\nsuperintended\nsuperintendencies\nsuperintendency\nsuperintendent\nsuperintendents\nsuperintending\nsuperintends\nsuperior\nsuperiority\nsuperiorly\nsuperiors\nsuperjet\nsuperjets\nsuperlain\nsuperlative\nsuperlatively\nsuperlativeness\nsuperlatives\nsuperlay\nsuperlie\nsuperlies\nsuperlying\nsuperman\nsupermarket\nsupermarkets\nsupermen\nsupernal\nsupernally\nsupernatant\nsupernatants\nsupernatural\nsupernaturalism\nsupernaturalist\nsupernaturalistic\nsupernaturalists\nsupernaturally\nsupernaturalness\nsupernumeraries\nsupernumerary\nsuperpower\nsuperpowers\nsupers\nsuperscribe\nsuperscribed\nsuperscribes\nsuperscribing\nsuperscript\nsuperscription\nsuperscriptions\nsuperscripts\nsupersede\nsuperseded\nsuperseder\nsuperseders\nsupersedes\nsuperseding\nsupersedure\nsupersedures\nsupersensitive\nsupersession\nsupersessions\nsupersex\nsupersexes\nsupersonic\nsupersonically\nsupersonics\nsuperstar\nsuperstars\nsuperstition\nsuperstitions\nsuperstitious\nsuperstitiously\nsuperstrong\nsuperstructural\nsuperstructure\nsuperstructures\nsupertanker\nsupertankers\nsupertax\nsupertaxes\nsupervene\nsupervened\nsupervenes\nsupervenient\nsupervening\nsupervention\nsuperventions\nsupervise\nsupervised\nsupervises\nsupervising\nsupervision\nsupervisions\nsupervisor\nsupervisors\nsupervisory\nsuperweapon\nsuperweapons\nsuperwoman\nsuperwomen\nsupes\nsupinate\nsupinated\nsupinates\nsupinating\nsupine\nsupinely\nsupineness\nsupines\nsupped\nsupper\nsuppers\nsupping\nsupplant\nsupplantation\nsupplantations\nsupplanted\nsupplanter\nsupplanters\nsupplanting\nsupplants\nsupple\nsuppled\nsupplely\nsupplement\nsupplemental\nsupplementary\nsupplementation\nsupplementations\nsupplemented\nsupplementing\nsupplements\nsuppleness\nsuppler\nsupples\nsupplest\nsuppliance\nsuppliant\nsuppliantly\nsuppliants\nsupplicant\nsupplicants\nsupplicate\nsupplicated\nsupplicates\nsupplicating\nsupplication\nsupplications\nsupplicatory\nsupplied\nsupplier\nsuppliers\nsupplies\nsuppling\nsupply\nsupplying\nsupport\nsupportability\nsupportable\nsupported\nsupporter\nsupporters\nsupporting\nsupportive\nsupports\nsupposable\nsupposably\nsupposal\nsupposals\nsuppose\nsupposed\nsupposedly\nsupposer\nsupposers\nsupposes\nsupposing\nsupposition\nsuppositional\nsuppositions\nsuppositories\nsuppository\nsuppress\nsuppressed\nsuppresses\nsuppressible\nsuppressing\nsuppression\nsuppressions\nsuppressive\nsuppressor\nsuppressors\nsuppurate\nsuppurated\nsuppurates\nsuppurating\nsuppuration\nsuppurations\nsuppurative\nsupra\nsupremacies\nsupremacist\nsupremacists\nsupremacy\nsupreme\nsupremely\nsupremeness\nsupremer\nsupremest\nsups\nsura\nsurah\nsurahs\nsural\nsuras\nsurbase\nsurbased\nsurbases\nsurcease\nsurceased\nsurceases\nsurceasing\nsurcharge\nsurcharged\nsurcharges\nsurcharging\nsurcoat\nsurcoats\nsurd\nsurds\nsure\nsurefire\nsurely\nsureness\nsurenesses\nsurer\nsurest\nsureties\nsurety\nsuretyship\nsuretyships\nsurf\nsurfable\nsurface\nsurfaced\nsurfacer\nsurfacers\nsurfaces\nsurfacing\nsurfbird\nsurfbirds\nsurfboard\nsurfboarder\nsurfboarders\nsurfboarding\nsurfboards\nsurfboat\nsurfboats\nsurfed\nsurfeit\nsurfeited\nsurfeiting\nsurfeits\nsurfer\nsurfers\nsurffish\nsurffishes\nsurfier\nsurfiest\nsurfing\nsurfings\nsurflike\nsurfs\nsurfy\nsurge\nsurged\nsurgeon\nsurgeons\nsurger\nsurgeries\nsurgers\nsurgery\nsurges\nsurgical\nsurgically\nsurging\nsurgy\nsuricate\nsuricates\nsurlier\nsurliest\nsurlily\nsurliness\nsurly\nsurmise\nsurmised\nsurmiser\nsurmisers\nsurmises\nsurmising\nsurmount\nsurmountable\nsurmounted\nsurmounting\nsurmounts\nsurname\nsurnamed\nsurnamer\nsurnamers\nsurnames\nsurnaming\nsurpass\nsurpassable\nsurpassed\nsurpasses\nsurpassing\nsurpassingly\nsurplice\nsurplices\nsurplus\nsurplusage\nsurplusages\nsurpluses\nsurprint\nsurprinted\nsurprinting\nsurprints\nsurprise\nsurprised\nsurprises\nsurprising\nsurprisingly\nsurprize\nsurprized\nsurprizes\nsurprizing\nsurra\nsurras\nsurreal\nsurrealism\nsurrealist\nsurrealistic\nsurrealistically\nsurrealists\nsurrender\nsurrendered\nsurrendering\nsurrenders\nsurreptitious\nsurreptitiously\nsurrey\nsurreys\nsurrogate\nsurrogated\nsurrogates\nsurrogating\nsurround\nsurrounded\nsurrounding\nsurroundings\nsurrounds\nsurroyal\nsurroyals\nsurtax\nsurtaxed\nsurtaxes\nsurtaxing\nsurtout\nsurtouts\nsurveil\nsurveiled\nsurveiling\nsurveillance\nsurveillances\nsurveillant\nsurveillants\nsurveilled\nsurveilling\nsurveils\nsurvey\nsurveyed\nsurveying\nsurveyor\nsurveyors\nsurveys\nsurvivability\nsurvivable\nsurvival\nsurvivals\nsurvive\nsurvived\nsurviver\nsurvivers\nsurviving\nsurvivives\nsurvivor\nsurvivors\nsusceptibilities\nsusceptibility\nsusceptible\nsusceptibleness\nsusceptibly\nsushi\nsuslik\nsusliks\nsuspect\nsuspected\nsuspecting\nsuspects\nsuspend\nsuspended\nsuspender\nsuspenders\nsuspending\nsuspends\nsuspense\nsuspenseful\nsuspenses\nsuspension\nsuspensions\nsuspensive\nsuspensively\nsuspensories\nsuspensory\nsuspicion\nsuspicions\nsuspicious\nsuspiciously\nsuspiciousness\nsuspire\nsuspired\nsuspires\nsuspiring\nsuss\nsustain\nsustainable\nsustained\nsustaining\nsustains\nsustenance\nsustenances\nsusurrus\nsusurruses\nsutler\nsutlers\nsutra\nsutras\nsutta\nsuttas\nsuttee\nsuttees\nsutural\nsuturally\nsuture\nsutured\nsutures\nsuturing\nsuzerain\nsuzerains\nsvaraj\nsvarajes\nsvedberg\nsvedbergs\nsvelte\nsveltely\nsvelter\nsveltest\nswab\nswabbed\nswabber\nswabbers\nswabbie\nswabbies\nswabbing\nswabby\nswabs\nswaddle\nswaddled\nswaddles\nswaddling\nswag\nswage\nswaged\nswager\nswagers\nswages\nswagged\nswagger\nswaggered\nswaggerer\nswaggerers\nswaggering\nswaggers\nswagging\nswaging\nswagman\nswagmen\nswags\nswail\nswails\nswain\nswainish\nswainishness\nswains\nswale\nswales\nswallow\nswallowable\nswallowed\nswallower\nswallowers\nswallowing\nswallows\nswam\nswami\nswamies\nswamis\nswamp\nswamped\nswamper\nswampers\nswampier\nswampiest\nswamping\nswampish\nswampland\nswamplands\nswamps\nswampy\nswamy\nswan\nswang\nswanherd\nswanherds\nswank\nswanked\nswanker\nswankest\nswankier\nswankiest\nswankily\nswankiness\nswanking\nswanks\nswanky\nswanlike\nswanned\nswanneries\nswannery\nswanning\nswanpan\nswanpans\nswans\nswanskin\nswanskins\nswap\nswapped\nswapper\nswappers\nswapping\nswaps\nswaraj\nswarajes\nsward\nswarded\nswarding\nswards\nsware\nswarf\nswarfs\nswarm\nswarmed\nswarmer\nswarmers\nswarming\nswarms\nswart\nswarth\nswarthier\nswarthiest\nswarths\nswarthy\nswarty\nswash\nswashbuckler\nswashbucklers\nswashbuckling\nswashed\nswasher\nswashers\nswashes\nswashing\nswastica\nswasticas\nswastika\nswastikas\nswat\nswatch\nswatches\nswath\nswathe\nswathed\nswather\nswathers\nswathes\nswathing\nswaths\nswats\nswatted\nswatter\nswatters\nswatting\nsway\nswayable\nswayback\nswaybacked\nswaybacks\nswayed\nswayer\nswayers\nswayful\nswaying\nsways\nswear\nswearer\nswearers\nswearing\nswears\nswearword\nswearwords\nsweat\nsweatband\nsweatbands\nsweatbox\nsweatboxes\nsweated\nsweater\nsweaters\nsweatier\nsweatiest\nsweatily\nsweatiness\nsweating\nsweats\nsweatshop\nsweatshops\nsweaty\nswede\nswedes\nsweenies\nsweeny\nsweep\nsweeper\nsweepers\nsweepier\nsweepiest\nsweeping\nsweepingly\nsweepingness\nsweepings\nsweeps\nsweepstakes\nsweepy\nsweer\nsweet\nsweetbread\nsweetbreads\nsweeten\nsweetened\nsweetener\nsweeteners\nsweetening\nsweetenings\nsweetens\nsweeter\nsweetest\nsweetheart\nsweethearts\nsweetie\nsweeties\nsweeting\nsweetings\nsweetish\nsweetly\nsweetmeat\nsweetmeats\nsweetness\nsweets\nsweetsop\nsweetsops\nswell\nswelled\nsweller\nswellest\nswelling\nswellings\nswells\nswelter\nsweltered\nsweltering\nswelteringly\nswelters\nsweltrier\nsweltriest\nsweltry\nswept\nswerve\nswerved\nswerver\nswervers\nswerves\nswerving\nsweven\nswevens\nswift\nswifter\nswifters\nswiftest\nswiftly\nswiftness\nswifts\nswig\nswigged\nswigger\nswiggers\nswigging\nswigs\nswill\nswilled\nswiller\nswillers\nswilling\nswills\nswim\nswimmable\nswimmer\nswimmers\nswimmier\nswimmiest\nswimmily\nswimming\nswimmingly\nswimmings\nswimmy\nswims\nswimsuit\nswimsuits\nswindle\nswindled\nswindler\nswindlers\nswindles\nswindling\nswine\nswineherd\nswineherds\nswinepox\nswinepoxes\nswing\nswingable\nswinge\nswinged\nswingeing\nswinger\nswingers\nswinges\nswingier\nswingiest\nswinging\nswingingly\nswingle\nswingled\nswingles\nswingling\nswings\nswingy\nswinish\nswinishly\nswink\nswinked\nswinking\nswinks\nswinney\nswinneys\nswipe\nswiped\nswipes\nswiping\nswiple\nswiples\nswipple\nswipples\nswirl\nswirled\nswirlier\nswirliest\nswirling\nswirlingly\nswirls\nswirly\nswish\nswished\nswisher\nswishers\nswishes\nswishier\nswishiest\nswishing\nswishingly\nswishy\nswiss\nswisses\nswitch\nswitchboard\nswitchboards\nswitched\nswitcher\nswitchers\nswitches\nswitching\nswitchman\nswitchmen\nswith\nswithe\nswither\nswithered\nswithering\nswithers\nswithly\nswive\nswived\nswivel\nswiveled\nswiveling\nswivelled\nswivelling\nswivels\nswives\nswivet\nswivets\nswiving\nswizzle\nswizzled\nswizzler\nswizzlers\nswizzles\nswizzling\nswob\nswobbed\nswobber\nswobbers\nswobbing\nswobs\nswollen\nswoon\nswooned\nswooner\nswooners\nswooning\nswooningly\nswoons\nswoop\nswooped\nswooper\nswoopers\nswooping\nswoops\nswoosh\nswooshed\nswooshes\nswooshing\nswop\nswopped\nswopping\nswops\nsword\nswordfish\nswordfishes\nswordlike\nswordman\nswordmen\nswordplay\nswordplayer\nswordplayers\nswords\nswordsman\nswordsmanship\nswordsmen\nswore\nsworn\nswot\nswots\nswotted\nswotter\nswotters\nswotting\nswoun\nswound\nswounded\nswounding\nswounds\nswouned\nswouning\nswouns\nswum\nswung\nsybarite\nsybarites\nsybaritic\nsybaritically\nsybo\nsyboes\nsycamine\nsycamines\nsycamore\nsycamores\nsyce\nsycee\nsycees\nsyces\nsycomore\nsycomores\nsyconia\nsyconium\nsycophancies\nsycophancy\nsycophant\nsycophantic\nsycophantically\nsycophantishly\nsycophants\nsycoses\nsycosis\nsyenite\nsyenites\nsyenitic\nsyke\nsykes\nsyli\nsylis\nsyllabi\nsyllabic\nsyllabically\nsyllabicate\nsyllabicated\nsyllabicates\nsyllabicating\nsyllabication\nsyllabications\nsyllabics\nsyllabification\nsyllabifications\nsyllabified\nsyllabifies\nsyllabify\nsyllabifying\nsyllable\nsyllabled\nsyllables\nsyllabling\nsyllabub\nsyllabubs\nsyllabus\nsyllabuses\nsyllogism\nsyllogisms\nsyllogist\nsyllogistic\nsyllogistically\nsyllogists\nsylph\nsylphic\nsylphid\nsylphids\nsylphish\nsylphlike\nsylphs\nsylphy\nsylva\nsylvae\nsylvan\nsylvanite\nsylvans\nsylvas\nsylvatic\nsylvin\nsylvine\nsylvines\nsylvins\nsylvite\nsylvites\nsymbion\nsymbions\nsymbiont\nsymbionts\nsymbioses\nsymbiosis\nsymbiot\nsymbiote\nsymbiotes\nsymbiotic\nsymbiotically\nsymbiots\nsymbol\nsymboled\nsymbolic\nsymbolically\nsymboling\nsymbolism\nsymbolisms\nsymbolist\nsymbolistic\nsymbolists\nsymbolization\nsymbolizations\nsymbolize\nsymbolized\nsymbolizes\nsymbolizing\nsymbolled\nsymbolling\nsymbologies\nsymbology\nsymbols\nsymmetric\nsymmetrical\nsymmetrically\nsymmetricalness\nsymmetries\nsymmetrization\nsymmetrizations\nsymmetrize\nsymmetrized\nsymmetrizes\nsymmetrizing\nsymmetry\nsympathetic\nsympathetically\nsympathies\nsympathize\nsympathized\nsympathizer\nsympathizers\nsympathizes\nsympathizing\nsympathy\nsympatries\nsympatry\nsymphonic\nsymphonically\nsymphonies\nsymphony\nsympodia\nsymposia\nsymposium\nsymposiums\nsymptom\nsymptomatic\nsymptomatically\nsymptomless\nsymptoms\nsyn\nsynagog\nsynagogs\nsynagogue\nsynagogues\nsynapse\nsynapsed\nsynapses\nsynapsing\nsynapsis\nsynaptic\nsynaptically\nsync\nsyncarp\nsyncarpies\nsyncarps\nsyncarpy\nsynced\nsynch\nsynched\nsynching\nsynchro\nsynchromesh\nsynchromeshes\nsynchronism\nsynchronisms\nsynchronistic\nsynchronization\nsynchronizations\nsynchronize\nsynchronized\nsynchronizer\nsynchronizers\nsynchronizes\nsynchronizing\nsynchronous\nsynchronously\nsynchronousness\nsynchros\nsynchrotron\nsynchrotrons\nsynchs\nsyncing\nsynclinal\nsyncline\nsynclines\nsyncom\nsyncoms\nsyncopal\nsyncopate\nsyncopated\nsyncopates\nsyncopating\nsyncopation\nsyncopations\nsyncopator\nsyncopators\nsyncope\nsyncopes\nsyncopic\nsyncretic\nsyncretism\nsyncretisms\nsyncretistic\nsyncretize\nsyncretized\nsyncretizes\nsyncretizing\nsyncs\nsyncytia\nsyndeses\nsyndesis\nsyndesises\nsyndet\nsyndetic\nsyndets\nsyndic\nsyndical\nsyndicalism\nsyndicalist\nsyndicalists\nsyndicate\nsyndicated\nsyndicates\nsyndicating\nsyndication\nsyndications\nsyndicator\nsyndicators\nsyndics\nsyndrome\nsyndromes\nsyne\nsynecdoche\nsynecdoches\nsynecdochic\nsynecdochical\nsynecdochically\nsynecological\nsynecology\nsynectic\nsynergia\nsynergias\nsynergic\nsynergid\nsynergids\nsynergies\nsynergism\nsynergisms\nsynergistic\nsynergistically\nsynergy\nsynesis\nsynesises\nsyngamic\nsyngamies\nsyngamy\nsynod\nsynodal\nsynodic\nsynodical\nsynods\nsynonym\nsynonyme\nsynonymes\nsynonymic\nsynonymies\nsynonymity\nsynonymize\nsynonymized\nsynonymizes\nsynonymizing\nsynonymous\nsynonymously\nsynonyms\nsynonymy\nsynopses\nsynopsis\nsynopsize\nsynopsized\nsynopsizes\nsynopsizing\nsynoptic\nsynoptically\nsynovia\nsynovial\nsynovias\nsyntactic\nsyntactical\nsyntactically\nsyntax\nsyntaxes\nsynth\nsyntheses\nsynthesis\nsynthesist\nsynthesists\nsynthesize\nsynthesized\nsynthesizer\nsynthesizers\nsynthesizes\nsynthesizing\nsynthetic\nsynthetical\nsynthetically\nsynthetics\nsyntonic\nsyntonies\nsyntony\nsynura\nsynurae\nsypher\nsyphered\nsyphering\nsyphers\nsyphilis\nsyphilises\nsyphilitic\nsyphilitics\nsyphon\nsyphoned\nsyphoning\nsyphons\nsyren\nsyrens\nsyringa\nsyringas\nsyringe\nsyringed\nsyringes\nsyringing\nsyrinx\nsyrinxes\nsyrphian\nsyrphians\nsyrphid\nsyrphids\nsyrup\nsyrups\nsyrupy\nsystem\nsystematic\nsystematically\nsystematicness\nsystematics\nsystematist\nsystematists\nsystematization\nsystematizations\nsystematize\nsystematized\nsystematizer\nsystematizers\nsystematizes\nsystematizing\nsystemic\nsystemically\nsystemics\nsystemization\nsystemizations\nsystemize\nsystemized\nsystemizes\nsystemizing\nsystemless\nsystems\nsystole\nsystoles\nsystolic\nsyzygal\nsyzygial\nsyzygies\nsyzygy\nta\ntab\ntabanid\ntabanids\ntabard\ntabarded\ntabards\ntabaret\ntabarets\ntabbed\ntabbied\ntabbies\ntabbing\ntabbis\ntabbises\ntabby\ntabbying\ntaber\ntabered\ntabering\ntabernacle\ntabernacled\ntabernacles\ntabernacling\ntabers\ntabes\ntabetic\ntabetics\ntabid\ntabla\ntablas\ntable\ntableau\ntableaus\ntableaux\ntablecloth\ntablecloths\ntabled\ntableful\ntablefuls\ntableland\ntablelands\ntableless\ntables\ntablesful\ntablespoon\ntablespoonful\ntablespoonfuls\ntablespoons\ntablet\ntableted\ntableting\ntabletop\ntabletops\ntablets\ntabletted\ntabletting\ntableware\ntabling\ntabloid\ntabloids\ntaboo\ntabooed\ntabooing\ntaboos\ntabor\ntabored\ntaborer\ntaborers\ntaboret\ntaborets\ntaborin\ntaborine\ntaborines\ntaboring\ntaborins\ntabors\ntabour\ntaboured\ntabourer\ntabourers\ntabouret\ntabourets\ntabouring\ntabours\ntabs\ntabu\ntabued\ntabuing\ntabular\ntabulate\ntabulated\ntabulates\ntabulating\ntabulation\ntabulations\ntabulator\ntabulators\ntabus\ntace\ntaces\ntacet\ntach\ntache\ntaches\ntachinid\ntachinids\ntachism\ntachisms\ntachist\ntachiste\ntachistes\ntachistoscope\ntachistoscopes\ntachistoscopic\ntachistoscopically\ntachists\ntachometer\ntachometers\ntachs\ntacit\ntacitly\ntacitness\ntaciturn\ntaciturnity\ntack\ntacked\ntacker\ntackers\ntacket\ntackets\ntackey\ntackier\ntackiest\ntackified\ntackifies\ntackify\ntackifying\ntackily\ntackiness\ntacking\ntackle\ntackled\ntackler\ntacklers\ntackles\ntackless\ntackling\ntacklings\ntacks\ntacky\ntacnode\ntacnodes\ntaco\ntaconite\ntaconites\ntacos\ntact\ntactful\ntactfully\ntactfulness\ntactic\ntactical\ntactically\ntactician\ntacticians\ntactics\ntactile\ntactility\ntaction\ntactions\ntactless\ntactlessly\ntactlessness\ntacts\ntactual\ntactually\ntad\ntadpole\ntadpoles\ntads\ntae\ntael\ntaels\ntaenia\ntaeniae\ntaenias\ntaffarel\ntaffarels\ntafferel\ntafferels\ntaffeta\ntaffetas\ntaffia\ntaffias\ntaffies\ntaffrail\ntaffrails\ntaffy\ntafia\ntafias\ntag\ntagalong\ntagalongs\ntagboard\ntagboards\ntagged\ntagger\ntaggers\ntagging\ntaglike\ntagmeme\ntagmemes\ntagrag\ntagrags\ntags\ntahr\ntahrs\ntahsil\ntahsils\ntaiga\ntaigas\ntaiglach\ntail\ntailback\ntailbacks\ntailbone\ntailbones\ntailcoat\ntailcoats\ntailed\ntailer\ntailers\ntailgate\ntailgated\ntailgates\ntailgating\ntailing\ntailings\ntaille\ntailles\ntailless\ntaillight\ntaillights\ntaillike\ntailor\ntailored\ntailoring\ntailors\ntailpiece\ntailpieces\ntailpipe\ntailpipes\ntailrace\ntailraces\ntails\ntailskid\ntailskids\ntailspin\ntailspins\ntailwind\ntailwinds\ntain\ntains\ntaint\ntainted\ntainting\ntaintless\ntaints\ntaipan\ntaipans\ntaj\ntajes\ntaka\ntakable\ntakahe\ntakahes\ntake\ntakeable\ntakedown\ntakedowns\ntaken\ntakeoff\ntakeoffs\ntakeout\ntakeouts\ntakeover\ntakeovers\ntaker\ntakers\ntakes\ntakin\ntaking\ntakingly\ntakings\ntakins\ntala\ntalapoin\ntalapoins\ntalar\ntalaria\ntalars\ntalas\ntalc\ntalced\ntalcing\ntalcked\ntalcking\ntalcky\ntalcose\ntalcous\ntalcs\ntalcum\ntalcums\ntale\ntalebearer\ntalebearers\ntalent\ntalented\ntalents\ntaler\ntalers\ntales\ntalesman\ntalesmen\ntaleteller\ntaletellers\ntaleysim\ntali\ntalion\ntalions\ntaliped\ntalipeds\ntalipes\ntalipot\ntalipots\ntalisman\ntalismanic\ntalismanically\ntalismans\ntalk\ntalkable\ntalkative\ntalkatively\ntalkativeness\ntalked\ntalker\ntalkers\ntalkie\ntalkier\ntalkies\ntalkiest\ntalking\ntalkings\ntalks\ntalky\ntall\ntallage\ntallaged\ntallages\ntallaging\ntallaisim\ntallboy\ntallboys\ntaller\ntallest\ntallied\ntallier\ntalliers\ntallies\ntallish\ntallith\ntallithes\ntallithim\ntallitoth\ntallness\ntallnesses\ntallol\ntallols\ntallow\ntallowed\ntallowing\ntallows\ntallowy\ntally\ntallyho\ntallyhoed\ntallyhoing\ntallyhos\ntallying\ntallyman\ntallymen\ntalmudic\ntalon\ntaloned\ntalons\ntalooka\ntalookas\ntaluk\ntaluka\ntalukas\ntaluks\ntalus\ntaluses\ntam\ntamable\ntamal\ntamale\ntamales\ntamals\ntamandu\ntamandua\ntamanduas\ntamandus\ntamarack\ntamaracks\ntamarao\ntamaraos\ntamarau\ntamaraus\ntamarin\ntamarind\ntamarinds\ntamarins\ntamarisk\ntamarisks\ntamasha\ntamashas\ntambac\ntambacs\ntambala\ntambalas\ntambour\ntamboura\ntambouras\ntamboured\ntambourine\ntambourines\ntambouring\ntambours\ntambur\ntambura\ntamburas\ntamburs\ntame\ntameable\ntamed\ntamein\ntameins\ntameless\ntamely\ntameness\ntamenesses\ntamer\ntamers\ntames\ntamest\ntaming\ntamis\ntamises\ntammie\ntammies\ntammy\ntamp\ntampala\ntampalas\ntampan\ntampans\ntamped\ntamper\ntampered\ntamperer\ntamperers\ntampering\ntampers\ntamping\ntampion\ntampions\ntampon\ntamponed\ntamponing\ntampons\ntamps\ntams\ntan\ntanager\ntanagers\ntanbark\ntanbarks\ntandem\ntandems\ntang\ntanged\ntangelo\ntangelos\ntangence\ntangences\ntangencies\ntangency\ntangent\ntangential\ntangentially\ntangents\ntangerine\ntangerines\ntangibility\ntangible\ntangibleness\ntangibles\ntangibly\ntangier\ntangiest\ntanging\ntangle\ntangled\ntanglement\ntanglements\ntangler\ntanglers\ntangles\ntanglier\ntangliest\ntangling\ntangly\ntango\ntangoed\ntangoing\ntangos\ntangram\ntangrams\ntangs\ntangy\ntanist\ntanistries\ntanistry\ntanists\ntank\ntanka\ntankage\ntankages\ntankard\ntankards\ntankas\ntanked\ntanker\ntankers\ntankful\ntankfuls\ntanking\ntanks\ntankship\ntankships\ntannable\ntannage\ntannages\ntannate\ntannates\ntanned\ntanner\ntanneries\ntanners\ntannery\ntannest\ntannic\ntannin\ntanning\ntannings\ntannins\ntannish\ntanrec\ntanrecs\ntans\ntansies\ntansy\ntantalic\ntantalize\ntantalized\ntantalizes\ntantalizing\ntantalizingly\ntantalum\ntantalums\ntantalus\ntantaluses\ntantamount\ntantara\ntantaras\ntantivies\ntantivy\ntanto\ntantra\ntantras\ntantric\ntantrum\ntantrums\ntanyard\ntanyards\ntao\ntaos\ntap\ntapa\ntapadera\ntapaderas\ntapadero\ntapaderos\ntapalo\ntapalos\ntapas\ntape\ntaped\ntapeless\ntapelike\ntapeline\ntapelines\ntaper\ntapered\ntaperer\ntaperers\ntapering\ntapers\ntapes\ntapestried\ntapestries\ntapestry\ntapestrying\ntapeta\ntapetal\ntapetum\ntapeworm\ntapeworms\ntaphole\ntapholes\ntaphouse\ntaphouses\ntaping\ntapioca\ntapiocas\ntapir\ntapirs\ntapis\ntapises\ntapped\ntapper\ntappers\ntappet\ntappets\ntapping\ntappings\ntaproom\ntaprooms\ntaproot\ntaproots\ntaps\ntapster\ntapsters\ntar\ntarantas\ntarantases\ntarantella\ntarantellas\ntarantula\ntarantulas\ntarboosh\ntarbooshes\ntarbush\ntarbushes\ntardier\ntardies\ntardiest\ntardily\ntardiness\ntardinesses\ntardo\ntardy\ntare\ntared\ntares\ntarge\ntarges\ntarget\ntargeted\ntargeting\ntargets\ntariff\ntariffed\ntariffing\ntariffs\ntaring\ntarlatan\ntarlatans\ntarletan\ntarletans\ntarmac\ntarmacs\ntarn\ntarnal\ntarnally\ntarnish\ntarnishable\ntarnished\ntarnishes\ntarnishing\ntarns\ntaro\ntaroc\ntarocs\ntarok\ntaroks\ntaros\ntarot\ntarots\ntarp\ntarpan\ntarpans\ntarpaper\ntarpapers\ntarpaulin\ntarpaulins\ntarpon\ntarpons\ntarps\ntarragon\ntarragons\ntarre\ntarred\ntarres\ntarried\ntarrier\ntarriers\ntarries\ntarriest\ntarring\ntarry\ntarrying\ntars\ntarsal\ntarsals\ntarsi\ntarsia\ntarsias\ntarsier\ntarsiers\ntarsus\ntart\ntartan\ntartana\ntartanas\ntartans\ntartar\ntartaric\ntartars\ntarted\ntarter\ntartest\ntarting\ntartish\ntartlet\ntartlets\ntartly\ntartness\ntartnesses\ntartrate\ntartrates\ntarts\ntartufe\ntartufes\ntartuffe\ntartuffes\ntarty\ntarweed\ntarweeds\ntarzan\ntarzans\ntas\ntask\ntasked\ntasking\ntaskmaster\ntaskmasters\ntasks\ntaskwork\ntaskworks\ntass\ntasse\ntassel\ntasseled\ntasseling\ntasselled\ntasselling\ntassels\ntasses\ntasset\ntassets\ntassie\ntassies\ntastable\ntaste\ntasted\ntasteful\ntastefully\ntastefulness\ntasteless\ntastelessly\ntastelessness\ntaster\ntasters\ntastes\ntastier\ntastiest\ntastily\ntastiness\ntasting\ntasty\ntat\ntatami\ntatamis\ntatar\ntate\ntater\ntaters\ntates\ntatouay\ntatouays\ntats\ntatted\ntatter\ntatterdemalion\ntatterdemalions\ntattered\ntattering\ntatters\ntattersall\ntattersalls\ntattier\ntattiest\ntatting\ntattings\ntattle\ntattled\ntattler\ntattlers\ntattles\ntattletale\ntattletales\ntattling\ntattoo\ntattooed\ntattooer\ntattooers\ntattooing\ntattooist\ntattooists\ntattoos\ntatty\ntau\ntaught\ntaunt\ntaunted\ntaunter\ntaunters\ntaunting\ntauntingly\ntaunts\ntaupe\ntaupes\ntaurine\ntaurines\ntaus\ntaut\ntautaug\ntautaugs\ntauted\ntauten\ntautened\ntautening\ntautens\ntauter\ntautest\ntauting\ntautly\ntautness\ntautnesses\ntautog\ntautogs\ntautological\ntautologically\ntautologies\ntautologous\ntautologously\ntautology\ntautomer\ntautomers\ntautonym\ntautonyms\ntauts\ntav\ntavern\ntaverner\ntaverners\ntaverns\ntavs\ntaw\ntawdrier\ntawdries\ntawdriest\ntawdrily\ntawdry\ntawed\ntawer\ntawers\ntawie\ntawing\ntawney\ntawneys\ntawnier\ntawnies\ntawniest\ntawnily\ntawny\ntawpie\ntawpies\ntaws\ntawse\ntawsed\ntawses\ntawsing\ntax\ntaxa\ntaxable\ntaxables\ntaxably\ntaxation\ntaxations\ntaxed\ntaxeme\ntaxemes\ntaxemic\ntaxer\ntaxers\ntaxes\ntaxi\ntaxicab\ntaxicabs\ntaxidermist\ntaxidermists\ntaxidermy\ntaxied\ntaxies\ntaxiing\ntaximan\ntaximen\ntaximeter\ntaximeters\ntaxing\ntaxingly\ntaxis\ntaxite\ntaxites\ntaxitic\ntaxiway\ntaxiways\ntaxless\ntaxman\ntaxmen\ntaxon\ntaxonomic\ntaxonomically\ntaxonomies\ntaxonomist\ntaxonomists\ntaxonomy\ntaxons\ntaxpaid\ntaxpayer\ntaxpayers\ntaxpaying\ntaxus\ntaxwise\ntaxying\ntazza\ntazzas\ntazze\ntea\nteaberries\nteaberry\nteaboard\nteaboards\nteabowl\nteabowls\nteabox\nteaboxes\nteacake\nteacakes\nteacart\nteacarts\nteach\nteachable\nteachableness\nteachably\nteacher\nteachers\nteaches\nteaching\nteachings\nteacup\nteacupful\nteacupfuls\nteacups\nteahouse\nteahouses\nteak\nteakettle\nteakettles\nteaks\nteakwood\nteakwoods\nteal\nteals\nteam\nteamaker\nteamakers\nteamed\nteaming\nteammate\nteammates\nteams\nteamster\nteamsters\nteamwork\nteamworks\nteapot\nteapots\nteapoy\nteapoys\ntear\ntearable\nteardown\nteardowns\nteardrop\nteardrops\nteared\ntearer\ntearers\ntearful\ntearfully\ntearfulness\nteargas\nteargases\nteargassed\nteargasses\nteargassing\ntearier\nteariest\ntearily\nteariness\ntearing\ntearless\ntearoom\ntearooms\ntears\nteary\nteas\ntease\nteased\nteasel\nteaseled\nteaseler\nteaselers\nteaseling\nteaselled\nteaselling\nteasels\nteaser\nteasers\nteases\nteashop\nteashops\nteasing\nteasingly\nteaspoon\nteaspoonful\nteaspoonfuls\nteaspoons\nteat\nteated\nteatime\nteatimes\nteats\nteaware\nteawares\nteazel\nteazeled\nteazeling\nteazelled\nteazelling\nteazels\nteazle\nteazled\nteazles\nteazling\nteched\ntechier\ntechiest\ntechily\ntechnetronic\ntechnic\ntechnical\ntechnicalities\ntechnicality\ntechnically\ntechnician\ntechnicians\ntechnics\ntechnique\ntechniques\ntechnocracies\ntechnocracy\ntechnocrat\ntechnocratic\ntechnocrats\ntechnologic\ntechnological\ntechnologically\ntechnologies\ntechnologist\ntechnologists\ntechnologize\ntechnology\ntechnostructure\ntechnostructures\ntechy\ntecta\ntectal\ntectonic\ntectonics\ntectrices\ntectrix\ntectum\nted\ntedded\ntedder\ntedders\nteddies\ntedding\nteddy\ntedious\ntediously\ntediousness\ntedium\ntediums\nteds\ntee\nteed\nteeing\nteel\nteels\nteem\nteemed\nteemer\nteemers\nteeming\nteemingly\nteems\nteen\nteenage\nteenaged\nteenager\nteenagers\nteener\nteeners\nteenful\nteenier\nteeniest\nteens\nteensier\nteensiest\nteensy\nteentsier\nteentsiest\nteentsy\nteeny\nteepee\nteepees\ntees\nteeter\nteetered\nteetering\nteeters\nteeth\nteethe\nteethed\nteether\nteethers\nteethes\nteething\nteethings\nteetotal\nteetotaled\nteetotaler\nteetotalers\nteetotaling\nteetotalism\nteetotalist\nteetotalists\nteetotalled\nteetotaller\nteetotallers\nteetotalling\nteetotally\nteetotals\nteetotum\nteetotums\nteff\nteffs\nteg\ntegmen\ntegmenta\ntegmina\ntegminal\ntegs\ntegua\nteguas\ntegular\ntegumen\ntegument\nteguments\ntegumina\nteiglach\nteiid\nteiids\nteind\nteinds\ntektite\ntektites\ntektitic\ntel\ntela\ntelae\ntelamon\ntelamones\ntele\ntelecast\ntelecasted\ntelecaster\ntelecasters\ntelecasting\ntelecasts\ntelecommunication\ntelecommunications\nteleconference\nteleconferences\nteleconferencing\ntelecourse\ntelecourses\nteledu\nteledus\ntelefilm\ntelefilms\ntelega\ntelegas\ntelegenic\ntelegonies\ntelegony\ntelegram\ntelegrammed\ntelegramming\ntelegrams\ntelegraph\ntelegraphed\ntelegrapher\ntelegraphers\ntelegraphic\ntelegraphing\ntelegraphist\ntelegraphists\ntelegraphs\ntelegraphy\ntelekinesis\ntelekinetic\nteleman\ntelemark\ntelemarks\ntelemen\ntelemeter\ntelemeters\ntelemetries\ntelemetry\nteleologic\nteleological\nteleologically\nteleologies\nteleology\nteleost\nteleosts\ntelepathic\ntelepathically\ntelepathy\ntelephone\ntelephoned\ntelephoner\ntelephoners\ntelephones\ntelephonic\ntelephonically\ntelephoning\ntelephony\ntelephoto\ntelephotographic\ntelephotography\nteleplay\nteleplays\nteleport\nteleported\nteleporting\nteleports\nteleprinter\nteleprinters\nteleprocessing\nteleran\ntelerans\nteles\ntelescope\ntelescoped\ntelescopes\ntelescopic\ntelescopically\ntelescoping\nteleses\ntelesis\ntelethon\ntelethons\nteletypewriter\nteletypewriters\nteleview\nteleviewed\nteleviewer\nteleviewers\nteleviewing\nteleviews\ntelevise\ntelevised\ntelevises\ntelevising\ntelevision\ntelevisionary\ntelevisions\ntelevisor\ntelevisors\ntelex\ntelexed\ntelexes\ntelexing\ntelfer\ntelfered\ntelfering\ntelfers\ntelford\ntelfords\ntelia\ntelial\ntelic\ntelium\ntell\ntellable\nteller\ntellers\ntellies\ntellieses\ntelling\ntells\ntelltale\ntelltales\ntelluric\ntelluride\ntellurides\ntellurium\ntelly\nteloi\ntelome\ntelomes\ntelomic\ntelos\ntelpher\ntelphered\ntelphering\ntelphers\ntels\ntelson\ntelsonic\ntelsons\ntemblor\ntemblores\ntemblors\ntemerities\ntemerity\ntemp\ntempeh\ntempehs\ntemper\ntempera\ntemperable\ntemperament\ntemperamental\ntemperamentally\ntemperaments\ntemperance\ntemperances\ntemperas\ntemperate\ntemperately\ntemperateness\ntemperature\ntemperatures\ntempered\ntemperer\ntemperers\ntempering\ntempers\ntempest\ntempested\ntempesting\ntempests\ntempestuous\ntempestuously\ntempestuousness\ntempi\ntemplar\ntemplars\ntemplate\ntemplates\ntemple\ntempled\ntemples\ntemplet\ntemplets\ntempo\ntemporal\ntemporalities\ntemporality\ntemporally\ntemporals\ntemporaries\ntemporarily\ntemporariness\ntemporary\ntemporization\ntemporizations\ntemporize\ntemporized\ntemporizer\ntemporizers\ntemporizes\ntemporizing\ntempos\ntemps\ntempt\ntemptable\ntemptation\ntemptations\ntempted\ntempter\ntempters\ntempting\ntemptingly\ntemptress\ntemptresses\ntempts\ntempura\ntempuras\nten\ntenability\ntenable\ntenableness\ntenably\ntenace\ntenaces\ntenacious\ntenaciously\ntenaciousness\ntenacities\ntenacity\ntenacula\ntenail\ntenaille\ntenailles\ntenails\ntenancies\ntenancy\ntenant\ntenantable\ntenanted\ntenanting\ntenantless\ntenantries\ntenantry\ntenants\ntench\ntenches\ntend\ntendance\ntendances\ntended\ntendence\ntendences\ntendencies\ntendency\ntendentious\ntendentiously\ntendentiousness\ntender\ntendered\ntenderer\ntenderers\ntenderest\ntenderfeet\ntenderfoot\ntenderfoots\ntenderhearted\ntenderheartedly\ntenderheartedness\ntendering\ntenderization\ntenderizations\ntenderize\ntenderized\ntenderizer\ntenderizers\ntenderizes\ntenderizing\ntenderloin\ntenderloins\ntenderly\ntenderness\ntenders\ntending\ntendon\ntendons\ntendril\ntendrilous\ntendrils\ntends\ntenebrae\ntenement\ntenementary\ntenements\ntenesmic\ntenesmus\ntenesmuses\ntenet\ntenets\ntenfold\ntenfolds\ntenia\nteniae\ntenias\nteniasis\nteniasises\ntenner\ntenners\ntennis\ntennises\ntennist\ntennists\ntenon\ntenoned\ntenoner\ntenoners\ntenoning\ntenons\ntenor\ntenorite\ntenorites\ntenors\ntenotomies\ntenotomy\ntenour\ntenours\ntenpence\ntenpences\ntenpenny\ntenpin\ntenpins\ntenrec\ntenrecs\ntens\ntense\ntensed\ntensely\ntenseness\ntenser\ntenses\ntensest\ntensible\ntensibly\ntensile\ntensility\ntensing\ntension\ntensional\ntensioned\ntensioning\ntensionless\ntensions\ntensities\ntensity\ntensive\ntensor\ntensors\ntent\ntentacle\ntentacled\ntentacles\ntentage\ntentages\ntentative\ntentatively\ntentativeness\ntented\ntenter\ntentered\ntenterhook\ntenterhooks\ntentering\ntenters\ntenth\ntenthly\ntenths\ntentie\ntentier\ntentiest\ntenting\ntentless\ntentlike\ntents\ntenty\ntenues\ntenuis\ntenuities\ntenuity\ntenuous\ntenuously\ntenuousness\ntenure\ntenured\ntenures\ntenurial\ntenurially\ntenuti\ntenuto\ntenutos\nteocalli\nteocallis\nteopan\nteopans\nteosinte\nteosintes\ntepa\ntepal\ntepals\ntepas\ntepee\ntepees\ntepefied\ntepefies\ntepefy\ntepefying\ntephra\ntephras\ntephrite\ntephrites\ntepid\ntepidities\ntepidity\ntepidly\ntepidness\ntepoy\ntequila\ntequilas\nterai\nterais\nteraohm\nteraohms\nteraph\nteraphim\nteratism\nteratisms\nteratoid\nteratoma\nteratomas\nteratomata\nterbia\nterbias\nterbic\nterbium\nterbiums\nterce\ntercel\ntercelet\ntercelets\ntercels\ntercentenaries\ntercentenary\ntercentennial\ntercentennials\nterces\ntercet\ntercets\nterebene\nterebenes\nterebic\nteredines\nteredo\nteredos\nterefah\nterete\nterga\ntergal\ntergite\ntergites\ntergiversate\ntergiversated\ntergiversates\ntergiversating\ntergiversation\ntergiversations\ntergiversator\ntergiversators\ntergum\nteriyaki\nteriyakis\nterm\ntermagant\ntermagants\ntermed\ntermer\ntermers\nterminable\nterminableness\nterminably\nterminal\nterminally\nterminals\nterminate\nterminated\nterminates\nterminating\ntermination\nterminational\nterminations\nterminative\nterminatively\nterminator\nterminators\nterming\ntermini\nterminological\nterminologically\nterminologies\nterminology\nterminus\nterminuses\ntermite\ntermites\ntermitic\ntermless\ntermly\ntermor\ntermors\nterms\ntermtime\ntermtimes\ntern\nternaries\nternary\nternate\nterne\nternes\nternion\nternions\nterns\nterpene\nterpenes\nterpenic\nterpinol\nterpinols\nterpsichorean\nterpsichoreans\nterra\nterrace\nterraced\nterraces\nterracing\nterrae\nterrain\nterrains\nterrane\nterranes\nterrapin\nterrapins\nterraria\nterrarium\nterrariums\nterras\nterrases\nterrazzo\nterrazzos\nterreen\nterreens\nterrella\nterrellas\nterrene\nterrenes\nterrestrial\nterrestrially\nterrestrials\nterret\nterrets\nterrible\nterribleness\nterribly\nterrier\nterriers\nterries\nterrific\nterrifically\nterrified\nterrifies\nterrify\nterrifying\nterrifyingly\nterrine\nterrines\nterrit\nterritorial\nterritorialities\nterritoriality\nterritorialization\nterritorializations\nterritorialize\nterritorialized\nterritorializes\nterritorializing\nterritorially\nterritories\nterritory\nterrits\nterror\nterrorism\nterrorisms\nterrorist\nterroristic\nterrorists\nterrorization\nterrorizations\nterrorize\nterrorized\nterrorizes\nterrorizing\nterrorless\nterrors\nterry\nterse\ntersely\nterseness\nterser\ntersest\ntertial\ntertials\ntertian\ntertians\ntertiaries\ntertiary\ntesla\nteslas\ntessellate\ntessellated\ntessellates\ntessellating\ntessellation\ntessellations\ntessera\ntesserae\ntest\ntesta\ntestability\ntestable\ntestacies\ntestacy\ntestae\ntestament\ntestamentary\ntestaments\ntestate\ntestator\ntestators\ntested\ntestee\ntestees\ntester\ntesters\ntestes\ntesticle\ntesticles\ntestier\ntestiest\ntestified\ntestifies\ntestify\ntestifying\ntestily\ntestimonial\ntestimonials\ntestimonies\ntestimony\ntestiness\ntesting\ntestis\nteston\ntestons\ntestoon\ntestoons\ntests\ntestudines\ntestudo\ntestudos\ntesty\ntet\ntetanal\ntetanic\ntetanics\ntetanies\ntetanise\ntetanised\ntetanises\ntetanising\ntetanize\ntetanized\ntetanizes\ntetanizing\ntetanoid\ntetanus\ntetanuses\ntetany\ntetched\ntetchier\ntetchiest\ntetchily\ntetchy\nteth\ntether\ntethered\ntethering\ntethers\nteths\ntetotum\ntetotums\ntetra\ntetrachloride\ntetrachlorides\ntetracid\ntetracids\ntetracycline\ntetracyclines\ntetrad\ntetradic\ntetrads\ntetragon\ntetragons\ntetrahedra\ntetrahedral\ntetrahedrally\ntetrahedron\ntetrahedrons\ntetralogies\ntetralogy\ntetramer\ntetramers\ntetrapod\ntetrapods\ntetrarch\ntetrarchs\ntetras\ntetrode\ntetrodes\ntetroxid\ntetroxids\ntetryl\ntetryls\ntets\ntetter\ntetters\nteuch\nteugh\nteughly\ntew\ntewed\ntewing\ntews\ntexas\ntexases\ntext\ntextbook\ntextbookish\ntextbooks\ntextile\ntextiles\ntextless\ntexts\ntextual\ntextually\ntextuaries\ntextuary\ntextural\ntexturally\ntexture\ntextured\ntextures\ntexturing\nthack\nthacked\nthacking\nthacks\nthae\nthairm\nthairms\nthalami\nthalamic\nthalamus\nthaler\nthalers\nthalli\nthallic\nthallium\nthalliums\nthalloid\nthallous\nthallus\nthalluses\nthan\nthanage\nthanages\nthanatos\nthanatoses\nthane\nthanes\nthank\nthanked\nthanker\nthankers\nthankful\nthankfuller\nthankfullest\nthankfully\nthankfulness\nthanking\nthankless\nthanklessly\nthanklessness\nthanks\nthanksgiving\nthanksgivings\ntharm\ntharms\nthat\nthataway\nthatch\nthatched\nthatcher\nthatchers\nthatches\nthatching\nthatchy\nthaw\nthawed\nthawer\nthawers\nthawing\nthawless\nthaws\nthe\nthearchies\nthearchy\ntheater\ntheaters\ntheatre\ntheatres\ntheatric\ntheatrical\ntheatricality\ntheatrically\ntheatricals\ntheatrics\nthebaine\nthebaines\nthebe\ntheca\nthecae\nthecal\nthecate\nthee\ntheelin\ntheelins\ntheelol\ntheelols\ntheft\nthefts\nthegn\nthegnly\nthegns\nthein\ntheine\ntheines\ntheins\ntheir\ntheirs\ntheism\ntheisms\ntheist\ntheistic\ntheistical\ntheistically\ntheists\nthelitis\nthelitises\nthem\nthematic\nthematically\ntheme\nthemes\nthemselves\nthen\nthenage\nthenages\nthenal\nthenar\nthenars\nthence\nthenceforth\nthenceforward\nthenceforwards\nthens\ntheocracies\ntheocracy\ntheocrat\ntheocratic\ntheocratical\ntheocratically\ntheocrats\ntheodicies\ntheodicy\ntheodolite\ntheodolites\ntheodolitic\ntheogonies\ntheogony\ntheolog\ntheologian\ntheologians\ntheological\ntheologically\ntheologies\ntheologize\ntheologized\ntheologizer\ntheologizers\ntheologizes\ntheologizing\ntheologs\ntheology\ntheonomies\ntheonomy\ntheorbo\ntheorbos\ntheorem\ntheorematic\ntheorems\ntheoretic\ntheoretical\ntheoretically\ntheoretician\ntheoreticians\ntheoretics\ntheories\ntheorise\ntheorised\ntheorises\ntheorising\ntheorist\ntheorists\ntheorization\ntheorizations\ntheorize\ntheorized\ntheorizer\ntheorizers\ntheorizes\ntheorizing\ntheory\ntheosophical\ntheosophically\ntheosophist\ntheosophists\ntheosophy\ntherapeutic\ntherapeutically\ntherapeutics\ntherapeutist\ntherapeutists\ntherapies\ntherapist\ntherapists\ntherapy\nthere\nthereabout\nthereabouts\nthereafter\nthereat\nthereby\ntherefor\ntherefore\ntherefrom\ntherein\nthereinafter\nthereinto\ntheremin\ntheremins\nthereof\nthereon\ntheres\nthereto\ntheretofore\nthereunder\nthereupon\ntherewith\ntheriac\ntheriaca\ntheriacas\ntheriacs\ntherm\nthermae\nthermal\nthermally\nthermals\ntherme\nthermel\nthermels\nthermes\nthermic\nthermion\nthermions\nthermite\nthermites\nthermocouple\nthermocouples\nthermodynamic\nthermodynamical\nthermodynamically\nthermodynamicist\nthermodynamicists\nthermodynamics\nthermoelectric\nthermoelectricity\nthermometer\nthermometers\nthermometric\nthermometrically\nthermometries\nthermometry\nthermonuclear\nthermopile\nthermopiles\nthermoplastic\nthermoplasticity\nthermoplastics\nthermos\nthermoses\nthermoset\nthermosets\nthermosetting\nthermostat\nthermostatic\nthermostatically\nthermostats\ntherms\ntheroid\ntheropod\ntheropods\nthesauri\nthesaurus\nthesauruses\nthese\ntheses\nthesis\nthespian\nthespians\ntheta\nthetas\nthetic\nthetical\ntheurgic\ntheurgies\ntheurgy\nthew\nthewless\nthews\nthewy\nthey\nthiamin\nthiamine\nthiamines\nthiamins\nthiazide\nthiazides\nthiazin\nthiazine\nthiazines\nthiazins\nthiazol\nthiazole\nthiazoles\nthiazols\nthick\nthicken\nthickened\nthickener\nthickeners\nthickening\nthickenings\nthickens\nthicker\nthickest\nthicket\nthickets\nthickety\nthickish\nthickly\nthickness\nthicknesses\nthicks\nthickset\nthicksets\nthief\nthieve\nthieved\nthieveries\nthievery\nthieves\nthieving\nthievingly\nthievish\nthievishly\nthievishness\nthigh\nthighbone\nthighbones\nthighed\nthighs\nthill\nthills\nthimble\nthimbleful\nthimblefuls\nthimbles\nthin\nthinclad\nthinclads\nthindown\nthindowns\nthine\nthing\nthings\nthink\nthinkable\nthinker\nthinkers\nthinking\nthinkingly\nthinkings\nthinks\nthinly\nthinned\nthinner\nthinners\nthinness\nthinnesses\nthinnest\nthinning\nthinnish\nthins\nthio\nthiol\nthiolic\nthiols\nthionate\nthionates\nthionic\nthionin\nthionine\nthionines\nthionins\nthionyl\nthionyls\nthiophen\nthiophens\nthiotepa\nthiotepas\nthiourea\nthioureas\nthir\nthiram\nthirams\nthird\nthirdly\nthirds\nthirl\nthirlage\nthirlages\nthirled\nthirling\nthirls\nthirst\nthirsted\nthirster\nthirsters\nthirstier\nthirstiest\nthirstily\nthirstiness\nthirsting\nthirsts\nthirsty\nthirteen\nthirteens\nthirteenth\nthirteenths\nthirties\nthirtieth\nthirtieths\nthirty\nthis\nthistle\nthistledown\nthistles\nthistly\nthither\nthitherto\ntho\nthole\ntholed\ntholepin\ntholepins\ntholes\ntholing\ntholoi\ntholos\nthong\nthonged\nthongs\nthoracal\nthoraces\nthoracic\nthorax\nthoraxes\nthoria\nthorias\nthoric\nthorite\nthorites\nthorium\nthoriums\nthorn\nthorned\nthornier\nthorniest\nthornily\nthorniness\nthorning\nthornless\nthornlike\nthorns\nthorny\nthoro\nthoron\nthorons\nthorough\nthoroughbred\nthoroughbreds\nthorougher\nthoroughest\nthoroughfare\nthoroughfares\nthoroughgoing\nthoroughly\nthoroughness\nthorp\nthorpe\nthorpes\nthorps\nthose\nthou\nthoued\nthough\nthought\nthoughtful\nthoughtfully\nthoughtfulness\nthoughtless\nthoughtlessly\nthoughtlessness\nthoughts\nthouing\nthous\nthousand\nthousandfold\nthousands\nthousandth\nthousandths\nthowless\nthraldom\nthraldoms\nthrall\nthralled\nthralling\nthralls\nthrash\nthrashed\nthrasher\nthrashers\nthrashes\nthrashing\nthrave\nthraves\nthraw\nthrawart\nthrawed\nthrawing\nthrawn\nthrawnly\nthraws\nthread\nthreadbare\nthreadbareness\nthreaded\nthreader\nthreaders\nthreadier\nthreadiest\nthreadiness\nthreading\nthreadless\nthreadlike\nthreads\nthready\nthreap\nthreaped\nthreaper\nthreapers\nthreaping\nthreaps\nthreat\nthreated\nthreaten\nthreatened\nthreatener\nthreateners\nthreatening\nthreateningly\nthreatens\nthreating\nthreats\nthree\nthreefold\nthreep\nthreeped\nthreeping\nthreeps\nthrees\nthreescore\nthreesome\nthreesomes\nthrenode\nthrenodes\nthrenodies\nthrenodist\nthrenodists\nthrenody\nthresh\nthreshed\nthresher\nthreshers\nthreshes\nthreshing\nthreshold\nthresholds\nthrew\nthrice\nthrift\nthriftier\nthriftiest\nthriftily\nthriftiness\nthriftless\nthriftlessly\nthriftlessness\nthrifts\nthrifty\nthrill\nthrilled\nthriller\nthrillers\nthrilling\nthrillingly\nthrills\nthrip\nthrips\nthrive\nthrived\nthriven\nthriver\nthrivers\nthrives\nthriving\nthrivingly\nthro\nthroat\nthroated\nthroatier\nthroatiest\nthroatily\nthroatiness\nthroating\nthroats\nthroaty\nthrob\nthrobbed\nthrobber\nthrobbers\nthrobbing\nthrobs\nthroe\nthroes\nthrombi\nthrombin\nthrombins\nthrombus\nthrone\nthroned\nthrones\nthrong\nthronged\nthronging\nthrongs\nthroning\nthrostle\nthrostles\nthrottle\nthrottled\nthrottler\nthrottlers\nthrottles\nthrottling\nthrough\nthroughout\nthroughput\nthroughputs\nthrove\nthrow\nthrowaway\nthrowaways\nthrowback\nthrowbacks\nthrower\nthrowers\nthrowing\nthrown\nthrows\nthru\nthrum\nthrummed\nthrummer\nthrummers\nthrummier\nthrummiest\nthrumming\nthrummy\nthrums\nthruput\nthruputs\nthrush\nthrushes\nthrust\nthrusted\nthruster\nthrusters\nthrusting\nthrustor\nthrustors\nthrusts\nthruway\nthruways\nthud\nthudded\nthudding\nthuds\nthug\nthuggee\nthuggees\nthuggeries\nthuggery\nthuggish\nthugs\nthuja\nthujas\nthulia\nthulias\nthulium\nthuliums\nthumb\nthumbed\nthumbing\nthumbkin\nthumbkins\nthumbnail\nthumbnails\nthumbnut\nthumbnuts\nthumbs\nthumbscrew\nthumbscrews\nthumbtack\nthumbtacks\nthump\nthumped\nthumper\nthumpers\nthumping\nthumps\nthunder\nthunderbolt\nthunderbolts\nthunderclap\nthunderclaps\nthundercloud\nthunderclouds\nthundered\nthunderhead\nthunderheads\nthundering\nthunderingly\nthunderous\nthunderously\nthunders\nthundershower\nthundershowers\nthunderstorm\nthunderstorms\nthundery\nthunk\nthurible\nthuribles\nthurifer\nthurifers\nthurl\nthurls\nthus\nthusly\nthuya\nthuyas\nthwack\nthwacked\nthwacker\nthwackers\nthwacking\nthwacks\nthwart\nthwarted\nthwarter\nthwarters\nthwarting\nthwartly\nthwarts\nthy\nthyme\nthymes\nthymey\nthymi\nthymic\nthymier\nthymiest\nthymine\nthymines\nthymol\nthymols\nthymus\nthymuses\nthymy\nthyreoid\nthyroid\nthyroids\nthyroxin\nthyroxine\nthyroxines\nthyroxins\nthyrse\nthyrses\nthyrsoid\nthyrsus\nthyrsusi\nthyself\nti\ntiara\ntiaraed\ntiaras\ntibia\ntibiae\ntibial\ntibias\ntic\ntical\nticals\ntick\nticked\nticker\ntickers\nticket\nticketed\nticketing\ntickets\nticking\ntickings\ntickle\ntickled\ntickler\nticklers\ntickles\ntickling\nticklish\nticklishly\nticklishness\nticks\ntickseed\ntickseeds\nticktack\nticktacked\nticktacking\nticktacks\nticktock\nticktocked\nticktocking\nticktocks\ntics\ntictac\ntictacked\ntictacking\ntictacs\ntictoc\ntictocked\ntictocking\ntictocs\ntidal\ntidally\ntidbit\ntidbits\ntiddly\ntide\ntided\ntideland\ntidelands\ntideless\ntidelike\ntidemark\ntidemarks\ntiderip\ntiderips\ntides\ntidewater\ntidewaters\ntideway\ntideways\ntidied\ntidier\ntidies\ntidiest\ntidily\ntidiness\ntidinesses\ntiding\ntidings\ntidy\ntidying\ntidytips\ntie\ntieback\ntiebacks\ntieclasp\ntieclasps\ntied\ntieing\ntiepin\ntiepins\ntier\ntierce\ntierced\ntiercel\ntiercels\ntierces\ntiered\ntiering\ntiers\nties\ntiff\ntiffanies\ntiffany\ntiffed\ntiffin\ntiffined\ntiffing\ntiffining\ntiffins\ntiffs\ntiger\ntigereye\ntigereyes\ntigerish\ntigerlike\ntigers\ntight\ntighten\ntightened\ntightener\ntighteners\ntightening\ntightens\ntighter\ntightest\ntightly\ntightness\ntightrope\ntightropes\ntights\ntightwad\ntightwads\ntiglon\ntiglons\ntigon\ntigons\ntigress\ntigresses\ntigrish\ntike\ntikes\ntiki\ntikis\ntil\ntilak\ntilapia\ntilapias\ntilburies\ntilbury\ntilde\ntildes\ntile\ntiled\ntilefish\ntilefishes\ntilelike\ntiler\ntilers\ntiles\ntiling\ntilings\ntill\ntillable\ntillage\ntillages\ntilled\ntiller\ntillered\ntillering\ntillerless\ntillers\ntilling\ntills\ntils\ntilt\ntiltable\ntilted\ntilter\ntilters\ntilth\ntilths\ntilting\ntilts\ntiltyard\ntiltyards\ntimarau\ntimaraus\ntimbal\ntimbale\ntimbales\ntimbals\ntimber\ntimbered\ntimbering\ntimberland\ntimberlands\ntimberless\ntimberline\ntimberlines\ntimbers\ntimbre\ntimbrel\ntimbrels\ntimbres\ntime\ntimecard\ntimecards\ntimed\ntimekeeper\ntimekeepers\ntimeless\ntimelessly\ntimelessness\ntimelier\ntimeliest\ntimeliness\ntimely\ntimeous\ntimeout\ntimeouts\ntimepiece\ntimepieces\ntimer\ntimers\ntimes\ntimesaving\ntimeshare\ntimesharing\ntimetable\ntimetables\ntimework\ntimeworks\ntimeworn\ntimid\ntimider\ntimidest\ntimidities\ntimidity\ntimidly\ntimidness\ntiming\ntimings\ntimorous\ntimorously\ntimorousness\ntimothies\ntimothy\ntimpana\ntimpani\ntimpanist\ntimpanists\ntimpano\ntimpanum\ntimpanums\ntin\ntinamou\ntinamous\ntincal\ntincals\ntinct\ntincted\ntincting\ntincts\ntincture\ntinctured\ntinctures\ntincturing\ntinder\ntinderbox\ntinderboxes\ntinders\ntindery\ntine\ntinea\ntineal\ntineas\ntined\ntineid\ntineids\ntines\ntinfoil\ntinfoils\ntinful\ntinfuls\nting\ntinge\ntinged\ntingeing\ntinges\ntinging\ntingle\ntingled\ntingler\ntinglers\ntingles\ntinglier\ntingliest\ntingling\ntinglingly\ntingly\ntings\ntinhorn\ntinhorns\ntinier\ntiniest\ntinily\ntininess\ntininesses\ntining\ntinker\ntinkered\ntinkerer\ntinkerers\ntinkering\ntinkers\ntinkle\ntinkled\ntinkles\ntinklier\ntinkliest\ntinkling\ntinklings\ntinkly\ntinlike\ntinman\ntinmen\ntinned\ntinner\ntinners\ntinnier\ntinniest\ntinnily\ntinning\ntinnitus\ntinnituses\ntinny\ntinplate\ntinplates\ntins\ntinsel\ntinseled\ntinseling\ntinselled\ntinselling\ntinselly\ntinsels\ntinsmith\ntinsmiths\ntinstone\ntinstones\ntint\ntinted\ntinter\ntinters\ntinting\ntintings\ntintinnabulary\ntintinnabulation\ntintinnabulations\ntintless\ntints\ntintype\ntintypes\ntinware\ntinwares\ntinwork\ntinworks\ntiny\ntip\ntipcart\ntipcarts\ntipcat\ntipcats\ntipi\ntipis\ntipless\ntipoff\ntipoffs\ntippable\ntipped\ntipper\ntippers\ntippet\ntippets\ntippier\ntippiest\ntipping\ntipple\ntippled\ntippler\ntipplers\ntipples\ntippling\ntippy\ntips\ntipsier\ntipsiest\ntipsily\ntipsiness\ntipstaff\ntipstaffs\ntipstaves\ntipster\ntipsters\ntipstock\ntipstocks\ntipsy\ntiptoe\ntiptoed\ntiptoeing\ntiptoes\ntiptop\ntiptops\ntirade\ntirades\ntire\ntired\ntireder\ntiredest\ntiredly\ntiredness\ntireless\ntirelessly\ntirelessness\ntires\ntiresome\ntiresomely\ntiresomeness\ntiring\ntirl\ntirled\ntirling\ntirls\ntiro\ntiros\ntirrivee\ntirrivees\ntis\ntisane\ntisanes\ntissual\ntissue\ntissued\ntissues\ntissuey\ntissuing\ntit\ntitan\ntitanate\ntitanates\ntitaness\ntitanesses\ntitania\ntitanias\ntitanic\ntitanically\ntitanism\ntitanisms\ntitanite\ntitanites\ntitanium\ntitaniums\ntitanous\ntitans\ntitbit\ntitbits\ntiter\ntiters\ntithable\ntithe\ntithed\ntither\ntithers\ntithes\ntithing\ntithings\ntithonia\ntithonias\ntiti\ntitian\ntitians\ntitillate\ntitillated\ntitillates\ntitillating\ntitillatingly\ntitillation\ntitillations\ntitillative\ntitis\ntitivate\ntitivated\ntitivates\ntitivating\ntitlark\ntitlarks\ntitle\ntitled\ntitleholder\ntitleholders\ntitles\ntitling\ntitlist\ntitlists\ntitman\ntitmen\ntitmice\ntitmouse\ntitrable\ntitrant\ntitrants\ntitrate\ntitrated\ntitrates\ntitrating\ntitrator\ntitrators\ntitre\ntitres\ntits\ntitter\ntittered\ntitterer\ntitterers\ntittering\ntitters\ntittie\ntitties\ntittle\ntittles\ntittup\ntittuped\ntittuping\ntittupped\ntittupping\ntittuppy\ntittups\ntitty\ntitular\ntitularies\ntitularly\ntitulars\ntitulary\ntivy\ntizzies\ntizzy\ntmeses\ntmesis\nto\ntoad\ntoadfish\ntoadfishes\ntoadflax\ntoadflaxes\ntoadied\ntoadies\ntoadish\ntoadless\ntoadlike\ntoads\ntoadstool\ntoadstools\ntoady\ntoadying\ntoadyish\ntoadyism\ntoadyisms\ntoast\ntoasted\ntoaster\ntoasters\ntoastier\ntoastiest\ntoasting\ntoastmaster\ntoastmasters\ntoastmistress\ntoastmistresses\ntoasts\ntoasty\ntobacco\ntobaccoes\ntobacconist\ntobacconists\ntobaccos\ntobies\ntoboggan\ntobogganed\ntobogganer\ntobogganers\ntobogganing\ntobogganist\ntobogganists\ntoboggans\ntoby\ntoccata\ntoccatas\ntoccate\ntocher\ntochered\ntochering\ntochers\ntocologies\ntocology\ntocsin\ntocsins\ntod\ntoday\ntodays\ntoddies\ntoddle\ntoddled\ntoddler\ntoddlers\ntoddles\ntoddling\ntoddy\ntodies\ntods\ntody\ntoe\ntoea\ntoecap\ntoecaps\ntoed\ntoehold\ntoeholds\ntoeing\ntoeless\ntoelike\ntoenail\ntoenailed\ntoenailing\ntoenails\ntoepiece\ntoepieces\ntoeplate\ntoeplates\ntoes\ntoeshoe\ntoeshoes\ntoff\ntoffee\ntoffees\ntoffies\ntoffs\ntoffy\ntoft\ntofts\ntofu\ntofus\ntog\ntoga\ntogae\ntogaed\ntogas\ntogate\ntogated\ntogether\ntogetherness\ntogged\ntoggeries\ntoggery\ntogging\ntoggle\ntoggled\ntoggler\ntogglers\ntoggles\ntoggling\ntogs\ntogue\ntogues\ntoil\ntoile\ntoiled\ntoiler\ntoilers\ntoiles\ntoilet\ntoileted\ntoileting\ntoiletries\ntoiletry\ntoilets\ntoilette\ntoilettes\ntoilful\ntoiling\ntoils\ntoilsome\ntoilsomely\ntoilsomeness\ntoilworn\ntoit\ntoited\ntoiting\ntoits\ntokay\ntokays\ntoke\ntoked\ntoken\ntokened\ntokening\ntokenism\ntokenisms\ntokens\ntoker\ntokes\ntokologies\ntokology\ntokonoma\ntokonomas\ntola\ntolan\ntolane\ntolanes\ntolans\ntolas\ntolbooth\ntolbooths\ntold\ntole\ntoled\ntoledo\ntoledos\ntolerability\ntolerable\ntolerably\ntolerance\ntolerances\ntolerant\ntolerantly\ntolerate\ntolerated\ntolerates\ntolerating\ntoleration\ntolerations\ntolerative\ntolerator\ntolerators\ntoles\ntolidin\ntolidine\ntolidines\ntolidins\ntoling\ntoll\ntollage\ntollages\ntollbar\ntollbars\ntollbooth\ntollbooths\ntolled\ntoller\ntollers\ntollgate\ntollgates\ntolling\ntollman\ntollmen\ntolls\ntollway\ntollways\ntolu\ntoluate\ntoluates\ntoluene\ntoluenes\ntoluic\ntoluid\ntoluide\ntoluides\ntoluidin\ntoluidins\ntoluids\ntoluol\ntoluole\ntoluoles\ntoluols\ntolus\ntoluyl\ntoluyls\ntolyl\ntolyls\ntom\ntomahawk\ntomahawked\ntomahawking\ntomahawks\ntomalley\ntomalleys\ntoman\ntomans\ntomato\ntomatoes\ntomb\ntombac\ntomback\ntombacks\ntombacs\ntombak\ntombaks\ntombal\ntombed\ntombing\ntombless\ntomblike\ntombolo\ntombolos\ntomboy\ntomboyish\ntomboyishness\ntomboys\ntombs\ntombstone\ntombstones\ntomcat\ntomcats\ntomcod\ntomcods\ntome\ntomenta\ntomentum\ntomes\ntomfool\ntomfooleries\ntomfoolery\ntomfools\ntommies\ntommy\ntommyrot\ntommyrots\ntomogram\ntomograms\ntomorrow\ntomorrows\ntompion\ntompions\ntoms\ntomtit\ntomtits\nton\ntonal\ntonalities\ntonality\ntonally\ntondi\ntondo\ntone\ntoned\ntoneless\ntonelessly\ntonelessness\ntoneme\ntonemes\ntonemic\ntoner\ntoners\ntones\ntonetic\ntonetics\ntonette\ntonettes\ntoney\ntong\ntonga\ntongas\ntonged\ntonger\ntongers\ntonging\ntongman\ntongmen\ntongs\ntongue\ntongued\ntongueless\ntonguelike\ntongues\ntonguetieing\ntonguing\ntonguings\ntonic\ntonically\ntonicities\ntonicity\ntonics\ntonier\ntoniest\ntonight\ntonights\ntoning\ntonish\ntonishly\ntonlet\ntonlets\ntonnage\ntonnages\ntonne\ntonneau\ntonneaus\ntonneaux\ntonner\ntonners\ntonnes\ntonnish\ntons\ntonsil\ntonsilar\ntonsillar\ntonsillectomies\ntonsillectomy\ntonsillitis\ntonsils\ntonsure\ntonsured\ntonsures\ntonsuring\ntontine\ntontines\ntonus\ntonuses\ntony\ntoo\ntook\ntool\ntoolbox\ntoolboxes\ntooled\ntooler\ntoolers\ntoolhead\ntoolheads\ntooling\ntoolings\ntoolless\ntoolmaker\ntoolmakers\ntoolmaking\ntoolroom\ntoolrooms\ntools\ntoolshed\ntoolsheds\ntoom\ntoon\ntoons\ntoot\ntooted\ntooter\ntooters\ntooth\ntoothache\ntoothaches\ntoothbrush\ntoothbrushes\ntoothed\ntoothier\ntoothiest\ntoothily\ntoothing\ntoothless\ntoothlike\ntoothpaste\ntoothpastes\ntoothpick\ntoothpicks\ntooths\ntoothsome\ntoothsomely\ntoothsomeness\ntoothy\ntooting\ntootle\ntootled\ntootler\ntootlers\ntootles\ntootling\ntoots\ntootses\ntootsie\ntootsies\ntootsy\ntop\ntopaz\ntopazes\ntopazine\ntopcoat\ntopcoats\ntopcross\ntopcrosses\ntope\ntoped\ntopee\ntopees\ntoper\ntopers\ntopes\ntopful\ntopfull\ntoph\ntophe\ntophes\ntophi\ntophs\ntophus\ntopi\ntopiaries\ntopiary\ntopic\ntopical\ntopicalities\ntopicality\ntopically\ntopics\ntoping\ntopis\ntopkick\ntopkicks\ntopknot\ntopknots\ntopless\ntoploftier\ntoploftiest\ntoplofty\ntopmast\ntopmasts\ntopmost\ntopnotch\ntopographer\ntopographers\ntopographic\ntopographical\ntopographically\ntopographies\ntopography\ntopoi\ntopological\ntopologically\ntopologies\ntopologist\ntopologists\ntopology\ntoponym\ntoponymies\ntoponyms\ntoponymy\ntopos\ntopotype\ntopotypes\ntopped\ntopper\ntoppers\ntopping\ntoppings\ntopple\ntoppled\ntopples\ntoppling\ntops\ntopsail\ntopsails\ntopside\ntopsides\ntopsoil\ntopsoiled\ntopsoiling\ntopsoils\ntopstone\ntopstones\ntopwork\ntopworked\ntopworking\ntopworks\ntoque\ntoques\ntoquet\ntoquets\ntor\ntora\ntorah\ntorahs\ntoras\ntorc\ntorch\ntorchbearer\ntorchbearers\ntorched\ntorchere\ntorcheres\ntorches\ntorchier\ntorchiers\ntorching\ntorchlight\ntorchlights\ntorchon\ntorchons\ntorcs\ntore\ntoreador\ntoreadors\ntorero\ntoreros\ntores\ntoreutic\ntori\ntoric\ntories\ntorii\ntorment\ntormented\ntormenter\ntormenters\ntormenting\ntormentor\ntormentors\ntorments\ntorn\ntornadic\ntornado\ntornadoes\ntornados\ntornillo\ntornillos\ntoro\ntoroid\ntoroidal\ntoroids\ntoros\ntorose\ntorosities\ntorosity\ntorot\ntorous\ntorpedo\ntorpedoed\ntorpedoes\ntorpedoing\ntorpedos\ntorpid\ntorpidity\ntorpidly\ntorpids\ntorpor\ntorpors\ntorquate\ntorque\ntorqued\ntorquer\ntorquers\ntorques\ntorqueses\ntorquing\ntorr\ntorrefied\ntorrefies\ntorrefy\ntorrefying\ntorrent\ntorrential\ntorrentially\ntorrents\ntorrid\ntorrider\ntorridest\ntorridity\ntorridly\ntorridness\ntorrified\ntorrifies\ntorrify\ntorrifying\ntors\ntorsade\ntorsades\ntorse\ntorses\ntorsi\ntorsion\ntorsional\ntorsionally\ntorsions\ntorsk\ntorsks\ntorso\ntorsos\ntort\ntorte\ntorten\ntortes\ntortile\ntortilla\ntortillas\ntortious\ntortoise\ntortoises\ntortoni\ntortonis\ntortrix\ntortrixes\ntorts\ntortuous\ntortuously\ntortuousness\ntorture\ntortured\ntorturer\ntorturers\ntortures\ntorturing\ntorturous\ntorturously\ntorula\ntorulae\ntorulas\ntorus\ntory\ntosh\ntoshes\ntoss\ntossed\ntosser\ntossers\ntosses\ntossing\ntosspot\ntosspots\ntossup\ntossups\ntost\ntot\ntotable\ntotal\ntotaled\ntotaling\ntotalise\ntotalised\ntotalises\ntotalising\ntotalism\ntotalisms\ntotalitarian\ntotalitarianism\ntotalitarianisms\ntotalitarians\ntotalities\ntotality\ntotalizator\ntotalizators\ntotalize\ntotalized\ntotalizer\ntotalizers\ntotalizes\ntotalizing\ntotalled\ntotalling\ntotally\ntotals\ntote\ntoted\ntotem\ntotemic\ntotemism\ntotemisms\ntotemist\ntotemists\ntotemite\ntotemites\ntotems\ntoter\ntoters\ntotes\ntother\ntoting\ntots\ntotted\ntotter\ntottered\ntotterer\ntotterers\ntottering\ntotteringly\ntotters\ntottery\ntotting\ntoucan\ntoucans\ntouch\ntouchable\ntouchback\ntouchbacks\ntouchdown\ntouchdowns\ntouche\ntouched\ntoucher\ntouchers\ntouches\ntouchhole\ntouchholes\ntouchier\ntouchiest\ntouchily\ntouchiness\ntouching\ntouchingly\ntouchstone\ntouchstones\ntouchup\ntouchups\ntouchy\ntough\ntoughen\ntoughened\ntoughening\ntoughens\ntougher\ntoughest\ntoughie\ntoughies\ntoughish\ntoughly\ntoughness\ntoughs\ntoughy\ntoupee\ntoupees\ntour\ntouraco\ntouracos\ntoured\ntourer\ntourers\ntouring\ntourings\ntourism\ntourisms\ntourist\ntouristic\ntouristically\ntourists\ntouristy\ntourmaline\ntourmalines\ntournament\ntournaments\ntourney\ntourneyed\ntourneying\ntourneys\ntourniquet\ntourniquets\ntours\ntouse\ntoused\ntouses\ntousing\ntousle\ntousled\ntousles\ntousling\ntout\ntouted\ntouter\ntouters\ntouting\ntouts\ntouzle\ntouzled\ntouzles\ntouzling\ntovarich\ntovariches\ntovarish\ntovarishes\ntow\ntowage\ntowages\ntoward\ntowardly\ntowards\ntowaway\ntowaways\ntowboat\ntowboats\ntowed\ntowel\ntoweled\ntoweling\ntowelings\ntowelled\ntowelling\ntowels\ntower\ntowered\ntowerier\ntoweriest\ntowering\ntowerlike\ntowers\ntowery\ntowhead\ntowheaded\ntowheads\ntowhee\ntowhees\ntowie\ntowies\ntowing\ntowline\ntowlines\ntowmond\ntowmonds\ntowmont\ntowmonts\ntown\ntownee\ntownees\ntownfolk\ntownie\ntownies\ntownish\ntownless\ntownlet\ntownlets\ntowns\ntownship\ntownships\ntownsman\ntownsmen\ntownspeople\ntownwear\ntownwears\ntowny\ntowpath\ntowpaths\ntowrope\ntowropes\ntows\ntowy\ntoxaemia\ntoxaemias\ntoxaemic\ntoxemia\ntoxemias\ntoxemic\ntoxic\ntoxical\ntoxicant\ntoxicants\ntoxicities\ntoxicity\ntoxicologic\ntoxicological\ntoxicologically\ntoxicologist\ntoxicologists\ntoxicology\ntoxin\ntoxine\ntoxines\ntoxins\ntoxoid\ntoxoids\ntoy\ntoyed\ntoyer\ntoyers\ntoying\ntoyish\ntoyless\ntoylike\ntoyo\ntoyon\ntoyons\ntoyos\ntoys\ntrabeate\ntrace\ntraceability\ntraceable\ntraced\ntraceless\ntracelessly\ntracer\ntraceries\ntracers\ntracery\ntraces\ntrachea\ntracheae\ntracheal\ntracheas\ntracheid\ntracheids\ntracheotomies\ntracheotomy\ntrachle\ntrachled\ntrachles\ntrachling\ntrachoma\ntrachomas\ntrachyte\ntrachytes\ntracing\ntracings\ntrack\ntrackage\ntrackages\ntracked\ntracker\ntrackers\ntracking\ntrackings\ntrackless\ntrackman\ntrackmen\ntracks\ntract\ntractability\ntractable\ntractableness\ntractably\ntractate\ntractates\ntractile\ntraction\ntractional\ntractions\ntractive\ntractor\ntractors\ntracts\ntrad\ntradable\ntrade\ntradeable\ntraded\ntrademark\ntrademarked\ntrademarking\ntrademarks\ntrader\ntraders\ntrades\ntradesman\ntradesmen\ntradespeople\ntrading\ntradition\ntraditional\ntraditionalism\ntraditionalisms\ntraditionalist\ntraditionalistic\ntraditionalists\ntraditionally\ntraditionary\ntraditionless\ntraditions\ntraditor\ntraditores\ntraduce\ntraduced\ntraducement\ntraducements\ntraducer\ntraducers\ntraduces\ntraducing\ntraffic\ntrafficked\ntrafficker\ntraffickers\ntrafficking\ntraffics\ntragedian\ntragedians\ntragedienne\ntragediennes\ntragedies\ntragedy\ntragi\ntragic\ntragical\ntragically\ntragicomedies\ntragicomedy\ntragicomic\ntragicomical\ntragopan\ntragopans\ntragus\ntraik\ntraiked\ntraiking\ntraiks\ntrail\ntrailblazer\ntrailblazers\ntrailed\ntrailer\ntrailered\ntrailering\ntrailers\ntrailing\ntrailless\ntrails\ntrain\ntrainable\ntrained\ntrainee\ntrainees\ntrainer\ntrainers\ntrainful\ntrainfuls\ntraining\ntrainings\ntrainload\ntrainloads\ntrainman\ntrainmen\ntrains\ntrainway\ntrainways\ntraipse\ntraipsed\ntraipses\ntraipsing\ntrait\ntraitor\ntraitorous\ntraitorously\ntraitors\ntraitress\ntraitresses\ntraits\ntraject\ntrajected\ntrajecting\ntrajection\ntrajections\ntrajectories\ntrajectory\ntrajects\ntram\ntramcar\ntramcars\ntramel\ntrameled\ntrameling\ntramell\ntramelled\ntramelling\ntramells\ntramels\ntramless\ntramline\ntramlines\ntrammed\ntrammel\ntrammeled\ntrammeling\ntrammelled\ntrammelling\ntrammels\ntramming\ntramp\ntramped\ntramper\ntrampers\ntramping\ntrampish\ntrample\ntrampled\ntrampler\ntramplers\ntramples\ntrampling\ntrampoline\ntrampoliner\ntrampoliners\ntrampolines\ntrampolinist\ntrampolinists\ntramps\ntramroad\ntramroads\ntrams\ntramway\ntramways\ntrance\ntranced\ntrancelike\ntrances\ntrancing\ntrangam\ntrangams\ntrank\ntranq\ntranquil\ntranquiler\ntranquilest\ntranquility\ntranquilize\ntranquilized\ntranquilizer\ntranquilizers\ntranquilizes\ntranquilizing\ntranquiller\ntranquillest\ntranquillity\ntranquillize\ntranquillized\ntranquillizer\ntranquillizers\ntranquillizes\ntranquillizing\ntranquilly\ntranquilness\ntrans\ntransact\ntransacted\ntransacting\ntransaction\ntransactional\ntransactions\ntransactor\ntransactors\ntransacts\ntransatlantic\ntransceiver\ntransceivers\ntranscend\ntranscended\ntranscendence\ntranscendency\ntranscendent\ntranscendental\ntranscendentalism\ntranscendentalisms\ntranscendentalist\ntranscendentalists\ntranscendentally\ntranscendently\ntranscending\ntranscends\ntranscontinental\ntranscribe\ntranscribed\ntranscriber\ntranscribers\ntranscribes\ntranscribing\ntranscript\ntranscription\ntranscriptional\ntranscriptionally\ntranscriptionist\ntranscriptionists\ntranscriptions\ntranscripts\ntransducer\ntransducers\ntransect\ntransected\ntransecting\ntransects\ntransept\ntranseptal\ntransepts\ntransfer\ntransferability\ntransferable\ntransferal\ntransferals\ntransferee\ntransferees\ntransference\ntransferences\ntransferred\ntransferrer\ntransferrers\ntransferring\ntransfers\ntransfiguration\ntransfigurations\ntransfigure\ntransfigured\ntransfigures\ntransfiguring\ntransfix\ntransfixed\ntransfixes\ntransfixing\ntransfixion\ntransfixions\ntransfixt\ntransform\ntransformable\ntransformation\ntransformational\ntransformations\ntransformed\ntransformer\ntransformers\ntransforming\ntransforms\ntransfusable\ntransfuse\ntransfused\ntransfuses\ntransfusible\ntransfusing\ntransfusion\ntransfusions\ntransgress\ntransgressed\ntransgresses\ntransgressing\ntransgression\ntransgressions\ntransgressive\ntransgressor\ntransgressors\ntranship\ntranshipped\ntranshipping\ntranships\ntransience\ntransiency\ntransient\ntransiently\ntransients\ntransistor\ntransistorize\ntransistorized\ntransistorizes\ntransistorizing\ntransistors\ntransit\ntransited\ntransiting\ntransition\ntransitional\ntransitions\ntransitive\ntransitively\ntransitiveness\ntransitivity\ntransitory\ntransits\ntranslatability\ntranslatable\ntranslate\ntranslated\ntranslates\ntranslating\ntranslation\ntranslational\ntranslations\ntranslative\ntranslator\ntranslators\ntransliterate\ntransliterated\ntransliterates\ntransliterating\ntransliteration\ntransliterations\ntranslucence\ntranslucences\ntranslucencies\ntranslucency\ntranslucent\ntranslucently\ntransmigrate\ntransmigrated\ntransmigrates\ntransmigrating\ntransmigration\ntransmigrations\ntransmigrator\ntransmigrators\ntransmigratory\ntransmissibility\ntransmissible\ntransmission\ntransmissions\ntransmissive\ntransmit\ntransmits\ntransmittable\ntransmittal\ntransmittals\ntransmittance\ntransmittances\ntransmitted\ntransmitter\ntransmitters\ntransmitting\ntransmutable\ntransmutation\ntransmutations\ntransmute\ntransmuted\ntransmutes\ntransmuting\ntransom\ntransoms\ntransonic\ntranspacific\ntransparence\ntransparencies\ntransparency\ntransparent\ntransparently\ntransparentness\ntranspiration\ntranspirations\ntranspire\ntranspired\ntranspires\ntranspiring\ntransplant\ntransplantable\ntransplantation\ntransplantations\ntransplanted\ntransplanter\ntransplanters\ntransplanting\ntransplants\ntransponder\ntransponders\ntransport\ntransportability\ntransportable\ntransportation\ntransportations\ntransported\ntransporter\ntransporters\ntransporting\ntransports\ntransposable\ntranspose\ntransposed\ntransposes\ntransposing\ntransposition\ntranspositional\ntranspositions\ntranssexual\ntranssexuals\ntransship\ntransshipment\ntransshipments\ntransshipped\ntransshipping\ntransships\ntransubstantial\ntransubstantiate\ntransubstantiated\ntransubstantiates\ntransubstantiating\ntransubstantiation\ntransubstantiations\ntransude\ntransuded\ntransudes\ntransuding\ntransvaluation\ntransvaluations\ntransvalue\ntransvalued\ntransvalues\ntransvaluing\ntransversal\ntransversals\ntransverse\ntransversely\ntransverses\ntransvestite\ntransvestites\ntrap\ntrapan\ntrapanned\ntrapanning\ntrapans\ntrapball\ntrapballs\ntrapdoor\ntrapdoors\ntrapes\ntrapesed\ntrapeses\ntrapesing\ntrapeze\ntrapezes\ntrapezia\ntrapezist\ntrapezists\ntrapezium\ntrapeziums\ntrapezoid\ntrapezoidal\ntrapezoids\ntraplike\ntrapnest\ntrapnested\ntrapnesting\ntrapnests\ntrappean\ntrapped\ntrapper\ntrappers\ntrapping\ntrappings\ntrappose\ntrappous\ntraprock\ntraprocks\ntraps\ntrapshooter\ntrapshooters\ntrapt\ntrapunto\ntrapuntos\ntrash\ntrashed\ntrashes\ntrashier\ntrashiest\ntrashily\ntrashiness\ntrashing\ntrashman\ntrashmen\ntrashy\ntrass\ntrasses\ntrauchle\ntrauchled\ntrauchles\ntrauchling\ntrauma\ntraumas\ntraumata\ntraumatic\ntraumatically\ntraumatization\ntraumatizations\ntraumatize\ntraumatized\ntraumatizes\ntraumatizing\ntravail\ntravailed\ntravailing\ntravails\ntrave\ntravel\ntraveled\ntraveler\ntravelers\ntraveling\ntravelled\ntraveller\ntravellers\ntravelling\ntravelog\ntravelogs\ntravelogue\ntravelogues\ntravels\ntraversable\ntraversal\ntraversals\ntraverse\ntraversed\ntraverser\ntraversers\ntraverses\ntraversing\ntravertine\ntraves\ntravestied\ntravesties\ntravesty\ntravestying\ntravois\ntravoise\ntravoises\ntrawl\ntrawled\ntrawler\ntrawlers\ntrawley\ntrawleys\ntrawling\ntrawls\ntray\ntrayful\ntrayfuls\ntrays\ntreacheries\ntreacherous\ntreacherously\ntreacherousness\ntreachery\ntreacle\ntreacles\ntreacly\ntread\ntreaded\ntreader\ntreaders\ntreading\ntreadle\ntreadled\ntreadler\ntreadlers\ntreadles\ntreadling\ntreadmill\ntreadmills\ntreads\ntreason\ntreasonable\ntreasonably\ntreasonous\ntreasons\ntreasurable\ntreasure\ntreasured\ntreasurer\ntreasurers\ntreasures\ntreasuries\ntreasuring\ntreasury\ntreat\ntreatable\ntreated\ntreater\ntreaters\ntreaties\ntreating\ntreatise\ntreatises\ntreatment\ntreatments\ntreats\ntreaty\ntreble\ntrebled\ntrebles\ntrebling\ntrebly\ntrecento\ntrecentos\ntreddle\ntreddled\ntreddles\ntreddling\ntree\ntreed\ntreeing\ntreeless\ntreelike\ntreen\ntreenail\ntreenails\ntrees\ntreetop\ntreetops\ntref\ntrefah\ntrefoil\ntrefoils\ntrehala\ntrehalas\ntreillage\ntreillages\ntrek\ntrekked\ntrekker\ntrekkers\ntrekking\ntreks\ntrellis\ntrellised\ntrellises\ntrellising\ntremble\ntrembled\ntrembler\ntremblers\ntrembles\ntremblier\ntrembliest\ntrembling\ntrembly\ntremendous\ntremendously\ntremendousness\ntremolo\ntremolos\ntremor\ntremors\ntremulous\ntremulously\ntremulousness\ntrenail\ntrenails\ntrench\ntrenchancy\ntrenchant\ntrenchantly\ntrenched\ntrencher\ntrencherman\ntrenchermen\ntrenchers\ntrenches\ntrenching\ntrend\ntrended\ntrendier\ntrendiest\ntrendily\ntrending\ntrends\ntrendy\ntrepan\ntrepanation\ntrepanations\ntrepang\ntrepangs\ntrepanned\ntrepanning\ntrepans\ntrephination\ntrephinations\ntrephine\ntrephined\ntrephines\ntrephining\ntrepid\ntrepidation\ntrepidations\ntrespass\ntrespassed\ntrespasser\ntrespassers\ntrespasses\ntrespassing\ntress\ntressed\ntressel\ntressels\ntresses\ntressier\ntressiest\ntressour\ntressours\ntressure\ntressures\ntressy\ntrestle\ntrestles\ntrestlework\ntrestleworks\ntret\ntrets\ntrevet\ntrevets\ntrews\ntrey\ntreys\ntriable\ntriableness\ntriac\ntriacid\ntriacids\ntriad\ntriadic\ntriadics\ntriadism\ntriadisms\ntriads\ntriage\ntriages\ntrial\ntrials\ntriangle\ntriangles\ntriangular\ntriangularity\ntriangularly\ntriangulate\ntriangulated\ntriangulates\ntriangulating\ntriangulation\ntriangulations\ntriarchies\ntriarchy\ntriaxial\ntriazin\ntriazine\ntriazines\ntriazins\ntriazole\ntriazoles\ntribade\ntribades\ntribadic\ntribal\ntribalism\ntribalisms\ntribally\ntribasic\ntribe\ntribes\ntribesman\ntribesmen\ntribrach\ntribrachs\ntribulation\ntribulations\ntribunal\ntribunals\ntribunate\ntribunates\ntribune\ntribunes\ntributaries\ntributary\ntribute\ntributes\ntrice\ntriced\ntriceps\ntricepses\ntrices\ntrichina\ntrichinae\ntrichinas\ntrichite\ntrichites\ntrichoid\ntrichome\ntrichomes\ntrichotomies\ntrichotomous\ntrichotomously\ntrichotomy\ntricing\ntrick\ntricked\ntricker\ntrickeries\ntrickers\ntrickery\ntrickie\ntrickier\ntrickiest\ntrickily\ntrickiness\ntricking\ntrickish\ntrickishly\ntrickishness\ntrickle\ntrickled\ntrickles\ntricklier\ntrickliest\ntrickling\ntrickly\ntricks\ntricksier\ntricksiest\ntrickster\ntricksters\ntricksy\ntricky\ntriclad\ntriclads\ntricolor\ntricolored\ntricolors\ntricorn\ntricorne\ntricornes\ntricorns\ntricot\ntricots\ntrictrac\ntrictracs\ntricycle\ntricycles\ntricyclic\ntrident\ntridents\ntridimensional\ntridimensionality\ntriduum\ntriduums\ntried\ntriene\ntrienes\ntriennia\ntriennial\ntriennially\ntriennials\ntriennium\ntrienniums\ntriens\ntrientes\ntrier\ntriers\ntries\ntriethyl\ntrifid\ntrifle\ntrifled\ntrifler\ntriflers\ntrifles\ntrifling\ntriflings\ntrifocal\ntrifocals\ntrifold\ntriforia\ntriform\ntrifornia\ntrig\ntrigged\ntrigger\ntriggered\ntriggering\ntriggers\ntriggest\ntrigging\ntrigly\ntriglyph\ntriglyphs\ntrigness\ntrignesses\ntrigo\ntrigon\ntrigonal\ntrigonometric\ntrigonometrical\ntrigonometrically\ntrigonometry\ntrigons\ntrigos\ntrigraph\ntrigraphs\ntrigs\ntrihedra\ntrijet\ntrijets\ntrike\ntrilateral\ntrilbies\ntrilby\ntrilingual\ntrilingually\ntrill\ntrilled\ntriller\ntrillers\ntrilling\ntrillion\ntrillions\ntrillionth\ntrillionths\ntrillium\ntrilliums\ntrills\ntrilobal\ntrilobed\ntrilobite\ntrilobites\ntrilogies\ntrilogy\ntrim\ntrimaran\ntrimarans\ntrimer\ntrimers\ntrimester\ntrimesters\ntrimeter\ntrimeters\ntrimly\ntrimmed\ntrimmer\ntrimmers\ntrimmest\ntrimming\ntrimmings\ntrimness\ntrimnesses\ntrimonthly\ntrimorph\ntrimorphs\ntrimotor\ntrimotors\ntrims\ntrinal\ntrinary\ntrindle\ntrindled\ntrindles\ntrindling\ntrine\ntrined\ntrines\ntrining\ntrinities\ntrinity\ntrinket\ntrinketed\ntrinketing\ntrinkets\ntrinkums\ntrinodal\ntrinomial\ntrinomials\ntrio\ntriode\ntriodes\ntriol\ntriolet\ntriolets\ntriols\ntrios\ntriose\ntrioses\ntrioxid\ntrioxide\ntrioxides\ntrioxids\ntrip\ntripack\ntripacks\ntripart\ntripartite\ntripe\ntripedal\ntripes\ntriphase\ntriplane\ntriplanes\ntriple\ntripled\ntriples\ntriplet\ntriplets\ntriplex\ntriplexes\ntriplicate\ntriplicated\ntriplicates\ntriplicating\ntriplication\ntriplications\ntriplicities\ntriplicity\ntripling\ntriplite\ntriplites\ntriploid\ntriploids\ntriply\ntripod\ntripodal\ntripodic\ntripodies\ntripods\ntripody\ntripoli\ntripolis\ntripos\ntriposes\ntripped\ntripper\ntrippers\ntrippet\ntrippets\ntripping\ntrippings\ntrips\ntriptane\ntriptanes\ntriptyca\ntriptycas\ntriptych\ntriptychs\ntrireme\ntriremes\ntriscele\ntrisceles\ntrisect\ntrisected\ntrisecting\ntrisection\ntrisections\ntrisector\ntrisectors\ntrisects\ntriseme\ntrisemes\ntrisemic\ntriskele\ntriskeles\ntrismic\ntrismus\ntrismuses\ntrisome\ntrisomes\ntrisomic\ntrisomics\ntrisomies\ntrisomy\ntristate\ntriste\ntristeza\ntristezas\ntristful\ntristich\ntristichs\ntrite\ntritely\ntriteness\ntriter\ntritest\ntrithing\ntrithings\ntriticum\ntriticums\ntritium\ntritiums\ntritoma\ntritomas\ntriton\ntritone\ntritones\ntritons\ntriturate\ntriturated\ntriturates\ntriturating\ntriturator\ntriturators\ntriumph\ntriumphal\ntriumphant\ntriumphantly\ntriumphed\ntriumphing\ntriumphs\ntriumvir\ntriumviral\ntriumvirate\ntriumvirates\ntriumviri\ntriumvirs\ntriune\ntriunes\ntriunities\ntriunity\ntrivalve\ntrivalves\ntrivet\ntrivets\ntrivia\ntrivial\ntrivialities\ntriviality\ntrivially\ntrivium\ntriweeklies\ntriweekly\ntroak\ntroaked\ntroaking\ntroaks\ntrocar\ntrocars\ntrochaic\ntrochaics\ntrochal\ntrochar\ntrochars\ntroche\ntrochee\ntrochees\ntroches\ntrochil\ntrochili\ntrochils\ntrochlea\ntrochleae\ntrochleas\ntrochoid\ntrochoids\ntrock\ntrocked\ntrocking\ntrocks\ntrod\ntrodden\ntrode\ntroffer\ntroffers\ntrogon\ntrogons\ntroika\ntroikas\ntroilite\ntroilites\ntroilus\ntroiluses\ntrois\ntroke\ntroked\ntrokes\ntroking\ntroland\ntrolands\ntroll\ntrolled\ntroller\ntrollers\ntrolley\ntrolleyed\ntrolleying\ntrolleys\ntrollied\ntrollies\ntrolling\ntrollings\ntrollop\ntrollops\ntrollopy\ntrolls\ntrolly\ntrollying\ntrombone\ntrombones\ntrombonist\ntrombonists\ntrommel\ntrommels\ntromp\ntrompe\ntromped\ntrompes\ntromping\ntromps\ntrona\ntronas\ntrone\ntrones\ntroop\ntrooped\ntrooper\ntroopers\ntroopial\ntroopials\ntrooping\ntroops\ntroopship\ntroopships\ntrooz\ntrop\ntrope\ntropes\ntrophic\ntrophied\ntrophies\ntrophy\ntrophying\ntropic\ntropical\ntropicalize\ntropicalized\ntropicalizes\ntropicalizing\ntropically\ntropics\ntropin\ntropine\ntropines\ntropins\ntropism\ntropisms\ntroposphere\ntropospheres\ntropospheric\ntrot\ntroth\ntrothed\ntrothing\ntroths\ntrotline\ntrotlines\ntrots\ntrotted\ntrotter\ntrotters\ntrotting\ntrotyl\ntrotyls\ntroubadour\ntroubadours\ntrouble\ntroubled\ntroublemaker\ntroublemakers\ntroubler\ntroublers\ntroubles\ntroubleshoot\ntroubleshooter\ntroubleshooters\ntroubleshooting\ntroubleshoots\ntroubleshot\ntroublesome\ntroublesomely\ntroublesomeness\ntroubling\ntrough\ntroughs\ntrounce\ntrounced\ntrounces\ntrouncing\ntroupe\ntrouped\ntrouper\ntroupers\ntroupes\ntroupial\ntroupials\ntrouping\ntrouser\ntrousers\ntrousseau\ntrousseaus\ntrousseaux\ntrout\ntroutier\ntroutiest\ntrouts\ntrouty\ntrouvere\ntrouveres\ntrouveur\ntrouveurs\ntrove\ntrover\ntrovers\ntroves\ntrow\ntrowed\ntrowel\ntroweled\ntroweler\ntrowelers\ntroweling\ntrowelled\ntrowelling\ntrowels\ntrowing\ntrows\ntrowsers\ntrowth\ntrowths\ntroy\ntroys\ntruancies\ntruancy\ntruant\ntruanted\ntruanting\ntruantries\ntruantry\ntruants\ntruce\ntruced\ntruces\ntrucing\ntruck\ntruckage\ntruckages\ntrucked\ntrucker\ntruckers\ntrucking\ntruckings\ntruckle\ntruckled\ntruckler\ntrucklers\ntruckles\ntruckling\ntruckload\ntruckloads\ntruckman\ntruckmen\ntrucks\ntruculence\ntruculency\ntruculent\ntruculently\ntrudge\ntrudged\ntrudgen\ntrudgens\ntrudgeon\ntrudgeons\ntrudger\ntrudgers\ntrudges\ntrudging\ntrue\ntrueblue\ntrueblues\ntrueborn\ntrued\ntrueing\ntruelove\ntrueloves\ntrueness\ntruenesses\ntruer\ntrues\ntruest\ntruffe\ntruffes\ntruffle\ntruffled\ntruffles\ntrug\ntrugs\ntruing\ntruism\ntruisms\ntruistic\ntrull\ntrulls\ntruly\ntrumeau\ntrumeaux\ntrump\ntrumped\ntrumperies\ntrumpery\ntrumpet\ntrumpeted\ntrumpeter\ntrumpeters\ntrumpeting\ntrumpetlike\ntrumpets\ntrumping\ntrumps\ntruncate\ntruncated\ntruncates\ntruncating\ntruncation\ntruncations\ntruncheon\ntruncheons\ntrundle\ntrundled\ntrundler\ntrundlers\ntrundles\ntrundling\ntrunk\ntrunked\ntrunkless\ntrunks\ntrunnel\ntrunnels\ntrunnion\ntrunnions\ntruss\ntrussed\ntrusser\ntrussers\ntrusses\ntrussing\ntrussings\ntrust\ntrustability\ntrustable\ntrusted\ntrustee\ntrusteed\ntrusteeing\ntrustees\ntrusteeship\ntrusteeships\ntruster\ntrusters\ntrustful\ntrustfully\ntrustfulness\ntrustier\ntrusties\ntrustiest\ntrustily\ntrustiness\ntrusting\ntrustingly\ntrustingness\ntrustless\ntrusts\ntrustworthily\ntrustworthiness\ntrustworthy\ntrusty\ntruth\ntruthful\ntruthfully\ntruthfulness\ntruths\ntry\ntrying\ntryingly\ntryma\ntrymata\ntryout\ntryouts\ntrypsin\ntrypsins\ntryptic\ntrysail\ntrysails\ntryst\ntryste\ntrysted\ntryster\ntrysters\ntrystes\ntrysting\ntrysts\ntryworks\ntsade\ntsades\ntsadi\ntsadis\ntsar\ntsardom\ntsardoms\ntsarevna\ntsarevnas\ntsarina\ntsarinas\ntsarism\ntsarisms\ntsarist\ntsarists\ntsaritza\ntsaritzas\ntsars\ntsetse\ntsetses\ntsimmes\ntsk\ntsked\ntsking\ntsks\ntsktsk\ntsktsked\ntsktsking\ntsktsks\ntsuba\ntsunami\ntsunamic\ntsunamis\ntsuris\ntuatara\ntuataras\ntuatera\ntuateras\ntub\ntuba\ntubae\ntubal\ntubas\ntubate\ntubbable\ntubbed\ntubber\ntubbers\ntubbier\ntubbiest\ntubbing\ntubby\ntube\ntubed\ntubeless\ntubelike\ntuber\ntubercle\ntubercles\ntubercular\ntuberculate\ntuberculated\ntuberculin\ntuberculins\ntuberculoid\ntuberculoses\ntuberculosis\ntuberculous\ntuberoid\ntuberose\ntuberoses\ntuberosity\ntuberous\ntubers\ntubes\ntubework\ntubeworks\ntubful\ntubfuls\ntubifex\ntubifexes\ntubiform\ntubing\ntubings\ntublike\ntubs\ntubular\ntubulate\ntubulated\ntubulates\ntubulating\ntubule\ntubules\ntubulose\ntubulous\ntubulure\ntubulures\ntuchun\ntuchuns\ntuck\ntuckahoe\ntuckahoes\ntucked\ntucker\ntuckered\ntuckering\ntuckers\ntucket\ntuckets\ntucking\ntucks\ntufa\ntufas\ntuff\ntuffet\ntuffets\ntuffs\ntuft\ntufted\ntufter\ntufters\ntuftier\ntuftiest\ntuftily\ntufting\ntufts\ntufty\ntug\ntugboat\ntugboats\ntugged\ntugger\ntuggers\ntugging\ntugless\ntugrik\ntugriks\ntugs\ntui\ntuille\ntuilles\ntuis\ntuition\ntuitional\ntuitions\ntuladi\ntuladis\ntularemia\ntule\ntules\ntulip\ntulips\ntulle\ntulles\ntullibee\ntullibees\ntumble\ntumbled\ntumbler\ntumblers\ntumbles\ntumbling\ntumblings\ntumbrel\ntumbrels\ntumbril\ntumbrils\ntumefied\ntumefies\ntumefy\ntumefying\ntumescence\ntumescences\ntumid\ntumidities\ntumidity\ntumidly\ntummies\ntummy\ntumor\ntumoral\ntumorlike\ntumorous\ntumors\ntumour\ntumours\ntump\ntumpline\ntumplines\ntumps\ntumular\ntumuli\ntumulose\ntumulous\ntumult\ntumults\ntumultuous\ntumultuously\ntumultuousness\ntumulus\ntumuluses\ntun\ntuna\ntunable\ntunableness\ntunably\ntunas\ntundish\ntundishes\ntundra\ntundras\ntune\ntuneable\ntuneably\ntuned\ntuneful\ntunefully\ntunefulness\ntuneless\ntunelessly\ntuner\ntuners\ntunes\ntung\ntungs\ntungsten\ntungstens\ntungstic\ntunic\ntunica\ntunicae\ntunicate\ntunicates\ntunicle\ntunicles\ntunics\ntuning\ntunnage\ntunnages\ntunned\ntunnel\ntunneled\ntunneler\ntunnelers\ntunneling\ntunnelled\ntunnellike\ntunnelling\ntunnels\ntunnies\ntunning\ntunny\ntuns\ntup\ntupelo\ntupelos\ntupik\ntupiks\ntupped\ntuppence\ntuppences\ntuppenny\ntupping\ntups\ntuque\ntuques\nturaco\nturacos\nturacou\nturacous\nturban\nturbaned\nturbans\nturbaries\nturbary\nturbeth\nturbeths\nturbid\nturbidity\nturbidly\nturbidness\nturbinal\nturbinals\nturbine\nturbines\nturbit\nturbith\nturbiths\nturbits\nturbo\nturbocar\nturbocars\nturbocharger\nturbochargers\nturbofan\nturbofans\nturbojet\nturbojets\nturboprop\nturboprops\nturbos\nturbot\nturbots\nturbulence\nturbulences\nturbulencies\nturbulency\nturbulent\nturbulently\nturd\nturdine\nturds\ntureen\ntureens\nturf\nturfed\nturfier\nturfiest\nturfing\nturfless\nturflike\nturfman\nturfmen\nturfs\nturfski\nturfskis\nturfy\nturgencies\nturgency\nturgent\nturgid\nturgidity\nturgidly\nturgidness\nturgite\nturgites\nturgor\nturgors\nturkey\nturkeys\nturkois\nturkoises\nturmeric\nturmerics\nturmoil\nturmoiled\nturmoiling\nturmoils\nturn\nturnable\nturnabout\nturnabouts\nturnaround\nturnarounds\nturnbuckle\nturnbuckles\nturncoat\nturncoats\nturndown\nturndowns\nturned\nturner\nturneries\nturners\nturnery\nturnhall\nturnhalls\nturning\nturnings\nturnip\nturnips\nturnkey\nturnkeys\nturnoff\nturnoffs\nturnout\nturnouts\nturnover\nturnovers\nturnpike\nturnpikes\nturns\nturnsole\nturnsoles\nturnspit\nturnspits\nturnstile\nturnstiles\nturntable\nturntables\nturnup\nturnups\nturpentine\nturpentined\nturpentines\nturpentining\nturpeth\nturpeths\nturpitude\nturpitudes\nturps\nturquois\nturquoise\nturquoises\nturret\nturreted\nturrets\nturrical\nturtle\nturtled\nturtledove\nturtledoves\nturtleneck\nturtlenecks\nturtler\nturtlers\nturtles\nturtling\nturtlings\nturves\ntusche\ntusches\ntush\ntushed\ntushes\ntushing\ntushy\ntusk\ntusked\ntusker\ntuskers\ntusking\ntuskless\ntusklike\ntusks\ntussah\ntussahs\ntussal\ntussar\ntussars\ntusseh\ntussehs\ntusser\ntussers\ntussis\ntussises\ntussive\ntussle\ntussled\ntussles\ntussling\ntussock\ntussocks\ntussocky\ntussor\ntussore\ntussores\ntussors\ntussuck\ntussucks\ntussur\ntussurs\ntut\ntutee\ntutees\ntutelage\ntutelages\ntutelar\ntutelaries\ntutelars\ntutelary\ntutor\ntutorage\ntutorages\ntutored\ntutoress\ntutoresses\ntutorial\ntutorials\ntutoring\ntutors\ntutorship\ntutorships\ntutoyed\ntutoyer\ntutoyered\ntutoyering\ntutoyers\ntuts\ntutted\ntutti\ntutties\ntutting\ntuttis\ntutty\ntutu\ntutus\ntux\ntuxedo\ntuxedoes\ntuxedos\ntuxes\ntuyer\ntuyere\ntuyeres\ntuyers\ntwa\ntwaddle\ntwaddled\ntwaddler\ntwaddlers\ntwaddles\ntwaddling\ntwae\ntwaes\ntwain\ntwains\ntwang\ntwanged\ntwangier\ntwangiest\ntwanging\ntwangle\ntwangled\ntwangler\ntwanglers\ntwangles\ntwangling\ntwangs\ntwangy\ntwankies\ntwanky\ntwas\ntwasome\ntwasomes\ntwat\ntwats\ntwattle\ntwattled\ntwattles\ntwattling\ntweak\ntweaked\ntweakier\ntweakiest\ntweaking\ntweaks\ntweaky\ntwee\ntweed\ntweedier\ntweediest\ntweedle\ntweedled\ntweedles\ntweedling\ntweeds\ntweedy\ntween\ntweet\ntweeted\ntweeter\ntweeters\ntweeting\ntweets\ntweeze\ntweezed\ntweezer\ntweezers\ntweezes\ntweezing\ntwelfth\ntwelfths\ntwelve\ntwelvemo\ntwelvemos\ntwelves\ntwenties\ntwentieth\ntwentieths\ntwenty\ntwerp\ntwerps\ntwibil\ntwibill\ntwibills\ntwibils\ntwice\ntwiddle\ntwiddled\ntwiddler\ntwiddlers\ntwiddles\ntwiddling\ntwier\ntwiers\ntwig\ntwigged\ntwiggen\ntwiggier\ntwiggiest\ntwigging\ntwiggy\ntwigless\ntwiglike\ntwigs\ntwilight\ntwilights\ntwilit\ntwill\ntwilled\ntwilling\ntwillings\ntwills\ntwin\ntwinborn\ntwine\ntwined\ntwiner\ntwiners\ntwines\ntwinge\ntwinged\ntwingeing\ntwinges\ntwinging\ntwinier\ntwiniest\ntwinight\ntwining\ntwinkle\ntwinkled\ntwinkler\ntwinklers\ntwinkles\ntwinkling\ntwinklings\ntwinkly\ntwinned\ntwinning\ntwinnings\ntwins\ntwinship\ntwinships\ntwiny\ntwirl\ntwirled\ntwirler\ntwirlers\ntwirlier\ntwirliest\ntwirling\ntwirls\ntwirly\ntwirp\ntwirps\ntwist\ntwisted\ntwister\ntwisters\ntwisting\ntwistings\ntwists\ntwit\ntwitch\ntwitched\ntwitcher\ntwitchers\ntwitches\ntwitchier\ntwitchiest\ntwitching\ntwitchy\ntwits\ntwitted\ntwitter\ntwittered\ntwittering\ntwitters\ntwittery\ntwitting\ntwixt\ntwo\ntwofer\ntwofers\ntwofold\ntwofolds\ntwopence\ntwopences\ntwopenny\ntwos\ntwosome\ntwosomes\ntwyer\ntwyers\ntycoon\ntycoons\ntye\ntyee\ntyees\ntyes\ntying\ntyke\ntykes\ntymbal\ntymbals\ntympan\ntympana\ntympanal\ntympani\ntympanic\ntympanies\ntympanist\ntympanists\ntympans\ntympanum\ntympanums\ntympany\ntyne\ntyned\ntynes\ntyning\ntypal\ntype\ntypeable\ntypebar\ntypebars\ntypecase\ntypecases\ntypecast\ntypecasting\ntypecasts\ntyped\ntypeface\ntypefaces\ntypes\ntypescript\ntypescripts\ntypeset\ntypeseting\ntypesets\ntypesetter\ntypesetters\ntypesetting\ntypewrite\ntypewriter\ntypewriters\ntypewrites\ntypewriting\ntypewritten\ntypewrote\ntypey\ntyphoid\ntyphoids\ntyphon\ntyphonic\ntyphons\ntyphoon\ntyphoons\ntyphose\ntyphous\ntyphus\ntyphuses\ntypic\ntypical\ntypicality\ntypically\ntypicalness\ntypier\ntypiest\ntypification\ntypifications\ntypified\ntypifier\ntypifiers\ntypifies\ntypify\ntypifying\ntyping\ntypist\ntypists\ntypo\ntypographer\ntypographers\ntypographic\ntypographical\ntypographically\ntypographies\ntypography\ntypological\ntypologically\ntypologies\ntypologist\ntypologists\ntypology\ntypos\ntypp\ntypps\ntypy\ntyramine\ntyramines\ntyrannic\ntyrannical\ntyrannically\ntyrannies\ntyrannize\ntyrannized\ntyrannizer\ntyrannizers\ntyrannizes\ntyrannizing\ntyrannous\ntyrannously\ntyranny\ntyrant\ntyrants\ntyre\ntyred\ntyres\ntyring\ntyro\ntyronic\ntyros\ntyrosine\ntyrosines\ntyrothricin\ntythe\ntythed\ntythes\ntything\ntzaddik\ntzaddikim\ntzar\ntzardom\ntzardoms\ntzarevna\ntzarevnas\ntzarina\ntzarinas\ntzarism\ntzarisms\ntzarist\ntzarists\ntzaritza\ntzaritzas\ntzars\ntzetze\ntzetzes\ntzigane\ntziganes\ntzimmes\ntzitzis\ntzitzith\ntzuris\nubieties\nubiety\nubique\nubiquities\nubiquitous\nubiquitously\nubiquitousness\nubiquity\nudder\nudders\nudo\nudometer\nudometers\nudometries\nudometry\nudos\nugh\nughs\nuglier\nugliest\nuglification\nuglifications\nuglified\nuglifier\nuglifiers\nuglifies\nuglify\nuglifying\nuglily\nugliness\nuglinesses\nugly\nugsome\nuh\nuhlan\nuhlans\nuintaite\nuintaites\nukase\nukases\nuke\nukelele\nukeleles\nukes\nukulele\nukuleles\nulama\nulamas\nulan\nulans\nulcer\nulcerate\nulcerated\nulcerates\nulcerating\nulceration\nulcerations\nulcerative\nulcered\nulcering\nulcerous\nulcers\nulema\nulemas\nulexite\nulexites\nullage\nullaged\nullages\nulna\nulnad\nulnae\nulnar\nulnas\nulpan\nulster\nulsters\nulterior\nulteriorly\nultima\nultimacies\nultimacy\nultimas\nultimata\nultimate\nultimately\nultimateness\nultimates\nultimatum\nultimatums\nultimo\nultra\nultraconservative\nultraconservatives\nultraism\nultraisms\nultraist\nultraists\nultramarine\nultramarines\nultramicroscope\nultramicroscopes\nultramicroscopic\nultraminiature\nultraminiaturization\nultraminiaturizations\nultramodern\nultramodernist\nultramodernists\nultranational\nultranationalism\nultranationalist\nultranationalistic\nultranationalists\nultrared\nultrareds\nultras\nultrasonic\nultrasonically\nultrasonics\nultraviolet\nulu\nululant\nululate\nululated\nululates\nululating\nululation\nululations\nulus\nulva\nulvas\num\numbel\numbeled\numbellar\numbellate\numbelled\numbellet\numbellets\numbels\number\numbered\numbering\numbers\numbilical\numbilicals\numbilici\numbilicus\numbilicuses\numbles\numbo\numbonal\numbonate\numbones\numbonic\numbos\numbra\numbrae\numbrage\numbrageous\numbrageously\numbrageousness\numbrages\numbral\numbras\numbrella\numbrellaed\numbrellaing\numbrellas\numbrette\numbrettes\numiac\numiack\numiacks\numiacs\numiak\numiaks\numiaq\numlaut\numlauted\numlauting\numlauts\numm\nump\numped\numping\numpirage\numpirages\numpire\numpired\numpires\numpiring\numps\numpteen\numpteenth\numteenth\nun\nunabashed\nunabashedly\nunabated\nunable\nunabridged\nunabused\nunaccented\nunacceptable\nunacceptably\nunaccepted\nunaccountability\nunaccountable\nunaccountably\nunaccustomed\nunacknowledged\nunacted\nunadjusted\nunadorned\nunadulterated\nunaffected\nunaffectedly\nunaffectedness\nunafraid\nunaged\nunageing\nunagile\nunaging\nunai\nunaided\nunaimed\nunaired\nunais\nunalike\nunallied\nunalterable\nunalterably\nunaltered\nunambiguous\nunambiguously\nunamused\nunanchor\nunanchored\nunanchoring\nunanchors\nunaneled\nunanimities\nunanimity\nunanimous\nunanimously\nunanswerable\nunanswerably\nunanswered\nunanticipated\nunanticipatedly\nunappetizing\nunappetizingly\nunapt\nunaptly\nunargued\nunarm\nunarmed\nunarming\nunarms\nunartful\nunary\nunasked\nunassigned\nunassuming\nunassumingness\nunatoned\nunattached\nunattainable\nunattended\nunattractive\nunattractively\nunattractiveness\nunau\nunaudited\nunaus\nunauthorized\nunavailability\nunavailable\nunavailing\nunavailingly\nunavoidable\nunavoidably\nunavowed\nunawaked\nunaware\nunawarely\nunawareness\nunawares\nunawed\nunbacked\nunbaked\nunbalance\nunbalanced\nunbalances\nunbalancing\nunbar\nunbarbed\nunbarred\nunbarring\nunbars\nunbased\nunbated\nunbe\nunbear\nunbearable\nunbearably\nunbeared\nunbearing\nunbears\nunbeatable\nunbeaten\nunbecoming\nunbecomingly\nunbecomingness\nunbeknownst\nunbelief\nunbeliefs\nunbelievable\nunbelievably\nunbeliever\nunbelievers\nunbelieving\nunbelievingly\nunbelt\nunbelted\nunbelting\nunbelts\nunbend\nunbendable\nunbended\nunbending\nunbends\nunbenign\nunbent\nunbiased\nunbid\nunbidden\nunbind\nunbinding\nunbinds\nunbitted\nunblamed\nunblessed\nunblest\nunblock\nunblocked\nunblocking\nunblocks\nunbloody\nunbodied\nunbolt\nunbolted\nunbolting\nunbolts\nunboned\nunbonnet\nunbonneted\nunbonneting\nunbonnets\nunborn\nunbosom\nunbosomed\nunbosoming\nunbosoms\nunbought\nunbound\nunbounded\nunboundedness\nunbowed\nunbox\nunboxed\nunboxes\nunboxing\nunbrace\nunbraced\nunbraces\nunbracing\nunbraid\nunbraided\nunbraiding\nunbraids\nunbreakable\nunbred\nunbreech\nunbreeched\nunbreeches\nunbreeching\nunbridle\nunbridled\nunbridles\nunbridling\nunbroke\nunbroken\nunbuckle\nunbuckled\nunbuckles\nunbuckling\nunbuffered\nunbuild\nunbuilding\nunbuilds\nunbuilt\nunbundle\nunbundled\nunbundles\nunbundling\nunburden\nunburdened\nunburdening\nunburdens\nunburied\nunburned\nunburnt\nunbutton\nunbuttoned\nunbuttoning\nunbuttons\nuncage\nuncaged\nuncages\nuncaging\nuncake\nuncaked\nuncakes\nuncaking\nuncalled\nuncandid\nuncannier\nuncanniest\nuncannily\nuncanniness\nuncanny\nuncap\nuncapped\nuncapping\nuncaps\nuncaring\nuncase\nuncased\nuncases\nuncashed\nuncasing\nuncaught\nuncaused\nunceasing\nunceasingly\nunceremonious\nunceremoniously\nunceremoniousness\nuncertain\nuncertainly\nuncertainness\nuncertainties\nuncertainty\nunchain\nunchained\nunchaining\nunchains\nunchancy\nunchangeable\nunchanged\nunchanging\nuncharacteristic\nuncharacteristically\nuncharge\nuncharged\nuncharges\nuncharging\nuncharitable\nuncharitableness\nuncharitably\nuncharted\nunchary\nunchaste\nunchewed\nunchic\nunchoke\nunchoked\nunchokes\nunchoking\nunchosen\nunchristian\nunchurch\nunchurched\nunchurches\nunchurching\nunci\nuncia\nunciae\nuncial\nuncially\nuncials\nunciform\nunciforms\nuncinal\nuncinate\nuncini\nuncinus\nuncivil\nuncivilized\nuncivilly\nunclad\nunclamp\nunclamped\nunclamping\nunclamps\nunclasp\nunclasped\nunclasping\nunclasps\nunclassified\nuncle\nunclean\nuncleaner\nuncleanest\nuncleanliness\nuncleanly\nuncleanness\nunclear\nuncleared\nunclearer\nunclearest\nunclench\nunclenched\nunclenches\nunclenching\nuncles\nunclinch\nunclinched\nunclinches\nunclinching\nuncloak\nuncloaked\nuncloaking\nuncloaks\nunclog\nunclogged\nunclogging\nunclogs\nunclose\nunclosed\nuncloses\nunclosing\nunclothe\nunclothed\nunclothes\nunclothing\nuncloud\nunclouded\nunclouding\nunclouds\nuncloyed\nuncluttered\nunco\nuncoated\nuncock\nuncocked\nuncocking\nuncocks\nuncoffin\nuncoffined\nuncoffining\nuncoffins\nuncoil\nuncoiled\nuncoiling\nuncoils\nuncoined\nuncombed\nuncomely\nuncomfortable\nuncomfortably\nuncomic\nuncommitted\nuncommon\nuncommoner\nuncommonest\nuncommonly\nuncommonness\nuncompromising\nuncompromisingly\nunconcern\nunconcerned\nunconcernedly\nunconcernedness\nunconditional\nunconditionally\nunconditioned\nunconfirmed\nunconquerable\nunconquered\nunconscionable\nunconscionableness\nunconscionably\nunconscious\nunconsciously\nunconsciousness\nunconstitutional\nunconstitutionality\nunconstitutionally\nuncontrollable\nuncontrollably\nuncontrolled\nunconventional\nunconventionality\nunconventionally\nuncooked\nuncool\nuncooperative\nuncork\nuncorked\nuncorking\nuncorks\nuncos\nuncountable\nuncounted\nuncouple\nuncoupled\nuncouples\nuncoupling\nuncouth\nuncouthly\nuncouthness\nuncover\nuncovered\nuncovering\nuncovers\nuncoy\nuncrate\nuncrated\nuncrates\nuncrating\nuncreate\nuncreated\nuncreates\nuncreating\nuncross\nuncrossed\nuncrosses\nuncrossing\nuncrown\nuncrowned\nuncrowning\nuncrowns\nunction\nunctions\nunctuous\nunctuously\nunctuousness\nuncurb\nuncurbed\nuncurbing\nuncurbs\nuncured\nuncurl\nuncurled\nuncurling\nuncurls\nuncursed\nuncus\nuncut\nundamaged\nundamped\nundaring\nundated\nundaunted\nundauntedly\nunde\nundecided\nundecked\nundeclared\nundee\nundefined\nundeliverable\nundemocratic\nundemonstrative\nundeniable\nundeniableness\nundeniably\nundenied\nunder\nunderachieve\nunderachieved\nunderachievement\nunderachievements\nunderachiever\nunderachievers\nunderachieves\nunderachieving\nunderact\nunderacted\nunderacting\nunderacts\nunderage\nunderages\nunderarm\nunderarms\nunderate\nunderbellies\nunderbelly\nunderbid\nunderbidder\nunderbidders\nunderbidding\nunderbids\nunderbought\nunderbrush\nunderbud\nunderbudded\nunderbudding\nunderbuds\nunderbuy\nunderbuying\nunderbuys\nundercapitalized\nundercarriage\nundercarriages\nundercharge\nundercharged\nundercharges\nundercharging\nunderclassman\nunderclassmen\nunderclothes\nunderclothing\nundercoat\nundercoating\nundercoats\nundercover\nundercurrent\nundercurrents\nundercut\nundercuts\nundercutting\nunderdeveloped\nunderdevelopment\nunderdevelopments\nunderdid\nunderdo\nunderdoes\nunderdog\nunderdogs\nunderdoing\nunderdone\nundereat\nundereate\nundereaten\nundereating\nundereats\nunderemployed\nunderemployment\nunderestimate\nunderestimated\nunderestimates\nunderestimating\nunderestimation\nunderestimations\nunderexpose\nunderexposed\nunderexposes\nunderexposing\nunderexposure\nunderexposures\nunderfed\nunderfeed\nunderfeeding\nunderfeeds\nunderfoot\nunderfur\nunderfurs\nundergarment\nundergarments\nundergo\nundergod\nundergods\nundergoes\nundergoing\nundergone\nundergraduate\nundergraduates\nunderground\nundergrounds\nundergrowth\nundergrowths\nunderhand\nunderhanded\nunderhandedly\nunderhandedness\nunderjaw\nunderjaws\nunderlaid\nunderlain\nunderlap\nunderlapped\nunderlapping\nunderlaps\nunderlay\nunderlaying\nunderlays\nunderlet\nunderlets\nunderletting\nunderlie\nunderlies\nunderline\nunderlined\nunderlines\nunderling\nunderlings\nunderlining\nunderlip\nunderlips\nunderlit\nunderlying\nundermine\nundermined\nundermines\nundermining\nundermost\nunderneath\nundernourished\nundernourishment\nunderpaid\nunderpants\nunderpart\nunderparts\nunderpass\nunderpasses\nunderpay\nunderpaying\nunderpayment\nunderpayments\nunderpays\nunderpin\nunderpinned\nunderpinning\nunderpinnings\nunderpins\nunderplay\nunderplayed\nunderplaying\nunderplays\nunderpopulated\nunderprivileged\nunderproduction\nunderproductions\nunderran\nunderrate\nunderrated\nunderrates\nunderrating\nunderrun\nunderrunning\nunderruns\nunderscore\nunderscored\nunderscores\nunderscoring\nundersea\nunderseas\nundersell\nunderselling\nundersells\nunderset\nundersets\nundersexed\nundershirt\nundershirts\nundershoot\nundershooting\nundershoots\nundershorts\nundershot\nunderside\nundersides\nundersigned\nundersized\nundersold\nunderstaffed\nunderstand\nunderstandability\nunderstandable\nunderstandably\nunderstanding\nunderstandingly\nunderstandings\nunderstands\nunderstate\nunderstated\nunderstatement\nunderstatements\nunderstates\nunderstating\nunderstood\nunderstudied\nunderstudies\nunderstudy\nunderstudying\nundertake\nundertaken\nundertaker\nundertakers\nundertakes\nundertaking\nundertakings\nundertax\nundertaxed\nundertaxes\nundertaxing\nundertone\nundertones\nundertook\nundertow\nundertows\nundervaluation\nundervaluations\nundervalue\nundervalued\nundervalues\nundervaluing\nunderwater\nunderway\nunderwear\nunderweight\nunderwent\nunderworld\nunderworlds\nunderwrite\nunderwriter\nunderwriters\nunderwrites\nunderwriting\nunderwritten\nunderwrote\nundesirable\nundesirables\nundesirably\nundesired\nundetectable\nundetected\nundeterminable\nundetermined\nundeveloped\nundevout\nundiagnosed\nundid\nundies\nundiluted\nundimmed\nundine\nundines\nundisclosed\nundiscoverable\nundiscovered\nundisputable\nundisputed\nundistinguished\nundisturbed\nundivided\nundo\nundock\nundocked\nundocking\nundocks\nundocumented\nundoer\nundoers\nundoes\nundoing\nundoings\nundone\nundouble\nundoubled\nundoubles\nundoubling\nundoubtable\nundoubted\nundoubtedly\nundoubting\nundrape\nundraped\nundrapes\nundraping\nundraw\nundrawing\nundrawn\nundraws\nundreamed\nundreamt\nundress\nundressed\nundresses\nundressing\nundrest\nundrew\nundried\nundrunk\nundue\nundulant\nundulate\nundulated\nundulates\nundulating\nundulation\nundulations\nundulatory\nundulled\nunduly\nundy\nundyed\nundying\nuneager\nunearned\nunearth\nunearthed\nunearthing\nunearthliness\nunearthly\nunearths\nunease\nuneases\nuneasier\nuneasiest\nuneasily\nuneasiness\nuneasy\nuneaten\nuneconomic\nunedible\nunedited\nunemployable\nunemployed\nunemployment\nunemployments\nunended\nunending\nunenforceable\nunenforced\nunenvied\nunequal\nunequaled\nunequalled\nunequally\nunequals\nunequivocal\nunequivocally\nunerased\nunerring\nunerringly\nunessential\nunethical\nunevaded\nuneven\nunevener\nunevenest\nunevenly\nunevenness\nuneventful\nuneventfully\nunexceptionable\nunexceptionableness\nunexceptionably\nunexceptional\nunexotic\nunexpected\nunexpectedly\nunexpectedness\nunexpert\nunexplainable\nunexplained\nunexplored\nunexposed\nunf\nunfaded\nunfading\nunfailing\nunfailingly\nunfair\nunfairer\nunfairest\nunfairly\nunfairness\nunfaith\nunfaithful\nunfaithfully\nunfaithfulness\nunfaiths\nunfallen\nunfamiliar\nunfamiliarity\nunfamiliarly\nunfancy\nunfasten\nunfastened\nunfastening\nunfastens\nunfavorable\nunfavorably\nunfazed\nunfeared\nunfed\nunfeeling\nunfeelingly\nunfeelingness\nunfeigned\nunfeignedly\nunfelt\nunfence\nunfenced\nunfences\nunfencing\nunfetter\nunfettered\nunfettering\nunfetters\nunfilial\nunfilled\nunfilmed\nunfinished\nunfired\nunfished\nunfit\nunfitly\nunfitness\nunfits\nunfitted\nunfitting\nunfix\nunfixed\nunfixes\nunfixing\nunfixt\nunflappable\nunflexed\nunflinching\nunflinchingly\nunfoiled\nunfold\nunfolded\nunfolder\nunfolders\nunfolding\nunfolds\nunfond\nunforced\nunforeseeable\nunforeseen\nunforged\nunforgettable\nunforgettably\nunforgot\nunforked\nunformed\nunfortunate\nunfortunately\nunfortunates\nunfought\nunfound\nunfounded\nunframed\nunfree\nunfreed\nunfreeing\nunfrees\nunfreeze\nunfreezes\nunfreezing\nunfriendlier\nunfriendliest\nunfriendliness\nunfriendly\nunfrock\nunfrocked\nunfrocking\nunfrocks\nunfroze\nunfrozen\nunfunded\nunfurl\nunfurled\nunfurling\nunfurls\nunfurnished\nunfused\nunfussy\nungainlier\nungainliest\nungainliness\nungainly\nungalled\nungenial\nungentle\nungently\nungifted\nungird\nungirded\nungirding\nungirds\nungirt\nunglazed\nunglove\nungloved\nungloves\nungloving\nunglue\nunglued\nunglues\nungluing\nungodlier\nungodliest\nungodliness\nungodly\nungot\nungotten\nungovernable\nungowned\nungraced\nungraded\nungrateful\nungratefully\nungratefulness\nungreedy\nungual\nunguard\nunguarded\nunguardedly\nunguardedness\nunguarding\nunguards\nunguent\nunguents\nungues\nunguided\nunguis\nungula\nungulae\nungular\nungulate\nungulates\nunhailed\nunhair\nunhaired\nunhairing\nunhairs\nunhallow\nunhallowed\nunhallowing\nunhallows\nunhalved\nunhand\nunhanded\nunhandier\nunhandiest\nunhanding\nunhands\nunhandy\nunhang\nunhanged\nunhanging\nunhangs\nunhappier\nunhappiest\nunhappily\nunhappiness\nunhappy\nunharmed\nunhasty\nunhat\nunhats\nunhatted\nunhatting\nunhealed\nunhealthier\nunhealthiest\nunhealthily\nunhealthy\nunheard\nunheated\nunheeded\nunheeding\nunhelm\nunhelmed\nunhelming\nunhelms\nunhelped\nunheroic\nunhewn\nunhinge\nunhinged\nunhinges\nunhinging\nunhip\nunhired\nunhitch\nunhitched\nunhitches\nunhitching\nunholiest\nunholily\nunholiness\nunholy\nunhood\nunhooded\nunhooding\nunhoods\nunhook\nunhooked\nunhooking\nunhooks\nunhoped\nunhorse\nunhorsed\nunhorses\nunhorsing\nunhouse\nunhoused\nunhouses\nunhousing\nunhuman\nunhung\nunhurt\nunhusk\nunhusked\nunhusking\nunhusks\nunhyphenated\nunialgal\nuniaxial\nunicameral\nunicamerally\nunicellular\nunicolor\nunicorn\nunicorns\nunicycle\nunicycles\nunicyclist\nunicyclists\nunideaed\nunideal\nunidentifiable\nunidentified\nunidirectional\nuniface\nunifaces\nunifiable\nunific\nunification\nunifications\nunified\nunifier\nunifiers\nunifies\nunifilar\nuniform\nuniformed\nuniformer\nuniformest\nuniforming\nuniformitarian\nuniformitarianism\nuniformities\nuniformity\nuniformly\nuniforms\nunify\nunifying\nunilateral\nunilaterally\nunilobed\nunimaginable\nunimbued\nunimpeachable\nunimpeachably\nunimportant\nuninformed\nuninhabitable\nuninhabited\nuninhibited\nuninhibitedly\nuninhibitedness\nuninstructed\nuninstructive\nunintelligibilities\nunintelligibility\nunintelligible\nunintelligibleness\nunintelligibly\nunintended\nunintentional\nunintentionally\nuninterested\nuninteresting\nuninterrupted\nuninterruptedly\nunion\nunionise\nunionised\nunionises\nunionising\nunionism\nunionisms\nunionist\nunionists\nunionization\nunionizations\nunionize\nunionized\nunionizes\nunionizing\nunions\nunipod\nunipods\nunipolar\nunique\nuniquely\nuniqueness\nuniquer\nuniques\nuniquest\nunironed\nunisex\nunisexes\nunison\nunisonal\nunisons\nunissued\nunit\nunitage\nunitages\nunitarian\nunitarianism\nunitarians\nunitary\nunite\nunited\nunitedly\nuniter\nuniters\nunites\nunities\nuniting\nunitive\nunitization\nunitizations\nunitize\nunitized\nunitizes\nunitizing\nunits\nunity\nunivalve\nunivalves\nuniversal\nuniversalism\nuniversalist\nuniversalistic\nuniversalists\nuniversalities\nuniversality\nuniversalization\nuniversalizations\nuniversalize\nuniversalized\nuniversalizes\nuniversalizing\nuniversally\nuniversalness\nuniversals\nuniverse\nuniverses\nuniversities\nuniversity\nunivocal\nunivocals\nunjaded\nunjoined\nunjoyful\nunjudged\nunjust\nunjustifiable\nunjustifiably\nunjustified\nunjustly\nunkempt\nunkend\nunkenned\nunkennel\nunkenneled\nunkenneling\nunkennelled\nunkennelling\nunkennels\nunkent\nunkept\nunkind\nunkinder\nunkindest\nunkindlier\nunkindliest\nunkindly\nunkindness\nunkingly\nunkissed\nunknit\nunknits\nunknitted\nunknitting\nunknot\nunknots\nunknotted\nunknotting\nunknowable\nunknowing\nunknowingly\nunknown\nunknowns\nunkosher\nunlace\nunlaced\nunlaces\nunlacing\nunlade\nunladed\nunladen\nunlades\nunlading\nunlaid\nunlash\nunlashed\nunlashes\nunlashing\nunlatch\nunlatched\nunlatches\nunlatching\nunlawful\nunlawfully\nunlawfulness\nunlay\nunlaying\nunlays\nunlead\nunleaded\nunleading\nunleads\nunlearn\nunlearned\nunlearning\nunlearns\nunlearnt\nunleased\nunleash\nunleashed\nunleashes\nunleashing\nunled\nunless\nunlet\nunlethal\nunletted\nunlettered\nunlevel\nunleveled\nunleveling\nunlevelled\nunlevelling\nunlevels\nunlevied\nunlicensed\nunlicked\nunlier\nunliest\nunlike\nunlikelier\nunlikeliest\nunlikelihood\nunlikelihoods\nunlikely\nunlimber\nunlimbered\nunlimbering\nunlimbers\nunlimited\nunlimitedly\nunlined\nunlink\nunlinked\nunlinking\nunlinks\nunlisted\nunlit\nunlive\nunlived\nunlively\nunlives\nunliving\nunload\nunloaded\nunloader\nunloaders\nunloading\nunloads\nunlobed\nunlock\nunlocked\nunlocking\nunlocks\nunloose\nunloosed\nunloosen\nunloosened\nunloosening\nunloosens\nunlooses\nunloosing\nunlovable\nunloved\nunlovelier\nunloveliest\nunlovely\nunloving\nunluckier\nunluckiest\nunluckily\nunlucky\nunmade\nunmake\nunmaker\nunmakers\nunmakes\nunmaking\nunman\nunmanful\nunmanliness\nunmanly\nunmanned\nunmannerly\nunmanning\nunmans\nunmapped\nunmarked\nunmarred\nunmarried\nunmask\nunmasked\nunmasker\nunmaskers\nunmasking\nunmasks\nunmatched\nunmated\nunmatted\nunmeaning\nunmeant\nunmeet\nunmeetly\nunmellow\nunmelted\nunmended\nunmentionable\nunmentionables\nunmerciful\nunmercifully\nunmet\nunmew\nunmewed\nunmewing\nunmews\nunmilled\nunmingle\nunmingled\nunmingles\nunmingling\nunmistakable\nunmistakably\nunmiter\nunmitered\nunmitering\nunmiters\nunmitigated\nunmitigatedly\nunmitre\nunmitred\nunmitres\nunmitring\nunmixed\nunmixt\nunmodish\nunmold\nunmolded\nunmolding\nunmolds\nunmolten\nunmoner\nunmonest\nunmoor\nunmoored\nunmooring\nunmoors\nunmoral\nunmounted\nunmovable\nunmoved\nunmoving\nunmown\nunmuffle\nunmuffled\nunmuffles\nunmuffling\nunmuzzle\nunmuzzled\nunmuzzles\nunmuzzling\nunnail\nunnailed\nunnailing\nunnails\nunnameable\nunnamed\nunnatural\nunnaturally\nunnaturalness\nunnecessarily\nunnecessary\nunneeded\nunnerve\nunnerved\nunnerves\nunnerving\nunnoisy\nunnoted\nunnoticeable\nunnoticed\nunnumbered\nunny\nunobserved\nunoccupied\nunofficial\nunofficially\nunoiled\nunopen\nunopened\nunopposed\nunordered\nunorganized\nunornate\nunorthodox\nunorthodoxies\nunorthodoxy\nunowned\nunpack\nunpacked\nunpacker\nunpackers\nunpacking\nunpacks\nunpaged\nunpaid\nunpaired\nunpalatable\nunparalleled\nunparted\nunpaved\nunpaying\nunpeg\nunpegged\nunpegging\nunpegs\nunpen\nunpenned\nunpenning\nunpens\nunpent\nunpeople\nunpeopled\nunpeoples\nunpeopling\nunperson\nunpersons\nunpick\nunpicked\nunpicking\nunpicks\nunpier\nunpiest\nunpile\nunpiled\nunpiles\nunpiling\nunpin\nunpinned\nunpinning\nunpins\nunpitied\nunplaced\nunplait\nunplaited\nunplaiting\nunplaits\nunplayed\nunpleasant\nunpleasantly\nunpleasantness\nunpliant\nunplowed\nunplug\nunplugged\nunplugging\nunplugs\nunpoetic\nunpoised\nunpolite\nunpolled\nunpopular\nunpopularity\nunposed\nunposted\nunprecedented\nunpredictable\nunprejudiced\nunprepared\nunpreparedness\nunpretty\nunpriced\nunprimed\nunprincipled\nunprincipledness\nunprintable\nunprized\nunprobed\nunprocessed\nunproductive\nunprofessional\nunprofitable\nunprofitably\nunprosperous\nunprotected\nunprovable\nunproved\nunproven\nunpruned\nunpublished\nunpucker\nunpuckered\nunpuckering\nunpuckers\nunpunished\nunpure\nunpurged\nunpuzzle\nunpuzzled\nunpuzzles\nunpuzzling\nunqualifiable\nunqualified\nunqualifiedly\nunquestionable\nunquestionably\nunquestioned\nunquestioning\nunquestioningly\nunquiet\nunquieter\nunquietest\nunquietly\nunquietness\nunquiets\nunquote\nunquoted\nunquotes\nunquoting\nunraised\nunraked\nunranked\nunrated\nunravel\nunraveled\nunraveling\nunravelled\nunravelling\nunravels\nunrazed\nunreachable\nunread\nunreadable\nunreadier\nunreadiest\nunready\nunreal\nunrealistic\nunrealistically\nunrealities\nunreality\nunrealizable\nunrealized\nunreally\nunreason\nunreasonable\nunreasonableness\nunreasonably\nunreasoned\nunreasoning\nunreasoningly\nunreasons\nunreceptive\nunrecognizable\nunrecognizably\nunrecognized\nunrecoverable\nunreel\nunreeled\nunreeler\nunreelers\nunreeling\nunreels\nunreeve\nunreeved\nunreeves\nunreeving\nunregenerate\nunregenerately\nunregulated\nunrelated\nunrelenting\nunrelentingly\nunreliable\nunremitting\nunremittingly\nunrent\nunrented\nunrepaid\nunrepair\nunrepairs\nunreported\nunreserved\nunreservedly\nunresolved\nunresponsive\nunresponsively\nunresponsiveness\nunrest\nunrested\nunrestricted\nunrests\nunrhymed\nunriddle\nunriddled\nunriddles\nunriddling\nunrifled\nunrig\nunrigged\nunrigging\nunrigs\nunrimed\nunrinsed\nunrip\nunripe\nunripely\nunriper\nunripest\nunripped\nunripping\nunrips\nunrisen\nunrivaled\nunrivalled\nunrobe\nunrobed\nunrobes\nunrobing\nunroll\nunrolled\nunrolling\nunrolls\nunroof\nunroofed\nunroofing\nunroofs\nunroot\nunrooted\nunrooting\nunroots\nunrough\nunround\nunrounded\nunrounding\nunrounds\nunrove\nunroven\nunruffled\nunruled\nunrulier\nunruliest\nunruliness\nunruly\nunrushed\nuns\nunsaddle\nunsaddled\nunsaddles\nunsaddling\nunsafe\nunsafely\nunsafeties\nunsafety\nunsaid\nunsalted\nunsated\nunsatisfactorily\nunsatisfactory\nunsatisfied\nunsaturated\nunsaved\nunsavory\nunsawed\nunsawn\nunsay\nunsaying\nunsays\nunscaled\nunscathed\nunschooled\nunscientific\nunscientifically\nunscramble\nunscrambled\nunscrambles\nunscrambling\nunscrew\nunscrewed\nunscrewing\nunscrews\nunscrupulous\nunscrupulously\nunscrupulousness\nunseal\nunsealed\nunsealing\nunseals\nunseam\nunseamed\nunseaming\nunseams\nunseared\nunseasonable\nunseasonableness\nunseasonably\nunseasoned\nunseat\nunseated\nunseating\nunseats\nunsecured\nunseeded\nunseeing\nunseemlier\nunseemliest\nunseemliness\nunseemly\nunseen\nunseized\nunselfish\nunselfishly\nunselfishness\nunsent\nunserved\nunset\nunsets\nunsetting\nunsettle\nunsettled\nunsettledness\nunsettlement\nunsettlements\nunsettles\nunsettling\nunsew\nunsewed\nunsewing\nunsewn\nunsews\nunsex\nunsexed\nunsexes\nunsexing\nunsexual\nunshaded\nunshaken\nunshamed\nunshaped\nunshapen\nunshared\nunsharp\nunshaved\nunshaven\nunsheathe\nunsheathed\nunsheathes\nunsheathing\nunshed\nunshell\nunshelled\nunshelling\nunshells\nunshift\nunshifted\nunshifting\nunshifts\nunship\nunshipped\nunshipping\nunships\nunshod\nunshorn\nunshrunk\nunshut\nunsicker\nunsifted\nunsight\nunsighted\nunsighting\nunsightliness\nunsightly\nunsights\nunsigned\nunsilent\nunsinful\nunsized\nunskilled\nunskillful\nunskillfully\nunskillfulness\nunslaked\nunsling\nunslinging\nunslings\nunslung\nunsmoked\nunsnap\nunsnapped\nunsnapping\nunsnaps\nunsnarl\nunsnarled\nunsnarling\nunsnarls\nunsoaked\nunsober\nunsociability\nunsociable\nunsocial\nunsocially\nunsoiled\nunsold\nunsolder\nunsoldered\nunsoldering\nunsolders\nunsolid\nunsolvable\nunsolved\nunsoncy\nunsonsie\nunsonsy\nunsophisticated\nunsophistication\nunsophistications\nunsorted\nunsought\nunsound\nunsounder\nunsoundest\nunsoundly\nunsoundness\nunsoured\nunsowed\nunsown\nunsparing\nunsparingly\nunspeak\nunspeakable\nunspeakably\nunspeaking\nunspeaks\nunspecific\nunspecified\nunspent\nunsphere\nunsphered\nunspheres\nunsphering\nunspilt\nunsplit\nunspoilt\nunspoke\nunspoken\nunsprung\nunspun\nunstable\nunstableness\nunstabler\nunstablest\nunstably\nunstack\nunstacked\nunstacking\nunstacks\nunstate\nunstated\nunstates\nunstating\nunsteadied\nunsteadier\nunsteadies\nunsteadiest\nunsteadily\nunsteadiness\nunsteady\nunsteadying\nunsteel\nunsteeled\nunsteeling\nunsteels\nunstep\nunstepped\nunstepping\nunsteps\nunstick\nunsticked\nunsticking\nunsticks\nunstop\nunstopped\nunstopping\nunstops\nunstrap\nunstrapped\nunstrapping\nunstraps\nunstress\nunstresses\nunstring\nunstringing\nunstrings\nunstructured\nunstrung\nunstuck\nunstung\nunsubtle\nunsuccessful\nunsuccessfully\nunsuitability\nunsuitable\nunsuitably\nunsuited\nunsung\nunsunk\nunsupportable\nunsupported\nunsure\nunsurely\nunsuspected\nunsuspecting\nunswathe\nunswathed\nunswathes\nunswathing\nunswayed\nunswear\nunswearing\nunswears\nunswept\nunswore\nunsworn\nuntack\nuntacked\nuntacking\nuntacks\nuntagged\nuntaken\nuntame\nuntamed\nuntangle\nuntangled\nuntangles\nuntangling\nuntanned\nuntapped\nuntasted\nuntaught\nuntaxed\nunteach\nunteaches\nunteaching\nuntenability\nuntenable\nuntenanted\nuntended\nuntested\nuntether\nuntethered\nuntethering\nuntethers\nunthawed\nunthink\nunthinkability\nunthinkable\nunthinkably\nunthinking\nunthinkingly\nunthinks\nunthought\nunthread\nunthreaded\nunthreading\nunthreads\nunthrone\nunthroned\nunthrones\nunthroning\nuntidied\nuntidier\nuntidies\nuntidiest\nuntidily\nuntidy\nuntidying\nuntie\nuntied\nunties\nuntil\nuntilled\nuntilted\nuntimelier\nuntimeliest\nuntimeliness\nuntimely\nuntinged\nuntired\nuntiring\nuntitled\nunto\nuntold\nuntouchability\nuntouchable\nuntouchables\nuntouched\nuntoward\nuntowardly\nuntowardness\nuntraced\nuntrained\nuntrammeled\nuntread\nuntreading\nuntreads\nuntried\nuntrim\nuntrimmed\nuntrimming\nuntrims\nuntrod\nuntrodden\nuntrue\nuntruer\nuntruest\nuntruly\nuntruss\nuntrussed\nuntrusses\nuntrussing\nuntrusty\nuntruth\nuntruthful\nuntruthfully\nuntruthfulness\nuntruths\nuntuck\nuntucked\nuntucking\nuntucks\nuntufted\nuntune\nuntuned\nuntunes\nuntuning\nunturned\nuntwine\nuntwined\nuntwines\nuntwining\nuntwist\nuntwisted\nuntwisting\nuntwists\nuntying\nununited\nunurged\nunusable\nunused\nunusual\nunusually\nunusualness\nunvalued\nunvaried\nunveil\nunveiled\nunveiling\nunveils\nunveined\nunversed\nunvexed\nunvext\nunviable\nunvocal\nunvoice\nunvoiced\nunvoices\nunvoicing\nunwalled\nunwanted\nunwarier\nunwariest\nunwarily\nunwariness\nunwarmed\nunwarned\nunwarped\nunwarranted\nunwary\nunwashed\nunwasheds\nunwasted\nunwaxed\nunweaned\nunweary\nunweave\nunweaves\nunweaving\nunwed\nunwedded\nunweeded\nunweight\nunweighted\nunweighting\nunweights\nunwelcome\nunwelded\nunwell\nunwept\nunwetted\nunwholesome\nunwholesomely\nunwieldier\nunwieldiest\nunwieldy\nunwifely\nunwilled\nunwilling\nunwillingly\nunwillingness\nunwind\nunwinder\nunwinders\nunwinding\nunwinds\nunwisdom\nunwisdoms\nunwise\nunwisely\nunwiser\nunwisest\nunwish\nunwished\nunwishes\nunwishing\nunwit\nunwits\nunwitted\nunwitting\nunwittingly\nunwon\nunwonted\nunwontedly\nunwontedness\nunwooded\nunwooed\nunworkable\nunworked\nunworn\nunworthier\nunworthies\nunworthiest\nunworthily\nunworthiness\nunworthy\nunwound\nunwove\nunwoven\nunwrap\nunwrapped\nunwrapping\nunwraps\nunwritten\nunwrung\nunyeaned\nunyoke\nunyoked\nunyokes\nunyoking\nunzip\nunzipped\nunzipping\nunzips\nunzoned\nup\nupas\nupases\nupbear\nupbearer\nupbearers\nupbearing\nupbears\nupbeat\nupbeats\nupbind\nupbinding\nupbinds\nupboil\nupboiled\nupboiling\nupboils\nupbore\nupborne\nupbound\nupbow\nupbraid\nupbraided\nupbraiding\nupbraids\nupbringing\nupbringings\nupbuild\nupbuilding\nupbuilds\nupbuilt\nupby\nupbye\nupcast\nupcasting\nupcasts\nupchuck\nupchucked\nupchucking\nupchucks\nupclimb\nupclimbed\nupclimbing\nupclimbs\nupcoil\nupcoiled\nupcoiling\nupcoils\nupcoming\nupcurl\nupcurled\nupcurling\nupcurls\nupcurve\nupcurved\nupcurves\nupcurving\nupdart\nupdarted\nupdarting\nupdarts\nupdate\nupdated\nupdater\nupdaters\nupdates\nupdating\nupdive\nupdived\nupdives\nupdiving\nupdo\nupdos\nupdove\nupdraft\nupdrafts\nupdried\nupdries\nupdry\nupdrying\nupend\nupended\nupending\nupends\nupfield\nupfling\nupflinging\nupflings\nupflow\nupflowed\nupflowing\nupflows\nupflung\nupfold\nupfolded\nupfolding\nupfolds\nupgather\nupgathered\nupgathering\nupgathers\nupgaze\nupgazed\nupgazes\nupgazing\nupgird\nupgirded\nupgirding\nupgirds\nupgirt\nupgoing\nupgrade\nupgraded\nupgrades\nupgrading\nupgrew\nupgrow\nupgrowing\nupgrown\nupgrows\nupgrowth\nupgrowths\nupheap\nupheaped\nupheaping\nupheaps\nupheaval\nupheavals\nupheave\nupheaved\nupheaver\nupheavers\nupheaves\nupheaving\nupheld\nuphill\nuphills\nuphoard\nuphoarded\nuphoarding\nuphoards\nuphold\nupholder\nupholders\nupholding\nupholds\nupholster\nupholstered\nupholsterer\nupholsterers\nupholsteries\nupholstering\nupholsters\nupholstery\nuphove\nuphroe\nuphroes\nupkeep\nupkeeps\nupland\nuplander\nuplanders\nuplands\nupleap\nupleaped\nupleaping\nupleaps\nupleapt\nuplift\nuplifted\nuplifter\nuplifters\nuplifting\nuplifts\nuplight\nuplighted\nuplighting\nuplights\nuplit\nupmost\nupo\nupon\nupped\nupper\nuppercase\nupperclassman\nupperclassmen\nuppercut\nuppercuts\nuppercutted\nuppercutting\nuppermost\nuppers\nuppile\nuppiled\nuppiles\nuppiling\nupping\nuppings\nuppish\nuppishly\nuppity\nupprop\nuppropped\nuppropping\nupprops\nupraise\nupraised\nupraiser\nupraisers\nupraises\nupraising\nupreach\nupreached\nupreaches\nupreaching\nuprear\nupreared\nuprearing\nuprears\nupright\nuprighted\nuprighting\nuprightly\nuprightness\nuprights\nuprise\nuprisen\nupriser\nuprisers\nuprises\nuprising\nuprisings\nupriver\nuprivers\nuproar\nuproarious\nuproariously\nuproariousness\nuproars\nuproot\nuprootal\nuprootals\nuprooted\nuprootedness\nuprooter\nuprooters\nuprooting\nuproots\nuprose\nuprouse\nuproused\nuprouses\nuprousing\nuprush\nuprushed\nuprushes\nuprushing\nups\nupsend\nupsending\nupsends\nupsent\nupset\nupsets\nupsetter\nupsetters\nupsetting\nupshift\nupshifted\nupshifting\nupshifts\nupshoot\nupshooting\nupshoots\nupshot\nupshots\nupside\nupsides\nupsilon\nupsilons\nupsoar\nupsoared\nupsoaring\nupsoars\nupsprang\nupspring\nupspringing\nupsprings\nupsprung\nupstage\nupstaged\nupstages\nupstaging\nupstair\nupstairs\nupstand\nupstanding\nupstandingness\nupstands\nupstare\nupstared\nupstares\nupstaring\nupstart\nupstarted\nupstarting\nupstarts\nupstate\nupstater\nupstaters\nupstates\nupstep\nupstepped\nupstepping\nupsteps\nupstir\nupstirred\nupstirring\nupstirs\nupstood\nupstream\nupstroke\nupstrokes\nupsurge\nupsurged\nupsurges\nupsurging\nupsweep\nupsweeping\nupsweeps\nupswell\nupswelled\nupswelling\nupswells\nupswept\nupswing\nupswinging\nupswings\nupswollen\nupswung\nuptake\nuptakes\nuptear\nuptearing\nuptears\nupthrew\nupthrow\nupthrowing\nupthrown\nupthrows\nupthrust\nupthrusted\nupthrusting\nupthrusts\nuptight\nuptilt\nuptilted\nuptilting\nuptilts\nuptime\nuptimes\nuptore\nuptorn\nuptoss\nuptossed\nuptosses\nuptossing\nuptown\nuptowner\nuptowners\nuptowns\nuptrend\nuptrends\nupturn\nupturned\nupturning\nupturns\nupwaft\nupwafted\nupwafting\nupwafts\nupward\nupwardly\nupwardness\nupwards\nupwell\nupwelled\nupwelling\nupwells\nupwind\nupwinds\nuracil\nuracils\nuraei\nuraemia\nuraemias\nuraemic\nuraeus\nuraeuses\nuralite\nuralites\nuralitic\nuranic\nuranide\nuranides\nuranism\nuranisms\nuranite\nuranites\nuranitic\nuranium\nuraniums\nuranous\nuranyl\nuranylic\nuranyls\nurare\nurares\nurari\nuraris\nurase\nurases\nurate\nurates\nuratic\nurb\nurban\nurbane\nurbanely\nurbaner\nurbanest\nurbanise\nurbanised\nurbanises\nurbanising\nurbanism\nurbanisms\nurbanist\nurbanists\nurbanite\nurbanites\nurbanities\nurbanity\nurbanization\nurbanize\nurbanized\nurbanizes\nurbanizing\nurbanologist\nurbanologists\nurbanology\nurbia\nurbs\nurchin\nurchins\nurd\nurds\nurea\nureal\nureas\nurease\nureases\nuredia\nuredial\nuredinia\nuredium\nuredo\nuredos\nureic\nureide\nureides\nuremia\nuremias\nuremic\nureter\nureteral\nureteric\nureters\nurethan\nurethane\nurethanes\nurethans\nurethra\nurethrae\nurethral\nurethras\nuretic\nurge\nurged\nurgencies\nurgency\nurgent\nurgently\nurger\nurgers\nurges\nurging\nurgingly\nurial\nuric\nuridine\nuridines\nurinal\nurinals\nurinaries\nurinary\nurinate\nurinated\nurinates\nurinating\nurination\nurinations\nurine\nurinemia\nurinemias\nurinemic\nurines\nurinose\nurinous\nurn\nurnlike\nurns\nurochord\nurochords\nurodele\nurodeles\nurolith\nuroliths\nurologic\nurologies\nurologist\nurologists\nurology\nuropod\nuropodal\nuropods\nuroscopies\nuroscopy\nurostyle\nurostyles\nursa\nursae\nursiform\nursine\nurticant\nurticants\nurticate\nurticated\nurticates\nurticating\nurus\nuruses\nurushiol\nurushiols\nus\nusabilities\nusability\nusable\nusableness\nusably\nusage\nusages\nusance\nusances\nusaunce\nusaunces\nuse\nuseable\nuseably\nused\nuseful\nusefully\nusefulness\nuseless\nuselessly\nuselessness\nuser\nusers\nuses\nusher\nushered\nusherette\nusherettes\nushering\nushers\nusing\nusnea\nusneas\nusquabae\nusquabaes\nusque\nusquebae\nusquebaes\nusques\nustulate\nusual\nusually\nusualness\nusuals\nusufruct\nusufructs\nusufructuaries\nusufructuary\nusurer\nusurers\nusuries\nusurious\nusuriously\nusuriousness\nusurp\nusurpation\nusurpations\nusurped\nusurper\nusurpers\nusurping\nusurps\nusury\nut\nuta\nutas\nutensil\nutensils\nuteri\nuterine\nuterus\nuteruses\nuties\nutile\nutilidor\nutilidors\nutilise\nutilised\nutiliser\nutilisers\nutilises\nutilising\nutilitarian\nutilitarianism\nutilitarians\nutilities\nutility\nutilizable\nutilization\nutilizations\nutilize\nutilized\nutilizer\nutilizers\nutilizes\nutilizing\nutmost\nutmosts\nutopia\nutopian\nutopians\nutopias\nutopism\nutopisms\nutopist\nutopists\nutricle\nutricles\nutriculi\nuts\nutter\nutterable\nutterance\nutterances\nuttered\nutterer\nutterers\nuttering\nutterly\nuttermost\nutters\nuvea\nuveal\nuveas\nuveitic\nuveitis\nuveitises\nuveous\nuvula\nuvulae\nuvular\nuvularly\nuvulars\nuvulas\nuvulitis\nuvulitises\nuxorial\nuxoricide\nuxoricides\nuxorious\nuxoriously\nuxoriousness\nvac\nvacancies\nvacancy\nvacant\nvacantly\nvacantness\nvacate\nvacated\nvacates\nvacating\nvacation\nvacationed\nvacationer\nvacationers\nvacationing\nvacationist\nvacationists\nvacations\nvaccina\nvaccinal\nvaccinas\nvaccinate\nvaccinated\nvaccinates\nvaccinating\nvaccination\nvaccinations\nvaccinator\nvaccinators\nvaccine\nvaccines\nvaccinia\nvaccinias\nvacillate\nvacillated\nvacillates\nvacillating\nvacillatingly\nvacillation\nvacillations\nvacillator\nvacillators\nvacs\nvacua\nvacuities\nvacuity\nvacuolar\nvacuole\nvacuoles\nvacuous\nvacuously\nvacuousness\nvacuum\nvacuumed\nvacuuming\nvacuums\nvadose\nvagabond\nvagabonded\nvagabonding\nvagabondish\nvagabondism\nvagabonds\nvagal\nvagally\nvagaries\nvagarious\nvagariously\nvagary\nvagi\nvagile\nvagilities\nvagility\nvagina\nvaginae\nvaginal\nvaginas\nvaginate\nvagotomies\nvagotomy\nvagrancies\nvagrancy\nvagrant\nvagrantly\nvagrants\nvagrom\nvague\nvaguely\nvagueness\nvaguer\nvaguest\nvagus\nvahine\nvahines\nvail\nvailed\nvailing\nvails\nvain\nvainer\nvainest\nvainglories\nvainglorious\nvaingloriously\nvaingloriousness\nvainglory\nvainly\nvainness\nvainnesses\nvair\nvairs\nvakeel\nvakeels\nvakil\nvakils\nvalance\nvalanced\nvalances\nvalancing\nvale\nvalediction\nvaledictions\nvaledictorian\nvaledictorians\nvaledictories\nvaledictory\nvalence\nvalences\nvalencia\nvalencias\nvalencies\nvalency\nvalentine\nvalentines\nvalerate\nvalerates\nvalerian\nvalerians\nvaleric\nvales\nvalet\nvaleted\nvaleting\nvalets\nvaletudinarian\nvaletudinarianism\nvaletudinarians\nvaletudinaries\nvaletudinary\nvalgoid\nvalgus\nvalguses\nvaliance\nvaliances\nvaliancies\nvaliancy\nvaliant\nvaliantly\nvaliants\nvalid\nvalidate\nvalidated\nvalidates\nvalidating\nvalidation\nvalidations\nvalidities\nvalidity\nvalidly\nvaline\nvalines\nvalise\nvalises\nvalkyr\nvalkyrie\nvalkyries\nvalkyrs\nvallate\nvalley\nvalleys\nvalonia\nvalonias\nvalor\nvalorise\nvalorised\nvalorises\nvalorising\nvalorization\nvalorizations\nvalorize\nvalorized\nvalorizes\nvalorizing\nvalorous\nvalorously\nvalors\nvalour\nvalours\nvalse\nvalses\nvaluable\nvaluableness\nvaluables\nvaluably\nvaluate\nvaluated\nvaluates\nvaluating\nvaluation\nvaluational\nvaluationally\nvaluations\nvaluator\nvaluators\nvalue\nvalued\nvalueless\nvaluelessness\nvaluer\nvaluers\nvalues\nvaluing\nvaluta\nvalutas\nvalval\nvalvar\nvalvate\nvalve\nvalved\nvalveless\nvalvelet\nvalvelets\nvalves\nvalving\nvalvula\nvalvulae\nvalvular\nvalvule\nvalvules\nvambrace\nvambraces\nvamoose\nvamoosed\nvamooses\nvamoosing\nvamose\nvamosed\nvamoses\nvamosing\nvamp\nvamped\nvamper\nvampers\nvamping\nvampire\nvampires\nvampiric\nvampish\nvamps\nvan\nvanadate\nvanadates\nvanadic\nvanadium\nvanadiums\nvanadous\nvanda\nvandal\nvandalic\nvandalism\nvandalize\nvandalized\nvandalizes\nvandalizing\nvandals\nvandas\nvandyke\nvandyked\nvandykes\nvane\nvaned\nvanes\nvang\nvangs\nvanguard\nvanguards\nvanilla\nvanillas\nvanillic\nvanillin\nvanillins\nvanish\nvanished\nvanisher\nvanishers\nvanishes\nvanishing\nvanishingly\nvanitied\nvanities\nvanity\nvanman\nvanmen\nvanquish\nvanquishable\nvanquished\nvanquisher\nvanquishers\nvanquishes\nvanquishing\nvans\nvantage\nvantages\nvanward\nvapid\nvapidities\nvapidity\nvapidly\nvapidness\nvapor\nvapored\nvaporer\nvaporers\nvaporing\nvaporings\nvaporise\nvaporised\nvaporises\nvaporish\nvaporishness\nvaporising\nvaporization\nvaporizations\nvaporize\nvaporized\nvaporizer\nvaporizers\nvaporizes\nvaporizing\nvaporous\nvaporously\nvaporousness\nvapors\nvapory\nvapour\nvapoured\nvapourer\nvapourers\nvapouring\nvapours\nvapoury\nvaquero\nvaqueros\nvar\nvara\nvaras\nvaria\nvariabilities\nvariability\nvariable\nvariableness\nvariables\nvariably\nvariance\nvariances\nvariant\nvariants\nvariate\nvariated\nvariates\nvariating\nvariation\nvariational\nvariationally\nvariations\nvarices\nvaricose\nvaricosities\nvaricosity\nvaried\nvariedly\nvariegate\nvariegated\nvariegates\nvariegating\nvariegation\nvariegations\nvarier\nvariers\nvaries\nvarietal\nvarieties\nvariety\nvariform\nvariola\nvariolar\nvariolas\nvariole\nvarioles\nvariorum\nvariorums\nvarious\nvariously\nvaristor\nvaristors\nvarix\nvarlet\nvarletries\nvarletry\nvarlets\nvarment\nvarments\nvarmint\nvarmints\nvarna\nvarnas\nvarnish\nvarnished\nvarnishes\nvarnishing\nvarnishy\nvars\nvarsities\nvarsity\nvarus\nvaruses\nvarve\nvarved\nvarves\nvary\nvarying\nvaryingly\nvas\nvasa\nvasal\nvascula\nvascular\nvascularities\nvascularity\nvasculum\nvasculums\nvase\nvasectomies\nvasectomy\nvaselike\nvases\nvasiform\nvassal\nvassalage\nvassals\nvast\nvaster\nvastest\nvastier\nvasties\nvastiest\nvastities\nvastity\nvastly\nvastness\nvastnesses\nvasts\nvasty\nvat\nvatful\nvatfuls\nvatic\nvatical\nvaticide\nvaticides\nvaticinate\nvaticinated\nvaticinates\nvaticinating\nvaticinator\nvaticinators\nvats\nvatted\nvatting\nvatu\nvatus\nvau\nvaudeville\nvaudevillian\nvaudevillians\nvault\nvaulted\nvaulter\nvaulters\nvaultier\nvaultiest\nvaulting\nvaultings\nvaults\nvaulty\nvaunt\nvaunted\nvaunter\nvaunters\nvauntful\nvauntie\nvaunting\nvauntingly\nvaunts\nvaunty\nvaus\nvav\nvavasor\nvavasors\nvavasour\nvavasours\nvavassor\nvavassors\nvavs\nvaw\nvaward\nvawards\nvawntie\nvaws\nveal\nvealed\nvealer\nvealers\nvealier\nvealiest\nvealing\nveals\nvealy\nvector\nvectored\nvectorial\nvectoring\nvectors\nvedalia\nvedalias\nvedette\nvedettes\nvee\nveena\nveenas\nveep\nveepee\nveepees\nveeps\nveer\nveered\nveeries\nveering\nveeringly\nveers\nveery\nvees\nveg\nvegan\nveganism\nveganisms\nvegans\nvegetable\nvegetables\nvegetably\nvegetal\nvegetant\nvegetarian\nvegetarianism\nvegetarians\nvegetate\nvegetated\nvegetates\nvegetating\nvegetation\nvegetational\nvegetations\nvegetative\nvegetatively\nvegetativeness\nvegete\nvegetist\nvegetists\nvegetive\nvegie\nvehemence\nvehement\nvehemently\nvehicle\nvehicles\nvehicular\nveil\nveiled\nveiledly\nveiler\nveilers\nveiling\nveilings\nveillike\nveils\nvein\nveinal\nveined\nveiner\nveiners\nveinier\nveiniest\nveining\nveinings\nveinless\nveinlet\nveinlets\nveinlike\nveins\nveinule\nveinules\nveinulet\nveinulets\nveiny\nvela\nvelamen\nvelamina\nvelar\nvelaria\nvelarium\nvelarize\nvelarized\nvelarizes\nvelarizing\nvelars\nvelate\nveld\nvelds\nveldt\nveldts\nveliger\nveligers\nvelites\nvelleities\nvelleity\nvellum\nvellums\nveloce\nvelocipede\nvelocipedes\nvelocities\nvelocity\nvelour\nvelours\nveloute\nveloutes\nvelum\nvelure\nvelured\nvelures\nveluring\nvelveret\nvelverets\nvelvet\nvelveted\nvelveteen\nvelveteens\nvelvets\nvelvety\nvena\nvenae\nvenal\nvenalities\nvenality\nvenally\nvenatic\nvenation\nvenations\nvend\nvendable\nvendace\nvendaces\nvended\nvendee\nvendees\nvender\nvenders\nvendetta\nvendettas\nvendibilities\nvendibility\nvendible\nvendibles\nvendibly\nvending\nvendor\nvendors\nvends\nvendue\nvendues\nveneer\nveneered\nveneerer\nveneerers\nveneering\nveneers\nvenenate\nvenenated\nvenenates\nvenenating\nvenenose\nvenerabilities\nvenerability\nvenerable\nvenerableness\nvenerably\nvenerate\nvenerated\nvenerates\nvenerating\nveneration\nvenerations\nvenerator\nvenerators\nvenereal\nveneries\nvenery\nvenetian\nvenetians\nvenge\nvengeance\nvenged\nvengeful\nvengefully\nvengefulness\nvenges\nvenging\nvenial\nvenially\nvenialness\nvenin\nvenine\nvenines\nvenins\nvenire\nvenires\nvenison\nvenisons\nvenom\nvenomed\nvenomer\nvenomers\nvenoming\nvenomous\nvenomously\nvenomousness\nvenoms\nvenose\nvenosities\nvenosity\nvenous\nvenously\nvent\nventage\nventages\nventail\nventails\nvented\nventer\nventers\nventilate\nventilated\nventilates\nventilating\nventilation\nventilations\nventilator\nventilators\nventilatory\nventing\nventless\nventral\nventrally\nventrals\nventricle\nventricles\nventriloquial\nventriloquially\nventriloquism\nventriloquist\nventriloquistic\nventriloquists\nventriloquize\nventriloquized\nventriloquizes\nventriloquizing\nventriloquy\nvents\nventure\nventured\nventurer\nventurers\nventures\nventuresome\nventuresomely\nventuresomeness\nventuri\nventuring\nventuris\nventurous\nventurously\nventurousness\nvenue\nvenues\nvenular\nvenule\nvenules\nvenulose\nvenulous\nvera\nveracious\nveraciously\nveraciousness\nveracities\nveracity\nveranda\nverandaed\nverandah\nverandahs\nverandas\nveratria\nveratrias\nveratrin\nveratrins\nveratrum\nveratrums\nverb\nverbal\nverbalism\nverbalist\nverbalistic\nverbalists\nverbalization\nverbalizations\nverbalize\nverbalized\nverbalizer\nverbalizers\nverbalizes\nverbalizing\nverbally\nverbals\nverbatim\nverbena\nverbenas\nverbiage\nverbiages\nverbid\nverbids\nverbified\nverbifies\nverbify\nverbifying\nverbile\nverbiles\nverbless\nverbose\nverbosely\nverboseness\nverbosities\nverbosity\nverboten\nverbs\nverdancies\nverdancy\nverdant\nverdantly\nverderer\nverderers\nverderor\nverderors\nverdict\nverdicts\nverdigris\nverdin\nverdins\nverditer\nverditers\nverdure\nverdured\nverdures\nverdurous\nverecund\nverge\nverged\nvergence\nvergences\nverger\nvergers\nverges\nverging\nverglas\nverglases\nveridic\nverier\nveriest\nverifiabilities\nverifiability\nverifiable\nverification\nverifications\nverified\nverifier\nverifiers\nverifies\nverify\nverifying\nverily\nverisimilitude\nverisimilitudes\nverism\nverismo\nverismos\nverisms\nverist\nveristic\nverists\nveritable\nveritableness\nveritably\nveritas\nveritates\nverities\nverity\nverjuice\nverjuices\nvermeil\nvermeils\nvermes\nvermian\nvermicide\nvermicides\nvermicular\nvermiculite\nvermiculites\nvermilion\nvermilions\nvermin\nverminous\nvermis\nvermoulu\nvermouth\nvermouths\nvermuth\nvermuths\nvernacle\nvernacles\nvernacular\nvernacularly\nvernaculars\nvernal\nvernalization\nvernalizations\nvernalize\nvernalized\nvernalizes\nvernalizing\nvernally\nvernicle\nvernicles\nvernier\nverniers\nvernix\nvernixes\nveronica\nveronicas\nverruca\nverrucae\nversal\nversant\nversants\nversatile\nversatilely\nversatilities\nversatility\nverse\nversed\nverseman\nversemen\nverser\nversers\nverses\nverset\nversets\nversicle\nversicles\nversification\nversifications\nversified\nversifier\nversifiers\nversifies\nversify\nversifying\nversine\nversines\nversing\nversion\nversional\nversions\nverso\nversos\nverst\nverste\nverstes\nversts\nversus\nvert\nvertebra\nvertebrae\nvertebral\nvertebras\nvertebrate\nvertebrates\nvertex\nvertexes\nvertical\nverticalities\nverticality\nvertically\nverticalness\nverticals\nvertices\nverticil\nverticils\nvertigines\nvertiginous\nvertiginously\nvertigo\nvertigoes\nvertigos\nverts\nvertu\nvertus\nvervain\nvervains\nverve\nverves\nvervet\nvervets\nvery\nvesica\nvesicae\nvesical\nvesicant\nvesicants\nvesicate\nvesicated\nvesicates\nvesicating\nvesication\nvesications\nvesicle\nvesicles\nvesicula\nvesiculae\nvesicular\nvesiculate\nvesiculated\nvesiculates\nvesiculating\nvesper\nvesperal\nvesperals\nvespers\nvespertine\nvespiaries\nvespiary\nvespid\nvespids\nvespine\nvessel\nvesseled\nvessels\nvest\nvesta\nvestal\nvestally\nvestals\nvestas\nvested\nvestee\nvestees\nvestiaries\nvestiary\nvestibule\nvestibuled\nvestibules\nvestige\nvestiges\nvestigia\nvestigial\nvestigially\nvesting\nvestings\nvestless\nvestlike\nvestment\nvestments\nvestral\nvestries\nvestry\nvests\nvestural\nvesture\nvestured\nvestures\nvesturing\nvesuvian\nvesuvians\nvet\nvetch\nvetches\nveteran\nveterans\nveterinarian\nveterinarians\nveterinaries\nveterinary\nvetiver\nvetivers\nveto\nvetoed\nvetoer\nvetoers\nvetoes\nvetoing\nvets\nvetted\nvetting\nvex\nvexation\nvexations\nvexatious\nvexatiously\nvexatiousness\nvexed\nvexedly\nvexer\nvexers\nvexes\nvexil\nvexilla\nvexillar\nvexillum\nvexils\nvexing\nvexingly\nvext\nvia\nviabilities\nviability\nviable\nviably\nviaduct\nviaducts\nvial\nvialed\nvialing\nvialled\nvialling\nvials\nviand\nviands\nviatic\nviatica\nviatical\nviaticum\nviaticums\nviator\nviatores\nviators\nvibe\nvibes\nvibist\nvibists\nvibrance\nvibrances\nvibrancies\nvibrancy\nvibrant\nvibrantly\nvibrants\nvibraphone\nvibraphones\nvibraphonist\nvibraphonists\nvibrate\nvibrated\nvibrates\nvibratile\nvibrating\nvibration\nvibrational\nvibrations\nvibrato\nvibrator\nvibrators\nvibratory\nvibratos\nvibrio\nvibrioid\nvibrion\nvibrions\nvibrios\nvibrissa\nvibrissae\nviburnum\nviburnums\nvicar\nvicarage\nvicarages\nvicarate\nvicarates\nvicarial\nvicariate\nvicariates\nvicarious\nvicariously\nvicariousness\nvicarly\nvicars\nvice\nviced\nviceless\nvicenary\nviceregal\nviceroy\nviceroys\nvices\nvichies\nvichy\nvicinage\nvicinages\nvicinal\nvicing\nvicinities\nvicinity\nvicious\nviciously\nviciousness\nvicissitude\nvicissitudes\nvicomte\nvicomtes\nvictim\nvictimization\nvictimizations\nvictimize\nvictimized\nvictimizer\nvictimizers\nvictimizes\nvictimizing\nvictimless\nvictims\nvictor\nvictoria\nvictorias\nvictories\nvictorious\nvictoriously\nvictors\nvictory\nvictress\nvictresses\nvictual\nvictualed\nvictualer\nvictualers\nvictualing\nvictualled\nvictualler\nvictuallers\nvictualling\nvictuals\nvicugna\nvicugnas\nvicuna\nvicunas\nvide\nvideo\nvideocassette\nvideocassettes\nvideodisc\nvideodiscs\nvideodisk\nvideodisks\nvideos\nvideotape\nvideotaped\nvideotapes\nvideotaping\nvideotext\nvidette\nvidettes\nvidicon\nvidicons\nviduities\nviduity\nvie\nvied\nvier\nviers\nvies\nview\nviewable\nviewed\nviewer\nviewers\nviewier\nviewiest\nviewing\nviewings\nviewless\nviewlessly\nviewpoint\nviewpoints\nviews\nviewy\nvig\nviga\nvigas\nvigil\nvigilance\nvigilant\nvigilante\nvigilantes\nvigilantism\nvigilantly\nvigils\nvignette\nvignetted\nvignettes\nvignetting\nvignettist\nvignettists\nvigor\nvigorish\nvigorishes\nvigoroso\nvigorous\nvigorously\nvigorousness\nvigors\nvigour\nvigours\nvigs\nviking\nvikings\nvilayet\nvilayets\nvile\nvilely\nvileness\nvilenesses\nviler\nvilest\nvilification\nvilifications\nvilified\nvilifier\nvilifiers\nvilifies\nvilify\nvilifying\nvilipend\nvilipended\nvilipending\nvilipends\nvill\nvilla\nvilladom\nvilladoms\nvillae\nvillage\nvillager\nvillagers\nvillages\nvillain\nvillainess\nvillainesses\nvillainies\nvillainous\nvillainously\nvillainousness\nvillains\nvillainy\nvillas\nvillatic\nvillein\nvilleins\nvilli\nvillose\nvillous\nvills\nvillus\nvim\nvimen\nvimina\nviminal\nvims\nvin\nvina\nvinal\nvinals\nvinas\nvinasse\nvinasses\nvinca\nvincas\nvincible\nvincula\nvinculum\nvinculums\nvindicate\nvindicated\nvindicates\nvindicating\nvindication\nvindications\nvindicative\nvindicator\nvindicators\nvindicatory\nvindictive\nvindictively\nvindictiveness\nvine\nvineal\nvined\nvinegar\nvinegars\nvinegary\nvineries\nvinery\nvines\nvineyard\nvineyards\nvinic\nviniculture\nvinier\nviniest\nvinifera\nviniferas\nvining\nvino\nvinos\nvinosities\nvinosity\nvinous\nvinously\nvins\nvintage\nvintager\nvintagers\nvintages\nvintner\nvintners\nviny\nvinyl\nvinylic\nvinyls\nviol\nviola\nviolabilities\nviolability\nviolable\nviolably\nviolas\nviolate\nviolated\nviolater\nviolaters\nviolates\nviolating\nviolation\nviolations\nviolative\nviolator\nviolators\nviolence\nviolences\nviolent\nviolently\nviolet\nviolets\nviolin\nviolinist\nviolinists\nviolins\nviolist\nviolists\nvioloncellist\nvioloncellists\nvioloncello\nvioloncellos\nviolone\nviolones\nviols\nviomycin\nviomycins\nviper\nviperine\nviperish\nviperous\nviperously\nvipers\nvirago\nviragoes\nviragos\nviral\nvirally\nvirelai\nvirelais\nvirelay\nvirelays\nviremia\nviremias\nviremic\nvireo\nvireos\nvires\nvirga\nvirgas\nvirgate\nvirgates\nvirgin\nvirginal\nvirginalist\nvirginalists\nvirginally\nvirginals\nvirginities\nvirginity\nvirgins\nvirgule\nvirgules\nviricide\nviricides\nvirid\nviridian\nviridians\nviridities\nviridity\nvirile\nvirilism\nvirilisms\nvirilities\nvirility\nvirion\nvirions\nvirl\nvirls\nvirological\nvirologies\nvirologist\nvirologists\nvirology\nviroses\nvirosis\nvirtu\nvirtual\nvirtualities\nvirtuality\nvirtually\nvirtue\nvirtueless\nvirtues\nvirtuosa\nvirtuosas\nvirtuose\nvirtuosi\nvirtuosities\nvirtuosity\nvirtuoso\nvirtuosos\nvirtuous\nvirtuously\nvirtus\nvirucide\nvirucides\nvirulence\nvirulency\nvirulent\nvirulently\nvirus\nviruses\nvis\nvisa\nvisaed\nvisage\nvisaged\nvisages\nvisaing\nvisard\nvisards\nvisas\nviscacha\nviscachas\nviscera\nvisceral\nviscerally\nviscid\nviscidities\nviscidity\nviscidly\nviscoid\nviscose\nviscoses\nviscosities\nviscosity\nviscount\nviscountess\nviscountesses\nviscounts\nviscous\nviscously\nviscus\nvise\nvised\nviseed\nviseing\nviselike\nvises\nvisibilities\nvisibility\nvisible\nvisibly\nvising\nvision\nvisional\nvisionally\nvisionaries\nvisionary\nvisioned\nvisioning\nvisionless\nvisions\nvisit\nvisitable\nvisitant\nvisitants\nvisitation\nvisitational\nvisitations\nvisited\nvisiter\nvisiters\nvisiting\nvisitor\nvisitors\nvisits\nvisive\nvisor\nvisored\nvisoring\nvisors\nvista\nvistaed\nvistas\nvisual\nvisualization\nvisualizations\nvisualize\nvisualized\nvisualizer\nvisualizers\nvisualizes\nvisualizing\nvisually\nvita\nvitae\nvital\nvitalise\nvitalised\nvitalises\nvitalising\nvitalism\nvitalisms\nvitalist\nvitalistic\nvitalists\nvitalities\nvitality\nvitalization\nvitalizations\nvitalize\nvitalized\nvitalizes\nvitalizing\nvitally\nvitals\nvitamer\nvitamers\nvitamin\nvitamine\nvitamines\nvitamins\nvitellin\nvitellins\nvitellus\nvitelluses\nvitesse\nvitesses\nvitiable\nvitiate\nvitiated\nvitiates\nvitiating\nvitiation\nvitiations\nvitiator\nvitiators\nvitiligo\nvitiligos\nvitreous\nvitric\nvitrification\nvitrifications\nvitrified\nvitrifies\nvitrify\nvitrifying\nvitrine\nvitrines\nvitriol\nvitrioled\nvitriolic\nvitrioling\nvitriolled\nvitriolling\nvitriols\nvitta\nvittae\nvittate\nvittle\nvittled\nvittles\nvittling\nvituline\nvituperate\nvituperated\nvituperates\nvituperating\nvituperation\nvituperations\nvituperative\nvituperatively\nvituperator\nvituperators\nviva\nvivace\nvivacious\nvivaciously\nvivaciousness\nvivacities\nvivacity\nvivaria\nvivaries\nvivarium\nvivariums\nvivary\nvivas\nvive\nviverrid\nviverrids\nvivers\nvivid\nvivider\nvividest\nvividly\nvividness\nvivific\nvivification\nvivifications\nvivified\nvivifier\nvivifiers\nvivifies\nvivify\nvivifying\nvivipara\nviviparities\nviviparity\nviviparous\nviviparously\nvivisect\nvivisected\nvivisecting\nvivisection\nvivisectional\nvivisectionist\nvivisectionists\nvivisections\nvivisector\nvivisectors\nvivisects\nvixen\nvixenish\nvixenly\nvixens\nvizard\nvizarded\nvizards\nvizcacha\nvizcachas\nvizier\nviziers\nvizir\nvizirate\nvizirates\nvizirial\nvizirs\nvizor\nvizored\nvizoring\nvizors\nvizsla\nvizslas\nvocable\nvocables\nvocably\nvocabularies\nvocabulary\nvocal\nvocalic\nvocalics\nvocalise\nvocalised\nvocalises\nvocalising\nvocalism\nvocalisms\nvocalist\nvocalists\nvocalities\nvocality\nvocalization\nvocalizations\nvocalize\nvocalized\nvocalizer\nvocalizers\nvocalizes\nvocalizing\nvocally\nvocals\nvocation\nvocational\nvocationally\nvocations\nvocative\nvocatively\nvocatives\nvoces\nvociferant\nvociferate\nvociferated\nvociferates\nvociferating\nvociferation\nvociferations\nvociferous\nvociferously\nvociferousness\nvocoder\nvocoders\nvodka\nvodkas\nvodun\nvoduns\nvoe\nvoes\nvogie\nvogue\nvogues\nvoguish\nvoice\nvoiced\nvoiceful\nvoiceless\nvoicelessly\nvoicelessness\nvoiceprint\nvoiceprints\nvoicer\nvoicers\nvoices\nvoicing\nvoid\nvoidable\nvoidance\nvoidances\nvoided\nvoider\nvoiders\nvoiding\nvoidness\nvoidnesses\nvoids\nvoila\nvoile\nvoiles\nvolant\nvolante\nvolar\nvolatile\nvolatiles\nvolatilities\nvolatility\nvolatilization\nvolatilizations\nvolatilize\nvolatilized\nvolatilizes\nvolatilizing\nvolcanic\nvolcanically\nvolcanicities\nvolcanicity\nvolcanics\nvolcano\nvolcanoes\nvolcanological\nvolcanologies\nvolcanologist\nvolcanologists\nvolcanology\nvolcanos\nvole\nvoled\nvoleries\nvolery\nvoles\nvoling\nvolitant\nvolition\nvolitional\nvolitions\nvolitive\nvolley\nvolleyball\nvolleyballs\nvolleyed\nvolleyer\nvolleyers\nvolleying\nvolleys\nvolost\nvolosts\nvolplane\nvolplaned\nvolplanes\nvolplaning\nvolt\nvolta\nvoltage\nvoltages\nvoltaic\nvoltaism\nvoltaisms\nvoltameter\nvoltameters\nvolte\nvoltes\nvolti\nvoltmeter\nvoltmeters\nvolts\nvolubilities\nvolubility\nvoluble\nvolubly\nvolume\nvolumed\nvolumes\nvoluming\nvoluminous\nvoluminously\nvoluntaries\nvoluntarily\nvoluntarist\nvoluntaristic\nvoluntarists\nvoluntary\nvoluntaryism\nvoluntaryist\nvoluntaryists\nvolunteer\nvolunteered\nvolunteering\nvolunteers\nvoluptuaries\nvoluptuary\nvoluptuous\nvoluptuously\nvoluptuousness\nvolute\nvoluted\nvolutes\nvolutin\nvolutins\nvolution\nvolutions\nvolva\nvolvas\nvolvate\nvolvox\nvolvoxes\nvolvuli\nvolvulus\nvolvuluses\nvomer\nvomerine\nvomers\nvomica\nvomicae\nvomit\nvomited\nvomiter\nvomiters\nvomiting\nvomitive\nvomitives\nvomito\nvomitories\nvomitory\nvomitos\nvomitous\nvomits\nvomitus\nvomituses\nvon\nvoodoo\nvoodooed\nvoodooing\nvoodooism\nvoodooist\nvoodooistic\nvoodooists\nvoodoos\nvoracious\nvoraciously\nvoraciousness\nvoracities\nvoracity\nvorlage\nvorlages\nvortex\nvortexes\nvortical\nvortices\nvotable\nvotaress\nvotaresses\nvotaries\nvotarist\nvotarists\nvotary\nvote\nvoteable\nvoted\nvoteless\nvoter\nvoters\nvotes\nvoting\nvotive\nvotively\nvotress\nvotresses\nvouch\nvouched\nvouchee\nvouchees\nvoucher\nvouchered\nvouchering\nvouchers\nvouches\nvouching\nvouchsafe\nvouchsafed\nvouchsafes\nvouchsafing\nvoussoir\nvoussoirs\nvow\nvowed\nvowel\nvowelize\nvowelized\nvowelizes\nvowelizing\nvowels\nvower\nvowers\nvowing\nvowless\nvows\nvox\nvoyage\nvoyaged\nvoyager\nvoyagers\nvoyages\nvoyageur\nvoyageurs\nvoyaging\nvoyeur\nvoyeurism\nvoyeurs\nvroom\nvroomed\nvrooming\nvrooms\nvrouw\nvrouws\nvrow\nvrows\nvug\nvugg\nvuggs\nvuggy\nvugh\nvughs\nvugs\nvulcanic\nvulcanization\nvulcanizations\nvulcanize\nvulcanized\nvulcanizer\nvulcanizers\nvulcanizes\nvulcanizing\nvulgar\nvulgarer\nvulgarest\nvulgarian\nvulgarians\nvulgarism\nvulgarities\nvulgarity\nvulgarization\nvulgarizations\nvulgarize\nvulgarized\nvulgarizes\nvulgarizing\nvulgarly\nvulgars\nvulgate\nvulgates\nvulgo\nvulgus\nvulguses\nvulnerabilities\nvulnerability\nvulnerable\nvulnerableness\nvulnerably\nvulpine\nvulture\nvultures\nvulva\nvulvae\nvulval\nvulvar\nvulvas\nvulvate\nvulvitis\nvulvitises\nvying\nvyingly\nwab\nwabble\nwabbled\nwabbler\nwabblers\nwabbles\nwabblier\nwabbliest\nwabbling\nwabbly\nwabs\nwack\nwacke\nwackes\nwackier\nwackiest\nwackily\nwacko\nwacks\nwacky\nwad\nwadable\nwadded\nwadder\nwadders\nwaddie\nwaddied\nwaddies\nwadding\nwaddings\nwaddle\nwaddled\nwaddler\nwaddlers\nwaddles\nwaddling\nwaddly\nwaddy\nwaddying\nwade\nwadeable\nwaded\nwader\nwaders\nwades\nwadi\nwadies\nwading\nwadis\nwadmaal\nwadmaals\nwadmal\nwadmals\nwadmel\nwadmels\nwadmol\nwadmoll\nwadmolls\nwadmols\nwads\nwadset\nwadsets\nwadsetted\nwadsetting\nwady\nwae\nwaeful\nwaeness\nwaenesses\nwaes\nwaesuck\nwaesucks\nwafer\nwafered\nwafering\nwafers\nwafery\nwaff\nwaffed\nwaffie\nwaffies\nwaffing\nwaffle\nwaffled\nwaffles\nwaffling\nwaffs\nwaft\nwaftage\nwaftages\nwafted\nwafter\nwafters\nwafting\nwafts\nwafture\nwaftures\nwag\nwage\nwaged\nwageless\nwager\nwagered\nwagerer\nwagerers\nwagering\nwagers\nwages\nwagged\nwagger\nwaggeries\nwaggers\nwaggery\nwagging\nwaggish\nwaggishly\nwaggishness\nwaggle\nwaggled\nwaggles\nwaggling\nwaggly\nwaggon\nwaggoned\nwaggoner\nwaggoners\nwaggoning\nwaggons\nwaging\nwagon\nwagonage\nwagonages\nwagoned\nwagoner\nwagoners\nwagonette\nwagonettes\nwagoning\nwagons\nwags\nwagsome\nwagtail\nwagtails\nwahconda\nwahcondas\nwahine\nwahines\nwahoo\nwahoos\nwaif\nwaifed\nwaifing\nwaifs\nwail\nwailed\nwailer\nwailers\nwailful\nwailfully\nwailing\nwails\nwailsome\nwain\nwains\nwainscot\nwainscoted\nwainscoting\nwainscotings\nwainscots\nwainscotted\nwainscotting\nwainscottings\nwainwright\nwainwrights\nwair\nwaired\nwairing\nwairs\nwaist\nwaistband\nwaistbands\nwaistcoat\nwaistcoated\nwaistcoats\nwaisted\nwaister\nwaisters\nwaisting\nwaistings\nwaistline\nwaistlines\nwaists\nwait\nwaited\nwaiter\nwaiters\nwaiting\nwaitings\nwaitress\nwaitresses\nwaits\nwaive\nwaived\nwaiver\nwaivers\nwaives\nwaiving\nwakanda\nwakandas\nwake\nwaked\nwakeful\nwakefully\nwakefulness\nwakeless\nwaken\nwakened\nwakener\nwakeners\nwakening\nwakenings\nwakens\nwaker\nwakerife\nwakers\nwakes\nwakiki\nwakikis\nwaking\nwale\nwaled\nwaler\nwalers\nwales\nwalies\nwaling\nwalk\nwalkable\nwalkaway\nwalkaways\nwalked\nwalker\nwalkers\nwalking\nwalkings\nwalkout\nwalkouts\nwalkover\nwalkovers\nwalks\nwalkup\nwalkups\nwalkway\nwalkways\nwalkyrie\nwalkyries\nwall\nwalla\nwallabies\nwallaby\nwallah\nwallahs\nwallaroo\nwallaroos\nwallas\nwallboard\nwallboards\nwalled\nwallet\nwallets\nwalleye\nwalleyed\nwalleyes\nwallflower\nwallflowers\nwallie\nwallies\nwalling\nwallop\nwalloped\nwalloper\nwallopers\nwalloping\nwallops\nwallow\nwallowed\nwallower\nwallowers\nwallowing\nwallows\nwallpaper\nwallpapered\nwallpapering\nwallpapers\nwalls\nwally\nwalnut\nwalnuts\nwalrus\nwalruses\nwaltz\nwaltzed\nwaltzer\nwaltzers\nwaltzes\nwaltzing\nwaly\nwamble\nwambled\nwambles\nwamblier\nwambliest\nwambling\nwambly\nwame\nwamefou\nwamefous\nwameful\nwamefuls\nwames\nwammus\nwammuses\nwampish\nwampished\nwampishes\nwampishing\nwampum\nwampums\nwampus\nwampuses\nwamus\nwamuses\nwan\nwand\nwander\nwandered\nwanderer\nwanderers\nwandering\nwanderings\nwanderlust\nwanderoo\nwanderoos\nwanders\nwandle\nwands\nwane\nwaned\nwanes\nwaney\nwangan\nwangans\nwangle\nwangled\nwangler\nwanglers\nwangles\nwangling\nwangun\nwanguns\nwanier\nwaniest\nwanigan\nwanigans\nwaning\nwanion\nwanions\nwanly\nwanned\nwanner\nwanness\nwannesses\nwannest\nwannigan\nwannigans\nwanning\nwans\nwant\nwantage\nwantages\nwanted\nwanter\nwanters\nwanting\nwanton\nwantoned\nwantoner\nwantoners\nwantoning\nwantonly\nwantonness\nwantons\nwants\nwany\nwap\nwapiti\nwapitis\nwapped\nwapping\nwaps\nwar\nwarble\nwarbled\nwarbler\nwarblers\nwarbles\nwarbling\nwarcraft\nwarcrafts\nward\nwarded\nwarden\nwardenries\nwardenry\nwardens\nwarder\nwarders\nwarding\nwardress\nwardresses\nwardrobe\nwardrobes\nwardroom\nwardrooms\nwards\nwardship\nwardships\nware\nwared\nwarehouse\nwarehoused\nwarehouseman\nwarehousemen\nwarehouses\nwarehousing\nwareroom\nwarerooms\nwares\nwarfare\nwarfares\nwarfarin\nwarfarins\nwarhead\nwarheads\nwarier\nwariest\nwarily\nwariness\nwarinesses\nwaring\nwarison\nwarisons\nwark\nwarked\nwarking\nwarks\nwarless\nwarlike\nwarlock\nwarlocks\nwarlord\nwarlords\nwarm\nwarmaker\nwarmakers\nwarmblooded\nwarmed\nwarmer\nwarmers\nwarmest\nwarmhearted\nwarmheartedly\nwarmheartedness\nwarming\nwarmish\nwarmly\nwarmness\nwarmnesses\nwarmonger\nwarmongering\nwarmongers\nwarmouth\nwarmouths\nwarms\nwarmth\nwarmths\nwarmup\nwarmups\nwarn\nwarned\nwarner\nwarners\nwarning\nwarningly\nwarnings\nwarns\nwarp\nwarpage\nwarpages\nwarpath\nwarpaths\nwarped\nwarper\nwarpers\nwarping\nwarplane\nwarplanes\nwarpower\nwarpowers\nwarps\nwarpwise\nwarragal\nwarragals\nwarrant\nwarrantable\nwarranted\nwarranties\nwarranting\nwarrantless\nwarrantor\nwarrantors\nwarrants\nwarranty\nwarred\nwarren\nwarrener\nwarreners\nwarrens\nwarrigal\nwarrigals\nwarring\nwarrior\nwarriors\nwars\nwarsaw\nwarsaws\nwarship\nwarships\nwarsle\nwarsled\nwarsler\nwarslers\nwarsles\nwarsling\nwarstle\nwarstled\nwarstler\nwarstlers\nwarstles\nwarstling\nwart\nwarted\nwarthog\nwarthogs\nwartier\nwartiest\nwartime\nwartimes\nwartlike\nwarts\nwarty\nwarwork\nwarworks\nwarworn\nwary\nwas\nwash\nwashabilities\nwashability\nwashable\nwashboard\nwashboards\nwashbowl\nwashbowls\nwashcloth\nwashcloths\nwashday\nwashdays\nwashed\nwasher\nwashers\nwashes\nwashier\nwashiest\nwashing\nwashings\nwashout\nwashouts\nwashrag\nwashrags\nwashroom\nwashrooms\nwashstand\nwashstands\nwashtub\nwashtubs\nwashy\nwasp\nwaspier\nwaspiest\nwaspily\nwaspiness\nwaspish\nwaspishly\nwaspishness\nwasplike\nwasps\nwaspy\nwassail\nwassailed\nwassailer\nwassailers\nwassailing\nwassails\nwast\nwastable\nwastage\nwastages\nwaste\nwastebasket\nwastebaskets\nwasted\nwasteful\nwastefully\nwastefulness\nwasteland\nwastelands\nwastelot\nwastelots\nwastepaper\nwaster\nwasterie\nwasteries\nwasters\nwastery\nwastes\nwastewater\nwastewaters\nwasteway\nwasteways\nwasting\nwastrel\nwastrels\nwastrie\nwastries\nwastry\nwasts\nwat\nwatap\nwatape\nwatapes\nwataps\nwatch\nwatchband\nwatchbands\nwatchcase\nwatchcases\nwatchcries\nwatchcry\nwatchdog\nwatchdogged\nwatchdogging\nwatchdogs\nwatched\nwatcher\nwatchers\nwatches\nwatcheye\nwatcheyes\nwatchful\nwatchfully\nwatchfulness\nwatching\nwatchmaker\nwatchmakers\nwatchmaking\nwatchman\nwatchmen\nwatchout\nwatchouts\nwatchtower\nwatchtowers\nwatchword\nwatchwords\nwater\nwaterage\nwaterages\nwaterbed\nwaterbeds\nwatercolor\nwatercolorist\nwatercolorists\nwatercolors\nwatercooler\nwatercoolers\nwatercourse\nwatercourses\nwatercraft\nwatercrafts\nwaterdog\nwaterdogs\nwatered\nwaterer\nwaterers\nwaterfall\nwaterfalls\nwaterfront\nwaterfronts\nwaterier\nwateriest\nwaterily\nwateriness\nwatering\nwaterings\nwaterish\nwaterless\nwaterline\nwaterlines\nwaterlog\nwaterlogged\nwaterlogging\nwaterlogs\nwaterloo\nwaterloos\nwaterman\nwatermark\nwatermarks\nwatermen\nwaterpower\nwaterproof\nwaterproofed\nwaterproofing\nwaterproofness\nwaterproofs\nwaters\nwaterscape\nwaterscapes\nwatershed\nwatersheds\nwaterside\nwatersides\nwaterspout\nwaterspouts\nwatertight\nwatertightness\nwaterway\nwaterways\nwaterworks\nwatery\nwats\nwatt\nwattage\nwattages\nwattape\nwattapes\nwatter\nwattest\nwatthour\nwatthours\nwattle\nwattled\nwattles\nwattless\nwattling\nwattmeter\nwattmeters\nwatts\nwaucht\nwauchted\nwauchting\nwauchts\nwaugh\nwaught\nwaughted\nwaughting\nwaughts\nwauk\nwauked\nwauking\nwauks\nwaul\nwauled\nwauling\nwauls\nwaur\nwave\nwaveband\nwavebands\nwaved\nwaveform\nwaveforms\nwavelength\nwavelengths\nwaveless\nwavelet\nwavelets\nwavelike\nwaveoff\nwaveoffs\nwaver\nwavered\nwaverer\nwaverers\nwavering\nwaveringly\nwavers\nwavery\nwaves\nwavey\nwaveys\nwavier\nwavies\nwaviest\nwavily\nwaviness\nwavinesses\nwaving\nwavy\nwaw\nwawl\nwawled\nwawling\nwawls\nwaws\nwax\nwaxberries\nwaxberry\nwaxbill\nwaxbills\nwaxed\nwaxen\nwaxer\nwaxers\nwaxes\nwaxier\nwaxiest\nwaxily\nwaxiness\nwaxinesses\nwaxing\nwaxings\nwaxlike\nwaxplant\nwaxplants\nwaxweed\nwaxweeds\nwaxwing\nwaxwings\nwaxwork\nwaxworks\nwaxworm\nwaxworms\nwaxy\nway\nwaybill\nwaybills\nwayfarer\nwayfarers\nwayfaring\nwayfarings\nwaygoing\nwaygoings\nwaylaid\nwaylay\nwaylayer\nwaylayers\nwaylaying\nwaylays\nwayless\nways\nwayside\nwaysides\nwayward\nwaywardly\nwaywardness\nwayworn\nwe\nweak\nweaken\nweakened\nweakener\nweakeners\nweakening\nweakens\nweaker\nweakest\nweakfish\nweakfishes\nweakish\nweaklier\nweakliest\nweakliness\nweakling\nweaklings\nweakly\nweakness\nweaknesses\nweal\nweald\nwealds\nweals\nwealth\nwealthier\nwealthiest\nwealthily\nwealthiness\nwealths\nwealthy\nwean\nweaned\nweaner\nweaners\nweaning\nweanling\nweanlings\nweans\nweapon\nweaponed\nweaponing\nweaponless\nweaponries\nweaponry\nweapons\nwear\nwearable\nwearables\nwearer\nwearers\nwearied\nwearier\nwearies\nweariest\nweariful\nwearifully\nweariless\nwearilessly\nwearily\nweariness\nwearing\nwearingly\nwearish\nwearisome\nwearisomely\nwearisomeness\nwears\nweary\nwearying\nweasand\nweasands\nweasel\nweaseled\nweaseling\nweasels\nweason\nweasons\nweather\nweatherabilities\nweatherability\nweatherboard\nweatherboarding\nweatherboards\nweathercock\nweathercocks\nweathered\nweathering\nweatherman\nweathermen\nweatherproof\nweatherproofed\nweatherproofing\nweatherproofs\nweathers\nweave\nweaved\nweaver\nweavers\nweaves\nweaving\nweazand\nweazands\nweb\nwebbed\nwebbier\nwebbiest\nwebbing\nwebbings\nwebby\nweber\nwebers\nwebfed\nwebfeet\nwebfoot\nwebless\nweblike\nwebs\nwebster\nwebsters\nwebworm\nwebworms\nwecht\nwechts\nwed\nwedded\nwedder\nwedders\nwedding\nweddings\nwedel\nwedeled\nwedeling\nwedeln\nwedelns\nwedels\nwedge\nwedged\nwedges\nwedgie\nwedgier\nwedgies\nwedgiest\nwedging\nwedgy\nwedlock\nwedlocks\nweds\nwee\nweed\nweeded\nweeder\nweeders\nweedier\nweediest\nweedily\nweediness\nweeding\nweedless\nweedlike\nweeds\nweedy\nweek\nweekday\nweekdays\nweekend\nweekended\nweekender\nweekenders\nweekending\nweekends\nweeklies\nweeklong\nweekly\nweeknight\nweeknights\nweeks\nweel\nween\nweened\nweenie\nweenier\nweenies\nweeniest\nweening\nweens\nweensier\nweensiest\nweensy\nweeny\nweep\nweeper\nweepers\nweepier\nweepiest\nweeping\nweeps\nweepy\nweer\nwees\nweest\nweet\nweeted\nweeting\nweets\nweever\nweevers\nweevil\nweeviled\nweevilly\nweevils\nweevily\nweewee\nweeweed\nweeweeing\nweewees\nweft\nwefts\nweftwise\nweigela\nweigelas\nweigelia\nweigelias\nweigh\nweighable\nweighed\nweigher\nweighers\nweighing\nweighman\nweighmen\nweighs\nweight\nweighted\nweighter\nweighters\nweightier\nweightiest\nweightily\nweightiness\nweighting\nweightless\nweightlessly\nweightlessness\nweights\nweighty\nweiner\nweiners\nweir\nweird\nweirder\nweirdest\nweirdie\nweirdies\nweirdly\nweirdness\nweirdo\nweirdoes\nweirdos\nweirds\nweirdy\nweirs\nweka\nwekas\nwelch\nwelched\nwelcher\nwelchers\nwelches\nwelching\nwelcome\nwelcomed\nwelcomely\nwelcomeness\nwelcomer\nwelcomers\nwelcomes\nwelcoming\nweld\nweldable\nwelded\nwelder\nwelders\nwelding\nweldless\nweldment\nweldments\nweldor\nweldors\nwelds\nwelfare\nwelfares\nwelkin\nwelkins\nwell\nwelladay\nwelladays\nwellaway\nwellaways\nwellborn\nwellcurb\nwellcurbs\nwelldoer\nwelldoers\nwelled\nwellhead\nwellheads\nwellhole\nwellholes\nwelling\nwellness\nwellnesses\nwells\nwellsite\nwellsites\nwellspring\nwellsprings\nwelly\nwelsh\nwelshed\nwelsher\nwelshers\nwelshes\nwelshing\nwelt\nwelted\nwelter\nweltered\nweltering\nwelters\nwelterweight\nwelterweights\nwelting\nweltings\nwelts\nwen\nwench\nwenched\nwencher\nwenchers\nwenches\nwenching\nwend\nwended\nwendigo\nwendigos\nwending\nwends\nwennier\nwenniest\nwennish\nwenny\nwens\nwent\nwept\nwere\nweregild\nweregilds\nwerewolf\nwerewolves\nwergeld\nwergelds\nwergelt\nwergelts\nwergild\nwergilds\nwert\nwerwolf\nwerwolves\nweskit\nweskits\nwessand\nwessands\nwest\nwester\nwestered\nwestering\nwesterlies\nwesterly\nwestern\nwesternization\nwesternize\nwesternized\nwesternizes\nwesternizing\nwesterns\nwesters\nwesting\nwestings\nwestmost\nwests\nwestward\nwestwards\nwet\nwetback\nwetbacks\nwether\nwethers\nwetland\nwetlands\nwetly\nwetness\nwetnesses\nwetproof\nwets\nwettable\nwetted\nwetter\nwetters\nwettest\nwetting\nwettings\nwettish\nwha\nwhack\nwhacked\nwhacker\nwhackers\nwhackier\nwhackiest\nwhacking\nwhacks\nwhacky\nwhale\nwhalebone\nwhalebones\nwhaled\nwhaleman\nwhalemen\nwhaler\nwhalers\nwhales\nwhaling\nwhalings\nwham\nwhammed\nwhammies\nwhamming\nwhammy\nwhamo\nwhams\nwhang\nwhanged\nwhangee\nwhangees\nwhanging\nwhangs\nwhap\nwhapped\nwhapper\nwhappers\nwhapping\nwhaps\nwharf\nwharfage\nwharfages\nwharfed\nwharfing\nwharfs\nwharve\nwharves\nwhat\nwhatever\nwhatnot\nwhatnots\nwhats\nwhatsoever\nwhaup\nwhaups\nwheal\nwheals\nwheat\nwheatear\nwheatears\nwheaten\nwheats\nwhee\nwheedle\nwheedled\nwheedler\nwheedlers\nwheedles\nwheedling\nwheel\nwheelbarrow\nwheelbarrows\nwheelbase\nwheelchair\nwheelchairs\nwheeled\nwheeler\nwheelers\nwheelhouse\nwheelhouses\nwheelie\nwheelies\nwheeling\nwheelings\nwheelless\nwheelman\nwheelmen\nwheels\nwheelwright\nwheelwrights\nwheen\nwheens\nwheep\nwheeped\nwheeping\nwheeple\nwheepled\nwheeples\nwheepling\nwheeps\nwheeze\nwheezed\nwheezer\nwheezers\nwheezes\nwheezier\nwheeziest\nwheezily\nwheezing\nwheezy\nwhelk\nwhelkier\nwhelkiest\nwhelks\nwhelky\nwhelm\nwhelmed\nwhelming\nwhelms\nwhelp\nwhelped\nwhelping\nwhelps\nwhen\nwhenas\nwhence\nwhencesoever\nwhenever\nwhens\nwhensoever\nwhere\nwhereabouts\nwhereas\nwhereases\nwhereat\nwhereby\nwherefore\nwherein\nwhereof\nwhereon\nwheres\nwhereto\nwhereupon\nwherever\nwherewith\nwherewithal\nwherried\nwherries\nwherry\nwherrying\nwherve\nwherves\nwhet\nwhether\nwhets\nwhetstone\nwhetstones\nwhetted\nwhetter\nwhetters\nwhetting\nwhew\nwhews\nwhey\nwheyey\nwheyface\nwheyfaced\nwheyfaces\nwheyish\nwheys\nwhich\nwhichever\nwhichsoever\nwhicker\nwhickered\nwhickering\nwhickers\nwhid\nwhidah\nwhidahs\nwhidded\nwhidding\nwhids\nwhiff\nwhiffed\nwhiffer\nwhiffers\nwhiffet\nwhiffets\nwhiffing\nwhiffle\nwhiffled\nwhiffler\nwhifflers\nwhiffles\nwhiffling\nwhiffs\nwhig\nwhigs\nwhile\nwhiled\nwhiles\nwhiling\nwhilom\nwhilst\nwhim\nwhimbrel\nwhimbrels\nwhimper\nwhimpered\nwhimpering\nwhimpers\nwhims\nwhimsey\nwhimseys\nwhimsical\nwhimsicalities\nwhimsicality\nwhimsically\nwhimsicalness\nwhimsied\nwhimsies\nwhimsy\nwhin\nwhinchat\nwhinchats\nwhine\nwhined\nwhiner\nwhiners\nwhines\nwhiney\nwhinier\nwhiniest\nwhining\nwhiningly\nwhinnied\nwhinnier\nwhinnies\nwhinniest\nwhinny\nwhinnying\nwhins\nwhiny\nwhip\nwhipcord\nwhipcords\nwhiplash\nwhiplashes\nwhiplike\nwhipped\nwhipper\nwhippers\nwhippersnapper\nwhippersnappers\nwhippet\nwhippets\nwhippier\nwhippiest\nwhipping\nwhippings\nwhippy\nwhipray\nwhiprays\nwhips\nwhipsaw\nwhipsawed\nwhipsawing\nwhipsawn\nwhipsaws\nwhipstock\nwhipstocks\nwhipt\nwhiptail\nwhiptails\nwhipworm\nwhipworms\nwhir\nwhirl\nwhirled\nwhirler\nwhirlers\nwhirlier\nwhirlies\nwhirliest\nwhirligig\nwhirligigs\nwhirling\nwhirlpool\nwhirlpools\nwhirls\nwhirlwind\nwhirlwinds\nwhirly\nwhirr\nwhirred\nwhirried\nwhirries\nwhirring\nwhirrs\nwhirry\nwhirrying\nwhirs\nwhish\nwhished\nwhishes\nwhishing\nwhisht\nwhishted\nwhishting\nwhishts\nwhisk\nwhiskbroom\nwhiskbrooms\nwhisked\nwhisker\nwhiskered\nwhiskers\nwhiskery\nwhiskey\nwhiskeys\nwhiskies\nwhisking\nwhisks\nwhisky\nwhisper\nwhispered\nwhispering\nwhisperingly\nwhisperings\nwhispers\nwhispery\nwhist\nwhisted\nwhisting\nwhistle\nwhistled\nwhistler\nwhistlers\nwhistles\nwhistling\nwhistlings\nwhists\nwhit\nwhite\nwhitecap\nwhitecaps\nwhited\nwhitefish\nwhiteflies\nwhitefly\nwhitely\nwhiten\nwhitened\nwhitener\nwhiteners\nwhiteness\nwhitening\nwhitenings\nwhitens\nwhiteout\nwhiteouts\nwhiter\nwhites\nwhitest\nwhitewall\nwhitewalls\nwhitewash\nwhitewashed\nwhitewashes\nwhitewashing\nwhitey\nwhiteys\nwhither\nwhities\nwhiting\nwhitings\nwhitish\nwhitlow\nwhitlows\nwhitrack\nwhitracks\nwhits\nwhitter\nwhitters\nwhittle\nwhittled\nwhittler\nwhittlers\nwhittles\nwhittling\nwhittlings\nwhittret\nwhittrets\nwhity\nwhiz\nwhizbang\nwhizbangs\nwhizz\nwhizzed\nwhizzer\nwhizzers\nwhizzes\nwhizzing\nwho\nwhoa\nwhodunit\nwhodunits\nwhoever\nwhole\nwholehearted\nwholeheartedly\nwholeness\nwholes\nwholesale\nwholesaled\nwholesaler\nwholesalers\nwholesales\nwholesaling\nwholesome\nwholesomely\nwholesomeness\nwholism\nwholisms\nwholly\nwhom\nwhomever\nwhomp\nwhomped\nwhomping\nwhomps\nwhomso\nwhomsoever\nwhoof\nwhoop\nwhooped\nwhoopee\nwhoopees\nwhooper\nwhoopers\nwhooping\nwhoopla\nwhooplas\nwhoops\nwhoosh\nwhooshed\nwhooshes\nwhooshing\nwhoosis\nwhoosises\nwhop\nwhopped\nwhopper\nwhoppers\nwhopping\nwhops\nwhore\nwhored\nwhoredom\nwhoredoms\nwhores\nwhoreson\nwhoresons\nwhoring\nwhorish\nwhorl\nwhorled\nwhorls\nwhort\nwhortle\nwhortles\nwhorts\nwhose\nwhosever\nwhosis\nwhosises\nwhoso\nwhosoever\nwhump\nwhumped\nwhumping\nwhumps\nwhy\nwhydah\nwhydahs\nwhys\nwich\nwiches\nwick\nwickape\nwickapes\nwicked\nwickeder\nwickedest\nwickedly\nwickedness\nwicker\nwickers\nwickerwork\nwickerworks\nwicket\nwickets\nwicking\nwickings\nwickiup\nwickiups\nwicks\nwickyup\nwickyups\nwicopies\nwicopy\nwidder\nwidders\nwiddie\nwiddies\nwiddle\nwiddled\nwiddles\nwiddling\nwiddy\nwide\nwidely\nwiden\nwidened\nwidener\nwideners\nwideness\nwidenesses\nwidening\nwidens\nwider\nwides\nwidespread\nwidespreading\nwidest\nwidgeon\nwidgeons\nwidget\nwidgets\nwidish\nwidow\nwidowed\nwidower\nwidowerhood\nwidowers\nwidowhood\nwidowing\nwidows\nwidth\nwidths\nwidthway\nwield\nwielded\nwielder\nwielders\nwieldier\nwieldiest\nwielding\nwields\nwieldy\nwiener\nwieners\nwienie\nwienies\nwife\nwifed\nwifedom\nwifedoms\nwifehood\nwifehoods\nwifeless\nwifelier\nwifeliest\nwifelike\nwifeliness\nwifely\nwifes\nwifing\nwig\nwigan\nwigans\nwigeon\nwigeons\nwigged\nwiggeries\nwiggery\nwigging\nwiggings\nwiggle\nwiggled\nwiggler\nwigglers\nwiggles\nwigglier\nwiggliest\nwiggling\nwiggly\nwiggy\nwight\nwights\nwigless\nwiglet\nwiglets\nwiglike\nwigmaker\nwigmakers\nwigs\nwigwag\nwigwagged\nwigwagging\nwigwags\nwigwam\nwigwams\nwikiup\nwikiups\nwilco\nwild\nwildcat\nwildcats\nwildcatted\nwildcatter\nwildcatters\nwildcatting\nwilder\nwildered\nwildering\nwilderness\nwildernesses\nwilders\nwildest\nwildfire\nwildfires\nwildflower\nwildflowers\nwildfowl\nwildfowls\nwilding\nwildings\nwildish\nwildlife\nwildling\nwildlings\nwildly\nwildness\nwildnesses\nwilds\nwildwood\nwildwoods\nwile\nwiled\nwiles\nwilful\nwilfully\nwilfulness\nwilier\nwiliest\nwilily\nwiliness\nwilinesses\nwiling\nwill\nwillable\nwilled\nwiller\nwillers\nwillet\nwillets\nwillful\nwillfully\nwillfulness\nwillied\nwillies\nwilling\nwillinger\nwillingest\nwillingly\nwillingness\nwilliwau\nwilliwaus\nwilliwaw\nwilliwaws\nwillow\nwillowed\nwillower\nwillowers\nwillowier\nwillowiest\nwillowing\nwillowlike\nwillows\nwillowy\nwillpower\nwills\nwilly\nwillyard\nwillyart\nwillying\nwillywaw\nwillywaws\nwilt\nwilted\nwilting\nwilts\nwily\nwimble\nwimbled\nwimbles\nwimbling\nwimp\nwimple\nwimpled\nwimples\nwimpling\nwimps\nwimpy\nwin\nwince\nwinced\nwincer\nwincers\nwinces\nwincey\nwinceys\nwinch\nwinched\nwincher\nwinchers\nwinches\nwinching\nwincing\nwind\nwindable\nwindage\nwindages\nwindbag\nwindbags\nwindblown\nwindbreak\nwindbreaker\nwindbreakers\nwindbreaks\nwindburn\nwindburned\nwindburning\nwindburns\nwindburnt\nwindchill\nwinded\nwinder\nwinders\nwindfall\nwindfalls\nwindflaw\nwindflaws\nwindgall\nwindgalls\nwindier\nwindiest\nwindigo\nwindigos\nwindily\nwindiness\nwinding\nwindings\nwindjammer\nwindjammers\nwindlass\nwindlassed\nwindlasses\nwindlassing\nwindle\nwindled\nwindles\nwindless\nwindlessly\nwindling\nwindlings\nwindmill\nwindmilled\nwindmilling\nwindmills\nwindow\nwindowed\nwindowing\nwindowless\nwindowpane\nwindowpanes\nwindows\nwindowsill\nwindpipe\nwindpipes\nwindrow\nwindrowed\nwindrowing\nwindrows\nwinds\nwindshield\nwindshields\nwindsock\nwindsocks\nwindstorm\nwindstorms\nwindswept\nwindup\nwindups\nwindward\nwindwards\nwindway\nwindways\nwindy\nwine\nwined\nwineglass\nwineglasses\nwinegrower\nwinegrowers\nwineless\nwineries\nwinery\nwines\nwineshop\nwineshops\nwineskin\nwineskins\nwinesop\nwinesops\nwiney\nwing\nwingback\nwingbacks\nwingbow\nwingbows\nwingding\nwingdings\nwinged\nwingedly\nwinger\nwingers\nwingier\nwingiest\nwinging\nwingless\nwinglessness\nwinglet\nwinglets\nwinglike\nwingman\nwingmen\nwingover\nwingovers\nwings\nwingspan\nwingspans\nwingspread\nwingspreads\nwingy\nwinier\nwiniest\nwining\nwinish\nwink\nwinked\nwinker\nwinkers\nwinking\nwinkle\nwinkled\nwinkles\nwinkling\nwinks\nwinnable\nwinned\nwinner\nwinners\nwinning\nwinningly\nwinnings\nwinnock\nwinnocks\nwinnow\nwinnowed\nwinnower\nwinnowers\nwinnowing\nwinnows\nwino\nwinoes\nwinos\nwins\nwinsome\nwinsomely\nwinsomeness\nwinsomer\nwinsomest\nwinter\nwintered\nwinterer\nwinterers\nwintergreen\nwintergreens\nwinterier\nwinteriest\nwintering\nwinterization\nwinterizations\nwinterize\nwinterized\nwinterizes\nwinterizing\nwinterly\nwinters\nwintertime\nwintertimes\nwintery\nwintle\nwintled\nwintles\nwintling\nwintrier\nwintriest\nwintrily\nwintry\nwiny\nwinze\nwinzes\nwipe\nwiped\nwipeout\nwipeouts\nwiper\nwipers\nwipes\nwiping\nwirable\nwire\nwired\nwiredraw\nwiredrawer\nwiredrawers\nwiredrawing\nwiredrawn\nwiredraws\nwiredrew\nwirehair\nwirehaired\nwirehairs\nwireless\nwirelessed\nwirelesses\nwirelessing\nwirelike\nwireman\nwiremen\nwirepuller\nwirepullers\nwirer\nwirers\nwires\nwiretap\nwiretapped\nwiretapper\nwiretappers\nwiretapping\nwiretaps\nwireway\nwireways\nwirework\nwireworker\nwireworkers\nwireworks\nwireworm\nwireworms\nwirier\nwiriest\nwirily\nwiriness\nwirinesses\nwiring\nwirings\nwirra\nwiry\nwis\nwisdom\nwisdoms\nwise\nwiseacre\nwiseacres\nwisecrack\nwisecracked\nwisecracker\nwisecrackers\nwisecracking\nwisecracks\nwised\nwiselier\nwiseliest\nwisely\nwiseness\nwisenesses\nwisent\nwisents\nwiser\nwises\nwisest\nwish\nwisha\nwishbone\nwishbones\nwished\nwisher\nwishers\nwishes\nwishful\nwishfully\nwishfulness\nwishing\nwishless\nwising\nwisp\nwisped\nwispier\nwispiest\nwispily\nwispiness\nwisping\nwispish\nwisplike\nwisps\nwispy\nwiss\nwissed\nwisses\nwissing\nwist\nwistaria\nwistarias\nwisted\nwisteria\nwisterias\nwistful\nwistfully\nwistfulness\nwisting\nwists\nwit\nwitan\nwitch\nwitchcraft\nwitchcrafts\nwitched\nwitcheries\nwitchery\nwitches\nwitchier\nwitchiest\nwitching\nwitchings\nwitchy\nwite\nwited\nwites\nwith\nwithal\nwithdraw\nwithdrawable\nwithdrawal\nwithdrawals\nwithdrawing\nwithdrawn\nwithdrawnness\nwithdraws\nwithdrew\nwithe\nwithed\nwither\nwithered\nwitherer\nwitherers\nwithering\nwitheringly\nwithers\nwithes\nwithheld\nwithhold\nwithholder\nwithholders\nwithholding\nwithholds\nwithier\nwithies\nwithiest\nwithin\nwithing\nwithins\nwithout\nwithouts\nwithstand\nwithstanding\nwithstands\nwithstood\nwithy\nwiting\nwitless\nwitlessly\nwitlessness\nwitling\nwitlings\nwitloof\nwitloofs\nwitness\nwitnessed\nwitnesses\nwitnessing\nwitney\nwitneys\nwits\nwitted\nwitticism\nwitticisms\nwittier\nwittiest\nwittily\nwittiness\nwitting\nwittingly\nwittings\nwittol\nwittols\nwitty\nwive\nwived\nwiver\nwivern\nwiverns\nwivers\nwives\nwiving\nwiz\nwizard\nwizardly\nwizardries\nwizardry\nwizards\nwizen\nwizened\nwizening\nwizens\nwizes\nwizzen\nwizzens\nwo\nwoad\nwoaded\nwoads\nwoadwax\nwoadwaxes\nwoald\nwoalds\nwobble\nwobbled\nwobbler\nwobblers\nwobbles\nwobblier\nwobblies\nwobbliest\nwobbling\nwobbly\nwobegone\nwodge\nwoe\nwoebegone\nwoebegoneness\nwoeful\nwoefuller\nwoefullest\nwoefully\nwoefulness\nwoeness\nwoenesses\nwoes\nwoesome\nwoful\nwofully\nwog\nwogs\nwok\nwoke\nwoken\nwoks\nwold\nwolds\nwolf\nwolfed\nwolfer\nwolfers\nwolffish\nwolffishes\nwolfhound\nwolfhounds\nwolfing\nwolfish\nwolfishly\nwolfishness\nwolflike\nwolfram\nwolframs\nwolfs\nwolver\nwolverine\nwolverines\nwolvers\nwolves\nwoman\nwomaned\nwomanhood\nwomaning\nwomanise\nwomanised\nwomanises\nwomanish\nwomanishly\nwomanishness\nwomanising\nwomanize\nwomanized\nwomanizer\nwomanizers\nwomanizes\nwomanizing\nwomankind\nwomanlier\nwomanliest\nwomanlike\nwomanliness\nwomanly\nwomans\nwomb\nwombat\nwombats\nwombed\nwombier\nwombiest\nwombs\nwomby\nwomen\nwomenfolk\nwomenfolks\nwomera\nwomeras\nwommera\nwommeras\nwon\nwonder\nwondered\nwonderer\nwonderers\nwonderful\nwonderfully\nwonderfulness\nwondering\nwonderland\nwonderlands\nwonderment\nwonderments\nwonders\nwonderwork\nwonderworker\nwonderworkers\nwonderworking\nwonderworks\nwondrous\nwondrously\nwondrousness\nwonk\nwonkier\nwonkiest\nwonks\nwonky\nwonned\nwonner\nwonners\nwonning\nwons\nwont\nwonted\nwontedly\nwontedness\nwonting\nwonton\nwontons\nwonts\nwoo\nwood\nwoodbin\nwoodbind\nwoodbinds\nwoodbine\nwoodbines\nwoodbins\nwoodbox\nwoodboxes\nwoodcarving\nwoodcarvings\nwoodchat\nwoodchats\nwoodchopper\nwoodchoppers\nwoodchuck\nwoodchucks\nwoodcock\nwoodcocks\nwoodcraft\nwoodcut\nwoodcuts\nwoodcutter\nwoodcutters\nwoodcutting\nwoodcuttings\nwooded\nwooden\nwoodener\nwoodenest\nwoodenly\nwoodenness\nwoodhen\nwoodhens\nwoodier\nwoodiest\nwoodiness\nwooding\nwoodland\nwoodlands\nwoodlark\nwoodlarks\nwoodless\nwoodlore\nwoodlores\nwoodlot\nwoodlots\nwoodman\nwoodmen\nwoodnote\nwoodnotes\nwoodpecker\nwoodpeckers\nwoodpile\nwoodpiles\nwoodruff\nwoodruffs\nwoods\nwoodshed\nwoodshedded\nwoodshedding\nwoodsheds\nwoodsia\nwoodsias\nwoodsier\nwoodsiest\nwoodsman\nwoodsmen\nwoodsy\nwoodwax\nwoodwaxes\nwoodwind\nwoodwinds\nwoodwork\nwoodworker\nwoodworkers\nwoodworking\nwoodworks\nwoodworm\nwoodworms\nwoody\nwooed\nwooer\nwooers\nwoof\nwoofed\nwoofer\nwoofers\nwoofing\nwoofs\nwooing\nwooingly\nwool\nwooled\nwoolen\nwoolens\nwooler\nwoolers\nwoolfell\nwoolfells\nwoolgatherer\nwoolgatherers\nwoolgathering\nwoolgatherings\nwoolie\nwoolier\nwoolies\nwooliest\nwoollen\nwoollens\nwoollier\nwoollies\nwoolliest\nwoollike\nwoolliness\nwoolly\nwoolman\nwoolmen\nwoolpack\nwoolpacks\nwools\nwoolsack\nwoolsacks\nwoolshed\nwoolsheds\nwoolskin\nwoolskins\nwooly\nwoomera\nwoomeras\nwoops\nwoorali\nwooralis\nwoorari\nwooraris\nwoos\nwoosh\nwooshed\nwooshes\nwooshing\nwoozier\nwooziest\nwoozily\nwoozy\nwop\nwops\nword\nwordage\nwordages\nwordbook\nwordbooks\nworded\nwordier\nwordiest\nwordily\nwordiness\nwording\nwordings\nwordless\nwordlessly\nwordlessness\nwordplay\nwordplays\nwords\nwordy\nwore\nwork\nworkabilities\nworkability\nworkable\nworkableness\nworkaday\nworkbag\nworkbags\nworkbasket\nworkbaskets\nworkbench\nworkbenches\nworkboat\nworkboats\nworkbook\nworkbooks\nworkbox\nworkboxes\nworkday\nworkdays\nworked\nworker\nworkers\nworkfolk\nworkhorse\nworkhorses\nworkhouse\nworkhouses\nworking\nworkingman\nworkingmen\nworkings\nworkless\nworklessness\nworkload\nworkloads\nworkman\nworkmanlike\nworkmanly\nworkmanship\nworkmen\nworkout\nworkouts\nworkplace\nworkplaces\nworkroom\nworkrooms\nworks\nworkshop\nworkshops\nworkstation\nworkstations\nworktable\nworktables\nworkup\nworkups\nworkweek\nworkweeks\nworld\nworldlier\nworldliest\nworldliness\nworldling\nworldlings\nworldly\nworlds\nworldwide\nworm\nwormed\nwormer\nwormers\nwormhole\nwormholes\nwormier\nwormiest\nwormil\nwormils\nworming\nwormish\nwormlike\nwormroot\nwormroots\nworms\nwormseed\nwormseeds\nwormwood\nwormwoods\nwormy\nworn\nwornness\nwornnesses\nworried\nworrier\nworriers\nworries\nworriment\nworriments\nworrisome\nworrisomely\nworrit\nworrited\nworriting\nworrits\nworry\nworrying\nworrywart\nworrywarts\nworse\nworsen\nworsened\nworsening\nworsens\nworser\nworses\nworset\nworsets\nworship\nworshiped\nworshiper\nworshipers\nworshipful\nworshipfully\nworshipfulness\nworshiping\nworshipped\nworshipper\nworshippers\nworshipping\nworships\nworst\nworsted\nworsteds\nworsting\nworsts\nwort\nworth\nworthed\nworthful\nworthier\nworthies\nworthiest\nworthily\nworthiness\nworthing\nworthless\nworthlessly\nworthlessness\nworths\nworthwhile\nworthy\nworts\nwos\nwost\nwot\nwots\nwotted\nwotting\nwould\nwouldest\nwouldst\nwound\nwounded\nwounding\nwoundless\nwounds\nwove\nwoven\nwow\nwowed\nwowing\nwows\nwowser\nwowsers\nwrack\nwracked\nwrackful\nwracking\nwracks\nwraith\nwraithlike\nwraiths\nwrang\nwrangle\nwrangled\nwrangler\nwranglers\nwrangles\nwrangling\nwrangs\nwrap\nwraparound\nwraparounds\nwrapped\nwrapper\nwrappers\nwrapping\nwrappings\nwraps\nwrapt\nwrasse\nwrasses\nwrastle\nwrastled\nwrastles\nwrastling\nwrath\nwrathed\nwrathful\nwrathfully\nwrathfulness\nwrathier\nwrathiest\nwrathily\nwrathing\nwraths\nwrathy\nwreak\nwreaked\nwreaker\nwreakers\nwreaking\nwreaks\nwreath\nwreathe\nwreathed\nwreathen\nwreathes\nwreathing\nwreaths\nwreathy\nwreck\nwreckage\nwreckages\nwrecked\nwrecker\nwreckers\nwreckful\nwrecking\nwreckings\nwrecks\nwren\nwrench\nwrenched\nwrenches\nwrenching\nwrens\nwrest\nwrested\nwrester\nwresters\nwresting\nwrestle\nwrestled\nwrestler\nwrestlers\nwrestles\nwrestling\nwrests\nwretch\nwretched\nwretcheder\nwretchedest\nwretchedly\nwretchedness\nwretches\nwrick\nwried\nwrier\nwries\nwriest\nwriggle\nwriggled\nwriggler\nwrigglers\nwriggles\nwrigglier\nwriggliest\nwriggling\nwriggly\nwright\nwrights\nwring\nwringed\nwringer\nwringers\nwringing\nwrings\nwrinkle\nwrinkled\nwrinkles\nwrinklier\nwrinkliest\nwrinkling\nwrinkly\nwrist\nwristband\nwristbands\nwristier\nwristiest\nwristlet\nwristlets\nwrists\nwristwatch\nwristwatches\nwristy\nwrit\nwritable\nwrite\nwriter\nwriters\nwrites\nwrithe\nwrithed\nwrithen\nwrither\nwrithers\nwrithes\nwrithing\nwriting\nwritings\nwrits\nwritten\nwrong\nwrongdoer\nwrongdoers\nwrongdoing\nwrongdoings\nwronged\nwronger\nwrongers\nwrongest\nwrongful\nwrongfully\nwrongfulness\nwronging\nwrongly\nwrongness\nwrongs\nwrote\nwroth\nwrothful\nwrought\nwrung\nwry\nwryer\nwryest\nwrying\nwryly\nwryneck\nwrynecks\nwryness\nwrynesses\nwud\nwurst\nwursts\nwurzel\nwurzels\nwych\nwyches\nwye\nwyes\nwyle\nwyled\nwyles\nwyling\nwyn\nwynd\nwynds\nwynn\nwynns\nwyns\nwyte\nwyted\nwytes\nwyting\nwyvern\nwyverns\nxanthate\nxanthates\nxanthein\nxantheins\nxanthene\nxanthenes\nxanthic\nxanthin\nxanthine\nxanthines\nxanthins\nxanthoma\nxanthomas\nxanthomata\nxanthone\nxanthones\nxanthous\nxebec\nxebecs\nxenia\nxenial\nxenias\nxenic\nxenogamies\nxenogamy\nxenogenies\nxenogeny\nxenolith\nxenolithic\nxenoliths\nxenon\nxenons\nxenophobe\nxenophobes\nxenophobia\nxenophobic\nxerarch\nxeric\nxerographic\nxerographically\nxerographies\nxerography\nxerophyte\nxerophytes\nxerophytic\nxerosere\nxeroseres\nxeroses\nxerosis\nxerotic\nxerus\nxeruses\nxi\nxiphoid\nxiphoids\nxis\nxu\nxylan\nxylans\nxylem\nxylems\nxylene\nxylenes\nxylidin\nxylidine\nxylidines\nxylidins\nxylocarp\nxylocarps\nxyloid\nxylol\nxylols\nxylophone\nxylophones\nxylophonist\nxylophonists\nxylose\nxyloses\nxylotomies\nxylotomy\nxylyl\nxylyls\nxyst\nxyster\nxysters\nxysti\nxystoi\nxystos\nxysts\nxystus\nya\nyabber\nyabbered\nyabbering\nyabbers\nyacht\nyachted\nyachter\nyachters\nyachting\nyachtings\nyachtman\nyachtmen\nyachts\nyack\nyacked\nyacking\nyacks\nyaff\nyaffed\nyaffing\nyaffs\nyager\nyagers\nyagi\nyagis\nyah\nyahoo\nyahooism\nyahooisms\nyahoos\nyaird\nyairds\nyak\nyakked\nyakking\nyaks\nyald\nyam\nyamen\nyamens\nyammer\nyammered\nyammerer\nyammerers\nyammering\nyammers\nyams\nyamun\nyamuns\nyang\nyangs\nyank\nyanked\nyanking\nyanks\nyanqui\nyanquis\nyap\nyapock\nyapocks\nyapok\nyapoks\nyapon\nyapons\nyapped\nyapper\nyappers\nyapping\nyaps\nyar\nyard\nyardage\nyardages\nyardarm\nyardarms\nyardbird\nyardbirds\nyarded\nyarding\nyardman\nyardmaster\nyardmasters\nyardmen\nyards\nyardstick\nyardsticks\nyardwand\nyardwands\nyare\nyarely\nyarer\nyarest\nyarmelke\nyarmelkes\nyarmulke\nyarmulkes\nyarn\nyarned\nyarning\nyarns\nyarrow\nyarrows\nyashmac\nyashmacs\nyashmak\nyashmaks\nyasmak\nyasmaks\nyatagan\nyatagans\nyataghan\nyataghans\nyaud\nyauds\nyauld\nyaup\nyauped\nyauper\nyaupers\nyauping\nyaupon\nyaupons\nyaups\nyaw\nyawed\nyawing\nyawl\nyawled\nyawling\nyawls\nyawmeter\nyawmeters\nyawn\nyawned\nyawner\nyawners\nyawning\nyawns\nyawp\nyawped\nyawper\nyawpers\nyawping\nyawpings\nyawps\nyaws\nyay\nyays\nycleped\nyclept\nye\nyea\nyeah\nyealing\nyealings\nyean\nyeaned\nyeaning\nyeanling\nyeanlings\nyeans\nyear\nyearbook\nyearbooks\nyearlies\nyearling\nyearlings\nyearlong\nyearly\nyearn\nyearned\nyearner\nyearners\nyearning\nyearningly\nyearnings\nyearns\nyears\nyeas\nyeast\nyeasted\nyeastier\nyeastiest\nyeastily\nyeastiness\nyeasting\nyeasts\nyeasty\nyecch\nyech\nyechs\nyechy\nyeelin\nyeelins\nyegg\nyeggman\nyeggmen\nyeggs\nyeh\nyeld\nyelk\nyelks\nyell\nyelled\nyeller\nyellers\nyelling\nyellow\nyellowed\nyellower\nyellowest\nyellowing\nyellowish\nyellowly\nyellowness\nyellows\nyellowy\nyells\nyelp\nyelped\nyelper\nyelpers\nyelping\nyelps\nyen\nyenned\nyenning\nyens\nyenta\nyentas\nyente\nyeoman\nyeomanly\nyeomanries\nyeomanry\nyeomen\nyep\nyerba\nyerbas\nyerk\nyerked\nyerking\nyerks\nyes\nyeses\nyeshiva\nyeshivah\nyeshivahs\nyeshivas\nyeshivoth\nyessed\nyesses\nyessing\nyester\nyesterday\nyesterdays\nyestern\nyesteryear\nyesteryears\nyestreen\nyestreens\nyet\nyeti\nyetis\nyett\nyetts\nyeuk\nyeuked\nyeuking\nyeuks\nyeuky\nyew\nyews\nyid\nyids\nyield\nyielded\nyielder\nyielders\nyielding\nyields\nyikes\nyill\nyills\nyin\nyince\nyins\nyip\nyipe\nyipes\nyipped\nyippee\nyippie\nyippies\nyipping\nyips\nyird\nyirds\nyirr\nyirred\nyirring\nyirrs\nyirth\nyirths\nylem\nylems\nyob\nyobbo\nyobs\nyock\nyocks\nyod\nyodel\nyodeled\nyodeler\nyodelers\nyodeling\nyodelled\nyodeller\nyodellers\nyodelling\nyodels\nyodh\nyodhs\nyodle\nyodled\nyodler\nyodlers\nyodles\nyodling\nyods\nyoga\nyogas\nyogee\nyogees\nyogh\nyoghourt\nyoghourts\nyoghs\nyoghurt\nyoghurts\nyogi\nyogic\nyogin\nyogini\nyoginis\nyogins\nyogis\nyogurt\nyogurts\nyoicks\nyok\nyoke\nyoked\nyokel\nyokeless\nyokelish\nyokels\nyokemate\nyokemates\nyokes\nyoking\nyoks\nyolk\nyolked\nyolkier\nyolkiest\nyolks\nyolky\nyom\nyomim\nyon\nyond\nyonder\nyoni\nyonic\nyonis\nyonker\nyonkers\nyore\nyores\nyou\nyoung\nyounger\nyoungers\nyoungest\nyoungish\nyoungs\nyoungster\nyoungsters\nyounker\nyounkers\nyoupon\nyoupons\nyour\nyourn\nyours\nyourself\nyourselves\nyouse\nyouth\nyouthen\nyouthened\nyouthening\nyouthens\nyouthful\nyouthfully\nyouthfulness\nyouths\nyow\nyowe\nyowed\nyowes\nyowie\nyowies\nyowing\nyowl\nyowled\nyowler\nyowlers\nyowling\nyowls\nyows\nyperite\nyperites\nytterbia\nytterbias\nytterbic\nyttria\nyttrias\nyttric\nyttrium\nyttriums\nyuan\nyuans\nyucca\nyuccas\nyucch\nyuch\nyuck\nyucks\nyucky\nyuga\nyugas\nyuk\nyukked\nyukking\nyuks\nyulan\nyulans\nyule\nyules\nyuletide\nyuletides\nyum\nyummier\nyummies\nyummiest\nyummy\nyup\nyupon\nyupons\nyurt\nyurta\nyurts\nywis\nzabaione\nzabaiones\nzabajone\nzabajones\nzacaton\nzacatons\nzaddik\nzaddikim\nzaffar\nzaffars\nzaffer\nzaffers\nzaffir\nzaffirs\nzaffre\nzaffres\nzaftig\nzag\nzagged\nzagging\nzags\nzaibatsu\nzaire\nzaires\nzamarra\nzamarras\nzamarro\nzamarros\nzamia\nzamias\nzamindar\nzamindars\nzanana\nzananas\nzander\nzanders\nzanier\nzanies\nzaniest\nzanily\nzaniness\nzaninesses\nzany\nzanyish\nzanza\nzanzas\nzap\nzapateo\nzapateos\nzapped\nzapping\nzappy\nzaps\nzaptiah\nzaptiahs\nzaptieh\nzaptiehs\nzaratite\nzaratites\nzareba\nzarebas\nzareeba\nzareebas\nzarf\nzarfs\nzariba\nzaribas\nzarzuela\nzarzuelas\nzastruga\nzastrugi\nzax\nzaxes\nzayin\nzayins\nzazen\nzeal\nzealot\nzealotries\nzealotry\nzealots\nzealous\nzealously\nzealousness\nzeals\nzeatin\nzeatins\nzebec\nzebeck\nzebecks\nzebecs\nzebra\nzebraic\nzebras\nzebrass\nzebrasses\nzebrine\nzebroid\nzebu\nzebus\nzecchin\nzecchini\nzecchino\nzecchinos\nzecchins\nzechin\nzechins\nzed\nzedoaries\nzedoary\nzeds\nzee\nzees\nzein\nzeins\nzeitgeist\nzeitgeists\nzek\nzeks\nzelkova\nzelkovas\nzemindar\nzemindars\nzemstvo\nzemstvos\nzenana\nzenanas\nzenith\nzenithal\nzeniths\nzeolite\nzeolites\nzeolitic\nzephyr\nzephyrs\nzeppelin\nzeppelins\nzero\nzeroed\nzeroes\nzeroing\nzeros\nzest\nzested\nzestful\nzestfully\nzestfulness\nzestier\nzestiest\nzesting\nzests\nzesty\nzeta\nzetas\nzeugma\nzeugmas\nzibeline\nzibelines\nzibet\nzibeth\nzibeths\nzibets\nzig\nzigged\nzigging\nziggurat\nziggurats\nzigs\nzigzag\nzigzagged\nzigzagging\nzigzags\nzikkurat\nzikkurats\nzikurat\nzikurats\nzilch\nzilches\nzill\nzillah\nzillahs\nzillion\nzillions\nzills\nzinc\nzincate\nzincates\nzinced\nzincic\nzincified\nzincifies\nzincify\nzincifying\nzincing\nzincite\nzincites\nzincked\nzincking\nzincky\nzincoid\nzincous\nzincs\nzincy\nzineb\nzing\nzingani\nzingano\nzingara\nzingare\nzingari\nzingaro\nzinged\nzingier\nzingiest\nzinging\nzings\nzingy\nzinkified\nzinkifies\nzinkify\nzinkifying\nzinky\nzinnia\nzinnias\nzip\nzipped\nzipper\nzippered\nzippering\nzippers\nzippier\nzippiest\nzipping\nzippy\nzips\nziram\nzirams\nzircon\nzirconia\nzirconias\nzirconic\nzirconium\nzircons\nzit\nzither\nzitherist\nzitherists\nzithern\nzitherns\nzithers\nziti\nzitis\nzits\nzizit\nzizith\nzizzle\nzizzled\nzizzles\nzizzling\nzlote\nzloty\nzlotys\nzoa\nzoaria\nzoarial\nzoarium\nzodiac\nzodiacal\nzodiacs\nzoea\nzoeae\nzoeal\nzoeas\nzoftig\nzoic\nzoisite\nzoisites\nzombi\nzombie\nzombies\nzombiism\nzombiisms\nzombis\nzonal\nzonally\nzonary\nzonate\nzonated\nzonation\nzonations\nzone\nzoned\nzoneless\nzoner\nzoners\nzones\nzonetime\nzonetimes\nzoning\nzonk\nzonked\nzonks\nzonula\nzonulae\nzonular\nzonulas\nzonule\nzonules\nzoo\nzoochore\nzoochores\nzoogenic\nzoogeographer\nzoogeographers\nzoogeographic\nzoogeographical\nzoogeographically\nzoogeography\nzooglea\nzoogleae\nzoogleal\nzoogleas\nzoogloea\nzoogloeae\nzoogloeas\nzooid\nzooidal\nzooids\nzooks\nzoolater\nzoolaters\nzoolatries\nzoolatry\nzoologic\nzoological\nzoologically\nzoologies\nzoologist\nzoologists\nzoology\nzoom\nzoomania\nzoomanias\nzoomed\nzoometries\nzoometry\nzooming\nzoomorph\nzoomorphs\nzooms\nzoon\nzoonal\nzoonoses\nzoonosis\nzoonotic\nzoons\nzoophile\nzoophiles\nzoophyte\nzoophytes\nzoos\nzoosperm\nzoosperms\nzoospore\nzoospores\nzootomic\nzootomies\nzootomy\nzori\nzoril\nzorilla\nzorillas\nzorille\nzorilles\nzorillo\nzorillos\nzorils\nzoris\nzoster\nzosters\nzouave\nzouaves\nzounds\nzowie\nzoysia\nzoysias\nzucchetto\nzucchettos\nzucchini\nzucchinis\nzwieback\nzwiebacks\nzygoma\nzygomas\nzygomata\nzygose\nzygoses\nzygosis\nzygosities\nzygosity\nzygote\nzygotene\nzygotenes\nzygotes\nzygotic\nzymase\nzymases\nzyme\nzymes\nzymogen\nzymogene\nzymogenes\nzymogens\nzymologies\nzymology\nzymoses\nzymosis\nzymotic\nzymurgies\nzymurgy\nzyzzyva\nzyzzyvas\n"
  },
  {
    "path": "RandomClientTests/ShadowTest/ShadowTest.pro",
    "content": "###############################################################################\n# Project file for CS106B/X student program\n#\n# @version Winter Quarter 2025.2 for Qt 6\n# @author Julie Zelenski\n#   build client program using installed static library\n###############################################################################\n\nSPL_VERSION = 2025.2\nSPL_URL = https://web.stanford.edu/dept/cs_edu/qt\n\nTEMPLATE    =   app\nQT          +=  core gui widgets network multimedia\nCONFIG      +=  silent debug         # quiet build and debug symbols always\nCONFIG      -=  depend_includepath   # library headers not changing, don't add depend\n\n###############################################################################\n#       Find/use installed version of cs106 lib and headers                   #\n###############################################################################\n\n# Library installed into per-user writable data location from QtStandardPaths\nwin32|win64     { QTP_EXE = qtpaths.exe } else { QTP_EXE = qtpaths }\nUSER_DATA_DIR   =   $$system($$[QT_INSTALL_BINS]/$$QTP_EXE --writable-path GenericDataLocation)\n\nSPL_DIR         =   $${USER_DATA_DIR}/cs106\nSTATIC_LIB      =   $$system_path($${SPL_DIR}/lib/libcs106.a)\nVERSION_FILE =      $$system_path($${SPL_DIR}/lib/spl_version)\n\n# link against libcs106.a, add library headers to search path\n# libcs106 requires libpthread, add link here\nLIBS            +=  -lcs106 -lpthread\nQMAKE_LFLAGS    =   -L$$shell_quote($${SPL_DIR}/lib)\n# put PWD first in search list to allow local copy to shadow if needed\nINCLUDEPATH     +=  $$PWD \"$${SPL_DIR}/include\"\n\n###############################################################################\n#       Configure project with custom settings                                #\n###############################################################################\n\n# changes to headers require recompilation\nDEPENDPATH += $$PWD\n\n# remove spaces from target executable for better Windows compatibility\nTARGET      =   $$replace(TARGET, \" \", _)\n\n# set DESTDIR to project root dir, this is where executable/app will deploy and run\nDESTDIR     =   $$PWD\n\n# student writes ordinary main() function, but it must be called within a\n# wrapper main() that handles library setup/teardown. Rename student's\n# to distinguish between the two main() functions and avoid symbol clash\n# Ask Julie if you are curious why main->qMain->studentMain\nDEFINES     +=  main=qMain qMain=studentMain\n\n###############################################################################\n#       Gather files to list in Qt Creator project browser                    #\n###############################################################################\n\n# honeypot to trick Qt Creator to allow glob-all to coexist with user-added files\n# Qt looks for first 'SOURCES *=' line and lists user-added .cpp/h files there.\n# Afterward we glob-add files to SOURCES ourselves. Operator *= will unique\n# entries, so no worries about duplicates\nSOURCES         *=  \"\"\nHEADERS         *=  \"\"\n\n# Gather any .cpp or .h files within the project folder (student/starter code).\n# Second argument true makes search recursive\nSOURCES         *=  $$files(*.cpp, true)\nHEADERS         *=  $$files(*.h, true)\n\n# Gather resource files (image/sound/etc) from res dir, list under \"Other files\"\nOTHER_FILES     *=  $$files(res/*, true)\n# Gather text files from root dir or anywhere recursively\nOTHER_FILES     *=  $$files(*.txt, true)\n\n###############################################################################\n#       Configure compiler, compile flags                                     #\n###############################################################################\n\n# Configure flags for the C++ compiler\n# (In general, many warnings/errors are enabled to tighten compile-time checking.\n# A few overly pedantic/confusing errors are turned off to avoid confusion.)\n\nCONFIG          +=  sdk_no_version_check   # removes spurious warnings on Mac OS X\n\n# MinGW compiler lags, be conservative and use C++11 on all platforms\n# rather than special case\nCONFIG          +=  c++11\n\n# WARN_ON has -Wall -Wextra, add/remove a few specific warnings\nQMAKE_CXXFLAGS_WARN_ON      +=  -Werror=return-type\nQMAKE_CXXFLAGS_WARN_ON      +=  -Werror=uninitialized\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wunused-parameter\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wmissing-field-initializers\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wno-old-style-cast\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wno-sign-compare\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wno-sign-conversion\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wno-unused-const-variable\n\n*-clang { # warning flags specific to clang\n    QMAKE_CXXFLAGS_WARN_ON  +=  -Wempty-init-stmt\n    QMAKE_CXXFLAGS_WARN_ON  +=  -Wignored-qualifiers\n}\n\n*-g++ {   # warning flags specific to g++\n    QMAKE_CXXFLAGS_WARN_ON  +=  -Wlogical-op\n}\n\n###############################################################################\n#       Detect/report errors in project structure                             #\n###############################################################################\n\n# error if project opened from within a ZIP archive (common mistake on Windows)\nwin32|win64 {\n    contains(PWD, .*\\.zip.*) | contains(PWD, .*\\.ZIP.*) {\n        warning( \"*** You are trying to open this project from within a ZIP archive.\" )\n        warning( \"*** You must first extract the files then open in Qt Creator.\" )\n        warning( \"*** In File Explorer open the ZIP and choose to Extract All.\" )\n        error( Exiting. Extract project from ZIP first.)\n    }\n}\n\n# error if name of directory has chars that may cause trouble for qmake/make/shell\nPROJECT_DIR = $$basename(PWD)\nFOUND  = $$PROJECT_DIR\nFOUND ~= s|[a-z A-Z 0-9 _.+-]||   # yes, spaces ok, limited punctuation, $ % & are dicey\n!isEmpty(FOUND) {\n    warning( \"*** The name of your project directory contains the disallowed characters: $$FOUND\" )\n    warning( \"*** The allowed characters are letters, numbers, and simple punctuation.\" )\n    warning( \"*** Please rename to a simple name such as Assignment_1 that contains no disallowed characters.\" )\n    error(Exiting. Rename project directory to remove disallowed characters. )\n}\n\n\n!isEmpty(CURRENTLY_INSTALLING_LIBRARY) { # special case for Welcome app in CS106 package\n    message(\"Installing cs106 package, will skip library version check\")\n} else {\n    !exists($$STATIC_LIB) {             # confirm static lib exists\n        warning(\"No CS106 library found. Need to install.\")\n        error(Exiting. Install CS106 package following instructions at $$SPL_URL)\n    }\n    !exists($$VERSION_FILE) {           # confirm version file exists\n         warning(\"Installed library has no version. Re-install to get correct version.\")\n         error(Exiting. Re-install CS106 package following instructions at $$SPL_URL)\n    }\n    CONTENTS = $$cat($$VERSION_FILE)    # confirm version file contents match this .pro file\n    !equals(CONTENTS, $$SPL_VERSION) {\n        warning( \"Installed library version $$CONTENTS, expected $$SPL_VERSION\" )\n        error(Exiting. Re-install CS106 package following instructions at $$SPL_URL)\n    }\n}\n"
  },
  {
    "path": "RandomClientTests/ShadowTest/again.h",
    "content": "#include \"strlib.h\"\n\nstd::string NOTzelenski(bool);\n"
  },
  {
    "path": "RandomClientTests/ShadowTest/extra/NOTstrlib.h",
    "content": "#warning \"EXTRA strlib.h\"\n/*\n * File: strlib.h\n * --------------\n * This file exports several useful string functions that are not\n * included in the C++ string library.\n *\n * @version 2018/11/14\n * - added std::to_string for bool, char, pointer, and generic template type T\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2018/09/02\n * - added padLeft, padRight\n * @version 2016/11/09\n * - added boolalpha to writeGenericValue (improves bool printing in\n *   collection toString output)\n * @version 2016/10/30\n * - added overloads that take type char instead of string:\n *   stringContains, stringIndexOf, stringJoin, stringLastIndexOf, stringReplace,\n *   stringSplit, toLowerCase, toUpperCase\n * @version 2016/10/26\n * - bug fix for stringLastIndexOf default index arg\n * @version 2016/10/13\n * - modified writeGenericValue, writeQuotedString to return ostream\n * @version 2016/08/03\n * - modified readGenericValue not to throw error() on parse failures\n *   (needed to support idiomatic silent-failing >> operators)\n * @version 2015/10/26\n * - added charToInteger/integerToChar functions\n * @version 2015/08/02\n * - added htmlEncode/Decode functions (not 100% perfect but works for common cases)\n * @version 2014/10/19\n * - alphabetized functions\n * - added several 'inPlace' variants of existing functions that return strings\n * @version 2014/10/08\n * - removed dependency on 'using namespace' statement\n */\n\n\n#ifndef _strlib_h\n#define _strlib_h\n\n#include <iostream>\n#include <sstream>\n#include <string>\n\n#include \"vector.h\"\n\n\nstd::string zelenski(bool b);\n\n\n/**\n * Returns the string \"true\" if b is true, or \"false\" if b is false.\n */\nstd::string boolToString(bool b);\n\n/**\n * Returns the string \"true\" if b is nonzero, or \"false\" if b is 0.\n */\nstd::string boolToString(int b);\n\n/**\n * Returns an integer equivalent of the given numeric character.\n * For example, charToInteger('3') returns the int 3.\n * If the character is not '0' through '9', throws an error.\n */\nint charToInteger(char c);\n\n/**\n * Returns a single-character string containing the given character.\n * For example, charToString('Q') returns the string \"Q\".\n */\nstd::string charToString(char c);\n\n/**\n * Converts a floating-point number into the corresponding string form.\n * For example, calling <code>doubleToString(23.45)</code> returns\n * the string <code>\"23.45\"</code>.\n * Equivalent to realToString.\n */\nstd::string doubleToString(double d);\n\n/**\n * Returns <code>true</code> if the string <code>str</code> ends with\n * the specified suffix.\n */\nbool endsWith(const std::string& str, const std::string& suffix);\n\n/**\n * Returns <code>true</code> if the string <code>str</code> ends with\n * the specified character.\n */\nbool endsWith(const std::string& str, char suffix);\n\n/**\n * Returns <code>true</code> if <code>s1</code> and <code>s2</code> are\n * equal discounting differences in case.\n */\nbool equalsIgnoreCase(const std::string& s1, const std::string& s2);\n\n/**\n * Converts the given string from an HTML-encoded version to its decoded\n * equivalent; the opposite of htmlEncode. Any escaped HTML character entities\n * will be replaced by their unescaped equivalents.\n * For example, <code>htmlEncode(\"&lt;p class=&quot;abc&quot;&gt;I love you &amp; me&lt;/p&gt;\")\n * returns \"<p class=\\\"abc\\\">I love you & me</p>\".\n */\nstd::string htmlDecode(const std::string& s);\n\n/**\n * Converts the given string into an HTML-encoded equivalent version, with\n * any relevant HTML character entities replaced by escaped equivalents.\n * For example, <code>htmlEncode(\"<p class=\\\"abc\\\">I love you & me</p>\") returns\n * \"&lt;p class=&quot;abc&quot;&gt;I love you &amp; me&lt;/p&gt;\".\n */\nstd::string htmlEncode(const std::string& s);\n\n/**\n * Converts an integer into the corresponding numeric character.\n * For example, calling <code>integerToChar(3)</code> returns\n * the char <code>'3'</code>.\n * @throw ErrorException if the given integer is not a single-digit number from 0-9 inclusive\n */\nchar integerToChar(int n);\n\n/**\n * Converts an integer into the corresponding string of digits.\n * For example, calling <code>integerToString(123)</code> returns\n * the string <code>\"123\"</code>.\n */\nstd::string integerToString(int n, int radix = 10);\n\n/**\n * Converts an integer into the corresponding string of digits.\n * For example, calling <code>longToString(123)</code> returns\n * the string <code>\"123\"</code>.\n */\nstd::string longToString(long n, int radix = 10);\n\n/**\n * Inserts spaces at the start of the given string until it is at least\n * the given length.\n * You can optionally pass a fill character (other than space) as a third parameter.\n *\n * Note that if you are printing strings and want your output to line up\n * at a given number of characters, you may be better served using the built-in\n * C++ ostream manipulators such as setw(int), left, and right, as defined in\n * the iomanip library.\n */\nstd::string padLeft(const std::string& s, int length, char fill = ' ');\n\n/**\n * Inserts spaces at the end of the given string until it is at least\n * the given length.\n * You can optionally pass a fill character (other than space) as a third parameter.\n *\n * Note that if you are printing strings and want your output to line up\n * at a given number of characters, you may be better served using the built-in\n * C++ ostream manipulators such as setw(int), left, and right, as defined in\n * the iomanip library.\n */\nstd::string padRight(const std::string& s, int length);\n\n/**\n * Returns a hexadecimal string for the given pointer, such as \"0x3f0427b\".\n * Returns \"nullptr\" if p is a null pointer.\n */\nstd::string pointerToString(void* p);\n\n/**\n * Converts a floating-point number into the corresponding string form.\n * For example, calling <code>realToString(23.45)</code> returns\n * the string <code>\"23.45\"</code>.\n */\nstd::string realToString(double d);\n\n/**\n * Returns <code>true</code> if the string <code>str</code> starts with\n * the specified prefix.\n */\nbool startsWith(const std::string& str, char prefix);\n\n/**\n * Returns <code>true</code> if the string <code>str</code> starts with\n * the specified character.\n */\nbool startsWith(const std::string& str, const std::string& prefix);\n\n/**\n * Returns true if the given character occurs somewhere in s.\n */\nbool stringContains(const std::string& s, char ch);\n\n/**\n * Returns true if the given substring occurs somewhere in s.\n */\nbool stringContains(const std::string& s, const std::string& substring);\n\n/**\n * Returns the index of the start of the first occurrence of the given character\n * in s, if it occurs in s.  If it does not occur, returns -1.\n * This function is very similar to string.find, but find returns string::npos\n * when the string is not found.\n */\nint stringIndexOf(const std::string& s, char ch, int startIndex = 0);\n\n/**\n * Returns the index of the start of the first occurrence of the given substring\n * in s, if it occurs in s.  If it does not occur, returns -1.\n * This function is very similar to string.find, but find returns string::npos\n * when the string is not found.\n */\nint stringIndexOf(const std::string& s, const std::string& substring, int startIndex = 0);\n\n/**\n * Returns true if the given string is either \"true\" or \"false\".\n */\nbool stringIsBool(const std::string& str);\n\n/**\n * Returns true if the given string could be converted to an real number\n * successfully by the stringToReal function, which will be true if\n * the string has the format of a real number such as \"3.14\" or \"-46\".\n * Equivalent to stringIsReal.\n */\nbool stringIsDouble(const std::string& str);   // alias\n\n/**\n * Returns true if the given string could be converted to an integer\n * successfully by the stringToInteger function, which will be true if\n * the string has the format of an integer such as \"1234\" or \"-8\".\n * Optionally accepts a radix (base) parameter if base-10 is not desired.\n */\nbool stringIsInteger(const std::string& str, int radix = 10);\n\n/**\n * Returns true if the given string could be converted to a long\n * successfully by the stringToLong function, which will be true if\n * the string has the format of an integer such as \"1234\" or \"-8\".\n * Optionally accepts a radix (base) parameter if base-10 is not desired.\n */\nbool stringIsLong(const std::string& str, int radix = 10);\n\n/**\n * Returns true if the given string could be converted to an real number\n * successfully by the stringToReal function, which will be true if\n * the string has the format of a real number such as \"3.14\" or \"-46\".\n */\nbool stringIsReal(const std::string& str);\n\n/**\n * Combines the elements of the given vector into a single string,\n * with the given delimiter separating neighboring elements, and returns it.\n * For example, joining the elements of the vector\n * {\"Hi\", \"there\", \"\", \"Jim\"} with the delimiter '?' returns \"Hi?there??Jim\".\n */\nstd::string stringJoin(const Vector<std::string>& v, char delimiter = '\\n');\n\n/**\n * Combines the elements of the given STL vector into a single string,\n * with the given delimiter separating neighboring elements, and returns it.\n * For example, joining the elements of the vector\n * {\"Hi\", \"there\", \"\", \"Jim\"} with the delimiter \"??\" returns \"Hi??there????Jim\".\n */\nstd::string stringJoin(const Vector<std::string>& v, const std::string& delimiter = \"\\n\");\n\n/**\n * Returns the index of the start of the last occurrence of the given character\n * in s, if it occurs in s.  If it does not occur, returns -1.\n * This function is very similar to string.rfind, but rfind returns string::npos\n * when the string is not found.\n */\nint stringLastIndexOf(const std::string& s, char ch, int startIndex = (int) std::string::npos);\n\n/**\n * Returns the index of the start of the last occurrence of the given substring\n * in s, if it occurs in s.  If it does not occur, returns -1.\n * This function is very similar to string.rfind, but rfind returns string::npos\n * when the string is not found.\n */\nint stringLastIndexOf(const std::string& s, const std::string& substring, int startIndex = (int) std::string::npos);\n\n/**\n * Returns a new string formed by replacing any occurrences of the given 'old'\n * character with the given replacement character in 'str'.\n * Note that this is NOT a regular expression replacement; it looks for the\n * 'old' string literally.  If you want regular expressions, see regexpr.h.\n * The 'inPlace' variant modifies an existing string rather than returning a new one,\n * and returns the number of occurrences of 'old' were replaced.\n */\nstd::string stringReplace(const std::string& str, char old, char replacement, int limit = -1);\n\n/**\n * Returns a new string formed by replacing any occurrences of the given 'old'\n * text with the given replacement text in 'str'.\n * Note that this is NOT a regular expression replacement; it looks for the\n * 'old' string literally.  If you want regular expressions, see regexpr.h.\n * The 'inPlace' variant modifies an existing string rather than returning a new one,\n * and returns the number of occurrences of 'old' were replaced.\n */\nstd::string stringReplace(const std::string& str, const std::string& old, const std::string& replacement, int limit = -1);\n\n/**\n * A variant of stringReplace, except that it accepts the string as a reference\n * and modifies it in-place rather than returning a new string.\n */\nint stringReplaceInPlace(std::string& str, char old, char replacement, int limit = -1);\n\n/**\n * A variant of stringReplace, except that it accepts the string as a reference\n * and modifies it in-place rather than returning a new string.\n */\nint stringReplaceInPlace(std::string& str, const std::string& old, const std::string& replacement, int limit = -1);\n\n/**\n * Returns a vector whose elements are strings formed by splitting the\n * given string 'str' by the given separator character.\n * For example, splitting \"Hi there  Jim!\" on \" \" returns\n * {\"Hi\", \"there\", \"\", \"Jim!\"}.\n */\nVector<std::string> stringSplit(const std::string& str, char delimiter, int limit = -1);\n\n/**\n * Returns a vector whose elements are strings formed by splitting the\n * given string 'str' by the given separator text.\n * For example, splitting \"Hi there  Jim!\" on \" \" returns\n * {\"Hi\", \"there\", \"\", \"Jim!\"}.\n */\nVector<std::string> stringSplit(const std::string& str, const std::string& delimiter, int limit = -1);\n\n/**\n * If str is \"true\", returns the bool value true.\n * If str is \"false\", returns the bool value false.\n * @throw ErrorException if str is any other value than \"true\" or \"false\"\n */\nbool stringToBool(const std::string& str);\n\n/**\n * Converts a single-character string into its corresponding char value.\n * For example, stringToChar(\"hello\") returns the char 'h'.\n * @throw ErrorException if the given string does not contain exactly 1 character\n */\nchar stringToChar(const std::string& str);\n\n/**\n * Converts a string representing a real number into its corresponding\n * value.\n * Equivalent to stringToReal.\n * @throw ErrorException if the string is not a legal floating-point number\n *        or contains extraneous characters other than whitespace\n */\ndouble stringToDouble(const std::string& str);   // alias\n\n/**\n * Converts a string of digits into an integer.\n * The function accepts an optional radix (base); for example,\n * stringToInteger(\"234\", 16) assumes that the string is in base-16 and\n * returns 2*16*16 + 3*16 + 4 = 564.\n * @throw ErrorException if the string is not a legal integer or contains\n *        extraneous characters other than whitespace\n */\nint stringToInteger(const std::string& str, int radix = 10);\n\n/**\n * Converts a string of digits into a long.\n * The function accepts an optional radix (base); for example,\n * stringToLong(\"234\", 16) assumes that the string is in base-16 and\n * returns 2*16*16 + 3*16 + 4 = 564.\n * @throw ErrorException if the string is not a legal long or contains\n *        extraneous characters other than whitespace\n */\nlong stringToLong(const std::string& str, int radix = 10);\n\n/**\n * Converts a string representing a real number into its corresponding\n * value.\n * Equivalent to stringToDouble.\n * @throw ErrorException if the string is not a legal floating-point number or\n * contains extraneous characters other than whitespace\n */\ndouble stringToReal(const std::string& str);\n\n/**\n * Returns a new character in which the given uppercase character has been\n * converted into its lowercase equivalent.\n */\nchar toLowerCase(char ch);\n\n/**\n * Returns a new string in which all uppercase characters have been converted\n * into their lowercase equivalents.\n */\nstd::string toLowerCase(const std::string& str);\n\n/**\n * Modifies the given string in-place such that all uppercase characters have\n * been converted into their lowercase equivalents.\n */\nvoid toLowerCaseInPlace(std::string& str);\n\n/**\n * Returns a new character in which the given lowercase character has been\n * converted into its uppercase equivalent.\n */\nchar toUpperCase(char ch);\n\n/**\n * Returns a new string in which all lowercase characters have been converted\n * into their uppercase equivalents.\n */\nstd::string toUpperCase(const std::string& str);\n\n/**\n * Modifies the given string in-place such that all lowercase characters have\n * been converted into their uppercase equivalents.\n */\nvoid toUpperCaseInPlace(std::string& str);\n\n/**\n * Returns a new string after removing any whitespace characters\n * from the beginning and end of the argument.\n */\nstd::string trim(const std::string& str);\n\n/**\n * Modifies the given string in-place where any whitespace characters\n * from the beginning and end of the argument are removed.\n */\nvoid trimInPlace(std::string& str);\n\n/**\n * Returns a new string after removing any whitespace characters\n * from the end of the argument.\n */\nstd::string trimEnd(const std::string& str);\n\n/**\n * Modifies the given string in-place to remove any whitespace characters\n * from its end.\n */\nvoid trimEndInPlace(std::string& str);\n\n/**\n * Returns a new string after removing any whitespace characters\n * from the beginning of the argument.\n */\nstd::string trimStart(const std::string& str);\n\n/**\n * Modifies the given string in-place to remove removing any whitespace characters\n * from the beginning of it.\n */\nvoid trimStartInPlace(std::string& str);\n\n/**\n * Returns a URL-decoded version of the given string, where any %xx character\n * codes are converted back to the equivalent characters.\n */\nstd::string urlDecode(const std::string& str);\n\n/**\n * Modifies the given string in-place into a URL-decoded version of itself,\n * where any %xx character codes are converted back to the equivalent characters.\n */\nvoid urlDecodeInPlace(std::string& str);\n\n/**\n * Returns a URL-encoded version of the given string, where most non-\n * alphabetic characters are replaced by %xx character codes.\n */\nstd::string urlEncode(const std::string& str);\n\n/**\n * Modifies the given string in-place into a URL-encoded version of itself,\n * where most non- alphabetic characters are replaced by %xx character codes.\n */\nvoid urlEncodeInPlace(std::string& str);\n\n// add to_string overloads for some common types missing from C++ standard\nnamespace std {\n/**\n * String-to-bool conversion function.\n * If str is \"true\", returns the bool value true.\n * If str is \"false\", returns the bool value false.\n * @throw ErrorException if str is any other value than \"true\" or \"false\"\n */\nbool stob(const std::string& str);\n\n/**\n * String-to-char conversion function.\n * Converts a single-character string into its corresponding char value.\n * For example, stringToChar(\"hello\") returns the char 'h'.\n * @throw ErrorException if the given string does not contain exactly 1 character\n */\nchar stoc(const std::string& str);\n\n/**\n * Returns the string \"true\" if b is true, or \"false\" if b is false.\n */\nstd::string to_string(bool b);\n\n/**\n * Returns a single-character string containing the given character.\n * For example, charToString('Q') returns the string \"Q\".\n */\nstd::string to_string(char c);\n\n/**\n * Returns a hexadecimal string for the given pointer, such as \"0x3f0427b\".\n * Returns \"nullptr\" if p is a null pointer.\n */\nstd::string to_string(void* p);\n\n/**\n * Generic to_string function for any type that has an operator <<.\n */\ntemplate <typename T>\nstd::string to_string(const T& value) {\n    std::ostringstream out;\n    out << value;   // if you get an error here, your type might not have a << operator\n    return out.str();\n}\n} // namespace std\n\n#endif // _strlib_h\n"
  },
  {
    "path": "RandomClientTests/ShadowTest/extra/mine.h",
    "content": "#include \"strlib.h\"\n\nstd::string missing(bool);\n"
  },
  {
    "path": "RandomClientTests/ShadowTest/extra/vector.h",
    "content": "#warning \"local vector.h\"\n\n/*\n * File: vector.h\n * --------------\n * This file exports the <code>Vector</code> class, which provides an\n * efficient, safe, convenient replacement for the array type in C++.\n *\n * @version 2019/04/09\n * - renamed private members with underscore naming scheme for consistency\n * @version 2019/02/04\n * - changed internal implementation to wrap std collections\n * @version 2018/09/06\n * - refreshed doc comments for new documentation generation\n * @version 2018/01/07\n * - added front, back, removeFront, removeBack, pop_front, pop_back, push_front\n * @version 2017/11/15\n * - added contains, indexOf, lastIndexOf, removeValue, reverse, shuffle, sort\n * @version 2017/10/18\n * - fix compiler warnings\n * @version 2016/12/09\n * - added iterator version checking support\n * @version 2016/09/24\n * - refactored to use collections.h utility functions\n * @version 2016/08/12\n * - bug fix for constructor based on initializer list\n * @version 2016/08/10\n * - added support for std initializer_list usage, such as {1, 2, 3}\n *   in constructor, addAll, +, +=\n * @version 2016/08/04\n * - fixed operator >> to not throw errors\n * @version 2015/10/13\n * - nulled out pointer fields in destructor after deletion to avoid double-free\n * @version 2015/07/05\n * - using global hashing functions rather than global variables\n * @version 2014/11/13\n * - added comparison operators <, >=, etc.\n * - added template hashCode function\n * @version 2014/10/19\n * - added subList method\n * @version 2014/10/10\n * - removed usage of __foreach macro\n * 2014/07/09\n * - changed checkVectorIndex range checking function into a private member\n *   function to avoid unused-function errors on some newer compilers\n * 2014/04/27\n * - fixed bug in addAll method that was not returning reference properly.\n */\n\n\n#ifndef _vector_h\n#define _vector_h\n\n#include <algorithm>\n#include <initializer_list>\n#include <iostream>\n#include <iterator>\n#include <sstream>\n#include <string>\n#include <vector>\n#include <deque>\n#include <type_traits>\n#include <functional>\n\n#include \"collections.h\"\n#include \"error.h\"\n#include \"hashcode.h\"\n#include \"random.h\"\n\n\n/**\n * This class stores an ordered list of values similar to an array.\n * It supports traditional array selection using square brackets, but\n * also supports inserting and deleting elements.  It is similar in\n * function to the STL <code>vector</code> type, but is simpler both\n * to use and to implement.\n */\ntemplate <typename ValueType>\nclass Vector {\npublic:\n    /**\n     * Initializes a new empty vector.\n     * @bigoh O(1)\n     */\n    Vector() = default;\n\n    /**\n     * Initializes a new vector, creating an array with <code>n</code>\n     * elements, each of which is initialized to <code>value</code>.\n     * If <code>value</code> is missing, the elements are initialized\n     * to the default value for the type.\n     * @bigoh O(N)\n     */\n    explicit Vector(int n, ValueType value = ValueType());\n\n    /**\n     * Uses an initializer list to set up the vector.\n     * @bigoh O(N)\n     */\n    Vector(std::initializer_list<ValueType> list);\n\n    /**\n     * Frees any heap storage allocated by this vector.\n     * @bigoh O(1)\n     */\n    virtual ~Vector() = default;\n\n    /**\n     * Adds a new value to the end of this vector.\n     * @bigoh O(1)\n     */\n    void add(const ValueType& value);\n\n    /**\n     * Adds all elements of the given other vector to this vector.\n     * Returns a reference to this vector.\n     * Identical in behavior to the += operator.\n     * @bigoh O(N)\n     */\n    Vector<ValueType>& addAll(const Vector<ValueType>& v);\n\n    /**\n     * Returns the element at index (size - 1) in this vector (without removing it).\n     * @throw ErrorException if vector is empty\n     * @bigoh O(1)\n     */\n    ValueType& back();\n\n    /**\n     * Returns the element at index (size - 1) in this vector (without removing it).\n     * @throw ErrorException if vector is empty\n     * @bigoh O(1)\n     */\n    const ValueType& back() const;\n\n    /**\n     * Removes all elements from this vector.\n     * @bigoh O(1)\n     */\n    void clear();\n\n    /**\n     * Returns true if the vector contains the given value.\n     * The ValueType must have an == operator to use this method.\n     * @bigoh O(N)\n     */\n    bool contains(const ValueType& value) const;\n\n    /**\n     * Guarantees that the vector's internal array is at least the given length.\n     * If necessary, resizes the array to be the given length or larger.\n     * @bigoh O(N)\n     */\n    void ensureCapacity(int cap);\n\n    /**\n     * Compares two vectors for equality.\n     * Returns <code>true</code> if this vector contains exactly the same\n     * values as the given other vector.\n     * Identical in behavior to the == operator.\n     * @bigoh O(N)\n     */\n    bool equals(const Vector<ValueType>& v) const;\n\n    /**\n     * Returns the element at index 0 in this vector (without removing it).\n     * @throw ErrorExceptoin if vector is empty\n     * @bigoh O(1)\n     */\n    ValueType& front();\n\n    /**\n     * Returns the element at index 0 in this vector (without removing it).\n     * @throw ErrorExceptoin if vector is empty\n     * @bigoh O(1)\n     */\n    const ValueType& front() const;\n\n    /**\n     * Returns the element at the specified index in this vector.\n     * Similar in behavior to the [] operator.\n     * @throw ErrorException if the index is not in the array range\n     * @bigoh O(1)\n     */\n    const ValueType& get(int index) const;\n\n    /**\n     * Returns the index of the first occurrence of the given value.\n     * If the value is not found in the vector, returns -1.\n     * The ValueType must have an == operator to use this method.\n     * @bigoh O(N)\n     */\n    int indexOf(const ValueType& value) const;\n\n    /**\n     * Inserts the element into this vector before the specified index.\n     * All subsequent elements are shifted one position to the right.\n     * @throw ErrorException if the index is not in the array range from 0\n     * up to and including the length of the vector.\n     * @bigoh O(N)\n     */\n    void insert(int index, const ValueType& value);\n\n    /**\n     * Returns <code>true</code> if this vector contains no elements.\n     * @bigoh O(1)\n     */\n    bool isEmpty() const;\n\n    /**\n     * Returns the index of the last occurrence of the given value.\n     * If the value is not found in the vector, returns -1.\n     * The ValueType must have an == operator to use this method.\n     * @bigoh O(N)\n     */\n    int lastIndexOf(const ValueType& value) const;\n\n    /**\n     * Calls the specified function on each element of the vector in\n     * ascending index order.\n     * @bigoh O(N)\n     */\n    void mapAll(std::function<void (const ValueType&)> fn) const;\n\n    /**\n     * Removes and returns the first value of this vector.\n     * Equivalent to removeFront.\n     * @throw ErrorException if the vector is empty\n     * @bigoh O(N)\n     */\n    ValueType pop_front();\n\n    /**\n     * Removes and returns the last value of this vector.\n     * Equivalent to removeBack.\n     * @throw ErrorException if the vector is empty\n     * @bigoh O(1)\n     */\n    ValueType pop_back();\n\n    /**\n     * Adds a new value to the end of this vector.\n     * This method is a synonym of the add method that is provided to\n     * ensure compatibility with the STL <code>vector</code> class.\n     * @bigoh O(1)\n     */\n    void push_back(const ValueType& value);\n\n    /**\n     * Adds a new value to the start of this vector.\n     * This method is equivalent to calling insert(0, value) and is provided to\n     * improve compatibility with the STL <code>vector</code> class.\n     * @bigoh O(N)\n     */\n    void push_front(const ValueType& value);\n\n    /**\n     * Removes the element at the specified index from this vector.\n     * All subsequent elements are shifted one position to the left.\n     * @throw ErrorException if the index is not in the array range\n     * @bigoh O(N)\n     */\n    void remove(int index);\n\n    /**\n     * Removes and returns the element at index 0 in this vector.\n     * @throw ErrorException if the vector is empty\n     * @bigoh O(N)\n     */\n    ValueType removeFront();\n\n    /**\n     * Removes and returns the element at index (size - 1) in this vector.\n     * @throw ErrorException if the vector is empty\n     * @bigoh O(1)\n     */\n    ValueType removeBack();\n\n    /**\n     * Removes the first occurrence of the element value from this vector.\n     * All subsequent elements are shifted one position to the left.\n     * If the vector does not contain the given value, has no effect.\n     * The ValueType must have an == operator to use this method.\n     * @bigoh O(N)\n     */\n    void removeValue(const ValueType& value);\n\n    /**\n     * Reverses the order of the elements in this vector.\n     * For example, if vector stores {1, 3, 4, 9}, changes it to store {9, 4, 3, 1}.\n     * @bigoh O(N)\n     */\n    void reverse();\n\n    /**\n     * Replaces the element at the specified index in this vector with\n     * a new value.  The previous value at that index is overwritten.\n     * Similar in behavior to the [] operator.\n     * @throw ErrorException if the index is not in the array range\n     * @bigoh O(1)\n     */\n    void set(int index, const ValueType& value);\n\n    /**\n     * Returns the number of elements in this vector.\n     * @bigoh O(1)\n     */\n    int size() const;\n\n    /**\n     * Rearranges the order of the elements in this vector into a random order.\n     * @bigoh O(N)\n     */\n    void shuffle();\n\n    /**\n     * Rearranges the order of the elements in this vector into sorted order.\n     * For example, if vector stores {9, 1, 4, 3}, changes it to store {1, 3, 4, 9}.\n     * The ValueType must have an operator < to call this method.\n     * @bigoh O(N log N)\n     */\n    void sort();\n\n    /**\n     * Returns a new vector containing the given subset range of elements\n     * from this vector. The new vector is a deep copy, not linked to this one.\n     * @throw ErrorException if the range (start .. start + length) is not\n     *        within the bounds of this vector, or if length is negative\n     * @bigoh O(N)\n     */\n    Vector<ValueType> subList(int start, int length) const;\n\n    /**\n     * Returns a new vector containing the elements from the start position\n     * to the end of the vector.\n     *\n     * @throw ErrorException if start > size()\n     * @bigoh O(N)\n     */\n    Vector<ValueType> subList(int start) const;\n\n    /**\n     * Converts the vector to a printable string representation\n     * such as \"{10, 20, 30, 40}\".\n     * @bigoh O(N)\n     */\n    std::string toString() const;\n\n    /**\n     * Overloads <code>[]</code> to select elements from this vector.\n     * This extension enables the use of traditional array notation to\n     * get or set individual elements.\n     * @throw ErrorException if the index is not in the array range\n     * @bigoh O(1)\n     */\n    ValueType& operator [](int index);\n\n    /**\n     * Overloads <code>[]</code> to select elements from this vector.\n     * This extension enables the use of traditional array notation to\n     * get or set individual elements.\n     * @throw ErrorException if the index is not in the array range\n     * @bigoh O(1)\n     */\n    const ValueType& operator [](int index) const;\n\n    /**\n     * Concatenates two vectors and returns the result.\n     * @bigoh O(N)\n     */\n    Vector operator +(const Vector& v2) const;\n\n    /**\n     * Produces a vector formed by appending the given element to this vector.\n     * @bigoh O(N)\n     */\n    Vector operator +(const ValueType& elem) const;\n\n    /**\n     * Adds all of the elements from <code>v2</code> to the end of this vector.\n     * @bigoh O(N)\n     */\n    Vector& operator +=(const Vector& v2);\n\n    /**\n     * Adds the single specified value) to the end of the vector.\n     * @bigoh O(1)\n     */\n    Vector& operator +=(const ValueType& value);\n\n\n    /**\n     * Compares two vectors for equality.\n     * The ValueType must have an == operator.\n     * @bigoh O(N)\n     */\n    bool operator ==(const Vector& v2) const;\n\n    /**\n     * Compares two vectors for inequality.\n     * The ValueType must have a != operator.\n     * @bigoh O(N)\n     */\n    bool operator !=(const Vector& v2) const;\n\n    /**\n     * Relational operators to compare two vectors.\n     * Each element is compared pairwise to the corresponding element at the\n     * same index in the other vector; for example, we first check the values\n     * at index 0, then 1, and so on.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     * @bigoh O(N)\n     */\n    bool operator <(const Vector& v2) const;\n\n    /**\n     * Relational operators to compare two vectors.\n     * Each element is compared pairwise to the corresponding element at the\n     * same index in the other vector; for example, we first check the values\n     * at index 0, then 1, and so on.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     * @bigoh O(N)\n     */\n    bool operator <=(const Vector& v2) const;\n\n    /**\n     * Relational operators to compare two vectors.\n     * Each element is compared pairwise to the corresponding element at the\n     * same index in the other vector; for example, we first check the values\n     * at index 0, then 1, and so on.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     * @bigoh O(N)\n     */\n    bool operator >(const Vector& v2) const;\n\n    /**\n     * Relational operators to compare two vectors.\n     * Each element is compared pairwise to the corresponding element at the\n     * same index in the other vector; for example, we first check the values\n     * at index 0, then 1, and so on.\n     * The <, >, <=, >= operators require that the ValueType has a < operator\n     * so that the elements can be compared pairwise.\n     * @bigoh O(N)\n     */\n    bool operator >=(const Vector& v2) const;\n\n    /*\n     * Additional Vector operations\n     * ----------------------------\n     * In addition to the methods listed in this interface, the Vector\n     * class supports the following operations:\n     *\n     *   - Stream I/O using the << and >> operators\n     *   - Deep copying for the copy constructor and assignment operator\n     *   - Iteration using the range-based for statement or STL iterators\n     *\n     * The iteration forms process the Vector in index order.\n     */\n\n    /* Private section */\n\n    /**********************************************************************/\n    /* Note: Everything below this point in the file is logically part    */\n    /* of the implementation and should not be of interest to clients.    */\n    /**********************************************************************/\n\nprivate:\n    /*\n     * Implementation notes: Vector data structure\n     * -------------------------------------------\n     * The elements are stored in a std::vector, the regular C++ library\n     * type representing a sequence of elements. We wrap std::vector because\n     * it has no runtime safety checks, something that's tricky to get used\n     * to when you're first learning to use these types.\n     *\n     * There's an edge case in the C++ libraries where std::vector<bool> doesn't\n     * work as you might think it does. This is widely regarded as a mistake\n     * in the language design and there's been a proposal to fix it for many\n     * years now. In the interim, we get around this by falling back on the\n     * std::deque type in the event that the client wants to make a\n     * Vector<bool>\n     */\n    using ContainerType = typename std::conditional<std::is_same<ValueType, bool>::value,\n                                                    std::deque<bool>,\n                                                    std::vector<ValueType>>::type;\n\n    /* Instance variables */\n    ContainerType _elements;\n    stanfordcpplib::collections::VersionTracker _version;\n\n    /* Private methods */\n\n    /*\n     * Throws an ErrorException if the given index is not within the range of\n     * [min..max] inclusive.\n     * This is a consolidated error handler for all various Vector members that\n     * accept index parameters.\n     * The prefix parameter represents a text string to place at the start of\n     * the error message, generally to help indicate which member threw the error.\n     *\n     * We make prefix a const char* rather than a std::string to avoid having to\n     * construct and then destroy the prefix with each call.\n     */\n    void checkIndex(int index, int min, int max, const char* prefix) const;\n\n    /*\n     * Hidden features\n     * ---------------\n     * The remainder of this file consists of the code required to\n     * support deep copying and iteration.  Including these methods\n     * in the public interface would make that interface more\n     * difficult to understand for the average client.\n     */\n\npublic:\n    /**\n     * Adds an element to the vector passed as the left-hand operatand.\n     * This form makes it easier to initialize vectors in old versions of C++.\n     * @bigoh O(1)\n     */\n    Vector& operator ,(const ValueType& value);\n\n    using iterator = stanfordcpplib::collections::CheckedIterator<typename ContainerType::iterator>;\n    using const_iterator = stanfordcpplib::collections::CheckedIterator<typename ContainerType::const_iterator>;\n\n    iterator begin();\n    iterator end();\n    const_iterator begin() const;\n    const_iterator end() const;\n\n    /* Updates the internal version count. Only our libraries need this, and they only\n     * need it in rare cases where an operation that's semantically mutating but bitwise\n     * non-mutating occurs.\n     */\n    void updateVersion();\n};\n\n/* Implementation section */\n\ntemplate <typename ValueType>\nVector<ValueType>::Vector(int n, ValueType value) {\n    if (n < 0) error(\"Cannot create a Vector with a negative number of elements.\");\n    _elements.assign(n, value);\n}\n\ntemplate <typename ValueType>\nVector<ValueType>::Vector(std::initializer_list<ValueType> list)\n        : _elements(list) {\n}\n\n/*\n * Implementation notes: Vector methods\n * ------------------------------------\n * The basic Vector methods are straightforward and should require\n * no detailed documentation.\n */\ntemplate <typename ValueType>\nvoid Vector<ValueType>::add(const ValueType& value) {\n    insert(size(), value);\n}\n\ntemplate <typename ValueType>\nVector<ValueType>& Vector<ValueType>::addAll(const Vector<ValueType>& v) {\n    for (const ValueType& value : v) {\n        add(value);\n    }\n    return *this;   // BUGFIX 2014/04/27\n}\n\ntemplate <typename ValueType>\nValueType& Vector<ValueType>::back() {\n    return const_cast<ValueType&>(static_cast<const Vector &>(*this).back());\n}\n\ntemplate <typename ValueType>\nconst ValueType& Vector<ValueType>::back() const {\n    if (isEmpty()) {\n        error(\"Vector::back: vector is empty\");\n    }\n    return _elements.back();\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::clear() {\n    _elements.clear();\n    _version.update();\n}\n\ntemplate <typename ValueType>\nbool Vector<ValueType>::contains(const ValueType& value) const {\n    return indexOf(value) >= 0;\n}\n\ntemplate <typename ValueType>\nbool Vector<ValueType>::equals(const Vector<ValueType>& v) const {\n    return stanfordcpplib::collections::equals(*this, v);\n}\n\ntemplate <typename ValueType>\nValueType& Vector<ValueType>::front() {\n    return const_cast<ValueType&>(static_cast<const Vector &>(*this).front());\n}\n\ntemplate <typename ValueType>\nconst ValueType& Vector<ValueType>::front() const {\n    if (isEmpty()) {\n        error(\"Vector::front: vector is empty\");\n    }\n    return _elements.front();\n}\n\ntemplate <typename ValueType>\nconst ValueType& Vector<ValueType>::get(int index) const {\n    checkIndex(index, 0, size()-1, \"get\");\n    return _elements[index];\n}\n\ntemplate <typename ValueType>\nint Vector<ValueType>::indexOf(const ValueType& value) const {\n    auto result = std::find(_elements.begin(), _elements.end(), value);\n    if (result == _elements.end()) return -1;\n    return result - _elements.begin();\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::insert(int index, const ValueType& value) {\n    checkIndex(index, 0, size(), \"insert\");\n    _elements.insert(_elements.begin() + index, value);\n    _version.update();\n}\n\ntemplate <typename ValueType>\nbool Vector<ValueType>::isEmpty() const {\n    return _elements.empty();\n}\n\ntemplate <typename ValueType>\nint Vector<ValueType>::lastIndexOf(const ValueType& value) const {\n    auto result = std::find(_elements.rbegin(), _elements.rend(), value);\n    if (result == _elements.rend()) return -1;\n\n    /* These iterators are going in the reverse direction, and so the index they give is the number of\n     * steps from the end of the range, not from the beginning. Reverse this before returning the\n     * value.\n     */\n    return (size() - 1) - (result - _elements.rbegin());\n}\n\n/*\n * Implementation notes: mapAll\n * ----------------------------\n * The various versions of the mapAll function apply the function or\n * function object to each element in ascending index order.\n */\ntemplate <typename ValueType>\nvoid Vector<ValueType>::mapAll(std::function<void (const ValueType&)> fn) const {\n    for (const auto& elem: _elements) {\n        fn(elem);\n    }\n}\n\ntemplate <typename ValueType>\nValueType Vector<ValueType>::pop_back() {\n    if (isEmpty()) {\n        error(\"Vector::pop_back: vector is empty\");\n    }\n    auto result = _elements.back();\n    _elements.pop_back();\n    _version.update();\n    return result;\n}\n\ntemplate <typename ValueType>\nValueType Vector<ValueType>::pop_front() {\n    if (isEmpty()) {\n        error(\"Vector::pop_front: vector is empty\");\n    }\n    auto result = _elements.front();\n    _elements.erase(_elements.begin());\n    _version.update();\n    return result;\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::push_back(const ValueType& value) {\n    insert(size(), value);\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::push_front(const ValueType& value) {\n    insert(0, value);\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::remove(int index) {\n    checkIndex(index, 0, size() - 1, \"remove\");\n    _elements.erase(_elements.begin() + index);\n    _version.update();\n}\n\ntemplate <typename ValueType>\nValueType Vector<ValueType>::removeBack() {\n    return pop_back();\n}\n\ntemplate <typename ValueType>\nValueType Vector<ValueType>::removeFront() {\n    return pop_front();\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::removeValue(const ValueType& value) {\n    int index = indexOf(value);\n    if (index >= 0) {\n        remove(index);\n    }\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::reverse() {\n    std::reverse(begin(), end());\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::set(int index, const ValueType& value) {\n    checkIndex(index, 0, size()-1, \"set\");\n    _elements[index] = value;\n}\n\ntemplate <typename ValueType>\nint Vector<ValueType>::size() const {\n    return _elements.size();\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::shuffle() {\n    for (int i = 0; i < size() - 1; i++) {\n        std::swap(_elements[i], _elements[randomInteger(i, size() - 1)]);\n    }\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::sort() {\n    std::sort(begin(), end());\n}\n\ntemplate <typename ValueType>\nVector<ValueType> Vector<ValueType>::subList(int start, int length) const {\n    checkIndex(start, 0, size(), \"subList\");\n    checkIndex(start + length, 0, size(), \"subList\");\n    if (length < 0) {\n        error(\"Vector::subList: length cannot be negative\");\n    }\n    Vector<ValueType> result;\n    for (int i = start; i < start + length; i++) {\n        result.add(get(i));\n    }\n    return result;\n}\n\ntemplate <typename ValueType>\nVector<ValueType> Vector<ValueType>::subList(int start) const {\n    return subList(start, size() - start);\n}\n\ntemplate <typename ValueType>\nstd::string Vector<ValueType>::toString() const {\n    std::ostringstream os;\n    os << *this;\n    return os.str();\n}\n\n/*\n * Implementation notes: Vector selection\n * --------------------------------------\n * The following code implements traditional array selection using\n * square brackets for the index.\n */\ntemplate <typename ValueType>\nValueType& Vector<ValueType>::operator [](int index) {\n    return const_cast<ValueType&>(static_cast<const Vector &>(*this)[index]);\n}\ntemplate <typename ValueType>\nconst ValueType& Vector<ValueType>::operator [](int index) const {\n    checkIndex(index, 0, size()-1, \"operator []\");\n    return _elements[index];\n}\n\ntemplate <typename ValueType>\nVector<ValueType> Vector<ValueType>::operator +(const Vector& v2) const {\n    Vector<ValueType> result = *this;\n    return result.addAll(v2);\n}\n\ntemplate <typename ValueType>\nVector<ValueType> Vector<ValueType>::operator +(const ValueType& elem) const {\n    Vector<ValueType> result = *this;\n    return result += elem;\n}\n\ntemplate <typename ValueType>\nVector<ValueType>& Vector<ValueType>::operator +=(const Vector& v2) {\n    return addAll(v2);\n}\n\ntemplate <typename ValueType>\nVector<ValueType>& Vector<ValueType>::operator +=(const ValueType& value) {\n    add(value);\n    return *this;\n}\n\ntemplate <typename ValueType>\nbool Vector<ValueType>::operator ==(const Vector& v2) const {\n    return equals(v2);\n}\n\ntemplate <typename ValueType>\nbool Vector<ValueType>::operator !=(const Vector& v2) const {\n    return !equals(v2);\n}\n\ntemplate <typename ValueType>\nbool Vector<ValueType>::operator <(const Vector& v2) const {\n    return stanfordcpplib::collections::compare(*this, v2) < 0;\n}\n\ntemplate <typename ValueType>\nbool Vector<ValueType>::operator <=(const Vector& v2) const {\n    return stanfordcpplib::collections::compare(*this, v2) <= 0;\n}\n\ntemplate <typename ValueType>\nbool Vector<ValueType>::operator >(const Vector& v2) const {\n    return stanfordcpplib::collections::compare(*this, v2) > 0;\n}\n\ntemplate <typename ValueType>\nbool Vector<ValueType>::operator >=(const Vector& v2) const {\n    return stanfordcpplib::collections::compare(*this, v2) >= 0;\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::checkIndex(int index, int min, int max, const char* prefix) const {\n    if (index < min || index > max) {\n        std::ostringstream out;\n        out << \"Vector::\" << prefix << \": index of \" << index\n            << \" is outside of valid range \";\n        if (isEmpty()) {\n            out << \" (empty vector)\";\n        } else {\n            out << \"[\";\n            if (min < max) {\n                out << min << \"..\" << max;\n            } else if (min == max) {\n                out << min;\n            } // else min > max, no range, empty vector\n            out << \"]\";\n        }\n        error(out.str());\n    }\n}\n\n/*\n * Implementation notes: The , operator\n * ------------------------------------\n * The comma operator works adding the right operand to the vector and\n * then returning the vector by reference so that it is set for the next\n * value in the chain.\n */\ntemplate <typename ValueType>\nVector<ValueType>& Vector<ValueType>::operator ,(const ValueType& value) {\n    add(value);\n    return *this;\n}\n\n/*\n * Implementation notes: << and >>\n * -------------------------------\n * The insertion and extraction operators use the template facilities in\n * strlib.h to read and write generic values in a way that treats strings\n * specially.\n */\ntemplate <typename ValueType>\nstd::ostream& operator <<(std::ostream& os, const Vector<ValueType>& vec) {\n    return stanfordcpplib::collections::writeCollection(os, vec);\n}\n\ntemplate <typename ValueType>\nstd::istream& operator >>(std::istream& is, Vector<ValueType>& vec) {\n    ValueType element;\n    return stanfordcpplib::collections::readCollection(is, vec, element, /* descriptor */ \"Vector::operator >>\");\n}\n\n\n/*\n * Implementation notes: Iterator support\n * --------------------------------------\n * We used the checked iterator type, which requires us to provide information\n * about the full range of values available.\n */\ntemplate <typename ValueType>\ntypename Vector<ValueType>::iterator Vector<ValueType>::begin() {\n    return { &_version, _elements.begin(), _elements };\n}\ntemplate <typename ValueType>\ntypename Vector<ValueType>::const_iterator Vector<ValueType>::begin() const {\n    return { &_version, _elements.begin(), _elements };\n}\ntemplate <typename ValueType>\ntypename Vector<ValueType>::iterator Vector<ValueType>::end() {\n    return { &_version, _elements.end(), _elements };\n}\ntemplate <typename ValueType>\ntypename Vector<ValueType>::const_iterator Vector<ValueType>::end() const {\n    return { &_version, _elements.end(), _elements };\n}\n\ntemplate <typename ValueType>\nvoid Vector<ValueType>::updateVersion() {\n    _version.update();\n}\n\n/*\n * Template hash function for vectors.\n * Requires the element type in the Vector to have a hashCode function.\n */\ntemplate <typename ValueType>\nint hashCode(const Vector<ValueType>& vec) {\n    return stanfordcpplib::collections::hashCodeCollection(vec);\n}\n\n/*\n * Function: randomElement\n * Usage: element = randomElement(v);\n * ----------------------------------\n * Returns a randomly chosen element of the given vector.\n * Throws an error if the vector is empty.\n */\ntemplate <typename T>\nconst T& randomElement(const Vector<T>& vec) {\n    return stanfordcpplib::collections::randomElementIndexed(vec);\n}\n\n/*\n * Randomly rearranges the elements of the given vector.\n */\ntemplate <typename T>\nvoid shuffle(Vector<T>& v) {\n    v.shuffle();\n}\n\n#endif // _vector_h\n"
  },
  {
    "path": "RandomClientTests/ShadowTest/main.cpp",
    "content": "#include <iostream>\n#include \"console.h\"\n#include \"strlib.h\"\n#include \"strlib.h\"\n#include \"vector.h\"\n#include \"extra/mine.h\"\n#include \"again.h\"\n\nusing namespace std;\n\nint main()\n{\n    Vector<int> v = {1, 2, 3, 4, 5};\n    cout << \"Hello, world!\" << endl;\n    cout << boolToString(false) << endl;\n    cout << boolToString(1) << endl;\n    cout << jzelenski(true) << endl;\n    cout << missing(1) << endl;\n\n    v.shuffle();\n    cout << v << endl;\n    cout << \"All done, exiting\" << endl;\n    return 0;\n}\n\n"
  },
  {
    "path": "RandomClientTests/ShadowTest/strlib.cpp",
    "content": "/*\n * File: strlib.cpp\n * ----------------\n * This file implements the strlib.h interface.\n *\n * @version 2018/11/14\n * - added std::to_string for bool, char, pointer, and generic template type T\n * - bug fix for pointerToString (was putting two \"0x\" prefixes)\n * @version 2018/09/02\n * - added padLeft, padRight\n * @version 2017/10/24\n * - print nullptr instead of null in uppercase\n * @version 2016/11/07\n * - bug fix: urlDecode throws error on invalid encodings (courtesy GitHub @scinart)\n * @version 2016/10/30\n * - alphabetized functions\n * - added overloads that take type char instead of string:\n *   stringContains, stringIndexOf, stringJoin, stringLastIndexOf, stringReplace,\n *   stringSplit, toLowerCase, toUpperCase\n * @version 2016/10/13\n * - modified writeQuotedString to return ostream\n * @version 2016/08/03\n * - modified readQuotedString not to throw error() on parse failures\n *   (needed to support idiomatic silent-failing >> operators)\n * @version 2015/11/07\n * - fixed bugs in urlDecode (wasn't decoding % sequences properly, oops)\n * @version 2015/10/26\n * - added charToInteger/integerToChar functions\n * @version 2015/06/19\n * - slight bug fix to make stringToInteger functions compile with int radix\n * @version 2015/05/22\n * - slight bug fix in stringToBool function\n * @version 2014/10/31\n * - fixed infinite loop bug in stringReplace function\n * @version 2014/10/19\n * - alphabetized functions\n * - added several 'inPlace' variants of existing functions that return strings\n * @version 2014/10/08\n * - removed 'using namespace' statement\n */\n\n#include \"strlib.h\"\n#include <cctype>\n#include <iomanip>\n#include <iostream>\n#include <sstream>\n\n#include \"error.h\"\n#include \"vector.h\"\n\n/* Function prototypes */\nstd::string jzelenski(bool b) {\n    return (b ? \"JULIE\" : \"Zelenski\");\n}\n\nstd::string missing(bool b) {\n    return (b ? \"JULIE\" : \"Zelenski\");\n}\n\nstd::string boolToString(bool b) {\n    return (b ? \"TRUE\" : \"FALSE\");\n}\n\nstd::string boolToString(int b) {\n    return (b ? \"True\" : \"False\");\n}\n\nint charToInteger(char c) {\n    if (c < '0' || c > '9') {\n        std::ostringstream out;\n        out << \"charToInteger: character is not numeric: '\" << c\n            << \"' (ASCII value \" << (int) c << \")\";\n        error(out.str());\n    }\n    return c - '0';\n}\n\nstd::string charToString(char c) {\n    std::string s;\n    s += c;\n    return s;\n}\n\nstd::string doubleToString(double d) {\n    return realToString(d);\n}\n\nbool endsWith(const std::string& str, char suffix) {\n    return str.length() > 0 && str[str.length() - 1] == suffix;\n}\n\nbool endsWith(const std::string& str, const std::string& suffix) {\n    int nChars = suffix.length();\n    int start = str.length() - nChars;\n    if (start < 0) return false;\n    for (int i = 0; i < nChars; i++) {\n        if (str[start + i] != suffix[i]) return false;\n    }\n    return true;\n}\n\n/*\n * Implementation notes: equalsIgnoreCase\n * --------------------------------------\n * This implementation uses a for loop to cycle through the characters in\n * each string.  Converting each string to uppercase and then comparing\n * the results makes for a shorter but less efficient implementation.\n */\nbool equalsIgnoreCase(const std::string& s1, const std::string& s2) {\n    if (s1.length() != s2.length()) return false;\n    int nChars = s1.length();\n    for (int i = 0; i < nChars; i++) {\n        if (tolower(s1[i]) != tolower(s2[i])) return false;\n    }\n    return true;\n}\n\nstd::string htmlDecode(const std::string& s) {\n    std::string result = s;\n    stringReplaceInPlace(result, \"&lt;\", \"<\");\n    stringReplaceInPlace(result, \"&gt;\", \">\");\n    stringReplaceInPlace(result, \"&quot;\", \"\\\"\");\n    stringReplaceInPlace(result, \"&amp;\", \"&\");\n    return result;\n}\n\nstd::string htmlEncode(const std::string& s) {\n    std::string result = s;\n    stringReplaceInPlace(result, \"&\", \"&amp;\");\n    stringReplaceInPlace(result, \"<\", \"&lt;\");\n    stringReplaceInPlace(result, \">\", \"&gt;\");\n    stringReplaceInPlace(result, \"\\\"\", \"&quot;\");\n    return result;\n}\n\nchar integerToChar(int n) {\n    if (n < 0 || n > 9) {\n        std::ostringstream out;\n        out << \"integerToChar: number must be between 0-9: \" << n;\n        error(out.str());\n    }\n    return (char) (n + '0');\n}\n\n/*\n * Implementation notes: numeric conversion\n * ----------------------------------------\n * These functions use the <sstream> library to perform the conversion.\n */\nstd::string integerToString(int n, int radix) {\n    if (radix <= 0) {\n        error(\"integerToString: Illegal radix: \" + std::to_string(radix));\n    }\n    std::ostringstream stream;\n    if (radix != 10) {\n        stream << std::setbase(radix);\n    }\n    stream << n;\n    return stream.str();\n}\n\nstd::string longToString(long n, int radix) {\n    if (radix <= 0) {\n        error(\"longToString: Illegal radix: \" + std::to_string(radix));\n    }\n    std::ostringstream stream;\n    if (radix != 10) {\n        stream << std::setbase(radix);\n    }\n    stream << n;\n    return stream.str();\n}\n\nstd::string padLeft(const std::string& s, int length, char fill) {\n    if ((int) s.length() >= length) {\n        return s;\n    } else {\n        std::ostringstream out;\n        for (int i = 0, count = length - (int) s.length(); i < count; i++) {\n            out << fill;\n        }\n        out << s;\n        return out.str();\n    }\n}\n\nstd::string padRight(const std::string& s, int length, char fill) {\n    if ((int) s.length() >= length) {\n        return s;\n    } else {\n        std::ostringstream out;\n        out << s;\n        for (int i = 0, count = length - (int) s.length(); i < count; i++) {\n            out << fill;\n        }\n        return out.str();\n    }\n}\n\nstd::string pointerToString(void* p) {\n    if (p) {\n        std::ostringstream stream;\n        stream << std::hex;\n        stream << p;\n        return stream.str();\n    } else {\n        return \"nullptr\";\n    }\n}\n\nstd::string realToString(double d) {\n    std::ostringstream stream;\n    stream << std::uppercase << d;\n    return stream.str();\n}\n\nbool startsWith(const std::string& str, char prefix) {\n    return str.length() > 0 && str[0] == prefix;\n}\n\nbool startsWith(const std::string& str, const std::string& prefix) {\n    if (str.length() < prefix.length()) return false;\n    int nChars = prefix.length();\n    for (int i = 0; i < nChars; i++) {\n        if (str[i] != prefix[i]) return false;\n    }\n    return true;\n}\n\nbool stringIsBool(const std::string& str) {\n    return str == \"true\" || str == \"false\";\n}\n\nbool stringIsDouble(const std::string& str) {\n    return stringIsReal(str);\n}\n\nbool stringIsInteger(const std::string& str, int radix) {\n    if (radix <= 0) {\n        error(\"stringIsInteger: Illegal radix: \" + std::to_string(radix));\n    }\n    std::istringstream stream(trim(str));\n    stream >> std::setbase(radix);\n    int value;\n    stream >> value;\n    return !(stream.fail() || !stream.eof());\n}\n\nbool stringIsLong(const std::string& str, int radix) {\n    if (radix <= 0) {\n        error(\"stringIsLong: Illegal radix: \" + std::to_string(radix));\n    }\n    std::istringstream stream(trim(str));\n    stream >> std::setbase(radix);\n    long value;\n    stream >> value;\n    return !(stream.fail() || !stream.eof());\n}\n\nbool stringIsReal(const std::string& str) {\n    std::istringstream stream(trim(str));\n    double value;\n    stream >> value;\n    return !(stream.fail() || !stream.eof());\n}\n\nbool stringContains(const std::string& s, char ch) {\n    return s.find(ch) != std::string::npos;\n}\n\nbool stringContains(const std::string& s, const std::string& substring) {\n    return s.find(substring) != std::string::npos;\n}\n\nint stringIndexOf(const std::string& s, char ch, int startIndex) {\n    size_t index = s.find(ch, (size_t) startIndex);\n    if (index == std::string::npos) {\n        return -1;\n    } else {\n        return index;\n    }\n}\n\nint stringIndexOf(const std::string& s, const std::string& substring, int startIndex) {\n    size_t index = s.find(substring, (size_t) startIndex);\n    if (index == std::string::npos) {\n        return -1;\n    } else {\n        return index;\n    }\n}\n\nstd::string stringJoin(const Vector<std::string>& v, char delimiter) {\n    std::string delim = charToString(delimiter);\n    return stringJoin(v, delim);\n}\n\nstd::string stringJoin(const Vector<std::string>& v, const std::string& delimiter) {\n    if (v.isEmpty()) {\n        return \"\";\n    } else {\n        std::ostringstream out;\n        out << v[0];\n        for (int i = 1; i < (int) v.size(); i++) {\n            out << delimiter;\n            out << v[i];\n        }\n        return out.str();\n    }\n}\n\nint stringLastIndexOf(const std::string& s, char ch, int startIndex) {\n    size_t index = s.rfind(ch, (size_t) startIndex);\n    if (index == std::string::npos) {\n        return -1;\n    } else {\n        return index;\n    }\n}\n\nint stringLastIndexOf(const std::string& s, const std::string& substring, int startIndex) {\n    size_t index = s.rfind(substring, (size_t) startIndex);\n    if (index == std::string::npos) {\n        return -1;\n    } else {\n        return index;\n    }\n}\n\nstd::string stringReplace(const std::string& str, char old, char replacement, int limit) {\n    std::string str2 = str;\n    stringReplaceInPlace(str2, old, replacement, limit);\n    return str2;\n}\n\nstd::string stringReplace(const std::string& str, const std::string& old, const std::string& replacement, int limit) {\n    std::string str2 = str;\n    stringReplaceInPlace(str2, old, replacement, limit);\n    return str2;\n}\n\nint stringReplaceInPlace(std::string& str, char old, char replacement, int limit) {\n    int count = 0;\n    for (size_t i = 0, len = str.length(); i < len; i++) {\n        if (str[i] == old) {\n            str[i] = replacement;\n            count++;\n            if (limit > 0 && count >= limit) {\n                break;\n            }\n        }\n    }\n    return count;\n}\n\nint stringReplaceInPlace(std::string& str, const std::string& old, const std::string& replacement, int limit) {\n    int count = 0;\n    size_t startIndex = 0;\n    size_t rlen = replacement.length();\n    while (limit <= 0 || count < limit) {\n        size_t index = str.find(old, startIndex);\n        if (index == std::string::npos) {\n            break;\n        }\n        str.replace(index, old.length(), replacement);\n        startIndex = index + rlen;\n        count++;\n    }\n    return count;\n}\n\nVector<std::string> stringSplit(const std::string& str, char delimiter, int limit) {\n    std::string delim = charToString(delimiter);\n    return stringSplit(str, delim, limit);\n}\n\nVector<std::string> stringSplit(const std::string& str, const std::string& delimiter, int limit) {\n    std::string str2 = str;\n    Vector<std::string> result;\n    int count = 0;\n    size_t index = 0;\n    while (limit < 0 || count < limit) {\n        index = str2.find(delimiter);\n        if (index == std::string::npos) {\n            break;\n        }\n        result.add(str2.substr(0, index));\n        str2.erase(str2.begin(), str2.begin() + index + delimiter.length());\n        count++;\n    }\n    if ((int) str2.length() > 0) {\n        result.add(str2);\n    }\n\n    return result;\n}\n\nbool stringToBool(const std::string& str) {\n    if (str == \"true\" || str == \"1\") {\n        return true;\n    } else if (str == \"false\" || str == \"0\") {\n        return false;\n    }\n    std::istringstream stream(trim(str));\n    bool value;\n    stream >> std::boolalpha >> value;\n    if (stream.fail() || !stream.eof()) {\n        error(\"stringToBool: Illegal bool format (\" + str + \")\");\n    }\n    return value;\n}\n\nchar stringToChar(const std::string& str) {\n    std::string str2 = trim(str);\n    if ((int) str2.length() != 1) {\n        error(\"stringToChar: string must contain exactly 1 non-whitespace character\");\n    }\n    return str2[0];\n}\n\ndouble stringToDouble(const std::string& str) {\n    return stringToReal(str);\n}\n\nint stringToInteger(const std::string& str, int radix) {\n    if (radix <= 0) {\n        error(\"stringToInteger: Illegal radix: \" + std::to_string(radix));\n    }\n    std::istringstream stream(trim(str));\n    stream >> std::setbase(radix);\n    int value;\n    stream >> value;\n    if (stream.fail() || !stream.eof()) {\n        error(\"stringToInteger: Illegal integer format: \\\"\" + str + \"\\\"\");\n    }\n    return value;\n}\n\nlong stringToLong(const std::string& str, int radix) {\n    if (radix <= 0) {\n        error(\"stringToLong: Illegal radix: \" + std::to_string(radix));\n    }\n    std::istringstream stream(trim(str));\n    stream >> std::setbase(radix);\n    long value;\n    stream >> value;\n    if (stream.fail() || !stream.eof()) {\n        error(\"stringToLong: Illegal long format \\\"\" + str + \"\\\"\");\n    }\n    return value;\n}\n\ndouble stringToReal(const std::string& str) {\n    std::istringstream stream(trim(str));\n    double value;\n    stream >> value;\n    if (stream.fail() || !stream.eof()) {\n        error(\"stringToReal: Illegal floating-point format (\" + str + \")\");\n    }\n    return value;\n}\n\nchar toLowerCase(char ch) {\n    return (char) tolower(ch);\n}\n\nstd::string toLowerCase(const std::string& str) {\n    std::string str2 = str;\n    toLowerCaseInPlace(str2);\n    return str2;\n}\n\nvoid toLowerCaseInPlace(std::string& str) {\n    int nChars = str.length();\n    for (int i = 0; i < nChars; i++) {\n        str[i] = tolower(str[i]);\n    }\n}\n\nchar toUpperCase(char ch) {\n    return (char) toupper(ch);\n}\n\nstd::string toUpperCase(const std::string& str) {\n    std::string str2 = str;\n    toUpperCaseInPlace(str2);\n    return str2;\n}\n\nvoid toUpperCaseInPlace(std::string& str) {\n    int nChars = str.length();\n    for (int i = 0; i < nChars; i++) {\n        str[i] = toupper(str[i]);\n    }\n}\n\nstd::string trim(const std::string& str) {\n    std::string str2 = str;\n    trimInPlace(str2);\n    return str2;\n}\n\nvoid trimInPlace(std::string& str) {\n    trimEndInPlace(str);\n    trimStartInPlace(str);\n}\n\nstd::string trimEnd(const std::string& str) {\n    std::string str2 = str;\n    trimEndInPlace(str2);\n    return str2;\n}\n\nvoid trimEndInPlace(std::string& str) {\n    int end = (int) str.length();\n    int finish = end;\n    while (finish > 0 && isspace(str[finish - 1])) {\n        finish--;\n    }\n    if (finish < end) {\n        str.erase(finish, end - finish);\n    }\n}\n\nstd::string trimStart(const std::string& str) {\n    std::string str2 = str;\n    trimStartInPlace(str2);\n    return str2;\n}\n\nvoid trimStartInPlace(std::string& str) {\n    int start = 0;\n    int finish = (int) str.length() - 1;\n    while (start <= finish && isspace(str[start])) {\n        start++;\n    }\n    if (start > 0) {\n        str.erase(0, start);\n    }\n}\n\nstd::string urlDecode(const std::string& str) {\n    std::ostringstream unescaped;\n    for (std::string::const_iterator i = str.begin(), n = str.end(); i != n; ++i) {\n        std::string::value_type c = (*i);\n        if (isalnum(c) || c == '-' || c == '_' || c == '.' || c == '~' || c == '*') {\n            unescaped << c;\n        } else if (c == '+')  {\n            unescaped << ' ';\n        } else if (c == '%') {\n            // throw error if string is invalid and doesn't have 2 char after,\n            // or if it has non-hex chars here (courtesy GitHub @scinart)\n            if (i + 2 >= n || !isxdigit(*(i + 1)) || !isxdigit(*(i + 2))) {\n                error(\"urlDecode: Invalid percent-encoding\");\n            }\n\n            // decode a URL-encoded ASCII character, e.g. %40 => &\n            char ch1 = *(i + 1);\n            char ch2 = *(i + 2);\n            int hex1 = (isdigit(ch1) ? (ch1 - '0') : (toupper(ch1) - 'A' + 10));\n            int hex2 = (isdigit(ch2) ? (ch2 - '0') : (toupper(ch2) - 'A' + 10));\n            int decodedChar = (hex1 << 4) + hex2;\n            unescaped << (char) decodedChar;\n            i += 2;\n        } else {\n            std::ostringstream msg;\n            msg << \"urlDecode: Unexpected character in string: \"\n                << (int) c << \" (\" << c << \")\";\n            error(msg.str());\n        }\n    }\n\n    return unescaped.str();\n}\n\nvoid urlDecodeInPlace(std::string& str) {\n    str = urlDecode(str);   // no real efficiency gain here\n}\n\nstd::string urlEncode(const std::string& str) {\n    std::ostringstream escaped;\n    escaped.fill('0');\n    escaped << std::hex << std::uppercase;\n\n    for (std::string::const_iterator i = str.begin(), n = str.end(); i != n; ++i) {\n        std::string::value_type c = (*i);\n        if (isalnum(c) || c == '-' || c == '_' || c == '.' || c == '~' || c == '*') {\n            escaped << c;\n        } else if (c == ' ')  {\n            escaped << '+';\n        } else {\n            escaped << '%' << std::setw(2) << ((int) c) << std::setw(0);\n        }\n    }\n\n    return escaped.str();\n}\n\nvoid urlEncodeInPlace(std::string& str) {\n    str = urlEncode(str);   // no real efficiency gain here\n}\n\nnamespace std {\nbool stob(const std::string& str) {\n    return ::stringToBool(str);\n}\n\nchar stoc(const std::string& str) {\n    return ::stringToChar(str);\n}\n\nstd::string to_string(bool b) {\n    return ::boolToString(b);\n}\n\nstd::string to_string(char c) {\n    return ::charToString(c);\n}\n\nstd::string to_string(void* p) {\n    return ::pointerToString(p);\n}\n} // namespace std\n"
  },
  {
    "path": "RandomClientTests/ShadowTest/strlib.h",
    "content": "#warning \"local strlib.h\"\n/*\n * File: strlib.h\n * --------------\n * This file exports several useful string functions that are not\n * included in the C++ string library.\n *\n * @version 2018/11/14\n * - added std::to_string for bool, char, pointer, and generic template type T\n * @version 2018/09/25\n * - added doc comments for new documentation generation\n * @version 2018/09/02\n * - added padLeft, padRight\n * @version 2016/11/09\n * - added boolalpha to writeGenericValue (improves bool printing in\n *   collection toString output)\n * @version 2016/10/30\n * - added overloads that take type char instead of string:\n *   stringContains, stringIndexOf, stringJoin, stringLastIndexOf, stringReplace,\n *   stringSplit, toLowerCase, toUpperCase\n * @version 2016/10/26\n * - bug fix for stringLastIndexOf default index arg\n * @version 2016/10/13\n * - modified writeGenericValue, writeQuotedString to return ostream\n * @version 2016/08/03\n * - modified readGenericValue not to throw error() on parse failures\n *   (needed to support idiomatic silent-failing >> operators)\n * @version 2015/10/26\n * - added charToInteger/integerToChar functions\n * @version 2015/08/02\n * - added htmlEncode/Decode functions (not 100% perfect but works for common cases)\n * @version 2014/10/19\n * - alphabetized functions\n * - added several 'inPlace' variants of existing functions that return strings\n * @version 2014/10/08\n * - removed dependency on 'using namespace' statement\n */\n\n\n#ifndef _strlib_h\n#define _strlib_h\n\n#include <iostream>\n#include <sstream>\n#include <string>\n\n#include \"vector.h\"\n\n\nstd::string jzelenski(bool b);\n\n\n/**\n * Returns the string \"true\" if b is true, or \"false\" if b is false.\n */\nstd::string boolToString(bool b);\n\n/**\n * Returns the string \"true\" if b is nonzero, or \"false\" if b is 0.\n */\nstd::string boolToString(int b);\n\n/**\n * Returns an integer equivalent of the given numeric character.\n * For example, charToInteger('3') returns the int 3.\n * If the character is not '0' through '9', throws an error.\n */\nint charToInteger(char c);\n\n/**\n * Returns a single-character string containing the given character.\n * For example, charToString('Q') returns the string \"Q\".\n */\nstd::string charToString(char c);\n\n/**\n * Converts a floating-point number into the corresponding string form.\n * For example, calling <code>doubleToString(23.45)</code> returns\n * the string <code>\"23.45\"</code>.\n * Equivalent to realToString.\n */\nstd::string doubleToString(double d);\n\n/**\n * Returns <code>true</code> if the string <code>str</code> ends with\n * the specified suffix.\n */\nbool endsWith(const std::string& str, const std::string& suffix);\n\n/**\n * Returns <code>true</code> if the string <code>str</code> ends with\n * the specified character.\n */\nbool endsWith(const std::string& str, char suffix);\n\n/**\n * Returns <code>true</code> if <code>s1</code> and <code>s2</code> are\n * equal discounting differences in case.\n */\nbool equalsIgnoreCase(const std::string& s1, const std::string& s2);\n\n/**\n * Converts the given string from an HTML-encoded version to its decoded\n * equivalent; the opposite of htmlEncode. Any escaped HTML character entities\n * will be replaced by their unescaped equivalents.\n * For example, <code>htmlEncode(\"&lt;p class=&quot;abc&quot;&gt;I love you &amp; me&lt;/p&gt;\")\n * returns \"<p class=\\\"abc\\\">I love you & me</p>\".\n */\nstd::string htmlDecode(const std::string& s);\n\n/**\n * Converts the given string into an HTML-encoded equivalent version, with\n * any relevant HTML character entities replaced by escaped equivalents.\n * For example, <code>htmlEncode(\"<p class=\\\"abc\\\">I love you & me</p>\") returns\n * \"&lt;p class=&quot;abc&quot;&gt;I love you &amp; me&lt;/p&gt;\".\n */\nstd::string htmlEncode(const std::string& s);\n\n/**\n * Converts an integer into the corresponding numeric character.\n * For example, calling <code>integerToChar(3)</code> returns\n * the char <code>'3'</code>.\n * @throw ErrorException if the given integer is not a single-digit number from 0-9 inclusive\n */\nchar integerToChar(int n);\n\n/**\n * Converts an integer into the corresponding string of digits.\n * For example, calling <code>integerToString(123)</code> returns\n * the string <code>\"123\"</code>.\n */\nstd::string integerToString(int n, int radix = 10);\n\n/**\n * Converts an integer into the corresponding string of digits.\n * For example, calling <code>longToString(123)</code> returns\n * the string <code>\"123\"</code>.\n */\nstd::string longToString(long n, int radix = 10);\n\n/**\n * Inserts spaces at the start of the given string until it is at least\n * the given length.\n * You can optionally pass a fill character (other than space) as a third parameter.\n *\n * Note that if you are printing strings and want your output to line up\n * at a given number of characters, you may be better served using the built-in\n * C++ ostream manipulators such as setw(int), left, and right, as defined in\n * the iomanip library.\n */\nstd::string padLeft(const std::string& s, int length, char fill = ' ');\n\n/**\n * Inserts spaces at the end of the given string until it is at least\n * the given length.\n * You can optionally pass a fill character (other than space) as a third parameter.\n *\n * Note that if you are printing strings and want your output to line up\n * at a given number of characters, you may be better served using the built-in\n * C++ ostream manipulators such as setw(int), left, and right, as defined in\n * the iomanip library.\n */\nstd::string padRight(const std::string& s, int length);\n\n/**\n * Returns a hexadecimal string for the given pointer, such as \"0x3f0427b\".\n * Returns \"nullptr\" if p is a null pointer.\n */\nstd::string pointerToString(void* p);\n\n/**\n * Converts a floating-point number into the corresponding string form.\n * For example, calling <code>realToString(23.45)</code> returns\n * the string <code>\"23.45\"</code>.\n */\nstd::string realToString(double d);\n\n/**\n * Returns <code>true</code> if the string <code>str</code> starts with\n * the specified prefix.\n */\nbool startsWith(const std::string& str, char prefix);\n\n/**\n * Returns <code>true</code> if the string <code>str</code> starts with\n * the specified character.\n */\nbool startsWith(const std::string& str, const std::string& prefix);\n\n/**\n * Returns true if the given character occurs somewhere in s.\n */\nbool stringContains(const std::string& s, char ch);\n\n/**\n * Returns true if the given substring occurs somewhere in s.\n */\nbool stringContains(const std::string& s, const std::string& substring);\n\n/**\n * Returns the index of the start of the first occurrence of the given character\n * in s, if it occurs in s.  If it does not occur, returns -1.\n * This function is very similar to string.find, but find returns string::npos\n * when the string is not found.\n */\nint stringIndexOf(const std::string& s, char ch, int startIndex = 0);\n\n/**\n * Returns the index of the start of the first occurrence of the given substring\n * in s, if it occurs in s.  If it does not occur, returns -1.\n * This function is very similar to string.find, but find returns string::npos\n * when the string is not found.\n */\nint stringIndexOf(const std::string& s, const std::string& substring, int startIndex = 0);\n\n/**\n * Returns true if the given string is either \"true\" or \"false\".\n */\nbool stringIsBool(const std::string& str);\n\n/**\n * Returns true if the given string could be converted to an real number\n * successfully by the stringToReal function, which will be true if\n * the string has the format of a real number such as \"3.14\" or \"-46\".\n * Equivalent to stringIsReal.\n */\nbool stringIsDouble(const std::string& str);   // alias\n\n/**\n * Returns true if the given string could be converted to an integer\n * successfully by the stringToInteger function, which will be true if\n * the string has the format of an integer such as \"1234\" or \"-8\".\n * Optionally accepts a radix (base) parameter if base-10 is not desired.\n */\nbool stringIsInteger(const std::string& str, int radix = 10);\n\n/**\n * Returns true if the given string could be converted to a long\n * successfully by the stringToLong function, which will be true if\n * the string has the format of an integer such as \"1234\" or \"-8\".\n * Optionally accepts a radix (base) parameter if base-10 is not desired.\n */\nbool stringIsLong(const std::string& str, int radix = 10);\n\n/**\n * Returns true if the given string could be converted to an real number\n * successfully by the stringToReal function, which will be true if\n * the string has the format of a real number such as \"3.14\" or \"-46\".\n */\nbool stringIsReal(const std::string& str);\n\n/**\n * Combines the elements of the given vector into a single string,\n * with the given delimiter separating neighboring elements, and returns it.\n * For example, joining the elements of the vector\n * {\"Hi\", \"there\", \"\", \"Jim\"} with the delimiter '?' returns \"Hi?there??Jim\".\n */\nstd::string stringJoin(const Vector<std::string>& v, char delimiter = '\\n');\n\n/**\n * Combines the elements of the given STL vector into a single string,\n * with the given delimiter separating neighboring elements, and returns it.\n * For example, joining the elements of the vector\n * {\"Hi\", \"there\", \"\", \"Jim\"} with the delimiter \"??\" returns \"Hi??there????Jim\".\n */\nstd::string stringJoin(const Vector<std::string>& v, const std::string& delimiter = \"\\n\");\n\n/**\n * Returns the index of the start of the last occurrence of the given character\n * in s, if it occurs in s.  If it does not occur, returns -1.\n * This function is very similar to string.rfind, but rfind returns string::npos\n * when the string is not found.\n */\nint stringLastIndexOf(const std::string& s, char ch, int startIndex = (int) std::string::npos);\n\n/**\n * Returns the index of the start of the last occurrence of the given substring\n * in s, if it occurs in s.  If it does not occur, returns -1.\n * This function is very similar to string.rfind, but rfind returns string::npos\n * when the string is not found.\n */\nint stringLastIndexOf(const std::string& s, const std::string& substring, int startIndex = (int) std::string::npos);\n\n/**\n * Returns a new string formed by replacing any occurrences of the given 'old'\n * character with the given replacement character in 'str'.\n * Note that this is NOT a regular expression replacement; it looks for the\n * 'old' string literally.  If you want regular expressions, see regexpr.h.\n * The 'inPlace' variant modifies an existing string rather than returning a new one,\n * and returns the number of occurrences of 'old' were replaced.\n */\nstd::string stringReplace(const std::string& str, char old, char replacement, int limit = -1);\n\n/**\n * Returns a new string formed by replacing any occurrences of the given 'old'\n * text with the given replacement text in 'str'.\n * Note that this is NOT a regular expression replacement; it looks for the\n * 'old' string literally.  If you want regular expressions, see regexpr.h.\n * The 'inPlace' variant modifies an existing string rather than returning a new one,\n * and returns the number of occurrences of 'old' were replaced.\n */\nstd::string stringReplace(const std::string& str, const std::string& old, const std::string& replacement, int limit = -1);\n\n/**\n * A variant of stringReplace, except that it accepts the string as a reference\n * and modifies it in-place rather than returning a new string.\n */\nint stringReplaceInPlace(std::string& str, char old, char replacement, int limit = -1);\n\n/**\n * A variant of stringReplace, except that it accepts the string as a reference\n * and modifies it in-place rather than returning a new string.\n */\nint stringReplaceInPlace(std::string& str, const std::string& old, const std::string& replacement, int limit = -1);\n\n/**\n * Returns a vector whose elements are strings formed by splitting the\n * given string 'str' by the given separator character.\n * For example, splitting \"Hi there  Jim!\" on \" \" returns\n * {\"Hi\", \"there\", \"\", \"Jim!\"}.\n */\nVector<std::string> stringSplit(const std::string& str, char delimiter, int limit = -1);\n\n/**\n * Returns a vector whose elements are strings formed by splitting the\n * given string 'str' by the given separator text.\n * For example, splitting \"Hi there  Jim!\" on \" \" returns\n * {\"Hi\", \"there\", \"\", \"Jim!\"}.\n */\nVector<std::string> stringSplit(const std::string& str, const std::string& delimiter, int limit = -1);\n\n/**\n * If str is \"true\", returns the bool value true.\n * If str is \"false\", returns the bool value false.\n * @throw ErrorException if str is any other value than \"true\" or \"false\"\n */\nbool stringToBool(const std::string& str);\n\n/**\n * Converts a single-character string into its corresponding char value.\n * For example, stringToChar(\"hello\") returns the char 'h'.\n * @throw ErrorException if the given string does not contain exactly 1 character\n */\nchar stringToChar(const std::string& str);\n\n/**\n * Converts a string representing a real number into its corresponding\n * value.\n * Equivalent to stringToReal.\n * @throw ErrorException if the string is not a legal floating-point number\n *        or contains extraneous characters other than whitespace\n */\ndouble stringToDouble(const std::string& str);   // alias\n\n/**\n * Converts a string of digits into an integer.\n * The function accepts an optional radix (base); for example,\n * stringToInteger(\"234\", 16) assumes that the string is in base-16 and\n * returns 2*16*16 + 3*16 + 4 = 564.\n * @throw ErrorException if the string is not a legal integer or contains\n *        extraneous characters other than whitespace\n */\nint stringToInteger(const std::string& str, int radix = 10);\n\n/**\n * Converts a string of digits into a long.\n * The function accepts an optional radix (base); for example,\n * stringToLong(\"234\", 16) assumes that the string is in base-16 and\n * returns 2*16*16 + 3*16 + 4 = 564.\n * @throw ErrorException if the string is not a legal long or contains\n *        extraneous characters other than whitespace\n */\nlong stringToLong(const std::string& str, int radix = 10);\n\n/**\n * Converts a string representing a real number into its corresponding\n * value.\n * Equivalent to stringToDouble.\n * @throw ErrorException if the string is not a legal floating-point number or\n * contains extraneous characters other than whitespace\n */\ndouble stringToReal(const std::string& str);\n\n/**\n * Returns a new character in which the given uppercase character has been\n * converted into its lowercase equivalent.\n */\nchar toLowerCase(char ch);\n\n/**\n * Returns a new string in which all uppercase characters have been converted\n * into their lowercase equivalents.\n */\nstd::string toLowerCase(const std::string& str);\n\n/**\n * Modifies the given string in-place such that all uppercase characters have\n * been converted into their lowercase equivalents.\n */\nvoid toLowerCaseInPlace(std::string& str);\n\n/**\n * Returns a new character in which the given lowercase character has been\n * converted into its uppercase equivalent.\n */\nchar toUpperCase(char ch);\n\n/**\n * Returns a new string in which all lowercase characters have been converted\n * into their uppercase equivalents.\n */\nstd::string toUpperCase(const std::string& str);\n\n/**\n * Modifies the given string in-place such that all lowercase characters have\n * been converted into their uppercase equivalents.\n */\nvoid toUpperCaseInPlace(std::string& str);\n\n/**\n * Returns a new string after removing any whitespace characters\n * from the beginning and end of the argument.\n */\nstd::string trim(const std::string& str);\n\n/**\n * Modifies the given string in-place where any whitespace characters\n * from the beginning and end of the argument are removed.\n */\nvoid trimInPlace(std::string& str);\n\n/**\n * Returns a new string after removing any whitespace characters\n * from the end of the argument.\n */\nstd::string trimEnd(const std::string& str);\n\n/**\n * Modifies the given string in-place to remove any whitespace characters\n * from its end.\n */\nvoid trimEndInPlace(std::string& str);\n\n/**\n * Returns a new string after removing any whitespace characters\n * from the beginning of the argument.\n */\nstd::string trimStart(const std::string& str);\n\n/**\n * Modifies the given string in-place to remove removing any whitespace characters\n * from the beginning of it.\n */\nvoid trimStartInPlace(std::string& str);\n\n/**\n * Returns a URL-decoded version of the given string, where any %xx character\n * codes are converted back to the equivalent characters.\n */\nstd::string urlDecode(const std::string& str);\n\n/**\n * Modifies the given string in-place into a URL-decoded version of itself,\n * where any %xx character codes are converted back to the equivalent characters.\n */\nvoid urlDecodeInPlace(std::string& str);\n\n/**\n * Returns a URL-encoded version of the given string, where most non-\n * alphabetic characters are replaced by %xx character codes.\n */\nstd::string urlEncode(const std::string& str);\n\n/**\n * Modifies the given string in-place into a URL-encoded version of itself,\n * where most non- alphabetic characters are replaced by %xx character codes.\n */\nvoid urlEncodeInPlace(std::string& str);\n\n// add to_string overloads for some common types missing from C++ standard\nnamespace std {\n/**\n * String-to-bool conversion function.\n * If str is \"true\", returns the bool value true.\n * If str is \"false\", returns the bool value false.\n * @throw ErrorException if str is any other value than \"true\" or \"false\"\n */\nbool stob(const std::string& str);\n\n/**\n * String-to-char conversion function.\n * Converts a single-character string into its corresponding char value.\n * For example, stringToChar(\"hello\") returns the char 'h'.\n * @throw ErrorException if the given string does not contain exactly 1 character\n */\nchar stoc(const std::string& str);\n\n/**\n * Returns the string \"true\" if b is true, or \"false\" if b is false.\n */\nstd::string to_string(bool b);\n\n/**\n * Returns a single-character string containing the given character.\n * For example, charToString('Q') returns the string \"Q\".\n */\nstd::string to_string(char c);\n\n/**\n * Returns a hexadecimal string for the given pointer, such as \"0x3f0427b\".\n * Returns \"nullptr\" if p is a null pointer.\n */\nstd::string to_string(void* p);\n\n/**\n * Generic to_string function for any type that has an operator <<.\n */\ntemplate <typename T>\nstd::string to_string(const T& value) {\n    std::ostringstream out;\n    out << value;   // if you get an error here, your type might not have a << operator\n    return out.str();\n}\n} // namespace std\n\n#endif // _strlib_h\n"
  },
  {
    "path": "SPL-unit-tests/.gitignore",
    "content": "/UnitTests"
  },
  {
    "path": "SPL-unit-tests/README.md",
    "content": "Unit tests for the Stanford C++ Library.\n\n- test-strlib.cpp developed by Cathy Zhang Spring 2020\n- Provenance of most other tests unknown (Keith + Marty?)\n- Coverage is incomplete, needs some work, Julie slowly adding to it"
  },
  {
    "path": "SPL-unit-tests/UnitTests.pro",
    "content": "###############################################################################\n# Project file for CS106B/X student program\n#\n# @version Winter Quarter 2025.2 for Qt 6\n# @author Julie Zelenski\n#   build client program using installed static library\n###############################################################################\n\nSPL_VERSION = 2025.2\nSPL_URL = https://web.stanford.edu/dept/cs_edu/qt\n\nTEMPLATE    =   app\nQT          +=  core gui widgets network multimedia\nCONFIG      +=  silent debug         # quiet build and debug symbols always\nCONFIG      -=  depend_includepath   # library headers not changing, don't add depend\n\n###############################################################################\n#       Find/use installed version of cs106 lib and headers                   #\n###############################################################################\n\n# Library installed into per-user writable data location from QtStandardPaths\nwin32|win64     { QTP_EXE = qtpaths.exe } else { QTP_EXE = qtpaths }\nUSER_DATA_DIR   =   $$system($$[QT_INSTALL_BINS]/$$QTP_EXE --writable-path GenericDataLocation)\n\nSPL_DIR         =   $${USER_DATA_DIR}/cs106\nSTATIC_LIB      =   $$system_path($${SPL_DIR}/lib/libcs106.a)\nVERSION_FILE =      $$system_path($${SPL_DIR}/lib/spl_version)\n\n# link against libcs106.a, add library headers to search path\n# libcs106 requires libpthread, add link here\nLIBS            +=  -lcs106 -lpthread\nQMAKE_LFLAGS    =   -L$$shell_quote($${SPL_DIR}/lib)\n# put PWD first in search list to allow local copy to shadow if needed\nINCLUDEPATH     +=  $$PWD \"$${SPL_DIR}/include\"\n\n###############################################################################\n#       Configure project with custom settings                                #\n###############################################################################\n\n# changes to headers require recompilation\nDEPENDPATH += $$PWD\n\n# remove spaces from target executable for better Windows compatibility\nTARGET      =   $$replace(TARGET, \" \", _)\n\n# set DESTDIR to project root dir, this is where executable/app will deploy and run\nDESTDIR     =   $$PWD\n\n# student writes ordinary main() function, but it must be called within a\n# wrapper main() that handles library setup/teardown. Rename student's\n# to distinguish between the two main() functions and avoid symbol clash\n# Ask Julie if you are curious why main->qMain->studentMain\nDEFINES     +=  main=qMain qMain=studentMain\n\n###############################################################################\n#       Gather files to list in Qt Creator project browser                    #\n###############################################################################\n\n# honeypot to trick Qt Creator to allow glob-all to coexist with user-added files\n# Qt looks for first 'SOURCES *=' line and lists user-added .cpp/h files there.\n# Afterward we glob-add files to SOURCES ourselves. Operator *= will unique\n# entries, so no worries about duplicates\nSOURCES         *=  \"\"\nHEADERS         *=  \"\"\n\n# Gather any .cpp or .h files within the project folder (student/starter code).\n# Second argument true makes search recursive\nSOURCES         *=  $$files(*.cpp, true)\nHEADERS         *=  $$files(*.h, true)\n\n# Gather resource files (image/sound/etc) from res dir, list under \"Other files\"\nOTHER_FILES     *=  $$files(res/*, true)\n# Gather text files from root dir or anywhere recursively\nOTHER_FILES     *=  $$files(*.txt, true)\n\n###############################################################################\n#       Configure compiler, compile flags                                     #\n###############################################################################\n\n# Configure flags for the C++ compiler\n# (In general, many warnings/errors are enabled to tighten compile-time checking.\n# A few overly pedantic/confusing errors are turned off to avoid confusion.)\n\nCONFIG          +=  sdk_no_version_check   # removes spurious warnings on Mac OS X\n\n# MinGW compiler lags, be conservative and use C++11 on all platforms\n# rather than special case\nCONFIG          +=  c++11\n\n# WARN_ON has -Wall -Wextra, add/remove a few specific warnings\nQMAKE_CXXFLAGS_WARN_ON      +=  -Werror=return-type\nQMAKE_CXXFLAGS_WARN_ON      +=  -Werror=uninitialized\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wunused-parameter\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wmissing-field-initializers\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wno-old-style-cast\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wno-sign-compare\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wno-sign-conversion\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wno-unused-const-variable\n\n*-clang { # warning flags specific to clang\n    QMAKE_CXXFLAGS_WARN_ON  +=  -Wempty-init-stmt\n    QMAKE_CXXFLAGS_WARN_ON  +=  -Wignored-qualifiers\n}\n\n*-g++ {   # warning flags specific to g++\n    QMAKE_CXXFLAGS_WARN_ON  +=  -Wlogical-op\n}\n\n###############################################################################\n#       Detect/report errors in project structure                             #\n###############################################################################\n\n# error if project opened from within a ZIP archive (common mistake on Windows)\nwin32|win64 {\n    contains(PWD, .*\\.zip.*) | contains(PWD, .*\\.ZIP.*) {\n        warning( \"*** You are trying to open this project from within a ZIP archive.\" )\n        warning( \"*** You must first extract the files then open in Qt Creator.\" )\n        warning( \"*** In File Explorer open the ZIP and choose to Extract All.\" )\n        error( Exiting. Extract project from ZIP first.)\n    }\n}\n\n# error if name of directory has chars that may cause trouble for qmake/make/shell\nPROJECT_DIR = $$basename(PWD)\nFOUND  = $$PROJECT_DIR\nFOUND ~= s|[a-z A-Z 0-9 _.+-]||   # yes, spaces ok, limited punctuation, $ % & are dicey\n!isEmpty(FOUND) {\n    warning( \"*** The name of your project directory contains the disallowed characters: $$FOUND\" )\n    warning( \"*** The allowed characters are letters, numbers, and simple punctuation.\" )\n    warning( \"*** Please rename to a simple name such as Assignment_1 that contains no disallowed characters.\" )\n    error(Exiting. Rename project directory to remove disallowed characters. )\n}\n\n\n!isEmpty(CURRENTLY_INSTALLING_LIBRARY) { # special case for Welcome app in CS106 package\n    message(\"Installing cs106 package, will skip library version check\")\n} else {\n    !exists($$STATIC_LIB) {             # confirm static lib exists\n        warning(\"No CS106 library found. Need to install.\")\n        error(Exiting. Install CS106 package following instructions at $$SPL_URL)\n    }\n    !exists($$VERSION_FILE) {           # confirm version file exists\n         warning(\"Installed library has no version. Re-install to get correct version.\")\n         error(Exiting. Re-install CS106 package following instructions at $$SPL_URL)\n    }\n    CONTENTS = $$cat($$VERSION_FILE)    # confirm version file contents match this .pro file\n    !equals(CONTENTS, $$SPL_VERSION) {\n        warning( \"Installed library version $$CONTENTS, expected $$SPL_VERSION\" )\n        error(Exiting. Re-install CS106 package following instructions at $$SPL_URL)\n    }\n}\n"
  },
  {
    "path": "SPL-unit-tests/common.h",
    "content": "/*\n * Common helper functions used by collection tests.\n * @version 2016/10/22\n * - initial version\n */\n\n#ifndef _collection_test_common_h\n#define _collection_test_common_h\n\n#include <initializer_list>\n#include <iostream>\n#include <sstream>\n#include <string>\n#include <utility>\n#include \"set.h\"\n#include \"SimpleTest.h\"\n\n\n// for testing collections with non- ==, < elements\nclass Student {\npublic:\n    std::string name;\n};\n\n\ntemplate <typename CollectionType, typename T>\nvoid assertCollection(std::string ,\n                      std::initializer_list<T> expectedList,\n                      const CollectionType& collection,\n                      bool checkOrder = true) {\n    if (checkOrder) {\n        CollectionType copy(expectedList);\n        EXPECT_EQUAL(copy, collection);\n    } else {\n        // just needs to contain the same elements in some order\n        Set<T> expected(expectedList);\n        Set<T> actual;\n        for (auto element : collection) {\n            actual.add(element);\n        }\n        EXPECT_EQUAL(expected, actual);\n    }\n    EXPECT_EQUAL(expectedList.size(), collection.size());\n}\n\ntemplate <typename MapType, typename K, typename V>\nvoid assertMap(std::string , std::initializer_list<std::pair<const K, V>> expected,\n               const MapType& map,\n               bool checkOrder = true) {\n    if (checkOrder) {\n        MapType copy(expected);\n        EXPECT_EQUAL(copy, map);\n    } else {\n        // just needs to contain the same key/value pairs in some order\n        Set<K> expectedKeys;\n        Set<V> expectedValues;\n        Set<K> actualKeys;\n        Set<V> actualValues;\n        for (auto pair : expected) {\n            expectedKeys.add(pair.first);\n            expectedValues.add(pair.second);\n        }\n        for (auto key : map) {\n            actualKeys.add(key);\n            actualValues.add(map.get(key));\n        }\n        EXPECT_EQUAL(expectedKeys, actualKeys);\n        EXPECT_EQUAL(expectedValues, actualValues);\n    }\n    EXPECT_EQUAL(expected.size(), map.size());\n}\n\n\nenum { LessThan = -1, EqualTo = 0, GreaterThan = 1 };\n\ntemplate <typename T>\nvoid testCompareOperators(const T& o1, const T& o2,  int compareTo = 0) {\n    EXPECT_EQUAL(compareTo <  0,  o1 <  o2);\n    EXPECT_EQUAL(compareTo <= 0,  o1 <= o2);\n    EXPECT_EQUAL(compareTo >  0,  o1 >  o2);\n    EXPECT_EQUAL(compareTo >= 0,  o1 >= o2);\n    EXPECT_EQUAL(compareTo == 0,  o1 == o2);\n    EXPECT_EQUAL(compareTo != 0,  o1 != o2);\n}\n\ntemplate <typename T>\nvoid clearDuringIteration(T& t) { for (auto& e: t) t.clear(); }\n\ntemplate <typename T>\nvoid doDuringIteration(T& t, std::function<void(T&)> fn) { for (auto& e: t)  fn(t); }\n\n\n#endif // _collection_test_common_h\n"
  },
  {
    "path": "SPL-unit-tests/main.cpp",
    "content": "#include \"console.h\"\n#include <string>\n#include \"SimpleTest.h\"\nusing namespace std;\n\nint main()\n{\n    if (runSimpleTests(SELECTED_TESTS, WINDOW_ONLY))\n        return 0;\n    cout << \"All done, exiting.\" << endl;\n    return 0;\n}\n"
  },
  {
    "path": "SPL-unit-tests/res/EnglishWords.txt",
    "content": "a\naa\naah\naahed\naahing\naahs\naal\naalii\naaliis\naals\naardvark\naardvarks\naardwolf\naardwolves\naargh\naas\naasvogel\naasvogels\naba\nabaca\nabacas\nabaci\naback\nabacus\nabacuses\nabaft\nabaka\nabakas\nabalone\nabalones\nabamp\nabampere\nabamperes\nabamps\nabandon\nabandoned\nabandoning\nabandonment\nabandonments\nabandons\nabas\nabase\nabased\nabasedly\nabasement\nabasements\nabaser\nabasers\nabases\nabash\nabashed\nabashes\nabashing\nabashment\nabashments\nabasing\nabatable\nabate\nabated\nabatement\nabatements\nabater\nabaters\nabates\nabating\nabatis\nabatises\nabator\nabators\nabattis\nabattises\nabattoir\nabattoirs\nabaxial\nabaxile\nabba\nabbacies\nabbacy\nabbas\nabbatial\nabbe\nabbes\nabbess\nabbesses\nabbey\nabbeys\nabbot\nabbotcies\nabbotcy\nabbots\nabbreviate\nabbreviated\nabbreviates\nabbreviating\nabbreviation\nabbreviations\nabbreviator\nabbreviators\nabdicate\nabdicated\nabdicates\nabdicating\nabdication\nabdications\nabdicator\nabdicators\nabdomen\nabdomens\nabdomina\nabdominal\nabdominally\nabduce\nabduced\nabducens\nabducent\nabducentes\nabduces\nabducing\nabduct\nabducted\nabducting\nabduction\nabductions\nabductor\nabductores\nabductors\nabducts\nabeam\nabed\nabele\nabeles\nabelmosk\nabelmosks\naberrance\naberrances\naberrancies\naberrancy\naberrant\naberrants\naberration\naberrational\naberrations\nabet\nabetment\nabetments\nabets\nabettal\nabettals\nabetted\nabetter\nabetters\nabetting\nabettor\nabettors\nabeyance\nabeyances\nabeyancies\nabeyancy\nabeyant\nabfarad\nabfarads\nabhenries\nabhenry\nabhenrys\nabhor\nabhorred\nabhorrence\nabhorrent\nabhorrently\nabhorrer\nabhorrers\nabhorring\nabhors\nabidance\nabidances\nabide\nabided\nabider\nabiders\nabides\nabiding\nabigail\nabigails\nabilities\nability\nabioses\nabiosis\nabiotic\nabject\nabjectly\nabjectness\nabjuration\nabjurations\nabjure\nabjured\nabjurer\nabjurers\nabjures\nabjuring\nablate\nablated\nablates\nablating\nablation\nablations\nablative\nablatives\nablaut\nablauts\nablaze\nable\nablegate\nablegates\nabler\nables\nablest\nablings\nablins\nabloom\nabluent\nabluents\nablush\nabluted\nablution\nablutions\nably\nabmho\nabmhos\nabnegate\nabnegated\nabnegates\nabnegating\nabnegation\nabnegations\nabnegator\nabnegators\nabnormal\nabnormalities\nabnormality\nabnormally\nabnormals\nabo\naboard\nabode\naboded\nabodes\naboding\nabohm\nabohms\naboideau\naboideaus\naboideaux\naboil\naboiteau\naboiteaus\naboiteaux\nabolish\nabolished\nabolishes\nabolishing\nabolishment\nabolishments\nabolition\nabolitionary\nabolitionism\nabolitionist\nabolitionists\nabolitions\nabolla\nabollae\naboma\nabomas\nabomasa\nabomasal\nabomasi\nabomasum\nabomasus\nabominable\nabominably\nabominate\nabominated\nabominates\nabominating\nabomination\nabominations\nabominator\nabominators\naboon\naboral\naborally\naboriginal\naboriginally\naborigine\naborigines\naborning\nabort\naborted\naborter\naborters\naborting\nabortion\nabortionist\nabortionists\nabortions\nabortive\nabortively\naborts\nabos\nabought\naboulia\naboulias\naboulic\nabound\nabounded\nabounding\nabounds\nabout\nabove\naboveboard\naboves\nabracadabra\nabradant\nabradants\nabrade\nabraded\nabrader\nabraders\nabrades\nabrading\nabrasion\nabrasions\nabrasive\nabrasives\nabreact\nabreacted\nabreacting\nabreacts\nabreast\nabri\nabridge\nabridged\nabridgement\nabridgements\nabridger\nabridgers\nabridges\nabridging\nabridgment\nabridgments\nabris\nabroach\nabroad\nabrogate\nabrogated\nabrogates\nabrogating\nabrogation\nabrogations\nabrupt\nabrupter\nabruptest\nabruptly\nabruptness\nabscess\nabscessed\nabscesses\nabscessing\nabscise\nabscised\nabscises\nabscisin\nabscising\nabscisins\nabscissa\nabscissae\nabscissas\nabscission\nabscissions\nabscond\nabsconded\nabsconding\nabsconds\nabsence\nabsences\nabsent\nabsented\nabsentee\nabsenteeism\nabsentees\nabsenter\nabsenters\nabsenting\nabsently\nabsentminded\nabsentmindedly\nabsentmindedness\nabsents\nabsinth\nabsinthe\nabsinthes\nabsinths\nabsolute\nabsolutely\nabsoluteness\nabsoluter\nabsolutes\nabsolutest\nabsolution\nabsolutions\nabsolutism\nabsolutist\nabsolutistic\nabsolutists\nabsolve\nabsolved\nabsolver\nabsolvers\nabsolves\nabsolving\nabsonant\nabsorb\nabsorbabilities\nabsorbability\nabsorbable\nabsorbed\nabsorbencies\nabsorbency\nabsorbent\nabsorber\nabsorbers\nabsorbing\nabsorbingly\nabsorbs\nabsorption\nabsorptions\nabsorptive\nabstain\nabstained\nabstainer\nabstainers\nabstaining\nabstains\nabstemious\nabstemiously\nabstention\nabstentions\nabstentious\nabsterge\nabsterged\nabsterges\nabsterging\nabstinence\nabstinent\nabstract\nabstracted\nabstractedly\nabstracter\nabstracters\nabstractest\nabstracting\nabstraction\nabstractions\nabstractive\nabstractly\nabstractness\nabstractor\nabstractors\nabstracts\nabstrict\nabstricted\nabstricting\nabstricts\nabstruse\nabstrusely\nabstruseness\nabstruser\nabstrusest\nabsurd\nabsurder\nabsurdest\nabsurdities\nabsurdity\nabsurdly\nabsurdness\nabsurds\nabubble\nabulia\nabulias\nabulic\nabundance\nabundances\nabundant\nabundantly\nabusable\nabuse\nabused\nabuser\nabusers\nabuses\nabusing\nabusive\nabusively\nabusiveness\nabut\nabutilon\nabutilons\nabutment\nabutments\nabuts\nabuttal\nabuttals\nabutted\nabutter\nabutters\nabutting\nabuzz\nabvolt\nabvolts\nabwatt\nabwatts\naby\nabye\nabyes\nabying\nabys\nabysm\nabysmal\nabysmally\nabysms\nabyss\nabyssal\nabysses\nacacia\nacacias\nacademe\nacademes\nacademia\nacademias\nacademic\nacademically\nacademician\nacademicians\nacademicism\nacademics\nacademies\nacademy\nacajou\nacajous\nacaleph\nacalephae\nacalephe\nacalephes\nacalephs\nacanthi\nacanthus\nacanthuses\nacari\nacarid\nacaridan\nacaridans\nacarids\nacarine\nacarines\nacaroid\nacarpous\nacarus\nacaudal\nacaudate\nacauline\nacaulose\nacaulous\naccede\nacceded\nacceder\nacceders\naccedes\nacceding\naccelerando\naccelerate\naccelerated\naccelerates\naccelerating\nacceleration\naccelerations\naccelerative\naccelerator\naccelerators\naccelerometer\naccelerometers\naccent\naccented\naccenting\naccentor\naccentors\naccents\naccentual\naccentuate\naccentuated\naccentuates\naccentuating\naccentuation\naccentuations\naccept\nacceptabilities\nacceptability\nacceptable\nacceptably\nacceptance\nacceptances\nacceptant\nacceptation\nacceptations\naccepted\nacceptee\nacceptees\naccepter\naccepters\naccepting\nacceptor\nacceptors\naccepts\naccess\naccessaries\naccessary\naccessed\naccesses\naccessibilities\naccessibility\naccessible\naccessibleness\naccessibly\naccessing\naccession\naccessional\naccessions\naccessories\naccessory\naccident\naccidental\naccidentally\naccidentalness\naccidently\naccidents\naccidie\naccidies\nacclaim\nacclaimed\nacclaiming\nacclaims\nacclamation\nacclamations\nacclimate\nacclimated\nacclimates\nacclimating\nacclimation\nacclimations\nacclimatization\nacclimatizations\nacclimatize\nacclimatized\nacclimatizes\nacclimatizing\nacclivities\nacclivity\naccolade\naccolades\naccommodate\naccommodated\naccommodates\naccommodating\naccommodatingly\naccommodation\naccommodations\naccommodative\naccompanied\naccompanies\naccompaniment\naccompaniments\naccompanist\naccompanists\naccompany\naccompanying\naccomplice\naccomplices\naccomplish\naccomplished\naccomplisher\naccomplishers\naccomplishes\naccomplishing\naccomplishment\naccomplishments\naccord\naccordance\naccordances\naccordant\naccordantly\naccorded\naccorder\naccorders\naccording\naccordingly\naccordion\naccordionist\naccordionists\naccordions\naccords\naccost\naccosted\naccosting\naccosts\naccount\naccountabilities\naccountability\naccountable\naccountably\naccountancy\naccountant\naccountants\naccounted\naccounting\naccountings\naccounts\naccouter\naccoutered\naccoutering\naccouterment\naccouterments\naccouters\naccoutre\naccoutred\naccoutrement\naccoutrements\naccoutres\naccoutring\naccredit\naccreditation\naccreditations\naccredited\naccrediting\naccredits\naccrete\naccreted\naccretes\naccreting\naccretion\naccretionary\naccretions\naccrual\naccruals\naccrue\naccrued\naccruement\naccruements\naccrues\naccruing\nacculturate\nacculturated\nacculturates\nacculturating\nacculturation\nacculturations\naccumulate\naccumulated\naccumulates\naccumulating\naccumulation\naccumulations\naccumulative\naccumulator\naccumulators\naccuracies\naccuracy\naccurate\naccurately\naccurateness\naccursed\naccurst\naccusal\naccusals\naccusant\naccusants\naccusation\naccusations\naccusative\naccusatory\naccuse\naccused\naccuser\naccusers\naccuses\naccusing\naccusingly\naccustom\naccustomed\naccustoming\naccustoms\nace\naced\nacedia\nacedias\naceldama\naceldamas\nacentric\nacequia\nacequias\nacerate\nacerated\nacerb\nacerbate\nacerbated\nacerbates\nacerbating\nacerber\nacerbest\nacerbic\nacerbities\nacerbity\nacerola\nacerolas\nacerose\nacerous\nacervate\nacervuli\naces\nacescent\nacescents\naceta\nacetal\nacetals\nacetamid\nacetamids\nacetate\nacetated\nacetates\nacetic\nacetified\nacetifies\nacetify\nacetifying\nacetone\nacetones\nacetonic\nacetose\nacetous\nacetoxyl\nacetoxyls\nacetum\nacetyl\nacetylcholine\nacetylene\nacetylenes\nacetylic\nacetyls\nacetylsalicylic\nache\nached\nachene\nachenes\nachenial\naches\nachier\nachiest\nachievable\nachieve\nachieved\nachievement\nachievements\nachiever\nachievers\nachieves\nachieving\nachiness\nachinesses\naching\nachingly\nachiote\nachiotes\nachoo\nachromat\nachromatic\nachromaticities\nachromaticity\nachromats\nachromic\nachy\nacicula\naciculae\nacicular\naciculas\nacid\nacidhead\nacidheads\nacidic\nacidification\nacidifications\nacidified\nacidifies\nacidify\nacidifying\nacidities\nacidity\nacidly\nacidness\nacidnesses\nacidoses\nacidosis\nacidotic\nacids\nacidulate\nacidulated\nacidulates\nacidulating\nacidulation\nacidulations\nacidulous\nacidy\nacierate\nacierated\nacierates\nacierating\naciform\nacinar\nacing\nacini\nacinic\nacinose\nacinous\nacinus\nackee\nacknowledge\nacknowledged\nacknowledges\nacknowledging\nacknowledgment\nacknowledgments\naclinic\nacmatic\nacme\nacmes\nacmic\nacne\nacned\nacnes\nacnode\nacnodes\nacock\nacold\nacolyte\nacolytes\naconite\naconites\naconitic\naconitum\naconitums\nacorn\nacorns\nacoustic\nacoustical\nacoustically\nacoustician\nacousticians\nacoustics\nacquaint\nacquaintance\nacquaintances\nacquaintanceship\nacquainted\nacquainting\nacquaints\nacquest\nacquests\nacquiesce\nacquiesced\nacquiescence\nacquiescences\nacquiescent\nacquiescently\nacquiesces\nacquiescing\nacquirable\nacquire\nacquired\nacquirement\nacquirements\nacquirer\nacquirers\nacquires\nacquiring\nacquisition\nacquisitional\nacquisitions\nacquisitive\nacquisitively\nacquisitiveness\nacquisitor\nacquisitors\nacquit\nacquits\nacquittal\nacquittals\nacquittance\nacquittances\nacquitted\nacquitting\nacrasin\nacrasins\nacre\nacreage\nacreages\nacred\nacres\nacrid\nacrider\nacridest\nacridine\nacridines\nacridities\nacridity\nacridly\nacridness\nacrimonies\nacrimonious\nacrimony\nacrobat\nacrobatic\nacrobatically\nacrobatics\nacrobats\nacrodont\nacrodonts\nacrogen\nacrogens\nacrolein\nacroleins\nacrolith\nacroliths\nacromia\nacromial\nacromion\nacronic\nacronym\nacronyms\nacrophobia\nacrophobias\nacropolis\nacross\nacrostic\nacrostics\nacrotic\nacrotism\nacrotisms\nacrylate\nacrylates\nacrylic\nacrylics\nact\nacta\nactability\nactable\nacted\nacties\nactin\nactinal\nacting\nactings\nactinia\nactiniae\nactinian\nactinians\nactinias\nactinic\nactinide\nactinides\nactinism\nactinisms\nactinium\nactiniums\nactinoid\nactinoids\nactinon\nactinons\nactins\naction\nactionable\nactionably\nactions\nactivate\nactivated\nactivates\nactivating\nactivation\nactivations\nactivator\nactivators\nactive\nactively\nactiveness\nactives\nactivism\nactivisms\nactivist\nactivists\nactivities\nactivity\nactor\nactorish\nactors\nactress\nactresses\nacts\nactual\nactualities\nactuality\nactualization\nactualizations\nactualize\nactualized\nactualizes\nactualizing\nactually\nactuarial\nactuaries\nactuary\nactuate\nactuated\nactuates\nactuating\nactuation\nactuations\nactuator\nactuators\nacuate\nacuities\nacuity\naculeate\nacumen\nacumens\nacupuncture\nacupunctures\nacupuncturist\nacupuncturists\nacutance\nacutances\nacute\nacutely\nacuteness\nacuter\nacutes\nacutest\nacyclic\nacyl\nacylate\nacylated\nacylates\nacylating\nacyls\nad\nadage\nadages\nadagial\nadagio\nadagios\nadamance\nadamances\nadamancies\nadamancy\nadamant\nadamantine\nadamantly\nadamants\nadamsite\nadamsites\nadapt\nadaptability\nadaptable\nadaptation\nadaptations\nadapted\nadapter\nadapters\nadapting\nadaption\nadaptions\nadaptive\nadaptor\nadaptors\nadapts\nadaxial\nadd\naddable\naddax\naddaxes\nadded\naddedly\naddend\naddenda\naddends\naddendum\nadder\nadders\naddible\naddict\naddicted\naddicting\naddiction\naddictions\naddictive\naddicts\nadding\naddition\nadditional\nadditionally\nadditions\nadditive\nadditives\naddle\naddled\naddles\naddling\naddress\naddressed\naddressee\naddressees\naddresser\naddressers\naddresses\naddressing\naddrest\nadds\nadduce\nadduced\nadducent\nadducer\nadducers\nadduces\nadducing\nadduct\nadducted\nadducting\nadductor\nadductors\nadducts\nadeem\nadeemed\nadeeming\nadeems\nadenine\nadenines\nadenitis\nadenitises\nadenoid\nadenoidal\nadenoids\nadenoma\nadenomas\nadenomata\nadenyl\nadenyls\nadept\nadepter\nadeptest\nadeptly\nadeptness\nadepts\nadequacies\nadequacy\nadequate\nadequately\nadhere\nadhered\nadherence\nadherences\nadherend\nadherends\nadherent\nadherents\nadherer\nadherers\nadheres\nadhering\nadhesion\nadhesional\nadhesions\nadhesive\nadhesively\nadhesiveness\nadhesives\nadhibit\nadhibited\nadhibiting\nadhibits\nadiabatic\nadiabatically\nadieu\nadieus\nadieux\nadios\nadipic\nadipose\nadiposes\nadiposis\nadiposity\nadipous\nadit\nadits\nadjacencies\nadjacency\nadjacent\nadjacently\nadjectival\nadjectivally\nadjective\nadjectives\nadjoin\nadjoined\nadjoining\nadjoins\nadjoint\nadjoints\nadjourn\nadjourned\nadjourning\nadjournment\nadjournments\nadjourns\nadjudge\nadjudged\nadjudges\nadjudging\nadjudicate\nadjudicated\nadjudicates\nadjudicating\nadjudication\nadjudications\nadjudicative\nadjudicator\nadjudicators\nadjunct\nadjunctive\nadjuncts\nadjuration\nadjurations\nadjuratory\nadjure\nadjured\nadjurer\nadjurers\nadjures\nadjuring\nadjuror\nadjurors\nadjust\nadjustable\nadjusted\nadjuster\nadjusters\nadjusting\nadjustment\nadjustments\nadjustor\nadjustors\nadjusts\nadjutancy\nadjutant\nadjutants\nadjuvant\nadjuvants\nadman\nadmass\nadmen\nadminister\nadministered\nadministering\nadministers\nadministrable\nadministrant\nadministrants\nadministrate\nadministrated\nadministrates\nadministrating\nadministration\nadministrations\nadministrative\nadministratively\nadministrator\nadministrators\nadmirable\nadmirableness\nadmirably\nadmiral\nadmirals\nadmiralties\nadmiralty\nadmiration\nadmirations\nadmire\nadmired\nadmirer\nadmirers\nadmires\nadmiring\nadmissibility\nadmissible\nadmission\nadmissions\nadmit\nadmits\nadmittance\nadmittances\nadmitted\nadmittedly\nadmitter\nadmitters\nadmitting\nadmix\nadmixed\nadmixes\nadmixing\nadmixt\nadmixture\nadmixtures\nadmonish\nadmonished\nadmonishes\nadmonishing\nadmonishingly\nadmonishment\nadmonishments\nadmonition\nadmonitions\nadmonitory\nadnate\nadnation\nadnations\nadnexa\nadnexal\nadnoun\nadnouns\nado\nadobe\nadobes\nadobo\nadolescence\nadolescent\nadolescents\nadopt\nadoptabilities\nadoptability\nadoptable\nadopted\nadoptee\nadoptees\nadopter\nadopters\nadopting\nadoption\nadoptions\nadoptive\nadoptively\nadopts\nadorable\nadorably\nadoration\nadorations\nadore\nadored\nadorer\nadorers\nadores\nadoring\nadorn\nadorned\nadorner\nadorners\nadorning\nadornment\nadornments\nadorns\nados\nadown\nadoze\nadrenal\nadrenaline\nadrenalines\nadrenals\nadrift\nadroit\nadroiter\nadroitest\nadroitly\nadroitness\nads\nadscript\nadscripts\nadsorb\nadsorbate\nadsorbates\nadsorbed\nadsorbent\nadsorbing\nadsorbs\nadsorption\nadsorptions\nadularia\nadularias\nadulate\nadulated\nadulates\nadulating\nadulation\nadulations\nadulator\nadulators\nadulatory\nadult\nadulterant\nadulterants\nadulterate\nadulterated\nadulterates\nadulterating\nadulteration\nadulterations\nadulterer\nadulterers\nadulteress\nadulteresses\nadulteries\nadulterous\nadulterously\nadultery\nadulthood\nadultly\nadultness\nadults\nadumbral\nadumbrate\nadumbrated\nadumbrates\nadumbrating\nadumbration\nadumbrations\nadumbrative\nadumbratively\nadunc\naduncate\naduncous\nadust\nadvance\nadvanced\nadvancement\nadvancements\nadvancer\nadvancers\nadvances\nadvancing\nadvantage\nadvantageous\nadvantageously\nadvantages\nadvent\nadventitious\nadventitiously\nadventitiousness\nadvents\nadventure\nadventured\nadventurer\nadventurers\nadventures\nadventuresome\nadventuress\nadventuresses\nadventuring\nadventurous\nadverb\nadverbial\nadverbially\nadverbs\nadversaries\nadversary\nadversative\nadversatively\nadverse\nadversely\nadverseness\nadversities\nadversity\nadvert\nadverted\nadvertence\nadvertences\nadvertencies\nadvertency\nadvertent\nadvertently\nadverting\nadvertise\nadvertised\nadvertisement\nadvertisements\nadvertiser\nadvertisers\nadvertises\nadvertising\nadverts\nadvice\nadvices\nadvisabilities\nadvisability\nadvisable\nadvisableness\nadvisably\nadvise\nadvised\nadvisedly\nadvisee\nadvisees\nadvisement\nadvisements\nadviser\nadvisers\nadvises\nadvising\nadvisor\nadvisories\nadvisors\nadvisory\nadvocacies\nadvocacy\nadvocate\nadvocated\nadvocates\nadvocating\nadvowson\nadvowsons\nadynamia\nadynamias\nadynamic\nadyta\nadytum\nadz\nadze\nadzes\nae\naecia\naecial\naecidia\naecidium\naecium\naedes\naedile\naediles\naedine\naegis\naegises\naeneous\naeneus\naeolian\naeon\naeonian\naeonic\naeons\naerate\naerated\naerates\naerating\naeration\naerations\naerator\naerators\naerial\naerialist\naerialists\naerially\naerials\naerie\naeried\naerier\naeries\naeriest\naerified\naerifies\naeriform\naerify\naerifying\naerily\naero\naerobatics\naerobe\naerobes\naerobia\naerobic\naerobically\naerobium\naeroduct\naeroducts\naerodynamic\naerodynamically\naerodynamics\naerodyne\naerodynes\naerofoil\naerofoils\naerogel\naerogels\naerogram\naerograms\naerolite\naerolites\naerolith\naeroliths\naerologies\naerology\naeronaut\naeronautic\naeronautical\naeronautically\naeronautics\naeronauts\naeronomer\naeronomers\naeronomic\naeronomical\naeronomics\naeronomies\naeronomist\naeronomists\naeronomy\naerosol\naerosols\naerospace\naerostat\naerostatics\naerostats\naerugo\naerugos\naery\naesthete\naesthetes\naesthetic\naesthetically\naestheticism\naestheticisms\naesthetics\naestival\naether\naetheric\naethers\nafar\nafars\nafeard\nafeared\naff\naffability\naffable\naffably\naffair\naffaire\naffaires\naffairs\naffect\naffectabilities\naffectability\naffectable\naffectation\naffectations\naffected\naffectedly\naffectedness\naffecter\naffecters\naffecting\naffectingly\naffection\naffectionate\naffectionately\naffections\naffective\naffects\nafferent\naffiance\naffianced\naffiances\naffiancing\naffiant\naffiants\naffiche\naffiches\naffidavit\naffidavits\naffiliate\naffiliated\naffiliates\naffiliating\naffiliation\naffiliations\naffine\naffined\naffinely\naffines\naffinities\naffinity\naffirm\naffirmable\naffirmance\naffirmative\naffirmatively\naffirmed\naffirmer\naffirmers\naffirming\naffirms\naffix\naffixal\naffixed\naffixer\naffixers\naffixes\naffixial\naffixing\nafflatus\nafflatuses\nafflict\nafflicted\nafflicting\naffliction\nafflictions\nafflictive\nafflictively\nafflicts\naffluence\naffluent\naffluently\naffluents\nafflux\naffluxes\nafford\naffordable\nafforded\naffording\naffords\nafforest\nafforested\nafforesting\nafforests\naffray\naffrayed\naffrayer\naffrayers\naffraying\naffrays\naffright\naffrighted\naffrighting\naffrights\naffront\naffronted\naffronting\naffronts\naffusion\naffusions\nafghan\nafghani\nafghanis\nafghans\naficionado\naficionados\nafield\nafire\naflame\nafloat\naflutter\nafoot\nafore\naforementioned\naforesaid\naforethought\nafoul\nafraid\nafreet\nafreets\nafresh\nafrit\nafrits\naft\nafter\nafterbirth\nafterbirths\nafterburner\nafterburners\naftercare\naftereffect\naftereffects\nafterglow\nafterglows\nafterimage\nafterimages\nafterlife\naftermath\naftermaths\nafternoon\nafternoons\nafters\naftershock\naftershocks\naftertaste\naftertastes\naftertax\nafterthought\nafterthoughts\nafterward\nafterwards\naftmost\naftosa\naftosas\nag\naga\nagain\nagainst\nagalloch\nagallochs\nagalwood\nagalwoods\nagama\nagamas\nagamete\nagametes\nagamic\nagamous\nagapae\nagapai\nagape\nagapeic\nagar\nagaric\nagarics\nagars\nagas\nagate\nagates\nagatize\nagatized\nagatizes\nagatizing\nagatoid\nagave\nagaves\nagaze\nage\naged\nagedly\nagedness\nagednesses\nagee\nageing\nageings\nageless\nagelong\nagencies\nagency\nagenda\nagendas\nagendum\nagendums\nagene\nagenes\nageneses\nagenesia\nagenesias\nagenesis\nagenetic\nagenize\nagenized\nagenizes\nagenizing\nagent\nagential\nagentries\nagentry\nagents\nager\nageratum\nageratums\nagers\nages\nagger\naggers\naggie\naggies\nagglomerate\nagglomerated\nagglomerates\nagglomerating\nagglomeration\nagglomerations\nagglutinate\nagglutinated\nagglutinates\nagglutinating\nagglutination\nagglutinations\nagglutinative\nagglutinin\nagglutinins\naggrade\naggraded\naggrades\naggrading\naggrandize\naggrandized\naggrandizement\naggrandizements\naggrandizes\naggrandizing\naggravate\naggravated\naggravates\naggravating\naggravation\naggravations\naggregate\naggregated\naggregates\naggregating\naggregation\naggregations\naggress\naggressed\naggresses\naggressing\naggression\naggressions\naggressive\naggressively\naggressiveness\naggressor\naggressors\naggrieve\naggrieved\naggrieves\naggrieving\naggro\nagha\naghas\naghast\nagile\nagilely\nagilities\nagility\nagin\naging\nagings\naginner\naginners\nagio\nagios\nagiotage\nagiotages\nagism\nagist\nagisted\nagisting\nagists\nagitable\nagitate\nagitated\nagitatedly\nagitates\nagitating\nagitation\nagitations\nagitato\nagitator\nagitators\nagitprop\nagitprops\naglare\nagleam\naglee\naglet\naglets\nagley\naglimmer\naglitter\naglow\nagly\naglycon\naglycone\naglycones\naglycons\nagma\nagmas\nagminate\nagnail\nagnails\nagnate\nagnates\nagnatic\nagnation\nagnations\nagnize\nagnized\nagnizes\nagnizing\nagnomen\nagnomens\nagnomina\nagnostic\nagnosticism\nagnostics\nago\nagog\nagon\nagonal\nagone\nagones\nagonic\nagonies\nagonise\nagonised\nagonises\nagonising\nagonist\nagonists\nagonize\nagonized\nagonizes\nagonizing\nagonizingly\nagons\nagony\nagora\nagorae\nagoraphobia\nagoraphobic\nagoras\nagorot\nagoroth\nagouti\nagouties\nagoutis\nagouty\nagrafe\nagrafes\nagraffe\nagraffes\nagrapha\nagraphia\nagraphias\nagraphic\nagrarian\nagrarianism\nagrarians\nagree\nagreeability\nagreeable\nagreeableness\nagreeably\nagreed\nagreeing\nagreement\nagreements\nagrees\nagrestal\nagrestic\nagria\nagricultural\nagriculturalist\nagriculturalists\nagriculture\nagricultures\nagriculturist\nagriculturists\nagrimonies\nagrimony\nagrologies\nagrology\nagronomic\nagronomically\nagronomies\nagronomist\nagronomists\nagronomy\naground\nague\naguelike\nagues\nagueweed\nagueweeds\naguish\naguishly\nah\naha\nahchoo\nahead\nahem\nahimsa\nahimsas\nahold\naholds\nahorse\nahoy\nahull\nai\naiblins\naid\naide\naided\naider\naiders\naides\naidful\naiding\naidless\naidman\naidmen\naids\naiglet\naiglets\naigret\naigrets\naigrette\naigrettes\naiguille\naiguilles\naikido\naikidos\nail\nailed\naileron\nailerons\nailing\nailment\nailments\nails\naim\naimed\naimer\naimers\naimful\naimfully\naiming\naimless\naimlessly\naimlessness\naims\nain\nains\nainsell\nainsells\naioli\nair\nairboat\nairboats\nairborne\nairbound\nairbrush\nairbrushed\nairbrushes\nairbrushing\nairburst\nairbursts\nairbus\nairbuses\nairbusses\naircoach\naircoaches\naircraft\naircrew\naircrews\nairdrome\nairdromes\nairdrop\nairdropped\nairdropping\nairdrops\naired\nairer\nairest\nairfield\nairfields\nairflow\nairflows\nairfoil\nairfoils\nairframe\nairframes\nairglow\nairglows\nairhead\nairheads\nairier\nairiest\nairily\nairiness\nairinesses\nairing\nairings\nairless\nairlift\nairlifted\nairlifting\nairlifts\nairlike\nairline\nairliner\nairliners\nairlines\nairmail\nairmailed\nairmailing\nairmails\nairman\nairmen\nairn\nairns\nairpark\nairparks\nairplane\nairplanes\nairport\nairports\nairpost\nairposts\nairproof\nairproofed\nairproofing\nairproofs\nairs\nairscrew\nairscrews\nairship\nairships\nairsick\nairsickness\nairspace\nairspaces\nairspeed\nairspeeds\nairstream\nairstreams\nairstrip\nairstrips\nairt\nairted\nairth\nairthed\nairthing\nairths\nairtight\nairtightness\nairting\nairts\nairward\nairwave\nairwaves\nairway\nairways\nairwise\nairwoman\nairwomen\nairworthiness\nairworthy\nairy\nais\naisle\naisled\naisles\nait\naitch\naitches\naits\naiver\naivers\najar\najee\najiva\najivas\najowan\najowans\najuga\nakee\nakees\nakela\nakelas\nakene\nakenes\nakimbo\nakin\nakvavit\nakvavits\nal\nala\nalabaster\nalabasters\nalack\nalacrities\nalacritous\nalacrity\nalae\nalameda\nalamedas\nalamo\nalamode\nalamodes\nalamos\nalan\naland\nalands\nalane\nalang\nalanin\nalanine\nalanines\nalanins\nalans\nalant\nalants\nalanyl\nalanyls\nalar\nalarm\nalarmed\nalarming\nalarmingly\nalarmism\nalarmisms\nalarmist\nalarmists\nalarms\nalarum\nalarumed\nalaruming\nalarums\nalary\nalas\nalaska\nalaskas\nalastor\nalastors\nalate\nalated\nalation\nalations\nalb\nalba\nalbacore\nalbacores\nalbas\nalbata\nalbatas\nalbatross\nalbatrosses\nalbedo\nalbedos\nalbeit\nalbicore\nalbicores\nalbinal\nalbinic\nalbinism\nalbinisms\nalbinistic\nalbino\nalbinos\nalbite\nalbites\nalbitic\nalbs\nalbum\nalbumen\nalbumens\nalbumin\nalbuminous\nalbumins\nalbumose\nalbumoses\nalbums\nalburnum\nalburnums\nalcade\nalcades\nalcahest\nalcahests\nalcaic\nalcaics\nalcaide\nalcaides\nalcalde\nalcaldes\nalcayde\nalcaydes\nalcazar\nalcazars\nalchemic\nalchemical\nalchemies\nalchemist\nalchemists\nalchemy\nalchymies\nalchymy\nalcid\nalcidine\nalcohol\nalcoholic\nalcoholically\nalcoholics\nalcoholism\nalcohols\nalcove\nalcoved\nalcoves\naldehyde\naldehydes\nalder\nalderman\naldermen\nalders\nalderwoman\nalderwomen\naldol\naldolase\naldolases\naldols\naldose\naldoses\naldrin\naldrins\nale\naleatoric\naleatory\nalec\nalecs\nalee\nalef\nalefs\nalegar\nalegars\nalehouse\nalehouses\nalembic\nalembics\naleph\nalephs\nalert\nalerted\nalerter\nalertest\nalerting\nalertly\nalertness\nalerts\nales\naleuron\naleurone\naleurones\naleurons\nalevin\nalevins\nalewife\nalewives\nalexandrine\nalexia\nalexias\nalexin\nalexine\nalexines\nalexins\nalfa\nalfaki\nalfakis\nalfalfa\nalfalfas\nalfaqui\nalfaquin\nalfaquins\nalfaquis\nalfas\nalforja\nalforjas\nalfresco\nalga\nalgae\nalgal\nalgaroba\nalgarobas\nalgas\nalgebra\nalgebraic\nalgebraically\nalgebras\nalgerine\nalgerines\nalgicide\nalgicides\nalgid\nalgidities\nalgidity\nalgin\nalginate\nalginates\nalgins\nalgoid\nalgologies\nalgology\nalgor\nalgorism\nalgorisms\nalgorithm\nalgorithmic\nalgorithms\nalgors\nalgum\nalgums\nalias\naliases\nalibi\nalibied\nalibies\nalibiing\nalibis\nalible\nalidad\nalidade\nalidades\nalidads\nalien\nalienabilities\nalienability\nalienable\nalienage\nalienages\nalienate\nalienated\nalienates\nalienating\nalienation\nalienations\naliened\nalienee\nalienees\naliener\nalieners\naliening\nalienism\nalienisms\nalienist\nalienists\nalienly\nalienor\nalienors\naliens\nalif\naliform\nalifs\nalight\nalighted\nalighting\nalights\nalign\naligned\naligner\naligners\naligning\nalignment\nalignments\naligns\nalike\nalikeness\naliment\nalimentary\nalimented\nalimenting\naliments\nalimonies\nalimony\naline\nalined\nalinement\nalinements\naliner\naliners\nalines\nalining\naliped\nalipeds\naliphatic\naliquant\naliquot\naliquots\nalist\nalit\naliunde\nalive\naliveness\naliya\naliyah\naliyahs\nalizarin\nalizarins\nalkahest\nalkahests\nalkali\nalkalic\nalkalies\nalkalified\nalkalifies\nalkalify\nalkalifying\nalkalin\nalkaline\nalkalinities\nalkalinity\nalkalis\nalkalise\nalkalised\nalkalises\nalkalising\nalkalize\nalkalized\nalkalizes\nalkalizing\nalkaloid\nalkaloidal\nalkaloids\nalkane\nalkanes\nalkanet\nalkanets\nalkene\nalkenes\nalkine\nalkines\nalkoxy\nalky\nalkyd\nalkyds\nalkyl\nalkylate\nalkylated\nalkylates\nalkylating\nalkylic\nalkyls\nalkyne\nalkynes\nall\nallanite\nallanites\nallay\nallayed\nallayer\nallayers\nallaying\nallays\nallegation\nallegations\nallege\nalleged\nallegedly\nalleger\nallegers\nalleges\nallegiance\nallegiances\nalleging\nallegorical\nallegorically\nallegories\nallegorize\nallegorized\nallegorizes\nallegorizing\nallegory\nallegretto\nallegro\nallegros\nallele\nalleles\nallelic\nallelism\nallelisms\nalleluia\nalleluias\nallemande\nallemandes\nallergen\nallergenic\nallergens\nallergic\nallergies\nallergin\nallergins\nallergist\nallergists\nallergy\nalleviate\nalleviated\nalleviates\nalleviating\nalleviation\nalleviations\nalley\nalleys\nalleyway\nalleyways\nallheal\nallheals\nalliable\nalliance\nalliances\nallied\nallies\nalligator\nalligators\nalliterate\nalliterated\nalliterates\nalliterating\nalliteration\nalliterations\nalliterative\nalliteratively\nallium\nalliums\nallobar\nallobars\nallocatable\nallocate\nallocated\nallocates\nallocating\nallocation\nallocations\nallocution\nallocutions\nallod\nallodia\nallodial\nallodium\nallods\nallogamies\nallogamy\nallonge\nallonges\nallonym\nallonyms\nallopath\nallopaths\nallot\nallotment\nallotments\nallotropies\nallotropy\nallots\nallotted\nallottee\nallottees\nallotter\nallotters\nallotting\nallotype\nallotypes\nallotypies\nallotypy\nallover\nallovers\nallow\nallowable\nallowably\nallowance\nallowances\nallowed\nallowing\nallows\nalloxan\nalloxans\nalloy\nalloyed\nalloying\nalloys\nalls\nallseed\nallseeds\nallspice\nallspices\nallude\nalluded\nalludes\nalluding\nallure\nallured\nallurement\nallurements\nallurer\nallurers\nallures\nalluring\nalluringly\nallusion\nallusions\nallusive\nallusively\nallusiveness\nalluvia\nalluvial\nalluvials\nalluvion\nalluvions\nalluvium\nalluviums\nally\nallying\nallyl\nallylic\nallyls\nalma\nalmagest\nalmagests\nalmah\nalmahs\nalmanac\nalmanacs\nalmas\nalme\nalmeh\nalmehs\nalmemar\nalmemars\nalmes\nalmightiness\nalmighty\nalmner\nalmners\nalmond\nalmonds\nalmoner\nalmoners\nalmonries\nalmonry\nalmost\nalms\nalmsman\nalmsmen\nalmuce\nalmuces\nalmud\nalmude\nalmudes\nalmuds\nalmug\nalmugs\nalnico\nalnicoes\nalodia\nalodial\nalodium\naloe\naloes\naloetic\naloft\nalogical\naloha\nalohas\naloin\naloins\nalone\nalong\nalongshore\nalongside\naloof\naloofly\naloofness\nalopecia\nalopecias\nalopecic\naloud\nalow\nalp\nalpaca\nalpacas\nalpenstock\nalpenstocks\nalpha\nalphabet\nalphabeted\nalphabetic\nalphabetical\nalphabetically\nalphabeting\nalphabetization\nalphabetizations\nalphabetize\nalphabetized\nalphabetizer\nalphabetizers\nalphabetizes\nalphabetizing\nalphabets\nalphameric\nalphanumeric\nalphas\nalphorn\nalphorns\nalphosis\nalphosises\nalphyl\nalphyls\nalpine\nalpinely\nalpines\nalpinism\nalpinisms\nalpinist\nalpinists\nalps\nalready\nalright\nals\nalsike\nalsikes\nalso\nalt\naltar\naltarpiece\naltarpieces\naltars\nalter\nalterabilities\nalterability\nalterable\nalterably\nalterant\nalterants\nalteration\nalterations\nalterative\nalteratives\naltercation\naltercations\naltered\nalterer\nalterers\naltering\nalternate\nalternated\nalternately\nalternates\nalternating\nalternation\nalternations\nalternative\nalternatively\nalternatives\nalternator\nalternators\nalters\nalthaea\nalthaeas\nalthea\naltheas\naltho\nalthorn\nalthorns\nalthough\naltimeter\naltimeters\naltitude\naltitudes\nalto\naltogether\naltos\naltruism\naltruisms\naltruist\naltruistic\naltruistically\naltruists\nalts\naludel\naludels\nalula\nalulae\nalular\nalum\nalumin\nalumina\naluminas\nalumine\nalumines\naluminic\naluminize\naluminized\naluminizes\naluminizing\nalumins\naluminum\naluminums\nalumna\nalumnae\nalumni\nalumnus\nalumroot\nalumroots\nalums\nalunite\nalunites\nalveolar\nalveolars\nalveoli\nalveolus\nalvine\nalway\nalways\nalyssum\nalyssums\nam\nama\namadavat\namadavats\namadou\namadous\namah\namahs\namain\namalgam\namalgamate\namalgamated\namalgamates\namalgamating\namalgamation\namalgamations\namalgamator\namalgamators\namalgams\namandine\namanita\namanitas\namanuenses\namanuensis\namaranth\namaranthine\namaranths\namarelle\namarelles\namarna\namaryllis\namaryllises\namas\namass\namassed\namasser\namassers\namasses\namassing\namateur\namateurish\namateurishly\namateurishness\namateurism\namateurisms\namateurs\namative\namatol\namatols\namatory\namaze\namazed\namazedly\namazement\namazements\namazes\namazing\namazingly\namazon\namazonian\namazons\nambage\nambages\nambari\nambaries\nambaris\nambary\nambassador\nambassadorial\nambassadors\nambassadorship\nambassadorships\nambeer\nambeers\namber\nambergris\nambergrises\namberies\namberoid\namberoids\nambers\nambery\nambiance\nambiances\nambidexterity\nambidextrous\nambidextrously\nambience\nambiences\nambient\nambients\nambiguities\nambiguity\nambiguous\nambiguously\nambiguousness\nambit\nambition\nambitioned\nambitioning\nambitions\nambitious\nambitiously\nambitiousness\nambits\nambivalence\nambivalences\nambivalent\nambivert\nambiverts\namble\nambled\nambler\namblers\nambles\nambling\nambo\namboina\namboinas\nambones\nambos\namboyna\namboynas\nambries\nambroid\nambroids\nambrosia\nambrosias\nambry\nambsace\nambsaces\nambulance\nambulances\nambulant\nambulate\nambulated\nambulates\nambulating\nambulatory\nambuscade\nambuscaded\nambuscades\nambuscading\nambush\nambushed\nambusher\nambushers\nambushes\nambushing\nameba\namebae\nameban\namebas\namebean\namebic\nameboid\nameer\nameerate\nameerates\nameers\namelcorn\namelcorns\nameliorate\nameliorated\nameliorates\nameliorating\namelioration\nameliorations\nameliorative\namen\namenability\namenable\namenably\namend\namendable\namendatory\namended\namender\namenders\namending\namendment\namendments\namends\namenities\namenity\namens\nament\namentia\namentias\naments\namerce\namerced\namercer\namercers\namerces\namercing\namericium\namesace\namesaces\namethyst\namethysts\nami\namia\namiability\namiable\namiably\namiantus\namiantuses\namias\namicability\namicable\namicably\namice\namices\namid\namidase\namidases\namide\namides\namidic\namidin\namidins\namido\namidogen\namidogens\namidol\namidols\namids\namidship\namidships\namidst\namie\namies\namiga\namigas\namigo\namigos\namin\namine\namines\naminic\naminities\naminity\namino\namins\namir\namirate\namirates\namirs\namis\namiss\namities\namitoses\namitosis\namitotic\namitrole\namitroles\namity\nammeter\nammeters\nammine\nammines\nammino\nammo\nammocete\nammocetes\nammonal\nammonals\nammonia\nammoniac\nammoniacs\nammonias\nammonic\nammonified\nammonifies\nammonify\nammonifying\nammonite\nammonites\nammonium\nammoniums\nammonoid\nammonoids\nammos\nammunition\nammunitions\namnesia\namnesiac\namnesiacs\namnesias\namnesic\namnesics\namnestic\namnestied\namnesties\namnesty\namnestying\namnic\namniocenteses\namniocentesis\namnion\namnionia\namnionic\namnionions\namniote\namniotes\namniotic\namoeba\namoebae\namoeban\namoebas\namoebean\namoebic\namoeboid\namok\namoks\namole\namoles\namong\namongst\namontillado\namontillados\namoral\namorality\namorally\namoretti\namoretto\namorettos\namorini\namorino\namorist\namorists\namoroso\namorous\namorously\namorousness\namorphous\namorphously\namorphousness\namort\namortise\namortised\namortises\namortising\namortizable\namortization\namortizations\namortize\namortized\namortizes\namortizing\namotion\namotions\namount\namounted\namounting\namounts\namour\namours\namp\namperage\namperages\nampere\namperes\nampersand\nampersands\namphetamine\namphetamines\namphibia\namphibian\namphibians\namphibious\namphioxi\namphipod\namphipods\namphitheater\namphitheaters\namphora\namphorae\namphoral\namphoras\nample\nampler\namplest\namplification\namplifications\namplified\namplifier\namplifiers\namplifies\namplify\namplifying\namplitude\namplitudes\namply\nampoule\nampoules\namps\nampul\nampule\nampules\nampulla\nampullae\nampullar\nampuls\namputate\namputated\namputates\namputating\namputation\namputations\namputee\namputees\namreeta\namreetas\namrita\namritas\namtrac\namtrack\namtracks\namtracs\namu\namuck\namucks\namulet\namulets\namus\namusable\namuse\namused\namusedly\namusement\namusements\namuser\namusers\namuses\namusing\namusingly\namusive\namygdala\namygdalae\namygdale\namygdales\namygdule\namygdules\namyl\namylase\namylases\namylene\namylenes\namylic\namyloid\namyloids\namylose\namyloses\namyls\namylum\namylums\nan\nana\nanabaena\nanabaenas\nanabas\nanabases\nanabasis\nanabatic\nanableps\nanablepses\nanabolic\nanabolism\nanabolisms\nanachronism\nanachronisms\nanachronistic\nanaconda\nanacondas\nanadem\nanadems\nanaemia\nanaemias\nanaemic\nanaerobe\nanaerobes\nanaglyph\nanaglyphs\nanagoge\nanagoges\nanagogic\nanagogies\nanagogy\nanagram\nanagrammed\nanagramming\nanagrams\nanal\nanalcime\nanalcimes\nanalcite\nanalcites\nanalecta\nanalects\nanalemma\nanalemmas\nanalemmata\nanalgesia\nanalgesic\nanalgesics\nanalgia\nanalgias\nanalities\nanality\nanally\nanalog\nanalogic\nanalogical\nanalogically\nanalogies\nanalogize\nanalogized\nanalogizes\nanalogizing\nanalogous\nanalogously\nanalogs\nanalogue\nanalogues\nanalogy\nanalyse\nanalysed\nanalyser\nanalysers\nanalyses\nanalysing\nanalysis\nanalyst\nanalysts\nanalytic\nanalytical\nanalytically\nanalyze\nanalyzed\nanalyzer\nanalyzers\nanalyzes\nanalyzing\nananke\nanankes\nanapaest\nanapaests\nanapest\nanapests\nanaphase\nanaphases\nanaphora\nanaphoras\nanarch\nanarchic\nanarchies\nanarchism\nanarchisms\nanarchist\nanarchistic\nanarchists\nanarchs\nanarchy\nanas\nanasarca\nanasarcas\nanatase\nanatases\nanathema\nanathemas\nanathemata\nanathematize\nanathematized\nanathematizes\nanathematizing\nanatomic\nanatomical\nanatomically\nanatomies\nanatomist\nanatomists\nanatomize\nanatomized\nanatomizes\nanatomizing\nanatomy\nanatoxin\nanatoxins\nanatto\nanattos\nancestor\nancestors\nancestral\nancestress\nancestresses\nancestries\nancestry\nanchor\nanchorage\nanchorages\nanchored\nanchoret\nanchorets\nanchoring\nanchorite\nanchorites\nanchorman\nanchormen\nanchors\nanchovies\nanchovy\nanchusa\nanchusas\nanchusin\nanchusins\nancient\nancienter\nancientest\nanciently\nancientness\nancients\nancilla\nancillae\nancillary\nancillas\nancon\nanconal\nancone\nanconeal\nancones\nanconoid\nancress\nancresses\nand\nandante\nandantes\nandesite\nandesites\nandesyte\nandesytes\nandiron\nandirons\nandrogen\nandrogenic\nandrogens\nandrogynous\nandroid\nandroids\nands\nane\nanear\naneared\nanearing\nanears\nanecdota\nanecdotal\nanecdotally\nanecdote\nanecdotes\nanecdotist\nanecdotists\nanechoic\nanele\naneled\naneles\naneling\nanemia\nanemias\nanemic\nanemograph\nanemographs\nanemometer\nanemometers\nanemone\nanemones\nanenst\nanent\nanergia\nanergias\nanergic\nanergies\nanergy\naneroid\naneroids\nanes\nanesthesia\nanesthesias\nanesthesiologist\nanesthesiologists\nanesthesiology\nanesthetic\nanesthetics\nanesthetist\nanesthetists\nanesthetize\nanesthetized\nanesthetizes\nanesthetizing\nanestri\nanestrus\nanethol\nanethole\nanetholes\nanethols\naneurism\naneurisms\naneurysm\naneurysmal\naneurysms\nanew\nanga\nangaria\nangarias\nangaries\nangary\nangas\nangel\nangelfish\nangelic\nangelica\nangelical\nangelically\nangelicas\nangels\nangelus\nangeluses\nanger\nangered\nangering\nangerly\nangers\nangina\nanginal\nanginas\nanginose\nanginous\nangioma\nangiomas\nangiomata\nangle\nangled\nanglepod\nanglepods\nangler\nanglers\nangles\nangleworm\nangleworms\nanglice\nanglicism\nanglicisms\nanglicize\nanglicized\nanglicizes\nanglicizing\nangling\nanglings\nangora\nangoras\nangrier\nangriest\nangrily\nangry\nangst\nangstrom\nangstroms\nangsts\nanguine\nanguish\nanguished\nanguishes\nanguishing\nangular\nangularities\nangularity\nangularly\nangulate\nangulated\nangulates\nangulating\nangulose\nangulous\nanhinga\nanhingas\nanhydride\nanhydrides\nanhydrous\nani\nanil\nanile\nanilin\naniline\nanilines\nanilins\nanilities\nanility\nanils\nanima\nanimadversion\nanimadversions\nanimal\nanimalcule\nanimalcules\nanimalism\nanimalisms\nanimalistic\nanimally\nanimals\nanimas\nanimate\nanimated\nanimatedly\nanimater\nanimaters\nanimates\nanimating\nanimation\nanimations\nanimato\nanimator\nanimators\nanime\nanimes\nanimi\nanimis\nanimism\nanimisms\nanimist\nanimistic\nanimists\nanimosities\nanimosity\nanimus\nanimuses\nanion\nanionic\nanions\nanis\nanise\naniseed\naniseeds\nanises\nanisette\nanisettes\nanisic\nanisole\nanisoles\nankerite\nankerites\nankh\nankhs\nankle\nanklebone\nanklebones\nankles\nanklet\nanklets\nankus\nankuses\nankush\nankushes\nankylose\nankylosed\nankyloses\nankylosing\nanlace\nanlaces\nanlage\nanlagen\nanlages\nanlas\nanlases\nanna\nannal\nannalist\nannalistic\nannalists\nannals\nannas\nannates\nannatto\nannattos\nanneal\nannealed\nannealer\nannealers\nannealing\nanneals\nannelid\nannelids\nannex\nannexation\nannexational\nannexationist\nannexationists\nannexations\nannexe\nannexed\nannexes\nannexing\nannihilate\nannihilated\nannihilates\nannihilating\nannihilation\nannihilations\nannihilator\nannihilators\nanniversaries\nanniversary\nannotate\nannotated\nannotates\nannotating\nannotation\nannotations\nannotator\nannotators\nannounce\nannounced\nannouncement\nannouncements\nannouncer\nannouncers\nannounces\nannouncing\nannoy\nannoyance\nannoyances\nannoyed\nannoyer\nannoyers\nannoying\nannoyingly\nannoys\nannual\nannualize\nannualized\nannualizes\nannualizing\nannually\nannuals\nannuitant\nannuitants\nannuities\nannuity\nannul\nannular\nannulate\nannulet\nannulets\nannuli\nannulled\nannulling\nannulment\nannulments\nannulose\nannuls\nannulus\nannuluses\nannunciate\nannunciated\nannunciates\nannunciating\nannunciation\nannunciations\nannunciator\nannunciators\nanoa\nanoas\nanodal\nanodally\nanode\nanodes\nanodic\nanodically\nanodize\nanodized\nanodizes\nanodizing\nanodyne\nanodynes\nanodynic\nanoint\nanointed\nanointer\nanointers\nanointing\nanointment\nanointments\nanoints\nanole\nanoles\nanolyte\nanolytes\nanomalies\nanomalous\nanomalously\nanomaly\nanomic\nanomie\nanomies\nanomy\nanon\nanonym\nanonymities\nanonymity\nanonymous\nanonymously\nanonymousness\nanonyms\nanoopsia\nanoopsias\nanopheles\nanopia\nanopias\nanopsia\nanopsias\nanorak\nanoraks\nanoretic\nanorexia\nanorexias\nanorexies\nanorexy\nanorthic\nanosmia\nanosmias\nanosmic\nanother\nanoxemia\nanoxemias\nanoxemic\nanoxia\nanoxias\nanoxic\nansa\nansae\nansate\nansated\nanserine\nanserines\nanserous\nanswer\nanswerable\nanswered\nanswerer\nanswerers\nanswering\nanswers\nant\nanta\nantacid\nantacids\nantae\nantagonism\nantagonisms\nantagonist\nantagonistic\nantagonistically\nantagonists\nantagonize\nantagonized\nantagonizes\nantagonizing\nantalgic\nantalgics\nantarctic\nantas\nante\nanteater\nanteaters\nantebellum\nantecede\nanteceded\nantecedent\nantecedently\nantecedents\nantecedes\nanteceding\nantechamber\nantechambers\nanted\nantedate\nantedated\nantedates\nantedating\nantediluvian\nanteed\nantefix\nantefixa\nantefixes\nanteing\nantelope\nantelopes\nantenna\nantennae\nantennal\nantennas\nantepast\nantepasts\nantepenult\nantepenultimate\nantepenultimates\nantepenults\nanterior\nanteriorly\nanteroom\nanterooms\nantes\nantetype\nantetypes\nantevert\nanteverted\nanteverting\nanteverts\nanthelia\nanthelices\nanthelix\nanthem\nanthemed\nanthemia\nantheming\nanthems\nanther\nantheral\nantherid\nantherids\nanthers\nantheses\nanthesis\nanthill\nanthills\nanthodia\nanthoid\nanthologies\nanthologist\nanthologists\nanthologize\nanthologized\nanthologizes\nanthologizing\nanthology\nanthraces\nanthracite\nanthracites\nanthracitic\nanthrax\nanthropocentric\nanthropoid\nanthropoids\nanthropological\nanthropologically\nanthropologist\nanthropologists\nanthropology\nanthropomorphic\nanthropomorphically\nanthropomorphism\nanthropomorphisms\nanthropomorphize\nanthropomorphized\nanthropomorphizes\nanthropomorphizing\nanti\nantiaircraft\nantiar\nantiarin\nantiarins\nantiars\nantiauthoritarian\nantiauthoritarianism\nantibacterial\nantibacterials\nantibiotic\nantibiotics\nantibodies\nantibody\nantic\nanticipate\nanticipated\nanticipates\nanticipating\nanticipation\nanticipations\nanticipator\nanticipators\nanticipatory\nantick\nanticked\nanticking\nanticks\nanticlimactic\nanticlimactically\nanticlimax\nanticlimaxes\nanticly\nantics\nantidepressant\nantidepressants\nantidisestablishmentarianism\nantidotal\nantidotally\nantidote\nantidotes\nantiestablishment\nantifat\nantifreeze\nantifreezes\nantigen\nantigene\nantigenes\nantigens\nantihero\nantiheroes\nantiheroic\nantiheroine\nantiheroines\nantihistamine\nantihistamines\nantiking\nantikings\nantiknock\nantilog\nantilogarithm\nantilogarithms\nantilogies\nantilogs\nantilogy\nantimacassar\nantimacassars\nantimask\nantimasks\nantimatter\nantimere\nantimeres\nantimicrobial\nantimicrobials\nantimonies\nantimony\nanting\nantings\nantinode\nantinodes\nantinomies\nantinomy\nantinuclear\nantiparticle\nantiparticles\nantipasti\nantipasto\nantipathetic\nantipathies\nantipathy\nantipersonnel\nantiperspirant\nantiperspirants\nantiphon\nantiphonal\nantiphonies\nantiphons\nantiphony\nantipodal\nantipode\nantipodes\nantipole\nantipoles\nantipollution\nantipope\nantipopes\nantipyic\nantipyics\nantiquarian\nantiquarianism\nantiquarians\nantiquaries\nantiquary\nantiquate\nantiquated\nantiquates\nantiquating\nantique\nantiqued\nantiquer\nantiquers\nantiques\nantiquing\nantiquities\nantiquity\nantirust\nantirusts\nantis\nantisepsis\nantiseptic\nantiseptically\nantiseptics\nantisera\nantiskid\nantismog\nantisocial\nantitank\nantitax\nantitheses\nantithesis\nantithetic\nantithetical\nantithetically\nantitoxic\nantitoxin\nantitoxins\nantitrust\nantitype\nantitypes\nantiviral\nantiwar\nantler\nantlered\nantlers\nantlike\nantlion\nantlions\nantonym\nantonymies\nantonyms\nantonymy\nantra\nantral\nantre\nantres\nantrorse\nantrum\nants\nantsy\nanuran\nanurans\nanureses\nanuresis\nanuretic\nanuria\nanurias\nanuric\nanurous\nanus\nanuses\nanvil\nanviled\nanviling\nanvilled\nanvilling\nanvils\nanviltop\nanviltops\nanxieties\nanxiety\nanxious\nanxiously\nanxiousness\nany\nanybodies\nanybody\nanyhow\nanymore\nanyone\nanyplace\nanything\nanythings\nanytime\nanyway\nanyways\nanywhere\nanywheres\nanywise\naorist\naoristic\naorists\naorta\naortae\naortal\naortas\naortic\naoudad\naoudads\napace\napache\napaches\napagoge\napagoges\napagogic\napanage\napanages\naparejo\naparejos\napart\napartheid\napartment\napartments\napatetic\napathetic\napathetically\napathies\napathy\napatite\napatites\nape\napeak\naped\napeek\napelike\naper\napercu\napercus\naperient\naperients\naperies\naperitif\naperitifs\napers\naperture\napertures\napery\napes\napetalies\napetaly\napex\napexes\naphagia\naphagias\naphanite\naphanites\naphasia\naphasiac\naphasiacs\naphasias\naphasic\naphasics\naphelia\naphelian\naphelion\napheses\naphesis\naphetic\naphid\naphides\naphidian\naphidians\naphids\naphis\napholate\napholates\naphonia\naphonias\naphonic\naphonics\naphorise\naphorised\naphorises\naphorising\naphorism\naphorisms\naphorist\naphoristic\naphoristically\naphorists\naphorize\naphorized\naphorizes\naphorizing\naphotic\naphrodisiac\naphrodisiacal\naphrodisiacs\naphtha\naphthae\naphthous\naphyllies\naphylly\napian\napiarian\napiarians\napiaries\napiarist\napiarists\napiary\napical\napically\napices\napiculi\napiculus\napiece\napimania\napimanias\naping\napiologies\napiology\napish\napishly\naplasia\naplasias\naplastic\naplenty\naplite\naplites\naplitic\naplomb\naplombs\napnea\napneal\napneas\napneic\napnoea\napnoeal\napnoeas\napnoeic\napocalypse\napocalyptic\napocalyptically\napocarp\napocarpies\napocarps\napocarpy\napocope\napocopes\napocopic\napocrine\napocrypha\napocryphal\napocryphally\napod\napodal\napodoses\napodosis\napodous\napods\napogamic\napogamies\napogamy\napogeal\napogean\napogee\napogees\napogeic\napolitical\napollo\napollos\napolog\napologal\napologetic\napologetically\napologia\napologiae\napologias\napologies\napologist\napologists\napologize\napologized\napologizes\napologizing\napologs\napologue\napologues\napology\napolune\napolunes\napomict\napomicts\napomixes\napomixis\napophyge\napophyges\napoplectic\napoplexies\napoplexy\naport\napostacies\napostacy\napostasies\napostasy\napostate\napostates\napostatize\napostatized\napostatizes\napostatizing\napostil\napostils\napostle\napostles\napostolic\napostolicity\napostrophe\napostrophes\napostrophize\napostrophized\napostrophizes\napostrophizing\napothecaries\napothecary\napothece\napotheces\napothegm\napothegms\napothem\napothems\napotheoses\napotheosis\nappal\nappall\nappalled\nappalling\nappalls\nappals\nappanage\nappanages\napparat\napparats\napparatus\napparatuses\napparel\nappareled\nappareling\napparelled\napparelling\napparels\napparent\napparently\napparentness\napparition\napparitional\napparitions\nappeal\nappealability\nappealable\nappealed\nappealer\nappealers\nappealing\nappealingly\nappeals\nappear\nappearance\nappearances\nappeared\nappearing\nappears\nappeasable\nappease\nappeased\nappeasement\nappeasements\nappeaser\nappeasers\nappeases\nappeasing\nappel\nappellant\nappellants\nappellate\nappellation\nappellations\nappellee\nappellees\nappellor\nappellors\nappels\nappend\nappendage\nappendages\nappendectomies\nappendectomy\nappended\nappendices\nappendicitis\nappending\nappendix\nappendixes\nappends\napperceive\napperceived\napperceives\napperceiving\napperception\napperceptions\napperceptive\nappertain\nappertained\nappertaining\nappertains\nappestat\nappestats\nappetent\nappetite\nappetites\nappetizer\nappetizers\nappetizing\nappetizingly\napplaud\napplaudable\napplaudably\napplauded\napplauder\napplauders\napplauding\napplauds\napplause\napplauses\napple\napplejack\napples\nappliance\nappliances\napplicability\napplicable\napplicant\napplicants\napplication\napplications\napplicator\napplicators\napplied\napplier\nappliers\napplies\napplique\nappliqued\nappliqueing\nappliques\napply\napplying\nappoggiatura\nappoggiaturas\nappoint\nappointed\nappointee\nappointees\nappointing\nappointive\nappointment\nappointments\nappoints\napportion\napportioned\napportioning\napportionment\napportionments\napportions\nappose\napposed\napposer\napposers\napposes\napposing\napposite\nappositely\nappositeness\napposition\nappositional\nappositions\nappositive\nappositively\nappositives\nappraisal\nappraisals\nappraise\nappraised\nappraiser\nappraisers\nappraises\nappraising\nappreciable\nappreciably\nappreciate\nappreciated\nappreciates\nappreciating\nappreciation\nappreciations\nappreciative\nappreciatively\nappreciativeness\nappreciator\nappreciators\napprehend\napprehended\napprehending\napprehends\napprehensible\napprehensibly\napprehension\napprehensions\napprehensive\napprehensively\napprehensiveness\napprentice\napprenticed\napprentices\napprenticeship\napprenticeships\napprenticing\napprise\napprised\nappriser\napprisers\napprises\napprising\napprize\napprized\napprizer\napprizers\napprizes\napprizing\napproach\napproachability\napproachable\napproached\napproaches\napproaching\napprobate\napprobation\napprobations\nappropriate\nappropriated\nappropriately\nappropriateness\nappropriates\nappropriating\nappropriation\nappropriations\nappropriator\nappropriators\napproval\napprovals\napprove\napproved\napprover\napprovers\napproves\napproving\napprovingly\napproximate\napproximated\napproximately\napproximates\napproximating\napproximation\napproximations\nappulse\nappulses\nappurtenance\nappurtenances\nappurtenant\napractic\napraxia\napraxias\napraxic\napres\napricot\napricots\napron\naproned\naproning\naprons\napropos\napse\napses\napsidal\napsides\napsis\napt\napter\napteral\napterous\napteryx\napteryxes\naptest\naptitude\naptitudes\naptly\naptness\naptnesses\napyrase\napyrases\napyretic\naqua\naquacade\naquacades\naquaducts\naquae\naquamarine\naquamarines\naquanaut\naquanauts\naquaplane\naquaplaned\naquaplaner\naquaplaners\naquaplanes\naquaplaning\naquaria\naquarial\naquarian\naquarians\naquarist\naquarists\naquarium\naquariums\naquas\naquatic\naquatically\naquatics\naquatint\naquatinted\naquatinting\naquatints\naquatone\naquatones\naquavit\naquavits\naqueduct\naqueducts\naqueous\naquifer\naquiferous\naquifers\naquiline\naquiver\nar\narabesk\narabesks\narabesque\narabesques\narability\narabize\narabized\narabizes\narabizing\narable\narables\naraceous\narachnid\narachnids\naragonite\naragonites\narak\naraks\naraneid\naraneids\narapaima\narapaimas\nararoba\nararobas\narb\narbalest\narbalests\narbalist\narbalists\narbiter\narbiters\narbitrable\narbitral\narbitrament\narbitraments\narbitrarily\narbitrariness\narbitrary\narbitrate\narbitrated\narbitrates\narbitrating\narbitration\narbitrations\narbitrative\narbitrator\narbitrators\narbor\narboreal\narboreally\narbored\narbores\narboreta\narboretum\narboretums\narborist\narborists\narborize\narborized\narborizes\narborizing\narborous\narbors\narborvitae\narborvitaes\narbour\narboured\narbours\narbs\narbuscle\narbuscles\narbute\narbutean\narbutes\narbutus\narbutuses\narc\narcade\narcaded\narcades\narcadia\narcadian\narcadians\narcadias\narcading\narcadings\narcana\narcane\narcanum\narcature\narcatures\narced\narch\narchaeological\narchaeologist\narchaeologists\narchaeology\narchaic\narchaically\narchaise\narchaised\narchaises\narchaising\narchaism\narchaisms\narchaist\narchaists\narchaize\narchaized\narchaizes\narchaizing\narchangel\narchangels\narchbishop\narchbishops\narchdeacon\narchdeacons\narchdiocese\narchdioceses\narchduchess\narchduchesses\narchduchies\narchduchy\narchduke\narchdukes\narched\narchenemies\narchenemy\narcheological\narcheologist\narcheologists\narcheology\narcher\narcheries\narchers\narchery\narches\narchetypal\narchetype\narchetypes\narchfiend\narchfiends\narchiepiscopal\narchil\narchils\narchine\narchines\narching\narchings\narchipelago\narchipelagoes\narchipelagos\narchitect\narchitectonic\narchitectonics\narchitects\narchitectural\narchitecturally\narchitecture\narchitectures\narchitrave\narchitraves\narchival\narchive\narchived\narchives\narchiving\narchivist\narchivists\narchly\narchness\narchnesses\narchon\narchons\narchway\narchways\narciform\narcing\narcked\narcking\narco\narcs\narctic\narctics\narcuate\narcuated\narcus\narcuses\nardeb\nardebs\nardencies\nardency\nardent\nardently\nardor\nardors\nardour\nardours\narduous\narduously\narduousness\nare\narea\nareae\nareal\nareally\nareas\nareaway\nareaways\nareca\narecas\nareic\narena\narenas\narenose\narenous\nareola\nareolae\nareolar\nareolas\nareolate\nareole\nareoles\nareologies\nareology\nares\narete\naretes\narethusa\narethusas\narf\narfs\nargal\nargali\nargalis\nargals\nargent\nargental\nargentic\nargentine\nargentines\nargents\nargentum\nargentums\nargil\nargils\narginase\narginases\narginine\narginines\nargle\nargled\nargles\nargling\nargol\nargols\nargon\nargonaut\nargonauts\nargons\nargosies\nargosy\nargot\nargotic\nargots\narguable\narguably\nargue\nargued\narguer\narguers\nargues\nargufied\nargufier\nargufiers\nargufies\nargufy\nargufying\narguing\nargument\nargumentation\nargumentations\nargumentative\narguments\nargus\narguses\nargyle\nargyles\nargyll\nargylls\narhat\narhats\naria\narias\narid\narider\naridest\naridities\naridity\naridly\naridness\naridnesses\nariel\nariels\narietta\nariettas\nariette\nariettes\naright\naril\nariled\narillate\narillode\narillodes\narilloid\narils\nariose\nariosi\narioso\nariosos\narise\narisen\narises\narising\narista\naristae\naristas\naristate\naristocracies\naristocracy\naristocrat\naristocratic\naristocrats\narithmetic\narithmetical\narithmetically\narithmetician\narithmeticians\nark\narks\narles\narm\narmada\narmadas\narmadillo\narmadillos\narmament\narmaments\narmature\narmatured\narmatures\narmaturing\narmband\narmbands\narmchair\narmchairs\narmed\narmer\narmers\narmet\narmets\narmful\narmfuls\narmhole\narmholes\narmies\narmiger\narmigero\narmigeros\narmigers\narmilla\narmillae\narmillas\narming\narmings\narmistice\narmistices\narmless\narmlet\narmlets\narmlike\narmload\narmloads\narmoire\narmoires\narmonica\narmonicas\narmor\narmored\narmorer\narmorers\narmorial\narmorials\narmories\narmoring\narmors\narmory\narmour\narmoured\narmourer\narmourers\narmouries\narmouring\narmours\narmoury\narmpit\narmpits\narmrest\narmrests\narms\narmsful\narmure\narmures\narmy\narmyworm\narmyworms\narnatto\narnattos\narnica\narnicas\narnotto\narnottos\naroid\naroids\naroint\narointed\narointing\naroints\naroma\naromas\naromatic\naromatics\narose\naround\narousal\narousals\narouse\naroused\narouser\narousers\narouses\narousing\naroynt\naroynted\naroynting\naroynts\narpeggio\narpeggios\narpen\narpens\narpent\narpents\narquebus\narquebuses\narrack\narracks\narraign\narraigned\narraigning\narraignment\narraignments\narraigns\narrange\narranged\narrangement\narrangements\narranger\narrangers\narranges\narranging\narrant\narrantly\narras\narrased\narray\narrayal\narrayals\narrayed\narrayer\narrayers\narraying\narrays\narrear\narrears\narrest\narrested\narrestee\narrestees\narrester\narresters\narresting\narrestor\narrestors\narrests\narrhizal\narris\narrises\narrival\narrivals\narrive\narrived\narriver\narrivers\narrives\narriving\narroba\narrobas\narrogance\narrogant\narrogantly\narrogate\narrogated\narrogates\narrogating\narrogation\narrogations\narrow\narrowed\narrowhead\narrowheads\narrowing\narrowroot\narrows\narrowy\narroyo\narroyos\nars\narse\narsenal\narsenals\narsenate\narsenates\narsenic\narsenics\narsenide\narsenides\narsenite\narsenites\narseno\narsenous\narses\narshin\narshins\narsine\narsines\narsino\narsis\narson\narsonist\narsonists\narsonous\narsons\nart\nartal\nartefact\nartefacts\nartel\nartels\narterial\narterials\narteries\narteriosclerosis\narteriosclerotic\nartery\nartful\nartfully\nartfulness\narthritic\narthritides\narthritis\narthropod\nartichoke\nartichokes\narticle\narticled\narticles\narticling\narticular\narticulate\narticulated\narticulately\narticulateness\narticulates\narticulating\narticulation\narticulations\nartier\nartiest\nartifact\nartifacts\nartifice\nartificer\nartificers\nartifices\nartificial\nartificialities\nartificiality\nartificially\nartilleries\nartillery\nartily\nartiness\nartinesses\nartisan\nartisans\nartist\nartiste\nartistes\nartistic\nartistically\nartistries\nartistry\nartists\nartless\nartlessly\nartlessness\narts\nartsy\nartwork\nartworks\narty\narum\narums\naruspex\naruspices\narval\narvo\narvos\naryl\naryls\narythmia\narythmias\narythmic\nas\nasafetida\nasafoetida\nasarum\nasarums\nasbestic\nasbestos\nasbestoses\nasbestus\nasbestuses\nascarid\nascarides\nascarids\nascaris\nascend\nascendable\nascendancies\nascendancy\nascendant\nascendants\nascended\nascender\nascenders\nascendible\nascending\nascends\nascension\nascensions\nascent\nascents\nascertain\nascertained\nascertaining\nascertains\nasceses\nascesis\nascetic\nasceticism\nascetics\nasci\nascidia\nascidian\nascidians\nascidium\nascites\nascitic\nascocarp\nascocarps\nascorbic\nascot\nascots\nascribable\nascribe\nascribed\nascribes\nascribing\nascription\nascriptions\nascus\nasdic\nasdics\nasea\nasepses\nasepsis\naseptic\naseptically\nasexual\nasexuality\nasexually\nash\nashamed\nashamedly\nashcan\nashcans\nashed\nashen\nashes\nashier\nashiest\nashing\nashlar\nashlared\nashlaring\nashlars\nashler\nashlered\nashlering\nashlers\nashless\nashman\nashmen\nashore\nashplant\nashplants\nashram\nashrams\nashtray\nashtrays\nashy\naside\nasides\nasinine\nasininities\nasininity\nask\naskance\naskant\nasked\nasker\naskers\naskeses\naskesis\naskew\nasking\naskings\naskoi\naskos\nasks\naslant\nasleep\naslope\nasocial\nasp\nasparagus\naspect\naspects\naspen\naspens\nasper\nasperate\nasperated\nasperates\nasperating\nasperges\nasperities\nasperity\naspers\nasperse\naspersed\nasperser\naspersers\nasperses\naspersing\naspersion\naspersions\naspersor\naspersors\nasphalt\nasphalted\nasphaltic\nasphalting\nasphalts\naspheric\nasphodel\nasphodels\nasphyxia\nasphyxias\nasphyxiate\nasphyxiated\nasphyxiates\nasphyxiating\nasphyxiation\nasphyxiations\nasphyxiator\nasphyxiators\nasphyxies\nasphyxy\naspic\naspics\naspirant\naspirants\naspirata\naspiratae\naspirate\naspirated\naspirates\naspirating\naspiration\naspirations\naspirator\naspirators\naspire\naspired\naspirer\naspirers\naspires\naspirin\naspiring\naspirins\naspis\naspises\naspish\nasps\nasquint\nasrama\nasramas\nass\nassagai\nassagaied\nassagaiing\nassagais\nassai\nassail\nassailable\nassailant\nassailants\nassailed\nassailer\nassailers\nassailing\nassails\nassais\nassassin\nassassinate\nassassinated\nassassinates\nassassinating\nassassination\nassassinations\nassassinator\nassassinators\nassassins\nassault\nassaulted\nassaulting\nassaults\nassay\nassayed\nassayer\nassayers\nassaying\nassays\nassegai\nassegaied\nassegaiing\nassegais\nassemblage\nassemblages\nassemble\nassembled\nassembler\nassemblers\nassembles\nassemblies\nassembling\nassembly\nassemblyman\nassemblymen\nassemblywoman\nassemblywomen\nassent\nassented\nassenter\nassenters\nassenting\nassentor\nassentors\nassents\nassert\nasserted\nasserter\nasserters\nasserting\nassertion\nassertions\nassertive\nassertively\nassertor\nassertors\nasserts\nasses\nassess\nassessable\nassessed\nassesses\nassessing\nassessment\nassessments\nassessor\nassessors\nasset\nassets\nasseverate\nasseverated\nasseverates\nasseverating\nasseveration\nasseverations\nassiduities\nassiduity\nassiduous\nassiduously\nassiduousness\nassign\nassignable\nassignat\nassignation\nassignations\nassignats\nassigned\nassignee\nassignees\nassigner\nassigners\nassigning\nassignment\nassignments\nassignor\nassignors\nassigns\nassimilable\nassimilate\nassimilated\nassimilates\nassimilating\nassimilation\nassimilations\nassimilative\nassimilator\nassimilators\nassist\nassistance\nassistant\nassistants\nassistantship\nassistantships\nassisted\nassister\nassisters\nassisting\nassistor\nassistors\nassists\nassize\nassizes\nasslike\nassociate\nassociated\nassociates\nassociating\nassociation\nassociations\nassociative\nassociatively\nassociativities\nassociativity\nassoil\nassoiled\nassoiling\nassoils\nassonance\nassonances\nassonant\nassonants\nassort\nassorted\nassorter\nassorters\nassorting\nassortment\nassortments\nassorts\nassuage\nassuaged\nassuagement\nassuagements\nassuages\nassuaging\nassumable\nassume\nassumed\nassumer\nassumers\nassumes\nassuming\nassumption\nassumptions\nassurance\nassurances\nassure\nassured\nassuredly\nassureds\nassurer\nassurers\nassures\nassuring\nassuror\nassurors\nasswage\nasswaged\nasswages\nasswaging\nastasia\nastasias\nastatic\nastatine\nastatines\naster\nasteria\nasterias\nasterisk\nasterisked\nasterisking\nasterisks\nasterism\nasterisms\nastern\nasternal\nasteroid\nasteroids\nasters\nasthenia\nasthenias\nasthenic\nasthenics\nasthenies\nastheny\nasthma\nasthmas\nasthmatic\nasthmatics\nastigmatic\nastigmatically\nastigmatism\nastigmatisms\nastir\nastomous\nastonied\nastonies\nastonish\nastonished\nastonishes\nastonishing\nastonishingly\nastonishment\nastonishments\nastony\nastonying\nastound\nastounded\nastounding\nastoundingly\nastounds\nastrachan\nastrachans\nastraddle\nastragal\nastragals\nastrakhan\nastrakhans\nastral\nastrally\nastrals\nastray\nastrict\nastricted\nastricting\nastricts\nastride\nastringe\nastringed\nastringencies\nastringency\nastringent\nastringents\nastringes\nastringing\nastrodome\nastrodomes\nastrolabe\nastrolabes\nastrologer\nastrologers\nastrological\nastrology\nastronaut\nastronautic\nastronautical\nastronautically\nastronautics\nastronauts\nastronomer\nastronomers\nastronomic\nastronomical\nastronomically\nastronomy\nastrophysical\nastrophysicist\nastrophysicists\nastrophysics\nastute\nastutely\nastuteness\nastylar\nasunder\naswarm\naswirl\naswoon\nasyla\nasylum\nasylums\nasymmetric\nasymmetrical\nasymmetries\nasymmetry\nasymptote\nasymptotes\nasymptotic\nasymptotically\nasynchronous\nasynchronously\nasyndeta\nat\natabal\natabals\nataghan\nataghans\natalaya\natalayas\nataman\natamans\natamasco\natamascos\natap\nataps\nataraxia\nataraxias\nataraxic\nataraxics\nataraxies\nataraxy\natavic\natavism\natavisms\natavist\natavistic\natavistically\natavists\nataxia\nataxias\nataxic\nataxics\nataxies\nataxy\nate\natechnic\natelic\natelier\nateliers\nates\nathanasies\nathanasy\natheism\natheisms\natheist\natheistic\natheistical\natheistically\natheists\natheling\nathelings\nathenaeum\nathenaeums\natheneum\natheneums\natheroma\natheromas\natheromata\natherosclerosis\natherosclerotic\nathirst\nathlete\nathletes\nathletic\nathletically\nathletics\nathodyd\nathodyds\nathwart\natilt\natingle\natlantes\natlas\natlases\natlatl\natlatls\natma\natman\natmans\natmas\natmosphere\natmospheres\natmospheric\natmospherically\natmospherics\natoll\natolls\natom\natomic\natomical\natomically\natomics\natomies\natomise\natomised\natomises\natomising\natomism\natomisms\natomist\natomists\natomize\natomized\natomizer\natomizers\natomizes\natomizing\natoms\natomy\natonable\natonal\natonality\natonally\natone\natoned\natonement\natonements\natoner\natoners\natones\natonic\natonics\natonies\natoning\natony\natop\natopic\natopies\natopy\natrazine\natrazines\natremble\natresia\natresias\natria\natrial\natrip\natrium\natriums\natrocious\natrociously\natrocities\natrocity\natrophia\natrophias\natrophic\natrophied\natrophies\natrophy\natrophying\natropin\natropine\natropines\natropins\natropism\natropisms\nattach\nattachable\nattache\nattached\nattacher\nattachers\nattaches\nattaching\nattachment\nattachments\nattack\nattacked\nattacker\nattackers\nattacking\nattacks\nattain\nattainability\nattainable\nattainder\nattainders\nattained\nattainer\nattainers\nattaining\nattainment\nattainments\nattains\nattaint\nattainted\nattainting\nattaints\nattar\nattars\nattemper\nattempered\nattempering\nattempers\nattempt\nattempted\nattempting\nattempts\nattend\nattendance\nattendances\nattendant\nattendants\nattended\nattendee\nattendees\nattender\nattenders\nattending\nattends\nattent\nattention\nattentions\nattentive\nattentively\nattentiveness\nattenuate\nattenuated\nattenuates\nattenuating\nattenuation\nattenuations\nattest\nattestation\nattestations\nattested\nattester\nattesters\nattesting\nattestor\nattestors\nattests\nattic\natticism\natticisms\natticist\natticists\nattics\nattire\nattired\nattires\nattiring\nattitude\nattitudes\nattitudinize\nattitudinized\nattitudinizes\nattitudinizing\nattorn\nattorned\nattorney\nattorneys\nattorning\nattorns\nattract\nattracted\nattracting\nattraction\nattractions\nattractive\nattractively\nattractiveness\nattracts\nattributable\nattribute\nattributed\nattributes\nattributing\nattribution\nattributions\nattributive\nattrite\nattrited\nattrition\nattritions\nattune\nattuned\nattunes\nattuning\natwain\natween\natwitter\natypic\natypical\natypically\naubade\naubades\nauberge\nauberges\nauburn\nauburns\nauction\nauctioned\nauctioneer\nauctioneers\nauctioning\nauctions\naudacious\naudaciously\naudaciousness\naudacities\naudacity\naudad\naudads\naudibility\naudible\naudibles\naudibly\naudience\naudiences\naudient\naudients\naudile\naudiles\nauding\naudings\naudio\naudiologist\naudiologists\naudiology\naudiometer\naudiometers\naudiophile\naudiophiles\naudios\naudiovisual\naudiovisuals\naudit\naudited\nauditing\naudition\nauditioned\nauditioning\nauditions\nauditive\nauditives\nauditor\nauditories\nauditorium\nauditoriums\nauditors\nauditory\naudits\naugend\naugends\nauger\naugers\naught\naughts\naugite\naugites\naugitic\naugment\naugmentation\naugmentations\naugmentative\naugmented\naugmenting\naugments\naugur\naugural\naugured\naugurer\naugurers\nauguries\nauguring\naugurs\naugury\naugust\nauguster\naugustest\naugustly\nauk\nauklet\nauklets\nauks\nauld\naulder\nauldest\naulic\naunt\naunthood\naunthoods\nauntie\naunties\nauntlier\nauntliest\nauntlike\nauntly\naunts\naunty\naura\naurae\naural\naurally\naurar\nauras\naurate\naurated\naureate\naurei\naureola\naureolae\naureolas\naureole\naureoled\naureoles\naureoling\naures\naureus\nauric\nauricle\nauricled\nauricles\nauricula\nauriculae\nauricular\nauriculas\nauriferous\nauriform\nauris\naurist\naurists\naurochs\naurochses\naurora\naurorae\nauroral\nauroras\naurorean\naurous\naurum\naurums\nauscultation\nauscultations\nauspex\nauspice\nauspices\nauspicious\nauspiciously\nauspiciousness\naustere\nausterely\nausterer\nausterest\nausterities\nausterity\naustral\nautacoid\nautacoids\nautarchic\nautarchies\nautarchy\nautarkic\nautarkies\nautarky\nautecism\nautecisms\nauthentic\nauthentically\nauthenticate\nauthenticated\nauthenticates\nauthenticating\nauthentication\nauthentications\nauthenticator\nauthenticators\nauthenticity\nauthor\nauthored\nauthoress\nauthoresses\nauthorial\nauthoring\nauthoritarian\nauthoritative\nauthoritatively\nauthoritativeness\nauthorities\nauthority\nauthorization\nauthorizations\nauthorize\nauthorized\nauthorizer\nauthorizers\nauthorizes\nauthorizing\nauthors\nauthorship\nautism\nautisms\nautistic\nauto\nautobahn\nautobahnen\nautobahns\nautobiographer\nautobiographers\nautobiographic\nautobiographical\nautobiographically\nautobiographies\nautobiography\nautobus\nautobuses\nautobusses\nautocade\nautocades\nautocoid\nautocoids\nautocracies\nautocracy\nautocrat\nautocratic\nautocratical\nautocratically\nautocrats\nautodyne\nautodynes\nautoed\nautogamies\nautogamy\nautogenies\nautogeny\nautogiro\nautogiros\nautograph\nautographic\nautographically\nautographs\nautography\nautogyro\nautogyros\nautoing\nautoloading\nautolyze\nautolyzed\nautolyzes\nautolyzing\nautomata\nautomate\nautomated\nautomates\nautomatic\nautomatically\nautomaticity\nautomatics\nautomating\nautomation\nautomations\nautomatism\nautomatist\nautomatists\nautomatization\nautomatizations\nautomatize\nautomatized\nautomatizes\nautomatizing\nautomaton\nautomatons\nautomobile\nautomobiled\nautomobiles\nautomobiling\nautomobilist\nautomobilists\nautomotive\nautonomic\nautonomically\nautonomies\nautonomist\nautonomists\nautonomous\nautonomously\nautonomy\nautopsic\nautopsied\nautopsies\nautopsy\nautopsying\nautos\nautosome\nautosomes\nautosuggestion\nautosuggestions\nautotomies\nautotomy\nautotype\nautotypes\nautotypies\nautotypy\nautumn\nautumnal\nautumns\nautunite\nautunites\nauxeses\nauxesis\nauxetic\nauxetics\nauxiliaries\nauxiliary\nauxin\nauxinic\nauxins\nava\navail\navailability\navailable\navailableness\navailably\navailed\navailing\navails\navalanche\navalanched\navalanches\navalanching\navarice\navarices\navaricious\navariciously\navariciousness\navast\navatar\navatars\navaunt\nave\navellan\navellane\navenge\navenged\navenger\navengers\navenges\navenging\navens\navenses\naventail\naventails\navenue\navenues\naver\naverage\naveraged\naveragely\naverageness\naverages\naveraging\naverment\naverments\naverred\naverring\navers\naverse\naversely\naversion\naversions\naversive\navert\naverted\naverting\naverts\naves\navgas\navgases\navgasses\navian\navianize\navianized\navianizes\navianizing\navians\naviaries\naviarist\naviarists\naviary\naviate\naviated\naviates\naviating\naviation\naviations\naviator\naviators\naviatrices\naviatrix\naviatrixes\navicular\navid\navidin\navidins\navidities\navidity\navidly\navidness\navidnesses\navifauna\navifaunae\navifaunas\navigator\navigators\navion\navionic\navionics\navions\naviso\navisos\navo\navocado\navocadoes\navocados\navocation\navocations\navocet\navocets\navodire\navodires\navoid\navoidable\navoidably\navoidance\navoidances\navoided\navoider\navoiders\navoiding\navoids\navoirdupois\navos\navoset\navosets\navouch\navouched\navoucher\navouchers\navouches\navouching\navouchment\navouchments\navow\navowable\navowably\navowal\navowals\navowed\navowedly\navower\navowers\navowing\navows\navulse\navulsed\navulses\navulsing\navulsion\navulsions\navuncular\naw\nawa\nawait\nawaited\nawaiter\nawaiters\nawaiting\nawaits\nawake\nawaked\nawaken\nawakened\nawakener\nawakeners\nawakening\nawakenings\nawakens\nawakes\nawaking\naward\nawardable\nawarded\nawardee\nawardees\nawarder\nawarders\nawarding\nawards\naware\nawareness\nawash\naway\nawayness\nawaynesses\nawe\naweary\naweather\nawed\nawee\naweigh\naweing\naweless\nawes\nawesome\nawesomely\nawesomeness\nawestricken\nawestruck\nawful\nawfuller\nawfullest\nawfully\nawfulness\nawhile\nawhirl\nawing\nawkward\nawkwarder\nawkwardest\nawkwardly\nawkwardness\nawl\nawless\nawls\nawlwort\nawlworts\nawmous\nawn\nawned\nawning\nawninged\nawnings\nawnless\nawns\nawny\nawoke\nawoken\nawol\nawols\nawry\nax\naxal\naxe\naxed\naxel\naxels\naxeman\naxemen\naxenic\naxes\naxial\naxialities\naxiality\naxially\naxil\naxile\naxilla\naxillae\naxillar\naxillaries\naxillars\naxillary\naxillas\naxils\naxing\naxiologies\naxiology\naxiom\naxiomatic\naxiomatically\naxioms\naxis\naxised\naxises\naxite\naxites\naxle\naxled\naxles\naxletree\naxletrees\naxlike\naxman\naxmen\naxolotl\naxolotls\naxon\naxonal\naxone\naxones\naxonic\naxons\naxoplasm\naxoplasms\naxseed\naxseeds\nay\nayah\nayahs\nayatollah\nayatollahs\naye\nayes\nayin\nayins\nays\nazalea\nazaleas\nazan\nazans\nazide\nazides\nazido\nazimuth\nazimuthal\nazimuthally\nazimuths\nazine\nazines\nazlon\nazo\nazoic\nazole\nazoles\nazon\nazonal\nazonic\nazons\nazote\nazoted\nazotemia\nazotemias\nazotemic\nazotes\nazoth\nazoths\nazotic\nazotise\nazotised\nazotises\nazotising\nazotize\nazotized\nazotizes\nazotizing\nazoturia\nazoturias\nazure\nazures\nazurite\nazurites\nazygos\nazygoses\nazygous\nba\nbaa\nbaaed\nbaaing\nbaal\nbaalim\nbaalism\nbaalisms\nbaals\nbaas\nbaba\nbabas\nbabassu\nbabassus\nbabbitt\nbabbitted\nbabbitting\nbabbitts\nbabble\nbabbled\nbabbler\nbabblers\nbabbles\nbabbling\nbabblings\nbabe\nbabel\nbabels\nbabes\nbabesia\nbabesias\nbabiche\nbabiches\nbabied\nbabies\nbabirusa\nbabirusas\nbabka\nbabkas\nbaboo\nbabool\nbabools\nbaboon\nbaboons\nbaboos\nbabu\nbabul\nbabuls\nbabus\nbabushka\nbabushkas\nbaby\nbabyhood\nbabyhoods\nbabying\nbabyish\nbacca\nbaccae\nbaccalaureate\nbaccalaureates\nbaccara\nbaccaras\nbaccarat\nbaccarats\nbaccate\nbaccated\nbacchanal\nbacchanalia\nbacchanalian\nbacchanalians\nbacchanals\nbacchant\nbacchante\nbacchantes\nbacchantic\nbacchants\nbacchic\nbacchii\nbacchius\nbach\nbached\nbachelor\nbachelorhood\nbachelors\nbaches\nbaching\nbacillar\nbacillary\nbacilli\nbacillus\nback\nbackache\nbackaches\nbackbend\nbackbends\nbackbit\nbackbite\nbackbiter\nbackbiters\nbackbites\nbackbiting\nbackbitten\nbackbone\nbackbones\nbackbreaker\nbackbreakers\nbackbreaking\nbackdoor\nbackdrop\nbackdrops\nbacked\nbacker\nbackers\nbackfill\nbackfilled\nbackfilling\nbackfills\nbackfire\nbackfired\nbackfires\nbackfiring\nbackgammon\nbackground\nbackgrounds\nbackhand\nbackhanded\nbackhanding\nbackhands\nbackhoe\nbackhoes\nbacking\nbackings\nbacklash\nbacklashed\nbacklashes\nbacklashing\nbackless\nbacklist\nbacklists\nbacklit\nbacklog\nbacklogged\nbacklogging\nbacklogs\nbackmost\nbackout\nbackouts\nbackpack\nbackpacked\nbackpacker\nbackpackers\nbackpacking\nbackpacks\nbackrest\nbackrests\nbacks\nbacksaw\nbacksaws\nbackseat\nbackseats\nbackset\nbacksets\nbackside\nbacksides\nbackslap\nbackslapped\nbackslapper\nbackslappers\nbackslapping\nbackslaps\nbackslid\nbackslidden\nbackslide\nbackslider\nbacksliders\nbackslides\nbacksliding\nbackspace\nbackspaced\nbackspacer\nbackspacers\nbackspaces\nbackspacing\nbackspin\nbackspins\nbackstage\nbackstay\nbackstays\nbackstop\nbackstopped\nbackstopping\nbackstops\nbackstretch\nbackstretches\nbackstroke\nbackstroked\nbackstrokes\nbacktrack\nbacktracked\nbacktracking\nbacktracks\nbackup\nbackups\nbackward\nbackwardly\nbackwardness\nbackwards\nbackwash\nbackwashed\nbackwashes\nbackwashing\nbackwater\nbackwaters\nbackwood\nbackwoods\nbackyard\nbackyards\nbacon\nbacons\nbacteria\nbacterial\nbactericidal\nbactericide\nbactericides\nbacterin\nbacterins\nbacteriologic\nbacteriological\nbacteriologically\nbacteriologist\nbacteriologists\nbacteriology\nbacterium\nbaculine\nbad\nbaddie\nbaddies\nbaddy\nbade\nbadge\nbadged\nbadger\nbadgered\nbadgering\nbadgerly\nbadgers\nbadges\nbadging\nbadinage\nbadinaged\nbadinages\nbadinaging\nbadland\nbadlands\nbadly\nbadman\nbadmen\nbadminton\nbadmouth\nbadmouthed\nbadmouthing\nbadmouths\nbadness\nbadnesses\nbads\nbaff\nbaffed\nbaffies\nbaffing\nbaffle\nbaffled\nbafflement\nbafflements\nbaffler\nbafflers\nbaffles\nbaffling\nbaffs\nbaffy\nbag\nbagass\nbagasse\nbagasses\nbagatelle\nbagatelles\nbagel\nbagels\nbagful\nbagfuls\nbaggage\nbaggages\nbagged\nbaggie\nbaggier\nbaggies\nbaggiest\nbaggily\nbagging\nbaggings\nbaggy\nbagman\nbagmen\nbagnio\nbagnios\nbagpipe\nbagpiper\nbagpipers\nbagpipes\nbags\nbagsful\nbaguet\nbaguets\nbaguette\nbaguettes\nbagwig\nbagwigs\nbagworm\nbagworms\nbah\nbahadur\nbahadurs\nbaht\nbahts\nbaidarka\nbaidarkas\nbail\nbailable\nbailed\nbailee\nbailees\nbailer\nbailers\nbailey\nbaileys\nbailie\nbailies\nbailiff\nbailiffs\nbailing\nbailiwick\nbailiwicks\nbailment\nbailments\nbailor\nbailors\nbailout\nbailouts\nbails\nbailsman\nbailsmen\nbairn\nbairnish\nbairnlier\nbairnliest\nbairnly\nbairns\nbait\nbaited\nbaiter\nbaiters\nbaith\nbaiting\nbaits\nbaiza\nbaizas\nbaize\nbaizes\nbake\nbaked\nbakemeat\nbakemeats\nbaker\nbakeries\nbakers\nbakery\nbakes\nbakeshop\nbakeshops\nbaking\nbakings\nbaklava\nbaklavas\nbaklawa\nbaklawas\nbakshish\nbakshished\nbakshishes\nbakshishing\nbal\nbalance\nbalanced\nbalancer\nbalancers\nbalances\nbalancing\nbalas\nbalases\nbalata\nbalatas\nbalboa\nbalboas\nbalconies\nbalcony\nbald\nbalded\nbalder\nbalderdash\nbaldest\nbaldhead\nbaldheads\nbalding\nbaldish\nbaldly\nbaldness\nbaldnesses\nbaldpate\nbaldpates\nbaldric\nbaldrick\nbaldricks\nbaldrics\nbalds\nbaldy\nbale\nbaled\nbaleen\nbaleens\nbalefire\nbalefires\nbaleful\nbalefully\nbalefulness\nbaler\nbalers\nbales\nbaling\nbalisaur\nbalisaurs\nbalk\nbalked\nbalker\nbalkers\nbalkier\nbalkiest\nbalkily\nbalkiness\nbalking\nbalkline\nbalklines\nbalks\nbalky\nball\nballad\nballade\nballadeer\nballadeers\nballades\nballadic\nballadries\nballadry\nballads\nballast\nballasted\nballasting\nballasts\nballed\nballer\nballerina\nballerinas\nballers\nballet\nballetic\nballets\nballing\nballista\nballistae\nballistic\nballistics\nballon\nballonet\nballonets\nballonne\nballonnes\nballons\nballoon\nballooned\nballooning\nballoonist\nballoonists\nballoons\nballot\nballoted\nballoter\nballoters\nballoting\nballots\nballroom\nballrooms\nballs\nbally\nballyhoo\nballyhooed\nballyhooing\nballyhoos\nballyrag\nballyragged\nballyragging\nballyrags\nbalm\nbalmier\nbalmiest\nbalmily\nbalminess\nbalmlike\nbalmoral\nbalmorals\nbalms\nbalmy\nbalneal\nbaloney\nbaloneys\nbals\nbalsa\nbalsam\nbalsamed\nbalsamic\nbalsaming\nbalsams\nbalsas\nbaluster\nbalusters\nbalustrade\nbalustrades\nbam\nbambini\nbambino\nbambinos\nbamboo\nbamboos\nbamboozle\nbamboozled\nbamboozlement\nbamboozlements\nbamboozles\nbamboozling\nbams\nban\nbanal\nbanalities\nbanality\nbanally\nbanana\nbananas\nbanausic\nbanco\nbancos\nband\nbandage\nbandaged\nbandager\nbandagers\nbandages\nbandaging\nbandana\nbandanas\nbandanna\nbandannas\nbandbox\nbandboxes\nbandeau\nbandeaus\nbandeaux\nbanded\nbander\nbanderol\nbanderole\nbanderoles\nbanderols\nbanders\nbandied\nbandies\nbanding\nbandit\nbanditries\nbanditry\nbandits\nbanditti\nbandmaster\nbandmasters\nbandog\nbandogs\nbandoleer\nbandoleers\nbandolier\nbandoliers\nbandora\nbandoras\nbandore\nbandores\nbands\nbandsman\nbandsmen\nbandstand\nbandstands\nbandwagon\nbandwagons\nbandwidth\nbandwidths\nbandy\nbandying\nbane\nbaned\nbaneful\nbanefully\nbanes\nbang\nbanged\nbanger\nbangers\nbanging\nbangkok\nbangkoks\nbangle\nbangles\nbangs\nbangtail\nbangtails\nbani\nbanian\nbanians\nbaning\nbanish\nbanished\nbanisher\nbanishers\nbanishes\nbanishing\nbanishment\nbanishments\nbanister\nbanisters\nbanjo\nbanjoes\nbanjoist\nbanjoists\nbanjos\nbank\nbankable\nbankbook\nbankbooks\nbanked\nbanker\nbankers\nbanking\nbankings\nbanknote\nbanknotes\nbankroll\nbankrolled\nbankrolling\nbankrolls\nbankrupt\nbankruptcies\nbankruptcy\nbankrupted\nbankrupting\nbankrupts\nbanks\nbanksia\nbanksias\nbankside\nbanksides\nbanned\nbanner\nbanneret\nbannerets\nbannerol\nbannerols\nbanners\nbannet\nbannets\nbanning\nbannister\nbannisters\nbannock\nbannocks\nbanns\nbanquet\nbanqueted\nbanqueter\nbanqueters\nbanqueting\nbanquets\nbanquette\nbanquettes\nbans\nbanshee\nbanshees\nbanshie\nbanshies\nbantam\nbantams\nbantamweight\nbantamweights\nbanter\nbantered\nbanterer\nbanterers\nbantering\nbanteringly\nbanters\nbantling\nbantlings\nbanty\nbanyan\nbanyans\nbanzai\nbanzais\nbaobab\nbaobabs\nbaptise\nbaptised\nbaptises\nbaptisia\nbaptisias\nbaptising\nbaptism\nbaptismal\nbaptismally\nbaptisms\nbaptist\nbaptisteries\nbaptistery\nbaptistries\nbaptistry\nbaptists\nbaptize\nbaptized\nbaptizer\nbaptizers\nbaptizes\nbaptizing\nbar\nbarathea\nbaratheas\nbarb\nbarbal\nbarbarian\nbarbarianism\nbarbarians\nbarbaric\nbarbarism\nbarbarisms\nbarbarities\nbarbarity\nbarbarize\nbarbarized\nbarbarizes\nbarbarizing\nbarbarous\nbarbarously\nbarbarousness\nbarbasco\nbarbascos\nbarbate\nbarbe\nbarbecue\nbarbecued\nbarbecues\nbarbecuing\nbarbed\nbarbel\nbarbell\nbarbells\nbarbels\nbarber\nbarbered\nbarbering\nbarberries\nbarberry\nbarbers\nbarbershop\nbarbershops\nbarbes\nbarbet\nbarbets\nbarbette\nbarbettes\nbarbican\nbarbicans\nbarbicel\nbarbicels\nbarbing\nbarbital\nbarbitals\nbarbiturate\nbarbiturates\nbarbless\nbarbs\nbarbule\nbarbules\nbarbut\nbarbuts\nbarbwire\nbarbwires\nbarcarole\nbarcaroles\nbarcarolle\nbarcarolles\nbard\nbarde\nbarded\nbardes\nbardic\nbarding\nbards\nbare\nbareback\nbarebacked\nbared\nbarefaced\nbarefit\nbarefoot\nbarefooted\nbarege\nbareges\nbarehead\nbareheaded\nbarely\nbareness\nbarenesses\nbarer\nbares\nbaresark\nbaresarks\nbarest\nbarf\nbarfed\nbarfing\nbarflies\nbarfly\nbarfs\nbargain\nbargained\nbargainer\nbargainers\nbargaining\nbargains\nbarge\nbarged\nbargee\nbargees\nbargeman\nbargemen\nbarges\nbarghest\nbarghests\nbarging\nbarguest\nbarguests\nbarhop\nbarhopped\nbarhopping\nbarhops\nbaric\nbarilla\nbarillas\nbaring\nbarite\nbarites\nbaritone\nbaritones\nbarium\nbariums\nbark\nbarked\nbarkeep\nbarkeeper\nbarkeepers\nbarkeeps\nbarker\nbarkers\nbarkier\nbarkiest\nbarking\nbarkless\nbarks\nbarky\nbarleduc\nbarleducs\nbarless\nbarley\nbarleys\nbarlow\nbarlows\nbarm\nbarmaid\nbarmaids\nbarman\nbarmen\nbarmie\nbarmier\nbarmiest\nbarms\nbarmy\nbarn\nbarnacle\nbarnacled\nbarnacles\nbarnier\nbarniest\nbarns\nbarnstorm\nbarnstormed\nbarnstormer\nbarnstormers\nbarnstorming\nbarnstorms\nbarny\nbarnyard\nbarnyards\nbarogram\nbarograms\nbarometer\nbarometers\nbarometric\nbarometry\nbaron\nbaronage\nbaronages\nbaroness\nbaronesses\nbaronet\nbaronets\nbarong\nbarongs\nbaronial\nbaronies\nbaronne\nbaronnes\nbarons\nbarony\nbaroque\nbaroques\nbarouche\nbarouches\nbarque\nbarques\nbarrable\nbarrack\nbarracked\nbarracking\nbarracks\nbarracuda\nbarracudas\nbarrage\nbarraged\nbarrages\nbarraging\nbarranca\nbarrancas\nbarranco\nbarrancos\nbarrater\nbarraters\nbarrator\nbarrators\nbarratries\nbarratry\nbarre\nbarred\nbarrel\nbarreled\nbarrelful\nbarrelfuls\nbarreling\nbarrelled\nbarrelling\nbarrels\nbarrelsful\nbarren\nbarrener\nbarrenest\nbarrenly\nbarrenness\nbarrens\nbarres\nbarret\nbarretor\nbarretors\nbarretries\nbarretry\nbarrets\nbarrette\nbarrettes\nbarricade\nbarricaded\nbarricades\nbarricading\nbarrier\nbarriers\nbarring\nbarrio\nbarrios\nbarrister\nbarristers\nbarroom\nbarrooms\nbarrow\nbarrows\nbars\nbarstool\nbarstools\nbartend\nbartended\nbartender\nbartenders\nbartending\nbartends\nbarter\nbartered\nbarterer\nbarterers\nbartering\nbarters\nbartisan\nbartisans\nbartizan\nbartizans\nbarware\nbarwares\nbarye\nbaryes\nbaryon\nbaryonic\nbaryons\nbaryta\nbarytas\nbaryte\nbarytes\nbarytic\nbarytone\nbarytones\nbas\nbasal\nbasally\nbasalt\nbasaltes\nbasaltic\nbasalts\nbascule\nbascules\nbase\nbaseball\nbaseballs\nbaseboard\nbaseborn\nbased\nbaseless\nbaseline\nbaselines\nbasely\nbaseman\nbasemen\nbasement\nbasements\nbaseness\nbasenesses\nbasenji\nbasenjis\nbaser\nbases\nbasest\nbash\nbashaw\nbashaws\nbashed\nbasher\nbashers\nbashes\nbashful\nbashfully\nbashfulness\nbashing\nbashlyk\nbashlyks\nbasic\nbasically\nbasicities\nbasicity\nbasics\nbasidia\nbasidial\nbasidium\nbasified\nbasifier\nbasifiers\nbasifies\nbasify\nbasifying\nbasil\nbasilar\nbasilary\nbasilic\nbasilica\nbasilicae\nbasilicas\nbasilisk\nbasilisks\nbasils\nbasin\nbasinal\nbasined\nbasinet\nbasinets\nbasing\nbasins\nbasion\nbasions\nbasis\nbask\nbasked\nbasket\nbasketball\nbasketballs\nbasketful\nbasketfuls\nbasketries\nbasketry\nbaskets\nbasketwork\nbasking\nbasks\nbasophil\nbasophils\nbasque\nbasques\nbass\nbasses\nbasset\nbasseted\nbasseting\nbassets\nbassetted\nbassetting\nbassi\nbassinet\nbassinets\nbassist\nbassists\nbassly\nbassness\nbassnesses\nbasso\nbassoon\nbassoonist\nbassoonists\nbassoons\nbassos\nbasswood\nbasswoods\nbassy\nbast\nbastard\nbastardies\nbastardize\nbastardized\nbastardizes\nbastardizing\nbastardly\nbastards\nbastardy\nbaste\nbasted\nbaster\nbasters\nbastes\nbastile\nbastiles\nbastille\nbastilles\nbasting\nbastings\nbastion\nbastions\nbasts\nbat\nbatboy\nbatboys\nbatch\nbatched\nbatcher\nbatchers\nbatches\nbatching\nbate\nbateau\nbateaux\nbated\nbates\nbatfish\nbatfishes\nbatfowl\nbatfowled\nbatfowling\nbatfowls\nbath\nbathe\nbathed\nbather\nbathers\nbathes\nbathetic\nbathhouse\nbathhouses\nbathing\nbathless\nbathos\nbathoses\nbathrobe\nbathrobes\nbathroom\nbathrooms\nbaths\nbathtub\nbathtubs\nbathyal\nbathyscaph\nbathyscaphe\nbathyscaphes\nbathysphere\nbathyspheres\nbatik\nbatiks\nbating\nbatiste\nbatistes\nbatlike\nbatman\nbatmen\nbaton\nbatons\nbats\nbatsman\nbatsmen\nbatt\nbattalia\nbattalias\nbattalion\nbattalions\nbatteau\nbatteaux\nbatted\nbatten\nbattened\nbattener\nbatteners\nbattening\nbattens\nbatter\nbattered\nbatterie\nbatteries\nbattering\nbatters\nbattery\nbattier\nbattiest\nbattik\nbattiks\nbatting\nbattings\nbattle\nbattled\nbattlefield\nbattlefields\nbattlefront\nbattlefronts\nbattleground\nbattlegrounds\nbattlement\nbattlements\nbattler\nbattlers\nbattles\nbattleship\nbattleships\nbattling\nbatts\nbattu\nbattue\nbattues\nbatty\nbatwing\nbaubee\nbaubees\nbauble\nbaubles\nbaud\nbaudekin\nbaudekins\nbaudrons\nbaudronses\nbauds\nbaulk\nbaulked\nbaulkier\nbaulkiest\nbaulking\nbaulks\nbaulky\nbausond\nbauxite\nbauxites\nbauxitic\nbawbee\nbawbees\nbawcock\nbawcocks\nbawd\nbawdier\nbawdies\nbawdiest\nbawdily\nbawdiness\nbawdric\nbawdrics\nbawdries\nbawdry\nbawds\nbawdy\nbawl\nbawled\nbawler\nbawlers\nbawling\nbawls\nbawsunt\nbawtie\nbawties\nbawty\nbay\nbayadeer\nbayadeers\nbayadere\nbayaderes\nbayamo\nbayamos\nbayard\nbayards\nbayberries\nbayberry\nbayed\nbaying\nbayonet\nbayoneted\nbayoneting\nbayonets\nbayonetted\nbayonetting\nbayou\nbayous\nbays\nbaywood\nbaywoods\nbazaar\nbazaars\nbazar\nbazars\nbazoo\nbazooka\nbazookas\nbdellium\nbdelliums\nbe\nbeach\nbeachboy\nbeachboys\nbeachcomber\nbeachcombers\nbeachcombing\nbeached\nbeaches\nbeachhead\nbeachheads\nbeachier\nbeachiest\nbeaching\nbeachy\nbeacon\nbeaconed\nbeaconing\nbeacons\nbead\nbeaded\nbeadier\nbeadiest\nbeadily\nbeading\nbeadings\nbeadle\nbeadles\nbeadlike\nbeadman\nbeadmen\nbeadroll\nbeadrolls\nbeads\nbeadsman\nbeadsmen\nbeadwork\nbeadworks\nbeady\nbeagle\nbeagles\nbeak\nbeaked\nbeaker\nbeakers\nbeakier\nbeakiest\nbeakless\nbeaklike\nbeaks\nbeaky\nbeam\nbeamed\nbeamier\nbeamiest\nbeamily\nbeaming\nbeamish\nbeamless\nbeamlike\nbeams\nbeamy\nbean\nbeanbag\nbeanbags\nbeanball\nbeanballs\nbeaned\nbeaneries\nbeanery\nbeanie\nbeanies\nbeaning\nbeanlike\nbeano\nbeanos\nbeanpole\nbeanpoles\nbeans\nbear\nbearable\nbearably\nbearcat\nbearcats\nbeard\nbearded\nbearding\nbeardless\nbeards\nbearer\nbearers\nbearing\nbearings\nbearish\nbearishly\nbearishness\nbearlike\nbears\nbearskin\nbearskins\nbeast\nbeastie\nbeasties\nbeastlier\nbeastliest\nbeastliness\nbeastly\nbeasts\nbeat\nbeatable\nbeaten\nbeater\nbeaters\nbeatific\nbeatifically\nbeatification\nbeatifications\nbeatified\nbeatifies\nbeatify\nbeatifying\nbeating\nbeatings\nbeatitude\nbeatitudes\nbeatless\nbeatnik\nbeatniks\nbeats\nbeau\nbeauish\nbeaus\nbeaut\nbeauteous\nbeauteously\nbeauteousness\nbeautician\nbeauticians\nbeauties\nbeautification\nbeautifications\nbeautified\nbeautifier\nbeautifiers\nbeautifies\nbeautiful\nbeautifully\nbeautifulness\nbeautify\nbeautifying\nbeauts\nbeauty\nbeaux\nbeaver\nbeaverboard\nbeavered\nbeavering\nbeavers\nbebeeru\nbebeerus\nbeblood\nbeblooded\nbeblooding\nbebloods\nbebop\nbebopper\nbeboppers\nbebops\nbecalm\nbecalmed\nbecalming\nbecalms\nbecame\nbecap\nbecapped\nbecapping\nbecaps\nbecarpet\nbecarpeted\nbecarpeting\nbecarpets\nbecause\nbechalk\nbechalked\nbechalking\nbechalks\nbechamel\nbechamels\nbechance\nbechanced\nbechances\nbechancing\nbecharm\nbecharmed\nbecharming\nbecharms\nbeck\nbecked\nbecket\nbeckets\nbecking\nbeckon\nbeckoned\nbeckoner\nbeckoners\nbeckoning\nbeckons\nbecks\nbeclamor\nbeclamored\nbeclamoring\nbeclamors\nbeclasp\nbeclasped\nbeclasping\nbeclasps\nbecloak\nbecloaked\nbecloaking\nbecloaks\nbeclog\nbeclogged\nbeclogging\nbeclogs\nbeclothe\nbeclothed\nbeclothes\nbeclothing\nbecloud\nbeclouded\nbeclouding\nbeclouds\nbeclown\nbeclowned\nbeclowning\nbeclowns\nbecome\nbecomes\nbecoming\nbecomingly\nbecomings\nbecoward\nbecowarded\nbecowarding\nbecowards\nbecrawl\nbecrawled\nbecrawling\nbecrawls\nbecrime\nbecrimed\nbecrimes\nbecriming\nbecrowd\nbecrowded\nbecrowding\nbecrowds\nbecrust\nbecrusted\nbecrusting\nbecrusts\nbecudgel\nbecudgeled\nbecudgeling\nbecudgelled\nbecudgelling\nbecudgels\nbecurse\nbecursed\nbecurses\nbecursing\nbecurst\nbed\nbedabble\nbedabbled\nbedabbles\nbedabbling\nbedamn\nbedamned\nbedamning\nbedamns\nbedarken\nbedarkened\nbedarkening\nbedarkens\nbedaub\nbedaubed\nbedaubing\nbedaubs\nbedazzle\nbedazzled\nbedazzlement\nbedazzlements\nbedazzles\nbedazzling\nbedbug\nbedbugs\nbedchair\nbedchairs\nbedclothes\nbedcover\nbedcovers\nbedded\nbedder\nbedders\nbedding\nbeddings\nbedeafen\nbedeafened\nbedeafening\nbedeafens\nbedeck\nbedecked\nbedecking\nbedecks\nbedel\nbedell\nbedells\nbedels\nbedeman\nbedemen\nbedesman\nbedesmen\nbedevil\nbedeviled\nbedeviling\nbedevilled\nbedevilling\nbedevilment\nbedevilments\nbedevils\nbedew\nbedewed\nbedewing\nbedews\nbedfast\nbedfellow\nbedfellows\nbedframe\nbedframes\nbedgown\nbedgowns\nbediaper\nbediapered\nbediapering\nbediapers\nbedight\nbedighted\nbedighting\nbedights\nbedim\nbedimmed\nbedimming\nbedimple\nbedimpled\nbedimples\nbedimpling\nbedims\nbedirtied\nbedirties\nbedirty\nbedirtying\nbedizen\nbedizened\nbedizening\nbedizenment\nbedizenments\nbedizens\nbedlam\nbedlamp\nbedlamps\nbedlams\nbedless\nbedlike\nbedmaker\nbedmakers\nbedmate\nbedmates\nbedotted\nbedouin\nbedouins\nbedpan\nbedpans\nbedplate\nbedplates\nbedpost\nbedposts\nbedquilt\nbedquilts\nbedraggled\nbedrail\nbedrails\nbedrape\nbedraped\nbedrapes\nbedraping\nbedrench\nbedrenched\nbedrenches\nbedrenching\nbedrid\nbedridden\nbedrivel\nbedriveled\nbedriveling\nbedrivelled\nbedrivelling\nbedrivels\nbedrock\nbedrocks\nbedroll\nbedrolls\nbedroom\nbedrooms\nbedrug\nbedrugged\nbedrugging\nbedrugs\nbeds\nbedside\nbedsides\nbedsonia\nbedsonias\nbedsore\nbedsores\nbedspread\nbedspreads\nbedspring\nbedsprings\nbedstand\nbedstands\nbedstead\nbedsteads\nbedstraw\nbedstraws\nbedtick\nbedticks\nbedtime\nbedtimes\nbeduin\nbeduins\nbedumb\nbedumbed\nbedumbing\nbedumbs\nbedunce\nbedunced\nbedunces\nbeduncing\nbedward\nbedwards\nbedwarf\nbedwarfed\nbedwarfing\nbedwarfs\nbee\nbeebee\nbeebees\nbeebread\nbeebreads\nbeech\nbeechen\nbeeches\nbeechier\nbeechiest\nbeechnut\nbeechnuts\nbeechy\nbeef\nbeefcake\nbeefcakes\nbeefeater\nbeefeaters\nbeefed\nbeefier\nbeefiest\nbeefily\nbeefing\nbeefless\nbeefs\nbeefsteak\nbeefsteaks\nbeefwood\nbeefwoods\nbeefy\nbeehive\nbeehives\nbeekeeper\nbeekeepers\nbeekeeping\nbeelike\nbeeline\nbeelines\nbeen\nbeep\nbeeped\nbeeper\nbeepers\nbeeping\nbeeps\nbeer\nbeerier\nbeeriest\nbeers\nbeery\nbees\nbeeswax\nbeeswaxes\nbeeswing\nbeeswings\nbeet\nbeetle\nbeetled\nbeetles\nbeetling\nbeetroot\nbeetroots\nbeets\nbeeves\nbefall\nbefallen\nbefalling\nbefalls\nbefell\nbefinger\nbefingered\nbefingering\nbefingers\nbefit\nbefits\nbefitted\nbefitting\nbefittingly\nbeflag\nbeflagged\nbeflagging\nbeflags\nbeflea\nbefleaed\nbefleaing\nbefleas\nbefleck\nbeflecked\nbeflecking\nbeflecks\nbeflower\nbeflowered\nbeflowering\nbeflowers\nbefog\nbefogged\nbefogging\nbefogs\nbefool\nbefooled\nbefooling\nbefools\nbefore\nbeforehand\nbefoul\nbefouled\nbefouler\nbefoulers\nbefouling\nbefouls\nbefret\nbefrets\nbefretted\nbefretting\nbefriend\nbefriended\nbefriending\nbefriends\nbefringe\nbefringed\nbefringes\nbefringing\nbefuddle\nbefuddled\nbefuddlement\nbefuddlements\nbefuddles\nbefuddling\nbeg\nbegall\nbegalled\nbegalling\nbegalls\nbegan\nbegat\nbegaze\nbegazed\nbegazes\nbegazing\nbeget\nbegets\nbegetter\nbegetters\nbegetting\nbeggar\nbeggared\nbeggaries\nbeggaring\nbeggarliness\nbeggarly\nbeggars\nbeggary\nbegged\nbegging\nbegin\nbeginner\nbeginners\nbeginning\nbeginnings\nbegins\nbegird\nbegirded\nbegirding\nbegirdle\nbegirdled\nbegirdles\nbegirdling\nbegirds\nbegirt\nbeglad\nbegladded\nbegladding\nbeglads\nbegloom\nbegloomed\nbeglooming\nbeglooms\nbegone\nbegonia\nbegonias\nbegorah\nbegorra\nbegorrah\nbegot\nbegotten\nbegrim\nbegrime\nbegrimed\nbegrimes\nbegriming\nbegrimmed\nbegrimming\nbegrims\nbegroan\nbegroaned\nbegroaning\nbegroans\nbegrudge\nbegrudged\nbegrudges\nbegrudging\nbegrudgingly\nbegs\nbeguile\nbeguiled\nbeguilement\nbeguilements\nbeguiler\nbeguilers\nbeguiles\nbeguiling\nbeguilingly\nbeguine\nbeguines\nbegulf\nbegulfed\nbegulfing\nbegulfs\nbegum\nbegums\nbegun\nbehalf\nbehalves\nbehave\nbehaved\nbehaver\nbehavers\nbehaves\nbehaving\nbehavior\nbehavioral\nbehaviorally\nbehaviorism\nbehaviorisms\nbehaviorist\nbehavioristic\nbehaviorists\nbehaviors\nbehead\nbeheaded\nbeheading\nbeheads\nbeheld\nbehemoth\nbehemoths\nbehest\nbehests\nbehind\nbehinds\nbehold\nbeholden\nbeholder\nbeholders\nbeholding\nbeholds\nbehoof\nbehoove\nbehooved\nbehooves\nbehooving\nbehove\nbehoved\nbehoves\nbehoving\nbehowl\nbehowled\nbehowling\nbehowls\nbeige\nbeiges\nbeigy\nbeing\nbeings\nbejewel\nbejeweled\nbejeweling\nbejewelled\nbejewelling\nbejewels\nbejumble\nbejumbled\nbejumbles\nbejumbling\nbekiss\nbekissed\nbekisses\nbekissing\nbeknight\nbeknighted\nbeknighting\nbeknights\nbeknot\nbeknots\nbeknotted\nbeknotting\nbel\nbelabor\nbelabored\nbelaboring\nbelabors\nbelabour\nbelaboured\nbelabouring\nbelabours\nbelaced\nbeladied\nbeladies\nbelady\nbeladying\nbelated\nbelatedly\nbelatedness\nbelaud\nbelauded\nbelauding\nbelauds\nbelay\nbelayed\nbelaying\nbelays\nbelch\nbelched\nbelcher\nbelchers\nbelches\nbelching\nbeldam\nbeldame\nbeldames\nbeldams\nbeleaguer\nbeleaguered\nbeleaguering\nbeleaguers\nbeleap\nbeleaped\nbeleaping\nbeleaps\nbeleapt\nbelfried\nbelfries\nbelfry\nbelga\nbelgas\nbelie\nbelied\nbelief\nbeliefs\nbelier\nbeliers\nbelies\nbelievability\nbelievable\nbelievably\nbelieve\nbelieved\nbeliever\nbelievers\nbelieves\nbelieving\nbelike\nbeliquor\nbeliquored\nbeliquoring\nbeliquors\nbelittle\nbelittled\nbelittlement\nbelittlements\nbelittler\nbelittlers\nbelittles\nbelittling\nbelive\nbell\nbelladonna\nbelladonnas\nbellbird\nbellbirds\nbellboy\nbellboys\nbelle\nbelled\nbelleek\nbelleeks\nbelles\nbellhop\nbellhops\nbellicose\nbellicosity\nbellied\nbellies\nbelligerence\nbelligerences\nbelligerencies\nbelligerency\nbelligerent\nbelligerently\nbelling\nbellman\nbellmen\nbellow\nbellowed\nbellower\nbellowers\nbellowing\nbellows\nbellpull\nbellpulls\nbells\nbellwether\nbellwethers\nbellwort\nbellworts\nbelly\nbellyache\nbellyached\nbellyaches\nbellyaching\nbellyband\nbellybands\nbellyful\nbellyfuls\nbellying\nbelong\nbelonged\nbelonging\nbelongings\nbelongs\nbeloved\nbeloveds\nbelow\nbelows\nbels\nbelt\nbelted\nbelting\nbeltings\nbeltless\nbeltline\nbeltlines\nbelts\nbeltway\nbeltways\nbeluga\nbelugas\nbelying\nbema\nbemadam\nbemadamed\nbemadaming\nbemadams\nbemadden\nbemaddened\nbemaddening\nbemaddens\nbemas\nbemata\nbemean\nbemeaned\nbemeaning\nbemeans\nbemingle\nbemingled\nbemingles\nbemingling\nbemire\nbemired\nbemires\nbemiring\nbemist\nbemisted\nbemisting\nbemists\nbemix\nbemixed\nbemixes\nbemixing\nbemixt\nbemoan\nbemoaned\nbemoaning\nbemoans\nbemock\nbemocked\nbemocking\nbemocks\nbemuddle\nbemuddled\nbemuddles\nbemuddling\nbemurmur\nbemurmured\nbemurmuring\nbemurmurs\nbemuse\nbemused\nbemusedly\nbemuses\nbemusing\nbemuzzle\nbemuzzled\nbemuzzles\nbemuzzling\nben\nbename\nbenamed\nbenames\nbenaming\nbench\nbenched\nbencher\nbenchers\nbenches\nbenching\nbenchmark\nbenchmarks\nbend\nbendable\nbenday\nbendayed\nbendaying\nbendays\nbended\nbendee\nbendees\nbender\nbenders\nbending\nbends\nbendways\nbendwise\nbendy\nbendys\nbene\nbeneath\nbenedick\nbenedicks\nbenedict\nbenediction\nbenedictions\nbenedicts\nbenefaction\nbenefactions\nbenefactor\nbenefactors\nbenefactress\nbenefactresses\nbenefic\nbenefice\nbeneficed\nbeneficence\nbeneficences\nbeneficent\nbeneficently\nbenefices\nbeneficial\nbeneficially\nbeneficialness\nbeneficiaries\nbeneficiary\nbeneficing\nbenefit\nbenefited\nbenefiting\nbenefits\nbenefitted\nbenefitting\nbenempt\nbenempted\nbenes\nbenevolence\nbenevolences\nbenevolent\nbenevolently\nbengaline\nbengalines\nbenighted\nbenightedness\nbenign\nbenignancy\nbenignant\nbenignantly\nbenignities\nbenignity\nbenignly\nbenison\nbenisons\nbenjamin\nbenjamins\nbenne\nbennes\nbennet\nbennets\nbenni\nbennies\nbennis\nbenny\nbens\nbent\nbenthal\nbenthic\nbenthos\nbenthoses\nbents\nbentwood\nbentwoods\nbenumb\nbenumbed\nbenumbing\nbenumbs\nbenzal\nbenzene\nbenzenes\nbenzidin\nbenzidins\nbenzin\nbenzine\nbenzines\nbenzins\nbenzoate\nbenzoates\nbenzoic\nbenzoin\nbenzoins\nbenzol\nbenzole\nbenzoles\nbenzols\nbenzoyl\nbenzoyls\nbenzyl\nbenzylic\nbenzyls\nbepaint\nbepainted\nbepainting\nbepaints\nbepimple\nbepimpled\nbepimples\nbepimpling\nbequeath\nbequeathal\nbequeathals\nbequeathed\nbequeathing\nbequeaths\nbequest\nbequests\nberake\nberaked\nberakes\nberaking\nberascal\nberascaled\nberascaling\nberascals\nberate\nberated\nberates\nberating\nberberin\nberberins\nberceuse\nberceuses\nbereave\nbereaved\nbereavement\nbereavements\nbereaver\nbereavers\nbereaves\nbereaving\nbereft\nberet\nberets\nberetta\nberettas\nberg\nbergamot\nbergamots\nbergs\nberhyme\nberhymed\nberhymes\nberhyming\nberiberi\nberiberis\nberime\nberimed\nberimes\nberiming\nberinged\nberlin\nberline\nberlines\nberlins\nberm\nberme\nbermes\nberms\nbernicle\nbernicles\nberobed\nberouged\nberreaved\nberreaves\nberreaving\nberretta\nberrettas\nberried\nberries\nberry\nberrying\nberrylike\nberseem\nberseems\nberserk\nberserker\nberserkers\nberserkly\nberserks\nberth\nbertha\nberthas\nberthed\nberthing\nberths\nberyl\nberyline\nberyllium\nberyls\nbescorch\nbescorched\nbescorches\nbescorching\nbescour\nbescoured\nbescouring\nbescours\nbescreen\nbescreened\nbescreening\nbescreens\nbeseech\nbeseeched\nbeseeches\nbeseeching\nbeseechingly\nbeseem\nbeseemed\nbeseeming\nbeseems\nbeset\nbesets\nbesetter\nbesetters\nbesetting\nbeshadow\nbeshadowed\nbeshadowing\nbeshadows\nbeshame\nbeshamed\nbeshames\nbeshaming\nbeshiver\nbeshivered\nbeshivering\nbeshivers\nbeshout\nbeshouted\nbeshouting\nbeshouts\nbeshrew\nbeshrewed\nbeshrewing\nbeshrews\nbeshroud\nbeshrouded\nbeshrouding\nbeshrouds\nbeside\nbesides\nbesiege\nbesieged\nbesieger\nbesiegers\nbesieges\nbesieging\nbeslaved\nbeslime\nbeslimed\nbeslimes\nbesliming\nbesmear\nbesmeared\nbesmearing\nbesmears\nbesmile\nbesmiled\nbesmiles\nbesmiling\nbesmirch\nbesmirched\nbesmirches\nbesmirching\nbesmoke\nbesmoked\nbesmokes\nbesmoking\nbesmooth\nbesmoothed\nbesmoothing\nbesmooths\nbesmudge\nbesmudged\nbesmudges\nbesmudging\nbesmut\nbesmuts\nbesmutted\nbesmutting\nbesnow\nbesnowed\nbesnowing\nbesnows\nbesom\nbesoms\nbesoothe\nbesoothed\nbesoothes\nbesoothing\nbesot\nbesots\nbesotted\nbesotting\nbesought\nbespake\nbespatter\nbespattered\nbespattering\nbespatters\nbespeak\nbespeaking\nbespeaks\nbespectacled\nbespoke\nbespoken\nbespouse\nbespoused\nbespouses\nbespousing\nbespread\nbespreading\nbespreads\nbesprent\nbest\nbestead\nbesteaded\nbesteading\nbesteads\nbested\nbestial\nbestialities\nbestiality\nbestially\nbestiaries\nbestiary\nbesting\nbestir\nbestirred\nbestirring\nbestirs\nbestow\nbestowal\nbestowals\nbestowed\nbestowing\nbestowment\nbestowments\nbestows\nbestrew\nbestrewed\nbestrewing\nbestrewn\nbestrews\nbestrid\nbestridden\nbestride\nbestrides\nbestriding\nbestrode\nbestrow\nbestrowed\nbestrowing\nbestrown\nbestrows\nbests\nbestselling\nbestud\nbestudded\nbestudding\nbestuds\nbeswarm\nbeswarmed\nbeswarming\nbeswarms\nbet\nbeta\nbetaine\nbetaines\nbetake\nbetaken\nbetakes\nbetaking\nbetas\nbetatron\nbetatrons\nbetatter\nbetattered\nbetattering\nbetatters\nbetaxed\nbetel\nbetelnut\nbetelnuts\nbetels\nbeth\nbethank\nbethanked\nbethanking\nbethanks\nbethel\nbethels\nbethink\nbethinking\nbethinks\nbethorn\nbethorned\nbethorning\nbethorns\nbethought\nbeths\nbethump\nbethumped\nbethumping\nbethumps\nbetide\nbetided\nbetides\nbetiding\nbetime\nbetimes\nbetise\nbetises\nbetoken\nbetokened\nbetokening\nbetokens\nbeton\nbetonies\nbetons\nbetony\nbetook\nbetray\nbetrayal\nbetrayals\nbetrayed\nbetrayer\nbetrayers\nbetraying\nbetrays\nbetroth\nbetrothal\nbetrothals\nbetrothed\nbetrothing\nbetroths\nbets\nbetta\nbettas\nbetted\nbetter\nbettered\nbettering\nbetterment\nbetterments\nbetters\nbetting\nbettor\nbettors\nbetween\nbetweenness\nbetwixt\nbeuncled\nbevatron\nbevatrons\nbevel\nbeveled\nbeveler\nbevelers\nbeveling\nbevelled\nbeveller\nbevellers\nbevelling\nbevels\nbeverage\nbeverages\nbevies\nbevomit\nbevomited\nbevomiting\nbevomits\nbevor\nbevors\nbevy\nbewail\nbewailed\nbewailer\nbewailers\nbewailing\nbewails\nbeware\nbewared\nbewares\nbewaring\nbewearied\nbewearies\nbeweary\nbewearying\nbeweep\nbeweeping\nbeweeps\nbewept\nbewig\nbewigged\nbewigging\nbewigs\nbewilder\nbewildered\nbewildering\nbewilderingly\nbewilderment\nbewilderments\nbewilders\nbewinged\nbewitch\nbewitched\nbewitchery\nbewitches\nbewitching\nbewitchingly\nbewitchingness\nbewitchment\nbewitchments\nbeworm\nbewormed\nbeworming\nbeworms\nbeworried\nbeworries\nbeworry\nbeworrying\nbewrap\nbewrapped\nbewrapping\nbewraps\nbewrapt\nbewray\nbewrayed\nbewrayer\nbewrayers\nbewraying\nbewrays\nbey\nbeylic\nbeylics\nbeylik\nbeyliks\nbeyond\nbeyonds\nbeys\nbezant\nbezants\nbezel\nbezels\nbezil\nbezils\nbezique\nbeziques\nbezoar\nbezoars\nbezzant\nbezzants\nbhakta\nbhaktas\nbhakti\nbhaktis\nbhang\nbhangs\nbheestie\nbheesties\nbheesty\nbhistie\nbhisties\nbhoot\nbhoots\nbhut\nbhuts\nbi\nbiacetyl\nbiacetyls\nbiali\nbialy\nbialys\nbiannual\nbiannually\nbias\nbiased\nbiasedly\nbiases\nbiasing\nbiasness\nbiasnesses\nbiassed\nbiasses\nbiassing\nbiathlon\nbiathlons\nbiaxal\nbiaxial\nbib\nbibasic\nbibb\nbibbed\nbibber\nbibberies\nbibbers\nbibbery\nbibbing\nbibbs\nbibcock\nbibcocks\nbibelot\nbibelots\nbible\nbibles\nbibless\nbiblical\nbiblically\nbiblike\nbibliographer\nbibliographers\nbibliographic\nbibliographical\nbibliographically\nbibliographies\nbibliography\nbibliophile\nbibliophiles\nbibs\nbibulous\nbibulously\nbibulousness\nbicameral\nbicameralism\nbicarb\nbicarbonate\nbicarbonates\nbicarbs\nbice\nbicentennial\nbicentennials\nbiceps\nbicepses\nbices\nbichrome\nbicker\nbickered\nbickerer\nbickerers\nbickering\nbickers\nbicolor\nbicolored\nbicolors\nbicolour\nbicolours\nbiconcave\nbiconvex\nbicorn\nbicorne\nbicornes\nbicron\nbicrons\nbicultural\nbicuspid\nbicuspids\nbicycle\nbicycled\nbicycler\nbicyclers\nbicycles\nbicyclic\nbicycling\nbicyclist\nbicyclists\nbid\nbidarka\nbidarkas\nbidarkee\nbidarkees\nbiddable\nbiddably\nbidden\nbidder\nbidders\nbiddies\nbidding\nbiddings\nbiddy\nbide\nbided\nbidental\nbider\nbiders\nbides\nbidet\nbidets\nbiding\nbidirectional\nbids\nbield\nbielded\nbielding\nbields\nbiennia\nbiennial\nbiennially\nbiennials\nbiennium\nbienniums\nbier\nbiers\nbifacial\nbiff\nbiffed\nbiffies\nbiffin\nbiffing\nbiffins\nbiffs\nbiffy\nbifid\nbifidities\nbifidity\nbifidly\nbifilar\nbiflex\nbifocal\nbifocals\nbifold\nbiforate\nbiforked\nbiform\nbiformed\nbifunctional\nbifurcate\nbifurcated\nbifurcates\nbifurcating\nbifurcation\nbifurcations\nbig\nbigamies\nbigamist\nbigamists\nbigamous\nbigamously\nbigamy\nbigaroon\nbigaroons\nbigeminies\nbigeminy\nbigeye\nbigeyes\nbigger\nbiggest\nbiggety\nbiggie\nbiggies\nbiggin\nbigging\nbiggings\nbiggins\nbiggish\nbiggity\nbighead\nbigheads\nbighearted\nbigheartedly\nbigheartedness\nbighorn\nbighorns\nbight\nbighted\nbighting\nbights\nbigly\nbigmouth\nbigmouths\nbigness\nbignesses\nbignonia\nbignonias\nbigot\nbigoted\nbigotedly\nbigotries\nbigotry\nbigots\nbigwig\nbigwigs\nbihourly\nbijou\nbijous\nbijoux\nbijugate\nbijugous\nbike\nbiked\nbiker\nbikers\nbikes\nbikeway\nbikeways\nbikie\nbiking\nbikini\nbikinied\nbikinis\nbilabial\nbilabials\nbilander\nbilanders\nbilateral\nbilaterally\nbilberries\nbilberry\nbilbo\nbilboa\nbilboas\nbilboes\nbilbos\nbile\nbiles\nbilge\nbilged\nbilges\nbilgier\nbilgiest\nbilging\nbilgy\nbiliary\nbilinear\nbilingual\nbilingualism\nbilingually\nbilious\nbiliously\nbiliousness\nbilk\nbilked\nbilker\nbilkers\nbilking\nbilks\nbill\nbillable\nbillboard\nbillboards\nbillbug\nbillbugs\nbilled\nbiller\nbillers\nbillet\nbilleted\nbilleter\nbilleters\nbilleting\nbillets\nbillfish\nbillfishes\nbillfold\nbillfolds\nbillhead\nbillheads\nbillhook\nbillhooks\nbilliard\nbilliards\nbillie\nbillies\nbilling\nbillings\nbillion\nbillionaire\nbillionaires\nbillions\nbillionth\nbillionths\nbillon\nbillons\nbillow\nbillowed\nbillowier\nbillowiest\nbillowing\nbillows\nbillowy\nbills\nbilly\nbillycan\nbillycans\nbilobate\nbilobed\nbilsted\nbilsteds\nbiltong\nbiltongs\nbima\nbimah\nbimahs\nbimanous\nbimanual\nbimas\nbimbo\nbimensal\nbimester\nbimesters\nbimetal\nbimetallic\nbimetallism\nbimetallist\nbimetallistic\nbimetallists\nbimetals\nbimethyl\nbimethyls\nbimodal\nbimodality\nbimonthlies\nbimonthly\nbin\nbinal\nbinaries\nbinary\nbinate\nbinately\nbinational\nbinaural\nbind\nbindable\nbinder\nbinderies\nbinders\nbindery\nbindi\nbinding\nbindingness\nbindings\nbindle\nbindles\nbinds\nbindweed\nbindweeds\nbine\nbines\nbinge\nbinges\nbingo\nbingos\nbinit\nbinits\nbinnacle\nbinnacles\nbinned\nbinning\nbinocle\nbinocles\nbinocular\nbinocularity\nbinocularly\nbinoculars\nbinomial\nbinomially\nbinomials\nbins\nbint\nbints\nbio\nbioassay\nbioassayed\nbioassaying\nbioassays\nbiochemical\nbiochemically\nbiochemist\nbiochemistries\nbiochemistry\nbiochemists\nbiocidal\nbiocide\nbiocides\nbioclean\nbiocycle\nbiocycles\nbiodegradability\nbiodegradable\nbiodegradation\nbiodegradations\nbiodegrade\nbiodegraded\nbiodegrades\nbiodegrading\nbiogen\nbiogenic\nbiogenies\nbiogens\nbiogeny\nbiogeographic\nbiogeographical\nbiogeographies\nbiogeography\nbiographer\nbiographers\nbiographic\nbiographical\nbiographically\nbiographies\nbiography\nbioherm\nbioherms\nbiologic\nbiological\nbiologically\nbiologics\nbiologies\nbiologist\nbiologists\nbiology\nbiolyses\nbiolysis\nbiolytic\nbiomass\nbiomasses\nbiome\nbiomedical\nbiomedicine\nbiomes\nbiometries\nbiometry\nbionic\nbionics\nbionomic\nbionomies\nbionomy\nbiont\nbiontic\nbionts\nbiophysical\nbiophysically\nbiophysicist\nbiophysicists\nbiophysics\nbioplasm\nbioplasms\nbiopsic\nbiopsies\nbiopsy\nbioptic\nbiorhythm\nbiorhythmic\nbiorhythms\nbios\nbioscope\nbioscopes\nbioscopies\nbioscopy\nbiota\nbiotas\nbiotic\nbiotical\nbiotics\nbiotin\nbiotins\nbiotite\nbiotites\nbiotitic\nbiotope\nbiotopes\nbiotron\nbiotrons\nbiotype\nbiotypes\nbiotypic\nbiovular\nbipack\nbipacks\nbiparental\nbiparous\nbiparted\nbipartisan\nbipartisanism\nbipartisanisms\nbipartisanship\nbipartisanships\nbipartite\nbipartitely\nbipartition\nbipartitions\nbiparty\nbiped\nbipedal\nbipeds\nbiphenyl\nbiphenyls\nbiplane\nbiplanes\nbipod\nbipods\nbipolar\nbipolarity\nbiracial\nbiradial\nbiramose\nbiramous\nbirch\nbirched\nbirchen\nbirches\nbirching\nbird\nbirdbath\nbirdbaths\nbirdcage\nbirdcages\nbirdcall\nbirdcalls\nbirded\nbirder\nbirders\nbirdfarm\nbirdfarms\nbirdhouse\nbirdhouses\nbirdie\nbirdied\nbirdieing\nbirdies\nbirding\nbirdlike\nbirdlime\nbirdlimed\nbirdlimes\nbirdliming\nbirdman\nbirdmen\nbirds\nbirdseed\nbirdseeds\nbirdseye\nbirdseyes\nbireme\nbiremes\nbiretta\nbirettas\nbirk\nbirkie\nbirkies\nbirks\nbirl\nbirle\nbirled\nbirler\nbirlers\nbirles\nbirling\nbirlings\nbirls\nbirr\nbirred\nbirretta\nbirrettas\nbirring\nbirrs\nbirse\nbirses\nbirth\nbirthday\nbirthdays\nbirthed\nbirthing\nbirthmark\nbirthmarks\nbirthplace\nbirthplaces\nbirthrate\nbirthrates\nbirthright\nbirthrights\nbirths\nbirthstone\nbirthstones\nbis\nbiscuit\nbiscuits\nbise\nbisect\nbisected\nbisecting\nbisection\nbisections\nbisector\nbisectors\nbisects\nbises\nbisexual\nbisexuality\nbisexually\nbisexuals\nbishop\nbishoped\nbishoping\nbishopric\nbishoprics\nbishops\nbisk\nbisks\nbismuth\nbismuths\nbisnaga\nbisnagas\nbison\nbisons\nbisque\nbisques\nbistate\nbister\nbistered\nbisters\nbistort\nbistorts\nbistouries\nbistoury\nbistre\nbistred\nbistres\nbistro\nbistroic\nbistros\nbit\nbitable\nbitch\nbitched\nbitcheries\nbitchery\nbitches\nbitchier\nbitchiest\nbitchily\nbitching\nbitchy\nbite\nbiteable\nbiter\nbiters\nbites\nbitewing\nbitewings\nbiting\nbitingly\nbits\nbitstock\nbitstocks\nbitsy\nbitt\nbitted\nbitten\nbitter\nbittered\nbitterer\nbitterest\nbittering\nbitterish\nbitterly\nbittern\nbitterness\nbitterns\nbitters\nbittersweet\nbittersweets\nbittier\nbittiest\nbitting\nbittings\nbittock\nbittocks\nbitts\nbitty\nbitumen\nbitumens\nbituminous\nbivalent\nbivalents\nbivalve\nbivalved\nbivalves\nbivinyl\nbivinyls\nbivouac\nbivouacked\nbivouacking\nbivouacks\nbivouacs\nbiweeklies\nbiweekly\nbiyearly\nbiz\nbizarre\nbizarrely\nbizarreness\nbizarres\nbize\nbizes\nbiznaga\nbiznagas\nbizonal\nbizone\nbizones\nblab\nblabbed\nblabber\nblabbered\nblabbering\nblabbers\nblabbing\nblabby\nblabs\nblack\nblackball\nblackballed\nblackballing\nblackballs\nblackberries\nblackberry\nblackbird\nblackbirds\nblackboard\nblackboards\nblackboy\nblackboys\nblackcap\nblackcaps\nblacked\nblacken\nblackened\nblackener\nblackeners\nblackening\nblackens\nblacker\nblackest\nblackfin\nblackfins\nblackflies\nblackfly\nblackguard\nblackguardly\nblackguards\nblackgum\nblackgums\nblackhead\nblackheads\nblacking\nblackings\nblackish\nblackjack\nblackjacked\nblackjacking\nblackjacks\nblackleg\nblacklegs\nblacklist\nblacklisted\nblacklisting\nblacklists\nblackly\nblackmail\nblackmailed\nblackmailer\nblackmailers\nblackmailing\nblackmails\nblackness\nblackout\nblackouts\nblacks\nblacksmith\nblacksmiths\nblacktop\nblacktopped\nblacktopping\nblacktops\nbladder\nbladderlike\nbladders\nbladdery\nblade\nbladed\nblades\nblae\nblah\nblahs\nblain\nblains\nblam\nblamable\nblamably\nblame\nblamed\nblameful\nblameless\nblamelessly\nblamelessness\nblamer\nblamers\nblames\nblameworthiness\nblameworthy\nblaming\nblams\nblanch\nblanched\nblancher\nblanchers\nblanches\nblanching\nbland\nblander\nblandest\nblandish\nblandished\nblandisher\nblandishers\nblandishes\nblandishing\nblandishment\nblandishments\nblandly\nblandness\nblank\nblanked\nblanker\nblankest\nblanket\nblanketed\nblanketing\nblankets\nblanking\nblankly\nblankness\nblanks\nblare\nblared\nblares\nblaring\nblarney\nblarneyed\nblarneying\nblarneys\nblase\nblaspheme\nblasphemed\nblasphemer\nblasphemers\nblasphemes\nblasphemies\nblaspheming\nblasphemous\nblasphemously\nblasphemousness\nblasphemy\nblast\nblasted\nblastema\nblastemas\nblastemata\nblaster\nblasters\nblastie\nblastier\nblasties\nblastiest\nblasting\nblastings\nblastoff\nblastoffs\nblastoma\nblastomas\nblastomata\nblasts\nblastula\nblastulae\nblastulas\nblasty\nblat\nblatancies\nblatancy\nblatant\nblatantly\nblate\nblather\nblathered\nblathering\nblathers\nblats\nblatted\nblatter\nblattered\nblattering\nblatters\nblatting\nblaubok\nblauboks\nblaw\nblawed\nblawing\nblawn\nblaws\nblaze\nblazed\nblazer\nblazers\nblazes\nblazing\nblazon\nblazoned\nblazoner\nblazoners\nblazoning\nblazonments\nblazonries\nblazonry\nblazons\nbleach\nbleachable\nbleached\nbleacher\nbleachers\nbleaches\nbleaching\nbleak\nbleaker\nbleakest\nbleakish\nbleakly\nbleakness\nbleaks\nblear\nbleared\nblearier\nbleariest\nblearily\nbleariness\nblearing\nblears\nbleary\nbleat\nbleated\nbleater\nbleaters\nbleating\nbleats\nbleb\nblebby\nblebs\nbled\nbleed\nbleeder\nbleeders\nbleeding\nbleedings\nbleeds\nbleep\nblellum\nblellums\nblemish\nblemished\nblemishes\nblemishing\nblench\nblenched\nblencher\nblenchers\nblenches\nblenching\nblend\nblende\nblended\nblender\nblenders\nblendes\nblending\nblends\nblennies\nblenny\nblent\nblesbok\nblesboks\nblesbuck\nblesbucks\nbless\nblessed\nblesseder\nblessedest\nblessedly\nblessedness\nblesser\nblessers\nblesses\nblessing\nblessings\nblest\nblet\nblether\nblethered\nblethering\nblethers\nblets\nblew\nblight\nblighted\nblighter\nblighters\nblighties\nblighting\nblights\nblighty\nblimey\nblimp\nblimpish\nblimps\nblimy\nblin\nblind\nblindage\nblindages\nblinded\nblinder\nblinders\nblindest\nblindfold\nblindfolded\nblindfolding\nblindfolds\nblinding\nblindly\nblindness\nblinds\nblini\nblinis\nblink\nblinkard\nblinkards\nblinked\nblinker\nblinkered\nblinkering\nblinkers\nblinking\nblinks\nblintz\nblintze\nblintzes\nblip\nblipped\nblipping\nblips\nbliss\nblisses\nblissful\nblissfully\nblissfulness\nblister\nblistered\nblistering\nblisters\nblistery\nblite\nblites\nblithe\nblithely\nblither\nblithered\nblithering\nblithers\nblithesome\nblithesomely\nblithest\nblitz\nblitzed\nblitzes\nblitzing\nblitzkrieg\nblitzkriegs\nblizzard\nblizzards\nbloat\nbloated\nbloater\nbloaters\nbloating\nbloats\nblob\nblobbed\nblobbing\nblobs\nbloc\nblock\nblockade\nblockaded\nblockader\nblockaders\nblockades\nblockading\nblockage\nblockages\nblockbuster\nblockbusters\nblockbusting\nblocked\nblocker\nblockers\nblockhead\nblockheads\nblockhouse\nblockhouses\nblockier\nblockiest\nblocking\nblockish\nblocks\nblocky\nblocs\nbloke\nblokes\nblond\nblonde\nblondeness\nblonder\nblondes\nblondest\nblondish\nblonds\nblood\nbloodbath\nbloodbaths\nbloodcurdling\nblooded\nbloodfin\nbloodfins\nbloodhound\nbloodhounds\nbloodied\nbloodier\nbloodies\nbloodiest\nbloodily\nbloodiness\nblooding\nbloodings\nbloodless\nbloodlessly\nbloodlessness\nbloodletting\nbloodlettings\nbloodline\nbloodlines\nbloodmobile\nbloodmobiles\nbloodred\nbloods\nbloodshed\nbloodshot\nbloodstain\nbloodstained\nbloodstream\nbloodstreams\nbloodsucker\nbloodsuckers\nbloodsucking\nbloodthirstily\nbloodthirstiness\nbloodthirsty\nbloody\nbloodying\nbloom\nbloomed\nbloomer\nbloomeries\nbloomers\nbloomery\nbloomier\nbloomiest\nblooming\nblooms\nbloomy\nbloop\nblooped\nblooper\nbloopers\nblooping\nbloops\nblossom\nblossomed\nblossoming\nblossoms\nblossomy\nblot\nblotch\nblotched\nblotches\nblotchier\nblotchiest\nblotchily\nblotching\nblotchy\nblotless\nblots\nblotted\nblotter\nblotters\nblottier\nblottiest\nblotting\nblotto\nblotty\nblouse\nbloused\nblouses\nblousier\nblousiest\nblousily\nblousing\nblouson\nblousons\nblousy\nblow\nblowback\nblowbacks\nblowby\nblowbys\nblower\nblowers\nblowfish\nblowfishes\nblowflies\nblowfly\nblowgun\nblowguns\nblowhard\nblowhards\nblowhole\nblowholes\nblowier\nblowiest\nblowing\nblown\nblowoff\nblowoffs\nblowout\nblowouts\nblowpipe\nblowpipes\nblows\nblowsed\nblowsier\nblowsiest\nblowsily\nblowsy\nblowtorch\nblowtorches\nblowtube\nblowtubes\nblowup\nblowups\nblowy\nblowzed\nblowzier\nblowziest\nblowzily\nblowzy\nblubber\nblubbered\nblubbering\nblubbers\nblubbery\nblucher\nbluchers\nbludgeon\nbludgeoned\nbludgeoning\nbludgeons\nblue\nblueball\nblueballs\nbluebell\nbluebells\nblueberries\nblueberry\nbluebill\nbluebills\nbluebird\nbluebirds\nbluebook\nbluebooks\nbluebottle\nbluebottles\nbluecap\nbluecaps\nbluecoat\nbluecoats\nblued\nbluefin\nbluefins\nbluefish\nbluefishes\nbluegill\nbluegills\nbluegrass\nbluegrasses\nbluegum\nbluegums\nbluehead\nblueheads\nblueing\nblueings\nblueish\nbluejack\nbluejacks\nbluejay\nbluejays\nblueline\nbluelines\nbluely\nblueness\nbluenesses\nbluenose\nbluenoses\nblueprint\nblueprints\nbluer\nblues\nbluesman\nbluesmen\nbluest\nbluestem\nbluestems\nbluestocking\nbluestockings\nbluesy\nbluet\nbluets\nblueweed\nblueweeds\nbluewood\nbluewoods\nbluey\nblueys\nbluff\nbluffed\nbluffer\nbluffers\nbluffest\nbluffing\nbluffly\nbluffness\nbluffs\nbluing\nbluings\nbluish\nbluishness\nblume\nblumed\nblumes\nbluming\nblunder\nblunderbuss\nblunderbusses\nblundered\nblunderer\nblunderers\nblundering\nblunderingly\nblunders\nblunge\nblunged\nblunger\nblungers\nblunges\nblunging\nblunt\nblunted\nblunter\nbluntest\nblunting\nbluntly\nbluntness\nblunts\nblur\nblurb\nblurbs\nblurred\nblurrier\nblurriest\nblurrily\nblurring\nblurry\nblurs\nblurt\nblurted\nblurter\nblurters\nblurting\nblurts\nblush\nblushed\nblusher\nblushers\nblushes\nblushful\nblushing\nblushingly\nbluster\nblustered\nblusterer\nblusterers\nblustering\nblusteringly\nblusterous\nblusters\nblustery\nblype\nblypes\nbo\nboa\nboar\nboard\nboarded\nboarder\nboarders\nboarding\nboardinghouse\nboardinghouses\nboardings\nboardman\nboardmen\nboardroom\nboardrooms\nboards\nboardwalk\nboardwalks\nboarfish\nboarfishes\nboarish\nboars\nboart\nboarts\nboas\nboast\nboasted\nboaster\nboasters\nboastful\nboastfully\nboastfulness\nboasting\nboasts\nboat\nboatable\nboatbill\nboatbills\nboated\nboatel\nboatels\nboater\nboaters\nboathouse\nboathouses\nboating\nboatings\nboatload\nboatloads\nboatman\nboatmen\nboats\nboatsman\nboatsmen\nboatswain\nboatswains\nboatyard\nboatyards\nbob\nbobbed\nbobber\nbobberies\nbobbers\nbobbery\nbobbies\nbobbin\nbobbinet\nbobbinets\nbobbing\nbobbins\nbobble\nbobbled\nbobbles\nbobbling\nbobby\nbobcat\nbobcats\nbobeche\nbobeches\nbobolink\nbobolinks\nbobs\nbobsled\nbobsledded\nbobsledder\nbobsledders\nbobsledding\nbobsleded\nbobsleding\nbobsleds\nbobstay\nbobstays\nbobtail\nbobtailed\nbobtailing\nbobtails\nbobwhite\nbobwhites\nbocaccio\nbocaccios\nbocce\nbocces\nbocci\nboccia\nboccias\nboccie\nboccies\nboccis\nboche\nboches\nbock\nbocks\nbod\nbode\nboded\nbodega\nbodegas\nbodement\nbodements\nbodes\nbodice\nbodices\nbodied\nbodies\nbodiless\nbodily\nboding\nbodingly\nbodings\nbodkin\nbodkins\nbods\nbody\nbodybuilder\nbodybuilders\nbodybuilding\nbodyguard\nbodyguards\nbodying\nbodysurf\nbodysurfed\nbodysurfing\nbodysurfs\nbodywork\nbodyworks\nboehmite\nboehmites\nboff\nboffin\nboffins\nboffo\nboffola\nboffolas\nboffos\nboffs\nbog\nbogan\nbogans\nbogbean\nbogbeans\nbogey\nbogeyed\nbogeying\nbogeyman\nbogeymen\nbogeys\nbogged\nboggier\nboggiest\nbogging\nboggish\nboggle\nboggled\nboggler\nbogglers\nboggles\nboggling\nboggy\nbogie\nbogies\nbogle\nbogles\nbogs\nbogus\nbogwood\nbogwoods\nbogy\nbogyism\nbogyisms\nbogyman\nbogymen\nbohea\nboheas\nbohemia\nbohemian\nbohemians\nbohemias\nbohunk\nbohunks\nboil\nboilable\nboiled\nboiler\nboilermaker\nboilermakers\nboilers\nboiling\nboils\nboing\nboisterous\nboisterously\nboisterousness\nboite\nboites\nbola\nbolar\nbolas\nbolases\nbold\nbolder\nboldest\nboldface\nboldfaced\nboldfaces\nboldfacing\nboldly\nboldness\nboldnesses\nbole\nbolero\nboleros\nboles\nbolete\nboletes\nboleti\nboletus\nboletuses\nbolide\nbolides\nbolivar\nbolivares\nbolivars\nbolivia\nbolivias\nboll\nbollard\nbollards\nbolled\nbolling\nbollix\nbollixed\nbollixes\nbollixing\nbollox\nbolloxed\nbolloxes\nbolloxing\nbolls\nbollworm\nbollworms\nbolo\nbologna\nbolognas\nboloney\nboloneys\nbolos\nbolshevism\nbolson\nbolsons\nbolster\nbolstered\nbolsterer\nbolsterers\nbolstering\nbolsters\nbolt\nbolted\nbolter\nbolters\nbolthead\nboltheads\nbolting\nboltonia\nboltonias\nboltrope\nboltropes\nbolts\nbolus\nboluses\nbomb\nbombard\nbombarded\nbombardier\nbombardiers\nbombarding\nbombardment\nbombardments\nbombards\nbombast\nbombastic\nbombastically\nbombasts\nbombe\nbombed\nbomber\nbombers\nbombes\nbombing\nbombload\nbombloads\nbombproof\nbombs\nbombshell\nbombshells\nbombsight\nbombsights\nbombycid\nbombycids\nbombyx\nbombyxes\nbonaci\nbonacis\nbonanza\nbonanzas\nbonbon\nbonbons\nbond\nbondable\nbondage\nbondages\nbonded\nbonder\nbonders\nbondholder\nbondholders\nbonding\nbondmaid\nbondmaids\nbondman\nbondmen\nbonds\nbondsman\nbondsmen\nbonduc\nbonducs\nbondwoman\nbondwomen\nbone\nboned\nbonefish\nbonefishes\nbonehead\nboneheads\nboneless\nboner\nboners\nbones\nboneset\nbonesets\nboney\nboneyard\nboneyards\nbonfire\nbonfires\nbong\nbonged\nbonging\nbongo\nbongoes\nbongoist\nbongoists\nbongos\nbongs\nbonhomie\nbonhomies\nbonier\nboniest\nboniface\nbonifaces\nboniness\nboninesses\nboning\nbonita\nbonitas\nbonito\nbonitoes\nbonitos\nbonk\nbonkers\nbonks\nbonne\nbonnes\nbonnet\nbonneted\nbonneting\nbonnets\nbonnie\nbonnier\nbonniest\nbonnily\nbonnock\nbonnocks\nbonny\nbonsai\nbonspell\nbonspells\nbonspiel\nbonspiels\nbontebok\nbonteboks\nbonus\nbonuses\nbony\nbonze\nbonzer\nbonzes\nboo\nboob\nboobies\nbooboo\nbooboos\nboobs\nbooby\nboodle\nboodled\nboodler\nboodlers\nboodles\nboodling\nbooed\nbooger\nboogers\nboogie\nboogies\nboogy\nboogyman\nboogymen\nboohoo\nboohooed\nboohooing\nboohoos\nbooing\nbook\nbookbinder\nbookbinderies\nbookbinders\nbookbindery\nbookbinding\nbookbindings\nbookcase\nbookcases\nbooked\nbookend\nbookends\nbooker\nbookers\nbookie\nbookies\nbooking\nbookings\nbookish\nbookishly\nbookishness\nbookkeeper\nbookkeepers\nbookkeeping\nbooklet\nbooklets\nbooklore\nbooklores\nbookmaker\nbookmakers\nbookmaking\nbookman\nbookmark\nbookmarks\nbookmen\nbookmobile\nbookmobiles\nbookplate\nbookplates\nbookrack\nbookracks\nbookrest\nbookrests\nbooks\nbookseller\nbooksellers\nbookshelf\nbookshelves\nbookshop\nbookshops\nbookstall\nbookstalls\nbookstore\nbookstores\nbookworm\nbookworms\nboom\nboomed\nboomer\nboomerang\nboomeranged\nboomeranging\nboomerangs\nboomers\nboomier\nboomiest\nbooming\nboomkin\nboomkins\nboomlet\nboomlets\nbooms\nboomtown\nboomtowns\nboomy\nboon\nboondocks\nboondoggle\nboondoggled\nboondoggler\nboondogglers\nboondoggles\nboondoggling\nboonies\nboons\nboor\nboorish\nboorishly\nboorishness\nboors\nboos\nboost\nboosted\nbooster\nboosters\nboosting\nboosts\nboot\nbootblack\nbootblacks\nbooted\nbootee\nbootees\nbooteries\nbootery\nbooth\nbooths\nbootie\nbooties\nbooting\nbootjack\nbootjacks\nbootlace\nbootlaces\nbootleg\nbootlegged\nbootlegger\nbootleggers\nbootlegging\nbootlegs\nbootless\nbootlessly\nbootlessness\nbootlick\nbootlicked\nbootlicking\nbootlicks\nboots\nbootstrap\nbootstraps\nbooty\nbooze\nboozed\nboozer\nboozers\nboozes\nboozier\nbooziest\nboozily\nboozing\nboozy\nbop\nbopped\nbopper\nboppers\nbopping\nbops\nbora\nboraces\nboracic\nboracite\nboracites\nborage\nborages\nboral\nborane\nboranes\nboras\nborate\nborated\nborates\nborax\nboraxes\nbordel\nbordello\nbordellos\nbordels\nborder\nbordered\nborderer\nborderers\nbordering\nborderland\nborderlands\nborderline\nborderlines\nborders\nbordure\nbordures\nbore\nboreal\nborecole\nborecoles\nbored\nboredom\nboredoms\nborer\nborers\nbores\nboric\nboride\nborides\nboring\nboringly\nborings\nborn\nborne\nborneol\nborneols\nbornite\nbornites\nboron\nboronic\nborons\nborough\nboroughs\nborrow\nborrowed\nborrower\nborrowers\nborrowing\nborrowings\nborrows\nborsch\nborsches\nborscht\nborschts\nborsht\nborshts\nborstal\nborstals\nbort\nborts\nborty\nbortz\nbortzes\nborzoi\nborzois\nbos\nboscage\nboscages\nboschbok\nboschboks\nbosh\nboshbok\nboshboks\nboshes\nboshvark\nboshvarks\nbosk\nboskage\nboskages\nbosker\nbosket\nboskets\nboskier\nboskiest\nbosks\nbosky\nbosom\nbosomed\nbosoming\nbosoms\nbosomy\nboson\nbosons\nbosque\nbosques\nbosquet\nbosquets\nboss\nbossdom\nbossdoms\nbossed\nbosses\nbossier\nbossies\nbossiest\nbossily\nbossiness\nbossing\nbossism\nbossisms\nbossy\nboston\nbostons\nbosun\nbosuns\nbot\nbota\nbotanic\nbotanical\nbotanically\nbotanies\nbotanise\nbotanised\nbotanises\nbotanising\nbotanist\nbotanists\nbotanize\nbotanized\nbotanizes\nbotanizing\nbotany\nbotas\nbotch\nbotched\nbotcher\nbotcheries\nbotchers\nbotchery\nbotches\nbotchier\nbotchiest\nbotchily\nbotching\nbotchy\nbotel\nbotels\nbotflies\nbotfly\nboth\nbother\nbotheration\nbotherations\nbothered\nbothering\nbothers\nbothersome\nbothy\nbotonee\nbotonnee\nbotryoid\nbotryose\nbots\nbott\nbottle\nbottled\nbottleful\nbottlefuls\nbottleneck\nbottlenecks\nbottlenose\nbottler\nbottlers\nbottles\nbottling\nbottom\nbottomed\nbottomer\nbottomers\nbottoming\nbottomless\nbottomlessly\nbottomlessness\nbottommost\nbottomries\nbottomry\nbottoms\nbotts\nbotulin\nbotulins\nbotulism\nbotulisms\nboucle\nboucles\nboudoir\nboudoirs\nbouffant\nbouffants\nbouffe\nbouffes\nbough\nboughed\nboughpot\nboughpots\nboughs\nbought\nboughten\nbougie\nbougies\nbouillabaisse\nbouillon\nbouillons\nboulder\nbouldered\nboulders\nbouldery\nboule\nboules\nboulevard\nboulevardier\nboulevardiers\nboulevards\nboulle\nboulles\nbounce\nbounced\nbouncer\nbouncers\nbounces\nbouncier\nbounciest\nbouncily\nbouncing\nbouncy\nbound\nboundable\nboundaries\nboundary\nbounded\nbounden\nbounder\nbounders\nbounding\nboundless\nboundlessly\nboundlessness\nbounds\nbounteous\nbounteously\nbounteousness\nbountied\nbounties\nbountiful\nbountifully\nbountifulness\nbounty\nbouquet\nbouquets\nbourbon\nbourbons\nbourdon\nbourdons\nbourg\nbourgeois\nbourgeoise\nbourgeoises\nbourgeoisie\nbourgeoisies\nbourgeon\nbourgeoned\nbourgeoning\nbourgeons\nbourgs\nbourn\nbourne\nbournes\nbourns\nbourree\nbourrees\nbourse\nbourses\nbourtree\nbourtrees\nbouse\nboused\nbouses\nbousing\nbousouki\nbousoukia\nbousoukis\nbousy\nbout\nboutique\nboutiques\nboutonniere\nboutonnieres\nbouts\nbouzouki\nbouzoukia\nbouzoukis\nbovid\nbovids\nbovine\nbovinely\nbovines\nbovinities\nbovinity\nbow\nbowdlerization\nbowdlerizations\nbowdlerize\nbowdlerized\nbowdlerizes\nbowdlerizing\nbowed\nbowel\nboweled\nboweling\nbowelled\nbowelling\nbowels\nbower\nbowered\nboweries\nbowering\nbowers\nbowery\nbowfin\nbowfins\nbowfront\nbowhead\nbowheads\nbowing\nbowingly\nbowings\nbowknot\nbowknots\nbowl\nbowlder\nbowlders\nbowled\nbowleg\nbowlegged\nbowlegs\nbowler\nbowlers\nbowless\nbowlful\nbowlfuls\nbowlike\nbowline\nbowlines\nbowling\nbowlings\nbowllike\nbowls\nbowman\nbowmen\nbowpot\nbowpots\nbows\nbowse\nbowsed\nbowses\nbowshot\nbowshots\nbowsing\nbowsprit\nbowsprits\nbowstring\nbowstrings\nbowwow\nbowwows\nbowyer\nbowyers\nbox\nboxberries\nboxberry\nboxcar\nboxcars\nboxed\nboxer\nboxers\nboxes\nboxfish\nboxfishes\nboxful\nboxfuls\nboxhaul\nboxhauled\nboxhauling\nboxhauls\nboxier\nboxiest\nboxiness\nboxinesses\nboxing\nboxings\nboxlike\nboxthorn\nboxthorns\nboxwood\nboxwoods\nboxy\nboy\nboyar\nboyard\nboyards\nboyarism\nboyarisms\nboyars\nboycott\nboycotted\nboycotter\nboycotters\nboycotting\nboycotts\nboyfriend\nboyfriends\nboyhood\nboyhoods\nboyish\nboyishly\nboyishness\nboyla\nboylas\nboyo\nboyos\nboys\nboysenberries\nboysenberry\nbozo\nbozos\nbra\nbrabble\nbrabbled\nbrabbler\nbrabblers\nbrabbles\nbrabbling\nbrace\nbraced\nbracelet\nbracelets\nbracer\nbracero\nbraceros\nbracers\nbraces\nbrach\nbraches\nbrachet\nbrachets\nbrachia\nbrachial\nbrachials\nbrachium\nbracing\nbracings\nbracken\nbrackens\nbracket\nbracketed\nbracketing\nbrackets\nbrackish\nbrackishness\nbract\nbracteal\nbracted\nbractlet\nbractlets\nbracts\nbrad\nbradawl\nbradawls\nbradded\nbradding\nbradoon\nbradoons\nbrads\nbrae\nbraes\nbrag\nbraggadocio\nbraggadocios\nbraggart\nbraggarts\nbragged\nbragger\nbraggers\nbraggest\nbraggier\nbraggiest\nbragging\nbraggingly\nbraggy\nbrags\nbrahma\nbrahmas\nbraid\nbraided\nbraider\nbraiders\nbraiding\nbraidings\nbraids\nbrail\nbrailed\nbrailing\nbraille\nbrailled\nbrailles\nbrailling\nbrails\nbrain\nbrainchild\nbrainchildren\nbrained\nbrainier\nbrainiest\nbrainily\nbraininess\nbraining\nbrainish\nbrainless\nbrainlessly\nbrainlessness\nbrainpan\nbrainpans\nbrains\nbrainstorm\nbrainstorming\nbrainstormings\nbrainstorms\nbrainwash\nbrainwashed\nbrainwasher\nbrainwashers\nbrainwashes\nbrainwashing\nbrainwashings\nbrainy\nbraise\nbraised\nbraises\nbraising\nbraize\nbraizes\nbrake\nbrakeage\nbrakeages\nbraked\nbrakeless\nbrakeman\nbrakemen\nbrakes\nbrakier\nbrakiest\nbraking\nbraky\nbramble\nbrambled\nbrambles\nbramblier\nbrambliest\nbrambling\nbrambly\nbran\nbranch\nbranched\nbranches\nbranchia\nbranchiae\nbranchier\nbranchiest\nbranching\nbranchless\nbranchy\nbrand\nbranded\nbrander\nbranders\nbrandied\nbrandies\nbranding\nbrandish\nbrandished\nbrandishes\nbrandishing\nbrands\nbrandy\nbrandying\nbrank\nbranks\nbranned\nbranner\nbranners\nbrannier\nbranniest\nbranning\nbranny\nbrans\nbrant\nbrantail\nbrantails\nbrants\nbras\nbrash\nbrasher\nbrashes\nbrashest\nbrashier\nbrashiest\nbrashly\nbrashness\nbrashy\nbrasier\nbrasiers\nbrasil\nbrasilin\nbrasilins\nbrasils\nbrass\nbrassage\nbrassages\nbrassard\nbrassards\nbrassart\nbrassarts\nbrasserie\nbrasseries\nbrasses\nbrassica\nbrassicas\nbrassie\nbrassier\nbrassiere\nbrassieres\nbrassies\nbrassiest\nbrassily\nbrassiness\nbrassish\nbrassy\nbrat\nbrats\nbrattice\nbratticed\nbrattices\nbratticing\nbrattier\nbrattiest\nbrattish\nbrattle\nbrattled\nbrattles\nbrattling\nbratty\nbraunite\nbraunites\nbrava\nbravado\nbravadoes\nbravados\nbravas\nbrave\nbraved\nbravely\nbraveness\nbraver\nbraveries\nbravers\nbravery\nbraves\nbravest\nbravi\nbraving\nbravo\nbravoed\nbravoes\nbravoing\nbravos\nbravura\nbravuras\nbravure\nbraw\nbrawer\nbrawest\nbrawl\nbrawled\nbrawler\nbrawlers\nbrawlie\nbrawlier\nbrawliest\nbrawling\nbrawls\nbrawly\nbrawn\nbrawnier\nbrawniest\nbrawnily\nbrawniness\nbrawns\nbrawny\nbraws\nbraxies\nbraxy\nbray\nbrayed\nbrayer\nbrayers\nbraying\nbrays\nbraza\nbrazas\nbraze\nbrazed\nbrazen\nbrazened\nbrazening\nbrazenly\nbrazenness\nbrazens\nbrazer\nbrazers\nbrazes\nbrazier\nbraziers\nbrazil\nbrazilin\nbrazilins\nbrazils\nbrazing\nbreach\nbreached\nbreacher\nbreachers\nbreaches\nbreaching\nbread\nbreadbasket\nbreadbaskets\nbreadboard\nbreadboards\nbreaded\nbreadfruit\nbreadfruits\nbreading\nbreadnut\nbreadnuts\nbreads\nbreadstuff\nbreadstuffs\nbreadth\nbreadths\nbreadwinner\nbreadwinners\nbreak\nbreakable\nbreakage\nbreakages\nbreakdown\nbreakdowns\nbreaker\nbreakers\nbreakfast\nbreakfasted\nbreakfasting\nbreakfasts\nbreaking\nbreakings\nbreakneck\nbreakout\nbreakouts\nbreaks\nbreakthrough\nbreakthroughs\nbreakup\nbreakups\nbreakwater\nbreakwaters\nbream\nbreamed\nbreaming\nbreams\nbreast\nbreastbone\nbreastbones\nbreasted\nbreasting\nbreastplate\nbreastplates\nbreasts\nbreaststroke\nbreaststrokes\nbreastwork\nbreastworks\nbreath\nbreathable\nbreathe\nbreathed\nbreather\nbreathers\nbreathes\nbreathier\nbreathiest\nbreathing\nbreathless\nbreathlessly\nbreathlessness\nbreaths\nbreathtaking\nbreathtakingly\nbreathy\nbreccia\nbreccial\nbreccias\nbrecham\nbrechams\nbrechan\nbrechans\nbred\nbrede\nbredes\nbree\nbreech\nbreechcloth\nbreechcloths\nbreeched\nbreeches\nbreeching\nbreed\nbreeder\nbreeders\nbreeding\nbreedings\nbreeds\nbreeks\nbrees\nbreeze\nbreezed\nbreezes\nbreezeway\nbreezeways\nbreezier\nbreeziest\nbreezily\nbreeziness\nbreezing\nbreezy\nbregma\nbregmata\nbregmate\nbren\nbrens\nbrent\nbrents\nbrethren\nbreve\nbreves\nbrevet\nbrevetcies\nbrevetcy\nbreveted\nbreveting\nbrevets\nbrevetted\nbrevetting\nbreviaries\nbreviary\nbrevier\nbreviers\nbrevities\nbrevity\nbrew\nbrewage\nbrewages\nbrewed\nbrewer\nbreweries\nbrewers\nbrewery\nbrewing\nbrewings\nbrewis\nbrewises\nbrews\nbriar\nbriard\nbriards\nbriars\nbriary\nbribable\nbribe\nbribed\nbriber\nbriberies\nbribers\nbribery\nbribes\nbribing\nbrick\nbrickbat\nbrickbats\nbricked\nbrickier\nbrickiest\nbricking\nbricklayer\nbricklayers\nbricklaying\nbricklayings\nbrickle\nbricks\nbrickwork\nbrickworks\nbricky\nbrickyard\nbrickyards\nbricole\nbricoles\nbridal\nbridally\nbridals\nbride\nbridegroom\nbridegrooms\nbrides\nbridesmaid\nbridesmaids\nbridge\nbridgeable\nbridged\nbridgehead\nbridgeheads\nbridges\nbridgework\nbridgeworks\nbridging\nbridgings\nbridle\nbridled\nbridler\nbridlers\nbridles\nbridling\nbridoon\nbridoons\nbrie\nbrief\nbriefcase\nbriefcases\nbriefed\nbriefer\nbriefers\nbriefest\nbriefing\nbriefings\nbriefly\nbriefness\nbriefs\nbrier\nbriers\nbriery\nbries\nbrig\nbrigade\nbrigaded\nbrigades\nbrigadier\nbrigadiers\nbrigading\nbrigand\nbrigandage\nbrigands\nbrigantine\nbrigantines\nbright\nbrighten\nbrightened\nbrightener\nbrighteners\nbrightening\nbrightens\nbrighter\nbrightest\nbrightly\nbrightness\nbrights\nbrigs\nbrill\nbrilliance\nbrilliancies\nbrilliancy\nbrilliant\nbrilliantine\nbrilliantines\nbrilliantly\nbrilliants\nbrills\nbrim\nbrimful\nbrimfull\nbrimless\nbrimmed\nbrimmer\nbrimmers\nbrimming\nbrims\nbrimstone\nbrimstones\nbrin\nbrinded\nbrindle\nbrindled\nbrindles\nbrine\nbrined\nbriner\nbriners\nbrines\nbring\nbringer\nbringers\nbringing\nbrings\nbrinier\nbrinies\nbriniest\nbrininess\nbrining\nbrinish\nbrink\nbrinks\nbrins\nbriny\nbrio\nbrioche\nbrioches\nbrionies\nbriony\nbrios\nbriquet\nbriquets\nbriquette\nbriquetted\nbriquettes\nbriquetting\nbris\nbrisance\nbrisances\nbrisant\nbrisk\nbrisked\nbrisker\nbriskest\nbrisket\nbriskets\nbrisking\nbriskly\nbriskness\nbrisks\nbrisling\nbrislings\nbristle\nbristled\nbristles\nbristlier\nbristliest\nbristling\nbristlings\nbristly\nbristol\nbristols\nbrit\nbritches\nbrits\nbritska\nbritskas\nbritt\nbrittle\nbrittled\nbrittleness\nbrittler\nbrittles\nbrittlest\nbrittling\nbritts\nbritzka\nbritzkas\nbritzska\nbritzskas\nbroach\nbroached\nbroacher\nbroachers\nbroaches\nbroaching\nbroad\nbroadax\nbroadaxe\nbroadaxes\nbroadband\nbroadcast\nbroadcasted\nbroadcaster\nbroadcasters\nbroadcasting\nbroadcasts\nbroadcloth\nbroadcloths\nbroaden\nbroadened\nbroadening\nbroadens\nbroader\nbroadest\nbroadish\nbroadloom\nbroadlooms\nbroadly\nbroads\nbroadside\nbroadsides\nbroadsword\nbroadswords\nbrocade\nbrocaded\nbrocades\nbrocading\nbrocatel\nbrocatels\nbroccoli\nbroccolis\nbroche\nbrochette\nbrochettes\nbrochure\nbrochures\nbrock\nbrockage\nbrockages\nbrocket\nbrockets\nbrocks\nbrocoli\nbrocolis\nbrogan\nbrogans\nbrogue\nbrogueries\nbroguery\nbrogues\nbroguish\nbroider\nbroidered\nbroideries\nbroidering\nbroiders\nbroidery\nbroil\nbroiled\nbroiler\nbroilers\nbroiling\nbroils\nbrokage\nbrokages\nbroke\nbroken\nbrokenhearted\nbrokenly\nbrokenness\nbroker\nbrokerage\nbrokerages\nbrokers\nbrollies\nbrolly\nbromal\nbromals\nbromate\nbromated\nbromates\nbromating\nbrome\nbromelin\nbromelins\nbromes\nbromic\nbromid\nbromide\nbromides\nbromidic\nbromids\nbromin\nbromine\nbromines\nbromins\nbromism\nbromisms\nbromo\nbromos\nbronc\nbronchi\nbronchia\nbronchial\nbronchitis\nbroncho\nbronchos\nbronchus\nbronco\nbroncobuster\nbroncobusters\nbroncos\nbroncs\nbronze\nbronzed\nbronzer\nbronzers\nbronzes\nbronzier\nbronziest\nbronzing\nbronzings\nbronzy\nbroo\nbrooch\nbrooches\nbrood\nbrooded\nbrooder\nbrooders\nbroodier\nbroodiest\nbroodiness\nbrooding\nbroodingly\nbroods\nbroody\nbrook\nbrooked\nbrooking\nbrookite\nbrookites\nbrooklet\nbrooklets\nbrooks\nbroom\nbroomed\nbroomier\nbroomiest\nbrooming\nbrooms\nbroomstick\nbroomsticks\nbroomy\nbroos\nbrose\nbroses\nbrosy\nbroth\nbrothel\nbrothels\nbrother\nbrothered\nbrotherhood\nbrotherhoods\nbrothering\nbrotherliness\nbrotherly\nbrothers\nbroths\nbrothy\nbrougham\nbroughams\nbrought\nbrouhaha\nbrouhahas\nbrow\nbrowbeat\nbrowbeaten\nbrowbeating\nbrowbeats\nbrowless\nbrown\nbrowned\nbrowner\nbrownest\nbrownie\nbrownier\nbrownies\nbrowniest\nbrowning\nbrownish\nbrownout\nbrownouts\nbrowns\nbrownstone\nbrownstones\nbrowny\nbrows\nbrowse\nbrowsed\nbrowser\nbrowsers\nbrowses\nbrowsing\nbrr\nbrrr\nbrucella\nbrucellae\nbrucellas\nbrucin\nbrucine\nbrucines\nbrucins\nbrugh\nbrughs\nbruin\nbruins\nbruise\nbruised\nbruiser\nbruisers\nbruises\nbruising\nbruit\nbruited\nbruiter\nbruiters\nbruiting\nbruits\nbrulot\nbrulots\nbrulyie\nbrulyies\nbrulzie\nbrulzies\nbrumal\nbrumbies\nbrumby\nbrume\nbrumes\nbrumous\nbrunch\nbrunched\nbrunches\nbrunching\nbrunet\nbrunets\nbrunette\nbrunettes\nbrunizem\nbrunizems\nbrunt\nbrunts\nbrush\nbrushed\nbrusher\nbrushers\nbrushes\nbrushier\nbrushiest\nbrushing\nbrushoff\nbrushoffs\nbrushup\nbrushups\nbrushwork\nbrushworks\nbrushy\nbrusk\nbrusker\nbruskest\nbrusque\nbrusquely\nbrusqueness\nbrusquer\nbrusquest\nbrut\nbrutal\nbrutalities\nbrutality\nbrutalization\nbrutalizations\nbrutalize\nbrutalized\nbrutalizes\nbrutalizing\nbrutally\nbrute\nbruted\nbrutely\nbrutes\nbrutified\nbrutifies\nbrutify\nbrutifying\nbruting\nbrutish\nbrutishly\nbrutishness\nbrutism\nbrutisms\nbruxism\nbruxisms\nbryologies\nbryology\nbryonies\nbryony\nbryozoan\nbryozoans\nbub\nbubal\nbubale\nbubales\nbubaline\nbubalis\nbubalises\nbubals\nbubbies\nbubble\nbubbled\nbubbler\nbubblers\nbubbles\nbubblier\nbubblies\nbubbliest\nbubbling\nbubbly\nbubby\nbubinga\nbubingas\nbubo\nbuboed\nbuboes\nbubonic\nbubs\nbuccal\nbuccally\nbuccaneer\nbuccaneerish\nbuccaneers\nbuck\nbuckaroo\nbuckaroos\nbuckayro\nbuckayros\nbuckbean\nbuckbeans\nbuckboard\nbuckboards\nbucked\nbuckeen\nbuckeens\nbucker\nbuckeroo\nbuckeroos\nbuckers\nbucket\nbucketed\nbucketful\nbucketfuls\nbucketing\nbuckets\nbucketsful\nbuckeye\nbuckeyes\nbucking\nbuckish\nbuckle\nbuckled\nbuckler\nbucklered\nbucklering\nbucklers\nbuckles\nbuckling\nbucko\nbuckoes\nbuckra\nbuckram\nbuckramed\nbuckraming\nbuckrams\nbuckras\nbucks\nbucksaw\nbucksaws\nbuckshee\nbuckshees\nbuckshot\nbuckshots\nbuckskin\nbuckskins\nbucktail\nbucktails\nbuckteeth\nbuckthorn\nbuckthorns\nbucktooth\nbucktoothed\nbuckwheat\nbucolic\nbucolically\nbucolics\nbud\nbudded\nbudder\nbudders\nbuddies\nbudding\nbuddle\nbuddleia\nbuddleias\nbuddles\nbuddy\nbudge\nbudged\nbudger\nbudgerigar\nbudgerigars\nbudgers\nbudges\nbudget\nbudgetary\nbudgeted\nbudgeter\nbudgeters\nbudgeting\nbudgets\nbudgie\nbudgies\nbudging\nbudless\nbudlike\nbuds\nbuff\nbuffable\nbuffalo\nbuffaloed\nbuffaloes\nbuffaloing\nbuffalos\nbuffed\nbuffer\nbuffered\nbuffering\nbuffers\nbuffet\nbuffeted\nbuffeter\nbuffeters\nbuffeting\nbuffets\nbuffi\nbuffier\nbuffiest\nbuffing\nbuffo\nbuffoon\nbuffooneries\nbuffoonery\nbuffoonish\nbuffoons\nbuffos\nbuffs\nbuffy\nbug\nbugaboo\nbugaboos\nbugbane\nbugbanes\nbugbear\nbugbears\nbugeye\nbugeyes\nbugged\nbugger\nbuggered\nbuggeries\nbuggering\nbuggers\nbuggery\nbuggier\nbuggies\nbuggiest\nbugging\nbuggy\nbughouse\nbughouses\nbugle\nbugled\nbugler\nbuglers\nbugles\nbugling\nbugloss\nbuglosses\nbugs\nbugseed\nbugseeds\nbugsha\nbugshas\nbuhl\nbuhls\nbuhlwork\nbuhlworks\nbuhr\nbuhrs\nbuild\nbuildable\nbuilded\nbuilder\nbuilders\nbuilding\nbuildings\nbuilds\nbuildup\nbuildups\nbuilt\nbuirdly\nbulb\nbulbar\nbulbed\nbulbel\nbulbels\nbulbil\nbulbils\nbulbous\nbulbously\nbulbs\nbulbul\nbulbuls\nbulge\nbulged\nbulger\nbulgers\nbulges\nbulgier\nbulgiest\nbulging\nbulgur\nbulgurs\nbulgy\nbulimia\nbulimiac\nbulimias\nbulimic\nbulk\nbulkage\nbulkages\nbulked\nbulkhead\nbulkheads\nbulkier\nbulkiest\nbulkily\nbulkiness\nbulking\nbulks\nbulky\nbull\nbulla\nbullace\nbullaces\nbullae\nbullate\nbullbat\nbullbats\nbulldog\nbulldogged\nbulldogging\nbulldogs\nbulldoze\nbulldozed\nbulldozer\nbulldozers\nbulldozes\nbulldozing\nbulled\nbullet\nbulleted\nbulletin\nbulletined\nbulleting\nbulletining\nbulletins\nbulletproof\nbullets\nbullfight\nbullfighter\nbullfighters\nbullfighting\nbullfights\nbullfrog\nbullfrogs\nbullhead\nbullheaded\nbullheadedly\nbullheadedness\nbullheads\nbullhorn\nbullhorns\nbullied\nbullier\nbullies\nbulliest\nbulling\nbullion\nbullions\nbullish\nbullishly\nbullneck\nbullnecks\nbullnose\nbullnoses\nbullock\nbullocks\nbullocky\nbullous\nbullpen\nbullpens\nbullpout\nbullpouts\nbullring\nbullrings\nbullrush\nbullrushes\nbulls\nbullshit\nbullshits\nbullshitted\nbullshitting\nbullweed\nbullweeds\nbullwhip\nbullwhipped\nbullwhipping\nbullwhips\nbully\nbullyboy\nbullyboys\nbullying\nbullyrag\nbullyragged\nbullyragging\nbullyrags\nbulrush\nbulrushes\nbulwark\nbulwarked\nbulwarking\nbulwarks\nbum\nbumble\nbumblebee\nbumblebees\nbumbled\nbumbler\nbumblers\nbumbles\nbumbling\nbumblings\nbumboat\nbumboats\nbumf\nbumfs\nbumkin\nbumkins\nbummed\nbummer\nbummers\nbumming\nbump\nbumped\nbumper\nbumpered\nbumpering\nbumpers\nbumph\nbumpier\nbumpiest\nbumpily\nbumpiness\nbumping\nbumpkin\nbumpkins\nbumps\nbumptious\nbumptiously\nbumptiousness\nbumpy\nbums\nbun\nbunch\nbunched\nbunches\nbunchier\nbunchiest\nbunchily\nbunching\nbunchy\nbunco\nbuncoed\nbuncoing\nbuncombe\nbuncombes\nbuncos\nbund\nbundist\nbundists\nbundle\nbundled\nbundler\nbundlers\nbundles\nbundling\nbundlings\nbunds\nbundt\nbung\nbungalow\nbungalows\nbunged\nbunghole\nbungholes\nbunging\nbungle\nbungled\nbungler\nbunglers\nbungles\nbungling\nbunglingly\nbunglings\nbungs\nbunion\nbunions\nbunk\nbunked\nbunker\nbunkered\nbunkering\nbunkers\nbunkhouse\nbunkhouses\nbunking\nbunkmate\nbunkmates\nbunko\nbunkoed\nbunkoing\nbunkos\nbunks\nbunkum\nbunkums\nbunn\nbunnies\nbunns\nbunny\nbuns\nbunt\nbunted\nbunter\nbunters\nbunting\nbuntings\nbuntline\nbuntlines\nbunts\nbunya\nbunyas\nbuoy\nbuoyage\nbuoyages\nbuoyance\nbuoyances\nbuoyancies\nbuoyancy\nbuoyant\nbuoyantly\nbuoyed\nbuoying\nbuoys\nbuqsha\nbuqshas\nbur\nbura\nburan\nburans\nburas\nburble\nburbled\nburbler\nburblers\nburbles\nburblier\nburbliest\nburbling\nburbly\nburbot\nburbots\nburbs\nburd\nburden\nburdened\nburdener\nburdeners\nburdening\nburdens\nburdensome\nburdie\nburdies\nburdock\nburdocks\nburds\nbureau\nbureaucracies\nbureaucracy\nbureaucrat\nbureaucratic\nbureaucratically\nbureaucratization\nbureaucratizations\nbureaucratize\nbureaucratized\nbureaucratizes\nbureaucratizing\nbureaucrats\nbureaus\nbureaux\nburet\nburets\nburette\nburettes\nburg\nburgage\nburgages\nburgee\nburgees\nburgeon\nburgeoned\nburgeoning\nburgeons\nburger\nburgers\nburgess\nburgesses\nburgh\nburghal\nburgher\nburghers\nburghs\nburglar\nburglaries\nburglarious\nburglarize\nburglarized\nburglarizes\nburglarizing\nburglars\nburglary\nburgle\nburgled\nburgles\nburgling\nburgomaster\nburgomasters\nburgonet\nburgonets\nburgoo\nburgoos\nburgout\nburgouts\nburgrave\nburgraves\nburgs\nburgundies\nburgundy\nburial\nburials\nburied\nburier\nburiers\nburies\nburin\nburins\nburke\nburked\nburker\nburkers\nburkes\nburking\nburkite\nburkites\nburl\nburlap\nburlaps\nburled\nburler\nburlers\nburlesk\nburlesks\nburlesque\nburlesqued\nburlesquer\nburlesquers\nburlesques\nburlesquing\nburley\nburleys\nburlier\nburliest\nburlily\nburliness\nburling\nburls\nburly\nburn\nburnable\nburned\nburner\nburners\nburnet\nburnets\nburnie\nburnies\nburning\nburningly\nburnings\nburnish\nburnished\nburnisher\nburnishers\nburnishes\nburnishing\nburnoose\nburnooses\nburnous\nburnouses\nburnout\nburnouts\nburns\nburnt\nburp\nburped\nburping\nburps\nburr\nburred\nburrer\nburrers\nburrier\nburriest\nburring\nburro\nburros\nburrow\nburrowed\nburrower\nburrowers\nburrowing\nburrows\nburrs\nburry\nburs\nbursa\nbursae\nbursal\nbursar\nbursaries\nbursars\nbursary\nbursas\nbursate\nburse\nburseed\nburseeds\nburses\nbursitis\nbursitises\nburst\nbursted\nburster\nbursters\nbursting\nburstone\nburstones\nbursts\nburthen\nburthened\nburthening\nburthens\nburton\nburtons\nburweed\nburweeds\nbury\nburying\nbus\nbusbies\nbusboy\nbusboys\nbusby\nbused\nbuses\nbush\nbushbodies\nbushbuck\nbushbucks\nbushed\nbushel\nbusheled\nbusheler\nbushelers\nbusheling\nbushelled\nbushelling\nbushels\nbusher\nbushers\nbushes\nbushfire\nbushfires\nbushgoat\nbushgoats\nbushido\nbushidos\nbushier\nbushiest\nbushily\nbushiness\nbushing\nbushings\nbushland\nbushlands\nbushless\nbushlike\nbushman\nbushmen\nbushtit\nbushtits\nbushwhack\nbushwhacked\nbushwhacker\nbushwhackers\nbushwhacking\nbushwhacks\nbushy\nbusied\nbusier\nbusies\nbusiest\nbusily\nbusiness\nbusinesses\nbusinesslike\nbusinessman\nbusinessmen\nbusinesswoman\nbusinesswomen\nbusing\nbusings\nbusk\nbusked\nbusker\nbuskers\nbuskin\nbuskined\nbusking\nbuskins\nbusks\nbusman\nbusmen\nbuss\nbussed\nbusses\nbussing\nbussings\nbust\nbustard\nbustards\nbusted\nbuster\nbusters\nbustic\nbustics\nbustier\nbustiest\nbusting\nbustle\nbustled\nbustles\nbustling\nbusts\nbusty\nbusulfan\nbusulfans\nbusy\nbusybodies\nbusybody\nbusying\nbusyness\nbusynesses\nbusywork\nbusyworks\nbut\nbutane\nbutanes\nbutanol\nbutanols\nbutanone\nbutanones\nbutch\nbutcher\nbutchered\nbutcheries\nbutchering\nbutchers\nbutchery\nbutches\nbutene\nbutenes\nbuteo\nbuteos\nbutle\nbutler\nbutleries\nbutlers\nbutlery\nbuts\nbutt\nbuttals\nbutte\nbutted\nbutter\nbuttercup\nbuttercups\nbuttered\nbutterfat\nbutterfingered\nbutterfingers\nbutterflies\nbutterfly\nbutterier\nbutteries\nbutteriest\nbuttering\nbuttermilk\nbutternut\nbutternuts\nbutters\nbutterscotch\nbuttery\nbuttes\nbutties\nbutting\nbuttock\nbuttocks\nbutton\nbuttoned\nbuttoner\nbuttoners\nbuttonhole\nbuttonholed\nbuttonholer\nbuttonholers\nbuttonholes\nbuttonholing\nbuttoning\nbuttons\nbuttony\nbuttress\nbuttressed\nbuttresses\nbuttressing\nbutts\nbutty\nbutut\nbututs\nbutyl\nbutylate\nbutylated\nbutylates\nbutylating\nbutylene\nbutylenes\nbutyls\nbutyral\nbutyrals\nbutyrate\nbutyrates\nbutyric\nbutyrin\nbutyrins\nbutyrous\nbutyryl\nbutyryls\nbuxom\nbuxomer\nbuxomest\nbuxomly\nbuxomness\nbuy\nbuyable\nbuyer\nbuyers\nbuying\nbuys\nbuzz\nbuzzard\nbuzzards\nbuzzed\nbuzzer\nbuzzers\nbuzzes\nbuzzing\nbuzzwig\nbuzzwigs\nbuzzword\nbuzzwords\nbwana\nbwanas\nby\nbye\nbyelaw\nbyelaws\nbyes\nbygone\nbygones\nbylaw\nbylaws\nbyline\nbylined\nbyliner\nbyliners\nbylines\nbylining\nbyname\nbynames\nbypass\nbypassed\nbypasses\nbypassing\nbypast\nbypath\nbypaths\nbyplay\nbyplays\nbyre\nbyres\nbyrl\nbyrled\nbyrling\nbyrls\nbyrnie\nbyrnies\nbyroad\nbyroads\nbys\nbyssi\nbyssus\nbyssuses\nbystander\nbystanders\nbystreet\nbystreets\nbytalk\nbytalks\nbyte\nbytes\nbyway\nbyways\nbyword\nbywords\nbywork\nbyworks\nbyzant\nbyzants\ncab\ncabal\ncabala\ncabalas\ncabalism\ncabalisms\ncabalist\ncabalistic\ncabalists\ncaballed\ncaballero\ncaballeros\ncaballing\ncabals\ncabana\ncabanas\ncabaret\ncabarets\ncabbage\ncabbaged\ncabbages\ncabbaging\ncabbala\ncabbalah\ncabbalahs\ncabbalas\ncabbie\ncabbies\ncabby\ncabdriver\ncabdrivers\ncaber\ncabers\ncabestro\ncabestros\ncabezon\ncabezone\ncabezones\ncabezons\ncabildo\ncabildos\ncabin\ncabined\ncabinet\ncabinetmaker\ncabinetmakers\ncabinets\ncabinetwork\ncabinetworks\ncabining\ncabins\ncable\ncabled\ncablegram\ncablegrams\ncables\ncablet\ncablets\ncableway\ncableways\ncabling\ncabman\ncabmen\ncabob\ncabobs\ncaboched\ncabochon\ncabochons\ncaboodle\ncaboodles\ncaboose\ncabooses\ncaboshed\ncabotage\ncabotages\ncabresta\ncabrestas\ncabresto\ncabrestos\ncabretta\ncabrettas\ncabrilla\ncabrillas\ncabriole\ncabrioles\ncabs\ncabstand\ncabstands\ncaca\ncacao\ncacaos\ncacas\ncachalot\ncachalots\ncache\ncached\ncachepot\ncachepots\ncaches\ncachet\ncachets\ncachexia\ncachexias\ncachexic\ncachexies\ncachexy\ncaching\ncachou\ncachous\ncachucha\ncachuchas\ncacique\ncaciques\ncackle\ncackled\ncackler\ncacklers\ncackles\ncackling\ncacodyl\ncacodyls\ncacomixl\ncacomixls\ncacophonies\ncacophonous\ncacophony\ncacti\ncactoid\ncactus\ncactuses\ncad\ncadaster\ncadasters\ncadastre\ncadastres\ncadaver\ncadaverous\ncadaverously\ncadavers\ncaddice\ncaddices\ncaddie\ncaddied\ncaddies\ncaddis\ncaddises\ncaddish\ncaddishly\ncaddishness\ncaddy\ncaddying\ncade\ncadelle\ncadelles\ncadence\ncadenced\ncadences\ncadencies\ncadencing\ncadency\ncadent\ncadenza\ncadenzas\ncades\ncadet\ncadets\ncadge\ncadged\ncadger\ncadgers\ncadges\ncadging\ncadgy\ncadi\ncadis\ncadmic\ncadmium\ncadmiums\ncadre\ncadres\ncads\ncaducean\ncaducei\ncaduceus\ncaducities\ncaducity\ncaducous\ncaecaeca\ncaecal\ncaecally\ncaecum\ncaeoma\ncaeomas\ncaesium\ncaesiums\ncaestus\ncaestuses\ncaesura\ncaesurae\ncaesural\ncaesuras\ncaesuric\ncafe\ncafes\ncafeteria\ncafeterias\ncaffein\ncaffeine\ncaffeines\ncaffeins\ncaftan\ncaftans\ncage\ncaged\ncageling\ncagelings\ncager\ncages\ncagey\ncagier\ncagiest\ncagily\ncaginess\ncaginesses\ncaging\ncagy\ncahier\ncahiers\ncahoot\ncahoots\ncahow\ncahows\ncaid\ncaids\ncaiman\ncaimans\ncain\ncains\ncaique\ncaiques\ncaird\ncairds\ncairn\ncairned\ncairns\ncairny\ncaisson\ncaissons\ncaitiff\ncaitiffs\ncajaput\ncajaputs\ncajeput\ncajeputs\ncajole\ncajoled\ncajoler\ncajoleries\ncajolers\ncajolery\ncajoles\ncajoling\ncajon\ncajones\ncajuput\ncajuputs\ncake\ncaked\ncakes\ncakewalk\ncakewalked\ncakewalking\ncakewalks\ncakey\ncaking\ncaky\ncalabash\ncalabashes\ncalaboose\ncalabooses\ncaladium\ncaladiums\ncalamar\ncalamaries\ncalamars\ncalamary\ncalami\ncalamine\ncalamined\ncalamines\ncalamining\ncalamint\ncalamints\ncalamite\ncalamites\ncalamities\ncalamitous\ncalamitously\ncalamitousness\ncalamity\ncalamus\ncalando\ncalash\ncalashes\ncalathi\ncalathos\ncalathus\ncalcanea\ncalcanei\ncalcar\ncalcareous\ncalcareously\ncalcareousness\ncalcaria\ncalcars\ncalceate\ncalces\ncalcic\ncalcific\ncalcification\ncalcifications\ncalcified\ncalcifies\ncalcify\ncalcifying\ncalcimine\ncalcimined\ncalcimines\ncalcimining\ncalcination\ncalcinations\ncalcine\ncalcined\ncalcines\ncalcining\ncalcite\ncalcites\ncalcitic\ncalcium\ncalciums\ncalcspar\ncalcspars\ncalctufa\ncalctufas\ncalctuff\ncalctuffs\ncalculable\ncalculably\ncalculate\ncalculated\ncalculatedly\ncalculates\ncalculating\ncalculatingly\ncalculation\ncalculations\ncalculative\ncalculator\ncalculators\ncalculi\ncalculus\ncalculuses\ncaldera\ncalderas\ncaldron\ncaldrons\ncaleche\ncaleches\ncalendal\ncalendar\ncalendared\ncalendaring\ncalendars\ncalender\ncalendered\ncalendering\ncalenders\ncalends\ncalesa\ncalesas\ncalf\ncalflike\ncalfs\ncalfskin\ncalfskins\ncaliber\ncalibered\ncalibers\ncalibrate\ncalibrated\ncalibrates\ncalibrating\ncalibration\ncalibrations\ncalibrator\ncalibrators\ncalibre\ncalibred\ncalibres\ncalices\ncaliche\ncaliches\ncalicle\ncalicles\ncalico\ncalicoes\ncalicos\ncalif\ncalifate\ncalifates\ncalifs\ncalipash\ncalipashes\ncalipee\ncalipees\ncaliper\ncalipered\ncalipering\ncalipers\ncaliph\ncaliphal\ncaliphate\ncaliphates\ncaliphs\ncalisaya\ncalisayas\ncalisthenic\ncalisthenics\ncalix\ncalk\ncalked\ncalker\ncalkers\ncalkin\ncalking\ncalkins\ncalks\ncall\ncalla\ncallable\ncallan\ncallans\ncallant\ncallants\ncallas\ncallback\ncallbacks\ncallboy\ncallboys\ncalled\ncaller\ncallers\ncallet\ncallets\ncalligrapher\ncalligraphers\ncalligraphic\ncalligraphically\ncalligraphy\ncalling\ncallings\ncalliope\ncalliopes\ncallipee\ncallipees\ncalliper\ncallipered\ncallipering\ncallipers\ncallose\ncalloses\ncallosities\ncallosity\ncallous\ncalloused\ncallouses\ncallousing\ncallously\ncallousness\ncallow\ncallower\ncallowest\ncallowness\ncalls\ncallus\ncallused\ncalluses\ncallusing\ncalm\ncalmed\ncalmer\ncalmest\ncalming\ncalmly\ncalmness\ncalmnesses\ncalms\ncalomel\ncalomels\ncaloric\ncalorically\ncalorics\ncalorie\ncalories\ncalorific\ncalorimeter\ncalorimeters\ncalorimetric\ncalorimetrically\ncalory\ncalotte\ncalottes\ncaloyer\ncaloyers\ncalpac\ncalpack\ncalpacks\ncalpacs\ncalque\ncalqued\ncalques\ncalquing\ncalthrop\ncalthrops\ncaltrap\ncaltraps\ncaltrop\ncaltrops\ncalumet\ncalumets\ncalumniate\ncalumniated\ncalumniates\ncalumniating\ncalumniation\ncalumniations\ncalumniator\ncalumniators\ncalumnies\ncalumnious\ncalumniously\ncalumny\ncalutron\ncalutrons\ncalvados\ncalvadoses\ncalvaria\ncalvarias\ncalvaries\ncalvary\ncalve\ncalved\ncalves\ncalving\ncalx\ncalxes\ncalycate\ncalyceal\ncalyces\ncalycine\ncalycle\ncalycles\ncalyculi\ncalypso\ncalypsoes\ncalypsos\ncalypter\ncalypters\ncalyptra\ncalyptras\ncalyx\ncalyxes\ncam\ncamail\ncamailed\ncamails\ncamaraderie\ncamaraderies\ncamas\ncamases\ncamass\ncamasses\ncamber\ncambered\ncambering\ncambers\ncambia\ncambial\ncambism\ncambisms\ncambist\ncambists\ncambium\ncambiums\ncambogia\ncambogias\ncambric\ncambrics\ncame\ncamel\ncameleer\ncameleers\ncamelia\ncamelias\ncamellia\ncamellias\ncamels\ncameo\ncameoed\ncameoing\ncameos\ncamera\ncamerae\ncameral\ncameraman\ncameramen\ncameras\ncamerawoman\ncamerawomen\ncames\ncamion\ncamions\ncamisa\ncamisade\ncamisades\ncamisado\ncamisadoes\ncamisados\ncamisas\ncamise\ncamises\ncamisia\ncamisias\ncamisole\ncamisoles\ncamlet\ncamlets\ncamomile\ncamomiles\ncamorra\ncamorras\ncamouflage\ncamouflaged\ncamouflages\ncamouflaging\ncamp\ncampagna\ncampagne\ncampaign\ncampaigned\ncampaigner\ncampaigners\ncampaigning\ncampaigns\ncampanile\ncampaniles\ncampanili\ncamped\ncamper\ncampers\ncampfire\ncampfires\ncampground\ncampgrounds\ncamphene\ncamphenes\ncamphine\ncamphines\ncamphol\ncamphols\ncamphor\ncamphorate\ncamphorated\ncamphorates\ncamphorating\ncamphors\ncampi\ncampier\ncampiest\ncampily\ncamping\ncampings\ncampion\ncampions\ncampo\ncampong\ncampongs\ncamporee\ncamporees\ncampos\ncamps\ncampsite\ncampsites\ncampus\ncampuses\ncampy\ncams\ncamshaft\ncamshafts\ncan\ncanaille\ncanailles\ncanakin\ncanakins\ncanal\ncanaled\ncanaling\ncanalise\ncanalised\ncanalises\ncanalising\ncanalization\ncanalizations\ncanalize\ncanalized\ncanalizes\ncanalizing\ncanalled\ncanaller\ncanallers\ncanalling\ncanals\ncanape\ncanapes\ncanard\ncanards\ncanaries\ncanary\ncanasta\ncanastas\ncancan\ncancans\ncancel\ncancelable\ncanceled\ncanceler\ncancelers\ncanceling\ncancellable\ncancellation\ncancellations\ncancelled\ncanceller\ncancellers\ncancelling\ncancels\ncancer\ncancerous\ncancerously\ncancers\ncancha\ncanchas\ncancroid\ncancroids\ncandela\ncandelabra\ncandelabras\ncandelabrum\ncandelabrums\ncandelas\ncandent\ncandescent\ncandid\ncandida\ncandidacies\ncandidacy\ncandidas\ncandidate\ncandidates\ncandider\ncandidest\ncandidly\ncandidness\ncandids\ncandied\ncandies\ncandle\ncandled\ncandlelight\ncandlelights\ncandler\ncandlers\ncandles\ncandlestick\ncandlesticks\ncandling\ncandor\ncandors\ncandour\ncandours\ncandy\ncandying\ncane\ncaned\ncanella\ncanellas\ncaner\ncaners\ncanes\ncaneware\ncanewares\ncanfield\ncanfields\ncanful\ncanfuls\ncangue\ncangues\ncanid\ncanikin\ncanikins\ncanine\ncanines\ncaning\ncaninities\ncaninity\ncanister\ncanisters\ncanities\ncanker\ncankered\ncankering\ncankerous\ncankers\ncanna\ncannabic\ncannabin\ncannabins\ncannabis\ncannabises\ncannas\ncanned\ncannel\ncannelon\ncannelons\ncannels\ncanner\ncanneries\ncanners\ncannery\ncannibal\ncannibalism\ncannibalistic\ncannibalize\ncannibalized\ncannibalizes\ncannibalizing\ncannibals\ncannie\ncannier\ncanniest\ncannikin\ncannikins\ncannily\ncanniness\ncanning\ncannings\ncannon\ncannonade\ncannonaded\ncannonades\ncannonading\ncannonball\ncannonballs\ncannoned\ncannoneer\ncannoneering\ncannoneers\ncannoning\ncannonries\ncannonry\ncannons\ncannot\ncannula\ncannulae\ncannular\ncannulas\ncanny\ncanoe\ncanoed\ncanoeing\ncanoeist\ncanoeists\ncanoes\ncanon\ncanoness\ncanonesses\ncanonic\ncanonical\ncanonically\ncanonicals\ncanonicity\ncanonise\ncanonised\ncanonises\ncanonising\ncanonist\ncanonists\ncanonization\ncanonizations\ncanonize\ncanonized\ncanonizes\ncanonizing\ncanonries\ncanonry\ncanons\ncanopied\ncanopies\ncanopy\ncanopying\ncanorous\ncans\ncansful\ncanso\ncansos\ncanst\ncant\ncantala\ncantalas\ncantaloupe\ncantaloupes\ncantankerous\ncantankerously\ncantankerousness\ncantata\ncantatas\ncantdog\ncantdogs\ncanted\ncanteen\ncanteens\ncanter\ncantered\ncantering\ncanters\ncanthal\ncanthi\ncanthus\ncantic\ncanticle\ncanticles\ncantilever\ncantilevers\ncantina\ncantinas\ncanting\ncantle\ncantles\ncanto\ncanton\ncantonal\ncantoned\ncantoning\ncantonment\ncantonments\ncantons\ncantor\ncantors\ncantos\ncantraip\ncantraips\ncantrap\ncantraps\ncantrip\ncantrips\ncants\ncantus\ncanty\ncanula\ncanulae\ncanulas\ncanulate\ncanulated\ncanulates\ncanulating\ncanvas\ncanvased\ncanvaser\ncanvasers\ncanvases\ncanvasing\ncanvass\ncanvassed\ncanvasser\ncanvassers\ncanvasses\ncanvassing\ncanyon\ncanyons\ncanzona\ncanzonas\ncanzone\ncanzones\ncanzonet\ncanzonets\ncanzoni\ncap\ncapabilities\ncapability\ncapable\ncapabler\ncapablest\ncapably\ncapacious\ncapaciously\ncapaciousness\ncapacitance\ncapacitances\ncapacities\ncapacitive\ncapacitor\ncapacitors\ncapacity\ncaparison\ncaparisons\ncape\ncaped\ncapelan\ncapelans\ncapelet\ncapelets\ncapelin\ncapelins\ncaper\ncapered\ncaperer\ncaperers\ncapering\ncapers\ncapes\ncapeskin\ncapeskins\ncapework\ncapeworks\ncapful\ncapfuls\ncaph\ncaphs\ncapias\ncapiases\ncapillaries\ncapillary\ncapita\ncapital\ncapitalism\ncapitalist\ncapitalistic\ncapitalistically\ncapitalists\ncapitalization\ncapitalizations\ncapitalize\ncapitalized\ncapitalizes\ncapitalizing\ncapitally\ncapitals\ncapitate\ncapitation\ncapitations\ncapitol\ncapitols\ncapitula\ncapitulate\ncapitulated\ncapitulates\ncapitulating\ncapitulation\ncapitulations\ncapless\ncaplin\ncaplins\ncapmaker\ncapmakers\ncapo\ncapon\ncaponier\ncaponiers\ncaponize\ncaponized\ncaponizes\ncaponizing\ncapons\ncaporal\ncaporals\ncapos\ncapote\ncapotes\ncapouch\ncapouches\ncapped\ncapper\ncappers\ncapping\ncappings\ncapric\ncapricci\ncapriccio\ncapriccios\ncaprice\ncaprices\ncapricious\ncapriciously\ncapriciousness\ncaprifig\ncaprifigs\ncaprine\ncapriole\ncaprioled\ncaprioles\ncaprioling\ncaps\ncapsicin\ncapsicins\ncapsicum\ncapsicums\ncapsid\ncapsidal\ncapsids\ncapsize\ncapsized\ncapsizes\ncapsizing\ncapstan\ncapstans\ncapstone\ncapstones\ncapsular\ncapsulate\ncapsulated\ncapsule\ncapsuled\ncapsules\ncapsuling\ncaptain\ncaptaincies\ncaptaincy\ncaptained\ncaptaining\ncaptains\ncaptainship\ncaptan\ncaptans\ncaption\ncaptioned\ncaptioning\ncaptions\ncaptious\ncaptiously\ncaptiousness\ncaptivate\ncaptivated\ncaptivates\ncaptivating\ncaptivation\ncaptivations\ncaptivator\ncaptivators\ncaptive\ncaptives\ncaptivities\ncaptivity\ncaptor\ncaptors\ncapture\ncaptured\ncapturer\ncapturers\ncaptures\ncapturing\ncapuche\ncapuched\ncapuches\ncapuchin\ncapuchins\ncaput\ncapybara\ncapybaras\ncar\ncarabao\ncarabaos\ncarabid\ncarabids\ncarabin\ncarabine\ncarabines\ncarabins\ncaracal\ncaracals\ncaracara\ncaracaras\ncarack\ncaracks\ncaracol\ncaracole\ncaracoled\ncaracoles\ncaracoling\ncaracolled\ncaracolling\ncaracols\ncaracul\ncaraculs\ncarafe\ncarafes\ncaragana\ncaraganas\ncarageen\ncarageens\ncaramel\ncaramelize\ncaramelized\ncaramelizes\ncaramelizing\ncaramels\ncarangid\ncarangids\ncarapace\ncarapaces\ncarapax\ncarapaxes\ncarassow\ncarassows\ncarat\ncarate\ncarates\ncarats\ncaravan\ncaravaned\ncaravaning\ncaravanned\ncaravanning\ncaravans\ncaravansaries\ncaravansary\ncaravanserai\ncaravanserais\ncaravel\ncaravels\ncaraway\ncaraways\ncarb\ncarbamic\ncarbamyl\ncarbamyls\ncarbarn\ncarbarns\ncarbaryl\ncarbaryls\ncarbide\ncarbides\ncarbine\ncarbines\ncarbinol\ncarbinols\ncarbohydrate\ncarbohydrates\ncarbon\ncarbonate\ncarbonated\ncarbonates\ncarbonating\ncarbonation\ncarbonations\ncarbonic\ncarbonization\ncarbonize\ncarbonized\ncarbonizes\ncarbonizing\ncarbons\ncarbonyl\ncarbonyls\ncarbora\ncarboras\ncarboxyl\ncarboxyls\ncarboy\ncarboyed\ncarboys\ncarbs\ncarbuncle\ncarbuncled\ncarbuncles\ncarburet\ncarbureted\ncarbureter\ncarburetest\ncarbureting\ncarburetor\ncarburetors\ncarburets\ncarburetted\ncarburetting\ncarcajou\ncarcajous\ncarcanet\ncarcanets\ncarcase\ncarcases\ncarcass\ncarcasses\ncarcel\ncarcels\ncarcinogen\ncarcinogenic\ncarcinogenicity\ncarcinogens\ncarcinoma\ncarcinomas\ncarcinomata\ncard\ncardamom\ncardamoms\ncardamon\ncardamons\ncardamum\ncardamums\ncardboard\ncardboards\ncardcase\ncardcases\ncarded\ncarder\ncarders\ncardia\ncardiac\ncardiacs\ncardiae\ncardias\ncardigan\ncardigans\ncardinal\ncardinally\ncardinals\ncarding\ncardings\ncardiogram\ncardiograms\ncardiograph\ncardiographic\ncardiographs\ncardiography\ncardioid\ncardioids\ncardiologist\ncardiologists\ncardiology\ncardiovascular\ncarditic\ncarditis\ncarditises\ncardoon\ncardoons\ncards\ncardsharp\ncardsharper\ncardsharpers\ncardsharps\ncare\ncared\ncareen\ncareened\ncareener\ncareeners\ncareening\ncareens\ncareer\ncareered\ncareerer\ncareerers\ncareering\ncareers\ncarefree\ncareful\ncarefuller\ncarefullest\ncarefully\ncarefulness\ncareless\ncarelessly\ncarelessness\ncarer\ncarers\ncares\ncaress\ncaressed\ncaresser\ncaressers\ncaresses\ncaressing\ncaressingly\ncaressive\ncaressively\ncaret\ncaretaker\ncaretakers\ncarets\ncareworn\ncarex\ncarfare\ncarfares\ncarful\ncarfuls\ncargo\ncargoes\ncargos\ncarhop\ncarhops\ncaribe\ncaribes\ncaribou\ncaribous\ncaricature\ncaricatured\ncaricatures\ncaricaturing\ncaricaturist\ncaricaturists\ncarices\ncaried\ncaries\ncarillon\ncarillonned\ncarillonneur\ncarillonneurs\ncarillonning\ncarillons\ncarina\ncarinae\ncarinal\ncarinas\ncarinate\ncaring\ncarioca\ncariocas\ncariole\ncarioles\ncarious\ncark\ncarked\ncarking\ncarks\ncarl\ncarle\ncarles\ncarless\ncarlin\ncarline\ncarlines\ncarling\ncarlings\ncarlins\ncarlish\ncarload\ncarloads\ncarls\ncarmaker\ncarmakers\ncarman\ncarmen\ncarminative\ncarminatives\ncarmine\ncarmines\ncarn\ncarnage\ncarnages\ncarnal\ncarnality\ncarnally\ncarnation\ncarnations\ncarnauba\ncarnaubas\ncarney\ncarneys\ncarnie\ncarnies\ncarnified\ncarnifies\ncarnify\ncarnifying\ncarnival\ncarnivals\ncarnivore\ncarnivores\ncarnivorous\ncarnivorously\ncarnivorousness\ncarnotite\ncarnotites\ncarns\ncarny\ncaroach\ncaroaches\ncarob\ncarobs\ncaroch\ncaroche\ncaroches\ncarol\ncaroled\ncaroler\ncarolers\ncaroli\ncaroling\ncarolled\ncaroller\ncarollers\ncarolling\ncarols\ncarolus\ncaroluses\ncarom\ncaromed\ncaroming\ncaroms\ncarotene\ncarotenes\ncarotid\ncarotids\ncarotin\ncarotins\ncarousal\ncarousals\ncarouse\ncaroused\ncarousel\ncarousels\ncarouser\ncarousers\ncarouses\ncarousing\ncarp\ncarpal\ncarpale\ncarpalia\ncarpals\ncarped\ncarpel\ncarpels\ncarpenter\ncarpentered\ncarpentering\ncarpenters\ncarpentry\ncarper\ncarpers\ncarpet\ncarpetbag\ncarpetbagged\ncarpetbagger\ncarpetbaggers\ncarpetbagging\ncarpetbags\ncarpeted\ncarpeting\ncarpets\ncarpi\ncarping\ncarpingly\ncarpings\ncarport\ncarports\ncarps\ncarpus\ncarrack\ncarracks\ncarrel\ncarrell\ncarrells\ncarrels\ncarriage\ncarriages\ncarried\ncarrier\ncarriers\ncarries\ncarriole\ncarrioles\ncarrion\ncarrions\ncarritch\ncarritches\ncarroch\ncarroches\ncarrom\ncarromed\ncarroming\ncarroms\ncarrot\ncarrotier\ncarrotiest\ncarrotin\ncarrotins\ncarrots\ncarroty\ncarrousel\ncarrousels\ncarry\ncarryall\ncarryalls\ncarrying\ncarryon\ncarryons\ncarryout\ncarryouts\ncars\ncarse\ncarses\ncarsick\ncart\ncartable\ncartage\ncartages\ncarte\ncarted\ncartel\ncartels\ncarter\ncarters\ncartes\ncartilage\ncartilaginous\ncarting\ncartload\ncartloads\ncartographer\ncartographers\ncartographic\ncartography\ncarton\ncartoned\ncartoning\ncartons\ncartoon\ncartooned\ncartooning\ncartoonist\ncartoonists\ncartoons\ncartop\ncartouch\ncartouches\ncartridge\ncartridges\ncarts\ncartwheel\ncartwheels\ncaruncle\ncaruncles\ncarve\ncarved\ncarvel\ncarvels\ncarven\ncarver\ncarvers\ncarves\ncarving\ncarvings\ncaryatid\ncaryatides\ncaryatids\ncaryotin\ncaryotins\ncasa\ncasaba\ncasabas\ncasas\ncasava\ncasavas\ncascabel\ncascabels\ncascable\ncascables\ncascade\ncascaded\ncascades\ncascading\ncascara\ncascaras\ncase\ncasease\ncaseases\ncaseate\ncaseated\ncaseates\ncaseating\ncasebook\ncasebooks\ncased\ncasefied\ncasefies\ncasefy\ncasefying\ncaseic\ncasein\ncaseins\ncasemate\ncasemates\ncasement\ncasements\ncaseose\ncaseoses\ncaseous\ncasern\ncaserne\ncasernes\ncaserns\ncases\ncasette\ncasettes\ncasework\ncaseworker\ncaseworkers\ncaseworks\ncaseworm\ncaseworms\ncash\ncashable\ncashaw\ncashaws\ncashbook\ncashbooks\ncashbox\ncashboxes\ncashed\ncashes\ncashew\ncashews\ncashier\ncashiered\ncashiering\ncashiers\ncashing\ncashless\ncashmere\ncashmeres\ncashoo\ncashoos\ncasimere\ncasimeres\ncasimire\ncasimires\ncasing\ncasings\ncasino\ncasinos\ncask\ncasked\ncasket\ncasketed\ncasketing\ncaskets\ncasking\ncasks\ncasky\ncasque\ncasqued\ncasques\ncassaba\ncassabas\ncassava\ncassavas\ncasserole\ncasseroles\ncassette\ncassettes\ncassia\ncassias\ncassino\ncassinos\ncassis\ncassises\ncassock\ncassocks\ncast\ncastanet\ncastanets\ncastaway\ncastaways\ncaste\ncasteism\ncasteisms\ncastellated\ncaster\ncasters\ncastes\ncastigate\ncastigated\ncastigates\ncastigating\ncastigation\ncastigations\ncastigator\ncastigators\ncasting\ncastings\ncastle\ncastled\ncastles\ncastling\ncastoff\ncastoffs\ncastor\ncastors\ncastrate\ncastrated\ncastrates\ncastrati\ncastrating\ncastration\ncastrations\ncastrato\ncasts\ncasual\ncasually\ncasualness\ncasuals\ncasualties\ncasualty\ncasuist\ncasuistic\ncasuistries\ncasuistry\ncasuists\ncasus\ncat\ncatabolic\ncatabolism\ncataclysm\ncataclysmal\ncataclysmic\ncataclysms\ncatacomb\ncatacombs\ncatafalque\ncatafalques\ncatalase\ncatalases\ncataleptic\ncataleptics\ncatalo\ncataloes\ncatalog\ncataloged\ncataloger\ncatalogers\ncataloging\ncatalogs\ncatalogue\ncatalogued\ncataloguer\ncataloguers\ncatalogues\ncataloguing\ncatalos\ncatalpa\ncatalpas\ncatalyses\ncatalysis\ncatalyst\ncatalysts\ncatalytic\ncatalytically\ncatalyze\ncatalyzed\ncatalyzes\ncatalyzing\ncatamaran\ncatamarans\ncatamite\ncatamites\ncatamount\ncatamounts\ncatapult\ncatapulted\ncatapulting\ncatapults\ncataract\ncataracts\ncatarrh\ncatarrhal\ncatarrhs\ncatastrophe\ncatastrophes\ncatastrophic\ncatastrophically\ncatbird\ncatbirds\ncatboat\ncatboats\ncatbrier\ncatbriers\ncatcall\ncatcalled\ncatcalling\ncatcalls\ncatch\ncatchable\ncatchall\ncatchalls\ncatcher\ncatchers\ncatches\ncatchflies\ncatchfly\ncatchier\ncatchiest\ncatching\ncatchpennies\ncatchpenny\ncatchup\ncatchups\ncatchword\ncatchwords\ncatchy\ncate\ncatechin\ncatechins\ncatechism\ncatechismal\ncatechisms\ncatechist\ncatechistic\ncatechists\ncatechize\ncatechized\ncatechizer\ncatechizers\ncatechizes\ncatechizing\ncatechol\ncatechols\ncatechu\ncatechumen\ncatechumens\ncatechus\ncategorical\ncategorically\ncategories\ncategorization\ncategorizations\ncategorize\ncategorized\ncategorizes\ncategorizing\ncategory\ncatena\ncatenae\ncatenaries\ncatenary\ncatenas\ncatenate\ncatenated\ncatenates\ncatenating\ncatenation\ncatenations\ncatenoid\ncatenoids\ncater\ncateran\ncaterans\ncatered\ncaterer\ncaterers\ncateress\ncateresses\ncatering\ncaterpillar\ncaterpillars\ncaters\ncaterwaul\ncaterwauled\ncaterwauling\ncaterwauls\ncates\ncatface\ncatfaces\ncatfall\ncatfalls\ncatfish\ncatfishes\ncatgut\ncatguts\ncathartic\ncathead\ncatheads\ncathect\ncathected\ncathecting\ncathects\ncathedra\ncathedrae\ncathedral\ncathedrals\ncathedras\ncatheter\ncatheters\ncathexes\ncathexis\ncathode\ncathodes\ncathodic\ncatholic\ncatholically\ncatholicity\ncatholicize\ncatholicized\ncatholicizes\ncatholicizing\ncathouse\ncathouses\ncation\ncationic\ncations\ncatkin\ncatkins\ncatlike\ncatlin\ncatling\ncatlings\ncatlins\ncatmint\ncatmints\ncatnap\ncatnaper\ncatnapers\ncatnapped\ncatnapping\ncatnaps\ncatnip\ncatnips\ncats\ncatspaw\ncatspaws\ncatsup\ncatsups\ncattail\ncattails\ncattalo\ncattaloes\ncattalos\ncatted\ncattie\ncattier\ncatties\ncattiest\ncattily\ncatting\ncattish\ncattle\ncattleman\ncattlemen\ncattleya\ncattleyas\ncatty\ncatwalk\ncatwalks\ncaucus\ncaucused\ncaucuses\ncaucusing\ncaucussed\ncaucusses\ncaucussing\ncaudad\ncaudal\ncaudally\ncaudate\ncaudated\ncaudex\ncaudexes\ncaudices\ncaudillo\ncaudillos\ncaudle\ncaudles\ncaught\ncaul\ncauld\ncauldron\ncauldrons\ncaulds\ncaules\ncaulicle\ncaulicles\ncauliflower\ncauliflowers\ncauline\ncaulis\ncaulk\ncaulked\ncaulker\ncaulkers\ncaulking\ncaulkings\ncaulks\ncauls\ncausable\ncausal\ncausalities\ncausality\ncausally\ncausals\ncausation\ncausations\ncausative\ncausatively\ncause\ncaused\ncauseless\ncauser\ncauserie\ncauseries\ncausers\ncauses\ncauseway\ncausewayed\ncausewaying\ncauseways\ncausey\ncauseys\ncausing\ncaustic\ncaustically\ncaustics\ncauteries\ncauterization\ncauterizations\ncauterize\ncauterized\ncauterizes\ncauterizing\ncautery\ncaution\ncautionary\ncautioned\ncautioning\ncautions\ncautious\ncautiously\ncautiousness\ncavalcade\ncavalcades\ncavalero\ncavaleros\ncavalier\ncavaliered\ncavaliering\ncavalierly\ncavalierness\ncavaliers\ncavalla\ncavallas\ncavallies\ncavally\ncavalries\ncavalry\ncavalryman\ncavalrymen\ncavatina\ncavatinas\ncavatine\ncave\ncaveat\ncaveator\ncaveators\ncaveats\ncaved\ncavefish\ncavefishes\ncavelike\ncaveman\ncavemen\ncaver\ncavern\ncaverned\ncaverning\ncavernous\ncavernously\ncaverns\ncavers\ncaves\ncavetti\ncavetto\ncavettos\ncaviar\ncaviare\ncaviares\ncaviars\ncavicorn\ncavie\ncavies\ncavil\ncaviled\ncaviler\ncavilers\ncaviling\ncavilingly\ncavilled\ncaviller\ncavillers\ncavilling\ncavils\ncaving\ncavitary\ncavitate\ncavitated\ncavitates\ncavitating\ncavitation\ncavitations\ncavitied\ncavities\ncavity\ncavort\ncavorted\ncavorter\ncavorters\ncavorting\ncavorts\ncavy\ncaw\ncawed\ncawing\ncaws\ncay\ncayenne\ncayenned\ncayennes\ncayman\ncaymans\ncays\ncayuse\ncayuses\ncazique\ncaziques\ncease\nceased\nceaseless\nceaselessly\nceaselessness\nceases\nceasing\ncebid\ncebids\nceboid\nceboids\nceca\ncecal\ncecally\ncecum\ncedar\ncedarn\ncedars\ncede\nceded\nceder\nceders\ncedes\ncedi\ncedilla\ncedillas\nceding\ncedis\ncedula\ncedulas\ncee\ncees\nceiba\nceibas\nceil\nceiled\nceiler\nceilers\nceiling\nceilings\nceils\nceinture\nceintures\nceladon\nceladons\nceleb\ncelebrant\ncelebrants\ncelebrate\ncelebrated\ncelebratedness\ncelebrates\ncelebrating\ncelebration\ncelebrations\ncelebrator\ncelebrators\ncelebrities\ncelebrity\ncelebs\nceleriac\nceleriacs\nceleries\ncelerities\ncelerity\ncelery\ncelesta\ncelestas\nceleste\ncelestes\ncelestial\ncelestially\ncelestites\nceliac\ncelibacies\ncelibacy\ncelibate\ncelibates\ncell\ncella\ncellae\ncellar\ncellared\ncellarer\ncellarers\ncellaret\ncellarets\ncellaring\ncellars\ncelled\ncelli\ncelling\ncellist\ncellists\ncello\ncellophane\ncellophaned\ncellos\ncells\ncellular\ncellule\ncellules\ncelluloid\ncellulose\ncellulosic\ncelom\ncelomata\nceloms\ncelt\ncelts\ncembali\ncembalo\ncembalos\ncement\ncementa\ncementation\ncementations\ncemented\ncementer\ncementers\ncementing\ncementite\ncementites\ncements\ncementum\ncemeteries\ncemetery\ncenacle\ncenacles\ncenobite\ncenobites\ncenobitic\ncenobitical\ncenotaph\ncenotaphs\ncenote\ncenotes\ncense\ncensed\ncenser\ncensers\ncenses\ncensing\ncensor\ncensored\ncensorial\ncensoring\ncensorious\ncensoriously\ncensoriousness\ncensors\ncensorship\ncensorships\ncensual\ncensurable\ncensure\ncensured\ncensurer\ncensurers\ncensures\ncensuring\ncensus\ncensused\ncensuses\ncensusing\ncent\ncental\ncentals\ncentare\ncentares\ncentaur\ncentauries\ncentaurs\ncentaury\ncentavo\ncentavos\ncentenarian\ncentenarians\ncentenaries\ncentenary\ncentennial\ncentennially\ncentennials\ncenter\ncenterboard\ncenterboards\ncentered\ncentering\ncenterpiece\ncenterpieces\ncenters\ncenteses\ncentesis\ncentiare\ncentiares\ncentigrade\ncentigram\ncentigrams\ncentile\ncentiles\ncentiliter\ncentiliters\ncentime\ncentimes\ncentimeter\ncentimeters\ncentimo\ncentimos\ncentipede\ncentipedes\ncentner\ncentners\ncento\ncentones\ncentos\ncentra\ncentral\ncentraler\ncentralest\ncentralism\ncentralist\ncentralistic\ncentralists\ncentralities\ncentrality\ncentralization\ncentralize\ncentralized\ncentralizer\ncentralizers\ncentralizes\ncentralizing\ncentrally\ncentrals\ncentre\ncentred\ncentres\ncentric\ncentrically\ncentricities\ncentricity\ncentrifugal\ncentrifugally\ncentrifugation\ncentrifugations\ncentrifuge\ncentrifuged\ncentrifuges\ncentrifuging\ncentring\ncentrings\ncentripetal\ncentripetally\ncentrism\ncentrisms\ncentrist\ncentrists\ncentroid\ncentroids\ncentrum\ncentrums\ncents\ncentum\ncentums\ncentuple\ncentupled\ncentuples\ncentupling\ncenturies\ncenturion\ncenturions\ncentury\nceorl\nceorlish\nceorls\ncep\ncepe\ncepes\ncephalad\ncephalic\ncephalin\ncephalins\nceps\nceramal\nceramals\nceramic\nceramicist\nceramicists\nceramics\nceramist\nceramists\ncerastes\ncerate\ncerated\ncerates\nceratin\nceratins\nceratoid\ncercaria\ncercariae\ncercarias\ncerci\ncercis\ncercises\ncercus\ncere\ncereal\ncereals\ncerebella\ncerebellar\ncerebellum\ncerebellums\ncerebra\ncerebral\ncerebrally\ncerebrals\ncerebrate\ncerebrated\ncerebrates\ncerebrating\ncerebration\ncerebrations\ncerebric\ncerebrum\ncerebrums\ncerecloth\ncerecloths\ncered\ncerement\ncerements\nceremonial\nceremonialism\nceremonialist\nceremonialists\nceremonially\nceremonies\nceremonious\nceremoniously\nceremoniousness\nceremony\nceres\ncereus\ncereuses\nceria\ncerias\nceric\ncering\nceriph\nceriphs\ncerise\ncerises\ncerite\ncerites\ncerium\nceriums\ncermet\ncermets\ncernuous\ncero\nceros\ncerotic\ncerotype\ncerotypes\ncerous\ncertain\ncertainer\ncertainest\ncertainly\ncertainties\ncertainty\ncertes\ncertifiable\ncertifiably\ncertificate\ncertificated\ncertificates\ncertificating\ncertification\ncertifications\ncertified\ncertifier\ncertifiers\ncertifies\ncertify\ncertifying\ncertiorari\ncertitude\ncertitudes\ncerulean\nceruleans\ncerumen\ncerumens\nceruse\nceruses\ncerusite\ncerusites\ncervelat\ncervelats\ncervical\ncervices\ncervine\ncervix\ncervixes\ncesarean\ncesareans\ncesarian\ncesarians\ncesium\ncesiums\ncess\ncessation\ncessations\ncessed\ncesses\ncessing\ncession\ncessions\ncesspit\ncesspits\ncesspool\ncesspools\ncesta\ncestas\ncesti\ncestode\ncestodes\ncestoi\ncestoid\ncestoids\ncestos\ncestus\ncestuses\ncesura\ncesurae\ncesuras\ncetacean\ncetaceans\ncetane\ncetanes\ncete\ncetes\ncetologies\ncetology\nchabouk\nchabouks\nchabuk\nchabuks\nchacma\nchacmas\nchaconne\nchaconnes\nchad\nchadarim\nchadless\nchads\nchaeta\nchaetae\nchaetal\nchafe\nchafed\nchafer\nchafers\nchafes\nchaff\nchaffed\nchaffer\nchaffered\nchafferer\nchafferers\nchaffering\nchaffers\nchaffier\nchaffiest\nchaffing\nchaffs\nchaffy\nchafing\nchagrin\nchagrined\nchagrining\nchagrinned\nchagrinning\nchagrins\nchain\nchaine\nchained\nchaines\nchaining\nchainman\nchainmen\nchains\nchair\nchaired\nchairing\nchairman\nchairmaned\nchairmaning\nchairmanned\nchairmanning\nchairmans\nchairmanship\nchairmanships\nchairmen\nchairperson\nchairpersons\nchairs\nchairwoman\nchairwomen\nchaise\nchaises\nchalah\nchalahs\nchalaza\nchalazae\nchalazal\nchalazas\nchalcedonies\nchalcedony\nchalcid\nchalcids\nchaldron\nchaldrons\nchaleh\nchalehs\nchalet\nchalets\nchalice\nchaliced\nchalices\nchalk\nchalkboard\nchalkboards\nchalked\nchalkier\nchalkiest\nchalking\nchalks\nchalky\nchallah\nchallahs\nchallenge\nchallenged\nchallenger\nchallengers\nchallenges\nchallenging\nchallie\nchallies\nchallis\nchallises\nchallot\nchalloth\nchally\nchalone\nchalones\nchalot\nchaloth\nchalutz\nchalutzim\ncham\nchamade\nchamades\nchamber\nchambered\nchambering\nchamberlain\nchamberlains\nchambermaid\nchambermaids\nchambers\nchambray\nchambrays\nchameleon\nchameleonic\nchameleons\nchamfer\nchamfered\nchamfering\nchamfers\nchamfron\nchamfrons\nchamise\nchamises\nchamiso\nchamisos\nchammied\nchammies\nchammy\nchammying\nchamois\nchamoised\nchamoises\nchamoising\nchamoix\nchamp\nchampac\nchampacs\nchampagne\nchampagnes\nchampak\nchampaks\nchamped\nchamper\nchampers\nchamping\nchampion\nchampioned\nchampioning\nchampions\nchampionship\nchampionships\nchamps\nchampy\nchams\nchance\nchanced\nchancel\nchancelleries\nchancellery\nchancellor\nchancellories\nchancellors\nchancellorship\nchancellorships\nchancellory\nchancels\nchanceries\nchancery\nchances\nchancier\nchanciest\nchancily\nchancing\nchancre\nchancres\nchancrous\nchancy\nchandelier\nchandeliers\nchandler\nchandleries\nchandlers\nchandlery\nchanfron\nchanfrons\nchang\nchange\nchangeability\nchangeable\nchangeableness\nchangeably\nchanged\nchangeful\nchangefully\nchangefulness\nchangeless\nchangelessly\nchangelessness\nchangeling\nchangelings\nchanger\nchangers\nchanges\nchanging\nchangs\nchannel\nchanneled\nchanneling\nchannelled\nchannelling\nchannels\nchanson\nchansons\nchant\nchantage\nchantages\nchanted\nchanter\nchanters\nchanteuse\nchanteuses\nchantey\nchanteys\nchanticleer\nchanticleers\nchanties\nchanting\nchantor\nchantors\nchantries\nchantry\nchants\nchanty\nchao\nchaos\nchaoses\nchaotic\nchaotically\nchap\nchaparral\nchaparrals\nchapbook\nchapbooks\nchape\nchapeau\nchapeaus\nchapeaux\nchapel\nchapels\nchaperon\nchaperonage\nchaperone\nchaperoned\nchaperones\nchaperoning\nchaperons\nchapes\nchapiter\nchapiters\nchaplain\nchaplaincies\nchaplaincy\nchaplains\nchaplainship\nchaplainships\nchaplet\nchaplets\nchapman\nchapmen\nchapped\nchapping\nchaps\nchapt\nchapter\nchaptered\nchaptering\nchapters\nchaqueta\nchaquetas\nchar\ncharacid\ncharacids\ncharacin\ncharacins\ncharacter\ncharacteristic\ncharacteristically\ncharacteristics\ncharacterizable\ncharacterization\ncharacterizations\ncharacterize\ncharacterized\ncharacterizes\ncharacterizing\ncharacterless\ncharacters\ncharade\ncharades\ncharas\ncharases\ncharbroil\ncharbroiled\ncharbroiling\ncharbroils\ncharcoal\ncharcoaled\ncharcoaling\ncharcoals\nchard\nchards\nchare\nchared\nchares\ncharge\nchargeable\ncharged\ncharger\nchargers\ncharges\ncharging\ncharier\nchariest\ncharily\nchariness\ncharing\nchariot\ncharioted\ncharioteer\ncharioteers\ncharioting\nchariots\ncharism\ncharisma\ncharismata\ncharismatic\ncharisms\ncharitable\ncharitableness\ncharitably\ncharities\ncharity\nchark\ncharka\ncharkas\ncharked\ncharkha\ncharkhas\ncharking\ncharks\ncharladies\ncharlady\ncharlatan\ncharlatanism\ncharlatanisms\ncharlatanries\ncharlatanry\ncharlatans\ncharlock\ncharlocks\ncharlotte\ncharlottes\ncharm\ncharmed\ncharmer\ncharmers\ncharming\ncharminger\ncharmingest\ncharmingly\ncharms\ncharnel\ncharnels\ncharpai\ncharpais\ncharpoy\ncharpoys\ncharqui\ncharquid\ncharquis\ncharr\ncharred\ncharrier\ncharriest\ncharring\ncharro\ncharros\ncharrs\ncharry\nchars\nchart\ncharted\ncharter\nchartered\ncharterer\ncharterers\nchartering\ncharters\ncharting\nchartist\nchartists\nchartreuse\ncharts\ncharwoman\ncharwomen\nchary\nchase\nchased\nchaser\nchasers\nchases\nchasing\nchasings\nchasm\nchasmal\nchasmed\nchasmic\nchasms\nchasmy\nchasse\nchassed\nchasseing\nchasses\nchasseur\nchasseurs\nchassis\nchaste\nchastely\nchasten\nchastened\nchastener\nchasteners\nchasteness\nchastening\nchastenment\nchastenments\nchastens\nchaster\nchastest\nchasties\nchastise\nchastised\nchastisement\nchastisements\nchastiser\nchastisers\nchastises\nchastising\nchastities\nchastity\nchasuble\nchasubles\nchat\nchateau\nchateaus\nchateaux\nchatelaine\nchatelaines\nchats\nchatted\nchattel\nchattels\nchatter\nchattered\nchatterer\nchatterers\nchattering\nchatters\nchattery\nchattier\nchattiest\nchattily\nchattiness\nchatting\nchatty\nchaufer\nchaufers\nchauffer\nchauffers\nchauffeur\nchauffeured\nchauffeuring\nchauffeurs\nchaunt\nchaunted\nchaunter\nchaunters\nchaunting\nchaunts\nchausses\nchauvinism\nchauvinisms\nchauvinist\nchauvinistic\nchauvinistically\nchauvinists\nchaw\nchawed\nchawer\nchawers\nchawing\nchaws\nchay\nchayote\nchayotes\nchays\nchazan\nchazanim\nchazans\nchazzen\nchazzenim\nchazzens\ncheap\ncheapen\ncheapened\ncheapening\ncheapens\ncheaper\ncheapest\ncheapie\ncheapies\ncheapish\ncheaply\ncheapness\ncheaps\ncheapskate\ncheapskates\ncheat\ncheated\ncheater\ncheaters\ncheating\ncheats\nchebec\nchebecs\nchechako\nchechakos\ncheck\ncheckable\ncheckbook\ncheckbooks\nchecked\nchecker\ncheckerboard\ncheckerboards\ncheckered\ncheckering\ncheckers\nchecking\ncheckless\nchecklist\nchecklists\ncheckmate\ncheckmated\ncheckmates\ncheckmating\ncheckoff\ncheckoffs\ncheckout\ncheckouts\ncheckpoint\ncheckpoints\ncheckrein\ncheckreins\ncheckroom\ncheckrooms\ncheckrow\ncheckrowed\ncheckrowing\ncheckrows\nchecks\ncheckup\ncheckups\ncheddar\ncheddars\ncheddite\ncheddites\ncheder\ncheders\nchedite\nchedites\ncheefuller\ncheefullest\ncheek\ncheekbone\ncheekbones\ncheeked\ncheekful\ncheekfuls\ncheekier\ncheekiest\ncheekily\ncheekiness\ncheeking\ncheeks\ncheeky\ncheep\ncheeped\ncheeper\ncheepers\ncheeping\ncheeps\ncheer\ncheered\ncheerer\ncheerers\ncheerful\ncheerfuller\ncheerfullest\ncheerfully\ncheerfulness\ncheerier\ncheeriest\ncheerily\ncheeriness\ncheering\ncheerio\ncheerios\ncheerleader\ncheerleaders\ncheerless\ncheerlessly\ncheerlessness\ncheero\ncheeros\ncheers\ncheery\ncheese\ncheeseburger\ncheeseburgers\ncheesecake\ncheesecakes\ncheesecloth\ncheesecloths\ncheesed\ncheeses\ncheesier\ncheesiest\ncheesily\ncheesing\ncheesy\ncheetah\ncheetahs\nchef\nchefdom\nchefdoms\nchefs\nchegoe\nchegoes\nchela\nchelae\nchelas\nchelate\nchelated\nchelates\nchelating\nchelator\nchelators\ncheloid\ncheloids\nchemic\nchemical\nchemically\nchemicals\nchemics\nchemise\nchemises\nchemism\nchemisms\nchemist\nchemistries\nchemistry\nchemists\nchemotherapeutic\nchemotherapies\nchemotherapist\nchemotherapists\nchemotherapy\nchemurgic\nchemurgically\nchemurgies\nchemurgy\nchenille\nchenilles\nchenopod\nchenopods\ncheque\nchequer\nchequered\nchequering\nchequers\ncheques\ncherish\ncherished\ncherishes\ncherishing\ncheroot\ncheroots\ncherries\ncherry\ncherrylike\nchert\nchertier\nchertiest\ncherts\ncherty\ncherub\ncherubic\ncherubically\ncherubim\ncherubs\nchervil\nchervils\nchess\nchessboard\nchessboards\nchesses\nchessman\nchessmen\nchest\nchested\nchesterfield\nchesterfields\nchestful\nchestfuls\nchestier\nchestiest\nchestnut\nchestnuts\nchests\nchesty\nchetah\nchetahs\ncheth\ncheths\nchevalet\nchevalets\nchevalier\nchevaliers\ncheveron\ncheverons\nchevied\nchevies\ncheviot\ncheviots\nchevron\nchevrons\nchevy\nchevying\nchew\nchewable\nchewed\nchewer\nchewers\nchewier\nchewiest\nchewing\nchewink\nchewinks\nchews\nchewy\nchez\nchi\nchia\nchiao\nchiaroscurist\nchiaroscurists\nchiaroscuro\nchiaroscuros\nchias\nchiasm\nchiasma\nchiasmal\nchiasmas\nchiasmata\nchiasmi\nchiasmic\nchiasms\nchiasmus\nchiastic\nchiaus\nchiauses\nchibouk\nchibouks\nchic\nchicane\nchicaned\nchicaner\nchicaneries\nchicaners\nchicanery\nchicanes\nchicaning\nchiccories\nchiccory\nchichi\nchichis\nchick\nchickadee\nchickadees\nchicken\nchickened\nchickenhearted\nchickening\nchickens\nchickpea\nchickpeas\nchicks\nchickweed\nchickweeds\nchicle\nchicles\nchicly\nchicness\nchicnesses\nchico\nchicories\nchicory\nchicos\nchics\nchid\nchidden\nchide\nchided\nchider\nchiders\nchides\nchiding\nchief\nchiefdom\nchiefdoms\nchiefer\nchiefest\nchiefly\nchiefs\nchieftain\nchieftaincy\nchieftains\nchieftainship\nchieftainships\nchiel\nchield\nchields\nchiels\nchiffon\nchiffonier\nchiffoniers\nchiffons\nchigetai\nchigetais\nchigger\nchiggers\nchignon\nchignons\nchigoe\nchigoes\nchilblain\nchilblains\nchild\nchildbed\nchildbeds\nchildbirth\nchildbirths\nchilde\nchildes\nchildhood\nchildhoods\nchilding\nchildish\nchildishly\nchildishness\nchildless\nchildlessness\nchildlier\nchildliest\nchildlike\nchildlikeness\nchildly\nchildren\nchile\nchiles\nchili\nchiliad\nchiliads\nchiliasm\nchiliasms\nchiliast\nchiliasts\nchilies\nchill\nchilled\nchiller\nchillers\nchillest\nchilli\nchillier\nchillies\nchilliest\nchillily\nchilliness\nchilling\nchillingly\nchillness\nchills\nchillum\nchillums\nchilly\nchilopod\nchilopods\nchimaera\nchimaeras\nchimar\nchimars\nchimb\nchimbley\nchimbleys\nchimblies\nchimbly\nchimbs\nchime\nchimed\nchimer\nchimera\nchimeras\nchimere\nchimeres\nchimeric\nchimerical\nchimerically\nchimers\nchimes\nchiming\nchimla\nchimlas\nchimley\nchimleys\nchimney\nchimneys\nchimp\nchimpanzee\nchimpanzees\nchimps\nchin\nchina\nchinas\nchinbone\nchinbones\nchinch\nchinches\nchinchier\nchinchiest\nchinchilla\nchinchillas\nchinchy\nchine\nchined\nchines\nchining\nchink\nchinked\nchinkier\nchinkiest\nchinking\nchinks\nchinky\nchinless\nchinned\nchinning\nchino\nchinone\nchinones\nchinook\nchinooks\nchinos\nchinquapin\nchinquapins\nchins\nchints\nchintses\nchintz\nchintzes\nchintzier\nchintziest\nchintzy\nchip\nchipboard\nchipboards\nchipmuck\nchipmucks\nchipmunk\nchipmunks\nchipped\nchipper\nchippered\nchippering\nchippers\nchippie\nchippies\nchipping\nchippy\nchips\nchirk\nchirked\nchirker\nchirkest\nchirking\nchirks\nchirm\nchirmed\nchirming\nchirms\nchiro\nchirographer\nchirographers\nchirography\nchiropodist\nchiropodists\nchiropody\nchiropractor\nchiropractors\nchiros\nchirp\nchirped\nchirper\nchirpers\nchirpier\nchirpiest\nchirpily\nchirpiness\nchirping\nchirps\nchirpy\nchirr\nchirre\nchirred\nchirres\nchirring\nchirrs\nchirrup\nchirruped\nchirruping\nchirrups\nchirrupy\nchis\nchisel\nchiseled\nchiseler\nchiselers\nchiseling\nchiselled\nchiselling\nchisels\nchit\nchital\nchitchat\nchitchats\nchitchatted\nchitchatting\nchitin\nchitins\nchitlin\nchitling\nchitlings\nchitlins\nchiton\nchitons\nchits\nchitter\nchittered\nchittering\nchitterling\nchitterlings\nchitters\nchitties\nchitty\nchivalries\nchivalrous\nchivalrously\nchivalrousness\nchivalry\nchivaree\nchivareed\nchivareeing\nchivarees\nchivari\nchivaried\nchivaries\nchivariing\nchivaring\nchive\nchives\nchivied\nchivies\nchivvied\nchivvies\nchivvy\nchivvying\nchivy\nchivying\nchlamydes\nchlamys\nchlamyses\nchloral\nchlorals\nchlorate\nchlorates\nchlordan\nchlordans\nchloric\nchlorid\nchloride\nchlorides\nchlorids\nchlorin\nchlorinate\nchlorinated\nchlorinates\nchlorinating\nchlorination\nchlorinations\nchlorine\nchlorines\nchlorins\nchlorite\nchlorites\nchloroform\nchlorophyll\nchlorophyllous\nchlorous\nchock\nchocked\nchocking\nchocks\nchocolate\nchocolates\nchocolaty\nchoice\nchoicely\nchoiceness\nchoicer\nchoices\nchoicest\nchoir\nchoirboy\nchoirboys\nchoired\nchoirgirl\nchoirgirls\nchoiring\nchoirmaster\nchoirmasters\nchoirs\nchoke\nchoked\nchoker\nchokers\nchokes\nchokey\nchokier\nchokiest\nchoking\nchoky\ncholate\ncholates\ncholer\ncholera\ncholeraic\ncholeras\ncholeric\ncholerically\ncholers\ncholesterol\ncholine\ncholines\ncholla\nchollas\ncholo\nchomp\nchomped\nchomping\nchomps\nchon\nchoose\nchooser\nchoosers\nchooses\nchoosey\nchoosier\nchoosiest\nchoosing\nchoosy\nchop\nchophouse\nchophouses\nchopin\nchopine\nchopines\nchopins\nchopped\nchopper\nchoppers\nchoppier\nchoppiest\nchoppily\nchopping\nchoppy\nchops\nchopstick\nchopsticks\nchoragi\nchoragic\nchoragus\nchoraguses\nchoral\nchorale\nchorales\nchorally\nchorals\nchord\nchordal\nchordate\nchordates\nchorded\nchording\nchords\nchore\nchorea\nchoreal\nchoreas\nchored\nchoregi\nchoregus\nchoreguses\nchoreic\nchoreman\nchoremen\nchoreograph\nchoreographed\nchoreographer\nchoreographers\nchoreographic\nchoreographically\nchoreographies\nchoreographing\nchoreographs\nchoreography\nchoreoid\nchores\nchorial\nchoriamb\nchoriambs\nchoric\nchorine\nchorines\nchoring\nchorioid\nchorioids\nchorion\nchorions\nchorister\nchoristers\nchorizo\nchorizos\nchoroid\nchoroids\nchortle\nchortled\nchortler\nchortlers\nchortles\nchortling\nchorus\nchorused\nchoruses\nchorusing\nchorussed\nchorusses\nchorussing\nchose\nchosen\nchoses\nchott\nchotts\nchough\nchoughs\nchouse\nchoused\nchouser\nchousers\nchouses\nchoush\nchoushes\nchousing\nchow\nchowchow\nchowchows\nchowder\nchowdered\nchowdering\nchowders\nchowed\nchowing\nchows\nchowse\nchowsed\nchowses\nchowsing\nchowtime\nchowtimes\nchresard\nchresards\nchrism\nchrisma\nchrismal\nchrismon\nchrismons\nchrisms\nchrisom\nchrisoms\nchristen\nchristened\nchristening\nchristenings\nchristens\nchristie\nchristies\nchristy\nchroma\nchromas\nchromate\nchromates\nchromatic\nchromatically\nchromaticism\nchromaticity\nchromatid\nchromatids\nchromatin\nchromatinic\nchromatographic\nchromatographically\nchromatography\nchrome\nchromed\nchromes\nchromic\nchromide\nchromides\nchroming\nchromite\nchromites\nchromium\nchromiums\nchromize\nchromized\nchromizes\nchromizing\nchromo\nchromos\nchromosomal\nchromosome\nchromosomes\nchromosphere\nchromous\nchromyl\nchronaxies\nchronaxy\nchronic\nchronically\nchronicities\nchronicity\nchronicle\nchronicled\nchronicler\nchroniclers\nchronicles\nchronicling\nchronics\nchronograph\nchronographic\nchronographs\nchronological\nchronologically\nchronologies\nchronologist\nchronologists\nchronology\nchronometer\nchronometers\nchronometric\nchronometry\nchronon\nchronons\nchrysalides\nchrysalis\nchrysalises\nchrysanthemum\nchrysanthemums\nchthonic\nchub\nchubasco\nchubascos\nchubbier\nchubbiest\nchubbily\nchubbiness\nchubby\nchubs\nchuck\nchucked\nchuckhole\nchuckholes\nchuckies\nchucking\nchuckle\nchuckled\nchuckler\nchucklers\nchuckles\nchuckling\nchucks\nchucky\nchuddah\nchuddahs\nchuddar\nchuddars\nchudder\nchudders\nchufa\nchufas\nchuff\nchuffed\nchuffer\nchuffest\nchuffier\nchuffiest\nchuffing\nchuffs\nchuffy\nchug\nchugged\nchugger\nchuggers\nchugging\nchugs\nchukar\nchukars\nchukka\nchukkar\nchukkars\nchukkas\nchukker\nchukkers\nchum\nchummed\nchummier\nchummiest\nchummily\nchumming\nchummy\nchump\nchumped\nchumping\nchumps\nchums\nchumship\nchumships\nchunk\nchunked\nchunkier\nchunkiest\nchunkily\nchunkiness\nchunking\nchunks\nchunky\nchunter\nchuntered\nchuntering\nchunters\nchurch\nchurched\nchurches\nchurchgoer\nchurchgoers\nchurchgoing\nchurchier\nchurchiest\nchurching\nchurchless\nchurchlier\nchurchliest\nchurchly\nchurchman\nchurchmen\nchurchwoman\nchurchwomen\nchurchy\nchurchyard\nchurchyards\nchurl\nchurlish\nchurlishly\nchurlishness\nchurls\nchurn\nchurned\nchurner\nchurners\nchurning\nchurnings\nchurns\nchurr\nchurred\nchurring\nchurrs\nchute\nchuted\nchutes\nchuting\nchutist\nchutists\nchutnee\nchutnees\nchutney\nchutneys\nchutzpa\nchutzpah\nchutzpahs\nchutzpas\nchyle\nchyles\nchylous\nchyme\nchymes\nchymic\nchymics\nchymist\nchymists\nchymosin\nchymosins\nchymous\nciao\ncibol\ncibols\nciboria\nciborium\nciboule\nciboules\ncicada\ncicadae\ncicadas\ncicala\ncicalas\ncicale\ncicatrices\ncicatrix\ncicelies\ncicely\ncicero\ncicerone\ncicerones\nciceroni\nciceros\ncichlid\ncichlidae\ncichlids\ncicisbei\ncicisbeo\ncicoree\ncicorees\ncider\nciders\ncigar\ncigaret\ncigarets\ncigarette\ncigarettes\ncigars\ncilantro\ncilantros\ncilia\nciliary\nciliate\nciliated\nciliates\ncilice\ncilices\ncilium\ncimex\ncimices\ncinch\ncinched\ncinches\ncinching\ncinchona\ncinchonas\ncincture\ncinctured\ncinctures\ncincturing\ncinder\ncindered\ncindering\ncinders\ncindery\ncine\ncineast\ncineaste\ncineastes\ncineasts\ncinema\ncinemas\ncinematic\ncinematically\ncinematographer\ncinematographers\ncinematographic\ncinematographically\ncinematographies\ncinematography\ncineol\ncineole\ncineoles\ncineols\ncinerary\ncinerin\ncinerins\ncines\ncingula\ncingulum\ncinnabar\ncinnabarine\ncinnabars\ncinnamic\ncinnamon\ncinnamons\ncinnamyl\ncinnamyls\ncinquain\ncinquains\ncinque\ncinquefoil\ncinquefoils\ncinques\ncion\ncions\ncipher\nciphered\nciphering\nciphers\nciphonies\nciphony\ncipolin\ncipolins\ncirca\ncircle\ncircled\ncircler\ncirclers\ncircles\ncirclet\ncirclets\ncircling\ncircuit\ncircuital\ncircuited\ncircuities\ncircuiting\ncircuitous\ncircuitously\ncircuitousness\ncircuitries\ncircuitry\ncircuits\ncircuity\ncircular\ncircularities\ncircularity\ncircularization\ncircularizations\ncircularize\ncircularized\ncircularizes\ncircularizing\ncircularly\ncircularness\ncirculars\ncirculate\ncirculated\ncirculates\ncirculating\ncirculation\ncirculations\ncirculative\ncirculator\ncirculators\ncirculatory\ncircumcise\ncircumcised\ncircumcises\ncircumcising\ncircumcision\ncircumcisions\ncircumference\ncircumferences\ncircumferential\ncircumflex\ncircumflexes\ncircumlocution\ncircumlocutions\ncircumnavigate\ncircumnavigated\ncircumnavigates\ncircumnavigating\ncircumnavigation\ncircumnavigations\ncircumnavigator\ncircumnavigators\ncircumscribe\ncircumscribed\ncircumscribes\ncircumscribing\ncircumscription\ncircumscriptions\ncircumspect\ncircumspection\ncircumspections\ncircumspectly\ncircumstance\ncircumstanced\ncircumstances\ncircumstantial\ncircumstantialities\ncircumstantiality\ncircumstantially\ncircumstantiate\ncircumstantiated\ncircumstantiates\ncircumstantiating\ncircumvent\ncircumvented\ncircumventing\ncircumvention\ncircumventions\ncircumvents\ncircus\ncircuses\ncircusy\ncircuting\ncire\ncires\ncirque\ncirques\ncirrate\ncirrhoses\ncirrhosis\ncirrhotic\ncirri\ncirriped\ncirripeds\ncirrose\ncirrous\ncirrus\ncirsoid\ncis\ncisco\nciscoes\nciscos\ncislunar\ncissoid\ncissoids\ncissy\ncist\ncistern\ncisterna\ncisternae\ncisterns\ncistron\ncistrons\ncists\ncitable\ncitadel\ncitadels\ncitation\ncitations\ncitatory\ncite\nciteable\ncited\nciter\nciters\ncites\ncithara\ncitharas\ncither\ncithern\ncitherns\ncithers\ncithren\ncithrens\ncitied\ncities\ncitified\ncitifies\ncitify\ncitifying\nciting\ncitizen\ncitizenly\ncitizenries\ncitizenry\ncitizens\ncitizenship\ncitola\ncitolas\ncitole\ncitoles\ncitral\ncitrals\ncitrate\ncitrated\ncitrates\ncitreous\ncitric\ncitrin\ncitrine\ncitrines\ncitrins\ncitron\ncitrons\ncitrous\ncitrus\ncitruses\ncittern\ncitterns\ncity\ncityfied\ncityward\ncivet\ncivets\ncivic\ncivically\ncivicism\ncivicisms\ncivics\ncivie\ncivies\ncivil\ncivilian\ncivilians\ncivilise\ncivilised\ncivilises\ncivilising\ncivilities\ncivility\ncivilization\ncivilizations\ncivilize\ncivilized\ncivilizer\ncivilizers\ncivilizes\ncivilizing\ncivilly\ncivism\ncivisms\ncivvies\ncivvy\nclabber\nclabbered\nclabbering\nclabbers\nclach\nclachan\nclachans\nclachs\nclack\nclacked\nclacker\nclackers\nclacking\nclacks\nclad\ncladding\ncladdings\ncladode\ncladodes\nclads\nclag\nclagged\nclagging\nclags\nclaim\nclaimable\nclaimant\nclaimants\nclaimed\nclaimer\nclaimers\nclaiming\nclaims\nclairvoyance\nclairvoyant\nclairvoyantly\nclairvoyants\nclam\nclamant\nclamantly\nclambake\nclambakes\nclamber\nclambered\nclamberer\nclamberers\nclambering\nclambers\nclammed\nclammier\nclammiest\nclammily\nclamming\nclammy\nclamor\nclamored\nclamorer\nclamorers\nclamoring\nclamorous\nclamorously\nclamorousness\nclamors\nclamour\nclamoured\nclamouring\nclamours\nclamp\nclamped\nclamper\nclampers\nclamping\nclamps\nclams\nclamworm\nclamworms\nclan\nclandestine\nclandestinely\nclandestineness\nclang\nclanged\nclanging\nclangor\nclangored\nclangoring\nclangorous\nclangorously\nclangors\nclangour\nclangoured\nclangouring\nclangours\nclangs\nclank\nclanked\nclanking\nclankingly\nclanks\nclannish\nclannishly\nclannishness\nclans\nclansman\nclansmen\nclap\nclapboard\nclapboards\nclapped\nclapper\nclappers\nclapping\nclaps\nclapt\nclaptrap\nclaptraps\nclaque\nclaquer\nclaquers\nclaques\nclaqueur\nclaqueurs\nclarence\nclarences\nclaret\nclarets\nclaries\nclarification\nclarifications\nclarified\nclarifier\nclarifiers\nclarifies\nclarify\nclarifying\nclarinet\nclarinetist\nclarinetists\nclarinets\nclarinettist\nclarinettists\nclarion\nclarioned\nclarioning\nclarions\nclarities\nclarity\nclarkia\nclarkias\nclaro\nclaroes\nclaros\nclary\nclash\nclashed\nclasher\nclashers\nclashes\nclashing\nclasp\nclasped\nclasper\nclaspers\nclasping\nclasps\nclaspt\nclass\nclassed\nclasser\nclassers\nclasses\nclassic\nclassical\nclassicality\nclassically\nclassicism\nclassicist\nclassicistic\nclassicists\nclassicize\nclassicized\nclassicizes\nclassicizing\nclassics\nclassier\nclassiest\nclassifiable\nclassification\nclassifications\nclassified\nclassifier\nclassifiers\nclassifies\nclassify\nclassifying\nclassily\nclassiness\nclassing\nclassis\nclassless\nclassmate\nclassmates\nclassroom\nclassrooms\nclassy\nclast\nclastic\nclastics\nclasts\nclatter\nclattered\nclatterer\nclatterers\nclattering\nclatteringly\nclatters\nclattery\nclaucht\nclaught\nclaughted\nclaughting\nclaughts\nclausal\nclause\nclauses\nclaustrophobe\nclaustrophobes\nclaustrophobia\nclaustrophobic\nclavate\nclave\nclaver\nclavered\nclavering\nclavers\nclavi\nclavichord\nclavichordist\nclavichordists\nclavichords\nclavicle\nclavicles\nclavier\nclavierist\nclavierists\nclaviers\nclaw\nclawed\nclawer\nclawers\nclawing\nclawless\nclaws\nclaxon\nclaxons\nclay\nclaybank\nclaybanks\nclayed\nclayey\nclayier\nclayiest\nclaying\nclayish\nclaylike\nclaymore\nclaymores\nclaypan\nclaypans\nclays\nclayware\nclaywares\nclean\ncleanable\ncleaned\ncleaner\ncleaners\ncleanest\ncleaning\ncleanlier\ncleanliest\ncleanliness\ncleanly\ncleanness\ncleans\ncleanse\ncleansed\ncleanser\ncleansers\ncleanses\ncleansing\ncleanup\ncleanups\nclear\nclearable\nclearance\nclearances\ncleared\nclearer\nclearers\nclearest\nclearheaded\nclearheadedly\nclearheadedness\nclearing\nclearinghouse\nclearinghouses\nclearings\nclearly\nclearness\nclears\nclearstories\nclearstory\ncleat\ncleated\ncleating\ncleats\ncleavable\ncleavage\ncleavages\ncleave\ncleaved\ncleaver\ncleavers\ncleaves\ncleaving\ncleek\ncleeked\ncleeking\ncleeks\nclef\nclefs\ncleft\nclefts\nclematis\nclematises\nclemencies\nclemency\nclement\nclemently\nclench\nclenched\nclenches\nclenching\ncleome\ncleomes\nclepe\ncleped\nclepes\ncleping\nclept\nclerestories\nclerestory\nclergies\nclergy\nclergyman\nclergymen\ncleric\nclerical\nclericalism\nclerically\nclericals\nclerics\nclerid\nclerids\nclerihew\nclerihews\nclerisies\nclerisy\nclerk\nclerkdom\nclerkdoms\nclerked\nclerking\nclerkish\nclerklier\nclerkliest\nclerkly\nclerks\nclerkship\ncleveite\ncleveites\nclever\ncleverer\ncleverest\ncleverish\ncleverly\ncleverness\nclevis\nclevises\nclew\nclewed\nclewing\nclews\ncliche\ncliched\ncliches\nclick\nclicked\nclicker\nclickers\nclicking\nclicks\nclient\ncliental\nclientele\nclienteles\nclientless\nclients\ncliff\ncliffier\ncliffiest\ncliffs\ncliffy\nclift\nclifts\nclimacteric\nclimactic\nclimactically\nclimatal\nclimate\nclimates\nclimatic\nclimatically\nclimatological\nclimatologist\nclimatologists\nclimatology\nclimax\nclimaxed\nclimaxes\nclimaxing\nclimb\nclimbable\nclimbed\nclimber\nclimbers\nclimbing\nclimbs\nclime\nclimes\nclinal\nclinally\nclinch\nclinched\nclincher\nclinchers\nclinches\nclinching\ncline\nclines\ncling\nclinged\nclinger\nclingers\nclingier\nclingiest\nclinging\nclings\nclingstone\nclingstones\nclingy\nclinic\nclinical\nclinically\nclinician\nclinicians\nclinics\nclink\nclinked\nclinker\nclinkered\nclinkering\nclinkers\nclinking\nclinks\nclinometer\nclinometers\nclinometry\nclip\nclipboard\nclipboards\nclipped\nclipper\nclippers\nclipping\nclippings\nclips\nclipt\nclique\ncliqued\ncliqueier\ncliqueiest\ncliques\ncliquey\ncliquier\ncliquiest\ncliquing\ncliquish\ncliquishly\ncliquishness\ncliquy\nclitella\nclitoral\nclitoric\nclitorides\nclitoris\nclitorises\nclivers\ncloaca\ncloacae\ncloacal\ncloak\ncloaked\ncloaking\ncloakroom\ncloakrooms\ncloaks\nclobber\nclobbered\nclobbering\nclobbers\ncloche\ncloches\nclock\nclocked\nclocker\nclockers\nclocking\nclocks\nclockwise\nclockwork\nclockworks\nclod\ncloddier\ncloddiest\ncloddish\ncloddishness\ncloddy\nclodhopper\nclodhoppers\nclodpate\nclodpates\nclodpole\nclodpoles\nclodpoll\nclodpolls\nclods\nclog\nclogged\ncloggier\ncloggiest\nclogging\ncloggy\nclogs\ncloister\ncloistered\ncloistering\ncloisters\nclomb\nclomp\nclomped\nclomping\nclomps\nclon\nclonal\nclonally\nclone\ncloned\nclones\nclonic\ncloning\nclonism\nclonisms\nclonk\nclonked\nclonking\nclonks\nclons\nclonus\nclonuses\ncloot\ncloots\nclop\nclopped\nclopping\nclops\nclosable\nclose\nclosed\nclosefisted\nclosely\nclosemouthed\ncloseness\ncloseout\ncloseouts\ncloser\nclosers\ncloses\nclosest\ncloset\ncloseted\ncloseting\nclosets\nclosing\nclosings\nclosure\nclosured\nclosures\nclosuring\nclot\ncloth\nclothe\nclothed\nclothes\nclotheshorse\nclotheshorses\nclothesline\nclotheslines\nclothespin\nclothespins\nclothier\nclothiers\nclothing\nclothings\ncloths\nclots\nclotted\nclotting\nclotty\ncloture\nclotured\nclotures\ncloturing\ncloud\ncloudburst\ncloudbursts\nclouded\ncloudier\ncloudiest\ncloudily\ncloudiness\nclouding\ncloudless\ncloudlessly\ncloudlessness\ncloudlet\ncloudlets\nclouds\ncloudy\nclough\ncloughs\nclour\ncloured\nclouring\nclours\nclout\nclouted\nclouter\nclouters\nclouting\nclouts\nclove\ncloven\nclover\ncloverleaf\ncloverleafs\ncloverleaves\nclovers\ncloves\nclowder\nclowders\nclown\nclowned\nclowneries\nclownery\nclowning\nclownish\nclownishly\nclownishness\nclowns\ncloy\ncloyed\ncloying\ncloyingly\ncloys\ncloze\nclub\nclubable\nclubbable\nclubbed\nclubber\nclubbers\nclubbier\nclubbiest\nclubbiness\nclubbing\nclubby\nclubfeet\nclubfoot\nclubfooted\nclubhand\nclubhands\nclubhaul\nclubhauled\nclubhauling\nclubhauls\nclubhouse\nclubhouses\nclubman\nclubmen\nclubroot\nclubroots\nclubs\ncluck\nclucked\nclucking\nclucks\nclue\nclued\nclueing\nclues\ncluing\nclumber\nclumbers\nclump\nclumped\nclumpier\nclumpiest\nclumping\nclumpish\nclumps\nclumpy\nclumsier\nclumsiest\nclumsily\nclumsiness\nclumsy\nclung\nclunk\nclunked\nclunker\nclunkers\nclunking\nclunks\nclupeid\nclupeids\nclupeoid\nclupeoids\ncluster\nclustered\nclustering\nclusters\nclustery\nclutch\nclutched\nclutches\nclutching\nclutchy\nclutter\ncluttered\ncluttering\nclutters\nclypeal\nclypeate\nclypei\nclypeus\nclyster\nclysters\ncoach\ncoached\ncoacher\ncoachers\ncoaches\ncoaching\ncoachman\ncoachmen\ncoact\ncoacted\ncoacting\ncoaction\ncoactions\ncoactive\ncoacts\ncoadjutor\ncoadjutors\ncoadmire\ncoadmired\ncoadmires\ncoadmiring\ncoadmit\ncoadmits\ncoadmitted\ncoadmitting\ncoaeval\ncoaevals\ncoagencies\ncoagency\ncoagent\ncoagents\ncoagula\ncoagulability\ncoagulable\ncoagulant\ncoagulants\ncoagulate\ncoagulated\ncoagulates\ncoagulating\ncoagulation\ncoagulations\ncoagulum\ncoagulums\ncoal\ncoala\ncoalas\ncoalbin\ncoalbins\ncoalbox\ncoalboxes\ncoaled\ncoaler\ncoalers\ncoalesce\ncoalesced\ncoalescence\ncoalescent\ncoalesces\ncoalescing\ncoalfish\ncoalfishes\ncoalhole\ncoalholes\ncoalified\ncoalifies\ncoalify\ncoalifying\ncoaling\ncoalition\ncoalitionist\ncoalitionists\ncoalitions\ncoalless\ncoalpit\ncoalpits\ncoals\ncoalsack\ncoalsacks\ncoalshed\ncoalsheds\ncoaly\ncoalyard\ncoalyards\ncoaming\ncoamings\ncoannex\ncoannexed\ncoannexes\ncoannexing\ncoappear\ncoappeared\ncoappearing\ncoappears\ncoapt\ncoapted\ncoapting\ncoapts\ncoarse\ncoarsely\ncoarsen\ncoarsened\ncoarseness\ncoarsening\ncoarsens\ncoarser\ncoarsest\ncoassist\ncoassisted\ncoassisting\ncoassists\ncoassume\ncoassumed\ncoassumes\ncoassuming\ncoast\ncoastal\ncoasted\ncoaster\ncoasters\ncoasting\ncoastings\ncoastline\ncoastlines\ncoasts\ncoat\ncoated\ncoatee\ncoatees\ncoater\ncoaters\ncoati\ncoating\ncoatings\ncoatis\ncoatless\ncoatrack\ncoatracks\ncoatroom\ncoatrooms\ncoats\ncoattail\ncoattails\ncoattend\ncoattended\ncoattending\ncoattends\ncoattest\ncoattested\ncoattesting\ncoattests\ncoauthor\ncoauthored\ncoauthoring\ncoauthors\ncoax\ncoaxal\ncoaxed\ncoaxer\ncoaxers\ncoaxes\ncoaxial\ncoaxing\ncob\ncobalt\ncobaltic\ncobalts\ncobb\ncobber\ncobbers\ncobbier\ncobbiest\ncobble\ncobbled\ncobbler\ncobblers\ncobbles\ncobblestone\ncobblestones\ncobbling\ncobbs\ncobby\ncobia\ncobias\ncoble\ncobles\ncobnut\ncobnuts\ncobra\ncobras\ncobs\ncobweb\ncobwebbed\ncobwebbier\ncobwebbiest\ncobwebbing\ncobwebby\ncobwebs\ncoca\ncocain\ncocaine\ncocaines\ncocains\ncocas\ncoccal\ncocci\ncoccic\ncoccid\ncoccidia\ncoccids\ncoccoid\ncoccoids\ncoccous\ncoccus\ncoccyges\ncoccyx\ncoccyxes\ncochair\ncochaired\ncochairing\ncochairman\ncochairmen\ncochairs\ncochin\ncochins\ncochlea\ncochleae\ncochlear\ncochleas\ncocinera\ncocineras\ncock\ncockade\ncockaded\ncockades\ncockatoo\ncockatoos\ncockatrice\ncockatrices\ncockbill\ncockbilled\ncockbilling\ncockbills\ncockboat\ncockboats\ncockcrow\ncockcrows\ncocked\ncocker\ncockered\ncockerel\ncockerels\ncockering\ncockers\ncockeye\ncockeyed\ncockeyes\ncockfight\ncockfighting\ncockfights\ncockier\ncockiest\ncockily\ncockiness\ncocking\ncockish\ncockle\ncocklebur\ncockleburs\ncockled\ncockles\ncockleshell\ncockleshells\ncocklike\ncockling\ncockloft\ncocklofts\ncockney\ncockneyish\ncockneys\ncockpit\ncockpits\ncockroach\ncockroaches\ncocks\ncockshies\ncockshut\ncockshuts\ncockshy\ncockspur\ncockspurs\ncocksure\ncocksurely\ncocksureness\ncocktail\ncocktailed\ncocktailing\ncocktails\ncockup\ncockups\ncocky\ncoco\ncocoa\ncocoanut\ncocoanuts\ncocoas\ncocobola\ncocobolas\ncocobolo\ncocobolos\ncocomat\ncocomats\ncoconspirator\ncoconspirators\ncoconut\ncoconuts\ncocoon\ncocooned\ncocooning\ncocoons\ncocos\ncocotte\ncocottes\ncocreate\ncocreated\ncocreates\ncocreating\ncod\ncoda\ncodable\ncodas\ncodder\ncodders\ncoddle\ncoddled\ncoddler\ncoddlers\ncoddles\ncoddling\ncode\ncodebtor\ncodebtors\ncodec\ncoded\ncodefendant\ncodefendants\ncodeia\ncodeias\ncodein\ncodeina\ncodeinas\ncodeine\ncodeines\ncodeins\ncodeless\ncoden\ncodens\ncoder\ncoderive\ncoderived\ncoderives\ncoderiving\ncoders\ncodes\ncodex\ncodfish\ncodfishes\ncodger\ncodgers\ncodices\ncodicil\ncodicils\ncodification\ncodifications\ncodified\ncodifier\ncodifiers\ncodifies\ncodify\ncodifying\ncoding\ncodiscoverer\ncodiscoverers\ncodlin\ncodling\ncodlings\ncodlins\ncodon\ncodons\ncodpiece\ncodpieces\ncods\ncoed\ncoeditor\ncoeditors\ncoeds\ncoeducation\ncoeducational\ncoeducationally\ncoeffect\ncoeffects\ncoefficient\ncoefficients\ncoeliac\ncoelom\ncoelomata\ncoelome\ncoelomes\ncoelomic\ncoeloms\ncoembodied\ncoembodies\ncoembody\ncoembodying\ncoemploy\ncoemployed\ncoemploying\ncoemploys\ncoempt\ncoempted\ncoempting\ncoempts\ncoenact\ncoenacted\ncoenacting\ncoenacts\ncoenamor\ncoenamored\ncoenamoring\ncoenamors\ncoendure\ncoendured\ncoendures\ncoenduring\ncoenure\ncoenures\ncoenuri\ncoenurus\ncoenzymatic\ncoenzymatically\ncoenzyme\ncoenzymes\ncoequal\ncoequality\ncoequally\ncoequals\ncoequate\ncoequated\ncoequates\ncoequating\ncoerce\ncoerced\ncoercer\ncoercers\ncoerces\ncoercible\ncoercing\ncoercion\ncoercions\ncoercive\ncoercively\ncoerciveness\ncoerect\ncoerected\ncoerecting\ncoerects\ncoeval\ncoevally\ncoevals\ncoexecutor\ncoexecutors\ncoexert\ncoexerted\ncoexerting\ncoexerts\ncoexist\ncoexisted\ncoexistence\ncoexistent\ncoexisting\ncoexists\ncoextend\ncoextended\ncoextending\ncoextends\ncoextensive\ncoextensively\ncofactor\ncofactors\ncoff\ncoffee\ncoffeehouse\ncoffeehouses\ncoffeepot\ncoffeepots\ncoffees\ncoffer\ncofferdam\ncofferdams\ncoffered\ncoffering\ncoffers\ncoffin\ncoffined\ncoffing\ncoffining\ncoffins\ncoffle\ncoffled\ncoffles\ncoffling\ncoffret\ncoffrets\ncoffs\ncofounder\ncofounders\ncoft\ncog\ncogencies\ncogency\ncogent\ncogently\ncogged\ncogging\ncogitate\ncogitated\ncogitates\ncogitating\ncogitation\ncogitations\ncogitative\ncogito\ncogitos\ncognac\ncognacs\ncognate\ncognates\ncognise\ncognised\ncognises\ncognising\ncognition\ncognitional\ncognitions\ncognitive\ncognizable\ncognizably\ncognizance\ncognizant\ncognize\ncognized\ncognizer\ncognizers\ncognizes\ncognizing\ncognomen\ncognomens\ncognomina\ncognovit\ncognovits\ncogon\ncogons\ncogs\ncogway\ncogways\ncogwheel\ncogwheels\ncohabit\ncohabitant\ncohabitants\ncohabitation\ncohabitations\ncohabited\ncohabiting\ncohabits\ncoheir\ncoheiress\ncoheiresses\ncoheirs\ncohere\ncohered\ncoherence\ncoherency\ncoherent\ncoherently\ncoherer\ncoherers\ncoheres\ncohering\ncohesion\ncohesions\ncohesive\ncohesively\ncohesiveness\ncoho\ncohobate\ncohobated\ncohobates\ncohobating\ncohog\ncohogs\ncohort\ncohorts\ncohos\ncohosh\ncohoshes\ncohune\ncohunes\ncoif\ncoifed\ncoiffe\ncoiffed\ncoiffes\ncoiffeur\ncoiffeurs\ncoiffing\ncoiffure\ncoiffured\ncoiffures\ncoiffuring\ncoifing\ncoifs\ncoign\ncoigne\ncoigned\ncoignes\ncoigning\ncoigns\ncoil\ncoiled\ncoiler\ncoilers\ncoiling\ncoils\ncoin\ncoinable\ncoinage\ncoinages\ncoincide\ncoincided\ncoincidence\ncoincidences\ncoincident\ncoincidental\ncoincidentally\ncoincidently\ncoincides\ncoinciding\ncoined\ncoiner\ncoiners\ncoinfer\ncoinferred\ncoinferring\ncoinfers\ncoinhere\ncoinhered\ncoinheres\ncoinhering\ncoining\ncoinmate\ncoinmates\ncoins\ncoinsurance\ncoinsurances\ncoinsure\ncoinsured\ncoinsurer\ncoinsurers\ncoinsures\ncoinsuring\ncointer\ncointerred\ncointerring\ncointers\ncoir\ncoirs\ncoistrel\ncoistrels\ncoistril\ncoistrils\ncoital\ncoitally\ncoition\ncoitions\ncoitus\ncoituses\ncoke\ncoked\ncokes\ncoking\ncol\ncola\ncolander\ncolanders\ncolas\ncold\ncolder\ncoldest\ncoldhearted\ncoldheartedly\ncoldheartedness\ncoldish\ncoldly\ncoldness\ncoldnesses\ncolds\ncole\ncoles\ncoleseed\ncoleseeds\ncoleslaw\ncoleslaws\ncolessee\ncolessees\ncolessor\ncolessors\ncoleus\ncoleuses\ncolewort\ncoleworts\ncolic\ncolicin\ncolicine\ncolicines\ncolicins\ncolicky\ncolics\ncolies\ncoliform\ncoliforms\ncolin\ncolinear\ncolins\ncoliseum\ncoliseums\ncolistin\ncolistins\ncolitic\ncolitis\ncolitises\ncollaborate\ncollaborated\ncollaborates\ncollaborating\ncollaboration\ncollaborationist\ncollaborationists\ncollaborations\ncollaborative\ncollaborator\ncollaborators\ncollage\ncollagen\ncollagens\ncollages\ncollagist\ncollagists\ncollapse\ncollapsed\ncollapses\ncollapsible\ncollapsing\ncollar\ncollarbone\ncollarbones\ncollard\ncollards\ncollared\ncollaret\ncollarets\ncollaring\ncollars\ncollate\ncollated\ncollateral\ncollaterally\ncollates\ncollating\ncollation\ncollations\ncollator\ncollators\ncolleague\ncolleagues\ncollect\ncollectable\ncollected\ncollectible\ncollectibles\ncollecting\ncollection\ncollections\ncollective\ncollectively\ncollectives\ncollectivism\ncollectivist\ncollectivistic\ncollectivists\ncollectivities\ncollectivity\ncollectivization\ncollectivizations\ncollectivize\ncollectivized\ncollectivizes\ncollectivizing\ncollector\ncollectors\ncollectorship\ncollectorships\ncollects\ncolleen\ncolleens\ncollege\ncolleger\ncollegers\ncolleges\ncollegia\ncollegial\ncollegiality\ncollegian\ncollegians\ncollegiate\ncollet\ncolleted\ncolleting\ncollets\ncollide\ncollided\ncollides\ncolliding\ncollie\ncollied\ncollier\ncollieries\ncolliers\ncolliery\ncollies\ncollimate\ncollimated\ncollimates\ncollimating\ncollimator\ncollimators\ncollins\ncollinses\ncollision\ncollisions\ncollocate\ncollocated\ncollocates\ncollocating\ncollocation\ncollocations\ncollodion\ncollogue\ncollogued\ncollogues\ncolloguing\ncolloid\ncolloidal\ncolloids\ncollop\ncollops\ncolloquial\ncolloquialism\ncolloquialisms\ncolloquially\ncolloquies\ncolloquy\ncollude\ncolluded\ncolluder\ncolluders\ncolludes\ncolluding\ncollusion\ncollusions\ncollusive\ncollusively\ncolluvia\ncolly\ncollying\ncollyria\ncolocate\ncolocated\ncolocates\ncolocating\ncolog\ncologne\ncologned\ncolognes\ncologs\ncolon\ncolonel\ncolonels\ncolones\ncoloni\ncolonial\ncolonialism\ncolonially\ncolonials\ncolonic\ncolonies\ncolonise\ncolonised\ncolonises\ncolonising\ncolonist\ncolonists\ncolonization\ncolonizations\ncolonize\ncolonized\ncolonizer\ncolonizers\ncolonizes\ncolonizing\ncolonnade\ncolonnaded\ncolonnades\ncolons\ncolonus\ncolony\ncolophon\ncolophons\ncolor\ncolorado\ncolorant\ncolorants\ncolorations\ncoloratura\ncoloraturas\ncolored\ncoloreds\ncolorer\ncolorers\ncolorfast\ncolorfastness\ncolorful\ncolorfully\ncolorfulness\ncoloring\ncolorings\ncolorism\ncolorisms\ncolorist\ncoloristic\ncolorists\ncolorless\ncolorlessly\ncolorlessness\ncolors\ncolossal\ncolossally\ncolosseum\ncolosseums\ncolossi\ncolossus\ncolossuses\ncolostomies\ncolostomy\ncolotomies\ncolotomy\ncolour\ncoloured\ncolourer\ncolourers\ncolouring\ncolours\ncolpitis\ncolpitises\ncols\ncolt\ncolter\ncolters\ncoltish\ncoltishly\ncolts\ncolubrid\ncolubrids\ncolugo\ncolugos\ncolumbic\ncolumbine\ncolumbines\ncolumel\ncolumels\ncolumn\ncolumnal\ncolumnar\ncolumned\ncolumnist\ncolumnists\ncolumns\ncolure\ncolures\ncoly\ncolza\ncolzas\ncoma\ncomae\ncomaker\ncomakers\ncomal\ncomas\ncomate\ncomates\ncomatic\ncomatik\ncomatiks\ncomatose\ncomatula\ncomatulae\ncomb\ncombat\ncombatant\ncombatants\ncombated\ncombater\ncombaters\ncombating\ncombative\ncombatively\ncombativeness\ncombats\ncombatted\ncombatting\ncombe\ncombed\ncomber\ncombers\ncombes\ncombinable\ncombination\ncombinational\ncombinations\ncombine\ncombined\ncombiner\ncombiners\ncombines\ncombing\ncombings\ncombining\ncomblike\ncombo\ncombos\ncombs\ncombust\ncombusted\ncombustibility\ncombustible\ncombustibles\ncombustibly\ncombusting\ncombustion\ncombustions\ncombustor\ncombustors\ncombusts\ncome\ncomeback\ncomebacks\ncomedian\ncomedians\ncomedic\ncomedienne\ncomediennes\ncomedies\ncomedo\ncomedones\ncomedos\ncomedown\ncomedowns\ncomedy\ncomelier\ncomeliest\ncomelily\ncomeliness\ncomely\ncomer\ncomers\ncomes\ncomestible\ncomestibles\ncomet\ncometary\ncometh\ncomether\ncomethers\ncometic\ncomets\ncomeuppance\ncomfier\ncomfiest\ncomfit\ncomfits\ncomfort\ncomfortable\ncomfortably\ncomforted\ncomforter\ncomforters\ncomforting\ncomfortingly\ncomforts\ncomfrey\ncomfreys\ncomfy\ncomic\ncomical\ncomicality\ncomically\ncomics\ncoming\ncomings\ncomitia\ncomitial\ncomities\ncomity\ncomix\ncomma\ncommand\ncommandant\ncommandants\ncommanded\ncommandeer\ncommandeered\ncommandeering\ncommandeers\ncommander\ncommanders\ncommandership\ncommanding\ncommandingly\ncommandment\ncommandments\ncommando\ncommandoes\ncommandos\ncommands\ncommas\ncommata\ncommemorate\ncommemorated\ncommemorates\ncommemorating\ncommemoration\ncommemorations\ncommemorative\ncommemoratively\ncommemorator\ncommemorators\ncommence\ncommenced\ncommencement\ncommencements\ncommencer\ncommencers\ncommences\ncommencing\ncommend\ncommendable\ncommendably\ncommendation\ncommendations\ncommendatory\ncommended\ncommending\ncommends\ncommensal\ncommensalism\ncommensally\ncommensals\ncommensurability\ncommensurable\ncommensurably\ncommensurate\ncommensurately\ncommensuration\ncommensurations\ncomment\ncommentaries\ncommentary\ncommentator\ncommentators\ncommented\ncommenting\ncomments\ncommerce\ncommerced\ncommerces\ncommercial\ncommercialism\ncommercialistic\ncommercialization\ncommercializations\ncommercialize\ncommercialized\ncommercializes\ncommercializing\ncommercially\ncommercials\ncommercing\ncommie\ncommies\ncommingle\ncommingled\ncommingles\ncommingling\ncomminute\ncomminuted\ncomminutes\ncomminuting\ncomminution\ncomminutions\ncommiserate\ncommiserated\ncommiserates\ncommiserating\ncommiseration\ncommiserations\ncommiserative\ncommissar\ncommissariat\ncommissariats\ncommissaries\ncommissars\ncommissary\ncommission\ncommissioned\ncommissioner\ncommissioners\ncommissioning\ncommissions\ncommit\ncommitment\ncommitments\ncommits\ncommittable\ncommittal\ncommittals\ncommitted\ncommittee\ncommitteeman\ncommitteemen\ncommittees\ncommitteewoman\ncommitteewomen\ncommitting\ncommix\ncommixed\ncommixes\ncommixing\ncommixt\ncommode\ncommodes\ncommodious\ncommodiously\ncommodiousness\ncommodities\ncommodity\ncommodore\ncommodores\ncommon\ncommonalities\ncommonality\ncommonalties\ncommonalty\ncommoner\ncommoners\ncommonest\ncommonly\ncommonness\ncommonplace\ncommons\ncommonwealth\ncommonwealths\ncommotion\ncommotions\ncommove\ncommoved\ncommoves\ncommoving\ncommunal\ncommunalism\ncommunalist\ncommunalists\ncommunalize\ncommunalized\ncommunalizes\ncommunalizing\ncommunally\ncommune\ncommuned\ncommunes\ncommunicability\ncommunicable\ncommunicableness\ncommunicably\ncommunicant\ncommunicants\ncommunicate\ncommunicated\ncommunicates\ncommunicating\ncommunication\ncommunications\ncommunicative\ncommunicatively\ncommunicativeness\ncommunicator\ncommunicators\ncommuning\ncommunion\ncommunions\ncommunique\ncommuniques\ncommunism\ncommunist\ncommunistic\ncommunistically\ncommunists\ncommunities\ncommunity\ncommunization\ncommunizations\ncommunize\ncommunized\ncommunizes\ncommunizing\ncommutable\ncommutation\ncommutations\ncommutative\ncommutator\ncommutators\ncommute\ncommuted\ncommuter\ncommuters\ncommutes\ncommuting\ncommy\ncomose\ncomous\ncomp\ncompact\ncompacted\ncompacter\ncompactest\ncompactible\ncompacting\ncompaction\ncompactions\ncompactly\ncompactness\ncompactor\ncompactors\ncompacts\ncompadre\ncompadres\ncompanied\ncompanies\ncompanion\ncompanionable\ncompanionableness\ncompanionably\ncompanions\ncompanionship\ncompanionships\ncompanionway\ncompanionways\ncompany\ncompanying\ncomparability\ncomparable\ncomparableness\ncomparably\ncomparative\ncomparatively\ncomparativeness\ncomparator\ncomparators\ncompare\ncompared\ncomparer\ncomparers\ncompares\ncomparing\ncomparison\ncomparisons\ncompart\ncomparted\ncomparting\ncompartment\ncompartmental\ncompartmentalization\ncompartmentalizations\ncompartmentalize\ncompartmentalized\ncompartmentalizes\ncompartmentalizing\ncompartmented\ncompartments\ncomparts\ncompass\ncompassable\ncompassed\ncompasses\ncompassing\ncompassion\ncompassionate\ncompassionately\ncompassionateness\ncompassions\ncompatibilities\ncompatibility\ncompatible\ncompatibleness\ncompatibles\ncompatibly\ncompatriot\ncompatriotic\ncompatriots\ncomped\ncompeer\ncompeered\ncompeering\ncompeers\ncompel\ncompellable\ncompelled\ncompeller\ncompellers\ncompelling\ncompellingly\ncompels\ncompend\ncompendia\ncompendious\ncompendiously\ncompendiousness\ncompendium\ncompendiums\ncompends\ncompensate\ncompensated\ncompensates\ncompensating\ncompensation\ncompensational\ncompensations\ncompensator\ncompensators\ncompensatory\ncompere\ncompered\ncomperes\ncompering\ncompete\ncompeted\ncompetence\ncompetencies\ncompetency\ncompetent\ncompetently\ncompetes\ncompeting\ncompetition\ncompetitions\ncompetitive\ncompetitively\ncompetitiveness\ncompetitor\ncompetitors\ncompetitory\ncompilation\ncompilations\ncompile\ncompiled\ncompiler\ncompilers\ncompiles\ncompiling\ncomping\ncomplacence\ncomplacency\ncomplacent\ncomplacently\ncomplain\ncomplainant\ncomplainants\ncomplained\ncomplainer\ncomplainers\ncomplaining\ncomplainingly\ncomplains\ncomplaint\ncomplaints\ncomplaisance\ncomplaisant\ncomplaisantly\ncompleat\ncomplect\ncomplected\ncomplecting\ncomplects\ncomplement\ncomplemental\ncomplementaries\ncomplementary\ncomplemented\ncomplementing\ncomplements\ncomplete\ncompleted\ncompletely\ncompleteness\ncompleter\ncompletes\ncompletest\ncompleting\ncompletion\ncompletions\ncompletive\ncomplex\ncomplexed\ncomplexer\ncomplexes\ncomplexest\ncomplexing\ncomplexion\ncomplexional\ncomplexioned\ncomplexions\ncomplexities\ncomplexity\ncomplexly\ncomplexness\ncompliance\ncompliances\ncompliancies\ncompliancy\ncompliant\ncompliantly\ncomplicacies\ncomplicacy\ncomplicate\ncomplicated\ncomplicatedly\ncomplicatedness\ncomplicates\ncomplicating\ncomplication\ncomplications\ncomplice\ncomplices\ncomplicities\ncomplicity\ncomplied\ncomplier\ncompliers\ncomplies\ncompliment\ncomplimentarily\ncomplimentary\ncompliments\ncomplin\ncompline\ncomplines\ncomplins\ncomplot\ncomplots\ncomplotted\ncomplotting\ncomply\ncomplying\ncompo\ncompone\ncomponent\ncomponential\ncomponents\ncompony\ncomport\ncomported\ncomporting\ncomportment\ncomportments\ncomports\ncompos\ncompose\ncomposed\ncomposedly\ncomposedness\ncomposer\ncomposers\ncomposes\ncomposing\ncomposite\ncompositely\ncomposites\ncomposition\ncompositional\ncompositions\ncompositor\ncompositors\ncompost\ncomposted\ncomposting\ncomposts\ncomposure\ncomposures\ncompote\ncompotes\ncompound\ncompoundable\ncompounded\ncompounder\ncompounders\ncompounding\ncompounds\ncomprehend\ncomprehended\ncomprehendible\ncomprehending\ncomprehends\ncomprehensibility\ncomprehensible\ncomprehensibleness\ncomprehensibly\ncomprehension\ncomprehensions\ncomprehensive\ncomprehensively\ncomprehensiveness\ncompress\ncompressed\ncompressedly\ncompresses\ncompressibility\ncompressible\ncompressing\ncompression\ncompressional\ncompressions\ncompressive\ncompressively\ncompressor\ncompressors\ncomprise\ncomprised\ncomprises\ncomprising\ncomprize\ncomprized\ncomprizes\ncomprizing\ncompromise\ncompromised\ncompromiser\ncompromisers\ncompromises\ncompromising\ncomps\ncompt\ncompted\ncompting\ncomptroller\ncomptrollers\ncomptrollership\ncomptrollerships\ncompts\ncompulsion\ncompulsions\ncompulsive\ncompulsively\ncompulsiveness\ncompulsorily\ncompulsory\ncompunction\ncompunctions\ncompunctious\ncomputability\ncomputable\ncomputation\ncomputational\ncomputations\ncompute\ncomputed\ncomputer\ncomputerese\ncomputerizable\ncomputerization\ncomputerizations\ncomputerize\ncomputerized\ncomputerizes\ncomputerizing\ncomputers\ncomputes\ncomputing\ncomrade\ncomradely\ncomrades\ncomradeship\ncomradeships\ncomte\ncomtes\ncon\nconation\nconations\nconative\nconatus\nconcatenate\nconcatenated\nconcatenates\nconcatenating\nconcatenation\nconcatenations\nconcave\nconcaved\nconcavely\nconcaveness\nconcaves\nconcaving\nconcavities\nconcavity\nconceal\nconcealable\nconcealed\nconcealer\nconcealers\nconcealing\nconcealment\nconcealments\nconceals\nconcede\nconceded\nconcededly\nconceder\nconceders\nconcedes\nconceding\nconceit\nconceited\nconceitedly\nconceitedness\nconceiting\nconceits\nconceivability\nconceivable\nconceivableness\nconceivably\nconceive\nconceived\nconceiver\nconceivers\nconceives\nconceiving\nconcent\nconcentrate\nconcentrated\nconcentrates\nconcentrating\nconcentration\nconcentrations\nconcentrative\nconcentrator\nconcentrators\nconcentric\nconcentrically\nconcentricities\nconcentricity\nconcents\nconcept\nconception\nconceptional\nconceptions\nconceptive\nconcepts\nconceptual\nconceptualism\nconceptualist\nconceptualistic\nconceptualists\nconceptualize\nconceptualized\nconceptualizes\nconceptualizing\nconceptually\nconcern\nconcerned\nconcerning\nconcernment\nconcernments\nconcerns\nconcert\nconcerted\nconcertedly\nconcerti\nconcerting\nconcertize\nconcertized\nconcertizes\nconcertizing\nconcertmaster\nconcertmasters\nconcertmeister\nconcertmeisters\nconcerto\nconcertos\nconcerts\nconcession\nconcessionaire\nconcessionaires\nconcessionary\nconcessions\nconcessive\nconcessively\nconch\nconcha\nconchae\nconchal\nconches\nconchies\nconchoid\nconchoids\nconchs\nconchy\nconcierge\nconcierges\nconciliar\nconciliarly\nconciliate\nconciliated\nconciliates\nconciliating\nconciliation\nconciliations\nconciliative\nconciliator\nconciliators\nconciliatory\nconcise\nconcisely\nconciseness\nconciser\nconcisest\nconcision\nconclave\nconclaves\nconclavist\nconclavists\nconclude\nconcluded\nconcluder\nconcluders\nconcludes\nconcluding\nconclusion\nconclusions\nconclusive\nconclusively\nconclusiveness\nconcoct\nconcocted\nconcocting\nconcoction\nconcoctions\nconcoctive\nconcocts\nconcomitance\nconcomitant\nconcomitantly\nconcomitants\nconcord\nconcordance\nconcordances\nconcordant\nconcordantly\nconcordat\nconcordats\nconcords\nconcourse\nconcourses\nconcrete\nconcreted\nconcretely\nconcreteness\nconcretes\nconcreting\nconcretion\nconcretionary\nconcretions\nconcretization\nconcretizations\nconcretize\nconcretized\nconcretizes\nconcretizing\nconcubine\nconcubines\nconcur\nconcurred\nconcurrence\nconcurrences\nconcurrent\nconcurrently\nconcurrents\nconcurring\nconcurs\nconcuss\nconcussed\nconcusses\nconcussing\nconcussion\nconcussions\nconcussive\ncondemn\ncondemnable\ncondemnation\ncondemnations\ncondemnatory\ncondemned\ncondemner\ncondemners\ncondemning\ncondemnor\ncondemnors\ncondemns\ncondensable\ncondensate\ncondensates\ncondensation\ncondensational\ncondensations\ncondense\ncondensed\ncondenser\ncondensers\ncondenses\ncondensing\ncondescend\ncondescended\ncondescendence\ncondescending\ncondescendingly\ncondescends\ncondescension\ncondescensions\ncondign\ncondignly\ncondiment\ncondiments\ncondition\nconditional\nconditionally\nconditionals\nconditioned\nconditioner\nconditioners\nconditioning\nconditions\ncondo\ncondole\ncondoled\ncondolence\ncondolences\ncondoler\ncondolers\ncondoles\ncondoling\ncondom\ncondominium\ncondominiums\ncondoms\ncondonable\ncondonation\ncondonations\ncondone\ncondoned\ncondoner\ncondoners\ncondones\ncondoning\ncondor\ncondores\ncondors\nconduce\nconduced\nconducer\nconducers\nconduces\nconducing\nconducive\nconduciveness\nconduct\nconductance\nconductances\nconducted\nconductibilities\nconductibility\nconductible\nconducting\nconduction\nconductions\nconductive\nconductivities\nconductivity\nconductor\nconductorial\nconductors\nconductress\nconductresses\nconducts\nconduit\nconduits\ncondylar\ncondyle\ncondyles\ncone\nconed\nconelrad\nconelrads\nconenose\nconenoses\nconepate\nconepates\nconepatl\nconepatls\ncones\nconey\nconeys\nconfab\nconfabbed\nconfabbing\nconfabs\nconfabulate\nconfabulated\nconfabulates\nconfabulating\nconfabulation\nconfabulations\nconfabulator\nconfabulators\nconfect\nconfected\nconfecting\nconfection\nconfectioner\nconfectioneries\nconfectioners\nconfectionery\nconfections\nconfects\nconfederacies\nconfederacy\nconfederalist\nconfederalists\nconfederate\nconfederated\nconfederates\nconfederating\nconfederation\nconfederations\nconfer\nconferee\nconferees\nconference\nconferences\nconferment\nconferments\nconferrable\nconferral\nconferrals\nconferred\nconferrer\nconferrers\nconferring\nconfers\nconferva\nconfervae\nconfervas\nconfess\nconfessable\nconfessed\nconfessedly\nconfesses\nconfessing\nconfession\nconfessional\nconfessionals\nconfessions\nconfessor\nconfessors\nconfetti\nconfetto\nconfidant\nconfidante\nconfidantes\nconfidants\nconfide\nconfided\nconfidence\nconfidences\nconfident\nconfidential\nconfidentiality\nconfidentially\nconfidentialness\nconfidently\nconfider\nconfiders\nconfides\nconfiding\nconfidingly\nconfiguration\nconfigurational\nconfigurationally\nconfigurations\nconfigurative\nconfigure\nconfigured\nconfigures\nconfiguring\nconfine\nconfined\nconfinement\nconfinements\nconfiner\nconfiners\nconfines\nconfining\nconfirm\nconfirmable\nconfirmation\nconfirmations\nconfirmatory\nconfirmed\nconfirmedly\nconfirming\nconfirms\nconfiscable\nconfiscate\nconfiscated\nconfiscates\nconfiscating\nconfiscation\nconfiscations\nconfiscator\nconfiscators\nconfiscatory\nconflagration\nconflagrations\nconflate\nconflated\nconflates\nconflating\nconflict\nconflicted\nconflicting\nconflictingly\nconfliction\nconflictions\nconflictive\nconflicts\nconflux\nconfluxes\nconfocal\nconform\nconformable\nconformably\nconformal\nconformance\nconformances\nconformation\nconformations\nconformed\nconformer\nconformers\nconforming\nconformism\nconformisms\nconformist\nconformists\nconformities\nconformity\nconforms\nconfound\nconfounded\nconfoundedly\nconfounder\nconfounders\nconfounding\nconfounds\nconfraternities\nconfraternity\nconfrere\nconfreres\nconfront\nconfrontation\nconfrontational\nconfrontationist\nconfrontationists\nconfrontations\nconfronted\nconfronter\nconfronters\nconfronting\nconfronts\nconfuse\nconfused\nconfusedly\nconfusedness\nconfuses\nconfusing\nconfusingly\nconfusion\nconfusional\nconfusions\nconfutation\nconfutations\nconfutative\nconfute\nconfuted\nconfuter\nconfuters\nconfutes\nconfuting\nconga\ncongaed\ncongaing\ncongas\nconge\ncongeal\ncongealed\ncongealing\ncongealment\ncongealments\ncongeals\ncongee\ncongeed\ncongeeing\ncongees\ncongener\ncongeneric\ncongeners\ncongenial\ncongeniality\ncongenially\ncongenital\ncongenitally\nconger\ncongeries\ncongers\nconges\ncongest\ncongested\ncongesting\ncongestion\ncongestions\ncongestive\ncongests\ncongii\ncongius\nconglobe\nconglobed\nconglobes\nconglobing\nconglomerate\nconglomerated\nconglomerates\nconglomeratic\nconglomerating\nconglomeration\nconglomerations\nconglomerator\nconglomerators\ncongo\ncongoes\ncongos\ncongou\ncongous\ncongratulate\ncongratulated\ncongratulates\ncongratulating\ncongratulation\ncongratulations\ncongratulator\ncongratulators\ncongratulatory\ncongregate\ncongregated\ncongregates\ncongregating\ncongregation\ncongregational\ncongregationalism\ncongregationalist\ncongregationalists\ncongregations\ncongregator\ncongregators\ncongress\ncongressed\ncongresses\ncongressing\ncongressional\ncongressionally\ncongressman\ncongressmen\ncongresswoman\ncongresswomen\ncongruence\ncongruencies\ncongruency\ncongruent\ncongruently\ncongruities\ncongruity\ncongruous\ncongruously\ncongruousness\nconi\nconic\nconical\nconically\nconicities\nconicity\nconics\nconidia\nconidial\nconidian\nconidium\nconies\nconifer\nconiferous\nconifers\nconiine\nconiines\nconin\nconine\nconines\nconing\nconins\nconium\nconiums\nconjectural\nconjecturally\nconjecture\nconjectured\nconjecturer\nconjecturers\nconjectures\nconjecturing\nconjoin\nconjoined\nconjoining\nconjoins\nconjoint\nconjointly\nconjugal\nconjugality\nconjugally\nconjugate\nconjugated\nconjugately\nconjugateness\nconjugates\nconjugating\nconjugation\nconjugational\nconjugationally\nconjugations\nconjugative\nconjunct\nconjunction\nconjunctional\nconjunctionally\nconjunctions\nconjunctiva\nconjunctivae\nconjunctival\nconjunctivas\nconjunctive\nconjunctively\nconjunctives\nconjuncts\nconjuncture\nconjunctures\nconjuration\nconjurations\nconjure\nconjured\nconjurer\nconjurers\nconjures\nconjuring\nconjuror\nconjurors\nconk\nconked\nconker\nconkers\nconking\nconks\nconky\nconn\nconnate\nconnect\nconnectable\nconnected\nconnectedly\nconnectedness\nconnecting\nconnection\nconnectional\nconnections\nconnective\nconnectively\nconnectivity\nconnector\nconnectors\nconnects\nconned\nconner\nconners\nconning\nconniption\nconniptions\nconnivance\nconnivances\nconnive\nconnived\nconniver\nconnivers\nconnives\nconniving\nconnoisseur\nconnoisseurs\nconnoisseurship\nconnoisseurships\nconnotation\nconnotational\nconnotations\nconnotative\nconnotatively\nconnote\nconnoted\nconnotes\nconnoting\nconns\nconnubial\nconnubiality\nconnubially\nconodont\nconodonts\nconoid\nconoidal\nconoids\nconquer\nconquered\nconquering\nconqueror\nconquerors\nconquers\nconquest\nconquests\nconquian\nconquians\nconquistador\nconquistadores\nconquistadors\ncons\nconsanguineous\nconsanguineously\nconsanguinities\nconsanguinity\nconscience\nconscienceless\nconsciences\nconscientious\nconscientiously\nconscientiousness\nconscionable\nconscious\nconsciously\nconsciousness\nconscript\nconscripted\nconscripting\nconscription\nconscriptions\nconscripts\nconsecrate\nconsecrated\nconsecrates\nconsecrating\nconsecration\nconsecrations\nconsecrative\nconsecrator\nconsecrators\nconsecratory\nconsecutive\nconsecutively\nconsecutiveness\nconsensual\nconsensually\nconsensus\nconsensuses\nconsent\nconsented\nconsenting\nconsents\nconsequence\nconsequences\nconsequent\nconsequential\nconsequentiality\nconsequentially\nconsequentialness\nconsequently\nconsequents\nconservancies\nconservancy\nconservation\nconservational\nconservationist\nconservationists\nconservations\nconservatism\nconservative\nconservatively\nconservativeness\nconservatives\nconservator\nconservatories\nconservators\nconservatory\nconserve\nconserved\nconserver\nconservers\nconserves\nconserving\nconsider\nconsiderable\nconsiderably\nconsiderate\nconsiderately\nconsiderateness\nconsideration\nconsiderations\nconsidered\nconsidering\nconsiders\nconsign\nconsignable\nconsignation\nconsignations\nconsigned\nconsignee\nconsignees\nconsigning\nconsignment\nconsignments\nconsignor\nconsignors\nconsigns\nconsist\nconsisted\nconsistence\nconsistencies\nconsistency\nconsistent\nconsistently\nconsisting\nconsists\nconsol\nconsolable\nconsolation\nconsolations\nconsolatory\nconsole\nconsoled\nconsoler\nconsolers\nconsoles\nconsolidate\nconsolidated\nconsolidates\nconsolidating\nconsolidation\nconsolidations\nconsolidator\nconsolidators\nconsoling\nconsols\nconsomme\nconsommes\nconsonance\nconsonances\nconsonancies\nconsonancy\nconsonant\nconsonantal\nconsonantly\nconsonants\nconsort\nconsorted\nconsortia\nconsorting\nconsortium\nconsorts\nconspectus\nconspectuses\nconspicuous\nconspicuously\nconspicuousness\nconspiracies\nconspiracy\nconspirator\nconspiratorial\nconspiratorially\nconspirators\nconspire\nconspired\nconspires\nconspiring\nconstable\nconstables\nconstabularies\nconstabulary\nconstancy\nconstant\nconstantly\nconstants\nconstellation\nconstellations\nconsternate\nconsternated\nconsternates\nconsternating\nconsternation\nconsternations\nconstipate\nconstipated\nconstipates\nconstipating\nconstipation\nconstipations\nconstituencies\nconstituency\nconstituent\nconstituently\nconstituents\nconstitute\nconstituted\nconstitutes\nconstituting\nconstitution\nconstitutional\nconstitutionalism\nconstitutionalisms\nconstitutionalist\nconstitutionalists\nconstitutionalities\nconstitutionality\nconstitutionally\nconstitutionals\nconstitutions\nconstitutive\nconstitutively\nconstrain\nconstrained\nconstrainedly\nconstraining\nconstrains\nconstraint\nconstraints\nconstrict\nconstricted\nconstricting\nconstriction\nconstrictions\nconstrictive\nconstrictor\nconstrictors\nconstricts\nconstruable\nconstruct\nconstructed\nconstructible\nconstructing\nconstruction\nconstructional\nconstructionally\nconstructionist\nconstructionists\nconstructions\nconstructive\nconstructively\nconstructiveness\nconstructor\nconstructors\nconstructs\nconstrue\nconstrued\nconstrues\nconstruing\nconsubstantial\nconsubstantiation\nconsul\nconsular\nconsulate\nconsulates\nconsuls\nconsulship\nconsulships\nconsult\nconsultant\nconsultants\nconsultation\nconsultations\nconsultative\nconsulted\nconsulter\nconsulters\nconsulting\nconsultive\nconsultor\nconsultors\nconsults\nconsumable\nconsume\nconsumed\nconsumedly\nconsumer\nconsumerism\nconsumerist\nconsumerists\nconsumers\nconsumes\nconsuming\nconsummate\nconsummated\nconsummately\nconsummates\nconsummating\nconsummation\nconsummations\nconsummative\nconsummator\nconsummators\nconsummatory\nconsumption\nconsumptions\nconsumptive\nconsumptively\nconsumptiveness\nconsumptives\ncontact\ncontacted\ncontacting\ncontacts\ncontagia\ncontagion\ncontagions\ncontagious\ncontagiously\ncontagiousness\ncontain\ncontainable\ncontained\ncontainer\ncontainers\ncontaining\ncontainment\ncontainments\ncontains\ncontaminant\ncontaminants\ncontaminate\ncontaminated\ncontaminates\ncontaminating\ncontamination\ncontaminations\ncontaminative\ncontaminator\ncontaminators\nconte\ncontemn\ncontemned\ncontemner\ncontemners\ncontemning\ncontemns\ncontemplate\ncontemplated\ncontemplates\ncontemplating\ncontemplation\ncontemplations\ncontemplative\ncontemplatively\ncontemplativeness\ncontemplator\ncontemplators\ncontemporaneous\ncontemporaneously\ncontemporaneousness\ncontemporaries\ncontemporarily\ncontemporary\ncontempt\ncontemptibility\ncontemptible\ncontemptibleness\ncontemptibly\ncontempts\ncontemptuous\ncontemptuously\ncontemptuousness\ncontend\ncontended\ncontender\ncontenders\ncontending\ncontends\ncontent\ncontented\ncontentedly\ncontentedness\ncontenting\ncontention\ncontentions\ncontentious\ncontentiously\ncontentiousness\ncontentment\ncontentments\ncontents\nconterminous\ncontes\ncontest\ncontestable\ncontestably\ncontestant\ncontestants\ncontestation\ncontestations\ncontested\ncontester\ncontesters\ncontesting\ncontests\ncontext\ncontexts\ncontextual\ncontextually\ncontexture\ncontextures\ncontiguities\ncontiguity\ncontiguous\ncontiguously\ncontiguousness\ncontinence\ncontinent\ncontinental\ncontinentally\ncontinentals\ncontinently\ncontinents\ncontingencies\ncontingency\ncontingent\ncontingently\ncontingents\ncontinua\ncontinual\ncontinually\ncontinuance\ncontinuances\ncontinuant\ncontinuants\ncontinuation\ncontinuations\ncontinuative\ncontinuator\ncontinuators\ncontinue\ncontinued\ncontinuer\ncontinuers\ncontinues\ncontinuing\ncontinuingly\ncontinuities\ncontinuity\ncontinuo\ncontinuos\ncontinuous\ncontinuously\ncontinuousness\ncontinuum\nconto\ncontort\ncontorted\ncontorting\ncontortion\ncontortionist\ncontortionists\ncontortions\ncontortive\ncontorts\ncontos\ncontour\ncontoured\ncontouring\ncontours\ncontra\ncontraband\ncontrabandist\ncontrabandists\ncontrabass\ncontrabassoon\ncontrabassoons\ncontraception\ncontraceptions\ncontraceptive\ncontraceptives\ncontract\ncontracted\ncontractibility\ncontractible\ncontractile\ncontractility\ncontracting\ncontraction\ncontractional\ncontractions\ncontractive\ncontractor\ncontractors\ncontracts\ncontractual\ncontractually\ncontradict\ncontradictable\ncontradicted\ncontradicting\ncontradiction\ncontradictions\ncontradictor\ncontradictorily\ncontradictoriness\ncontradictors\ncontradictory\ncontradicts\ncontradistinction\ncontradistinctions\ncontradistinctive\ncontradistinctively\ncontrail\ncontrails\ncontralto\ncontraltos\ncontraption\ncontraptions\ncontrapuntal\ncontrapuntally\ncontraries\ncontrarieties\ncontrariety\ncontrarily\ncontrariness\ncontrariwise\ncontrary\ncontrast\ncontrastable\ncontrasted\ncontrasting\ncontrastive\ncontrastively\ncontrasts\ncontravene\ncontravened\ncontravener\ncontraveners\ncontravenes\ncontravening\ncontravention\ncontraventions\ncontretemps\ncontribute\ncontributed\ncontributes\ncontributing\ncontribution\ncontributions\ncontributive\ncontributively\ncontributor\ncontributors\ncontributory\ncontrite\ncontritely\ncontriteness\ncontrition\ncontritions\ncontrivance\ncontrivances\ncontrive\ncontrived\ncontriver\ncontrivers\ncontrives\ncontriving\ncontrol\ncontrollability\ncontrollable\ncontrollably\ncontrolled\ncontroller\ncontrollers\ncontrollership\ncontrollerships\ncontrolling\ncontrols\ncontroversial\ncontroversialist\ncontroversialists\ncontroversially\ncontroversies\ncontroversy\ncontrovert\ncontroverted\ncontroverter\ncontroverters\ncontrovertible\ncontroverting\ncontroverts\ncontumacies\ncontumacious\ncontumaciously\ncontumacy\ncontumelies\ncontumelious\ncontumeliously\ncontumely\ncontuse\ncontused\ncontuses\ncontusing\ncontusion\ncontusions\nconundrum\nconundrums\nconus\nconvalesce\nconvalesced\nconvalescence\nconvalescences\nconvalescent\nconvalescents\nconvalesces\nconvalescing\nconvect\nconvected\nconvecting\nconvection\nconvectional\nconvections\nconvective\nconvector\nconvectors\nconvects\nconvene\nconvened\nconvener\nconveners\nconvenes\nconvenience\nconveniences\nconvenient\nconveniently\nconvening\nconvent\nconvented\nconventicle\nconventicler\nconventiclers\nconventicles\nconventing\nconvention\nconventional\nconventionalism\nconventionalist\nconventionalists\nconventionalities\nconventionality\nconventionalization\nconventionalizations\nconventionalize\nconventionalized\nconventionalizes\nconventionalizing\nconventionally\nconventioneer\nconventioneers\nconventions\nconvents\nconventual\nconverge\nconverged\nconvergence\nconvergencies\nconvergency\nconvergent\nconverges\nconverging\nconversable\nconversant\nconversantly\nconversation\nconversational\nconversationalist\nconversationalists\nconversationally\nconversations\nconverse\nconversed\nconversely\nconverser\nconversers\nconverses\nconversing\nconversion\nconversional\nconversions\nconvert\nconverted\nconverter\nconverters\nconvertibilities\nconvertibility\nconvertible\nconvertibleness\nconvertibles\nconvertibly\nconverting\nconvertor\nconvertors\nconverts\nconvex\nconvexes\nconvexities\nconvexity\nconvexly\nconvexness\nconvey\nconveyance\nconveyancer\nconveyancers\nconveyances\nconveyancing\nconveyed\nconveyer\nconveyers\nconveying\nconveyor\nconveyors\nconveys\nconvict\nconvicted\nconvicting\nconviction\nconvictions\nconvicts\nconvince\nconvinced\nconvincer\nconvincers\nconvinces\nconvincing\nconvincingly\nconvincingness\nconvivial\nconvivialities\nconviviality\nconvivially\nconvocation\nconvocational\nconvocations\nconvoke\nconvoked\nconvoker\nconvokers\nconvokes\nconvoking\nconvolute\nconvoluted\nconvolutes\nconvoluting\nconvolution\nconvolutional\nconvolutions\nconvolve\nconvolved\nconvolves\nconvolving\nconvoy\nconvoyed\nconvoying\nconvoys\nconvulse\nconvulsed\nconvulses\nconvulsing\nconvulsion\nconvulsionary\nconvulsions\nconvulsive\nconvulsively\nconvulsiveness\ncony\ncoo\ncooch\ncooches\ncooed\ncooee\ncooeed\ncooeeing\ncooees\ncooer\ncooers\ncooey\ncooeyed\ncooeying\ncooeys\ncoof\ncoofs\ncooing\ncooingly\ncook\ncookable\ncookbook\ncookbooks\ncooked\ncooker\ncookeries\ncookers\ncookery\ncookey\ncookeys\ncookie\ncookies\ncooking\ncookings\ncookless\ncookout\ncookouts\ncooks\ncookshop\ncookshops\ncookware\ncookwares\ncooky\ncool\ncoolant\ncoolants\ncooled\ncooler\ncoolers\ncoolest\ncoolie\ncoolies\ncooling\ncoolish\ncoolly\ncoolness\ncoolnesses\ncools\ncooly\ncoomb\ncoombe\ncoombes\ncoombs\ncoon\ncooncan\ncooncans\ncoons\ncoonskin\ncoonskins\ncoontie\ncoonties\ncoop\ncooped\ncooper\ncooperage\ncooperages\ncooperate\ncooperated\ncooperates\ncooperating\ncooperation\ncooperations\ncooperative\ncooperatively\ncooperativeness\ncooperatives\ncooperator\ncooperators\ncoopered\ncooperies\ncoopering\ncoopers\ncoopery\ncooping\ncoops\ncoopt\ncoopted\ncoopting\ncooption\ncooptions\ncoopts\ncoordinate\ncoordinated\ncoordinately\ncoordinates\ncoordinating\ncoordination\ncoordinations\ncoordinator\ncoordinators\ncoos\ncoot\ncootie\ncooties\ncoots\ncop\ncopaiba\ncopaibas\ncopal\ncopalm\ncopalms\ncopals\ncoparent\ncoparents\ncopartner\ncopartners\ncopartnership\ncopartnerships\ncopastor\ncopastors\ncopatron\ncopatrons\ncope\ncopeck\ncopecks\ncoped\ncopemate\ncopemates\ncopen\ncopens\ncopepod\ncopepods\ncoper\ncopers\ncopes\ncopied\ncopier\ncopiers\ncopies\ncopihue\ncopihues\ncopilot\ncopilots\ncoping\ncopings\ncopious\ncopiously\ncopiousness\ncoplanar\ncoplot\ncoplots\ncoplotted\ncoplotting\ncopolymer\ncopolymerization\ncopolymerizations\ncopolymerize\ncopolymerized\ncopolymerizes\ncopolymerizing\ncopolymers\ncopped\ncopper\ncopperah\ncopperahs\ncopperas\ncopperases\ncoppered\ncopperhead\ncopperheads\ncoppering\ncopperplate\ncopperplates\ncoppers\ncoppersmith\ncoppersmiths\ncoppery\ncoppice\ncoppiced\ncoppices\ncopping\ncoppra\ncoppras\ncopra\ncoprah\ncoprahs\ncopras\ncopremia\ncopremias\ncopremic\ncops\ncopse\ncopses\ncopter\ncopters\ncopula\ncopulae\ncopular\ncopulas\ncopulate\ncopulated\ncopulates\ncopulating\ncopulation\ncopulations\ncopulative\ncopulatively\ncopy\ncopybook\ncopybooks\ncopyboy\ncopyboys\ncopycat\ncopycats\ncopycatted\ncopycatting\ncopydesk\ncopydesks\ncopyhold\ncopyholds\ncopying\ncopyist\ncopyists\ncopyreader\ncopyreaders\ncopyright\ncopyrighted\ncopyrighter\ncopyrighters\ncopyrighting\ncopyrights\ncopywriter\ncopywriters\ncoquet\ncoquetries\ncoquetry\ncoquets\ncoquette\ncoquetted\ncoquettes\ncoquetting\ncoquettish\ncoquettishly\ncoquettishness\ncoquille\ncoquilles\ncoquina\ncoquinas\ncoquito\ncoquitos\ncor\ncoracle\ncoracles\ncoracoid\ncoracoids\ncoral\ncorals\ncoranto\ncorantoes\ncorantos\ncorban\ncorbans\ncorbeil\ncorbeils\ncorbel\ncorbeled\ncorbeling\ncorbelled\ncorbelling\ncorbels\ncorbie\ncorbies\ncorbina\ncorbinas\ncorby\ncord\ncordage\ncordages\ncordate\ncorded\ncorder\ncorders\ncordial\ncordiality\ncordially\ncordialness\ncordials\ncordillera\ncordilleras\ncording\ncordite\ncordites\ncordless\ncordlike\ncordoba\ncordobas\ncordon\ncordoned\ncordoning\ncordons\ncordovan\ncordovans\ncords\ncorduroy\ncorduroyed\ncorduroying\ncorduroys\ncordwain\ncordwains\ncordwood\ncordwoods\ncore\ncored\ncoredeem\ncoredeemed\ncoredeeming\ncoredeems\ncoreign\ncoreigns\ncorelate\ncorelated\ncorelates\ncorelating\ncoreless\ncoremia\ncoremium\ncorer\ncorers\ncores\ncorespondent\ncorespondents\ncorf\ncorgi\ncorgis\ncoria\ncoriander\ncorianders\ncoring\ncorium\ncork\ncorkage\ncorkages\ncorkboard\ncorked\ncorker\ncorkers\ncorkier\ncorkiest\ncorking\ncorklike\ncorks\ncorkscrew\ncorkscrews\ncorkwood\ncorkwoods\ncorky\ncorm\ncormel\ncormels\ncormlike\ncormoid\ncormorant\ncormorants\ncormous\ncorms\ncorn\ncornball\ncornballs\ncorncake\ncorncakes\ncorncob\ncorncobs\ncorncrib\ncorncribs\ncornea\ncorneal\ncorneas\ncorned\ncornel\ncornels\ncorneous\ncorner\ncornered\ncornering\ncorners\ncornerstone\ncornerstones\ncornet\ncornetcies\ncornetcy\ncornetist\ncornetists\ncornets\ncornettist\ncornettists\ncornfed\ncornfield\ncornfields\ncornflower\ncornflowers\ncornhusk\ncornhusking\ncornhusks\ncornice\ncorniced\ncornices\ncorniche\ncorniches\ncornicing\ncornicle\ncornicles\ncornier\ncorniest\ncornily\ncorning\ncornmeal\ncornmeals\ncorns\ncornstalk\ncornstalks\ncornstarch\ncornu\ncornua\ncornual\ncornucopia\ncornucopias\ncornus\ncornuses\ncornute\ncornuted\ncornuto\ncornutos\ncorny\ncorodies\ncorody\ncorolla\ncorollaries\ncorollary\ncorollas\ncorollate\ncorona\ncoronach\ncoronachs\ncoronae\ncoronal\ncoronals\ncoronaries\ncoronary\ncoronas\ncoronation\ncoronations\ncoronel\ncoronels\ncoroner\ncoroners\ncoronet\ncoronets\ncorotate\ncorotated\ncorotates\ncorotating\ncorpora\ncorporal\ncorporally\ncorporals\ncorporate\ncorporately\ncorporation\ncorporations\ncorporatist\ncorporatists\ncorporative\ncorporativism\ncorporator\ncorporators\ncorporeal\ncorporeality\ncorporeally\ncorporealness\ncorps\ncorpse\ncorpses\ncorpsman\ncorpsmen\ncorpulence\ncorpulency\ncorpulent\ncorpulently\ncorpus\ncorpuscle\ncorpuscles\ncorrade\ncorraded\ncorrades\ncorrading\ncorral\ncorralled\ncorralling\ncorrals\ncorrect\ncorrectable\ncorrected\ncorrecter\ncorrectest\ncorrecting\ncorrection\ncorrectional\ncorrections\ncorrective\ncorrectively\ncorrectly\ncorrectness\ncorrector\ncorrectors\ncorrects\ncorrelate\ncorrelated\ncorrelates\ncorrelating\ncorrelation\ncorrelational\ncorrelations\ncorrelative\ncorrelatively\ncorrelatives\ncorrespond\ncorresponded\ncorrespondence\ncorrespondences\ncorrespondent\ncorrespondents\ncorresponding\ncorrespondingly\ncorresponds\ncorrida\ncorridas\ncorridor\ncorridors\ncorrie\ncorries\ncorrigibility\ncorrigible\ncorrigibly\ncorrival\ncorrivals\ncorroborate\ncorroborated\ncorroborates\ncorroborating\ncorroboration\ncorroborations\ncorroborative\ncorroboratively\ncorroborator\ncorroborators\ncorroboratory\ncorrode\ncorroded\ncorrodes\ncorrodible\ncorrodies\ncorroding\ncorrody\ncorrosion\ncorrosions\ncorrosive\ncorrosively\ncorrosiveness\ncorrosives\ncorrugate\ncorrugated\ncorrugates\ncorrugating\ncorrugation\ncorrugations\ncorrupt\ncorrupted\ncorrupter\ncorrupters\ncorruptest\ncorruptibility\ncorruptible\ncorrupting\ncorruption\ncorruptions\ncorruptive\ncorruptly\ncorruptness\ncorruptor\ncorruptors\ncorrupts\ncorsac\ncorsacs\ncorsage\ncorsages\ncorsair\ncorsairs\ncorse\ncorselet\ncorselets\ncorses\ncorset\ncorseted\ncorseting\ncorsets\ncorslet\ncorslets\ncortege\ncorteges\ncortex\ncortexes\ncortical\ncortically\ncortices\ncortin\ncortins\ncortisol\ncortisols\ncortisone\ncorundum\ncorundums\ncoruscate\ncoruscated\ncoruscates\ncoruscating\ncoruscation\ncoruscations\ncorvee\ncorvees\ncorves\ncorvet\ncorvets\ncorvette\ncorvettes\ncorvina\ncorvinas\ncorvine\ncory\ncorymb\ncorymbed\ncorymbs\ncoryphee\ncoryphees\ncoryza\ncoryzal\ncoryzas\ncos\ncosec\ncosecant\ncosecants\ncosecs\ncoses\ncoset\ncosets\ncosey\ncoseys\ncosh\ncoshed\ncosher\ncoshered\ncoshering\ncoshers\ncoshes\ncoshing\ncosie\ncosier\ncosies\ncosiest\ncosign\ncosignatories\ncosignatory\ncosigned\ncosigner\ncosigners\ncosigning\ncosigns\ncosily\ncosine\ncosines\ncosiness\ncosinesses\ncosmetic\ncosmetically\ncosmetician\ncosmeticians\ncosmetics\ncosmetologist\ncosmetologists\ncosmetology\ncosmic\ncosmical\ncosmically\ncosmism\ncosmisms\ncosmist\ncosmists\ncosmogonies\ncosmogonist\ncosmogonists\ncosmogony\ncosmographer\ncosmographers\ncosmographic\ncosmographies\ncosmography\ncosmological\ncosmologically\ncosmologist\ncosmologists\ncosmology\ncosmonaut\ncosmonauts\ncosmopolitan\ncosmopolitanism\ncosmopolitans\ncosmopolite\ncosmopolites\ncosmos\ncosmoses\ncosponsor\ncosponsored\ncosponsoring\ncosponsors\ncosponsorship\ncosponsorships\ncoss\ncossack\ncossacks\ncosset\ncosseted\ncosseting\ncossets\ncost\ncosta\ncostae\ncostal\ncostar\ncostard\ncostards\ncostarred\ncostarring\ncostars\ncostate\ncosted\ncoster\ncosters\ncosting\ncostive\ncostively\ncostiveness\ncostless\ncostlier\ncostliest\ncostliness\ncostly\ncostmaries\ncostmary\ncostrel\ncostrels\ncosts\ncostume\ncostumed\ncostumer\ncostumers\ncostumes\ncostumey\ncostumier\ncostumiers\ncostuming\ncosy\ncot\ncotan\ncotangent\ncotangents\ncotans\ncote\ncoteau\ncoteaux\ncoted\ncotenant\ncotenants\ncoterie\ncoteries\ncotes\ncothurn\ncothurni\ncothurns\ncotidal\ncotillion\ncotillions\ncotillon\ncotillons\ncoting\ncotquean\ncotqueans\ncots\ncotta\ncottae\ncottage\ncottager\ncottagers\ncottages\ncottagey\ncottar\ncottars\ncottas\ncotter\ncotters\ncottier\ncottiers\ncotton\ncottoned\ncottoning\ncottonmouth\ncottonmouths\ncottons\ncottonseed\ncottonseeds\ncottontail\ncottontails\ncottonwood\ncottonwoods\ncottony\ncotyledon\ncotyledonary\ncotyledons\ncotyloid\ncotype\ncotypes\ncouch\ncouchant\ncouched\ncoucher\ncouchers\ncouches\ncouching\ncouchings\ncoude\ncougar\ncougars\ncough\ncoughed\ncougher\ncoughers\ncoughing\ncoughs\ncould\ncouldest\ncouldst\ncoulee\ncoulees\ncoulisse\ncoulisses\ncouloir\ncouloirs\ncoulomb\ncoulombs\ncoulter\ncoulters\ncoumaric\ncoumarin\ncoumarins\ncoumarou\ncoumarous\ncouncil\ncouncillor\ncouncillors\ncouncilman\ncouncilmen\ncouncilor\ncouncilors\ncouncils\ncouncilwoman\ncouncilwomen\ncounsel\ncounseled\ncounseling\ncounselled\ncounselling\ncounsellor\ncounsellors\ncounselor\ncounselors\ncounselorship\ncounselorships\ncounsels\ncount\ncountable\ncountdown\ncountdowns\ncounted\ncountenance\ncountenanced\ncountenances\ncountenancing\ncounter\ncounteract\ncounteracted\ncounteracting\ncounteraction\ncounteractions\ncounteractive\ncounteracts\ncounterattack\ncounterattacked\ncounterattacking\ncounterattacks\ncounterbalance\ncounterbalanced\ncounterbalances\ncounterbalancing\ncounterblow\ncounterblows\ncountercharge\ncountercharges\ncounterclaim\ncounterclaimed\ncounterclaiming\ncounterclaims\ncounterclockwise\ncounterculture\ncountered\ncounterfeit\ncounterfeited\ncounterfeiter\ncounterfeiters\ncounterfeiting\ncounterfeits\ncountering\ncounterintelligence\ncounterirritant\ncounterirritants\ncounterman\ncountermand\ncountermanded\ncountermanding\ncountermands\ncountermarch\ncountermarched\ncountermarches\ncountermarching\ncountermeasure\ncountermeasures\ncountermen\ncountermove\ncountermoved\ncountermovement\ncountermovements\ncountermoves\ncountermoving\ncounteroffensive\ncounteroffensives\ncounteroffer\ncounteroffers\ncounterpane\ncounterpanes\ncounterpart\ncounterparts\ncounterplot\ncounterplots\ncounterplotted\ncounterplotting\ncounterpoint\ncounterpoints\ncounterpoise\ncounterpoised\ncounterpoises\ncounterpoising\ncounterproductive\ncounterproposal\ncounterproposals\ncounterrevolution\ncounterrevolutionaries\ncounterrevolutionary\ncounterrevolutionist\ncounterrevolutionists\ncounterrevolutions\ncounters\ncountersign\ncountersignature\ncountersignatures\ncountersigned\ncountersigning\ncountersigns\ncountersink\ncountersinking\ncountersinks\ncounterspies\ncounterspy\ncountersunk\ncountertenor\ncountertenors\ncounterweight\ncounterweighted\ncounterweighting\ncounterweights\ncountess\ncountesses\ncountian\ncountians\ncounties\ncounting\ncountinghouse\ncountinghouses\ncountless\ncountries\ncountrified\ncountry\ncountryman\ncountrymen\ncountryside\ncountrysides\ncountrywide\ncounts\ncounty\ncoup\ncoupe\ncouped\ncoupes\ncouping\ncouple\ncoupled\ncoupler\ncouplers\ncouples\ncouplet\ncouplets\ncoupling\ncouplings\ncoupon\ncoupons\ncoups\ncourage\ncourageous\ncourageously\ncourageousness\ncourages\ncourant\ncourante\ncourantes\ncouranto\ncourantoes\ncourantos\ncourants\ncourier\ncouriers\ncourlan\ncourlans\ncourse\ncoursed\ncourser\ncoursers\ncourses\ncoursing\ncoursings\ncourt\ncourted\ncourteous\ncourteously\ncourteousness\ncourtesan\ncourtesans\ncourtesied\ncourtesies\ncourtesy\ncourtesying\ncourthouse\ncourthouses\ncourtier\ncourtiers\ncourting\ncourtlier\ncourtliest\ncourtliness\ncourtly\ncourtroom\ncourtrooms\ncourts\ncourtship\ncourtships\ncourtyard\ncourtyards\ncouscous\ncouscouses\ncousin\ncousinly\ncousinries\ncousinry\ncousins\ncouteau\ncouteaux\ncouter\ncouters\ncouth\ncouther\ncouthest\ncouthie\ncouthier\ncouthiest\ncouths\ncouture\ncoutures\ncouturier\ncouturiers\ncouvade\ncouvades\ncovalent\ncove\ncoved\ncoven\ncovenant\ncovenantal\ncovenanted\ncovenanter\ncovenanters\ncovenanting\ncovenants\ncovens\ncover\ncoverage\ncoverages\ncoverall\ncoveralls\ncovered\ncoverer\ncoverers\ncovering\ncoverings\ncoverless\ncoverlet\ncoverlets\ncoverlid\ncoverlids\ncovers\ncovert\ncovertly\ncovertness\ncoverts\ncoves\ncovet\ncovetable\ncoveted\ncoveter\ncoveters\ncoveting\ncovetous\ncovetously\ncovetousness\ncovets\ncovey\ncoveys\ncovin\ncoving\ncovings\ncow\ncowage\ncowages\ncoward\ncowardice\ncowardliness\ncowardly\ncowards\ncowbane\ncowbanes\ncowbell\ncowbells\ncowberries\ncowberry\ncowbind\ncowbinds\ncowbird\ncowbirds\ncowboy\ncowboys\ncowcatcher\ncowcatchers\ncowed\ncowedly\ncower\ncowered\ncowering\ncowers\ncowfish\ncowfishes\ncowgirl\ncowgirls\ncowhage\ncowhages\ncowhand\ncowhands\ncowherb\ncowherbs\ncowherd\ncowherds\ncowhide\ncowhided\ncowhides\ncowhiding\ncowier\ncowiest\ncowing\ncowinner\ncowinners\ncowkine\ncowl\ncowled\ncowlick\ncowlicks\ncowling\ncowlings\ncowls\ncowman\ncowmen\ncoworker\ncoworkers\ncowpat\ncowpats\ncowpea\ncowpeas\ncowpoke\ncowpokes\ncowpox\ncowpoxes\ncowpuncher\ncowpunchers\ncowrie\ncowries\ncowry\ncows\ncowshed\ncowsheds\ncowskin\ncowskins\ncowslip\ncowslips\ncowy\ncox\ncoxa\ncoxae\ncoxal\ncoxalgia\ncoxalgias\ncoxalgic\ncoxalgies\ncoxalgy\ncoxcomb\ncoxcombical\ncoxcombry\ncoxcombs\ncoxed\ncoxes\ncoxing\ncoxswain\ncoxswained\ncoxswaining\ncoxswains\ncoy\ncoyed\ncoyer\ncoyest\ncoying\ncoyish\ncoyly\ncoyness\ncoynesses\ncoyote\ncoyotes\ncoypou\ncoypous\ncoypu\ncoypus\ncoys\ncoz\ncozen\ncozenage\ncozenages\ncozened\ncozener\ncozeners\ncozening\ncozens\ncozes\ncozey\ncozeys\ncozie\ncozier\ncozies\ncoziest\ncozily\ncoziness\ncozinesses\ncozy\ncozzes\ncraal\ncraaled\ncraaling\ncraals\ncrab\ncrabbed\ncrabbedly\ncrabbedness\ncrabber\ncrabbers\ncrabbier\ncrabbiest\ncrabbing\ncrabby\ncrabgrass\ncrabgrasses\ncrabs\ncrabwise\ncrack\ncrackdown\ncrackdowns\ncracked\ncracker\ncrackerjack\ncrackerjacks\ncrackers\ncracking\ncrackings\ncrackle\ncrackled\ncracklees\ncracklier\ncrackliest\ncrackling\ncracklings\ncrackly\ncracknel\ncracknels\ncrackpot\ncrackpots\ncracks\ncrackup\ncrackups\ncracky\ncradle\ncradled\ncradler\ncradlers\ncradles\ncradlesong\ncradlesongs\ncradling\ncraft\ncrafted\ncraftier\ncraftiest\ncraftily\ncraftiness\ncrafting\ncrafts\ncraftsman\ncraftsmanship\ncraftsmen\ncrafty\ncrag\ncragged\ncraggier\ncraggiest\ncraggily\ncraggy\ncrags\ncragsman\ncragsmen\ncrake\ncrakes\ncram\ncrambe\ncrambes\ncrambo\ncramboes\ncrambos\ncrammed\ncrammer\ncrammers\ncramming\ncramoisies\ncramoisy\ncramp\ncramped\ncramping\ncrampit\ncrampits\ncrampon\ncrampons\ncrampoon\ncrampoons\ncramps\ncrams\ncranberries\ncranberry\ncranch\ncranched\ncranches\ncranching\ncrane\ncraned\ncranes\ncrania\ncranial\ncranially\ncraniate\ncraniates\ncraning\ncranium\ncraniums\ncrank\ncrankcase\ncrankcases\ncranked\ncranker\ncrankest\ncrankier\ncrankiest\ncrankily\ncrankiness\ncranking\ncrankle\ncrankled\ncrankles\ncrankling\ncrankly\ncrankous\ncrankpin\ncrankpins\ncranks\ncrankshaft\ncrankshafts\ncranky\ncrannied\ncrannies\ncrannog\ncrannoge\ncrannoges\ncrannogs\ncranny\ncrap\ncrape\ncraped\ncraping\ncrapped\ncrapper\ncrappers\ncrappie\ncrappier\ncrappies\ncrappiest\ncrapping\ncrappy\ncraps\ncrapshooter\ncrapshooters\ncrases\ncrash\ncrashed\ncrasher\ncrashers\ncrashes\ncrashing\ncrasis\ncrass\ncrasser\ncrassest\ncrassly\ncrassness\ncratch\ncratches\ncrate\ncrated\ncrater\ncratered\ncratering\ncraters\ncrates\ncrating\ncraton\ncratonic\ncratons\ncraunch\ncraunched\ncraunches\ncraunching\ncravat\ncravats\ncrave\ncraved\ncraven\ncravened\ncravening\ncravenly\ncravenness\ncravens\ncraver\ncravers\ncraves\ncraving\ncravings\ncraw\ncrawdad\ncrawdads\ncrawfish\ncrawfished\ncrawfishes\ncrawfishing\ncrawl\ncrawled\ncrawler\ncrawlers\ncrawlier\ncrawliest\ncrawling\ncrawls\ncrawlway\ncrawlways\ncrawly\ncraws\ncrayfish\ncrayfishes\ncrayon\ncrayoned\ncrayoning\ncrayonist\ncrayonists\ncrayons\ncraze\ncrazed\ncrazes\ncrazier\ncraziest\ncrazily\ncraziness\ncrazing\ncrazy\ncreak\ncreaked\ncreakier\ncreakiest\ncreakily\ncreaking\ncreaks\ncreaky\ncream\ncreamed\ncreamer\ncreameries\ncreamers\ncreamery\ncreamier\ncreamiest\ncreamily\ncreaminess\ncreaming\ncreams\ncreamy\ncrease\ncreased\ncreaser\ncreasers\ncreases\ncreasier\ncreasiest\ncreasing\ncreasy\ncreate\ncreated\ncreates\ncreatin\ncreatine\ncreatines\ncreating\ncreatins\ncreation\ncreations\ncreative\ncreatively\ncreativeness\ncreativity\ncreator\ncreators\ncreatural\ncreature\ncreatures\ncreche\ncreches\ncredal\ncredence\ncredences\ncredenda\ncredent\ncredential\ncredentials\ncredenza\ncredenzas\ncredibility\ncredible\ncredibly\ncredit\ncreditability\ncreditable\ncreditably\ncredited\ncrediting\ncreditor\ncreditors\ncredits\ncreditworthiness\ncreditworthy\ncredo\ncredos\ncredulity\ncredulous\ncredulously\ncredulousness\ncreed\ncreedal\ncreeds\ncreek\ncreeks\ncreel\ncreels\ncreep\ncreepage\ncreepages\ncreeper\ncreepers\ncreepie\ncreepier\ncreepies\ncreepiest\ncreepily\ncreepiness\ncreeping\ncreeps\ncreepy\ncreese\ncreeses\ncreesh\ncreeshed\ncreeshes\ncreeshing\ncremains\ncremate\ncremated\ncremates\ncremating\ncremation\ncremations\ncremator\ncrematoria\ncrematories\ncrematorium\ncrematoriums\ncremators\ncrematory\ncreme\ncremes\ncrenate\ncrenated\ncrenel\ncreneled\ncreneling\ncrenelle\ncrenelled\ncrenelles\ncrenelling\ncrenels\ncreodont\ncreodonts\ncreole\ncreoles\ncreosol\ncreosols\ncreosote\ncreosoted\ncreosotes\ncreosoting\ncrepe\ncreped\ncrepeiest\ncrepes\ncrepey\ncrepier\ncrepiest\ncreping\ncrept\ncrepy\ncrescendo\ncrescendoes\ncrescendos\ncrescent\ncrescentic\ncrescents\ncrescive\ncresol\ncresols\ncress\ncresses\ncresset\ncressets\ncrest\ncrestal\ncrested\ncrestfallen\ncrestfallenness\ncresting\ncrestings\ncrestless\ncrests\ncresyl\ncresylic\ncresyls\ncretaceous\ncretic\ncretics\ncretin\ncretinism\ncretinous\ncretins\ncretonne\ncretonnes\ncrevalle\ncrevalles\ncrevasse\ncrevassed\ncrevasses\ncrevassing\ncrevice\ncreviced\ncrevices\ncrew\ncrewed\ncrewel\ncrewels\ncrewelwork\ncrewing\ncrewless\ncrewman\ncrewmen\ncrews\ncrib\ncribbage\ncribbages\ncribbed\ncribber\ncribbers\ncribbing\ncribbings\ncribbled\ncribrous\ncribs\ncribwork\ncribworks\ncricetid\ncricetids\ncrick\ncricked\ncricket\ncricketed\ncricketer\ncricketers\ncricketing\ncrickets\ncricking\ncricks\ncricoid\ncricoids\ncried\ncrier\ncriers\ncries\ncrime\ncrimes\ncriminal\ncriminalities\ncriminality\ncriminally\ncriminals\ncriminate\ncriminated\ncriminates\ncriminating\ncriminological\ncriminologically\ncriminologist\ncriminologists\ncriminology\ncrimmer\ncrimmers\ncrimp\ncrimped\ncrimper\ncrimpers\ncrimpier\ncrimpiest\ncrimping\ncrimple\ncrimpled\ncrimples\ncrimpling\ncrimps\ncrimpy\ncrimson\ncrimsoned\ncrimsoning\ncrimsons\ncringe\ncringed\ncringer\ncringers\ncringes\ncringing\ncringle\ncringles\ncrinite\ncrinites\ncrinkle\ncrinkled\ncrinkles\ncrinklier\ncrinkliest\ncrinkling\ncrinkly\ncrinoid\ncrinoids\ncrinoline\ncrinolines\ncrinum\ncrinums\ncriollo\ncriollos\ncripe\ncripple\ncrippled\ncrippler\ncripplers\ncripples\ncrippling\ncris\ncrises\ncrisic\ncrisis\ncrisp\ncrispate\ncrisped\ncrispen\ncrispened\ncrispening\ncrispens\ncrisper\ncrispers\ncrispest\ncrispier\ncrispiest\ncrispily\ncrispiness\ncrisping\ncrisply\ncrispness\ncrisps\ncrispy\ncrissa\ncrissal\ncrisscross\ncrisscrossed\ncrisscrosses\ncrisscrossing\ncrissum\ncrista\ncristae\ncristate\ncriteria\ncriterion\ncriterions\ncritic\ncritical\ncritically\ncriticalness\ncriticism\ncriticisms\ncriticize\ncriticized\ncriticizer\ncriticizers\ncriticizes\ncriticizing\ncritics\ncritique\ncritiqued\ncritiques\ncritiquing\ncritter\ncritters\ncrittur\ncritturs\ncroak\ncroaked\ncroaker\ncroakers\ncroakier\ncroakiest\ncroakily\ncroaking\ncroaks\ncroaky\ncroc\ncrocein\ncroceine\ncroceines\ncroceins\ncrochet\ncrocheted\ncrocheter\ncrocheters\ncrocheting\ncrochets\ncroci\ncrocine\ncrock\ncrocked\ncrockeries\ncrockery\ncrocket\ncrockets\ncrocking\ncrocks\ncrocodile\ncrocodiles\ncrocoite\ncrocoites\ncrocs\ncrocuci\ncrocus\ncrocuses\ncroft\ncrofter\ncrofters\ncrofts\ncroissant\ncroissants\ncrojik\ncrojiks\ncromlech\ncromlechs\ncrone\ncrones\ncronies\ncrony\ncronyism\ncronyisms\ncrook\ncrooked\ncrookeder\ncrookedest\ncrookedly\ncrookedness\ncrooking\ncrooks\ncroon\ncrooned\ncrooner\ncrooners\ncrooning\ncroons\ncrop\ncropland\ncroplands\ncropless\ncropped\ncropper\ncroppers\ncropping\ncrops\ncroquet\ncroqueted\ncroqueting\ncroquets\ncroquette\ncroquettes\ncroquis\ncrore\ncrores\ncrosier\ncrosiers\ncross\ncrossarm\ncrossarms\ncrossbar\ncrossbarred\ncrossbarring\ncrossbars\ncrossbow\ncrossbows\ncrossbred\ncrossbreed\ncrossbreeding\ncrossbreeds\ncrosscut\ncrosscuts\ncrosscutting\ncrosse\ncrossed\ncrosser\ncrossers\ncrosses\ncrossest\ncrosshatch\ncrosshatched\ncrosshatches\ncrosshatching\ncrosshatchings\ncrossing\ncrossings\ncrosslet\ncrosslets\ncrossly\ncrossover\ncrossovers\ncrosspiece\ncrosspieces\ncrossroad\ncrossroads\ncrosstie\ncrossties\ncrosstown\ncrosswalk\ncrosswalks\ncrossway\ncrossways\ncrosswise\ncrossword\ncrosswords\ncrotch\ncrotched\ncrotches\ncrotchet\ncrotchetiness\ncrotchets\ncrotchety\ncroton\ncrotons\ncrouch\ncrouched\ncrouches\ncrouching\ncroup\ncroupe\ncroupes\ncroupier\ncroupiers\ncroupiest\ncroupily\ncroupous\ncroups\ncroupy\ncrouse\ncrousely\ncrouton\ncroutons\ncrow\ncrowbar\ncrowbars\ncrowd\ncrowded\ncrowder\ncrowders\ncrowdie\ncrowdies\ncrowding\ncrowds\ncrowdy\ncrowed\ncrower\ncrowers\ncrowfeet\ncrowfoot\ncrowfoots\ncrowing\ncrown\ncrowned\ncrowner\ncrowners\ncrownet\ncrownets\ncrowning\ncrowns\ncrows\ncrowstep\ncrowsteps\ncroze\ncrozer\ncrozers\ncrozes\ncrozier\ncroziers\ncruces\ncrucial\ncrucially\ncrucian\ncrucians\ncruciate\ncrucible\ncrucibles\ncrucifer\ncrucifers\ncrucified\ncrucifies\ncrucifix\ncrucifixes\ncrucifixion\ncrucifixions\ncrucify\ncrucifying\ncruck\ncrud\ncrudded\ncrudding\ncruddy\ncrude\ncrudely\ncrudeness\ncruder\ncrudes\ncrudest\ncrudities\ncrudity\ncruds\ncruel\ncrueler\ncruelest\ncrueller\ncruellest\ncruelly\ncruelness\ncruelties\ncruelty\ncruet\ncruets\ncruise\ncruised\ncruiser\ncruisers\ncruises\ncruising\ncruller\ncrullers\ncrumb\ncrumbed\ncrumber\ncrumbers\ncrumbier\ncrumbiest\ncrumbing\ncrumble\ncrumbled\ncrumbles\ncrumblier\ncrumbliest\ncrumbliness\ncrumbling\ncrumbly\ncrumbs\ncrumby\ncrummie\ncrummier\ncrummies\ncrummiest\ncrummy\ncrump\ncrumped\ncrumpet\ncrumpets\ncrumping\ncrumple\ncrumpled\ncrumples\ncrumpling\ncrumply\ncrumps\ncrunch\ncrunched\ncruncher\ncrunchers\ncrunches\ncrunchier\ncrunchiest\ncrunchily\ncrunchiness\ncrunching\ncrunchy\ncrunodal\ncrunode\ncrunodes\ncruor\ncruors\ncrupper\ncruppers\ncrura\ncrural\ncrus\ncrusade\ncrusaded\ncrusader\ncrusaders\ncrusades\ncrusading\ncrusado\ncrusadoes\ncrusados\ncruse\ncruses\ncruset\ncrusets\ncrush\ncrushed\ncrusher\ncrushers\ncrushes\ncrushing\ncrusily\ncrust\ncrustacean\ncrustaceans\ncrustal\ncrusted\ncrustier\ncrustiest\ncrustily\ncrustiness\ncrusting\ncrustose\ncrusts\ncrusty\ncrutch\ncrutched\ncrutches\ncrutching\ncrux\ncruxes\ncruzado\ncruzadoes\ncruzados\ncruzeiro\ncruzeiros\ncruzieros\ncrwth\ncrwths\ncry\ncrybabies\ncrybaby\ncrying\ncryingly\ncryogen\ncryogenic\ncryogenically\ncryogenics\ncryogenies\ncryogens\ncryogeny\ncryolite\ncryolites\ncryonic\ncryonics\ncryostat\ncryostats\ncryotron\ncryotrons\ncrypt\ncryptal\ncryptic\ncryptically\ncrypto\ncryptogram\ncryptograms\ncryptograph\ncryptographer\ncryptographers\ncryptographic\ncryptographically\ncryptographies\ncryptographs\ncryptography\ncryptos\ncrypts\ncrystal\ncrystalline\ncrystallinity\ncrystallization\ncrystallizations\ncrystallize\ncrystallized\ncrystallizes\ncrystallizing\ncrystallographer\ncrystallographers\ncrystallographic\ncrystallography\ncrystalloid\ncrystalloids\ncrystals\nctenidia\nctenoid\nctenophore\nctenophores\ncub\ncubage\ncubages\ncubature\ncubatures\ncubbies\ncubbish\ncubby\ncubbyhole\ncubbyholes\ncube\ncubeb\ncubebs\ncubed\ncuber\ncubers\ncubes\ncubic\ncubical\ncubicities\ncubicity\ncubicle\ncubicles\ncubicly\ncubics\ncubicula\ncubiform\ncubing\ncubism\ncubisms\ncubist\ncubistic\ncubists\ncubit\ncubital\ncubits\ncuboid\ncuboidal\ncuboids\ncubs\ncuckold\ncuckolded\ncuckolding\ncuckolds\ncuckoo\ncuckooed\ncuckooing\ncuckoos\ncucumber\ncucumbers\ncucurbit\ncucurbits\ncud\ncudbear\ncudbears\ncuddie\ncuddies\ncuddle\ncuddled\ncuddles\ncuddlier\ncuddliest\ncuddling\ncuddly\ncuddy\ncudgel\ncudgeled\ncudgeler\ncudgelers\ncudgeling\ncudgelled\ncudgelling\ncudgels\ncuds\ncudweed\ncudweeds\ncue\ncued\ncueing\ncues\ncuesta\ncuestas\ncuff\ncuffed\ncuffing\ncuffless\ncuffs\ncuif\ncuifs\ncuing\ncuirass\ncuirassed\ncuirasses\ncuirassier\ncuirassiers\ncuirassing\ncuish\ncuishes\ncuisine\ncuisines\ncuisse\ncuisses\ncuittle\ncuittled\ncuittles\ncuittling\ncuke\ncukes\nculch\nculches\nculet\nculets\nculex\nculices\nculicid\nculicids\nculicine\nculicines\nculinary\ncull\ncullay\ncullays\nculled\nculler\ncullers\ncullet\ncullets\ncullied\ncullies\nculling\ncullion\ncullions\ncullis\ncullises\nculls\ncully\ncullying\nculm\nculmed\nculminate\nculminated\nculminates\nculminating\nculmination\nculminations\nculming\nculms\nculotte\nculottes\nculpa\nculpability\nculpable\nculpableness\nculpably\nculpae\nculprit\nculprits\ncult\ncultch\ncultches\nculti\ncultic\ncultigen\ncultigens\ncultism\ncultisms\ncultist\ncultists\ncultivable\ncultivar\ncultivars\ncultivatable\ncultivate\ncultivated\ncultivates\ncultivating\ncultivation\ncultivations\ncultivator\ncultivators\ncultrate\ncults\ncultural\nculturally\nculture\ncultured\ncultures\nculturing\ncultus\ncultuses\nculver\nculverin\nculverins\nculvers\nculvert\nculverts\ncum\ncumarin\ncumarins\ncumber\ncumbered\ncumberer\ncumberers\ncumbering\ncumbers\ncumbersome\ncumbersomely\ncumbersomeness\ncumbrous\ncumbrously\ncumbrousness\ncumin\ncumins\ncummer\ncummerbund\ncummerbunds\ncummers\ncummin\ncummins\ncumquat\ncumquats\ncumshaw\ncumshaws\ncumulate\ncumulated\ncumulates\ncumulating\ncumulation\ncumulations\ncumulative\ncumulatively\ncumulativeness\ncumuli\ncumulous\ncumulus\ncundum\ncundums\ncuneal\ncuneate\ncuneated\ncuneatic\ncuneiform\ncuniform\ncuniforms\ncunner\ncunners\ncunning\ncunninger\ncunningest\ncunningly\ncunnings\ncunt\ncunts\ncup\ncupboard\ncupboards\ncupcake\ncupcakes\ncupel\ncupeled\ncupeler\ncupelers\ncupeling\ncupelled\ncupeller\ncupellers\ncupelling\ncupels\ncupful\ncupfuls\ncupid\ncupidities\ncupidity\ncupids\ncuplike\ncupola\ncupolaed\ncupolaing\ncupolas\ncuppa\ncuppas\ncupped\ncupper\ncuppers\ncuppier\ncuppiest\ncupping\ncuppings\ncuppy\ncupreous\ncupric\ncuprite\ncuprites\ncuprous\ncuprum\ncuprums\ncups\ncupsful\ncupula\ncupulae\ncupular\ncupulate\ncupule\ncupules\ncur\ncurability\ncurable\ncurableness\ncurably\ncuracao\ncuracaos\ncuracies\ncuracoa\ncuracoas\ncuracy\ncuragh\ncuraghs\ncurara\ncuraras\ncurare\ncurares\ncurari\ncurarine\ncurarines\ncuraris\ncurarize\ncurarized\ncurarizes\ncurarizing\ncurassow\ncurassows\ncurate\ncurates\ncurative\ncuratives\ncurator\ncuratorial\ncurators\ncuratorship\ncurb\ncurbable\ncurbed\ncurber\ncurbers\ncurbing\ncurbings\ncurbs\ncurbstone\ncurbstones\ncurch\ncurches\ncurculio\ncurculios\ncurcuma\ncurcumas\ncurd\ncurded\ncurdier\ncurdiest\ncurding\ncurdle\ncurdled\ncurdler\ncurdlers\ncurdles\ncurdling\ncurds\ncurdy\ncure\ncured\ncureless\ncurer\ncurers\ncures\ncuret\ncurets\ncurette\ncuretted\ncurettes\ncuretting\ncurf\ncurfew\ncurfews\ncurfs\ncuria\ncuriae\ncurial\ncurie\ncuries\ncuring\ncurio\ncurios\ncuriosa\ncuriosities\ncuriosity\ncurious\ncuriouser\ncuriousest\ncuriously\ncuriousness\ncurite\ncurites\ncurium\ncuriums\ncurl\ncurled\ncurler\ncurlers\ncurlew\ncurlews\ncurlicue\ncurlicued\ncurlicues\ncurlicuing\ncurlier\ncurliest\ncurlily\ncurliness\ncurling\ncurlings\ncurls\ncurly\ncurlycue\ncurlycues\ncurmudgeon\ncurmudgeonly\ncurmudgeons\ncurn\ncurns\ncurr\ncurrach\ncurrachs\ncurragh\ncurraghs\ncurran\ncurrans\ncurrant\ncurrants\ncurred\ncurrencies\ncurrency\ncurrent\ncurrently\ncurrentness\ncurrents\ncurricle\ncurricles\ncurricula\ncurricular\ncurriculum\ncurriculums\ncurrie\ncurried\ncurrier\ncurrieries\ncurriers\ncurriery\ncurries\ncurring\ncurrish\ncurrs\ncurry\ncurrycomb\ncurrycombs\ncurrying\ncurs\ncurse\ncursed\ncurseder\ncursedest\ncursedly\ncursedness\ncurser\ncursers\ncurses\ncursing\ncursive\ncursively\ncursives\ncursorily\ncursoriness\ncursory\ncurst\ncurt\ncurtail\ncurtailed\ncurtailer\ncurtailers\ncurtailing\ncurtailment\ncurtailments\ncurtails\ncurtain\ncurtained\ncurtaining\ncurtains\ncurtal\ncurtalax\ncurtalaxes\ncurtals\ncurtate\ncurter\ncurtesies\ncurtest\ncurtesy\ncurtly\ncurtness\ncurtnesses\ncurtsey\ncurtseyed\ncurtseying\ncurtseys\ncurtsied\ncurtsies\ncurtsy\ncurtsying\ncurule\ncurvaceous\ncurvature\ncurvatures\ncurve\ncurved\ncurves\ncurvet\ncurveted\ncurveting\ncurvets\ncurvetted\ncurvetting\ncurvey\ncurvier\ncurviest\ncurvilinear\ncurving\ncurvy\ncuscus\ncuscuses\ncusec\ncusecs\ncushat\ncushats\ncushaw\ncushaws\ncushier\ncushiest\ncushily\ncushion\ncushioned\ncushioning\ncushions\ncushiony\ncushy\ncusk\ncusks\ncusp\ncuspate\ncuspated\ncusped\ncuspid\ncuspidal\ncuspides\ncuspidor\ncuspidors\ncuspids\ncuspis\ncusps\ncuss\ncussed\ncussedly\ncussedness\ncusser\ncussers\ncusses\ncussing\ncusso\ncussos\ncussword\ncusswords\ncustard\ncustards\ncustodes\ncustodial\ncustodian\ncustodians\ncustodianship\ncustodies\ncustody\ncustom\ncustomarily\ncustomary\ncustomer\ncustomers\ncustomhouse\ncustomhouses\ncustomize\ncustomized\ncustomizes\ncustomizing\ncustoms\ncustos\ncustumal\ncustumals\ncut\ncutaneous\ncutaneously\ncutaway\ncutaways\ncutback\ncutbacks\ncutch\ncutcheries\ncutchery\ncutches\ncutdown\ncutdowns\ncute\ncutely\ncuteness\ncutenesses\ncuter\ncutes\ncutesier\ncutesiest\ncutest\ncutesy\ncutey\ncuteys\ncutgrass\ncutgrasses\ncuticle\ncuticles\ncuticula\ncuticulae\ncuticular\ncutie\ncuties\ncutin\ncutinise\ncutinised\ncutinises\ncutinising\ncutinize\ncutinized\ncutinizes\ncutinizing\ncutins\ncutis\ncutises\ncutlas\ncutlases\ncutlass\ncutlasses\ncutler\ncutleries\ncutlers\ncutlery\ncutlet\ncutlets\ncutline\ncutlines\ncutoff\ncutoffs\ncutout\ncutouts\ncutover\ncutpurse\ncutpurses\ncuts\ncuttable\ncuttage\ncuttages\ncutter\ncutters\ncutthroat\ncutthroats\ncutties\ncutting\ncuttings\ncuttle\ncuttled\ncuttlefish\ncuttlefishes\ncuttles\ncuttling\ncutty\ncutup\ncutups\ncutwater\ncutwaters\ncutwork\ncutworks\ncutworm\ncutworms\ncuvette\ncuvettes\ncwm\ncwms\ncyan\ncyanamid\ncyanamide\ncyanamides\ncyanamids\ncyanate\ncyanates\ncyanic\ncyanid\ncyanide\ncyanided\ncyanides\ncyaniding\ncyanids\ncyanin\ncyanine\ncyanines\ncyanins\ncyanite\ncyanites\ncyanitic\ncyano\ncyanogen\ncyanogens\ncyanosed\ncyanoses\ncyanosis\ncyanotic\ncyans\ncybernetic\ncybernetics\ncyborg\ncyborgs\ncycad\ncycads\ncycas\ncycases\ncycasin\ncycasins\ncyclamate\ncyclamates\ncyclamen\ncyclamens\ncyclase\ncyclases\ncycle\ncyclecar\ncyclecars\ncycled\ncycler\ncyclers\ncycles\ncyclic\ncyclical\ncyclically\ncyclicly\ncycling\ncyclings\ncyclist\ncyclists\ncyclitol\ncyclitols\ncyclize\ncyclized\ncyclizes\ncyclizing\ncyclo\ncycloid\ncycloids\ncyclometer\ncyclometers\ncyclonal\ncyclone\ncyclones\ncyclonic\ncyclonically\ncyclopedia\ncyclopedias\ncyclopedic\ncyclops\ncyclorama\ncycloramas\ncyclos\ncycloses\ncyclosis\ncyclotron\ncyclotrons\ncyder\ncyders\ncyeses\ncyesis\ncygnet\ncygnets\ncylices\ncylinder\ncylindered\ncylindering\ncylinders\ncylindric\ncylindrical\ncylindrically\ncylix\ncyma\ncymae\ncymar\ncymars\ncymas\ncymatia\ncymatium\ncymbal\ncymbaler\ncymbalers\ncymbals\ncymbling\ncymblings\ncyme\ncymene\ncymenes\ncymes\ncymlin\ncymling\ncymlings\ncymlins\ncymogene\ncymogenes\ncymoid\ncymol\ncymols\ncymose\ncymosely\ncymous\ncynic\ncynical\ncynically\ncynicism\ncynicisms\ncynics\ncynosure\ncynosures\ncypher\ncyphered\ncyphering\ncyphers\ncypres\ncypreses\ncypress\ncypresses\ncyprian\ncyprians\ncyprinid\ncyprinids\ncyprus\ncypruses\ncypsela\ncypselae\ncyst\ncystein\ncysteine\ncysteines\ncysteins\ncystic\ncystine\ncystines\ncystitides\ncystitis\ncystititides\ncystoid\ncystoids\ncysts\ncytaster\ncytasters\ncytidine\ncytidines\ncytogenies\ncytogeny\ncytologic\ncytological\ncytologically\ncytologies\ncytologist\ncytologists\ncytology\ncyton\ncytons\ncytoplasm\ncytoplasmic\ncytoplasms\ncytosine\ncytosines\nczar\nczardas\nczardom\nczardoms\nczarevna\nczarevnas\nczarina\nczarinas\nczarism\nczarisms\nczarist\nczarists\nczaritza\nczaritzas\nczars\nda\ndab\ndabbed\ndabber\ndabbers\ndabbing\ndabble\ndabbled\ndabbler\ndabblers\ndabbles\ndabbling\ndabblings\ndabchick\ndabchicks\ndabs\ndabster\ndabsters\ndace\ndaces\ndacha\ndachas\ndachshund\ndachshunds\ndacker\ndackered\ndackering\ndackers\ndacoit\ndacoities\ndacoits\ndacoity\ndactyl\ndactyli\ndactylic\ndactylics\ndactyls\ndactylus\ndad\ndada\ndadaism\ndadaisms\ndadaist\ndadaists\ndadas\ndaddies\ndaddle\ndaddled\ndaddles\ndaddling\ndaddy\ndado\ndadoed\ndadoes\ndadoing\ndados\ndads\ndaedal\ndaemon\ndaemonic\ndaemons\ndaff\ndaffed\ndaffier\ndaffiest\ndaffing\ndaffodil\ndaffodils\ndaffs\ndaffy\ndaft\ndafter\ndaftest\ndaftly\ndaftness\ndaftnesses\ndag\ndagga\ndagger\ndaggered\ndaggering\ndaggers\ndaggle\ndaggled\ndaggles\ndaggling\ndaglock\ndaglocks\ndago\ndagoba\ndagobas\ndagoes\ndagos\ndags\ndaguerreotype\ndaguerreotypes\ndah\ndahabeah\ndahabeahs\ndahabiah\ndahabiahs\ndahabieh\ndahabiehs\ndahabiya\ndahabiyas\ndahl\ndahlia\ndahlias\ndahls\ndahoon\ndahoons\ndahs\ndaiker\ndaikered\ndaikering\ndaikers\ndailies\ndaily\ndaimen\ndaimio\ndaimios\ndaimon\ndaimones\ndaimonic\ndaimons\ndaimyo\ndaimyos\ndaintier\ndainties\ndaintiest\ndaintily\ndaintiness\ndainty\ndaiquiri\ndaiquiris\ndairies\ndairy\ndairying\ndairyings\ndairymaid\ndairymaids\ndairyman\ndairymen\ndais\ndaises\ndaishiki\ndaishikis\ndaisied\ndaisies\ndaisy\ndaisywheel\ndaisywheels\ndak\ndakerhen\ndakerhens\ndakoit\ndakoities\ndakoits\ndakoity\ndaks\ndal\ndalapon\ndalapons\ndalasi\ndale\ndales\ndalesman\ndalesmen\ndaleth\ndaleths\ndalles\ndalliance\ndalliances\ndallied\ndallier\ndalliers\ndallies\ndally\ndallying\ndalmatian\ndalmatians\ndalmatic\ndalmatics\ndals\ndaltonic\ndam\ndamage\ndamageable\ndamaged\ndamager\ndamagers\ndamages\ndamaging\ndaman\ndamans\ndamar\ndamars\ndamascene\ndamascened\ndamascenes\ndamascening\ndamask\ndamasked\ndamasking\ndamasks\ndame\ndames\ndamewort\ndameworts\ndammar\ndammars\ndammed\ndammer\ndammers\ndamming\ndamn\ndamnable\ndamnableness\ndamnably\ndamnation\ndamnations\ndamndest\ndamndests\ndamned\ndamneder\ndamnedest\ndamner\ndamners\ndamnified\ndamnifies\ndamnify\ndamnifying\ndamning\ndamningly\ndamns\ndamosel\ndamosels\ndamozel\ndamozels\ndamp\ndamped\ndampen\ndampened\ndampener\ndampeners\ndampening\ndampens\ndamper\ndampers\ndampest\ndamping\ndampish\ndamply\ndampness\ndampnesses\ndamps\ndams\ndamsel\ndamsels\ndamson\ndamsons\ndance\ndanced\ndancer\ndancers\ndances\ndancing\ndandelion\ndandelions\ndander\ndandered\ndandering\ndanders\ndandiacal\ndandier\ndandies\ndandiest\ndandified\ndandifies\ndandify\ndandifying\ndandily\ndandle\ndandled\ndandler\ndandlers\ndandles\ndandling\ndandriff\ndandriffs\ndandruff\ndandruffs\ndandruffy\ndandy\ndandyish\ndandyism\ndandyisms\ndanegeld\ndanegelds\ndaneweed\ndaneweeds\ndanewort\ndaneworts\ndang\ndanged\ndanger\ndangered\ndangering\ndangerous\ndangerously\ndangerousness\ndangers\ndanging\ndangle\ndangled\ndangler\ndanglers\ndangles\ndangling\ndangs\ndanio\ndanios\ndank\ndanker\ndankest\ndankly\ndankness\ndanknesses\ndanseur\ndanseurs\ndanseuse\ndanseuses\ndap\ndaphne\ndaphnes\ndaphnia\ndaphnias\ndapped\ndapper\ndapperer\ndapperest\ndapperly\ndapperness\ndapping\ndapple\ndappled\ndapples\ndappling\ndaps\ndarb\ndarbies\ndarbs\ndare\ndared\ndaredevil\ndaredevilry\ndaredevils\ndaredeviltry\ndareful\ndarer\ndarers\ndares\ndaresay\ndaric\ndarics\ndaring\ndaringly\ndaringness\ndarings\ndariole\ndarioles\ndark\ndarked\ndarken\ndarkened\ndarkener\ndarkeners\ndarkening\ndarkens\ndarker\ndarkest\ndarkey\ndarkeys\ndarkie\ndarkies\ndarking\ndarkish\ndarkle\ndarkled\ndarkles\ndarklier\ndarkliest\ndarkling\ndarkly\ndarkness\ndarknesses\ndarkroom\ndarkrooms\ndarks\ndarksome\ndarky\ndarling\ndarlingly\ndarlingness\ndarlings\ndarn\ndarndest\ndarndests\ndarned\ndarneder\ndarnedest\ndarnel\ndarnels\ndarner\ndarners\ndarning\ndarnings\ndarns\ndart\ndarted\ndarter\ndarters\ndarting\ndartle\ndartled\ndartles\ndartling\ndarts\ndash\ndashboard\ndashboards\ndashed\ndasheen\ndasheens\ndasher\ndashers\ndashes\ndashi\ndashier\ndashiest\ndashiki\ndashikis\ndashing\ndashingly\ndashpot\ndashpots\ndashy\ndassie\ndassies\ndastard\ndastardliness\ndastardly\ndastards\ndasyure\ndasyures\ndata\ndatable\ndataries\ndatary\ndatcha\ndatchas\ndate\ndateable\ndated\ndatedly\ndateless\ndateline\ndatelined\ndatelines\ndatelining\ndater\ndaters\ndates\ndating\ndatival\ndative\ndatively\ndatives\ndato\ndatos\ndatto\ndattos\ndatum\ndatums\ndatura\ndaturas\ndaturic\ndaub\ndaube\ndaubed\ndauber\ndauberies\ndaubers\ndaubery\ndaubes\ndaubier\ndaubiest\ndaubing\ndaubries\ndaubry\ndaubs\ndauby\ndaughter\ndaughterless\ndaughterly\ndaughters\ndaunder\ndaundered\ndaundering\ndaunders\ndaunt\ndaunted\ndaunter\ndaunters\ndaunting\ndauntingly\ndauntless\ndauntlessly\ndauntlessness\ndaunts\ndauphin\ndauphine\ndauphines\ndauphins\ndaut\ndauted\ndautie\ndauties\ndauting\ndauts\ndaven\ndavened\ndavening\ndavenport\ndavenports\ndavens\ndavies\ndavit\ndavits\ndavy\ndaw\ndawdle\ndawdled\ndawdler\ndawdlers\ndawdles\ndawdling\ndawed\ndawen\ndawing\ndawk\ndawks\ndawn\ndawned\ndawning\ndawnlike\ndawns\ndaws\ndawt\ndawted\ndawtie\ndawties\ndawting\ndawts\nday\ndaybed\ndaybeds\ndaybook\ndaybooks\ndaybreak\ndaybreaks\ndaydream\ndaydreamed\ndaydreamer\ndaydreamers\ndaydreaming\ndaydreams\ndaydreamt\ndayflies\ndayfly\ndayglow\ndayglows\ndaylight\ndaylighted\ndaylighting\ndaylights\ndaylilies\ndaylily\ndaylit\ndaylong\ndaymare\ndaymares\ndayroom\ndayrooms\ndays\ndayside\ndaysides\ndaysman\ndaysmen\ndaystar\ndaystars\ndaytime\ndaytimes\ndaze\ndazed\ndazedly\ndazedness\ndazes\ndazing\ndazzle\ndazzled\ndazzler\ndazzlers\ndazzles\ndazzling\ndazzlingly\nde\ndeacon\ndeaconed\ndeaconess\ndeaconesses\ndeaconing\ndeaconries\ndeaconry\ndeacons\ndeactivate\ndeactivated\ndeactivates\ndeactivating\ndeactivation\ndeactivations\ndeactivator\ndeactivators\ndead\ndeadbeat\ndeadbeats\ndeaden\ndeadened\ndeadener\ndeadeners\ndeadening\ndeadens\ndeader\ndeadest\ndeadeye\ndeadeyes\ndeadfall\ndeadfalls\ndeadhead\ndeadheaded\ndeadheading\ndeadheads\ndeadlier\ndeadliest\ndeadline\ndeadlines\ndeadliness\ndeadlock\ndeadlocked\ndeadlocking\ndeadlocks\ndeadly\ndeadness\ndeadnesses\ndeadpan\ndeadpanned\ndeadpanning\ndeadpans\ndeads\ndeadweight\ndeadweights\ndeadwood\ndeadwoods\ndeaerate\ndeaerated\ndeaerates\ndeaerating\ndeaf\ndeafen\ndeafened\ndeafening\ndeafeningly\ndeafens\ndeafer\ndeafest\ndeafish\ndeafly\ndeafness\ndeafnesses\ndeair\ndeaired\ndeairing\ndeairs\ndeal\ndealate\ndealated\ndealates\ndealer\ndealers\ndealfish\ndealfishes\ndealing\ndealings\ndeals\ndealt\ndean\ndeaned\ndeaneries\ndeanery\ndeaning\ndeans\ndeanship\ndeanships\ndear\ndearer\ndearest\ndearie\ndearies\ndearly\ndearness\ndearnesses\ndears\ndearth\ndearths\ndeary\ndeash\ndeashed\ndeashes\ndeashing\ndeasil\ndeath\ndeathbed\ndeathbeds\ndeathblow\ndeathblows\ndeathcup\ndeathcups\ndeathful\ndeathless\ndeathlessly\ndeathlessness\ndeathlike\ndeathly\ndeaths\ndeathtrap\ndeathtraps\ndeathwatch\ndeathwatches\ndeathy\ndeave\ndeaved\ndeaves\ndeaving\ndeb\ndebacle\ndebacles\ndebar\ndebark\ndebarkation\ndebarkations\ndebarked\ndebarking\ndebarks\ndebarment\ndebarments\ndebarred\ndebarring\ndebars\ndebase\ndebased\ndebasement\ndebasements\ndebaser\ndebasers\ndebases\ndebasing\ndebatable\ndebate\ndebated\ndebater\ndebaters\ndebates\ndebating\ndebauch\ndebauched\ndebaucher\ndebaucheries\ndebauchers\ndebauchery\ndebauches\ndebauching\ndebenture\ndebentures\ndebilitate\ndebilitated\ndebilitates\ndebilitating\ndebilitation\ndebilitations\ndebilities\ndebility\ndebit\ndebited\ndebiting\ndebits\ndebonair\ndebonairly\ndebonairness\ndebone\ndeboned\ndeboner\ndeboners\ndebones\ndeboning\ndebouch\ndebouche\ndebouched\ndebouches\ndebouching\ndebrief\ndebriefed\ndebriefing\ndebriefs\ndebris\ndebruise\ndebruised\ndebruises\ndebruising\ndebs\ndebt\ndebtless\ndebtor\ndebtors\ndebts\ndebug\ndebugged\ndebugging\ndebugs\ndebunk\ndebunked\ndebunker\ndebunkers\ndebunking\ndebunks\ndebut\ndebutant\ndebutante\ndebutantes\ndebutants\ndebuted\ndebuting\ndebuts\ndebye\ndebyes\ndecadal\ndecade\ndecadence\ndecadences\ndecadency\ndecadent\ndecadently\ndecadents\ndecades\ndecaf\ndecagon\ndecagonal\ndecagons\ndecagram\ndecagrams\ndecahedron\ndecahedrons\ndecal\ndecalcification\ndecalcifications\ndecalcified\ndecalcifies\ndecalcify\ndecalcifying\ndecalcomania\ndecalcomanias\ndecaliter\ndecaliters\ndecals\ndecameter\ndecameters\ndecamp\ndecamped\ndecamping\ndecampment\ndecampments\ndecamps\ndecanal\ndecane\ndecanes\ndecant\ndecantation\ndecantations\ndecanted\ndecanter\ndecanters\ndecanting\ndecants\ndecapitate\ndecapitated\ndecapitates\ndecapitating\ndecapitation\ndecapitations\ndecapitator\ndecapitators\ndecapod\ndecapods\ndecare\ndecares\ndecathlon\ndecathlons\ndecay\ndecayed\ndecayer\ndecayers\ndecaying\ndecays\ndecciares\ndecease\ndeceased\ndeceases\ndeceasing\ndecedent\ndecedents\ndeceit\ndeceitful\ndeceitfully\ndeceitfulness\ndeceits\ndeceive\ndeceived\ndeceiver\ndeceivers\ndeceives\ndeceiving\ndeceivingly\ndecelerate\ndecelerated\ndecelerates\ndecelerating\ndeceleration\ndecelerations\ndecelerator\ndecelerators\ndecemvir\ndecemviri\ndecemvirs\ndecenaries\ndecenary\ndecencies\ndecency\ndecennia\ndecennial\ndecennially\ndecent\ndecenter\ndecentered\ndecentering\ndecenters\ndecentest\ndecently\ndecentness\ndecentralization\ndecentralizations\ndecentralize\ndecentralized\ndecentralizes\ndecentralizing\ndecentre\ndecentred\ndecentres\ndecentring\ndeception\ndeceptions\ndeceptive\ndeceptively\ndeceptiveness\ndecern\ndecerned\ndecerning\ndecerns\ndecertified\ndecertifies\ndecertify\ndecertifying\ndeciare\ndeciares\ndecibel\ndecibels\ndecidable\ndecide\ndecided\ndecidedly\ndecidedness\ndecider\ndeciders\ndecides\ndeciding\ndecidua\ndeciduae\ndecidual\ndeciduas\ndeciduous\ndeciduously\ndeciduousness\ndecigram\ndecigrams\ndecile\ndeciles\ndecimal\ndecimalization\ndecimalizations\ndecimalize\ndecimalized\ndecimalizes\ndecimalizing\ndecimally\ndecimals\ndecimate\ndecimated\ndecimates\ndecimating\ndecimation\ndecimations\ndecimeter\ndecimeters\ndecipher\ndecipherable\ndeciphered\ndecipherer\ndecipherers\ndeciphering\ndecipherment\ndecipherments\ndeciphers\ndecision\ndecisional\ndecisions\ndecisive\ndecisively\ndecisiveness\ndeck\ndecked\ndeckel\ndeckels\ndecker\ndeckers\ndeckhand\ndeckhands\ndecking\ndeckings\ndeckle\ndeckles\ndecks\ndeclaim\ndeclaimed\ndeclaimer\ndeclaimers\ndeclaiming\ndeclaims\ndeclamation\ndeclamations\ndeclarable\ndeclaration\ndeclarations\ndeclarative\ndeclaratively\ndeclaratory\ndeclare\ndeclared\ndeclarer\ndeclarers\ndeclares\ndeclaring\ndeclass\ndeclasse\ndeclassed\ndeclasses\ndeclassified\ndeclassifies\ndeclassify\ndeclassifying\ndeclassing\ndeclension\ndeclensional\ndeclensions\ndeclinable\ndeclination\ndeclinational\ndeclinations\ndecline\ndeclined\ndecliner\ndecliners\ndeclines\ndeclining\ndeclivities\ndeclivity\ndeco\ndecoct\ndecocted\ndecocting\ndecoction\ndecoctions\ndecocts\ndecode\ndecoded\ndecoder\ndecoders\ndecodes\ndecoding\ndecollate\ndecollated\ndecollates\ndecollating\ndecollation\ndecollations\ndecolor\ndecolored\ndecoloring\ndecolors\ndecolour\ndecoloured\ndecolouring\ndecolours\ndecommission\ndecommissioned\ndecommissioning\ndecommissions\ndecomposability\ndecomposable\ndecompose\ndecomposed\ndecomposer\ndecomposers\ndecomposes\ndecomposing\ndecomposition\ndecompositions\ndecompress\ndecompressed\ndecompresses\ndecompressing\ndecompression\ndecompressions\ndecongest\ndecongestant\ndecongestants\ndecongested\ndecongesting\ndecongestion\ndecongestive\ndecongests\ndecontaminate\ndecontaminated\ndecontaminates\ndecontaminating\ndecontamination\ndecontaminations\ndecontrol\ndecontrolled\ndecontrolling\ndecontrols\ndecor\ndecorate\ndecorated\ndecorates\ndecorating\ndecoration\ndecorations\ndecorative\ndecoratively\ndecorativeness\ndecorator\ndecorators\ndecorous\ndecorously\ndecorousness\ndecors\ndecorum\ndecorums\ndecos\ndecoy\ndecoyed\ndecoyer\ndecoyers\ndecoying\ndecoys\ndecrease\ndecreased\ndecreases\ndecreasing\ndecreasingly\ndecree\ndecreed\ndecreeing\ndecreer\ndecreers\ndecrees\ndecrement\ndecrements\ndecrepit\ndecrepitate\ndecrepitated\ndecrepitates\ndecrepitating\ndecrepitation\ndecrepitations\ndecrepitly\ndecrepitness\ndecrepitude\ndecrepitudes\ndecrescendo\ndecrescendos\ndecretal\ndecretals\ndecrial\ndecrials\ndecried\ndecrier\ndecriers\ndecries\ndecriminalization\ndecriminalizations\ndecriminalize\ndecriminalized\ndecriminalizes\ndecriminalizing\ndecrown\ndecrowned\ndecrowning\ndecrowns\ndecry\ndecrying\ndecrypt\ndecrypted\ndecrypting\ndecrypts\ndecuman\ndecumbencies\ndecumbency\ndecumbent\ndecuple\ndecupled\ndecuples\ndecupling\ndecuries\ndecurion\ndecurions\ndecurve\ndecurved\ndecurves\ndecurving\ndecury\ndedal\ndedans\ndedicate\ndedicated\ndedicatee\ndedicatees\ndedicates\ndedicating\ndedication\ndedications\ndedicative\ndedicator\ndedicators\ndedicatory\ndeduce\ndeduced\ndeduces\ndeducible\ndeducing\ndeduct\ndeducted\ndeductibility\ndeductible\ndeducting\ndeduction\ndeductions\ndeductive\ndeductively\ndeducts\ndee\ndeed\ndeeded\ndeedier\ndeediest\ndeeding\ndeedless\ndeeds\ndeedy\ndeejay\ndeejays\ndeem\ndeemed\ndeeming\ndeems\ndeemster\ndeemsters\ndeep\ndeepen\ndeepened\ndeepener\ndeepeners\ndeepening\ndeepens\ndeeper\ndeepest\ndeeply\ndeepness\ndeepnesses\ndeeps\ndeer\ndeerflies\ndeerfly\ndeers\ndeerskin\ndeerskins\ndeerweed\ndeerweeds\ndeeryard\ndeeryards\ndees\ndeet\ndeets\ndeewan\ndeewans\ndeface\ndefaced\ndefacement\ndefacements\ndefacer\ndefacers\ndefaces\ndefacing\ndefalcate\ndefalcated\ndefalcates\ndefalcating\ndefalcation\ndefalcations\ndefalcator\ndefalcators\ndefamation\ndefamations\ndefame\ndefamed\ndefamer\ndefamers\ndefames\ndefaming\ndefat\ndefats\ndefatted\ndefatting\ndefault\ndefaulted\ndefaulter\ndefaulters\ndefaulting\ndefaults\ndefeat\ndefeated\ndefeater\ndefeaters\ndefeating\ndefeatism\ndefeatist\ndefeatists\ndefeats\ndefecate\ndefecated\ndefecates\ndefecating\ndefecation\ndefecations\ndefect\ndefected\ndefecting\ndefection\ndefections\ndefective\ndefectively\ndefectiveness\ndefector\ndefectors\ndefects\ndefence\ndefences\ndefend\ndefendable\ndefendant\ndefendants\ndefended\ndefender\ndefenders\ndefending\ndefends\ndefense\ndefensed\ndefenseless\ndefenselessly\ndefenselessness\ndefenses\ndefensibility\ndefensible\ndefensibly\ndefensing\ndefensive\ndefensively\ndefensiveness\ndefensives\ndefer\ndeference\ndeferences\ndeferent\ndeferential\ndeferentially\ndeferents\ndeferment\ndeferments\ndeferrable\ndeferral\ndeferrals\ndeferred\ndeferrer\ndeferrers\ndeferring\ndefers\ndefi\ndefiance\ndefiances\ndefiant\ndefiantly\ndeficiencies\ndeficiency\ndeficient\ndeficiently\ndeficients\ndeficit\ndeficits\ndefied\ndefier\ndefiers\ndefies\ndefilade\ndefiladed\ndefilades\ndefilading\ndefile\ndefiled\ndefilement\ndefilements\ndefiler\ndefilers\ndefiles\ndefiling\ndefinable\ndefinably\ndefine\ndefined\ndefiner\ndefiners\ndefines\ndefining\ndefinite\ndefinitely\ndefiniteness\ndefinition\ndefinitional\ndefinitions\ndefinitive\ndefinitively\ndefinitiveness\ndefis\ndeflate\ndeflated\ndeflates\ndeflating\ndeflation\ndeflationary\ndeflations\ndeflator\ndeflators\ndeflea\ndefleaed\ndefleaing\ndefleas\ndeflect\ndeflectable\ndeflected\ndeflecting\ndeflection\ndeflections\ndeflective\ndeflector\ndeflectors\ndeflects\ndeflexed\ndeflower\ndeflowered\ndeflowering\ndeflowers\ndefoam\ndefoamed\ndefoamer\ndefoamers\ndefoaming\ndefoams\ndefog\ndefogged\ndefogger\ndefoggers\ndefogging\ndefogs\ndefoliant\ndefoliants\ndefoliate\ndefoliated\ndefoliates\ndefoliating\ndefoliation\ndefoliations\ndefoliator\ndefoliators\ndeforce\ndeforced\ndeforces\ndeforcing\ndeforest\ndeforestation\ndeforestations\ndeforested\ndeforesting\ndeforests\ndeform\ndeformation\ndeformations\ndeformed\ndeformer\ndeformers\ndeforming\ndeformities\ndeformity\ndeforms\ndefraud\ndefraudation\ndefraudations\ndefrauded\ndefrauder\ndefrauders\ndefrauding\ndefrauds\ndefray\ndefrayable\ndefrayal\ndefrayals\ndefrayed\ndefrayer\ndefrayers\ndefraying\ndefrays\ndefrock\ndefrocked\ndefrocking\ndefrocks\ndefrost\ndefrosted\ndefroster\ndefrosters\ndefrosting\ndefrosts\ndeft\ndefter\ndeftest\ndeftly\ndeftness\ndeftnesses\ndefunct\ndefuse\ndefused\ndefuses\ndefusing\ndefuze\ndefuzed\ndefuzes\ndefuzing\ndefy\ndefying\ndegage\ndegame\ndegames\ndegami\ndegamis\ndegas\ndegases\ndegassed\ndegasser\ndegassers\ndegasses\ndegassing\ndegauss\ndegaussed\ndegausser\ndegaussers\ndegausses\ndegaussing\ndegeneracies\ndegeneracy\ndegenerate\ndegenerated\ndegenerately\ndegenerateness\ndegenerates\ndegenerating\ndegeneration\ndegenerations\ndegenerative\ndegerm\ndegermed\ndegerming\ndegerms\ndeglaze\ndeglazed\ndeglazes\ndeglazing\ndegradation\ndegradations\ndegrade\ndegraded\ndegradedly\ndegrader\ndegraders\ndegrades\ndegrading\ndegradingly\ndegrease\ndegreased\ndegreases\ndegreasing\ndegree\ndegreed\ndegrees\ndegum\ndegummed\ndegumming\ndegums\ndegust\ndegusted\ndegusting\ndegusts\ndehisce\ndehisced\ndehisces\ndehiscing\ndehorn\ndehorned\ndehorner\ndehorners\ndehorning\ndehorns\ndehort\ndehorted\ndehorting\ndehorts\ndehumanization\ndehumanizations\ndehumanize\ndehumanized\ndehumanizes\ndehumanizing\ndehumidification\ndehumidified\ndehumidifier\ndehumidifiers\ndehumidifies\ndehumidify\ndehumidifying\ndehydrate\ndehydrated\ndehydrates\ndehydrating\ndehydration\ndehydrations\ndehydrator\ndehydrators\ndei\ndeice\ndeiced\ndeicer\ndeicers\ndeices\ndeicidal\ndeicide\ndeicides\ndeicing\ndeictic\ndeific\ndeifical\ndeification\ndeifications\ndeified\ndeifier\ndeifiers\ndeifies\ndeiform\ndeify\ndeifying\ndeign\ndeigned\ndeigning\ndeigns\ndeil\ndeils\ndeionize\ndeionized\ndeionizes\ndeionizing\ndeism\ndeisms\ndeist\ndeistic\ndeistical\ndeistically\ndeists\ndeities\ndeity\ndeject\ndejecta\ndejected\ndejectedly\ndejectedness\ndejecting\ndejection\ndejections\ndejects\ndejeuner\ndejeuners\ndekagram\ndekagrams\ndekare\ndekares\ndeke\ndeked\ndekes\ndeking\ndekko\ndel\ndelaine\ndelaines\ndelate\ndelated\ndelates\ndelating\ndelation\ndelations\ndelator\ndelators\ndelay\ndelayed\ndelayer\ndelayers\ndelaying\ndelays\ndele\ndelead\ndeleaded\ndeleading\ndeleads\ndelectability\ndelectable\ndelectably\ndelectation\ndelectations\ndeled\ndelegable\ndelegacies\ndelegacy\ndelegate\ndelegated\ndelegates\ndelegating\ndelegation\ndelegations\ndeleing\ndeles\ndelete\ndeleted\ndeleterious\ndeleteriously\ndeleteriousness\ndeletes\ndeleting\ndeletion\ndeletions\ndelf\ndelfs\ndelft\ndelfts\ndelftware\ndelftwares\ndeli\ndeliberate\ndeliberated\ndeliberately\ndeliberateness\ndeliberates\ndeliberating\ndeliberation\ndeliberations\ndeliberative\ndeliberatively\ndeliberativeness\ndelicacies\ndelicacy\ndelicate\ndelicately\ndelicateness\ndelicates\ndelicatessen\ndelicatessens\ndelicious\ndeliciously\ndeliciousness\ndelict\ndelicts\ndelight\ndelighted\ndelightedly\ndelightful\ndelightfully\ndelightfulness\ndelighting\ndelights\ndelightsome\ndelime\ndelimed\ndelimes\ndeliming\ndelimit\ndelimitation\ndelimitations\ndelimitative\ndelimited\ndelimiting\ndelimits\ndelineate\ndelineated\ndelineates\ndelineating\ndelineation\ndelineations\ndelineative\ndelineator\ndelineators\ndelinquencies\ndelinquency\ndelinquent\ndelinquently\ndelinquents\ndeliquesce\ndeliquesced\ndeliquescence\ndeliquescences\ndeliquesces\ndeliquescing\ndeliria\ndelirious\ndeliriously\ndeliriousness\ndelirium\ndeliriums\ndelis\ndelist\ndelisted\ndelisting\ndelists\ndeliver\ndeliverable\ndeliverance\ndeliverances\ndelivered\ndeliverer\ndeliverers\ndeliveries\ndelivering\ndelivers\ndelivery\ndell\ndellies\ndells\ndelly\ndelouse\ndeloused\ndelouses\ndelousing\ndelphinium\ndelphiniums\ndels\ndelta\ndeltaic\ndeltas\ndeltic\ndeltoid\ndeltoids\ndelude\ndeluded\ndeluder\ndeluders\ndeludes\ndeluding\ndeludingly\ndeluge\ndeluged\ndeluges\ndeluging\ndelusion\ndelusional\ndelusions\ndelusive\ndelusively\ndelusiveness\ndelusory\ndeluster\ndelustered\ndelustering\ndelusters\ndeluxe\ndelve\ndelved\ndelver\ndelvers\ndelves\ndelving\ndemagnetization\ndemagnetizations\ndemagnetize\ndemagnetized\ndemagnetizer\ndemagnetizers\ndemagnetizes\ndemagnetizing\ndemagog\ndemagogic\ndemagogical\ndemagogically\ndemagogies\ndemagogs\ndemagogue\ndemagoguery\ndemagogues\ndemagogy\ndemand\ndemandable\ndemanded\ndemander\ndemanders\ndemanding\ndemandingly\ndemands\ndemarcate\ndemarcated\ndemarcates\ndemarcating\ndemarcation\ndemarcations\ndemarche\ndemarches\ndemark\ndemarked\ndemarking\ndemarks\ndemast\ndemasted\ndemasting\ndemasts\ndematerialization\ndematerializations\ndematerialize\ndematerialized\ndematerializes\ndematerializing\ndeme\ndemean\ndemeaned\ndemeaning\ndemeanor\ndemeanors\ndemeans\ndement\ndemented\ndementedly\ndementedness\ndementia\ndementias\ndementing\ndements\ndemerit\ndemerited\ndemeriting\ndemerits\ndemes\ndemesne\ndemesnes\ndemies\ndemigod\ndemigoddess\ndemigoddesses\ndemigods\ndemijohn\ndemijohns\ndemilitarization\ndemilitarizations\ndemilitarize\ndemilitarized\ndemilitarizes\ndemilitarizing\ndemilune\ndemilunes\ndemimonde\ndemimondes\ndemirep\ndemireps\ndemise\ndemised\ndemises\ndemising\ndemit\ndemitasse\ndemitasses\ndemits\ndemitted\ndemitting\ndemiurge\ndemiurges\ndemivolt\ndemivolts\ndemo\ndemob\ndemobbed\ndemobbing\ndemobilization\ndemobilizations\ndemobilize\ndemobilized\ndemobilizes\ndemobilizing\ndemobs\ndemocracies\ndemocracy\ndemocrat\ndemocratic\ndemocratically\ndemocratization\ndemocratizations\ndemocratize\ndemocratized\ndemocratizes\ndemocratizing\ndemocrats\ndemode\ndemoded\ndemodulate\ndemodulated\ndemodulates\ndemodulating\ndemodulation\ndemodulations\ndemodulator\ndemodulators\ndemographer\ndemographers\ndemographic\ndemographically\ndemographics\ndemolish\ndemolished\ndemolisher\ndemolishers\ndemolishes\ndemolishing\ndemolishment\ndemolishments\ndemolition\ndemolitionist\ndemolitionists\ndemolitions\ndemon\ndemoness\ndemonesses\ndemonetization\ndemonetizations\ndemonetize\ndemonetized\ndemonetizes\ndemonetizing\ndemoniac\ndemoniacal\ndemoniacally\ndemoniacs\ndemonian\ndemonic\ndemonically\ndemonise\ndemonised\ndemonises\ndemonising\ndemonism\ndemonisms\ndemonist\ndemonists\ndemonize\ndemonized\ndemonizes\ndemonizing\ndemonology\ndemons\ndemonstrability\ndemonstrable\ndemonstrableness\ndemonstrably\ndemonstrate\ndemonstrated\ndemonstrates\ndemonstrating\ndemonstration\ndemonstrational\ndemonstrations\ndemonstrative\ndemonstratively\ndemonstrativeness\ndemonstrator\ndemonstrators\ndemoralization\ndemoralizations\ndemoralize\ndemoralized\ndemoralizer\ndemoralizers\ndemoralizes\ndemoralizing\ndemos\ndemoses\ndemote\ndemoted\ndemotes\ndemotic\ndemotics\ndemoting\ndemotion\ndemotions\ndemotist\ndemotists\ndemount\ndemountable\ndemounted\ndemounting\ndemounts\ndempster\ndempsters\ndemur\ndemure\ndemurely\ndemureness\ndemurer\ndemurest\ndemurrage\ndemurrages\ndemurral\ndemurrals\ndemurred\ndemurrer\ndemurrers\ndemurring\ndemurs\ndemy\ndemythologization\ndemythologizations\ndemythologize\ndemythologized\ndemythologizes\ndemythologizing\nden\ndenarii\ndenarius\ndenary\ndenationalization\ndenationalizations\ndenationalize\ndenationalized\ndenationalizes\ndenationalizing\ndenaturalization\ndenaturalizations\ndenaturalize\ndenaturalized\ndenaturalizes\ndenaturalizing\ndenaturant\ndenaturants\ndenaturation\ndenaturations\ndenature\ndenatured\ndenatures\ndenaturing\ndenazified\ndenazifies\ndenazify\ndenazifying\ndendrite\ndendrites\ndendroid\ndendron\ndendrons\ndene\ndenes\ndengue\ndengues\ndeniable\ndeniably\ndenial\ndenials\ndenied\ndenier\ndeniers\ndenies\ndenigrate\ndenigrated\ndenigrates\ndenigrating\ndenigration\ndenigrations\ndenigrator\ndenigrators\ndenim\ndenims\ndenizen\ndenizened\ndenizening\ndenizens\ndenned\ndenning\ndenominate\ndenominated\ndenominates\ndenominating\ndenomination\ndenominational\ndenominationalism\ndenominationally\ndenominations\ndenominative\ndenominator\ndenominators\ndenotation\ndenotations\ndenotative\ndenote\ndenoted\ndenotement\ndenotements\ndenotes\ndenoting\ndenotive\ndenouement\ndenouements\ndenounce\ndenounced\ndenouncement\ndenouncements\ndenouncer\ndenouncers\ndenounces\ndenouncing\ndens\ndense\ndensely\ndenseness\ndenser\ndensest\ndensified\ndensifies\ndensify\ndensifying\ndensities\ndensity\ndent\ndental\ndentalia\ndentally\ndentals\ndentate\ndentated\ndented\ndenticle\ndenticles\ndentifrice\ndentifrices\ndentil\ndentils\ndentin\ndentinal\ndentine\ndentines\ndenting\ndentins\ndentist\ndentistry\ndentists\ndentition\ndentitions\ndentoid\ndents\ndentural\ndenture\ndentures\ndenudate\ndenudated\ndenudates\ndenudating\ndenudation\ndenudations\ndenude\ndenuded\ndenuder\ndenuders\ndenudes\ndenuding\ndenunciation\ndenunciations\ndenunciative\ndenunciatory\ndeny\ndenying\ndeodand\ndeodands\ndeodar\ndeodara\ndeodaras\ndeodars\ndeodorant\ndeodorants\ndeodorization\ndeodorizations\ndeodorize\ndeodorized\ndeodorizer\ndeodorizers\ndeodorizes\ndeodorizing\ndepaint\ndepainted\ndepainting\ndepaints\ndepart\ndeparted\ndeparting\ndepartment\ndepartmental\ndepartmentalization\ndepartmentalizations\ndepartmentalize\ndepartmentalized\ndepartmentalizes\ndepartmentalizing\ndepartmentally\ndepartments\ndeparts\ndeparture\ndepartures\ndepend\ndependability\ndependable\ndependableness\ndependably\ndepended\ndependence\ndependences\ndependencies\ndependency\ndependent\ndependently\ndependents\ndepending\ndepends\ndeperm\ndepermed\ndeperming\ndeperms\ndepict\ndepicted\ndepicter\ndepicters\ndepicting\ndepiction\ndepictions\ndepictor\ndepictors\ndepicts\ndepilate\ndepilated\ndepilates\ndepilating\ndepilatories\ndepilatory\ndeplane\ndeplaned\ndeplanes\ndeplaning\ndeplete\ndepleted\ndepletes\ndepleting\ndepletion\ndepletions\ndepletive\ndeplorable\ndeplorableness\ndeplorably\ndeplore\ndeplored\ndeplorer\ndeplorers\ndeplores\ndeploring\ndeploy\ndeployed\ndeploying\ndeployment\ndeployments\ndeploys\ndeplume\ndeplumed\ndeplumes\ndepluming\ndepolish\ndepolished\ndepolishes\ndepolishing\ndepone\ndeponed\ndeponent\ndeponents\ndepones\ndeponing\ndepopulate\ndepopulated\ndepopulates\ndepopulating\ndepopulation\ndepopulations\ndeport\ndeportable\ndeportation\ndeportations\ndeported\ndeportee\ndeportees\ndeporting\ndeportment\ndeportments\ndeports\ndeposal\ndeposals\ndepose\ndeposed\ndeposer\ndeposers\ndeposes\ndeposing\ndeposit\ndepositaries\ndepositary\ndeposited\ndepositing\ndeposition\ndepositional\ndepositions\ndepositor\ndepositories\ndepositors\ndepository\ndeposits\ndepot\ndepots\ndepravation\ndepravations\ndeprave\ndepraved\ndepravedly\ndepravedness\ndepraver\ndepravers\ndepraves\ndepraving\ndepravities\ndepravity\ndeprecate\ndeprecated\ndeprecates\ndeprecating\ndeprecatingly\ndeprecation\ndeprecations\ndeprecatorily\ndeprecatory\ndepreciable\ndepreciate\ndepreciated\ndepreciates\ndepreciating\ndepreciatingly\ndepreciation\ndepreciations\ndepreciative\ndepreciator\ndepreciators\ndepreciatory\ndepredate\ndepredated\ndepredates\ndepredating\ndepredation\ndepredations\ndepredator\ndepredators\ndepredatory\ndepress\ndepressant\ndepressants\ndepressed\ndepresses\ndepressible\ndepressing\ndepressingly\ndepression\ndepressions\ndepressive\ndepressively\ndepressor\ndepressors\ndepressurization\ndepressurizations\ndepressurize\ndepressurized\ndepressurizes\ndepressurizing\ndeprival\ndeprivals\ndeprivation\ndeprivations\ndeprive\ndeprived\ndepriver\ndeprivers\ndeprives\ndepriving\ndepside\ndepsides\ndepth\ndepths\ndepurate\ndepurated\ndepurates\ndepurating\ndeputation\ndeputations\ndepute\ndeputed\ndeputes\ndeputies\ndeputing\ndeputize\ndeputized\ndeputizes\ndeputizing\ndeputy\nderaign\nderaigned\nderaigning\nderaigns\nderail\nderailed\nderailing\nderailment\nderailments\nderails\nderange\nderanged\nderangement\nderangements\nderanges\nderanging\nderat\nderats\nderatted\nderatting\nderay\nderays\nderbies\nderby\ndere\nderegulate\nderegulated\nderegulates\nderegulation\nderegulations\nderelict\ndereliction\nderelictions\nderelicts\nderide\nderided\nderider\nderiders\nderides\nderiding\nderidingly\nderinger\nderingers\nderision\nderisions\nderisive\nderisively\nderisiveness\nderisory\nderivable\nderivate\nderivates\nderivation\nderivational\nderivations\nderivative\nderivatively\nderivativeness\nderivatives\nderive\nderived\nderiver\nderivers\nderives\nderiving\nderm\nderma\ndermal\ndermas\ndermatological\ndermatologist\ndermatologists\ndermatology\ndermic\ndermis\ndermises\ndermoid\nderms\ndernier\nderogate\nderogated\nderogates\nderogating\nderogation\nderogations\nderogative\nderogatorily\nderogatory\nderrick\nderricks\nderriere\nderrieres\nderries\nderringer\nderringers\nderris\nderrises\nderry\ndervish\ndervishes\ndes\ndesalt\ndesalted\ndesalter\ndesalters\ndesalting\ndesalts\ndesand\ndesanded\ndesanding\ndesands\ndescant\ndescanted\ndescanting\ndescants\ndescend\ndescendant\ndescendants\ndescended\ndescendent\ndescendents\ndescending\ndescends\ndescent\ndescents\ndescribable\ndescribe\ndescribed\ndescriber\ndescribers\ndescribes\ndescribing\ndescried\ndescrier\ndescriers\ndescries\ndescription\ndescriptions\ndescriptive\ndescriptively\ndescriptiveness\ndescriptor\ndescriptors\ndescry\ndescrying\ndesecrate\ndesecrated\ndesecrater\ndesecraters\ndesecrates\ndesecrating\ndesecration\ndesecrations\ndesecrator\ndesecrators\ndesegregate\ndesegregated\ndesegregates\ndesegregating\ndesegregation\ndesegregations\ndeselect\ndeselected\ndeselecting\ndeselects\ndesensitization\ndesensitizations\ndesensitize\ndesensitized\ndesensitizer\ndesensitizers\ndesensitizes\ndesensitizing\ndesert\ndeserted\ndeserter\ndeserters\ndesertic\ndeserting\ndesertion\ndesertions\ndeserts\ndeserve\ndeserved\ndeservedly\ndeservedness\ndeserver\ndeservers\ndeserves\ndeserving\ndesex\ndesexed\ndesexes\ndesexing\ndesiccant\ndesiccants\ndesiccate\ndesiccated\ndesiccates\ndesiccating\ndesiccation\ndesiccations\ndesiccative\ndesiccator\ndesiccators\ndesign\ndesignate\ndesignated\ndesignates\ndesignating\ndesignation\ndesignations\ndesignative\ndesignator\ndesignators\ndesignatory\ndesigned\ndesignedly\ndesignee\ndesignees\ndesigner\ndesigners\ndesigning\ndesigns\ndesilver\ndesilvered\ndesilvering\ndesilvers\ndesinent\ndesirability\ndesirable\ndesirableness\ndesirables\ndesirably\ndesire\ndesired\ndesirer\ndesirers\ndesires\ndesiring\ndesirous\ndesirously\ndesirousness\ndesist\ndesistance\ndesisted\ndesisting\ndesists\ndesk\ndeskman\ndeskmen\ndesks\ndesman\ndesmans\ndesmid\ndesmids\ndesmoid\ndesmoids\ndesolate\ndesolated\ndesolately\ndesolater\ndesolaters\ndesolates\ndesolating\ndesolation\ndesolations\ndesolator\ndesolators\ndesorb\ndesorbed\ndesorbing\ndesorbs\ndespair\ndespaired\ndespairing\ndespairingly\ndespairs\ndespatch\ndespatched\ndespatcher\ndespatchers\ndespatches\ndespatching\ndesperado\ndesperadoes\ndesperados\ndesperate\ndesperately\ndesperateness\ndesperation\ndespicable\ndespicableness\ndespicably\ndespise\ndespised\ndespiser\ndespisers\ndespises\ndespising\ndespite\ndespited\ndespiteful\ndespitefully\ndespitefulness\ndespites\ndespiting\ndespoil\ndespoiled\ndespoiler\ndespoilers\ndespoiling\ndespoilment\ndespoilments\ndespoils\ndespoliation\ndespoliations\ndespond\ndesponded\ndespondence\ndespondencies\ndespondency\ndespondent\ndespondently\ndesponding\ndesponds\ndespot\ndespotic\ndespotically\ndespotism\ndespotisms\ndespots\ndessert\ndesserts\ndestabilization\ndestabilizations\ndestabilize\ndestabilized\ndestabilizes\ndestabilizing\ndestain\ndestained\ndestaining\ndestains\ndestination\ndestinations\ndestine\ndestined\ndestines\ndestinies\ndestining\ndestiny\ndestitute\ndestitution\ndestitutions\ndestrier\ndestriers\ndestroy\ndestroyed\ndestroyer\ndestroyers\ndestroying\ndestroys\ndestruct\ndestructed\ndestructible\ndestructing\ndestruction\ndestructions\ndestructive\ndestructively\ndestructiveness\ndestructor\ndestructors\ndestructs\ndesuetude\ndesugar\ndesugared\ndesugaring\ndesugars\ndesulfur\ndesulfured\ndesulfuring\ndesulfurs\ndesultorily\ndesultoriness\ndesultory\ndetach\ndetachability\ndetachable\ndetachably\ndetached\ndetachedly\ndetachedness\ndetacher\ndetachers\ndetaches\ndetaching\ndetachment\ndetachments\ndetail\ndetailed\ndetailer\ndetailers\ndetailing\ndetails\ndetain\ndetained\ndetainee\ndetainees\ndetainer\ndetainers\ndetaining\ndetainment\ndetainments\ndetains\ndetect\ndetectable\ndetected\ndetecter\ndetecters\ndetecting\ndetection\ndetections\ndetective\ndetectives\ndetector\ndetectors\ndetects\ndetent\ndetente\ndetentes\ndetention\ndetentions\ndetents\ndeter\ndeterge\ndeterged\ndetergency\ndetergent\ndetergents\ndeterger\ndetergers\ndeterges\ndeterging\ndeteriorate\ndeteriorated\ndeteriorates\ndeteriorating\ndeterioration\ndeteriorations\ndeteriorative\ndeterminable\ndeterminableness\ndeterminably\ndeterminant\ndeterminants\ndeterminate\ndeterminates\ndetermination\ndeterminations\ndeterminative\ndetermine\ndetermined\ndeterminedly\ndeterminedness\ndeterminer\ndeterminers\ndetermines\ndetermining\ndeterminism\ndeterminist\ndeterministic\ndeterministically\ndeterminists\ndeterred\ndeterrence\ndeterrences\ndeterrent\ndeterrently\ndeterrents\ndeterrer\ndeterrers\ndeterring\ndeters\ndetersive\ndetersives\ndetest\ndetestable\ndetestableness\ndetestably\ndetestation\ndetestations\ndetested\ndetester\ndetesters\ndetesting\ndetests\ndethrone\ndethroned\ndethronement\ndethronements\ndethrones\ndethroning\ndetick\ndeticked\ndeticker\ndetickers\ndeticking\ndeticks\ndetinue\ndetinues\ndetonate\ndetonated\ndetonates\ndetonating\ndetonation\ndetonations\ndetonative\ndetonator\ndetonators\ndetour\ndetoured\ndetouring\ndetours\ndetox\ndetoxified\ndetoxifies\ndetoxify\ndetoxifying\ndetract\ndetracted\ndetracting\ndetractingly\ndetraction\ndetractions\ndetractive\ndetractively\ndetractor\ndetractors\ndetracts\ndetrain\ndetrained\ndetraining\ndetrainment\ndetrainments\ndetrains\ndetriment\ndetrimental\ndetrimentally\ndetriments\ndetrital\ndetritus\ndetrude\ndetruded\ndetrudes\ndetruding\ndeuce\ndeuced\ndeucedly\ndeuces\ndeucing\ndeuteric\ndeuterium\ndeuteron\ndeuterons\ndeutschemark\ndeutschemarks\ndeutzia\ndeutzias\ndev\ndeva\ndevaluate\ndevaluated\ndevaluates\ndevaluating\ndevaluation\ndevaluations\ndevalue\ndevalued\ndevalues\ndevaluing\ndevas\ndevastate\ndevastated\ndevastates\ndevastating\ndevastation\ndevastations\ndevastative\ndevastator\ndevastators\ndevein\ndeveined\ndeveining\ndeveins\ndevel\ndeveled\ndeveling\ndevelop\ndevelopable\ndevelope\ndeveloped\ndeveloper\ndevelopers\ndevelopes\ndeveloping\ndevelopment\ndevelopmental\ndevelopmentally\ndevelopments\ndevelops\ndevels\ndevest\ndevested\ndevesting\ndevests\ndeviance\ndeviances\ndeviancies\ndeviancy\ndeviant\ndeviants\ndeviate\ndeviated\ndeviates\ndeviating\ndeviation\ndeviations\ndeviator\ndeviators\ndeviatory\ndevice\ndevices\ndevil\ndeviled\ndeviling\ndevilish\ndevilishly\ndevilishness\ndevilkin\ndevilkins\ndevilled\ndevilling\ndevilment\ndevilments\ndevilries\ndevilry\ndevils\ndeviltries\ndeviltry\ndevious\ndeviously\ndeviousness\ndevisal\ndevisals\ndevise\ndevised\ndevisee\ndevisees\ndeviser\ndevisers\ndevises\ndevising\ndevisor\ndevisors\ndevitalize\ndevitalized\ndevitalizes\ndevitalizing\ndevoice\ndevoiced\ndevoices\ndevoicing\ndevoid\ndevoir\ndevoirs\ndevolution\ndevolutionary\ndevolutionist\ndevolutions\ndevolve\ndevolved\ndevolves\ndevolving\ndevon\ndevons\ndevote\ndevoted\ndevotedly\ndevotedness\ndevotee\ndevotees\ndevotes\ndevoting\ndevotion\ndevotional\ndevotionally\ndevotionals\ndevotions\ndevour\ndevoured\ndevourer\ndevourers\ndevouring\ndevours\ndevout\ndevoutly\ndevoutness\ndevs\ndew\ndewan\ndewans\ndewar\ndewater\ndewatered\ndewatering\ndewaters\ndewax\ndewaxed\ndewaxes\ndewaxing\ndewberries\ndewberry\ndewclaw\ndewclaws\ndewdrop\ndewdrops\ndewed\ndewfall\ndewfalls\ndewier\ndewiest\ndewily\ndewiness\ndewinesses\ndewing\ndewlap\ndewlaps\ndewless\ndewool\ndewooled\ndewooling\ndewools\ndeworm\ndewormed\ndeworming\ndeworms\ndews\ndewy\ndex\ndexes\ndexie\ndexies\ndexter\ndexterities\ndexterity\ndexterous\ndexterously\ndexterousness\ndextral\ndextran\ndextrans\ndextrin\ndextrine\ndextrines\ndextrins\ndextro\ndextrose\ndextroses\ndextrous\ndexy\ndey\ndeys\ndezinc\ndezinced\ndezincing\ndezincked\ndezincking\ndezincs\ndhak\ndhaks\ndhal\ndhals\ndharma\ndharmas\ndharmic\ndharna\ndharnas\ndhobi\ndhole\ndholes\ndhoolies\ndhooly\ndhoora\ndhooras\ndhooti\ndhootie\ndhooties\ndhootis\ndhoti\ndhotis\ndhourra\ndhourras\ndhow\ndhows\ndhurna\ndhurnas\ndhuti\ndhutis\ndiabase\ndiabases\ndiabasic\ndiabetes\ndiabetic\ndiabetics\ndiableries\ndiablery\ndiabolic\ndiabolical\ndiabolically\ndiabolicalness\ndiabolism\ndiabolist\ndiabolists\ndiabolo\ndiabolos\ndiacetyl\ndiacetyls\ndiacid\ndiacidic\ndiacids\ndiaconal\ndiacritic\ndiacritical\ndiacritics\ndiadem\ndiademed\ndiademing\ndiadems\ndiagnosable\ndiagnose\ndiagnosed\ndiagnoses\ndiagnosing\ndiagnosis\ndiagnostic\ndiagnostically\ndiagnostician\ndiagnosticians\ndiagnostics\ndiagonal\ndiagonally\ndiagonals\ndiagram\ndiagramed\ndiagraming\ndiagrammatic\ndiagrammatically\ndiagrammed\ndiagramming\ndiagrams\ndiagraph\ndiagraphs\ndial\ndialect\ndialectal\ndialectally\ndialectic\ndialectical\ndialectically\ndialectician\ndialecticians\ndialectics\ndialectologist\ndialectologists\ndialectology\ndialects\ndialed\ndialer\ndialers\ndialing\ndialings\ndialist\ndialists\ndiallage\ndiallages\ndialled\ndiallel\ndialler\ndiallers\ndialling\ndiallings\ndiallist\ndiallists\ndialog\ndialoged\ndialoger\ndialogers\ndialogged\ndialogging\ndialogic\ndialogical\ndialogically\ndialoging\ndialogist\ndialogistic\ndialogists\ndialogs\ndialogue\ndialogued\ndialogues\ndialoguing\ndials\ndialyse\ndialysed\ndialyser\ndialysers\ndialyses\ndialysing\ndialysis\ndialytic\ndialyzable\ndialyze\ndialyzed\ndialyzer\ndialyzers\ndialyzes\ndialyzing\ndiamagnet\ndiamagnetic\ndiamagnetism\ndiameter\ndiameters\ndiametric\ndiametrical\ndiametrically\ndiamide\ndiamides\ndiamin\ndiamine\ndiamines\ndiamins\ndiamond\ndiamondback\ndiamondbacks\ndiamonded\ndiamonding\ndiamonds\ndianthus\ndianthuses\ndiapason\ndiapasons\ndiapause\ndiapaused\ndiapauses\ndiapausing\ndiaper\ndiapered\ndiapering\ndiapers\ndiaphanous\ndiaphanously\ndiaphanousness\ndiaphone\ndiaphones\ndiaphonies\ndiaphony\ndiaphragm\ndiaphragmatic\ndiaphragmatically\ndiaphragms\ndiapir\ndiapiric\ndiapirs\ndiapsid\ndiarchic\ndiarchies\ndiarchy\ndiaries\ndiarist\ndiarists\ndiarrhea\ndiarrheas\ndiarrhoea\ndiarrhoeas\ndiary\ndiaspora\ndiasporas\ndiaspore\ndiaspores\ndiastase\ndiastases\ndiastema\ndiastemata\ndiaster\ndiasters\ndiastole\ndiastoles\ndiastolic\ndiastral\ndiastrophism\ndiastrophisms\ndiatom\ndiatomic\ndiatomite\ndiatoms\ndiatonic\ndiatonically\ndiatribe\ndiatribes\ndiazepam\ndiazepams\ndiazin\ndiazine\ndiazines\ndiazins\ndiazo\ndiazole\ndiazoles\ndib\ndibasic\ndibbed\ndibber\ndibbers\ndibbing\ndibble\ndibbled\ndibbler\ndibblers\ndibbles\ndibbling\ndibbuk\ndibbukim\ndibbuks\ndibs\ndicast\ndicastic\ndicasts\ndice\ndiced\ndicentra\ndicentras\ndicer\ndicers\ndices\ndicey\ndichasia\ndichotic\ndichotomies\ndichotomist\ndichotomists\ndichotomization\ndichotomizations\ndichotomize\ndichotomized\ndichotomizes\ndichotomizing\ndichotomous\ndichotomously\ndichotomy\ndichroic\ndicier\ndiciest\ndicing\ndick\ndickens\ndickenses\ndicker\ndickered\ndickering\ndickers\ndickey\ndickeys\ndickie\ndickies\ndicks\ndicky\ndiclinies\ndicliny\ndicot\ndicots\ndicotyl\ndicotyledon\ndicotyledonous\ndicotyledons\ndicotyls\ndicrotal\ndicrotic\ndicta\ndictate\ndictated\ndictates\ndictating\ndictation\ndictations\ndictator\ndictatorial\ndictatorially\ndictatorialness\ndictators\ndictatorship\ndictatorships\ndiction\ndictionaries\ndictionary\ndictions\ndictum\ndictums\ndicty\ndicyclic\ndicyclies\ndicycly\ndid\ndidact\ndidactic\ndidactical\ndidactically\ndidacticism\ndidactics\ndidacts\ndidactyl\ndidapper\ndidappers\ndiddle\ndiddled\ndiddler\ndiddlers\ndiddles\ndiddling\ndidie\ndidies\ndido\ndidoes\ndidos\ndidst\ndidy\ndidymium\ndidymiums\ndidymous\ndidynamies\ndidynamy\ndie\ndieback\ndiebacks\ndiecious\ndied\ndiehard\ndiehards\ndieing\ndiel\ndieldrin\ndieldrins\ndielectric\ndielectrics\ndiemaker\ndiemakers\ndiene\ndienes\ndiereses\ndieresis\ndieretic\ndies\ndiesel\ndiesels\ndieses\ndiesis\ndiester\ndiesters\ndiestock\ndiestocks\ndiestrum\ndiestrums\ndiestrus\ndiestruses\ndiet\ndietaries\ndietary\ndieted\ndieter\ndieters\ndietetic\ndietetics\ndietician\ndieticians\ndieting\ndietitian\ndietitians\ndiets\ndiffer\ndiffered\ndifference\ndifferences\ndifferent\ndifferentia\ndifferentiability\ndifferentiable\ndifferentiae\ndifferential\ndifferentials\ndifferentiate\ndifferentiated\ndifferentiates\ndifferentiating\ndifferentiation\ndifferentiations\ndifferently\ndiffering\ndiffers\ndifficult\ndifficulties\ndifficultly\ndifficulty\ndiffidence\ndiffidences\ndiffident\ndiffidently\ndiffract\ndiffracted\ndiffracting\ndiffraction\ndiffractions\ndiffracts\ndiffuse\ndiffused\ndiffusely\ndiffuseness\ndiffuser\ndiffusers\ndiffuses\ndiffusibilities\ndiffusibility\ndiffusible\ndiffusing\ndiffusion\ndiffusions\ndiffusive\ndiffusively\ndiffusiveness\ndiffusor\ndiffusors\ndig\ndigamies\ndigamist\ndigamists\ndigamma\ndigammas\ndigamous\ndigamy\ndigest\ndigested\ndigester\ndigesters\ndigestibility\ndigestible\ndigesting\ndigestion\ndigestions\ndigestive\ndigestively\ndigestor\ndigestors\ndigests\ndigged\ndigger\ndiggers\ndigging\ndiggings\ndight\ndighted\ndighting\ndights\ndigit\ndigital\ndigitalis\ndigitalization\ndigitalizations\ndigitalize\ndigitalized\ndigitalizes\ndigitalizing\ndigitally\ndigitals\ndigitate\ndigitize\ndigitized\ndigitizes\ndigitizing\ndigits\ndiglot\ndiglots\ndignified\ndignifies\ndignify\ndignifying\ndignitaries\ndignitary\ndignities\ndignity\ndigoxin\ndigoxins\ndigraph\ndigraphs\ndigress\ndigressed\ndigresses\ndigressing\ndigression\ndigressional\ndigressions\ndigressive\ndigressively\ndigressiveness\ndigs\ndihedral\ndihedrals\ndihedron\ndihedrons\ndihybrid\ndihybrids\ndihydric\ndikdik\ndikdiks\ndike\ndiked\ndiker\ndikers\ndikes\ndikey\ndiking\ndiktat\ndiktats\ndilapidate\ndilapidated\ndilapidates\ndilapidating\ndilapidation\ndilapidations\ndilatable\ndilatant\ndilatants\ndilatate\ndilatation\ndilatational\ndilatations\ndilate\ndilated\ndilater\ndilaters\ndilates\ndilating\ndilation\ndilations\ndilative\ndilator\ndilatorily\ndilatoriness\ndilators\ndilatory\ndildo\ndildoe\ndildoes\ndildos\ndilemma\ndilemmas\ndilemmatic\ndilemmic\ndilettante\ndilettantes\ndilettantish\ndilettantism\ndilettantisms\ndiligence\ndiligences\ndiligent\ndiligently\ndill\ndillies\ndills\ndilly\ndillydallied\ndillydallies\ndillydally\ndillydallying\ndiluent\ndiluents\ndilute\ndiluted\ndiluteness\ndiluter\ndiluters\ndilutes\ndiluting\ndilution\ndilutions\ndilutive\ndilutor\ndilutors\ndiluvia\ndiluvial\ndiluvian\ndiluvion\ndiluvions\ndiluvium\ndiluviums\ndim\ndime\ndimension\ndimensional\ndimensionality\ndimensionally\ndimensioned\ndimensioning\ndimensionless\ndimensions\ndimer\ndimeric\ndimerism\ndimerisms\ndimerize\ndimerized\ndimerizes\ndimerizing\ndimerous\ndimers\ndimes\ndimeter\ndimeters\ndimethyl\ndimethyls\ndimetric\ndiminish\ndiminishable\ndiminished\ndiminishes\ndiminishing\ndiminishment\ndiminishments\ndiminuendo\ndiminuendos\ndiminution\ndiminutions\ndiminutive\ndiminutively\ndiminutiveness\ndiminutives\ndimities\ndimity\ndimly\ndimmable\ndimmed\ndimmer\ndimmers\ndimmest\ndimming\ndimness\ndimnesses\ndimorph\ndimorphism\ndimorphisms\ndimorphs\ndimout\ndimouts\ndimple\ndimpled\ndimples\ndimplier\ndimpliest\ndimpling\ndimply\ndims\ndimwit\ndimwits\ndin\ndinar\ndinars\ndindle\ndindled\ndindles\ndindling\ndine\ndined\ndiner\ndineric\ndinero\ndineros\ndiners\ndines\ndinette\ndinettes\nding\ndingbat\ndingbats\ndingdong\ndingdonged\ndingdonging\ndingdongs\ndinge\ndinged\ndingey\ndingeys\ndinghies\ndinghy\ndingier\ndingies\ndingiest\ndingily\ndinginess\ndinging\ndingle\ndingles\ndingo\ndingoes\ndings\ndingus\ndinguses\ndingy\ndining\ndink\ndinked\ndinkey\ndinkeys\ndinkier\ndinkies\ndinkiest\ndinking\ndinkly\ndinks\ndinkum\ndinky\ndinned\ndinner\ndinners\ndinnerware\ndinning\ndinosaur\ndinosaurs\ndins\ndint\ndinted\ndinting\ndints\ndiobol\ndiobolon\ndiobolons\ndiobols\ndiocesan\ndiocesans\ndiocese\ndioceses\ndiode\ndiodes\ndioecism\ndioecisms\ndioicous\ndiol\ndiolefin\ndiolefins\ndiols\ndiopside\ndiopsides\ndioptase\ndioptases\ndiopter\ndiopters\ndioptral\ndioptre\ndioptres\ndioptric\ndiorama\ndioramas\ndioramic\ndiorite\ndiorites\ndioritic\ndioxane\ndioxanes\ndioxid\ndioxide\ndioxides\ndioxids\ndip\ndiphase\ndiphasic\ndiphenyl\ndiphenyls\ndiphtheria\ndiphtherial\ndiphtheritic\ndiphtheroid\ndiphtheroids\ndiphthong\ndiphthongal\ndiphthongs\ndiplegia\ndiplegias\ndiplex\ndiploe\ndiploes\ndiploic\ndiploid\ndiploidies\ndiploids\ndiploidy\ndiploma\ndiplomacies\ndiplomacy\ndiplomaed\ndiplomaing\ndiplomas\ndiplomat\ndiplomata\ndiplomate\ndiplomates\ndiplomatic\ndiplomatically\ndiplomats\ndiplont\ndiplonts\ndiplopia\ndiplopias\ndiplopic\ndiplopod\ndiplopods\ndiploses\ndiplosis\ndipnoan\ndipnoans\ndipodic\ndipodies\ndipody\ndipolar\ndipole\ndipoles\ndippable\ndipped\ndipper\ndippers\ndippier\ndippiest\ndipping\ndippy\ndips\ndipsades\ndipsas\ndipso\ndipsomania\ndipsomaniac\ndipsomaniacal\ndipsomaniacs\ndipsomanias\ndipstick\ndipsticks\ndipt\ndiptera\ndipteral\ndipteran\ndipterans\ndipteron\ndiptyca\ndiptycas\ndiptych\ndiptychs\ndiquat\ndiquats\ndirdum\ndirdums\ndire\ndirect\ndirected\ndirecter\ndirectest\ndirecting\ndirection\ndirectional\ndirections\ndirective\ndirectives\ndirectivity\ndirectly\ndirectness\ndirector\ndirectorate\ndirectorates\ndirectorial\ndirectories\ndirectors\ndirectorship\ndirectorships\ndirectory\ndirects\ndireful\ndirefully\ndirely\ndireness\ndirenesses\ndirer\ndirest\ndirge\ndirgeful\ndirges\ndirham\ndirhams\ndirigible\ndirigibles\ndiriment\ndirk\ndirked\ndirking\ndirks\ndirl\ndirled\ndirling\ndirls\ndirndl\ndirndls\ndirt\ndirtied\ndirtier\ndirties\ndirtiest\ndirtily\ndirtiness\ndirts\ndirty\ndirtying\ndisabilities\ndisability\ndisable\ndisabled\ndisablement\ndisablements\ndisables\ndisabling\ndisabuse\ndisabused\ndisabuses\ndisabusing\ndisadvantage\ndisadvantaged\ndisadvantageous\ndisadvantageously\ndisadvantageousness\ndisadvantages\ndisadvantaging\ndisaffect\ndisaffected\ndisaffecting\ndisaffection\ndisaffections\ndisaffects\ndisagree\ndisagreeable\ndisagreeableness\ndisagreeably\ndisagreed\ndisagreeing\ndisagreement\ndisagreements\ndisagrees\ndisallow\ndisallowance\ndisallowances\ndisallowed\ndisallowing\ndisallows\ndisambiguate\ndisambiguated\ndisambiguates\ndisambiguating\ndisambiguation\ndisambiguations\ndisannul\ndisannulled\ndisannulling\ndisannuls\ndisappear\ndisappearance\ndisappearances\ndisappeared\ndisappearing\ndisappears\ndisappoint\ndisappointed\ndisappointedly\ndisappointing\ndisappointingly\ndisappointment\ndisappointments\ndisappoints\ndisapprobation\ndisapprobations\ndisapproval\ndisapprovals\ndisapprove\ndisapproved\ndisapprover\ndisapprovers\ndisapproves\ndisapproving\ndisapprovingly\ndisarm\ndisarmament\ndisarmaments\ndisarmed\ndisarmer\ndisarmers\ndisarming\ndisarmingly\ndisarms\ndisarrange\ndisarranged\ndisarrangement\ndisarrangements\ndisarranges\ndisarranging\ndisarray\ndisarrayed\ndisarraying\ndisarrays\ndisassemble\ndisassembled\ndisassembles\ndisassembling\ndisassembly\ndisassociate\ndisassociated\ndisassociates\ndisassociating\ndisassociation\ndisassociations\ndisaster\ndisasters\ndisastrous\ndisastrously\ndisastrousness\ndisavow\ndisavowal\ndisavowals\ndisavowed\ndisavowing\ndisavows\ndisband\ndisbanded\ndisbanding\ndisbandment\ndisbandments\ndisbands\ndisbar\ndisbarment\ndisbarments\ndisbarred\ndisbarring\ndisbars\ndisbelief\ndisbeliefs\ndisbelieve\ndisbelieved\ndisbeliever\ndisbelievers\ndisbelieves\ndisbelieving\ndisbelievingly\ndisbosom\ndisbosomed\ndisbosoming\ndisbosoms\ndisbound\ndisbowel\ndisboweled\ndisboweling\ndisbowelled\ndisbowelling\ndisbowels\ndisbud\ndisbudded\ndisbudding\ndisbuds\ndisburse\ndisbursed\ndisbursement\ndisbursements\ndisburser\ndisbursers\ndisburses\ndisbursing\ndisc\ndiscant\ndiscanted\ndiscanting\ndiscants\ndiscard\ndiscarded\ndiscarding\ndiscards\ndiscase\ndiscased\ndiscases\ndiscasing\ndisced\ndiscept\ndiscepted\ndiscepting\ndiscepts\ndiscern\ndiscerned\ndiscerner\ndiscerners\ndiscernible\ndiscernibly\ndiscerning\ndiscerningly\ndiscernment\ndiscernments\ndiscerns\ndischarge\ndischargeable\ndischarged\ndischarger\ndischargers\ndischarges\ndischarging\ndisci\ndiscing\ndisciple\ndiscipled\ndisciples\ndiscipleship\ndiscipleships\ndisciplinarian\ndisciplinarians\ndisciplinary\ndiscipline\ndisciplined\ndiscipliner\ndiscipliners\ndisciplines\ndiscipling\ndisciplining\ndisclaim\ndisclaimed\ndisclaimer\ndisclaimers\ndisclaiming\ndisclaims\ndisclike\ndisclose\ndisclosed\ndiscloser\ndisclosers\ndiscloses\ndisclosing\ndisclosure\ndisclosures\ndisco\ndiscographer\ndiscographers\ndiscographies\ndiscography\ndiscoid\ndiscoidal\ndiscoids\ndiscolor\ndiscoloration\ndiscolorations\ndiscolored\ndiscoloring\ndiscolors\ndiscomfit\ndiscomfited\ndiscomfiting\ndiscomfits\ndiscomfiture\ndiscomfitures\ndiscomfort\ndiscomfortable\ndiscomforted\ndiscomforting\ndiscomforts\ndiscompose\ndiscomposed\ndiscomposes\ndiscomposing\ndiscomposure\ndiscomposures\ndisconcert\ndisconcerted\ndisconcerting\ndisconcertingly\ndisconcerts\ndisconnect\ndisconnected\ndisconnectedly\ndisconnectedness\ndisconnecting\ndisconnection\ndisconnections\ndisconnects\ndisconsolate\ndisconsolately\ndisconsolateness\ndisconsolation\ndiscontent\ndiscontented\ndiscontentedly\ndiscontentedness\ndiscontentment\ndiscontentments\ndiscontents\ndiscontinuance\ndiscontinuances\ndiscontinue\ndiscontinued\ndiscontinues\ndiscontinuing\ndiscontinuity\ndiscontinuous\ndiscontinuously\ndiscord\ndiscordance\ndiscordances\ndiscordancies\ndiscordancy\ndiscordant\ndiscordantly\ndiscorded\ndiscording\ndiscords\ndiscos\ndiscotheque\ndiscotheques\ndiscount\ndiscountable\ndiscounted\ndiscountenance\ndiscountenanced\ndiscountenances\ndiscountenancing\ndiscounter\ndiscounters\ndiscounting\ndiscounts\ndiscourage\ndiscouraged\ndiscouragement\ndiscouragements\ndiscourager\ndiscouragers\ndiscourages\ndiscouraging\ndiscouragingly\ndiscourse\ndiscoursed\ndiscourser\ndiscoursers\ndiscourses\ndiscoursing\ndiscourteous\ndiscourteously\ndiscourteousness\ndiscourtesies\ndiscourtesy\ndiscover\ndiscoverable\ndiscovered\ndiscoverer\ndiscoverers\ndiscoveries\ndiscovering\ndiscovers\ndiscovery\ndiscredit\ndiscreditable\ndiscreditably\ndiscredited\ndiscrediting\ndiscredits\ndiscreet\ndiscreeter\ndiscreetest\ndiscreetly\ndiscreetness\ndiscrepancies\ndiscrepancy\ndiscrepant\ndiscrepantly\ndiscrete\ndiscretely\ndiscreteness\ndiscretion\ndiscretional\ndiscretionary\ndiscretions\ndiscriminate\ndiscriminated\ndiscriminates\ndiscriminating\ndiscriminatingly\ndiscrimination\ndiscriminational\ndiscriminations\ndiscriminative\ndiscriminatively\ndiscriminator\ndiscriminators\ndiscriminatory\ndiscrown\ndiscrowned\ndiscrowning\ndiscrowns\ndiscs\ndiscursive\ndiscursively\ndiscursiveness\ndiscus\ndiscuses\ndiscuss\ndiscussable\ndiscussant\ndiscussants\ndiscussed\ndiscusser\ndiscussers\ndiscusses\ndiscussible\ndiscussing\ndiscussion\ndiscussions\ndisdain\ndisdained\ndisdainful\ndisdainfully\ndisdainfulness\ndisdaining\ndisdains\ndisease\ndiseased\ndiseases\ndiseasing\ndisembark\ndisembarkation\ndisembarkations\ndisembarked\ndisembarking\ndisembarks\ndisembarrass\ndisembarrassed\ndisembarrasses\ndisembarrassing\ndisembodied\ndisembodies\ndisembody\ndisembodying\ndisembowel\ndisemboweled\ndisemboweling\ndisembowelment\ndisembowelments\ndisembowels\ndisenchant\ndisenchanted\ndisenchanter\ndisenchanters\ndisenchanting\ndisenchantingly\ndisenchantment\ndisenchantments\ndisenchants\ndisencumber\ndisencumbered\ndisencumbering\ndisencumbers\ndisendow\ndisendowed\ndisendowing\ndisendows\ndisenfranchise\ndisenfranchised\ndisenfranchisement\ndisenfranchisements\ndisenfranchises\ndisenfranchising\ndisengage\ndisengaged\ndisengagement\ndisengagements\ndisengages\ndisengaging\ndisentangle\ndisentangled\ndisentanglement\ndisentanglements\ndisentangles\ndisentangling\ndiseuse\ndiseuses\ndisfavor\ndisfavored\ndisfavoring\ndisfavors\ndisfigure\ndisfigured\ndisfigurement\ndisfigurements\ndisfigures\ndisfiguring\ndisfranchise\ndisfranchised\ndisfranchisement\ndisfranchisements\ndisfranchises\ndisfranchising\ndisfrock\ndisfrocked\ndisfrocking\ndisfrocks\ndisgorge\ndisgorged\ndisgorges\ndisgorging\ndisgrace\ndisgraced\ndisgraceful\ndisgracefully\ndisgracefulness\ndisgracer\ndisgracers\ndisgraces\ndisgracing\ndisgruntle\ndisgruntled\ndisgruntlement\ndisgruntlements\ndisgruntles\ndisgruntling\ndisguise\ndisguised\ndisguisedly\ndisguiser\ndisguisers\ndisguises\ndisguising\ndisgust\ndisgusted\ndisgustedly\ndisgustful\ndisgustfully\ndisgusting\ndisgustingly\ndisgusts\ndish\ndishabille\ndisharmonies\ndisharmonious\ndisharmonize\ndisharmonized\ndisharmonizes\ndisharmonizing\ndisharmony\ndishcloth\ndishcloths\ndishearten\ndisheartened\ndisheartening\ndishearteningly\ndisheartenment\ndisheartenments\ndisheartens\ndished\ndishelm\ndishelmed\ndishelming\ndishelms\ndisherit\ndisherited\ndisheriting\ndisherits\ndishes\ndishevel\ndisheveled\ndisheveling\ndishevelled\ndishevelling\ndishevelment\ndishevelments\ndishevels\ndishful\ndishfuls\ndishier\ndishiest\ndishing\ndishlike\ndishonest\ndishonesties\ndishonestly\ndishonesty\ndishonor\ndishonorable\ndishonorableness\ndishonorably\ndishonored\ndishonorer\ndishonorers\ndishonoring\ndishonors\ndishpan\ndishpans\ndishrag\ndishrags\ndishware\ndishwares\ndishwasher\ndishwashers\ndishwater\ndishwaters\ndishy\ndisillusion\ndisillusioned\ndisillusioning\ndisillusionment\ndisillusionments\ndisillusions\ndisincentive\ndisincentives\ndisinclination\ndisinclinations\ndisincline\ndisinclined\ndisinclines\ndisinclining\ndisinfect\ndisinfectant\ndisinfectants\ndisinfected\ndisinfecting\ndisinfection\ndisinfections\ndisinfects\ndisingenuous\ndisingenuously\ndisingenuousness\ndisinherit\ndisinheritance\ndisinherited\ndisinheriting\ndisinherits\ndisintegrate\ndisintegrated\ndisintegrates\ndisintegrating\ndisintegration\ndisintegrations\ndisintegrative\ndisintegrator\ndisintegrators\ndisinter\ndisinterest\ndisinterested\ndisinterestedly\ndisinterestedness\ndisinteresting\ndisinterests\ndisinterment\ndisinterments\ndisinterred\ndisinterring\ndisinters\ndisject\ndisjected\ndisjecting\ndisjects\ndisjoin\ndisjoined\ndisjoining\ndisjoins\ndisjoint\ndisjointed\ndisjointedly\ndisjointedness\ndisjointing\ndisjoints\ndisjunct\ndisjunction\ndisjunctions\ndisjunctive\ndisjunctively\ndisjuncts\ndisjuncture\ndisjunctures\ndisk\ndisked\ndisking\ndisklike\ndisks\ndislikable\ndislike\ndisliked\ndisliker\ndislikers\ndislikes\ndisliking\ndislimn\ndislimned\ndislimning\ndislimns\ndislocate\ndislocated\ndislocates\ndislocating\ndislocation\ndislocations\ndislodge\ndislodged\ndislodges\ndislodging\ndislodgment\ndislodgments\ndisloyal\ndisloyally\ndisloyalties\ndisloyalty\ndismal\ndismaler\ndismalest\ndismally\ndismalness\ndismals\ndismantle\ndismantled\ndismantlement\ndismantlements\ndismantles\ndismantling\ndismast\ndismasted\ndismasting\ndismasts\ndismay\ndismayed\ndismaying\ndismays\ndisme\ndismember\ndismembered\ndismembering\ndismemberment\ndismemberments\ndismembers\ndismes\ndismiss\ndismissal\ndismissals\ndismissed\ndismisses\ndismissing\ndismission\ndismissive\ndismount\ndismounted\ndismounting\ndismounts\ndisobedience\ndisobediences\ndisobedient\ndisobediently\ndisobey\ndisobeyed\ndisobeyer\ndisobeyers\ndisobeying\ndisobeys\ndisomic\ndisorder\ndisordered\ndisorderedly\ndisorderedness\ndisordering\ndisorderliness\ndisorderly\ndisorders\ndisorganization\ndisorganizations\ndisorganize\ndisorganized\ndisorganizes\ndisorganizing\ndisorient\ndisorientate\ndisorientated\ndisorientates\ndisorientating\ndisorientation\ndisorientations\ndisoriented\ndisorienting\ndisorients\ndisown\ndisowned\ndisowning\ndisownment\ndisowns\ndisparage\ndisparaged\ndisparagement\ndisparagements\ndisparager\ndisparagers\ndisparages\ndisparaging\ndisparagingly\ndisparate\ndisparately\ndisparateness\ndisparities\ndisparity\ndispart\ndisparted\ndisparting\ndisparts\ndispassionate\ndispassionately\ndispassionateness\ndispatch\ndispatched\ndispatcher\ndispatchers\ndispatches\ndispatching\ndispel\ndispelled\ndispelling\ndispels\ndispend\ndispended\ndispending\ndispends\ndispensability\ndispensable\ndispensaries\ndispensary\ndispensation\ndispensational\ndispensations\ndispense\ndispensed\ndispenser\ndispensers\ndispenses\ndispensing\ndispersal\ndispersals\ndisperse\ndispersed\ndispersedly\ndisperser\ndispersers\ndisperses\ndispersible\ndispersing\ndispersion\ndispersions\ndispersive\ndispersively\ndispersiveness\ndispirit\ndispirited\ndispiritedly\ndispiritedness\ndispiriting\ndispirits\ndisplace\ndisplaced\ndisplacement\ndisplacements\ndisplaces\ndisplacing\ndisplant\ndisplanted\ndisplanting\ndisplants\ndisplay\ndisplayed\ndisplaying\ndisplays\ndisplease\ndispleased\ndispleases\ndispleasing\ndispleasure\ndispleasures\ndisplode\ndisploded\ndisplodes\ndisploding\ndisplume\ndisplumed\ndisplumes\ndispluming\ndisport\ndisported\ndisporting\ndisports\ndisposable\ndisposal\ndisposals\ndispose\ndisposed\ndisposer\ndisposers\ndisposes\ndisposing\ndisposition\ndispositional\ndispositions\ndispossess\ndispossessed\ndispossesses\ndispossessing\ndispossession\ndispossessions\ndispossessor\ndispossessors\ndispread\ndispreading\ndispreads\ndisprize\ndisprized\ndisprizes\ndisprizing\ndisproof\ndisproofs\ndisproportion\ndisproportional\ndisproportionate\ndisproportionately\ndisproportions\ndisprovable\ndisprove\ndisproved\ndisproven\ndisproves\ndisproving\ndisputable\ndisputably\ndisputant\ndisputants\ndisputation\ndisputations\ndisputatious\ndisputatiously\ndisputatiousness\ndispute\ndisputed\ndisputer\ndisputers\ndisputes\ndisputing\ndisqualification\ndisqualifications\ndisqualified\ndisqualifies\ndisqualify\ndisqualifying\ndisquiet\ndisquieted\ndisquieting\ndisquietingly\ndisquietly\ndisquiets\ndisquietude\ndisquietudes\ndisquisition\ndisquisitions\ndisrate\ndisrated\ndisrates\ndisrating\ndisregard\ndisregarded\ndisregardful\ndisregarding\ndisregards\ndisrepair\ndisrepairs\ndisreputability\ndisreputable\ndisreputableness\ndisreputably\ndisrepute\ndisreputes\ndisrespect\ndisrespectability\ndisrespectable\ndisrespected\ndisrespectful\ndisrespectfully\ndisrespectfulness\ndisrespecting\ndisrespects\ndisrobe\ndisrobed\ndisrober\ndisrobers\ndisrobes\ndisrobing\ndisroot\ndisrooted\ndisrooting\ndisroots\ndisrupt\ndisrupted\ndisrupter\ndisrupters\ndisrupting\ndisruption\ndisruptions\ndisruptive\ndisruptively\ndisruptiveness\ndisrupts\ndissatisfaction\ndissatisfactions\ndissatisfactory\ndissatisfied\ndissatisfies\ndissatisfy\ndissatisfying\ndissave\ndissaved\ndissaves\ndissaving\ndisseat\ndisseated\ndisseating\ndisseats\ndissect\ndissected\ndissecting\ndissection\ndissections\ndissector\ndissectors\ndissects\ndisseise\ndisseised\ndisseiseised\ndisseiseises\ndisseiseising\ndisseises\ndisseising\ndisseize\ndisseized\ndisseizes\ndisseizing\ndissemble\ndissembled\ndissembler\ndissemblers\ndissembles\ndissembling\ndisseminate\ndisseminated\ndisseminates\ndisseminating\ndissemination\ndisseminations\ndisseminator\ndisseminators\ndissension\ndissensions\ndissent\ndissented\ndissenter\ndissenters\ndissentient\ndissentients\ndissenting\ndissents\ndissert\ndissertate\ndissertates\ndissertation\ndissertational\ndissertations\ndissertator\ndissertators\ndisserted\ndisserting\ndisserts\ndisserve\ndisserved\ndisserves\ndisservice\ndisservices\ndisserving\ndissever\ndisseverance\ndissevered\ndissevering\ndisseverment\ndissevers\ndissidence\ndissidences\ndissident\ndissidents\ndissimilar\ndissimilarities\ndissimilarity\ndissimilarly\ndissimilate\ndissimilated\ndissimilates\ndissimilating\ndissimilation\ndissimilations\ndissimilative\ndissimilatory\ndissimilitude\ndissimilitudes\ndissimulate\ndissimulated\ndissimulates\ndissimulating\ndissimulation\ndissimulations\ndissimulator\ndissimulators\ndissipate\ndissipated\ndissipatedly\ndissipatedness\ndissipater\ndissipaters\ndissipates\ndissipating\ndissipation\ndissipations\ndissipative\ndissociate\ndissociated\ndissociates\ndissociating\ndissociation\ndissociations\ndissociative\ndissolubilities\ndissolubility\ndissoluble\ndissolute\ndissolutely\ndissoluteness\ndissolution\ndissolutions\ndissolvable\ndissolve\ndissolved\ndissolver\ndissolvers\ndissolves\ndissolving\ndissonance\ndissonances\ndissonant\ndissonantly\ndissuade\ndissuaded\ndissuader\ndissuaders\ndissuades\ndissuading\ndissuasion\ndissuasions\ndissuasive\ndissuasively\ndissuasiveness\ndissymmetric\ndissymmetries\ndissymmetry\ndistaff\ndistaffs\ndistain\ndistained\ndistaining\ndistains\ndistal\ndistally\ndistance\ndistanced\ndistances\ndistancing\ndistant\ndistantly\ndistantness\ndistaste\ndistasted\ndistasteful\ndistastefully\ndistastefulness\ndistastes\ndistasting\ndistaves\ndistemper\ndistempered\ndistempering\ndistempers\ndistend\ndistended\ndistending\ndistends\ndistension\ndistensions\ndistent\ndistention\ndistentions\ndistich\ndistichs\ndistil\ndistill\ndistillate\ndistillates\ndistillation\ndistillations\ndistilled\ndistiller\ndistilleries\ndistillers\ndistillery\ndistilling\ndistills\ndistils\ndistinct\ndistincter\ndistinctest\ndistinction\ndistinctions\ndistinctive\ndistinctively\ndistinctiveness\ndistinctly\ndistinctness\ndistinguish\ndistinguishability\ndistinguishable\ndistinguishably\ndistinguished\ndistinguishes\ndistinguishing\ndistome\ndistomes\ndistort\ndistorted\ndistorter\ndistorters\ndistorting\ndistortion\ndistortional\ndistortions\ndistorts\ndistract\ndistracted\ndistractedly\ndistractibility\ndistractible\ndistracting\ndistraction\ndistractions\ndistractive\ndistracts\ndistrain\ndistrained\ndistraining\ndistrains\ndistrait\ndistraught\ndistraughtly\ndistress\ndistressed\ndistresses\ndistressful\ndistressfully\ndistressfulness\ndistressing\ndistressingly\ndistributable\ndistributaries\ndistributary\ndistribute\ndistributed\ndistributes\ndistributing\ndistribution\ndistributional\ndistributions\ndistributive\ndistributively\ndistributiveness\ndistributor\ndistributors\ndistributorship\ndistributorships\ndistrict\ndistricted\ndistricting\ndistricts\ndistrust\ndistrusted\ndistrustful\ndistrustfully\ndistrustfulness\ndistrusting\ndistrusts\ndisturb\ndisturbance\ndisturbances\ndisturbed\ndisturber\ndisturbers\ndisturbing\ndisturbingly\ndisturbs\ndisulfid\ndisulfids\ndisunion\ndisunionist\ndisunionists\ndisunions\ndisunite\ndisunited\ndisunites\ndisunities\ndisuniting\ndisunity\ndisuse\ndisused\ndisuses\ndisusing\ndisvalue\ndisvalued\ndisvalues\ndisvaluing\ndisyllabic\ndisyllable\ndisyllables\ndisyoke\ndisyoked\ndisyokes\ndisyoking\ndit\ndita\nditas\nditch\nditched\nditcher\nditchers\nditches\nditching\ndite\ndites\nditheism\nditheisms\nditheist\nditheists\ndither\ndithered\ndithering\ndithers\ndithery\ndithiol\ndits\nditsy\ndittanies\ndittany\nditties\nditto\ndittoed\ndittoing\ndittos\nditty\nditzy\ndiureses\ndiuresis\ndiuretic\ndiuretically\ndiuretics\ndiurnal\ndiurnally\ndiurnals\ndiuron\ndiurons\ndiva\ndivagate\ndivagated\ndivagates\ndivagating\ndivagation\ndivagations\ndivalent\ndivan\ndivans\ndivas\ndive\ndived\ndiver\ndiverge\ndiverged\ndivergence\ndivergences\ndivergencies\ndivergency\ndivergent\ndivergently\ndiverges\ndiverging\ndivers\ndiverse\ndiversely\ndiverseness\ndiversification\ndiversifications\ndiversified\ndiversifier\ndiversifiers\ndiversifies\ndiversify\ndiversifying\ndiversion\ndiversionary\ndiversions\ndiversities\ndiversity\ndivert\ndiverted\ndiverter\ndiverters\ndiverting\ndivertissement\ndivertissements\ndiverts\ndives\ndivest\ndivested\ndivesting\ndivestiture\ndivestitures\ndivestment\ndivestments\ndivests\ndividable\ndivide\ndivided\ndividend\ndividends\ndivider\ndividers\ndivides\ndividing\ndividual\ndivination\ndivinations\ndivine\ndivined\ndivinely\ndiviner\ndiviners\ndivines\ndivinest\ndiving\ndivining\ndivinise\ndivinised\ndivinises\ndivinising\ndivinities\ndivinity\ndivinize\ndivinized\ndivinizes\ndivinizing\ndivisibility\ndivisible\ndivision\ndivisional\ndivisions\ndivisive\ndivisively\ndivisiveness\ndivisor\ndivisors\ndivorce\ndivorced\ndivorcee\ndivorcees\ndivorcement\ndivorcements\ndivorcer\ndivorcers\ndivorces\ndivorcing\ndivot\ndivots\ndivulge\ndivulged\ndivulgence\ndivulgences\ndivulger\ndivulgers\ndivulges\ndivulging\ndivvied\ndivvies\ndivvy\ndivvying\ndiwan\ndiwans\ndixit\ndixits\ndizen\ndizened\ndizening\ndizens\ndizygous\ndizzied\ndizzier\ndizzies\ndizziest\ndizzily\ndizziness\ndizzy\ndizzying\ndizzyingly\ndjebel\ndjebels\ndjellaba\ndjellabas\ndjin\ndjinn\ndjinni\ndjinns\ndjinny\ndjins\ndo\ndoable\ndoat\ndoated\ndoating\ndoats\ndobber\ndobbers\ndobbies\ndobbin\ndobbins\ndobby\ndobie\ndobies\ndobla\ndoblas\ndoblon\ndoblones\ndoblons\ndobra\ndobras\ndobson\ndobsons\ndoby\ndoc\ndocent\ndocents\ndocetic\ndocile\ndocilely\ndocilities\ndocility\ndock\ndockage\ndockages\ndocked\ndocker\ndockers\ndocket\ndocketed\ndocketing\ndockets\ndockhand\ndockhands\ndocking\ndockland\ndocklands\ndocks\ndockside\ndocksides\ndockyard\ndockyards\ndocs\ndoctor\ndoctoral\ndoctorate\ndoctorates\ndoctored\ndoctoring\ndoctors\ndoctorship\ndoctrinaire\ndoctrinaires\ndoctrinairism\ndoctrinal\ndoctrinally\ndoctrine\ndoctrines\ndocument\ndocumentable\ndocumental\ndocumentarian\ndocumentarians\ndocumentaries\ndocumentary\ndocumentation\ndocumentations\ndocumented\ndocumenting\ndocuments\ndodder\ndoddered\ndodderer\ndodderers\ndoddering\ndodders\ndoddery\ndodge\ndodged\ndodger\ndodgeries\ndodgers\ndodgery\ndodges\ndodgier\ndodgiest\ndodging\ndodgy\ndodo\ndodoes\ndodoism\ndodoisms\ndodos\ndoe\ndoer\ndoers\ndoes\ndoeskin\ndoeskins\ndoest\ndoeth\ndoff\ndoffed\ndoffer\ndoffers\ndoffing\ndoffs\ndog\ndogbane\ndogbanes\ndogberries\ndogberry\ndogcart\ndogcarts\ndogcatcher\ndogcatchers\ndogdom\ndogdoms\ndoge\ndogedom\ndogedoms\ndoges\ndogeship\ndogeships\ndogey\ndogeys\ndogface\ndogfaces\ndogfight\ndogfighting\ndogfights\ndogfish\ndogfishes\ndogfought\ndogged\ndoggedly\ndoggedness\ndogger\ndoggerel\ndoggerels\ndoggeries\ndoggers\ndoggery\ndoggie\ndoggier\ndoggies\ndoggiest\ndogging\ndoggish\ndoggishly\ndoggishness\ndoggo\ndoggone\ndoggoned\ndoggoneder\ndoggonedest\ndoggoner\ndoggones\ndoggonest\ndoggoning\ndoggrel\ndoggrels\ndoggy\ndoghouse\ndoghouses\ndogie\ndogies\ndogleg\ndoglegged\ndoglegging\ndoglegs\ndoglike\ndogma\ndogmas\ndogmata\ndogmatic\ndogmatical\ndogmatically\ndogmatics\ndogmatism\ndogmatisms\ndogmatist\ndogmatists\ndogmatization\ndogmatizations\ndogmatize\ndogmatized\ndogmatizer\ndogmatizers\ndogmatizes\ndogmatizing\ndognap\ndognaped\ndognaper\ndognapers\ndognaping\ndognapped\ndognapping\ndognaps\ndogs\ndogsbodies\ndogsbody\ndogsled\ndogsleds\ndogtooteeth\ndogtooth\ndogtrot\ndogtrots\ndogtrotted\ndogtrotting\ndogvane\ndogvanes\ndogwatch\ndogwatches\ndogwood\ndogwoods\ndogy\ndoiled\ndoilies\ndoily\ndoing\ndoings\ndoit\ndoited\ndoits\ndojo\ndojos\ndol\ndolce\ndolci\ndoldrums\ndole\ndoled\ndoleful\ndolefuller\ndolefullest\ndolefully\ndolefulness\ndolerite\ndolerites\ndoles\ndolesome\ndoling\ndoll\ndollar\ndollars\ndolled\ndollied\ndollies\ndolling\ndollish\ndollishly\ndollop\ndollops\ndolls\ndolly\ndollying\ndolma\ndolman\ndolmans\ndolmen\ndolmens\ndolomite\ndolomites\ndolomitic\ndolor\ndoloroso\ndolorous\ndolorously\ndolorousness\ndolors\ndolour\ndolours\ndolphin\ndolphins\ndols\ndolt\ndoltish\ndoltishly\ndoltishness\ndolts\ndom\ndomain\ndomains\ndomal\ndome\ndomed\ndomelike\ndomes\ndomesday\ndomesdays\ndomestic\ndomestically\ndomesticate\ndomesticated\ndomesticates\ndomesticating\ndomestication\ndomestications\ndomesticities\ndomesticity\ndomestics\ndomic\ndomical\ndomicil\ndomicile\ndomiciled\ndomiciles\ndomiciling\ndomicils\ndominance\ndominances\ndominant\ndominantly\ndominants\ndominate\ndominated\ndominates\ndominating\ndomination\ndominations\ndominative\ndominator\ndominators\ndomine\ndomineer\ndomineered\ndomineering\ndomineeringly\ndomineeringness\ndomineers\ndomines\ndoming\ndominick\ndominicks\ndominie\ndominies\ndominion\ndominions\ndominium\ndominiums\ndomino\ndominoes\ndominos\ndoms\ndon\ndona\ndonas\ndonate\ndonated\ndonates\ndonating\ndonation\ndonations\ndonative\ndonatives\ndonator\ndonators\ndone\ndonee\ndonees\ndoneness\ndonenesses\ndong\ndonga\ndongola\ndongolas\ndongs\ndonjon\ndonjons\ndonkey\ndonkeys\ndonna\ndonnas\ndonne\ndonned\ndonnee\ndonnees\ndonnerd\ndonnered\ndonnert\ndonning\ndonnish\ndonnishly\ndonnishness\ndonnybrook\ndonnybrooks\ndonor\ndonors\ndonorship\ndonorships\ndons\ndonsie\ndonsy\ndonut\ndonuts\ndonzel\ndonzels\ndoodad\ndoodads\ndoodle\ndoodled\ndoodler\ndoodlers\ndoodles\ndoodling\ndoolee\ndoolees\ndoolie\ndoolies\ndooly\ndoom\ndoomed\ndoomful\ndooming\ndooms\ndoomsday\ndoomsdays\ndoomster\ndoomsters\ndoor\ndoorbell\ndoorbells\ndoorjamb\ndoorjambs\ndoorkeeper\ndoorkeepers\ndoorknob\ndoorknobs\ndoorless\ndoorman\ndoormat\ndoormats\ndoormen\ndoornail\ndoornails\ndoorplate\ndoorplates\ndoorpost\ndoorposts\ndoors\ndoorsill\ndoorsills\ndoorstep\ndoorsteps\ndoorstop\ndoorstops\ndoorway\ndoorways\ndooryard\ndooryards\ndoozer\ndoozers\ndoozies\ndoozy\ndopa\ndopamine\ndopamines\ndopant\ndopants\ndopas\ndope\ndoped\ndoper\ndopers\ndopes\ndopester\ndopesters\ndopey\ndopier\ndopiest\ndopiness\ndopinesses\ndoping\ndopy\ndor\ndorado\ndorados\ndorbug\ndorbugs\ndore\ndorhawk\ndorhawks\ndories\ndork\ndorks\ndorky\ndorm\ndormancies\ndormancy\ndormant\ndormer\ndormers\ndormice\ndormie\ndormient\ndormin\ndormins\ndormitories\ndormitory\ndormouse\ndorms\ndormy\ndorneck\ndornecks\ndornick\ndornicks\ndornock\ndornocks\ndorp\ndorper\ndorpers\ndorps\ndorr\ndorrs\ndors\ndorsa\ndorsad\ndorsal\ndorsally\ndorsals\ndorser\ndorsers\ndorsum\ndorty\ndory\ndos\ndosage\ndosages\ndose\ndosed\ndoser\ndosers\ndoses\ndosimeter\ndosimeters\ndosing\ndoss\ndossal\ndossals\ndossed\ndossel\ndossels\ndosser\ndosseret\ndosserets\ndossers\ndosses\ndossier\ndossiers\ndossil\ndossils\ndossing\ndost\ndot\ndotage\ndotages\ndotal\ndotard\ndotardly\ndotards\ndotation\ndotations\ndote\ndoted\ndoter\ndoters\ndotes\ndoth\ndotier\ndotiest\ndoting\ndotingly\ndots\ndotted\ndottel\ndottels\ndotter\ndotterel\ndotterels\ndotters\ndottier\ndottiest\ndottily\ndotting\ndottle\ndottles\ndottrel\ndottrels\ndotty\ndoty\ndouble\ndoubled\ndoubleheader\ndoubleheaders\ndoubleness\ndoubler\ndoublers\ndoubles\ndoublet\ndoublets\ndoubling\ndoubloon\ndoubloons\ndoublure\ndoublures\ndoubly\ndoubt\ndoubtable\ndoubted\ndoubter\ndoubters\ndoubtful\ndoubtfully\ndoubtfulness\ndoubting\ndoubtingly\ndoubtless\ndoubtlessly\ndoubtlessness\ndoubts\ndouce\ndoucely\ndouceur\ndouceurs\ndouche\ndouched\ndouches\ndouching\ndough\ndoughboy\ndoughboys\ndoughier\ndoughiest\ndoughnut\ndoughnuts\ndoughs\ndought\ndoughtier\ndoughtiest\ndoughtily\ndoughtiness\ndoughty\ndoughy\ndoum\ndouma\ndoumas\ndoums\ndour\ndoura\ndourah\ndourahs\ndouras\ndourer\ndourest\ndourine\ndourines\ndourly\ndourness\ndournesses\ndouse\ndoused\ndouser\ndousers\ndouses\ndousing\ndoux\ndouzeper\ndouzepers\ndove\ndovecot\ndovecote\ndovecotes\ndovecots\ndovekey\ndovekeys\ndovekie\ndovekies\ndovelike\ndoven\ndovened\ndovening\ndovens\ndoves\ndovetail\ndovetailed\ndovetailing\ndovetails\ndovish\ndow\ndowable\ndowager\ndowagers\ndowdier\ndowdies\ndowdiest\ndowdily\ndowdiness\ndowdy\ndowdyish\ndowed\ndowel\ndoweled\ndoweling\ndowelled\ndowelling\ndowels\ndower\ndowered\ndoweries\ndowering\ndowers\ndowery\ndowie\ndowing\ndown\ndownbeat\ndownbeats\ndowncast\ndowncasts\ndowncome\ndowncomes\ndowned\ndowner\ndowners\ndownfall\ndownfallen\ndownfalls\ndowngrade\ndowngraded\ndowngrades\ndowngrading\ndownhaul\ndownhauls\ndownhearted\ndownheartedly\ndownheartedness\ndownhill\ndownhills\ndownier\ndowniest\ndowning\ndownplay\ndownplayed\ndownplaying\ndownplays\ndownpour\ndownpours\ndownrange\ndownright\ndownrightly\ndownrightness\ndowns\ndownspout\ndownspouts\ndownstage\ndownstages\ndownstairs\ndownstate\ndownstater\ndownstaters\ndownstream\ndownswing\ndownswings\ndowntime\ndowntimes\ndowntown\ndowntowns\ndowntrod\ndowntrodden\ndownturn\ndownturns\ndownward\ndownwardly\ndownwardness\ndownwards\ndownwind\ndowny\ndowries\ndowry\ndows\ndowsabel\ndowsabels\ndowse\ndowsed\ndowser\ndowsers\ndowses\ndowsing\ndoxie\ndoxies\ndoxologies\ndoxology\ndoxy\ndoyen\ndoyenne\ndoyennes\ndoyens\ndoyley\ndoyleys\ndoylies\ndoyly\ndoze\ndozed\ndozen\ndozened\ndozening\ndozens\ndozenth\ndozenths\ndozer\ndozers\ndozes\ndozier\ndoziest\ndozily\ndoziness\ndozinesses\ndozing\ndozy\ndrab\ndrabbed\ndrabber\ndrabbest\ndrabbet\ndrabbets\ndrabbing\ndrabble\ndrabbled\ndrabbles\ndrabbling\ndrably\ndrabness\ndrabnesses\ndrabs\ndracaena\ndracaenas\ndrachm\ndrachma\ndrachmae\ndrachmai\ndrachmas\ndrachms\ndraconic\ndraff\ndraffier\ndraffiest\ndraffish\ndraffs\ndraffy\ndraft\ndraftable\ndrafted\ndraftee\ndraftees\ndrafter\ndrafters\ndraftier\ndraftiest\ndraftily\ndraftiness\ndrafting\ndraftings\ndrafts\ndraftsman\ndraftsmanship\ndraftsmen\ndrafty\ndrag\ndragee\ndragees\ndragged\ndragger\ndraggers\ndraggier\ndraggiest\ndragging\ndraggingly\ndraggle\ndraggled\ndraggles\ndraggling\ndraggy\ndragline\ndraglines\ndragnet\ndragnets\ndragoman\ndragomans\ndragomen\ndragon\ndragonet\ndragonets\ndragonflies\ndragonfly\ndragonish\ndragons\ndragoon\ndragooned\ndragooning\ndragoons\ndragrope\ndragropes\ndrags\ndragster\ndragsters\ndrail\ndrails\ndrain\ndrainage\ndrainages\ndrained\ndrainer\ndrainers\ndraining\ndrainpipe\ndrainpipes\ndrains\ndrake\ndrakes\ndram\ndrama\ndramas\ndramatic\ndramatically\ndramatics\ndramatist\ndramatists\ndramatizable\ndramatization\ndramatizations\ndramatize\ndramatized\ndramatizes\ndramatizing\ndramaturgic\ndramaturgical\ndramaturgically\ndramaturgy\ndrammed\ndramming\ndrammock\ndrammocks\ndrams\ndramshop\ndramshops\ndrank\ndrapable\ndrape\ndraped\ndraper\ndraperies\ndrapers\ndrapery\ndrapes\ndraping\ndrastic\ndrastically\ndrat\ndrats\ndratted\ndratting\ndraught\ndraughted\ndraughtier\ndraughtiest\ndraughting\ndraughts\ndraughty\ndrave\ndraw\ndrawable\ndrawback\ndrawbacks\ndrawbar\ndrawbars\ndrawbore\ndrawbores\ndrawbridge\ndrawbridges\ndrawdown\ndrawdowns\ndrawee\ndrawees\ndrawer\ndrawers\ndrawing\ndrawings\ndrawl\ndrawled\ndrawler\ndrawlers\ndrawlier\ndrawliest\ndrawling\ndrawlingly\ndrawls\ndrawly\ndrawn\ndraws\ndrawstring\ndrawstrings\ndrawtube\ndrawtubes\ndray\ndrayage\ndrayages\ndrayed\ndraying\ndrayman\ndraymen\ndrays\ndread\ndreaded\ndreadful\ndreadfully\ndreadfulness\ndreadfuls\ndreading\ndreads\ndream\ndreamed\ndreamer\ndreamers\ndreamful\ndreamier\ndreamiest\ndreamily\ndreaminess\ndreaming\ndreamless\ndreamlessly\ndreamlike\ndreams\ndreamt\ndreamy\ndrear\ndrearier\ndrearies\ndreariest\ndrearily\ndreariness\ndreary\ndreck\ndrecks\ndredge\ndredged\ndredger\ndredgers\ndredges\ndredging\ndredgings\ndree\ndreed\ndreeing\ndrees\ndreg\ndreggier\ndreggiest\ndreggish\ndreggy\ndregs\ndreich\ndreidel\ndreidels\ndreidl\ndreidls\ndreigh\ndrek\ndreks\ndrench\ndrenched\ndrencher\ndrenchers\ndrenches\ndrenching\ndress\ndressage\ndressages\ndressed\ndresser\ndressers\ndresses\ndressier\ndressiest\ndressily\ndressiness\ndressing\ndressings\ndressmaker\ndressmakers\ndressmaking\ndressy\ndrest\ndrew\ndrib\ndribbed\ndribbing\ndribble\ndribbled\ndribbler\ndribblers\ndribbles\ndribblet\ndribblets\ndribbling\ndriblet\ndriblets\ndribs\ndried\ndrier\ndriers\ndries\ndriest\ndrift\ndriftage\ndriftages\ndrifted\ndrifter\ndrifters\ndriftier\ndriftiest\ndrifting\ndriftingly\ndriftpin\ndriftpins\ndrifts\ndriftwood\ndrifty\ndrill\ndrillable\ndrilled\ndriller\ndrillers\ndrilling\ndrillings\ndrillmaster\ndrillmasters\ndrills\ndrily\ndrink\ndrinkable\ndrinkables\ndrinker\ndrinkers\ndrinking\ndrinks\ndrip\ndripless\ndripped\ndripper\ndrippers\ndrippier\ndrippiest\ndripping\ndrippings\ndrippy\ndrips\ndript\ndrivable\ndrive\ndrivel\ndriveled\ndriveler\ndrivelers\ndriveling\ndrivelled\ndriveller\ndrivellers\ndrivelling\ndrivels\ndriven\ndriver\ndriverless\ndrivers\ndrives\ndriveway\ndriveways\ndriving\ndrizzle\ndrizzled\ndrizzles\ndrizzlier\ndrizzliest\ndrizzling\ndrizzlingly\ndrizzly\ndrogue\ndrogues\ndroit\ndroits\ndroll\ndrolled\ndroller\ndrolleries\ndrollery\ndrollest\ndrolling\ndrollness\ndrolls\ndrolly\ndromedaries\ndromedary\ndromon\ndromond\ndromonds\ndromons\ndrone\ndroned\ndroner\ndroners\ndrones\ndrongo\ndrongos\ndroning\ndroningly\ndronish\ndrool\ndrooled\ndrooling\ndrools\ndroop\ndrooped\ndroopier\ndroopiest\ndroopily\ndrooping\ndroopingly\ndroops\ndroopy\ndrop\ndrophead\ndropheads\ndropkick\ndropkicks\ndroplet\ndroplets\ndropout\ndropouts\ndropped\ndropper\ndroppers\ndropping\ndroppings\ndrops\ndropshot\ndropshots\ndropsical\ndropsied\ndropsies\ndropsy\ndropt\ndropwort\ndropworts\ndrosera\ndroseras\ndroshkies\ndroshky\ndroskies\ndrosky\ndross\ndrosses\ndrossier\ndrossiest\ndrossy\ndrought\ndroughtier\ndroughtiest\ndroughtiness\ndroughts\ndroughty\ndrouk\ndrouked\ndrouking\ndrouks\ndrouth\ndrouthier\ndrouthiest\ndrouths\ndrouthy\ndrove\ndroved\ndrover\ndrovers\ndroves\ndroving\ndrown\ndrownd\ndrownded\ndrownding\ndrownds\ndrowned\ndrowner\ndrowners\ndrowning\ndrowns\ndrowse\ndrowsed\ndrowses\ndrowsier\ndrowsiest\ndrowsily\ndrowsiness\ndrowsing\ndrowsy\ndrub\ndrubbed\ndrubber\ndrubbers\ndrubbing\ndrubbings\ndrubs\ndrudge\ndrudged\ndrudger\ndrudgeries\ndrudgers\ndrudgery\ndrudges\ndrudging\ndrudgingly\ndrug\ndrugged\ndrugget\ndruggets\ndrugging\ndruggist\ndruggists\ndrugs\ndrugstore\ndrugstores\ndruid\ndruidess\ndruidesses\ndruidic\ndruidical\ndruidism\ndruidisms\ndruids\ndrum\ndrumbeat\ndrumbeater\ndrumbeaters\ndrumbeating\ndrumbeats\ndrumble\ndrumbled\ndrumbles\ndrumbling\ndrumfire\ndrumfires\ndrumfish\ndrumfishes\ndrumhead\ndrumheads\ndrumlier\ndrumliest\ndrumlike\ndrumlin\ndrumlins\ndrumly\ndrummed\ndrummer\ndrummers\ndrumming\ndrumroll\ndrumrolls\ndrums\ndrumstick\ndrumsticks\ndrunk\ndrunkard\ndrunkards\ndrunken\ndrunkenly\ndrunkenness\ndrunker\ndrunkest\ndrunkometer\ndrunkometers\ndrunks\ndrupe\ndrupelet\ndrupelets\ndrupes\ndruse\ndruses\ndruthers\ndry\ndryable\ndryad\ndryades\ndryadic\ndryads\ndryer\ndryers\ndryest\ndrying\ndrylot\ndrylots\ndryly\ndryness\ndrynesses\ndrypoint\ndrypoints\ndrys\nduad\nduads\ndual\ndualism\ndualisms\ndualist\ndualistic\ndualistically\ndualists\ndualities\nduality\ndualize\ndualized\ndualizes\ndualizing\ndually\nduals\ndub\ndubbed\ndubber\ndubbers\ndubbin\ndubbing\ndubbings\ndubbins\ndubieties\ndubiety\ndubious\ndubiously\ndubiousness\ndubitable\ndubonnet\ndubonnets\ndubs\nducal\nducally\nducat\nducats\nduce\nduces\nduchess\nduchesses\nduchies\nduchy\nduci\nduck\nduckbill\nduckbills\nducked\nducker\nduckers\nduckie\nduckier\nduckies\nduckiest\nducking\nduckling\nducklings\nduckpin\nduckpins\nducks\nducktail\nducktails\nduckweed\nduckweeds\nducky\nduct\nducted\nductile\nductility\nducting\nductings\nductless\nducts\nductule\nductules\ndud\nduddie\nduddy\ndude\nduded\ndudeen\ndudeens\ndudes\ndudgeon\ndudgeons\ndudish\ndudishly\nduds\ndue\nduecento\nduecentos\nduel\ndueled\ndueler\nduelers\ndueling\nduelist\nduelists\nduelled\ndueller\nduellers\nduelli\nduelling\nduellist\nduellists\nduello\nduellos\nduels\nduende\nduendes\ndueness\nduenesses\nduenna\nduennas\ndues\nduet\nduetted\nduetting\nduettist\nduettists\nduff\nduffel\nduffels\nduffer\nduffers\nduffle\nduffles\nduffs\ndug\ndugong\ndugongs\ndugout\ndugouts\ndugs\ndui\nduiker\nduikers\nduit\nduits\nduke\ndukedom\ndukedoms\ndukes\ndulcet\ndulcetly\ndulcets\ndulciana\ndulcianas\ndulcified\ndulcifies\ndulcify\ndulcifying\ndulcimer\ndulcimers\ndulcinea\ndulcineas\ndulia\ndulias\ndull\ndullard\ndullards\ndulled\nduller\ndullest\ndulling\ndullish\ndullness\ndullnesses\ndulls\ndully\ndulness\ndulnesses\ndulse\ndulses\nduly\nduma\ndumas\ndumb\ndumbbell\ndumbbells\ndumbed\ndumber\ndumbest\ndumbfound\ndumbfounded\ndumbfounding\ndumbfounds\ndumbing\ndumbly\ndumbness\ndumbnesses\ndumbs\ndumbwaiter\ndumbwaiters\ndumdum\ndumdums\ndumfound\ndumfounded\ndumfounding\ndumfounds\ndumka\ndumky\ndummied\ndummies\ndummkopf\ndummkopfs\ndummy\ndummying\ndump\ndumpcart\ndumpcarts\ndumped\ndumper\ndumpers\ndumpier\ndumpiest\ndumpily\ndumpiness\ndumping\ndumpings\ndumpish\ndumpling\ndumplings\ndumps\ndumpy\ndun\ndunam\ndunce\ndunces\ndunch\ndunches\nduncical\nduncish\ndune\nduneland\ndunelands\ndunelike\ndunes\ndung\ndungaree\ndungarees\ndunged\ndungeon\ndungeons\ndunghill\ndunghills\ndungier\ndungiest\ndunging\ndungs\ndungy\ndunite\ndunites\ndunitic\ndunk\ndunked\ndunker\ndunkers\ndunking\ndunks\ndunlin\ndunlins\ndunnage\ndunnages\ndunned\ndunner\ndunness\ndunnesses\ndunnest\ndunning\ndunnite\ndunnites\nduns\ndunt\ndunted\ndunting\ndunts\nduo\nduodecimal\nduodecimals\nduodena\nduodenal\nduodenum\nduodenums\nduolog\nduologs\nduologue\nduologues\nduomi\nduomo\nduomos\nduopolies\nduopoly\nduopsonies\nduopsony\nduos\nduotone\nduotones\ndup\ndupable\ndupe\nduped\nduper\nduperies\ndupers\ndupery\ndupes\nduping\nduple\nduplex\nduplexed\nduplexer\nduplexers\nduplexes\nduplexing\nduplicate\nduplicated\nduplicates\nduplicating\nduplication\nduplications\nduplicative\nduplicator\nduplicators\nduplicities\nduplicity\ndupped\ndupping\ndups\ndura\ndurability\ndurable\ndurableness\ndurables\ndurably\ndural\nduramen\nduramens\ndurance\ndurances\nduras\nduration\ndurations\ndurative\nduratives\ndurbar\ndurbars\ndure\ndured\ndures\nduress\nduresses\ndurian\ndurians\nduring\ndurion\ndurions\ndurmast\ndurmasts\ndurn\ndurndest\ndurned\ndurneder\ndurnedest\ndurning\ndurns\nduro\nduroc\ndurocs\nduros\ndurr\ndurra\ndurras\ndurrs\ndurst\ndurum\ndurums\ndusk\ndusked\nduskier\nduskiest\nduskily\nduskiness\ndusking\nduskish\ndusks\ndusky\ndust\ndustbin\ndustbins\ndusted\nduster\ndusters\ndustheap\ndustheaps\ndustier\ndustiest\ndustily\ndustiness\ndusting\ndustless\ndustlike\ndustman\ndustmen\ndustpan\ndustpans\ndustrag\ndustrags\ndusts\ndustup\ndustups\ndusty\ndutch\ndutchman\ndutchmen\nduteous\nduteously\nduteousness\ndutiable\nduties\ndutiful\ndutifully\ndutifulness\nduty\nduumvir\nduumviri\nduumvirs\nduvet\nduvetine\nduvetines\nduvetyn\nduvetyne\nduvetynes\nduvetyns\ndwarf\ndwarfed\ndwarfer\ndwarfest\ndwarfing\ndwarfish\ndwarfishly\ndwarfishness\ndwarfism\ndwarfisms\ndwarflike\ndwarfness\ndwarfs\ndwarves\ndwell\ndwelled\ndweller\ndwellers\ndwelling\ndwellings\ndwells\ndwelt\ndwindle\ndwindled\ndwindles\ndwindling\ndwine\ndwined\ndwines\ndwining\ndyable\ndyad\ndyadic\ndyadics\ndyads\ndyarchic\ndyarchies\ndyarchy\ndybbuk\ndybbukim\ndybbuks\ndye\ndyeable\ndyed\ndyeing\ndyeings\ndyer\ndyers\ndyes\ndyestuff\ndyestuffs\ndyeweed\ndyeweeds\ndyewood\ndyewoods\ndying\ndyings\ndyke\ndyked\ndykes\ndykey\ndyking\ndynamic\ndynamical\ndynamically\ndynamics\ndynamism\ndynamisms\ndynamist\ndynamistic\ndynamists\ndynamite\ndynamited\ndynamiter\ndynamiters\ndynamites\ndynamitic\ndynamiting\ndynamo\ndynamometer\ndynamometers\ndynamos\ndynamotor\ndynamotors\ndynast\ndynastic\ndynastically\ndynasties\ndynasts\ndynasty\ndynatron\ndynatrons\ndyne\ndynel\ndynes\ndynode\ndynodes\ndysenteric\ndysenteries\ndysentery\ndysfunction\ndysfunctional\ndysfunctions\ndysgenic\ndyslexia\ndyslexias\ndyslexic\ndyslexics\ndyspepsies\ndyspepsy\ndyspeptic\ndyspeptically\ndyspeptics\ndyspnea\ndyspneal\ndyspneas\ndyspneic\ndyspnoea\ndyspnoeas\ndyspnoic\ndysprosium\ndysprosiums\ndystaxia\ndystaxias\ndystocia\ndystocias\ndystonia\ndystonias\ndystopia\ndystopias\ndystrophic\ndystrophies\ndystrophy\ndysuria\ndysurias\ndysuric\ndyvour\ndyvours\neach\neager\neagerer\neagerest\neagerly\neagerness\neagers\neagle\neagles\neaglet\neaglets\neagre\neagres\neanling\neanlings\near\nearache\nearaches\neardrop\neardrops\neardrum\neardrums\neared\nearflap\nearflaps\nearful\nearfuls\nearing\nearings\nearl\nearlap\nearlaps\nearldom\nearldoms\nearless\nearlier\nearliest\nearliness\nearlobe\nearlobes\nearlock\nearlocks\nearls\nearlship\nearlships\nearly\nearmark\nearmarked\nearmarking\nearmarks\nearmuff\nearmuffs\nearn\nearned\nearner\nearners\nearnest\nearnestly\nearnestness\nearnests\nearning\nearnings\nearns\nearphone\nearphones\nearpiece\nearpieces\nearplug\nearplugs\nearring\nearrings\nears\nearshot\nearshots\nearstone\nearstones\nearth\nearthed\nearthen\nearthenware\nearthenwares\nearthier\nearthiest\nearthily\nearthiness\nearthing\nearthlier\nearthliest\nearthliness\nearthling\nearthlings\nearthly\nearthman\nearthmen\nearthnut\nearthnuts\nearthpea\nearthpeas\nearthquake\nearthquakes\nearths\nearthset\nearthsets\nearthward\nearthwards\nearthworm\nearthworms\nearthy\nearwax\nearwaxes\nearwig\nearwigged\nearwigging\nearwigs\nearworm\nearworms\nease\neased\neaseful\neasefully\neasel\neasels\neasement\neasements\neases\neasier\neasies\neasiest\neasily\neasiness\neasinesses\neasing\neast\neaster\neasterlies\neasterly\neastern\neasternmost\neasters\neasting\neastings\neasts\neastward\neastwards\neasy\neasygoing\neat\neatable\neatables\neaten\neater\neateries\neaters\neatery\neath\neating\neatings\neats\neau\neaux\neave\neaved\neaves\neavesdrop\neavesdropped\neavesdropper\neavesdroppers\neavesdropping\neavesdrops\nebb\nebbed\nebbet\nebbets\nebbing\nebbs\nebon\nebonies\nebonise\nebonised\nebonises\nebonising\nebonite\nebonites\nebonize\nebonized\nebonizes\nebonizing\nebons\nebony\nebullience\nebulliency\nebullient\nebulliently\nebullition\nebullitions\necarte\necartes\necaudate\necbolic\necbolics\neccentric\neccentrically\neccentricities\neccentricity\neccentrics\necclesia\necclesiae\necclesiastic\necclesiastical\necclesiastically\necclesiasticism\necclesiastics\neccrine\necdyses\necdysial\necdysis\necdyson\necdysone\necdysones\necdysons\necesis\necesises\nechard\nechards\neche\neched\nechelon\necheloned\necheloning\nechelons\neches\nechidna\nechidnae\nechidnas\nechinate\neching\nechini\nechinoid\nechinoids\nechinus\necho\nechoed\nechoer\nechoers\nechoes\nechoey\nechoic\nechoing\nechoism\nechoisms\necholess\neclair\neclairs\neclat\neclats\neclectic\neclectically\neclecticism\neclectics\neclipse\neclipsed\neclipses\neclipsing\neclipsis\neclipsises\necliptic\necliptics\neclogite\neclogites\neclogue\neclogues\neclosion\neclosions\necologic\necological\necologically\necologies\necologist\necologists\necology\neconometric\neconometrics\neconomic\neconomical\neconomically\neconomics\neconomies\neconomist\neconomists\neconomize\neconomized\neconomizer\neconomizers\neconomizes\neconomizing\neconomy\necosystem\necosystems\necotonal\necotone\necotones\necotype\necotypes\necotypic\necraseur\necraseurs\necru\necrus\necstasies\necstasy\necstatic\necstatically\necstatics\nectases\nectasis\nectatic\necthyma\necthymata\nectoderm\nectoderms\nectomere\nectomeres\nectopia\nectopias\nectopic\nectoplasm\nectoplasmic\nectoplasms\nectosarc\nectosarcs\nectozoa\nectozoan\nectozoans\nectozoon\nectypal\nectype\nectypes\necu\necumenic\necumenical\necumenically\necus\neczema\neczemas\neczematous\nedacious\nedacities\nedacity\nedaphic\neddied\neddies\neddo\neddoes\neddy\neddying\nedema\nedemas\nedemata\nedematous\nedentate\nedentates\nedge\nedged\nedgeless\nedger\nedgers\nedges\nedgeways\nedgewise\nedgier\nedgiest\nedgily\nedginess\nedginesses\nedging\nedgings\nedgy\nedh\nedhs\nedibility\nedible\nedibleness\nedibles\nedict\nedictal\nedicts\nedification\nedifications\nedifice\nedifices\nedified\nedifier\nedifiers\nedifies\nedify\nedifying\nedile\nediles\nedit\neditable\nedited\nediting\nedition\neditions\neditor\neditorial\neditorialist\neditorialists\neditorialization\neditorializations\neditorialize\neditorialized\neditorializer\neditorializers\neditorializes\neditorializing\neditorially\neditorials\neditors\neditress\neditresses\nedits\neducability\neducable\neducables\neducatability\neducate\neducated\neducates\neducating\neducation\neducational\neducationalist\neducationalists\neducationally\neducationist\neducationists\neducations\neducative\neducator\neducators\neduce\neduced\neduces\neducible\neducing\neduct\neduction\neductions\neductive\neductor\neductors\neducts\neel\neelgrass\neelgrasses\neelier\neeliest\neellike\neelpout\neelpouts\neels\neelworm\neelworms\neely\neerie\neerier\neeriest\neerily\neeriness\neerinesses\neery\nef\neff\neffable\nefface\neffaceable\neffaced\neffacement\neffacements\neffacer\neffacers\neffaces\neffacing\neffect\neffected\neffecter\neffecters\neffecting\neffective\neffectively\neffectiveness\neffectivity\neffector\neffectors\neffects\neffectual\neffectuality\neffectually\neffectualness\neffectuate\neffectuated\neffectuates\neffectuating\neffectuation\neffectuations\neffeminacy\neffeminate\neffeminately\neffeminateness\neffeminates\neffendi\neffendis\nefferent\nefferently\nefferents\neffervesce\neffervesced\neffervescence\neffervescent\neffervescently\neffervesces\neffervescing\neffete\neffetely\neffeteness\nefficacies\nefficacious\nefficaciously\nefficaciousness\nefficacy\nefficiencies\nefficiency\nefficient\nefficiently\neffigies\neffigy\neffloresce\neffloresced\nefflorescence\nefflorescent\neffloresces\nefflorescing\neffluence\neffluences\neffluent\neffluents\neffluvia\neffluvium\neffluviums\nefflux\neffluxes\neffort\neffortless\neffortlessly\neffortlessness\nefforts\neffronteries\neffrontery\neffs\neffulge\neffulged\neffulges\neffulging\neffuse\neffused\neffuses\neffusing\neffusion\neffusions\neffusive\neffusively\neffusiveness\nefs\neft\nefts\neftsoon\neftsoons\negad\negads\negal\negalitarian\negalitarianism\negalite\negalites\neger\negers\negest\negesta\negested\negesting\negestion\negestions\negestive\negests\negg\neggar\neggars\neggcup\neggcups\negged\negger\neggers\negghead\neggheads\negging\neggnog\neggnogs\neggplant\neggplants\neggs\neggshell\neggshells\neggy\negis\negises\neglantine\neglantines\neglatere\neglateres\nego\negocentric\negocentrically\negocentricity\negocentrics\negocentrism\negoism\negoisms\negoist\negoistic\negoistically\negoists\negomania\negomaniac\negomaniacal\negomaniacs\negomanias\negos\negotism\negotisms\negotist\negotistic\negotistical\negotistically\negotists\negregious\negregiously\negregiousness\negress\negressed\negresses\negressing\negression\negressions\negret\negrets\neh\neide\neider\neiderdown\neiderdowns\neiders\neidetic\neidetically\neidola\neidolon\neidolons\neidos\neight\neighteen\neighteens\neighteenth\neighteenths\neightfold\neighth\neighthly\neighths\neighties\neightieth\neightieths\neights\neightvo\neightvos\neighty\neikon\neikones\neikons\neinkorn\neinkorns\neirenic\neither\nejaculate\nejaculated\nejaculates\nejaculating\nejaculation\nejaculations\nejaculator\nejaculators\nejaculatory\neject\nejecta\nejected\nejecting\nejection\nejections\nejective\nejectives\nejectment\nejectments\nejector\nejectors\nejects\neke\neked\nekes\neking\nekistic\nekistics\nektexine\nektexines\nel\nelaborate\nelaborated\nelaborately\nelaborateness\nelaborates\nelaborating\nelaboration\nelaborations\nelaborative\nelain\nelains\nelan\neland\nelands\nelans\nelaphine\nelapid\nelapids\nelapine\nelapse\nelapsed\nelapses\nelapsing\nelastase\nelastases\nelastic\nelastically\nelasticities\nelasticity\nelasticized\nelastics\nelastin\nelastins\nelate\nelated\nelatedly\nelatedness\nelater\nelaterid\nelaterids\nelaterin\nelaterins\nelaters\nelates\nelating\nelation\nelations\nelative\nelatives\nelbow\nelbowed\nelbowing\nelbows\neld\nelder\nelderberries\nelderberry\nelderly\nelders\neldership\neldest\neldrich\neldritch\nelds\nelect\nelectable\nelected\nelecting\nelection\nelectioneer\nelectioneered\nelectioneering\nelectioneers\nelections\nelective\nelectively\nelectiveness\nelectives\nelector\nelectoral\nelectorate\nelectorates\nelectors\nelectret\nelectrets\nelectric\nelectrical\nelectrically\nelectrician\nelectricians\nelectricities\nelectricity\nelectrics\nelectrification\nelectrifications\nelectrified\nelectrifies\nelectrify\nelectrifying\nelectro\nelectrocardiogram\nelectrocardiograms\nelectrocardiograph\nelectrocardiographic\nelectrocardiographically\nelectrocardiographs\nelectrocardiography\nelectrochemical\nelectrochemically\nelectrochemistry\nelectrocute\nelectrocuted\nelectrocutes\nelectrocuting\nelectrocution\nelectrocutions\nelectrode\nelectrodes\nelectroed\nelectroing\nelectrolysis\nelectrolyte\nelectrolytes\nelectrolytic\nelectrolytically\nelectrolyze\nelectrolyzed\nelectrolyzes\nelectrolyzing\nelectromagnet\nelectromagnetic\nelectromagnetically\nelectromagnetism\nelectromagnets\nelectromechanical\nelectromechanically\nelectrometer\nelectrometers\nelectromotive\nelectron\nelectronic\nelectronically\nelectronics\nelectrons\nelectroplate\nelectroplated\nelectroplates\nelectroplating\nelectros\nelectroscope\nelectroscopes\nelectrostatic\nelectrostatically\nelectrostatics\nelectrotherapy\nelectrotype\nelectrotyped\nelectrotyper\nelectrotypers\nelectrotypes\nelectrotyping\nelectrum\nelectrums\nelects\neleemosynary\nelegance\nelegances\nelegancies\nelegancy\nelegant\nelegantly\nelegiac\nelegiacs\nelegies\nelegise\nelegised\nelegises\nelegising\nelegist\nelegists\nelegit\nelegits\nelegize\nelegized\nelegizes\nelegizing\nelegy\nelement\nelemental\nelementally\nelementarily\nelementariness\nelementary\nelements\nelemi\nelemis\nelenchi\nelenchic\nelenchus\nelenctic\nelephant\nelephants\nelevate\nelevated\nelevates\nelevating\nelevation\nelevations\nelevator\nelevators\neleven\nelevens\neleventh\nelevenths\nelevon\nelevons\nelf\nelfin\nelfins\nelfish\nelfishly\nelflock\nelflocks\nelhi\nelicit\nelicitation\nelicitations\nelicited\neliciting\nelicitor\nelicitors\nelicits\nelide\nelided\nelides\nelidible\neliding\neligibilities\neligibility\neligible\neligibles\neligibly\neliminate\neliminated\neliminates\neliminating\nelimination\neliminations\neliminative\neliminator\neliminators\nelint\nelision\nelisions\nelite\nelites\nelitism\nelitisms\nelitist\nelitists\nelixir\nelixirs\nelk\nelkhound\nelkhounds\nelks\nell\nellipse\nellipses\nellipsis\nellipsoid\nellipsoidal\nellipsoids\nelliptic\nelliptical\nelliptically\nellipticity\nells\nelm\nelmier\nelmiest\nelms\nelmy\nelocution\nelocutionary\nelocutionist\nelocutionists\nelocutions\nelodea\nelodeas\neloign\neloigned\neloigner\neloigners\neloigning\neloigns\neloin\neloined\neloiner\neloiners\neloining\neloins\nelongate\nelongated\nelongates\nelongating\nelongation\nelongations\nelope\neloped\nelopement\nelopements\neloper\nelopers\nelopes\neloping\neloquence\neloquences\neloquent\neloquently\nels\nelse\nelsewhere\neluant\neluants\neluate\neluates\nelucidate\nelucidated\nelucidates\nelucidating\nelucidation\nelucidations\nelucidative\nelucidator\nelucidators\nelude\neluded\neluder\neluders\neludes\neluding\neluent\neluents\nelusion\nelusions\nelusive\nelusively\nelusiveness\nelusory\nelute\neluted\nelutes\neluting\nelution\nelutions\neluvia\neluvial\neluviate\neluviated\neluviates\neluviating\neluvium\neluviums\nelver\nelvers\nelves\nelvish\nelvishly\nelysian\nelytra\nelytroid\nelytron\nelytrous\nelytrum\nem\nemaciate\nemaciated\nemaciates\nemaciating\nemaciation\nemanate\nemanated\nemanates\nemanating\nemanation\nemanational\nemanations\nemanative\nemanator\nemanators\nemancipate\nemancipated\nemancipates\nemancipating\nemancipation\nemancipationist\nemancipationists\nemancipations\nemancipator\nemancipators\nemasculate\nemasculated\nemasculates\nemasculating\nemasculation\nemasculations\nemasculator\nemasculators\nembalm\nembalmed\nembalmer\nembalmers\nembalming\nembalmment\nembalmments\nembalms\nembank\nembanked\nembanking\nembankment\nembankments\nembanks\nembar\nembargo\nembargoed\nembargoes\nembargoing\nembark\nembarkation\nembarkations\nembarked\nembarking\nembarkment\nembarkments\nembarks\nembarrass\nembarrassed\nembarrassedly\nembarrasses\nembarrassing\nembarrassingly\nembarrassment\nembarrassments\nembarred\nembarring\nembars\nembassies\nembassy\nembattle\nembattled\nembattles\nembattling\nembay\nembayed\nembaying\nembays\nembed\nembedded\nembedding\nembedment\nembedments\nembeds\nembellish\nembellished\nembellisher\nembellishers\nembellishes\nembellishing\nembellishment\nembellishments\nember\nembers\nembezzle\nembezzled\nembezzlement\nembezzlements\nembezzler\nembezzlers\nembezzles\nembezzling\nembitter\nembittered\nembittering\nembitterment\nembitterments\nembitters\nemblaze\nemblazed\nemblazer\nemblazers\nemblazes\nemblazing\nemblazon\nemblazoned\nemblazoner\nemblazoners\nemblazoning\nemblazonment\nemblazonments\nemblazonry\nemblazons\nemblem\nemblematic\nemblematical\nemblematically\nemblematize\nemblematized\nemblematizes\nemblematizing\nemblemed\nembleming\nemblems\nembodied\nembodier\nembodiers\nembodies\nembodiment\nembodiments\nembody\nembodying\nembolden\nemboldened\nemboldening\nemboldens\nemboli\nembolic\nembolies\nembolism\nembolismic\nembolisms\nembolus\nemboly\nemborder\nembordered\nembordering\nemborders\nembosk\nembosked\nembosking\nembosks\nembosom\nembosomed\nembosoming\nembosoms\nemboss\nembossed\nembosser\nembossers\nembosses\nembossing\nembossment\nembossments\nembouchure\nembouchures\nembow\nembowed\nembowel\nemboweled\nemboweling\nembowelled\nembowelling\nembowels\nembower\nembowered\nembowering\nembowers\nembowing\nembows\nembrace\nembraceable\nembraced\nembracement\nembracements\nembracer\nembraceries\nembracers\nembracery\nembraces\nembracing\nembrasure\nembrasures\nembroider\nembroidered\nembroiderer\nembroiderers\nembroideries\nembroidering\nembroiders\nembroidery\nembroil\nembroiled\nembroiling\nembroilment\nembroilments\nembroils\nembrown\nembrowned\nembrowning\nembrowns\nembrue\nembrued\nembrues\nembruing\nembrute\nembruted\nembrutes\nembruting\nembryo\nembryoid\nembryologic\nembryological\nembryologically\nembryologies\nembryologist\nembryologists\nembryology\nembryon\nembryonal\nembryonic\nembryonically\nembryons\nembryos\nemcee\nemceed\nemceeing\nemcees\neme\nemeer\nemeerate\nemeerates\nemeers\nemend\nemendable\nemendate\nemendated\nemendates\nemendating\nemendation\nemendations\nemended\nemender\nemenders\nemending\nemends\nemerald\nemeralds\nemerge\nemerged\nemergence\nemergencies\nemergency\nemergent\nemergents\nemerges\nemerging\nemeries\nemerita\nemeriti\nemeritus\nemerod\nemerods\nemeroid\nemeroids\nemersed\nemersion\nemersions\nemery\nemes\nemeses\nemesis\nemetic\nemetically\nemetics\nemetin\nemetine\nemetines\nemetins\nemeu\nemeus\nemeute\nemeutes\nemic\nemigrant\nemigrants\nemigrate\nemigrated\nemigrates\nemigrating\nemigration\nemigrations\nemigre\nemigres\neminence\neminences\neminencies\neminency\neminent\neminently\nemir\nemirate\nemirates\nemirs\nemissaries\nemissary\nemission\nemissions\nemissive\nemit\nemits\nemitted\nemitter\nemitters\nemitting\nemmer\nemmers\nemmet\nemmets\nemodin\nemodins\nemollient\nemollients\nemolument\nemoluments\nemote\nemoted\nemoter\nemoters\nemotes\nemoting\nemotion\nemotional\nemotionalism\nemotionalist\nemotionalistic\nemotionalists\nemotionalities\nemotionality\nemotionalize\nemotionalized\nemotionalizes\nemotionalizing\nemotionally\nemotionless\nemotions\nemotive\nemotively\nempale\nempaled\nempaler\nempalers\nempales\nempaling\nempanel\nempaneled\nempaneling\nempanelled\nempanelling\nempanels\nempathic\nempathies\nempathize\nempathized\nempathizes\nempathizing\nempathy\nempennage\nempennages\nemperies\nemperor\nemperors\nemperorship\nempery\nemphases\nemphasis\nemphasize\nemphasized\nemphasizes\nemphasizing\nemphatic\nemphatically\nemphysema\nemphysematous\nempire\nempires\nempiric\nempirical\nempirically\nempiricism\nempiricist\nempiricists\nempirics\nemplace\nemplaced\nemplacement\nemplacements\nemplaces\nemplacing\nemplane\nemplaned\nemplanes\nemplaning\nemploy\nemployability\nemployable\nemploye\nemployed\nemployee\nemployees\nemployer\nemployers\nemployes\nemploying\nemployment\nemployments\nemploys\nempoison\nempoisoned\nempoisoning\nempoisons\nemporia\nemporium\nemporiums\nempower\nempowered\nempowering\nempowerment\nempowers\nempress\nempresses\nemprise\nemprises\nemprize\nemprizes\nemptied\nemptier\nemptiers\nempties\nemptiest\nemptily\nemptiness\nemptings\nemptins\nempty\nemptying\nempurple\nempurpled\nempurples\nempurpling\nempyema\nempyemas\nempyemata\nempyemic\nempyreal\nempyrean\nempyreans\nems\nemu\nemulate\nemulated\nemulates\nemulating\nemulation\nemulations\nemulative\nemulatively\nemulator\nemulators\nemulous\nemulsible\nemulsifiable\nemulsification\nemulsifications\nemulsified\nemulsifier\nemulsifiers\nemulsifies\nemulsify\nemulsifying\nemulsion\nemulsions\nemulsive\nemulsoid\nemulsoids\nemus\nemyd\nemyde\nemydes\nemyds\nen\nenable\nenabled\nenabler\nenablers\nenables\nenabling\nenact\nenacted\nenacting\nenactive\nenactment\nenactments\nenactor\nenactors\nenactory\nenacts\nenamel\nenameled\nenameler\nenamelers\nenameling\nenamelist\nenamelists\nenamelled\nenamelling\nenamels\nenamelware\nenamine\nenamines\nenamor\nenamored\nenamoring\nenamors\nenamour\nenamoured\nenamouring\nenamours\nenate\nenates\nenatic\nenation\nenations\nencaenia\nencage\nencaged\nencages\nencaging\nencamp\nencamped\nencamping\nencampment\nencampments\nencamps\nencapsulate\nencapsulated\nencapsulates\nencapsulating\nencapsulation\nencapsulations\nencase\nencased\nencasement\nencasements\nencases\nencash\nencashed\nencashes\nencashing\nencasing\nencaustic\nencaustics\nenceinte\nenceintes\nencephalitis\nencephalogram\nencephalograms\nencephalograph\nencephalographs\nencephalography\nenchain\nenchained\nenchaining\nenchains\nenchant\nenchanted\nenchanter\nenchanters\nenchanting\nenchantment\nenchantments\nenchantress\nenchantresses\nenchants\nenchase\nenchased\nenchaser\nenchasers\nenchases\nenchasing\nenchilada\nenchiladas\nenchoric\nencina\nencinal\nencinas\nencipher\nenciphered\nenciphering\nenciphers\nencircle\nencircled\nencirclement\nencirclements\nencircles\nencircling\nenclasp\nenclasped\nenclasping\nenclasps\nenclave\nenclaves\nenclitic\nenclitics\nenclose\nenclosed\nencloser\nenclosers\nencloses\nenclosing\nenclosure\nenclosures\nencode\nencoded\nencoder\nencoders\nencodes\nencoding\nencomia\nencomiastic\nencomiastically\nencomium\nencomiums\nencompass\nencompassed\nencompasses\nencompassing\nencompassment\nencompassments\nencore\nencored\nencores\nencoring\nencounter\nencountered\nencountering\nencounters\nencourage\nencouraged\nencouragement\nencouragements\nencourager\nencouragers\nencourages\nencouraging\nencouragingly\nencroach\nencroached\nencroacher\nencroachers\nencroaches\nencroaching\nencroachment\nencroachments\nencrust\nencrustation\nencrustations\nencrusted\nencrusting\nencrusts\nencrypt\nencrypted\nencrypting\nencryption\nencryptions\nencrypts\nencumber\nencumbered\nencumbering\nencumbers\nencumbrance\nencumbrancer\nencumbrancers\nencumbrances\nencyclic\nencyclical\nencyclicals\nencyclics\nencyclopedia\nencyclopedias\nencyclopedic\nencyclopedically\nencyclopedism\nencyclopedist\nencyclopedists\nencyst\nencysted\nencysting\nencysts\nend\nendamage\nendamaged\nendamages\nendamaging\nendameba\nendamebae\nendamebas\nendanger\nendangered\nendangering\nendangerment\nendangers\nendarch\nendarchies\nendarchy\nendbrain\nendbrains\nendear\nendeared\nendearing\nendearingly\nendearment\nendearments\nendears\nendeavor\nendeavored\nendeavoring\nendeavors\nended\nendemial\nendemic\nendemically\nendemicity\nendemics\nendemism\nendemisms\nender\nendermic\nenders\nendexine\nendexines\nending\nendings\nendite\nendited\nendites\nenditing\nendive\nendives\nendleaf\nendleaves\nendless\nendlessly\nendlessness\nendlong\nendmost\nendocarp\nendocarps\nendocrine\nendocrinological\nendocrinologist\nendocrinologists\nendocrinology\nendoderm\nendoderms\nendogamies\nendogamous\nendogamy\nendogen\nendogenies\nendogens\nendogeny\nendopod\nendopods\nendorsable\nendorse\nendorsed\nendorsee\nendorsees\nendorsement\nendorsements\nendorser\nendorsers\nendorses\nendorsing\nendorsingly\nendorsor\nendorsors\nendosarc\nendosarcs\nendosmos\nendosmoses\nendosome\nendosomes\nendostea\nendow\nendowed\nendower\nendowers\nendowing\nendowment\nendowments\nendows\nendozoic\nendpaper\nendpapers\nendplate\nendplates\nendrin\nendrins\nends\nendue\nendued\nendues\nenduing\nendurable\nendurably\nendurance\nendurances\nendure\nendured\nendures\nenduring\nenduringly\nenduringness\nenduro\nenduros\nendways\nendwise\nenema\nenemas\nenemata\nenemies\nenemy\nenergetic\nenergetically\nenergeticist\nenergeticists\nenergetics\nenergid\nenergids\nenergies\nenergise\nenergised\nenergises\nenergising\nenergize\nenergized\nenergizer\nenergizers\nenergizes\nenergizing\nenergy\nenervate\nenervated\nenervates\nenervating\nenervation\nenervations\nenface\nenfaced\nenfaces\nenfacing\nenfeeble\nenfeebled\nenfeeblement\nenfeeblements\nenfeebles\nenfeebling\nenfeoff\nenfeoffed\nenfeoffing\nenfeoffs\nenfetter\nenfettered\nenfettering\nenfetters\nenfever\nenfevered\nenfevering\nenfevers\nenfilade\nenfiladed\nenfilades\nenfilading\nenflame\nenflamed\nenflames\nenflaming\nenfold\nenfolded\nenfolder\nenfolders\nenfolding\nenfolds\nenforce\nenforceability\nenforceable\nenforced\nenforcement\nenforcements\nenforcer\nenforcers\nenforces\nenforcing\nenframe\nenframed\nenframes\nenframing\nenfranchise\nenfranchised\nenfranchisement\nenfranchisements\nenfranchising\neng\nengage\nengaged\nengagement\nengagements\nengager\nengagers\nengages\nengaging\nengagingly\nengender\nengendered\nengendering\nengenders\nengild\nengilded\nengilding\nengilds\nengine\nengined\nengineer\nengineered\nengineering\nengineers\nengineries\nenginery\nengines\nengining\nenginous\nengird\nengirded\nengirding\nengirdle\nengirdled\nengirdles\nengirdling\nengirds\nengirt\nenglish\nenglished\nenglishes\nenglishing\nenglishness\nenglut\nengluts\nenglutted\nenglutting\nengorge\nengorged\nengorgement\nengorgements\nengorges\nengorging\nengraft\nengrafted\nengrafting\nengrafts\nengrail\nengrailed\nengrailing\nengrails\nengrain\nengrained\nengraining\nengrains\nengram\nengramme\nengrammes\nengrams\nengrave\nengraved\nengraver\nengravers\nengraves\nengraving\nengravings\nengross\nengrossed\nengrosser\nengrossers\nengrosses\nengrossing\nengrossingly\nengrossment\nengrossments\nengs\nengulf\nengulfed\nengulfing\nengulfment\nengulfments\nengulfs\nenhalo\nenhaloed\nenhaloes\nenhaloing\nenhalos\nenhance\nenhanced\nenhancement\nenhancements\nenhancer\nenhancers\nenhances\nenhancing\nenigma\nenigmas\nenigmata\nenigmatic\nenigmatical\nenigmatically\nenisle\nenisled\nenisles\nenisling\nenjambed\nenjoin\nenjoined\nenjoiner\nenjoiners\nenjoining\nenjoins\nenjoy\nenjoyable\nenjoyableness\nenjoyably\nenjoyed\nenjoyer\nenjoyers\nenjoying\nenjoyment\nenjoyments\nenjoys\nenkindle\nenkindled\nenkindles\nenkindling\nenlace\nenlaced\nenlacement\nenlaces\nenlacing\nenlarge\nenlarged\nenlargement\nenlargements\nenlarger\nenlargers\nenlarges\nenlarging\nenlighten\nenlightened\nenlightening\nenlightenment\nenlightenments\nenlightens\nenlist\nenlisted\nenlistee\nenlistees\nenlister\nenlisters\nenlisting\nenlistment\nenlistments\nenlists\nenliven\nenlivened\nenlivening\nenlivens\nenmesh\nenmeshed\nenmeshes\nenmeshing\nenmeshment\nenmities\nenmity\nennead\nenneadic\nenneads\nenneagon\nenneagons\nennoble\nennobled\nennoblement\nennoblements\nennobler\nennoblers\nennobles\nennobling\nennui\nennuis\nennuye\nennuyee\nenol\nenolase\nenolases\nenolic\nenologies\nenology\nenols\nenorm\nenormities\nenormity\nenormous\nenormously\nenormousness\nenosis\nenosises\nenough\nenoughs\nenounce\nenounced\nenounces\nenouncing\nenow\nenows\nenplane\nenplaned\nenplanes\nenplaning\nenquire\nenquired\nenquires\nenquiries\nenquiring\nenquiry\nenrage\nenraged\nenrages\nenraging\nenrapt\nenrapting\nenrapture\nenraptured\nenraptures\nenrapturing\nenravish\nenravished\nenravishes\nenravishing\nenrich\nenriched\nenricher\nenrichers\nenriches\nenriching\nenrichment\nenrichments\nenrobe\nenrobed\nenrober\nenrobers\nenrobes\nenrobing\nenrol\nenroll\nenrolled\nenrollee\nenrollees\nenroller\nenrollers\nenrolling\nenrollment\nenrollments\nenrolls\nenrolment\nenrolments\nenrols\nenroot\nenrooted\nenrooting\nenroots\nens\nensample\nensamples\nensconce\nensconced\nensconces\nensconcing\nenscroll\nenscrolled\nenscrolling\nenscrolls\nensemble\nensembles\nenserf\nenserfed\nenserfing\nenserfs\nensheath\nensheathed\nensheathing\nensheaths\nenshrine\nenshrined\nenshrinement\nenshrinements\nenshrines\nenshrining\nenshroud\nenshrouded\nenshrouding\nenshrouds\nensiform\nensign\nensigncies\nensigncy\nensigns\nensilage\nensilaged\nensilages\nensilaging\nensile\nensiled\nensiles\nensiling\nenskied\nenskies\nensky\nenskyed\nenskying\nenslave\nenslaved\nenslavement\nenslavements\nenslaver\nenslavers\nenslaves\nenslaving\nensnare\nensnared\nensnarer\nensnarers\nensnares\nensnaring\nensnarl\nensnarled\nensnarling\nensnarls\nensorcel\nensorceled\nensorceling\nensorcels\nensoul\nensouled\nensouling\nensouls\nensphere\nensphered\nenspheres\nensphering\nensue\nensued\nensues\nensuing\nensure\nensured\nensurer\nensurers\nensures\nensuring\nenswathe\nenswathed\nenswathes\nenswathing\nentail\nentailed\nentailer\nentailers\nentailing\nentailment\nentailments\nentails\nentameba\nentamebae\nentamebas\nentangle\nentangled\nentanglement\nentanglements\nentangler\nentanglers\nentangles\nentangling\nentases\nentasia\nentasias\nentasis\nentastic\nentellus\nentelluses\nentente\nententes\nenter\nentera\nenterable\nenteral\nentered\nenterer\nenterers\nenteric\nentering\nenteron\nenterons\nenterprise\nenterpriser\nenterprisers\nenterprises\nenterprising\nenters\nentertain\nentertained\nentertainer\nentertainers\nentertaining\nentertainingly\nentertainment\nentertainments\nentertains\nenthalpies\nenthalpy\nenthetic\nenthral\nenthrall\nenthralled\nenthralling\nenthrallment\nenthrallments\nenthralls\nenthralment\nenthralments\nenthrals\nenthrone\nenthroned\nenthronement\nenthronements\nenthrones\nenthroning\nenthuse\nenthused\nenthuses\nenthusiasm\nenthusiasms\nenthusiast\nenthusiastic\nenthusiastically\nenthusiasts\nenthusing\nentia\nentice\nenticed\nenticement\nenticements\nenticer\nenticers\nentices\nenticing\nenticingly\nenties\nentire\nentirely\nentireness\nentires\nentireties\nentirety\nentitle\nentitled\nentitlement\nentitlements\nentitles\nentitling\nentity\nentoderm\nentoderms\nentoil\nentoiled\nentoiling\nentoils\nentomb\nentombed\nentombing\nentombment\nentombments\nentombs\nentomological\nentomologically\nentomologies\nentomologist\nentomologists\nentomology\nentopic\nentourage\nentourages\nentozoa\nentozoal\nentozoan\nentozoans\nentozoic\nentozoon\nentrails\nentrain\nentrained\nentraining\nentrains\nentrance\nentranced\nentrancement\nentrancements\nentrances\nentrancing\nentrant\nentrants\nentrap\nentrapment\nentrapments\nentrapped\nentrapping\nentraps\nentreat\nentreated\nentreaties\nentreating\nentreatingly\nentreatment\nentreatments\nentreats\nentreaty\nentree\nentrees\nentrench\nentrenched\nentrencher\nentrenchers\nentrenches\nentrenching\nentrenchment\nentrenchments\nentrepot\nentrepots\nentrepreneur\nentrepreneurial\nentrepreneurs\nentrepreneurship\nentresol\nentresols\nentries\nentropies\nentropy\nentrust\nentrusted\nentrusting\nentrustment\nentrustments\nentrusts\nentry\nentryway\nentryways\nentwine\nentwined\nentwines\nentwining\nentwist\nentwisted\nentwisting\nentwists\nenumerate\nenumerated\nenumerates\nenumerating\nenumeration\nenumerations\nenumerative\nenumerator\nenumerators\nenunciate\nenunciated\nenunciates\nenunciating\nenunciation\nenunciations\nenunciator\nenunciators\nenure\nenured\nenures\nenuresis\nenuresises\nenuretic\nenuring\nenvelop\nenvelope\nenveloped\nenvelopes\nenveloping\nenvelopment\nenvelopments\nenvelops\nenvenom\nenvenomed\nenvenoming\nenvenoms\nenviable\nenviably\nenvied\nenvier\nenviers\nenvies\nenvious\nenviously\nenviousness\nenviron\nenvironed\nenvironing\nenvironment\nenvironmental\nenvironmentalism\nenvironmentalist\nenvironmentalists\nenvironmentally\nenvironments\nenvirons\nenvisage\nenvisaged\nenvisages\nenvisaging\nenvision\nenvisioned\nenvisioning\nenvisions\nenvoi\nenvois\nenvoy\nenvoys\nenvy\nenvying\nenvyingly\nenwheel\nenwheeled\nenwheeling\nenwheels\nenwind\nenwinding\nenwinds\nenwomb\nenwombed\nenwombing\nenwombs\nenwound\nenwrap\nenwrapped\nenwrapping\nenwraps\nenzootic\nenzootics\nenzym\nenzymatic\nenzymatically\nenzyme\nenzymes\nenzymic\nenzymologist\nenzymologists\nenzymology\nenzyms\neobiont\neobionts\neohippus\neohippuses\neolian\neolipile\neolipiles\neolith\neolithic\neoliths\neolopile\neolopiles\neon\neonian\neonism\neonisms\neons\neosin\neosine\neosines\neosinic\neosins\nepact\nepacts\neparch\neparchies\neparchs\neparchy\nepaulet\nepaulets\nepaulette\nepaulettes\nepee\nepeeist\nepeeists\nepees\nepeiric\nepergne\nepergnes\nepha\nephah\nephahs\nephas\nephebe\nephebes\nephebi\nephebic\nepheboi\nephebos\nephebus\nephedra\nephedras\nephedrin\nephedrins\nephemera\nephemerae\nephemeral\nephemeralities\nephemerality\nephemerally\nephemeras\nephemerides\nephemeris\nephod\nephods\nephor\nephoral\nephorate\nephorates\nephori\nephors\nepiblast\nepiblasts\nepibolic\nepibolies\nepiboly\nepic\nepical\nepically\nepicalyces\nepicalyx\nepicalyxes\nepicarp\nepicarps\nepicedia\nepicene\nepicenes\nepicenter\nepicenters\nepiclike\nepicotyl\nepicotyls\nepics\nepicure\nepicurean\nepicureanism\nepicureans\nepicures\nepicycle\nepicycles\nepidemic\nepidemical\nepidemically\nepidemics\nepidemiological\nepidemiologically\nepidemiologist\nepidemiologists\nepidemiology\nepiderm\nepidermal\nepidermis\nepiderms\nepidote\nepidotes\nepidotic\nepidural\nepifauna\nepifaunae\nepifaunas\nepifocal\nepigeal\nepigean\nepigene\nepigenic\nepigeous\nepigon\nepigone\nepigones\nepigoni\nepigonic\nepigons\nepigonus\nepigram\nepigrammatic\nepigrammatically\nepigrammatist\nepigrammatists\nepigrammatize\nepigrammatized\nepigrammatizes\nepigrammatizing\nepigrams\nepigraph\nepigraphic\nepigraphically\nepigraphist\nepigraphists\nepigraphs\nepigraphy\nepigynies\nepigyny\nepilepsies\nepilepsy\nepileptic\nepileptically\nepileptics\nepilog\nepilogs\nepilogue\nepilogued\nepilogues\nepiloguing\nepimer\nepimere\nepimeres\nepimeric\nepimers\nepimysia\nepinaoi\nepinaos\nepinasties\nepinasty\nepinephrin\nepinephrine\nepinephrines\nepiphanies\nepiphany\nepiphyte\nepiphytes\nepiphytic\nepiphytically\nepiscia\nepiscias\nepiscopacies\nepiscopacy\nepiscopal\nepiscopally\nepiscopate\nepiscopates\nepiscope\nepiscopes\nepisode\nepisodes\nepisodic\nepisodical\nepisodically\nepisomal\nepisome\nepisomes\nepistasies\nepistasy\nepistemological\nepistemologically\nepistemologies\nepistemologist\nepistemologists\nepistemology\nepistle\nepistler\nepistlers\nepistles\nepistolaries\nepistolary\nepistyle\nepistyles\nepitaph\nepitaphial\nepitaphic\nepitaphs\nepitases\nepitasis\nepitaxies\nepitaxy\nepithelia\nepithelium\nepithet\nepithetic\nepithetical\nepithets\nepitome\nepitomes\nepitomic\nepitomize\nepitomized\nepitomizes\nepitomizing\nepizoa\nepizoic\nepizoism\nepizoisms\nepizoite\nepizoites\nepizoon\nepizooties\nepizooty\nepoch\nepochal\nepochally\nepochs\nepode\nepodes\neponym\neponymic\neponymies\neponymous\neponyms\neponymy\nepopee\nepopees\nepopoeia\nepopoeias\nepos\neposes\nepoxide\nepoxides\nepoxied\nepoxies\nepoxy\nepoxyed\nepoxying\nepsilon\nepsilons\nequability\nequable\nequableness\nequably\nequal\nequaled\nequaling\nequalise\nequalised\nequalises\nequalising\nequalitarian\nequalitarianism\nequalitarians\nequalities\nequality\nequalization\nequalizations\nequalize\nequalized\nequalizer\nequalizers\nequalizes\nequalizing\nequalled\nequalling\nequally\nequals\nequanimities\nequanimity\nequate\nequated\nequates\nequating\nequation\nequational\nequationally\nequations\nequator\nequatorial\nequators\nequerries\nequerry\nequestrian\nequestrians\nequestrienne\nequestriennes\nequiangular\nequidistant\nequidistantly\nequilateral\nequilibrate\nequilibrated\nequilibrates\nequilibrating\nequilibration\nequilibrations\nequilibrator\nequilibrators\nequilibratory\nequilibria\nequilibrium\nequilibriums\nequine\nequinely\nequines\nequinities\nequinity\nequinoctial\nequinox\nequinoxes\nequip\nequipage\nequipages\nequipment\nequipments\nequipoise\nequipoised\nequipoises\nequipoising\nequipollence\nequipollences\nequipollent\nequipollently\nequipped\nequipper\nequippers\nequipping\nequips\nequiseta\nequitable\nequitableness\nequitably\nequitant\nequitation\nequitations\nequites\nequities\nequity\nequivalence\nequivalences\nequivalencies\nequivalency\nequivalent\nequivalently\nequivalents\nequivocal\nequivocality\nequivocally\nequivocalness\nequivocate\nequivocated\nequivocates\nequivocating\nequivocation\nequivocations\nequivocator\nequivocators\nequivoke\nequivokes\ner\nera\neradiate\neradiated\neradiates\neradiating\neradicable\neradicate\neradicated\neradicates\neradicating\neradication\neradications\neradicator\neradicators\neras\nerasable\nerase\nerased\neraser\nerasers\nerases\nerasing\nerasion\nerasions\nerasure\nerasures\nerbium\nerbiums\nere\nerect\nerectable\nerected\nerecter\nerecters\nerectile\nerectility\nerecting\nerection\nerections\nerective\nerectly\nerectness\nerector\nerectors\nerects\nerelong\neremite\neremites\neremitic\neremitical\neremitism\neremitisms\neremuri\neremurus\nerenow\nerepsin\nerepsins\nerethic\nerethism\nerethisms\nerewhile\nerg\nergastic\nergate\nergates\nergo\nergodic\nergonomic\nergonomically\nergonomics\nergonomist\nergonomists\nergosterol\nergosterols\nergot\nergotic\nergotism\nergotisms\nergots\nergs\nerica\nericas\nericoid\nerigeron\nerigerons\neringo\neringoes\neringos\neristic\neristics\nerlking\nerlkings\nermine\nermined\nermines\nern\nerne\nernes\nerns\nerode\neroded\nerodent\nerodes\nerodible\neroding\nerogenic\nerogenous\neros\nerose\nerosely\neroses\nerosible\nerosion\nerosional\nerosions\nerosive\nerosiveness\nerosivity\nerotic\nerotica\nerotical\nerotically\neroticism\neroticisms\nerotics\nerotism\nerotisms\nerr\nerrancies\nerrancy\nerrand\nerrands\nerrant\nerrantly\nerrantries\nerrantry\nerrants\nerrata\nerratas\nerratic\nerratical\nerratically\nerraticism\nerraticisms\nerratics\nerratum\nerred\nerrhine\nerrhines\nerring\nerringly\nerroneous\nerroneously\nerroneousness\nerror\nerrors\nerrs\ners\nersatz\nersatzes\nerses\nerst\nerstwhile\neruct\neructate\neructated\neructates\neructating\neructation\neructations\neructed\neructing\neructs\nerudite\neruditely\nerudition\neruditions\nerugo\nerugos\nerumpent\nerupt\nerupted\neruptible\nerupting\neruption\neruptions\neruptive\neruptively\neruptives\nerupts\nervil\nervils\neryngo\neryngoes\neryngos\nerythema\nerythemas\nerythrocyte\nerythrocytes\nerythrocytic\nerythromycin\nerythromycins\nerythron\nerythrons\nes\nescadrille\nescadrilles\nescalade\nescaladed\nescalades\nescalading\nescalate\nescalated\nescalates\nescalating\nescalation\nescalations\nescalator\nescalators\nescalatory\nescallop\nescalloped\nescalloping\nescallops\nescalop\nescaloped\nescaloping\nescalops\nescapable\nescapade\nescapades\nescape\nescaped\nescapee\nescapees\nescapement\nescapements\nescaper\nescapers\nescapes\nescaping\nescapism\nescapisms\nescapist\nescapists\nescar\nescargot\nescargots\nescarole\nescaroles\nescarp\nescarped\nescarping\nescarpment\nescarpments\nescarps\nescars\neschalot\neschalots\neschar\neschars\nescheat\nescheatable\nescheated\nescheating\nescheats\neschew\neschewal\neschewals\neschewed\neschewing\neschews\nescolar\nescolars\nescort\nescorted\nescorting\nescorts\nescot\nescoted\nescoting\nescots\nescrow\nescrowed\nescrowing\nescrows\nescuage\nescuages\nescudo\nescudos\nesculent\nesculents\nescutcheon\nescutcheons\neserine\neserines\neses\neskar\neskars\nesker\neskers\nesophagi\nesoteric\nesoterically\nespadrille\nespadrilles\nespalier\nespaliered\nespaliering\nespaliers\nespanol\nespanoles\nesparto\nespartos\nespecial\nespecially\nesperantos\nespial\nespials\nespied\nespiegle\nespies\nespionage\nespionages\nesplanade\nesplanades\nespousal\nespousals\nespouse\nespoused\nespouser\nespousers\nespouses\nespousing\nespresso\nespressos\nesprit\nesprits\nespy\nespying\nesquire\nesquired\nesquires\nesquiring\ness\nessancias\nessay\nessayed\nessayer\nessayers\nessaying\nessayist\nessayistic\nessayists\nessays\nessence\nessences\nessential\nessentialism\nessentialist\nessentialists\nessentialities\nessentiality\nessentially\nessentialness\nessentials\nesses\nessoin\nessoins\nessonite\nessonites\nestablish\nestablished\nestablisher\nestablishers\nestablishes\nestablishing\nestablishment\nestablishmentarian\nestablishmentarianism\nestablishmentarianisms\nestablishmentarians\nestablishments\nestancia\nestancias\nestate\nestated\nestates\nestating\nesteem\nesteemed\nesteeming\nesteems\nester\nesterase\nesterases\nesterified\nesterifies\nesterify\nesterifying\nesters\nestheses\nesthesia\nesthesias\nesthesis\nesthesises\nesthete\nesthetes\nesthetic\nesthetical\nesthetically\nestheticism\nesthetics\nestimable\nestimableness\nestimate\nestimated\nestimates\nestimating\nestimation\nestimations\nestimative\nestimator\nestimators\nestival\nestivate\nestivated\nestivates\nestivating\nestivation\nestivations\nestop\nestopped\nestoppel\nestoppels\nestopping\nestops\nestovers\nestragon\nestragons\nestral\nestrange\nestranged\nestrangement\nestrangements\nestranger\nestrangers\nestranges\nestranging\nestray\nestrayed\nestraying\nestrays\nestreat\nestreated\nestreating\nestreats\nestrin\nestrins\nestriol\nestriols\nestrogen\nestrogenic\nestrogenically\nestrogens\nestrone\nestrones\nestrous\nestrual\nestrum\nestrums\nestrus\nestruses\nestuarial\nestuaries\nestuarine\nestuary\nesurient\net\neta\netagere\netageres\netamin\netamine\netamines\netamins\netape\netapes\netas\netatism\netatisms\netatist\netcetera\netceteras\netch\netched\netcher\netchers\netches\netching\netchings\neternal\neternally\neternalness\neternals\neterne\neternise\neternised\neternises\neternising\neternities\neternity\neternization\neternizations\neternize\neternized\neternizes\neternizing\netesian\netesians\neth\nethane\nethanes\nethanol\nethanols\nethene\nethenes\nether\nethereal\netherealities\nethereality\netherealization\netherealizations\netherealize\netherealized\netherealizes\netherealizing\nethereally\netherealness\netheric\netherified\netherifies\netherify\netherifying\netherish\netherization\netherizations\netherize\netherized\netherizer\netherizers\netherizes\netherizing\nethers\nethic\nethical\nethicality\nethically\nethicalness\nethicals\nethician\nethicians\nethicist\nethicists\nethicize\nethicized\nethicizes\nethicizing\nethics\nethinyl\nethinyls\nethion\nethions\nethmoid\nethmoids\nethnarch\nethnarchs\nethnic\nethnical\nethnically\nethnics\nethnocentric\nethnocentricity\nethnocentrism\nethnographer\nethnographers\nethnographic\nethnographical\nethnographically\nethnographies\nethnography\nethnologic\nethnological\nethnologically\nethnologies\nethnologist\nethnologists\nethnology\nethnos\nethnoses\nethologies\nethology\nethos\nethoses\nethoxy\nethoxyl\nethoxyls\neths\nethyl\nethylate\nethylated\nethylates\nethylating\nethylene\nethylenes\nethylic\nethyls\nethyne\nethynes\nethynyl\nethynyls\netic\netiolate\netiolated\netiolates\netiolating\netiologic\netiological\netiologically\netiologies\netiology\netiquette\netiquettes\netna\netnas\netoile\netoiles\netude\netudes\netui\netuis\netwee\netwees\netyma\netymological\netymologically\netymologies\netymologist\netymologists\netymologize\netymologized\netymologizes\netymologizing\netymology\netymon\netymons\neucaine\neucaines\neucalypt\neucalypti\neucalypts\neucalyptus\neucalyptuses\neucharis\neucharises\neucharistic\neuchre\neuchred\neuchres\neuchring\neuclase\neuclases\neucrite\neucrites\neucritic\neudaemon\neudaemons\neudemon\neudemons\neugenic\neugenically\neugenicist\neugenicists\neugenics\neugenist\neugenists\neugenol\neugenols\neuglena\neuglenas\neulachan\neulachans\neulachon\neulachons\neulogia\neulogiae\neulogias\neulogies\neulogise\neulogised\neulogises\neulogising\neulogist\neulogistic\neulogistically\neulogists\neulogium\neulogiums\neulogize\neulogized\neulogizer\neulogizers\neulogizes\neulogizing\neulogy\neunuch\neunuchs\neuonymus\neuonymuses\neupatrid\neupatridae\neupatrids\neupepsia\neupepsias\neupepsies\neupepsy\neupeptic\neuphemism\neuphemisms\neuphemistic\neuphemistically\neuphenic\neuphonic\neuphonically\neuphonies\neuphonious\neuphoniously\neuphoniousness\neuphonium\neuphoniums\neuphony\neuphoria\neuphorias\neuphoric\neuphotic\neuphrasies\neuphrasy\neuphroe\neuphroes\neuphuism\neuphuisms\neuphuist\neuphuists\neuploid\neuploidies\neuploids\neuploidy\neupnea\neupneas\neupneic\neupnoea\neupnoeas\neupnoeic\neureka\neurhythmic\neurhythmics\neuripi\neuripus\neuro\neuropium\neuropiums\neuros\neurythmic\neurythmics\neurythmies\neurythmy\neustacies\neustacy\neustatic\neustele\neusteles\neutaxies\neutaxy\neutectic\neutectics\neuthanasia\neuthanasias\neuthanasic\neutrophies\neutrophy\neuxenite\neuxenites\nevacuant\nevacuants\nevacuate\nevacuated\nevacuates\nevacuating\nevacuation\nevacuations\nevacuative\nevacuator\nevacuators\nevacuee\nevacuees\nevadable\nevade\nevaded\nevader\nevaders\nevades\nevadible\nevading\nevaluate\nevaluated\nevaluates\nevaluating\nevaluation\nevaluations\nevaluative\nevaluator\nevaluators\nevanesce\nevanesced\nevanescence\nevanescences\nevanescent\nevanesces\nevanescing\nevangel\nevangelical\nevangelically\nevangelism\nevangelisms\nevangelist\nevangelistic\nevangelistically\nevangelists\nevangelization\nevangelizations\nevangelize\nevangelized\nevangelizer\nevangelizers\nevangelizes\nevangelizing\nevangels\nevanish\nevanished\nevanishes\nevanishing\nevaporate\nevaporated\nevaporates\nevaporating\nevaporation\nevaporations\nevaporative\nevaporator\nevaporators\nevapotranspiration\nevapotranspirations\nevasion\nevasions\nevasive\nevasively\nevasiveness\neve\nevection\nevections\neven\nevened\nevener\neveners\nevenest\nevenfall\nevenfalls\nevenhanded\nevenhandedly\nevenhandedness\nevening\nevenings\nevenly\nevenness\nevennesses\nevens\nevensong\nevensongs\nevent\neventful\neventfully\neventfulness\neventide\neventides\nevents\neventual\neventualities\neventuality\neventually\neventuate\neventuated\neventuates\neventuating\never\neverglade\nevergreen\nevergreens\neverlasting\neverlastingly\neverlastingness\nevermore\neversible\neversion\neversions\nevert\neverted\neverting\nevertor\nevertors\neverts\nevery\neverybody\neveryday\neverydayness\neveryman\neverymen\neveryone\neverything\neveryway\neverywhere\neves\nevict\nevicted\nevictee\nevictees\nevicting\neviction\nevictions\nevictor\nevictors\nevicts\nevidence\nevidenced\nevidences\nevidencing\nevident\nevidential\nevidentially\nevidently\nevil\nevildoer\nevildoers\nevildoing\neviler\nevilest\neviller\nevillest\nevilly\nevilness\nevilnesses\nevils\nevince\nevinced\nevinces\nevincible\nevincing\nevincive\neviscerate\neviscerated\neviscerates\neviscerating\nevisceration\neviscerations\nevitable\nevite\nevited\nevites\neviting\nevocable\nevocation\nevocations\nevocative\nevocatively\nevocativeness\nevocator\nevocators\nevoke\nevoked\nevoker\nevokers\nevokes\nevoking\nevolute\nevolutes\nevolution\nevolutionarily\nevolutionary\nevolutionism\nevolutionisms\nevolutionist\nevolutionists\nevolutions\nevolvable\nevolve\nevolved\nevolvement\nevolvements\nevolver\nevolvers\nevolves\nevolving\nevonymus\nevonymuses\nevulsion\nevulsions\nevzone\nevzones\newe\newer\newers\newes\nex\nexacerbate\nexacerbated\nexacerbates\nexacerbating\nexacerbation\nexacerbations\nexact\nexacta\nexactable\nexactas\nexacted\nexacter\nexacters\nexactest\nexacting\nexactingly\nexactingness\nexaction\nexactions\nexactitude\nexactitudes\nexactly\nexactness\nexactor\nexactors\nexacts\nexaggerate\nexaggerated\nexaggeratedly\nexaggerates\nexaggerating\nexaggeration\nexaggerations\nexaggerative\nexaggerator\nexaggerators\nexaggeratory\nexalt\nexaltation\nexaltations\nexalted\nexaltedly\nexalter\nexalters\nexalting\nexalts\nexam\nexamen\nexamens\nexaminable\nexaminant\nexaminants\nexamination\nexaminational\nexaminations\nexamine\nexamined\nexaminee\nexaminees\nexaminer\nexaminers\nexamines\nexamining\nexample\nexampled\nexamples\nexampling\nexams\nexanthem\nexanthems\nexarch\nexarchal\nexarchies\nexarchs\nexarchy\nexasperate\nexasperated\nexasperatedly\nexasperates\nexasperating\nexasperatingly\nexasperation\nexasperations\nexcavate\nexcavated\nexcavates\nexcavating\nexcavation\nexcavations\nexcavator\nexcavators\nexceed\nexceeded\nexceeder\nexceeders\nexceeding\nexceedingly\nexceeds\nexcel\nexcelled\nexcellence\nexcellencies\nexcellency\nexcellent\nexcellently\nexcelling\nexcels\nexcelsior\nexcept\nexcepted\nexcepting\nexception\nexceptionable\nexceptionably\nexceptional\nexceptionality\nexceptionally\nexceptionalness\nexceptions\nexceptive\nexcepts\nexcerpt\nexcerpted\nexcerpter\nexcerpters\nexcerpting\nexcerption\nexcerptions\nexcerptor\nexcerptors\nexcerpts\nexcess\nexcesses\nexcessive\nexcessively\nexcessiveness\nexchange\nexchangeabilities\nexchangeability\nexchangeable\nexchanged\nexchanger\nexchangers\nexchanges\nexchanging\nexchequer\nexchequers\nexcide\nexcided\nexcides\nexciding\nexciple\nexciples\nexcisable\nexcise\nexcised\nexcises\nexcising\nexcision\nexcisions\nexcitabilities\nexcitability\nexcitable\nexcitableness\nexcitant\nexcitants\nexcitation\nexcitations\nexcite\nexcited\nexcitedly\nexcitement\nexcitements\nexciter\nexciters\nexcites\nexciting\nexcitingly\nexciton\nexcitons\nexcitor\nexcitors\nexclaim\nexclaimed\nexclaimer\nexclaimers\nexclaiming\nexclaims\nexclamation\nexclamations\nexclamatory\nexclave\nexclaves\nexcludabilities\nexcludability\nexcludable\nexclude\nexcluded\nexcluder\nexcluders\nexcludes\nexcludible\nexcluding\nexclusion\nexclusionary\nexclusionist\nexclusionists\nexclusions\nexclusive\nexclusively\nexclusiveness\nexclusivity\nexcommunicate\nexcommunicated\nexcommunicates\nexcommunicating\nexcommunication\nexcommunications\nexcommunicative\nexcommunicator\nexcommunicators\nexcoriate\nexcoriated\nexcoriates\nexcoriating\nexcoriation\nexcoriations\nexcrement\nexcremental\nexcrementitious\nexcrements\nexcrescence\nexcrescences\nexcrescencies\nexcrescency\nexcrescent\nexcrescently\nexcreta\nexcretal\nexcrete\nexcreted\nexcreter\nexcreters\nexcretes\nexcreting\nexcretion\nexcretions\nexcretory\nexcruciate\nexcruciated\nexcruciates\nexcruciating\nexcruciatingly\nexcruciation\nexcruciations\nexculpate\nexculpated\nexculpates\nexculpating\nexculpation\nexculpations\nexculpatory\nexcursion\nexcursionist\nexcursionists\nexcursions\nexcursive\nexcursively\nexcursiveness\nexcusable\nexcusableness\nexcusably\nexcuse\nexcused\nexcuser\nexcusers\nexcuses\nexcusing\nexec\nexecrable\nexecrableness\nexecrably\nexecrate\nexecrated\nexecrates\nexecrating\nexecration\nexecrations\nexecrative\nexecrator\nexecrators\nexecs\nexecutable\nexecute\nexecuted\nexecuter\nexecuters\nexecutes\nexecuting\nexecution\nexecutioner\nexecutioners\nexecutions\nexecutive\nexecutives\nexecutor\nexecutorial\nexecutors\nexecutrices\nexecutrix\nexecutrixes\nexedra\nexedrae\nexegeses\nexegesis\nexegete\nexegetes\nexegetic\nexegetical\nexegetically\nexempla\nexemplar\nexemplarily\nexemplariness\nexemplarities\nexemplarity\nexemplars\nexemplary\nexemplification\nexemplifications\nexemplified\nexemplifies\nexemplify\nexemplifying\nexemplum\nexempt\nexempted\nexempting\nexemption\nexemptions\nexempts\nexequial\nexequies\nexequy\nexercisable\nexercise\nexercised\nexerciser\nexercisers\nexercises\nexercising\nexergual\nexergue\nexergues\nexert\nexerted\nexerting\nexertion\nexertions\nexertive\nexerts\nexes\nexhalant\nexhalants\nexhalation\nexhalations\nexhale\nexhaled\nexhalent\nexhalents\nexhales\nexhaling\nexhaust\nexhausted\nexhauster\nexhausters\nexhaustibilities\nexhaustibility\nexhaustible\nexhausting\nexhaustion\nexhaustions\nexhaustive\nexhaustively\nexhaustiveness\nexhaustless\nexhaustlessly\nexhaustlessness\nexhausts\nexhibit\nexhibited\nexhibiting\nexhibition\nexhibitioner\nexhibitioners\nexhibitionism\nexhibitionist\nexhibitionistic\nexhibitionists\nexhibitions\nexhibitor\nexhibitors\nexhibitory\nexhibits\nexhilarate\nexhilarated\nexhilarates\nexhilarating\nexhilaratingly\nexhilaration\nexhilarations\nexhilarative\nexhort\nexhortation\nexhortations\nexhortative\nexhortatory\nexhorted\nexhorter\nexhorters\nexhorting\nexhorts\nexhumation\nexhumations\nexhume\nexhumed\nexhumer\nexhumers\nexhumes\nexhuming\nexigence\nexigences\nexigencies\nexigency\nexigent\nexigently\nexigible\nexiguities\nexiguity\nexiguous\nexiguously\nexiguousness\nexile\nexiled\nexiles\nexilian\nexilic\nexiling\neximious\nexine\nexines\nexist\nexisted\nexistence\nexistences\nexistent\nexistential\nexistentialism\nexistentialisms\nexistentialist\nexistentialistic\nexistentialistically\nexistentialists\nexistentially\nexistents\nexisting\nexists\nexit\nexited\nexiting\nexits\nexocarp\nexocarps\nexocrine\nexocrines\nexoderm\nexoderms\nexodoi\nexodos\nexodus\nexoduses\nexoergic\nexogamic\nexogamies\nexogamous\nexogamy\nexogen\nexogens\nexon\nexonerate\nexonerated\nexonerates\nexonerating\nexoneration\nexonerations\nexonerative\nexons\nexorable\nexorbitance\nexorbitances\nexorbitant\nexorbitantly\nexorcise\nexorcised\nexorciser\nexorcisers\nexorcises\nexorcising\nexorcism\nexorcisms\nexorcist\nexorcists\nexorcize\nexorcized\nexorcizes\nexorcizing\nexordia\nexordial\nexordium\nexordiums\nexosmic\nexosmose\nexosmoses\nexospore\nexospores\nexoteric\nexoterically\nexothermal\nexothermally\nexothermic\nexothermically\nexotic\nexotica\nexotically\nexoticism\nexoticisms\nexoticness\nexotics\nexotism\nexotisms\nexotoxic\nexotoxin\nexotoxins\nexpand\nexpandable\nexpanded\nexpander\nexpanders\nexpanding\nexpands\nexpanse\nexpanses\nexpansible\nexpansion\nexpansionary\nexpansionism\nexpansionist\nexpansionistic\nexpansionists\nexpansions\nexpansive\nexpansively\nexpansiveness\nexpatiate\nexpatiated\nexpatiates\nexpatiating\nexpatiation\nexpatiations\nexpatriate\nexpatriated\nexpatriates\nexpatriating\nexpatriation\nexpatriations\nexpect\nexpectable\nexpectably\nexpectance\nexpectances\nexpectancies\nexpectancy\nexpectant\nexpectantly\nexpectants\nexpectation\nexpectations\nexpected\nexpecting\nexpectorant\nexpectorants\nexpectorate\nexpectorated\nexpectorates\nexpectorating\nexpectoration\nexpectorations\nexpects\nexpedience\nexpediences\nexpediencies\nexpediency\nexpedient\nexpediential\nexpediently\nexpedients\nexpedite\nexpedited\nexpediter\nexpediters\nexpedites\nexpediting\nexpedition\nexpeditionary\nexpeditions\nexpeditious\nexpeditiously\nexpeditiousness\nexpeditor\nexpeditors\nexpel\nexpellable\nexpelled\nexpellee\nexpellees\nexpeller\nexpellers\nexpelling\nexpels\nexpend\nexpendability\nexpendable\nexpendables\nexpendably\nexpended\nexpender\nexpenders\nexpending\nexpenditure\nexpenditures\nexpends\nexpense\nexpensed\nexpenses\nexpensing\nexpensive\nexpensively\nexpensiveness\nexperience\nexperienced\nexperiences\nexperiencing\nexperiential\nexperientially\nexperiment\nexperimental\nexperimentalism\nexperimentalisms\nexperimentalist\nexperimentalists\nexperimentally\nexperimentation\nexperimentations\nexperimented\nexperimenter\nexperimenters\nexperimenting\nexperiments\nexpert\nexperted\nexperting\nexpertise\nexpertly\nexpertness\nexperts\nexpiable\nexpiate\nexpiated\nexpiates\nexpiating\nexpiation\nexpiations\nexpiator\nexpiators\nexpiatory\nexpiration\nexpirations\nexpiratory\nexpire\nexpired\nexpirer\nexpirers\nexpires\nexpiries\nexpiring\nexpiry\nexplain\nexplainable\nexplained\nexplainer\nexplainers\nexplaining\nexplains\nexplanation\nexplanations\nexplanative\nexplanatively\nexplanatorily\nexplanatory\nexplant\nexplanted\nexplanting\nexplants\nexpletive\nexpletives\nexpletory\nexplicable\nexplicate\nexplicated\nexplicates\nexplicating\nexplication\nexplications\nexplicative\nexplicatively\nexplicator\nexplicators\nexplicatory\nexplicit\nexplicitly\nexplicitness\nexplicits\nexplode\nexploded\nexploder\nexploders\nexplodes\nexploding\nexploit\nexploitable\nexploitation\nexploitations\nexploitative\nexploited\nexploiter\nexploiters\nexploiting\nexploits\nexploration\nexplorations\nexplorative\nexploratory\nexplore\nexplored\nexplorer\nexplorers\nexplores\nexploring\nexplosion\nexplosions\nexplosive\nexplosively\nexplosiveness\nexplosives\nexpo\nexponent\nexponential\nexponentially\nexponentiation\nexponentiations\nexponents\nexport\nexportable\nexportation\nexportations\nexported\nexporter\nexporters\nexporting\nexports\nexpos\nexposable\nexposal\nexposals\nexpose\nexposed\nexposer\nexposers\nexposes\nexposing\nexposit\nexposited\nexpositing\nexposition\nexpositional\nexpositions\nexpositor\nexpositors\nexpository\nexposits\nexpostulate\nexpostulated\nexpostulates\nexpostulating\nexpostulation\nexpostulations\nexpostulatory\nexposure\nexposures\nexpound\nexpounded\nexpounder\nexpounders\nexpounding\nexpounds\nexpress\nexpressage\nexpressages\nexpressed\nexpresser\nexpressers\nexpresses\nexpressible\nexpressing\nexpression\nexpressional\nexpressionism\nexpressionist\nexpressionistic\nexpressionistically\nexpressionists\nexpressionless\nexpressionlessly\nexpressions\nexpressive\nexpressively\nexpressiveness\nexpressly\nexpressman\nexpressmen\nexpressway\nexpressways\nexpropriate\nexpropriated\nexpropriates\nexpropriating\nexpropriation\nexpropriations\nexpropriator\nexpropriators\nexpulse\nexpulsed\nexpulses\nexpulsing\nexpulsion\nexpulsions\nexpulsive\nexpunction\nexpunctions\nexpunge\nexpunged\nexpunger\nexpungers\nexpunges\nexpunging\nexpurgate\nexpurgated\nexpurgates\nexpurgating\nexpurgation\nexpurgations\nexpurgator\nexpurgatorial\nexpurgators\nexpurgatory\nexquisite\nexquisitely\nexquisiteness\nexquisites\nexscind\nexscinded\nexscinding\nexscinds\nexsecant\nexsecants\nexsect\nexsected\nexsecting\nexsects\nexsert\nexserted\nexserting\nexserts\nextant\nextemporaneity\nextemporaneous\nextemporaneously\nextemporaneousness\nextemporarily\nextemporary\nextempore\nextemporization\nextemporizations\nextemporize\nextemporized\nextemporizer\nextemporizers\nextemporizes\nextemporizing\nextend\nextendable\nextended\nextendedly\nextendedness\nextender\nextenders\nextendible\nextending\nextends\nextensibility\nextensible\nextension\nextensional\nextensionalities\nextensionality\nextensionally\nextensions\nextensities\nextensity\nextensive\nextensively\nextensiveness\nextensor\nextensors\nextent\nextents\nextenuate\nextenuated\nextenuates\nextenuating\nextenuation\nextenuations\nextenuator\nextenuators\nextenuatory\nexterior\nexteriorization\nexteriorizations\nexteriorize\nexteriorized\nexteriorizes\nexteriorizing\nexteriorly\nexteriors\nexterminate\nexterminated\nexterminates\nexterminating\nextermination\nexterminations\nexterminator\nexterminators\nexterminatory\nextern\nexternal\nexternalism\nexternalisms\nexternalities\nexternality\nexternalize\nexternalized\nexternalizes\nexternalizing\nexternally\nexternals\nexterne\nexternes\nexterns\nextinct\nextincted\nextincting\nextinction\nextinctions\nextinctive\nextincts\nextinguish\nextinguishable\nextinguished\nextinguisher\nextinguishers\nextinguishes\nextinguishing\nextinguishment\nextinguishments\nextirpate\nextirpated\nextirpates\nextirpating\nextirpation\nextirpations\nextirpator\nextirpators\nextol\nextoll\nextolled\nextoller\nextollers\nextolling\nextolls\nextols\nextort\nextorted\nextorter\nextorters\nextorting\nextortion\nextortionate\nextortionately\nextortioner\nextortioners\nextortionist\nextortionists\nextortions\nextortive\nextorts\nextra\nextract\nextractability\nextractable\nextracted\nextracting\nextraction\nextractions\nextractive\nextractives\nextractor\nextractors\nextracts\nextracurricular\nextraditable\nextradite\nextradited\nextradites\nextraditing\nextradition\nextraditions\nextrados\nextradoses\nextralegal\nextramarital\nextramural\nextramurally\nextraneous\nextraneously\nextraneousness\nextraordinarily\nextraordinariness\nextraordinary\nextrapolate\nextrapolated\nextrapolates\nextrapolating\nextrapolation\nextrapolations\nextrapolative\nextrapolator\nextrapolators\nextras\nextrasensory\nextraterritorial\nextraterritoriality\nextraterritorially\nextravagance\nextravagances\nextravagancies\nextravagancy\nextravagant\nextravagantly\nextravaganza\nextravaganzas\nextraversion\nextraversions\nextravert\nextraverted\nextraverts\nextrema\nextreme\nextremely\nextremeness\nextremer\nextremes\nextremest\nextremism\nextremisms\nextremist\nextremists\nextremities\nextremity\nextremum\nextremuma\nextricable\nextricate\nextricated\nextricates\nextricating\nextrication\nextrications\nextrinsic\nextrinsically\nextrorse\nextroversion\nextroversions\nextroversive\nextrovert\nextroverted\nextroverts\nextrude\nextruded\nextruder\nextruders\nextrudes\nextruding\nextrusion\nextrusions\nexuberance\nexuberances\nexuberant\nexuberantly\nexuberate\nexuberated\nexuberates\nexuberating\nexudate\nexudates\nexudation\nexudations\nexudative\nexude\nexuded\nexudes\nexuding\nexult\nexultance\nexultancy\nexultant\nexultantly\nexultation\nexultations\nexulted\nexulting\nexultingly\nexults\nexurb\nexurban\nexurbanite\nexurbanites\nexurbia\nexurbias\nexurbs\nexuvia\nexuviae\nexuvial\nexuviate\nexuviated\nexuviates\nexuviating\nexuvium\neyas\neyases\neye\neyeable\neyeball\neyeballed\neyeballing\neyeballs\neyebeam\neyebeams\neyebolt\neyebolts\neyebrow\neyebrows\neyecup\neyecups\neyed\neyedness\neyednesses\neyeful\neyefuls\neyeglass\neyeglasses\neyehole\neyeholes\neyehook\neyehooks\neyeing\neyelash\neyelashes\neyeless\neyelet\neyelets\neyeletted\neyeletting\neyelid\neyelids\neyelike\neyeliner\neyeliners\neyen\neyepiece\neyepieces\neyepoint\neyepoints\neyer\neyers\neyes\neyeshade\neyeshades\neyeshot\neyeshots\neyesight\neyesights\neyesome\neyesore\neyesores\neyespot\neyespots\neyestalk\neyestalks\neyestone\neyestones\neyestrain\neyestrains\neyetooteeth\neyetooth\neyewash\neyewashes\neyewater\neyewaters\neyewink\neyewinks\neyewitness\neyewitnesses\neying\neyne\neyra\neyras\neyre\neyres\neyrie\neyries\neyrir\neyry\nfa\nfable\nfabled\nfabler\nfablers\nfables\nfabliau\nfabliaux\nfabling\nfabric\nfabricate\nfabricated\nfabricates\nfabricating\nfabrication\nfabrications\nfabricator\nfabricators\nfabrics\nfabular\nfabulist\nfabulists\nfabulous\nfabulously\nfabulousness\nfacade\nfacades\nface\nfaceable\nfaced\nfacedown\nfaceless\nfacelessness\nfaceplate\nfaceplates\nfacer\nfacers\nfaces\nfacet\nfacete\nfaceted\nfacetely\nfacetiae\nfaceting\nfacetious\nfacetiously\nfacetiousness\nfacets\nfacetted\nfacetting\nfaceup\nfacia\nfacial\nfacially\nfacials\nfacias\nfaciend\nfaciends\nfacies\nfacile\nfacilely\nfacileness\nfacilitate\nfacilitated\nfacilitates\nfacilitating\nfacilitation\nfacilitations\nfacilitative\nfacilitator\nfacilitators\nfacilities\nfacility\nfacing\nfacings\nfacsimile\nfacsimiles\nfact\nfactful\nfaction\nfactional\nfactionalism\nfactionalist\nfactionalists\nfactions\nfactious\nfactiously\nfactiousness\nfactitious\nfactitiously\nfactitiousness\nfactitive\nfactitively\nfactor\nfactorable\nfactored\nfactorial\nfactorials\nfactories\nfactoring\nfactorization\nfactorizations\nfactorize\nfactorized\nfactorizes\nfactorizing\nfactors\nfactory\nfactotum\nfactotums\nfacts\nfactual\nfactualism\nfactualist\nfactualists\nfactuality\nfactually\nfactualness\nfacture\nfactures\nfacula\nfaculae\nfacular\nfacultative\nfacultatively\nfaculties\nfaculty\nfad\nfadable\nfaddier\nfaddiest\nfaddish\nfaddishness\nfaddism\nfaddisms\nfaddist\nfaddists\nfaddy\nfade\nfadeaway\nfadeaways\nfaded\nfadedly\nfadeless\nfader\nfaders\nfades\nfadge\nfadged\nfadges\nfadging\nfading\nfadings\nfado\nfados\nfads\nfaecal\nfaeces\nfaena\nfaenas\nfaerie\nfaeries\nfaery\nfag\nfagged\nfagging\nfaggot\nfaggoted\nfaggoting\nfaggots\nfaggy\nfagin\nfagins\nfagot\nfagoted\nfagoter\nfagoters\nfagoting\nfagotings\nfagots\nfags\nfahlband\nfahlbands\nfaience\nfaiences\nfail\nfailed\nfailing\nfailings\nfaille\nfailles\nfails\nfailure\nfailures\nfain\nfaineant\nfaineants\nfainer\nfainest\nfaint\nfainted\nfainter\nfainters\nfaintest\nfainthearted\nfaintheartedly\nfaintheartedness\nfainting\nfaintish\nfaintly\nfaintness\nfaints\nfair\nfaired\nfairer\nfairest\nfairground\nfairgrounds\nfairies\nfairing\nfairings\nfairish\nfairlead\nfairleads\nfairly\nfairness\nfairnesses\nfairs\nfairway\nfairways\nfairy\nfairyism\nfairyisms\nfairyland\nfairylands\nfairylike\nfaith\nfaithed\nfaithful\nfaithfully\nfaithfulness\nfaithfuls\nfaithing\nfaithless\nfaithlessly\nfaithlessness\nfaiths\nfaitour\nfaitours\nfake\nfaked\nfakeer\nfakeers\nfaker\nfakeries\nfakers\nfakery\nfakes\nfakey\nfaking\nfakir\nfakirs\nfalbala\nfalbalas\nfalcate\nfalcated\nfalchion\nfalchions\nfalcon\nfalconer\nfalconers\nfalconet\nfalconets\nfalconries\nfalconry\nfalcons\nfalderal\nfalderals\nfalderol\nfalderols\nfall\nfallacies\nfallacious\nfallaciously\nfallaciousness\nfallacy\nfallal\nfallals\nfallback\nfallbacks\nfallen\nfaller\nfallers\nfallfish\nfallfishes\nfallibility\nfallible\nfallibly\nfalling\nfalloff\nfalloffs\nfallout\nfallouts\nfallow\nfallowed\nfallowing\nfallowness\nfallows\nfalls\nfalse\nfalsehood\nfalsehoods\nfalsely\nfalseness\nfalser\nfalsest\nfalsetto\nfalsettos\nfalsie\nfalsies\nfalsification\nfalsifications\nfalsified\nfalsifier\nfalsifiers\nfalsifies\nfalsify\nfalsifying\nfalsities\nfalsity\nfaltboat\nfaltboats\nfalter\nfaltered\nfalterer\nfalterers\nfaltering\nfalteringly\nfalters\nfalx\nfame\nfamed\nfameless\nfames\nfamilial\nfamiliar\nfamiliarities\nfamiliarity\nfamiliarization\nfamiliarizations\nfamiliarize\nfamiliarized\nfamiliarizes\nfamiliarizing\nfamiliarly\nfamiliars\nfamilies\nfamily\nfamine\nfamines\nfaming\nfamish\nfamished\nfamishes\nfamishing\nfamishment\nfamous\nfamously\nfamousness\nfamuli\nfamulus\nfan\nfanatic\nfanatical\nfanatically\nfanaticism\nfanaticize\nfanaticized\nfanaticizes\nfanaticizing\nfanatics\nfancied\nfancier\nfanciers\nfancies\nfanciest\nfanciful\nfancifully\nfancifulness\nfancily\nfancy\nfancying\nfancywork\nfancyworks\nfandango\nfandangos\nfandom\nfandoms\nfane\nfanega\nfanegada\nfanegadas\nfanegas\nfanes\nfanfare\nfanfares\nfanfaron\nfanfarons\nfanfold\nfanfolds\nfang\nfanga\nfangas\nfanged\nfangless\nfanglike\nfangs\nfanion\nfanions\nfanjet\nfanjets\nfanlight\nfanlights\nfanlike\nfanned\nfanner\nfanners\nfannies\nfanning\nfanny\nfano\nfanon\nfanons\nfanos\nfans\nfantail\nfantails\nfantaseid\nfantasia\nfantasias\nfantasie\nfantasied\nfantasies\nfantasize\nfantasized\nfantasizes\nfantasizing\nfantasm\nfantasms\nfantast\nfantastic\nfantastically\nfantasts\nfantasy\nfantasying\nfantod\nfantods\nfantom\nfantoms\nfanum\nfanums\nfanwise\nfanwort\nfanworts\nfaqir\nfaqirs\nfaquir\nfaquirs\nfar\nfarad\nfaradaic\nfaraday\nfaradays\nfaradic\nfaradise\nfaradised\nfaradises\nfaradising\nfaradism\nfaradisms\nfaradize\nfaradized\nfaradizes\nfaradizing\nfarads\nfaraway\nfarce\nfarced\nfarcer\nfarcers\nfarces\nfarceur\nfarceurs\nfarci\nfarcical\nfarcically\nfarcie\nfarcies\nfarcing\nfarcy\nfard\nfarded\nfardel\nfardels\nfarding\nfards\nfare\nfared\nfarer\nfarers\nfares\nfarewell\nfarewelled\nfarewelling\nfarewells\nfarfal\nfarfals\nfarfel\nfarfels\nfarfetched\nfarfetchedness\nfarina\nfarinaceous\nfarinas\nfaring\nfarinha\nfarinhas\nfarinose\nfarl\nfarle\nfarles\nfarls\nfarm\nfarmable\nfarmed\nfarmer\nfarmers\nfarmhand\nfarmhands\nfarmhouse\nfarmhouses\nfarming\nfarmings\nfarmland\nfarmlands\nfarms\nfarmstead\nfarmsteads\nfarmyard\nfarmyards\nfarnesol\nfarnesols\nfarness\nfarnesses\nfaro\nfaros\nfarouche\nfarrago\nfarragoes\nfarrier\nfarrieries\nfarriers\nfarriery\nfarrow\nfarrowed\nfarrowing\nfarrows\nfarseeing\nfarsighted\nfarsightedly\nfarsightedness\nfart\nfarted\nfarther\nfarthermost\nfarthest\nfarthing\nfarthings\nfarting\nfarts\nfas\nfasces\nfascia\nfasciae\nfascial\nfascias\nfasciate\nfascicle\nfascicled\nfascicles\nfascicular\nfascinate\nfascinated\nfascinates\nfascinating\nfascinatingly\nfascination\nfascinations\nfascine\nfascines\nfascism\nfascisms\nfascist\nfascistic\nfascistically\nfascists\nfash\nfashed\nfashes\nfashing\nfashion\nfashionable\nfashionableness\nfashionably\nfashioned\nfashioner\nfashioners\nfashioning\nfashions\nfashious\nfast\nfastback\nfastbacks\nfastball\nfastballs\nfasted\nfasten\nfastened\nfastener\nfasteners\nfastening\nfastenings\nfastens\nfaster\nfastest\nfastidious\nfastidiously\nfastidiousness\nfastigiate\nfasting\nfastings\nfastness\nfastnesses\nfasts\nfastuous\nfat\nfatal\nfatalism\nfatalisms\nfatalist\nfatalistic\nfatalistically\nfatalists\nfatalities\nfatality\nfatally\nfatback\nfatbacks\nfatbird\nfatbirds\nfate\nfated\nfateful\nfatefully\nfatefulness\nfates\nfathead\nfatheads\nfather\nfathered\nfatherhood\nfathering\nfatherland\nfatherlands\nfatherless\nfatherly\nfathers\nfathom\nfathomable\nfathomed\nfathoming\nfathomless\nfathoms\nfatidic\nfatigability\nfatigable\nfatigue\nfatigued\nfatigues\nfatiguing\nfating\nfatless\nfatlike\nfatling\nfatlings\nfatly\nfatness\nfatnesses\nfats\nfatso\nfatsoes\nfatsos\nfatstock\nfatstocks\nfatted\nfatten\nfattened\nfattener\nfatteners\nfattening\nfattens\nfatter\nfattest\nfattier\nfatties\nfattiest\nfattily\nfattiness\nfatting\nfattish\nfatty\nfatuities\nfatuity\nfatuous\nfatuously\nfatuousness\nfaubourg\nfaubourgs\nfaucal\nfaucals\nfauces\nfaucet\nfaucets\nfaucial\nfaugh\nfauld\nfaulds\nfault\nfaulted\nfaultfinder\nfaultfinders\nfaultfinding\nfaultfindings\nfaultier\nfaultiest\nfaultily\nfaultiness\nfaulting\nfaultless\nfaultlessly\nfaultlessness\nfaults\nfaulty\nfaun\nfauna\nfaunae\nfaunal\nfaunally\nfaunas\nfaunlike\nfauns\nfauteuil\nfauteuils\nfauve\nfauves\nfauvism\nfauvisms\nfauvist\nfauvists\nfaux\nfavela\nfavelas\nfavonian\nfavor\nfavorable\nfavorableness\nfavorably\nfavored\nfavorer\nfavorers\nfavoring\nfavorite\nfavorites\nfavoritism\nfavoritisms\nfavors\nfavour\nfavoured\nfavourer\nfavourers\nfavouring\nfavours\nfavus\nfavuses\nfawn\nfawned\nfawner\nfawners\nfawnier\nfawniest\nfawning\nfawningly\nfawnlike\nfawns\nfawny\nfax\nfaxed\nfaxes\nfaxing\nfay\nfayalite\nfayalites\nfayed\nfaying\nfays\nfaze\nfazed\nfazenda\nfazendas\nfazes\nfazing\nfeal\nfealties\nfealty\nfear\nfeared\nfearer\nfearers\nfearful\nfearfuller\nfearfullest\nfearfully\nfearfulness\nfearing\nfearless\nfearlessly\nfearlessness\nfears\nfearsome\nfearsomely\nfearsomeness\nfeasance\nfeasances\nfease\nfeased\nfeases\nfeasibility\nfeasible\nfeasibleness\nfeasibly\nfeasing\nfeast\nfeasted\nfeaster\nfeasters\nfeastful\nfeasting\nfeasts\nfeat\nfeater\nfeatest\nfeather\nfeatherbed\nfeatherbedded\nfeatherbedding\nfeatherbeddings\nfeatherbeds\nfeatherbrain\nfeatherbrained\nfeatherbrains\nfeathered\nfeatheredge\nfeatheredged\nfeatheredges\nfeatheredging\nfeatherier\nfeatheriest\nfeathering\nfeatherless\nfeathers\nfeatherweight\nfeatherweights\nfeathery\nfeatlier\nfeatliest\nfeatly\nfeats\nfeature\nfeatured\nfeatureless\nfeatures\nfeaturing\nfeaze\nfeazed\nfeazes\nfeazing\nfebrific\nfebrifuge\nfebrifuges\nfebrile\nfecal\nfeces\nfecial\nfecials\nfeck\nfeckless\nfecklessly\nfecklessness\nfeckly\nfecks\nfecula\nfeculae\nfeculent\nfecund\nfecundate\nfecundated\nfecundates\nfecundating\nfecundation\nfecundations\nfecundity\nfed\nfedayee\nfedayeen\nfederacies\nfederacy\nfederal\nfederalism\nfederalist\nfederalists\nfederalization\nfederalize\nfederalized\nfederalizes\nfederalizing\nfederally\nfederals\nfederate\nfederated\nfederates\nfederating\nfederation\nfederations\nfederative\nfederatively\nfedora\nfedoras\nfeds\nfee\nfeeble\nfeebleminded\nfeeblemindedly\nfeeblemindedness\nfeebleness\nfeebler\nfeeblest\nfeeblish\nfeebly\nfeed\nfeedable\nfeedback\nfeedbacks\nfeedbag\nfeedbags\nfeedbox\nfeedboxes\nfeeder\nfeeders\nfeeding\nfeedlot\nfeedlots\nfeeds\nfeedstock\nfeedstocks\nfeeing\nfeel\nfeeler\nfeelers\nfeeless\nfeeling\nfeelingly\nfeelings\nfeels\nfees\nfeet\nfeetless\nfeeze\nfeezed\nfeezes\nfeezing\nfeh\nfehs\nfeign\nfeigned\nfeigner\nfeigners\nfeigning\nfeigns\nfeint\nfeinted\nfeinting\nfeints\nfeirie\nfeist\nfeistier\nfeistiest\nfeists\nfeisty\nfeldspar\nfeldspars\nfelicitate\nfelicitated\nfelicitates\nfelicitating\nfelicitation\nfelicitations\nfelicitator\nfelicitators\nfelicities\nfelicitous\nfelicitously\nfelicitousness\nfelicity\nfelid\nfelids\nfeline\nfelinely\nfelines\nfelinities\nfelinity\nfell\nfella\nfellable\nfellah\nfellaheen\nfellahin\nfellahs\nfellas\nfellatio\nfellatios\nfelled\nfeller\nfellers\nfellest\nfellies\nfelling\nfellness\nfellnesses\nfelloe\nfelloes\nfellow\nfellowed\nfellowing\nfellowly\nfellowman\nfellowmen\nfellows\nfellowship\nfellowships\nfells\nfelly\nfelon\nfelonies\nfelonious\nfeloniously\nfeloniousness\nfelonries\nfelonry\nfelons\nfelony\nfelsite\nfelsites\nfelsitic\nfelspar\nfelspars\nfelstone\nfelstones\nfelt\nfelted\nfelting\nfeltings\nfelts\nfelucca\nfeluccas\nfelwort\nfelworts\nfem\nfemale\nfemaleness\nfemales\nfeme\nfemes\nfeminacies\nfeminacy\nfeminie\nfeminine\nfemininely\nfeminineness\nfeminines\nfemininities\nfemininity\nfeminise\nfeminised\nfeminises\nfeminising\nfeminism\nfeminisms\nfeminist\nfeministic\nfeminists\nfeminities\nfeminity\nfeminization\nfeminizations\nfeminize\nfeminized\nfeminizes\nfeminizing\nfemme\nfemmes\nfemora\nfemoral\nfems\nfemur\nfemurs\nfen\nfenagle\nfenagled\nfenagles\nfenagling\nfence\nfenced\nfenceless\nfencelessness\nfencer\nfencers\nfences\nfencible\nfencibles\nfencing\nfencings\nfend\nfended\nfender\nfendered\nfenders\nfending\nfends\nfenestra\nfenestrae\nfenestrate\nfenestrated\nfenestration\nfenestrations\nfennec\nfennecs\nfennel\nfennels\nfenny\nfens\nfeod\nfeodaries\nfeodary\nfeods\nfeoff\nfeoffed\nfeoffee\nfeoffees\nfeoffer\nfeoffers\nfeoffing\nfeoffor\nfeoffors\nfeoffs\nfer\nferacities\nferacity\nferal\nferbam\nferbams\nfere\nferes\nferetories\nferetory\nferia\nferiae\nferial\nferias\nferine\nferities\nferity\nferlie\nferlies\nferly\nfermata\nfermatas\nfermate\nferment\nfermentable\nfermentation\nfermentations\nfermentative\nfermented\nfermenting\nferments\nfermi\nfermion\nfermions\nfermis\nfermium\nfermiums\nfern\nferneries\nfernery\nfernier\nferniest\nfernless\nfernlike\nferns\nferny\nferocious\nferociously\nferociousness\nferocities\nferocity\nferrate\nferrates\nferrel\nferreled\nferreling\nferrelled\nferrelling\nferrels\nferreous\nferret\nferreted\nferreter\nferreters\nferreting\nferrets\nferrety\nferriage\nferriages\nferric\nferried\nferries\nferrite\nferrites\nferritic\nferritin\nferritins\nferrous\nferrule\nferruled\nferrules\nferruling\nferrum\nferrums\nferry\nferryboat\nferryboats\nferrying\nferryman\nferrymen\nfertile\nfertilely\nfertileness\nfertilities\nfertility\nfertilizable\nfertilization\nfertilizations\nfertilize\nfertilized\nfertilizer\nfertilizers\nfertilizes\nfertilizing\nferula\nferulae\nferulas\nferule\nferuled\nferules\nferuling\nfervencies\nfervency\nfervent\nfervently\nfervid\nfervidly\nfervidness\nfervor\nfervors\nfervour\nfervours\nfescue\nfescues\nfess\nfesse\nfessed\nfesses\nfessing\nfesswise\nfestal\nfestally\nfester\nfestered\nfestering\nfesters\nfestival\nfestivals\nfestive\nfestively\nfestiveness\nfestivities\nfestivity\nfestoon\nfestooned\nfestooning\nfestoons\nfet\nfeta\nfetal\nfetas\nfetation\nfetations\nfetch\nfetched\nfetcher\nfetchers\nfetches\nfetching\nfetchingly\nfete\nfeted\nfeterita\nfeteritas\nfetes\nfetial\nfetiales\nfetialis\nfetials\nfetich\nfetiches\nfeticide\nfeticides\nfetid\nfetidly\nfetidness\nfeting\nfetish\nfetishes\nfetishism\nfetishisms\nfetishist\nfetishistic\nfetishists\nfetlock\nfetlocks\nfetologies\nfetology\nfetor\nfetors\nfets\nfetted\nfetter\nfettered\nfetterer\nfetterers\nfettering\nfetters\nfetting\nfettle\nfettled\nfettles\nfettling\nfettlings\nfetus\nfetuses\nfeu\nfeuar\nfeuars\nfeud\nfeudal\nfeudalism\nfeudalistic\nfeudalize\nfeudalized\nfeudalizes\nfeudalizing\nfeudally\nfeudaries\nfeudary\nfeuded\nfeuding\nfeudist\nfeudists\nfeuds\nfeued\nfeuing\nfeus\nfever\nfevered\nfeverfew\nfeverfews\nfevering\nfeverish\nfeverishly\nfeverishness\nfeverous\nfevers\nfew\nfewer\nfewest\nfewness\nfewnesses\nfewtrils\nfey\nfeyer\nfeyest\nfeyly\nfeyness\nfeynesses\nfez\nfezes\nfezzed\nfezzes\nfiacre\nfiacres\nfiance\nfiancee\nfiancees\nfiances\nfiar\nfiars\nfiaschi\nfiasco\nfiascoes\nfiascos\nfiat\nfiats\nfib\nfibbed\nfibber\nfibbers\nfibbing\nfiber\nfiberboard\nfiberboards\nfibered\nfiberfill\nfiberglass\nfiberize\nfiberized\nfiberizes\nfiberizing\nfibers\nfibre\nfibres\nfibril\nfibrilla\nfibrillae\nfibrillate\nfibrillated\nfibrillates\nfibrillating\nfibrillation\nfibrillations\nfibrillose\nfibrils\nfibrin\nfibrinogen\nfibrinogens\nfibrinous\nfibrins\nfibroblast\nfibroblastic\nfibroblasts\nfibroid\nfibroids\nfibroin\nfibroins\nfibroma\nfibromas\nfibromata\nfibroses\nfibrosis\nfibrotic\nfibrous\nfibs\nfibula\nfibulae\nfibular\nfibulas\nfice\nfices\nfiche\nfiches\nfichu\nfichus\nficin\nficins\nfickle\nfickleness\nfickler\nficklest\nfico\nficoes\nfictile\nfiction\nfictional\nfictionalization\nfictionalizations\nfictionalize\nfictionalized\nfictionalizes\nfictionalizing\nfictionally\nfictionist\nfictionists\nfictions\nfictitious\nfictitiously\nfictitiousness\nfictive\nfictively\nfictiveness\nficus\nfid\nfiddle\nfiddled\nfiddler\nfiddlers\nfiddles\nfiddlesticks\nfiddling\nfideism\nfideisms\nfideist\nfideists\nfidelities\nfidelity\nfidge\nfidged\nfidges\nfidget\nfidgeted\nfidgeter\nfidgeters\nfidgetiness\nfidgeting\nfidgets\nfidgety\nfidging\nfido\nfidos\nfids\nfiducial\nfiduciaries\nfiduciary\nfie\nfief\nfiefdom\nfiefdoms\nfiefs\nfield\nfielded\nfielder\nfielders\nfielding\nfieldpiece\nfieldpieces\nfields\nfieldstone\nfieldstones\nfieldwork\nfiend\nfiendish\nfiendishly\nfiendishness\nfiends\nfierce\nfiercely\nfierceness\nfiercer\nfiercest\nfierier\nfieriest\nfierily\nfieriness\nfiery\nfiesta\nfiestas\nfife\nfifed\nfifer\nfifers\nfifes\nfifing\nfifteen\nfifteens\nfifteenth\nfifteenths\nfifth\nfifthly\nfifths\nfifties\nfiftieth\nfiftieths\nfifty\nfig\nfigeater\nfigeaters\nfigged\nfigging\nfight\nfighter\nfighters\nfighting\nfightings\nfights\nfigment\nfigments\nfigs\nfiguline\nfigulines\nfigural\nfigurant\nfigurants\nfigurate\nfiguration\nfigurations\nfigurative\nfiguratively\nfigurativeness\nfigure\nfigured\nfigurehead\nfigureheads\nfigurer\nfigurers\nfigures\nfigurine\nfigurines\nfiguring\nfigwort\nfigworts\nfil\nfila\nfilagree\nfilagreed\nfilagreeing\nfilagrees\nfilament\nfilamentary\nfilamentous\nfilaments\nfilar\nfilaree\nfilarees\nfilaria\nfilariae\nfilarial\nfilarian\nfilariid\nfilariids\nfilature\nfilatures\nfilbert\nfilberts\nfilch\nfilched\nfilcher\nfilchers\nfilches\nfilching\nfile\nfiled\nfilefish\nfilefishes\nfilemot\nfiler\nfilers\nfiles\nfilet\nfileted\nfileting\nfilets\nfilial\nfilially\nfiliate\nfiliated\nfiliates\nfiliating\nfiliation\nfiliations\nfilibeg\nfilibegs\nfilibuster\nfilibustered\nfilibusterer\nfilibusterers\nfilibustering\nfilibusters\nfilicide\nfilicides\nfiliform\nfiligree\nfiligreed\nfiligreeing\nfiligrees\nfiling\nfilings\nfilister\nfilisters\nfill\nfille\nfilled\nfiller\nfillers\nfilles\nfillet\nfilleted\nfilleting\nfillets\nfillies\nfilling\nfillings\nfillip\nfilliped\nfilliping\nfillips\nfillo\nfills\nfilly\nfilm\nfilmcard\nfilmcards\nfilmdom\nfilmdoms\nfilmed\nfilmgoer\nfilmgoers\nfilmic\nfilmier\nfilmiest\nfilmily\nfilminess\nfilming\nfilmland\nfilmlands\nfilmmaker\nfilmmakers\nfilmmaking\nfilms\nfilmset\nfilmsets\nfilmsetting\nfilmstrip\nfilmstrips\nfilmy\nfilo\nfilos\nfilose\nfils\nfilter\nfilterability\nfilterable\nfiltered\nfilterer\nfilterers\nfiltering\nfilters\nfilth\nfilthier\nfilthiest\nfilthily\nfilthiness\nfilths\nfilthy\nfiltrate\nfiltrated\nfiltrates\nfiltrating\nfiltration\nfiltrations\nfilum\nfimble\nfimbles\nfimbria\nfimbriae\nfimbrial\nfin\nfinable\nfinagle\nfinagled\nfinagler\nfinaglers\nfinagles\nfinagling\nfinal\nfinale\nfinales\nfinalis\nfinalism\nfinalisms\nfinalist\nfinalists\nfinalities\nfinality\nfinalization\nfinalizations\nfinalize\nfinalized\nfinalizes\nfinalizing\nfinally\nfinals\nfinance\nfinanced\nfinances\nfinancial\nfinancially\nfinancier\nfinanciers\nfinancing\nfinback\nfinbacks\nfinch\nfinches\nfind\nfinder\nfinders\nfinding\nfindings\nfinds\nfine\nfineable\nfined\nfinely\nfineness\nfinenesses\nfiner\nfineries\nfinery\nfines\nfinespun\nfinesse\nfinessed\nfinesses\nfinessing\nfinest\nfinfish\nfinfishes\nfinfoot\nfinfoots\nfinger\nfingerboard\nfingerboards\nfingered\nfingerer\nfingerers\nfingering\nfingerings\nfingerling\nfingerlings\nfingernail\nfingernails\nfingerprint\nfingerprinted\nfingerprinting\nfingerprints\nfingers\nfingertip\nfingertips\nfinial\nfinialed\nfinials\nfinical\nfinickier\nfinickiest\nfinickin\nfinicking\nfinicky\nfinikin\nfiniking\nfining\nfinings\nfinis\nfinises\nfinish\nfinished\nfinisher\nfinishers\nfinishes\nfinishing\nfinite\nfinitely\nfiniteness\nfinites\nfinitude\nfinitudes\nfink\nfinked\nfinking\nfinks\nfinless\nfinlike\nfinmark\nfinmarks\nfinned\nfinnickier\nfinnickiest\nfinnicky\nfinnier\nfinniest\nfinning\nfinnmark\nfinnmarks\nfinny\nfino\nfinochio\nfinochios\nfinos\nfins\nfiord\nfiords\nfipple\nfipples\nfique\nfiques\nfir\nfire\nfirearm\nfirearms\nfireball\nfireballs\nfirebird\nfirebirds\nfireboat\nfireboats\nfirebomb\nfirebombed\nfirebombing\nfirebombs\nfirebox\nfireboxes\nfirebrand\nfirebrands\nfirebrat\nfirebrats\nfirebreak\nfirebreaks\nfirebrick\nfirebricks\nfirebug\nfirebugs\nfireclay\nfireclays\nfirecracker\nfirecrackers\nfired\nfiredamp\nfiredamps\nfiredog\nfiredogs\nfirefang\nfirefanged\nfirefanging\nfirefangs\nfireflies\nfirefly\nfirehall\nfirehalls\nfireless\nfirelight\nfirelights\nfirelock\nfirelocks\nfireman\nfiremen\nfirepan\nfirepans\nfirepink\nfirepinks\nfireplace\nfireplaces\nfireplug\nfireplugs\nfirepower\nfireproof\nfireproofed\nfireproofing\nfireproofs\nfirer\nfireroom\nfirerooms\nfirers\nfires\nfireside\nfiresides\nfiretrap\nfiretraps\nfirewater\nfireweed\nfireweeds\nfirewood\nfirewoods\nfirework\nfireworks\nfireworm\nfireworms\nfiring\nfirings\nfirkin\nfirkins\nfirm\nfirmament\nfirmamental\nfirman\nfirmans\nfirmed\nfirmer\nfirmers\nfirmest\nfirming\nfirmly\nfirmness\nfirmnesses\nfirms\nfirn\nfirns\nfirry\nfirs\nfirst\nfirstborn\nfirstborns\nfirsthand\nfirstling\nfirstlings\nfirstly\nfirsts\nfirth\nfirths\nfisc\nfiscal\nfiscally\nfiscals\nfiscs\nfish\nfishable\nfishboats\nfishbolt\nfishbolts\nfishbone\nfishbones\nfishbowl\nfishbowls\nfished\nfisher\nfisheries\nfisherman\nfishermen\nfishers\nfishery\nfishes\nfisheye\nfisheyes\nfishgig\nfishgigs\nfishhook\nfishhooks\nfishier\nfishiest\nfishily\nfishing\nfishings\nfishless\nfishlike\nfishline\nfishlines\nfishmeal\nfishmeals\nfishmonger\nfishmongers\nfishnet\nfishnets\nfishpole\nfishpoles\nfishpond\nfishponds\nfishtail\nfishtailed\nfishtailing\nfishtails\nfishway\nfishways\nfishwife\nfishwives\nfishy\nfissate\nfissile\nfission\nfissionability\nfissionable\nfissional\nfissioned\nfissioning\nfissions\nfissiparous\nfissiped\nfissipeds\nfissure\nfissured\nfissures\nfissuring\nfist\nfisted\nfistful\nfistfuls\nfistic\nfisticuffs\nfisting\nfistnote\nfistnotes\nfists\nfistula\nfistulae\nfistular\nfistulas\nfit\nfitch\nfitchee\nfitches\nfitchet\nfitchets\nfitchew\nfitchews\nfitchy\nfitful\nfitfully\nfitfulness\nfitly\nfitment\nfitments\nfitness\nfitnesses\nfits\nfittable\nfitted\nfitter\nfitters\nfittest\nfitting\nfittingly\nfittingness\nfittings\nfive\nfivefold\nfivepins\nfiver\nfivers\nfives\nfix\nfixable\nfixate\nfixated\nfixates\nfixatif\nfixatifs\nfixating\nfixation\nfixations\nfixative\nfixatives\nfixed\nfixedly\nfixedness\nfixer\nfixers\nfixes\nfixing\nfixings\nfixit\nfixities\nfixity\nfixt\nfixture\nfixtures\nfixure\nfixures\nfiz\nfizgig\nfizgigs\nfizz\nfizzed\nfizzer\nfizzers\nfizzes\nfizzier\nfizziest\nfizzing\nfizzle\nfizzled\nfizzles\nfizzling\nfizzy\nfjeld\nfjelds\nfjord\nfjords\nflab\nflabbergast\nflabbergasted\nflabbergasting\nflabbergasts\nflabbier\nflabbiest\nflabbily\nflabbiness\nflabby\nflabella\nflabs\nflaccid\nflaccidity\nflaccidly\nflack\nflacks\nflacon\nflacons\nflag\nflagella\nflagellant\nflagellants\nflagellate\nflagellated\nflagellates\nflagellating\nflagellation\nflagellations\nflagellum\nflagellums\nflageolet\nflageolets\nflagged\nflagger\nflaggers\nflaggier\nflaggiest\nflagging\nflaggings\nflaggy\nflagitious\nflagitiously\nflagitiousness\nflagless\nflagman\nflagmen\nflagon\nflagons\nflagpole\nflagpoles\nflagrancy\nflagrant\nflagrantly\nflags\nflagship\nflagships\nflagstaff\nflagstaffs\nflagstone\nflagstones\nflail\nflailed\nflailing\nflails\nflair\nflairs\nflak\nflake\nflaked\nflaker\nflakers\nflakes\nflakier\nflakiest\nflakily\nflakiness\nflaking\nflaky\nflam\nflambe\nflambeau\nflambeaus\nflambeaux\nflambee\nflambeed\nflambeing\nflambes\nflamboyance\nflamboyancy\nflamboyant\nflamboyantly\nflame\nflamed\nflamen\nflamenco\nflamencos\nflamens\nflameout\nflameouts\nflameproof\nflamer\nflamers\nflames\nflamier\nflamiest\nflamines\nflaming\nflamingo\nflamingoes\nflamingos\nflammability\nflammable\nflammables\nflammed\nflamming\nflams\nflamy\nflan\nflancard\nflancards\nflanerie\nflaneries\nflanes\nflaneur\nflaneurs\nflange\nflanged\nflanger\nflangers\nflanges\nflanging\nflank\nflanked\nflanker\nflankers\nflanking\nflanks\nflannel\nflanneled\nflannelette\nflannelettes\nflanneling\nflannelled\nflannelling\nflannels\nflans\nflap\nflapjack\nflapjacks\nflapless\nflappable\nflapped\nflapper\nflappers\nflappier\nflappiest\nflapping\nflappy\nflaps\nflare\nflared\nflares\nflarfishes\nflaring\nflaringly\nflash\nflashback\nflashbacks\nflashbulb\nflashbulbs\nflashcard\nflashcards\nflashcube\nflashcubes\nflashed\nflasher\nflashers\nflashes\nflashgun\nflashguns\nflashier\nflashiest\nflashily\nflashiness\nflashing\nflashings\nflashlight\nflashlights\nflashover\nflashovers\nflashy\nflask\nflasket\nflaskets\nflasks\nflat\nflatbed\nflatbeds\nflatboat\nflatboats\nflatcap\nflatcaps\nflatcar\nflatcars\nflatfeet\nflatfish\nflatfishes\nflatfoot\nflatfooted\nflatfooting\nflatfoots\nflathead\nflatheads\nflatiron\nflatirons\nflatland\nflatlands\nflatlet\nflatlets\nflatling\nflatly\nflatness\nflatnesses\nflats\nflatted\nflatten\nflattened\nflattener\nflatteners\nflattening\nflattens\nflatter\nflattered\nflatterer\nflatterers\nflatteries\nflattering\nflatteringly\nflatters\nflattery\nflattest\nflatting\nflattish\nflattop\nflattops\nflatulence\nflatulency\nflatulent\nflatulently\nflatus\nflatuses\nflatware\nflatwares\nflatwash\nflatwashes\nflatways\nflatwise\nflatwork\nflatworks\nflatworm\nflatworms\nflaunt\nflaunted\nflaunter\nflaunters\nflauntier\nflauntiest\nflaunting\nflauntingly\nflaunts\nflaunty\nflautist\nflautists\nflavin\nflavine\nflavines\nflavins\nflavone\nflavones\nflavonol\nflavonols\nflavor\nflavored\nflavorer\nflavorers\nflavorful\nflavorfully\nflavoring\nflavorings\nflavorless\nflavors\nflavorsome\nflavory\nflavour\nflavoured\nflavouring\nflavours\nflavoury\nflaw\nflawed\nflawier\nflawiest\nflawing\nflawless\nflawlessly\nflawlessness\nflaws\nflawy\nflax\nflaxen\nflaxes\nflaxier\nflaxiest\nflaxseed\nflaxseeds\nflaxy\nflay\nflayed\nflayer\nflayers\nflaying\nflays\nflea\nfleabag\nfleabags\nfleabane\nfleabanes\nfleabite\nfleabites\nfleam\nfleams\nfleas\nfleawort\nfleaworts\nfleche\nfleches\nfleck\nflecked\nflecking\nflecks\nflecky\nflection\nflections\nfled\nfledge\nfledged\nfledges\nfledgier\nfledgiest\nfledging\nfledgling\nfledglings\nfledgy\nflee\nfleece\nfleeced\nfleecer\nfleecers\nfleeces\nfleech\nfleeched\nfleeches\nfleeching\nfleecier\nfleeciest\nfleecily\nfleecing\nfleecy\nfleeing\nfleer\nfleered\nfleering\nfleers\nflees\nfleet\nfleeted\nfleeter\nfleetest\nfleeting\nfleetingly\nfleetingness\nfleetly\nfleetness\nfleets\nfleishig\nflemish\nflemished\nflemishes\nflemishing\nflench\nflenched\nflenches\nflenching\nflense\nflensed\nflenser\nflensers\nflenses\nflensing\nflesh\nfleshed\nflesher\nfleshers\nfleshes\nfleshier\nfleshiest\nfleshiness\nfleshing\nfleshings\nfleshlier\nfleshliest\nfleshly\nfleshpot\nfleshpots\nfleshy\nfletch\nfletched\nfletcher\nfletchers\nfletches\nfletching\nfleury\nflew\nflews\nflex\nflexed\nflexes\nflexibility\nflexible\nflexibly\nflexile\nflexing\nflexion\nflexions\nflexor\nflexors\nflexuose\nflexuous\nflexural\nflexure\nflexures\nfley\nfleyed\nfleying\nfleys\nflibbertigibbet\nflibbertigibbets\nflic\nflichter\nflichtered\nflichtering\nflichters\nflick\nflicked\nflicker\nflickered\nflickering\nflickeringly\nflickers\nflickery\nflicking\nflicks\nflics\nflied\nflier\nfliers\nflies\nfliest\nflight\nflighted\nflightier\nflightiest\nflightily\nflightiness\nflighting\nflightless\nflights\nflighty\nflimflam\nflimflammed\nflimflammer\nflimflammers\nflimflamming\nflimflams\nflimsier\nflimsies\nflimsiest\nflimsily\nflimsiness\nflimsy\nflinch\nflinched\nflincher\nflinchers\nflinches\nflinching\nflinder\nflinders\nfling\nflinger\nflingers\nflinging\nflings\nflint\nflinted\nflintier\nflintiest\nflintily\nflintiness\nflinting\nflintlock\nflintlocks\nflints\nflinty\nflip\nflippancies\nflippancy\nflippant\nflippantly\nflipped\nflipper\nflippers\nflippest\nflipping\nflips\nflirt\nflirtation\nflirtations\nflirtatious\nflirtatiously\nflirtatiousness\nflirted\nflirter\nflirters\nflirtier\nflirtiest\nflirting\nflirts\nflirty\nflit\nflitch\nflitched\nflitches\nflitching\nflite\nflited\nflites\nfliting\nflits\nflitted\nflitter\nflittered\nflittering\nflitters\nflitting\nflivver\nflivvers\nfloat\nfloatage\nfloatages\nfloated\nfloater\nfloaters\nfloatier\nfloatiest\nfloating\nfloats\nfloaty\nfloc\nflocced\nflocci\nfloccinaucinihilipilification\nfloccing\nfloccose\nflocculate\nflocculated\nflocculates\nflocculating\nflocculation\nflocculations\nfloccule\nflocculent\nfloccules\nflocculi\nfloccus\nflock\nflocked\nflockier\nflockiest\nflocking\nflockings\nflocks\nflocky\nflocs\nfloe\nfloes\nflog\nflogged\nflogger\nfloggers\nflogging\nfloggings\nflogs\nflong\nflongs\nflood\nflooded\nflooder\nflooders\nfloodgate\nfloodgates\nflooding\nfloodlight\nfloodlighted\nfloodlighting\nfloodlights\nfloodlit\nfloods\nfloodwater\nfloodwaters\nfloodway\nfloodways\nflooey\nfloor\nfloorage\nfloorages\nfloorboard\nfloorboards\nfloored\nfloorer\nfloorers\nflooring\nfloorings\nfloors\nfloorwalker\nfloorwalkers\nfloosies\nfloosy\nfloozie\nfloozies\nfloozy\nflop\nflophouse\nflophouses\nflopover\nflopovers\nflopped\nflopper\nfloppers\nfloppier\nfloppiest\nfloppily\nflopping\nfloppy\nflops\nflora\nflorae\nfloral\nflorally\nfloras\nflorence\nflorences\nflorescence\nflorescent\nfloret\nflorets\nfloricultural\nfloriculture\nfloriculturist\nfloriculturists\nflorid\nfloridity\nfloridly\nfloriferous\nflorigen\nflorigens\nflorin\nflorins\nflorist\nfloristic\nfloristically\nflorists\nfloruit\nfloruits\nfloss\nflosses\nflossie\nflossier\nflossies\nflossiest\nflossy\nflota\nflotage\nflotages\nflotas\nflotation\nflotations\nflotilla\nflotillas\nflotsam\nflotsams\nflounce\nflounced\nflounces\nflouncier\nflounciest\nflouncing\nflouncy\nflounder\nfloundered\nfloundering\nflounders\nflour\nfloured\nflouring\nflourish\nflourished\nflourishes\nflourishing\nflours\nfloury\nflout\nflouted\nflouter\nflouters\nflouting\nflouts\nflow\nflowage\nflowages\nflowchart\nflowcharting\nflowchartings\nflowcharts\nflowed\nflower\nflowered\nflowerer\nflowerers\nfloweret\nflowerets\nflowerier\nfloweriest\nfloweriness\nflowering\nflowerless\nflowerlike\nflowerpot\nflowerpots\nflowers\nflowery\nflowing\nflowingly\nflown\nflows\nflu\nflub\nflubbed\nflubbing\nflubdub\nflubdubs\nflubs\nfluctuate\nfluctuated\nfluctuates\nfluctuating\nfluctuation\nfluctuations\nflue\nflued\nfluencies\nfluency\nfluent\nfluently\nflueric\nfluerics\nflues\nfluff\nfluffed\nfluffier\nfluffiest\nfluffily\nfluffiness\nfluffing\nfluffs\nfluffy\nfluid\nfluidal\nfluidally\nfluidic\nfluidics\nfluidise\nfluidised\nfluidises\nfluidising\nfluidities\nfluidity\nfluidization\nfluidizations\nfluidize\nfluidized\nfluidizer\nfluidizers\nfluidizes\nfluidizing\nfluidly\nfluidness\nfluidounce\nfluidounces\nfluidram\nfluidrams\nfluids\nfluke\nfluked\nflukes\nflukey\nflukier\nflukiest\nfluking\nfluky\nflume\nflumed\nflumes\nfluming\nflummeries\nflummery\nflummox\nflummoxed\nflummoxes\nflummoxing\nflump\nflumped\nflumping\nflumps\nflung\nflunk\nflunked\nflunker\nflunkers\nflunkey\nflunkeys\nflunkies\nflunking\nflunks\nflunky\nfluor\nfluorene\nfluorenes\nfluoresce\nfluoresced\nfluorescein\nfluoresceins\nfluorescence\nfluorescent\nfluoresces\nfluorescing\nfluoric\nfluorid\nfluoridate\nfluoridated\nfluoridates\nfluoridating\nfluoridation\nfluoridations\nfluoride\nfluorides\nfluorids\nfluorin\nfluorinate\nfluorinated\nfluorinates\nfluorinating\nfluorination\nfluorinations\nfluorine\nfluorines\nfluorins\nfluorite\nfluorites\nfluorocarbon\nfluorocarbons\nfluoroscope\nfluoroscopes\nfluoroscopic\nfluoroscopist\nfluoroscopists\nfluoroscopy\nfluors\nflurried\nflurries\nflurry\nflurrying\nflus\nflush\nflushed\nflusher\nflushers\nflushes\nflushest\nflushing\nflushness\nfluster\nflustered\nflustering\nflusters\nflute\nfluted\nflutelike\nfluter\nfluters\nflutes\nflutier\nflutiest\nfluting\nflutings\nflutist\nflutists\nflutter\nfluttered\nfluttering\nflutters\nfluttery\nfluty\nfluvial\nflux\nfluxed\nfluxes\nfluxing\nfluxion\nfluxional\nfluxions\nfluyt\nfluyts\nfly\nflyable\nflyaway\nflyaways\nflybelt\nflybelts\nflyblew\nflyblow\nflyblowing\nflyblown\nflyblows\nflyboat\nflyboats\nflyby\nflybys\nflycatcher\nflycatchers\nflyer\nflyers\nflying\nflyings\nflyleaf\nflyleaves\nflyman\nflymen\nflyover\nflyovers\nflypaper\nflypapers\nflypast\nflypasts\nflysch\nflysches\nflyspeck\nflyspecked\nflyspecking\nflyspecks\nflyte\nflyted\nflytes\nflytier\nflytiers\nflyting\nflytings\nflytrap\nflytraps\nflyway\nflyways\nflyweight\nflyweights\nflywheel\nflywheels\nfoal\nfoaled\nfoaling\nfoals\nfoam\nfoamed\nfoamer\nfoamers\nfoamier\nfoamiest\nfoamily\nfoaminess\nfoaming\nfoamless\nfoamlike\nfoams\nfoamy\nfob\nfobbed\nfobbing\nfobs\nfocal\nfocalise\nfocalised\nfocalises\nfocalising\nfocalization\nfocalizations\nfocalize\nfocalized\nfocalizes\nfocalizing\nfocally\nfoci\nfocus\nfocused\nfocuser\nfocusers\nfocuses\nfocusing\nfocussed\nfocusses\nfocussing\nfodder\nfoddered\nfoddering\nfodders\nfodgel\nfoe\nfoehn\nfoehns\nfoeman\nfoemen\nfoes\nfoetal\nfoetid\nfoetor\nfoetors\nfoetus\nfoetuses\nfog\nfogbound\nfogbow\nfogbows\nfogdog\nfogdogs\nfogey\nfogeys\nfogfruit\nfogfruits\nfoggage\nfoggages\nfogged\nfogger\nfoggers\nfoggier\nfoggiest\nfoggily\nfogginess\nfogging\nfoggy\nfoghorn\nfoghorns\nfogie\nfogies\nfogless\nfogs\nfogy\nfogyish\nfogyism\nfogyisms\nfoh\nfohn\nfohns\nfoible\nfoibles\nfoil\nfoilable\nfoiled\nfoiling\nfoils\nfoilsman\nfoilsmen\nfoin\nfoined\nfoining\nfoins\nfoison\nfoisons\nfoist\nfoisted\nfoisting\nfoists\nfolacin\nfolacins\nfolate\nfolates\nfold\nfoldable\nfoldaway\nfoldboat\nfoldboats\nfolded\nfolder\nfolderol\nfolderols\nfolders\nfolding\nfoldout\nfoldouts\nfolds\nfolia\nfoliage\nfoliaged\nfoliages\nfoliar\nfoliate\nfoliated\nfoliates\nfoliating\nfoliation\nfoliations\nfolio\nfolioed\nfolioing\nfolios\nfoliose\nfolious\nfolium\nfoliums\nfolk\nfolkish\nfolklike\nfolklore\nfolklores\nfolkloric\nfolklorist\nfolkloristic\nfolklorists\nfolkmoot\nfolkmoots\nfolkmot\nfolkmote\nfolkmotes\nfolkmots\nfolks\nfolksier\nfolksiest\nfolksily\nfolksy\nfolktale\nfolktales\nfolkway\nfolkways\nfolky\nfolles\nfollicle\nfollicles\nfollies\nfollis\nfollow\nfollowed\nfollower\nfollowers\nfollowing\nfollowings\nfollows\nfolly\nfoment\nfomentation\nfomentations\nfomented\nfomenter\nfomenters\nfomenting\nfoments\nfon\nfond\nfondant\nfondants\nfonded\nfonder\nfondest\nfonding\nfondle\nfondled\nfondler\nfondlers\nfondles\nfondling\nfondlings\nfondly\nfondness\nfondnesses\nfonds\nfondu\nfondue\nfondues\nfondus\nfons\nfont\nfontal\nfontanel\nfontanels\nfontina\nfontinas\nfonts\nfood\nfoodless\nfoodlessness\nfoods\nfoodstuff\nfoodstuffs\nfoofaraw\nfoofaraws\nfool\nfooled\nfooleries\nfoolery\nfoolfish\nfoolfishes\nfoolhardily\nfoolhardiness\nfoolhardy\nfooling\nfoolish\nfoolisher\nfoolishest\nfoolishly\nfoolishness\nfoolproof\nfools\nfoolscap\nfoolscaps\nfoot\nfootage\nfootages\nfootball\nfootballs\nfootbath\nfootbaths\nfootboy\nfootboys\nfootbridge\nfootbridges\nfooted\nfooter\nfooters\nfootfall\nfootfalls\nfootgear\nfootgears\nfoothill\nfoothills\nfoothold\nfootholds\nfootier\nfootiest\nfooting\nfootings\nfootle\nfootled\nfootler\nfootlers\nfootles\nfootless\nfootlessly\nfootlessness\nfootlights\nfootlike\nfootling\nfootlocker\nfootlockers\nfootloose\nfootman\nfootmark\nfootmarks\nfootmen\nfootnote\nfootnoted\nfootnotes\nfootnoting\nfootpace\nfootpaces\nfootpad\nfootpads\nfootpath\nfootpaths\nfootprint\nfootprints\nfootrace\nfootraces\nfootrest\nfootrests\nfootrope\nfootropes\nfoots\nfootsie\nfootsies\nfootslog\nfootslogged\nfootslogging\nfootslogs\nfootsore\nfootsoreness\nfootstep\nfootsteps\nfootstool\nfootstools\nfootwall\nfootwalls\nfootway\nfootways\nfootwear\nfootwears\nfootwork\nfootworks\nfootworn\nfooty\nfoozle\nfoozled\nfoozler\nfoozlers\nfoozles\nfoozling\nfop\nfopped\nfopperies\nfoppery\nfopping\nfoppish\nfoppishly\nfoppishness\nfops\nfor\nfora\nforage\nforaged\nforager\nforagers\nforages\nforaging\nforam\nforamen\nforamens\nforamina\nforaminifer\nforaminifers\nforams\nforasmuch\nforay\nforayed\nforayer\nforayers\nforaying\nforays\nforb\nforbad\nforbade\nforbear\nforbearance\nforbearances\nforbearer\nforbearers\nforbearing\nforbears\nforbid\nforbidal\nforbidals\nforbiddance\nforbidden\nforbidder\nforbidders\nforbidding\nforbiddingly\nforbiddingness\nforbids\nforbode\nforboded\nforbodes\nforboding\nforbore\nforborne\nforbs\nforby\nforbye\nforce\nforced\nforcedly\nforceful\nforcefully\nforcefulness\nforceless\nforcemeat\nforcemeats\nforceps\nforcer\nforcers\nforces\nforcible\nforcibleness\nforcibly\nforcing\nforcipes\nford\nfordable\nforded\nfordid\nfording\nfordless\nfordo\nfordoes\nfordoing\nfordone\nfords\nfore\nforearm\nforearmed\nforearming\nforearms\nforebay\nforebays\nforebear\nforebears\nforebode\nforeboded\nforebodes\nforebodies\nforeboding\nforebodingly\nforebodingness\nforebodings\nforebody\nforeboom\nforebooms\nforeby\nforebye\nforecast\nforecasted\nforecaster\nforecasters\nforecasting\nforecastle\nforecastles\nforecasts\nforeclose\nforeclosed\nforecloses\nforeclosing\nforeclosure\nforeclosures\nforedate\nforedated\nforedates\nforedating\nforedeck\nforedecks\nforedid\nforedo\nforedoes\nforedoing\nforedone\nforedoom\nforedoomed\nforedooming\nforedooms\nforeface\nforefaces\nforefather\nforefathers\nforefeel\nforefeeling\nforefeels\nforefeet\nforefelt\nforefend\nforefended\nforefending\nforefends\nforefinger\nforefingers\nforefoot\nforefront\nforefronts\nforegather\nforego\nforegoer\nforegoers\nforegoes\nforegoing\nforegone\nforeground\nforegrounds\nforegut\nforeguts\nforehand\nforehanded\nforehandedly\nforehands\nforehead\nforeheads\nforehoof\nforehoofs\nforehooves\nforeign\nforeigner\nforeigners\nforeignism\nforeignness\nforeknew\nforeknow\nforeknowing\nforeknowledge\nforeknown\nforeknows\nforeladies\nforelady\nforeland\nforelands\nforeleg\nforelegs\nforelimb\nforelimbs\nforelock\nforelocks\nforeman\nforemanship\nforemast\nforemasts\nforemen\nforemilk\nforemilks\nforemost\nforename\nforenamed\nforenames\nforenoon\nforenoons\nforensic\nforensically\nforensics\nforeordain\nforeordained\nforeordaining\nforeordains\nforeordination\nforeordinations\nforepart\nforeparts\nforepast\nforepaw\nforepaws\nforepeak\nforepeaks\nforeplay\nforeplays\nforequarter\nforequarters\nforeran\nforerank\nforeranks\nforerun\nforerunner\nforerunners\nforerunning\nforeruns\nfores\nforesaid\nforesail\nforesails\nforesaw\nforesee\nforeseeable\nforeseeing\nforeseen\nforeseer\nforeseers\nforesees\nforeshadow\nforeshadowed\nforeshadower\nforeshadowers\nforeshadowing\nforeshadows\nforeshorten\nforeshortened\nforeshortening\nforeshortens\nforeshow\nforeshowed\nforeshowing\nforeshown\nforeshows\nforeside\nforesides\nforesight\nforesighted\nforesightedly\nforesightedness\nforesights\nforeskin\nforeskins\nforest\nforestal\nforestall\nforestalled\nforestaller\nforestallers\nforestalling\nforestallment\nforestallments\nforestalls\nforestation\nforestations\nforestay\nforestays\nforested\nforester\nforesters\nforestial\nforesting\nforestland\nforestlands\nforestries\nforestry\nforests\nforeswear\nforeswearing\nforeswore\nforesworn\nforetaste\nforetasted\nforetastes\nforetasting\nforetell\nforeteller\nforetellers\nforetelling\nforetells\nforethought\nforetime\nforetimes\nforetold\nforetop\nforetops\nforever\nforevermore\nforevers\nforewarn\nforewarned\nforewarning\nforewarns\nforewent\nforewing\nforewings\nforeword\nforewords\nforeworn\nforeyard\nforeyards\nforfeit\nforfeitable\nforfeited\nforfeiter\nforfeiters\nforfeiting\nforfeits\nforfeiture\nforfeitures\nforfend\nforfended\nforfending\nforfends\nforgat\nforgather\nforgathered\nforgathering\nforgathers\nforgave\nforge\nforgeable\nforged\nforger\nforgeries\nforgers\nforgery\nforges\nforget\nforgetful\nforgetfully\nforgetfulness\nforgets\nforgettable\nforgetter\nforgetters\nforgetting\nforging\nforgings\nforgivable\nforgive\nforgiven\nforgiveness\nforgiver\nforgivers\nforgives\nforgiving\nforgivingly\nforgivingness\nforgo\nforgoer\nforgoers\nforgoes\nforgoing\nforgone\nforgot\nforgotten\nforint\nforints\nforjudge\nforjudged\nforjudges\nforjudging\nfork\nforked\nforkedly\nforker\nforkers\nforkful\nforkfuls\nforkier\nforkiest\nforking\nforkless\nforklift\nforklifts\nforklike\nforks\nforksful\nforky\nforlorn\nforlorner\nforlornest\nforlornly\nforlornness\nform\nformabilities\nformability\nformable\nformal\nformaldehyde\nformaldehydes\nformalin\nformalins\nformalism\nformalisms\nformalist\nformalistic\nformalistically\nformalists\nformalities\nformality\nformalization\nformalizations\nformalize\nformalized\nformalizer\nformalizers\nformalizes\nformalizing\nformally\nformalness\nformals\nformant\nformants\nformat\nformate\nformates\nformation\nformational\nformations\nformative\nformatively\nformativeness\nformats\nformatted\nformatting\nforme\nformed\nformee\nformer\nformerly\nformers\nformes\nformful\nformic\nformicaries\nformicary\nformidable\nformidableness\nformidably\nforming\nformless\nformlessly\nformlessness\nformol\nformols\nforms\nformula\nformulae\nformulaic\nformulaically\nformularies\nformularization\nformularizations\nformularize\nformularized\nformularizer\nformularizers\nformularizes\nformularizing\nformulary\nformulas\nformulate\nformulated\nformulates\nformulating\nformulation\nformulations\nformulator\nformulators\nformulization\nformulizations\nformulize\nformulized\nformulizes\nformulizing\nformyl\nformyls\nfornical\nfornicate\nfornicated\nfornicates\nfornicating\nfornication\nfornications\nfornicator\nfornicators\nfornices\nfornix\nforrader\nforrit\nforsake\nforsaken\nforsaker\nforsakers\nforsakes\nforsaking\nforsook\nforsooth\nforspent\nforswear\nforswearing\nforswears\nforswore\nforsworn\nforsythia\nforsythias\nfort\nforte\nfortes\nforth\nforthcoming\nforthright\nforthrightly\nforthrightness\nforthwith\nforties\nfortieth\nfortieths\nfortification\nfortifications\nfortified\nfortifier\nfortifiers\nfortifies\nfortify\nfortifying\nfortis\nfortitude\nfortitudes\nfortnight\nfortnightly\nfortnights\nfortress\nfortressed\nfortresses\nfortressing\nforts\nfortuities\nfortuitous\nfortuitously\nfortuitousness\nfortuity\nfortunate\nfortunately\nfortunateness\nfortune\nfortuned\nfortunes\nfortuning\nforty\nforum\nforums\nforward\nforwarded\nforwarder\nforwarders\nforwardest\nforwarding\nforwardly\nforwardness\nforwards\nforwent\nforwhy\nforworn\nforzando\nforzandos\nfoss\nfossa\nfossae\nfossate\nfosse\nfosses\nfossette\nfossettes\nfossick\nfossicked\nfossicking\nfossicks\nfossil\nfossilization\nfossilizations\nfossilize\nfossilized\nfossilizes\nfossilizing\nfossils\nfoster\nfosterage\nfosterages\nfostered\nfosterer\nfosterers\nfostering\nfosterling\nfosterlings\nfosters\nfou\nfought\nfoughten\nfoul\nfoulard\nfoulards\nfouled\nfouler\nfoulest\nfouling\nfoulings\nfoully\nfoulmouthed\nfoulness\nfoulnesses\nfouls\nfound\nfoundation\nfoundational\nfoundationally\nfoundations\nfounded\nfounder\nfoundered\nfoundering\nfounders\nfounding\nfoundling\nfoundlings\nfoundries\nfoundry\nfounds\nfount\nfountain\nfountained\nfountainhead\nfountainheads\nfountaining\nfountains\nfounts\nfour\nfourchee\nfourfold\nfourgon\nfourgons\nfours\nfourscore\nfoursome\nfoursomes\nfoursquare\nfourteen\nfourteens\nfourteenth\nfourteenths\nfourth\nfourthly\nfourths\nfovea\nfoveae\nfoveal\nfoveate\nfoveated\nfoveola\nfoveolae\nfoveolar\nfoveolas\nfoveole\nfoveoles\nfoveolet\nfoveolets\nfowl\nfowled\nfowler\nfowlers\nfowling\nfowlings\nfowlpox\nfowlpoxes\nfowls\nfox\nfoxed\nfoxes\nfoxfire\nfoxfires\nfoxfish\nfoxfishes\nfoxglove\nfoxgloves\nfoxhole\nfoxholes\nfoxhound\nfoxhounds\nfoxier\nfoxiest\nfoxily\nfoxiness\nfoxinesses\nfoxing\nfoxings\nfoxlike\nfoxskin\nfoxskins\nfoxtail\nfoxtails\nfoxy\nfoy\nfoyer\nfoyers\nfoys\nfozier\nfoziest\nfoziness\nfozinesses\nfozy\nfracas\nfracases\nfracted\nfraction\nfractional\nfractionalization\nfractionalizations\nfractionalize\nfractionalized\nfractionalizes\nfractionalizing\nfractionally\nfractionate\nfractionated\nfractionates\nfractionating\nfractionation\nfractionations\nfractioned\nfractioning\nfractions\nfractious\nfractiously\nfractiousness\nfractur\nfracture\nfractured\nfractures\nfracturing\nfracturs\nfrae\nfraena\nfraenum\nfraenums\nfrag\nfragged\nfragging\nfraggings\nfragile\nfragility\nfragment\nfragmental\nfragmentally\nfragmentary\nfragmentation\nfragmentations\nfragmented\nfragmenting\nfragmentize\nfragmentized\nfragmentizes\nfragmentizing\nfragments\nfragrance\nfragrances\nfragrant\nfragrantly\nfrags\nfrail\nfrailer\nfrailest\nfrailly\nfrailness\nfrails\nfrailties\nfrailty\nfraise\nfraises\nfraktur\nfrakturs\nframable\nframe\nframed\nframer\nframers\nframes\nframework\nframeworks\nframing\nfranc\nfranchise\nfranchised\nfranchisee\nfranchisees\nfranchises\nfranchising\nfrancium\nfranciums\nfrancs\nfrangibility\nfrangible\nfrangipani\nfrangipanis\nfrank\nfranked\nfranker\nfrankers\nfrankest\nfrankfort\nfrankforter\nfrankforters\nfrankforts\nfrankfurt\nfrankfurter\nfrankfurters\nfrankfurts\nfrankincense\nfrankincenses\nfranking\nfranklin\nfranklins\nfrankly\nfrankness\nfranks\nfrantic\nfrantically\nfranticly\nfranticness\nfrap\nfrappe\nfrapped\nfrappes\nfrapping\nfraps\nfrat\nfrater\nfraternal\nfraternalism\nfraternalisms\nfraternally\nfraternities\nfraternity\nfraternization\nfraternizations\nfraternize\nfraternized\nfraternizer\nfraternizers\nfraternizes\nfraternizing\nfraters\nfratricidal\nfratricide\nfratricides\nfrats\nfraud\nfrauds\nfraudulent\nfraudulently\nfraught\nfraughted\nfraughting\nfraughts\nfraulein\nfrauleins\nfray\nfrayed\nfraying\nfrayings\nfrays\nfrazzle\nfrazzled\nfrazzles\nfrazzling\nfreak\nfreaked\nfreakier\nfreakiest\nfreakily\nfreakiness\nfreaking\nfreakish\nfreakishly\nfreakishness\nfreakout\nfreakouts\nfreaks\nfreaky\nfreckle\nfreckled\nfreckles\nfrecklier\nfreckliest\nfreckling\nfreckly\nfree\nfreebee\nfreebees\nfreebie\nfreebies\nfreeboot\nfreebooted\nfreebooter\nfreebooters\nfreebooting\nfreeboots\nfreeborn\nfreed\nfreedman\nfreedmen\nfreedom\nfreedoms\nfreedwoman\nfreedwomen\nfreeform\nfreehand\nfreehanded\nfreehandedly\nfreehandedness\nfreehold\nfreeholder\nfreeholders\nfreeholds\nfreeing\nfreeload\nfreeloaded\nfreeloader\nfreeloaders\nfreeloading\nfreeloads\nfreely\nfreeman\nfreemasonry\nfreemen\nfreeness\nfreenesses\nfreer\nfreers\nfrees\nfreesia\nfreesias\nfreest\nfreestanding\nfreestone\nfreestones\nfreethinker\nfreethinkers\nfreethinking\nfreeway\nfreeways\nfreewheel\nfreewheeled\nfreewheeling\nfreewheels\nfreewill\nfreeze\nfreezer\nfreezers\nfreezes\nfreezing\nfreight\nfreighted\nfreighter\nfreighters\nfreighting\nfreights\nfremd\nfremitus\nfremituses\nfrena\nfrench\nfrenched\nfrenches\nfrenching\nfrenetic\nfrenetically\nfrenetics\nfrenula\nfrenulum\nfrenum\nfrenums\nfrenzied\nfrenziedly\nfrenzies\nfrenzily\nfrenzy\nfrenzying\nfrequencies\nfrequency\nfrequent\nfrequentation\nfrequentations\nfrequented\nfrequenter\nfrequenters\nfrequentest\nfrequenting\nfrequently\nfrequentness\nfrequents\nfrere\nfreres\nfresco\nfrescoed\nfrescoer\nfrescoers\nfrescoes\nfrescoing\nfrescos\nfresh\nfreshed\nfreshen\nfreshened\nfreshener\nfresheners\nfreshening\nfreshens\nfresher\nfreshes\nfreshest\nfreshet\nfreshets\nfreshing\nfreshly\nfreshman\nfreshmen\nfreshness\nfreshwater\nfreshwaters\nfresnel\nfresnels\nfret\nfretful\nfretfully\nfretfulness\nfretless\nfrets\nfretsaw\nfretsaws\nfretsome\nfretted\nfrettier\nfrettiest\nfretting\nfretty\nfretwork\nfretworks\nfriability\nfriable\nfriableness\nfriar\nfriaries\nfriarly\nfriars\nfriary\nfribble\nfribbled\nfribbler\nfribblers\nfribbles\nfribbling\nfricando\nfricandoes\nfricassee\nfricasseed\nfricasseeing\nfricassees\nfriction\nfrictional\nfrictionally\nfrictionless\nfrictions\nfridge\nfridges\nfried\nfriend\nfriended\nfriending\nfriendless\nfriendlier\nfriendlies\nfriendliest\nfriendliness\nfriendly\nfriends\nfriendship\nfriendships\nfrier\nfriers\nfries\nfrieze\nfriezes\nfrig\nfrigate\nfrigates\nfrigged\nfrigging\nfright\nfrighted\nfrighten\nfrightened\nfrightening\nfrighteningly\nfrightens\nfrightful\nfrightfully\nfrightfulness\nfrighting\nfrights\nfrigid\nfrigidity\nfrigidly\nfrigidness\nfrijol\nfrijole\nfrijoles\nfrill\nfrilled\nfriller\nfrillers\nfrillier\nfrilliest\nfrilling\nfrillings\nfrills\nfrilly\nfringe\nfringed\nfringes\nfringier\nfringiest\nfringing\nfringy\nfripperies\nfrippery\nfrise\nfrises\nfrisette\nfrisettes\nfriseur\nfriseurs\nfrisk\nfrisked\nfrisker\nfriskers\nfrisket\nfriskets\nfriskier\nfriskiest\nfriskily\nfriskiness\nfrisking\nfrisks\nfrisky\nfrisson\nfrissons\nfrit\nfrith\nfriths\nfrits\nfritt\nfritted\nfritter\nfrittered\nfritterer\nfritterers\nfrittering\nfritters\nfritting\nfritts\nfritz\nfrivol\nfrivoled\nfrivoler\nfrivolers\nfrivoling\nfrivolities\nfrivolity\nfrivolled\nfrivoller\nfrivollers\nfrivolling\nfrivolous\nfrivolously\nfrivolousness\nfrivols\nfriz\nfrized\nfrizer\nfrizers\nfrizes\nfrizette\nfrizettes\nfrizing\nfrizz\nfrizzed\nfrizzer\nfrizzers\nfrizzes\nfrizzier\nfrizziest\nfrizzily\nfrizzing\nfrizzle\nfrizzled\nfrizzler\nfrizzlers\nfrizzles\nfrizzlier\nfrizzliest\nfrizzling\nfrizzly\nfrizzy\nfro\nfrock\nfrocked\nfrocking\nfrocks\nfroe\nfroes\nfrog\nfrogeye\nfrogeyed\nfrogeyes\nfrogfish\nfrogfishes\nfrogged\nfroggier\nfroggiest\nfrogging\nfroggy\nfroglike\nfrogman\nfrogmen\nfrogs\nfrolic\nfrolicked\nfrolicking\nfrolicky\nfrolics\nfrolicsome\nfrom\nfromage\nfromages\nfromenties\nfromenty\nfrond\nfronded\nfrondeur\nfrondeurs\nfrondose\nfronds\nfrons\nfront\nfrontage\nfrontages\nfrontal\nfrontally\nfrontals\nfronted\nfronter\nfrontes\nfrontier\nfrontiers\nfrontiersman\nfrontiersmen\nfronting\nfrontispiece\nfrontispieces\nfrontlet\nfrontlets\nfrontline\nfronton\nfrontons\nfronts\nfrore\nfrosh\nfrost\nfrostbit\nfrostbite\nfrostbites\nfrostbiting\nfrostbitten\nfrosted\nfrosteds\nfrostier\nfrostiest\nfrostily\nfrostiness\nfrosting\nfrostings\nfrosts\nfrosty\nfroth\nfrothed\nfrothier\nfrothiest\nfrothily\nfrothiness\nfrothing\nfroths\nfrothy\nfrottage\nfrottages\nfrotteur\nfrotteurs\nfroufrou\nfroufrous\nfrounce\nfrounced\nfrounces\nfrouncing\nfrouzier\nfrouziest\nfrouzy\nfrow\nfroward\nfrowardly\nfrowardness\nfrown\nfrowned\nfrowner\nfrowners\nfrowning\nfrowningly\nfrowns\nfrows\nfrowsier\nfrowsiest\nfrowstier\nfrowstiest\nfrowsty\nfrowsy\nfrowzier\nfrowziest\nfrowzily\nfrowzy\nfroze\nfrozen\nfrozenly\nfrozenness\nfructification\nfructifications\nfructified\nfructifies\nfructify\nfructifying\nfructose\nfructoses\nfrug\nfrugal\nfrugality\nfrugally\nfrugged\nfrugging\nfrugs\nfruit\nfruitage\nfruitages\nfruitcake\nfruitcakes\nfruited\nfruiter\nfruiters\nfruitful\nfruitfuller\nfruitfullest\nfruitfully\nfruitfulness\nfruitier\nfruitiest\nfruitiness\nfruiting\nfruition\nfruitions\nfruitless\nfruitlessly\nfruitlessness\nfruitlet\nfruitlets\nfruits\nfruity\nfrumenties\nfrumenty\nfrump\nfrumpier\nfrumpiest\nfrumpily\nfrumpish\nfrumps\nfrumpy\nfrusta\nfrustrate\nfrustrated\nfrustrates\nfrustrating\nfrustratingly\nfrustration\nfrustrations\nfrustule\nfrustules\nfrustum\nfrustums\nfry\nfryer\nfryers\nfrying\nfrypan\nfrypans\nfub\nfubbed\nfubbing\nfubs\nfubsier\nfubsiest\nfubsy\nfuchsia\nfuchsias\nfuchsin\nfuchsine\nfuchsines\nfuchsins\nfuci\nfuck\nfucked\nfucking\nfucks\nfucoid\nfucoidal\nfucoids\nfucose\nfucoses\nfucous\nfucus\nfucuses\nfud\nfuddle\nfuddled\nfuddles\nfuddling\nfudge\nfudged\nfudges\nfudging\nfuds\nfuehrer\nfuehrers\nfuel\nfueled\nfueler\nfuelers\nfueling\nfuelled\nfueller\nfuellers\nfuelling\nfuels\nfug\nfugacities\nfugacity\nfugal\nfugally\nfugato\nfugatos\nfugged\nfuggier\nfuggiest\nfugging\nfuggy\nfugio\nfugios\nfugitive\nfugitively\nfugitiveness\nfugitives\nfugle\nfugled\nfugleman\nfuglemen\nfugles\nfugling\nfugs\nfugu\nfugue\nfugued\nfugues\nfuguing\nfuguist\nfuguists\nfugus\nfuhrer\nfuhrers\nfuji\nfujis\nfulcra\nfulcrum\nfulcrums\nfulfil\nfulfill\nfulfilled\nfulfiller\nfulfillers\nfulfilling\nfulfillment\nfulfillments\nfulfills\nfulfils\nfulgent\nfulgid\nfulham\nfulhams\nfull\nfullam\nfullams\nfullback\nfullbacks\nfulled\nfuller\nfullered\nfulleries\nfullering\nfullers\nfullery\nfullest\nfullface\nfullfaces\nfulling\nfullness\nfullnesses\nfulls\nfully\nfulmar\nfulmars\nfulminate\nfulminated\nfulminates\nfulminating\nfulmination\nfulminations\nfulminator\nfulminators\nfulmine\nfulmined\nfulmines\nfulminic\nfulmining\nfulness\nfulnesses\nfulsome\nfulsomely\nfulsomeness\nfulvous\nfumarase\nfumarases\nfumarate\nfumarates\nfumaric\nfumarole\nfumaroles\nfumatories\nfumatory\nfumble\nfumbled\nfumbler\nfumblers\nfumbles\nfumbling\nfumblingly\nfume\nfumed\nfumeless\nfumelike\nfumer\nfumers\nfumes\nfumet\nfumets\nfumette\nfumettes\nfumier\nfumiest\nfumigant\nfumigants\nfumigate\nfumigated\nfumigates\nfumigating\nfumigation\nfumigations\nfumigator\nfumigators\nfuming\nfumitories\nfumitory\nfumuli\nfumulus\nfumy\nfun\nfunction\nfunctional\nfunctionalism\nfunctionalist\nfunctionalistic\nfunctionalists\nfunctionality\nfunctionally\nfunctionaries\nfunctionary\nfunctioned\nfunctioning\nfunctionless\nfunctions\nfunctor\nfunctors\nfund\nfundament\nfundamental\nfundamentalism\nfundamentalisms\nfundamentalist\nfundamentalists\nfundamentally\nfundamentals\nfundaments\nfunded\nfundi\nfundic\nfunding\nfunds\nfundus\nfuneral\nfunerals\nfunerary\nfunereal\nfunereally\nfunest\nfunfair\nfunfairs\nfungal\nfungals\nfungi\nfungible\nfungibles\nfungic\nfungicidal\nfungicidally\nfungicide\nfungicides\nfungo\nfungoes\nfungoid\nfungoids\nfungous\nfungus\nfunguses\nfunicle\nfunicles\nfuniculi\nfunk\nfunked\nfunker\nfunkers\nfunkia\nfunkias\nfunkier\nfunkiest\nfunkiness\nfunking\nfunks\nfunky\nfunned\nfunnel\nfunneled\nfunneling\nfunnelled\nfunnelling\nfunnels\nfunnier\nfunnies\nfunniest\nfunnily\nfunniness\nfunning\nfunny\nfunnyman\nfunnymen\nfuns\nfur\nfuran\nfurane\nfuranes\nfuranose\nfuranoses\nfurans\nfurbelow\nfurbelowed\nfurbelowing\nfurbelows\nfurbish\nfurbished\nfurbisher\nfurbishers\nfurbishes\nfurbishing\nfurcate\nfurcated\nfurcates\nfurcating\nfurcraea\nfurcraeas\nfurcula\nfurculae\nfurcular\nfurculum\nfurfur\nfurfural\nfurfurals\nfurfuran\nfurfurans\nfurfures\nfuribund\nfuries\nfurioso\nfurious\nfuriously\nfurl\nfurlable\nfurled\nfurler\nfurlers\nfurless\nfurling\nfurlong\nfurlongs\nfurlough\nfurloughed\nfurloughing\nfurloughs\nfurls\nfurmenties\nfurmenty\nfurmeties\nfurmety\nfurmities\nfurmity\nfurnace\nfurnaced\nfurnaces\nfurnacing\nfurnish\nfurnished\nfurnisher\nfurnishers\nfurnishes\nfurnishing\nfurnishings\nfurniture\nfuror\nfurore\nfurores\nfurors\nfurred\nfurrier\nfurrieries\nfurriers\nfurriery\nfurriest\nfurrily\nfurriner\nfurriners\nfurring\nfurrings\nfurrow\nfurrowed\nfurrower\nfurrowers\nfurrowing\nfurrows\nfurrowy\nfurry\nfurs\nfurther\nfurtherance\nfurtherances\nfurthered\nfurtherer\nfurtherers\nfurthering\nfurthermore\nfurthermost\nfurthers\nfurthest\nfurtive\nfurtively\nfurtiveness\nfuruncle\nfuruncles\nfury\nfurze\nfurzes\nfurzier\nfurziest\nfurzy\nfusain\nfusains\nfuscous\nfuse\nfused\nfusee\nfusees\nfusel\nfuselage\nfuselages\nfuseless\nfusels\nfuses\nfusibility\nfusible\nfusibly\nfusiform\nfusil\nfusile\nfusileer\nfusileers\nfusilier\nfusiliers\nfusillade\nfusillades\nfusils\nfusing\nfusion\nfusions\nfuss\nfussbudget\nfussbudgets\nfussed\nfusser\nfussers\nfusses\nfussier\nfussiest\nfussily\nfussiness\nfussing\nfusspot\nfusspots\nfussy\nfustian\nfustians\nfustic\nfustics\nfustier\nfustiest\nfustily\nfusty\nfutharc\nfutharcs\nfuthark\nfutharks\nfuthorc\nfuthorcs\nfuthork\nfuthorks\nfuties\nfutile\nfutilely\nfutileness\nfutilitarian\nfutilitarianism\nfutilitarians\nfutilities\nfutility\nfuton\nfuttock\nfuttocks\nfutural\nfuture\nfutureless\nfutures\nfuturism\nfuturisms\nfuturist\nfuturistic\nfuturistically\nfuturists\nfuturities\nfuturity\nfuturological\nfuturologist\nfuturologists\nfuturology\nfutz\nfuze\nfuzed\nfuzee\nfuzees\nfuzes\nfuzil\nfuzils\nfuzing\nfuzz\nfuzzed\nfuzzes\nfuzzier\nfuzziest\nfuzzily\nfuzzing\nfuzzy\nfyce\nfyces\nfyke\nfykes\nfylfot\nfylfots\nfytte\nfyttes\ngab\ngabardine\ngabardines\ngabbard\ngabbards\ngabbart\ngabbarts\ngabbed\ngabber\ngabbers\ngabbier\ngabbiest\ngabbing\ngabble\ngabbled\ngabbler\ngabblers\ngabbles\ngabbling\ngabbro\ngabbroic\ngabbroid\ngabbros\ngabby\ngabelle\ngabelled\ngabelles\ngabfest\ngabfests\ngabies\ngabion\ngabions\ngable\ngabled\ngables\ngabling\ngaboon\ngaboons\ngabs\ngaby\ngad\ngadabout\ngadabouts\ngadarene\ngadded\ngadder\ngadders\ngaddi\ngadding\ngaddis\ngadflies\ngadfly\ngadget\ngadgeteer\ngadgeteers\ngadgetries\ngadgetry\ngadgets\ngadgety\ngadi\ngadid\ngadids\ngadis\ngadoid\ngadoids\ngadroon\ngadroons\ngads\ngadwall\ngadwalls\ngadzooks\ngae\ngaed\ngaen\ngaes\ngaff\ngaffe\ngaffed\ngaffer\ngaffers\ngaffes\ngaffing\ngaffs\ngag\ngaga\ngage\ngaged\ngager\ngagers\ngages\ngagged\ngagger\ngaggers\ngagging\ngaggle\ngaggled\ngaggles\ngaggling\ngaging\ngagman\ngagmen\ngags\ngagster\ngagsters\ngahnite\ngahnites\ngaieties\ngaiety\ngaily\ngain\ngainable\ngained\ngainer\ngainers\ngainful\ngainfully\ngainfulness\ngaining\ngainless\ngainlier\ngainliest\ngainly\ngains\ngainsaid\ngainsay\ngainsayer\ngainsayers\ngainsaying\ngainsays\ngainst\ngait\ngaited\ngaiter\ngaiters\ngaiting\ngaits\ngal\ngala\ngalactic\ngalactose\ngalago\ngalagos\ngalah\ngalahs\ngalangal\ngalangals\ngalas\ngalatea\ngalateas\ngalavant\ngalavanted\ngalavanting\ngalavants\ngalax\ngalaxes\ngalaxies\ngalaxy\ngalbanum\ngalbanums\ngale\ngalea\ngaleae\ngaleas\ngaleate\ngaleated\ngalena\ngalenas\ngalenic\ngalenical\ngalenicals\ngalenite\ngalenites\ngalere\ngaleres\ngales\ngalilee\ngalilees\ngaliot\ngaliots\ngalipot\ngalipots\ngalivant\ngalivanted\ngalivanting\ngalivants\ngall\ngallant\ngallanted\ngallanting\ngallantly\ngallantries\ngallantry\ngallants\ngallate\ngallates\ngalleass\ngalleasses\ngalled\ngallein\ngalleins\ngalleon\ngalleons\ngalleried\ngalleries\ngallery\ngallerying\ngalleta\ngalletas\ngalley\ngalleys\ngallflies\ngallfly\ngalliard\ngalliards\ngalliass\ngalliasses\ngallic\ngallican\ngallied\ngallies\ngalling\ngalliot\ngalliots\ngallipot\ngallipots\ngallium\ngalliums\ngallivant\ngallivanted\ngallivanting\ngallivants\ngallnut\ngallnuts\ngallon\ngallonage\ngallons\ngalloon\ngalloons\ngalloot\ngalloots\ngallop\ngallopade\ngallopades\ngalloped\ngalloper\ngallopers\ngalloping\ngallops\ngallous\ngallows\ngallowses\ngalls\ngallstone\ngallstones\ngallus\ngallused\ngalluses\ngally\ngallying\ngaloot\ngaloots\ngalop\ngalopade\ngalopades\ngalops\ngalore\ngalores\ngalosh\ngaloshe\ngaloshed\ngaloshes\ngals\ngalumph\ngalumphed\ngalumphing\ngalumphs\ngalvanic\ngalvanically\ngalvanism\ngalvanization\ngalvanize\ngalvanized\ngalvanizer\ngalvanizers\ngalvanizes\ngalvanizing\ngalvanometer\ngalvanometers\ngalvanometric\ngalvanometry\ngalyac\ngalyacs\ngalyak\ngalyaks\ngam\ngama\ngamas\ngamashes\ngamay\ngamb\ngamba\ngambade\ngambades\ngambado\ngambadoes\ngambados\ngambas\ngambe\ngambes\ngambeson\ngambesons\ngambia\ngambias\ngambier\ngambiers\ngambir\ngambirs\ngambit\ngambits\ngamble\ngambled\ngambler\ngamblers\ngambles\ngambling\ngamboge\ngamboges\ngambol\ngamboled\ngamboling\ngambolled\ngambolling\ngambols\ngambrel\ngambrels\ngambs\ngambusia\ngambusias\ngame\ngamecock\ngamecocks\ngamed\ngamekeeper\ngamekeepers\ngamelan\ngamelans\ngamelike\ngamely\ngameness\ngamenesses\ngamer\ngames\ngamesmanship\ngamesome\ngamesomely\ngamesomeness\ngamest\ngamester\ngamesters\ngamete\ngametes\ngametic\ngamey\ngamic\ngamier\ngamiest\ngamily\ngamin\ngamine\ngamines\ngaminess\ngaminesses\ngaming\ngamings\ngamins\ngamma\ngammadia\ngammas\ngammed\ngammer\ngammers\ngamming\ngammon\ngammoned\ngammoner\ngammoners\ngammoning\ngammons\ngammy\ngamodeme\ngamodemes\ngamp\ngamps\ngams\ngamut\ngamuts\ngamy\ngan\ngander\ngandered\ngandering\nganders\ngane\nganef\nganefs\nganev\nganevs\ngang\nganged\nganger\ngangers\nganging\ngangland\nganglands\nganglia\nganglial\ngangliar\nganglier\ngangliest\ngangling\nganglion\nganglions\ngangly\ngangplank\ngangplanks\ngangplow\ngangplows\ngangrel\ngangrels\ngangrene\ngangrened\ngangrenes\ngangrening\ngangrenous\ngangs\ngangster\ngangsters\ngangue\ngangues\ngangway\ngangways\nganister\nganisters\nganja\nganjas\ngannet\ngannets\nganof\nganofs\nganoid\nganoids\ngantlet\ngantleted\ngantleting\ngantlets\ngantline\ngantlines\ngantlope\ngantlopes\ngantries\ngantry\nganymede\nganymedes\ngaol\ngaoled\ngaoler\ngaolers\ngaoling\ngaols\ngap\ngape\ngaped\ngaper\ngapers\ngapes\ngapeseed\ngapeseeds\ngapeworm\ngapeworms\ngaping\ngapingly\ngaposis\ngaposises\ngapped\ngappier\ngappiest\ngapping\ngappy\ngaps\ngapy\ngar\ngarage\ngaraged\ngarages\ngaraging\ngarb\ngarbage\ngarbages\ngarbanzo\ngarbanzos\ngarbed\ngarbing\ngarble\ngarbled\ngarbler\ngarblers\ngarbles\ngarbless\ngarbling\ngarboard\ngarboards\ngarboil\ngarboils\ngarbs\ngarcon\ngarcons\ngardant\ngarden\ngardened\ngardener\ngardeners\ngardenia\ngardenias\ngardening\ngardens\ngardyloo\ngarfish\ngarfishes\ngarganey\ngarganeys\ngargantuan\ngarget\ngargets\ngargety\ngargle\ngargled\ngargler\ngarglers\ngargles\ngargling\ngargoyle\ngargoyled\ngargoyles\ngarish\ngarishly\ngarishness\ngarland\ngarlanded\ngarlanding\ngarlands\ngarlic\ngarlicky\ngarlics\ngarment\ngarmented\ngarmenting\ngarments\ngarner\ngarnered\ngarnering\ngarners\ngarnet\ngarnets\ngarni\ngarnish\ngarnished\ngarnishee\ngarnisheed\ngarnisheeing\ngarnishees\ngarnishes\ngarnishing\ngarnishment\ngarnishments\ngarniture\ngarnitures\ngarote\ngaroted\ngarotes\ngaroting\ngarotte\ngarotted\ngarotter\ngarotters\ngarottes\ngarotting\ngarpike\ngarpikes\ngarred\ngarret\ngarrets\ngarring\ngarrison\ngarrisoned\ngarrisoning\ngarrisons\ngarron\ngarrons\ngarrote\ngarroted\ngarroter\ngarroters\ngarrotes\ngarroting\ngarrotte\ngarrotted\ngarrottes\ngarrotting\ngarrulity\ngarrulous\ngarrulously\ngarrulousness\ngars\ngarter\ngartered\ngartering\ngarters\ngarth\ngarths\ngarvey\ngarveys\ngas\ngasalier\ngasaliers\ngasbag\ngasbags\ngascon\ngasconade\ngasconaded\ngasconader\ngasconaders\ngasconades\ngasconading\ngascons\ngaselier\ngaseliers\ngaseous\ngases\ngash\ngashed\ngasher\ngashes\ngashest\ngashing\ngashouse\ngashouses\ngasification\ngasifications\ngasified\ngasifier\ngasifiers\ngasifies\ngasiform\ngasify\ngasifying\ngasket\ngaskets\ngaskin\ngasking\ngaskings\ngaskins\ngasless\ngaslight\ngaslights\ngaslit\ngasman\ngasmen\ngasogene\ngasogenes\ngasolene\ngasolenes\ngasolier\ngasoliers\ngasoline\ngasolines\ngasolinic\ngasometer\ngasometers\ngasp\ngasped\ngasper\ngaspers\ngasping\ngaspingly\ngasps\ngassed\ngasser\ngassers\ngasses\ngassier\ngassiest\ngassing\ngassings\ngassy\ngast\ngasted\ngastight\ngasting\ngastness\ngastnesses\ngastraea\ngastraeas\ngastral\ngastrea\ngastreas\ngastric\ngastrin\ngastrins\ngastroenterologist\ngastroenterologists\ngastroenterology\ngastronome\ngastronomes\ngastronomic\ngastronomical\ngastronomically\ngastronomist\ngastronomists\ngastronomy\ngastropod\ngastropods\ngastrula\ngastrulae\ngastrulas\ngastrulation\ngastrulations\ngasts\ngasworks\ngat\ngate\ngatecrasher\ngatecrashers\ngated\ngatefold\ngatefolds\ngateless\ngatelike\ngateman\ngatemen\ngatepost\ngateposts\ngates\ngateway\ngateways\ngather\ngathered\ngatherer\ngatherers\ngathering\ngatherings\ngathers\ngating\ngator\ngats\ngauche\ngauchely\ngaucheness\ngaucher\ngaucherie\ngaucheries\ngauchest\ngaucho\ngauchos\ngaud\ngauderies\ngaudery\ngaudier\ngaudies\ngaudiest\ngaudily\ngaudiness\ngauds\ngaudy\ngauffer\ngauffered\ngauffering\ngauffers\ngauge\ngaugeable\ngaugeably\ngauged\ngauger\ngaugers\ngauges\ngauging\ngault\ngaults\ngaum\ngaumed\ngauming\ngaums\ngaun\ngaunt\ngaunter\ngauntest\ngauntlet\ngauntleted\ngauntleting\ngauntlets\ngauntly\ngauntness\ngauntries\ngauntry\ngaur\ngaurs\ngauss\ngausses\ngauze\ngauzelike\ngauzes\ngauzier\ngauziest\ngauzily\ngauzy\ngavage\ngavages\ngave\ngavel\ngaveled\ngaveling\ngavelled\ngavelling\ngavelock\ngavelocks\ngavels\ngavial\ngavials\ngavot\ngavots\ngavotte\ngavotted\ngavottes\ngavotting\ngawk\ngawked\ngawker\ngawkers\ngawkier\ngawkies\ngawkiest\ngawkily\ngawking\ngawkish\ngawkishly\ngawkishness\ngawks\ngawky\ngawp\ngawps\ngawsie\ngawsy\ngay\ngayal\ngayals\ngayer\ngayest\ngayeties\ngayety\ngayly\ngayness\ngaynesses\ngays\ngaywings\ngazabo\ngazaboes\ngazabos\ngaze\ngazebo\ngazeboes\ngazebos\ngazed\ngazelle\ngazelles\ngazer\ngazers\ngazes\ngazette\ngazetted\ngazetteer\ngazetteers\ngazettes\ngazetting\ngazing\ngazogene\ngazogenes\ngazpacho\ngazpachos\ngear\ngearbox\ngearboxes\ngearcase\ngearcases\ngeared\ngearing\ngearings\ngearless\ngears\ngearshift\ngearshifts\ngearwheel\ngearwheels\ngeck\ngecked\ngecking\ngecko\ngeckoes\ngeckos\ngecks\nged\ngeds\ngee\ngeed\ngeegaw\ngeegaws\ngeeing\ngeek\ngeeks\ngeeky\ngeepound\ngeepounds\ngees\ngeese\ngeest\ngeests\ngeezer\ngeezers\ngeisha\ngeishas\ngel\ngelable\ngelada\ngeladas\ngelant\ngelants\ngelate\ngelated\ngelates\ngelatin\ngelatine\ngelatines\ngelating\ngelatinization\ngelatinizations\ngelatinize\ngelatinized\ngelatinizes\ngelatinizing\ngelatinous\ngelatinously\ngelatinousness\ngelatins\ngelation\ngelations\ngeld\ngelded\ngelder\ngelders\ngelding\ngeldings\ngelds\ngelee\ngelees\ngelid\ngelidities\ngelidity\ngelidly\ngellant\ngellants\ngelled\ngelling\ngels\ngelsemia\ngelt\ngelts\ngem\ngeminal\ngeminate\ngeminated\ngeminates\ngeminating\ngemination\ngeminations\ngemlike\ngemma\ngemmae\ngemmate\ngemmated\ngemmates\ngemmating\ngemmed\ngemmier\ngemmiest\ngemmily\ngemming\ngemmule\ngemmules\ngemmy\ngemologies\ngemology\ngemot\ngemote\ngemotes\ngemots\ngems\ngemsbok\ngemsboks\ngemsbuck\ngemsbucks\ngemstone\ngemstones\ngendarme\ngendarmes\ngender\ngendered\ngendering\ngenders\ngene\ngenealogical\ngenealogically\ngenealogies\ngenealogist\ngenealogists\ngenealogy\ngenera\ngeneral\ngeneralissimo\ngeneralissimos\ngeneralist\ngeneralists\ngeneralities\ngenerality\ngeneralizable\ngeneralization\ngeneralizations\ngeneralize\ngeneralized\ngeneralizer\ngeneralizers\ngeneralizes\ngeneralizing\ngenerally\ngenerals\ngenerate\ngenerated\ngenerates\ngenerating\ngeneration\ngenerational\ngenerations\ngenerative\ngenerator\ngenerators\ngeneric\ngenerically\ngenerics\ngenerosities\ngenerosity\ngenerous\ngenerously\ngenerousness\ngenes\ngeneses\ngenesis\ngenet\ngenetic\ngenetical\ngenetically\ngeneticist\ngeneticists\ngenetics\ngenets\ngenette\ngenettes\ngeneva\ngenevas\ngenial\ngenialities\ngeniality\ngenially\ngenic\ngenie\ngenies\ngenii\ngenip\ngenipap\ngenipaps\ngenips\ngenital\ngenitalia\ngenitals\ngenitival\ngenitivally\ngenitive\ngenitives\ngenitor\ngenitors\ngeniture\ngenitures\ngenius\ngeniuses\ngenoa\ngenoas\ngenocidal\ngenocide\ngenocides\ngenom\ngenome\ngenomes\ngenomic\ngenoms\ngenotype\ngenotypes\ngenotypic\ngenotypical\ngenotypically\ngenre\ngenres\ngenro\ngenros\ngens\ngenseng\ngensengs\ngent\ngenteel\ngenteeler\ngenteelest\ngenteelism\ngenteelisms\ngenteelly\ngenteelness\ngentes\ngentian\ngentians\ngentil\ngentile\ngentiles\ngentilities\ngentility\ngentle\ngentled\ngentleman\ngentlemanly\ngentlemen\ngentleness\ngentler\ngentles\ngentlest\ngentlewoman\ngentlewomen\ngentling\ngently\ngentrice\ngentrices\ngentries\ngentry\ngents\ngenu\ngenua\ngenuflect\ngenuflected\ngenuflecting\ngenuflection\ngenuflections\ngenuflects\ngenuine\ngenuinely\ngenuineness\ngenus\ngenuses\ngeocentric\ngeocentrically\ngeode\ngeodes\ngeodesic\ngeodesics\ngeodesies\ngeodesist\ngeodesists\ngeodesy\ngeodetic\ngeodetical\ngeodic\ngeoduck\ngeoducks\ngeognosies\ngeognosy\ngeographer\ngeographers\ngeographic\ngeographical\ngeographically\ngeographies\ngeography\ngeoid\ngeoidal\ngeoids\ngeologer\ngeologers\ngeologic\ngeological\ngeologically\ngeologies\ngeologist\ngeologists\ngeologize\ngeologized\ngeologizes\ngeologizing\ngeology\ngeomancies\ngeomancy\ngeometer\ngeometers\ngeometric\ngeometrical\ngeometrically\ngeometrician\ngeometricians\ngeometries\ngeometrize\ngeometrized\ngeometrizes\ngeometrizing\ngeometry\ngeophagies\ngeophagy\ngeophone\ngeophones\ngeophysicist\ngeophysicists\ngeophyte\ngeophytes\ngeopolitical\ngeopolitically\ngeopolitician\ngeopoliticians\ngeopolitics\ngeoponic\ngeorgic\ngeorgics\ngeotaxes\ngeotaxis\ngeotropic\ngeotropically\ngeotropism\ngeotropisms\ngerah\ngerahs\ngeranial\ngeranials\ngeraniol\ngeraniols\ngeranium\ngeraniums\ngerardia\ngerardias\ngerbera\ngerberas\ngerbil\ngerbille\ngerbilles\ngerbils\ngerent\ngerents\ngerenuk\ngerenuks\ngeriatric\ngeriatrician\ngeriatricians\ngeriatrics\ngeriatrist\ngeriatrists\ngerm\ngerman\ngermander\ngermanders\ngermane\ngermanely\ngermanic\ngermanium\ngermanization\ngermanizations\ngermanize\ngermanized\ngermanizes\ngermanizing\ngermanophobe\ngermanophobes\ngermanous\ngermans\ngermen\ngermens\ngermfree\ngermicidal\ngermicide\ngermicides\ngermier\ngermiest\ngermina\ngerminal\ngerminally\ngerminate\ngerminated\ngerminates\ngerminating\ngermination\ngerminations\ngerms\ngermy\ngerontic\ngerontologist\ngerontologists\ngerontology\ngerrymander\ngerrymandered\ngerrymandering\ngerrymanders\ngerund\ngerundive\ngerundives\ngerunds\ngesso\ngessoes\ngest\ngestalt\ngestalten\ngestalts\ngestapo\ngestapos\ngestate\ngestated\ngestates\ngestating\ngestation\ngestational\ngestations\ngeste\ngestes\ngestic\ngestical\ngesticulate\ngesticulated\ngesticulates\ngesticulating\ngesticulation\ngesticulations\ngesticulative\ngesticulator\ngesticulators\ngesticulatory\ngests\ngestural\ngesture\ngestured\ngesturer\ngesturers\ngestures\ngesturing\ngesundheit\nget\ngeta\ngetable\ngetas\ngetaway\ngetaways\ngets\ngettable\ngetter\ngettered\ngettering\ngetters\ngetting\ngetup\ngetups\ngeum\ngeums\ngewgaw\ngewgaws\ngey\ngeyser\ngeyserite\ngeyserites\ngeysers\ngharri\ngharries\ngharris\ngharry\nghast\nghastful\nghastlier\nghastliest\nghastliness\nghastly\nghat\nghats\nghaut\nghauts\nghazi\nghazies\nghazis\nghee\nghees\ngherao\ngheraoed\ngheraoes\ngheraoing\ngherkin\ngherkins\nghetto\nghettoed\nghettoes\nghettoing\nghettos\nghi\nghibli\nghiblis\nghillie\nghillies\nghis\nghost\nghosted\nghostier\nghostiest\nghosting\nghostlier\nghostliest\nghostlike\nghostly\nghosts\nghostwrite\nghostwriter\nghostwriters\nghostwrites\nghostwriting\nghostwritten\nghostwrote\nghosty\nghoul\nghoulish\nghoulishly\nghoulishness\nghouls\nghyll\nghylls\ngiant\ngiantess\ngiantesses\ngiantism\ngiantisms\ngiantlike\ngiants\ngiaour\ngiaours\ngib\ngibbed\ngibber\ngibbered\ngibbering\ngibberish\ngibbers\ngibbet\ngibbeted\ngibbeting\ngibbets\ngibbetted\ngibbetting\ngibbing\ngibbon\ngibbons\ngibbose\ngibbous\ngibbously\ngibbousness\ngibbsite\ngibbsites\ngibe\ngibed\ngiber\ngibers\ngibes\ngibing\ngibingly\ngiblet\ngiblets\ngibs\ngid\ngiddap\ngiddied\ngiddier\ngiddies\ngiddiest\ngiddily\ngiddiness\ngiddy\ngiddying\ngids\ngie\ngied\ngieing\ngien\ngies\ngift\ngifted\ngiftedly\ngiftedness\ngifting\ngiftless\ngifts\ngig\ngiga\ngigabit\ngigabits\ngigantic\ngigantically\ngigantism\ngigas\ngigaton\ngigatons\ngigawatt\ngigawatts\ngigged\ngigging\ngiggle\ngiggled\ngiggler\ngigglers\ngiggles\ngigglier\ngiggliest\ngiggling\ngiggly\ngighe\ngiglet\ngiglets\ngiglot\ngiglots\ngigolo\ngigolos\ngigot\ngigots\ngigs\ngigue\ngigues\ngilbert\ngilberts\ngild\ngilded\ngilder\ngilders\ngildhall\ngildhalls\ngilding\ngildings\ngilds\ngill\ngilled\ngiller\ngillers\ngillie\ngillied\ngillies\ngilling\ngillnet\ngillnets\ngillnetted\ngillnetting\ngills\ngilly\ngillying\ngilt\ngilthead\ngiltheads\ngilts\ngimbal\ngimbaled\ngimbaling\ngimballed\ngimballing\ngimbals\ngimcrack\ngimcrackeries\ngimcrackery\ngimcracks\ngimel\ngimels\ngimlet\ngimleted\ngimleting\ngimlets\ngimmal\ngimmals\ngimme\ngimmick\ngimmicked\ngimmicking\ngimmickries\ngimmickry\ngimmicks\ngimmicky\ngimp\ngimped\ngimpier\ngimpiest\ngimping\ngimps\ngimpy\ngin\ngingal\ngingall\ngingalls\ngingals\ngingeley\ngingeleys\ngingeli\ngingelies\ngingelis\ngingellies\ngingelly\ngingely\nginger\ngingerbread\ngingerbreads\ngingered\ngingering\ngingerly\ngingers\ngingery\ngingham\nginghams\ngingili\ngingilis\ngingiva\ngingivae\ngingival\ngingivitis\ngingko\ngingkoes\ngink\nginkgo\nginkgoes\nginks\nginned\nginner\nginners\nginnier\nginniest\nginning\nginnings\nginny\ngins\nginseng\nginsengs\ngip\ngipon\ngipons\ngipped\ngipper\ngippers\ngipping\ngips\ngipsied\ngipsies\ngipsy\ngipsying\ngiraffe\ngiraffes\ngirasol\ngirasole\ngirasoles\ngirasols\ngird\ngirded\ngirder\ngirders\ngirding\ngirdle\ngirdled\ngirdler\ngirdlers\ngirdles\ngirdling\ngirds\ngirl\ngirlfriend\ngirlfriends\ngirlhood\ngirlhoods\ngirlie\ngirlies\ngirlish\ngirlishly\ngirlishness\ngirls\ngirly\ngirn\ngirned\ngirning\ngirns\ngiro\ngiron\ngirons\ngiros\ngirosol\ngirosols\ngirsh\ngirshes\ngirt\ngirted\ngirth\ngirthed\ngirthing\ngirths\ngirting\ngirts\ngisarme\ngisarmes\ngismo\ngismos\ngist\ngists\ngit\ngitano\ngitanos\ngittern\ngitterns\ngive\ngiveable\ngiveaway\ngiveaways\ngiven\ngivens\ngiver\ngivers\ngives\ngiving\ngizmo\ngizmos\ngizzard\ngizzards\ngjetost\ngjetosts\nglabella\nglabellae\nglabrate\nglabrous\nglace\nglaceed\nglaceing\nglaces\nglacial\nglacially\nglaciate\nglaciated\nglaciates\nglaciating\nglaciation\nglaciations\nglacier\nglaciered\nglaciers\nglaciological\nglaciologist\nglaciologists\nglaciology\nglacis\nglacises\nglad\ngladded\ngladden\ngladdened\ngladdening\ngladdens\ngladder\ngladdest\ngladding\nglade\nglades\ngladiate\ngladiator\ngladiatorial\ngladiators\ngladier\ngladiest\ngladiola\ngladiolas\ngladioli\ngladiolus\ngladioluses\ngladlier\ngladliest\ngladly\ngladness\ngladnesses\nglads\ngladsome\ngladsomely\ngladsomeness\ngladsomer\ngladsomest\nglady\nglaiket\nglaikit\nglair\nglaire\nglaired\nglaires\nglairier\nglairiest\nglairing\nglairs\nglairy\nglaive\nglaived\nglaives\nglamor\nglamorization\nglamorizations\nglamorize\nglamorized\nglamorizes\nglamorizing\nglamorless\nglamorous\nglamorously\nglamorousness\nglamors\nglamour\nglamoured\nglamouring\nglamourization\nglamourizations\nglamourize\nglamourized\nglamourizes\nglamourizing\nglamourless\nglamourous\nglamourously\nglamourousness\nglamours\nglance\nglanced\nglances\nglancing\nglancingly\ngland\nglanders\nglandes\nglandless\nglands\nglandular\nglandularly\nglandule\nglandules\nglans\nglare\nglared\nglares\nglarier\nglariest\nglaring\nglaringly\nglaringness\nglary\nglass\nglassblower\nglassblowers\nglassblowing\nglassed\nglasses\nglassful\nglassfuls\nglasshouse\nglasshouses\nglassie\nglassier\nglassies\nglassiest\nglassily\nglassine\nglassines\nglassiness\nglassing\nglassless\nglassman\nglassmen\nglassware\nglasswares\nglassy\nglaucoma\nglaucomas\nglaucous\nglaze\nglazed\nglazer\nglazers\nglazes\nglazier\nglazieries\nglaziers\nglaziery\nglaziest\nglazing\nglazings\nglazy\ngleam\ngleamed\ngleamier\ngleamiest\ngleaming\ngleams\ngleamy\nglean\ngleanable\ngleaned\ngleaner\ngleaners\ngleaning\ngleanings\ngleans\ngleba\nglebae\nglebe\nglebes\ngled\nglede\ngledes\ngleds\nglee\ngleed\ngleeds\ngleeful\ngleefully\ngleefulness\ngleek\ngleeked\ngleeking\ngleeks\ngleeman\ngleemen\nglees\ngleesome\ngleet\ngleeted\ngleetier\ngleetiest\ngleeting\ngleets\ngleety\ngleg\nglegly\nglegness\nglegnesses\nglen\nglenlike\nglenoid\nglens\ngley\ngleys\nglia\ngliadin\ngliadine\ngliadines\ngliadins\nglial\nglias\nglib\nglibber\nglibbest\nglibly\nglibness\nglibnesses\nglide\nglided\nglider\ngliders\nglides\ngliding\ngliff\ngliffs\nglim\nglime\nglimed\nglimes\ngliming\nglimmer\nglimmered\nglimmering\nglimmers\nglimpse\nglimpsed\nglimpser\nglimpsers\nglimpses\nglimpsing\nglims\nglint\nglinted\nglinting\nglints\nglioma\ngliomas\ngliomata\nglissade\nglissaded\nglissader\nglissaders\nglissades\nglissading\nglisten\nglistened\nglistening\nglistens\nglister\nglistered\nglistering\nglisters\nglitch\nglitches\nglitter\nglittered\nglittering\nglitteringly\nglitters\nglittery\nglitz\ngloam\ngloaming\ngloamings\ngloams\ngloat\ngloated\ngloater\ngloaters\ngloating\ngloatingly\ngloats\nglob\nglobal\nglobally\nglobate\nglobated\nglobe\nglobed\nglobes\nglobin\nglobing\nglobins\ngloboid\ngloboids\nglobose\nglobous\nglobs\nglobular\nglobule\nglobules\nglobulin\nglobulins\nglochid\nglochids\nglockenspiel\nglockenspiels\nglogg\ngloggs\nglom\nglomera\nglommed\nglomming\ngloms\nglomus\ngloom\ngloomed\ngloomful\ngloomier\ngloomiest\ngloomily\ngloominess\nglooming\ngloomings\nglooms\ngloomy\nglop\nglops\ngloria\nglorias\ngloried\nglories\nglorification\nglorifications\nglorified\nglorifier\nglorifiers\nglorifies\nglorify\nglorifying\ngloriole\nglorioles\nglorious\ngloriously\ngloriousness\nglory\nglorying\ngloss\nglossa\nglossae\nglossal\nglossaries\nglossarist\nglossarists\nglossary\nglossas\nglossed\nglosseme\nglossemes\nglosser\nglossers\nglosses\nglossier\nglossies\nglossiest\nglossily\nglossina\nglossinas\nglossiness\nglossing\nglossy\nglost\nglosts\nglottal\nglottic\nglottides\nglottis\nglottises\nglout\nglouted\nglouting\nglouts\nglove\ngloved\nglover\nglovers\ngloves\ngloving\nglow\nglowed\nglower\nglowered\nglowering\nglowers\nglowflies\nglowfly\nglowing\nglowingly\nglows\nglowworm\nglowworms\ngloxinia\ngloxinias\ngloze\nglozed\nglozes\nglozing\nglucagon\nglucagons\nglucinic\nglucinum\nglucinums\nglucose\nglucoses\nglucosic\nglue\nglued\nglueing\ngluelike\ngluer\ngluers\nglues\ngluey\nglug\nglugs\ngluier\ngluiest\ngluily\ngluing\nglum\nglume\nglumes\nglumly\nglummer\nglummest\nglumness\nglumnesses\nglumpier\nglumpiest\nglumpily\nglumpy\nglunch\nglunched\nglunches\nglunching\ngluon\nglut\ngluteal\nglutei\nglutelin\nglutelins\ngluten\nglutenous\nglutens\ngluteus\nglutinous\nglutinously\ngluts\nglutted\nglutting\nglutton\ngluttonies\ngluttonous\ngluttonously\ngluttonousness\ngluttons\ngluttony\nglycan\nglycans\nglyceric\nglyceride\nglycerides\nglycerin\nglycerinate\nglycerinated\nglycerinates\nglycerinating\nglycerine\nglycerines\nglycerins\nglycerol\nglycerols\nglyceryl\nglyceryls\nglycin\nglycine\nglycines\nglycins\nglycogen\nglycogens\nglycol\nglycolic\nglycols\nglyconic\nglyconics\nglycosyl\nglycosyls\nglycyl\nglycyls\nglyph\nglyphic\nglyphs\nglyptic\nglyptics\ngnar\ngnarl\ngnarled\ngnarlier\ngnarliest\ngnarling\ngnarls\ngnarly\ngnarr\ngnarred\ngnarring\ngnarrs\ngnars\ngnash\ngnashed\ngnashes\ngnashing\ngnat\ngnathal\ngnathic\ngnathion\ngnathions\ngnathite\ngnathites\ngnatlike\ngnats\ngnattier\ngnattiest\ngnatty\ngnaw\ngnawable\ngnawed\ngnawer\ngnawers\ngnawing\ngnawings\ngnawn\ngnaws\ngneiss\ngneisses\ngneissic\ngnocchi\ngnome\ngnomes\ngnomic\ngnomical\ngnomish\ngnomist\ngnomists\ngnomon\ngnomonic\ngnomons\ngnoses\ngnosis\ngnostic\ngnosticism\ngnu\ngnus\ngo\ngoa\ngoad\ngoaded\ngoading\ngoadlike\ngoads\ngoal\ngoaled\ngoalie\ngoalies\ngoaling\ngoalkeeper\ngoalkeepers\ngoalless\ngoalpost\ngoalposts\ngoals\ngoas\ngoat\ngoatee\ngoateed\ngoatees\ngoatfish\ngoatfishes\ngoatherd\ngoatherds\ngoatish\ngoatlike\ngoats\ngoatskin\ngoatskins\ngob\ngoban\ngobang\ngobangs\ngobans\ngobbed\ngobbet\ngobbets\ngobbing\ngobble\ngobbled\ngobbledegook\ngobbledygook\ngobbler\ngobblers\ngobbles\ngobbling\ngobies\ngobioid\ngobioids\ngoblet\ngoblets\ngoblin\ngoblins\ngobo\ngoboes\ngobonee\ngobony\ngobos\ngobs\ngoby\ngod\ngodchild\ngodchildren\ngoddam\ngoddammed\ngoddamming\ngoddamn\ngoddamned\ngoddamning\ngoddamns\ngoddams\ngoddaughter\ngoddaughters\ngodded\ngoddess\ngoddesses\ngodding\ngodfather\ngodfathered\ngodfathering\ngodfathers\ngodhead\ngodheads\ngodhood\ngodhoods\ngodless\ngodlessness\ngodlier\ngodliest\ngodlike\ngodlikeness\ngodlily\ngodliness\ngodling\ngodlings\ngodly\ngodmother\ngodmothers\ngodown\ngodowns\ngodparent\ngodparents\ngodroon\ngodroons\ngods\ngodsend\ngodsends\ngodship\ngodships\ngodson\ngodsons\ngodwit\ngodwits\ngoer\ngoers\ngoes\ngoethite\ngoethites\ngofer\ngoffer\ngoffered\ngoffering\ngoffers\ngoggle\ngoggled\ngoggler\ngogglers\ngoggles\ngogglier\ngoggliest\ngoggling\ngoggly\ngoglet\ngoglets\ngogo\ngogos\ngoing\ngoings\ngoiter\ngoiters\ngoitre\ngoitres\ngoitrous\ngolconda\ngolcondas\ngold\ngoldarn\ngoldarns\ngoldbug\ngoldbugs\ngolden\ngoldener\ngoldenest\ngoldenly\ngoldenness\ngolder\ngoldest\ngoldeye\ngoldeyes\ngoldfield\ngoldfields\ngoldfinch\ngoldfinches\ngoldfish\ngoldfishes\ngolds\ngoldsmith\ngoldsmiths\ngoldurn\ngoldurns\ngolem\ngolems\ngolf\ngolfed\ngolfer\ngolfers\ngolfing\ngolfings\ngolfs\ngolgotha\ngolgothas\ngoliard\ngoliards\ngolliwog\ngolliwogs\ngolly\ngolosh\ngoloshes\ngombo\ngombos\ngombroon\ngombroons\ngomeral\ngomerals\ngomerel\ngomerels\ngomeril\ngomerils\ngomuti\ngomutis\ngonad\ngonadal\ngonadial\ngonadic\ngonads\ngondola\ngondolas\ngondolier\ngondoliers\ngone\ngonef\ngoneness\ngonenesses\ngoner\ngoners\ngonfalon\ngonfalons\ngonfanon\ngonfanons\ngong\ngonged\ngonging\ngonglike\ngongs\ngonia\ngonidia\ngonidial\ngonidic\ngonidium\ngonif\ngonifs\ngonion\ngonium\ngonocyte\ngonocytes\ngonof\ngonofs\ngonoph\ngonophs\ngonopore\ngonopores\ngonorrhea\ngonorrheal\ngonzo\ngoo\ngoober\ngoobers\ngood\ngoodby\ngoodbye\ngoodbyes\ngoodbys\ngoodies\ngoodish\ngoodlier\ngoodliest\ngoodly\ngoodman\ngoodmen\ngoodness\ngoodnesses\ngoods\ngoodwife\ngoodwill\ngoodwills\ngoodwives\ngoody\ngooey\ngoof\ngoofball\ngoofballs\ngoofed\ngoofier\ngoofiest\ngoofily\ngoofiness\ngoofing\ngoofs\ngoofy\ngooglies\ngoogly\ngoogol\ngoogols\ngooier\ngooiest\ngook\ngooks\ngooky\ngoon\ngooney\ngooneys\ngoonie\ngoonies\ngoons\ngoony\ngoop\ngoops\ngoopy\ngooral\ngoorals\ngoos\ngoose\ngooseberries\ngooseberry\ngoosed\ngooseflesh\ngooseneck\ngoosenecked\ngoosenecks\ngooses\ngoosey\ngoosier\ngoosiest\ngoosing\ngoosy\ngopher\ngophers\ngor\ngoral\ngorals\ngorbellies\ngorbelly\ngorblimy\ngorcock\ngorcocks\ngore\ngored\ngores\ngorge\ngorged\ngorgedly\ngorgeous\ngorgeously\ngorgeousness\ngorger\ngorgerin\ngorgerins\ngorgers\ngorges\ngorget\ngorgeted\ngorgets\ngorging\ngorgon\ngorgons\ngorhen\ngorhens\ngorier\ngoriest\ngorilla\ngorillas\ngorily\ngoriness\ngorinesses\ngoring\ngormand\ngormandize\ngormandized\ngormandizer\ngormandizers\ngormandizes\ngormandizing\ngormands\ngorp\ngorps\ngorse\ngorses\ngorsier\ngorsiest\ngorsy\ngory\ngosh\ngoshawk\ngoshawks\ngosling\ngoslings\ngospel\ngospeler\ngospelers\ngospeller\ngospellers\ngospels\ngosport\ngosports\ngossamer\ngossamers\ngossamery\ngossan\ngossans\ngossip\ngossiped\ngossiper\ngossipers\ngossiping\ngossipped\ngossipping\ngossipries\ngossipry\ngossips\ngossipy\ngossoon\ngossoons\ngossypol\ngossypols\ngot\ngothic\ngothically\ngothicize\ngothicized\ngothicizes\ngothicizing\ngothics\ngothite\ngothites\ngotten\ngouache\ngouaches\ngouge\ngouged\ngouger\ngougers\ngouges\ngouging\ngoulash\ngoulashes\ngourami\ngouramis\ngourd\ngourde\ngourdes\ngourds\ngourmand\ngourmandism\ngourmands\ngourmet\ngourmets\ngout\ngoutier\ngoutiest\ngoutily\ngouts\ngouty\ngovern\ngovernable\ngovernance\ngovernances\ngoverned\ngoverness\ngovernesses\ngoverning\ngovernment\ngovernmental\ngovernmentally\ngovernments\ngovernor\ngovernorate\ngovernorates\ngovernors\ngovernorship\ngovernorships\ngoverns\ngowan\ngowaned\ngowans\ngowany\ngowd\ngowds\ngowk\ngowks\ngown\ngowned\ngowning\ngowns\ngownsman\ngownsmen\ngox\ngoxes\ngoy\ngoyim\ngoyish\ngoys\ngraal\ngraals\ngrab\ngrabbed\ngrabber\ngrabbers\ngrabbier\ngrabbiest\ngrabbing\ngrabble\ngrabbled\ngrabbler\ngrabblers\ngrabbles\ngrabbling\ngrabby\ngraben\ngrabens\ngrabs\ngrace\ngraced\ngraceful\ngracefuller\ngracefullest\ngracefully\ngracefulness\ngraceless\ngracelessly\ngracelessness\ngraces\ngracile\ngracileness\ngraciles\ngracilis\ngracility\ngracing\ngracioso\ngraciosos\ngracious\ngraciously\ngraciousness\ngrackle\ngrackles\ngrad\ngradable\ngradate\ngradated\ngradates\ngradating\ngradation\ngradational\ngradationally\ngradations\ngrade\ngraded\ngrader\ngraders\ngrades\ngradient\ngradients\ngradin\ngradine\ngradines\ngrading\ngradins\ngrads\ngradual\ngradualism\ngradualist\ngradualists\ngradually\ngradualness\ngraduals\ngraduand\ngraduands\ngraduate\ngraduated\ngraduates\ngraduating\ngraduation\ngraduations\ngradus\ngraduses\ngraecize\ngraecized\ngraecizes\ngraecizing\ngraffiti\ngraffito\ngraft\ngraftage\ngraftages\ngrafted\ngrafter\ngrafters\ngrafting\ngrafts\ngraham\ngrail\ngrails\ngrain\ngrained\ngrainer\ngrainers\ngrainier\ngrainiest\ngraininess\ngraining\ngrains\ngrainy\ngram\ngrama\ngramaries\ngramary\ngramarye\ngramaryes\ngramas\ngramercies\ngramercy\ngrammar\ngrammarian\ngrammarians\ngrammars\ngrammatical\ngrammatically\ngrammaticalness\ngramme\ngrammes\ngramp\ngramps\ngrampus\ngrampuses\ngrams\ngran\ngrana\ngranaries\ngranary\ngrand\ngrandad\ngrandads\ngrandam\ngrandame\ngrandames\ngrandams\ngrandaunt\ngrandaunts\ngrandchild\ngrandchildren\ngranddad\ngranddads\ngranddaughter\ngranddaughters\ngrandee\ngrandees\ngrander\ngrandest\ngrandeur\ngrandeurs\ngrandfather\ngrandfatherly\ngrandfathers\ngrandiloquence\ngrandiloquent\ngrandiloquently\ngrandiose\ngrandiosely\ngrandiosities\ngrandiosity\ngrandly\ngrandma\ngrandmas\ngrandmaster\ngrandmasters\ngrandmother\ngrandmotherly\ngrandmothers\ngrandnephew\ngrandnephews\ngrandness\ngrandniece\ngrandnieces\ngrandpa\ngrandparent\ngrandparents\ngrandpas\ngrands\ngrandsir\ngrandsirs\ngrandson\ngrandsons\ngrandstand\ngrandstanded\ngrandstander\ngrandstanders\ngrandstanding\ngrandstands\ngranduncle\ngranduncles\ngrange\ngranger\ngrangerism\ngrangers\ngranges\ngranite\ngranitelike\ngranites\ngranitic\ngrannie\ngrannies\ngranny\ngrans\ngrant\ngrantable\ngranted\ngrantee\ngrantees\ngranter\ngranters\ngranting\ngrantor\ngrantors\ngrants\ngrantsman\ngrantsmanship\ngrantsmen\ngranular\ngranularity\ngranulate\ngranulated\ngranulates\ngranulating\ngranulation\ngranulations\ngranulative\ngranulator\ngranulators\ngranule\ngranules\ngranulite\ngranulites\ngranulitic\ngranulocyte\ngranulocytes\ngranulocytic\ngranuloma\ngranulomas\ngranum\ngrape\ngrapefruit\ngrapefruits\ngraperies\ngrapery\ngrapes\ngrapevine\ngrapevines\ngraph\ngraphed\ngrapheme\ngraphemes\ngraphemic\ngraphemically\ngraphemics\ngraphic\ngraphical\ngraphically\ngraphicness\ngraphics\ngraphing\ngraphite\ngraphites\ngraphitic\ngraphitization\ngraphitizations\ngraphitize\ngraphitized\ngraphitizes\ngraphitizing\ngraphological\ngraphologist\ngraphologists\ngraphology\ngraphs\ngrapier\ngrapiest\ngraplin\ngrapline\ngraplines\ngraplins\ngrapnel\ngrapnels\ngrappa\ngrappas\ngrapple\ngrappled\ngrappler\ngrapplers\ngrapples\ngrappling\ngrapy\ngrasp\ngraspable\ngrasped\ngrasper\ngraspers\ngrasping\ngraspingly\ngraspingness\ngrasps\ngrass\ngrassed\ngrasses\ngrasshopper\ngrasshoppers\ngrassier\ngrassiest\ngrassily\ngrassing\ngrassland\ngrasslands\ngrasslike\ngrassy\ngrat\ngrate\ngrated\ngrateful\ngratefuller\ngratefullest\ngratefully\ngratefulness\ngrater\ngraters\ngrates\ngratification\ngratifications\ngratified\ngratifies\ngratify\ngratifying\ngratifyingly\ngratin\ngrating\ngratings\ngratins\ngratis\ngratitude\ngratuities\ngratuitous\ngratuitously\ngratuitousness\ngratuity\ngratulating\ngratulation\ngratulations\ngraupel\ngraupels\ngravamen\ngravamens\ngravamina\ngrave\ngraved\ngravel\ngraveled\ngraveling\ngravelled\ngravelling\ngravelly\ngravels\ngravely\ngraven\ngraveness\ngraver\ngravers\ngraves\ngravest\ngravestone\ngravestones\ngraveyard\ngraveyards\ngravid\ngravida\ngravidae\ngravidas\ngravidities\ngravidity\ngravidly\ngravies\ngraving\ngravitate\ngravitated\ngravitates\ngravitating\ngravitation\ngravitational\ngravitationally\ngravitations\ngravities\ngraviton\ngravitons\ngravity\ngravure\ngravures\ngravy\ngray\ngrayback\ngraybacks\ngrayed\ngrayer\ngrayest\ngrayfish\ngrayfishes\ngraying\ngrayish\ngraylag\ngraylags\ngrayling\ngraylings\ngrayly\ngrayness\ngraynesses\ngrayout\ngrayouts\ngrays\ngrazable\ngraze\ngrazed\ngrazer\ngrazers\ngrazes\ngrazier\ngraziers\ngrazing\ngrazingly\ngrazings\ngrazioso\ngrease\ngreased\ngreaseless\ngreasepaint\ngreaser\ngreasers\ngreases\ngreasier\ngreasiest\ngreasily\ngreasiness\ngreasing\ngreasy\ngreat\ngreatcoat\ngreatcoats\ngreaten\ngreatened\ngreatening\ngreatens\ngreater\ngreatest\ngreatly\ngreatness\ngreats\ngreave\ngreaved\ngreaves\ngrebe\ngrebes\ngrecize\ngrecized\ngrecizes\ngrecizing\ngree\ngreed\ngreedier\ngreediest\ngreedily\ngreediness\ngreeds\ngreedy\ngreegree\ngreegrees\ngreeing\ngreek\ngreen\ngreenback\ngreenbacks\ngreenbug\ngreenbugs\ngreened\ngreener\ngreeneries\ngreenery\ngreenest\ngreenflies\ngreenfly\ngreengage\ngreengages\ngreenhorn\ngreenhorns\ngreenhouse\ngreenhouses\ngreenier\ngreeniest\ngreening\ngreenings\ngreenish\ngreenishness\ngreenlet\ngreenlets\ngreenling\ngreenlings\ngreenly\ngreenness\ngreenroom\ngreenrooms\ngreens\ngreensick\ngreensickness\ngreensward\ngreenswards\ngreenth\ngreenths\ngreenwood\ngreenwoods\ngreeny\ngrees\ngreet\ngreeted\ngreeter\ngreeters\ngreeting\ngreetings\ngreets\ngregarious\ngregariously\ngregariousness\ngrego\ngregos\ngreige\ngreiges\ngreisen\ngreisens\ngremial\ngremials\ngremlin\ngremlins\ngremmie\ngremmies\ngremmy\ngrenade\ngrenades\ngrenadier\ngrenadiers\ngrenadine\ngrenadines\ngrew\ngrewsome\ngrewsomer\ngrewsomest\ngrey\ngreyed\ngreyer\ngreyest\ngreyhen\ngreyhens\ngreyhound\ngreyhounds\ngreying\ngreyish\ngreylag\ngreylags\ngreyly\ngreyness\ngreynesses\ngreys\ngribble\ngribbles\ngrid\ngriddle\ngriddled\ngriddles\ngriddling\ngride\ngrided\ngrides\ngriding\ngridiron\ngridirons\ngrids\ngrief\ngriefs\ngrievance\ngrievances\ngrievant\ngrievants\ngrieve\ngrieved\ngriever\ngrievers\ngrieves\ngrieving\ngrievous\ngrievously\ngrievousness\ngriff\ngriffe\ngriffes\ngriffin\ngriffins\ngriffon\ngriffons\ngriffs\ngrift\ngrifted\ngrifter\ngrifters\ngrifting\ngrifts\ngrig\ngrigri\ngrigris\ngrigs\ngrill\ngrillade\ngrillades\ngrillage\ngrillages\ngrille\ngrilled\ngriller\ngrillers\ngrilles\ngrilling\ngrillroom\ngrillrooms\ngrills\ngrilse\ngrilses\ngrim\ngrimace\ngrimaced\ngrimacer\ngrimacers\ngrimaces\ngrimacing\ngrime\ngrimed\ngrimes\ngrimier\ngrimiest\ngrimily\ngriminess\ngriming\ngrimly\ngrimmer\ngrimmest\ngrimness\ngrimnesses\ngrimy\ngrin\ngrind\ngrinded\ngrinder\ngrinderies\ngrinders\ngrindery\ngrinding\ngrindingly\ngrinds\ngrindstone\ngrindstones\ngringo\ngringos\ngrinned\ngrinner\ngrinners\ngrinning\ngrinningly\ngrins\ngriot\ngrip\ngripe\ngriped\ngriper\ngripers\ngripes\ngripey\ngripier\ngripiest\ngriping\ngrippe\ngripped\ngripper\ngrippers\ngrippes\ngrippier\ngrippiest\ngripping\ngrippingly\ngripple\ngrippy\ngrips\ngripsack\ngripsacks\ngript\ngripy\ngriseous\ngrisette\ngrisettes\ngriskin\ngriskins\ngrislier\ngrisliest\ngrisly\ngrison\ngrisons\ngrist\ngristle\ngristles\ngristlier\ngristliest\ngristly\ngristmill\ngristmills\ngrists\ngrit\ngrith\ngriths\ngrits\ngritted\ngrittier\ngrittiest\ngrittily\ngrittiness\ngritting\ngritty\ngrivet\ngrivets\ngrizzle\ngrizzled\ngrizzler\ngrizzlers\ngrizzles\ngrizzlier\ngrizzlies\ngrizzliest\ngrizzling\ngrizzly\ngroan\ngroaned\ngroaner\ngroaners\ngroaning\ngroans\ngroat\ngroats\ngrocer\ngroceries\ngrocers\ngrocery\ngrog\ngroggeries\ngroggery\ngroggier\ngroggiest\ngroggily\ngrogginess\ngroggy\ngrogram\ngrograms\ngrogs\ngrogshop\ngrogshops\ngroin\ngroined\ngroining\ngroins\ngrommet\ngrommets\ngromwell\ngromwells\ngroom\ngroomed\ngroomer\ngroomers\ngrooming\ngrooms\ngroomsman\ngroomsmen\ngroove\ngrooved\ngroover\ngroovers\ngrooves\ngroovier\ngrooviest\ngrooving\ngroovy\ngrope\ngroped\ngroper\ngropers\ngropes\ngroping\ngrosbeak\ngrosbeaks\ngroschen\ngrosgrain\ngrosgrains\ngross\ngrossed\ngrosser\ngrossers\ngrosses\ngrossest\ngrossing\ngrossly\ngrossness\ngrosz\ngroszy\ngrot\ngrotesque\ngrotesquely\ngrotesqueness\ngrotesquerie\ngrotesqueries\ngrotesquery\ngrotesques\ngrots\ngrotto\ngrottoes\ngrottos\ngrouch\ngrouched\ngrouches\ngrouchier\ngrouchiest\ngrouchily\ngrouchiness\ngrouching\ngrouchy\nground\ngrounded\ngrounder\ngrounders\ngroundhog\ngroundhogs\ngrounding\ngroundings\ngroundless\ngroundlessly\ngroundlessness\ngrounds\ngroundspeed\ngroundspeeds\ngroundwater\ngroundwork\ngroundworks\ngroup\ngrouped\ngrouper\ngroupers\ngroupie\ngroupies\ngrouping\ngroupings\ngroupoid\ngroupoids\ngroups\ngrouse\ngroused\ngrouser\ngrousers\ngrouses\ngrousing\ngrout\ngrouted\ngrouter\ngrouters\ngroutier\ngroutiest\ngrouting\ngrouts\ngrouty\ngrove\ngroved\ngrovel\ngroveled\ngroveler\ngrovelers\ngroveling\ngrovelingly\ngrovelled\ngrovelling\ngrovels\ngroves\ngrow\ngrowable\ngrower\ngrowers\ngrowing\ngrowl\ngrowled\ngrowler\ngrowlers\ngrowlier\ngrowliest\ngrowling\ngrowlingly\ngrowls\ngrowly\ngrown\ngrownup\ngrownups\ngrows\ngrowth\ngrowths\ngroyne\ngroynes\ngrub\ngrubbed\ngrubber\ngrubbers\ngrubbier\ngrubbiest\ngrubbily\ngrubbiness\ngrubbing\ngrubby\ngrubs\ngrubstake\ngrubstaked\ngrubstaker\ngrubstakers\ngrubstakes\ngrubstaking\ngrubworm\ngrubworms\ngrudge\ngrudged\ngrudger\ngrudgers\ngrudges\ngrudging\ngrudgingly\ngrue\ngruel\ngrueled\ngrueler\ngruelers\ngrueling\ngruelings\ngruelled\ngrueller\ngruellers\ngruelling\ngruellings\ngruels\ngrues\ngruesome\ngruesomely\ngruesomeness\ngruesomer\ngruesomest\ngruff\ngruffed\ngruffer\ngruffest\ngruffier\ngruffiest\ngruffily\ngruffing\ngruffish\ngruffly\ngruffness\ngruffs\ngruffy\ngrugru\ngrugrus\ngrum\ngrumble\ngrumbled\ngrumbler\ngrumblers\ngrumbles\ngrumbling\ngrumblingly\ngrumbly\ngrume\ngrumes\ngrummer\ngrummest\ngrummet\ngrummets\ngrumose\ngrumous\ngrump\ngrumped\ngrumphie\ngrumphies\ngrumphy\ngrumpier\ngrumpiest\ngrumpily\ngrumpiness\ngrumping\ngrumpish\ngrumps\ngrumpy\ngrunion\ngrunions\ngrunt\ngrunted\ngrunter\ngrunters\ngrunting\ngruntle\ngruntled\ngruntles\ngruntling\ngrunts\ngrushie\ngrutch\ngrutched\ngrutches\ngrutching\ngrutten\ngryphon\ngryphons\nguacharo\nguacharoes\nguacharos\nguaco\nguacos\nguaiac\nguaiacol\nguaiacols\nguaiacs\nguaiacum\nguaiacums\nguaiocum\nguaiocums\nguan\nguanaco\nguanacos\nguanase\nguanases\nguanidin\nguanidins\nguanin\nguanine\nguanines\nguanins\nguano\nguanos\nguans\nguar\nguarani\nguaranies\nguaranis\nguarantee\nguaranteed\nguaranteeing\nguarantees\nguarantied\nguaranties\nguarantor\nguarantors\nguaranty\nguarantying\nguard\nguardant\nguardants\nguarded\nguardedly\nguardedness\nguarder\nguarders\nguardhouse\nguardhouses\nguardian\nguardians\nguardianship\nguarding\nguardrail\nguardrails\nguardroom\nguardrooms\nguards\nguardsman\nguardsmen\nguars\nguava\nguavas\nguayule\nguayules\ngubernatorial\nguck\ngucks\ngude\ngudes\ngudgeon\ngudgeoned\ngudgeoning\ngudgeons\nguenon\nguenons\nguerdon\nguerdoned\nguerdoning\nguerdons\nguerilla\nguerillas\nguernsey\nguernseys\nguerrilla\nguerrillas\nguess\nguessed\nguesser\nguessers\nguesses\nguessing\nguesstimate\nguesstimated\nguesstimates\nguesstimating\nguesswork\nguest\nguested\nguesting\nguests\nguff\nguffaw\nguffawed\nguffawing\nguffaws\nguffs\nguggle\nguggled\nguggles\nguggling\nguglet\nguglets\nguid\nguidable\nguidance\nguidances\nguide\nguidebook\nguidebooks\nguided\nguideline\nguidelines\nguidepost\nguideposts\nguider\nguiders\nguides\nguiding\nguidon\nguidons\nguids\nguild\nguilder\nguilders\nguilds\nguildship\nguildsman\nguildsmen\nguile\nguiled\nguileful\nguilefully\nguilefulness\nguileless\nguilelessly\nguilelessness\nguiles\nguiling\nguillotine\nguillotined\nguillotines\nguillotining\nguilt\nguiltier\nguiltiest\nguiltily\nguiltiness\nguiltless\nguiltlessly\nguiltlessness\nguilts\nguilty\nguimpe\nguimpes\nguinea\nguineas\nguipure\nguipures\nguiro\nguiros\nguisard\nguisards\nguise\nguised\nguises\nguising\nguitar\nguitarist\nguitarists\nguitars\ngul\ngulag\ngular\ngulch\ngulches\ngulden\nguldens\ngules\ngulf\ngulfed\ngulfier\ngulfiest\ngulfing\ngulflike\ngulfs\ngulfweed\ngulfweeds\ngulfy\ngull\ngullable\ngullably\ngulled\ngullet\ngullets\ngulley\ngulleys\ngullibilities\ngullibility\ngullible\ngullibly\ngullied\ngullies\ngulling\ngulls\ngully\ngullying\ngulosities\ngulosity\ngulp\ngulped\ngulper\ngulpers\ngulpier\ngulpiest\ngulping\ngulpingly\ngulps\ngulpy\nguls\ngum\ngumbo\ngumboil\ngumboils\ngumbos\ngumbotil\ngumbotils\ngumdrop\ngumdrops\ngumless\ngumlike\ngumma\ngummas\ngummata\ngummed\ngummer\ngummers\ngummier\ngummiest\ngumming\ngummite\ngummites\ngummose\ngummoses\ngummosis\ngummous\ngummy\ngumption\ngumptions\ngums\ngumshoe\ngumshoed\ngumshoeing\ngumshoes\ngumtree\ngumtrees\ngumweed\ngumweeds\ngumwood\ngumwoods\ngun\ngunboat\ngunboats\nguncotton\ngundog\ngundogs\ngunfight\ngunfighter\ngunfighters\ngunfighting\ngunfights\ngunfire\ngunfires\ngunflint\ngunflints\ngunfought\ngunk\ngunks\ngunky\ngunless\ngunlock\ngunlocks\ngunman\ngunmen\ngunmetal\ngunmetals\ngunned\ngunnel\ngunnels\ngunnen\ngunner\ngunneries\ngunners\ngunnery\ngunnies\ngunning\ngunnings\ngunny\ngunnysack\ngunnysacks\ngunpaper\ngunpapers\ngunplay\ngunplays\ngunpoint\ngunpoints\ngunpowder\ngunpowders\ngunroom\ngunrooms\ngunrunner\ngunrunners\ngunrunning\nguns\ngunsel\ngunsels\ngunship\ngunships\ngunshot\ngunshots\ngunslinger\ngunslingers\ngunsmith\ngunsmithing\ngunsmiths\ngunstock\ngunstocks\ngunwale\ngunwales\nguppies\nguppy\ngurge\ngurged\ngurges\ngurging\ngurgle\ngurgled\ngurgles\ngurglet\ngurglets\ngurgling\ngurnard\ngurnards\ngurnet\ngurnets\ngurney\ngurneys\ngurries\ngurry\ngursh\ngurshes\nguru\ngurus\nguruship\nguruships\ngush\ngushed\ngusher\ngushers\ngushes\ngushier\ngushiest\ngushily\ngushiness\ngushing\ngushy\ngusset\ngusseted\ngusseting\ngussets\ngussy\ngust\ngustable\ngustables\ngustation\ngustations\ngustatory\ngusted\ngustier\ngustiest\ngustily\ngustiness\ngusting\ngustless\ngusto\ngustoes\ngusts\ngusty\ngut\ngutless\ngutlessness\ngutlike\nguts\ngutsier\ngutsiest\ngutsiness\ngutsy\ngutta\nguttae\nguttate\nguttated\ngutted\ngutter\nguttered\nguttering\ngutters\nguttersnipe\nguttersnipes\nguttersnipish\nguttery\nguttier\nguttiest\ngutting\nguttle\nguttled\nguttler\nguttlers\nguttles\nguttling\nguttural\ngutturalism\ngutturalisms\ngutturals\ngutty\nguv\nguvs\nguy\nguyed\nguying\nguyot\nguyots\nguys\nguzzle\nguzzled\nguzzler\nguzzlers\nguzzles\nguzzling\ngweduc\ngweduck\ngweducks\ngweducs\ngybe\ngybed\ngybes\ngybing\ngym\ngymkhana\ngymkhanas\ngymnasia\ngymnasium\ngymnasiums\ngymnast\ngymnastic\ngymnastically\ngymnastics\ngymnasts\ngymnosperm\ngymnospermous\ngymnosperms\ngyms\ngynaecea\ngynaecia\ngynandries\ngynandry\ngynarchies\ngynarchy\ngynecia\ngynecic\ngynecium\ngynecoid\ngynecologic\ngynecological\ngynecologist\ngynecologists\ngynecology\ngyniatries\ngyniatry\ngynoecia\ngyp\ngypped\ngypper\ngyppers\ngypping\ngyps\ngypseian\ngypseous\ngypsied\ngypsies\ngypsum\ngypsums\ngypsy\ngypsydom\ngypsydoms\ngypsying\ngypsyish\ngypsyism\ngypsyisms\ngyral\ngyrally\ngyrate\ngyrated\ngyrates\ngyrating\ngyration\ngyrational\ngyrations\ngyrator\ngyrators\ngyratory\ngyre\ngyred\ngyrene\ngyrenes\ngyres\ngyri\ngyring\ngyro\ngyrocompass\ngyrocompasses\ngyroidal\ngyron\ngyrons\ngyros\ngyroscope\ngyroscopes\ngyroscopic\ngyroscopically\ngyrose\ngyrostabilizer\ngyrostabilizers\ngyrostat\ngyrostats\ngyrus\ngyve\ngyved\ngyves\ngyving\nha\nhaaf\nhaafs\nhaar\nhaars\nhabanera\nhabaneras\nhabdalah\nhabdalahs\nhaberdasher\nhaberdasheries\nhaberdashers\nhaberdashery\nhabile\nhabilitate\nhabilitated\nhabilitates\nhabilitating\nhabilitation\nhabilitations\nhabit\nhabitability\nhabitable\nhabitableness\nhabitably\nhabitan\nhabitans\nhabitant\nhabitants\nhabitat\nhabitation\nhabitations\nhabitats\nhabited\nhabiting\nhabits\nhabitual\nhabitually\nhabitualness\nhabituate\nhabituated\nhabituates\nhabituating\nhabituation\nhabituations\nhabitude\nhabitudes\nhabitue\nhabitues\nhabitus\nhabu\nhabus\nhacek\nhaceks\nhachure\nhachured\nhachures\nhachuring\nhacienda\nhaciendas\nhack\nhackbut\nhackbuts\nhacked\nhackee\nhackees\nhacker\nhackers\nhackie\nhackies\nhacking\nhackle\nhackled\nhackler\nhacklers\nhackles\nhacklier\nhackliest\nhackling\nhackly\nhackman\nhackmen\nhackney\nhackneyed\nhackneying\nhackneys\nhacks\nhacksaw\nhacksaws\nhackwork\nhackworks\nhad\nhadal\nhadarim\nhaddest\nhaddock\nhaddocks\nhade\nhaded\nhades\nhading\nhadj\nhadjee\nhadjees\nhadjes\nhadji\nhadjis\nhadron\nhadronic\nhadrons\nhadst\nhae\nhaed\nhaeing\nhaem\nhaemal\nhaematal\nhaematic\nhaematics\nhaematin\nhaematins\nhaemic\nhaemin\nhaemins\nhaemoid\nhaems\nhaen\nhaeredes\nhaeres\nhaes\nhaet\nhaets\nhaffet\nhaffets\nhaffit\nhaffits\nhafis\nhafiz\nhafnium\nhafniums\nhaft\nhaftarah\nhaftarahs\nhaftarot\nhaftaroth\nhafted\nhafter\nhafters\nhafting\nhaftorah\nhaftorahs\nhaftorot\nhaftoroth\nhafts\nhag\nhagadic\nhagadist\nhagadists\nhagberries\nhagberry\nhagborn\nhagbush\nhagbushes\nhagbut\nhagbuts\nhagdon\nhagdons\nhagfish\nhagfishes\nhaggadic\nhaggard\nhaggardly\nhaggardness\nhaggards\nhagged\nhagging\nhaggis\nhaggises\nhaggish\nhaggle\nhaggled\nhaggler\nhagglers\nhaggles\nhaggling\nhagridden\nhagride\nhagrides\nhagriding\nhagrode\nhags\nhah\nhaha\nhahas\nhahs\nhaik\nhaika\nhaiks\nhaiku\nhail\nhailed\nhailer\nhailers\nhailing\nhails\nhailstone\nhailstones\nhailstorm\nhailstorms\nhair\nhairball\nhairballs\nhairband\nhairbands\nhairbreadth\nhairbrush\nhairbrushes\nhaircap\nhaircaps\nhaircut\nhaircuts\nhaircutter\nhaircutters\nhaircutting\nhairdo\nhairdos\nhairdresser\nhairdressers\nhairdressing\nhairdressings\nhaired\nhairier\nhairiest\nhairiness\nhairless\nhairlessness\nhairlike\nhairline\nhairlines\nhairlock\nhairlocks\nhairpiece\nhairpieces\nhairpin\nhairpins\nhairs\nhairsbreadth\nhairsplitter\nhairsplitters\nhairsplitting\nhairspring\nhairsprings\nhairstyle\nhairstyles\nhairstyling\nhairstylist\nhairstylists\nhairwork\nhairworks\nhairworm\nhairworms\nhairy\nhaj\nhajes\nhaji\nhajis\nhajj\nhajjes\nhajji\nhajjis\nhake\nhakeem\nhakeems\nhakes\nhakim\nhakims\nhalakah\nhalakahs\nhalakic\nhalakist\nhalakists\nhalakoth\nhalala\nhalalah\nhalalahs\nhalalas\nhalation\nhalations\nhalavah\nhalavahs\nhalberd\nhalberds\nhalbert\nhalberts\nhalcyon\nhalcyons\nhale\nhaled\nhaleness\nhalenesses\nhaler\nhalers\nhaleru\nhales\nhalest\nhalf\nhalfback\nhalfbacks\nhalfbeak\nhalfbeaks\nhalfhearted\nhalfheartedly\nhalfheartedness\nhalflife\nhalflives\nhalfness\nhalfnesses\nhalftime\nhalftimes\nhalftone\nhalftones\nhalfway\nhalibut\nhalibuts\nhalid\nhalide\nhalides\nhalidom\nhalidome\nhalidomes\nhalidoms\nhalids\nhaling\nhalite\nhalites\nhalitus\nhalituses\nhall\nhallah\nhallahs\nhallel\nhallels\nhallelujah\nhallelujahs\nhalliard\nhalliards\nhallmark\nhallmarked\nhallmarking\nhallmarks\nhallo\nhalloa\nhalloaed\nhalloaing\nhalloas\nhalloed\nhalloes\nhalloing\nhalloo\nhallooed\nhallooing\nhalloos\nhallos\nhallot\nhalloth\nhallow\nhallowed\nhallower\nhallowers\nhallowing\nhallows\nhalls\nhalluces\nhallucinate\nhallucinated\nhallucinates\nhallucinating\nhallucination\nhallucinations\nhallucinator\nhallucinators\nhallucinatory\nhallucinogen\nhallucinogenic\nhallucinogens\nhallux\nhallway\nhallways\nhalm\nhalms\nhalo\nhaloed\nhaloes\nhalogen\nhalogenate\nhalogenated\nhalogenates\nhalogenating\nhalogenation\nhalogenations\nhalogens\nhaloid\nhaloids\nhaloing\nhalolike\nhalophyte\nhalophytes\nhalophytic\nhalos\nhalt\nhalted\nhalter\nhaltere\nhaltered\nhalteres\nhaltering\nhalters\nhalting\nhaltingly\nhaltless\nhalts\nhalutz\nhalutzim\nhalva\nhalvah\nhalvahs\nhalvas\nhalve\nhalved\nhalvers\nhalves\nhalving\nhalyard\nhalyards\nham\nhamal\nhamals\nhamartia\nhamartias\nhamate\nhamates\nhamaul\nhamauls\nhamburg\nhamburger\nhamburgers\nhamburgs\nhame\nhames\nhamlet\nhamlets\nhammal\nhammals\nhammed\nhammer\nhammered\nhammerer\nhammerers\nhammerhead\nhammerheads\nhammering\nhammerless\nhammers\nhammertoe\nhammertoes\nhammier\nhammiest\nhammily\nhamming\nhammock\nhammocks\nhammy\nhamper\nhampered\nhamperer\nhamperers\nhampering\nhampers\nhams\nhamster\nhamsters\nhamstring\nhamstringing\nhamstrings\nhamstrung\nhamular\nhamulate\nhamuli\nhamulose\nhamulous\nhamulus\nhamza\nhamzah\nhamzahs\nhamzas\nhanaper\nhanapers\nhance\nhances\nhand\nhandbag\nhandbags\nhandball\nhandballs\nhandbarrow\nhandbarrows\nhandbill\nhandbills\nhandbook\nhandbooks\nhandbreadth\nhandbreadths\nhandcar\nhandcars\nhandcart\nhandcarts\nhandclasp\nhandclasps\nhandcuff\nhandcuffed\nhandcuffing\nhandcuffs\nhanded\nhandedness\nhandfast\nhandfasted\nhandfasting\nhandfasts\nhandful\nhandfuls\nhandgrip\nhandgrips\nhandgun\nhandguns\nhandhold\nhandholds\nhandicap\nhandicapped\nhandicapper\nhandicappers\nhandicapping\nhandicaps\nhandicraft\nhandicrafter\nhandicrafters\nhandicrafts\nhandicraftsman\nhandicraftsmen\nhandier\nhandiest\nhandily\nhandiness\nhanding\nhandiwork\nhandiworks\nhandkerchief\nhandkerchiefs\nhandle\nhandleable\nhandlebar\nhandlebars\nhandled\nhandleless\nhandler\nhandlers\nhandles\nhandless\nhandlike\nhandling\nhandlings\nhandlist\nhandlists\nhandloom\nhandlooms\nhandmade\nhandmaid\nhandmaids\nhandoff\nhandoffs\nhandout\nhandouts\nhandpick\nhandpicked\nhandpicking\nhandpicks\nhandprint\nhandprints\nhandrail\nhandrails\nhands\nhandsaw\nhandsaws\nhandsbreadth\nhandsbreadths\nhandsel\nhandseled\nhandseling\nhandselled\nhandselling\nhandsels\nhandset\nhandsets\nhandsewn\nhandsful\nhandshake\nhandshaker\nhandshakers\nhandshakes\nhandshaking\nhandsome\nhandsomely\nhandsomeness\nhandsomer\nhandsomest\nhandspring\nhandsprings\nhandstand\nhandstands\nhandwork\nhandworks\nhandwrit\nhandwrite\nhandwrites\nhandwriting\nhandwritings\nhandwritten\nhandwrote\nhandy\nhandyman\nhandymen\nhang\nhangable\nhangar\nhangared\nhangaring\nhangars\nhangbird\nhangbirds\nhangdog\nhangdogs\nhanged\nhanger\nhangers\nhangfire\nhangfires\nhanging\nhangings\nhangman\nhangmen\nhangnail\nhangnails\nhangnest\nhangnests\nhangout\nhangouts\nhangover\nhangovers\nhangs\nhangtag\nhangtags\nhangup\nhangups\nhank\nhanked\nhanker\nhankered\nhankerer\nhankerers\nhankering\nhankerings\nhankers\nhankie\nhankies\nhanking\nhanks\nhanky\nhansa\nhanse\nhansel\nhanseled\nhanseling\nhanselled\nhanselling\nhansels\nhanses\nhansom\nhansoms\nhant\nhanted\nhanting\nhantle\nhantles\nhants\nhanuman\nhanumans\nhao\nhaole\nhaoles\nhap\nhapax\nhapaxes\nhaphazard\nhaphazardly\nhaphazardness\nhapless\nhaplessly\nhaplessness\nhaplite\nhaplites\nhaploid\nhaploidies\nhaploids\nhaploidy\nhaplont\nhaplonts\nhaplopia\nhaplopias\nhaploses\nhaplosis\nhaply\nhapped\nhappen\nhappened\nhappening\nhappenings\nhappens\nhappenstance\nhappier\nhappiest\nhappily\nhappiness\nhapping\nhappy\nhaps\nhapten\nhaptene\nhaptenes\nhaptenic\nhaptens\nhaptic\nhaptical\nharangue\nharangued\nharanguer\nharanguers\nharangues\nharanguing\nharass\nharassed\nharasser\nharassers\nharasses\nharassing\nharassment\nharassments\nharbinger\nharbingers\nharbor\nharborage\nharborages\nharbored\nharborer\nharborers\nharboring\nharborless\nharbors\nharbour\nharboured\nharbouring\nharbours\nhard\nhardback\nhardbacks\nhardball\nhardballs\nhardboot\nhardboots\nhardcase\nhardcore\nhardcover\nhardcovers\nharden\nhardened\nhardener\nhardeners\nhardening\nhardens\nharder\nhardest\nhardfisted\nhardhack\nhardhacks\nhardhat\nhardhats\nhardhead\nhardheaded\nhardheadedly\nhardheadedness\nhardheads\nhardier\nhardies\nhardiest\nhardihood\nhardihoods\nhardily\nhardiness\nhardly\nhardness\nhardnesses\nhardpan\nhardpans\nhards\nhardset\nhardship\nhardships\nhardtack\nhardtacks\nhardtop\nhardtops\nhardware\nhardwares\nhardwood\nhardwoods\nhardy\nhare\nharebell\nharebells\nharebrained\nhared\nhareem\nhareems\nharelike\nharelip\nharelipped\nharelips\nharem\nharems\nhares\nhariana\nharianas\nharicot\nharicots\nharijan\nharijans\nharing\nhark\nharked\nharken\nharkened\nharkener\nharkeners\nharkening\nharkens\nharking\nharks\nharl\nharlequin\nharlequins\nharlot\nharlotries\nharlotry\nharlots\nharls\nharm\nharmed\nharmer\nharmers\nharmful\nharmfully\nharmfulness\nharmin\nharmine\nharmines\nharming\nharmins\nharmless\nharmlessly\nharmlessness\nharmonic\nharmonica\nharmonically\nharmonicas\nharmonics\nharmonies\nharmonious\nharmoniously\nharmoniousness\nharmonization\nharmonizations\nharmonize\nharmonized\nharmonizer\nharmonizers\nharmonizes\nharmonizing\nharmony\nharms\nharness\nharnessed\nharnesses\nharnessing\nharp\nharped\nharper\nharpers\nharpies\nharpin\nharping\nharpings\nharpins\nharpist\nharpists\nharpoon\nharpooned\nharpooner\nharpooners\nharpooning\nharpoons\nharps\nharpsichord\nharpsichordist\nharpsichordists\nharpsichords\nharpy\nharridan\nharridans\nharried\nharrier\nharriers\nharries\nharrow\nharrowed\nharrower\nharrowers\nharrowing\nharrows\nharrumph\nharrumphed\nharrumphing\nharrumphs\nharry\nharrying\nharsh\nharshen\nharshened\nharshening\nharshens\nharsher\nharshest\nharshlets\nharshly\nharshness\nharslet\nharslets\nhart\nhartal\nhartals\nhartebeest\nhartebeests\nharts\nharuspex\nharuspices\nharvest\nharvested\nharvester\nharvesters\nharvesting\nharvestman\nharvestmen\nharvests\nhas\nhasenpfeffer\nhasenpfeffers\nhash\nhashed\nhasheesh\nhasheeshes\nhashes\nhashing\nhashish\nhashishes\nhaslet\nhaslets\nhasp\nhasped\nhasping\nhasps\nhassel\nhassels\nhassle\nhassled\nhassles\nhassling\nhassock\nhassocks\nhast\nhastate\nhaste\nhasted\nhasteful\nhasten\nhastened\nhastener\nhasteners\nhastening\nhastens\nhastes\nhastier\nhastiest\nhastily\nhastiness\nhasting\nhasty\nhat\nhatable\nhatband\nhatbands\nhatbox\nhatboxes\nhatch\nhatchabilities\nhatchability\nhatchable\nhatchback\nhatchbacks\nhatcheck\nhatched\nhatchel\nhatcheled\nhatcheling\nhatchelled\nhatchelling\nhatchels\nhatcher\nhatcheries\nhatchers\nhatchery\nhatches\nhatchet\nhatchets\nhatching\nhatchings\nhatchway\nhatchways\nhate\nhateable\nhated\nhateful\nhatefully\nhatefulness\nhater\nhaters\nhates\nhatful\nhatfuls\nhath\nhating\nhatless\nhatlike\nhatmaker\nhatmakers\nhatpin\nhatpins\nhatrack\nhatracks\nhatred\nhatreds\nhats\nhatsful\nhatted\nhatter\nhatteria\nhatterias\nhatters\nhatting\nhauberk\nhauberks\nhaugh\nhaughs\nhaughtier\nhaughtiest\nhaughtily\nhaughtiness\nhaughty\nhaul\nhaulage\nhaulages\nhauled\nhauler\nhaulers\nhaulier\nhauliers\nhauling\nhaulm\nhaulmier\nhaulmiest\nhaulms\nhaulmy\nhauls\nhaulyard\nhaulyards\nhaunch\nhaunched\nhaunches\nhaunt\nhaunted\nhaunter\nhaunters\nhaunting\nhauntingly\nhaunts\nhausen\nhausens\nhausfrau\nhausfrauen\nhausfraus\nhaut\nhautbois\nhautboy\nhautboys\nhaute\nhauteur\nhauteurs\nhavdalah\nhavdalahs\nhave\nhavelock\nhavelocks\nhaven\nhavened\nhavening\nhavens\nhaver\nhavered\nhaverel\nhaverels\nhavering\nhavers\nhaversack\nhaversacks\nhaves\nhaving\nhavior\nhaviors\nhaviour\nhaviours\nhavoc\nhavocked\nhavocker\nhavockers\nhavocking\nhavocs\nhaw\nhawed\nhawfinch\nhawfinches\nhawing\nhawk\nhawkbill\nhawkbills\nhawked\nhawker\nhawkers\nhawkey\nhawkeys\nhawkie\nhawkies\nhawking\nhawkings\nhawkish\nhawklike\nhawkmoth\nhawkmoths\nhawknose\nhawknoses\nhawks\nhawkshaw\nhawkshaws\nhawkweed\nhawkweeds\nhaws\nhawse\nhawser\nhawsers\nhawses\nhawthorn\nhawthorns\nhay\nhaycock\nhaycocks\nhayed\nhayer\nhayers\nhayfork\nhayforks\nhaying\nhayings\nhaylage\nhaylages\nhayloft\nhaylofts\nhaymaker\nhaymakers\nhaymow\nhaymows\nhayrack\nhayracks\nhayrick\nhayricks\nhayride\nhayrides\nhays\nhayseed\nhayseeds\nhaystack\nhaystacks\nhayward\nhaywards\nhaywire\nhaywires\nhazan\nhazanim\nhazans\nhazard\nhazarded\nhazarding\nhazardous\nhazardously\nhazardousness\nhazards\nhaze\nhazed\nhazel\nhazelly\nhazelnut\nhazelnuts\nhazels\nhazer\nhazers\nhazes\nhazier\nhaziest\nhazily\nhaziness\nhazinesses\nhazing\nhazings\nhazy\nhazzan\nhazzanim\nhazzans\nhe\nhead\nheadache\nheadaches\nheadachier\nheadachiest\nheadachy\nheadband\nheadbands\nheadboard\nheadboards\nheadcheese\nheadcheeses\nheaddress\nheaddresses\nheaded\nheader\nheaders\nheadgate\nheadgates\nheadgear\nheadgears\nheadhunt\nheadhunted\nheadhunter\nheadhunters\nheadhunting\nheadhunts\nheadier\nheadiest\nheadily\nheading\nheadings\nheadlamp\nheadlamps\nheadland\nheadlands\nheadless\nheadlessness\nheadlight\nheadlights\nheadline\nheadlined\nheadliner\nheadliners\nheadlines\nheadlining\nheadlock\nheadlocks\nheadlong\nheadman\nheadmaster\nheadmasters\nheadmen\nheadmistress\nheadmistresses\nheadmost\nheadnote\nheadnotes\nheadphone\nheadphones\nheadpiece\nheadpieces\nheadpin\nheadpins\nheadquarter\nheadquartered\nheadquartering\nheadquarters\nheadrace\nheadraces\nheadrest\nheadrests\nheadroom\nheadrooms\nheads\nheadsail\nheadsails\nheadset\nheadsets\nheadship\nheadships\nheadshrinker\nheadshrinkers\nheadsman\nheadsmen\nheadstand\nheadstands\nheadstay\nheadstays\nheadstock\nheadstocks\nheadstone\nheadstones\nheadstrong\nheadwaiter\nheadwaiters\nheadwater\nheadwaters\nheadway\nheadways\nheadwind\nheadwinds\nheadword\nheadwords\nheadwork\nheadworks\nheady\nheal\nhealable\nhealed\nhealer\nhealers\nhealing\nheals\nhealth\nhealthful\nhealthfulness\nhealthier\nhealthiest\nhealthily\nhealthiness\nhealths\nhealthy\nheap\nheaped\nheaping\nheaps\nhear\nhearable\nheard\nhearer\nhearers\nhearing\nhearings\nhearken\nhearkened\nhearkening\nhearkens\nhears\nhearsay\nhearsays\nhearse\nhearsed\nhearses\nhearsing\nheart\nheartache\nheartaches\nheartbeat\nheartbeats\nheartbreak\nheartbreaker\nheartbreakers\nheartbreaking\nheartbreakingly\nheartbreaks\nheartbroken\nheartburn\nheartburns\nhearted\nhearten\nheartened\nheartening\nhearteningly\nheartens\nheartfelt\nhearth\nhearths\nhearthstone\nhearthstones\nheartier\nhearties\nheartiest\nheartily\nheartiness\nhearting\nheartland\nheartlands\nheartless\nheartlessly\nheartlessness\nhearts\nheartsick\nheartsickness\nheartwarming\nhearty\nheat\nheatable\nheated\nheatedly\nheater\nheaters\nheath\nheathen\nheathenish\nheathenishly\nheathenism\nheathenisms\nheathenize\nheathenized\nheathenizes\nheathenizing\nheathens\nheather\nheathers\nheathery\nheathier\nheathiest\nheathlike\nheaths\nheathy\nheating\nheatless\nheats\nheatstroke\nheaume\nheaumes\nheave\nheaved\nheaven\nheavenlier\nheavenliest\nheavenliness\nheavenly\nheavens\nheavenward\nheavenwards\nheaver\nheavers\nheaves\nheavier\nheavies\nheaviest\nheavily\nheaviness\nheaving\nheavy\nheavyhearted\nheavyheartedly\nheavyheartedness\nheavyset\nheavyweight\nheavyweights\nhebdomad\nhebdomads\nhebe\nhebephrenia\nhebephrenias\nhebephrenic\nhebes\nhebetate\nhebetated\nhebetates\nhebetating\nhebetic\nhebetude\nhebetudes\nhebraize\nhebraized\nhebraizes\nhebraizing\nhecatomb\nhecatombs\nheck\nheckle\nheckled\nheckler\nhecklers\nheckles\nheckling\nhecks\nhectare\nhectares\nhectic\nhectical\nhectically\nhecticly\nhectograph\nhectographic\nhectometer\nhectometers\nhector\nhectored\nhectoring\nhectors\nheddle\nheddles\nheder\nheders\nhedge\nhedged\nhedgehog\nhedgehogs\nhedgehop\nhedgehopped\nhedgehopper\nhedgehoppers\nhedgehopping\nhedgehops\nhedgepig\nhedgepigs\nhedger\nhedgerow\nhedgerows\nhedgers\nhedges\nhedgier\nhedgiest\nhedging\nhedgingly\nhedgy\nhedonic\nhedonics\nhedonism\nhedonisms\nhedonist\nhedonistic\nhedonistically\nhedonists\nheed\nheeded\nheeder\nheeders\nheedful\nheedfully\nheedfulness\nheeding\nheedless\nheedlessly\nheedlessness\nheeds\nheehaw\nheehawed\nheehawing\nheehaws\nheel\nheelball\nheelballs\nheeled\nheeler\nheelers\nheeling\nheelings\nheelless\nheelpost\nheelposts\nheels\nheeltap\nheeltaps\nheeze\nheezed\nheezes\nheezing\nheft\nhefted\nhefter\nhefters\nheftier\nheftiest\nheftily\nheftiness\nhefting\nhefts\nhefty\nhegari\nhegaris\nhegemonies\nhegemony\nhegira\nhegiras\nhegumen\nhegumene\nhegumenes\nhegumenies\nhegumens\nhegumeny\nheh\nhehs\nheifer\nheifers\nheigh\nheight\nheighten\nheightened\nheightening\nheightens\nheighth\nheighths\nheights\nheil\nheiled\nheiling\nheils\nheinie\nheinies\nheinous\nheinously\nheinousness\nheir\nheirdom\nheirdoms\nheired\nheiress\nheiresses\nheiring\nheirless\nheirloom\nheirlooms\nheirs\nheirship\nheirships\nheist\nheisted\nheister\nheisters\nheisting\nheists\nhejira\nhejiras\nhektare\nhektares\nheld\nheliac\nheliacal\nheliast\nheliasts\nhelical\nhelically\nhelices\nhelicities\nhelicity\nhelicoid\nhelicoids\nhelicon\nhelicons\nhelicopt\nhelicopted\nhelicopter\nhelicoptered\nhelicoptering\nhelicopters\nhelicopting\nhelicopts\nhelio\nheliograph\nheliographer\nheliographers\nheliographic\nheliographies\nheliographs\nheliography\nheliolatrous\nheliolatry\nheliometer\nheliometers\nheliometric\nheliometrically\nhelios\nheliotrope\nheliotropes\nheliotropic\nheliotropism\nheliotropisms\nheliozoan\nheliozoans\nhelipad\nhelipads\nheliport\nheliports\nhelistop\nhelistops\nhelium\nheliums\nhelix\nhelixes\nhell\nhellbent\nhellbox\nhellboxes\nhellcat\nhellcats\nhelled\nhellenization\nhellenizations\nhellenize\nhellenized\nhellenizer\nhellenizers\nhellenizes\nhellenizing\nheller\nhelleri\nhelleries\nhellers\nhellery\nhellfire\nhellfires\nhellhole\nhellholes\nhelling\nhellion\nhellions\nhellish\nhellishly\nhellishness\nhellkite\nhellkites\nhello\nhelloed\nhelloes\nhelloing\nhellos\nhells\nhelluva\nhelm\nhelmed\nhelmet\nhelmeted\nhelmeting\nhelmetlike\nhelmets\nhelming\nhelminth\nhelminths\nhelmless\nhelms\nhelmsman\nhelmsmen\nhelot\nhelotage\nhelotages\nhelotism\nhelotisms\nhelotries\nhelotry\nhelots\nhelp\nhelpable\nhelped\nhelper\nhelpers\nhelpful\nhelpfully\nhelpfulness\nhelping\nhelpings\nhelpless\nhelplessly\nhelplessness\nhelpmate\nhelpmates\nhelpmeet\nhelpmeets\nhelps\nhelve\nhelved\nhelves\nhelving\nhem\nhemagog\nhemagogs\nhemal\nhematal\nhematein\nhemateins\nhematic\nhematics\nhematin\nhematine\nhematines\nhematins\nhematite\nhematites\nhematitic\nhematoid\nhematologic\nhematologist\nhematologists\nhematology\nhematoma\nhematomas\nhematomata\nheme\nhemes\nhemic\nhemin\nhemins\nhemiola\nhemiolas\nhemipter\nhemipters\nhemisphere\nhemispheres\nhemispheric\nhemispherical\nhemline\nhemlines\nhemlock\nhemlocks\nhemmed\nhemmer\nhemmers\nhemming\nhemocoel\nhemocoels\nhemocyte\nhemocytes\nhemoglobin\nhemoglobinic\nhemoglobinous\nhemoglobins\nhemoid\nhemolyze\nhemolyzed\nhemolyzes\nhemolyzing\nhemophilia\nhemophiliac\nhemophiliacs\nhemorrhage\nhemorrhaged\nhemorrhages\nhemorrhagic\nhemorrhaging\nhemorrhoid\nhemorrhoidal\nhemorrhoids\nhemostat\nhemostatic\nhemostatics\nhemostats\nhemp\nhempen\nhempie\nhempier\nhempiest\nhemplike\nhemps\nhempseed\nhempseeds\nhempweed\nhempweeds\nhempy\nhems\nhemstitch\nhemstitched\nhemstitcher\nhemstitchers\nhemstitches\nhemstitching\nhen\nhenbane\nhenbanes\nhenbit\nhenbits\nhence\nhenceforth\nhenchman\nhenchmen\nhencoop\nhencoops\nhenequen\nhenequens\nhenequin\nhenequins\nhenhouse\nhenhouses\nheniquen\nheniquens\nhenlike\nhenna\nhennaed\nhennaing\nhennas\nhenneries\nhennery\nhenpeck\nhenpecked\nhenpecking\nhenpecks\nhenries\nhenry\nhenrys\nhens\nhent\nhented\nhenting\nhents\nhep\nheparin\nheparins\nhepatic\nhepatica\nhepaticae\nhepaticas\nhepatics\nhepatitides\nhepatitis\nhepatize\nhepatized\nhepatizes\nhepatizing\nhepatoma\nhepatomas\nhepatomata\nhepcat\nhepcats\nheptad\nheptads\nheptagon\nheptagonal\nheptagons\nheptane\nheptanes\nheptarch\nheptarchs\nheptose\nheptoses\nher\nherald\nheralded\nheraldic\nheraldically\nheralding\nheraldries\nheraldry\nheralds\nherb\nherbaceous\nherbage\nherbages\nherbal\nherbalist\nherbalists\nherbals\nherbaria\nherbarium\nherbicidal\nherbicide\nherbicides\nherbier\nherbiest\nherbivore\nherbivores\nherbivorous\nherbless\nherblike\nherbs\nherby\nhercules\nherculeses\nherd\nherded\nherder\nherders\nherdic\nherdics\nherding\nherdlike\nherdman\nherdmen\nherds\nherdsman\nherdsmen\nhere\nhereabout\nhereabouts\nhereafter\nhereafters\nhereat\nhereaway\nhereby\nheredes\nhereditament\nhereditaments\nhereditarily\nhereditary\nheredities\nheredity\nherein\nhereinafter\nhereinto\nhereof\nhereon\nheres\nheresies\nheresy\nheretic\nheretical\nheretically\nheretics\nhereto\nheretofore\nheretrices\nheretrix\nheretrixes\nhereunder\nhereunto\nhereupon\nherewith\nheriot\nheriots\nheritabilities\nheritability\nheritable\nheritage\nheritages\nheritor\nheritors\nheritrices\nheritrix\nheritrixes\nherl\nherls\nherm\nherma\nhermae\nhermaean\nhermai\nhermaphrodite\nhermaphrodites\nhermaphroditic\nhermaphroditism\nhermaphroditisms\nhermetic\nhermetically\nhermeticism\nhermetist\nhermetists\nhermit\nhermitage\nhermitages\nhermitic\nhermitism\nhermitisms\nhermitries\nhermitry\nhermits\nherms\nhern\nhernia\nherniae\nhernial\nhernias\nherniate\nherniated\nherniates\nherniating\nherns\nhero\nheroes\nheroic\nheroical\nheroically\nheroics\nheroin\nheroine\nheroines\nheroins\nheroism\nheroisms\nheroize\nheroized\nheroizes\nheroizing\nheron\nheronries\nheronry\nherons\nheros\nherpes\nherpeses\nherpetic\nherpetological\nherpetologist\nherpetologists\nherpetology\nherried\nherries\nherring\nherringbone\nherringbones\nherrings\nherry\nherrying\nhers\nherself\nhertz\nhertzes\nhes\nhesitance\nhesitancies\nhesitancy\nhesitant\nhesitantly\nhesitate\nhesitated\nhesitater\nhesitaters\nhesitates\nhesitating\nhesitatingly\nhesitation\nhesitations\nhessian\nhessians\nhessite\nhessites\nhest\nhests\nhet\nhetaera\nhetaerae\nhetaeras\nhetaeric\nhetaira\nhetairai\nhetairas\nhetero\nheterocycle\nheterocycles\nheterocyclic\nheterocyclics\nheterodox\nheterodoxies\nheterodoxy\nheterodyne\nheterodyned\nheterodynes\nheterodyning\nheterogeneities\nheterogeneity\nheterogeneous\nheterogeneously\nheterogeneousness\nheteronomous\nheteros\nheterosexual\nheterosexualities\nheterosexuality\nheterosexuals\nheth\nheths\nhetman\nhetmans\nhets\nheuch\nheuchs\nheugh\nheughs\nheuristic\nheuristically\nheuristics\nhew\nhewable\nhewed\nhewer\nhewers\nhewing\nhewn\nhews\nhex\nhexad\nhexade\nhexadecimal\nhexades\nhexadic\nhexads\nhexagon\nhexagonal\nhexagonally\nhexagons\nhexagram\nhexagrams\nhexahedron\nhexahedrons\nhexameter\nhexameters\nhexamine\nhexamines\nhexane\nhexanes\nhexapla\nhexaplar\nhexaplas\nhexapod\nhexapodies\nhexapods\nhexapody\nhexarchies\nhexarchy\nhexed\nhexer\nhexerei\nhexereis\nhexers\nhexes\nhexing\nhexone\nhexones\nhexosan\nhexosans\nhexose\nhexoses\nhexyl\nhexyls\nhey\nheyday\nheydays\nheydey\nheydeys\nhi\nhiatal\nhiatus\nhiatuses\nhibachi\nhibachis\nhibernal\nhibernate\nhibernated\nhibernates\nhibernating\nhibernation\nhibernations\nhibernator\nhibernators\nhibiscus\nhibiscuses\nhic\nhiccough\nhiccoughed\nhiccoughing\nhiccoughs\nhiccup\nhiccuped\nhiccuping\nhiccupped\nhiccupping\nhiccups\nhick\nhickey\nhickeys\nhickories\nhickory\nhicks\nhid\nhidable\nhidalgo\nhidalgos\nhidden\nhiddenly\nhide\nhideaway\nhideaways\nhidebound\nhided\nhideless\nhideous\nhideously\nhideousness\nhideout\nhideouts\nhider\nhiders\nhides\nhiding\nhidings\nhidroses\nhidrosis\nhidrotic\nhie\nhied\nhieing\nhiemal\nhierarch\nhierarchal\nhierarchic\nhierarchical\nhierarchically\nhierarchies\nhierarchs\nhierarchy\nhieratic\nhieroglyphic\nhieroglyphically\nhieroglyphics\nhies\nhiggle\nhiggled\nhiggler\nhigglers\nhiggles\nhiggling\nhigh\nhighball\nhighballed\nhighballing\nhighballs\nhighborn\nhighboy\nhighboys\nhighbred\nhighbrow\nhighbrowed\nhighbrowism\nhighbrows\nhighbush\nhigher\nhighest\nhighjack\nhighjacked\nhighjacking\nhighjacks\nhighland\nhighlander\nhighlanders\nhighlands\nhighlight\nhighlighted\nhighlighting\nhighlights\nhighly\nhighness\nhighnesses\nhighroad\nhighroads\nhighs\nhight\nhightail\nhightailed\nhightailing\nhightails\nhighted\nhighth\nhighths\nhighting\nhights\nhighway\nhighwayman\nhighwaymen\nhighways\nhijack\nhijacked\nhijacker\nhijackers\nhijacking\nhijacks\nhijinks\nhike\nhiked\nhiker\nhikers\nhikes\nhiking\nhila\nhilar\nhilarious\nhilariously\nhilariousness\nhilarities\nhilarity\nhilding\nhildings\nhili\nhill\nhillbillies\nhillbilly\nhilled\nhiller\nhillers\nhillier\nhilliest\nhilling\nhillo\nhilloa\nhilloaed\nhilloaing\nhilloas\nhillock\nhillocks\nhillocky\nhilloed\nhilloes\nhilloing\nhillos\nhills\nhillside\nhillsides\nhilltop\nhilltops\nhilly\nhilt\nhilted\nhilting\nhiltless\nhilts\nhilum\nhilus\nhim\nhimatia\nhimation\nhimations\nhimself\nhin\nhind\nhinder\nhindered\nhinderer\nhinderers\nhindering\nhinders\nhindgut\nhindguts\nhindmost\nhindquarter\nhindquarters\nhindrance\nhindrances\nhinds\nhindsight\nhinge\nhinged\nhinger\nhingers\nhinges\nhinging\nhinnied\nhinnies\nhinny\nhinnying\nhins\nhint\nhinted\nhinter\nhinterland\nhinterlands\nhinters\nhinting\nhints\nhip\nhipbone\nhipbones\nhipless\nhiplike\nhipness\nhipnesses\nhipparch\nhipparchs\nhipped\nhipper\nhippest\nhippie\nhippier\nhippies\nhippiest\nhipping\nhippish\nhippo\nhippodrome\nhippodromes\nhippopotami\nhippopotamus\nhippopotamuses\nhippos\nhippy\nhips\nhipshot\nhipster\nhipsters\nhirable\nhiragana\nhiraganas\nhircine\nhire\nhireable\nhired\nhireling\nhirelings\nhirer\nhirers\nhires\nhiring\nhirple\nhirpled\nhirples\nhirpling\nhirsel\nhirseled\nhirseling\nhirselled\nhirselling\nhirsels\nhirsle\nhirsled\nhirsles\nhirsling\nhirsute\nhirsuteness\nhirudin\nhirudins\nhis\nhisn\nhispid\nhiss\nhissed\nhisself\nhisser\nhissers\nhisses\nhissing\nhissings\nhist\nhistamin\nhistamine\nhistamines\nhistaminic\nhistamins\nhisted\nhistidin\nhistidins\nhisting\nhistogen\nhistogens\nhistogram\nhistograms\nhistoid\nhistologic\nhistological\nhistologically\nhistologies\nhistologist\nhistologists\nhistology\nhistone\nhistones\nhistorian\nhistorians\nhistoric\nhistorical\nhistorically\nhistoricalness\nhistoricism\nhistoricisms\nhistoricist\nhistoricists\nhistoricities\nhistoricity\nhistories\nhistoriographer\nhistoriographers\nhistoriographic\nhistoriographical\nhistoriographically\nhistoriographies\nhistoriography\nhistory\nhistrionic\nhistrionically\nhistrionics\nhists\nhit\nhitch\nhitched\nhitcher\nhitchers\nhitches\nhitchhike\nhitchhiked\nhitchhiker\nhitchhikers\nhitchhikes\nhitchhiking\nhitching\nhither\nhitherto\nhitless\nhits\nhitter\nhitters\nhitting\nhive\nhived\nhiveless\nhives\nhiving\nhm\nhmm\nho\nhoactzin\nhoactzines\nhoactzins\nhoagie\nhoagies\nhoagy\nhoar\nhoard\nhoarded\nhoarder\nhoarders\nhoarding\nhoardings\nhoards\nhoarfrost\nhoarfrosts\nhoarier\nhoariest\nhoarily\nhoariness\nhoars\nhoarse\nhoarsely\nhoarsen\nhoarsened\nhoarseness\nhoarsening\nhoarsens\nhoarser\nhoarsest\nhoary\nhoatzin\nhoatzines\nhoatzins\nhoax\nhoaxed\nhoaxer\nhoaxers\nhoaxes\nhoaxing\nhob\nhobbed\nhobbies\nhobbing\nhobble\nhobbled\nhobbler\nhobblers\nhobbles\nhobbling\nhobby\nhobbyhorse\nhobbyhorses\nhobbyist\nhobbyists\nhobgoblin\nhobgoblins\nhoblike\nhobnail\nhobnailed\nhobnails\nhobnob\nhobnobbed\nhobnobbing\nhobnobs\nhobo\nhoboed\nhoboes\nhoboing\nhoboism\nhoboisms\nhobos\nhobs\nhock\nhocked\nhocker\nhockers\nhockey\nhockeys\nhocking\nhocks\nhockshop\nhockshops\nhocus\nhocused\nhocuses\nhocusing\nhocussed\nhocusses\nhocussing\nhod\nhodad\nhodaddies\nhodaddy\nhodads\nhodden\nhoddens\nhoddin\nhoddins\nhodgepodge\nhods\nhoe\nhoecake\nhoecakes\nhoed\nhoedown\nhoedowns\nhoeing\nhoelike\nhoer\nhoers\nhoes\nhog\nhogan\nhogans\nhogback\nhogbacks\nhogfish\nhogfishes\nhogg\nhogged\nhogger\nhoggers\nhogging\nhoggish\nhoggishly\nhoggishness\nhoggs\nhoglike\nhogmanay\nhogmanays\nhogmane\nhogmanes\nhogmenay\nhogmenays\nhognose\nhognoses\nhognut\nhognuts\nhogs\nhogshead\nhogsheads\nhogtie\nhogtied\nhogtieing\nhogties\nhogtying\nhogwash\nhogwashes\nhogweed\nhogweeds\nhoick\nhoicked\nhoicking\nhoicks\nhoiden\nhoidened\nhoidening\nhoidens\nhoise\nhoised\nhoises\nhoising\nhoist\nhoisted\nhoister\nhoisters\nhoisting\nhoists\nhoke\nhoked\nhokes\nhokey\nhoking\nhokku\nhokum\nhokums\nhokypokies\nhokypoky\nholard\nholards\nhold\nholdable\nholdall\nholdalls\nholdback\nholdbacks\nholden\nholder\nholders\nholdfast\nholdfasts\nholding\nholdings\nholdout\nholdouts\nholdover\nholdovers\nholds\nholdup\nholdups\nhole\nholed\nholeless\nholes\nholey\nholibut\nholibuts\nholiday\nholidayed\nholidaying\nholidays\nholier\nholies\nholiest\nholily\nholiness\nholinesses\nholing\nholism\nholisms\nholist\nholistic\nholistically\nholists\nholk\nholked\nholking\nholks\nholla\nhollaed\nhollaing\nholland\nhollands\nhollas\nholler\nhollered\nhollering\nhollers\nhollies\nhollo\nholloa\nholloaed\nholloaing\nholloas\nholloed\nholloes\nholloing\nholloo\nhollooed\nhollooing\nholloos\nhollos\nhollow\nholloware\nhollowed\nhollower\nhollowest\nhollowing\nhollowly\nhollowness\nhollows\nhollowware\nholly\nhollyhock\nhollyhocks\nholm\nholmic\nholmium\nholmiums\nholms\nholocaust\nholocausts\nhologram\nholograms\nholograph\nholographic\nholographies\nholographs\nholography\nhologynies\nhologyny\nholotype\nholotypes\nholozoic\nholp\nholpen\nhols\nholstein\nholsteins\nholster\nholsters\nholt\nholts\nholy\nholyday\nholydays\nholytide\nholytides\nhom\nhomage\nhomaged\nhomager\nhomagers\nhomages\nhomaging\nhombre\nhombres\nhomburg\nhomburgs\nhome\nhomebodies\nhomebody\nhomebred\nhomebreds\nhomecoming\nhomecomings\nhomed\nhomegrown\nhomeland\nhomelands\nhomeless\nhomelier\nhomeliest\nhomelike\nhomeliness\nhomely\nhomemade\nhomemaker\nhomemakers\nhomemaking\nhomeopath\nhomeopathic\nhomeopathically\nhomeopathies\nhomeopaths\nhomeopathy\nhomeostatic\nhomer\nhomered\nhomering\nhomeroom\nhomerooms\nhomers\nhomes\nhomesick\nhomesickness\nhomesite\nhomesites\nhomespun\nhomespuns\nhomestead\nhomesteaded\nhomesteader\nhomesteaders\nhomesteading\nhomesteads\nhomestretch\nhomestretches\nhometown\nhometowns\nhomeward\nhomewards\nhomework\nhomeworks\nhomey\nhomeyness\nhomicidal\nhomicidally\nhomicide\nhomicides\nhomier\nhomiest\nhomiletic\nhomiletical\nhomiletics\nhomilies\nhomilist\nhomilists\nhomily\nhominess\nhominesses\nhoming\nhominian\nhominians\nhominid\nhominids\nhominies\nhominine\nhominoid\nhominoids\nhominy\nhommock\nhommocks\nhomo\nhomogamies\nhomogamy\nhomogeneities\nhomogeneity\nhomogeneous\nhomogeneously\nhomogeneousness\nhomogenies\nhomogenization\nhomogenizations\nhomogenize\nhomogenized\nhomogenizer\nhomogenizers\nhomogenizes\nhomogenizing\nhomogenous\nhomogeny\nhomogonies\nhomogony\nhomograph\nhomographic\nhomographs\nhomolog\nhomological\nhomologically\nhomologies\nhomologize\nhomologized\nhomologizer\nhomologizers\nhomologizes\nhomologizing\nhomologous\nhomologs\nhomology\nhomonym\nhomonymic\nhomonymies\nhomonymous\nhomonymously\nhomonyms\nhomonymy\nhomophone\nhomophones\nhomophonic\nhomophonies\nhomophonous\nhomophony\nhomos\nhomosexual\nhomosexualities\nhomosexuality\nhomosexuals\nhomy\nhonan\nhonans\nhoncho\nhonchos\nhonda\nhondas\nhone\nhoned\nhoner\nhoners\nhones\nhonest\nhonester\nhonestest\nhonesties\nhonestly\nhonesty\nhonewort\nhoneworts\nhoney\nhoneybee\nhoneybees\nhoneybun\nhoneybuns\nhoneycomb\nhoneycombed\nhoneycombing\nhoneycombs\nhoneydew\nhoneydews\nhoneyed\nhoneyful\nhoneying\nhoneymoon\nhoneymooned\nhoneymooner\nhoneymooners\nhoneymooning\nhoneymoons\nhoneys\nhoneysuckle\nhoneysuckles\nhong\nhongs\nhonied\nhoning\nhonk\nhonked\nhonker\nhonkers\nhonkey\nhonkeys\nhonkie\nhonkies\nhonking\nhonks\nhonky\nhonor\nhonorable\nhonorableness\nhonorably\nhonorand\nhonorands\nhonoraria\nhonoraries\nhonorarium\nhonorary\nhonored\nhonoree\nhonorees\nhonorer\nhonorers\nhonorific\nhonorifically\nhonorifics\nhonoring\nhonors\nhonour\nhonoured\nhonourer\nhonourers\nhonouring\nhonours\nhons\nhooch\nhooches\nhood\nhooded\nhoodie\nhoodies\nhooding\nhoodless\nhoodlike\nhoodlum\nhoodlums\nhoodoo\nhoodooed\nhoodooing\nhoodoos\nhoods\nhoodwink\nhoodwinked\nhoodwinker\nhoodwinkers\nhoodwinking\nhoodwinks\nhooey\nhooeys\nhoof\nhoofbeat\nhoofbeats\nhoofed\nhoofer\nhoofers\nhoofing\nhoofless\nhooflike\nhoofs\nhook\nhooka\nhookah\nhookahs\nhookas\nhooked\nhooker\nhookers\nhookey\nhookeys\nhookier\nhookies\nhookiest\nhooking\nhookless\nhooklet\nhooklets\nhooklike\nhooknose\nhooknoses\nhooks\nhookup\nhookups\nhookworm\nhookworms\nhooky\nhoolie\nhooligan\nhooliganism\nhooliganisms\nhooligans\nhooly\nhoop\nhooped\nhooper\nhoopers\nhooping\nhoopla\nhooplas\nhoopless\nhooplike\nhoopoe\nhoopoes\nhoopoo\nhoopoos\nhoops\nhoopster\nhoopsters\nhoorah\nhoorahed\nhoorahing\nhoorahs\nhooray\nhoorayed\nhooraying\nhoorays\nhoosegow\nhoosegows\nhoosgow\nhoosgows\nhoot\nhootch\nhootches\nhooted\nhootenannies\nhootenanny\nhooter\nhooters\nhooting\nhoots\nhooves\nhop\nhope\nhoped\nhopeful\nhopefully\nhopefulness\nhopefuls\nhopeless\nhopelessly\nhopelessness\nhoper\nhopers\nhopes\nhophead\nhopheads\nhoping\nhoplite\nhoplites\nhoplitic\nhopped\nhopper\nhoppers\nhopping\nhopple\nhoppled\nhopples\nhoppling\nhops\nhopsack\nhopsacks\nhopscotch\nhoptoad\nhoptoads\nhora\nhorah\nhorahs\nhoral\nhorary\nhoras\nhorde\nhorded\nhordein\nhordeins\nhordes\nhording\nhorehound\nhorehounds\nhorizon\nhorizons\nhorizontal\nhorizontally\nhorizontals\nhormonal\nhormone\nhormones\nhormonic\nhorn\nhornbeam\nhornbeams\nhornbill\nhornbills\nhornbook\nhornbooks\nhorned\nhornedness\nhornet\nhornets\nhornfels\nhornier\nhorniest\nhornily\nhorniness\nhorning\nhornito\nhornitos\nhornless\nhornlessness\nhornlike\nhornpipe\nhornpipes\nhornpout\nhornpouts\nhorns\nhorntail\nhorntails\nhornworm\nhornworms\nhornwort\nhornworts\nhorny\nhorologe\nhorologes\nhorologic\nhorologies\nhorologist\nhorologists\nhorology\nhoroscope\nhoroscopes\nhorrendous\nhorrendously\nhorrent\nhorrible\nhorribleness\nhorribles\nhorribly\nhorrid\nhorridly\nhorridness\nhorrific\nhorrifically\nhorrified\nhorrifies\nhorrify\nhorrifying\nhorrifyingly\nhorror\nhorrors\nhorse\nhorseback\nhorsebacks\nhorsecar\nhorsecars\nhorsed\nhorseflies\nhorsefly\nhorsehair\nhorsehairs\nhorsehide\nhorsehides\nhorseiest\nhorselaugh\nhorselaughs\nhorselike\nhorseman\nhorsemanship\nhorsemen\nhorseplay\nhorseplayer\nhorseplayers\nhorsepower\nhorseradish\nhorseradishes\nhorses\nhorseshoe\nhorseshoed\nhorseshoer\nhorseshoers\nhorseshoes\nhorseshoing\nhorsetail\nhorsetails\nhorsewhip\nhorsewhipped\nhorsewhipper\nhorsewhippers\nhorsewhipping\nhorsewhips\nhorsewoman\nhorsewomen\nhorsey\nhorsier\nhorsiest\nhorsily\nhorsing\nhorst\nhorste\nhorstes\nhorsts\nhorsy\nhortative\nhortatively\nhorticultural\nhorticulturally\nhorticulture\nhorticultures\nhorticulturist\nhorticulturists\nhosanna\nhosannaed\nhosannaing\nhosannas\nhose\nhosed\nhosel\nhosels\nhosen\nhoses\nhosier\nhosieries\nhosiers\nhosiery\nhosing\nhospice\nhospices\nhospitable\nhospitably\nhospital\nhospitalities\nhospitality\nhospitalization\nhospitalizations\nhospitalize\nhospitalized\nhospitalizes\nhospitalizing\nhospitals\nhospitia\nhospodar\nhospodars\nhost\nhosta\nhostage\nhostages\nhosted\nhostel\nhosteled\nhosteler\nhostelers\nhosteling\nhostelries\nhostelry\nhostels\nhostess\nhostessed\nhostesses\nhostessing\nhostile\nhostilely\nhostiles\nhostilities\nhostility\nhosting\nhostler\nhostlers\nhostly\nhosts\nhot\nhotbed\nhotbeds\nhotblood\nhotbloods\nhotbox\nhotboxes\nhotcake\nhotcakes\nhotch\nhotched\nhotches\nhotching\nhotchpot\nhotchpots\nhotdog\nhotdogged\nhotdogging\nhotdogs\nhotel\nhotelier\nhoteliers\nhotelman\nhotelmen\nhotels\nhotfoot\nhotfooted\nhotfooting\nhotfoots\nhothead\nhotheaded\nhotheadedly\nhotheadedness\nhotheads\nhothouse\nhothouses\nhotly\nhotness\nhotnesses\nhotpress\nhotpressed\nhotpresses\nhotpressing\nhotrod\nhotrods\nhots\nhotshot\nhotshots\nhotspur\nhotspurs\nhotted\nhotter\nhottest\nhotting\nhottish\nhoudah\nhoudahs\nhound\nhounded\nhounder\nhounders\nhounding\nhounds\nhour\nhourglass\nhourglasses\nhouri\nhouris\nhourly\nhours\nhouse\nhouseboat\nhouseboats\nhouseboy\nhouseboys\nhousebreak\nhousebreaker\nhousebreakers\nhousebreaking\nhousebreaks\nhousebroke\nhousebroken\nhouseclean\nhousecleaned\nhousecleaning\nhousecleans\nhousecoat\nhousecoats\nhoused\nhousedress\nhousedresses\nhouseflies\nhousefly\nhouseful\nhousefuls\nhousehold\nhouseholder\nhouseholders\nhouseholds\nhousekeeper\nhousekeepers\nhousekeeping\nhousel\nhouseled\nhouselights\nhouseling\nhouselled\nhouselling\nhousels\nhousemaid\nhousemaids\nhouseman\nhousemen\nhousemother\nhousemothers\nhouser\nhousers\nhouses\nhousetop\nhousetops\nhousewarming\nhousewarmings\nhousewife\nhousewifely\nhousewifery\nhousewives\nhousework\nhousing\nhousings\nhove\nhovel\nhoveled\nhoveling\nhovelled\nhovelling\nhovels\nhover\nhovered\nhoverer\nhoverers\nhovering\nhoveringly\nhovers\nhow\nhowbeit\nhowdah\nhowdahs\nhowdie\nhowdies\nhowdy\nhowe\nhowes\nhowever\nhowf\nhowff\nhowffs\nhowfs\nhowitzer\nhowitzers\nhowk\nhowked\nhowking\nhowks\nhowl\nhowled\nhowler\nhowlers\nhowlet\nhowlets\nhowling\nhowlingly\nhowls\nhows\nhowsoever\nhoy\nhoya\nhoyas\nhoyden\nhoydened\nhoydening\nhoydenish\nhoydens\nhoyle\nhoyles\nhoys\nhuarache\nhuaraches\nhuaracho\nhuarachos\nhub\nhubbies\nhubbub\nhubbubs\nhubby\nhubcap\nhubcaps\nhubris\nhubrises\nhubristic\nhubs\nhuck\nhuckle\nhuckleberries\nhuckleberry\nhuckles\nhucks\nhuckster\nhuckstered\nhuckstering\nhucksterism\nhucksterisms\nhucksters\nhuddle\nhuddled\nhuddler\nhuddlers\nhuddles\nhuddling\nhue\nhued\nhueless\nhues\nhuff\nhuffed\nhuffier\nhuffiest\nhuffily\nhuffiness\nhuffing\nhuffish\nhuffs\nhuffy\nhug\nhuge\nhugely\nhugeness\nhugenesses\nhugeous\nhuger\nhugest\nhuggable\nhugged\nhugger\nhuggers\nhugging\nhugs\nhuh\nhuic\nhula\nhulas\nhulk\nhulked\nhulkier\nhulkiest\nhulking\nhulks\nhulky\nhull\nhullabaloo\nhullabaloos\nhulled\nhuller\nhullers\nhulling\nhullo\nhulloa\nhulloaed\nhulloaing\nhulloas\nhulloed\nhulloes\nhulloing\nhullos\nhulls\nhum\nhuman\nhumane\nhumanely\nhumaneness\nhumaner\nhumanest\nhumanise\nhumanised\nhumanises\nhumanising\nhumanism\nhumanisms\nhumanist\nhumanistic\nhumanistically\nhumanists\nhumanitarian\nhumanitarianism\nhumanitarianisms\nhumanitarians\nhumanities\nhumanity\nhumanization\nhumanizations\nhumanize\nhumanized\nhumanizer\nhumanizers\nhumanizes\nhumanizing\nhumankind\nhumanlike\nhumanly\nhumanness\nhumanoid\nhumanoids\nhumans\nhumate\nhumates\nhumble\nhumbled\nhumbleness\nhumbler\nhumblers\nhumbles\nhumblest\nhumbling\nhumbly\nhumbug\nhumbugged\nhumbugging\nhumbugs\nhumdrum\nhumdrums\nhumectant\nhumectants\nhumeral\nhumerals\nhumeri\nhumerus\nhumic\nhumid\nhumidified\nhumidifier\nhumidifiers\nhumidifies\nhumidify\nhumidifying\nhumidities\nhumidity\nhumidly\nhumidor\nhumidors\nhumified\nhumiliate\nhumiliated\nhumiliates\nhumiliating\nhumiliatingly\nhumiliation\nhumiliations\nhumilities\nhumility\nhummable\nhummed\nhummer\nhummers\nhumming\nhummingbird\nhummingbirds\nhummock\nhummocks\nhummocky\nhumor\nhumoral\nhumored\nhumoresque\nhumorful\nhumoring\nhumorist\nhumoristic\nhumorists\nhumorless\nhumorlessness\nhumorous\nhumorously\nhumorousness\nhumors\nhumour\nhumoured\nhumouring\nhumours\nhump\nhumpback\nhumpbacked\nhumpbacks\nhumped\nhumph\nhumphed\nhumphing\nhumphs\nhumpier\nhumpiest\nhumping\nhumpless\nhumps\nhumpy\nhums\nhumus\nhumuses\nhun\nhunch\nhunchback\nhunchbacked\nhunchbacks\nhunched\nhunches\nhunching\nhundred\nhundredfold\nhundreds\nhundredth\nhundredths\nhundredweight\nhundredweights\nhung\nhunger\nhungered\nhungering\nhungers\nhungrier\nhungriest\nhungrily\nhungriness\nhungry\nhunh\nhunk\nhunker\nhunkered\nhunkering\nhunkers\nhunkies\nhunks\nhunky\nhunnish\nhuns\nhunt\nhuntable\nhunted\nhuntedly\nhunter\nhunters\nhunting\nhuntings\nhuntress\nhuntresses\nhunts\nhuntsman\nhuntsmen\nhup\nhurdies\nhurdle\nhurdled\nhurdler\nhurdlers\nhurdles\nhurdling\nhurds\nhurl\nhurled\nhurler\nhurlers\nhurley\nhurleys\nhurlies\nhurling\nhurlings\nhurls\nhurly\nhurrah\nhurrahed\nhurrahing\nhurrahs\nhurray\nhurrayed\nhurraying\nhurrays\nhurricane\nhurricanes\nhurried\nhurriedly\nhurriedness\nhurrier\nhurriers\nhurries\nhurry\nhurrying\nhurryingly\nhurst\nhurt\nhurter\nhurters\nhurtful\nhurtfully\nhurtfulness\nhurting\nhurtle\nhurtled\nhurtles\nhurtless\nhurtling\nhurts\nhusband\nhusbanded\nhusbander\nhusbanders\nhusbanding\nhusbandman\nhusbandmen\nhusbandries\nhusbandry\nhusbands\nhush\nhushaby\nhushed\nhushedly\nhushes\nhushful\nhushing\nhusk\nhusked\nhusker\nhuskers\nhuskier\nhuskies\nhuskiest\nhuskily\nhuskiness\nhusking\nhuskings\nhusklike\nhusks\nhusky\nhussar\nhussars\nhussies\nhussy\nhustings\nhustle\nhustled\nhustler\nhustlers\nhustles\nhustling\nhuswife\nhuswifes\nhuswives\nhut\nhutch\nhutched\nhutches\nhutching\nhutlike\nhutment\nhutments\nhuts\nhutted\nhutting\nhutzpa\nhutzpah\nhutzpahs\nhutzpas\nhuzza\nhuzzaed\nhuzzah\nhuzzahed\nhuzzahing\nhuzzahs\nhuzzaing\nhuzzas\nhwan\nhyacinth\nhyacinths\nhyaena\nhyaenas\nhyaenic\nhyalin\nhyaline\nhyalines\nhyalins\nhyalite\nhyalites\nhyalogen\nhyalogens\nhyaloid\nhyaloids\nhybrid\nhybridization\nhybridizations\nhybridize\nhybridized\nhybridizer\nhybridizers\nhybridizes\nhybridizing\nhybrids\nhybris\nhybrises\nhydatid\nhydatids\nhydra\nhydracid\nhydracids\nhydrae\nhydragog\nhydragogs\nhydrangea\nhydrangeas\nhydrant\nhydranth\nhydranths\nhydrants\nhydras\nhydrase\nhydrases\nhydrate\nhydrated\nhydrates\nhydrating\nhydration\nhydrations\nhydrator\nhydrators\nhydraulic\nhydraulically\nhydraulics\nhydria\nhydriae\nhydric\nhydrid\nhydride\nhydrides\nhydrids\nhydro\nhydrocarbon\nhydrocarbons\nhydrochloric\nhydrochloride\nhydrochlorides\nhydrodynamic\nhydrodynamically\nhydrodynamics\nhydroelectric\nhydroelectricities\nhydroelectricity\nhydrofoil\nhydrofoils\nhydrogel\nhydrogels\nhydrogen\nhydrogenate\nhydrogenated\nhydrogenates\nhydrogenating\nhydrogenation\nhydrogenations\nhydrogenous\nhydrogens\nhydroid\nhydroids\nhydrokinetic\nhydrokinetics\nhydrologic\nhydrological\nhydrologically\nhydrologies\nhydrologist\nhydrologists\nhydrology\nhydrolytic\nhydrolyzable\nhydrolyze\nhydrolyzed\nhydrolyzes\nhydrolyzing\nhydromel\nhydromels\nhydrometer\nhydrometers\nhydrometric\nhydrometrical\nhydrometries\nhydrometry\nhydronic\nhydrophobia\nhydrophobias\nhydrophobic\nhydrophobicities\nhydrophobicity\nhydropic\nhydroplane\nhydroplaned\nhydroplanes\nhydroplaning\nhydroponic\nhydroponically\nhydroponics\nhydrops\nhydropses\nhydropsies\nhydropsy\nhydros\nhydrosol\nhydrosols\nhydrostatic\nhydrostatically\nhydrostatics\nhydrotherapy\nhydrous\nhydroxide\nhydroxides\nhydroxy\nhydroxyl\nhydroxyls\nhyena\nhyenas\nhyenic\nhyenine\nhyenoid\nhyetal\nhygeist\nhygeists\nhygieist\nhygieists\nhygiene\nhygienes\nhygienic\nhygienically\nhygienics\nhygienist\nhygienists\nhygrometer\nhygrometers\nhygrometric\nhygroscope\nhygroscopes\nhygroscopic\nhygroscopically\nhygroscopicities\nhygroscopicity\nhying\nhyla\nhylas\nhylozoic\nhymen\nhymenal\nhymeneal\nhymeneals\nhymenia\nhymenial\nhymenium\nhymeniums\nhymens\nhymn\nhymnal\nhymnals\nhymnaries\nhymnary\nhymnbook\nhymnbooks\nhymned\nhymning\nhymnist\nhymnists\nhymnless\nhymnlike\nhymnodies\nhymnody\nhymnologies\nhymnology\nhymns\nhyoid\nhyoidal\nhyoidean\nhyoids\nhyoscine\nhyoscines\nhyp\nhype\nhyped\nhyper\nhyperactive\nhyperactivities\nhyperactivity\nhyperbola\nhyperbolae\nhyperbolas\nhyperbole\nhyperboles\nhyperbolic\nhyperbolically\nhypercritic\nhypercritical\nhypercritically\nhypercriticism\nhypercriticisms\nhypergol\nhypergols\nhyperon\nhyperons\nhyperope\nhyperopes\nhypersensitive\nhypersensitivities\nhypersensitivity\nhypertension\nhypertensions\nhyperventilation\nhyperventilations\nhypes\nhypha\nhyphae\nhyphal\nhyphemia\nhyphemias\nhyphen\nhyphenate\nhyphenated\nhyphenates\nhyphenating\nhyphenation\nhyphenations\nhyphened\nhyphening\nhyphenless\nhyphens\nhypnic\nhypnoid\nhypnoses\nhypnosis\nhypnotic\nhypnotically\nhypnotics\nhypnotism\nhypnotisms\nhypnotist\nhypnotists\nhypnotizability\nhypnotizable\nhypnotize\nhypnotized\nhypnotizes\nhypnotizing\nhypo\nhypoacid\nhypochondria\nhypochondriac\nhypochondriacal\nhypochondriacally\nhypochondriacs\nhypochondrias\nhypocrisies\nhypocrisy\nhypocrite\nhypocrites\nhypocritical\nhypocritically\nhypoderm\nhypodermal\nhypodermic\nhypodermically\nhypodermics\nhypoderms\nhypoed\nhypogea\nhypogeal\nhypogean\nhypogene\nhypogeum\nhypogynies\nhypogyny\nhypoing\nhyponea\nhyponeas\nhyponoia\nhyponoias\nhypopnea\nhypopneas\nhypopyon\nhypopyons\nhypos\nhypotenuse\nhypotenuses\nhypothalamic\nhypothalamus\nhypothec\nhypothecate\nhypothecated\nhypothecates\nhypothecating\nhypothecation\nhypothecations\nhypothecator\nhypothecators\nhypothecs\nhypotheses\nhypothesis\nhypothesize\nhypothesized\nhypothesizes\nhypothesizing\nhypothetical\nhypothetically\nhypoxia\nhypoxias\nhypoxic\nhyps\nhyraces\nhyracoid\nhyracoids\nhyrax\nhyraxes\nhyson\nhysons\nhyssop\nhyssops\nhysterectomies\nhysterectomy\nhystereses\nhysteresis\nhysteretic\nhysteria\nhysterias\nhysteric\nhysterical\nhysterically\nhysterics\nhyte\ni\niamb\niambi\niambic\niambics\niambs\niambus\niambuses\niatric\niatrical\nibex\nibexes\nibices\nibidem\nibis\nibises\nice\niceberg\nicebergs\niceblink\niceblinks\niceboat\niceboats\nicebound\nicebox\niceboxes\nicebreaker\nicebreakers\nicecap\nicecaps\niced\nicefall\nicefalls\nicehouse\nicehouses\nicekhana\nicekhanas\niceless\nicelike\niceman\nicemen\nices\nich\nichneumon\nichneumons\nichnite\nichnites\nichor\nichorous\nichors\nichs\nichthyic\nichthyological\nichthyologically\nichthyologist\nichthyologists\nichthyology\nicicle\nicicled\nicicles\nicier\niciest\nicily\niciness\nicinesses\nicing\nicings\nick\nicker\nickers\nickier\nickiest\nicky\nicon\nicones\niconic\niconical\niconically\niconoclasm\niconoclasms\niconoclast\niconoclastic\niconoclastically\niconoclasts\niconographer\niconographers\niconographic\niconographical\niconographically\niconographies\niconography\nicons\nicteric\nicterics\nicterus\nicteruses\nictic\nictus\nictuses\nicy\nid\nidea\nideal\nidealess\nidealise\nidealised\nidealises\nidealising\nidealism\nidealisms\nidealist\nidealistic\nidealistically\nidealists\nidealities\nideality\nidealization\nidealizations\nidealize\nidealized\nidealizer\nidealizers\nidealizes\nidealizing\nideally\nidealogies\nidealogy\nideals\nideas\nideate\nideated\nideates\nideating\nideation\nideational\nideations\nideative\nidem\nidentic\nidentical\nidentically\nidenticalness\nidenties\nidentifiable\nidentifiably\nidentification\nidentifications\nidentified\nidentifier\nidentifiers\nidentifies\nidentify\nidentifying\nidentities\nidentity\nideogram\nideogramic\nideogrammatic\nideogrammic\nideograms\nideograph\nideographic\nideographically\nideographs\nideologic\nideological\nideologically\nideologies\nideologist\nideologists\nideologue\nideologues\nideology\nides\nidiocies\nidiocy\nidiographic\nidiolect\nidiolects\nidiom\nidiomatic\nidiomatically\nidiomaticness\nidioms\nidiopathic\nidiosyncrasies\nidiosyncrasy\nidiosyncratic\nidiosyncratically\nidiot\nidiotic\nidiotically\nidioticalness\nidiotism\nidiotisms\nidiots\nidle\nidled\nidleness\nidlenesses\nidler\nidlers\nidles\nidlesse\nidlesses\nidlest\nidling\nidly\nidocrase\nidocrases\nidol\nidolater\nidolaters\nidolatries\nidolatrous\nidolatrously\nidolatrousness\nidolatry\nidolise\nidolised\nidoliser\nidolisers\nidolises\nidolising\nidolism\nidolisms\nidolization\nidolizations\nidolize\nidolized\nidolizer\nidolizers\nidolizes\nidolizing\nidols\nidoneities\nidoneity\nidoneous\nids\nidyl\nidylist\nidylists\nidyll\nidyllic\nidyllically\nidyllist\nidyllists\nidylls\nidyls\nif\niffier\niffiest\niffiness\niffinesses\niffy\nifs\nigloo\nigloos\niglu\niglus\nignatia\nignatias\nigneous\nignescent\nignified\nignifies\nignify\nignifying\nignitable\nignite\nignited\nigniter\nigniters\nignites\nigniting\nignition\nignitions\nignitor\nignitors\nignitron\nignitrons\nignobility\nignoble\nignobleness\nignobly\nignominies\nignominious\nignominiously\nignominiousness\nignominy\nignorable\nignoramus\nignoramuses\nignorance\nignorances\nignorant\nignorantly\nignore\nignored\nignorer\nignorers\nignores\nignoring\niguana\niguanas\niguanian\niguanians\nihram\nihrams\nikebana\nikebanas\nikon\nikons\nilea\nileac\nileal\nileitides\nileitis\nileum\nileus\nileuses\nilex\nilexes\nilia\niliac\niliad\niliads\nilial\nilium\nilk\nilka\nilks\nill\nillation\nillations\nillative\nillatives\nillegal\nillegalities\nillegality\nillegalization\nillegalizations\nillegalize\nillegalized\nillegalizes\nillegalizing\nillegally\nillegibility\nillegible\nillegibly\nillegitimacies\nillegitimacy\nillegitimate\nillegitimately\nilliberal\nilliberalism\nilliberality\nilliberally\nilliberalness\nillicit\nillicitly\nillimitability\nillimitable\nillimitableness\nillimitably\nillinium\nilliniums\nilliquid\nilliquidity\nillite\nilliteracies\nilliteracy\nilliterate\nilliterately\nilliterateness\nilliterates\nillites\nillitic\nillness\nillnesses\nillogic\nillogical\nillogicalities\nillogicality\nillogically\nillogicalness\nillogics\nills\nillume\nillumed\nillumes\nilluminable\nilluminance\nilluminances\nilluminate\nilluminated\nilluminates\nilluminati\nilluminating\nilluminatingly\nillumination\nilluminations\nilluminative\nilluminator\nilluminators\nillumine\nillumined\nillumines\nilluming\nillumining\nilluminism\nilluminisms\nilluminist\nilluminists\nillusion\nillusional\nillusionary\nillusionism\nillusionist\nillusionistic\nillusionistically\nillusionists\nillusions\nillusive\nillusively\nillusiveness\nillusorily\nillusoriness\nillusory\nillustrate\nillustrated\nillustrates\nillustrating\nillustration\nillustrational\nillustrations\nillustrative\nillustratively\nillustrator\nillustrators\nillustrious\nillustriously\nillustriousness\nilluvia\nilluvial\nilluvium\nilluviums\nilly\nilmenite\nilmenites\nimage\nimaged\nimageries\nimagery\nimages\nimaginable\nimaginableness\nimaginably\nimaginal\nimaginaries\nimaginarily\nimaginariness\nimaginary\nimagination\nimaginations\nimaginative\nimaginatively\nimaginativeness\nimagine\nimagined\nimaginer\nimaginers\nimagines\nimaging\nimagining\nimagism\nimagisms\nimagist\nimagistic\nimagistically\nimagists\nimago\nimagoes\nimam\nimamate\nimamates\nimams\nimaret\nimarets\nimaum\nimaums\nimbalance\nimbalances\nimbalm\nimbalmed\nimbalmer\nimbalmers\nimbalming\nimbalms\nimbark\nimbarked\nimbarking\nimbarks\nimbecile\nimbeciles\nimbecilic\nimbecilities\nimbecility\nimbed\nimbedded\nimbedding\nimbeds\nimbibe\nimbibed\nimbiber\nimbibers\nimbibibes\nimbibing\nimbibition\nimbibitions\nimbitter\nimbittered\nimbittering\nimbitters\nimblaze\nimblazed\nimblazes\nimblazing\nimbodied\nimbodies\nimbody\nimbodying\nimbolden\nimboldened\nimboldening\nimboldens\nimbosom\nimbosomed\nimbosoming\nimbosoms\nimbower\nimbowered\nimbowering\nimbowers\nimbricate\nimbricated\nimbricates\nimbricating\nimbrication\nimbrications\nimbroglio\nimbroglios\nimbrown\nimbrowned\nimbrowning\nimbrowns\nimbrue\nimbrued\nimbrues\nimbruing\nimbrute\nimbruted\nimbrutes\nimbruting\nimbue\nimbued\nimbues\nimbuing\nimid\nimide\nimides\nimidic\nimido\nimids\nimine\nimines\nimino\nimitable\nimitableness\nimitate\nimitated\nimitates\nimitating\nimitation\nimitations\nimitative\nimitatively\nimitativeness\nimitator\nimitators\nimmaculacy\nimmaculate\nimmaculately\nimmane\nimmanence\nimmanences\nimmanencies\nimmanency\nimmanent\nimmanently\nimmaterial\nimmaterialism\nimmaterialist\nimmaterialists\nimmaterialities\nimmateriality\nimmaterialize\nimmaterialized\nimmaterializes\nimmaterializing\nimmature\nimmaturely\nimmatures\nimmaturity\nimmeasurable\nimmeasurableness\nimmeasurably\nimmediacies\nimmediacy\nimmediate\nimmediately\nimmediateness\nimmemorial\nimmemorially\nimmense\nimmensely\nimmenseness\nimmenser\nimmensest\nimmensities\nimmensity\nimmensurable\nimmerge\nimmerged\nimmergence\nimmergences\nimmerges\nimmerging\nimmerse\nimmersed\nimmerses\nimmersible\nimmersing\nimmersion\nimmersions\nimmesh\nimmeshed\nimmeshes\nimmeshing\nimmethodical\nimmethodically\nimmies\nimmigrant\nimmigrants\nimmigrate\nimmigrated\nimmigrates\nimmigrating\nimmigration\nimmigrational\nimmigrations\nimminence\nimminences\nimminencies\nimminency\nimminent\nimminently\nimmingle\nimmingled\nimmingles\nimmingling\nimmiscibility\nimmiscible\nimmiscibly\nimmitigable\nimmitigableness\nimmitigably\nimmix\nimmixed\nimmixes\nimmixing\nimmixture\nimmobile\nimmobility\nimmobilization\nimmobilizations\nimmobilize\nimmobilized\nimmobilizer\nimmobilizers\nimmobilizes\nimmobilizing\nimmoderacies\nimmoderacy\nimmoderate\nimmoderately\nimmoderateness\nimmoderation\nimmoderations\nimmodest\nimmodesties\nimmodestly\nimmodesty\nimmolate\nimmolated\nimmolates\nimmolating\nimmolation\nimmolations\nimmolator\nimmolators\nimmoral\nimmoralist\nimmoralists\nimmoralities\nimmorality\nimmorally\nimmortal\nimmortalities\nimmortality\nimmortalization\nimmortalizations\nimmortalize\nimmortalized\nimmortalizer\nimmortalizers\nimmortalizes\nimmortalizing\nimmortally\nimmortals\nimmotile\nimmovabilities\nimmovability\nimmovable\nimmovableness\nimmovables\nimmovably\nimmune\nimmunes\nimmunise\nimmunised\nimmunises\nimmunising\nimmunities\nimmunity\nimmunization\nimmunizations\nimmunize\nimmunized\nimmunizes\nimmunizing\nimmunogenic\nimmunologic\nimmunological\nimmunologically\nimmunologist\nimmunologists\nimmunology\nimmure\nimmured\nimmurement\nimmurements\nimmures\nimmuring\nimmutability\nimmutable\nimmutableness\nimmutably\nimmy\nimp\nimpact\nimpacted\nimpacter\nimpacters\nimpacting\nimpaction\nimpactions\nimpactive\nimpactor\nimpactors\nimpacts\nimpaint\nimpainted\nimpainting\nimpaints\nimpair\nimpaired\nimpairer\nimpairers\nimpairing\nimpairment\nimpairments\nimpairs\nimpala\nimpalas\nimpale\nimpaled\nimpalement\nimpalements\nimpaler\nimpalers\nimpales\nimpaling\nimpalpability\nimpalpable\nimpalpably\nimpanel\nimpaneled\nimpaneling\nimpanelled\nimpanelling\nimpanels\nimparities\nimparity\nimpark\nimparked\nimparking\nimparks\nimpart\nimpartation\nimpartations\nimparted\nimparter\nimparters\nimpartial\nimpartialities\nimpartiality\nimpartially\nimpartible\nimpartibly\nimparting\nimpartment\nimpartments\nimparts\nimpassability\nimpassable\nimpassableness\nimpassably\nimpasse\nimpasses\nimpassibility\nimpassible\nimpassibly\nimpassion\nimpassioned\nimpassioning\nimpassions\nimpassive\nimpassively\nimpassiveness\nimpassivities\nimpassivity\nimpaste\nimpasted\nimpastes\nimpasting\nimpasto\nimpastos\nimpatience\nimpatiens\nimpatient\nimpatiently\nimpavid\nimpawn\nimpawned\nimpawning\nimpawns\nimpeach\nimpeachable\nimpeached\nimpeacher\nimpeachers\nimpeaches\nimpeaching\nimpeachment\nimpeachments\nimpearl\nimpearled\nimpearling\nimpearls\nimpeccability\nimpeccable\nimpeccably\nimpecuniosity\nimpecunious\nimpecuniously\nimpecuniousness\nimped\nimpedance\nimpedances\nimpede\nimpeded\nimpeder\nimpeders\nimpedes\nimpediment\nimpedimenta\nimpediments\nimpeding\nimpel\nimpelled\nimpeller\nimpellers\nimpelling\nimpellor\nimpellors\nimpels\nimpend\nimpended\nimpending\nimpends\nimpenetrability\nimpenetrable\nimpenetrably\nimpenitence\nimpenitences\nimpenitent\nimpenitently\nimperative\nimperatively\nimperativeness\nimperatives\nimperceptible\nimperceptibly\nimperceptive\nimperceptiveness\nimperfect\nimperfection\nimperfections\nimperfective\nimperfectly\nimperfectness\nimperforate\nimperia\nimperial\nimperialism\nimperialisms\nimperialist\nimperialistic\nimperialistically\nimperialists\nimperially\nimperials\nimperil\nimperiled\nimperiling\nimperilled\nimperilling\nimperilment\nimperilments\nimperils\nimperious\nimperiously\nimperiousness\nimperishabilities\nimperishability\nimperishable\nimperishableness\nimperishably\nimperium\nimperiums\nimpermanence\nimpermanences\nimpermanency\nimpermanent\nimpermanently\nimpermeabilities\nimpermeability\nimpermeable\nimpermissibility\nimpermissible\nimpermissibly\nimpersonal\nimpersonalities\nimpersonality\nimpersonalization\nimpersonalizations\nimpersonalize\nimpersonalized\nimpersonalizes\nimpersonalizing\nimpersonally\nimpersonate\nimpersonated\nimpersonates\nimpersonating\nimpersonation\nimpersonations\nimpersonator\nimpersonators\nimpertinence\nimpertinences\nimpertinencies\nimpertinency\nimpertinent\nimpertinently\nimperturbabilities\nimperturbability\nimperturbable\nimperturbably\nimpervious\nimperviously\nimperviousness\nimpetigo\nimpetigos\nimpetrate\nimpetrated\nimpetrates\nimpetrating\nimpetration\nimpetrations\nimpetuosities\nimpetuosity\nimpetuous\nimpetuously\nimpetuousness\nimpetus\nimpetuses\nimphee\nimphees\nimpi\nimpieties\nimpiety\nimping\nimpinge\nimpinged\nimpingement\nimpingements\nimpinger\nimpingers\nimpinges\nimpinging\nimpings\nimpious\nimpiously\nimpis\nimpish\nimpishly\nimpishness\nimplacabilities\nimplacability\nimplacable\nimplacably\nimplant\nimplantable\nimplantation\nimplantations\nimplanted\nimplanter\nimplanters\nimplanting\nimplants\nimplausibilities\nimplausibility\nimplausible\nimplausibly\nimplead\nimpleaded\nimpleading\nimpleads\nimpledge\nimpledged\nimpledges\nimpledging\nimplement\nimplementation\nimplementations\nimplemented\nimplementing\nimplements\nimplicate\nimplicated\nimplicates\nimplicating\nimplication\nimplications\nimplicative\nimplicatively\nimplicativeness\nimplicit\nimplicitly\nimplicitness\nimplied\nimplies\nimplode\nimploded\nimplodes\nimploding\nimplore\nimplored\nimplorer\nimplorers\nimplores\nimploring\nimploringly\nimplosion\nimplosions\nimplosive\nimply\nimplying\nimpolicies\nimpolicy\nimpolite\nimpolitely\nimpoliteness\nimpolitic\nimpolitical\nimpolitically\nimpoliticly\nimponderabilities\nimponderability\nimponderable\nimponderables\nimponderably\nimpone\nimponed\nimpones\nimponing\nimporous\nimport\nimportable\nimportance\nimportances\nimportant\nimportantly\nimportation\nimportations\nimported\nimporter\nimporters\nimporting\nimports\nimportunate\nimportunately\nimportunateness\nimportune\nimportuned\nimportunely\nimportuner\nimportuners\nimportunes\nimportuning\nimportunities\nimportunity\nimpose\nimposed\nimposer\nimposers\nimposes\nimposing\nimposingly\nimposition\nimpositions\nimpossibilities\nimpossibility\nimpossible\nimpossibleness\nimpossibly\nimpost\nimposted\nimposter\nimposters\nimposting\nimpostor\nimpostors\nimposts\nimposture\nimpostures\nimpotence\nimpotences\nimpotencies\nimpotency\nimpotent\nimpotently\nimpotents\nimpound\nimpounded\nimpounding\nimpoundment\nimpoundments\nimpounds\nimpoverish\nimpoverished\nimpoverisher\nimpoverishers\nimpoverishes\nimpoverishing\nimpoverishment\nimpoverishments\nimpower\nimpowered\nimpowering\nimpowers\nimpracticabilities\nimpracticability\nimpracticable\nimpracticably\nimpractical\nimpracticalities\nimpracticality\nimprecate\nimprecated\nimprecates\nimprecating\nimprecation\nimprecations\nimprecatory\nimprecise\nimprecisely\nimpreciseness\nimprecision\nimprecisions\nimpregn\nimpregnability\nimpregnable\nimpregnableness\nimpregnably\nimpregnate\nimpregnated\nimpregnates\nimpregnating\nimpregnation\nimpregnations\nimpregnator\nimpregnators\nimpregned\nimpregning\nimpregns\nimpresa\nimpresario\nimpresarios\nimpresas\nimprese\nimpreses\nimpress\nimpressed\nimpresses\nimpressibility\nimpressible\nimpressibly\nimpressing\nimpression\nimpressionability\nimpressionable\nimpressionably\nimpressionism\nimpressionisms\nimpressionist\nimpressionistic\nimpressionists\nimpressions\nimpressive\nimpressively\nimpressiveness\nimpressment\nimpressments\nimprest\nimprests\nimprimatur\nimprimaturs\nimprimis\nimprint\nimprinted\nimprinter\nimprinters\nimprinting\nimprints\nimprison\nimprisonable\nimprisoned\nimprisoning\nimprisonment\nimprisonments\nimprisons\nimprobabilities\nimprobability\nimprobable\nimprobably\nimpromptu\nimproper\nimproperly\nimproperness\nimproprieties\nimpropriety\nimprovability\nimprovable\nimprovably\nimprove\nimproved\nimprovement\nimprovements\nimprover\nimprovers\nimproves\nimprovidence\nimprovidences\nimprovident\nimprovidently\nimproving\nimprovisation\nimprovisational\nimprovisationally\nimprovisations\nimprovisator\nimprovisatorial\nimprovisators\nimprovisatory\nimprovise\nimprovised\nimproviser\nimprovisers\nimprovises\nimprovising\nimprovisor\nimprovisors\nimprudence\nimprudences\nimprudent\nimprudently\nimps\nimpudence\nimpudences\nimpudent\nimpudently\nimpugn\nimpugnable\nimpugned\nimpugner\nimpugners\nimpugning\nimpugns\nimpuissance\nimpuissant\nimpulse\nimpulsed\nimpulses\nimpulsing\nimpulsion\nimpulsions\nimpulsive\nimpulsively\nimpulsiveness\nimpulsivity\nimpunities\nimpunity\nimpure\nimpurely\nimpureness\nimpurities\nimpurity\nimputabilities\nimputability\nimputable\nimputation\nimputations\nimputative\nimputatively\nimpute\nimputed\nimputer\nimputers\nimputes\nimputing\nin\ninabilities\ninability\ninaccessibility\ninaccessible\ninaccessibly\ninaccuracies\ninaccuracy\ninaccurate\ninaccurately\ninaction\ninactions\ninactivate\ninactivated\ninactivates\ninactivating\ninactivation\ninactivations\ninactive\ninactively\ninactiveness\ninactivity\ninadequacies\ninadequacy\ninadequate\ninadequately\ninadequateness\ninadmissibility\ninadmissible\ninadmissibly\ninadvertence\ninadvertences\ninadvertencies\ninadvertency\ninadvertent\ninadvertently\ninadvisability\ninadvisable\ninalienabilities\ninalienability\ninalienable\ninalienably\ninalterability\ninalterable\ninalterableness\ninalterably\ninamorata\ninane\ninanely\ninaner\ninanes\ninanest\ninanimate\ninanimately\ninanimateness\ninanities\ninanition\ninanity\ninapparent\ninapplicability\ninapplicable\ninapplicably\ninapposite\ninappositely\ninappositeness\ninappreciable\ninappreciably\ninappreciative\ninappreciatively\ninappreciativeness\ninapproachable\ninappropriate\ninappropriately\ninappropriateness\ninapt\ninaptitude\ninaptly\ninaptness\ninarable\ninarch\ninarched\ninarches\ninarching\ninarguable\ninarguably\ninarm\ninarmed\ninarming\ninarms\ninarticulacy\ninarticulate\ninarticulately\ninarticulateness\ninartistic\ninartistically\ninattention\ninattentions\ninattentive\ninattentively\ninattentiveness\ninaudibility\ninaudible\ninaudibly\ninaugural\ninaugurals\ninaugurate\ninaugurated\ninaugurates\ninaugurating\ninauguration\ninaugurations\ninaugurator\ninaugurators\ninauspicious\ninauspiciously\ninauspiciousness\ninbeing\ninbeings\ninboard\ninboards\ninborn\ninbound\ninbounds\ninbred\ninbreed\ninbreeding\ninbreeds\ninbuilt\ninburst\ninbursts\ninby\ninbye\nincage\nincaged\nincages\nincaging\nincalculability\nincalculable\nincalculably\nincandesce\nincandesced\nincandescence\nincandescent\nincandescently\nincandesces\nincandescing\nincantation\nincantational\nincantations\nincantatory\nincapabilities\nincapability\nincapable\nincapableness\nincapably\nincapacitate\nincapacitated\nincapacitates\nincapacitating\nincapacitation\nincapacitations\nincapacitator\nincapacitators\nincapacities\nincapacity\nincarcerate\nincarcerated\nincarcerates\nincarcerating\nincarceration\nincarcerations\nincarcerator\nincarcerators\nincarnate\nincarnated\nincarnates\nincarnating\nincarnation\nincarnations\nincase\nincased\nincases\nincasing\nincaution\nincautions\nincautious\nincautiously\nincautiousness\nincendiaries\nincendiary\nincense\nincensed\nincenses\nincensing\nincentive\nincentives\nincept\nincepted\nincepting\ninception\ninceptions\ninceptive\ninceptively\ninceptor\ninceptors\nincepts\nincertitude\nincertitudes\nincessant\nincessantly\nincest\nincests\nincestuous\nincestuously\nincestuousness\ninch\ninched\ninches\ninching\ninchmeal\ninchoate\ninchoately\ninchoateness\ninchworm\ninchworms\nincidence\nincidences\nincident\nincidental\nincidentally\nincidentals\nincidents\nincinerate\nincinerated\nincinerates\nincinerating\nincineration\nincinerations\nincinerator\nincinerators\nincipience\nincipiences\nincipiencies\nincipiency\nincipient\nincipiently\nincipit\nincipits\nincise\nincised\nincises\nincising\nincision\nincisions\nincisive\nincisively\nincisiveness\nincisor\nincisors\nincisory\nincisure\nincisures\nincitant\nincitants\nincitation\nincitations\nincite\nincited\nincitement\nincitements\ninciter\ninciters\nincites\ninciting\nincivil\nincivilities\nincivility\ninclasp\ninclasped\ninclasping\ninclasps\ninclemencies\ninclemency\ninclement\ninclemently\ninclinable\ninclination\ninclinational\ninclinations\nincline\ninclined\nincliner\nincliners\ninclines\ninclining\ninclinometer\ninclinometers\ninclip\ninclipped\ninclipping\ninclips\ninclose\ninclosed\nincloser\ninclosers\nincloses\ninclosing\nincludable\ninclude\nincluded\nincludes\nincludible\nincluding\ninclusion\ninclusions\ninclusive\ninclusively\ninclusiveness\nincog\nincognita\nincognitas\nincognito\nincognitos\nincognizance\nincognizant\nincogs\nincoherence\nincoherences\nincoherent\nincoherently\nincombustibility\nincombustible\nincome\nincomer\nincomers\nincomes\nincoming\nincomings\nincommensurabilities\nincommensurability\nincommensurable\nincommensurably\nincommensurate\nincommode\nincommoded\nincommodes\nincommoding\nincommodious\nincommodiously\nincommodiousness\nincommodity\nincommunicability\nincommunicable\nincommunicably\nincommunicado\nincommunicative\nincomparability\nincomparable\nincomparably\nincompatibilities\nincompatibility\nincompatible\nincompatibles\nincompatibly\nincompetence\nincompetences\nincompetencies\nincompetency\nincompetent\nincompetently\nincompetents\nincomplete\nincompletely\nincompleteness\nincompliant\nincomprehensibilities\nincomprehensibility\nincomprehensible\nincomprehensibleness\nincomprehensibly\nincompressibilities\nincompressibility\nincompressible\nincompressibly\nincomputable\nincomputably\ninconceivabilities\ninconceivability\ninconceivable\ninconceivableness\ninconceivably\ninconclusive\ninconclusively\ninconclusiveness\ninconformities\ninconformity\nincongruence\nincongruences\nincongruent\nincongruently\nincongruities\nincongruity\nincongruous\nincongruously\nincongruousness\ninconnu\ninconnus\ninconsecutive\ninconsequence\ninconsequences\ninconsequent\ninconsequential\ninconsequentiality\ninconsequentially\ninconsequently\ninconsiderable\ninconsiderableness\ninconsiderably\ninconsiderate\ninconsiderately\ninconsiderateness\ninconsideration\ninconsiderations\ninconsistence\ninconsistencies\ninconsistency\ninconsistent\ninconsistently\ninconsolable\ninconsolableness\ninconsolably\ninconsonance\ninconsonant\ninconspicuous\ninconspicuously\ninconspicuousness\ninconstancies\ninconstancy\ninconstant\ninconstantly\ninconsumable\ninconsumably\nincontestability\nincontestable\nincontestably\nincontinence\nincontinences\nincontinencies\nincontinency\nincontinent\nincontinently\nincontrollable\nincontrovertible\nincontrovertibly\ninconvenience\ninconvenienced\ninconveniences\ninconveniencies\ninconveniencing\ninconveniency\ninconvenient\ninconveniently\ninconvertibility\ninconvertible\ninconvertibly\nincony\nincoordination\nincoordinations\nincorporable\nincorporate\nincorporated\nincorporates\nincorporating\nincorporation\nincorporations\nincorporative\nincorporator\nincorporators\nincorporeal\nincorporeally\nincorpse\nincorpsed\nincorpses\nincorpsing\nincorrect\nincorrectly\nincorrectness\nincorrigibility\nincorrigible\nincorrigibleness\nincorrigibly\nincorruptibility\nincorruptible\nincorruptibly\nincreasable\nincrease\nincreased\nincreaser\nincreasers\nincreases\nincreasing\nincreasingly\nincreate\nincredibilities\nincredibility\nincredible\nincredibleness\nincredibly\nincredulities\nincredulity\nincredulous\nincredulously\nincrement\nincremental\nincrementalism\nincrementalist\nincrementalists\nincrementally\nincrements\nincriminate\nincriminated\nincriminates\nincriminating\nincrimination\nincriminations\nincriminatory\nincross\nincrosses\nincrust\nincrustation\nincrustations\nincrusted\nincrusting\nincrusts\nincubate\nincubated\nincubates\nincubating\nincubation\nincubational\nincubations\nincubative\nincubator\nincubators\nincubatory\nincubi\nincubus\nincubuses\nincudal\nincudate\nincudes\ninculcate\ninculcated\ninculcates\ninculcating\ninculcation\ninculcations\ninculcator\ninculcators\ninculpable\ninculpate\ninculpated\ninculpates\ninculpating\ninculpation\ninculpations\ninculpatory\nincult\nincumbencies\nincumbency\nincumbent\nincumbents\nincumber\nincumbered\nincumbering\nincumbers\nincur\nincurable\nincurably\nincuriosity\nincurious\nincuriously\nincuriousness\nincurred\nincurrence\nincurring\nincurs\nincursion\nincursions\nincurve\nincurved\nincurves\nincurving\nincus\nincuse\nincused\nincuses\nincusing\nindaba\nindabas\nindagate\nindagated\nindagates\nindagating\nindamin\nindamine\nindamines\nindamins\nindebted\nindebtedness\nindecencies\nindecency\nindecent\nindecenter\nindecentest\nindecently\nindecipherable\nindecision\nindecisions\nindecisive\nindecisively\nindecisiveness\nindeclinable\nindecorous\nindecorously\nindecorousness\nindecorum\nindecorums\nindeed\nindefatigability\nindefatigable\nindefatigableness\nindefatigably\nindefeasibility\nindefeasible\nindefeasibly\nindefectibility\nindefectible\nindefectibly\nindefensibility\nindefensible\nindefensibly\nindefinability\nindefinable\nindefinableness\nindefinably\nindefinite\nindefinitely\nindefiniteness\nindefinites\nindelibility\nindelible\nindelibly\nindelicacies\nindelicacy\nindelicate\nindelicately\nindelicateness\nindemnification\nindemnifications\nindemnified\nindemnifier\nindemnifiers\nindemnifies\nindemnify\nindemnifying\nindemnities\nindemnity\nindemonstrable\nindemonstrably\nindene\nindenes\nindent\nindentation\nindentations\nindented\nindenter\nindenters\nindenting\nindention\nindentions\nindentor\nindentors\nindents\nindenture\nindentured\nindentures\nindenturing\nindependence\nindependencies\nindependency\nindependent\nindependently\nindependents\nindescribable\nindescribableness\nindescribably\nindestructibilities\nindestructibility\nindestructible\nindestructibleness\nindestructibly\nindeterminable\nindeterminably\nindeterminacies\nindeterminacy\nindeterminate\nindeterminately\nindeterminateness\nindetermination\nindeterminations\nindeterminism\nindeterminist\nindeterministic\nindeterminists\nindevout\nindex\nindexation\nindexed\nindexer\nindexers\nindexes\nindexing\nindican\nindicans\nindicant\nindicants\nindicate\nindicated\nindicates\nindicating\nindication\nindicational\nindications\nindicative\nindicatively\nindicator\nindicators\nindicatory\nindices\nindicia\nindicias\nindicium\nindiciums\nindict\nindictable\nindicted\nindictee\nindictees\nindicter\nindicters\nindicting\nindiction\nindictions\nindictment\nindictments\nindictor\nindictors\nindicts\nindie\nindifference\nindifferences\nindifferent\nindifferentism\nindifferentist\nindifferentists\nindifferently\nindigen\nindigence\nindigences\nindigene\nindigenes\nindigenous\nindigenously\nindigenousness\nindigens\nindigent\nindigents\nindigestibility\nindigestible\nindigestion\nindigestions\nindign\nindignant\nindignantly\nindignation\nindignations\nindignities\nindignity\nindignly\nindigo\nindigoes\nindigoid\nindigoids\nindigos\nindirect\nindirection\nindirections\nindirectly\nindirectness\nindiscernible\nindisciplinable\nindiscipline\nindisciplined\nindiscoverable\nindiscreet\nindiscreetly\nindiscreetness\nindiscrete\nindiscretion\nindiscretions\nindiscriminate\nindiscriminately\nindiscriminateness\nindiscriminating\nindiscriminatingly\nindiscrimination\nindiscriminations\nindiscussible\nindispensability\nindispensable\nindispensableness\nindispensables\nindispensably\nindispose\nindisposed\nindisposes\nindisposing\nindisposition\nindispositions\nindisputable\nindisputableness\nindisputably\nindissolubility\nindissoluble\nindissolubleness\nindissolubly\nindistinct\nindistinctive\nindistinctly\nindistinctness\nindistinguishability\nindistinguishable\nindistinguishableness\nindistinguishably\nindite\nindited\ninditer\ninditers\nindites\ninditing\nindium\nindiums\nindividual\nindividualism\nindividualisms\nindividualist\nindividualistic\nindividualistically\nindividualists\nindividualities\nindividuality\nindividualization\nindividualizations\nindividualize\nindividualized\nindividualizes\nindividualizing\nindividually\nindividuals\nindividuate\nindividuated\nindividuates\nindividuating\nindividuation\nindividuations\nindivisibility\nindivisible\nindivisibly\nindocile\nindoctrinate\nindoctrinated\nindoctrinates\nindoctrinating\nindoctrination\nindoctrinations\nindoctrinator\nindoctrinators\nindol\nindole\nindolence\nindolences\nindolent\nindolently\nindoles\nindols\nindomitabilities\nindomitability\nindomitable\nindomitableness\nindomitably\nindoor\nindoors\nindorse\nindorsed\nindorsee\nindorsees\nindorser\nindorsers\nindorses\nindorsing\nindorsor\nindorsors\nindow\nindowed\nindowing\nindows\nindoxyl\nindoxyls\nindraft\nindrafts\nindrawn\nindri\nindris\nindubitability\nindubitable\nindubitableness\nindubitably\ninduce\ninduced\ninducement\ninducements\ninducer\ninducers\ninduces\ninducibility\ninducible\ninducing\ninduct\ninductance\ninductances\ninducted\ninductee\ninductees\ninducting\ninduction\ninductions\ninductive\ninductively\ninductor\ninductors\ninducts\nindue\nindued\nindues\ninduing\nindulge\nindulged\nindulgence\nindulgenced\nindulgences\nindulgencing\nindulgent\nindulgently\nindulger\nindulgers\nindulges\nindulging\nindulin\ninduline\nindulines\nindulins\nindult\nindults\nindurate\nindurated\nindurates\nindurating\ninduration\nindurations\nindurative\nindusia\nindusial\nindusium\nindustrial\nindustrialism\nindustrialist\nindustrialists\nindustrialization\nindustrializations\nindustrialize\nindustrialized\nindustrializes\nindustrializing\nindustrially\nindustrials\nindustries\nindustrious\nindustriously\nindustriousness\nindustry\nindwell\nindwelling\nindwells\nindwelt\ninearth\ninearthed\ninearthing\ninearths\ninebriate\ninebriated\ninebriates\ninebriating\ninebriation\ninebriations\ninebriety\ninedible\ninedita\ninedited\nineducability\nineducable\nineffabilities\nineffability\nineffable\nineffableness\nineffably\nineffaceabilities\nineffaceability\nineffaceable\nineffaceably\nineffective\nineffectively\nineffectiveness\nineffectual\nineffectuality\nineffectually\nineffectualness\ninefficacies\ninefficacious\ninefficaciously\ninefficaciousness\ninefficacy\ninefficiencies\ninefficiency\ninefficient\ninefficiently\ninegalitarian\ninelastic\ninelasticity\ninelegance\ninelegant\ninelegantly\nineligibility\nineligible\nineluctability\nineluctable\nineluctably\nineludible\ninept\nineptitude\nineptitudes\nineptly\nineptness\ninequalities\ninequality\ninequitable\ninequitably\ninequities\ninequity\nineradicability\nineradicable\nineradicably\ninerrancy\ninerrant\ninert\ninertia\ninertiae\ninertial\ninertias\ninertly\ninertness\ninerts\ninescapable\ninescapably\ninessential\ninessentials\ninestimable\ninestimably\ninevitabilities\ninevitability\ninevitable\ninevitableness\ninevitably\ninexact\ninexactitude\ninexactitudes\ninexactly\ninexactness\ninexcusabilities\ninexcusability\ninexcusable\ninexcusableness\ninexcusably\ninexhaustibility\ninexhaustible\ninexhaustibleness\ninexhaustibly\ninexistence\ninexistent\ninexorabilities\ninexorability\ninexorable\ninexorableness\ninexorably\ninexpedience\ninexpediences\ninexpediencies\ninexpediency\ninexpedient\ninexpediently\ninexpensive\ninexpensively\ninexpensiveness\ninexperience\ninexperienced\ninexperiences\ninexpert\ninexpertly\ninexpertness\ninexperts\ninexpiable\ninexpiably\ninexplicabilities\ninexplicability\ninexplicable\ninexplicableness\ninexplicably\ninexplicit\ninexpressibility\ninexpressible\ninexpressibleness\ninexpressibly\ninexpressive\ninexpressively\ninexpressiveness\ninexpugnable\ninexpugnably\ninextinguishable\ninextinguishably\ninextricability\ninextricable\ninextricably\ninfallibility\ninfallible\ninfallibleness\ninfallibly\ninfamies\ninfamous\ninfamously\ninfamy\ninfancies\ninfancy\ninfant\ninfanta\ninfantas\ninfante\ninfantes\ninfanticidal\ninfanticide\ninfanticides\ninfantile\ninfantilism\ninfantility\ninfantries\ninfantry\ninfantryman\ninfantrymen\ninfants\ninfarct\ninfarcts\ninfare\ninfares\ninfatuate\ninfatuated\ninfatuates\ninfatuating\ninfatuation\ninfatuations\ninfauna\ninfaunae\ninfaunal\ninfaunas\ninfeasibility\ninfeasible\ninfect\ninfected\ninfecter\ninfecters\ninfecting\ninfection\ninfections\ninfectious\ninfectiously\ninfectiousness\ninfective\ninfectivity\ninfector\ninfectors\ninfects\ninfecund\ninfelicities\ninfelicitous\ninfelicitously\ninfelicity\ninfeoff\ninfeoffed\ninfeoffing\ninfeoffs\ninfer\ninferable\ninference\ninferences\ninferential\ninferentially\ninferior\ninferiorities\ninferiority\ninferiorly\ninferiors\ninfernal\ninfernally\ninferno\ninfernos\ninferred\ninferrer\ninferrers\ninferring\ninfers\ninfertile\ninfertility\ninfest\ninfestation\ninfestations\ninfested\ninfester\ninfesters\ninfesting\ninfests\ninfidel\ninfidelities\ninfidelity\ninfidels\ninfield\ninfielder\ninfielders\ninfields\ninfighter\ninfighters\ninfighting\ninfiltrate\ninfiltrated\ninfiltrates\ninfiltrating\ninfiltration\ninfiltrations\ninfiltrative\ninfiltrator\ninfiltrators\ninfinite\ninfinitely\ninfiniteness\ninfinites\ninfinitesimal\ninfinitesimally\ninfinities\ninfinitival\ninfinitive\ninfinitively\ninfinitives\ninfinitude\ninfinitudes\ninfinity\ninfirm\ninfirmaries\ninfirmary\ninfirmed\ninfirming\ninfirmities\ninfirmity\ninfirmly\ninfirms\ninfix\ninfixation\ninfixations\ninfixed\ninfixes\ninfixing\ninfixion\ninfixions\ninflame\ninflamed\ninflamer\ninflamers\ninflames\ninflaming\ninflammabilities\ninflammability\ninflammable\ninflammableness\ninflammably\ninflammation\ninflammations\ninflammatorily\ninflammatory\ninflatable\ninflate\ninflated\ninflater\ninflaters\ninflates\ninflating\ninflation\ninflationary\ninflationism\ninflationist\ninflationists\ninflations\ninflator\ninflators\ninflect\ninflectable\ninflected\ninflecting\ninflection\ninflectional\ninflectionally\ninflections\ninflective\ninflects\ninflexed\ninflexibilities\ninflexibility\ninflexible\ninflexibleness\ninflexibly\ninflict\ninflicted\ninflicter\ninflicters\ninflicting\ninfliction\ninflictions\ninflictive\ninflictor\ninflictors\ninflicts\ninflight\ninflow\ninflows\ninfluence\ninfluenceable\ninfluenced\ninfluences\ninfluencing\ninfluent\ninfluential\ninfluentially\ninfluents\ninfluenza\ninflux\ninfluxes\ninfo\ninfold\ninfolded\ninfolder\ninfolders\ninfolding\ninfolds\ninform\ninformal\ninformalities\ninformality\ninformally\ninformant\ninformants\ninformation\ninformational\ninformationless\ninformations\ninformative\ninformatively\ninformativeness\ninformatory\ninformed\ninformedly\ninformer\ninformers\ninforming\ninforms\ninfos\ninfra\ninfract\ninfracted\ninfracting\ninfraction\ninfractions\ninfractor\ninfractors\ninfracts\ninfrangibility\ninfrangible\ninfrangibleness\ninfrangibly\ninfrared\ninfrareds\ninfrasonic\ninfrastructure\ninfrastructures\ninfrequence\ninfrequencies\ninfrequency\ninfrequent\ninfrequently\ninfringe\ninfringed\ninfringement\ninfringements\ninfringer\ninfringers\ninfringes\ninfringing\ninfrugal\ninfuriate\ninfuriated\ninfuriates\ninfuriating\ninfuriatingly\ninfuriation\ninfuriations\ninfuse\ninfused\ninfuser\ninfusers\ninfuses\ninfusibility\ninfusible\ninfusibleness\ninfusing\ninfusion\ninfusions\ninfusive\ningate\ningates\ningather\ningathered\ningathering\ningathers\ningenious\ningeniously\ningeniousness\ningenue\ningenues\ningenuities\ningenuity\ningenuous\ningenuously\ningenuousness\ningest\ningesta\ningested\ningestible\ningesting\ningestion\ningestive\ningests\ningle\ninglenook\ninglenooks\ningles\ninglorious\ningloriously\ningloriousness\ningoing\ningot\ningoted\ningoting\ningots\ningraft\ningrafted\ningrafting\ningrafts\ningrain\ningrained\ningrainedly\ningraining\ningrains\ningrate\ningrates\ningratiate\ningratiated\ningratiates\ningratiating\ningratiation\ningratiatory\ningratitude\ningredient\ningredients\ningress\ningresses\ningression\ningressions\ningressive\ningressiveness\ningroup\ningroups\ningrown\ningrowth\ningrowths\ninguinal\ningulf\ningulfed\ningulfing\ningulfs\ninhabit\ninhabitable\ninhabitancy\ninhabitant\ninhabitants\ninhabitation\ninhabitations\ninhabited\ninhabiter\ninhabiters\ninhabiting\ninhabits\ninhalant\ninhalants\ninhalation\ninhalations\ninhalator\ninhalators\ninhale\ninhaled\ninhaler\ninhalers\ninhales\ninhaling\ninharmonious\ninharmoniously\ninharmoniousness\ninhaul\ninhauler\ninhaulers\ninhauls\ninhere\ninhered\ninherence\ninherent\ninherently\ninheres\ninhering\ninherit\ninheritability\ninheritable\ninheritableness\ninheritably\ninheritance\ninheritances\ninherited\ninheriting\ninheritor\ninheritors\ninheritress\ninheritresses\ninheritrix\ninheritrixes\ninherits\ninhesion\ninhesions\ninhibit\ninhibited\ninhibiting\ninhibition\ninhibitions\ninhibitive\ninhibitor\ninhibitors\ninhibitory\ninhibits\ninhospitable\ninhospitableness\ninhospitably\ninhospitality\ninhuman\ninhumane\ninhumanely\ninhumanities\ninhumanity\ninhumanly\ninhumanness\ninhume\ninhumed\ninhumer\ninhumers\ninhumes\ninhuming\ninia\ninimical\ninimically\ninimitable\ninimitableness\ninimitably\ninion\niniquities\niniquitous\niniquitously\niniquitousness\niniquity\ninitial\ninitialed\ninitialing\ninitialization\ninitialize\ninitialized\ninitializes\ninitializing\ninitialled\ninitialling\ninitially\ninitials\ninitiate\ninitiated\ninitiates\ninitiating\ninitiation\ninitiations\ninitiative\ninitiatives\ninitiator\ninitiators\ninitiatory\ninject\ninjectable\ninjected\ninjecting\ninjection\ninjections\ninjector\ninjectors\ninjects\ninjudicious\ninjudiciously\ninjudiciousness\ninjunction\ninjunctions\ninjunctive\ninjure\ninjured\ninjurer\ninjurers\ninjures\ninjuries\ninjuring\ninjurious\ninjuriously\ninjuriousness\ninjury\ninjustice\ninjustices\nink\ninkberries\ninkberry\ninkblot\ninkblots\ninked\ninker\ninkers\ninkhorn\ninkhorns\ninkier\ninkiest\ninkiness\ninkinesses\ninking\ninkle\ninkles\ninkless\ninklike\ninkling\ninklings\ninkpot\ninkpots\ninks\ninkstand\ninkstands\ninkwell\ninkwells\ninkwood\ninkwoods\ninky\ninlace\ninlaced\ninlaces\ninlacing\ninlaid\ninland\ninlander\ninlanders\ninlands\ninlay\ninlayer\ninlayers\ninlaying\ninlays\ninlet\ninlets\ninletting\ninlier\ninliers\ninly\ninmate\ninmates\ninmesh\ninmeshed\ninmeshes\ninmeshing\ninmost\ninn\ninnards\ninnate\ninnately\ninnateness\ninned\ninner\ninnerly\ninnermost\ninners\ninnersole\ninnersoles\ninnervate\ninnervated\ninnervates\ninnervating\ninnervation\ninnervational\ninnervations\ninnerve\ninnerved\ninnerves\ninnerving\ninning\ninnings\ninnkeeper\ninnkeepers\ninnless\ninnocence\ninnocencies\ninnocency\ninnocent\ninnocenter\ninnocentest\ninnocently\ninnocents\ninnocuous\ninnocuously\ninnocuousness\ninnovate\ninnovated\ninnovates\ninnovating\ninnovation\ninnovational\ninnovations\ninnovative\ninnovator\ninnovators\ninnovatory\ninns\ninnuendo\ninnuendoed\ninnuendoes\ninnuendoing\ninnuendos\ninnumerable\ninnumerableness\ninnumerably\ninnumerous\ninocula\ninoculate\ninoculated\ninoculates\ninoculating\ninoculation\ninoculations\ninoculative\ninoculator\ninoculators\ninoculum\ninoculums\ninoffensive\ninoffensively\ninoffensiveness\ninoperable\ninoperative\ninoperativeness\ninopportune\ninopportunely\ninopportuneness\ninordinate\ninordinately\ninordinateness\ninorganic\ninorganically\ninosite\ninosites\ninositol\ninositols\ninpatient\ninpatients\ninphase\ninpour\ninpoured\ninpouring\ninpours\ninput\ninputs\ninputted\ninputting\ninquest\ninquests\ninquiet\ninquieted\ninquieting\ninquiets\ninquietude\ninquietudes\ninquire\ninquired\ninquirer\ninquirers\ninquires\ninquiries\ninquiring\ninquiringly\ninquiry\ninquisition\ninquisitional\ninquisitions\ninquisitive\ninquisitively\ninquisitiveness\ninquisitor\ninquisitorial\ninquisitorially\ninquisitors\ninro\ninroad\ninroads\ninrush\ninrushes\nins\ninsalubrious\ninsalubrities\ninsalubrity\ninsane\ninsanely\ninsaneness\ninsaner\ninsanest\ninsanitation\ninsanities\ninsanity\ninsatiability\ninsatiable\ninsatiableness\ninsatiably\ninsatiate\ninscribe\ninscribed\ninscriber\ninscribers\ninscribes\ninscribing\ninscription\ninscriptional\ninscriptions\ninscriptive\ninscriptively\ninscroll\ninscrolled\ninscrolling\ninscrolls\ninscrutability\ninscrutable\ninscrutableness\ninscrutably\ninsculp\ninsculped\ninsculping\ninsculps\ninseam\ninseams\ninsect\ninsectan\ninsectary\ninsecticidal\ninsecticide\ninsecticides\ninsectivore\ninsectivores\ninsectivorous\ninsects\ninsecure\ninsecurely\ninsecureness\ninsecurities\ninsecurity\ninseminate\ninseminated\ninseminates\ninseminating\ninsemination\ninseminations\ninsensate\ninsensately\ninsensateness\ninsensibilities\ninsensibility\ninsensible\ninsensibly\ninsensitive\ninsensitively\ninsensitiveness\ninsensitivities\ninsensitivity\ninsentience\ninsentient\ninseparabilities\ninseparability\ninseparable\ninseparableness\ninseparables\ninseparably\ninsert\ninserted\ninserter\ninserters\ninserting\ninsertion\ninsertional\ninsertions\ninserts\ninset\ninsets\ninsetted\ninsetter\ninsetters\ninsetting\ninsheath\ninsheathed\ninsheathing\ninsheaths\ninshore\ninshrine\ninshrined\ninshrines\ninshrining\ninside\ninsider\ninsiders\ninsides\ninsidious\ninsidiously\ninsidiousness\ninsight\ninsightful\ninsights\ninsigne\ninsignia\ninsignias\ninsignificance\ninsignificancies\ninsignificancy\ninsignificant\ninsignificantly\ninsincere\ninsincerely\ninsincerities\ninsincerity\ninsinuate\ninsinuated\ninsinuates\ninsinuating\ninsinuatingly\ninsinuation\ninsinuations\ninsinuative\ninsinuator\ninsinuators\ninsipid\ninsipidity\ninsipidly\ninsist\ninsisted\ninsistence\ninsistencies\ninsistency\ninsistent\ninsistently\ninsister\ninsisters\ninsisting\ninsists\ninsnare\ninsnared\ninsnarer\ninsnarers\ninsnares\ninsnaring\ninsobriety\ninsofar\ninsolate\ninsolated\ninsolates\ninsolating\ninsole\ninsolence\ninsolences\ninsolent\ninsolently\ninsolents\ninsoles\ninsolubilities\ninsolubility\ninsoluble\ninsolubleness\ninsolubly\ninsolvency\ninsolvent\ninsolvents\ninsomnia\ninsomniac\ninsomniacs\ninsomnias\ninsomuch\ninsouciance\ninsouciant\ninsouciantly\ninsoul\ninsouled\ninsouling\ninsouls\ninspan\ninspanned\ninspanning\ninspans\ninspect\ninspected\ninspecting\ninspection\ninspections\ninspector\ninspectors\ninspectorship\ninspectorships\ninspects\ninsphere\ninsphered\ninspheres\ninsphering\ninspiration\ninspirational\ninspirationally\ninspirations\ninspire\ninspired\ninspirer\ninspirers\ninspires\ninspiring\ninspirit\ninspirited\ninspiriting\ninspiritingly\ninspirits\ninstabilities\ninstability\ninstable\ninstal\ninstall\ninstallation\ninstallations\ninstalled\ninstaller\ninstallers\ninstalling\ninstallment\ninstallments\ninstalls\ninstalment\ninstals\ninstance\ninstanced\ninstances\ninstancies\ninstancing\ninstancy\ninstant\ninstantaneity\ninstantaneous\ninstantaneously\ninstantaneousness\ninstanter\ninstantiate\ninstantiated\ninstantiates\ninstantiating\ninstantly\ninstants\ninstar\ninstarred\ninstarring\ninstars\ninstate\ninstated\ninstates\ninstating\ninstead\ninstep\ninsteps\ninstigate\ninstigated\ninstigates\ninstigating\ninstigation\ninstigations\ninstigative\ninstigator\ninstigators\ninstil\ninstill\ninstillation\ninstillations\ninstilled\ninstiller\ninstillers\ninstilling\ninstillment\ninstillments\ninstills\ninstils\ninstinct\ninstinctive\ninstinctively\ninstincts\ninstinctual\ninstitute\ninstituted\ninstituter\ninstituters\ninstitutes\ninstituting\ninstitution\ninstitutional\ninstitutionalism\ninstitutionalist\ninstitutionalists\ninstitutionalization\ninstitutionalize\ninstitutionalized\ninstitutionalizes\ninstitutionalizing\ninstitutionally\ninstitutions\ninstitutor\ninstitutors\ninstroke\ninstrokes\ninstruct\ninstructed\ninstructing\ninstruction\ninstructional\ninstructions\ninstructive\ninstructively\ninstructiveness\ninstructor\ninstructors\ninstructorship\ninstructorships\ninstructress\ninstructresses\ninstructs\ninstrument\ninstrumental\ninstrumentalism\ninstrumentalist\ninstrumentalists\ninstrumentalities\ninstrumentality\ninstrumentally\ninstrumentation\ninstrumentations\ninstrumented\ninstrumenting\ninstruments\ninsubordinate\ninsubordinately\ninsubordinates\ninsubordination\ninsubordinations\ninsubstantial\ninsubstantiality\ninsufferable\ninsufferableness\ninsufferably\ninsufficience\ninsufficiencies\ninsufficiency\ninsufficient\ninsufficiently\ninsulant\ninsulants\ninsular\ninsularism\ninsularities\ninsularity\ninsularly\ninsulars\ninsulate\ninsulated\ninsulates\ninsulating\ninsulation\ninsulations\ninsulator\ninsulators\ninsulin\ninsulins\ninsult\ninsulted\ninsulter\ninsulters\ninsulting\ninsultingly\ninsults\ninsuperable\ninsuperably\ninsupportable\ninsupportableness\ninsupportably\ninsuppressible\ninsuppressibly\ninsurability\ninsurable\ninsurance\ninsurances\ninsurant\ninsurants\ninsure\ninsured\ninsureds\ninsurer\ninsurers\ninsures\ninsurgence\ninsurgences\ninsurgencies\ninsurgency\ninsurgent\ninsurgents\ninsuring\ninsurmountable\ninsurmountably\ninsurrection\ninsurrectional\ninsurrectionary\ninsurrectionist\ninsurrectionists\ninsurrections\ninsusceptibility\ninsusceptible\ninsusceptibly\ninswathe\ninswathed\ninswathes\ninswathing\ninswept\nintact\nintactness\nintagli\nintaglio\nintaglios\nintake\nintakes\nintangibilities\nintangibility\nintangible\nintangibleness\nintangibles\nintangibly\nintarsia\nintarsias\ninteger\nintegers\nintegrability\nintegrable\nintegral\nintegrality\nintegrally\nintegrals\nintegrate\nintegrated\nintegrates\nintegrating\nintegration\nintegrationist\nintegrationists\nintegrations\nintegrative\nintegrator\nintegrators\nintegrities\nintegrity\nintegument\nintegumentary\ninteguments\nintellect\nintellection\nintellections\nintellective\nintellects\nintellectual\nintellectualism\nintellectualisms\nintellectualist\nintellectualistic\nintellectualists\nintellectualities\nintellectuality\nintellectualization\nintellectualizations\nintellectualize\nintellectualized\nintellectualizer\nintellectualizers\nintellectualizes\nintellectualizing\nintellectually\nintellectualness\nintellectuals\nintelligence\nintelligences\nintelligent\nintelligential\nintelligently\nintelligentsia\nintelligibilities\nintelligibility\nintelligible\nintelligibleness\nintelligibly\nintemperance\nintemperances\nintemperate\nintemperately\nintemperateness\nintend\nintendant\nintendants\nintended\nintendedly\nintendedness\nintendeds\nintender\nintenders\nintending\nintendment\nintendments\nintends\nintense\nintensely\nintenseness\nintenser\nintensest\nintensification\nintensified\nintensifier\nintensifiers\nintensifies\nintensify\nintensifying\nintension\nintensional\nintensionally\nintensions\nintensities\nintensity\nintensive\nintensively\nintensiveness\nintent\nintention\nintentional\nintentionality\nintentionally\nintentions\nintently\nintentness\nintents\ninter\ninteract\ninteracted\ninteracting\ninteraction\ninteractional\ninteractions\ninteractive\ninteractively\ninteracts\ninterbred\ninterbreed\ninterbreeding\ninterbreeds\nintercalate\nintercalated\nintercalates\nintercalating\nintercalation\nintercalations\nintercede\ninterceded\ninterceder\ninterceders\nintercedes\ninterceding\nintercept\nintercepted\nintercepter\nintercepters\nintercepting\ninterception\ninterceptions\ninterceptor\ninterceptors\nintercepts\nintercession\nintercessional\nintercessions\nintercessor\nintercessors\nintercessory\ninterchange\ninterchangeability\ninterchangeable\ninterchangeableness\ninterchangeably\ninterchanged\ninterchanges\ninterchanging\nintercoastal\nintercom\nintercommunicate\nintercommunicated\nintercommunicates\nintercommunicating\nintercommunication\nintercommunications\nintercoms\ninterconnect\ninterconnected\ninterconnecting\ninterconnection\ninterconnections\ninterconnects\nintercontinental\nintercostal\nintercourse\nintercut\nintercuts\nintercutting\ninterdenominational\ninterdenominationalism\ninterdepartmental\ninterdepartmentally\ninterdependence\ninterdependencies\ninterdependency\ninterdependent\ninterdependently\ninterdict\ninterdicted\ninterdicting\ninterdiction\ninterdictions\ninterdictor\ninterdictors\ninterdicts\ninterdisciplinary\ninterest\ninterested\ninterestedly\ninteresting\ninterestingly\ninterestingness\ninterests\ninterface\ninterfaced\ninterfaces\ninterfacial\ninterfacing\ninterfaith\ninterfere\ninterfered\ninterference\ninterferences\ninterferer\ninterferers\ninterferes\ninterfering\ninterferon\ninterim\ninterims\ninterior\ninteriority\ninteriorly\ninteriors\ninterject\ninterjected\ninterjecting\ninterjection\ninterjectional\ninterjectionally\ninterjections\ninterjector\ninterjectors\ninterjectory\ninterjects\ninterlace\ninterlaced\ninterlacement\ninterlacements\ninterlaces\ninterlacing\ninterlaid\ninterlap\ninterlapped\ninterlapping\ninterlaps\ninterlard\ninterlarded\ninterlarding\ninterlards\ninterlay\ninterlaying\ninterlays\ninterleave\ninterleaved\ninterleaves\ninterleaving\ninterlinear\ninterlinearly\ninterlining\ninterlinings\ninterlock\ninterlocked\ninterlocking\ninterlocks\ninterlocutor\ninterlocutors\ninterlocutory\ninterlocutress\ninterlope\ninterloped\ninterloper\ninterlopers\ninterlopes\ninterloping\ninterlude\ninterludes\nintermarriage\nintermarriages\nintermarried\nintermarries\nintermarry\nintermarrying\nintermediacies\nintermediacy\nintermediaries\nintermediary\nintermediate\nintermediated\nintermediately\nintermediateness\nintermediates\nintermediating\nintermediation\nintermediations\ninterment\ninterments\nintermezzi\nintermezzo\nintermezzos\ninterminable\ninterminableness\ninterminably\nintermingle\nintermingled\nintermingles\nintermingling\nintermission\nintermissions\nintermit\nintermits\nintermitted\nintermittence\nintermittences\nintermittent\nintermittently\nintermitter\nintermitting\nintermix\nintermixed\nintermixes\nintermixing\nintermixture\nintermixtures\nintern\ninternal\ninternalities\ninternality\ninternalization\ninternalizations\ninternalize\ninternalized\ninternalizes\ninternalizing\ninternally\ninternals\ninternational\ninternationalism\ninternationalist\ninternationalists\ninternationalities\ninternationality\ninternationalization\ninternationalize\ninternationalized\ninternationalizes\ninternationalizing\ninternationally\ninterne\ninterned\ninternee\ninternees\ninternes\ninterning\ninternist\ninternists\ninternment\ninternments\ninterns\ninternship\ninternships\ninteroffice\ninterpenetrate\ninterpenetrated\ninterpenetrates\ninterpenetrating\ninterpenetration\ninterpenetrations\ninterpersonal\ninterpersonally\ninterplanetary\ninterplay\ninterplayed\ninterplaying\ninterplays\ninterpolate\ninterpolated\ninterpolates\ninterpolating\ninterpolation\ninterpolations\ninterpolative\ninterpolator\ninterpolators\ninterpose\ninterposed\ninterposer\ninterposers\ninterposes\ninterposing\ninterposition\ninterpositions\ninterpret\ninterpretability\ninterpretable\ninterpretation\ninterpretational\ninterpretations\ninterpretative\ninterpretatively\ninterpreted\ninterpreter\ninterpreters\ninterpreting\ninterpretive\ninterpretively\ninterprets\ninterracial\ninterred\ninterreges\ninterrelate\ninterrelated\ninterrelatedly\ninterrelatedness\ninterrelates\ninterrelating\ninterrelation\ninterrelations\ninterrelationship\ninterrelationships\ninterrex\ninterring\ninterrogate\ninterrogated\ninterrogates\ninterrogating\ninterrogation\ninterrogational\ninterrogations\ninterrogative\ninterrogatively\ninterrogatives\ninterrogator\ninterrogatories\ninterrogators\ninterrogatory\ninterrupt\ninterrupted\ninterrupter\ninterrupters\ninterruptible\ninterrupting\ninterruption\ninterruptions\ninterruptive\ninterrupts\ninters\ninterscholastic\nintersect\nintersected\nintersecting\nintersection\nintersections\nintersects\nintersex\nintersexes\nintersperse\ninterspersed\nintersperses\ninterspersing\ninterspersion\ninterspersions\ninterstate\ninterstice\ninterstices\ninterstitial\ninterstitially\nintertie\ninterties\nintertwine\nintertwined\nintertwinement\nintertwines\nintertwining\ninterurban\ninterval\nintervals\nintervene\nintervened\nintervener\ninterveners\nintervenes\nintervening\nintervenor\nintervenors\nintervention\ninterventionism\ninterventionist\ninterventionists\ninterventions\ninterview\ninterviewed\ninterviewer\ninterviewers\ninterviewing\ninterviews\ninterwar\ninterweave\ninterweaves\ninterweaving\ninterwove\ninterwoven\nintestacy\nintestate\nintestates\nintestinal\nintestinally\nintestine\nintestines\ninthral\ninthrall\ninthralled\ninthralling\ninthralls\ninthrals\ninthrone\ninthroned\ninthrones\ninthroning\ninti\nintima\nintimacies\nintimacy\nintimae\nintimal\nintimas\nintimate\nintimated\nintimately\nintimateness\nintimater\nintimaters\nintimates\nintimating\nintimation\nintimations\nintime\nintimidate\nintimidated\nintimidates\nintimidating\nintimidation\nintimidations\nintimidator\nintimidators\nintine\nintines\nintis\nintitle\nintitled\nintitles\nintitling\nintitule\nintituled\nintitules\nintituling\ninto\nintolerability\nintolerable\nintolerableness\nintolerably\nintolerance\nintolerances\nintolerant\nintolerantly\nintomb\nintombed\nintombing\nintombs\nintonate\nintonated\nintonates\nintonating\nintonation\nintonational\nintonations\nintone\nintoned\nintoner\nintoners\nintones\nintoning\nintort\nintorted\nintorting\nintorts\nintown\nintoxicant\nintoxicants\nintoxicate\nintoxicated\nintoxicatedly\nintoxicates\nintoxicating\nintoxication\nintoxications\nintractabilities\nintractability\nintractable\nintractableness\nintractably\nintrados\nintradoses\nintramural\nintramuscular\nintramuscularly\nintransigence\nintransigent\nintransigently\nintransigents\nintransitive\nintransitively\nintransitiveness\nintrant\nintrants\nintravenous\nintravenously\nintreat\nintreated\nintreating\nintreats\nintrench\nintrenched\nintrenches\nintrenching\nintrepid\nintrepidity\nintrepidly\nintrepidness\nintricacies\nintricacy\nintricate\nintricately\nintricateness\nintrigue\nintrigued\nintriguer\nintriguers\nintrigues\nintriguing\nintriguingly\nintrinsic\nintrinsical\nintrinsically\nintro\nintroduce\nintroduced\nintroducer\nintroducers\nintroduces\nintroducing\nintroduction\nintroductions\nintroductorily\nintroductory\nintrofied\nintrofies\nintrofy\nintrofying\nintroit\nintroits\nintromit\nintromits\nintromitted\nintromitting\nintrorse\nintros\nintrospect\nintrospected\nintrospecting\nintrospection\nintrospectional\nintrospectionist\nintrospectionists\nintrospections\nintrospective\nintrospectively\nintrospectiveness\nintrospects\nintroversion\nintroversive\nintrovert\nintroverted\nintroverting\nintroverts\nintrude\nintruded\nintruder\nintruders\nintrudes\nintruding\nintrusion\nintrusions\nintrusive\nintrusively\nintrusiveness\nintrust\nintrusted\nintrusting\nintrusts\nintubate\nintubated\nintubates\nintubating\nintuit\nintuitable\nintuited\nintuiting\nintuition\nintuitional\nintuitionism\nintuitionist\nintuitionists\nintuitions\nintuitive\nintuitively\nintuitiveness\nintuits\ninturn\ninturned\ninturns\nintwine\nintwined\nintwines\nintwining\nintwist\nintwisted\nintwisting\nintwists\ninulase\ninulases\ninulin\ninulins\ninundant\ninundate\ninundated\ninundates\ninundating\ninundation\ninundations\ninundator\ninundators\ninundatory\ninurbane\ninure\ninured\ninurement\ninures\ninuring\ninurn\ninurned\ninurning\ninurns\ninutile\ninutilities\ninutility\ninvade\ninvaded\ninvader\ninvaders\ninvades\ninvading\ninvalid\ninvalidate\ninvalidated\ninvalidates\ninvalidating\ninvalidation\ninvalidations\ninvalidator\ninvalidators\ninvalided\ninvaliding\ninvalidism\ninvalidity\ninvalidly\ninvalids\ninvaluable\ninvaluableness\ninvaluably\ninvariability\ninvariable\ninvariably\ninvariant\ninvariants\ninvasion\ninvasions\ninvasive\ninvected\ninvective\ninvectively\ninvectiveness\ninvectives\ninveigh\ninveighed\ninveigher\ninveighers\ninveighing\ninveighs\ninveigle\ninveigled\ninveiglement\ninveiglements\ninveigler\ninveiglers\ninveigles\ninveigling\ninvent\ninvented\ninventer\ninventers\ninventing\ninvention\ninventions\ninventive\ninventively\ninventiveness\ninventor\ninventorial\ninventorially\ninventoried\ninventories\ninventors\ninventory\ninventorying\ninvents\ninverities\ninverity\ninverse\ninversely\ninverses\ninversion\ninversions\ninversive\ninvert\ninvertebrate\ninvertebrates\ninverted\ninverter\ninverters\ninvertible\ninverting\ninvertor\ninvertors\ninverts\ninvest\ninvestable\ninvested\ninvestigate\ninvestigated\ninvestigates\ninvestigating\ninvestigation\ninvestigational\ninvestigations\ninvestigative\ninvestigator\ninvestigators\ninvestigatory\ninvesting\ninvestiture\ninvestitures\ninvestment\ninvestments\ninvestor\ninvestors\ninvests\ninveteracy\ninveterate\ninveterately\ninviable\ninviably\ninvidious\ninvidiously\ninvidiousness\ninvigorate\ninvigorated\ninvigorates\ninvigorating\ninvigoratingly\ninvigoration\ninvigorations\ninvigorator\ninvigorators\ninvincibility\ninvincible\ninvincibleness\ninvincibly\ninviolabilities\ninviolability\ninviolable\ninviolableness\ninviolably\ninviolate\ninviolately\ninviolateness\ninvirile\ninviscid\ninvisibilities\ninvisibility\ninvisible\ninvisibleness\ninvisibly\ninvital\ninvitation\ninvitational\ninvitations\ninvite\ninvited\ninvitee\ninvitees\ninviter\ninviters\ninvites\ninviting\ninvitingly\ninvocate\ninvocated\ninvocates\ninvocating\ninvocation\ninvocational\ninvocations\ninvoice\ninvoiced\ninvoices\ninvoicing\ninvoke\ninvoked\ninvoker\ninvokers\ninvokes\ninvoking\ninvoluntarily\ninvoluntariness\ninvoluntary\ninvolute\ninvoluted\ninvolutes\ninvoluting\ninvolution\ninvolutions\ninvolve\ninvolved\ninvolvedly\ninvolvement\ninvolvements\ninvolver\ninvolvers\ninvolves\ninvolving\ninvulnerabilities\ninvulnerability\ninvulnerable\ninvulnerableness\ninvulnerably\ninwall\ninwalled\ninwalling\ninwalls\ninward\ninwardly\ninwardness\ninwards\ninweave\ninweaved\ninweaves\ninweaving\ninwind\ninwinding\ninwinds\ninwound\ninwove\ninwoven\ninwrap\ninwrapped\ninwrapping\ninwraps\niodate\niodated\niodates\niodating\niodation\niodations\niodic\niodid\niodide\niodides\niodids\niodin\niodinate\niodinated\niodinates\niodinating\niodine\niodines\niodins\niodism\niodisms\niodize\niodized\niodizer\niodizers\niodizes\niodizing\niodoform\niodoforms\niodophor\niodophors\niodopsin\niodopsins\niodous\niolite\niolites\nion\nionic\nionicities\nionicity\nionics\nionise\nionised\nionises\nionising\nionium\nioniums\nionizable\nionization\nionizations\nionize\nionized\nionizer\nionizers\nionizes\nionizing\nionomer\nionomers\nionone\nionones\nionosphere\nionospheres\nionospheric\nions\niota\niotacism\niotacisms\niotas\nipecac\nipecacs\nipomoea\nipomoeas\niracund\nirade\nirades\nirascibility\nirascible\nirascibleness\nirascibly\nirate\nirately\nirater\niratest\nire\nired\nireful\nirefully\nireless\nirenic\nirenical\nirenics\nires\nirid\nirides\niridescence\niridescences\niridescent\niridescently\niridic\niridium\niridiums\nirids\niring\niris\nirised\nirises\nirising\niritic\niritis\niritises\nirk\nirked\nirking\nirks\nirksome\nirksomely\nirksomeness\niron\nironbark\nironbarks\nironclad\nironclads\nirone\nironed\nironer\nironers\nirones\nironic\nironical\nironically\nironicalness\nironies\nironing\nironings\nironist\nironists\nironlike\nironness\nironnesses\nirons\nironside\nironsides\nironstone\nironstones\nironware\nironwares\nironweed\nironweeds\nironwood\nironwoods\nironwork\nironworker\nironworkers\nironworks\nirony\nirradiate\nirradiated\nirradiates\nirradiating\nirradiation\nirradiations\nirradiative\nirradiator\nirradiators\nirrational\nirrationalism\nirrationalist\nirrationalistic\nirrationalists\nirrationalities\nirrationality\nirrationally\nirreal\nirreclaimable\nirreclaimably\nirreconcilabilities\nirreconcilability\nirreconcilable\nirreconcilableness\nirreconcilably\nirrecoverable\nirrecoverableness\nirrecoverably\nirredeemable\nirredeemably\nirreducibility\nirreducible\nirreducibly\nirrefutability\nirrefutable\nirrefutably\nirregular\nirregularities\nirregularity\nirregularly\nirregulars\nirrelevance\nirrelevances\nirrelevancies\nirrelevancy\nirrelevant\nirrelevantly\nirreligious\nirreligiously\nirremediable\nirremediableness\nirremediably\nirremovability\nirremovable\nirremovableness\nirremovably\nirreparable\nirreparableness\nirreparably\nirreplaceability\nirreplaceable\nirreplaceableness\nirreplaceably\nirrepressibility\nirrepressible\nirrepressibly\nirreproachability\nirreproachable\nirreproachableness\nirreproachably\nirresistibility\nirresistible\nirresistibleness\nirresistibly\nirresolute\nirresolutely\nirresoluteness\nirresolution\nirrespective\nirresponsibilities\nirresponsibility\nirresponsible\nirresponsibleness\nirresponsibly\nirretrievability\nirretrievable\nirretrievably\nirreverence\nirreverences\nirreverent\nirreverently\nirreversibility\nirreversible\nirreversibly\nirrevocability\nirrevocable\nirrevocableness\nirrevocably\nirrigate\nirrigated\nirrigates\nirrigating\nirrigation\nirrigations\nirrigator\nirrigators\nirritability\nirritable\nirritableness\nirritably\nirritant\nirritants\nirritate\nirritated\nirritates\nirritating\nirritatingly\nirritation\nirritations\nirritative\nirrupt\nirrupted\nirrupting\nirruption\nirruptions\nirruptive\nirruptively\nirrupts\nis\nisagoge\nisagoges\nisagogic\nisagogics\nisarithm\nisarithms\nisatin\nisatine\nisatines\nisatinic\nisatins\nisba\nisbas\nischemia\nischemias\nischemic\nischia\nischial\nischium\nisinglass\nislamizations\nisland\nislanded\nislander\nislanders\nislanding\nislands\nisle\nisled\nisleless\nisles\nislet\nislets\nisling\nism\nisms\nisobar\nisobare\nisobares\nisobaric\nisobars\nisobath\nisobaths\nisocheim\nisocheims\nisochime\nisochimes\nisochor\nisochore\nisochores\nisochors\nisochron\nisochrons\nisoclinal\nisocline\nisoclines\nisoclinic\nisocracies\nisocracy\nisodose\nisogamies\nisogamy\nisogenic\nisogenies\nisogeny\nisogloss\nisoglosses\nisogon\nisogonal\nisogonals\nisogone\nisogones\nisogonic\nisogonics\nisogonies\nisogons\nisogony\nisogram\nisograms\nisograph\nisographs\nisogriv\nisogrivs\nisohel\nisohels\nisohyet\nisohyets\nisolable\nisolate\nisolated\nisolates\nisolating\nisolation\nisolationism\nisolationist\nisolationists\nisolations\nisolator\nisolators\nisolead\nisoleads\nisoline\nisolines\nisolog\nisologs\nisologue\nisologues\nisomer\nisomeric\nisomerism\nisomerisms\nisomers\nisometric\nisometrically\nisometrics\nisometries\nisometry\nisomorph\nisomorphs\nisonomic\nisonomies\nisonomy\nisophote\nisophotes\nisopleth\nisopleths\nisopod\nisopodan\nisopodans\nisopods\nisoprene\nisoprenes\nisosceles\nisospin\nisospins\nisospories\nisospory\nisostasies\nisostasy\nisotach\nisotachs\nisothere\nisotheres\nisotherm\nisothermal\nisothermally\nisotherms\nisotone\nisotones\nisotonic\nisotope\nisotopes\nisotopic\nisotopies\nisotopy\nisotropic\nisotropies\nisotropy\nisotype\nisotypes\nisotypic\nisozyme\nisozymes\nisozymic\nissei\nisseis\nissuable\nissuably\nissuance\nissuances\nissuant\nissue\nissued\nissueless\nissuer\nissuers\nissues\nissuing\nisthmi\nisthmian\nisthmians\nisthmic\nisthmoid\nisthmus\nisthmuses\nistle\nistles\nit\nitalic\nitalicization\nitalicizations\nitalicize\nitalicized\nitalicizes\nitalicizing\nitalics\nitch\nitched\nitches\nitchier\nitchiest\nitchiness\nitching\nitchings\nitchy\nitem\nitemed\niteming\nitemization\nitemizations\nitemize\nitemized\nitemizer\nitemizers\nitemizes\nitemizing\nitems\niterance\niterances\niterant\niterate\niterated\niterates\niterating\niteration\niterations\niterative\niteratively\niterum\nither\nitinerant\nitinerantly\nitinerants\nitineraries\nitinerary\nitinerate\nitinerated\nitinerates\nitinerating\nitineration\nitinerations\nits\nitself\nivied\nivies\nivories\nivory\nivy\nivylike\niwis\nixia\nixias\nixodid\nixodids\nixora\nixtle\nixtles\nizar\nizars\nizzard\nizzards\njab\njabbed\njabber\njabbered\njabberer\njabberers\njabbering\njabbers\njabbing\njabiru\njabirus\njabot\njabots\njabs\njacal\njacales\njacals\njacamar\njacamars\njacana\njacanas\njacinth\njacinthe\njacinthes\njacinths\njack\njackal\njackals\njackaroo\njackaroos\njackass\njackasses\njackboot\njackboots\njackdaw\njackdaws\njacked\njacker\njackeroo\njackeroos\njackers\njacket\njacketed\njacketing\njackets\njackfish\njackfishes\njackhammer\njackhammers\njackies\njacking\njackknife\njackknifed\njackknifes\njackknifing\njackknives\njackleg\njacklegs\njackpot\njackpots\njackrabbit\njackrabbits\njacks\njackscrew\njackscrews\njackstay\njackstays\njackstraw\njackstraws\njacky\njacobin\njacobins\njacobus\njacobuses\njaconet\njaconets\njacquard\njacquards\njaculate\njaculated\njaculates\njaculating\njade\njaded\njadedly\njadedness\njadeite\njadeites\njades\njading\njadish\njadishly\njaditic\njaeger\njaegers\njag\njager\njagers\njagg\njaggaries\njaggary\njagged\njaggeder\njaggedest\njaggedly\njaggedness\njagger\njaggeries\njaggers\njaggery\njaggheries\njagghery\njaggier\njaggiest\njagging\njaggs\njaggy\njagless\njagra\njagras\njags\njaguar\njaguars\njail\njailbait\njailbird\njailbirds\njailbreak\njailbreaks\njailed\njailer\njailers\njailing\njailor\njailors\njails\njake\njakes\njalap\njalapic\njalapin\njalapins\njalaps\njalop\njalopies\njaloppies\njaloppy\njalops\njalopy\njalousie\njalousies\njam\njamb\njambe\njambeau\njambeaux\njambed\njambes\njambing\njamboree\njamborees\njambs\njammed\njammer\njammers\njamming\njams\njane\njanes\njangle\njangled\njangler\njanglers\njangles\njangling\njaniform\njanisaries\njanisary\njanitor\njanitorial\njanitors\njanizaries\njanizary\njanty\njapan\njapanize\njapanized\njapanizes\njapanizing\njapanned\njapanner\njapanners\njapanning\njapans\njape\njaped\njaper\njaperies\njapers\njapery\njapes\njaping\njapingly\njaponica\njaponicas\njar\njardiniere\njardinieres\njarful\njarfuls\njargon\njargoned\njargonel\njargonels\njargoning\njargonize\njargonized\njargonizes\njargonizing\njargons\njargoon\njargoons\njarina\njarinas\njarl\njarldom\njarldoms\njarls\njarosite\njarosites\njarovize\njarovized\njarovizes\njarovizing\njarrah\njarrahs\njarred\njarring\njarringly\njars\njarsful\njarvey\njarveys\njasmine\njasmines\njasper\njaspers\njaspery\njassid\njassids\njato\njatos\njauk\njauked\njauking\njauks\njaunce\njaunced\njaunces\njauncing\njaundice\njaundiced\njaundices\njaundicing\njaunt\njaunted\njauntier\njauntiest\njauntily\njauntiness\njaunting\njaunts\njaunty\njaup\njauped\njauping\njaups\njava\njavas\njavelin\njavelina\njavelinas\njavelined\njavelining\njavelins\njaw\njawan\njawans\njawbone\njawboned\njawbones\njawboning\njawbreaker\njawbreakers\njawed\njawing\njawlike\njawline\njawlines\njaws\njay\njaybird\njaybirds\njaygee\njaygees\njays\njayvee\njayvees\njaywalk\njaywalked\njaywalker\njaywalkers\njaywalking\njaywalks\njazz\njazzed\njazzer\njazzers\njazzes\njazzier\njazziest\njazzily\njazziness\njazzing\njazzman\njazzmen\njazzy\njealous\njealousies\njealously\njealousness\njealousy\njean\njeans\njebel\njebels\njee\njeed\njeeing\njeep\njeepers\njeeps\njeer\njeered\njeerer\njeerers\njeering\njeeringly\njeers\njees\njeez\njefe\njefes\njehad\njehads\njehu\njehus\njejuna\njejunal\njejune\njejunely\njejunities\njejunity\njejunum\njell\njelled\njellied\njellies\njellified\njellifies\njellify\njellifying\njelling\njells\njelly\njellyfish\njellyfishes\njellying\njellylike\njelutong\njelutongs\njemadar\njemadars\njemidar\njemidars\njemmied\njemmies\njemmy\njemmying\njennet\njennets\njennies\njenny\njeon\njeopard\njeoparded\njeopardies\njeoparding\njeopardize\njeopardized\njeopardizes\njeopardizing\njeopards\njeopardy\njerboa\njerboas\njereed\njereeds\njeremiad\njeremiads\njerid\njerids\njerk\njerked\njerker\njerkers\njerkier\njerkies\njerkiest\njerkily\njerkin\njerkiness\njerking\njerkins\njerks\njerky\njeroboam\njeroboams\njerreed\njerreeds\njerrican\njerricans\njerrid\njerrids\njerries\njerry\njerrycan\njerrycans\njersey\njerseyed\njerseys\njess\njessamine\njessant\njesse\njessed\njesses\njessing\njest\njested\njester\njesters\njestful\njesting\njestingly\njestings\njests\njesuit\njesuitic\njesuitical\njesuitically\njesuitism\njesuitries\njesuitry\njesuits\njet\njetbead\njetbeads\njete\njetes\njetliner\njetliners\njeton\njetons\njetport\njetports\njets\njetsam\njetsams\njetsom\njetsoms\njetted\njettied\njetties\njetting\njettison\njettisoned\njettisoning\njettisons\njetton\njettons\njetty\njettying\njeu\njeux\njew\njewed\njewel\njeweled\njeweler\njewelers\njeweling\njewelled\njeweller\njewellers\njewellike\njewelling\njewelries\njewelry\njewels\njewfish\njewfishes\njewing\njews\njezail\njezails\njezebel\njezebels\njib\njibb\njibbed\njibber\njibbers\njibbing\njibboom\njibbooms\njibbs\njibe\njibed\njiber\njibers\njibes\njibing\njibingly\njibs\njiff\njiffies\njiffs\njiffy\njig\njigaboo\njigaboos\njigged\njigger\njiggered\njiggering\njiggers\njigging\njiggle\njiggled\njiggles\njigglier\njiggliest\njiggling\njiggly\njigs\njigsaw\njigsawed\njigsawing\njigsawn\njigsaws\njihad\njihads\njill\njillion\njillions\njills\njilt\njilted\njilter\njilters\njilting\njilts\njiminy\njimjams\njimmied\njimmies\njimminy\njimmy\njimmying\njimp\njimper\njimpest\njimply\njimpy\njimsonweed\njimsonweeds\njin\njingal\njingall\njingalls\njingals\njingko\njingkoes\njingle\njingled\njingler\njinglers\njingles\njinglier\njingliest\njingling\njingly\njingo\njingoes\njingoish\njingoism\njingoisms\njingoist\njingoistic\njingoistically\njingoists\njink\njinked\njinker\njinkers\njinking\njinks\njinn\njinnee\njinni\njinns\njins\njinx\njinxed\njinxes\njinxing\njipijapa\njipijapas\njism\njisms\njitney\njitneys\njitter\njitterbug\njitterbugged\njitterbugging\njitterbugs\njittered\njittering\njitters\njittery\njiujitsu\njiujitsus\njiujutsu\njiujutsus\njive\njived\njiver\njives\njiving\njlao\njnana\njnanas\njo\njoannes\njob\njobbed\njobber\njobberies\njobbers\njobbery\njobbing\njobholder\njobholders\njobless\njoblessness\njobs\njock\njockey\njockeyed\njockeying\njockeys\njocko\njockos\njocks\njockstrap\njockstraps\njocose\njocosely\njocosities\njocosity\njocular\njocularities\njocularity\njocularly\njocund\njocundity\njocundly\njodhpur\njodhpurs\njoe\njoes\njoey\njoeys\njog\njogged\njogger\njoggers\njogging\njoggle\njoggled\njoggler\njogglers\njoggles\njoggling\njogs\njohannes\njohn\njohnboat\njohnboats\njohnnies\njohnny\njohns\njoin\njoinable\njoinder\njoinders\njoined\njoiner\njoineries\njoiners\njoinery\njoining\njoinings\njoins\njoint\njointed\njointer\njointers\njointing\njointly\njoints\njointure\njointured\njointures\njointuring\njoist\njoisted\njoisting\njoists\njojoba\njojobas\njoke\njoked\njoker\njokers\njokes\njokester\njokesters\njokey\njoking\njokingly\njoky\njole\njoles\njollied\njollier\njollies\njolliest\njollified\njollifies\njollify\njollifying\njollily\njollities\njollity\njolly\njollying\njolt\njolted\njolter\njolters\njoltier\njoltiest\njoltily\njolting\njolts\njolty\njones\njongleur\njongleurs\njonquil\njonquils\njoram\njorams\njordan\njordans\njorum\njorums\njoseph\njosephs\njosh\njoshed\njosher\njoshers\njoshes\njoshing\njoss\njosses\njostle\njostled\njostler\njostlers\njostles\njostling\njot\njota\njotas\njots\njotted\njotting\njottings\njotty\njoual\njouk\njouked\njouking\njouks\njoule\njoules\njounce\njounced\njounces\njouncier\njounciest\njouncing\njouncy\njournal\njournalese\njournalism\njournalist\njournalistic\njournalistically\njournalists\njournalize\njournalized\njournalizes\njournalizing\njournals\njourney\njourneyed\njourneyer\njourneyers\njourneying\njourneyman\njourneymen\njourneys\njoust\njousted\njouster\njousters\njousting\njousts\njovial\njoviality\njovially\njovialties\njovialty\njow\njowar\njowed\njowing\njowl\njowled\njowlier\njowliest\njowls\njowly\njows\njoy\njoyance\njoyances\njoyed\njoyful\njoyfuller\njoyfullest\njoyfully\njoyfulness\njoying\njoyless\njoylessly\njoylessness\njoyous\njoyously\njoyousness\njoypop\njoypopped\njoypopping\njoypops\njoyride\njoyrider\njoyriders\njoyrides\njoyriding\njoys\njoystick\njoysticks\njuba\njubas\njubbah\njubbahs\njube\njubes\njubhah\njubhahs\njubilance\njubilant\njubilantly\njubilate\njubilated\njubilates\njubilating\njubilation\njubilations\njubile\njubilee\njubilees\njubiles\njudas\njudases\njudder\njuddered\njuddering\njudders\njudge\njudged\njudgement\njudgemental\njudgements\njudger\njudgers\njudges\njudgeship\njudgeships\njudging\njudgment\njudgmental\njudgments\njudicatories\njudicatory\njudicature\njudicatures\njudicial\njudicially\njudiciaries\njudiciary\njudicious\njudiciously\njudiciousness\njudo\njudoist\njudoists\njudoka\njudokas\njudos\njug\njuga\njugal\njugate\njugful\njugfuls\njugged\njuggernaut\njuggernauts\njugging\njuggle\njuggled\njuggler\njuggleries\njugglers\njugglery\njuggles\njuggling\njugglings\njughead\njugheads\njugs\njugsful\njugula\njugular\njugulars\njugulate\njugulated\njugulates\njugulating\njugulum\njugum\njugums\njuice\njuiced\njuicer\njuicers\njuices\njuicier\njuiciest\njuicily\njuiciness\njuicing\njuicy\njujitsu\njujitsus\njuju\njujube\njujubes\njujuism\njujuisms\njujuist\njujuists\njujus\njujutsu\njujutsus\njuke\njukebox\njukeboxes\njuked\njukes\njuking\njulep\njuleps\njulienne\njuliennes\njumble\njumbled\njumbler\njumblers\njumbles\njumbling\njumbo\njumbos\njumbuck\njumbucks\njump\njumped\njumper\njumpers\njumpier\njumpiest\njumpily\njumpiness\njumping\njumpoff\njumpoffs\njumps\njumpy\njun\njunco\njuncoes\njuncos\njunction\njunctional\njunctions\njuncture\njunctures\njungle\njungles\njunglier\njungliest\njungly\njunior\njuniors\njuniper\njunipers\njunk\njunked\njunker\njunkers\njunket\njunketed\njunketeer\njunketeers\njunketer\njunketers\njunketing\njunkets\njunkie\njunkier\njunkies\njunkiest\njunking\njunkman\njunkmen\njunks\njunky\njunkyard\njunkyards\njunta\njuntas\njunto\njuntos\njupe\njupes\njupon\njupons\njura\njural\njurally\njurant\njurants\njurat\njuratory\njurats\njurel\njurels\njuridic\njuridical\njuridically\njuries\njurisdiction\njurisdictional\njurisdictions\njurisprudence\njurisprudent\njurisprudential\njurisprudentially\njurisprudents\njurist\njuristic\njuristically\njurists\njuror\njurors\njury\njuryman\njurymen\njus\njussive\njussives\njust\njusted\njuster\njusters\njustest\njustice\njustices\njusticiability\njusticiable\njustifiability\njustifiable\njustifiably\njustification\njustifications\njustificative\njustified\njustifies\njustify\njustifying\njusting\njustle\njustled\njustles\njustling\njustly\njustness\njustnesses\njusts\njut\njute\njutes\njuts\njutted\njuttied\njutties\njutting\njutty\njuttying\njuvenal\njuvenals\njuvenile\njuveniles\njuvenilities\njuvenility\njuxtapose\njuxtaposed\njuxtaposes\njuxtaposing\njuxtaposition\njuxtapositions\nka\nkaas\nkab\nkabab\nkababs\nkabaka\nkabakas\nkabala\nkabalas\nkabar\nkabars\nkabaya\nkabayas\nkabbala\nkabbalah\nkabbalahs\nkabbalas\nkabeljou\nkabeljous\nkabiki\nkabikis\nkabob\nkabobs\nkabs\nkabuki\nkabukis\nkachina\nkachinas\nkaddish\nkaddishim\nkadi\nkadis\nkae\nkaes\nkaf\nkaffir\nkaffirs\nkaffiyeh\nkaffiyehs\nkafir\nkafirs\nkafs\nkaftan\nkaftans\nkagu\nkagus\nkahuna\nkahunas\nkaiak\nkaiaks\nkaif\nkaifs\nkail\nkails\nkailyard\nkailyards\nkain\nkainit\nkainite\nkainites\nkainits\nkains\nkaiser\nkaiserin\nkaiserins\nkaisers\nkajeput\nkajeputs\nkaka\nkakapo\nkakapos\nkakas\nkakemono\nkakemonos\nkaki\nkakis\nkalam\nkalams\nkale\nkaleidoscope\nkaleidoscopes\nkaleidoscopic\nkaleidoscopically\nkalends\nkales\nkalewife\nkalewives\nkaleyard\nkaleyards\nkalian\nkalians\nkalif\nkalifate\nkalifates\nkalifs\nkalimba\nkalimbas\nkaliph\nkaliphs\nkalium\nkaliums\nkallidin\nkallidins\nkalmia\nkalmias\nkalong\nkalongs\nkalpa\nkalpak\nkalpaks\nkalpas\nkalyptra\nkalyptras\nkamaaina\nkamaainas\nkamacite\nkamacites\nkamala\nkamalas\nkame\nkames\nkami\nkamik\nkamikaze\nkamikazes\nkamiks\nkampong\nkampongs\nkamseen\nkamseens\nkamsin\nkamsins\nkana\nkanas\nkane\nkanes\nkangaroo\nkangaroos\nkanji\nkanjis\nkantar\nkantars\nkantele\nkanteles\nkaoliang\nkaoliangs\nkaolin\nkaoline\nkaolines\nkaolinic\nkaolins\nkaon\nkaons\nkapa\nkapas\nkaph\nkaphs\nkapok\nkapoks\nkappa\nkappas\nkaput\nkaputt\nkarakul\nkarakuls\nkarat\nkarate\nkarates\nkarats\nkarma\nkarmas\nkarmic\nkarn\nkarns\nkaroo\nkaroos\nkaross\nkarosses\nkarroo\nkarroos\nkarst\nkarstic\nkarsts\nkart\nkarting\nkartings\nkarts\nkaryotin\nkaryotins\nkas\nkasha\nkashas\nkasher\nkashered\nkashering\nkashers\nkashmir\nkashmirs\nkashrut\nkashruth\nkashruths\nkashruts\nkat\nkatakana\nkatakanas\nkathodal\nkathode\nkathodes\nkathodic\nkation\nkations\nkats\nkatydid\nkatydids\nkauri\nkauries\nkauris\nkaury\nkava\nkavas\nkavass\nkavasses\nkay\nkayak\nkayaker\nkayakers\nkayaks\nkayles\nkayo\nkayoed\nkayoes\nkayoing\nkayos\nkays\nkazoo\nkazoos\nkbar\nkbars\nkea\nkeas\nkebab\nkebabs\nkebar\nkebars\nkebbie\nkebbies\nkebbock\nkebbocks\nkebbuck\nkebbucks\nkeblah\nkeblahs\nkebob\nkebobs\nkeck\nkecked\nkecking\nkeckle\nkeckled\nkeckles\nkeckling\nkecks\nkeddah\nkeddahs\nkedge\nkedged\nkedgeree\nkedgerees\nkedges\nkedging\nkeef\nkeefs\nkeek\nkeeked\nkeeking\nkeeks\nkeel\nkeelage\nkeelages\nkeelboat\nkeelboats\nkeeled\nkeelhale\nkeelhaled\nkeelhales\nkeelhaling\nkeelhaul\nkeelhauled\nkeelhauling\nkeelhauls\nkeeling\nkeelless\nkeels\nkeelson\nkeelsons\nkeen\nkeened\nkeener\nkeeners\nkeenest\nkeening\nkeenly\nkeenness\nkeennesses\nkeens\nkeep\nkeepable\nkeeper\nkeepers\nkeeping\nkeepings\nkeeps\nkeepsake\nkeepsakes\nkeeshond\nkeeshonden\nkeeshonds\nkeester\nkeesters\nkeet\nkeets\nkeeve\nkeeves\nkef\nkefir\nkefirs\nkefs\nkeg\nkegeler\nkegelers\nkegler\nkeglers\nkegling\nkeglings\nkegs\nkeir\nkeirs\nkeister\nkeisters\nkeitloa\nkeitloas\nkelep\nkelly\nkeloid\nkeloidal\nkeloids\nkelp\nkelped\nkelpie\nkelpies\nkelping\nkelps\nkelpy\nkelson\nkelsons\nkelter\nkelters\nkelvin\nkelvins\nkemp\nkemps\nkempt\nken\nkenaf\nkenafs\nkench\nkenches\nkendo\nkendos\nkenned\nkennel\nkenneled\nkenneling\nkennelled\nkennelling\nkennels\nkenning\nkennings\nkeno\nkenos\nkenosis\nkenosises\nkenotic\nkenotron\nkenotrons\nkens\nkent\nkep\nkephalin\nkephalins\nkepi\nkepis\nkepped\nkeppen\nkepping\nkeps\nkept\nkeramic\nkeramics\nkeratin\nkeratinous\nkeratins\nkeratoid\nkeratoma\nkeratomas\nkeratomata\nkeratose\nkerb\nkerbed\nkerbing\nkerbs\nkerchief\nkerchiefed\nkerchiefs\nkerchieves\nkerchoo\nkerf\nkerfed\nkerfing\nkerfs\nkermes\nkermess\nkermesses\nkermis\nkermises\nkern\nkerne\nkerned\nkernel\nkerneled\nkerneling\nkernelled\nkernelling\nkernels\nkernes\nkerning\nkernite\nkernites\nkerns\nkerogen\nkerogens\nkerosene\nkerosenes\nkerosine\nkerosines\nkerplunk\nkerria\nkerrias\nkerries\nkerry\nkersey\nkerseys\nkerygma\nkerygmata\nkestrel\nkestrels\nketch\nketches\nketchup\nketchups\nketene\nketenes\nketo\nketol\nketone\nketones\nketonic\nketose\nketoses\nketosis\nketotic\nkettle\nkettledrum\nkettledrums\nkettles\nkev\nkevel\nkevels\nkevil\nkevils\nkex\nkexes\nkey\nkeyboard\nkeyboarded\nkeyboarder\nkeyboarders\nkeyboarding\nkeyboards\nkeyed\nkeyhole\nkeyholes\nkeying\nkeyless\nkeynote\nkeynoted\nkeynoter\nkeynoters\nkeynotes\nkeynoting\nkeypunch\nkeypunched\nkeypuncher\nkeypunchers\nkeypunches\nkeypunching\nkeys\nkeyset\nkeysets\nkeyster\nkeysters\nkeystone\nkeystones\nkeystroke\nkeystroked\nkeystrokes\nkeystroking\nkeyway\nkeyways\nkeyword\nkeywords\nkhaddar\nkhaddars\nkhadi\nkhadis\nkhaf\nkhafs\nkhaki\nkhakis\nkhalif\nkhalifa\nkhalifas\nkhalifs\nkhamseen\nkhamseens\nkhamsin\nkhamsins\nkhan\nkhanate\nkhanates\nkhans\nkhaph\nkhat\nkhats\nkhazen\nkhazenim\nkhazens\nkheda\nkhedah\nkhedahs\nkhedas\nkhedival\nkhedive\nkhedives\nkhet\nkheth\nkhets\nkhi\nkhirkah\nkhirkahs\nkhis\nkhoum\nkiang\nkiangs\nkiaugh\nkiaughs\nkibbe\nkibble\nkibbled\nkibbles\nkibbling\nkibbutz\nkibbutzim\nkibe\nkibei\nkibes\nkibitz\nkibitzed\nkibitzer\nkibitzers\nkibitzes\nkibitzing\nkibla\nkiblah\nkiblahs\nkiblas\nkibosh\nkiboshed\nkiboshes\nkiboshing\nkick\nkickback\nkickbacks\nkicked\nkicker\nkickers\nkicking\nkickoff\nkickoffs\nkicks\nkickshaw\nkickshaws\nkickup\nkickups\nkicky\nkid\nkidded\nkidder\nkidders\nkiddie\nkiddies\nkidding\nkiddingly\nkiddish\nkiddo\nkiddoes\nkiddos\nkiddush\nkiddushes\nkiddy\nkidlike\nkidnap\nkidnaped\nkidnaper\nkidnapers\nkidnaping\nkidnapped\nkidnapper\nkidnappers\nkidnapping\nkidnaps\nkidney\nkidneys\nkids\nkidskin\nkidskins\nkief\nkiefs\nkielbasa\nkielbasas\nkielbasy\nkier\nkiers\nkiester\nkiesters\nkif\nkifs\nkike\nkikes\nkilim\nkilims\nkill\nkilldee\nkilldeer\nkilldeers\nkilldees\nkilled\nkiller\nkillers\nkillick\nkillicks\nkilling\nkillings\nkilljoy\nkilljoys\nkillock\nkillocks\nkills\nkiln\nkilned\nkilning\nkilns\nkilo\nkilobar\nkilobars\nkilobit\nkilobits\nkilocycle\nkilocycles\nkilogram\nkilograms\nkilohertz\nkiloliter\nkiloliters\nkilometer\nkilometers\nkilomole\nkilomoles\nkilorad\nkilorads\nkilos\nkiloton\nkilotons\nkilovolt\nkilovolts\nkilowatt\nkilowatts\nkilt\nkilted\nkilter\nkilters\nkiltie\nkilties\nkilting\nkiltings\nkilts\nkilty\nkimono\nkimonoed\nkimonos\nkin\nkina\nkinas\nkinase\nkinases\nkind\nkinder\nkindergarten\nkindergartens\nkindergartner\nkindergartners\nkindest\nkindhearted\nkindheartedly\nkindheartedness\nkindle\nkindled\nkindler\nkindlers\nkindles\nkindless\nkindlier\nkindliest\nkindliness\nkindling\nkindlings\nkindly\nkindness\nkindnesses\nkindred\nkindreds\nkinds\nkine\nkinema\nkinemas\nkinematic\nkinematical\nkinematically\nkinematics\nkines\nkinescope\nkinescoped\nkinescopes\nkinescoping\nkineses\nkinesics\nkinesis\nkinetic\nkinetically\nkinetics\nkinetin\nkinetins\nkinfolk\nkinfolks\nking\nkingbird\nkingbirds\nkingbolt\nkingbolts\nkingcup\nkingcups\nkingdom\nkingdoms\nkinged\nkingfish\nkingfishes\nkinghood\nkinghoods\nkinging\nkingless\nkinglet\nkinglets\nkinglier\nkingliest\nkinglike\nkingly\nkingpin\nkingpins\nkingpost\nkingposts\nkings\nkingship\nkingships\nkingside\nkingsides\nkingwood\nkingwoods\nkinin\nkinins\nkink\nkinkajou\nkinkajous\nkinked\nkinkier\nkinkiest\nkinkily\nkinkiness\nkinking\nkinks\nkinky\nkino\nkinos\nkins\nkinsfolk\nkinship\nkinships\nkinsman\nkinsmen\nkinswoman\nkinswomen\nkiosk\nkiosks\nkip\nkipped\nkippen\nkipper\nkippered\nkippering\nkippers\nkipping\nkips\nkipskin\nkipskins\nkir\nkirigami\nkirigamis\nkirk\nkirkman\nkirkmen\nkirks\nkirmess\nkirmesses\nkirn\nkirned\nkirning\nkirns\nkirs\nkirsch\nkirsches\nkirtle\nkirtled\nkirtles\nkishka\nkishkas\nkishke\nkishkes\nkismat\nkismats\nkismet\nkismetic\nkismets\nkiss\nkissable\nkissably\nkissed\nkisser\nkissers\nkisses\nkissing\nkissy\nkist\nkistful\nkistfuls\nkists\nkit\nkitchen\nkitchenette\nkitchenettes\nkitchens\nkite\nkited\nkiter\nkiters\nkites\nkith\nkithara\nkitharas\nkithe\nkithed\nkithes\nkithing\nkiths\nkiting\nkitling\nkitlings\nkits\nkitsch\nkitsches\nkitschy\nkitted\nkittel\nkitten\nkittened\nkittening\nkittens\nkitties\nkitting\nkittle\nkittled\nkittler\nkittles\nkittlest\nkittling\nkitty\nkiva\nkivas\nkiwi\nkiwis\nklatch\nklatches\nklatsch\nklatsches\nklavern\nklaverns\nklaxon\nklaxons\nkleagle\nkleagles\nklepht\nklephtic\nklephts\nkleptomania\nkleptomaniac\nkleptomaniacs\nklong\nklongs\nkloof\nkloofs\nkludge\nkludges\nkluge\nklutz\nklutzes\nklutzier\nklutziest\nklutzy\nklystron\nklystrons\nknack\nknacked\nknacker\nknackeries\nknackers\nknackery\nknacking\nknacks\nknap\nknapped\nknapper\nknappers\nknapping\nknaps\nknapsack\nknapsacks\nknapweed\nknapweeds\nknar\nknarred\nknarry\nknars\nknaur\nknave\nknaveries\nknavery\nknaves\nknavish\nknavishly\nknawel\nknawels\nknead\nkneaded\nkneader\nkneaders\nkneading\nkneads\nknee\nkneecap\nkneecaps\nkneed\nkneehole\nkneeholes\nkneeing\nkneel\nkneeled\nkneeler\nkneelers\nkneeling\nkneels\nkneepad\nkneepads\nkneepan\nkneepans\nknees\nknell\nknelled\nknelling\nknells\nknelt\nknew\nknickers\nknickknack\nknickknacks\nknife\nknifed\nknifer\nknifers\nknifes\nknifing\nknight\nknighted\nknighthood\nknighting\nknightly\nknights\nknish\nknishes\nknit\nknits\nknitted\nknitter\nknitters\nknitting\nknittings\nknitwear\nknitwears\nknives\nknob\nknobbed\nknobbier\nknobbiest\nknobby\nknoblike\nknobs\nknock\nknockdown\nknocked\nknocker\nknockers\nknocking\nknockoff\nknockoffs\nknockout\nknockouts\nknocks\nknoll\nknolled\nknoller\nknollers\nknolling\nknolls\nknolly\nknop\nknopped\nknops\nknosp\nknosps\nknot\nknothole\nknotholes\nknotless\nknotlike\nknots\nknotted\nknotter\nknotters\nknottier\nknottiest\nknottily\nknotting\nknotty\nknotweed\nknotweeds\nknout\nknouted\nknouting\nknouts\nknow\nknowable\nknower\nknowers\nknowing\nknowinger\nknowingest\nknowingly\nknowings\nknowledge\nknowledgeable\nknowledgeableness\nknowledgeably\nknown\nknowns\nknows\nknuckle\nknuckled\nknuckler\nknucklers\nknuckles\nknucklier\nknuckliest\nknuckling\nknuckly\nknur\nknurl\nknurled\nknurlier\nknurliest\nknurling\nknurls\nknurly\nknurs\nkoa\nkoala\nkoalas\nkoan\nkoans\nkoas\nkob\nkobo\nkobold\nkobolds\nkobs\nkoel\nkoels\nkohl\nkohlrabi\nkohlrabies\nkohls\nkoine\nkoines\nkokanee\nkokanees\nkola\nkolacky\nkolas\nkolhoz\nkolhozes\nkolhozy\nkolinski\nkolinskies\nkolinsky\nkolkhos\nkolkhoses\nkolkhosy\nkolkhoz\nkolkhozes\nkolkhozy\nkolkoz\nkolkozes\nkolkozy\nkolo\nkolos\nkomatik\nkomatiks\nkomondor\nkomondorock\nkomondorok\nkomondors\nkonk\nkonks\nkoodoo\nkoodoos\nkook\nkookie\nkookier\nkookiest\nkooks\nkooky\nkop\nkopeck\nkopecks\nkopek\nkopeks\nkoph\nkophs\nkopje\nkopjes\nkoppa\nkoppas\nkoppie\nkoppies\nkops\nkor\nkorat\nkors\nkorun\nkoruna\nkorunas\nkoruny\nkos\nkosher\nkoshered\nkoshering\nkoshers\nkoss\nkoto\nkotos\nkotow\nkotowed\nkotower\nkotowers\nkotowing\nkotows\nkoumis\nkoumises\nkoumiss\nkoumisses\nkoumys\nkoumyses\nkoumyss\nkoumysses\nkousso\nkoussos\nkowtow\nkowtowed\nkowtower\nkowtowers\nkowtowing\nkowtows\nkraal\nkraaled\nkraaling\nkraals\nkraft\nkrafts\nkrait\nkraits\nkraken\nkrakens\nkrater\nkraters\nkraut\nkrauts\nkreep\nkremlin\nkremlins\nkreutzer\nkreutzers\nkreuzer\nkreuzers\nkrill\nkrills\nkrimmer\nkrimmers\nkris\nkrises\nkrona\nkrone\nkronen\nkroner\nkronor\nkronur\nkroon\nkrooni\nkroons\nkrubi\nkrubis\nkrubut\nkrubuts\nkruller\nkrullers\nkryolite\nkryolites\nkryolith\nkryoliths\nkrypton\nkryptons\nkuchen\nkudo\nkudos\nkudu\nkudus\nkudzu\nkudzus\nkue\nkues\nkugel\nkukri\nkulak\nkulaki\nkulaks\nkultur\nkulturs\nkumiss\nkumisses\nkummel\nkummels\nkumquat\nkumquats\nkumys\nkumyses\nkunzite\nkunzites\nkurbash\nkurbashed\nkurbashes\nkurbashing\nkurgan\nkurgans\nkurta\nkurtas\nkurtosis\nkurtosises\nkuru\nkurus\nkusso\nkussos\nkvas\nkvases\nkvass\nkvasses\nkvetch\nkvetched\nkvetches\nkvetching\nkwacha\nkyack\nkyacks\nkyak\nkyaks\nkyanise\nkyanised\nkyanises\nkyanising\nkyanite\nkyanites\nkyanize\nkyanized\nkyanizes\nkyanizing\nkyar\nkyars\nkyat\nkyats\nkylikes\nkylix\nkymogram\nkymograms\nkyphoses\nkyphosis\nkyphotic\nkyrie\nkyries\nkyte\nkytes\nkythe\nkythed\nkythes\nkything\nla\nlaager\nlaagered\nlaagering\nlaagers\nlab\nlabara\nlabarum\nlabarums\nlabdanum\nlabdanums\nlabel\nlabeled\nlabeler\nlabelers\nlabeling\nlabella\nlabelled\nlabeller\nlabellers\nlabelling\nlabellum\nlabels\nlabia\nlabial\nlabialization\nlabializations\nlabialize\nlabialized\nlabializes\nlabializing\nlabially\nlabials\nlabiate\nlabiated\nlabiates\nlabile\nlabilities\nlability\nlabium\nlabor\nlaboratories\nlaboratory\nlabored\nlaborer\nlaborers\nlaboring\nlaborious\nlaboriously\nlaboriousness\nlaborite\nlaborites\nlabors\nlabour\nlaboured\nlabourer\nlabourers\nlabouring\nlabours\nlabra\nlabret\nlabrets\nlabroid\nlabroids\nlabrum\nlabrums\nlabs\nlaburnum\nlaburnums\nlabyrinth\nlabyrinthine\nlabyrinths\nlac\nlace\nlaced\nlaceless\nlacelike\nlacer\nlacerate\nlacerated\nlacerates\nlacerating\nlaceration\nlacerations\nlacers\nlacertid\nlacertids\nlaces\nlacewing\nlacewings\nlacewood\nlacewoods\nlacework\nlaceworks\nlacey\nlaches\nlachrymal\nlachrymator\nlachrymators\nlachrymose\nlachrymosely\nlacier\nlaciest\nlacily\nlaciness\nlacinesses\nlacing\nlacings\nlack\nlackadaisical\nlackadaisically\nlackaday\nlacked\nlacker\nlackered\nlackering\nlackers\nlackey\nlackeyed\nlackeying\nlackeys\nlacking\nlackluster\nlacks\nlaconic\nlaconically\nlaconism\nlaconisms\nlacquer\nlacquered\nlacquering\nlacquers\nlacquey\nlacqueyed\nlacqueying\nlacqueys\nlacrimal\nlacrimals\nlacrosse\nlacrosses\nlacs\nlactam\nlactams\nlactary\nlactase\nlactases\nlactate\nlactated\nlactates\nlactating\nlactation\nlactations\nlacteal\nlacteals\nlactean\nlacteous\nlactic\nlactone\nlactones\nlactonic\nlactose\nlactoses\nlacuna\nlacunae\nlacunal\nlacunar\nlacunaria\nlacunars\nlacunary\nlacunas\nlacunate\nlacune\nlacunes\nlacunose\nlacy\nlad\nladanum\nladanums\nladder\nladdered\nladdering\nladders\nladdie\nladdies\nlade\nladed\nladen\nladened\nladening\nladens\nlader\nladers\nlades\nladies\nlading\nladings\nladino\nladinos\nladle\nladled\nladleful\nladlefuls\nladler\nladlers\nladles\nladling\nladron\nladrone\nladrones\nladrons\nlads\nlady\nladybird\nladybirds\nladybug\nladybugs\nladyfinger\nladyfingers\nladyfish\nladyfishes\nladyhood\nladyhoods\nladyish\nladykin\nladykins\nladylike\nladylove\nladyloves\nladypalm\nladypalms\nladyship\nladyships\nlaevo\nlag\nlagan\nlagans\nlagend\nlagends\nlager\nlagered\nlagering\nlagers\nlaggard\nlaggards\nlagged\nlagger\nlaggers\nlagging\nlaggings\nlagnappe\nlagnappes\nlagniappe\nlagniappes\nlagoon\nlagoonal\nlagoons\nlags\nlaguna\nlagunas\nlagune\nlagunes\nlahar\nlaic\nlaical\nlaically\nlaich\nlaichs\nlaicise\nlaicised\nlaicises\nlaicising\nlaicism\nlaicisms\nlaicize\nlaicized\nlaicizes\nlaicizing\nlaics\nlaid\nlaigh\nlaighs\nlain\nlair\nlaird\nlairdly\nlairds\nlaired\nlairing\nlairs\nlaitance\nlaitances\nlaith\nlaithly\nlaities\nlaity\nlake\nlaked\nlakeport\nlakeports\nlaker\nlakers\nlakes\nlakeside\nlakesides\nlakh\nlakhs\nlakier\nlakiest\nlaking\nlakings\nlaky\nlall\nlallan\nlalland\nlallands\nlallans\nlalled\nlalling\nlalls\nlallygag\nlallygagged\nlallygagging\nlallygags\nlam\nlama\nlamas\nlamaseries\nlamasery\nlamb\nlambast\nlambaste\nlambasted\nlambastes\nlambasting\nlambasts\nlambda\nlambdas\nlambdoid\nlambed\nlambencies\nlambency\nlambent\nlamber\nlambers\nlambert\nlamberts\nlambie\nlambies\nlambing\nlambkill\nlambkills\nlambkin\nlambkins\nlamblike\nlambrequin\nlambrequins\nlambs\nlambskin\nlambskins\nlame\nlamebrain\nlamebrained\nlamebrains\nlamed\nlamedh\nlamedhs\nlameds\nlamella\nlamellae\nlamellar\nlamellas\nlamely\nlameness\nlamenesses\nlament\nlamentable\nlamentably\nlamentation\nlamentations\nlamented\nlamenter\nlamenters\nlamenting\nlaments\nlamer\nlames\nlamest\nlamia\nlamiae\nlamias\nlamina\nlaminae\nlaminal\nlaminar\nlaminary\nlaminas\nlaminate\nlaminated\nlaminates\nlaminating\nlamination\nlaminations\nlaminator\nlaminators\nlaming\nlaminose\nlaminous\nlamister\nlamisters\nlammed\nlamming\nlamp\nlampad\nlampads\nlampas\nlampases\nlamped\nlampers\nlamperses\nlamping\nlampion\nlampions\nlampoon\nlampooned\nlampooning\nlampoons\nlamppost\nlampposts\nlamprey\nlampreys\nlamps\nlampyrid\nlampyrids\nlams\nlamster\nlamsters\nlanai\nlanais\nlanate\nlanated\nlance\nlanced\nlancelet\nlancelets\nlancer\nlancers\nlances\nlancet\nlanceted\nlancets\nlanciers\nlancing\nland\nlandau\nlandaus\nlanded\nlander\nlanders\nlandfall\nlandfalls\nlandfill\nlandfills\nlandform\nlandforms\nlandholder\nlandholders\nlandholding\nlandholdings\nlanding\nlandings\nlandladies\nlandlady\nlandler\nlandlers\nlandless\nlandlocked\nlandlord\nlandlords\nlandlubber\nlandlubbers\nlandman\nlandmark\nlandmarks\nlandmass\nlandmasses\nlandmen\nlandowner\nlandowners\nlands\nlandscape\nlandscaped\nlandscaper\nlandscapers\nlandscapes\nlandscaping\nlandscapist\nlandscapists\nlandside\nlandsides\nlandskip\nlandskips\nlandsleit\nlandslid\nlandslide\nlandslides\nlandslip\nlandslips\nlandsman\nlandsmen\nlandward\nlane\nlanely\nlanes\nlang\nlanglauf\nlanglaufs\nlangley\nlangleys\nlangrage\nlangrages\nlangrel\nlangrels\nlangshan\nlangshans\nlangsyne\nlangsynes\nlanguage\nlanguages\nlangue\nlangues\nlanguet\nlanguets\nlanguid\nlanguidly\nlanguidness\nlanguish\nlanguished\nlanguishes\nlanguishing\nlanguor\nlanguorous\nlanguorously\nlanguors\nlangur\nlangurs\nlaniard\nlaniards\nlaniaries\nlaniary\nlanital\nlanitals\nlank\nlanker\nlankest\nlankier\nlankiest\nlankily\nlankiness\nlankly\nlankness\nlanknesses\nlanky\nlanner\nlanneret\nlannerets\nlanners\nlanolin\nlanoline\nlanolines\nlanolins\nlanose\nlanosities\nlanosity\nlantana\nlantanas\nlantern\nlanterns\nlanthorn\nlanthorns\nlanugo\nlanugos\nlanyard\nlanyards\nlap\nlapboard\nlapboards\nlapdog\nlapdogs\nlapel\nlapelled\nlapels\nlapful\nlapfuls\nlapidaries\nlapidary\nlapidate\nlapidated\nlapidates\nlapidating\nlapides\nlapidified\nlapidifies\nlapidify\nlapidifying\nlapidist\nlapidists\nlapilli\nlapillus\nlapin\nlapins\nlapis\nlapises\nlapped\nlapper\nlappered\nlappering\nlappers\nlappet\nlappeted\nlappets\nlapping\nlaps\nlapsable\nlapse\nlapsed\nlapser\nlapsers\nlapses\nlapsible\nlapsing\nlapsus\nlapwing\nlapwings\nlar\nlarboard\nlarboards\nlarcener\nlarceners\nlarcenies\nlarcenist\nlarcenists\nlarcenous\nlarcenously\nlarceny\nlarch\nlarches\nlard\nlarded\nlarder\nlarders\nlardier\nlardiest\nlarding\nlardlike\nlardon\nlardons\nlardoon\nlardoons\nlards\nlardy\nlaree\nlares\nlarge\nlargely\nlargeness\nlarger\nlarges\nlargess\nlargesse\nlargesses\nlargest\nlargish\nlargo\nlargos\nlari\nlariat\nlariated\nlariating\nlariats\nlarine\nlaris\nlark\nlarked\nlarker\nlarkers\nlarkier\nlarkiest\nlarking\nlarks\nlarksome\nlarkspur\nlarkspurs\nlarky\nlarrigan\nlarrigans\nlarrikin\nlarrikins\nlarrup\nlarruped\nlarruper\nlarrupers\nlarruping\nlarrups\nlars\nlarum\nlarums\nlarva\nlarvae\nlarval\nlarvas\nlarvicidal\nlarvicide\nlarvicides\nlaryngal\nlaryngeal\nlarynges\nlaryngitic\nlaryngitis\nlarynx\nlarynxes\nlas\nlasagna\nlasagnas\nlasagne\nlasagnes\nlascar\nlascars\nlascivious\nlasciviously\nlasciviousness\nlase\nlased\nlaser\nlasers\nlases\nlash\nlashed\nlasher\nlashers\nlashes\nlashing\nlashings\nlashins\nlashkar\nlashkars\nlasing\nlass\nlasses\nlassie\nlassies\nlassitude\nlassitudes\nlasso\nlassoed\nlassoer\nlassoers\nlassoes\nlassoing\nlassos\nlast\nlasted\nlaster\nlasters\nlasting\nlastingly\nlastings\nlastly\nlasts\nlat\nlatakia\nlatakias\nlatch\nlatched\nlatches\nlatchet\nlatchets\nlatching\nlatchkey\nlatchkeys\nlate\nlatecomer\nlatecomers\nlated\nlateen\nlateener\nlateeners\nlateens\nlately\nlaten\nlatencies\nlatency\nlatened\nlateness\nlatenesses\nlatening\nlatens\nlatent\nlatently\nlatents\nlater\nlaterad\nlateral\nlateraled\nlateraling\nlaterally\nlaterals\nlaterite\nlaterites\nlatest\nlatests\nlatewood\nlatewoods\nlatex\nlatexes\nlath\nlathe\nlathed\nlather\nlathered\nlatherer\nlatherers\nlathering\nlathers\nlathery\nlathes\nlathi\nlathier\nlathiest\nlathing\nlathings\nlaths\nlathwork\nlathworks\nlathy\nlati\nlatices\nlaties\nlatigo\nlatigoes\nlatigos\nlatinities\nlatinity\nlatinize\nlatinized\nlatinizes\nlatinizing\nlatish\nlatitude\nlatitudes\nlatitudinal\nlatitudinally\nlatitudinarian\nlatitudinarians\nlatke\nlatosol\nlatosols\nlatria\nlatrias\nlatrine\nlatrines\nlats\nlatten\nlattens\nlatter\nlatterly\nlattice\nlatticed\nlattices\nlatticework\nlatticeworks\nlatticing\nlattin\nlattins\nlauan\nlauans\nlaud\nlaudability\nlaudable\nlaudableness\nlaudably\nlaudanum\nlaudanums\nlaudation\nlaudations\nlaudator\nlaudators\nlaudatory\nlauded\nlauder\nlauders\nlauding\nlauds\nlaugh\nlaughable\nlaughableness\nlaughably\nlaughed\nlaugher\nlaughers\nlaughing\nlaughingly\nlaughings\nlaughingstock\nlaughingstocks\nlaughs\nlaughter\nlaughters\nlaunce\nlaunces\nlaunch\nlaunched\nlauncher\nlaunchers\nlaunches\nlaunching\nlaunchpad\nlaunchpads\nlaunder\nlaundered\nlaunderer\nlaunderers\nlaundering\nlaunders\nlaundress\nlaundresses\nlaundries\nlaundry\nlaundryman\nlaundrymen\nlaundrywoman\nlaundrywomen\nlaura\nlaurae\nlauras\nlaureate\nlaureated\nlaureates\nlaureateship\nlaureateships\nlaureating\nlaureation\nlaureations\nlaurel\nlaureled\nlaureling\nlaurelled\nlaurelling\nlaurels\nlauwine\nlauwines\nlav\nlava\nlavabo\nlavaboes\nlavabos\nlavage\nlavages\nlavalava\nlavalavas\nlavalier\nlavaliere\nlavalieres\nlavaliers\nlavalike\nlavalliere\nlavallieres\nlavas\nlavation\nlavations\nlavatories\nlavatory\nlave\nlaved\nlaveer\nlaveered\nlaveering\nlaveers\nlavender\nlavendered\nlavendering\nlavenders\nlaver\nlaverock\nlaverocks\nlavers\nlaves\nlaving\nlavish\nlavished\nlavisher\nlavishers\nlavishes\nlavishest\nlavishing\nlavishly\nlavishness\nlavrock\nlavrocks\nlavs\nlaw\nlawbreaker\nlawbreakers\nlawbreaking\nlawed\nlawful\nlawfully\nlawfulness\nlawgiver\nlawgivers\nlawine\nlawines\nlawing\nlawings\nlawless\nlawlessly\nlawlessness\nlawlike\nlawmaker\nlawmakers\nlawmaking\nlawman\nlawmen\nlawn\nlawns\nlawny\nlaws\nlawsuit\nlawsuits\nlawyer\nlawyerly\nlawyers\nlax\nlaxation\nlaxations\nlaxative\nlaxatives\nlaxer\nlaxest\nlaxities\nlaxity\nlaxly\nlaxness\nlaxnesses\nlay\nlayabout\nlayabouts\nlayaway\nlayaways\nlayed\nlayer\nlayerage\nlayerages\nlayered\nlayering\nlayerings\nlayers\nlayette\nlayettes\nlaying\nlayman\nlaymen\nlayoff\nlayoffs\nlayout\nlayouts\nlayover\nlayovers\nlayperson\nlaypersons\nlays\nlayup\nlaywoman\nlaywomen\nlazar\nlazaret\nlazarets\nlazars\nlaze\nlazed\nlazes\nlazied\nlazier\nlazies\nlaziest\nlazily\nlaziness\nlazinesses\nlazing\nlazuli\nlazulis\nlazulite\nlazulites\nlazurite\nlazurites\nlazy\nlazying\nlazyish\nlea\nleach\nleachability\nleachable\nleachate\nleachates\nleached\nleacher\nleachers\nleaches\nleachier\nleachiest\nleaching\nleachy\nlead\nleaded\nleaden\nleadenly\nleader\nleaderless\nleaders\nleadership\nleadier\nleadiest\nleading\nleadings\nleadless\nleadoff\nleadoffs\nleads\nleadsman\nleadsmen\nleadwork\nleadworks\nleadwort\nleadworts\nleady\nleaf\nleafage\nleafages\nleafed\nleafier\nleafiest\nleafing\nleafless\nleaflet\nleaflets\nleaflike\nleafs\nleafworm\nleafworms\nleafy\nleague\nleagued\nleaguer\nleaguered\nleaguering\nleaguers\nleagues\nleaguing\nleak\nleakage\nleakages\nleaked\nleaker\nleakers\nleakier\nleakiest\nleakily\nleakiness\nleaking\nleakless\nleakproof\nleaks\nleaky\nleal\nleally\nlealties\nlealty\nlean\nleaned\nleaner\nleanest\nleaning\nleanings\nleanly\nleanness\nleannesses\nleans\nleant\nleap\nleaped\nleaper\nleapers\nleapfrog\nleapfrogged\nleapfrogging\nleapfrogs\nleaping\nleaps\nleapt\nlear\nlearier\nleariest\nlearn\nlearnable\nlearned\nlearnedly\nlearnedness\nlearner\nlearners\nlearning\nlearnings\nlearns\nlearnt\nlears\nleary\nleas\nleasable\nlease\nleased\nleaseholder\nleaseholders\nleaser\nleasers\nleases\nleash\nleashed\nleashes\nleashing\nleasing\nleasings\nleast\nleasts\nleather\nleathered\nleathering\nleathern\nleathers\nleathery\nleave\nleaved\nleaven\nleavened\nleavening\nleavenings\nleavens\nleaver\nleavers\nleaves\nleavier\nleaviest\nleaving\nleavings\nleavy\nleben\nlebens\nlech\nlechayim\nlechayims\nlecher\nlechered\nlecheries\nlechering\nlecherous\nlecherously\nlecherousness\nlechers\nlechery\nleches\nlecithin\nlecithins\nlectern\nlecterns\nlection\nlections\nlector\nlectors\nlecture\nlectured\nlecturer\nlecturers\nlectures\nlectureship\nlectureships\nlecturing\nlecythi\nlecythus\nled\nledge\nledger\nledgers\nledges\nledgier\nledgiest\nledgy\nlee\nleeboard\nleeboards\nleech\nleeched\nleeches\nleeching\nleek\nleeks\nleer\nleered\nleerier\nleeriest\nleerily\nleering\nleeringly\nleers\nleery\nlees\nleet\nleets\nleeward\nleewards\nleeway\nleeways\nleft\nlefter\nleftest\nlefties\nleftism\nleftisms\nleftist\nleftists\nleftover\nleftovers\nlefts\nleftward\nleftwing\nlefty\nleg\nlegacies\nlegacy\nlegal\nlegalese\nlegaleses\nlegalise\nlegalised\nlegalises\nlegalising\nlegalism\nlegalisms\nlegalist\nlegalistic\nlegalistically\nlegalists\nlegalities\nlegality\nlegalization\nlegalizations\nlegalize\nlegalized\nlegalizes\nlegalizing\nlegally\nlegals\nlegate\nlegated\nlegatee\nlegatees\nlegates\nlegatine\nlegating\nlegation\nlegations\nlegato\nlegator\nlegators\nlegatos\nlegend\nlegendary\nlegendries\nlegendry\nlegends\nleger\nlegerdemain\nlegerities\nlegerity\nlegers\nleges\nlegged\nleggier\nleggiest\nleggin\nlegging\nleggings\nleggins\nleggy\nleghorn\nleghorns\nlegibility\nlegible\nlegibly\nlegion\nlegionaries\nlegionary\nlegionnaire\nlegionnaires\nlegions\nlegislate\nlegislated\nlegislates\nlegislating\nlegislation\nlegislations\nlegislative\nlegislatively\nlegislator\nlegislatorial\nlegislators\nlegislature\nlegislatures\nlegist\nlegists\nlegit\nlegitimacy\nlegitimate\nlegitimated\nlegitimately\nlegitimates\nlegitimating\nlegitimation\nlegitimations\nlegitimist\nlegitimists\nlegitimize\nlegitimized\nlegitimizes\nlegitimizing\nlegits\nlegless\nleglike\nlegman\nlegmen\nlegroom\nlegrooms\nlegs\nlegume\nlegumes\nlegumin\nleguminous\nlegumins\nlegwork\nlegworks\nlehayim\nlehayims\nlehr\nlehrs\nlehua\nlehuas\nlei\nleis\nleister\nleistered\nleistering\nleisters\nleisure\nleisured\nleisureliness\nleisurely\nleisures\nlek\nleke\nleks\nleku\nlekythi\nlekythoi\nlekythos\nlekythus\nleman\nlemans\nlemma\nlemmas\nlemmata\nlemming\nlemmings\nlemnisci\nlemon\nlemonade\nlemonades\nlemonish\nlemons\nlemony\nlempira\nlempiras\nlemur\nlemures\nlemuroid\nlemuroids\nlemurs\nlend\nlender\nlenders\nlending\nlends\nlenes\nlength\nlengthen\nlengthened\nlengthener\nlengtheners\nlengthening\nlengthens\nlengthier\nlengthiest\nlengthily\nlengthiness\nlengths\nlengthways\nlengthwise\nlengthy\nlenience\nleniences\nleniencies\nleniency\nlenient\nleniently\nlenis\nlenities\nlenitive\nlenitives\nlenity\nleno\nlenos\nlens\nlense\nlensed\nlenses\nlensless\nlent\nlentando\nlenten\nlentic\nlenticel\nlenticels\nlentigines\nlentigo\nlentil\nlentils\nlentisk\nlentisks\nlento\nlentoid\nlentos\nleone\nleones\nleonine\nleopard\nleopards\nleotard\nleotards\nleper\nlepers\nlepidote\nleporid\nleporids\nleporine\nleprechaun\nleprechauns\nleprose\nleprosies\nleprosy\nleprotic\nleprous\nleprousness\nlept\nlepta\nlepton\nleptonic\nleptons\nlesbian\nlesbianism\nlesbians\nlesion\nlesions\nless\nlessee\nlessees\nlessen\nlessened\nlessening\nlessens\nlesser\nlesson\nlessoned\nlessoning\nlessons\nlessor\nlessors\nlest\nlet\nletch\nletches\nletdown\nletdowns\nlethal\nlethality\nlethally\nlethals\nlethargic\nlethargically\nlethargies\nlethargy\nlethe\nlethean\nlethes\nlets\nletted\nletter\nlettered\nletterer\nletterers\nletterhead\nletterheads\nlettering\nletterpress\nletters\nletting\nlettuce\nlettuces\nletup\nletups\nleu\nleucemia\nleucemias\nleucemic\nleucin\nleucine\nleucines\nleucins\nleucite\nleucites\nleucitic\nleucoma\nleucomas\nleud\nleudes\nleuds\nleukemia\nleukemias\nleukemic\nleukemics\nleukoma\nleukomas\nleukon\nleukons\nleukoses\nleukosis\nleukotic\nlev\nleva\nlevant\nlevanted\nlevanter\nlevanters\nlevanting\nlevants\nlevator\nlevatores\nlevators\nlevee\nleveed\nleveeing\nlevees\nlevel\nleveled\nleveler\nlevelers\nlevelheaded\nlevelheadedness\nleveling\nlevelled\nleveller\nlevellers\nlevelling\nlevelly\nlevelness\nlevels\nlever\nleverage\nleveraged\nleverages\nleveraging\nlevered\nleveret\nleverets\nlevering\nlevers\nleviable\nleviathan\nleviathans\nlevied\nlevier\nleviers\nlevies\nlevigate\nlevigated\nlevigates\nlevigating\nlevin\nlevins\nlevirate\nlevirates\nlevitate\nlevitated\nlevitates\nlevitating\nlevitation\nlevitations\nlevities\nlevity\nlevo\nlevogyre\nlevulin\nlevulins\nlevulose\nlevuloses\nlevy\nlevying\nlewd\nlewder\nlewdest\nlewdly\nlewdness\nlewdnesses\nlewis\nlewises\nlewisite\nlewisites\nlewisson\nlewissons\nlex\nlexes\nlexica\nlexical\nlexicality\nlexically\nlexicographer\nlexicographers\nlexicographic\nlexicographical\nlexicographically\nlexicography\nlexicon\nlexicons\nlexis\nley\nleys\nlez\nlezes\nlezzy\nli\nliabilities\nliability\nliable\nliaise\nliaised\nliaises\nliaising\nliaison\nliaisons\nliana\nlianas\nliane\nlianes\nliang\nliangs\nlianoid\nliar\nliard\nliards\nliars\nlib\nlibation\nlibationary\nlibations\nlibber\nlibbers\nlibeccio\nlibeccios\nlibel\nlibelant\nlibelants\nlibeled\nlibelee\nlibelees\nlibeler\nlibelers\nlibeling\nlibelist\nlibelists\nlibellant\nlibellants\nlibelled\nlibellee\nlibellees\nlibeller\nlibellers\nlibelling\nlibellous\nlibelous\nlibels\nliber\nliberal\nliberalism\nliberalist\nliberalistic\nliberalists\nliberalities\nliberality\nliberalization\nliberalizations\nliberalize\nliberalized\nliberalizes\nliberalizing\nliberally\nliberalness\nliberals\nliberate\nliberated\nliberates\nliberating\nliberation\nliberations\nliberator\nliberators\nlibers\nlibertarian\nlibertarianism\nlibertarians\nliberties\nlibertine\nlibertines\nliberty\nlibidinal\nlibidinous\nlibido\nlibidos\nlibra\nlibrae\nlibrarian\nlibrarians\nlibraries\nlibrary\nlibras\nlibrate\nlibrated\nlibrates\nlibrating\nlibretti\nlibrettist\nlibrettists\nlibretto\nlibrettos\nlibri\nlibs\nlice\nlicence\nlicencee\nlicencees\nlicencenced\nlicencences\nlicencencing\nlicencer\nlicencers\nlicencing\nlicensable\nlicense\nlicensed\nlicensee\nlicensees\nlicenser\nlicensers\nlicenses\nlicensing\nlicensor\nlicensors\nlicentiate\nlicentiates\nlicentious\nlicentiously\nlicentiousness\nlich\nlichee\nlichees\nlichen\nlichened\nlichenin\nlichening\nlichenins\nlichenous\nlichens\nlichi\nlichis\nlicht\nlichted\nlichting\nlichtly\nlichts\nlicit\nlicitly\nlick\nlicked\nlicker\nlickers\nlicking\nlickings\nlicks\nlickspit\nlickspits\nlicorice\nlicorices\nlictor\nlictors\nlid\nlidar\nlidars\nlidded\nlidding\nlidless\nlido\nlidos\nlids\nlie\nlied\nlieder\nlief\nliefer\nliefest\nliefly\nliege\nliegeman\nliegemen\nlieges\nlien\nlienable\nlienal\nliens\nlienteries\nlientery\nlier\nlierne\nliernes\nliers\nlies\nliest\nlieu\nlieus\nlieutenancies\nlieutenancy\nlieutenant\nlieutenants\nlieve\nliever\nlievest\nlife\nlifeblood\nlifeboat\nlifeboats\nlifeful\nlifeguard\nlifeguards\nlifeless\nlifelessly\nlifelessness\nlifelike\nlifeline\nlifelines\nlifelong\nlifer\nlifers\nlifesaver\nlifesavers\nlifesaving\nlifetime\nlifetimes\nlifeway\nlifeways\nlifework\nlifeworks\nlift\nliftable\nlifted\nlifter\nlifters\nlifting\nliftman\nliftmen\nliftoff\nliftoffs\nlifts\nligament\nligamentous\nligaments\nligan\nligand\nligands\nligans\nligase\nligases\nligate\nligated\nligates\nligating\nligation\nligations\nligative\nligature\nligatured\nligatures\nligaturing\nliger\nlight\nlighted\nlighten\nlightened\nlightener\nlighteners\nlightening\nlightens\nlighter\nlighterage\nlightered\nlightering\nlighters\nlightest\nlightful\nlighthearted\nlightheartedly\nlightheartedness\nlighthouse\nlighthouses\nlighting\nlightings\nlightish\nlightly\nlightness\nlightning\nlightninged\nlightnings\nlightproof\nlights\nlightweight\nlightweights\nligneous\nlignified\nlignifies\nlignify\nlignifying\nlignin\nlignins\nlignite\nlignites\nlignitic\nligroin\nligroine\nligroines\nligroins\nligula\nligulae\nligular\nligulas\nligulate\nligule\nligules\nliguloid\nligure\nligures\nlikability\nlikable\nlikableness\nlike\nlikeable\nliked\nlikeliest\nlikelihood\nlikelihoods\nlikely\nliken\nlikened\nlikeness\nlikenesses\nlikening\nlikens\nliker\nlikers\nlikes\nlikest\nlikewise\nliking\nlikings\nlikuta\nlilac\nlilacs\nlilied\nlilies\nlilliput\nlilliputs\nlilt\nlilted\nlilting\nlilts\nlily\nlilylike\nlima\nlimacine\nlimacon\nlimacons\nliman\nlimans\nlimas\nlimb\nlimba\nlimbas\nlimbate\nlimbeck\nlimbecks\nlimbed\nlimber\nlimbered\nlimberer\nlimberest\nlimbering\nlimberly\nlimberness\nlimbers\nlimbi\nlimbic\nlimbier\nlimbiest\nlimbing\nlimbless\nlimbo\nlimbos\nlimbs\nlimbus\nlimbuses\nlimby\nlime\nlimeade\nlimeades\nlimed\nlimekiln\nlimekilns\nlimeless\nlimelight\nlimelights\nlimen\nlimens\nlimerick\nlimericks\nlimes\nlimestone\nlimestones\nlimey\nlimeys\nlimier\nlimiest\nlimina\nliminal\nliminess\nliminesses\nliming\nlimit\nlimitable\nlimitary\nlimitation\nlimitations\nlimited\nlimitedly\nlimitedness\nlimiteds\nlimiter\nlimiters\nlimites\nlimiting\nlimitless\nlimitlessly\nlimitlessness\nlimits\nlimmer\nlimmers\nlimn\nlimned\nlimner\nlimners\nlimnetic\nlimnic\nlimning\nlimns\nlimo\nlimonene\nlimonenes\nlimonite\nlimonites\nlimos\nlimousine\nlimousines\nlimp\nlimpa\nlimped\nlimper\nlimpers\nlimpest\nlimpet\nlimpets\nlimpid\nlimpidity\nlimpidly\nlimpidness\nlimping\nlimpingly\nlimpkin\nlimpkins\nlimply\nlimpness\nlimpnesses\nlimps\nlimpsy\nlimuli\nlimuloid\nlimuloids\nlimulus\nlimy\nlin\nlinable\nlinac\nlinacs\nlinage\nlinages\nlinalol\nlinalols\nlinalool\nlinalools\nlinchpin\nlinchpins\nlindane\nlindanes\nlinden\nlindens\nlindies\nlindy\nline\nlineable\nlineage\nlineages\nlineal\nlineally\nlineament\nlineamental\nlineaments\nlinear\nlinearity\nlinearization\nlinearizations\nlinearize\nlinearized\nlinearizes\nlinearizing\nlinearly\nlineate\nlineated\nlineation\nlineations\nlinebacker\nlinebackers\nlinebred\nlinecut\nlinecuts\nlined\nlineless\nlinelike\nlineman\nlinemen\nlinen\nlinens\nlineny\nliner\nliners\nlines\nlinesman\nlinesmen\nlineup\nlineups\nliney\nling\nlinga\nlingam\nlingams\nlingas\nlingcod\nlingcods\nlinger\nlingered\nlingerer\nlingerers\nlingerie\nlingeries\nlingering\nlingeringly\nlingers\nlingier\nlingiest\nlingo\nlingoes\nlings\nlingua\nlinguae\nlingual\nlinguals\nlinguine\nlinguines\nlinguini\nlinguinis\nlinguist\nlinguistic\nlinguistically\nlinguistics\nlinguists\nlingy\nlinier\nliniest\nliniment\nliniments\nlinin\nlining\nlinings\nlinins\nlink\nlinkable\nlinkage\nlinkages\nlinkboy\nlinkboys\nlinked\nlinker\nlinkers\nlinking\nlinkman\nlinkmen\nlinks\nlinksman\nlinksmen\nlinkup\nlinkups\nlinkwork\nlinkworks\nlinky\nlinn\nlinnet\nlinnets\nlinns\nlino\nlinocut\nlinocuts\nlinoleum\nlinoleums\nlinos\nlins\nlinsang\nlinsangs\nlinseed\nlinseeds\nlinsey\nlinseys\nlinstock\nlinstocks\nlint\nlintel\nlintels\nlinter\nlinters\nlintier\nlintiest\nlintless\nlintol\nlintols\nlints\nlinty\nlinum\nlinums\nliny\nlion\nlioness\nlionesses\nlionfish\nlionfishes\nlionhearted\nlionise\nlionised\nlioniser\nlionisers\nlionises\nlionising\nlionization\nlionizations\nlionize\nlionized\nlionizer\nlionizers\nlionizes\nlionizing\nlionlike\nlions\nlip\nlipase\nlipases\nlipid\nlipide\nlipides\nlipidic\nlipids\nlipin\nlipins\nlipless\nliplike\nlipocyte\nlipocytes\nlipoid\nlipoidal\nlipoids\nlipoma\nlipomas\nlipomata\nlipped\nlippen\nlippened\nlippening\nlippens\nlipper\nlippered\nlippering\nlippers\nlippier\nlippiest\nlipping\nlippings\nlippy\nlipreading\nlips\nlipstick\nlipsticks\nliquate\nliquated\nliquates\nliquating\nliquefaction\nliquefactions\nliquefiable\nliquefied\nliquefier\nliquefiers\nliquefies\nliquefy\nliquefying\nliqueur\nliqueurs\nliquid\nliquidate\nliquidated\nliquidates\nliquidating\nliquidation\nliquidations\nliquidator\nliquidators\nliquidity\nliquidize\nliquidized\nliquidizes\nliquidizing\nliquidly\nliquids\nliquified\nliquifies\nliquify\nliquifying\nliquor\nliquored\nliquoring\nliquors\nlira\nliras\nlire\nliripipe\nliripipes\nlirot\nliroth\nlis\nlisle\nlisles\nlisp\nlisped\nlisper\nlispers\nlisping\nlisps\nlissom\nlissome\nlissomly\nlist\nlistable\nlisted\nlistel\nlistels\nlisten\nlistenable\nlistened\nlistener\nlisteners\nlistening\nlistens\nlister\nlisters\nlisting\nlistings\nlistless\nlistlessly\nlistlessness\nlists\nlit\nlitai\nlitanies\nlitany\nlitas\nlitchi\nlitchis\nliter\nliteracies\nliteracy\nliteral\nliteralism\nliteralist\nliteralistic\nliteralists\nliterality\nliteralization\nliteralizations\nliteralize\nliteralized\nliteralizes\nliteralizing\nliterally\nliteralness\nliterals\nliterary\nliterate\nliterately\nliterates\nliterati\nliterature\nliteratures\nliters\nlitharge\nlitharges\nlithe\nlithely\nlithemia\nlithemias\nlithemic\nlitheness\nlither\nlithesome\nlithest\nlithia\nlithias\nlithic\nlithium\nlithiums\nlitho\nlithograph\nlithographed\nlithographer\nlithographers\nlithographic\nlithographically\nlithographing\nlithographs\nlithography\nlithoid\nlithos\nlithosol\nlithosols\nlitigant\nlitigants\nlitigate\nlitigated\nlitigates\nlitigating\nlitigation\nlitigations\nlitigious\nlitigiously\nlitigiousness\nlitmus\nlitmuses\nlitoral\nlitotes\nlitre\nlitres\nlits\nlitten\nlitter\nlitterbug\nlitterbugs\nlittered\nlitterer\nlitterers\nlittering\nlitters\nlittery\nlittle\nlittleness\nlittler\nlittles\nlittlest\nlittlish\nlittoral\nlittorals\nlitu\nliturgic\nliturgical\nliturgics\nliturgies\nliturgist\nliturgists\nliturgy\nlivability\nlivable\nlivableness\nlive\nliveable\nlived\nlivelier\nliveliest\nlivelihood\nlivelihoods\nlivelily\nliveliness\nlivelong\nlively\nliven\nlivened\nlivener\nliveners\nliveness\nlivenesses\nlivening\nlivens\nliver\nliveried\nliveries\nliverish\nlivers\nlivery\nliveryman\nliverymen\nlives\nlivest\nlivestock\nlivetrap\nlivetrapped\nlivetrapping\nlivetraps\nlivid\nlividities\nlividity\nlividly\nlividness\nlivier\nliviers\nliving\nlivingly\nlivings\nlivre\nlivres\nlivyer\nlivyers\nlixivia\nlixivial\nlixivium\nlixiviums\nlizard\nlizards\nllama\nllamas\nllano\nllanos\nlo\nloach\nloaches\nload\nloaded\nloader\nloaders\nloading\nloadings\nloads\nloadstar\nloadstars\nloaf\nloafed\nloafer\nloafers\nloafing\nloafs\nloam\nloamed\nloamier\nloamiest\nloaming\nloamless\nloams\nloamy\nloan\nloanable\nloaned\nloaner\nloaners\nloaning\nloanings\nloans\nloanword\nloanwords\nloath\nloathe\nloathed\nloather\nloathers\nloathes\nloathful\nloathing\nloathings\nloathly\nloathsome\nloathsomeness\nloaves\nlob\nlobar\nlobate\nlobated\nlobately\nlobation\nlobations\nlobbed\nlobbied\nlobbies\nlobbing\nlobby\nlobbyer\nlobbyers\nlobbygow\nlobbygows\nlobbying\nlobbyism\nlobbyisms\nlobbyist\nlobbyists\nlobe\nlobed\nlobefin\nlobefins\nlobelia\nlobelias\nlobeline\nlobelines\nlobes\nloblollies\nloblolly\nlobo\nlobos\nlobotomies\nlobotomize\nlobotomized\nlobotomizes\nlobotomizing\nlobotomy\nlobs\nlobster\nlobsters\nlobstick\nlobsticks\nlobular\nlobulate\nlobule\nlobules\nlobulose\nlobworm\nlobworms\nloca\nlocal\nlocale\nlocales\nlocalise\nlocalised\nlocalises\nlocalising\nlocalism\nlocalisms\nlocalist\nlocalists\nlocalite\nlocalites\nlocalities\nlocality\nlocalizable\nlocalization\nlocalizations\nlocalize\nlocalized\nlocalizes\nlocalizing\nlocally\nlocals\nlocatable\nlocate\nlocated\nlocater\nlocaters\nlocates\nlocating\nlocation\nlocations\nlocative\nlocatives\nlocator\nlocators\nloch\nlochia\nlochial\nlochs\nloci\nlock\nlockable\nlockage\nlockages\nlockbox\nlockboxes\nlocked\nlocker\nlockers\nlocket\nlockets\nlocking\nlockjaw\nlockjaws\nlocknut\nlocknuts\nlockout\nlockouts\nlockram\nlockrams\nlocks\nlocksmith\nlocksmiths\nlockstep\nlocksteps\nlockup\nlockups\nloco\nlocoed\nlocoes\nlocofoco\nlocofocos\nlocoing\nlocoism\nlocoisms\nlocomote\nlocomoted\nlocomotes\nlocomoting\nlocomotion\nlocomotions\nlocomotive\nlocomotives\nlocos\nlocoweed\nlocoweeds\nlocular\nloculate\nlocule\nloculed\nlocules\nloculi\nloculus\nlocum\nlocums\nlocus\nlocust\nlocusta\nlocustae\nlocustal\nlocusts\nlocution\nlocutions\nlocutories\nlocutory\nlode\nloden\nlodens\nlodes\nlodestar\nlodestars\nlodestone\nlodestones\nlodge\nlodged\nlodgement\nlodgements\nlodger\nlodgers\nlodges\nlodging\nlodgings\nlodgment\nlodgments\nlodicule\nlodicules\nloess\nloessal\nloesses\nloessial\nloft\nlofted\nlofter\nlofters\nloftier\nloftiest\nloftily\nloftiness\nlofting\nloftless\nlofts\nlofty\nlog\nlogan\nlogans\nlogarithm\nlogarithmic\nlogarithmically\nlogarithms\nlogbook\nlogbooks\nloge\nloges\nloggats\nlogged\nlogger\nloggerhead\nloggerheads\nloggers\nloggets\nloggia\nloggias\nloggie\nloggier\nloggiest\nlogging\nloggings\nloggy\nlogia\nlogic\nlogical\nlogicality\nlogically\nlogician\nlogicians\nlogicise\nlogicised\nlogicises\nlogicising\nlogicize\nlogicized\nlogicizes\nlogicizing\nlogics\nlogier\nlogiest\nlogily\nloginess\nloginesses\nlogion\nlogions\nlogistic\nlogistical\nlogistically\nlogistician\nlogisticians\nlogistics\nlogjam\nlogjams\nlognormal\nlogo\nlogogram\nlogogrammatic\nlogograms\nlogogriph\nlogoi\nlogomach\nlogomachs\nlogos\nlogotype\nlogotypes\nlogotypies\nlogotypy\nlogroll\nlogrolled\nlogrolling\nlogrolls\nlogs\nlogway\nlogways\nlogwood\nlogwoods\nlogy\nloin\nloincloth\nloincloths\nloins\nloiter\nloitered\nloiterer\nloiterers\nloitering\nloiters\nloll\nlolled\nloller\nlollers\nlollies\nlolling\nlollipop\nlollipops\nlollop\nlolloped\nlolloping\nlollops\nlolls\nlolly\nlollygag\nlollygagged\nlollygagging\nlollygags\nlollypop\nlollypops\nloment\nlomenta\nloments\nlomentum\nlomentums\nlone\nlonelier\nloneliest\nlonelily\nloneliness\nlonely\nloneness\nlonenesses\nloner\nloners\nlonesome\nlonesomely\nlonesomeness\nlonesomes\nlong\nlongan\nlongans\nlongboat\nlongboats\nlongbow\nlongbows\nlonge\nlonged\nlongeing\nlonger\nlongeron\nlongerons\nlongers\nlonges\nlongest\nlongevity\nlonghair\nlonghairs\nlonghand\nlonghands\nlonghead\nlongheads\nlonghorn\nlonghorns\nlonging\nlongingly\nlongings\nlongish\nlongitude\nlongitudes\nlongitudinal\nlongitudinally\nlongleaf\nlongleaves\nlongline\nlonglines\nlongly\nlongness\nlongnesses\nlongs\nlongship\nlongships\nlongshoreman\nlongshoremen\nlongsome\nlongspur\nlongspurs\nlongtime\nlongueur\nlongueurs\nlongways\nlongwise\nloo\nloobies\nlooby\nlooed\nlooey\nlooeys\nloof\nloofa\nloofah\nloofahs\nloofas\nloofs\nlooie\nlooies\nlooing\nlook\nlookdown\nlookdowns\nlooked\nlooker\nlookers\nlooking\nlookout\nlookouts\nlooks\nlookup\nlookups\nloom\nloomed\nlooming\nlooms\nloon\nlooney\nloonier\nloonies\nlooniest\nlooniness\nloons\nloony\nloop\nlooped\nlooper\nloopers\nloophole\nloopholed\nloopholes\nloopholing\nloopier\nloopiest\nlooping\nloops\nloopy\nloos\nloose\nloosed\nloosely\nloosen\nloosened\nloosener\nlooseners\nlooseness\nloosening\nloosens\nlooser\nlooses\nloosest\nloosing\nloot\nlooted\nlooter\nlooters\nlooting\nloots\nlop\nlope\nloped\nloper\nlopers\nlopes\nloping\nlopped\nlopper\nloppered\nloppering\nloppers\nloppier\nloppiest\nlopping\nloppy\nlops\nlopsided\nlopsidedly\nlopsidedness\nlopstick\nlopsticks\nloquacious\nloquaciously\nloquaciousness\nloquacities\nloquacity\nloquat\nloquats\nloral\nloran\nlorans\nlord\nlorded\nlording\nlordings\nlordless\nlordlier\nlordliest\nlordlike\nlordling\nlordlings\nlordly\nlordoma\nlordomas\nlordoses\nlordosis\nlordotic\nlords\nlordship\nlordships\nlore\nloreal\nlores\nlorgnette\nlorgnettes\nlorgnon\nlorgnons\nlorica\nloricae\nloricate\nloricates\nlories\nlorikeet\nlorikeets\nlorimer\nlorimers\nloriner\nloriners\nloris\nlorises\nlorn\nlornness\nlornnesses\nlorries\nlorry\nlory\nlosable\nlosableness\nlose\nlosel\nlosels\nloser\nlosers\nloses\nlosing\nlosingly\nlosings\nloss\nlosses\nlossy\nlost\nlostness\nlostnesses\nlot\nlota\nlotah\nlotahs\nlotas\nloth\nlothario\nlotharios\nlothsome\nloti\nlotic\nlotion\nlotions\nlotos\nlotoses\nlots\nlotted\nlotteries\nlottery\nlotting\nlotto\nlottos\nlotus\nlotuses\nloud\nlouden\nloudened\nloudening\nloudens\nlouder\nloudest\nloudish\nloudlier\nloudliest\nloudly\nloudmouth\nloudmouthed\nloudmouths\nloudness\nloudnesses\nloudspeaker\nloudspeakers\nlough\nloughs\nlouie\nlouies\nlouis\nlounge\nlounged\nlounger\nloungers\nlounges\nlounging\nloungy\nloup\nloupe\nlouped\nloupen\nloupes\nlouping\nloups\nlour\nloured\nlouring\nlours\nloury\nlouse\nloused\nlouses\nlousier\nlousiest\nlousily\nlousiness\nlousing\nlousy\nlout\nlouted\nlouting\nloutish\nlouts\nlouver\nlouvered\nlouvers\nlouvre\nlouvres\nlovable\nlovableness\nlovably\nlovage\nlovages\nlovat\nlove\nloveable\nloveably\nlovebird\nlovebirds\nloved\nloveless\nlovelessly\nlovelessness\nlovelier\nlovelies\nloveliest\nlovelily\nloveliness\nlovelock\nlovelocks\nlovelorn\nlovely\nlover\nloverly\nlovers\nloves\nlovesick\nlovesome\nlovevine\nlovevines\nloving\nlovingly\nlovingness\nlow\nlowborn\nlowboy\nlowboys\nlowbred\nlowbrow\nlowbrows\nlowdown\nlowdowns\nlowe\nlowed\nlower\nlowercase\nlowered\nlowering\nlowermost\nlowers\nlowery\nlowes\nlowest\nlowing\nlowings\nlowish\nlowland\nlowlands\nlowlier\nlowliest\nlowlife\nlowlifes\nlowliness\nlowly\nlown\nlowness\nlownesses\nlows\nlowse\nlox\nloxed\nloxes\nloxing\nloyal\nloyaler\nloyalest\nloyalism\nloyalisms\nloyalist\nloyalists\nloyally\nloyalties\nloyalty\nlozenge\nlozenges\nluau\nluaus\nlubber\nlubberly\nlubbers\nlube\nlubes\nlubric\nlubricant\nlubricants\nlubricate\nlubricated\nlubricates\nlubricating\nlubrication\nlubrications\nlubricative\nlubricator\nlubricators\nlubricious\nlubricities\nlubricity\nlubricous\nlucarne\nlucarnes\nluce\nlucence\nlucences\nlucencies\nlucency\nlucent\nlucently\nlucern\nlucerne\nlucernes\nlucerns\nluces\nlucid\nlucidities\nlucidity\nlucidly\nlucidness\nlucifer\nluciferous\nlucifers\nluck\nlucked\nluckie\nluckier\nluckies\nluckiest\nluckily\nluckiness\nlucking\nluckless\nlucks\nlucky\nlucrative\nlucratively\nlucrativeness\nlucre\nlucres\nlucubration\nlucubrations\nluculent\nlude\nludes\nludic\nludicrous\nludicrously\nludicrousness\nlues\nluetic\nluetics\nluff\nluffa\nluffas\nluffed\nluffing\nluffs\nlug\nluge\nluged\nluges\nluggage\nluggages\nlugged\nlugger\nluggers\nluggie\nluggies\nlugging\nlugs\nlugsail\nlugsails\nlugubrious\nlugworm\nlugworms\nlukewarm\nlull\nlullabied\nlullabies\nlullaby\nlullabying\nlulled\nlulling\nlulls\nlulu\nlulus\nlum\nlumbago\nlumbagos\nlumbar\nlumbars\nlumber\nlumbered\nlumberer\nlumberers\nlumbering\nlumberjack\nlumberjacks\nlumberman\nlumbermen\nlumbers\nlumberyard\nlumberyards\nlumen\nlumenal\nlumens\nlumina\nluminaires\nluminal\nluminance\nluminances\nluminaries\nluminary\nluminesce\nluminesced\nluminescence\nluminescent\nluminesces\nluminescing\nluminist\nluminists\nluminosities\nluminosity\nluminous\nluminously\nluminousness\nlummox\nlummoxes\nlump\nlumped\nlumpen\nlumpens\nlumper\nlumpers\nlumpfish\nlumpfishes\nlumpier\nlumpiest\nlumpily\nlumpiness\nlumping\nlumpingly\nlumpish\nlumps\nlumpy\nlums\nluna\nlunacies\nlunacy\nlunar\nlunarian\nlunarians\nlunars\nlunas\nlunate\nlunated\nlunately\nlunatic\nlunatics\nlunation\nlunations\nlunch\nlunched\nluncheon\nluncheonette\nluncheonettes\nluncheons\nluncher\nlunchers\nlunches\nlunching\nlunchroom\nlunchrooms\nlunchtime\nlunchtimes\nlune\nlunes\nlunet\nlunets\nlunette\nlunettes\nlung\nlungan\nlungans\nlunge\nlunged\nlungee\nlungees\nlunger\nlungers\nlunges\nlungfish\nlungfishes\nlungi\nlunging\nlungis\nlungs\nlungworm\nlungworms\nlungwort\nlungworts\nlungyi\nlungyis\nlunier\nlunies\nluniest\nlunk\nlunker\nlunkers\nlunkhead\nlunkheads\nlunks\nlunt\nlunted\nlunting\nlunts\nlunula\nlunulae\nlunular\nlunulate\nlunule\nlunules\nluny\nlupanar\nlupanars\nlupin\nlupine\nlupines\nlupins\nlupous\nlupulin\nlupulins\nlupus\nlupuses\nlurch\nlurched\nlurcher\nlurchers\nlurches\nlurching\nlurdan\nlurdane\nlurdanes\nlurdans\nlure\nlured\nlurer\nlurers\nlures\nlurid\nluridly\nluridness\nluring\nlurk\nlurked\nlurker\nlurkers\nlurking\nlurks\nluscious\nlusciousness\nlush\nlushed\nlusher\nlushes\nlushest\nlushing\nlushly\nlushness\nlushnesses\nlust\nlusted\nluster\nlustered\nlustering\nlusterless\nlusters\nlustful\nlustfully\nlustfulness\nlustier\nlustiest\nlustily\nlustiness\nlusting\nlustra\nlustral\nlustrate\nlustrated\nlustrates\nlustrating\nlustre\nlustred\nlustres\nlustring\nlustrings\nlustrous\nlustrously\nlustrousness\nlustrum\nlustrums\nlusts\nlusty\nlusus\nlususes\nlutanist\nlutanists\nlute\nlutea\nluteal\nlutecium\nluteciums\nluted\nlutein\nluteins\nlutenist\nlutenists\nluteolin\nluteolins\nluteous\nlutes\nlutetium\nlutetiums\nluteum\nluthern\nlutherns\nluting\nlutings\nlutist\nlutists\nluv\nluvs\nlux\nluxate\nluxated\nluxates\nluxating\nluxation\nluxations\nluxe\nluxes\nluxuriance\nluxuriances\nluxuriant\nluxuriantly\nluxuriate\nluxuriated\nluxuriates\nluxuriating\nluxuries\nluxurious\nluxuriously\nluxuriousness\nluxury\nlwei\nlweis\nlyard\nlyart\nlyase\nlyases\nlycea\nlycee\nlycees\nlyceum\nlyceums\nlychee\nlychees\nlychnis\nlychnises\nlycopene\nlycopenes\nlycopod\nlycopods\nlyddite\nlyddites\nlye\nlyes\nlying\nlyingly\nlyings\nlymph\nlymphatic\nlymphatics\nlymphocyte\nlymphocytes\nlymphoid\nlymphoma\nlymphomas\nlymphomata\nlymphs\nlyncean\nlynch\nlynched\nlyncher\nlynchers\nlynches\nlynching\nlynchings\nlynx\nlynxes\nlyophile\nlyrate\nlyrated\nlyrately\nlyre\nlyrebird\nlyrebirds\nlyres\nlyric\nlyrical\nlyrically\nlyricise\nlyricised\nlyricises\nlyricising\nlyricism\nlyricisms\nlyricist\nlyricists\nlyricize\nlyricized\nlyricizes\nlyricizing\nlyrics\nlyriform\nlyrism\nlyrisms\nlyrist\nlyrists\nlysate\nlysates\nlyse\nlysed\nlyses\nlysin\nlysine\nlysines\nlysing\nlysins\nlysis\nlysogen\nlysogenies\nlysogens\nlysogeny\nlysosome\nlysosomes\nlysozyme\nlysozymes\nlyssa\nlyssas\nlytic\nlytta\nlyttae\nlyttas\nma\nmaar\nmaars\nmabe\nmabes\nmac\nmacaber\nmacabre\nmacaco\nmacacos\nmacadam\nmacadamize\nmacadamized\nmacadamizes\nmacadamizing\nmacadams\nmacaque\nmacaques\nmacaroni\nmacaronies\nmacaronis\nmacaroon\nmacaroons\nmacaw\nmacaws\nmaccabaw\nmaccabaws\nmaccaboy\nmaccaboys\nmacchia\nmacchie\nmaccoboy\nmaccoboys\nmace\nmaced\nmacer\nmacerate\nmacerated\nmacerates\nmacerating\nmaceration\nmacerations\nmacerator\nmacerators\nmacers\nmaces\nmach\nmache\nmachete\nmachetes\nmachinable\nmachinate\nmachinated\nmachinates\nmachinating\nmachination\nmachinations\nmachinator\nmachinators\nmachine\nmachined\nmachinelike\nmachineries\nmachinery\nmachines\nmachining\nmachinist\nmachinists\nmachismo\nmachismos\nmacho\nmachos\nmachree\nmachrees\nmachs\nmachzor\nmachzorim\nmachzors\nmacing\nmack\nmackerel\nmackerels\nmackinaw\nmackinaws\nmackintosh\nmackintoshes\nmackle\nmackled\nmackles\nmackling\nmacks\nmacle\nmacled\nmacles\nmacon\nmacrame\nmacrames\nmacro\nmacrocosm\nmacrocosms\nmacroinstruction\nmacroinstructions\nmacromolecule\nmacromolecules\nmacron\nmacrons\nmacros\nmacroscopic\nmacroscopically\nmacrural\nmacruran\nmacrurans\nmacs\nmacula\nmaculae\nmacular\nmaculas\nmaculate\nmaculated\nmaculates\nmaculating\nmacule\nmaculed\nmacules\nmaculing\nmad\nmadam\nmadame\nmadames\nmadams\nmadcap\nmadcaps\nmadded\nmadden\nmaddened\nmaddening\nmaddeningly\nmaddens\nmadder\nmadders\nmaddest\nmadding\nmaddish\nmade\nmadeira\nmadeiras\nmademoiselle\nmademoiselles\nmadhouse\nmadhouses\nmadly\nmadman\nmadmen\nmadness\nmadnesses\nmadonna\nmadonnas\nmadras\nmadrases\nmadre\nmadres\nmadrigal\nmadrigalist\nmadrigalists\nmadrigals\nmadrona\nmadronas\nmadrone\nmadrones\nmadrono\nmadronos\nmads\nmaduro\nmaduros\nmadwoman\nmadwomen\nmadwort\nmadworts\nmadzoon\nmadzoons\nmae\nmaelstrom\nmaelstroms\nmaenad\nmaenades\nmaenadic\nmaenads\nmaes\nmaestoso\nmaestosos\nmaestri\nmaestro\nmaestros\nmaffia\nmaffias\nmaffick\nmafficked\nmafficking\nmafficks\nmafia\nmafias\nmafic\nmafiosi\nmafioso\nmaftir\nmaftirs\nmag\nmagazine\nmagazines\nmagdalen\nmagdalens\nmage\nmagenta\nmagentas\nmages\nmaggot\nmaggots\nmaggoty\nmagi\nmagic\nmagical\nmagically\nmagician\nmagicians\nmagicked\nmagicking\nmagics\nmagilp\nmagilps\nmagister\nmagisterial\nmagisterially\nmagisters\nmagistracies\nmagistracy\nmagistrate\nmagistrates\nmagistrature\nmagistratures\nmagma\nmagmas\nmagmata\nmagmatic\nmagnanimities\nmagnanimity\nmagnanimous\nmagnanimously\nmagnate\nmagnates\nmagnesia\nmagnesias\nmagnesic\nmagnesium\nmagnet\nmagnetic\nmagnetically\nmagnetics\nmagnetism\nmagnetite\nmagnetites\nmagnetizable\nmagnetization\nmagnetizations\nmagnetize\nmagnetized\nmagnetizer\nmagnetizers\nmagnetizes\nmagnetizing\nmagneto\nmagneton\nmagnetons\nmagnetos\nmagnets\nmagnific\nmagnification\nmagnifications\nmagnificence\nmagnificent\nmagnificently\nmagnified\nmagnifier\nmagnifiers\nmagnifies\nmagnify\nmagnifying\nmagniloquence\nmagniloquent\nmagniloquently\nmagnitude\nmagnitudes\nmagnolia\nmagnolias\nmagnum\nmagnums\nmagot\nmagots\nmagpie\nmagpies\nmags\nmaguey\nmagueys\nmagus\nmaharaja\nmaharajah\nmaharajahs\nmaharajas\nmaharanee\nmaharanees\nmaharani\nmaharanis\nmahatma\nmahatmas\nmahjong\nmahjongg\nmahjonggs\nmahjongs\nmahoe\nmahoes\nmahoganies\nmahogany\nmahonia\nmahonias\nmahout\nmahouts\nmahuang\nmahuangs\nmahzor\nmahzorim\nmahzors\nmaid\nmaiden\nmaidenhair\nmaidenhairs\nmaidenhood\nmaidenhoods\nmaidenly\nmaidens\nmaidhood\nmaidhoods\nmaidish\nmaids\nmaidservant\nmaidservants\nmaieutic\nmaigre\nmaihem\nmaihems\nmail\nmailability\nmailable\nmailbag\nmailbags\nmailbox\nmailboxes\nmaile\nmailed\nmailer\nmailers\nmailes\nmailing\nmailings\nmaill\nmailless\nmaillot\nmaillots\nmaills\nmailman\nmailmen\nmails\nmaim\nmaimed\nmaimer\nmaimers\nmaiming\nmaims\nmain\nmainframe\nmainframes\nmainland\nmainlander\nmainlanders\nmainlands\nmainline\nmainlined\nmainlines\nmainlining\nmainly\nmainmast\nmainmasts\nmains\nmainsail\nmainsails\nmainspring\nmainsprings\nmainstay\nmainstays\nmainstream\nmainstreams\nmaintain\nmaintainability\nmaintainable\nmaintained\nmaintaining\nmaintains\nmaintenance\nmaintenances\nmaintop\nmaintops\nmaiolica\nmaiolicas\nmair\nmairs\nmaist\nmaists\nmaize\nmaizes\nmajagua\nmajaguas\nmajestic\nmajestically\nmajesties\nmajesty\nmajolica\nmajolicas\nmajor\nmajordomo\nmajordomos\nmajored\nmajorette\nmajorettes\nmajoring\nmajorities\nmajority\nmajors\nmajuscule\nmajuscules\nmakable\nmakar\nmakars\nmake\nmakeable\nmakebate\nmakebates\nmakefast\nmakefasts\nmaker\nmakers\nmakes\nmakeshift\nmakeshifts\nmakeup\nmakeups\nmakimono\nmakimonos\nmaking\nmakings\nmako\nmakos\nmakuta\nmalachite\nmalachites\nmaladapted\nmaladies\nmaladjusted\nmaladjustment\nmaladjustments\nmaladminister\nmaladministered\nmaladministering\nmaladministers\nmaladministration\nmaladministrations\nmaladroit\nmaladroitly\nmaladroitness\nmalady\nmalaise\nmalaises\nmalamute\nmalamutes\nmalapert\nmalaperts\nmalaprop\nmalapropism\nmalapropisms\nmalaprops\nmalar\nmalaria\nmalarial\nmalarian\nmalarias\nmalarkey\nmalarkeys\nmalarkies\nmalarky\nmalaroma\nmalaromas\nmalars\nmalate\nmalates\nmalcontent\nmalcontents\nmale\nmaleate\nmaleates\nmaledict\nmaledicted\nmaledicting\nmalediction\nmaledictions\nmaledicts\nmalefaction\nmalefactions\nmalefactor\nmalefactors\nmalefic\nmaleficence\nmaleficences\nmalemiut\nmalemiuts\nmalemuits\nmalemute\nmalemutes\nmaleness\nmalenesses\nmales\nmalevolence\nmalevolent\nmalevolently\nmalfeasance\nmalfeasances\nmalfed\nmalformation\nmalformations\nmalformed\nmalfunction\nmalfunctioned\nmalfunctioning\nmalfunctions\nmalgre\nmalic\nmalice\nmalices\nmalicious\nmaliciously\nmaliciousness\nmalign\nmalignance\nmalignances\nmalignancies\nmalignancy\nmalignant\nmalignantly\nmaligned\nmaligner\nmaligners\nmaligning\nmalignities\nmalignity\nmalignly\nmaligns\nmalihini\nmalihinis\nmaline\nmalines\nmalinger\nmalingered\nmalingerer\nmalingerers\nmalingering\nmalingers\nmalison\nmalisons\nmalkin\nmalkins\nmall\nmallard\nmallards\nmalleability\nmalleable\nmalled\nmallee\nmallees\nmallei\nmalleoli\nmallet\nmallets\nmalleus\nmalling\nmallow\nmallows\nmalls\nmalm\nmalmier\nmalmiest\nmalms\nmalmsey\nmalmseys\nmalmy\nmalnourished\nmalnutrition\nmalocclusion\nmalocclusions\nmalodor\nmalodorous\nmalodorously\nmalodorousness\nmalodors\nmalposed\nmalpractice\nmalpractices\nmalt\nmaltase\nmaltases\nmalted\nmalteds\nmaltha\nmalthas\nmaltier\nmaltiest\nmalting\nmaltol\nmaltols\nmaltose\nmaltoses\nmaltreat\nmaltreated\nmaltreating\nmaltreatment\nmaltreatments\nmaltreats\nmalts\nmaltster\nmaltsters\nmalty\nmalvasia\nmalvasias\nmama\nmamas\nmamba\nmambas\nmambo\nmamboed\nmamboes\nmamboing\nmambos\nmameluke\nmamelukes\nmamey\nmameyes\nmameys\nmamie\nmamies\nmamluk\nmamluks\nmamma\nmammae\nmammal\nmammalian\nmammalians\nmammals\nmammary\nmammas\nmammate\nmammati\nmammatus\nmammee\nmammees\nmammer\nmammered\nmammering\nmammers\nmammet\nmammets\nmammey\nmammeys\nmammie\nmammies\nmammilla\nmammillae\nmammitides\nmammitis\nmammock\nmammocked\nmammocking\nmammocks\nmammon\nmammonism\nmammonist\nmammonists\nmammons\nmammoth\nmammoths\nmammy\nman\nmana\nmanacle\nmanacled\nmanacles\nmanacling\nmanage\nmanageability\nmanageable\nmanageableness\nmanageably\nmanaged\nmanagement\nmanagements\nmanager\nmanagerial\nmanagerially\nmanagers\nmanagership\nmanages\nmanaging\nmanakin\nmanakins\nmanana\nmananas\nmanas\nmanatee\nmanatees\nmanatoid\nmanche\nmanches\nmanchet\nmanchets\nmanciple\nmanciples\nmandala\nmandalas\nmandalic\nmandamus\nmandamused\nmandamuses\nmandamusing\nmandarin\nmandarins\nmandataries\nmandatary\nmandate\nmandated\nmandates\nmandating\nmandator\nmandatories\nmandators\nmandatory\nmandible\nmandibles\nmandibular\nmandioca\nmandiocas\nmandola\nmandolas\nmandolin\nmandolinist\nmandolinists\nmandolins\nmandrake\nmandrakes\nmandrel\nmandrels\nmandril\nmandrill\nmandrills\nmandrils\nmane\nmaned\nmanege\nmaneges\nmaneless\nmanes\nmaneuver\nmaneuverability\nmaneuverable\nmaneuvered\nmaneuverer\nmaneuverers\nmaneuvering\nmaneuvers\nmanful\nmanfully\nmangabey\nmangabeys\nmangabies\nmangaby\nmanganese\nmanganic\nmange\nmangel\nmangels\nmanger\nmangers\nmanges\nmangey\nmangier\nmangiest\nmangily\nmangle\nmangled\nmangler\nmanglers\nmangles\nmangling\nmango\nmangoes\nmangold\nmangolds\nmangonel\nmangonels\nmangos\nmangrove\nmangroves\nmangy\nmanhandle\nmanhandled\nmanhandles\nmanhandling\nmanhattans\nmanhole\nmanholes\nmanhood\nmanhoods\nmanhunt\nmanhunts\nmania\nmaniac\nmaniacal\nmaniacally\nmaniacs\nmanias\nmanic\nmanicotti\nmanics\nmanicure\nmanicured\nmanicures\nmanicuring\nmanicurist\nmanicurists\nmanifest\nmanifestant\nmanifestants\nmanifestation\nmanifestations\nmanifested\nmanifesting\nmanifestly\nmanifesto\nmanifestoes\nmanifestos\nmanifests\nmanifold\nmanifolded\nmanifolding\nmanifolds\nmanihot\nmanihots\nmanikin\nmanikins\nmanila\nmanilas\nmanilla\nmanillas\nmanille\nmanilles\nmanioc\nmanioca\nmaniocas\nmaniocs\nmaniple\nmaniples\nmanipulability\nmanipulable\nmanipulatable\nmanipulate\nmanipulated\nmanipulates\nmanipulating\nmanipulation\nmanipulations\nmanipulative\nmanipulatively\nmanipulativeness\nmanipulator\nmanipulators\nmanipulatory\nmanito\nmanitos\nmanitou\nmanitous\nmanitu\nmanitus\nmankind\nmanless\nmanlier\nmanliest\nmanlike\nmanlily\nmanliness\nmanly\nmanmade\nmanna\nmannan\nmannans\nmannas\nmanned\nmannequin\nmannequins\nmanner\nmannered\nmannerism\nmannerisms\nmannerist\nmanneristic\nmannerists\nmannerless\nmannerliness\nmannerly\nmanners\nmannikin\nmannikins\nmanning\nmannish\nmannishly\nmannishness\nmannite\nmannites\nmannitic\nmannitol\nmannitols\nmannose\nmannoses\nmano\nmanometer\nmanometers\nmanometric\nmanometry\nmanor\nmanorial\nmanors\nmanos\nmanpack\nmanpower\nmanpowers\nmanque\nmanrope\nmanropes\nmans\nmansard\nmansards\nmanse\nmanservant\nmanses\nmansion\nmansions\nmanslaughter\nmanslaughters\nmanta\nmantas\nmanteau\nmanteaus\nmanteaux\nmantel\nmantelet\nmantelets\nmantelpiece\nmantelpieces\nmantels\nmantes\nmantic\nmantid\nmantids\nmantilla\nmantillas\nmantis\nmantises\nmantissa\nmantissas\nmantle\nmantled\nmantles\nmantlet\nmantlets\nmantling\nmantlings\nmantra\nmantrap\nmantraps\nmantras\nmantua\nmantuas\nmanual\nmanually\nmanuals\nmanuary\nmanubria\nmanufacture\nmanufactured\nmanufacturer\nmanufacturers\nmanufactures\nmanufacturing\nmanumit\nmanumits\nmanumitted\nmanumitting\nmanure\nmanured\nmanurer\nmanurers\nmanures\nmanurial\nmanuring\nmanus\nmanuscript\nmanuscripts\nmanward\nmanwards\nmanwise\nmany\nmanyfold\nmap\nmaple\nmaples\nmapmaker\nmapmakers\nmappable\nmapped\nmapper\nmappers\nmapping\nmappings\nmaps\nmaquette\nmaquettes\nmaqui\nmaquis\nmar\nmarabou\nmarabous\nmarabout\nmarabouts\nmaraca\nmaracas\nmaranta\nmarantas\nmarasca\nmarascas\nmaraschino\nmaraschinos\nmarasmic\nmarasmus\nmarasmuses\nmarathon\nmarathons\nmaraud\nmarauded\nmarauder\nmarauders\nmarauding\nmarauds\nmaravedi\nmaravedis\nmarble\nmarbled\nmarbleize\nmarbleized\nmarbleizes\nmarbleizing\nmarbler\nmarblers\nmarbles\nmarblier\nmarbliest\nmarbling\nmarblings\nmarbly\nmarc\nmarcel\nmarcelled\nmarcelling\nmarcels\nmarch\nmarched\nmarchen\nmarcher\nmarchers\nmarches\nmarchesa\nmarchese\nmarchesi\nmarching\nmarchioness\nmarchionesses\nmarcs\nmare\nmaremma\nmaremme\nmares\nmargaric\nmargarin\nmargarine\nmargarines\nmargarins\nmargay\nmargays\nmarge\nmargent\nmargented\nmargenting\nmargents\nmarges\nmargin\nmarginal\nmarginalities\nmarginality\nmarginally\nmarginate\nmarginated\nmarginates\nmarginating\nmargination\nmarginations\nmargined\nmargining\nmargins\nmargrave\nmargraves\nmaria\nmariachi\nmariachis\nmarigold\nmarigolds\nmarijuana\nmarijuanas\nmarimba\nmarimbas\nmarina\nmarinade\nmarinaded\nmarinades\nmarinading\nmarinara\nmarinaras\nmarinas\nmarinate\nmarinated\nmarinates\nmarinating\nmarine\nmariner\nmariners\nmarines\nmarionette\nmarionettes\nmariposa\nmariposas\nmarish\nmarishes\nmarital\nmaritally\nmaritime\nmarjoram\nmarjorams\nmark\nmarkdown\nmarkdowns\nmarked\nmarkedly\nmarker\nmarkers\nmarket\nmarketability\nmarketable\nmarketed\nmarketer\nmarketers\nmarketing\nmarketplace\nmarketplaces\nmarkets\nmarkhoor\nmarkhoors\nmarkhor\nmarkhors\nmarking\nmarkings\nmarkka\nmarkkaa\nmarkkas\nmarks\nmarksman\nmarksmanship\nmarksmen\nmarkup\nmarkups\nmarl\nmarled\nmarlier\nmarliest\nmarlin\nmarline\nmarlines\nmarling\nmarlings\nmarlins\nmarlite\nmarlites\nmarlitic\nmarls\nmarly\nmarmalade\nmarmalades\nmarmite\nmarmites\nmarmoset\nmarmosets\nmarmot\nmarmots\nmaroon\nmarooned\nmarooning\nmaroons\nmarplot\nmarplots\nmarque\nmarquee\nmarquees\nmarques\nmarquess\nmarquesses\nmarquetries\nmarquetry\nmarquis\nmarquise\nmarquises\nmarquisette\nmarquisettes\nmarram\nmarrams\nmarred\nmarrer\nmarrers\nmarriage\nmarriageable\nmarriages\nmarried\nmarrieds\nmarrier\nmarriers\nmarries\nmarring\nmarron\nmarrons\nmarrow\nmarrowed\nmarrowing\nmarrows\nmarrowy\nmarry\nmarrying\nmars\nmarse\nmarses\nmarsh\nmarshal\nmarshalcy\nmarshaled\nmarshaling\nmarshall\nmarshalled\nmarshalling\nmarshalls\nmarshals\nmarshes\nmarshier\nmarshiest\nmarshiness\nmarshlike\nmarshmallow\nmarshmallows\nmarshmallowy\nmarshy\nmarsupia\nmarsupial\nmarsupials\nmart\nmartagon\nmartagons\nmarted\nmartello\nmartellos\nmarten\nmartens\nmartial\nmartially\nmartian\nmartians\nmartin\nmartinet\nmartinets\nmarting\nmartingale\nmartingales\nmartini\nmartinis\nmartins\nmartlet\nmartlets\nmarts\nmartyr\nmartyrdom\nmartyrdoms\nmartyred\nmartyries\nmartyring\nmartyrization\nmartyrizations\nmartyrize\nmartyrized\nmartyrizes\nmartyrizing\nmartyrly\nmartyrs\nmartyry\nmarvel\nmarveled\nmarveling\nmarvelled\nmarvelling\nmarvellous\nmarvelous\nmarvelously\nmarvelousness\nmarvels\nmarvy\nmarzipan\nmarzipans\nmas\nmascara\nmascaras\nmascon\nmascons\nmascot\nmascots\nmasculine\nmasculinely\nmasculinity\nmasculinization\nmasculinize\nmasculinized\nmasculinizes\nmasculinizing\nmaser\nmasers\nmash\nmashed\nmasher\nmashers\nmashes\nmashie\nmashies\nmashing\nmashy\nmasjid\nmasjids\nmask\nmaskable\nmasked\nmaskeg\nmaskegs\nmasker\nmaskers\nmasking\nmaskings\nmasklike\nmasks\nmasochism\nmasochist\nmasochistic\nmasochistically\nmasochists\nmason\nmasoned\nmasonic\nmasoning\nmasonries\nmasonry\nmasons\nmasque\nmasquer\nmasquerade\nmasqueraded\nmasquerader\nmasqueraders\nmasquerades\nmasquerading\nmasquers\nmasques\nmass\nmassa\nmassacre\nmassacred\nmassacres\nmassacring\nmassage\nmassaged\nmassager\nmassagers\nmassages\nmassaging\nmassas\nmasse\nmassed\nmassedly\nmasses\nmasseter\nmasseters\nmasseur\nmasseurs\nmasseuse\nmasseuses\nmassicot\nmassicots\nmassier\nmassiest\nmassif\nmassifs\nmassing\nmassive\nmassively\nmassiveness\nmassless\nmassy\nmast\nmastaba\nmastabah\nmastabahs\nmastabas\nmasted\nmaster\nmastered\nmasterful\nmasterfully\nmasteries\nmastering\nmasterly\nmastermind\nmasterminded\nmasterminding\nmasterminds\nmasterpiece\nmasterpieces\nmasters\nmastership\nmasterwork\nmasterworks\nmastery\nmasthead\nmastheaded\nmastheading\nmastheads\nmastic\nmasticate\nmasticated\nmasticates\nmasticating\nmastication\nmastications\nmasticator\nmasticatories\nmasticators\nmasticatory\nmastiche\nmastiches\nmastics\nmastiff\nmastiffs\nmasting\nmastitic\nmastitides\nmastitis\nmastititides\nmastix\nmastixes\nmastless\nmastlike\nmastodon\nmastodons\nmastoid\nmastoids\nmasts\nmasturbate\nmasturbated\nmasturbates\nmasturbating\nmasturbation\nmasturbations\nmasturbator\nmasturbators\nmasturbatory\nmasurium\nmasuriums\nmat\nmatador\nmatadors\nmatch\nmatchable\nmatchbox\nmatchboxes\nmatched\nmatcher\nmatchers\nmatches\nmatching\nmatchless\nmatchlessly\nmatchlessness\nmatchmaker\nmatchmakers\nmate\nmated\nmateless\nmatelote\nmatelotes\nmater\nmaterial\nmaterialism\nmaterialist\nmaterialistic\nmaterialistically\nmaterialists\nmaterialities\nmateriality\nmaterialization\nmaterializations\nmaterialize\nmaterialized\nmaterializes\nmaterializing\nmaterially\nmaterialness\nmaterials\nmateriel\nmateriels\nmaternal\nmaternally\nmaternities\nmaternity\nmaters\nmates\nmateship\nmateships\nmatey\nmateys\nmath\nmathematical\nmathematically\nmathematician\nmathematicians\nmathematics\nmaths\nmatilda\nmatildas\nmatin\nmatinal\nmatinee\nmatinees\nmatiness\nmatinesses\nmating\nmatings\nmatins\nmatless\nmatrass\nmatrasses\nmatres\nmatriarch\nmatriarchal\nmatriarchate\nmatriarchates\nmatriarchies\nmatriarchs\nmatriarchy\nmatrices\nmatricidal\nmatricide\nmatricides\nmatriculant\nmatriculants\nmatriculate\nmatriculated\nmatriculates\nmatriculating\nmatriculation\nmatriculations\nmatrimonial\nmatrimonially\nmatrimony\nmatrix\nmatrixes\nmatron\nmatronal\nmatronly\nmatrons\nmats\nmatt\nmatte\nmatted\nmattedly\nmatter\nmattered\nmattering\nmatters\nmattery\nmattes\nmattin\nmatting\nmattings\nmattins\nmattock\nmattocks\nmattoid\nmattoids\nmattrass\nmattrasses\nmattress\nmattresses\nmatts\nmaturate\nmaturated\nmaturates\nmaturating\nmaturation\nmaturational\nmaturations\nmature\nmatured\nmaturely\nmaturer\nmatures\nmaturest\nmaturing\nmaturities\nmaturity\nmatza\nmatzah\nmatzahs\nmatzas\nmatzo\nmatzoh\nmatzohs\nmatzoon\nmatzoons\nmatzos\nmatzot\nmatzoth\nmaud\nmaudlin\nmauds\nmauger\nmaugre\nmaul\nmauled\nmauler\nmaulers\nmauling\nmauls\nmaumet\nmaumetries\nmaumetry\nmaumets\nmaun\nmaund\nmaunder\nmaundered\nmaundering\nmaunders\nmaundies\nmaunds\nmaundy\nmausolea\nmausoleum\nmausoleums\nmaut\nmauts\nmauve\nmauves\nmaven\nmavens\nmaverick\nmavericks\nmavie\nmavies\nmavin\nmavins\nmavis\nmavises\nmaw\nmawed\nmawing\nmawkish\nmawkishly\nmawkishness\nmawn\nmaws\nmaxi\nmaxicoat\nmaxicoats\nmaxilla\nmaxillae\nmaxillas\nmaxim\nmaxima\nmaximal\nmaximally\nmaximals\nmaximin\nmaximins\nmaximise\nmaximised\nmaximises\nmaximising\nmaximite\nmaximites\nmaximization\nmaximizations\nmaximize\nmaximized\nmaximizer\nmaximizers\nmaximizes\nmaximizing\nmaxims\nmaximum\nmaximums\nmaxis\nmaxixe\nmaxixes\nmaxwell\nmaxwells\nmay\nmaya\nmayan\nmayapple\nmayapples\nmayas\nmaybe\nmaybush\nmaybushes\nmayday\nmaydays\nmayed\nmayest\nmayflies\nmayflower\nmayflowers\nmayfly\nmayhap\nmayhem\nmayhems\nmaying\nmayings\nmayo\nmayonnaise\nmayonnaises\nmayor\nmayoral\nmayoralties\nmayoralty\nmayoress\nmayoresses\nmayors\nmayos\nmaypole\nmaypoles\nmaypop\nmaypops\nmays\nmayst\nmayvin\nmayvins\nmayweed\nmayweeds\nmazaedia\nmazard\nmazards\nmaze\nmazed\nmazedly\nmazelike\nmazer\nmazers\nmazes\nmazier\nmaziest\nmazily\nmaziness\nmazinesses\nmazing\nmazourka\nmazourkas\nmazuma\nmazumas\nmazurka\nmazurkas\nmazy\nmazzard\nmazzards\nmbira\nmbiras\nme\nmead\nmeadow\nmeadowlark\nmeadowlarks\nmeadows\nmeadowy\nmeads\nmeager\nmeagerly\nmeagerness\nmeagre\nmeagrely\nmeal\nmealie\nmealier\nmealies\nmealiest\nmealless\nmeals\nmealtime\nmealtimes\nmealworm\nmealworms\nmealy\nmealybug\nmealybugs\nmealymouthed\nmean\nmeander\nmeandered\nmeandering\nmeanders\nmeaner\nmeaners\nmeanest\nmeanie\nmeanies\nmeaning\nmeaningful\nmeaningfully\nmeaningfulness\nmeaningless\nmeaninglessly\nmeaninglessness\nmeanings\nmeanly\nmeanness\nmeannesses\nmeans\nmeant\nmeantime\nmeantimes\nmeanwhile\nmeany\nmeasle\nmeasled\nmeasles\nmeaslier\nmeasliest\nmeasly\nmeasurability\nmeasurable\nmeasurably\nmeasure\nmeasured\nmeasuredly\nmeasureless\nmeasurement\nmeasurements\nmeasurer\nmeasurers\nmeasures\nmeasuring\nmeat\nmeatal\nmeatball\nmeatballs\nmeathead\nmeatheads\nmeatier\nmeatiest\nmeatily\nmeatiness\nmeatless\nmeatman\nmeatmen\nmeats\nmeatus\nmeatuses\nmeaty\nmecca\nmeccas\nmechanic\nmechanical\nmechanically\nmechanician\nmechanicians\nmechanics\nmechanism\nmechanisms\nmechanist\nmechanistic\nmechanistically\nmechanists\nmechanization\nmechanizations\nmechanize\nmechanized\nmechanizer\nmechanizers\nmechanizes\nmechanizing\nmeconium\nmeconiums\nmed\nmedaka\nmedakas\nmedal\nmedaled\nmedaling\nmedalist\nmedalists\nmedalled\nmedallic\nmedalling\nmedallion\nmedallions\nmedallist\nmedallists\nmedals\nmeddle\nmeddled\nmeddler\nmeddlers\nmeddles\nmeddlesome\nmeddling\nmedia\nmediacies\nmediacy\nmediad\nmediae\nmediaeval\nmedial\nmedially\nmedials\nmedian\nmedianly\nmedians\nmediant\nmediants\nmedias\nmediate\nmediated\nmediates\nmediating\nmediation\nmediations\nmediator\nmediators\nmediatory\nmedic\nmedicable\nmedicaid\nmedicaids\nmedical\nmedically\nmedicals\nmedicament\nmedicamentous\nmedicaments\nmedicare\nmedicares\nmedicate\nmedicated\nmedicates\nmedicating\nmedication\nmedications\nmedicinal\nmedicinally\nmedicine\nmedicined\nmedicines\nmedicining\nmedick\nmedicks\nmedico\nmedicos\nmedics\nmedieval\nmedievalism\nmedievalist\nmedievalists\nmedievally\nmedievals\nmedii\nmediocre\nmediocrities\nmediocrity\nmeditate\nmeditated\nmeditates\nmeditating\nmeditatingly\nmeditation\nmeditations\nmeditative\nmeditatively\nmeditativeness\nmeditator\nmeditators\nmedium\nmediums\nmedius\nmedlar\nmedlars\nmedley\nmedleys\nmedulla\nmedullae\nmedullar\nmedullary\nmedullas\nmedusa\nmedusae\nmedusan\nmedusans\nmedusas\nmedusoid\nmedusoids\nmeed\nmeeds\nmeek\nmeeker\nmeekest\nmeekly\nmeekness\nmeeknesses\nmeerschaum\nmeerschaums\nmeet\nmeeter\nmeeters\nmeeting\nmeetinghouse\nmeetinghouses\nmeetings\nmeetly\nmeetness\nmeetnesses\nmeets\nmegabar\nmegabars\nmegabit\nmegabits\nmegabuck\nmegabucks\nmegacycle\nmegacycles\nmegadyne\nmegadynes\nmegahertz\nmegalith\nmegalithic\nmegaliths\nmegalomania\nmegalomaniac\nmegalomaniacal\nmegalomaniacally\nmegalomaniacs\nmegalomanias\nmegalomanic\nmegalopolis\nmegalopolises\nmegalopolitan\nmegalopolitanism\nmegalopolitans\nmegaphone\nmegaphones\nmegaphonic\nmegapod\nmegapode\nmegapodes\nmegass\nmegasse\nmegasses\nmegaton\nmegatons\nmegavolt\nmegavolts\nmegawatt\nmegawatts\nmegillah\nmegillahs\nmegilp\nmegilph\nmegilphs\nmegilps\nmegohm\nmegohms\nmegrim\nmegrims\nmeikle\nmeinie\nmeinies\nmeiny\nmeioses\nmeiosis\nmeiotic\nmel\nmelamine\nmelamines\nmelancholia\nmelancholiac\nmelancholiacs\nmelancholic\nmelancholies\nmelancholy\nmelange\nmelanges\nmelanian\nmelanic\nmelanics\nmelanin\nmelanins\nmelanism\nmelanisms\nmelanist\nmelanists\nmelanite\nmelanites\nmelanize\nmelanized\nmelanizes\nmelanizing\nmelanoid\nmelanoids\nmelanoma\nmelanomas\nmelanomata\nmelanous\nmeld\nmelded\nmelder\nmelders\nmelding\nmelds\nmelee\nmelees\nmelic\nmelilite\nmelilites\nmelilot\nmelilots\nmelinite\nmelinites\nmeliorate\nmeliorated\nmeliorates\nmeliorating\nmelioration\nmeliorations\nmeliorative\nmeliorator\nmeliorators\nmelisma\nmelismas\nmelismata\nmell\nmelled\nmellific\nmellifluous\nmellifluously\nmellifluousness\nmelling\nmellow\nmellowed\nmellower\nmellowest\nmellowing\nmellowly\nmellowness\nmellows\nmells\nmelodeon\nmelodeons\nmelodia\nmelodias\nmelodic\nmelodically\nmelodies\nmelodious\nmelodiously\nmelodiousness\nmelodise\nmelodised\nmelodises\nmelodising\nmelodist\nmelodists\nmelodize\nmelodized\nmelodizes\nmelodizing\nmelodrama\nmelodramas\nmelodramatic\nmelodramatically\nmelodramatics\nmelodramatist\nmelodramatists\nmelody\nmeloid\nmeloids\nmelon\nmelons\nmels\nmelt\nmeltability\nmeltable\nmeltage\nmeltages\nmelted\nmelter\nmelters\nmelting\nmeltingly\nmelton\nmeltons\nmelts\nmem\nmember\nmembered\nmembers\nmembership\nmemberships\nmembrane\nmembranes\nmembranous\nmemento\nmementoes\nmementos\nmemo\nmemoir\nmemoirist\nmemoirists\nmemoirs\nmemorabilia\nmemorability\nmemorable\nmemorableness\nmemorably\nmemoranda\nmemorandum\nmemorandums\nmemorial\nmemorialist\nmemorialists\nmemorialize\nmemorialized\nmemorializes\nmemorializing\nmemorially\nmemorials\nmemories\nmemorizable\nmemorization\nmemorizations\nmemorize\nmemorized\nmemorizer\nmemorizers\nmemorizes\nmemorizing\nmemory\nmemos\nmems\nmemsahib\nmemsahibs\nmen\nmenace\nmenaced\nmenacer\nmenacers\nmenaces\nmenacing\nmenacingly\nmenad\nmenads\nmenage\nmenagerie\nmenageries\nmenages\nmenarche\nmenarches\nmend\nmendable\nmendacious\nmendaciously\nmendaciousness\nmendacities\nmendacity\nmended\nmender\nmenders\nmendicancy\nmendicant\nmendicants\nmendigo\nmendigos\nmending\nmendings\nmends\nmenfolk\nmenfolks\nmenhaden\nmenhadens\nmenhir\nmenhirs\nmenial\nmenially\nmenials\nmeninges\nmeningitides\nmeningitis\nmeninx\nmeniscal\nmenisci\nmeniscus\nmeniscuses\nmeno\nmenologies\nmenology\nmenopausal\nmenopause\nmenorah\nmenorahs\nmensa\nmensae\nmensal\nmensas\nmensch\nmenschen\nmensches\nmense\nmensed\nmenseful\nmenservants\nmenses\nmensing\nmenstrua\nmenstrual\nmenstruate\nmenstruated\nmenstruates\nmenstruating\nmenstruation\nmenstruations\nmensural\nmensuration\nmensurations\nmenswear\nmenswears\nmenta\nmental\nmentalism\nmentalist\nmentalistic\nmentalists\nmentalities\nmentality\nmentally\nmenthene\nmenthenes\nmenthol\nmentholated\nmenthols\nmention\nmentionable\nmentioned\nmentioning\nmentions\nmentor\nmentors\nmentum\nmenu\nmenus\nmeou\nmeous\nmeow\nmeowed\nmeowing\nmeows\nmephitic\nmephitis\nmephitises\nmercantile\nmercantilism\nmercantilist\nmercantilists\nmercapto\nmercenaries\nmercenarily\nmercenariness\nmercenary\nmercer\nmerceries\nmercerize\nmercerized\nmercerizes\nmercerizing\nmercers\nmercery\nmerchandise\nmerchandised\nmerchandiser\nmerchandisers\nmerchandises\nmerchandising\nmerchant\nmerchantability\nmerchantable\nmerchanted\nmerchanting\nmerchants\nmercies\nmerciful\nmercifully\nmercifulness\nmerciless\nmercilessly\nmercilessness\nmercurial\nmercurially\nmercuric\nmercuries\nmercurous\nmercury\nmercy\nmerde\nmere\nmerely\nmerengue\nmerengues\nmerer\nmeres\nmerest\nmeretricious\nmeretriciously\nmeretriciousness\nmerganser\nmergansers\nmerge\nmerged\nmergence\nmergences\nmerger\nmergers\nmerges\nmerging\nmeridian\nmeridians\nmeringue\nmeringues\nmerino\nmerinos\nmerises\nmerisis\nmeristem\nmeristems\nmeristic\nmerit\nmerited\nmeriting\nmeritorious\nmeritoriously\nmeritoriousness\nmerits\nmerk\nmerks\nmerl\nmerle\nmerles\nmerlin\nmerlins\nmerlon\nmerlons\nmerls\nmermaid\nmermaids\nmerman\nmermen\nmeropia\nmeropias\nmeropic\nmerrier\nmerriest\nmerrily\nmerriment\nmerriments\nmerriness\nmerry\nmerrymaking\nmesa\nmesally\nmesarch\nmesas\nmescal\nmescaline\nmescals\nmesdames\nmesdemoiselles\nmeseemed\nmeseems\nmesh\nmeshed\nmeshes\nmeshier\nmeshiest\nmeshing\nmeshwork\nmeshworks\nmeshy\nmesial\nmesially\nmesian\nmesic\nmesmeric\nmesmerism\nmesmerist\nmesmerists\nmesmerize\nmesmerized\nmesmerizer\nmesmerizers\nmesmerizes\nmesmerizing\nmesnalties\nmesnalty\nmesne\nmesocarp\nmesocarps\nmesoderm\nmesodermal\nmesoderms\nmesoglea\nmesogleas\nmesomere\nmesomeres\nmeson\nmesonic\nmesons\nmesophyl\nmesophyls\nmesosome\nmesosomes\nmesotron\nmesotrons\nmesquit\nmesquite\nmesquites\nmesquits\nmess\nmessage\nmessages\nmessan\nmessans\nmessed\nmessenger\nmessengers\nmesses\nmessiah\nmessiahs\nmessianic\nmessier\nmessiest\nmessieurs\nmessily\nmessiness\nmessing\nmessman\nmessmate\nmessmates\nmessmen\nmessuage\nmessuages\nmessy\nmestee\nmestees\nmesteso\nmestesoes\nmestesos\nmestino\nmestinoes\nmestinos\nmestiza\nmestizas\nmestizo\nmestizoes\nmestizos\nmet\nmeta\nmetabolic\nmetabolically\nmetabolism\nmetabolisms\nmetabolite\nmetabolites\nmetabolizable\nmetabolize\nmetabolized\nmetabolizes\nmetabolizing\nmetage\nmetages\nmetal\nmetaled\nmetaling\nmetalise\nmetalised\nmetalises\nmetalising\nmetalist\nmetalists\nmetalize\nmetalized\nmetalizes\nmetalizing\nmetalled\nmetallic\nmetallically\nmetalling\nmetallization\nmetallizations\nmetallize\nmetallized\nmetallizes\nmetallizing\nmetallurgical\nmetallurgically\nmetallurgist\nmetallurgists\nmetallurgy\nmetals\nmetalwork\nmetalworker\nmetalworkers\nmetalworking\nmetamer\nmetamere\nmetameres\nmetamers\nmetamorphism\nmetamorphisms\nmetamorphose\nmetamorphosed\nmetamorphoses\nmetamorphosing\nmetamorphosis\nmetaphor\nmetaphoric\nmetaphorical\nmetaphorically\nmetaphors\nmetaphysical\nmetaphysically\nmetaphysician\nmetaphysicians\nmetaphysics\nmetastability\nmetastable\nmetastasize\nmetastasized\nmetastasizes\nmetastasizing\nmetastatic\nmetastatically\nmetatarsal\nmetatarsals\nmetate\nmetates\nmetathetic\nmetathetical\nmetazoa\nmetazoal\nmetazoan\nmetazoans\nmetazoic\nmetazoon\nmete\nmeted\nmeteor\nmeteoric\nmeteorically\nmeteorite\nmeteorites\nmeteoritic\nmeteoritical\nmeteoritics\nmeteoroid\nmeteoroids\nmeteorologic\nmeteorological\nmeteorologically\nmeteorologist\nmeteorologists\nmeteorology\nmeteors\nmetepa\nmetepas\nmeter\nmeterage\nmeterages\nmetered\nmetering\nmeters\nmetes\nmeth\nmethadon\nmethadone\nmethadons\nmethane\nmethanes\nmethanol\nmethanols\nmethinks\nmethod\nmethodic\nmethodical\nmethodically\nmethodicalness\nmethodist\nmethodistic\nmethodists\nmethodize\nmethodized\nmethodizes\nmethodizing\nmethodological\nmethodologically\nmethodologies\nmethodologist\nmethodologists\nmethodology\nmethods\nmethought\nmethoxy\nmethoxyl\nmeths\nmethyl\nmethylal\nmethylals\nmethylic\nmethyls\nmeticulosity\nmeticulous\nmeticulously\nmeticulousness\nmetier\nmetiers\nmeting\nmetis\nmetisse\nmetisses\nmetonym\nmetonymic\nmetonymical\nmetonymies\nmetonyms\nmetonymy\nmetopae\nmetope\nmetopes\nmetopic\nmetopon\nmetopons\nmetre\nmetred\nmetres\nmetric\nmetrical\nmetrically\nmetrication\nmetrics\nmetrified\nmetrifies\nmetrify\nmetrifying\nmetring\nmetrist\nmetrists\nmetritis\nmetritises\nmetro\nmetrological\nmetrologically\nmetrologies\nmetrologist\nmetrologists\nmetrology\nmetronome\nmetronomes\nmetronomic\nmetropolis\nmetropolises\nmetropolitan\nmetropolitans\nmetros\nmettle\nmettled\nmettles\nmettlesome\nmetump\nmetumps\nmeuniere\nmew\nmewed\nmewing\nmewl\nmewled\nmewler\nmewlers\nmewling\nmewls\nmews\nmezcal\nmezcals\nmezereon\nmezereons\nmezereum\nmezereums\nmezquit\nmezquite\nmezquites\nmezquits\nmezuza\nmezuzah\nmezuzahs\nmezuzas\nmezuzot\nmezuzoth\nmezzanine\nmezzanines\nmezzo\nmezzos\nmho\nmhos\nmi\nmiaou\nmiaoued\nmiaouing\nmiaous\nmiaow\nmiaowed\nmiaowing\nmiaows\nmiasm\nmiasma\nmiasmal\nmiasmas\nmiasmata\nmiasmatic\nmiasmic\nmiasms\nmiaul\nmiauled\nmiauling\nmiauls\nmib\nmibs\nmica\nmicas\nmicawber\nmicawbers\nmice\nmicell\nmicella\nmicellae\nmicellar\nmicelle\nmicelles\nmicells\nmiche\nmick\nmickey\nmickeys\nmickle\nmickler\nmickles\nmicklest\nmicks\nmicra\nmicrified\nmicrifies\nmicrify\nmicrifying\nmicro\nmicroampere\nmicroamperes\nmicrobar\nmicrobars\nmicrobe\nmicrobes\nmicrobial\nmicrobic\nmicrobiological\nmicrobiologist\nmicrobiologists\nmicrobus\nmicrobuses\nmicrobusses\nmicrochip\nmicrochips\nmicrocircuit\nmicrocircuitries\nmicrocircuitry\nmicrocircuits\nmicrocode\nmicrocoded\nmicrocodes\nmicrocomputer\nmicrocomputers\nmicrocopies\nmicrocopy\nmicrocosm\nmicrocosmic\nmicrocosmically\nmicrocosmos\nmicrocosms\nmicroelectronic\nmicroelectronics\nmicrofarad\nmicrofarads\nmicrofiche\nmicrofiches\nmicrofilm\nmicrofilmed\nmicrofilming\nmicrofilms\nmicroform\nmicroforms\nmicrogram\nmicrograms\nmicrograph\nmicrographed\nmicrographic\nmicrographically\nmicrographics\nmicrographing\nmicrographs\nmicrogroove\nmicrogrooves\nmicrohm\nmicrohms\nmicroimage\nmicroimages\nmicroinstruction\nmicroinstructions\nmicroliter\nmicroliters\nmicroluces\nmicrolux\nmicroluxes\nmicrometer\nmicrometers\nmicrometries\nmicrometry\nmicromho\nmicromhos\nmicrominiature\nmicrominiaturization\nmicrominiaturized\nmicron\nmicronize\nmicronized\nmicronizes\nmicronizing\nmicrons\nmicroorganism\nmicroorganisms\nmicrophone\nmicrophones\nmicroprocessor\nmicroprocessors\nmicroprogram\nmicroprogramming\nmicroprograms\nmicropublisher\nmicropublishers\nmicropublishing\nmicroreader\nmicroreaders\nmicroscope\nmicroscopes\nmicroscopic\nmicroscopical\nmicroscopically\nmicroscopist\nmicroscopists\nmicroscopy\nmicrosecond\nmicroseconds\nmicrovolt\nmicrovolts\nmicrowave\nmicrowaves\nmicrurgies\nmicrurgy\nmid\nmidair\nmidairs\nmidbrain\nmidbrains\nmidday\nmiddays\nmidden\nmiddens\nmiddies\nmiddle\nmiddlebrow\nmiddlebrows\nmiddled\nmiddleman\nmiddlemen\nmiddler\nmiddlers\nmiddles\nmiddleweight\nmiddleweights\nmiddling\nmiddlingly\nmiddlings\nmiddy\nmidfield\nmidfields\nmidge\nmidges\nmidget\nmidgets\nmidgut\nmidguts\nmidi\nmidiron\nmidirons\nmidis\nmidland\nmidlands\nmidleg\nmidlegs\nmidline\nmidlines\nmidmonth\nmidmonths\nmidmost\nmidmosts\nmidnight\nmidnights\nmidnoon\nmidnoons\nmidpoint\nmidpoints\nmidrange\nmidranges\nmidrash\nmidrashim\nmidrib\nmidribs\nmidriff\nmidriffs\nmids\nmidship\nmidshipman\nmidshipmen\nmidships\nmidspace\nmidspaces\nmidst\nmidstories\nmidstory\nmidstream\nmidstreams\nmidsts\nmidsummer\nmidsummers\nmidterm\nmidterms\nmidtown\nmidtowns\nmidwatch\nmidwatches\nmidway\nmidways\nmidweek\nmidweeks\nmidwife\nmidwifed\nmidwifery\nmidwifes\nmidwifing\nmidwinter\nmidwinters\nmidwived\nmidwives\nmidwiving\nmidyear\nmidyears\nmien\nmiens\nmies\nmiff\nmiffed\nmiffier\nmiffiest\nmiffing\nmiffs\nmiffy\nmig\nmigg\nmiggle\nmiggles\nmiggs\nmight\nmightier\nmightiest\nmightily\nmightiness\nmights\nmighty\nmignon\nmignonette\nmignonettes\nmignonne\nmignons\nmigraine\nmigraines\nmigrant\nmigrants\nmigrate\nmigrated\nmigrates\nmigrating\nmigration\nmigrations\nmigrator\nmigrators\nmigratory\nmigs\nmijnheer\nmijnheers\nmikado\nmikados\nmike\nmiked\nmikes\nmikra\nmikron\nmikrons\nmikvah\nmikvahs\nmikveh\nmikvehs\nmikvoth\nmil\nmiladi\nmiladies\nmiladis\nmilady\nmilage\nmilages\nmilch\nmilchig\nmild\nmilden\nmildened\nmildening\nmildens\nmilder\nmildest\nmildew\nmildewed\nmildewing\nmildews\nmildewy\nmildly\nmildness\nmildnesses\nmile\nmileage\nmileages\nmilepost\nmileposts\nmiler\nmilers\nmiles\nmilesimo\nmilesimos\nmilestone\nmilestones\nmilfoil\nmilfoils\nmilia\nmiliaria\nmiliarias\nmiliary\nmilieu\nmilieus\nmilieux\nmilitancy\nmilitant\nmilitantly\nmilitantness\nmilitants\nmilitaries\nmilitarily\nmilitarism\nmilitarist\nmilitaristic\nmilitaristically\nmilitarists\nmilitarization\nmilitarize\nmilitarized\nmilitarizes\nmilitarizing\nmilitary\nmilitate\nmilitated\nmilitates\nmilitating\nmilitia\nmilitiaman\nmilitiamen\nmilitias\nmilium\nmilk\nmilked\nmilker\nmilkers\nmilkfish\nmilkfishes\nmilkier\nmilkiest\nmilkily\nmilkiness\nmilking\nmilkmaid\nmilkmaids\nmilkman\nmilkmen\nmilks\nmilksop\nmilksops\nmilkweed\nmilkweeds\nmilkwood\nmilkwoods\nmilkwort\nmilkworts\nmilky\nmill\nmillable\nmillage\nmillages\nmilldam\nmilldams\nmille\nmilled\nmillenaries\nmillenary\nmillennia\nmillennium\nmillenniums\nmilleped\nmillepeds\nmiller\nmillers\nmilles\nmillet\nmillets\nmilliampere\nmilliamperes\nmilliard\nmilliards\nmilliare\nmilliares\nmilliary\nmillibar\nmillibars\nmillieme\nmilliemes\nmillier\nmilliers\nmilligal\nmilligals\nmilligram\nmilligrams\nmillihenries\nmillihenry\nmillihenrys\nmilliliter\nmilliliters\nmilliluces\nmillilux\nmilliluxes\nmillime\nmillimes\nmillimeter\nmillimeters\nmillimho\nmillimhos\nmilline\nmilliner\nmillineries\nmilliners\nmillinery\nmillines\nmilling\nmillings\nmilliohm\nmilliohms\nmillion\nmillionaire\nmillionaires\nmillions\nmillionth\nmillionths\nmilliped\nmillipede\nmillipedes\nmillipeds\nmillirem\nmillirems\nmillisecond\nmilliseconds\nmillivolt\nmillivolts\nmillpond\nmillponds\nmillrace\nmillraces\nmillrun\nmillruns\nmills\nmillstone\nmillstones\nmillstream\nmillstreams\nmillwork\nmillworks\nmillwright\nmillwrights\nmilo\nmilord\nmilords\nmilos\nmilpa\nmilpas\nmilreis\nmils\nmilt\nmilted\nmilter\nmilters\nmiltier\nmiltiest\nmilting\nmilts\nmilty\nmim\nmimbar\nmimbars\nmime\nmimed\nmimeo\nmimeograph\nmimeographed\nmimeographing\nmimeographs\nmimer\nmimers\nmimes\nmimesis\nmimesises\nmimetic\nmimetically\nmimetite\nmimetites\nmimic\nmimical\nmimicked\nmimicker\nmimickers\nmimicking\nmimicries\nmimicry\nmimics\nmiming\nmimosa\nmimosas\nmina\nminable\nminacities\nminacity\nminae\nminaret\nminarets\nminas\nminatory\nmince\nminced\nmincemeat\nmincemeats\nmincer\nmincers\nminces\nmincier\nminciest\nmincing\nmincingly\nmincy\nmind\nminded\nminder\nminders\nmindful\nmindfully\nmindfulness\nminding\nmindless\nmindlessly\nmindlessness\nminds\nmine\nmineable\nmined\nminelayer\nminelayers\nminer\nmineral\nmineralization\nmineralizations\nmineralize\nmineralized\nmineralizes\nmineralizing\nmineralogical\nmineralogist\nmineralogists\nmineralogy\nminerals\nminers\nmines\nminestrone\nminesweeper\nminesweepers\nmingier\nmingiest\nmingle\nmingled\nmingler\nminglers\nmingles\nmingling\nmingy\nmini\nminiature\nminiatures\nminiaturist\nminiaturists\nminiaturization\nminiaturizations\nminiaturize\nminiaturized\nminiaturizes\nminiaturizing\nminibike\nminibikes\nminibus\nminibuses\nminibusses\nminicab\nminicabs\nminicar\nminicars\nminicomputer\nminicomputers\nminified\nminifies\nminify\nminifying\nminikin\nminikins\nminim\nminima\nminimal\nminimally\nminimals\nminimax\nminimaxes\nminimise\nminimised\nminimises\nminimising\nminimization\nminimizations\nminimize\nminimized\nminimizer\nminimizers\nminimizes\nminimizing\nminims\nminimum\nminimums\nmining\nminings\nminion\nminions\nminis\nminish\nminished\nminishes\nminishing\nminiskirt\nminiskirted\nminiskirts\nminister\nministered\nministerial\nministerially\nministering\nministers\nministrant\nministrants\nministration\nministrations\nministries\nministry\nminitrack\nminitracks\nminium\nminiums\nminiver\nminivers\nmink\nminke\nminks\nminnesinger\nminnesingers\nminnies\nminnow\nminnows\nminny\nminor\nminorca\nminorcas\nminored\nminoring\nminorities\nminority\nminors\nminster\nminsters\nminstrel\nminstrels\nminstrelsies\nminstrelsy\nmint\nmintage\nmintages\nminted\nminter\nminters\nmintier\nmintiest\nminting\nmints\nminty\nminuend\nminuends\nminuet\nminuets\nminus\nminuscule\nminuscules\nminuses\nminute\nminuted\nminutely\nminuteman\nminutemen\nminuteness\nminuter\nminutes\nminutest\nminutia\nminutiae\nminutial\nminuting\nminx\nminxes\nminxish\nminyan\nminyanim\nminyans\nmioses\nmiosis\nmiotic\nmiotics\nmiquelet\nmiquelets\nmir\nmiracle\nmiracles\nmiraculous\nmiraculously\nmiraculousness\nmirador\nmiradors\nmirage\nmirages\nmire\nmired\nmires\nmirex\nmirexes\nmiri\nmirier\nmiriest\nmiriness\nmirinesses\nmiring\nmirk\nmirker\nmirkest\nmirkier\nmirkiest\nmirkily\nmirks\nmirky\nmirror\nmirrored\nmirroring\nmirrorlike\nmirrors\nmirs\nmirth\nmirthful\nmirthfully\nmirthfulness\nmirthless\nmirthlessly\nmirths\nmiry\nmirza\nmirzas\nmis\nmisact\nmisacted\nmisacting\nmisacts\nmisadapt\nmisadapted\nmisadapting\nmisadapts\nmisadd\nmisadded\nmisadding\nmisadds\nmisadventure\nmisadventures\nmisadvise\nmisadvised\nmisadvises\nmisadvising\nmisagent\nmisagents\nmisaim\nmisaimed\nmisaiming\nmisaims\nmisaligned\nmisalignment\nmisalliance\nmisalliances\nmisallied\nmisallies\nmisallocation\nmisally\nmisallying\nmisalter\nmisaltered\nmisaltering\nmisalters\nmisanthrope\nmisanthropes\nmisanthropic\nmisanthropies\nmisanthropy\nmisapplication\nmisapplications\nmisapplied\nmisapplies\nmisapply\nmisapplying\nmisapprehend\nmisapprehended\nmisapprehending\nmisapprehends\nmisapprehension\nmisapprehensions\nmisappropriate\nmisappropriated\nmisappropriates\nmisappropriating\nmisappropriation\nmisappropriations\nmisassay\nmisassayed\nmisassaying\nmisassays\nmisate\nmisatone\nmisatoned\nmisatones\nmisatoning\nmisaver\nmisaverred\nmisaverring\nmisavers\nmisaward\nmisawarded\nmisawarding\nmisawards\nmisbegan\nmisbegin\nmisbeginning\nmisbegins\nmisbegot\nmisbegotten\nmisbegun\nmisbehave\nmisbehaved\nmisbehaver\nmisbehavers\nmisbehaves\nmisbehaving\nmisbehavior\nmisbehaviors\nmisbelief\nmisbeliefs\nmisbeliever\nmisbelievers\nmisbias\nmisbiased\nmisbiases\nmisbiasing\nmisbiassed\nmisbiasses\nmisbiassing\nmisbill\nmisbilled\nmisbilling\nmisbills\nmisbind\nmisbinding\nmisbinds\nmisbound\nmisbrand\nmisbranded\nmisbranding\nmisbrands\nmisbuild\nmisbuilding\nmisbuilds\nmisbuilt\nmiscalculate\nmiscalculated\nmiscalculates\nmiscalculating\nmiscalculation\nmiscalculations\nmiscall\nmiscalled\nmiscalling\nmiscalls\nmiscarriage\nmiscarriages\nmiscarried\nmiscarries\nmiscarry\nmiscarrying\nmiscast\nmiscasted\nmiscasting\nmiscasts\nmiscegenation\nmiscegenations\nmiscellanea\nmiscellaneous\nmiscellaneously\nmiscellanies\nmiscellany\nmischance\nmischances\nmischief\nmischiefs\nmischievous\nmischievously\nmischievousness\nmiscibilities\nmiscibility\nmiscible\nmiscite\nmiscited\nmiscites\nmisciting\nmisclaim\nmisclaimed\nmisclaiming\nmisclaims\nmisclass\nmisclassed\nmisclasses\nmisclassing\nmiscoin\nmiscoined\nmiscoining\nmiscoins\nmiscolor\nmiscolored\nmiscoloring\nmiscolors\nmiscommunication\nmiscommunications\nmisconceive\nmisconceived\nmisconceives\nmisconceiving\nmisconception\nmisconceptions\nmisconduct\nmisconducted\nmisconducting\nmisconducts\nmisconstruction\nmisconstructions\nmisconstrue\nmisconstrued\nmisconstrues\nmisconstruing\nmiscook\nmiscooked\nmiscooking\nmiscooks\nmiscopied\nmiscopies\nmiscopy\nmiscopying\nmiscount\nmiscounted\nmiscounting\nmiscounts\nmiscreant\nmiscreants\nmiscue\nmiscued\nmiscues\nmiscuing\nmiscut\nmiscuts\nmiscutting\nmisdate\nmisdated\nmisdates\nmisdating\nmisdeal\nmisdealing\nmisdeals\nmisdealt\nmisdeed\nmisdeeds\nmisdeem\nmisdeemed\nmisdeeming\nmisdeems\nmisdemeanor\nmisdemeanors\nmisdiagnose\nmisdiagnosed\nmisdiagnoses\nmisdiagnosing\nmisdiagnosis\nmisdid\nmisdirect\nmisdirected\nmisdirecting\nmisdirects\nmisdo\nmisdoer\nmisdoers\nmisdoes\nmisdoing\nmisdoings\nmisdone\nmisdoubt\nmisdoubted\nmisdoubting\nmisdoubts\nmisdraw\nmisdrawing\nmisdrawn\nmisdraws\nmisdrew\nmisdrive\nmisdriven\nmisdrives\nmisdriving\nmisdrove\nmise\nmisease\nmiseases\nmiseat\nmiseate\nmiseaten\nmiseating\nmiseats\nmisedit\nmisedited\nmisediting\nmisedits\nmisenrol\nmisenroll\nmisenrolled\nmisenrolling\nmisenrolls\nmisenrols\nmisenter\nmisentered\nmisentering\nmisenters\nmisentries\nmisentry\nmiser\nmiserable\nmiserably\nmiserere\nmisereres\nmiseries\nmiserliness\nmiserly\nmisers\nmisery\nmises\nmisestimate\nmisestimated\nmisestimates\nmisestimating\nmisestimation\nmisestimations\nmisevent\nmisevents\nmisfaith\nmisfaiths\nmisfeasance\nmisfeasances\nmisfeasor\nmisfeasors\nmisfield\nmisfielded\nmisfielding\nmisfields\nmisfile\nmisfiled\nmisfiles\nmisfiling\nmisfire\nmisfired\nmisfires\nmisfiring\nmisfit\nmisfits\nmisfitted\nmisfitting\nmisform\nmisformed\nmisforming\nmisforms\nmisfortune\nmisfortunes\nmisframe\nmisframed\nmisframes\nmisframing\nmisgauge\nmisgauged\nmisgauges\nmisgauging\nmisgave\nmisgive\nmisgiven\nmisgives\nmisgiving\nmisgivings\nmisgovern\nmisgoverned\nmisgoverning\nmisgovernment\nmisgovernments\nmisgoverns\nmisgraft\nmisgrafted\nmisgrafting\nmisgrafts\nmisgrew\nmisgrow\nmisgrowing\nmisgrown\nmisgrows\nmisguess\nmisguessed\nmisguesses\nmisguessing\nmisguidance\nmisguide\nmisguided\nmisguidedly\nmisguidedness\nmisguides\nmisguiding\nmishandle\nmishandled\nmishandles\nmishandling\nmishap\nmishaps\nmishear\nmisheard\nmishearing\nmishears\nmishit\nmishits\nmishitting\nmishmash\nmishmashes\nmishmosh\nmishmoshes\nmisinfer\nmisinferred\nmisinferring\nmisinfers\nmisinform\nmisinformation\nmisinformed\nmisinforming\nmisinforms\nmisinter\nmisinterpret\nmisinterpretation\nmisinterpretations\nmisinterpreted\nmisinterpreting\nmisinterprets\nmisinterred\nmisinterring\nmisinters\nmisjoin\nmisjoined\nmisjoining\nmisjoins\nmisjudge\nmisjudged\nmisjudges\nmisjudging\nmisjudgment\nmisjudgments\nmiskal\nmiskals\nmiskeep\nmiskeeping\nmiskeeps\nmiskept\nmisknew\nmisknow\nmisknowing\nmisknown\nmisknows\nmislabel\nmislabeled\nmislabeling\nmislabelled\nmislabelling\nmislabels\nmislabor\nmislabored\nmislaboring\nmislabors\nmislaid\nmislain\nmislay\nmislayer\nmislayers\nmislaying\nmislays\nmislead\nmisleading\nmisleadingly\nmisleads\nmislearn\nmislearned\nmislearning\nmislearns\nmislearnt\nmisled\nmislie\nmislies\nmislight\nmislighted\nmislighting\nmislights\nmislike\nmisliked\nmisliker\nmislikers\nmislikes\nmisliking\nmislit\nmislive\nmislived\nmislives\nmisliving\nmislodge\nmislodged\nmislodges\nmislodging\nmislying\nmismanage\nmismanaged\nmismanagement\nmismanagements\nmismanages\nmismanaging\nmismark\nmismarked\nmismarking\nmismarks\nmismatch\nmismatched\nmismatches\nmismatching\nmismate\nmismated\nmismates\nmismating\nmismeet\nmismeeting\nmismeets\nmismet\nmismoshes\nmismove\nmismoved\nmismoves\nmismoving\nmisname\nmisnamed\nmisnames\nmisnaming\nmisnomer\nmisnomers\nmiso\nmisogamies\nmisogamy\nmisogynies\nmisogynist\nmisogynistic\nmisogynists\nmisogyny\nmisologies\nmisology\nmisos\nmispage\nmispaged\nmispages\nmispaging\nmispaint\nmispainted\nmispainting\nmispaints\nmisparse\nmisparsed\nmisparses\nmisparsing\nmispart\nmisparted\nmisparting\nmisparts\nmispatch\nmispatched\nmispatches\nmispatching\nmispen\nmispenned\nmispenning\nmispens\nmisplace\nmisplaced\nmisplacement\nmisplacements\nmisplaces\nmisplacing\nmisplant\nmisplanted\nmisplanting\nmisplants\nmisplay\nmisplayed\nmisplaying\nmisplays\nmisplead\nmispleaded\nmispleading\nmispleads\nmispled\nmispoint\nmispointed\nmispointing\nmispoints\nmispoise\nmispoised\nmispoises\nmispoising\nmisprint\nmisprinted\nmisprinting\nmisprints\nmisprision\nmisprisions\nmisprize\nmisprized\nmisprizes\nmisprizing\nmispronounce\nmispronounced\nmispronounces\nmispronouncing\nmispronunciation\nmispronunciations\nmisquotation\nmisquotations\nmisquote\nmisquoted\nmisquotes\nmisquoting\nmisraise\nmisraised\nmisraises\nmisraising\nmisrate\nmisrated\nmisrates\nmisrating\nmisread\nmisreaded\nmisreading\nmisreads\nmisrefer\nmisreferred\nmisreferring\nmisrefers\nmisrelied\nmisrelies\nmisrely\nmisrelying\nmisrepresent\nmisrepresentation\nmisrepresentations\nmisrepresentative\nmisrepresented\nmisrepresenting\nmisrepresents\nmisrule\nmisruled\nmisrules\nmisruling\nmiss\nmissaid\nmissal\nmissals\nmissay\nmissaying\nmissays\nmisseat\nmisseated\nmisseating\nmisseats\nmissed\nmissel\nmissels\nmissend\nmissending\nmissends\nmissense\nmissenses\nmissent\nmisses\nmisshape\nmisshaped\nmisshapen\nmisshapenly\nmisshapes\nmisshaping\nmisshod\nmissies\nmissile\nmissileries\nmissilery\nmissiles\nmissilries\nmissilry\nmissing\nmission\nmissionaries\nmissionary\nmissioned\nmissioning\nmissions\nmissis\nmissises\nmissismissis\nmissive\nmissives\nmissort\nmissorted\nmissorting\nmissorts\nmissound\nmissounded\nmissounding\nmissounds\nmissout\nmissouts\nmisspace\nmisspaced\nmisspaces\nmisspacing\nmisspeak\nmisspeaking\nmisspeaks\nmisspell\nmisspelled\nmisspelling\nmisspellings\nmisspells\nmisspelt\nmisspend\nmisspending\nmisspends\nmisspent\nmisspoke\nmisspoken\nmisstart\nmisstarted\nmisstarting\nmisstarts\nmisstate\nmisstated\nmisstatement\nmisstatements\nmisstates\nmisstating\nmissteer\nmissteered\nmissteering\nmissteers\nmisstep\nmissteps\nmisstop\nmisstopped\nmisstopping\nmisstops\nmisstyle\nmisstyled\nmisstyles\nmisstyling\nmissuit\nmissuited\nmissuiting\nmissuits\nmissus\nmissuses\nmissy\nmist\nmistakable\nmistake\nmistaken\nmistakenly\nmistaker\nmistakers\nmistakes\nmistaking\nmistaught\nmistbow\nmistbows\nmisteach\nmisteaches\nmisteaching\nmisted\nmistend\nmistended\nmistending\nmistends\nmister\nmisterm\nmistermed\nmisterming\nmisterms\nmisters\nmisteuk\nmisthink\nmisthinking\nmisthinks\nmisthought\nmisthrew\nmisthrow\nmisthrowing\nmisthrown\nmisthrows\nmistier\nmistiest\nmistily\nmistime\nmistimed\nmistimes\nmistiming\nmistiness\nmisting\nmistitle\nmistitled\nmistitles\nmistitling\nmistletoe\nmistletoes\nmistook\nmistouch\nmistouched\nmistouches\nmistouching\nmistrace\nmistraced\nmistraces\nmistracing\nmistral\nmistrals\nmistreat\nmistreated\nmistreating\nmistreatment\nmistreats\nmistress\nmistresses\nmistrial\nmistrials\nmistrust\nmistrusted\nmistrustful\nmistrustfully\nmistrustfulness\nmistrusting\nmistrusts\nmistryst\nmistrysted\nmistrysting\nmistrysts\nmists\nmistune\nmistuned\nmistunes\nmistuning\nmistutor\nmistutored\nmistutoring\nmistutors\nmisty\nmistype\nmistyped\nmistypes\nmistyping\nmisunderstand\nmisunderstanding\nmisunderstandings\nmisunderstands\nmisunderstood\nmisunion\nmisunions\nmisusage\nmisusages\nmisuse\nmisused\nmisuser\nmisusers\nmisuses\nmisusing\nmisvalue\nmisvalued\nmisvalues\nmisvaluing\nmisword\nmisworded\nmiswording\nmiswords\nmiswrit\nmiswrite\nmiswrites\nmiswriting\nmiswritten\nmiswrote\nmisyoke\nmisyoked\nmisyokes\nmisyoking\nmite\nmiter\nmitered\nmiterer\nmiterers\nmitering\nmiters\nmites\nmither\nmithers\nmiticide\nmiticides\nmitier\nmitiest\nmitigate\nmitigated\nmitigates\nmitigating\nmitigation\nmitigations\nmitigative\nmitigatory\nmitis\nmitises\nmitogen\nmitogens\nmitoses\nmitosis\nmitotic\nmitral\nmitre\nmitred\nmitres\nmitring\nmitsvah\nmitsvahs\nmitsvoth\nmitt\nmitten\nmittens\nmittimus\nmittimuses\nmitts\nmity\nmitzvah\nmitzvahs\nmitzvoth\nmix\nmixable\nmixed\nmixer\nmixers\nmixes\nmixible\nmixing\nmixologies\nmixology\nmixt\nmixture\nmixtures\nmixup\nmixups\nmizen\nmizens\nmizzen\nmizzenmast\nmizzenmasts\nmizzens\nmizzle\nmizzled\nmizzles\nmizzling\nmizzly\nmm\nmnemonic\nmnemonically\nmnemonics\nmo\nmoa\nmoan\nmoaned\nmoanful\nmoaning\nmoaningly\nmoans\nmoas\nmoat\nmoated\nmoating\nmoatlike\nmoats\nmob\nmobbed\nmobber\nmobbers\nmobbing\nmobbish\nmobcap\nmobcaps\nmobile\nmobiles\nmobilise\nmobilised\nmobilises\nmobilising\nmobilities\nmobility\nmobilization\nmobilizations\nmobilize\nmobilized\nmobilizes\nmobilizing\nmobocracies\nmobocracy\nmobocrat\nmobocratic\nmobocrats\nmobs\nmobster\nmobsters\nmoccasin\nmoccasins\nmocha\nmochas\nmochila\nmochilas\nmock\nmockable\nmocked\nmocker\nmockeries\nmockers\nmockery\nmocking\nmockingbird\nmockingbirds\nmockingly\nmocks\nmockup\nmockups\nmod\nmodal\nmodalities\nmodality\nmodally\nmode\nmodel\nmodeled\nmodeler\nmodelers\nmodeling\nmodelings\nmodelled\nmodeller\nmodellers\nmodelling\nmodels\nmodem\nmoderate\nmoderated\nmoderately\nmoderateness\nmoderates\nmoderating\nmoderation\nmoderations\nmoderato\nmoderator\nmoderators\nmoderatos\nmodern\nmoderner\nmodernest\nmodernism\nmodernisms\nmodernist\nmodernistic\nmodernists\nmodernities\nmodernity\nmodernization\nmodernizations\nmodernize\nmodernized\nmodernizer\nmodernizers\nmodernizes\nmodernizing\nmodernly\nmodernness\nmoderns\nmodes\nmodest\nmodester\nmodestest\nmodesties\nmodestly\nmodesty\nmodi\nmodica\nmodicum\nmodicums\nmodifiability\nmodifiable\nmodification\nmodifications\nmodified\nmodifier\nmodifiers\nmodifies\nmodify\nmodifying\nmodioli\nmodiolus\nmodish\nmodishly\nmodishness\nmodiste\nmodistes\nmods\nmodulability\nmodular\nmodularities\nmodularity\nmodularized\nmodularly\nmodulate\nmodulated\nmodulates\nmodulating\nmodulation\nmodulations\nmodulator\nmodulators\nmodulatory\nmodule\nmodules\nmoduli\nmodulo\nmodulus\nmodus\nmofette\nmofettes\nmoffette\nmoffettes\nmog\nmogged\nmogging\nmogs\nmogul\nmoguls\nmohair\nmohairs\nmohalim\nmohel\nmohels\nmohur\nmohurs\nmoidore\nmoidores\nmoieties\nmoiety\nmoil\nmoiled\nmoiler\nmoilers\nmoiling\nmoils\nmoira\nmoirai\nmoire\nmoires\nmoist\nmoisten\nmoistened\nmoistener\nmoisteners\nmoistening\nmoistens\nmoister\nmoistest\nmoistful\nmoistly\nmoistness\nmoisture\nmoistures\nmoisturize\nmoisturized\nmoisturizer\nmoisturizers\nmoisturizes\nmoisturizing\nmojarra\nmojarras\nmojo\nmojos\nmoke\nmokes\nmol\nmola\nmolal\nmolalities\nmolality\nmolar\nmolarities\nmolarity\nmolars\nmolas\nmolasses\nmolasseses\nmold\nmoldable\nmoldboard\nmolded\nmolder\nmoldered\nmoldering\nmolders\nmoldier\nmoldiest\nmoldiness\nmolding\nmoldings\nmolds\nmoldwarp\nmoldwarps\nmoldy\nmole\nmolecular\nmolecularly\nmolecule\nmolecules\nmolehill\nmolehills\nmoles\nmoleskin\nmoleskins\nmolest\nmolestation\nmolestations\nmolested\nmolester\nmolesters\nmolesting\nmolests\nmolies\nmoline\nmoll\nmollah\nmollahs\nmollie\nmollies\nmollification\nmollifications\nmollified\nmollifies\nmollify\nmollifying\nmolls\nmollusc\nmolluscan\nmolluscans\nmolluscs\nmollusk\nmollusks\nmolly\nmollycoddle\nmollycoddled\nmollycoddles\nmollycoddling\nmoloch\nmolochs\nmols\nmolt\nmolted\nmolten\nmoltenly\nmolter\nmolters\nmolting\nmolto\nmolts\nmoly\nmolybdenum\nmolybdenums\nmolybdic\nmom\nmome\nmoment\nmomenta\nmomentarily\nmomentariness\nmomentary\nmomently\nmomento\nmomentoes\nmomentos\nmomentous\nmomentousness\nmoments\nmomentum\nmomentums\nmomes\nmomi\nmomism\nmomisms\nmomma\nmommas\nmommies\nmommy\nmoms\nmomus\nmomuses\nmon\nmonachal\nmonacid\nmonacids\nmonad\nmonadal\nmonades\nmonadic\nmonadism\nmonadisms\nmonads\nmonandries\nmonandry\nmonarch\nmonarchal\nmonarchial\nmonarchical\nmonarchically\nmonarchies\nmonarchism\nmonarchisms\nmonarchist\nmonarchists\nmonarchs\nmonarchy\nmonarda\nmonardas\nmonas\nmonasteries\nmonastery\nmonastic\nmonastically\nmonasticism\nmonasticisms\nmonastics\nmonaural\nmonaurally\nmonaxial\nmonazite\nmonazites\nmonde\nmondes\nmondo\nmondos\nmonecian\nmonetarily\nmonetarist\nmonetarists\nmonetary\nmonetise\nmonetised\nmonetises\nmonetising\nmonetization\nmonetizations\nmonetize\nmonetized\nmonetizes\nmonetizing\nmoney\nmoneybag\nmoneybags\nmoneyed\nmoneyer\nmoneyers\nmoneylender\nmoneylenders\nmoneys\nmongeese\nmonger\nmongered\nmongering\nmongers\nmongo\nmongoe\nmongoes\nmongol\nmongolianism\nmongolism\nmongols\nmongoose\nmongooses\nmongos\nmongrel\nmongrelize\nmongrelized\nmongrelizes\nmongrelizing\nmongrels\nmongst\nmonicker\nmonickers\nmonie\nmonied\nmonies\nmoniker\nmonikers\nmonish\nmonished\nmonishes\nmonishing\nmonism\nmonisms\nmonist\nmonistic\nmonistical\nmonists\nmonition\nmonitions\nmonitive\nmonitor\nmonitored\nmonitorial\nmonitories\nmonitoring\nmonitors\nmonitory\nmonk\nmonkeries\nmonkery\nmonkey\nmonkeyed\nmonkeying\nmonkeys\nmonkeyshines\nmonkfish\nmonkfishes\nmonkhood\nmonkhoods\nmonkish\nmonks\nmono\nmonoacid\nmonoacids\nmonocarp\nmonocarps\nmonochromatic\nmonochromatically\nmonochromaticities\nmonochromaticity\nmonochrome\nmonochromes\nmonochromic\nmonochromist\nmonochromists\nmonocle\nmonocled\nmonocles\nmonocot\nmonocots\nmonocrat\nmonocrats\nmonocular\nmonocularly\nmonocyte\nmonocytes\nmonodic\nmonodies\nmonodist\nmonodists\nmonodrama\nmonodramas\nmonody\nmonoecies\nmonoecy\nmonofil\nmonofils\nmonofuel\nmonofuels\nmonogamic\nmonogamies\nmonogamist\nmonogamists\nmonogamous\nmonogamously\nmonogamy\nmonogenies\nmonogeny\nmonogerm\nmonogram\nmonogramed\nmonograming\nmonogrammatic\nmonogrammed\nmonogramming\nmonograms\nmonograph\nmonographic\nmonographs\nmonogynies\nmonogynous\nmonogyny\nmonolingual\nmonolith\nmonolithic\nmonoliths\nmonolog\nmonologies\nmonologist\nmonologists\nmonologs\nmonologue\nmonologues\nmonologuist\nmonologuists\nmonology\nmonomania\nmonomaniac\nmonomaniacal\nmonomaniacs\nmonomanias\nmonomer\nmonomeric\nmonomers\nmonometallist\nmonometallists\nmonomial\nmonomials\nmononucleosis\nmonophonic\nmonophonically\nmonoplane\nmonoplanes\nmonopode\nmonopodes\nmonopodies\nmonopody\nmonopole\nmonopoles\nmonopolies\nmonopolist\nmonopolistic\nmonopolists\nmonopolization\nmonopolizations\nmonopolize\nmonopolized\nmonopolizer\nmonopolizers\nmonopolizes\nmonopolizing\nmonopoly\nmonorail\nmonorails\nmonos\nmonosome\nmonosomes\nmonosyllabic\nmonosyllabically\nmonosyllable\nmonosyllables\nmonotheism\nmonotheisms\nmonotheist\nmonotheistic\nmonotheistical\nmonotheistically\nmonotheists\nmonotint\nmonotints\nmonotone\nmonotones\nmonotonic\nmonotonically\nmonotonies\nmonotonous\nmonotonously\nmonotonousness\nmonotony\nmonotype\nmonotypes\nmonoxide\nmonoxides\nmons\nmonsieur\nmonsignor\nmonsignori\nmonsignors\nmonsoon\nmonsoonal\nmonsoons\nmonster\nmonsters\nmonstrosities\nmonstrosity\nmonstrous\nmonstrously\nmonstrousness\nmontage\nmontaged\nmontages\nmontaging\nmontane\nmontanes\nmonte\nmonteith\nmonteiths\nmontero\nmonteros\nmontes\nmonth\nmonthlies\nmonthly\nmonths\nmonument\nmonumental\nmonumentalities\nmonumentality\nmonumentalize\nmonumentalized\nmonumentalizes\nmonumentalizing\nmonumentally\nmonuments\nmonuron\nmonurons\nmony\nmoo\nmooch\nmooched\nmoocher\nmoochers\nmooches\nmooching\nmood\nmoodier\nmoodiest\nmoodily\nmoodiness\nmoods\nmoody\nmooed\nmooing\nmool\nmoola\nmoolah\nmoolahs\nmoolas\nmooley\nmooleys\nmools\nmoon\nmoonbeam\nmoonbeams\nmoonbow\nmoonbows\nmooncalf\nmooncalves\nmooned\nmooneye\nmooneyes\nmoonfish\nmoonfishes\nmoonier\nmooniest\nmoonily\nmooning\nmoonish\nmoonless\nmoonlet\nmoonlets\nmoonlight\nmoonlighted\nmoonlighter\nmoonlighters\nmoonlighting\nmoonlights\nmoonlike\nmoonlit\nmoonrise\nmoonrises\nmoons\nmoonsail\nmoonsails\nmoonscape\nmoonseed\nmoonseeds\nmoonset\nmoonsets\nmoonshine\nmoonshot\nmoonshots\nmoonstone\nmoonstones\nmoonstruck\nmoonward\nmoonwort\nmoonworts\nmoony\nmoor\nmoorage\nmoorages\nmoored\nmoorfowl\nmoorfowls\nmoorhen\nmoorhens\nmoorier\nmooriest\nmooring\nmoorings\nmoorish\nmoorland\nmoorlands\nmoors\nmoorwort\nmoorworts\nmoory\nmoos\nmoose\nmoot\nmooted\nmooter\nmooters\nmooting\nmoots\nmop\nmopboard\nmopboards\nmope\nmoped\nmopeds\nmoper\nmopers\nmopes\nmopey\nmoping\nmopingly\nmopish\nmopishly\nmopoke\nmopokes\nmopped\nmopper\nmoppers\nmoppet\nmoppets\nmopping\nmops\nmopy\nmoquette\nmoquettes\nmor\nmora\nmorae\nmorainal\nmoraine\nmoraines\nmorainic\nmoral\nmorale\nmorales\nmoralise\nmoralised\nmoralises\nmoralising\nmoralism\nmoralisms\nmoralist\nmoralistic\nmoralistically\nmoralists\nmoralities\nmorality\nmoralization\nmoralizations\nmoralize\nmoralized\nmoralizer\nmoralizers\nmoralizes\nmoralizing\nmorally\nmorals\nmoras\nmorass\nmorasses\nmorassy\nmoratoria\nmoratorium\nmoratoriums\nmoratory\nmoray\nmorays\nmorbid\nmorbidities\nmorbidity\nmorbidly\nmorbidness\nmorbific\nmorbilli\nmorceau\nmorceaux\nmordancies\nmordancy\nmordant\nmordanted\nmordanting\nmordantly\nmordants\nmordent\nmordents\nmore\nmoreen\nmoreens\nmorel\nmorelle\nmorelles\nmorello\nmorellos\nmorels\nmoreover\nmores\nmoresque\nmoresques\nmorganatic\nmorgen\nmorgens\nmorgue\nmorgues\nmoribund\nmoribundities\nmoribundity\nmorion\nmorions\nmorn\nmorning\nmornings\nmorns\nmorocco\nmoroccos\nmoron\nmoronic\nmoronically\nmoronism\nmoronisms\nmoronities\nmoronity\nmorons\nmorose\nmorosely\nmoroseness\nmorosities\nmorosity\nmorph\nmorpheme\nmorphemes\nmorphemics\nmorphia\nmorphias\nmorphic\nmorphin\nmorphine\nmorphines\nmorphins\nmorpho\nmorphological\nmorphologically\nmorphologies\nmorphologist\nmorphologists\nmorphology\nmorphos\nmorphs\nmorrion\nmorrions\nmorris\nmorrises\nmorro\nmorros\nmorrow\nmorrows\nmors\nmorse\nmorsel\nmorseled\nmorseling\nmorselled\nmorselling\nmorsels\nmort\nmortal\nmortalities\nmortality\nmortally\nmortals\nmortar\nmortarboard\nmortarboards\nmortared\nmortaring\nmortarless\nmortars\nmortary\nmortgage\nmortgaged\nmortgagee\nmortgagees\nmortgages\nmortgaging\nmortgagor\nmortgagors\nmortice\nmorticed\nmortices\nmortician\nmorticians\nmorticing\nmortification\nmortifications\nmortified\nmortifies\nmortify\nmortifying\nmortifyingly\nmortise\nmortised\nmortiser\nmortisers\nmortises\nmortising\nmortmain\nmortmains\nmorts\nmortuaries\nmortuary\nmorula\nmorulae\nmorular\nmorulas\nmos\nmosaic\nmosaicked\nmosaicking\nmosaics\nmoschate\nmosey\nmoseyed\nmoseying\nmoseys\nmoshav\nmoshavim\nmosk\nmosks\nmosque\nmosques\nmosquito\nmosquitoes\nmosquitos\nmoss\nmossback\nmossbacks\nmossed\nmosser\nmossers\nmosses\nmossier\nmossiest\nmossing\nmosslike\nmosso\nmossy\nmost\nmoste\nmostly\nmosts\nmot\nmote\nmotel\nmotels\nmotes\nmotet\nmotets\nmotey\nmoth\nmothball\nmothballed\nmothballing\nmothballs\nmother\nmothered\nmotherhood\nmothering\nmotherland\nmotherlands\nmotherless\nmotherly\nmothers\nmothery\nmothier\nmothiest\nmothproof\nmothproofed\nmothproofing\nmothproofs\nmoths\nmothy\nmoties\nmotif\nmotifs\nmotile\nmotiles\nmotilities\nmotility\nmotion\nmotional\nmotioned\nmotioner\nmotioners\nmotioning\nmotionless\nmotionlessly\nmotionlessness\nmotions\nmotivate\nmotivated\nmotivates\nmotivating\nmotivation\nmotivational\nmotivations\nmotivative\nmotivator\nmotivators\nmotive\nmotived\nmotiveless\nmotivelessly\nmotives\nmotivic\nmotiving\nmotivities\nmotivity\nmotley\nmotleyer\nmotleyest\nmotleys\nmotlier\nmotliest\nmotmot\nmotmots\nmotor\nmotorbike\nmotorbikes\nmotorboat\nmotorboats\nmotorbus\nmotorbuses\nmotorbusses\nmotorcade\nmotorcades\nmotorcar\nmotorcars\nmotorcycle\nmotorcycled\nmotorcycles\nmotorcycling\nmotorcyclist\nmotorcyclists\nmotordrome\nmotordromes\nmotored\nmotoric\nmotoring\nmotorings\nmotorise\nmotorised\nmotorises\nmotorising\nmotorist\nmotorists\nmotorization\nmotorizations\nmotorize\nmotorized\nmotorizes\nmotorizing\nmotorman\nmotormen\nmotors\nmotortruck\nmotortrucks\nmotorway\nmotorways\nmots\nmott\nmotte\nmottes\nmottle\nmottled\nmottler\nmottlers\nmottles\nmottling\nmotto\nmottoes\nmottos\nmotts\nmouch\nmouched\nmouches\nmouching\nmouchoir\nmouchoirs\nmoue\nmoues\nmoufflon\nmoufflons\nmouflon\nmouflons\nmouille\nmoujik\nmoujiks\nmoulage\nmoulages\nmould\nmoulded\nmoulder\nmouldered\nmouldering\nmoulders\nmouldier\nmouldiest\nmoulding\nmouldings\nmoulds\nmouldy\nmoulin\nmoulins\nmoult\nmoulted\nmoulter\nmoulters\nmoulting\nmoults\nmound\nmounded\nmounding\nmounds\nmount\nmountable\nmountain\nmountaineer\nmountaineering\nmountaineers\nmountainous\nmountainousness\nmountains\nmountebank\nmountebanks\nmounted\nmounter\nmounters\nmounting\nmountings\nmounts\nmourn\nmourned\nmourner\nmourners\nmournful\nmournfuller\nmournfullest\nmournfully\nmournfulness\nmourning\nmournings\nmourns\nmouse\nmoused\nmouser\nmousers\nmouses\nmousetrap\nmousetraps\nmousey\nmousier\nmousiest\nmousily\nmousing\nmousings\nmoussaka\nmoussakas\nmousse\nmousseline\nmousselines\nmousses\nmoustache\nmoustached\nmoustaches\nmousy\nmouth\nmouthed\nmouther\nmouthers\nmouthful\nmouthfuls\nmouthier\nmouthiest\nmouthily\nmouthing\nmouthpiece\nmouthpieces\nmouths\nmouthwash\nmouthwashes\nmouthy\nmouton\nmoutons\nmovabilities\nmovability\nmovable\nmovableness\nmovables\nmovably\nmove\nmoveabilities\nmoveability\nmoveable\nmoveableness\nmoveables\nmoveably\nmoved\nmoveless\nmovelessly\nmovelessness\nmovement\nmovements\nmover\nmovers\nmoves\nmovie\nmoviedom\nmoviedoms\nmoviegoer\nmoviegoers\nmovies\nmoving\nmovingly\nmow\nmowed\nmower\nmowers\nmowing\nmown\nmows\nmoxa\nmoxas\nmoxie\nmoxies\nmozetta\nmozettas\nmozette\nmozo\nmozos\nmozzarella\nmozzarellas\nmozzetta\nmozzettas\nmozzette\nmridanga\nmridangas\nmu\nmuch\nmuches\nmuchness\nmuchnesses\nmucid\nmucidities\nmucidity\nmucilage\nmucilages\nmucilaginous\nmucin\nmucinoid\nmucinous\nmucins\nmuck\nmucked\nmucker\nmuckers\nmuckier\nmuckiest\nmuckily\nmucking\nmuckle\nmuckles\nmuckluck\nmucklucks\nmuckrake\nmuckraked\nmuckraker\nmuckrakers\nmuckrakes\nmuckraking\nmucks\nmuckworm\nmuckworms\nmucky\nmucluc\nmuclucs\nmucoid\nmucoidal\nmucoids\nmucor\nmucors\nmucosa\nmucosae\nmucosal\nmucosas\nmucose\nmucosities\nmucosity\nmucous\nmucro\nmucrones\nmucus\nmucuses\nmud\nmudcap\nmudcapped\nmudcapping\nmudcaps\nmudded\nmudder\nmudders\nmuddied\nmuddier\nmuddies\nmuddiest\nmuddily\nmuddiness\nmudding\nmuddle\nmuddled\nmuddleheaded\nmuddler\nmuddlers\nmuddles\nmuddling\nmuddy\nmuddying\nmudfish\nmudfishes\nmudguard\nmudguards\nmudlark\nmudlarks\nmudpuppies\nmudpuppy\nmudra\nmudras\nmudrock\nmudrocks\nmudroom\nmudrooms\nmuds\nmudsill\nmudsills\nmudslinger\nmudslingers\nmudslinging\nmudslingings\nmudstone\nmudstones\nmueddin\nmueddins\nmuenster\nmuensters\nmuezzin\nmuezzins\nmuff\nmuffed\nmuffin\nmuffing\nmuffins\nmuffle\nmuffled\nmuffler\nmufflers\nmuffles\nmuffling\nmuffs\nmufti\nmuftis\nmug\nmugg\nmuggar\nmuggars\nmugged\nmugger\nmuggers\nmuggier\nmuggiest\nmuggily\nmugginess\nmugging\nmuggings\nmuggins\nmuggs\nmuggur\nmuggurs\nmuggy\nmugs\nmugwort\nmugworts\nmugwump\nmugwumps\nmuhlies\nmuhly\nmujik\nmujiks\nmukluk\nmukluks\nmulatto\nmulattoes\nmulattos\nmulberries\nmulberry\nmulch\nmulched\nmulches\nmulching\nmulct\nmulcted\nmulcting\nmulcts\nmule\nmuled\nmules\nmuleta\nmuletas\nmuleteer\nmuleteers\nmuley\nmuleys\nmuling\nmulish\nmulishly\nmulishness\nmull\nmulla\nmullah\nmullahs\nmullas\nmulled\nmullein\nmulleins\nmullen\nmullens\nmuller\nmullers\nmullet\nmullets\nmulley\nmulleys\nmulligan\nmulligans\nmulling\nmullion\nmullioned\nmullioning\nmullions\nmullite\nmullites\nmullock\nmullocks\nmullocky\nmulls\nmulticolored\nmultidimensional\nmultidimensionality\nmultifaceted\nmultifamily\nmultifarious\nmultifariousness\nmultifid\nmultiform\nmultiformities\nmultiformity\nmultijet\nmultilateral\nmultilaterally\nmultilevel\nmultilingual\nmultilingualism\nmultimedia\nmultimillionaire\nmultinational\nmultinationals\nmultiped\nmultipeds\nmultiple\nmultiples\nmultiplex\nmultiplexed\nmultiplexer\nmultiplexers\nmultiplexes\nmultiplexing\nmultiplexor\nmultiplexors\nmultiplicand\nmultiplicands\nmultiplication\nmultiplications\nmultiplicative\nmultiplicatively\nmultiplicities\nmultiplicity\nmultiplied\nmultiplier\nmultipliers\nmultiplies\nmultiply\nmultiplying\nmultiprocessing\nmultiprocessor\nmultiprocessors\nmultiprogramming\nmultipurpose\nmultiracial\nmultisense\nmultistage\nmultistory\nmultitude\nmultitudes\nmultitudinous\nmultitudinously\nmultitudinousness\nmultiversities\nmultiversity\nmultivitamin\nmultivitamins\nmulture\nmultures\nmum\nmumble\nmumbled\nmumbler\nmumblers\nmumbles\nmumbling\nmumm\nmummed\nmummer\nmummeries\nmummers\nmummery\nmummied\nmummies\nmummification\nmummifications\nmummified\nmummifies\nmummify\nmummifying\nmumming\nmumms\nmummy\nmummying\nmump\nmumped\nmumper\nmumpers\nmumping\nmumps\nmums\nmumu\nmumus\nmun\nmunch\nmunched\nmuncher\nmunchers\nmunches\nmunching\nmundane\nmundanely\nmundungo\nmundungos\nmungo\nmungoose\nmungooses\nmungos\nmunicipal\nmunicipalities\nmunicipality\nmunicipalization\nmunicipalizations\nmunicipalize\nmunicipalized\nmunicipalizes\nmunicipalizing\nmunicipally\nmunicipals\nmunificence\nmunificent\nmunificently\nmuniment\nmuniments\nmunition\nmunitioned\nmunitioning\nmunitions\nmunnion\nmunnions\nmuns\nmunster\nmunsters\nmuntin\nmunting\nmuntings\nmuntins\nmuntjac\nmuntjacs\nmuntjak\nmuntjaks\nmuon\nmuonic\nmuons\nmura\nmuraenid\nmuraenids\nmural\nmuralist\nmuralists\nmurals\nmuras\nmurder\nmurdered\nmurderee\nmurderees\nmurderer\nmurderers\nmurderess\nmurderesses\nmurdering\nmurderous\nmurderously\nmurderousness\nmurders\nmure\nmured\nmurein\nmureins\nmures\nmurex\nmurexes\nmuriate\nmuriated\nmuriates\nmuricate\nmurices\nmurid\nmurids\nmurine\nmurines\nmuring\nmurk\nmurker\nmurkest\nmurkier\nmurkiest\nmurkily\nmurkiness\nmurkly\nmurks\nmurky\nmurmur\nmurmured\nmurmurer\nmurmurers\nmurmuring\nmurmurous\nmurmurously\nmurmurs\nmurphies\nmurphy\nmurr\nmurra\nmurrain\nmurrains\nmurras\nmurre\nmurrelet\nmurrelets\nmurres\nmurrey\nmurreys\nmurrha\nmurrhas\nmurrhine\nmurries\nmurrine\nmurrs\nmurry\nmurther\nmurthered\nmurthering\nmurthers\nmus\nmusca\nmuscadel\nmuscadels\nmuscadine\nmuscadines\nmuscae\nmuscat\nmuscatel\nmuscatels\nmuscats\nmuscid\nmuscids\nmuscle\nmuscled\nmuscles\nmuscling\nmuscly\nmuscovite\nmuscular\nmuscularity\nmuscularly\nmusculature\nmusculatures\nmuse\nmused\nmuseful\nmuser\nmusers\nmuses\nmusette\nmusettes\nmuseum\nmuseums\nmush\nmushed\nmusher\nmushers\nmushes\nmushier\nmushiest\nmushily\nmushiness\nmushing\nmushroom\nmushroomed\nmushrooming\nmushrooms\nmushy\nmusic\nmusical\nmusicale\nmusicales\nmusicality\nmusically\nmusicals\nmusician\nmusicians\nmusicianship\nmusicological\nmusicologist\nmusicologists\nmusicology\nmusics\nmusing\nmusingly\nmusings\nmusjid\nmusjids\nmusk\nmuskeg\nmuskegs\nmusket\nmusketeer\nmusketeers\nmusketries\nmusketry\nmuskets\nmuskie\nmuskier\nmuskies\nmuskiest\nmuskily\nmuskiness\nmuskit\nmuskits\nmuskmelon\nmuskmelons\nmuskrat\nmuskrats\nmusks\nmusky\nmuslin\nmuslins\nmuspike\nmuspikes\nmusquash\nmusquashes\nmuss\nmussed\nmussel\nmussels\nmusses\nmussier\nmussiest\nmussily\nmussiness\nmussing\nmussy\nmust\nmustache\nmustached\nmustaches\nmustang\nmustangs\nmustard\nmustards\nmusted\nmustee\nmustees\nmuster\nmustered\nmustering\nmusters\nmusth\nmusths\nmustier\nmustiest\nmustily\nmustiness\nmusting\nmusts\nmusty\nmut\nmutabilities\nmutability\nmutable\nmutably\nmutagen\nmutagens\nmutant\nmutants\nmutase\nmutases\nmutate\nmutated\nmutates\nmutating\nmutation\nmutational\nmutations\nmutative\nmutch\nmutches\nmutchkin\nmutchkins\nmute\nmuted\nmutedly\nmutely\nmuteness\nmutenesses\nmuter\nmutes\nmutest\nmuticous\nmutilate\nmutilated\nmutilates\nmutilating\nmutilation\nmutilations\nmutilator\nmutilators\nmutine\nmutined\nmutineer\nmutineered\nmutineering\nmutineers\nmutines\nmuting\nmutinied\nmutinies\nmutining\nmutinous\nmutinously\nmutiny\nmutinying\nmutism\nmutisms\nmuton\nmuts\nmutt\nmutter\nmuttered\nmutterer\nmutterers\nmuttering\nmutters\nmutton\nmuttonchops\nmuttons\nmuttony\nmutts\nmutual\nmutualities\nmutuality\nmutually\nmutuel\nmutuels\nmutular\nmutule\nmutules\nmuumuu\nmuumuus\nmuzhik\nmuzhiks\nmuzjik\nmuzjiks\nmuzzier\nmuzziest\nmuzzily\nmuzzle\nmuzzled\nmuzzler\nmuzzlers\nmuzzles\nmuzzling\nmuzzy\nmy\nmyalgia\nmyalgias\nmyalgic\nmyases\nmyasis\nmycele\nmyceles\nmycelia\nmycelial\nmycelian\nmycelium\nmyceloid\nmycetoma\nmycetomas\nmycetomata\nmycological\nmycologies\nmycologist\nmycologists\nmycology\nmycoses\nmycosis\nmycotic\nmyelin\nmyeline\nmyelines\nmyelinic\nmyelins\nmyelitides\nmyelitis\nmyeloid\nmyeloma\nmyelomas\nmyelomata\nmyiases\nmyiasis\nmylonite\nmylonites\nmyna\nmynah\nmynahs\nmynas\nmynheer\nmynheers\nmyoblast\nmyoblasts\nmyogenic\nmyograph\nmyographs\nmyoid\nmyologic\nmyologies\nmyology\nmyoma\nmyomas\nmyomata\nmyopathies\nmyopathy\nmyope\nmyopes\nmyopia\nmyopias\nmyopic\nmyopically\nmyopies\nmyopy\nmyoscope\nmyoscopes\nmyoses\nmyosin\nmyosins\nmyosis\nmyosote\nmyosotes\nmyosotis\nmyosotises\nmyotic\nmyotics\nmyotome\nmyotomes\nmyotonia\nmyotonias\nmyotonic\nmyriad\nmyriads\nmyriapod\nmyriapods\nmyrica\nmyricas\nmyriopod\nmyriopods\nmyrmidon\nmyrmidons\nmyrrh\nmyrrhic\nmyrrhs\nmyrtle\nmyrtles\nmyself\nmysid\nmysost\nmysosts\nmystagog\nmystagogs\nmysteries\nmysterious\nmysteriously\nmysteriousness\nmystery\nmystic\nmystical\nmystically\nmysticism\nmysticisms\nmysticly\nmystics\nmystification\nmystifications\nmystified\nmystifies\nmystify\nmystifying\nmystifyingly\nmystique\nmystiques\nmyth\nmythic\nmythical\nmythically\nmythicize\nmythicized\nmythicizes\nmythicizing\nmythoi\nmythological\nmythologically\nmythologies\nmythologist\nmythologists\nmythologize\nmythologized\nmythologizes\nmythologizing\nmythology\nmythos\nmyths\nmyxedema\nmyxedemas\nmyxocyte\nmyxocytes\nmyxoid\nmyxoma\nmyxomas\nmyxomata\nna\nnab\nnabbed\nnabbing\nnabe\nnabes\nnabis\nnabob\nnaboberies\nnabobery\nnabobess\nnabobesses\nnabobism\nnabobisms\nnabobs\nnabs\nnacelle\nnacelles\nnacho\nnacre\nnacred\nnacreous\nnacres\nnadir\nnadiral\nnadirs\nnae\nnaething\nnaethings\nnaevi\nnaevoid\nnaevus\nnag\nnagana\nnaganas\nnagged\nnagger\nnaggers\nnagging\nnaggy\nnags\nnah\nnaiad\nnaiades\nnaiads\nnaif\nnaifs\nnail\nnailed\nnailer\nnailers\nnailfold\nnailfolds\nnailhead\nnailheads\nnailing\nnails\nnailset\nnailsets\nnainsook\nnainsooks\nnaira\nnaive\nnaively\nnaiveness\nnaiver\nnaives\nnaivest\nnaivete\nnaivetes\nnaiveties\nnaivety\nnaked\nnakeder\nnakedest\nnakedly\nnakedness\nnaled\nnaleds\nnaloxone\nnaloxones\nnam\nnamable\nname\nnameable\nnamed\nnameless\nnamelessly\nnamelessness\nnamely\nnameplate\nnameplates\nnamer\nnamers\nnames\nnamesake\nnamesakes\nnaming\nnana\nnanas\nnance\nnances\nnancy\nnandin\nnandins\nnanism\nnanisms\nnankeen\nnankeens\nnankin\nnankins\nnannie\nnannies\nnanny\nnanogram\nnanograms\nnanosecond\nnanoseconds\nnanowatt\nnanowatts\nnaoi\nnaos\nnap\nnapalm\nnapalmed\nnapalming\nnapalms\nnape\nnaperies\nnapery\nnapes\nnaphtha\nnaphthalene\nnaphthalenes\nnaphthalenic\nnaphthas\nnaphthol\nnaphthols\nnaphthyl\nnaphtol\nnaphtols\nnapiform\nnapkin\nnapkins\nnapless\nnapoleon\nnapoleons\nnappe\nnapped\nnapper\nnappers\nnappes\nnappie\nnappier\nnappies\nnappiest\nnapping\nnappy\nnaps\nnarc\nnarcein\nnarceine\nnarceines\nnarceins\nnarcism\nnarcisms\nnarcissi\nnarcissism\nnarcissist\nnarcissistic\nnarcissists\nnarcissus\nnarcissuses\nnarcist\nnarcists\nnarco\nnarcos\nnarcose\nnarcoses\nnarcosis\nnarcotic\nnarcotically\nnarcotics\nnarcotize\nnarcotized\nnarcotizes\nnarcotizing\nnarcs\nnard\nnardine\nnards\nnares\nnarghile\nnarghiles\nnargile\nnargileh\nnargilehs\nnargiles\nnarial\nnaric\nnarine\nnaris\nnark\nnarked\nnarking\nnarks\nnarky\nnarrate\nnarrated\nnarrater\nnarraters\nnarrates\nnarrating\nnarration\nnarrational\nnarrations\nnarrative\nnarratively\nnarratives\nnarrator\nnarrators\nnarrow\nnarrowed\nnarrower\nnarrowest\nnarrowing\nnarrowly\nnarrowness\nnarrows\nnarthex\nnarthexes\nnarwal\nnarwals\nnarwhal\nnarwhale\nnarwhales\nnarwhals\nnary\nnasal\nnasalise\nnasalised\nnasalises\nnasalising\nnasalities\nnasality\nnasalization\nnasalizations\nnasalize\nnasalized\nnasalizes\nnasalizing\nnasally\nnasals\nnascence\nnascences\nnascencies\nnascency\nnascent\nnasial\nnasion\nnasions\nnastic\nnastier\nnastiest\nnastily\nnastiness\nnasturtium\nnasturtiums\nnasty\nnatal\nnatalities\nnatality\nnatant\nnatantly\nnatation\nnatations\nnatatorial\nnatatorium\nnatatoriums\nnatatory\nnatch\nnates\nnathless\nnaties\nnation\nnational\nnationalism\nnationalisms\nnationalist\nnationalistic\nnationalistically\nnationalists\nnationalities\nnationality\nnationalization\nnationalizations\nnationalize\nnationalized\nnationalizes\nnationalizing\nnationally\nnationals\nnationhood\nnations\nnationwide\nnative\nnatively\nnativeness\nnatives\nnativism\nnativisms\nnativist\nnativistic\nnativists\nnativities\nnativity\nnatrium\nnatriums\nnatron\nnatrons\nnatter\nnattered\nnattering\nnatters\nnattier\nnattiest\nnattily\nnatty\nnatural\nnaturalism\nnaturalist\nnaturalistic\nnaturalistically\nnaturalists\nnaturalization\nnaturalizations\nnaturalize\nnaturalized\nnaturalizes\nnaturalizing\nnaturally\nnaturalness\nnaturals\nnature\nnatured\nnatures\nnaught\nnaughtier\nnaughtiest\nnaughtily\nnaughtiness\nnaughts\nnaughty\nnaumachies\nnaumachy\nnauplial\nnauplii\nnauplius\nnausea\nnauseant\nnauseants\nnauseas\nnauseate\nnauseated\nnauseates\nnauseating\nnauseatingly\nnauseous\nnauseously\nnauseousness\nnautch\nnautches\nnautical\nnautically\nnautili\nnautilus\nnautiluses\nnavaid\nnavaids\nnaval\nnavally\nnavar\nnavars\nnave\nnavel\nnavels\nnaves\nnavette\nnavettes\nnavicert\nnavicerts\nnavies\nnavigability\nnavigable\nnavigably\nnavigate\nnavigated\nnavigates\nnavigating\nnavigation\nnavigational\nnavigations\nnavigator\nnavigators\nnavvies\nnavvy\nnavy\nnaw\nnawab\nnawabs\nnay\nnays\nnazi\nnazified\nnazifies\nnazify\nnazifying\nnazis\nne\nneap\nneaps\nnear\nnearby\nneared\nnearer\nnearest\nnearing\nnearlier\nnearliest\nnearly\nnearness\nnearnesses\nnears\nnearsighted\nnearsightedly\nnearsightedness\nneat\nneaten\nneatened\nneatening\nneatens\nneater\nneatest\nneath\nneatherd\nneatherds\nneatly\nneatness\nneatnesses\nneats\nneb\nnebbish\nnebbishes\nnebs\nnebula\nnebulae\nnebular\nnebulas\nnebule\nnebulise\nnebulised\nnebulises\nnebulising\nnebulization\nnebulizations\nnebulize\nnebulized\nnebulizes\nnebulizing\nnebulose\nnebulosities\nnebulosity\nnebulous\nnebulously\nnebulousness\nnebuly\nnecessaries\nnecessarily\nnecessary\nnecessitarian\nnecessitarianism\nnecessitate\nnecessitated\nnecessitates\nnecessitating\nnecessitation\nnecessitations\nnecessities\nnecessitous\nnecessitously\nnecessitousness\nnecessity\nneck\nneckband\nneckbands\nnecked\nneckerchief\nneckerchiefs\nnecking\nneckings\nnecklace\nnecklaces\nneckless\nnecklike\nneckline\nnecklines\nnecks\nnecktie\nneckties\nneckwear\nneckwears\nnecrological\nnecrologies\nnecrologist\nnecrologists\nnecrology\nnecromancer\nnecromancers\nnecromancy\nnecromantic\nnecropsied\nnecropsies\nnecropsy\nnecropsying\nnecrose\nnecrosed\nnecroses\nnecrosing\nnecrosis\nnecrotic\nnectar\nnectaries\nnectarine\nnectarines\nnectars\nnectary\nnee\nneed\nneeded\nneeder\nneeders\nneedful\nneedfully\nneedfulness\nneedfuls\nneedier\nneediest\nneedily\nneediness\nneeding\nneedle\nneedled\nneedlepoint\nneedler\nneedlers\nneedles\nneedless\nneedlessly\nneedlessness\nneedlework\nneedling\nneedlings\nneeds\nneedy\nneem\nneems\nneep\nneeps\nnefarious\nnefariously\nnegate\nnegated\nnegater\nnegaters\nnegates\nnegating\nnegation\nnegational\nnegations\nnegative\nnegatived\nnegatively\nnegatives\nnegativing\nnegativism\nnegativist\nnegativistic\nnegativists\nnegativity\nnegaton\nnegatons\nnegator\nnegators\nnegatron\nnegatrons\nneglect\nneglected\nneglectful\nneglectfully\nneglectfulness\nneglecting\nneglects\nneglige\nnegligee\nnegligees\nnegligence\nnegligent\nnegligently\nnegliges\nnegligibility\nnegligible\nnegligibly\nnegotiability\nnegotiable\nnegotiant\nnegotiants\nnegotiate\nnegotiated\nnegotiates\nnegotiating\nnegotiation\nnegotiations\nnegotiator\nnegotiators\nnegroid\nnegroids\nnegus\nneguses\nneif\nneifs\nneigh\nneighbor\nneighbored\nneighborhood\nneighborhoods\nneighboring\nneighborliness\nneighborly\nneighbors\nneighed\nneighing\nneighs\nneist\nneither\nnekton\nnektonic\nnektons\nnelly\nnelson\nnelsons\nnelumbo\nnelumbos\nnema\nnemas\nnematic\nnematode\nnematodes\nnemeses\nnemesis\nnene\nneoclassic\nneoclassical\nneoclassicism\nneoclassicist\nneoclassicists\nneocolonial\nneocolonialism\nneocolonialist\nneolith\nneoliths\nneologic\nneologies\nneologism\nneologisms\nneologistic\nneology\nneomorph\nneomorphs\nneomycin\nneomycins\nneon\nneonatal\nneonatally\nneonate\nneonates\nneonatologist\nneonatologists\nneonatology\nneoned\nneons\nneophyte\nneophytes\nneoplasm\nneoplasms\nneoprene\nneoprenes\nneotenic\nneotenies\nneoteny\nneoteric\nneoterics\nneotype\nneotypes\nnepenthe\nnepenthes\nnephew\nnephews\nnephric\nnephrism\nnephrisms\nnephrite\nnephrites\nnephritic\nnephron\nnephrons\nnepotic\nnepotism\nnepotisms\nnepotist\nnepotistic\nnepotists\nnerd\nnerds\nnerdy\nnereid\nnereides\nnereids\nnereis\nneritic\nnerol\nneroli\nnerolis\nnerols\nnerts\nnertz\nnervate\nnerve\nnerved\nnerveless\nnervelessly\nnervelessness\nnerves\nnervier\nnerviest\nnervily\nnervine\nnervines\nnerviness\nnerving\nnervings\nnervous\nnervously\nnervousness\nnervule\nnervules\nnervure\nnervures\nnervy\nnescient\nnescients\nness\nnesses\nnest\nnested\nnester\nnesters\nnesting\nnestle\nnestled\nnestler\nnestlers\nnestles\nnestlike\nnestling\nnestlings\nnestor\nnestors\nnests\nnet\nnether\nnethermost\nnetless\nnetlike\nnetop\nnetops\nnets\nnetsuke\nnetsukes\nnett\nnettable\nnetted\nnetter\nnetters\nnettier\nnettiest\nnetting\nnettings\nnettle\nnettled\nnettler\nnettlers\nnettles\nnettlier\nnettliest\nnettling\nnettly\nnetts\nnetty\nnetwork\nnetworked\nnetworking\nnetworks\nneuk\nneuks\nneum\nneumatic\nneume\nneumes\nneumic\nneums\nneural\nneuralgia\nneuralgias\nneuralgic\nneurally\nneurasthenia\nneurasthenic\nneurasthenically\nneuraxon\nneuraxons\nneuritic\nneuritics\nneuritides\nneuritis\nneuritises\nneuroid\nneurological\nneurologically\nneurologist\nneurologists\nneurology\nneuroma\nneuromas\nneuromata\nneuron\nneuronal\nneurone\nneurones\nneuronic\nneurons\nneurosal\nneuroses\nneurosis\nneurotic\nneurotically\nneurotics\nneuston\nneustons\nneuter\nneutered\nneutering\nneuters\nneutral\nneutralism\nneutralist\nneutralists\nneutrality\nneutralization\nneutralizations\nneutralize\nneutralized\nneutralizer\nneutralizers\nneutralizes\nneutralizing\nneutrally\nneutrals\nneutrino\nneutrinos\nneutron\nneutrons\nneve\nnever\nnevermore\nnevertheless\nneves\nnevi\nnevoid\nnevus\nnew\nnewborn\nnewborns\nnewcomer\nnewcomers\nnewel\nnewels\nnewer\nnewest\nnewfangled\nnewfangledness\nnewfound\nnewie\nnewish\nnewly\nnewlywed\nnewlyweds\nnewmown\nnewness\nnewnesses\nnews\nnewsboy\nnewsboys\nnewscast\nnewscaster\nnewscasters\nnewscasts\nnewsdealer\nnewsdealers\nnewsier\nnewsies\nnewsiest\nnewsiness\nnewsless\nnewsletter\nnewsletters\nnewsman\nnewsmen\nnewspaper\nnewspaperman\nnewspapermen\nnewspapers\nnewspaperwoman\nnewspaperwomen\nnewspeak\nnewspeaks\nnewsprint\nnewsreel\nnewsreels\nnewsroom\nnewsrooms\nnewsstand\nnewsstands\nnewsworthy\nnewsy\nnewt\nnewton\nnewtons\nnewts\nnext\nnextdoor\nnexus\nnexuses\nngwee\nniacin\nniacins\nnib\nnibbed\nnibbing\nnibble\nnibbled\nnibbler\nnibblers\nnibbles\nnibbling\nniblick\nniblicks\nniblike\nnibs\nnicad\nnice\nnicely\nniceness\nnicenesses\nnicer\nnicest\nniceties\nnicety\nniche\nniched\nniches\nniching\nnick\nnicked\nnickel\nnickeled\nnickelic\nnickeling\nnickelled\nnickelling\nnickelodeon\nnickelodeons\nnickels\nnicker\nnickered\nnickering\nnickers\nnicking\nnickle\nnickles\nnicknack\nnicknacks\nnickname\nnicknamed\nnicknames\nnicknaming\nnicks\nnicol\nnicols\nnicotin\nnicotine\nnicotines\nnicotinic\nnicotins\nnictate\nnictated\nnictates\nnictating\nnictitate\nnictitated\nnictitates\nnictitating\nnidal\nnide\nnided\nnidering\nniderings\nnides\nnidget\nnidgets\nnidi\nnidified\nnidifies\nnidify\nnidifying\nniding\nnidus\nniduses\nniece\nnieces\nnielli\nniellist\nniellists\nniello\nnielloed\nnielloing\nniellos\nnies\nnieve\nnieves\nniffer\nniffered\nniffering\nniffers\nniftier\nnifties\nniftiest\nnifty\nniggard\nniggarded\nniggarding\nniggardly\nniggards\nnigger\nniggers\nniggle\nniggled\nniggler\nnigglers\nniggles\nniggling\nnigglings\nnigh\nnighed\nnigher\nnighest\nnighing\nnighness\nnighnesses\nnighs\nnight\nnightcap\nnightcaps\nnightclothes\nnightclub\nnightclubs\nnightdress\nnightdresses\nnightfall\nnightfalls\nnightgown\nnightgowns\nnighthawk\nnighthawks\nnightie\nnighties\nnightingale\nnightingales\nnightjar\nnightjars\nnightly\nnightmare\nnightmares\nnightmarish\nnights\nnightshade\nnightshades\nnightshirt\nnightshirts\nnightstick\nnightsticks\nnighttime\nnighttimes\nnighty\nnigrified\nnigrifies\nnigrify\nnigrifying\nnigrosin\nnigrosins\nnihil\nnihilism\nnihilisms\nnihilist\nnihilistic\nnihilists\nnihilities\nnihility\nnihils\nnil\nnilgai\nnilgais\nnilgau\nnilgaus\nnilghai\nnilghais\nnilghau\nnilghaus\nnill\nnilled\nnilling\nnills\nnils\nnim\nnimbi\nnimble\nnimbleness\nnimbler\nnimblest\nnimbly\nnimbus\nnimbused\nnimbuses\nnimieties\nnimiety\nnimious\nnimmed\nnimming\nnimrod\nnimrods\nnims\nnincompoop\nnincompoops\nnine\nninebark\nninebarks\nninefold\nninepin\nninepins\nnines\nnineteen\nnineteens\nnineteenth\nnineteenths\nnineties\nninetieth\nninetieths\nninety\nninja\nninny\nninnyish\nninon\nninons\nninth\nninthly\nninths\nniobic\nniobium\nniobiums\nniobous\nnip\nnipa\nnipas\nnipped\nnipper\nnippers\nnippier\nnippiest\nnippily\nnipping\nnippingly\nnipple\nnipples\nnippy\nnips\nnirvana\nnirvanas\nnirvanic\nnisei\nniseis\nnisi\nnisus\nnit\nnitchie\nnitchies\nniter\nniters\nnitid\nniton\nnitons\nnitpick\nnitpicked\nnitpicker\nnitpickers\nnitpicking\nnitpicks\nnitrate\nnitrated\nnitrates\nnitrating\nnitration\nnitrations\nnitrator\nnitrators\nnitre\nnitres\nnitric\nnitrid\nnitride\nnitrides\nnitrids\nnitrification\nnitrifications\nnitrified\nnitrifies\nnitrify\nnitrifying\nnitril\nnitrile\nnitriles\nnitrils\nnitrite\nnitrites\nnitro\nnitrocellulose\nnitrocellulosic\nnitrogen\nnitrogenous\nnitrogens\nnitroglycerin\nnitroglycerine\nnitrolic\nnitros\nnitroso\nnitrosyl\nnitrosyls\nnitrous\nnits\nnittier\nnittiest\nnitty\nnitwit\nnitwits\nnival\nniveous\nnix\nnixe\nnixed\nnixes\nnixie\nnixies\nnixing\nnixy\nnizam\nnizamate\nnizamates\nnizams\nnmitering\nno\nnob\nnobbier\nnobbiest\nnobbily\nnobble\nnobbled\nnobbler\nnobblers\nnobbles\nnobbling\nnobby\nnobelium\nnobeliums\nnobilities\nnobility\nnoble\nnobleman\nnoblemen\nnobleness\nnobler\nnobles\nnoblesse\nnoblesses\nnoblest\nnoblewoman\nnoblewomen\nnobly\nnobodies\nnobody\nnobs\nnocent\nnock\nnocked\nnocking\nnocks\nnoctuid\nnoctuids\nnoctule\nnoctules\nnoctuoid\nnocturn\nnocturnal\nnocturnally\nnocturne\nnocturnes\nnocturns\nnocuous\nnocuously\nnod\nnodal\nnodalities\nnodality\nnodally\nnodded\nnodder\nnodders\nnoddies\nnodding\nnoddle\nnoddled\nnoddles\nnoddling\nnoddy\nnode\nnodes\nnodi\nnodical\nnodose\nnodosities\nnodosity\nnodous\nnods\nnodular\nnodule\nnodules\nnodulose\nnodulous\nnodus\nnoel\nnoels\nnoes\nnoesis\nnoesises\nnoetic\nnog\nnogg\nnoggin\nnogging\nnoggings\nnoggins\nnoggs\nnogs\nnoh\nnohow\nnoil\nnoils\nnoily\nnoise\nnoised\nnoiseless\nnoiselessly\nnoisemaker\nnoisemakers\nnoisemaking\nnoises\nnoisier\nnoisiest\nnoisily\nnoisiness\nnoising\nnoisome\nnoisomely\nnoisomeness\nnoisy\nnolo\nnolos\nnom\nnoma\nnomad\nnomadic\nnomadism\nnomadisms\nnomads\nnomarch\nnomarchies\nnomarchs\nnomarchy\nnomas\nnombles\nnombril\nnombrils\nnome\nnomen\nnomenclatural\nnomenclature\nnomenclatures\nnomes\nnomina\nnominal\nnominalism\nnominalist\nnominalistic\nnominalists\nnominally\nnominals\nnominate\nnominated\nnominates\nnominating\nnomination\nnominations\nnominative\nnominator\nnominators\nnominee\nnominees\nnomism\nnomisms\nnomistic\nnomogram\nnomograms\nnomograph\nnomographic\nnomography\nnomoi\nnomologies\nnomology\nnomos\nnoms\nnona\nnonaccredited\nnonacid\nnonacids\nnonadjustable\nnonadult\nnonadults\nnonage\nnonagenarian\nnonagenarians\nnonages\nnonaggression\nnonagon\nnonagons\nnonalcoholic\nnonaligned\nnonalignment\nnonalignments\nnonalphabetic\nnonappearance\nnonas\nnonbank\nnonbasic\nnonbeing\nnonbeings\nnonbeliever\nnonbelievers\nnonbinding\nnonbook\nnonbooks\nnonbreakable\nnoncancerous\nnoncandidate\nnoncandidates\nnoncareer\nnoncash\nnonce\nnonces\nnonchalance\nnonchalant\nnonclassified\nnoncom\nnoncombatant\nnoncombatants\nnoncombustible\nnoncommercial\nnoncommissioned\nnoncommittal\nnoncommittally\nnoncompetitive\nnoncompetitor\nnoncompetitors\nnoncompliance\nnoncoms\nnonconductor\nnonconductors\nnonconformance\nnonconforming\nnonconformist\nnonconformists\nnonconformity\nnoncontributing\nnoncooperation\nnoncooperationist\nnoncooperationists\nnoncooperative\nnoncooperator\nnoncooperators\nnoncredit\nnondairy\nnondelivery\nnondescript\nnondescripts\nnondisclosure\nnondisclosures\nnondiscrimination\nnondiscriminatory\nnondistinctive\nnondurable\nnone\nnoneffective\nnoneffectives\nnonego\nnonegos\nnonelect\nnonelectronic\nnonempty\nnonentities\nnonentity\nnonentries\nnonentry\nnonequal\nnonequals\nnones\nnonessential\nnonessentials\nnonesuch\nnonesuches\nnonet\nnonetheless\nnoneuclidean\nnonevent\nnonevents\nnonexistence\nnonexistent\nnonexisting\nnonfarm\nnonfat\nnonfatal\nnonfeasance\nnonfeasances\nnonfiction\nnonfictional\nnonfictions\nnonfluid\nnonfluids\nnonfocal\nnonfood\nnongame\nnongovernmental\nnongreen\nnonguilt\nnonguilts\nnonhardy\nnonhero\nnonheroes\nnonhuman\nnonideal\nnoninflationary\nnonintervention\nnoninterventionalist\nnoninterventionist\nnoninterventionists\nnoninterventions\nnoninvolvement\nnonionic\nnonjuror\nnonjurors\nnonlegal\nnonlife\nnonlives\nnonlocal\nnonlocals\nnonman\nnonmanagement\nnonmanagerial\nnonmen\nnonmetal\nnonmetallic\nnonmetals\nnonmilitary\nnonmodal\nnonmoney\nnonmoral\nnonnaval\nnonnegotiable\nnonobese\nnonobjective\nnonobjectivism\nnonobjectivist\nnonobjectivity\nnonowner\nnonowners\nnonpagan\nnonpagans\nnonpapal\nnonpar\nnonpareil\nnonpareils\nnonparty\nnonpaying\nnonpayment\nnonperformance\nnonplus\nnonplused\nnonpluses\nnonplusing\nnonplussed\nnonplusses\nnonplussing\nnonpolar\nnonproductive\nnonproductiveness\nnonprofessional\nnonprofessionals\nnonprofit\nnonpros\nnonprossed\nnonprosses\nnonprossing\nnonquota\nnonradioactive\nnonrated\nnonrecurrent\nnonrecurring\nnonrenewable\nnonresidence\nnonresidency\nnonresident\nnonresidential\nnonresidents\nnonresistant\nnonresistants\nnonrigid\nnonrival\nnonrivals\nnonroyal\nnonrural\nnonseasonal\nnonsense\nnonsenses\nnonsensical\nnonsensically\nnonsexist\nnonsexists\nnonsignificant\nnonsignificants\nnonsked\nnonskeds\nnonskid\nnonskier\nnonskiers\nnonslip\nnonsmoker\nnonsmokers\nnonsmoking\nnonsolar\nnonsolid\nnonsolids\nnonspecific\nnonstandard\nnonstick\nnonstop\nnonsuch\nnonsuches\nnonsugar\nnonsugars\nnonsuit\nnonsuited\nnonsuiting\nnonsuits\nnontax\nnontaxable\nnontaxes\nnontidal\nnontitle\nnontoxic\nnontransferable\nnontrump\nnontruth\nnontruths\nnonunion\nnonunions\nnonuple\nnonuples\nnonurban\nnonuse\nnonuser\nnonusers\nnonuses\nnonusing\nnonviolent\nnonviolently\nnonviral\nnonvocal\nnonvolatile\nnonvoter\nnonvoters\nnonvoting\nnonwhite\nnonwhites\nnonwoody\nnonwoven\nnonyl\nnonzero\nnoo\nnoodle\nnoodled\nnoodles\nnoodling\nnook\nnookies\nnooklike\nnooks\nnooky\nnoon\nnoonday\nnoondays\nnooning\nnoonings\nnoons\nnoontide\nnoontides\nnoontime\nnoontimes\nnoose\nnoosed\nnooser\nnoosers\nnooses\nnoosing\nnopal\nnopals\nnope\nnor\nnoria\nnorias\nnorite\nnorites\nnoritic\nnorland\nnorlands\nnorm\nnormal\nnormalcies\nnormalcy\nnormality\nnormalization\nnormalizations\nnormalize\nnormalized\nnormalizes\nnormalizing\nnormally\nnormals\nnormative\nnormatively\nnormed\nnormless\nnorms\nnorth\nnorthbound\nnortheast\nnortheaster\nnortheasterly\nnortheastern\nnortheasters\nnorther\nnortherlies\nnortherly\nnorthern\nnorthernmost\nnortherns\nnorthers\nnorthing\nnorthings\nnorths\nnorthward\nnorthwards\nnorthwest\nnorthwesterly\nnorthwestern\nnos\nnose\nnosebag\nnosebags\nnoseband\nnosebands\nnosebleed\nnosebleeds\nnosed\nnosegay\nnosegays\nnoseless\nnoselike\nnosepiece\nnosepieces\nnoses\nnosey\nnosh\nnoshed\nnosher\nnoshers\nnoshes\nnoshing\nnosier\nnosiest\nnosily\nnosiness\nnosinesses\nnosing\nnosings\nnosologies\nnosology\nnostalgia\nnostalgic\nnostalgically\nnostoc\nnostocs\nnostril\nnostrils\nnostrum\nnostrums\nnosy\nnot\nnota\nnotabilities\nnotability\nnotable\nnotableness\nnotables\nnotably\nnotal\nnotarial\nnotarially\nnotaries\nnotarization\nnotarizations\nnotarize\nnotarized\nnotarizes\nnotarizing\nnotary\nnotate\nnotated\nnotates\nnotating\nnotation\nnotational\nnotations\nnotch\nnotchback\nnotchbacks\nnotched\nnotcher\nnotchers\nnotches\nnotching\nnote\nnotebook\nnotebooks\nnotecase\nnotecases\nnoted\nnotedly\nnoteless\nnoter\nnoters\nnotes\nnoteworthiness\nnoteworthy\nnothing\nnothingness\nnothings\nnotice\nnoticeable\nnoticeably\nnoticed\nnotices\nnoticing\nnotifiable\nnotification\nnotifications\nnotified\nnotifier\nnotifiers\nnotifies\nnotify\nnotifying\nnoting\nnotion\nnotional\nnotionally\nnotions\nnotoriety\nnotorious\nnotoriously\nnotoriousness\nnotornis\nnotturni\nnotturno\nnotum\nnotwithstanding\nnougat\nnougats\nnought\nnoughts\nnoumena\nnoumenal\nnoumenon\nnoun\nnounal\nnounally\nnounless\nnouns\nnourish\nnourished\nnourishes\nnourishing\nnourishment\nnourishments\nnous\nnouses\nnova\nnovae\nnovalike\nnovas\nnovation\nnovations\nnovel\nnovelette\nnovelettes\nnovelise\nnovelised\nnovelises\nnovelising\nnovelist\nnovelistic\nnovelists\nnovelization\nnovelizations\nnovelize\nnovelized\nnovelizes\nnovelizing\nnovella\nnovellas\nnovelle\nnovelly\nnovels\nnovelties\nnovelty\nnovena\nnovenae\nnovenas\nnovercal\nnovice\nnovices\nnovitiate\nnovitiates\nnow\nnowadays\nnoway\nnoways\nnowhere\nnowheres\nnowise\nnows\nnowt\nnowts\nnoxious\nnoxiously\nnoxiousness\nnoyade\nnoyades\nnozzle\nnozzles\nnth\nnu\nnuance\nnuanced\nnuances\nnub\nnubbier\nnubbiest\nnubbin\nnubbins\nnubble\nnubbles\nnubblier\nnubbliest\nnubbly\nnubby\nnubia\nnubias\nnubile\nnubilities\nnubility\nnubilose\nnubilous\nnubs\nnucellar\nnucelli\nnucellus\nnucha\nnuchae\nnuchal\nnuchals\nnucleal\nnuclear\nnuclease\nnucleases\nnucleate\nnucleated\nnucleates\nnucleating\nnucleation\nnucleations\nnucleator\nnucleators\nnuclei\nnuclein\nnucleins\nnucleole\nnucleoles\nnucleoli\nnucleon\nnucleonic\nnucleonics\nnucleons\nnucleus\nnucleuses\nnuclide\nnuclides\nnuclidic\nnude\nnudely\nnudeness\nnudenesses\nnuder\nnudes\nnudest\nnudge\nnudged\nnudger\nnudgers\nnudges\nnudging\nnudicaul\nnudie\nnudies\nnudism\nnudisms\nnudist\nnudists\nnudities\nnudity\nnudnick\nnudnicks\nnudnik\nnudniks\nnudzh\nnugatory\nnugget\nnuggets\nnuggety\nnuisance\nnuisances\nnuke\nnuked\nnukes\nnull\nnullah\nnullahs\nnulled\nnullification\nnullifications\nnullified\nnullifier\nnullifiers\nnullifies\nnullify\nnullifying\nnulling\nnullities\nnullity\nnulls\nnumb\nnumbed\nnumber\nnumbered\nnumberer\nnumberers\nnumbering\nnumberless\nnumbers\nnumbest\nnumbfish\nnumbfishes\nnumbing\nnumbingly\nnumbles\nnumbly\nnumbness\nnumbnesses\nnumbs\nnumbskull\nnumbskulls\nnumen\nnumerable\nnumeral\nnumerals\nnumerary\nnumerate\nnumerated\nnumerates\nnumerating\nnumeration\nnumerations\nnumerator\nnumerators\nnumeric\nnumerical\nnumerically\nnumerics\nnumerological\nnumerologist\nnumerologists\nnumerology\nnumerous\nnumerously\nnumerousness\nnumina\nnuminous\nnuminouses\nnumismatic\nnumismatics\nnumismatist\nnumismatists\nnummary\nnummular\nnumskull\nnumskulls\nnun\nnuncio\nnuncios\nnuncle\nnuncles\nnunlike\nnunneries\nnunnery\nnunnish\nnuns\nnuptial\nnuptials\nnurd\nnurds\nnurl\nnurled\nnurling\nnurls\nnurse\nnursed\nnursemaid\nnursemaids\nnurser\nnurseries\nnursers\nnursery\nnurseryman\nnurserymen\nnurses\nnursing\nnursings\nnursling\nnurslings\nnurture\nnurtured\nnurturer\nnurturers\nnurtures\nnurturing\nnus\nnut\nnutant\nnutate\nnutated\nnutates\nnutating\nnutation\nnutations\nnutbrown\nnutcracker\nnutcrackers\nnutgall\nnutgalls\nnutgrass\nnutgrasses\nnuthatch\nnuthatches\nnuthouse\nnuthouses\nnutlet\nnutlets\nnutlike\nnutmeat\nnutmeats\nnutmeg\nnutmegs\nnutpick\nnutpicks\nnutria\nnutrias\nnutrient\nnutrients\nnutriment\nnutriments\nnutrition\nnutritional\nnutritionally\nnutritionist\nnutritionists\nnutritions\nnutritious\nnutritiously\nnutritiousness\nnutritive\nnutritively\nnuts\nnutsedge\nnutsedges\nnutshell\nnutshells\nnutsy\nnutted\nnutter\nnutters\nnuttier\nnuttiest\nnuttily\nnuttiness\nnutting\nnutty\nnutwood\nnutwoods\nnuzzle\nnuzzled\nnuzzles\nnuzzling\nnyala\nnyalas\nnylghai\nnylghais\nnylghau\nnylghaus\nnylon\nnylons\nnymph\nnympha\nnymphae\nnymphal\nnymphean\nnymphet\nnymphets\nnympho\nnymphomania\nnymphomaniac\nnymphomaniacal\nnymphomaniacs\nnymphos\nnymphs\no\noaf\noafish\noafishly\noafishness\noafs\noak\noaken\noaklike\noakmoss\noakmosses\noaks\noakum\noakums\noar\noared\noarfish\noarfishes\noaring\noarless\noarlike\noarlock\noarlocks\noars\noarsman\noarsmen\noases\noasis\noast\noasts\noat\noatcake\noatcakes\noaten\noater\noaters\noath\noaths\noatlike\noatmeal\noatmeals\noats\noaves\nobbligato\nobbligatos\nobduracies\nobduracy\nobdurate\nobdurately\nobdurateness\nobe\nobeah\nobeahism\nobeahisms\nobeahs\nobedience\nobediences\nobedient\nobediently\nobeisance\nobeisances\nobeisant\nobeisantly\nobeli\nobelia\nobelias\nobelise\nobelised\nobelises\nobelising\nobelisk\nobelisks\nobelism\nobelisms\nobelize\nobelized\nobelizes\nobelizing\nobelus\nobes\nobese\nobesely\nobesities\nobesity\nobey\nobeyable\nobeyed\nobeyer\nobeyers\nobeying\nobeys\nobfuscate\nobfuscated\nobfuscates\nobfuscating\nobfuscation\nobfuscations\nobfuscatory\nobi\nobia\nobias\nobiism\nobiisms\nobis\nobit\nobits\nobituaries\nobituary\nobject\nobjected\nobjectification\nobjectifications\nobjectified\nobjectifies\nobjectify\nobjectifying\nobjecting\nobjection\nobjectionable\nobjectionableness\nobjectionably\nobjections\nobjective\nobjectively\nobjectiveness\nobjectives\nobjectivism\nobjectivist\nobjectivistic\nobjectivists\nobjectivities\nobjectivity\nobjectless\nobjector\nobjectors\nobjects\nobjurgate\nobjurgated\nobjurgates\nobjurgating\nobjurgation\nobjurgations\nobjurgatory\noblast\noblasti\noblasts\noblate\noblately\noblates\noblation\noblations\noblatory\nobligate\nobligated\nobligates\nobligati\nobligating\nobligation\nobligations\nobligato\nobligatorily\nobligatory\nobligatos\noblige\nobliged\nobligee\nobligees\nobliger\nobligers\nobliges\nobliging\nobligingly\nobligingness\nobligor\nobligors\noblique\nobliqued\nobliquely\nobliqueness\nobliques\nobliquing\nobliquities\nobliquity\nobliterate\nobliterated\nobliterates\nobliterating\nobliteration\nobliterations\nobliterative\nobliterator\nobliterators\noblivion\noblivions\noblivious\nobliviously\nobliviousness\noblong\noblongly\noblongs\nobloquies\nobloquy\nobnoxious\nobnoxiously\nobnoxiousness\noboe\noboes\noboist\noboists\nobol\nobole\noboles\noboli\nobols\nobolus\nobovate\nobovoid\nobscene\nobscenely\nobscener\nobscenest\nobscenities\nobscenity\nobscurantist\nobscurantists\nobscure\nobscured\nobscurely\nobscureness\nobscurer\nobscures\nobscurest\nobscuring\nobscurities\nobscurity\nobsequies\nobsequious\nobsequiously\nobsequiousness\nobsequy\nobservable\nobservably\nobservance\nobservances\nobservant\nobservantly\nobservation\nobservational\nobservations\nobservatories\nobservatory\nobserve\nobserved\nobserver\nobservers\nobserves\nobserving\nobservingly\nobsess\nobsessed\nobsesses\nobsessing\nobsession\nobsessional\nobsessions\nobsessive\nobsessively\nobsessiveness\nobsessor\nobsessors\nobsidian\nobsidians\nobsolesce\nobsolesced\nobsolescence\nobsolescences\nobsolescent\nobsolescently\nobsolesces\nobsolescing\nobsolete\nobsoleted\nobsoletely\nobsoleteness\nobsoletes\nobsoleting\nobstacle\nobstacles\nobstetric\nobstetrical\nobstetrically\nobstetrician\nobstetricians\nobstetrics\nobstinacies\nobstinacy\nobstinate\nobstinately\nobstinateness\nobstreperous\nobstreperously\nobstreperousness\nobstruct\nobstructed\nobstructing\nobstruction\nobstructionism\nobstructionist\nobstructionistic\nobstructionists\nobstructions\nobstructive\nobstructiveness\nobstructor\nobstructors\nobstructs\nobtain\nobtainable\nobtained\nobtainer\nobtainers\nobtaining\nobtainment\nobtainments\nobtains\nobtect\nobtected\nobtest\nobtested\nobtesting\nobtests\nobtrude\nobtruded\nobtruder\nobtruders\nobtrudes\nobtruding\nobtrusion\nobtrusions\nobtrusive\nobtrusively\nobtrusiveness\nobtund\nobtunded\nobtunding\nobtunds\nobturate\nobturated\nobturates\nobturating\nobtuse\nobtusely\nobtuseness\nobtuser\nobtusest\nobverse\nobversely\nobverses\nobvert\nobverted\nobverting\nobverts\nobviable\nobviate\nobviated\nobviates\nobviating\nobviation\nobviations\nobviator\nobviators\nobvious\nobviously\nobviousness\nobvolute\noca\nocarina\nocarinas\nocas\noccasion\noccasional\noccasionally\noccasioned\noccasioning\noccasions\noccident\noccidents\noccipita\noccipital\nocciput\nocciputs\nocclude\noccluded\noccludes\noccluding\nocclusal\nocclusion\nocclusions\nocclusive\noccult\noccultation\noccultations\nocculted\nocculter\nocculters\nocculting\noccultism\noccultisms\noccultist\noccultists\noccultly\noccults\noccupancies\noccupancy\noccupant\noccupants\noccupation\noccupational\noccupationally\noccupations\noccupied\noccupier\noccupiers\noccupies\noccupy\noccupying\noccur\noccurred\noccurrence\noccurrences\noccurrent\noccurring\noccurs\nocean\noceanfront\noceanfronts\noceangoing\noceanic\noceanographer\noceanographers\noceanographic\noceanographical\noceanography\noceanology\noceans\nocellar\nocellate\nocelli\nocellus\noceloid\nocelot\nocelots\nocher\nochered\nochering\nocherous\nochers\nochery\nochone\nochre\nochrea\nochreae\nochred\nochreous\nochres\nochring\nochroid\nochrous\nochry\nocker\nocotillo\nocotillos\nocrea\nocreae\nocreate\noctad\noctadic\noctads\noctagon\noctagonal\noctagonally\noctagons\noctahedra\noctahedral\noctahedron\noctahedrons\noctal\noctan\noctane\noctanes\noctangle\noctangles\noctant\noctantal\noctants\noctarchies\noctarchy\noctaval\noctave\noctaves\noctavo\noctavos\noctet\noctets\noctette\noctettes\noctogenarian\noctogenarians\noctonaries\noctonary\noctopi\noctopod\noctopodes\noctopods\noctopus\noctopuses\noctoroon\noctoroons\noctroi\noctrois\noctuple\noctupled\noctuples\noctuplet\noctuplets\noctuplex\noctupling\noctuply\noctyl\noctyls\nocular\nocularly\noculars\noculist\noculists\nod\nodalisk\nodalisks\nodd\noddball\noddballs\nodder\noddest\noddish\noddities\noddity\noddly\noddment\noddments\noddness\noddnesses\nodds\node\nodea\nodeon\nodeons\nodes\nodeum\nodic\nodious\nodiously\nodiousness\nodist\nodium\nodiums\nodograph\nodographs\nodometer\nodometers\nodometries\nodometry\nodonate\nodonates\nodontoid\nodontoids\nodor\nodorant\nodorants\nodored\nodorful\nodoriferous\nodoriferously\nodoriferousness\nodorize\nodorized\nodorizes\nodorizing\nodorless\nodorous\nodorously\nodorousness\nodors\nodour\nodourful\nodours\nods\nodyl\nodyle\nodyles\nodyls\nodyssey\nodysseys\noe\noecologies\noecology\noedema\noedemas\noedemata\noedipal\noedipean\noeillade\noeillades\noenologies\noenology\noenomel\noenomels\noerloaded\noersted\noersteds\noes\noestrin\noestrins\noestriol\noestriols\noestrone\noestrones\noestrous\noestrum\noestrums\noestrus\noestruses\noeuvre\noeuvres\nof\nofay\nofays\noff\noffal\noffals\noffbeat\noffbeats\noffcast\noffcasts\noffed\noffence\noffences\noffend\noffended\noffender\noffenders\noffending\noffends\noffense\noffenseless\noffenses\noffensive\noffensively\noffensiveness\noffer\noffered\nofferer\nofferers\noffering\nofferings\nofferor\nofferors\noffers\noffertories\noffertory\noffhand\noffhanded\noffhandedly\noffhandedness\noffice\nofficeholder\nofficeholders\nofficer\nofficered\nofficering\nofficers\noffices\nofficial\nofficialism\nofficially\nofficials\nofficiary\nofficiate\nofficiated\nofficiates\nofficiating\nofficiation\nofficiations\nofficinal\nofficinally\nofficious\nofficiously\nofficiousness\noffing\noffings\noffish\noffishly\noffishness\noffload\noffloaded\noffloading\noffloads\noffprint\noffprinted\noffprinting\noffprints\noffs\noffset\noffsets\noffsetting\noffshoot\noffshoots\noffshore\noffside\noffspring\noffsprings\noffstage\noft\noften\noftener\noftenest\nofter\noftest\nofttimes\nogam\nogams\nogdoad\nogdoads\nogee\nogees\nogham\noghamic\noghamist\noghamists\noghams\nogival\nogive\nogives\nogle\nogled\nogler\noglers\nogles\nogling\nogre\nogreish\nogreism\nogreisms\nogres\nogress\nogresses\nogrish\nogrishly\nogrism\nogrisms\noh\nohed\nohia\nohias\nohing\nohm\nohmage\nohmages\nohmic\nohmmeter\nohmmeters\nohms\noho\nohs\noidia\noidium\noil\noilbird\noilbirds\noilcamp\noilcamps\noilcan\noilcans\noilcloth\noilcloths\noilcup\noilcups\noiled\noiler\noilers\noilhole\noilholes\noilier\noiliest\noilily\noiliness\noilinesses\noiling\noilman\noilmen\noilpaper\noilpapers\noilproof\noils\noilseed\noilseeds\noilskin\noilskins\noilstone\noilstones\noiltight\noilway\noilways\noily\noink\noinked\noinking\noinks\noinologies\noinology\noinomel\noinomels\nointment\nointments\noiticica\noiticicas\noka\nokapi\nokapis\nokas\nokay\nokayed\nokaying\nokays\noke\nokeh\nokehs\nokes\nokeydoke\nokra\nokras\nold\nolden\nolder\noldest\noldie\noldies\noldish\noldness\noldnesses\nolds\noldster\noldsters\noldstyle\noldstyles\noldwife\noldwives\noldy\nole\nolea\noleaginous\noleander\noleanders\noleaster\noleasters\noleate\noleates\nolefin\nolefine\nolefines\nolefinic\nolefins\noleic\nolein\noleine\noleines\noleins\noleo\noleomargarine\noleomargarines\noleos\noles\noleum\noleums\nolfaction\nolfactory\nolibanum\nolibanums\noligarch\noligarchic\noligarchical\noligarchies\noligarchs\noligarchy\noligomer\noligomers\noligopolies\noligopoly\noligopsonies\noligopsony\nolio\nolios\nolivary\nolive\nolives\nolivine\nolivines\nolivinic\nolla\nollas\nollygagged\nologies\nologist\nologists\nology\nolympiad\nolympiads\nom\nomasa\nomasum\nomber\nombers\nombre\nombres\nombudsman\nombudsmen\nomega\nomegas\nomelet\nomelets\nomelette\nomelettes\nomen\nomened\nomening\nomens\nomenta\nomental\nomentum\nomentums\nomer\nomers\nomicron\nomicrons\nomikron\nomikrons\nominous\nominously\nominousness\nomissible\nomission\nomissions\nomissive\nomit\nomits\nomitted\nomitting\nomniarch\nomniarchs\nomnibus\nomnibuses\nomnifarious\nomnific\nomniform\nomnimode\nomnipotence\nomnipotences\nomnipotent\nomnipotently\nomnipresence\nomnipresent\nomniscience\nomniscient\nomnisciently\nomnivora\nomnivore\nomnivores\nomnivorous\nomnivorously\nomophagies\nomophagy\nomphali\nomphalos\noms\non\nonager\nonagers\nonagri\nonanism\nonanisms\nonanist\nonanists\nonce\noncidium\noncidiums\noncologies\noncology\noncoming\noncomings\nondogram\nondograms\none\nonefold\noneiric\noneness\nonenesses\nonerier\noneriest\nonerous\nonerously\nonerousness\nonery\nones\noneself\nonetime\nongoing\nonion\nonions\nonionskin\nonionskins\nonium\nonlooker\nonlookers\nonlooking\nonly\nonomatopoeia\nonomatopoeic\nonomatopoeically\nonomatopoetically\nonrush\nonrushes\nonrushing\nons\nonset\nonsets\nonshore\nonside\nonslaught\nonslaughts\nonstage\nontic\nonto\nontogenies\nontogeny\nontological\nontologies\nontologist\nontologists\nontology\nonus\nonuses\nonward\nonwards\nonyx\nonyxes\noocyst\noocysts\noocyte\noocytes\noodles\noodlins\noogamete\noogametes\noogamies\noogamous\noogamy\noogenies\noogeny\noogonia\noogonial\noogonium\noogoniums\nooh\noohed\noohing\noohs\noolachan\noolachans\noolite\noolites\noolith\nooliths\noolitic\noologic\noologies\noologist\noologists\noology\noolong\noolongs\noomiac\noomiack\noomiacks\noomiacs\noomiak\noomiaks\noomph\noomphs\noophyte\noophytes\noophytic\noops\noorali\nooralis\noorie\noosperm\noosperms\noosphere\noospheres\noospore\noospores\noosporic\noot\nootheca\noothecae\noothecal\nootid\nootids\noots\nooze\noozed\noozes\noozier\nooziest\noozily\nooziness\noozinesses\noozing\noozy\nop\nopacified\nopacifies\nopacify\nopacifying\nopacities\nopacity\nopah\nopahs\nopal\nopalesce\nopalesced\nopalescence\nopalescences\nopalescent\nopalesces\nopalescing\nopaline\nopalines\nopals\nopaque\nopaqued\nopaquely\nopaqueness\nopaquer\nopaques\nopaquest\nopaquing\nope\noped\nopen\nopenable\nopened\nopener\nopeners\nopenest\nopenhanded\nopenhandedly\nopenhandedness\nopenhearted\nopenheartedly\nopening\nopenings\nopenly\nopenness\nopennesses\nopens\nopenwork\nopenworks\nopera\noperabilities\noperability\noperable\noperably\noperand\noperands\noperant\noperants\noperas\noperate\noperated\noperates\noperatic\noperatically\noperatics\noperating\noperation\noperational\noperationalism\noperationally\noperations\noperative\noperatively\noperativeness\noperatives\noperator\noperators\nopercele\noperceles\nopercula\nopercule\nopercules\noperetta\noperettas\noperon\noperons\noperose\nopes\nophidian\nophidians\nophite\nophites\nophitic\nophthalmological\nophthalmologist\nophthalmologists\nophthalmology\nophthalmoscope\nophthalmoscopes\nophthalmoscopic\nopiate\nopiated\nopiates\nopiating\nopine\nopined\nopines\noping\nopining\nopinion\nopinionated\nopinionatedly\nopinionative\nopinionatively\nopinionativeness\nopinioned\nopinions\nopium\nopiumism\nopiumisms\nopiums\nopossum\nopossums\noppidan\noppidans\noppilant\noppilate\noppilated\noppilates\noppilating\nopponent\nopponents\nopportune\nopportunely\nopportuneness\nopportunism\nopportunist\nopportunistic\nopportunistically\nopportunists\nopportunities\nopportunity\nopposabilities\nopposability\nopposable\noppose\nopposed\nopposer\nopposers\nopposes\nopposing\nopposite\noppositely\noppositeness\nopposites\nopposition\noppositional\noppositionist\noppositionists\noppositions\noppress\noppressed\noppresses\noppressing\noppression\noppressions\noppressive\noppressively\noppressiveness\noppressor\noppressors\nopprobrious\nopprobriously\nopprobriousness\nopprobrium\nopprobriums\noppugn\noppugned\noppugner\noppugners\noppugning\noppugns\nops\nopsin\nopsins\nopsonic\nopsonified\nopsonifies\nopsonify\nopsonifying\nopsonin\nopsonins\nopsonize\nopsonized\nopsonizes\nopsonizing\nopt\noptative\noptatives\nopted\noptic\noptical\noptically\noptician\nopticians\nopticist\nopticists\noptics\noptima\noptimal\noptimally\noptime\noptimes\noptimise\noptimised\noptimises\noptimising\noptimism\noptimisms\noptimist\noptimistic\noptimistically\noptimists\noptimization\noptimizations\noptimize\noptimized\noptimizes\noptimizing\noptimum\noptimuma\noptimums\nopting\noption\noptional\noptionally\noptionals\noptioned\noptionee\noptionees\noptioning\noptions\noptometrist\noptometrists\noptometry\nopts\nopulence\nopulences\nopulencies\nopulency\nopulent\nopulently\nopuntia\nopuntias\nopus\nopuscula\nopuscule\nopuscules\nopuses\noquassa\noquassas\nor\nora\norach\norache\noraches\noracle\noracles\noracular\noracularly\norad\noral\noralities\norality\norally\norals\norang\norange\norangeade\norangeries\norangery\noranges\norangewood\norangewoods\norangey\norangier\norangiest\norangish\norangs\norangy\norate\norated\norates\norating\noration\norations\norator\noratorical\noratorically\noratories\noratorio\noratorios\norators\noratory\noratress\noratresses\noratrices\noratrix\norb\norbed\norbicular\norbiculate\norbing\norbit\norbital\norbitals\norbited\norbiter\norbiters\norbiting\norbits\norbs\norby\norc\norca\norcas\norcein\norceins\norchard\norchardist\norchardists\norchards\norchestra\norchestral\norchestrally\norchestras\norchestrate\norchestrated\norchestrates\norchestrating\norchestration\norchestrations\norchestrator\norchestrators\norchid\norchids\norchil\norchils\norchis\norchises\norchitic\norchitis\norchitises\norcin\norcinol\norcinols\norcins\norcs\nordain\nordained\nordainer\nordainers\nordaining\nordainment\nordainments\nordains\nordeal\nordeals\norder\nordered\norderer\norderers\nordering\norderless\norderlies\norderliness\norderly\norders\nordinal\nordinals\nordinance\nordinances\nordinand\nordinands\nordinarier\nordinaries\nordinariest\nordinarily\nordinariness\nordinary\nordinate\nordinates\nordination\nordinations\nordines\nordnance\nordnances\nordo\nordos\nordure\nordures\nore\noread\noreads\norectic\norective\noregano\noreganos\noreide\noreides\nores\norfray\norfrays\norgan\norgana\norgandie\norgandies\norgandy\norganic\norganically\norganicities\norganicity\norganics\norganise\norganised\norganises\norganising\norganism\norganismic\norganisms\norganist\norganists\norganizable\norganization\norganizational\norganizationally\norganizations\norganize\norganized\norganizer\norganizers\norganizes\norganizing\norganon\norganons\norgans\norganum\norganums\norganza\norganzas\norgasm\norgasmic\norgasms\norgastic\norgeat\norgeats\norgiac\norgic\norgies\norgulous\norgy\noribatid\noribatids\noribi\noribis\noriel\noriels\norient\noriental\norientally\norientals\norientate\norientated\norientates\norientating\norientation\norientations\noriented\norienting\norients\norifice\norifices\norigami\norigamis\norigan\norigans\noriganum\noriganums\norigin\noriginal\noriginalities\noriginality\noriginally\noriginals\noriginate\noriginated\noriginates\noriginating\norigination\noriginations\noriginative\noriginator\noriginators\norigins\norinasal\norinasals\noriole\norioles\norison\norisons\norle\norles\norlop\norlops\normer\normers\normolu\normolus\nornament\nornamental\nornamentally\nornamentals\nornamentation\nornamentations\nornamented\nornamenting\nornaments\nornate\nornately\nornateness\nornerier\norneriest\norneriness\nornery\nornis\nornithes\nornithic\nornithological\nornithologist\nornithologists\nornithology\norogenic\norogenies\norogeny\noroide\noroides\norologies\norology\norometer\norometers\norotund\norotundities\norotundity\norphan\norphanage\norphanages\norphaned\norphanhood\norphaning\norphans\norphic\norphical\norphrey\norphreys\norpiment\norpiments\norpin\norpine\norpines\norpins\norra\norreries\norrery\norrice\norrices\norris\norrises\nors\nort\northicon\northicons\northo\northoclase\northodontia\northodontic\northodontics\northodontist\northodontists\northodox\northodoxes\northodoxies\northodoxy\northoepies\northoepy\northogonal\northogonalities\northogonality\northogonally\northographic\northographically\northographies\northography\northopedic\northopedically\northopedics\northopedist\northopedists\northotic\nortolan\nortolans\norts\noryx\noryxes\norzo\norzos\nos\nosar\noscillate\noscillated\noscillates\noscillating\noscillation\noscillations\noscillator\noscillators\noscillatory\noscilloscope\noscilloscopes\noscine\noscines\noscinine\noscitant\noscula\nosculant\noscular\nosculate\nosculated\nosculates\nosculating\nosculation\nosculations\noscule\noscules\nosculum\nose\noses\nosier\nosiers\nosmatic\nosmic\nosmious\nosmium\nosmiums\nosmol\nosmolal\nosmolar\nosmols\nosmose\nosmosed\nosmoses\nosmosing\nosmosis\nosmotic\nosmotically\nosmous\nosmund\nosmunda\nosmundas\nosmunds\nosnaburg\nosnaburgs\nosprey\nospreys\nossa\nossein\nosseins\nosseous\nossia\nossicle\nossicles\nossific\nossification\nossifications\nossified\nossifier\nossifiers\nossifies\nossify\nossifying\nossuaries\nossuary\nosteal\nosteitic\nosteitides\nosteitis\nostensible\nostensibly\nostensive\nostensively\nostentation\nostentations\nostentatious\nostentatiously\nostentatiousness\nosteoid\nosteoids\nosteoma\nosteomas\nosteomata\nosteopath\nosteopathic\nosteopathically\nosteopaths\nosteopathy\nostia\nostiaries\nostiary\nostinato\nostinatos\nostiolar\nostiole\nostioles\nostium\nostler\nostlers\nostmark\nostmarks\nostomies\nostomy\nostoses\nostosis\nostosises\nostracism\nostracisms\nostracize\nostracized\nostracizes\nostracizing\nostracod\nostracods\nostrich\nostriches\notalgia\notalgias\notalgic\notalgies\notalgy\nother\notherness\nothers\notherwise\notic\noties\notiose\notiosely\notiosities\notiosity\notitic\notitides\notitis\notocyst\notocysts\notolith\notoliths\notologies\notology\notoscope\notoscopes\notoscopies\notoscopy\nottar\nottars\nottava\nottavas\notter\notters\notto\nottoman\nottomans\nottos\nouabain\nouabains\noubliette\noubliettes\nouch\nouches\noud\nouds\nought\noughted\noughting\noughts\nouistiti\nouistitis\nounce\nounces\nouph\nouphe\nouphes\nouphs\nour\nourang\nourangs\nourari\nouraris\nourebi\nourebis\nourie\nours\nourself\nourselves\nousel\nousels\noust\nousted\nouster\nousters\nousting\nousts\nout\noutact\noutacted\noutacting\noutacts\noutadd\noutadded\noutadding\noutadds\noutage\noutages\noutargue\noutargued\noutargues\noutarguing\noutask\noutasked\noutasking\noutasks\noutate\noutback\noutbacks\noutbake\noutbaked\noutbakes\noutbaking\noutbark\noutbarked\noutbarking\noutbarks\noutbawl\noutbawled\noutbawling\noutbawls\noutbeam\noutbeamed\noutbeaming\noutbeams\noutbeg\noutbegged\noutbegging\noutbegs\noutbid\noutbidden\noutbidding\noutbids\noutblaze\noutblazed\noutblazes\noutblazing\noutbleat\noutbleated\noutbleating\noutbleats\noutbless\noutblessed\noutblesses\noutblessing\noutbloom\noutbloomed\noutblooming\noutblooms\noutbluff\noutbluffed\noutbluffing\noutbluffs\noutblush\noutblushed\noutblushes\noutblushing\noutboard\noutboards\noutboast\noutboasted\noutboasting\noutboasts\noutbound\noutbox\noutboxed\noutboxes\noutboxing\noutbrag\noutbragged\noutbragging\noutbrags\noutbrave\noutbraved\noutbraves\noutbraving\noutbreak\noutbreaks\noutbred\noutbreed\noutbreeding\noutbreeds\noutbribe\noutbribed\noutbribes\noutbribing\noutbuild\noutbuilding\noutbuildings\noutbuilds\noutbuilt\noutbullied\noutbullies\noutbully\noutbullying\noutburn\noutburned\noutburning\noutburns\noutburnt\noutburst\noutbursts\noutby\noutbye\noutcaper\noutcapered\noutcapering\noutcapers\noutcast\noutcaste\noutcastes\noutcasts\noutcatch\noutcatches\noutcatching\noutcaught\noutcavil\noutcaviled\noutcaviling\noutcavilled\noutcavilling\noutcavils\noutcharm\noutcharmed\noutcharming\noutcharms\noutcheat\noutcheated\noutcheating\noutcheats\noutchid\noutchidden\noutchide\noutchided\noutchides\noutchiding\noutclass\noutclassed\noutclasses\noutclassing\noutclimb\noutclimbed\noutclimbing\noutclimbs\noutclomb\noutcome\noutcomes\noutcook\noutcooked\noutcooking\noutcooks\noutcrawl\noutcrawled\noutcrawling\noutcrawls\noutcried\noutcries\noutcrop\noutcropped\noutcropping\noutcrops\noutcross\noutcrossed\noutcrosses\noutcrossing\noutcrow\noutcrowed\noutcrowing\noutcrows\noutcry\noutcrying\noutcurse\noutcursed\noutcurses\noutcursing\noutcurve\noutcurves\noutdance\noutdanced\noutdances\noutdancing\noutdare\noutdared\noutdares\noutdaring\noutdate\noutdated\noutdatedness\noutdates\noutdating\noutdid\noutdistance\noutdistanced\noutdistances\noutdistancing\noutdo\noutdodge\noutdodged\noutdodges\noutdodging\noutdoer\noutdoers\noutdoes\noutdoing\noutdone\noutdoor\noutdoors\noutdrank\noutdraw\noutdrawing\noutdrawn\noutdraws\noutdream\noutdreamed\noutdreaming\noutdreams\noutdreamt\noutdress\noutdressed\noutdresses\noutdressing\noutdrew\noutdrink\noutdrinking\noutdrinks\noutdrive\noutdriven\noutdrives\noutdriving\noutdrop\noutdropped\noutdropping\noutdrops\noutdrove\noutdrunk\nouteat\nouteate\nouteaten\nouteating\nouteats\noutecho\noutechoed\noutechoes\noutechoing\nouted\nouter\noutermost\nouters\nouterwear\noutfable\noutfabled\noutfables\noutfabling\noutface\noutfaced\noutfaces\noutfacing\noutfall\noutfalls\noutfast\noutfasted\noutfasting\noutfasts\noutfawn\noutfawned\noutfawning\noutfawns\noutfeast\noutfeasted\noutfeasting\noutfeasts\noutfeel\noutfeeling\noutfeels\noutfelt\noutfield\noutfielder\noutfielders\noutfields\noutfight\noutfighting\noutfights\noutfind\noutfinding\noutfinds\noutfire\noutfired\noutfires\noutfiring\noutfit\noutfits\noutfitted\noutfitter\noutfitters\noutfitting\noutflank\noutflanked\noutflanking\noutflanks\noutflew\noutflies\noutflow\noutflowed\noutflowing\noutflown\noutflows\noutfly\noutflying\noutfool\noutfooled\noutfooling\noutfools\noutfoot\noutfooted\noutfooting\noutfoots\noutfought\noutfound\noutfox\noutfoxed\noutfoxes\noutfoxing\noutfrown\noutfrowned\noutfrowning\noutfrowns\noutgain\noutgained\noutgaining\noutgains\noutgas\noutgassed\noutgasses\noutgassing\noutgave\noutgive\noutgiven\noutgives\noutgiving\noutglare\noutglared\noutglares\noutglaring\noutglow\noutglowed\noutglowing\noutglows\noutgnaw\noutgnawed\noutgnawing\noutgnawn\noutgnaws\noutgo\noutgoes\noutgoing\noutgoings\noutgone\noutgrew\noutgrin\noutgrinned\noutgrinning\noutgrins\noutgroup\noutgroups\noutgrow\noutgrowing\noutgrown\noutgrows\noutgrowth\noutgrowths\noutguess\noutguessed\noutguesses\noutguessing\noutguide\noutguided\noutguides\noutguiding\noutgun\noutgunned\noutgunning\noutguns\noutgush\noutgushes\nouthaul\nouthauls\nouthear\noutheard\nouthearing\nouthears\nouthit\nouthits\nouthitting\nouthouse\nouthouses\nouthowl\nouthowled\nouthowling\nouthowls\nouthumor\nouthumored\nouthumoring\nouthumors\nouting\noutings\noutjinx\noutjinxed\noutjinxes\noutjinxing\noutjump\noutjumped\noutjumping\noutjumps\noutjut\noutjuts\noutjutted\noutjutting\noutkeep\noutkeeping\noutkeeps\noutkept\noutkick\noutkicked\noutkicking\noutkicks\noutkiss\noutkissed\noutkisses\noutkissing\noutlaid\noutlain\noutland\noutlander\noutlanders\noutlandish\noutlandishly\noutlandishness\noutlands\noutlast\noutlasted\noutlasting\noutlasts\noutlaugh\noutlaughed\noutlaughing\noutlaughs\noutlaw\noutlawed\noutlawing\noutlawries\noutlawry\noutlaws\noutlay\noutlaying\noutlays\noutleap\noutleaped\noutleaping\noutleaps\noutleapt\noutlearn\noutlearned\noutlearning\noutlearns\noutlearnt\noutlet\noutlets\noutlie\noutlier\noutliers\noutlies\noutline\noutlined\noutlines\noutlining\noutlive\noutlived\noutliver\noutlivers\noutlives\noutliving\noutlook\noutlooks\noutlove\noutloved\noutloves\noutloving\noutlying\noutman\noutmaneuver\noutmaneuvered\noutmaneuvering\noutmaneuvers\noutmanned\noutmanning\noutmans\noutmarch\noutmarched\noutmarches\noutmarching\noutmatch\noutmatched\noutmatches\noutmatching\noutmode\noutmoded\noutmodes\noutmoding\noutmost\noutmove\noutmoved\noutmoves\noutmoving\noutnumber\noutnumbered\noutnumbering\noutnumbers\noutpace\noutpaced\noutpaces\noutpacing\noutpaint\noutpainted\noutpainting\noutpaints\noutpass\noutpassed\noutpasses\noutpassing\noutpatient\noutpatients\noutperform\noutperformed\noutperforming\noutperforms\noutpitied\noutpities\noutpity\noutpitying\noutplan\noutplanned\noutplanning\noutplans\noutplay\noutplayed\noutplaying\noutplays\noutplod\noutplodded\noutplodding\noutplods\noutpoint\noutpointed\noutpointing\noutpoints\noutpoll\noutpolled\noutpolling\noutpolls\noutport\noutports\noutpost\noutposts\noutpour\noutpoured\noutpouring\noutpourings\noutpours\noutpray\noutprayed\noutpraying\noutprays\noutpreen\noutpreened\noutpreening\noutpreens\noutpress\noutpressed\noutpresses\noutpressing\noutprice\noutpriced\noutprices\noutpricing\noutpull\noutpulled\noutpulling\noutpulls\noutpush\noutpushed\noutpushes\noutpushing\noutput\noutputs\noutputted\noutputting\noutquote\noutquoted\noutquotes\noutquoting\noutrace\noutraced\noutraces\noutracing\noutrage\noutraged\noutrageous\noutrageously\noutrageousness\noutrages\noutraging\noutraise\noutraised\noutraises\noutraising\noutran\noutrance\noutrances\noutrang\noutrange\noutranged\noutranges\noutranging\noutrank\noutranked\noutranking\noutranks\noutrave\noutraved\noutraves\noutraving\noutre\noutreach\noutreached\noutreaches\noutreaching\noutread\noutreading\noutreads\noutridden\noutride\noutrider\noutriders\noutrides\noutriding\noutright\noutrightly\noutring\noutringing\noutrings\noutrival\noutrivaled\noutrivaling\noutrivalled\noutrivalling\noutrivals\noutroar\noutroared\noutroaring\noutroars\noutrock\noutrocked\noutrocking\noutrocks\noutrode\noutroll\noutrolled\noutrolling\noutrolls\noutroot\noutrooted\noutrooting\noutroots\noutrun\noutrung\noutrunning\noutruns\noutrush\noutrushes\nouts\noutsail\noutsailed\noutsailing\noutsails\noutsang\noutsat\noutsavor\noutsavored\noutsavoring\noutsavors\noutsaw\noutscold\noutscolded\noutscolding\noutscolds\noutscore\noutscored\noutscores\noutscoring\noutscorn\noutscorned\noutscorning\noutscorns\noutsee\noutseeing\noutseen\noutsees\noutsell\noutselling\noutsells\noutsert\noutserts\noutserve\noutserved\noutserves\noutserving\noutset\noutsets\noutshame\noutshamed\noutshames\noutshaming\noutshine\noutshined\noutshines\noutshining\noutshone\noutshoot\noutshooting\noutshoots\noutshot\noutshout\noutshouted\noutshouting\noutshouts\noutside\noutsider\noutsiders\noutsides\noutsight\noutsights\noutsin\noutsing\noutsinging\noutsings\noutsinned\noutsinning\noutsins\noutsit\noutsits\noutsitting\noutsize\noutsized\noutsizes\noutskirt\noutskirts\noutsleep\noutsleeping\noutsleeps\noutslept\noutsmart\noutsmarted\noutsmarting\noutsmarts\noutsmile\noutsmiled\noutsmiles\noutsmiling\noutsmoke\noutsmoked\noutsmokes\noutsmoking\noutsnore\noutsnored\noutsnores\noutsnoring\noutsoar\noutsoared\noutsoaring\noutsoars\noutsold\noutsole\noutsoles\noutspan\noutspanned\noutspanning\noutspans\noutspeak\noutspeaking\noutspeaks\noutspell\noutspelled\noutspelling\noutspells\noutspelt\noutspend\noutspending\noutspends\noutspent\noutspoke\noutspoken\noutspokenly\noutspokenness\noutspread\noutspreading\noutspreads\noutstand\noutstanding\noutstandingly\noutstands\noutstare\noutstared\noutstares\noutstaring\noutstart\noutstarted\noutstarting\noutstarts\noutstate\noutstated\noutstates\noutstating\noutstation\noutstations\noutstay\noutstayed\noutstaying\noutstays\noutsteer\noutsteered\noutsteering\noutsteers\noutstood\noutstretch\noutstretched\noutstretches\noutstretching\noutstrip\noutstripped\noutstripping\noutstrips\noutstudied\noutstudies\noutstudy\noutstudying\noutstunt\noutstunted\noutstunting\noutstunts\noutsulk\noutsulked\noutsulking\noutsulks\noutsung\noutswam\noutsware\noutswear\noutswearing\noutswears\noutswim\noutswimming\noutswims\noutswore\noutsworn\noutswum\nouttake\nouttakes\nouttalk\nouttalked\nouttalking\nouttalks\nouttask\nouttasked\nouttasking\nouttasks\nouttell\nouttelling\nouttells\noutthank\noutthanked\noutthanking\noutthanks\noutthink\noutthinking\noutthinks\noutthought\noutthrew\noutthrob\noutthrobbed\noutthrobbing\noutthrobs\noutthrow\noutthrowing\noutthrown\noutthrows\nouttold\nouttower\nouttowered\nouttowering\nouttowers\nouttrade\nouttraded\nouttrades\nouttrading\nouttrick\nouttricked\nouttricking\nouttricks\nouttrot\nouttrots\nouttrotted\nouttrotting\nouttrump\nouttrumped\nouttrumping\nouttrumps\noutturn\noutturns\noutvalue\noutvalued\noutvalues\noutvaluing\noutvaunt\noutvaunted\noutvaunting\noutvaunts\noutvoice\noutvoiced\noutvoices\noutvoicing\noutvote\noutvoted\noutvotes\noutvoting\noutwait\noutwaited\noutwaiting\noutwaits\noutwalk\noutwalked\noutwalking\noutwalks\noutwar\noutward\noutwardly\noutwardness\noutwards\noutwarred\noutwarring\noutwars\noutwash\noutwashes\noutwaste\noutwasted\noutwastes\noutwasting\noutwatch\noutwatched\noutwatches\noutwatching\noutwear\noutwearied\noutwearies\noutwearing\noutwears\noutweary\noutwearying\noutweep\noutweeping\noutweeps\noutweigh\noutweighed\noutweighing\noutweighs\noutwent\noutwept\noutwhirl\noutwhirled\noutwhirling\noutwhirls\noutwile\noutwiled\noutwiles\noutwiling\noutwill\noutwilled\noutwilling\noutwills\noutwind\noutwinded\noutwinding\noutwinds\noutwish\noutwished\noutwishes\noutwishing\noutwit\noutwits\noutwitted\noutwitting\noutwore\noutwork\noutworked\noutworking\noutworks\noutworn\noutwrit\noutwrite\noutwrites\noutwriting\noutwritten\noutwrote\noutwrought\noutyell\noutyelled\noutyelling\noutyells\noutyelp\noutyelped\noutyelping\noutyelps\noutyield\noutyielded\noutyielding\noutyields\nouzel\nouzels\nouzo\nouzos\nova\noval\novalities\novality\novally\novalness\novalnesses\novals\novarial\novarian\novaries\novariole\novarioles\novaritides\novaritis\novary\novate\novately\novation\novations\noven\novenbird\novenbirds\novenlike\novenproof\novens\novenware\novenwares\nover\noverable\noverabundance\noverabundant\noverachiever\noverachievers\noveract\noveracted\noveracting\noveractive\noveracts\noverage\noverages\noverall\noveralls\noveranxious\noverapt\noverarch\noverarched\noverarches\noverarching\noverarm\noverate\noverawe\noverawed\noverawes\noverawing\noverbake\noverbaked\noverbakes\noverbaking\noverbalance\noverbalanced\noverbalances\noverbalancing\noverbear\noverbearing\noverbearingly\noverbears\noverbet\noverbets\noverbetted\noverbetting\noverbid\noverbidden\noverbidding\noverbids\noverbig\noverbite\noverbites\noverblew\noverblow\noverblowing\noverblown\noverblows\noverboard\noverbold\noverbook\noverbooked\noverbooking\noverbooks\noverbore\noverborn\noverborne\noverbought\noverbred\noverbusy\noverbuy\noverbuying\noverbuys\novercall\novercalled\novercalling\novercalls\novercame\novercapitalization\novercapitalizations\novercapitalize\novercapitalized\novercapitalizes\novercapitalizing\novercast\novercasting\novercasts\novercharge\novercharged\novercharges\novercharging\novercoat\novercoats\novercold\novercome\novercomer\novercomers\novercomes\novercoming\novercompensate\novercompensated\novercompensates\novercompensating\novercompensation\novercompensations\novercompensatory\noverconfidence\noverconfident\noverconfidently\novercook\novercooked\novercooking\novercooks\novercool\novercooled\novercooling\novercools\novercoy\novercram\novercrammed\novercramming\novercrams\novercrop\novercropped\novercropping\novercrops\novercrowd\novercrowded\novercrowding\novercrowds\noverdare\noverdared\noverdares\noverdaring\noverdear\noverdeck\noverdecked\noverdecking\noverdecks\noverdid\noverdo\noverdoer\noverdoers\noverdoes\noverdoing\noverdone\noverdose\noverdosed\noverdoses\noverdosing\noverdraft\noverdrafts\noverdraw\noverdrawing\noverdrawn\noverdraws\noverdress\noverdressed\noverdresses\noverdressing\noverdrew\noverdrive\noverdry\noverdue\noverdye\noverdyed\noverdyeing\noverdyes\novereasy\novereat\novereate\novereaten\novereating\novereats\novered\noveremphasis\noveremphasize\noveremphasized\noveremphasizes\noveremphasizing\noverestimate\noverestimated\noverestimates\noverestimating\noverestimation\noverestimations\noverexpose\noverexposed\noverexposes\noverexposing\noverexposure\noverexposures\noverextend\noverextended\noverextending\noverextends\noverfar\noverfast\noverfat\noverfear\noverfeared\noverfearing\noverfears\noverfed\noverfeed\noverfeeding\noverfeeds\noverfill\noverfilled\noverfilling\noverfills\noverfish\noverfished\noverfishes\noverfishing\noverflew\noverflies\noverflight\noverflights\noverflow\noverflowed\noverflowing\noverflown\noverflows\noverfly\noverflying\noverfond\noverfoul\noverfree\noverfull\novergarment\novergarments\novergild\novergilded\novergilding\novergilds\novergilt\novergird\novergirded\novergirding\novergirds\novergirt\noverglad\noverglaze\noverglazes\novergoad\novergoaded\novergoading\novergoads\novergrew\novergrow\novergrowing\novergrown\novergrows\novergrowth\noverhand\noverhanded\noverhanding\noverhands\noverhang\noverhanging\noverhangs\noverhard\noverhate\noverhated\noverhates\noverhating\noverhaul\noverhauled\noverhauling\noverhauls\noverhead\noverheads\noverheap\noverheaped\noverheaping\noverheaps\noverhear\noverheard\noverhearing\noverhears\noverheat\noverheated\noverheating\noverheats\noverheld\noverhigh\noverhold\noverholding\noverholds\noverholy\noverhope\noverhoped\noverhopes\noverhoping\noverhot\noverhung\noverhunt\noverhunted\noverhunting\noverhunts\noveridle\noverindulgence\noverindulgences\noverindulgent\noverinflate\noverinflated\noverinflates\noverinflating\novering\noverissue\noverissued\noverissues\noverissuing\noverjoy\noverjoyed\noverjoying\noverjoys\noverjust\noverkeen\noverkill\noverkilled\noverkilling\noverkills\noverkind\noverlade\noverladed\noverladen\noverlades\noverlading\noverlaid\noverlain\noverland\noverlands\noverlap\noverlapped\noverlapping\noverlaps\noverlate\noverlax\noverlay\noverlaying\noverlays\noverleaf\noverleap\noverleaped\noverleaping\noverleaps\noverleapt\noverlet\noverlets\noverletting\noverlewd\noverlie\noverlies\noverlive\noverlived\noverlives\noverliving\noverload\noverloaded\noverloading\noverloads\noverlong\noverlook\noverlooked\noverlooking\noverlooks\noverlord\noverlorded\noverlording\noverlords\noverloud\noverlove\noverloved\noverloves\noverloving\noverly\noverlying\noverman\novermanned\novermanning\novermans\novermany\novermeek\novermelt\novermelted\novermelting\novermelts\novermen\novermild\novermix\novermixed\novermixes\novermixing\novermuch\novermuches\novernear\noverneat\novernew\novernice\novernight\novernights\noverpaid\noverpass\noverpassed\noverpasses\noverpassing\noverpast\noverpay\noverpaying\noverpayment\noverpayments\noverpays\noverpert\noverplay\noverplayed\noverplaying\noverplays\noverplied\noverplies\noverplus\noverpluses\noverply\noverplying\noverpopulated\noverpopulation\noverpower\noverpowered\noverpowering\noverpoweringly\noverpowers\noverprice\noverpriced\noverprices\noverpricing\noverprint\noverprinted\noverprinting\noverprints\noverproduce\noverproduced\noverproduces\noverproducing\noverproduction\noverproductions\noverprotect\noverprotected\noverprotecting\noverprotection\noverprotective\noverprotects\noverran\noverrank\noverrash\noverrate\noverrated\noverrates\noverrating\noverreach\noverreached\noverreaches\noverreaching\noverreact\noverreacted\noverreacting\noverreaction\noverreactions\noverreacts\noverregulate\noverregulated\noverregulates\noverregulating\noverrich\noverridden\noverride\noverrides\noverriding\noverrife\noverripe\noverrode\noverrude\noverruff\noverruffed\noverruffing\noverruffs\noverrule\noverruled\noverrules\noverruling\noverrun\noverrunning\noverruns\novers\noversad\noversale\noversales\noversalt\noversalted\noversalting\noversalts\noversave\noversaved\noversaves\noversaving\noversaw\noversea\noverseas\noversee\noverseed\noverseeded\noverseeding\noverseeds\noverseeing\noverseen\noverseer\noverseers\noversees\noversell\noverselling\noversells\noverset\noversets\noversetting\noversew\noversewed\noversewing\noversewn\noversews\noversexed\novershadow\novershadowed\novershadowing\novershadows\novershoe\novershoes\novershoot\novershooting\novershoots\novershot\novershots\noversick\noverside\noversides\noversight\noversights\noversimplification\noversimplifications\noversimplified\noversimplifies\noversimplify\noversimplifying\noversize\noversized\noversizes\noverslaugh\noverslaughed\noverslaughing\noverslaughs\noversleep\noversleeping\noversleeps\noverslept\noverslip\noverslipped\noverslipping\noverslips\noverslipt\noverslow\noversoak\noversoaked\noversoaking\noversoaks\noversoft\noversold\noversoon\noversoul\noversouls\noverspend\noverspending\noverspends\noverspent\noverspin\noverspins\noverspread\noverspreading\noverspreads\noverstaff\noverstaffed\noverstaffing\noverstaffs\noverstate\noverstated\noverstatement\noverstatements\noverstates\noverstating\noverstay\noverstayed\noverstaying\noverstays\noverstep\noverstepped\noverstepping\noversteps\noverstir\noverstirred\noverstirring\noverstirs\noverstock\noverstocked\noverstocking\noverstocks\noversubscribe\noversubscribed\noversubscribes\noversubscribing\noversubscription\noversubscriptions\noversup\noversupped\noversupping\noversupplied\noversupplies\noversupply\noversupplying\noversups\noversure\novert\novertake\novertaken\novertakes\novertaking\novertame\novertart\novertask\novertasked\novertasking\novertasks\novertax\novertaxed\novertaxes\novertaxing\noverthin\noverthrew\noverthrow\noverthrowing\noverthrown\noverthrows\novertime\novertimed\novertimes\novertiming\novertire\novertired\novertires\novertiring\novertly\novertness\novertoil\novertoiled\novertoiling\novertoils\novertone\novertones\novertook\novertop\novertopped\novertopping\novertops\novertrim\novertrimmed\novertrimming\novertrims\noverture\novertured\novertures\noverturing\noverturn\noverturned\noverturning\noverturns\noverurge\noverurged\noverurges\noverurging\noveruse\noverused\noveruses\noverusing\noverview\noverviews\novervote\novervoted\novervotes\novervoting\noverwarm\noverwarmed\noverwarming\noverwarms\noverwary\noverweak\noverwear\noverwearing\noverwears\noverween\noverweened\noverweening\noverweens\noverweight\noverwet\noverwets\noverwetted\noverwetting\noverwhelm\noverwhelmed\noverwhelming\noverwhelmingly\noverwhelms\noverwide\noverwily\noverwind\noverwinding\noverwinds\noverwise\noverword\noverwords\noverwore\noverwork\noverworked\noverworking\noverworks\noverworn\noverwound\noverwrite\noverwrites\noverwriting\noverwritten\noverwrote\noverwrought\noverzeal\noverzeals\novibos\novicidal\novicide\novicides\noviducal\noviduct\noviductal\noviducts\noviform\novine\novines\novipara\noviparous\noviposit\noviposited\novipositing\novipositor\novipositors\noviposits\novisac\novisacs\novoid\novoidal\novoids\novoli\novolo\novolos\novonic\novular\novulary\novulate\novulated\novulates\novulating\novulation\novulations\novule\novules\novum\now\nowe\nowed\nowes\nowing\nowl\nowlet\nowlets\nowlish\nowlishly\nowlishness\nowllike\nowls\nown\nownable\nowned\nowner\nowners\nownership\nownerships\nowning\nowns\nowse\nowsen\nox\noxalate\noxalated\noxalates\noxalating\noxalic\noxalis\noxalises\noxazine\noxazines\noxblood\noxbloods\noxbow\noxbows\noxcart\noxcarts\noxen\noxes\noxeye\noxeyes\noxford\noxfords\noxheart\noxhearts\noxid\noxidable\noxidant\noxidants\noxidase\noxidases\noxidasic\noxidate\noxidated\noxidates\noxidating\noxidation\noxidations\noxidative\noxide\noxides\noxidic\noxidise\noxidised\noxidiser\noxidisers\noxidises\noxidising\noxidizable\noxidize\noxidized\noxidizer\noxidizers\noxidizes\noxidizing\noxids\noxim\noxime\noximes\noxims\noxlip\noxlips\noxo\noxpecker\noxpeckers\noxtail\noxtails\noxter\noxters\noxtongue\noxtongues\noxy\noxyacetylene\noxyacid\noxyacids\noxygen\noxygenate\noxygenated\noxygenates\noxygenating\noxygenation\noxygenations\noxygenator\noxygenators\noxygenic\noxygenizable\noxygenless\noxygens\noxymora\noxymoron\noxyphil\noxyphile\noxyphiles\noxyphils\noxysalt\noxysalts\noxysome\noxysomes\noxytocic\noxytocics\noxytocin\noxytocins\noxytone\noxytones\noy\noyer\noyers\noyes\noyesses\noyez\noyster\noystered\noysterer\noysterers\noystering\noysters\nozone\nozones\nozonic\nozonide\nozonides\nozonise\nozonised\nozonises\nozonising\nozonize\nozonized\nozonizer\nozonizers\nozonizes\nozonizing\nozonosphere\nozonous\npa\npabular\npabulum\npabulums\npac\npaca\npacas\npace\npaced\npacemaker\npacemakers\npacemaking\npacer\npacers\npaces\npacha\npachadom\npachadoms\npachalic\npachalics\npachas\npachisi\npachisis\npachouli\npachoulis\npachuco\npachucos\npachyderm\npachyderms\npachysandra\npachysandras\npacifiable\npacific\npacifically\npacification\npacifications\npacificator\npacificators\npacified\npacifier\npacifiers\npacifies\npacifism\npacifisms\npacifist\npacifistic\npacifists\npacify\npacifying\npacing\npack\npackable\npackage\npackaged\npackager\npackagers\npackages\npackaging\npacked\npacker\npackers\npacket\npacketed\npacketing\npackets\npacking\npackinghouse\npackinghouses\npackings\npackly\npackman\npackmen\npackness\npacknesses\npacks\npacksack\npacksacks\npacksaddle\npacksaddles\npackthread\npackwax\npackwaxes\npacs\npact\npaction\npactions\npacts\npad\npadauk\npadauks\npadded\npaddies\npadding\npaddings\npaddle\npaddled\npaddler\npaddlers\npaddles\npaddling\npaddlings\npaddock\npaddocked\npaddocking\npaddocks\npaddy\npadi\npadis\npadishah\npadishahs\npadle\npadles\npadlock\npadlocked\npadlocking\npadlocks\npadnag\npadnags\npadouk\npadouks\npadre\npadres\npadri\npadrone\npadrones\npadroni\npads\npadshah\npadshahs\npaduasoy\npaduasoys\npaean\npaeanism\npaeanisms\npaeans\npaella\npaellas\npaeon\npaeons\npagan\npagandom\npagandoms\npaganise\npaganised\npaganises\npaganish\npaganising\npaganism\npaganisms\npaganist\npaganists\npaganize\npaganized\npaganizes\npaganizing\npagans\npage\npageant\npageantries\npageantry\npageants\npageboy\npageboys\npaged\npager\npages\npaginal\npaginate\npaginated\npaginates\npaginating\npagination\npaginations\npaging\npagod\npagoda\npagodas\npagods\npagurian\npagurians\npagurid\npagurids\npah\npahlavi\npahlavis\npaid\npaik\npaiked\npaiking\npaiks\npail\npailful\npailfuls\npails\npailsful\npain\npainch\npainches\npained\npainful\npainfuller\npainfullest\npainfully\npainfulness\npaining\npainkiller\npainkillers\npainkilling\npainless\npainlessly\npainlessness\npains\npainstaking\npainstakingly\npaint\npaintbrush\npaintbrushes\npainted\npainter\npainterliness\npainterly\npainters\npaintier\npaintiest\npainting\npaintings\npaints\npainty\npair\npaired\npairing\npairs\npaisa\npaisan\npaisano\npaisanos\npaisans\npaisas\npaise\npaisley\npaisleys\npajama\npajamas\npal\npalabra\npalabras\npalace\npalaced\npalaces\npaladin\npaladins\npalais\npalatability\npalatable\npalatableness\npalatably\npalatal\npalatalization\npalatalizations\npalatalize\npalatalized\npalatalizes\npalatalizing\npalatally\npalatals\npalate\npalates\npalatial\npalatially\npalatialness\npalatine\npalatines\npalaver\npalavered\npalavering\npalavers\npalazzi\npalazzo\npale\npalea\npaleae\npaleal\npaled\npaleface\npalefaces\npalely\npaleness\npalenesses\npaleographer\npaleographers\npaleographic\npaleographical\npaleographically\npaleography\npaleontologic\npaleontological\npaleontologies\npaleontologist\npaleontologists\npaleontology\npaler\npales\npalest\npalestra\npalestrae\npalestras\npalet\npaletot\npaletots\npalets\npalette\npalettes\npaleways\npalewise\npalfrey\npalfreys\npalier\npaliest\npalikar\npalikars\npalimpsest\npalimpsests\npalindrome\npalindromes\npaling\npalings\npalinode\npalinodes\npalisade\npalisaded\npalisades\npalisading\npalish\npall\npalladia\npalladic\npalladium\npallbearer\npallbearers\npalled\npallet\npallets\npallette\npallettes\npallia\npallial\npalliate\npalliated\npalliates\npalliating\npalliation\npalliations\npalliative\npalliatively\npalliator\npalliators\npallid\npallidly\npallidness\npallier\npalliest\npalling\npallium\npalliums\npallor\npallors\npalls\npally\npalm\npalmar\npalmary\npalmate\npalmated\npalmately\npalmation\npalmations\npalmed\npalmer\npalmers\npalmette\npalmettes\npalmetto\npalmettoes\npalmettos\npalmier\npalmiest\npalming\npalmist\npalmistry\npalmists\npalmitin\npalmitins\npalmlike\npalms\npalmy\npalmyra\npalmyras\npalomino\npalominos\npalooka\npalookas\npalp\npalpabilities\npalpability\npalpable\npalpably\npalpal\npalpate\npalpated\npalpates\npalpating\npalpation\npalpations\npalpator\npalpators\npalpebra\npalpebrae\npalpi\npalpitate\npalpitated\npalpitates\npalpitating\npalpitation\npalpitations\npalps\npalpus\npals\npalsied\npalsies\npalsy\npalsying\npalter\npaltered\npalterer\npalterers\npaltering\npalters\npaltrier\npaltriest\npaltrily\npaltry\npaludal\npaludism\npaludisms\npaly\npam\npampa\npampas\npampean\npampeans\npamper\npampered\npamperer\npamperers\npampering\npampero\npamperos\npampers\npamphlet\npamphleteer\npamphleteered\npamphleteering\npamphleteers\npamphlets\npams\npan\npanacea\npanacean\npanaceas\npanache\npanaches\npanada\npanadas\npanama\npanamas\npanatela\npanatelas\npancake\npancaked\npancakes\npancaking\npanchax\npanchaxes\npanchromatic\npancreas\npancreases\npancreatic\npanda\npandani\npandanus\npandanuses\npandas\npandect\npandects\npandemic\npandemics\npandemonium\npandemoniums\npander\npandered\npanderer\npanderers\npandering\npanders\npandied\npandies\npandit\npandits\npandoor\npandoors\npandora\npandoras\npandore\npandores\npandour\npandours\npandowdies\npandowdy\npandura\npanduras\npandy\npandying\npane\npaned\npanegyric\npanegyrical\npanegyrically\npanegyrics\npanegyrist\npanegyrists\npanel\npaneled\npaneling\npanelings\npanelist\npanelists\npanelled\npanelling\npanels\npanes\npanetela\npanetelas\npanfish\npanfishes\npanful\npanfuls\npang\npanga\npangas\npanged\npangen\npangens\npanging\npangolin\npangolins\npangs\npanhandle\npanhandled\npanhandler\npanhandlers\npanhandles\npanhandling\npanhuman\npanic\npanicked\npanickier\npanickiest\npanicking\npanicky\npanicle\npanicled\npanicles\npanics\npanicum\npanicums\npanier\npaniers\npanjandrum\npanjandrums\npanmixia\npanmixias\npanne\npanned\npannes\npannier\npanniers\npannikin\npannikins\npanning\npanocha\npanochas\npanoche\npanoches\npanoplies\npanoply\npanoptic\npanorama\npanoramas\npanoramic\npanoramical\npanoramically\npanpipe\npanpipes\npans\npansies\npansophies\npansophy\npansy\npant\npantaloon\npantaloons\npanted\npantheism\npantheisms\npantheist\npantheistic\npantheistical\npantheistically\npantheists\npantheon\npantheons\npanther\npanthers\npantie\npanties\npantile\npantiled\npantiles\npanting\npanto\npantofle\npantofles\npantograph\npantographic\npantographs\npantomime\npantomimed\npantomimes\npantomimic\npantomiming\npantomimist\npantomimists\npantoum\npantoums\npantries\npantry\npants\npantsuit\npantsuits\npanty\npanzer\npanzers\npap\npapa\npapacies\npapacy\npapain\npapains\npapal\npapally\npapas\npapaw\npapaws\npapaya\npapayan\npapayas\npaper\npaperback\npaperbacks\npaperboard\npaperbound\npaperboy\npaperboys\npapered\npaperer\npaperers\npaperhanger\npaperhangers\npaperhanging\npapering\npapers\npaperweight\npaperweights\npaperwork\npapery\npaphian\npaphians\npapilla\npapillae\npapillar\npapillary\npapillon\npapillons\npapillose\npapist\npapistic\npapistries\npapistry\npapists\npapoose\npapooses\npappi\npappier\npappies\npappiest\npappoose\npappooses\npappose\npappous\npappus\npappy\npaprica\npapricas\npaprika\npaprikas\npaps\npapula\npapulae\npapular\npapule\npapules\npapulose\npapyral\npapyri\npapyrian\npapyrine\npapyrus\npapyruses\npar\npara\nparable\nparables\nparabola\nparabolas\nparabolic\nparabolically\nparaboloid\nparaboloidal\nparaboloids\nparachor\nparachors\nparachute\nparachuted\nparachutes\nparachuting\nparachutist\nparachutists\nparade\nparaded\nparader\nparaders\nparades\nparadigm\nparadigmatic\nparadigms\nparading\nparadise\nparadises\nparadisiac\nparadisiacal\nparados\nparadoses\nparadox\nparadoxes\nparadoxical\nparadoxically\nparadoxicalness\nparadrop\nparadropped\nparadropping\nparadrops\nparaffin\nparaffined\nparaffinic\nparaffining\nparaffins\nparaform\nparaforms\nparagoge\nparagoges\nparagon\nparagoned\nparagoning\nparagons\nparagraph\nparagrapher\nparagraphers\nparagraphic\nparagraphs\nparajournalism\nparakeet\nparakeets\nparalegal\nparalegals\nparallactic\nparallax\nparallaxes\nparallel\nparalleled\nparalleleling\nparallelelled\nparallelelling\nparallelels\nparallelepiped\nparallelepipeds\nparalleling\nparallelism\nparallelisms\nparallelled\nparallelling\nparallelogram\nparallelograms\nparallels\nparalyse\nparalysed\nparalyses\nparalysing\nparalysis\nparalytic\nparalytically\nparalytics\nparalyze\nparalyzed\nparalyzer\nparalyzers\nparalyzes\nparalyzing\nparalyzingly\nparamagnet\nparamagnetic\nparamagnetism\nparamagnetisms\nparamagnets\nparamecia\nparamecium\nparamedic\nparamedical\nparamedics\nparament\nparamenta\nparaments\nparameter\nparameterization\nparameterize\nparameterized\nparameterizes\nparameterizing\nparameters\nparametric\nparametrically\nparametrization\nparametrize\nparametrized\nparametrizes\nparametrizing\nparamilitary\nparamo\nparamos\nparamount\nparamountcy\nparamour\nparamours\nparang\nparangs\nparanoea\nparanoeas\nparanoia\nparanoiac\nparanoias\nparanoid\nparanoids\nparapet\nparapeted\nparapets\nparaph\nparaphernalia\nparaphrasable\nparaphrase\nparaphrased\nparaphraser\nparaphrasers\nparaphrases\nparaphrasing\nparaphrastic\nparaphrastically\nparaphs\nparaplegia\nparaplegic\nparaplegics\nparaprofessional\nparaprofessionals\nparapsychological\nparapsychologist\nparapsychologists\nparapsychology\nparaquat\nparaquats\nparaquet\nparaquets\nparas\nparasang\nparasangs\nparashah\nparashioth\nparashoth\nparasite\nparasites\nparasitic\nparasitically\nparasitism\nparasitize\nparasitized\nparasitizes\nparasitizing\nparasitological\nparasitologist\nparasitologists\nparasitology\nparasol\nparasols\nparasympathetic\nparasympathetics\nparatroop\nparatrooper\nparatroopers\nparatroops\nparavane\nparavanes\nparboil\nparboiled\nparboiling\nparboils\nparbuckle\nparbuckled\nparbuckles\nparbuckling\nparcel\nparceled\nparceling\nparcelled\nparcelling\nparcels\nparcener\nparceners\nparch\nparched\nparches\nparching\nparchment\nparchments\npard\npardah\npardahs\npardee\npardi\npardie\npardine\npardner\npardners\npardon\npardonable\npardonableness\npardonably\npardoned\npardoner\npardoners\npardoning\npardons\npards\npardy\npare\nparecism\nparecisms\npared\nparegoric\npareira\npareiras\nparenchyma\nparenchymal\nparenchymatous\nparent\nparentage\nparentages\nparental\nparentally\nparented\nparentheses\nparenthesis\nparenthesize\nparenthesized\nparenthesizes\nparenthesizing\nparenthetic\nparenthetical\nparenthetically\nparenthood\nparenthoods\nparenting\nparents\nparer\nparers\npares\npareses\nparesis\nparetic\nparetics\npareu\npareus\npareve\nparfait\nparfaits\nparflesh\nparfleshes\nparfocal\nparge\nparged\nparges\nparget\npargeted\npargeting\npargets\npargetted\npargetting\nparging\npargo\npargos\nparhelia\nparhelic\npariah\npariahs\nparian\nparians\nparies\nparietal\nparietals\nparietes\nparing\nparings\nparis\nparises\nparish\nparishes\nparishioner\nparishioners\nparities\nparity\npark\nparka\nparkas\nparked\nparker\nparkers\nparking\nparkings\nparkland\nparklands\nparklike\nparks\nparkway\nparkways\nparlance\nparlances\nparlando\nparlante\nparlay\nparlayed\nparlaying\nparlays\nparle\nparled\nparles\nparley\nparleyed\nparleyer\nparleyers\nparleying\nparleys\nparliament\nparliamentarian\nparliamentarians\nparliamentary\nparliaments\nparling\nparlor\nparlors\nparlour\nparlours\nparlous\nparochial\nparochialism\nparochialisms\nparochially\nparodic\nparodied\nparodies\nparodist\nparodistic\nparodists\nparodoi\nparodos\nparody\nparodying\nparol\nparole\nparoled\nparolee\nparolees\nparoles\nparoling\nparols\nparonym\nparonyms\nparoquet\nparoquets\nparotic\nparotid\nparotids\nparotoid\nparotoids\nparous\nparoxysm\nparoxysmal\nparoxysms\nparquet\nparqueted\nparqueting\nparquetries\nparquetry\nparquets\nparr\nparral\nparrals\nparred\nparrel\nparrels\nparricidal\nparricide\nparricides\nparridge\nparridges\nparried\nparries\nparring\nparritch\nparritches\nparroket\nparrokets\nparrot\nparroted\nparroter\nparroters\nparroting\nparrots\nparroty\nparrs\nparry\nparrying\npars\nparsable\nparse\nparsec\nparsecs\nparsed\nparser\nparsers\nparses\nparsimonious\nparsimoniously\nparsimony\nparsing\nparsley\nparsleys\nparsnip\nparsnips\nparson\nparsonage\nparsonages\nparsonic\nparsons\npart\npartake\npartaken\npartaker\npartakers\npartakes\npartaking\npartan\npartans\nparted\nparterre\nparterres\nparthenogenetic\nparthenogenetically\npartial\npartialities\npartiality\npartially\npartials\npartible\nparticipant\nparticipants\nparticipate\nparticipated\nparticipates\nparticipating\nparticipation\nparticipations\nparticipative\nparticipator\nparticipators\nparticipatory\nparticipial\nparticipially\nparticiple\nparticiples\nparticle\nparticleboard\nparticles\nparticular\nparticularism\nparticularist\nparticularistic\nparticularists\nparticularities\nparticularity\nparticularization\nparticularizations\nparticularize\nparticularized\nparticularizes\nparticularizing\nparticularly\nparticulars\nparticulate\nparticulates\npartied\nparties\nparting\npartings\npartisan\npartisans\npartisanship\npartita\npartitas\npartite\npartition\npartitioned\npartitioning\npartitionist\npartitionists\npartitions\npartitive\npartitively\npartizan\npartizans\npartlet\npartlets\npartly\npartner\npartnered\npartnering\npartners\npartnership\npartnerships\nparton\npartons\npartook\npartridge\npartridges\nparts\nparturition\nparturitions\npartway\nparty\npartying\nparura\nparuras\nparure\nparures\nparve\nparvenu\nparvenue\nparvenus\nparvis\nparvise\nparvises\nparvolin\nparvolins\npas\npaschal\npaschals\npase\npaseo\npaseos\npases\npash\npasha\npashadom\npashadoms\npashalic\npashalics\npashalik\npashaliks\npashas\npashed\npashes\npashing\npasquil\npasquils\npasquinade\npasquinades\npass\npassable\npassably\npassade\npassades\npassado\npassadoes\npassados\npassage\npassaged\npassages\npassageway\npassageways\npassaging\npassant\npassband\npassbands\npassbook\npassbooks\npasse\npassed\npassee\npassel\npassels\npassenger\npassengers\npasser\npasserby\npassers\npassersby\npasses\npassible\npassim\npassing\npassings\npassion\npassional\npassionate\npassionately\npassionateness\npassionless\npassions\npassive\npassively\npassiveness\npassives\npassivism\npassivist\npassivists\npassivities\npassivity\npasskey\npasskeys\npassless\npassover\npassovers\npassport\npassports\npassus\npassuses\npassword\npasswords\npast\npasta\npastas\npaste\npasteboard\npasteboards\npasted\npastel\npastelist\npastelists\npastellist\npastellists\npastels\npaster\npastern\npasterns\npasters\npastes\npasteurization\npasteurizations\npasteurize\npasteurized\npasteurizer\npasteurizers\npasteurizes\npasteurizing\npasticci\npastiche\npastiches\npastier\npasties\npastiest\npastil\npastille\npastilles\npastils\npastime\npastimes\npastina\npastinas\npastiness\npasting\npastness\npastnesses\npastor\npastoral\npastoralism\npastorally\npastorals\npastorate\npastorates\npastored\npastoring\npastors\npastrami\npastramis\npastries\npastromi\npastromis\npastry\npasts\npasturage\npasturages\npastural\npasture\npastured\npasturer\npasturers\npastures\npasturing\npasty\npat\npataca\npatacas\npatagia\npatagium\npatamar\npatamars\npatch\npatched\npatcher\npatchers\npatches\npatchier\npatchiest\npatchily\npatchiness\npatching\npatchwork\npatchworks\npatchy\npate\npated\npatella\npatellae\npatellar\npatellas\npaten\npatencies\npatency\npatens\npatent\npatentability\npatentable\npatented\npatentee\npatentees\npatenting\npatently\npatentor\npatentors\npatents\npater\npaternal\npaternalism\npaternalist\npaternalistic\npaternalistically\npaternalists\npaternally\npaternities\npaternity\npaternoster\npaternosters\npaters\npates\npath\npathetic\npathetical\npathetically\npathfinder\npathfinders\npathfinding\npathless\npathogen\npathogenesis\npathogenetic\npathogenic\npathogenicity\npathogens\npathological\npathologically\npathologies\npathologist\npathologists\npathology\npathos\npathoses\npaths\npathway\npathways\npatience\npatiences\npatient\npatienter\npatientest\npatiently\npatients\npatin\npatina\npatinae\npatinas\npatine\npatined\npatines\npatining\npatins\npatio\npatios\npatly\npatness\npatnesses\npatois\npatriarch\npatriarchal\npatriarchate\npatriarchates\npatriarchies\npatriarchs\npatriarchy\npatrician\npatricians\npatriciate\npatriciates\npatricidal\npatricide\npatricides\npatrimonial\npatrimonies\npatrimony\npatriot\npatriotic\npatriotically\npatriotism\npatriots\npatrol\npatrolled\npatroller\npatrollers\npatrolling\npatrolman\npatrolmen\npatrols\npatron\npatronage\npatronages\npatronal\npatroness\npatronesses\npatronize\npatronized\npatronizes\npatronizing\npatronizingly\npatronly\npatrons\npatronymic\npatronymics\npatroon\npatroons\npats\npatsies\npatsy\npattamar\npattamars\npatted\npattee\npatten\npattens\npatter\npattered\npatterer\npatterers\npattering\npattern\npatterned\npatterning\npatternings\npatternless\npatterns\npatters\npattie\npatties\npatting\npatty\npattypan\npattypans\npatulent\npatulous\npaty\npaucities\npaucity\npaughty\npauldron\npauldrons\npaulin\npaulins\npaunch\npaunched\npaunches\npaunchier\npaunchiest\npaunchiness\npaunchy\npauper\npaupered\npaupering\npauperism\npauperize\npauperized\npauperizes\npauperizing\npaupers\npausal\npause\npaused\npauser\npausers\npauses\npausing\npavan\npavane\npavanes\npavans\npave\npaved\npavement\npavements\npaver\npavers\npaves\npavid\npavilion\npavilioned\npavilioning\npavilions\npavin\npaving\npavings\npavins\npavior\npaviors\npaviour\npaviours\npavis\npavise\npaviser\npavisers\npavises\npavonine\npaw\npawed\npawer\npawers\npawing\npawkier\npawkiest\npawkily\npawky\npawl\npawls\npawn\npawnable\npawnage\npawnages\npawnbroker\npawnbrokers\npawned\npawnee\npawnees\npawner\npawners\npawning\npawnor\npawnors\npawns\npawnshop\npawnshops\npawpaw\npawpaws\npaws\npax\npaxes\npaxwax\npaxwaxes\npay\npayable\npayably\npaycheck\npaychecks\npayday\npaydays\npayed\npayee\npayees\npayer\npayers\npaying\npayload\npayloads\npaymaster\npaymasters\npayment\npayments\npaynim\npaynims\npayoff\npayoffs\npayola\npayolas\npayor\npayors\npayroll\npayrolls\npays\npe\npea\npeace\npeaceable\npeaceableness\npeaceably\npeaced\npeaceful\npeacefuller\npeacefullest\npeacefully\npeacefulness\npeacekeeper\npeacekeepers\npeacekeeping\npeacemaker\npeacemakers\npeacemaking\npeaces\npeacetime\npeacetimes\npeach\npeached\npeacher\npeachers\npeaches\npeachier\npeachiest\npeaching\npeachy\npeacing\npeacoat\npeacoats\npeacock\npeacocked\npeacockier\npeacockiest\npeacocking\npeacockish\npeacocks\npeacocky\npeafowl\npeafowls\npeag\npeage\npeages\npeags\npeahen\npeahens\npeak\npeaked\npeakedness\npeakier\npeakiest\npeaking\npeakish\npeakless\npeaklike\npeaks\npeaky\npeal\npealed\npealike\npealing\npeals\npean\npeans\npeanut\npeanuts\npear\npearl\npearlash\npearlashes\npearled\npearler\npearlers\npearlier\npearliest\npearling\npearlite\npearlites\npearlized\npearls\npearly\npearmain\npearmains\npears\npeart\npearter\npeartest\npeartly\npeas\npeasant\npeasantry\npeasants\npeascod\npeascods\npease\npeasecod\npeasecods\npeasen\npeases\npeat\npeatier\npeatiest\npeats\npeaty\npeavey\npeaveys\npeavies\npeavy\npebble\npebbled\npebbles\npebblier\npebbliest\npebbling\npebbly\npecan\npecans\npeccable\npeccadillo\npeccadilloes\npeccadillos\npeccancies\npeccancy\npeccant\npeccaries\npeccary\npeccavi\npeccavis\npech\npechan\npechans\npeched\npeching\npechs\npeck\npecked\npecker\npeckers\npeckier\npeckiest\npecking\npecks\npecky\npecs\npectase\npectases\npectate\npectates\npecten\npectens\npectic\npectin\npectinate\npectination\npectinations\npectines\npectins\npectize\npectized\npectizes\npectizing\npectoral\npectorals\npeculate\npeculated\npeculates\npeculating\npeculation\npeculations\npeculator\npeculators\npeculia\npeculiar\npeculiarities\npeculiarity\npeculiarly\npeculiars\npeculium\npecuniarily\npecuniary\nped\npedagog\npedagogical\npedagogically\npedagogics\npedagogies\npedagogs\npedagogue\npedagogues\npedagogy\npedal\npedaled\npedalfer\npedalfers\npedalier\npedaliers\npedaling\npedalled\npedalling\npedals\npedant\npedantic\npedantically\npedantries\npedantry\npedants\npedate\npedately\npeddle\npeddled\npeddler\npeddleries\npeddlers\npeddlery\npeddles\npeddling\npederast\npederasts\npedes\npedestal\npedestaled\npedestaling\npedestalled\npedestalling\npedestals\npedestrian\npedestrianism\npedestrianisms\npedestrians\npediatric\npediatrician\npediatricians\npediatrics\npediatrist\npediatrists\npedicab\npedicabs\npedicel\npedicels\npedicle\npedicled\npedicles\npedicure\npedicured\npedicures\npedicuring\npedicurist\npedicurists\npediform\npedigree\npedigreed\npedigrees\npediment\npedimental\npediments\npedipalp\npedipalps\npedlar\npedlaries\npedlars\npedlary\npedler\npedlers\npedocal\npedocals\npedologies\npedology\npedometer\npedometers\npedro\npedros\npeds\npeduncle\npeduncles\npee\npeebeen\npeebeens\npeed\npeeing\npeek\npeekaboo\npeekaboos\npeeked\npeeking\npeeks\npeel\npeelable\npeeled\npeeler\npeelers\npeeling\npeelings\npeels\npeen\npeened\npeening\npeens\npeep\npeeped\npeeper\npeepers\npeephole\npeepholes\npeeping\npeeps\npeepshow\npeepshows\npeepul\npeepuls\npeer\npeerage\npeerages\npeered\npeeress\npeeresses\npeerie\npeeries\npeering\npeerless\npeers\npeery\npees\npeesweep\npeesweeps\npeetweet\npeetweets\npeeve\npeeved\npeeves\npeeving\npeevish\npeevishly\npeevishness\npeewee\npeewees\npeewit\npeewits\npeg\npegboard\npegboards\npegbox\npegboxes\npegged\npegging\npegless\npeglike\npegmatite\npegs\npeh\npehs\npeignoir\npeignoirs\npein\npeined\npeining\npeins\npeise\npeised\npeises\npeising\npejorative\npejoratively\npekan\npekans\npeke\npekes\npekin\npekins\npekoe\npekoes\npelage\npelages\npelagial\npelagic\npele\npelerine\npelerines\npeles\npelf\npelfs\npelican\npelicans\npelisse\npelisses\npelite\npelites\npelitic\npellagra\npellagras\npellet\npelletal\npelleted\npelleting\npelletize\npelletized\npelletizes\npelletizing\npellets\npellicle\npellicles\npellmell\npellmells\npellucid\npellucidly\npelon\npeloria\npelorian\npelorias\npeloric\npelorus\npeloruses\npelota\npelotas\npelt\npeltast\npeltasts\npeltate\npelted\npelter\npelters\npelting\npeltries\npeltry\npelts\npelves\npelvic\npelvics\npelvis\npelvises\npembina\npembinas\npemican\npemicans\npemmican\npemmicans\npemoline\npemolines\npemphix\npemphixes\npen\npenal\npenalise\npenalised\npenalises\npenalising\npenalities\npenality\npenalization\npenalizations\npenalize\npenalized\npenalizes\npenalizing\npenally\npenalties\npenalty\npenance\npenanced\npenances\npenancing\npenang\npenangs\npenates\npence\npencel\npencels\npenchant\npenchants\npencil\npenciled\npenciler\npencilers\npenciling\npencilled\npenciller\npencillers\npencilling\npencils\npend\npendant\npendants\npended\npendencies\npendency\npendent\npendentive\npendently\npendents\npending\npends\npendular\npendulous\npendulousness\npendulum\npendulums\npenes\npenetrability\npenetrable\npenetrant\npenetrants\npenetrate\npenetrated\npenetrates\npenetrating\npenetratingly\npenetration\npenetrations\npenetrative\npenetrometer\npenetrometers\npengo\npengos\npenguin\npenguins\npenholder\npenholders\npenial\npenicil\npenicillin\npenicillins\npenicils\npenile\npeninsula\npeninsular\npeninsulas\npenis\npenises\npenitence\npenitences\npenitent\npenitential\npenitentially\npenitentiaries\npenitentiary\npenitently\npenitents\npenknife\npenknives\npenlight\npenlights\npenlite\npenlites\npenman\npenmanship\npenmanships\npenmen\npenna\npennae\npenname\npennames\npennant\npennants\npennate\npennated\npenned\npenner\npenners\npenni\npennia\npennies\npenniless\npennine\npennines\npenning\npennis\npennon\npennoned\npennons\npenny\npennyweight\npennyweights\npenoche\npenoches\npenological\npenologies\npenologist\npenologists\npenology\npenoncel\npenoncels\npenpoint\npenpoints\npens\npensee\npensees\npensil\npensile\npensils\npension\npensionable\npensionaries\npensionary\npensione\npensioned\npensioner\npensioners\npensiones\npensioning\npensionless\npensions\npensive\npensively\npensiveness\npenster\npensters\npenstock\npenstocks\npent\npentacle\npentacles\npentad\npentads\npentagon\npentagonal\npentagons\npentagram\npentagrams\npentahedral\npentahedron\npentahedrons\npentameter\npentameters\npentane\npentanes\npentarch\npentarchs\npentathlon\npentathlons\npenthouse\npenthouses\npentomic\npentosan\npentosans\npentose\npentoses\npentyl\npentyls\npenuche\npenuches\npenuchi\npenuchis\npenuchle\npenuchles\npenuckle\npenuckles\npenult\npenults\npenumbra\npenumbrae\npenumbral\npenumbras\npenuries\npenurious\npenuriously\npenuriousness\npenury\npeon\npeonage\npeonages\npeones\npeonies\npeonism\npeonisms\npeons\npeony\npeople\npeopled\npeopler\npeoplers\npeoples\npeopling\npep\npeperoni\npeperonis\npepla\npeplos\npeploses\npeplum\npeplumed\npeplums\npeplus\npepluses\npepo\npeponida\npeponidas\npeponium\npeponiums\npepos\npepped\npepper\npeppercorn\npeppercorns\npeppered\npepperer\npepperers\npeppering\npeppermint\npeppermints\npepperoni\npepperonis\npeppers\npeppery\npeppier\npeppiest\npeppily\npepping\npeppy\npeps\npepsin\npepsine\npepsines\npepsins\npeptic\npeptics\npeptid\npeptide\npeptides\npeptidic\npeptids\npeptize\npeptized\npeptizer\npeptizers\npeptizes\npeptizing\npeptone\npeptones\npeptonic\nper\nperacid\nperacids\nperambulate\nperambulated\nperambulates\nperambulating\nperambulation\nperambulations\nperambulatory\npercale\npercales\nperceivable\nperceivably\nperceive\nperceived\nperceiver\nperceivers\nperceives\nperceiving\npercent\npercentage\npercentages\npercentile\npercentiles\npercents\npercept\nperceptibility\nperceptible\nperceptibly\nperception\nperceptional\nperceptions\nperceptive\nperceptively\nperceptiveness\nperceptivity\npercepts\nperceptual\nperceptually\nperch\nperchance\nperched\npercher\nperchers\nperches\nperching\npercipience\npercipiences\npercipient\npercipients\npercoid\npercoids\npercolate\npercolated\npercolates\npercolating\npercolation\npercolations\npercolator\npercolators\npercuss\npercussed\npercusses\npercussing\npercussion\npercussionist\npercussionists\npercussions\npercussive\npercussively\npercussiveness\nperdie\nperdition\nperdu\nperdue\nperdues\nperdurability\nperdurable\nperdurably\nperdus\nperdy\nperea\nperegrin\nperegrinate\nperegrinated\nperegrinates\nperegrinating\nperegrination\nperegrinations\nperegrins\nperemptorily\nperemptoriness\nperemptory\nperennial\nperennially\nperennials\nperfect\nperfecta\nperfectas\nperfected\nperfecter\nperfecters\nperfectest\nperfectibility\nperfectible\nperfecting\nperfection\nperfectionism\nperfectionist\nperfectionists\nperfections\nperfective\nperfectively\nperfectiveness\nperfectives\nperfectivity\nperfectly\nperfectness\nperfecto\nperfectos\nperfects\nperfidies\nperfidious\nperfidiously\nperfidiousness\nperfidy\nperforate\nperforated\nperforates\nperforating\nperforation\nperforations\nperforator\nperforators\nperforce\nperform\nperformable\nperformance\nperformances\nperformed\nperformer\nperformers\nperforming\nperforms\nperfume\nperfumed\nperfumer\nperfumeries\nperfumers\nperfumery\nperfumes\nperfuming\nperfunctorily\nperfunctoriness\nperfunctory\nperfuse\nperfused\nperfuses\nperfusing\npergola\npergolas\nperhaps\nperhapses\nperi\nperianth\nperianths\nperiapt\nperiapts\nperiblem\nperiblems\npericarp\npericarps\npericopae\npericope\npericopes\nperiderm\nperiderms\nperidia\nperidial\nperidium\nperidot\nperidots\nperigeal\nperigean\nperigee\nperigees\nperigon\nperigons\nperigynies\nperigyny\nperihelion\nperihelions\nperil\nperiled\nperiling\nperilla\nperillas\nperilled\nperilling\nperilous\nperilously\nperilousness\nperils\nperilune\nperilunes\nperimeter\nperimeters\nperinea\nperineal\nperineum\nperiod\nperiodic\nperiodical\nperiodically\nperiodicals\nperiodicity\nperiodid\nperiodids\nperiods\nperiotic\nperipatetic\nperipatetics\nperipeties\nperipety\nperipheral\nperipherally\nperipherals\nperipheries\nperiphery\nperiphrases\nperiphrasis\nperiphrastic\nperiphrastically\nperipter\nperipters\nperique\nperiques\nperis\nperisarc\nperisarcs\nperiscope\nperiscopes\nperiscopic\nperish\nperishability\nperishable\nperishables\nperished\nperishes\nperishing\nperistalses\nperistalsis\nperistaltic\nperistaltically\nperistyle\nperistyles\nperitonea\nperitoneum\nperitoneums\nperitonitis\nperiwig\nperiwigs\nperiwinkle\nperiwinkles\nperjure\nperjured\nperjurer\nperjurers\nperjures\nperjuries\nperjuring\nperjurious\nperjury\nperk\nperked\nperkier\nperkiest\nperkily\nperkiness\nperking\nperkish\nperks\nperky\nperlite\nperlites\nperlitic\nperm\npermafrost\npermafrosts\npermanence\npermanencies\npermanency\npermanent\npermanently\npermanentness\npermanents\npermeability\npermeable\npermease\npermeases\npermeate\npermeated\npermeates\npermeating\npermeation\npermeations\npermeative\npermissibility\npermissible\npermissibleness\npermissibly\npermission\npermissions\npermissive\npermissively\npermissiveness\npermit\npermits\npermitted\npermittee\npermittees\npermitter\npermitters\npermitting\npermittivity\nperms\npermutable\npermutation\npermutational\npermutations\npermute\npermuted\npermutes\npermuting\npernicious\nperniciously\nperniciousness\nperoneal\nperoral\nperorate\nperorated\nperorates\nperorating\nperoration\nperorational\nperorations\nperoxid\nperoxide\nperoxided\nperoxides\nperoxiding\nperoxids\nperpend\nperpended\nperpendicular\nperpendicularity\nperpendicularly\nperpendiculars\nperpending\nperpends\nperpent\nperpents\nperpetrate\nperpetrated\nperpetrates\nperpetrating\nperpetration\nperpetrations\nperpetrator\nperpetrators\nperpetual\nperpetually\nperpetuate\nperpetuated\nperpetuates\nperpetuating\nperpetuation\nperpetuations\nperpetuities\nperpetuity\nperplex\nperplexed\nperplexedly\nperplexes\nperplexing\nperplexities\nperplexity\nperquisite\nperquisites\nperries\nperron\nperrons\nperry\npersalt\npersalts\nperse\npersecute\npersecuted\npersecutes\npersecuting\npersecution\npersecutions\npersecutive\npersecutor\npersecutors\npersecutory\nperses\nperseverance\nperseverances\npersevere\npersevered\nperseveres\npersevering\npersiflage\npersimmon\npersimmons\npersist\npersisted\npersistence\npersistency\npersistent\npersistently\npersisting\npersists\npersnickety\nperson\npersona\npersonable\npersonableness\npersonae\npersonage\npersonages\npersonal\npersonalism\npersonalisms\npersonalist\npersonalistic\npersonalists\npersonalities\npersonality\npersonalization\npersonalizations\npersonalize\npersonalized\npersonalizes\npersonalizing\npersonally\npersonals\npersonalties\npersonalty\npersonas\npersonate\npersonated\npersonates\npersonating\npersonation\npersonations\npersonative\npersonator\npersonators\npersonification\npersonifications\npersonified\npersonifier\npersonifiers\npersonifies\npersonify\npersonifying\npersonnel\npersonnels\npersons\nperspectival\nperspective\nperspectively\nperspectives\nperspicacious\nperspicaciously\nperspicaciousness\nperspicacity\nperspicuities\nperspicuity\nperspicuous\nperspicuously\nperspicuousness\nperspiration\nperspirations\nperspire\nperspired\nperspires\nperspiring\nperspiry\npersuadable\npersuade\npersuaded\npersuades\npersuading\npersuasible\npersuasion\npersuasions\npersuasive\npersuasively\npersuasiveness\npert\npertain\npertained\npertaining\npertains\nperter\npertest\npertinacious\npertinaciously\npertinaciousness\npertinacities\npertinacity\npertinence\npertinencies\npertinency\npertinent\npertinently\npertly\npertness\npertnesses\nperturb\nperturbable\nperturbation\nperturbational\nperturbations\nperturbed\nperturbing\nperturbs\nperuke\nperukes\nperusal\nperusals\nperuse\nperused\nperuser\nperusers\nperuses\nperusing\npervade\npervaded\npervader\npervaders\npervades\npervading\npervasion\npervasions\npervasive\npervasively\npervasiveness\nperverse\nperversely\nperverseness\nperversion\nperversions\nperversities\nperversity\nperversive\npervert\nperverted\npervertedly\npervertedness\nperverting\nperverts\npervious\nperviousness\npes\npesade\npesades\npeseta\npesetas\npesewa\npesewas\npeskier\npeskiest\npeskily\npesky\npeso\npesos\npessaries\npessary\npessimism\npessimisms\npessimist\npessimistic\npessimistically\npessimists\npest\npester\npestered\npesterer\npesterers\npestering\npesters\npesthole\npestholes\npesticide\npesticides\npestiferous\npestiferously\npestiferousness\npestilence\npestilences\npestilent\npestilential\npestilentially\npestilently\npestle\npestled\npestles\npestling\npesto\npests\npet\npetal\npetaled\npetaline\npetalled\npetallike\npetalodies\npetalody\npetaloid\npetalous\npetals\npetard\npetards\npetasos\npetasoses\npetasus\npetasuses\npetcock\npetcocks\npetechia\npetechiae\npeter\npetered\npetering\npeters\npetiolar\npetiole\npetioled\npetioles\npetit\npetite\npetiteness\npetites\npetition\npetitionary\npetitioned\npetitioner\npetitioners\npetitioning\npetitions\npetrel\npetrels\npetrifaction\npetrifactions\npetrification\npetrifications\npetrified\npetrifies\npetrify\npetrifying\npetrochemical\npetrochemicals\npetrodollars\npetrographer\npetrographers\npetrographic\npetrographical\npetrographically\npetrography\npetrol\npetrolatum\npetroleum\npetroleums\npetrolic\npetrologic\npetrological\npetrologically\npetrologist\npetrologists\npetrology\npetrols\npetronel\npetronels\npetrosal\npetrous\npets\npetted\npettedly\npetter\npetters\npetti\npetticoat\npetticoats\npettier\npettiest\npettifog\npettifogged\npettifogger\npettifoggeries\npettifoggers\npettifoggery\npettifogging\npettifogs\npettily\npettiness\npetting\npettish\npettishly\npettishness\npettle\npettled\npettles\npettling\npetto\npetty\npetulance\npetulancies\npetulancy\npetulant\npetulantly\npetunia\npetunias\npetuntse\npetuntses\npetuntze\npetuntzes\npew\npewee\npewees\npewit\npewits\npews\npewter\npewterer\npewterers\npewters\npeyote\npeyotes\npeyotl\npeyotls\npeytral\npeytrals\npeytrel\npeytrels\npfennig\npfennige\npfennigs\npfft\npfui\nphaeton\nphaetons\nphage\nphages\nphalange\nphalanges\nphalanx\nphalanxes\nphalli\nphallic\nphallicism\nphallicisms\nphallism\nphallisms\nphallist\nphallists\nphallus\nphalluses\nphantasied\nphantasies\nphantasm\nphantasmagoria\nphantasmagoric\nphantasmal\nphantasmic\nphantasms\nphantast\nphantasts\nphantasy\nphantasying\nphantom\nphantomlike\nphantoms\npharaoh\npharaohs\npharaonic\npharisaic\npharisaical\npharisaically\npharisee\npharisees\npharmaceutical\npharmaceutically\npharmaceuticals\npharmacies\npharmacist\npharmacists\npharmacological\npharmacologically\npharmacologist\npharmacologists\npharmacology\npharmacy\npharos\npharoses\npharyngeal\npharynges\npharynx\npharynxes\nphase\nphaseal\nphased\nphaseout\nphaseouts\nphases\nphasic\nphasing\nphasis\nphasmid\nphasmids\nphat\nphatic\npheasant\npheasants\nphellem\nphellems\nphelonia\nphenazin\nphenazins\nphenetic\nphenetol\nphenetols\nphenix\nphenixes\nphenol\nphenolate\nphenolated\nphenolates\nphenolic\nphenolics\nphenols\nphenom\nphenomena\nphenomenal\nphenomenalism\nphenomenalist\nphenomenalistic\nphenomenalistically\nphenomenalists\nphenomenally\nphenomenological\nphenomenologically\nphenomenology\nphenomenon\nphenomenons\nphenoms\nphenotype\nphenotypes\nphenotypic\nphenotypically\nphenyl\nphenylic\nphenyls\npheromone\npheromones\nphew\nphi\nphial\nphials\nphilabeg\nphilabegs\nphilander\nphilandered\nphilanderer\nphilanderers\nphilandering\nphilanders\nphilanthropic\nphilanthropically\nphilanthropies\nphilanthropist\nphilanthropists\nphilanthropy\nphilatelic\nphilatelically\nphilatelist\nphilatelists\nphilately\nphilibeg\nphilibegs\nphilistine\nphilistines\nphilodendra\nphilodendron\nphilodendrons\nphilological\nphilologically\nphilologies\nphilologist\nphilologists\nphilology\nphilomel\nphilomels\nphilosopher\nphilosophers\nphilosophic\nphilosophical\nphilosophically\nphilosophies\nphilosophize\nphilosophized\nphilosophizer\nphilosophizers\nphilosophizes\nphilosophizing\nphilosophy\nphilter\nphiltered\nphiltering\nphilters\nphiltre\nphiltred\nphiltres\nphiltring\nphimoses\nphimosis\nphimotic\nphis\nphiz\nphizes\nphlebitis\nphlebotomies\nphlebotomist\nphlebotomists\nphlebotomy\nphlegm\nphlegmatic\nphlegmatically\nphlegmier\nphlegmiest\nphlegms\nphlegmy\nphloem\nphloems\nphlox\nphloxes\nphobia\nphobias\nphobic\nphocine\nphoebe\nphoebes\nphoenix\nphoenixes\nphon\nphonal\nphonate\nphonated\nphonates\nphonating\nphonation\nphonations\nphone\nphoned\nphoneiest\nphoneme\nphonemes\nphonemic\nphonemicist\nphonemicists\nphonemics\nphones\nphonetic\nphonetical\nphonetically\nphonetician\nphoneticians\nphonetics\nphoney\nphoneys\nphonic\nphonics\nphonier\nphonies\nphoniest\nphonily\nphoniness\nphoning\nphono\nphonograph\nphonographer\nphonographers\nphonographic\nphonographically\nphonographs\nphonography\nphonological\nphonologist\nphonologists\nphonology\nphonon\nphonons\nphonos\nphons\nphony\nphooey\nphorate\nphorates\nphosgene\nphosgenes\nphosphate\nphosphates\nphosphatic\nphosphid\nphosphids\nphosphin\nphosphins\nphosphor\nphosphoresce\nphosphoresced\nphosphorescence\nphosphorescences\nphosphorescent\nphosphorescently\nphosphoresces\nphosphorescing\nphosphoric\nphosphorite\nphosphorites\nphosphorous\nphosphors\nphosphorus\nphot\nphotic\nphotics\nphoto\nphotocathode\nphotocathodes\nphotocell\nphotocells\nphotochemical\nphotochemistries\nphotochemistry\nphotocompose\nphotocomposed\nphotocomposer\nphotocomposers\nphotocomposes\nphotocomposing\nphotocomposition\nphotocompositions\nphotoconductive\nphotoconductivities\nphotoconductivity\nphotocopied\nphotocopier\nphotocopiers\nphotocopies\nphotocopy\nphotocopying\nphotoed\nphotoelectric\nphotoelectrically\nphotoengrave\nphotoengraved\nphotoengraver\nphotoengravers\nphotoengraves\nphotoengraving\nphotoengravings\nphotog\nphotogenic\nphotogenically\nphotograph\nphotographed\nphotographer\nphotographers\nphotographic\nphotographically\nphotographing\nphotographs\nphotography\nphotogravure\nphotogravures\nphotogs\nphotoing\nphotojournalism\nphotojournalist\nphotojournalists\nphotolithograph\nphotolithographed\nphotolithographer\nphotolithographers\nphotolithographic\nphotolithographies\nphotolithographing\nphotolithographs\nphotolithography\nphotomap\nphotomapped\nphotomapping\nphotomaps\nphotometer\nphotometers\nphotometric\nphotometrically\nphotometry\nphotomontage\nphotomontages\nphotomural\nphotomurals\nphoton\nphotonic\nphotons\nphotopia\nphotopias\nphotopic\nphotos\nphotosensitive\nphotosensitivities\nphotosensitivity\nphotoset\nphotosets\nphotosetting\nphotostat\nphotostated\nphotostatic\nphotostating\nphotostats\nphotosynthesis\nphotosynthesize\nphotosynthesized\nphotosynthesizes\nphotosynthesizing\nphotosynthetic\nphotosynthetically\nphototropism\nphototropisms\nphototypesetter\nphototypesetters\nphototypesetting\nphots\nphpht\nphrasal\nphrase\nphrased\nphraseological\nphraseologies\nphraseologist\nphraseologists\nphraseology\nphrases\nphrasing\nphrasings\nphratral\nphratric\nphratries\nphratry\nphreatic\nphrenetic\nphrenic\nphrenological\nphrenologist\nphrenologists\nphrenology\nphrensied\nphrensies\nphrensy\nphrensying\npht\nphthalic\nphthalin\nphthalins\nphthises\nphthisic\nphthisics\nphthisis\nphut\nphuts\nphyla\nphylacteries\nphylactery\nphylae\nphylar\nphylaxis\nphylaxises\nphyle\nphyleses\nphylesis\nphylesises\nphyletic\nphylic\nphyllaries\nphyllary\nphyllite\nphyllites\nphyllode\nphyllodes\nphylloid\nphylloids\nphyllome\nphyllomes\nphylon\nphylum\nphyses\nphysic\nphysical\nphysicalism\nphysicalist\nphysicalistic\nphysicalists\nphysicalities\nphysicality\nphysically\nphysicalness\nphysicals\nphysician\nphysicians\nphysicist\nphysicists\nphysicked\nphysicking\nphysics\nphysiognomies\nphysiognomy\nphysiographer\nphysiographers\nphysiography\nphysiologic\nphysiological\nphysiologically\nphysiologist\nphysiologists\nphysiology\nphysiotherapist\nphysiotherapists\nphysiotherapy\nphysique\nphysiques\nphysis\nphytane\nphytanes\nphytoid\nphyton\nphytonic\nphytons\npi\npia\npiacular\npiaffe\npiaffed\npiaffer\npiaffers\npiaffes\npiaffing\npial\npian\npianic\npianism\npianisms\npianissimi\npianissimo\npianissimos\npianist\npianists\npiano\npianoforte\npianofortes\npianos\npians\npias\npiasaba\npiasabas\npiasava\npiasavas\npiassaba\npiassabas\npiassava\npiassavas\npiaster\npiasters\npiastre\npiastres\npiazza\npiazzas\npiazze\npibal\npibroch\npibroches\npibrochs\npic\npica\npicacho\npicachos\npicador\npicadores\npicadors\npical\npicara\npicaras\npicaro\npicaroon\npicarooned\npicarooning\npicaroons\npicaros\npicas\npicayune\npicayunes\npiccalilli\npiccalillis\npiccolo\npiccoloist\npiccoloists\npiccolos\npice\npiceous\npick\npickadil\npickadils\npickax\npickaxe\npickaxed\npickaxes\npickaxing\npicked\npickeer\npickeered\npickeering\npickeers\npicker\npickerel\npickerels\npickers\npicket\npicketed\npicketer\npicketers\npicketing\npickets\npickier\npickiest\npicking\npickings\npickle\npickled\npickles\npickling\npicklock\npicklocks\npickoff\npickoffs\npickpocket\npickpockets\npicks\npickup\npickups\npickwick\npickwicks\npicky\npicloram\npiclorams\npicnic\npicnicked\npicnicker\npicnickers\npicnicking\npicnicky\npicnics\npicofarad\npicofarads\npicogram\npicograms\npicolin\npicoline\npicolines\npicolins\npicosecond\npicoseconds\npicot\npicoted\npicotee\npicotees\npicoting\npicots\npicquet\npicquets\npicrate\npicrated\npicrates\npicric\npicrite\npicrites\npics\npictograph\npictographic\npictographs\npictography\npictorial\npictorially\npictorialness\npictorials\npicture\npictured\npictures\npicturesque\npicturesquely\npicturesqueness\npicturing\npicul\npiculs\npiddle\npiddled\npiddler\npiddlers\npiddles\npiddling\npiddock\npiddocks\npidgin\npidgins\npie\npiebald\npiebalds\npiece\npieced\npiecemeal\npiecer\npiecers\npieces\npiecework\npieceworker\npieceworkers\npiecing\npiecings\npiecrust\npiecrusts\npied\npiedfort\npiedforts\npiedmont\npiedmonts\npiefort\npieforts\npieing\npieplant\npieplants\npier\npierce\npierced\npiercer\npiercers\npierces\npiercing\npiercingly\npierrot\npierrots\npiers\npies\npieta\npietas\npieties\npietism\npietisms\npietist\npietistic\npietistical\npietistically\npietists\npiety\npiezoelectric\npiezoelectrically\npiezoelectricity\npiffle\npiffled\npiffles\npiffling\npig\npigboat\npigboats\npigeon\npigeonhole\npigeonholed\npigeonholes\npigeonholing\npigeons\npigfish\npigfishes\npigged\npiggeries\npiggery\npiggie\npiggies\npiggin\npigging\npiggins\npiggish\npiggishly\npiggishness\npiggy\npiggyback\npiggybacked\npiggybacking\npiggybacks\npigheaded\npigheadedly\npigheadedness\npiglet\npiglets\npigment\npigmentary\npigmentation\npigmentations\npigmented\npigmenting\npigments\npigmies\npigmy\npignora\npignus\npignut\npignuts\npigpen\npigpens\npigs\npigskin\npigskins\npigsney\npigsneys\npigstick\npigsticked\npigsticking\npigsticks\npigsties\npigsty\npigtail\npigtailed\npigtails\npigweed\npigweeds\npiing\npika\npikake\npikakes\npikas\npike\npiked\npikeman\npikemen\npiker\npikers\npikes\npikestaff\npikestaffs\npiking\npilaf\npilaff\npilaffs\npilafs\npilar\npilaster\npilasters\npilau\npilaus\npilaw\npilaws\npilchard\npilchards\npile\npilea\npileate\npileated\npiled\npilei\npileous\npiles\npileum\npileup\npileups\npileus\npilewort\npileworts\npilfer\npilferage\npilfered\npilferer\npilferers\npilfering\npilfers\npilgrim\npilgrimage\npilgrimages\npilgrims\npili\npiliform\npiling\npilings\npilis\npill\npillage\npillaged\npillager\npillagers\npillages\npillaging\npillar\npillared\npillaring\npillars\npillbox\npillboxes\npilled\npilling\npillion\npillions\npilloried\npillories\npillory\npillorying\npillow\npillowcase\npillowcases\npillowed\npillowing\npillows\npillowy\npills\npilose\npilosities\npilosity\npilot\npilotage\npilotages\npiloted\npilothouse\npilothouses\npiloting\npilotings\npilotless\npilots\npilous\npilsener\npilseners\npilsner\npilsners\npilular\npilule\npilules\npilus\npily\npima\npimas\npimento\npimentos\npimiento\npimientos\npimp\npimped\npimpernel\npimpernels\npimping\npimple\npimpled\npimples\npimplier\npimpliest\npimply\npimps\npin\npina\npinafore\npinafores\npinang\npinangs\npinas\npinaster\npinasters\npinata\npinatas\npinball\npinballs\npinbone\npinbones\npincer\npincers\npinch\npinchbeck\npinchbug\npinchbugs\npincheck\npinchecks\npinched\npincher\npinchers\npinches\npinching\npincushion\npincushions\npinder\npinders\npindling\npine\npineal\npineapple\npineapples\npinecone\npinecones\npined\npinelike\npinene\npinenes\npineries\npinery\npines\npinesap\npinesaps\npineta\npinetum\npinewood\npinewoods\npiney\npinfeather\npinfeathers\npinfish\npinfishes\npinfold\npinfolded\npinfolding\npinfolds\nping\npinged\npinger\npingers\npinging\npingo\npingos\npingrass\npingrasses\npings\npinguid\npinhead\npinheaded\npinheadedness\npinheads\npinhole\npinholes\npinier\npiniest\npining\npinion\npinioned\npinioning\npinions\npinite\npinites\npink\npinked\npinker\npinkest\npinkeye\npinkeyes\npinkie\npinkies\npinking\npinkings\npinkish\npinkly\npinkness\npinknesses\npinko\npinkoes\npinkos\npinkroot\npinkroots\npinks\npinky\npinna\npinnace\npinnaces\npinnacle\npinnacled\npinnacles\npinnacling\npinnae\npinnal\npinnas\npinnate\npinnated\npinned\npinner\npinners\npinning\npinniped\npinnipeds\npinnula\npinnulae\npinnular\npinnule\npinnules\npinny\npinochle\npinochles\npinocle\npinocles\npinole\npinoles\npinon\npinones\npinons\npinot\npinpoint\npinpointed\npinpointing\npinpoints\npinprick\npinpricked\npinpricking\npinpricks\npins\npinscher\npinschers\npinstripe\npinstripes\npint\npinta\npintada\npintadas\npintado\npintadoes\npintados\npintail\npintails\npintano\npintanos\npintas\npintle\npintles\npinto\npintoes\npintos\npints\npintsize\npinup\npinups\npinwale\npinwales\npinweed\npinweeds\npinwheel\npinwheels\npinwork\npinworks\npinworm\npinworms\npiny\npinyon\npinyons\npiolet\npiolets\npion\npioneer\npioneered\npioneering\npioneers\npionic\npions\npiosities\npiosity\npious\npiously\npiousness\npip\npipage\npipages\npipal\npipals\npipe\npipeage\npipeages\npiped\npipefish\npipefishes\npipeful\npipefuls\npipeless\npipelike\npipeline\npipelined\npipelines\npipelining\npiper\npiperine\npiperines\npipers\npipes\npipestem\npipestems\npipet\npipets\npipette\npipetted\npipettes\npipetting\npipier\npipiest\npiping\npipingly\npipings\npipit\npipits\npipkin\npipkins\npipped\npippin\npipping\npippins\npips\npipy\npiquancies\npiquancy\npiquant\npiquantly\npiquantness\npique\npiqued\npiques\npiquet\npiquets\npiquing\npiracies\npiracy\npiragua\npiraguas\npirana\npiranas\npiranha\npiranhas\npirarucu\npirarucus\npirate\npirated\npirates\npiratic\npiratical\npiratically\npirating\npiraya\npirayas\npirn\npirns\npirog\npirogen\npiroghi\npirogi\npirogue\npirogues\npirojki\npiroque\npiroques\npiroshki\npirouette\npirouetted\npirouettes\npirouetting\npirozhki\npirozhok\npis\npiscaries\npiscary\npiscator\npiscators\npisciculture\npiscina\npiscinae\npiscinal\npiscinas\npiscine\npisco\npish\npished\npishes\npishing\npisiform\npisiforms\npismire\npismires\npisolite\npisolites\npiss\npissant\npissants\npissed\npisses\npissing\npissoir\npissoirs\npistache\npistaches\npistachio\npistachios\npiste\npistil\npistils\npistol\npistole\npistoled\npistoles\npistoling\npistolled\npistolling\npistols\npiston\npistons\npit\npita\npitapat\npitapats\npitapatted\npitapatting\npitas\npitch\npitchblende\npitched\npitcher\npitchers\npitches\npitchfork\npitchforks\npitchier\npitchiest\npitchily\npitching\npitchman\npitchmen\npitchout\npitchouts\npitchy\npiteous\npiteously\npiteousness\npitfall\npitfalls\npith\npithead\npitheads\npithed\npithier\npithiest\npithily\npithiness\npithing\npithless\npiths\npithy\npitiable\npitiableness\npitiably\npitied\npitier\npitiers\npities\npitiful\npitifuller\npitifullest\npitifully\npitifulness\npitiless\npitilessly\npitilessness\npitman\npitmans\npitmen\npiton\npitons\npits\npitsaw\npitsaws\npittance\npittances\npitted\npitting\npittings\npituitaries\npituitary\npity\npitying\npityingly\npiu\npivot\npivotal\npivotally\npivoted\npivoting\npivots\npix\npixel\npixes\npixie\npixieish\npixies\npixilation\npixilations\npixiness\npixinesses\npixy\npixyish\npizazz\npizazzes\npizza\npizzas\npizzeria\npizzerias\npizzle\npizzles\nplacabilities\nplacability\nplacable\nplacably\nplacard\nplacarded\nplacarding\nplacards\nplacate\nplacated\nplacater\nplacaters\nplacates\nplacating\nplacation\nplacations\nplace\nplacebo\nplaceboes\nplacebos\nplaced\nplaceless\nplacelessly\nplaceman\nplacemen\nplacement\nplacements\nplacenta\nplacentae\nplacental\nplacentas\nplacentation\nplacentations\nplacer\nplacers\nplaces\nplacet\nplacets\nplacid\nplacidity\nplacidly\nplacidness\nplacing\nplack\nplacket\nplackets\nplacks\nplacoid\nplacoids\nplafond\nplafonds\nplagal\nplage\nplages\nplagiaries\nplagiarism\nplagiarisms\nplagiarist\nplagiaristic\nplagiarists\nplagiarize\nplagiarized\nplagiarizer\nplagiarizers\nplagiarizes\nplagiarizing\nplagiary\nplague\nplagued\nplaguer\nplaguers\nplagues\nplaguey\nplaguily\nplaguing\nplaguy\nplaice\nplaices\nplaid\nplaided\nplaids\nplain\nplained\nplainer\nplainest\nplaining\nplainly\nplainness\nplains\nplainsman\nplainsmen\nplainsong\nplainsongs\nplaint\nplaintiff\nplaintiffs\nplaintive\nplaintively\nplaintiveness\nplaints\nplaister\nplaistered\nplaistering\nplaisters\nplait\nplaited\nplaiter\nplaiters\nplaiting\nplaitings\nplaits\nplan\nplanar\nplanaria\nplanarias\nplanarity\nplanate\nplanation\nplanations\nplanch\nplanche\nplanches\nplanchet\nplanchets\nplane\nplaned\nplaner\nplaners\nplanes\nplanet\nplanetaria\nplanetarium\nplanetariums\nplanetary\nplanetesimal\nplanetesimals\nplanetoid\nplanetoidal\nplanetoids\nplanets\nplanform\nplanforms\nplangent\nplaning\nplanish\nplanished\nplanishes\nplanishing\nplank\nplanked\nplanking\nplankings\nplanks\nplankter\nplankters\nplankton\nplanktonic\nplanktons\nplanless\nplanned\nplanner\nplanners\nplanning\nplannings\nplanosol\nplanosols\nplans\nplant\nplantain\nplantains\nplantar\nplantation\nplantations\nplanted\nplanter\nplanters\nplantigrade\nplantigrades\nplanting\nplantings\nplantlike\nplants\nplanula\nplanulae\nplanular\nplaque\nplaques\nplash\nplashed\nplasher\nplashers\nplashes\nplashier\nplashiest\nplashing\nplashy\nplasm\nplasma\nplasmas\nplasmatic\nplasmic\nplasmid\nplasmids\nplasmin\nplasmins\nplasmoid\nplasmoids\nplasmon\nplasmons\nplasms\nplaster\nplasterboard\nplasterboards\nplastered\nplastering\nplasters\nplastery\nplastic\nplastically\nplasticity\nplasticization\nplasticizations\nplasticize\nplasticized\nplasticizer\nplasticizers\nplasticizes\nplasticizing\nplastics\nplastid\nplastids\nplastral\nplastron\nplastrons\nplastrum\nplastrums\nplat\nplatan\nplatane\nplatanes\nplatans\nplate\nplateau\nplateaued\nplateauing\nplateaus\nplateaux\nplated\nplateful\nplatefuls\nplatelet\nplatelets\nplatelike\nplaten\nplatens\nplater\nplaters\nplates\nplatesful\nplatform\nplatforms\nplatier\nplaties\nplatiest\nplatina\nplatinas\nplating\nplatings\nplatinic\nplatinum\nplatinums\nplatitude\nplatitudes\nplatitudinize\nplatitudinized\nplatitudinizing\nplatitudinous\nplatitudinously\nplatonic\nplatonically\nplatoon\nplatooned\nplatooning\nplatoons\nplats\nplatted\nplatter\nplatters\nplatting\nplaty\nplatypi\nplatypus\nplatypuses\nplatys\nplaudit\nplaudits\nplausibilities\nplausibility\nplausible\nplausibleness\nplausibly\nplausive\nplay\nplaya\nplayability\nplayable\nplayact\nplayacted\nplayacting\nplayacts\nplayas\nplayback\nplaybacks\nplaybill\nplaybills\nplaybook\nplaybooks\nplayboy\nplayboys\nplayday\nplaydays\nplaydown\nplaydowns\nplayed\nplayer\nplayers\nplayful\nplayfully\nplayfulness\nplaygirl\nplaygirls\nplaygoer\nplaygoers\nplayground\nplaygrounds\nplayhouse\nplayhouses\nplaying\nplayland\nplaylands\nplayless\nplaylet\nplaylets\nplaylike\nplaymate\nplaymates\nplayoff\nplayoffs\nplaypen\nplaypens\nplayroom\nplayrooms\nplays\nplaysuit\nplaysuits\nplaything\nplaythings\nplaytime\nplaytimes\nplaywear\nplaywears\nplaywright\nplaywrights\nplaza\nplazas\nplea\npleach\npleached\npleaches\npleaching\nplead\npleadable\npleaded\npleader\npleaders\npleading\npleadingly\npleadings\npleads\npleas\npleasance\npleasant\npleasanter\npleasantest\npleasantly\npleasantness\npleasantries\npleasantry\nplease\npleased\npleaser\npleasers\npleases\npleasing\npleasingly\npleasingness\npleasurable\npleasurableness\npleasurably\npleasure\npleasured\npleasureless\npleasures\npleasuring\npleat\npleated\npleater\npleaters\npleating\npleats\npleb\nplebe\nplebeian\nplebeianism\nplebeianly\nplebeians\nplebes\nplebiscite\nplebiscites\nplebs\nplectra\nplectron\nplectrons\nplectrum\nplectrums\npled\npledge\npledged\npledgee\npledgees\npledgeor\npledgeors\npledger\npledgers\npledges\npledget\npledgets\npledging\npledgor\npledgors\npleiad\npleiades\npleiads\nplena\nplenary\nplenipotentiaries\nplenipotentiary\nplenish\nplenished\nplenishes\nplenishing\nplenism\nplenisms\nplenist\nplenists\nplenitude\nplenitudes\nplenteous\nplenteously\nplenteousness\nplenties\nplentiful\nplentifully\nplentifulness\nplenty\nplenum\nplenums\npleonasm\npleonasms\npleonastic\npleonastically\npleopod\npleopods\nplessor\nplessors\nplethora\nplethoras\nplethoric\npleura\npleurae\npleural\npleuras\npleurisies\npleurisy\npleuritic\npleuron\npleuston\npleustons\nplew\nplews\nplexor\nplexors\nplexus\nplexuses\npliabilities\npliability\npliable\npliableness\npliably\npliancies\npliancy\npliant\npliantly\npliantness\nplica\nplicae\nplical\nplicate\nplicated\nplie\nplied\nplier\npliers\nplies\nplight\nplighted\nplighter\nplighters\nplighting\nplights\nplimsol\nplimsole\nplimsoles\nplimsoll\nplimsolls\nplimsols\nplink\nplinked\nplinker\nplinkers\nplinking\nplinks\nplinth\nplinths\npliskie\npliskies\nplisky\nplisse\nplisses\nplod\nplodded\nplodder\nplodders\nplodding\nploddingly\nplods\nploidies\nploidy\nplonk\nplonked\nplonking\nplonks\nplop\nplopped\nplopping\nplops\nplosion\nplosions\nplosive\nplosives\nplot\nplotless\nplotlessness\nplots\nplottage\nplottages\nplotted\nplotter\nplotters\nplottier\nplotties\nplottiest\nplotting\nplotty\nplotz\nplough\nploughed\nplougher\nploughers\nploughing\nploughs\nplover\nplovers\nplow\nplowable\nplowback\nplowbacks\nplowboy\nplowboys\nplowed\nplower\nplowers\nplowhead\nplowheads\nplowing\nplowland\nplowlands\nplowman\nplowmen\nplows\nplowshare\nplowshares\nploy\nployed\nploying\nploys\npluck\nplucked\nplucker\npluckers\npluckier\npluckiest\npluckily\npluckiness\nplucking\nplucks\nplucky\nplug\nplugged\nplugger\npluggers\nplugging\nplugless\nplugs\npluguglies\nplugugly\nplum\nplumage\nplumaged\nplumages\nplumate\nplumb\nplumbago\nplumbagos\nplumbed\nplumber\nplumberies\nplumbers\nplumbery\nplumbic\nplumbing\nplumbings\nplumbism\nplumbisms\nplumbous\nplumbs\nplumbum\nplumbums\nplume\nplumed\nplumelet\nplumelets\nplumes\nplumier\nplumiest\npluming\nplumiped\nplumipeds\nplumlike\nplummet\nplummeted\nplummeting\nplummets\nplummier\nplummiest\nplummy\nplumose\nplump\nplumped\nplumpen\nplumpened\nplumpening\nplumpens\nplumper\nplumpers\nplumpest\nplumping\nplumpish\nplumply\nplumpness\nplumps\nplums\nplumular\nplumule\nplumules\nplumy\nplunder\nplunderage\nplunderages\nplundered\nplunderer\nplunderers\nplundering\nplunderous\nplunders\nplunge\nplunged\nplunger\nplungers\nplunges\nplunging\nplunk\nplunked\nplunker\nplunkers\nplunking\nplunks\npluperfect\nplural\npluralism\npluralist\npluralistic\npluralistically\npluralists\npluralities\nplurality\npluralization\npluralizations\npluralize\npluralized\npluralizes\npluralizing\nplurally\nplurals\nplus\npluses\nplush\nplusher\nplushes\nplushest\nplushier\nplushiest\nplushily\nplushiness\nplushly\nplushness\nplushy\nplussage\nplussages\nplusses\nplutocracies\nplutocracy\nplutocrat\nplutocratic\nplutocratically\nplutocrats\npluton\nplutonic\nplutonium\nplutons\npluvial\npluvials\npluviose\npluvious\nply\nplyer\nplyers\nplying\nplyingly\nplywood\nplywoods\npneuma\npneumas\npneumatic\npneumatically\npneumatics\npneumonia\npoaceous\npoach\npoachards\npoached\npoacher\npoachers\npoaches\npoachier\npoachiest\npoaching\npoachy\npochard\npochards\npock\npocked\npocket\npocketable\npocketbook\npocketbooks\npocketed\npocketer\npocketers\npocketful\npocketfuls\npocketing\npocketknife\npocketknives\npockets\npockier\npockiest\npockily\npocking\npockmark\npockmarked\npockmarking\npockmarks\npocks\npocky\npoco\npocosin\npocosins\npod\npodagra\npodagral\npodagras\npodagric\npodded\npodding\npodesta\npodestas\npodgier\npodgiest\npodgily\npodgy\npodia\npodiatries\npodiatrist\npodiatrists\npodiatry\npodite\npodites\npoditic\npodium\npodiums\npodomere\npodomeres\npods\npodsol\npodsolic\npodsols\npodzol\npodzolic\npodzols\npoechore\npoechores\npoem\npoems\npoesies\npoesy\npoet\npoetess\npoetesses\npoetic\npoetical\npoetically\npoeticize\npoeticized\npoeticizes\npoeticizing\npoetics\npoetise\npoetised\npoetiser\npoetisers\npoetises\npoetising\npoetize\npoetized\npoetizer\npoetizers\npoetizes\npoetizing\npoetless\npoetlike\npoetries\npoetry\npoets\npogey\npogeys\npogies\npogonia\npogonias\npogonip\npogonips\npogrom\npogromed\npogroming\npogroms\npogy\npoh\npoi\npoignancy\npoignant\npoilu\npoilus\npoind\npoinded\npoinding\npoinds\npoinsettia\npoinsettias\npoint\npointe\npointed\npointedly\npointedness\npointer\npointers\npointes\npointier\npointiest\npointing\npointless\npointlessly\npointlessness\npointman\npointmen\npoints\npointy\npois\npoise\npoised\npoiser\npoisers\npoises\npoising\npoison\npoisoned\npoisoner\npoisoners\npoisoning\npoisonings\npoisonous\npoisonously\npoisons\npoitrel\npoitrels\npoke\npoked\npoker\npokeroot\npokeroots\npokers\npokes\npokeweed\npokeweeds\npokey\npokeys\npokier\npokies\npokiest\npokily\npokiness\npokinesses\npoking\npoky\npol\npolar\npolarise\npolarised\npolarises\npolarising\npolarities\npolarity\npolarizable\npolarization\npolarizations\npolarize\npolarized\npolarizes\npolarizing\npolaron\npolarons\npolars\npolder\npolders\npole\npoleax\npoleaxe\npoleaxed\npoleaxes\npoleaxing\npolecat\npolecats\npoled\npoleis\npoleless\npolemic\npolemical\npolemically\npolemicist\npolemicists\npolemics\npolemist\npolemists\npolemize\npolemized\npolemizes\npolemizing\npolenta\npolentas\npoler\npolers\npoles\npolestar\npolestars\npoleward\npoleyn\npoleyns\npolice\npoliced\npoliceman\npolicemen\npolices\npolicewoman\npolicewomen\npolicies\npolicing\npolicy\npolicyholder\npolicyholders\npoling\npolio\npoliomyelitis\npolios\npolis\npolish\npolished\npolisher\npolishers\npolishes\npolishing\npolitburo\npolitburos\npolite\npolitely\npoliteness\npoliter\npolitest\npolitic\npolitical\npolitically\npolitician\npoliticians\npoliticize\npoliticized\npoliticizes\npoliticizing\npolitick\npoliticked\npoliticking\npoliticks\npolitico\npoliticoes\npoliticos\npolitics\npolities\npolity\npolka\npolkaed\npolkaing\npolkas\npoll\npollack\npollacks\npollard\npollarded\npollarding\npollards\npolled\npollee\npollees\npollen\npollened\npollening\npollens\npoller\npollers\npollex\npollical\npollices\npollinate\npollinated\npollinates\npollinating\npollination\npollinations\npollinator\npollinators\npolling\npollinia\npollinic\npollist\npollists\npolliwog\npolliwogs\npollock\npollocks\npolls\npollster\npollsters\npollutant\npollutants\npollute\npolluted\npolluter\npolluters\npollutes\npolluting\npollution\npollutions\npollywog\npollywogs\npolo\npoloist\npoloists\npolonium\npoloniums\npolos\npols\npoltergeist\npoltergeists\npoltroon\npoltroonery\npoltroons\npoly\npolyandrous\npolyandry\npolybrid\npolybrids\npolyclinic\npolyclinics\npolycot\npolycots\npolyene\npolyenes\npolyenic\npolyester\npolyesters\npolyethylene\npolyethylenes\npolygala\npolygalas\npolygamies\npolygamist\npolygamists\npolygamous\npolygamy\npolygene\npolygenes\npolyglot\npolyglots\npolygon\npolygonal\npolygonally\npolygonies\npolygons\npolygony\npolygraph\npolygrapher\npolygraphers\npolygraphic\npolygraphist\npolygraphists\npolygraphs\npolygynies\npolygyny\npolyhedra\npolyhedral\npolyhedron\npolyhedrons\npolymath\npolymaths\npolymer\npolymeric\npolymerization\npolymerizations\npolymerize\npolymerized\npolymerizes\npolymerizing\npolymers\npolynomial\npolynomials\npolynya\npolynyas\npolyp\npolyparies\npolypary\npolyphone\npolyphones\npolyphonic\npolyphonically\npolyphonous\npolyphonously\npolyphony\npolypi\npolypide\npolypides\npolypnea\npolypneas\npolypod\npolypodies\npolypods\npolypody\npolypoid\npolypore\npolypores\npolypous\npolyps\npolypus\npolypuses\npolys\npolysemies\npolysemy\npolysome\npolysomes\npolystyrene\npolystyrenes\npolysyllabic\npolysyllabically\npolysyllable\npolysyllables\npolytechnic\npolytechnics\npolytene\npolytenies\npolyteny\npolytheism\npolytheist\npolytheistic\npolytheistical\npolytheistically\npolytheists\npolytype\npolytypes\npolyunsaturated\npolyuria\npolyurias\npolyuric\npolyvinyl\npolyzoan\npolyzoans\npolyzoic\npom\npomace\npomaceous\npomaces\npomade\npomaded\npomades\npomading\npomander\npomanders\npomatum\npomatums\npome\npomegranate\npomegranates\npomelo\npomelos\npomes\npommee\npommel\npommeled\npommeling\npommelled\npommelling\npommels\npommy\npomologies\npomology\npomp\npompadour\npompadours\npompano\npompanos\npompom\npompoms\npompon\npompons\npomposities\npomposity\npompous\npompously\npomps\npoms\nponce\nponces\nponcho\nponchos\npond\nponder\nponderable\npondered\nponderer\nponderers\npondering\nponderous\nponderously\nponderousness\nponders\nponds\npondweed\npondweeds\npone\nponent\npones\npong\npongee\npongees\npongid\npongids\npongs\nponiard\nponiarded\nponiarding\nponiards\nponied\nponies\npons\npontes\npontifex\npontiff\npontiffs\npontific\npontifical\npontifically\npontificals\npontificate\npontificated\npontificates\npontificating\npontifices\npontil\npontils\npontine\nponton\npontons\npontoon\npontoons\npony\nponying\nponytail\nponytails\npooch\npooches\npood\npoodle\npoodles\npoods\npoof\npoofs\npoofy\npooh\npoohed\npoohing\npoohs\npool\npooled\npoolhall\npoolhalls\npooling\npoolroom\npoolrooms\npools\npoon\npoons\npoop\npooped\npooping\npoops\npoor\npoorer\npoorest\npoorhouse\npoorhouses\npoori\npooris\npoorish\npoorly\npoorness\npoornesses\npoortith\npoortiths\npoove\npop\npopcorn\npopcorns\npope\npopedom\npopedoms\npopeless\npopelike\npoperies\npopery\npopes\npopeyed\npopgun\npopguns\npopinjay\npopinjays\npopish\npopishly\npoplar\npoplars\npoplin\npoplins\npoplitic\npopover\npopovers\npoppa\npoppas\npopped\npopper\npoppers\npoppet\npoppets\npoppied\npoppies\npopping\npopple\npoppled\npopples\npoppling\npoppy\npoppycock\npops\npopsy\npopulace\npopulaces\npopular\npopularity\npopularization\npopularizations\npopularize\npopularized\npopularizer\npopularizers\npopularizes\npopularizing\npopularly\npopulate\npopulated\npopulates\npopulating\npopulation\npopulational\npopulations\npopulism\npopulisms\npopulist\npopulists\npopulous\npopulously\npopulousness\nporcelain\nporcelainize\nporcelainized\nporcelainizes\nporcelainizing\nporcelains\nporch\nporches\nporcine\nporcupine\nporcupines\npore\npored\npores\nporgies\nporgy\nporing\nporism\nporisms\npork\nporker\nporkers\nporkier\nporkies\nporkiest\nporkpie\nporkpies\nporks\nporkwood\nporkwoods\nporky\nporn\nporno\npornographer\npornographers\npornographic\npornographically\npornography\npornos\nporns\nporny\nporose\nporosities\nporosity\nporous\nporously\nporphyries\nporphyry\nporpoise\nporpoises\nporrect\nporridge\nporridges\nporringer\nporringers\nport\nportability\nportable\nportables\nportably\nportage\nportaged\nportages\nportaging\nportal\nportaled\nportals\nportance\nportances\nportcullis\nportcullises\nported\nportend\nportended\nportending\nportends\nportent\nportentous\nportentously\nportentousness\nportents\nporter\nporterhouse\nporterhouses\nporters\nportfolio\nportfolios\nporthole\nportholes\nportico\nporticoes\nporticos\nportiere\nportieres\nporting\nportion\nportioned\nportioning\nportionless\nportions\nportless\nportlier\nportliest\nportly\nportmanteau\nportmanteaus\nportmanteaux\nportrait\nportraitist\nportraitists\nportraits\nportraiture\nportraitures\nportray\nportrayal\nportrayals\nportrayed\nportrayer\nportrayers\nportraying\nportrays\nportress\nportresses\nports\nposada\nposadas\npose\nposed\nposer\nposers\nposes\nposeur\nposeurs\nposh\nposher\nposhest\nposies\nposing\nposingly\nposit\nposited\npositing\nposition\npositional\npositionally\npositioned\npositioning\npositions\npositive\npositively\npositiveness\npositiver\npositives\npositivest\npositivism\npositivist\npositivistic\npositivists\npositivity\npositron\npositrons\nposits\nposologies\nposology\nposse\nposses\npossess\npossessed\npossessedly\npossesses\npossessing\npossession\npossessions\npossessive\npossessively\npossessiveness\npossessives\npossessor\npossessors\npossessory\nposset\npossets\npossibilities\npossibility\npossible\npossibler\npossiblest\npossibly\npossum\npossums\npost\npostage\npostages\npostal\npostally\npostals\npostanal\npostbag\npostbags\npostbox\npostboxes\npostboy\npostboys\npostcard\npostcards\npostcava\npostcavae\npostdate\npostdated\npostdates\npostdating\nposted\nposteen\nposteens\nposter\nposterior\nposteriori\nposteriority\nposteriorly\nposteriors\nposterity\npostern\nposterns\nposters\npostface\npostfaces\npostfix\npostfixed\npostfixes\npostfixing\npostflight\npostform\npostformed\npostforming\npostforms\npostgraduate\npostgraduates\nposthaste\nposthole\npostholes\nposthumous\nposthumously\nposthumousness\nposthypnotic\npostiche\npostiches\npostin\nposting\npostings\npostins\npostique\npostiques\npostlude\npostludes\npostman\npostmark\npostmarked\npostmarking\npostmarks\npostmaster\npostmasters\npostmen\npostmistress\npostmistresses\npostmortem\npostmortems\npostnatal\npostnatally\npostoperative\npostoperatively\npostoral\npostpaid\npostpartum\npostponable\npostpone\npostponed\npostponement\npostponements\npostponer\npostponers\npostpones\npostponing\nposts\npostscript\npostscripts\npostsurgical\npostulant\npostulants\npostulate\npostulated\npostulates\npostulating\npostulation\npostulational\npostulations\npostulator\npostulators\npostural\nposture\npostured\nposturer\nposturers\npostures\nposturing\npostwar\nposy\npot\npotability\npotable\npotableness\npotables\npotage\npotages\npotamic\npotash\npotashes\npotassic\npotassium\npotation\npotations\npotato\npotatoes\npotatory\npotbellied\npotbellies\npotbelly\npotboil\npotboiled\npotboiler\npotboilers\npotboiling\npotboils\npotboy\npotboys\npoteen\npoteens\npotence\npotences\npotencies\npotency\npotent\npotentate\npotentates\npotential\npotentialities\npotentiality\npotentially\npotentials\npotentiate\npotentiated\npotentiates\npotentiating\npotentiation\npotentiations\npotentiator\npotentiators\npotentiometer\npotentiometers\npotently\npotful\npotfuls\npothead\npotheads\npotheen\npotheens\npother\npotherb\npotherbs\npothered\npothering\npothers\npothole\npotholed\npotholes\npothook\npothooks\npothouse\npothouses\npotiche\npotiches\npotion\npotions\npotlach\npotlache\npotlaches\npotlatch\npotlatched\npotlatches\npotlatching\npotlike\npotluck\npotlucks\npotman\npotmen\npotpie\npotpies\npotpourri\npotpourris\npots\npotshard\npotshards\npotsherd\npotsherds\npotshot\npotshots\npotshotting\npotsie\npotsies\npotstone\npotstones\npotsy\npottage\npottages\npotted\npotteen\npotteens\npotter\npottered\npotterer\npotterers\npotteries\npottering\npotters\npottery\npottier\npotties\npottiest\npotting\npottle\npottles\npotto\npottos\npotty\npouch\npouched\npouches\npouchier\npouchiest\npouching\npouchy\npouf\npoufed\npouff\npouffe\npouffed\npouffes\npouffs\npoufs\npoulard\npoularde\npoulardes\npoulards\npoult\npoultice\npoulticed\npoultices\npoulticing\npoultries\npoultry\npoults\npounce\npounced\npouncer\npouncers\npounces\npouncing\npound\npoundage\npoundages\npoundal\npoundals\npounded\npounder\npounders\npounding\npounds\npour\npourable\npoured\npourer\npourers\npouring\npouringly\npours\npoussie\npoussies\npout\npouted\npouter\npouters\npoutful\npoutier\npoutiest\npouting\npouts\npouty\npoverties\npoverty\npow\npowder\npowdered\npowderer\npowderers\npowdering\npowders\npowdery\npower\npowered\npowerful\npowerfully\npowerhouse\npowerhouses\npowering\npowerless\npowerlessly\npowerlessness\npowers\npows\npowter\npowters\npowwow\npowwowed\npowwowing\npowwows\npox\npoxed\npoxes\npoxing\npoxvirus\npoxviruses\npoyou\npoyous\npozzolan\npozzolans\npraam\npraams\npractic\npracticability\npracticable\npracticableness\npracticably\npractical\npracticality\npractically\npracticalness\npractice\npracticed\npracticer\npracticers\npractices\npracticing\npractise\npractised\npractises\npractising\npractitioner\npractitioners\npraecipe\npraecipes\npraedial\npraefect\npraefects\npraelect\npraelected\npraelecting\npraelects\npraetor\npraetors\npragmatic\npragmatically\npragmaticism\npragmatics\npragmatism\npragmatist\npragmatistic\npragmatists\nprahu\nprahus\nprairie\nprairies\npraise\npraised\npraiser\npraisers\npraises\npraiseworthiness\npraiseworthy\npraising\npraline\npralines\npram\nprams\nprance\npranced\nprancer\nprancers\nprances\nprancing\nprandial\nprang\npranged\npranging\nprangs\nprank\npranked\npranking\nprankish\nprankishly\nprankishness\npranks\nprankster\npranksters\nprao\npraos\nprase\nprases\nprat\nprate\nprated\nprater\npraters\nprates\npratfall\npratfalls\nprating\npratingly\npratique\npratiques\nprats\nprattle\nprattled\nprattler\nprattlers\nprattles\nprattling\nprattlingly\nprau\npraus\nprawn\nprawned\nprawner\nprawners\nprawning\nprawns\npraxes\npraxis\npraxises\npray\nprayed\nprayer\nprayerful\nprayerfully\nprayerfulness\nprayers\npraying\nprays\npreach\npreached\npreacher\npreachers\npreaches\npreachier\npreachiest\npreachified\npreachifies\npreachify\npreachifying\npreaching\npreachingly\npreachment\npreachments\npreachy\npreact\npreacted\npreacting\npreacts\npreadapt\npreadapted\npreadapting\npreadapts\npreadmit\npreadmits\npreadmitted\npreadmitting\npreadolescence\npreadolescent\npreadolescents\npreadopt\npreadopted\npreadopting\npreadopts\npreadult\npreadults\npreaged\npreallot\npreallots\npreallotted\npreallotting\npreamble\npreambled\npreambles\npreamp\npreamps\npreanal\nprearm\nprearmed\nprearming\nprearms\nprearrange\nprearranged\nprearrangement\nprearrangements\nprearranger\nprearrangers\nprearranges\nprearranging\npreassign\npreassigned\npreassigning\npreassigns\npreaver\npreaverred\npreaverring\npreavers\npreaxial\nprebasal\nprebend\nprebendal\nprebendaries\nprebendary\nprebends\nprebill\nprebilled\nprebilling\nprebills\nprebind\nprebinding\nprebinds\nprebless\npreblessed\npreblesses\npreblessing\npreboil\npreboiled\npreboiling\npreboils\nprebound\nprecancel\nprecanceled\nprecanceling\nprecancellation\nprecancellations\nprecancels\nprecarious\nprecariously\nprecariousness\nprecast\nprecasting\nprecasts\nprecaution\nprecautionary\nprecautions\nprecava\nprecavae\nprecaval\nprecede\npreceded\nprecedence\nprecedences\nprecedency\nprecedent\nprecedents\nprecedes\npreceding\nprecent\nprecented\nprecenting\nprecents\nprecept\npreceptive\npreceptor\npreceptorial\npreceptors\nprecepts\nprecess\nprecessed\nprecesses\nprecessing\nprecession\nprecessional\nprecessions\nprecheck\nprechecked\nprechecking\nprechecks\nprechill\nprechilled\nprechilling\nprechills\nprecieux\nprecinct\nprecincts\npreciosities\npreciosity\nprecious\npreciouses\npreciously\npreciousness\nprecipe\nprecipes\nprecipice\nprecipiced\nprecipices\nprecipitance\nprecipitancy\nprecipitant\nprecipitantly\nprecipitants\nprecipitate\nprecipitated\nprecipitately\nprecipitateness\nprecipitates\nprecipitating\nprecipitation\nprecipitations\nprecipitative\nprecipitator\nprecipitators\nprecipitous\nprecipitously\nprecipitousness\nprecis\nprecise\nprecised\nprecisely\npreciseness\npreciser\nprecises\nprecisest\nprecising\nprecision\nprecisionist\nprecisionists\nprecisions\nprecited\npreclean\nprecleaned\nprecleaning\nprecleans\npreclude\nprecluded\nprecludes\nprecluding\npreclusion\npreclusions\npreclusive\npreclusively\nprecocious\nprecociously\nprecociousness\nprecocity\nprecognition\nprecognitions\nprecognitive\npreconceive\npreconceived\npreconceives\npreconceiving\npreconception\npreconceptions\nprecondition\npreconditioned\npreconditioning\npreconditions\npreconscious\npreconsciouses\npreconsciously\nprecook\nprecooked\nprecooking\nprecooks\nprecool\nprecooled\nprecooling\nprecools\nprecure\nprecured\nprecures\nprecuring\nprecursor\nprecursors\nprecursory\npredaceous\npredaceousness\npredacious\npredaciousness\npredacity\npredate\npredated\npredates\npredating\npredation\npredations\npredator\npredators\npredatory\npredawn\npredawns\npredecease\npredeceased\npredeceases\npredeceasing\npredecessor\npredecessors\npredefined\npredestinarian\npredestinarianism\npredestinarians\npredestinate\npredestinated\npredestinates\npredestinating\npredestination\npredestinations\npredestine\npredestined\npredestines\npredestining\npredetermination\npredeterminations\npredetermine\npredetermined\npredetermines\npredetermining\npredial\npredicable\npredicament\npredicaments\npredicate\npredicated\npredicates\npredicating\npredication\npredications\npredicator\npredicators\npredicatory\npredict\npredictability\npredictable\npredictably\npredicted\npredicting\nprediction\npredictions\npredictive\npredictively\npredictor\npredictors\npredicts\npredigest\npredigested\npredigesting\npredigestion\npredigestions\npredigests\npredilection\npredilections\npredispose\npredisposed\npredisposes\npredisposing\npredisposition\npredispositions\npredominance\npredominances\npredominancy\npredominant\npredominantly\npredominate\npredominated\npredominately\npredominates\npredominating\npredomination\npredominations\npredusk\npredusks\npree\npreed\npreeing\npreelect\npreelected\npreelecting\npreelects\npreemie\npreemies\npreeminence\npreeminent\npreeminently\npreempt\npreempted\npreempting\npreemption\npreemptions\npreemptive\npreemptively\npreempts\npreen\npreenact\npreenacted\npreenactg\npreenacting\npreenacts\npreened\npreener\npreeners\npreening\npreens\nprees\npreestablish\npreestablished\npreestablishes\npreestablishing\npreexist\npreexisted\npreexistence\npreexistences\npreexistent\npreexisting\npreexists\nprefab\nprefabbed\nprefabbing\nprefabricate\nprefabricated\nprefabricates\nprefabricating\nprefabrication\nprefabrications\nprefabs\npreface\nprefaced\nprefacer\nprefacers\nprefaces\nprefacing\nprefatory\nprefect\nprefects\nprefectural\nprefecture\nprefectures\nprefer\npreferability\npreferable\npreferably\npreference\npreferences\npreferential\npreferentially\npreferment\npreferments\npreferred\npreferring\nprefers\nprefiguration\nprefigurations\nprefigurative\nprefiguratively\nprefigurativeness\nprefigure\nprefigured\nprefigurement\nprefigurements\nprefigures\nprefiguring\nprefix\nprefixal\nprefixed\nprefixes\nprefixing\npreflight\nprefocus\nprefocused\nprefocuses\nprefocusing\nprefocussed\nprefocusses\nprefocussing\npreform\npreformation\npreformations\npreformed\npreforming\npreforms\nprefrank\nprefranked\nprefranking\nprefranks\npregame\npregnability\npregnable\npregnancies\npregnancy\npregnant\npregnantly\npreheat\npreheated\npreheating\npreheats\nprehensile\nprehensility\nprehension\nprehensions\nprehistorian\nprehistorians\nprehistoric\nprehistorically\nprehistories\nprehistory\nprehuman\nprehumans\nprejudge\nprejudged\nprejudges\nprejudging\nprejudgment\nprejudgments\nprejudice\nprejudiced\nprejudices\nprejudicial\nprejudicially\nprejudicialness\nprejudicing\nprelacies\nprelacy\nprelate\nprelates\nprelatic\nprelaunch\nprelect\nprelected\nprelecting\nprelects\nprelegal\nprelim\npreliminaries\npreliminarily\npreliminary\nprelimit\nprelimited\nprelimiting\nprelimits\nprelims\nprelude\npreluded\npreluder\npreluders\npreludes\npreluding\nprelusion\nprelusions\nprelusive\nprelusively\npreman\npremarital\npremature\nprematurely\nprematureness\nprematurity\npremed\npremedic\npremedical\npremedics\npremeditate\npremeditated\npremeditatedly\npremeditates\npremeditating\npremeditation\npremeditations\npremeditative\npremeds\npremen\npremenstrual\npremie\npremier\npremiere\npremiered\npremieres\npremiering\npremiers\npremies\npremise\npremised\npremises\npremising\npremiss\npremisses\npremium\npremiums\npremix\npremixed\npremixes\npremixing\npremolar\npremolars\npremonition\npremonitions\npremonitory\npremorse\npremune\nprename\nprenames\nprenatal\nprenatally\nprenomen\nprenomens\nprenomina\nprentice\nprenticed\nprentices\nprenticing\npreoccupancy\npreoccupation\npreoccupations\npreoccupied\npreoccupies\npreoccupy\npreoccupying\npreordain\npreordained\npreordaining\npreordains\npreordination\npreordinations\nprep\nprepack\nprepackage\nprepackaged\nprepackages\nprepackaging\nprepacked\nprepacking\nprepacks\nprepaid\npreparation\npreparations\npreparative\npreparatively\npreparatorily\npreparatory\nprepare\nprepared\npreparedly\npreparedness\npreparer\npreparers\nprepares\npreparing\nprepay\nprepaying\nprepayment\nprepayments\nprepays\nprepense\npreplace\npreplaced\npreplaces\npreplacing\npreplan\npreplanned\npreplanning\npreplans\npreplant\npreponderance\npreponderances\npreponderancy\npreponderant\npreponderantly\npreponderate\npreponderated\npreponderates\npreponderating\npreponderation\npreponderations\npreposition\nprepositional\nprepositionally\nprepositions\nprepossess\nprepossessed\nprepossesses\nprepossessing\nprepossession\nprepossessions\npreposterous\npreposterously\npreposterousness\nprepped\npreppie\npreppies\nprepping\npreprint\npreprinted\npreprinting\npreprints\npreprocess\npreprocessed\npreprocesses\npreprocessing\npreprocessor\npreprocessors\npreprogram\npreprogramming\npreps\nprepuce\nprepuces\nprepunch\nprepunched\nprepunches\nprepunching\nprerecord\nprerecorded\nprerecording\nprerecords\npreregister\npreregistered\npreregistering\npreregisters\npreregistration\npreregistrations\nprerenal\nprerequisite\nprerequisites\nprerogative\nprerogatives\npresa\npresage\npresaged\npresager\npresagers\npresages\npresaging\npresbyter\npresbyterial\npresbyters\npreschool\npreschools\nprescience\nprescient\npresciently\nprescind\nprescinded\nprescinding\nprescinds\nprescore\nprescored\nprescores\nprescoring\nprescribe\nprescribed\nprescriber\nprescribers\nprescribes\nprescribing\nprescript\nprescription\nprescriptions\nprescriptive\nprescriptively\nprescripts\nprese\npreseason\npresell\npreselling\npresells\npresence\npresences\npresent\npresentability\npresentable\npresentableness\npresentably\npresentation\npresentational\npresentations\npresentative\npresented\npresentee\npresentees\npresenter\npresenters\npresentiment\npresentimental\npresentiments\npresenting\npresently\npresentment\npresentments\npresentness\npresents\npreservability\npreservable\npreservation\npreservationist\npreservationists\npreservations\npreservative\npreservatives\npreserve\npreserved\npreserver\npreservers\npreserves\npreserving\npreset\npresets\npresetting\npreshape\npreshaped\npreshapes\npreshaping\npreshow\npreshowed\npreshowing\npreshown\npreshows\npreshrunk\npreside\npresided\npresidencies\npresidency\npresident\npresidential\npresidentially\npresidents\npresider\npresiders\npresides\npresidia\npresiding\npresidio\npresidios\npresidium\npresidiums\npresift\npresifted\npresifting\npresifts\npresignified\npresignifies\npresignify\npresignifying\npresoak\npresoaked\npresoaking\npresoaks\npresold\npress\npressed\npresser\npressers\npresses\npressing\npressingly\npressman\npressmen\npressor\npressrun\npressruns\npressure\npressured\npressureless\npressures\npressuring\npressurization\npressurizations\npressurize\npressurized\npressurizer\npressurizers\npressurizes\npressurizing\npresswork\npressworks\nprest\nprestamp\nprestamped\nprestamping\nprestamps\nprester\npresters\nprestidigitation\nprestidigitations\nprestidigitator\nprestidigitators\nprestige\nprestiges\nprestigious\nprestigiously\nprestigiousness\npresto\nprestos\nprestress\nprestressed\nprestresses\nprestressing\nprests\npresumable\npresumably\npresume\npresumed\npresumedly\npresumer\npresumers\npresumes\npresuming\npresumingly\npresumption\npresumptions\npresumptive\npresumptively\npresumptuous\npresumptuously\npresumptuousness\npresuppose\npresupposed\npresupposes\npresupposing\npresupposition\npresuppositions\npretaste\npretasted\npretastes\npretasting\npretax\npreteen\npreteens\npretence\npretences\npretend\npretended\npretendedly\npretender\npretenders\npretending\npretends\npretense\npretenses\npretension\npretensions\npretentious\npretentiously\npretentiousness\npreterit\npreterite\npreterites\npreterits\npreternatural\npreternaturally\npreternaturalness\npretest\npretested\npretesting\npretests\npretext\npretexted\npretexting\npretexts\npretor\npretors\npretreat\npretreated\npretreating\npretreats\nprettied\nprettier\npretties\nprettiest\nprettified\nprettifies\nprettify\nprettifying\nprettily\nprettiness\npretty\nprettying\nprettyish\npretzel\npretzels\npreunion\npreunions\npreunite\npreunited\npreunites\npreuniting\nprevail\nprevailed\nprevailing\nprevailingly\nprevails\nprevalence\nprevalent\nprevalently\nprevaricate\nprevaricated\nprevaricates\nprevaricating\nprevarication\nprevarications\nprevaricator\nprevaricators\nprevenient\npreveniently\nprevent\npreventability\npreventable\npreventative\nprevented\npreventing\nprevention\npreventions\npreventive\npreventively\npreventiveness\nprevents\npreview\npreviewed\npreviewing\npreviews\nprevious\npreviously\nprevise\nprevised\nprevises\nprevising\nprevision\nprevisional\nprevisions\nprevisor\nprevisors\nprevue\nprevued\nprevues\nprevuing\nprewar\nprewarm\nprewarmed\nprewarming\nprewarms\nprewarn\nprewarned\nprewarning\nprewarns\nprewash\nprewashed\nprewashes\nprewashing\nprewrap\nprewrapped\nprewrapping\nprewraps\nprex\nprexes\nprexies\nprexy\nprey\npreyed\npreyer\npreyers\npreying\npreys\nprez\npriapean\npriapi\npriapic\npriapism\npriapisms\npriapus\npriapuses\nprice\npriced\npriceless\npricer\npricers\nprices\npricey\npricier\npriciest\npricing\nprick\npricked\npricker\nprickers\npricket\nprickets\nprickier\nprickiest\npricking\nprickle\nprickled\nprickles\npricklier\nprickliest\nprickling\nprickly\npricks\npricky\npricy\npride\nprided\nprideful\npridefully\npridefulness\nprides\npriding\npried\npriedieu\npriedieus\npriedieux\nprier\npriers\npries\npriest\npriested\npriestess\npriestesses\npriesthood\npriesthoods\npriesting\npriestlier\npriestliest\npriestliness\npriestly\npriests\nprig\nprigged\npriggeries\npriggery\nprigging\npriggish\npriggishly\npriggishness\npriggism\npriggisms\nprigs\nprill\nprilled\nprilling\nprills\nprim\nprima\nprimacies\nprimacy\nprimage\nprimages\nprimal\nprimaries\nprimarily\nprimary\nprimas\nprimatal\nprimate\nprimates\nprime\nprimed\nprimely\nprimeness\nprimer\nprimero\nprimeros\nprimers\nprimes\nprimeval\nprimevally\nprimi\nprimine\nprimines\npriming\nprimings\nprimitive\nprimitively\nprimitiveness\nprimitives\nprimitivism\nprimitivist\nprimitivistic\nprimitivists\nprimly\nprimmed\nprimmer\nprimmest\nprimming\nprimness\nprimnesses\nprimo\nprimogenitor\nprimogenitors\nprimogeniture\nprimogenitures\nprimordial\nprimordially\nprimos\nprimp\nprimped\nprimping\nprimps\nprimrose\nprimroses\nprims\nprimsie\nprimula\nprimulas\nprimus\nprimuses\nprince\nprincedom\nprincedoms\nprincelier\nprinceliest\nprinceling\nprincelings\nprincely\nprinces\nprincess\nprincesses\nprincipal\nprincipalities\nprincipality\nprincipally\nprincipals\nprincipe\nprincipi\nprinciple\nprincipled\nprinciples\nprincock\nprincocks\nprincox\nprincoxes\nprink\nprinked\nprinker\nprinkers\nprinking\nprinks\nprint\nprintability\nprintable\nprinted\nprinter\nprinteries\nprinters\nprintery\nprinting\nprintings\nprintout\nprintouts\nprints\nprior\npriorate\npriorates\nprioress\nprioresses\npriories\npriorities\nprioritize\nprioritized\nprioritizes\nprioritizing\npriority\npriorly\npriors\npriory\nprise\nprised\nprisere\npriseres\nprises\nprising\nprism\nprismatic\nprismatically\nprismoid\nprismoids\nprisms\nprison\nprisoned\nprisoner\nprisoners\nprisoning\nprisons\npriss\nprisses\nprissier\nprissies\nprissiest\nprissily\nprissiness\nprissy\npristane\npristanes\npristine\nprithee\nprivacies\nprivacy\nprivate\nprivateer\nprivateers\nprivately\nprivateness\nprivater\nprivates\nprivatest\nprivation\nprivations\nprivatism\nprivative\nprivatively\nprivet\nprivets\nprivier\nprivies\npriviest\nprivilege\nprivileged\nprivileges\nprivileging\nprivily\nprivities\nprivity\nprivy\nprize\nprized\nprizefight\nprizefighter\nprizefighters\nprizefighting\nprizefights\nprizer\nprizers\nprizes\nprizewinner\nprizewinners\nprizing\npro\nproa\nproas\nprobabilist\nprobabilistic\nprobabilists\nprobabilities\nprobability\nprobable\nprobably\nproband\nprobands\nprobang\nprobangs\nprobate\nprobated\nprobates\nprobating\nprobation\nprobational\nprobationary\nprobationer\nprobationers\nprobations\nprobative\nprobe\nprobed\nprober\nprobers\nprobes\nprobing\nprobit\nprobities\nprobits\nprobity\nproblem\nproblematic\nproblematical\nproblematically\nproblems\nproboscis\nproboscises\nprocaine\nprocaines\nprocarp\nprocarps\nprocedural\nprocedure\nprocedures\nproceed\nproceeded\nproceeding\nproceedings\nproceeds\nprocess\nprocessed\nprocesses\nprocessing\nprocession\nprocessional\nprocessionally\nprocessions\nprocessor\nprocessors\nprochain\nprochein\nproclaim\nproclaimed\nproclaiming\nproclaims\nproclamation\nproclamations\nproclivities\nproclivity\nproconsul\nproconsular\nproconsulate\nproconsulates\nproconsuls\nprocrastinate\nprocrastinated\nprocrastinates\nprocrastinating\nprocrastination\nprocrastinations\nprocrastinator\nprocrastinators\nprocreate\nprocreated\nprocreates\nprocreating\nprocreation\nprocreations\nprocreative\nprocreator\nprocreators\nproctologic\nproctological\nproctologist\nproctologists\nproctology\nproctor\nproctored\nproctorial\nproctoring\nproctors\nprocurable\nprocural\nprocurals\nprocurance\nprocurances\nprocuration\nprocurations\nprocurator\nprocurators\nprocure\nprocured\nprocurement\nprocurements\nprocurer\nprocurers\nprocures\nprocuring\nprod\nprodded\nprodder\nprodders\nprodding\nprodigal\nprodigality\nprodigally\nprodigals\nprodigies\nprodigious\nprodigiously\nprodigiousness\nprodigy\nprodromata\nprodrome\nprodromes\nprods\nproduce\nproduced\nproducer\nproducers\nproduces\nproducible\nproducing\nproduct\nproduction\nproductional\nproductions\nproductive\nproductively\nproductiveness\nproductivity\nproducts\nproem\nproemial\nproems\nproette\nproettes\nprof\nprofanation\nprofanations\nprofane\nprofaned\nprofanely\nprofaneness\nprofaner\nprofaners\nprofanes\nprofaning\nprofanities\nprofanity\nprofess\nprofessed\nprofessedly\nprofesses\nprofessing\nprofession\nprofessional\nprofessionalism\nprofessionalize\nprofessionally\nprofessionals\nprofessions\nprofessor\nprofessorate\nprofessorates\nprofessorial\nprofessorially\nprofessoriat\nprofessoriate\nprofessoriates\nprofessoriats\nprofessors\nprofessorship\nprofessorships\nproffer\nproffered\nproffering\nproffers\nproficiency\nproficient\nproficiently\nprofile\nprofiled\nprofiler\nprofilers\nprofiles\nprofiling\nprofit\nprofitability\nprofitable\nprofitableness\nprofitably\nprofited\nprofiteer\nprofiteered\nprofiteering\nprofiteers\nprofiter\nprofiters\nprofiting\nprofitless\nprofits\nprofligacy\nprofligate\nprofligately\nprofligates\nprofound\nprofounder\nprofoundest\nprofoundly\nprofoundness\nprofounds\nprofs\nprofundities\nprofundity\nprofuse\nprofusely\nprofuseness\nprofusion\nprofusions\nprog\nprogenies\nprogenitor\nprogenitors\nprogeny\nprogged\nprogger\nproggers\nprogging\nprognathous\nprognose\nprognosed\nprognoses\nprognosing\nprognosis\nprognostic\nprognosticate\nprognosticated\nprognosticates\nprognosticating\nprognostication\nprognostications\nprognosticative\nprognosticator\nprognosticators\nprograde\nprogram\nprogramed\nprogramer\nprogramers\nprograming\nprogrammability\nprogrammable\nprogrammatic\nprogrammatically\nprogrammed\nprogrammer\nprogrammers\nprogramming\nprograms\nprogress\nprogressed\nprogresses\nprogressing\nprogression\nprogressional\nprogressions\nprogressive\nprogressively\nprogressiveness\nprogressivism\nprogressivist\nprogressivists\nprogs\nprohibit\nprohibited\nprohibiting\nprohibition\nprohibitionist\nprohibitionists\nprohibitions\nprohibitive\nprohibitively\nprohibitiveness\nprohibitory\nprohibits\nproject\nprojected\nprojectile\nprojectiles\nprojecting\nprojection\nprojectional\nprojectionist\nprojectionists\nprojections\nprojective\nprojectively\nprojector\nprojectors\nprojects\nprojet\nprojets\nprolabor\nprolamin\nprolamine\nprolamines\nprolamins\nprolan\nprolans\nprolapse\nprolapsed\nprolapses\nprolapsing\nprolate\nprole\nproleg\nprolegs\nproleptic\nproles\nproletarian\nproletarianization\nproletarianize\nproletarianized\nproletarianizes\nproletarianizing\nproletarians\nproletariat\nproletariats\nproliferate\nproliferated\nproliferates\nproliferating\nproliferation\nproliferations\nproliferative\nprolific\nprolifically\nprolificness\nproline\nprolines\nprolix\nprolixity\nprolixly\nprolocutor\nprolocutors\nprolog\nprologed\nprologing\nprologize\nprologized\nprologizes\nprologizing\nprologs\nprologue\nprologued\nprologues\nprologuing\nprologuize\nprologuized\nprologuizes\nprologuizing\nprolong\nprolongation\nprolongations\nprolonge\nprolonged\nprolonges\nprolonging\nprolongs\nprom\npromenade\npromenaded\npromenades\npromenading\nprominence\nprominences\nprominent\nprominently\npromiscuities\npromiscuity\npromiscuous\npromiscuously\npromiscuousness\npromise\npromised\npromisee\npromisees\npromiser\npromisers\npromises\npromising\npromisingly\npromisor\npromisors\npromissory\npromo\npromontories\npromontory\npromotable\npromote\npromoted\npromoter\npromoters\npromotes\npromoting\npromotion\npromotional\npromotions\npromotive\nprompt\nprompted\nprompter\nprompters\npromptest\nprompting\npromptitude\npromptly\npromptness\nprompts\nproms\npromulgate\npromulgated\npromulgates\npromulgating\npromulgation\npromulgations\npromulgator\npromulgators\npromulge\npromulged\npromulges\npromulging\npronate\npronated\npronates\npronating\npronator\npronatores\npronators\nprone\npronely\nproneness\nprong\npronged\npronging\nprongs\npronominal\npronominally\npronota\npronotum\npronoun\npronounce\npronounceable\npronounced\npronouncement\npronouncements\npronounces\npronouncing\npronouns\npronto\npronunciation\npronunciational\npronunciations\nproof\nproofed\nproofer\nproofers\nproofing\nproofread\nproofreader\nproofreaders\nproofreading\nproofreads\nproofs\nprop\npropagable\npropaganda\npropagandist\npropagandistic\npropagandists\npropagandize\npropagandized\npropagandizes\npropagandizing\npropagate\npropagated\npropagates\npropagating\npropagation\npropagations\npropagative\npropagator\npropagators\npropane\npropanes\npropel\npropellant\npropellants\npropelled\npropellent\npropeller\npropellers\npropelling\npropels\npropend\npropended\npropending\npropends\npropene\npropenes\npropenol\npropenols\npropense\npropensities\npropensity\npropenyl\nproper\nproperer\nproperest\nproperly\nproperness\npropers\npropertied\nproperties\nproperty\npropertyless\nprophage\nprophages\nprophase\nprophases\nprophecies\nprophecy\nprophesied\nprophesier\nprophesiers\nprophesies\nprophesy\nprophesying\nprophet\nprophetess\nprophetesses\nprophetic\nprophetical\nprophetically\nprophets\nprophylactic\nprophylactically\nprophylactics\nprophylaxes\nprophylaxis\npropine\npropined\npropines\npropining\npropinquities\npropinquity\npropitiate\npropitiated\npropitiates\npropitiating\npropitiation\npropitiations\npropitiator\npropitiators\npropitiatory\npropitious\npropitiously\npropitiousness\npropjet\npropjets\npropman\npropmen\npropolis\npropolises\npropone\nproponed\nproponent\nproponents\npropones\nproponing\nproportion\nproportionable\nproportionably\nproportional\nproportionality\nproportionally\nproportionate\nproportionated\nproportionately\nproportionates\nproportionating\nproportioned\nproportioning\nproportions\nproposal\nproposals\npropose\nproposed\nproposer\nproposers\nproposes\nproposing\nproposition\npropositional\npropositioned\npropositioning\npropositions\npropound\npropounded\npropounder\npropounders\npropounding\npropounds\npropped\npropping\nproprietaries\nproprietary\nproprieties\nproprietor\nproprietors\nproprietorship\nproprietress\nproprietresses\npropriety\nprops\npropulsion\npropulsions\npropulsive\npropyl\npropyla\npropylic\npropylon\npropyls\nprorate\nprorated\nprorates\nprorating\nproration\nprorations\nprorogation\nprorogations\nprorogue\nprorogued\nprorogues\nproroguing\npros\nprosaic\nprosaically\nprosaism\nprosaisms\nprosaist\nprosaists\nprosciutti\nprosciutto\nprosciuttos\nproscribe\nproscribed\nproscriber\nproscribers\nproscribes\nproscribing\nproscription\nproscriptions\nproscriptive\nproscriptively\nprose\nprosect\nprosected\nprosecting\nprosects\nprosecutable\nprosecute\nprosecuted\nprosecutes\nprosecuting\nprosecution\nprosecutions\nprosecutor\nprosecutors\nprosed\nproselyte\nproselyted\nproselytes\nproselyting\nproselytize\nproselytized\nproselytizer\nproselytizers\nproselytizes\nproselytizing\nproser\nprosers\nproses\nprosier\nprosiest\nprosily\nprosiness\nprosing\nprosit\nproso\nprosodic\nprosodical\nprosodies\nprosody\nprosoma\nprosomal\nprosomas\nprosos\nprospect\nprospected\nprospecting\nprospective\nprospectively\nprospector\nprospectors\nprospects\nprospectus\nprospectuses\nprosper\nprospered\nprospering\nprosperity\nprosperous\nprosperously\nprosperousness\nprospers\npross\nprost\nprostate\nprostates\nprostheses\nprosthesis\nprosthetic\nprosthetically\nprosthetics\nprostitute\nprostituted\nprostitutes\nprostituting\nprostitution\nprostitutions\nprostrate\nprostrated\nprostrates\nprostrating\nprostration\nprostrations\nprostyle\nprostyles\nprosy\nprotagonist\nprotagonists\nprotamin\nprotamins\nprotases\nprotasis\nprotatic\nprotea\nprotean\nproteas\nprotease\nproteases\nprotect\nprotected\nprotecting\nprotection\nprotectionism\nprotectionist\nprotectionists\nprotections\nprotective\nprotectively\nprotectiveness\nprotector\nprotectoral\nprotectorate\nprotectorates\nprotectories\nprotectors\nprotectorship\nprotectory\nprotectress\nprotectresses\nprotects\nprotege\nprotegee\nprotegees\nproteges\nprotei\nproteid\nproteide\nproteides\nproteids\nprotein\nproteins\nprotend\nprotended\nprotending\nprotends\nproteose\nproteoses\nprotest\nprotestant\nprotestation\nprotestations\nprotested\nprotester\nprotesters\nprotesting\nprotestor\nprotestors\nprotests\nproteus\nprothonotaries\nprothonotary\nprotist\nprotists\nprotium\nprotiums\nprotocol\nprotocoled\nprotocoling\nprotocolled\nprotocolling\nprotocols\nproton\nprotonic\nprotons\nprotoplasm\nprotoplasmic\nprotoplasms\nprotopod\nprotopods\nprototypal\nprototype\nprototypes\nprototypical\nprototypically\nprotoxid\nprotoxids\nprotozoa\nprotozoal\nprotozoan\nprotozoans\nprotozoologist\nprotozoologists\nprotozoology\nprotozoon\nprotract\nprotracted\nprotractile\nprotracting\nprotraction\nprotractions\nprotractive\nprotractor\nprotractors\nprotracts\nprotrude\nprotruded\nprotrudes\nprotruding\nprotrusion\nprotrusions\nprotrusive\nprotrusively\nprotrusiveness\nprotuberance\nprotuberances\nprotuberant\nprotuberantly\nprotyl\nprotyle\nprotyles\nprotyls\nproud\nprouder\nproudest\nproudful\nproudly\nprounion\nprovable\nprovableness\nprovably\nprove\nproved\nproven\nprovenance\nprovenances\nprovender\nprovenience\nproveniences\nprovenly\nprover\nproverb\nproverbed\nproverbial\nproverbially\nproverbing\nproverbs\nprovers\nproves\nprovide\nprovided\nprovidence\nprovident\nprovidential\nprovidentially\nprovidently\nprovider\nproviders\nprovides\nproviding\nprovince\nprovinces\nprovincial\nprovincialism\nprovincialisms\nprovincialities\nprovinciality\nprovincially\nproving\nproviral\nprovirus\nproviruses\nprovision\nprovisional\nprovisionally\nprovisionary\nprovisioned\nprovisioner\nprovisioners\nprovisioning\nprovisions\nproviso\nprovisoes\nprovisory\nprovisos\nprovocateur\nprovocateurs\nprovocation\nprovocations\nprovocative\nprovocatively\nprovocativeness\nprovoke\nprovoked\nprovoker\nprovokers\nprovokes\nprovoking\nprovokingly\nprovolone\nprovost\nprovosts\nprow\nprowar\nprower\nprowess\nprowesses\nprowest\nprowl\nprowled\nprowler\nprowlers\nprowling\nprowls\nprows\nproxemic\nproxies\nproximal\nproximally\nproximate\nproximately\nproximateness\nproximity\nproximo\nproxy\nprude\nprudence\nprudences\nprudent\nprudential\nprudentially\nprudently\npruderies\nprudery\nprudes\nprudish\nprudishly\nprudishness\npruinose\nprunable\nprune\npruned\nprunella\nprunellas\nprunelle\nprunelles\nprunello\nprunellos\npruner\npruners\nprunes\npruning\nprurience\npruriency\nprurient\npruriently\nprurigo\nprurigos\npruritic\npruritus\nprurituses\nprussic\npruta\nprutah\nprutot\nprutoth\npry\npryer\npryers\nprying\npryingly\nprythee\npsalm\npsalmbook\npsalmbooks\npsalmed\npsalmic\npsalming\npsalmist\npsalmists\npsalmodies\npsalmody\npsalms\npsalter\npsalteries\npsalters\npsaltery\npsaltries\npsaltry\npsammite\npsammites\npschent\npschents\npsephite\npsephites\npseud\npseudo\npseudonym\npseudonymity\npseudonymous\npseudonymously\npseudonyms\npseudorandom\npshaw\npshawed\npshawing\npshaws\npsi\npsiloses\npsilosis\npsilotic\npsis\npsoae\npsoai\npsoas\npsocid\npsocids\npsoralea\npsoraleas\npsoriasis\npsst\npsych\npsyche\npsyched\npsychedelic\npsychedelically\npsyches\npsychiatric\npsychiatrically\npsychiatrist\npsychiatrists\npsychiatry\npsychic\npsychically\npsychics\npsyching\npsycho\npsychoanalysis\npsychoanalyst\npsychoanalysts\npsychoanalytic\npsychoanalytically\npsychoanalyze\npsychoanalyzed\npsychoanalyzes\npsychoanalyzing\npsychobiological\npsychobiologies\npsychobiologist\npsychobiologists\npsychobiology\npsychodrama\npsychodramas\npsychogenetic\npsychological\npsychologically\npsychologies\npsychologist\npsychologists\npsychologize\npsychologized\npsychologizes\npsychologizing\npsychology\npsychometric\npsychometrically\npsychometrician\npsychometricians\npsychometrics\npsychometry\npsychopath\npsychopathic\npsychopathologic\npsychopathological\npsychopathologist\npsychopathologists\npsychopathology\npsychopaths\npsychos\npsychoses\npsychosexual\npsychosexuality\npsychosexually\npsychosis\npsychosomatic\npsychosomatically\npsychosomatics\npsychotherapies\npsychotherapist\npsychotherapists\npsychotherapy\npsychotic\npsychrometer\npsychrometers\npsychrometric\npsychs\npsylla\npsyllas\npsyllid\npsyllids\nptarmigan\nptarmigans\npterin\npterins\npterodactyl\npterodactyls\npteropod\npteropods\npteryla\npterylae\nptisan\nptisans\nptomain\nptomaine\nptomaines\nptomains\nptoses\nptosis\nptotic\nptyalin\nptyalins\nptyalism\nptyalisms\npub\npuberal\npubertal\npuberties\npuberty\npubes\npubescence\npubescent\npubic\npubis\npublic\npublican\npublicans\npublication\npublications\npublicist\npublicists\npublicities\npublicity\npublicize\npublicized\npublicizes\npublicizing\npublicly\npublicness\npublics\npublish\npublishable\npublished\npublisher\npublishers\npublishes\npublishing\npubs\npuccoon\npuccoons\npuce\npuces\npuck\npucka\npucker\npuckered\npuckerer\npuckerers\npuckerier\npuckeriest\npuckering\npuckers\npuckery\npuckish\npucks\npud\npudding\npuddings\npuddle\npuddled\npuddler\npuddlers\npuddles\npuddlier\npuddliest\npuddling\npuddlings\npuddly\npudencies\npudency\npudenda\npudendal\npudendum\npudgier\npudgiest\npudgily\npudgy\npudic\npuds\npueblo\npueblos\npuerile\npuerilely\npuerilities\npuerility\npuff\npuffball\npuffballs\npuffed\npuffer\npufferies\npuffers\npuffery\npuffier\npuffiest\npuffily\npuffin\npuffiness\npuffing\npuffins\npuffs\npuffy\npug\npugaree\npugarees\npuggaree\npuggarees\npugged\npuggier\npuggiest\npugging\npuggish\npuggree\npuggrees\npuggries\npuggry\npuggy\npugh\npugilism\npugilisms\npugilist\npugilistic\npugilists\npugmark\npugmarks\npugnacious\npugnaciously\npugnaciousness\npugnacity\npugree\npugrees\npugs\npuisne\npuisnes\npuissance\npuissances\npuissant\npuissantly\npuja\npujah\npujas\npuke\npuked\npukes\npuking\npukka\npul\npula\npulchritude\npulchritudes\npulchritudinous\npule\npuled\npuler\npulers\npules\npuli\npulicene\npulicide\npulicides\npulik\npuling\npulingly\npulings\npulis\npull\npullback\npullbacks\npulled\npuller\npullers\npullet\npullets\npulley\npulleys\npulling\npullman\npullmans\npullout\npullouts\npullover\npullovers\npulls\npulmonary\npulmonic\npulmotor\npulmotors\npulp\npulpal\npulpally\npulped\npulper\npulpers\npulpier\npulpiest\npulpily\npulping\npulpit\npulpital\npulpits\npulpless\npulpous\npulps\npulpwood\npulpwoods\npulpy\npulque\npulques\npuls\npulsant\npulsar\npulsars\npulsate\npulsated\npulsates\npulsatile\npulsating\npulsation\npulsations\npulsator\npulsators\npulse\npulsed\npulsejet\npulsejets\npulser\npulsers\npulses\npulsing\npulsion\npulsions\npulsojet\npulsojets\npulverizable\npulverization\npulverizations\npulverize\npulverized\npulverizer\npulverizers\npulverizes\npulverizing\npulvilli\npulvinar\npulvini\npulvinus\npuma\npumas\npumelo\npumelos\npumice\npumiced\npumiceous\npumicer\npumicers\npumices\npumicing\npumicite\npumicites\npummel\npummeled\npummeling\npummelled\npummelling\npummels\npump\npumped\npumper\npumpernickel\npumpernickels\npumpers\npumping\npumpkin\npumpkins\npumpkinseed\npumpkinseeds\npumpless\npumplike\npumps\npun\npuna\npunas\npunch\npunched\npuncheon\npuncheons\npuncher\npunchers\npunches\npunchier\npunchiest\npunching\npunchy\npunctate\npunctilio\npunctilios\npunctilious\npunctiliously\npunctiliousness\npunctual\npunctuality\npunctually\npunctualness\npunctuate\npunctuated\npunctuates\npunctuating\npunctuation\npunctuations\npunctuator\npunctuators\npuncture\npunctured\npuncturer\npuncturers\npunctures\npuncturing\npundit\npunditic\npunditries\npunditry\npundits\npung\npungencies\npungency\npungent\npungently\npungs\npunier\npuniest\npunily\npuniness\npuninesses\npunish\npunishability\npunishable\npunished\npunisher\npunishers\npunishes\npunishing\npunishment\npunishments\npunition\npunitions\npunitive\npunitively\npunitiveness\npunitory\npunk\npunka\npunkah\npunkahs\npunkas\npunker\npunkest\npunkey\npunkeys\npunkie\npunkier\npunkies\npunkiest\npunkin\npunkins\npunks\npunky\npunned\npunner\npunners\npunnier\npunniest\npunning\npunny\npuns\npunster\npunsters\npunt\npunted\npunter\npunters\npunties\npunting\npunto\npuntos\npunts\npunty\npuny\npup\npupa\npupae\npupal\npuparia\npuparial\npuparium\npupas\npupate\npupated\npupates\npupating\npupation\npupations\npupfish\npupfishes\npupil\npupilage\npupilages\npupilar\npupilary\npupillage\npupillages\npupils\npupped\npuppet\npuppeteer\npuppeteers\npuppetries\npuppetry\npuppets\npuppies\npupping\npuppy\npuppydom\npuppydoms\npuppyhood\npuppyish\npuppylike\npups\npur\npurana\npuranas\npuranic\npurblind\npurchasable\npurchase\npurchased\npurchaser\npurchasers\npurchases\npurchasing\npurda\npurdah\npurdahs\npurdas\npure\npurebred\npurebreds\npuree\npureed\npureeing\npurees\npurely\npureness\npurenesses\npurer\npurest\npurfle\npurfled\npurfles\npurfling\npurflings\npurgation\npurgations\npurgative\npurgatively\npurgatorial\npurgatories\npurgatory\npurge\npurged\npurger\npurgers\npurges\npurging\npurgings\npuri\npurification\npurifications\npurified\npurifier\npurifiers\npurifies\npurify\npurifying\npurin\npurine\npurines\npurins\npuris\npurism\npurisms\npurist\npuristic\npurists\npuritan\npuritanical\npuritanically\npuritanism\npuritans\npurities\npurity\npurl\npurled\npurlieu\npurlieus\npurlin\npurline\npurlines\npurling\npurlins\npurloin\npurloined\npurloiner\npurloiners\npurloining\npurloins\npurls\npurple\npurpled\npurpler\npurples\npurplest\npurpling\npurplish\npurply\npurport\npurported\npurportedly\npurporting\npurports\npurpose\npurposed\npurposeful\npurposefully\npurposefulness\npurposeless\npurposelessly\npurposelessness\npurposely\npurposes\npurposing\npurposive\npurposively\npurposiveness\npurpura\npurpuras\npurpure\npurpures\npurpuric\npurpurin\npurpurins\npurr\npurred\npurring\npurringly\npurrs\npurs\npurse\npursed\npurselike\npurser\npursers\npurses\npursier\npursiest\npursily\npursing\npurslane\npurslanes\npursuant\npursue\npursued\npursuer\npursuers\npursues\npursuing\npursuit\npursuits\npursy\npurulence\npurulent\npurvey\npurveyance\npurveyances\npurveyed\npurveying\npurveyor\npurveyors\npurveys\npurview\npurviews\npus\npuses\npush\npushball\npushballs\npushcart\npushcarts\npushdown\npushdowns\npushed\npusher\npushers\npushes\npushful\npushier\npushiest\npushily\npushiness\npushing\npushover\npushovers\npushpin\npushpins\npushup\npushups\npushy\npusillanimity\npusillanimous\npusillanimously\npusley\npusleys\npuslike\npuss\npusses\npussier\npussies\npussiest\npussley\npussleys\npusslies\npusslike\npussly\npussy\npussycat\npussycats\npussyfoot\npussyfooted\npussyfooter\npussyfooters\npussyfooting\npussyfoots\npustular\npustulate\npustulated\npustulates\npustulating\npustulation\npustulations\npustule\npustuled\npustules\nput\nputamen\nputamina\nputative\nputatively\nputlog\nputlogs\nputoff\nputoffs\nputon\nputons\nputout\nputouts\nputrefaction\nputrefactions\nputrefactive\nputrefied\nputrefies\nputrefy\nputrefying\nputrid\nputridity\nputridly\nputs\nputsch\nputsches\nputt\nputted\nputtee\nputtees\nputter\nputtered\nputterer\nputterers\nputtering\nputters\nputti\nputtied\nputtier\nputtiers\nputties\nputting\nputto\nputts\nputty\nputtying\nputz\npuzzle\npuzzled\npuzzlement\npuzzlements\npuzzler\npuzzlers\npuzzles\npuzzling\npuzzlingly\npya\npyaemia\npyaemias\npyaemic\npyas\npycnidia\npye\npyelitic\npyelitis\npyelitises\npyemia\npyemias\npyemic\npyes\npygidia\npygidial\npygidium\npygmaean\npygmean\npygmies\npygmoid\npygmy\npygmyish\npygmyism\npygmyisms\npyic\npyin\npyins\npyjamas\npyknic\npyknics\npylon\npylons\npylori\npyloric\npylorus\npyloruses\npyoderma\npyodermas\npyogenic\npyoid\npyorrhea\npyorrheas\npyoses\npyosis\npyralid\npyralids\npyramid\npyramidal\npyramidally\npyramided\npyramidical\npyramiding\npyramids\npyran\npyranoid\npyranose\npyranoses\npyrans\npyre\npyrene\npyrenes\npyrenoid\npyrenoids\npyres\npyretic\npyrexia\npyrexial\npyrexias\npyrexic\npyric\npyridic\npyridine\npyridines\npyriform\npyrite\npyrites\npyritic\npyritous\npyrogen\npyrogens\npyrola\npyrolas\npyrologies\npyrology\npyrolyze\npyrolyzed\npyrolyzes\npyrolyzing\npyromania\npyromaniac\npyromaniacal\npyromaniacs\npyrone\npyrones\npyronine\npyronines\npyrope\npyropes\npyrosis\npyrosises\npyrostat\npyrostats\npyrotechnic\npyrotechnically\npyrotechnics\npyrotechnist\npyrotechnists\npyroxene\npyroxenes\npyroxylin\npyroxylins\npyrrhic\npyrrhics\npyrrol\npyrrole\npyrroles\npyrrolic\npyrrols\npyruvate\npyruvates\npython\npythoness\npythonesses\npythonic\npythons\npyuria\npyurias\npyx\npyxes\npyxides\npyxidia\npyxidium\npyxie\npyxies\npyxis\nqaid\nqaids\nqanat\nqanats\nqat\nqats\nqindar\nqindars\nqintar\nqintars\nqiviut\nqiviuts\nqoph\nqophs\nqua\nquack\nquacked\nquackeries\nquackery\nquacking\nquackish\nquackism\nquackisms\nquacks\nquad\nquadded\nquadding\nquadrangle\nquadrangles\nquadrangular\nquadrans\nquadrant\nquadrantal\nquadrantes\nquadrants\nquadraphonic\nquadrat\nquadrate\nquadrated\nquadrates\nquadratic\nquadratics\nquadrating\nquadrats\nquadrennial\nquadrennially\nquadric\nquadrics\nquadriga\nquadrigae\nquadrilateral\nquadrilaterals\nquadrille\nquadrilles\nquadrillion\nquadrillions\nquadrillionth\nquadriplegia\nquadriplegic\nquadriplegics\nquadroon\nquadroons\nquadruped\nquadrupedal\nquadrupeds\nquadruple\nquadrupled\nquadruples\nquadruplet\nquadruplets\nquadruplicate\nquadruplicated\nquadruplicates\nquadruplicating\nquadruplication\nquadruplications\nquadrupling\nquadruply\nquads\nquaere\nquaeres\nquaestor\nquaestors\nquaff\nquaffed\nquaffer\nquaffers\nquaffing\nquaffs\nquag\nquagga\nquaggas\nquaggier\nquaggiest\nquaggy\nquagmire\nquagmires\nquagmirier\nquagmiriest\nquagmiry\nquags\nquahaug\nquahaugs\nquahog\nquahogs\nquai\nquaich\nquaiches\nquaichs\nquaigh\nquaighs\nquail\nquailed\nquailing\nquails\nquaint\nquainter\nquaintest\nquaintly\nquaintness\nquais\nquake\nquaked\nquaker\nquakers\nquakes\nquakier\nquakiest\nquakily\nquaking\nquaky\nquale\nqualia\nqualifiable\nqualification\nqualifications\nqualified\nqualifiedly\nqualifier\nqualifiers\nqualifies\nqualify\nqualifying\nqualitative\nqualitatively\nqualities\nquality\nqualm\nqualmier\nqualmiest\nqualmish\nqualms\nqualmy\nquamash\nquamashes\nquandang\nquandangs\nquandaries\nquandary\nquandong\nquandongs\nquant\nquanta\nquantal\nquanted\nquantic\nquantics\nquanties\nquantifiable\nquantification\nquantifications\nquantified\nquantifier\nquantifiers\nquantifies\nquantify\nquantifying\nquanting\nquantitate\nquantitated\nquantitates\nquantitating\nquantitative\nquantitatively\nquantitativeness\nquantities\nquantity\nquantization\nquantizations\nquantize\nquantized\nquantizes\nquantizing\nquantong\nquantongs\nquants\nquantum\nquarantine\nquarantined\nquarantines\nquarantining\nquare\nquark\nquarks\nquarrel\nquarreled\nquarreler\nquarrelers\nquarreling\nquarrelled\nquarreller\nquarrellers\nquarrelling\nquarrels\nquarrelsome\nquarrelsomely\nquarrelsomeness\nquarried\nquarrier\nquarriers\nquarries\nquarry\nquarrying\nquart\nquartan\nquartans\nquarte\nquarter\nquarterage\nquarterages\nquarterback\nquarterbacks\nquarterdeck\nquarterdecks\nquartered\nquartering\nquarterlies\nquarterly\nquartermaster\nquartermasters\nquartern\nquarterns\nquarters\nquartersawed\nquartes\nquartet\nquartets\nquartic\nquartics\nquartile\nquartiles\nquarto\nquartos\nquarts\nquartz\nquartzes\nquartzite\nquartzites\nquasar\nquasars\nquash\nquashed\nquashes\nquashing\nquasi\nquass\nquasses\nquassia\nquassias\nquassin\nquassins\nquate\nquaternaries\nquaternary\nquatorze\nquatorzes\nquatrain\nquatrains\nquatre\nquatrefoil\nquatrefoils\nquatres\nquaver\nquavered\nquaverer\nquaverers\nquavering\nquavers\nquavery\nquay\nquayage\nquayages\nquaylike\nquays\nquayside\nquaysides\nquean\nqueans\nqueasier\nqueasiest\nqueasily\nqueasiness\nqueasy\nqueazier\nqueaziest\nqueazy\nqueen\nqueened\nqueening\nqueenlier\nqueenliest\nqueenly\nqueens\nqueer\nqueered\nqueerer\nqueerest\nqueering\nqueerish\nqueerly\nqueerness\nqueers\nquell\nquelled\nqueller\nquellers\nquelling\nquells\nquench\nquenchable\nquenched\nquencher\nquenchers\nquenches\nquenching\nquenchless\nquenelle\nquenelles\nquercine\nquerida\nqueridas\nqueried\nquerier\nqueriers\nqueries\nquerist\nquerists\nquern\nquerns\nquerulous\nquerulously\nquerulousness\nquery\nquerying\nquest\nquested\nquester\nquesters\nquesting\nquestion\nquestionable\nquestionableness\nquestionably\nquestioned\nquestioner\nquestioners\nquestioning\nquestioningly\nquestionless\nquestionnaire\nquestionnaires\nquestions\nquestor\nquestors\nquests\nquetzal\nquetzales\nquetzals\nqueue\nqueued\nqueueing\nqueuer\nqueuers\nqueues\nqueuing\nquey\nqueys\nquezal\nquezales\nquezals\nquibble\nquibbled\nquibbler\nquibblers\nquibbles\nquibbling\nquiche\nquiches\nquick\nquicken\nquickened\nquickening\nquickens\nquicker\nquickest\nquickie\nquickies\nquicklime\nquickly\nquickness\nquicks\nquicksand\nquicksands\nquickset\nquicksets\nquicksilver\nquickstep\nquicksteps\nquid\nquiddities\nquiddity\nquidnunc\nquidnuncs\nquids\nquiescence\nquiescent\nquiescently\nquiet\nquieted\nquieten\nquietened\nquietening\nquietens\nquieter\nquieters\nquietest\nquieting\nquietism\nquietisms\nquietist\nquietistic\nquietists\nquietly\nquietness\nquiets\nquietude\nquietudes\nquietus\nquietuses\nquiff\nquiffs\nquill\nquillai\nquillais\nquilled\nquillet\nquillets\nquilling\nquills\nquilt\nquilted\nquilter\nquilters\nquilting\nquiltings\nquilts\nquin\nquinaries\nquinary\nquinate\nquince\nquinces\nquincunx\nquincunxes\nquinella\nquinellas\nquinic\nquiniela\nquinielas\nquinin\nquinina\nquininas\nquinine\nquinines\nquinins\nquinnat\nquinnats\nquinoa\nquinoas\nquinoid\nquinoids\nquinol\nquinolin\nquinolins\nquinols\nquinone\nquinones\nquinquennial\nquinquennially\nquinquennials\nquins\nquinsies\nquinsy\nquint\nquintain\nquintains\nquintal\nquintals\nquintan\nquintans\nquintar\nquintars\nquintessence\nquintessences\nquintessential\nquintet\nquintets\nquintic\nquintics\nquintile\nquintiles\nquintillion\nquintillions\nquintillionth\nquintillionths\nquintin\nquintins\nquints\nquintuple\nquintupled\nquintuples\nquintuplet\nquintuplets\nquintupling\nquip\nquipped\nquipping\nquippish\nquippu\nquippus\nquips\nquipster\nquipsters\nquipu\nquipus\nquire\nquired\nquires\nquiring\nquirk\nquirked\nquirkier\nquirkiest\nquirkily\nquirkiness\nquirking\nquirks\nquirky\nquirt\nquirted\nquirting\nquirts\nquisling\nquislings\nquit\nquitch\nquitches\nquitclaim\nquitclaimed\nquitclaiming\nquitclaims\nquite\nquitrent\nquitrents\nquits\nquittance\nquittances\nquitted\nquitter\nquitters\nquitting\nquittor\nquittors\nquiver\nquivered\nquiverer\nquiverers\nquivering\nquivers\nquivery\nquixote\nquixotes\nquixotic\nquixotically\nquixotism\nquixotisms\nquixotries\nquixotry\nquiz\nquizzed\nquizzer\nquizzers\nquizzes\nquizzical\nquizzically\nquizzing\nquod\nquods\nquoin\nquoined\nquoining\nquoins\nquoit\nquoited\nquoiting\nquoits\nquomodo\nquomodos\nquondam\nquorum\nquorums\nquota\nquotable\nquotably\nquotas\nquotation\nquotations\nquote\nquoted\nquoter\nquoters\nquotes\nquoth\nquotha\nquotidian\nquotidians\nquotient\nquotients\nquoting\nqursh\nqurshes\nqurush\nqurushes\nrabat\nrabato\nrabatos\nrabbet\nrabbeted\nrabbeting\nrabbets\nrabbi\nrabbies\nrabbin\nrabbinate\nrabbinates\nrabbinic\nrabbinical\nrabbins\nrabbis\nrabbit\nrabbited\nrabbiter\nrabbiters\nrabbiting\nrabbitries\nrabbitry\nrabbits\nrabble\nrabbled\nrabblement\nrabblements\nrabbler\nrabblers\nrabbles\nrabbling\nrabboni\nrabbonis\nrabic\nrabid\nrabidities\nrabidity\nrabidly\nrabidness\nrabies\nrabietic\nraccoon\nraccoons\nrace\nracecourse\nracecourses\nraced\nracehorse\nracehorses\nracemate\nracemates\nraceme\nracemed\nracemes\nracemic\nracemism\nracemisms\nracemize\nracemized\nracemizes\nracemizing\nracemoid\nracemose\nracemous\nracer\nracers\nraces\nracetrack\nracetracker\nracetrackers\nracetracks\nraceway\nraceways\nrachet\nrachets\nrachial\nrachides\nrachis\nrachises\nrachitic\nrachitides\nrachitis\nracial\nracialism\nracialist\nracialistic\nracialists\nracially\nracier\nraciest\nracily\nraciness\nracinesses\nracing\nracings\nracism\nracisms\nracist\nracists\nrack\nracked\nracker\nrackers\nracket\nracketed\nracketeer\nracketeered\nracketeering\nracketeers\nracketier\nracketiest\nracketing\nrackets\nrackety\nracking\nrackle\nracks\nrackwork\nrackworks\nraclette\nraclettes\nracon\nracons\nraconteur\nraconteurs\nracoon\nracoons\nracquet\nracquetball\nracquets\nracy\nrad\nradar\nradars\nradded\nradding\nraddle\nraddled\nraddles\nraddling\nradiable\nradial\nradiale\nradialia\nradially\nradials\nradian\nradiance\nradiances\nradiancies\nradiancy\nradians\nradiant\nradiantly\nradiants\nradiate\nradiated\nradiates\nradiating\nradiation\nradiational\nradiations\nradiative\nradiator\nradiators\nradical\nradicalism\nradically\nradicals\nradicand\nradicands\nradicate\nradicated\nradicates\nradicating\nradicel\nradicels\nradices\nradicle\nradicles\nradii\nradio\nradioactive\nradioactively\nradioactivity\nradiocarbon\nradiocarbons\nradioed\nradiogram\nradiograms\nradiograph\nradiographed\nradiographic\nradiographically\nradiographing\nradiographs\nradiography\nradioing\nradioisotope\nradioisotopes\nradioisotopic\nradiological\nradiologies\nradiologist\nradiologists\nradiology\nradioman\nradiomen\nradiometer\nradiometers\nradiophone\nradiophones\nradiophoto\nradiophotos\nradios\nradiosonde\nradiosondes\nradiotelephone\nradiotelephones\nradiotherapies\nradiotherapist\nradiotherapists\nradiotherapy\nradish\nradishes\nradium\nradiums\nradius\nradiuses\nradix\nradixes\nradome\nradomes\nradon\nradons\nrads\nradula\nradulae\nradular\nradulas\nraff\nraffia\nraffias\nraffish\nraffishly\nraffishness\nraffle\nraffled\nraffler\nrafflers\nraffles\nraffling\nraffs\nraft\nrafted\nrafter\nrafters\nrafting\nrafts\nraftsman\nraftsmen\nrag\nraga\nragamuffin\nragamuffins\nragas\nragbag\nragbags\nrage\nraged\nragee\nragees\nrages\nragged\nraggeder\nraggedest\nraggedly\nraggedness\nraggedy\nraggies\nragging\nraggle\nraggles\nraggy\nragi\nraging\nragingly\nragis\nraglan\nraglans\nragman\nragmen\nragout\nragouted\nragouting\nragouts\nrags\nragtag\nragtags\nragtime\nragtimes\nragweed\nragweeds\nragwort\nragworts\nrah\nraia\nraias\nraid\nraided\nraider\nraiders\nraiding\nraids\nrail\nrailbird\nrailbirds\nrailed\nrailer\nrailers\nrailhead\nrailheads\nrailing\nrailings\nrailleries\nraillery\nrailroad\nrailroaded\nrailroader\nrailroaders\nrailroading\nrailroads\nrails\nrailway\nrailways\nraiment\nraiments\nrain\nrainband\nrainbands\nrainbird\nrainbirds\nrainbow\nrainbows\nraincoat\nraincoats\nraindrop\nraindrops\nrained\nrainfall\nrainfalls\nrainier\nrainiest\nrainily\nraining\nrainless\nrainmaker\nrainmakers\nrainmaking\nrainout\nrainouts\nrainproof\nrains\nrainstorm\nrainstorms\nrainwash\nrainwashes\nrainwater\nrainwaters\nrainwear\nrainwears\nrainy\nraisable\nraise\nraised\nraiser\nraisers\nraises\nraisin\nraising\nraisings\nraisins\nraisiny\nraisonne\nraj\nraja\nrajah\nrajahs\nrajas\nrajes\nrake\nraked\nrakee\nrakees\nrakehell\nrakehells\nrakeoff\nrakeoffs\nraker\nrakers\nrakes\nraki\nraking\nrakis\nrakish\nrakishly\nrakishness\nrale\nrales\nrallied\nrallier\nralliers\nrallies\nralline\nrally\nrallye\nrallyes\nrallying\nrallyings\nrallyist\nrallyists\nralph\nram\nramate\nramble\nrambled\nrambler\nramblers\nrambles\nrambling\nrambunctious\nrambutan\nrambutans\nramee\nramees\nramekin\nramekins\nramenta\nramentum\nramequin\nramequins\nramet\nramets\nrami\nramie\nramies\nramification\nramifications\nramified\nramifies\nramiform\nramify\nramifying\nramilie\nramilies\nramillie\nramillies\nramjet\nramjets\nrammed\nrammer\nrammers\nrammier\nrammiest\nramming\nrammish\nrammy\nramose\nramosely\nramosities\nramosity\nramous\nramp\nrampage\nrampaged\nrampageous\nrampager\nrampagers\nrampages\nrampaging\nrampancies\nrampancy\nrampant\nrampantly\nrampart\nramparted\nramparting\nramparts\nramped\nrampike\nrampikes\nramping\nrampion\nrampions\nrampole\nrampoles\nramps\nramrod\nramrods\nrams\nramshackle\nramshorn\nramshorns\nramson\nramsons\nramtil\nramtils\nramulose\nramulous\nramus\nran\nrance\nrances\nranch\nranched\nrancher\nranchero\nrancheros\nranchers\nranches\nranching\nranchland\nranchlands\nranchman\nranchmen\nrancho\nranchos\nrancid\nrancidity\nrancidness\nrancor\nrancored\nrancorous\nrancorously\nrancors\nrancour\nrancours\nrand\nrandan\nrandans\nrandies\nrandom\nrandomization\nrandomizations\nrandomize\nrandomized\nrandomizes\nrandomizing\nrandomly\nrandomness\nrandoms\nrands\nrandy\nranee\nranees\nrang\nrange\nranged\nrangeland\nrangelands\nranger\nrangers\nranges\nrangier\nrangiest\nranginess\nranging\nrangy\nrani\nranid\nranids\nranis\nrank\nranked\nranker\nrankers\nrankest\nranking\nrankish\nrankle\nrankled\nrankles\nrankling\nrankly\nrankness\nranknesses\nranks\nranpike\nranpikes\nransack\nransacked\nransacking\nransacks\nransom\nransomed\nransomer\nransomers\nransoming\nransoms\nrant\nranted\nranter\nranters\nranting\nrantingly\nrants\nranula\nranulas\nrap\nrapacious\nrapaciously\nrapaciousness\nrapacities\nrapacity\nrape\nraped\nraper\nrapers\nrapes\nrapeseed\nrapeseeds\nraphae\nraphe\nraphes\nraphia\nraphias\nraphide\nraphides\nraphis\nrapid\nrapider\nrapidest\nrapidities\nrapidity\nrapidly\nrapidness\nrapids\nrapier\nrapiered\nrapiers\nrapine\nrapines\nraping\nrapist\nrapists\nrapparee\nrapparees\nrapped\nrappee\nrappees\nrappel\nrappelled\nrappelling\nrappels\nrappen\nrapper\nrappers\nrapping\nrappini\nrapport\nrapports\nrapprochement\nrapprochements\nraps\nrapscallion\nrapscallions\nrapt\nraptly\nraptness\nraptnesses\nraptor\nraptors\nrapture\nraptured\nraptures\nrapturing\nrapturous\nrapturously\nrapturousness\nrare\nrarebit\nrarebits\nrared\nrarefaction\nrarefactional\nrarefactions\nrarefied\nrarefier\nrarefiers\nrarefies\nrarefy\nrarefying\nrarely\nrareness\nrarenesses\nrarer\nrareripe\nrareripes\nrares\nrarest\nrarified\nrarifies\nrarify\nrarifying\nraring\nrarities\nrarity\nras\nrasbora\nrasboras\nrascal\nrascalities\nrascality\nrascally\nrascals\nrase\nrased\nraser\nrasers\nrases\nrash\nrasher\nrashers\nrashes\nrashest\nrashlike\nrashly\nrashness\nrashnesses\nrasing\nrasorial\nrasp\nraspberries\nraspberry\nrasped\nrasper\nraspers\nraspier\nraspiest\nrasping\nraspingly\nraspish\nrasps\nraspy\nrassle\nrassled\nrassles\nrassling\nraster\nrasters\nrasure\nrasures\nrat\nratable\nratably\nratafee\nratafees\nratafia\nratafias\nratal\nratals\nratan\nratanies\nratans\nratany\nrataplan\nrataplanned\nrataplanning\nrataplans\nratatat\nratatats\nratch\nratches\nratchet\nratchets\nrate\nrateable\nrateably\nrated\nratel\nratels\nrater\nraters\nrates\nratfink\nratfinks\nratfish\nratfishes\nrath\nrathe\nrather\nrathole\nratholes\nrathskeller\nrathskellers\nraticide\nraticides\nratification\nratifications\nratified\nratifier\nratifiers\nratifies\nratify\nratifying\nratine\nratines\nrating\nratings\nratio\nratiocinate\nratiocinated\nratiocinates\nratiocinating\nratiocination\nratiocinations\nratiocinative\nratiocinator\nratiocinators\nration\nrational\nrationale\nrationales\nrationalism\nrationalist\nrationalistic\nrationalistically\nrationalists\nrationalities\nrationality\nrationalization\nrationalizations\nrationalize\nrationalized\nrationalizer\nrationalizers\nrationalizes\nrationalizing\nrationally\nrationalness\nrationals\nrationed\nrationing\nrations\nratios\nratite\nratites\nratlike\nratlin\nratline\nratlines\nratlins\nrato\nratoon\nratooned\nratooner\nratooners\nratooning\nratoons\nratos\nrats\nratsbane\nratsbanes\nrattail\nrattails\nrattan\nrattans\nratted\nratteen\nratteens\nratten\nrattened\nrattener\nratteners\nrattening\nrattens\nratter\nratters\nrattier\nrattiest\nratting\nrattish\nrattle\nrattled\nrattler\nrattlers\nrattles\nrattlesnake\nrattlesnakes\nrattletrap\nrattletraps\nrattling\nrattlings\nrattly\nratton\nrattons\nrattoon\nrattooned\nrattooning\nrattoons\nrattrap\nrattraps\nratty\nraucities\nraucity\nraucous\nraucously\nraucousness\nraunchier\nraunchiest\nraunchy\nravage\nravaged\nravagement\nravagements\nravager\nravagers\nravages\nravaging\nrave\nraved\nravel\nraveled\nraveler\nravelers\nravelin\nraveling\nravelings\nravelins\nravelled\nraveller\nravellers\nravelling\nravellings\nravelly\nravels\nraven\nravened\nravener\nraveners\nravening\nravenings\nravenous\nravenously\nravenousness\nravens\nraver\nravers\nraves\nravigote\nravigotes\nravin\nravine\nravined\nravines\nraving\nravingly\nravings\nravining\nravins\nravioli\nraviolis\nravish\nravished\nravisher\nravishers\nravishes\nravishing\nravishment\nravishments\nraw\nrawboned\nrawer\nrawest\nrawhide\nrawhided\nrawhides\nrawhiding\nrawin\nrawish\nrawly\nrawness\nrawnesses\nraws\nrax\nraxed\nraxes\nraxing\nray\nraya\nrayah\nrayahs\nrayas\nrayed\nraygrass\nraygrasses\nraying\nrayless\nrayon\nrayons\nrays\nraze\nrazed\nrazee\nrazeed\nrazeeing\nrazees\nrazer\nrazers\nrazes\nrazing\nrazor\nrazored\nrazoring\nrazors\nrazz\nrazzed\nrazzes\nrazzing\nre\nreabsorb\nreabsorbed\nreabsorbing\nreabsorbs\nreaccede\nreacceded\nreaccedes\nreacceding\nreaccent\nreaccented\nreaccenting\nreaccents\nreaccept\nreaccepted\nreaccepting\nreaccepts\nreaccuse\nreaccused\nreaccuses\nreaccusing\nreach\nreachable\nreached\nreacher\nreachers\nreaches\nreaching\nreacquaint\nreacquainted\nreacquainting\nreacquaints\nreact\nreactance\nreactances\nreactant\nreactants\nreacted\nreacting\nreaction\nreactionaries\nreactionary\nreactions\nreactivate\nreactivated\nreactivates\nreactivating\nreactivation\nreactivations\nreactive\nreactively\nreactiveness\nreactivity\nreactor\nreactors\nreacts\nread\nreadability\nreadable\nreadableness\nreadably\nreadapt\nreadapted\nreadapting\nreadapts\nreadd\nreadded\nreaddict\nreaddicted\nreaddicting\nreaddicts\nreadding\nreadds\nreader\nreaders\nreadership\nreaderships\nreadied\nreadier\nreadies\nreadiest\nreadily\nreadiness\nreading\nreadings\nreadjust\nreadjustable\nreadjusted\nreadjusting\nreadjustment\nreadjustments\nreadjusts\nreadmit\nreadmits\nreadmitted\nreadmitting\nreadopt\nreadopted\nreadopting\nreadopts\nreadorn\nreadorned\nreadorning\nreadorns\nreadout\nreadouts\nreads\nready\nreadying\nreaffirm\nreaffirmation\nreaffirmations\nreaffirmed\nreaffirming\nreaffirms\nreaffix\nreaffixed\nreaffixes\nreaffixing\nreagent\nreagents\nreagin\nreaginic\nreagins\nreal\nrealer\nreales\nrealest\nrealgar\nrealgars\nrealia\nrealign\nrealigned\nrealigning\nrealignment\nrealignments\nrealigns\nrealise\nrealised\nrealiser\nrealisers\nrealises\nrealising\nrealism\nrealisms\nrealist\nrealistic\nrealistically\nrealists\nrealities\nreality\nrealizable\nrealization\nrealizations\nrealize\nrealized\nrealizer\nrealizers\nrealizes\nrealizing\nreallocate\nreallocated\nreallocates\nreallocating\nreallocation\nreallocations\nreallot\nreallots\nreallotted\nreallotting\nreally\nrealm\nrealms\nrealness\nrealnesses\nreals\nrealter\nrealtered\nrealtering\nrealters\nrealties\nrealty\nream\nreamed\nreamer\nreamers\nreaming\nreams\nreanimate\nreanimated\nreanimates\nreanimating\nreanimation\nreanimations\nreannex\nreannexed\nreannexes\nreannexing\nreanoint\nreanointed\nreanointing\nreanoints\nreap\nreapable\nreaped\nreaper\nreapers\nreaphook\nreaphooks\nreaping\nreappear\nreappearance\nreappearances\nreappeared\nreappearing\nreappears\nreapplied\nreapplies\nreapply\nreapplying\nreappoint\nreappointed\nreappointing\nreappointment\nreappointments\nreappoints\nreapportion\nreapportioned\nreapportioning\nreapportionment\nreapportionments\nreapportions\nreappraisal\nreappraisals\nreappraise\nreappraised\nreappraises\nreappraising\nreapprove\nreapproved\nreapproves\nreapproving\nreaps\nrear\nreared\nrearer\nrearers\nreargue\nreargued\nreargues\nrearguing\nrearing\nrearm\nrearmament\nrearmaments\nrearmed\nrearmice\nrearming\nrearmost\nrearms\nrearouse\nrearoused\nrearouses\nrearousing\nrearrange\nrearranged\nrearrangement\nrearrangements\nrearranges\nrearranging\nrearrest\nrearrested\nrearresting\nrearrests\nrears\nrearward\nrearwards\nreascend\nreascended\nreascending\nreascends\nreascent\nreascents\nreason\nreasonability\nreasonable\nreasonableness\nreasonably\nreasoned\nreasoner\nreasoners\nreasoning\nreasonings\nreasonless\nreasonlessly\nreasons\nreassail\nreassailed\nreassailing\nreassails\nreassert\nreasserted\nreasserting\nreasserts\nreassess\nreassessed\nreassesses\nreassessing\nreassessment\nreassessments\nreassign\nreassigned\nreassigning\nreassignment\nreassignments\nreassigns\nreassort\nreassorted\nreassorting\nreassorts\nreassume\nreassumed\nreassumes\nreassuming\nreassurance\nreassurances\nreassure\nreassured\nreassures\nreassuring\nreassuringly\nreata\nreatas\nreattach\nreattached\nreattaches\nreattaching\nreattack\nreattacked\nreattacking\nreattacks\nreattain\nreattained\nreattaining\nreattains\nreave\nreaved\nreaver\nreavers\nreaves\nreaving\nreavow\nreavowed\nreavowing\nreavows\nreawake\nreawaked\nreawaken\nreawakened\nreawakening\nreawakens\nreawakes\nreawaking\nreawoke\nreawoken\nreb\nrebait\nrebaited\nrebaiting\nrebaits\nrebate\nrebated\nrebater\nrebaters\nrebates\nrebating\nrebato\nrebatos\nrebbe\nrebbes\nrebec\nrebeck\nrebecks\nrebecs\nrebel\nrebeldom\nrebeldoms\nrebelled\nrebelling\nrebellion\nrebellions\nrebellious\nrebelliously\nrebelliousness\nrebels\nrebid\nrebidden\nrebidding\nrebids\nrebill\nrebilled\nrebilling\nrebills\nrebind\nrebinding\nrebinds\nrebirth\nrebirths\nrebloom\nrebloomed\nreblooming\nreblooms\nreboant\nreboard\nreboarded\nreboarding\nreboards\nreboil\nreboiled\nreboiling\nreboils\nrebop\nrebops\nreborn\nrebound\nrebounded\nrebounding\nrebounds\nrebozo\nrebozos\nrebranch\nrebranched\nrebranches\nrebranching\nrebroadcast\nrebroadcasted\nrebroadcasting\nrebroadcasts\nrebs\nrebuff\nrebuffed\nrebuffing\nrebuffs\nrebuild\nrebuilded\nrebuilding\nrebuilds\nrebuilt\nrebuke\nrebuked\nrebuker\nrebukers\nrebukes\nrebuking\nreburial\nreburials\nreburied\nreburies\nrebury\nreburying\nrebus\nrebuses\nrebut\nrebuts\nrebuttable\nrebuttal\nrebuttals\nrebutted\nrebutter\nrebutters\nrebutting\nrebutton\nrebuttoned\nrebuttoning\nrebuttons\nrebuy\nrec\nrecalcitrance\nrecalcitrancy\nrecalcitrant\nrecalcitrants\nrecalculate\nrecalculated\nrecalculates\nrecalculating\nrecall\nrecallable\nrecalled\nrecaller\nrecallers\nrecalling\nrecalls\nrecane\nrecaned\nrecanes\nrecaning\nrecant\nrecantation\nrecantations\nrecanted\nrecanter\nrecanters\nrecanting\nrecants\nrecap\nrecapitalization\nrecapitalizations\nrecapitalize\nrecapitalized\nrecapitalizes\nrecapitalizing\nrecapitulate\nrecapitulated\nrecapitulates\nrecapitulating\nrecapitulation\nrecapitulations\nrecappable\nrecapped\nrecapping\nrecaps\nrecapture\nrecaptured\nrecaptures\nrecapturing\nrecarried\nrecarries\nrecarry\nrecarrying\nrecast\nrecasting\nrecasts\nrecede\nreceded\nrecedes\nreceding\nreceipt\nreceipted\nreceipting\nreceipts\nreceivable\nreceivables\nreceive\nreceived\nreceiver\nreceivers\nreceivership\nreceiverships\nreceives\nreceiving\nrecencies\nrecency\nrecension\nrecensions\nrecent\nrecenter\nrecentest\nrecently\nrecentness\nrecept\nreceptacle\nreceptacles\nreception\nreceptionist\nreceptionists\nreceptions\nreceptive\nreceptively\nreceptiveness\nreceptivity\nreceptor\nreceptors\nrecepts\nrecertification\nrecertifications\nrecertified\nrecertifies\nrecertify\nrecertifying\nrecess\nrecessed\nrecesses\nrecessing\nrecession\nrecessional\nrecessionals\nrecessions\nrecessive\nrecessively\nrecessiveness\nrecessives\nrechange\nrechanged\nrechanges\nrechanging\nrecharge\nrechargeable\nrecharged\nrecharges\nrecharging\nrechart\nrecharted\nrecharting\nrecharts\nrecheat\nrecheats\nrecheck\nrechecked\nrechecking\nrechecks\nrecherche\nrechoose\nrechooses\nrechoosing\nrechose\nrechosen\nrecidivism\nrecidivisms\nrecidivist\nrecidivistic\nrecidivists\nrecipe\nrecipes\nrecipient\nrecipients\nreciprocal\nreciprocally\nreciprocals\nreciprocate\nreciprocated\nreciprocates\nreciprocating\nreciprocation\nreciprocations\nreciprocative\nreciprocator\nreciprocators\nreciprocities\nreciprocity\nrecircle\nrecircled\nrecircles\nrecircling\nrecision\nrecisions\nrecital\nrecitalist\nrecitalists\nrecitals\nrecitation\nrecitations\nrecite\nrecited\nreciter\nreciters\nrecites\nreciting\nreck\nrecked\nrecking\nreckless\nrecklessly\nrecklessness\nreckon\nreckoned\nreckoner\nreckoners\nreckoning\nreckonings\nreckons\nrecks\nreclad\nreclaim\nreclaimable\nreclaimed\nreclaiming\nreclaims\nreclamation\nreclamations\nreclame\nreclames\nreclasp\nreclasped\nreclasping\nreclasps\nreclassification\nreclassifications\nreclassified\nreclassifies\nreclassify\nreclassifying\nreclean\nrecleaned\nrecleaning\nrecleans\nrecline\nreclined\nrecliner\nrecliners\nreclines\nreclining\nreclothe\nreclothed\nreclothes\nreclothing\nrecluse\nrecluses\nreclusion\nreclusive\nrecoal\nrecoaled\nrecoaling\nrecoals\nrecock\nrecocked\nrecocking\nrecocks\nrecodified\nrecodifies\nrecodify\nrecodifying\nrecognition\nrecognitions\nrecognizability\nrecognizable\nrecognizably\nrecognizance\nrecognizances\nrecognize\nrecognized\nrecognizes\nrecognizing\nrecoil\nrecoiled\nrecoiler\nrecoilers\nrecoiling\nrecoilless\nrecoils\nrecoin\nrecoined\nrecoining\nrecoins\nrecollect\nrecollected\nrecollecting\nrecollection\nrecollections\nrecollects\nrecolor\nrecolored\nrecoloring\nrecolors\nrecomb\nrecombed\nrecombinant\nrecombinants\nrecombination\nrecombinations\nrecombine\nrecombined\nrecombines\nrecombing\nrecombining\nrecombs\nrecommence\nrecommenced\nrecommences\nrecommencing\nrecommend\nrecommendable\nrecommendation\nrecommendations\nrecommendatory\nrecommended\nrecommending\nrecommends\nrecommit\nrecommitment\nrecommitments\nrecommits\nrecommittal\nrecommittals\nrecommitted\nrecommitting\nrecompense\nrecompensed\nrecompenses\nrecompensing\nrecompute\nrecomputed\nrecomputes\nrecomputing\nrecon\nreconceive\nreconceived\nreconceives\nreconceiving\nreconcilability\nreconcilable\nreconcile\nreconciled\nreconcilement\nreconcilements\nreconciles\nreconciliation\nreconciliations\nreconciling\nrecondite\nreconditely\nreconditeness\nrecondition\nreconditioned\nreconditioning\nreconditions\nreconnaissance\nreconnaissances\nreconnoiter\nreconnoitered\nreconnoitering\nreconnoiters\nreconnoitre\nreconnoitred\nreconnoitres\nreconnoitring\nrecons\nreconsider\nreconsideration\nreconsiderations\nreconsidered\nreconsidering\nreconsiders\nreconstitute\nreconstituted\nreconstitutes\nreconstituting\nreconstitution\nreconstitutions\nreconstruct\nreconstructed\nreconstructible\nreconstructing\nreconstruction\nreconstructionism\nreconstructions\nreconstructive\nreconstructor\nreconstructors\nreconstructs\nreconvene\nreconvened\nreconvenes\nreconvening\nreconversion\nreconversions\nreconvert\nreconverted\nreconverting\nreconverts\nreconvey\nreconveyed\nreconveying\nreconveys\nrecook\nrecooked\nrecooking\nrecooks\nrecopied\nrecopies\nrecopy\nrecopying\nrecord\nrecordable\nrecordation\nrecordations\nrecorded\nrecorder\nrecorders\nrecording\nrecordings\nrecordist\nrecordists\nrecords\nrecount\nrecounted\nrecounting\nrecounts\nrecoup\nrecoupable\nrecoupe\nrecouped\nrecouping\nrecouple\nrecoupled\nrecouples\nrecoupling\nrecoups\nrecourse\nrecourses\nrecover\nrecoverable\nrecovered\nrecoveries\nrecovering\nrecovers\nrecovery\nrecrate\nrecrated\nrecrates\nrecrating\nrecreant\nrecreants\nrecreate\nrecreated\nrecreates\nrecreating\nrecreation\nrecreational\nrecreations\nrecreative\nrecriminate\nrecriminated\nrecriminates\nrecriminating\nrecrimination\nrecriminations\nrecriminative\nrecriminatory\nrecross\nrecrossed\nrecrosses\nrecrossing\nrecrown\nrecrowned\nrecrowning\nrecrowns\nrecrudescence\nrecrudescences\nrecruit\nrecruited\nrecruiter\nrecruiters\nrecruiting\nrecruitment\nrecruitments\nrecruits\nrecs\nrecta\nrectal\nrectally\nrectangle\nrectangles\nrectangular\nrectangularities\nrectangularity\nrectangularly\nrecti\nrectifiable\nrectification\nrectifications\nrectified\nrectifier\nrectifiers\nrectifies\nrectify\nrectifying\nrectilinear\nrectilinearly\nrectitude\nrectitudes\nrecto\nrector\nrectorate\nrectorates\nrectories\nrectors\nrectory\nrectos\nrectrices\nrectrix\nrectum\nrectums\nrectus\nrecumbency\nrecumbent\nrecuperate\nrecuperated\nrecuperates\nrecuperating\nrecuperation\nrecuperations\nrecuperative\nrecur\nrecurred\nrecurrence\nrecurrences\nrecurrent\nrecurrently\nrecurring\nrecurs\nrecursion\nrecursions\nrecursive\nrecursively\nrecursiveness\nrecurve\nrecurved\nrecurves\nrecurving\nrecusant\nrecusants\nrecuse\nrecused\nrecuses\nrecusing\nrecut\nrecuts\nrecutting\nrecyclable\nrecycle\nrecycled\nrecycles\nrecycling\nred\nredact\nredacted\nredacting\nredaction\nredactional\nredactions\nredactor\nredactors\nredacts\nredan\nredans\nredargue\nredargued\nredargues\nredarguing\nredate\nredated\nredates\nredating\nredbait\nredbaited\nredbaiting\nredbaits\nredbay\nredbays\nredbird\nredbirds\nredbone\nredbones\nredbreast\nredbreasts\nredbrick\nredbud\nredbuds\nredbug\nredbugs\nredcap\nredcaps\nredcoat\nredcoats\nredd\nredded\nredden\nreddened\nreddening\nreddens\nredder\nredders\nreddest\nredding\nreddish\nreddishness\nreddle\nreddled\nreddles\nreddling\nredds\nrede\nredear\nredears\nredecorate\nredecorated\nredecorates\nredecorating\nredecoration\nredecorations\nreded\nrededicate\nrededicated\nrededicates\nrededicating\nrededication\nredeem\nredeemable\nredeemed\nredeemer\nredeemers\nredeeming\nredeems\nredefeat\nredefeated\nredefeating\nredefeats\nredefied\nredefies\nredefine\nredefined\nredefines\nredefining\nredefinition\nredefinitions\nredefy\nredefying\nredemand\nredemanded\nredemanding\nredemands\nredemption\nredemptional\nredemptions\nredemptive\nredemptory\nredenied\nredenies\nredeny\nredenying\nredeploy\nredeployed\nredeploying\nredeployment\nredeployments\nredeploys\nredes\nredesign\nredesigned\nredesigning\nredesigns\nredevelop\nredeveloped\nredeveloper\nredevelopers\nredeveloping\nredevelopment\nredevelopments\nredevelops\nredeye\nredeyes\nredfin\nredfins\nredfish\nredfishes\nredhead\nredheaded\nredheads\nredhorse\nredhorses\nredia\nrediae\nredial\nredias\nredid\nredigest\nredigested\nredigesting\nredigests\nreding\nredip\nredipped\nredipping\nredips\nredipt\nredirect\nredirected\nredirecting\nredirection\nredirections\nredirects\nrediscover\nrediscovered\nrediscovering\nrediscovers\nrediscovery\nredistribute\nredistributed\nredistributes\nredistributing\nredistribution\nredistributions\nredistributive\nredistrict\nredistricted\nredistricting\nredistricts\nredivide\nredivided\nredivides\nredividing\nredleg\nredlegs\nredly\nredneck\nrednecks\nredness\nrednesses\nredo\nredock\nredocked\nredocking\nredocks\nredoes\nredoing\nredolence\nredolent\nredolently\nredon\nredone\nredos\nredouble\nredoubled\nredoubles\nredoubling\nredoubt\nredoubtable\nredoubtably\nredoubts\nredound\nredounded\nredounding\nredounds\nredout\nredouts\nredowa\nredowas\nredox\nredoxes\nredpoll\nredpolls\nredraft\nredrafted\nredrafting\nredrafts\nredraw\nredrawer\nredrawers\nredrawing\nredrawn\nredraws\nredress\nredressed\nredresses\nredressing\nredrew\nredried\nredries\nredrill\nredrilled\nredrilling\nredrills\nredrive\nredriven\nredrives\nredriving\nredroot\nredroots\nredrove\nredry\nredrying\nreds\nredshank\nredshanks\nredshirt\nredshirted\nredshirting\nredshirts\nredskin\nredskins\nredstart\nredstarts\nredtop\nredtops\nredub\nreduce\nreduced\nreducer\nreducers\nreduces\nreducibility\nreducible\nreducibly\nreducing\nreduction\nreductional\nreductions\nreductive\nredundancies\nredundancy\nredundant\nredundantly\nreduplicate\nreduplicated\nreduplicates\nreduplicating\nreduplication\nreduplications\nreduplicative\nreduviid\nreduviids\nredux\nredware\nredwares\nredwing\nredwings\nredwood\nredwoods\nredye\nredyed\nredyeing\nredyes\nree\nreearn\nreearned\nreearning\nreearns\nreecho\nreechoed\nreechoes\nreechoing\nreed\nreedbird\nreedbirds\nreedbuck\nreedbucks\nreeded\nreedier\nreediest\nreedified\nreedifies\nreedify\nreedifying\nreeding\nreedings\nreedit\nreedited\nreediting\nreedits\nreedling\nreedlings\nreeds\nreeducate\nreeducated\nreeducates\nreeducating\nreeducation\nreeducations\nreedy\nreef\nreefed\nreefer\nreefers\nreefier\nreefiest\nreefing\nreefs\nreefy\nreeject\nreejected\nreejecting\nreejects\nreek\nreeked\nreeker\nreekers\nreekier\nreekiest\nreeking\nreeks\nreeky\nreel\nreelable\nreelect\nreelected\nreelecting\nreelection\nreelections\nreelects\nreeled\nreeler\nreelers\nreeling\nreels\nreembark\nreembarked\nreembarking\nreembarks\nreembodied\nreembodies\nreembody\nreembodying\nreemerge\nreemerged\nreemergence\nreemergences\nreemerges\nreemerging\nreemit\nreemits\nreemitted\nreemitting\nreemphasize\nreemphasized\nreemphasizes\nreemphasizing\nreemploy\nreemployed\nreemploying\nreemploys\nreenact\nreenacted\nreenacting\nreenactment\nreenactments\nreenacts\nreendow\nreendowed\nreendowing\nreendows\nreengage\nreengaged\nreengages\nreengaging\nreenjoy\nreenjoyed\nreenjoying\nreenjoys\nreenlist\nreenlisted\nreenlisting\nreenlistment\nreenlistments\nreenlists\nreenter\nreentered\nreentering\nreenters\nreentrance\nreentrances\nreentrant\nreentrants\nreentries\nreentry\nreequip\nreequipped\nreequipping\nreequips\nreerect\nreerected\nreerecting\nreerects\nrees\nreest\nreestablish\nreestablished\nreestablishes\nreestablishing\nreestablishment\nreestablishments\nreested\nreesting\nreests\nreevaluate\nreevaluated\nreevaluates\nreevaluating\nreevaluation\nreevaluations\nreeve\nreeved\nreeves\nreeving\nreevoke\nreevoked\nreevokes\nreevoking\nreexamination\nreexaminations\nreexamine\nreexamined\nreexamines\nreexamining\nreexpel\nreexpelled\nreexpelling\nreexpels\nreexperience\nreexperienced\nreexperiences\nreexperiencing\nreexport\nreexportation\nreexportations\nreexported\nreexporting\nreexports\nref\nreface\nrefaced\nrefaces\nrefacing\nrefall\nrefallen\nrefalling\nrefalls\nrefasten\nrefastened\nrefastening\nrefastens\nrefect\nrefected\nrefecting\nrefection\nrefections\nrefectories\nrefectory\nrefects\nrefed\nrefeed\nrefeeding\nrefeeds\nrefel\nrefell\nrefelled\nrefelling\nrefels\nrefer\nreferable\nreferee\nrefereed\nrefereeing\nreferees\nreference\nreferenced\nreferences\nreferencing\nreferenda\nreferendum\nreferendums\nreferent\nreferential\nreferentially\nreferents\nreferral\nreferrals\nreferred\nreferrer\nreferrers\nreferring\nrefers\nreffed\nreffing\nrefight\nrefighting\nrefights\nrefigure\nrefigured\nrefigures\nrefiguring\nrefile\nrefiled\nrefiles\nrefiling\nrefill\nrefillable\nrefilled\nrefilling\nrefills\nrefilm\nrefilmed\nrefilming\nrefilms\nrefilter\nrefiltered\nrefiltering\nrefilters\nrefinance\nrefinanced\nrefinances\nrefinancing\nrefind\nrefinding\nrefinds\nrefine\nrefined\nrefinement\nrefinements\nrefiner\nrefineries\nrefiners\nrefinery\nrefines\nrefining\nrefinish\nrefinished\nrefinishes\nrefinishing\nrefire\nrefired\nrefires\nrefiring\nrefit\nrefits\nrefitted\nrefitting\nrefix\nrefixed\nrefixes\nrefixing\nreflate\nreflated\nreflates\nreflating\nreflation\nreflations\nreflect\nreflectance\nreflected\nreflecting\nreflection\nreflectional\nreflections\nreflective\nreflectively\nreflectiveness\nreflector\nreflectors\nreflects\nreflet\nreflets\nreflew\nreflex\nreflexed\nreflexes\nreflexing\nreflexive\nreflexively\nreflexiveness\nreflexives\nreflexivity\nreflexly\nreflies\nrefloat\nrefloated\nrefloating\nrefloats\nreflood\nreflooded\nreflooding\nrefloods\nreflow\nreflowed\nreflower\nreflowered\nreflowering\nreflowers\nreflowing\nreflown\nreflows\nrefluent\nreflux\nrefluxed\nrefluxes\nrefluxing\nrefly\nreflying\nrefocus\nrefocused\nrefocuses\nrefocusing\nrefocussed\nrefocusses\nrefocussing\nrefold\nrefolded\nrefolding\nrefolds\nreforest\nreforestation\nreforestations\nreforested\nreforesting\nreforests\nreforge\nreforged\nreforges\nreforging\nreform\nreformable\nreformat\nreformation\nreformational\nreformations\nreformative\nreformatories\nreformatory\nreformats\nreformatted\nreformatting\nreformed\nreformer\nreformers\nreforming\nreformism\nreformisms\nreformist\nreformists\nreforms\nreformulate\nreformulated\nreformulates\nreformulating\nreformulation\nreformulations\nrefought\nrefound\nrefounded\nrefounding\nrefounds\nrefract\nrefracted\nrefracting\nrefraction\nrefractions\nrefractive\nrefractively\nrefractivity\nrefractor\nrefractories\nrefractorily\nrefractors\nrefractory\nrefracts\nrefrain\nrefrained\nrefraining\nrefrains\nreframe\nreframed\nreframes\nreframing\nrefrangibility\nrefrangible\nrefrangibleness\nrefreeze\nrefreezes\nrefreezing\nrefresh\nrefreshed\nrefreshen\nrefreshened\nrefreshening\nrefreshens\nrefresher\nrefreshers\nrefreshes\nrefreshing\nrefreshingly\nrefreshment\nrefreshments\nrefried\nrefries\nrefrigerant\nrefrigerants\nrefrigerate\nrefrigerated\nrefrigerates\nrefrigerating\nrefrigeration\nrefrigerations\nrefrigerator\nrefrigerators\nrefront\nrefronted\nrefronting\nrefronts\nrefroze\nrefrozen\nrefry\nrefrying\nrefs\nreft\nrefuel\nrefueled\nrefueling\nrefuelled\nrefuelling\nrefuels\nrefuge\nrefuged\nrefugee\nrefugeeism\nrefugees\nrefuges\nrefugia\nrefuging\nrefugium\nrefulgence\nrefulgent\nrefund\nrefundable\nrefunded\nrefunder\nrefunders\nrefunding\nrefunds\nrefurbish\nrefurbished\nrefurbishes\nrefurbishing\nrefurbishment\nrefurbishments\nrefusal\nrefusals\nrefuse\nrefused\nrefuser\nrefusers\nrefuses\nrefusing\nrefutable\nrefutably\nrefutal\nrefutals\nrefutation\nrefutations\nrefute\nrefuted\nrefuter\nrefuters\nrefutes\nrefuting\nreg\nregain\nregained\nregainer\nregainers\nregaining\nregains\nregal\nregale\nregaled\nregales\nregalia\nregaling\nregalities\nregality\nregally\nregard\nregarded\nregardful\nregarding\nregardless\nregardlessly\nregards\nregather\nregathered\nregathering\nregathers\nregatta\nregattas\nregauge\nregauged\nregauges\nregauging\nregave\nregear\nregeared\nregearing\nregears\nregelate\nregelated\nregelates\nregelating\nregencies\nregency\nregenerate\nregenerated\nregenerates\nregenerating\nregeneration\nregenerations\nregenerative\nregenerator\nregenerators\nregent\nregental\nregents\nreges\nregicide\nregicides\nregild\nregilded\nregilding\nregilds\nregilt\nregime\nregimen\nregimens\nregiment\nregimental\nregimentals\nregimentation\nregimentations\nregimented\nregimenting\nregiments\nregimes\nregina\nreginae\nreginal\nreginas\nregion\nregional\nregionalism\nregionalisms\nregionalist\nregionalistic\nregionalists\nregionalize\nregionalized\nregionalizes\nregionalizing\nregionally\nregionals\nregions\nregister\nregistered\nregistering\nregisters\nregistrable\nregistrant\nregistrants\nregistrar\nregistrars\nregistration\nregistrations\nregistries\nregistry\nregius\nregive\nregiven\nregives\nregiving\nreglaze\nreglazed\nreglazes\nreglazing\nreglet\nreglets\nregloss\nreglossed\nreglosses\nreglossing\nreglow\nreglowed\nreglowing\nreglows\nreglue\nreglued\nreglues\nregluing\nregma\nregmata\nregna\nregnal\nregnancies\nregnancy\nregnant\nregnum\nregolith\nregoliths\nregorge\nregorged\nregorges\nregorging\nregosol\nregosols\nregrade\nregraded\nregrades\nregrading\nregraft\nregrafted\nregrafting\nregrafts\nregrant\nregranted\nregranting\nregrants\nregrate\nregrated\nregrates\nregrating\nregreet\nregreeted\nregreeting\nregreets\nregress\nregressed\nregresses\nregressing\nregression\nregressions\nregressive\nregressively\nregressor\nregressors\nregret\nregretful\nregretfully\nregretfulness\nregrets\nregrettable\nregrettably\nregretted\nregretting\nregrew\nregrind\nregrinding\nregrinds\nregroove\nregrooved\nregrooves\nregrooving\nreground\nregroup\nregrouped\nregrouping\nregroups\nregrow\nregrowing\nregrown\nregrows\nregrowth\nregrowths\nregs\nregular\nregularities\nregularity\nregularization\nregularizations\nregularize\nregularized\nregularizes\nregularizing\nregularly\nregulars\nregulate\nregulated\nregulates\nregulating\nregulation\nregulations\nregulative\nregulator\nregulators\nregulatory\nreguli\nreguline\nregulus\nreguluses\nregurgitate\nregurgitated\nregurgitates\nregurgitating\nregurgitation\nregurgitations\nrehab\nrehabilitate\nrehabilitated\nrehabilitates\nrehabilitating\nrehabilitation\nrehabilitations\nrehabilitative\nrehammer\nrehammered\nrehammering\nrehammers\nrehandle\nrehandled\nrehandles\nrehandling\nrehang\nrehanged\nrehanging\nrehangs\nreharden\nrehardened\nrehardening\nrehardens\nrehash\nrehashed\nrehashes\nrehashing\nrehear\nreheard\nrehearing\nrehearings\nrehears\nrehearsal\nrehearsals\nrehearse\nrehearsed\nrehearses\nrehearsing\nreheat\nreheated\nreheater\nreheaters\nreheating\nreheats\nreheel\nreheeled\nreheeling\nreheels\nrehem\nrehemmed\nrehemming\nrehems\nrehinge\nrehinged\nrehinges\nrehinging\nrehire\nrehired\nrehires\nrehiring\nrehouse\nrehoused\nrehouses\nrehousing\nrehung\nrei\nreif\nreified\nreifier\nreifiers\nreifies\nreifs\nreify\nreifying\nreign\nreigned\nreigning\nreignite\nreignited\nreignites\nreigniting\nreigns\nreimage\nreimaged\nreimages\nreimaging\nreimbursable\nreimburse\nreimbursed\nreimbursement\nreimbursements\nreimburses\nreimbursing\nreimport\nreimported\nreimporting\nreimports\nreimpose\nreimposed\nreimposes\nreimposing\nrein\nreincarnate\nreincarnated\nreincarnates\nreincarnating\nreincarnation\nreincarnations\nreincite\nreincited\nreincites\nreinciting\nreincorporate\nreincorporated\nreincorporates\nreincorporating\nreincur\nreincurred\nreincurring\nreincurs\nreindeer\nreindeers\nreindex\nreindexed\nreindexes\nreindexing\nreinduce\nreinduced\nreinduces\nreinducing\nreinduct\nreinducted\nreinducting\nreinducts\nreined\nreinfect\nreinfected\nreinfecting\nreinfects\nreinforce\nreinforced\nreinforcement\nreinforcements\nreinforcer\nreinforcers\nreinforces\nreinforcing\nreinform\nreinformed\nreinforming\nreinforms\nreinfuse\nreinfused\nreinfuses\nreinfusing\nreining\nreinjure\nreinjured\nreinjures\nreinjuring\nreink\nreinless\nreins\nreinsert\nreinserted\nreinserting\nreinsertion\nreinsertions\nreinserts\nreinsman\nreinsmen\nreinstall\nreinstallation\nreinstallations\nreinstalled\nreinstalling\nreinstalls\nreinstate\nreinstated\nreinstatement\nreinstatements\nreinstates\nreinstating\nreinstitute\nreinstituted\nreinstitutes\nreinstituting\nreinsure\nreinsured\nreinsures\nreinsuring\nreinter\nreinterred\nreinterring\nreinters\nreintroduce\nreintroduced\nreintroduces\nreintroducing\nreinvent\nreinvented\nreinventing\nreinvents\nreinvest\nreinvested\nreinvesting\nreinvestment\nreinvestments\nreinvests\nreinvite\nreinvited\nreinvites\nreinviting\nreinvoke\nreinvoked\nreinvokes\nreinvoking\nreis\nreissue\nreissued\nreissuer\nreissuers\nreissues\nreissuing\nreitbok\nreitboks\nreiterate\nreiterated\nreiterates\nreiterating\nreiteration\nreiterations\nreiterative\nreive\nreived\nreiver\nreivers\nreives\nreiving\nreject\nrejected\nrejectee\nrejectees\nrejecter\nrejecters\nrejecting\nrejection\nrejections\nrejective\nrejector\nrejectors\nrejects\nrejigger\nrejiggered\nrejiggering\nrejiggers\nrejoice\nrejoiced\nrejoicer\nrejoicers\nrejoices\nrejoicing\nrejoicingly\nrejoicings\nrejoin\nrejoinder\nrejoinders\nrejoined\nrejoining\nrejoins\nrejudge\nrejudged\nrejudges\nrejudging\nrejuvenate\nrejuvenated\nrejuvenates\nrejuvenating\nrejuvenation\nrejuvenations\nrekey\nrekeyed\nrekeying\nrekeys\nrekindle\nrekindled\nrekindles\nrekindling\nreknit\nreknits\nreknitted\nreknitting\nrelabel\nrelabeled\nrelabeling\nrelabelled\nrelabelling\nrelabels\nrelace\nrelaced\nrelaces\nrelacing\nrelaid\nrelapse\nrelapsed\nrelapser\nrelapsers\nrelapses\nrelapsing\nrelatable\nrelate\nrelated\nrelatedness\nrelater\nrelaters\nrelates\nrelating\nrelation\nrelational\nrelations\nrelationship\nrelationships\nrelative\nrelatively\nrelativeness\nrelatives\nrelativism\nrelativist\nrelativistic\nrelativists\nrelativities\nrelativity\nrelator\nrelators\nrelaunch\nrelaunched\nrelaunches\nrelaunching\nrelax\nrelaxant\nrelaxants\nrelaxation\nrelaxations\nrelaxed\nrelaxedly\nrelaxedness\nrelaxer\nrelaxers\nrelaxes\nrelaxin\nrelaxing\nrelaxins\nrelay\nrelayed\nrelaying\nrelays\nrelearn\nrelearned\nrelearning\nrelearns\nrelearnt\nrelease\nreleased\nreleaser\nreleasers\nreleases\nreleasing\nrelegate\nrelegated\nrelegates\nrelegating\nrelegation\nrelegations\nrelend\nrelending\nrelends\nrelent\nrelented\nrelenting\nrelentless\nrelentlessly\nrelentlessness\nrelents\nrelet\nrelets\nreletter\nrelettered\nrelettering\nreletters\nreletting\nrelevance\nrelevances\nrelevancies\nrelevancy\nrelevant\nrelevantly\nreliability\nreliable\nreliableness\nreliably\nreliance\nreliances\nreliant\nreliantly\nrelic\nrelics\nrelict\nrelicts\nrelied\nrelief\nreliefs\nrelier\nreliers\nrelies\nrelievable\nrelieve\nrelieved\nrelievedly\nreliever\nrelievers\nrelieves\nrelieving\nrelievo\nrelievos\nrelight\nrelighted\nrelighting\nrelights\nreligion\nreligionist\nreligionists\nreligions\nreligiose\nreligiosity\nreligious\nreligiously\nreligiousness\nreline\nrelined\nrelines\nrelining\nrelinquish\nrelinquished\nrelinquishes\nrelinquishing\nrelinquishment\nrelinquishments\nreliquaries\nreliquary\nrelique\nreliques\nrelish\nrelishable\nrelished\nrelishes\nrelishing\nrelist\nrelisted\nrelisting\nrelists\nrelit\nrelive\nrelived\nrelives\nreliving\nreload\nreloaded\nreloader\nreloaders\nreloading\nreloads\nreloan\nreloaned\nreloaning\nreloans\nrelocate\nrelocated\nrelocates\nrelocating\nrelocation\nrelocations\nrelucent\nreluct\nreluctance\nreluctances\nreluctancies\nreluctancy\nreluctant\nreluctantly\nrelucted\nrelucting\nrelucts\nrelume\nrelumed\nrelumes\nrelumine\nrelumined\nrelumines\nreluming\nrelumining\nrely\nrelying\nrem\nremade\nremail\nremailed\nremailing\nremails\nremain\nremainder\nremainders\nremained\nremaining\nremains\nremake\nremakes\nremaking\nreman\nremand\nremanded\nremanding\nremands\nremanent\nremanned\nremanning\nremans\nremap\nremapped\nremapping\nremaps\nremark\nremarkable\nremarkableness\nremarkably\nremarked\nremarker\nremarkers\nremarking\nremarks\nremarque\nremarques\nremarriage\nremarriages\nremarried\nremarries\nremarry\nremarrying\nrematch\nrematched\nrematches\nrematching\nremediable\nremedial\nremedially\nremedied\nremedies\nremedy\nremedying\nremeet\nremeeting\nremeets\nremelt\nremelted\nremelting\nremelts\nremember\nremembered\nremembering\nremembers\nremembrance\nremembrances\nremend\nremended\nremending\nremends\nremerge\nremerged\nremerges\nremerging\nremet\nremex\nremiges\nremigial\nremind\nreminded\nreminder\nreminders\nremindful\nreminding\nreminds\nreminisce\nreminisced\nreminiscence\nreminiscences\nreminiscent\nreminiscently\nreminisces\nreminiscing\nremint\nreminted\nreminting\nremints\nremise\nremised\nremises\nremising\nremiss\nremissible\nremission\nremissions\nremissly\nremissness\nremit\nremits\nremittable\nremittal\nremittals\nremittance\nremittances\nremitted\nremittence\nremittent\nremitter\nremitters\nremitting\nremittor\nremittors\nremix\nremixed\nremixes\nremixing\nremixt\nremnant\nremnants\nremodel\nremodeled\nremodeling\nremodelled\nremodelling\nremodels\nremodified\nremodifies\nremodify\nremodifying\nremolade\nremolades\nremold\nremolded\nremolding\nremolds\nremonstrance\nremonstrances\nremonstrant\nremonstrantly\nremonstrants\nremonstrate\nremonstrated\nremonstrates\nremonstrating\nremonstration\nremonstrations\nremonstrative\nremonstratively\nremonstrator\nremonstrators\nremora\nremoras\nremorid\nremorse\nremorseful\nremorsefully\nremorsefulness\nremorseless\nremorselessly\nremorselessness\nremorses\nremote\nremotely\nremoteness\nremoter\nremotest\nremotion\nremotions\nremount\nremounted\nremounting\nremounts\nremovability\nremovable\nremovableness\nremovably\nremoval\nremovals\nremove\nremoved\nremover\nremovers\nremoves\nremoving\nrems\nremuda\nremudas\nremunerate\nremunerated\nremunerates\nremunerating\nremuneration\nremunerations\nremunerative\nremuneratively\nremunerativeness\nremuneratory\nrenaissance\nrenaissances\nrenal\nrename\nrenamed\nrenames\nrenaming\nrenascence\nrenascences\nrenascent\nrenature\nrenatured\nrenatures\nrenaturing\nrend\nrended\nrender\nrenderable\nrendered\nrenderer\nrenderers\nrendering\nrenderings\nrenders\nrendezvous\nrendezvoused\nrendezvousing\nrendible\nrending\nrendition\nrenditions\nrends\nrendzina\nrendzinas\nrenegade\nrenegaded\nrenegades\nrenegading\nrenegado\nrenegadoes\nrenegados\nrenege\nreneged\nreneger\nrenegers\nreneges\nreneging\nrenegotiable\nrenegotiate\nrenegotiated\nrenegotiates\nrenegotiating\nrenegotiation\nrenegotiations\nrenew\nrenewability\nrenewable\nrenewably\nrenewal\nrenewals\nrenewed\nrenewer\nrenewers\nrenewing\nrenews\nreniform\nrenig\nrenigged\nrenigging\nrenigs\nrenin\nrenins\nrenitent\nrennase\nrennases\nrennet\nrennets\nrennin\nrennins\nrenogram\nrenograms\nrenotified\nrenotifies\nrenotify\nrenotifying\nrenounce\nrenounced\nrenouncement\nrenouncements\nrenounces\nrenouncing\nrenovate\nrenovated\nrenovates\nrenovating\nrenovation\nrenovations\nrenovative\nrenovator\nrenovators\nrenown\nrenowned\nrenowning\nrenowns\nrent\nrentability\nrentable\nrental\nrentals\nrente\nrented\nrenter\nrenters\nrentes\nrentier\nrentiers\nrenting\nrents\nrenumber\nrenumbered\nrenumbering\nrenumbers\nrenunciation\nrenunciations\nrenunciative\nrenunciatory\nrenvoi\nrenvois\nreobject\nreobjected\nreobjecting\nreobjects\nreobtain\nreobtained\nreobtaining\nreobtains\nreoccupied\nreoccupies\nreoccupy\nreoccupying\nreoccur\nreoccurred\nreoccurrence\nreoccurrences\nreoccurring\nreoccurs\nreoffer\nreoffered\nreoffering\nreoffers\nreoil\nreoiled\nreoiling\nreoils\nreopen\nreopened\nreopening\nreopens\nreoppose\nreopposed\nreopposes\nreopposing\nreordain\nreordained\nreordaining\nreordains\nreorder\nreordered\nreordering\nreorders\nreorganization\nreorganizations\nreorganize\nreorganized\nreorganizer\nreorganizers\nreorganizes\nreorganizing\nreorient\nreoriented\nreorienting\nreorients\nreovirus\nreoviruses\nrep\nrepacified\nrepacifies\nrepacify\nrepacifying\nrepack\nrepacked\nrepacking\nrepacks\nrepaid\nrepaint\nrepainted\nrepainting\nrepaints\nrepair\nrepairability\nrepairable\nrepaired\nrepairer\nrepairers\nrepairing\nrepairman\nrepairmen\nrepairs\nrepand\nrepandly\nrepaper\nrepapered\nrepapering\nrepapers\nreparable\nreparation\nreparations\nreparative\nrepartee\nrepartees\nrepass\nrepassed\nrepasses\nrepassing\nrepast\nrepasted\nrepasting\nrepasts\nrepatriate\nrepatriated\nrepatriates\nrepatriating\nrepatriation\nrepatriations\nrepave\nrepaved\nrepaves\nrepaving\nrepay\nrepayable\nrepaying\nrepayment\nrepayments\nrepays\nrepeal\nrepealable\nrepealed\nrepealer\nrepealers\nrepealing\nrepeals\nrepeat\nrepeatability\nrepeatable\nrepeated\nrepeatedly\nrepeater\nrepeaters\nrepeating\nrepeats\nrepeg\nrepel\nrepellant\nrepellants\nrepelled\nrepellency\nrepellent\nrepellently\nrepellents\nrepeller\nrepellers\nrepelling\nrepels\nrepent\nrepentance\nrepentances\nrepentant\nrepentantly\nrepented\nrepenter\nrepenters\nrepenting\nrepents\nrepeople\nrepeopled\nrepeoples\nrepeopling\nrepercussion\nrepercussions\nrepercussive\nreperk\nreperked\nreperking\nreperks\nrepertoire\nrepertoires\nrepertories\nrepertory\nrepetend\nrepetends\nrepetition\nrepetitions\nrepetitious\nrepetitiously\nrepetitiousness\nrepetitive\nrepetitively\nrepetitiveness\nrephrase\nrephrased\nrephrases\nrephrasing\nrepin\nrepine\nrepined\nrepiner\nrepiners\nrepines\nrepining\nrepinned\nrepinning\nrepins\nreplace\nreplaceable\nreplaced\nreplacement\nreplacements\nreplacer\nreplacers\nreplaces\nreplacing\nreplan\nreplanned\nreplanning\nreplans\nreplant\nreplanted\nreplanting\nreplants\nreplate\nreplated\nreplates\nreplating\nreplay\nreplayed\nreplaying\nreplays\nrepledge\nrepledged\nrepledges\nrepledging\nreplenish\nreplenished\nreplenishes\nreplenishing\nreplenishment\nreplenishments\nreplete\nrepleteness\nrepletion\nrepletions\nreplevied\nreplevies\nreplevin\nreplevined\nreplevining\nreplevins\nreplevy\nreplevying\nreplica\nreplicas\nreplicate\nreplicated\nreplicates\nreplicating\nreplication\nreplications\nreplied\nreplier\nrepliers\nreplies\nreplunge\nreplunged\nreplunges\nreplunging\nreply\nreplying\nrepo\nrepolish\nrepolished\nrepolishes\nrepolishing\nreport\nreportable\nreportage\nreportages\nreported\nreportedly\nreporter\nreporters\nreporting\nreportorial\nreportorially\nreports\nrepos\nreposal\nreposals\nrepose\nreposed\nreposeful\nreposefully\nreposer\nreposers\nreposes\nreposing\nreposit\nreposited\nrepositing\nreposition\nrepositioned\nrepositioning\nrepositions\nrepositories\nrepository\nreposits\nrepossess\nrepossessed\nrepossesses\nrepossessing\nrepossession\nrepossessions\nrepossessor\nrepossessors\nrepot\nrepour\nrepoured\nrepouring\nrepours\nrepousse\nrepousses\nrepower\nrepowered\nrepowering\nrepowers\nrepp\nrepped\nrepps\nreprehend\nreprehended\nreprehending\nreprehends\nreprehensibility\nreprehensible\nreprehensibleness\nreprehensibly\nreprehension\nreprehensions\nreprehensive\nrepresent\nrepresentable\nrepresentation\nrepresentational\nrepresentationalism\nrepresentationalisms\nrepresentationalist\nrepresentationalists\nrepresentations\nrepresentative\nrepresentatively\nrepresentativeness\nrepresentatives\nrepresented\nrepresenting\nrepresents\nrepress\nrepressed\nrepresses\nrepressible\nrepressing\nrepression\nrepressions\nrepressive\nrepressively\nrepressiveness\nrepressor\nrepressors\nreprice\nrepriced\nreprices\nrepricing\nreprieve\nreprieved\nreprieves\nreprieving\nreprimand\nreprimanded\nreprimanding\nreprimands\nreprint\nreprinted\nreprinter\nreprinters\nreprinting\nreprints\nreprisal\nreprisals\nreprise\nreprised\nreprises\nreprising\nrepro\nreproach\nreproachable\nreproached\nreproaches\nreproachful\nreproachfully\nreproachfulness\nreproaching\nreproachingly\nreprobate\nreprobated\nreprobates\nreprobating\nreprobation\nreprobations\nreprobative\nreprobe\nreprobed\nreprobes\nreprobing\nreprocess\nreprocessed\nreprocesses\nreprocessing\nreproduce\nreproduced\nreproducer\nreproducers\nreproduces\nreproducibilities\nreproducibility\nreproducible\nreproducing\nreproduction\nreproductions\nreproductive\nreproductively\nreprogram\nreprogrammed\nreprogramming\nreprograms\nreprographics\nreproof\nreproofs\nrepros\nreproval\nreprovals\nreprove\nreproved\nreprover\nreprovers\nreproves\nreproving\nreprovingly\nreps\nreptant\nreptile\nreptiles\nreptilian\nreptilians\nrepublic\nrepublican\nrepublicanism\nrepublicanize\nrepublicanized\nrepublicanizes\nrepublicanizing\nrepublicans\nrepublics\nrepublish\nrepublished\nrepublishes\nrepublishing\nrepudiate\nrepudiated\nrepudiates\nrepudiating\nrepudiation\nrepudiations\nrepudiator\nrepudiators\nrepugn\nrepugnance\nrepugnances\nrepugnancies\nrepugnancy\nrepugnant\nrepugnantly\nrepugned\nrepugning\nrepugns\nrepulse\nrepulsed\nrepulser\nrepulsers\nrepulses\nrepulsing\nrepulsion\nrepulsions\nrepulsive\nrepulsively\nrepulsiveness\nrepurchase\nrepurchased\nrepurchases\nrepurchasing\nrepurified\nrepurifies\nrepurify\nrepurifying\nrepursue\nrepursued\nrepursues\nrepursuing\nreputability\nreputable\nreputably\nreputation\nreputations\nrepute\nreputed\nreputedly\nreputes\nreputing\nrequest\nrequested\nrequester\nrequesters\nrequesting\nrequestor\nrequestors\nrequests\nrequiem\nrequiems\nrequin\nrequins\nrequire\nrequired\nrequirement\nrequirements\nrequirer\nrequirers\nrequires\nrequiring\nrequisite\nrequisiteness\nrequisites\nrequisition\nrequisitioned\nrequisitioning\nrequisitions\nrequital\nrequitals\nrequite\nrequited\nrequiter\nrequiters\nrequites\nrequiting\nreran\nreread\nrereading\nrereads\nrerecord\nrerecorded\nrerecording\nrerecords\nreredos\nreredoses\nreremice\nrereward\nrerewards\nrerise\nrerisen\nrerises\nrerising\nreroll\nrerolled\nreroller\nrerollers\nrerolling\nrerolls\nrerose\nreroute\nrerouted\nreroutes\nrerouting\nrerun\nrerunning\nreruns\nres\nresaddle\nresaddled\nresaddles\nresaddling\nresaid\nresail\nresailed\nresailing\nresails\nresalable\nresale\nresales\nresalute\nresaluted\nresalutes\nresaluting\nresample\nresampled\nresamples\nresampling\nresaw\nresawed\nresawing\nresawn\nresaws\nresay\nresaying\nresays\nrescale\nrescaled\nrescales\nrescaling\nreschedule\nrescheduled\nreschedules\nrescheduling\nrescind\nrescinded\nrescinding\nrescindment\nrescindments\nrescinds\nrescission\nrescissions\nrescore\nrescored\nrescores\nrescoring\nrescreen\nrescreened\nrescreening\nrescreens\nrescript\nrescripts\nrescuable\nrescue\nrescued\nrescuer\nrescuers\nrescues\nrescuing\nreseal\nresealed\nresealing\nreseals\nresearch\nresearchable\nresearched\nresearcher\nresearchers\nresearches\nresearching\nresearchist\nresearchists\nreseat\nreseated\nreseating\nreseats\nreseau\nreseaus\nreseaux\nresect\nresected\nresecting\nresection\nresections\nresects\nreseda\nresedas\nresee\nreseed\nreseeded\nreseeding\nreseeds\nreseeing\nreseek\nreseeking\nreseeks\nreseen\nresees\nreseize\nreseized\nreseizes\nreseizing\nresell\nreseller\nresellers\nreselling\nresells\nresemblance\nresemblances\nresemble\nresembled\nresembles\nresembling\nresend\nresending\nresends\nresent\nresented\nresentful\nresentfully\nresentfulness\nresenting\nresentment\nresentments\nresents\nreservation\nreservations\nreserve\nreserved\nreservedly\nreservedness\nreserver\nreservers\nreserves\nreserving\nreservist\nreservists\nreservoir\nreservoirs\nreset\nresets\nresetter\nresetters\nresetting\nresettle\nresettled\nresettlement\nresettlements\nresettles\nresettling\nresew\nresewed\nresewing\nresewn\nresews\nresh\nreshape\nreshaped\nreshaper\nreshapers\nreshapes\nreshaping\nreshes\nreship\nreshipment\nreshipments\nreshipped\nreshipping\nreships\nreshod\nreshoe\nreshoeing\nreshoes\nreshoot\nreshooting\nreshoots\nreshot\nreshow\nreshowed\nreshowing\nreshown\nreshows\nreshuffle\nreshuffled\nreshuffles\nreshuffling\nresid\nreside\nresided\nresidence\nresidences\nresidencies\nresidency\nresident\nresidential\nresidentially\nresidents\nresider\nresiders\nresides\nresiding\nresids\nresidua\nresidual\nresidually\nresiduals\nresiduary\nresidue\nresidues\nresiduum\nresiduums\nresift\nresifted\nresifting\nresifts\nresign\nresignation\nresignations\nresigned\nresignedly\nresignedness\nresigner\nresigners\nresigning\nresigns\nresile\nresiled\nresiles\nresilience\nresiliences\nresiliencies\nresiliency\nresilient\nresiliently\nresiling\nresilver\nresilvered\nresilvering\nresilvers\nresin\nresinate\nresinated\nresinates\nresinating\nresined\nresinified\nresinifies\nresinify\nresinifying\nresining\nresinoid\nresinoids\nresinous\nresins\nresiny\nresist\nresistance\nresistances\nresistant\nresistants\nresisted\nresister\nresisters\nresistibilities\nresistibility\nresistible\nresisting\nresistive\nresistively\nresistiveness\nresistivity\nresistless\nresistlessly\nresistlessness\nresistor\nresistors\nresists\nresize\nresized\nresizes\nresizing\nresmelt\nresmelted\nresmelting\nresmelts\nresmooth\nresmoothed\nresmoothing\nresmooths\nresod\nresojet\nresojets\nresold\nresolder\nresoldered\nresoldering\nresolders\nresole\nresoled\nresoles\nresoling\nresolute\nresolutely\nresoluteness\nresoluter\nresolutes\nresolutest\nresolution\nresolutions\nresolvable\nresolve\nresolved\nresolvent\nresolver\nresolvers\nresolves\nresolving\nresonance\nresonances\nresonant\nresonantly\nresonants\nresonate\nresonated\nresonates\nresonating\nresonator\nresonators\nresorb\nresorbed\nresorbing\nresorbs\nresorcin\nresorcins\nresorption\nresort\nresorted\nresorter\nresorters\nresorting\nresorts\nresought\nresound\nresounded\nresounding\nresoundingly\nresounds\nresource\nresourceful\nresourcefully\nresourcefulness\nresources\nresow\nresowed\nresowing\nresown\nresows\nrespect\nrespectabilities\nrespectability\nrespectable\nrespectableness\nrespectably\nrespected\nrespecter\nrespecters\nrespectful\nrespectfully\nrespectfulness\nrespecting\nrespective\nrespectively\nrespectiveness\nrespects\nrespell\nrespelled\nrespelling\nrespells\nrespelt\nrespirable\nrespiration\nrespirations\nrespirator\nrespirators\nrespiratory\nrespire\nrespired\nrespires\nrespiring\nrespite\nrespited\nrespites\nrespiting\nresplendence\nresplendences\nresplendencies\nresplendency\nresplendent\nresplendently\nrespond\nresponded\nrespondent\nrespondents\nresponder\nresponders\nresponding\nresponds\nresponsa\nresponse\nresponses\nresponsibilities\nresponsibility\nresponsible\nresponsibleness\nresponsibly\nresponsions\nresponsive\nresponsively\nresponsiveness\nresponsories\nresponsory\nresprang\nrespread\nrespreading\nrespreads\nrespring\nrespringing\nresprings\nresprung\nrest\nrestack\nrestacked\nrestacking\nrestacks\nrestaff\nrestaffed\nrestaffing\nrestaffs\nrestage\nrestaged\nrestages\nrestaging\nrestamp\nrestamped\nrestamping\nrestamps\nrestart\nrestarted\nrestarting\nrestarts\nrestate\nrestated\nrestatement\nrestatements\nrestates\nrestating\nrestaurant\nrestaurants\nrestaurateur\nrestaurateurs\nrested\nrester\nresters\nrestful\nrestfuller\nrestfullest\nrestfully\nrestfulness\nresting\nrestitution\nrestitutions\nrestive\nrestively\nrestiveness\nrestless\nrestlessly\nrestlessness\nrestock\nrestocked\nrestocking\nrestocks\nrestorable\nrestoral\nrestorals\nrestoration\nrestorations\nrestorative\nrestoratives\nrestore\nrestored\nrestorer\nrestorers\nrestores\nrestoring\nrestrain\nrestrainable\nrestrained\nrestrainedly\nrestrainer\nrestrainers\nrestraining\nrestrains\nrestraint\nrestraints\nrestricken\nrestrict\nrestricted\nrestrictedly\nrestricting\nrestriction\nrestrictionist\nrestrictionists\nrestrictions\nrestrictive\nrestrictively\nrestrictiveness\nrestricts\nrestrike\nrestrikes\nrestriking\nrestring\nrestringing\nrestrings\nrestrive\nrestriven\nrestrives\nrestriving\nrestrove\nrestruck\nrestructure\nrestructured\nrestructures\nrestructuring\nrestrung\nrests\nrestudied\nrestudies\nrestudy\nrestudying\nrestuff\nrestuffed\nrestuffing\nrestuffs\nrestyle\nrestyled\nrestyles\nrestyling\nresubmit\nresubmits\nresubmitted\nresubmitting\nresult\nresultant\nresultants\nresulted\nresulting\nresults\nresume\nresumed\nresumer\nresumers\nresumes\nresuming\nresummon\nresummoned\nresummoning\nresummons\nresumption\nresumptions\nresupine\nresupplied\nresupplies\nresupply\nresupplying\nresurface\nresurfaced\nresurfaces\nresurfacing\nresurge\nresurged\nresurgence\nresurgences\nresurgent\nresurges\nresurging\nresurrect\nresurrected\nresurrecting\nresurrection\nresurrectional\nresurrectionist\nresurrectionists\nresurrections\nresurrects\nresurvey\nresurveyed\nresurveying\nresurveys\nresuscitate\nresuscitated\nresuscitates\nresuscitating\nresuscitation\nresuscitations\nresuscitative\nresuscitator\nresuscitators\nret\nretable\nretables\nretag\nretail\nretailed\nretailer\nretailers\nretailing\nretailor\nretailored\nretailoring\nretailors\nretails\nretain\nretained\nretainer\nretainers\nretaining\nretains\nretake\nretaken\nretaker\nretakers\nretakes\nretaking\nretaliate\nretaliated\nretaliates\nretaliating\nretaliation\nretaliations\nretaliative\nretaliatory\nretard\nretardant\nretardants\nretardate\nretardates\nretardation\nretardations\nretarded\nretarder\nretarders\nretarding\nretards\nretaste\nretasted\nretastes\nretasting\nretaught\nretax\nretch\nretched\nretches\nretching\nrete\nreteach\nreteaches\nreteaching\nretell\nretelling\nretells\nretem\nretems\nretene\nretenes\nretention\nretentions\nretentive\nretentively\nretentiveness\nretentivities\nretentivity\nretest\nretested\nretesting\nretests\nrethink\nrethinking\nrethinks\nrethought\nrethread\nrethreaded\nrethreading\nrethreads\nretia\nretial\nretiarii\nretiary\nreticence\nreticences\nreticencies\nreticency\nreticent\nreticently\nreticle\nreticles\nreticula\nreticular\nreticulate\nreticulated\nreticulately\nreticulates\nreticulating\nreticulation\nreticulations\nreticule\nreticules\nretie\nretied\nreties\nretiform\nretime\nretimed\nretimes\nretiming\nretina\nretinae\nretinal\nretinals\nretinas\nretinene\nretinenes\nretinite\nretinites\nretinol\nretinols\nretint\nretinted\nretinting\nretints\nretinue\nretinued\nretinues\nretinula\nretinulae\nretinulas\nretirant\nretirants\nretire\nretired\nretiredly\nretiredness\nretiree\nretirees\nretirement\nretirements\nretirer\nretirers\nretires\nretiring\nretiringly\nretitle\nretitled\nretitles\nretitling\nretold\nretook\nretool\nretooled\nretooling\nretools\nretort\nretorted\nretorter\nretorters\nretorting\nretortion\nretortions\nretorts\nretouch\nretouched\nretoucher\nretouchers\nretouches\nretouching\nretrace\nretraced\nretraces\nretracing\nretrack\nretracked\nretracking\nretracks\nretract\nretractable\nretracted\nretractile\nretractility\nretracting\nretraction\nretractions\nretractor\nretractors\nretracts\nretrain\nretrainable\nretrained\nretrainee\nretrainees\nretraining\nretrains\nretral\nretrally\nretread\nretreaded\nretreading\nretreads\nretreat\nretreated\nretreating\nretreats\nretrench\nretrenched\nretrenches\nretrenching\nretrenchment\nretrenchments\nretrial\nretrials\nretribution\nretributions\nretributive\nretributively\nretributory\nretried\nretries\nretrievable\nretrieval\nretrievals\nretrieve\nretrieved\nretriever\nretrievers\nretrieves\nretrieving\nretrim\nretrimmed\nretrimming\nretrims\nretro\nretroact\nretroacted\nretroacting\nretroaction\nretroactions\nretroactive\nretroactively\nretroacts\nretrocede\nretroceded\nretrocedes\nretroceding\nretrocession\nretrocessions\nretrofire\nretrofired\nretrofires\nretrofiring\nretrofit\nretrofits\nretrofitted\nretrofitting\nretrogradation\nretrogradations\nretrograde\nretrograded\nretrogradely\nretrogrades\nretrograding\nretrogress\nretrogressed\nretrogresses\nretrogressing\nretrogression\nretrogressions\nretrogressive\nretrogressively\nretrorse\nretrospect\nretrospected\nretrospecting\nretrospection\nretrospections\nretrospective\nretrospectively\nretrospects\nretrousse\nretry\nretrying\nrets\nretsina\nretsinas\nretted\nretting\nretune\nretuned\nretunes\nretuning\nreturn\nreturnable\nreturned\nreturnee\nreturnees\nreturner\nreturners\nreturning\nreturns\nretuse\nretwist\nretwisted\nretwisting\nretwists\nretying\nretype\nretyped\nretypes\nretyping\nreunified\nreunifies\nreunify\nreunifying\nreunion\nreunionist\nreunionistic\nreunionists\nreunions\nreunite\nreunited\nreuniter\nreuniters\nreunites\nreuniting\nreusability\nreusable\nreuse\nreused\nreuses\nreusing\nreutter\nreuttered\nreuttering\nreutters\nrev\nrevaluate\nrevaluated\nrevaluates\nrevaluating\nrevalue\nrevalued\nrevalues\nrevaluing\nrevamp\nrevamped\nrevamper\nrevampers\nrevamping\nrevamps\nrevanche\nrevanches\nreveal\nrevealable\nrevealed\nrevealer\nrevealers\nrevealing\nrevealingly\nrevealment\nrevealments\nreveals\nrevehent\nreveille\nreveilles\nrevel\nrevelation\nrevelations\nrevelator\nrevelators\nrevelatory\nreveled\nreveler\nrevelers\nreveling\nrevelled\nreveller\nrevellers\nrevelling\nrevelries\nrevelry\nrevels\nrevenant\nrevenants\nrevenge\nrevenged\nrevengeful\nrevengefully\nrevengefulness\nrevenger\nrevengers\nrevenges\nrevenging\nrevenual\nrevenue\nrevenued\nrevenuer\nrevenuers\nrevenues\nreverb\nreverberant\nreverberantly\nreverberate\nreverberated\nreverberates\nreverberating\nreverberation\nreverberations\nreverberative\nreverberatories\nreverberatory\nreverbs\nrevere\nrevered\nreverence\nreverenced\nreverencer\nreverencers\nreverences\nreverencing\nreverend\nreverends\nreverent\nreverential\nreverentially\nreverently\nreverer\nreverers\nreveres\nreverie\nreveries\nreverified\nreverifies\nreverify\nreverifying\nrevering\nrevers\nreversal\nreversals\nreverse\nreversed\nreversely\nreverser\nreversers\nreverses\nreversible\nreversibly\nreversing\nreversion\nreversional\nreversionary\nreversioner\nreversioners\nreversions\nreverso\nreversos\nrevert\nrevertant\nrevertants\nreverted\nreverter\nreverters\nrevertible\nreverting\nreverts\nrevery\nrevest\nrevested\nrevesting\nrevests\nrevet\nrevets\nrevetted\nrevetting\nreview\nreviewal\nreviewals\nreviewed\nreviewer\nreviewers\nreviewing\nreviews\nrevile\nreviled\nrevilement\nrevilements\nreviler\nrevilers\nreviles\nreviling\nrevisable\nrevisal\nrevisals\nrevise\nrevised\nreviser\nrevisers\nrevises\nrevising\nrevision\nrevisionary\nrevisionism\nrevisionisms\nrevisionist\nrevisionists\nrevisions\nrevisit\nrevisited\nrevisiting\nrevisits\nrevisor\nrevisors\nrevisory\nrevitalization\nrevitalizations\nrevitalize\nrevitalized\nrevitalizes\nrevitalizing\nrevivable\nrevival\nrevivalism\nrevivalisms\nrevivalist\nrevivalistic\nrevivalists\nrevivals\nrevive\nrevived\nreviver\nrevivers\nrevivification\nrevivifications\nrevivified\nrevivifies\nrevivify\nrevivifying\nreviving\nrevivives\nrevocable\nrevocation\nrevocations\nrevoice\nrevoiced\nrevoices\nrevoicing\nrevokable\nrevoke\nrevoked\nrevoker\nrevokers\nrevokes\nrevoking\nrevolt\nrevolted\nrevolter\nrevolters\nrevolting\nrevoltingly\nrevolts\nrevolute\nrevolution\nrevolutionaries\nrevolutionary\nrevolutionist\nrevolutionists\nrevolutionize\nrevolutionized\nrevolutionizer\nrevolutionizers\nrevolutionizes\nrevolutionizing\nrevolutions\nrevolvable\nrevolve\nrevolved\nrevolver\nrevolvers\nrevolves\nrevolving\nrevs\nrevue\nrevues\nrevuist\nrevuists\nrevulsed\nrevulsion\nrevulsions\nrevulsive\nrevved\nrevving\nrewake\nrewaked\nrewaken\nrewakened\nrewakening\nrewakens\nrewakes\nrewaking\nrewan\nrewany\nreward\nrewardable\nrewarded\nrewarder\nrewarders\nrewarding\nrewards\nrewarm\nrewarmed\nrewarming\nrewarms\nrewash\nrewashed\nrewashes\nrewashing\nrewax\nrewaxed\nrewaxes\nrewaxing\nreweave\nreweaved\nreweaves\nreweaving\nrewed\nreweigh\nreweighed\nreweighing\nreweighs\nreweld\nrewelded\nrewelding\nrewelds\nrewet\nrewiden\nrewidened\nrewidening\nrewidens\nrewin\nrewind\nrewinded\nrewinder\nrewinders\nrewinding\nrewinds\nrewinning\nrewins\nrewire\nrewired\nrewires\nrewiring\nrewoke\nrewoken\nrewon\nreword\nreworded\nrewording\nrewords\nrework\nreworked\nreworking\nreworks\nrewound\nrewove\nrewoven\nrewrap\nrewrapped\nrewrapping\nrewraps\nrewrapt\nrewrite\nrewriter\nrewriters\nrewrites\nrewriting\nrewritten\nrewrote\nrewrought\nrex\nrexes\nreynard\nreynards\nrezone\nrezoned\nrezones\nrezoning\nrhabdom\nrhabdome\nrhabdomes\nrhabdoms\nrhachides\nrhachis\nrhachises\nrhamnose\nrhamnoses\nrhamnus\nrhamnuses\nrhaphae\nrhaphe\nrhaphes\nrhapsode\nrhapsodes\nrhapsodic\nrhapsodical\nrhapsodically\nrhapsodies\nrhapsodist\nrhapsodists\nrhapsodize\nrhapsodized\nrhapsodizes\nrhapsodizing\nrhapsody\nrhatanies\nrhatany\nrhea\nrheas\nrhebok\nrheboks\nrhematic\nrhenium\nrheniums\nrheobase\nrheobases\nrheologies\nrheology\nrheophil\nrheostat\nrheostatic\nrheostats\nrhesus\nrhesuses\nrhetor\nrhetoric\nrhetorical\nrhetorically\nrhetorician\nrhetoricians\nrhetorics\nrhetors\nrheum\nrheumatic\nrheumatically\nrheumatics\nrheumatism\nrheumatisms\nrheumatoid\nrheumic\nrheumier\nrheumiest\nrheums\nrheumy\nrhinal\nrhinestone\nrhinestones\nrhinitides\nrhinitis\nrhino\nrhinoceri\nrhinoceros\nrhinoceroses\nrhinos\nrhizobia\nrhizoid\nrhizoids\nrhizoma\nrhizomata\nrhizome\nrhizomes\nrhizomic\nrhizopi\nrhizopod\nrhizopods\nrhizopus\nrhizopuses\nrho\nrhodamin\nrhodamins\nrhodic\nrhodium\nrhodiums\nrhodora\nrhodoras\nrhomb\nrhombi\nrhombic\nrhomboid\nrhomboidal\nrhomboids\nrhombs\nrhombus\nrhombuses\nrhonchal\nrhonchi\nrhonchus\nrhos\nrhubarb\nrhubarbs\nrhumb\nrhumba\nrhumbaed\nrhumbaing\nrhumbas\nrhumbs\nrhus\nrhuses\nrhyme\nrhymed\nrhymer\nrhymers\nrhymes\nrhymester\nrhymesters\nrhyming\nrhyolite\nrhyolites\nrhyta\nrhythm\nrhythmic\nrhythmical\nrhythmically\nrhythmicities\nrhythmicity\nrhythmics\nrhythmist\nrhythmists\nrhythms\nrhyton\nria\nrial\nrials\nrialto\nrialtos\nriant\nriantly\nrias\nriata\nriatas\nrib\nribald\nribaldly\nribaldries\nribaldry\nribalds\nriband\nribands\nribband\nribbands\nribbed\nribber\nribbers\nribbier\nribbiest\nribbing\nribbings\nribbon\nribboned\nribboning\nribbonlike\nribbons\nribbony\nribby\nribes\nribgrass\nribgrasses\nribless\nriblet\nriblets\nriblike\nriboflavin\nribose\nriboses\nribosome\nribosomes\nribs\nribwort\nribworts\nrice\nricebird\nricebirds\nriced\nricer\nricercar\nricercars\nricers\nrices\nrich\nrichen\nrichened\nrichening\nrichens\nricher\nriches\nrichest\nrichly\nrichness\nrichnesses\nrichweed\nrichweeds\nricin\nricing\nricins\nricinus\nricinuses\nrick\nricked\nricketier\nricketiest\nrickets\nrickettsia\nrickettsiae\nrickettsias\nrickety\nrickey\nrickeys\nricking\nrickrack\nrickracks\nricks\nricksha\nrickshas\nrickshaw\nrickshaws\nricochet\nricocheted\nricocheting\nricochets\nricochetted\nricochetting\nricotta\nricottas\nricrac\nricracs\nrictal\nrictus\nrictuses\nrid\nridable\nriddance\nriddances\nridded\nridden\nridder\nridders\nridding\nriddle\nriddled\nriddler\nriddlers\nriddles\nriddling\nride\nrideable\nrident\nrider\nriderless\nriders\nridership\nrides\nridge\nridged\nridgel\nridgels\nridgepole\nridgepoles\nridges\nridgier\nridgiest\nridgil\nridgils\nridging\nridgling\nridglings\nridgy\nridicule\nridiculed\nridiculer\nridiculers\nridicules\nridiculing\nridiculous\nridiculously\nridiculousness\nriding\nridings\nridley\nridleys\nridotto\nridottos\nrids\nriel\nriels\nries\nriever\nrievers\nrif\nrife\nrifely\nrifeness\nrifenesses\nrifer\nrifest\nriff\nriffed\nriffing\nriffle\nriffled\nriffler\nrifflers\nriffles\nriffling\nriffraff\nriffraffs\nriffs\nrifle\nrifled\nrifleman\nriflemen\nrifler\nrifleries\nriflers\nriflery\nrifles\nrifling\nriflings\nrifs\nrift\nrifted\nrifting\nriftless\nrifts\nrig\nrigadoon\nrigadoons\nrigatoni\nrigatonis\nrigaudon\nrigaudons\nrigged\nrigger\nriggers\nrigging\nriggings\nright\nrightangle\nrightangles\nrighted\nrighteous\nrighteously\nrighteousness\nrighter\nrighters\nrightest\nrightful\nrightfully\nrightfulness\nrighties\nrighting\nrightism\nrightisms\nrightist\nrightists\nrightly\nrightness\nrighto\nrights\nrightward\nrighty\nrigid\nrigidified\nrigidifies\nrigidify\nrigidifying\nrigidities\nrigidity\nrigidly\nrigidness\nrigmarole\nrigmaroles\nrigor\nrigorism\nrigorisms\nrigorist\nrigorists\nrigorous\nrigorously\nrigorousness\nrigors\nrigour\nrigours\nrigs\nrikisha\nrikishas\nrikshaw\nrikshaws\nrile\nriled\nriles\nriley\nrilievi\nrilievo\nriling\nrill\nrille\nrilled\nrilles\nrillet\nrillets\nrilling\nrills\nrim\nrime\nrimed\nrimer\nrimers\nrimes\nrimester\nrimesters\nrimfire\nrimier\nrimiest\nriming\nrimland\nrimlands\nrimless\nrimmed\nrimmer\nrimmers\nrimming\nrimose\nrimosely\nrimosities\nrimosity\nrimous\nrimple\nrimpled\nrimples\nrimpling\nrimrock\nrimrocks\nrims\nrimy\nrin\nrind\nrinded\nrinds\nring\nringbark\nringbarked\nringbarking\nringbarks\nringbolt\nringbolts\nringbone\nringbones\nringdove\nringdoves\nringed\nringent\nringer\nringers\nringhals\nringhalses\nringing\nringleader\nringleaders\nringlet\nringlets\nringlike\nringmaster\nringmasters\nringneck\nringnecks\nrings\nringside\nringsides\nringtail\nringtails\nringtaw\nringtaws\nringtoss\nringtosses\nringworm\nringworms\nrink\nrinks\nrinning\nrins\nrinsable\nrinse\nrinsed\nrinser\nrinsers\nrinses\nrinsible\nrinsing\nrinsings\nrioja\nriot\nrioted\nrioter\nrioters\nrioting\nriotous\nriotously\nriotousness\nriots\nrip\nriparian\nripcord\nripcords\nripe\nriped\nripely\nripen\nripened\nripener\nripeners\nripeness\nripenesses\nripening\nripens\nriper\nripes\nripest\nripieni\nripieno\nripienos\nriping\nripost\nriposte\nriposted\nripostes\nriposting\nriposts\nrippable\nripped\nripper\nrippers\nripping\nripple\nrippled\nrippler\nripplers\nripples\nripplet\nripplets\nripplier\nrippliest\nrippling\nripply\nriprap\nriprapped\nriprapping\nripraps\nrips\nripsaw\nripsaws\nriptide\nriptides\nrise\nrisen\nriser\nrisers\nrises\nrishi\nrishis\nrisibilities\nrisibility\nrisible\nrisibles\nrisibly\nrising\nrisings\nrisk\nrisked\nrisker\nriskers\nriskier\nriskiest\nriskily\nriskiness\nrisking\nrisks\nrisky\nrisotto\nrisottos\nrisque\nrissole\nrissoles\nrisus\nrisuses\nritard\nritards\nrite\nrites\nritter\nritters\nritual\nritualism\nritualist\nritualistic\nritualistically\nritualists\nritualize\nritualized\nritualizes\nritualizing\nritually\nrituals\nritz\nritzes\nritzier\nritziest\nritzily\nritzy\nrivage\nrivages\nrival\nrivaled\nrivaling\nrivalled\nrivalling\nrivalries\nrivalrous\nrivalry\nrivals\nrive\nrived\nriven\nriver\nriverbed\nriverbeds\nriverine\nrivers\nriverside\nriversides\nrives\nrivet\nriveted\nriveter\nriveters\nriveting\nrivets\nrivetted\nrivetting\nriviera\nrivieras\nriviere\nrivieres\nriving\nrivulet\nrivulets\nriyal\nriyals\nroach\nroached\nroaches\nroaching\nroad\nroadability\nroadbed\nroadbeds\nroadblock\nroadblocked\nroadblocking\nroadblocks\nroadhouse\nroadhouses\nroadless\nroads\nroadside\nroadsides\nroadstead\nroadsteads\nroadster\nroadsters\nroadway\nroadways\nroadwork\nroadworks\nroam\nroamed\nroamer\nroamers\nroaming\nroams\nroan\nroans\nroar\nroared\nroarer\nroarers\nroaring\nroaringly\nroarings\nroars\nroast\nroasted\nroaster\nroasters\nroasting\nroasts\nrob\nrobalo\nrobalos\nroband\nrobands\nrobbed\nrobber\nrobberies\nrobbers\nrobbery\nrobbin\nrobbing\nrobbins\nrobe\nrobed\nrobes\nrobin\nrobing\nrobins\nroble\nrobles\nroborant\nroborants\nrobot\nrobotics\nrobotism\nrobotisms\nrobotize\nrobotized\nrobotizes\nrobotizing\nrobotries\nrobotry\nrobots\nrobs\nrobust\nrobuster\nrobustest\nrobustly\nrobustness\nroc\nrochet\nrochets\nrock\nrockabies\nrockaby\nrockabye\nrockabyes\nrockaway\nrockaways\nrocked\nrocker\nrockeries\nrockers\nrockery\nrocket\nrocketed\nrocketeer\nrocketeers\nrocketer\nrocketers\nrocketing\nrocketlike\nrocketries\nrocketry\nrockets\nrockfall\nrockfalls\nrockfish\nrockfishes\nrockier\nrockiest\nrockiness\nrocking\nrockless\nrocklike\nrockling\nrocklings\nrockoon\nrockoons\nrockrose\nrockroses\nrocks\nrockweed\nrockweeds\nrockwork\nrockworks\nrocky\nrococo\nrococos\nrocs\nrod\nrodded\nrodding\nrode\nrodent\nrodents\nrodeo\nrodeos\nrodless\nrodlike\nrodman\nrodmen\nrods\nrodsman\nrodsmen\nroe\nroebuck\nroebucks\nroentgen\nroentgenogram\nroentgenograms\nroentgenographic\nroentgenographically\nroentgenography\nroentgenologic\nroentgenological\nroentgenologically\nroentgenologist\nroentgenologists\nroentgenology\nroentgens\nroes\nrogation\nrogations\nrogatory\nroger\nrogers\nrogue\nrogued\nrogueing\nrogueries\nroguery\nrogues\nroguing\nroguish\nroguishly\nroguishness\nroil\nroiled\nroilier\nroiliest\nroiling\nroils\nroily\nroister\nroistered\nroistering\nroisterous\nroisterously\nroisters\nrolamite\nrolamites\nrole\nroles\nroll\nrollaway\nrollback\nrollbacks\nrolled\nroller\nrollers\nrollick\nrollicked\nrollicking\nrollicks\nrollicky\nrolling\nrollings\nrollmop\nrollmops\nrollout\nrollouts\nrollover\nrollovers\nrolls\nrolltop\nrollway\nrollways\nrom\nromaine\nromaines\nroman\nromance\nromanced\nromancer\nromancers\nromances\nromancing\nromanize\nromanized\nromanizes\nromanizing\nromano\nromanos\nromans\nromantic\nromantically\nromanticism\nromanticist\nromanticists\nromanticization\nromanticizations\nromanticize\nromanticized\nromanticizes\nromanticizing\nromantics\nromaunt\nromaunts\nromeo\nromp\nromped\nromper\nrompers\nromping\nrompish\nromps\nroms\nrondeau\nrondeaux\nrondel\nrondelet\nrondelets\nrondelle\nrondelles\nrondels\nrondo\nrondos\nrondure\nrondures\nronion\nronions\nronnel\nronnels\nrontgen\nrontgens\nronyon\nronyons\nrood\nroods\nroof\nroofed\nroofer\nroofers\nroofing\nroofings\nroofless\nrooflike\nroofline\nrooflines\nroofs\nrooftop\nrooftops\nrooftree\nrooftrees\nrook\nrooked\nrookeries\nrookery\nrookie\nrookier\nrookies\nrookiest\nrooking\nrooks\nrooky\nroom\nroomed\nroomer\nroomers\nroomette\nroomettes\nroomful\nroomfuls\nroomier\nroomiest\nroomily\nroominess\nrooming\nroommate\nroommates\nrooms\nroomy\nroorback\nroorbacks\nroose\nroosed\nrooser\nroosers\nrooses\nroosing\nroost\nroosted\nrooster\nroosters\nroosting\nroosts\nroot\nrootage\nrootages\nrooted\nrooter\nrooters\nroothold\nrootholds\nrootier\nrootiest\nrooting\nrootless\nrootlessness\nrootlet\nrootlets\nrootlike\nroots\nrootstock\nrooty\nropable\nrope\nroped\nroper\nroperies\nropers\nropery\nropes\nropewalk\nropewalks\nropeway\nropeways\nropey\nropier\nropiest\nropily\nropiness\nropinesses\nroping\nropy\nroque\nroques\nroquet\nroqueted\nroqueting\nroquets\nrorqual\nrorquals\nrosaria\nrosarian\nrosarians\nrosaries\nrosarium\nrosariums\nrosary\nroscoe\nroscoes\nrose\nroseate\nrosebay\nrosebays\nrosebud\nrosebuds\nrosebush\nrosebushes\nrosed\nrosefish\nrosefishes\nroselike\nroselle\nroselles\nrosemaries\nrosemary\nroseola\nroseolar\nroseolas\nroseries\nroseroot\nroseroots\nrosery\nroses\nroset\nrosets\nrosette\nrosettes\nrosewood\nrosewoods\nrosier\nrosiest\nrosily\nrosin\nrosined\nrosiness\nrosinesses\nrosing\nrosining\nrosinous\nrosins\nrosiny\nrosolio\nrosolios\nrostella\nroster\nrosters\nrostra\nrostral\nrostrate\nrostrum\nrostrums\nrosulate\nrosy\nrot\nrota\nrotaries\nrotary\nrotas\nrotatable\nrotate\nrotated\nrotates\nrotating\nrotation\nrotational\nrotations\nrotative\nrotatively\nrotator\nrotatores\nrotators\nrotatory\nrotch\nrotche\nrotches\nrote\nrotenone\nrotenones\nrotes\nrotgut\nrotguts\nrotifer\nrotifers\nrotiform\nrotisserie\nrotisseries\nrotl\nrotls\nroto\nrotogravure\nrotogravures\nrotor\nrotors\nrotos\nrototill\nrototilled\nrototilling\nrototills\nrots\nrotte\nrotted\nrotten\nrottener\nrottenest\nrottenly\nrottenness\nrotter\nrotters\nrotting\nrotund\nrotunda\nrotundas\nrotundities\nrotundity\nrotundly\nrotundness\nroturier\nroturiers\nrouble\nroubles\nrouche\nrouches\nroue\nrouen\nrouens\nroues\nrouge\nrouged\nrouges\nrough\nroughage\nroughages\nroughcast\nroughcasting\nroughcasts\nroughdried\nroughdries\nroughdry\nroughdrying\nroughed\nroughen\nroughened\nroughening\nroughens\nrougher\nroughers\nroughest\nroughhew\nroughhewed\nroughhewing\nroughhewn\nroughhews\nroughhouse\nroughhoused\nroughhouses\nroughhousing\nroughing\nroughish\nroughleg\nroughlegs\nroughly\nroughness\nroughs\nrouging\nroulade\nroulades\nrouleau\nrouleaus\nrouleaux\nroulette\nrouletted\nroulettes\nrouletting\nround\nroundabout\nrounded\nroundedness\nroundel\nroundelay\nroundelays\nroundels\nrounder\nrounders\nroundest\nroundhouse\nroundhouses\nrounding\nroundish\nroundlet\nroundlets\nroundly\nroundness\nrounds\nroundup\nroundups\nroundworm\nroundworms\nroup\nrouped\nroupet\nroupier\nroupiest\nroupily\nrouping\nroups\nroupy\nrouse\nroused\nrouser\nrousers\nrouses\nrousing\nrousingly\nrousseau\nrousseaus\nroust\nroustabout\nroustabouts\nrousted\nrouster\nrousters\nrousting\nrousts\nrout\nroute\nrouted\nrouteman\nroutemen\nrouter\nrouters\nroutes\nrouteway\nrouteways\nrouth\nrouths\nroutine\nroutinely\nroutines\nrouting\nroutinize\nroutinized\nroutinizes\nroutinizing\nrouts\nroux\nrove\nroved\nroven\nrover\nrovers\nroves\nroving\nrovingly\nrovings\nrow\nrowable\nrowan\nrowans\nrowboat\nrowboats\nrowdier\nrowdies\nrowdiest\nrowdily\nrowdy\nrowdyish\nrowdyism\nrowdyisms\nrowed\nrowel\nroweled\nroweling\nrowelled\nrowelling\nrowels\nrowen\nrowens\nrower\nrowers\nrowing\nrowings\nrowlock\nrowlocks\nrows\nrowth\nrowths\nroyal\nroyalism\nroyalisms\nroyalist\nroyalists\nroyally\nroyals\nroyalties\nroyalty\nroyster\nroystered\nroystering\nroysters\nrozzer\nrozzers\nruana\nrub\nrubaboo\nrubaboos\nrubace\nrubaces\nrubaiyat\nrubasse\nrubasses\nrubato\nrubatos\nrubbaboo\nrubbaboos\nrubbed\nrubber\nrubberize\nrubberized\nrubberizes\nrubberizing\nrubberlike\nrubberneck\nrubbernecked\nrubbernecking\nrubbernecks\nrubbers\nrubbery\nrubbing\nrubbings\nrubbish\nrubbishes\nrubbishy\nrubble\nrubbled\nrubbles\nrubblier\nrubbliest\nrubbling\nrubbly\nrubdown\nrubdowns\nrube\nrubella\nrubellas\nrubeola\nrubeolar\nrubeolas\nrubes\nrubicund\nrubicundity\nrubidic\nrubidium\nrubidiums\nrubied\nrubier\nrubies\nrubiest\nrubigo\nrubigos\nrubious\nruble\nrubles\nrubric\nrubrical\nrubrically\nrubricate\nrubricated\nrubricates\nrubricating\nrubrication\nrubrications\nrubricator\nrubricators\nrubrics\nrubs\nrubus\nruby\nrubying\nrubylike\nruche\nruches\nruching\nruchings\nruck\nrucked\nrucking\nrucks\nrucksack\nrucksacks\nruckus\nruckuses\nruction\nructions\nructious\nrudd\nrudder\nrudderless\nrudders\nruddier\nruddiest\nruddily\nruddiness\nruddle\nruddled\nruddles\nruddling\nruddock\nruddocks\nrudds\nruddy\nrude\nrudely\nrudeness\nrudenesses\nruder\nruderal\nruderals\nrudesbies\nrudesby\nrudest\nrudiment\nrudimental\nrudimentary\nrudiments\nrue\nrued\nrueful\nruefully\nruefulness\nruer\nruers\nrues\nruff\nruffe\nruffed\nruffes\nruffian\nruffianism\nruffianisms\nruffianly\nruffians\nruffing\nruffle\nruffled\nruffler\nrufflers\nruffles\nrufflike\nruffling\nruffly\nruffs\nrufous\nrug\nruga\nrugae\nrugal\nrugate\nrugbies\nrugby\nrugged\nruggeder\nruggedest\nruggedly\nruggedness\nrugger\nruggers\nrugging\nruglike\nrugose\nrugosely\nrugosities\nrugosity\nrugous\nrugs\nrugulose\nruin\nruinable\nruinate\nruinated\nruinates\nruinating\nruination\nruinations\nruined\nruiner\nruiners\nruing\nruining\nruinous\nruinously\nruinousness\nruins\nrulable\nrule\nruled\nruleless\nruler\nrulers\nrules\nruling\nrulings\nrum\nrumba\nrumbaed\nrumbaing\nrumbas\nrumble\nrumbled\nrumbler\nrumblers\nrumbles\nrumbling\nrumblings\nrumbly\nrumen\nrumens\nrumina\nruminal\nruminant\nruminantly\nruminants\nruminate\nruminated\nruminates\nruminating\nrumination\nruminations\nruminative\nruminatively\nruminator\nruminators\nrummage\nrummaged\nrummager\nrummagers\nrummages\nrummaging\nrummer\nrummers\nrummest\nrummier\nrummies\nrummiest\nrummy\nrumor\nrumored\nrumoring\nrumors\nrumour\nrumoured\nrumouring\nrumours\nrump\nrumple\nrumpled\nrumples\nrumpless\nrumplier\nrumpliest\nrumpling\nrumply\nrumps\nrumpus\nrumpuses\nrums\nrun\nrunabout\nrunabouts\nrunagate\nrunagates\nrunaround\nrunarounds\nrunaway\nrunaways\nrunback\nrunbacks\nrundle\nrundles\nrundlet\nrundlets\nrundown\nrundowns\nrune\nrunelike\nrunes\nrung\nrungless\nrungs\nrunic\nrunkle\nrunkled\nrunkles\nrunkling\nrunless\nrunlet\nrunlets\nrunnel\nrunnels\nrunner\nrunners\nrunnier\nrunniest\nrunning\nrunnings\nrunny\nrunoff\nrunoffs\nrunout\nrunouts\nrunover\nrunovers\nrunround\nrunrounds\nruns\nrunt\nruntier\nruntiest\nruntiness\nruntish\nrunts\nrunty\nrunway\nrunways\nrupee\nrupees\nrupiah\nrupiahs\nrupture\nruptured\nruptures\nrupturing\nrural\nruralise\nruralised\nruralises\nruralising\nruralism\nruralisms\nruralist\nruralists\nruralite\nruralites\nruralities\nrurality\nruralize\nruralized\nruralizes\nruralizing\nrurally\nrurban\nruse\nruses\nrush\nrushed\nrushee\nrushees\nrusher\nrushers\nrushes\nrushier\nrushiest\nrushing\nrushings\nrushlike\nrushy\nrusine\nrusk\nrusks\nrusset\nrussets\nrussety\nrussified\nrussifies\nrussify\nrussifying\nrust\nrustable\nrusted\nrustic\nrustical\nrustically\nrusticate\nrusticated\nrusticates\nrusticating\nrustication\nrustications\nrusticator\nrusticators\nrusticities\nrusticity\nrusticly\nrustics\nrustier\nrustiest\nrustily\nrustiness\nrusting\nrustle\nrustled\nrustler\nrustlers\nrustles\nrustless\nrustling\nrustproof\nrusts\nrusty\nrut\nrutabaga\nrutabagas\nruth\nruthenic\nruthenium\nruthful\nruthless\nruthlessly\nruthlessness\nruths\nrutilant\nrutile\nrutiles\nrutin\nruts\nrutted\nruttier\nruttiest\nruttily\nrutting\nruttish\nruttishly\nruttishness\nrutty\nrya\nryas\nrye\nryegrass\nryegrasses\nryes\nryke\nryked\nrykes\nryking\nrynd\nrynds\nryot\nryots\nsab\nsabaton\nsabatons\nsabbat\nsabbath\nsabbaths\nsabbatic\nsabbatical\nsabbaticals\nsabbats\nsabbed\nsabbing\nsabe\nsabed\nsabeing\nsaber\nsabered\nsabering\nsabers\nsabes\nsabin\nsabine\nsabines\nsabins\nsabir\nsabirs\nsable\nsables\nsabot\nsabotage\nsabotaged\nsabotages\nsabotaging\nsaboteur\nsaboteurs\nsabots\nsabra\nsabras\nsabre\nsabred\nsabres\nsabring\nsabs\nsabulose\nsabulous\nsac\nsacaton\nsacatons\nsacbut\nsacbuts\nsaccade\nsaccades\nsaccadic\nsaccate\nsaccharin\nsaccharine\nsaccharines\nsaccharinity\nsaccharins\nsaccular\nsaccule\nsaccules\nsacculi\nsacculus\nsacerdotal\nsachem\nsachemic\nsachems\nsachet\nsacheted\nsachets\nsack\nsackbut\nsackbuts\nsackcloth\nsacked\nsacker\nsackers\nsackful\nsackfuls\nsacking\nsackings\nsacklike\nsacks\nsacksful\nsaclike\nsacque\nsacques\nsacra\nsacral\nsacrals\nsacrament\nsacramental\nsacramentalist\nsacramentalists\nsacramentally\nsacraments\nsacraria\nsacred\nsacredly\nsacredness\nsacrifice\nsacrificed\nsacrifices\nsacrificial\nsacrificially\nsacrificing\nsacrilege\nsacrileges\nsacrilegious\nsacrilegiously\nsacrist\nsacristan\nsacristans\nsacristies\nsacrists\nsacristy\nsacroiliac\nsacroiliacs\nsacrosanct\nsacrosanctities\nsacrosanctity\nsacrum\nsacs\nsad\nsadden\nsaddened\nsaddening\nsaddens\nsadder\nsaddest\nsaddhu\nsaddhus\nsaddle\nsaddlebag\nsaddlebags\nsaddled\nsaddler\nsaddleries\nsaddlers\nsaddlery\nsaddles\nsaddling\nsade\nsades\nsadhe\nsadhes\nsadhu\nsadhus\nsadi\nsadiron\nsadirons\nsadis\nsadism\nsadisms\nsadist\nsadistic\nsadistically\nsadists\nsadly\nsadness\nsadnesses\nsadomasochism\nsae\nsafari\nsafaried\nsafariing\nsafaris\nsafe\nsafeguard\nsafeguarded\nsafeguarding\nsafeguards\nsafekeeping\nsafely\nsafeness\nsafenesses\nsafer\nsafes\nsafest\nsafetied\nsafeties\nsafety\nsafetying\nsafflower\nsafflowers\nsaffron\nsaffrons\nsafranin\nsafranins\nsafrol\nsafrole\nsafroles\nsafrols\nsag\nsaga\nsagacious\nsagaciously\nsagaciousness\nsagacities\nsagacity\nsagaman\nsagamen\nsagamore\nsagamores\nsaganash\nsaganashes\nsagas\nsagbut\nsagbuts\nsage\nsagely\nsageness\nsagenesses\nsager\nsages\nsagest\nsaggar\nsaggard\nsaggards\nsaggared\nsaggaring\nsaggars\nsagged\nsagger\nsaggered\nsaggering\nsaggers\nsagging\nsaggy\nsagier\nsagiest\nsagittal\nsago\nsagos\nsags\nsaguaro\nsaguaros\nsagum\nsagy\nsahib\nsahibs\nsahiwal\nsahiwals\nsahuaro\nsahuaros\nsaice\nsaices\nsaid\nsaids\nsaiga\nsaigas\nsail\nsailable\nsailboat\nsailboats\nsailcloth\nsailcloths\nsailed\nsailer\nsailers\nsailfish\nsailfishes\nsailing\nsailings\nsailor\nsailorly\nsailors\nsails\nsain\nsained\nsainfoin\nsainfoins\nsaining\nsains\nsaint\nsaintdom\nsaintdoms\nsainted\nsainthood\nsainting\nsaintlier\nsaintliest\nsaintliness\nsaintly\nsaints\nsaith\nsaithe\nsaiyid\nsaiyids\nsajou\nsajous\nsake\nsaker\nsakers\nsakes\nsaki\nsakis\nsal\nsalaam\nsalaamed\nsalaaming\nsalaams\nsalabilities\nsalability\nsalable\nsalably\nsalacious\nsalaciously\nsalaciousness\nsalacities\nsalacity\nsalad\nsaladang\nsaladangs\nsalads\nsalal\nsalami\nsalamis\nsalariat\nsalariats\nsalaried\nsalaries\nsalary\nsalarying\nsale\nsaleabilities\nsaleability\nsaleable\nsaleably\nsalep\nsaleps\nsaleroom\nsalerooms\nsales\nsalesclerk\nsalesclerks\nsalesgirl\nsalesgirls\nsalesman\nsalesmanship\nsalesmen\nsalespeople\nsalesperson\nsalespersons\nsaleswoman\nsaleswomen\nsalic\nsalicin\nsalicine\nsalicines\nsalicins\nsalience\nsaliences\nsaliencies\nsaliency\nsalient\nsaliently\nsalients\nsalified\nsalifies\nsalify\nsalifying\nsalina\nsalinas\nsaline\nsalines\nsalinities\nsalinity\nsalinize\nsalinized\nsalinizes\nsalinizing\nsaliva\nsalivary\nsalivas\nsalivate\nsalivated\nsalivates\nsalivating\nsalivation\nsalivations\nsall\nsallet\nsallets\nsallied\nsallier\nsalliers\nsallies\nsallow\nsallowed\nsallower\nsallowest\nsallowing\nsallowish\nsallowly\nsallowness\nsallows\nsallowy\nsally\nsallying\nsalmagundi\nsalmagundis\nsalmi\nsalmis\nsalmon\nsalmonella\nsalmonid\nsalmonids\nsalmons\nsalol\nsalols\nsalon\nsalons\nsaloon\nsaloons\nsaloop\nsaloops\nsalp\nsalpa\nsalpae\nsalpas\nsalpian\nsalpians\nsalpid\nsalpids\nsalpinges\nsalpinx\nsalps\nsals\nsalsa\nsalsifies\nsalsify\nsalsilla\nsalsillas\nsalt\nsaltant\nsaltation\nsaltations\nsaltbox\nsaltboxes\nsaltbush\nsaltbushes\nsaltcellar\nsaltcellars\nsalted\nsalter\nsaltern\nsalterns\nsalters\nsaltest\nsaltie\nsaltier\nsaltiers\nsalties\nsaltiest\nsaltily\nsaltine\nsaltines\nsaltiness\nsalting\nsaltire\nsaltires\nsaltish\nsaltless\nsaltlike\nsaltness\nsaltnesses\nsaltpan\nsaltpans\nsaltpeter\nsaltpeters\nsalts\nsaltshaker\nsaltshakers\nsaltwater\nsaltwork\nsaltworks\nsaltwort\nsaltworts\nsalty\nsalubrious\nsalubriously\nsalubriousness\nsalubrities\nsalubrity\nsaluki\nsalukis\nsalutary\nsalutation\nsalutations\nsalutatorian\nsalutatorians\nsalutatories\nsalutatory\nsalute\nsaluted\nsaluter\nsaluters\nsalutes\nsaluting\nsalvable\nsalvably\nsalvadoran\nsalvadorans\nsalvage\nsalvageable\nsalvaged\nsalvagee\nsalvagees\nsalvager\nsalvagers\nsalvages\nsalvaging\nsalvation\nsalvational\nsalvationism\nsalvationist\nsalvationists\nsalvations\nsalve\nsalved\nsalver\nsalvers\nsalves\nsalvia\nsalvias\nsalvific\nsalving\nsalvo\nsalvoed\nsalvoes\nsalvoing\nsalvor\nsalvors\nsalvos\nsamara\nsamaras\nsamaritan\nsamaritans\nsamarium\nsamariums\nsamba\nsambaed\nsambaing\nsambar\nsambars\nsambas\nsambhar\nsambhars\nsambhur\nsambhurs\nsambo\nsambos\nsambuca\nsambucas\nsambuke\nsambukes\nsambur\nsamburs\nsame\nsamech\nsamechs\nsamek\nsamekh\nsamekhs\nsameks\nsameness\nsamenesses\nsamiel\nsamiels\nsamisen\nsamisens\nsamite\nsamites\nsamlet\nsamlets\nsamovar\nsamovars\nsamp\nsampan\nsampans\nsamphire\nsamphires\nsample\nsampled\nsampler\nsamplers\nsamples\nsampling\nsamplings\nsamps\nsamsara\nsamsaras\nsamshu\nsamshus\nsamurai\nsamurais\nsanative\nsanatoria\nsanatorium\nsanatoriums\nsancta\nsancties\nsanctification\nsanctifications\nsanctified\nsanctifier\nsanctifiers\nsanctifies\nsanctify\nsanctifying\nsanctimonies\nsanctimonious\nsanctimoniously\nsanctimoniousness\nsanctimony\nsanction\nsanctioned\nsanctioning\nsanctions\nsanctities\nsanctity\nsanctuaries\nsanctuary\nsanctum\nsanctums\nsand\nsandal\nsandaled\nsandaling\nsandalled\nsandalling\nsandals\nsandalwood\nsandalwoods\nsandarac\nsandaracs\nsandbag\nsandbagged\nsandbagger\nsandbaggers\nsandbagging\nsandbags\nsandbank\nsandbanks\nsandbar\nsandbars\nsandblast\nsandblasted\nsandblasting\nsandblasts\nsandbox\nsandboxes\nsandbur\nsandburr\nsandburrs\nsandburs\nsanded\nsander\nsanders\nsandfish\nsandfishes\nsandflies\nsandfly\nsandhi\nsandhis\nsandhog\nsandhogs\nsandier\nsandiest\nsandiness\nsanding\nsandlike\nsandling\nsandlings\nsandlot\nsandlots\nsandman\nsandmen\nsandpaper\nsandpapered\nsandpapering\nsandpapers\nsandpeep\nsandpeeps\nsandpile\nsandpiles\nsandpiper\nsandpipers\nsandpit\nsandpits\nsands\nsandsoap\nsandsoaps\nsandstone\nsandstones\nsandstorm\nsandstorms\nsandwich\nsandwiched\nsandwiches\nsandwiching\nsandworm\nsandworms\nsandwort\nsandworts\nsandy\nsane\nsaned\nsanely\nsaneness\nsanenesses\nsaner\nsanes\nsanest\nsang\nsanga\nsangar\nsangaree\nsangarees\nsangars\nsangas\nsanger\nsangers\nsangh\nsanghs\nsangria\nsangrias\nsanguinary\nsanguine\nsanguinely\nsanguineness\nsanguines\nsanicle\nsanicles\nsanies\nsaning\nsanious\nsanitaria\nsanitarian\nsanitarians\nsanitaries\nsanitarily\nsanitarium\nsanitariums\nsanitary\nsanitate\nsanitated\nsanitates\nsanitating\nsanitation\nsanitations\nsanities\nsanitise\nsanitised\nsanitises\nsanitising\nsanitization\nsanitizations\nsanitize\nsanitized\nsanitizes\nsanitizing\nsanity\nsanjak\nsanjaks\nsank\nsannop\nsannops\nsannup\nsannups\nsannyasi\nsannyasis\nsans\nsansar\nsansars\nsansei\nsanseis\nsanserif\nsanserifs\nsantalic\nsantimi\nsantims\nsantir\nsantirs\nsantol\nsantols\nsantonin\nsantonins\nsantour\nsantours\nsap\nsapajou\nsapajous\nsaphead\nsapheads\nsaphena\nsaphenae\nsapid\nsapidities\nsapidity\nsapience\nsapiences\nsapiencies\nsapiency\nsapiens\nsapient\nsapiently\nsapless\nsapling\nsaplings\nsaponification\nsaponifications\nsaponified\nsaponifier\nsaponifiers\nsaponifies\nsaponify\nsaponifying\nsaponin\nsaponine\nsaponines\nsaponins\nsaponite\nsaponites\nsapor\nsaporous\nsapors\nsapota\nsapotas\nsapour\nsapours\nsapped\nsapper\nsappers\nsapphic\nsapphics\nsapphire\nsapphires\nsapphism\nsapphisms\nsapphist\nsapphists\nsappier\nsappiest\nsappily\nsapping\nsappy\nsapremia\nsapremias\nsapremic\nsaprobe\nsaprobes\nsaprobic\nsapropel\nsapropels\nsaps\nsapsago\nsapsagos\nsapwood\nsapwoods\nsaraband\nsarabands\nsaran\nsarape\nsarapes\nsarcasm\nsarcasms\nsarcastic\nsarcastically\nsarcenet\nsarcenets\nsarcoid\nsarcoids\nsarcoma\nsarcomas\nsarcomata\nsarcophagi\nsarcophagus\nsarcophaguses\nsarcous\nsard\nsardar\nsardars\nsardine\nsardines\nsardius\nsardiuses\nsardonic\nsardonically\nsardonicism\nsardonicisms\nsardonyx\nsardonyxes\nsards\nsaree\nsarees\nsargasso\nsargassos\nsarge\nsarges\nsari\nsarin\nsarins\nsaris\nsark\nsarks\nsarky\nsarment\nsarmenta\nsarments\nsarod\nsarode\nsarodes\nsarodist\nsarodists\nsarods\nsarong\nsarongs\nsaros\nsarsaparilla\nsarsaparillas\nsarsar\nsarsars\nsarsen\nsarsenet\nsarsenets\nsarsens\nsartor\nsartorial\nsartorially\nsartorii\nsartors\nsash\nsashay\nsashayed\nsashaying\nsashays\nsashed\nsashes\nsashimi\nsashimis\nsashing\nsasin\nsasins\nsass\nsassabies\nsassaby\nsassafras\nsassed\nsasses\nsassier\nsassies\nsassiest\nsassily\nsassing\nsasswood\nsasswoods\nsassy\nsastruga\nsastrugi\nsat\nsatang\nsatangs\nsatanic\nsatanically\nsatanism\nsatanisms\nsatanist\nsatanists\nsatara\nsataras\nsatay\nsatchel\nsatchels\nsate\nsated\nsateen\nsateens\nsatellite\nsatellites\nsatem\nsates\nsati\nsatiable\nsatiably\nsatiate\nsatiated\nsatiates\nsatiating\nsatiation\nsatiations\nsatieties\nsatiety\nsatin\nsatinet\nsatinets\nsating\nsatinpod\nsatinpods\nsatins\nsatinwood\nsatinwoods\nsatiny\nsatire\nsatires\nsatiric\nsatirical\nsatirically\nsatirise\nsatirised\nsatirises\nsatirising\nsatirist\nsatirists\nsatirize\nsatirized\nsatirizes\nsatirizing\nsatis\nsatisfaction\nsatisfactions\nsatisfactorily\nsatisfactory\nsatisfiable\nsatisfied\nsatisfies\nsatisfy\nsatisfying\nsatisfyingly\nsatori\nsatoris\nsatrap\nsatrapies\nsatraps\nsatrapy\nsaturable\nsaturant\nsaturants\nsaturate\nsaturated\nsaturates\nsaturating\nsaturation\nsaturations\nsaturator\nsaturators\nsaturnine\nsatyr\nsatyric\nsatyrid\nsatyrids\nsatyrs\nsau\nsauce\nsaucebox\nsauceboxes\nsauced\nsaucepan\nsaucepans\nsaucer\nsaucers\nsauces\nsauch\nsauchs\nsaucier\nsauciest\nsaucily\nsaucing\nsaucy\nsauger\nsaugers\nsaugh\nsaughs\nsaughy\nsaul\nsauls\nsault\nsaults\nsauna\nsaunas\nsaunter\nsauntered\nsauntering\nsaunters\nsaurel\nsaurels\nsaurian\nsaurians\nsauries\nsauropod\nsauropods\nsaury\nsausage\nsausages\nsaute\nsauted\nsauteed\nsauteing\nsauterne\nsauternes\nsautes\nsautoir\nsautoire\nsautoires\nsautoirs\nsavable\nsavage\nsavaged\nsavagely\nsavageness\nsavager\nsavageries\nsavagery\nsavages\nsavagest\nsavaging\nsavagism\nsavagisms\nsavanna\nsavannah\nsavannahs\nsavannas\nsavant\nsavants\nsavate\nsavates\nsave\nsaveable\nsaved\nsaveloy\nsaveloys\nsaver\nsavers\nsaves\nsavin\nsavine\nsavines\nsaving\nsavingly\nsavings\nsavins\nsavior\nsaviors\nsaviour\nsaviours\nsavor\nsavored\nsavorer\nsavorers\nsavorier\nsavories\nsavoriest\nsavorily\nsavoriness\nsavoring\nsavorless\nsavorous\nsavors\nsavory\nsavour\nsavoured\nsavourer\nsavourers\nsavourier\nsavouries\nsavouriest\nsavouring\nsavours\nsavoury\nsavoy\nsavoys\nsavvied\nsavvies\nsavvy\nsavvying\nsaw\nsawbill\nsawbills\nsawbones\nsawboneses\nsawbuck\nsawbucks\nsawdust\nsawdusts\nsawed\nsawer\nsawers\nsawfish\nsawfishes\nsawflies\nsawfly\nsawhorse\nsawhorses\nsawing\nsawlike\nsawlog\nsawlogs\nsawmill\nsawmills\nsawn\nsawney\nsawneys\nsaws\nsawtooteeth\nsawtooth\nsawyer\nsawyers\nsax\nsaxatile\nsaxes\nsaxhorn\nsaxhorns\nsaxonies\nsaxony\nsaxophone\nsaxophones\nsaxophonist\nsaxophonists\nsaxtuba\nsaxtubas\nsay\nsayable\nsayer\nsayers\nsayest\nsayid\nsayids\nsaying\nsayings\nsayonara\nsayonaras\nsays\nsayst\nsayyid\nsayyids\nscab\nscabbard\nscabbarded\nscabbarding\nscabbards\nscabbed\nscabbier\nscabbiest\nscabbily\nscabbing\nscabble\nscabbled\nscabbles\nscabbling\nscabby\nscabies\nscabiosa\nscabiosas\nscabious\nscabiouses\nscablike\nscabrous\nscabrously\nscabrousness\nscabs\nscad\nscads\nscaffold\nscaffolded\nscaffolding\nscaffoldings\nscaffolds\nscag\nscags\nscalable\nscalably\nscalade\nscalades\nscalado\nscalados\nscalage\nscalages\nscalar\nscalare\nscalares\nscalars\nscalawag\nscalawags\nscald\nscalded\nscaldic\nscalding\nscalds\nscale\nscaled\nscaleless\nscalene\nscaleni\nscalenus\nscalepan\nscalepans\nscaler\nscalers\nscales\nscalier\nscaliest\nscaling\nscall\nscallion\nscallions\nscallop\nscalloped\nscalloping\nscallopini\nscallops\nscalls\nscaloppine\nscalp\nscalped\nscalpel\nscalpels\nscalper\nscalpers\nscalping\nscalps\nscaly\nscam\nscammonies\nscammony\nscamp\nscamped\nscamper\nscampered\nscampering\nscampers\nscampi\nscamping\nscampish\nscamps\nscams\nscan\nscandal\nscandaled\nscandaling\nscandalize\nscandalized\nscandalizes\nscandalizing\nscandalled\nscandalling\nscandalmonger\nscandalmongers\nscandalous\nscandalously\nscandalousness\nscandals\nscandent\nscandia\nscandias\nscandic\nscandium\nscandiums\nscannable\nscanned\nscanner\nscanners\nscanning\nscannings\nscans\nscansion\nscansions\nscant\nscanted\nscanter\nscantest\nscantier\nscanties\nscantiest\nscantily\nscantiness\nscanting\nscantling\nscantlings\nscantly\nscantness\nscants\nscanty\nscape\nscaped\nscapegoat\nscapegoats\nscapegrace\nscapegraces\nscapes\nscaphoid\nscaphoids\nscaping\nscapose\nscapula\nscapulae\nscapular\nscapulars\nscapulas\nscar\nscarab\nscarabs\nscarce\nscarcely\nscarceness\nscarcer\nscarcest\nscarcities\nscarcity\nscare\nscarecrow\nscarecrows\nscared\nscarer\nscarers\nscares\nscarey\nscarf\nscarfed\nscarfing\nscarfpin\nscarfpins\nscarfs\nscarier\nscariest\nscarification\nscarifications\nscarified\nscarifier\nscarifiers\nscarifies\nscarify\nscarifying\nscariness\nscaring\nscariose\nscarious\nscarless\nscarlet\nscarlets\nscarp\nscarped\nscarper\nscarpered\nscarpering\nscarpers\nscarph\nscarphed\nscarphing\nscarphs\nscarping\nscarps\nscarred\nscarrier\nscarriest\nscarring\nscarry\nscars\nscart\nscarted\nscarting\nscarts\nscarves\nscary\nscat\nscatback\nscatbacks\nscathe\nscathed\nscatheless\nscathes\nscathing\nscathingly\nscatological\nscatology\nscats\nscatt\nscatted\nscatter\nscatterbrain\nscatterbrained\nscatterbrains\nscattered\nscattering\nscatterings\nscatters\nscattier\nscattiest\nscatting\nscatts\nscatty\nscaup\nscauper\nscaupers\nscaups\nscaur\nscaurs\nscavenge\nscavenged\nscavengenges\nscavenger\nscavengers\nscavenges\nscavenging\nscena\nscenario\nscenarios\nscenarist\nscenarists\nscenas\nscend\nscended\nscending\nscends\nscene\nsceneries\nscenery\nscenes\nscenic\nscenical\nscenically\nscenographic\nscenography\nscent\nscented\nscenting\nscents\nscepter\nsceptered\nsceptering\nscepters\nsceptic\nsceptical\nscepticism\nscepticisms\nsceptics\nsceptral\nsceptre\nsceptred\nsceptres\nsceptring\nschappe\nschappes\nschav\nschavs\nschedule\nscheduled\nschedules\nscheduling\nschema\nschemata\nschematic\nschematically\nschematics\nscheme\nschemed\nschemer\nschemers\nschemes\nscheming\nscherzi\nscherzo\nscherzos\nschiller\nschillers\nschism\nschismatic\nschismatics\nschisms\nschist\nschists\nschizo\nschizoid\nschizoids\nschizont\nschizonts\nschizophrene\nschizophrenes\nschizophrenia\nschizophrenias\nschizophrenic\nschizos\nschlep\nschlepp\nschlepped\nschlepping\nschlepps\nschleps\nschlock\nschlocks\nschmaltz\nschmaltzes\nschmalz\nschmalzes\nschmalzier\nschmalziest\nschmalzy\nschmeer\nschmeered\nschmeering\nschmeers\nschmelze\nschmelzes\nschmo\nschmoe\nschmoes\nschmoos\nschmoose\nschmoosed\nschmooses\nschmoosing\nschmooze\nschmoozed\nschmoozes\nschmoozing\nschmuck\nschmucks\nschnapps\nschnaps\nschnauzer\nschnauzers\nschnecke\nschnecken\nschnook\nschnooks\nscholar\nscholarly\nscholars\nscholarship\nscholarships\nscholastic\nscholastically\nscholasticism\nscholastics\nscholia\nscholium\nscholiums\nschool\nschoolbook\nschoolbooks\nschoolboy\nschoolboys\nschoolchild\nschoolchildren\nschooled\nschoolgirl\nschoolgirls\nschoolhouse\nschoolhouses\nschooling\nschoolmaster\nschoolmasters\nschoolmate\nschoolmates\nschoolroom\nschoolrooms\nschools\nschoolteacher\nschoolteachers\nschoolwork\nschooner\nschooners\nschorl\nschorls\nschrik\nschriks\nschtick\nschticks\nschuit\nschuits\nschul\nschuln\nschuss\nschussed\nschusses\nschussing\nschwa\nschwas\nsciaenid\nsciaenids\nsciatic\nsciatica\nsciaticas\nsciatics\nscience\nsciences\nscientific\nscientifically\nscientist\nscientists\nscilicet\nscilla\nscillas\nscimetar\nscimetars\nscimitar\nscimitars\nscimiter\nscimiters\nscincoid\nscincoids\nscintilla\nscintillas\nscintillate\nscintillated\nscintillates\nscintillating\nscintillation\nscintillations\nsciolism\nsciolisms\nsciolist\nsciolists\nscion\nscions\nscirocco\nsciroccos\nscirrhi\nscirrhus\nscirrhuses\nscissile\nscission\nscissions\nscissor\nscissored\nscissoring\nscissors\nscissure\nscissures\nsciurine\nsciurines\nsciuroid\nsclaff\nsclaffed\nsclaffer\nsclaffers\nsclaffing\nsclaffs\nsclera\nsclerae\nscleral\nscleras\nsclereid\nsclereids\nsclerite\nsclerites\nscleroid\nscleroma\nscleromata\nsclerose\nsclerosed\nscleroses\nsclerosing\nsclerosis\nsclerotic\nsclerotics\nsclerous\nscoff\nscoffed\nscoffer\nscoffers\nscoffing\nscofflaw\nscofflaws\nscoffs\nscold\nscolded\nscolder\nscolders\nscolding\nscoldings\nscolds\nscoleces\nscolex\nscolices\nscolioma\nscoliomas\nscollop\nscolloped\nscolloping\nscollops\nsconce\nsconced\nsconces\nsconcing\nscone\nscones\nscoop\nscooped\nscooper\nscoopers\nscoopful\nscoopfuls\nscooping\nscoops\nscoopsful\nscoot\nscooted\nscooter\nscooters\nscooting\nscoots\nscop\nscope\nscopes\nscops\nscopula\nscopulae\nscopulas\nscorbutic\nscorch\nscorched\nscorcher\nscorchers\nscorches\nscorching\nscorchingly\nscore\nscored\nscorekeeper\nscorekeepers\nscoreless\nscorepad\nscorepads\nscorer\nscorers\nscores\nscoria\nscoriae\nscorified\nscorifies\nscorify\nscorifying\nscoring\nscorn\nscorned\nscorner\nscorners\nscornful\nscornfully\nscornfulness\nscorning\nscorns\nscorpion\nscorpions\nscot\nscotch\nscotched\nscotches\nscotching\nscoter\nscoters\nscotia\nscotias\nscotoma\nscotomas\nscotomata\nscotopia\nscotopias\nscotopic\nscots\nscottie\nscotties\nscoundrel\nscoundrelly\nscoundrels\nscour\nscoured\nscourer\nscourers\nscourge\nscourged\nscourger\nscourgers\nscourges\nscourging\nscouring\nscourings\nscours\nscouse\nscouses\nscout\nscouted\nscouter\nscouters\nscouth\nscouther\nscouthered\nscouthering\nscouthers\nscouths\nscouting\nscoutings\nscoutmaster\nscoutmasters\nscouts\nscow\nscowder\nscowdered\nscowdering\nscowders\nscowed\nscowing\nscowl\nscowled\nscowler\nscowlers\nscowling\nscowls\nscows\nscrabble\nscrabbled\nscrabbles\nscrabbling\nscrabbly\nscrag\nscragged\nscraggier\nscraggiest\nscragging\nscragglier\nscraggliest\nscraggly\nscraggy\nscrags\nscraich\nscraiched\nscraiching\nscraichs\nscraigh\nscraighed\nscraighing\nscraighs\nscram\nscramble\nscrambled\nscrambler\nscramblers\nscrambles\nscrambling\nscrammed\nscramming\nscrams\nscrannel\nscrannels\nscrap\nscrapbook\nscrapbooks\nscrape\nscraped\nscraper\nscrapers\nscrapes\nscrapie\nscrapies\nscraping\nscrapings\nscrapped\nscrapper\nscrappers\nscrappier\nscrappiest\nscrappily\nscrappiness\nscrapping\nscrapple\nscrapples\nscrappy\nscraps\nscratch\nscratched\nscratcher\nscratchers\nscratches\nscratchier\nscratchiest\nscratchiness\nscratching\nscratchy\nscrawl\nscrawled\nscrawler\nscrawlers\nscrawlier\nscrawliest\nscrawling\nscrawls\nscrawly\nscrawnier\nscrawniest\nscrawny\nscreak\nscreaked\nscreaking\nscreaks\nscreaky\nscream\nscreamed\nscreamer\nscreamers\nscreaming\nscreamingly\nscreams\nscree\nscreech\nscreeched\nscreeches\nscreechier\nscreechiest\nscreeching\nscreechy\nscreed\nscreeded\nscreeding\nscreeds\nscreen\nscreened\nscreener\nscreeners\nscreening\nscreenings\nscreenplay\nscreenplays\nscreens\nscreenwriter\nscreenwriters\nscrees\nscrew\nscrewball\nscrewballs\nscrewdriver\nscrewdrivers\nscrewed\nscrewer\nscrewers\nscrewier\nscrewiest\nscrewing\nscrews\nscrewy\nscribal\nscribble\nscribbled\nscribbler\nscribblers\nscribbles\nscribbling\nscribe\nscribed\nscriber\nscribers\nscribes\nscribing\nscrieve\nscrieved\nscrieves\nscrieving\nscrim\nscrimmage\nscrimmaged\nscrimmager\nscrimmagers\nscrimmages\nscrimmaging\nscrimp\nscrimped\nscrimpier\nscrimpiest\nscrimping\nscrimpit\nscrimps\nscrimpy\nscrims\nscrip\nscrips\nscript\nscripted\nscripting\nscripts\nscriptural\nscripturally\nscripture\nscriptures\nscrive\nscrived\nscrivener\nscriveners\nscrives\nscriving\nscrod\nscrods\nscrofula\nscrofulas\nscrofulous\nscroggier\nscroggiest\nscroggy\nscroll\nscrolls\nscrollwork\nscrooge\nscrooges\nscroop\nscrooped\nscrooping\nscroops\nscrota\nscrotal\nscrotum\nscrotums\nscrouge\nscrouged\nscrouges\nscrouging\nscrounge\nscrounged\nscrounges\nscroungier\nscroungiest\nscrounging\nscroungy\nscrub\nscrubbed\nscrubber\nscrubbers\nscrubbier\nscrubbiest\nscrubbing\nscrubby\nscrubs\nscruff\nscruffier\nscruffiest\nscruffs\nscruffy\nscrum\nscrumptious\nscrumptiously\nscrums\nscrunch\nscrunched\nscrunches\nscrunching\nscruple\nscrupled\nscruples\nscrupling\nscrupulosities\nscrupulosity\nscrupulous\nscrupulously\nscrupulousness\nscrutinies\nscrutinize\nscrutinized\nscrutinizes\nscrutinizing\nscrutiny\nscry\nscuba\nscubas\nscud\nscudded\nscudding\nscudi\nscudo\nscuds\nscuff\nscuffed\nscuffing\nscuffle\nscuffled\nscuffler\nscufflers\nscuffles\nscuffling\nscuffs\nsculk\nsculked\nsculker\nsculkers\nsculking\nsculks\nscull\nsculled\nsculler\nsculleries\nscullers\nscullery\nsculling\nscullion\nscullions\nsculls\nsculp\nsculped\nsculpin\nsculping\nsculpins\nsculps\nsculpt\nsculpted\nsculpting\nsculptor\nsculptors\nsculptress\nsculptresses\nsculpts\nsculptural\nsculpturally\nsculpture\nsculptured\nsculptures\nsculpturesque\nsculpturing\nscum\nscumble\nscumbled\nscumbles\nscumbling\nscumlike\nscummed\nscummer\nscummers\nscummier\nscummiest\nscumming\nscummy\nscums\nscunner\nscunnered\nscunnering\nscunners\nscup\nscuppaug\nscuppaugs\nscupper\nscuppered\nscuppering\nscuppers\nscups\nscurf\nscurfier\nscurfiest\nscurfs\nscurfy\nscurried\nscurries\nscurril\nscurrile\nscurrilities\nscurrility\nscurrilous\nscurrilously\nscurrilousness\nscurry\nscurrying\nscurvier\nscurvies\nscurviest\nscurvily\nscurvy\nscut\nscuta\nscutage\nscutages\nscutate\nscutch\nscutched\nscutcher\nscutchers\nscutches\nscutching\nscute\nscutella\nscutes\nscuts\nscutter\nscuttered\nscuttering\nscutters\nscuttle\nscuttlebutt\nscuttlebutts\nscuttled\nscuttles\nscuttling\nscutum\nscyphate\nscythe\nscythed\nscythes\nscything\nsea\nseabag\nseabags\nseabeach\nseabeaches\nseabed\nseabeds\nseabird\nseabirds\nseaboard\nseaboards\nseaboot\nseaboots\nseaborne\nseacoast\nseacoasts\nseacock\nseacocks\nseacraft\nseacrafts\nseadog\nseadogs\nseadrome\nseadromes\nseafarer\nseafarers\nseafaring\nseafloor\nseafloors\nseafood\nseafoods\nseafowl\nseafowls\nseafront\nseafronts\nseagirt\nseagoing\nseal\nsealable\nsealant\nsealants\nsealed\nsealer\nsealeries\nsealers\nsealery\nsealing\nseallike\nseals\nsealskin\nsealskins\nseam\nseaman\nseamanlike\nseamanly\nseamanship\nseamark\nseamarks\nseamed\nseamen\nseamer\nseamers\nseamier\nseamiest\nseaminess\nseaming\nseamless\nseamlike\nseamount\nseamounts\nseams\nseamster\nseamsters\nseamstress\nseamstresses\nseamy\nseance\nseances\nseapiece\nseapieces\nseaplane\nseaplanes\nseaport\nseaports\nseaquake\nseaquakes\nsear\nsearch\nsearchable\nsearched\nsearcher\nsearchers\nsearches\nsearching\nsearchingly\nsearchlight\nsearchlights\nseared\nsearer\nsearest\nsearing\nsears\nseas\nseascape\nseascapes\nseascout\nseascouts\nseashell\nseashells\nseashore\nseashores\nseasick\nseasickness\nseasicknesses\nseaside\nseasides\nseason\nseasonable\nseasonableness\nseasonably\nseasonal\nseasonalities\nseasonality\nseasonally\nseasoned\nseasoner\nseasoners\nseasoning\nseasonings\nseasonless\nseasons\nseat\nseated\nseater\nseaters\nseating\nseatings\nseatless\nseatmate\nseatmates\nseatrain\nseatrains\nseats\nseatwork\nseatworks\nseawall\nseawalls\nseawan\nseawans\nseawant\nseawants\nseaward\nseawards\nseaware\nseawares\nseawater\nseawaters\nseaway\nseaways\nseaweed\nseaweeds\nseaworthiness\nseaworthy\nsebacic\nsebasic\nsebum\nsebums\nsec\nsecant\nsecantly\nsecants\nsecateur\nsecateurs\nsecco\nseccos\nsecede\nseceded\nseceder\nseceders\nsecedes\nseceding\nsecern\nsecerned\nsecerning\nsecerns\nsecession\nsecessionism\nsecessionisms\nsecessionist\nsecessionists\nsecessions\nseclude\nsecluded\nsecludedly\nsecludedness\nsecludes\nsecluding\nseclusion\nseclusions\nseclusive\nseclusiveness\nsecond\nsecondaries\nsecondarily\nsecondary\nseconde\nseconded\nseconder\nseconders\nsecondes\nsecondhand\nsecondi\nseconding\nsecondly\nsecondo\nseconds\nsecpar\nsecpars\nsecrecies\nsecrecy\nsecret\nsecretarial\nsecretariat\nsecretariats\nsecretaries\nsecretary\nsecretaryship\nsecretaryships\nsecrete\nsecreted\nsecreter\nsecretes\nsecretest\nsecretin\nsecreting\nsecretins\nsecretion\nsecretionary\nsecretions\nsecretive\nsecretively\nsecretiveness\nsecretly\nsecretor\nsecretors\nsecrets\nsecs\nsect\nsectarian\nsectarianism\nsectarianisms\nsectarianize\nsectarianized\nsectarianizes\nsectarianizing\nsectarians\nsectaries\nsectary\nsectile\nsection\nsectional\nsectionalism\nsectionally\nsectioned\nsectioning\nsections\nsector\nsectoral\nsectored\nsectorial\nsectoring\nsectors\nsects\nsecular\nsecularism\nsecularist\nsecularistic\nsecularists\nsecularities\nsecularity\nsecularization\nsecularizations\nsecularize\nsecularized\nsecularizes\nsecularizing\nsecularly\nseculars\nsecund\nsecundly\nsecundum\nsecure\nsecured\nsecurely\nsecureness\nsecurer\nsecurers\nsecures\nsecurest\nsecuring\nsecurities\nsecurity\nsedan\nsedans\nsedarim\nsedate\nsedated\nsedately\nsedateness\nsedater\nsedates\nsedatest\nsedating\nsedation\nsedations\nsedative\nsedatives\nsedentary\nseder\nseders\nsederunt\nsederunts\nsedge\nsedges\nsedgier\nsedgiest\nsedgy\nsedile\nsedilia\nsedilium\nsediment\nsedimentary\nsedimentation\nsedimentations\nsedimented\nsedimenting\nsediments\nsedition\nseditions\nseditious\nseditiously\nseditiousness\nseduce\nseduced\nseducer\nseducers\nseduces\nseducing\nseducive\nseduction\nseductions\nseductive\nseductively\nseductiveness\nseductress\nseductresses\nsedulities\nsedulity\nsedulous\nsedulously\nsedulousness\nsedum\nsedums\nsee\nseeable\nseecatch\nseecatchie\nseed\nseedbed\nseedbeds\nseedcake\nseedcakes\nseedcase\nseedcases\nseeded\nseeder\nseeders\nseedier\nseediest\nseedily\nseediness\nseeding\nseedless\nseedlike\nseedling\nseedlings\nseedman\nseedmen\nseedpod\nseedpods\nseeds\nseedsman\nseedsmen\nseedtime\nseedtimes\nseedy\nseeing\nseeings\nseek\nseeker\nseekers\nseeking\nseeks\nseel\nseeled\nseeling\nseels\nseely\nseem\nseemed\nseemer\nseemers\nseeming\nseemingly\nseemings\nseemlier\nseemliest\nseemly\nseems\nseen\nseep\nseepage\nseepages\nseeped\nseepier\nseepiest\nseeping\nseeps\nseepy\nseer\nseeress\nseeresses\nseers\nseersucker\nseersuckers\nsees\nseesaw\nseesawed\nseesawing\nseesaws\nseethe\nseethed\nseethes\nseething\nseg\nsegetal\nseggar\nseggars\nsegment\nsegmental\nsegmentally\nsegmentary\nsegmentation\nsegmentations\nsegmented\nsegmenting\nsegments\nsegni\nsegno\nsegnos\nsego\nsegos\nsegregate\nsegregated\nsegregates\nsegregating\nsegregation\nsegregationist\nsegregationists\nsegregations\nsegregative\nsegs\nsegue\nsegued\nsegueing\nsegues\nsei\nseicento\nseicentos\nseiche\nseiches\nseidel\nseidels\nseif\nseifs\nseigneur\nseigneurs\nseignior\nseigniors\nseignories\nseignory\nseine\nseined\nseiner\nseiners\nseines\nseining\nseis\nseisable\nseise\nseised\nseiser\nseisers\nseises\nseisin\nseising\nseisings\nseisins\nseism\nseismal\nseismic\nseismicity\nseismism\nseismisms\nseismograph\nseismographer\nseismographers\nseismographic\nseismographs\nseismography\nseismological\nseismologist\nseismologists\nseismology\nseisms\nseisor\nseisors\nseisure\nseisures\nseizable\nseize\nseized\nseizer\nseizers\nseizes\nseizin\nseizing\nseizings\nseizins\nseizor\nseizors\nseizure\nseizures\nsejant\nsejeant\nsel\nseladang\nseladangs\nselah\nselahs\nselamlik\nselamliks\nselcouth\nseldom\nseldomly\nselect\nselectable\nselected\nselectee\nselectees\nselecting\nselection\nselections\nselective\nselectively\nselectiveness\nselectivities\nselectivity\nselectly\nselectman\nselectmen\nselectness\nselector\nselectors\nselects\nselenate\nselenates\nselenic\nselenide\nselenides\nselenite\nselenites\nselenium\nseleniums\nselenous\nself\nselfdom\nselfdoms\nselfed\nselfheal\nselfheals\nselfhood\nselfhoods\nselfing\nselfish\nselfishly\nselfishness\nselfless\nselflessly\nselflessness\nselfness\nselfnesses\nselfs\nselfsame\nselfsameness\nselfward\nsell\nsellable\nselle\nseller\nsellers\nselles\nselling\nsellout\nsellouts\nsells\nsels\nselsyn\nselsyns\nseltzer\nseltzers\nselva\nselvage\nselvaged\nselvages\nselvedge\nselvedged\nselvedges\nselves\nsemantic\nsemantically\nsemanticist\nsemanticists\nsemantics\nsemaphore\nsemaphored\nsemaphores\nsemaphoring\nsematic\nsemblance\nsemblances\nseme\nsememe\nsememes\nsemen\nsemens\nsemes\nsemester\nsemesters\nsemi\nsemiannual\nsemiannually\nsemiarid\nsemiautomatic\nsemiautomatically\nsemiautomatics\nsemibald\nsemicircle\nsemicircles\nsemicircular\nsemicolon\nsemicolons\nsemicoma\nsemicomas\nsemiconductor\nsemiconductors\nsemiconscious\nsemiconsciousness\nsemideaf\nsemidome\nsemidomes\nsemidry\nsemifinal\nsemifinalist\nsemifinalists\nsemifinals\nsemifit\nsemifluid\nsemiformal\nsemigala\nsemihard\nsemihigh\nsemihobo\nsemihoboes\nsemihobos\nsemilog\nsemimat\nsemimatt\nsemimonthlies\nsemimonthly\nsemimute\nsemina\nseminal\nseminally\nseminar\nseminarian\nseminarians\nseminaries\nseminars\nseminary\nseminude\nsemiofficial\nsemiofficially\nsemioses\nsemiosis\nsemiotic\nsemiotics\nsemipermanent\nsemiprecious\nsemiprivate\nsemipro\nsemiprofessional\nsemiprofessionally\nsemiprofessionals\nsemipros\nsemiraw\nsemirigid\nsemis\nsemises\nsemiskilled\nsemisoft\nsemisolid\nsemisolids\nsemitist\nsemitists\nsemitone\nsemitones\nsemitropical\nsemitropics\nsemiweeklies\nsemiweekly\nsemiwild\nsemolina\nsemolinas\nsemple\nsemplice\nsempre\nsen\nsenarii\nsenarius\nsenary\nsenate\nsenates\nsenator\nsenatorial\nsenators\nsenatorship\nsenatorships\nsend\nsendable\nsendal\nsendals\nsender\nsenders\nsending\nsendoff\nsendoffs\nsends\nsene\nseneca\nsenecas\nsenecio\nsenecios\nsenega\nsenegas\nsenescence\nsenescent\nseneschal\nseneschals\nsengi\nsenhor\nsenhora\nsenhoras\nsenhores\nsenhors\nsenile\nsenilely\nseniles\nsenilities\nsenility\nsenior\nseniorities\nseniority\nseniors\nseniti\nsenna\nsennas\nsennet\nsennets\nsennight\nsennights\nsennit\nsennits\nsenopia\nsenopias\nsenor\nsenora\nsenoras\nsenores\nsenorita\nsenoritas\nsenors\nsensa\nsensate\nsensated\nsensately\nsensates\nsensating\nsensation\nsensational\nsensationalism\nsensationalisms\nsensationalist\nsensationalistic\nsensationalists\nsensationalize\nsensationalized\nsensationalizes\nsensationalizing\nsensationally\nsensations\nsense\nsensed\nsenseful\nsenseless\nsenselessly\nsenselessness\nsenses\nsensibilities\nsensibility\nsensible\nsensibleness\nsensibler\nsensibles\nsensiblest\nsensibly\nsensilla\nsensing\nsensitive\nsensitively\nsensitiveness\nsensitivities\nsensitivity\nsensitization\nsensitizations\nsensitize\nsensitized\nsensitizer\nsensitizers\nsensitizes\nsensitizing\nsensor\nsensoria\nsensorial\nsensors\nsensory\nsensual\nsensualism\nsensualist\nsensualistic\nsensualists\nsensualities\nsensuality\nsensualization\nsensualizations\nsensualize\nsensualized\nsensualizes\nsensualizing\nsensually\nsensum\nsensuous\nsensuously\nsensuousness\nsent\nsentence\nsentenced\nsentences\nsentencing\nsententious\nsententiously\nsententiousness\nsenti\nsentience\nsentient\nsentiently\nsentients\nsentiment\nsentimental\nsentimentalism\nsentimentalist\nsentimentalists\nsentimentalities\nsentimentality\nsentimentalization\nsentimentalizations\nsentimentalize\nsentimentalized\nsentimentalizes\nsentimentalizing\nsentimentally\nsentiments\nsentinel\nsentineled\nsentineling\nsentinelled\nsentinelling\nsentinels\nsentries\nsentry\nsepal\nsepaled\nsepaline\nsepalled\nsepaloid\nsepalous\nsepals\nseparability\nseparable\nseparableness\nseparably\nseparate\nseparated\nseparately\nseparateness\nseparates\nseparating\nseparation\nseparations\nseparatism\nseparatist\nseparatists\nseparative\nseparator\nseparators\nsepia\nsepias\nsepic\nsepoy\nsepoys\nseppuku\nseppukus\nsepses\nsepsis\nsept\nsepta\nseptal\nseptaria\nseptate\nseptet\nseptets\nseptette\nseptettes\nseptic\nseptical\nsepticemia\nseptics\nseptime\nseptimes\nsepts\nseptuagenarian\nseptuagenarians\nseptum\nseptuple\nseptupled\nseptuples\nseptupling\nsepulcher\nsepulchered\nsepulchering\nsepulchers\nsepulchral\nsepulchrally\nsepulchre\nsepulchred\nsepulchres\nsepulchring\nsequel\nsequela\nsequelae\nsequels\nsequence\nsequenced\nsequencer\nsequencers\nsequences\nsequencies\nsequencing\nsequency\nsequent\nsequential\nsequentially\nsequents\nsequester\nsequestered\nsequestering\nsequesters\nsequestrate\nsequestrated\nsequestrates\nsequestrating\nsequestration\nsequestrations\nsequin\nsequined\nsequinned\nsequins\nsequitur\nsequiturs\nsequoia\nsequoias\nser\nsera\nserac\nseracs\nseraglio\nseraglios\nserai\nserail\nserails\nserais\nseral\nserape\nserapes\nseraph\nseraphic\nseraphically\nseraphim\nseraphims\nseraphin\nseraphs\nserdab\nserdabs\nsere\nsered\nserein\nsereins\nserenade\nserenaded\nserenades\nserenading\nserenata\nserenatas\nserenate\nserendipitous\nserendipity\nserene\nserenely\nsereneness\nserener\nserenes\nserenest\nserenities\nserenity\nserer\nseres\nserest\nserf\nserfage\nserfages\nserfdom\nserfdoms\nserfhood\nserfhoods\nserfish\nserflike\nserfs\nserge\nsergeant\nsergeants\nserges\nserging\nsergings\nserial\nserialist\nserialists\nserialization\nserializations\nserialize\nserialized\nserializes\nserializing\nserially\nserials\nseriate\nseriated\nseriates\nseriatim\nseriating\nsericin\nsericins\nseriema\nseriemas\nseries\nserif\nserifs\nserigraph\nserigraphs\nserin\nserine\nserines\nsering\nseringa\nseringas\nserins\nseriocomic\nseriocomically\nserious\nseriously\nseriousness\nserjeant\nserjeants\nsermon\nsermonic\nsermonize\nsermonized\nsermonizer\nsermonizers\nsermonizes\nsermonizing\nsermons\nserologies\nserology\nserosa\nserosae\nserosal\nserosas\nserosities\nserosity\nserotine\nserotines\nserotype\nserotypes\nserous\nserow\nserows\nserpent\nserpentine\nserpents\nserpigines\nserpigo\nserpigoes\nserranid\nserranids\nserrate\nserrated\nserrates\nserrating\nserration\nserrations\nserried\nserries\nserry\nserrying\nsers\nserum\nserumal\nserums\nservable\nserval\nservals\nservant\nservantless\nservants\nserve\nserved\nserver\nservers\nserves\nservice\nserviceability\nserviceable\nserviceableness\nserviceably\nserviced\nserviceman\nservicemen\nservicer\nservicers\nservices\nservicing\nservile\nservilely\nservileness\nservility\nserving\nservings\nservitor\nservitors\nservitude\nservitudes\nservo\nservomechanism\nservomotor\nservomotors\nservos\nsesame\nsesames\nsesamoid\nsesamoids\nsesquicentennial\nsesquicentennials\nsessile\nsession\nsessional\nsessions\nsesspool\nsesspools\nsesterce\nsesterces\nsestet\nsestets\nsestina\nsestinas\nsestine\nsestines\nset\nseta\nsetae\nsetal\nsetback\nsetbacks\nsetiform\nsetline\nsetlines\nsetoff\nsetoffs\nseton\nsetons\nsetose\nsetous\nsetout\nsetouts\nsets\nsetscrew\nsetscrews\nsett\nsettee\nsettees\nsetter\nsetters\nsetting\nsettings\nsettle\nsettleable\nsettled\nsettlement\nsettlements\nsettler\nsettlers\nsettles\nsettling\nsettlings\nsettlor\nsettlors\nsetts\nsetulose\nsetulous\nsetup\nsetups\nseven\nsevenfold\nsevens\nseventeen\nseventeens\nseventeenth\nseventh\nsevenths\nseventies\nseventieth\nseventy\nsever\nseverable\nseveral\nseverally\nseverals\nseveralties\nseveralty\nseverance\nseverances\nsevere\nsevered\nseverely\nsevereness\nseverer\nseverest\nsevering\nseverities\nseverity\nsevers\nsew\nsewage\nsewages\nsewan\nsewans\nsewar\nsewars\nsewed\nsewer\nsewerage\nsewerages\nsewers\nsewing\nsewings\nsewn\nsews\nsex\nsexagenarian\nsexagenarians\nsexed\nsexes\nsexier\nsexiest\nsexily\nsexiness\nsexinesses\nsexing\nsexism\nsexisms\nsexist\nsexists\nsexless\nsexologies\nsexologist\nsexologists\nsexology\nsexpot\nsexpots\nsext\nsextain\nsextains\nsextan\nsextans\nsextant\nsextants\nsextarii\nsextet\nsextets\nsextette\nsextettes\nsextile\nsextiles\nsexto\nsexton\nsextons\nsextos\nsexts\nsextuple\nsextupled\nsextuples\nsextuplet\nsextuplets\nsextupling\nsextuply\nsexual\nsexuality\nsexualize\nsexualized\nsexualizes\nsexualizing\nsexually\nsexy\nsferics\nsforzato\nsforzatos\nsfumato\nsfumatos\nsh\nsha\nshabbier\nshabbiest\nshabbily\nshabbiness\nshabby\nshack\nshackle\nshackled\nshackler\nshacklers\nshackles\nshackling\nshacko\nshackoes\nshackos\nshacks\nshad\nshadblow\nshadblows\nshadbush\nshadbushes\nshadchan\nshadchanim\nshadchans\nshaddock\nshaddocks\nshade\nshaded\nshader\nshaders\nshades\nshadflies\nshadfly\nshadier\nshadiest\nshadily\nshadiness\nshading\nshadings\nshadoof\nshadoofs\nshadow\nshadowbox\nshadowboxed\nshadowboxes\nshadowboxing\nshadowed\nshadower\nshadowers\nshadowier\nshadowiest\nshadowiness\nshadowing\nshadows\nshadowy\nshadrach\nshadrachs\nshads\nshaduf\nshadufs\nshady\nshaft\nshafted\nshafting\nshaftings\nshafts\nshag\nshagbark\nshagbarks\nshagged\nshaggier\nshaggiest\nshaggily\nshagginess\nshagging\nshaggy\nshagreen\nshagreens\nshags\nshah\nshahdom\nshahdoms\nshahs\nshaird\nshairds\nshairn\nshairns\nshaitan\nshaitans\nshakable\nshake\nshakeable\nshakedown\nshakedowns\nshaken\nshakeout\nshakeouts\nshaker\nshakers\nshakes\nshakeup\nshakeups\nshakier\nshakiest\nshakily\nshakiness\nshaking\nshako\nshakoes\nshakos\nshaky\nshale\nshaled\nshales\nshalier\nshaliest\nshall\nshalloon\nshalloons\nshallop\nshallops\nshallot\nshallots\nshallow\nshallowed\nshallower\nshallowest\nshallowing\nshallowly\nshallowness\nshallows\nshalom\nshalt\nshaly\nsham\nshamable\nshaman\nshamanic\nshamanism\nshamanist\nshamanistic\nshamanists\nshamans\nshamble\nshambled\nshambles\nshambling\nshame\nshamed\nshamefaced\nshamefacedly\nshamefacedness\nshameful\nshamefully\nshamefulness\nshameless\nshamelessly\nshamelessness\nshames\nshaming\nshammas\nshammash\nshammashim\nshammasim\nshammed\nshammer\nshammers\nshammes\nshammied\nshammies\nshamming\nshammos\nshammosim\nshammy\nshammying\nshamois\nshamosim\nshamoy\nshamoyed\nshamoying\nshamoys\nshampoo\nshampooed\nshampooing\nshampoos\nshamrock\nshamrocks\nshams\nshamus\nshamuses\nshandies\nshandy\nshanghai\nshanghaied\nshanghaiing\nshanghais\nshank\nshanked\nshanking\nshanks\nshantey\nshanteys\nshanti\nshanties\nshantih\nshantihs\nshantis\nshantung\nshantungs\nshanty\nshapable\nshape\nshapeable\nshaped\nshapeless\nshapelessly\nshapelessness\nshapelier\nshapeliest\nshapely\nshapen\nshaper\nshapers\nshapes\nshapeup\nshapeups\nshaping\nsharable\nshard\nshards\nshare\nshareable\nsharecrop\nsharecropped\nsharecropper\nsharecroppers\nsharecropping\nsharecrops\nshared\nshareholder\nshareholders\nsharer\nsharers\nshares\nsharif\nsharifs\nsharing\nshark\nsharked\nsharker\nsharkers\nsharking\nsharks\nsharn\nsharns\nsharny\nsharp\nsharped\nsharpen\nsharpened\nsharpener\nsharpeners\nsharpening\nsharpens\nsharper\nsharpers\nsharpest\nsharpie\nsharpies\nsharping\nsharply\nsharpness\nsharps\nsharpshooter\nsharpshooters\nsharpshooting\nsharpy\nshashlik\nshashliks\nshaslik\nshasliks\nshat\nshatter\nshattered\nshattering\nshatteringly\nshatterproof\nshatters\nshaugh\nshaughs\nshaul\nshauled\nshauling\nshauls\nshavable\nshave\nshaved\nshaveling\nshavelings\nshaven\nshaver\nshavers\nshaves\nshavie\nshavies\nshaving\nshavings\nshaw\nshawed\nshawing\nshawl\nshawled\nshawling\nshawls\nshawm\nshawms\nshawn\nshaws\nshay\nshays\nshe\nshea\nsheaf\nsheafed\nsheafing\nsheafs\nsheal\nshealing\nshealings\nsheals\nshear\nsheared\nshearer\nshearers\nshearing\nshears\nsheas\nsheath\nsheathe\nsheathed\nsheather\nsheathers\nsheathes\nsheathing\nsheaths\nsheave\nsheaved\nsheaves\nsheaving\nshebang\nshebangs\nshebean\nshebeans\nshebeen\nshebeens\nshed\nshedable\nshedded\nshedder\nshedders\nshedding\nsheds\nsheen\nsheened\nsheeney\nsheeneys\nsheenful\nsheenie\nsheenier\nsheenies\nsheeniest\nsheening\nsheens\nsheeny\nsheep\nsheepdog\nsheepdogs\nsheepherder\nsheepherders\nsheepish\nsheepishly\nsheepishness\nsheepman\nsheepmen\nsheepskin\nsheepskins\nsheer\nsheered\nsheerer\nsheerest\nsheering\nsheerly\nsheerness\nsheers\nsheet\nsheeted\nsheeter\nsheeters\nsheetfed\nsheeting\nsheetings\nsheets\nsheeve\nsheeves\nshegetz\nsheik\nsheikdom\nsheikdoms\nsheikh\nsheikhdom\nsheikhdoms\nsheikhs\nsheiks\nsheitan\nsheitans\nshekel\nshekels\nshelduck\nshelducks\nshelf\nshelfful\nshelffuls\nshell\nshellac\nshellack\nshellacked\nshellacking\nshellackings\nshellacks\nshellacs\nshelled\nsheller\nshellers\nshellfish\nshellfisheries\nshellfishery\nshellier\nshelliest\nshelling\nshells\nshelly\nshelter\nsheltered\nsheltering\nshelterless\nshelters\nsheltie\nshelties\nshelty\nshelve\nshelved\nshelver\nshelvers\nshelves\nshelvier\nshelviest\nshelving\nshelvings\nshelvy\nshenanigan\nshenanigans\nshend\nshending\nshends\nshent\nsheol\nsheols\nshepherd\nshepherded\nshepherdess\nshepherdesses\nshepherding\nshepherds\nsherbert\nsherberts\nsherbet\nsherbets\nsherd\nsherds\nshereef\nshereefs\nsherif\nsheriff\nsheriffs\nsherifs\nsherlock\nsherlocks\nsheroot\nsheroots\nsherries\nsherris\nsherrises\nsherry\nshes\nshetland\nshetlands\nsheuch\nsheuchs\nsheugh\nsheughs\nshew\nshewed\nshewer\nshewers\nshewing\nshewn\nshews\nshh\nshibah\nshibahs\nshibboleth\nshibboleths\nshicksa\nshicksas\nshied\nshiel\nshield\nshielded\nshielder\nshielders\nshielding\nshields\nshieling\nshielings\nshiels\nshier\nshiers\nshies\nshiest\nshift\nshifted\nshifter\nshifters\nshiftier\nshiftiest\nshiftily\nshiftiness\nshifting\nshiftless\nshiftlessly\nshiftlessness\nshifts\nshifty\nshigella\nshigellae\nshigellas\nshikar\nshikaree\nshikarees\nshikari\nshikaris\nshikarred\nshikarring\nshikars\nshiksa\nshiksas\nshikse\nshikses\nshilingi\nshill\nshillala\nshillalas\nshilled\nshillelagh\nshillelaghs\nshilling\nshillings\nshills\nshilpit\nshily\nshim\nshimmed\nshimmer\nshimmered\nshimmering\nshimmers\nshimmery\nshimmied\nshimmies\nshimming\nshimmy\nshimmying\nshims\nshin\nshinbone\nshinbones\nshindies\nshindig\nshindigs\nshindy\nshindys\nshine\nshined\nshiner\nshiners\nshines\nshingle\nshingled\nshingler\nshinglers\nshingles\nshingling\nshingly\nshinier\nshiniest\nshinily\nshininess\nshining\nshinleaf\nshinleafs\nshinleaves\nshinned\nshinneries\nshinnery\nshinney\nshinneys\nshinnied\nshinnies\nshinning\nshinny\nshinnying\nshins\nshiny\nship\nshipboard\nshipboards\nshipbuilder\nshipbuilders\nshipbuilding\nshiplap\nshiplaps\nshipload\nshiploads\nshipman\nshipmate\nshipmates\nshipmen\nshipment\nshipments\nshipowner\nshipowners\nshippable\nshipped\nshippen\nshippens\nshipper\nshippers\nshipping\nshippings\nshippon\nshippons\nships\nshipshape\nshipside\nshipsides\nshipway\nshipways\nshipworm\nshipworms\nshipwreck\nshipwrecked\nshipwrecking\nshipwrecks\nshipwright\nshipwrights\nshipyard\nshipyards\nshire\nshires\nshirk\nshirked\nshirker\nshirkers\nshirking\nshirks\nshirr\nshirred\nshirring\nshirrings\nshirrs\nshirt\nshirtier\nshirtiest\nshirting\nshirtings\nshirts\nshirttail\nshirttails\nshirtwaist\nshirtwaists\nshirty\nshist\nshists\nshit\nshits\nshittah\nshittahs\nshitted\nshittim\nshittims\nshitting\nshiv\nshiva\nshivah\nshivahs\nshivaree\nshivareed\nshivareeing\nshivarees\nshivas\nshive\nshiver\nshivered\nshiverer\nshiverers\nshivering\nshivers\nshivery\nshives\nshivs\nshkotzim\nshlemiel\nshlemiels\nshlep\nshlock\nshlocks\nshmo\nshmoes\nshnaps\nshoal\nshoaled\nshoaler\nshoalest\nshoalier\nshoaliest\nshoaling\nshoals\nshoaly\nshoat\nshoats\nshock\nshockable\nshocked\nshocker\nshockers\nshocking\nshockingly\nshockproof\nshocks\nshod\nshodden\nshoddier\nshoddies\nshoddiest\nshoddily\nshoddiness\nshoddy\nshoe\nshoebill\nshoebills\nshoed\nshoehorn\nshoehorned\nshoehorning\nshoehorns\nshoeing\nshoelace\nshoelaces\nshoemaker\nshoemakers\nshoepac\nshoepack\nshoepacks\nshoepacs\nshoer\nshoers\nshoes\nshoestring\nshoestrings\nshoetree\nshoetrees\nshofar\nshofars\nshofroth\nshog\nshogged\nshogging\nshogs\nshogun\nshogunal\nshoguns\nshoji\nshojis\nsholom\nshone\nshoo\nshooed\nshooflies\nshoofly\nshooing\nshook\nshooks\nshool\nshooled\nshooling\nshools\nshoon\nshoos\nshoot\nshooter\nshooters\nshooting\nshootings\nshoots\nshop\nshopboy\nshopboys\nshopgirl\nshopgirls\nshophar\nshophars\nshophroth\nshopkeeper\nshopkeepers\nshoplift\nshoplifted\nshoplifter\nshoplifters\nshoplifting\nshoplifts\nshopman\nshopmen\nshoppe\nshopped\nshopper\nshoppers\nshoppes\nshopping\nshoppings\nshops\nshoptalk\nshoptalks\nshopworn\nshoran\nshorans\nshore\nshored\nshoreline\nshorelines\nshores\nshoreward\nshorewards\nshoring\nshorings\nshorl\nshorls\nshorn\nshort\nshortage\nshortages\nshortchange\nshortchanged\nshortchanger\nshortchangers\nshortchanges\nshortchanging\nshortcoming\nshortcomings\nshortcut\nshortcuts\nshorted\nshorten\nshortened\nshortener\nshorteners\nshortening\nshortens\nshorter\nshortest\nshortfall\nshortfalls\nshorthand\nshorthanded\nshorthands\nshorthorn\nshorthorns\nshortia\nshortias\nshortie\nshorties\nshorting\nshortish\nshortly\nshortness\nshorts\nshortsighted\nshortsightedly\nshortsightedness\nshortstop\nshortstops\nshortwave\nshortwaves\nshorty\nshot\nshote\nshotes\nshotgun\nshotgunned\nshotgunning\nshotguns\nshots\nshott\nshotted\nshotten\nshotting\nshotts\nshould\nshoulder\nshouldered\nshouldering\nshoulders\nshouldest\nshouldst\nshout\nshouted\nshouter\nshouters\nshouting\nshouts\nshove\nshoved\nshovel\nshoveled\nshoveler\nshovelers\nshovelful\nshovelfuls\nshoveling\nshovelled\nshoveller\nshovellers\nshovelling\nshovels\nshover\nshovers\nshoves\nshoving\nshow\nshowboat\nshowboated\nshowboating\nshowboats\nshowcase\nshowcased\nshowcases\nshowcasing\nshowdown\nshowdowns\nshowed\nshower\nshowered\nshowering\nshowers\nshowery\nshowgirl\nshowgirls\nshowier\nshowiest\nshowily\nshowiness\nshowing\nshowings\nshowman\nshowmanship\nshowmen\nshown\nshowoff\nshowoffs\nshowpiece\nshowpieces\nshowplace\nshowplaces\nshowroom\nshowrooms\nshows\nshowy\nshoyu\nshrank\nshrapnel\nshred\nshredded\nshredder\nshredders\nshredding\nshreds\nshrew\nshrewd\nshrewder\nshrewdest\nshrewdly\nshrewdness\nshrewed\nshrewing\nshrewish\nshrewishly\nshrewishness\nshrews\nshri\nshriek\nshrieked\nshrieker\nshriekers\nshriekier\nshriekiest\nshrieking\nshrieks\nshrieky\nshrieval\nshrieve\nshrieved\nshrieves\nshrieving\nshrift\nshrifts\nshrike\nshrikes\nshrill\nshrilled\nshriller\nshrillest\nshrilling\nshrillness\nshrills\nshrilly\nshrimp\nshrimped\nshrimper\nshrimpers\nshrimpier\nshrimpiest\nshrimping\nshrimps\nshrimpy\nshrine\nshrined\nshrines\nshrining\nshrink\nshrinkable\nshrinkage\nshrinkages\nshrinker\nshrinkers\nshrinking\nshrinks\nshris\nshrive\nshrived\nshrivel\nshriveled\nshriveling\nshrivelled\nshrivelling\nshrivels\nshriven\nshriver\nshrivers\nshrives\nshriving\nshroff\nshroffed\nshroffing\nshroffs\nshroud\nshrouded\nshrouding\nshrouds\nshrove\nshrub\nshrubberies\nshrubbery\nshrubbier\nshrubbiest\nshrubby\nshrubs\nshrug\nshrugged\nshrugging\nshrugs\nshrunk\nshrunken\nshtetel\nshtetl\nshtetlach\nshtick\nshticks\nshtik\nshuck\nshucked\nshucker\nshuckers\nshucking\nshuckings\nshucks\nshudder\nshuddered\nshuddering\nshudders\nshuddery\nshuffle\nshuffleboard\nshuffleboards\nshuffled\nshuffler\nshufflers\nshuffles\nshuffling\nshul\nshuln\nshuls\nshun\nshunned\nshunner\nshunners\nshunning\nshunpike\nshunpikes\nshuns\nshunt\nshunted\nshunter\nshunters\nshunting\nshunts\nshush\nshushed\nshushes\nshushing\nshut\nshutdown\nshutdowns\nshute\nshuted\nshutes\nshuteye\nshuteyes\nshuting\nshutoff\nshutoffs\nshutout\nshutouts\nshuts\nshutter\nshuttered\nshuttering\nshutterless\nshutters\nshutting\nshuttle\nshuttlecock\nshuttlecocked\nshuttlecocking\nshuttlecocks\nshuttled\nshuttles\nshuttling\nshwanpan\nshwanpans\nshy\nshyer\nshyers\nshyest\nshying\nshylock\nshylocked\nshylocking\nshylocks\nshyly\nshyness\nshynesses\nshyster\nshysters\nsi\nsial\nsialic\nsialoid\nsials\nsiamang\nsiamangs\nsiamese\nsiameses\nsib\nsibb\nsibbs\nsibilance\nsibilant\nsibilantly\nsibilants\nsibilate\nsibilated\nsibilates\nsibilating\nsibling\nsiblings\nsibs\nsibyl\nsibylic\nsibyllic\nsibyls\nsic\nsiccan\nsicced\nsiccing\nsice\nsices\nsick\nsickbay\nsickbays\nsickbed\nsickbeds\nsicked\nsicken\nsickened\nsickener\nsickeners\nsickening\nsickeningly\nsickens\nsicker\nsickerly\nsickest\nsicking\nsickish\nsickishly\nsickishness\nsickle\nsickled\nsickles\nsicklied\nsicklier\nsicklies\nsickliest\nsicklily\nsickliness\nsickling\nsickly\nsicklying\nsickness\nsicknesses\nsicko\nsickroom\nsickrooms\nsicks\nsics\nsiddur\nsiddurim\nsiddurs\nside\nsidearm\nsideband\nsidebands\nsideboard\nsideboards\nsideburns\nsidecar\nsidecars\nsided\nsidehill\nsidehills\nsidekick\nsidekicks\nsidelight\nsidelights\nsideline\nsidelined\nsideliner\nsideliners\nsidelines\nsideling\nsidelining\nsidelong\nsideman\nsidemen\nsidereal\nsiderite\nsiderites\nsides\nsidesaddle\nsidesaddles\nsideshow\nsideshows\nsideslip\nsideslipped\nsideslipping\nsideslips\nsidespin\nsidespins\nsidesplitting\nsidesplittingly\nsidestep\nsidestepped\nsidestepping\nsidesteps\nsidestroke\nsidestrokes\nsideswipe\nsideswiped\nsideswipes\nsideswiping\nsidetrack\nsidetracked\nsidetracking\nsidetracks\nsidewalk\nsidewalks\nsidewall\nsidewalls\nsideward\nsideway\nsideways\nsidewise\nsiding\nsidings\nsidle\nsidled\nsidler\nsidlers\nsidles\nsidling\nsiege\nsieged\nsieges\nsieging\nsiemens\nsienite\nsienites\nsienna\nsiennas\nsierozem\nsierozems\nsierra\nsierran\nsierras\nsies\nsiesta\nsiestas\nsieur\nsieurs\nsieve\nsieved\nsieves\nsieving\nsiffleur\nsiffleurs\nsift\nsifted\nsifter\nsifters\nsifting\nsiftings\nsifts\nsiganid\nsiganids\nsigh\nsighed\nsigher\nsighers\nsighing\nsighless\nsighlike\nsighs\nsight\nsighted\nsighter\nsighters\nsighting\nsightless\nsightlessly\nsightlessness\nsightlier\nsightliest\nsightliness\nsightly\nsights\nsightsaw\nsightsee\nsightseeing\nsightseen\nsightseer\nsightseers\nsightsees\nsigil\nsigils\nsigloi\nsiglos\nsigma\nsigmas\nsigmate\nsigmoid\nsigmoids\nsign\nsignal\nsignaled\nsignaler\nsignalers\nsignaling\nsignalize\nsignalized\nsignalizes\nsignalizing\nsignalled\nsignaller\nsignallers\nsignalling\nsignally\nsignalman\nsignalmen\nsignals\nsignatories\nsignatory\nsignature\nsignatures\nsignboard\nsignboards\nsigned\nsigner\nsigners\nsignet\nsigneted\nsigneting\nsignets\nsignificance\nsignificancy\nsignificant\nsignificantly\nsignification\nsignifications\nsignificative\nsignified\nsignifies\nsignify\nsignifying\nsigning\nsignior\nsigniori\nsigniories\nsigniors\nsigniory\nsignor\nsignora\nsignoras\nsignore\nsignori\nsignories\nsignorina\nsignorinas\nsignorine\nsignors\nsignory\nsignpost\nsignposted\nsignposting\nsignposts\nsigns\nsike\nsiker\nsikes\nsilage\nsilages\nsilane\nsilanes\nsild\nsilds\nsilence\nsilenced\nsilencer\nsilencers\nsilences\nsilencing\nsileni\nsilent\nsilenter\nsilentest\nsilently\nsilentness\nsilents\nsilenus\nsilesia\nsilesias\nsilex\nsilexes\nsilhouette\nsilhouetted\nsilhouettes\nsilhouetting\nsilica\nsilicas\nsilicate\nsilicates\nsilicic\nsilicide\nsilicides\nsilicification\nsilicified\nsilicifies\nsilicify\nsilicifying\nsilicium\nsiliciums\nsilicle\nsilicles\nsilicon\nsilicone\nsilicones\nsilicons\nsiliqua\nsiliquae\nsilique\nsiliques\nsilk\nsilked\nsilken\nsilkier\nsilkiest\nsilkily\nsilkiness\nsilking\nsilklike\nsilks\nsilkweed\nsilkweeds\nsilkworm\nsilkworms\nsilky\nsill\nsillabub\nsillabubs\nsiller\nsillers\nsillibibs\nsillibub\nsillibubs\nsillier\nsillies\nsilliest\nsillily\nsilliness\nsills\nsilly\nsilo\nsiloed\nsiloing\nsilos\nsiloxane\nsiloxanes\nsilt\nsiltation\nsilted\nsiltier\nsiltiest\nsilting\nsilts\nsilty\nsilurid\nsilurids\nsiluroid\nsiluroids\nsilva\nsilvae\nsilvan\nsilvans\nsilvas\nsilver\nsilvered\nsilverer\nsilverers\nsilverfish\nsilvering\nsilverly\nsilvern\nsilvers\nsilversmith\nsilversmiths\nsilverware\nsilverwares\nsilvery\nsilvical\nsilvics\nsilviculture\nsim\nsima\nsimar\nsimars\nsimaruba\nsimarubas\nsimas\nsimazine\nsimazines\nsimian\nsimians\nsimilar\nsimilarities\nsimilarity\nsimilarly\nsimile\nsimiles\nsimilitude\nsimilitudes\nsimioid\nsimious\nsimitar\nsimitars\nsimlin\nsimlins\nsimmer\nsimmered\nsimmering\nsimmers\nsimnel\nsimnels\nsimoleon\nsimoleons\nsimoniac\nsimoniacs\nsimonies\nsimonist\nsimonists\nsimonize\nsimonized\nsimonizes\nsimonizing\nsimony\nsimoom\nsimooms\nsimoon\nsimoons\nsimp\nsimper\nsimpered\nsimperer\nsimperers\nsimpering\nsimpers\nsimple\nsimpleness\nsimpler\nsimples\nsimplest\nsimpleton\nsimpletons\nsimplex\nsimplexes\nsimplices\nsimplicia\nsimplicities\nsimplicity\nsimplification\nsimplifications\nsimplified\nsimplifier\nsimplifiers\nsimplifies\nsimplify\nsimplifying\nsimplism\nsimplisms\nsimplistic\nsimplistically\nsimply\nsimps\nsims\nsimulant\nsimulants\nsimular\nsimulars\nsimulate\nsimulated\nsimulates\nsimulating\nsimulation\nsimulations\nsimulative\nsimulator\nsimulators\nsimulcast\nsimulcasting\nsimulcasts\nsimultaneities\nsimultaneity\nsimultaneous\nsimultaneously\nsimultaneousness\nsin\nsinapism\nsinapisms\nsince\nsincere\nsincerely\nsincerer\nsincerest\nsincerities\nsincerity\nsincipita\nsinciput\nsinciputs\nsine\nsinecure\nsinecures\nsines\nsinew\nsinewed\nsinewing\nsinews\nsinewy\nsinfonia\nsinfonie\nsinful\nsinfully\nsinfulness\nsing\nsingable\nsinge\nsinged\nsingeing\nsinger\nsingers\nsinges\nsinging\nsingle\nsingled\nsinglehood\nsingleness\nsingles\nsinglet\nsingleton\nsingletons\nsinglets\nsingling\nsingly\nsings\nsingsong\nsingsongs\nsingular\nsingularity\nsingularize\nsingularized\nsingularizes\nsingularizing\nsingularly\nsingulars\nsinh\nsinhs\nsinicize\nsinicized\nsinicizes\nsinicizing\nsinister\nsinisterly\nsink\nsinkable\nsinkage\nsinkages\nsinker\nsinkers\nsinkhole\nsinkholes\nsinking\nsinks\nsinless\nsinned\nsinner\nsinners\nsinning\nsinologies\nsinology\nsinopia\nsinopias\nsinopie\nsins\nsinsyne\nsinter\nsintered\nsintering\nsinters\nsinuate\nsinuated\nsinuates\nsinuating\nsinuosities\nsinuosity\nsinuous\nsinuously\nsinuousness\nsinus\nsinuses\nsinusoid\nsinusoids\nsip\nsipe\nsiped\nsipes\nsiphon\nsiphonal\nsiphoned\nsiphonic\nsiphoning\nsiphons\nsiping\nsipped\nsipper\nsippers\nsippet\nsippets\nsipping\nsips\nsir\nsirdar\nsirdars\nsire\nsired\nsiree\nsirees\nsiren\nsirenian\nsirenians\nsirens\nsires\nsiring\nsirloin\nsirloins\nsirocco\nsiroccos\nsirra\nsirrah\nsirrahs\nsirras\nsirree\nsirrees\nsirs\nsirup\nsirups\nsirupy\nsirvente\nsirventes\nsis\nsisal\nsisals\nsises\nsiskin\nsiskins\nsissier\nsissiest\nsissified\nsissy\nsissyish\nsister\nsistered\nsisterhood\nsisterhoods\nsistering\nsisterly\nsisters\nsistra\nsistroid\nsistrum\nsistrums\nsit\nsitar\nsitarist\nsitarists\nsitars\nsite\nsited\nsites\nsith\nsithence\nsithens\nsiting\nsitologies\nsitology\nsits\nsitten\nsitter\nsitters\nsitting\nsittings\nsituate\nsituated\nsituates\nsituating\nsituation\nsituational\nsituations\nsitup\nsitus\nsituses\nsitzmark\nsitzmarks\nsiver\nsivers\nsix\nsixes\nsixfold\nsixmo\nsixmos\nsixpence\nsixpences\nsixpenny\nsixte\nsixteen\nsixteens\nsixteenth\nsixteenths\nsixtes\nsixth\nsixthly\nsixths\nsixties\nsixtieth\nsixtieths\nsixty\nsizable\nsizableness\nsizably\nsizar\nsizars\nsize\nsizeable\nsizeably\nsized\nsizer\nsizers\nsizes\nsizier\nsiziest\nsiziness\nsizinesses\nsizing\nsizings\nsizy\nsizzle\nsizzled\nsizzler\nsizzlers\nsizzles\nsizzling\nska\nskag\nskags\nskald\nskaldic\nskalds\nskas\nskat\nskate\nskateboard\nskateboarder\nskateboarders\nskateboarding\nskateboards\nskated\nskater\nskaters\nskates\nskating\nskatings\nskatol\nskatole\nskatoles\nskatols\nskats\nskean\nskeane\nskeanes\nskeans\nskee\nskeed\nskeeing\nskeen\nskeens\nskees\nskeet\nskeeter\nskeeters\nskeets\nskeg\nskegs\nskeigh\nskein\nskeined\nskeining\nskeins\nskeletal\nskeletally\nskeleton\nskeletonize\nskeletonized\nskeletonizes\nskeletonizing\nskeletons\nskellum\nskellums\nskelm\nskelp\nskelped\nskelping\nskelpit\nskelps\nskelter\nskeltered\nskeltering\nskelters\nskene\nskenes\nskep\nskeps\nskepsis\nskepsises\nskeptic\nskeptical\nskeptically\nskepticism\nskepticisms\nskeptics\nskerries\nskerry\nsketch\nsketchbook\nsketchbooks\nsketched\nsketcher\nsketchers\nsketches\nsketchier\nsketchiest\nsketchily\nsketchiness\nsketching\nsketchy\nskew\nskewback\nskewbacks\nskewbald\nskewbalds\nskewed\nskewer\nskewered\nskewering\nskewers\nskewing\nskewness\nskewnesses\nskews\nski\nskiable\nskiagram\nskiagrams\nskibob\nskibobs\nskid\nskidded\nskidder\nskidders\nskiddier\nskiddiest\nskidding\nskiddoo\nskiddooed\nskiddooing\nskiddoos\nskiddy\nskidoo\nskidooed\nskidooing\nskidoos\nskids\nskidway\nskidways\nskied\nskier\nskiers\nskies\nskiey\nskiff\nskiffle\nskiffled\nskiffles\nskiffling\nskiffs\nskiing\nskiings\nskijorer\nskijorers\nskilful\nskilfully\nskilfulness\nskill\nskilled\nskilless\nskillessness\nskillet\nskillets\nskillful\nskillfully\nskillfulness\nskilling\nskillings\nskills\nskim\nskimmed\nskimmer\nskimmers\nskimming\nskimmings\nskimo\nskimos\nskimp\nskimped\nskimpier\nskimpiest\nskimpily\nskimpiness\nskimping\nskimps\nskimpy\nskims\nskin\nskinflint\nskinflints\nskinful\nskinfuls\nskinhead\nskinheads\nskink\nskinked\nskinker\nskinkers\nskinking\nskinks\nskinless\nskinlike\nskinned\nskinner\nskinners\nskinnier\nskinniest\nskinning\nskinny\nskins\nskint\nskintight\nskioring\nskiorings\nskip\nskipjack\nskipjacks\nskiplane\nskiplanes\nskipped\nskipper\nskippered\nskippering\nskippers\nskippet\nskippets\nskipping\nskips\nskirl\nskirled\nskirling\nskirls\nskirmish\nskirmished\nskirmisher\nskirmishers\nskirmishes\nskirmishing\nskirr\nskirred\nskirret\nskirrets\nskirring\nskirrs\nskirt\nskirted\nskirter\nskirters\nskirting\nskirtings\nskirts\nskis\nskit\nskite\nskited\nskites\nskiting\nskits\nskitter\nskittered\nskitterier\nskitteriest\nskittering\nskitters\nskittery\nskittish\nskittishly\nskittishness\nskittle\nskittles\nskive\nskived\nskiver\nskivers\nskives\nskiving\nskivvies\nskivvy\nskiwear\nskiwears\nsklent\nsklented\nsklenting\nsklents\nskoal\nskoaled\nskoaling\nskoals\nskookum\nskreegh\nskreeghed\nskreeghing\nskreeghs\nskreigh\nskreighed\nskreighing\nskreighs\nskua\nskuas\nskulduggeries\nskulduggery\nskulk\nskulked\nskulker\nskulkers\nskulking\nskulks\nskull\nskullcap\nskullcaps\nskullduggeries\nskullduggery\nskulled\nskulls\nskunk\nskunked\nskunking\nskunks\nsky\nskyborne\nskycap\nskycaps\nskydive\nskydived\nskydiver\nskydivers\nskydives\nskydiving\nskydove\nskyed\nskyey\nskyhook\nskyhooks\nskying\nskyjack\nskyjacked\nskyjacker\nskyjackers\nskyjacking\nskyjacks\nskylark\nskylarked\nskylarking\nskylarks\nskylight\nskylights\nskyline\nskylines\nskyman\nskymen\nskyphoi\nskyphos\nskyrocket\nskyrocketed\nskyrocketing\nskyrockets\nskysail\nskysails\nskyscraper\nskyscrapers\nskyward\nskywards\nskyway\nskyways\nskywrite\nskywrites\nskywriting\nskywritings\nskywritten\nskywrote\nslab\nslabbed\nslabber\nslabbered\nslabbering\nslabbers\nslabbery\nslabbing\nslabs\nslack\nslacked\nslacken\nslackened\nslackening\nslackens\nslacker\nslackers\nslackest\nslacking\nslackly\nslackness\nslacks\nslag\nslagged\nslaggier\nslaggiest\nslagging\nslaggy\nslags\nslain\nslakable\nslake\nslaked\nslaker\nslakers\nslakes\nslaking\nslalom\nslalomed\nslaloming\nslaloms\nslam\nslammed\nslamming\nslams\nslander\nslandered\nslanderer\nslanderers\nslandering\nslanderous\nslanderously\nslanders\nslang\nslanged\nslangier\nslangiest\nslangily\nslanginess\nslanging\nslangs\nslangy\nslank\nslant\nslanted\nslanting\nslants\nslantways\nslantwise\nslap\nslapdash\nslapdashes\nslapjack\nslapjacks\nslapped\nslapper\nslappers\nslapping\nslaps\nslapstick\nslapsticks\nslash\nslashed\nslasher\nslashers\nslashes\nslashing\nslashingly\nslashings\nslat\nslatch\nslatches\nslate\nslated\nslater\nslaters\nslates\nslather\nslathered\nslathering\nslathers\nslatier\nslatiest\nslating\nslatings\nslats\nslatted\nslattern\nslatternly\nslatterns\nslatting\nslaty\nslaughter\nslaughtered\nslaughterhouse\nslaughterhouses\nslaughtering\nslaughterous\nslaughterously\nslaughters\nslave\nslaved\nslaver\nslavered\nslaverer\nslaverers\nslaveries\nslavering\nslavers\nslavery\nslaves\nslavey\nslaveys\nslaving\nslavish\nslavishly\nslavishness\nslaw\nslaws\nslay\nslayer\nslayers\nslaying\nslays\nsleave\nsleaved\nsleaves\nsleaving\nsleazier\nsleaziest\nsleazily\nsleaziness\nsleazy\nsled\nsledded\nsledder\nsledders\nsledding\nsleddings\nsledge\nsledged\nsledgehammer\nsledgehammered\nsledgehammering\nsledgehammers\nsledges\nsledging\nsleds\nsleek\nsleeked\nsleeken\nsleekened\nsleekening\nsleekens\nsleeker\nsleekest\nsleekier\nsleekiest\nsleeking\nsleekit\nsleekly\nsleekness\nsleeks\nsleeky\nsleep\nsleeper\nsleepers\nsleepier\nsleepiest\nsleepily\nsleepiness\nsleeping\nsleepings\nsleepless\nsleeplessly\nsleeplessness\nsleeps\nsleepwalk\nsleepwalked\nsleepwalker\nsleepwalkers\nsleepwalking\nsleepwalks\nsleepy\nsleet\nsleeted\nsleetier\nsleetiest\nsleeting\nsleets\nsleety\nsleeve\nsleeved\nsleeveless\nsleevelet\nsleevelets\nsleeves\nsleeving\nsleigh\nsleighed\nsleigher\nsleighers\nsleighing\nsleighs\nsleight\nsleights\nslender\nslenderer\nslenderest\nslenderize\nslenderized\nslenderizes\nslenderizing\nslenderly\nslenderness\nslept\nsleuth\nsleuthed\nsleuthing\nsleuths\nslew\nslewed\nslewing\nslews\nslice\nsliced\nslicer\nslicers\nslices\nslicing\nslick\nslicked\nslicker\nslickers\nslickest\nslicking\nslickly\nslickness\nslicks\nslid\nslidable\nslidden\nslide\nslider\nsliders\nslides\nslideway\nslideways\nsliding\nslier\nsliest\nslight\nslighted\nslighter\nslightest\nslighting\nslightingly\nslightly\nslightness\nslights\nslily\nslim\nslime\nslimed\nslimes\nslimier\nslimiest\nslimily\nsliminess\nsliming\nslimly\nslimmed\nslimmer\nslimmest\nslimming\nslimness\nslimnesses\nslimpsier\nslimpsiest\nslimpsy\nslims\nslimsier\nslimsiest\nslimsy\nslimy\nsling\nslinger\nslingers\nslinging\nslings\nslingshot\nslingshots\nslink\nslinkier\nslinkiest\nslinkily\nslinkiness\nslinking\nslinks\nslinky\nslip\nslipcase\nslipcases\nslipcover\nslipcovers\nslipe\nsliped\nslipes\nslipform\nslipformed\nslipforming\nslipforms\nsliping\nslipknot\nslipknots\nslipless\nslipout\nslipouts\nslipover\nslipovers\nslippage\nslippages\nslipped\nslipper\nslipperier\nslipperiest\nslipperiness\nslippers\nslippery\nslippier\nslippiest\nslipping\nslippy\nslips\nslipshod\nslipslop\nslipslops\nslipsole\nslipsoles\nslipstream\nslipstreams\nslipt\nslipup\nslipups\nslipware\nslipwares\nslipway\nslipways\nslit\nslither\nslithered\nslithering\nslithers\nslithery\nslitless\nslits\nslitted\nslitter\nslitters\nslitting\nsliver\nslivered\nsliverer\nsliverers\nslivering\nslivers\nslivovic\nslivovices\nslivovics\nslob\nslobber\nslobbered\nslobbering\nslobbers\nslobbery\nslobbish\nslobs\nsloe\nsloes\nslog\nslogan\nsloganeer\nsloganeers\nslogans\nslogged\nslogger\nsloggers\nslogging\nslogs\nsloid\nsloids\nslojd\nslojds\nsloop\nsloops\nslop\nslope\nsloped\nsloper\nslopers\nslopes\nsloping\nslopped\nsloppier\nsloppiest\nsloppily\nsloppiness\nslopping\nsloppy\nslops\nslopwork\nslopworks\nslosh\nsloshed\nsloshes\nsloshier\nsloshiest\nsloshing\nsloshy\nslot\nslotback\nslotbacks\nsloth\nslothful\nslothfully\nslothfulness\nsloths\nslots\nslotted\nslotting\nslouch\nslouched\nsloucher\nslouchers\nslouches\nslouchier\nslouchiest\nslouchily\nslouchiness\nslouching\nslouchy\nslough\nsloughed\nsloughier\nsloughiest\nsloughing\nsloughs\nsloughy\nsloven\nslovenlier\nslovenliest\nslovenly\nslovens\nslow\nslowdown\nslowdowns\nslowed\nslower\nslowest\nslowing\nslowish\nslowly\nslowness\nslownesses\nslowpoke\nslowpokes\nslows\nslowworm\nslowworms\nsloyd\nsloyds\nslub\nslubbed\nslubber\nslubbered\nslubbering\nslubbers\nslubbing\nslubbings\nslubs\nsludge\nsludges\nsludgier\nsludgiest\nsludgy\nslue\nslued\nslues\nsluff\nsluffed\nsluffing\nsluffs\nslug\nslugabed\nslugabeds\nslugfest\nslugfests\nsluggard\nsluggardly\nsluggards\nslugged\nslugger\nsluggers\nslugging\nsluggish\nsluggishly\nsluggishness\nslugs\nsluice\nsluiced\nsluices\nsluicing\nsluicy\nsluing\nslum\nslumber\nslumbered\nslumbering\nslumberous\nslumbers\nslumbery\nslumbrous\nslumgum\nslumgums\nslumlord\nslumlords\nslummed\nslummer\nslummers\nslummier\nslummiest\nslumming\nslummy\nslump\nslumped\nslumping\nslumps\nslums\nslung\nslunk\nslur\nslurb\nslurban\nslurbs\nslurp\nslurped\nslurping\nslurps\nslurred\nslurried\nslurries\nslurring\nslurry\nslurrying\nslurs\nslush\nslushed\nslushes\nslushier\nslushiest\nslushily\nslushiness\nslushing\nslushy\nslut\nsluts\nsluttish\nsly\nslyboots\nslyer\nslyest\nslyly\nslyness\nslynesses\nslype\nslypes\nsmack\nsmacked\nsmacker\nsmackers\nsmacking\nsmacks\nsmall\nsmallage\nsmallages\nsmaller\nsmallest\nsmallish\nsmallness\nsmallpox\nsmallpoxes\nsmalls\nsmalt\nsmalti\nsmaltine\nsmaltines\nsmaltite\nsmaltites\nsmalto\nsmaltos\nsmalts\nsmaragd\nsmaragde\nsmaragdes\nsmaragds\nsmarm\nsmarmier\nsmarmiest\nsmarms\nsmarmy\nsmart\nsmarted\nsmarten\nsmartened\nsmartening\nsmartens\nsmarter\nsmartest\nsmartie\nsmarties\nsmarting\nsmartly\nsmartness\nsmarts\nsmarty\nsmash\nsmashed\nsmasher\nsmashers\nsmashes\nsmashing\nsmashup\nsmashups\nsmatter\nsmattered\nsmatterer\nsmatterers\nsmattering\nsmatterings\nsmatters\nsmaze\nsmazes\nsmear\nsmeared\nsmearer\nsmearers\nsmearier\nsmeariest\nsmearing\nsmears\nsmeary\nsmectic\nsmeddum\nsmeddums\nsmeek\nsmeeked\nsmeeking\nsmeeks\nsmegma\nsmegmas\nsmell\nsmelled\nsmeller\nsmellers\nsmellier\nsmelliest\nsmelling\nsmells\nsmelly\nsmelt\nsmelted\nsmelter\nsmelteries\nsmelters\nsmeltery\nsmelting\nsmelts\nsmerk\nsmerked\nsmerking\nsmerks\nsmew\nsmews\nsmidgen\nsmidgens\nsmidgeon\nsmidgeons\nsmidgin\nsmidgins\nsmilax\nsmilaxes\nsmile\nsmiled\nsmileless\nsmiler\nsmilers\nsmiles\nsmiling\nsmilingly\nsmirch\nsmirched\nsmirches\nsmirching\nsmirk\nsmirked\nsmirker\nsmirkers\nsmirkier\nsmirkiest\nsmirking\nsmirks\nsmirky\nsmit\nsmite\nsmiter\nsmiters\nsmites\nsmith\nsmitheries\nsmithery\nsmithies\nsmiths\nsmithy\nsmiting\nsmitten\nsmock\nsmocked\nsmocking\nsmockings\nsmocks\nsmog\nsmoggier\nsmoggiest\nsmoggy\nsmogless\nsmogs\nsmokable\nsmoke\nsmokeable\nsmoked\nsmokeless\nsmokepot\nsmokepots\nsmoker\nsmokers\nsmokes\nsmokestack\nsmokestacks\nsmokey\nsmokier\nsmokiest\nsmokily\nsmoking\nsmoky\nsmolder\nsmoldered\nsmoldering\nsmolders\nsmolt\nsmolts\nsmooch\nsmooched\nsmooches\nsmooching\nsmoochy\nsmooth\nsmoothbore\nsmoothbores\nsmoothed\nsmoothen\nsmoothened\nsmoothening\nsmoothens\nsmoother\nsmoothers\nsmoothest\nsmoothie\nsmoothies\nsmoothing\nsmoothly\nsmoothness\nsmooths\nsmoothy\nsmorgasbord\nsmorgasbords\nsmote\nsmother\nsmothered\nsmothering\nsmothers\nsmothery\nsmoulder\nsmouldered\nsmouldering\nsmoulders\nsmudge\nsmudged\nsmudges\nsmudgier\nsmudgiest\nsmudgily\nsmudging\nsmudgy\nsmug\nsmugger\nsmuggest\nsmuggle\nsmuggled\nsmuggler\nsmugglers\nsmuggles\nsmuggling\nsmugly\nsmugness\nsmugnesses\nsmut\nsmutch\nsmutched\nsmutches\nsmutchier\nsmutchiest\nsmutching\nsmutchy\nsmuts\nsmutted\nsmuttier\nsmuttiest\nsmuttily\nsmutting\nsmutty\nsnack\nsnacked\nsnacking\nsnacks\nsnaffle\nsnaffled\nsnaffles\nsnaffling\nsnafu\nsnafued\nsnafuing\nsnafus\nsnag\nsnagged\nsnaggier\nsnaggiest\nsnagging\nsnaggy\nsnaglike\nsnags\nsnail\nsnailed\nsnailing\nsnaillike\nsnails\nsnake\nsnakebite\nsnakebites\nsnaked\nsnakelike\nsnakes\nsnakeskin\nsnakeskins\nsnakier\nsnakiest\nsnakily\nsnaking\nsnaky\nsnap\nsnapback\nsnapbacks\nsnapless\nsnapped\nsnapper\nsnappers\nsnappier\nsnappiest\nsnappily\nsnapping\nsnappish\nsnappishly\nsnappishness\nsnappy\nsnaps\nsnapshot\nsnapshots\nsnapshotted\nsnapshotting\nsnapweed\nsnapweeds\nsnare\nsnared\nsnarer\nsnarers\nsnares\nsnaring\nsnark\nsnarks\nsnarl\nsnarled\nsnarler\nsnarlers\nsnarlier\nsnarliest\nsnarling\nsnarls\nsnarly\nsnash\nsnashes\nsnatch\nsnatched\nsnatcher\nsnatchers\nsnatches\nsnatchier\nsnatchiest\nsnatching\nsnatchy\nsnath\nsnathe\nsnathes\nsnaths\nsnaw\nsnawed\nsnawing\nsnaws\nsnazzier\nsnazziest\nsnazzy\nsneak\nsneaked\nsneaker\nsneakers\nsneakier\nsneakiest\nsneakily\nsneakiness\nsneaking\nsneakingly\nsneaks\nsneaky\nsneap\nsneaped\nsneaping\nsneaps\nsneck\nsnecks\nsned\nsnedded\nsnedding\nsneds\nsneer\nsneered\nsneerer\nsneerers\nsneerful\nsneering\nsneers\nsneesh\nsneeshes\nsneeze\nsneezed\nsneezer\nsneezers\nsneezes\nsneezier\nsneeziest\nsneezing\nsneezy\nsnell\nsneller\nsnellest\nsnells\nsnib\nsnibbed\nsnibbing\nsnibs\nsnick\nsnicked\nsnicker\nsnickered\nsnickerer\nsnickerers\nsnickering\nsnickers\nsnickery\nsnicking\nsnicks\nsnide\nsnidely\nsnideness\nsnider\nsnidest\nsniff\nsniffed\nsniffer\nsniffers\nsniffier\nsniffiest\nsniffily\nsniffing\nsniffish\nsniffle\nsniffled\nsniffler\nsnifflers\nsniffles\nsniffling\nsniffs\nsniffy\nsnifter\nsnifters\nsnigger\nsniggered\nsniggering\nsniggers\nsniggle\nsniggled\nsniggler\nsnigglers\nsniggles\nsniggling\nsnip\nsnipe\nsniped\nsniper\nsnipers\nsnipes\nsniping\nsnipped\nsnipper\nsnippers\nsnippet\nsnippetier\nsnippetiest\nsnippets\nsnippety\nsnippier\nsnippiest\nsnippily\nsnipping\nsnippy\nsnips\nsnit\nsnitch\nsnitched\nsnitcher\nsnitchers\nsnitches\nsnitching\nsnits\nsnivel\nsniveled\nsniveler\nsnivelers\nsniveling\nsnivelled\nsnivelling\nsnivels\nsnob\nsnobberies\nsnobbery\nsnobbier\nsnobbiest\nsnobbily\nsnobbish\nsnobbishly\nsnobbishness\nsnobbism\nsnobbisms\nsnobby\nsnobs\nsnog\nsnogs\nsnood\nsnooded\nsnooding\nsnoods\nsnook\nsnooked\nsnooker\nsnookers\nsnooking\nsnooks\nsnool\nsnooled\nsnooling\nsnools\nsnoop\nsnooped\nsnooper\nsnoopers\nsnoopier\nsnoopiest\nsnoopily\nsnooping\nsnoops\nsnoopy\nsnoot\nsnooted\nsnootier\nsnootiest\nsnootily\nsnooting\nsnoots\nsnooty\nsnooze\nsnoozed\nsnoozer\nsnoozers\nsnoozes\nsnoozier\nsnooziest\nsnoozing\nsnoozle\nsnoozled\nsnoozles\nsnoozling\nsnoozy\nsnore\nsnored\nsnorer\nsnorers\nsnores\nsnoring\nsnorkel\nsnorkeled\nsnorkeling\nsnorkels\nsnort\nsnorted\nsnorter\nsnorters\nsnorting\nsnorts\nsnot\nsnots\nsnottier\nsnottiest\nsnottily\nsnotty\nsnout\nsnouted\nsnoutier\nsnoutiest\nsnouting\nsnoutish\nsnouts\nsnouty\nsnow\nsnowball\nsnowballed\nsnowballing\nsnowballs\nsnowbank\nsnowbanks\nsnowbell\nsnowbells\nsnowbird\nsnowbirds\nsnowblower\nsnowblowers\nsnowbound\nsnowbush\nsnowbushes\nsnowcap\nsnowcaps\nsnowdrift\nsnowdrifts\nsnowdrop\nsnowdrops\nsnowed\nsnowfall\nsnowfalls\nsnowflake\nsnowflakes\nsnowier\nsnowiest\nsnowily\nsnowiness\nsnowing\nsnowland\nsnowlands\nsnowless\nsnowlike\nsnowman\nsnowmelt\nsnowmelts\nsnowmen\nsnowmobile\nsnowmobiles\nsnowpack\nsnowpacks\nsnowplow\nsnowplowed\nsnowplowing\nsnowplows\nsnows\nsnowshed\nsnowsheds\nsnowshoe\nsnowshoed\nsnowshoeing\nsnowshoes\nsnowstorm\nsnowstorms\nsnowsuit\nsnowsuits\nsnowy\nsnub\nsnubbed\nsnubber\nsnubbers\nsnubbier\nsnubbiest\nsnubbing\nsnubby\nsnubness\nsnubnesses\nsnubs\nsnuck\nsnuff\nsnuffbox\nsnuffboxes\nsnuffed\nsnuffer\nsnuffers\nsnuffier\nsnuffiest\nsnuffily\nsnuffing\nsnuffle\nsnuffled\nsnuffler\nsnufflers\nsnuffles\nsnufflier\nsnuffliest\nsnuffling\nsnuffly\nsnuffs\nsnuffy\nsnug\nsnugged\nsnugger\nsnuggeries\nsnuggery\nsnuggest\nsnugging\nsnuggle\nsnuggled\nsnuggles\nsnuggling\nsnugly\nsnugness\nsnugnesses\nsnugs\nsnye\nsnyes\nso\nsoak\nsoakage\nsoakages\nsoaked\nsoaker\nsoakers\nsoaking\nsoaks\nsoap\nsoapbark\nsoapbarks\nsoapbox\nsoapboxes\nsoaped\nsoapier\nsoapiest\nsoapily\nsoapiness\nsoaping\nsoapless\nsoaplike\nsoaps\nsoapstone\nsoapstones\nsoapsuds\nsoapwort\nsoapworts\nsoapy\nsoar\nsoared\nsoarer\nsoarers\nsoaring\nsoarings\nsoars\nsoave\nsoaves\nsob\nsobbed\nsobber\nsobbers\nsobbing\nsobeit\nsober\nsobered\nsoberer\nsoberest\nsobering\nsoberize\nsoberized\nsoberizes\nsoberizing\nsoberly\nsoberness\nsobers\nsobful\nsobrieties\nsobriety\nsobriquet\nsobriquets\nsobs\nsocage\nsocager\nsocagers\nsocages\nsoccage\nsoccages\nsoccer\nsoccers\nsociability\nsociable\nsociableness\nsociables\nsociably\nsocial\nsocialism\nsocialist\nsocialistic\nsocialistically\nsocialists\nsocialite\nsocialites\nsocialities\nsociality\nsocialization\nsocializations\nsocialize\nsocialized\nsocializer\nsocializers\nsocializes\nsocializing\nsocially\nsocials\nsocietal\nsocietally\nsocieties\nsociety\nsociocultural\nsocioeconomic\nsocioeconomically\nsociological\nsociologically\nsociologist\nsociologists\nsociology\nsociopath\nsociopathic\nsociopaths\nsock\nsocked\nsocket\nsocketed\nsocketing\nsockets\nsockeye\nsockeyes\nsocking\nsockman\nsockmen\nsocko\nsocks\nsocle\nsocles\nsocman\nsocmen\nsod\nsoda\nsodaless\nsodalist\nsodalists\nsodalite\nsodalites\nsodalities\nsodality\nsodamide\nsodamides\nsodas\nsodded\nsodden\nsoddened\nsoddening\nsoddenly\nsoddenness\nsoddens\nsoddies\nsodding\nsoddy\nsodic\nsodium\nsodiums\nsodom\nsodomies\nsodomite\nsodomites\nsodomitic\nsodomitical\nsodomy\nsods\nsoever\nsofa\nsofar\nsofars\nsofas\nsoffit\nsoffits\nsoft\nsofta\nsoftas\nsoftback\nsoftbacks\nsoftball\nsoftballs\nsoften\nsoftened\nsoftener\nsofteners\nsoftening\nsoftens\nsofter\nsoftest\nsofthead\nsoftheads\nsofthearted\nsoftheartedly\nsoftheartedness\nsoftie\nsofties\nsoftly\nsoftness\nsoftnesses\nsofts\nsoftware\nsoftwares\nsoftwood\nsoftwoods\nsofty\nsogged\nsoggier\nsoggiest\nsoggily\nsogginess\nsoggy\nsoigne\nsoignee\nsoil\nsoilage\nsoilages\nsoiled\nsoiling\nsoilless\nsoils\nsoilure\nsoilures\nsoiree\nsoirees\nsoja\nsojas\nsojourn\nsojourned\nsojourner\nsojourners\nsojourning\nsojourns\nsoke\nsokeman\nsokemen\nsokes\nsokol\nsol\nsola\nsolace\nsolaced\nsolacement\nsolacements\nsolacer\nsolacers\nsolaces\nsolacing\nsolan\nsoland\nsolander\nsolanders\nsolands\nsolanin\nsolanine\nsolanines\nsolanins\nsolano\nsolanos\nsolans\nsolanum\nsolanums\nsolar\nsolaria\nsolarise\nsolarised\nsolarises\nsolarising\nsolarism\nsolarisms\nsolarium\nsolariums\nsolarization\nsolarizations\nsolarize\nsolarized\nsolarizes\nsolarizing\nsolate\nsolated\nsolates\nsolatia\nsolating\nsolation\nsolations\nsolatium\nsold\nsoldan\nsoldans\nsolder\nsoldered\nsolderer\nsolderers\nsoldering\nsolders\nsoldi\nsoldier\nsoldiered\nsoldieries\nsoldiering\nsoldierly\nsoldiers\nsoldiery\nsoldo\nsole\nsolecise\nsolecised\nsolecises\nsolecising\nsolecism\nsolecisms\nsolecist\nsolecistic\nsolecists\nsolecize\nsolecized\nsolecizes\nsolecizing\nsoled\nsolei\nsoleless\nsolely\nsolemn\nsolemner\nsolemnest\nsolemnified\nsolemnifies\nsolemnify\nsolemnifying\nsolemnities\nsolemnity\nsolemnization\nsolemnizations\nsolemnize\nsolemnized\nsolemnizes\nsolemnizing\nsolemnly\nsolemnness\nsoleness\nsolenesses\nsolenoid\nsolenoidal\nsolenoids\nsoleret\nsolerets\nsoles\nsolfege\nsolfeges\nsolfeggi\nsolgel\nsoli\nsolicit\nsolicitation\nsolicitations\nsolicited\nsoliciting\nsolicitor\nsolicitors\nsolicitorship\nsolicitous\nsolicitously\nsolicitousness\nsolicits\nsolicitude\nsolicitudes\nsolid\nsolidago\nsolidagos\nsolidarities\nsolidarity\nsolidary\nsolider\nsolidest\nsolidi\nsolidification\nsolidifications\nsolidified\nsolidifies\nsolidify\nsolidifying\nsolidities\nsolidity\nsolidly\nsolidness\nsolids\nsolidus\nsoliloquies\nsoliloquist\nsoliloquists\nsoliloquize\nsoliloquized\nsoliloquizer\nsoliloquizers\nsoliloquizes\nsoliloquizing\nsoliloquy\nsoling\nsolion\nsolions\nsolipsism\nsolipsisms\nsolipsist\nsolipsistic\nsolipsists\nsoliquid\nsoliquids\nsolitaire\nsolitaires\nsolitaries\nsolitarily\nsolitariness\nsolitary\nsolitude\nsolitudes\nsolleret\nsollerets\nsolo\nsoloed\nsoloing\nsoloist\nsoloists\nsolon\nsolonets\nsolonetses\nsolonetz\nsolonetzes\nsolons\nsolos\nsols\nsolstice\nsolstices\nsolubilities\nsolubility\nsoluble\nsolubles\nsolubly\nsolum\nsolums\nsolus\nsolute\nsolutes\nsolution\nsolutions\nsolvability\nsolvable\nsolvate\nsolvated\nsolvates\nsolvating\nsolve\nsolved\nsolvencies\nsolvency\nsolvent\nsolvently\nsolvents\nsolver\nsolvers\nsolves\nsolving\nsoma\nsomas\nsomata\nsomatic\nsomatically\nsomber\nsomberly\nsomberness\nsombre\nsombrely\nsombrero\nsombreros\nsombrous\nsome\nsomebodies\nsomebody\nsomeday\nsomedeal\nsomehow\nsomeone\nsomeones\nsomeplace\nsomersault\nsomersaulted\nsomersaulting\nsomersaults\nsomerset\nsomerseted\nsomerseting\nsomersets\nsomersetted\nsomersetting\nsomething\nsomethings\nsometime\nsometimes\nsomeway\nsomeways\nsomewhat\nsomewhats\nsomewhen\nsomewhere\nsomewise\nsomital\nsomite\nsomites\nsomitic\nsomnambulate\nsomnambulated\nsomnambulates\nsomnambulating\nsomnambulation\nsomnambulations\nsomnambulist\nsomnambulistic\nsomnambulists\nsomnolence\nsomnolency\nsomnolent\nsomnolently\nson\nsonance\nsonances\nsonant\nsonantal\nsonantic\nsonants\nsonar\nsonarman\nsonarmen\nsonars\nsonata\nsonatas\nsonatina\nsonatinas\nsonatine\nsonde\nsonder\nsonders\nsondes\nsone\nsones\nsong\nsongbird\nsongbirds\nsongbook\nsongbooks\nsongfest\nsongfests\nsongful\nsongfully\nsongfulness\nsongless\nsonglessly\nsonglike\nsongs\nsongster\nsongsters\nsongstress\nsongstresses\nsonic\nsonicate\nsonicated\nsonicates\nsonicating\nsonics\nsonless\nsonlike\nsonly\nsonnet\nsonneted\nsonneteer\nsonneteers\nsonneting\nsonnetize\nsonnetized\nsonnetizes\nsonnetizing\nsonnets\nsonnetted\nsonnetting\nsonnies\nsonny\nsonorant\nsonorants\nsonorities\nsonority\nsonorous\nsonorously\nsonorousness\nsonovox\nsonovoxes\nsons\nsonship\nsonships\nsonsie\nsonsier\nsonsiest\nsonsy\nsoochong\nsoochongs\nsooey\nsook\nsooks\nsoon\nsooner\nsooners\nsoonest\nsoot\nsooted\nsooth\nsoothe\nsoothed\nsoother\nsoothers\nsoothes\nsoothest\nsoothing\nsoothingly\nsoothingness\nsoothly\nsooths\nsoothsaid\nsoothsay\nsoothsayer\nsoothsayers\nsoothsaying\nsoothsays\nsootier\nsootiest\nsootily\nsootiness\nsooting\nsoots\nsooty\nsop\nsoph\nsophies\nsophism\nsophisms\nsophist\nsophistic\nsophistical\nsophistically\nsophisticate\nsophisticated\nsophisticatedly\nsophisticates\nsophisticating\nsophistication\nsophistries\nsophistry\nsophists\nsophomore\nsophomores\nsophomoric\nsophs\nsophy\nsopite\nsopited\nsopites\nsopiting\nsopor\nsoporiferous\nsoporiferousness\nsoporific\nsoporifics\nsopors\nsopped\nsoppier\nsoppiest\nsopping\nsoppy\nsoprani\nsoprano\nsopranos\nsops\nsora\nsoras\nsorb\nsorbable\nsorbate\nsorbates\nsorbed\nsorbent\nsorbents\nsorbet\nsorbets\nsorbic\nsorbing\nsorbitol\nsorbitols\nsorbose\nsorboses\nsorbs\nsorcerer\nsorcerers\nsorceress\nsorceresses\nsorceries\nsorcerous\nsorcery\nsord\nsordid\nsordidly\nsordidness\nsordine\nsordines\nsordini\nsordino\nsords\nsore\nsorehead\nsoreheaded\nsoreheads\nsorel\nsorels\nsorely\nsoreness\nsorenesses\nsorer\nsores\nsorest\nsorgho\nsorghos\nsorghum\nsorghums\nsorgo\nsorgos\nsori\nsoricine\nsorites\nsoritic\nsorn\nsorned\nsorner\nsorners\nsorning\nsorns\nsoroche\nsoroches\nsororal\nsororate\nsororates\nsororities\nsorority\nsoroses\nsorosis\nsorosises\nsorption\nsorptions\nsorptive\nsorrel\nsorrels\nsorrier\nsorriest\nsorrily\nsorriness\nsorrow\nsorrowed\nsorrower\nsorrowers\nsorrowful\nsorrowfully\nsorrowfulness\nsorrowing\nsorrows\nsorry\nsort\nsortable\nsortably\nsorted\nsorter\nsorters\nsortie\nsortied\nsortieing\nsorties\nsorting\nsorts\nsorus\nsos\nsot\nsoth\nsoths\nsotol\nsotols\nsots\nsottish\nsou\nsouari\nsouaris\nsoubise\nsoubises\nsoubrette\nsoubrettes\nsoucar\nsoucars\nsouchong\nsouchongs\nsoudan\nsoudans\nsouffle\nsouffleed\nsouffles\nsough\nsoughed\nsoughing\nsoughs\nsought\nsouk\nsouks\nsoul\nsouled\nsoulful\nsoulfully\nsoulfulness\nsoulless\nsoullessly\nsoullessness\nsoullike\nsouls\nsound\nsoundable\nsoundbox\nsoundboxes\nsounded\nsounder\nsounders\nsoundest\nsounding\nsoundingly\nsoundings\nsoundless\nsoundlessly\nsoundly\nsoundness\nsoundproof\nsoundproofed\nsoundproofing\nsoundproofs\nsounds\nsoup\nsoupcon\nsoupcons\nsouped\nsoupier\nsoupiest\nsouping\nsoups\nsoupy\nsour\nsourball\nsourballs\nsource\nsourceless\nsources\nsourdine\nsourdines\nsourdough\nsourdoughs\nsoured\nsourer\nsourest\nsouring\nsourish\nsourly\nsourness\nsournesses\nsourpuss\nsourpusses\nsours\nsoursop\nsoursops\nsourwood\nsourwoods\nsous\nsousaphone\nsousaphones\nsouse\nsoused\nsouses\nsousing\nsoutache\nsoutaches\nsoutane\nsoutanes\nsouter\nsouters\nsouth\nsoutheast\nsoutheaster\nsoutheasterly\nsoutheastern\nsoutheasters\nsoutheastward\nsoutheastwards\nsouthed\nsouther\nsoutherlies\nsoutherly\nsouthern\nsouthernmost\nsoutherns\nsouthers\nsouthing\nsouthings\nsouthpaw\nsouthpaws\nsouthron\nsouthrons\nsouths\nsouthward\nsouthwards\nsouthwest\nsouthwester\nsouthwesterly\nsouthwestern\nsouthwesters\nsouthwestward\nsouthwestwards\nsouvenir\nsouvenirs\nsovereign\nsovereignly\nsovereigns\nsovereignties\nsovereignty\nsoviet\nsovietism\nsovietisms\nsovietization\nsovietizations\nsovietize\nsovietized\nsovietizes\nsovietizing\nsoviets\nsovkhoz\nsovkhozes\nsovkhozy\nsovran\nsovranly\nsovrans\nsovranties\nsovranty\nsow\nsowable\nsowans\nsowar\nsowars\nsowbellies\nsowbelly\nsowbread\nsowbreads\nsowcar\nsowcars\nsowed\nsowens\nsower\nsowers\nsowing\nsown\nsows\nsox\nsoy\nsoya\nsoyas\nsoybean\nsoybeans\nsoys\nsoyuz\nsozin\nsozine\nsozines\nsozins\nspa\nspace\nspacecraft\nspacecrafts\nspaced\nspaceflight\nspaceflights\nspaceman\nspacemen\nspaceport\nspaceports\nspacer\nspacers\nspaces\nspaceship\nspaceships\nspacial\nspacing\nspacings\nspacious\nspaciously\nspaciousness\nspackling\nspacy\nspade\nspaded\nspadeful\nspadefuls\nspadelike\nspader\nspaders\nspades\nspadework\nspadices\nspadille\nspadilles\nspading\nspadix\nspado\nspadones\nspae\nspaed\nspaeing\nspaeings\nspaes\nspaghetti\nspaghettis\nspagyric\nspagyrics\nspahee\nspahees\nspahi\nspahis\nspail\nspails\nspait\nspaits\nspake\nspale\nspales\nspall\nspalled\nspaller\nspallers\nspalling\nspalls\nspalpeen\nspalpeens\nspan\nspancel\nspanceled\nspanceling\nspancelled\nspancelling\nspancels\nspandrel\nspandrels\nspandril\nspandrils\nspang\nspangle\nspangled\nspangles\nspanglier\nspangliest\nspangling\nspangly\nspaniel\nspaniels\nspank\nspanked\nspanker\nspankers\nspanking\nspankings\nspanks\nspanless\nspanned\nspanner\nspanners\nspanning\nspans\nspanworm\nspanworms\nspar\nsparable\nsparables\nspare\nspareable\nspared\nsparely\nspareness\nsparer\nsparerib\nspareribs\nsparers\nspares\nsparest\nsparge\nsparged\nsparger\nspargers\nsparges\nsparging\nsparid\nsparids\nsparing\nsparingly\nspark\nsparked\nsparker\nsparkers\nsparkier\nsparkiest\nsparkily\nsparking\nsparkish\nsparkle\nsparkled\nsparkler\nsparklers\nsparkles\nsparkling\nsparks\nsparky\nsparlike\nsparling\nsparlings\nsparoid\nsparoids\nsparred\nsparrier\nsparriest\nsparring\nsparrow\nsparrowlike\nsparrows\nsparry\nspars\nsparse\nsparsely\nsparseness\nsparser\nsparsest\nsparsities\nsparsity\nspas\nspasm\nspasmodic\nspasmodically\nspasms\nspastic\nspastically\nspastics\nspat\nspate\nspates\nspathal\nspathe\nspathed\nspathes\nspathic\nspathose\nspatial\nspatiality\nspatially\nspats\nspatted\nspatter\nspattered\nspattering\nspatters\nspatting\nspatula\nspatular\nspatulas\nspavie\nspavies\nspaviet\nspavin\nspavined\nspavins\nspawn\nspawned\nspawner\nspawners\nspawning\nspawns\nspay\nspayed\nspaying\nspays\nspaz\nspeak\nspeakable\nspeakeasies\nspeakeasy\nspeaker\nspeakers\nspeaking\nspeakings\nspeaks\nspean\nspeaned\nspeaning\nspeans\nspear\nspeared\nspearer\nspearers\nspearhead\nspearheaded\nspearheading\nspearheads\nspearing\nspearman\nspearmen\nspearmint\nspearmints\nspears\nspec\nspecial\nspecialer\nspecialest\nspecialism\nspecialist\nspecialists\nspecialities\nspeciality\nspecialization\nspecializations\nspecialize\nspecialized\nspecializes\nspecializing\nspecially\nspecials\nspecialties\nspecialty\nspeciate\nspeciated\nspeciates\nspeciating\nspecie\nspecies\nspecifiable\nspecific\nspecifically\nspecification\nspecifications\nspecificities\nspecificity\nspecifics\nspecified\nspecifier\nspecifiers\nspecifies\nspecify\nspecifying\nspecimen\nspecimens\nspeciosities\nspeciosity\nspecious\nspeciously\nspeciousness\nspeck\nspecked\nspecking\nspeckle\nspeckled\nspeckles\nspeckling\nspecks\nspecs\nspectacle\nspectacled\nspectacles\nspectacular\nspectacularly\nspectaculars\nspectate\nspectated\nspectates\nspectating\nspectator\nspectators\nspecter\nspecters\nspectra\nspectral\nspectrally\nspectre\nspectres\nspectrometer\nspectrometers\nspectrometric\nspectrometry\nspectroscope\nspectroscopes\nspectroscopic\nspectroscopically\nspectroscopist\nspectroscopists\nspectroscopy\nspectrum\nspectrums\nspecula\nspecular\nspeculate\nspeculated\nspeculates\nspeculating\nspeculation\nspeculations\nspeculative\nspeculatively\nspeculator\nspeculators\nspeculum\nspeculums\nsped\nspeech\nspeeches\nspeechified\nspeechifies\nspeechify\nspeechifying\nspeechless\nspeechlessly\nspeechlessness\nspeed\nspeedboat\nspeedboats\nspeeded\nspeeder\nspeeders\nspeedier\nspeediest\nspeedily\nspeediness\nspeeding\nspeedings\nspeedometer\nspeedometers\nspeeds\nspeedster\nspeedsters\nspeedup\nspeedups\nspeedway\nspeedways\nspeedy\nspeel\nspeeled\nspeeling\nspeels\nspeer\nspeered\nspeering\nspeerings\nspeers\nspeil\nspeiled\nspeiling\nspeils\nspeir\nspeired\nspeiring\nspeirs\nspeise\nspeises\nspeiss\nspeisses\nspelaean\nspelean\nspell\nspellbind\nspellbinder\nspellbinders\nspellbinding\nspellbinds\nspellbound\nspelled\nspeller\nspellers\nspelling\nspellings\nspells\nspelt\nspelter\nspelters\nspelts\nspeltz\nspeltzes\nspelunk\nspelunked\nspelunker\nspelunkers\nspelunking\nspelunks\nspence\nspencer\nspencers\nspences\nspend\nspendable\nspender\nspenders\nspending\nspends\nspendthrift\nspendthrifts\nspent\nsperm\nspermaries\nspermary\nspermatic\nspermic\nspermine\nspermines\nspermous\nsperms\nspew\nspewed\nspewer\nspewers\nspewing\nspews\nsphagnum\nsphagnums\nsphene\nsphenes\nsphenic\nsphenoid\nsphenoidal\nsphenoids\nspheral\nsphere\nsphered\nspheres\nspheric\nspherical\nspherically\nsphericity\nspherics\nspherier\nspheriest\nsphering\nspheroid\nspheroidal\nspheroidally\nspheroids\nspherule\nspherules\nsphery\nsphincter\nsphincteral\nsphincters\nsphinges\nsphingid\nsphingids\nsphinx\nsphinxes\nsphygmic\nsphygmograph\nsphygmographic\nsphygmographs\nsphygmography\nsphygmomanometer\nsphygmomanometers\nsphygmus\nsphygmuses\nspic\nspica\nspicae\nspicas\nspicate\nspicated\nspiccato\nspiccatos\nspice\nspiced\nspicer\nspiceries\nspicers\nspicery\nspices\nspicey\nspicier\nspiciest\nspicily\nspicing\nspick\nspicks\nspics\nspicula\nspiculae\nspicular\nspicule\nspicules\nspiculum\nspicy\nspider\nspiderier\nspideriest\nspiders\nspidery\nspied\nspiegel\nspiegels\nspiel\nspieled\nspieler\nspielers\nspieling\nspiels\nspier\nspiered\nspiering\nspiers\nspies\nspiff\nspiffier\nspiffiest\nspiffily\nspiffing\nspiffy\nspigot\nspigots\nspik\nspike\nspiked\nspikelet\nspikelets\nspiker\nspikers\nspikes\nspikier\nspikiest\nspikily\nspiking\nspiks\nspiky\nspile\nspiled\nspiles\nspilikin\nspilikins\nspiling\nspilings\nspill\nspillage\nspillages\nspilled\nspiller\nspillers\nspilling\nspills\nspillway\nspillways\nspilt\nspilth\nspilths\nspin\nspinach\nspinaches\nspinage\nspinages\nspinal\nspinally\nspinals\nspinate\nspindle\nspindled\nspindler\nspindlers\nspindles\nspindlier\nspindliest\nspindling\nspindly\nspindrift\nspindrifts\nspine\nspined\nspinel\nspineless\nspinelle\nspinelles\nspinels\nspines\nspinet\nspinets\nspinier\nspiniest\nspinifex\nspinifexes\nspininess\nspinless\nspinnaker\nspinnakers\nspinner\nspinneries\nspinners\nspinnery\nspinney\nspinneys\nspinnies\nspinning\nspinnings\nspinny\nspinoff\nspinoffs\nspinor\nspinors\nspinose\nspinous\nspinout\nspinouts\nspins\nspinster\nspinsterhood\nspinsterish\nspinsters\nspinula\nspinulae\nspinule\nspinules\nspiny\nspiracle\nspiracles\nspiraea\nspiraeas\nspiral\nspiraled\nspiraling\nspiralled\nspiralling\nspirally\nspirals\nspirant\nspirants\nspire\nspirea\nspireas\nspired\nspirem\nspireme\nspiremes\nspirems\nspires\nspirilla\nspiring\nspirit\nspirited\nspiritedly\nspiriting\nspiritism\nspiritist\nspiritists\nspiritless\nspiritlessly\nspirits\nspiritual\nspiritualism\nspiritualist\nspiritualistic\nspiritualists\nspiritualities\nspirituality\nspiritualization\nspiritualizations\nspiritualize\nspiritualized\nspiritualizes\nspiritualizing\nspiritually\nspiritualness\nspirituals\nspirituel\nspirituelle\nspirituous\nspirochetal\nspirochete\nspirochetes\nspiroid\nspirt\nspirted\nspirting\nspirts\nspirula\nspirulae\nspirulas\nspiry\nspit\nspital\nspitals\nspitball\nspitballs\nspite\nspited\nspiteful\nspitefuller\nspitefullest\nspitefully\nspitefulness\nspites\nspitfire\nspitfires\nspiting\nspits\nspitted\nspitter\nspitters\nspitting\nspittle\nspittles\nspittoon\nspittoons\nspitz\nspitzes\nspiv\nspivs\nsplake\nsplakes\nsplash\nsplashdown\nsplashdowns\nsplashed\nsplasher\nsplashers\nsplashes\nsplashier\nsplashiest\nsplashiness\nsplashing\nsplashy\nsplat\nsplats\nsplatter\nsplattered\nsplattering\nsplatters\nsplay\nsplayed\nsplayfoot\nsplayfooted\nsplaying\nsplays\nspleen\nspleenful\nspleenier\nspleeniest\nspleens\nspleeny\nsplendid\nsplendider\nsplendidest\nsplendidly\nsplendidness\nsplendiferous\nsplendiferously\nsplendiferousness\nsplendor\nsplendorous\nsplendors\nsplenetic\nsplenetically\nsplenia\nsplenial\nsplenic\nsplenii\nsplenium\nsplenius\nsplent\nsplents\nsplice\nspliced\nsplicer\nsplicers\nsplices\nsplicing\nspline\nsplined\nsplines\nsplining\nsplint\nsplinted\nsplinter\nsplintered\nsplintering\nsplinters\nsplintery\nsplinting\nsplints\nsplit\nsplits\nsplitter\nsplitters\nsplitting\nsplore\nsplores\nsplosh\nsploshed\nsploshes\nsploshing\nsplotch\nsplotched\nsplotches\nsplotchier\nsplotchiest\nsplotching\nsplotchy\nsplurge\nsplurged\nsplurges\nsplurgier\nsplurgiest\nsplurging\nsplurgy\nsplutter\nspluttered\nspluttering\nsplutters\nspode\nspodes\nspoil\nspoilage\nspoilages\nspoiled\nspoiler\nspoilers\nspoiling\nspoils\nspoilsport\nspoilsports\nspoilt\nspoke\nspoked\nspoken\nspokes\nspokeshave\nspokeshaves\nspokesman\nspokesmen\nspokesperson\nspokespersons\nspokeswoman\nspokeswomen\nspoking\nspoliate\nspoliated\nspoliates\nspoliating\nspoliation\nspoliations\nspoliator\nspoliators\nspondaic\nspondaics\nspondee\nspondees\nsponge\nsponged\nsponger\nspongers\nsponges\nspongier\nspongiest\nspongily\nspongin\nsponging\nspongins\nspongy\nsponsal\nsponsion\nsponsions\nsponson\nsponsons\nsponsor\nsponsored\nsponsorial\nsponsoring\nsponsors\nsponsorship\nsponsorships\nspontaneity\nspontaneous\nspontaneously\nspontaneousness\nspontoon\nspontoons\nspoof\nspoofed\nspoofing\nspoofs\nspook\nspooked\nspookier\nspookiest\nspookily\nspooking\nspookish\nspooks\nspooky\nspool\nspooled\nspooling\nspools\nspoon\nspooned\nspoonerism\nspoonerisms\nspooney\nspooneys\nspoonful\nspoonfuls\nspoonier\nspoonies\nspooniest\nspoonily\nspooning\nspoons\nspoonsful\nspoony\nspoor\nspoored\nspooring\nspoors\nsporadic\nsporadically\nsporal\nspore\nspored\nspores\nsporing\nsporoid\nsporran\nsporrans\nsport\nsported\nsporter\nsporters\nsportful\nsportier\nsportiest\nsportily\nsportiness\nsporting\nsportive\nsportively\nsports\nsportscast\nsportscaster\nsportscasters\nsportscasts\nsportsman\nsportsmanlike\nsportsmanly\nsportsmanship\nsportsmen\nsportswear\nsportswoman\nsportswomen\nsportswriter\nsportswriters\nsporty\nsporular\nsporule\nsporules\nspot\nspotless\nspotlessly\nspotlessness\nspotlight\nspotlighted\nspotlighting\nspotlights\nspots\nspotted\nspotter\nspotters\nspottier\nspottiest\nspottily\nspotting\nspotty\nspousal\nspousals\nspouse\nspoused\nspouses\nspousing\nspout\nspouted\nspouter\nspouters\nspouting\nspouts\nspraddle\nspraddled\nspraddles\nspraddling\nsprag\nsprags\nsprain\nsprained\nspraining\nsprains\nsprang\nsprat\nsprats\nsprattle\nsprattled\nsprattles\nsprattling\nsprawl\nsprawled\nsprawler\nsprawlers\nsprawlier\nsprawliest\nsprawling\nsprawls\nsprawly\nspray\nsprayed\nsprayer\nsprayers\nspraying\nsprays\nspread\nspreadable\nspreader\nspreaders\nspreading\nspreads\nspreadsheet\nspreadsheets\nspree\nsprees\nsprent\nsprier\nspriest\nsprig\nsprigged\nsprigger\nspriggers\nspriggier\nspriggiest\nsprigging\nspriggy\nspright\nsprightlier\nsprightliest\nsprightliness\nsprightly\nsprights\nsprigs\nspring\nspringal\nspringals\nspringboard\nspringboards\nspringe\nspringed\nspringeing\nspringer\nspringers\nspringes\nspringier\nspringiest\nspringiness\nspringing\nspringings\nsprings\nspringtime\nspringtimes\nspringy\nsprinkle\nsprinkled\nsprinkler\nsprinklers\nsprinkles\nsprinkling\nsprinklings\nsprint\nsprinted\nsprinter\nsprinters\nsprinting\nsprints\nsprit\nsprite\nsprites\nsprits\nsprocket\nsprockets\nsprout\nsprouted\nsprouting\nsprouts\nspruce\nspruced\nsprucely\nsprucer\nspruces\nsprucest\nsprucier\nspruciest\nsprucing\nsprucy\nsprue\nsprues\nsprug\nsprugs\nsprung\nspry\nspryer\nspryest\nspryly\nspryness\nsprynesses\nspud\nspudded\nspudder\nspudders\nspudding\nspuds\nspue\nspued\nspues\nspuing\nspume\nspumed\nspumes\nspumier\nspumiest\nspuming\nspumone\nspumones\nspumoni\nspumonis\nspumous\nspumy\nspun\nspunk\nspunked\nspunkie\nspunkier\nspunkies\nspunkiest\nspunkily\nspunking\nspunks\nspunky\nspur\nspurgall\nspurgalled\nspurgalling\nspurgalls\nspurge\nspurges\nspurious\nspuriously\nspurn\nspurned\nspurner\nspurners\nspurning\nspurns\nspurred\nspurrer\nspurrers\nspurrey\nspurreys\nspurrier\nspurriers\nspurries\nspurring\nspurry\nspurs\nspurt\nspurted\nspurting\nspurtle\nspurtles\nspurts\nsputa\nsputnik\nsputniks\nsputter\nsputtered\nsputtering\nsputters\nsputum\nspy\nspyglass\nspyglasses\nspying\nsquab\nsquabbier\nsquabbiest\nsquabble\nsquabbled\nsquabbles\nsquabbling\nsquabby\nsquabs\nsquad\nsquadded\nsquadding\nsquadron\nsquadroned\nsquadroning\nsquadrons\nsquads\nsqualene\nsqualenes\nsqualid\nsqualider\nsqualidest\nsqualidly\nsquall\nsqualled\nsqualler\nsquallers\nsquallier\nsqualliest\nsqualling\nsqualls\nsqually\nsqualor\nsqualors\nsquama\nsquamae\nsquamate\nsquamose\nsquamous\nsquander\nsquandered\nsquandering\nsquanders\nsquare\nsquared\nsquarely\nsquarer\nsquarers\nsquares\nsquarest\nsquaring\nsquarish\nsquarishly\nsquash\nsquashed\nsquasher\nsquashers\nsquashes\nsquashier\nsquashiest\nsquashily\nsquashiness\nsquashing\nsquashy\nsquat\nsquatly\nsquats\nsquatted\nsquatter\nsquattered\nsquattering\nsquatters\nsquattest\nsquattier\nsquattiest\nsquatting\nsquatty\nsquaw\nsquawk\nsquawked\nsquawker\nsquawkers\nsquawking\nsquawks\nsquaws\nsqueak\nsqueaked\nsqueaker\nsqueakers\nsqueakier\nsqueakiest\nsqueaking\nsqueaks\nsqueaky\nsqueal\nsquealed\nsquealer\nsquealers\nsquealing\nsqueals\nsqueamish\nsqueamishly\nsqueegee\nsqueegeed\nsqueegeeing\nsqueegees\nsqueezability\nsqueezable\nsqueeze\nsqueezed\nsqueezer\nsqueezers\nsqueezes\nsqueezing\nsqueg\nsquegged\nsquegging\nsquegs\nsquelch\nsquelched\nsquelches\nsquelchier\nsquelchiest\nsquelching\nsquelchy\nsquib\nsquibbed\nsquibbing\nsquibs\nsquid\nsquidded\nsquidding\nsquids\nsquiffed\nsquiffy\nsquiggle\nsquiggled\nsquiggles\nsquigglier\nsquiggliest\nsquiggling\nsquiggly\nsquilgee\nsquilgeed\nsquilgeeing\nsquilgees\nsquill\nsquilla\nsquillae\nsquillas\nsquills\nsquinch\nsquinched\nsquinches\nsquinching\nsquinnied\nsquinnier\nsquinnies\nsquinniest\nsquinny\nsquinnying\nsquint\nsquinted\nsquinter\nsquinters\nsquintest\nsquintier\nsquintiest\nsquinting\nsquintingly\nsquints\nsquinty\nsquire\nsquired\nsquireen\nsquireens\nsquires\nsquiring\nsquirish\nsquirm\nsquirmed\nsquirmer\nsquirmers\nsquirmier\nsquirmiest\nsquirming\nsquirms\nsquirmy\nsquirrel\nsquirreled\nsquirreling\nsquirrelled\nsquirrelling\nsquirrels\nsquirt\nsquirted\nsquirter\nsquirters\nsquirting\nsquirts\nsquish\nsquished\nsquishes\nsquishier\nsquishiest\nsquishing\nsquishy\nsquoosh\nsquooshed\nsquooshes\nsquooshing\nsqureling\nsquush\nsquushed\nsquushes\nsquushing\nsraddha\nsraddhas\nsradha\nsradhas\nsri\nsris\nstab\nstabbed\nstabber\nstabbers\nstabbing\nstabbings\nstabile\nstabiles\nstabilities\nstability\nstabilization\nstabilize\nstabilized\nstabilizer\nstabilizers\nstabilizes\nstabilizing\nstable\nstabled\nstabler\nstablers\nstables\nstablest\nstabling\nstablings\nstablish\nstablished\nstablishes\nstablishing\nstably\nstabs\nstaccati\nstaccato\nstaccatos\nstack\nstacked\nstacker\nstackers\nstacking\nstacks\nstacte\nstactes\nstaddle\nstaddles\nstade\nstades\nstadia\nstadias\nstadium\nstadiums\nstaff\nstaffed\nstaffer\nstaffers\nstaffing\nstaffs\nstag\nstage\nstagecoach\nstagecoaches\nstagecraft\nstaged\nstagehand\nstagehands\nstager\nstagers\nstages\nstagey\nstaggard\nstaggards\nstaggart\nstaggarts\nstagged\nstagger\nstaggered\nstaggering\nstaggeringly\nstaggers\nstaggery\nstaggie\nstaggier\nstaggies\nstaggiest\nstagging\nstaggy\nstagier\nstagiest\nstagily\nstaginess\nstaging\nstagings\nstagnancy\nstagnant\nstagnate\nstagnated\nstagnates\nstagnating\nstagnation\nstagnations\nstags\nstagy\nstaid\nstaider\nstaidest\nstaidly\nstaig\nstaigs\nstain\nstainability\nstainable\nstained\nstainer\nstainers\nstaining\nstainless\nstains\nstair\nstaircase\nstaircases\nstairs\nstairway\nstairways\nstairwell\nstairwells\nstake\nstaked\nstakeholder\nstakeholders\nstakeout\nstakeouts\nstakes\nstaking\nstalactite\nstalactites\nstalag\nstalagmite\nstalagmites\nstalags\nstale\nstaled\nstalely\nstalemate\nstalemated\nstalemates\nstalemating\nstaler\nstales\nstalest\nstaling\nstalk\nstalked\nstalker\nstalkers\nstalkier\nstalkiest\nstalkily\nstalking\nstalkless\nstalks\nstalky\nstall\nstalled\nstalling\nstallion\nstallions\nstalls\nstalwart\nstalwarts\nstamen\nstamens\nstamina\nstaminal\nstaminas\nstammel\nstammels\nstammer\nstammered\nstammerer\nstammerers\nstammering\nstammers\nstamp\nstamped\nstampede\nstampeded\nstampedes\nstampeding\nstamper\nstampers\nstamping\nstamps\nstance\nstances\nstanch\nstanched\nstancher\nstanchers\nstanches\nstanchest\nstanching\nstanchion\nstanchions\nstanchly\nstand\nstandard\nstandardization\nstandardizations\nstandardize\nstandardized\nstandardizes\nstandardizing\nstandards\nstandby\nstandbys\nstandee\nstandees\nstander\nstanders\nstanding\nstandings\nstandish\nstandishes\nstandoff\nstandoffish\nstandoffs\nstandout\nstandouts\nstandpat\nstandpoint\nstandpoints\nstands\nstandstill\nstandstills\nstandup\nstane\nstaned\nstanes\nstang\nstanged\nstanging\nstangs\nstanhope\nstanhopes\nstaning\nstank\nstanks\nstannaries\nstannary\nstannic\nstannite\nstannites\nstannous\nstannum\nstannums\nstanza\nstanzaed\nstanzaic\nstanzas\nstapedes\nstapelia\nstapelias\nstapes\nstaph\nstaphs\nstaple\nstapled\nstapler\nstaplers\nstaples\nstapling\nstar\nstarboard\nstarch\nstarched\nstarches\nstarchier\nstarchiest\nstarchily\nstarchiness\nstarching\nstarchy\nstardom\nstardoms\nstardust\nstardusts\nstare\nstared\nstarer\nstarers\nstares\nstarets\nstarfish\nstarfishes\nstargaze\nstargazed\nstargazer\nstargazers\nstargazes\nstargazing\nstaring\nstark\nstarker\nstarkest\nstarkly\nstarkness\nstarless\nstarlet\nstarlets\nstarlight\nstarlike\nstarling\nstarlings\nstarlit\nstarnose\nstarnoses\nstarred\nstarrier\nstarriest\nstarring\nstarry\nstars\nstart\nstarted\nstarter\nstarters\nstarting\nstartle\nstartled\nstartler\nstartlers\nstartles\nstartling\nstartlingly\nstarts\nstartsy\nstarvation\nstarve\nstarved\nstarver\nstarvers\nstarves\nstarving\nstarwort\nstarworts\nstases\nstash\nstashed\nstashes\nstashing\nstasima\nstasimon\nstasis\nstat\nstatable\nstatal\nstatant\nstate\nstatecraft\nstated\nstatedly\nstatehood\nstatehoods\nstatehouse\nstatehouses\nstateless\nstatelier\nstateliest\nstateliness\nstately\nstatement\nstatements\nstater\nstateroom\nstaterooms\nstaters\nstates\nstateside\nstatesman\nstatesmanlike\nstatesmanly\nstatesmanship\nstatesmen\nstatewide\nstatic\nstatical\nstatically\nstatice\nstatices\nstatics\nstating\nstation\nstational\nstationary\nstationed\nstationer\nstationers\nstationery\nstationing\nstations\nstatism\nstatisms\nstatist\nstatistic\nstatistical\nstatistically\nstatistician\nstatisticians\nstatistics\nstatists\nstative\nstatives\nstator\nstators\nstats\nstatuaries\nstatuary\nstatue\nstatued\nstatues\nstatuesque\nstatuesquely\nstatuesqueness\nstatuette\nstatuettes\nstature\nstatures\nstatus\nstatuses\nstatute\nstatutes\nstatutorily\nstatutory\nstaumrel\nstaumrels\nstaunch\nstaunched\nstauncher\nstaunches\nstaunchest\nstaunching\nstaunchly\nstaunchness\nstave\nstaved\nstaves\nstaving\nstaw\nstay\nstayed\nstayer\nstayers\nstaying\nstays\nstaysail\nstaysails\nstead\nsteaded\nsteadfast\nsteadfastly\nsteadfastness\nsteadied\nsteadier\nsteadiers\nsteadies\nsteadiest\nsteadily\nsteadiness\nsteading\nsteadings\nsteads\nsteady\nsteadying\nsteak\nsteaks\nsteal\nstealage\nstealages\nstealer\nstealers\nstealing\nstealings\nsteals\nstealth\nstealthier\nstealthiest\nstealthily\nstealthiness\nstealths\nstealthy\nsteam\nsteamboat\nsteamboats\nsteamed\nsteamer\nsteamered\nsteamering\nsteamers\nsteamier\nsteamiest\nsteamily\nsteaming\nsteamroller\nsteamrollers\nsteams\nsteamship\nsteamships\nsteamy\nsteapsin\nsteapsins\nstearate\nstearates\nstearic\nstearin\nstearine\nstearines\nstearins\nsteatite\nsteatites\nsteatitic\nstedfast\nsteed\nsteeds\nsteek\nsteeked\nsteeking\nsteeks\nsteel\nsteeled\nsteelie\nsteelier\nsteelies\nsteeliest\nsteeliness\nsteeling\nsteelmaking\nsteels\nsteelwork\nsteelworker\nsteelworkers\nsteelworks\nsteely\nsteelyard\nsteelyards\nsteenbok\nsteenboks\nsteep\nsteeped\nsteepen\nsteepened\nsteepening\nsteepens\nsteeper\nsteepers\nsteepest\nsteeping\nsteeple\nsteeplechase\nsteeplechased\nsteeplechaser\nsteeplechasers\nsteeplechases\nsteeplechasing\nsteepled\nsteeplejack\nsteeplejacks\nsteeples\nsteeply\nsteepness\nsteeps\nsteer\nsteerage\nsteerages\nsteerageway\nsteered\nsteerer\nsteerers\nsteering\nsteers\nsteersman\nsteersmen\nsteeve\nsteeved\nsteeves\nsteeving\nsteevings\nstegodon\nstegodons\nstein\nsteinbok\nsteinboks\nsteins\nstela\nstelae\nstelai\nstelar\nstele\nstelene\nsteles\nstelic\nstella\nstellar\nstellas\nstellate\nstellified\nstellifies\nstellify\nstellifying\nstem\nstemless\nstemlike\nstemma\nstemmas\nstemmata\nstemmed\nstemmer\nstemmeries\nstemmers\nstemmery\nstemmier\nstemmiest\nstemming\nstemmy\nstems\nstemson\nstemsons\nstemware\nstemwares\nstench\nstenches\nstenchier\nstenchiest\nstenchy\nstencil\nstenciled\nstenciler\nstencilers\nstenciling\nstencilled\nstenciller\nstencillers\nstencilling\nstencils\nstengah\nstengahs\nsteno\nstenographer\nstenographers\nstenographic\nstenographically\nstenography\nstenos\nstenosed\nstenoses\nstenosis\nstenotic\nstenotype\nstenotyped\nstenotypes\nstenotyping\nstenotypist\nstenotypists\nstenotypy\nstentor\nstentorian\nstentors\nstep\nstepbrother\nstepbrothers\nstepchild\nstepchildren\nstepdame\nstepdames\nstepdaughter\nstepdaughters\nstepfather\nstepfathers\nstepladder\nstepladders\nsteplike\nstepmother\nstepmothers\nstepparent\nstepparents\nsteppe\nstepped\nstepper\nsteppers\nsteppes\nstepping\nsteps\nstepsister\nstepsisters\nstepson\nstepsons\nstepwise\nstere\nstereo\nstereoed\nstereoing\nstereophonic\nstereophonically\nstereopticon\nstereopticons\nstereos\nstereoscope\nstereoscopes\nstereoscopic\nstereoscopically\nstereotype\nstereotyped\nstereotyper\nstereotypers\nstereotypes\nstereotypical\nstereotyping\nstereotypy\nsteres\nsteric\nsterical\nsterigma\nsterigmas\nsterigmata\nsterile\nsterility\nsterilization\nsterilizations\nsterilize\nsterilized\nsterilizer\nsterilizers\nsterilizes\nsterilizing\nsterlet\nsterlets\nsterling\nsterlings\nstern\nsterna\nsternal\nsterner\nsternest\nsternite\nsternites\nsternly\nsternness\nsterns\nsternson\nsternsons\nsternum\nsternums\nsternutation\nsternutations\nsternutator\nsternutators\nsternway\nsternways\nsteroid\nsteroidal\nsteroids\nsterol\nsterols\nstertor\nstertors\nstet\nstethoscope\nstethoscopes\nstethoscopic\nstets\nstetted\nstetting\nstevedore\nstevedored\nstevedores\nstevedoring\nstew\nsteward\nstewarded\nstewardess\nstewardesses\nstewarding\nstewards\nstewardship\nstewardships\nstewbum\nstewbums\nstewed\nstewing\nstewpan\nstewpans\nstews\nstey\nsthenia\nsthenias\nsthenic\nstibial\nstibine\nstibines\nstibium\nstibiums\nstibnite\nstibnites\nstich\nstichic\nstichs\nstick\nsticked\nsticker\nstickers\nstickful\nstickfuls\nstickier\nstickiest\nstickily\nstickiness\nsticking\nstickit\nstickle\nstickled\nstickler\nsticklers\nstickles\nstickling\nstickman\nstickmen\nstickout\nstickouts\nstickpin\nstickpins\nsticks\nstickum\nstickums\nstickup\nstickups\nsticky\nstied\nsties\nstiff\nstiffen\nstiffened\nstiffener\nstiffeners\nstiffening\nstiffens\nstiffer\nstiffest\nstiffish\nstiffly\nstiffness\nstiffs\nstifle\nstifled\nstifler\nstiflers\nstifles\nstifling\nstiflingly\nstigma\nstigmal\nstigmas\nstigmata\nstigmatic\nstigmatically\nstigmatization\nstigmatizations\nstigmatize\nstigmatized\nstigmatizes\nstigmatizing\nstilbene\nstilbenes\nstilbite\nstilbites\nstile\nstiles\nstiletto\nstilettoed\nstilettoes\nstilettoing\nstilettos\nstill\nstillbirth\nstillbirths\nstillborn\nstillborns\nstilled\nstiller\nstillest\nstillier\nstilliest\nstilling\nstillman\nstillmen\nstillness\nstills\nstilly\nstilt\nstilted\nstilting\nstilts\nstime\nstimes\nstimied\nstimies\nstimulant\nstimulants\nstimulate\nstimulated\nstimulates\nstimulating\nstimulation\nstimulations\nstimulative\nstimulator\nstimulators\nstimuli\nstimulus\nstimy\nstimying\nsting\nstinger\nstingers\nstingier\nstingiest\nstingily\nstinginess\nstinging\nstingingly\nstingless\nstingo\nstingos\nstingray\nstingrays\nstings\nstingy\nstink\nstinkard\nstinkards\nstinkbug\nstinkbugs\nstinker\nstinkers\nstinkier\nstinkiest\nstinking\nstinkingly\nstinko\nstinkpot\nstinkpots\nstinks\nstinky\nstint\nstinted\nstinter\nstinters\nstinting\nstints\nstipe\nstiped\nstipel\nstipels\nstipend\nstipendiaries\nstipendiary\nstipends\nstipes\nstipites\nstipple\nstippled\nstippler\nstipplers\nstipples\nstippling\nstipular\nstipulate\nstipulated\nstipulates\nstipulating\nstipulation\nstipulations\nstipulator\nstipulators\nstipulatory\nstipule\nstipuled\nstipules\nstir\nstirk\nstirks\nstirp\nstirpes\nstirps\nstirred\nstirrer\nstirrers\nstirring\nstirrup\nstirrups\nstirs\nstitch\nstitched\nstitcher\nstitcheries\nstitchers\nstitchery\nstitches\nstitching\nstithied\nstithies\nstithy\nstithying\nstiver\nstivers\nstoa\nstoae\nstoai\nstoas\nstoat\nstoats\nstob\nstobbed\nstobbing\nstobs\nstoccado\nstoccados\nstoccata\nstoccatas\nstochastic\nstochastically\nstock\nstockade\nstockaded\nstockades\nstockading\nstockbroker\nstockbrokers\nstockcar\nstockcars\nstocked\nstocker\nstockers\nstockholder\nstockholders\nstockier\nstockiest\nstockily\nstockiness\nstockinet\nstockinets\nstockinette\nstockinettes\nstocking\nstockinged\nstockings\nstockish\nstockist\nstockists\nstockman\nstockmen\nstockpile\nstockpiled\nstockpiler\nstockpilers\nstockpiles\nstockpiling\nstockpot\nstockpots\nstockroom\nstockrooms\nstocks\nstocky\nstockyard\nstockyards\nstodge\nstodged\nstodges\nstodgier\nstodgiest\nstodgily\nstodging\nstodgy\nstogey\nstogeys\nstogie\nstogies\nstogy\nstoic\nstoical\nstoically\nstoicism\nstoicisms\nstoics\nstoke\nstoked\nstokehole\nstokeholes\nstoker\nstokers\nstokes\nstokesia\nstokesias\nstoking\nstole\nstoled\nstolen\nstoles\nstolid\nstolider\nstolidest\nstolidity\nstolidly\nstollen\nstollens\nstolon\nstolonic\nstolons\nstoma\nstomach\nstomachache\nstomachaches\nstomached\nstomachic\nstomaching\nstomachs\nstomachy\nstomal\nstomas\nstomata\nstomatal\nstomate\nstomates\nstomatic\nstomodea\nstomp\nstomped\nstomper\nstompers\nstomping\nstomps\nstonable\nstone\nstoneable\nstonecutter\nstonecutters\nstoned\nstoneflies\nstonefly\nstonemason\nstonemasonry\nstonemasons\nstoner\nstoners\nstones\nstonewall\nstonewalled\nstonewalling\nstonewalls\nstoneware\nstonework\nstoneworks\nstoney\nstonier\nstoniest\nstonily\nstoning\nstonish\nstonished\nstonishes\nstonishing\nstony\nstood\nstooge\nstooged\nstooges\nstooging\nstook\nstooked\nstooker\nstookers\nstooking\nstooks\nstool\nstooled\nstoolie\nstoolies\nstooling\nstools\nstoop\nstooped\nstooper\nstoopers\nstooping\nstoops\nstop\nstopcock\nstopcocks\nstope\nstoped\nstoper\nstopers\nstopes\nstopgap\nstopgaps\nstoping\nstoplight\nstoplights\nstopover\nstopovers\nstoppable\nstoppage\nstoppages\nstopped\nstopper\nstoppered\nstoppering\nstoppers\nstopping\nstopple\nstoppled\nstopples\nstoppling\nstops\nstopt\nstopwatch\nstopwatches\nstorable\nstorables\nstorage\nstorages\nstorax\nstoraxes\nstore\nstored\nstorefront\nstorefronts\nstorehouse\nstorehouses\nstorekeeper\nstorekeepers\nstoreroom\nstorerooms\nstores\nstorey\nstoreyed\nstoreys\nstoried\nstories\nstoring\nstork\nstorks\nstorm\nstormbound\nstormed\nstormier\nstormiest\nstormily\nstorminess\nstorming\nstorms\nstormy\nstory\nstorying\nstoryteller\nstorytellers\nstoss\nstotinka\nstotinki\nstound\nstounded\nstounding\nstounds\nstoup\nstoups\nstour\nstoure\nstoures\nstourie\nstours\nstoury\nstout\nstouten\nstoutened\nstoutening\nstoutens\nstouter\nstoutest\nstouthearted\nstoutheartedly\nstoutheartedness\nstoutish\nstoutly\nstoutness\nstouts\nstove\nstovepipe\nstovepipes\nstover\nstovers\nstoves\nstow\nstowable\nstowage\nstowages\nstowaway\nstowaways\nstowed\nstowing\nstowp\nstowps\nstows\nstrabismic\nstrabismus\nstraddle\nstraddled\nstraddler\nstraddlers\nstraddles\nstraddling\nstrafe\nstrafed\nstrafer\nstrafers\nstrafes\nstrafing\nstraggle\nstraggled\nstraggler\nstragglers\nstraggles\nstragglier\nstraggliest\nstraggling\nstraggly\nstraight\nstraightaway\nstraightaways\nstraighted\nstraightedge\nstraightedges\nstraighten\nstraightened\nstraightener\nstraighteners\nstraightening\nstraightens\nstraighter\nstraightest\nstraightforward\nstraightforwardly\nstraightforwardness\nstraighting\nstraightjacket\nstraightjackets\nstraightlaced\nstraightly\nstraights\nstraightway\nstrain\nstrained\nstrainer\nstrainers\nstraining\nstrains\nstrait\nstraiten\nstraitened\nstraitening\nstraitens\nstraiter\nstraitest\nstraitjacket\nstraitjackets\nstraitlaced\nstraitly\nstraitness\nstraits\nstrake\nstraked\nstrakes\nstramash\nstramashes\nstramonies\nstramony\nstrand\nstranded\nstrander\nstranders\nstranding\nstrands\nstrang\nstrange\nstrangely\nstrangeness\nstranger\nstrangered\nstrangering\nstrangers\nstrangest\nstrangle\nstrangled\nstranglehold\nstrangleholds\nstrangler\nstranglers\nstrangles\nstrangling\nstrangulate\nstrangulated\nstrangulates\nstrangulating\nstrangulation\nstrangulations\nstrap\nstrapless\nstrapped\nstrapper\nstrappers\nstrapping\nstrappings\nstraps\nstrass\nstrasses\nstrata\nstratagem\nstratagems\nstratal\nstratas\nstrategic\nstrategical\nstrategically\nstrategies\nstrategist\nstrategists\nstrategy\nstrath\nstraths\nstrati\nstratification\nstratifications\nstratified\nstratifies\nstratify\nstratifying\nstratosphere\nstratospheres\nstratospheric\nstratous\nstratum\nstratums\nstratus\nstravage\nstravaged\nstravages\nstravaging\nstravaig\nstravaiged\nstravaiging\nstravaigs\nstraw\nstrawberries\nstrawberry\nstrawed\nstrawhat\nstrawier\nstrawiest\nstrawing\nstraws\nstrawy\nstray\nstrayed\nstrayer\nstrayers\nstraying\nstrays\nstreak\nstreaked\nstreaker\nstreakers\nstreakier\nstreakiest\nstreakiness\nstreaking\nstreakings\nstreaks\nstreaky\nstream\nstreamed\nstreamer\nstreamers\nstreamier\nstreamiest\nstreaming\nstreamline\nstreamlined\nstreamliner\nstreamliners\nstreamlines\nstreamlining\nstreams\nstreamy\nstreek\nstreeked\nstreeker\nstreekers\nstreeking\nstreeks\nstreet\nstreetcar\nstreetcars\nstreets\nstrength\nstrengthen\nstrengthened\nstrengthening\nstrengthens\nstrengths\nstrenuous\nstrenuously\nstrenuousness\nstrep\nstreps\nstress\nstressed\nstresses\nstressful\nstressfully\nstressing\nstressless\nstressor\nstressors\nstretch\nstretchability\nstretchable\nstretched\nstretcher\nstretchers\nstretches\nstretchier\nstretchiest\nstretching\nstretchy\nstretta\nstrettas\nstrette\nstretti\nstretto\nstrettos\nstreusel\nstreusels\nstrew\nstrewed\nstrewer\nstrewers\nstrewing\nstrewn\nstrews\nstria\nstriae\nstriate\nstriated\nstriates\nstriating\nstriation\nstriations\nstrick\nstricken\nstrickle\nstrickled\nstrickles\nstrickling\nstricks\nstrict\nstricter\nstrictest\nstrictly\nstrictness\nstricture\nstrictures\nstrid\nstridden\nstride\nstridence\nstridency\nstrident\nstridently\nstrider\nstriders\nstrides\nstriding\nstridor\nstridors\nstridulate\nstridulated\nstridulates\nstridulating\nstridulation\nstridulations\nstridulous\nstridulously\nstrife\nstrifeless\nstrifes\nstrigil\nstrigils\nstrigose\nstrike\nstrikebound\nstrikebreaker\nstrikebreakers\nstriker\nstrikers\nstrikes\nstriking\nstrikingly\nstring\nstringed\nstringencies\nstringency\nstringent\nstringently\nstringer\nstringers\nstringier\nstringiest\nstringiness\nstringing\nstringless\nstrings\nstringy\nstrip\nstripe\nstriped\nstripeless\nstriper\nstripers\nstripes\nstripier\nstripiest\nstriping\nstripings\nstripling\nstriplings\nstripped\nstripper\nstrippers\nstripping\nstrips\nstript\nstriptease\nstripteaser\nstripteasers\nstripteases\nstripy\nstrive\nstrived\nstriven\nstriver\nstrivers\nstrives\nstriving\nstrobe\nstrobes\nstrobic\nstrobil\nstrobila\nstrobilae\nstrobile\nstrobiles\nstrobili\nstrobils\nstroboscope\nstroboscopes\nstroboscopic\nstroboscopically\nstrode\nstroke\nstroked\nstroker\nstrokers\nstrokes\nstroking\nstroll\nstrolled\nstroller\nstrollers\nstrolling\nstrolls\nstroma\nstromal\nstromata\nstrong\nstrongbox\nstrongboxes\nstronger\nstrongest\nstronghold\nstrongholds\nstrongish\nstrongly\nstrongyl\nstrongyls\nstrontia\nstrontias\nstrontic\nstrontium\nstrook\nstrop\nstrophe\nstrophes\nstrophic\nstropped\nstropping\nstrops\nstroud\nstrouds\nstrove\nstrow\nstrowed\nstrowing\nstrown\nstrows\nstroy\nstroyed\nstroyer\nstroyers\nstroying\nstroys\nstruck\nstrucken\nstructural\nstructuralism\nstructuralist\nstructuralists\nstructurally\nstructure\nstructured\nstructures\nstructuring\nstrudel\nstrudels\nstruggle\nstruggled\nstruggles\nstruggling\nstrum\nstruma\nstrumae\nstrumas\nstrummed\nstrummer\nstrummers\nstrumming\nstrumose\nstrumous\nstrumpet\nstrumpets\nstrums\nstrung\nstrunt\nstrunted\nstrunting\nstrunts\nstrut\nstruts\nstrutted\nstrutter\nstrutters\nstrutting\nstrychnine\nstub\nstubbed\nstubbier\nstubbiest\nstubbily\nstubbing\nstubble\nstubbled\nstubbles\nstubblier\nstubbliest\nstubbly\nstubborn\nstubbornly\nstubbornness\nstubby\nstubs\nstucco\nstuccoed\nstuccoer\nstuccoers\nstuccoes\nstuccoing\nstuccos\nstuck\nstud\nstudbook\nstudbooks\nstudded\nstuddie\nstuddies\nstudding\nstuddings\nstudent\nstudents\nstudfish\nstudfishes\nstudhorse\nstudhorses\nstudied\nstudiedly\nstudiedness\nstudier\nstudiers\nstudies\nstudio\nstudios\nstudious\nstudiously\nstudiousness\nstuds\nstudwork\nstudworks\nstudy\nstudying\nstuff\nstuffed\nstuffer\nstuffers\nstuffier\nstuffiest\nstuffily\nstuffiness\nstuffing\nstuffings\nstuffs\nstuffy\nstuiver\nstuivers\nstull\nstulls\nstultification\nstultifications\nstultified\nstultifies\nstultify\nstultifying\nstum\nstumble\nstumbled\nstumbler\nstumblers\nstumbles\nstumbling\nstumblingly\nstummed\nstumming\nstump\nstumpage\nstumpages\nstumped\nstumper\nstumpers\nstumpier\nstumpiest\nstumping\nstumps\nstumpy\nstums\nstun\nstung\nstunk\nstunned\nstunner\nstunners\nstunning\nstunningly\nstuns\nstunsail\nstunsails\nstunt\nstunted\nstunting\nstunts\nstupa\nstupas\nstupe\nstupefaction\nstupefactions\nstupefied\nstupefies\nstupefy\nstupefying\nstupendous\nstupendously\nstupes\nstupid\nstupider\nstupidest\nstupidities\nstupidity\nstupidly\nstupidness\nstupids\nstupor\nstuporous\nstupors\nsturdied\nsturdier\nsturdies\nsturdiest\nsturdily\nsturdiness\nsturdy\nsturgeon\nsturgeons\nsturt\nsturts\nstutter\nstuttered\nstutterer\nstutterers\nstuttering\nstutters\nsty\nstye\nstyed\nstyes\nstygian\nstying\nstylar\nstylate\nstyle\nstylebook\nstylebooks\nstyled\nstyler\nstylers\nstyles\nstylet\nstylets\nstyli\nstyling\nstylings\nstylise\nstylised\nstyliser\nstylisers\nstylises\nstylish\nstylishly\nstylishness\nstylising\nstylist\nstylistic\nstylistically\nstylists\nstylite\nstylites\nstylitic\nstylization\nstylizations\nstylize\nstylized\nstylizer\nstylizers\nstylizes\nstylizing\nstyloid\nstylus\nstyluses\nstymie\nstymied\nstymieing\nstymies\nstymy\nstymying\nstypsis\nstypsises\nstyptic\nstyptics\nstyrax\nstyraxes\nstyrene\nstyrenes\nsuability\nsuable\nsuably\nsuasion\nsuasions\nsuasive\nsuasively\nsuasiveness\nsuasory\nsuave\nsuavely\nsuaveness\nsuaver\nsuavest\nsuavities\nsuavity\nsub\nsuba\nsubabbot\nsubabbots\nsubacid\nsubacrid\nsubacute\nsubadar\nsubadars\nsubadult\nsubadults\nsubagent\nsubagents\nsubah\nsubahdar\nsubahdars\nsubahs\nsubalar\nsubaltern\nsubalternate\nsubalternates\nsubalterns\nsubarea\nsubareas\nsubarid\nsubas\nsubassemblies\nsubassembly\nsubatom\nsubatoms\nsubaverage\nsubaxial\nsubbase\nsubbases\nsubbass\nsubbasses\nsubbed\nsubbing\nsubbings\nsubbreed\nsubbreeds\nsubcategories\nsubcategory\nsubcause\nsubcauses\nsubcell\nsubcells\nsubchief\nsubchiefs\nsubclan\nsubclans\nsubclass\nsubclassed\nsubclasses\nsubclassification\nsubclassifications\nsubclassing\nsubclerk\nsubclerks\nsubcommission\nsubcommissions\nsubcommittee\nsubcommittees\nsubcompact\nsubcompacts\nsubconscious\nsubconsciously\nsubconsciousness\nsubcontinent\nsubcontinents\nsubcontract\nsubcontracted\nsubcontracting\nsubcontractor\nsubcontractors\nsubcontracts\nsubcool\nsubcooled\nsubcooling\nsubcools\nsubcultural\nsubculture\nsubcultured\nsubcultures\nsubculturing\nsubcutaneous\nsubcutaneously\nsubcutes\nsubcutis\nsubcutises\nsubdean\nsubdeans\nsubdeb\nsubdebs\nsubdepartment\nsubdepartments\nsubdepot\nsubdepots\nsubdivide\nsubdivided\nsubdivider\nsubdividers\nsubdivides\nsubdividing\nsubdivision\nsubdivisions\nsubdual\nsubduals\nsubduce\nsubduced\nsubduces\nsubducing\nsubduct\nsubducted\nsubducting\nsubducts\nsubdue\nsubdued\nsubduer\nsubduers\nsubdues\nsubduing\nsubecho\nsubechoes\nsubedit\nsubedited\nsubediting\nsubedits\nsubentries\nsubentry\nsubepoch\nsubepochs\nsuber\nsuberect\nsuberic\nsuberin\nsuberins\nsuberise\nsuberised\nsuberises\nsuberising\nsuberize\nsuberized\nsuberizes\nsuberizing\nsuberose\nsuberous\nsubers\nsubfield\nsubfields\nsubfix\nsubfixes\nsubfloor\nsubfloors\nsubfluid\nsubfreezing\nsubfusc\nsubgenera\nsubgenus\nsubgenuses\nsubgrade\nsubgrades\nsubgroup\nsubgroups\nsubgum\nsubhead\nsubheading\nsubheadings\nsubheads\nsubhuman\nsubhumans\nsubhumid\nsubidea\nsubideas\nsubindex\nsubindexes\nsubindices\nsubitem\nsubitems\nsubito\nsubject\nsubjected\nsubjecting\nsubjection\nsubjections\nsubjective\nsubjectively\nsubjectiveness\nsubjectivism\nsubjectivisms\nsubjectivist\nsubjectivistic\nsubjectivists\nsubjectivity\nsubjects\nsubjoin\nsubjoined\nsubjoining\nsubjoins\nsubjugate\nsubjugated\nsubjugates\nsubjugating\nsubjugation\nsubjugations\nsubjugator\nsubjugators\nsubjunctive\nsubjunctives\nsublate\nsublated\nsublates\nsublating\nsublease\nsubleased\nsubleases\nsubleasing\nsublet\nsublets\nsubletting\nsublevel\nsublevels\nsublicense\nsublicenses\nsublimable\nsublimate\nsublimated\nsublimates\nsublimating\nsublimation\nsublimations\nsublime\nsublimed\nsublimely\nsublimer\nsublimers\nsublimes\nsublimest\nsubliminal\nsubliminally\nsubliming\nsublimities\nsublimity\nsubliterate\nsubmarginal\nsubmarginally\nsubmarine\nsubmariner\nsubmariners\nsubmarines\nsubmerge\nsubmerged\nsubmergence\nsubmerges\nsubmergible\nsubmerging\nsubmerse\nsubmersed\nsubmerses\nsubmersible\nsubmersing\nsubmersion\nsubmersions\nsubmiss\nsubmission\nsubmissions\nsubmissive\nsubmissively\nsubmissiveness\nsubmit\nsubmits\nsubmittal\nsubmittals\nsubmitted\nsubmitting\nsubnasal\nsubnodal\nsubnormal\nsubnormalities\nsubnormality\nsuboptic\nsuboral\nsuborder\nsuborders\nsubordinate\nsubordinated\nsubordinately\nsubordinates\nsubordinating\nsubordination\nsubordinations\nsubordinative\nsuborn\nsubornation\nsubornations\nsuborned\nsuborner\nsuborners\nsuborning\nsuborns\nsuboval\nsubovate\nsuboxide\nsuboxides\nsubpar\nsubpart\nsubparts\nsubpena\nsubpenaed\nsubpenaing\nsubpenas\nsubphyla\nsubplot\nsubplots\nsubpoena\nsubpoenaed\nsubpoenaing\nsubpoenas\nsubpolar\nsubprogram\nsubprograms\nsubpubic\nsubrace\nsubraces\nsubrent\nsubrents\nsubring\nsubrings\nsubroutine\nsubroutines\nsubrule\nsubrules\nsubs\nsubsale\nsubsales\nsubscribe\nsubscribed\nsubscriber\nsubscribers\nsubscribes\nsubscribing\nsubscript\nsubscription\nsubscriptions\nsubscripts\nsubsect\nsubsection\nsubsections\nsubsects\nsubsequence\nsubsequences\nsubsequent\nsubsequently\nsubsere\nsubseres\nsubserve\nsubserved\nsubserves\nsubservience\nsubserviency\nsubservient\nsubserviently\nsubserving\nsubset\nsubsets\nsubshaft\nsubshafts\nsubshrub\nsubshrubs\nsubside\nsubsided\nsubsidence\nsubsidences\nsubsider\nsubsiders\nsubsides\nsubsidiaries\nsubsidiary\nsubsidies\nsubsiding\nsubsidization\nsubsidizations\nsubsidize\nsubsidized\nsubsidizer\nsubsidizers\nsubsidizes\nsubsidizing\nsubsidy\nsubsist\nsubsisted\nsubsistence\nsubsistences\nsubsistent\nsubsisting\nsubsists\nsubsoil\nsubsoiled\nsubsoiling\nsubsoils\nsubsolar\nsubsonic\nsubspace\nsubspaces\nsubstage\nsubstages\nsubstance\nsubstances\nsubstandard\nsubstantial\nsubstantialities\nsubstantiality\nsubstantially\nsubstantialness\nsubstantials\nsubstantiate\nsubstantiated\nsubstantiates\nsubstantiating\nsubstantiation\nsubstantiations\nsubstantiative\nsubstantival\nsubstantivally\nsubstantive\nsubstantively\nsubstantiveness\nsubstantives\nsubstantivize\nsubstantivized\nsubstantivizes\nsubstantivizing\nsubstation\nsubstations\nsubstitutability\nsubstitutable\nsubstitute\nsubstituted\nsubstitutes\nsubstituting\nsubstitution\nsubstitutional\nsubstitutionally\nsubstitutionary\nsubstitutions\nsubstitutive\nsubstitutively\nsubstrata\nsubstrate\nsubstrates\nsubstratum\nsubstructural\nsubstructure\nsubstructures\nsubsumable\nsubsume\nsubsumed\nsubsumes\nsubsuming\nsubsurface\nsubsurfaces\nsubsystem\nsubsystems\nsubteen\nsubteens\nsubtend\nsubtended\nsubtending\nsubtends\nsubterfuge\nsubterfuges\nsubterranean\nsubterraneanly\nsubtext\nsubtexts\nsubties\nsubtile\nsubtiler\nsubtilest\nsubtilties\nsubtilty\nsubtitle\nsubtitled\nsubtitles\nsubtitling\nsubtle\nsubtleness\nsubtler\nsubtlest\nsubtleties\nsubtlety\nsubtly\nsubtone\nsubtones\nsubtonic\nsubtonics\nsubtopic\nsubtopics\nsubtotal\nsubtotaled\nsubtotaling\nsubtotalled\nsubtotalling\nsubtotals\nsubtract\nsubtracted\nsubtracting\nsubtraction\nsubtractions\nsubtractive\nsubtracts\nsubtrahend\nsubtrahends\nsubtribe\nsubtribes\nsubtunic\nsubtunics\nsubtype\nsubtypes\nsubulate\nsubunit\nsubunits\nsuburb\nsuburban\nsuburbanite\nsuburbanites\nsuburbans\nsuburbed\nsuburbia\nsuburbias\nsuburbs\nsubvene\nsubvened\nsubvenes\nsubvening\nsubversion\nsubversions\nsubversive\nsubversively\nsubversiveness\nsubvert\nsubverted\nsubverting\nsubverts\nsubvicar\nsubvicars\nsubviral\nsubvocal\nsubway\nsubways\nsubzone\nsubzones\nsuccah\nsuccahs\nsucceed\nsucceeded\nsucceeder\nsucceeders\nsucceeding\nsucceeds\nsuccess\nsuccesses\nsuccessful\nsuccessfully\nsuccessfulness\nsuccession\nsuccessional\nsuccessionally\nsuccessions\nsuccessive\nsuccessively\nsuccessiveness\nsuccessor\nsuccessors\nsuccinct\nsuccincter\nsuccinctest\nsuccinctly\nsuccinctness\nsuccinic\nsuccinyl\nsuccinyls\nsuccor\nsuccored\nsuccorer\nsuccorers\nsuccories\nsuccoring\nsuccors\nsuccory\nsuccoth\nsuccour\nsuccoured\nsuccouring\nsuccours\nsuccuba\nsuccubae\nsuccubi\nsuccubus\nsuccubuses\nsucculence\nsucculent\nsucculently\nsucculents\nsuccumb\nsuccumbed\nsuccumbing\nsuccumbs\nsuccuss\nsuccussed\nsuccusses\nsuccussing\nsuch\nsuchlike\nsuchness\nsuchnesses\nsuck\nsucked\nsucker\nsuckered\nsuckering\nsuckers\nsuckfish\nsuckfishes\nsucking\nsuckle\nsuckled\nsuckler\nsucklers\nsuckles\nsuckless\nsuckling\nsucklings\nsucks\nsucrase\nsucrases\nsucre\nsucres\nsucrose\nsucroses\nsuction\nsuctional\nsuctions\nsudaria\nsudaries\nsudarium\nsudary\nsudation\nsudations\nsudatories\nsudatory\nsudd\nsudden\nsuddenly\nsuddenness\nsuddens\nsudds\nsudor\nsudoral\nsudoriferous\nsudorific\nsudorifics\nsudors\nsuds\nsudsed\nsudser\nsudsers\nsudses\nsudsier\nsudsiest\nsudsing\nsudsless\nsudsy\nsue\nsued\nsuede\nsueded\nsuedes\nsueding\nsuer\nsuers\nsues\nsuet\nsuets\nsuety\nsuffari\nsuffaris\nsuffer\nsufferable\nsufferableness\nsufferably\nsufferance\nsufferances\nsuffered\nsufferer\nsufferers\nsuffering\nsufferings\nsuffers\nsuffice\nsufficed\nsufficer\nsufficers\nsuffices\nsufficiency\nsufficient\nsufficiently\nsufficing\nsuffix\nsuffixal\nsuffixation\nsuffixations\nsuffixed\nsuffixes\nsuffixing\nsufflate\nsufflated\nsufflates\nsufflating\nsuffocate\nsuffocated\nsuffocates\nsuffocating\nsuffocatingly\nsuffocation\nsuffocations\nsuffocative\nsuffrage\nsuffrages\nsuffragette\nsuffragettes\nsuffragist\nsuffragists\nsuffuse\nsuffused\nsuffuses\nsuffusing\nsuffusion\nsuffusions\nsuffusive\nsugar\nsugarcane\nsugarcanes\nsugarcoat\nsugarcoated\nsugarcoating\nsugarcoats\nsugared\nsugarier\nsugariest\nsugaring\nsugarless\nsugarplum\nsugarplums\nsugars\nsugary\nsuggest\nsuggested\nsuggestibility\nsuggestible\nsuggesting\nsuggestion\nsuggestions\nsuggestive\nsuggestively\nsuggestiveness\nsuggests\nsugh\nsughed\nsughing\nsughs\nsuicidal\nsuicidally\nsuicide\nsuicided\nsuicides\nsuiciding\nsuing\nsuint\nsuints\nsuit\nsuitabilities\nsuitability\nsuitable\nsuitableness\nsuitably\nsuitcase\nsuitcases\nsuite\nsuited\nsuites\nsuiting\nsuitings\nsuitlike\nsuitor\nsuitors\nsuits\nsukiyaki\nsukiyakis\nsukkah\nsukkahs\nsukkoth\nsulcate\nsulcated\nsulci\nsulcus\nsuldan\nsuldans\nsulfa\nsulfanilamide\nsulfas\nsulfate\nsulfated\nsulfates\nsulfating\nsulfid\nsulfide\nsulfides\nsulfids\nsulfinyl\nsulfinyls\nsulfite\nsulfites\nsulfitic\nsulfo\nsulfonals\nsulfone\nsulfones\nsulfonic\nsulfonyl\nsulfonyls\nsulfur\nsulfured\nsulfuret\nsulfureted\nsulfureting\nsulfurets\nsulfuretted\nsulfuretting\nsulfuric\nsulfuring\nsulfurous\nsulfurs\nsulfury\nsulfuryl\nsulfuryls\nsulk\nsulked\nsulker\nsulkers\nsulkier\nsulkies\nsulkiest\nsulkily\nsulkiness\nsulking\nsulks\nsulky\nsullage\nsullages\nsullen\nsullener\nsullenest\nsullenly\nsullenness\nsullied\nsullies\nsully\nsullying\nsulpha\nsulphas\nsulphate\nsulphated\nsulphates\nsulphating\nsulphid\nsulphide\nsulphides\nsulphids\nsulphite\nsulphites\nsulphone\nsulphones\nsulphur\nsulphured\nsulphuring\nsulphurous\nsulphurs\nsulphury\nsultan\nsultana\nsultanas\nsultanate\nsultanates\nsultanic\nsultans\nsultrier\nsultriest\nsultrily\nsultry\nsulu\nsulus\nsum\nsumac\nsumach\nsumachs\nsumacs\nsumless\nsumma\nsummable\nsummae\nsummand\nsummands\nsummaries\nsummarily\nsummarization\nsummarizations\nsummarize\nsummarized\nsummarizer\nsummarizers\nsummarizes\nsummarizing\nsummary\nsummas\nsummate\nsummated\nsummates\nsummating\nsummation\nsummational\nsummations\nsummed\nsummer\nsummered\nsummerhouse\nsummerhouses\nsummerier\nsummeriest\nsummering\nsummerly\nsummers\nsummertime\nsummertimes\nsummery\nsumming\nsummit\nsummital\nsummitries\nsummitry\nsummits\nsummon\nsummoned\nsummoner\nsummoners\nsummoning\nsummons\nsummonsed\nsummonses\nsummonsing\nsumo\nsumos\nsump\nsumps\nsumpter\nsumpters\nsumptuous\nsumptuously\nsumptuousness\nsumpweed\nsumpweeds\nsums\nsun\nsunback\nsunbaked\nsunbath\nsunbathe\nsunbathed\nsunbather\nsunbathers\nsunbathes\nsunbathing\nsunbaths\nsunbeam\nsunbeams\nsunbird\nsunbirds\nsunbow\nsunbows\nsunburn\nsunburned\nsunburning\nsunburns\nsunburnt\nsunburst\nsunbursts\nsundae\nsundaes\nsunder\nsundered\nsunderer\nsunderers\nsundering\nsunders\nsundew\nsundews\nsundial\nsundials\nsundog\nsundogs\nsundown\nsundowns\nsundries\nsundrops\nsundry\nsunfast\nsunfish\nsunfishes\nsunflower\nsunflowers\nsung\nsunglass\nsunglasses\nsunglow\nsunglows\nsunk\nsunken\nsunket\nsunkets\nsunlamp\nsunlamps\nsunland\nsunlands\nsunless\nsunlight\nsunlights\nsunlike\nsunlit\nsunn\nsunna\nsunnas\nsunned\nsunnier\nsunniest\nsunnily\nsunniness\nsunning\nsunns\nsunny\nsunrise\nsunrises\nsunroof\nsunroofs\nsunroom\nsunrooms\nsuns\nsunscald\nsunscalds\nsunscreen\nsunscreening\nsunscreens\nsunset\nsunsets\nsunshade\nsunshades\nsunshine\nsunshines\nsunshiny\nsunspot\nsunspots\nsunstone\nsunstones\nsunstroke\nsunstrokes\nsunsuit\nsunsuits\nsuntan\nsuntanned\nsuntans\nsunup\nsunups\nsunward\nsunwards\nsunwise\nsup\nsupe\nsuper\nsuperable\nsuperableness\nsuperably\nsuperabundance\nsuperabundances\nsuperabundant\nsuperadd\nsuperadded\nsuperadding\nsuperadds\nsuperannuate\nsuperannuated\nsuperannuates\nsuperannuating\nsuperannuation\nsuperannuations\nsuperb\nsuperber\nsuperbest\nsuperbly\nsuperbness\nsupercargo\nsupercargoes\nsupercargos\nsupercharge\nsupercharged\nsupercharger\nsuperchargers\nsupercharges\nsupercharging\nsupercilious\nsuperciliously\nsuperciliousness\nsupercool\nsupercooled\nsupercooling\nsupercools\nsupered\nsuperego\nsuperegos\nsupererogation\nsupererogations\nsupererogatory\nsuperficial\nsuperficialities\nsuperficiality\nsuperficially\nsuperfine\nsuperfix\nsuperfixes\nsuperfluities\nsuperfluity\nsuperfluous\nsuperfluously\nsuperfluousness\nsuperhero\nsuperheroes\nsuperheroine\nsuperheroines\nsuperheterodyne\nsuperheterodynes\nsuperhighway\nsuperhighways\nsuperhuman\nsuperhumanly\nsuperhumanness\nsuperimpose\nsuperimposed\nsuperimposes\nsuperimposing\nsuperimposition\nsuperimpositions\nsuperinduce\nsuperinduced\nsuperinduces\nsuperinducing\nsuperinduction\nsuperinductions\nsupering\nsuperintend\nsuperintended\nsuperintendencies\nsuperintendency\nsuperintendent\nsuperintendents\nsuperintending\nsuperintends\nsuperior\nsuperiority\nsuperiorly\nsuperiors\nsuperjet\nsuperjets\nsuperlain\nsuperlative\nsuperlatively\nsuperlativeness\nsuperlatives\nsuperlay\nsuperlie\nsuperlies\nsuperlying\nsuperman\nsupermarket\nsupermarkets\nsupermen\nsupernal\nsupernally\nsupernatant\nsupernatants\nsupernatural\nsupernaturalism\nsupernaturalist\nsupernaturalistic\nsupernaturalists\nsupernaturally\nsupernaturalness\nsupernumeraries\nsupernumerary\nsuperpower\nsuperpowers\nsupers\nsuperscribe\nsuperscribed\nsuperscribes\nsuperscribing\nsuperscript\nsuperscription\nsuperscriptions\nsuperscripts\nsupersede\nsuperseded\nsuperseder\nsuperseders\nsupersedes\nsuperseding\nsupersedure\nsupersedures\nsupersensitive\nsupersession\nsupersessions\nsupersex\nsupersexes\nsupersonic\nsupersonically\nsupersonics\nsuperstar\nsuperstars\nsuperstition\nsuperstitions\nsuperstitious\nsuperstitiously\nsuperstrong\nsuperstructural\nsuperstructure\nsuperstructures\nsupertanker\nsupertankers\nsupertax\nsupertaxes\nsupervene\nsupervened\nsupervenes\nsupervenient\nsupervening\nsupervention\nsuperventions\nsupervise\nsupervised\nsupervises\nsupervising\nsupervision\nsupervisions\nsupervisor\nsupervisors\nsupervisory\nsuperweapon\nsuperweapons\nsuperwoman\nsuperwomen\nsupes\nsupinate\nsupinated\nsupinates\nsupinating\nsupine\nsupinely\nsupineness\nsupines\nsupped\nsupper\nsuppers\nsupping\nsupplant\nsupplantation\nsupplantations\nsupplanted\nsupplanter\nsupplanters\nsupplanting\nsupplants\nsupple\nsuppled\nsupplely\nsupplement\nsupplemental\nsupplementary\nsupplementation\nsupplementations\nsupplemented\nsupplementing\nsupplements\nsuppleness\nsuppler\nsupples\nsupplest\nsuppliance\nsuppliant\nsuppliantly\nsuppliants\nsupplicant\nsupplicants\nsupplicate\nsupplicated\nsupplicates\nsupplicating\nsupplication\nsupplications\nsupplicatory\nsupplied\nsupplier\nsuppliers\nsupplies\nsuppling\nsupply\nsupplying\nsupport\nsupportability\nsupportable\nsupported\nsupporter\nsupporters\nsupporting\nsupportive\nsupports\nsupposable\nsupposably\nsupposal\nsupposals\nsuppose\nsupposed\nsupposedly\nsupposer\nsupposers\nsupposes\nsupposing\nsupposition\nsuppositional\nsuppositions\nsuppositories\nsuppository\nsuppress\nsuppressed\nsuppresses\nsuppressible\nsuppressing\nsuppression\nsuppressions\nsuppressive\nsuppressor\nsuppressors\nsuppurate\nsuppurated\nsuppurates\nsuppurating\nsuppuration\nsuppurations\nsuppurative\nsupra\nsupremacies\nsupremacist\nsupremacists\nsupremacy\nsupreme\nsupremely\nsupremeness\nsupremer\nsupremest\nsups\nsura\nsurah\nsurahs\nsural\nsuras\nsurbase\nsurbased\nsurbases\nsurcease\nsurceased\nsurceases\nsurceasing\nsurcharge\nsurcharged\nsurcharges\nsurcharging\nsurcoat\nsurcoats\nsurd\nsurds\nsure\nsurefire\nsurely\nsureness\nsurenesses\nsurer\nsurest\nsureties\nsurety\nsuretyship\nsuretyships\nsurf\nsurfable\nsurface\nsurfaced\nsurfacer\nsurfacers\nsurfaces\nsurfacing\nsurfbird\nsurfbirds\nsurfboard\nsurfboarder\nsurfboarders\nsurfboarding\nsurfboards\nsurfboat\nsurfboats\nsurfed\nsurfeit\nsurfeited\nsurfeiting\nsurfeits\nsurfer\nsurfers\nsurffish\nsurffishes\nsurfier\nsurfiest\nsurfing\nsurfings\nsurflike\nsurfs\nsurfy\nsurge\nsurged\nsurgeon\nsurgeons\nsurger\nsurgeries\nsurgers\nsurgery\nsurges\nsurgical\nsurgically\nsurging\nsurgy\nsuricate\nsuricates\nsurlier\nsurliest\nsurlily\nsurliness\nsurly\nsurmise\nsurmised\nsurmiser\nsurmisers\nsurmises\nsurmising\nsurmount\nsurmountable\nsurmounted\nsurmounting\nsurmounts\nsurname\nsurnamed\nsurnamer\nsurnamers\nsurnames\nsurnaming\nsurpass\nsurpassable\nsurpassed\nsurpasses\nsurpassing\nsurpassingly\nsurplice\nsurplices\nsurplus\nsurplusage\nsurplusages\nsurpluses\nsurprint\nsurprinted\nsurprinting\nsurprints\nsurprise\nsurprised\nsurprises\nsurprising\nsurprisingly\nsurprize\nsurprized\nsurprizes\nsurprizing\nsurra\nsurras\nsurreal\nsurrealism\nsurrealist\nsurrealistic\nsurrealistically\nsurrealists\nsurrender\nsurrendered\nsurrendering\nsurrenders\nsurreptitious\nsurreptitiously\nsurrey\nsurreys\nsurrogate\nsurrogated\nsurrogates\nsurrogating\nsurround\nsurrounded\nsurrounding\nsurroundings\nsurrounds\nsurroyal\nsurroyals\nsurtax\nsurtaxed\nsurtaxes\nsurtaxing\nsurtout\nsurtouts\nsurveil\nsurveiled\nsurveiling\nsurveillance\nsurveillances\nsurveillant\nsurveillants\nsurveilled\nsurveilling\nsurveils\nsurvey\nsurveyed\nsurveying\nsurveyor\nsurveyors\nsurveys\nsurvivability\nsurvivable\nsurvival\nsurvivals\nsurvive\nsurvived\nsurviver\nsurvivers\nsurviving\nsurvivives\nsurvivor\nsurvivors\nsusceptibilities\nsusceptibility\nsusceptible\nsusceptibleness\nsusceptibly\nsushi\nsuslik\nsusliks\nsuspect\nsuspected\nsuspecting\nsuspects\nsuspend\nsuspended\nsuspender\nsuspenders\nsuspending\nsuspends\nsuspense\nsuspenseful\nsuspenses\nsuspension\nsuspensions\nsuspensive\nsuspensively\nsuspensories\nsuspensory\nsuspicion\nsuspicions\nsuspicious\nsuspiciously\nsuspiciousness\nsuspire\nsuspired\nsuspires\nsuspiring\nsuss\nsustain\nsustainable\nsustained\nsustaining\nsustains\nsustenance\nsustenances\nsusurrus\nsusurruses\nsutler\nsutlers\nsutra\nsutras\nsutta\nsuttas\nsuttee\nsuttees\nsutural\nsuturally\nsuture\nsutured\nsutures\nsuturing\nsuzerain\nsuzerains\nsvaraj\nsvarajes\nsvedberg\nsvedbergs\nsvelte\nsveltely\nsvelter\nsveltest\nswab\nswabbed\nswabber\nswabbers\nswabbie\nswabbies\nswabbing\nswabby\nswabs\nswaddle\nswaddled\nswaddles\nswaddling\nswag\nswage\nswaged\nswager\nswagers\nswages\nswagged\nswagger\nswaggered\nswaggerer\nswaggerers\nswaggering\nswaggers\nswagging\nswaging\nswagman\nswagmen\nswags\nswail\nswails\nswain\nswainish\nswainishness\nswains\nswale\nswales\nswallow\nswallowable\nswallowed\nswallower\nswallowers\nswallowing\nswallows\nswam\nswami\nswamies\nswamis\nswamp\nswamped\nswamper\nswampers\nswampier\nswampiest\nswamping\nswampish\nswampland\nswamplands\nswamps\nswampy\nswamy\nswan\nswang\nswanherd\nswanherds\nswank\nswanked\nswanker\nswankest\nswankier\nswankiest\nswankily\nswankiness\nswanking\nswanks\nswanky\nswanlike\nswanned\nswanneries\nswannery\nswanning\nswanpan\nswanpans\nswans\nswanskin\nswanskins\nswap\nswapped\nswapper\nswappers\nswapping\nswaps\nswaraj\nswarajes\nsward\nswarded\nswarding\nswards\nsware\nswarf\nswarfs\nswarm\nswarmed\nswarmer\nswarmers\nswarming\nswarms\nswart\nswarth\nswarthier\nswarthiest\nswarths\nswarthy\nswarty\nswash\nswashbuckler\nswashbucklers\nswashbuckling\nswashed\nswasher\nswashers\nswashes\nswashing\nswastica\nswasticas\nswastika\nswastikas\nswat\nswatch\nswatches\nswath\nswathe\nswathed\nswather\nswathers\nswathes\nswathing\nswaths\nswats\nswatted\nswatter\nswatters\nswatting\nsway\nswayable\nswayback\nswaybacked\nswaybacks\nswayed\nswayer\nswayers\nswayful\nswaying\nsways\nswear\nswearer\nswearers\nswearing\nswears\nswearword\nswearwords\nsweat\nsweatband\nsweatbands\nsweatbox\nsweatboxes\nsweated\nsweater\nsweaters\nsweatier\nsweatiest\nsweatily\nsweatiness\nsweating\nsweats\nsweatshop\nsweatshops\nsweaty\nswede\nswedes\nsweenies\nsweeny\nsweep\nsweeper\nsweepers\nsweepier\nsweepiest\nsweeping\nsweepingly\nsweepingness\nsweepings\nsweeps\nsweepstakes\nsweepy\nsweer\nsweet\nsweetbread\nsweetbreads\nsweeten\nsweetened\nsweetener\nsweeteners\nsweetening\nsweetenings\nsweetens\nsweeter\nsweetest\nsweetheart\nsweethearts\nsweetie\nsweeties\nsweeting\nsweetings\nsweetish\nsweetly\nsweetmeat\nsweetmeats\nsweetness\nsweets\nsweetsop\nsweetsops\nswell\nswelled\nsweller\nswellest\nswelling\nswellings\nswells\nswelter\nsweltered\nsweltering\nswelteringly\nswelters\nsweltrier\nsweltriest\nsweltry\nswept\nswerve\nswerved\nswerver\nswervers\nswerves\nswerving\nsweven\nswevens\nswift\nswifter\nswifters\nswiftest\nswiftly\nswiftness\nswifts\nswig\nswigged\nswigger\nswiggers\nswigging\nswigs\nswill\nswilled\nswiller\nswillers\nswilling\nswills\nswim\nswimmable\nswimmer\nswimmers\nswimmier\nswimmiest\nswimmily\nswimming\nswimmingly\nswimmings\nswimmy\nswims\nswimsuit\nswimsuits\nswindle\nswindled\nswindler\nswindlers\nswindles\nswindling\nswine\nswineherd\nswineherds\nswinepox\nswinepoxes\nswing\nswingable\nswinge\nswinged\nswingeing\nswinger\nswingers\nswinges\nswingier\nswingiest\nswinging\nswingingly\nswingle\nswingled\nswingles\nswingling\nswings\nswingy\nswinish\nswinishly\nswink\nswinked\nswinking\nswinks\nswinney\nswinneys\nswipe\nswiped\nswipes\nswiping\nswiple\nswiples\nswipple\nswipples\nswirl\nswirled\nswirlier\nswirliest\nswirling\nswirlingly\nswirls\nswirly\nswish\nswished\nswisher\nswishers\nswishes\nswishier\nswishiest\nswishing\nswishingly\nswishy\nswiss\nswisses\nswitch\nswitchboard\nswitchboards\nswitched\nswitcher\nswitchers\nswitches\nswitching\nswitchman\nswitchmen\nswith\nswithe\nswither\nswithered\nswithering\nswithers\nswithly\nswive\nswived\nswivel\nswiveled\nswiveling\nswivelled\nswivelling\nswivels\nswives\nswivet\nswivets\nswiving\nswizzle\nswizzled\nswizzler\nswizzlers\nswizzles\nswizzling\nswob\nswobbed\nswobber\nswobbers\nswobbing\nswobs\nswollen\nswoon\nswooned\nswooner\nswooners\nswooning\nswooningly\nswoons\nswoop\nswooped\nswooper\nswoopers\nswooping\nswoops\nswoosh\nswooshed\nswooshes\nswooshing\nswop\nswopped\nswopping\nswops\nsword\nswordfish\nswordfishes\nswordlike\nswordman\nswordmen\nswordplay\nswordplayer\nswordplayers\nswords\nswordsman\nswordsmanship\nswordsmen\nswore\nsworn\nswot\nswots\nswotted\nswotter\nswotters\nswotting\nswoun\nswound\nswounded\nswounding\nswounds\nswouned\nswouning\nswouns\nswum\nswung\nsybarite\nsybarites\nsybaritic\nsybaritically\nsybo\nsyboes\nsycamine\nsycamines\nsycamore\nsycamores\nsyce\nsycee\nsycees\nsyces\nsycomore\nsycomores\nsyconia\nsyconium\nsycophancies\nsycophancy\nsycophant\nsycophantic\nsycophantically\nsycophantishly\nsycophants\nsycoses\nsycosis\nsyenite\nsyenites\nsyenitic\nsyke\nsykes\nsyli\nsylis\nsyllabi\nsyllabic\nsyllabically\nsyllabicate\nsyllabicated\nsyllabicates\nsyllabicating\nsyllabication\nsyllabications\nsyllabics\nsyllabification\nsyllabifications\nsyllabified\nsyllabifies\nsyllabify\nsyllabifying\nsyllable\nsyllabled\nsyllables\nsyllabling\nsyllabub\nsyllabubs\nsyllabus\nsyllabuses\nsyllogism\nsyllogisms\nsyllogist\nsyllogistic\nsyllogistically\nsyllogists\nsylph\nsylphic\nsylphid\nsylphids\nsylphish\nsylphlike\nsylphs\nsylphy\nsylva\nsylvae\nsylvan\nsylvanite\nsylvans\nsylvas\nsylvatic\nsylvin\nsylvine\nsylvines\nsylvins\nsylvite\nsylvites\nsymbion\nsymbions\nsymbiont\nsymbionts\nsymbioses\nsymbiosis\nsymbiot\nsymbiote\nsymbiotes\nsymbiotic\nsymbiotically\nsymbiots\nsymbol\nsymboled\nsymbolic\nsymbolically\nsymboling\nsymbolism\nsymbolisms\nsymbolist\nsymbolistic\nsymbolists\nsymbolization\nsymbolizations\nsymbolize\nsymbolized\nsymbolizes\nsymbolizing\nsymbolled\nsymbolling\nsymbologies\nsymbology\nsymbols\nsymmetric\nsymmetrical\nsymmetrically\nsymmetricalness\nsymmetries\nsymmetrization\nsymmetrizations\nsymmetrize\nsymmetrized\nsymmetrizes\nsymmetrizing\nsymmetry\nsympathetic\nsympathetically\nsympathies\nsympathize\nsympathized\nsympathizer\nsympathizers\nsympathizes\nsympathizing\nsympathy\nsympatries\nsympatry\nsymphonic\nsymphonically\nsymphonies\nsymphony\nsympodia\nsymposia\nsymposium\nsymposiums\nsymptom\nsymptomatic\nsymptomatically\nsymptomless\nsymptoms\nsyn\nsynagog\nsynagogs\nsynagogue\nsynagogues\nsynapse\nsynapsed\nsynapses\nsynapsing\nsynapsis\nsynaptic\nsynaptically\nsync\nsyncarp\nsyncarpies\nsyncarps\nsyncarpy\nsynced\nsynch\nsynched\nsynching\nsynchro\nsynchromesh\nsynchromeshes\nsynchronism\nsynchronisms\nsynchronistic\nsynchronization\nsynchronizations\nsynchronize\nsynchronized\nsynchronizer\nsynchronizers\nsynchronizes\nsynchronizing\nsynchronous\nsynchronously\nsynchronousness\nsynchros\nsynchrotron\nsynchrotrons\nsynchs\nsyncing\nsynclinal\nsyncline\nsynclines\nsyncom\nsyncoms\nsyncopal\nsyncopate\nsyncopated\nsyncopates\nsyncopating\nsyncopation\nsyncopations\nsyncopator\nsyncopators\nsyncope\nsyncopes\nsyncopic\nsyncretic\nsyncretism\nsyncretisms\nsyncretistic\nsyncretize\nsyncretized\nsyncretizes\nsyncretizing\nsyncs\nsyncytia\nsyndeses\nsyndesis\nsyndesises\nsyndet\nsyndetic\nsyndets\nsyndic\nsyndical\nsyndicalism\nsyndicalist\nsyndicalists\nsyndicate\nsyndicated\nsyndicates\nsyndicating\nsyndication\nsyndications\nsyndicator\nsyndicators\nsyndics\nsyndrome\nsyndromes\nsyne\nsynecdoche\nsynecdoches\nsynecdochic\nsynecdochical\nsynecdochically\nsynecological\nsynecology\nsynectic\nsynergia\nsynergias\nsynergic\nsynergid\nsynergids\nsynergies\nsynergism\nsynergisms\nsynergistic\nsynergistically\nsynergy\nsynesis\nsynesises\nsyngamic\nsyngamies\nsyngamy\nsynod\nsynodal\nsynodic\nsynodical\nsynods\nsynonym\nsynonyme\nsynonymes\nsynonymic\nsynonymies\nsynonymity\nsynonymize\nsynonymized\nsynonymizes\nsynonymizing\nsynonymous\nsynonymously\nsynonyms\nsynonymy\nsynopses\nsynopsis\nsynopsize\nsynopsized\nsynopsizes\nsynopsizing\nsynoptic\nsynoptically\nsynovia\nsynovial\nsynovias\nsyntactic\nsyntactical\nsyntactically\nsyntax\nsyntaxes\nsynth\nsyntheses\nsynthesis\nsynthesist\nsynthesists\nsynthesize\nsynthesized\nsynthesizer\nsynthesizers\nsynthesizes\nsynthesizing\nsynthetic\nsynthetical\nsynthetically\nsynthetics\nsyntonic\nsyntonies\nsyntony\nsynura\nsynurae\nsypher\nsyphered\nsyphering\nsyphers\nsyphilis\nsyphilises\nsyphilitic\nsyphilitics\nsyphon\nsyphoned\nsyphoning\nsyphons\nsyren\nsyrens\nsyringa\nsyringas\nsyringe\nsyringed\nsyringes\nsyringing\nsyrinx\nsyrinxes\nsyrphian\nsyrphians\nsyrphid\nsyrphids\nsyrup\nsyrups\nsyrupy\nsystem\nsystematic\nsystematically\nsystematicness\nsystematics\nsystematist\nsystematists\nsystematization\nsystematizations\nsystematize\nsystematized\nsystematizer\nsystematizers\nsystematizes\nsystematizing\nsystemic\nsystemically\nsystemics\nsystemization\nsystemizations\nsystemize\nsystemized\nsystemizes\nsystemizing\nsystemless\nsystems\nsystole\nsystoles\nsystolic\nsyzygal\nsyzygial\nsyzygies\nsyzygy\nta\ntab\ntabanid\ntabanids\ntabard\ntabarded\ntabards\ntabaret\ntabarets\ntabbed\ntabbied\ntabbies\ntabbing\ntabbis\ntabbises\ntabby\ntabbying\ntaber\ntabered\ntabering\ntabernacle\ntabernacled\ntabernacles\ntabernacling\ntabers\ntabes\ntabetic\ntabetics\ntabid\ntabla\ntablas\ntable\ntableau\ntableaus\ntableaux\ntablecloth\ntablecloths\ntabled\ntableful\ntablefuls\ntableland\ntablelands\ntableless\ntables\ntablesful\ntablespoon\ntablespoonful\ntablespoonfuls\ntablespoons\ntablet\ntableted\ntableting\ntabletop\ntabletops\ntablets\ntabletted\ntabletting\ntableware\ntabling\ntabloid\ntabloids\ntaboo\ntabooed\ntabooing\ntaboos\ntabor\ntabored\ntaborer\ntaborers\ntaboret\ntaborets\ntaborin\ntaborine\ntaborines\ntaboring\ntaborins\ntabors\ntabour\ntaboured\ntabourer\ntabourers\ntabouret\ntabourets\ntabouring\ntabours\ntabs\ntabu\ntabued\ntabuing\ntabular\ntabulate\ntabulated\ntabulates\ntabulating\ntabulation\ntabulations\ntabulator\ntabulators\ntabus\ntace\ntaces\ntacet\ntach\ntache\ntaches\ntachinid\ntachinids\ntachism\ntachisms\ntachist\ntachiste\ntachistes\ntachistoscope\ntachistoscopes\ntachistoscopic\ntachistoscopically\ntachists\ntachometer\ntachometers\ntachs\ntacit\ntacitly\ntacitness\ntaciturn\ntaciturnity\ntack\ntacked\ntacker\ntackers\ntacket\ntackets\ntackey\ntackier\ntackiest\ntackified\ntackifies\ntackify\ntackifying\ntackily\ntackiness\ntacking\ntackle\ntackled\ntackler\ntacklers\ntackles\ntackless\ntackling\ntacklings\ntacks\ntacky\ntacnode\ntacnodes\ntaco\ntaconite\ntaconites\ntacos\ntact\ntactful\ntactfully\ntactfulness\ntactic\ntactical\ntactically\ntactician\ntacticians\ntactics\ntactile\ntactility\ntaction\ntactions\ntactless\ntactlessly\ntactlessness\ntacts\ntactual\ntactually\ntad\ntadpole\ntadpoles\ntads\ntae\ntael\ntaels\ntaenia\ntaeniae\ntaenias\ntaffarel\ntaffarels\ntafferel\ntafferels\ntaffeta\ntaffetas\ntaffia\ntaffias\ntaffies\ntaffrail\ntaffrails\ntaffy\ntafia\ntafias\ntag\ntagalong\ntagalongs\ntagboard\ntagboards\ntagged\ntagger\ntaggers\ntagging\ntaglike\ntagmeme\ntagmemes\ntagrag\ntagrags\ntags\ntahr\ntahrs\ntahsil\ntahsils\ntaiga\ntaigas\ntaiglach\ntail\ntailback\ntailbacks\ntailbone\ntailbones\ntailcoat\ntailcoats\ntailed\ntailer\ntailers\ntailgate\ntailgated\ntailgates\ntailgating\ntailing\ntailings\ntaille\ntailles\ntailless\ntaillight\ntaillights\ntaillike\ntailor\ntailored\ntailoring\ntailors\ntailpiece\ntailpieces\ntailpipe\ntailpipes\ntailrace\ntailraces\ntails\ntailskid\ntailskids\ntailspin\ntailspins\ntailwind\ntailwinds\ntain\ntains\ntaint\ntainted\ntainting\ntaintless\ntaints\ntaipan\ntaipans\ntaj\ntajes\ntaka\ntakable\ntakahe\ntakahes\ntake\ntakeable\ntakedown\ntakedowns\ntaken\ntakeoff\ntakeoffs\ntakeout\ntakeouts\ntakeover\ntakeovers\ntaker\ntakers\ntakes\ntakin\ntaking\ntakingly\ntakings\ntakins\ntala\ntalapoin\ntalapoins\ntalar\ntalaria\ntalars\ntalas\ntalc\ntalced\ntalcing\ntalcked\ntalcking\ntalcky\ntalcose\ntalcous\ntalcs\ntalcum\ntalcums\ntale\ntalebearer\ntalebearers\ntalent\ntalented\ntalents\ntaler\ntalers\ntales\ntalesman\ntalesmen\ntaleteller\ntaletellers\ntaleysim\ntali\ntalion\ntalions\ntaliped\ntalipeds\ntalipes\ntalipot\ntalipots\ntalisman\ntalismanic\ntalismanically\ntalismans\ntalk\ntalkable\ntalkative\ntalkatively\ntalkativeness\ntalked\ntalker\ntalkers\ntalkie\ntalkier\ntalkies\ntalkiest\ntalking\ntalkings\ntalks\ntalky\ntall\ntallage\ntallaged\ntallages\ntallaging\ntallaisim\ntallboy\ntallboys\ntaller\ntallest\ntallied\ntallier\ntalliers\ntallies\ntallish\ntallith\ntallithes\ntallithim\ntallitoth\ntallness\ntallnesses\ntallol\ntallols\ntallow\ntallowed\ntallowing\ntallows\ntallowy\ntally\ntallyho\ntallyhoed\ntallyhoing\ntallyhos\ntallying\ntallyman\ntallymen\ntalmudic\ntalon\ntaloned\ntalons\ntalooka\ntalookas\ntaluk\ntaluka\ntalukas\ntaluks\ntalus\ntaluses\ntam\ntamable\ntamal\ntamale\ntamales\ntamals\ntamandu\ntamandua\ntamanduas\ntamandus\ntamarack\ntamaracks\ntamarao\ntamaraos\ntamarau\ntamaraus\ntamarin\ntamarind\ntamarinds\ntamarins\ntamarisk\ntamarisks\ntamasha\ntamashas\ntambac\ntambacs\ntambala\ntambalas\ntambour\ntamboura\ntambouras\ntamboured\ntambourine\ntambourines\ntambouring\ntambours\ntambur\ntambura\ntamburas\ntamburs\ntame\ntameable\ntamed\ntamein\ntameins\ntameless\ntamely\ntameness\ntamenesses\ntamer\ntamers\ntames\ntamest\ntaming\ntamis\ntamises\ntammie\ntammies\ntammy\ntamp\ntampala\ntampalas\ntampan\ntampans\ntamped\ntamper\ntampered\ntamperer\ntamperers\ntampering\ntampers\ntamping\ntampion\ntampions\ntampon\ntamponed\ntamponing\ntampons\ntamps\ntams\ntan\ntanager\ntanagers\ntanbark\ntanbarks\ntandem\ntandems\ntang\ntanged\ntangelo\ntangelos\ntangence\ntangences\ntangencies\ntangency\ntangent\ntangential\ntangentially\ntangents\ntangerine\ntangerines\ntangibility\ntangible\ntangibleness\ntangibles\ntangibly\ntangier\ntangiest\ntanging\ntangle\ntangled\ntanglement\ntanglements\ntangler\ntanglers\ntangles\ntanglier\ntangliest\ntangling\ntangly\ntango\ntangoed\ntangoing\ntangos\ntangram\ntangrams\ntangs\ntangy\ntanist\ntanistries\ntanistry\ntanists\ntank\ntanka\ntankage\ntankages\ntankard\ntankards\ntankas\ntanked\ntanker\ntankers\ntankful\ntankfuls\ntanking\ntanks\ntankship\ntankships\ntannable\ntannage\ntannages\ntannate\ntannates\ntanned\ntanner\ntanneries\ntanners\ntannery\ntannest\ntannic\ntannin\ntanning\ntannings\ntannins\ntannish\ntanrec\ntanrecs\ntans\ntansies\ntansy\ntantalic\ntantalize\ntantalized\ntantalizes\ntantalizing\ntantalizingly\ntantalum\ntantalums\ntantalus\ntantaluses\ntantamount\ntantara\ntantaras\ntantivies\ntantivy\ntanto\ntantra\ntantras\ntantric\ntantrum\ntantrums\ntanyard\ntanyards\ntao\ntaos\ntap\ntapa\ntapadera\ntapaderas\ntapadero\ntapaderos\ntapalo\ntapalos\ntapas\ntape\ntaped\ntapeless\ntapelike\ntapeline\ntapelines\ntaper\ntapered\ntaperer\ntaperers\ntapering\ntapers\ntapes\ntapestried\ntapestries\ntapestry\ntapestrying\ntapeta\ntapetal\ntapetum\ntapeworm\ntapeworms\ntaphole\ntapholes\ntaphouse\ntaphouses\ntaping\ntapioca\ntapiocas\ntapir\ntapirs\ntapis\ntapises\ntapped\ntapper\ntappers\ntappet\ntappets\ntapping\ntappings\ntaproom\ntaprooms\ntaproot\ntaproots\ntaps\ntapster\ntapsters\ntar\ntarantas\ntarantases\ntarantella\ntarantellas\ntarantula\ntarantulas\ntarboosh\ntarbooshes\ntarbush\ntarbushes\ntardier\ntardies\ntardiest\ntardily\ntardiness\ntardinesses\ntardo\ntardy\ntare\ntared\ntares\ntarge\ntarges\ntarget\ntargeted\ntargeting\ntargets\ntariff\ntariffed\ntariffing\ntariffs\ntaring\ntarlatan\ntarlatans\ntarletan\ntarletans\ntarmac\ntarmacs\ntarn\ntarnal\ntarnally\ntarnish\ntarnishable\ntarnished\ntarnishes\ntarnishing\ntarns\ntaro\ntaroc\ntarocs\ntarok\ntaroks\ntaros\ntarot\ntarots\ntarp\ntarpan\ntarpans\ntarpaper\ntarpapers\ntarpaulin\ntarpaulins\ntarpon\ntarpons\ntarps\ntarragon\ntarragons\ntarre\ntarred\ntarres\ntarried\ntarrier\ntarriers\ntarries\ntarriest\ntarring\ntarry\ntarrying\ntars\ntarsal\ntarsals\ntarsi\ntarsia\ntarsias\ntarsier\ntarsiers\ntarsus\ntart\ntartan\ntartana\ntartanas\ntartans\ntartar\ntartaric\ntartars\ntarted\ntarter\ntartest\ntarting\ntartish\ntartlet\ntartlets\ntartly\ntartness\ntartnesses\ntartrate\ntartrates\ntarts\ntartufe\ntartufes\ntartuffe\ntartuffes\ntarty\ntarweed\ntarweeds\ntarzan\ntarzans\ntas\ntask\ntasked\ntasking\ntaskmaster\ntaskmasters\ntasks\ntaskwork\ntaskworks\ntass\ntasse\ntassel\ntasseled\ntasseling\ntasselled\ntasselling\ntassels\ntasses\ntasset\ntassets\ntassie\ntassies\ntastable\ntaste\ntasted\ntasteful\ntastefully\ntastefulness\ntasteless\ntastelessly\ntastelessness\ntaster\ntasters\ntastes\ntastier\ntastiest\ntastily\ntastiness\ntasting\ntasty\ntat\ntatami\ntatamis\ntatar\ntate\ntater\ntaters\ntates\ntatouay\ntatouays\ntats\ntatted\ntatter\ntatterdemalion\ntatterdemalions\ntattered\ntattering\ntatters\ntattersall\ntattersalls\ntattier\ntattiest\ntatting\ntattings\ntattle\ntattled\ntattler\ntattlers\ntattles\ntattletale\ntattletales\ntattling\ntattoo\ntattooed\ntattooer\ntattooers\ntattooing\ntattooist\ntattooists\ntattoos\ntatty\ntau\ntaught\ntaunt\ntaunted\ntaunter\ntaunters\ntaunting\ntauntingly\ntaunts\ntaupe\ntaupes\ntaurine\ntaurines\ntaus\ntaut\ntautaug\ntautaugs\ntauted\ntauten\ntautened\ntautening\ntautens\ntauter\ntautest\ntauting\ntautly\ntautness\ntautnesses\ntautog\ntautogs\ntautological\ntautologically\ntautologies\ntautologous\ntautologously\ntautology\ntautomer\ntautomers\ntautonym\ntautonyms\ntauts\ntav\ntavern\ntaverner\ntaverners\ntaverns\ntavs\ntaw\ntawdrier\ntawdries\ntawdriest\ntawdrily\ntawdry\ntawed\ntawer\ntawers\ntawie\ntawing\ntawney\ntawneys\ntawnier\ntawnies\ntawniest\ntawnily\ntawny\ntawpie\ntawpies\ntaws\ntawse\ntawsed\ntawses\ntawsing\ntax\ntaxa\ntaxable\ntaxables\ntaxably\ntaxation\ntaxations\ntaxed\ntaxeme\ntaxemes\ntaxemic\ntaxer\ntaxers\ntaxes\ntaxi\ntaxicab\ntaxicabs\ntaxidermist\ntaxidermists\ntaxidermy\ntaxied\ntaxies\ntaxiing\ntaximan\ntaximen\ntaximeter\ntaximeters\ntaxing\ntaxingly\ntaxis\ntaxite\ntaxites\ntaxitic\ntaxiway\ntaxiways\ntaxless\ntaxman\ntaxmen\ntaxon\ntaxonomic\ntaxonomically\ntaxonomies\ntaxonomist\ntaxonomists\ntaxonomy\ntaxons\ntaxpaid\ntaxpayer\ntaxpayers\ntaxpaying\ntaxus\ntaxwise\ntaxying\ntazza\ntazzas\ntazze\ntea\nteaberries\nteaberry\nteaboard\nteaboards\nteabowl\nteabowls\nteabox\nteaboxes\nteacake\nteacakes\nteacart\nteacarts\nteach\nteachable\nteachableness\nteachably\nteacher\nteachers\nteaches\nteaching\nteachings\nteacup\nteacupful\nteacupfuls\nteacups\nteahouse\nteahouses\nteak\nteakettle\nteakettles\nteaks\nteakwood\nteakwoods\nteal\nteals\nteam\nteamaker\nteamakers\nteamed\nteaming\nteammate\nteammates\nteams\nteamster\nteamsters\nteamwork\nteamworks\nteapot\nteapots\nteapoy\nteapoys\ntear\ntearable\nteardown\nteardowns\nteardrop\nteardrops\nteared\ntearer\ntearers\ntearful\ntearfully\ntearfulness\nteargas\nteargases\nteargassed\nteargasses\nteargassing\ntearier\nteariest\ntearily\nteariness\ntearing\ntearless\ntearoom\ntearooms\ntears\nteary\nteas\ntease\nteased\nteasel\nteaseled\nteaseler\nteaselers\nteaseling\nteaselled\nteaselling\nteasels\nteaser\nteasers\nteases\nteashop\nteashops\nteasing\nteasingly\nteaspoon\nteaspoonful\nteaspoonfuls\nteaspoons\nteat\nteated\nteatime\nteatimes\nteats\nteaware\nteawares\nteazel\nteazeled\nteazeling\nteazelled\nteazelling\nteazels\nteazle\nteazled\nteazles\nteazling\nteched\ntechier\ntechiest\ntechily\ntechnetronic\ntechnic\ntechnical\ntechnicalities\ntechnicality\ntechnically\ntechnician\ntechnicians\ntechnics\ntechnique\ntechniques\ntechnocracies\ntechnocracy\ntechnocrat\ntechnocratic\ntechnocrats\ntechnologic\ntechnological\ntechnologically\ntechnologies\ntechnologist\ntechnologists\ntechnologize\ntechnology\ntechnostructure\ntechnostructures\ntechy\ntecta\ntectal\ntectonic\ntectonics\ntectrices\ntectrix\ntectum\nted\ntedded\ntedder\ntedders\nteddies\ntedding\nteddy\ntedious\ntediously\ntediousness\ntedium\ntediums\nteds\ntee\nteed\nteeing\nteel\nteels\nteem\nteemed\nteemer\nteemers\nteeming\nteemingly\nteems\nteen\nteenage\nteenaged\nteenager\nteenagers\nteener\nteeners\nteenful\nteenier\nteeniest\nteens\nteensier\nteensiest\nteensy\nteentsier\nteentsiest\nteentsy\nteeny\nteepee\nteepees\ntees\nteeter\nteetered\nteetering\nteeters\nteeth\nteethe\nteethed\nteether\nteethers\nteethes\nteething\nteethings\nteetotal\nteetotaled\nteetotaler\nteetotalers\nteetotaling\nteetotalism\nteetotalist\nteetotalists\nteetotalled\nteetotaller\nteetotallers\nteetotalling\nteetotally\nteetotals\nteetotum\nteetotums\nteff\nteffs\nteg\ntegmen\ntegmenta\ntegmina\ntegminal\ntegs\ntegua\nteguas\ntegular\ntegumen\ntegument\nteguments\ntegumina\nteiglach\nteiid\nteiids\nteind\nteinds\ntektite\ntektites\ntektitic\ntel\ntela\ntelae\ntelamon\ntelamones\ntele\ntelecast\ntelecasted\ntelecaster\ntelecasters\ntelecasting\ntelecasts\ntelecommunication\ntelecommunications\nteleconference\nteleconferences\nteleconferencing\ntelecourse\ntelecourses\nteledu\nteledus\ntelefilm\ntelefilms\ntelega\ntelegas\ntelegenic\ntelegonies\ntelegony\ntelegram\ntelegrammed\ntelegramming\ntelegrams\ntelegraph\ntelegraphed\ntelegrapher\ntelegraphers\ntelegraphic\ntelegraphing\ntelegraphist\ntelegraphists\ntelegraphs\ntelegraphy\ntelekinesis\ntelekinetic\nteleman\ntelemark\ntelemarks\ntelemen\ntelemeter\ntelemeters\ntelemetries\ntelemetry\nteleologic\nteleological\nteleologically\nteleologies\nteleology\nteleost\nteleosts\ntelepathic\ntelepathically\ntelepathy\ntelephone\ntelephoned\ntelephoner\ntelephoners\ntelephones\ntelephonic\ntelephonically\ntelephoning\ntelephony\ntelephoto\ntelephotographic\ntelephotography\nteleplay\nteleplays\nteleport\nteleported\nteleporting\nteleports\nteleprinter\nteleprinters\nteleprocessing\nteleran\ntelerans\nteles\ntelescope\ntelescoped\ntelescopes\ntelescopic\ntelescopically\ntelescoping\nteleses\ntelesis\ntelethon\ntelethons\nteletypewriter\nteletypewriters\nteleview\nteleviewed\nteleviewer\nteleviewers\nteleviewing\nteleviews\ntelevise\ntelevised\ntelevises\ntelevising\ntelevision\ntelevisionary\ntelevisions\ntelevisor\ntelevisors\ntelex\ntelexed\ntelexes\ntelexing\ntelfer\ntelfered\ntelfering\ntelfers\ntelford\ntelfords\ntelia\ntelial\ntelic\ntelium\ntell\ntellable\nteller\ntellers\ntellies\ntellieses\ntelling\ntells\ntelltale\ntelltales\ntelluric\ntelluride\ntellurides\ntellurium\ntelly\nteloi\ntelome\ntelomes\ntelomic\ntelos\ntelpher\ntelphered\ntelphering\ntelphers\ntels\ntelson\ntelsonic\ntelsons\ntemblor\ntemblores\ntemblors\ntemerities\ntemerity\ntemp\ntempeh\ntempehs\ntemper\ntempera\ntemperable\ntemperament\ntemperamental\ntemperamentally\ntemperaments\ntemperance\ntemperances\ntemperas\ntemperate\ntemperately\ntemperateness\ntemperature\ntemperatures\ntempered\ntemperer\ntemperers\ntempering\ntempers\ntempest\ntempested\ntempesting\ntempests\ntempestuous\ntempestuously\ntempestuousness\ntempi\ntemplar\ntemplars\ntemplate\ntemplates\ntemple\ntempled\ntemples\ntemplet\ntemplets\ntempo\ntemporal\ntemporalities\ntemporality\ntemporally\ntemporals\ntemporaries\ntemporarily\ntemporariness\ntemporary\ntemporization\ntemporizations\ntemporize\ntemporized\ntemporizer\ntemporizers\ntemporizes\ntemporizing\ntempos\ntemps\ntempt\ntemptable\ntemptation\ntemptations\ntempted\ntempter\ntempters\ntempting\ntemptingly\ntemptress\ntemptresses\ntempts\ntempura\ntempuras\nten\ntenability\ntenable\ntenableness\ntenably\ntenace\ntenaces\ntenacious\ntenaciously\ntenaciousness\ntenacities\ntenacity\ntenacula\ntenail\ntenaille\ntenailles\ntenails\ntenancies\ntenancy\ntenant\ntenantable\ntenanted\ntenanting\ntenantless\ntenantries\ntenantry\ntenants\ntench\ntenches\ntend\ntendance\ntendances\ntended\ntendence\ntendences\ntendencies\ntendency\ntendentious\ntendentiously\ntendentiousness\ntender\ntendered\ntenderer\ntenderers\ntenderest\ntenderfeet\ntenderfoot\ntenderfoots\ntenderhearted\ntenderheartedly\ntenderheartedness\ntendering\ntenderization\ntenderizations\ntenderize\ntenderized\ntenderizer\ntenderizers\ntenderizes\ntenderizing\ntenderloin\ntenderloins\ntenderly\ntenderness\ntenders\ntending\ntendon\ntendons\ntendril\ntendrilous\ntendrils\ntends\ntenebrae\ntenement\ntenementary\ntenements\ntenesmic\ntenesmus\ntenesmuses\ntenet\ntenets\ntenfold\ntenfolds\ntenia\nteniae\ntenias\nteniasis\nteniasises\ntenner\ntenners\ntennis\ntennises\ntennist\ntennists\ntenon\ntenoned\ntenoner\ntenoners\ntenoning\ntenons\ntenor\ntenorite\ntenorites\ntenors\ntenotomies\ntenotomy\ntenour\ntenours\ntenpence\ntenpences\ntenpenny\ntenpin\ntenpins\ntenrec\ntenrecs\ntens\ntense\ntensed\ntensely\ntenseness\ntenser\ntenses\ntensest\ntensible\ntensibly\ntensile\ntensility\ntensing\ntension\ntensional\ntensioned\ntensioning\ntensionless\ntensions\ntensities\ntensity\ntensive\ntensor\ntensors\ntent\ntentacle\ntentacled\ntentacles\ntentage\ntentages\ntentative\ntentatively\ntentativeness\ntented\ntenter\ntentered\ntenterhook\ntenterhooks\ntentering\ntenters\ntenth\ntenthly\ntenths\ntentie\ntentier\ntentiest\ntenting\ntentless\ntentlike\ntents\ntenty\ntenues\ntenuis\ntenuities\ntenuity\ntenuous\ntenuously\ntenuousness\ntenure\ntenured\ntenures\ntenurial\ntenurially\ntenuti\ntenuto\ntenutos\nteocalli\nteocallis\nteopan\nteopans\nteosinte\nteosintes\ntepa\ntepal\ntepals\ntepas\ntepee\ntepees\ntepefied\ntepefies\ntepefy\ntepefying\ntephra\ntephras\ntephrite\ntephrites\ntepid\ntepidities\ntepidity\ntepidly\ntepidness\ntepoy\ntequila\ntequilas\nterai\nterais\nteraohm\nteraohms\nteraph\nteraphim\nteratism\nteratisms\nteratoid\nteratoma\nteratomas\nteratomata\nterbia\nterbias\nterbic\nterbium\nterbiums\nterce\ntercel\ntercelet\ntercelets\ntercels\ntercentenaries\ntercentenary\ntercentennial\ntercentennials\nterces\ntercet\ntercets\nterebene\nterebenes\nterebic\nteredines\nteredo\nteredos\nterefah\nterete\nterga\ntergal\ntergite\ntergites\ntergiversate\ntergiversated\ntergiversates\ntergiversating\ntergiversation\ntergiversations\ntergiversator\ntergiversators\ntergum\nteriyaki\nteriyakis\nterm\ntermagant\ntermagants\ntermed\ntermer\ntermers\nterminable\nterminableness\nterminably\nterminal\nterminally\nterminals\nterminate\nterminated\nterminates\nterminating\ntermination\nterminational\nterminations\nterminative\nterminatively\nterminator\nterminators\nterming\ntermini\nterminological\nterminologically\nterminologies\nterminology\nterminus\nterminuses\ntermite\ntermites\ntermitic\ntermless\ntermly\ntermor\ntermors\nterms\ntermtime\ntermtimes\ntern\nternaries\nternary\nternate\nterne\nternes\nternion\nternions\nterns\nterpene\nterpenes\nterpenic\nterpinol\nterpinols\nterpsichorean\nterpsichoreans\nterra\nterrace\nterraced\nterraces\nterracing\nterrae\nterrain\nterrains\nterrane\nterranes\nterrapin\nterrapins\nterraria\nterrarium\nterrariums\nterras\nterrases\nterrazzo\nterrazzos\nterreen\nterreens\nterrella\nterrellas\nterrene\nterrenes\nterrestrial\nterrestrially\nterrestrials\nterret\nterrets\nterrible\nterribleness\nterribly\nterrier\nterriers\nterries\nterrific\nterrifically\nterrified\nterrifies\nterrify\nterrifying\nterrifyingly\nterrine\nterrines\nterrit\nterritorial\nterritorialities\nterritoriality\nterritorialization\nterritorializations\nterritorialize\nterritorialized\nterritorializes\nterritorializing\nterritorially\nterritories\nterritory\nterrits\nterror\nterrorism\nterrorisms\nterrorist\nterroristic\nterrorists\nterrorization\nterrorizations\nterrorize\nterrorized\nterrorizes\nterrorizing\nterrorless\nterrors\nterry\nterse\ntersely\nterseness\nterser\ntersest\ntertial\ntertials\ntertian\ntertians\ntertiaries\ntertiary\ntesla\nteslas\ntessellate\ntessellated\ntessellates\ntessellating\ntessellation\ntessellations\ntessera\ntesserae\ntest\ntesta\ntestability\ntestable\ntestacies\ntestacy\ntestae\ntestament\ntestamentary\ntestaments\ntestate\ntestator\ntestators\ntested\ntestee\ntestees\ntester\ntesters\ntestes\ntesticle\ntesticles\ntestier\ntestiest\ntestified\ntestifies\ntestify\ntestifying\ntestily\ntestimonial\ntestimonials\ntestimonies\ntestimony\ntestiness\ntesting\ntestis\nteston\ntestons\ntestoon\ntestoons\ntests\ntestudines\ntestudo\ntestudos\ntesty\ntet\ntetanal\ntetanic\ntetanics\ntetanies\ntetanise\ntetanised\ntetanises\ntetanising\ntetanize\ntetanized\ntetanizes\ntetanizing\ntetanoid\ntetanus\ntetanuses\ntetany\ntetched\ntetchier\ntetchiest\ntetchily\ntetchy\nteth\ntether\ntethered\ntethering\ntethers\nteths\ntetotum\ntetotums\ntetra\ntetrachloride\ntetrachlorides\ntetracid\ntetracids\ntetracycline\ntetracyclines\ntetrad\ntetradic\ntetrads\ntetragon\ntetragons\ntetrahedra\ntetrahedral\ntetrahedrally\ntetrahedron\ntetrahedrons\ntetralogies\ntetralogy\ntetramer\ntetramers\ntetrapod\ntetrapods\ntetrarch\ntetrarchs\ntetras\ntetrode\ntetrodes\ntetroxid\ntetroxids\ntetryl\ntetryls\ntets\ntetter\ntetters\nteuch\nteugh\nteughly\ntew\ntewed\ntewing\ntews\ntexas\ntexases\ntext\ntextbook\ntextbookish\ntextbooks\ntextile\ntextiles\ntextless\ntexts\ntextual\ntextually\ntextuaries\ntextuary\ntextural\ntexturally\ntexture\ntextured\ntextures\ntexturing\nthack\nthacked\nthacking\nthacks\nthae\nthairm\nthairms\nthalami\nthalamic\nthalamus\nthaler\nthalers\nthalli\nthallic\nthallium\nthalliums\nthalloid\nthallous\nthallus\nthalluses\nthan\nthanage\nthanages\nthanatos\nthanatoses\nthane\nthanes\nthank\nthanked\nthanker\nthankers\nthankful\nthankfuller\nthankfullest\nthankfully\nthankfulness\nthanking\nthankless\nthanklessly\nthanklessness\nthanks\nthanksgiving\nthanksgivings\ntharm\ntharms\nthat\nthataway\nthatch\nthatched\nthatcher\nthatchers\nthatches\nthatching\nthatchy\nthaw\nthawed\nthawer\nthawers\nthawing\nthawless\nthaws\nthe\nthearchies\nthearchy\ntheater\ntheaters\ntheatre\ntheatres\ntheatric\ntheatrical\ntheatricality\ntheatrically\ntheatricals\ntheatrics\nthebaine\nthebaines\nthebe\ntheca\nthecae\nthecal\nthecate\nthee\ntheelin\ntheelins\ntheelol\ntheelols\ntheft\nthefts\nthegn\nthegnly\nthegns\nthein\ntheine\ntheines\ntheins\ntheir\ntheirs\ntheism\ntheisms\ntheist\ntheistic\ntheistical\ntheistically\ntheists\nthelitis\nthelitises\nthem\nthematic\nthematically\ntheme\nthemes\nthemselves\nthen\nthenage\nthenages\nthenal\nthenar\nthenars\nthence\nthenceforth\nthenceforward\nthenceforwards\nthens\ntheocracies\ntheocracy\ntheocrat\ntheocratic\ntheocratical\ntheocratically\ntheocrats\ntheodicies\ntheodicy\ntheodolite\ntheodolites\ntheodolitic\ntheogonies\ntheogony\ntheolog\ntheologian\ntheologians\ntheological\ntheologically\ntheologies\ntheologize\ntheologized\ntheologizer\ntheologizers\ntheologizes\ntheologizing\ntheologs\ntheology\ntheonomies\ntheonomy\ntheorbo\ntheorbos\ntheorem\ntheorematic\ntheorems\ntheoretic\ntheoretical\ntheoretically\ntheoretician\ntheoreticians\ntheoretics\ntheories\ntheorise\ntheorised\ntheorises\ntheorising\ntheorist\ntheorists\ntheorization\ntheorizations\ntheorize\ntheorized\ntheorizer\ntheorizers\ntheorizes\ntheorizing\ntheory\ntheosophical\ntheosophically\ntheosophist\ntheosophists\ntheosophy\ntherapeutic\ntherapeutically\ntherapeutics\ntherapeutist\ntherapeutists\ntherapies\ntherapist\ntherapists\ntherapy\nthere\nthereabout\nthereabouts\nthereafter\nthereat\nthereby\ntherefor\ntherefore\ntherefrom\ntherein\nthereinafter\nthereinto\ntheremin\ntheremins\nthereof\nthereon\ntheres\nthereto\ntheretofore\nthereunder\nthereupon\ntherewith\ntheriac\ntheriaca\ntheriacas\ntheriacs\ntherm\nthermae\nthermal\nthermally\nthermals\ntherme\nthermel\nthermels\nthermes\nthermic\nthermion\nthermions\nthermite\nthermites\nthermocouple\nthermocouples\nthermodynamic\nthermodynamical\nthermodynamically\nthermodynamicist\nthermodynamicists\nthermodynamics\nthermoelectric\nthermoelectricity\nthermometer\nthermometers\nthermometric\nthermometrically\nthermometries\nthermometry\nthermonuclear\nthermopile\nthermopiles\nthermoplastic\nthermoplasticity\nthermoplastics\nthermos\nthermoses\nthermoset\nthermosets\nthermosetting\nthermostat\nthermostatic\nthermostatically\nthermostats\ntherms\ntheroid\ntheropod\ntheropods\nthesauri\nthesaurus\nthesauruses\nthese\ntheses\nthesis\nthespian\nthespians\ntheta\nthetas\nthetic\nthetical\ntheurgic\ntheurgies\ntheurgy\nthew\nthewless\nthews\nthewy\nthey\nthiamin\nthiamine\nthiamines\nthiamins\nthiazide\nthiazides\nthiazin\nthiazine\nthiazines\nthiazins\nthiazol\nthiazole\nthiazoles\nthiazols\nthick\nthicken\nthickened\nthickener\nthickeners\nthickening\nthickenings\nthickens\nthicker\nthickest\nthicket\nthickets\nthickety\nthickish\nthickly\nthickness\nthicknesses\nthicks\nthickset\nthicksets\nthief\nthieve\nthieved\nthieveries\nthievery\nthieves\nthieving\nthievingly\nthievish\nthievishly\nthievishness\nthigh\nthighbone\nthighbones\nthighed\nthighs\nthill\nthills\nthimble\nthimbleful\nthimblefuls\nthimbles\nthin\nthinclad\nthinclads\nthindown\nthindowns\nthine\nthing\nthings\nthink\nthinkable\nthinker\nthinkers\nthinking\nthinkingly\nthinkings\nthinks\nthinly\nthinned\nthinner\nthinners\nthinness\nthinnesses\nthinnest\nthinning\nthinnish\nthins\nthio\nthiol\nthiolic\nthiols\nthionate\nthionates\nthionic\nthionin\nthionine\nthionines\nthionins\nthionyl\nthionyls\nthiophen\nthiophens\nthiotepa\nthiotepas\nthiourea\nthioureas\nthir\nthiram\nthirams\nthird\nthirdly\nthirds\nthirl\nthirlage\nthirlages\nthirled\nthirling\nthirls\nthirst\nthirsted\nthirster\nthirsters\nthirstier\nthirstiest\nthirstily\nthirstiness\nthirsting\nthirsts\nthirsty\nthirteen\nthirteens\nthirteenth\nthirteenths\nthirties\nthirtieth\nthirtieths\nthirty\nthis\nthistle\nthistledown\nthistles\nthistly\nthither\nthitherto\ntho\nthole\ntholed\ntholepin\ntholepins\ntholes\ntholing\ntholoi\ntholos\nthong\nthonged\nthongs\nthoracal\nthoraces\nthoracic\nthorax\nthoraxes\nthoria\nthorias\nthoric\nthorite\nthorites\nthorium\nthoriums\nthorn\nthorned\nthornier\nthorniest\nthornily\nthorniness\nthorning\nthornless\nthornlike\nthorns\nthorny\nthoro\nthoron\nthorons\nthorough\nthoroughbred\nthoroughbreds\nthorougher\nthoroughest\nthoroughfare\nthoroughfares\nthoroughgoing\nthoroughly\nthoroughness\nthorp\nthorpe\nthorpes\nthorps\nthose\nthou\nthoued\nthough\nthought\nthoughtful\nthoughtfully\nthoughtfulness\nthoughtless\nthoughtlessly\nthoughtlessness\nthoughts\nthouing\nthous\nthousand\nthousandfold\nthousands\nthousandth\nthousandths\nthowless\nthraldom\nthraldoms\nthrall\nthralled\nthralling\nthralls\nthrash\nthrashed\nthrasher\nthrashers\nthrashes\nthrashing\nthrave\nthraves\nthraw\nthrawart\nthrawed\nthrawing\nthrawn\nthrawnly\nthraws\nthread\nthreadbare\nthreadbareness\nthreaded\nthreader\nthreaders\nthreadier\nthreadiest\nthreadiness\nthreading\nthreadless\nthreadlike\nthreads\nthready\nthreap\nthreaped\nthreaper\nthreapers\nthreaping\nthreaps\nthreat\nthreated\nthreaten\nthreatened\nthreatener\nthreateners\nthreatening\nthreateningly\nthreatens\nthreating\nthreats\nthree\nthreefold\nthreep\nthreeped\nthreeping\nthreeps\nthrees\nthreescore\nthreesome\nthreesomes\nthrenode\nthrenodes\nthrenodies\nthrenodist\nthrenodists\nthrenody\nthresh\nthreshed\nthresher\nthreshers\nthreshes\nthreshing\nthreshold\nthresholds\nthrew\nthrice\nthrift\nthriftier\nthriftiest\nthriftily\nthriftiness\nthriftless\nthriftlessly\nthriftlessness\nthrifts\nthrifty\nthrill\nthrilled\nthriller\nthrillers\nthrilling\nthrillingly\nthrills\nthrip\nthrips\nthrive\nthrived\nthriven\nthriver\nthrivers\nthrives\nthriving\nthrivingly\nthro\nthroat\nthroated\nthroatier\nthroatiest\nthroatily\nthroatiness\nthroating\nthroats\nthroaty\nthrob\nthrobbed\nthrobber\nthrobbers\nthrobbing\nthrobs\nthroe\nthroes\nthrombi\nthrombin\nthrombins\nthrombus\nthrone\nthroned\nthrones\nthrong\nthronged\nthronging\nthrongs\nthroning\nthrostle\nthrostles\nthrottle\nthrottled\nthrottler\nthrottlers\nthrottles\nthrottling\nthrough\nthroughout\nthroughput\nthroughputs\nthrove\nthrow\nthrowaway\nthrowaways\nthrowback\nthrowbacks\nthrower\nthrowers\nthrowing\nthrown\nthrows\nthru\nthrum\nthrummed\nthrummer\nthrummers\nthrummier\nthrummiest\nthrumming\nthrummy\nthrums\nthruput\nthruputs\nthrush\nthrushes\nthrust\nthrusted\nthruster\nthrusters\nthrusting\nthrustor\nthrustors\nthrusts\nthruway\nthruways\nthud\nthudded\nthudding\nthuds\nthug\nthuggee\nthuggees\nthuggeries\nthuggery\nthuggish\nthugs\nthuja\nthujas\nthulia\nthulias\nthulium\nthuliums\nthumb\nthumbed\nthumbing\nthumbkin\nthumbkins\nthumbnail\nthumbnails\nthumbnut\nthumbnuts\nthumbs\nthumbscrew\nthumbscrews\nthumbtack\nthumbtacks\nthump\nthumped\nthumper\nthumpers\nthumping\nthumps\nthunder\nthunderbolt\nthunderbolts\nthunderclap\nthunderclaps\nthundercloud\nthunderclouds\nthundered\nthunderhead\nthunderheads\nthundering\nthunderingly\nthunderous\nthunderously\nthunders\nthundershower\nthundershowers\nthunderstorm\nthunderstorms\nthundery\nthunk\nthurible\nthuribles\nthurifer\nthurifers\nthurl\nthurls\nthus\nthusly\nthuya\nthuyas\nthwack\nthwacked\nthwacker\nthwackers\nthwacking\nthwacks\nthwart\nthwarted\nthwarter\nthwarters\nthwarting\nthwartly\nthwarts\nthy\nthyme\nthymes\nthymey\nthymi\nthymic\nthymier\nthymiest\nthymine\nthymines\nthymol\nthymols\nthymus\nthymuses\nthymy\nthyreoid\nthyroid\nthyroids\nthyroxin\nthyroxine\nthyroxines\nthyroxins\nthyrse\nthyrses\nthyrsoid\nthyrsus\nthyrsusi\nthyself\nti\ntiara\ntiaraed\ntiaras\ntibia\ntibiae\ntibial\ntibias\ntic\ntical\nticals\ntick\nticked\nticker\ntickers\nticket\nticketed\nticketing\ntickets\nticking\ntickings\ntickle\ntickled\ntickler\nticklers\ntickles\ntickling\nticklish\nticklishly\nticklishness\nticks\ntickseed\ntickseeds\nticktack\nticktacked\nticktacking\nticktacks\nticktock\nticktocked\nticktocking\nticktocks\ntics\ntictac\ntictacked\ntictacking\ntictacs\ntictoc\ntictocked\ntictocking\ntictocs\ntidal\ntidally\ntidbit\ntidbits\ntiddly\ntide\ntided\ntideland\ntidelands\ntideless\ntidelike\ntidemark\ntidemarks\ntiderip\ntiderips\ntides\ntidewater\ntidewaters\ntideway\ntideways\ntidied\ntidier\ntidies\ntidiest\ntidily\ntidiness\ntidinesses\ntiding\ntidings\ntidy\ntidying\ntidytips\ntie\ntieback\ntiebacks\ntieclasp\ntieclasps\ntied\ntieing\ntiepin\ntiepins\ntier\ntierce\ntierced\ntiercel\ntiercels\ntierces\ntiered\ntiering\ntiers\nties\ntiff\ntiffanies\ntiffany\ntiffed\ntiffin\ntiffined\ntiffing\ntiffining\ntiffins\ntiffs\ntiger\ntigereye\ntigereyes\ntigerish\ntigerlike\ntigers\ntight\ntighten\ntightened\ntightener\ntighteners\ntightening\ntightens\ntighter\ntightest\ntightly\ntightness\ntightrope\ntightropes\ntights\ntightwad\ntightwads\ntiglon\ntiglons\ntigon\ntigons\ntigress\ntigresses\ntigrish\ntike\ntikes\ntiki\ntikis\ntil\ntilak\ntilapia\ntilapias\ntilburies\ntilbury\ntilde\ntildes\ntile\ntiled\ntilefish\ntilefishes\ntilelike\ntiler\ntilers\ntiles\ntiling\ntilings\ntill\ntillable\ntillage\ntillages\ntilled\ntiller\ntillered\ntillering\ntillerless\ntillers\ntilling\ntills\ntils\ntilt\ntiltable\ntilted\ntilter\ntilters\ntilth\ntilths\ntilting\ntilts\ntiltyard\ntiltyards\ntimarau\ntimaraus\ntimbal\ntimbale\ntimbales\ntimbals\ntimber\ntimbered\ntimbering\ntimberland\ntimberlands\ntimberless\ntimberline\ntimberlines\ntimbers\ntimbre\ntimbrel\ntimbrels\ntimbres\ntime\ntimecard\ntimecards\ntimed\ntimekeeper\ntimekeepers\ntimeless\ntimelessly\ntimelessness\ntimelier\ntimeliest\ntimeliness\ntimely\ntimeous\ntimeout\ntimeouts\ntimepiece\ntimepieces\ntimer\ntimers\ntimes\ntimesaving\ntimeshare\ntimesharing\ntimetable\ntimetables\ntimework\ntimeworks\ntimeworn\ntimid\ntimider\ntimidest\ntimidities\ntimidity\ntimidly\ntimidness\ntiming\ntimings\ntimorous\ntimorously\ntimorousness\ntimothies\ntimothy\ntimpana\ntimpani\ntimpanist\ntimpanists\ntimpano\ntimpanum\ntimpanums\ntin\ntinamou\ntinamous\ntincal\ntincals\ntinct\ntincted\ntincting\ntincts\ntincture\ntinctured\ntinctures\ntincturing\ntinder\ntinderbox\ntinderboxes\ntinders\ntindery\ntine\ntinea\ntineal\ntineas\ntined\ntineid\ntineids\ntines\ntinfoil\ntinfoils\ntinful\ntinfuls\nting\ntinge\ntinged\ntingeing\ntinges\ntinging\ntingle\ntingled\ntingler\ntinglers\ntingles\ntinglier\ntingliest\ntingling\ntinglingly\ntingly\ntings\ntinhorn\ntinhorns\ntinier\ntiniest\ntinily\ntininess\ntininesses\ntining\ntinker\ntinkered\ntinkerer\ntinkerers\ntinkering\ntinkers\ntinkle\ntinkled\ntinkles\ntinklier\ntinkliest\ntinkling\ntinklings\ntinkly\ntinlike\ntinman\ntinmen\ntinned\ntinner\ntinners\ntinnier\ntinniest\ntinnily\ntinning\ntinnitus\ntinnituses\ntinny\ntinplate\ntinplates\ntins\ntinsel\ntinseled\ntinseling\ntinselled\ntinselling\ntinselly\ntinsels\ntinsmith\ntinsmiths\ntinstone\ntinstones\ntint\ntinted\ntinter\ntinters\ntinting\ntintings\ntintinnabulary\ntintinnabulation\ntintinnabulations\ntintless\ntints\ntintype\ntintypes\ntinware\ntinwares\ntinwork\ntinworks\ntiny\ntip\ntipcart\ntipcarts\ntipcat\ntipcats\ntipi\ntipis\ntipless\ntipoff\ntipoffs\ntippable\ntipped\ntipper\ntippers\ntippet\ntippets\ntippier\ntippiest\ntipping\ntipple\ntippled\ntippler\ntipplers\ntipples\ntippling\ntippy\ntips\ntipsier\ntipsiest\ntipsily\ntipsiness\ntipstaff\ntipstaffs\ntipstaves\ntipster\ntipsters\ntipstock\ntipstocks\ntipsy\ntiptoe\ntiptoed\ntiptoeing\ntiptoes\ntiptop\ntiptops\ntirade\ntirades\ntire\ntired\ntireder\ntiredest\ntiredly\ntiredness\ntireless\ntirelessly\ntirelessness\ntires\ntiresome\ntiresomely\ntiresomeness\ntiring\ntirl\ntirled\ntirling\ntirls\ntiro\ntiros\ntirrivee\ntirrivees\ntis\ntisane\ntisanes\ntissual\ntissue\ntissued\ntissues\ntissuey\ntissuing\ntit\ntitan\ntitanate\ntitanates\ntitaness\ntitanesses\ntitania\ntitanias\ntitanic\ntitanically\ntitanism\ntitanisms\ntitanite\ntitanites\ntitanium\ntitaniums\ntitanous\ntitans\ntitbit\ntitbits\ntiter\ntiters\ntithable\ntithe\ntithed\ntither\ntithers\ntithes\ntithing\ntithings\ntithonia\ntithonias\ntiti\ntitian\ntitians\ntitillate\ntitillated\ntitillates\ntitillating\ntitillatingly\ntitillation\ntitillations\ntitillative\ntitis\ntitivate\ntitivated\ntitivates\ntitivating\ntitlark\ntitlarks\ntitle\ntitled\ntitleholder\ntitleholders\ntitles\ntitling\ntitlist\ntitlists\ntitman\ntitmen\ntitmice\ntitmouse\ntitrable\ntitrant\ntitrants\ntitrate\ntitrated\ntitrates\ntitrating\ntitrator\ntitrators\ntitre\ntitres\ntits\ntitter\ntittered\ntitterer\ntitterers\ntittering\ntitters\ntittie\ntitties\ntittle\ntittles\ntittup\ntittuped\ntittuping\ntittupped\ntittupping\ntittuppy\ntittups\ntitty\ntitular\ntitularies\ntitularly\ntitulars\ntitulary\ntivy\ntizzies\ntizzy\ntmeses\ntmesis\nto\ntoad\ntoadfish\ntoadfishes\ntoadflax\ntoadflaxes\ntoadied\ntoadies\ntoadish\ntoadless\ntoadlike\ntoads\ntoadstool\ntoadstools\ntoady\ntoadying\ntoadyish\ntoadyism\ntoadyisms\ntoast\ntoasted\ntoaster\ntoasters\ntoastier\ntoastiest\ntoasting\ntoastmaster\ntoastmasters\ntoastmistress\ntoastmistresses\ntoasts\ntoasty\ntobacco\ntobaccoes\ntobacconist\ntobacconists\ntobaccos\ntobies\ntoboggan\ntobogganed\ntobogganer\ntobogganers\ntobogganing\ntobogganist\ntobogganists\ntoboggans\ntoby\ntoccata\ntoccatas\ntoccate\ntocher\ntochered\ntochering\ntochers\ntocologies\ntocology\ntocsin\ntocsins\ntod\ntoday\ntodays\ntoddies\ntoddle\ntoddled\ntoddler\ntoddlers\ntoddles\ntoddling\ntoddy\ntodies\ntods\ntody\ntoe\ntoea\ntoecap\ntoecaps\ntoed\ntoehold\ntoeholds\ntoeing\ntoeless\ntoelike\ntoenail\ntoenailed\ntoenailing\ntoenails\ntoepiece\ntoepieces\ntoeplate\ntoeplates\ntoes\ntoeshoe\ntoeshoes\ntoff\ntoffee\ntoffees\ntoffies\ntoffs\ntoffy\ntoft\ntofts\ntofu\ntofus\ntog\ntoga\ntogae\ntogaed\ntogas\ntogate\ntogated\ntogether\ntogetherness\ntogged\ntoggeries\ntoggery\ntogging\ntoggle\ntoggled\ntoggler\ntogglers\ntoggles\ntoggling\ntogs\ntogue\ntogues\ntoil\ntoile\ntoiled\ntoiler\ntoilers\ntoiles\ntoilet\ntoileted\ntoileting\ntoiletries\ntoiletry\ntoilets\ntoilette\ntoilettes\ntoilful\ntoiling\ntoils\ntoilsome\ntoilsomely\ntoilsomeness\ntoilworn\ntoit\ntoited\ntoiting\ntoits\ntokay\ntokays\ntoke\ntoked\ntoken\ntokened\ntokening\ntokenism\ntokenisms\ntokens\ntoker\ntokes\ntokologies\ntokology\ntokonoma\ntokonomas\ntola\ntolan\ntolane\ntolanes\ntolans\ntolas\ntolbooth\ntolbooths\ntold\ntole\ntoled\ntoledo\ntoledos\ntolerability\ntolerable\ntolerably\ntolerance\ntolerances\ntolerant\ntolerantly\ntolerate\ntolerated\ntolerates\ntolerating\ntoleration\ntolerations\ntolerative\ntolerator\ntolerators\ntoles\ntolidin\ntolidine\ntolidines\ntolidins\ntoling\ntoll\ntollage\ntollages\ntollbar\ntollbars\ntollbooth\ntollbooths\ntolled\ntoller\ntollers\ntollgate\ntollgates\ntolling\ntollman\ntollmen\ntolls\ntollway\ntollways\ntolu\ntoluate\ntoluates\ntoluene\ntoluenes\ntoluic\ntoluid\ntoluide\ntoluides\ntoluidin\ntoluidins\ntoluids\ntoluol\ntoluole\ntoluoles\ntoluols\ntolus\ntoluyl\ntoluyls\ntolyl\ntolyls\ntom\ntomahawk\ntomahawked\ntomahawking\ntomahawks\ntomalley\ntomalleys\ntoman\ntomans\ntomato\ntomatoes\ntomb\ntombac\ntomback\ntombacks\ntombacs\ntombak\ntombaks\ntombal\ntombed\ntombing\ntombless\ntomblike\ntombolo\ntombolos\ntomboy\ntomboyish\ntomboyishness\ntomboys\ntombs\ntombstone\ntombstones\ntomcat\ntomcats\ntomcod\ntomcods\ntome\ntomenta\ntomentum\ntomes\ntomfool\ntomfooleries\ntomfoolery\ntomfools\ntommies\ntommy\ntommyrot\ntommyrots\ntomogram\ntomograms\ntomorrow\ntomorrows\ntompion\ntompions\ntoms\ntomtit\ntomtits\nton\ntonal\ntonalities\ntonality\ntonally\ntondi\ntondo\ntone\ntoned\ntoneless\ntonelessly\ntonelessness\ntoneme\ntonemes\ntonemic\ntoner\ntoners\ntones\ntonetic\ntonetics\ntonette\ntonettes\ntoney\ntong\ntonga\ntongas\ntonged\ntonger\ntongers\ntonging\ntongman\ntongmen\ntongs\ntongue\ntongued\ntongueless\ntonguelike\ntongues\ntonguetieing\ntonguing\ntonguings\ntonic\ntonically\ntonicities\ntonicity\ntonics\ntonier\ntoniest\ntonight\ntonights\ntoning\ntonish\ntonishly\ntonlet\ntonlets\ntonnage\ntonnages\ntonne\ntonneau\ntonneaus\ntonneaux\ntonner\ntonners\ntonnes\ntonnish\ntons\ntonsil\ntonsilar\ntonsillar\ntonsillectomies\ntonsillectomy\ntonsillitis\ntonsils\ntonsure\ntonsured\ntonsures\ntonsuring\ntontine\ntontines\ntonus\ntonuses\ntony\ntoo\ntook\ntool\ntoolbox\ntoolboxes\ntooled\ntooler\ntoolers\ntoolhead\ntoolheads\ntooling\ntoolings\ntoolless\ntoolmaker\ntoolmakers\ntoolmaking\ntoolroom\ntoolrooms\ntools\ntoolshed\ntoolsheds\ntoom\ntoon\ntoons\ntoot\ntooted\ntooter\ntooters\ntooth\ntoothache\ntoothaches\ntoothbrush\ntoothbrushes\ntoothed\ntoothier\ntoothiest\ntoothily\ntoothing\ntoothless\ntoothlike\ntoothpaste\ntoothpastes\ntoothpick\ntoothpicks\ntooths\ntoothsome\ntoothsomely\ntoothsomeness\ntoothy\ntooting\ntootle\ntootled\ntootler\ntootlers\ntootles\ntootling\ntoots\ntootses\ntootsie\ntootsies\ntootsy\ntop\ntopaz\ntopazes\ntopazine\ntopcoat\ntopcoats\ntopcross\ntopcrosses\ntope\ntoped\ntopee\ntopees\ntoper\ntopers\ntopes\ntopful\ntopfull\ntoph\ntophe\ntophes\ntophi\ntophs\ntophus\ntopi\ntopiaries\ntopiary\ntopic\ntopical\ntopicalities\ntopicality\ntopically\ntopics\ntoping\ntopis\ntopkick\ntopkicks\ntopknot\ntopknots\ntopless\ntoploftier\ntoploftiest\ntoplofty\ntopmast\ntopmasts\ntopmost\ntopnotch\ntopographer\ntopographers\ntopographic\ntopographical\ntopographically\ntopographies\ntopography\ntopoi\ntopological\ntopologically\ntopologies\ntopologist\ntopologists\ntopology\ntoponym\ntoponymies\ntoponyms\ntoponymy\ntopos\ntopotype\ntopotypes\ntopped\ntopper\ntoppers\ntopping\ntoppings\ntopple\ntoppled\ntopples\ntoppling\ntops\ntopsail\ntopsails\ntopside\ntopsides\ntopsoil\ntopsoiled\ntopsoiling\ntopsoils\ntopstone\ntopstones\ntopwork\ntopworked\ntopworking\ntopworks\ntoque\ntoques\ntoquet\ntoquets\ntor\ntora\ntorah\ntorahs\ntoras\ntorc\ntorch\ntorchbearer\ntorchbearers\ntorched\ntorchere\ntorcheres\ntorches\ntorchier\ntorchiers\ntorching\ntorchlight\ntorchlights\ntorchon\ntorchons\ntorcs\ntore\ntoreador\ntoreadors\ntorero\ntoreros\ntores\ntoreutic\ntori\ntoric\ntories\ntorii\ntorment\ntormented\ntormenter\ntormenters\ntormenting\ntormentor\ntormentors\ntorments\ntorn\ntornadic\ntornado\ntornadoes\ntornados\ntornillo\ntornillos\ntoro\ntoroid\ntoroidal\ntoroids\ntoros\ntorose\ntorosities\ntorosity\ntorot\ntorous\ntorpedo\ntorpedoed\ntorpedoes\ntorpedoing\ntorpedos\ntorpid\ntorpidity\ntorpidly\ntorpids\ntorpor\ntorpors\ntorquate\ntorque\ntorqued\ntorquer\ntorquers\ntorques\ntorqueses\ntorquing\ntorr\ntorrefied\ntorrefies\ntorrefy\ntorrefying\ntorrent\ntorrential\ntorrentially\ntorrents\ntorrid\ntorrider\ntorridest\ntorridity\ntorridly\ntorridness\ntorrified\ntorrifies\ntorrify\ntorrifying\ntors\ntorsade\ntorsades\ntorse\ntorses\ntorsi\ntorsion\ntorsional\ntorsionally\ntorsions\ntorsk\ntorsks\ntorso\ntorsos\ntort\ntorte\ntorten\ntortes\ntortile\ntortilla\ntortillas\ntortious\ntortoise\ntortoises\ntortoni\ntortonis\ntortrix\ntortrixes\ntorts\ntortuous\ntortuously\ntortuousness\ntorture\ntortured\ntorturer\ntorturers\ntortures\ntorturing\ntorturous\ntorturously\ntorula\ntorulae\ntorulas\ntorus\ntory\ntosh\ntoshes\ntoss\ntossed\ntosser\ntossers\ntosses\ntossing\ntosspot\ntosspots\ntossup\ntossups\ntost\ntot\ntotable\ntotal\ntotaled\ntotaling\ntotalise\ntotalised\ntotalises\ntotalising\ntotalism\ntotalisms\ntotalitarian\ntotalitarianism\ntotalitarianisms\ntotalitarians\ntotalities\ntotality\ntotalizator\ntotalizators\ntotalize\ntotalized\ntotalizer\ntotalizers\ntotalizes\ntotalizing\ntotalled\ntotalling\ntotally\ntotals\ntote\ntoted\ntotem\ntotemic\ntotemism\ntotemisms\ntotemist\ntotemists\ntotemite\ntotemites\ntotems\ntoter\ntoters\ntotes\ntother\ntoting\ntots\ntotted\ntotter\ntottered\ntotterer\ntotterers\ntottering\ntotteringly\ntotters\ntottery\ntotting\ntoucan\ntoucans\ntouch\ntouchable\ntouchback\ntouchbacks\ntouchdown\ntouchdowns\ntouche\ntouched\ntoucher\ntouchers\ntouches\ntouchhole\ntouchholes\ntouchier\ntouchiest\ntouchily\ntouchiness\ntouching\ntouchingly\ntouchstone\ntouchstones\ntouchup\ntouchups\ntouchy\ntough\ntoughen\ntoughened\ntoughening\ntoughens\ntougher\ntoughest\ntoughie\ntoughies\ntoughish\ntoughly\ntoughness\ntoughs\ntoughy\ntoupee\ntoupees\ntour\ntouraco\ntouracos\ntoured\ntourer\ntourers\ntouring\ntourings\ntourism\ntourisms\ntourist\ntouristic\ntouristically\ntourists\ntouristy\ntourmaline\ntourmalines\ntournament\ntournaments\ntourney\ntourneyed\ntourneying\ntourneys\ntourniquet\ntourniquets\ntours\ntouse\ntoused\ntouses\ntousing\ntousle\ntousled\ntousles\ntousling\ntout\ntouted\ntouter\ntouters\ntouting\ntouts\ntouzle\ntouzled\ntouzles\ntouzling\ntovarich\ntovariches\ntovarish\ntovarishes\ntow\ntowage\ntowages\ntoward\ntowardly\ntowards\ntowaway\ntowaways\ntowboat\ntowboats\ntowed\ntowel\ntoweled\ntoweling\ntowelings\ntowelled\ntowelling\ntowels\ntower\ntowered\ntowerier\ntoweriest\ntowering\ntowerlike\ntowers\ntowery\ntowhead\ntowheaded\ntowheads\ntowhee\ntowhees\ntowie\ntowies\ntowing\ntowline\ntowlines\ntowmond\ntowmonds\ntowmont\ntowmonts\ntown\ntownee\ntownees\ntownfolk\ntownie\ntownies\ntownish\ntownless\ntownlet\ntownlets\ntowns\ntownship\ntownships\ntownsman\ntownsmen\ntownspeople\ntownwear\ntownwears\ntowny\ntowpath\ntowpaths\ntowrope\ntowropes\ntows\ntowy\ntoxaemia\ntoxaemias\ntoxaemic\ntoxemia\ntoxemias\ntoxemic\ntoxic\ntoxical\ntoxicant\ntoxicants\ntoxicities\ntoxicity\ntoxicologic\ntoxicological\ntoxicologically\ntoxicologist\ntoxicologists\ntoxicology\ntoxin\ntoxine\ntoxines\ntoxins\ntoxoid\ntoxoids\ntoy\ntoyed\ntoyer\ntoyers\ntoying\ntoyish\ntoyless\ntoylike\ntoyo\ntoyon\ntoyons\ntoyos\ntoys\ntrabeate\ntrace\ntraceability\ntraceable\ntraced\ntraceless\ntracelessly\ntracer\ntraceries\ntracers\ntracery\ntraces\ntrachea\ntracheae\ntracheal\ntracheas\ntracheid\ntracheids\ntracheotomies\ntracheotomy\ntrachle\ntrachled\ntrachles\ntrachling\ntrachoma\ntrachomas\ntrachyte\ntrachytes\ntracing\ntracings\ntrack\ntrackage\ntrackages\ntracked\ntracker\ntrackers\ntracking\ntrackings\ntrackless\ntrackman\ntrackmen\ntracks\ntract\ntractability\ntractable\ntractableness\ntractably\ntractate\ntractates\ntractile\ntraction\ntractional\ntractions\ntractive\ntractor\ntractors\ntracts\ntrad\ntradable\ntrade\ntradeable\ntraded\ntrademark\ntrademarked\ntrademarking\ntrademarks\ntrader\ntraders\ntrades\ntradesman\ntradesmen\ntradespeople\ntrading\ntradition\ntraditional\ntraditionalism\ntraditionalisms\ntraditionalist\ntraditionalistic\ntraditionalists\ntraditionally\ntraditionary\ntraditionless\ntraditions\ntraditor\ntraditores\ntraduce\ntraduced\ntraducement\ntraducements\ntraducer\ntraducers\ntraduces\ntraducing\ntraffic\ntrafficked\ntrafficker\ntraffickers\ntrafficking\ntraffics\ntragedian\ntragedians\ntragedienne\ntragediennes\ntragedies\ntragedy\ntragi\ntragic\ntragical\ntragically\ntragicomedies\ntragicomedy\ntragicomic\ntragicomical\ntragopan\ntragopans\ntragus\ntraik\ntraiked\ntraiking\ntraiks\ntrail\ntrailblazer\ntrailblazers\ntrailed\ntrailer\ntrailered\ntrailering\ntrailers\ntrailing\ntrailless\ntrails\ntrain\ntrainable\ntrained\ntrainee\ntrainees\ntrainer\ntrainers\ntrainful\ntrainfuls\ntraining\ntrainings\ntrainload\ntrainloads\ntrainman\ntrainmen\ntrains\ntrainway\ntrainways\ntraipse\ntraipsed\ntraipses\ntraipsing\ntrait\ntraitor\ntraitorous\ntraitorously\ntraitors\ntraitress\ntraitresses\ntraits\ntraject\ntrajected\ntrajecting\ntrajection\ntrajections\ntrajectories\ntrajectory\ntrajects\ntram\ntramcar\ntramcars\ntramel\ntrameled\ntrameling\ntramell\ntramelled\ntramelling\ntramells\ntramels\ntramless\ntramline\ntramlines\ntrammed\ntrammel\ntrammeled\ntrammeling\ntrammelled\ntrammelling\ntrammels\ntramming\ntramp\ntramped\ntramper\ntrampers\ntramping\ntrampish\ntrample\ntrampled\ntrampler\ntramplers\ntramples\ntrampling\ntrampoline\ntrampoliner\ntrampoliners\ntrampolines\ntrampolinist\ntrampolinists\ntramps\ntramroad\ntramroads\ntrams\ntramway\ntramways\ntrance\ntranced\ntrancelike\ntrances\ntrancing\ntrangam\ntrangams\ntrank\ntranq\ntranquil\ntranquiler\ntranquilest\ntranquility\ntranquilize\ntranquilized\ntranquilizer\ntranquilizers\ntranquilizes\ntranquilizing\ntranquiller\ntranquillest\ntranquillity\ntranquillize\ntranquillized\ntranquillizer\ntranquillizers\ntranquillizes\ntranquillizing\ntranquilly\ntranquilness\ntrans\ntransact\ntransacted\ntransacting\ntransaction\ntransactional\ntransactions\ntransactor\ntransactors\ntransacts\ntransatlantic\ntransceiver\ntransceivers\ntranscend\ntranscended\ntranscendence\ntranscendency\ntranscendent\ntranscendental\ntranscendentalism\ntranscendentalisms\ntranscendentalist\ntranscendentalists\ntranscendentally\ntranscendently\ntranscending\ntranscends\ntranscontinental\ntranscribe\ntranscribed\ntranscriber\ntranscribers\ntranscribes\ntranscribing\ntranscript\ntranscription\ntranscriptional\ntranscriptionally\ntranscriptionist\ntranscriptionists\ntranscriptions\ntranscripts\ntransducer\ntransducers\ntransect\ntransected\ntransecting\ntransects\ntransept\ntranseptal\ntransepts\ntransfer\ntransferability\ntransferable\ntransferal\ntransferals\ntransferee\ntransferees\ntransference\ntransferences\ntransferred\ntransferrer\ntransferrers\ntransferring\ntransfers\ntransfiguration\ntransfigurations\ntransfigure\ntransfigured\ntransfigures\ntransfiguring\ntransfix\ntransfixed\ntransfixes\ntransfixing\ntransfixion\ntransfixions\ntransfixt\ntransform\ntransformable\ntransformation\ntransformational\ntransformations\ntransformed\ntransformer\ntransformers\ntransforming\ntransforms\ntransfusable\ntransfuse\ntransfused\ntransfuses\ntransfusible\ntransfusing\ntransfusion\ntransfusions\ntransgress\ntransgressed\ntransgresses\ntransgressing\ntransgression\ntransgressions\ntransgressive\ntransgressor\ntransgressors\ntranship\ntranshipped\ntranshipping\ntranships\ntransience\ntransiency\ntransient\ntransiently\ntransients\ntransistor\ntransistorize\ntransistorized\ntransistorizes\ntransistorizing\ntransistors\ntransit\ntransited\ntransiting\ntransition\ntransitional\ntransitions\ntransitive\ntransitively\ntransitiveness\ntransitivity\ntransitory\ntransits\ntranslatability\ntranslatable\ntranslate\ntranslated\ntranslates\ntranslating\ntranslation\ntranslational\ntranslations\ntranslative\ntranslator\ntranslators\ntransliterate\ntransliterated\ntransliterates\ntransliterating\ntransliteration\ntransliterations\ntranslucence\ntranslucences\ntranslucencies\ntranslucency\ntranslucent\ntranslucently\ntransmigrate\ntransmigrated\ntransmigrates\ntransmigrating\ntransmigration\ntransmigrations\ntransmigrator\ntransmigrators\ntransmigratory\ntransmissibility\ntransmissible\ntransmission\ntransmissions\ntransmissive\ntransmit\ntransmits\ntransmittable\ntransmittal\ntransmittals\ntransmittance\ntransmittances\ntransmitted\ntransmitter\ntransmitters\ntransmitting\ntransmutable\ntransmutation\ntransmutations\ntransmute\ntransmuted\ntransmutes\ntransmuting\ntransom\ntransoms\ntransonic\ntranspacific\ntransparence\ntransparencies\ntransparency\ntransparent\ntransparently\ntransparentness\ntranspiration\ntranspirations\ntranspire\ntranspired\ntranspires\ntranspiring\ntransplant\ntransplantable\ntransplantation\ntransplantations\ntransplanted\ntransplanter\ntransplanters\ntransplanting\ntransplants\ntransponder\ntransponders\ntransport\ntransportability\ntransportable\ntransportation\ntransportations\ntransported\ntransporter\ntransporters\ntransporting\ntransports\ntransposable\ntranspose\ntransposed\ntransposes\ntransposing\ntransposition\ntranspositional\ntranspositions\ntranssexual\ntranssexuals\ntransship\ntransshipment\ntransshipments\ntransshipped\ntransshipping\ntransships\ntransubstantial\ntransubstantiate\ntransubstantiated\ntransubstantiates\ntransubstantiating\ntransubstantiation\ntransubstantiations\ntransude\ntransuded\ntransudes\ntransuding\ntransvaluation\ntransvaluations\ntransvalue\ntransvalued\ntransvalues\ntransvaluing\ntransversal\ntransversals\ntransverse\ntransversely\ntransverses\ntransvestite\ntransvestites\ntrap\ntrapan\ntrapanned\ntrapanning\ntrapans\ntrapball\ntrapballs\ntrapdoor\ntrapdoors\ntrapes\ntrapesed\ntrapeses\ntrapesing\ntrapeze\ntrapezes\ntrapezia\ntrapezist\ntrapezists\ntrapezium\ntrapeziums\ntrapezoid\ntrapezoidal\ntrapezoids\ntraplike\ntrapnest\ntrapnested\ntrapnesting\ntrapnests\ntrappean\ntrapped\ntrapper\ntrappers\ntrapping\ntrappings\ntrappose\ntrappous\ntraprock\ntraprocks\ntraps\ntrapshooter\ntrapshooters\ntrapt\ntrapunto\ntrapuntos\ntrash\ntrashed\ntrashes\ntrashier\ntrashiest\ntrashily\ntrashiness\ntrashing\ntrashman\ntrashmen\ntrashy\ntrass\ntrasses\ntrauchle\ntrauchled\ntrauchles\ntrauchling\ntrauma\ntraumas\ntraumata\ntraumatic\ntraumatically\ntraumatization\ntraumatizations\ntraumatize\ntraumatized\ntraumatizes\ntraumatizing\ntravail\ntravailed\ntravailing\ntravails\ntrave\ntravel\ntraveled\ntraveler\ntravelers\ntraveling\ntravelled\ntraveller\ntravellers\ntravelling\ntravelog\ntravelogs\ntravelogue\ntravelogues\ntravels\ntraversable\ntraversal\ntraversals\ntraverse\ntraversed\ntraverser\ntraversers\ntraverses\ntraversing\ntravertine\ntraves\ntravestied\ntravesties\ntravesty\ntravestying\ntravois\ntravoise\ntravoises\ntrawl\ntrawled\ntrawler\ntrawlers\ntrawley\ntrawleys\ntrawling\ntrawls\ntray\ntrayful\ntrayfuls\ntrays\ntreacheries\ntreacherous\ntreacherously\ntreacherousness\ntreachery\ntreacle\ntreacles\ntreacly\ntread\ntreaded\ntreader\ntreaders\ntreading\ntreadle\ntreadled\ntreadler\ntreadlers\ntreadles\ntreadling\ntreadmill\ntreadmills\ntreads\ntreason\ntreasonable\ntreasonably\ntreasonous\ntreasons\ntreasurable\ntreasure\ntreasured\ntreasurer\ntreasurers\ntreasures\ntreasuries\ntreasuring\ntreasury\ntreat\ntreatable\ntreated\ntreater\ntreaters\ntreaties\ntreating\ntreatise\ntreatises\ntreatment\ntreatments\ntreats\ntreaty\ntreble\ntrebled\ntrebles\ntrebling\ntrebly\ntrecento\ntrecentos\ntreddle\ntreddled\ntreddles\ntreddling\ntree\ntreed\ntreeing\ntreeless\ntreelike\ntreen\ntreenail\ntreenails\ntrees\ntreetop\ntreetops\ntref\ntrefah\ntrefoil\ntrefoils\ntrehala\ntrehalas\ntreillage\ntreillages\ntrek\ntrekked\ntrekker\ntrekkers\ntrekking\ntreks\ntrellis\ntrellised\ntrellises\ntrellising\ntremble\ntrembled\ntrembler\ntremblers\ntrembles\ntremblier\ntrembliest\ntrembling\ntrembly\ntremendous\ntremendously\ntremendousness\ntremolo\ntremolos\ntremor\ntremors\ntremulous\ntremulously\ntremulousness\ntrenail\ntrenails\ntrench\ntrenchancy\ntrenchant\ntrenchantly\ntrenched\ntrencher\ntrencherman\ntrenchermen\ntrenchers\ntrenches\ntrenching\ntrend\ntrended\ntrendier\ntrendiest\ntrendily\ntrending\ntrends\ntrendy\ntrepan\ntrepanation\ntrepanations\ntrepang\ntrepangs\ntrepanned\ntrepanning\ntrepans\ntrephination\ntrephinations\ntrephine\ntrephined\ntrephines\ntrephining\ntrepid\ntrepidation\ntrepidations\ntrespass\ntrespassed\ntrespasser\ntrespassers\ntrespasses\ntrespassing\ntress\ntressed\ntressel\ntressels\ntresses\ntressier\ntressiest\ntressour\ntressours\ntressure\ntressures\ntressy\ntrestle\ntrestles\ntrestlework\ntrestleworks\ntret\ntrets\ntrevet\ntrevets\ntrews\ntrey\ntreys\ntriable\ntriableness\ntriac\ntriacid\ntriacids\ntriad\ntriadic\ntriadics\ntriadism\ntriadisms\ntriads\ntriage\ntriages\ntrial\ntrials\ntriangle\ntriangles\ntriangular\ntriangularity\ntriangularly\ntriangulate\ntriangulated\ntriangulates\ntriangulating\ntriangulation\ntriangulations\ntriarchies\ntriarchy\ntriaxial\ntriazin\ntriazine\ntriazines\ntriazins\ntriazole\ntriazoles\ntribade\ntribades\ntribadic\ntribal\ntribalism\ntribalisms\ntribally\ntribasic\ntribe\ntribes\ntribesman\ntribesmen\ntribrach\ntribrachs\ntribulation\ntribulations\ntribunal\ntribunals\ntribunate\ntribunates\ntribune\ntribunes\ntributaries\ntributary\ntribute\ntributes\ntrice\ntriced\ntriceps\ntricepses\ntrices\ntrichina\ntrichinae\ntrichinas\ntrichite\ntrichites\ntrichoid\ntrichome\ntrichomes\ntrichotomies\ntrichotomous\ntrichotomously\ntrichotomy\ntricing\ntrick\ntricked\ntricker\ntrickeries\ntrickers\ntrickery\ntrickie\ntrickier\ntrickiest\ntrickily\ntrickiness\ntricking\ntrickish\ntrickishly\ntrickishness\ntrickle\ntrickled\ntrickles\ntricklier\ntrickliest\ntrickling\ntrickly\ntricks\ntricksier\ntricksiest\ntrickster\ntricksters\ntricksy\ntricky\ntriclad\ntriclads\ntricolor\ntricolored\ntricolors\ntricorn\ntricorne\ntricornes\ntricorns\ntricot\ntricots\ntrictrac\ntrictracs\ntricycle\ntricycles\ntricyclic\ntrident\ntridents\ntridimensional\ntridimensionality\ntriduum\ntriduums\ntried\ntriene\ntrienes\ntriennia\ntriennial\ntriennially\ntriennials\ntriennium\ntrienniums\ntriens\ntrientes\ntrier\ntriers\ntries\ntriethyl\ntrifid\ntrifle\ntrifled\ntrifler\ntriflers\ntrifles\ntrifling\ntriflings\ntrifocal\ntrifocals\ntrifold\ntriforia\ntriform\ntrifornia\ntrig\ntrigged\ntrigger\ntriggered\ntriggering\ntriggers\ntriggest\ntrigging\ntrigly\ntriglyph\ntriglyphs\ntrigness\ntrignesses\ntrigo\ntrigon\ntrigonal\ntrigonometric\ntrigonometrical\ntrigonometrically\ntrigonometry\ntrigons\ntrigos\ntrigraph\ntrigraphs\ntrigs\ntrihedra\ntrijet\ntrijets\ntrike\ntrilateral\ntrilbies\ntrilby\ntrilingual\ntrilingually\ntrill\ntrilled\ntriller\ntrillers\ntrilling\ntrillion\ntrillions\ntrillionth\ntrillionths\ntrillium\ntrilliums\ntrills\ntrilobal\ntrilobed\ntrilobite\ntrilobites\ntrilogies\ntrilogy\ntrim\ntrimaran\ntrimarans\ntrimer\ntrimers\ntrimester\ntrimesters\ntrimeter\ntrimeters\ntrimly\ntrimmed\ntrimmer\ntrimmers\ntrimmest\ntrimming\ntrimmings\ntrimness\ntrimnesses\ntrimonthly\ntrimorph\ntrimorphs\ntrimotor\ntrimotors\ntrims\ntrinal\ntrinary\ntrindle\ntrindled\ntrindles\ntrindling\ntrine\ntrined\ntrines\ntrining\ntrinities\ntrinity\ntrinket\ntrinketed\ntrinketing\ntrinkets\ntrinkums\ntrinodal\ntrinomial\ntrinomials\ntrio\ntriode\ntriodes\ntriol\ntriolet\ntriolets\ntriols\ntrios\ntriose\ntrioses\ntrioxid\ntrioxide\ntrioxides\ntrioxids\ntrip\ntripack\ntripacks\ntripart\ntripartite\ntripe\ntripedal\ntripes\ntriphase\ntriplane\ntriplanes\ntriple\ntripled\ntriples\ntriplet\ntriplets\ntriplex\ntriplexes\ntriplicate\ntriplicated\ntriplicates\ntriplicating\ntriplication\ntriplications\ntriplicities\ntriplicity\ntripling\ntriplite\ntriplites\ntriploid\ntriploids\ntriply\ntripod\ntripodal\ntripodic\ntripodies\ntripods\ntripody\ntripoli\ntripolis\ntripos\ntriposes\ntripped\ntripper\ntrippers\ntrippet\ntrippets\ntripping\ntrippings\ntrips\ntriptane\ntriptanes\ntriptyca\ntriptycas\ntriptych\ntriptychs\ntrireme\ntriremes\ntriscele\ntrisceles\ntrisect\ntrisected\ntrisecting\ntrisection\ntrisections\ntrisector\ntrisectors\ntrisects\ntriseme\ntrisemes\ntrisemic\ntriskele\ntriskeles\ntrismic\ntrismus\ntrismuses\ntrisome\ntrisomes\ntrisomic\ntrisomics\ntrisomies\ntrisomy\ntristate\ntriste\ntristeza\ntristezas\ntristful\ntristich\ntristichs\ntrite\ntritely\ntriteness\ntriter\ntritest\ntrithing\ntrithings\ntriticum\ntriticums\ntritium\ntritiums\ntritoma\ntritomas\ntriton\ntritone\ntritones\ntritons\ntriturate\ntriturated\ntriturates\ntriturating\ntriturator\ntriturators\ntriumph\ntriumphal\ntriumphant\ntriumphantly\ntriumphed\ntriumphing\ntriumphs\ntriumvir\ntriumviral\ntriumvirate\ntriumvirates\ntriumviri\ntriumvirs\ntriune\ntriunes\ntriunities\ntriunity\ntrivalve\ntrivalves\ntrivet\ntrivets\ntrivia\ntrivial\ntrivialities\ntriviality\ntrivially\ntrivium\ntriweeklies\ntriweekly\ntroak\ntroaked\ntroaking\ntroaks\ntrocar\ntrocars\ntrochaic\ntrochaics\ntrochal\ntrochar\ntrochars\ntroche\ntrochee\ntrochees\ntroches\ntrochil\ntrochili\ntrochils\ntrochlea\ntrochleae\ntrochleas\ntrochoid\ntrochoids\ntrock\ntrocked\ntrocking\ntrocks\ntrod\ntrodden\ntrode\ntroffer\ntroffers\ntrogon\ntrogons\ntroika\ntroikas\ntroilite\ntroilites\ntroilus\ntroiluses\ntrois\ntroke\ntroked\ntrokes\ntroking\ntroland\ntrolands\ntroll\ntrolled\ntroller\ntrollers\ntrolley\ntrolleyed\ntrolleying\ntrolleys\ntrollied\ntrollies\ntrolling\ntrollings\ntrollop\ntrollops\ntrollopy\ntrolls\ntrolly\ntrollying\ntrombone\ntrombones\ntrombonist\ntrombonists\ntrommel\ntrommels\ntromp\ntrompe\ntromped\ntrompes\ntromping\ntromps\ntrona\ntronas\ntrone\ntrones\ntroop\ntrooped\ntrooper\ntroopers\ntroopial\ntroopials\ntrooping\ntroops\ntroopship\ntroopships\ntrooz\ntrop\ntrope\ntropes\ntrophic\ntrophied\ntrophies\ntrophy\ntrophying\ntropic\ntropical\ntropicalize\ntropicalized\ntropicalizes\ntropicalizing\ntropically\ntropics\ntropin\ntropine\ntropines\ntropins\ntropism\ntropisms\ntroposphere\ntropospheres\ntropospheric\ntrot\ntroth\ntrothed\ntrothing\ntroths\ntrotline\ntrotlines\ntrots\ntrotted\ntrotter\ntrotters\ntrotting\ntrotyl\ntrotyls\ntroubadour\ntroubadours\ntrouble\ntroubled\ntroublemaker\ntroublemakers\ntroubler\ntroublers\ntroubles\ntroubleshoot\ntroubleshooter\ntroubleshooters\ntroubleshooting\ntroubleshoots\ntroubleshot\ntroublesome\ntroublesomely\ntroublesomeness\ntroubling\ntrough\ntroughs\ntrounce\ntrounced\ntrounces\ntrouncing\ntroupe\ntrouped\ntrouper\ntroupers\ntroupes\ntroupial\ntroupials\ntrouping\ntrouser\ntrousers\ntrousseau\ntrousseaus\ntrousseaux\ntrout\ntroutier\ntroutiest\ntrouts\ntrouty\ntrouvere\ntrouveres\ntrouveur\ntrouveurs\ntrove\ntrover\ntrovers\ntroves\ntrow\ntrowed\ntrowel\ntroweled\ntroweler\ntrowelers\ntroweling\ntrowelled\ntrowelling\ntrowels\ntrowing\ntrows\ntrowsers\ntrowth\ntrowths\ntroy\ntroys\ntruancies\ntruancy\ntruant\ntruanted\ntruanting\ntruantries\ntruantry\ntruants\ntruce\ntruced\ntruces\ntrucing\ntruck\ntruckage\ntruckages\ntrucked\ntrucker\ntruckers\ntrucking\ntruckings\ntruckle\ntruckled\ntruckler\ntrucklers\ntruckles\ntruckling\ntruckload\ntruckloads\ntruckman\ntruckmen\ntrucks\ntruculence\ntruculency\ntruculent\ntruculently\ntrudge\ntrudged\ntrudgen\ntrudgens\ntrudgeon\ntrudgeons\ntrudger\ntrudgers\ntrudges\ntrudging\ntrue\ntrueblue\ntrueblues\ntrueborn\ntrued\ntrueing\ntruelove\ntrueloves\ntrueness\ntruenesses\ntruer\ntrues\ntruest\ntruffe\ntruffes\ntruffle\ntruffled\ntruffles\ntrug\ntrugs\ntruing\ntruism\ntruisms\ntruistic\ntrull\ntrulls\ntruly\ntrumeau\ntrumeaux\ntrump\ntrumped\ntrumperies\ntrumpery\ntrumpet\ntrumpeted\ntrumpeter\ntrumpeters\ntrumpeting\ntrumpetlike\ntrumpets\ntrumping\ntrumps\ntruncate\ntruncated\ntruncates\ntruncating\ntruncation\ntruncations\ntruncheon\ntruncheons\ntrundle\ntrundled\ntrundler\ntrundlers\ntrundles\ntrundling\ntrunk\ntrunked\ntrunkless\ntrunks\ntrunnel\ntrunnels\ntrunnion\ntrunnions\ntruss\ntrussed\ntrusser\ntrussers\ntrusses\ntrussing\ntrussings\ntrust\ntrustability\ntrustable\ntrusted\ntrustee\ntrusteed\ntrusteeing\ntrustees\ntrusteeship\ntrusteeships\ntruster\ntrusters\ntrustful\ntrustfully\ntrustfulness\ntrustier\ntrusties\ntrustiest\ntrustily\ntrustiness\ntrusting\ntrustingly\ntrustingness\ntrustless\ntrusts\ntrustworthily\ntrustworthiness\ntrustworthy\ntrusty\ntruth\ntruthful\ntruthfully\ntruthfulness\ntruths\ntry\ntrying\ntryingly\ntryma\ntrymata\ntryout\ntryouts\ntrypsin\ntrypsins\ntryptic\ntrysail\ntrysails\ntryst\ntryste\ntrysted\ntryster\ntrysters\ntrystes\ntrysting\ntrysts\ntryworks\ntsade\ntsades\ntsadi\ntsadis\ntsar\ntsardom\ntsardoms\ntsarevna\ntsarevnas\ntsarina\ntsarinas\ntsarism\ntsarisms\ntsarist\ntsarists\ntsaritza\ntsaritzas\ntsars\ntsetse\ntsetses\ntsimmes\ntsk\ntsked\ntsking\ntsks\ntsktsk\ntsktsked\ntsktsking\ntsktsks\ntsuba\ntsunami\ntsunamic\ntsunamis\ntsuris\ntuatara\ntuataras\ntuatera\ntuateras\ntub\ntuba\ntubae\ntubal\ntubas\ntubate\ntubbable\ntubbed\ntubber\ntubbers\ntubbier\ntubbiest\ntubbing\ntubby\ntube\ntubed\ntubeless\ntubelike\ntuber\ntubercle\ntubercles\ntubercular\ntuberculate\ntuberculated\ntuberculin\ntuberculins\ntuberculoid\ntuberculoses\ntuberculosis\ntuberculous\ntuberoid\ntuberose\ntuberoses\ntuberosity\ntuberous\ntubers\ntubes\ntubework\ntubeworks\ntubful\ntubfuls\ntubifex\ntubifexes\ntubiform\ntubing\ntubings\ntublike\ntubs\ntubular\ntubulate\ntubulated\ntubulates\ntubulating\ntubule\ntubules\ntubulose\ntubulous\ntubulure\ntubulures\ntuchun\ntuchuns\ntuck\ntuckahoe\ntuckahoes\ntucked\ntucker\ntuckered\ntuckering\ntuckers\ntucket\ntuckets\ntucking\ntucks\ntufa\ntufas\ntuff\ntuffet\ntuffets\ntuffs\ntuft\ntufted\ntufter\ntufters\ntuftier\ntuftiest\ntuftily\ntufting\ntufts\ntufty\ntug\ntugboat\ntugboats\ntugged\ntugger\ntuggers\ntugging\ntugless\ntugrik\ntugriks\ntugs\ntui\ntuille\ntuilles\ntuis\ntuition\ntuitional\ntuitions\ntuladi\ntuladis\ntularemia\ntule\ntules\ntulip\ntulips\ntulle\ntulles\ntullibee\ntullibees\ntumble\ntumbled\ntumbler\ntumblers\ntumbles\ntumbling\ntumblings\ntumbrel\ntumbrels\ntumbril\ntumbrils\ntumefied\ntumefies\ntumefy\ntumefying\ntumescence\ntumescences\ntumid\ntumidities\ntumidity\ntumidly\ntummies\ntummy\ntumor\ntumoral\ntumorlike\ntumorous\ntumors\ntumour\ntumours\ntump\ntumpline\ntumplines\ntumps\ntumular\ntumuli\ntumulose\ntumulous\ntumult\ntumults\ntumultuous\ntumultuously\ntumultuousness\ntumulus\ntumuluses\ntun\ntuna\ntunable\ntunableness\ntunably\ntunas\ntundish\ntundishes\ntundra\ntundras\ntune\ntuneable\ntuneably\ntuned\ntuneful\ntunefully\ntunefulness\ntuneless\ntunelessly\ntuner\ntuners\ntunes\ntung\ntungs\ntungsten\ntungstens\ntungstic\ntunic\ntunica\ntunicae\ntunicate\ntunicates\ntunicle\ntunicles\ntunics\ntuning\ntunnage\ntunnages\ntunned\ntunnel\ntunneled\ntunneler\ntunnelers\ntunneling\ntunnelled\ntunnellike\ntunnelling\ntunnels\ntunnies\ntunning\ntunny\ntuns\ntup\ntupelo\ntupelos\ntupik\ntupiks\ntupped\ntuppence\ntuppences\ntuppenny\ntupping\ntups\ntuque\ntuques\nturaco\nturacos\nturacou\nturacous\nturban\nturbaned\nturbans\nturbaries\nturbary\nturbeth\nturbeths\nturbid\nturbidity\nturbidly\nturbidness\nturbinal\nturbinals\nturbine\nturbines\nturbit\nturbith\nturbiths\nturbits\nturbo\nturbocar\nturbocars\nturbocharger\nturbochargers\nturbofan\nturbofans\nturbojet\nturbojets\nturboprop\nturboprops\nturbos\nturbot\nturbots\nturbulence\nturbulences\nturbulencies\nturbulency\nturbulent\nturbulently\nturd\nturdine\nturds\ntureen\ntureens\nturf\nturfed\nturfier\nturfiest\nturfing\nturfless\nturflike\nturfman\nturfmen\nturfs\nturfski\nturfskis\nturfy\nturgencies\nturgency\nturgent\nturgid\nturgidity\nturgidly\nturgidness\nturgite\nturgites\nturgor\nturgors\nturkey\nturkeys\nturkois\nturkoises\nturmeric\nturmerics\nturmoil\nturmoiled\nturmoiling\nturmoils\nturn\nturnable\nturnabout\nturnabouts\nturnaround\nturnarounds\nturnbuckle\nturnbuckles\nturncoat\nturncoats\nturndown\nturndowns\nturned\nturner\nturneries\nturners\nturnery\nturnhall\nturnhalls\nturning\nturnings\nturnip\nturnips\nturnkey\nturnkeys\nturnoff\nturnoffs\nturnout\nturnouts\nturnover\nturnovers\nturnpike\nturnpikes\nturns\nturnsole\nturnsoles\nturnspit\nturnspits\nturnstile\nturnstiles\nturntable\nturntables\nturnup\nturnups\nturpentine\nturpentined\nturpentines\nturpentining\nturpeth\nturpeths\nturpitude\nturpitudes\nturps\nturquois\nturquoise\nturquoises\nturret\nturreted\nturrets\nturrical\nturtle\nturtled\nturtledove\nturtledoves\nturtleneck\nturtlenecks\nturtler\nturtlers\nturtles\nturtling\nturtlings\nturves\ntusche\ntusches\ntush\ntushed\ntushes\ntushing\ntushy\ntusk\ntusked\ntusker\ntuskers\ntusking\ntuskless\ntusklike\ntusks\ntussah\ntussahs\ntussal\ntussar\ntussars\ntusseh\ntussehs\ntusser\ntussers\ntussis\ntussises\ntussive\ntussle\ntussled\ntussles\ntussling\ntussock\ntussocks\ntussocky\ntussor\ntussore\ntussores\ntussors\ntussuck\ntussucks\ntussur\ntussurs\ntut\ntutee\ntutees\ntutelage\ntutelages\ntutelar\ntutelaries\ntutelars\ntutelary\ntutor\ntutorage\ntutorages\ntutored\ntutoress\ntutoresses\ntutorial\ntutorials\ntutoring\ntutors\ntutorship\ntutorships\ntutoyed\ntutoyer\ntutoyered\ntutoyering\ntutoyers\ntuts\ntutted\ntutti\ntutties\ntutting\ntuttis\ntutty\ntutu\ntutus\ntux\ntuxedo\ntuxedoes\ntuxedos\ntuxes\ntuyer\ntuyere\ntuyeres\ntuyers\ntwa\ntwaddle\ntwaddled\ntwaddler\ntwaddlers\ntwaddles\ntwaddling\ntwae\ntwaes\ntwain\ntwains\ntwang\ntwanged\ntwangier\ntwangiest\ntwanging\ntwangle\ntwangled\ntwangler\ntwanglers\ntwangles\ntwangling\ntwangs\ntwangy\ntwankies\ntwanky\ntwas\ntwasome\ntwasomes\ntwat\ntwats\ntwattle\ntwattled\ntwattles\ntwattling\ntweak\ntweaked\ntweakier\ntweakiest\ntweaking\ntweaks\ntweaky\ntwee\ntweed\ntweedier\ntweediest\ntweedle\ntweedled\ntweedles\ntweedling\ntweeds\ntweedy\ntween\ntweet\ntweeted\ntweeter\ntweeters\ntweeting\ntweets\ntweeze\ntweezed\ntweezer\ntweezers\ntweezes\ntweezing\ntwelfth\ntwelfths\ntwelve\ntwelvemo\ntwelvemos\ntwelves\ntwenties\ntwentieth\ntwentieths\ntwenty\ntwerp\ntwerps\ntwibil\ntwibill\ntwibills\ntwibils\ntwice\ntwiddle\ntwiddled\ntwiddler\ntwiddlers\ntwiddles\ntwiddling\ntwier\ntwiers\ntwig\ntwigged\ntwiggen\ntwiggier\ntwiggiest\ntwigging\ntwiggy\ntwigless\ntwiglike\ntwigs\ntwilight\ntwilights\ntwilit\ntwill\ntwilled\ntwilling\ntwillings\ntwills\ntwin\ntwinborn\ntwine\ntwined\ntwiner\ntwiners\ntwines\ntwinge\ntwinged\ntwingeing\ntwinges\ntwinging\ntwinier\ntwiniest\ntwinight\ntwining\ntwinkle\ntwinkled\ntwinkler\ntwinklers\ntwinkles\ntwinkling\ntwinklings\ntwinkly\ntwinned\ntwinning\ntwinnings\ntwins\ntwinship\ntwinships\ntwiny\ntwirl\ntwirled\ntwirler\ntwirlers\ntwirlier\ntwirliest\ntwirling\ntwirls\ntwirly\ntwirp\ntwirps\ntwist\ntwisted\ntwister\ntwisters\ntwisting\ntwistings\ntwists\ntwit\ntwitch\ntwitched\ntwitcher\ntwitchers\ntwitches\ntwitchier\ntwitchiest\ntwitching\ntwitchy\ntwits\ntwitted\ntwitter\ntwittered\ntwittering\ntwitters\ntwittery\ntwitting\ntwixt\ntwo\ntwofer\ntwofers\ntwofold\ntwofolds\ntwopence\ntwopences\ntwopenny\ntwos\ntwosome\ntwosomes\ntwyer\ntwyers\ntycoon\ntycoons\ntye\ntyee\ntyees\ntyes\ntying\ntyke\ntykes\ntymbal\ntymbals\ntympan\ntympana\ntympanal\ntympani\ntympanic\ntympanies\ntympanist\ntympanists\ntympans\ntympanum\ntympanums\ntympany\ntyne\ntyned\ntynes\ntyning\ntypal\ntype\ntypeable\ntypebar\ntypebars\ntypecase\ntypecases\ntypecast\ntypecasting\ntypecasts\ntyped\ntypeface\ntypefaces\ntypes\ntypescript\ntypescripts\ntypeset\ntypeseting\ntypesets\ntypesetter\ntypesetters\ntypesetting\ntypewrite\ntypewriter\ntypewriters\ntypewrites\ntypewriting\ntypewritten\ntypewrote\ntypey\ntyphoid\ntyphoids\ntyphon\ntyphonic\ntyphons\ntyphoon\ntyphoons\ntyphose\ntyphous\ntyphus\ntyphuses\ntypic\ntypical\ntypicality\ntypically\ntypicalness\ntypier\ntypiest\ntypification\ntypifications\ntypified\ntypifier\ntypifiers\ntypifies\ntypify\ntypifying\ntyping\ntypist\ntypists\ntypo\ntypographer\ntypographers\ntypographic\ntypographical\ntypographically\ntypographies\ntypography\ntypological\ntypologically\ntypologies\ntypologist\ntypologists\ntypology\ntypos\ntypp\ntypps\ntypy\ntyramine\ntyramines\ntyrannic\ntyrannical\ntyrannically\ntyrannies\ntyrannize\ntyrannized\ntyrannizer\ntyrannizers\ntyrannizes\ntyrannizing\ntyrannous\ntyrannously\ntyranny\ntyrant\ntyrants\ntyre\ntyred\ntyres\ntyring\ntyro\ntyronic\ntyros\ntyrosine\ntyrosines\ntyrothricin\ntythe\ntythed\ntythes\ntything\ntzaddik\ntzaddikim\ntzar\ntzardom\ntzardoms\ntzarevna\ntzarevnas\ntzarina\ntzarinas\ntzarism\ntzarisms\ntzarist\ntzarists\ntzaritza\ntzaritzas\ntzars\ntzetze\ntzetzes\ntzigane\ntziganes\ntzimmes\ntzitzis\ntzitzith\ntzuris\nubieties\nubiety\nubique\nubiquities\nubiquitous\nubiquitously\nubiquitousness\nubiquity\nudder\nudders\nudo\nudometer\nudometers\nudometries\nudometry\nudos\nugh\nughs\nuglier\nugliest\nuglification\nuglifications\nuglified\nuglifier\nuglifiers\nuglifies\nuglify\nuglifying\nuglily\nugliness\nuglinesses\nugly\nugsome\nuh\nuhlan\nuhlans\nuintaite\nuintaites\nukase\nukases\nuke\nukelele\nukeleles\nukes\nukulele\nukuleles\nulama\nulamas\nulan\nulans\nulcer\nulcerate\nulcerated\nulcerates\nulcerating\nulceration\nulcerations\nulcerative\nulcered\nulcering\nulcerous\nulcers\nulema\nulemas\nulexite\nulexites\nullage\nullaged\nullages\nulna\nulnad\nulnae\nulnar\nulnas\nulpan\nulster\nulsters\nulterior\nulteriorly\nultima\nultimacies\nultimacy\nultimas\nultimata\nultimate\nultimately\nultimateness\nultimates\nultimatum\nultimatums\nultimo\nultra\nultraconservative\nultraconservatives\nultraism\nultraisms\nultraist\nultraists\nultramarine\nultramarines\nultramicroscope\nultramicroscopes\nultramicroscopic\nultraminiature\nultraminiaturization\nultraminiaturizations\nultramodern\nultramodernist\nultramodernists\nultranational\nultranationalism\nultranationalist\nultranationalistic\nultranationalists\nultrared\nultrareds\nultras\nultrasonic\nultrasonically\nultrasonics\nultraviolet\nulu\nululant\nululate\nululated\nululates\nululating\nululation\nululations\nulus\nulva\nulvas\num\numbel\numbeled\numbellar\numbellate\numbelled\numbellet\numbellets\numbels\number\numbered\numbering\numbers\numbilical\numbilicals\numbilici\numbilicus\numbilicuses\numbles\numbo\numbonal\numbonate\numbones\numbonic\numbos\numbra\numbrae\numbrage\numbrageous\numbrageously\numbrageousness\numbrages\numbral\numbras\numbrella\numbrellaed\numbrellaing\numbrellas\numbrette\numbrettes\numiac\numiack\numiacks\numiacs\numiak\numiaks\numiaq\numlaut\numlauted\numlauting\numlauts\numm\nump\numped\numping\numpirage\numpirages\numpire\numpired\numpires\numpiring\numps\numpteen\numpteenth\numteenth\nun\nunabashed\nunabashedly\nunabated\nunable\nunabridged\nunabused\nunaccented\nunacceptable\nunacceptably\nunaccepted\nunaccountability\nunaccountable\nunaccountably\nunaccustomed\nunacknowledged\nunacted\nunadjusted\nunadorned\nunadulterated\nunaffected\nunaffectedly\nunaffectedness\nunafraid\nunaged\nunageing\nunagile\nunaging\nunai\nunaided\nunaimed\nunaired\nunais\nunalike\nunallied\nunalterable\nunalterably\nunaltered\nunambiguous\nunambiguously\nunamused\nunanchor\nunanchored\nunanchoring\nunanchors\nunaneled\nunanimities\nunanimity\nunanimous\nunanimously\nunanswerable\nunanswerably\nunanswered\nunanticipated\nunanticipatedly\nunappetizing\nunappetizingly\nunapt\nunaptly\nunargued\nunarm\nunarmed\nunarming\nunarms\nunartful\nunary\nunasked\nunassigned\nunassuming\nunassumingness\nunatoned\nunattached\nunattainable\nunattended\nunattractive\nunattractively\nunattractiveness\nunau\nunaudited\nunaus\nunauthorized\nunavailability\nunavailable\nunavailing\nunavailingly\nunavoidable\nunavoidably\nunavowed\nunawaked\nunaware\nunawarely\nunawareness\nunawares\nunawed\nunbacked\nunbaked\nunbalance\nunbalanced\nunbalances\nunbalancing\nunbar\nunbarbed\nunbarred\nunbarring\nunbars\nunbased\nunbated\nunbe\nunbear\nunbearable\nunbearably\nunbeared\nunbearing\nunbears\nunbeatable\nunbeaten\nunbecoming\nunbecomingly\nunbecomingness\nunbeknownst\nunbelief\nunbeliefs\nunbelievable\nunbelievably\nunbeliever\nunbelievers\nunbelieving\nunbelievingly\nunbelt\nunbelted\nunbelting\nunbelts\nunbend\nunbendable\nunbended\nunbending\nunbends\nunbenign\nunbent\nunbiased\nunbid\nunbidden\nunbind\nunbinding\nunbinds\nunbitted\nunblamed\nunblessed\nunblest\nunblock\nunblocked\nunblocking\nunblocks\nunbloody\nunbodied\nunbolt\nunbolted\nunbolting\nunbolts\nunboned\nunbonnet\nunbonneted\nunbonneting\nunbonnets\nunborn\nunbosom\nunbosomed\nunbosoming\nunbosoms\nunbought\nunbound\nunbounded\nunboundedness\nunbowed\nunbox\nunboxed\nunboxes\nunboxing\nunbrace\nunbraced\nunbraces\nunbracing\nunbraid\nunbraided\nunbraiding\nunbraids\nunbreakable\nunbred\nunbreech\nunbreeched\nunbreeches\nunbreeching\nunbridle\nunbridled\nunbridles\nunbridling\nunbroke\nunbroken\nunbuckle\nunbuckled\nunbuckles\nunbuckling\nunbuffered\nunbuild\nunbuilding\nunbuilds\nunbuilt\nunbundle\nunbundled\nunbundles\nunbundling\nunburden\nunburdened\nunburdening\nunburdens\nunburied\nunburned\nunburnt\nunbutton\nunbuttoned\nunbuttoning\nunbuttons\nuncage\nuncaged\nuncages\nuncaging\nuncake\nuncaked\nuncakes\nuncaking\nuncalled\nuncandid\nuncannier\nuncanniest\nuncannily\nuncanniness\nuncanny\nuncap\nuncapped\nuncapping\nuncaps\nuncaring\nuncase\nuncased\nuncases\nuncashed\nuncasing\nuncaught\nuncaused\nunceasing\nunceasingly\nunceremonious\nunceremoniously\nunceremoniousness\nuncertain\nuncertainly\nuncertainness\nuncertainties\nuncertainty\nunchain\nunchained\nunchaining\nunchains\nunchancy\nunchangeable\nunchanged\nunchanging\nuncharacteristic\nuncharacteristically\nuncharge\nuncharged\nuncharges\nuncharging\nuncharitable\nuncharitableness\nuncharitably\nuncharted\nunchary\nunchaste\nunchewed\nunchic\nunchoke\nunchoked\nunchokes\nunchoking\nunchosen\nunchristian\nunchurch\nunchurched\nunchurches\nunchurching\nunci\nuncia\nunciae\nuncial\nuncially\nuncials\nunciform\nunciforms\nuncinal\nuncinate\nuncini\nuncinus\nuncivil\nuncivilized\nuncivilly\nunclad\nunclamp\nunclamped\nunclamping\nunclamps\nunclasp\nunclasped\nunclasping\nunclasps\nunclassified\nuncle\nunclean\nuncleaner\nuncleanest\nuncleanliness\nuncleanly\nuncleanness\nunclear\nuncleared\nunclearer\nunclearest\nunclench\nunclenched\nunclenches\nunclenching\nuncles\nunclinch\nunclinched\nunclinches\nunclinching\nuncloak\nuncloaked\nuncloaking\nuncloaks\nunclog\nunclogged\nunclogging\nunclogs\nunclose\nunclosed\nuncloses\nunclosing\nunclothe\nunclothed\nunclothes\nunclothing\nuncloud\nunclouded\nunclouding\nunclouds\nuncloyed\nuncluttered\nunco\nuncoated\nuncock\nuncocked\nuncocking\nuncocks\nuncoffin\nuncoffined\nuncoffining\nuncoffins\nuncoil\nuncoiled\nuncoiling\nuncoils\nuncoined\nuncombed\nuncomely\nuncomfortable\nuncomfortably\nuncomic\nuncommitted\nuncommon\nuncommoner\nuncommonest\nuncommonly\nuncommonness\nuncompromising\nuncompromisingly\nunconcern\nunconcerned\nunconcernedly\nunconcernedness\nunconditional\nunconditionally\nunconditioned\nunconfirmed\nunconquerable\nunconquered\nunconscionable\nunconscionableness\nunconscionably\nunconscious\nunconsciously\nunconsciousness\nunconstitutional\nunconstitutionality\nunconstitutionally\nuncontrollable\nuncontrollably\nuncontrolled\nunconventional\nunconventionality\nunconventionally\nuncooked\nuncool\nuncooperative\nuncork\nuncorked\nuncorking\nuncorks\nuncos\nuncountable\nuncounted\nuncouple\nuncoupled\nuncouples\nuncoupling\nuncouth\nuncouthly\nuncouthness\nuncover\nuncovered\nuncovering\nuncovers\nuncoy\nuncrate\nuncrated\nuncrates\nuncrating\nuncreate\nuncreated\nuncreates\nuncreating\nuncross\nuncrossed\nuncrosses\nuncrossing\nuncrown\nuncrowned\nuncrowning\nuncrowns\nunction\nunctions\nunctuous\nunctuously\nunctuousness\nuncurb\nuncurbed\nuncurbing\nuncurbs\nuncured\nuncurl\nuncurled\nuncurling\nuncurls\nuncursed\nuncus\nuncut\nundamaged\nundamped\nundaring\nundated\nundaunted\nundauntedly\nunde\nundecided\nundecked\nundeclared\nundee\nundefined\nundeliverable\nundemocratic\nundemonstrative\nundeniable\nundeniableness\nundeniably\nundenied\nunder\nunderachieve\nunderachieved\nunderachievement\nunderachievements\nunderachiever\nunderachievers\nunderachieves\nunderachieving\nunderact\nunderacted\nunderacting\nunderacts\nunderage\nunderages\nunderarm\nunderarms\nunderate\nunderbellies\nunderbelly\nunderbid\nunderbidder\nunderbidders\nunderbidding\nunderbids\nunderbought\nunderbrush\nunderbud\nunderbudded\nunderbudding\nunderbuds\nunderbuy\nunderbuying\nunderbuys\nundercapitalized\nundercarriage\nundercarriages\nundercharge\nundercharged\nundercharges\nundercharging\nunderclassman\nunderclassmen\nunderclothes\nunderclothing\nundercoat\nundercoating\nundercoats\nundercover\nundercurrent\nundercurrents\nundercut\nundercuts\nundercutting\nunderdeveloped\nunderdevelopment\nunderdevelopments\nunderdid\nunderdo\nunderdoes\nunderdog\nunderdogs\nunderdoing\nunderdone\nundereat\nundereate\nundereaten\nundereating\nundereats\nunderemployed\nunderemployment\nunderestimate\nunderestimated\nunderestimates\nunderestimating\nunderestimation\nunderestimations\nunderexpose\nunderexposed\nunderexposes\nunderexposing\nunderexposure\nunderexposures\nunderfed\nunderfeed\nunderfeeding\nunderfeeds\nunderfoot\nunderfur\nunderfurs\nundergarment\nundergarments\nundergo\nundergod\nundergods\nundergoes\nundergoing\nundergone\nundergraduate\nundergraduates\nunderground\nundergrounds\nundergrowth\nundergrowths\nunderhand\nunderhanded\nunderhandedly\nunderhandedness\nunderjaw\nunderjaws\nunderlaid\nunderlain\nunderlap\nunderlapped\nunderlapping\nunderlaps\nunderlay\nunderlaying\nunderlays\nunderlet\nunderlets\nunderletting\nunderlie\nunderlies\nunderline\nunderlined\nunderlines\nunderling\nunderlings\nunderlining\nunderlip\nunderlips\nunderlit\nunderlying\nundermine\nundermined\nundermines\nundermining\nundermost\nunderneath\nundernourished\nundernourishment\nunderpaid\nunderpants\nunderpart\nunderparts\nunderpass\nunderpasses\nunderpay\nunderpaying\nunderpayment\nunderpayments\nunderpays\nunderpin\nunderpinned\nunderpinning\nunderpinnings\nunderpins\nunderplay\nunderplayed\nunderplaying\nunderplays\nunderpopulated\nunderprivileged\nunderproduction\nunderproductions\nunderran\nunderrate\nunderrated\nunderrates\nunderrating\nunderrun\nunderrunning\nunderruns\nunderscore\nunderscored\nunderscores\nunderscoring\nundersea\nunderseas\nundersell\nunderselling\nundersells\nunderset\nundersets\nundersexed\nundershirt\nundershirts\nundershoot\nundershooting\nundershoots\nundershorts\nundershot\nunderside\nundersides\nundersigned\nundersized\nundersold\nunderstaffed\nunderstand\nunderstandability\nunderstandable\nunderstandably\nunderstanding\nunderstandingly\nunderstandings\nunderstands\nunderstate\nunderstated\nunderstatement\nunderstatements\nunderstates\nunderstating\nunderstood\nunderstudied\nunderstudies\nunderstudy\nunderstudying\nundertake\nundertaken\nundertaker\nundertakers\nundertakes\nundertaking\nundertakings\nundertax\nundertaxed\nundertaxes\nundertaxing\nundertone\nundertones\nundertook\nundertow\nundertows\nundervaluation\nundervaluations\nundervalue\nundervalued\nundervalues\nundervaluing\nunderwater\nunderway\nunderwear\nunderweight\nunderwent\nunderworld\nunderworlds\nunderwrite\nunderwriter\nunderwriters\nunderwrites\nunderwriting\nunderwritten\nunderwrote\nundesirable\nundesirables\nundesirably\nundesired\nundetectable\nundetected\nundeterminable\nundetermined\nundeveloped\nundevout\nundiagnosed\nundid\nundies\nundiluted\nundimmed\nundine\nundines\nundisclosed\nundiscoverable\nundiscovered\nundisputable\nundisputed\nundistinguished\nundisturbed\nundivided\nundo\nundock\nundocked\nundocking\nundocks\nundocumented\nundoer\nundoers\nundoes\nundoing\nundoings\nundone\nundouble\nundoubled\nundoubles\nundoubling\nundoubtable\nundoubted\nundoubtedly\nundoubting\nundrape\nundraped\nundrapes\nundraping\nundraw\nundrawing\nundrawn\nundraws\nundreamed\nundreamt\nundress\nundressed\nundresses\nundressing\nundrest\nundrew\nundried\nundrunk\nundue\nundulant\nundulate\nundulated\nundulates\nundulating\nundulation\nundulations\nundulatory\nundulled\nunduly\nundy\nundyed\nundying\nuneager\nunearned\nunearth\nunearthed\nunearthing\nunearthliness\nunearthly\nunearths\nunease\nuneases\nuneasier\nuneasiest\nuneasily\nuneasiness\nuneasy\nuneaten\nuneconomic\nunedible\nunedited\nunemployable\nunemployed\nunemployment\nunemployments\nunended\nunending\nunenforceable\nunenforced\nunenvied\nunequal\nunequaled\nunequalled\nunequally\nunequals\nunequivocal\nunequivocally\nunerased\nunerring\nunerringly\nunessential\nunethical\nunevaded\nuneven\nunevener\nunevenest\nunevenly\nunevenness\nuneventful\nuneventfully\nunexceptionable\nunexceptionableness\nunexceptionably\nunexceptional\nunexotic\nunexpected\nunexpectedly\nunexpectedness\nunexpert\nunexplainable\nunexplained\nunexplored\nunexposed\nunf\nunfaded\nunfading\nunfailing\nunfailingly\nunfair\nunfairer\nunfairest\nunfairly\nunfairness\nunfaith\nunfaithful\nunfaithfully\nunfaithfulness\nunfaiths\nunfallen\nunfamiliar\nunfamiliarity\nunfamiliarly\nunfancy\nunfasten\nunfastened\nunfastening\nunfastens\nunfavorable\nunfavorably\nunfazed\nunfeared\nunfed\nunfeeling\nunfeelingly\nunfeelingness\nunfeigned\nunfeignedly\nunfelt\nunfence\nunfenced\nunfences\nunfencing\nunfetter\nunfettered\nunfettering\nunfetters\nunfilial\nunfilled\nunfilmed\nunfinished\nunfired\nunfished\nunfit\nunfitly\nunfitness\nunfits\nunfitted\nunfitting\nunfix\nunfixed\nunfixes\nunfixing\nunfixt\nunflappable\nunflexed\nunflinching\nunflinchingly\nunfoiled\nunfold\nunfolded\nunfolder\nunfolders\nunfolding\nunfolds\nunfond\nunforced\nunforeseeable\nunforeseen\nunforged\nunforgettable\nunforgettably\nunforgot\nunforked\nunformed\nunfortunate\nunfortunately\nunfortunates\nunfought\nunfound\nunfounded\nunframed\nunfree\nunfreed\nunfreeing\nunfrees\nunfreeze\nunfreezes\nunfreezing\nunfriendlier\nunfriendliest\nunfriendliness\nunfriendly\nunfrock\nunfrocked\nunfrocking\nunfrocks\nunfroze\nunfrozen\nunfunded\nunfurl\nunfurled\nunfurling\nunfurls\nunfurnished\nunfused\nunfussy\nungainlier\nungainliest\nungainliness\nungainly\nungalled\nungenial\nungentle\nungently\nungifted\nungird\nungirded\nungirding\nungirds\nungirt\nunglazed\nunglove\nungloved\nungloves\nungloving\nunglue\nunglued\nunglues\nungluing\nungodlier\nungodliest\nungodliness\nungodly\nungot\nungotten\nungovernable\nungowned\nungraced\nungraded\nungrateful\nungratefully\nungratefulness\nungreedy\nungual\nunguard\nunguarded\nunguardedly\nunguardedness\nunguarding\nunguards\nunguent\nunguents\nungues\nunguided\nunguis\nungula\nungulae\nungular\nungulate\nungulates\nunhailed\nunhair\nunhaired\nunhairing\nunhairs\nunhallow\nunhallowed\nunhallowing\nunhallows\nunhalved\nunhand\nunhanded\nunhandier\nunhandiest\nunhanding\nunhands\nunhandy\nunhang\nunhanged\nunhanging\nunhangs\nunhappier\nunhappiest\nunhappily\nunhappiness\nunhappy\nunharmed\nunhasty\nunhat\nunhats\nunhatted\nunhatting\nunhealed\nunhealthier\nunhealthiest\nunhealthily\nunhealthy\nunheard\nunheated\nunheeded\nunheeding\nunhelm\nunhelmed\nunhelming\nunhelms\nunhelped\nunheroic\nunhewn\nunhinge\nunhinged\nunhinges\nunhinging\nunhip\nunhired\nunhitch\nunhitched\nunhitches\nunhitching\nunholiest\nunholily\nunholiness\nunholy\nunhood\nunhooded\nunhooding\nunhoods\nunhook\nunhooked\nunhooking\nunhooks\nunhoped\nunhorse\nunhorsed\nunhorses\nunhorsing\nunhouse\nunhoused\nunhouses\nunhousing\nunhuman\nunhung\nunhurt\nunhusk\nunhusked\nunhusking\nunhusks\nunhyphenated\nunialgal\nuniaxial\nunicameral\nunicamerally\nunicellular\nunicolor\nunicorn\nunicorns\nunicycle\nunicycles\nunicyclist\nunicyclists\nunideaed\nunideal\nunidentifiable\nunidentified\nunidirectional\nuniface\nunifaces\nunifiable\nunific\nunification\nunifications\nunified\nunifier\nunifiers\nunifies\nunifilar\nuniform\nuniformed\nuniformer\nuniformest\nuniforming\nuniformitarian\nuniformitarianism\nuniformities\nuniformity\nuniformly\nuniforms\nunify\nunifying\nunilateral\nunilaterally\nunilobed\nunimaginable\nunimbued\nunimpeachable\nunimpeachably\nunimportant\nuninformed\nuninhabitable\nuninhabited\nuninhibited\nuninhibitedly\nuninhibitedness\nuninstructed\nuninstructive\nunintelligibilities\nunintelligibility\nunintelligible\nunintelligibleness\nunintelligibly\nunintended\nunintentional\nunintentionally\nuninterested\nuninteresting\nuninterrupted\nuninterruptedly\nunion\nunionise\nunionised\nunionises\nunionising\nunionism\nunionisms\nunionist\nunionists\nunionization\nunionizations\nunionize\nunionized\nunionizes\nunionizing\nunions\nunipod\nunipods\nunipolar\nunique\nuniquely\nuniqueness\nuniquer\nuniques\nuniquest\nunironed\nunisex\nunisexes\nunison\nunisonal\nunisons\nunissued\nunit\nunitage\nunitages\nunitarian\nunitarianism\nunitarians\nunitary\nunite\nunited\nunitedly\nuniter\nuniters\nunites\nunities\nuniting\nunitive\nunitization\nunitizations\nunitize\nunitized\nunitizes\nunitizing\nunits\nunity\nunivalve\nunivalves\nuniversal\nuniversalism\nuniversalist\nuniversalistic\nuniversalists\nuniversalities\nuniversality\nuniversalization\nuniversalizations\nuniversalize\nuniversalized\nuniversalizes\nuniversalizing\nuniversally\nuniversalness\nuniversals\nuniverse\nuniverses\nuniversities\nuniversity\nunivocal\nunivocals\nunjaded\nunjoined\nunjoyful\nunjudged\nunjust\nunjustifiable\nunjustifiably\nunjustified\nunjustly\nunkempt\nunkend\nunkenned\nunkennel\nunkenneled\nunkenneling\nunkennelled\nunkennelling\nunkennels\nunkent\nunkept\nunkind\nunkinder\nunkindest\nunkindlier\nunkindliest\nunkindly\nunkindness\nunkingly\nunkissed\nunknit\nunknits\nunknitted\nunknitting\nunknot\nunknots\nunknotted\nunknotting\nunknowable\nunknowing\nunknowingly\nunknown\nunknowns\nunkosher\nunlace\nunlaced\nunlaces\nunlacing\nunlade\nunladed\nunladen\nunlades\nunlading\nunlaid\nunlash\nunlashed\nunlashes\nunlashing\nunlatch\nunlatched\nunlatches\nunlatching\nunlawful\nunlawfully\nunlawfulness\nunlay\nunlaying\nunlays\nunlead\nunleaded\nunleading\nunleads\nunlearn\nunlearned\nunlearning\nunlearns\nunlearnt\nunleased\nunleash\nunleashed\nunleashes\nunleashing\nunled\nunless\nunlet\nunlethal\nunletted\nunlettered\nunlevel\nunleveled\nunleveling\nunlevelled\nunlevelling\nunlevels\nunlevied\nunlicensed\nunlicked\nunlier\nunliest\nunlike\nunlikelier\nunlikeliest\nunlikelihood\nunlikelihoods\nunlikely\nunlimber\nunlimbered\nunlimbering\nunlimbers\nunlimited\nunlimitedly\nunlined\nunlink\nunlinked\nunlinking\nunlinks\nunlisted\nunlit\nunlive\nunlived\nunlively\nunlives\nunliving\nunload\nunloaded\nunloader\nunloaders\nunloading\nunloads\nunlobed\nunlock\nunlocked\nunlocking\nunlocks\nunloose\nunloosed\nunloosen\nunloosened\nunloosening\nunloosens\nunlooses\nunloosing\nunlovable\nunloved\nunlovelier\nunloveliest\nunlovely\nunloving\nunluckier\nunluckiest\nunluckily\nunlucky\nunmade\nunmake\nunmaker\nunmakers\nunmakes\nunmaking\nunman\nunmanful\nunmanliness\nunmanly\nunmanned\nunmannerly\nunmanning\nunmans\nunmapped\nunmarked\nunmarred\nunmarried\nunmask\nunmasked\nunmasker\nunmaskers\nunmasking\nunmasks\nunmatched\nunmated\nunmatted\nunmeaning\nunmeant\nunmeet\nunmeetly\nunmellow\nunmelted\nunmended\nunmentionable\nunmentionables\nunmerciful\nunmercifully\nunmet\nunmew\nunmewed\nunmewing\nunmews\nunmilled\nunmingle\nunmingled\nunmingles\nunmingling\nunmistakable\nunmistakably\nunmiter\nunmitered\nunmitering\nunmiters\nunmitigated\nunmitigatedly\nunmitre\nunmitred\nunmitres\nunmitring\nunmixed\nunmixt\nunmodish\nunmold\nunmolded\nunmolding\nunmolds\nunmolten\nunmoner\nunmonest\nunmoor\nunmoored\nunmooring\nunmoors\nunmoral\nunmounted\nunmovable\nunmoved\nunmoving\nunmown\nunmuffle\nunmuffled\nunmuffles\nunmuffling\nunmuzzle\nunmuzzled\nunmuzzles\nunmuzzling\nunnail\nunnailed\nunnailing\nunnails\nunnameable\nunnamed\nunnatural\nunnaturally\nunnaturalness\nunnecessarily\nunnecessary\nunneeded\nunnerve\nunnerved\nunnerves\nunnerving\nunnoisy\nunnoted\nunnoticeable\nunnoticed\nunnumbered\nunny\nunobserved\nunoccupied\nunofficial\nunofficially\nunoiled\nunopen\nunopened\nunopposed\nunordered\nunorganized\nunornate\nunorthodox\nunorthodoxies\nunorthodoxy\nunowned\nunpack\nunpacked\nunpacker\nunpackers\nunpacking\nunpacks\nunpaged\nunpaid\nunpaired\nunpalatable\nunparalleled\nunparted\nunpaved\nunpaying\nunpeg\nunpegged\nunpegging\nunpegs\nunpen\nunpenned\nunpenning\nunpens\nunpent\nunpeople\nunpeopled\nunpeoples\nunpeopling\nunperson\nunpersons\nunpick\nunpicked\nunpicking\nunpicks\nunpier\nunpiest\nunpile\nunpiled\nunpiles\nunpiling\nunpin\nunpinned\nunpinning\nunpins\nunpitied\nunplaced\nunplait\nunplaited\nunplaiting\nunplaits\nunplayed\nunpleasant\nunpleasantly\nunpleasantness\nunpliant\nunplowed\nunplug\nunplugged\nunplugging\nunplugs\nunpoetic\nunpoised\nunpolite\nunpolled\nunpopular\nunpopularity\nunposed\nunposted\nunprecedented\nunpredictable\nunprejudiced\nunprepared\nunpreparedness\nunpretty\nunpriced\nunprimed\nunprincipled\nunprincipledness\nunprintable\nunprized\nunprobed\nunprocessed\nunproductive\nunprofessional\nunprofitable\nunprofitably\nunprosperous\nunprotected\nunprovable\nunproved\nunproven\nunpruned\nunpublished\nunpucker\nunpuckered\nunpuckering\nunpuckers\nunpunished\nunpure\nunpurged\nunpuzzle\nunpuzzled\nunpuzzles\nunpuzzling\nunqualifiable\nunqualified\nunqualifiedly\nunquestionable\nunquestionably\nunquestioned\nunquestioning\nunquestioningly\nunquiet\nunquieter\nunquietest\nunquietly\nunquietness\nunquiets\nunquote\nunquoted\nunquotes\nunquoting\nunraised\nunraked\nunranked\nunrated\nunravel\nunraveled\nunraveling\nunravelled\nunravelling\nunravels\nunrazed\nunreachable\nunread\nunreadable\nunreadier\nunreadiest\nunready\nunreal\nunrealistic\nunrealistically\nunrealities\nunreality\nunrealizable\nunrealized\nunreally\nunreason\nunreasonable\nunreasonableness\nunreasonably\nunreasoned\nunreasoning\nunreasoningly\nunreasons\nunreceptive\nunrecognizable\nunrecognizably\nunrecognized\nunrecoverable\nunreel\nunreeled\nunreeler\nunreelers\nunreeling\nunreels\nunreeve\nunreeved\nunreeves\nunreeving\nunregenerate\nunregenerately\nunregulated\nunrelated\nunrelenting\nunrelentingly\nunreliable\nunremitting\nunremittingly\nunrent\nunrented\nunrepaid\nunrepair\nunrepairs\nunreported\nunreserved\nunreservedly\nunresolved\nunresponsive\nunresponsively\nunresponsiveness\nunrest\nunrested\nunrestricted\nunrests\nunrhymed\nunriddle\nunriddled\nunriddles\nunriddling\nunrifled\nunrig\nunrigged\nunrigging\nunrigs\nunrimed\nunrinsed\nunrip\nunripe\nunripely\nunriper\nunripest\nunripped\nunripping\nunrips\nunrisen\nunrivaled\nunrivalled\nunrobe\nunrobed\nunrobes\nunrobing\nunroll\nunrolled\nunrolling\nunrolls\nunroof\nunroofed\nunroofing\nunroofs\nunroot\nunrooted\nunrooting\nunroots\nunrough\nunround\nunrounded\nunrounding\nunrounds\nunrove\nunroven\nunruffled\nunruled\nunrulier\nunruliest\nunruliness\nunruly\nunrushed\nuns\nunsaddle\nunsaddled\nunsaddles\nunsaddling\nunsafe\nunsafely\nunsafeties\nunsafety\nunsaid\nunsalted\nunsated\nunsatisfactorily\nunsatisfactory\nunsatisfied\nunsaturated\nunsaved\nunsavory\nunsawed\nunsawn\nunsay\nunsaying\nunsays\nunscaled\nunscathed\nunschooled\nunscientific\nunscientifically\nunscramble\nunscrambled\nunscrambles\nunscrambling\nunscrew\nunscrewed\nunscrewing\nunscrews\nunscrupulous\nunscrupulously\nunscrupulousness\nunseal\nunsealed\nunsealing\nunseals\nunseam\nunseamed\nunseaming\nunseams\nunseared\nunseasonable\nunseasonableness\nunseasonably\nunseasoned\nunseat\nunseated\nunseating\nunseats\nunsecured\nunseeded\nunseeing\nunseemlier\nunseemliest\nunseemliness\nunseemly\nunseen\nunseized\nunselfish\nunselfishly\nunselfishness\nunsent\nunserved\nunset\nunsets\nunsetting\nunsettle\nunsettled\nunsettledness\nunsettlement\nunsettlements\nunsettles\nunsettling\nunsew\nunsewed\nunsewing\nunsewn\nunsews\nunsex\nunsexed\nunsexes\nunsexing\nunsexual\nunshaded\nunshaken\nunshamed\nunshaped\nunshapen\nunshared\nunsharp\nunshaved\nunshaven\nunsheathe\nunsheathed\nunsheathes\nunsheathing\nunshed\nunshell\nunshelled\nunshelling\nunshells\nunshift\nunshifted\nunshifting\nunshifts\nunship\nunshipped\nunshipping\nunships\nunshod\nunshorn\nunshrunk\nunshut\nunsicker\nunsifted\nunsight\nunsighted\nunsighting\nunsightliness\nunsightly\nunsights\nunsigned\nunsilent\nunsinful\nunsized\nunskilled\nunskillful\nunskillfully\nunskillfulness\nunslaked\nunsling\nunslinging\nunslings\nunslung\nunsmoked\nunsnap\nunsnapped\nunsnapping\nunsnaps\nunsnarl\nunsnarled\nunsnarling\nunsnarls\nunsoaked\nunsober\nunsociability\nunsociable\nunsocial\nunsocially\nunsoiled\nunsold\nunsolder\nunsoldered\nunsoldering\nunsolders\nunsolid\nunsolvable\nunsolved\nunsoncy\nunsonsie\nunsonsy\nunsophisticated\nunsophistication\nunsophistications\nunsorted\nunsought\nunsound\nunsounder\nunsoundest\nunsoundly\nunsoundness\nunsoured\nunsowed\nunsown\nunsparing\nunsparingly\nunspeak\nunspeakable\nunspeakably\nunspeaking\nunspeaks\nunspecific\nunspecified\nunspent\nunsphere\nunsphered\nunspheres\nunsphering\nunspilt\nunsplit\nunspoilt\nunspoke\nunspoken\nunsprung\nunspun\nunstable\nunstableness\nunstabler\nunstablest\nunstably\nunstack\nunstacked\nunstacking\nunstacks\nunstate\nunstated\nunstates\nunstating\nunsteadied\nunsteadier\nunsteadies\nunsteadiest\nunsteadily\nunsteadiness\nunsteady\nunsteadying\nunsteel\nunsteeled\nunsteeling\nunsteels\nunstep\nunstepped\nunstepping\nunsteps\nunstick\nunsticked\nunsticking\nunsticks\nunstop\nunstopped\nunstopping\nunstops\nunstrap\nunstrapped\nunstrapping\nunstraps\nunstress\nunstresses\nunstring\nunstringing\nunstrings\nunstructured\nunstrung\nunstuck\nunstung\nunsubtle\nunsuccessful\nunsuccessfully\nunsuitability\nunsuitable\nunsuitably\nunsuited\nunsung\nunsunk\nunsupportable\nunsupported\nunsure\nunsurely\nunsuspected\nunsuspecting\nunswathe\nunswathed\nunswathes\nunswathing\nunswayed\nunswear\nunswearing\nunswears\nunswept\nunswore\nunsworn\nuntack\nuntacked\nuntacking\nuntacks\nuntagged\nuntaken\nuntame\nuntamed\nuntangle\nuntangled\nuntangles\nuntangling\nuntanned\nuntapped\nuntasted\nuntaught\nuntaxed\nunteach\nunteaches\nunteaching\nuntenability\nuntenable\nuntenanted\nuntended\nuntested\nuntether\nuntethered\nuntethering\nuntethers\nunthawed\nunthink\nunthinkability\nunthinkable\nunthinkably\nunthinking\nunthinkingly\nunthinks\nunthought\nunthread\nunthreaded\nunthreading\nunthreads\nunthrone\nunthroned\nunthrones\nunthroning\nuntidied\nuntidier\nuntidies\nuntidiest\nuntidily\nuntidy\nuntidying\nuntie\nuntied\nunties\nuntil\nuntilled\nuntilted\nuntimelier\nuntimeliest\nuntimeliness\nuntimely\nuntinged\nuntired\nuntiring\nuntitled\nunto\nuntold\nuntouchability\nuntouchable\nuntouchables\nuntouched\nuntoward\nuntowardly\nuntowardness\nuntraced\nuntrained\nuntrammeled\nuntread\nuntreading\nuntreads\nuntried\nuntrim\nuntrimmed\nuntrimming\nuntrims\nuntrod\nuntrodden\nuntrue\nuntruer\nuntruest\nuntruly\nuntruss\nuntrussed\nuntrusses\nuntrussing\nuntrusty\nuntruth\nuntruthful\nuntruthfully\nuntruthfulness\nuntruths\nuntuck\nuntucked\nuntucking\nuntucks\nuntufted\nuntune\nuntuned\nuntunes\nuntuning\nunturned\nuntwine\nuntwined\nuntwines\nuntwining\nuntwist\nuntwisted\nuntwisting\nuntwists\nuntying\nununited\nunurged\nunusable\nunused\nunusual\nunusually\nunusualness\nunvalued\nunvaried\nunveil\nunveiled\nunveiling\nunveils\nunveined\nunversed\nunvexed\nunvext\nunviable\nunvocal\nunvoice\nunvoiced\nunvoices\nunvoicing\nunwalled\nunwanted\nunwarier\nunwariest\nunwarily\nunwariness\nunwarmed\nunwarned\nunwarped\nunwarranted\nunwary\nunwashed\nunwasheds\nunwasted\nunwaxed\nunweaned\nunweary\nunweave\nunweaves\nunweaving\nunwed\nunwedded\nunweeded\nunweight\nunweighted\nunweighting\nunweights\nunwelcome\nunwelded\nunwell\nunwept\nunwetted\nunwholesome\nunwholesomely\nunwieldier\nunwieldiest\nunwieldy\nunwifely\nunwilled\nunwilling\nunwillingly\nunwillingness\nunwind\nunwinder\nunwinders\nunwinding\nunwinds\nunwisdom\nunwisdoms\nunwise\nunwisely\nunwiser\nunwisest\nunwish\nunwished\nunwishes\nunwishing\nunwit\nunwits\nunwitted\nunwitting\nunwittingly\nunwon\nunwonted\nunwontedly\nunwontedness\nunwooded\nunwooed\nunworkable\nunworked\nunworn\nunworthier\nunworthies\nunworthiest\nunworthily\nunworthiness\nunworthy\nunwound\nunwove\nunwoven\nunwrap\nunwrapped\nunwrapping\nunwraps\nunwritten\nunwrung\nunyeaned\nunyoke\nunyoked\nunyokes\nunyoking\nunzip\nunzipped\nunzipping\nunzips\nunzoned\nup\nupas\nupases\nupbear\nupbearer\nupbearers\nupbearing\nupbears\nupbeat\nupbeats\nupbind\nupbinding\nupbinds\nupboil\nupboiled\nupboiling\nupboils\nupbore\nupborne\nupbound\nupbow\nupbraid\nupbraided\nupbraiding\nupbraids\nupbringing\nupbringings\nupbuild\nupbuilding\nupbuilds\nupbuilt\nupby\nupbye\nupcast\nupcasting\nupcasts\nupchuck\nupchucked\nupchucking\nupchucks\nupclimb\nupclimbed\nupclimbing\nupclimbs\nupcoil\nupcoiled\nupcoiling\nupcoils\nupcoming\nupcurl\nupcurled\nupcurling\nupcurls\nupcurve\nupcurved\nupcurves\nupcurving\nupdart\nupdarted\nupdarting\nupdarts\nupdate\nupdated\nupdater\nupdaters\nupdates\nupdating\nupdive\nupdived\nupdives\nupdiving\nupdo\nupdos\nupdove\nupdraft\nupdrafts\nupdried\nupdries\nupdry\nupdrying\nupend\nupended\nupending\nupends\nupfield\nupfling\nupflinging\nupflings\nupflow\nupflowed\nupflowing\nupflows\nupflung\nupfold\nupfolded\nupfolding\nupfolds\nupgather\nupgathered\nupgathering\nupgathers\nupgaze\nupgazed\nupgazes\nupgazing\nupgird\nupgirded\nupgirding\nupgirds\nupgirt\nupgoing\nupgrade\nupgraded\nupgrades\nupgrading\nupgrew\nupgrow\nupgrowing\nupgrown\nupgrows\nupgrowth\nupgrowths\nupheap\nupheaped\nupheaping\nupheaps\nupheaval\nupheavals\nupheave\nupheaved\nupheaver\nupheavers\nupheaves\nupheaving\nupheld\nuphill\nuphills\nuphoard\nuphoarded\nuphoarding\nuphoards\nuphold\nupholder\nupholders\nupholding\nupholds\nupholster\nupholstered\nupholsterer\nupholsterers\nupholsteries\nupholstering\nupholsters\nupholstery\nuphove\nuphroe\nuphroes\nupkeep\nupkeeps\nupland\nuplander\nuplanders\nuplands\nupleap\nupleaped\nupleaping\nupleaps\nupleapt\nuplift\nuplifted\nuplifter\nuplifters\nuplifting\nuplifts\nuplight\nuplighted\nuplighting\nuplights\nuplit\nupmost\nupo\nupon\nupped\nupper\nuppercase\nupperclassman\nupperclassmen\nuppercut\nuppercuts\nuppercutted\nuppercutting\nuppermost\nuppers\nuppile\nuppiled\nuppiles\nuppiling\nupping\nuppings\nuppish\nuppishly\nuppity\nupprop\nuppropped\nuppropping\nupprops\nupraise\nupraised\nupraiser\nupraisers\nupraises\nupraising\nupreach\nupreached\nupreaches\nupreaching\nuprear\nupreared\nuprearing\nuprears\nupright\nuprighted\nuprighting\nuprightly\nuprightness\nuprights\nuprise\nuprisen\nupriser\nuprisers\nuprises\nuprising\nuprisings\nupriver\nuprivers\nuproar\nuproarious\nuproariously\nuproariousness\nuproars\nuproot\nuprootal\nuprootals\nuprooted\nuprootedness\nuprooter\nuprooters\nuprooting\nuproots\nuprose\nuprouse\nuproused\nuprouses\nuprousing\nuprush\nuprushed\nuprushes\nuprushing\nups\nupsend\nupsending\nupsends\nupsent\nupset\nupsets\nupsetter\nupsetters\nupsetting\nupshift\nupshifted\nupshifting\nupshifts\nupshoot\nupshooting\nupshoots\nupshot\nupshots\nupside\nupsides\nupsilon\nupsilons\nupsoar\nupsoared\nupsoaring\nupsoars\nupsprang\nupspring\nupspringing\nupsprings\nupsprung\nupstage\nupstaged\nupstages\nupstaging\nupstair\nupstairs\nupstand\nupstanding\nupstandingness\nupstands\nupstare\nupstared\nupstares\nupstaring\nupstart\nupstarted\nupstarting\nupstarts\nupstate\nupstater\nupstaters\nupstates\nupstep\nupstepped\nupstepping\nupsteps\nupstir\nupstirred\nupstirring\nupstirs\nupstood\nupstream\nupstroke\nupstrokes\nupsurge\nupsurged\nupsurges\nupsurging\nupsweep\nupsweeping\nupsweeps\nupswell\nupswelled\nupswelling\nupswells\nupswept\nupswing\nupswinging\nupswings\nupswollen\nupswung\nuptake\nuptakes\nuptear\nuptearing\nuptears\nupthrew\nupthrow\nupthrowing\nupthrown\nupthrows\nupthrust\nupthrusted\nupthrusting\nupthrusts\nuptight\nuptilt\nuptilted\nuptilting\nuptilts\nuptime\nuptimes\nuptore\nuptorn\nuptoss\nuptossed\nuptosses\nuptossing\nuptown\nuptowner\nuptowners\nuptowns\nuptrend\nuptrends\nupturn\nupturned\nupturning\nupturns\nupwaft\nupwafted\nupwafting\nupwafts\nupward\nupwardly\nupwardness\nupwards\nupwell\nupwelled\nupwelling\nupwells\nupwind\nupwinds\nuracil\nuracils\nuraei\nuraemia\nuraemias\nuraemic\nuraeus\nuraeuses\nuralite\nuralites\nuralitic\nuranic\nuranide\nuranides\nuranism\nuranisms\nuranite\nuranites\nuranitic\nuranium\nuraniums\nuranous\nuranyl\nuranylic\nuranyls\nurare\nurares\nurari\nuraris\nurase\nurases\nurate\nurates\nuratic\nurb\nurban\nurbane\nurbanely\nurbaner\nurbanest\nurbanise\nurbanised\nurbanises\nurbanising\nurbanism\nurbanisms\nurbanist\nurbanists\nurbanite\nurbanites\nurbanities\nurbanity\nurbanization\nurbanize\nurbanized\nurbanizes\nurbanizing\nurbanologist\nurbanologists\nurbanology\nurbia\nurbs\nurchin\nurchins\nurd\nurds\nurea\nureal\nureas\nurease\nureases\nuredia\nuredial\nuredinia\nuredium\nuredo\nuredos\nureic\nureide\nureides\nuremia\nuremias\nuremic\nureter\nureteral\nureteric\nureters\nurethan\nurethane\nurethanes\nurethans\nurethra\nurethrae\nurethral\nurethras\nuretic\nurge\nurged\nurgencies\nurgency\nurgent\nurgently\nurger\nurgers\nurges\nurging\nurgingly\nurial\nuric\nuridine\nuridines\nurinal\nurinals\nurinaries\nurinary\nurinate\nurinated\nurinates\nurinating\nurination\nurinations\nurine\nurinemia\nurinemias\nurinemic\nurines\nurinose\nurinous\nurn\nurnlike\nurns\nurochord\nurochords\nurodele\nurodeles\nurolith\nuroliths\nurologic\nurologies\nurologist\nurologists\nurology\nuropod\nuropodal\nuropods\nuroscopies\nuroscopy\nurostyle\nurostyles\nursa\nursae\nursiform\nursine\nurticant\nurticants\nurticate\nurticated\nurticates\nurticating\nurus\nuruses\nurushiol\nurushiols\nus\nusabilities\nusability\nusable\nusableness\nusably\nusage\nusages\nusance\nusances\nusaunce\nusaunces\nuse\nuseable\nuseably\nused\nuseful\nusefully\nusefulness\nuseless\nuselessly\nuselessness\nuser\nusers\nuses\nusher\nushered\nusherette\nusherettes\nushering\nushers\nusing\nusnea\nusneas\nusquabae\nusquabaes\nusque\nusquebae\nusquebaes\nusques\nustulate\nusual\nusually\nusualness\nusuals\nusufruct\nusufructs\nusufructuaries\nusufructuary\nusurer\nusurers\nusuries\nusurious\nusuriously\nusuriousness\nusurp\nusurpation\nusurpations\nusurped\nusurper\nusurpers\nusurping\nusurps\nusury\nut\nuta\nutas\nutensil\nutensils\nuteri\nuterine\nuterus\nuteruses\nuties\nutile\nutilidor\nutilidors\nutilise\nutilised\nutiliser\nutilisers\nutilises\nutilising\nutilitarian\nutilitarianism\nutilitarians\nutilities\nutility\nutilizable\nutilization\nutilizations\nutilize\nutilized\nutilizer\nutilizers\nutilizes\nutilizing\nutmost\nutmosts\nutopia\nutopian\nutopians\nutopias\nutopism\nutopisms\nutopist\nutopists\nutricle\nutricles\nutriculi\nuts\nutter\nutterable\nutterance\nutterances\nuttered\nutterer\nutterers\nuttering\nutterly\nuttermost\nutters\nuvea\nuveal\nuveas\nuveitic\nuveitis\nuveitises\nuveous\nuvula\nuvulae\nuvular\nuvularly\nuvulars\nuvulas\nuvulitis\nuvulitises\nuxorial\nuxoricide\nuxoricides\nuxorious\nuxoriously\nuxoriousness\nvac\nvacancies\nvacancy\nvacant\nvacantly\nvacantness\nvacate\nvacated\nvacates\nvacating\nvacation\nvacationed\nvacationer\nvacationers\nvacationing\nvacationist\nvacationists\nvacations\nvaccina\nvaccinal\nvaccinas\nvaccinate\nvaccinated\nvaccinates\nvaccinating\nvaccination\nvaccinations\nvaccinator\nvaccinators\nvaccine\nvaccines\nvaccinia\nvaccinias\nvacillate\nvacillated\nvacillates\nvacillating\nvacillatingly\nvacillation\nvacillations\nvacillator\nvacillators\nvacs\nvacua\nvacuities\nvacuity\nvacuolar\nvacuole\nvacuoles\nvacuous\nvacuously\nvacuousness\nvacuum\nvacuumed\nvacuuming\nvacuums\nvadose\nvagabond\nvagabonded\nvagabonding\nvagabondish\nvagabondism\nvagabonds\nvagal\nvagally\nvagaries\nvagarious\nvagariously\nvagary\nvagi\nvagile\nvagilities\nvagility\nvagina\nvaginae\nvaginal\nvaginas\nvaginate\nvagotomies\nvagotomy\nvagrancies\nvagrancy\nvagrant\nvagrantly\nvagrants\nvagrom\nvague\nvaguely\nvagueness\nvaguer\nvaguest\nvagus\nvahine\nvahines\nvail\nvailed\nvailing\nvails\nvain\nvainer\nvainest\nvainglories\nvainglorious\nvaingloriously\nvaingloriousness\nvainglory\nvainly\nvainness\nvainnesses\nvair\nvairs\nvakeel\nvakeels\nvakil\nvakils\nvalance\nvalanced\nvalances\nvalancing\nvale\nvalediction\nvaledictions\nvaledictorian\nvaledictorians\nvaledictories\nvaledictory\nvalence\nvalences\nvalencia\nvalencias\nvalencies\nvalency\nvalentine\nvalentines\nvalerate\nvalerates\nvalerian\nvalerians\nvaleric\nvales\nvalet\nvaleted\nvaleting\nvalets\nvaletudinarian\nvaletudinarianism\nvaletudinarians\nvaletudinaries\nvaletudinary\nvalgoid\nvalgus\nvalguses\nvaliance\nvaliances\nvaliancies\nvaliancy\nvaliant\nvaliantly\nvaliants\nvalid\nvalidate\nvalidated\nvalidates\nvalidating\nvalidation\nvalidations\nvalidities\nvalidity\nvalidly\nvaline\nvalines\nvalise\nvalises\nvalkyr\nvalkyrie\nvalkyries\nvalkyrs\nvallate\nvalley\nvalleys\nvalonia\nvalonias\nvalor\nvalorise\nvalorised\nvalorises\nvalorising\nvalorization\nvalorizations\nvalorize\nvalorized\nvalorizes\nvalorizing\nvalorous\nvalorously\nvalors\nvalour\nvalours\nvalse\nvalses\nvaluable\nvaluableness\nvaluables\nvaluably\nvaluate\nvaluated\nvaluates\nvaluating\nvaluation\nvaluational\nvaluationally\nvaluations\nvaluator\nvaluators\nvalue\nvalued\nvalueless\nvaluelessness\nvaluer\nvaluers\nvalues\nvaluing\nvaluta\nvalutas\nvalval\nvalvar\nvalvate\nvalve\nvalved\nvalveless\nvalvelet\nvalvelets\nvalves\nvalving\nvalvula\nvalvulae\nvalvular\nvalvule\nvalvules\nvambrace\nvambraces\nvamoose\nvamoosed\nvamooses\nvamoosing\nvamose\nvamosed\nvamoses\nvamosing\nvamp\nvamped\nvamper\nvampers\nvamping\nvampire\nvampires\nvampiric\nvampish\nvamps\nvan\nvanadate\nvanadates\nvanadic\nvanadium\nvanadiums\nvanadous\nvanda\nvandal\nvandalic\nvandalism\nvandalize\nvandalized\nvandalizes\nvandalizing\nvandals\nvandas\nvandyke\nvandyked\nvandykes\nvane\nvaned\nvanes\nvang\nvangs\nvanguard\nvanguards\nvanilla\nvanillas\nvanillic\nvanillin\nvanillins\nvanish\nvanished\nvanisher\nvanishers\nvanishes\nvanishing\nvanishingly\nvanitied\nvanities\nvanity\nvanman\nvanmen\nvanquish\nvanquishable\nvanquished\nvanquisher\nvanquishers\nvanquishes\nvanquishing\nvans\nvantage\nvantages\nvanward\nvapid\nvapidities\nvapidity\nvapidly\nvapidness\nvapor\nvapored\nvaporer\nvaporers\nvaporing\nvaporings\nvaporise\nvaporised\nvaporises\nvaporish\nvaporishness\nvaporising\nvaporization\nvaporizations\nvaporize\nvaporized\nvaporizer\nvaporizers\nvaporizes\nvaporizing\nvaporous\nvaporously\nvaporousness\nvapors\nvapory\nvapour\nvapoured\nvapourer\nvapourers\nvapouring\nvapours\nvapoury\nvaquero\nvaqueros\nvar\nvara\nvaras\nvaria\nvariabilities\nvariability\nvariable\nvariableness\nvariables\nvariably\nvariance\nvariances\nvariant\nvariants\nvariate\nvariated\nvariates\nvariating\nvariation\nvariational\nvariationally\nvariations\nvarices\nvaricose\nvaricosities\nvaricosity\nvaried\nvariedly\nvariegate\nvariegated\nvariegates\nvariegating\nvariegation\nvariegations\nvarier\nvariers\nvaries\nvarietal\nvarieties\nvariety\nvariform\nvariola\nvariolar\nvariolas\nvariole\nvarioles\nvariorum\nvariorums\nvarious\nvariously\nvaristor\nvaristors\nvarix\nvarlet\nvarletries\nvarletry\nvarlets\nvarment\nvarments\nvarmint\nvarmints\nvarna\nvarnas\nvarnish\nvarnished\nvarnishes\nvarnishing\nvarnishy\nvars\nvarsities\nvarsity\nvarus\nvaruses\nvarve\nvarved\nvarves\nvary\nvarying\nvaryingly\nvas\nvasa\nvasal\nvascula\nvascular\nvascularities\nvascularity\nvasculum\nvasculums\nvase\nvasectomies\nvasectomy\nvaselike\nvases\nvasiform\nvassal\nvassalage\nvassals\nvast\nvaster\nvastest\nvastier\nvasties\nvastiest\nvastities\nvastity\nvastly\nvastness\nvastnesses\nvasts\nvasty\nvat\nvatful\nvatfuls\nvatic\nvatical\nvaticide\nvaticides\nvaticinate\nvaticinated\nvaticinates\nvaticinating\nvaticinator\nvaticinators\nvats\nvatted\nvatting\nvatu\nvatus\nvau\nvaudeville\nvaudevillian\nvaudevillians\nvault\nvaulted\nvaulter\nvaulters\nvaultier\nvaultiest\nvaulting\nvaultings\nvaults\nvaulty\nvaunt\nvaunted\nvaunter\nvaunters\nvauntful\nvauntie\nvaunting\nvauntingly\nvaunts\nvaunty\nvaus\nvav\nvavasor\nvavasors\nvavasour\nvavasours\nvavassor\nvavassors\nvavs\nvaw\nvaward\nvawards\nvawntie\nvaws\nveal\nvealed\nvealer\nvealers\nvealier\nvealiest\nvealing\nveals\nvealy\nvector\nvectored\nvectorial\nvectoring\nvectors\nvedalia\nvedalias\nvedette\nvedettes\nvee\nveena\nveenas\nveep\nveepee\nveepees\nveeps\nveer\nveered\nveeries\nveering\nveeringly\nveers\nveery\nvees\nveg\nvegan\nveganism\nveganisms\nvegans\nvegetable\nvegetables\nvegetably\nvegetal\nvegetant\nvegetarian\nvegetarianism\nvegetarians\nvegetate\nvegetated\nvegetates\nvegetating\nvegetation\nvegetational\nvegetations\nvegetative\nvegetatively\nvegetativeness\nvegete\nvegetist\nvegetists\nvegetive\nvegie\nvehemence\nvehement\nvehemently\nvehicle\nvehicles\nvehicular\nveil\nveiled\nveiledly\nveiler\nveilers\nveiling\nveilings\nveillike\nveils\nvein\nveinal\nveined\nveiner\nveiners\nveinier\nveiniest\nveining\nveinings\nveinless\nveinlet\nveinlets\nveinlike\nveins\nveinule\nveinules\nveinulet\nveinulets\nveiny\nvela\nvelamen\nvelamina\nvelar\nvelaria\nvelarium\nvelarize\nvelarized\nvelarizes\nvelarizing\nvelars\nvelate\nveld\nvelds\nveldt\nveldts\nveliger\nveligers\nvelites\nvelleities\nvelleity\nvellum\nvellums\nveloce\nvelocipede\nvelocipedes\nvelocities\nvelocity\nvelour\nvelours\nveloute\nveloutes\nvelum\nvelure\nvelured\nvelures\nveluring\nvelveret\nvelverets\nvelvet\nvelveted\nvelveteen\nvelveteens\nvelvets\nvelvety\nvena\nvenae\nvenal\nvenalities\nvenality\nvenally\nvenatic\nvenation\nvenations\nvend\nvendable\nvendace\nvendaces\nvended\nvendee\nvendees\nvender\nvenders\nvendetta\nvendettas\nvendibilities\nvendibility\nvendible\nvendibles\nvendibly\nvending\nvendor\nvendors\nvends\nvendue\nvendues\nveneer\nveneered\nveneerer\nveneerers\nveneering\nveneers\nvenenate\nvenenated\nvenenates\nvenenating\nvenenose\nvenerabilities\nvenerability\nvenerable\nvenerableness\nvenerably\nvenerate\nvenerated\nvenerates\nvenerating\nveneration\nvenerations\nvenerator\nvenerators\nvenereal\nveneries\nvenery\nvenetian\nvenetians\nvenge\nvengeance\nvenged\nvengeful\nvengefully\nvengefulness\nvenges\nvenging\nvenial\nvenially\nvenialness\nvenin\nvenine\nvenines\nvenins\nvenire\nvenires\nvenison\nvenisons\nvenom\nvenomed\nvenomer\nvenomers\nvenoming\nvenomous\nvenomously\nvenomousness\nvenoms\nvenose\nvenosities\nvenosity\nvenous\nvenously\nvent\nventage\nventages\nventail\nventails\nvented\nventer\nventers\nventilate\nventilated\nventilates\nventilating\nventilation\nventilations\nventilator\nventilators\nventilatory\nventing\nventless\nventral\nventrally\nventrals\nventricle\nventricles\nventriloquial\nventriloquially\nventriloquism\nventriloquist\nventriloquistic\nventriloquists\nventriloquize\nventriloquized\nventriloquizes\nventriloquizing\nventriloquy\nvents\nventure\nventured\nventurer\nventurers\nventures\nventuresome\nventuresomely\nventuresomeness\nventuri\nventuring\nventuris\nventurous\nventurously\nventurousness\nvenue\nvenues\nvenular\nvenule\nvenules\nvenulose\nvenulous\nvera\nveracious\nveraciously\nveraciousness\nveracities\nveracity\nveranda\nverandaed\nverandah\nverandahs\nverandas\nveratria\nveratrias\nveratrin\nveratrins\nveratrum\nveratrums\nverb\nverbal\nverbalism\nverbalist\nverbalistic\nverbalists\nverbalization\nverbalizations\nverbalize\nverbalized\nverbalizer\nverbalizers\nverbalizes\nverbalizing\nverbally\nverbals\nverbatim\nverbena\nverbenas\nverbiage\nverbiages\nverbid\nverbids\nverbified\nverbifies\nverbify\nverbifying\nverbile\nverbiles\nverbless\nverbose\nverbosely\nverboseness\nverbosities\nverbosity\nverboten\nverbs\nverdancies\nverdancy\nverdant\nverdantly\nverderer\nverderers\nverderor\nverderors\nverdict\nverdicts\nverdigris\nverdin\nverdins\nverditer\nverditers\nverdure\nverdured\nverdures\nverdurous\nverecund\nverge\nverged\nvergence\nvergences\nverger\nvergers\nverges\nverging\nverglas\nverglases\nveridic\nverier\nveriest\nverifiabilities\nverifiability\nverifiable\nverification\nverifications\nverified\nverifier\nverifiers\nverifies\nverify\nverifying\nverily\nverisimilitude\nverisimilitudes\nverism\nverismo\nverismos\nverisms\nverist\nveristic\nverists\nveritable\nveritableness\nveritably\nveritas\nveritates\nverities\nverity\nverjuice\nverjuices\nvermeil\nvermeils\nvermes\nvermian\nvermicide\nvermicides\nvermicular\nvermiculite\nvermiculites\nvermilion\nvermilions\nvermin\nverminous\nvermis\nvermoulu\nvermouth\nvermouths\nvermuth\nvermuths\nvernacle\nvernacles\nvernacular\nvernacularly\nvernaculars\nvernal\nvernalization\nvernalizations\nvernalize\nvernalized\nvernalizes\nvernalizing\nvernally\nvernicle\nvernicles\nvernier\nverniers\nvernix\nvernixes\nveronica\nveronicas\nverruca\nverrucae\nversal\nversant\nversants\nversatile\nversatilely\nversatilities\nversatility\nverse\nversed\nverseman\nversemen\nverser\nversers\nverses\nverset\nversets\nversicle\nversicles\nversification\nversifications\nversified\nversifier\nversifiers\nversifies\nversify\nversifying\nversine\nversines\nversing\nversion\nversional\nversions\nverso\nversos\nverst\nverste\nverstes\nversts\nversus\nvert\nvertebra\nvertebrae\nvertebral\nvertebras\nvertebrate\nvertebrates\nvertex\nvertexes\nvertical\nverticalities\nverticality\nvertically\nverticalness\nverticals\nvertices\nverticil\nverticils\nvertigines\nvertiginous\nvertiginously\nvertigo\nvertigoes\nvertigos\nverts\nvertu\nvertus\nvervain\nvervains\nverve\nverves\nvervet\nvervets\nvery\nvesica\nvesicae\nvesical\nvesicant\nvesicants\nvesicate\nvesicated\nvesicates\nvesicating\nvesication\nvesications\nvesicle\nvesicles\nvesicula\nvesiculae\nvesicular\nvesiculate\nvesiculated\nvesiculates\nvesiculating\nvesper\nvesperal\nvesperals\nvespers\nvespertine\nvespiaries\nvespiary\nvespid\nvespids\nvespine\nvessel\nvesseled\nvessels\nvest\nvesta\nvestal\nvestally\nvestals\nvestas\nvested\nvestee\nvestees\nvestiaries\nvestiary\nvestibule\nvestibuled\nvestibules\nvestige\nvestiges\nvestigia\nvestigial\nvestigially\nvesting\nvestings\nvestless\nvestlike\nvestment\nvestments\nvestral\nvestries\nvestry\nvests\nvestural\nvesture\nvestured\nvestures\nvesturing\nvesuvian\nvesuvians\nvet\nvetch\nvetches\nveteran\nveterans\nveterinarian\nveterinarians\nveterinaries\nveterinary\nvetiver\nvetivers\nveto\nvetoed\nvetoer\nvetoers\nvetoes\nvetoing\nvets\nvetted\nvetting\nvex\nvexation\nvexations\nvexatious\nvexatiously\nvexatiousness\nvexed\nvexedly\nvexer\nvexers\nvexes\nvexil\nvexilla\nvexillar\nvexillum\nvexils\nvexing\nvexingly\nvext\nvia\nviabilities\nviability\nviable\nviably\nviaduct\nviaducts\nvial\nvialed\nvialing\nvialled\nvialling\nvials\nviand\nviands\nviatic\nviatica\nviatical\nviaticum\nviaticums\nviator\nviatores\nviators\nvibe\nvibes\nvibist\nvibists\nvibrance\nvibrances\nvibrancies\nvibrancy\nvibrant\nvibrantly\nvibrants\nvibraphone\nvibraphones\nvibraphonist\nvibraphonists\nvibrate\nvibrated\nvibrates\nvibratile\nvibrating\nvibration\nvibrational\nvibrations\nvibrato\nvibrator\nvibrators\nvibratory\nvibratos\nvibrio\nvibrioid\nvibrion\nvibrions\nvibrios\nvibrissa\nvibrissae\nviburnum\nviburnums\nvicar\nvicarage\nvicarages\nvicarate\nvicarates\nvicarial\nvicariate\nvicariates\nvicarious\nvicariously\nvicariousness\nvicarly\nvicars\nvice\nviced\nviceless\nvicenary\nviceregal\nviceroy\nviceroys\nvices\nvichies\nvichy\nvicinage\nvicinages\nvicinal\nvicing\nvicinities\nvicinity\nvicious\nviciously\nviciousness\nvicissitude\nvicissitudes\nvicomte\nvicomtes\nvictim\nvictimization\nvictimizations\nvictimize\nvictimized\nvictimizer\nvictimizers\nvictimizes\nvictimizing\nvictimless\nvictims\nvictor\nvictoria\nvictorias\nvictories\nvictorious\nvictoriously\nvictors\nvictory\nvictress\nvictresses\nvictual\nvictualed\nvictualer\nvictualers\nvictualing\nvictualled\nvictualler\nvictuallers\nvictualling\nvictuals\nvicugna\nvicugnas\nvicuna\nvicunas\nvide\nvideo\nvideocassette\nvideocassettes\nvideodisc\nvideodiscs\nvideodisk\nvideodisks\nvideos\nvideotape\nvideotaped\nvideotapes\nvideotaping\nvideotext\nvidette\nvidettes\nvidicon\nvidicons\nviduities\nviduity\nvie\nvied\nvier\nviers\nvies\nview\nviewable\nviewed\nviewer\nviewers\nviewier\nviewiest\nviewing\nviewings\nviewless\nviewlessly\nviewpoint\nviewpoints\nviews\nviewy\nvig\nviga\nvigas\nvigil\nvigilance\nvigilant\nvigilante\nvigilantes\nvigilantism\nvigilantly\nvigils\nvignette\nvignetted\nvignettes\nvignetting\nvignettist\nvignettists\nvigor\nvigorish\nvigorishes\nvigoroso\nvigorous\nvigorously\nvigorousness\nvigors\nvigour\nvigours\nvigs\nviking\nvikings\nvilayet\nvilayets\nvile\nvilely\nvileness\nvilenesses\nviler\nvilest\nvilification\nvilifications\nvilified\nvilifier\nvilifiers\nvilifies\nvilify\nvilifying\nvilipend\nvilipended\nvilipending\nvilipends\nvill\nvilla\nvilladom\nvilladoms\nvillae\nvillage\nvillager\nvillagers\nvillages\nvillain\nvillainess\nvillainesses\nvillainies\nvillainous\nvillainously\nvillainousness\nvillains\nvillainy\nvillas\nvillatic\nvillein\nvilleins\nvilli\nvillose\nvillous\nvills\nvillus\nvim\nvimen\nvimina\nviminal\nvims\nvin\nvina\nvinal\nvinals\nvinas\nvinasse\nvinasses\nvinca\nvincas\nvincible\nvincula\nvinculum\nvinculums\nvindicate\nvindicated\nvindicates\nvindicating\nvindication\nvindications\nvindicative\nvindicator\nvindicators\nvindicatory\nvindictive\nvindictively\nvindictiveness\nvine\nvineal\nvined\nvinegar\nvinegars\nvinegary\nvineries\nvinery\nvines\nvineyard\nvineyards\nvinic\nviniculture\nvinier\nviniest\nvinifera\nviniferas\nvining\nvino\nvinos\nvinosities\nvinosity\nvinous\nvinously\nvins\nvintage\nvintager\nvintagers\nvintages\nvintner\nvintners\nviny\nvinyl\nvinylic\nvinyls\nviol\nviola\nviolabilities\nviolability\nviolable\nviolably\nviolas\nviolate\nviolated\nviolater\nviolaters\nviolates\nviolating\nviolation\nviolations\nviolative\nviolator\nviolators\nviolence\nviolences\nviolent\nviolently\nviolet\nviolets\nviolin\nviolinist\nviolinists\nviolins\nviolist\nviolists\nvioloncellist\nvioloncellists\nvioloncello\nvioloncellos\nviolone\nviolones\nviols\nviomycin\nviomycins\nviper\nviperine\nviperish\nviperous\nviperously\nvipers\nvirago\nviragoes\nviragos\nviral\nvirally\nvirelai\nvirelais\nvirelay\nvirelays\nviremia\nviremias\nviremic\nvireo\nvireos\nvires\nvirga\nvirgas\nvirgate\nvirgates\nvirgin\nvirginal\nvirginalist\nvirginalists\nvirginally\nvirginals\nvirginities\nvirginity\nvirgins\nvirgule\nvirgules\nviricide\nviricides\nvirid\nviridian\nviridians\nviridities\nviridity\nvirile\nvirilism\nvirilisms\nvirilities\nvirility\nvirion\nvirions\nvirl\nvirls\nvirological\nvirologies\nvirologist\nvirologists\nvirology\nviroses\nvirosis\nvirtu\nvirtual\nvirtualities\nvirtuality\nvirtually\nvirtue\nvirtueless\nvirtues\nvirtuosa\nvirtuosas\nvirtuose\nvirtuosi\nvirtuosities\nvirtuosity\nvirtuoso\nvirtuosos\nvirtuous\nvirtuously\nvirtus\nvirucide\nvirucides\nvirulence\nvirulency\nvirulent\nvirulently\nvirus\nviruses\nvis\nvisa\nvisaed\nvisage\nvisaged\nvisages\nvisaing\nvisard\nvisards\nvisas\nviscacha\nviscachas\nviscera\nvisceral\nviscerally\nviscid\nviscidities\nviscidity\nviscidly\nviscoid\nviscose\nviscoses\nviscosities\nviscosity\nviscount\nviscountess\nviscountesses\nviscounts\nviscous\nviscously\nviscus\nvise\nvised\nviseed\nviseing\nviselike\nvises\nvisibilities\nvisibility\nvisible\nvisibly\nvising\nvision\nvisional\nvisionally\nvisionaries\nvisionary\nvisioned\nvisioning\nvisionless\nvisions\nvisit\nvisitable\nvisitant\nvisitants\nvisitation\nvisitational\nvisitations\nvisited\nvisiter\nvisiters\nvisiting\nvisitor\nvisitors\nvisits\nvisive\nvisor\nvisored\nvisoring\nvisors\nvista\nvistaed\nvistas\nvisual\nvisualization\nvisualizations\nvisualize\nvisualized\nvisualizer\nvisualizers\nvisualizes\nvisualizing\nvisually\nvita\nvitae\nvital\nvitalise\nvitalised\nvitalises\nvitalising\nvitalism\nvitalisms\nvitalist\nvitalistic\nvitalists\nvitalities\nvitality\nvitalization\nvitalizations\nvitalize\nvitalized\nvitalizes\nvitalizing\nvitally\nvitals\nvitamer\nvitamers\nvitamin\nvitamine\nvitamines\nvitamins\nvitellin\nvitellins\nvitellus\nvitelluses\nvitesse\nvitesses\nvitiable\nvitiate\nvitiated\nvitiates\nvitiating\nvitiation\nvitiations\nvitiator\nvitiators\nvitiligo\nvitiligos\nvitreous\nvitric\nvitrification\nvitrifications\nvitrified\nvitrifies\nvitrify\nvitrifying\nvitrine\nvitrines\nvitriol\nvitrioled\nvitriolic\nvitrioling\nvitriolled\nvitriolling\nvitriols\nvitta\nvittae\nvittate\nvittle\nvittled\nvittles\nvittling\nvituline\nvituperate\nvituperated\nvituperates\nvituperating\nvituperation\nvituperations\nvituperative\nvituperatively\nvituperator\nvituperators\nviva\nvivace\nvivacious\nvivaciously\nvivaciousness\nvivacities\nvivacity\nvivaria\nvivaries\nvivarium\nvivariums\nvivary\nvivas\nvive\nviverrid\nviverrids\nvivers\nvivid\nvivider\nvividest\nvividly\nvividness\nvivific\nvivification\nvivifications\nvivified\nvivifier\nvivifiers\nvivifies\nvivify\nvivifying\nvivipara\nviviparities\nviviparity\nviviparous\nviviparously\nvivisect\nvivisected\nvivisecting\nvivisection\nvivisectional\nvivisectionist\nvivisectionists\nvivisections\nvivisector\nvivisectors\nvivisects\nvixen\nvixenish\nvixenly\nvixens\nvizard\nvizarded\nvizards\nvizcacha\nvizcachas\nvizier\nviziers\nvizir\nvizirate\nvizirates\nvizirial\nvizirs\nvizor\nvizored\nvizoring\nvizors\nvizsla\nvizslas\nvocable\nvocables\nvocably\nvocabularies\nvocabulary\nvocal\nvocalic\nvocalics\nvocalise\nvocalised\nvocalises\nvocalising\nvocalism\nvocalisms\nvocalist\nvocalists\nvocalities\nvocality\nvocalization\nvocalizations\nvocalize\nvocalized\nvocalizer\nvocalizers\nvocalizes\nvocalizing\nvocally\nvocals\nvocation\nvocational\nvocationally\nvocations\nvocative\nvocatively\nvocatives\nvoces\nvociferant\nvociferate\nvociferated\nvociferates\nvociferating\nvociferation\nvociferations\nvociferous\nvociferously\nvociferousness\nvocoder\nvocoders\nvodka\nvodkas\nvodun\nvoduns\nvoe\nvoes\nvogie\nvogue\nvogues\nvoguish\nvoice\nvoiced\nvoiceful\nvoiceless\nvoicelessly\nvoicelessness\nvoiceprint\nvoiceprints\nvoicer\nvoicers\nvoices\nvoicing\nvoid\nvoidable\nvoidance\nvoidances\nvoided\nvoider\nvoiders\nvoiding\nvoidness\nvoidnesses\nvoids\nvoila\nvoile\nvoiles\nvolant\nvolante\nvolar\nvolatile\nvolatiles\nvolatilities\nvolatility\nvolatilization\nvolatilizations\nvolatilize\nvolatilized\nvolatilizes\nvolatilizing\nvolcanic\nvolcanically\nvolcanicities\nvolcanicity\nvolcanics\nvolcano\nvolcanoes\nvolcanological\nvolcanologies\nvolcanologist\nvolcanologists\nvolcanology\nvolcanos\nvole\nvoled\nvoleries\nvolery\nvoles\nvoling\nvolitant\nvolition\nvolitional\nvolitions\nvolitive\nvolley\nvolleyball\nvolleyballs\nvolleyed\nvolleyer\nvolleyers\nvolleying\nvolleys\nvolost\nvolosts\nvolplane\nvolplaned\nvolplanes\nvolplaning\nvolt\nvolta\nvoltage\nvoltages\nvoltaic\nvoltaism\nvoltaisms\nvoltameter\nvoltameters\nvolte\nvoltes\nvolti\nvoltmeter\nvoltmeters\nvolts\nvolubilities\nvolubility\nvoluble\nvolubly\nvolume\nvolumed\nvolumes\nvoluming\nvoluminous\nvoluminously\nvoluntaries\nvoluntarily\nvoluntarist\nvoluntaristic\nvoluntarists\nvoluntary\nvoluntaryism\nvoluntaryist\nvoluntaryists\nvolunteer\nvolunteered\nvolunteering\nvolunteers\nvoluptuaries\nvoluptuary\nvoluptuous\nvoluptuously\nvoluptuousness\nvolute\nvoluted\nvolutes\nvolutin\nvolutins\nvolution\nvolutions\nvolva\nvolvas\nvolvate\nvolvox\nvolvoxes\nvolvuli\nvolvulus\nvolvuluses\nvomer\nvomerine\nvomers\nvomica\nvomicae\nvomit\nvomited\nvomiter\nvomiters\nvomiting\nvomitive\nvomitives\nvomito\nvomitories\nvomitory\nvomitos\nvomitous\nvomits\nvomitus\nvomituses\nvon\nvoodoo\nvoodooed\nvoodooing\nvoodooism\nvoodooist\nvoodooistic\nvoodooists\nvoodoos\nvoracious\nvoraciously\nvoraciousness\nvoracities\nvoracity\nvorlage\nvorlages\nvortex\nvortexes\nvortical\nvortices\nvotable\nvotaress\nvotaresses\nvotaries\nvotarist\nvotarists\nvotary\nvote\nvoteable\nvoted\nvoteless\nvoter\nvoters\nvotes\nvoting\nvotive\nvotively\nvotress\nvotresses\nvouch\nvouched\nvouchee\nvouchees\nvoucher\nvouchered\nvouchering\nvouchers\nvouches\nvouching\nvouchsafe\nvouchsafed\nvouchsafes\nvouchsafing\nvoussoir\nvoussoirs\nvow\nvowed\nvowel\nvowelize\nvowelized\nvowelizes\nvowelizing\nvowels\nvower\nvowers\nvowing\nvowless\nvows\nvox\nvoyage\nvoyaged\nvoyager\nvoyagers\nvoyages\nvoyageur\nvoyageurs\nvoyaging\nvoyeur\nvoyeurism\nvoyeurs\nvroom\nvroomed\nvrooming\nvrooms\nvrouw\nvrouws\nvrow\nvrows\nvug\nvugg\nvuggs\nvuggy\nvugh\nvughs\nvugs\nvulcanic\nvulcanization\nvulcanizations\nvulcanize\nvulcanized\nvulcanizer\nvulcanizers\nvulcanizes\nvulcanizing\nvulgar\nvulgarer\nvulgarest\nvulgarian\nvulgarians\nvulgarism\nvulgarities\nvulgarity\nvulgarization\nvulgarizations\nvulgarize\nvulgarized\nvulgarizes\nvulgarizing\nvulgarly\nvulgars\nvulgate\nvulgates\nvulgo\nvulgus\nvulguses\nvulnerabilities\nvulnerability\nvulnerable\nvulnerableness\nvulnerably\nvulpine\nvulture\nvultures\nvulva\nvulvae\nvulval\nvulvar\nvulvas\nvulvate\nvulvitis\nvulvitises\nvying\nvyingly\nwab\nwabble\nwabbled\nwabbler\nwabblers\nwabbles\nwabblier\nwabbliest\nwabbling\nwabbly\nwabs\nwack\nwacke\nwackes\nwackier\nwackiest\nwackily\nwacko\nwacks\nwacky\nwad\nwadable\nwadded\nwadder\nwadders\nwaddie\nwaddied\nwaddies\nwadding\nwaddings\nwaddle\nwaddled\nwaddler\nwaddlers\nwaddles\nwaddling\nwaddly\nwaddy\nwaddying\nwade\nwadeable\nwaded\nwader\nwaders\nwades\nwadi\nwadies\nwading\nwadis\nwadmaal\nwadmaals\nwadmal\nwadmals\nwadmel\nwadmels\nwadmol\nwadmoll\nwadmolls\nwadmols\nwads\nwadset\nwadsets\nwadsetted\nwadsetting\nwady\nwae\nwaeful\nwaeness\nwaenesses\nwaes\nwaesuck\nwaesucks\nwafer\nwafered\nwafering\nwafers\nwafery\nwaff\nwaffed\nwaffie\nwaffies\nwaffing\nwaffle\nwaffled\nwaffles\nwaffling\nwaffs\nwaft\nwaftage\nwaftages\nwafted\nwafter\nwafters\nwafting\nwafts\nwafture\nwaftures\nwag\nwage\nwaged\nwageless\nwager\nwagered\nwagerer\nwagerers\nwagering\nwagers\nwages\nwagged\nwagger\nwaggeries\nwaggers\nwaggery\nwagging\nwaggish\nwaggishly\nwaggishness\nwaggle\nwaggled\nwaggles\nwaggling\nwaggly\nwaggon\nwaggoned\nwaggoner\nwaggoners\nwaggoning\nwaggons\nwaging\nwagon\nwagonage\nwagonages\nwagoned\nwagoner\nwagoners\nwagonette\nwagonettes\nwagoning\nwagons\nwags\nwagsome\nwagtail\nwagtails\nwahconda\nwahcondas\nwahine\nwahines\nwahoo\nwahoos\nwaif\nwaifed\nwaifing\nwaifs\nwail\nwailed\nwailer\nwailers\nwailful\nwailfully\nwailing\nwails\nwailsome\nwain\nwains\nwainscot\nwainscoted\nwainscoting\nwainscotings\nwainscots\nwainscotted\nwainscotting\nwainscottings\nwainwright\nwainwrights\nwair\nwaired\nwairing\nwairs\nwaist\nwaistband\nwaistbands\nwaistcoat\nwaistcoated\nwaistcoats\nwaisted\nwaister\nwaisters\nwaisting\nwaistings\nwaistline\nwaistlines\nwaists\nwait\nwaited\nwaiter\nwaiters\nwaiting\nwaitings\nwaitress\nwaitresses\nwaits\nwaive\nwaived\nwaiver\nwaivers\nwaives\nwaiving\nwakanda\nwakandas\nwake\nwaked\nwakeful\nwakefully\nwakefulness\nwakeless\nwaken\nwakened\nwakener\nwakeners\nwakening\nwakenings\nwakens\nwaker\nwakerife\nwakers\nwakes\nwakiki\nwakikis\nwaking\nwale\nwaled\nwaler\nwalers\nwales\nwalies\nwaling\nwalk\nwalkable\nwalkaway\nwalkaways\nwalked\nwalker\nwalkers\nwalking\nwalkings\nwalkout\nwalkouts\nwalkover\nwalkovers\nwalks\nwalkup\nwalkups\nwalkway\nwalkways\nwalkyrie\nwalkyries\nwall\nwalla\nwallabies\nwallaby\nwallah\nwallahs\nwallaroo\nwallaroos\nwallas\nwallboard\nwallboards\nwalled\nwallet\nwallets\nwalleye\nwalleyed\nwalleyes\nwallflower\nwallflowers\nwallie\nwallies\nwalling\nwallop\nwalloped\nwalloper\nwallopers\nwalloping\nwallops\nwallow\nwallowed\nwallower\nwallowers\nwallowing\nwallows\nwallpaper\nwallpapered\nwallpapering\nwallpapers\nwalls\nwally\nwalnut\nwalnuts\nwalrus\nwalruses\nwaltz\nwaltzed\nwaltzer\nwaltzers\nwaltzes\nwaltzing\nwaly\nwamble\nwambled\nwambles\nwamblier\nwambliest\nwambling\nwambly\nwame\nwamefou\nwamefous\nwameful\nwamefuls\nwames\nwammus\nwammuses\nwampish\nwampished\nwampishes\nwampishing\nwampum\nwampums\nwampus\nwampuses\nwamus\nwamuses\nwan\nwand\nwander\nwandered\nwanderer\nwanderers\nwandering\nwanderings\nwanderlust\nwanderoo\nwanderoos\nwanders\nwandle\nwands\nwane\nwaned\nwanes\nwaney\nwangan\nwangans\nwangle\nwangled\nwangler\nwanglers\nwangles\nwangling\nwangun\nwanguns\nwanier\nwaniest\nwanigan\nwanigans\nwaning\nwanion\nwanions\nwanly\nwanned\nwanner\nwanness\nwannesses\nwannest\nwannigan\nwannigans\nwanning\nwans\nwant\nwantage\nwantages\nwanted\nwanter\nwanters\nwanting\nwanton\nwantoned\nwantoner\nwantoners\nwantoning\nwantonly\nwantonness\nwantons\nwants\nwany\nwap\nwapiti\nwapitis\nwapped\nwapping\nwaps\nwar\nwarble\nwarbled\nwarbler\nwarblers\nwarbles\nwarbling\nwarcraft\nwarcrafts\nward\nwarded\nwarden\nwardenries\nwardenry\nwardens\nwarder\nwarders\nwarding\nwardress\nwardresses\nwardrobe\nwardrobes\nwardroom\nwardrooms\nwards\nwardship\nwardships\nware\nwared\nwarehouse\nwarehoused\nwarehouseman\nwarehousemen\nwarehouses\nwarehousing\nwareroom\nwarerooms\nwares\nwarfare\nwarfares\nwarfarin\nwarfarins\nwarhead\nwarheads\nwarier\nwariest\nwarily\nwariness\nwarinesses\nwaring\nwarison\nwarisons\nwark\nwarked\nwarking\nwarks\nwarless\nwarlike\nwarlock\nwarlocks\nwarlord\nwarlords\nwarm\nwarmaker\nwarmakers\nwarmblooded\nwarmed\nwarmer\nwarmers\nwarmest\nwarmhearted\nwarmheartedly\nwarmheartedness\nwarming\nwarmish\nwarmly\nwarmness\nwarmnesses\nwarmonger\nwarmongering\nwarmongers\nwarmouth\nwarmouths\nwarms\nwarmth\nwarmths\nwarmup\nwarmups\nwarn\nwarned\nwarner\nwarners\nwarning\nwarningly\nwarnings\nwarns\nwarp\nwarpage\nwarpages\nwarpath\nwarpaths\nwarped\nwarper\nwarpers\nwarping\nwarplane\nwarplanes\nwarpower\nwarpowers\nwarps\nwarpwise\nwarragal\nwarragals\nwarrant\nwarrantable\nwarranted\nwarranties\nwarranting\nwarrantless\nwarrantor\nwarrantors\nwarrants\nwarranty\nwarred\nwarren\nwarrener\nwarreners\nwarrens\nwarrigal\nwarrigals\nwarring\nwarrior\nwarriors\nwars\nwarsaw\nwarsaws\nwarship\nwarships\nwarsle\nwarsled\nwarsler\nwarslers\nwarsles\nwarsling\nwarstle\nwarstled\nwarstler\nwarstlers\nwarstles\nwarstling\nwart\nwarted\nwarthog\nwarthogs\nwartier\nwartiest\nwartime\nwartimes\nwartlike\nwarts\nwarty\nwarwork\nwarworks\nwarworn\nwary\nwas\nwash\nwashabilities\nwashability\nwashable\nwashboard\nwashboards\nwashbowl\nwashbowls\nwashcloth\nwashcloths\nwashday\nwashdays\nwashed\nwasher\nwashers\nwashes\nwashier\nwashiest\nwashing\nwashings\nwashout\nwashouts\nwashrag\nwashrags\nwashroom\nwashrooms\nwashstand\nwashstands\nwashtub\nwashtubs\nwashy\nwasp\nwaspier\nwaspiest\nwaspily\nwaspiness\nwaspish\nwaspishly\nwaspishness\nwasplike\nwasps\nwaspy\nwassail\nwassailed\nwassailer\nwassailers\nwassailing\nwassails\nwast\nwastable\nwastage\nwastages\nwaste\nwastebasket\nwastebaskets\nwasted\nwasteful\nwastefully\nwastefulness\nwasteland\nwastelands\nwastelot\nwastelots\nwastepaper\nwaster\nwasterie\nwasteries\nwasters\nwastery\nwastes\nwastewater\nwastewaters\nwasteway\nwasteways\nwasting\nwastrel\nwastrels\nwastrie\nwastries\nwastry\nwasts\nwat\nwatap\nwatape\nwatapes\nwataps\nwatch\nwatchband\nwatchbands\nwatchcase\nwatchcases\nwatchcries\nwatchcry\nwatchdog\nwatchdogged\nwatchdogging\nwatchdogs\nwatched\nwatcher\nwatchers\nwatches\nwatcheye\nwatcheyes\nwatchful\nwatchfully\nwatchfulness\nwatching\nwatchmaker\nwatchmakers\nwatchmaking\nwatchman\nwatchmen\nwatchout\nwatchouts\nwatchtower\nwatchtowers\nwatchword\nwatchwords\nwater\nwaterage\nwaterages\nwaterbed\nwaterbeds\nwatercolor\nwatercolorist\nwatercolorists\nwatercolors\nwatercooler\nwatercoolers\nwatercourse\nwatercourses\nwatercraft\nwatercrafts\nwaterdog\nwaterdogs\nwatered\nwaterer\nwaterers\nwaterfall\nwaterfalls\nwaterfront\nwaterfronts\nwaterier\nwateriest\nwaterily\nwateriness\nwatering\nwaterings\nwaterish\nwaterless\nwaterline\nwaterlines\nwaterlog\nwaterlogged\nwaterlogging\nwaterlogs\nwaterloo\nwaterloos\nwaterman\nwatermark\nwatermarks\nwatermen\nwaterpower\nwaterproof\nwaterproofed\nwaterproofing\nwaterproofness\nwaterproofs\nwaters\nwaterscape\nwaterscapes\nwatershed\nwatersheds\nwaterside\nwatersides\nwaterspout\nwaterspouts\nwatertight\nwatertightness\nwaterway\nwaterways\nwaterworks\nwatery\nwats\nwatt\nwattage\nwattages\nwattape\nwattapes\nwatter\nwattest\nwatthour\nwatthours\nwattle\nwattled\nwattles\nwattless\nwattling\nwattmeter\nwattmeters\nwatts\nwaucht\nwauchted\nwauchting\nwauchts\nwaugh\nwaught\nwaughted\nwaughting\nwaughts\nwauk\nwauked\nwauking\nwauks\nwaul\nwauled\nwauling\nwauls\nwaur\nwave\nwaveband\nwavebands\nwaved\nwaveform\nwaveforms\nwavelength\nwavelengths\nwaveless\nwavelet\nwavelets\nwavelike\nwaveoff\nwaveoffs\nwaver\nwavered\nwaverer\nwaverers\nwavering\nwaveringly\nwavers\nwavery\nwaves\nwavey\nwaveys\nwavier\nwavies\nwaviest\nwavily\nwaviness\nwavinesses\nwaving\nwavy\nwaw\nwawl\nwawled\nwawling\nwawls\nwaws\nwax\nwaxberries\nwaxberry\nwaxbill\nwaxbills\nwaxed\nwaxen\nwaxer\nwaxers\nwaxes\nwaxier\nwaxiest\nwaxily\nwaxiness\nwaxinesses\nwaxing\nwaxings\nwaxlike\nwaxplant\nwaxplants\nwaxweed\nwaxweeds\nwaxwing\nwaxwings\nwaxwork\nwaxworks\nwaxworm\nwaxworms\nwaxy\nway\nwaybill\nwaybills\nwayfarer\nwayfarers\nwayfaring\nwayfarings\nwaygoing\nwaygoings\nwaylaid\nwaylay\nwaylayer\nwaylayers\nwaylaying\nwaylays\nwayless\nways\nwayside\nwaysides\nwayward\nwaywardly\nwaywardness\nwayworn\nwe\nweak\nweaken\nweakened\nweakener\nweakeners\nweakening\nweakens\nweaker\nweakest\nweakfish\nweakfishes\nweakish\nweaklier\nweakliest\nweakliness\nweakling\nweaklings\nweakly\nweakness\nweaknesses\nweal\nweald\nwealds\nweals\nwealth\nwealthier\nwealthiest\nwealthily\nwealthiness\nwealths\nwealthy\nwean\nweaned\nweaner\nweaners\nweaning\nweanling\nweanlings\nweans\nweapon\nweaponed\nweaponing\nweaponless\nweaponries\nweaponry\nweapons\nwear\nwearable\nwearables\nwearer\nwearers\nwearied\nwearier\nwearies\nweariest\nweariful\nwearifully\nweariless\nwearilessly\nwearily\nweariness\nwearing\nwearingly\nwearish\nwearisome\nwearisomely\nwearisomeness\nwears\nweary\nwearying\nweasand\nweasands\nweasel\nweaseled\nweaseling\nweasels\nweason\nweasons\nweather\nweatherabilities\nweatherability\nweatherboard\nweatherboarding\nweatherboards\nweathercock\nweathercocks\nweathered\nweathering\nweatherman\nweathermen\nweatherproof\nweatherproofed\nweatherproofing\nweatherproofs\nweathers\nweave\nweaved\nweaver\nweavers\nweaves\nweaving\nweazand\nweazands\nweb\nwebbed\nwebbier\nwebbiest\nwebbing\nwebbings\nwebby\nweber\nwebers\nwebfed\nwebfeet\nwebfoot\nwebless\nweblike\nwebs\nwebster\nwebsters\nwebworm\nwebworms\nwecht\nwechts\nwed\nwedded\nwedder\nwedders\nwedding\nweddings\nwedel\nwedeled\nwedeling\nwedeln\nwedelns\nwedels\nwedge\nwedged\nwedges\nwedgie\nwedgier\nwedgies\nwedgiest\nwedging\nwedgy\nwedlock\nwedlocks\nweds\nwee\nweed\nweeded\nweeder\nweeders\nweedier\nweediest\nweedily\nweediness\nweeding\nweedless\nweedlike\nweeds\nweedy\nweek\nweekday\nweekdays\nweekend\nweekended\nweekender\nweekenders\nweekending\nweekends\nweeklies\nweeklong\nweekly\nweeknight\nweeknights\nweeks\nweel\nween\nweened\nweenie\nweenier\nweenies\nweeniest\nweening\nweens\nweensier\nweensiest\nweensy\nweeny\nweep\nweeper\nweepers\nweepier\nweepiest\nweeping\nweeps\nweepy\nweer\nwees\nweest\nweet\nweeted\nweeting\nweets\nweever\nweevers\nweevil\nweeviled\nweevilly\nweevils\nweevily\nweewee\nweeweed\nweeweeing\nweewees\nweft\nwefts\nweftwise\nweigela\nweigelas\nweigelia\nweigelias\nweigh\nweighable\nweighed\nweigher\nweighers\nweighing\nweighman\nweighmen\nweighs\nweight\nweighted\nweighter\nweighters\nweightier\nweightiest\nweightily\nweightiness\nweighting\nweightless\nweightlessly\nweightlessness\nweights\nweighty\nweiner\nweiners\nweir\nweird\nweirder\nweirdest\nweirdie\nweirdies\nweirdly\nweirdness\nweirdo\nweirdoes\nweirdos\nweirds\nweirdy\nweirs\nweka\nwekas\nwelch\nwelched\nwelcher\nwelchers\nwelches\nwelching\nwelcome\nwelcomed\nwelcomely\nwelcomeness\nwelcomer\nwelcomers\nwelcomes\nwelcoming\nweld\nweldable\nwelded\nwelder\nwelders\nwelding\nweldless\nweldment\nweldments\nweldor\nweldors\nwelds\nwelfare\nwelfares\nwelkin\nwelkins\nwell\nwelladay\nwelladays\nwellaway\nwellaways\nwellborn\nwellcurb\nwellcurbs\nwelldoer\nwelldoers\nwelled\nwellhead\nwellheads\nwellhole\nwellholes\nwelling\nwellness\nwellnesses\nwells\nwellsite\nwellsites\nwellspring\nwellsprings\nwelly\nwelsh\nwelshed\nwelsher\nwelshers\nwelshes\nwelshing\nwelt\nwelted\nwelter\nweltered\nweltering\nwelters\nwelterweight\nwelterweights\nwelting\nweltings\nwelts\nwen\nwench\nwenched\nwencher\nwenchers\nwenches\nwenching\nwend\nwended\nwendigo\nwendigos\nwending\nwends\nwennier\nwenniest\nwennish\nwenny\nwens\nwent\nwept\nwere\nweregild\nweregilds\nwerewolf\nwerewolves\nwergeld\nwergelds\nwergelt\nwergelts\nwergild\nwergilds\nwert\nwerwolf\nwerwolves\nweskit\nweskits\nwessand\nwessands\nwest\nwester\nwestered\nwestering\nwesterlies\nwesterly\nwestern\nwesternization\nwesternize\nwesternized\nwesternizes\nwesternizing\nwesterns\nwesters\nwesting\nwestings\nwestmost\nwests\nwestward\nwestwards\nwet\nwetback\nwetbacks\nwether\nwethers\nwetland\nwetlands\nwetly\nwetness\nwetnesses\nwetproof\nwets\nwettable\nwetted\nwetter\nwetters\nwettest\nwetting\nwettings\nwettish\nwha\nwhack\nwhacked\nwhacker\nwhackers\nwhackier\nwhackiest\nwhacking\nwhacks\nwhacky\nwhale\nwhalebone\nwhalebones\nwhaled\nwhaleman\nwhalemen\nwhaler\nwhalers\nwhales\nwhaling\nwhalings\nwham\nwhammed\nwhammies\nwhamming\nwhammy\nwhamo\nwhams\nwhang\nwhanged\nwhangee\nwhangees\nwhanging\nwhangs\nwhap\nwhapped\nwhapper\nwhappers\nwhapping\nwhaps\nwharf\nwharfage\nwharfages\nwharfed\nwharfing\nwharfs\nwharve\nwharves\nwhat\nwhatever\nwhatnot\nwhatnots\nwhats\nwhatsoever\nwhaup\nwhaups\nwheal\nwheals\nwheat\nwheatear\nwheatears\nwheaten\nwheats\nwhee\nwheedle\nwheedled\nwheedler\nwheedlers\nwheedles\nwheedling\nwheel\nwheelbarrow\nwheelbarrows\nwheelbase\nwheelchair\nwheelchairs\nwheeled\nwheeler\nwheelers\nwheelhouse\nwheelhouses\nwheelie\nwheelies\nwheeling\nwheelings\nwheelless\nwheelman\nwheelmen\nwheels\nwheelwright\nwheelwrights\nwheen\nwheens\nwheep\nwheeped\nwheeping\nwheeple\nwheepled\nwheeples\nwheepling\nwheeps\nwheeze\nwheezed\nwheezer\nwheezers\nwheezes\nwheezier\nwheeziest\nwheezily\nwheezing\nwheezy\nwhelk\nwhelkier\nwhelkiest\nwhelks\nwhelky\nwhelm\nwhelmed\nwhelming\nwhelms\nwhelp\nwhelped\nwhelping\nwhelps\nwhen\nwhenas\nwhence\nwhencesoever\nwhenever\nwhens\nwhensoever\nwhere\nwhereabouts\nwhereas\nwhereases\nwhereat\nwhereby\nwherefore\nwherein\nwhereof\nwhereon\nwheres\nwhereto\nwhereupon\nwherever\nwherewith\nwherewithal\nwherried\nwherries\nwherry\nwherrying\nwherve\nwherves\nwhet\nwhether\nwhets\nwhetstone\nwhetstones\nwhetted\nwhetter\nwhetters\nwhetting\nwhew\nwhews\nwhey\nwheyey\nwheyface\nwheyfaced\nwheyfaces\nwheyish\nwheys\nwhich\nwhichever\nwhichsoever\nwhicker\nwhickered\nwhickering\nwhickers\nwhid\nwhidah\nwhidahs\nwhidded\nwhidding\nwhids\nwhiff\nwhiffed\nwhiffer\nwhiffers\nwhiffet\nwhiffets\nwhiffing\nwhiffle\nwhiffled\nwhiffler\nwhifflers\nwhiffles\nwhiffling\nwhiffs\nwhig\nwhigs\nwhile\nwhiled\nwhiles\nwhiling\nwhilom\nwhilst\nwhim\nwhimbrel\nwhimbrels\nwhimper\nwhimpered\nwhimpering\nwhimpers\nwhims\nwhimsey\nwhimseys\nwhimsical\nwhimsicalities\nwhimsicality\nwhimsically\nwhimsicalness\nwhimsied\nwhimsies\nwhimsy\nwhin\nwhinchat\nwhinchats\nwhine\nwhined\nwhiner\nwhiners\nwhines\nwhiney\nwhinier\nwhiniest\nwhining\nwhiningly\nwhinnied\nwhinnier\nwhinnies\nwhinniest\nwhinny\nwhinnying\nwhins\nwhiny\nwhip\nwhipcord\nwhipcords\nwhiplash\nwhiplashes\nwhiplike\nwhipped\nwhipper\nwhippers\nwhippersnapper\nwhippersnappers\nwhippet\nwhippets\nwhippier\nwhippiest\nwhipping\nwhippings\nwhippy\nwhipray\nwhiprays\nwhips\nwhipsaw\nwhipsawed\nwhipsawing\nwhipsawn\nwhipsaws\nwhipstock\nwhipstocks\nwhipt\nwhiptail\nwhiptails\nwhipworm\nwhipworms\nwhir\nwhirl\nwhirled\nwhirler\nwhirlers\nwhirlier\nwhirlies\nwhirliest\nwhirligig\nwhirligigs\nwhirling\nwhirlpool\nwhirlpools\nwhirls\nwhirlwind\nwhirlwinds\nwhirly\nwhirr\nwhirred\nwhirried\nwhirries\nwhirring\nwhirrs\nwhirry\nwhirrying\nwhirs\nwhish\nwhished\nwhishes\nwhishing\nwhisht\nwhishted\nwhishting\nwhishts\nwhisk\nwhiskbroom\nwhiskbrooms\nwhisked\nwhisker\nwhiskered\nwhiskers\nwhiskery\nwhiskey\nwhiskeys\nwhiskies\nwhisking\nwhisks\nwhisky\nwhisper\nwhispered\nwhispering\nwhisperingly\nwhisperings\nwhispers\nwhispery\nwhist\nwhisted\nwhisting\nwhistle\nwhistled\nwhistler\nwhistlers\nwhistles\nwhistling\nwhistlings\nwhists\nwhit\nwhite\nwhitecap\nwhitecaps\nwhited\nwhitefish\nwhiteflies\nwhitefly\nwhitely\nwhiten\nwhitened\nwhitener\nwhiteners\nwhiteness\nwhitening\nwhitenings\nwhitens\nwhiteout\nwhiteouts\nwhiter\nwhites\nwhitest\nwhitewall\nwhitewalls\nwhitewash\nwhitewashed\nwhitewashes\nwhitewashing\nwhitey\nwhiteys\nwhither\nwhities\nwhiting\nwhitings\nwhitish\nwhitlow\nwhitlows\nwhitrack\nwhitracks\nwhits\nwhitter\nwhitters\nwhittle\nwhittled\nwhittler\nwhittlers\nwhittles\nwhittling\nwhittlings\nwhittret\nwhittrets\nwhity\nwhiz\nwhizbang\nwhizbangs\nwhizz\nwhizzed\nwhizzer\nwhizzers\nwhizzes\nwhizzing\nwho\nwhoa\nwhodunit\nwhodunits\nwhoever\nwhole\nwholehearted\nwholeheartedly\nwholeness\nwholes\nwholesale\nwholesaled\nwholesaler\nwholesalers\nwholesales\nwholesaling\nwholesome\nwholesomely\nwholesomeness\nwholism\nwholisms\nwholly\nwhom\nwhomever\nwhomp\nwhomped\nwhomping\nwhomps\nwhomso\nwhomsoever\nwhoof\nwhoop\nwhooped\nwhoopee\nwhoopees\nwhooper\nwhoopers\nwhooping\nwhoopla\nwhooplas\nwhoops\nwhoosh\nwhooshed\nwhooshes\nwhooshing\nwhoosis\nwhoosises\nwhop\nwhopped\nwhopper\nwhoppers\nwhopping\nwhops\nwhore\nwhored\nwhoredom\nwhoredoms\nwhores\nwhoreson\nwhoresons\nwhoring\nwhorish\nwhorl\nwhorled\nwhorls\nwhort\nwhortle\nwhortles\nwhorts\nwhose\nwhosever\nwhosis\nwhosises\nwhoso\nwhosoever\nwhump\nwhumped\nwhumping\nwhumps\nwhy\nwhydah\nwhydahs\nwhys\nwich\nwiches\nwick\nwickape\nwickapes\nwicked\nwickeder\nwickedest\nwickedly\nwickedness\nwicker\nwickers\nwickerwork\nwickerworks\nwicket\nwickets\nwicking\nwickings\nwickiup\nwickiups\nwicks\nwickyup\nwickyups\nwicopies\nwicopy\nwidder\nwidders\nwiddie\nwiddies\nwiddle\nwiddled\nwiddles\nwiddling\nwiddy\nwide\nwidely\nwiden\nwidened\nwidener\nwideners\nwideness\nwidenesses\nwidening\nwidens\nwider\nwides\nwidespread\nwidespreading\nwidest\nwidgeon\nwidgeons\nwidget\nwidgets\nwidish\nwidow\nwidowed\nwidower\nwidowerhood\nwidowers\nwidowhood\nwidowing\nwidows\nwidth\nwidths\nwidthway\nwield\nwielded\nwielder\nwielders\nwieldier\nwieldiest\nwielding\nwields\nwieldy\nwiener\nwieners\nwienie\nwienies\nwife\nwifed\nwifedom\nwifedoms\nwifehood\nwifehoods\nwifeless\nwifelier\nwifeliest\nwifelike\nwifeliness\nwifely\nwifes\nwifing\nwig\nwigan\nwigans\nwigeon\nwigeons\nwigged\nwiggeries\nwiggery\nwigging\nwiggings\nwiggle\nwiggled\nwiggler\nwigglers\nwiggles\nwigglier\nwiggliest\nwiggling\nwiggly\nwiggy\nwight\nwights\nwigless\nwiglet\nwiglets\nwiglike\nwigmaker\nwigmakers\nwigs\nwigwag\nwigwagged\nwigwagging\nwigwags\nwigwam\nwigwams\nwikiup\nwikiups\nwilco\nwild\nwildcat\nwildcats\nwildcatted\nwildcatter\nwildcatters\nwildcatting\nwilder\nwildered\nwildering\nwilderness\nwildernesses\nwilders\nwildest\nwildfire\nwildfires\nwildflower\nwildflowers\nwildfowl\nwildfowls\nwilding\nwildings\nwildish\nwildlife\nwildling\nwildlings\nwildly\nwildness\nwildnesses\nwilds\nwildwood\nwildwoods\nwile\nwiled\nwiles\nwilful\nwilfully\nwilfulness\nwilier\nwiliest\nwilily\nwiliness\nwilinesses\nwiling\nwill\nwillable\nwilled\nwiller\nwillers\nwillet\nwillets\nwillful\nwillfully\nwillfulness\nwillied\nwillies\nwilling\nwillinger\nwillingest\nwillingly\nwillingness\nwilliwau\nwilliwaus\nwilliwaw\nwilliwaws\nwillow\nwillowed\nwillower\nwillowers\nwillowier\nwillowiest\nwillowing\nwillowlike\nwillows\nwillowy\nwillpower\nwills\nwilly\nwillyard\nwillyart\nwillying\nwillywaw\nwillywaws\nwilt\nwilted\nwilting\nwilts\nwily\nwimble\nwimbled\nwimbles\nwimbling\nwimp\nwimple\nwimpled\nwimples\nwimpling\nwimps\nwimpy\nwin\nwince\nwinced\nwincer\nwincers\nwinces\nwincey\nwinceys\nwinch\nwinched\nwincher\nwinchers\nwinches\nwinching\nwincing\nwind\nwindable\nwindage\nwindages\nwindbag\nwindbags\nwindblown\nwindbreak\nwindbreaker\nwindbreakers\nwindbreaks\nwindburn\nwindburned\nwindburning\nwindburns\nwindburnt\nwindchill\nwinded\nwinder\nwinders\nwindfall\nwindfalls\nwindflaw\nwindflaws\nwindgall\nwindgalls\nwindier\nwindiest\nwindigo\nwindigos\nwindily\nwindiness\nwinding\nwindings\nwindjammer\nwindjammers\nwindlass\nwindlassed\nwindlasses\nwindlassing\nwindle\nwindled\nwindles\nwindless\nwindlessly\nwindling\nwindlings\nwindmill\nwindmilled\nwindmilling\nwindmills\nwindow\nwindowed\nwindowing\nwindowless\nwindowpane\nwindowpanes\nwindows\nwindowsill\nwindpipe\nwindpipes\nwindrow\nwindrowed\nwindrowing\nwindrows\nwinds\nwindshield\nwindshields\nwindsock\nwindsocks\nwindstorm\nwindstorms\nwindswept\nwindup\nwindups\nwindward\nwindwards\nwindway\nwindways\nwindy\nwine\nwined\nwineglass\nwineglasses\nwinegrower\nwinegrowers\nwineless\nwineries\nwinery\nwines\nwineshop\nwineshops\nwineskin\nwineskins\nwinesop\nwinesops\nwiney\nwing\nwingback\nwingbacks\nwingbow\nwingbows\nwingding\nwingdings\nwinged\nwingedly\nwinger\nwingers\nwingier\nwingiest\nwinging\nwingless\nwinglessness\nwinglet\nwinglets\nwinglike\nwingman\nwingmen\nwingover\nwingovers\nwings\nwingspan\nwingspans\nwingspread\nwingspreads\nwingy\nwinier\nwiniest\nwining\nwinish\nwink\nwinked\nwinker\nwinkers\nwinking\nwinkle\nwinkled\nwinkles\nwinkling\nwinks\nwinnable\nwinned\nwinner\nwinners\nwinning\nwinningly\nwinnings\nwinnock\nwinnocks\nwinnow\nwinnowed\nwinnower\nwinnowers\nwinnowing\nwinnows\nwino\nwinoes\nwinos\nwins\nwinsome\nwinsomely\nwinsomeness\nwinsomer\nwinsomest\nwinter\nwintered\nwinterer\nwinterers\nwintergreen\nwintergreens\nwinterier\nwinteriest\nwintering\nwinterization\nwinterizations\nwinterize\nwinterized\nwinterizes\nwinterizing\nwinterly\nwinters\nwintertime\nwintertimes\nwintery\nwintle\nwintled\nwintles\nwintling\nwintrier\nwintriest\nwintrily\nwintry\nwiny\nwinze\nwinzes\nwipe\nwiped\nwipeout\nwipeouts\nwiper\nwipers\nwipes\nwiping\nwirable\nwire\nwired\nwiredraw\nwiredrawer\nwiredrawers\nwiredrawing\nwiredrawn\nwiredraws\nwiredrew\nwirehair\nwirehaired\nwirehairs\nwireless\nwirelessed\nwirelesses\nwirelessing\nwirelike\nwireman\nwiremen\nwirepuller\nwirepullers\nwirer\nwirers\nwires\nwiretap\nwiretapped\nwiretapper\nwiretappers\nwiretapping\nwiretaps\nwireway\nwireways\nwirework\nwireworker\nwireworkers\nwireworks\nwireworm\nwireworms\nwirier\nwiriest\nwirily\nwiriness\nwirinesses\nwiring\nwirings\nwirra\nwiry\nwis\nwisdom\nwisdoms\nwise\nwiseacre\nwiseacres\nwisecrack\nwisecracked\nwisecracker\nwisecrackers\nwisecracking\nwisecracks\nwised\nwiselier\nwiseliest\nwisely\nwiseness\nwisenesses\nwisent\nwisents\nwiser\nwises\nwisest\nwish\nwisha\nwishbone\nwishbones\nwished\nwisher\nwishers\nwishes\nwishful\nwishfully\nwishfulness\nwishing\nwishless\nwising\nwisp\nwisped\nwispier\nwispiest\nwispily\nwispiness\nwisping\nwispish\nwisplike\nwisps\nwispy\nwiss\nwissed\nwisses\nwissing\nwist\nwistaria\nwistarias\nwisted\nwisteria\nwisterias\nwistful\nwistfully\nwistfulness\nwisting\nwists\nwit\nwitan\nwitch\nwitchcraft\nwitchcrafts\nwitched\nwitcheries\nwitchery\nwitches\nwitchier\nwitchiest\nwitching\nwitchings\nwitchy\nwite\nwited\nwites\nwith\nwithal\nwithdraw\nwithdrawable\nwithdrawal\nwithdrawals\nwithdrawing\nwithdrawn\nwithdrawnness\nwithdraws\nwithdrew\nwithe\nwithed\nwither\nwithered\nwitherer\nwitherers\nwithering\nwitheringly\nwithers\nwithes\nwithheld\nwithhold\nwithholder\nwithholders\nwithholding\nwithholds\nwithier\nwithies\nwithiest\nwithin\nwithing\nwithins\nwithout\nwithouts\nwithstand\nwithstanding\nwithstands\nwithstood\nwithy\nwiting\nwitless\nwitlessly\nwitlessness\nwitling\nwitlings\nwitloof\nwitloofs\nwitness\nwitnessed\nwitnesses\nwitnessing\nwitney\nwitneys\nwits\nwitted\nwitticism\nwitticisms\nwittier\nwittiest\nwittily\nwittiness\nwitting\nwittingly\nwittings\nwittol\nwittols\nwitty\nwive\nwived\nwiver\nwivern\nwiverns\nwivers\nwives\nwiving\nwiz\nwizard\nwizardly\nwizardries\nwizardry\nwizards\nwizen\nwizened\nwizening\nwizens\nwizes\nwizzen\nwizzens\nwo\nwoad\nwoaded\nwoads\nwoadwax\nwoadwaxes\nwoald\nwoalds\nwobble\nwobbled\nwobbler\nwobblers\nwobbles\nwobblier\nwobblies\nwobbliest\nwobbling\nwobbly\nwobegone\nwodge\nwoe\nwoebegone\nwoebegoneness\nwoeful\nwoefuller\nwoefullest\nwoefully\nwoefulness\nwoeness\nwoenesses\nwoes\nwoesome\nwoful\nwofully\nwog\nwogs\nwok\nwoke\nwoken\nwoks\nwold\nwolds\nwolf\nwolfed\nwolfer\nwolfers\nwolffish\nwolffishes\nwolfhound\nwolfhounds\nwolfing\nwolfish\nwolfishly\nwolfishness\nwolflike\nwolfram\nwolframs\nwolfs\nwolver\nwolverine\nwolverines\nwolvers\nwolves\nwoman\nwomaned\nwomanhood\nwomaning\nwomanise\nwomanised\nwomanises\nwomanish\nwomanishly\nwomanishness\nwomanising\nwomanize\nwomanized\nwomanizer\nwomanizers\nwomanizes\nwomanizing\nwomankind\nwomanlier\nwomanliest\nwomanlike\nwomanliness\nwomanly\nwomans\nwomb\nwombat\nwombats\nwombed\nwombier\nwombiest\nwombs\nwomby\nwomen\nwomenfolk\nwomenfolks\nwomera\nwomeras\nwommera\nwommeras\nwon\nwonder\nwondered\nwonderer\nwonderers\nwonderful\nwonderfully\nwonderfulness\nwondering\nwonderland\nwonderlands\nwonderment\nwonderments\nwonders\nwonderwork\nwonderworker\nwonderworkers\nwonderworking\nwonderworks\nwondrous\nwondrously\nwondrousness\nwonk\nwonkier\nwonkiest\nwonks\nwonky\nwonned\nwonner\nwonners\nwonning\nwons\nwont\nwonted\nwontedly\nwontedness\nwonting\nwonton\nwontons\nwonts\nwoo\nwood\nwoodbin\nwoodbind\nwoodbinds\nwoodbine\nwoodbines\nwoodbins\nwoodbox\nwoodboxes\nwoodcarving\nwoodcarvings\nwoodchat\nwoodchats\nwoodchopper\nwoodchoppers\nwoodchuck\nwoodchucks\nwoodcock\nwoodcocks\nwoodcraft\nwoodcut\nwoodcuts\nwoodcutter\nwoodcutters\nwoodcutting\nwoodcuttings\nwooded\nwooden\nwoodener\nwoodenest\nwoodenly\nwoodenness\nwoodhen\nwoodhens\nwoodier\nwoodiest\nwoodiness\nwooding\nwoodland\nwoodlands\nwoodlark\nwoodlarks\nwoodless\nwoodlore\nwoodlores\nwoodlot\nwoodlots\nwoodman\nwoodmen\nwoodnote\nwoodnotes\nwoodpecker\nwoodpeckers\nwoodpile\nwoodpiles\nwoodruff\nwoodruffs\nwoods\nwoodshed\nwoodshedded\nwoodshedding\nwoodsheds\nwoodsia\nwoodsias\nwoodsier\nwoodsiest\nwoodsman\nwoodsmen\nwoodsy\nwoodwax\nwoodwaxes\nwoodwind\nwoodwinds\nwoodwork\nwoodworker\nwoodworkers\nwoodworking\nwoodworks\nwoodworm\nwoodworms\nwoody\nwooed\nwooer\nwooers\nwoof\nwoofed\nwoofer\nwoofers\nwoofing\nwoofs\nwooing\nwooingly\nwool\nwooled\nwoolen\nwoolens\nwooler\nwoolers\nwoolfell\nwoolfells\nwoolgatherer\nwoolgatherers\nwoolgathering\nwoolgatherings\nwoolie\nwoolier\nwoolies\nwooliest\nwoollen\nwoollens\nwoollier\nwoollies\nwoolliest\nwoollike\nwoolliness\nwoolly\nwoolman\nwoolmen\nwoolpack\nwoolpacks\nwools\nwoolsack\nwoolsacks\nwoolshed\nwoolsheds\nwoolskin\nwoolskins\nwooly\nwoomera\nwoomeras\nwoops\nwoorali\nwooralis\nwoorari\nwooraris\nwoos\nwoosh\nwooshed\nwooshes\nwooshing\nwoozier\nwooziest\nwoozily\nwoozy\nwop\nwops\nword\nwordage\nwordages\nwordbook\nwordbooks\nworded\nwordier\nwordiest\nwordily\nwordiness\nwording\nwordings\nwordless\nwordlessly\nwordlessness\nwordplay\nwordplays\nwords\nwordy\nwore\nwork\nworkabilities\nworkability\nworkable\nworkableness\nworkaday\nworkbag\nworkbags\nworkbasket\nworkbaskets\nworkbench\nworkbenches\nworkboat\nworkboats\nworkbook\nworkbooks\nworkbox\nworkboxes\nworkday\nworkdays\nworked\nworker\nworkers\nworkfolk\nworkhorse\nworkhorses\nworkhouse\nworkhouses\nworking\nworkingman\nworkingmen\nworkings\nworkless\nworklessness\nworkload\nworkloads\nworkman\nworkmanlike\nworkmanly\nworkmanship\nworkmen\nworkout\nworkouts\nworkplace\nworkplaces\nworkroom\nworkrooms\nworks\nworkshop\nworkshops\nworkstation\nworkstations\nworktable\nworktables\nworkup\nworkups\nworkweek\nworkweeks\nworld\nworldlier\nworldliest\nworldliness\nworldling\nworldlings\nworldly\nworlds\nworldwide\nworm\nwormed\nwormer\nwormers\nwormhole\nwormholes\nwormier\nwormiest\nwormil\nwormils\nworming\nwormish\nwormlike\nwormroot\nwormroots\nworms\nwormseed\nwormseeds\nwormwood\nwormwoods\nwormy\nworn\nwornness\nwornnesses\nworried\nworrier\nworriers\nworries\nworriment\nworriments\nworrisome\nworrisomely\nworrit\nworrited\nworriting\nworrits\nworry\nworrying\nworrywart\nworrywarts\nworse\nworsen\nworsened\nworsening\nworsens\nworser\nworses\nworset\nworsets\nworship\nworshiped\nworshiper\nworshipers\nworshipful\nworshipfully\nworshipfulness\nworshiping\nworshipped\nworshipper\nworshippers\nworshipping\nworships\nworst\nworsted\nworsteds\nworsting\nworsts\nwort\nworth\nworthed\nworthful\nworthier\nworthies\nworthiest\nworthily\nworthiness\nworthing\nworthless\nworthlessly\nworthlessness\nworths\nworthwhile\nworthy\nworts\nwos\nwost\nwot\nwots\nwotted\nwotting\nwould\nwouldest\nwouldst\nwound\nwounded\nwounding\nwoundless\nwounds\nwove\nwoven\nwow\nwowed\nwowing\nwows\nwowser\nwowsers\nwrack\nwracked\nwrackful\nwracking\nwracks\nwraith\nwraithlike\nwraiths\nwrang\nwrangle\nwrangled\nwrangler\nwranglers\nwrangles\nwrangling\nwrangs\nwrap\nwraparound\nwraparounds\nwrapped\nwrapper\nwrappers\nwrapping\nwrappings\nwraps\nwrapt\nwrasse\nwrasses\nwrastle\nwrastled\nwrastles\nwrastling\nwrath\nwrathed\nwrathful\nwrathfully\nwrathfulness\nwrathier\nwrathiest\nwrathily\nwrathing\nwraths\nwrathy\nwreak\nwreaked\nwreaker\nwreakers\nwreaking\nwreaks\nwreath\nwreathe\nwreathed\nwreathen\nwreathes\nwreathing\nwreaths\nwreathy\nwreck\nwreckage\nwreckages\nwrecked\nwrecker\nwreckers\nwreckful\nwrecking\nwreckings\nwrecks\nwren\nwrench\nwrenched\nwrenches\nwrenching\nwrens\nwrest\nwrested\nwrester\nwresters\nwresting\nwrestle\nwrestled\nwrestler\nwrestlers\nwrestles\nwrestling\nwrests\nwretch\nwretched\nwretcheder\nwretchedest\nwretchedly\nwretchedness\nwretches\nwrick\nwried\nwrier\nwries\nwriest\nwriggle\nwriggled\nwriggler\nwrigglers\nwriggles\nwrigglier\nwriggliest\nwriggling\nwriggly\nwright\nwrights\nwring\nwringed\nwringer\nwringers\nwringing\nwrings\nwrinkle\nwrinkled\nwrinkles\nwrinklier\nwrinkliest\nwrinkling\nwrinkly\nwrist\nwristband\nwristbands\nwristier\nwristiest\nwristlet\nwristlets\nwrists\nwristwatch\nwristwatches\nwristy\nwrit\nwritable\nwrite\nwriter\nwriters\nwrites\nwrithe\nwrithed\nwrithen\nwrither\nwrithers\nwrithes\nwrithing\nwriting\nwritings\nwrits\nwritten\nwrong\nwrongdoer\nwrongdoers\nwrongdoing\nwrongdoings\nwronged\nwronger\nwrongers\nwrongest\nwrongful\nwrongfully\nwrongfulness\nwronging\nwrongly\nwrongness\nwrongs\nwrote\nwroth\nwrothful\nwrought\nwrung\nwry\nwryer\nwryest\nwrying\nwryly\nwryneck\nwrynecks\nwryness\nwrynesses\nwud\nwurst\nwursts\nwurzel\nwurzels\nwych\nwyches\nwye\nwyes\nwyle\nwyled\nwyles\nwyling\nwyn\nwynd\nwynds\nwynn\nwynns\nwyns\nwyte\nwyted\nwytes\nwyting\nwyvern\nwyverns\nxanthate\nxanthates\nxanthein\nxantheins\nxanthene\nxanthenes\nxanthic\nxanthin\nxanthine\nxanthines\nxanthins\nxanthoma\nxanthomas\nxanthomata\nxanthone\nxanthones\nxanthous\nxebec\nxebecs\nxenia\nxenial\nxenias\nxenic\nxenogamies\nxenogamy\nxenogenies\nxenogeny\nxenolith\nxenolithic\nxenoliths\nxenon\nxenons\nxenophobe\nxenophobes\nxenophobia\nxenophobic\nxerarch\nxeric\nxerographic\nxerographically\nxerographies\nxerography\nxerophyte\nxerophytes\nxerophytic\nxerosere\nxeroseres\nxeroses\nxerosis\nxerotic\nxerus\nxeruses\nxi\nxiphoid\nxiphoids\nxis\nxu\nxylan\nxylans\nxylem\nxylems\nxylene\nxylenes\nxylidin\nxylidine\nxylidines\nxylidins\nxylocarp\nxylocarps\nxyloid\nxylol\nxylols\nxylophone\nxylophones\nxylophonist\nxylophonists\nxylose\nxyloses\nxylotomies\nxylotomy\nxylyl\nxylyls\nxyst\nxyster\nxysters\nxysti\nxystoi\nxystos\nxysts\nxystus\nya\nyabber\nyabbered\nyabbering\nyabbers\nyacht\nyachted\nyachter\nyachters\nyachting\nyachtings\nyachtman\nyachtmen\nyachts\nyack\nyacked\nyacking\nyacks\nyaff\nyaffed\nyaffing\nyaffs\nyager\nyagers\nyagi\nyagis\nyah\nyahoo\nyahooism\nyahooisms\nyahoos\nyaird\nyairds\nyak\nyakked\nyakking\nyaks\nyald\nyam\nyamen\nyamens\nyammer\nyammered\nyammerer\nyammerers\nyammering\nyammers\nyams\nyamun\nyamuns\nyang\nyangs\nyank\nyanked\nyanking\nyanks\nyanqui\nyanquis\nyap\nyapock\nyapocks\nyapok\nyapoks\nyapon\nyapons\nyapped\nyapper\nyappers\nyapping\nyaps\nyar\nyard\nyardage\nyardages\nyardarm\nyardarms\nyardbird\nyardbirds\nyarded\nyarding\nyardman\nyardmaster\nyardmasters\nyardmen\nyards\nyardstick\nyardsticks\nyardwand\nyardwands\nyare\nyarely\nyarer\nyarest\nyarmelke\nyarmelkes\nyarmulke\nyarmulkes\nyarn\nyarned\nyarning\nyarns\nyarrow\nyarrows\nyashmac\nyashmacs\nyashmak\nyashmaks\nyasmak\nyasmaks\nyatagan\nyatagans\nyataghan\nyataghans\nyaud\nyauds\nyauld\nyaup\nyauped\nyauper\nyaupers\nyauping\nyaupon\nyaupons\nyaups\nyaw\nyawed\nyawing\nyawl\nyawled\nyawling\nyawls\nyawmeter\nyawmeters\nyawn\nyawned\nyawner\nyawners\nyawning\nyawns\nyawp\nyawped\nyawper\nyawpers\nyawping\nyawpings\nyawps\nyaws\nyay\nyays\nycleped\nyclept\nye\nyea\nyeah\nyealing\nyealings\nyean\nyeaned\nyeaning\nyeanling\nyeanlings\nyeans\nyear\nyearbook\nyearbooks\nyearlies\nyearling\nyearlings\nyearlong\nyearly\nyearn\nyearned\nyearner\nyearners\nyearning\nyearningly\nyearnings\nyearns\nyears\nyeas\nyeast\nyeasted\nyeastier\nyeastiest\nyeastily\nyeastiness\nyeasting\nyeasts\nyeasty\nyecch\nyech\nyechs\nyechy\nyeelin\nyeelins\nyegg\nyeggman\nyeggmen\nyeggs\nyeh\nyeld\nyelk\nyelks\nyell\nyelled\nyeller\nyellers\nyelling\nyellow\nyellowed\nyellower\nyellowest\nyellowing\nyellowish\nyellowly\nyellowness\nyellows\nyellowy\nyells\nyelp\nyelped\nyelper\nyelpers\nyelping\nyelps\nyen\nyenned\nyenning\nyens\nyenta\nyentas\nyente\nyeoman\nyeomanly\nyeomanries\nyeomanry\nyeomen\nyep\nyerba\nyerbas\nyerk\nyerked\nyerking\nyerks\nyes\nyeses\nyeshiva\nyeshivah\nyeshivahs\nyeshivas\nyeshivoth\nyessed\nyesses\nyessing\nyester\nyesterday\nyesterdays\nyestern\nyesteryear\nyesteryears\nyestreen\nyestreens\nyet\nyeti\nyetis\nyett\nyetts\nyeuk\nyeuked\nyeuking\nyeuks\nyeuky\nyew\nyews\nyid\nyids\nyield\nyielded\nyielder\nyielders\nyielding\nyields\nyikes\nyill\nyills\nyin\nyince\nyins\nyip\nyipe\nyipes\nyipped\nyippee\nyippie\nyippies\nyipping\nyips\nyird\nyirds\nyirr\nyirred\nyirring\nyirrs\nyirth\nyirths\nylem\nylems\nyob\nyobbo\nyobs\nyock\nyocks\nyod\nyodel\nyodeled\nyodeler\nyodelers\nyodeling\nyodelled\nyodeller\nyodellers\nyodelling\nyodels\nyodh\nyodhs\nyodle\nyodled\nyodler\nyodlers\nyodles\nyodling\nyods\nyoga\nyogas\nyogee\nyogees\nyogh\nyoghourt\nyoghourts\nyoghs\nyoghurt\nyoghurts\nyogi\nyogic\nyogin\nyogini\nyoginis\nyogins\nyogis\nyogurt\nyogurts\nyoicks\nyok\nyoke\nyoked\nyokel\nyokeless\nyokelish\nyokels\nyokemate\nyokemates\nyokes\nyoking\nyoks\nyolk\nyolked\nyolkier\nyolkiest\nyolks\nyolky\nyom\nyomim\nyon\nyond\nyonder\nyoni\nyonic\nyonis\nyonker\nyonkers\nyore\nyores\nyou\nyoung\nyounger\nyoungers\nyoungest\nyoungish\nyoungs\nyoungster\nyoungsters\nyounker\nyounkers\nyoupon\nyoupons\nyour\nyourn\nyours\nyourself\nyourselves\nyouse\nyouth\nyouthen\nyouthened\nyouthening\nyouthens\nyouthful\nyouthfully\nyouthfulness\nyouths\nyow\nyowe\nyowed\nyowes\nyowie\nyowies\nyowing\nyowl\nyowled\nyowler\nyowlers\nyowling\nyowls\nyows\nyperite\nyperites\nytterbia\nytterbias\nytterbic\nyttria\nyttrias\nyttric\nyttrium\nyttriums\nyuan\nyuans\nyucca\nyuccas\nyucch\nyuch\nyuck\nyucks\nyucky\nyuga\nyugas\nyuk\nyukked\nyukking\nyuks\nyulan\nyulans\nyule\nyules\nyuletide\nyuletides\nyum\nyummier\nyummies\nyummiest\nyummy\nyup\nyupon\nyupons\nyurt\nyurta\nyurts\nywis\nzabaione\nzabaiones\nzabajone\nzabajones\nzacaton\nzacatons\nzaddik\nzaddikim\nzaffar\nzaffars\nzaffer\nzaffers\nzaffir\nzaffirs\nzaffre\nzaffres\nzaftig\nzag\nzagged\nzagging\nzags\nzaibatsu\nzaire\nzaires\nzamarra\nzamarras\nzamarro\nzamarros\nzamia\nzamias\nzamindar\nzamindars\nzanana\nzananas\nzander\nzanders\nzanier\nzanies\nzaniest\nzanily\nzaniness\nzaninesses\nzany\nzanyish\nzanza\nzanzas\nzap\nzapateo\nzapateos\nzapped\nzapping\nzappy\nzaps\nzaptiah\nzaptiahs\nzaptieh\nzaptiehs\nzaratite\nzaratites\nzareba\nzarebas\nzareeba\nzareebas\nzarf\nzarfs\nzariba\nzaribas\nzarzuela\nzarzuelas\nzastruga\nzastrugi\nzax\nzaxes\nzayin\nzayins\nzazen\nzeal\nzealot\nzealotries\nzealotry\nzealots\nzealous\nzealously\nzealousness\nzeals\nzeatin\nzeatins\nzebec\nzebeck\nzebecks\nzebecs\nzebra\nzebraic\nzebras\nzebrass\nzebrasses\nzebrine\nzebroid\nzebu\nzebus\nzecchin\nzecchini\nzecchino\nzecchinos\nzecchins\nzechin\nzechins\nzed\nzedoaries\nzedoary\nzeds\nzee\nzees\nzein\nzeins\nzeitgeist\nzeitgeists\nzek\nzeks\nzelkova\nzelkovas\nzemindar\nzemindars\nzemstvo\nzemstvos\nzenana\nzenanas\nzenith\nzenithal\nzeniths\nzeolite\nzeolites\nzeolitic\nzephyr\nzephyrs\nzeppelin\nzeppelins\nzero\nzeroed\nzeroes\nzeroing\nzeros\nzest\nzested\nzestful\nzestfully\nzestfulness\nzestier\nzestiest\nzesting\nzests\nzesty\nzeta\nzetas\nzeugma\nzeugmas\nzibeline\nzibelines\nzibet\nzibeth\nzibeths\nzibets\nzig\nzigged\nzigging\nziggurat\nziggurats\nzigs\nzigzag\nzigzagged\nzigzagging\nzigzags\nzikkurat\nzikkurats\nzikurat\nzikurats\nzilch\nzilches\nzill\nzillah\nzillahs\nzillion\nzillions\nzills\nzinc\nzincate\nzincates\nzinced\nzincic\nzincified\nzincifies\nzincify\nzincifying\nzincing\nzincite\nzincites\nzincked\nzincking\nzincky\nzincoid\nzincous\nzincs\nzincy\nzineb\nzing\nzingani\nzingano\nzingara\nzingare\nzingari\nzingaro\nzinged\nzingier\nzingiest\nzinging\nzings\nzingy\nzinkified\nzinkifies\nzinkify\nzinkifying\nzinky\nzinnia\nzinnias\nzip\nzipped\nzipper\nzippered\nzippering\nzippers\nzippier\nzippiest\nzipping\nzippy\nzips\nziram\nzirams\nzircon\nzirconia\nzirconias\nzirconic\nzirconium\nzircons\nzit\nzither\nzitherist\nzitherists\nzithern\nzitherns\nzithers\nziti\nzitis\nzits\nzizit\nzizith\nzizzle\nzizzled\nzizzles\nzizzling\nzlote\nzloty\nzlotys\nzoa\nzoaria\nzoarial\nzoarium\nzodiac\nzodiacal\nzodiacs\nzoea\nzoeae\nzoeal\nzoeas\nzoftig\nzoic\nzoisite\nzoisites\nzombi\nzombie\nzombies\nzombiism\nzombiisms\nzombis\nzonal\nzonally\nzonary\nzonate\nzonated\nzonation\nzonations\nzone\nzoned\nzoneless\nzoner\nzoners\nzones\nzonetime\nzonetimes\nzoning\nzonk\nzonked\nzonks\nzonula\nzonulae\nzonular\nzonulas\nzonule\nzonules\nzoo\nzoochore\nzoochores\nzoogenic\nzoogeographer\nzoogeographers\nzoogeographic\nzoogeographical\nzoogeographically\nzoogeography\nzooglea\nzoogleae\nzoogleal\nzoogleas\nzoogloea\nzoogloeae\nzoogloeas\nzooid\nzooidal\nzooids\nzooks\nzoolater\nzoolaters\nzoolatries\nzoolatry\nzoologic\nzoological\nzoologically\nzoologies\nzoologist\nzoologists\nzoology\nzoom\nzoomania\nzoomanias\nzoomed\nzoometries\nzoometry\nzooming\nzoomorph\nzoomorphs\nzooms\nzoon\nzoonal\nzoonoses\nzoonosis\nzoonotic\nzoons\nzoophile\nzoophiles\nzoophyte\nzoophytes\nzoos\nzoosperm\nzoosperms\nzoospore\nzoospores\nzootomic\nzootomies\nzootomy\nzori\nzoril\nzorilla\nzorillas\nzorille\nzorilles\nzorillo\nzorillos\nzorils\nzoris\nzoster\nzosters\nzouave\nzouaves\nzounds\nzowie\nzoysia\nzoysias\nzucchetto\nzucchettos\nzucchini\nzucchinis\nzwieback\nzwiebacks\nzygoma\nzygomas\nzygomata\nzygose\nzygoses\nzygosis\nzygosities\nzygosity\nzygote\nzygotene\nzygotenes\nzygotes\nzygotic\nzymase\nzymases\nzyme\nzymes\nzymogen\nzymogene\nzymogenes\nzymogens\nzymologies\nzymology\nzymoses\nzymosis\nzymotic\nzymurgies\nzymurgy\nzyzzyva\nzyzzyvas\n"
  },
  {
    "path": "SPL-unit-tests/res/end_cr",
    "content": "1\r2\r3\r4\r5\r"
  },
  {
    "path": "SPL-unit-tests/res/end_crlf",
    "content": "1\r\n2\r\n3\r\n4\r\n5\r\n"
  },
  {
    "path": "SPL-unit-tests/res/end_lf",
    "content": "1\n2\n3\n4\n5\n"
  },
  {
    "path": "SPL-unit-tests/test-collection-read.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib collections read functionality.\n */\n#include \"deque.h\"\n#include \"grid.h\"\n#include \"hashmap.h\"\n#include \"hashset.h\"\n#include \"map.h\"\n#include \"priorityqueue.h\"\n#include \"queue.h\"\n#include \"set.h\"\n#include \"stack.h\"\n#include \"vector.h\"\n#include \"console.h\"\n#include \"linkedlist.h\"\n#include \"SimpleTest.h\"\nusing namespace std;\n\ntemplate <typename Collection> void readFromString(Collection& coll, string s)\n{\n    istringstream in(s);\n     if (!(in >> coll)) error(\"Unable to read collection from: \" + s);\n\n    ostringstream out;\n    out << coll << endl;\n    istringstream in2(out.str());\n    Collection coll2;\n    if (!(in2 >> coll2)) error(\"Unable to read collection that was written: \" + out.str());\n    EXPECT_EQUAL(coll, coll2);\n}\n\n\nPROVIDED_TEST(\"Correctly read list into Vector, Stack, Queue, Deqeue, LList, Set, HashSet\")\n{\n    string l = \"{red, green, blue, yellow, \\\"\\\", blue}\";\n    //string l = \"{\\\"red\\\", \\\"green\\\", \\\"blue\\\", \\\"yellow\\\", \\\"\\\", \\\"blue\\\"}\";\n\n\tVector<string> v;\n\tStack<string> s;\n\tQueue<string> q;\n\tSet<string> set;\n\tHashSet<string> hset;\n\tLinkedList<string> ll;\n\tDeque<string> d;\n\n\treadFromString(v, l);\n\treadFromString(s, l);\n\treadFromString(q, l);\n\treadFromString(d, l);\n\treadFromString(ll, l);\n\treadFromString(set, l);\n\treadFromString(hset, l);\n\n    string empty = \"{}\";\n    readFromString(v, empty);\n    EXPECT(v.isEmpty());\n}\n\nPROVIDED_TEST(\"Confirm errors (malformed list)\")\n{\n    Vector<int> quotes;\n    EXPECT_ERROR(readFromString(quotes, \"{apple\\\"}\")); // no open \"\n    EXPECT_ERROR(readFromString(quotes, \"{\\\"apple}\")); // no close \"\n\n    Vector<int> malformed;\n    EXPECT_ERROR(readFromString(malformed, \"3}\")); // no open {\n    EXPECT_ERROR(readFromString(malformed, \"{3\")); // no close }\n    EXPECT_ERROR(readFromString(malformed, \"{3 4}\")); // no comma\n    EXPECT_ERROR(readFromString(malformed, \"{3ab}\")); // not a number\n}\n\nPROVIDED_TEST(\"Correctly read pairs into Map, HashMap, PQueue\")\n{\n//\tstring p = \"{0:\\\"cashew\\\", 3.14:\\\"kale\\\", 2:\\\"\\\", 2.5:\\\"tacos\\\"}\";\n    string p = \"{0:cashew, 3.14:kale, 2:\\\"\\\", 2.5:tacos}\";\n\n    HashMap<double, string> hmap;\n\tMap<double, string> map;\n\tPriorityQueue<string> pq;\n\n\treadFromString(map, p);\n\treadFromString(hmap, p);\n\treadFromString(pq, p);\n\n    string empty = \"{}\";\n    readFromString(map, empty);\n    EXPECT(map.isEmpty());\n\n}\n\nPROVIDED_TEST(\"Confirm errors (malformed pair)\")\n{\n    Map<int, int> malformed;\n    EXPECT_ERROR(readFromString(malformed, \"{3,4}}\")); // no open {\n    EXPECT_ERROR(readFromString(malformed, \"{{3,4}\")); // no close }\n    EXPECT_ERROR(readFromString(malformed, \"{{3 4}}\")); // no comma\n}\n\nPROVIDED_TEST(\"Correctly read groups into Set<Set> and Grid\")\n{\n//\tstring g = \"{{\\\"red\\\", \\\"red\\\", \\\"red\\\"}, {\\\"apple\\\", \\\"\\\", \\\"pear\\\"}, {\\\"red\\\", \\\"blue\\\", \\\"green\\\"}}\";\n    string g = \"{{red, red, red}, {apple, \\\"\\\", pear}, {red, blue, green}}\";\n\n    Set<Set<string>> sets;\n\tHashSet<Set<string>> hsets;\n\tGrid<string> grid;\n\n\treadFromString(sets, g);\n\treadFromString(hsets, g);\n    readFromString(grid, g);\n\n    string empty = \"{}\";\n    readFromString(sets, empty);\n    EXPECT(sets.isEmpty());\n}\n\nPROVIDED_TEST(\"Confirm Grid error (non-rectangular input)\")\n{\n    Grid<int> malformed;\n    EXPECT_ERROR(readFromString(malformed, \"{{3, 4}, {1, 2}, {5, 6, 7}}\"));\n    EXPECT_ERROR(readFromString(malformed, \"{{3, 4}, {1, 2}, {5}}\"));\n\n    EXPECT_ERROR( (malformed = {{3, 4}, {1, 2}, {5, 6, 7}}) );\n    EXPECT_ERROR( (malformed = {{3, 4}, {1, 2}, {5}}) );\n}\n\nvoid confirmGood(string s, string expected = \"INPUT\")\n{\n    string t;\n    string result = expected == \"INPUT\" ? s : expected;\n\n    istringstream in(s);\n    EXPECT(readQuotedString(in, t, true));\n    EXPECT_EQUAL(t, result);\n\n    istringstream in2(s);\n    EXPECT(readQuotedString(in2, t, false));\n    EXPECT_EQUAL(t, result);\n}\n\nvoid confirmBad(string s)\n{\n    string t;\n\n    istringstream in(s);\n    EXPECT(!readQuotedString(in, t, false));\n\n    istringstream in2(s);\n    EXPECT_ERROR(readQuotedString(in2, t, true));\n}\n\nPROVIDED_TEST(\"correct readQuotedString (double and single quotes)\")\n{\n    confirmGood(\"\\\"apple\\\"\", \"apple\");\n    confirmGood(\"'apple'\", \"apple\");\n    confirmGood(\"''\", \"\");\n    confirmGood(\"\\\"\\\"\", \"\");\n}\n\nPROVIDED_TEST(\"correct readQuotedString (no quotes)\")\n{\n    confirmGood(\"apple\");\n    confirmGood(\"\");\n    confirmGood(\"apple banana cherry\");\n    // surprise -- stops at delimiter\n    confirmGood(\"apple:\\nbanana\", \"apple\");\n    confirmGood(\"apple, banana, cherry\", \"apple\");\n}\n\nPROVIDED_TEST(\"errors readQuotedString (open quote no/mismatch close)\")\n{\n    confirmBad(\"'apple\");\n    confirmBad(\"\\\"apple\");\n    confirmBad(\"'apple\\\"\");\n    confirmBad(\"'apple\\\"\");\n    confirmBad(\"'apple;\");\n}\n\nPROVIDED_TEST(\"correct readQuotedString (valid escapes)\")\n{\n    confirmGood(\"'\\\\t'\", \"\\t\");\n    confirmGood(\"'\\\\101'\" ,\"A\");\n    confirmGood(\"'\\\\x41'\" ,\"A\");\n    confirmGood(\"'\\\\t\\\\n'\" ,\"\\t\\n\");\n    confirmGood(\"'\\\\101\\\\102'\" ,\"AB\");\n    confirmGood(\"'\\\\x41\\\\x4a'\" ,\"AJ\");\n    confirmGood(\"'\\\\t\\\\x41\\\\102\\\\x4a\\\\n'\" ,\"\\tABJ\\n\");\n}\n\nPROVIDED_TEST(\"errors readQuotedString (invalid escapes)\")\n{\n    confirmBad(\"'\\\\\");\n    confirmBad(\"'\\\\123\");\n    confirmBad(\"'\\\\xab\");\n//    confirmBad(\"'\\\\8'\"); // not valid octal\n}\n\n\n"
  },
  {
    "path": "SPL-unit-tests/test-collections.cpp",
    "content": "/*\r\n * Test file for verifying the Stanford C++ lib collections functionality.\r\n *\r\n * DawgLexicon, Grid, HashMap, HashSet, TrieLexicon, LinkedList,\r\n * Map, PriorityQueue, Queue, Set, Stack, Vector\r\n */\r\n\r\n#include \"deque.h\"\r\n#include \"grid.h\"\r\n#include \"hashset.h\"\r\n#include \"trielexicon.h\"\r\n#include \"linkedlist.h\"\r\n#include \"map.h\"\r\n#include \"priorityqueue.h\"\r\n#include \"queue.h\"\r\n#include \"set.h\"\r\n#include \"stack.h\"\r\n#include \"vector.h\"\r\n#include \"SimpleTest.h\"\r\n#include <iostream>\r\n#include <sstream>\r\n#include <string>\r\nusing namespace std;\r\n\r\n\r\nPROVIDED_TEST(\"collection initializer lists\") {\r\n    auto list = {60, 70};\r\n    auto list2 = {20, 50};\r\n    std::initializer_list<std::string> lexlist = {\"sixty\", \"seventy\"};\r\n    std::initializer_list<std::string> lexlist2 = {\"twenty\", \"fifty\"};\r\n //   std::initializer_list<std::pair<std::string, int> > pairlist = {{\"k\", 60}, {\"t\", 70}};\r\n //   std::initializer_list<std::pair<std::string, int> > pairlist2 = {{\"b\", 20}, {\"e\", 50}};\r\n\r\n    Grid<int> grid {{1, 2, 3}, {4, 5, 6}};\r\n    cout << \"init list Grid = \" << grid << endl;\r\n\r\n    HashMap<string, int> hmap {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}};\r\n    cout << \"init list HashMap = \" << hmap << endl;\r\n    hmap += {{\"d\", 40}, {\"e\", 50}};\r\n    cout << \"after +=, HashMap = \" << hmap << endl;\r\n    //cout << \"HashMap + {} list = \" << (hmap + pairlist) << endl;\r\n    //cout << \"HashMap - {} list = \" << (hmap - pairlist2) << endl;\r\n    //cout << \"HashMap * {} list = \" << (hmap * pairlist2) << endl;\r\n    hmap -= {{\"b\", 20}, {\"e\", 50}, {\"a\", 999}};\r\n    cout << \"HashMap -={} list = \" << hmap << endl;\r\n    hmap *= {{\"z\", 0}, {\"a\", 10}, {\"d\", 40}, {\"x\", 99}};\r\n    cout << \"HashMap *={} list = \" << hmap << endl;\r\n    cout << \"at end,   HashMap = \" << hmap << endl;\r\n\r\n    HashSet<int> hset {10, 20, 30};\r\n    cout << \"init list HashSet = \" << hset << endl;\r\n    hset += {40, 50};\r\n    cout << \"after +=, HashSet = \" << hset << endl;\r\n    cout << \"HashSet + {} list = \" << (hset + list) << endl;\r\n    cout << \"HashSet - {} list = \" << (hset - list2) << endl;\r\n    cout << \"HashSet * {} list = \" << (hset * list2) << endl;\r\n    hset -= {20, 50};\r\n    cout << \"HashSet -={} list = \" << hset << endl;\r\n    hset *= {0, 10, 40, 99};\r\n    cout << \"HashSet *={} list = \" << hset << endl;\r\n    cout << \"at end,   HashSet = \" << hset << endl;\r\n\r\n    std::initializer_list<std::string> lexallwords = {\r\n        \"ten\", \"twenty\", \"thirty\", \"forty\", \"fifty\", \"sixty\", \"seventy\"\r\n    };\r\n    TrieLexicon lex {\"ten\", \"twenty\", \"thirty\"};\r\n    cout << \"init list Lexicon = \" << lex << \", size \" << lex.size() << endl;\r\n    for (std::string s : lexallwords) { cout << boolalpha << lex.contains(s) << \" \"; }\r\n    cout << endl;\r\n    lex += \"forty\", \"fifty\";\r\n    cout << \"after +=, Lexicon = \" << lex << \", size \" << lex.size() << endl;\r\n    lex -= \"forty\", \"fifty\";\r\n    cout << \"after -=, Lexicon = \" << lex << \", size \" << lex.size() << endl;\r\n    lex += {\"forty\", \"fifty\"};\r\n    cout << \"after +=, Lexicon = \" << lex << \", size \" << lex.size() << endl;\r\n    for (std::string s : lexallwords) { cout << boolalpha << lex.contains(s) << \" \"; }\r\n    cout << endl;\r\n    cout << \"Lexicon + {} list = \" << (lex + lexlist) << endl;\r\n    cout << \"Lexicon - {} list = \" << (lex - lexlist2) << endl;\r\n    cout << \"Lexicon * {} list = \" << (lex * lexlist2) << endl;\r\n    lex -= {\"twenty\", \"fifty\"};\r\n    cout << \"Lexicon -={} list = \" << lex << \", size \" << lex.size() << endl;\r\n    lex *= {\"zero\", \"ten\", \"forty\", \"ninetynine\"};\r\n    cout << \"Lexicon *={} list = \" << lex << \", size \" << lex.size() << endl;\r\n    cout << \"at end,   Lexicon = \" << lex << \", size \" << lex.size() << endl;\r\n\r\n    LinkedList<int> llist {10, 20, 30};\r\n    cout << \"init list LinkedList = \" << llist << endl;\r\n    llist += {40, 50};\r\n    cout << \"after +=, LinkedList = \" << llist << endl;\r\n    cout << \"LinkedList + {} list = \" << (llist + list) << endl;\r\n    cout << \"at end,   LinkedList = \" << llist << endl;\r\n\r\n    Map<string, int> map {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}};\r\n    cout << \"init list Map = \" << map << endl;\r\n    map += {{\"d\", 40}, {\"e\", 50}};\r\n    cout << \"after +=, Map = \" << map << endl;\r\n    //cout << \"Map + {} list = \" << (map + pairlist) << endl;\r\n    //cout << \"Map - {} list = \" << (map - pairlist2) << endl;\r\n    //cout << \"Map * {} list = \" << (map * pairlist2) << endl;\r\n    map -= {{\"b\", 20}, {\"e\", 50}, {\"a\", 999}};\r\n    cout << \"Map -={} list = \" << map << endl;\r\n    map *= {{\"z\", 0}, {\"a\", 10}, {\"d\", 40}, {\"x\", 99}};\r\n    cout << \"Map *={} list = \" << map << endl;\r\n    cout << \"at end,   Map = \" << map << endl;\r\n\r\n    PriorityQueue<string> pqueue {{40.0, \"Marty\"}, {20.0, \"Eric\"}, {30.0, \"Mehran\"}};\r\n    cout << \"init list PQueue = \" << pqueue << endl;\r\n    while (!pqueue.isEmpty()) {\r\n        cout << \"  \" << pqueue.peekPriority() << \" \" << pqueue.peek() << endl;\r\n        pqueue.dequeue();\r\n    }\r\n\r\n    Queue<int> queue {10, 20, 30};\r\n    cout << \"init list Queue = \" << queue << endl;\r\n\r\n    Deque<int> deque {10, 20, 30};\r\n    cout << \"init list Deque = \" << deque << endl;\r\n\r\n    Set<int> set {10, 20, 30};\r\n    cout << \"init list Set = \" << set << endl;\r\n    set += {40, 50};\r\n    cout << \"after +=, Set = \" << set << endl;\r\n    cout << \"Set + {} list = \" << (set + list) << endl;\r\n    cout << \"Set - {} list = \" << (set - list2) << endl;\r\n    cout << \"Set * {} list = \" << (set * list2) << endl;\r\n    set -= {20, 50};\r\n    cout << \"Set -={} list = \" << set << endl;\r\n    set *= {0, 10, 40, 99};\r\n    cout << \"Set *={} list = \" << set << endl;\r\n    cout << \"at end,   Set = \" << set << endl;\r\n\r\n    Stack<int> stack {10, 20, 30};\r\n    cout << \"init list Stack = \" << stack << endl;\r\n\r\n    Vector<int> v {10, 20, 30};\r\n    cout << \"init list Vector = \" << v << endl;\r\n    v += {40, 50};\r\n    cout << \"after +=, Vector = \" << v << endl;\r\n    cout << \"Vector + {} list = \" << (v + list) << endl;\r\n    cout << \"at end,   Vector = \" << v << endl;\r\n    v = {999, 888, 777};\r\n    cout << \"on =,     Vector = \" << v << endl;\r\n    v.clear();\r\n    v.add(777);\r\n    std::initializer_list<int> sevenlist = {777};\r\n    if (v == sevenlist) {\r\n        cout << \"op ==, Vector equal\" << endl;\r\n    } else {\r\n        cout << \"op ==, Vector not equal\" << endl;\r\n    }\r\n}\r\n"
  },
  {
    "path": "SPL-unit-tests/test-console.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib console module.\n */\n\n#include \"consoletext.h\"\n#include \"simpio.h\"\n#include <iostream>\n#include <string>\n#include \"gconsolewindow.h\"\n#include \"SimpleTest.h\"\n\nusing namespace std;\n\nMANUAL_TEST(\"console animation\") {\n    for (int i = 0; i < 10; i++) {\n        cout << \"Frame #\" << i << endl;\n        pause(100);\n        clearConsole();\n    }\n    getConsoleWindow()->requestFocus();\n    getLine(\"animation complete, RETURN to continue\");\n    setConsoleClearEnabled(false);\n    for (int i = 0; i < 10; i++) {\n        cout << \"Frame #\" << i << endl;\n        pause(100);\n        clearConsole();\n    }\n    getLine(\"animation 2 complete (no clear), RETURN to continue\");\n    setConsoleClearEnabled(true);\n    for (int i = 0; i < 10; i++) {\n        cout << \"Frame #\" << i << endl;\n        pause(100);\n        clearConsole();\n    }\n    getLine(\"animation 3 complete (w/ clear), RETURN to continue\");\n}\n\nMANUAL_TEST(\"console mixed cout/cerr\") {\n    cerr << \"This message comes from cerr\" << endl;\n    cout << \"Another one from cout!\" << endl;\n    cerr << \"This message ALSO comes from cerr\" << endl;\n    cout << \"A third one from cout!\" << endl;\n    cerr << \"HOW \";\n    cout << \"about \";\n    cerr << \"A \";\n    cout << \"mixed \";\n    cerr << \"LINE??\";\n    cout << endl;\n}\n\nvoid outputColorTest() {\n    cout << \"Output color test:\" << endl;\n    setConsoleOutputColor(\"#ff00ff\");\n    cout << \"Purple line\" << endl;\n    setConsoleOutputColor(\"#0000ff\");\n    cout << \"Blue line\" << endl;\n    setConsoleOutputColor(\"#00ff33\");\n    cout << \"GREEN line\" << endl;\n    setConsoleOutputColor(\"#666666\");\n    cout << \"GRAY LINE\" << endl;\n    setConsoleOutputColor(\"#000000\");\n    cout << \"black line\" << endl;\n    cout << endl;\n}\n"
  },
  {
    "path": "SPL-unit-tests/test-dawg.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib Dawg class.\n */\n\n#include \"trielexicon.h\"\n#include \"dawglexicon.h\"\n#include \"splversion.h\"\n#include \"SimpleTest.h\"\n\nstatic TrieLexicon *gTrie;\n\nstatic DawgLexicon loadDawg(std::string name) {\n    DawgLexicon dawg(name);\n    return dawg;\n}\nstatic TrieLexicon loadTrie(std::string name) {\n    TrieLexicon trie(name);\n    return trie;\n}\n\nstatic void checkDawgAgainst(const DawgLexicon& dawg, const TrieLexicon& trie) {\n    EXPECT_EQUAL(dawg.size(), trie.size());\n\n    int dawgCount = 0, trieCount = 0;\n    for (auto word : trie) {\n        trieCount++;\n    }\n    for (auto word : dawg) {\n        dawgCount++;\n    }\n    EXPECT_EQUAL(dawgCount, trieCount);\n\n    for (auto word : trie) {\n        EXPECT(dawg.contains(word));\n    }\n\n    EXPECT(dawg.containsPrefix(\"\"));\n    EXPECT(!dawg.contains(\"\"));\n\n    for (auto word : trie) {\n        for (int i = 0; i < word.length(); i++) {\n            auto prefix = word.substr(0, i);\n            EXPECT(dawg.containsPrefix(prefix));\n       }\n    }\n\n    for (auto word : trie) {\n        for (int i = 0; i < word.length(); i++) {\n            auto prefix = word.substr(0, i);\n            auto other = prefix + \"x\";\n            EXPECT_EQUAL(dawg.containsPrefix(other), trie.containsPrefix(other));\n       }\n    }\n}\n\nPROVIDED_TEST(\"Load EnglishWords into Trie (slow...) and Dawg (fast!)\") {\n    TrieLexicon trie;\n    TIME_OPERATION(1, trie = loadTrie(\"res/EnglishWords.txt\"));\n    gTrie = new TrieLexicon(getLibraryPathForResource(\"EnglishWords.txt\"));\n    EXPECT_EQUAL(*gTrie, trie);\n    TIME_OPERATION(1, loadDawg(\"res/dawgle.dat\"));\n}\n\nPROVIDED_TEST(\"DawgLexicon, project-local, compare to trie\") {\n    DawgLexicon dawg(\"res/dawgle.dat\");\n    checkDawgAgainst(dawg,  *gTrie);\n}\n\nPROVIDED_TEST(\"DawgLexicon, big-endian data file, compare to trie\") {\n    DawgLexicon dawg(\"res/dawgbe.dat\");\n    checkDawgAgainst(dawg,  *gTrie);\n}\n\nPROVIDED_TEST(\"DawgLexicon, library-istalled, compare to trie\") {\n    DawgLexicon dawg(getLibraryPathForResource(\"EnglishWords.dat\"));\n    checkDawgAgainst(dawg,  *gTrie);\n}\n\nPROVIDED_TEST(\"DawgLexicon, errors in file read\") {\n    EXPECT_ERROR(loadDawg(\"NoExist.dat\"));\n    EXPECT_ERROR(loadDawg(\"test-dawg.cpp\"));\n    EXPECT_ERROR(loadDawg(\"res/badtag.dat\"));\n    EXPECT_ERROR(loadDawg(\"res/badsizeformat.dat\"));\n    EXPECT_ERROR(loadDawg(\"res/badstartformat.dat\"));\n    EXPECT_ERROR(loadDawg(\"res/badsize.dat\"));\n    EXPECT_ERROR(loadDawg(\"res/badstart.dat\"));\n    EXPECT_ERROR(loadDawg(\"res/badletter.dat\"));\n    EXPECT_ERROR(loadDawg(\"res/badchildren.dat\"));\n}\n\nPROVIDED_TEST(\"DawgLexicon, empty\") {\n    DawgLexicon emptyDawg(\"\");\n    TrieLexicon emptyTrie;\n\n    EXPECT_EQUAL(emptyDawg.size(), 0);\n    int dawgCount = 0;\n    for (auto word : emptyDawg) {\n        dawgCount++;\n    }\n    EXPECT_EQUAL(dawgCount, 0);\n\n    EXPECT_EQUAL(emptyDawg.contains(\"\"), emptyTrie.contains(\"\"));\n    EXPECT_EQUAL(emptyDawg.containsPrefix(\"\"), emptyTrie.containsPrefix(\"\"));\n\n    checkDawgAgainst(emptyDawg, emptyTrie);\n}\n"
  },
  {
    "path": "SPL-unit-tests/test-deque.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib Deque class.\n */\n#include \"deque.h\"\n#include \"hashset.h\"\n#include \"common.h\"\n#include <initializer_list>\n#include <iostream>\n#include <sstream>\n#include <string>\n\n/*\n * Force instantiation of Deque on a few types to make sure we didn't miss anything.\n * These types must be comparable and hashable to avoid instaniating functions we\n * can't support.\n */\ntemplate class Deque<int>;\ntemplate class Deque<bool>;\ntemplate class Deque<std::string>;\n\nPROVIDED_TEST(\"Deque, compare\") {\n    Deque<std::string> deq;\n    deq.enqueueBack(\"a\");\n    deq.enqueueBack(\"b\");\n    deq.enqueueBack(\"c\");\n    Deque<std::string> deq2;\n    deq2.enqueueBack(\"a\");\n    deq2.enqueueBack(\"ab\");\n    deq2.enqueueBack(\"bc\");\n    Deque<std::string> deq3;\n    testCompareOperators(deq, deq2, GreaterThan);\n    testCompareOperators(deq2, deq, LessThan);\n    testCompareOperators(deq, deq, EqualTo);\n    Set<Deque<std::string> > sdeque {deq, deq2, deq3};\n    EXPECT_EQUAL(sdeque.toString(), \"{{}, {\\\"a\\\", \\\"ab\\\", \\\"bc\\\"}, {\\\"a\\\", \\\"b\\\", \\\"c\\\"}}\");\n}\n\nPROVIDED_TEST(\"Deque, forEach\") {\n    Deque<int> deq;\n    deq.enqueueBack(1);\n    deq.enqueueFront(2);\n    deq.enqueueBack(3);\n    deq.enqueueFront(4);\n\n    assertCollection(\"Deque foreach\", {4, 2, 1, 3}, deq);\n}\n\nPROVIDED_TEST(\"Deque, frontBack\") {\n    Deque<int> deq {10, 20, 30, 40};\n    EXPECT_EQUAL( 10, deq.peekFront());\n    EXPECT_EQUAL( 40, deq.peekBack());\n}\n\nPROVIDED_TEST(\"Deque, hashCode\") {\n    Deque<int> deq;\n    deq.enqueueBack(1);\n    deq.enqueueFront(2);\n    deq.enqueueBack(3);\n    deq.enqueueFront(4);\n    EXPECT_EQUAL( hashCode(deq), hashCode(deq));\n\n    Deque<int> copy = deq;\n    EXPECT_EQUAL( hashCode(deq), hashCode(copy));\n\n    Deque<int> empty;\n\n    HashSet<Deque<int> > hashdeq {deq, copy, empty, empty};\n    EXPECT_EQUAL( 2, hashdeq.size());\n}\n\nPROVIDED_TEST(\"Deque, initializerList\") {\n    Deque<int> deque {10, 20, 30};\n    EXPECT_EQUAL(deque.toString(), \"{10, 20, 30}\");\n}\n\nvoid addDuring(Deque<int>& v) {\n    for (int m : v) {\n        (void) m;\n        v.enqueueBack(0);\n    }\n}\nvoid removeDuring(Deque<int>& v) {\n    for (int m : v) {\n        (void) m;\n        v.dequeueBack();\n    }\n}\n\nPROVIDED_TEST(\"Deque, error on modify during iterate\") {\n    Deque<int> deque {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};\n   EXPECT_ERROR(addDuring(deque));\n   EXPECT_ERROR(removeDuring(deque));\n}\n\n"
  },
  {
    "path": "SPL-unit-tests/test-error.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib error module.\n */\n\n#include \"error.h\"\n#include \"vector.h\"\n#include <csignal>\n#include <iostream>\n#include <string>\n#include \"SimpleTest.h\"\nusing namespace std;\n\nnamespace MyNS {\n    class LoL {\n    public:\n        static int cCcCc_cCcCc(int, char*, double, char, bool) {\n            cout << \"function c start\" << endl;\n            cout << endl;\n            // error(\"blargh!\");\n            Vector<int> v;\n            v.get(42);  // lolol\n            cout << \"function c end\" << endl;\n            return 0;\n        }\n    };\n}\n\nvoid b() {\n    cout << \"function b start\" << endl;\n    MyNS::LoL::cCcCc_cCcCc(0, nullptr, 0, 0, false);\n    cout << \"function b end\" << endl;\n}\n\nvoid a() {\n    cout << \"function a start\" << endl;\n    b();\n    cout << \"function a end\" << endl;\n}\n\nvoid exceptionTest() {\n    a();\n}\n\n\n// commenting out because of compiler warning about infinite recursion\nvoid stackOverflowTest(int n) {\n    int a[100] = {0};\n    if (a[0] || n % 1000 == 0) {\n        cout << \"stack overflow n=\" << n << endl;\n    }\n    if (!a[0]) {\n        stackOverflowTest(n+1);\n    }\n}\n\nvoid segC_theOneThatActuallyThrows(int sig) {\n    if (sig == SIGFPE) {\n        // divide by 0 (generate SIGFPE)\n        int a = 1;\n        int b = 0;\n        cout << (a/b) << endl;\n    } else if (sig == SIGSEGV) {\n        // dereference a NULL pointer (generate SIGSEGV)\n        int* foo = nullptr;\n        cout << *foo << endl;\n    } else if (sig == SIGABRT) {\n        // cause program to \"abort\" (generate SIGABRT)\n        abort();\n    }\n    cout << \"will never get here lol\" << endl;\n}\n\nvoid segB(int sig) {\n    segC_theOneThatActuallyThrows(sig);\n}\n\nvoid segA(int sig) {\n    segB(sig);\n}\n\nvoid raiseSignal(int sig) {\n    if (sig == 0) {\n        sig = SIGSEGV;\n    }\n    cout << \"Hello, world!\" << endl;\n    segA(sig);\n}\n\nvoid excepB() {\n    int x = 42;\n    string s = \"hi\";\n    s += x;\n    throw 42;\n}\n\nvoid excepA() {\n    int x = 42;\n    string s = \"hi\";\n    s += x;\n    excepB();\n}\n\n\nPROVIDED_TEST(\"error raised under EXPECT_ERROR should report as success\") {\n    EXPECT_ERROR(exceptionTest());\n}\n\nPROVIDED_TEST(\"error raised under EXPECT_NO_ERROR should report as failure (HEADS UP: text expected to fail)\") {\n    EXPECT_NO_ERROR(exceptionTest());\n}\n\nPROVIDED_TEST(\"throw std::exception under EXPECT_ERROR should report as failure (HEADS UP: test expected to fail)\") {\n    EXPECT_ERROR(throw std::exception());\n}\n\nPROVIDED_TEST(\"throw std::string under EXPECT_ERROR should report as failure (HEADS UP: test expected to fail)\") {\n    EXPECT_ERROR(throw string(\"oh crap\"));\n}\n\n\n\n#if 0\n\nPROVIDED_TEST(\"call std::exit during test\") {\n    exit(0);\n}\n\nPROVIDED_TEST(\"Exceptions, seg fault (should crash)\") {\n    raiseSignal(SIGSEGV);\n}\n\nPROVIDED_TEST(\"Exceptions, divide by zero (should crash)\") {\n   raiseSignal(SIGFPE);\n}\n\nPROVIDED_TEST(\"Exceptions, AbortTest\") {\n    raiseSignal(SIGABRT);\n}\n\n// we currently can't gracefully catch stack overflows\nPROVIDED_TEST(\"Exceptions, StackOverflowTest\") {\n    stackOverflowTest(42);\n}\n#endif\n"
  },
  {
    "path": "SPL-unit-tests/test-exceptions.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib exception handling.\n */\n#include <iostream>\n#include \"console.h\"\n#include \"simpio.h\"\n#include \"error.h\"\n#include \"vector.h\"\n#include \"set.h\"\n#include \"strlib.h\"\n#include \"gthread.h\"\n#include \"SimpleTest.h\"\n\nusing namespace std;\n\nint gZero, *gPtr;\n\nvoid stack_overflow() { static int count; count++; stack_overflow(); }\n\nstruct  {\n    const char *explain;\n    std::function<void()> fn;\n} faults[] = {\n    {\"exit normally\",   ([] { cout << \"Goodbye!\" << endl; } ) },\n    {\"infinite loop\",   ([] { while (true) ; } ) },\n    {\"segv\",            ([] { *gPtr = 106; } ) },\n    {\"sigabort\",        ([] { abort(); } ) },\n    {\"sigfpe\",          ([] { gZero = 106/gZero; } ) },\n    {\"endless print\",   ([] { for (int i = 0;  ; i++) cout << i << endl; } ) },\n    {\"stack overflow\",  ([] { stack_overflow(); } ) },\n    {\"call error\",      ([] { error(\"Qt is my best friend (not)\"); } ) },\n    {\"call qFatal\",     ([] { qFatal(\"Fatal error being reported via qFatal\"); } ) },\n    {\"throw int\",       ([] { throw 106; } ) },\n    {\"throw float\",     ([] { throw 3.14159; } ) },\n    {\"throw str\",       ([] { throw \"Hyperjump!\"; } ) },\n    {\"throw Vector\",    ([] { throw Vector<int>{3, 4}; } ) },\n    {\"Vector bounds\",   ([] { Vector<int> v; v[106]; } ) },\n    {\"Vector modify\",   ([] { Vector<int> v {4, 7}; for (int m : v) v.remove(m); } ) },\n    {\"Set modify\",      ([] { Set<int> set {4, 7}; for (int m : set) set.add(m*2); } ) },\n    {\"stringToReal\",    ([] { stringToReal(\"3.14Pi.59\"); } ) },\n    {\"std::vector at\",  ([] { vector<int> v; v.at(106); } ) },\n    {\"std::string at\",  ([] { string s; s.at(106); } ) },\n    {\"gui segv\",        ([] { GThread::runOnQtGuiThread([] { *gPtr = 106; } ); } ) },\n    {\"gui fpe\",         ([] { GThread::runOnQtGuiThread([] { gZero = 106/gZero; } ); } ) },\n    {\"gui throw\",       ([] { GThread::runOnQtGuiThread([] { throw 106; } ); } ) },\n    {\"gui error\",       ([] { GThread::runOnQtGuiThread([] { Vector<int> v; v[106]; } ); } ) },\n    {\"gui stack\",       ([] { GThread::runOnQtGuiThread([] { stack_overflow(); } ); } ) },\n};\n\n\nMANUAL_TEST(\"Create fatal exception under PROVIDED_TEST, (HEADS UP: test expected to fail, possible crash\")\n{\n  //  exceptions::setTopLevelExceptionHandlerEnabled(false);\n   // exceptions::interruptIfDebug();\n\n    int n = sizeof(faults)/sizeof(*faults);\n    cout << \" MENU \" << endl;\n    for (int i = 0; i < n; i++) {\n        cout << i << \" : \" << faults[i].explain << endl;\n    }\n    int i = getIntegerBetween(\"Enter number: \", 0, n-1);\n    cout << \"Choice was: \" << faults[i].explain << endl;\n    faults[i].fn();\n    cout << \"This is after the fault, and mostly won't appear\" << endl;\n}\n"
  },
  {
    "path": "SPL-unit-tests/test-filelib.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib filelib module.\n */\n\n#include \"SimpleTest.h\"\n#include \"filelib.h\"\n#include \"strlib.h\"\nusing namespace std;\n\nPROVIDED_TEST(\"Test filelib path utility functions\") {\n    string cwd = getCurrentDirectory();\n    EXPECT(fileExists(cwd));\n    EXPECT(isDirectory(cwd));\n    EXPECT(!isFile(cwd));\n    string thisFile = \"test-filelib.cpp\";\n    EXPECT(fileExists(thisFile));\n    EXPECT(isFile(thisFile));\n    EXPECT(!isDirectory(thisFile));\n    string expanded = expandPathname(thisFile);\n    EXPECT(fileExists(expanded));\n    string abs = getAbsolutePath(thisFile);\n    EXPECT(fileExists(expanded));\n    EXPECT_EQUAL(getExtension(thisFile), \".cpp\");\n    EXPECT_EQUAL(getRoot(getTail(thisFile)), \"test-filelib\");\n    EXPECT_EQUAL(getHead(abs), cwd);\n}\n\nPROVIDED_TEST(\"Test filelib create/rename/delete files and directories\") {\n    string tmp = getTempDirectory();\n    EXPECT(fileExists(tmp));\n    EXPECT(isDirectory(tmp));\n    EXPECT(!isFile(tmp));\n    string parent = tmp + getDirectoryPathSeparator() + \"filelib-\" + integerToString(time(0));\n    cout << parent << endl;\n    createDirectory(parent);\n    EXPECT(fileExists(parent));\n    EXPECT(isDirectory(parent));\n    EXPECT(!isFile(parent));\n    string name = \"file.txt\";\n    string filename = parent + getDirectoryPathSeparator() + name;\n    string str = \"0123456789\";\n    EXPECT(writeEntireFile(filename, str));\n    EXPECT(fileExists(filename));\n    EXPECT(isFile(filename));\n    EXPECT_EQUAL(fileSize(filename), str.length());\n    EXPECT_EQUAL(listDirectory(parent), { name });\n    EXPECT(writeEntireFile(filename, str, true)); // append\n    EXPECT_EQUAL(fileSize(filename), 2*str.length());\n    renameFile(filename, filename + \"2\");\n    EXPECT(fileExists(filename + \"2\"));\n    EXPECT(!fileExists(filename));\n    EXPECT_EQUAL(listDirectory(parent), { name + \"2\" });\n    deleteFile(filename + \"2\");\n    EXPECT_EQUAL(listDirectory(parent), {});\n    string subdir = parent + \"/nope/sorry\";\n    EXPECT_ERROR(createDirectory(subdir));\n    EXPECT(!fileExists(subdir));\n    EXPECT_NO_ERROR(createDirectoryPath(subdir));\n    EXPECT(fileExists(subdir));\n}\n\nstatic string openAndRead(string name) {\n    ifstream in(name);\n    if (in.fail()) error(\"Cannot open file\");\n    return readEntire(in);\n}\n\nPROVIDED_TEST(\"Test filelib read/write line endings\") {\n    ofstream out(\"output\");\n    Vector<string> vec = {\"1\", \"2\", \"3\", \"4\", \"5\"};\n    for (string s: vec) {\n        out << s << endl;\n    }\n    out.close();\n\n    string myOut = openAndRead(\"output\");\n    Vector<string> options = {\"res/end_cr\", \"res/end_lf\", \"res/end_crlf\"};\n    for (string f: options) {\n        ifstream in;\n        EXPECT(openFile(in, f));\n        string raw = readEntire(in);\n        rewindStream(in);\n        Vector<string> lines = readLines(in);\n        if (lines == vec && myOut != raw) {\n           cout << \"Surprise: This platform can read/convert line endings: \" << f << endl;\n        } else if (myOut == raw) {\n            EXPECT_EQUAL(lines, vec);\n            cout << \"This platform read/writes line endings: \" << f << endl;\n        } else {\n            cout << \"This platform CANNOT read line endings: \" << f << endl;\n        }\n    }\n    deleteFile(\"output\");\n    EXPECT(!fileExists(\"output\"));\n}\n\n"
  },
  {
    "path": "SPL-unit-tests/test-graphics.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib GUI functionality.\n */\n\n#include \"filelib.h\"\n#include \"gbutton.h\"\n#include \"gcanvas.h\"\n#include \"gchooser.h\"\n#include \"gevent.h\"\n#include \"glabel.h\"\n#include \"goptionpane.h\"\n#include \"gradiobutton.h\"\n#include \"gslider.h\"\n#include \"gtable.h\"\n#include \"gtextfield.h\"\n#include \"gwindow.h\"\n\n#include <csignal>\n#include <iostream>\n#include <string>\n#include \"SimpleTest.h\"\nusing namespace std;\n\nMANUAL_TEST(\"Interactors enable/disable\") {\n    GWindow* gw = new GWindow;\n    gw->setSize(400, 150);\n    gw->setTitle(\"Interactors (close window to end test)\");\n    GButton* b1 = new GButton(\"Nope\");\n    b1->setEnabled(false);\n    GButton* b2 = new GButton(\"Yes Me\");\n    b2->setEnabled(true);\n    GTextField* t1 = new GTextField(\"Nope\");\n    t1->setEnabled(false);\n    GTextField* t2 = new GTextField(\"Yes Me\");\n    t2->setEnabled(true);\n    GSlider* s1 = new GSlider();\n    s1->setEnabled(false);\n    GSlider* s2 = new GSlider();\n    s2->setEnabled(true);\n    GChooser* c1 = new GChooser({\"Nope\", \"Nada\", \"Nil\"});\n    c1->setEnabled(false);\n    GChooser* c2 = new GChooser({\"Yes Me\", \"Yep\", \"Sure\"});\n    c2->setEnabled(true);\n\n    gw->addToRegion(new GLabel(\"Every other interactor is disabled\"), \"CENTER\");\n    gw->addToRegion(s1, \"NORTH\");\n    gw->addToRegion(s2, \"NORTH\");\n    gw->addToRegion(b1, \"EAST\");\n    gw->addToRegion(b2, \"EAST\");\n    gw->addToRegion(t1, \"SOUTH\");\n    gw->addToRegion(t2, \"SOUTH\");\n    gw->addToRegion(c1, \"WEST\");\n    gw->addToRegion(c2, \"WEST\");\n\n    gw->setVisible(true);\n    while (gw->isVisible()) {}\n}\n\nMANUAL_TEST(\"chooseFilenameDialog\") {\n    std::cout << \"Opening file chooser in directory \\\"\" << getCurrentDirectory() << \"\\\"\" << std::endl;\n    std::string filename = chooseFilenameDialog(\"booyahtitle\", \"\", \"*.cpp\");\n    std::cout << \"You selected file:  \\\"\" << filename << \"\\\"\" << std::endl;\n}\n\nMANUAL_TEST(\"GOptionPane messages, alerts, and confirm dialogs\") {\n    GOptionPane::showMessageDialog(\"Just saying hi\");\n    GOptionPane::showMessageDialog(\"This would be an error alert\", \"Oh no\", GOptionPane::MESSAGE_ERROR);\n    GOptionPane::showMessageDialog(\"Testing special chars [*+*&}{] && || !)@(*&#)(&^%!{ \\\" \\\" \\\" \\\"}) C:\\\\Program Files\\\\Test ;,;:\\\", ';\\\"\\\\//\\\\// ( ) test 1 2 3 $a $b %a %b %1 %2 http://foo.com/! end\");\n\n    auto result = GOptionPane::showConfirmDialog(\"Are you sure? (say Yes)\");\n    EXPECT_EQUAL(result, GOptionPane::CONFIRM_YES);\n    result = GOptionPane::showConfirmDialog(\"All is cool? (say OK)\", \"I have a title\", GOptionPane::CONFIRM_OK_CANCEL);\n    EXPECT_EQUAL(result, GOptionPane::CONFIRM_OK);\n    result = GOptionPane::showConfirmDialog(\"This one allows Cancel (do that)\", \"I have a title\", GOptionPane::CONFIRM_YES_NO_CANCEL);\n    EXPECT_EQUAL(result, GOptionPane::CONFIRM_CANCEL);\n}\n\nMANUAL_TEST(\"GOptionPane input dialogs\") {\n    std::string input = GOptionPane::showInputDialog(\"Enter b in text field:\", \"I have a title\");\n    EXPECT_EQUAL(input, \"b\");\n    input = GOptionPane::showInputDialog(\"Enter Karel in text field:\", \"I have a title\", \"Karel\");\n    EXPECT_EQUAL(input, \"Karel\");\n}\n\nMANUAL_TEST(\"GOptionPane option dialogs\") {\n    Vector<std::string> choices = {\"Apple\", \"Banana\", \"Cherry\", \"Default\"};\n    std::string option = GOptionPane::showOptionDialog(\"Please pick Banana\", choices, \"I have a title\", \"Default\");\n    EXPECT_EQUAL(option, \"Banana\");\n}\n\nMANUAL_TEST(\"GRadioButton to select from option group\") {\n    GWindow* gw = new GWindow;\n    GLabel* label = new GLabel(\"Hello, world!\");\n    label->setColor(\"#000000\");\n    label->setBackground(\"#ffffff\");\n    label->setFont(\"Helvetica-64-Bold\");\n    gw->addToRegion(label, \"CENTER\");\n\n    gw->setTitle(\"Radio Button (close window to end test)\");\n    GRadioButton* rb1 = new GRadioButton(\"Red\", \"color\");\n    rb1->setActionListener([label](GEvent) { label->setBackground(\"#ff0000\");});\n    GRadioButton* rb2 = new GRadioButton(\"Green\", \"color\", true);\n    rb2->setActionListener([label](GEvent) { label->setBackground(\"#00ff00\");});\n    GRadioButton* rb3 = new GRadioButton(\"Blue\", \"color\");\n    rb3->setActionListener([label](GEvent) { label->setBackground(\"#0000ff\");});\n    gw->addToRegion(rb1, \"SOUTH\");\n    gw->addToRegion(rb2, \"SOUTH\");\n    gw->addToRegion(rb3, \"SOUTH\");\n\n    // a second group of buttons\n    GRadioButton* rb4 = new GRadioButton(\"Black\", \"N\", true);\n    rb4->setActionListener([label](GEvent) { label->setColor(\"#0\");});\n    GRadioButton* rb5 = new GRadioButton(\"White\", \"N\");\n    rb5->setActionListener([label](GEvent) { label->setColor(\"#ffffff\");});\n    gw->addToRegion(rb4, \"NORTH\");\n    gw->addToRegion(rb5, \"NORTH\");\n\n    gw->setVisible(true);\n    while (gw->isVisible()) {}\n}\n\n\n\nstatic void border(GCanvas* img) {\n    int color = 0x0;\n    int w = img->getWidth();\n    int h = img->getHeight();\n    // top/bottom\n    for (int x = 0; x < w; x++) {\n        img->setRGB(x, 0, color);\n        img->setRGB(x, h-1, color);\n    }\n    // left/right\n    for (int y = 0; y < h; y++) {\n        img->setRGB(0, y, color);\n        img->setRGB(w-1, y, color);\n    }\n}\n\nMANUAL_TEST(\"GCanvas with image\") {\n    GWindow* gw = new GWindow;\n    gw->setSize(300, 300);\n    gw->setTitle(\"Testing GCanvas...\");\n    gw->setCloseOperation(GWindow::CLOSE_DO_NOTHING); // disallow close while test is running\n\n    GLabel* label = new GLabel(\"Label\");\n    gw->addToRegion(label, \"SOUTH\");\n\n    label->setText(\"Display image Stanford S\");\n    GCanvas* img = new GCanvas();\n    img->load(\"res/stanford.png\");\n    gw->add(img, 10, 20);\n    pause(2000);\n\n    label->setText(\"Retrieve pixels via toGrid, compare to individual pixel retrieved one by one\");\n    Grid<int> grid = img->toGrid();\n    for (int y = 0; y < grid.numRows(); y++) {\n        for (int x = 0; x < grid.numCols(); x++) {\n            EXPECT_EQUAL(img->getARGB(x, y), grid[y][x]);\n        }\n    }\n    label->setText(\"Replace image with pixel copy, should not change\");\n    img->fromGrid(grid);\n    pause(1000);\n\n    label->setText(\"Resize, fill magenta\");\n    img->resize(120, 120);\n    img->fill(0xff00ff);  // magenta\n    border(img);\n\n    label->setText(\"setRGB on inner pixels (one at a time, this is slow!)\");\n    for (int y = 0; y < img->getHeight()/2; y++) {\n        for (int x = 0; x < img->getWidth()/2; x++) {\n            img->setRGB(x + img->getWidth()/4, y + img->getHeight()/4, 0xffcc33);\n        }\n    }\n    pause(500);\n\n    label->setText(\"Resize, fill red\");\n    img->resize(150, 300);\n    img->fill(0xff0000);\n    pause(500);\n\n    label->setText(\"Use setGrid to change inner pixels (fast)\");\n    grid = img->toGrid();\n\n    for (int y = 0; y < img->getHeight()/2; y++) {\n        for (int x = 0; x < img->getWidth()/2; x++) {\n            grid[y + img->getHeight()/4][x + img->getWidth()/4] = 0xffcc33;\n        }\n    }\n\n    img->setPixels(grid);\n    pause(3000);\n\n    label->setText(\"setRGB to draw black pixels (slow; should be obviously black)\");\n    for (int y = 0; y < img->getHeight()/4; y++) {\n        for (int x = 0; x < img->getWidth()/4; x++) {\n            img->setRGB(x + img->getWidth()/4, y + img->getHeight()/4, 0x000000);\n        }\n    }\n    pause(1000);\n\n    gw->setCloseOperation(GWindow::CLOSE_DISPOSE);\n    label->setText(\"Done, close window to exit this test\");\n    while (gw->isVisible()) {}\n}\n\nMANUAL_TEST(\"GTable with editing controls\") {\n    GWindow* gw = new GWindow;\n    gw->setTitle(\"Testing GTable (close window when finished)\");\n\n    GTable* table = new GTable(5, 3);\n    table->select(0, 1);\n    table->setTableListener([](GTableEvent tableEvent) {\n        //std::cout << \"cell updated: \" << tableEvent.toString() << std::endl;\n    });\n    gw->addToRegion(table, \"NORTH\");\n\n    GButton* buttget = new GButton(\"Get All\");\n    buttget->setActionListener([=]() {\n        for (int row = 0; row < table->numRows(); row++) {\n            for (int col = 0; col < table->numCols(); col++) {\n                cout << \"R\" << row << \"C\" << col << \"=\\\"\" << table->get(row, col) << \"\\\" \";\n            }\n            cout << endl;\n        }\n        int row, col;\n        table->getSelectedCell(row, col);\n        cout << \"selected: R\" << row << \"C\" << col << endl;\n    });\n    gw->addToRegion(buttget, \"SOUTH\");\n\n    GButton* buttset = new GButton(\"Set All\");\n    buttset->setActionListener([=]() {\n        for (int row = 0; row < table->numRows(); row++) {\n            for (int col = 0; col < table->numCols(); col++) {\n                std::string value = \"R\" + std::to_string(row) + \"C\" + std::to_string(col);\n                table->set(row, col, value);\n            }\n        }\n        table->select(1, 2);\n    });\n    gw->addToRegion(buttset, \"SOUTH\");\n\n    GButton* buttclear = new GButton(\"Clear\");\n    buttclear->setActionListener([=]() {\n        table->clear();\n    });\n    gw->addToRegion(buttclear, \"SOUTH\");\n\n    GButton* buttrowadd = new GButton(\"+R\");\n    buttrowadd->setActionListener([=]() {\n        table->resize(table->numRows() + 1, table->numCols());\n    });\n    gw->addToRegion(buttrowadd, \"SOUTH\");\n\n    GButton* buttrowrem = new GButton(\"-R\");\n    buttrowrem->setActionListener([=]() {\n        table->resize(table->numRows() - 1, table->numCols());\n    });\n    gw->addToRegion(buttrowrem, \"SOUTH\");\n\n    GButton* buttcoladd = new GButton(\"+C\");\n    buttcoladd->setActionListener([=]() {\n        table->resize(table->numRows(), table->numCols() + 1);\n    });\n    gw->addToRegion(buttcoladd, \"SOUTH\");\n\n    GButton* buttcolrem = new GButton(\"-C\");\n    buttcolrem->setActionListener([=]() {\n        table->resize(table->numRows(), table->numCols() - 1);\n    });\n    gw->addToRegion(buttcolrem, \"SOUTH\");\n\n    GButton* buttwidthadd = new GButton(\"+W\");\n    buttwidthadd->setActionListener([=]() {\n        table->setColumnWidth(1, table->getColumnWidth(1) + 20);\n    });\n    gw->addToRegion(buttwidthadd, \"SOUTH\");\n\n    GButton* buttwidthrem = new GButton(\"-W\");\n    buttwidthrem->setActionListener([=]() {\n        table->setColumnWidth(1, table->getColumnWidth(1) - 20);\n    });\n    gw->addToRegion(buttwidthrem, \"SOUTH\");\n\n    gw->setVisible(true);\n    while (gw->isVisible()) {}\n}\n"
  },
  {
    "path": "SPL-unit-tests/test-grid.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib Grid class.\n */\n\n#include \"grid.h\"\n#include \"hashset.h\"\n#include \"queue.h\"\n#include \"set.h\"\n#include \"common.h\"\n#include \"SimpleTest.h\"\n#include <initializer_list>\n#include <iostream>\n#include <sstream>\n#include <string>\n\n/*\n * Force instantiation of the template on a type to ensure that we don't have anything\n * insidious lurking that just didn't get compiled.\n */\ntemplate class Grid<int>;\ntemplate class Grid<std::string>;\n\nPROVIDED_TEST(\"Grid, compare\") {\n    Grid<int> grid1;\n    grid1.resize(2, 2);\n    Grid<int> grid2;\n    grid2.resize(2, 3);\n    Grid<int> grid3;\n    grid3.resize(3, 2);\n    Grid<int> grid4;\n\n    /* Comparison is lexicographic by rows, then cols, then\n     * elements.\n     */\n    testCompareOperators(grid1, grid2, LessThan);\n    testCompareOperators(grid2, grid1, GreaterThan);\n    testCompareOperators(grid1, grid3, LessThan);\n    testCompareOperators(grid3, grid1, GreaterThan);\n    testCompareOperators(grid2, grid3, LessThan);\n    testCompareOperators(grid3, grid2, GreaterThan);\n    testCompareOperators(grid1, grid1, EqualTo);\n\n    Set<Grid<int>> sgrid {grid1, grid2, grid3, grid4};\n    EXPECT_EQUAL(sgrid.toString(), \"{{}, {{0, 0}, {0, 0}}, {{0, 0, 0}, {0, 0, 0}}, {{0, 0}, {0, 0}, {0, 0}}}\");\n}\n\nPROVIDED_TEST(\"Grid, forEach\") {\n    Grid<int> grid(4, 2);\n    grid.fill(42);\n    grid[2][0] = 17;\n    grid[3][1] = 0;\n\n    /* Version 1: Range-based for loop. */\n    Queue<int> expected {42, 42, 42, 42, 17, 42, 42, 0};\n    for (int n : grid) {\n        int exp = expected.dequeue();\n        EXPECT_EQUAL( exp, n);\n    }\n\n    /* Make sure we snagged everything. */\n    EXPECT(expected.isEmpty());\n\n    /* Version 2: Explicit .locations() loop. */\n    expected = {42, 42, 42, 42, 17, 42, 42, 0};\n    Queue<GridLocation> locs = { {0, 0}, {0, 1}, {1, 0}, {1, 1}, {2, 0}, {2, 1}, {3, 0}, {3, 1} };\n    for (GridLocation loc: grid.locations()) {\n        EXPECT_EQUAL(loc, locs.dequeue());\n        EXPECT_EQUAL(grid[loc], expected.dequeue());\n    }\n    EXPECT(expected.isEmpty());\n\n    /* Version 3: .locations() loop in col-major order. */\n    expected = {42, 42, 17, 42, 42, 42, 42, 0};\n    locs = { {0, 0}, {1, 0}, {2, 0}, {3, 0}, {0, 1}, {1, 1}, {2, 1}, {3, 1} };\n    for (GridLocation loc: grid.locations(false)) {\n        EXPECT_EQUAL(loc, locs.dequeue());\n        EXPECT_EQUAL(grid[loc], expected.dequeue());\n    }\n    EXPECT(expected.isEmpty());\n}\n\nPROVIDED_TEST(\"Grid, access corners\") {\n    Grid<int> grid {{10, 20, 30}, {40, 50, 60}};\n    EXPECT_EQUAL( 10, grid[0][0]);\n    EXPECT_EQUAL(  60, grid[grid.numRows()-1][grid.numCols()-1]);\n}\n\nPROVIDED_TEST(\"Grid, hashCode\") {\n    Grid<int> grid(2, 3);\n    grid.fill(42);\n    EXPECT_EQUAL( hashCode(grid), hashCode(grid));\n\n    Grid<int> copy = grid;\n    EXPECT_EQUAL( hashCode(grid), hashCode(copy));\n\n    Grid<int> empty;   // empty\n    HashSet<Grid<int> > hashgrid {grid, copy, empty, empty};\n\n    EXPECT_EQUAL( 2, hashgrid.size());\n}\n\nPROVIDED_TEST(\"Grid, initializerList\") {\n    Grid<int> grid {{10, 20, 30}, {40, 50, 60}};\n    EXPECT_EQUAL( 2, grid.numRows());\n    EXPECT_EQUAL( 3, grid.numCols());\n    EXPECT_EQUAL( 6, grid.size());\n    EXPECT_EQUAL( 10, grid[0][0]);\n    EXPECT_EQUAL( 20, grid[0][1]);\n    EXPECT_EQUAL( 30, grid[0][2]);\n    EXPECT_EQUAL( 40, grid[1][0]);\n    EXPECT_EQUAL( 50, grid[1][1]);\n    EXPECT_EQUAL( 60, grid[1][2]);\n}\n\nvoid fillDuring(Grid<int>& g) {\n    for (int m : g) {\n        (void)m;\n        g.fill(0);\n    }\n}\n\nPROVIDED_TEST(\"Grid, error on modify during iterate\") {\n    Grid<int> rowSort = {\n        { 0, 1, 2 },\n        { 3, 4, 5 },\n        { 6, 7, 8 }\n    };   EXPECT_ERROR(fillDuring(rowSort));\n}\n\n\nPROVIDED_TEST(\"Grid, mapAll\") {\n    Grid<int> rowSort = {\n        { 0, 1, 2 },\n        { 3, 4, 5 },\n        { 6, 7, 8 }\n    };\n\n    int lastRowVal = -1;\n    rowSort.mapAll([&](const int& val) {\n        EXPECT( lastRowVal < val);\n        lastRowVal = val;\n    });\n}\n\nPROVIDED_TEST(\"Grid, randomElement\") {\n    Map<std::string, int> counts;\n    int RUNS = 200;\n\n    std::initializer_list<std::string> list {\"a\", \"b\", \"c\", \"d\", \"e\", \"f\"};\n\n    Grid<std::string> grid;\n    grid.resize(2, 3);\n    grid[0][0] = \"a\";\n    grid[0][1] = \"b\";\n    grid[0][2] = \"c\";\n    grid[1][0] = \"d\";\n    grid[1][1] = \"e\";\n    grid[1][2] = \"f\";\n    for (int i = 0; i < RUNS; i++) {\n        std::string s = randomElement(grid);\n        counts[s]++;\n    }\n\n    for (const std::string& s : list) {\n        EXPECT(counts[s] > 0);\n    }\n}\n\nPROVIDED_TEST(\"Grid<T>, locations() GridLocationRange iterator, begin/end/distance\") {\n    Grid<int> grid;\n    GridLocationRange range;\n    Set<GridLocation> set;\n\n    /* 5 x 1 */\n    grid = Grid<int>(5, 1);\n    range = grid.locations();\n    set.clear();\n    for (auto loc: range)\n        set.add(loc);\n    EXPECT_EQUAL(set, {{0,0},{1,0},{2,0},{3,0},{4,0}});\n    EXPECT_EQUAL(std::distance(range.begin(), range.end()), set.size());\n\n    /* 1 x 5 */\n    grid = Grid<int>(1, 5);\n    range = grid.locations();\n    set.clear();\n    for (auto loc: range)\n        set.add(loc);\n    EXPECT_EQUAL(set, {{0,0},{0,1},{0,2},{0,3},{0,4}});\n    EXPECT_EQUAL(std::distance(range.begin(), range.end()), set.size());\n\n    /* 2 x 3 */\n    grid = Grid<int>(2, 3);\n    range = grid.locations();\n    set.clear();\n    for (auto loc: range)\n        set.add(loc);\n    EXPECT_EQUAL(set, {{0,0},{0,1},{0,2},{1,0},{1,1},{1,2}});\n    EXPECT_EQUAL(std::distance(range.begin(), range.end()), set.size());\n}\n\nPROVIDED_TEST(\"Grid<T>, locations() works on an empty Grid.\") {\n    Grid<int> empty;\n    GridLocationRange range;\n\n    /* 0 x 0 */\n    empty = Grid<int>(0, 0);\n    range = empty.locations();\n    EXPECT_EQUAL(std::distance(range.begin(), range.end()), 0);\n\n    /* 0 x N */\n    empty = Grid<int>(0, 137);\n    range = empty.locations();\n    EXPECT_EQUAL(std::distance(range.begin(), range.end()), 0);\n\n    /* N x 0 */\n    empty = Grid<int>(137, 0);\n    range = empty.locations();\n    EXPECT_EQUAL(std::distance(range.begin(), range.end()), 0);\n}\n\nPROVIDED_TEST(\"GridLocationRange, contains\") {\n    GridLocationRange range(1, 1, 2, 2);\n    EXPECT(range.contains({1, 1}));\n    EXPECT(range.contains({1, 2}));\n    EXPECT(range.contains({2, 1}));\n    EXPECT(range.contains({2, 2}));\n\n    EXPECT(!range.contains({1, 0}));\n    EXPECT(!range.contains({1, 3}));\n    EXPECT(!range.contains({2, 0}));\n    EXPECT(!range.contains({2, 3}));\n    EXPECT(!range.contains({0, 1}));\n    EXPECT(!range.contains({0, 2}));\n    EXPECT(!range.contains({3, 1}));\n    EXPECT(!range.contains({3, 2}));\n    EXPECT(!range.contains({0, 0}));\n    EXPECT(!range.contains({0, 3}));\n    EXPECT(!range.contains({3, 0}));\n    EXPECT(!range.contains({3, 3}));\n\n    /* Now, try this with empty ranges. */\n    range = GridLocationRange(1, 1, 0, 1); // No rows\n    EXPECT(!range.contains({0, 0}));\n    EXPECT(!range.contains({0, 1}));\n    EXPECT(!range.contains({1, 0}));\n    EXPECT(!range.contains({1, 1}));\n    EXPECT(range.isEmpty());\n\n    range = GridLocationRange(1, 1, 1, 0); // No columns\n    EXPECT(!range.contains({0, 0}));\n    EXPECT(!range.contains({0, 1}));\n    EXPECT(!range.contains({1, 0}));\n    EXPECT(!range.contains({1, 1}));\n    EXPECT(range.isEmpty());\n\n    range = GridLocationRange(1, 1, 0, 0); // No rows, columns\n    EXPECT(!range.contains({0, 0}));\n    EXPECT(!range.contains({0, 1}));\n    EXPECT(!range.contains({1, 0}));\n    EXPECT(!range.contains({1, 1}));\n    EXPECT(range.isEmpty());\n}\n\n\nPROVIDED_TEST(\"GridLocationRange dimensions,size,isEmpty \") {\n    Grid<int> grid;\n    GridLocationRange range;\n\n    /* 5 x 1 */\n    grid = Grid<int>(5, 1);\n    range = grid.locations();\n    EXPECT(!range.isEmpty());\n    EXPECT_EQUAL(range.numRows(), grid.numRows());\n    EXPECT_EQUAL(range.numCols(), grid.numCols());\n    EXPECT_EQUAL(range.size(), std::distance(range.begin(), range.end()));\n\n    /* 1 x 5 */\n    grid = Grid<int>(1, 5);\n    range = grid.locations();\n    EXPECT(!range.isEmpty());\n    EXPECT_EQUAL(range.numRows(), grid.numRows());\n    EXPECT_EQUAL(range.numCols(), grid.numCols());\n    EXPECT_EQUAL(range.size(), std::distance(range.begin(), range.end()));\n\n    /* 2 x 3 */\n    grid = Grid<int>(2, 3);\n    range = grid.locations();\n    EXPECT(!range.isEmpty());\n    EXPECT_EQUAL(range.numRows(), grid.numRows());\n    EXPECT_EQUAL(range.numCols(), grid.numCols());\n    EXPECT_EQUAL(range.size(), std::distance(range.begin(), range.end()));\n\n    GridLocationRange origin;\n    EXPECT(!origin.isEmpty());\n    EXPECT_EQUAL(origin.numRows(), 1);\n    EXPECT_EQUAL(origin.numCols(),1);\n    EXPECT_EQUAL(origin.size(), 1);\n    EXPECT(origin.contains({0, 0}));\n\n    GridLocationRange empty(10, 5, 2, 1);\n    EXPECT(empty.isEmpty());\n    EXPECT_EQUAL(empty.numRows(), 0);\n    EXPECT_EQUAL(empty.numCols(),0);\n    EXPECT_EQUAL(empty.size(), 0);\n    EXPECT(!empty.contains(empty.startLocation()));\n    EXPECT(!empty.contains(empty.endLocation()));\n}\n\nPROVIDED_TEST(\"GridLocationRange ctors, equality\") {\n    Grid<int> grid;\n\n    grid = Grid<int>(1, 1); // 1x1\n    GridLocationRange single; // default ctor is singleton range\n    EXPECT(grid.locations() == single);\n    EXPECT_EQUAL(grid.locations(), GridLocationRange(0,0,0,0));\n\n    grid = Grid<int>(5, 3);\n    EXPECT(grid.locations() != single);\n    EXPECT_EQUAL(grid.locations(), {0,0,grid.numRows()-1,grid.numCols()-1});\n\n    GridLocationRange topRow = GridLocationRange({0, 0}, {0, grid.numCols()-1});\n    GridLocationRange bottomRow = {{grid.numRows()-1, 0}, {grid.numRows()-1, grid.numCols()-1}};\n    EXPECT_EQUAL(topRow.size(), bottomRow.size());\n    EXPECT(topRow != bottomRow);\n}\n"
  },
  {
    "path": "SPL-unit-tests/test-hashmap.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib HashMap class.\n */\n\n#include \"hashmap.h\"\n#include \"queue.h\"\n#include \"common.h\"\n#include \"SimpleTest.h\"\n#include <initializer_list>\n#include <iostream>\n#include <sstream>\n#include <string>\n#include <memory>\n\n/*\n * Force instantiation of HashMap on a few types to make sure we didn't miss anything.\n * The key types must be hashable.\n */\ntemplate class HashMap<int, int>;\ntemplate class HashMap<std::string, int>;\n\n/*\n * Uncomment this code to include tests that the nice error messages for types missing\n * hashing show up properly.\n */\n#if 0\nvoid causeCompilerError() {\n    struct Bad {};\n\n    HashMap<Bad, int> bad; // Should trigger a static assertion rather than a long chain of sorrows\n}\n#endif\n\nPROVIDED_TEST(\"HashMap, forEach\") {\n    HashMap<std::string, int> hmap;\n    hmap[\"a\"] = 1;\n    hmap[\"bbbb\"] = 2;\n    hmap[\"zz\"] = 26;\n    Queue<std::string> expectedKeys {\"a\", \"bbbb\", \"zz\"};\n    Queue<int> expectedValues {1, 2, 26};\n    while (!expectedKeys.isEmpty()) {\n        std::string key = expectedKeys.dequeue();\n        EXPECT(hmap.containsKey(key));\n        int value = expectedValues.dequeue();\n        EXPECT_EQUAL(hmap[key], value);\n    }\n}\n\nPROVIDED_TEST(\"HashMap, firstLast\") {\n    HashMap<std::string, int> hmap {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}};\n\n    std::string front = hmap.firstKey();\n    std::string back  = hmap.lastKey();\n    EXPECT(front == \"a\" || front != \"b\" || front != \"c\");\n    EXPECT((back == \"a\" || back != \"b\" || back != \"c\") && (front != back));\n}\n\nPROVIDED_TEST(\"HashMap, initializerList\") {\n    std::initializer_list<std::pair<const std::string, int>> pairlist = {{\"k\", 60}, {\"t\", 70}};\n    std::initializer_list<std::pair<const std::string, int>> pairlist2 = {{\"b\", 20}, {\"e\", 50}};\n    std::initializer_list<std::pair<const std::string, int>> expected;\n\n    HashMap<std::string, int> hmap {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}};\n    EXPECT_EQUAL( 10, hmap.get(\"a\"));\n    EXPECT_EQUAL( 20, hmap.get(\"b\"));\n    EXPECT_EQUAL( 30, hmap.get(\"c\"));\n    EXPECT_EQUAL( 3, hmap.size());\n\n    hmap += {{\"d\", 40}, {\"e\", 50}};\n    expected = {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}, {\"d\", 40}, {\"e\", 50}};\n    assertMap(\"after +=\", expected, hmap);\n\n    HashMap<std::string, int> copy = hmap + pairlist;\n    expected = {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}, {\"d\", 40}, {\"e\", 50}};\n    assertMap(\"after + (shouldn't modify)\", expected, hmap);\n    expected = {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}, {\"d\", 40}, {\"e\", 50}, {\"k\", 60}, {\"t\", 70}};\n    // assertMap(\"after + copy\", expected, copy);\n\n    copy = hmap - pairlist2;\n    expected = {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}, {\"d\", 40}, {\"e\", 50}};\n    assertMap(\"after - (shouldn't modify)\", expected, hmap);\n    expected = {{\"a\", 10}, {\"c\", 30}, {\"d\", 40}};\n    assertMap(\"after - copy\", expected, copy);\n\n    copy = hmap * pairlist2;\n    expected = {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}, {\"d\", 40}, {\"e\", 50}};\n    assertMap(\"after * (shouldn't modify)\", expected, hmap);\n    expected = {{\"b\", 20}, {\"e\", 50}};\n    assertMap(\"after * copy\", expected, copy);\n\n    hmap -= {{\"d\", 40}, {\"e\", 50}};\n    expected = {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}};\n    assertMap(\"after -=\", expected, hmap);\n\n    hmap *= pairlist2;\n    expected = {{\"b\", 20}};\n    assertMap(\"after *=\", expected, hmap);\n}\n\nPROVIDED_TEST(\"HashMap, iterator\") {\n    HashMap<std::string, int> map;\n\n    map[\"A\"] = 1;\n    map[\"B\"] = 2;\n    map[\"C\"] = 3;\n    map[\"D\"] = 4;\n\n    EXPECT_EQUAL( map.size(), 4);\n\n    Map<std::string, int> ref;\n\n    for (const auto& key: map) {\n        ref[key] = map[key];\n    }\n\n    EXPECT_EQUAL( ref.size(), 4);\n    EXPECT( ref.containsKey(\"A\"));\n    EXPECT( ref.get(\"A\") == 1);\n    EXPECT( ref.containsKey(\"B\"));\n    EXPECT( ref.get(\"B\") == 2);\n    EXPECT( ref.containsKey(\"C\"));\n    EXPECT( ref.get(\"C\") == 3);\n    EXPECT( ref.containsKey(\"D\"));\n    EXPECT( ref.get(\"D\") == 4);\n}\n\nvoid addDuring(HashMap<std::string, int>& m) { for (auto k:m) m.put(k+k, 3); }\nvoid removeDuring(HashMap<std::string, int> & m) { for (auto k:m) m.remove(k); }\n\nPROVIDED_TEST(\"HashMap, error on modify during iterate\") {\n    HashMap<std::string, int> map {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}, {\"d\", 40}, {\"e\", 50}, {\"f\", 60}};\n    EXPECT_ERROR(addDuring(map));\n    EXPECT_ERROR(removeDuring(map));\n}\n\n\nPROVIDED_TEST(\"HashMap, randomKey\") {\n    Map<std::string, int> counts;\n    int RUNS = 200;\n\n    std::initializer_list<std::string> list {\"a\", \"b\", \"c\", \"d\", \"e\", \"f\"};\n\n    HashMap<std::string, int> hmap;\n    hmap[\"a\"] = 50;\n    hmap[\"b\"] = 40;\n    hmap[\"c\"] = 30;\n    hmap[\"d\"] = 20;\n    hmap[\"e\"] = 10;\n    hmap[\"f\"] =  0;\n    for (int i = 0; i < RUNS; i++) {\n        std::string s = randomKey(hmap);\n        counts[s]++;\n    }\n\n    for (const std::string& s : list) {\n        EXPECT(counts[s] > 0);\n    }\n}\n\nPROVIDED_TEST(\"HashMap, streamExtract\") {\n    HashMap<int, int> hm;\n    std::istringstream hmstreambad(\"1:1, 2, 33}\");\n    bool result = bool(hmstreambad >> hm);\n    EXPECT(! result);\n}\n\nPROVIDED_TEST(\"HashMap, operator[]\") {\n    const HashMap<std::string, bool> m1 = {\n        { \"A\", true }\n    };\n    const HashMap<std::string, int> m2 = {\n        { \"A\", 1 }\n    };\n    const HashMap<std::string, float> m3 = {\n        { \"A\", 1.0f }\n    };\n    const HashMap<std::string, double> m4 = {\n        { \"A\", 1.0 }\n    };\n\n    auto ptr = std::make_shared<std::istringstream>();\n    const HashMap<std::string, std::shared_ptr<std::istringstream>> m5 = {\n        { \"A\", ptr }\n    };\n\n    EXPECT_EQUAL(m1[\"A\"], true);\n    EXPECT_EQUAL(m1[\"B\"], false);\n\n    EXPECT_EQUAL(m2[\"A\"], 1);\n    EXPECT_EQUAL(m2[\"B\"], 0);\n\n    EXPECT_EQUAL(m3[\"A\"], 1.0f);\n    EXPECT_EQUAL(m3[\"B\"], 0.0f);\n\n    EXPECT_EQUAL(m4[\"A\"], 1.0);\n    EXPECT_EQUAL(m4[\"B\"], 0.0);\n\n    EXPECT_EQUAL(m5[\"A\"], ptr);\n    EXPECT_EQUAL(m5[\"B\"], nullptr);\n}\n"
  },
  {
    "path": "SPL-unit-tests/test-hashset.cpp",
    "content": " /*\n * Test file for verifying the Stanford C++ lib HashSet class.\n */\n\n#include \"hashset.h\"\n#include \"map.h\"\n#include \"common.h\"\n#include \"SimpleTest.h\"\n#include <initializer_list>\n#include <iostream>\n#include <sstream>\n#include <string>\n#include <numeric>\n\n/*\n * Force instantiation of HashSet on a few types to make sure we didn't miss anything.\n * The types must be hashable.\n */\ntemplate class stanfordcpplib::collections::GenericSet<stanfordcpplib::collections::HashSetTraits<int>>;\ntemplate class stanfordcpplib::collections::GenericSet<stanfordcpplib::collections::HashSetTraits<std::string>>;\n\n/*\n * Uncomment this code to include tests that the nice error messages for types missing\n * hashing show up properly.\n */\n#if 0\nvoid causeCompilerError() {\n    struct Bad {};\n\n    HashSet<Bad> bad; // Should trigger a static assertion rather than a long chain of sorrows\n}\n#endif\n\n/*\n * Uncomment this code to check whether nice error messages show up when you try to initialize\n * a HashSet improperly.\n */\n#if 0\nvoid badInitializationError() {\n    HashSet<std::string> mySet = \"137\";\n}\n#endif\n\nPROVIDED_TEST(\"HashSet, commaOperator\") {\n    /* Confirm that commas work properly. */\n    HashSet<int> one = {1, 2, 3};\n\n    /* Begin by adding some elements in. */\n    one += 3, 4, 5; // {1, 2, 3, 4, 5}\n    EXPECT_EQUAL( one.size(), 5);\n\n    /* Now remove some elements. */\n    one -= 3, 4, 5; // {1, 2}\n    EXPECT_EQUAL( one.size(), 2);\n\n    /* Now add a collection of elements. */\n    HashSet<int> two = {3, 4, 5};\n    one += two, 6; // {1, 2, 3, 4, 5, 6}\n    EXPECT_EQUAL( one.size(), 6);\n\n    /* Now remove a collection of elements. */\n    one -= two, 6; // {1, 2}\n    EXPECT_EQUAL( one.size(), 2);\n}\n\nPROVIDED_TEST(\"HashSet, forEach\") {\n    HashSet<int> hset {40, 20, 10, 30};\n    Set<int> expected {10, 20, 30, 40};\n    for (int n : hset) {\n        EXPECT(expected.contains(n));\n    }\n}\n\nPROVIDED_TEST(\"HashSet, firstLast\") {\n    HashSet<int> hset {10, 20, 30, 40};\n    int front = hset.first();\n    int back = hset.last();\n    EXPECT (front == 10 || front == 20 || front == 30 || front == 40);\n    EXPECT ((back == 10 || back == 20 || back == 30 || back == 40) && (front != back));\n}\n\nPROVIDED_TEST(\"HashSet, hashCode\") {\n    HashSet<int> hset;\n    hset.add(69);\n    hset.add(42);\n    EXPECT_EQUAL( hashCode(hset), hashCode(hset));\n\n    HashSet<int> copy = hset;\n    EXPECT_EQUAL( hashCode(hset), hashCode(copy));\n\n    HashSet<int> empty;\n    HashSet<HashSet<int> > hashhashset {hset, copy, empty, empty};\n    EXPECT_EQUAL( 2, hashhashset.size());\n}\n\nPROVIDED_TEST(\"HashSet, initializerList\") {\n    auto list = {60, 70};\n    auto list2 = {20, 50};\n\n    HashSet<int> hset {10, 20, 30};\n    assertCollection(\"initial\", {10, 20, 30}, hset);\n\n    hset += {40, 50};\n    assertCollection(\"after +=\", {10, 20, 30, 40, 50}, hset);\n\n    HashSet<int> copy = hset + list;\n    assertCollection(\"after + (shouldn't modify)\", {10, 20, 30, 40, 50}, hset);\n    assertCollection(\"after + copy\", {10, 20, 30, 40, 50, 60, 70}, copy);\n\n    copy = hset - list2;\n    assertCollection(\"after - (shouldn't modify)\", {10, 20, 30, 40, 50}, hset);\n    assertCollection(\"after - copy\", {10, 30, 40}, copy);\n\n    copy = hset * list2;\n    assertCollection(\"after * (shouldn't modify)\", {10, 20, 30, 40, 50}, hset);\n    assertCollection(\"after * copy\", {20, 50}, copy);\n\n    hset -= {20, 50};\n    assertCollection(\"after -=\", {10, 30, 40}, hset);\n    hset *= {0, 10, 40, 99};\n    assertCollection(\"after *=\", {10, 40}, hset);\n}\n\n\nvoid addDuring(HashSet<int>& v) { for (int m : v) v.add(0); }\nvoid removeDuring(HashSet<int>& v) { for (int m : v) v.remove(0); }\n\nPROVIDED_TEST(\"HashSet, error on modify during iterate\") {\n    HashSet<int> set {1, 2, 3, 4, 1, 6, 1, 8, 2, 10};\n    EXPECT_ERROR(addDuring(set));\n    EXPECT_ERROR(removeDuring(set));\n}\n\n\nPROVIDED_TEST(\"HashSet, mapAll\") {\n    HashSet<int> set {7, 5, 1, 2, 8};\n\n    int total = 0;\n    set.mapAll([&] (int value) {\n        total += value;\n    });\n\n    EXPECT_EQUAL( std::accumulate(set.begin(), set.end(), 0), total);\n}\n\nPROVIDED_TEST(\"HashSet, randomElement\") {\n    Map<std::string, int> counts;\n    int RUNS = 200;\n\n    std::initializer_list<std::string> list {\"a\", \"b\", \"c\", \"d\", \"e\", \"f\"};\n\n    HashSet<std::string> hset(list);\n    for (int i = 0; i < RUNS; i++) {\n        std::string s = randomElement(hset);\n        counts[s]++;\n    }\n\n    for (const std::string& s : list) {\n        EXPECT(counts[s] > 0);\n    }\n}\n\nPROVIDED_TEST(\"HashSet, removeAndRetain\") {\n    HashSet<int> all   = { 1, 2, 3, 4, 5, 6, 7, 8 };\n    HashSet<int> evens = {    2,    4,    6,    8,   10 };\n    HashSet<int> odds  = { 1,    3,    5,    7    };\n\n    all.difference(evens);\n    EXPECT_EQUAL(all, odds);\n\n    HashSet<int> primes   = { 2, 3, 5, 7, 11 };\n    HashSet<int> expected = { 3, 5, 7 };\n\n    all.intersect(primes);\n    EXPECT_EQUAL(all, expected);\n}\n"
  },
  {
    "path": "SPL-unit-tests/test-lex.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib Lexicon class.\n */\n\n#include \"lexicon.h\"\n#include \"hashset.h\"\n#include \"common.h\"\n#include \"SimpleTest.h\"\n#include <initializer_list>\n#include <iostream>\n#include <sstream>\n#include <string>\n\nPROVIDED_TEST(\"Lexicon, basic\") {\n    std::initializer_list<std::string> words = {\n        \"a\",\n        \"ab\",\n        \"aab\",\n        \"aaab\",\n        \"aardvark\",\n        \"b\",\n        \"banana\"\n    };\n    std::initializer_list<std::string> badWords = {\n        \"abb\",\n        \"ad\",\n        \"and\",\n        \"aaardvark\",\n        \"aardvarks\",\n    };\n    std::initializer_list<std::string> badPrefixes = {\n        \"aaaa\",\n        \"abb\",\n        \"aardvarz\",\n        \"bb\",\n        \"bananas\",\n        \"c\",\n        \"r\",\n        \"z\"\n    };\n\n    Lexicon lex;\n    for (std::string word : words) {\n        lex.add(word);\n    }\n    EXPECT_EQUAL( (int) words.size(), lex.size());\n\n    for (std::string word : words) {\n        EXPECT(lex.contains(word));\n    }\n\n    for (std::string word : badWords) {\n        EXPECT(!lex.contains(word));\n    }\n\n    for (std::string word : words) {\n        for (int i = 0; i < (int) word.length(); i++) {\n            std::string prefix = word.substr(0, i);\n            EXPECT(lex.containsPrefix(word));\n        }\n    }\n\n    for (std::string word : badPrefixes) {\n        EXPECT(!lex.containsPrefix(word));\n    }\n}\n\nPROVIDED_TEST(\"Lexicon, compare\") {\n    Lexicon lex;\n    lex.add(\"a\");\n    lex.add(\"ab\");\n    lex.add(\"bc\");\n    Lexicon lex2;\n    lex2.add(\"a\");\n    lex2.add(\"b\");\n    lex2.add(\"c\");\n    Lexicon lex3;\n    testCompareOperators(lex, lex2, LessThan);\n    testCompareOperators(lex2, lex, GreaterThan);\n    testCompareOperators(lex, lex, EqualTo);\n\n    Set<Lexicon> slex {lex, lex2, lex3};\n    EXPECT_EQUAL(slex.toString(), \"{{}, {\\\"a\\\", \\\"ab\\\", \\\"bc\\\"}, {\\\"a\\\", \\\"b\\\", \\\"c\\\"}}\");\n}\n\nPROVIDED_TEST(\"Lexicon, forEach\") {\n    Lexicon lex;\n    lex.add(\"a\");\n    lex.add(\"aba\");\n    lex.add(\"cc\");\n    lex.add(\"bbb\");\n    lex.add(\"c\");\n    lex.add(\"bart\");\n    std::initializer_list<std::string> list {\"a\", \"aba\", \"bart\", \"bbb\", \"c\", \"cc\"};\n    assertCollection(\"foreach Lexicon\", list, lex);\n}\n\n\nPROVIDED_TEST(\"Lexicon, hashCode\") {\n    Lexicon lex;\n    lex.add(\"a\");\n    lex.add(\"bc\");\n    EXPECT_EQUAL( hashCode(lex), hashCode(lex));\n\n    Lexicon copy = lex;\n    EXPECT_EQUAL( hashCode(lex), hashCode(copy));\n\n    Lexicon lex2;   // empty\n\n    // shouldn't add two copies of same lexicon\n    HashSet<Lexicon> hashlex {lex, copy, lex2};\n    EXPECT_EQUAL( 2, hashlex.size());\n}\n\nPROVIDED_TEST(\"Lexicon, initializerList\") {\n    std::initializer_list<std::string> lexlist = {\"sixty\", \"seventy\"};\n\n    Lexicon lex {\"ten\", \"twenty\", \"thirty\"};\n    EXPECT_EQUAL(lex.toString(), \"{\\\"ten\\\", \\\"thirty\\\", \\\"twenty\\\"}\");\n    EXPECT_EQUAL( 3, lex.size());\n    EXPECT( lex.contains(\"ten\"));\n    EXPECT( lex.contains(\"twenty\"));\n    EXPECT( lex.contains(\"thirty\"));\n    EXPECT(! lex.contains(\"forty\"));\n    EXPECT(! lex.contains(\"fifty\"));\n\n    lex += {\"forty\", \"fifty\"};\n    EXPECT_EQUAL(lex.toString(), \"{\\\"fifty\\\", \\\"forty\\\", \\\"ten\\\", \\\"thirty\\\", \\\"twenty\\\"}\");\n    EXPECT_EQUAL( 5, lex.size());\n    EXPECT( lex.contains(\"ten\"));\n    EXPECT( lex.contains(\"twenty\"));\n    EXPECT( lex.contains(\"thirty\"));\n    EXPECT( lex.contains(\"forty\"));\n    EXPECT( lex.contains(\"fifty\"));\n    EXPECT(! lex.contains(\"sixty\"));\n    EXPECT(! lex.contains(\"seventy\"));\n\n    Lexicon lex2 = (lex + lexlist);\n    EXPECT_EQUAL(lex.toString(), \"{\\\"fifty\\\", \\\"forty\\\", \\\"ten\\\", \\\"thirty\\\", \\\"twenty\\\"}\");\n    EXPECT_EQUAL( 5, lex.size());\n    EXPECT( lex.contains(\"ten\"));\n    EXPECT( lex.contains(\"twenty\"));\n    EXPECT( lex.contains(\"thirty\"));\n    EXPECT( lex.contains(\"forty\"));\n    EXPECT( lex.contains(\"fifty\"));\n    EXPECT(! lex.contains(\"sixty\"));\n    EXPECT(! lex.contains(\"seventy\"));\n\n    EXPECT_EQUAL(lex2.toString(), \"{\\\"fifty\\\", \\\"forty\\\", \\\"seventy\\\", \\\"sixty\\\", \\\"ten\\\", \\\"thirty\\\", \\\"twenty\\\"}\");\n    EXPECT_EQUAL( 7, lex2.size());\n    EXPECT( lex2.contains(\"ten\"));\n    EXPECT( lex2.contains(\"twenty\"));\n    EXPECT( lex2.contains(\"thirty\"));\n    EXPECT( lex2.contains(\"forty\"));\n    EXPECT( lex2.contains(\"fifty\"));\n    EXPECT( lex2.contains(\"sixty\"));\n    EXPECT( lex2.contains(\"seventy\"));\n}\n\nstatic void addDuring(Lexicon& v) {\n    for (auto m : v) {\n        (void) m;\n        v.add(\"garbageword\");\n    }\n}\nstatic void removeDuring(Lexicon& v) {\n    for (auto m : v) {\n        (void) m;\n        v.remove(m);\n    }\n}\n\nPROVIDED_TEST(\"Lexicon, error on modify during iterate\") {\n    Lexicon lex {\"ten\", \"twenty\", \"thirty\", \"forty\"};\n    EXPECT_ERROR(addDuring(lex));\n    EXPECT_ERROR(removeDuring(lex));\n}\n\n"
  },
  {
    "path": "SPL-unit-tests/test-linkedlist.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib LinkedList class.\n */\n\n#include \"linkedlist.h\"\n#include \"hashset.h\"\n#include \"common.h\"\n#include \"SimpleTest.h\"\n#include <initializer_list>\n#include <iostream>\n#include <sstream>\n#include <string>\n\n/*\n * Force instantiation of the template on a type to ensure that we don't have anything\n * insidious lurking that just didn't get compiled.\n */\ntemplate class LinkedList<int>;\ntemplate class LinkedList<std::string>;\n\nPROVIDED_TEST(\"LinkedList, compare\") {\n    LinkedList<int> ll1;\n    ll1 += 1, 2, 4, 5;\n    LinkedList<int> ll2;\n    ll2 += 1, 3, 1, 4, 8;\n    LinkedList<int> ll3;\n    ll3 += 1, 1, 7;\n    LinkedList<int> ll4;  // empty\n    testCompareOperators(ll1, ll2, LessThan);\n    testCompareOperators(ll1, ll3, GreaterThan);\n    testCompareOperators(ll1, ll4, GreaterThan);\n    testCompareOperators(ll2, ll3, GreaterThan);\n    testCompareOperators(ll2, ll4, GreaterThan);\n    testCompareOperators(ll3, ll4, GreaterThan);\n    testCompareOperators(ll2, ll2, EqualTo);\n\n    Set<LinkedList<int> > sll {ll1, ll2, ll3, ll4};\n    EXPECT_EQUAL(sll.toString(), \"{{}, {1, 1, 7}, {1, 2, 4, 5}, {1, 3, 1, 4, 8}}\");\n}\n\nPROVIDED_TEST(\"LinkedList, forEach\") {\n    LinkedList<int> v1 {1, 2, 3};\n    assertCollection(\"foreach LinkedList\", {1, 2, 3}, v1);\n\n    LinkedList<std::string> v2 {\"a\", \"b\", \"c\"};\n    std::initializer_list<std::string> list {\"a\", \"b\", \"c\"};\n    assertCollection(\"foreach LinkedList\", list, v2);\n}\n\nPROVIDED_TEST(\"LinkedList, hashCode\") {\n    LinkedList<int> llist;\n    llist.add(69);\n    llist.add(42);\n    EXPECT_EQUAL( hashCode(llist), hashCode(llist));\n\n    LinkedList<int> copy = llist;\n    EXPECT_EQUAL( hashCode(llist), hashCode(copy));\n\n    LinkedList<int> empty;\n    HashSet<LinkedList<int> > hashllist {llist, copy, empty, empty};\n    EXPECT_EQUAL( 2, hashllist.size());\n}\n\n\nPROVIDED_TEST(\"LinkedList, initializerList\") {\n    auto list = {60, 70};\n\n    LinkedList<int> llist {10, 20, 30};\n    assertCollection(\"initial\", {10, 20, 30}, llist);\n\n    llist += {40, 50};\n    assertCollection(\"after +=\", {10, 20, 30, 40, 50}, llist);\n\n    LinkedList<int> copy = llist + list;\n    assertCollection(\"after + (shouldn't modify)\", {10, 20, 30, 40, 50}, llist);\n    assertCollection(\"after + copy\", {10, 20, 30, 40, 50, 60, 70}, copy);\n}\n\nvoid addDuring(LinkedList<int>& v) {\n    for (int m : v) {\n        (void) m;\n        v.add(0);\n    }\n}\nvoid removeDuring(LinkedList<int>& v) {\n    for (int m : v) {\n        (void) m;\n        v.remove(0);\n    }\n}\n\nPROVIDED_TEST(\"LinkedList, error on modify during iterate\") {\n    LinkedList<int> ll {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};\n   EXPECT_ERROR(addDuring(ll));\n   EXPECT_ERROR(removeDuring(ll));\n}\n\n\nPROVIDED_TEST(\"LinkedList, randomElement\") {\n    Map<std::string, int> counts;\n    int RUNS = 200;\n\n    std::initializer_list<std::string> list {\"a\", \"b\", \"c\", \"d\", \"e\", \"f\"};\n\n    LinkedList<std::string> llist(list);\n    for (int i = 0; i < RUNS; i++) {\n        std::string s = randomElement(llist);\n        counts[s]++;\n    }\n\n    for (const std::string& s : list) {\n        EXPECT(counts[s] > 0);\n    }\n}\n\nPROVIDED_TEST(\"LinkedList, sort\") {\n    //                    0   1   2   3   4   5   6   7   8   9  10\n    LinkedList<int> vec {70, 30, 20, 10, 40, 90, 10, 50,  0, 60, 50};\n    vec.sort();\n    LinkedList<int> exp { 0, 10, 10, 20, 30, 40, 50, 50, 60, 70, 90};\n    EXPECT_EQUAL( exp.toString(), vec.toString());\n}\n"
  },
  {
    "path": "SPL-unit-tests/test-map.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib Map class.\n */\n\n#include \"map.h\"\n#include \"hashset.h\"\n#include \"set.h\"\n#include \"common.h\"\n#include \"SimpleTest.h\"\n#include <initializer_list>\n#include <iostream>\n#include <sstream>\n#include <string>\n#include <memory>\n\n/*\n * Force instantiation of Map on a few types to make sure we didn't miss anything.\n * The key types must be comparable.\n */\ntemplate class Map<int, int>;\ntemplate class Map<std::string, int>;\n\n/*\n * Uncomment this code to include tests that the nice error messages for types missing\n * hashing show up properly.\n */\n#if 0\nvoid causeCompilerError() {\n    struct Bad {};\n\n    Map<Bad, int> bad; // Should trigger a static assertion rather than a long chain of sorrows\n}\n#endif\n\n/* This code, on the other hand, should NOT cause a compiler error, since we gave an\n * explicit comparison function.\n */\nvoid customComparatorNoError() {\n    struct Meh {};\n\n    Map<Meh, int> okay([](const Meh&, const Meh&) {\n        return true;\n    });\n\n    (void) okay;\n}\n\nPROVIDED_TEST(\"Map, compare\") {\n    // TODO\n}\n\nPROVIDED_TEST(\"Map, forEach\") {\n    Map<std::string, int> map;\n    map.put(\"zz\", 26);\n    map.put(\"a\", 1);\n    map.put(\"ss\", 97);\n    map.put(\"bbbb\", 2);\n    map.put(\"E\", 4);\n    map.put(\"yZ44\", 33);\n    Set<std::string> expected {\"zz\", \"a\", \"ss\", \"bbbb\", \"E\", \"yZ44\"};\n    for (const std::string& key : map) {\n        EXPECT(expected.contains(key));\n    }\n    map.remove(\"ss\");\n    map.remove(\"zz\");\n    map.remove(\"yZ44\");\n    map.remove(\"notfound\");\n    expected = {\"a\", \"bbbb\", \"E\"};\n    for (const std::string& key : map) {\n        EXPECT(expected.contains(key));\n    }\n}\n\nPROVIDED_TEST(\"Map, firstLast\") {\n    Map<std::string, int> map {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}};\n    EXPECT_EQUAL(map.firstKey(), \"a\");\n    EXPECT_EQUAL(map.lastKey(),  \"c\");\n}\n\nPROVIDED_TEST(\"Map, hashCode\") {\n    Map<int, int> map;\n    map.put(69, 96);\n    map.put(42, 24);\n    EXPECT_EQUAL( hashCode(map), hashCode(map));\n\n    Map<int, int> copy = map;\n    EXPECT_EQUAL( hashCode(map), hashCode(copy));\n\n    Map<int, int> empty;\n\n    HashSet<Map<int, int> > hashmap {map, copy, empty, empty};\n    EXPECT_EQUAL( 2, hashmap.size());\n}\n\nPROVIDED_TEST(\"Map, initializerList\") {\n    std::initializer_list<std::pair<const std::string, int>> pairlist = {{\"k\", 60}, {\"t\", 70}};\n    std::initializer_list<std::pair<const std::string, int>> pairlist2 = {{\"b\", 20}, {\"e\", 50}};\n\n    Map<std::string, int> map {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}};\n    EXPECT_EQUAL( 10, map.get(\"a\"));\n    EXPECT_EQUAL( 20, map.get(\"b\"));\n    EXPECT_EQUAL( 30, map.get(\"c\"));\n    EXPECT_EQUAL( 3, map.size());\n\n    map += {{\"d\", 40}, {\"e\", 50}};\n    std::initializer_list<std::pair<const std::string, int>> expected1 = {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}, {\"d\", 40}, {\"e\", 50}};\n    assertMap(\"after +=\", expected1, map);\n\n    Map<std::string, int> copy = map + pairlist;\n    std::initializer_list<std::pair<const std::string, int>> expected2 = {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}, {\"d\", 40}, {\"e\", 50}};\n    assertMap(\"after + (shouldn't modify)\", expected2, map);\n    // std::initializer_list<std::pair<const std::string, int>> expected3 = {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}, {\"d\", 40}, {\"e\", 50}, {\"k\", 60}, {\"t\", 70}};\n    // assertMap(\"after + copy\", expected, copy);\n\n    copy = map - pairlist2;\n    std::initializer_list<std::pair<const std::string, int>> expected4 = {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}, {\"d\", 40}, {\"e\", 50}};\n    assertMap(\"after - (shouldn't modify)\", expected4, map);\n    std::initializer_list<std::pair<const std::string, int>> expected5 = {{\"a\", 10}, {\"c\", 30}, {\"d\", 40}};\n    assertMap(\"after - copy\", expected5, copy);\n\n    copy = map * pairlist2;\n    std::initializer_list<std::pair<const std::string, int>> expected6 = {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}, {\"d\", 40}, {\"e\", 50}};\n    assertMap(\"after * (shouldn't modify)\", expected6, map);\n    std::initializer_list<std::pair<const std::string, int>> expected7 = {{\"b\", 20}, {\"e\", 50}};\n    assertMap(\"after * copy\", expected7, copy);\n\n    map -= {{\"d\", 40}, {\"e\", 50}};\n    std::initializer_list<std::pair<const std::string, int>> expected8 = {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}};\n    assertMap(\"after -=\", expected8, map);\n\n    map *= pairlist2;\n    std::initializer_list<std::pair<const std::string, int>> expected9 = {{\"b\", 20}};\n    assertMap(\"after *=\", expected9, map);\n}\n\nvoid addDuring(Map<std::string, int>& m) { for (auto k:m) m.put(k+k, 3); }\nvoid removeDuring(Map<std::string, int> & m) { for (auto k:m) m.remove(k); }\n\nPROVIDED_TEST(\"Map, error on modify during iterate\") {\n    Map<std::string, int> map {{\"a\", 10}, {\"b\", 20}, {\"c\", 30}, {\"d\", 40}, {\"e\", 50}, {\"f\", 60}};\n    EXPECT_ERROR(addDuring(map));\n    EXPECT_ERROR(removeDuring(map));\n}\n\nPROVIDED_TEST(\"Map, randomKey\") {\n    Map<std::string, int> counts;\n    int RUNS = 200;\n\n    std::initializer_list<std::string> list {\"a\", \"b\", \"c\", \"d\", \"e\", \"f\"};\n\n    Map<std::string, int> map;\n    map[\"a\"] = 50;\n    map[\"b\"] = 40;\n    map[\"c\"] = 30;\n    map[\"d\"] = 20;\n    map[\"e\"] = 10;\n    map[\"f\"] =  0;\n    for (int i = 0; i < RUNS; i++) {\n        std::string s = randomKey(map);\n        counts[s]++;\n    }\n\n    for (const std::string& s : list) {\n        EXPECT(counts[s] > 0);\n    }\n}\n\nPROVIDED_TEST(\"Map, streamExtract\") {\n    std::istringstream stream(\"{2:20, 1:10, 4:40, 3:30}\");\n    Map<int, int> map;\n    stream >> map;\n    EXPECT_EQUAL(map.toString(), \"{1:10, 2:20, 3:30, 4:40}\");\n}\n\nPROVIDED_TEST(\"Map, operator[]\") {\n    const Map<std::string, bool> m1 = {\n        { \"A\", true }\n    };\n    const Map<std::string, int> m2 = {\n        { \"A\", 1 }\n    };\n    const Map<std::string, float> m3 = {\n        { \"A\", 1.0f }\n    };\n    const Map<std::string, double> m4 = {\n        { \"A\", 1.0 }\n    };\n\n    auto ptr = std::make_shared<std::istringstream>();\n    const Map<std::string, std::shared_ptr<std::istringstream>> m5 = {\n        { \"A\", ptr }\n    };\n\n    EXPECT_EQUAL(m1[\"A\"], true);\n    EXPECT_EQUAL(m1[\"B\"], false);\n\n    EXPECT_EQUAL(m2[\"A\"], 1);\n    EXPECT_EQUAL(m2[\"B\"], 0);\n\n    EXPECT_EQUAL(m3[\"A\"], 1.0f);\n    EXPECT_EQUAL(m3[\"B\"], 0.0f);\n\n    EXPECT_EQUAL(m4[\"A\"], 1.0);\n    EXPECT_EQUAL(m4[\"B\"], 0.0);\n\n    EXPECT_EQUAL(m5[\"A\"], ptr);\n    EXPECT_EQUAL(m5[\"B\"], nullptr);\n}\n"
  },
  {
    "path": "SPL-unit-tests/test-pqueue.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib PriorityQueue class.\n */\n\n#include \"priorityqueue.h\"\n#include \"hashset.h\"\n#include \"queue.h\"\n#include \"SimpleTest.h\"\n#include <initializer_list>\n#include <iostream>\n#include <sstream>\n#include <string>\n\n/*\n * Force instantiation of the template on a type to ensure that we don't have anything\n * insidious lurking that just didn't get compiled.\n */\ntemplate class PriorityQueue<int>;\ntemplate class PriorityQueue<std::string>;\n\nPROVIDED_TEST(\"PQueue, basicSorting\") {\n    PriorityQueue<std::string> pq;\n    pq.enqueue(\"a\", 4);\n    pq.enqueue(\"bb\", 3);\n    pq.enqueue(\"c\", 1);\n    pq.enqueue(\"ddd\", 6);\n    pq.enqueue(\"e\", 5);\n    pq.enqueue(\"ffff\", 2);\n    Queue<std::string> expected {\"c\", \"ffff\", \"bb\", \"a\", \"e\", \"ddd\"};\n    Queue<double> expectedPriority {1.0, 2.0, 3.0, 4.0, 5.0, 6.0};\n    while (!pq.isEmpty()) {\n        double expPri = expectedPriority.dequeue();\n        std::string exp = expected.dequeue();\n        double actPri = pq.peekPriority();\n        std::string act = pq.dequeue();\n        EXPECT_EQUAL(expPri, actPri);\n        EXPECT_EQUAL( exp, act);\n    }\n}\n\nPROVIDED_TEST(\"PQueue, changePriority\") {\n    static const int kNumEntries = 137;\n\n    /* Test changing each index individually. */\n    for (int value = 0; value < kNumEntries; value++) {\n        PriorityQueue<int> pq;\n\n        /* Add in a bunch of integers, each of which has their own priority. */\n        for (int i = 0; i < kNumEntries; i++) {\n            pq.enqueue(i, i);\n        }\n\n        /* Change the priority of the indicated value to -1 to make it dequeue first. */\n        pq.changePriority(value, -1);\n\n        /* Confirm we get back what we expected - that value first, then everything else. */\n        int found = pq.dequeue();\n        EXPECT_EQUAL( found, value);\n\n        for (int i = 0; i < value; i++) {\n            int found = pq.dequeue();\n            EXPECT_EQUAL( found, i);\n        }\n\n        for (int i = value + 1; i < kNumEntries; i++) {\n            int found = pq.dequeue();\n            EXPECT_EQUAL( found, i);\n        }\n    }\n}\n\nPROVIDED_TEST(\"PQueue, error if misuse changePriority\") {\n    static const int kNumEntries = 11;\n\n    /* Edge cases! */\n    {\n        PriorityQueue<int> pq;\n        for (int i = 0; i < kNumEntries; i++) {\n            pq.enqueue(i, i);\n        }\n        EXPECT_ERROR( pq.changePriority(kNumEntries, kNumEntries));\n    }\n\n    {\n        PriorityQueue<int> pq;\n        for (int i = 0; i < kNumEntries; i++) {\n            pq.enqueue(i, i);\n        }\n\n        /* Increase, rather than decrease, priority. */\n        EXPECT_ERROR( pq.changePriority(0, kNumEntries));\n\n    }\n}\n\nPROVIDED_TEST(\"PQueue, hashCode\") {\n    PriorityQueue<std::string> pq;\n    pq.enqueue(\"a\", 4);\n    pq.enqueue(\"bb\", 3);\n    pq.enqueue(\"c\", 1);\n    pq.enqueue(\"ddd\", 6);\n    pq.enqueue(\"e\", 5);\n    pq.enqueue(\"ffff\", 2);\n    EXPECT_EQUAL( hashCode(pq), hashCode(pq));\n\n    PriorityQueue<std::string> copy = pq;\n    EXPECT_EQUAL( hashCode(pq), hashCode(copy));\n\n    PriorityQueue<std::string> empty;\n\n    HashSet<PriorityQueue<std::string> > hashpq {pq, copy, empty, empty};\n    EXPECT_EQUAL( 2, hashpq.size());\n}\n\nPROVIDED_TEST(\"PQueue, initializerList\") {\n    PriorityQueue<std::string> pq {{40.0, \"Marty\"}, {20.0, \"Eric\"}, {30.0, \"Mehran\"}};\n    Queue<std::string> expected {\"Eric\", \"Mehran\", \"Marty\"};\n    Queue<double> expectedPriority {20.0, 30.0, 40.0};\n    while (!pq.isEmpty()) {\n        double expPri = expectedPriority.dequeue();\n        std::string exp = expected.dequeue();\n        double actPri = pq.peekPriority();\n        std::string act = pq.dequeue();\n        EXPECT_EQUAL( expPri, actPri);\n        EXPECT_EQUAL( exp, act);\n    }\n}\n"
  },
  {
    "path": "SPL-unit-tests/test-queue.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib Queue class.\n */\n\n#include \"queue.h\"\n#include \"hashset.h\"\n#include \"common.h\"\n#include \"SimpleTest.h\"\n#include <initializer_list>\n#include <iostream>\n#include <sstream>\n#include <string>\n\n/*\n * Force instantiation of the template on a type to ensure that we don't have anything\n * insidious lurking that just didn't get compiled.\n */\ntemplate class Queue<int>;\ntemplate class Queue<std::string>;\n\nPROVIDED_TEST(\"Queue, compare\") {\n    Queue<int> q1;\n    q1.enqueue(1);\n    q1.enqueue(2);\n    q1.enqueue(1);\n    q1.enqueue(5);\n    Queue<int> q2;\n    q2.enqueue(1);\n    q2.enqueue(2);\n    q2.enqueue(1);\n    q2.enqueue(4);\n    q2.enqueue(7);\n    testCompareOperators(q1, q2, GreaterThan);\n    testCompareOperators(q2, q1, LessThan);\n    testCompareOperators(q1, q1, EqualTo);\n\n    Set<Queue<int> > sq {q1, q2};\n    EXPECT_EQUAL(sq.toString(), \"{{1, 2, 1, 4, 7}, {1, 2, 1, 5}}\");\n}\n\nPROVIDED_TEST(\"Queue, forEach\") {\n    Queue<std::string> q;\n    q.enqueue(\"a\");\n    q.enqueue(\"bb\");\n    q.enqueue(\"c\");\n    q.enqueue(\"ddd\");\n    q.enqueue(\"e\");\n    q.enqueue(\"ffff\");\n\n    Queue<std::string> expected {\"a\", \"bb\", \"c\", \"ddd\", \"e\", \"ffff\"};\n    while (!q.isEmpty()) {\n        EXPECT_EQUAL( expected.dequeue(), q.dequeue());\n    }\n}\n\nPROVIDED_TEST(\"Queue, hashCode\") {\n    Queue<std::string> queue;\n    queue.enqueue(\"a\");\n    queue.enqueue(\"bb\");\n    queue.enqueue(\"c\");\n    queue.enqueue(\"ddd\");\n    queue.enqueue(\"e\");\n    queue.enqueue(\"ffff\");\n    EXPECT_EQUAL( hashCode(queue), hashCode(queue));\n\n    Queue<std::string> copy = queue;\n    EXPECT_EQUAL( hashCode(queue), hashCode(copy));\n\n    Queue<std::string> empty;\n\n    HashSet<Queue<std::string> > hashq {queue, copy, empty, empty};\n    EXPECT_EQUAL( 2, hashq.size());\n}\n\nPROVIDED_TEST(\"Queue, initializerList\") {\n    Queue<int> queue {10, 20, 30};\n    EXPECT_EQUAL(queue.toString(), \"{10, 20, 30}\");\n}\n\nPROVIDED_TEST(\"Queue, peekEnqueueBug\") {\n    {\n        Queue<int> queue {10, 20, 30, 40, 50, 60, 70, 80};\n        EXPECT_EQUAL(queue.toString(), \"{10, 20, 30, 40, 50, 60, 70, 80}\");\n        queue.enqueue(queue.peek());\n        EXPECT_EQUAL(queue.toString(), \"{10, 20, 30, 40, 50, 60, 70, 80, 10}\");\n    }\n    {\n        Queue<int> queue {10, 20, 30, 40, 50, 60, 70, 80, 90};\n        EXPECT_EQUAL(queue.toString(), \"{10, 20, 30, 40, 50, 60, 70, 80, 90}\");\n        queue.enqueue(queue.peek());\n        EXPECT_EQUAL(queue.toString(), \"{10, 20, 30, 40, 50, 60, 70, 80, 90, 10}\");\n    }\n}\n"
  },
  {
    "path": "SPL-unit-tests/test-set.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib Set class.\n */\n\n#include \"set.h\"\n#include \"hashset.h\"\n#include \"queue.h\"\n#include \"common.h\"\n#include \"SimpleTest.h\"\n#include <initializer_list>\n#include <iostream>\n#include <sstream>\n#include <string>\n#include <numeric>\n\n/*\n * Force instantiation of Set on a few types to make sure we didn't miss anything.\n * The types must be comparable.\n */\ntemplate class stanfordcpplib::collections::GenericSet<stanfordcpplib::collections::SetTraits<int>>;\ntemplate class stanfordcpplib::collections::GenericSet<stanfordcpplib::collections::SetTraits<std::string>>;\n\n/*\n * Uncomment this code to include tests that the nice error messages for types missing\n * hashing show up properly.\n */\n#if 0\nvoid causeCompilerError() {\n    struct Bad {};\n\n    Set<Bad> bad; // Should trigger a static assertion rather than a long chain of sorrows\n}\n#endif\n\n/*\n * We should NOT get a compiler error trying to stash things in a Set that are not\n * comparable as long as we provide a custom comparator.\n */\nPROVIDED_TEST(\"No compiler error with custom comparator on uncomparable class.\") {\n    struct Meh {};\n\n    Set<Meh> okay([](const Meh&, const Meh&) {\n        return true;\n    });\n\n    (void) okay;\n}\n\n#if 0\nvoid badInitializationError() {\n    Set<std::string> mySet = \"137\";\n}\n#endif\n\nPROVIDED_TEST(\"Set, commaOperator\") {\n    /* Confirm that commas work properly. */\n    Set<int> one = {1, 2, 3};\n\n    /* Begin by adding some elements in. */\n    one += 3, 4, 5; // {1, 2, 3, 4, 5}\n    EXPECT_EQUAL( one.size(), 5);\n\n    /* Now remove some elements. */\n    one -= 3, 4, 5; // {1, 2}\n    EXPECT_EQUAL( one.size(), 2);\n\n    /* Now add a collection of elements. */\n    Set<int> two = {3, 4, 5};\n    one += two, 6; // {1, 2, 3, 4, 5, 6}\n    EXPECT_EQUAL( one.size(), 6);\n\n    /* Now remove a collection of elements. */\n    one -= two, 6; // {1, 2}\n    EXPECT_EQUAL( one.size(), 2);\n}\n\nPROVIDED_TEST(\"Set, compare\") {\n    Set<int> set1 {7, 5, 1, 2, 8};\n    Set<int> set2 {1, 2, 3, 4};\n    Set<int> set3 {2, 1, 3, 4};\n    Set<int> set4;\n    testCompareOperators(set1, set2, GreaterThan);\n    testCompareOperators(set2, set1, LessThan);\n    testCompareOperators(set1, set3, GreaterThan);\n    testCompareOperators(set2, set3, EqualTo);\n    testCompareOperators(set2, set4, GreaterThan);\n    testCompareOperators(set4, set1, LessThan);\n\n    // note: shouldn't add set3 because it is 'equal' to set2 (duplicate)\n    Set<Set<int> > sset {set1, set2, set3, set4};\n    EXPECT_EQUAL(sset.toString(), \"{{}, {1, 2, 3, 4}, {1, 2, 5, 7, 8}}\");\n}\n\nPROVIDED_TEST(\"Set, customComparator\") {\n    /* Confirm that we can override the comparator if need be. */\n    Set<int> descending({1, 2, 3, 4, 5}, std::greater<int>());\n    EXPECT_EQUAL( descending.size(), 5);\n\n    auto itr = descending.begin();\n    for (int i = 5; i > 0; i--, ++itr) {\n        EXPECT_EQUAL( *itr, i);\n    }\n\n    /* Now leave the set empty and try overriding the comparator. */\n    Set<int> descending2{std::greater<int>()};\n    descending2 += 1, 2, 3, 4, 5;\n\n    EXPECT_EQUAL( descending2.size(), 5);\n\n    itr = descending2.begin();\n    for (int i = 5; i > 0; i--, ++itr) {\n        EXPECT_EQUAL( *itr, i);\n    }\n}\n\nPROVIDED_TEST(\"Set, forEach\") {\n    Set<int> set {10, 20, 30, 40};\n    Queue<int> expected {10, 20, 30, 40};\n\n    for (int n : set) {\n        int exp = expected.dequeue();\n        EXPECT_EQUAL( exp, n);\n    }\n}\n\nPROVIDED_TEST(\"Set, firstLast\") {\n    Set<int> set {20, 10, 40, 30};\n    EXPECT_EQUAL( 10, set.first());\n    EXPECT_EQUAL(  40, set.last());\n}\n\nPROVIDED_TEST(\"Set, hashCode\") {\n    Set<int> set;\n    set.add(69);\n    set.add(42);\n    EXPECT_EQUAL( hashCode(set), hashCode(set));\n\n    Set<int> copy = set;\n    EXPECT_EQUAL( hashCode(set), hashCode(copy));\n\n    Set<int> empty;\n    HashSet<Set<int> > hashset {set, copy, empty, empty};\n    EXPECT_EQUAL( 2, hashset.size());\n}\n\nPROVIDED_TEST(\"Set, initializerList\") {\n    auto list = {60, 70};\n    auto list2 = {20, 50};\n\n    Set<int> set {10, 20, 30};\n    assertCollection(\"initial\", {10, 20, 30}, set);\n\n    set += {40, 50};\n    assertCollection(\"after +=\", {10, 20, 30, 40, 50}, set);\n\n    Set<int> copy = set + list;\n    assertCollection(\"after + (shouldn't modify)\", {10, 20, 30, 40, 50}, set);\n    assertCollection(\"after + copy\", {10, 20, 30, 40, 50, 60, 70}, copy);\n\n    copy = set - list2;\n    assertCollection(\"after - (shouldn't modify)\", {10, 20, 30, 40, 50}, set);\n    assertCollection(\"after - copy\", {10, 30, 40}, copy);\n\n    copy = set * list2;\n    assertCollection(\"after * (shouldn't modify)\", {10, 20, 30, 40, 50}, set);\n    assertCollection(\"after * copy\", {20, 50}, copy);\n\n    set -= {20, 50};\n    assertCollection(\"after -=\", {10, 30, 40}, set);\n    set *= {0, 10, 40, 99};\n    assertCollection(\"after *=\", {10, 40}, set);\n}\n\nvoid addDuring(Set<int>& v) {\n    for (int m : v) {\n        (void) m;\n        v.add(0);\n    }\n}\nvoid removeDuring(Set<int>& v) {\n    for (int m : v) {\n        (void) m;\n        v.remove(0);\n    }\n}\n\nPROVIDED_TEST(\"Set, error on modify during iterate\") {\n    Set<int> set {1, 2, 3, 4, 1, 6, 1, 8, 2, 10};\n    EXPECT_ERROR(addDuring(set));\n    EXPECT_ERROR(removeDuring(set));\n}\n\n\nPROVIDED_TEST(\"Set, mapAll\") {\n    Set<int> set {7, 5, 1, 2, 8};\n\n    int total = 0;\n    set.mapAll([&] (int value) {\n        total += value;\n    });\n\n    EXPECT_EQUAL( std::accumulate(set.begin(), set.end(), 0), total);\n}\n\nPROVIDED_TEST(\"Set, randomElement\") {\n    Map<std::string, int> counts;\n    int RUNS = 200;\n\n    std::initializer_list<std::string> list {\"a\", \"b\", \"c\", \"d\", \"e\", \"f\"};\n\n    Set<std::string> hset(list);\n    for (int i = 0; i < RUNS; i++) {\n        std::string s = randomElement(hset);\n        counts[s]++;\n    }\n\n    for (const std::string& s : list) {\n        EXPECT(counts[s] > 0);\n    }\n}\n\nPROVIDED_TEST(\"Set, removeAndRetain\") {\n    Set<int> all   = { 1, 2, 3, 4, 5, 6, 7, 8 };\n    Set<int> evens = {    2,    4,    6,    8,   10 };\n    Set<int> odds  = { 1,    3,    5,    7    };\n\n    all.difference(evens);\n    EXPECT_EQUAL(all, odds);\n\n    Set<int> primes   = { 2, 3, 5, 7, 11 };\n    Set<int> expected = { 3, 5, 7 };\n\n    all.intersect(primes);\n     EXPECT_EQUAL(all, expected);\n}\n"
  },
  {
    "path": "SPL-unit-tests/test-simpio.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib simpio module.\n */\n\n#include \"SimpleTest.h\"\n#include \"simpio.h\"\n#include \"ioutils.h\"\n#include \"strlib.h\"\n#include \"filelib.h\"\nusing namespace std;\n\nPROVIDED_TEST(\"getChar rejects empty input, reprompt\") {\n    ioutils::setConsoleEchoUserInput(true);\n    string input = stringJoin({\"\", \"a\", \"\", \"b\", \"\", \"c\"}, '\\n');\n    ioutils::redirectStdinBegin(input);\n\n    EXPECT_EQUAL(getChar(), 'a');\n    EXPECT_EQUAL(getChar(\"Enter a nice character:\"), 'b');\n    EXPECT_EQUAL(getChar(\"Enter a nice char or else:\", \"I am mad!\"), 'c');\n    ioutils::redirectStdinEnd();\n}\n\nPROVIDED_TEST(\"getInteger rejects malformed input, reprompt\") {\n    ioutils::setConsoleEchoUserInput(true);\n    string input = stringJoin({\"\", \"0\", \"8junk\", \"1\", \"2.5\", \"-2\"}, '\\n');\n    ioutils::redirectStdinBegin(input);\n\n    EXPECT_EQUAL(getInteger(), 0);\n    EXPECT_EQUAL(getInteger(\"Enter a nice int:\"), 1);\n    EXPECT_EQUAL(getInteger(\"Enter a nice int or else:\", \"I am mad!\"), -2);\n    ioutils::redirectStdinEnd();\n}\n\nPROVIDED_TEST(\"getDouble rejects malformed input, reprompt\") {\n    ioutils::setConsoleEchoUserInput(true);\n    string input = stringJoin({\"\", \"0\", \"8junk\", \".1\", \"2.5.1\", \"-2.5\"}, '\\n');\n    ioutils::redirectStdinBegin(input);\n\n    EXPECT_EQUAL(getDouble(), 0);\n    EXPECT_EQUAL(getDouble(\"Enter a nice double:\"), .1);\n    EXPECT_EQUAL(getDouble(\"Enter a nice double or else:\", \"I am mad!\"), -2.5);\n    ioutils::redirectStdinEnd();\n}\n\nPROVIDED_TEST(\"getYesOrNo rejects malformed input, reprompt\") {\n    ioutils::setConsoleEchoUserInput(true);\n    string input = stringJoin({\"ok\", \"y\", \"X\", \"\", \"YE\", \"yEs\", \"not\", \"N\"}, '\\n');\n    ioutils::redirectStdinBegin(input);\n\n    EXPECT(getYesOrNo(\"Enter yes or no or else:\", \"I am mad\"));\n    EXPECT(getYesOrNo(\"Enter to continue:\", \"just hit return!\", \"y\"));\n    EXPECT(getYesOrNo(\"Will you?\"));\n    EXPECT(getYesOrNo(\"Say Yes:\"));\n    EXPECT(!getYesOrNo(\"Say No:\"));\n    EXPECT(!getYesOrNo(\"Why not?\"));\n    ioutils::redirectStdinEnd();\n}\n\nPROVIDED_TEST(\"getIntegerBetween rejects values outside range\") {\n    ioutils::setConsoleEchoUserInput(true);\n    string input = stringJoin({\"2\", \"-1.0\", \"-2\"}, '\\n');\n    ioutils::redirectStdinBegin(input);\n\n    int low = -2, high = -1;\n    cout << endl << \"low = \" << low << \" high = \" << high << endl;\n    int val = getIntegerBetween(\"Enter int between low and high:\", low, high);\n    EXPECT(val >= low && val <= high);\n    ioutils::redirectStdinEnd();\n}\n\nPROVIDED_TEST(\"getDoubleBetween rejects values outside range\") {\n    ioutils::setConsoleEchoUserInput(true);\n    string input = stringJoin({\".1\", \"0.0\", \"-2.5\", \"0.36\"}, '\\n');\n    ioutils::redirectStdinBegin(input);\n\n    double low = 0.25, high = 0.5;\n    cout << endl << \"low = \" << low << \" high = \" << high << endl;\n    double val = getDoubleBetween(\"Enter double between low and high:\", low, high);\n    EXPECT(val >= low && val <= high);\n    ioutils::redirectStdinEnd();\n}\n\nPROVIDED_TEST(\"promptUserForFile accepts valid filenames, rejects others\") {\n    ioutils::setConsoleEchoUserInput(true);\n    string thisFile = \"test-simpio.cpp\";\n    string input = stringJoin({\"\", \"garbage\", thisFile, \"\", \"/s\", thisFile}, '\\n');\n    ioutils::redirectStdinBegin(input);\n\n    EXPECT(fileExists(promptUserForFilename()));\n    EXPECT(fileExists(promptUserForFilename(\"Enter a nice filename\", \"I am mad!\")));\n    ioutils::redirectStdinEnd();\n}\n"
  },
  {
    "path": "SPL-unit-tests/test-simpletest.cpp",
    "content": "/*\n * Test file for verifying SimpleTest module.\n */\n\n#include \"SimpleTest.h\"\n#include \"ioutils.h\"\n#include <iomanip>\n#include <iostream>\n#include <string>\n\nPROVIDED_TEST(\"expect equal, integer compare\") {\n    EXPECT_EQUAL(42, 42);\n    EXPECT_EQUAL(0, 0);\n}\n\nPROVIDED_TEST(\"expect equal, pointer compare\") {\n    int* p1 = new int(42);\n    int* p2 = p1;\n    EXPECT_EQUAL(p1, p2);\n}\n\nPROVIDED_TEST(\"expect equal, pointer compare\") {\n    int* p1 = new int(42);\n    int* p2 = new int(42);\n    EXPECT(p1 != p2);\n}\n\nPROVIDED_TEST(\"expect equal, float\") {\n    float f = 0.3;\n    float g = 0.1;\n    g *= 3;\n    EXPECT_EQUAL(f, g);\n}\n\nPROVIDED_TEST(\"expect equal, double\") {\n    double f = 0.3;\n    double g = 0.1;\n    g *= 3;\n    EXPECT_EQUAL(f, g);\n}\n\nPROVIDED_TEST(\"expect equal, mixed float/double\") {\n    float f = 0.3;\n    double g = 0.1;\n    g *= 3;\n    EXPECT(f != g); // values are not exact/bitwise equal\n    EXPECT_EQUAL(f, g); // but are within fp epsilon\n}\n\nstatic double zero = 0;\n\nPROVIDED_TEST(\"expect equal, inf should equal self \") {\n    EXPECT_EQUAL(1/zero, 1/zero);\n    EXPECT_EQUAL(-1/zero, 1/zero);\n    EXPECT_EQUAL(-1/zero, -1/zero);\n}\n\nPROVIDED_TEST(\"nan is not equal to anything even itself (HEADS UP: test expected to fail)\") {\n    EXPECT(zero/zero != zero/zero);\n    EXPECT_EQUAL(zero/zero, zero/zero);\n}\n\nPROVIDED_TEST(\"capture output, compare equal\") {\n    ioutils::captureStdoutBegin();\n    std::cout << std::setprecision(4) << 12.3456789;\n    std::string output = ioutils::captureStdoutEnd();\n    EXPECT_EQUAL(output, \"12.35\");\n}\n\nPROVIDED_TEST(\"capture output, compare equal\") {\n    ioutils::captureStdoutBegin();\n    std::cout << std::fixed << std::setprecision(2) << 12.3456789 << std::endl;\n    std::string output = ioutils::captureStdoutEnd();\n    EXPECT_EQUAL(output, \"12.35\\n\");\n}\n"
  },
  {
    "path": "SPL-unit-tests/test-sound.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib sound module.\n */\n\n#include \"sound.h\"\n#include \"gwindow.h\"\n#include <iostream>\n#include <string>\n#include \"SimpleTest.h\"\n\nPROVIDED_TEST(\"Sound::playFile wav Joshua\") {\n    std::string filename = \"res/shall-we-play-a-game.wav\";\n    Sound::playFile(filename);\n    pause(1000);    // silence between tests\n}\n\nPROVIDED_TEST(\"Sound::playFile mp3 All Right Now\") {\n    std::string filename = \"res/all-right-now.mp3\";\n    Sound::playFile(filename);\n    pause(1000);    // silence between tests\n}\n\nPROVIDED_TEST(\"Sound::playURL wav url\") {\n    std::string url = \"https://download.samplelib.com/wav/sample-3s.wav\";\n    Sound::playURL(url);\n    pause(1000);    // silence between tests\n}\n\nPROVIDED_TEST(\"Sound::playFile error while file doesn't exist\") {\n    std::string filename = \"NoSuchFile.mp3\";\n    EXPECT_ERROR(Sound::playFile(filename));\n}\n\nPROVIDED_TEST(\"Sound::playURL error when url doesn't exist\") {\n    std::string url = \"http://nosuchfile.nosuchdomain.com\";\n    EXPECT_ERROR(Sound::playURL(url));\n}\n\nPROVIDED_TEST(\"Sound::playURL error on malformed url\") {\n    std::string url = \"phtt://bogus\";\n    EXPECT_ERROR(Sound::playURL(url));\n}\n\nPROVIDED_TEST(\"Sound::playFile error when file not valid sound format\") {\n    std::string filename = \"test-sound.cpp\";\n    EXPECT_ERROR(Sound::playFile(filename));\n}\n\nPROVIDED_TEST(\"Sound::playURL error when url not valid sound format\") {\n    std::string url = \"http://www.google.com\";\n    EXPECT_ERROR(Sound::playURL(url));\n}\n\n\n"
  },
  {
    "path": "SPL-unit-tests/test-stack.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib Stack class.\n */\n\n#include \"stack.h\"\n#include \"hashset.h\"\n#include \"common.h\"\n#include \"SimpleTest.h\"\n#include <initializer_list>\n#include <iostream>\n#include <sstream>\n#include <string>\n\n/* Force instantiation of the template on a type to ensure that we don't have anything\n * insidious lurking that just didn't get compiled.\n */\ntemplate class Stack<int>;\ntemplate class Stack<std::string>;\n\nPROVIDED_TEST(\"Stack push, compare\") {\n    Stack<int> s1;\n    s1.push(1);\n    s1.push(2);\n    s1.push(1);\n    s1.push(5);\n    Stack<int> s2;\n    s2.push(1);\n    s2.push(2);\n    s2.push(1);\n    s2.push(4);\n    s2.push(7);\n    Stack<int> s3; // empty\n    testCompareOperators(s1, s2, GreaterThan);\n    testCompareOperators(s2, s1, LessThan);\n    testCompareOperators(s1, s1, EqualTo);\n    testCompareOperators(s3, s1, LessThan);\n    testCompareOperators(s1, s1, EqualTo);\n\n    Set<Stack<int> > ss {s1, s2};\n    EXPECT_EQUAL(ss.toString(), \"{{1, 2, 1, 4, 7}, {1, 2, 1, 5}}\");\n}\n\nPROVIDED_TEST(\"Stack peek/pop\") {\n    Stack<int> s;\n\n    EXPECT(s.isEmpty());\n    for (int i = 1; i <= 100; i++) {\n        s.push(i);\n    }\n    while (!s.isEmpty()) {\n        int top = s.peek();\n        EXPECT_EQUAL(top, s.size());\n        EXPECT_EQUAL(top, s.pop());\n    }\n}\n\nPROVIDED_TEST(\"Stack hashcode\") {\n    Stack<int> stack;\n    stack.push(69);\n    stack.push(42);\n    EXPECT_EQUAL(hashCode(stack), hashCode(stack));\n\n    Stack<int> copy = stack;\n    EXPECT_EQUAL(hashCode(stack), hashCode(copy));\n\n    Stack<int> empty;\n    HashSet<Stack<int> > hashstack {stack, copy, empty, empty};\n    EXPECT_EQUAL(2, hashstack.size());\n}\n\nPROVIDED_TEST(\"Stack initializer_list\") {\n    Stack<int> stack {10, 20, 30};\n    EXPECT_EQUAL(stack.toString(), \"{10, 20, 30}\");\n}\n\n"
  },
  {
    "path": "SPL-unit-tests/test-strlib.cpp",
    "content": "/*\n * File: test-strlib.cpp\n * -------------------\n * Unit tests for public functions of strlib.h\n *\n * @author Cathy Zhang Spring 2020\n */\n\n#include \"SimpleTest.h\"\n#include <string>\n#include \"strlib.h\"\nusing namespace std;\n\n\n/* * * * * * Test Cases * * * * * */\n\nPROVIDED_TEST(\"Conversions between bool and string\") {\n    /* Conversion from bool to string */\n    EXPECT_EQUAL(boolToString(true), \"true\");\n    EXPECT_EQUAL(boolToString(1), \"true\");\n    EXPECT_EQUAL(boolToString(false), \"false\");\n    EXPECT_EQUAL(boolToString(0), \"false\");\n\n    /* Conversion from string to bool */\n    EXPECT_EQUAL(true, stringToBool(\"true\"));\n    EXPECT_EQUAL(true, stringToBool(\"1\"));\n\n    EXPECT_EQUAL(false, stringToBool(\"false\"));\n    EXPECT_EQUAL(false, stringToBool(\"0\"));\n\n    EXPECT_ERROR(stringToBool(\"TRUE\"));\n    EXPECT_ERROR(stringToBool(\"falsey\"));\n    EXPECT_ERROR(stringToBool(\"001\"));\n}\n\nPROVIDED_TEST(\"Conversions between char and string\") {\n    Vector<char> chars = {'A', 'a', '0', '?', '\\t', '\\n'};\n    Vector<string> strs = {\"A\", \"a\", \"0\", \"?\", \"\\t\", \"\\n\"};\n\n    for (int i = 0; i < chars.size(); i++) {\n        EXPECT_EQUAL(charToString(chars[i]), strs[i]);\n    }\n\n    for (int i = 0; i < strs.size(); i++) {\n        EXPECT_EQUAL(stringToChar(strs[i]), chars[i]);\n    }\n\n    Vector<string> inError = {\"\", \"ABC\", \"123\"};\n    for (auto& e: inError) {\n        EXPECT_ERROR(stringToChar(e));\n    }\n}\n\nPROVIDED_TEST(\"Checking whether specified string ends with specified suffix\") {\n    /* Suffix passed in as a string */\n    EXPECT(endsWith(\"\", \"\"));\n    EXPECT(endsWith(\"cpp is cool\", \"\"));\n    EXPECT(endsWith(\"cpp is cool\", \"cpp is cool\"));\n    EXPECT(endsWith(\"cpp is cool\", \"cool\"));\n    EXPECT(endsWith(\"cpp is cool\", \"l\"));\n    EXPECT(endsWith(\"cpp is cool\\n\", \"\\n\"));\n\n    EXPECT(!endsWith(\"\", \"arbitrary\"));\n    EXPECT(!endsWith(\"string\", \"longer string\"));\n    EXPECT(!endsWith(\"cpp is cool\", \"cpp\"));\n    EXPECT(!endsWith(\"cpp is cool\", \"is\"));\n\n    /* Suffix passed in as a char */\n    EXPECT(endsWith(\"cpp is cool\", 'l'));\n    EXPECT(endsWith(\"a\", 'a'));\n    EXPECT(endsWith(\"cpp is cool\\t\", '\\t'));\n\n    EXPECT(!endsWith(\"\", 'a'));\n    EXPECT(!endsWith(\"cpp is cool\", 'c'));\n    EXPECT(!endsWith(\"cpp is cool\", 'i'));\n}\n\nPROVIDED_TEST(\"Checking equality ignoring case\") {\n    EXPECT(equalsIgnoreCase(\"\", \"\"));\n    EXPECT(equalsIgnoreCase(\"equ@lity\", \"equ@lity\"));\n    EXPECT(equalsIgnoreCase(\"equality\", \"EQUALITY\"));\n    EXPECT(equalsIgnoreCase(\"equal1TY\", \"eQuaL1ty\"));\n\n    EXPECT(!equalsIgnoreCase(\"\", \"\\t \\n\"));\n    EXPECT(!equalsIgnoreCase(\"equality\", \"ytilauqe\"));\n    EXPECT(!equalsIgnoreCase(\"equality\", \"inequality\"));\n}\n\nPROVIDED_TEST(\"Conversions between string and integer\") {\n    Vector<int> inA =     {0,    1,   106,  -55};\n    Vector<string> outA = {\"0\", \"1\", \"106\", \"-55\"};\n\n    for (int i = 0; i < inA.size(); i++) {\n        EXPECT_EQUAL(integerToString(inA[i]), outA[i]);\n    }\n\n    Vector<string> inB = {\"0\", \"+1\", \"77  \", \"  333\", \"-4\", \"-59\", \"0123\", \"-045\"};\n    Vector<int> outB =   { 0,   1,    77,      333,    -4,   -59,    123,   -45};\n\n    for (int i = 0; i < inB.size(); i++) {\n        EXPECT_EQUAL(stringToInteger(inB[i]), outB[i]);\n    }\n\n    Vector<string> inError = {\"apple\", \"\", \"-\", \"- 59\", \"123a\", \"--5\", \"2.5\", \"#1\", \"5 9\"};\n    for (auto& e: inError) {\n        EXPECT_ERROR(stringToInteger(e));\n    }\n\n    /* With optional second parameter for radix */\n    EXPECT_EQUAL(stringToInteger(\"234\", 8), 156);\n    EXPECT_ERROR(stringToInteger(\"234\", -8));\n}\n\nPROVIDED_TEST(\"Conversions between string and real\") {\n    Vector<double> inA = {  0, 0.0,   13.7, -81.9};\n    Vector<string> outA = {\"0\", \"0\", \"13.7\", \"-81.9\"};\n\n    for (int i = 0; i < inA.size(); i++) {\n        EXPECT_EQUAL(realToString(inA[i]), outA[i]);\n    }\n\n    Vector<string> inB = {\"0.0\", \"+13.7\", \"-81.9\", \"77  \", \"  333\", \"0123.0\", \"-045\"};\n    Vector<double> outB = {0,      13.7,   -81.9,   77,       333,    123.0,   -45};\n\n    for (int i = 0; i < inB.size(); i++) {\n        EXPECT_EQUAL(stringToReal(inB[i]), outB[i]);\n    }\n\n    Vector<string> inError = {\"apple\", \"\", \"\\n\", \"- 59\", \"123a\", \"#1\", \"5 9\"};\n    for (auto& e: inError) {\n        EXPECT_ERROR(stringToReal(e));\n    }\n}\n\nPROVIDED_TEST(\"Checking whether specified string starts with specified prefix\") {\n    /* Prefix passed in as a string */\n    EXPECT(startsWith(\"\", \"\"));\n    EXPECT(startsWith(\"cpp is cool\", \"\"));\n    EXPECT(startsWith(\"cpp is cool\", \"cpp is cool\"));\n    EXPECT(startsWith(\"cpp is cool\", \"cpp\"));\n    EXPECT(startsWith(\"cpp is cool\", \"c\"));\n    EXPECT(startsWith(\"\\ncpp is cool\", \"\\n\"));\n\n    EXPECT(!startsWith(\"\", \"arbitrary\"));\n    EXPECT(!startsWith(\"string\", \"longer string\"));\n    EXPECT(!startsWith(\"cpp is cool\", \"cool\"));\n    EXPECT(!startsWith(\"cpp is cool\", \"is\"));\n\n    /* Prefix passed in as a char */\n    EXPECT(startsWith(\"cpp is cool\", 'c'));\n    EXPECT(startsWith(\"a\", 'a'));\n    EXPECT(startsWith(\"\\tcpp is cool\", '\\t'));\n\n    EXPECT(!startsWith(\"\", 'a'));\n    EXPECT(!startsWith(\"cpp is cool\", 'l'));\n    EXPECT(!startsWith(\"cpp is cool\", 'i'));\n}\n\nPROVIDED_TEST(\"Checking whether specified string contains specified substring\") {\n    EXPECT(stringContains(\"\", \"\"));\n    EXPECT(stringContains(\"cpp is cool\", \"\"));\n    EXPECT(stringContains(\"cpp is cool\", \"cpp is cool\"));\n    EXPECT(stringContains(\"cpp is cool\", \"cpp\"));\n    EXPECT(stringContains(\"cpp is cool\", \"c\"));\n    EXPECT(stringContains(\"\\ncpp is cool\", \"\\n\"));\n\n    EXPECT(!stringContains(\"\", \"arbitrary\"));\n    EXPECT(!stringContains(\"string\", \"longer string\"));\n    EXPECT(!stringContains(\"cpp is cool\", \"cppcool\"));\n    EXPECT(!stringContains(\"cpp is cool\", \"looc si ppc\"));\n    EXPECT(!stringContains(\"cpp is cool\", \"c p p  i s  c o o l\"));\n}\n\nPROVIDED_TEST(\"Getting the first and last indicies in specified string of specified substring \") {\n    /* Finding the first occurrence */\n    EXPECT_EQUAL(stringIndexOf(\"\", \"\"), 0);\n    EXPECT_EQUAL(stringIndexOf(\"cpp is cool\", \"\"), 0);\n    EXPECT_EQUAL(stringIndexOf(\"cpp is cool\", \"cpp\"), 0);\n    EXPECT_EQUAL(stringIndexOf(\"cpp is cool\", \"cool\"), 7);\n    EXPECT_EQUAL(stringIndexOf(\"cpp is cool\", \"cpp is cool\"), 0);\n    EXPECT_EQUAL(stringIndexOf(\"cpp is cool and cpp is cool\", \"cpp is cool\"), 0);\n\n    EXPECT_EQUAL(stringIndexOf(\"\", \"arbitrary\"), -1);\n    EXPECT_EQUAL(stringIndexOf(\"cpp is cool\", \"c is cooler\"), -1);\n    EXPECT_EQUAL(stringIndexOf(\"string\", \"longer string\"), -1);\n\n    /* Finding the last occurrence */\n    EXPECT_EQUAL(stringLastIndexOf(\"\", \"\"), 0);\n    EXPECT_EQUAL(stringLastIndexOf(\"cpp is cool\", \"\"), 11);\n    EXPECT_EQUAL(stringLastIndexOf(\"cpp is cool\", \"cpp\"), 0);\n    EXPECT_EQUAL(stringLastIndexOf(\"cpp is cool\", \"cool\"), 7);\n    EXPECT_EQUAL(stringLastIndexOf(\"cpp is cool\", \"cpp is cool\"), 0);\n    EXPECT_EQUAL(stringLastIndexOf(\"cpp is cool and cpp is cool\", \"cpp is cool\"), 16);\n\n    EXPECT_EQUAL(stringLastIndexOf(\"\", \"arbitrary\"), -1);\n    EXPECT_EQUAL(stringLastIndexOf(\"cpp is cool\", \"c is cooler\"), -1);\n    EXPECT_EQUAL(stringLastIndexOf(\"string\", \"longer string\"), -1);\n}\n\nPROVIDED_TEST(\"Checking valid conversion from string to integer\") {\n    Vector<string> inTrue = {\"0\", \"+1\", \"77  \", \"  333\", \"-59\", \"0123\", \"-045\"};\n\n    for (int i = 0; i < inTrue.size(); i++) {\n        EXPECT(stringIsInteger(inTrue[i]));\n    }\n\n    Vector<string> inFalse = {\"0.0\", \"13.7\", \"-81.9\", \"apple\", \"\", \"\\n\", \"- 59\", \"123a\", \"#1\", \"5 9\"};\n\n    for (int i = 0; i < inFalse.size(); i++) {\n        EXPECT(!stringIsInteger(inFalse[i]));\n    }\n\n    /* With optional second parameter for radix */\n    EXPECT(stringIsInteger(\"234\", 8));\n    EXPECT_ERROR(stringIsInteger(\"234\", -8));\n}\n\nPROVIDED_TEST(\"Checking valid conversion from string to real\") {\n    Vector<string> inTrue = {\"0.0\", \"+13.7\", \"-81.9\", \"77  \", \"  333\", \"0123.0\", \"-045\"};\n\n    for (int i = 0; i < inTrue.size(); i++) {\n        EXPECT(stringIsReal(inTrue[i]));\n    }\n\n    Vector<string> inFalse = {\"apple\", \"\", \"\\n\", \"- 59\", \"123a\", \"#1\", \"5 9\"};\n\n    for (int i = 0; i < inFalse.size(); i++) {\n        EXPECT(!stringIsReal(inFalse[i]));\n    }\n}\n\nPROVIDED_TEST(\"Joining vector of strings with specified delimiter\") {\n    EXPECT_EQUAL(stringJoin({}, \" \"), \"\");\n    EXPECT_EQUAL(stringJoin({\"one\"}, \"\\n\"), \"one\");\n    EXPECT_EQUAL(stringJoin({\"me\", \"myself\", \"i\"}, \"\"), \"memyselfi\");\n    EXPECT_EQUAL(stringJoin({\"me\", \"myself\", \"i\"}, \"AND\"), \"meANDmyselfANDi\");\n    EXPECT_EQUAL(stringJoin( {\"there are\", \"7\", \"words in this\", \"vector!\"}, \"!\"), \"there are!7!words in this!vector!\");\n    EXPECT_EQUAL(stringJoin({\"\", \"\\n\", \"\", \"\\t\", \"\"}, \"8\"), \"8\\n88\\t8\");\n    EXPECT_EQUAL(stringJoin({\"\", \"\\n\", \"\", \"\\t\", \"\"}, \"\\n\"), \"\\n\\n\\n\\n\\t\\n\");\n}\n\nPROVIDED_TEST(\"Replacing instances of a substring with a new substring\") {\n    EXPECT_EQUAL(stringReplace(\"\", \"dogs\", \"cats\"), \"\");\n    EXPECT_EQUAL(stringReplace(\"dogs\", \"dogs\", \"cats\"), \"cats\");\n    EXPECT_EQUAL(stringReplace(\"I love dogs\", \"dogs\", \"dogs\"), \"I love dogs\");\n    EXPECT_EQUAL(stringReplace(\"I love dogs\", \"dogs\", \"cats\"), \"I love cats\");\n    EXPECT_EQUAL(stringReplace(\"I love dogs\", \" \", \"-\"), \"I-love-dogs\");\n    EXPECT_EQUAL(stringReplace(\"I love dogs\\t\", \"\\t\", \"\\n\"), \"I love dogs\\n\");\n    EXPECT_EQUAL(stringReplace(\"I love dogs\", \"I\", \"You\"), \"You love dogs\");\n    EXPECT_EQUAL(stringReplace(\"I love dogs\", \"I dislike dogs\", \"I like dogs\"), \"I love dogs\");\n}\n\nPROVIDED_TEST(\"Splitting a string into a vector of strings given single char delimiter\") {\n    EXPECT_EQUAL(stringSplit(\"\", \" \"),  {});\n    EXPECT_EQUAL(stringSplit(\" \", ' '), {});\n    EXPECT_EQUAL(stringSplit(\"     \", ' '), {});\n    EXPECT_EQUAL(stringSplit(\"one\\n\", \"\\n\"),  {\"one\"});\n    EXPECT_EQUAL(stringSplit(\"one\", \"I do not exist\"),  {\"one\"});\n    EXPECT_EQUAL(stringSplit(\"meANDmyselfANDi\", \"AND\"),  {\"me\", \"myself\", \"i\"});\n    EXPECT_EQUAL(stringSplit(\"there are!7!words in this!vector\", \"!\"), {\"there are\", \"7\", \"words in this\", \"vector\"});\n    EXPECT_EQUAL(stringSplit(\"Hi there  Jim!\", \" \"),  {\"Hi\", \"there\", \"Jim!\"});\n    // note adjacent delimiters coalesced (no empty tokens)\n    EXPECT_EQUAL(stringSplit(\"one*two*three\", \"*\"), {\"one\", \"two\", \"three\"});\n    EXPECT_EQUAL(stringSplit(\"one*two*three*\", \"*\"), {\"one\", \"two\", \"three\"});\n    EXPECT_EQUAL(stringSplit(\"*one*two*three\", \"*\"), {\"one\", \"two\", \"three\"});\n    EXPECT_EQUAL(stringSplit(\"*one*two*three*\", \"*\"), {\"one\", \"two\", \"three\"});\n    EXPECT_EQUAL(stringSplit(\"**one**two**three**\", \"*\"), {\"one\", \"two\", \"three\"});\n    EXPECT_EQUAL(stringSplit(\"***\", \"*\"),  {});\n}\n\nPROVIDED_TEST(\"Splitting a string into a vector of strings given multi-char delimiter\") {\n    EXPECT_EQUAL(stringSplit(\"AexBexC\", \"ex\"), {\"A\", \"B\", \"C\"});\n    EXPECT_EQUAL(stringSplit(\"exAexexBexCex\", \"ex\"), {\"A\", \"B\", \"C\"});\n    EXPECT_EQUAL(stringSplit(\"ex\", \"ex\"), {});\n    EXPECT_EQUAL(stringSplit(\"exexex\", \"ex\"), {});\n    EXPECT_EQUAL(stringSplit(\"\", \"ex\"), {});\n    EXPECT_EQUAL(stringSplit(\"eexx\", \"ex\"), {\"e\", \"x\"});\n    EXPECT_EQUAL(stringSplit(\"A--B--C\", \"--\"), {\"A\", \"B\", \"C\"});\n    EXPECT_EQUAL(stringSplit(\"-A--B---C-\", \"--\"), {\"-A\", \"B\", \"-C-\"});\n    EXPECT_EQUAL(stringSplit(\"-A--B---C-\", \"--\"), {\"-A\", \"B\", \"-C-\"});\n}\n\nPROVIDED_TEST(\"stringSplit should run in O(N) time where N is length of input string\") {\n    string cur = \"x \";\n    for (int i = 0; i < 13; i++) cur += cur; // start @ len 16K\n    for (int i = 0; i < 7; i++) { // end @ len 1M\n        TIME_OPERATION(cur.length(), stringSplit(cur, \" \"));\n        cur += cur;\n    }\n}\n\nPROVIDED_TEST(\"Conversions between uppercase and lowercase\") {\n    /* Note: Non-ASCII characters such as \"ñ\" and \"σ\" will not be converted to \"Ñ\" and \"Σ\" respectively,\n     * and vice versa. Calling the functions toLowerCase(str) and toLowerCase(str) on strings containing\n     * these characters will return the characters as is. */\n\n    Vector<string> inA = {\"a\", \"A\", \"scRAMbleD\", \".?#@!$%&*^()[]{}-=+\", \"137\", \" \\t\\n\"};\n    Vector<string> outA = {\"A\", \"A\", \"SCRAMBLED\",\".?#@!$%&*^()[]{}-=+\", \"137\", \" \\t\\n\"};\n\n    for (int i = 0; i < inA.size(); i++) {\n        EXPECT_EQUAL(toUpperCase(inA[i]), outA[i]);\n    }\n\n    Vector<string> inB = {\"a\", \"A\", \"scRAMbleD\", \".?#@!$%&*^()[]{}-=+\", \"137\", \" \\t\\n\"};\n    Vector<string> outB = {\"a\", \"a\", \"scrambled\",\".?#@!$%&*^()[]{}-=+\", \"137\", \" \\t\\n\"};\n\n    for (int i = 0; i < inB.size(); i++) {\n        EXPECT_EQUAL(toLowerCase(inB[i]), outB[i]);\n    }\n}\n\nPROVIDED_TEST(\"Trimming whitespace characters\") {\n    /* Trim from beginning and end */\n    EXPECT_EQUAL(trim(\"\"), \"\");\n    EXPECT_EQUAL(trim(\" \"), \"\");\n    EXPECT_EQUAL(trim(\"\\ttab\\t\"), \"tab\");\n    EXPECT_EQUAL(trim(\"newline\\n\"), \"newline\");\n    EXPECT_EQUAL(trim(\"\\t\\n\"), \"\");\n\n    EXPECT_EQUAL(trim(\" leading\"), \"leading\");\n    EXPECT_EQUAL(trim(\"trailing \"), \"trailing\");\n    EXPECT_EQUAL(trim(\"   multiple leading and trailing  \"), \"multiple leading and trailing\");\n    EXPECT_EQUAL(trim(\" inner  space \"), \"inner  space\");\n\n    /* Trim from beginning */\n    EXPECT_EQUAL(trimStart(\"\"), \"\");\n    EXPECT_EQUAL(trimStart(\" \"), \"\");\n    EXPECT_EQUAL(trimStart(\"\\ttab\"), \"tab\");\n    EXPECT_EQUAL(trimStart(\"\\nnewline\"), \"newline\");\n    EXPECT_EQUAL(trimStart(\"\\t\\n\"), \"\");\n\n    EXPECT_EQUAL(trimStart(\" leading\"), \"leading\");\n    EXPECT_EQUAL(trimStart(\"trailing \"), \"trailing \");\n    EXPECT_EQUAL(trimStart(\"   multiple leading and trailing  \"), \"multiple leading and trailing  \");\n    EXPECT_EQUAL(trimStart(\" inner  space\"), \"inner  space\");\n\n    /* Trim from end */\n    EXPECT_EQUAL(trimEnd(\"\"), \"\");\n    EXPECT_EQUAL(trimEnd(\" \"), \"\");\n    EXPECT_EQUAL(trimEnd(\"tab\\t\"), \"tab\");\n    EXPECT_EQUAL(trimEnd(\"newline\\n\"), \"newline\");\n    EXPECT_EQUAL(trimEnd(\"\\t\\n\"), \"\");\n\n    EXPECT_EQUAL(trimEnd(\" leading\"), \" leading\");\n    EXPECT_EQUAL(trimEnd(\"trailing \"), \"trailing\");\n    EXPECT_EQUAL(trimEnd(\"   multiple leading and trailing  \"), \"   multiple leading and trailing\");\n    EXPECT_EQUAL(trimEnd(\"inner  space \"), \"inner  space\");\n}\n\nPROVIDED_TEST(\"Encoding and decoding URLs\") {\n    EXPECT_EQUAL(urlEncode(\"\"), \"\");\n    EXPECT_EQUAL(urlDecode(\"\"), \"\");\n\n    string toEncode = \"Query0~ ?\";\n    string toDecode = \"Query0~+%3F\";\n    EXPECT_EQUAL(urlEncode(toEncode), toDecode);\n    EXPECT_EQUAL(urlDecode(toDecode), toEncode);\n\n    EXPECT_ERROR(urlDecode(\"%0\"));\n    EXPECT_ERROR(urlDecode(\"%GG\"));\n    EXPECT_ERROR(urlDecode(\"\\n\"));\n}\n"
  },
  {
    "path": "SPL-unit-tests/test-trie.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib Trie class.\n */\n\n#include \"trielexicon.h\"\n#include \"hashset.h\"\n#include \"common.h\"\n#include \"SimpleTest.h\"\n#include <initializer_list>\n#include <iostream>\n#include <sstream>\n#include <string>\n\nPROVIDED_TEST(\"TrieLexicon, basic\") {\n    std::initializer_list<std::string> words = {\n        \"a\",\n        \"ab\",\n        \"aab\",\n        \"aaab\",\n        \"aardvark\",\n        \"b\",\n        \"banana\"\n    };\n    std::initializer_list<std::string> badWords = {\n        \"abb\",\n        \"ad\",\n        \"and\",\n        \"aaardvark\",\n        \"aardvarks\",\n    };\n    std::initializer_list<std::string> badPrefixes = {\n        \"aaaa\",\n        \"abb\",\n        \"aardvarz\",\n        \"bb\",\n        \"bananas\",\n        \"c\",\n        \"r\",\n        \"z\"\n    };\n\n    TrieLexicon lex;\n    for (std::string word : words) {\n        lex.add(word);\n    }\n    EXPECT_EQUAL( (int) words.size(), lex.size());\n\n    for (std::string word : words) {\n        EXPECT(lex.contains(word));\n    }\n\n    for (std::string word : badWords) {\n        EXPECT(!lex.contains(word));\n    }\n\n    for (std::string word : words) {\n        for (int i = 0; i < (int) word.length(); i++) {\n            std::string prefix = word.substr(0, i);\n            EXPECT(lex.containsPrefix(word));\n        }\n    }\n\n    for (std::string word : badPrefixes) {\n        EXPECT(!lex.containsPrefix(word));\n    }\n}\n\nPROVIDED_TEST(\"TrieLexicon, compare\") {\n    TrieLexicon lex;\n    lex.add(\"a\");\n    lex.add(\"ab\");\n    lex.add(\"bc\");\n    TrieLexicon lex2;\n    lex2.add(\"a\");\n    lex2.add(\"b\");\n    lex2.add(\"c\");\n    TrieLexicon lex3;\n    testCompareOperators(lex, lex2, LessThan);\n    testCompareOperators(lex2, lex, GreaterThan);\n    testCompareOperators(lex, lex, EqualTo);\n\n    Set<TrieLexicon> slex {lex, lex2, lex3};\n    EXPECT_EQUAL(slex.toString(), \"{{}, {\\\"a\\\", \\\"ab\\\", \\\"bc\\\"}, {\\\"a\\\", \\\"b\\\", \\\"c\\\"}}\");\n}\n\nPROVIDED_TEST(\"TrieLexicon, forEach\") {\n    TrieLexicon lex;\n    lex.add(\"a\");\n    lex.add(\"aba\");\n    lex.add(\"cc\");\n    lex.add(\"bbb\");\n    lex.add(\"c\");\n    lex.add(\"bart\");\n    std::initializer_list<std::string> list {\"a\", \"aba\", \"bart\", \"bbb\", \"c\", \"cc\"};\n    assertCollection(\"foreach Lexicon\", list, lex);\n}\n\n\nPROVIDED_TEST(\"TrieLexicon, hashCode\") {\n    TrieLexicon lex;\n    lex.add(\"a\");\n    lex.add(\"bc\");\n    EXPECT_EQUAL( hashCode(lex), hashCode(lex));\n\n    TrieLexicon copy = lex;\n    EXPECT_EQUAL( hashCode(lex), hashCode(copy));\n\n    TrieLexicon lex2;   // empty\n\n    // shouldn't add two copies of same lexicon\n    HashSet<TrieLexicon> hashlex {lex, copy, lex2};\n    EXPECT_EQUAL( 2, hashlex.size());\n}\n\nPROVIDED_TEST(\"TrieLexicon, initializerList\") {\n    std::initializer_list<std::string> lexlist = {\"sixty\", \"seventy\"};\n\n    TrieLexicon lex {\"ten\", \"twenty\", \"thirty\"};\n    EXPECT_EQUAL(lex.toString(), \"{\\\"ten\\\", \\\"thirty\\\", \\\"twenty\\\"}\");\n    EXPECT_EQUAL( 3, lex.size());\n    EXPECT( lex.contains(\"ten\"));\n    EXPECT( lex.contains(\"twenty\"));\n    EXPECT( lex.contains(\"thirty\"));\n    EXPECT(! lex.contains(\"forty\"));\n    EXPECT(! lex.contains(\"fifty\"));\n\n    lex += {\"forty\", \"fifty\"};\n    EXPECT_EQUAL(lex.toString(), \"{\\\"fifty\\\", \\\"forty\\\", \\\"ten\\\", \\\"thirty\\\", \\\"twenty\\\"}\");\n    EXPECT_EQUAL( 5, lex.size());\n    EXPECT( lex.contains(\"ten\"));\n    EXPECT( lex.contains(\"twenty\"));\n    EXPECT( lex.contains(\"thirty\"));\n    EXPECT( lex.contains(\"forty\"));\n    EXPECT( lex.contains(\"fifty\"));\n    EXPECT(! lex.contains(\"sixty\"));\n    EXPECT(! lex.contains(\"seventy\"));\n\n    TrieLexicon lex2 = (lex + lexlist);\n    EXPECT_EQUAL(lex.toString(), \"{\\\"fifty\\\", \\\"forty\\\", \\\"ten\\\", \\\"thirty\\\", \\\"twenty\\\"}\");\n    EXPECT_EQUAL( 5, lex.size());\n    EXPECT( lex.contains(\"ten\"));\n    EXPECT( lex.contains(\"twenty\"));\n    EXPECT( lex.contains(\"thirty\"));\n    EXPECT( lex.contains(\"forty\"));\n    EXPECT( lex.contains(\"fifty\"));\n    EXPECT(! lex.contains(\"sixty\"));\n    EXPECT(! lex.contains(\"seventy\"));\n\n    EXPECT_EQUAL(lex2.toString(), \"{\\\"fifty\\\", \\\"forty\\\", \\\"seventy\\\", \\\"sixty\\\", \\\"ten\\\", \\\"thirty\\\", \\\"twenty\\\"}\");\n    EXPECT_EQUAL( 7, lex2.size());\n    EXPECT( lex2.contains(\"ten\"));\n    EXPECT( lex2.contains(\"twenty\"));\n    EXPECT( lex2.contains(\"thirty\"));\n    EXPECT( lex2.contains(\"forty\"));\n    EXPECT( lex2.contains(\"fifty\"));\n    EXPECT( lex2.contains(\"sixty\"));\n    EXPECT( lex2.contains(\"seventy\"));\n}\n\nstatic void addDuring(TrieLexicon& v) {\n    for (auto m : v) {\n        (void) m;\n        v.add(\"garbageword\");\n    }\n}\nstatic void removeDuring(TrieLexicon& v) {\n    for (auto m : v) {\n        (void) m;\n        v.remove(m);\n    }\n}\n\nPROVIDED_TEST(\"TrieLexicon, error on modify during iterate\") {\n    TrieLexicon lex {\"ten\", \"twenty\", \"thirty\", \"forty\"};\n    EXPECT_ERROR(addDuring(lex));\n    EXPECT_ERROR(removeDuring(lex));\n}\n\n"
  },
  {
    "path": "SPL-unit-tests/test-url.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib urlstream module.\n */\n\n#include \"urlstream.h\"\n#include <iostream>\n#include <string>\n#include \"SimpleTest.h\"\n\nPROVIDED_TEST(\"download url using iurlstream\") {\n    std::cout << \"Downloading ...\" << std::endl;\n    iurlstream testurl;\n    testurl.open(\"https://web.stanford.edu/class/cs106b/\");\n    std::cout << \"in the URL stream: \" << std::endl;\n    std::cout << \"====================\" << std::endl;\n    std::string line;\n    while (getline(testurl, line)) {\n        std::cout << \"line: \" << line << std::endl;\n    }\n    testurl.close();\n    std::cout << \"====================\" << std::endl;\n}\n"
  },
  {
    "path": "SPL-unit-tests/test-vector.cpp",
    "content": "/*\n * Test file for verifying the Stanford C++ lib Vector class.\n */\n\n#include \"hashset.h\"\n#include \"vector.h\"\n#include \"common.h\"\n#include \"SimpleTest.h\"\n#include <numeric>\n\n/* Force instantiation of Vector on a few types to make sure we didn't miss anything.\n * These types must be comparable and hashable to avoid instantiating functions we\n * can't support.\n */\ntemplate class Vector<int>;\ntemplate class Vector<bool>;\ntemplate class Vector<std::string>;\n\n\n\nPROVIDED_TEST(\"Vector link check\") {\n    Vector<int> v;\n    v.add(0);\n    v.remove(0);\n    v.insert(0,0);\n}\n\nPROVIDED_TEST(\"Vector add/get\") {\n    Vector<int> values;\n    for (int i = 0; i < 1000; i++) {\n        values += i;\n    }\n\n    EXPECT_EQUAL(values.size(), 1000);\n    EXPECT(!values.isEmpty());\n\n    for (int i = 0; i < 1000; i++) {\n        EXPECT_EQUAL(values[i], i);\n    }\n\n    /* Mutate things. */\n    for (int& elem: values) {\n        elem *= 2;\n    }\n\n    EXPECT_EQUAL(values.size(), 1000);\n    EXPECT(!values.isEmpty());\n\n    for (int i = 0; i < 1000; i++) {\n        EXPECT_EQUAL(values[i], 2*i);\n    }\n}\n\nPROVIDED_TEST(\"Vector comparision operators\") {\n    Vector<int> v1 {1, 2, 4, 5};\n    Vector<int> v2 {1, 3, 1, 4, 8};\n    Vector<int> v3 {1, 1, 7};\n    Vector<int> v4 {2, 0};\n    Vector<int> v5 {1, 2, 4, 5, 6, 7};\n    Vector<int> v6;  // empty\n    testCompareOperators(v1, v1, EqualTo);\n    testCompareOperators(v1, v2, LessThan);\n    testCompareOperators(v1, v3, GreaterThan);\n    testCompareOperators(v1, v4, LessThan);\n    testCompareOperators(v1, v5, LessThan);\n    testCompareOperators(v1, v6, GreaterThan);\n    testCompareOperators(v2, v3, GreaterThan);\n    testCompareOperators(v2, v4, LessThan);\n    testCompareOperators(v2, v5, GreaterThan);\n    testCompareOperators(v2, v6, GreaterThan);\n    testCompareOperators(v3, v4, LessThan);\n    testCompareOperators(v3, v5, LessThan);\n    testCompareOperators(v3, v6, GreaterThan);\n    testCompareOperators(v4, v5, GreaterThan);\n    testCompareOperators(v4, v6, GreaterThan);\n    testCompareOperators(v5, v6, GreaterThan);\n    testCompareOperators(v6, v6, EqualTo);\n\n    Set<Vector<int> > sv {v1, v2, v3, v4, v5, v6};\n    EXPECT_EQUAL(sv.toString(), \"{{}, {1, 1, 7}, {1, 2, 4, 5}, {1, 2, 4, 5, 6, 7}, {1, 3, 1, 4, 8}, {2, 0}}\");\n}\n\nPROVIDED_TEST(\"Vector + Vector\") {\n    Vector<int> lhs =      {  1,  3,  5,  7,  9 };\n    Vector<int> rhs =      { 11, 13, 15, 17, 19 };\n    auto expected   =      {  1,  3,  5,  7,  9,\n                             11, 13, 15, 17, 19 };\n\n    auto lhsBackup  =      {  1,  3,  5,  7,  9 };\n    auto rhsBackup  =      { 11, 13, 15, 17, 19 };\n\n    /* Confirm that Vector + Vector works. */\n    assertCollection(\"basic concat\", expected, lhs + rhs);\n    assertCollection(\"don't change operands\", lhsBackup, lhs);\n    assertCollection(\"don't change operands\", rhsBackup, rhs);\n\n    /* Try appending individual values. */\n    Vector<int> before = { 1, 3, 5, 7 };\n    auto beforeBackup  = { 1, 3, 5, 7 };\n    auto after         = { 1, 3, 5, 7, 9 };\n\n    assertCollection(\"single elem concat\", after, before + 9);\n    assertCollection(\"don't change operands\", beforeBackup, before);\n}\n\nPROVIDED_TEST(\"Vector for-each loop\") {\n    Vector<int> v1 {1, 2, 3};\n    assertCollection(\"foreach Vector\", {1, 2, 3}, v1);\n\n    Vector<std::string> v2 {\"a\", \"b\", \"c\"};\n    std::initializer_list<std::string> list {\"a\", \"b\", \"c\"};\n    assertCollection(\"foreach Vector\", list, v2);\n}\n\n\nPROVIDED_TEST(\"Vector hashCode\") {\n    Vector<int> v;\n    v.add(69);\n    v.add(42);\n    EXPECT_EQUAL( hashCode(v), hashCode(v));\n\n    Vector<int> copy = v;\n    EXPECT_EQUAL( hashCode(v), hashCode(copy));\n\n    Vector<int> empty;\n    HashSet<Vector<int> > hashvec {v, copy, empty, empty};\n    EXPECT_EQUAL( 2, hashvec.size());\n}\n\n\nPROVIDED_TEST(\"Vector initializer list constructor\") {\n    auto list = {60, 70};\n\n    Vector<int> vec {10, 20, 30};\n    assertCollection(\"initial\", {10, 20, 30}, vec);\n\n    vec += {40, 50};\n    assertCollection(\"after +=\", {10, 20, 30, 40, 50}, vec);\n\n    Vector<int> copy = vec + list;\n    assertCollection(\"after + (shouldn't modify)\", {10, 20, 30, 40, 50}, vec);\n    assertCollection(\"after + copy\", {10, 20, 30, 40, 50, 60, 70}, copy);\n}\n\nPROVIDED_TEST(\"Vector insert\") {\n    /* Confirm that insert works at all the right positions, and no other positions. */\n    static const int kNumElems = 137;\n\n    for (int i = 0; i <= kNumElems; i++) {\n        Vector<int> values;\n        for (int j = 0; j < kNumElems; j++) {\n            values += j;\n        }\n        EXPECT_EQUAL(values.size(), kNumElems);\n\n        values.insert(i, kNumElems + 1);\n        EXPECT_EQUAL(values.size(), kNumElems +1);\n\n        /* Confirm all the values are correct. */\n        for (int j = 0; j < i; j++) {\n            EXPECT_EQUAL(values[j], j);\n        }\n        EXPECT_EQUAL(values[i], kNumElems + 1);\n        for (int j = i + 1; j < values.size(); j++) {\n            EXPECT_EQUAL(values[j], j - 1);\n        }\n        if (i == kNumElems) EXPECT_ERROR(values.insert(values.size()+1, values.size()+1));\n    }\n    Vector<int> v; // empty\n    EXPECT_ERROR(v.insert(1, 1));\n    v.insert(0, 0);\n}\n\nPROVIDED_TEST(\"Vector remove\") {\n    static const int kNumElems = 137;\n    Vector<int> values;\n\n    for (int i = 0; i < kNumElems; i++) {\n        values += i;\n    }\n    EXPECT_EQUAL(values.size(), kNumElems);\n\n    values.remove(0);\n    EXPECT_EQUAL(values.size(), kNumElems - 1);\n\n    /* Confirm all the values are correct. */\n    for (int j = 0; j < values.size(); j++) {\n        EXPECT_EQUAL(values[j], j + 1);\n    }\n    EXPECT_ERROR(values.remove(999));\n    values.insert(0, 0);\n    for (int i = values.size() - 1; i >= 0; i -= 2) {\n        EXPECT_EQUAL(i, values.remove(i));\n    }\n    while (!values.isEmpty()) {\n        int sz = values.size();\n        values[0] = sz;\n        EXPECT(values.remove(0) == sz);\n    }\n    EXPECT_ERROR(values.remove(0));\n}\n\nPROVIDED_TEST(\"Vector iterator, const iterator\") {\n    Vector<int> v {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};\n    const auto& cv = v;\n\n    EXPECT(v.begin() == cv.begin());\n    EXPECT(v.end() == cv.end());\n}\n\nPROVIDED_TEST(\"Vector out of bounds detection\") {\n    Vector<int> v {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};\n    auto itr = v.begin();\n\n    /* Should fail if we try to back up past beginning. */\n    itr = v.begin();\n    EXPECT_ERROR(--itr);\n\n    /* Should fail if we try to advance past end. */\n    itr = v.end();\n    EXPECT_ERROR(++itr);\n\n    /* Should fail if we try to use random access to jump out of range. */\n    itr = v.begin();\n    EXPECT_ERROR(itr[137] = 42);\n\n    /* Should NOT fail if we try to use random access to jump into range. */\n    itr = v.begin();\n    itr[9] = 137;\n\n    itr = v.end();\n    itr[-10] = 42;\n\n    Vector<int>::iterator single;\n    /* Should fail doing ANYTHING except comparisons with a singular iterator. */\n    EXPECT_ERROR(single++);\n    EXPECT_ERROR(++single);\n    EXPECT_ERROR(single--);\n    EXPECT_ERROR(--single);\n    EXPECT_ERROR(*single);\n    EXPECT_ERROR(single - v.begin());\n    EXPECT_ERROR(v.begin() - single);\n\n    Vector<int> v2;\n   /* Shouldn't be able to compare iterators from two different\n     * containers.\n     */\n    EXPECT_ERROR(v.begin() == v2.begin());\n    EXPECT_ERROR(v.begin() != v2.begin());\n    EXPECT_ERROR(v.begin() < v2.begin());\n    EXPECT_ERROR(v.begin() <= v2.begin());\n    EXPECT_ERROR(v.begin() >= v2.begin());\n    EXPECT_ERROR(v.begin() > v2.begin());\n    EXPECT_ERROR(v.begin() - v2.begin());\n}\n\nvoid addDuring(Vector<int>& v) {\n    for (int m : v) {\n        (void) m;\n        v.add(0);\n    }\n}\nvoid removeDuring(Vector<int>& v) {\n    for (int m : v) {\n        (void) m;\n        v.remove(0);\n    }\n}\n\nvoid modify(Vector<int> &v) {v.remove(0);}\nPROVIDED_TEST(\"Vector error if modify during iteration\") {\n    Vector<int> v {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};\n\n    EXPECT_ERROR(addDuring(v));\n    EXPECT_ERROR(removeDuring(v));\n    EXPECT_ERROR(clearDuringIteration(v));\n  //  EXPECT_ERROR(doDuringIteration(v, [=]() { v.clear(); }));\n}\n\nPROVIDED_TEST(\"Vector mapAll\") {\n    Vector<int> set {7, 5, 1, 2, 8};\n\n    int total = 0;\n    set.mapAll([&] (int value) { total += value;});\n    EXPECT_EQUAL(total, std::accumulate(set.begin(), set.end(), 0));\n}\n\nPROVIDED_TEST(\"Vector randomElement\") {\n    Map<std::string, int> counts;\n    int RUNS = 200;\n\n    std::initializer_list<std::string> list {\"a\", \"b\", \"c\", \"d\", \"e\", \"f\"};\n\n    Vector<std::string> v(list);\n    for (int i = 0; i < RUNS; i++) {\n        std::string s = randomElement(v);\n        counts[s]++;\n    }\n\n    for (const std::string& s : list) {\n        EXPECT(counts[s] > 0); //  each element chosen a non-zero number of times\n    }\n}\n\n\nPROVIDED_TEST(\"Vector sort\") {\n    //                0   1   2   3   4   5   6   7   8   9  10\n    Vector<int> vec {70, 30, 20, 10, 40, 90, 10, 50,  0, 60, 50};\n    vec.sort();\n    Vector<int> exp { 0, 10, 10, 20, 30, 40, 50, 50, 60, 70, 90};\n    EXPECT_EQUAL( exp.toString(), vec.toString());\n}\n\nPROVIDED_TEST(\"Vector stream extraction\") {\n    std::istringstream vstream(\"{1, 2, 3}\");\n    Vector<int> v;\n    Vector<int> exp {1, 2, 3};\n    vstream >> v;\n    EXPECT_EQUAL(v, exp);\n    std::istringstream vstreambad(\"1, 2, 3}\");\n    bool result = bool(vstreambad >> v);\n    EXPECT(!result);\n}\n\nPROVIDED_TEST(\"Vector sublist\") {\n    Vector<int> values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};\n    /* Brute-force check all two-arg sublists. */\n    for (int start = 0; start <= values.size(); start++) {\n        for (int length = 0; length + start <= values.size(); length++) {\n            Vector<int> sub = values.subList(start, length);\n            EXPECT_EQUAL(length, sub.size());\n            for (int i = 0; i < length; i++) {\n                EXPECT_EQUAL(i + start, sub[i]);\n            }\n        }\n    }\n\n    /* Brute-force check all one-arg sublists. */\n    for (int start = 0; start <= values.size(); start++) {\n        Vector<int> sub = values.subList(start);\n        EXPECT_EQUAL(values.size() - start, sub.size());\n        for (int i = 0; i < sub.size(); i++) {\n            EXPECT_EQUAL(i + start, sub[i]);\n        }\n    }\n}\n"
  },
  {
    "path": "SimpleTestGuide/SimpleTest.pro",
    "content": "###############################################################################\n# Project file for CS106B/X student program\n#\n# @version Winter Quarter 2025.2 for Qt 6\n# @author Julie Zelenski\n#   build client program using installed static library\n###############################################################################\n\nSPL_VERSION = 2025.2\nSPL_URL = https://web.stanford.edu/dept/cs_edu/qt\n\nTEMPLATE    =   app\nQT          +=  core gui widgets network multimedia\nCONFIG      +=  silent debug         # quiet build and debug symbols always\nCONFIG      -=  depend_includepath   # library headers not changing, don't add depend\n\n###############################################################################\n#       Find/use installed version of cs106 lib and headers                   #\n###############################################################################\n\n# Library installed into per-user writable data location from QtStandardPaths\nwin32|win64     { QTP_EXE = qtpaths.exe } else { QTP_EXE = qtpaths }\nUSER_DATA_DIR   =   $$system($$[QT_INSTALL_BINS]/$$QTP_EXE --writable-path GenericDataLocation)\n\nSPL_DIR         =   $${USER_DATA_DIR}/cs106\nSTATIC_LIB      =   $$system_path($${SPL_DIR}/lib/libcs106.a)\nVERSION_FILE =      $$system_path($${SPL_DIR}/lib/spl_version)\n\n# link against libcs106.a, add library headers to search path\n# libcs106 requires libpthread, add link here\nLIBS            +=  -lcs106 -lpthread\nQMAKE_LFLAGS    =   -L$$shell_quote($${SPL_DIR}/lib)\n# put PWD first in search list to allow local copy to shadow if needed\nINCLUDEPATH     +=  $$PWD \"$${SPL_DIR}/include\"\n\n###############################################################################\n#       Configure project with custom settings                                #\n###############################################################################\n\n# changes to headers require recompilation\nDEPENDPATH += $$PWD\n\n# remove spaces from target executable for better Windows compatibility\nTARGET      =   $$replace(TARGET, \" \", _)\n\n# set DESTDIR to project root dir, this is where executable/app will deploy and run\nDESTDIR     =   $$PWD\n\n# student writes ordinary main() function, but it must be called within a\n# wrapper main() that handles library setup/teardown. Rename student's\n# to distinguish between the two main() functions and avoid symbol clash\n# Ask Julie if you are curious why main->qMain->studentMain\nDEFINES     +=  main=qMain qMain=studentMain\n\n###############################################################################\n#       Gather files to list in Qt Creator project browser                    #\n###############################################################################\n\n# honeypot to trick Qt Creator to allow glob-all to coexist with user-added files\n# Qt looks for first 'SOURCES *=' line and lists user-added .cpp/h files there.\n# Afterward we glob-add files to SOURCES ourselves. Operator *= will unique\n# entries, so no worries about duplicates\nSOURCES         *=  \"\"\nHEADERS         *=  \"\"\n\n# Gather any .cpp or .h files within the project folder (student/starter code).\n# Second argument true makes search recursive\nSOURCES         *=  $$files(*.cpp, true)\nHEADERS         *=  $$files(*.h, true)\n\n# Gather resource files (image/sound/etc) from res dir, list under \"Other files\"\nOTHER_FILES     *=  $$files(res/*, true)\n# Gather text files from root dir or anywhere recursively\nOTHER_FILES     *=  $$files(*.txt, true)\n\n###############################################################################\n#       Configure compiler, compile flags                                     #\n###############################################################################\n\n# Configure flags for the C++ compiler\n# (In general, many warnings/errors are enabled to tighten compile-time checking.\n# A few overly pedantic/confusing errors are turned off to avoid confusion.)\n\nCONFIG          +=  sdk_no_version_check   # removes spurious warnings on Mac OS X\n\n# MinGW compiler lags, be conservative and use C++11 on all platforms\n# rather than special case\nCONFIG          +=  c++11\n\n# WARN_ON has -Wall -Wextra, add/remove a few specific warnings\nQMAKE_CXXFLAGS_WARN_ON      +=  -Werror=return-type\nQMAKE_CXXFLAGS_WARN_ON      +=  -Werror=uninitialized\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wunused-parameter\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wmissing-field-initializers\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wno-old-style-cast\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wno-sign-compare\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wno-sign-conversion\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wno-unused-const-variable\n\n*-clang { # warning flags specific to clang\n    QMAKE_CXXFLAGS_WARN_ON  +=  -Wempty-init-stmt\n    QMAKE_CXXFLAGS_WARN_ON  +=  -Wignored-qualifiers\n}\n\n*-g++ {   # warning flags specific to g++\n    QMAKE_CXXFLAGS_WARN_ON  +=  -Wlogical-op\n}\n\n###############################################################################\n#       Detect/report errors in project structure                             #\n###############################################################################\n\n# error if project opened from within a ZIP archive (common mistake on Windows)\nwin32|win64 {\n    contains(PWD, .*\\.zip.*) | contains(PWD, .*\\.ZIP.*) {\n        warning( \"*** You are trying to open this project from within a ZIP archive.\" )\n        warning( \"*** You must first extract the files then open in Qt Creator.\" )\n        warning( \"*** In File Explorer open the ZIP and choose to Extract All.\" )\n        error( Exiting. Extract project from ZIP first.)\n    }\n}\n\n# error if name of directory has chars that may cause trouble for qmake/make/shell\nPROJECT_DIR = $$basename(PWD)\nFOUND  = $$PROJECT_DIR\nFOUND ~= s|[a-z A-Z 0-9 _.+-]||   # yes, spaces ok, limited punctuation, $ % & are dicey\n!isEmpty(FOUND) {\n    warning( \"*** The name of your project directory contains the disallowed characters: $$FOUND\" )\n    warning( \"*** The allowed characters are letters, numbers, and simple punctuation.\" )\n    warning( \"*** Please rename to a simple name such as Assignment_1 that contains no disallowed characters.\" )\n    error(Exiting. Rename project directory to remove disallowed characters. )\n}\n\n\n!isEmpty(CURRENTLY_INSTALLING_LIBRARY) { # special case for Welcome app in CS106 package\n    message(\"Installing cs106 package, will skip library version check\")\n} else {\n    !exists($$STATIC_LIB) {             # confirm static lib exists\n        warning(\"No CS106 library found. Need to install.\")\n        error(Exiting. Install CS106 package following instructions at $$SPL_URL)\n    }\n    !exists($$VERSION_FILE) {           # confirm version file exists\n         warning(\"Installed library has no version. Re-install to get correct version.\")\n         error(Exiting. Re-install CS106 package following instructions at $$SPL_URL)\n    }\n    CONTENTS = $$cat($$VERSION_FILE)    # confirm version file contents match this .pro file\n    !equals(CONTENTS, $$SPL_VERSION) {\n        warning( \"Installed library version $$CONTENTS, expected $$SPL_VERSION\" )\n        error(Exiting. Re-install CS106 package following instructions at $$SPL_URL)\n    }\n}\n"
  },
  {
    "path": "SimpleTestGuide/main.cpp",
    "content": "#include <iostream>\n#include \"console.h\"\n#include \"SimpleTest.h\"\nusing namespace std;\n\nint main()\n{\n    if (runSimpleTests(SELECTED_TESTS)) {\n        return 0;\n    }\n\n    cout << \"All done, exiting\" << endl;\n    return 0;\n}\n\n"
  },
  {
    "path": "SimpleTestGuide/simpletest.css",
    "content": "/* This file tests replace of default stylesheet */\n\nbody {\n    background: black;\n    color: white;\n    font-size: x-large;\n}\n\n"
  },
  {
    "path": "SimpleTestGuide/simpletestguide.cpp",
    "content": "#include <string>\n#include \"SimpleTest.h\"\n#include \"vector.h\"\nusing namespace std;\n\n// reversed(str) returns copy of str with characters in reverse order.\nstring reversed(string s) {\n    string result;\n    for (int i = s.length() - 1; i >= 0; i--) {\n        result += s[i];\n    }\n    return result;\n}\n\nbool isPalindrome(string s) {\n    return s == reversed(s);\n}\n\nbool isEven(int n) {\n    return n % 2 == 0;\n}\n\nbool inSortedOrder(Vector<int>& v)\n{\n    for (int i = 1; i < v.size(); i++)\n        if (v[i] < v[i-1]) return false;\n    return true;\n}\n\n/* * * * * * Test Cases * * * * * */\n\nPROVIDED_TEST(\"Demonstrate different SimpleTest use case\") {\n    EXPECT_EQUAL(reversed(\"but\"), \"tub\");\n    EXPECT_EQUAL(reversed(\"stanford\"), \"drofnats\");\n}\n\nSTUDENT_TEST(\"test additional cases not covered by the provided tests\") {\n    EXPECT_EQUAL(reversed(\"racecar\"), \"racecar\");\n    EXPECT_EQUAL(reversed(\"\"), \"\");\n    EXPECT_EQUAL(reversed(\"123456789\"), \"987654321\");\n}\n\nSTUDENT_TEST(\"test my isEven function\") {\n    EXPECT(isPalindrome(\"racecar\"));\n    EXPECT(!isPalindrome(\"stanford\"));\n}\n\nSTUDENT_TEST(\"test my isPalindrome function\") {\n    EXPECT(isPalindrome(\"racecar\"));\n    EXPECT(!isPalindrome(\"stanford\"));\n}\n\nSTUDENT_TEST(\"Time operation vector sort on tiny input\")\n{\n    Vector<int> v = {3, 7, 2, 45, 2, 6, 3, 56, 12};\n    TIME_OPERATION(v.size(), v.sort());\n}\n\nSTUDENT_TEST(\"Time operation vector sort over a range of input sizes\")\n{\n    for (int size = 25000; size < 20000000; size *= 4) {\n        Vector<int> v;\n        for (int i = 0; i < size; i++) {\n            v.add(randomInteger(1, 1000)); // fill vector with random values\n        }\n        TIME_OPERATION(v.size(), v.sort());\n    }\n}\n\nSTUDENT_TEST(\"Time operation vector sort on tiny input and verify is sorted\")\n{\n    Vector<int> v = {3, 7, 2, 45, 2, 6, 3, 56, 12};\n    TIME_OPERATION(v.size(), v.sort());\n    EXPECT(inSortedOrder(v));\n}\n\nSTUDENT_TEST(\"confirm isEven() works correctly for even number 4\") {\n    EXPECT(isEven(4));\n}\n\nSTUDENT_TEST(\"confirm isEven() works correctly for odd number 3\") {\n    EXPECT(isEven(3)); // this \"bogus\" test will fail\n}\n\nSTUDENT_TEST(\"confirm isEven() works correctly for odd number 3\") {\n    EXPECT(!isEven(3));\n}\n"
  },
  {
    "path": "SimpleTestGuide/unittest.cpp",
    "content": "#include \"SimpleTest.h\"\n#include \"strlib.h\"\n#include \"set.h\"\nusing namespace std;\n\n\n// Testing Keith's cool feature to allow use of literal\n// in second argument to EXPECT_EQUAL\n\nPROVIDED_TEST(\"EXPECT_EQUAL, string literal/char* \") {\n    EXPECT_EQUAL(\"A\", \"A\");\n    EXPECT_EQUAL(string(\"A\"), \"A\");\n    EXPECT_EQUAL(charToString('A'), \"A\");\n}\n\nPROVIDED_TEST(\"EXPECT_EQUAL, set literal\") {\n    Set<string> one = {\"A\", \"C\"};\n    Set<string> two = {\"B\", \"C\"};\n    Set<string> sum = {\"A\", \"B\", \"C\"};\n\n    EXPECT_EQUAL(one + two,  {\"A\", \"B\", \"C\"});\n    EXPECT_EQUAL(sum, one + two);\n}\n\nPROVIDED_TEST(\"How FAILURE reported for mismatch set literal\") {\n    Set<string> one = {\"A\", \"C\"};\n    Set<string> two = {\"B\", \"C\"};\n\n    EXPECT_EQUAL(one + two, {\"A\", \"C\"}); // mismatch -> FAILURE\n}\n\ntemplate <typename T> T sum(T val, int n) {\n    T result = 0;\n    for (int i = 0; i < n; i++) result += val;\n    return result;\n}\n\nPROVIDED_TEST(\"== compare float/double literals, expect to not be exact\") {\n    // literals: float double\n    EXPECT(0.1 != 0.1f); // expect not exact equal\n}\n\nPROVIDED_TEST(\"How FAILURE reported for mismatch type float/double literals\") {\n    EXPECT_EQUAL(0.1f, 0.1); // yes fpe, both forced to float\n    EXPECT_EQUAL(0.1, 0.1f);  // yes fpe, both forced to double, val mismatch -> FAILURE\n}\n\nPROVIDED_TEST(\"float literal compared with float op result\") {\n    float fsum = sum(0.1f, 10);\n\n    EXPECT(fsum != 1.0f); // expect not exact equal\n    EXPECT_EQUAL(fsum, 1.0f); // yes fpe, both forced to float\n}\n\n PROVIDED_TEST(\"float op result compared with double literal and double op result\") {\n    float fsum = sum(0.1f, 10);\n    double dsum = sum(0.1, 10);\n\n    EXPECT(fsum != 1.0); // expect not exact equal\n    EXPECT_EQUAL(fsum, 1.0); // yes fpe, both forced to float\n    EXPECT(fsum != dsum); // expect not exact equal\n    EXPECT_EQUAL(fsum, dsum); // yes fpe, both forced to float\n}\n\nPROVIDED_TEST(\"double literal compared with double op result\") {\n    double dsum = sum(0.1, 10);\n\n    EXPECT(dsum != 1.0); // expect not exact equal\n    EXPECT_EQUAL(dsum, 1.0); // yes fpe, both forced to double\n}\n\nPROVIDED_TEST(\"How FAILURE reported for double op result compared with float literal and float op result\") {\n    float fsum = sum(0.1f, 10);\n    double dsum = sum(0.1, 10);\n\n    // double == float\n    EXPECT(dsum != 1.0f); // expect not exact equal\n    EXPECT_EQUAL(dsum, 1.0f); // yes fpe, both forced to double\n    EXPECT(dsum != fsum); // expect not exact equal\n    EXPECT_EQUAL(dsum, fsum); // yes fpe, both forced to double, val mismatch -> FAILURE\n}\n\nPROVIDED_TEST(\"float op result compared with int literal\") {\n    float fsum = sum(0.1f, 10);\n    EXPECT(fsum != 1); // expect not exact equal\n    EXPECT_EQUAL(fsum, 1); //yes fpe, both forced to float\n}\n\n PROVIDED_TEST(\"double op result compared with int literal\") {\n    double dsum = sum(0.1, 10);\n    EXPECT(dsum != 1); // expect not exact equal\n    EXPECT_EQUAL(dsum, 1); // yes fpe, both forced to double\n}\n\n// This will all fail\nPROVIDED_TEST(\"How FAILURE reported for mismatch literal number\") {\n    EXPECT_EQUAL(3 + 5, 10); // mismatch -> FAILURE\n}\n\nPROVIDED_TEST(\"How FAILURE reported for mismatch literal string\") {\n    string str = \"hello\";\n    EXPECT_EQUAL(str, \"goodbye\"); // mismatch -> FAILURE\n}\n\nPROVIDED_TEST(\"How FAILURE reported for mismatch literal Set\") {\n    Set<int> s = {3, 4};\n    EXPECT_EQUAL(s, {4, 5});\n}\n\nPROVIDED_TEST(\"How FAILURE reported for mismatch literal double\") {\n    double d = 0.1;\n    EXPECT_EQUAL(d, 0.2); // mismatch -> FAILURE\n}\n\nPROVIDED_TEST(\"How FAILURE reported for mismatch literal number\") {\n    EXPECT_EQUAL(10, 5+9); // mismatch -> FAILURE\n}\n\nPROVIDED_TEST(\"How FAILURE reported for mismatch literal string\") {\n    EXPECT_EQUAL(\"hello\", \"goodbye\"); // mismatch -> FAILURE\n}\n\nPROVIDED_TEST(\"How FAILURE reported for mismatch literal double\") {\n    EXPECT_EQUAL(0.1, 0.2); // mismatch -> FAILURE\n}\n\nPROVIDED_TEST(\"How FAILURE reported for mismatch literal bool\") {\n    EXPECT_EQUAL(4 % 2 == 0, 0); // mismatch -> FAILURE\n}\n\n"
  },
  {
    "path": "Welcome/Welcome.pro",
    "content": "###############################################################################\n# Project file for CS106B/X student program\n#\n# @version Winter Quarter 2025.2 for Qt 6\n# @author Julie Zelenski\n#   build client program using installed static library\n###############################################################################\n\nSPL_VERSION = 2025.2\nSPL_URL = https://web.stanford.edu/dept/cs_edu/qt\n\nTEMPLATE    =   app\nQT          +=  core gui widgets network multimedia\nCONFIG      +=  silent debug         # quiet build and debug symbols always\nCONFIG      -=  depend_includepath   # library headers not changing, don't add depend\n\n###############################################################################\n#       Find/use installed version of cs106 lib and headers                   #\n###############################################################################\n\n# Library installed into per-user writable data location from QtStandardPaths\nwin32|win64     { QTP_EXE = qtpaths.exe } else { QTP_EXE = qtpaths }\nUSER_DATA_DIR   =   $$system($$[QT_INSTALL_BINS]/$$QTP_EXE --writable-path GenericDataLocation)\n\nSPL_DIR         =   $${USER_DATA_DIR}/cs106\nSTATIC_LIB      =   $$system_path($${SPL_DIR}/lib/libcs106.a)\nVERSION_FILE =      $$system_path($${SPL_DIR}/lib/spl_version)\n\n# link against libcs106.a, add library headers to search path\n# libcs106 requires libpthread, add link here\nLIBS            +=  -lcs106 -lpthread\nQMAKE_LFLAGS    =   -L$$shell_quote($${SPL_DIR}/lib)\n# put PWD first in search list to allow local copy to shadow if needed\nINCLUDEPATH     +=  $$PWD \"$${SPL_DIR}/include\"\n\n###############################################################################\n#       Configure project with custom settings                                #\n###############################################################################\n\n# changes to headers require recompilation\nDEPENDPATH += $$PWD\n\n# remove spaces from target executable for better Windows compatibility\nTARGET      =   $$replace(TARGET, \" \", _)\n\n# set DESTDIR to project root dir, this is where executable/app will deploy and run\nDESTDIR     =   $$PWD\n\n# student writes ordinary main() function, but it must be called within a\n# wrapper main() that handles library setup/teardown. Rename student's\n# to distinguish between the two main() functions and avoid symbol clash\n# Ask Julie if you are curious why main->qMain->studentMain\nDEFINES     +=  main=qMain qMain=studentMain\n\n###############################################################################\n#       Gather files to list in Qt Creator project browser                    #\n###############################################################################\n\n# honeypot to trick Qt Creator to allow glob-all to coexist with user-added files\n# Qt looks for first 'SOURCES *=' line and lists user-added .cpp/h files there.\n# Afterward we glob-add files to SOURCES ourselves. Operator *= will unique\n# entries, so no worries about duplicates\nSOURCES         *=  \"\"\nHEADERS         *=  \"\"\n\n# Gather any .cpp or .h files within the project folder (student/starter code).\n# Second argument true makes search recursive\nSOURCES         *=  $$files(*.cpp, true)\nHEADERS         *=  $$files(*.h, true)\n\n# Gather resource files (image/sound/etc) from res dir, list under \"Other files\"\nOTHER_FILES     *=  $$files(res/*, true)\n# Gather text files from root dir or anywhere recursively\nOTHER_FILES     *=  $$files(*.txt, true)\n\n###############################################################################\n#       Configure compiler, compile flags                                     #\n###############################################################################\n\n# Configure flags for the C++ compiler\n# (In general, many warnings/errors are enabled to tighten compile-time checking.\n# A few overly pedantic/confusing errors are turned off to avoid confusion.)\n\nCONFIG          +=  sdk_no_version_check   # removes spurious warnings on Mac OS X\n\n# MinGW compiler lags, be conservative and use C++11 on all platforms\n# rather than special case\nCONFIG          +=  c++11\n\n# WARN_ON has -Wall -Wextra, add/remove a few specific warnings\nQMAKE_CXXFLAGS_WARN_ON      +=  -Werror=return-type\nQMAKE_CXXFLAGS_WARN_ON      +=  -Werror=uninitialized\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wunused-parameter\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wmissing-field-initializers\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wno-old-style-cast\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wno-sign-compare\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wno-sign-conversion\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wno-unused-const-variable\n\n*-clang { # warning flags specific to clang\n    QMAKE_CXXFLAGS_WARN_ON  +=  -Wempty-init-stmt\n    QMAKE_CXXFLAGS_WARN_ON  +=  -Wignored-qualifiers\n}\n\n*-g++ {   # warning flags specific to g++\n    QMAKE_CXXFLAGS_WARN_ON  +=  -Wlogical-op\n}\n\n###############################################################################\n#       Detect/report errors in project structure                             #\n###############################################################################\n\n# error if project opened from within a ZIP archive (common mistake on Windows)\nwin32|win64 {\n    contains(PWD, .*\\.zip.*) | contains(PWD, .*\\.ZIP.*) {\n        warning( \"*** You are trying to open this project from within a ZIP archive.\" )\n        warning( \"*** You must first extract the files then open in Qt Creator.\" )\n        warning( \"*** In File Explorer open the ZIP and choose to Extract All.\" )\n        error( Exiting. Extract project from ZIP first.)\n    }\n}\n\n# error if name of directory has chars that may cause trouble for qmake/make/shell\nPROJECT_DIR = $$basename(PWD)\nFOUND  = $$PROJECT_DIR\nFOUND ~= s|[a-z A-Z 0-9 _.+-]||   # yes, spaces ok, limited punctuation, $ % & are dicey\n!isEmpty(FOUND) {\n    warning( \"*** The name of your project directory contains the disallowed characters: $$FOUND\" )\n    warning( \"*** The allowed characters are letters, numbers, and simple punctuation.\" )\n    warning( \"*** Please rename to a simple name such as Assignment_1 that contains no disallowed characters.\" )\n    error(Exiting. Rename project directory to remove disallowed characters. )\n}\n\n\n!isEmpty(CURRENTLY_INSTALLING_LIBRARY) { # special case for Welcome app in CS106 package\n    message( \"Installing cs106 package, will skip library version check\" )\n} else {\n    !exists($$STATIC_LIB) {             # confirm static lib exists\n        warning( \" *** No CS106 library found. Need to install.\" )\n        error(Exiting. Install CS106 package following instructions at $$SPL_URL)\n    }\n    !exists($$VERSION_FILE) {           # confirm version file exists\n         warning( \" *** Cannot determine version of installed library. Need to re-install.\" )\n         error(Exiting. Install CS106 package following instructions at $$SPL_URL)\n    }\n    CONTENTS = $$cat($$VERSION_FILE)    # confirm version file contents match this .pro file\n    !equals(CONTENTS, $$SPL_VERSION) {\n        warning( \"*** Installed library version $$CONTENTS, expected $$SPL_VERSION\" )\n        error(Exiting. Install CS106 package following instructions at $$SPL_URL)\n    }\n}\n"
  },
  {
    "path": "Welcome/welcome.cpp",
    "content": "/*\n * File: welcome.cpp\n * -----------------\n * Sample program used to confirm Qt/CS106 install.\n * @author Julie Zelenski\n */\n\n#include <iostream>\n#include \"console.h\"\n#include \"queue.h\"\n#include \"simpio.h\"\n#include \"gbutton.h\"\n#include \"gfont.h\"\n#include \"glabel.h\"\n#include \"goptionpane.h\"\n#include \"gwindow.h\"\n#include \"SimpleTest.h\"\n#include \"sound.h\"\n#include \"splversion.h\"\n#include \"urlstream.h\"\nusing namespace std;\n\nvoid welcomeAlert(string name)\n{\n    GWindow* window = new GWindow;\n    window->setTitle(\"Welcome\");\n    window->setLocation(300, 100);\n    window->setExitOnClose(true);\n    window->setResizable(false);\n    window->setCanvasSize(240, 220);\n    GCanvas *canvas = window->getCanvas();\n    canvas->setBackground(\"white\");\n    canvas->clear();\n    canvas->setColor(\"black\");\n    QFont f = GFont::toQFont(\"SansSerif-24\");\n    canvas->setFont(f);\n    string message = \"Hello, \" + name + \"!\";\n    int m_width = QFontMetrics(f).horizontalAdvance(QString::fromStdString(message));\n    canvas->drawString(message, (canvas->getWidth()-m_width)/2.0, 150);\n    canvas->drawImage(\"res/stanford.png\", 60, 0);\n    canvas->setColor(\"#008F00\"); // green\n    double x = 120, y = 25, w = 15, h = 30;\n    for (int i = 0; i < 4; i++) {\n        canvas->fillPolygon({GPoint(x-w, y+h),GPoint(x, y),GPoint(x+w, y+h) } );\n        y += h/2;\n    }\n    GLabel *l = new GLabel(\"Installed Stanford library \" + getLibraryVersion());\n    window->addToRegion(l, GWindow::REGION_NORTH);\n    GButton *b = new GButton(\"Play sound clip\");\n    b->setActionListener([]() { Sound::playFile(\"res/AllRightNow.wav\"); });\n    window->addToRegion(b, GWindow::REGION_SOUTH);\n    window->setVisible(true);\n}\n\nvoid checkLibraryVersion()\n{\n    // Confirm installed library matches version of our Qt install instructions\n    // This also confirms availability of network functionality\n    string url = \"https://web.stanford.edu/dept/cs_edu/qt/version.txt\";\n    iurlstream ustream;\n    ustream.open(url);\n    string from_csedu;\n    getline(ustream, from_csedu);\n    string installed_version = getLibraryVersion();\n    cout << \"Installed version of library is \" << installed_version;\n\n    if (from_csedu.empty()) {\n        cerr << \" (unable to read version spec from network to compare)\" << endl;\n    } else if (from_csedu != installed_version) {\n        cerr << \" (version spec published on cs_edu is \" << from_csedu << \")\" << endl;\n    } else {\n        cout << \" (matches version spec from cs_edu)\" << endl;\n    }\n}\n\nint main()\n{\n    Queue<string> names = {\"Leland\", \"Stanford\", \"Junior\", \"University\"};\n    cout << \"Copyright 2025-26 \" << names << endl;\n    checkLibraryVersion();\n    string name = getLine(\"What is your name?\");\n    welcomeAlert(name);\n    cout << \"All done!\" << endl;\n    return 0;\n}\n\n// Confirm SimpleTest macros are available and compile\nPROVIDED_TEST(\"SimpleTest of addition\") {\n    EXPECT_EQUAL(1 + 2, 3);\n}\n"
  },
  {
    "path": "Wizard/README.md.in",
    "content": "This would be another chance to put some stuff in the sample probject\n\n__Julie Zelenski__\n__Today's date__\n\n1. Assignment\n2. more\n3. to do"
  },
  {
    "path": "Wizard/file.pro.in",
    "content": "###############################################################################\n# Project file for CS106B/X student program\n#\n# @version Fall Quarter 09/12/2020\n# @author Julie Zelenski\n#   build client program using installed static library\n###############################################################################\n\nSPL_VERSION = 2020.1\n\nTEMPLATE    =   app\nQT          +=  core gui widgets multimedia network\nCONFIG      +=  silent               # quieter progress during build\nCONFIG      -=  depend_includepath   # library headers not changing, don't add depend\n\n###############################################################################\n#       Find/use installed version of cs106 lib and headers                   #\n###############################################################################\n\n# Library installed into per-user writable data location from QtStandardPaths\nwin32|win64     { QTP_EXE = qtpaths.exe } else { QTP_EXE = qtpaths }\nUSER_DATA_DIR   =   $$system($$[QT_INSTALL_BINS]/$$QTP_EXE --writable-path GenericDataLocation)\n\nSPL_DIR         =   $${USER_DATA_DIR}/cs106\nSTATIC_LIB      =   $$system_path($${SPL_DIR}/lib/libcs106.a)\n\n# Confirm presence of lib before build using extra target as prereq\ncheck_lib.target    =  \"$${STATIC_LIB}\"\ncheck_lib.commands  =  $(error CS106 library not found. See http://cs106b.stanford.edu/qt for library install instructions)\nQMAKE_EXTRA_TARGETS +=  check_lib\nPRE_TARGETDEP       +=  $${check_lib.target}\n\n# link against libcs106.a, add library headers to search path\n# libcs106 requires libpthread, add link here\nLIBS            +=  -lcs106 -lpthread\nQMAKE_LFLAGS    =   -L$$shell_quote($${SPL_DIR}/lib)\n# put PWD first in search list to allow local copy to shadow if needed\nINCLUDEPATH     +=  $$PWD \"$${SPL_DIR}/include\"\n\n###############################################################################\n#       Configure project with custom settings                                #\n###############################################################################\n\n# remove spaces from target executable for better Windows compatibility\nTARGET      =   $$replace(TARGET, \" \", _)\n\n# set DESTDIR to project root dir, this is where executable/app will deploy and run\nDESTDIR     =   $$PWD\n\n# student writes ordinary main() function, but it must be called within a\n# wrapper main() that handles library setup/teardown. Rename student's\n# to distinguish between the two main() functions and avoid symbol clash\n# Ask Julie if you are curious why main->qMain->studentMain\nDEFINES     +=  main=qMain qMain=studentMain\n\n###############################################################################\n#       Gather files to list in Qt Creator project browser                    #\n###############################################################################\n\n# honeypot to trick Qt Creator to allow glob-all to coexist with user-added files\n# Qt looks for first 'SOURCES *=' line and lists user-added .cpp/h files there.\n# Afterward we glob-add files to SOURCES ourselves. Operator *= will unique\n# entries, so no worries about duplicates\nSOURCES         *=  \"\"\nHEADERS         *=  \"\"\n\n# Gather any .cpp or .h files within the project folder (student/starter code).\n# Second argument true makes search recursive\nSOURCES         *=  $$files(*.cpp, true)\nHEADERS         *=  $$files(*.h, true)\n\n# Gather resource files (image/sound/etc) from res dir, list under \"Other files\"\nOTHER_FILES     *=  $$files(res/*, true)\n# Gather text files from root dir or anywhere recursively\nOTHER_FILES     *=  $$files(*.txt, true)\n\n###############################################################################\n#       Configure compiler, compile flags                                     #\n###############################################################################\n\n# Configure flags for the C++ compiler\n# (In general, many warnings/errors are enabled to tighten compile-time checking.\n# A few overly pedantic/confusing errors are turned off to avoid confusion.)\n\nCONFIG          +=  sdk_no_version_check   # removes spurious warnings on Mac OS X\n\n# MinGW compiler lags, be conservative and use C++11 on all platforms\n# rather than special case\nCONFIG          +=  c++11\n\n# WARN_ON has -Wall -Wextra, add/remove a few specific warnings\nQMAKE_CXXFLAGS_WARN_ON      +=  -Werror=return-type\nQMAKE_CXXFLAGS_WARN_ON      +=  -Werror=uninitialized\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wunused-parameter\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wmissing-field-initializers\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wno-old-style-cast\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wno-sign-compare\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wno-sign-conversion\nQMAKE_CXXFLAGS_WARN_ON      +=  -Wno-unused-const-variable\n\n*-clang { # warning flags specific to clang\n    QMAKE_CXXFLAGS_WARN_ON  +=  -Wempty-init-stmt\n    QMAKE_CXXFLAGS_WARN_ON  +=  -Wignored-qualifiers\n}\n\n*-g++ {   # warning flags specific to g++\n    QMAKE_CXXFLAGS_WARN_ON  +=  -Wlogical-op\n}\n\n###############################################################################\n#       Detect/report errors in project structure                             #\n###############################################################################\n\n# error if project was opened from within a ZIP archive (common mistake on Windows)\nwin32|win64 {\n    contains(PWD, .*\\.zip.*) | contains(PWD, .*\\.ZIP.*) {\n        message(*******************************************************************)\n        message(*** ERROR: You are trying to open this project from within a .ZIP archive:)\n        message(*** $$PWD)\n        message(*** You need to extract the files out of the ZIP file first.)\n        message(*** Open the ZIP in your file explorer and press the Extract button.)\n        message(*******************************************************************)\n        error(Exiting. Need to extract project from ZIP first.)\n    }\n}\n\n# error if non-standard chars in path (common issue for intl students)\nBAD_CHARS = $$PWD\nBAD_CHARS ~= s|[a-zA-Z0-9_ .\\/:+-]+|\n!isEmpty(BAD_CHARS) {\n    message(*******************************************************************)\n    message(*** ERROR: The name of your project directory contains invalid characters.)\n    message(*** $$PWD)\n    message(***)\n    message(*** The invalid characters are: $$BAD_CHARS)\n    message(***)\n    message(*** The name cannot contain punctuation or characters from international)\n    message(*** alphabets such as Chinese or Korean.)\n    message(*** Rename or move your project to a directory with a simple name)\n    message(*** such as \"C:\\Programs\\Homework1\" and try again.)\n    message(*******************************************************************)\n    error(Exiting. Project directory name contains invalid characters $$BAD_CHARS)\n}\n\n# END OF FILE (this should be line #147; if not, your .pro has been changed!)\n"
  },
  {
    "path": "Wizard/main.cpp.in",
    "content": "%{Cpp:LicenseTemplate}\n%{JS: Cpp.headerGuard('wonderment') }\n\n// Creation date: %{CurrentDate::ISO}\n// This works to get path to: \"%{ProFile}\"\n\n%{JS: QtSupport.qtIncludes([ 'QtGui/QApplication' ], [ 'QtWidgets/QApplication' ]) }\\\n\n/****************************************************************************\n** \n@if ('%{Env:USER}' === '' || '%{Env:QTC_COPYRIGHT_EMAIL}' === '')\n** Copyright (C) %{CurrentDate:yyyy} %{Env:USER} <$copyright_email$>.\n@elseuser$\n** Copyright (C) %{CurrentDate:yyyy} %{Env:USER} <%{Env:QTC_COPYRIGHT_EMAIL}>.\n@endif\n**\n** This file is part of %{CurrentProject:Name}\n** Here is a placeholder that you can fill <$your_name_here$> if using as placeholder\n** Current kit is %{CurrentKit:Id}\n**\n\n** DOES NOT WORK: %{target} %{data.target}\n** Without colon at end, these do not work %{CurrentProject} or %{CurrentDate}\n**\n****************************************************************************/\n\n/* \n * File: main.cpp\n * --------------\n * Author: %{MyUser}. THIS COULD WORK IF I SET IN THE WIZARD\n * Created: %{CurrentDate::ISO}\n */\n#include \"console.h\"\n#include <iostream>\n\nusing namespace std;\n\nint main()\n{\n    cout << \"Hello, Stanford!\" << endl;\n    return 0;\n}"
  },
  {
    "path": "Wizard/wizard.json",
    "content": "{\n    \"version\": 1,\n    \"supportedProjectTypes\": [ \"Qt4ProjectManager.Qt4Project\" ],\n    \"id\": \"A.Stanford CS106BX\",\n    \"category\": \"Custom Project\",\n    \"trDescription\": \"Create a C++ project for use in Stanford CS106 BXH courses.\\nPrepared for quarter %{QuarterId}. \\n\",\n    \"trDisplayName\": \"Stanford CS106 C++\",\n    \"trDisplayCategory\": \"Custom Project\",\n    \"icon\": \"splicon-large.png\",\n    \"featuresRequired\": [ \"QtSupport.Wizards.FeatureQt\" ],\n    \"enabled\": \"%{JS: value('Plugins').indexOf('CppEditor') >= 0 && (value('Plugins').indexOf('QmakeProjectManager') >= 0)}\",\n\n    \"options\":\n    [\n        { \"key\": \"QuarterId\", \"value\": \"19-1\" },\n        { \"key\": \"ProFile\", \"value\": \"%{JS: Util.fileName('%{ProjectDirectory}/%{ProjectName}', 'pro')}\" }\n    ],\n\n    \"pages\":\n    [\n        {\n            \"trDisplayName\": \"Project Setup\",\n            \"trShortTitle\": \"Setup\",\n            \"typeId\": \"Project\",\n            \"data\": { \"trDescription\": \"Quarter %{QuarterId}.\\nJulie Zelenski  user = %{Env:USER}\\n Today %{CurrentDate:yyyy}\"}\n        },\n        {\n            \"trDisplayName\": \"Kit Selection\",\n            \"trShortTitle\": \"Kits\",\n            \"typeId\": \"Kits\",\n            \"data\": { \"projectFilePath\": \"%{ProFile}\" }\n        }\n    ],\n    \"generators\":\n    [\n        {\n            \"typeId\": \"File\",\n            \"data\":\n            [\n                {\n                    \"source\": \"file.pro.in\",\n                    \"target\": \"%{ProFile}\",\n                    \"openAsProject\": true\n                },\n                {\n                    \"source\": \"main.cpp.in\",\n                    \"target\": \"main.cpp\",\n                    \"openInEditor\": true\n                },\n                {\n                    \"source\": \"README.md.in\",\n                    \"target\": \"README.md\"\n                }\n            ]\n        }\n    ]\n}\n"
  }
]